ZGlmZiAtLWdpdCBhLy5ienJpZ25vcmUgYi8uYnpyaWdub3JlCmluZGV4IDk1OWE3ZGYuLjg5NzA4NGQgMTAwNjQ0Ci0tLSBhLy5ienJpZ25vcmUKKysrIGIvLmJ6cmlnbm9yZQpAQCAtMzMsNyArMzMsNiBAQAogTW9kdWxlcy9jb25maWcuYwogTW9kdWxlcy9sZF9zb19haXgKIFBhcnNlci9wZ2VuCi1QYXJzZXIvcGdlbi5zdGFtcAogTGliL3Rlc3QvZGF0YS8qCiBMaWIvbGliMnRvMy9HcmFtbWFyKi5waWNrbGUKIExpYi9saWIydG8zL1BhdHRlcm5HcmFtbWFyKi5waWNrbGUKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGMxYTgwNTUuLjQ5Mjk5ZWUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTUsNiArMTUsNyBAQAogRG9jL3Rvb2xzL3B5Z21lbnRzLwogRG9jL3Rvb2xzL3NwaGlueC8KIExpYi9saWIydG8zLyoucGlja2xlCitMaWIvX3N5c2NvbmZpZ2RhdGEucHkKIExpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCkBAIC0yNCw2ICsyNSw3IEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAorTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiBQQ2J1aWxkLyouYnNjCiBQQ2J1aWxkLyouZGxsCkBAIC0zNyw3ICszOSw2IEBACiBQQ2J1aWxkL2FtZDY0LwogLnB1cmlmeQogUGFyc2VyL3BnZW4KLVBhcnNlci9wZ2VuLnN0YW1wCiBfX3B5Y2FjaGVfXwogYXV0b200dGUuY2FjaGUKIGJ1aWxkLwpkaWZmIC0tZ2l0IGEvLmhnZW9sIGIvLmhnZW9sCmluZGV4IGVkMTMxNzEuLjY0YmI3Y2YgMTAwNjQ0Ci0tLSBhLy5oZ2VvbAorKysgYi8uaGdlb2wKQEAgLTI4LDggKzI4LDExIEBACiAKIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dCA9IEJJTgogTGliL3Rlc3QvY2prZW5jb2RpbmdzLyogPSBCSU4KLUxpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KIExpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS8qLmRlY1Rlc3QgPSBCSU4KK0xpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KK0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0ID0gQklOCisKK0xpYi92ZW52L3NjcmlwdHMvbnQvKiA9IEJJTgogCiAjIEFsbCBvdGhlciBmaWxlcyAod2hpY2ggcHJlc3VtYWJseSBhcmUgaHVtYW4tZWRpdGFibGUpIGFyZSAibmF0aXZlIi4KICMgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHJ1bGUhCmRpZmYgLS1naXQgYS8uaGdpZ25vcmUgYi8uaGdpZ25vcmUKaW5kZXggMjRkZjNiOS4uYTAxYTE3OCAxMDA2NDQKLS0tIGEvLmhnaWdub3JlCisrKyBiLy5oZ2lnbm9yZQpAQCAtNSw3ICs1LDggQEAKIE1ha2VmaWxlLnByZSQKIFRBR1MkCiBhdXRvbTR0ZS5jYWNoZSQKLWJ1aWxkLworXmJ1aWxkLworXkRvYy9idWlsZC8KIGJ1aWxkbm8kCiBjb25maWcuY2FjaGUKIGNvbmZpZy5sb2cKQEAgLTMxLDcgKzMyLDYgQEAKIE1vZHVsZXMvY29uZmlnLmMKIE1vZHVsZXMvbGRfc29fYWl4JAogUGFyc2VyL3BnZW4kCi1QYXJzZXIvcGdlbi5zdGFtcCQKIF5jb3JlCiBecHl0aG9uLWdkYi5weQogXnB5dGhvbi5leGUtZ2RiLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KK0xpYi9fc3lzY29uZmlnZGF0YS5weQogTGliL2xpYjJ0bzMvKi5waWNrbGUKIExpYi90ZXN0L2RhdGEvKgogTWlzYy8qLndwdQpAQCAtNTQsNiArNTUsMTggQEAKIFBDL3B5dGhvbm50X3JjKi5oCiBQQy8qLm9iagogUEMvKi5leGUKK1BDLyovKi5leGUKK1BDLyovKi5leHAKK1BDLyovKi5saWIKK1BDLyovKi5ic2MKK1BDLyovKi5kbGwKK1BDLyovKi5wZGIKK1BDLyovKi51c2VyCitQQy8qLyoubmNiCitQQy8qLyouc3VvCitQQy8qL1dpbjMyLXRlbXAtKgorUEMvKi94NjQtdGVtcC0qCitQQy8qL2FtZDY0CiBQQ2J1aWxkLyouZXhlCiBQQ2J1aWxkLyouZGxsCiBQQ2J1aWxkLyoucGRiCkBAIC02Miw4ICs3NSwxNSBAQAogUENidWlsZC8qLm8KIFBDYnVpbGQvKi5uY2IKIFBDYnVpbGQvKi5ic2MKK1BDYnVpbGQvKi51c2VyCitQQ2J1aWxkLyouc3VvCitQQ2J1aWxkLyouKnNkZgogUENidWlsZC9XaW4zMi10ZW1wLSoKK1BDYnVpbGQveDY0LXRlbXAtKgorUENidWlsZC9hbWQ2NAorQnVpbGRMb2cuaHRtCiBfX3B5Y2FjaGVfXworTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiAuY292ZXJhZ2UKIGNvdmVyYWdlLwpkaWZmIC0tZ2l0IGEvLmhndGFncyBiLy5oZ3RhZ3MKaW5kZXggZjA2MWI5MC4uZWZhNGQyZSAxMDA2NDQKLS0tIGEvLmhndGFncworKysgYi8uaGd0YWdzCkBAIC05OSwzICs5OSwxMyBAQAogNzA4NTQwM2RhZjQzOWFkYjNmOWU3MGVmMTNmNmJlZGIxYzQ0NzM3NiB2My4yLjNyYzEKIDQyOGYwNWNiNzI3N2UxZDQyYmI5ZGQ4ZDFhZjZiNjI3MGViYzYxMTIgdjMuMi4zcmMyCiAzZDA2ODZkOTBmNTVhNzhmOTZkOTQwM2RhMmM1MmRjMjQxMTQxOWQwIHYzLjIuMworZjFhOWE2NTA1NzMxNzE0ZjBlMTU3NDUzZmY4NTBlM2I3MTYxNWM0NSB2My4zLjBhMQorMmY2OWRiNTJkNmRlMzA2Y2RhZWYwYTBjYzAwY2M4MjNmYjM1MGIwMSB2My4zLjBhMgorMGI1M2I3MGE0MGEwMDAxMzUwNWViMzVlMzY2MDA1N2I2MmJlNzdiZSB2My4zLjBhMworN2M1MTM4OGEzYWE3Y2U3NmE4NTQxYmJiZGZjMDVkMmQyNTlhMTYyYyB2My4zLjBhNAorZTE1YzU1NGNkNDNlYjIzYmMwYTUyOGE0ZTg3NDFkYTliYmVjOTYwNyB2My4zLjBiMQorNDk3MmE4ZjFiMmFhM2Q3Y2RkNjRkYzk2YWE3ZmExMTJmZTFlYTM0MyB2My4zLjBiMgorOGJiNWM3YmM0NmJhNDM4MDQ0ODBmM2UzMjhlMWZhOTU2NjcyYzg4NSB2My4zLjByYzEKKzg4YTA3OTJlOGJhM2U0OTE2YjI0YzdlN2E1MjJjMjc3ZDMyNmQ2NmUgdjMuMy4wcmMyCitjMTkxZDIxY2VmYWZiMzgzMmM0NTU3MGU4NDg1NGUzMDlhYTYyZWFhIHYzLjMuMHJjMworYmQ4YWZiOTBlYmYyOGJhNGVkYzkwMWQ0YTIzNWY3NWU3YmJjNzlmZCB2My4zLjAKZGlmZiAtLWdpdCBhLy5oZ3RvdWNoIGIvLmhndG91Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5MzZmYQotLS0gL2Rldi9udWxsCisrKyBiLy5oZ3RvdWNoCkBAIC0wLDAgKzEsMTIgQEAKKyMgLSotIE1ha2VmaWxlIC0qLQorIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCisjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCisKK1B5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9mcmVlemVfaW1wb3J0bGliLnB5CisKK0luY2x1ZGUvYXN0Lmg6IFBhcnNlci9QeXRob24uYXNkbCBQYXJzZXIvYXNkbC5weSBQYXJzZXIvYXNkbF9jLnB5CitQeXRob24vUHl0aG9uLWFzdC5jOiBJbmNsdWRlL2FzdC5oCisKK1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oOiBQeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgTGliL29wY29kZS5weQorCitPYmplY3RzL3R5cGVzbG90cy5pbmM6IEluY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMucHkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggMTM0MTFmMi4uYTZkYzFlMiAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtNTMsNyArNTMsNyBAQAogCWZpCiAJQGlmIFsgISAtZCB0b29scy9weWdtZW50cyBdOyB0aGVuIFwKIAkgIGVjaG8gIkNoZWNraW5nIG91dCBQeWdtZW50cy4uLiI7IFwKLQkgIHN2biBjaGVja291dCAkKFNWTlJPT1QpL2V4dGVybmFsL1B5Z21lbnRzLTEuMy4xL3B5Z21lbnRzIHRvb2xzL3B5Z21lbnRzOyBcCisJICBzdm4gY2hlY2tvdXQgJChTVk5ST09UKS9leHRlcm5hbC9QeWdtZW50cy0xLjVkZXYtMjAxMjA5MzAvcHlnbWVudHMgdG9vbHMvcHlnbWVudHM7IFwKIAlmaQogCiB1cGRhdGU6IGNsZWFuIGNoZWNrb3V0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ0ZGRhN2MuLmIyOGFhNWYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0xNDYsNyArMTQ2LDcgQEAKICAgIExpa2UgYGB1I2BgLCBidXQgdGhlIFB5dGhvbiBvYmplY3QgbWF5IGFsc28gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgdGhlCiAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBwb2ludGVyIGlzIHNldCB0byAqTlVMTCouCiAKLWBgVWBgICg6Y2xhc3M6YHN0cmApIFtQeVVuaWNvZGVPYmplY3QgXCpdCitgYFVgYCAoOmNsYXNzOmBzdHJgKSBbUHlPYmplY3QgXCpdCiAgICBSZXF1aXJlcyB0aGF0IHRoZSBQeXRob24gb2JqZWN0IGlzIGEgVW5pY29kZSBvYmplY3QsIHdpdGhvdXQgYXR0ZW1wdGluZwogICAgYW55IGNvbnZlcnNpb24uICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFVuaWNvZGUKICAgIG9iamVjdC4gIFRoZSBDIHZhcmlhYmxlIG1heSBhbHNvIGJlIGRlY2xhcmVkIGFzIDpjOnR5cGU6YFB5T2JqZWN0XCpgLgpAQCAtMjYwLDkgKzI2MCwxMiBAQAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgogCi1gYGNgYCAoOmNsYXNzOmBieXRlc2Agb2YgbGVuZ3RoIDEpIFtjaGFyXQotICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMSwKLSAgIHRvIGEgQyA6Yzp0eXBlOmBjaGFyYC4KK2BgY2BgICg6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2YgbGVuZ3RoIDEpIFtjaGFyXQorICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9yCisgICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0IG9mIGxlbmd0aCAxLCB0byBhIEMgOmM6dHlwZTpgY2hhcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBbGxvdyA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cy4KIAogYGBDYGAgKDpjbGFzczpgc3RyYCBvZiBsZW5ndGggMSkgW2ludF0KICAgIENvbnZlcnQgYSBQeXRob24gY2hhcmFjdGVyLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgc3RyYCBvYmplY3Qgb2YKQEAgLTMxNSw2ICszMTgsMTUgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBgYFB5X0NMRUFOVVBfU1VQUE9SVEVEYGAgd2FzIGFkZGVkLgogCitgYHBgYCAoOmNsYXNzOmBib29sYCkgW2ludF0KKyAgIFRlc3RzIHRoZSB2YWx1ZSBwYXNzZWQgaW4gZm9yIHRydXRoIChhIGJvb2xlYW4gKipwKipccmVkaWNhdGUpIGFuZCBjb252ZXJ0cworICAgdGhlIHJlc3VsdCB0byBpdHMgZXF1aXZhbGVudCBDIHRydWUvZmFsc2UgaW50ZWdlciB2YWx1ZS4KKyAgIFNldHMgdGhlIGludCB0byAxIGlmIHRoZSBleHByZXNzaW9uIHdhcyB0cnVlIGFuZCAwIGlmIGl0IHdhcyBmYWxzZS4KKyAgIFRoaXMgYWNjZXB0cyBhbnkgdmFsaWQgUHl0aG9uIHZhbHVlLiAgU2VlIDpyZWY6YHRydXRoYCBmb3IgbW9yZQorICAgaW5mb3JtYXRpb24gYWJvdXQgaG93IFB5dGhvbiB0ZXN0cyB2YWx1ZXMgZm9yIHRydXRoLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogYGAoaXRlbXMpYGAgKDpjbGFzczpgdHVwbGVgKSBbKm1hdGNoaW5nLWl0ZW1zKl0KICAgIFRoZSBvYmplY3QgbXVzdCBiZSBhIFB5dGhvbiBzZXF1ZW5jZSB3aG9zZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBmb3JtYXQgdW5pdHMKICAgIGluICppdGVtcyouICBUaGUgQyBhcmd1bWVudHMgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBpbmRpdmlkdWFsIGZvcm1hdCB1bml0cyBpbgpAQCAtMzM2LDYgKzM0OCwxNSBAQAogICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAgZG9lcyBub3QgdG91Y2ggdGhlIGNvbnRlbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIEMKICAgIHZhcmlhYmxlKHMpLgogCitgYCRgYAorICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzYCBvbmx5OgorICAgSW5kaWNhdGVzIHRoYXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4gdGhlIFB5dGhvbiBhcmd1bWVudCBsaXN0IGFyZQorICAga2V5d29yZC1vbmx5LiAgQ3VycmVudGx5LCBhbGwga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBtdXN0IGFsc28gYmUgb3B0aW9uYWwKKyAgIGFyZ3VtZW50cywgc28gYGB8YGAgbXVzdCBhbHdheXMgYmUgc3BlY2lmaWVkIGJlZm9yZSBgYCRgYCBpbiB0aGUgZm9ybWF0CisgICBzdHJpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBgYDpgYAogICAgVGhlIGxpc3Qgb2YgZm9ybWF0IHVuaXRzIGVuZHMgaGVyZTsgdGhlIHN0cmluZyBhZnRlciB0aGUgY29sb24gaXMgdXNlZCBhcyB0aGUKICAgIGZ1bmN0aW9uIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMgKHRoZSAiYXNzb2NpYXRlZCB2YWx1ZSIgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYnVmZmVyLnJzdCBiL0RvYy9jLWFwaS9idWZmZXIucnN0CmluZGV4IGQ5OGVjZTMuLmQ2MzY5MzUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9idWZmZXIucnN0CisrKyBiL0RvYy9jLWFwaS9idWZmZXIucnN0CkBAIC03LDYgKzcsNyBAQAogCiAuLiBzZWN0aW9uYXV0aG9yOjogR3JlZyBTdGVpbiA8Z3N0ZWluQGx5cmEub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IEJlbmphbWluIFBldGVyc29uCisuLiBzZWN0aW9uYXV0aG9yOjogU3RlZmFuIEtyYWgKIAogCiAuLiBpbmRleDo6CkBAIC0yMCw3ICsyMSw3IEBACiAKIFdoaWxlIGVhY2ggb2YgdGhlc2UgdHlwZXMgaGF2ZSB0aGVpciBvd24gc2VtYW50aWNzLCB0aGV5IHNoYXJlIHRoZSBjb21tb24KIGNoYXJhY3RlcmlzdGljIG9mIGJlaW5nIGJhY2tlZCBieSBhIHBvc3NpYmx5IGxhcmdlIG1lbW9yeSBidWZmZXIuICBJdCBpcwotdGhlbiBkZXNpcmVhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKK3RoZW4gZGVzaXJhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKIHdpdGhvdXQgaW50ZXJtZWRpYXRlIGNvcHlpbmcuCiAKIFB5dGhvbiBwcm92aWRlcyBzdWNoIGEgZmFjaWxpdHkgYXQgdGhlIEMgbGV2ZWwgaW4gdGhlIGZvcm0gb2YgdGhlICpidWZmZXIKQEAgLTYwLDggKzYxLDEwIEBACiByZXNvdXJjZSBsZWFrcy4KIAogCi1UaGUgYnVmZmVyIHN0cnVjdHVyZQotPT09PT09PT09PT09PT09PT09PT0KKy4uIF9idWZmZXItc3RydWN0dXJlOgorCitCdWZmZXIgc3RydWN0dXJlCis9PT09PT09PT09PT09PT09CiAKIEJ1ZmZlciBzdHJ1Y3R1cmVzIChvciBzaW1wbHkgImJ1ZmZlcnMiKSBhcmUgdXNlZnVsIGFzIGEgd2F5IHRvIGV4cG9zZSB0aGUKIGJpbmFyeSBkYXRhIGZyb20gYW5vdGhlciBvYmplY3QgdG8gdGhlIFB5dGhvbiBwcm9ncmFtbWVyLiAgVGhleSBjYW4gYWxzbyBiZQpAQCAtNzgsOTYgKzgxLDMzOSBAQAogYXJvdW5kIGEgYnVmZmVyIGlzIG5lZWRlZCwgYSA6cmVmOmBtZW1vcnl2aWV3IDxtZW1vcnl2aWV3LW9iamVjdHM+YCBvYmplY3QKIGNhbiBiZSBjcmVhdGVkLgogCitGb3Igc2hvcnQgaW5zdHJ1Y3Rpb25zIGhvdyB0byB3cml0ZSBhbiBleHBvcnRpbmcgb2JqZWN0LCBzZWUKKzpyZWY6YEJ1ZmZlciBPYmplY3QgU3RydWN0dXJlcyA8YnVmZmVyLXN0cnVjdHM+YC4gRm9yIG9idGFpbmluZworYSBidWZmZXIsIHNlZSA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgLgogCiAuLiBjOnR5cGU6OiBQeV9idWZmZXIKIAotICAgLi4gYzptZW1iZXI6OiB2b2lkICpidWYKKyAgIC4uIGM6bWVtYmVyOjogdm9pZCBcKm9iagogCi0gICAgICBBIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBtZW1vcnkgZm9yIHRoZSBvYmplY3QuCisgICAgICBBIG5ldyByZWZlcmVuY2UgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QuIFRoZSByZWZlcmVuY2UgaXMgb3duZWQgYnkKKyAgICAgIHRoZSBjb25zdW1lciBhbmQgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCBhbmQgc2V0IHRvICpOVUxMKiBieQorICAgICAgOmM6ZnVuYzpgUHlCdWZmZXJfUmVsZWFzZWAuIFRoZSBmaWVsZCBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcmV0dXJuCisgICAgICB2YWx1ZSBvZiBhbnkgc3RhbmRhcmQgQy1BUEkgZnVuY3Rpb24uCisKKyAgICAgIEFzIGEgc3BlY2lhbCBjYXNlLCBmb3IgKnRlbXBvcmFyeSogYnVmZmVycyB0aGF0IGFyZSB3cmFwcGVkIGJ5CisgICAgICA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcmAgb3IgOmM6ZnVuYzpgUHlCdWZmZXJfRmlsbEluZm9gCisgICAgICB0aGlzIGZpZWxkIGlzICpOVUxMKi4gSW4gZ2VuZXJhbCwgZXhwb3J0aW5nIG9iamVjdHMgTVVTVCBOT1QKKyAgICAgIHVzZSB0aGlzIHNjaGVtZS4KKworICAgLi4gYzptZW1iZXI6OiB2b2lkIFwqYnVmCisKKyAgICAgIEEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIGRlc2NyaWJlZCBieSB0aGUgYnVmZmVyCisgICAgICBmaWVsZHMuIFRoaXMgY2FuIGJlIGFueSBsb2NhdGlvbiB3aXRoaW4gdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgbWVtb3J5CisgICAgICBibG9jayBvZiB0aGUgZXhwb3J0ZXIuIEZvciBleGFtcGxlLCB3aXRoIG5lZ2F0aXZlIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYAorICAgICAgdGhlIHZhbHVlIG1heSBwb2ludCB0byB0aGUgZW5kIG9mIHRoZSBtZW1vcnkgYmxvY2suCisKKyAgICAgIEZvciBjb250aWd1b3VzIGFycmF5cywgdGhlIHZhbHVlIHBvaW50cyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBtZW1vcnkKKyAgICAgIGJsb2NrLgogCiAgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgbGVuCi0gICAgICA6bm9pbmRleDoKIAotICAgICAgVGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgbWVtb3J5IGluIGJ5dGVzLgorICAgICAgYGBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplYGAuIEZvciBjb250aWd1b3VzIGFycmF5cywgdGhpcyBpcyB0aGUgbGVuZ3RoCisgICAgICBvZiB0aGUgdW5kZXJseWluZyBtZW1vcnkgYmxvY2suIEZvciBub24tY29udGlndW91cyBhcnJheXMsIGl0IGlzIHRoZSBsZW5ndGgKKyAgICAgIHRoYXQgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIHdvdWxkIGhhdmUgaWYgaXQgd2VyZSBjb3BpZWQgdG8gYSBjb250aWd1b3VzCisgICAgICByZXByZXNlbnRhdGlvbi4KKworICAgICAgQWNjZXNzaW5nIGBgKChjaGFyICopYnVmKVswXSB1cCB0byAoKGNoYXIgKilidWYpW2xlbi0xXWBgIGlzIG9ubHkgdmFsaWQKKyAgICAgIGlmIHRoZSBidWZmZXIgaGFzIGJlZW4gb2J0YWluZWQgYnkgYSByZXF1ZXN0IHRoYXQgZ3VhcmFudGVlcyBjb250aWd1aXR5LiBJbgorICAgICAgbW9zdCBjYXNlcyBzdWNoIGEgcmVxdWVzdCB3aWxsIGJlIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgIG9yIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAuCiAKICAgIC4uIGM6bWVtYmVyOjogaW50IHJlYWRvbmx5CiAKLSAgICAgIEFuIGluZGljYXRvciBvZiB3aGV0aGVyIHRoZSBidWZmZXIgaXMgcmVhZCBvbmx5LgotCi0gICAuLiBjOm1lbWJlcjo6IGNvbnN0IGNoYXIgKmZvcm1hdAotICAgICAgOm5vaW5kZXg6Ci0KLSAgICAgIEEgKk5VTEwqIHRlcm1pbmF0ZWQgc3RyaW5nIGluIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN0eWxlIHN5bnRheCBnaXZpbmcKLSAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgZWxlbWVudHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGJ1ZmZlci4gIElmIHRoaXMgaXMKLSAgICAgICpOVUxMKiwgYGAiQiJgYCAodW5zaWduZWQgYnl0ZXMpIGlzIGFzc3VtZWQuCi0KLSAgIC4uIGM6bWVtYmVyOjogaW50IG5kaW0KLQotICAgICAgVGhlIG51bWJlciBvZiBkaW1lbnNpb25zIHRoZSBtZW1vcnkgcmVwcmVzZW50cyBhcyBhIG11bHRpLWRpbWVuc2lvbmFsCi0gICAgICBhcnJheS4gIElmIGl0IGlzIDAsIDpjOmRhdGE6YHN0cmlkZXNgIGFuZCA6YzpkYXRhOmBzdWJvZmZzZXRzYCBtdXN0IGJlCi0gICAgICAqTlVMTCouCi0KLSAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCAqc2hhcGUKLQotICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGBccyB0aGUgbGVuZ3RoIG9mIDpjOmRhdGE6YG5kaW1gIGdpdmluZyB0aGUKLSAgICAgIHNoYXBlIG9mIHRoZSBtZW1vcnkgYXMgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheS4gIE5vdGUgdGhhdAotICAgICAgYGAoKCpzaGFwZSlbMF0gKiAuLi4gKiAoKnNoYXBlKVtuZGltcy0xXSkqaXRlbXNpemVgYCBzaG91bGQgYmUgZXF1YWwgdG8KLSAgICAgIDpjOmRhdGE6YGxlbmAuCi0KLSAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCAqc3RyaWRlcwotCi0gICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YFxzIHRoZSBsZW5ndGggb2YgOmM6ZGF0YTpgbmRpbWAgZ2l2aW5nIHRoZQotICAgICAgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgdG8gZ2V0IHRvIGEgbmV3IGVsZW1lbnQgaW4gZWFjaCBkaW1lbnNpb24uCi0KLSAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCAqc3Vib2Zmc2V0cwotCi0gICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YFxzIHRoZSBsZW5ndGggb2YgOmM6ZGF0YTpgbmRpbWAuICBJZiB0aGVzZQotICAgICAgc3Vib2Zmc2V0IG51bWJlcnMgYXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLCB0aGVuIHRoZSB2YWx1ZSBzdG9yZWQKLSAgICAgIGFsb25nIHRoZSBpbmRpY2F0ZWQgZGltZW5zaW9uIGlzIGEgcG9pbnRlciBhbmQgdGhlIHN1Ym9mZnNldCB2YWx1ZQotICAgICAgZGljdGF0ZXMgaG93IG1hbnkgYnl0ZXMgdG8gYWRkIHRvIHRoZSBwb2ludGVyIGFmdGVyIGRlLXJlZmVyZW5jaW5nLiBBCi0gICAgICBzdWJvZmZzZXQgdmFsdWUgdGhhdCBpdCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdGhhdCBubyBkZS1yZWZlcmVuY2luZyBzaG91bGQKLSAgICAgIG9jY3VyIChzdHJpZGluZyBpbiBhIGNvbnRpZ3VvdXMgbWVtb3J5IGJsb2NrKS4KLQotICAgICAgSGVyZSBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVsZW1lbnQgaW4gYW4gTi1EIGFycmF5Ci0gICAgICBwb2ludGVkIHRvIGJ5IGFuIE4tZGltZW5zaW9uYWwgaW5kZXggd2hlbiB0aGVyZSBhcmUgYm90aCBub24tTlVMTCBzdHJpZGVzCi0gICAgICBhbmQgc3Vib2Zmc2V0czo6Ci0KLSAgICAgICAgICB2b2lkICpnZXRfaXRlbV9wb2ludGVyKGludCBuZGltLCB2b2lkICpidWYsIFB5X3NzaXplX3QgKnN0cmlkZXMsCi0gICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsIFB5X3NzaXplX3QgKmluZGljZXMpIHsKLSAgICAgICAgICAgICAgY2hhciAqcG9pbnRlciA9IChjaGFyKilidWY7Ci0gICAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICBwb2ludGVyICs9IHN0cmlkZXNbaV0gKiBpbmRpY2VzW2ldOwotICAgICAgICAgICAgICAgICAgaWYgKHN1Ym9mZnNldHNbaV0gPj0wICkgewotICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgPSAqKChjaGFyKiopcG9pbnRlcikgKyBzdWJvZmZzZXRzW2ldOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldHVybiAodm9pZCopcG9pbnRlcjsKLSAgICAgICAgICAgfQotCisgICAgICBBbiBpbmRpY2F0b3Igb2Ygd2hldGhlciB0aGUgYnVmZmVyIGlzIHJlYWQtb25seS4gVGhpcyBmaWVsZCBpcyBjb250cm9sbGVkCisgICAgICBieSB0aGUgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBmbGFnLgogCiAgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgaXRlbXNpemUKIAotICAgICAgVGhpcyBpcyBhIHN0b3JhZ2UgZm9yIHRoZSBpdGVtc2l6ZSAoaW4gYnl0ZXMpIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUKLSAgICAgIHNoYXJlZCBtZW1vcnkuIEl0IGlzIHRlY2huaWNhbGx5IHVuLW5lY2Vzc2FyeSBhcyBpdCBjYW4gYmUgb2J0YWluZWQKLSAgICAgIHVzaW5nIDpjOmZ1bmM6YFB5QnVmZmVyX1NpemVGcm9tRm9ybWF0YCwgaG93ZXZlciBhbiBleHBvcnRlciBtYXkga25vdwotICAgICAgdGhpcyBpbmZvcm1hdGlvbiB3aXRob3V0IHBhcnNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgYW5kIGl0IGlzIG5lY2Vzc2FyeQotICAgICAgdG8ga25vdyB0aGUgaXRlbXNpemUgZm9yIHByb3BlciBpbnRlcnByZXRhdGlvbiBvZiBzdHJpZGluZy4gVGhlcmVmb3JlLAotICAgICAgc3RvcmluZyBpdCBpcyBtb3JlIGNvbnZlbmllbnQgYW5kIGZhc3Rlci4KKyAgICAgIEl0ZW0gc2l6ZSBpbiBieXRlcyBvZiBhIHNpbmdsZSBlbGVtZW50LiBTYW1lIGFzIHRoZSB2YWx1ZSBvZiA6ZnVuYzpgc3RydWN0LmNhbGNzaXplYAorICAgICAgY2FsbGVkIG9uIG5vbi1OVUxMIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5mb3JtYXRgIHZhbHVlcy4KIAotICAgLi4gYzptZW1iZXI6OiB2b2lkICppbnRlcm5hbAorICAgICAgSW1wb3J0YW50IGV4Y2VwdGlvbjogSWYgYSBjb25zdW1lciByZXF1ZXN0cyBhIGJ1ZmZlciB3aXRob3V0IHRoZQorICAgICAgOmM6bWFjcm86YFB5QlVGX0ZPUk1BVGAgZmxhZywgOmM6bWVtYmVyOmB+UHlfQnVmZmVyLmZvcm1hdGAgd2lsbAorICAgICAgYmUgc2V0IHRvICAqTlVMTCosICBidXQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBzdGlsbCBoYXMKKyAgICAgIHRoZSB2YWx1ZSBmb3IgdGhlIG9yaWdpbmFsIGZvcm1hdC4KKworICAgICAgSWYgOmM6bWVtYmVyOmB+UHlfQnVmZmVyLnNoYXBlYCBpcyBwcmVzZW50LCB0aGUgZXF1YWxpdHkKKyAgICAgIGBgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9PSBsZW5gYCBzdGlsbCBob2xkcyBhbmQgdGhlIGNvbnN1bWVyCisgICAgICBjYW4gdXNlIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgdG8gbmF2aWdhdGUgdGhlIGJ1ZmZlci4KKworICAgICAgSWYgOmM6bWVtYmVyOmB+UHlfQnVmZmVyLnNoYXBlYCBpcyAqTlVMTCogYXMgYSByZXN1bHQgb2YgYSA6YzptYWNybzpgUHlCVUZfU0lNUExFYAorICAgICAgb3IgYSA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIHJlcXVlc3QsIHRoZSBjb25zdW1lciBtdXN0IGRpc3JlZ2FyZAorICAgICAgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBhbmQgYXNzdW1lIGBgaXRlbXNpemUgPT0gMWBgLgorCisgICAuLiBjOm1lbWJlcjo6IGNvbnN0IGNoYXIgXCpmb3JtYXQKKworICAgICAgQSAqTlVMKiB0ZXJtaW5hdGVkIHN0cmluZyBpbiA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzdHlsZSBzeW50YXggZGVzY3JpYmluZworICAgICAgdGhlIGNvbnRlbnRzIG9mIGEgc2luZ2xlIGl0ZW0uIElmIHRoaXMgaXMgKk5VTEwqLCBgYCJCImBgICh1bnNpZ25lZCBieXRlcykKKyAgICAgIGlzIGFzc3VtZWQuCisKKyAgICAgIFRoaXMgZmllbGQgaXMgY29udHJvbGxlZCBieSB0aGUgOmM6bWFjcm86YFB5QlVGX0ZPUk1BVGAgZmxhZy4KKworICAgLi4gYzptZW1iZXI6OiBpbnQgbmRpbQorCisgICAgICBUaGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgdGhlIG1lbW9yeSByZXByZXNlbnRzIGFzIGFuIG4tZGltZW5zaW9uYWwgYXJyYXkuCisgICAgICBJZiBpdCBpcyAwLCA6YzptZW1iZXI6YH5QeV9CdWZmZXIuYnVmYCBwb2ludHMgdG8gYSBzaW5nbGUgaXRlbSByZXByZXNlbnRpbmcKKyAgICAgIGEgc2NhbGFyLiBJbiB0aGlzIGNhc2UsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zaGFwZWAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYAorICAgICAgYW5kIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdWJvZmZzZXRzYCBNVVNUIGJlICpOVUxMKi4KKworICAgICAgVGhlIG1hY3JvIDpjOm1hY3JvOmBQeUJVRl9NQVhfTkRJTWAgbGltaXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaW1lbnNpb25zCisgICAgICB0byA2NC4gRXhwb3J0ZXJzIE1VU1QgcmVzcGVjdCB0aGlzIGxpbWl0LCBjb25zdW1lcnMgb2YgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgIGJ1ZmZlcnMgU0hPVUxEIGJlIGFibGUgdG8gaGFuZGxlIHVwIHRvIDpjOm1hY3JvOmBQeUJVRl9NQVhfTkRJTWAgZGltZW5zaW9ucy4KKworICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IFwqc2hhcGUKKworICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGAgb2YgbGVuZ3RoIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYAorICAgICAgaW5kaWNhdGluZyB0aGUgc2hhcGUgb2YgdGhlIG1lbW9yeSBhcyBhbiBuLWRpbWVuc2lvbmFsIGFycmF5LiBOb3RlIHRoYXQKKyAgICAgIGBgc2hhcGVbMF0gKiAuLi4gKiBzaGFwZVtuZGltLTFdICogaXRlbXNpemVgYCBNVVNUIGJlIGVxdWFsIHRvCisgICAgICA6YzptZW1iZXI6YH5QeV9idWZmZXIubGVuYC4KKworICAgICAgU2hhcGUgdmFsdWVzIGFyZSByZXN0cmljdGVkIHRvIGBgc2hhcGVbbl0gPj0gMGBgLiBUaGUgY2FzZQorICAgICAgYGBzaGFwZVtuXSA9PSAwYGAgcmVxdWlyZXMgc3BlY2lhbCBhdHRlbnRpb24uIFNlZSBgY29tcGxleCBhcnJheXNgXworICAgICAgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCisKKyAgICAgIFRoZSBzaGFwZSBhcnJheSBpcyByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IFwqc3RyaWRlcworCisgICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YCBvZiBsZW5ndGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gCisgICAgICBnaXZpbmcgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIHRvIGdldCB0byBhIG5ldyBlbGVtZW50IGluIGVhY2gKKyAgICAgIGRpbWVuc2lvbi4KKworICAgICAgU3RyaWRlIHZhbHVlcyBjYW4gYmUgYW55IGludGVnZXIuIEZvciByZWd1bGFyIGFycmF5cywgc3RyaWRlcyBhcmUKKyAgICAgIHVzdWFsbHkgcG9zaXRpdmUsIGJ1dCBhIGNvbnN1bWVyIE1VU1QgYmUgYWJsZSB0byBoYW5kbGUgdGhlIGNhc2UKKyAgICAgIGBgc3RyaWRlc1tuXSA8PSAwYGAuIFNlZSBgY29tcGxleCBhcnJheXNgXyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgICAgVGhlIHN0cmlkZXMgYXJyYXkgaXMgcmVhZC1vbmx5IGZvciB0aGUgY29uc3VtZXIuCisKKyAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBcKnN1Ym9mZnNldHMKKworICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGAgb2YgbGVuZ3RoIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYC4KKyAgICAgIElmIGBgc3Vib2Zmc2V0c1tuXSA+PSAwYGAsIHRoZSB2YWx1ZXMgc3RvcmVkIGFsb25nIHRoZSBudGggZGltZW5zaW9uIGFyZQorICAgICAgcG9pbnRlcnMgYW5kIHRoZSBzdWJvZmZzZXQgdmFsdWUgZGljdGF0ZXMgaG93IG1hbnkgYnl0ZXMgdG8gYWRkIHRvIGVhY2gKKyAgICAgIHBvaW50ZXIgYWZ0ZXIgZGUtcmVmZXJlbmNpbmcuIEEgc3Vib2Zmc2V0IHZhbHVlIHRoYXQgaXMgbmVnYXRpdmUKKyAgICAgIGluZGljYXRlcyB0aGF0IG5vIGRlLXJlZmVyZW5jaW5nIHNob3VsZCBvY2N1ciAoc3RyaWRpbmcgaW4gYSBjb250aWd1b3VzCisgICAgICBtZW1vcnkgYmxvY2spLgorCisgICAgICBUaGlzIHR5cGUgb2YgYXJyYXkgcmVwcmVzZW50YXRpb24gaXMgdXNlZCBieSB0aGUgUHl0aG9uIEltYWdpbmcgTGlicmFyeQorICAgICAgKFBJTCkuIFNlZSBgY29tcGxleCBhcnJheXNgXyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBob3cgdG8gYWNjZXNzIGVsZW1lbnRzCisgICAgICBvZiBzdWNoIGFuIGFycmF5LgorCisgICAgICBUaGUgc3Vib2Zmc2V0cyBhcnJheSBpcyByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgLi4gYzptZW1iZXI6OiB2b2lkIFwqaW50ZXJuYWwKIAogICAgICAgVGhpcyBpcyBmb3IgdXNlIGludGVybmFsbHkgYnkgdGhlIGV4cG9ydGluZyBvYmplY3QuIEZvciBleGFtcGxlLCB0aGlzCiAgICAgICBtaWdodCBiZSByZS1jYXN0IGFzIGFuIGludGVnZXIgYnkgdGhlIGV4cG9ydGVyIGFuZCB1c2VkIHRvIHN0b3JlIGZsYWdzCiAgICAgICBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGUgc2hhcGUsIHN0cmlkZXMsIGFuZCBzdWJvZmZzZXRzIGFycmF5cyBtdXN0IGJlCi0gICAgICBmcmVlZCB3aGVuIHRoZSBidWZmZXIgaXMgcmVsZWFzZWQuIFRoZSBjb25zdW1lciBzaG91bGQgbmV2ZXIgYWx0ZXIgdGhpcworICAgICAgZnJlZWQgd2hlbiB0aGUgYnVmZmVyIGlzIHJlbGVhc2VkLiBUaGUgY29uc3VtZXIgTVVTVCBOT1QgYWx0ZXIgdGhpcwogICAgICAgdmFsdWUuCiAKKy4uIF9idWZmZXItcmVxdWVzdC10eXBlczoKKworQnVmZmVyIHJlcXVlc3QgdHlwZXMKKz09PT09PT09PT09PT09PT09PT09CisKK0J1ZmZlcnMgYXJlIHVzdWFsbHkgb2J0YWluZWQgYnkgc2VuZGluZyBhIGJ1ZmZlciByZXF1ZXN0IHRvIGFuIGV4cG9ydGluZworb2JqZWN0IHZpYSA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgLiBTaW5jZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgbG9naWNhbAorc3RydWN0dXJlIG9mIHRoZSBtZW1vcnkgY2FuIHZhcnkgZHJhc3RpY2FsbHksIHRoZSBjb25zdW1lciB1c2VzIHRoZSAqZmxhZ3MqCithcmd1bWVudCB0byBzcGVjaWZ5IHRoZSBleGFjdCBidWZmZXIgdHlwZSBpdCBjYW4gaGFuZGxlLgorCitBbGwgOmM6ZGF0YTpgUHlfYnVmZmVyYCBmaWVsZHMgYXJlIHVuYW1iaWd1b3VzbHkgZGVmaW5lZCBieSB0aGUgcmVxdWVzdAordHlwZS4KKworcmVxdWVzdC1pbmRlcGVuZGVudCBmaWVsZHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgbm90IGluZmx1ZW5jZWQgYnkgKmZsYWdzKiBhbmQgbXVzdCBhbHdheXMgYmUgZmlsbGVkIGluCit3aXRoIHRoZSBjb3JyZWN0IHZhbHVlczogOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm9iamAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5idWZgLAorOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmxlbmAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYC4KKworCityZWFkb25seSwgZm9ybWF0Cit+fn5+fn5+fn5+fn5+fn5+CisKKyAgIC4uIGM6bWFjcm86OiBQeUJVRl9XUklUQUJMRQorCisgICAgICBDb250cm9scyB0aGUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnJlYWRvbmx5YCBmaWVsZC4gSWYgc2V0LCB0aGUgZXhwb3J0ZXIKKyAgICAgIE1VU1QgcHJvdmlkZSBhIHdyaXRhYmxlIGJ1ZmZlciBvciBlbHNlIHJlcG9ydCBmYWlsdXJlLiBPdGhlcndpc2UsIHRoZQorICAgICAgZXhwb3J0ZXIgTUFZIHByb3ZpZGUgZWl0aGVyIGEgcmVhZC1vbmx5IG9yIHdyaXRhYmxlIGJ1ZmZlciwgYnV0IHRoZSBjaG9pY2UKKyAgICAgIE1VU1QgYmUgY29uc2lzdGVudCBmb3IgYWxsIGNvbnN1bWVycy4KKworICAgLi4gYzptYWNybzo6IFB5QlVGX0ZPUk1BVAorCisgICAgICBDb250cm9scyB0aGUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmZvcm1hdGAgZmllbGQuIElmIHNldCwgdGhpcyBmaWVsZCBNVVNUCisgICAgICBiZSBmaWxsZWQgaW4gY29ycmVjdGx5LiBPdGhlcndpc2UsIHRoaXMgZmllbGQgTVVTVCBiZSAqTlVMTCouCisKKworOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBjYW4gYmUgXHwnZCB0byBhbnkgb2YgdGhlIGZsYWdzIGluIHRoZSBuZXh0IHNlY3Rpb24uCitTaW5jZSA6YzptYWNybzpgUHlCVUZfU0lNUExFYCBpcyBkZWZpbmVkIGFzIDAsIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAKK2NhbiBiZSB1c2VkIGFzIGEgc3RhbmQtYWxvbmUgZmxhZyB0byByZXF1ZXN0IGEgc2ltcGxlIHdyaXRhYmxlIGJ1ZmZlci4KKworOmM6bWFjcm86YFB5QlVGX0ZPUk1BVGAgY2FuIGJlIFx8J2QgdG8gYW55IG9mIHRoZSBmbGFncyBleGNlcHQgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAuCitUaGUgbGF0dGVyIGFscmVhZHkgaW1wbGllcyBmb3JtYXQgYGBCYGAgKHVuc2lnbmVkIGJ5dGVzKS4KKworCitzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIGZsYWdzIHRoYXQgY29udHJvbCB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgdGhlIG1lbW9yeSBhcmUgbGlzdGVkCitpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIGNvbXBsZXhpdHkuIE5vdGUgdGhhdCBlYWNoIGZsYWcgY29udGFpbnMgYWxsIGJpdHMKK29mIHRoZSBmbGFncyBiZWxvdyBpdC4KKworCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCAgUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgfCBzaGFwZSB8IHN0cmlkZXMgfCBzdWJvZmZzZXRzIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9JTkRJUkVDVCB8ICB5ZXMgIHwgICB5ZXMgICB8IGlmIG5lZWRlZCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERVMgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfTkQgICAgICAgfCAgeWVzICB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9TSU1QTEUgICB8ICBOVUxMIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKKworCitjb250aWd1aXR5IHJlcXVlc3RzCit+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0Mgb3IgRm9ydHJhbiBjb250aWd1aXR5IGNhbiBiZSBleHBsaWNpdGx5IHJlcXVlc3RlZCwgd2l0aCBhbmQgd2l0aG91dCBzdHJpZGUKK2luZm9ybWF0aW9uLiBXaXRob3V0IHN0cmlkZSBpbmZvcm1hdGlvbiwgdGhlIGJ1ZmZlciBtdXN0IGJlIEMtY29udGlndW91cy4KKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgIFJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2hhcGUgfCBzdHJpZGVzIHwgc3Vib2Zmc2V0cyB8IGNvbnRpZyB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09Kz09PT09PT09KworfCAuLiBjOm1hY3JvOjogUHlCVUZfQ19DT05USUdVT1VTICAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBDICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9GX0NPTlRJR1VPVVMgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIEYgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0FOWV9DT05USUdVT1VTIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8IEMgb3IgRiB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfTkQgICAgICAgICAgICAgfCAgeWVzICB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwgICBDICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCisKKworY29tcG91bmQgcmVxdWVzdHMKK35+fn5+fn5+fn5+fn5+fn5+CisKK0FsbCBwb3NzaWJsZSByZXF1ZXN0cyBhcmUgZnVsbHkgZGVmaW5lZCBieSBzb21lIGNvbWJpbmF0aW9uIG9mIHRoZSBmbGFncyBpbgordGhlIHByZXZpb3VzIHNlY3Rpb24uIEZvciBjb252ZW5pZW5jZSwgdGhlIGJ1ZmZlciBwcm90b2NvbCBwcm92aWRlcyBmcmVxdWVudGx5Cit1c2VkIGNvbWJpbmF0aW9ucyBhcyBzaW5nbGUgZmxhZ3MuCisKK0luIHRoZSBmb2xsb3dpbmcgdGFibGUgKlUqIHN0YW5kcyBmb3IgdW5kZWZpbmVkIGNvbnRpZ3VpdHkuIFRoZSBjb25zdW1lciB3b3VsZAoraGF2ZSB0byBjYWxsIDpjOmZ1bmM6YFB5QnVmZmVyX0lzQ29udGlndW91c2AgdG8gZGV0ZXJtaW5lIGNvbnRpZ3VpdHkuCisKKworCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgIFJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgfCBzaGFwZSB8IHN0cmlkZXMgfCBzdWJvZmZzZXRzIHwgY29udGlnIHwgcmVhZG9ubHkgfCBmb3JtYXQgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09Kz09PT09PT09Kz09PT09PT09PT0rPT09PT09PT0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9GVUxMICAgICAgIHwgIHllcyAgfCAgIHllcyAgIHwgaWYgbmVlZGVkICB8ICAgVSAgICB8ICAgICAwICAgIHwgIHllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfRlVMTF9STyAgICB8ICB5ZXMgIHwgICB5ZXMgICB8IGlmIG5lZWRlZCAgfCAgIFUgICAgfCAgMSBvciAwICB8ICB5ZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1JFQ09SRFMgICAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBVICAgIHwgICAgIDAgICAgfCAgeWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9SRUNPUkRTX1JPIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgVSAgICB8ICAxIG9yIDAgIHwgIHllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRCAgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIFUgICAgfCAgICAgMCAgICB8ICBOVUxMICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERURfUk8gfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBVICAgIHwgIDEgb3IgMCAgfCAgTlVMTCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUcgICAgIHwgIHllcyAgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8ICAgQyAgICB8ICAgICAwICAgIHwgIE5VTEwgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfQ09OVElHX1JPICB8ICB5ZXMgIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfCAgIEMgICAgfCAgMSBvciAwICB8ICBOVUxMICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKKworCitDb21wbGV4IGFycmF5cworPT09PT09PT09PT09PT0KKworTnVtUHktc3R5bGU6IHNoYXBlIGFuZCBzdHJpZGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIE51bVB5LXN0eWxlIGFycmF5cyBpcyBkZWZpbmVkIGJ5IDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAsCis6YzptZW1iZXI6YH5QeV9idWZmZXIubmRpbWAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zaGFwZWAgYW5kIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYC4KKworSWYgYGBuZGltID09IDBgYCwgdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IDpjOm1lbWJlcjpgflB5X2J1ZmZlci5idWZgIGlzCitpbnRlcnByZXRlZCBhcyBhIHNjYWxhciBvZiBzaXplIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAuIEluIHRoYXQgY2FzZSwKK2JvdGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgIGFyZSAqTlVMTCouCisKK0lmIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYCBpcyAqTlVMTCosIHRoZSBhcnJheSBpcyBpbnRlcnByZXRlZCBhcworYSBzdGFuZGFyZCBuLWRpbWVuc2lvbmFsIEMtYXJyYXkuIE90aGVyd2lzZSwgdGhlIGNvbnN1bWVyIG11c3QgYWNjZXNzIGFuCituLWRpbWVuc2lvbmFsIGFycmF5IGFzIGZvbGxvd3M6CisKKyAgIGBgcHRyID0gKGNoYXIgKilidWYgKyBpbmRpY2VzWzBdICogc3RyaWRlc1swXSArIC4uLiArIGluZGljZXNbbi0xXSAqIHN0cmlkZXNbbi0xXWBgCisgICBgYGl0ZW0gPSAqKCh0eXBlb2YoaXRlbSkgKilwdHIpO2BgCisKKworQXMgbm90ZWQgYWJvdmUsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5idWZgIGNhbiBwb2ludCB0byBhbnkgbG9jYXRpb24gd2l0aGluCit0aGUgYWN0dWFsIG1lbW9yeSBibG9jay4gQW4gZXhwb3J0ZXIgY2FuIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBhIGJ1ZmZlciB3aXRoCit0aGlzIGZ1bmN0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgIGRlZiB2ZXJpZnlfc3RydWN0dXJlKG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQpOgorICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHJlcHJlc2VudCBhIHZhbGlkIGFycmF5IHdpdGhpbgorICAgICAgICAgIHRoZSBib3VuZHMgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnk6CisgICAgICAgICAgICAgIGNoYXIgKm1lbTogc3RhcnQgb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICAgICBtZW1sZW46IGxlbmd0aCBvZiB0aGUgcGh5c2ljYWwgbWVtb3J5IGJsb2NrCisgICAgICAgICAgICAgIG9mZnNldDogKGNoYXIgKilidWYgLSBtZW0KKyAgICAgICAiIiIKKyAgICAgICBpZiBvZmZzZXQgJSBpdGVtc2l6ZToKKyAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgaWYgb2Zmc2V0IDwgMCBvciBvZmZzZXQraXRlbXNpemUgPiBtZW1sZW46CisgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgIGlmIGFueSh2ICUgaXRlbXNpemUgZm9yIHYgaW4gc3RyaWRlcyk6CisgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgaWYgbmRpbSA8PSAwOgorICAgICAgICAgICByZXR1cm4gbmRpbSA9PSAwIGFuZCBub3Qgc2hhcGUgYW5kIG5vdCBzdHJpZGVzCisgICAgICAgaWYgMCBpbiBzaGFwZToKKyAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgIGltaW4gPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPD0gMCkKKyAgICAgICBpbWF4ID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdID4gMCkKKworICAgICAgIHJldHVybiAwIDw9IG9mZnNldCtpbWluIGFuZCBvZmZzZXQraW1heCtpdGVtc2l6ZSA8PSBtZW1sZW4KKworCitQSUwtc3R5bGU6IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0luIGFkZGl0aW9uIHRvIHRoZSByZWd1bGFyIGl0ZW1zLCBQSUwtc3R5bGUgYXJyYXlzIGNhbiBjb250YWluIHBvaW50ZXJzCit0aGF0IG11c3QgYmUgZm9sbG93ZWQgaW4gb3JkZXIgdG8gZ2V0IHRvIHRoZSBuZXh0IGVsZW1lbnQgaW4gYSBkaW1lbnNpb24uCitGb3IgZXhhbXBsZSwgdGhlIHJlZ3VsYXIgdGhyZWUtZGltZW5zaW9uYWwgQy1hcnJheSBgYGNoYXIgdlsyXVsyXVszXWBgIGNhbgorYWxzbyBiZSB2aWV3ZWQgYXMgYW4gYXJyYXkgb2YgMiBwb2ludGVycyB0byAyIHR3by1kaW1lbnNpb25hbCBhcnJheXM6CitgYGNoYXIgKCp2WzJdKVsyXVszXWBgLiBJbiBzdWJvZmZzZXRzIHJlcHJlc2VudGF0aW9uLCB0aG9zZSB0d28gcG9pbnRlcnMKK2NhbiBiZSBlbWJlZGRlZCBhdCB0aGUgc3RhcnQgb2YgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAsIHBvaW50aW5nCit0byB0d28gYGBjaGFyIHhbMl1bM11gYCBhcnJheXMgdGhhdCBjYW4gYmUgbG9jYXRlZCBhbnl3aGVyZSBpbiBtZW1vcnkuCisKKworSGVyZSBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVsZW1lbnQgaW4gYW4gTi1EIGFycmF5Citwb2ludGVkIHRvIGJ5IGFuIE4tZGltZW5zaW9uYWwgaW5kZXggd2hlbiB0aGVyZSBhcmUgYm90aCBub24tTlVMTCBzdHJpZGVzCithbmQgc3Vib2Zmc2V0czo6CisKKyAgIHZvaWQgKmdldF9pdGVtX3BvaW50ZXIoaW50IG5kaW0sIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywgUHlfc3NpemVfdCAqaW5kaWNlcykgeworICAgICAgIGNoYXIgKnBvaW50ZXIgPSAoY2hhciopYnVmOworICAgICAgIGludCBpOworICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKKyAgICAgICAgICAgcG9pbnRlciArPSBzdHJpZGVzW2ldICogaW5kaWNlc1tpXTsKKyAgICAgICAgICAgaWYgKHN1Ym9mZnNldHNbaV0gPj0wICkgeworICAgICAgICAgICAgICAgcG9pbnRlciA9ICooKGNoYXIqKilwb2ludGVyKSArIHN1Ym9mZnNldHNbaV07CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgcmV0dXJuICh2b2lkKilwb2ludGVyOworICAgfQorCiAKIEJ1ZmZlci1yZWxhdGVkIGZ1bmN0aW9ucwogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLQogLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9DaGVja0J1ZmZlcihQeU9iamVjdCAqb2JqKQogCiAgICBSZXR1cm4gMSBpZiAqb2JqKiBzdXBwb3J0cyB0aGUgYnVmZmVyIGludGVyZmFjZSBvdGhlcndpc2UgMC4gIFdoZW4gMSBpcwpAQCAtMTc1LDE1MiArNDIxLDcxIEBACiAgICBzdWNjZWVkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPYmplY3RfR2V0QnVmZmVyKFB5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9HZXRCdWZmZXIoUHlPYmplY3QgKmV4cG9ydGVyLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIAotICAgICAgRXhwb3J0IGEgdmlldyBvdmVyIHNvbWUgaW50ZXJuYWwgZGF0YSBmcm9tIHRoZSB0YXJnZXQgb2JqZWN0ICpvYmoqLgotICAgICAgKm9iaiogbXVzdCBub3QgYmUgTlVMTCwgYW5kICp2aWV3KiBtdXN0IHBvaW50IHRvIGFuIGV4aXN0aW5nCi0gICAgICA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSBhbGxvY2F0ZWQgYnkgdGhlIGNhbGxlciAobW9zdCB1c2VzIG9mCi0gICAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgc2ltcGx5IGRlY2xhcmUgYSBsb2NhbCB2YXJpYWJsZSBvZiB0eXBlCi0gICAgICA6Yzp0eXBlOmBQeV9idWZmZXJgKS4gIFRoZSAqZmxhZ3MqIGFyZ3VtZW50IGlzIGEgYml0IGZpZWxkIGluZGljYXRpbmcKLSAgICAgIHdoYXQga2luZCBvZiBidWZmZXIgaXMgcmVxdWVzdGVkLiAgVGhlIGJ1ZmZlciBpbnRlcmZhY2UgYWxsb3dzCi0gICAgICBmb3IgY29tcGxpY2F0ZWQgbWVtb3J5IGxheW91dCBwb3NzaWJpbGl0aWVzOyBob3dldmVyLCBzb21lIGNhbGxlcnMKLSAgICAgIHdvbid0IHdhbnQgdG8gaGFuZGxlIGFsbCB0aGUgY29tcGxleGl0eSBhbmQgaW5zdGVhZCByZXF1ZXN0IGEgc2ltcGxlCi0gICAgICB2aWV3IG9mIHRoZSB0YXJnZXQgb2JqZWN0ICh1c2luZyA6YzptYWNybzpgUHlCVUZfU0lNUExFYCBmb3IgYSByZWFkLW9ubHkKLSAgICAgIHZpZXcgYW5kIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAgZm9yIGEgcmVhZC13cml0ZSB2aWV3KS4KKyAgIFNlbmQgYSByZXF1ZXN0IHRvICpleHBvcnRlciogdG8gZmlsbCBpbiAqdmlldyogYXMgc3BlY2lmaWVkIGJ5ICAqZmxhZ3MqLgorICAgSWYgdGhlIGV4cG9ydGVyIGNhbm5vdCBwcm92aWRlIGEgYnVmZmVyIG9mIHRoZSBleGFjdCB0eXBlLCBpdCBNVVNUIHJhaXNlCisgICA6YzpkYXRhOmBQeUV4Y19CdWZmZXJFcnJvcmAsIHNldCA6YzptZW1iZXI6YHZpZXctPm9iamAgdG8gKk5VTEwqIGFuZAorICAgcmV0dXJuIC0xLgogCi0gICAgICBTb21lIGV4cG9ydGVycyBtYXkgbm90IGJlIGFibGUgdG8gc2hhcmUgbWVtb3J5IGluIGV2ZXJ5IHBvc3NpYmxlIHdheSBhbmQKLSAgICAgIG1heSBuZWVkIHRvIHJhaXNlIGVycm9ycyB0byBzaWduYWwgdG8gc29tZSBjb25zdW1lcnMgdGhhdCBzb21ldGhpbmcgaXMKLSAgICAgIGp1c3Qgbm90IHBvc3NpYmxlLiBUaGVzZSBlcnJvcnMgc2hvdWxkIGJlIGEgOmV4YzpgQnVmZmVyRXJyb3JgIHVubGVzcwotICAgICAgdGhlcmUgaXMgYW5vdGhlciBlcnJvciB0aGF0IGlzIGFjdHVhbGx5IGNhdXNpbmcgdGhlIHByb2JsZW0uIFRoZQotICAgICAgZXhwb3J0ZXIgY2FuIHVzZSBmbGFncyBpbmZvcm1hdGlvbiB0byBzaW1wbGlmeSBob3cgbXVjaCBvZiB0aGUKLSAgICAgIDpjOmRhdGE6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGlzIGZpbGxlZCBpbiB3aXRoIG5vbi1kZWZhdWx0IHZhbHVlcyBhbmQvb3IKLSAgICAgIHJhaXNlIGFuIGVycm9yIGlmIHRoZSBvYmplY3QgY2FuJ3Qgc3VwcG9ydCBhIHNpbXBsZXIgdmlldyBvZiBpdHMgbWVtb3J5LgorICAgT24gc3VjY2VzcywgZmlsbCBpbiAqdmlldyosIHNldCA6YzptZW1iZXI6YHZpZXctPm9iamAgdG8gYSBuZXcgcmVmZXJlbmNlCisgICB0byAqZXhwb3J0ZXIqIGFuZCByZXR1cm4gMC4gSW4gdGhlIGNhc2Ugb2YgY2hhaW5lZCBidWZmZXIgcHJvdmlkZXJzCisgICB0aGF0IHJlZGlyZWN0IHJlcXVlc3RzIHRvIGEgc2luZ2xlIG9iamVjdCwgOmM6bWVtYmVyOmB2aWV3LT5vYmpgIE1BWQorICAgcmVmZXIgdG8gdGhpcyBvYmplY3QgaW5zdGVhZCBvZiAqZXhwb3J0ZXIqIChTZWUgOnJlZjpgQnVmZmVyIE9iamVjdCBTdHJ1Y3R1cmVzIDxidWZmZXItc3RydWN0cz5gKS4KIAotICAgICAgT24gc3VjY2VzcywgMCBpcyByZXR1cm5lZCBhbmQgdGhlICp2aWV3KiBzdHJ1Y3R1cmUgaXMgZmlsbGVkIHdpdGggdXNlZnVsCi0gICAgICB2YWx1ZXMuICBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgYW5kIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQ7IHRoZSAqdmlldyoKLSAgICAgIGlzIGxlZnQgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLgotCi0gICAgICBUaGUgZm9sbG93aW5nIGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIHRvIHRoZSAqZmxhZ3MqIGFyZ3VtZW50cy4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NJTVBMRQotCi0gICAgICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IGZsYWcuICBUaGUgcmV0dXJuZWQgYnVmZmVyIGV4cG9zZXMgYSByZWFkLW9ubHkKLSAgICAgICAgIG1lbW9yeSBhcmVhLiAgVGhlIGZvcm1hdCBvZiBkYXRhIGlzIGFzc3VtZWQgdG8gYmUgcmF3IHVuc2lnbmVkIGJ5dGVzLAotICAgICAgICAgd2l0aG91dCBhbnkgcGFydGljdWxhciBzdHJ1Y3R1cmUuICBUaGlzIGlzIGEgInN0YW5kLWFsb25lIiBmbGFnCi0gICAgICAgICBjb25zdGFudC4gIEl0IG5ldmVyIG5lZWRzIHRvIGJlICd8J2QgdG8gdGhlIG90aGVycy4gIFRoZSBleHBvcnRlciB3aWxsCi0gICAgICAgICByYWlzZSBhbiBlcnJvciBpZiBpdCBjYW5ub3QgcHJvdmlkZSBzdWNoIGEgY29udGlndW91cyBidWZmZXIgb2YgYnl0ZXMuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9XUklUQUJMRQotCi0gICAgICAgICBMaWtlIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgLCBidXQgdGhlIHJldHVybmVkIGJ1ZmZlciBpcyB3cml0YWJsZS4gIElmCi0gICAgICAgICB0aGUgZXhwb3J0ZXIgZG9lc24ndCBzdXBwb3J0IHdyaXRhYmxlIGJ1ZmZlcnMsIGFuIGVycm9yIGlzIHJhaXNlZC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERVMKLQotICAgICAgICAgVGhpcyBpbXBsaWVzIDpjOm1hY3JvOmBQeUJVRl9ORGAuICBUaGUgcmV0dXJuZWQgYnVmZmVyIG11c3QgcHJvdmlkZQotICAgICAgICAgc3RyaWRlcyBpbmZvcm1hdGlvbiAoaS5lLiB0aGUgc3RyaWRlcyBjYW5ub3QgYmUgTlVMTCkuICBUaGlzIHdvdWxkIGJlCi0gICAgICAgICB1c2VkIHdoZW4gdGhlIGNvbnN1bWVyIGNhbiBoYW5kbGUgc3RyaWRlZCwgZGlzY29udGlndW91cyBhcnJheXMuCi0gICAgICAgICBIYW5kbGluZyBzdHJpZGVzIGF1dG9tYXRpY2FsbHkgYXNzdW1lcyB5b3UgY2FuIGhhbmRsZSBzaGFwZS4gIFRoZQotICAgICAgICAgZXhwb3J0ZXIgY2FuIHJhaXNlIGFuIGVycm9yIGlmIGEgc3RyaWRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBpcwotICAgICAgICAgbm90IHBvc3NpYmxlIChpLmUuIHdpdGhvdXQgdGhlIHN1Ym9mZnNldHMpLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfTkQKLQotICAgICAgICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtdXN0IHByb3ZpZGUgc2hhcGUgaW5mb3JtYXRpb24uICBUaGUgbWVtb3J5IHdpbGwgYmUKLSAgICAgICAgIGFzc3VtZWQgQy1zdHlsZSBjb250aWd1b3VzIChsYXN0IGRpbWVuc2lvbiB2YXJpZXMgdGhlIGZhc3Rlc3QpLiAgVGhlCi0gICAgICAgICBleHBvcnRlciBtYXkgcmFpc2UgYW4gZXJyb3IgaWYgaXQgY2Fubm90IHByb3ZpZGUgdGhpcyBraW5kIG9mCi0gICAgICAgICBjb250aWd1b3VzIGJ1ZmZlci4gIElmIHRoaXMgaXMgbm90IGdpdmVuIHRoZW4gc2hhcGUgd2lsbCBiZSAqTlVMTCouCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9DX0NPTlRJR1VPVVMKLSAgICAgICAgICAgICAgICAgIFB5QlVGX0ZfQ09OVElHVU9VUwotICAgICAgICAgICAgICAgICAgUHlCVUZfQU5ZX0NPTlRJR1VPVVMKLQotICAgICAgICAgVGhlc2UgZmxhZ3MgaW5kaWNhdGUgdGhhdCB0aGUgY29udGlndWl0eSByZXR1cm5lZCBidWZmZXIgbXVzdCBiZQotICAgICAgICAgcmVzcGVjdGl2ZWx5LCBDLWNvbnRpZ3VvdXMgKGxhc3QgZGltZW5zaW9uIHZhcmllcyB0aGUgZmFzdGVzdCksIEZvcnRyYW4KLSAgICAgICAgIGNvbnRpZ3VvdXMgKGZpcnN0IGRpbWVuc2lvbiB2YXJpZXMgdGhlIGZhc3Rlc3QpIG9yIGVpdGhlciBvbmUuICBBbGwgb2YKLSAgICAgICAgIHRoZXNlIGZsYWdzIGltcGx5IDpjOm1hY3JvOmBQeUJVRl9TVFJJREVTYCBhbmQgZ3VhcmFudGVlIHRoYXQgdGhlCi0gICAgICAgICBzdHJpZGVzIGJ1ZmZlciBpbmZvIHN0cnVjdHVyZSB3aWxsIGJlIGZpbGxlZCBpbiBjb3JyZWN0bHkuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9JTkRJUkVDVAotCi0gICAgICAgICBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoZSByZXR1cm5lZCBidWZmZXIgbXVzdCBoYXZlIHN1Ym9mZnNldHMKLSAgICAgICAgIGluZm9ybWF0aW9uICh3aGljaCBjYW4gYmUgTlVMTCBpZiBubyBzdWJvZmZzZXRzIGFyZSBuZWVkZWQpLiAgVGhpcyBjYW4KLSAgICAgICAgIGJlIHVzZWQgd2hlbiB0aGUgY29uc3VtZXIgY2FuIGhhbmRsZSBpbmRpcmVjdCBhcnJheSByZWZlcmVuY2luZyBpbXBsaWVkCi0gICAgICAgICBieSB0aGVzZSBzdWJvZmZzZXRzLiBUaGlzIGltcGxpZXMgOmM6bWFjcm86YFB5QlVGX1NUUklERVNgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfRk9STUFUCi0KLSAgICAgICAgIFRoZSByZXR1cm5lZCBidWZmZXIgbXVzdCBoYXZlIHRydWUgZm9ybWF0IGluZm9ybWF0aW9uIGlmIHRoaXMgZmxhZyBpcwotICAgICAgICAgcHJvdmlkZWQuICBUaGlzIHdvdWxkIGJlIHVzZWQgd2hlbiB0aGUgY29uc3VtZXIgaXMgZ29pbmcgdG8gYmUgY2hlY2tpbmcKLSAgICAgICAgIGZvciB3aGF0ICdraW5kJyBvZiBkYXRhIGlzIGFjdHVhbGx5IHN0b3JlZC4gIEFuIGV4cG9ydGVyIHNob3VsZCBhbHdheXMKLSAgICAgICAgIGJlIGFibGUgdG8gcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGlmIHJlcXVlc3RlZC4gIElmIGZvcm1hdCBpcyBub3QKLSAgICAgICAgIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHRoZW4gdGhlIGZvcm1hdCBtdXN0IGJlIHJldHVybmVkIGFzICpOVUxMKiAod2hpY2gKLSAgICAgICAgIG1lYW5zIGBgJ0InYGAsIG9yIHVuc2lnbmVkIGJ5dGVzKS4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERUQKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX1NUUklERVMgfCBQeUJVRl9XUklUQUJMRSlgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERURfUk8KLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX1NUUklERVMpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9SRUNPUkRTCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9TVFJJREVTIHwgUHlCVUZfRk9STUFUIHwKLSAgICAgICAgIFB5QlVGX1dSSVRBQkxFKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfUkVDT1JEU19STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfU1RSSURFUyB8IFB5QlVGX0ZPUk1BVClgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0ZVTEwKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX0lORElSRUNUIHwgUHlCVUZfRk9STUFUIHwKLSAgICAgICAgIFB5QlVGX1dSSVRBQkxFKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfRlVMTF9STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfSU5ESVJFQ1QgfCBQeUJVRl9GT1JNQVQpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUcKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX05EIHwgUHlCVUZfV1JJVEFCTEUpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUdfUk8KLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX05EKWBgLgorICAgU3VjY2Vzc2Z1bCBjYWxscyB0byA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIG11c3QgYmUgcGFpcmVkIHdpdGggY2FsbHMKKyAgIHRvIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgLCBzaW1pbGFyIHRvIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgLgorICAgVGh1cywgYWZ0ZXIgdGhlIGNvbnN1bWVyIGlzIGRvbmUgd2l0aCB0aGUgYnVmZmVyLCA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYAorICAgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX1JlbGVhc2UoUHlfYnVmZmVyICp2aWV3KQogCi0gICBSZWxlYXNlIHRoZSBidWZmZXIgKnZpZXcqLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGJ1ZmZlciBpcyBubwotICAgbG9uZ2VyIGJlaW5nIHVzZWQgYXMgaXQgbWF5IGZyZWUgbWVtb3J5IGZyb20gaXQuCisgICBSZWxlYXNlIHRoZSBidWZmZXIgKnZpZXcqIGFuZCBkZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IKKyAgIDpjOm1lbWJlcjpgdmlldy0+b2JqYC4gVGhpcyBmdW5jdGlvbiBNVVNUIGJlIGNhbGxlZCB3aGVuIHRoZSBidWZmZXIKKyAgIGlzIG5vIGxvbmdlciBiZWluZyB1c2VkLCBvdGhlcndpc2UgcmVmZXJlbmNlIGxlYWtzIG1heSBvY2N1ci4KKworICAgSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIGEgYnVmZmVyIHRoYXQgd2FzIG5vdCBvYnRhaW5lZCB2aWEKKyAgIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlCdWZmZXJfU2l6ZUZyb21Gb3JtYXQoY29uc3QgY2hhciAqKQogCi0gICBSZXR1cm4gdGhlIGltcGxpZWQgOmM6ZGF0YTpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgZnJvbSB0aGUgc3RydWN0LXN0eXBlCi0gICA6YzpkYXRhOmB+UHlfYnVmZmVyLmZvcm1hdGAuCisgICBSZXR1cm4gdGhlIGltcGxpZWQgOmM6ZGF0YTpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgZnJvbSA6YzpkYXRhOmB+UHlfYnVmZmVyLmZvcm1hdGAuCisgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnRyYW4pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgb3JkZXIpCiAKLSAgIFJldHVybiAxIGlmIHRoZSBtZW1vcnkgZGVmaW5lZCBieSB0aGUgKnZpZXcqIGlzIEMtc3R5bGUgKCpmb3J0cmFuKiBpcwotICAgYGAnQydgYCkgb3IgRm9ydHJhbi1zdHlsZSAoKmZvcnRyYW4qIGlzIGBgJ0YnYGApIGNvbnRpZ3VvdXMgb3IgZWl0aGVyIG9uZQotICAgKCpmb3J0cmFuKiBpcyBgYCdBJ2BgKS4gIFJldHVybiAwIG90aGVyd2lzZS4KKyAgIFJldHVybiAxIGlmIHRoZSBtZW1vcnkgZGVmaW5lZCBieSB0aGUgKnZpZXcqIGlzIEMtc3R5bGUgKCpvcmRlciogaXMKKyAgIGBgJ0MnYGApIG9yIEZvcnRyYW4tc3R5bGUgKCpvcmRlciogaXMgYGAnRidgYCkgY29udGlndW91cyBvciBlaXRoZXIgb25lCisgICAoKm9yZGVyKiBpcyBgYCdBJ2BgKS4gIFJldHVybiAwIG90aGVyd2lzZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW0sIFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBjaGFyIGZvcnRyYW4pCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW0sIFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBjaGFyIG9yZGVyKQogCiAgICBGaWxsIHRoZSAqc3RyaWRlcyogYXJyYXkgd2l0aCBieXRlLXN0cmlkZXMgb2YgYSBjb250aWd1b3VzIChDLXN0eWxlIGlmCi0gICAqZm9ydHJhbiogaXMgYGAnQydgYCBvciBGb3J0cmFuLXN0eWxlIGlmICpmb3J0cmFuKiBpcyBgYCdGJ2BgKSBhcnJheSBvZiB0aGUKKyAgICpvcmRlciogaXMgYGAnQydgYCBvciBGb3J0cmFuLXN0eWxlIGlmICpvcmRlciogaXMgYGAnRidgYCkgYXJyYXkgb2YgdGhlCiAgICBnaXZlbiBzaGFwZSB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgYnl0ZXMgcGVyIGVsZW1lbnQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIGludCByZWFkb25seSwgaW50IGluZm9mbGFncykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfRmlsbEluZm8oUHlfYnVmZmVyICp2aWV3LCBQeU9iamVjdCAqZXhwb3J0ZXIsIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIGludCByZWFkb25seSwgaW50IGZsYWdzKQogCi0gICBGaWxsIGluIGEgYnVmZmVyLWluZm8gc3RydWN0dXJlLCAqdmlldyosIGNvcnJlY3RseSBmb3IgYW4gZXhwb3J0ZXIgdGhhdCBjYW4KLSAgIG9ubHkgc2hhcmUgYSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeSBvZiAidW5zaWduZWQgYnl0ZXMiIG9mIHRoZSBnaXZlbgotICAgbGVuZ3RoLiAgUmV0dXJuIDAgb24gc3VjY2VzcyBhbmQgLTEgKHdpdGggcmFpc2luZyBhbiBlcnJvcikgb24gZXJyb3IuCisgICBIYW5kbGUgYnVmZmVyIHJlcXVlc3RzIGZvciBhbiBleHBvcnRlciB0aGF0IHdhbnRzIHRvIGV4cG9zZSAqYnVmKiBvZiBzaXplICpsZW4qCisgICB3aXRoIHdyaXRhYmlsaXR5IHNldCBhY2NvcmRpbmcgdG8gKnJlYWRvbmx5Ki4gKmJ1ZiogaXMgaW50ZXJwcmV0ZWQgYXMgYSBzZXF1ZW5jZQorICAgb2YgdW5zaWduZWQgYnl0ZXMuCisKKyAgIFRoZSAqZmxhZ3MqIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgcmVxdWVzdCB0eXBlLiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBmaWxscyBpbgorICAgKnZpZXcqIGFzIHNwZWNpZmllZCBieSBmbGFncywgdW5sZXNzICpidWYqIGhhcyBiZWVuIGRlc2lnbmF0ZWQgYXMgcmVhZC1vbmx5CisgICBhbmQgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBpcyBzZXQgaW4gKmZsYWdzKi4KKworICAgT24gc3VjY2Vzcywgc2V0IDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byBhIG5ldyByZWZlcmVuY2UgdG8gKmV4cG9ydGVyKiBhbmQKKyAgIHJldHVybiAwLiBPdGhlcndpc2UsIHJhaXNlIDpjOmRhdGE6YFB5RXhjX0J1ZmZlckVycm9yYCwgc2V0CisgICA6YzptZW1iZXI6YHZpZXctPm9iamAgdG8gKk5VTEwqIGFuZCByZXR1cm4gLTE7CisKKyAgIElmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyBwYXJ0IG9mIGEgOnJlZjpgZ2V0YnVmZmVycHJvYyA8YnVmZmVyLXN0cnVjdHM+YCwKKyAgICpleHBvcnRlciogTVVTVCBiZSBzZXQgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QuIE90aGVyd2lzZSwgKmV4cG9ydGVyKiBNVVNUCisgICBiZSBOVUxMLgorCisKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvZGUucnN0IGIvRG9jL2MtYXBpL2NvZGUucnN0CmluZGV4IDY5MzJiYjEuLjU3ZTgwNzIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9jb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvY29kZS5yc3QKQEAgLTMxLDExICszMSwxMSBAQAogCiAgICBSZXR1cm4gdHJ1ZSBpZiAqY28qIGlzIGEgOmNsYXNzOmBjb2RlYCBvYmplY3QKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUNvZGVfR2V0TnVtRnJlZShQeU9iamVjdCAqY28pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5Q29kZV9HZXROdW1GcmVlKFB5Q29kZU9iamVjdCAqY28pCiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGZyZWUgdmFyaWFibGVzIGluICpjbyouCiAKLS4uIGM6ZnVuY3Rpb246OiBQeUNvZGVPYmplY3QgKlB5Q29kZV9OZXcoaW50IGFyZ2NvdW50LCBpbnQga3dvbmx5YXJnY291bnQsIGludCBubG9jYWxzLCBpbnQgc3RhY2tzaXplLCBpbnQgZmxhZ3MsIFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICp2YXJuYW1lcywgUHlPYmplY3QgKmZyZWV2YXJzLCBQeU9iamVjdCAqY2VsbHZhcnMsIFB5T2JqZWN0ICpmaWxlbmFtZSwgUHlPYmplY3QgKm5hbWUsIGludCBmaXJzdGxpbmVubywgUHlPYmplY3QgKmxub3RhYikKKy4uIGM6ZnVuY3Rpb246OiBQeUNvZGVPYmplY3QqIFB5Q29kZV9OZXcoaW50IGFyZ2NvdW50LCBpbnQga3dvbmx5YXJnY291bnQsIGludCBubG9jYWxzLCBpbnQgc3RhY2tzaXplLCBpbnQgZmxhZ3MsIFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICp2YXJuYW1lcywgUHlPYmplY3QgKmZyZWV2YXJzLCBQeU9iamVjdCAqY2VsbHZhcnMsIFB5T2JqZWN0ICpmaWxlbmFtZSwgUHlPYmplY3QgKm5hbWUsIGludCBmaXJzdGxpbmVubywgUHlPYmplY3QgKmxub3RhYikKIAogICAgUmV0dXJuIGEgbmV3IGNvZGUgb2JqZWN0LiAgSWYgeW91IG5lZWQgYSBkdW1teSBjb2RlIG9iamVjdCB0bwogICAgY3JlYXRlIGEgZnJhbWUsIHVzZSA6YzpmdW5jOmBQeUNvZGVfTmV3RW1wdHlgIGluc3RlYWQuICBDYWxsaW5nCkBAIC00Myw3ICs0Myw3IEBACiAgICB2ZXJzaW9uIHNpbmNlIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBieXRlY29kZSBjaGFuZ2VzIG9mdGVuLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDb2RlX05ld0VtcHR5KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSwgaW50IGZpcnN0bGluZW5vKQorLi4gYzpmdW5jdGlvbjo6IFB5Q29kZU9iamVjdCogUHlDb2RlX05ld0VtcHR5KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSwgaW50IGZpcnN0bGluZW5vKQogCiAgICBSZXR1cm4gYSBuZXcgZW1wdHkgY29kZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLAogICAgZnVuY3Rpb24gbmFtZSwgYW5kIGZpcnN0IGxpbmUgbnVtYmVyLiAgSXQgaXMgaWxsZWdhbCB0bwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvbnZlcnNpb24ucnN0IGIvRG9jL2MtYXBpL2NvbnZlcnNpb24ucnN0CmluZGV4IGRmYzBhM2EuLjk1NzhmOTggMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9jb252ZXJzaW9uLnJzdAorKysgYi9Eb2MvYy1hcGkvY29udmVyc2lvbi5yc3QKQEAgLTExOSwxMyArMTE5LDEzIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlPU19zdHJpY21wKGNoYXIgKnMxLCBjaGFyICpzMikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPU19zdHJpY21wKGNoYXIgKnMxLCBjaGFyICpzMikKIAogICAgQ2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIG9mIHN0cmluZ3MuIFRoZSBmdW5jdGlvbiB3b3JrcyBhbG1vc3QKICAgIGlkZW50aWNhbGx5IHRvIDpjOmZ1bmM6YHN0cmNtcGAgZXhjZXB0IHRoYXQgaXQgaWdub3JlcyB0aGUgY2FzZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlPU19zdHJuaWNtcChjaGFyICpzMSwgY2hhciAqczIsIFB5X3NzaXplX3QgIHNpemUpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5T1Nfc3RybmljbXAoY2hhciAqczEsIGNoYXIgKnMyLCBQeV9zc2l6ZV90ICBzaXplKQogCiAgICBDYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2Ygc3RyaW5ncy4gVGhlIGZ1bmN0aW9uIHdvcmtzIGFsbW9zdAogICAgaWRlbnRpY2FsbHkgdG8gOmM6ZnVuYzpgc3RybmNtcGAgZXhjZXB0IHRoYXQgaXQgaWdub3JlcyB0aGUgY2FzZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9kYXRldGltZS5yc3QgYi9Eb2MvYy1hcGkvZGF0ZXRpbWUucnN0CmluZGV4IGZjZDEzOTUuLjM5NTQyYmQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2MtYXBpL2RhdGV0aW1lLnJzdApAQCAtMTcwLDYgKzE3MCwzMSBAQAogICAgUmV0dXJuIHRoZSBtaWNyb3NlY29uZCwgYXMgYW4gaW50IGZyb20gMCB0aHJvdWdoIDk5OTk5OS4KIAogCitNYWNyb3MgdG8gZXh0cmFjdCBmaWVsZHMgZnJvbSB0aW1lIGRlbHRhIG9iamVjdHMuICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhbgoraW5zdGFuY2Ugb2YgOmM6ZGF0YTpgUHlEYXRlVGltZV9EZWx0YWAsIGluY2x1ZGluZyBzdWJjbGFzc2VzLiBUaGUgYXJndW1lbnQgbXVzdAorbm90IGJlICpOVUxMKiwgYW5kIHRoZSB0eXBlIGlzIG5vdCBjaGVja2VkOgorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMoUHlEYXRlVGltZV9EZWx0YSAqbykKKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cywgYXMgYW4gaW50IGZyb20gLTk5OTk5OTk5OSB0byA5OTk5OTk5OTkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUyhQeURhdGVUaW1lX0RlbHRhICpvKQorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWNvbmRzLCBhcyBhbiBpbnQgZnJvbSAwIHRocm91Z2ggODYzOTkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlEYXRlVGltZV9ERUxUQV9HRVRfTUlDUk9TRUNPTkQoUHlEYXRlVGltZV9EZWx0YSAqbykKKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgbWljcm9zZWNvbmRzLCBhcyBhbiBpbnQgZnJvbSAwIHRocm91Z2ggOTk5OTk5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiBNYWNyb3MgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiBtb2R1bGVzIGltcGxlbWVudGluZyB0aGUgREIgQVBJOgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RGF0ZVRpbWVfRnJvbVRpbWVzdGFtcChQeU9iamVjdCAqYXJncykKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9kaWN0LnJzdCBiL0RvYy9jLWFwaS9kaWN0LnJzdAppbmRleCA2ZGY4NGUwLi42YmFjYzMyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZGljdC5yc3QKKysrIGIvRG9jL2MtYXBpL2RpY3QucnN0CkBAIC0zNiwxMSArMzYsMTEgQEAKICAgIFJldHVybiBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LCBvciAqTlVMTCogb24gZmFpbHVyZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RGljdFByb3h5X05ldyhQeU9iamVjdCAqZGljdCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICptYXBwaW5nKQogCi0gICBSZXR1cm4gYSBwcm94eSBvYmplY3QgZm9yIGEgbWFwcGluZyB3aGljaCBlbmZvcmNlcyByZWFkLW9ubHkgYmVoYXZpb3IuCi0gICBUaGlzIGlzIG5vcm1hbGx5IHVzZWQgdG8gY3JlYXRlIGEgcHJveHkgdG8gcHJldmVudCBtb2RpZmljYXRpb24gb2YgdGhlCi0gICBkaWN0aW9uYXJ5IGZvciBub24tZHluYW1pYyBjbGFzcyB0eXBlcy4KKyAgIFJldHVybiBhIDpjbGFzczpgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZWAgb2JqZWN0IGZvciBhIG1hcHBpbmcgd2hpY2gKKyAgIGVuZm9yY2VzIHJlYWQtb25seSBiZWhhdmlvci4gIFRoaXMgaXMgbm9ybWFsbHkgdXNlZCB0byBjcmVhdGUgYSB2aWV3IHRvCisgICBwcmV2ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUgZGljdGlvbmFyeSBmb3Igbm9uLWR5bmFtaWMgY2xhc3MgdHlwZXMuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICpwKQpAQCAtMjA5LDMgKzIwOSwxMCBAQAogICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlcTI6CiAgICAgICAgICAgICAgIGlmIG92ZXJyaWRlIG9yIGtleSBub3QgaW4gYToKICAgICAgICAgICAgICAgICAgIGFba2V5XSA9IHZhbHVlCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeURpY3RfQ2xlYXJGcmVlTGlzdCgpCisKKyAgIENsZWFyIHRoZSBmcmVlIGxpc3QuIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGZyZWVkIGl0ZW1zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdCBiL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAppbmRleCA2ZjEzYzgwLi45YTY2YjdmIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CkBAIC0xMjksNiArMTI5LDQxIEBACiAgICAgICBleGNlcHRpb24gc3RhdGUuCiAKIAorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKnB0eXBlLCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlPYmplY3QgKipwdHJhY2ViYWNrKQorCisgICBSZXRyaWV2ZSB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKKyAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyBhbHJlYWR5IGNhdWdodCwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcworICAgZnJlc2hseSByYWlzZWQuICBSZXR1cm5zIG5ldyByZWZlcmVuY2VzIGZvciB0aGUgdGhyZWUgb2JqZWN0cywgYW55IG9mIHdoaWNoCisgICBtYXkgYmUgKk5VTEwqLiAgRG9lcyBub3QgbW9kaWZ5IHRoZSBleGNlcHRpb24gaW5mbyBzdGF0ZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9TZXRFeGNJbmZvYCB0byByZXN0b3JlIG9yIGNsZWFyIHRoZQorICAgICAgZXhjZXB0aW9uIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCisKKyAgIFNldCB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKKyAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyBhbHJlYWR5IGNhdWdodCwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcworICAgZnJlc2hseSByYWlzZWQuICBUaGlzIGZ1bmN0aW9uIHN0ZWFscyB0aGUgcmVmZXJlbmNlcyBvZiB0aGUgYXJndW1lbnRzLgorICAgVG8gY2xlYXIgdGhlIGV4Y2VwdGlvbiBzdGF0ZSwgcGFzcyAqTlVMTCogZm9yIGFsbCB0aHJlZSBhcmd1bWVudHMuCisgICBGb3IgZ2VuZXJhbCBydWxlcyBhYm91dCB0aGUgdGhyZWUgYXJndW1lbnRzLCBzZWUgOmM6ZnVuYzpgUHlFcnJfUmVzdG9yZWAuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgZXhjZXB0aW9ucy4KKyAgICAgIFJhdGhlciwgaXQgY2FuIGJlIHVzZWQgd2hlbiBjb2RlIG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbgorICAgICAgc3RhdGUgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfR2V0RXhjSW5mb2AgdG8gcmVhZCB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0U3RyaW5nKFB5T2JqZWN0ICp0eXBlLCBjb25zdCBjaGFyICptZXNzYWdlKQogCiAgICBUaGlzIGlzIHRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gc2V0IHRoZSBlcnJvciBpbmRpY2F0b3IuICBUaGUgZmlyc3QgYXJndW1lbnQKQEAgLTIzMCw2ICsyNjUsMTYgQEAKICAgIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBleGNlcHRpb24gdHlwZSB0byBiZSByYWlzZWQuIEF2YWlsYWJpbGl0eTogV2luZG93cy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKKworICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJhaXNlIDpleGM6YEltcG9ydEVycm9yYC4gKm1zZyogd2lsbCBiZQorICAgc2V0IGFzIHRoZSBleGNlcHRpb24ncyBtZXNzYWdlIHN0cmluZy4gKm5hbWUqIGFuZCAqcGF0aCosIGJvdGggb2Ygd2hpY2ggY2FuCisgICBiZSBgYE5VTExgYCwgd2lsbCBiZSBzZXQgYXMgdGhlIDpleGM6YEltcG9ydEVycm9yYCdzIHJlc3BlY3RpdmUgYGBuYW1lYGAKKyAgIGFuZCBgYHBhdGhgYCBhdHRyaWJ1dGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TeW50YXhMb2NhdGlvbkV4KGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIAogICAgU2V0IGZpbGUsIGxpbmUsIGFuZCBvZmZzZXQgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IGV4Y2VwdGlvbi4gIElmIHRoZQpAQCAtMjM4LDcgKzI4Myw3IEBACiAgICBpcyBhIDpleGM6YFN5bnRheEVycm9yYC4gKmZpbGVuYW1lKiBpcyBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcKICAgICg6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZ2ApLgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1N5bnRheExvY2F0aW9uKGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQpAQCAtMzExLDYgKzM1Niw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfQ2hlY2tTaWduYWxzKCkKIAogICAgLi4gaW5kZXg6OgpAQCAtNDIxLDE3ICs0NjcsMTggQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUV4Y2VwdGlvbl9HZXRDYXVzZShQeU9iamVjdCAqZXgpCiAKLSAgIFJldHVybiB0aGUgY2F1c2UgKGFub3RoZXIgZXhjZXB0aW9uIGluc3RhbmNlIHNldCBieSBgYHJhaXNlIC4uLiBmcm9tIC4uLmBgKQotICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGNlcHRpb24gYXMgYSBuZXcgcmVmZXJlbmNlLCBhcyBhY2Nlc3NpYmxlIGZyb20gUHl0aG9uCi0gICB0aHJvdWdoIDphdHRyOmBfX2NhdXNlX19gLiAgSWYgdGhlcmUgaXMgbm8gY2F1c2UgYXNzb2NpYXRlZCwgdGhpcyByZXR1cm5zCi0gICAqTlVMTCouCisgICBSZXR1cm4gdGhlIGNhdXNlIChlaXRoZXIgYW4gZXhjZXB0aW9uIGluc3RhbmNlLCBvciA6Y29uc3Q6YE5vbmVgLAorICAgc2V0IGJ5IGBgcmFpc2UgLi4uIGZyb20gLi4uYGApIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhjZXB0aW9uIGFzIGEgbmV3CisgICByZWZlcmVuY2UsIGFzIGFjY2Vzc2libGUgZnJvbSBQeXRob24gdGhyb3VnaCA6YXR0cjpgX19jYXVzZV9fYC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqZXgsIFB5T2JqZWN0ICpjdHgpCiAKICAgIFNldCB0aGUgY2F1c2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGNlcHRpb24gdG8gKmN0eCouICBVc2UgKk5VTEwqIHRvIGNsZWFyCi0gICBpdC4gIFRoZXJlIGlzIG5vIHR5cGUgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgKmN0eCogaXMgYW4gZXhjZXB0aW9uIGluc3RhbmNlLgotICAgVGhpcyBzdGVhbHMgYSByZWZlcmVuY2UgdG8gKmN0eCouCisgICBpdC4gIFRoZXJlIGlzIG5vIHR5cGUgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgKmN0eCogaXMgZWl0aGVyIGFuIGV4Y2VwdGlvbgorICAgaW5zdGFuY2Ugb3IgOmNvbnN0OmBOb25lYC4gIFRoaXMgc3RlYWxzIGEgcmVmZXJlbmNlIHRvICpjdHgqLgorCisgICA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gIGlzIGltcGxpY2l0bHkgc2V0IHRvIGBgVHJ1ZWBgIGJ5IHRoaXMgZnVuY3Rpb24uCiAKIAogLi4gX3VuaWNvZGVleGNlcHRpb25zOgpAQCAtNTI1LDcgKzU3Miw3IEBACiAKICAgIE1hcmtzIGEgcG9pbnQgd2hlcmUgYSByZWN1cnNpdmUgQy1sZXZlbCBjYWxsIGlzIGFib3V0IHRvIGJlIHBlcmZvcm1lZC4KIAotICAgSWYgOmNvbnN0OmBVU0VfU1RBQ0tDSEVDS2AgaXMgZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIHRoZSBPUworICAgSWYgOmNvbnN0OmBVU0VfU1RBQ0tDSEVDS2AgaXMgZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIE9TCiAgICBzdGFjayBvdmVyZmxvd2VkIHVzaW5nIDpjOmZ1bmM6YFB5T1NfQ2hlY2tTdGFja2AuICBJbiB0aGlzIGlzIHRoZSBjYXNlLCBpdAogICAgc2V0cyBhIDpleGM6YE1lbW9yeUVycm9yYCBhbmQgcmV0dXJucyBhIG5vbnplcm8gdmFsdWUuCiAKQEAgLTU4Miw2NSArNjI5LDExNiBAQAogOmM6dHlwZTpgUHlPYmplY3RcKmA7IHRoZXkgYXJlIGFsbCBjbGFzcyBvYmplY3RzLiAgRm9yIGNvbXBsZXRlbmVzcywgaGVyZSBhcmUgYWxsCiB0aGUgdmFyaWFibGVzOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IEMgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIE5hbWUgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCi18IDpjOmRhdGE6YFB5RXhjX0Jhc2VFeGNlcHRpb25gICAgICAgIHwgOmV4YzpgQmFzZUV4Y2VwdGlvbmAgICAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0V4Y2VwdGlvbmAgICAgICAgICAgIHwgOmV4YzpgRXhjZXB0aW9uYCAgICAgICAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0FyaXRobWV0aWNFcnJvcmAgICAgIHwgOmV4YzpgQXJpdGhtZXRpY0Vycm9yYCAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0xvb2t1cEVycm9yYCAgICAgICAgIHwgOmV4YzpgTG9va3VwRXJyb3JgICAgICAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0Fzc2VydGlvbkVycm9yYCAgICAgIHwgOmV4YzpgQXNzZXJ0aW9uRXJyb3JgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0F0dHJpYnV0ZUVycm9yYCAgICAgIHwgOmV4YzpgQXR0cmlidXRlRXJyb3JgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0VPRkVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgRU9GRXJyb3JgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0Vudmlyb25tZW50RXJyb3JgICAgIHwgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcmAgIHwgOmV4YzpgRmxvYXRpbmdQb2ludEVycm9yYCAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0lPRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSU9FcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0ltcG9ydEVycm9yYCAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0luZGV4RXJyb3JgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0tleUVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgS2V5RXJyb3JgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0tleWJvYXJkSW50ZXJydXB0YCAgIHwgOmV4YzpgS2V5Ym9hcmRJbnRlcnJ1cHRgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX01lbW9yeUVycm9yYCAgICAgICAgIHwgOmV4YzpgTWVtb3J5RXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX05hbWVFcnJvcmAgICAgICAgICAgIHwgOmV4YzpgTmFtZUVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3JgIHwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX09TRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgT1NFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX092ZXJmbG93RXJyb3JgICAgICAgIHwgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1JlZmVyZW5jZUVycm9yYCAgICAgIHwgOmV4YzpgUmVmZXJlbmNlRXJyb3JgICAgICAgfCBcKDIpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVFcnJvcmAgICAgICAgIHwgOmV4YzpgUnVudGltZUVycm9yYCAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1N5bnRheEVycm9yYCAgICAgICAgIHwgOmV4YzpgU3ludGF4RXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUVycm9yYCAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUV4aXRgICAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXhpdGAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1R5cGVFcnJvcmAgICAgICAgICAgIHwgOmV4YzpgVHlwZUVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1ZhbHVlRXJyb3JgICAgICAgICAgIHwgOmV4YzpgVmFsdWVFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1dpbmRvd3NFcnJvcmAgICAgICAgIHwgOmV4YzpgV2luZG93c0Vycm9yYCAgICAgICAgfCBcKDMpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1plcm9EaXZpc2lvbkVycm9yYCAgIHwgOmV4YzpgWmVyb0RpdmlzaW9uRXJyb3JgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IEMgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBOYW1lICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCit8IDpjOmRhdGE6YFB5RXhjX0Jhc2VFeGNlcHRpb25gICAgICAgICAgICB8IDpleGM6YEJhc2VFeGNlcHRpb25gICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0V4Y2VwdGlvbmAgICAgICAgICAgICAgICB8IDpleGM6YEV4Y2VwdGlvbmAgICAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0FyaXRobWV0aWNFcnJvcmAgICAgICAgICB8IDpleGM6YEFyaXRobWV0aWNFcnJvcmAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0xvb2t1cEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YExvb2t1cEVycm9yYCAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Fzc2VydGlvbkVycm9yYCAgICAgICAgICB8IDpleGM6YEFzc2VydGlvbkVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0F0dHJpYnV0ZUVycm9yYCAgICAgICAgICB8IDpleGM6YEF0dHJpYnV0ZUVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Jsb2NraW5nSU9FcnJvcmAgICAgICAgICB8IDpleGM6YEJsb2NraW5nSU9FcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Jyb2tlblBpcGVFcnJvcmAgICAgICAgICB8IDpleGM6YEJyb2tlblBpcGVFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0NoaWxkUHJvY2Vzc0Vycm9yYCAgICAgICB8IDpleGM6YENoaWxkUHJvY2Vzc0Vycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25FcnJvcmAgICAgICAgICB8IDpleGM6YENvbm5lY3Rpb25FcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3JgICB8IDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgICB8IDpleGM6YENvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZXNldEVycm9yYCAgICB8IDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYCAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ZpbGVFeGlzdHNFcnJvcmAgICAgICAgICB8IDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yYCAgICAgICB8IDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0VPRkVycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YEVPRkVycm9yYCAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcmAgICAgICB8IDpleGM6YEZsb2F0aW5nUG9pbnRFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ltcG9ydEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YEltcG9ydEVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0luZGV4RXJyb3JgICAgICAgICAgICAgICB8IDpleGM6YEluZGV4RXJyb3JgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ludGVycnVwdGVkRXJyb3JgICAgICAgICB8IDpleGM6YEludGVycnVwdGVkRXJyb3JgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0lzQURpcmVjdG9yeUVycm9yYCAgICAgICB8IDpleGM6YElzQURpcmVjdG9yeUVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0tleUVycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YEtleUVycm9yYCAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0tleWJvYXJkSW50ZXJydXB0YCAgICAgICB8IDpleGM6YEtleWJvYXJkSW50ZXJydXB0YCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX01lbW9yeUVycm9yYCAgICAgICAgICAgICB8IDpleGM6YE1lbW9yeUVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05hbWVFcnJvcmAgICAgICAgICAgICAgICB8IDpleGM6YE5hbWVFcnJvcmAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcmAgICAgICB8IDpleGM6YE5vdEFEaXJlY3RvcnlFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3JgICAgICB8IDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX09TRXJyb3JgICAgICAgICAgICAgICAgICB8IDpleGM6YE9TRXJyb3JgICAgICAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX092ZXJmbG93RXJyb3JgICAgICAgICAgICB8IDpleGM6YE92ZXJmbG93RXJyb3JgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1Blcm1pc3Npb25FcnJvcmAgICAgICAgICB8IDpleGM6YFBlcm1pc3Npb25FcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAgICAgICB8IDpleGM6YFByb2Nlc3NMb29rdXBFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1JlZmVyZW5jZUVycm9yYCAgICAgICAgICB8IDpleGM6YFJlZmVyZW5jZUVycm9yYCAgICAgICAgICAgfCBcKDIpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFJ1bnRpbWVFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5bnRheEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YFN5bnRheEVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUVycm9yYCAgICAgICAgICAgICB8IDpleGM6YFN5c3RlbUVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1RpbWVvdXRFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFRpbWVvdXRFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUV4aXRgICAgICAgICAgICAgICB8IDpleGM6YFN5c3RlbUV4aXRgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1R5cGVFcnJvcmAgICAgICAgICAgICAgICB8IDpleGM6YFR5cGVFcnJvcmAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1ZhbHVlRXJyb3JgICAgICAgICAgICAgICB8IDpleGM6YFZhbHVlRXJyb3JgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1plcm9EaXZpc2lvbkVycm9yYCAgICAgICB8IDpleGM6YFplcm9EaXZpc2lvbkVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgOmM6ZGF0YTpgUHlFeGNfQmxvY2tpbmdJT0Vycm9yYCwgOmM6ZGF0YTpgUHlFeGNfQnJva2VuUGlwZUVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0NoaWxkUHJvY2Vzc0Vycm9yYCwgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZXNldEVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfRmlsZUV4aXN0c0Vycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19Jc0FEaXJlY3RvcnlFcnJvcmAsIDpjOmRhdGE6YFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19QZXJtaXNzaW9uRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3JgCisgICBhbmQgOmM6ZGF0YTpgUHlFeGNfVGltZW91dEVycm9yYCB3ZXJlIGludHJvZHVjZWQgZm9sbG93aW5nIDpwZXA6YDMxNTFgLgorCisKK1RoZXNlIGFyZSBjb21wYXRpYmlsaXR5IGFsaWFzZXMgdG8gOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmA6CisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IEMgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKK3wgOmM6ZGF0YTpgUHlFeGNfRW52aXJvbm1lbnRFcnJvcmAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19JT0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1dpbmRvd3NFcnJvcmAgICAgICAgIHwgXCgzKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZXNlIGFsaWFzZXMgdXNlZCB0byBiZSBzZXBhcmF0ZSBleGNlcHRpb24gdHlwZXMuCisKIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBQeUV4Y19CYXNlRXhjZXB0aW9uCkBAIC02NDksMjggKzc0Nyw0MiBAQAogICAgc2luZ2xlOiBQeUV4Y19Mb29rdXBFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19Bc3NlcnRpb25FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19BdHRyaWJ1dGVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19CbG9ja2luZ0lPRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQnJva2VuUGlwZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Nvbm5lY3Rpb25FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfRU9GRXJyb3IKLSAgIHNpbmdsZTogUHlFeGNfRW52aXJvbm1lbnRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19GaWxlRXhpc3RzRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yCi0gICBzaW5nbGU6IFB5RXhjX0lPRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfSW1wb3J0RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfSW5kZXhFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19JbnRlcnJ1cHRlZEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0lzQURpcmVjdG9yeUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0tleUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0tleWJvYXJkSW50ZXJydXB0CiAgICBzaW5nbGU6IFB5RXhjX01lbW9yeUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX05hbWVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19PU0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX092ZXJmbG93RXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfUGVybWlzc2lvbkVycm9yCisgICBzaW5nbGU6IFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19SZWZlcmVuY2VFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19SdW50aW1lRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfU3ludGF4RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfU3lzdGVtRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfU3lzdGVtRXhpdAorICAgc2luZ2xlOiBQeUV4Y19UaW1lb3V0RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfVHlwZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1ZhbHVlRXJyb3IKLSAgIHNpbmdsZTogUHlFeGNfV2luZG93c0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX1plcm9EaXZpc2lvbkVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Vudmlyb25tZW50RXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfSU9FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19XaW5kb3dzRXJyb3IKIAogTm90ZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9mdW5jdGlvbi5yc3QgYi9Eb2MvYy1hcGkvZnVuY3Rpb24ucnN0CmluZGV4IDMxODA1ZmQuLmFkOTgzMjIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9mdW5jdGlvbi5yc3QKKysrIGIvRG9jL2MtYXBpL2Z1bmN0aW9uLnJzdApAQCAtMzgsNiArMzgsMTYgQEAKICAgIG9iamVjdCwgdGhlIGFyZ3VtZW50IGRlZmF1bHRzIGFuZCBjbG9zdXJlIGFyZSBzZXQgdG8gKk5VTEwqLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqcXVhbG5hbWUpCisKKyAgIEFzIDpjOmZ1bmM6YFB5RnVuY3Rpb25fTmV3YCwgYnV0IGFsc28gYWxsb3dzIHRvIHNldCB0aGUgZnVuY3Rpb24gb2JqZWN0J3MKKyAgIGBgX19xdWFsbmFtZV9fYGAgYXR0cmlidXRlLiAgKnF1YWxuYW1lKiBzaG91bGQgYmUgYSB1bmljb2RlIG9iamVjdCBvciBOVUxMOworICAgaWYgTlVMTCwgdGhlIGBgX19xdWFsbmFtZV9fYGAgYXR0cmlidXRlIGlzIHNldCB0byB0aGUgc2FtZSB2YWx1ZSBhcyBpdHMKKyAgIGBgX19uYW1lX19gYCBhdHRyaWJ1dGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlGdW5jdGlvbl9HZXRDb2RlKFB5T2JqZWN0ICpvcCkKIAogICAgUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdCAqb3AqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2ltcG9ydC5yc3QgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdAppbmRleCBjZjQ4MzYzLi4yNzAxNTJlIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW1wb3J0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdApAQCAtMzAsMTMgKzMwLDEzIEBACiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jayhjb25zdCBjaGFyICpuYW1lKQogCi0gICBUaGlzIHZlcnNpb24gb2YgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYCBkb2VzIG5vdCBibG9jay4gSXQncyBpbnRlbmRlZAotICAgdG8gYmUgdXNlZCBpbiBDIGZ1bmN0aW9ucyB0aGF0IGltcG9ydCBvdGhlciBtb2R1bGVzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbi4KLSAgIFRoZSBpbXBvcnQgbWF5IGJsb2NrIGlmIGFub3RoZXIgdGhyZWFkIGhvbGRzIHRoZSBpbXBvcnQgbG9jay4gVGhlIGZ1bmN0aW9uCi0gICA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrYCBuZXZlciBibG9ja3MuIEl0IGZpcnN0IHRyaWVzIHRvIGZldGNoCi0gICB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMgYW5kIGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYAotICAgdW5sZXNzIHRoZSBsb2NrIGlzIGhlbGQsIGluIHdoaWNoIGNhc2UgdGhlIGZ1bmN0aW9uIHdpbGwgcmFpc2UgYW4KLSAgIDpleGM6YEltcG9ydEVycm9yYC4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgYSBkZXByZWNhdGVkIGFsaWFzIG9mIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZWAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gZmFpbCBpbW1lZGlhdGVseSB3aGVuIHRoZSBpbXBvcnQgbG9jayB3YXMgaGVsZAorICAgICAgYnkgYW5vdGhlciB0aHJlYWQuICBJbiBQeXRob24gMy4zIHRob3VnaCwgdGhlIGxvY2tpbmcgc2NoZW1lIHN3aXRjaGVkCisgICAgICB0byBwZXItbW9kdWxlIGxvY2tzIGZvciBtb3N0IHB1cnBvc2VzLCBzbyB0aGlzIGZ1bmN0aW9uJ3Mgc3BlY2lhbAorICAgICAgYmVoYXZpb3VyIGlzbid0IG5lZWRlZCBhbnltb3JlLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCkKQEAgLTQ0LDggKzQ0LDcgQEAKICAgIC4uIGluZGV4OjogYnVpbHRpbjogX19pbXBvcnRfXwogCiAgICBJbXBvcnQgYSBtb2R1bGUuICBUaGlzIGlzIGJlc3QgZGVzY3JpYmVkIGJ5IHJlZmVycmluZyB0byB0aGUgYnVpbHQtaW4gUHl0aG9uCi0gICBmdW5jdGlvbiA6ZnVuYzpgX19pbXBvcnRfX2AsIGFzIHRoZSBzdGFuZGFyZCA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24gY2FsbHMKLSAgIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkuCisgICBmdW5jdGlvbiA6ZnVuYzpgX19pbXBvcnRfX2AuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUgb3IgdG9wLWxldmVsCiAgICBwYWNrYWdlLCBvciAqTlVMTCogd2l0aCBhbiBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUuICBMaWtlIGZvcgpAQCAtNTcsNyArNTYsNyBAQAogICAgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKIAogICAgSW1wb3J0IGEgbW9kdWxlLiAgVGhpcyBpcyBiZXN0IGRlc2NyaWJlZCBieSByZWZlcnJpbmcgdG8gdGhlIGJ1aWx0LWluIFB5dGhvbgogICAgZnVuY3Rpb24gOmZ1bmM6YF9faW1wb3J0X19gLCBhcyB0aGUgc3RhbmRhcmQgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIGNhbGxzCkBAIC02OCw2ICs2NywxNiBAQAogICAgdGhlIHJldHVybiB2YWx1ZSB3aGVuIGEgc3VibW9kdWxlIG9mIGEgcGFja2FnZSB3YXMgcmVxdWVzdGVkIGlzIG5vcm1hbGx5IHRoZQogICAgdG9wLWxldmVsIHBhY2thZ2UsIHVubGVzcyBhIG5vbi1lbXB0eSAqZnJvbWxpc3QqIHdhcyBnaXZlbi4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmZyb21saXN0LCBpbnQgbGV2ZWwpCisKKyAgIFNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYW4KKyAgIFVURi04IGVuY29kZWQgc3RyaW5nIGluc3RlYWQgb2YgYSBVbmljb2RlIG9iamVjdC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIE5lZ2F0aXZlIHZhbHVlcyBmb3IgKmxldmVsKiBhcmUgbm8gbG9uZ2VyIGFjY2VwdGVkLgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydChQeU9iamVjdCAqbmFtZSkKIApAQCAtODYsNyArOTUsNyBAQAogICAgYW4gZXhjZXB0aW9uIHNldCBvbiBmYWlsdXJlICh0aGUgbW9kdWxlIHN0aWxsIGV4aXN0cyBpbiB0aGlzIGNhc2UpLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIAogICAgUmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gYSBtb2R1bGUgbmFtZS4gIFRoZSAqbmFtZSogYXJndW1lbnQKICAgIG1heSBiZSBvZiB0aGUgZm9ybSBgYHBhY2thZ2UubW9kdWxlYGAuIEZpcnN0IGNoZWNrIHRoZSBtb2R1bGVzIGRpY3Rpb25hcnkgaWYKQEAgLTEwMCw2ICsxMDksMTQgQEAKICAgICAgIG9yIG9uZSBvZiBpdHMgdmFyaWFudHMgdG8gaW1wb3J0IGEgbW9kdWxlLiAgUGFja2FnZSBzdHJ1Y3R1cmVzIGltcGxpZWQgYnkgYQogICAgICAgZG90dGVkIG5hbWUgZm9yICpuYW1lKiBhcmUgbm90IGNyZWF0ZWQgaWYgbm90IGFscmVhZHkgcHJlc2VudC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9BZGRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYSBVVEYtOAorICAgZW5jb2RlZCBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvKQogCkBAIC0xMzYsMjUgKzE1Myw0MyBAQAogICAgU2VlIGFsc28gOmM6ZnVuYzpgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcyhjaGFyICpuYW1lLCBQeU9iamVjdCAqY28sIGNoYXIgKnBhdGhuYW1lLCBjaGFyICpjcGF0aG5hbWUpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqY28sIFB5T2JqZWN0ICpwYXRobmFtZSwgUHlPYmplY3QgKmNwYXRobmFtZSkKIAogICAgTGlrZSA6YzpmdW5jOmBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4YCwgYnV0IHRoZSA6YXR0cjpgX19jYWNoZWRfX2AKICAgIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlIG9iamVjdCBpcyBzZXQgdG8gKmNwYXRobmFtZSogaWYgaXQgaXMKICAgIG5vbi1gYE5VTExgYC4gIE9mIHRoZSB0aHJlZSBmdW5jdGlvbnMsIHRoaXMgaXMgdGhlIHByZWZlcnJlZCBvbmUgdG8gdXNlLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcyhjaGFyICpuYW1lLCBQeU9iamVjdCAqY28sIGNoYXIgKnBhdGhuYW1lLCBjaGFyICpjcGF0aG5hbWUpCisKKyAgIExpa2UgOmM6ZnVuYzpgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3RgLCBidXQgKm5hbWUqLCAqcGF0aG5hbWUqIGFuZAorICAgKmNwYXRobmFtZSogYXJlIFVURi04IGVuY29kZWQgc3RyaW5ncy4gQXR0ZW1wdHMgYXJlIGFsc28gbWFkZSB0byBmaWd1cmUgb3V0CisgICB3aGF0IHRoZSB2YWx1ZSBmb3IgKnBhdGhuYW1lKiBzaG91bGQgYmUgZnJvbSAqY3BhdGhuYW1lKiBpZiB0aGUgZm9ybWVyIGlzCisgICBzZXQgdG8gYGBOVUxMYGAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVzZXMgOmZ1bmM6YGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCBpbiBjYWxjdWxhdGluZyB0aGUgc291cmNlIHBhdGggaWYKKyAgICAgIG9ubHkgdGhlIGJ5dGVjb2RlIHBhdGggaXMgcHJvdmlkZWQuCisKIAogLi4gYzpmdW5jdGlvbjo6IGxvbmcgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIoKQogCiAgICBSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgUHl0aG9uIGJ5dGVjb2RlIGZpbGVzIChhLmsuYS4gOmZpbGU6YC5weWNgIGFuZAogICAgOmZpbGU6YC5weW9gIGZpbGVzKS4gIFRoZSBtYWdpYyBudW1iZXIgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIGZpcnN0IGZvdXIgYnl0ZXMKLSAgIG9mIHRoZSBieXRlY29kZSBmaWxlLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIuCisgICBvZiB0aGUgYnl0ZWNvZGUgZmlsZSwgaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyLiBSZXR1cm5zIC0xIG9uIGVycm9yLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIHZhbHVlIG9mIC0xIHVwb24gZmFpbHVyZS4KIAogCiAuLiBjOmZ1bmN0aW9uOjogY29uc3QgY2hhciAqIFB5SW1wb3J0X0dldE1hZ2ljVGFnKCkKIAogICAgUmV0dXJuIHRoZSBtYWdpYyB0YWcgc3RyaW5nIGZvciA6cGVwOmAzMTQ3YCBmb3JtYXQgUHl0aG9uIGJ5dGVjb2RlIGZpbGUKLSAgIG5hbWVzLgorICAgbmFtZXMuICBLZWVwIGluIG1pbmQgdGhhdCB0aGUgdmFsdWUgYXQgYGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYGAgaXMKKyAgIGF1dGhvcml0YXRpdmUgYW5kIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhpcyBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTIwMCw3ICsyMzUsNyBAQAogICAgRm9yIGludGVybmFsIHVzZSBvbmx5LgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKGNoYXIgKm5hbWUpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIAogICAgTG9hZCBhIGZyb3plbiBtb2R1bGUgbmFtZWQgKm5hbWUqLiAgUmV0dXJuIGBgMWBgIGZvciBzdWNjZXNzLCBgYDBgYCBpZiB0aGUKICAgIG1vZHVsZSBpcyBub3QgZm91bmQsIGFuZCBgYC0xYGAgd2l0aCBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBpbml0aWFsaXphdGlvbgpAQCAtMjA4LDYgKzI0MywxNCBAQAogICAgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYC4gIChOb3RlIHRoZSBtaXNub21lciAtLS0gdGhpcyBmdW5jdGlvbiB3b3VsZAogICAgcmVsb2FkIHRoZSBtb2R1bGUgaWYgaXQgd2FzIGFscmVhZHkgaW1wb3J0ZWQuKQogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhCisgICBVVEYtOCBlbmNvZGVkIHN0cmluZyBpbnN0ZWFkIG9mIGEgVW5pY29kZSBvYmplY3QuCisKIAogLi4gYzp0eXBlOjogc3RydWN0IF9mcm96ZW4KIApAQCAtMjQ3LDEzICsyOTAsMTMgQEAKIAogICAgU3RydWN0dXJlIGRlc2NyaWJpbmcgYSBzaW5nbGUgZW50cnkgaW4gdGhlIGxpc3Qgb2YgYnVpbHQtaW4gbW9kdWxlcy4gIEVhY2ggb2YKICAgIHRoZXNlIHN0cnVjdHVyZXMgZ2l2ZXMgdGhlIG5hbWUgYW5kIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBhIG1vZHVsZSBidWlsdAotICAgaW50byB0aGUgaW50ZXJwcmV0ZXIuICBQcm9ncmFtcyB3aGljaCBlbWJlZCBQeXRob24gbWF5IHVzZSBhbiBhcnJheSBvZiB0aGVzZQotICAgc3RydWN0dXJlcyBpbiBjb25qdW5jdGlvbiB3aXRoIDpjOmZ1bmM6YFB5SW1wb3J0X0V4dGVuZEluaXR0YWJgIHRvIHByb3ZpZGUKLSAgIGFkZGl0aW9uYWwgYnVpbHQtaW4gbW9kdWxlcy4gIFRoZSBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbgotICAgOmZpbGU6YEluY2x1ZGUvaW1wb3J0LmhgIGFzOjoKKyAgIGludG8gdGhlIGludGVycHJldGVyLiAgVGhlIG5hbWUgaXMgYW4gQVNDSUkgZW5jb2RlZCBzdHJpbmcuICBQcm9ncmFtcyB3aGljaAorICAgZW1iZWQgUHl0aG9uIG1heSB1c2UgYW4gYXJyYXkgb2YgdGhlc2Ugc3RydWN0dXJlcyBpbiBjb25qdW5jdGlvbiB3aXRoCisgICA6YzpmdW5jOmBQeUltcG9ydF9FeHRlbmRJbml0dGFiYCB0byBwcm92aWRlIGFkZGl0aW9uYWwgYnVpbHQtaW4gbW9kdWxlcy4KKyAgIFRoZSBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiA6ZmlsZTpgSW5jbHVkZS9pbXBvcnQuaGAgYXM6OgogCiAgICAgICBzdHJ1Y3QgX2luaXR0YWIgewotICAgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgICAgY2hhciAqbmFtZTsgICAgICAgICAgICAgICAgIC8qIEFTQ0lJIGVuY29kZWQgc3RyaW5nICovCiAgICAgICAgICAgUHlPYmplY3QqICgqaW5pdGZ1bmMpKHZvaWQpOwogICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2luZGV4LnJzdCBiL0RvYy9jLWFwaS9pbmRleC5yc3QKaW5kZXggMTJhMWVjNy4uYTBjYjZlNSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2luZGV4LnJzdAorKysgYi9Eb2MvYy1hcGkvaW5kZXgucnN0CkBAIC0yNSwzICsyNSw0IEBACiAgICBpbml0LnJzdAogICAgbWVtb3J5LnJzdAogICAgb2JqaW1wbC5yc3QKKyAgIHN0YWJsZS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA3NTA3ZTNiLi45NWZmNGVlIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC02NDYsNyArNjQ2LDcgQEAKICAgIDpjOmZ1bmM6YFB5R0lMU3RhdGVfUmVsZWFzZWAgb24gdGhlIHNhbWUgdGhyZWFkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeVRocmVhZFN0YXRlIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkKKy4uIGM6ZnVuY3Rpb246OiBQeVRocmVhZFN0YXRlKiBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpCiAKICAgIEdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUgZm9yIHRoaXMgdGhyZWFkLiAgTWF5IHJldHVybiBgYE5VTExgYCBpZiBubwogICAgR0lMU3RhdGUgQVBJIGhhcyBiZWVuIHVzZWQgb24gdGhlIGN1cnJlbnQgdGhyZWFkLiAgTm90ZSB0aGF0IHRoZSBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xpc3QucnN0IGIvRG9jL2MtYXBpL2xpc3QucnN0CmluZGV4IGZlYjkwMTUuLjViMjYzYTcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9saXN0LnJzdAorKysgYi9Eb2MvYy1hcGkvbGlzdC5yc3QKQEAgLTE0MiwzICsxNDIsMTAgQEAKIAogICAgUmV0dXJuIGEgbmV3IHR1cGxlIG9iamVjdCBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiAqbGlzdCo7IGVxdWl2YWxlbnQgdG8KICAgIGBgdHVwbGUobGlzdClgYC4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TGlzdF9DbGVhckZyZWVMaXN0KCkKKworICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IGUyZjU4YWQuLjM2NWFiZDcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTEwMCw2ICsxMDAsMjAgQEAKICAgIHN0cmluZyBpcyBmaXJzdCBlbmNvZGVkIHRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZURlY2ltYWxgCiAgICBhbmQgdGhlbiBjb252ZXJ0ZWQgdXNpbmcgOmM6ZnVuYzpgUHlMb25nX0Zyb21TdHJpbmdgLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0YC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpCisKKyAgIENvbnZlcnQgYSBzZXF1ZW5jZSBvZiBVbmljb2RlIGRpZ2l0cyBpbiB0aGUgc3RyaW5nICp1KiB0byBhIFB5dGhvbiBpbnRlZ2VyCisgICB2YWx1ZS4gIFRoZSBVbmljb2RlIHN0cmluZyBpcyBmaXJzdCBlbmNvZGVkIHRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsYCBhbmQgdGhlbiBjb252ZXJ0ZWQgdXNpbmcKKyAgIDpjOmZ1bmM6YFB5TG9uZ19Gcm9tU3RyaW5nYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVZvaWRQdHIodm9pZCAqcCkKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0IGIvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CmluZGV4IDZiNDljZGYuLjVlNTA5NzcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKQEAgLTE3LDE2ICsxNywyMSBAQAogCiAgICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCBmcm9tIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIHRoZSBidWZmZXIgaW50ZXJmYWNlLgogICAgSWYgKm9iaiogc3VwcG9ydHMgd3JpdGFibGUgYnVmZmVyIGV4cG9ydHMsIHRoZSBtZW1vcnl2aWV3IG9iamVjdCB3aWxsIGJlCi0gICByZWFkYWJsZSBhbmQgd3JpdGFibGUsIG90aGVyd2lzZSBpdCB3aWxsIGJlIHJlYWQtb25seS4KKyAgIHJlYWQvd3JpdGUsIG90aGVyd2lzZSBpdCBtYXkgYmUgZWl0aGVyIHJlYWQtb25seSBvciByZWFkL3dyaXRlIGF0IHRoZQorICAgZGlzY3JldGlvbiBvZiB0aGUgZXhwb3J0ZXIuCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKKworICAgQ3JlYXRlIGEgbWVtb3J5dmlldyBvYmplY3QgdXNpbmcgKm1lbSogYXMgdGhlIHVuZGVybHlpbmcgYnVmZmVyLgorICAgKmZsYWdzKiBjYW4gYmUgb25lIG9mIDpjOm1hY3JvOmBQeUJVRl9SRUFEYCBvciA6YzptYWNybzpgUHlCVUZfV1JJVEVgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKnZpZXcpCiAKICAgIENyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IHdyYXBwaW5nIHRoZSBnaXZlbiBidWZmZXIgc3RydWN0dXJlICp2aWV3Ki4KLSAgIFRoZSBtZW1vcnl2aWV3IG9iamVjdCB0aGVuIG93bnMgdGhlIGJ1ZmZlciByZXByZXNlbnRlZCBieSAqdmlldyosIHdoaWNoCi0gICBtZWFucyB5b3Ugc2hvdWxkbid0IHRyeSB0byBjYWxsIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgIHlvdXJzZWxmOiBpdAotICAgd2lsbCBiZSBkb25lIG9uIGRlYWxsb2NhdGlvbiBvZiB0aGUgbWVtb3J5dmlldyBvYmplY3QuCi0KKyAgIEZvciBzaW1wbGUgYnl0ZSBidWZmZXJzLCA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeWAgaXMgdGhlIHByZWZlcnJlZAorICAgZnVuY3Rpb24uCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKm9iaiwgaW50IGJ1ZmZlcnR5cGUsIGNoYXIgb3JkZXIpCiAKQEAgLTQzLDEwICs0OCwxNiBAQAogICAgY3VycmVudGx5IGFsbG93ZWQgdG8gY3JlYXRlIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBtZW1vcnl2aWV3YC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfYnVmZmVyICpQeU1lbW9yeVZpZXdfR0VUX0JVRkZFUihQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IFB5X2J1ZmZlciAqUHlNZW1vcnlWaWV3X0dFVF9CVUZGRVIoUHlPYmplY3QgKm12aWV3KQogCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgc3RydWN0dXJlIHdyYXBwZWQgYnkgdGhlIGdpdmVuCi0gICBtZW1vcnl2aWV3IG9iamVjdC4gIFRoZSBvYmplY3QgKiptdXN0KiogYmUgYSBtZW1vcnl2aWV3IGluc3RhbmNlOwotICAgdGhpcyBtYWNybyBkb2Vzbid0IGNoZWNrIGl0cyB0eXBlLCB5b3UgbXVzdCBkbyBpdCB5b3Vyc2VsZiBvciB5b3UKLSAgIHdpbGwgcmlzayBjcmFzaGVzLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5dmlldydzIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyBidWZmZXIuCisgICAqbXZpZXcqICoqbXVzdCoqIGJlIGEgbWVtb3J5dmlldyBpbnN0YW5jZTsgdGhpcyBtYWNybyBkb2Vzbid0IGNoZWNrIGl0cyB0eXBlLAorICAgeW91IG11c3QgZG8gaXQgeW91cnNlbGYgb3IgeW91IHdpbGwgcmlzayBjcmFzaGVzLgorCisuLiBjOmZ1bmN0aW9uOjogUHlfYnVmZmVyICpQeU1lbW9yeVZpZXdfR0VUX0JBU0UoUHlPYmplY3QgKm12aWV3KQorCisgICBSZXR1cm4gZWl0aGVyIGEgcG9pbnRlciB0byB0aGUgZXhwb3J0aW5nIG9iamVjdCB0aGF0IHRoZSBtZW1vcnl2aWV3IGlzIGJhc2VkCisgICBvbiBvciAqTlVMTCogaWYgdGhlIG1lbW9yeXZpZXcgaGFzIGJlZW4gY3JlYXRlZCBieSBvbmUgb2YgdGhlIGZ1bmN0aW9ucworICAgOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnlgIG9yIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyYC4KKyAgICptdmlldyogKiptdXN0KiogYmUgYSBtZW1vcnl2aWV3IGluc3RhbmNlLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdCBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CmluZGV4IGZmZDY4ZTMuLjNiZTdmZTMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tb2R1bGUucnN0CisrKyBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICA6YzpkYXRhOmBQeU1vZHVsZV9UeXBlYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9OZXdPYmplY3QoUHlPYmplY3QgKm5hbWUpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCkBAIC00MCw2ICs0MCwxNCBAQAogICAgT25seSB0aGUgbW9kdWxlJ3MgOmF0dHI6YF9fZG9jX19gIGFuZCA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZXMgYXJlIGZpbGxlZCBpbjsKICAgIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X05ld09iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhbiBVVEYtOCBlbmNvZGVkCisgICBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqbW9kdWxlKQogCkBAIC01Miw3ICs2MCw3IEBACiAgICBtYW5pcHVsYXRlIGEgbW9kdWxlJ3MgOmF0dHI6YF9fZGljdF9fYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbW9kdWxlKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KFB5T2JqZWN0ICptb2R1bGUpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCkBAIC02MSwxNSArNjksMTMgQEAKICAgIFJldHVybiAqbW9kdWxlKidzIDphdHRyOmBfX25hbWVfX2AgdmFsdWUuICBJZiB0aGUgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgb25lLAogICAgb3IgaWYgaXQgaXMgbm90IGEgc3RyaW5nLCA6ZXhjOmBTeXN0ZW1FcnJvcmAgaXMgcmFpc2VkIGFuZCAqTlVMTCogaXMgcmV0dXJuZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKm1vZHVsZSkKIAotICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgYnV0IHJldHVybiB0aGUgZmlsZW5hbWUKLSAgIGVuY29kZWQgdG8gJ3V0Zi04Jy4KKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICptb2R1bGUpCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLSAgICAgIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lYCByYWlzZXMgOmM6dHlwZTpgVW5pY29kZUVuY29kZUVycm9yYCBvbgotICAgICAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLCB1c2UgOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3RgIGluc3RlYWQuCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldE5hbWVPYmplY3RgIGJ1dCByZXR1cm4gdGhlIG5hbWUgZW5jb2RlZCB0bworICAgYGAndXRmLTgnYGAuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqbW9kdWxlKQpAQCAtODEsMTEgKzg3LDIxIEBACiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAqbW9kdWxlKiB3YXMgbG9hZGVkIHVzaW5nICptb2R1bGUqJ3MKICAgIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlLiAgSWYgdGhpcyBpcyBub3QgZGVmaW5lZCwgb3IgaWYgaXQgaXMgbm90IGEKICAgIHVuaWNvZGUgc3RyaW5nLCByYWlzZSA6ZXhjOmBTeXN0ZW1FcnJvcmAgYW5kIHJldHVybiAqTlVMTCo7IG90aGVyd2lzZSByZXR1cm4KLSAgIGEgcmVmZXJlbmNlIHRvIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YC4KKyAgIGEgcmVmZXJlbmNlIHRvIGEgVW5pY29kZSBvYmplY3QuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU1vZHVsZV9HZXRGaWxlbmFtZShQeU9iamVjdCAqbW9kdWxlKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBidXQgcmV0dXJuIHRoZSBmaWxlbmFtZQorICAgZW5jb2RlZCB0byAndXRmLTgnLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4yCisgICAgICA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZWAgcmFpc2VzIDpjOnR5cGU6YFVuaWNvZGVFbmNvZGVFcnJvcmAgb24KKyAgICAgIHVuZW5jb2RhYmxlIGZpbGVuYW1lcywgdXNlIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBpbnN0ZWFkLgorCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1vZHVsZV9HZXRTdGF0ZShQeU9iamVjdCAqbW9kdWxlKQogCiAgICBSZXR1cm4gdGhlICJzdGF0ZSIgb2YgdGhlIG1vZHVsZSwgdGhhdCBpcywgYSBwb2ludGVyIHRvIHRoZSBibG9jayBvZiBtZW1vcnkKQEAgLTk3LDggKzExMywyOCBAQAogCiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSA6Yzp0eXBlOmBQeU1vZHVsZURlZmAgc3RydWN0IGZyb20gd2hpY2ggdGhlIG1vZHVsZSB3YXMKICAgIGNyZWF0ZWQsIG9yICpOVUxMKiBpZiB0aGUgbW9kdWxlIHdhc24ndCBjcmVhdGVkIHdpdGgKLSAgIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZWAuCisgICA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgLmkKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVN0YXRlX0ZpbmRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgUmV0dXJucyB0aGUgbW9kdWxlIG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gKmRlZiogZm9yIHRoZSBjdXJyZW50IGludGVycHJldGVyLgorICAgVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIG9iamVjdCBoYXMgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgd2l0aAorICAgOmM6ZnVuYzpgUHlTdGF0ZV9BZGRNb2R1bGVgIGJlZm9yZWhhbmQuIEluIGNhc2UgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdCBpcyBub3QKKyAgIGZvdW5kIG9yIGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgeWV0LCBpdCByZXR1cm5zIE5VTEwuCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9BZGRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZiwgUHlPYmplY3QgKm1vZHVsZSkKKworICAgQXR0YWNoZXMgdGhlIG1vZHVsZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuIFRoaXMgYWxsb3dzCisgICB0aGUgbW9kdWxlIG9iamVjdCB0byBiZSBhY2Nlc3NpYmxlIHZpYQorICAgOmM6ZnVuYzpgUHlTdGF0ZV9GaW5kTW9kdWxlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZiwgUHlPYmplY3QgKm1vZHVsZSkKKworICAgUmVtb3ZlcyB0aGUgbW9kdWxlIG9iamVjdCBjcmVhdGVkIGZyb20gKmRlZiogZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiBJbml0aWFsaXppbmcgQyBtb2R1bGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvb2JqZWN0LnJzdCBiL0RvYy9jLWFwaS9vYmplY3QucnN0CmluZGV4IGQwZDQ1YWQuLmQ4OTU1NDcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9vYmplY3QucnN0CisrKyBiL0RvYy9jLWFwaS9vYmplY3QucnN0CkBAIC02LDYgKzYsMTkgQEAKID09PT09PT09PT09PT09PQogCiAKKy4uIGM6dmFyOjogUHlPYmplY3QqIFB5X05vdEltcGxlbWVudGVkCisKKyAgIFRoZSBgYE5vdEltcGxlbWVudGVkYGAgc2luZ2xldG9uLCB1c2VkIHRvIHNpZ25hbCB0aGF0IGFuIG9wZXJhdGlvbiBpcworICAgbm90IGltcGxlbWVudGVkIGZvciB0aGUgZ2l2ZW4gdHlwZSBjb21iaW5hdGlvbi4KKworCisuLiBjOm1hY3JvOjogUHlfUkVUVVJOX05PVElNUExFTUVOVEVECisKKyAgIFByb3Blcmx5IGhhbmRsZSByZXR1cm5pbmcgOmM6ZGF0YTpgUHlfTm90SW1wbGVtZW50ZWRgIGZyb20gd2l0aGluIGEgQworICAgZnVuY3Rpb24gKHRoYXQgaXMsIGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIE5vdEltcGxlbWVudGVkIGFuZAorICAgcmV0dXJuIGl0KS4KKworCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICpvLCBGSUxFICpmcCwgaW50IGZsYWdzKQogCiAgICBQcmludCBhbiBvYmplY3QgKm8qLCBvbiBmaWxlICpmcCouICBSZXR1cm5zIGBgLTFgYCBvbiBlcnJvci4gIFRoZSBmbGFncyBhcmd1bWVudApAQCAtODgsNiArMTAxLDIyIEBACiAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gc3RhdGVtZW50IGBgZGVsIG8uYXR0cl9uYW1lYGAuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfR2VuZXJpY0dldERpY3QoUHlPYmplY3QgKm8sIHZvaWQgKmNvbnRleHQpCisKKyAgIEEgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGdldHRlciBvZiBhIGBgX19kaWN0X19gYCBkZXNjcmlwdG9yLiBJdAorICAgY3JlYXRlcyB0aGUgZGljdGlvbmFyeSBpZiBuZWNlc3NhcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvLCB2b2lkICpjb250ZXh0KQorCisgICBBIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvci4gVGhpcworICAgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgYWxsb3cgdGhlIGRpY3Rpb25hcnkgdG8gYmUgZGVsZXRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9iamVjdF9SaWNoQ29tcGFyZShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMiwgaW50IG9waWQpCiAKICAgIENvbXBhcmUgdGhlIHZhbHVlcyBvZiAqbzEqIGFuZCAqbzIqIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5ICpvcGlkKiwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zZXQucnN0IGIvRG9jL2MtYXBpL3NldC5yc3QKaW5kZXggNjZiNDdjNC4uNWYwZWY5MCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3NldC5yc3QKKysrIGIvRG9jL2MtYXBpL3NldC5yc3QKQEAgLTE1NywzICsxNTcsMTAgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTZXRfQ2xlYXIoUHlPYmplY3QgKnNldCkKIAogICAgRW1wdHkgYW4gZXhpc3Rpbmcgc2V0IG9mIGFsbCBlbGVtZW50cy4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U2V0X0NsZWFyRnJlZUxpc3QoKQorCisgICBDbGVhciB0aGUgZnJlZSBsaXN0LiBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBmcmVlZCBpdGVtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3RhYmxlLnJzdCBiL0RvYy9jLWFwaS9zdGFibGUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODhjMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvYy1hcGkvc3RhYmxlLnJzdApAQCAtMCwwICsxLDM5IEBACisuLiBoaWdobGlnaHRsYW5nOjogYworCisuLiBfc3RhYmxlOgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitTdGFibGUgQXBwbGljdGlvbiBCaW5hcnkgSW50ZXJmYWNlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RyYWRpdGlvbmFsbHksIHRoZSBDIEFQSSBvZiBQeXRob24gd2lsbCBjaGFuZ2Ugd2l0aCBldmVyeSByZWxlYXNlLgorTW9zdCBjaGFuZ2VzIHdpbGwgYmUgc291cmNlLWNvbXBhdGlibGUsIHR5cGljYWxseSBieSBvbmx5IGFkZGluZyBBUEksCityYXRoZXIgdGhhbiBjaGFuZ2luZyBleGlzdGluZyBBUEkgb3IgcmVtb3ZpbmcgQVBJIChhbHRob3VnaCBzb21lCitpbnRlcmZhY2VzIGRvIGdldCByZW1vdmVkIGFmdGVyIGJlaW5nIGRlcHJlY2F0ZWQgZmlyc3QpLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQVBJIGNvbXBhdGliaWxpdHkgZG9lcyBub3QgZXh0ZW5kIHRvIGJpbmFyeQorY29tcGF0aWJpbGl0eSAodGhlIEFCSSkuIFRoZSByZWFzb24gaXMgcHJpbWFyaWx5IHRoZSBldm9sdXRpb24gb2YKK3N0cnVjdCBkZWZpbml0aW9ucywgd2hlcmUgYWRkaXRpb24gb2YgYSBuZXcgZmllbGQsIG9yIGNoYW5naW5nCit0aGUgdHlwZSBvZiBhIGZpZWxkLCBtaWdodCBub3QgYnJlYWsgdGhlIEFQSSwgYnV0IGNhbiBicmVhayB0aGUgQUJJLgorQXMgYSBjb25zZXF1ZW5jZSwgZXh0ZW5zaW9uIG1vZHVsZXMgbmVlZCB0byBiZSByZWNvbXBpbGVkIGZvcgorZXZlcnkgUHl0aG9uIHJlbGVhc2UgKGFsdGhvdWdoIGFuIGV4Y2VwdGlvbiBpcyBwb3NzaWJsZSBvbiBVbml4Cit3aGVuIG5vbmUgb2YgdGhlIGFmZmVjdGVkIGludGVyZmFjZXMgYXJlIHVzZWQpLiBJbiBhZGRpdGlvbiwgb24KK1dpbmRvd3MsIGV4dGVuc2lvbiBtb2R1bGVzIGxpbmsgd2l0aCBhIHNwZWNpZmljIHB5dGhvblhZLmRsbCBhbmQKK25lZWQgdG8gYmUgcmVjb21waWxlZCB0byBsaW5rIHdpdGggYSBuZXdlciBvbmUuCisKK1NpbmNlIFB5dGhvbiAzLjIsIGEgc3Vic2V0IG9mIHRoZSBBUEkgaGFzIGJlZW4gZGVjbGFyZWQgdG8gZ3VhcmFudGVlCithIHN0YWJsZSBBQkkuIEV4dGVuc2lvbiBtb2R1bGVzIHdpc2hpbmcgdG8gdXNlIHRoaXMgQVBJIG5lZWQgdG8gZGVmaW5lCitQeV9MSU1JVEVEX0FQSS4gQSBudW1iZXIgb2YgaW50ZXJwcmV0ZXIgZGV0YWlscyB0aGVuIGJlY29tZSBoaWRkZW4KK2Zyb20gdGhlIGV4dGVuc2lvbiBtb2R1bGU7IGluIHJldHVybiwgYSBtb2R1bGUgaXMgYnVpbHQgdGhhdCB3b3Jrcworb24gYW55IDMueCB2ZXJzaW9uICh4Pj0yKSB3aXRob3V0IHJlY29tcGlsYXRpb24uIEluIHNvbWUgY2FzZXMsIHRoZQorc3RhYmxlIEFCSSBuZWVkcyB0byBiZSBleHRlbmRlZCB3aXRoIG5ldyBmdW5jdGlvbnMuIEV4dGVuc2lvbnMgbW9kdWxlcword2lzaGluZyB0byB1c2UgdGhlc2UgbmV3IEFQSXMgbmVlZCB0byBzZXQgUHlfTElNSVRFRF9BUEkgdG8gdGhlCitQWV9WRVJTSU9OX0hFWCB2YWx1ZSBvZiB0aGUgbWluaW11bSBQeXRob24gdmVyc2lvbiB0aGV5IHdhbnQgdG8KK3N1cHBvcnQgKGUuZy4gMHgwMzAzMDAwMCBmb3IgUHl0aG9uIDMuMykuIFN1Y2ggbW9kdWxlcyB3aWxsIHdvcmsKK29uIGFsbCBzdWJzZXF1ZW50IFB5dGhvbiByZWxlYXNlcywgYnV0IGZhaWwgdG8gbG9hZCAoYmVjYXVzZSBvZgorbWlzc2luZyBzeW1ib2xzKSBvbiB0aGUgb2xkZXIgcmVsZWFzZXMuCisKK0FzIG9mIFB5dGhvbiAzLjIsIHRoZSBzZXQgb2YgZnVuY3Rpb25zIGF2YWlsYWJsZSB0byB0aGUgbGltaXRlZCBBUEkKK2lzIGRvY3VtZW50ZWQgaW4gUEVQIDM4NC4KKworLi4gWFhYIGNvcHkgZXhhY3QgbGlzdCBoZXJlPyBJbnRvIGVhY2ggZnVuY3Rpb25zIGRlZmluaXRpb24/CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZS5yc3QgYi9Eb2MvYy1hcGkvdHlwZS5yc3QKaW5kZXggYjMzODZlYS4uNDRjNzMxYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGUucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlLnJzdApAQCAtNTEsMTMgKzUxLDEzIEBACiAgICBtb2RpZmljYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMgb3IgYmFzZSBjbGFzc2VzIG9mIHRoZSB0eXBlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0hhc0ZlYXR1cmUoUHlPYmplY3QgKm8sIGludCBmZWF0dXJlKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeVR5cGVfSGFzRmVhdHVyZShQeVR5cGVPYmplY3QgKm8sIGludCBmZWF0dXJlKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgdHlwZSBvYmplY3QgKm8qIHNldHMgdGhlIGZlYXR1cmUgKmZlYXR1cmUqLiAgVHlwZSBmZWF0dXJlcwogICAgYXJlIGRlbm90ZWQgYnkgc2luZ2xlIGJpdCBmbGFncy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9JU19HQyhQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0lTX0dDKFB5VHlwZU9iamVjdCAqbykKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlIHR5cGUgb2JqZWN0IGluY2x1ZGVzIHN1cHBvcnQgZm9yIHRoZSBjeWNsZSBkZXRlY3RvcjsgdGhpcwogICAgdGVzdHMgdGhlIHR5cGUgZmxhZyA6Y29uc3Q6YFB5X1RQRkxBR1NfSEFWRV9HQ2AuCkBAIC03MCwxMyArNzAsMTQgQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfR2VuZXJpY0FsbG9jKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBuaXRlbXMpCiAKLSAgIFhYWDogRG9jdW1lbnQuCi0KKyAgIEdlbmVyaWMgaGFuZGxlciBmb3IgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCBvZiBhIHR5cGUgb2JqZWN0LiAgVXNlCisgICBQeXRob24ncyBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0aW9uIG1lY2hhbmlzbSB0byBhbGxvY2F0ZSBhIG5ldyBpbnN0YW5jZSBhbmQKKyAgIGluaXRpYWxpemUgYWxsIGl0cyBjb250ZW50cyB0byAqTlVMTCouCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0dlbmVyaWNOZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiAKLSAgIFhYWDogRG9jdW1lbnQuCi0KKyAgIEdlbmVyaWMgaGFuZGxlciBmb3IgdGhlIDphdHRyOmB0cF9uZXdgIHNsb3Qgb2YgYSB0eXBlIG9iamVjdC4gIENyZWF0ZSBhCisgICBuZXcgaW5zdGFuY2UgdXNpbmcgdGhlIHR5cGUncyA6YXR0cjpgdHBfYWxsb2NgIHNsb3QuCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX1JlYWR5KFB5VHlwZU9iamVjdCAqdHlwZSkKIApAQCAtODQsMyArODUsMTUgQEAKICAgIHRoZWlyIGluaXRpYWxpemF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYWRkaW5nIGluaGVyaXRlZCBzbG90cwogICAgZnJvbSBhIHR5cGUncyBiYXNlIGNsYXNzLiAgUmV0dXJuIGBgMGBgIG9uIHN1Y2Nlc3MsIG9yIHJldHVybiBgYC0xYGAgYW5kIHNldHMgYW4KICAgIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMgKnNwZWMpCisKKyAgIENyZWF0ZXMgYW5kIHJldHVybnMgYSBoZWFwIHR5cGUgb2JqZWN0IGZyb20gdGhlICpzcGVjKiBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcyhQeVR5cGVfU3BlYyAqc3BlYywgUHlPYmplY3QgKmJhc2VzKQorCisgICBDcmVhdGVzIGFuZCByZXR1cm5zIGEgaGVhcCB0eXBlIG9iamVjdCBmcm9tIHRoZSAqc3BlYyouIEluIGFkZGl0aW9uIHRvIHRoYXQsCisgICB0aGUgY3JlYXRlZCBoZWFwIHR5cGUgY29udGFpbnMgYWxsIHR5cGVzIGNvbnRhaW5lZCBieSB0aGUgKmJhc2VzKiB0dXBsZSBhcyBiYXNlCisgICB0eXBlcy4gVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byByZWZlcmVuY2Ugb3RoZXIgaGVhcCB0eXBlcyBhcyBiYXNlIHR5cGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS90eXBlb2JqLnJzdCBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdAppbmRleCA2OGNhOWFkLi5lYTFhMGFkIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKKysrIGIvRG9jL2MtYXBpL3R5cGVvYmoucnN0CkBAIC0xMTk4LDQ2ICsxMTk4LDg4IEBACiAKIC4uIHNlY3Rpb25hdXRob3I6OiBHcmVnIEouIFN0ZWluIDxncmVnQGx5cmEub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IEJlbmphbWluIFBldGVyc29uCi0KLQotVGhlIDpyZWY6YGJ1ZmZlciBpbnRlcmZhY2UgPGJ1ZmZlcm9iamVjdHM+YCBleHBvcnRzIGEgbW9kZWwgd2hlcmUgYW4gb2JqZWN0IGNhbiBleHBvc2UgaXRzIGludGVybmFsCi1kYXRhLgotCi1JZiBhbiBvYmplY3QgZG9lcyBub3QgZXhwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlLCB0aGVuIGl0cyA6YXR0cjpgdHBfYXNfYnVmZmVyYAotbWVtYmVyIGluIHRoZSA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHN0cnVjdHVyZSBzaG91bGQgYmUgKk5VTEwqLiAgT3RoZXJ3aXNlLCB0aGUKLTphdHRyOmB0cF9hc19idWZmZXJgIHdpbGwgcG9pbnQgdG8gYSA6Yzp0eXBlOmBQeUJ1ZmZlclByb2NzYCBzdHJ1Y3R1cmUuCi0KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGVmYW4gS3JhaAogCiAuLiBjOnR5cGU6OiBQeUJ1ZmZlclByb2NzCiAKLSAgIFN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIHdoaWNoIGRlZmluZSBhbiBpbXBsZW1lbnRhdGlvbiBvZgotICAgdGhlIGJ1ZmZlciBwcm90b2NvbC4KKyAgIFRoaXMgc3RydWN0dXJlIGhvbGRzIHBvaW50ZXJzIHRvIHRoZSBmdW5jdGlvbnMgcmVxdWlyZWQgYnkgdGhlCisgICA6cmVmOmBCdWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YC4gVGhlIHByb3RvY29sIGRlZmluZXMgaG93CisgICBhbiBleHBvcnRlciBvYmplY3QgY2FuIGV4cG9zZSBpdHMgaW50ZXJuYWwgZGF0YSB0byBjb25zdW1lciBvYmplY3RzLgogCi0gICAuLiBjOm1lbWJlcjo6IGdldGJ1ZmZlcnByb2MgYmZfZ2V0YnVmZmVyCisuLiBjOm1lbWJlcjo6IGdldGJ1ZmZlcnByb2MgUHlCdWZmZXJQcm9jcy5iZl9nZXRidWZmZXIKIAotICAgICAgVGhpcyBzaG91bGQgZmlsbCBhIDpjOnR5cGU6YFB5X2J1ZmZlcmAgd2l0aCB0aGUgbmVjZXNzYXJ5IGRhdGEgZm9yCi0gICAgICBleHBvcnRpbmcgdGhlIHR5cGUuICBUaGUgc2lnbmF0dXJlIG9mIDpkYXRhOmBnZXRidWZmZXJwcm9jYCBpcyBgYGludAotICAgICAgKFB5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKWBgLiAgKm9iaiogaXMgdGhlIG9iamVjdCB0bwotICAgICAgZXhwb3J0LCAqdmlldyogaXMgdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0IHRvIGZpbGwsIGFuZCAqZmxhZ3MqIGdpdmVzCi0gICAgICB0aGUgY29uZGl0aW9ucyB0aGUgY2FsbGVyIHdhbnRzIHRoZSBtZW1vcnkgdW5kZXIuICAoU2VlCi0gICAgICA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIGZvciBhbGwgZmxhZ3MuKSAgOmM6bWVtYmVyOmBiZl9nZXRidWZmZXJgIGlzCi0gICAgICByZXNwb25zaWJsZSBmb3IgZmlsbGluZyAqdmlldyogd2l0aCB0aGUgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24uCi0gICAgICAoOmM6ZnVuYzpgUHlCdWZmZXJfRmlsbFZpZXdgIGNhbiBiZSB1c2VkIGluIHNpbXBsZSBjYXNlcy4pICBTZWUKLSAgICAgIDpjOnR5cGU6YFB5X2J1ZmZlcmBccyBkb2NzIGZvciB3aGF0IG5lZWRzIHRvIGJlIGZpbGxlZCBpbi4KKyAgIFRoZSBzaWduYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiBpczo6CisKKyAgICAgICBpbnQgKFB5T2JqZWN0ICpleHBvcnRlciwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpOworCisgICBIYW5kbGUgYSByZXF1ZXN0IHRvICpleHBvcnRlciogdG8gZmlsbCBpbiAqdmlldyogYXMgc3BlY2lmaWVkIGJ5ICpmbGFncyouCisgICBFeGNlcHQgZm9yIHBvaW50ICgzKSwgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBNVVNUIHRha2UgdGhlc2UKKyAgIHN0ZXBzOgorCisgICAoMSkgQ2hlY2sgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIG1ldC4gSWYgbm90LCByYWlzZSA6YzpkYXRhOmBQeUV4Y19CdWZmZXJFcnJvcmAsCisgICAgICAgc2V0IDpjOmRhdGE6YHZpZXctPm9iamAgdG8gKk5VTEwqIGFuZCByZXR1cm4gLTEuCisKKyAgICgyKSBGaWxsIGluIHRoZSByZXF1ZXN0ZWQgZmllbGRzLgorCisgICAoMykgSW5jcmVtZW50IGFuIGludGVybmFsIGNvdW50ZXIgZm9yIHRoZSBudW1iZXIgb2YgZXhwb3J0cy4KKworICAgKDQpIFNldCA6YzpkYXRhOmB2aWV3LT5vYmpgIHRvICpleHBvcnRlciogYW5kIGluY3JlbWVudCA6YzpkYXRhOmB2aWV3LT5vYmpgLgorCisgICAoNSkgUmV0dXJuIDAuCisKKyAgIElmICpleHBvcnRlciogaXMgcGFydCBvZiBhIGNoYWluIG9yIHRyZWUgb2YgYnVmZmVyIHByb3ZpZGVycywgdHdvIG1haW4KKyAgIHNjaGVtZXMgY2FuIGJlIHVzZWQ6CisKKyAgICogUmUtZXhwb3J0OiBFYWNoIG1lbWJlciBvZiB0aGUgdHJlZSBhY3RzIGFzIHRoZSBleHBvcnRpbmcgb2JqZWN0IGFuZAorICAgICBzZXRzIDpjOmRhdGE6YHZpZXctPm9iamAgdG8gYSBuZXcgcmVmZXJlbmNlIHRvIGl0c2VsZi4KKworICAgKiBSZWRpcmVjdDogVGhlIGJ1ZmZlciByZXF1ZXN0IGlzIHJlZGlyZWN0ZWQgdG8gdGhlIHJvb3Qgb2JqZWN0IG9mIHRoZQorICAgICB0cmVlLiBIZXJlLCA6YzpkYXRhOmB2aWV3LT5vYmpgIHdpbGwgYmUgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSByb290CisgICAgIG9iamVjdC4KKworICAgVGhlIGluZGl2aWR1YWwgZmllbGRzIG9mICp2aWV3KiBhcmUgZGVzY3JpYmVkIGluIHNlY3Rpb24KKyAgIDpyZWY6YEJ1ZmZlciBzdHJ1Y3R1cmUgPGJ1ZmZlci1zdHJ1Y3R1cmU+YCwgdGhlIHJ1bGVzIGhvdyBhbiBleHBvcnRlcgorICAgbXVzdCByZWFjdCB0byBzcGVjaWZpYyByZXF1ZXN0cyBhcmUgaW4gc2VjdGlvbgorICAgOnJlZjpgQnVmZmVyIHJlcXVlc3QgdHlwZXMgPGJ1ZmZlci1yZXF1ZXN0LXR5cGVzPmAuCisKKyAgIEFsbCBtZW1vcnkgcG9pbnRlZCB0byBpbiB0aGUgOmM6dHlwZTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgYmVsb25ncyB0bworICAgdGhlIGV4cG9ydGVyIGFuZCBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGVyZSBhcmUgbm8gY29uc3VtZXJzIGxlZnQuCisgICA6YzptZW1iZXI6YH5QeV9idWZmZXIuZm9ybWF0YCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCwKKyAgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN1Ym9mZnNldHNgCisgICBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmludGVybmFsYAorICAgYXJlIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICA6YzpmdW5jOmBQeUJ1ZmZlcl9GaWxsSW5mb2AgcHJvdmlkZXMgYW4gZWFzeSB3YXkgb2YgZXhwb3NpbmcgYSBzaW1wbGUKKyAgIGJ5dGVzIGJ1ZmZlciB3aGlsZSBkZWFsaW5nIGNvcnJlY3RseSB3aXRoIGFsbCByZXF1ZXN0IHR5cGVzLgorCisgICA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBjb25zdW1lciB0aGF0CisgICB3cmFwcyB0aGlzIGZ1bmN0aW9uLgorCisuLiBjOm1lbWJlcjo6IHJlbGVhc2VidWZmZXJwcm9jIFB5QnVmZmVyUHJvY3MuYmZfcmVsZWFzZWJ1ZmZlcgorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICAgdm9pZCAoUHlPYmplY3QgKmV4cG9ydGVyLCBQeV9idWZmZXIgKnZpZXcpOworCisgICBIYW5kbGUgYSByZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHJlc291cmNlcyBvZiB0aGUgYnVmZmVyLiBJZiBubyByZXNvdXJjZXMKKyAgIG5lZWQgdG8gYmUgcmVsZWFzZWQsIDpjOm1lbWJlcjpgUHlCdWZmZXJQcm9jcy5iZl9yZWxlYXNlYnVmZmVyYCBtYXkgYmUKKyAgICpOVUxMKi4gT3RoZXJ3aXNlLCBhIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlCisgICB0aGVzZSBvcHRpb25hbCBzdGVwczoKKworICAgKDEpIERlY3JlbWVudCBhbiBpbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIGV4cG9ydHMuCisKKyAgICgyKSBJZiB0aGUgY291bnRlciBpcyAwLCBmcmVlIGFsbCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoICp2aWV3Ki4KKworICAgVGhlIGV4cG9ydGVyIE1VU1QgdXNlIHRoZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuaW50ZXJuYWxgIGZpZWxkIHRvIGtlZXAKKyAgIHRyYWNrIG9mIGJ1ZmZlci1zcGVjaWZpYyByZXNvdXJjZXMuIFRoaXMgZmllbGQgaXMgZ3VhcmFudGVlZCB0byByZW1haW4KKyAgIGNvbnN0YW50LCB3aGlsZSBhIGNvbnN1bWVyIE1BWSBwYXNzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYnVmZmVyIGFzIHRoZQorICAgKnZpZXcqIGFyZ3VtZW50LgogCiAKLSAgIC4uIGM6bWVtYmVyOjogcmVsZWFzZWJ1ZmZlcnByb2MgYmZfcmVsZWFzZWJ1ZmZlcgorICAgVGhpcyBmdW5jdGlvbiBNVVNUIE5PVCBkZWNyZW1lbnQgOmM6ZGF0YTpgdmlldy0+b2JqYCwgc2luY2UgdGhhdCBpcworICAgZG9uZSBhdXRvbWF0aWNhbGx5IGluIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgICh0aGlzIHNjaGVtZSBpcworICAgdXNlZnVsIGZvciBicmVha2luZyByZWZlcmVuY2UgY3ljbGVzKS4KIAotICAgICAgVGhpcyBzaG91bGQgcmVsZWFzZSB0aGUgcmVzb3VyY2VzIG9mIHRoZSBidWZmZXIuICBUaGUgc2lnbmF0dXJlIG9mCi0gICAgICA6YzpkYXRhOmByZWxlYXNlYnVmZmVycHJvY2AgaXMgYGB2b2lkIChQeU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcpYGAuCi0gICAgICBJZiB0aGUgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaXMgbm90IHByb3ZpZGVkIChpLmUuIGl0IGlzCi0gICAgICAqTlVMTCopLCB0aGVuIGl0IGRvZXMgbm90IGV2ZXIgbmVlZCB0byBiZSBjYWxsZWQuCiAKLSAgICAgIFRoZSBleHBvcnRlciBvZiB0aGUgYnVmZmVyIGludGVyZmFjZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IGFueSBtZW1vcnkKLSAgICAgIHBvaW50ZWQgdG8gaW4gdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIHJlbWFpbnMgdmFsaWQgdW50aWwKLSAgICAgIHJlbGVhc2VidWZmZXIgaXMgY2FsbGVkLiAgRXhwb3J0ZXJzIHdpbGwgbmVlZCB0byBkZWZpbmUgYQotICAgICAgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaWYgdGhleSBjYW4gcmUtYWxsb2NhdGUgdGhlaXIgbWVtb3J5LAotICAgICAgc3RyaWRlcywgc2hhcGUsIHN1Ym9mZnNldHMsIG9yIGZvcm1hdCB2YXJpYWJsZXMgd2hpY2ggdGhleSBtaWdodCBzaGFyZQotICAgICAgdGhyb3VnaCB0aGUgc3RydWN0IGJ1ZmZlcmluZm8uCi0KLSAgICAgIFNlZSA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYC4KKyAgIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBjb25zdW1lciB0aGF0CisgICB3cmFwcyB0aGlzIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGQxYjU3ZDkuLjJhYzUxZGYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTYsMzggKzYsNzIgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIHNlY3Rpb25hdXRob3I6OiBNYXJjLUFuZHLDqSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogR2VvcmcgQnJhbmRsIDxnZW9yZ0BweXRob24ub3JnPgogCiBVbmljb2RlIE9iamVjdHMKIF5eXl5eXl5eXl5eXl5eXgogCitTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzkzYCBpbiBQeXRob24gMy4zLCBVbmljb2RlIG9iamVjdHMgaW50ZXJuYWxseQordXNlIGEgdmFyaWV0eSBvZiByZXByZXNlbnRhdGlvbnMsIGluIG9yZGVyIHRvIGFsbG93IGhhbmRsaW5nIHRoZSBjb21wbGV0ZSByYW5nZQorb2YgVW5pY29kZSBjaGFyYWN0ZXJzIHdoaWxlIHN0YXlpbmcgbWVtb3J5IGVmZmljaWVudC4gIFRoZXJlIGFyZSBzcGVjaWFsIGNhc2VzCitmb3Igc3RyaW5ncyB3aGVyZSBhbGwgY29kZSBwb2ludHMgYXJlIGJlbG93IDEyOCwgMjU2LCBvciA2NTUzNjsgb3RoZXJ3aXNlLCBjb2RlCitwb2ludHMgbXVzdCBiZSBiZWxvdyAxMTE0MTEyICh3aGljaCBpcyB0aGUgZnVsbCBVbmljb2RlIHJhbmdlKS4KKworOmM6dHlwZTpgUHlfVU5JQ09ERSpgIGFuZCBVVEYtOCByZXByZXNlbnRhdGlvbnMgYXJlIGNyZWF0ZWQgb24gZGVtYW5kIGFuZCBjYWNoZWQKK2luIHRoZSBVbmljb2RlIG9iamVjdC4gIFRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgcmVwcmVzZW50YXRpb24gaXMgZGVwcmVjYXRlZAorYW5kIGluZWZmaWNpZW50OyBpdCBzaG91bGQgYmUgYXZvaWRlZCBpbiBwZXJmb3JtYW5jZS0gb3IgbWVtb3J5LXNlbnNpdGl2ZQorc2l0dWF0aW9ucy4KKworRHVlIHRvIHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gdGhlIG9sZCBBUElzIGFuZCB0aGUgbmV3IEFQSXMsIHVuaWNvZGUgb2JqZWN0cworY2FuIGludGVybmFsbHkgYmUgaW4gdHdvIHN0YXRlcyBkZXBlbmRpbmcgb24gaG93IHRoZXkgd2VyZSBjcmVhdGVkOgorCisqICJjYW5vbmljYWwiIHVuaWNvZGUgb2JqZWN0cyBhcmUgYWxsIG9iamVjdHMgY3JlYXRlZCBieSBhIG5vbi1kZXByZWNhdGVkCisgIHVuaWNvZGUgQVBJLiAgVGhleSB1c2UgdGhlIG1vc3QgZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIGFsbG93ZWQgYnkgdGhlCisgIGltcGxlbWVudGF0aW9uLgorCisqICJsZWdhY3kiIHVuaWNvZGUgb2JqZWN0cyBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoIG9uZSBvZiB0aGUgZGVwcmVjYXRlZAorICBBUElzICh0eXBpY2FsbHkgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYCkgYW5kIG9ubHkgYmVhciB0aGUKKyAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uOyB5b3Ugd2lsbCBoYXZlIHRvIGNhbGwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBvbiB0aGVtIGJlZm9yZSBjYWxsaW5nIGFueSBvdGhlciBBUEkuCisKKwogVW5pY29kZSBUeXBlCiAiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSBiYXNpYyBVbmljb2RlIG9iamVjdCB0eXBlcyB1c2VkIGZvciB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBpbgogUHl0aG9uOgogCisuLiBjOnR5cGU6OiBQeV9VQ1M0CisgICAgICAgICAgICBQeV9VQ1MyCisgICAgICAgICAgICBQeV9VQ1MxCisKKyAgIFRoZXNlIHR5cGVzIGFyZSB0eXBlZGVmcyBmb3IgdW5zaWduZWQgaW50ZWdlciB0eXBlcyB3aWRlIGVub3VnaCB0byBjb250YWluCisgICBjaGFyYWN0ZXJzIG9mIDMyIGJpdHMsIDE2IGJpdHMgYW5kIDggYml0cywgcmVzcGVjdGl2ZWx5LiAgV2hlbiBkZWFsaW5nIHdpdGgKKyAgIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlcnMsIHVzZSA6Yzp0eXBlOmBQeV9VQ1M0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gYzp0eXBlOjogUHlfVU5JQ09ERQogCi0gICBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgc3RvcmFnZSB0eXBlIHdoaWNoIGlzIHVzZWQgYnkgUHl0aG9uIGludGVybmFsbHkgYXMKLSAgIGJhc2lzIGZvciBob2xkaW5nIFVuaWNvZGUgb3JkaW5hbHMuICBQeXRob24ncyBkZWZhdWx0IGJ1aWxkcyB1c2UgYSAxNi1iaXQgdHlwZQotICAgZm9yIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZCBzdG9yZSBVbmljb2RlIHZhbHVlcyBpbnRlcm5hbGx5IGFzIFVDUzIuIEl0IGlzIGFsc28KLSAgIHBvc3NpYmxlIHRvIGJ1aWxkIGEgVUNTNCB2ZXJzaW9uIG9mIFB5dGhvbiAobW9zdCByZWNlbnQgTGludXggZGlzdHJpYnV0aW9ucyBjb21lCi0gICB3aXRoIFVDUzQgYnVpbGRzIG9mIFB5dGhvbikuIFRoZXNlIGJ1aWxkcyB0aGVuIHVzZSBhIDMyLWJpdCB0eXBlIGZvcgotICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYW5kIHN0b3JlIFVuaWNvZGUgZGF0YSBpbnRlcm5hbGx5IGFzIFVDUzQuIE9uIHBsYXRmb3JtcwotICAgd2hlcmUgOmM6dHlwZTpgd2NoYXJfdGAgaXMgYXZhaWxhYmxlIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIGNob3NlbiBQeXRob24KLSAgIFVuaWNvZGUgYnVpbGQgdmFyaWFudCwgOmM6dHlwZTpgUHlfVU5JQ09ERWAgaXMgYSB0eXBlZGVmIGFsaWFzIGZvcgotICAgOmM6dHlwZTpgd2NoYXJfdGAgdG8gZW5oYW5jZSBuYXRpdmUgcGxhdGZvcm0gY29tcGF0aWJpbGl0eS4gT24gYWxsIG90aGVyCi0gICBwbGF0Zm9ybXMsIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGEgdHlwZWRlZiBhbGlhcyBmb3IgZWl0aGVyIDpjOnR5cGU6YHVuc2lnbmVkCi0gICBzaG9ydGAgKFVDUzIpIG9yIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmdgIChVQ1M0KS4KKyAgIFRoaXMgaXMgYSB0eXBlZGVmIG9mIDpjOnR5cGU6YHdjaGFyX3RgLCB3aGljaCBpcyBhIDE2LWJpdCB0eXBlIG9yIDMyLWJpdCB0eXBlCisgICBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgogCi1Ob3RlIHRoYXQgVUNTMiBhbmQgVUNTNCBQeXRob24gYnVpbGRzIGFyZSBub3QgYmluYXJ5IGNvbXBhdGlibGUuIFBsZWFzZSBrZWVwCi10aGlzIGluIG1pbmQgd2hlbiB3cml0aW5nIGV4dGVuc2lvbnMgb3IgaW50ZXJmYWNlcy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucywgdGhpcyB3YXMgYSAxNi1iaXQgdHlwZSBvciBhIDMyLWJpdCB0eXBlIGRlcGVuZGluZyBvbgorICAgICAgd2hldGhlciB5b3Ugc2VsZWN0ZWQgYSAibmFycm93IiBvciAid2lkZSIgVW5pY29kZSB2ZXJzaW9uIG9mIFB5dGhvbiBhdAorICAgICAgYnVpbGQgdGltZS4KIAogCi0uLiBjOnR5cGU6OiBQeVVuaWNvZGVPYmplY3QKKy4uIGM6dHlwZTo6IFB5QVNDSUlPYmplY3QKKyAgICAgICAgICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QKKyAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdAogCi0gICBUaGlzIHN1YnR5cGUgb2YgOmM6dHlwZTpgUHlPYmplY3RgIHJlcHJlc2VudHMgYSBQeXRob24gVW5pY29kZSBvYmplY3QuCisgICBUaGVzZSBzdWJ0eXBlcyBvZiA6Yzp0eXBlOmBQeU9iamVjdGAgcmVwcmVzZW50IGEgUHl0aG9uIFVuaWNvZGUgb2JqZWN0LiAgSW4KKyAgIGFsbW9zdCBhbGwgY2FzZXMsIHRoZXkgc2hvdWxkbid0IGJlIHVzZWQgZGlyZWN0bHksIHNpbmNlIGFsbCBBUEkgZnVuY3Rpb25zCisgICB0aGF0IGRlYWwgd2l0aCBVbmljb2RlIG9iamVjdHMgdGFrZSBhbmQgcmV0dXJuIDpjOnR5cGU6YFB5T2JqZWN0YCBwb2ludGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzp2YXI6OiBQeVR5cGVPYmplY3QgUHlVbmljb2RlX1R5cGUKQEAgLTQ1LDEwICs3OSwxMCBAQAogICAgVGhpcyBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHJlcHJlc2VudHMgdGhlIFB5dGhvbiBVbmljb2RlIHR5cGUuICBJdAogICAgaXMgZXhwb3NlZCB0byBQeXRob24gY29kZSBhcyBgYHN0cmBgLgogCisKIFRoZSBmb2xsb3dpbmcgQVBJcyBhcmUgcmVhbGx5IEMgbWFjcm9zIGFuZCBjYW4gYmUgdXNlZCB0byBkbyBmYXN0IGNoZWNrcyBhbmQgdG8KIGFjY2VzcyBpbnRlcm5hbCByZWFkLW9ubHkgZGF0YSBvZiBVbmljb2RlIG9iamVjdHM6CiAKLQogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfQ2hlY2soUHlPYmplY3QgKm8pCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgKm8qIGlzIGEgVW5pY29kZSBvYmplY3Qgb3IgYW4gaW5zdGFuY2Ugb2YgYSBVbmljb2RlCkBAIC02MSwyOCArOTUsMTA2IEBACiAgICBzdWJ0eXBlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfU0laRShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1JFQURZKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG9iamVjdC4gICpvKiBoYXMgdG8gYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QKLSAgIGNoZWNrZWQpLgorICAgRW5zdXJlIHRoZSBzdHJpbmcgb2JqZWN0ICpvKiBpcyBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICByZXF1aXJlZCBiZWZvcmUgdXNpbmcgYW55IG9mIHRoZSBhY2Nlc3MgbWFjcm9zIGRlc2NyaWJlZCBiZWxvdy4KKworICAgLi4gWFhYIGV4cGFuZCBvbiB3aGVuIGl0IGlzIG5vdCByZXF1aXJlZAorCisgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgLTEgd2l0aCBhbiBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUsIHdoaWNoIGluCisgICBwYXJ0aWN1bGFyIGhhcHBlbnMgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlPYmplY3QgKm8pCiAKLSAgIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0J3MgaW50ZXJuYWwgYnVmZmVyIGluIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhCi0gICA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QgY2hlY2tlZCkuCisgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBzdHJpbmcsIGluIGNvZGUgcG9pbnRzLiAgKm8qIGhhcyB0byBiZSBhCisgICBVbmljb2RlIG9iamVjdCBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gKG5vdCBjaGVja2VkKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9BU19VTklDT0RFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzEqIFB5VW5pY29kZV8xQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzIqIFB5VW5pY29kZV8yQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5VW5pY29kZV80QllURV9EQVRBKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIG9iamVjdC4gICpvKgotICAgaGFzIHRvIGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGNhc3QgdG8gVUNTMSwgVUNTMiBvciBVQ1M0CisgICBpbnRlZ2VyIHR5cGVzIGZvciBkaXJlY3QgY2hhcmFjdGVyIGFjY2Vzcy4gIE5vIGNoZWNrcyBhcmUgcGVyZm9ybWVkIGlmIHRoZQorICAgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGhhcyB0aGUgY29ycmVjdCBjaGFyYWN0ZXIgc2l6ZTsgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAgdG8gc2VsZWN0IHRoZSByaWdodCBtYWNyby4gIE1ha2Ugc3VyZQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyB0aGlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBjOmZ1bmN0aW9uOjogY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisuLiBjOm1hY3JvOjogUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIHRoZSBvYmplY3QuICpvKiBoYXMgdG8gYmUgYQotICAgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIHZhbHVlcyBvZiB0aGUgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgIG1hY3JvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9LSU5EKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gb25lIG9mIHRoZSBQeVVuaWNvZGUga2luZCBjb25zdGFudHMgKHNlZSBhYm92ZSkgdGhhdCBpbmRpY2F0ZSBob3cgbWFueQorICAgYnl0ZXMgcGVyIGNoYXJhY3RlciB0aGlzIFVuaWNvZGUgb2JqZWN0IHVzZXMgdG8gc3RvcmUgaXRzIGRhdGEuICAqbyogaGFzIHRvCisgICBiZSBhIFVuaWNvZGUgb2JqZWN0IGluIHRoZSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiAobm90IGNoZWNrZWQpLgorCisgICAuLiBYWFggZG9jdW1lbnQgIjAiIHJldHVybiB2YWx1ZT8KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5VW5pY29kZV9EQVRBKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJhdyB1bmljb2RlIGJ1ZmZlci4gICpvKiBoYXMgdG8gYmUgYSBVbmljb2RlCisgICBvYmplY3QgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uIChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5VW5pY29kZV9XUklURShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdmFsdWUpCisKKyAgIFdyaXRlIGludG8gYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gKmRhdGEqIChhcyBvYnRhaW5lZCB3aXRoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfREFUQWApLiAgVGhpcyBtYWNybyBkb2VzIG5vdCBkbyBhbnkgc2FuaXR5IGNoZWNrcyBhbmQgaXMKKyAgIGludGVuZGVkIGZvciB1c2FnZSBpbiBsb29wcy4gIFRoZSBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZSAqa2luZCogdmFsdWUgYW5kCisgICAqZGF0YSogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIG90aGVyIG1hY3JvIGNhbGxzLiAgKmluZGV4KiBpcyB0aGUgaW5kZXggaW4KKyAgIHRoZSBzdHJpbmcgKHN0YXJ0cyBhdCAwKSBhbmQgKnZhbHVlKiBpcyB0aGUgbmV3IGNvZGUgcG9pbnQgdmFsdWUgd2hpY2ggc2hvdWxkCisgICBiZSB3cml0dGVuIHRvIHRoYXQgbG9jYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SRUFEKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY29kZSBwb2ludCBmcm9tIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uICpkYXRhKiAoYXMgb2J0YWluZWQgd2l0aAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RBVEFgKS4gIE5vIGNoZWNrcyBvciByZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUkVBRF9DSEFSKFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY2hhcmFjdGVyIGZyb20gYSBVbmljb2RlIG9iamVjdCAqbyosIHdoaWNoIG11c3QgYmUgaW4gdGhlICJjYW5vbmljYWwiCisgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRGAgaWYgeW91CisgICBkbyBtdWx0aXBsZSBjb25zZWN1dGl2ZSByZWFkcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBtYXhpbXVtIGNvZGUgcG9pbnQgdGhhdCBpcyBzdWl0YWJsZSBmb3IgY3JlYXRpbmcgYW5vdGhlciBzdHJpbmcKKyAgIGJhc2VkIG9uICpvKiwgd2hpY2ggbXVzdCBiZSBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICBhbHdheXMgYW4gYXBwcm94aW1hdGlvbiBidXQgbW9yZSBlZmZpY2llbnQgdGhhbiBpdGVyYXRpbmcgb3ZlciB0aGUgc3RyaW5nLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCkKQEAgLTkwLDYgKzIwMiw0NiBAQAogICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24sIGluCisgICBjb2RlIHVuaXRzICh0aGlzIGluY2x1ZGVzIHN1cnJvZ2F0ZSBwYWlycyBhcyAyIHVuaXRzKS4gICpvKiBoYXMgdG8gYmUgYQorICAgVW5pY29kZSBvYmplY3QgKG5vdCBjaGVja2VkKS4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIFVuaWNvZGUgQVBJLCBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gaW4KKyAgIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSBVbmljb2RlIEFQSSwgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9HRVRfTEVOR1RIYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FTX1VOSUNPREUoUHlPYmplY3QgKm8pCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiAgVGhlCisgICBgYEFTX0RBVEFgYCBmb3JtIGNhc3RzIHRoZSBwb2ludGVyIHRvIDpjOnR5cGU6YGNvbnN0IGNoYXIgKmAuICAqbyogaGFzIHRvIGJlCisgICBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIG1hY3JvIGlzIG5vdyBpbmVmZmljaWVudCAtLSBiZWNhdXNlIGluIG1hbnkgY2FzZXMgdGhlCisgICAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgbmVlZHMgdG8gYmUgY3JlYXRlZAorICAgICAgLS0gYW5kIGNhbiBmYWlsIChyZXR1cm4gKk5VTEwqIHdpdGggYW4gZXhjZXB0aW9uIHNldCkuICBUcnkgdG8gcG9ydCB0aGUKKyAgICAgIGNvZGUgdG8gdXNlIHRoZSBuZXcgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIG1hY3JvcyBvciB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9XUklURWAgb3IgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURgLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgVW5pY29kZSBBUEksIHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIHRoZQorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIGZhbWlseSBvZiBtYWNyb3MuCisKKwogVW5pY29kZSBDaGFyYWN0ZXIgUHJvcGVydGllcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCkBAIC0xNjYsMTYgKzMxOCwyNSBAQAogCiAgICBSZXR1cm4gdGhlIGNoYXJhY3RlciAqY2gqIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgc2ltcGxlIGNhc2UgbWFwcGluZ3MuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUgUHlfVU5JQ09ERV9UT1VQUEVSKFB5X1VOSUNPREUgY2gpCiAKICAgIFJldHVybiB0aGUgY2hhcmFjdGVyICpjaCogY29udmVydGVkIHRvIHVwcGVyIGNhc2UuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBzaW1wbGUgY2FzZSBtYXBwaW5ncy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSBQeV9VTklDT0RFX1RPVElUTEUoUHlfVU5JQ09ERSBjaCkKIAogICAgUmV0dXJuIHRoZSBjaGFyYWN0ZXIgKmNoKiBjb252ZXJ0ZWQgdG8gdGl0bGUgY2FzZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHNpbXBsZSBjYXNlIG1hcHBpbmdzLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlfVU5JQ09ERSBjaCkKIApAQCAtMTk1LDMxICszNTYsNjYgQEAKICAgIHBvc3NpYmxlLiAgVGhpcyBtYWNybyBkb2VzIG5vdCByYWlzZSBleGNlcHRpb25zLgogCiAKLVBsYWluIFB5X1VOSUNPREUKLSIiIiIiIiIiIiIiIiIiIiIKK1RoZXNlIEFQSXMgY2FuIGJlIHVzZWQgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6CisKKy4uIGM6bWFjcm86OiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhbiBoaWdoIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhEQkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKQorCisgICBDaGVjayBpZiAqY2gqIGlzIGEgbG93IHN1cnJvZ2F0ZSAoYGAweERDMDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KQorCisgICBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuCisgICAqaGlnaCogYW5kICpsb3cqIGFyZSByZXNwZWN0aXZlbHkgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHN1cnJvZ2F0ZXMgaW4gYQorICAgc3Vycm9nYXRlIHBhaXIuCisKKworQ3JlYXRpbmcgYW5kIGFjY2Vzc2luZyBVbmljb2RlIHN0cmluZ3MKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIFRvIGNyZWF0ZSBVbmljb2RlIG9iamVjdHMgYW5kIGFjY2VzcyB0aGVpciBiYXNpYyBzZXF1ZW5jZSBwcm9wZXJ0aWVzLCB1c2UgdGhlc2UKIEFQSXM6CiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgbWF4Y2hhcikKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorICAgQ3JlYXRlIGEgbmV3IFVuaWNvZGUgb2JqZWN0LiAgKm1heGNoYXIqIHNob3VsZCBiZSB0aGUgdHJ1ZSBtYXhpbXVtIGNvZGUgcG9pbnQKKyAgIHRvIGJlIHBsYWNlZCBpbiB0aGUgc3RyaW5nLiAgQXMgYW4gYXBwcm94aW1hdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgdXAgdG8gdGhlCisgICBuZWFyZXN0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZSAxMjcsIDI1NSwgNjU1MzUsIDExMTQxMTEuCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGZyb20gdGhlIFB5X1VOSUNPREUgYnVmZmVyICp1KiBvZiB0aGUgZ2l2ZW4gc2l6ZS4gKnUqCi0gICBtYXkgYmUgKk5VTEwqIHdoaWNoIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzCi0gICByZXNwb25zaWJpbGl0eSB0byBmaWxsIGluIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldwotICAgb2JqZWN0LiBJZiB0aGUgYnVmZmVyIGlzIG5vdCAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LgotICAgVGhlcmVmb3JlLCBtb2RpZmljYXRpb24gb2YgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSoKLSAgIGlzICpOVUxMKi4KKyAgIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBhbGxvY2F0ZSBhIG5ldyBVbmljb2RlIG9iamVjdC4gIE9iamVjdHMKKyAgIGNyZWF0ZWQgdXNpbmcgdGhpcyBmdW5jdGlvbiBhcmUgbm90IHJlc2l6YWJsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGludCBraW5kLCBjb25zdCB2b2lkICpidWZmZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCisKKyAgIENyZWF0ZSBhIG5ldyBVbmljb2RlIG9iamVjdCB3aXRoIHRoZSBnaXZlbiAqa2luZCogKHBvc3NpYmxlIHZhbHVlcyBhcmUKKyAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfMUJZVEVfS0lORGAgZXRjLiwgYXMgcmV0dXJuZWQgYnkKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9LSU5EYCkuICBUaGUgKmJ1ZmZlciogbXVzdCBwb2ludCB0byBhbiBhcnJheSBvZiAqc2l6ZSoKKyAgIHVuaXRzIG9mIDEsIDIgb3IgNCBieXRlcyBwZXIgY2hhcmFjdGVyLCBhcyBnaXZlbiBieSB0aGUga2luZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBjaGFyIGJ1ZmZlciAqdSouICBUaGUgYnl0ZXMgd2lsbCBiZSBpbnRlcnByZXRlZAotICAgYXMgYmVpbmcgVVRGLTggZW5jb2RlZC4gICp1KiBtYXkgYWxzbyBiZSAqTlVMTCogd2hpY2gKLSAgIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZpbGwgaW4KLSAgIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldyBvYmplY3QuIElmIHRoZSBidWZmZXIgaXMgbm90Ci0gICAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LiBUaGVyZWZvcmUsIG1vZGlmaWNhdGlvbiBvZgotICAgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSogaXMgKk5VTEwqLgorICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgY2hhciBidWZmZXIgKnUqLiAgVGhlIGJ5dGVzIHdpbGwgYmUKKyAgIGludGVycHJldGVkIGFzIGJlaW5nIFVURi04IGVuY29kZWQuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4gSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkCisgICBvYmplY3QsIGkuZS4gbW9kaWZpY2F0aW9uIG9mIHRoZSBkYXRhIGlzIG5vdCBhbGxvd2VkLgorCisgICBJZiAqdSogaXMgKk5VTEwqLCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbVVuaWNvZGVgCisgICB3aXRoIHRoZSBidWZmZXIgc2V0IHRvICpOVUxMKi4gIFRoaXMgdXNhZ2UgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQpAQCAtMjYwLDE4ICs0NTYsMjcgQEAKICAgIHwgOmF0dHI6YCVsZGAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsaWAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsaSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsdWAgICAgICAgfCB1bnNpZ25lZCBsb25nICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsdSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbGRgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGQiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsbGlgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGkiKWBgLiAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbHVgICAgICAgfCB1bnNpZ25lZCBsb25nIGxvbmcgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbHUiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6ZGAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6ZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCV6aWAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6aSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6dWAgICAgICAgfCBzaXplX3QgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6dSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTMyMiw0NyArNTI3LDE4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgYGAiJWxsZCJgYCBhbmQgYGAiJWxsdSJgYCBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIGBgIiVsaSJgYCwgYGAiJWxsaSJgYCBhbmQgYGAiJXppImBgIGFkZGVkLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIAogICAgSWRlbnRpY2FsIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0YCBleGNlcHQgdGhhdCBpdCB0YWtlcyBleGFjdGx5IHR3bwogICAgYXJndW1lbnRzLgogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IHJlcGxhY2luZyBhbGwgZGVjaW1hbCBkaWdpdHMgaW4KLSAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IEFTQ0lJIGRpZ2l0cyAwLS05Ci0gICBhY2NvcmRpbmcgdG8gdGhlaXIgZGVjaW1hbCB2YWx1ZS4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uCi0gICBvY2N1cnMuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCi0gICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIsICpOVUxMKiBpZiAqdW5pY29kZSogaXMgbm90IGEgVW5pY29kZSBvYmplY3QuCi0gICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkCi0gICBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4gdXNlZCBpbgotICAgbW9zdCBDIGZ1bmN0aW9ucy4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIENyZWF0ZSBhIGNvcHkgb2YgYSBVbmljb2RlIHN0cmluZyBlbmRpbmcgd2l0aCBhIG51bCBjaGFyYWN0ZXIuIFJldHVybiAqTlVMTCoKLSAgIGFuZCByYWlzZSBhIDpleGM6YE1lbW9yeUVycm9yYCBleGNlcHRpb24gb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSwKLSAgIG90aGVyd2lzZSByZXR1cm4gYSBuZXcgYWxsb2NhdGVkIGJ1ZmZlciAodXNlIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgIHRvIGZyZWUKLSAgIHRoZSBidWZmZXIpLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluCi0gICBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4KLSAgIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoUHlPYmplY3QgKm9iaiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENvZXJjZSBhbiBlbmNvZGVkIG9iamVjdCAqb2JqKiB0byBhbiBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHdpdGgKICAgIGluY3JlbWVudGVkIHJlZmNvdW50LgpAQCAtMzc5LDE1ICs1NTUsMjI3IEBACiAgICBkZWNyZWYnaW5nIHRoZSByZXR1cm5lZCBvYmplY3RzLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRMZW5ndGgoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdCwgaW4gY29kZSBwb2ludHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsIFB5X3NzaXplX3QgaG93X21hbnkpCisKKyAgIENvcHkgY2hhcmFjdGVycyBmcm9tIG9uZSBVbmljb2RlIG9iamVjdCBpbnRvIGFub3RoZXIuICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zCisgICBjaGFyYWN0ZXIgY29udmVyc2lvbiB3aGVuIG5lY2Vzc2FyeSBhbmQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBtZW1jcHlgIGlmCisgICBwb3NzaWJsZS4gIFJldHVybnMgYGAtMWBgIGFuZCBzZXRzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvciwgb3RoZXJ3aXNlIHJldHVybnMKKyAgIGBgMGBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgZmlsbF9jaGFyKQorCisgICBGaWxsIGEgc3RyaW5nIHdpdGggYSBjaGFyYWN0ZXI6IHdyaXRlICpmaWxsX2NoYXIqIGludG8KKyAgIGBgdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdYGAuCisKKyAgIEZhaWwgaWYgKmZpbGxfY2hhciogaXMgYmlnZ2VyIHRoYW4gdGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3Rlciwgb3IgaWYgdGhlCisgICBzdHJpbmcgaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiBgYC0xYGAgYW5kIHJhaXNlIGFuCisgICBleGNlcHRpb24gb24gZXJyb3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1dyaXRlQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hhcmFjdGVyKQorCisgICBXcml0ZSBhIGNoYXJhY3RlciB0byBhIHN0cmluZy4gIFRoZSBzdHJpbmcgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4gIFNpbmNlIFVuaWNvZGUgc3RyaW5ncyBhcmUgc3VwcG9zZWQgdG8gYmUgaW1tdXRhYmxlLAorICAgdGhlIHN0cmluZyBtdXN0IG5vdCBiZSBzaGFyZWQsIG9yIGhhdmUgYmVlbiBoYXNoZWQgeWV0LgorCisgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGF0ICp1bmljb2RlKiBpcyBhIFVuaWNvZGUgb2JqZWN0LCB0aGF0IHRoZSBpbmRleCBpcworICAgbm90IG91dCBvZiBib3VuZHMsIGFuZCB0aGF0IHRoZSBvYmplY3QgY2FuIGJlIG1vZGlmaWVkIHNhZmVseSAoaS5lLiB0aGF0IGl0CisgICBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG9uZSksIGluIGNvbnRyYXN0IHRvIHRoZSBtYWNybyB2ZXJzaW9uCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfV1JJVEVfQ0hBUmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SZWFkQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNoYXJhY3RlciBmcm9tIGEgc3RyaW5nLiAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCAqdW5pY29kZSogaXMgYQorICAgVW5pY29kZSBvYmplY3QgYW5kIHRoZSBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kcywgaW4gY29udHJhc3QgdG8gdGhlIG1hY3JvCisgICB2ZXJzaW9uIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEX0NIQVJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9TdWJzdHJpbmcoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorCisgICBSZXR1cm4gYSBzdWJzdHJpbmcgb2YgKnN0ciosIGZyb20gY2hhcmFjdGVyIGluZGV4ICpzdGFydCogKGluY2x1ZGVkKSB0bworICAgY2hhcmFjdGVyIGluZGV4ICplbmQqIChleGNsdWRlZCkuICBOZWdhdGl2ZSBpbmRpY2VzIGFyZSBub3Qgc3VwcG9ydGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCogUHlVbmljb2RlX0FzVUNTNChQeU9iamVjdCAqdSwgUHlfVUNTNCAqYnVmZmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IGNvcHlfbnVsbCkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgVUNTNCBidWZmZXIsIGluY2x1ZGluZyBhIG51bGwgY2hhcmFjdGVyLCBpZgorICAgKmNvcHlfbnVsbCogaXMgc2V0LiAgUmV0dXJucyAqTlVMTCogYW5kIHNldHMgYW4gZXhjZXB0aW9uIG9uIGVycm9yIChpbgorICAgcGFydGljdWxhciwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqYnVmbGVuKiBpcyBzbWFsbGVyIHRoYW4gdGhlIGxlbmd0aCBvZgorICAgKnUqKS4gICpidWZmZXIqIGlzIHJldHVybmVkIG9uIHN1Y2Nlc3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0KiBQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqdSkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgbmV3IFVDUzQgYnVmZmVyIHRoYXQgaXMgYWxsb2NhdGVkIHVzaW5nCisgICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLiAgSWYgdGhpcyBmYWlscywgKk5VTEwqIGlzIHJldHVybmVkIHdpdGggYQorICAgOmV4YzpgTWVtb3J5RXJyb3JgIHNldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRGVwcmVjYXRlZCBQeV9VTklDT0RFIEFQSXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKworVGhlc2UgQVBJIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiA6cGVwOmAzOTNgLgorRXh0ZW5zaW9uIG1vZHVsZXMgY2FuIGNvbnRpbnVlIHVzaW5nIHRoZW0sIGFzIHRoZXkgd2lsbCBub3QgYmUgcmVtb3ZlZCBpbiBQeXRob24KKzMueCwgYnV0IG5lZWQgdG8gYmUgYXdhcmUgdGhhdCB0aGVpciB1c2UgY2FuIG5vdyBjYXVzZSBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IGhpdHMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorCisgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciAqdSogb2YgdGhlIGdpdmVuIHNpemUuICp1KgorICAgbWF5IGJlICpOVUxMKiB3aGljaCBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncworICAgcmVzcG9uc2liaWxpdHkgdG8gZmlsbCBpbiB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4KKworICAgSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4KKyAgIFRoZXJlZm9yZSwgbW9kaWZpY2F0aW9uIG9mIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4KKyAgICp1KiBpcyAqTlVMTCouCisKKyAgIElmIHRoZSBidWZmZXIgaXMgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRFlgIG11c3QgYmUgY2FsbGVkIG9uY2UgdGhlCisgICBzdHJpbmcgY29udGVudCBoYXMgYmVlbiBmaWxsZWQgYmVmb3JlIHVzaW5nIGFueSBvZiB0aGUgYWNjZXNzIG1hY3JvcyBzdWNoIGFzCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgIG9yCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKKyAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciwgb3IgKk5VTEwqIG9uIGVycm9yLiBUaGlzIHdpbGwgY3JlYXRlIHRoZQorICAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QgaWYgaXQgaXMgbm90IHlldAorICAgYXZhaWxhYmxlLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBzdHJpbmcgbWF5IGNvbnRhaW4KKyAgIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQgd2hlbgorICAgdXNlZCBpbiBtb3N0IEMgZnVuY3Rpb25zLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0YCwKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgLCA6YzpmdW5jOmBQeVVuaWNvZGVfUmVhZENoYXJgIG9yIHNpbWlsYXIgbmV3CisgICBBUElzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgcmVwbGFjaW5nIGFsbCBkZWNpbWFsIGRpZ2l0cyBpbgorICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogYnkgQVNDSUkgZGlnaXRzIDAtLTkKKyAgIGFjY29yZGluZyB0byB0aGVpciBkZWNpbWFsIHZhbHVlLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gb2NjdXJzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKKworICAgTGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlYCwgYnV0IGFsc28gc2F2ZXMgdGhlIDpjOmZ1bmM6YFB5X1VOSUNPREVgCisgICBhcnJheSBsZW5ndGggaW4gKnNpemUqLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nCisgICBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUKKyAgIHRydW5jYXRlZCB3aGVuIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBDcmVhdGUgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gKk5VTEwqCisgICBhbmQgcmFpc2UgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsCisgICBvdGhlcndpc2UgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlCisgICB0aGUgYnVmZmVyKS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkKKyAgIGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlCisgICB0cnVuY2F0ZWQgd2hlbiB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAgb3Igc2ltaWxhciBuZXcgQVBJcy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uLCBpbgorICAgY29kZSB1bml0cyAodGhpcyBpbmNsdWRlcyBzdXJyb2dhdGUgcGFpcnMgYXMgMiB1bml0cykuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21PYmplY3QoUHlPYmplY3QgKm9iaikKIAogICAgU2hvcnRjdXQgZm9yIGBgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KG9iaiwgTlVMTCwgInN0cmljdCIpYGAgd2hpY2ggaXMgdXNlZAogICAgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgd2hlbmV2ZXIgY29lcmNpb24gdG8gVW5pY29kZSBpcyBuZWVkZWQuCiAKLUlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyA6Yzp0eXBlOmB3Y2hhcl90YCBhbmQgcHJvdmlkZXMgYSBoZWFkZXIgZmlsZSB3Y2hhci5oLAotUHl0aG9uIGNhbiBpbnRlcmZhY2UgZGlyZWN0bHkgdG8gdGhpcyB0eXBlIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLgotU3VwcG9ydCBpcyBvcHRpbWl6ZWQgaWYgUHl0aG9uJ3Mgb3duIDpjOnR5cGU6YFB5X1VOSUNPREVgIHR5cGUgaXMgaWRlbnRpY2FsIHRvCi10aGUgc3lzdGVtJ3MgOmM6dHlwZTpgd2NoYXJfdGAuCisKK0xvY2FsZSBFbmNvZGluZworIiIiIiIiIiIiIiIiIiIiCisKK1RoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBjYW4gYmUgdXNlZCB0byBkZWNvZGUgdGV4dCBmcm9tIHRoZSBvcGVyYXRpbmcKK3N5c3RlbS4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBpbnQgc3Vycm9nYXRlZXNjYXBlKQorCisgICBEZWNvZGUgYSBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBkZWNvZGVyIGlzIHN0cmljdCBpZgorICAgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIGl0IHVzZXMgdGhlCisgICBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkgdG8gZXNjYXBlIHVuZGVjb2RhYmxlCisgICBieXRlcy4gSWYgYSBieXRlIHNlcXVlbmNlIGNhbiBiZSBkZWNvZGVkIGFzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciBhbmQKKyAgICpzdXJyb2dhdGVlc2NhcGUqIGlzIG5vdCBlcXVhbCB0byB6ZXJvLCB0aGUgYnl0ZSBzZXF1ZW5jZSBpcyBlc2NhcGVkIHVzaW5nCisgICB0aGUgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgaW5zdGVhZCBvZiBiZWluZyBkZWNvZGVkLiAgKnN0cioKKyAgIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQgY2Fubm90IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQorICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgICAgUHl0aG9uIHN0YXJ0dXApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoY29uc3QgY2hhciAqc3RyLCBpbnQgc3Vycm9nYXRlZXNjYXBlKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplYCwgYnV0IGNvbXB1dGUgdGhlIHN0cmluZworICAgbGVuZ3RoIHVzaW5nIDpjOmZ1bmM6YHN0cmxlbmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUxvY2FsZShQeU9iamVjdCAqdW5pY29kZSwgaW50IHN1cnJvZ2F0ZWVzY2FwZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZW5jb2RlciBpcworICAgc3RyaWN0IGlmICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSBpdCB1c2VzIHRoZQorICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKDpwZXA6YDM4M2ApLiBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYAorICAgb2JqZWN0LiAqc3RyKiBjYW5ub3QgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGAgdG8gZW5jb2RlIGEgc3RyaW5nIHRvCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCAodGhlIGxvY2FsZSBlbmNvZGluZyByZWFkIGF0CisgICAgICBQeXRob24gc3RhcnR1cCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIEZpbGUgU3lzdGVtIEVuY29kaW5nCkBAIC00MzAsNiArODE4LDEzIEBACiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCiAKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKKyAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBVc2UgYGAnc3RyaWN0J2BgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KIApAQCAtNDU4LDYgKzg1MywxMyBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGVuY29kZSBhCisgICAgICBzdHJpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLCB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVMb2NhbGVgLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCkBAIC00NzksOSArODgxLDkgQEAKICAgIENvcHkgdGhlIFVuaWNvZGUgb2JqZWN0IGNvbnRlbnRzIGludG8gdGhlIDpjOnR5cGU6YHdjaGFyX3RgIGJ1ZmZlciAqdyouICBBdCBtb3N0CiAgICAqc2l6ZSogOmM6dHlwZTpgd2NoYXJfdGAgY2hhcmFjdGVycyBhcmUgY29waWVkIChleGNsdWRpbmcgYSBwb3NzaWJseSB0cmFpbGluZwogICAgMC10ZXJtaW5hdGlvbiBjaGFyYWN0ZXIpLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgOmM6dHlwZTpgd2NoYXJfdGAgY2hhcmFjdGVycwotICAgY29waWVkIG9yIC0xIGluIGNhc2Ugb2YgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90YAorICAgY29waWVkIG9yIC0xIGluIGNhc2Ugb2YgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90KmAKICAgIHN0cmluZyBtYXkgb3IgbWF5IG5vdCBiZSAwLXRlcm1pbmF0ZWQuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcgotICAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIDpjOnR5cGU6YHdjaGFyX3RgIHN0cmluZyBpcyAwLXRlcm1pbmF0ZWQgaW4gY2FzZSB0aGlzIGlzCisgICB0byBtYWtlIHN1cmUgdGhhdCB0aGUgOmM6dHlwZTpgd2NoYXJfdCpgIHN0cmluZyBpcyAwLXRlcm1pbmF0ZWQgaW4gY2FzZSB0aGlzIGlzCiAgICByZXF1aXJlZCBieSB0aGUgYXBwbGljYXRpb24uIEFsc28sIG5vdGUgdGhhdCB0aGUgOmM6dHlwZTpgd2NoYXJfdCpgIHN0cmluZwogICAgbWlnaHQgY29udGFpbiBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkCiAgICB3aGVuIHVzZWQgd2l0aCBtb3N0IEMgZnVuY3Rpb25zLgpAQCAtNDk3LDEyICs4OTksMzIgQEAKICAgIFJldHVybnMgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IDpjOmZ1bmM6YFB5TWVtX0FsbG9jYCAodXNlCiAgICA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlIGl0KSBvbiBzdWNjZXNzLiBPbiBlcnJvciwgcmV0dXJucyAqTlVMTCosCiAgICAqXCpzaXplKiBpcyB1bmRlZmluZWQgYW5kIHJhaXNlcyBhIDpleGM6YE1lbW9yeUVycm9yYC4gTm90ZSB0aGF0IHRoZQotICAgcmVzdWx0aW5nIDpjOnR5cGU6YHdjaGFyX3QqYCBzdHJpbmcgbWlnaHQgY29udGFpbiBudWxsIGNoYXJhY3RlcnMsIHdoaWNoCisgICByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdGAgc3RyaW5nIG1pZ2h0IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXJzLCB3aGljaAogICAgd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQgd2hlbiB1c2VkIHdpdGggbW9zdCBDIGZ1bmN0aW9ucy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorVUNTNCBTdXBwb3J0CisiIiIiIiIiIiIiIiIKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIFhYWCBhcmUgdGhlc2UgbWVhbnQgdG8gYmUgcHVibGljPworCisuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IFB5X1VDUzRfc3RybGVuKGNvbnN0IFB5X1VDUzQgKnUpCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJjcHkoUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RybmNweShQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIsIHNpemVfdCBuKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RyY2F0KFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMikKKyAgICAgICAgICAgICAgICBpbnQgUHlfVUNTNF9zdHJjbXAoY29uc3QgUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyKQorICAgICAgICAgICAgICAgIGludCBQeV9VQ1M0X3N0cm5jbXAoY29uc3QgUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyLCBzaXplX3QgbikKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cmNocihjb25zdCBQeV9VQ1M0ICpzLCBQeV9VQ1M0IGMpCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJyY2hyKGNvbnN0IFB5X1VDUzQgKnMsIFB5X1VDUzQgYykKKworICAgVGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgd29yayBvbiBzdHJpbmdzIG9mIDpjOnR5cGU6YFB5X1VDUzRgIGNoYXJhY3RlcnMgYW5kCisgICBvdGhlcndpc2UgYmVoYXZlIGxpa2UgdGhlIEMgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisKIC4uIF9idWlsdGluY29kZWNzOgogCiBCdWlsdC1pbiBDb2RlY3MKQEAgLTUzNyw3ICs5NTksOCBAQAogVGhlc2UgYXJlIHRoZSBnZW5lcmljIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgZW5jb2RlZCBzdHJpbmcgKnMqLgogICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzYW1lIG5hbWUKQEAgLTU0Niw3ICs5NjksMTggQEAKICAgIHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzIG9iamVjdC4KKyAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZQorICAgbmFtZSBpbiB0aGUgVW5pY29kZSA6bWV0aDpgZW5jb2RlYCBtZXRob2QuIFRoZSBjb2RlYyB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cAorICAgdXNpbmcgdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeS4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQorICAgdGhlIGNvZGVjLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyICpzKiBvZiB0aGUgZ2l2ZW4gKnNpemUqIGFuZCByZXR1cm4gYSBQeXRob24KICAgIGJ5dGVzIG9iamVjdC4gICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUKQEAgLTU1NCwxNCArOTg4LDkgQEAKICAgIHRvIGJlIHVzZWQgaXMgbG9va2VkIHVwIHVzaW5nIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkuICBSZXR1cm4gKk5VTEwqIGlmIGFuCiAgICBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzIG9iamVjdC4KLSAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZQotICAgbmFtZSBpbiB0aGUgVW5pY29kZSA6bWV0aDpgZW5jb2RlYCBtZXRob2QuIFRoZSBjb2RlYyB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cAotICAgdXNpbmcgdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeS4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmdgLgogCiAKIFVURi04IENvZGVjcwpAQCAtNTc2LDcgKzEwMDUsOCBAQAogICAgKnMqLiBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEY4YC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgdHJhaWxpbmcgaW5jb21wbGV0ZSBVVEYtOCBieXRlIHNlcXVlbmNlcyB3aWxsIG5vdCBiZQpAQCAtNTg0LDEzICsxMDE0LDYgQEAKICAgIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVVEYtOCBhbmQKLSAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5Ci0gICB0aGUgY29kZWMuCi0KLQogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBVVEYtOCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCkBAIC01OTgsMTMgKzEwMjEsNDggQEAKICAgIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpzaXplKQorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGVuY29kaW5nIChVVEYtOCkgb2YgdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQKKyAgIHN0b3JlIHRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIHJlcHJlc2VudGF0aW9uIChpbiBieXRlcykgaW4gKnNpemUqLiAgKnNpemUqCisgICBjYW4gYmUgKk5VTEwqLCBpbiB0aGlzIGNhc2Ugbm8gc2l6ZSB3aWxsIGJlIHN0b3JlZC4KKworICAgSW4gdGhlIGNhc2Ugb2YgYW4gZXJyb3IsICpOVUxMKiBpcyByZXR1cm5lZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQgYW5kIG5vCisgICAqc2l6ZSogaXMgc3RvcmVkLgorCisgICBUaGlzIGNhY2hlcyB0aGUgVVRGLTggcmVwcmVzZW50YXRpb24gb2YgdGhlIHN0cmluZyBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZAorICAgc3Vic2VxdWVudCBjYWxscyB3aWxsIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHNhbWUgYnVmZmVyLiAgVGhlIGNhbGxlciBpcyBub3QKKyAgIHJlc3BvbnNpYmxlIGZvciBkZWFsbG9jYXRpbmcgdGhlIGJ1ZmZlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEFzIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhBbmRTaXplYCwgYnV0IGRvZXMgbm90IHN0b3JlIHRoZSBzaXplLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVVEYtOCBhbmQKKyAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CisgICB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nYCBvciA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZWAuCisKKwogVVRGLTMyIENvZGVjcwogIiIiIiIiIiIiIiIiIgogCiBUaGVzZSBhcmUgdGhlIFVURi0zMiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKIAogICAgRGVjb2RlICpzaXplKiBieXRlcyBmcm9tIGEgVVRGLTMyIGVuY29kZWQgYnVmZmVyIHN0cmluZyBhbmQgcmV0dXJuIHRoZQogICAgY29ycmVzcG9uZGluZyBVbmljb2RlIG9iamVjdC4gICplcnJvcnMqIChpZiBub24tKk5VTEwqKSBkZWZpbmVzIHRoZSBlcnJvcgpAQCAtNjI1LDE0ICsxMDgzLDEzIEBACiAgICBBZnRlciBjb21wbGV0aW9uLCAqXCpieXRlb3JkZXIqIGlzIHNldCB0byB0aGUgY3VycmVudCBieXRlIG9yZGVyIGF0IHRoZSBlbmQKICAgIG9mIGlucHV0IGRhdGEuCiAKLSAgIEluIGEgbmFycm93IGJ1aWxkIGNvZGVwb2ludHMgb3V0c2lkZSB0aGUgQk1QIHdpbGwgYmUgZGVjb2RlZCBhcyBzdXJyb2dhdGUgcGFpcnMuCi0KICAgIElmICpieXRlb3JkZXIqIGlzICpOVUxMKiwgdGhlIGNvZGVjIHN0YXJ0cyBpbiBuYXRpdmUgb3JkZXIgbW9kZS4KIAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjMyYC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWxgIHdpbGwgbm90IHRyZWF0CkBAIC02NDEsNyArMTA5OCwxNSBAQAogICAgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMzIgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKKyAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCisgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKIAogICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBVVEYtMzIgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgVW5pY29kZQogICAgZGF0YSBpbiAqcyouICBPdXRwdXQgaXMgd3JpdHRlbiBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBieXRlIG9yZGVyOjoKQEAgLTY1OCwxMiArMTEyMyw5IEBACiAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTMyIGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCi0gICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgotICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmdgLgogCiAKIFVURi0xNiBDb2RlY3MKQEAgLTY3Miw3ICsxMTM0LDggQEAKIFRoZXNlIGFyZSB0aGUgVVRGLTE2IGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQogCiAgICBEZWNvZGUgKnNpemUqIGJ5dGVzIGZyb20gYSBVVEYtMTYgZW5jb2RlZCBidWZmZXIgc3RyaW5nIGFuZCByZXR1cm4gdGhlCiAgICBjb3JyZXNwb25kaW5nIFVuaWNvZGUgb2JqZWN0LiAgKmVycm9ycyogKGlmIG5vbi0qTlVMTCopIGRlZmluZXMgdGhlIGVycm9yCkBAIC02OTksNyArMTE2Miw4IEBACiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMTZgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bGAgd2lsbCBub3QgdHJlYXQKQEAgLTcwOCw3ICsxMTcyLDE1IEBACiAgICBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjE2KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMTYgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKKyAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCisgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYxNihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKIAogICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBVVEYtMTYgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgVW5pY29kZQogICAgZGF0YSBpbiAqcyouICBPdXRwdXQgaXMgd3JpdHRlbiBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBieXRlIG9yZGVyOjoKQEAgLTcyNiwxMiArMTE5OCw5IEBACiAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTE2IGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCi0gICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgotICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmdgLgogCiAKIFVURi03IENvZGVjcwpAQCAtNzQ2LDcgKzEyMTUsOCBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGN2AuICBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCB0cmFpbGluZyBpbmNvbXBsZXRlIFVURi03IGJhc2UtNjQgc2VjdGlvbnMgd2lsbCBub3QKQEAgLTc1NCw3ICsxMjI0LDggQEAKICAgIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJhc2U2NFNldE8sIGludCBiYXNlNjRXaGl0ZVNwYWNlLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sIGludCBiYXNlNjRXaGl0ZVNwYWNlLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiBzaXplIHVzaW5nIFVURi03IGFuZAogICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKQEAgLTc2NSw2ICsxMjM2LDExIEBACiAgICBub256ZXJvLCB3aGl0ZXNwYWNlIHdpbGwgYmUgZW5jb2RlZCBpbiBiYXNlLTY0LiAgQm90aCBhcmUgc2V0IHRvIHplcm8gZm9yIHRoZQogICAgUHl0aG9uICJ1dGYtNyIgY29kZWMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEkuCisKKyAgIC4uIFhYWCByZXBsYWNlIHdpdGggd2hhdD8KKwogCiBVbmljb2RlLUVzY2FwZSBDb2RlY3MKICIiIiIiIiIiIiIiIiIiIiIiIiIiIgpAQCAtNzcyLDE5ICsxMjQ4LDEzIEBACiBUaGVzZSBhcmUgdGhlICJVbmljb2RlIEVzY2FwZSIgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBVbmljb2RlLUVzY2FwZSBlbmNvZGVkCiAgICBzdHJpbmcgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVW5pY29kZS1Fc2NhcGUgYW5kCi0gICByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCi0gICBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIFVuaWNvZGUtRXNjYXBlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24KQEAgLTc5MiwyNSArMTI2MiwzMCBAQAogICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVbmljb2RlLUVzY2FwZSBhbmQKKyAgIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKKyAgIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZ2AuCisKKwogUmF3LVVuaWNvZGUtRXNjYXBlIENvZGVjcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBUaGVzZSBhcmUgdGhlICJSYXcgVW5pY29kZSBFc2NhcGUiIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgUmF3LVVuaWNvZGUtRXNjYXBlCiAgICBlbmNvZGVkIHN0cmluZyAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFJhdy1Vbmljb2RlLUVzY2FwZQotICAgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgUmF3LVVuaWNvZGUtRXNjYXBlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcwpAQCAtODE4LDYgKzEyOTMsMTggQEAKICAgIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgUmF3LVVuaWNvZGUtRXNjYXBlCisgICBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CisgICB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nYC4KKworCiBMYXRpbi0xIENvZGVjcwogIiIiIiIiIiIiIiIiIiIKIApAQCAtODMxLDE4ICsxMzE4LDIyIEBACiAgICAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgTGF0aW4tMSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCisgICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgTGF0aW4tMSBhbmQKICAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CiAgICB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIExhdGluLTEgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwotICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKLSAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nYC4KIAogCiBBU0NJSSBDb2RlY3MKQEAgLTg1OCwxOCArMTM0OSwyMiBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgQVNDSUkgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgQVNDSUkgYW5kCiAgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQogICAgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIEFTQ0lJIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKLSAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCi0gICByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nYC4KIAogCiBDaGFyYWN0ZXIgTWFwIENvZGVjcwpAQCAtODk4LDcgKzEzOTMsOCBAQAogCiBUaGVzZSBhcmUgdGhlIG1hcHBpbmcgY29kZWMgQVBJczoKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBlbmNvZGVkIHN0cmluZyAqcyogdXNpbmcKICAgIHRoZSBnaXZlbiAqbWFwcGluZyogb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKQEAgLTkwOCwxMyArMTQwNCw2IEBACiAgICB0cmVhdGVkIGFzICJ1bmRlZmluZWQgbWFwcGluZyIuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgdGhlIGdpdmVuCi0gICAqbWFwcGluZyogb2JqZWN0IGFuZCByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gUmV0dXJuICpOVUxMKiBpZiBhbgotICAgZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKm1hcHBpbmcpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiAqbWFwcGluZyogb2JqZWN0IGFuZCByZXR1cm4gdGhlIHJlc3VsdApAQCAtOTI0LDcgKzE0MTMsOCBAQAogVGhlIGZvbGxvd2luZyBjb2RlYyBBUEkgaXMgc3BlY2lhbCBpbiB0aGF0IG1hcHMgVW5pY29kZSB0byBVbmljb2RlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgVHJhbnNsYXRlIGEgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogYnkgYXBwbHlpbmcgYQogICAgY2hhcmFjdGVyIG1hcHBpbmcgKnRhYmxlKiB0byBpdCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QuICBSZXR1cm4KQEAgLTkzNyw2ICsxNDI3LDIyIEBACiAgICBhbmQgc2VxdWVuY2VzIHdvcmsgd2VsbC4gIFVubWFwcGVkIGNoYXJhY3RlciBvcmRpbmFscyAob25lcyB3aGljaCBjYXVzZSBhCiAgICA6ZXhjOmBMb29rdXBFcnJvcmApIGFyZSBsZWZ0IHVudG91Y2hlZCBhbmQgYXJlIGNvcGllZCBhcy1pcy4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSS4KKworICAgLi4gWFhYIHJlcGxhY2Ugd2l0aCB3aGF0PworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIHRoZSBnaXZlbgorICAgKm1hcHBpbmcqIG9iamVjdCBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuIFJldHVybiAqTlVMTCogaWYgYW4KKyAgIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmdgLgogCiAKIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzCkBAIC05NTMsNyArMTQ1OSw4IEBACiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywgaW50IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBpbnQgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZU1CQ1NgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsYCB3aWxsIG5vdCBkZWNvZGUKQEAgLTk2MSwxOCArMTQ2OCwzMSBAQAogICAgaW4gKmNvbnN1bWVkKi4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIE1CQ1MgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoaW50IGNvZGVfcGFnZSwgUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSBVbmljb2RlIG9iamVjdCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvZGUgcGFnZSBhbmQgcmV0dXJuIGEgUHl0aG9uCisgICBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4gVXNlCisgICA6YzpkYXRhOmBDUF9BQ1BgIGNvZGUgcGFnZSB0byBnZXQgdGhlIE1CQ1MgZW5jb2Rlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBNQkNTIGFuZCByZXR1cm4KICAgIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCiAgICBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIE1CQ1MgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwotICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKLSAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTUJDU1N0cmluZ2Agb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlYC4KIAogCiBNZXRob2RzICYgU2xvdHMKQEAgLTEwMTEsNyArMTUzMSw4IEBACiAgICBjaGFyYWN0ZXJzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBzdHJpbmdzLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqdGFibGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgVHJhbnNsYXRlIGEgc3RyaW5nIGJ5IGFwcGx5aW5nIGEgY2hhcmFjdGVyIG1hcHBpbmcgdGFibGUgdG8gaXQgYW5kIHJldHVybiB0aGUKICAgIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdC4KQEAgLTEwMzMsMTQgKzE1NTQsMTYgQEAKICAgIFVuaWNvZGUgc3RyaW5nLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1RhaWxtYXRjaChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1RhaWxtYXRjaChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKIAogICAgUmV0dXJuIDEgaWYgKnN1YnN0ciogbWF0Y2hlcyBgYHN0cltzdGFydDplbmRdYGAgYXQgdGhlIGdpdmVuIHRhaWwgZW5kCiAgICAoKmRpcmVjdGlvbiogPT0gLTEgbWVhbnMgdG8gZG8gYSBwcmVmaXggbWF0Y2gsICpkaXJlY3Rpb24qID09IDEgYSBzdWZmaXggbWF0Y2gpLAogICAgMCBvdGhlcndpc2UuIFJldHVybiBgYC0xYGAgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCiAKICAgIFJldHVybiB0aGUgZmlyc3QgcG9zaXRpb24gb2YgKnN1YnN0ciogaW4gYGBzdHJbc3RhcnQ6ZW5kXWBgIHVzaW5nIHRoZSBnaXZlbgogICAgKmRpcmVjdGlvbiogKCpkaXJlY3Rpb24qID09IDEgbWVhbnMgdG8gZG8gYSBmb3J3YXJkIHNlYXJjaCwgKmRpcmVjdGlvbiogPT0gLTEgYQpAQCAtMTA0OSwxMyArMTU3MiwyNyBAQAogICAgb2NjdXJyZWQgYW5kIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmRDaGFyKFB5T2JqZWN0ICpzdHIsIFB5X1VDUzQgY2gsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKKworICAgUmV0dXJuIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyICpjaCogaW4gYGBzdHJbc3RhcnQ6ZW5kXWBgIHVzaW5nCisgICB0aGUgZ2l2ZW4gKmRpcmVjdGlvbiogKCpkaXJlY3Rpb24qID09IDEgbWVhbnMgdG8gZG8gYSBmb3J3YXJkIHNlYXJjaCwKKyAgICpkaXJlY3Rpb24qID09IC0xIGEgYmFja3dhcmQgc2VhcmNoKS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGluZGV4IG9mIHRoZQorICAgZmlyc3QgbWF0Y2g7IGEgdmFsdWUgb2YgYGAtMWBgIGluZGljYXRlcyB0aGF0IG5vIG1hdGNoIHdhcyBmb3VuZCwgYW5kIGBgLTJgYAorICAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgYW5kIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9Db3VudChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiAqc3Vic3RyKiBpbgogICAgYGBzdHJbc3RhcnQ6ZW5kXWBgLiAgUmV0dXJuIGBgLTFgYCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5T2JqZWN0ICpyZXBsc3RyLCBQeV9zc2l6ZV90IG1heGNvdW50KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbHN0ciwgUHlfc3NpemVfdCBtYXhjb3VudCkKIAogICAgUmVwbGFjZSBhdCBtb3N0ICptYXhjb3VudCogb2NjdXJyZW5jZXMgb2YgKnN1YnN0ciogaW4gKnN0ciogd2l0aCAqcmVwbHN0ciogYW5kCiAgICByZXR1cm4gdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdC4gKm1heGNvdW50KiA9PSAtMSBtZWFucyByZXBsYWNlIGFsbApAQCAtMTA3Niw3ICsxNjEzLDcgQEAKICAgIElTTy04ODU5LTEgaWYgaXQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMiLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCAgUHlPYmplY3QgKnJpZ2h0LCAgaW50IG9wKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsICBQeU9iamVjdCAqcmlnaHQsICBpbnQgb3ApCiAKICAgIFJpY2ggY29tcGFyZSB0d28gdW5pY29kZSBzdHJpbmdzIGFuZCByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKQEAgLTExMDMsOCArMTY0MCw4IEBACiAgICBDaGVjayB3aGV0aGVyICplbGVtZW50KiBpcyBjb250YWluZWQgaW4gKmNvbnRhaW5lciogYW5kIHJldHVybiB0cnVlIG9yIGZhbHNlCiAgICBhY2NvcmRpbmdseS4KIAotICAgKmVsZW1lbnQqIGhhcyB0byBjb2VyY2UgdG8gYSBvbmUgZWxlbWVudCBVbmljb2RlIHN0cmluZy4gYGAtMWBgIGlzIHJldHVybmVkIGlmCi0gICB0aGVyZSB3YXMgYW4gZXJyb3IuCisgICAqZWxlbWVudCogaGFzIHRvIGNvZXJjZSB0byBhIG9uZSBlbGVtZW50IFVuaWNvZGUgc3RyaW5nLiBgYC0xYGAgaXMgcmV0dXJuZWQKKyAgIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKnN0cmluZykKQEAgLTExMjMsNyArMTY2MCw2IEBACiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnYpCiAKICAgIEEgY29tYmluYXRpb24gb2YgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21TdHJpbmdgIGFuZAotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0ludGVybkluUGxhY2VgLCByZXR1cm5pbmcgZWl0aGVyIGEgbmV3IHVuaWNvZGUgc3RyaW5nIG9iamVjdAotICAgdGhhdCBoYXMgYmVlbiBpbnRlcm5lZCwgb3IgYSBuZXcgKCJvd25lZCIpIHJlZmVyZW5jZSB0byBhbiBlYXJsaWVyIGludGVybmVkCi0gICBzdHJpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUuCi0KKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9JbnRlcm5JblBsYWNlYCwgcmV0dXJuaW5nIGVpdGhlciBhIG5ldyB1bmljb2RlIHN0cmluZworICAgb2JqZWN0IHRoYXQgaGFzIGJlZW4gaW50ZXJuZWQsIG9yIGEgbmV3ICgib3duZWQiKSByZWZlcmVuY2UgdG8gYW4gZWFybGllcgorICAgaW50ZXJuZWQgc3RyaW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdCBiL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QKaW5kZXggNDFjZGQ2Yi4uNDk5ZWIzZSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdAorKysgYi9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0CkBAIC05NSwxMiArOTUsNiBAQAogICAgbGVhdmluZyAqY2xvc2VpdCogc2V0IHRvIGBgMGBgIGFuZCAqZmxhZ3MqIHNldCB0byAqTlVMTCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeVJ1bl9TaW1wbGVGaWxlRmxhZ3MoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzKQotCi0gICBUaGlzIGlzIGEgc2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gOmM6ZnVuYzpgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3NgIGJlbG93LAotICAgbGVhdmluZyAqY2xvc2VpdCogc2V0IHRvIGBgMGBgLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlSdW5fU2ltcGxlRmlsZUV4KEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNsb3NlaXQpCiAKICAgIFRoaXMgaXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSB0byA6YzpmdW5jOmBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFnc2AgYmVsb3csCmRpZmYgLS1naXQgYS9Eb2MvY29uZi5weSBiL0RvYy9jb25mLnB5CmluZGV4IDU1NWYyODEuLjZiMDg1ZTAgMTAwNjQ0Ci0tLSBhL0RvYy9jb25mLnB5CisrKyBiL0RvYy9jb25mLnB5CkBAIC05MSw3ICs5MSw3IEBACiB9CiAKICMgT3V0cHV0IGFuIE9wZW5TZWFyY2ggZGVzY3JpcHRpb24gZmlsZS4KLWh0bWxfdXNlX29wZW5zZWFyY2ggPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjInCitodG1sX3VzZV9vcGVuc2VhcmNoID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJyArIHZlcnNpb24KIAogIyBBZGRpdGlvbmFsIHN0YXRpYyBmaWxlcy4KIGh0bWxfc3RhdGljX3BhdGggPSBbJ3Rvb2xzL3NwaGlueGV4dC9zdGF0aWMnXQpkaWZmIC0tZ2l0IGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdCBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKaW5kZXggYzdkN2JkMS4uYTEwMDRhZCAxMDA2NDQKLS0tIGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdAorKysgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CkBAIC00NjUsNiArNDY1LDExIEBACiBQeUZ1bmN0aW9uX05ldzpQeU9iamVjdCo6Y29kZTorMToKIFB5RnVuY3Rpb25fTmV3OlB5T2JqZWN0KjpnbG9iYWxzOisxOgogCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6OisxOgorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOmNvZGU6KzE6CitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6Z2xvYmFsczorMToKK1B5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0KjpxdWFsbmFtZTorMToKKwogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOmludDo6OgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpvcDowOgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpjbG9zdXJlOisxOgpkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0IGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CmluZGV4IGUxNWRjNzYuLjcxNzAyZTUgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKQEAgLTE2MCw3ICsxNjAsNyBAQAogLi4gY2xhc3M6OiBFeHRlbnNpb24KIAogICAgVGhlIEV4dGVuc2lvbiBjbGFzcyBkZXNjcmliZXMgYSBzaW5nbGUgQyBvciBDKytleHRlbnNpb24gbW9kdWxlIGluIGEgc2V0dXAKLSAgIHNjcmlwdC4gSXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGl0cyBjb25zdHJ1Y3RvcgorICAgc2NyaXB0LiBJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gaXRzIGNvbnN0cnVjdG9yOgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXJndW1lbnQgbmFtZSAgICAgICAgICB8IHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgfApAQCAtMTE1NywxMiArMTE1NywxMSBAQAogCiAuLiBmdW5jdGlvbjo6IGdyb2tfZW52aXJvbm1lbnRfZXJyb3IoZXhjWywgcHJlZml4PSdlcnJvcjogJ10pCiAKLSAgIEdlbmVyYXRlIGEgdXNlZnVsIGVycm9yIG1lc3NhZ2UgZnJvbSBhbiA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCAgKDpleGM6YElPRXJyb3JgCi0gICBvciA6ZXhjOmBPU0Vycm9yYCkgZXhjZXB0aW9uIG9iamVjdC4gICBIYW5kbGVzIFB5dGhvbiAxLjUuMSBhbmQgbGF0ZXIgc3R5bGVzLAotICAgYW5kIGRvZXMgd2hhdCBpdCBjYW4gdG8gZGVhbCB3aXRoICBleGNlcHRpb24gb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgYSBmaWxlbmFtZQotICAgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUgZXJyb3IgIGlzIGR1ZSB0byBhIHR3by1maWxlIG9wZXJhdGlvbiwgc3VjaCBhcwotICAgOmZ1bmM6YHJlbmFtZWAgb3IgIDpmdW5jOmBsaW5rYCkuICBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzIGEgc3RyaW5nCi0gICBwcmVmaXhlZCAgd2l0aCAqcHJlZml4Ki4KKyAgIEdlbmVyYXRlIGEgdXNlZnVsIGVycm9yIG1lc3NhZ2UgZnJvbSBhbiA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gb2JqZWN0LgorICAgSGFuZGxlcyBQeXRob24gMS41LjEgYW5kIGxhdGVyIHN0eWxlcywgYW5kIGRvZXMgd2hhdCBpdCBjYW4gdG8gZGVhbCB3aXRoCisgICBleGNlcHRpb24gb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgYSBmaWxlbmFtZSAod2hpY2ggaGFwcGVucyB3aGVuIHRoZSBlcnJvcgorICAgaXMgZHVlIHRvIGEgdHdvLWZpbGUgb3BlcmF0aW9uLCBzdWNoIGFzIDpmdW5jOmByZW5hbWVgIG9yIDpmdW5jOmBsaW5rYCkuCisgICBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzIGEgc3RyaW5nIHByZWZpeGVkIHdpdGggKnByZWZpeCouCiAKIAogLi4gZnVuY3Rpb246OiBzcGxpdF9xdW90ZWQocykKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAppbmRleCA3ZmQ5ZjcyLi5lZjk1YWM5IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CkBAIC0zMjEsNyArMzIxLDcgQEAKIAogVGhlIDpjb25zdDpgTUVUSF9LRVlXT1JEU2AgYml0IG1heSBiZSBzZXQgaW4gdGhlIHRoaXJkIGZpZWxkIGlmIGtleXdvcmQKIGFyZ3VtZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4gIEluIHRoaXMgY2FzZSwgdGhlIEMgZnVuY3Rpb24gc2hvdWxkCi1hY2NlcHQgYSB0aGlyZCBgYFB5T2JqZWN0IFwqYGAgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmRzLgorYWNjZXB0IGEgdGhpcmQgYGBQeU9iamVjdCAqYGAgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmRzLgogVXNlIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc2AgdG8gcGFyc2UgdGhlIGFyZ3VtZW50cyB0byBzdWNoIGEKIGZ1bmN0aW9uLgogCkBAIC0zODQsOSArMzg0LDYgQEAKICAgICAgICAgICBpbXBvcnRzIGl0LiAqLwogICAgICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic3BhbSIpOwogCi1BbiBleGFtcGxlIG1heSBiZSBmb3VuZCBpbiB0aGUgZmlsZSA6ZmlsZTpgRGVtby9lbWJlZC9kZW1vLmNgIGluIHRoZSBQeXRob24KLXNvdXJjZSBkaXN0cmlidXRpb24uCi0KIC4uIG5vdGU6OgogCiAgICBSZW1vdmluZyBlbnRyaWVzIGZyb20gYGBzeXMubW9kdWxlc2BgIG9yIGltcG9ydGluZyBjb21waWxlZCBtb2R1bGVzIGludG8KZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0IGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKaW5kZXggMzAwMTQxNS4uMzc2ZDA5YSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKQEAgLTI2LDExICsyNiwxMiBAQAogPT09PT09PT09PQogCiBUaGUgUHl0aG9uIHJ1bnRpbWUgc2VlcyBhbGwgUHl0aG9uIG9iamVjdHMgYXMgdmFyaWFibGVzIG9mIHR5cGUKLTpjOnR5cGU6YFB5T2JqZWN0XCpgLiAgQSA6Yzp0eXBlOmBQeU9iamVjdGAgaXMgbm90IGEgdmVyeSBtYWduaWZpY2VudCBvYmplY3QgLSBpdAotanVzdCBjb250YWlucyB0aGUgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byB0aGUgb2JqZWN0J3MgInR5cGUgb2JqZWN0Ii4gIFRoaXMgaXMKLXdoZXJlIHRoZSBhY3Rpb24gaXM7IHRoZSB0eXBlIG9iamVjdCBkZXRlcm1pbmVzIHdoaWNoIChDKSBmdW5jdGlvbnMgZ2V0IGNhbGxlZAotd2hlbiwgZm9yIGluc3RhbmNlLCBhbiBhdHRyaWJ1dGUgZ2V0cyBsb29rZWQgdXAgb24gYW4gb2JqZWN0IG9yIGl0IGlzIG11bHRpcGxpZWQKLWJ5IGFub3RoZXIgb2JqZWN0LiAgVGhlc2UgQyBmdW5jdGlvbnMgYXJlIGNhbGxlZCAidHlwZSBtZXRob2RzIi4KKzpjOnR5cGU6YFB5T2JqZWN0XCpgLCB3aGljaCBzZXJ2ZXMgYXMgYSAiYmFzZSB0eXBlIiBmb3IgYWxsIFB5dGhvbiBvYmplY3RzLgorOmM6dHlwZTpgUHlPYmplY3RgIGl0c2VsZiBvbmx5IGNvbnRhaW5zIHRoZSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIHRoZQorb2JqZWN0J3MgInR5cGUgb2JqZWN0Ii4gIFRoaXMgaXMgd2hlcmUgdGhlIGFjdGlvbiBpczsgdGhlIHR5cGUgb2JqZWN0IGRldGVybWluZXMKK3doaWNoIChDKSBmdW5jdGlvbnMgZ2V0IGNhbGxlZCB3aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGF0dHJpYnV0ZSBnZXRzIGxvb2tlZAordXAgb24gYW4gb2JqZWN0IG9yIGl0IGlzIG11bHRpcGxpZWQgYnkgYW5vdGhlciBvYmplY3QuICBUaGVzZSBDIGZ1bmN0aW9ucworYXJlIGNhbGxlZCAidHlwZSBtZXRob2RzIi4KIAogU28sIGlmIHlvdSB3YW50IHRvIGRlZmluZSBhIG5ldyBvYmplY3QgdHlwZSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgbmV3IHR5cGUKIG9iamVjdC4KQEAgLTUwLDE1ICs1MSwxNSBAQAogICAgICAgIFB5T2JqZWN0X0hFQUQKICAgIH0gbm9kZHlfTm9kZHlPYmplY3Q7CiAKLVRoaXMgaXMgd2hhdCBhIE5vZGR5IG9iamVjdCB3aWxsIGNvbnRhaW4tLS1pbiB0aGlzIGNhc2UsIG5vdGhpbmcgbW9yZSB0aGFuIGV2ZXJ5Ci1QeXRob24gb2JqZWN0IGNvbnRhaW5zLCBuYW1lbHkgYSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIGEgdHlwZSBvYmplY3QuICBUaGVzZQotYXJlIHRoZSBmaWVsZHMgdGhlIGBgUHlPYmplY3RfSEVBRGBgIG1hY3JvIGJyaW5ncyBpbi4gIFRoZSByZWFzb24gZm9yIHRoZSBtYWNybwotaXMgdG8gc3RhbmRhcmRpemUgdGhlIGxheW91dCBhbmQgdG8gZW5hYmxlIHNwZWNpYWwgZGVidWdnaW5nIGZpZWxkcyBpbiBkZWJ1ZwotYnVpbGRzLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHNlbWljb2xvbiBhZnRlciB0aGUgYGBQeU9iamVjdF9IRUFEYGAgbWFjcm87IG9uZQotaXMgaW5jbHVkZWQgaW4gdGhlIG1hY3JvIGRlZmluaXRpb24uICBCZSB3YXJ5IG9mIGFkZGluZyBvbmUgYnkgYWNjaWRlbnQ7IGl0J3MKLWVhc3kgdG8gZG8gZnJvbSBoYWJpdCwgYW5kIHlvdXIgY29tcGlsZXIgbWlnaHQgbm90IGNvbXBsYWluLCBidXQgc29tZW9uZSBlbHNlJ3MKLXByb2JhYmx5IHdpbGwhICAoT24gV2luZG93cywgTVNWQyBpcyBrbm93biB0byBjYWxsIHRoaXMgYW4gZXJyb3IgYW5kIHJlZnVzZSB0bwotY29tcGlsZSB0aGUgY29kZS4pCitUaGlzIGlzIHdoYXQgYSBOb2RkeSBvYmplY3Qgd2lsbCBjb250YWluLS0taW4gdGhpcyBjYXNlLCBub3RoaW5nIG1vcmUgdGhhbiB3aGF0CitldmVyeSBQeXRob24gb2JqZWN0IGNvbnRhaW5zLS0tYSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIGEgdHlwZSBvYmplY3QuCitUaGVzZSBhcmUgdGhlIGZpZWxkcyB0aGUgYGBQeU9iamVjdF9IRUFEYGAgbWFjcm8gYnJpbmdzIGluLiAgVGhlIHJlYXNvbiBmb3IgdGhlCittYWNybyBpcyB0byBzdGFuZGFyZGl6ZSB0aGUgbGF5b3V0IGFuZCB0byBlbmFibGUgc3BlY2lhbCBkZWJ1Z2dpbmcgZmllbGRzIGluCitkZWJ1ZyBidWlsZHMuICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gc2VtaWNvbG9uIGFmdGVyIHRoZSBgYFB5T2JqZWN0X0hFQURgYAorbWFjcm87IG9uZSBpcyBpbmNsdWRlZCBpbiB0aGUgbWFjcm8gZGVmaW5pdGlvbi4gIEJlIHdhcnkgb2YgYWRkaW5nIG9uZSBieQorYWNjaWRlbnQ7IGl0J3MgZWFzeSB0byBkbyBmcm9tIGhhYml0LCBhbmQgeW91ciBjb21waWxlciBtaWdodCBub3QgY29tcGxhaW4sCitidXQgc29tZW9uZSBlbHNlJ3MgcHJvYmFibHkgd2lsbCEgIChPbiBXaW5kb3dzLCBNU1ZDIGlzIGtub3duIHRvIGNhbGwgdGhpcyBhbgorZXJyb3IgYW5kIHJlZnVzZSB0byBjb21waWxlIHRoZSBjb2RlLikKIAogRm9yIGNvbnRyYXN0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgY29ycmVzcG9uZGluZyBkZWZpbml0aW9uIGZvciBzdGFuZGFyZAogUHl0aG9uIGZsb2F0czo6CkBAIC0yMjQsNyArMjI1LDcgQEAKIEFkZGluZyBkYXRhIGFuZCBtZXRob2RzIHRvIHRoZSBCYXNpYyBleGFtcGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1MZXQncyBleHBlbmQgdGhlIGJhc2ljIGV4YW1wbGUgdG8gYWRkIHNvbWUgZGF0YSBhbmQgbWV0aG9kcy4gIExldCdzIGFsc28gbWFrZQorTGV0J3MgZXh0ZW5kIHRoZSBiYXNpYyBleGFtcGxlIHRvIGFkZCBzb21lIGRhdGEgYW5kIG1ldGhvZHMuICBMZXQncyBhbHNvIG1ha2UKIHRoZSB0eXBlIHVzYWJsZSBhcyBhIGJhc2UgY2xhc3MuIFdlJ2xsIGNyZWF0ZSBhIG5ldyBtb2R1bGUsIDptb2Q6YG5vZGR5MmAgdGhhdAogYWRkcyB0aGVzZSBjYXBhYmlsaXRpZXM6CiAKQEAgLTI4OCwxOCArMjg5LDE2IEBACiAgICAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgICAgeworICAgICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgfQorICAgICAgICAgICB9CiAKICAgICAgICAgICAgc2VsZi0+bGFzdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgICAgIHsKKyAgICAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgfQorICAgICAgICAgICB9CiAKICAgICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICAgICB9CkBAIC0zMjcsOCArMzI2LDggQEAKIGNyZWF0ZWQuIE5ldyBtZXRob2RzIGFsd2F5cyBhY2NlcHQgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMsIGJ1dCB0aGV5CiBvZnRlbiBpZ25vcmUgdGhlIGFyZ3VtZW50cywgbGVhdmluZyB0aGUgYXJndW1lbnQgaGFuZGxpbmcgdG8gaW5pdGlhbGl6ZXIKIG1ldGhvZHMuIE5vdGUgdGhhdCBpZiB0aGUgdHlwZSBzdXBwb3J0cyBzdWJjbGFzc2luZywgdGhlIHR5cGUgcGFzc2VkIG1heSBub3QgYmUKLXRoZSB0eXBlIGJlaW5nIGRlZmluZWQuICBUaGUgbmV3IG1ldGhvZCBjYWxscyB0aGUgdHBfYWxsb2Mgc2xvdCB0byBhbGxvY2F0ZQotbWVtb3J5LiBXZSBkb24ndCBmaWxsIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3Qgb3Vyc2VsdmVzLiBSYXRoZXIKK3RoZSB0eXBlIGJlaW5nIGRlZmluZWQuICBUaGUgbmV3IG1ldGhvZCBjYWxscyB0aGUgOmF0dHI6YHRwX2FsbG9jYCBzbG90IHRvCithbGxvY2F0ZSBtZW1vcnkuIFdlIGRvbid0IGZpbGwgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCBvdXJzZWx2ZXMuIFJhdGhlcgogOmM6ZnVuYzpgUHlUeXBlX1JlYWR5YCBmaWxscyBpdCBmb3IgdXMgYnkgaW5oZXJpdGluZyBpdCBmcm9tIG91ciBiYXNlIGNsYXNzLAogd2hpY2ggaXMgOmNsYXNzOmBvYmplY3RgIGJ5IGRlZmF1bHQuICBNb3N0IHR5cGVzIHVzZSB0aGUgZGVmYXVsdCBhbGxvY2F0aW9uLgogCkBAIC00NDUsMTUgKzQ0NCw2IEBACiAgICBzdGF0aWMgUHlPYmplY3QgKgogICAgTm9kZHlfbmFtZShOb2RkeSogc2VsZikKICAgIHsKLSAgICAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgICAgZm9ybWF0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiJXMgJXMiKTsKLSAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgfQotCiAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAiZmlyc3QiKTsKICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NjQsMjAgKzQ1NCwxMyBAQAogICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICB9CiAKLSAgICAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICByZXN1bHQgPSBQeVN0cmluZ19Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgJVMiLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7CiAgICB9CiAKIFRoZSBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYXMgYSBDIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSA6Y2xhc3M6YE5vZGR5YCAob3IKIDpjbGFzczpgTm9kZHlgIHN1YmNsYXNzKSBpbnN0YW5jZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuICBNZXRob2RzIGFsd2F5cyB0YWtlIGFuCiBpbnN0YW5jZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIE1ldGhvZHMgb2Z0ZW4gdGFrZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkCi1hcmd1bWVudHMgYXMgd2VsbCwgYnV0IGluIHRoaXMgY2FzZWQgd2UgZG9uJ3QgdGFrZSBhbnkgYW5kIGRvbid0IG5lZWQgdG8gYWNjZXB0Cithcmd1bWVudHMgYXMgd2VsbCwgYnV0IGluIHRoaXMgY2FzZSB3ZSBkb24ndCB0YWtlIGFueSBhbmQgZG9uJ3QgbmVlZCB0byBhY2NlcHQKIGEgcG9zaXRpb25hbCBhcmd1bWVudCB0dXBsZSBvciBrZXl3b3JkIGFyZ3VtZW50IGRpY3Rpb25hcnkuIFRoaXMgbWV0aG9kIGlzCiBlcXVpdmFsZW50IHRvIHRoZSBQeXRob24gbWV0aG9kOjoKIApAQCAtMTEyNCw5ICsxMTA3LDYgQEAKIGF0IHRoZSBlbmQ7IGl0IGlzIGEgc2VudGluZWwgdGhhdCBtYXJrcyB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZQogOmF0dHI6YG1sX25hbWVgIGZpZWxkIG9mIHRoZSBzZW50aW5lbCBtdXN0IGJlICpOVUxMKi4KIAotWFhYIE5lZWQgdG8gcmVmZXIgdG8gc29tZSB1bmlmaWVkIGRpc2N1c3Npb24gb2YgdGhlIHN0cnVjdHVyZSBmaWVsZHMsIHNoYXJlZAotd2l0aCB0aGUgbmV4dCBzZWN0aW9uLgotCiBUaGUgc2Vjb25kIHRhYmxlIGlzIHVzZWQgdG8gZGVmaW5lIGF0dHJpYnV0ZXMgd2hpY2ggbWFwIGRpcmVjdGx5IHRvIGRhdGEgc3RvcmVkCiBpbiB0aGUgaW5zdGFuY2UuICBBIHZhcmlldHkgb2YgcHJpbWl0aXZlIEMgdHlwZXMgYXJlIHN1cHBvcnRlZCwgYW5kIGFjY2VzcyBtYXkKIGJlIHJlYWQtb25seSBvciByZWFkLXdyaXRlLiAgVGhlIHN0cnVjdHVyZXMgaW4gdGhlIHRhYmxlIGFyZSBkZWZpbmVkIGFzOjoKQEAgLTExNDYsOCArMTEyNiw2IEBACiBjb252ZXJ0IFB5dGhvbiB2YWx1ZXMgdG8gYW5kIGZyb20gQyB2YWx1ZXMuICBUaGUgOmF0dHI6YGZsYWdzYCBmaWVsZCBpcyB1c2VkIHRvCiBzdG9yZSBmbGFncyB3aGljaCBjb250cm9sIGhvdyB0aGUgYXR0cmlidXRlIGNhbiBiZSBhY2Nlc3NlZC4KIAotWFhYIE5lZWQgdG8gbW92ZSBzb21lIG9mIHRoaXMgdG8gYSBzaGFyZWQgc2VjdGlvbiEKLQogVGhlIGZvbGxvd2luZyBmbGFnIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiA6ZmlsZTpgc3RydWN0bWVtYmVyLmhgOyB0aGV5IG1heSBiZQogY29tYmluZWQgdXNpbmcgYml0d2lzZS1PUi4KIApAQCAtMTM3Miw3ICsxMzUwLDcgQEAKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogCi1YWFggc29tZSBmaWVsZHMgbmVlZCB0byBiZSBhZGRlZCBoZXJlLi4uIDo6Cis6OgogCiAgICAvKiBJdGVyYXRvcnMgKi8KICAgIGdldGl0ZXJmdW5jIHRwX2l0ZXI7CmRpZmYgLS1naXQgYS9Eb2MvZmFxL2Rlc2lnbi5yc3QgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKaW5kZXggN2M1MTE2ZC4uNmI4YThmZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9kZXNpZ24ucnN0CisrKyBiL0RvYy9mYXEvZGVzaWduLnJzdApAQCAtNTE1LDE0ICs1MTUsMTYgQEAKIAogRGljdGlvbmFyaWVzIHdvcmsgYnkgY29tcHV0aW5nIGEgaGFzaCBjb2RlIGZvciBlYWNoIGtleSBzdG9yZWQgaW4gdGhlIGRpY3Rpb25hcnkKIHVzaW5nIHRoZSA6ZnVuYzpgaGFzaGAgYnVpbHQtaW4gZnVuY3Rpb24uICBUaGUgaGFzaCBjb2RlIHZhcmllcyB3aWRlbHkgZGVwZW5kaW5nCi1vbiB0aGUga2V5OyBmb3IgZXhhbXBsZSwgIlB5dGhvbiIgaGFzaGVzIHRvIC01MzkyOTQyOTYgd2hpbGUgInB5dGhvbiIsIGEgc3RyaW5nCi10aGF0IGRpZmZlcnMgYnkgYSBzaW5nbGUgYml0LCBoYXNoZXMgdG8gMTE0MjMzMTk3Ni4gIFRoZSBoYXNoIGNvZGUgaXMgdGhlbiB1c2VkCi10byBjYWxjdWxhdGUgYSBsb2NhdGlvbiBpbiBhbiBpbnRlcm5hbCBhcnJheSB3aGVyZSB0aGUgdmFsdWUgd2lsbCBiZSBzdG9yZWQuCi1Bc3N1bWluZyB0aGF0IHlvdSdyZSBzdG9yaW5nIGtleXMgdGhhdCBhbGwgaGF2ZSBkaWZmZXJlbnQgaGFzaCB2YWx1ZXMsIHRoaXMKLW1lYW5zIHRoYXQgZGljdGlvbmFyaWVzIHRha2UgY29uc3RhbnQgdGltZSAtLSBPKDEpLCBpbiBjb21wdXRlciBzY2llbmNlIG5vdGF0aW9uCi0tLSB0byByZXRyaWV2ZSBhIGtleS4gIEl0IGFsc28gbWVhbnMgdGhhdCBubyBzb3J0ZWQgb3JkZXIgb2YgdGhlIGtleXMgaXMKLW1haW50YWluZWQsIGFuZCB0cmF2ZXJzaW5nIHRoZSBhcnJheSBhcyB0aGUgYGAua2V5cygpYGAgYW5kIGBgLml0ZW1zKClgYCBkbyB3aWxsCi1vdXRwdXQgdGhlIGRpY3Rpb25hcnkncyBjb250ZW50IGluIHNvbWUgYXJiaXRyYXJ5IGp1bWJsZWQgb3JkZXIuCitvbiB0aGUga2V5IGFuZCBhIHBlci1wcm9jZXNzIHNlZWQ7IGZvciBleGFtcGxlLCAiUHl0aG9uIiBjb3VsZCBoYXNoIHRvCistNTM5Mjk0Mjk2IHdoaWxlICJweXRob24iLCBhIHN0cmluZyB0aGF0IGRpZmZlcnMgYnkgYSBzaW5nbGUgYml0LCBjb3VsZCBoYXNoCit0byAxMTQyMzMxOTc2LiAgVGhlIGhhc2ggY29kZSBpcyB0aGVuIHVzZWQgdG8gY2FsY3VsYXRlIGEgbG9jYXRpb24gaW4gYW4KK2ludGVybmFsIGFycmF5IHdoZXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHN0b3JlZC4gIEFzc3VtaW5nIHRoYXQgeW91J3JlIHN0b3JpbmcKK2tleXMgdGhhdCBhbGwgaGF2ZSBkaWZmZXJlbnQgaGFzaCB2YWx1ZXMsIHRoaXMgbWVhbnMgdGhhdCBkaWN0aW9uYXJpZXMgdGFrZQorY29uc3RhbnQgdGltZSAtLSBPKDEpLCBpbiBjb21wdXRlciBzY2llbmNlIG5vdGF0aW9uIC0tIHRvIHJldHJpZXZlIGEga2V5LiAgSXQKK2Fsc28gbWVhbnMgdGhhdCBubyBzb3J0ZWQgb3JkZXIgb2YgdGhlIGtleXMgaXMgbWFpbnRhaW5lZCwgYW5kIHRyYXZlcnNpbmcgdGhlCithcnJheSBhcyB0aGUgYGAua2V5cygpYGAgYW5kIGBgLml0ZW1zKClgYCBkbyB3aWxsIG91dHB1dCB0aGUgZGljdGlvbmFyeSdzCitjb250ZW50IGluIHNvbWUgYXJiaXRyYXJ5IGp1bWJsZWQgb3JkZXIgdGhhdCBjYW4gY2hhbmdlIHdpdGggZXZlcnkgaW52b2NhdGlvbiBvZgorYSBwcm9ncmFtLgogCiAKIFdoeSBtdXN0IGRpY3Rpb25hcnkga2V5cyBiZSBpbW11dGFibGU/CkBAIC02MzQsNyArNjM2LDcgQEAKIFB5dGhvbiAyLjYgYWRkcyBhbiA6bW9kOmBhYmNgIG1vZHVsZSB0aGF0IGxldHMgeW91IGRlZmluZSBBYnN0cmFjdCBCYXNlIENsYXNzZXMKIChBQkNzKS4gIFlvdSBjYW4gdGhlbiB1c2UgOmZ1bmM6YGlzaW5zdGFuY2VgIGFuZCA6ZnVuYzpgaXNzdWJjbGFzc2AgdG8gY2hlY2sKIHdoZXRoZXIgYW4gaW5zdGFuY2Ugb3IgYSBjbGFzcyBpbXBsZW1lbnRzIGEgcGFydGljdWxhciBBQkMuICBUaGUKLTptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgZGVmaW5lcyBhIHNldCBvZiB1c2VmdWwgQUJDcyBzdWNoIGFzCis6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIG1vZHVsZSBkZWZpbmVzIGEgc2V0IG9mIHVzZWZ1bCBBQkNzIHN1Y2ggYXMKIDpjbGFzczpgSXRlcmFibGVgLCA6Y2xhc3M6YENvbnRhaW5lcmAsIGFuZCA6Y2xhc3M6YE11dGFibGVNYXBwaW5nYC4KIAogRm9yIFB5dGhvbiwgbWFueSBvZiB0aGUgYWR2YW50YWdlcyBvZiBpbnRlcmZhY2Ugc3BlY2lmaWNhdGlvbnMgY2FuIGJlIG9idGFpbmVkCmRpZmYgLS1naXQgYS9Eb2MvZmFxL2V4dGVuZGluZy5yc3QgYi9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKaW5kZXggN2M2ODRhMC4uZmEyNDVjNyAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9leHRlbmRpbmcucnN0CisrKyBiL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdApAQCAtNDQ1LDM0ICs0NDUsMyBAQAogVGhlIEJvb3N0IFB5dGhvbiBMaWJyYXJ5IChCUEwsIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcHl0aG9uL2RvYy9pbmRleC5odG1sKQogcHJvdmlkZXMgYSB3YXkgb2YgZG9pbmcgdGhpcyBmcm9tIEMrKyAoaS5lLiB5b3UgY2FuIGluaGVyaXQgZnJvbSBhbiBleHRlbnNpb24KIGNsYXNzIHdyaXR0ZW4gaW4gQysrIHVzaW5nIHRoZSBCUEwpLgotCi0KLVdoZW4gaW1wb3J0aW5nIG1vZHVsZSBYLCB3aHkgZG8gSSBnZXQgInVuZGVmaW5lZCBzeW1ib2w6IFB5VW5pY29kZVVDUzIqIj8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotWW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgdXNlcyBhIDQtYnl0ZSByZXByZXNlbnRhdGlvbiBmb3IgVW5pY29kZQotY2hhcmFjdGVycywgYnV0IHNvbWUgQyBleHRlbnNpb24gbW9kdWxlIHlvdSBhcmUgaW1wb3J0aW5nIHdhcyBjb21waWxlZCB1c2luZyBhCi1QeXRob24gdGhhdCB1c2VzIGEgMi1ieXRlIHJlcHJlc2VudGF0aW9uIGZvciBVbmljb2RlIGNoYXJhY3RlcnMgKHRoZSBkZWZhdWx0KS4KLQotSWYgaW5zdGVhZCB0aGUgbmFtZSBvZiB0aGUgdW5kZWZpbmVkIHN5bWJvbCBzdGFydHMgd2l0aCBgYFB5VW5pY29kZVVDUzRgYCwgdGhlCi1wcm9ibGVtIGlzIHRoZSByZXZlcnNlOiBQeXRob24gd2FzIGJ1aWx0IHVzaW5nIDItYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMsIGFuZAotdGhlIGV4dGVuc2lvbiBtb2R1bGUgd2FzIGNvbXBpbGVkIHVzaW5nIGEgUHl0aG9uIHdpdGggNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycy4KLQotVGhpcyBjYW4gZWFzaWx5IG9jY3VyIHdoZW4gdXNpbmcgcHJlLWJ1aWx0IGV4dGVuc2lvbiBwYWNrYWdlcy4gIFJlZEhhdCBMaW51eAotNy54LCBpbiBwYXJ0aWN1bGFyLCBwcm92aWRlZCBhICJweXRob24yIiBiaW5hcnkgdGhhdCBpcyBjb21waWxlZCB3aXRoIDQtYnl0ZQotVW5pY29kZS4gIFRoaXMgb25seSBjYXVzZXMgdGhlIGxpbmsgZmFpbHVyZSBpZiB0aGUgZXh0ZW5zaW9uIHVzZXMgYW55IG9mIHRoZQotYGBQeVVuaWNvZGVfKigpYGAgZnVuY3Rpb25zLiAgSXQgaXMgYWxzbyBhIHByb2JsZW0gaWYgYW4gZXh0ZW5zaW9uIHVzZXMgYW55IG9mCi10aGUgVW5pY29kZS1yZWxhdGVkIGZvcm1hdCBzcGVjaWZpZXJzIGZvciA6YzpmdW5jOmBQeV9CdWlsZFZhbHVlYCAob3Igc2ltaWxhcikgb3IKLXBhcmFtZXRlciBzcGVjaWZpY2F0aW9ucyBmb3IgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAuCi0KLVlvdSBjYW4gY2hlY2sgdGhlIHNpemUgb2YgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGEgUHl0aG9uIGludGVycHJldGVyIGlzIHVzaW5nIGJ5Ci1jaGVja2luZyB0aGUgdmFsdWUgb2Ygc3lzLm1heHVuaWNvZGU6Ci0KLSAgID4+PiBpbXBvcnQgc3lzCi0gICA+Pj4gaWYgc3lzLm1heHVuaWNvZGUgPiA2NTUzNToKLSAgIC4uLiAgICAgcHJpbnQoJ1VDUzQgYnVpbGQnKQotICAgLi4uIGVsc2U6Ci0gICAuLi4gICAgIHByaW50KCdVQ1MyIGJ1aWxkJykKLQotVGhlIG9ubHkgd2F5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSBpcyB0byB1c2UgZXh0ZW5zaW9uIG1vZHVsZXMgY29tcGlsZWQgd2l0aCBhCi1QeXRob24gYmluYXJ5IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIHNpemUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL0RvYy9mYXEvbGlicmFyeS5yc3QgYi9Eb2MvZmFxL2xpYnJhcnkucnN0CmluZGV4IDczODVjNTkuLmNhYjJkN2IgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvbGlicmFyeS5yc3QKKysrIGIvRG9jL2ZhcS9saWJyYXJ5LnJzdApAQCAtMzUxLDcgKzM1MSw3IEBACiAgICBXb3JrZXIgPFRocmVhZCh3b3JrZXIgMSwgc3RhcnRlZCAxMzAyODM4MzI3OTc0NTYpPiBydW5uaW5nIHdpdGggYXJndW1lbnQgNQogICAgLi4uCiAKLUNvbnN1bHQgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlsczsgdGhlIDpjbGFzczpgfnF1ZXVlLlF1ZXVlYGAKK0NvbnN1bHQgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlsczsgdGhlIDpjbGFzczpgfnF1ZXVlLlF1ZXVlYAogY2xhc3MgcHJvdmlkZXMgYSBmZWF0dXJlZnVsIGludGVyZmFjZS4KIAogCmRpZmYgLS1naXQgYS9Eb2MvZ2xvc3NhcnkucnN0IGIvRG9jL2dsb3NzYXJ5LnJzdAppbmRleCAzYzExZGU3Li4zNWJkYjk2IDEwMDY0NAotLS0gYS9Eb2MvZ2xvc3NhcnkucnN0CisrKyBiL0RvYy9nbG9zc2FyeS5yc3QKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgIHN1YmNsYXNzZXMsIHdoaWNoIGFyZSBjbGFzc2VzIHRoYXQgZG9uJ3QgaW5oZXJpdCBmcm9tIGEgY2xhc3MgYnV0IGFyZQogICAgICAgc3RpbGwgcmVjb2duaXplZCBieSA6ZnVuYzpgaXNpbnN0YW5jZWAgYW5kIDpmdW5jOmBpc3N1YmNsYXNzYDsgc2VlIHRoZQogICAgICAgOm1vZDpgYWJjYCBtb2R1bGUgZG9jdW1lbnRhdGlvbi4gIFB5dGhvbiBjb21lcyB3aXRoIG1hbnkgYnVpbHQtaW4gQUJDcyBmb3IKLSAgICAgIGRhdGEgc3RydWN0dXJlcyAoaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUpLCBudW1iZXJzIChpbiB0aGUKKyAgICAgIGRhdGEgc3RydWN0dXJlcyAoaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlKSwgbnVtYmVycyAoaW4gdGhlCiAgICAgICA6bW9kOmBudW1iZXJzYCBtb2R1bGUpLCBzdHJlYW1zIChpbiB0aGUgOm1vZDpgaW9gIG1vZHVsZSksIGltcG9ydCBmaW5kZXJzCiAgICAgICBhbmQgbG9hZGVycyAoaW4gdGhlIDptb2Q6YGltcG9ydGxpYi5hYmNgIG1vZHVsZSkuICBZb3UgY2FuIGNyZWF0ZSB5b3VyIG93bgogICAgICAgQUJDcyB3aXRoIHRoZSA6bW9kOmBhYmNgIG1vZHVsZS4KQEAgLTIwOSw5ICsyMDksOSBAQAogCiAgICBmaW5kZXIKICAgICAgIEFuIG9iamVjdCB0aGF0IHRyaWVzIHRvIGZpbmQgdGhlIDp0ZXJtOmBsb2FkZXJgIGZvciBhIG1vZHVsZS4gSXQgbXVzdAotICAgICAgaW1wbGVtZW50IGEgbWV0aG9kIG5hbWVkIDptZXRoOmBmaW5kX21vZHVsZWAuIFNlZSA6cGVwOmAzMDJgIGZvcgotICAgICAgZGV0YWlscyBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgZm9yIGFuCi0gICAgICA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AuCisgICAgICBpbXBsZW1lbnQgZWl0aGVyIGEgbWV0aG9kIG5hbWVkIDptZXRoOmBmaW5kX2xvYWRlcmAgb3IgYSBtZXRob2QgbmFtZWQKKyAgICAgIDptZXRoOmBmaW5kX21vZHVsZWAuIFNlZSA6cGVwOmAzMDJgIGFuZCA6cGVwOmA0MjBgIGZvciBkZXRhaWxzIGFuZAorICAgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgZm9yIGFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYC4KIAogICAgZmxvb3IgZGl2aXNpb24KICAgICAgIE1hdGhlbWF0aWNhbCBkaXZpc2lvbiB0aGF0IHJvdW5kcyBkb3duIHRvIG5lYXJlc3QgaW50ZWdlci4gIFRoZSBmbG9vcgpAQCAtMzE1LDYgKzMxNSwxNyBAQAogICAgICAgcm9sZSBpbiBwbGFjZXMgd2hlcmUgYSBjb25zdGFudCBoYXNoIHZhbHVlIGlzIG5lZWRlZCwgZm9yIGV4YW1wbGUgYXMgYSBrZXkKICAgICAgIGluIGEgZGljdGlvbmFyeS4KIAorICAgaW1wb3J0IHBhdGgKKyAgICAgIEEgbGlzdCBvZiBsb2NhdGlvbnMgKG9yIDp0ZXJtOmBwYXRoIGVudHJpZXMgPHBhdGggZW50cnk+YCkgdGhhdCBhcmUKKyAgICAgIHNlYXJjaGVkIGJ5IHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGZvciBtb2R1bGVzIHRvIGltcG9ydC4gRHVyaW5nCisgICAgICBpbXBvcnQsIHRoaXMgbGlzdCBvZiBsb2NhdGlvbnMgdXN1YWxseSBjb21lcyBmcm9tIDpkYXRhOmBzeXMucGF0aGAsIGJ1dAorICAgICAgZm9yIHN1YnBhY2thZ2VzIGl0IG1heSBhbHNvIGNvbWUgZnJvbSB0aGUgcGFyZW50IHBhY2thZ2UncyBgYF9fcGF0aF9fYGAKKyAgICAgIGF0dHJpYnV0ZS4KKworICAgaW1wb3J0aW5nCisgICAgICBUaGUgcHJvY2VzcyBieSB3aGljaCBQeXRob24gY29kZSBpbiBvbmUgbW9kdWxlIGlzIG1hZGUgYXZhaWxhYmxlIHRvCisgICAgICBQeXRob24gY29kZSBpbiBhbm90aGVyIG1vZHVsZS4KKwogICAgaW1wb3J0ZXIKICAgICAgIEFuIG9iamVjdCB0aGF0IGJvdGggZmluZHMgYW5kIGxvYWRzIGEgbW9kdWxlOyBib3RoIGEKICAgICAgIDp0ZXJtOmBmaW5kZXJgIGFuZCA6dGVybTpgbG9hZGVyYCBvYmplY3QuCkBAIC00MzQsMTIgKzQ0NSwxNyBAQAogCiAgICBtYXBwaW5nCiAgICAgICBBIGNvbnRhaW5lciBvYmplY3QgdGhhdCBzdXBwb3J0cyBhcmJpdHJhcnkga2V5IGxvb2t1cHMgYW5kIGltcGxlbWVudHMgdGhlCi0gICAgICBtZXRob2RzIHNwZWNpZmllZCBpbiB0aGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuTWFwcGluZ2Agb3IKLSAgICAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nYAorICAgICAgbWV0aG9kcyBzcGVjaWZpZWQgaW4gdGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nYCBvcgorICAgICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYAogICAgICAgOnJlZjpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxjb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM+YC4gIEV4YW1wbGVzCiAgICAgICBpbmNsdWRlIDpjbGFzczpgZGljdGAsIDpjbGFzczpgY29sbGVjdGlvbnMuZGVmYXVsdGRpY3RgLAogICAgICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGAgYW5kIDpjbGFzczpgY29sbGVjdGlvbnMuQ291bnRlcmAuCiAKKyAgIG1ldGEgcGF0aCBmaW5kZXIKKyAgICAgIEEgZmluZGVyIHJldHVybmVkIGJ5IGEgc2VhcmNoIG9mIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gIE1ldGEgcGF0aAorICAgICAgZmluZGVycyBhcmUgcmVsYXRlZCB0bywgYnV0IGRpZmZlcmVudCBmcm9tIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMKKyAgICAgIDxwYXRoIGVudHJ5IGZpbmRlcj5gLgorCiAgICBtZXRhY2xhc3MKICAgICAgIFRoZSBjbGFzcyBvZiBhIGNsYXNzLiAgQ2xhc3MgZGVmaW5pdGlvbnMgY3JlYXRlIGEgY2xhc3MgbmFtZSwgYSBjbGFzcwogICAgICAgZGljdGlvbmFyeSwgYW5kIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMuICBUaGUgbWV0YWNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvcgpAQCAtNDY0LDYgKzQ4MCwxMSBAQAogICAgICAgZm9yIGEgbWVtYmVyIGR1cmluZyBsb29rdXAuIFNlZSBgVGhlIFB5dGhvbiAyLjMgTWV0aG9kIFJlc29sdXRpb24gT3JkZXIKICAgICAgIDxodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8+YF8uCiAKKyAgIG1vZHVsZQorICAgICAgQW4gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGFuIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUuICBNb2R1bGVzCisgICAgICBoYXZlIGEgbmFtZXNwYWNlIGNvbnRhaW5pbmcgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTW9kdWxlcyBhcmUgbG9hZGVkCisgICAgICBpbnRvIFB5dGhvbiBieSB0aGUgcHJvY2VzcyBvZiA6dGVybTpgaW1wb3J0aW5nYC4KKwogICAgTVJPCiAgICAgICBTZWUgOnRlcm06YG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyYC4KIApAQCAtNDk2LDYgKzUxNywxMiBAQAogICAgICAgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBieSB0aGUgOm1vZDpgcmFuZG9tYCBhbmQgOm1vZDpgaXRlcnRvb2xzYAogICAgICAgbW9kdWxlcywgcmVzcGVjdGl2ZWx5LgogCisgICBuYW1lc3BhY2UgcGFja2FnZQorICAgICAgQSA6cGVwOmA0MjBgIDp0ZXJtOmBwYWNrYWdlYCB3aGljaCBzZXJ2ZXMgb25seSBhcyBhIGNvbnRhaW5lciBmb3IKKyAgICAgIHN1YnBhY2thZ2VzLiAgTmFtZXNwYWNlIHBhY2thZ2VzIG1heSBoYXZlIG5vIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uLAorICAgICAgYW5kIHNwZWNpZmljYWxseSBhcmUgbm90IGxpa2UgYSA6dGVybTpgcmVndWxhciBwYWNrYWdlYCBiZWNhdXNlIHRoZXkKKyAgICAgIGhhdmUgbm8gYGBfX2luaXRfXy5weWBgIGZpbGUuCisKICAgIG5lc3RlZCBzY29wZQogICAgICAgVGhlIGFiaWxpdHkgdG8gcmVmZXIgdG8gYSB2YXJpYWJsZSBpbiBhbiBlbmNsb3NpbmcgZGVmaW5pdGlvbi4gIEZvcgogICAgICAgaW5zdGFuY2UsIGEgZnVuY3Rpb24gZGVmaW5lZCBpbnNpZGUgYW5vdGhlciBmdW5jdGlvbiBjYW4gcmVmZXIgdG8KQEAgLTUxNiw2ICs1NDMsMzMgQEAKICAgICAgIChtZXRob2RzKS4gIEFsc28gdGhlIHVsdGltYXRlIGJhc2UgY2xhc3Mgb2YgYW55IDp0ZXJtOmBuZXctc3R5bGUKICAgICAgIGNsYXNzYC4KIAorICAgcGFja2FnZQorICAgICAgQSBQeXRob24gbW9kdWxlIHdoaWNoIGNhbiBjb250YWluIHN1Ym1vZHVsZXMgb3IgcmVjdXJzaXZlbHksCisgICAgICBzdWJwYWNrYWdlcy4gIFRlY2huaWNhbGx5LCBhIHBhY2thZ2UgaXMgYSBQeXRob24gbW9kdWxlIHdpdGggYW4KKyAgICAgIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuCisKKyAgIHBhdGggZW50cnkKKyAgICAgIEEgc2luZ2xlIGxvY2F0aW9uIG9uIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIHdoaWNoIHRoZSA6dGVybTpgcGF0aAorICAgICAgYmFzZWQgZmluZGVyYCBjb25zdWx0cyB0byBmaW5kIG1vZHVsZXMgZm9yIGltcG9ydGluZy4KKworICAgcGF0aCBlbnRyeSBmaW5kZXIKKyAgICAgIEEgOnRlcm06YGZpbmRlcmAgcmV0dXJuZWQgYnkgYSBjYWxsYWJsZSBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgCisgICAgICAoaS5lLiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGhvb2tgKSB3aGljaCBrbm93cyBob3cgdG8gbG9jYXRlIG1vZHVsZXMgZ2l2ZW4KKyAgICAgIGEgOnRlcm06YHBhdGggZW50cnlgLgorCisgICBwYXRoIGVudHJ5IGhvb2sKKyAgICAgIEEgY2FsbGFibGUgb24gdGhlIDpkYXRhOmBzeXMucGF0aF9ob29rYCBsaXN0IHdoaWNoIHJldHVybnMgYSA6dGVybTpgcGF0aAorICAgICAgZW50cnkgZmluZGVyYCBpZiBpdCBrbm93cyBob3cgdG8gZmluZCBtb2R1bGVzIG9uIGEgc3BlY2lmaWMgOnRlcm06YHBhdGgKKyAgICAgIGVudHJ5YC4KKworICAgcGF0aCBiYXNlZCBmaW5kZXIKKyAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAorICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KKworICAgcG9ydGlvbgorICAgICAgQSBzZXQgb2YgZmlsZXMgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IChwb3NzaWJseSBzdG9yZWQgaW4gYSB6aXAgZmlsZSkKKyAgICAgIHRoYXQgY29udHJpYnV0ZSB0byBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhcyBkZWZpbmVkIGluIDpwZXA6YDQyMGAuCisKICAgIHBvc2l0aW9uYWwgYXJndW1lbnQKICAgICAgIFRoZSBhcmd1bWVudHMgYXNzaWduZWQgdG8gbG9jYWwgbmFtZXMgaW5zaWRlIGEgZnVuY3Rpb24gb3IgbWV0aG9kLAogICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGdpdmVuIGluIHRoZSBjYWxsLiAgYGAqYGAgaXMKQEAgLTUyMyw5ICs1NzcsMjMgQEAKICAgICAgIGRlZmluaXRpb24pLCBvciBwYXNzIHNldmVyYWwgYXJndW1lbnRzIGFzIGEgbGlzdCB0byBhIGZ1bmN0aW9uLiAgU2VlCiAgICAgICA6dGVybTpgYXJndW1lbnRgLgogCisgICBwcm92aXNpb25hbCBwYWNrYWdlCisgICAgICBBIHByb3Zpc2lvbmFsIHBhY2thZ2UgaXMgb25lIHdoaWNoIGhhcyBiZWVuIGRlbGliZXJhdGVseSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuICBXaGlsZSBtYWpvcgorICAgICAgY2hhbmdlcyB0byBzdWNoIHBhY2thZ2VzIGFyZSBub3QgZXhwZWN0ZWQsIGFzIGxvbmcgYXMgdGhleSBhcmUgbWFya2VkCisgICAgICBwcm92aXNpb25hbCwgYmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwKKyAgICAgIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSBjb3JlIGRldmVsb3BlcnMuICBTdWNoCisgICAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIG1hZGUgZ3JhdHVpdG91c2x5IC0tIHRoZXkgd2lsbCBvY2N1ciBvbmx5IGlmIHNlcmlvdXMKKyAgICAgIGZsYXdzIGFyZSB1bmNvdmVyZWQgdGhhdCB3ZXJlIG1pc3NlZCBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mIHRoZQorICAgICAgcGFja2FnZS4KKworICAgICAgVGhpcyBwcm9jZXNzIGFsbG93cyB0aGUgc3RhbmRhcmQgbGlicmFyeSB0byBjb250aW51ZSB0byBldm9sdmUgb3ZlcgorICAgICAgdGltZSwgd2l0aG91dCBsb2NraW5nIGluIHByb2JsZW1hdGljIGRlc2lnbiBlcnJvcnMgZm9yIGV4dGVuZGVkIHBlcmlvZHMKKyAgICAgIG9mIHRpbWUuICBTZWUgOnBlcDpgNDExYCBmb3IgbW9yZSBkZXRhaWxzLgorCiAgICBQeXRob24gMzAwMAotICAgICAgTmlja25hbWUgZm9yIHRoZSBQeXRob24gMy54IHJlbGVhc2UgbGluZSAoY29pbmVkIGxvbmcgYWdvIHdoZW4gdGhlIHJlbGVhc2UKLSAgICAgIG9mIHZlcnNpb24gMyB3YXMgc29tZXRoaW5nIGluIHRoZSBkaXN0YW50IGZ1dHVyZS4pICBUaGlzIGlzIGFsc28KKyAgICAgIE5pY2tuYW1lIGZvciB0aGUgUHl0aG9uIDMueCByZWxlYXNlIGxpbmUgKGNvaW5lZCBsb25nIGFnbyB3aGVuIHRoZQorICAgICAgcmVsZWFzZSBvZiB2ZXJzaW9uIDMgd2FzIHNvbWV0aGluZyBpbiB0aGUgZGlzdGFudCBmdXR1cmUuKSAgVGhpcyBpcyBhbHNvCiAgICAgICBhYmJyZXZpYXRlZCAiUHkzayIuCiAKICAgIFB5dGhvbmljCkBAIC01NDQsNiArNjEyLDMyIEBACiAgICAgICAgICBmb3IgcGllY2UgaW4gZm9vZDoKICAgICAgICAgICAgICBwcmludChwaWVjZSkKIAorICAgcXVhbGlmaWVkIG5hbWUKKyAgICAgIEEgZG90dGVkIG5hbWUgc2hvd2luZyB0aGUgInBhdGgiIGZyb20gYSBtb2R1bGUncyBnbG9iYWwgc2NvcGUgdG8gYQorICAgICAgY2xhc3MsIGZ1bmN0aW9uIG9yIG1ldGhvZCBkZWZpbmVkIGluIHRoYXQgbW9kdWxlLCBhcyBkZWZpbmVkIGluCisgICAgICA6cGVwOmAzMTU1YC4gIEZvciB0b3AtbGV2ZWwgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLCB0aGUgcXVhbGlmaWVkIG5hbWUKKyAgICAgIGlzIHRoZSBzYW1lIGFzIHRoZSBvYmplY3QncyBuYW1lOjoKKworICAgICAgICAgPj4+IGNsYXNzIEM6CisgICAgICAgICAuLi4gICAgIGNsYXNzIEQ6CisgICAgICAgICAuLi4gICAgICAgICBkZWYgbWV0aChzZWxmKToKKyAgICAgICAgIC4uLiAgICAgICAgICAgICBwYXNzCisgICAgICAgICAuLi4KKyAgICAgICAgID4+PiBDLl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MnCisgICAgICAgICA+Pj4gQy5ELl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MuRCcKKyAgICAgICAgID4+PiBDLkQubWV0aC5fX3F1YWxuYW1lX18KKyAgICAgICAgICdDLkQubWV0aCcKKworICAgICAgV2hlbiB1c2VkIHRvIHJlZmVyIHRvIG1vZHVsZXMsIHRoZSAqZnVsbHkgcXVhbGlmaWVkIG5hbWUqIG1lYW5zIHRoZQorICAgICAgZW50aXJlIGRvdHRlZCBwYXRoIHRvIHRoZSBtb2R1bGUsIGluY2x1ZGluZyBhbnkgcGFyZW50IHBhY2thZ2VzLAorICAgICAgZS5nLiBgYGVtYWlsLm1pbWUudGV4dGBgOjoKKworICAgICAgICAgPj4+IGltcG9ydCBlbWFpbC5taW1lLnRleHQKKyAgICAgICAgID4+PiBlbWFpbC5taW1lLnRleHQuX19uYW1lX18KKyAgICAgICAgICdlbWFpbC5taW1lLnRleHQnCisKICAgIHJlZmVyZW5jZSBjb3VudAogICAgICAgVGhlIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIGFuIG9iamVjdC4gIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbgogICAgICAgb2JqZWN0IGRyb3BzIHRvIHplcm8sIGl0IGlzIGRlYWxsb2NhdGVkLiAgUmVmZXJlbmNlIGNvdW50aW5nIGlzCkBAIC01NTIsNiArNjQ2LDEwIEBACiAgICAgICA6ZnVuYzpgfnN5cy5nZXRyZWZjb3VudGAgZnVuY3Rpb24gdGhhdCBwcm9ncmFtbWVycyBjYW4gY2FsbCB0byByZXR1cm4gdGhlCiAgICAgICByZWZlcmVuY2UgY291bnQgZm9yIGEgcGFydGljdWxhciBvYmplY3QuCiAKKyAgIHJlZ3VsYXIgcGFja2FnZQorICAgICAgQSB0cmFkaXRpb25hbCA6dGVybTpgcGFja2FnZWAsIHN1Y2ggYXMgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbgorICAgICAgYGBfX2luaXRfXy5weWBgIGZpbGUuCisKICAgIF9fc2xvdHNfXwogICAgICAgQSBkZWNsYXJhdGlvbiBpbnNpZGUgYSBjbGFzcyB0aGF0IHNhdmVzIG1lbW9yeSBieSBwcmUtZGVjbGFyaW5nIHNwYWNlIGZvcgogICAgICAgaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgZWxpbWluYXRpbmcgaW5zdGFuY2UgZGljdGlvbmFyaWVzLiAgVGhvdWdoCkBAIC01ODYsNiArNjg0LDE0IEBACiAgICAgICBhbiA6dGVybTpgZXhwcmVzc2lvbmAgb3IgYSBvbmUgb2Ygc2V2ZXJhbCBjb25zdHJ1Y3RzIHdpdGggYSBrZXl3b3JkLCBzdWNoCiAgICAgICBhcyA6a2V5d29yZDpgaWZgLCA6a2V5d29yZDpgd2hpbGVgIG9yIDprZXl3b3JkOmBmb3JgLgogCisgICBzdHJ1Y3Qgc2VxdWVuY2UKKyAgICAgIEEgdHVwbGUgd2l0aCBuYW1lZCBlbGVtZW50cy4gU3RydWN0IHNlcXVlbmNlcyBleHBvc2UgYW4gaW50ZXJmYWNlIHNpbWlsYXIKKyAgICAgIHRvIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaW4gdGhhdCBlbGVtZW50cyBjYW4gZWl0aGVyIGJlIGFjY2Vzc2VkIGVpdGhlciBieQorICAgICAgaW5kZXggb3IgYXMgYW4gYXR0cmlidXRlLiBIb3dldmVyLCB0aGV5IGRvIG5vdCBoYXZlIGFueSBvZiB0aGUgbmFtZWQgdHVwbGUKKyAgICAgIG1ldGhvZHMgbGlrZSA6bWV0aDpgfmNvbGxlY3Rpb25zLnNvbWVuYW1lZHR1cGxlLl9tYWtlYCBvcgorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5zb21lbmFtZWR0dXBsZS5fYXNkaWN0YC4gRXhhbXBsZXMgb2Ygc3RydWN0IHNlcXVlbmNlcworICAgICAgaW5jbHVkZSA6ZGF0YTpgc3lzLmZsb2F0X2luZm9gIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmBvcy5zdGF0YC4KKwogICAgdHJpcGxlLXF1b3RlZCBzdHJpbmcKICAgICAgIEEgc3RyaW5nIHdoaWNoIGlzIGJvdW5kIGJ5IHRocmVlIGluc3RhbmNlcyBvZiBlaXRoZXIgYSBxdW90YXRpb24gbWFyawogICAgICAgKCIpIG9yIGFuIGFwb3N0cm9waGUgKCcpLiAgV2hpbGUgdGhleSBkb24ndCBwcm92aWRlIGFueSBmdW5jdGlvbmFsaXR5CmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QgYi9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QKaW5kZXggMTYxNmY2Ny4uMGI1MTNmOSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0CisrKyBiL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdApAQCAtMzYsOSArMzYsNyBAQAogbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlIGRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24KIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmQgaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLgogV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlIHByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMKLXdlcmUgZGVmaW5lZC4gIE5vdGUgdGhhdCBkZXNjcmlwdG9ycyBhcmUgb25seSBpbnZva2VkIGZvciBuZXcgc3R5bGUgb2JqZWN0cyBvcgotY2xhc3NlcyAoYSBjbGFzcyBpcyBuZXcgc3R5bGUgaWYgaXQgaW5oZXJpdHMgZnJvbSA6Y2xhc3M6YG9iamVjdGAgb3IKLTpjbGFzczpgdHlwZWApLgord2VyZSBkZWZpbmVkLgogCiBEZXNjcmlwdG9ycyBhcmUgYSBwb3dlcmZ1bCwgZ2VuZXJhbCBwdXJwb3NlIHByb3RvY29sLiAgVGhleSBhcmUgdGhlIG1lY2hhbmlzbQogYmVoaW5kIHByb3BlcnRpZXMsIG1ldGhvZHMsIHN0YXRpYyBtZXRob2RzLCBjbGFzcyBtZXRob2RzLCBhbmQgOmZ1bmM6YHN1cGVyKClgLgpAQCAtODksOCArODcsNiBAQAogaXMgaW52b2tlZCBhY2NvcmRpbmcgdG8gdGhlIHByZWNlZGVuY2UgcnVsZXMgbGlzdGVkIGJlbG93LgogCiBUaGUgZGV0YWlscyBvZiBpbnZvY2F0aW9uIGRlcGVuZCBvbiB3aGV0aGVyIGBgb2JqYGAgaXMgYW4gb2JqZWN0IG9yIGEgY2xhc3MuCi1FaXRoZXIgd2F5LCBkZXNjcmlwdG9ycyBvbmx5IHdvcmsgZm9yIG5ldyBzdHlsZSBvYmplY3RzIGFuZCBjbGFzc2VzLiAgQSBjbGFzcyBpcwotbmV3IHN0eWxlIGlmIGl0IGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBvYmplY3RgLgogCiBGb3Igb2JqZWN0cywgdGhlIG1hY2hpbmVyeSBpcyBpbiA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gIHdoaWNoCiB0cmFuc2Zvcm1zIGBgYi54YGAgaW50byBgYHR5cGUoYikuX19kaWN0X19bJ3gnXS5fX2dldF9fKGIsIHR5cGUoYikpYGAuICBUaGUKQEAgLTExNSw3ICsxMTEsNiBAQAogCiAqIGRlc2NyaXB0b3JzIGFyZSBpbnZva2VkIGJ5IHRoZSA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgbWV0aG9kCiAqIG92ZXJyaWRpbmcgOm1ldGg6YF9fZ2V0YXR0cmlidXRlX19gIHByZXZlbnRzIGF1dG9tYXRpYyBkZXNjcmlwdG9yIGNhbGxzCi0qIDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIG5ldyBzdHlsZSBjbGFzc2VzIGFuZCBvYmplY3RzCiAqIDptZXRoOmBvYmplY3QuX19nZXRhdHRyaWJ1dGVfX2AgYW5kIDptZXRoOmB0eXBlLl9fZ2V0YXR0cmlidXRlX19gIG1ha2UKICAgZGlmZmVyZW50IGNhbGxzIHRvIDptZXRoOmBfX2dldF9fYC4KICogZGF0YSBkZXNjcmlwdG9ycyBhbHdheXMgb3ZlcnJpZGUgaW5zdGFuY2UgZGljdGlvbmFyaWVzLgpAQCAtMTI4LDEwICsxMjMsNyBAQAogYGBtYGAgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiAgSWYgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBgYG1gYCByZXZlcnRzIHRvIGEKIHNlYXJjaCB1c2luZyA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gLgogCi1Ob3RlLCBpbiBQeXRob24gMi4yLCBgYHN1cGVyKEIsIG9iaikubSgpYGAgd291bGQgb25seSBpbnZva2UgOm1ldGg6YF9fZ2V0X19gIGlmCi1gYG1gYCB3YXMgYSBkYXRhIGRlc2NyaXB0b3IuICBJbiBQeXRob24gMi4zLCBub24tZGF0YSBkZXNjcmlwdG9ycyBhbHNvIGdldAotaW52b2tlZCB1bmxlc3MgYW4gb2xkLXN0eWxlIGNsYXNzIGlzIGludm9sdmVkLiAgVGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlCi1pbiA6YzpmdW5jOmBzdXBlcl9nZXRhdHRybygpYCBpbgorVGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGluIDpjOmZ1bmM6YHN1cGVyX2dldGF0dHJvKClgIGluCiBgT2JqZWN0cy90eXBlb2JqZWN0LmMgPGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy92aWV3L3B5dGhvbi90cnVuay9PYmplY3RzL3R5cGVvYmplY3QuYz92aWV3PW1hcmt1cD5gXwogYW5kIGEgcHVyZSBQeXRob24gZXF1aXZhbGVudCBjYW4gYmUgZm91bmQgaW4gYEd1aWRvJ3MgVHV0b3JpYWxgXy4KIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0IGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CmluZGV4IGViYmIyMjkuLmI2MjFhODQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdAorKysgYi9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKQEAgLTI5MiwxMyArMjkyLDE0IEBACiBBcHBseWluZyA6ZnVuYzpgaXRlcmAgdG8gYSBkaWN0aW9uYXJ5IGFsd2F5cyBsb29wcyBvdmVyIHRoZSBrZXlzLCBidXQKIGRpY3Rpb25hcmllcyBoYXZlIG1ldGhvZHMgdGhhdCByZXR1cm4gb3RoZXIgaXRlcmF0b3JzLiAgSWYgeW91IHdhbnQgdG8gaXRlcmF0ZQogb3ZlciB2YWx1ZXMgb3Iga2V5L3ZhbHVlIHBhaXJzLCB5b3UgY2FuIGV4cGxpY2l0bHkgY2FsbCB0aGUKLTptZXRoOmB+ZGljdC52YWx1ZXNgIG9yIDptZXRoOmB+ZGljdC5pdGVtc2AgbWV0aG9kcyB0byBnZXQgYW4gYXBwcm9wcmlhdGUgaXRlcmF0b3IuCis6bWV0aDpgfmRpY3QudmFsdWVzYCBvciA6bWV0aDpgfmRpY3QuaXRlbXNgIG1ldGhvZHMgdG8gZ2V0IGFuIGFwcHJvcHJpYXRlCitpdGVyYXRvci4KIAogVGhlIDpmdW5jOmBkaWN0YCBjb25zdHJ1Y3RvciBjYW4gYWNjZXB0IGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBhIGZpbml0ZSBzdHJlYW0KIG9mIGBgKGtleSwgdmFsdWUpYGAgdHVwbGVzOgogCiAgICAgPj4+IEwgPSBbKCdJdGFseScsICdSb21lJyksICgnRnJhbmNlJywgJ1BhcmlzJyksICgnVVMnLCAnV2FzaGluZ3RvbiBEQycpXQotICAgID4+PiBkaWN0KGl0ZXIoTCkpCisgICAgPj4+IGRpY3QoaXRlcihMKSkgICNkb2N0ZXN0OiArU0tJUAogICAgIHsnSXRhbHknOiAnUm9tZScsICdVUyc6ICdXYXNoaW5ndG9uIERDJywgJ0ZyYW5jZSc6ICdQYXJpcyd9CiAKIEZpbGVzIGFsc28gc3VwcG9ydCBpdGVyYXRpb24gYnkgY2FsbGluZyB0aGUgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggYTExZDNkYS4uZjQ0ZThjMCAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICB1cmxsaWIyLnJzdAogICAgd2Vic2VydmVycy5yc3QKICAgIGFyZ3BhcnNlLnJzdAorICAgaXBhZGRyZXNzLnJzdAogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdCBiL0RvYy9ob3d0by9pcGFkZHJlc3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMGZmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdApAQCAtMCwwICsxLDM0MSBAQAorLi4gX2lwYWRkcmVzcy1ob3d0bzoKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitBbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGlwYWRkcmVzcyBtb2R1bGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCis6YXV0aG9yOiBQZXRlciBNb29keQorOmF1dGhvcjogTmljayBDb2dobGFuCisKKy4uIHRvcGljOjogT3ZlcnZpZXcKKworICAgVGhpcyBkb2N1bWVudCBhaW1zIHRvIHByb3ZpZGUgYSBnZW50bGUgaW50cm9kdWN0aW9uIHRvIHRoZQorICAgOm1vZDpgaXBhZGRyZXNzYCBtb2R1bGUuIEl0IGlzIGFpbWVkIHByaW1hcmlseSBhdCB1c2VycyB0aGF0IGFyZW4ndAorICAgYWxyZWFkeSBmYW1pbGlhciB3aXRoIElQIG5ldHdvcmtpbmcgdGVybWlub2xvZ3ksIGJ1dCBtYXkgYWxzbyBiZSB1c2VmdWwKKyAgIHRvIG5ldHdvcmsgZW5naW5lZXJzIHdhbnRpbmcgYW4gb3ZlcnZpZXcgb2YgaG93IDptb2Q6YGlwYWRkcmVzc2AKKyAgIHJlcHJlc2VudHMgSVAgbmV0d29yayBhZGRyZXNzaW5nIGNvbmNlcHRzLgorCisKK0NyZWF0aW5nIEFkZHJlc3MvTmV0d29yay9JbnRlcmZhY2Ugb2JqZWN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NpbmNlIDptb2Q6YGlwYWRkcmVzc2AgaXMgYSBtb2R1bGUgZm9yIGluc3BlY3RpbmcgYW5kIG1hbmlwdWxhdGluZyBJUCBhZGRyZXNzZXMsCit0aGUgZmlyc3QgdGhpbmcgeW91J2xsIHdhbnQgdG8gZG8gaXMgY3JlYXRlIHNvbWUgb2JqZWN0cy4gIFlvdSBjYW4gdXNlCis6bW9kOmBpcGFkZHJlc3NgIHRvIGNyZWF0ZSBvYmplY3RzIGZyb20gc3RyaW5ncyBhbmQgaW50ZWdlcnMuCisKKworQSBOb3RlIG9uIElQIFZlcnNpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIHJlYWRlcnMgdGhhdCBhcmVuJ3QgcGFydGljdWxhcmx5IGZhbWlsaWFyIHdpdGggSVAgYWRkcmVzc2luZywgaXQncworaW1wb3J0YW50IHRvIGtub3cgdGhhdCB0aGUgSW50ZXJuZXQgUHJvdG9jb2wgaXMgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzCitvZiBtb3ZpbmcgZnJvbSB2ZXJzaW9uIDQgb2YgdGhlIHByb3RvY29sIHRvIHZlcnNpb24gNi4gVGhpcyB0cmFuc2l0aW9uIGlzCitvY2N1cnJpbmcgbGFyZ2VseSBiZWNhdXNlIHZlcnNpb24gNCBvZiB0aGUgcHJvdG9jb2wgZG9lc24ndCBwcm92aWRlIGVub3VnaAorYWRkcmVzc2VzIHRvIGhhbmRsZSB0aGUgbmVlZHMgb2YgdGhlIHdob2xlIHdvcmxkLCBlc3BlY2lhbGx5IGdpdmVuIHRoZQoraW5jcmVhc2luZyBudW1iZXIgb2YgZGV2aWNlcyB3aXRoIGRpcmVjdCBjb25uZWN0aW9ucyB0byB0aGUgaW50ZXJuZXQuCisKK0V4cGxhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byB2ZXJzaW9ucyBvZiB0aGUKK3Byb3RvY29sIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBpbnRyb2R1Y3Rpb24sIGJ1dCByZWFkZXJzIG5lZWQgdG8gYXQKK2xlYXN0IGJlIGF3YXJlIHRoYXQgdGhlc2UgdHdvIHZlcnNpb25zIGV4aXN0LCBhbmQgaXQgd2lsbCBzb21ldGltZXMgYmUKK25lY2Vzc2FyeSB0byBmb3JjZSB0aGUgdXNlIG9mIG9uZSB2ZXJzaW9uIG9yIHRoZSBvdGhlci4KKworCitJUCBIb3N0IEFkZHJlc3NlcworLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkcmVzc2VzLCBvZnRlbiByZWZlcnJlZCB0byBhcyAiaG9zdCBhZGRyZXNzZXMiIGFyZSB0aGUgbW9zdCBiYXNpYyB1bml0Cit3aGVuIHdvcmtpbmcgd2l0aCBJUCBhZGRyZXNzaW5nLiBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhZGRyZXNzZXMgaXMKK3RvIHVzZSB0aGUgOmZ1bmM6YGlwYWRkcmVzcy5pcF9hZGRyZXNzYCBmYWN0b3J5IGZ1bmN0aW9uLCB3aGljaCBhdXRvbWF0aWNhbGx5CitkZXRlcm1pbmVzIHdoZXRoZXIgdG8gY3JlYXRlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzIGJhc2VkIG9uIHRoZSBwYXNzZWQgaW4KK3ZhbHVlOgorCisuLiB0ZXN0c2V0dXA6OgorICAgPj4+IGltcG9ydCBpcGFkZHJlc3MKKworOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisKK0FkZHJlc3NlcyBjYW4gYWxzbyBiZSBjcmVhdGVkIGRpcmVjdGx5IGZyb20gaW50ZWdlcnMuIFZhbHVlcyB0aGF0IHdpbGwKK2ZpdCB3aXRoaW4gMzIgYml0cyBhcmUgYXNzdW1lZCB0byBiZSBJUHY0IGFkZHJlc3Nlczo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygzMjIxMjI1OTg1KQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQorCitUbyBmb3JjZSB0aGUgdXNlIG9mIElQdjQgb3IgSVB2NiBhZGRyZXNzZXMsIHRoZSByZWxldmFudCBjbGFzc2VzIGNhbiBiZQoraW52b2tlZCBkaXJlY3RseS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHRvIGZvcmNlIGNyZWF0aW9uIG9mIElQdjYKK2FkZHJlc3NlcyBmb3Igc21hbGwgaW50ZWdlcnM6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoMSkKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMSkKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoMSkKKyAgIElQdjZBZGRyZXNzKCc6OjEnKQorCisKK0RlZmluaW5nIE5ldHdvcmtzCistLS0tLS0tLS0tLS0tLS0tLQorCitIb3N0IGFkZHJlc3NlcyBhcmUgdXN1YWxseSBncm91cGVkIHRvZ2V0aGVyIGludG8gSVAgbmV0d29ya3MsIHNvCis6bW9kOmBpcGFkZHJlc3NgIHByb3ZpZGVzIGEgd2F5IHRvIGNyZWF0ZSwgaW5zcGVjdCBhbmQgbWFuaXB1bGF0ZSBuZXR3b3JrCitkZWZpbml0aW9ucy4gSVAgbmV0d29yayBvYmplY3RzIGFyZSBjb25zdHJ1Y3RlZCBmcm9tIHN0cmluZ3MgdGhhdCBkZWZpbmUgdGhlCityYW5nZSBvZiBob3N0IGFkZHJlc3NlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoYXQgbmV0d29yay4gVGhlIHNpbXBsZXN0IGZvcm0KK2ZvciB0aGF0IGluZm9ybWF0aW9uIGlzIGEgIm5ldHdvcmsgYWRkcmVzcy9uZXR3b3JrIHByZWZpeCIgcGFpciwgd2hlcmUgdGhlCitwcmVmaXggZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgYml0cyB0aGF0IGFyZSBjb21wYXJlZCB0byBkZXRlcm1pbmUKK3doZXRoZXIgb3Igbm90IGFuIGFkZHJlc3MgaXMgcGFydCBvZiB0aGUgbmV0d29yayBhbmQgdGhlIG5ldHdvcmsgYWRkcmVzcworZGVmaW5lcyB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgdGhvc2UgYml0cy4KKworQXMgZm9yIGFkZHJlc3NlcywgYSBmYWN0b3J5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRoYXQgZGV0ZXJtaW5lcyB0aGUgY29ycmVjdAorSVAgdmVyc2lvbiBhdXRvbWF0aWNhbGx5OjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKworTmV0d29yayBvYmplY3RzIGNhbm5vdCBoYXZlIGFueSBob3N0IGJpdHMgc2V0LiAgVGhlIHByYWN0aWNhbCBlZmZlY3Qgb2YgdGhpcworaXMgdGhhdCBgYDE5Mi4wLjIuMS8yNGBgIGRvZXMgbm90IGRlc2NyaWJlIGEgbmV0d29yay4gIFN1Y2ggZGVmaW5pdGlvbnMgYXJlCityZWZlcnJlZCB0byBhcyBpbnRlcmZhY2Ugb2JqZWN0cyBzaW5jZSB0aGUgaXAtb24tYS1uZXR3b3JrIG5vdGF0aW9uIGlzCitjb21tb25seSB1c2VkIHRvIGRlc2NyaWJlIG5ldHdvcmsgaW50ZXJmYWNlcyBvZiBhIGNvbXB1dGVyIG9uIGEgZ2l2ZW4gbmV0d29yaworYW5kIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbiB0aGUgbmV4dCBzZWN0aW9uLgorCitCeSBkZWZhdWx0LCBhdHRlbXB0aW5nIHRvIGNyZWF0ZSBhIG5ldHdvcmsgb2JqZWN0IHdpdGggaG9zdCBiaXRzIHNldCB3aWxsCityZXN1bHQgaW4gOmV4YzpgVmFsdWVFcnJvcmAgYmVpbmcgcmFpc2VkLiBUbyByZXF1ZXN0IHRoYXQgdGhlCithZGRpdGlvbmFsIGJpdHMgaW5zdGVhZCBiZSBjb2VyY2VkIHRvIHplcm8sIHRoZSBmbGFnIGBgc3RyaWN0PUZhbHNlYGAgY2FuCitiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjEvMjQnKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICBWYWx1ZUVycm9yOiAxOTIuMC4yLjEvMjQgaGFzIGhvc3QgYml0cyBzZXQKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4xLzI0Jywgc3RyaWN0PUZhbHNlKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKK1doaWxlIHRoZSBzdHJpbmcgZm9ybSBvZmZlcnMgc2lnbmlmaWNhbnRseSBtb3JlIGZsZXhpYmlsaXR5LCBuZXR3b3JrcyBjYW4KK2Fsc28gYmUgZGVmaW5lZCB3aXRoIGludGVnZXJzLCBqdXN0IGxpa2UgaG9zdCBhZGRyZXNzZXMuIEluIHRoaXMgY2FzZSwgdGhlCituZXR3b3JrIGlzIGNvbnNpZGVyZWQgdG8gY29udGFpbiBvbmx5IHRoZSBzaW5nbGUgYWRkcmVzcyBpZGVudGlmaWVkIGJ5IHRoZQoraW50ZWdlciwgc28gdGhlIG5ldHdvcmsgcHJlZml4IGluY2x1ZGVzIHRoZSBlbnRpcmUgbmV0d29yayBhZGRyZXNzOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKDMyMjEyMjU5ODQpCisgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzMyJykKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yayg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzEyOCcpCisKK0FzIHdpdGggYWRkcmVzc2VzLCBjcmVhdGlvbiBvZiBhIHBhcnRpY3VsYXIga2luZCBvZiBuZXR3b3JrIGNhbiBiZSBmb3JjZWQKK2J5IGNhbGxpbmcgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgdGhlIGZhY3RvcnkKK2Z1bmN0aW9uLgorCisKK0hvc3QgSW50ZXJmYWNlcworLS0tLS0tLS0tLS0tLS0tCisKK0FzIG1lbnRpb25lZCBqdXN0IGFib3ZlLCBpZiB5b3UgbmVlZCB0byBkZXNjcmliZSBhbiBhZGRyZXNzIG9uIGEgcGFydGljdWxhcgorbmV0d29yaywgbmVpdGhlciB0aGUgYWRkcmVzcyBub3IgdGhlIG5ldHdvcmsgY2xhc3NlcyBhcmUgc3VmZmljaWVudC4KK05vdGF0aW9uIGxpa2UgYGAxOTIuMC4yLjEvMjRgYCBpcyBjb21tb25seSB1c2VkIGJ5IG5ldHdvcmsgZW5naW5lZXJzIGFuZCB0aGUKK3Blb3BsZSB3aG8gd3JpdGUgdG9vbHMgZm9yIGZpcmV3YWxscyBhbmQgcm91dGVycyBhcyBzaG9ydGhhbmQgZm9yICJ0aGUgaG9zdAorYGAxOTIuMC4yLjFgYCBvbiB0aGUgbmV0d29yayBgYDE5Mi4wLjIuMC8yNGBgIiwgQWNjb3JkaW5nbHksIDptb2Q6YGlwYWRkcmVzc2AKK3Byb3ZpZGVzIGEgc2V0IG9mIGh5YnJpZCBjbGFzc2VzIHRoYXQgYXNzb2NpYXRlIGFuIGFkZHJlc3Mgd2l0aCBhIHBhcnRpY3VsYXIKK25ldHdvcmsuIFRoZSBpbnRlcmZhY2UgZm9yIGNyZWF0aW9uIGlzIGlkZW50aWNhbCB0byB0aGF0IGZvciBkZWZpbmluZyBuZXR3b3JrCitvYmplY3RzLCBleGNlcHQgdGhhdCB0aGUgYWRkcmVzcyBwb3J0aW9uIGlzbid0IGNvbnN0cmFpbmVkIHRvIGJlaW5nIGEgbmV0d29yaworYWRkcmVzcy4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpCisgICBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKKyAgIElQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKKworSW50ZWdlciBpbnB1dHMgYXJlIGFjY2VwdGVkIChhcyB3aXRoIG5ldHdvcmtzKSwgYW5kIHVzZSBvZiBhIHBhcnRpY3VsYXIgSVAKK3ZlcnNpb24gY2FuIGJlIGZvcmNlZCBieSBjYWxsaW5nIHRoZSByZWxldmFudCBjb25zdHJ1Y3RvciBkaXJlY3RseS4KKworCitJbnNwZWN0aW5nIEFkZHJlc3MvTmV0d29yay9JbnRlcmZhY2UgT2JqZWN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWW91J3ZlIGdvbmUgdG8gdGhlIHRyb3VibGUgb2YgY3JlYXRpbmcgYW4gSVB2KDR8NikoQWRkcmVzc3xOZXR3b3JrfEludGVyZmFjZSkKK29iamVjdCwgc28geW91IHByb2JhYmx5IHdhbnQgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IGl0LiAgOm1vZDpgaXBhZGRyZXNzYAordHJpZXMgdG8gbWFrZSBkb2luZyB0aGlzIGVhc3kgYW5kIGludHVpdGl2ZS4KKworRXh0cmFjdGluZyB0aGUgSVAgdmVyc2lvbjo6CisKKyAgID4+PiBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGFkZHI2ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKyAgID4+PiBhZGRyNi52ZXJzaW9uCisgICA2CisgICA+Pj4gYWRkcjQudmVyc2lvbgorICAgNAorCitPYnRhaW5pbmcgdGhlIG5ldHdvcmsgZnJvbSBhbiBpbnRlcmZhY2U6OgorCisgICA+Pj4gaG9zdDQgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKQorICAgPj4+IGhvc3Q0Lm5ldHdvcmsKKyAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IGhvc3Q2ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQorICAgPj4+IGhvc3Q2Lm5ldHdvcmsKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKworRmluZGluZyBvdXQgaG93IG1hbnkgaW5kaXZpZHVhbCBhZGRyZXNzZXMgYXJlIGluIGEgbmV0d29yazo6CisKKyAgID4+PiBuZXQ0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gbmV0NC5udW1fYWRkcmVzc2VzCisgICAyNTYKKyAgID4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgID4+PiBuZXQ2Lm51bV9hZGRyZXNzZXMKKyAgIDQyOTQ5NjcyOTYKKworSXRlcmF0aW5nIHRocm91Z2ggdGhlICJ1c2FibGUiIGFkZHJlc3NlcyBvbiBhIG5ldHdvcms6OgorCisgICA+Pj4gbmV0NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IGZvciB4IGluIG5ldDQuaG9zdHMoKToKKyAgIC4uLiAgICAgcHJpbnQoeCkgICMgZG9jdGVzdDogK0VMTElQU0lTCisgICAxOTIuMC4yLjEKKyAgIDE5Mi4wLjIuMgorICAgMTkyLjAuMi4zCisgICAxOTIuMC4yLjQKKyAgIC4uLgorICAgMTkyLjAuMi4yNTIKKyAgIDE5Mi4wLjIuMjUzCisgICAxOTIuMC4yLjI1NAorCisKK09idGFpbmluZyB0aGUgbmV0bWFzayAoaS5lLiBzZXQgYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXR3b3JrIHByZWZpeCkgb3IKK3RoZSBob3N0bWFzayAoYW55IGJpdHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIG5ldG1hc2spOgorCisgICA+Pj4gbmV0NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IG5ldDQubmV0bWFzaworICAgSVB2NEFkZHJlc3MoJzI1NS4yNTUuMjU1LjAnKQorICAgPj4+IG5ldDQuaG9zdG1hc2sKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4yNTUnKQorICAgPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQorICAgPj4+IG5ldDYubmV0bWFzaworICAgSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQorICAgPj4+IG5ldDYuaG9zdG1hc2sKKyAgIElQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZicpCisKKworRXhwbG9kaW5nIG9yIGNvbXByZXNzaW5nIHRoZSBhZGRyZXNzOjoKKworICAgPj4+IGFkZHI2LmV4cGxvZGVkCisgICAnMjAwMTowZGI4OjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxJworICAgPj4+IGFkZHI2LmNvbXByZXNzZWQKKyAgICcyMDAxOmRiODo6MScKKyAgID4+PiBuZXQ2LmV4cGxvZGVkCisgICAnMjAwMTowZGI4OjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwLzk2JworICAgPj4+IG5ldDYuY29tcHJlc3NlZAorICAgJzIwMDE6ZGI4OjovOTYnCisKK1doaWxlIElQdjQgZG9lc24ndCBzdXBwb3J0IGV4cGxvc2lvbiBvciBjb21wcmVzc2lvbiwgdGhlIGFzc29jaWF0ZWQgb2JqZWN0cworc3RpbGwgcHJvdmlkZSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcyBzbyB0aGF0IHZlcnNpb24gbmV1dHJhbCBjb2RlIGNhbgorZWFzaWx5IGVuc3VyZSB0aGUgbW9zdCBjb25jaXNlIG9yIG1vc3QgdmVyYm9zZSBmb3JtIGlzIHVzZWQgZm9yIElQdjYKK2FkZHJlc3NlcyB3aGlsZSBzdGlsbCBjb3JyZWN0bHkgaGFuZGxpbmcgSVB2NCBhZGRyZXNzZXMuCisKKworTmV0d29ya3MgYXMgbGlzdHMgb2YgQWRkcmVzc2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSXQncyBzb21ldGltZXMgdXNlZnVsIHRvIHRyZWF0IG5ldHdvcmtzIGFzIGxpc3RzLiAgVGhpcyBtZWFucyBpdCBpcyBwb3NzaWJsZQordG8gaW5kZXggdGhlbSBsaWtlIHRoaXM6OgorCisgICA+Pj4gbmV0NFsxXQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gbmV0NFstMV0KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjI1NScpCisgICA+Pj4gbmV0NlsxXQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKyAgID4+PiBuZXQ2Wy0xXQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjpmZmZmOmZmZmYnKQorCisKK0l0IGFsc28gbWVhbnMgdGhhdCBuZXR3b3JrIG9iamVjdHMgbGVuZCB0aGVtc2VsdmVzIHRvIHVzaW5nIHRoZSBsaXN0CittZW1iZXJzaGlwIHRlc3Qgc3ludGF4IGxpa2UgdGhpczo6CisKKyAgIGlmIGFkZHJlc3MgaW4gbmV0d29yazoKKyAgICAgICAjIGRvIHNvbWV0aGluZworCitDb250YWlubWVudCB0ZXN0aW5nIGlzIGRvbmUgZWZmaWNpZW50bHkgYmFzZWQgb24gdGhlIG5ldHdvcmsgcHJlZml4OjoKKworICAgPj4+IGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gYWRkcjQgaW4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICBUcnVlCisgICA+Pj4gYWRkcjQgaW4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjMuMC8yNCcpCisgICBGYWxzZQorCisKK0NvbXBhcmlzb25zCis9PT09PT09PT09PQorCis6bW9kOmBpcGFkZHJlc3NgIHByb3ZpZGVzIHNvbWUgc2ltcGxlLCBob3BlZnVsbHkgaW50dWl0aXZlIHdheXMgdG8gY29tcGFyZQorb2JqZWN0cywgd2hlcmUgaXQgbWFrZXMgc2Vuc2U6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpIDwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMicpCisgICBUcnVlCisKK0EgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHlvdSB0cnkgdG8gY29tcGFyZSBvYmplY3RzIG9mCitkaWZmZXJlbnQgdmVyc2lvbnMgb3IgZGlmZmVyZW50IHR5cGVzLgorCisKK1VzaW5nIElQIEFkZHJlc3NlcyB3aXRoIG90aGVyIG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3RoZXIgbW9kdWxlcyB0aGF0IHVzZSBJUCBhZGRyZXNzZXMgKHN1Y2ggYXMgOm1vZDpgc29ja2V0YCkgdXN1YWxseSB3b24ndAorYWNjZXB0IG9iamVjdHMgZnJvbSB0aGlzIG1vZHVsZSBkaXJlY3RseS4gSW5zdGVhZCwgdGhleSBtdXN0IGJlIGNvZXJjZWQgdG8KK2FuIGludGVnZXIgb3Igc3RyaW5nIHRoYXQgdGhlIG90aGVyIG1vZHVsZSB3aWxsIGFjY2VwdDo6CisKKyAgID4+PiBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IHN0cihhZGRyNCkKKyAgICcxOTIuMC4yLjEnCisgICA+Pj4gaW50KGFkZHI0KQorICAgMzIyMTIyNTk4NQorCisKK0dldHRpbmcgbW9yZSBkZXRhaWwgd2hlbiBpbnN0YW5jZSBjcmVhdGlvbiBmYWlscworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gY3JlYXRpbmcgYWRkcmVzcy9uZXR3b3JrL2ludGVyZmFjZSBvYmplY3RzIHVzaW5nIHRoZSB2ZXJzaW9uLWFnbm9zdGljCitmYWN0b3J5IGZ1bmN0aW9ucywgYW55IGVycm9ycyB3aWxsIGJlIHJlcG9ydGVkIGFzIDpleGM6YFZhbHVlRXJyb3JgIHdpdGgKK2EgZ2VuZXJpYyBlcnJvciBtZXNzYWdlIHRoYXQgc2ltcGx5IHNheXMgdGhlIHBhc3NlZCBpbiB2YWx1ZSB3YXMgbm90CityZWNvZ25pemVkIGFzIGFuIG9iamVjdCBvZiB0aGF0IHR5cGUuIFRoZSBsYWNrIG9mIGEgc3BlY2lmaWMgZXJyb3IgaXMKK2JlY2F1c2UgaXQncyBuZWNlc3NhcnkgdG8ga25vdyB3aGV0aGVyIHRoZSB2YWx1ZSBpcyAqc3VwcG9zZWQqIHRvIGJlIElQdjQKK29yIElQdjYgaW4gb3JkZXIgdG8gcHJvdmlkZSBtb3JlIGRldGFpbCBvbiB3aHkgaXQgaGFzIGJlZW4gcmVqZWN0ZWQuCisKK1RvIHN1cHBvcnQgdXNlIGNhc2VzIHdoZXJlIGl0IGlzIHVzZWZ1bCB0byBoYXZlIGFjY2VzcyB0byB0aGlzIGFkZGl0aW9uYWwKK2RldGFpbCwgdGhlIGluZGl2aWR1YWwgY2xhc3MgY29uc3RydWN0b3JzIGFjdHVhbGx5IHJhaXNlIHRoZQorOmV4YzpgVmFsdWVFcnJvcmAgc3ViY2xhc3NlcyA6ZXhjOmBpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3JgIGFuZAorOmV4YzpgaXBhZGRyZXNzLk5ldG1hc2tWYWx1ZUVycm9yYCB0byBpbmRpY2F0ZSBleGFjdGx5IHdoaWNoIHBhcnQgb2YKK3RoZSBkZWZpbml0aW9uIGZhaWxlZCB0byBwYXJzZSBjb3JyZWN0bHkuCisKK1RoZSBlcnJvciBtZXNzYWdlcyBhcmUgc2lnbmlmaWNhbnRseSBtb3JlIGRldGFpbGVkIHdoZW4gdXNpbmcgdGhlCitjbGFzcyBjb25zdHJ1Y3RvcnMgZGlyZWN0bHkuIEZvciBleGFtcGxlOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCIxOTIuMTY4LjAuMjU2IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBWYWx1ZUVycm9yOiAnMTkyLjE2OC4wLjI1NicgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCIxOTIuMTY4LjAuMjU2IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3I6IE9jdGV0IDI1NiAoPiAyNTUpIG5vdCBwZXJtaXR0ZWQgaW4gJzE5Mi4xNjguMC4yNTYnCisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygiMTkyLjE2OC4wLjEvNjQiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFZhbHVlRXJyb3I6ICcxOTIuMTY4LjAuMS82NCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBuZXR3b3JrCisgICA+Pj4gaXBhZGRyZXNzLklQdjROZXR3b3JrKCIxOTIuMTY4LjAuMS82NCIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgaXBhZGRyZXNzLk5ldG1hc2tWYWx1ZUVycm9yOiAnNjQnIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2sKKworSG93ZXZlciwgYm90aCBvZiB0aGUgbW9kdWxlIHNwZWNpZmljIGV4Y2VwdGlvbnMgaGF2ZSA6ZXhjOmBWYWx1ZUVycm9yYCBhcyB0aGVpcgorcGFyZW50IGNsYXNzLCBzbyBpZiB5b3UncmUgbm90IGNvbmNlcm5lZCB3aXRoIHRoZSBwYXJ0aWN1bGFyIHR5cGUgb2YgZXJyb3IsCit5b3UgY2FuIHN0aWxsIHdyaXRlIGNvZGUgbGlrZSB0aGUgZm9sbG93aW5nOjoKKworICAgdHJ5OgorICAgICAgIG5ldHdvcmsgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoYWRkcmVzcykKKyAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgIHByaW50KCdhZGRyZXNzL25ldG1hc2sgaXMgaW52YWxpZCBmb3IgSVB2NDonLCBhZGRyZXNzKQorCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKaW5kZXggMzcwYzc1Ny4uOTJhZjBlYyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CisrKyBiL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdApAQCAtMTMxNiw2ICsxMzE2LDMzIEBACiBzZWN0aW9uIDxodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4zL3RvcGljcy9sb2dnaW5nLyNjb25maWd1cmluZy1sb2dnaW5nPmBfCiBvZiB0aGUgRGphbmdvIGRvY3VtZW50YXRpb24uCiAKKy4uIF9jb29rYm9vay1yb3RhdG9yLW5hbWVyOgorCitVc2luZyBhIHJvdGF0b3IgYW5kIG5hbWVyIHRvIGN1c3RvbWlzZSBsb2cgcm90YXRpb24gcHJvY2Vzc2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gZXhhbXBsZSBvZiBob3cgeW91IGNhbiBkZWZpbmUgYSBuYW1lciBhbmQgcm90YXRvciBpcyBnaXZlbiBpbiB0aGUgZm9sbG93aW5nCitzbmlwcGV0LCB3aGljaCBzaG93cyB6bGliLWJhc2VkIGNvbXByZXNzaW9uIG9mIHRoZSBsb2cgZmlsZTo6CisKKyAgICBkZWYgbmFtZXIobmFtZSk6CisgICAgICAgIHJldHVybiBuYW1lICsgIi5neiIKKworICAgIGRlZiByb3RhdG9yKHNvdXJjZSwgZGVzdCk6CisgICAgICAgIHdpdGggb3Blbihzb3VyY2UsICJyYiIpIGFzIHNmOgorICAgICAgICAgICAgZGF0YSA9IHNmLnJlYWQoKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MoZGF0YSwgOSkKKyAgICAgICAgICAgIHdpdGggb3BlbihkZXN0LCAid2IiKSBhcyBkZjoKKyAgICAgICAgICAgICAgICBkZi53cml0ZShjb21wcmVzc2VkKQorICAgICAgICBvcy5yZW1vdmUoc291cmNlKQorCisgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoLi4uKQorICAgIHJoLnJvdGF0b3IgPSByb3RhdG9yCisgICAgcmgubmFtZXIgPSBuYW1lcgorCitUaGVzZSBhcmUgbm90ICJ0cnVlIiAuZ3ogZmlsZXMsIGFzIHRoZXkgYXJlIGJhcmUgY29tcHJlc3NlZCBkYXRhLCB3aXRoIG5vCisiY29udGFpbmVyIiBzdWNoIGFzIHlvdeKAmWQgZmluZCBpbiBhbiBhY3R1YWwgZ3ppcCBmaWxlLiBUaGlzIHNuaXBwZXQgaXMganVzdAorZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3Nlcy4KKwogQSBtb3JlIGVsYWJvcmF0ZSBtdWx0aXByb2Nlc3NpbmcgZXhhbXBsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNTcyLDcgKzE1OTksNyBAQAogCiAgICAgICAnQVNDSUkgc2VjdGlvblx1ZmVmZlVuaWNvZGUgc2VjdGlvbicKIAotICAgVGhlIFVuaWNvZGUgY29kZSBwb2ludCBgYCdcZmVmZmBgYCwgd2hlbiBlbmNvZGVkIHVzaW5nIFVURi04LCB3aWxsIGJlCisgICBUaGUgVW5pY29kZSBjb2RlIHBvaW50IGBgJ1xmZWZmJ2BgLCB3aGVuIGVuY29kZWQgdXNpbmcgVVRGLTgsIHdpbGwgYmUKICAgIGVuY29kZWQgYXMgYSBVVEYtOCBCT00gLS0gdGhlIGJ5dGUtc3RyaW5nIGBgYidceGVmXHhiYlx4YmYnYGAuCiAKICMuIFJlcGxhY2UgdGhlIEFTQ0lJIHNlY3Rpb24gd2l0aCB3aGF0ZXZlciBwbGFjZWhvbGRlcnMgeW91IGxpa2UsIGJ1dCBtYWtlIHN1cmUKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9zb2NrZXRzLnJzdCBiL0RvYy9ob3d0by9zb2NrZXRzLnJzdAppbmRleCAyNzliYjNlLi5jYTY1MjhiIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vc29ja2V0cy5yc3QKKysrIGIvRG9jL2hvd3RvL3NvY2tldHMucnN0CkBAIC0yNSw4ICsyNSw4IEBACiB3b3JraW5nLiBJdCBkb2Vzbid0IGNvdmVyIHRoZSBmaW5lIHBvaW50cyAoYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiB0aGVtKSwgYnV0IEkKIGhvcGUgaXQgd2lsbCBnaXZlIHlvdSBlbm91Z2ggYmFja2dyb3VuZCB0byBiZWdpbiB1c2luZyB0aGVtIGRlY2VudGx5LgogCi1JJ20gb25seSBnb2luZyB0byB0YWxrIGFib3V0IElORVQgc29ja2V0cywgYnV0IHRoZXkgYWNjb3VudCBmb3IgYXQgbGVhc3QgOTklIG9mCi10aGUgc29ja2V0cyBpbiB1c2UuIEFuZCBJJ2xsIG9ubHkgdGFsayBhYm91dCBTVFJFQU0gc29ja2V0cyAtIHVubGVzcyB5b3UgcmVhbGx5CitJJ20gb25seSBnb2luZyB0byB0YWxrIGFib3V0IElORVQgKGkuZS4gSVB2NCkgc29ja2V0cywgYnV0IHRoZXkgYWNjb3VudCBmb3IgYXQgbGVhc3QgOTklIG9mCit0aGUgc29ja2V0cyBpbiB1c2UuIEFuZCBJJ2xsIG9ubHkgdGFsayBhYm91dCBTVFJFQU0gKGkuZS4gVENQKSBzb2NrZXRzIC0gdW5sZXNzIHlvdSByZWFsbHkKIGtub3cgd2hhdCB5b3UncmUgZG9pbmcgKGluIHdoaWNoIGNhc2UgdGhpcyBIT1dUTyBpc24ndCBmb3IgeW91ISksIHlvdSdsbCBnZXQKIGJldHRlciBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2UgZnJvbSBhIFNUUkVBTSBzb2NrZXQgdGhhbiBhbnl0aGluZyBlbHNlLiBJIHdpbGwKIHRyeSB0byBjbGVhciB1cCB0aGUgbXlzdGVyeSBvZiB3aGF0IGEgc29ja2V0IGlzLCBhcyB3ZWxsIGFzIHNvbWUgaGludHMgb24gaG93IHRvCkBAIC0yMDgsMTAgKzIwOCwxMCBAQAogICAgICAgICAgICAgICAgdG90YWxzZW50ID0gdG90YWxzZW50ICsgc2VudAogCiAgICAgICAgZGVmIG15cmVjZWl2ZShzZWxmKToKLSAgICAgICAgICAgbXNnID0gJycKKyAgICAgICAgICAgbXNnID0gYicnCiAgICAgICAgICAgIHdoaWxlIGxlbihtc2cpIDwgTVNHTEVOOgogICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnNvY2sucmVjdihNU0dMRU4tbGVuKG1zZykpCi0gICAgICAgICAgICAgICBpZiBjaHVuayA9PSAnJzoKKyAgICAgICAgICAgICAgIGlmIGNodW5rID09IGInJzoKICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNvY2tldCBjb25uZWN0aW9uIGJyb2tlbiIpCiAgICAgICAgICAgICAgICBtc2cgPSBtc2cgKyBjaHVuawogICAgICAgICAgICByZXR1cm4gbXNnCkBAIC0zNzEsMTIgKzM3MSw2IEBACiBwb3RlbnRpYWxfd3JpdGVycyBsaXN0LiBJZiBpdCBzaG93cyB1cCBpbiB0aGUgd3JpdGFibGUgbGlzdCwgeW91IGhhdmUgYSBkZWNlbnQKIGNoYW5jZSB0aGF0IGl0IGhhcyBjb25uZWN0ZWQuCiAKLU9uZSB2ZXJ5IG5hc3R5IHByb2JsZW0gd2l0aCBgYHNlbGVjdGBgOiBpZiBzb21ld2hlcmUgaW4gdGhvc2UgaW5wdXQgbGlzdHMgb2YKLXNvY2tldHMgaXMgb25lIHdoaWNoIGhhcyBkaWVkIGEgbmFzdHkgZGVhdGgsIHRoZSBgYHNlbGVjdGBgIHdpbGwgZmFpbC4gWW91IHRoZW4KLW5lZWQgdG8gbG9vcCB0aHJvdWdoIGV2ZXJ5IHNpbmdsZSBkYW1uIHNvY2tldCBpbiBhbGwgdGhvc2UgbGlzdHMgYW5kIGRvIGEKLWBgc2VsZWN0KFtzb2NrXSxbXSxbXSwwKWBgIHVudGlsIHlvdSBmaW5kIHRoZSBiYWQgb25lLiBUaGF0IHRpbWVvdXQgb2YgMCBtZWFucwotaXQgd29uJ3QgdGFrZSBsb25nLCBidXQgaXQncyB1Z2x5LgotCiBBY3R1YWxseSwgYGBzZWxlY3RgYCBjYW4gYmUgaGFuZHkgZXZlbiB3aXRoIGJsb2NraW5nIHNvY2tldHMuIEl0J3Mgb25lIHdheSBvZgogZGV0ZXJtaW5pbmcgd2hldGhlciB5b3Ugd2lsbCBibG9jayAtIHRoZSBzb2NrZXQgcmV0dXJucyBhcyByZWFkYWJsZSB3aGVuIHRoZXJlJ3MKIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVycy4gIEhvd2V2ZXIsIHRoaXMgc3RpbGwgZG9lc24ndCBoZWxwIHdpdGggdGhlIHByb2JsZW0gb2YKQEAgLTM4NiwyNiArMzgwLDYgQEAKIGZpbGVzLiBEb24ndCB0cnkgdGhpcyBvbiBXaW5kb3dzLiBPbiBXaW5kb3dzLCBgYHNlbGVjdGBgIHdvcmtzIHdpdGggc29ja2V0cwogb25seS4gQWxzbyBub3RlIHRoYXQgaW4gQywgbWFueSBvZiB0aGUgbW9yZSBhZHZhbmNlZCBzb2NrZXQgb3B0aW9ucyBhcmUgZG9uZQogZGlmZmVyZW50bHkgb24gV2luZG93cy4gSW4gZmFjdCwgb24gV2luZG93cyBJIHVzdWFsbHkgdXNlIHRocmVhZHMgKHdoaWNoIHdvcmsKLXZlcnksIHZlcnkgd2VsbCkgd2l0aCBteSBzb2NrZXRzLiBGYWNlIGl0LCBpZiB5b3Ugd2FudCBhbnkga2luZCBvZiBwZXJmb3JtYW5jZSwKLXlvdXIgY29kZSB3aWxsIGxvb2sgdmVyeSBkaWZmZXJlbnQgb24gV2luZG93cyB0aGFuIG9uIFVuaXguCit2ZXJ5LCB2ZXJ5IHdlbGwpIHdpdGggbXkgc29ja2V0cy4KIAogCi1QZXJmb3JtYW5jZQotLS0tLS0tLS0tLS0KLQotVGhlcmUncyBubyBxdWVzdGlvbiB0aGF0IHRoZSBmYXN0ZXN0IHNvY2tldHMgY29kZSB1c2VzIG5vbi1ibG9ja2luZyBzb2NrZXRzIGFuZAotc2VsZWN0IHRvIG11bHRpcGxleCB0aGVtLiBZb3UgY2FuIHB1dCB0b2dldGhlciBzb21ldGhpbmcgdGhhdCB3aWxsIHNhdHVyYXRlIGEKLUxBTiBjb25uZWN0aW9uIHdpdGhvdXQgcHV0dGluZyBhbnkgc3RyYWluIG9uIHRoZSBDUFUuCi0KLVRoZSB0cm91YmxlIGlzIHRoYXQgYW4gYXBwIHdyaXR0ZW4gdGhpcyB3YXkgY2FuJ3QgZG8gbXVjaCBvZiBhbnl0aGluZyBlbHNlIC0KLWl0IG5lZWRzIHRvIGJlIHJlYWR5IHRvIHNodWZmbGUgYnl0ZXMgYXJvdW5kIGF0IGFsbCB0aW1lcy4gQXNzdW1pbmcgdGhhdCB5b3VyCi1hcHAgaXMgYWN0dWFsbHkgc3VwcG9zZWQgdG8gZG8gc29tZXRoaW5nIG1vcmUgdGhhbiB0aGF0LCB0aHJlYWRpbmcgaXMgdGhlCi1vcHRpbWFsIHNvbHV0aW9uLCAoYW5kIHVzaW5nIG5vbi1ibG9ja2luZyBzb2NrZXRzIHdpbGwgYmUgZmFzdGVyIHRoYW4gdXNpbmcKLWJsb2NraW5nIHNvY2tldHMpLgotCi1GaW5hbGx5LCByZW1lbWJlciB0aGF0IGV2ZW4gdGhvdWdoIGJsb2NraW5nIHNvY2tldHMgYXJlIHNvbWV3aGF0IHNsb3dlciB0aGFuCi1ub24tYmxvY2tpbmcsIGluIG1hbnkgY2FzZXMgdGhleSBhcmUgdGhlICJyaWdodCIgc29sdXRpb24uIEFmdGVyIGFsbCwgaWYgeW91cgotYXBwIGlzIGRyaXZlbiBieSB0aGUgZGF0YSBpdCByZWNlaXZlcyBvdmVyIGEgc29ja2V0LCB0aGVyZSdzIG5vdCBtdWNoIHNlbnNlIGluCi1jb21wbGljYXRpbmcgdGhlIGxvZ2ljIGp1c3Qgc28geW91ciBhcHAgY2FuIHdhaXQgb24gYGBzZWxlY3RgYCBpbnN0ZWFkIG9mCi1gYHJlY3ZgYC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0IGIvRG9jL2hvd3RvL3VuaWNvZGUucnN0CmluZGV4IGY5ZWVhZTQuLjVkOWUwMjcgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by91bmljb2RlLnJzdAorKysgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKQEAgLTQxNCw3ICs0MTQsNyBAQAogLS0tLS0tLS0tLQogCiBUaGUgYGBzdHJgYCB0eXBlIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIGxpYnJhcnkgcmVmZXJlbmNlIGF0Ci06cmVmOmB0eXBlc3NlcWAuCis6cmVmOmB0ZXh0c2VxYC4KIAogVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6bW9kOmB1bmljb2RlZGF0YWAgbW9kdWxlLgogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKaW5kZXggODdmNDJiYS4uOTU1ZTQ1NSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VybGxpYjIucnN0CisrKyBiL0RvYy9ob3d0by91cmxsaWIyLnJzdApAQCAtNTYsNiArNTYsMTMgQEAKICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHA6Ly9weXRob24ub3JnLycpCiAgICAgaHRtbCA9IHJlc3BvbnNlLnJlYWQoKQogCitJZiB5b3Ugd2lzaCB0byByZXRyaWV2ZSBhIHJlc291cmNlIHZpYSBVUkwgYW5kIHN0b3JlIGl0IGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uLAoreW91IGNhbiBkbyBzbyB2aWEgdGhlIDpmdW5jOmB1cmxyZXRyaWV2ZWAgZnVuY3Rpb246OgorCisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisgICAgbG9jYWxfZmlsZW5hbWUsIGhlYWRlcnMgPSB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSgnaHR0cDovL3B5dGhvbi5vcmcvJykKKyAgICBodG1sID0gb3Blbihsb2NhbF9maWxlbmFtZSkKKwogTWFueSB1c2VzIG9mIHVybGxpYiB3aWxsIGJlIHRoYXQgc2ltcGxlIChub3RlIHRoYXQgaW5zdGVhZCBvZiBhbiAnaHR0cDonIFVSTCB3ZQogY291bGQgaGF2ZSB1c2VkIGFuIFVSTCBzdGFydGluZyB3aXRoICdmdHA6JywgJ2ZpbGU6JywgZXRjLikuICBIb3dldmVyLCBpdCdzIHRoZQogcHVycG9zZSBvZiB0aGlzIHR1dG9yaWFsIHRvIGV4cGxhaW4gdGhlIG1vcmUgY29tcGxpY2F0ZWQgY2FzZXMsIGNvbmNlbnRyYXRpbmcgb24KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9tcF9iZW5jaG1hcmtzLnB5IGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKaW5kZXggYWNkZjY0Mi4uMzc2M2VhOSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKKysrIGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKQEAgLTYsMTYgKzYsMTIgQEAKICMKIAogaW1wb3J0IHRpbWUKLWltcG9ydCBzeXMKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBxdWV1ZQogaW1wb3J0IGdjCiAKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIF90aW1lciA9IHRpbWUuY2xvY2sKLWVsc2U6Ci0gICAgX3RpbWVyID0gdGltZS50aW1lCitfdGltZXIgPSB0aW1lLnBlcmZfY291bnRlcgogCiBkZWx0YSA9IDEKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5Mi5jIGIvRG9jL2luY2x1ZGVzL25vZGR5Mi5jCmluZGV4IDliOGVhZmIuLjk2NDE1NTggMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTIuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04NiwxNSArODQsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArOTQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE0NSwxMiArMTI3LDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMTczLDcgKzE1NSw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Mih2b2lkKSAKK1B5SW5pdF9ub2RkeTIodm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5My5jIGIvRG9jL2luY2x1ZGVzL25vZGR5My5jCmluZGV4IDg5ZjNhNzcuLjhhNWE3NTMgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTMuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04OCwyMiArODYsMjIgQEAKIHN0YXRpYyBpbnQKIE5vZGR5X3NldGZpcnN0KE5vZGR5ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGZpcnN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gICAgICAKLSAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKLSAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgc2VsZi0+Zmlyc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gIHJldHVybiAwOworICAgIGlmICghIFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlyc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihzZWxmLT5maXJzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5maXJzdCA9IHZhbHVlOworCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTYsMzAgKzExNCwzMCBAQAogc3RhdGljIGludAogTm9kZHlfc2V0bGFzdChOb2RkeSAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQogewotICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJDYW5ub3QgZGVsZXRlIHRoZSBsYXN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGxhc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgICAgIAotICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7Ci0gIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gIHNlbGYtPmxhc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGxhc3QgYXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgcmV0dXJuIDA7CisgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBsYXN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5sYXN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5R2V0U2V0RGVmIE5vZGR5X2dldHNldGVyc1tdID0gewotICAgIHsiZmlyc3QiLCAKKyAgICB7ImZpcnN0IiwKICAgICAgKGdldHRlcilOb2RkeV9nZXRmaXJzdCwgKHNldHRlcilOb2RkeV9zZXRmaXJzdCwKICAgICAgImZpcnN0IG5hbWUiLAogICAgICBOVUxMfSwKLSAgICB7Imxhc3QiLCAKKyAgICB7Imxhc3QiLAogICAgICAoZ2V0dGVyKU5vZGR5X2dldGxhc3QsIChzZXR0ZXIpTm9kZHlfc2V0bGFzdCwKICAgICAgImxhc3QgbmFtZSIsCiAgICAgIE5VTEx9LApAQCAtMTQ5LDIzICsxNDcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE5OCwxMiArMTgwLDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIE5vZGR5X2dldHNldGVycywgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMjI2LDcgKzIwOCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Myh2b2lkKSAKK1B5SW5pdF9ub2RkeTModm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5NC5jIGIvRG9jL2luY2x1ZGVzL25vZGR5NC5jCmluZGV4IDZhOTZmYWMuLmViOTYyMmEgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTQuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCAKK3N0YXRpYyBpbnQKIE5vZGR5X2NsZWFyKE5vZGR5ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0bXA7CkBAIC01OCwxOCArNTgsMTYgQEAKICAgICBzZWxmID0gKE5vZGR5ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5maXJzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHNlbGYtPmxhc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBzZWxmLT5udW1iZXIgPSAwOwogICAgIH0KQEAgLTg0LDEwICs4MiwxMCBAQAogCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaXJzdCIsICJsYXN0IiwgIm51bWJlciIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwgCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VsZi0+bnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIC0xOyAKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGZpcnN0KSB7CiAgICAgICAgIHRtcCA9IHNlbGYtPmZpcnN0OwpAQCAtMTIwLDE1ICsxMTgsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzOSwxNCArMTI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgJVMiLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBOb2RkeV9tZXRob2RzW10gPSB7CkBAIC0xODIsMTAgKzE2NCwxMCBAQAogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpTm9kZHlfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlOb2RkeV9jbGVhciwgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgTm9kZHlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIE5vZGR5X21lbWJlcnMsICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTIwOCw3ICsxOTAsNyBAQAogfTsKIAogUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9ub2RkeTQodm9pZCkgCitQeUluaXRfbm9kZHk0KHZvaWQpCiB7CiAgICAgUHlPYmplY3QqIG07CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L190aHJlYWQucnN0IGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKaW5kZXggMzY5ZTljZC4uNzUxYzNlOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKQEAgLTM1LDYgKzM1LDkgQEAKIAogICAgUmFpc2VkIG9uIHRocmVhZC1zcGVjaWZpYyBlcnJvcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGlzIG5vdyBhIHN5bm9ueW0gb2YgdGhlIGJ1aWx0LWluIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisKIAogLi4gZGF0YTo6IExvY2tUeXBlCiAKQEAgLTkxLDcgKzk0LDcgQEAKICAgICpzaXplKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQKICAgIHRocmVhZHMsIGFuZCBtdXN0IGJlIDAgKHVzZSBwbGF0Zm9ybSBvciBjb25maWd1cmVkIGRlZmF1bHQpIG9yIGEgcG9zaXRpdmUKICAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmtCKS4gSWYgY2hhbmdpbmcgdGhlIHRocmVhZCBzdGFjayBzaXplIGlzCi0gICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCisgICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBzcGVjaWZpZWQgc3RhY2sgc2l6ZSBpcwogICAgaW52YWxpZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBzdGFjayBzaXplIGlzIHVubW9kaWZpZWQuICAzMmtCCiAgICBpcyBjdXJyZW50bHkgdGhlIG1pbmltdW0gc3VwcG9ydGVkIHN0YWNrIHNpemUgdmFsdWUgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQKICAgIHN0YWNrIHNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmLiAgTm90ZSB0aGF0IHNvbWUgcGxhdGZvcm1zIG1heSBoYXZlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hYmMucnN0IGIvRG9jL2xpYnJhcnkvYWJjLnJzdAppbmRleCAxMDQ4YjI0Li5kY2E2OTkzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FiYy5yc3QKQEAgLTE4LDcgKzE4LDcgQEAKIAogVGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgaGFzIHNvbWUgY29uY3JldGUgY2xhc3NlcyB0aGF0IGRlcml2ZSBmcm9tCiBBQkNzOyB0aGVzZSBjYW4sIG9mIGNvdXJzZSwgYmUgZnVydGhlciBkZXJpdmVkLiBJbiBhZGRpdGlvbiB0aGUKLTptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgaGFzIHNvbWUgQUJDcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3Qgd2hldGhlcgorOm1vZDpgY29sbGVjdGlvbnMuYWJjYCBzdWJtb2R1bGUgaGFzIHNvbWUgQUJDcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3Qgd2hldGhlcgogYSBjbGFzcyBvciBpbnN0YW5jZSBwcm92aWRlcyBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLCBmb3IgZXhhbXBsZSwgaXMgaXQKIGhhc2hhYmxlIG9yIGEgbWFwcGluZy4KIApAQCAtNTUsNiArNTUsOSBAQAogICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0dXBsZSwgTXlBQkMpCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKCgpLCBNeUFCQykKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFJldHVybnMgdGhlIHJlZ2lzdGVyZWQgc3ViY2xhc3MsIHRvIGFsbG93IHVzYWdlIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgorCiAgICBZb3UgY2FuIGFsc28gb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4gYW4gYWJzdHJhY3QgYmFzZSBjbGFzczoKIAogICAgLi4gbWV0aG9kOjogX19zdWJjbGFzc2hvb2tfXyhzdWJjbGFzcykKQEAgLTEyNCwxOSArMTI3LDE4IEBACiAgICBhdmFpbGFibGUgYXMgYSBtZXRob2Qgb2YgYGBGb29gYCwgc28gaXQgaXMgcHJvdmlkZWQgc2VwYXJhdGVseS4KIAogCi1JdCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGVjb3JhdG9yczoKK1RoZSA6bW9kOmBhYmNgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGVjb3JhdG9yczoKIAogLi4gZGVjb3JhdG9yOjogYWJzdHJhY3RtZXRob2QoZnVuY3Rpb24pCiAKICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgbWV0aG9kcy4KIAotICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYAotICAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZAotICAgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4KLSAgIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsCi0gICBtZWNoYW5pc21zLgorICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYAorICAgb3IgaXMgZGVyaXZlZCBmcm9tIGl0LiAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55CisgICBvZiB0aGUgbm9ybWFsICdzdXBlcicgY2FsbCBtZWNoYW5pc21zLiAgOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBtYXkgYmUgdXNlZAorICAgdG8gZGVjbGFyZSBhYnN0cmFjdCBtZXRob2RzIGZvciBwcm9wZXJ0aWVzIGFuZCBkZXNjcmlwdG9ycy4KIAogICAgRHluYW1pY2FsbHkgYWRkaW5nIGFic3RyYWN0IG1ldGhvZHMgdG8gYSBjbGFzcywgb3IgYXR0ZW1wdGluZyB0byBtb2RpZnkgdGhlCiAgICBhYnN0cmFjdGlvbiBzdGF0dXMgb2YgYSBtZXRob2Qgb3IgY2xhc3Mgb25jZSBpdCBpcyBjcmVhdGVkLCBhcmUgbm90CkBAIC0xNDQsMTIgKzE0Niw1MiBAQAogICAgcmVndWxhciBpbmhlcml0YW5jZTsgInZpcnR1YWwgc3ViY2xhc3NlcyIgcmVnaXN0ZXJlZCB3aXRoIHRoZSBBQkMncwogICAgOm1ldGg6YHJlZ2lzdGVyYCBtZXRob2QgYXJlIG5vdCBhZmZlY3RlZC4KIAotICAgVXNhZ2U6OgorICAgV2hlbiA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgIGlzIGFwcGxpZWQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhlciBtZXRob2QKKyAgIGRlc2NyaXB0b3JzLCBpdCBzaG91bGQgYmUgYXBwbGllZCBhcyB0aGUgaW5uZXJtb3N0IGRlY29yYXRvciwgYXMgc2hvd24gaW4KKyAgIHRoZSBmb2xsb3dpbmcgdXNhZ2UgZXhhbXBsZXM6OgogCiAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1BQkNNZXRhKToKICAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfbWV0aG9kKHNlbGYsIC4uLik6CiAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9jbGFzc21ldGhvZChjbHMsIC4uLik6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgbXlfYWJzdHJhY3Rfc3RhdGljbWV0aG9kKC4uLik6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICBAbXlfYWJzdHJhY3RfcHJvcGVydHkuc2V0dGVyCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9nZXRfeChzZWxmKToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9zZXRfeChzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICB4ID0gcHJvcGVydHkoX2dldF94LCBfc2V0X3gpCisKKyAgIEluIG9yZGVyIHRvIGNvcnJlY3RseSBpbnRlcm9wZXJhdGUgd2l0aCB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBtYWNoaW5lcnksCisgICB0aGUgZGVzY3JpcHRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyBhYnN0cmFjdCB1c2luZworICAgOmF0dHI6YF9faXNhYnN0cmFjdG1ldGhvZF9fYC4gSW4gZ2VuZXJhbCwgdGhpcyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGBgVHJ1ZWBgCisgICBpZiBhbnkgb2YgdGhlIG1ldGhvZHMgdXNlZCB0byBjb21wb3NlIHRoZSBkZXNjcmlwdG9yIGFyZSBhYnN0cmFjdC4gRm9yCisgICBleGFtcGxlLCBQeXRob24ncyBidWlsdC1pbiBwcm9wZXJ0eSBkb2VzIHRoZSBlcXVpdmFsZW50IG9mOjoKKworICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAuLi4KKyAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICBkZWYgX19pc2Fic3RyYWN0bWV0aG9kX18oc2VsZik6CisgICAgICAgICAgICAgIHJldHVybiBhbnkoZ2V0YXR0cihmLCAnX19pc2Fic3RyYWN0bWV0aG9kX18nLCBGYWxzZSkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgZiBpbiAoc2VsZi5fZmdldCwgc2VsZi5fZnNldCwgc2VsZi5fZmRlbCkpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xNzQsNiArMjE2LDggQEAKICAgICAgICAgICAgICAgLi4uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgIFVzZSA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KIAogCiAuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdHN0YXRpY21ldGhvZChmdW5jdGlvbikKQEAgLTE4OSwxOCArMjMzLDE5IEBACiAgICAgICAgICAgICAgIC4uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICBVc2UgOmNsYXNzOmBzdGF0aWNtZXRob2RgIHdpdGggOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgogCiAKLS4uIGZ1bmN0aW9uOjogYWJzdHJhY3Rwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkKKy4uIGRlY29yYXRvcjo6IGFic3RyYWN0cHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCiAKICAgIEEgc3ViY2xhc3Mgb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBwcm9wZXJ0eWAsIGluZGljYXRpbmcgYW4gYWJzdHJhY3QgcHJvcGVydHkuCiAKLSAgIFVzaW5nIHRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYCBjYW5ub3QgYmUKLSAgIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFyZSBvdmVycmlkZGVuLgotICAgVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZyBhbnkgb2YgdGhlIG5vcm1hbAotICAgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCisgICBVc2luZyB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIGNsYXNzJ3MgbWV0YWNsYXNzIGlzIDpjbGFzczpgQUJDTWV0YWAKKyAgIG9yIGlzIGRlcml2ZWQgZnJvbSBpdC4gQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZworICAgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCiAKICAgIFVzYWdlOjoKIApAQCAtMjE3LDYgKzI2Miw5IEBACiAgICAgICAgICAgZGVmIHNldHgoc2VsZiwgdmFsdWUpOiAuLi4KICAgICAgICAgICB4ID0gYWJzdHJhY3Rwcm9wZXJ0eShnZXR4LCBzZXR4KQogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgVXNlIDpjbGFzczpgcHJvcGVydHlgIHdpdGggOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkCisKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QgYi9Eb2MvbGlicmFyeS9hcmNoaXZpbmcucnN0CmluZGV4IDc1ZDEzN2MuLmM5Mjg0OTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJjaGl2aW5nLnJzdApAQCAtNSw4ICs1LDkgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHN1cHBvcnQgZGF0YSBjb21wcmVzc2lvbiB3aXRoIHRoZSB6bGliLAotZ3ppcCwgYW5kIGJ6aXAyIGFsZ29yaXRobXMsIGFuZCAgdGhlIGNyZWF0aW9uIG9mIFpJUC0gYW5kIHRhci1mb3JtYXQgYXJjaGl2ZXMuCi1TZWUgYWxzbyA6cmVmOmBhcmNoaXZpbmctb3BlcmF0aW9uc2AgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlLgorZ3ppcCwgYnppcDIgYW5kIGx6bWEgYWxnb3JpdGhtcywgYW5kIHRoZSBjcmVhdGlvbiBvZiBaSVAtIGFuZCB0YXItZm9ybWF0CithcmNoaXZlcy4gIFNlZSBhbHNvIDpyZWY6YGFyY2hpdmluZy1vcGVyYXRpb25zYCBwcm92aWRlZCBieSB0aGUgOm1vZDpgc2h1dGlsYAorbW9kdWxlLgogCiAKIC4uIHRvY3RyZWU6OgpAQCAtMTQsNSArMTUsNiBAQAogICAgemxpYi5yc3QKICAgIGd6aXAucnN0CiAgICBiejIucnN0CisgICBsem1hLnJzdAogICAgemlwZmlsZS5yc3QKICAgIHRhcmZpbGUucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKaW5kZXggNTI3M2U5Yi4uOWY2YTFlYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdApAQCAtMzcxLDE2ICszNzEsMTYgQEAKIF5eXl5eXl5eXl5eXl5eXgogCiA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3RzIGFsbG93IHRoZSBoZWxwIGZvcm1hdHRpbmcgdG8gYmUgY3VzdG9taXplZCBieQotc3BlY2lmeWluZyBhbiBhbHRlcm5hdGUgZm9ybWF0dGluZyBjbGFzcy4gIEN1cnJlbnRseSwgdGhlcmUgYXJlIHRocmVlIHN1Y2gKK3NwZWNpZnlpbmcgYW4gYWx0ZXJuYXRlIGZvcm1hdHRpbmcgY2xhc3MuICBDdXJyZW50bHksIHRoZXJlIGFyZSBmb3VyIHN1Y2gKIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIFJhd1RleHRIZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyCisgICAgICAgICAgIE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcgogCi1UaGUgZmlyc3QgdHdvIGFsbG93IG1vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLAotd2hpbGUgdGhlIGxhc3QgYXV0b21hdGljYWxseSBhZGRzIGluZm9ybWF0aW9uIGFib3V0IGFyZ3VtZW50IGRlZmF1bHQgdmFsdWVzLgotCis6Y2xhc3M6YFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcmAgYW5kIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIGdpdmUKK21vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLgogQnkgZGVmYXVsdCwgOmNsYXNzOmBBcmd1bWVudFBhcnNlcmAgb2JqZWN0cyBsaW5lLXdyYXAgdGhlIGRlc2NyaXB0aW9uXyBhbmQKIGVwaWxvZ18gdGV4dHMgaW4gY29tbWFuZC1saW5lIGhlbHAgbWVzc2FnZXM6OgogCkBAIC00MzMsOCArNDMzLDggQEAKIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIG1haW50YWlucyB3aGl0ZXNwYWNlIGZvciBhbGwgc29ydHMgb2YgaGVscCB0ZXh0LAogaW5jbHVkaW5nIGFyZ3VtZW50IGRlc2NyaXB0aW9ucy4KIAotVGhlIG90aGVyIGZvcm1hdHRlciBjbGFzcyBhdmFpbGFibGUsIDpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgLAotd2lsbCBhZGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgZWFjaCBvZiB0aGUgYXJndW1lbnRzOjoKKzpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgIGF1dG9tYXRpY2FsbHkgYWRkcyBpbmZvcm1hdGlvbiBhYm91dAorZGVmYXVsdCB2YWx1ZXMgdG8gZWFjaCBvZiB0aGUgYXJndW1lbnQgaGVscCBtZXNzYWdlczo6CiAKICAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgIC4uLiAgICAgcHJvZz0nUFJPRycsCkBAIC00NTEsNiArNDUxLDI1IEBACiAgICAgLWgsIC0taGVscCAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAogICAgIC0tZm9vIEZPTyAgIEZPTyEgKGRlZmF1bHQ6IDQyKQogCis6Y2xhc3M6YE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcmAgdXNlcyB0aGUgbmFtZSBvZiB0aGUgdHlwZV8gYXJndW1lbnQgZm9yIGVhY2gKK2FyZ3VtZW50IGFzIHRoZSBkaXNwbGF5IG5hbWUgZm9yIGl0cyB2YWx1ZXMgKHJhdGhlciB0aGFuIHVzaW5nIHRoZSBkZXN0XworYXMgdGhlIHJlZ3VsYXIgZm9ybWF0dGVyIGRvZXMpOjoKKworICAgPj4+IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgLi4uICAgICBwcm9nPSdQUk9HJywKKyAgIC4uLiAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcikKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvbycsIHR5cGU9aW50KQorICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJ2JhcicsIHR5cGU9ZmxvYXQpCisgICA+Pj4gcGFyc2VyLnByaW50X2hlbHAoKQorICAgdXNhZ2U6IFBST0cgWy1oXSBbLS1mb28gaW50XSBmbG9hdAorCisgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgZmxvYXQKKworICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAtaCwgLS1oZWxwICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgIC0tZm9vIGludAorCiAKIGNvbmZsaWN0X2hhbmRsZXIKIF5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FycmF5LnJzdCBiL0RvYy9saWJyYXJ5L2FycmF5LnJzdAppbmRleCBkNTYzY2NlLi44ZjY5NDNhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcnJheS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJyYXkucnN0CkBAIC0xNCwzNiArMTQsNTQgQEAKIDpkZm46YHR5cGUgY29kZWAsIHdoaWNoIGlzIGEgc2luZ2xlIGNoYXJhY3Rlci4gIFRoZSBmb2xsb3dpbmcgdHlwZSBjb2RlcyBhcmUKIGRlZmluZWQ6CiAKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IFR5cGUgY29kZSB8IEMgVHlwZSAgICAgICAgIHwgUHl0aG9uIFR5cGUgICAgICAgfCBNaW5pbXVtIHNpemUgaW4gYnl0ZXMgfAotKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgYGAnYidgYCAgIHwgc2lnbmVkIGNoYXIgICAgfCBpbnQgICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdCJ2BgICAgfCB1bnNpZ25lZCBjaGFyICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ3UnYGAgICB8IFB5X1VOSUNPREUgICAgIHwgVW5pY29kZSBjaGFyYWN0ZXIgfCAyIChzZWUgbm90ZSkgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnaCdgYCAgIHwgc2lnbmVkIHNob3J0ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdIJ2BgICAgfCB1bnNpZ25lZCBzaG9ydCB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2knYGAgICB8IHNpZ25lZCBpbnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnSSdgYCAgIHwgdW5zaWduZWQgaW50ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdsJ2BgICAgfCBzaWduZWQgbG9uZyAgICB8IGludCAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ0wnYGAgICB8IHVuc2lnbmVkIGxvbmcgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnZidgYCAgIHwgZmxvYXQgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdkJ2BgICAgfCBkb3VibGUgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBUeXBlIGNvZGUgfCBDIFR5cGUgICAgICAgICAgICAgfCBQeXRob24gVHlwZSAgICAgICB8IE1pbmltdW0gc2l6ZSBpbiBieXRlcyB8IE5vdGVzIHwKKys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ2InYGAgICB8IHNpZ25lZCBjaGFyICAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnQidgYCAgIHwgdW5zaWduZWQgY2hhciAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd1J2BgICAgfCBQeV9VTklDT0RFICAgICAgICAgfCBVbmljb2RlIGNoYXJhY3RlciB8IDIgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2gnYGAgICB8IHNpZ25lZCBzaG9ydCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnSCdgYCAgIHwgdW5zaWduZWQgc2hvcnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdpJ2BgICAgfCBzaWduZWQgaW50ICAgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0knYGAgICB8IHVuc2lnbmVkIGludCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbCdgYCAgIHwgc2lnbmVkIGxvbmcgICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdMJ2BgICAgfCB1bnNpZ25lZCBsb25nICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3EnYGAgICB8IHNpZ25lZCBsb25nIGxvbmcgICB8IGludCAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnUSdgYCAgIHwgdW5zaWduZWQgbG9uZyBsb25nIHwgaW50ICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdmJ2BgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2QnYGAgICB8IGRvdWJsZSAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAotLi4gbm90ZTo6CitOb3RlczoKIAotICAgVGhlIGBgJ3UnYGAgdHlwZWNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3MgdW5pY29kZSBjaGFyYWN0ZXIuICBPbiBuYXJyb3cKLSAgIFVuaWNvZGUgYnVpbGRzIHRoaXMgaXMgMi1ieXRlcywgb24gd2lkZSBidWlsZHMgdGhpcyBpcyA0LWJ5dGVzLgorKDEpCisgICBUaGUgYGAndSdgYCB0eXBlIGNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3Mgb2Jzb2xldGUgdW5pY29kZSBjaGFyYWN0ZXIKKyAgICg6Yzp0eXBlOmBQeV9VTklDT0RFYCB3aGljaCBpcyA6Yzp0eXBlOmB3Y2hhcl90YCkuIERlcGVuZGluZyBvbiB0aGUKKyAgIHBsYXRmb3JtLCBpdCBjYW4gYmUgMTYgYml0cyBvciAzMiBiaXRzLgorCisgICBgYCd1J2BgIHdpbGwgYmUgcmVtb3ZlZCB0b2dldGhlciB3aXRoIHRoZSByZXN0IG9mIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYAorICAgQVBJLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisKKygyKQorICAgVGhlIGBgJ3EnYGAgYW5kIGBgJ1EnYGAgdHlwZSBjb2RlcyBhcmUgYXZhaWxhYmxlIG9ubHkgaWYKKyAgIHRoZSBwbGF0Zm9ybSBDIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgUHl0aG9uIHN1cHBvcnRzIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwKKyAgIG9yLCBvbiBXaW5kb3dzLCA6Yzp0eXBlOmBfX2ludDY0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIFRoZSBhY3R1YWwgcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlCiAoc3RyaWN0bHkgc3BlYWtpbmcsIGJ5IHRoZSBDIGltcGxlbWVudGF0aW9uKS4gIFRoZSBhY3R1YWwgc2l6ZSBjYW4gYmUgYWNjZXNzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3QucnN0CmluZGV4IGUyYzBiNmQuLjE2ZGUzY2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN0LnJzdApAQCAtOTYsOSArOTYsNiBAQAogQWJzdHJhY3QgR3JhbW1hcgogLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgbW9kdWxlIGRlZmluZXMgYSBzdHJpbmcgY29uc3RhbnQgYGBfX3ZlcnNpb25fX2BgIHdoaWNoIGlzIHRoZSBkZWNpbWFsCi1TdWJ2ZXJzaW9uIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZmlsZSBzaG93biBiZWxvdy4KLQogVGhlIGFic3RyYWN0IGdyYW1tYXIgaXMgY3VycmVudGx5IGRlZmluZWQgYXMgZm9sbG93czoKIAogLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi8uLi9QYXJzZXIvUHl0aG9uLmFzZGwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCA3NWIzY2RhLi41NWM2MWQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC0xOTcsNiArMTk3LDkgQEAKIG1hcnNoYWxsZWQsIGFmdGVyIHNldHRpbmcgdGhlIGNoYW5uZWwgdGVybWluYXRvciB0byBgYE5vbmVgYCB0byBlbnN1cmUgdGhhdAogYW55IGV4dHJhbmVvdXMgZGF0YSBzZW50IGJ5IHRoZSB3ZWIgY2xpZW50IGFyZSBpZ25vcmVkLiA6OgogCisKKyAgIGltcG9ydCBhc3luY2hhdAorCiAgICBjbGFzcyBodHRwX3JlcXVlc3RfaGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKIAogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrLCBhZGRyLCBzZXNzaW9ucywgbG9nKToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdAppbmRleCA2MTliN2JiLi43Y2FjY2ExIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CkBAIC0xODQsMTIgKzE4NCwxNSBAQAogICAgTW9zdCBvZiB0aGVzZSBhcmUgbmVhcmx5IGlkZW50aWNhbCB0byB0aGVpciBzb2NrZXQgcGFydG5lcnMuCiAKIAotICAgLi4gbWV0aG9kOjogY3JlYXRlX3NvY2tldChmYW1pbHksIHR5cGUpCisgICAuLiBtZXRob2Q6OiBjcmVhdGVfc29ja2V0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pCiAKICAgICAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIHRoZSBjcmVhdGlvbiBvZiBhIG5vcm1hbCBzb2NrZXQsIGFuZCB3aWxsIHVzZSB0aGUKICAgICAgIHNhbWUgb3B0aW9ucyBmb3IgY3JlYXRpb24uICBSZWZlciB0byB0aGUgOm1vZDpgc29ja2V0YCBkb2N1bWVudGF0aW9uIGZvcgogICAgICAgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgc29ja2V0cy4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgICpmYW1pbHkqIGFuZCAqdHlwZSogYXJndW1lbnRzIGNhbiBiZSBvbWl0dGVkLgorCiAKICAgIC4uIG1ldGhvZDo6IGNvbm5lY3QoYWRkcmVzcykKIApAQCAtMjc0LDEzICsyNzcsMTMgQEAKIEhlcmUgaXMgYSB2ZXJ5IGJhc2ljIEhUVFAgY2xpZW50IHRoYXQgdXNlcyB0aGUgOmNsYXNzOmBkaXNwYXRjaGVyYCBjbGFzcyB0bwogaW1wbGVtZW50IGl0cyBzb2NrZXQgaGFuZGxpbmc6OgogCi0gICBpbXBvcnQgYXN5bmNvcmUsIHNvY2tldAorICAgaW1wb3J0IGFzeW5jb3JlCiAKICAgIGNsYXNzIEhUVFBDbGllbnQoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcGF0aCk6CiAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgIHNlbGYuY29ubmVjdCggKGhvc3QsIDgwKSApCiAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYnl0ZXMoJ0dFVCAlcyBIVFRQLzEuMFxyXG5Ib3N0OiAlc1xyXG5cclxuJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGgsIGhvc3QpLCAnYXNjaWknKQpAQCAtMzE0LDcgKzMxNyw2IEBACiBjb25uZWN0aW9ucyBhbmQgZGlzcGF0Y2hlcyB0aGUgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYSBoYW5kbGVyOjoKIAogICAgIGltcG9ydCBhc3luY29yZQotICAgIGltcG9ydCBzb2NrZXQKIAogICAgIGNsYXNzIEVjaG9IYW5kbGVyKGFzeW5jb3JlLmRpc3BhdGNoZXJfd2l0aF9zZW5kKToKIApAQCAtMzI3LDcgKzMyOSw3IEBACiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpOgogICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgc2VsZi5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmJpbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKQEAgLTMzOCw0ICszNDAsMyBAQAogCiAgICAgc2VydmVyID0gRWNob1NlcnZlcignbG9jYWxob3N0JywgODA4MCkKICAgICBhc3luY29yZS5sb29wKCkKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdCBiL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QKaW5kZXggN2M3NmJhYi4uMmUyMmNhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hdGV4aXQucnN0CkBAIC05LDEzICs5LDE0IEBACiAKIFRoZSA6bW9kOmBhdGV4aXRgIG1vZHVsZSBkZWZpbmVzIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBjbGVhbnVwCiBmdW5jdGlvbnMuICBGdW5jdGlvbnMgdGh1cyByZWdpc3RlcmVkIGFyZSBhdXRvbWF0aWNhbGx5IGV4ZWN1dGVkIHVwb24gbm9ybWFsCi1pbnRlcnByZXRlciB0ZXJtaW5hdGlvbi4gIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgaXMgbm90Ci1kZWZpbmVkOyBpZiB5b3UgaGF2ZSBjbGVhbnVwIG9wZXJhdGlvbnMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciwgeW91IHNob3VsZAotd3JhcCB0aGVtIGluIGEgZnVuY3Rpb24gYW5kIHJlZ2lzdGVyIHRoYXQgb25lLiAgVGhpcyBrZWVwcyA6bW9kOmBhdGV4aXRgIHNpbXBsZS4KK2ludGVycHJldGVyIHRlcm1pbmF0aW9uLiAgOm1vZDpgYXRleGl0YCBydW5zIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgKnJldmVyc2UqCitvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgcmVnaXN0ZXJlZDsgaWYgeW91IHJlZ2lzdGVyIGBgQWBgLCBgYEJgYCwgYW5kIGBgQ2BgLAorYXQgaW50ZXJwcmV0ZXIgdGVybWluYXRpb24gdGltZSB0aGV5IHdpbGwgYmUgcnVuIGluIHRoZSBvcmRlciBgYENgYCwgYGBCYGAsCitgYEFgYC4KIAotTm90ZTogdGhlIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHZpYSB0aGlzIG1vZHVsZSBhcmUgbm90IGNhbGxlZCB3aGVuIHRoZSBwcm9ncmFtCi1pcyBraWxsZWQgYnkgYSBzaWduYWwgbm90IGhhbmRsZWQgYnkgUHl0aG9uLCB3aGVuIGEgUHl0aG9uIGZhdGFsIGludGVybmFsIGVycm9yCi1pcyBkZXRlY3RlZCwgb3Igd2hlbiA6ZnVuYzpgb3MuX2V4aXRgIGlzIGNhbGxlZC4KKyoqTm90ZToqKiBUaGUgZnVuY3Rpb25zIHJlZ2lzdGVyZWQgdmlhIHRoaXMgbW9kdWxlIGFyZSBub3QgY2FsbGVkIHdoZW4gdGhlCitwcm9ncmFtIGlzIGtpbGxlZCBieSBhIHNpZ25hbCBub3QgaGFuZGxlZCBieSBQeXRob24sIHdoZW4gYSBQeXRob24gZmF0YWwKK2ludGVybmFsIGVycm9yIGlzIGRldGVjdGVkLCBvciB3aGVuIDpmdW5jOmBvcy5fZXhpdGAgaXMgY2FsbGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoZnVuYywgKmFyZ3MsICoqa2FyZ3MpCkBAIC02Nyw4ICs2OCw5IEBACiBtYWtpbmcgYW4gZXhwbGljaXQgY2FsbCBpbnRvIHRoaXMgbW9kdWxlIGF0IHRlcm1pbmF0aW9uLiA6OgogCiAgICB0cnk6Ci0gICAgICAgX2NvdW50ID0gaW50KG9wZW4oIi90bXAvY291bnRlciIpLnJlYWQoKSkKLSAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgIHdpdGggb3BlbigiL3RtcC9jb3VudGVyIikgYXMgaW5maWxlOgorICAgICAgICAgICBfY291bnQgPSBpbnQoaW5maWxlLnJlYWQoKSkKKyAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBfY291bnQgPSAwCiAKICAgIGRlZiBpbmNyY291bnRlcihuKToKQEAgLTc2LDcgKzc4LDggQEAKICAgICAgICBfY291bnQgPSBfY291bnQgKyBuCiAKICAgIGRlZiBzYXZlY291bnRlcigpOgotICAgICAgIG9wZW4oIi90bXAvY291bnRlciIsICJ3Iikud3JpdGUoIiVkIiAlIF9jb3VudCkKKyAgICAgICB3aXRoIG9wZW4oIi90bXAvY291bnRlciIsICJ3IikgYXMgb3V0ZmlsZToKKyAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiJWQiICUgX2NvdW50KQogCiAgICBpbXBvcnQgYXRleGl0CiAgICBhdGV4aXQucmVnaXN0ZXIoc2F2ZWNvdW50ZXIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0IGIvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdAppbmRleCBjMDhkZjE1Li5hZGUwZjA3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QKQEAgLTE4LDkgKzE4LDE0IEBACiAKIFRoZXJlIGFyZSB0d28gaW50ZXJmYWNlcyBwcm92aWRlZCBieSB0aGlzIG1vZHVsZS4gIFRoZSBtb2Rlcm4gaW50ZXJmYWNlCiBzdXBwb3J0cyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgQVNDSUkgYnl0ZSBzdHJpbmcgb2JqZWN0cyB1c2luZyBhbGwgdGhyZWUKLWFscGhhYmV0cy4gIFRoZSBsZWdhY3kgaW50ZXJmYWNlIHByb3ZpZGVzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdG8gYW5kIGZyb20KLWZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMgYnl0ZSBzdHJpbmdzLCBidXQgb25seSB1c2luZyB0aGUgQmFzZTY0IHN0YW5kYXJkCi1hbHBoYWJldC4KK2FscGhhYmV0cy4gQWRkaXRpb25hbGx5LCB0aGUgZGVjb2RpbmcgZnVuY3Rpb25zIG9mIHRoZSBtb2Rlcm4gaW50ZXJmYWNlIGFsc28KK2FjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSBsZWdhY3kgaW50ZXJmYWNlCitwcm92aWRlcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIGFuZCBmcm9tIGZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMKK2J5dGUgc3RyaW5ncywgYnV0IG9ubHkgdXNpbmcgdGhlIEJhc2U2NCBzdGFuZGFyZCBhbHBoYWJldC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFTQ0lJLW9ubHkgVW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZgorICAgdGhlIG1vZGVybiBpbnRlcmZhY2UuCiAKIFRoZSBtb2Rlcm4gaW50ZXJmYWNlIHByb3ZpZGVzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hcnkucnN0IGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWZiZGMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApAQCAtMCwwICsxLDIzIEBACisuLiBfYmluYXJ5c2VydmljZXM6CisKKyoqKioqKioqKioqKioqKioqKioqCitCaW5hcnkgRGF0YSBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioKKworVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIHNvbWUgYmFzaWMgc2VydmljZXMgb3BlcmF0aW9ucworZm9yIG1hbmlwdWxhdGlvbiBvZiBiaW5hcnkgZGF0YS4gT3RoZXIgb3BlcmF0aW9ucyBvbiBiaW5hcnkgZGF0YSwgc3BlY2lmaWNhbGx5CitpbiByZWxhdGlvbiB0byBmaWxlIGZvcm1hdHMgYW5kIG5ldHdvcmsgcHJvdG9jb2xzLCBhcmUgZGVzY3JpYmVkIGluIHRoZQorcmVsZXZhbnQgc2VjdGlvbnMuCisKK1NvbWUgbGlicmFyaWVzIGRlc2NyaWJlZCB1bmRlciA6cmVmOmB0ZXh0c2VydmljZXNgIGFsc28gd29yayB3aXRoIGVpdGhlcgorQVNDSUktY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cyAoZm9yIGV4YW1wbGUsIDptb2Q6YHJlYCkgb3IgYWxsIGJpbmFyeSBkYXRhCisoZm9yIGV4YW1wbGUsIDptb2Q6YGRpZmZsaWJgKS4KKworSW4gYWRkaXRpb24sIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uJ3MgYnVpbHQtaW4gYmluYXJ5IGRhdGEgdHlwZXMgaW4KKzpyZWY6YGJpbmFyeXNlcWAuCisKKy4uIHRvY3RyZWU6OgorCisgICBzdHJ1Y3QucnN0CisgICBjb2RlY3MucnN0CisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAppbmRleCAyYWEzNzAyLi5iYWY0MzBkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CkBAIC0yMCw4ICsyMCwxMyBAQAogCiAuLiBub3RlOjoKIAotICAgRW5jb2RpbmcgYW5kIGRlY29kaW5nIGZ1bmN0aW9ucyBkbyBub3QgYWNjZXB0IFVuaWNvZGUgc3RyaW5ncy4gIE9ubHkgYnl0ZXN0cmluZwotICAgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNhbiBiZSBwcm9jZXNzZWQuCisgICBgYGEyYl8qYGAgZnVuY3Rpb25zIGFjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisgICBPdGhlciBmdW5jdGlvbnMgb25seSBhY2NlcHQgYnl0ZXMgYW5kIGJ5dGVzLWNvbXBhdGlibGUgb2JqZWN0cyAoc3VjaCBhcworICAgYnl0ZWFycmF5IG9iamVjdHMgYW5kIG90aGVyIG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSBidWZmZXIgQVBJKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFTQ0lJLW9ubHkgdW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGBgYTJiXypgYCBmdW5jdGlvbnMuCisKIAogVGhlIDptb2Q6YGJpbmFzY2lpYCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggOTMxNDRiNi4uZDA2YTM5YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC0xLDIwMSArMSwyMDIgQEAKLTptb2Q6YGJ6MmAgLS0tIENvbXByZXNzaW9uIGNvbXBhdGlibGUgd2l0aCA6cHJvZ3JhbTpgYnppcDJgCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOm1vZDpgYnoyYCAtLS0gU3VwcG9ydCBmb3IgOnByb2dyYW06YGJ6aXAyYCBjb21wcmVzc2lvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiBiejIKLSAgIDpzeW5vcHNpczogSW50ZXJmYWNlIHRvIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHJvdXRpbmVzCi0gICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBiemlwMi4KKyAgIDpzeW5vcHNpczogSW50ZXJmYWNlcyBmb3IgYnppcDIgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24uCiAuLiBtb2R1bGVhdXRob3I6OiBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogCiAKLVRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBpbnRlcmZhY2UgZm9yIHRoZSBiejIgY29tcHJlc3Npb24gbGlicmFyeS4KLUl0IGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgb25lLXNob3QgKGRlKWNvbXByZXNzaW9uIGZ1bmN0aW9ucywgYW5kCi10eXBlcyBmb3Igc2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24uCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgYnppcDIgY29tcHJlc3Npb24gYWxnb3JpdGhtLgogCi1IZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGUgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnoyIG1vZHVsZToKK1RoZSA6bW9kOmBiejJgIG1vZHVsZSBjb250YWluczoKIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgaW5jbHVkaW5nCi0gIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZWAsIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZXNgLAotICA6bWV0aDpgfkJaMkZpbGUud3JpdGVsaW5lc2AsIDptZXRoOmB+QloyRmlsZS5zZWVrYCwgZXRjOworKiBUaGUgOmZ1bmM6YC5vcGVuYCBmdW5jdGlvbiBhbmQgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBmb3IgcmVhZGluZyBhbmQKKyAgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzLgorKiBUaGUgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXMgZm9yCisgIGluY3JlbWVudGFsIChkZSljb21wcmVzc2lvbi4KKyogVGhlIDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBmdW5jdGlvbnMgZm9yIG9uZS1zaG90CisgIChkZSljb21wcmVzc2lvbi4KIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgZW11bGF0ZWQgOm1ldGg6YH5CWjJGaWxlLnNlZWtgIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBpbXBsZW1lbnRzIHVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBvZmZlcnMgYW4gb3B0aW1pemVkIGxpbmUgaXRlcmF0aW9uIHVzaW5nIGEgcmVhZGFoZWFkCi0gIGFsZ29yaXRobTsKLQotKiBTZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbiBzdXBwb3J0ZWQgYnkgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQKLSAgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXM7Ci0KLSogT25lLXNob3QgKGRlKWNvbXByZXNzaW9uIHN1cHBvcnRlZCBieSA6ZnVuYzpgY29tcHJlc3NgIGFuZCA6ZnVuYzpgZGVjb21wcmVzc2AKLSAgZnVuY3Rpb25zOwotCi0qIFRocmVhZCBzYWZldHkgdXNlcyBpbmRpdmlkdWFsIGxvY2tpbmcgbWVjaGFuaXNtLgorQWxsIG9mIHRoZSBjbGFzc2VzIGluIHRoaXMgbW9kdWxlIG1heSBzYWZlbHkgYmUgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgogCiAKIChEZSljb21wcmVzc2lvbiBvZiBmaWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhhbmRsaW5nIG9mIGNvbXByZXNzZWQgZmlsZXMgaXMgb2ZmZXJlZCBieSB0aGUgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcy4KKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0ncicsIGNvbXByZXNzbGV2ZWw9OSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLCByZXR1cm5pbmcgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4KKworICAgQXMgd2l0aCB0aGUgY29uc3RydWN0b3IgZm9yIDpjbGFzczpgQloyRmlsZWAsIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZQorICAgYW4gYWN0dWFsIGZpbGVuYW1lIChhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBvciBhbiBleGlzdGluZworICAgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAncidgYCwgYGAncmInYGAsIGBgJ3cnYGAsIGBgJ3diJ2BgLAorICAgYGAnYSdgYCwgb3IgYGAnYWInYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCdydCdgYCwgYGAnd3QnYGAsIG9yIGBgJ2F0J2BgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KKworICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMSB0byA5LCBhcyBmb3IgdGhlCisgICA6Y2xhc3M6YEJaMkZpbGVgIGNvbnN0cnVjdG9yLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBCWjJGaWxlYAorICAgY29uc3RydWN0b3I6IGBgQloyRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbD1jb21wcmVzc2xldmVsKWBgLiBJbgorICAgdGhpcyBjYXNlLCB0aGUgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMgbXVzdCBub3QgYmUKKyAgIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgQloyRmlsZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgIGhhbmRsaW5nIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGluZGV4OjoKLSAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBiejIuQloyRmlsZSBjbGFzcworLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSkKIAotLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPTAsIGNvbXByZXNzbGV2ZWw9OSkKKyAgIE9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCiAKLSAgIE9wZW4gYSBiejIgZmlsZS4gTW9kZSBjYW4gYmUgZWl0aGVyIGBgJ3InYGAgb3IgYGAndydgYCwgZm9yIHJlYWRpbmcgKGRlZmF1bHQpCi0gICBvciB3cml0aW5nLiBXaGVuIG9wZW5lZCBmb3Igd3JpdGluZywgdGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QKLSAgIGV4aXN0LCBhbmQgdHJ1bmNhdGVkIG90aGVyd2lzZS4gSWYgKmJ1ZmZlcmluZyogaXMgZ2l2ZW4sIGBgMGBgIG1lYW5zCi0gICB1bmJ1ZmZlcmVkLCBhbmQgbGFyZ2VyIG51bWJlcnMgc3BlY2lmeSB0aGUgYnVmZmVyIHNpemU7IHRoZSBkZWZhdWx0IGlzCi0gICBgYDBgYC4gSWYgKmNvbXByZXNzbGV2ZWwqIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kCi0gICBgYDlgYDsgdGhlIGRlZmF1bHQgaXMgYGA5YGAuIEFkZCBhIGBgJ1UnYGAgdG8gbW9kZSB0byBvcGVuIHRoZSBmaWxlIGZvciBpbnB1dAotICAgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZS4gIEFueSBsaW5lIGVuZGluZyBpbiB0aGUgaW5wdXQgZmlsZSB3aWxsIGJlCi0gICBzZWVuIGFzIGEgYGAnXG4nYGAgaW4gUHl0aG9uLiAgQWxzbywgYSBmaWxlIHNvIG9wZW5lZCBnYWlucyB0aGUgYXR0cmlidXRlCi0gICA6YXR0cjpgbmV3bGluZXNgOyB0aGUgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIG9uZSBvZiBgYE5vbmVgYCAobm8gbmV3bGluZQotICAgcmVhZCB5ZXQpLCBgYCdccidgYCwgYGAnXG4nYGAsIGBgJ1xyXG4nYGAgb3IgYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUKLSAgIG5ld2xpbmUgdHlwZXMgc2Vlbi4gVW5pdmVyc2FsIG5ld2xpbmVzIGFyZSBhdmFpbGFibGUgb25seSB3aGVuCi0gICByZWFkaW5nLiBJbnN0YW5jZXMgc3VwcG9ydCBpdGVyYXRpb24gaW4gdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCA6Y2xhc3M6YGZpbGVgCi0gICBpbnN0YW5jZXMuCisgICBJZiAqZmlsZW5hbWUqIGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwgb3BlbiB0aGUgbmFtZWQgZmlsZQorICAgZGlyZWN0bHkuIE90aGVyd2lzZSwgKmZpbGVuYW1lKiBzaG91bGQgYmUgYSA6dGVybTpgZmlsZSBvYmplY3RgLCB3aGljaCB3aWxsCisgICBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KIAotICAgOmNsYXNzOmBCWjJGaWxlYCBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCdyJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAndydgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCdhJ2BgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgJ3JiJ2BgLCBgYCd3YidgYCwgYW5kIGBgJ2FiJ2BgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCd3J2BgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgJ2EnYGAuCisKKyAgIFRoZSAqYnVmZmVyaW5nKiBhcmd1bWVudCBpcyBpZ25vcmVkLiBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuCisKKyAgIElmICptb2RlKiBpcyBgYCd3J2BgIG9yIGBgJ2EnYGAsICpjb21wcmVzc2xldmVsKiBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbgorICAgYGAxYGAgYW5kIGBgOWBgIHNwZWNpZnlpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOiBgYDFgYCBwcm9kdWNlcyB0aGUKKyAgIGxlYXN0IGNvbXByZXNzaW9uLCBhbmQgYGA5YGAgKGRlZmF1bHQpIHByb2R1Y2VzIHRoZSBtb3N0IGNvbXByZXNzaW9uLgorCisgICBJZiAqbW9kZSogaXMgYGAncidgYCwgdGhlIGlucHV0IGZpbGUgbWF5IGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlCisgICBjb21wcmVzc2VkIHN0cmVhbXMuCisKKyAgIDpjbGFzczpgQloyRmlsZWAgcHJvdmlkZXMgYWxsIG9mIHRoZSBtZW1iZXJzIHNwZWNpZmllZCBieSB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICA6Y2xhc3M6YEJaMkZpbGVgIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2Q6CisKKyAgIC4uIG1ldGhvZDo6IHBlZWsoW25dKQorCisgICAgICBSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4gQXQgbGVhc3Qgb25lCisgICAgICBieXRlIG9mIGRhdGEgd2lsbCBiZSByZXR1cm5lZCAodW5sZXNzIGF0IEVPRikuIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMKKyAgICAgIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgZmlsZW5vYCwgOm1ldGg6YHJlYWRhYmxlYCwgOm1ldGg6YHNlZWthYmxlYCwgOm1ldGg6YHdyaXRhYmxlYCwKKyAgICAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmByZWFkaW50b2AgbWV0aG9kcyB3ZXJlIGFkZGVkLgogCi0gICAuLiBub3RlOjoKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IHdhcyBhZGRlZCBmb3IgKmZpbGVuYW1lKiBiZWluZyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgaW5zdGVhZCBvZiBhbgorICAgICAgYWN0dWFsIGZpbGVuYW1lLgogCi0gICAgICBUaGlzIGNsYXNzIGRvZXMgbm90IHN1cHBvcnQgaW5wdXQgZmlsZXMgY29udGFpbmluZyBtdWx0aXBsZSBzdHJlYW1zIChzdWNoCi0gICAgICBhcyB0aG9zZSBwcm9kdWNlZCBieSB0aGUgOnByb2dyYW06YHBiemlwMmAgdG9vbCkuIFdoZW4gcmVhZGluZyBzdWNoIGFuCi0gICAgICBpbnB1dCBmaWxlLCBvbmx5IHRoZSBmaXJzdCBzdHJlYW0gd2lsbCBiZSBhY2Nlc3NpYmxlLiBJZiB5b3UgcmVxdWlyZQotICAgICAgc3VwcG9ydCBmb3IgbXVsdGktc3RyZWFtIGZpbGVzLCBjb25zaWRlciB1c2luZyB0aGUgdGhpcmQtcGFydHkKLSAgICAgIDptb2Q6YGJ6MmZpbGVgIG1vZHVsZSAoYXZhaWxhYmxlIGZyb20KLSAgICAgIGBQeVBJIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYnoyZmlsZT5gXykuIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEKLSAgICAgIGJhY2twb3J0IG9mIFB5dGhvbiAzLjMncyA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzLCB3aGljaCBkb2VzIHN1cHBvcnQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGAnYSdgYCAoYXBwZW5kKSBtb2RlIHdhcyBhZGRlZCwgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciByZWFkaW5nCiAgICAgICBtdWx0aS1zdHJlYW0gZmlsZXMuCiAKIAotICAgLi4gbWV0aG9kOjogY2xvc2UoKQotCi0gICAgICBDbG9zZSB0aGUgZmlsZS4gU2V0cyBkYXRhIGF0dHJpYnV0ZSA6YXR0cjpgY2xvc2VkYCB0byB0cnVlLiBBIGNsb3NlZCBmaWxlCi0gICAgICBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gOm1ldGg6YGNsb3NlYCBtYXkgYmUgY2FsbGVkCi0gICAgICBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLgotCi0KLSAgIC4uIG1ldGhvZDo6IHJlYWQoW3NpemVdKQotCi0gICAgICBSZWFkIGF0IG1vc3QgKnNpemUqIHVuY29tcHJlc3NlZCBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlIHN0cmluZy4gSWYgdGhlCi0gICAgICAqc2l6ZSogYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KLQotCi0gICAuLiBtZXRob2Q6OiByZWFkbGluZShbc2l6ZV0pCi0KLSAgICAgIFJldHVybiB0aGUgbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgYnl0ZSBzdHJpbmcsIHJldGFpbmluZyBuZXdsaW5lLgotICAgICAgQSBub24tbmVnYXRpdmUgKnNpemUqIGFyZ3VtZW50IGxpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8KLSAgICAgIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4gUmV0dXJuIGFuIGVtcHR5IGJ5dGUKLSAgICAgIHN0cmluZyBhdCBFT0YuCi0KLQotICAgLi4gbWV0aG9kOjogcmVhZGxpbmVzKFtzaXplXSkKLQotICAgICAgUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyByZWFkLiBUaGUgb3B0aW9uYWwgKnNpemUqIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4KLSAgICAgIGFwcHJveGltYXRlIGJvdW5kIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLgotCi0KLSAgIC4uIG1ldGhvZDo6IHNlZWsob2Zmc2V0Wywgd2hlbmNlXSkKLQotICAgICAgTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbi4gQXJndW1lbnQgKm9mZnNldCogaXMgYSBieXRlIGNvdW50LiBPcHRpb25hbAotICAgICAgYXJndW1lbnQgKndoZW5jZSogZGVmYXVsdHMgdG8gYGBvcy5TRUVLX1NFVGBgIG9yIGBgMGBgIChvZmZzZXQgZnJvbSBzdGFydAotICAgICAgb2YgZmlsZTsgb2Zmc2V0IHNob3VsZCBiZSBgYD49IDBgYCk7IG90aGVyIHZhbHVlcyBhcmUgYGBvcy5TRUVLX0NVUmBgIG9yCi0gICAgICBgYDFgYCAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uOyBvZmZzZXQgY2FuIGJlIHBvc2l0aXZlIG9yCi0gICAgICBuZWdhdGl2ZSksIGFuZCBgYG9zLlNFRUtfRU5EYGAgb3IgYGAyYGAgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGU7Ci0gICAgICBvZmZzZXQgaXMgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2ggbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQKLSAgICAgIHRoZSBlbmQgb2YgYSBmaWxlKS4KLQotICAgICAgTm90ZSB0aGF0IHNlZWtpbmcgb2YgYnoyIGZpbGVzIGlzIGVtdWxhdGVkLCBhbmQgZGVwZW5kaW5nIG9uIHRoZQotICAgICAgcGFyYW1ldGVycyB0aGUgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KLQotCi0gICAuLiBtZXRob2Q6OiB0ZWxsKCkKLQotICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuCi0KLQotICAgLi4gbWV0aG9kOjogd3JpdGUoZGF0YSkKLQotICAgICAgV3JpdGUgdGhlIGJ5dGUgc3RyaW5nICpkYXRhKiB0byBmaWxlLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywKLSAgICAgIDptZXRoOmBjbG9zZWAgbWF5IGJlIG5lZWRlZCBiZWZvcmUgdGhlIGZpbGUgb24gZGlzayByZWZsZWN0cyB0aGUgZGF0YQotICAgICAgd3JpdHRlbi4KLQotCi0gICAuLiBtZXRob2Q6OiB3cml0ZWxpbmVzKHNlcXVlbmNlX29mX2J5dGVfc3RyaW5ncykKLQotICAgICAgV3JpdGUgdGhlIHNlcXVlbmNlIG9mIGJ5dGUgc3RyaW5ncyB0byB0aGUgZmlsZS4gTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3QKLSAgICAgIGFkZGVkLiBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIGJ5dGUgc3RyaW5ncy4KLSAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yIGVhY2ggYnl0ZSBzdHJpbmcuCi0KLQotU2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNlcXVlbnRpYWwgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gaXMgZG9uZSB1c2luZyB0aGUgY2xhc3NlcwotOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgLgotCitJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBjbGFzczo6IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbD05KQogCiAgICBDcmVhdGUgYSBuZXcgY29tcHJlc3NvciBvYmplY3QuIFRoaXMgb2JqZWN0IG1heSBiZSB1c2VkIHRvIGNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZQotICAgOmZ1bmM6YGNvbXByZXNzYCBmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgKmNvbXByZXNzbGV2ZWwqIHBhcmFtZXRlciwgaWYgZ2l2ZW4sCi0gICBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgOyB0aGUgZGVmYXVsdCBpcyBgYDlgYC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgY29tcHJlc3NgIGZ1bmN0aW9uCisgICBpbnN0ZWFkLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCiAKICAgIC4uIG1ldGhvZDo6IGNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzIG9mCi0gICAgICBjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIFdoZW4geW91J3ZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvCi0gICAgICBjb21wcmVzcywgY2FsbCB0aGUgOm1ldGg6YGZsdXNoYCBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLAotICAgICAgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy4KKyAgICAgIFByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZiBjb21wcmVzc2VkIGRhdGEKKyAgICAgIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIFdoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlCisgICAgICA6bWV0aDpgZmx1c2hgIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuCiAKIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQogCi0gICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwKLSAgICAgIGJ1ZmZlcnMuIFlvdSBtdXN0IG5vdCB1c2UgdGhlIGNvbXByZXNzb3Igb2JqZWN0IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCisgICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0IGluCisgICAgICBpbnRlcm5hbCBidWZmZXJzLgorCisgICAgICBUaGUgY29tcHJlc3NvciBvYmplY3QgbWF5IG5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KIAogCiAuLiBjbGFzczo6IEJaMkRlY29tcHJlc3NvcigpCiAKICAgIENyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBkZWNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlCi0gICA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24gaW5zdGVhZC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24KKyAgIGluc3RlYWQuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbnB1dHMgY29udGFpbmluZyBtdWx0aXBsZQorICAgICAgY29tcHJlc3NlZCBzdHJlYW1zLCB1bmxpa2UgOmZ1bmM6YGRlY29tcHJlc3NgIGFuZCA6Y2xhc3M6YEJaMkZpbGVgLiBJZgorICAgICAgeW91IG5lZWQgdG8gZGVjb21wcmVzcyBhIG11bHRpLXN0cmVhbSBpbnB1dCB3aXRoIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCwKKyAgICAgIHlvdSBtdXN0IHVzZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgogCiAgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBJdCB3aWxsIHJldHVybiBjaHVua3Mgb2YKLSAgICAgIGRlY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBJZiB5b3UgdHJ5IHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlcgotICAgICAgdGhlIGVuZCBvZiBzdHJlYW0gaXMgZm91bmQsIDpleGM6YEVPRkVycm9yYCB3aWxsIGJlIHJhaXNlZC4gSWYgYW55IGRhdGEKLSAgICAgIHdhcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSwgaXQnbGwgYmUgaWdub3JlZCBhbmQgc2F2ZWQgaW4KLSAgICAgIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorICAgICAgUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkCisgICAgICBkYXRhIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3RyZWFtIGlzCisgICAgICByZWFjaGVkIHJhaXNlcyBhbiA6ZXhjOmBFT0ZFcnJvcmAuIElmIGFueSBkYXRhIGlzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YKKyAgICAgIHRoZSBzdHJlYW0sIGl0IGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlb2YKKworICAgICAgVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworICAgLi4gYXR0cmlidXRlOjogdW51c2VkX2RhdGEKKworICAgICAgRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBoYXMgYmVlbgorICAgICAgcmVhY2hlZCwgaXRzIHZhbHVlIHdpbGwgYmUgYGBiJydgYC4KIAogCiBPbmUtc2hvdCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PbmUtc2hvdCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSA6ZnVuYzpgY29tcHJlc3NgCi1hbmQgOmZ1bmM6YGRlY29tcHJlc3NgIGZ1bmN0aW9ucy4KLQotCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIAotICAgQ29tcHJlc3MgKmRhdGEqIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwgdXNlCi0gICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGluc3RlYWQuIFRoZSAqY29tcHJlc3NsZXZlbCogcGFyYW1ldGVyLAotICAgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQgYGA5YGA7IHRoZSBkZWZhdWx0IGlzIGBgOWBgLgorICAgQ29tcHJlc3MgKmRhdGEqLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGEgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhKQogCi0gICBEZWNvbXByZXNzICpkYXRhKiBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwKLSAgIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKyAgIERlY29tcHJlc3MgKmRhdGEqLgorCisgICBJZiAqZGF0YSogaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBkZWNvbXByZXNzCisgICBhbGwgb2YgdGhlIHN0cmVhbXMuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG11bHRpLXN0cmVhbSBpbnB1dHMgd2FzIGFkZGVkLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jaHVuay5yc3QgYi9Eb2MvbGlicmFyeS9jaHVuay5yc3QKaW5kZXggZDM1NThhNC4uYzFiYTQ5NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY2h1bmsucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NodW5rLnJzdApAQCAtODQsOCArODQsOSBAQAogICAgICAgQ2xvc2UgYW5kIHNraXAgdG8gdGhlIGVuZCBvZiB0aGUgY2h1bmsuICBUaGlzIGRvZXMgbm90IGNsb3NlIHRoZQogICAgICAgdW5kZXJseWluZyBmaWxlLgogCi0gICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCi0gICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCisgICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCisgICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBCZWZvcmUgUHl0aG9uIDMuMywgdGhleSB1c2VkIHRvCisgICByYWlzZSA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKICAgIC4uIG1ldGhvZDo6IGlzYXR0eSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jbWQucnN0IGIvRG9jL2xpYnJhcnkvY21kLnJzdAppbmRleCA5NDNjMDRhLi45NzIyOTI4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NtZC5yc3QKQEAgLTI4NSw4ICsyODUsOCBAQAogICAgICAgICBkZWYgZG9fcGxheWJhY2soc2VsZiwgYXJnKToKICAgICAgICAgICAgICdQbGF5YmFjayBjb21tYW5kcyBmcm9tIGEgZmlsZTogIFBMQVlCQUNLIHJvc2UuY21kJwogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgICAgICBjbWRzID0gb3BlbihhcmcpLnJlYWQoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGNtZHMpCisgICAgICAgICAgICB3aXRoIG9wZW4oYXJnKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGYucmVhZCgpLnNwbGl0bGluZXMoKSkKICAgICAgICAgZGVmIHByZWNtZChzZWxmLCBsaW5lKToKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLmxvd2VyKCkKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgJ3BsYXliYWNrJyBub3QgaW4gbGluZToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CmluZGV4IDc2MmJiOTguLjA3MWZjMjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdApAQCAtNDU4LDcgKzQ1OCw4IEBACiAKICAgIC4uIG1ldGhvZDo6IHJlc2V0KCkKIAotICAgICAgUmVzZXQgdGhlIGVuY29kZXIgdG8gdGhlIGluaXRpYWwgc3RhdGUuCisgICAgICBSZXNldCB0aGUgZW5jb2RlciB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIG91dHB1dCBpcyBkaXNjYXJkZWQ6IGNhbGwKKyAgICAgIGBgLmVuY29kZSgnJywgZmluYWw9VHJ1ZSlgYCB0byByZXNldCB0aGUgZW5jb2RlciBhbmQgdG8gZ2V0IHRoZSBvdXRwdXQuCiAKIAogLi4gbWV0aG9kOjogSW5jcmVtZW50YWxFbmNvZGVyLmdldHN0YXRlKCkKQEAgLTc4NiwxMSArNzg3LDkgQEAKIEVuY29kaW5ncyBhbmQgVW5pY29kZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVN0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzICh0byBiZSBwcmVjaXNlCi1hcyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhcnJheXMpLiBEZXBlbmRpbmcgb24gdGhlIHdheSBQeXRob24gaXMgY29tcGlsZWQgKGVpdGhlcgotdmlhIGBgLS13aXRob3V0LXdpZGUtdW5pY29kZWBgIG9yIGBgLS13aXRoLXdpZGUtdW5pY29kZWBgLCB3aXRoIHRoZQotZm9ybWVyIGJlaW5nIHRoZSBkZWZhdWx0KSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBpcyBlaXRoZXIgYSAxNi1iaXQgb3IgMzItYml0IGRhdGEKLXR5cGUuIE9uY2UgYSBzdHJpbmcgb2JqZWN0IGlzIHVzZWQgb3V0c2lkZSBvZiBDUFUgYW5kIG1lbW9yeSwgQ1BVIGVuZGlhbm5lc3MKK1N0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzIGluIHJhbmdlIGBgMCAtIDEwRkZGRmBgCisoc2VlIDpwZXA6YDM5M2AgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24pLgorT25jZSBhIHN0cmluZyBvYmplY3QgaXMgdXNlZCBvdXRzaWRlIG9mIENQVSBhbmQgbWVtb3J5LCBDUFUgZW5kaWFubmVzcwogYW5kIGhvdyB0aGVzZSBhcnJheXMgYXJlIHN0b3JlZCBhcyBieXRlcyBiZWNvbWUgYW4gaXNzdWUuICBUcmFuc2Zvcm1pbmcgYQogc3RyaW5nIG9iamVjdCBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgaXMgY2FsbGVkIGVuY29kaW5nIGFuZCByZWNyZWF0aW5nIHRoZQogc3RyaW5nIG9iamVjdCBmcm9tIHRoZSBzZXF1ZW5jZSBvZiBieXRlcyBpcyBrbm93biBhcyBkZWNvZGluZy4gIFRoZXJlIGFyZSBtYW55CkBAIC05MDEsNiArOTAwLDE1IEBACiBjYXNlIG9yIHVzZSBhIGh5cGhlbiBpbnN0ZWFkIG9mIGFuIHVuZGVyc2NvcmUgYXJlIGFsc28gdmFsaWQgYWxpYXNlczsgdGhlcmVmb3JlLAogZS5nLiBgYCd1dGYtOCdgYCBpcyBhIHZhbGlkIGFsaWFzIGZvciB0aGUgYGAndXRmXzgnYGAgY29kZWMuCiAKKy4uIGltcGwtZGV0YWlsOjoKKworICAgU29tZSBjb21tb24gZW5jb2RpbmdzIGNhbiBieXBhc3MgdGhlIGNvZGVjcyBsb29rdXAgbWFjaGluZXJ5IHRvCisgICBpbXByb3ZlIHBlcmZvcm1hbmNlLiAgVGhlc2Ugb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgYXJlIG9ubHkKKyAgIHJlY29nbml6ZWQgYnkgQ1B5dGhvbiBmb3IgYSBsaW1pdGVkIHNldCBvZiBhbGlhc2VzOiB1dGYtOCwgdXRmOCwKKyAgIGxhdGluLTEsIGxhdGluMSwgaXNvLTg4NTktMSwgbWJjcyAoV2luZG93cyBvbmx5KSwgYXNjaWksIHV0Zi0xNiwKKyAgIGFuZCB1dGYtMzIuICBVc2luZyBhbHRlcm5hdGl2ZSBzcGVsbGluZ3MgZm9yIHRoZXNlIGVuY29kaW5ncyBtYXkKKyAgIHJlc3VsdCBpbiBzbG93ZXIgZXhlY3V0aW9uLgorCiBNYW55IG9mIHRoZSBjaGFyYWN0ZXIgc2V0cyBzdXBwb3J0IHRoZSBzYW1lIGxhbmd1YWdlcy4gVGhleSB2YXJ5IGluIGluZGl2aWR1YWwKIGNoYXJhY3RlcnMgKGUuZy4gd2hldGhlciB0aGUgRVVSTyBTSUdOIGlzIHN1cHBvcnRlZCBvciBub3QpLCBhbmQgaW4gdGhlCiBhc3NpZ25tZW50IG9mIGNoYXJhY3RlcnMgdG8gY29kZSBwb3NpdGlvbnMuIEZvciB0aGUgRXVyb3BlYW4gbGFuZ3VhZ2VzIGluCkBAIC0xMDAzLDYgKzEwMTEsMTEgQEAKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgY3AxMjU4ICAgICAgICAgIHwgd2luZG93cy0xMjU4ICAgICAgICAgICAgICAgICAgIHwgVmlldG5hbWVzZSAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgY3A2NTAwMSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2luZG93cyBvbmx5OiBXaW5kb3dzIFVURi04ICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKGBgQ1BfVVRGOGBgKSAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLi4gdmVyc2lvbmFkZGVkOjogMy4zICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2pwICAgICAgICAgIHwgZXVjanAsIHVqaXMsIHUtamlzICAgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2ppc18yMDA0ICAgIHwgamlzeDAyMTMsIGV1Y2ppczIwMDQgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTExNjAsNiArMTE3Myw4IEBACiB8IHVuaWNvZGVfaW50ZXJuYWwgICB8ICAgICAgICAgfCBSZXR1cm4gdGhlIGludGVybmFsICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IHJlcHJlc2VudGF0aW9uIG9mIHRoZSAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgb3BlcmFuZCAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIGRlcHJlY2F0ZWQ6OiAzLjMgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFRoZSBmb2xsb3dpbmcgY29kZWNzIHByb3ZpZGUgYnl0ZXMtdG8tYnl0ZXMgbWFwcGluZ3MuCkBAIC0xMjcyLDEyICsxMjg3LDEzIEBACiAuLiBtb2R1bGU6OiBlbmNvZGluZ3MubWJjcwogICAgOnN5bm9wc2lzOiBXaW5kb3dzIEFOU0kgY29kZXBhZ2UKIAotRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLiBUaGlzIGNvZGVjIG9ubHkKLXN1cHBvcnRzIGBgJ3N0cmljdCdgYCBhbmQgYGAncmVwbGFjZSdgYCBlcnJvciBoYW5kbGVycyB0byBlbmNvZGUsIGFuZAotYGAnc3RyaWN0J2BgIGFuZCBgYCdpZ25vcmUnYGAgZXJyb3IgaGFuZGxlcnMgdG8gZGVjb2RlLgorRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLgogCiBBdmFpbGFiaWxpdHk6IFdpbmRvd3Mgb25seS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFN1cHBvcnQgYW55IGVycm9yIGhhbmRsZXIuCisKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICBCZWZvcmUgMy4yLCB0aGUgKmVycm9ycyogYXJndW1lbnQgd2FzIGlnbm9yZWQ7IGBgJ3JlcGxhY2UnYGAgd2FzIGFsd2F5cyB1c2VkCiAgICB0byBlbmNvZGUsIGFuZCBgYCdpZ25vcmUnYGAgdG8gZGVjb2RlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg3MzQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTAsMCArMSwxODIgQEAKKzptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgLS0tIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyBmb3IgQ29udGFpbmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGNvbGxlY3Rpb25zLmFiYworICAgOnN5bm9wc2lzOiBBYnN0cmFjdCBiYXNlIGNsYXNzZXMgZm9yIGNvbnRhaW5lcnMKKy4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgRm9ybWVybHksIHRoaXMgbW9kdWxlIHdhcyBwYXJ0IG9mIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorCisuLiB0ZXN0c2V0dXA6OiAqCisKKyAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICoKKyAgIGltcG9ydCBpdGVydG9vbHMKKyAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29sbGVjdGlvbnMvYWJjLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmAgdGhhdAorY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyIGEgY2xhc3MgcHJvdmlkZXMgYSBwYXJ0aWN1bGFyIGludGVyZmFjZTsgZm9yCitleGFtcGxlLCB3aGV0aGVyIGl0IGlzIGhhc2hhYmxlIG9yIHdoZXRoZXIgaXQgaXMgYSBtYXBwaW5nLgorCisKKy4uIF9jb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM6CisKK0NvbGxlY3Rpb25zIEFic3RyYWN0IEJhc2UgQ2xhc3NlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjb2xsZWN0aW9ucyBtb2R1bGUgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgOnRlcm06YEFCQ3MgPGFic3RyYWN0IGJhc2UgY2xhc3M+YDoKKworPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBQkMgICAgICAgICAgICAgICAgICAgICAgICBJbmhlcml0cyBmcm9tICAgICAgICAgIEFic3RyYWN0IE1ldGhvZHMgICAgICAgIE1peGluIE1ldGhvZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgCis6Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAorOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAorCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKKworOmNsYXNzOmBNdXRhYmxlU2VxdWVuY2VgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgLCAgICAgICAgYGBhcHBlbmRgYCwgYGByZXZlcnNlYGAsIGBgZXh0ZW5kYGAsIGBgcG9wYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5zZXJ0YGAgICAgICAgICAgICAgIGBgcmVtb3ZlYGAsIGBgY2xlYXJgYCwgYW5kIGBgX19pYWRkX19gYAorCis6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorCis6Y2xhc3M6YE11dGFibGVTZXRgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgIGBgYWRkYGAsICAgICAgICAgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNldGAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBkaXNjYXJkYGAgICAgICAgICAgICAgYGBjbGVhcmBgLCBgYHBvcGBgLCBgYHJlbW92ZWBgLCBgYF9faW9yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2lhbmRfX2BgLCBgYF9faXhvcl9fYGAsIGFuZCBgYF9faXN1Yl9fYGAKKworOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCisKKzpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgICAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBgc2V0ZGVmYXVsdGBgCisKKworOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAorOmNsYXNzOmBJdGVtc1ZpZXdgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgS2V5c1ZpZXdgICAgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgLCAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFZhbHVlc1ZpZXdgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYAorPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworLi4gY2xhc3M6OiBDb250YWluZXIKKyAgICAgICAgICAgSGFzaGFibGUKKyAgICAgICAgICAgU2l6ZWQKKyAgICAgICAgICAgQ2FsbGFibGUKKworICAgQUJDcyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgcmVzcGVjdGl2ZWx5IHRoZSBtZXRob2RzIDptZXRoOmBfX2NvbnRhaW5zX19gLAorICAgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9fbGVuX19gLCBhbmQgOm1ldGg6YF9fY2FsbF9fYC4KKworLi4gY2xhc3M6OiBJdGVyYWJsZQorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KKyAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCisKKy4uIGNsYXNzOjogSXRlcmF0b3IKKworICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBhbmQgOm1ldGg6YG5leHRgIG1ldGhvZHMuCisgICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgorCisuLiBjbGFzczo6IFNlcXVlbmNlCisgICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KKworLi4gY2xhc3M6OiBTZXQKKyAgICAgICAgICAgTXV0YWJsZVNldAorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KKworLi4gY2xhc3M6OiBNYXBwaW5nCisgICAgICAgICAgIE11dGFibGVNYXBwaW5nCisKKyAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KKworLi4gY2xhc3M6OiBNYXBwaW5nVmlldworICAgICAgICAgICBJdGVtc1ZpZXcKKyAgICAgICAgICAgS2V5c1ZpZXcKKyAgICAgICAgICAgVmFsdWVzVmlldworCisgICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KKworCitUaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKK3BhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgorCisgICAgc2l6ZSA9IE5vbmUKKyAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6CisgICAgICAgIHNpemUgPSBsZW4obXl2YXIpCisKK1NldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKK2NsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKK3RoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZworYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCitUaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKKzptZXRoOmBpc2Rpc2pvaW50YCA6OgorCisgICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6CisgICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCisgICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCisgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgorICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQorICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKKyAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCisgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKKyAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCisgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCisKKyAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKKyAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKKyAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKKworTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46CisKKygxKQorICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAorICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCisgICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCisgICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAorICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KKyAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKKyAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCisgICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQorICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCisKKygyKQorICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCisgICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCisgICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KKworKDMpCisgICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKKyAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCisgICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKKyAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQorICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgorCisuLiBzZWVhbHNvOjoKKworICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCisgICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KKworICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAppbmRleCA1N2UwNDgxLi40NWRhNGU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CkBAIC0yLDE3ICsyLDE3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogY29sbGVjdGlvbnMKLSAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcworICAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcwogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbkByY24uY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KIAogLi4gdGVzdHNldHVwOjogKgogCi0gICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCAqCi0gICBpbXBvcnQgaXRlcnRvb2xzCi0gICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKgorICAgIGltcG9ydCBpdGVydG9vbHMKKyAgICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCiAKLSoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbGxlY3Rpb25zLnB5YCBhbmQgOnNvdXJjZTpgTGliL19hYmNvbGwucHlgCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weWAKIAogLS0tLS0tLS0tLS0tLS0KIApAQCAtMjMsNiArMjMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpmdW5jOmBuYW1lZHR1cGxlYCAgICAgIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHR1cGxlIHN1YmNsYXNzZXMgd2l0aCBuYW1lZCBmaWVsZHMKIDpjbGFzczpgZGVxdWVgICAgICAgICAgIGxpc3QtbGlrZSBjb250YWluZXIgd2l0aCBmYXN0IGFwcGVuZHMgYW5kIHBvcHMgb24gZWl0aGVyIGVuZAorOmNsYXNzOmBDaGFpbk1hcGAgICAgICAgZGljdC1saWtlIGNsYXNzIGZvciBjcmVhdGluZyBhIHNpbmdsZSB2aWV3IG9mIG11bHRpcGxlIG1hcHBpbmdzCiA6Y2xhc3M6YENvdW50ZXJgICAgICAgICBkaWN0IHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCAgICBkaWN0IHN1YmNsYXNzIHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciBlbnRyaWVzIHdlcmUgYWRkZWQKIDpjbGFzczpgZGVmYXVsdGRpY3RgICAgIGRpY3Qgc3ViY2xhc3MgdGhhdCBjYWxscyBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gc3VwcGx5IG1pc3NpbmcgdmFsdWVzCkBAIC0zMSwxMCArMzIsMTY3IEBACiA6Y2xhc3M6YFVzZXJTdHJpbmdgICAgICB3cmFwcGVyIGFyb3VuZCBzdHJpbmcgb2JqZWN0cyBmb3IgZWFzaWVyIHN0cmluZyBzdWJjbGFzc2luZwogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotSW4gYWRkaXRpb24gdG8gdGhlIGNvbmNyZXRlIGNvbnRhaW5lciBjbGFzc2VzLCB0aGUgY29sbGVjdGlvbnMgbW9kdWxlIHByb3ZpZGVzCi06cmVmOmBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgPGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlcz5gIHRoYXQgY2FuIGJlCi11c2VkIHRvIHRlc3Qgd2hldGhlciBhIGNsYXNzIHByb3ZpZGVzIGEgcGFydGljdWxhciBpbnRlcmZhY2UsIGZvciBleGFtcGxlLAotd2hldGhlciBpdCBpcyBoYXNoYWJsZSBvciBhIG1hcHBpbmcuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgIE1vdmVkIDpyZWY6YGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlc2AgdG8gdGhlIDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlLgorICAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhleSBjb250aW51ZSB0byBiZSB2aXNpYmxlIGluIHRoaXMgbW9kdWxlCisgICAgYXMgd2VsbC4KKworCis6Y2xhc3M6YENoYWluTWFwYCBvYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitBIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIGlzIHByb3ZpZGVkIGZvciBxdWlja2x5IGxpbmtpbmcgYSBudW1iZXIgb2YgbWFwcGluZ3MKK3NvIHRoZXkgY2FuIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgdW5pdC4gIEl0IGlzIG9mdGVuIG11Y2ggZmFzdGVyIHRoYW4gY3JlYXRpbmcKK2EgbmV3IGRpY3Rpb25hcnkgYW5kIHJ1bm5pbmcgbXVsdGlwbGUgOm1ldGg6YH5kaWN0LnVwZGF0ZWAgY2FsbHMuCisKK1RoZSBjbGFzcyBjYW4gYmUgdXNlZCB0byBzaW11bGF0ZSBuZXN0ZWQgc2NvcGVzIGFuZCBpcyB1c2VmdWwgaW4gdGVtcGxhdGluZy4KKworLi4gY2xhc3M6OiBDaGFpbk1hcCgqbWFwcykKKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIG9yIG90aGVyIG1hcHBpbmdzIHRvZ2V0aGVyIHRvCisgICAgY3JlYXRlIGEgc2luZ2xlLCB1cGRhdGVhYmxlIHZpZXcuICBJZiBubyAqbWFwcyogYXJlIHNwZWNpZmllZCwgYSBzaW5nbGUgZW1wdHkKKyAgICBkaWN0aW9uYXJ5IGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBuZXcgY2hhaW4gYWx3YXlzIGhhcyBhdCBsZWFzdCBvbmUgbWFwcGluZy4KKworICAgIFRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGFyZSBzdG9yZWQgaW4gYSBsaXN0LiAgVGhhdCBsaXN0IGlzIHB1YmxpYyBhbmQgY2FuCisgICAgYWNjZXNzZWQgb3IgdXBkYXRlZCB1c2luZyB0aGUgKm1hcHMqIGF0dHJpYnV0ZS4gIFRoZXJlIGlzIG5vIG90aGVyIHN0YXRlLgorCisgICAgTG9va3VwcyBzZWFyY2ggdGhlIHVuZGVybHlpbmcgbWFwcGluZ3Mgc3VjY2Vzc2l2ZWx5IHVudGlsIGEga2V5IGlzIGZvdW5kLiAgSW4KKyAgICBjb250cmFzdCwgd3JpdGVzLCB1cGRhdGVzLCBhbmQgZGVsZXRpb25zIG9ubHkgb3BlcmF0ZSBvbiB0aGUgZmlyc3QgbWFwcGluZy4KKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgaW5jb3Jwb3JhdGVzIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGJ5IHJlZmVyZW5jZS4gIFNvLCBpZgorICAgIG9uZSBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5ncyBnZXRzIHVwZGF0ZWQsIHRob3NlIGNoYW5nZXMgd2lsbCBiZSByZWZsZWN0ZWQKKyAgICBpbiA6Y2xhc3M6YENoYWluTWFwYC4KKworICAgIEFsbCBvZiB0aGUgdXN1YWwgZGljdGlvbmFyeSBtZXRob2RzIGFyZSBzdXBwb3J0ZWQuICBJbiBhZGRpdGlvbiwgdGhlcmUgaXMgYQorICAgICptYXBzKiBhdHRyaWJ1dGUsIGEgbWV0aG9kIGZvciBjcmVhdGluZyBuZXcgc3ViY29udGV4dHMsIGFuZCBhIHByb3BlcnR5IGZvcgorICAgIGFjY2Vzc2luZyBhbGwgYnV0IHRoZSBmaXJzdCBtYXBwaW5nOgorCisgICAgLi4gYXR0cmlidXRlOjogbWFwcworCisgICAgICAgIEEgdXNlciB1cGRhdGVhYmxlIGxpc3Qgb2YgbWFwcGluZ3MuICBUaGUgbGlzdCBpcyBvcmRlcmVkIGZyb20KKyAgICAgICAgZmlyc3Qtc2VhcmNoZWQgdG8gbGFzdC1zZWFyY2hlZC4gIEl0IGlzIHRoZSBvbmx5IHN0b3JlZCBzdGF0ZSBhbmQgY2FuCisgICAgICAgIGJlIG1vZGlmaWVkIHRvIGNoYW5nZSB3aGljaCBtYXBwaW5ncyBhcmUgc2VhcmNoZWQuICBUaGUgbGlzdCBzaG91bGQKKyAgICAgICAgYWx3YXlzIGNvbnRhaW4gYXQgbGVhc3Qgb25lIG1hcHBpbmcuCisKKyAgICAuLiBtZXRob2Q6OiBuZXdfY2hpbGQoKQorCisgICAgICAgIFJldHVybnMgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhIG5ldyA6Y2xhc3M6YGRpY3RgIGZvbGxvd2VkIGJ5CisgICAgICAgIGFsbCBvZiB0aGUgbWFwcyBpbiB0aGUgY3VycmVudCBpbnN0YW5jZS4gIEEgY2FsbCB0byBgYGQubmV3X2NoaWxkKClgYCBpcworICAgICAgICBlcXVpdmFsZW50IHRvOiBgYENoYWluTWFwKHt9LCAqZC5tYXBzKWBgLiAgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IKKyAgICAgICAgY3JlYXRpbmcgc3ViY29udGV4dHMgdGhhdCBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGFsdGVyaW5nIHZhbHVlcyBpbiBhbnkKKyAgICAgICAgb2YgdGhlIHBhcmVudCBtYXBwaW5ncy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHBhcmVudHMKKworICAgICAgICBQcm9wZXJ0eSByZXR1cm5pbmcgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhbGwgb2YgdGhlIG1hcHMgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgaW5zdGFuY2UgZXhjZXB0IHRoZSBmaXJzdCBvbmUuICBUaGlzIGlzIHVzZWZ1bCBmb3Igc2tpcHBpbmcKKyAgICAgICAgdGhlIGZpcnN0IG1hcCBpbiB0aGUgc2VhcmNoLiAgVXNlIGNhc2VzIGFyZSBzaW1pbGFyIHRvIHRob3NlIGZvciB0aGUKKyAgICAgICAgOmtleXdvcmQ6YG5vbmxvY2FsYCBrZXl3b3JkIHVzZWQgaW4gOnRlcm06YG5lc3RlZCBzY29wZXMgPG5lc3RlZAorICAgICAgICBzY29wZT5gLiAgVGhlIHVzZSBjYXNlcyBhbHNvIHBhcmFsbGVsIHRob3NlIGZvciB0aGUgYnVpbHQtaW4KKyAgICAgICAgOmZ1bmM6YHN1cGVyYCBmdW5jdGlvbi4gIEEgcmVmZXJlbmNlIHRvIGBgZC5wYXJlbnRzYGAgaXMgZXF1aXZhbGVudCB0bzoKKyAgICAgICAgYGBDaGFpbk1hcCgqZC5tYXBzWzE6XSlgYC4KKworCisuLiBzZWVhbHNvOjoKKworICAgICogVGhlIGBNdWx0aUNvbnRleHQgY2xhc3MKKyAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vZW50aG91Z2h0L2NvZGV0b29scy9ibG9iLzQuMC4wL2NvZGV0b29scy9jb250ZXh0cy9tdWx0aV9jb250ZXh0LnB5PmBfCisgICAgICBpbiB0aGUgRW50aG91Z2h0IGBDb2RlVG9vbHMgcGFja2FnZQorICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9lbnRob3VnaHQvY29kZXRvb2xzPmBfIGhhcyBvcHRpb25zIHRvIHN1cHBvcnQKKyAgICAgIHdyaXRpbmcgdG8gYW55IG1hcHBpbmcgaW4gdGhlIGNoYWluLgorCisgICAgKiBEamFuZ28ncyBgQ29udGV4dCBjbGFzcworICAgICAgPGh0dHA6Ly9jb2RlLmRqYW5nb3Byb2plY3QuY29tL2Jyb3dzZXIvZGphbmdvL3RydW5rL2RqYW5nby90ZW1wbGF0ZS9jb250ZXh0LnB5PmBfCisgICAgICBmb3IgdGVtcGxhdGluZyBpcyBhIHJlYWQtb25seSBjaGFpbiBvZiBtYXBwaW5ncy4gIEl0IGFsc28gZmVhdHVyZXMKKyAgICAgIHB1c2hpbmcgYW5kIHBvcHBpbmcgb2YgY29udGV4dHMgc2ltaWxhciB0byB0aGUKKyAgICAgIDptZXRoOmB+Y29sbGVjdGlvbnMuQ2hhaW5NYXAubmV3X2NoaWxkYCBtZXRob2QgYW5kIHRoZQorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5DaGFpbk1hcC5wYXJlbnRzYCBwcm9wZXJ0eS4KKworICAgICogVGhlIGBOZXN0ZWQgQ29udGV4dHMgcmVjaXBlCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NDM0Lz5gXyBoYXMgb3B0aW9ucyB0byBjb250cm9sCisgICAgICB3aGV0aGVyIHdyaXRlcyBhbmQgb3RoZXIgbXV0YXRpb25zIGFwcGx5IG9ubHkgdG8gdGhlIGZpcnN0IG1hcHBpbmcgb3IgdG8KKyAgICAgIGFueSBtYXBwaW5nIGluIHRoZSBjaGFpbi4KKworICAgICogQSBgZ3JlYXRseSBzaW1wbGlmaWVkIHJlYWQtb25seSB2ZXJzaW9uIG9mIENoYWlubWFwCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvMzA1MjY4Lz5gXy4KKworCis6Y2xhc3M6YENoYWluTWFwYCBFeGFtcGxlcyBhbmQgUmVjaXBlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgYXBwcm9hY2hlcyB0byB3b3JraW5nIHdpdGggY2hhaW5lZCBtYXBzLgorCisKK0V4YW1wbGUgb2Ygc2ltdWxhdGluZyBQeXRob24ncyBpbnRlcm5hbCBsb29rdXAgY2hhaW46OgorCisgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICBweWxvb2t1cCA9IENoYWluTWFwKGxvY2FscygpLCBnbG9iYWxzKCksIHZhcnMoYnVpbHRpbnMpKQorCitFeGFtcGxlIG9mIGxldHRpbmcgdXNlciBzcGVjaWZpZWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0YWtlIHByZWNlZGVuY2Ugb3ZlcgorZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIGluIHR1cm4gdGFrZSBwcmVjZWRlbmNlIG92ZXIgZGVmYXVsdCB2YWx1ZXM6OgorCisgICAgICAgIGltcG9ydCBvcywgYXJncGFyc2UKKworICAgICAgICBkZWZhdWx0cyA9IHsnY29sb3InOiAncmVkJywgJ3VzZXInOiAnZ3Vlc3QnfQorCisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2VyJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb2xvcicpCisgICAgICAgIG5hbWVzcGFjZSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICAgICAgY29tbWFuZF9saW5lX2FyZ3MgPSB7azp2IGZvciBrLCB2IGluIHZhcnMobmFtZXNwYWNlKS5pdGVtcygpIGlmIHZ9CisKKyAgICAgICAgY29tYmluZWQgPSBDaGFpbk1hcChjb21tYW5kX2xpbmVfYXJncywgb3MuZW52aXJvbiwgZGVmYXVsdHMpCisgICAgICAgIHByaW50KGNvbWJpbmVkWydjb2xvciddKQorICAgICAgICBwcmludChjb21iaW5lZFsndXNlciddKQorCitFeGFtcGxlIHBhdHRlcm5zIGZvciB1c2luZyB0aGUgOmNsYXNzOmBDaGFpbk1hcGAgY2xhc3MgdG8gc2ltdWxhdGUgbmVzdGVkCitjb250ZXh0czo6CisKKyAgICAgICAgYyA9IENoYWluTWFwKCkgICAgICAgICMgQ3JlYXRlIHJvb3QgY29udGV4dAorICAgICAgICBkID0gYy5uZXdfY2hpbGQoKSAgICAgIyBDcmVhdGUgbmVzdGVkIGNoaWxkIGNvbnRleHQKKyAgICAgICAgZSA9IGMubmV3X2NoaWxkKCkgICAgICMgQ2hpbGQgb2YgYywgaW5kZXBlbmRlbnQgZnJvbSBkCisgICAgICAgIGUubWFwc1swXSAgICAgICAgICAgICAjIEN1cnJlbnQgY29udGV4dCBkaWN0aW9uYXJ5IC0tIGxpa2UgUHl0aG9uJ3MgbG9jYWxzKCkKKyAgICAgICAgZS5tYXBzWy0xXSAgICAgICAgICAgICMgUm9vdCBjb250ZXh0IC0tIGxpa2UgUHl0aG9uJ3MgZ2xvYmFscygpCisgICAgICAgIGUucGFyZW50cyAgICAgICAgICAgICAjIEVuY2xvc2luZyBjb250ZXh0IGNoYWluIC0tIGxpa2UgUHl0aG9uJ3Mgbm9ubG9jYWxzCisKKyAgICAgICAgZFsneCddICAgICAgICAgICAgICAgICMgR2V0IGZpcnN0IGtleSBpbiB0aGUgY2hhaW4gb2YgY29udGV4dHMKKyAgICAgICAgZFsneCddID0gMSAgICAgICAgICAgICMgU2V0IHZhbHVlIGluIGN1cnJlbnQgY29udGV4dAorICAgICAgICBkZWwgZFsneCddICAgICAgICAgICAgIyBEZWxldGUgZnJvbSBjdXJyZW50IGNvbnRleHQKKyAgICAgICAgbGlzdChkKSAgICAgICAgICAgICAgICMgQWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgayBpbiBkICAgICAgICAgICAgICAgICMgQ2hlY2sgYWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgbGVuKGQpICAgICAgICAgICAgICAgICMgTnVtYmVyIG9mIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgZC5pdGVtcygpICAgICAgICAgICAgICMgQWxsIG5lc3RlZCBpdGVtcworICAgICAgICBkaWN0KGQpICAgICAgICAgICAgICAgIyBGbGF0dGVuIGludG8gYSByZWd1bGFyIGRpY3Rpb25hcnkKKworVGhlIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIG9ubHkgbWFrZXMgdXBkYXRlcyAod3JpdGVzIGFuZCBkZWxldGlvbnMpIHRvIHRoZQorZmlyc3QgbWFwcGluZyBpbiB0aGUgY2hhaW4gd2hpbGUgbG9va3VwcyB3aWxsIHNlYXJjaCB0aGUgZnVsbCBjaGFpbi4gIEhvd2V2ZXIsCitpZiBkZWVwIHdyaXRlcyBhbmQgZGVsZXRpb25zIGFyZSBkZXNpcmVkLCBpdCBpcyBlYXN5IHRvIG1ha2UgYSBzdWJjbGFzcyB0aGF0Cit1cGRhdGVzIGtleXMgZm91bmQgZGVlcGVyIGluIHRoZSBjaGFpbjo6CisKKyAgICBjbGFzcyBEZWVwQ2hhaW5NYXAoQ2hhaW5NYXApOgorICAgICAgICAnVmFyaWFudCBvZiBDaGFpbk1hcCB0aGF0IGFsbG93cyBkaXJlY3QgdXBkYXRlcyB0byBpbm5lciBzY29wZXMnCisKKyAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAgICAgZm9yIG1hcHBpbmcgaW4gc2VsZi5tYXBzOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBtYXBwaW5nOgorICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHNlbGYubWFwc1swXVtrZXldID0gdmFsdWUKKworICAgICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgIGZvciBtYXBwaW5nIGluIHNlbGYubWFwczoKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gbWFwcGluZzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG1hcHBpbmdba2V5XQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKworICAgID4+PiBkID0gRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snfSwgeydlbGVwaGFudCcgOiAnYmx1ZSd9LCB7J2xpb24nIDogJ3llbGxvdyd9KQorICAgID4+PiBkWydsaW9uJ10gPSAnb3JhbmdlJyAgICAgICAgICMgdXBkYXRlIGFuIGV4aXN0aW5nIGtleSB0d28gbGV2ZWxzIGRvd24KKyAgICA+Pj4gZFsnc25ha2UnXSA9ICdyZWQnICAgICAgICAgICAjIG5ldyBrZXlzIGdldCBhZGRlZCB0byB0aGUgdG9wbW9zdCBkaWN0CisgICAgPj4+IGRlbCBkWydlbGVwaGFudCddICAgICAgICAgICAgIyByZW1vdmUgYW4gZXhpc3Rpbmcga2V5IG9uZSBsZXZlbCBkb3duCisgICAgRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snLCAnc25ha2UnOiAncmVkJ30sIHt9LCB7J2xpb24nOiAnb3JhbmdlJ30pCiAKIAogOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzCkBAIC01OSw4NSArMjE3LDg1IEBACiAKIC4uIGNsYXNzOjogQ291bnRlcihbaXRlcmFibGUtb3ItbWFwcGluZ10pCiAKLSAgIEEgOmNsYXNzOmBDb3VudGVyYCBpcyBhIDpjbGFzczpgZGljdGAgc3ViY2xhc3MgZm9yIGNvdW50aW5nIGhhc2hhYmxlIG9iamVjdHMuCi0gICBJdCBpcyBhbiB1bm9yZGVyZWQgY29sbGVjdGlvbiB3aGVyZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkga2V5cwotICAgYW5kIHRoZWlyIGNvdW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkgdmFsdWVzLiAgQ291bnRzIGFyZSBhbGxvd2VkIHRvIGJlCi0gICBhbnkgaW50ZWdlciB2YWx1ZSBpbmNsdWRpbmcgemVybyBvciBuZWdhdGl2ZSBjb3VudHMuICBUaGUgOmNsYXNzOmBDb3VudGVyYAotICAgY2xhc3MgaXMgc2ltaWxhciB0byBiYWdzIG9yIG11bHRpc2V0cyBpbiBvdGhlciBsYW5ndWFnZXMuCisgICAgQSA6Y2xhc3M6YENvdW50ZXJgIGlzIGEgOmNsYXNzOmBkaWN0YCBzdWJjbGFzcyBmb3IgY291bnRpbmcgaGFzaGFibGUgb2JqZWN0cy4KKyAgICBJdCBpcyBhbiB1bm9yZGVyZWQgY29sbGVjdGlvbiB3aGVyZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkga2V5cworICAgIGFuZCB0aGVpciBjb3VudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IHZhbHVlcy4gIENvdW50cyBhcmUgYWxsb3dlZCB0byBiZQorICAgIGFueSBpbnRlZ2VyIHZhbHVlIGluY2x1ZGluZyB6ZXJvIG9yIG5lZ2F0aXZlIGNvdW50cy4gIFRoZSA6Y2xhc3M6YENvdW50ZXJgCisgICAgY2xhc3MgaXMgc2ltaWxhciB0byBiYWdzIG9yIG11bHRpc2V0cyBpbiBvdGhlciBsYW5ndWFnZXMuCiAKLSAgIEVsZW1lbnRzIGFyZSBjb3VudGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBpbml0aWFsaXplZCBmcm9tIGFub3RoZXIKLSAgICptYXBwaW5nKiAob3IgY291bnRlcik6CisgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGluaXRpYWxpemVkIGZyb20gYW5vdGhlcgorICAgICptYXBwaW5nKiAob3IgY291bnRlcik6CiAKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbmV3LCBlbXB0eSBjb3VudGVyCiAgICAgICAgID4+PiBjID0gQ291bnRlcignZ2FsbGFoYWQnKSAgICAgICAgICAgICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20gYW4gaXRlcmFibGUKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKHsncmVkJzogNCwgJ2JsdWUnOiAyfSkgICAgICAjIGEgbmV3IGNvdW50ZXIgZnJvbSBhIG1hcHBpbmcKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKGNhdHM9NCwgZG9ncz04KSAgICAgICAgICAgICAjIGEgbmV3IGNvdW50ZXIgZnJvbSBrZXl3b3JkIGFyZ3MKIAotICAgQ291bnRlciBvYmplY3RzIGhhdmUgYSBkaWN0aW9uYXJ5IGludGVyZmFjZSBleGNlcHQgdGhhdCB0aGV5IHJldHVybiBhIHplcm8KLSAgIGNvdW50IGZvciBtaXNzaW5nIGl0ZW1zIGluc3RlYWQgb2YgcmFpc2luZyBhIDpleGM6YEtleUVycm9yYDoKKyAgICBDb3VudGVyIG9iamVjdHMgaGF2ZSBhIGRpY3Rpb25hcnkgaW50ZXJmYWNlIGV4Y2VwdCB0aGF0IHRoZXkgcmV0dXJuIGEgemVybworICAgIGNvdW50IGZvciBtaXNzaW5nIGl0ZW1zIGluc3RlYWQgb2YgcmFpc2luZyBhIDpleGM6YEtleUVycm9yYDoKIAogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoWydlZ2dzJywgJ2hhbSddKQogICAgICAgICA+Pj4gY1snYmFjb24nXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY291bnQgb2YgYSBtaXNzaW5nIGVsZW1lbnQgaXMgemVybwogICAgICAgICAwCiAKLSAgIFNldHRpbmcgYSBjb3VudCB0byB6ZXJvIGRvZXMgbm90IHJlbW92ZSBhbiBlbGVtZW50IGZyb20gYSBjb3VudGVyLgotICAgVXNlIGBgZGVsYGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5OgorICAgIFNldHRpbmcgYSBjb3VudCB0byB6ZXJvIGRvZXMgbm90IHJlbW92ZSBhbiBlbGVtZW50IGZyb20gYSBjb3VudGVyLgorICAgIFVzZSBgYGRlbGBgIHRvIHJlbW92ZSBpdCBlbnRpcmVseToKIAogICAgICAgICA+Pj4gY1snc2F1c2FnZSddID0gMCAgICAgICAgICAgICAgICAgICAgICAgICMgY291bnRlciBlbnRyeSB3aXRoIGEgemVybyBjb3VudAogICAgICAgICA+Pj4gZGVsIGNbJ3NhdXNhZ2UnXSAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsIGFjdHVhbGx5IHJlbW92ZXMgdGhlIGVudHJ5CiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLSAgIENvdW50ZXIgb2JqZWN0cyBzdXBwb3J0IHRocmVlIG1ldGhvZHMgYmV5b25kIHRob3NlIGF2YWlsYWJsZSBmb3IgYWxsCi0gICBkaWN0aW9uYXJpZXM6CisgICAgQ291bnRlciBvYmplY3RzIHN1cHBvcnQgdGhyZWUgbWV0aG9kcyBiZXlvbmQgdGhvc2UgYXZhaWxhYmxlIGZvciBhbGwKKyAgICBkaWN0aW9uYXJpZXM6CiAKLSAgIC4uIG1ldGhvZDo6IGVsZW1lbnRzKCkKKyAgICAuLiBtZXRob2Q6OiBlbGVtZW50cygpCiAKLSAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGVsZW1lbnRzIHJlcGVhdGluZyBlYWNoIGFzIG1hbnkgdGltZXMgYXMgaXRzCi0gICAgICBjb3VudC4gIEVsZW1lbnRzIGFyZSByZXR1cm5lZCBpbiBhcmJpdHJhcnkgb3JkZXIuICBJZiBhbiBlbGVtZW50J3MgY291bnQKLSAgICAgIGlzIGxlc3MgdGhhbiBvbmUsIDptZXRoOmBlbGVtZW50c2Agd2lsbCBpZ25vcmUgaXQuCisgICAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGVsZW1lbnRzIHJlcGVhdGluZyBlYWNoIGFzIG1hbnkgdGltZXMgYXMgaXRzCisgICAgICAgIGNvdW50LiAgRWxlbWVudHMgYXJlIHJldHVybmVkIGluIGFyYml0cmFyeSBvcmRlci4gIElmIGFuIGVsZW1lbnQncyBjb3VudAorICAgICAgICBpcyBsZXNzIHRoYW4gb25lLCA6bWV0aDpgZWxlbWVudHNgIHdpbGwgaWdub3JlIGl0LgogCiAgICAgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoYT00LCBiPTIsIGM9MCwgZD0tMikKICAgICAgICAgICAgID4+PiBsaXN0KGMuZWxlbWVudHMoKSkKICAgICAgICAgICAgIFsnYScsICdhJywgJ2EnLCAnYScsICdiJywgJ2InXQogCi0gICAuLiBtZXRob2Q6OiBtb3N0X2NvbW1vbihbbl0pCisgICAgLi4gbWV0aG9kOjogbW9zdF9jb21tb24oW25dKQogCi0gICAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSAqbiogbW9zdCBjb21tb24gZWxlbWVudHMgYW5kIHRoZWlyIGNvdW50cyBmcm9tIHRoZQotICAgICAgbW9zdCBjb21tb24gdG8gdGhlIGxlYXN0LiAgSWYgKm4qIGlzIG5vdCBzcGVjaWZpZWQsIDpmdW5jOmBtb3N0X2NvbW1vbmAKLSAgICAgIHJldHVybnMgKmFsbCogZWxlbWVudHMgaW4gdGhlIGNvdW50ZXIuICBFbGVtZW50cyB3aXRoIGVxdWFsIGNvdW50cyBhcmUKLSAgICAgIG9yZGVyZWQgYXJiaXRyYXJpbHk6CisgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlICpuKiBtb3N0IGNvbW1vbiBlbGVtZW50cyBhbmQgdGhlaXIgY291bnRzIGZyb20gdGhlCisgICAgICAgIG1vc3QgY29tbW9uIHRvIHRoZSBsZWFzdC4gIElmICpuKiBpcyBub3Qgc3BlY2lmaWVkLCA6ZnVuYzpgbW9zdF9jb21tb25gCisgICAgICAgIHJldHVybnMgKmFsbCogZWxlbWVudHMgaW4gdGhlIGNvdW50ZXIuICBFbGVtZW50cyB3aXRoIGVxdWFsIGNvdW50cyBhcmUKKyAgICAgICAgb3JkZXJlZCBhcmJpdHJhcmlseToKIAogICAgICAgICAgICAgPj4+IENvdW50ZXIoJ2FicmFjYWRhYnJhJykubW9zdF9jb21tb24oMykKICAgICAgICAgICAgIFsoJ2EnLCA1KSwgKCdyJywgMiksICgnYicsIDIpXQogCi0gICAuLiBtZXRob2Q6OiBzdWJ0cmFjdChbaXRlcmFibGUtb3ItbWFwcGluZ10pCisgICAgLi4gbWV0aG9kOjogc3VidHJhY3QoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICAgICBFbGVtZW50cyBhcmUgc3VidHJhY3RlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgZnJvbSBhbm90aGVyICptYXBwaW5nKgotICAgICAgKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBzdWJ0cmFjdHMgY291bnRzIGluc3RlYWQKLSAgICAgIG9mIHJlcGxhY2luZyB0aGVtLiAgQm90aCBpbnB1dHMgYW5kIG91dHB1dHMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUuCisgICAgICAgIEVsZW1lbnRzIGFyZSBzdWJ0cmFjdGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBmcm9tIGFub3RoZXIgKm1hcHBpbmcqCisgICAgICAgIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgc3VidHJhY3RzIGNvdW50cyBpbnN0ZWFkCisgICAgICAgIG9mIHJlcGxhY2luZyB0aGVtLiAgQm90aCBpbnB1dHMgYW5kIG91dHB1dHMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUuCiAKICAgICAgICAgICAgID4+PiBjID0gQ291bnRlcihhPTQsIGI9MiwgYz0wLCBkPS0yKQogICAgICAgICAgICAgPj4+IGQgPSBDb3VudGVyKGE9MSwgYj0yLCBjPTMsIGQ9NCkKICAgICAgICAgICAgID4+PiBjLnN1YnRyYWN0KGQpCiAgICAgICAgICAgICBDb3VudGVyKHsnYSc6IDMsICdiJzogMCwgJ2MnOiAtMywgJ2QnOiAtNn0pCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgVGhlIHVzdWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMKLSAgIGV4Y2VwdCBmb3IgdHdvIHdoaWNoIHdvcmsgZGlmZmVyZW50bHkgZm9yIGNvdW50ZXJzLgorICAgIFRoZSB1c3VhbCBkaWN0aW9uYXJ5IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSBmb3IgOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzCisgICAgZXhjZXB0IGZvciB0d28gd2hpY2ggd29yayBkaWZmZXJlbnRseSBmb3IgY291bnRlcnMuCiAKLSAgIC4uIG1ldGhvZDo6IGZyb21rZXlzKGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGZyb21rZXlzKGl0ZXJhYmxlKQogCi0gICAgICBUaGlzIGNsYXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cy4KKyAgICAgICAgVGhpcyBjbGFzcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMuCiAKLSAgIC4uIG1ldGhvZDo6IHVwZGF0ZShbaXRlcmFibGUtb3ItbWFwcGluZ10pCisgICAgLi4gbWV0aG9kOjogdXBkYXRlKFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKIAotICAgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGFkZGVkLWluIGZyb20gYW5vdGhlcgotICAgICAgKm1hcHBpbmcqIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgYWRkcyBjb3VudHMKLSAgICAgIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZW0uICBBbHNvLCB0aGUgKml0ZXJhYmxlKiBpcyBleHBlY3RlZCB0byBiZSBhCi0gICAgICBzZXF1ZW5jZSBvZiBlbGVtZW50cywgbm90IGEgc2VxdWVuY2Ugb2YgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4KKyAgICAgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGFkZGVkLWluIGZyb20gYW5vdGhlcgorICAgICAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBhZGRzIGNvdW50cworICAgICAgICBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0aGVtLiAgQWxzbywgdGhlICppdGVyYWJsZSogaXMgZXhwZWN0ZWQgdG8gYmUgYQorICAgICAgICBzZXF1ZW5jZSBvZiBlbGVtZW50cywgbm90IGEgc2VxdWVuY2Ugb2YgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4KIAogQ29tbW9uIHBhdHRlcm5zIGZvciB3b3JraW5nIHdpdGggOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzOjoKIApAQCAtMTQ5LDcgKzMwNyw3IEBACiAgICAgYy5pdGVtcygpICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYSBsaXN0IG9mIChlbGVtLCBjbnQpIHBhaXJzCiAgICAgQ291bnRlcihkaWN0KGxpc3Rfb2ZfcGFpcnMpKSAgICAjIGNvbnZlcnQgZnJvbSBhIGxpc3Qgb2YgKGVsZW0sIGNudCkgcGFpcnMKICAgICBjLm1vc3RfY29tbW9uKClbOi1uOi0xXSAgICAgICAgICMgbiBsZWFzdCBjb21tb24gZWxlbWVudHMKLSAgICBjICs9IENvdW50ZXIoKSAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIHplcm8gYW5kIG5lZ2F0aXZlIGNvdW50cworICAgICtjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgemVybyBhbmQgbmVnYXRpdmUgY291bnRzCiAKIFNldmVyYWwgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBjb21iaW5pbmcgOmNsYXNzOmBDb3VudGVyYAogb2JqZWN0cyB0byBwcm9kdWNlIG11bHRpc2V0cyAoY291bnRlcnMgdGhhdCBoYXZlIGNvdW50cyBncmVhdGVyIHRoYW4gemVybykuCkBAIC0xNjksMzIgKzMyNyw0NCBAQAogICAgID4+PiBjIHwgZCAgICAgICAgICAgICAgICAgICAgICAgIyB1bmlvbjogIG1heChjW3hdLCBkW3hdKQogICAgIENvdW50ZXIoeydhJzogMywgJ2InOiAyfSkKIAorVW5hcnkgYWRkaXRpb24gYW5kIHN1YnN0cmFjdGlvbiBhcmUgc2hvcnRjdXRzIGZvciBhZGRpbmcgYW4gZW1wdHkgY291bnRlcgorb3Igc3VidHJhY3RpbmcgZnJvbSBhbiBlbXB0eSBjb3VudGVyLgorCisgICAgPj4+IGMgPSBDb3VudGVyKGE9MiwgYj0tNCkKKyAgICA+Pj4gK2MKKyAgICBDb3VudGVyKHsnYSc6IDJ9KQorICAgID4+PiAtYworICAgIENvdW50ZXIoeydiJzogNH0pCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgIEFkZGVkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMsIHVuYXJ5IG1pbnVzLCBhbmQgaW4tcGxhY2UgbXVsdGlzZXQgb3BlcmF0aW9ucy4KKwogLi4gbm90ZTo6CiAKLSAgIENvdW50ZXJzIHdlcmUgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBwb3NpdGl2ZSBpbnRlZ2VycyB0byByZXByZXNlbnQKLSAgIHJ1bm5pbmcgY291bnRzOyBob3dldmVyLCBjYXJlIHdhcyB0YWtlbiB0byBub3QgdW5uZWNlc3NhcmlseSBwcmVjbHVkZSB1c2UKLSAgIGNhc2VzIG5lZWRpbmcgb3RoZXIgdHlwZXMgb3IgbmVnYXRpdmUgdmFsdWVzLiAgVG8gaGVscCB3aXRoIHRob3NlIHVzZSBjYXNlcywKLSAgIHRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIG1pbmltdW0gcmFuZ2UgYW5kIHR5cGUgcmVzdHJpY3Rpb25zLgorICAgIENvdW50ZXJzIHdlcmUgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBwb3NpdGl2ZSBpbnRlZ2VycyB0byByZXByZXNlbnQKKyAgICBydW5uaW5nIGNvdW50czsgaG93ZXZlciwgY2FyZSB3YXMgdGFrZW4gdG8gbm90IHVubmVjZXNzYXJpbHkgcHJlY2x1ZGUgdXNlCisgICAgY2FzZXMgbmVlZGluZyBvdGhlciB0eXBlcyBvciBuZWdhdGl2ZSB2YWx1ZXMuICBUbyBoZWxwIHdpdGggdGhvc2UgdXNlIGNhc2VzLAorICAgIHRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIG1pbmltdW0gcmFuZ2UgYW5kIHR5cGUgcmVzdHJpY3Rpb25zLgogCi0gICAqIFRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzIGl0c2VsZiBpcyBhIGRpY3Rpb25hcnkgc3ViY2xhc3Mgd2l0aCBubwotICAgICByZXN0cmljdGlvbnMgb24gaXRzIGtleXMgYW5kIHZhbHVlcy4gIFRoZSB2YWx1ZXMgYXJlIGludGVuZGVkIHRvIGJlIG51bWJlcnMKLSAgICAgcmVwcmVzZW50aW5nIGNvdW50cywgYnV0IHlvdSAqY291bGQqIHN0b3JlIGFueXRoaW5nIGluIHRoZSB2YWx1ZSBmaWVsZC4KKyAgICAqIFRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzIGl0c2VsZiBpcyBhIGRpY3Rpb25hcnkgc3ViY2xhc3Mgd2l0aCBubworICAgICAgcmVzdHJpY3Rpb25zIG9uIGl0cyBrZXlzIGFuZCB2YWx1ZXMuICBUaGUgdmFsdWVzIGFyZSBpbnRlbmRlZCB0byBiZSBudW1iZXJzCisgICAgICByZXByZXNlbnRpbmcgY291bnRzLCBidXQgeW91ICpjb3VsZCogc3RvcmUgYW55dGhpbmcgaW4gdGhlIHZhbHVlIGZpZWxkLgogCi0gICAqIFRoZSA6bWV0aDpgbW9zdF9jb21tb25gIG1ldGhvZCByZXF1aXJlcyBvbmx5IHRoYXQgdGhlIHZhbHVlcyBiZSBvcmRlcmFibGUuCisgICAgKiBUaGUgOm1ldGg6YG1vc3RfY29tbW9uYCBtZXRob2QgcmVxdWlyZXMgb25seSB0aGF0IHRoZSB2YWx1ZXMgYmUgb3JkZXJhYmxlLgogCi0gICAqIEZvciBpbi1wbGFjZSBvcGVyYXRpb25zIHN1Y2ggYXMgYGBjW2tleV0gKz0gMWBgLCB0aGUgdmFsdWUgdHlwZSBuZWVkIG9ubHkKLSAgICAgc3VwcG9ydCBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uICBTbyBmcmFjdGlvbnMsIGZsb2F0cywgYW5kIGRlY2ltYWxzIHdvdWxkCi0gICAgIHdvcmsgYW5kIG5lZ2F0aXZlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiAgVGhlIHNhbWUgaXMgYWxzbyB0cnVlIGZvcgotICAgICA6bWV0aDpgdXBkYXRlYCBhbmQgOm1ldGg6YHN1YnRyYWN0YCB3aGljaCBhbGxvdyBuZWdhdGl2ZSBhbmQgemVybyB2YWx1ZXMKLSAgICAgZm9yIGJvdGggaW5wdXRzIGFuZCBvdXRwdXRzLgorICAgICogRm9yIGluLXBsYWNlIG9wZXJhdGlvbnMgc3VjaCBhcyBgYGNba2V5XSArPSAxYGAsIHRoZSB2YWx1ZSB0eXBlIG5lZWQgb25seQorICAgICAgc3VwcG9ydCBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uICBTbyBmcmFjdGlvbnMsIGZsb2F0cywgYW5kIGRlY2ltYWxzIHdvdWxkCisgICAgICB3b3JrIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZC4gIFRoZSBzYW1lIGlzIGFsc28gdHJ1ZSBmb3IKKyAgICAgIDptZXRoOmB1cGRhdGVgIGFuZCA6bWV0aDpgc3VidHJhY3RgIHdoaWNoIGFsbG93IG5lZ2F0aXZlIGFuZCB6ZXJvIHZhbHVlcworICAgICAgZm9yIGJvdGggaW5wdXRzIGFuZCBvdXRwdXRzLgogCi0gICAqIFRoZSBtdWx0aXNldCBtZXRob2RzIGFyZSBkZXNpZ25lZCBvbmx5IGZvciB1c2UgY2FzZXMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMuCi0gICAgIFRoZSBpbnB1dHMgbWF5IGJlIG5lZ2F0aXZlIG9yIHplcm8sIGJ1dCBvbmx5IG91dHB1dHMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMKLSAgICAgYXJlIGNyZWF0ZWQuICBUaGVyZSBhcmUgbm8gdHlwZSByZXN0cmljdGlvbnMsIGJ1dCB0aGUgdmFsdWUgdHlwZSBuZWVkcyB0bwotICAgICBzdXBwb3J0IGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgYW5kIGNvbXBhcmlzb24uCisgICAgKiBUaGUgbXVsdGlzZXQgbWV0aG9kcyBhcmUgZGVzaWduZWQgb25seSBmb3IgdXNlIGNhc2VzIHdpdGggcG9zaXRpdmUgdmFsdWVzLgorICAgICAgVGhlIGlucHV0cyBtYXkgYmUgbmVnYXRpdmUgb3IgemVybywgYnV0IG9ubHkgb3V0cHV0cyB3aXRoIHBvc2l0aXZlIHZhbHVlcworICAgICAgYXJlIGNyZWF0ZWQuICBUaGVyZSBhcmUgbm8gdHlwZSByZXN0cmljdGlvbnMsIGJ1dCB0aGUgdmFsdWUgdHlwZSBuZWVkcyB0bworICAgICAgc3VwcG9ydCBhZGRpdGlvbiwgc3VidHJhY3Rpb24sIGFuZCBjb21wYXJpc29uLgogCi0gICAqIFRoZSA6bWV0aDpgZWxlbWVudHNgIG1ldGhvZCByZXF1aXJlcyBpbnRlZ2VyIGNvdW50cy4gIEl0IGlnbm9yZXMgemVybyBhbmQKLSAgICAgbmVnYXRpdmUgY291bnRzLgorICAgICogVGhlIDptZXRoOmBlbGVtZW50c2AgbWV0aG9kIHJlcXVpcmVzIGludGVnZXIgY291bnRzLiAgSXQgaWdub3JlcyB6ZXJvIGFuZAorICAgICAgbmVnYXRpdmUgY291bnRzLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjE3LDcgKzM4Nyw3IEBACiAgICAgKiBUbyBlbnVtZXJhdGUgYWxsIGRpc3RpbmN0IG11bHRpc2V0cyBvZiBhIGdpdmVuIHNpemUgb3ZlciBhIGdpdmVuIHNldCBvZgogICAgICAgZWxlbWVudHMsIHNlZSA6ZnVuYzpgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50YC4KIAotICAgICAgICAgIG1hcChDb3VudGVyLCBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgnQUJDJywgMikpIC0tPiBBQSBBQiBBQyBCQiBCQyBDQworICAgICAgICAgICAgbWFwKENvdW50ZXIsIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCdBQkMnLCAyKSkgLS0+IEFBIEFCIEFDIEJCIEJDIENDCiAKIAogOmNsYXNzOmBkZXF1ZWAgb2JqZWN0cwpAQCAtMjI1LDEwNSArMzk1LDEwNSBAQAogCiAuLiBjbGFzczo6IGRlcXVlKFtpdGVyYWJsZSwgW21heGxlbl1dKQogCi0gICBSZXR1cm5zIGEgbmV3IGRlcXVlIG9iamVjdCBpbml0aWFsaXplZCBsZWZ0LXRvLXJpZ2h0ICh1c2luZyA6bWV0aDpgYXBwZW5kYCkgd2l0aAotICAgZGF0YSBmcm9tICppdGVyYWJsZSouICBJZiAqaXRlcmFibGUqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBuZXcgZGVxdWUgaXMgZW1wdHkuCisgICAgUmV0dXJucyBhIG5ldyBkZXF1ZSBvYmplY3QgaW5pdGlhbGl6ZWQgbGVmdC10by1yaWdodCAodXNpbmcgOm1ldGg6YGFwcGVuZGApIHdpdGgKKyAgICBkYXRhIGZyb20gKml0ZXJhYmxlKi4gIElmICppdGVyYWJsZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBkZXF1ZSBpcyBlbXB0eS4KIAotICAgRGVxdWVzIGFyZSBhIGdlbmVyYWxpemF0aW9uIG9mIHN0YWNrcyBhbmQgcXVldWVzICh0aGUgbmFtZSBpcyBwcm9ub3VuY2VkICJkZWNrIgotICAgYW5kIGlzIHNob3J0IGZvciAiZG91YmxlLWVuZGVkIHF1ZXVlIikuICBEZXF1ZXMgc3VwcG9ydCB0aHJlYWQtc2FmZSwgbWVtb3J5Ci0gICBlZmZpY2llbnQgYXBwZW5kcyBhbmQgcG9wcyBmcm9tIGVpdGhlciBzaWRlIG9mIHRoZSBkZXF1ZSB3aXRoIGFwcHJveGltYXRlbHkgdGhlCi0gICBzYW1lIE8oMSkgcGVyZm9ybWFuY2UgaW4gZWl0aGVyIGRpcmVjdGlvbi4KKyAgICBEZXF1ZXMgYXJlIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RhY2tzIGFuZCBxdWV1ZXMgKHRoZSBuYW1lIGlzIHByb25vdW5jZWQgImRlY2siCisgICAgYW5kIGlzIHNob3J0IGZvciAiZG91YmxlLWVuZGVkIHF1ZXVlIikuICBEZXF1ZXMgc3VwcG9ydCB0aHJlYWQtc2FmZSwgbWVtb3J5CisgICAgZWZmaWNpZW50IGFwcGVuZHMgYW5kIHBvcHMgZnJvbSBlaXRoZXIgc2lkZSBvZiB0aGUgZGVxdWUgd2l0aCBhcHByb3hpbWF0ZWx5IHRoZQorICAgIHNhbWUgTygxKSBwZXJmb3JtYW5jZSBpbiBlaXRoZXIgZGlyZWN0aW9uLgogCi0gICBUaG91Z2ggOmNsYXNzOmBsaXN0YCBvYmplY3RzIHN1cHBvcnQgc2ltaWxhciBvcGVyYXRpb25zLCB0aGV5IGFyZSBvcHRpbWl6ZWQgZm9yCi0gICBmYXN0IGZpeGVkLWxlbmd0aCBvcGVyYXRpb25zIGFuZCBpbmN1ciBPKG4pIG1lbW9yeSBtb3ZlbWVudCBjb3N0cyBmb3IKLSAgIGBgcG9wKDApYGAgYW5kIGBgaW5zZXJ0KDAsIHYpYGAgb3BlcmF0aW9ucyB3aGljaCBjaGFuZ2UgYm90aCB0aGUgc2l6ZSBhbmQKLSAgIHBvc2l0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgcmVwcmVzZW50YXRpb24uCisgICAgVGhvdWdoIDpjbGFzczpgbGlzdGAgb2JqZWN0cyBzdXBwb3J0IHNpbWlsYXIgb3BlcmF0aW9ucywgdGhleSBhcmUgb3B0aW1pemVkIGZvcgorICAgIGZhc3QgZml4ZWQtbGVuZ3RoIG9wZXJhdGlvbnMgYW5kIGluY3VyIE8obikgbWVtb3J5IG1vdmVtZW50IGNvc3RzIGZvcgorICAgIGBgcG9wKDApYGAgYW5kIGBgaW5zZXJ0KDAsIHYpYGAgb3BlcmF0aW9ucyB3aGljaCBjaGFuZ2UgYm90aCB0aGUgc2l6ZSBhbmQKKyAgICBwb3NpdGlvbiBvZiB0aGUgdW5kZXJseWluZyBkYXRhIHJlcHJlc2VudGF0aW9uLgogCiAKLSAgIElmICptYXhsZW4qIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgKk5vbmUqLCBkZXF1ZXMgbWF5IGdyb3cgdG8gYW4KLSAgIGFyYml0cmFyeSBsZW5ndGguICBPdGhlcndpc2UsIHRoZSBkZXF1ZSBpcyBib3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgbWF4aW11bQotICAgbGVuZ3RoLiAgT25jZSBhIGJvdW5kZWQgbGVuZ3RoIGRlcXVlIGlzIGZ1bGwsIHdoZW4gbmV3IGl0ZW1zIGFyZSBhZGRlZCwgYQotICAgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgaXRlbXMgYXJlIGRpc2NhcmRlZCBmcm9tIHRoZSBvcHBvc2l0ZSBlbmQuICBCb3VuZGVkCi0gICBsZW5ndGggZGVxdWVzIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZSBgYHRhaWxgYCBmaWx0ZXIgaW4KLSAgIFVuaXguIFRoZXkgYXJlIGFsc28gdXNlZnVsIGZvciB0cmFja2luZyB0cmFuc2FjdGlvbnMgYW5kIG90aGVyIHBvb2xzIG9mIGRhdGEKLSAgIHdoZXJlIG9ubHkgdGhlIG1vc3QgcmVjZW50IGFjdGl2aXR5IGlzIG9mIGludGVyZXN0LgorICAgIElmICptYXhsZW4qIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgKk5vbmUqLCBkZXF1ZXMgbWF5IGdyb3cgdG8gYW4KKyAgICBhcmJpdHJhcnkgbGVuZ3RoLiAgT3RoZXJ3aXNlLCB0aGUgZGVxdWUgaXMgYm91bmRlZCB0byB0aGUgc3BlY2lmaWVkIG1heGltdW0KKyAgICBsZW5ndGguICBPbmNlIGEgYm91bmRlZCBsZW5ndGggZGVxdWUgaXMgZnVsbCwgd2hlbiBuZXcgaXRlbXMgYXJlIGFkZGVkLCBhCisgICAgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgaXRlbXMgYXJlIGRpc2NhcmRlZCBmcm9tIHRoZSBvcHBvc2l0ZSBlbmQuICBCb3VuZGVkCisgICAgbGVuZ3RoIGRlcXVlcyBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUgYGB0YWlsYGAgZmlsdGVyIGluCisgICAgVW5peC4gVGhleSBhcmUgYWxzbyB1c2VmdWwgZm9yIHRyYWNraW5nIHRyYW5zYWN0aW9ucyBhbmQgb3RoZXIgcG9vbHMgb2YgZGF0YQorICAgIHdoZXJlIG9ubHkgdGhlIG1vc3QgcmVjZW50IGFjdGl2aXR5IGlzIG9mIGludGVyZXN0LgogCiAKLSAgIERlcXVlIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisgICAgRGVxdWUgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAotICAgLi4gbWV0aG9kOjogYXBwZW5kKHgpCisgICAgLi4gbWV0aG9kOjogYXBwZW5kKHgpCiAKLSAgICAgIEFkZCAqeCogdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLgorICAgICAgICBBZGQgKngqIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4KIAogCi0gICAuLiBtZXRob2Q6OiBhcHBlbmRsZWZ0KHgpCisgICAgLi4gbWV0aG9kOjogYXBwZW5kbGVmdCh4KQogCi0gICAgICBBZGQgKngqIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLgorICAgICAgICBBZGQgKngqIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKKyAgICAuLiBtZXRob2Q6OiBjbGVhcigpCiAKLSAgICAgIFJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUgbGVhdmluZyBpdCB3aXRoIGxlbmd0aCAwLgorICAgICAgICBSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlIGxlYXZpbmcgaXQgd2l0aCBsZW5ndGggMC4KIAogCi0gICAuLiBtZXRob2Q6OiBjb3VudCh4KQorICAgIC4uIG1ldGhvZDo6IGNvdW50KHgpCiAKLSAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgZGVxdWUgZWxlbWVudHMgZXF1YWwgdG8gKngqLgorICAgICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIGRlcXVlIGVsZW1lbnRzIGVxdWFsIHRvICp4Ki4KIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLSAgIC4uIG1ldGhvZDo6IGV4dGVuZChpdGVyYWJsZSkKKyAgICAuLiBtZXRob2Q6OiBleHRlbmQoaXRlcmFibGUpCiAKLSAgICAgIEV4dGVuZCB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUgYnkgYXBwZW5kaW5nIGVsZW1lbnRzIGZyb20gdGhlIGl0ZXJhYmxlCi0gICAgICBhcmd1bWVudC4KKyAgICAgICAgRXh0ZW5kIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUKKyAgICAgICAgYXJndW1lbnQuCiAKIAotICAgLi4gbWV0aG9kOjogZXh0ZW5kbGVmdChpdGVyYWJsZSkKKyAgICAuLiBtZXRob2Q6OiBleHRlbmRsZWZ0KGl0ZXJhYmxlKQogCi0gICAgICBFeHRlbmQgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUgYnkgYXBwZW5kaW5nIGVsZW1lbnRzIGZyb20gKml0ZXJhYmxlKi4KLSAgICAgIE5vdGUsIHRoZSBzZXJpZXMgb2YgbGVmdCBhcHBlbmRzIHJlc3VsdHMgaW4gcmV2ZXJzaW5nIHRoZSBvcmRlciBvZgotICAgICAgZWxlbWVudHMgaW4gdGhlIGl0ZXJhYmxlIGFyZ3VtZW50LgorICAgICAgICBFeHRlbmQgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUgYnkgYXBwZW5kaW5nIGVsZW1lbnRzIGZyb20gKml0ZXJhYmxlKi4KKyAgICAgICAgTm90ZSwgdGhlIHNlcmllcyBvZiBsZWZ0IGFwcGVuZHMgcmVzdWx0cyBpbiByZXZlcnNpbmcgdGhlIG9yZGVyIG9mCisgICAgICAgIGVsZW1lbnRzIGluIHRoZSBpdGVyYWJsZSBhcmd1bWVudC4KIAogCi0gICAuLiBtZXRob2Q6OiBwb3AoKQorICAgIC4uIG1ldGhvZDo6IHBvcCgpCiAKLSAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCi0gICAgICBlbGVtZW50cyBhcmUgcHJlc2VudCwgcmFpc2VzIGFuIDpleGM6YEluZGV4RXJyb3JgLgorICAgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLiBJZiBubworICAgICAgICBlbGVtZW50cyBhcmUgcHJlc2VudCwgcmFpc2VzIGFuIDpleGM6YEluZGV4RXJyb3JgLgogCiAKLSAgIC4uIG1ldGhvZDo6IHBvcGxlZnQoKQorICAgIC4uIG1ldGhvZDo6IHBvcGxlZnQoKQogCi0gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCi0gICAgICBlbGVtZW50cyBhcmUgcHJlc2VudCwgcmFpc2VzIGFuIDpleGM6YEluZGV4RXJyb3JgLgorICAgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCisgICAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCiAKIAotICAgLi4gbWV0aG9kOjogcmVtb3ZlKHZhbHVlKQorICAgIC4uIG1ldGhvZDo6IHJlbW92ZSh2YWx1ZSkKIAotICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQotICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICAgIFJlbW92ZWQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnZhbHVlKi4gIElmIG5vdCBmb3VuZCwgcmFpc2VzIGEKKyAgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIAotICAgLi4gbWV0aG9kOjogcmV2ZXJzZSgpCisgICAgLi4gbWV0aG9kOjogcmV2ZXJzZSgpCiAKLSAgICAgIFJldmVyc2UgdGhlIGVsZW1lbnRzIG9mIHRoZSBkZXF1ZSBpbi1wbGFjZSBhbmQgdGhlbiByZXR1cm4gYGBOb25lYGAuCisgICAgICAgIFJldmVyc2UgdGhlIGVsZW1lbnRzIG9mIHRoZSBkZXF1ZSBpbi1wbGFjZSBhbmQgdGhlbiByZXR1cm4gYGBOb25lYGAuCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiByb3RhdGUobikKKyAgICAuLiBtZXRob2Q6OiByb3RhdGUobikKIAotICAgICAgUm90YXRlIHRoZSBkZXF1ZSAqbiogc3RlcHMgdG8gdGhlIHJpZ2h0LiAgSWYgKm4qIGlzIG5lZ2F0aXZlLCByb3RhdGUgdG8KLSAgICAgIHRoZSBsZWZ0LiAgUm90YXRpbmcgb25lIHN0ZXAgdG8gdGhlIHJpZ2h0IGlzIGVxdWl2YWxlbnQgdG86Ci0gICAgICBgYGQuYXBwZW5kbGVmdChkLnBvcCgpKWBgLgorICAgICAgICBSb3RhdGUgdGhlIGRlcXVlICpuKiBzdGVwcyB0byB0aGUgcmlnaHQuICBJZiAqbiogaXMgbmVnYXRpdmUsIHJvdGF0ZSB0bworICAgICAgICB0aGUgbGVmdC4gIFJvdGF0aW5nIG9uZSBzdGVwIHRvIHRoZSByaWdodCBpcyBlcXVpdmFsZW50IHRvOgorICAgICAgICBgYGQuYXBwZW5kbGVmdChkLnBvcCgpKWBgLgogCiAKLSAgIERlcXVlIG9iamVjdHMgYWxzbyBwcm92aWRlIG9uZSByZWFkLW9ubHkgYXR0cmlidXRlOgorICAgIERlcXVlIG9iamVjdHMgYWxzbyBwcm92aWRlIG9uZSByZWFkLW9ubHkgYXR0cmlidXRlOgogCi0gICAuLiBhdHRyaWJ1dGU6OiBtYXhsZW4KKyAgICAuLiBhdHRyaWJ1dGU6OiBtYXhsZW4KIAotICAgICAgTWF4aW11bSBzaXplIG9mIGEgZGVxdWUgb3IgKk5vbmUqIGlmIHVuYm91bmRlZC4KKyAgICAgICAgTWF4aW11bSBzaXplIG9mIGEgZGVxdWUgb3IgKk5vbmUqIGlmIHVuYm91bmRlZC4KIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSwgZGVxdWVzIHN1cHBvcnQgaXRlcmF0aW9uLCBwaWNrbGluZywgYGBsZW4oZClgYCwKQEAgLTMzNiw1NiArNTA2LDU2IEBACiAKIC4uIGRvY3Rlc3Q6OgogCi0gICA+Pj4gZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLSAgID4+PiBkID0gZGVxdWUoJ2doaScpICAgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgd2l0aCB0aHJlZSBpdGVtcwotICAgPj4+IGZvciBlbGVtIGluIGQ6ICAgICAgICAgICAgICAgICAgICMgaXRlcmF0ZSBvdmVyIHRoZSBkZXF1ZSdzIGVsZW1lbnRzCi0gICAuLi4gICAgIHByaW50KGVsZW0udXBwZXIoKSkKLSAgIEcKLSAgIEgKLSAgIEkKKyAgICA+Pj4gZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKKyAgICA+Pj4gZCA9IGRlcXVlKCdnaGknKSAgICAgICAgICAgICAgICAgIyBtYWtlIGEgbmV3IGRlcXVlIHdpdGggdGhyZWUgaXRlbXMKKyAgICA+Pj4gZm9yIGVsZW0gaW4gZDogICAgICAgICAgICAgICAgICAgIyBpdGVyYXRlIG92ZXIgdGhlIGRlcXVlJ3MgZWxlbWVudHMKKyAgICAuLi4gICAgIHByaW50KGVsZW0udXBwZXIoKSkKKyAgICBHCisgICAgSAorICAgIEkKIAotICAgPj4+IGQuYXBwZW5kKCdqJykgICAgICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSByaWdodCBzaWRlCi0gICA+Pj4gZC5hcHBlbmRsZWZ0KCdmJykgICAgICAgICAgICAgICAgIyBhZGQgYSBuZXcgZW50cnkgdG8gdGhlIGxlZnQgc2lkZQotICAgPj4+IGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlcXVlCi0gICBkZXF1ZShbJ2YnLCAnZycsICdoJywgJ2knLCAnaiddKQorICAgID4+PiBkLmFwcGVuZCgnaicpICAgICAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgcmlnaHQgc2lkZQorICAgID4+PiBkLmFwcGVuZGxlZnQoJ2YnKSAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbGVmdCBzaWRlCisgICAgPj4+IGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlcXVlCisgICAgZGVxdWUoWydmJywgJ2cnLCAnaCcsICdpJywgJ2onXSkKIAotICAgPj4+IGQucG9wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIHJpZ2h0bW9zdCBpdGVtCi0gICAnaicKLSAgID4+PiBkLnBvcGxlZnQoKSAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBhbmQgcmVtb3ZlIHRoZSBsZWZ0bW9zdCBpdGVtCi0gICAnZicKLSAgID4+PiBsaXN0KGQpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBkZXF1ZQotICAgWydnJywgJ2gnLCAnaSddCi0gICA+Pj4gZFswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IGxlZnRtb3N0IGl0ZW0KLSAgICdnJwotICAgPj4+IGRbLTFdICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGVlayBhdCByaWdodG1vc3QgaXRlbQotICAgJ2knCisgICAgPj4+IGQucG9wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIHJpZ2h0bW9zdCBpdGVtCisgICAgJ2onCisgICAgPj4+IGQucG9wbGVmdCgpICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIGxlZnRtb3N0IGl0ZW0KKyAgICAnZicKKyAgICA+Pj4gbGlzdChkKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsaXN0IHRoZSBjb250ZW50cyBvZiB0aGUgZGVxdWUKKyAgICBbJ2cnLCAnaCcsICdpJ10KKyAgICA+Pj4gZFswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IGxlZnRtb3N0IGl0ZW0KKyAgICAnZycKKyAgICA+Pj4gZFstMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IHJpZ2h0bW9zdCBpdGVtCisgICAgJ2knCiAKLSAgID4+PiBsaXN0KHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgZGVxdWUgaW4gcmV2ZXJzZQotICAgWydpJywgJ2gnLCAnZyddCi0gICA+Pj4gJ2gnIGluIGQgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWFyY2ggdGhlIGRlcXVlCi0gICBUcnVlCi0gICA+Pj4gZC5leHRlbmQoJ2prbCcpICAgICAgICAgICAgICAgICAgIyBhZGQgbXVsdGlwbGUgZWxlbWVudHMgYXQgb25jZQotICAgPj4+IGQKLSAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKLSAgID4+PiBkLnJvdGF0ZSgxKSAgICAgICAgICAgICAgICAgICAgICAjIHJpZ2h0IHJvdGF0aW9uCi0gICA+Pj4gZAotICAgZGVxdWUoWydsJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnayddKQotICAgPj4+IGQucm90YXRlKC0xKSAgICAgICAgICAgICAgICAgICAgICMgbGVmdCByb3RhdGlvbgotICAgPj4+IGQKLSAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKKyAgICA+Pj4gbGlzdChyZXZlcnNlZChkKSkgICAgICAgICAgICAgICAgIyBsaXN0IHRoZSBjb250ZW50cyBvZiBhIGRlcXVlIGluIHJldmVyc2UKKyAgICBbJ2knLCAnaCcsICdnJ10KKyAgICA+Pj4gJ2gnIGluIGQgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWFyY2ggdGhlIGRlcXVlCisgICAgVHJ1ZQorICAgID4+PiBkLmV4dGVuZCgnamtsJykgICAgICAgICAgICAgICAgICAjIGFkZCBtdWx0aXBsZSBlbGVtZW50cyBhdCBvbmNlCisgICAgPj4+IGQKKyAgICBkZXF1ZShbJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJ10pCisgICAgPj4+IGQucm90YXRlKDEpICAgICAgICAgICAgICAgICAgICAgICMgcmlnaHQgcm90YXRpb24KKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnbCcsICdnJywgJ2gnLCAnaScsICdqJywgJ2snXSkKKyAgICA+Pj4gZC5yb3RhdGUoLTEpICAgICAgICAgICAgICAgICAgICAgIyBsZWZ0IHJvdGF0aW9uCisgICAgPj4+IGQKKyAgICBkZXF1ZShbJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJ10pCiAKLSAgID4+PiBkZXF1ZShyZXZlcnNlZChkKSkgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgaW4gcmV2ZXJzZSBvcmRlcgotICAgZGVxdWUoWydsJywgJ2snLCAnaicsICdpJywgJ2gnLCAnZyddKQotICAgPj4+IGQuY2xlYXIoKSAgICAgICAgICAgICAgICAgICAgICAgICMgZW1wdHkgdGhlIGRlcXVlCi0gICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjYW5ub3QgcG9wIGZyb20gYW4gZW1wdHkgZGVxdWUKLSAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHB5c2hlbGwjNj4iLCBsaW5lIDEsIGluIC10b3BsZXZlbC0KLSAgICAgICBkLnBvcCgpCi0gICBJbmRleEVycm9yOiBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQorICAgID4+PiBkZXF1ZShyZXZlcnNlZChkKSkgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgaW4gcmV2ZXJzZSBvcmRlcgorICAgIGRlcXVlKFsnbCcsICdrJywgJ2onLCAnaScsICdoJywgJ2cnXSkKKyAgICA+Pj4gZC5jbGVhcigpICAgICAgICAgICAgICAgICAgICAgICAgIyBlbXB0eSB0aGUgZGVxdWUKKyAgICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjYW5ub3QgcG9wIGZyb20gYW4gZW1wdHkgZGVxdWUKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIEZpbGUgIjxweXNoZWxsIzY+IiwgbGluZSAxLCBpbiAtdG9wbGV2ZWwtCisgICAgICAgICAgICBkLnBvcCgpCisgICAgSW5kZXhFcnJvcjogcG9wIGZyb20gYW4gZW1wdHkgZGVxdWUKIAotICAgPj4+IGQuZXh0ZW5kbGVmdCgnYWJjJykgICAgICAgICAgICAgICMgZXh0ZW5kbGVmdCgpIHJldmVyc2VzIHRoZSBpbnB1dCBvcmRlcgotICAgPj4+IGQKLSAgIGRlcXVlKFsnYycsICdiJywgJ2EnXSkKKyAgICA+Pj4gZC5leHRlbmRsZWZ0KCdhYmMnKSAgICAgICAgICAgICAgIyBleHRlbmRsZWZ0KCkgcmV2ZXJzZXMgdGhlIGlucHV0IG9yZGVyCisgICAgPj4+IGQKKyAgICBkZXF1ZShbJ2MnLCAnYicsICdhJ10pCiAKIAogOmNsYXNzOmBkZXF1ZWAgUmVjaXBlcwpAQCAtMzk2LDkgKzU2NiwxMCBAQAogQm91bmRlZCBsZW5ndGggZGVxdWVzIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZSBgYHRhaWxgYCBmaWx0ZXIKIGluIFVuaXg6OgogCi0gICBkZWYgdGFpbChmaWxlbmFtZSwgbj0xMCk6Ci0gICAgICAgJ1JldHVybiB0aGUgbGFzdCBuIGxpbmVzIG9mIGEgZmlsZScKLSAgICAgICByZXR1cm4gZGVxdWUob3BlbihmaWxlbmFtZSksIG4pCisgICAgZGVmIHRhaWwoZmlsZW5hbWUsIG49MTApOgorICAgICAgICAnUmV0dXJuIHRoZSBsYXN0IG4gbGluZXMgb2YgYSBmaWxlJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gZGVxdWUoZiwgbikKIAogQW5vdGhlciBhcHByb2FjaCB0byB1c2luZyBkZXF1ZXMgaXMgdG8gbWFpbnRhaW4gYSBzZXF1ZW5jZSBvZiByZWNlbnRseQogYWRkZWQgZWxlbWVudHMgYnkgYXBwZW5kaW5nIHRvIHRoZSByaWdodCBhbmQgcG9wcGluZyB0byB0aGUgbGVmdDo6CkBAIC00MTksMTAgKzU5MCwxMCBAQAogZGVsZXRpb24uICBGb3IgZXhhbXBsZSwgYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBgYGRlbCBkW25dYGAgcmVsaWVzIG9uCiB0aGUgOm1ldGg6YHJvdGF0ZWAgbWV0aG9kIHRvIHBvc2l0aW9uIGVsZW1lbnRzIHRvIGJlIHBvcHBlZDo6CiAKLSAgIGRlZiBkZWxldGVfbnRoKGQsIG4pOgotICAgICAgIGQucm90YXRlKC1uKQotICAgICAgIGQucG9wbGVmdCgpCi0gICAgICAgZC5yb3RhdGUobikKKyAgICBkZWYgZGVsZXRlX250aChkLCBuKToKKyAgICAgICAgZC5yb3RhdGUoLW4pCisgICAgICAgIGQucG9wbGVmdCgpCisgICAgICAgIGQucm90YXRlKG4pCiAKIFRvIGltcGxlbWVudCA6Y2xhc3M6YGRlcXVlYCBzbGljaW5nLCB1c2UgYSBzaW1pbGFyIGFwcHJvYWNoIGFwcGx5aW5nCiA6bWV0aDpgcm90YXRlYCB0byBicmluZyBhIHRhcmdldCBlbGVtZW50IHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLiBSZW1vdmUKQEAgLTQzOCw1MCArNjA5LDUwIEBACiAKIC4uIGNsYXNzOjogZGVmYXVsdGRpY3QoW2RlZmF1bHRfZmFjdG9yeVssIC4uLl1dKQogCi0gICBSZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnktbGlrZSBvYmplY3QuICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBpcyBhIHN1YmNsYXNzIG9mIHRoZQotICAgYnVpbHQtaW4gOmNsYXNzOmBkaWN0YCBjbGFzcy4gIEl0IG92ZXJyaWRlcyBvbmUgbWV0aG9kIGFuZCBhZGRzIG9uZSB3cml0YWJsZQotICAgaW5zdGFuY2UgdmFyaWFibGUuICBUaGUgcmVtYWluaW5nIGZ1bmN0aW9uYWxpdHkgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZQotICAgOmNsYXNzOmBkaWN0YCBjbGFzcyBhbmQgaXMgbm90IGRvY3VtZW50ZWQgaGVyZS4KKyAgICBSZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnktbGlrZSBvYmplY3QuICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBpcyBhIHN1YmNsYXNzIG9mIHRoZQorICAgIGJ1aWx0LWluIDpjbGFzczpgZGljdGAgY2xhc3MuICBJdCBvdmVycmlkZXMgb25lIG1ldGhvZCBhbmQgYWRkcyBvbmUgd3JpdGFibGUKKyAgICBpbnN0YW5jZSB2YXJpYWJsZS4gIFRoZSByZW1haW5pbmcgZnVuY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlCisgICAgOmNsYXNzOmBkaWN0YCBjbGFzcyBhbmQgaXMgbm90IGRvY3VtZW50ZWQgaGVyZS4KIAotICAgVGhlIGZpcnN0IGFyZ3VtZW50IHByb3ZpZGVzIHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAKLSAgIGF0dHJpYnV0ZTsgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAuIEFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0cmVhdGVkIHRoZSBzYW1lCi0gICBhcyBpZiB0aGV5IHdlcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YGRpY3RgIGNvbnN0cnVjdG9yLCBpbmNsdWRpbmcga2V5d29yZAotICAgYXJndW1lbnRzLgorICAgIFRoZSBmaXJzdCBhcmd1bWVudCBwcm92aWRlcyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgCisgICAgYXR0cmlidXRlOyBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYC4gQWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRyZWF0ZWQgdGhlIHNhbWUKKyAgICBhcyBpZiB0aGV5IHdlcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YGRpY3RgIGNvbnN0cnVjdG9yLCBpbmNsdWRpbmcga2V5d29yZAorICAgIGFyZ3VtZW50cy4KIAogCi0gICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2QgaW4gYWRkaXRpb24gdG8gdGhlCi0gICBzdGFuZGFyZCA6Y2xhc3M6YGRpY3RgIG9wZXJhdGlvbnM6CisgICAgOmNsYXNzOmBkZWZhdWx0ZGljdGAgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kIGluIGFkZGl0aW9uIHRvIHRoZQorICAgIHN0YW5kYXJkIDpjbGFzczpgZGljdGAgb3BlcmF0aW9uczoKIAotICAgLi4gbWV0aG9kOjogX19taXNzaW5nX18oa2V5KQorICAgIC4uIG1ldGhvZDo6IF9fbWlzc2luZ19fKGtleSkKIAotICAgICAgSWYgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYCwgdGhpcyByYWlzZXMgYQotICAgICAgOmV4YzpgS2V5RXJyb3JgIGV4Y2VwdGlvbiB3aXRoIHRoZSAqa2V5KiBhcyBhcmd1bWVudC4KKyAgICAgICAgSWYgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYCwgdGhpcyByYWlzZXMgYQorICAgICAgICA6ZXhjOmBLZXlFcnJvcmAgZXhjZXB0aW9uIHdpdGggdGhlICprZXkqIGFzIGFyZ3VtZW50LgogCi0gICAgICBJZiA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBpcyBub3QgYGBOb25lYGAsIGl0IGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cwotICAgICAgdG8gcHJvdmlkZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBnaXZlbiAqa2V5KiwgdGhpcyB2YWx1ZSBpcyBpbnNlcnRlZCBpbgotICAgICAgdGhlIGRpY3Rpb25hcnkgZm9yIHRoZSAqa2V5KiwgYW5kIHJldHVybmVkLgorICAgICAgICBJZiA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBpcyBub3QgYGBOb25lYGAsIGl0IGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cworICAgICAgICB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGdpdmVuICprZXkqLCB0aGlzIHZhbHVlIGlzIGluc2VydGVkIGluCisgICAgICAgIHRoZSBkaWN0aW9uYXJ5IGZvciB0aGUgKmtleSosIGFuZCByZXR1cm5lZC4KIAotICAgICAgSWYgY2FsbGluZyA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCByYWlzZXMgYW4gZXhjZXB0aW9uIHRoaXMgZXhjZXB0aW9uIGlzCi0gICAgICBwcm9wYWdhdGVkIHVuY2hhbmdlZC4KKyAgICAgICAgSWYgY2FsbGluZyA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCByYWlzZXMgYW4gZXhjZXB0aW9uIHRoaXMgZXhjZXB0aW9uIGlzCisgICAgICAgIHByb3BhZ2F0ZWQgdW5jaGFuZ2VkLgogCi0gICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIDptZXRoOmBfX2dldGl0ZW1fX2AgbWV0aG9kIG9mIHRoZQotICAgICAgOmNsYXNzOmBkaWN0YCBjbGFzcyB3aGVuIHRoZSByZXF1ZXN0ZWQga2V5IGlzIG5vdCBmb3VuZDsgd2hhdGV2ZXIgaXQKLSAgICAgIHJldHVybnMgb3IgcmFpc2VzIGlzIHRoZW4gcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IDptZXRoOmBfX2dldGl0ZW1fX2AuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgOm1ldGg6YF9fZ2V0aXRlbV9fYCBtZXRob2Qgb2YgdGhlCisgICAgICAgIDpjbGFzczpgZGljdGAgY2xhc3Mgd2hlbiB0aGUgcmVxdWVzdGVkIGtleSBpcyBub3QgZm91bmQ7IHdoYXRldmVyIGl0CisgICAgICAgIHJldHVybnMgb3IgcmFpc2VzIGlzIHRoZW4gcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IDptZXRoOmBfX2dldGl0ZW1fX2AuCiAKLSAgICAgIE5vdGUgdGhhdCA6bWV0aDpgX19taXNzaW5nX19gIGlzICpub3QqIGNhbGxlZCBmb3IgYW55IG9wZXJhdGlvbnMgYmVzaWRlcwotICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYC4gVGhpcyBtZWFucyB0aGF0IDptZXRoOmBnZXRgIHdpbGwsIGxpa2Ugbm9ybWFsCi0gICAgICBkaWN0aW9uYXJpZXMsIHJldHVybiBgYE5vbmVgYCBhcyBhIGRlZmF1bHQgcmF0aGVyIHRoYW4gdXNpbmcKLSAgICAgIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgLgorICAgICAgICBOb3RlIHRoYXQgOm1ldGg6YF9fbWlzc2luZ19fYCBpcyAqbm90KiBjYWxsZWQgZm9yIGFueSBvcGVyYXRpb25zIGJlc2lkZXMKKyAgICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYC4gVGhpcyBtZWFucyB0aGF0IDptZXRoOmBnZXRgIHdpbGwsIGxpa2Ugbm9ybWFsCisgICAgICAgIGRpY3Rpb25hcmllcywgcmV0dXJuIGBgTm9uZWBgIGFzIGEgZGVmYXVsdCByYXRoZXIgdGhhbiB1c2luZworICAgICAgICA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YC4KIAogCi0gICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZToKKyAgICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZToKIAogCi0gICAuLiBhdHRyaWJ1dGU6OiBkZWZhdWx0X2ZhY3RvcnkKKyAgICAuLiBhdHRyaWJ1dGU6OiBkZWZhdWx0X2ZhY3RvcnkKIAotICAgICAgVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBieSB0aGUgOm1ldGg6YF9fbWlzc2luZ19fYCBtZXRob2Q7IGl0IGlzCi0gICAgICBpbml0aWFsaXplZCBmcm9tIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIGlmIHByZXNlbnQsIG9yIHRvCi0gICAgICBgYE5vbmVgYCwgaWYgYWJzZW50LgorICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IHRoZSA6bWV0aDpgX19taXNzaW5nX19gIG1ldGhvZDsgaXQgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLCBpZiBwcmVzZW50LCBvciB0bworICAgICAgICBgYE5vbmVgYCwgaWYgYWJzZW50LgogCiAKIDpjbGFzczpgZGVmYXVsdGRpY3RgIEV4YW1wbGVzCkBAIC00OTAsMTMgKzY2MSwxMyBAQAogVXNpbmcgOmNsYXNzOmBsaXN0YCBhcyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAsIGl0IGlzIGVhc3kgdG8gZ3JvdXAgYQogc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGludG8gYSBkaWN0aW9uYXJ5IG9mIGxpc3RzOgogCi0gICA+Pj4gcyA9IFsoJ3llbGxvdycsIDEpLCAoJ2JsdWUnLCAyKSwgKCd5ZWxsb3cnLCAzKSwgKCdibHVlJywgNCksICgncmVkJywgMSldCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGxpc3QpCi0gICA+Pj4gZm9yIGssIHYgaW4gczoKLSAgIC4uLiAgICAgZFtrXS5hcHBlbmQodikKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnYmx1ZScsIFsyLCA0XSksICgncmVkJywgWzFdKSwgKCd5ZWxsb3cnLCBbMSwgM10pXQorICAgID4+PiBzID0gWygneWVsbG93JywgMSksICgnYmx1ZScsIDIpLCAoJ3llbGxvdycsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKV0KKyAgICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgPj4+IGZvciBrLCB2IGluIHM6CisgICAgLi4uICAgICBkW2tdLmFwcGVuZCh2KQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCiAKIFdoZW4gZWFjaCBrZXkgaXMgZW5jb3VudGVyZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBpdCBpcyBub3QgYWxyZWFkeSBpbiB0aGUKIG1hcHBpbmc7IHNvIGFuIGVudHJ5IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB1c2luZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAKQEAgLTUwNiwyNCArNjc3LDI0IEBACiA6bWV0aDpgbGlzdC5hcHBlbmRgIG9wZXJhdGlvbiBhZGRzIGFub3RoZXIgdmFsdWUgdG8gdGhlIGxpc3QuIFRoaXMgdGVjaG5pcXVlIGlzCiBzaW1wbGVyIGFuZCBmYXN0ZXIgdGhhbiBhbiBlcXVpdmFsZW50IHRlY2huaXF1ZSB1c2luZyA6bWV0aDpgZGljdC5zZXRkZWZhdWx0YDoKIAotICAgPj4+IGQgPSB7fQotICAgPj4+IGZvciBrLCB2IGluIHM6Ci0gICAuLi4gICAgIGQuc2V0ZGVmYXVsdChrLCBbXSkuYXBwZW5kKHYpCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KKyAgICA+Pj4gZCA9IHt9CisgICAgPj4+IGZvciBrLCB2IGluIHM6CisgICAgLi4uICAgICBkLnNldGRlZmF1bHQoaywgW10pLmFwcGVuZCh2KQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCiAKIFNldHRpbmcgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHRvIDpjbGFzczpgaW50YCBtYWtlcyB0aGUKIDpjbGFzczpgZGVmYXVsdGRpY3RgIHVzZWZ1bCBmb3IgY291bnRpbmcgKGxpa2UgYSBiYWcgb3IgbXVsdGlzZXQgaW4gb3RoZXIKIGxhbmd1YWdlcyk6CiAKLSAgID4+PiBzID0gJ21pc3Npc3NpcHBpJwotICAgPj4+IGQgPSBkZWZhdWx0ZGljdChpbnQpCi0gICA+Pj4gZm9yIGsgaW4gczoKLSAgIC4uLiAgICAgZFtrXSArPSAxCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2knLCA0KSwgKCdwJywgMiksICgncycsIDQpLCAoJ20nLCAxKV0KKyAgICA+Pj4gcyA9ICdtaXNzaXNzaXBwaScKKyAgICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGludCkKKyAgICA+Pj4gZm9yIGsgaW4gczoKKyAgICAuLi4gICAgIGRba10gKz0gMQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdpJywgNCksICgncCcsIDIpLCAoJ3MnLCA0KSwgKCdtJywgMSldCiAKIFdoZW4gYSBsZXR0ZXIgaXMgZmlyc3QgZW5jb3VudGVyZWQsIGl0IGlzIG1pc3NpbmcgZnJvbSB0aGUgbWFwcGluZywgc28gdGhlCiA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBmdW5jdGlvbiBjYWxscyA6ZnVuYzpgaW50YCB0byBzdXBwbHkgYSBkZWZhdWx0IGNvdW50IG9mCkBAIC01MzQsMjMgKzcwNSwyMyBAQAogaXMgdG8gdXNlIGEgbGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGNhbiBzdXBwbHkgYW55IGNvbnN0YW50IHZhbHVlIChub3QganVzdAogemVybyk6CiAKLSAgID4+PiBkZWYgY29uc3RhbnRfZmFjdG9yeSh2YWx1ZSk6Ci0gICAuLi4gICAgIHJldHVybiBsYW1iZGE6IHZhbHVlCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGNvbnN0YW50X2ZhY3RvcnkoJzxtaXNzaW5nPicpKQotICAgPj4+IGQudXBkYXRlKG5hbWU9J0pvaG4nLCBhY3Rpb249J3JhbicpCi0gICA+Pj4gJyUobmFtZSlzICUoYWN0aW9uKXMgdG8gJShvYmplY3QpcycgJSBkCi0gICAnSm9obiByYW4gdG8gPG1pc3Npbmc+JworICAgID4+PiBkZWYgY29uc3RhbnRfZmFjdG9yeSh2YWx1ZSk6CisgICAgLi4uICAgICByZXR1cm4gbGFtYmRhOiB2YWx1ZQorICAgID4+PiBkID0gZGVmYXVsdGRpY3QoY29uc3RhbnRfZmFjdG9yeSgnPG1pc3Npbmc+JykpCisgICAgPj4+IGQudXBkYXRlKG5hbWU9J0pvaG4nLCBhY3Rpb249J3JhbicpCisgICAgPj4+ICclKG5hbWUpcyAlKGFjdGlvbilzIHRvICUob2JqZWN0KXMnICUgZAorICAgICdKb2huIHJhbiB0byA8bWlzc2luZz4nCiAKIFNldHRpbmcgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHRvIDpjbGFzczpgc2V0YCBtYWtlcyB0aGUKIDpjbGFzczpgZGVmYXVsdGRpY3RgIHVzZWZ1bCBmb3IgYnVpbGRpbmcgYSBkaWN0aW9uYXJ5IG9mIHNldHM6CiAKLSAgID4+PiBzID0gWygncmVkJywgMSksICgnYmx1ZScsIDIpLCAoJ3JlZCcsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKSwgKCdibHVlJywgNCldCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KHNldCkKLSAgID4+PiBmb3IgaywgdiBpbiBzOgotICAgLi4uICAgICBkW2tdLmFkZCh2KQotICAgLi4uCi0gICA+Pj4gbGlzdChkLml0ZW1zKCkpCi0gICBbKCdibHVlJywgc2V0KFsyLCA0XSkpLCAoJ3JlZCcsIHNldChbMSwgM10pKV0KKyAgICA+Pj4gcyA9IFsoJ3JlZCcsIDEpLCAoJ2JsdWUnLCAyKSwgKCdyZWQnLCAzKSwgKCdibHVlJywgNCksICgncmVkJywgMSksICgnYmx1ZScsIDQpXQorICAgID4+PiBkID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgID4+PiBmb3IgaywgdiBpbiBzOgorICAgIC4uLiAgICAgZFtrXS5hZGQodikKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChkLml0ZW1zKCkpCisgICAgWygnYmx1ZScsIHsyLCA0fSksICgncmVkJywgezEsIDN9KV0KIAogCiA6ZnVuYzpgbmFtZWR0dXBsZWAgRmFjdG9yeSBGdW5jdGlvbiBmb3IgVHVwbGVzIHdpdGggTmFtZWQgRmllbGRzCkBAIC01NjIsMTY4ICs3MzMsMTMxIEBACiAKIC4uIGZ1bmN0aW9uOjogbmFtZWR0dXBsZSh0eXBlbmFtZSwgZmllbGRfbmFtZXMsIHZlcmJvc2U9RmFsc2UsIHJlbmFtZT1GYWxzZSkKIAotICAgUmV0dXJucyBhIG5ldyB0dXBsZSBzdWJjbGFzcyBuYW1lZCAqdHlwZW5hbWUqLiAgVGhlIG5ldyBzdWJjbGFzcyBpcyB1c2VkIHRvCi0gICBjcmVhdGUgdHVwbGUtbGlrZSBvYmplY3RzIHRoYXQgaGF2ZSBmaWVsZHMgYWNjZXNzaWJsZSBieSBhdHRyaWJ1dGUgbG9va3VwIGFzCi0gICB3ZWxsIGFzIGJlaW5nIGluZGV4YWJsZSBhbmQgaXRlcmFibGUuICBJbnN0YW5jZXMgb2YgdGhlIHN1YmNsYXNzIGFsc28gaGF2ZSBhCi0gICBoZWxwZnVsIGRvY3N0cmluZyAod2l0aCB0eXBlbmFtZSBhbmQgZmllbGRfbmFtZXMpIGFuZCBhIGhlbHBmdWwgOm1ldGg6YF9fcmVwcl9fYAotICAgbWV0aG9kIHdoaWNoIGxpc3RzIHRoZSB0dXBsZSBjb250ZW50cyBpbiBhIGBgbmFtZT12YWx1ZWBgIGZvcm1hdC4KKyAgICBSZXR1cm5zIGEgbmV3IHR1cGxlIHN1YmNsYXNzIG5hbWVkICp0eXBlbmFtZSouICBUaGUgbmV3IHN1YmNsYXNzIGlzIHVzZWQgdG8KKyAgICBjcmVhdGUgdHVwbGUtbGlrZSBvYmplY3RzIHRoYXQgaGF2ZSBmaWVsZHMgYWNjZXNzaWJsZSBieSBhdHRyaWJ1dGUgbG9va3VwIGFzCisgICAgd2VsbCBhcyBiZWluZyBpbmRleGFibGUgYW5kIGl0ZXJhYmxlLiAgSW5zdGFuY2VzIG9mIHRoZSBzdWJjbGFzcyBhbHNvIGhhdmUgYQorICAgIGhlbHBmdWwgZG9jc3RyaW5nICh3aXRoIHR5cGVuYW1lIGFuZCBmaWVsZF9uYW1lcykgYW5kIGEgaGVscGZ1bCA6bWV0aDpgX19yZXByX19gCisgICAgbWV0aG9kIHdoaWNoIGxpc3RzIHRoZSB0dXBsZSBjb250ZW50cyBpbiBhIGBgbmFtZT12YWx1ZWBgIGZvcm1hdC4KIAotICAgVGhlICpmaWVsZF9uYW1lcyogYXJlIGEgc2luZ2xlIHN0cmluZyB3aXRoIGVhY2ggZmllbGRuYW1lIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlCi0gICBhbmQvb3IgY29tbWFzLCBmb3IgZXhhbXBsZSBgYCd4IHknYGAgb3IgYGAneCwgeSdgYC4gIEFsdGVybmF0aXZlbHksICpmaWVsZF9uYW1lcyoKLSAgIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgc3VjaCBhcyBgYFsneCcsICd5J11gYC4KKyAgICBUaGUgKmZpZWxkX25hbWVzKiBhcmUgYSBzaW5nbGUgc3RyaW5nIHdpdGggZWFjaCBmaWVsZG5hbWUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UKKyAgICBhbmQvb3IgY29tbWFzLCBmb3IgZXhhbXBsZSBgYCd4IHknYGAgb3IgYGAneCwgeSdgYC4gIEFsdGVybmF0aXZlbHksICpmaWVsZF9uYW1lcyoKKyAgICBjYW4gYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHN1Y2ggYXMgYGBbJ3gnLCAneSddYGAuCiAKLSAgIEFueSB2YWxpZCBQeXRob24gaWRlbnRpZmllciBtYXkgYmUgdXNlZCBmb3IgYSBmaWVsZG5hbWUgZXhjZXB0IGZvciBuYW1lcwotICAgc3RhcnRpbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVmFsaWQgaWRlbnRpZmllcnMgY29uc2lzdCBvZiBsZXR0ZXJzLCBkaWdpdHMsCi0gICBhbmQgdW5kZXJzY29yZXMgYnV0IGRvIG5vdCBzdGFydCB3aXRoIGEgZGlnaXQgb3IgdW5kZXJzY29yZSBhbmQgY2Fubm90IGJlCi0gICBhIDptb2Q6YGtleXdvcmRgIHN1Y2ggYXMgKmNsYXNzKiwgKmZvciosICpyZXR1cm4qLCAqZ2xvYmFsKiwgKnBhc3MqLAotICAgb3IgKnJhaXNlKi4KKyAgICBBbnkgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXIgbWF5IGJlIHVzZWQgZm9yIGEgZmllbGRuYW1lIGV4Y2VwdCBmb3IgbmFtZXMKKyAgICBzdGFydGluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBWYWxpZCBpZGVudGlmaWVycyBjb25zaXN0IG9mIGxldHRlcnMsIGRpZ2l0cywKKyAgICBhbmQgdW5kZXJzY29yZXMgYnV0IGRvIG5vdCBzdGFydCB3aXRoIGEgZGlnaXQgb3IgdW5kZXJzY29yZSBhbmQgY2Fubm90IGJlCisgICAgYSA6bW9kOmBrZXl3b3JkYCBzdWNoIGFzICpjbGFzcyosICpmb3IqLCAqcmV0dXJuKiwgKmdsb2JhbCosICpwYXNzKiwKKyAgICBvciAqcmFpc2UqLgogCi0gICBJZiAqcmVuYW1lKiBpcyB0cnVlLCBpbnZhbGlkIGZpZWxkbmFtZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQKLSAgIHdpdGggcG9zaXRpb25hbCBuYW1lcy4gIEZvciBleGFtcGxlLCBgYFsnYWJjJywgJ2RlZicsICdnaGknLCAnYWJjJ11gYCBpcwotICAgY29udmVydGVkIHRvIGBgWydhYmMnLCAnXzEnLCAnZ2hpJywgJ18zJ11gYCwgZWxpbWluYXRpbmcgdGhlIGtleXdvcmQKLSAgIGBgZGVmYGAgYW5kIHRoZSBkdXBsaWNhdGUgZmllbGRuYW1lIGBgYWJjYGAuCisgICAgSWYgKnJlbmFtZSogaXMgdHJ1ZSwgaW52YWxpZCBmaWVsZG5hbWVzIGFyZSBhdXRvbWF0aWNhbGx5IHJlcGxhY2VkCisgICAgd2l0aCBwb3NpdGlvbmFsIG5hbWVzLiAgRm9yIGV4YW1wbGUsIGBgWydhYmMnLCAnZGVmJywgJ2doaScsICdhYmMnXWBgIGlzCisgICAgY29udmVydGVkIHRvIGBgWydhYmMnLCAnXzEnLCAnZ2hpJywgJ18zJ11gYCwgZWxpbWluYXRpbmcgdGhlIGtleXdvcmQKKyAgICBgYGRlZmBgIGFuZCB0aGUgZHVwbGljYXRlIGZpZWxkbmFtZSBgYGFiY2BgLgogCi0gICBJZiAqdmVyYm9zZSogaXMgdHJ1ZSwgdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcHJpbnRlZCBqdXN0IGJlZm9yZSBiZWluZyBidWlsdC4KKyAgICBJZiAqdmVyYm9zZSogaXMgdHJ1ZSwgdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcHJpbnRlZCBhZnRlciBpdCBpcworICAgIGJ1aWx0LiAgVGhpcyBvcHRpb24gaXMgb3V0ZGF0ZWQ7IGluc3RlYWQsIGl0IGlzIHNpbXBsZXIgdG8gcHJpbnQgdGhlCisgICAgOmF0dHI6YF9zb3VyY2VgIGF0dHJpYnV0ZS4KIAotICAgTmFtZWQgdHVwbGUgaW5zdGFuY2VzIGRvIG5vdCBoYXZlIHBlci1pbnN0YW5jZSBkaWN0aW9uYXJpZXMsIHNvIHRoZXkgYXJlCi0gICBsaWdodHdlaWdodCBhbmQgcmVxdWlyZSBubyBtb3JlIG1lbW9yeSB0aGFuIHJlZ3VsYXIgdHVwbGVzLgorICAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQorICAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KIAogCiAuLiBkb2N0ZXN0OjoKLSAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICA6b3B0aW9uczogK05PUk1BTElaRV9XSElURVNQQUNFCiAKLSAgID4+PiAjIEJhc2ljIGV4YW1wbGUKLSAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKLSAgID4+PiBwID0gUG9pbnQoeD0xMCwgeT0xMSkKLQotICAgPj4+ICMgRXhhbXBsZSB1c2luZyB0aGUgdmVyYm9zZSBvcHRpb24gdG8gcHJpbnQgdGhlIGNsYXNzIGRlZmluaXRpb24KLSAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScsIHZlcmJvc2U9VHJ1ZSkKLSAgIGNsYXNzIFBvaW50KHR1cGxlKToKLSAgICAgICAgICAgJ1BvaW50KHgsIHkpJwotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgX19zbG90c19fID0gKCkKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIF9maWVsZHMgPSAoJ3gnLCAneScpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX19uZXdfXyhfY2xzLCB4LCB5KToKLSAgICAgICAgICAgICAgICdDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUG9pbnQoeCwgeSknCi0gICAgICAgICAgICAgICByZXR1cm4gX3R1cGxlLl9fbmV3X18oX2NscywgKHgsIHkpKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgQGNsYXNzbWV0aG9kCi0gICAgICAgICAgIGRlZiBfbWFrZShjbHMsIGl0ZXJhYmxlLCBuZXc9dHVwbGUuX19uZXdfXywgbGVuPWxlbik6Ci0gICAgICAgICAgICAgICAnTWFrZSBhIG5ldyBQb2ludCBvYmplY3QgZnJvbSBhIHNlcXVlbmNlIG9yIGl0ZXJhYmxlJwotICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3KGNscywgaXRlcmFibGUpCi0gICAgICAgICAgICAgICBpZiBsZW4ocmVzdWx0KSAhPSAyOgotICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgMiBhcmd1bWVudHMsIGdvdCAlZCcgJSBsZW4ocmVzdWx0KSkKLSAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gYSBuaWNlbHkgZm9ybWF0dGVkIHJlcHJlc2VudGF0aW9uIHN0cmluZycKLSAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArICcoeD0lciwgeT0lciknICUgc2VsZgotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9hc2RpY3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAnUmV0dXJuIGEgbmV3IE9yZGVyZWREaWN0IHdoaWNoIG1hcHMgZmllbGQgbmFtZXMgdG8gdGhlaXIgdmFsdWVzJwotICAgICAgICAgICAgICAgcmV0dXJuIE9yZGVyZWREaWN0KHppcChzZWxmLl9maWVsZHMsIHNlbGYpKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgX19kaWN0X18gPSBwcm9wZXJ0eShfYXNkaWN0KQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9yZXBsYWNlKF9zZWxmLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgJ1JldHVybiBhIG5ldyBQb2ludCBvYmplY3QgcmVwbGFjaW5nIHNwZWNpZmllZCBmaWVsZHMgd2l0aCBuZXcgdmFsdWVzJwotICAgICAgICAgICAgICAgcmVzdWx0ID0gX3NlbGYuX21ha2UobWFwKGt3ZHMucG9wLCAoJ3gnLCAneScpLCBfc2VsZikpCi0gICAgICAgICAgICAgICBpZiBrd2RzOgotICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0dvdCB1bmV4cGVjdGVkIGZpZWxkIG5hbWVzOiAlcicgJSBsaXN0KGt3ZHMua2V5cygpKSkKLSAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gc2VsZiBhcyBhIHBsYWluIHR1cGxlLiAgIFVzZWQgYnkgY29weSBhbmQgcGlja2xlLicKLSAgICAgICAgICAgICAgIHJldHVybiB0dXBsZShzZWxmKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgeCA9IF9wcm9wZXJ0eShfaXRlbWdldHRlcigwKSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIDAnKQotICAgICAgICAgICB5ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKDEpLCBkb2M9J0FsaWFzIGZvciBmaWVsZCBudW1iZXIgMScpCi0KLSAgID4+PiBwID0gUG9pbnQoMTEsIHk9MjIpICAgICAjIGluc3RhbnRpYXRlIHdpdGggcG9zaXRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cwotICAgPj4+IHBbMF0gKyBwWzFdICAgICAgICAgICAgICMgaW5kZXhhYmxlIGxpa2UgdGhlIHBsYWluIHR1cGxlICgxMSwgMjIpCi0gICAzMwotICAgPj4+IHgsIHkgPSBwICAgICAgICAgICAgICAgICMgdW5wYWNrIGxpa2UgYSByZWd1bGFyIHR1cGxlCi0gICA+Pj4geCwgeQotICAgKDExLCAyMikKLSAgID4+PiBwLnggKyBwLnkgICAgICAgICAgICAgICAjIGZpZWxkcyBhbHNvIGFjY2Vzc2libGUgYnkgbmFtZQotICAgMzMKLSAgID4+PiBwICAgICAgICAgICAgICAgICAgICAgICAjIHJlYWRhYmxlIF9fcmVwcl9fIHdpdGggYSBuYW1lPXZhbHVlIHN0eWxlCi0gICBQb2ludCh4PTExLCB5PTIyKQorICAgID4+PiAjIEJhc2ljIGV4YW1wbGUKKyAgICA+Pj4gUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pCisgICAgPj4+IHAgPSBQb2ludCgxMSwgeT0yMikgICAgICMgaW5zdGFudGlhdGUgd2l0aCBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCisgICAgPj4+IHBbMF0gKyBwWzFdICAgICAgICAgICAgICMgaW5kZXhhYmxlIGxpa2UgdGhlIHBsYWluIHR1cGxlICgxMSwgMjIpCisgICAgMzMKKyAgICA+Pj4geCwgeSA9IHAgICAgICAgICAgICAgICAgIyB1bnBhY2sgbGlrZSBhIHJlZ3VsYXIgdHVwbGUKKyAgICA+Pj4geCwgeQorICAgICgxMSwgMjIpCisgICAgPj4+IHAueCArIHAueSAgICAgICAgICAgICAgICMgZmllbGRzIGFsc28gYWNjZXNzaWJsZSBieSBuYW1lCisgICAgMzMKKyAgICA+Pj4gcCAgICAgICAgICAgICAgICAgICAgICAgIyByZWFkYWJsZSBfX3JlcHJfXyB3aXRoIGEgbmFtZT12YWx1ZSBzdHlsZQorICAgIFBvaW50KHg9MTEsIHk9MjIpCiAKIE5hbWVkIHR1cGxlcyBhcmUgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGFzc2lnbmluZyBmaWVsZCBuYW1lcyB0byByZXN1bHQgdHVwbGVzIHJldHVybmVkCiBieSB0aGUgOm1vZDpgY3N2YCBvciA6bW9kOmBzcWxpdGUzYCBtb2R1bGVzOjoKIAotICAgRW1wbG95ZWVSZWNvcmQgPSBuYW1lZHR1cGxlKCdFbXBsb3llZVJlY29yZCcsICduYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZScpCisgICAgRW1wbG95ZWVSZWNvcmQgPSBuYW1lZHR1cGxlKCdFbXBsb3llZVJlY29yZCcsICduYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZScpCiAKLSAgIGltcG9ydCBjc3YKLSAgIGZvciBlbXAgaW4gbWFwKEVtcGxveWVlUmVjb3JkLl9tYWtlLCBjc3YucmVhZGVyKG9wZW4oImVtcGxveWVlcy5jc3YiLCAicmIiKSkpOgotICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCisgICAgaW1wb3J0IGNzdgorICAgIGZvciBlbXAgaW4gbWFwKEVtcGxveWVlUmVjb3JkLl9tYWtlLCBjc3YucmVhZGVyKG9wZW4oImVtcGxveWVlcy5jc3YiLCAicmIiKSkpOgorICAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQogCi0gICBpbXBvcnQgc3FsaXRlMwotICAgY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgnL2NvbXBhbnlkYXRhJykKLSAgIGN1cnNvciA9IGNvbm4uY3Vyc29yKCkKLSAgIGN1cnNvci5leGVjdXRlKCdTRUxFQ1QgbmFtZSwgYWdlLCB0aXRsZSwgZGVwYXJ0bWVudCwgcGF5Z3JhZGUgRlJPTSBlbXBsb3llZXMnKQotICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGN1cnNvci5mZXRjaGFsbCgpKToKLSAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQorICAgIGltcG9ydCBzcWxpdGUzCisgICAgY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgnL2NvbXBhbnlkYXRhJykKKyAgICBjdXJzb3IgPSBjb25uLmN1cnNvcigpCisgICAgY3Vyc29yLmV4ZWN1dGUoJ1NFTEVDVCBuYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZSBGUk9NIGVtcGxveWVlcycpCisgICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGN1cnNvci5mZXRjaGFsbCgpKToKKyAgICAgICAgcHJpbnQoZW1wLm5hbWUsIGVtcC50aXRsZSkKIAogSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgaW5oZXJpdGVkIGZyb20gdHVwbGVzLCBuYW1lZCB0dXBsZXMgc3VwcG9ydAotdGhyZWUgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBvbmUgYXR0cmlidXRlLiAgVG8gcHJldmVudCBjb25mbGljdHMgd2l0aAordGhyZWUgYWRkaXRpb25hbCBtZXRob2RzIGFuZCB0d28gYXR0cmlidXRlcy4gIFRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGgKIGZpZWxkIG5hbWVzLCB0aGUgbWV0aG9kIGFuZCBhdHRyaWJ1dGUgbmFtZXMgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlLgogCiAuLiBjbGFzc21ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9tYWtlKGl0ZXJhYmxlKQogCi0gICBDbGFzcyBtZXRob2QgdGhhdCBtYWtlcyBhIG5ldyBpbnN0YW5jZSBmcm9tIGFuIGV4aXN0aW5nIHNlcXVlbmNlIG9yIGl0ZXJhYmxlLgorICAgIENsYXNzIG1ldGhvZCB0aGF0IG1ha2VzIGEgbmV3IGluc3RhbmNlIGZyb20gYW4gZXhpc3Rpbmcgc2VxdWVuY2Ugb3IgaXRlcmFibGUuCiAKLS4uIGRvY3Rlc3Q6OgorICAgIC4uIGRvY3Rlc3Q6OgogCi0gICAgICA+Pj4gdCA9IFsxMSwgMjJdCi0gICAgICA+Pj4gUG9pbnQuX21ha2UodCkKLSAgICAgIFBvaW50KHg9MTEsIHk9MjIpCisgICAgICAgID4+PiB0ID0gWzExLCAyMl0KKyAgICAgICAgPj4+IFBvaW50Ll9tYWtlKHQpCisgICAgICAgIFBvaW50KHg9MTEsIHk9MjIpCiAKIC4uIG1ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9hc2RpY3QoKQogCi0gICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCi0gICB2YWx1ZXM6OgorICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YE9yZGVyZWREaWN0YCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKKyAgICB2YWx1ZXMuICBOb3RlLCB0aGlzIG1ldGhvZCBpcyBubyBsb25nZXIgbmVlZGVkIG5vdyB0aGF0IHRoZSBzYW1lIGVmZmVjdCBjYW4KKyAgICBiZSBhY2hpZXZlZCBieSB1c2luZyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHZhcnNgIGZ1bmN0aW9uOjoKIAotICAgICAgPj4+IHAuX2FzZGljdCgpCi0gICAgICBPcmRlcmVkRGljdChbKCd4JywgMTEpLCAoJ3knLCAyMildKQorICAgICAgICA+Pj4gdmFycyhwKQorICAgICAgICBPcmRlcmVkRGljdChbKCd4JywgMTEpLCAoJ3knLCAyMildKQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgUmV0dXJucyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBpbnN0ZWFkIG9mIGEgcmVndWxhciA6Y2xhc3M6YGRpY3RgLgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCisgICAgICAgIFJldHVybnMgYW4gOmNsYXNzOmBPcmRlcmVkRGljdGAgaW5zdGVhZCBvZiBhIHJlZ3VsYXIgOmNsYXNzOmBkaWN0YC4KIAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX3JlcGxhY2Uoa3dhcmdzKQogCi0gICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIG5hbWVkIHR1cGxlIHJlcGxhY2luZyBzcGVjaWZpZWQgZmllbGRzIHdpdGggbmV3Ci0gICB2YWx1ZXM6CisgICAgUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBuYW1lZCB0dXBsZSByZXBsYWNpbmcgc3BlY2lmaWVkIGZpZWxkcyB3aXRoIG5ldworICAgIHZhbHVlczo6CiAKLTo6CisgICAgICAgID4+PiBwID0gUG9pbnQoeD0xMSwgeT0yMikKKyAgICAgICAgPj4+IHAuX3JlcGxhY2UoeD0zMykKKyAgICAgICAgUG9pbnQoeD0zMywgeT0yMikKIAotICAgICAgPj4+IHAgPSBQb2ludCh4PTExLCB5PTIyKQotICAgICAgPj4+IHAuX3JlcGxhY2UoeD0zMykKLSAgICAgIFBvaW50KHg9MzMsIHk9MjIpCisgICAgICAgID4+PiBmb3IgcGFydG51bSwgcmVjb3JkIGluIGludmVudG9yeS5pdGVtcygpOgorICAgICAgICAuLi4gICAgIGludmVudG9yeVtwYXJ0bnVtXSA9IHJlY29yZC5fcmVwbGFjZShwcmljZT1uZXdwcmljZXNbcGFydG51bV0sIHRpbWVzdGFtcD10aW1lLm5vdygpKQogCi0gICAgICA+Pj4gZm9yIHBhcnRudW0sIHJlY29yZCBpbiBpbnZlbnRvcnkuaXRlbXMoKToKLSAgICAgIC4uLiAgICAgaW52ZW50b3J5W3BhcnRudW1dID0gcmVjb3JkLl9yZXBsYWNlKHByaWNlPW5ld3ByaWNlc1twYXJ0bnVtXSwgdGltZXN0YW1wPXRpbWUubm93KCkpCisuLiBhdHRyaWJ1dGU6OiBzb21lbmFtZWR0dXBsZS5fc291cmNlCisKKyAgICBBIHN0cmluZyB3aXRoIHRoZSBwdXJlIFB5dGhvbiBzb3VyY2UgY29kZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbmFtZWQKKyAgICB0dXBsZSBjbGFzcy4gIFRoZSBzb3VyY2UgbWFrZXMgdGhlIG5hbWVkIHR1cGxlIHNlbGYtZG9jdW1lbnRpbmcuCisgICAgSXQgY2FuIGJlIHByaW50ZWQsIGV4ZWN1dGVkIHVzaW5nIDpmdW5jOmBleGVjYCwgb3Igc2F2ZWQgdG8gYSBmaWxlCisgICAgYW5kIGltcG9ydGVkLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGF0dHJpYnV0ZTo6IHNvbWVuYW1lZHR1cGxlLl9maWVsZHMKIAotICAgVHVwbGUgb2Ygc3RyaW5ncyBsaXN0aW5nIHRoZSBmaWVsZCBuYW1lcy4gIFVzZWZ1bCBmb3IgaW50cm9zcGVjdGlvbgotICAgYW5kIGZvciBjcmVhdGluZyBuZXcgbmFtZWQgdHVwbGUgdHlwZXMgZnJvbSBleGlzdGluZyBuYW1lZCB0dXBsZXMuCisgICAgVHVwbGUgb2Ygc3RyaW5ncyBsaXN0aW5nIHRoZSBmaWVsZCBuYW1lcy4gIFVzZWZ1bCBmb3IgaW50cm9zcGVjdGlvbgorICAgIGFuZCBmb3IgY3JlYXRpbmcgbmV3IG5hbWVkIHR1cGxlIHR5cGVzIGZyb20gZXhpc3RpbmcgbmFtZWQgdHVwbGVzLgogCi0uLiBkb2N0ZXN0OjoKKyAgICAuLiBkb2N0ZXN0OjoKIAotICAgICAgPj4+IHAuX2ZpZWxkcyAgICAgICAgICAgICMgdmlldyB0aGUgZmllbGQgbmFtZXMKLSAgICAgICgneCcsICd5JykKKyAgICAgICAgPj4+IHAuX2ZpZWxkcyAgICAgICAgICAgICMgdmlldyB0aGUgZmllbGQgbmFtZXMKKyAgICAgICAgKCd4JywgJ3knKQogCi0gICAgICA+Pj4gQ29sb3IgPSBuYW1lZHR1cGxlKCdDb2xvcicsICdyZWQgZ3JlZW4gYmx1ZScpCi0gICAgICA+Pj4gUGl4ZWwgPSBuYW1lZHR1cGxlKCdQaXhlbCcsIFBvaW50Ll9maWVsZHMgKyBDb2xvci5fZmllbGRzKQotICAgICAgPj4+IFBpeGVsKDExLCAyMiwgMTI4LCAyNTUsIDApCi0gICAgICBQaXhlbCh4PTExLCB5PTIyLCByZWQ9MTI4LCBncmVlbj0yNTUsIGJsdWU9MCkKKyAgICAgICAgPj4+IENvbG9yID0gbmFtZWR0dXBsZSgnQ29sb3InLCAncmVkIGdyZWVuIGJsdWUnKQorICAgICAgICA+Pj4gUGl4ZWwgPSBuYW1lZHR1cGxlKCdQaXhlbCcsIFBvaW50Ll9maWVsZHMgKyBDb2xvci5fZmllbGRzKQorICAgICAgICA+Pj4gUGl4ZWwoMTEsIDIyLCAxMjgsIDI1NSwgMCkKKyAgICAgICAgUGl4ZWwoeD0xMSwgeT0yMiwgcmVkPTEyOCwgZ3JlZW49MjU1LCBibHVlPTApCiAKIFRvIHJldHJpZXZlIGEgZmllbGQgd2hvc2UgbmFtZSBpcyBzdG9yZWQgaW4gYSBzdHJpbmcsIHVzZSB0aGUgOmZ1bmM6YGdldGF0dHJgCiBmdW5jdGlvbjoKQEAgLTczNCwzMSArODY4LDMwIEBACiBUbyBjb252ZXJ0IGEgZGljdGlvbmFyeSB0byBhIG5hbWVkIHR1cGxlLCB1c2UgdGhlIGRvdWJsZS1zdGFyLW9wZXJhdG9yCiAoYXMgZGVzY3JpYmVkIGluIDpyZWY6YHR1dC11bnBhY2tpbmctYXJndW1lbnRzYCk6CiAKLSAgID4+PiBkID0geyd4JzogMTEsICd5JzogMjJ9Ci0gICA+Pj4gUG9pbnQoKipkKQotICAgUG9pbnQoeD0xMSwgeT0yMikKKyAgICA+Pj4gZCA9IHsneCc6IDExLCAneSc6IDIyfQorICAgID4+PiBQb2ludCgqKmQpCisgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogU2luY2UgYSBuYW1lZCB0dXBsZSBpcyBhIHJlZ3VsYXIgUHl0aG9uIGNsYXNzLCBpdCBpcyBlYXN5IHRvIGFkZCBvciBjaGFuZ2UKIGZ1bmN0aW9uYWxpdHkgd2l0aCBhIHN1YmNsYXNzLiAgSGVyZSBpcyBob3cgdG8gYWRkIGEgY2FsY3VsYXRlZCBmaWVsZCBhbmQKIGEgZml4ZWQtd2lkdGggcHJpbnQgZm9ybWF0OgogCiAgICAgPj4+IGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCi0gICAgICAgICAgICBAcHJvcGVydHkKLSAgICAgICAgICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQotICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQorICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIGh5cG90KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKKyAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCiAKICAgICA+Pj4gZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcpOgotICAgICAgICAgICAgcHJpbnQocCkKKyAgICAgICAgcHJpbnQocCkKICAgICBQb2ludDogeD0gMy4wMDAgIHk9IDQuMDAwICBoeXBvdD0gNS4wMDAKICAgICBQb2ludDogeD0xNC4wMDAgIHk9IDAuNzE0ICBoeXBvdD0xNC4wMTgKIAogVGhlIHN1YmNsYXNzIHNob3duIGFib3ZlIHNldHMgYGBfX3Nsb3RzX19gYCB0byBhbiBlbXB0eSB0dXBsZS4gIFRoaXMgaGVscHMKIGtlZXAgbWVtb3J5IHJlcXVpcmVtZW50cyBsb3cgYnkgcHJldmVudGluZyB0aGUgY3JlYXRpb24gb2YgaW5zdGFuY2UgZGljdGlvbmFyaWVzLgogCi0KIFN1YmNsYXNzaW5nIGlzIG5vdCB1c2VmdWwgZm9yIGFkZGluZyBuZXcsIHN0b3JlZCBmaWVsZHMuICBJbnN0ZWFkLCBzaW1wbHkKIGNyZWF0ZSBhIG5ldyBuYW1lZCB0dXBsZSB0eXBlIGZyb20gdGhlIDphdHRyOmBfZmllbGRzYCBhdHRyaWJ1dGU6CiAKQEAgLTc3MCw2ICs5MDMsNyBAQAogICAgID4+PiBBY2NvdW50ID0gbmFtZWR0dXBsZSgnQWNjb3VudCcsICdvd25lciBiYWxhbmNlIHRyYW5zYWN0aW9uX2NvdW50JykKICAgICA+Pj4gZGVmYXVsdF9hY2NvdW50ID0gQWNjb3VudCgnPG93bmVyIG5hbWU+JywgMC4wLCAwKQogICAgID4+PiBqb2huc19hY2NvdW50ID0gZGVmYXVsdF9hY2NvdW50Ll9yZXBsYWNlKG93bmVyPSdKb2huJykKKyAgICA+Pj4gamFuZXNfYWNjb3VudCA9IGRlZmF1bHRfYWNjb3VudC5fcmVwbGFjZShvd25lcj0nSmFuZScpCiAKIEVudW1lcmF0ZWQgY29uc3RhbnRzIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRoIG5hbWVkIHR1cGxlcywgYnV0IGl0IGlzIHNpbXBsZXIKIGFuZCBtb3JlIGVmZmljaWVudCB0byB1c2UgYSBzaW1wbGUgY2xhc3MgZGVjbGFyYXRpb246CkBAIC03NzgsMTkgKzkxMiwxOSBAQAogICAgID4+PiBTdGF0dXMub3BlbiwgU3RhdHVzLnBlbmRpbmcsIFN0YXR1cy5jbG9zZWQKICAgICAoMCwgMSwgMikKICAgICA+Pj4gY2xhc3MgU3RhdHVzOgotICAgICAgICAgICAgb3BlbiwgcGVuZGluZywgY2xvc2VkID0gcmFuZ2UoMykKKyAgICAgICAgb3BlbiwgcGVuZGluZywgY2xvc2VkID0gcmFuZ2UoMykKIAogLi4gc2VlYWxzbzo6CiAKLSAgICogYE5hbWVkIHR1cGxlIHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTAwMjYxLz5gXwotICAgICBhZGFwdGVkIGZvciBQeXRob24gMi40LgorICAgICogYE5hbWVkIHR1cGxlIHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTAwMjYxLz5gXworICAgICAgYWRhcHRlZCBmb3IgUHl0aG9uIDIuNC4KIAotICAgKiBgUmVjaXBlIGZvciBuYW1lZCB0dXBsZSBhYnN0cmFjdCBiYXNlIGNsYXNzIHdpdGggYSBtZXRhY2xhc3MgbWl4LWluCi0gICAgIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc2MjktbmFtZWR0dXBsZWFiYy1hYnN0cmFjdC1iYXNlLWNsYXNzLW1peC1pbi1mb3ItbmFtZWQvPmBfCi0gICAgIGJ5IEphbiBLYWxpc3pld3NraS4gIEJlc2lkZXMgcHJvdmlkaW5nIGFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IKLSAgICAgbmFtZWQgdHVwbGVzLCBpdCBhbHNvIHN1cHBvcnRzIGFuIGFsdGVybmF0ZSA6dGVybTpgbWV0YWNsYXNzYC1iYXNlZAotICAgICBjb25zdHJ1Y3RvciB0aGF0IGlzIGNvbnZlbmllbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSBuYW1lZCB0dXBsZXMgYXJlIGJlaW5nCi0gICAgIHN1YmNsYXNzZWQuCisgICAgKiBgUmVjaXBlIGZvciBuYW1lZCB0dXBsZSBhYnN0cmFjdCBiYXNlIGNsYXNzIHdpdGggYSBtZXRhY2xhc3MgbWl4LWluCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NjI5LW5hbWVkdHVwbGVhYmMtYWJzdHJhY3QtYmFzZS1jbGFzcy1taXgtaW4tZm9yLW5hbWVkLz5gXworICAgICAgYnkgSmFuIEthbGlzemV3c2tpLiAgQmVzaWRlcyBwcm92aWRpbmcgYW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvcgorICAgICAgbmFtZWQgdHVwbGVzLCBpdCBhbHNvIHN1cHBvcnRzIGFuIGFsdGVybmF0ZSA6dGVybTpgbWV0YWNsYXNzYC1iYXNlZAorICAgICAgY29uc3RydWN0b3IgdGhhdCBpcyBjb252ZW5pZW50IGZvciB1c2UgY2FzZXMgd2hlcmUgbmFtZWQgdHVwbGVzIGFyZSBiZWluZworICAgICAgc3ViY2xhc3NlZC4KIAogCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvYmplY3RzCkBAIC04MDIsMzYgKzkzNiwzNiBAQAogCiAuLiBjbGFzczo6IE9yZGVyZWREaWN0KFtpdGVtc10pCiAKLSAgIFJldHVybiBhbiBpbnN0YW5jZSBvZiBhIGRpY3Qgc3ViY2xhc3MsIHN1cHBvcnRpbmcgdGhlIHVzdWFsIDpjbGFzczpgZGljdGAKLSAgIG1ldGhvZHMuICBBbiAqT3JkZXJlZERpY3QqIGlzIGEgZGljdCB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgdGhhdCBrZXlzCi0gICB3ZXJlIGZpcnN0IGluc2VydGVkLiBJZiBhIG5ldyBlbnRyeSBvdmVyd3JpdGVzIGFuIGV4aXN0aW5nIGVudHJ5LCB0aGUKLSAgIG9yaWdpbmFsIGluc2VydGlvbiBwb3NpdGlvbiBpcyBsZWZ0IHVuY2hhbmdlZC4gIERlbGV0aW5nIGFuIGVudHJ5IGFuZAotICAgcmVpbnNlcnRpbmcgaXQgd2lsbCBtb3ZlIGl0IHRvIHRoZSBlbmQuCisgICAgUmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgZGljdCBzdWJjbGFzcywgc3VwcG9ydGluZyB0aGUgdXN1YWwgOmNsYXNzOmBkaWN0YAorICAgIG1ldGhvZHMuICBBbiAqT3JkZXJlZERpY3QqIGlzIGEgZGljdCB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgdGhhdCBrZXlzCisgICAgd2VyZSBmaXJzdCBpbnNlcnRlZC4gSWYgYSBuZXcgZW50cnkgb3ZlcndyaXRlcyBhbiBleGlzdGluZyBlbnRyeSwgdGhlCisgICAgb3JpZ2luYWwgaW5zZXJ0aW9uIHBvc2l0aW9uIGlzIGxlZnQgdW5jaGFuZ2VkLiAgRGVsZXRpbmcgYW4gZW50cnkgYW5kCisgICAgcmVpbnNlcnRpbmcgaXQgd2lsbCBtb3ZlIGl0IHRvIHRoZSBlbmQuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCi0gICAuLiBtZXRob2Q6OiBwb3BpdGVtKGxhc3Q9VHJ1ZSkKKyAgICAuLiBtZXRob2Q6OiBwb3BpdGVtKGxhc3Q9VHJ1ZSkKIAotICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQotICAgICAgKGtleSwgdmFsdWUpIHBhaXIuICBUaGUgcGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgKmxhc3QqIGlzIHRydWUKLSAgICAgIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuCisgICAgICAgIFRoZSA6bWV0aDpgcG9waXRlbWAgbWV0aG9kIGZvciBvcmRlcmVkIGRpY3Rpb25hcmllcyByZXR1cm5zIGFuZCByZW1vdmVzIGEKKyAgICAgICAgKGtleSwgdmFsdWUpIHBhaXIuICBUaGUgcGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgKmxhc3QqIGlzIHRydWUKKyAgICAgICAgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KIAotICAgLi4gbWV0aG9kOjogbW92ZV90b19lbmQoa2V5LCBsYXN0PVRydWUpCisgICAgLi4gbWV0aG9kOjogbW92ZV90b19lbmQoa2V5LCBsYXN0PVRydWUpCiAKLSAgICAgIE1vdmUgYW4gZXhpc3RpbmcgKmtleSogdG8gZWl0aGVyIGVuZCBvZiBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuICBUaGUgaXRlbQotICAgICAgaXMgbW92ZWQgdG8gdGhlIHJpZ2h0IGVuZCBpZiAqbGFzdCogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpIG9yIHRvIHRoZQotICAgICAgYmVnaW5uaW5nIGlmICpsYXN0KiBpcyBmYWxzZS4gIFJhaXNlcyA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlICprZXkqIGRvZXMKLSAgICAgIG5vdCBleGlzdDo6CisgICAgICAgIE1vdmUgYW4gZXhpc3RpbmcgKmtleSogdG8gZWl0aGVyIGVuZCBvZiBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuICBUaGUgaXRlbQorICAgICAgICBpcyBtb3ZlZCB0byB0aGUgcmlnaHQgZW5kIGlmICpsYXN0KiBpcyB0cnVlICh0aGUgZGVmYXVsdCkgb3IgdG8gdGhlCisgICAgICAgIGJlZ2lubmluZyBpZiAqbGFzdCogaXMgZmFsc2UuICBSYWlzZXMgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSAqa2V5KiBkb2VzCisgICAgICAgIG5vdCBleGlzdDo6CiAKLSAgICAgICAgICA+Pj4gZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmNkZScpCi0gICAgICAgICAgPj4+IGQubW92ZV90b19lbmQoJ2InKQotICAgICAgICAgID4+PiAnJy5qb2luKGQua2V5cygpKQotICAgICAgICAgICdhY2RlYicKLSAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicsIGxhc3Q9RmFsc2UpCi0gICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCi0gICAgICAgICAgJ2JhY2RlJworICAgICAgICAgICAgPj4+IGQgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjZGUnKQorICAgICAgICAgICAgPj4+IGQubW92ZV90b19lbmQoJ2InKQorICAgICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCisgICAgICAgICAgICAnYWNkZWInCisgICAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicsIGxhc3Q9RmFsc2UpCisgICAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKKyAgICAgICAgICAgICdiYWNkZScKIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiBJbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgbWFwcGluZyBtZXRob2RzLCBvcmRlcmVkIGRpY3Rpb25hcmllcyBhbHNvIHN1cHBvcnQKIHJldmVyc2UgaXRlcmF0aW9uIHVzaW5nIDpmdW5jOmByZXZlcnNlZGAuCkBAIC04NDksOCArOTgzLDggQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgIGBFcXVpdmFsZW50IE9yZGVyZWREaWN0IHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2NjkzLz5gXwotICAgdGhhdCBydW5zIG9uIFB5dGhvbiAyLjQgb3IgbGF0ZXIuCisgICAgYEVxdWl2YWxlbnQgT3JkZXJlZERpY3QgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTMvPmBfCisgICAgdGhhdCBydW5zIG9uIFB5dGhvbiAyLjQgb3IgbGF0ZXIuCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIEV4YW1wbGVzIGFuZCBSZWNpcGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtODkzLDcgKzEwMjcsNyBAQAogQW4gb3JkZXJlZCBkaWN0aW9uYXJ5IGNhbiBiZSBjb21iaW5lZCB3aXRoIHRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzCiBzbyB0aGF0IHRoZSBjb3VudGVyIHJlbWVtYmVycyB0aGUgb3JkZXIgZWxlbWVudHMgYXJlIGZpcnN0IGVuY291bnRlcmVkOjoKIAotICAgY2xhc3MgT3JkZXJlZENvdW50ZXIoQ291bnRlciwgT3JkZXJlZERpY3QpOgorICAgIGNsYXNzIE9yZGVyZWRDb3VudGVyKENvdW50ZXIsIE9yZGVyZWREaWN0KToKICAgICAgICAgJ0NvdW50ZXIgdGhhdCByZW1lbWJlcnMgdGhlIG9yZGVyIGVsZW1lbnRzIGFyZSBmaXJzdCBlbmNvdW50ZXJlZCcKIAogICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC05MTQsMTkgKzEwNDgsMTkgQEAKIAogLi4gY2xhc3M6OiBVc2VyRGljdChbaW5pdGlhbGRhdGFdKQogCi0gICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGRpY3Rpb25hcnkuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhCi0gICByZWd1bGFyIGRpY3Rpb25hcnksIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZSA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mCi0gICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMuICBJZiAqaW5pdGlhbGRhdGEqIGlzIHByb3ZpZGVkLCA6YXR0cjpgZGF0YWAgaXMKLSAgIGluaXRpYWxpemVkIHdpdGggaXRzIGNvbnRlbnRzOyBub3RlIHRoYXQgYSByZWZlcmVuY2UgdG8gKmluaXRpYWxkYXRhKiB3aWxsIG5vdAotICAgYmUga2VwdCwgYWxsb3dpbmcgaXQgYmUgdXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuCisgICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBkaWN0aW9uYXJ5LiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGtlcHQgaW4gYQorICAgIHJlZ3VsYXIgZGljdGlvbmFyeSwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YKKyAgICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMuICBJZiAqaW5pdGlhbGRhdGEqIGlzIHByb3ZpZGVkLCA6YXR0cjpgZGF0YWAgaXMKKyAgICBpbml0aWFsaXplZCB3aXRoIGl0cyBjb250ZW50czsgbm90ZSB0aGF0IGEgcmVmZXJlbmNlIHRvICppbml0aWFsZGF0YSogd2lsbCBub3QKKyAgICBiZSBrZXB0LCBhbGxvd2luZyBpdCBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KIAotICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtYXBwaW5ncywKLSAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgorICAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgdGhlIG1ldGhvZHMgYW5kIG9wZXJhdGlvbnMgb2YgbWFwcGluZ3MsCisgICAgOmNsYXNzOmBVc2VyRGljdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CiAKLSAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKKyAgICAuLiBhdHRyaWJ1dGU6OiBkYXRhCiAKLSAgICAgIEEgcmVhbCBkaWN0aW9uYXJ5IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZSA6Y2xhc3M6YFVzZXJEaWN0YAotICAgICAgY2xhc3MuCisgICAgICAgIEEgcmVhbCBkaWN0aW9uYXJ5IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZSA6Y2xhc3M6YFVzZXJEaWN0YAorICAgICAgICBjbGFzcy4KIAogCiAKQEAgLTk0NCwxOSArMTA3OCwxOSBAQAogCiAuLiBjbGFzczo6IFVzZXJMaXN0KFtsaXN0XSkKIAotICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBsaXN0LiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGtlcHQgaW4gYSByZWd1bGFyCi0gICBsaXN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZiA6Y2xhc3M6YFVzZXJMaXN0YAotICAgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGluaXRpYWxseSBzZXQgdG8gYSBjb3B5IG9mICpsaXN0KiwKLSAgIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IGxpc3QgYGBbXWBgLiAgKmxpc3QqIGNhbiBiZSBhbnkgaXRlcmFibGUsIGZvcgotICAgZXhhbXBsZSBhIHJlYWwgUHl0aG9uIGxpc3Qgb3IgYSA6Y2xhc3M6YFVzZXJMaXN0YCBvYmplY3QuCisgICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBsaXN0LiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGtlcHQgaW4gYSByZWd1bGFyCisgICAgbGlzdCwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YgOmNsYXNzOmBVc2VyTGlzdGAKKyAgICBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKmxpc3QqLAorICAgIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IGxpc3QgYGBbXWBgLiAgKmxpc3QqIGNhbiBiZSBhbnkgaXRlcmFibGUsIGZvcgorICAgIGV4YW1wbGUgYSByZWFsIFB5dGhvbiBsaXN0IG9yIGEgOmNsYXNzOmBVc2VyTGlzdGAgb2JqZWN0LgogCi0gICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG11dGFibGUgc2VxdWVuY2VzLAotICAgOmNsYXNzOmBVc2VyTGlzdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CisgICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtdXRhYmxlIHNlcXVlbmNlcywKKyAgICA6Y2xhc3M6YFVzZXJMaXN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKIAotICAgLi4gYXR0cmlidXRlOjogZGF0YQorICAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKIAotICAgICAgQSByZWFsIDpjbGFzczpgbGlzdGAgb2JqZWN0IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgICAgOmNsYXNzOmBVc2VyTGlzdGAgY2xhc3MuCisgICAgICAgIEEgcmVhbCA6Y2xhc3M6YGxpc3RgIG9iamVjdCB1c2VkIHRvIHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgOmNsYXNzOmBVc2VyTGlzdGAgY2xhc3MuCiAKICoqU3ViY2xhc3NpbmcgcmVxdWlyZW1lbnRzOioqIFN1YmNsYXNzZXMgb2YgOmNsYXNzOmBVc2VyTGlzdGAgYXJlIGV4cGVjdCB0bwogb2ZmZXIgYSBjb25zdHJ1Y3RvciB3aGljaCBjYW4gYmUgY2FsbGVkIHdpdGggZWl0aGVyIG5vIGFyZ3VtZW50cyBvciBvbmUKQEAgLTk4MSwxNjggKzExMTUsMTAgQEAKIAogLi4gY2xhc3M6OiBVc2VyU3RyaW5nKFtzZXF1ZW5jZV0pCiAKLSAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgc3RyaW5nIG9yIGEgVW5pY29kZSBzdHJpbmcgb2JqZWN0LiAgVGhlIGluc3RhbmNlJ3MKLSAgIGNvbnRlbnQgaXMga2VwdCBpbiBhIHJlZ3VsYXIgc3RyaW5nIG9iamVjdCwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlCi0gICA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlclN0cmluZ2AgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MKLSAgIGNvbnRlbnRzIGFyZSBpbml0aWFsbHkgc2V0IHRvIGEgY29weSBvZiAqc2VxdWVuY2UqLiAgVGhlICpzZXF1ZW5jZSogY2FuCi0gICBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YFVzZXJTdHJpbmdgIChvciBhCi0gICBzdWJjbGFzcykgb3IgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyB1c2luZwotICAgdGhlIGJ1aWx0LWluIDpmdW5jOmBzdHJgIGZ1bmN0aW9uLgotCi0KLS4uIF9jb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM6Ci0KLUFCQ3MgLSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIGNvbGxlY3Rpb25zIG1vZHVsZSBvZmZlcnMgdGhlIGZvbGxvd2luZyA6dGVybTpgQUJDcyA8YWJzdHJhY3QgYmFzZSBjbGFzcz5gOgotCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUFCQyAgICAgICAgICAgICAgICAgICAgICAgIEluaGVyaXRzIGZyb20gICAgICAgICAgQWJzdHJhY3QgTWV0aG9kcyAgICAgICAgTWl4aW4gTWV0aG9kcwotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci06Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAKLTpjbGFzczpgSGFzaGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2hhc2hfX2BgCi06Y2xhc3M6YEl0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBJdGVyYXRvcmAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fbmV4dF9fYGAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKLTpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCi0KLTpjbGFzczpgU2VxdWVuY2VgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGluZGV4YGAsIGFuZCBgYGNvdW50YGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYAotCi06Y2xhc3M6YE11dGFibGVTZXF1ZW5jZWAgICA6Y2xhc3M6YFNlcXVlbmNlYCAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNlcXVlbmNlYCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAsICAgICAgICBgYGFwcGVuZGBgLCBgYHJldmVyc2VgYCwgYGBleHRlbmRgYCwgYGBwb3BgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbnNlcnRgYCAgICAgICAgICAgICAgYGByZW1vdmVgYCwgYW5kIGBgX19pYWRkX19gYAotCi06Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAotCi06Y2xhc3M6YE11dGFibGVTZXRgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgIGBgYWRkYGAsICAgICAgICAgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNldGAgbWV0aG9kcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBkaXNjYXJkYGAgICAgICAgICAgICAgYGBjbGVhcmBgLCBgYHBvcGBgLCBgYHJlbW92ZWBgLCBgYF9faW9yX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2lhbmRfX2BgLCBgYF9faXhvcl9fYGAsIGFuZCBgYF9faXN1Yl9fYGAKLQotOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCi0KLTpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgICAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBgc2V0ZGVmYXVsdGBgCi0KLQotOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAotOmNsYXNzOmBJdGVtc1ZpZXdgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgS2V5c1ZpZXdgICAgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgLCAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCi06Y2xhc3M6YFZhbHVlc1ZpZXdgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYAotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotLi4gY2xhc3M6OiBDb250YWluZXIKLSAgICAgICAgICAgSGFzaGFibGUKLSAgICAgICAgICAgU2l6ZWQKLSAgICAgICAgICAgQ2FsbGFibGUKLQotICAgQUJDcyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgcmVzcGVjdGl2ZWx5IHRoZSBtZXRob2RzIDptZXRoOmBfX2NvbnRhaW5zX19gLAotICAgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9fbGVuX19gLCBhbmQgOm1ldGg6YF9fY2FsbF9fYC4KLQotLi4gY2xhc3M6OiBJdGVyYWJsZQotCi0gICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KLSAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCi0KLS4uIGNsYXNzOjogSXRlcmF0b3IKLQotICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBhbmQgOm1ldGg6YG5leHRgIG1ldGhvZHMuCi0gICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgotCi0uLiBjbGFzczo6IFNlcXVlbmNlCi0gICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KLQotLi4gY2xhc3M6OiBTZXQKLSAgICAgICAgICAgTXV0YWJsZVNldAotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KLQotLi4gY2xhc3M6OiBNYXBwaW5nCi0gICAgICAgICAgIE11dGFibGVNYXBwaW5nCi0KLSAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KLQotLi4gY2xhc3M6OiBNYXBwaW5nVmlldwotICAgICAgICAgICBJdGVtc1ZpZXcKLSAgICAgICAgICAgS2V5c1ZpZXcKLSAgICAgICAgICAgVmFsdWVzVmlldwotCi0gICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KLQotCi1UaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKLXBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgotCi0gICAgc2l6ZSA9IE5vbmUKLSAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6Ci0gICAgICAgIHNpemUgPSBsZW4obXl2YXIpCi0KLVNldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKLWNsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKLXRoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZwotYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCi1UaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKLTptZXRoOmBpc2Rpc2pvaW50YCA6OgotCi0gICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6Ci0gICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCi0gICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCi0gICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgotICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQotICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKLSAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKLSAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCi0gICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKLSAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgotICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCi0gICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCi0KLSAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKLSAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKLSAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKLQotTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46Ci0KLSgxKQotICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAotICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCi0gICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCi0gICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAotICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KLSAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKLSAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCi0gICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQotICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCi0KLSgyKQotICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCi0gICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCi0gICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KLQotKDMpCi0gICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKLSAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCi0gICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKLSAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQotICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgotCi0uLiBzZWVhbHNvOjoKLQotICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCi0gICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KLQotICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIHN0cmluZyBvciBhIFVuaWNvZGUgc3RyaW5nIG9iamVjdC4gIFRoZSBpbnN0YW5jZSdzCisgICAgY29udGVudCBpcyBrZXB0IGluIGEgcmVndWxhciBzdHJpbmcgb2JqZWN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUKKyAgICA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlclN0cmluZ2AgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MKKyAgICBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKnNlcXVlbmNlKi4gIFRoZSAqc2VxdWVuY2UqIGNhbgorICAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKKyAgICBzdWJjbGFzcykgb3IgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyB1c2luZworICAgIHRoZSBidWlsdC1pbiA6ZnVuYzpgc3RyYCBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDJkYWUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVuY3kucnN0CkBAIC0wLDAgKzEsMzIgQEAKKy4uIF9jb25jdXJyZW5jeToKKworKioqKioqKioqKioqKioqKioqKioKK0NvbmN1cnJlbnQgRXhlY3V0aW9uCisqKioqKioqKioqKioqKioqKioqKgorCitUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgc3VwcG9ydCBmb3IgY29uY3VycmVudAorZXhlY3V0aW9uIG9mIGNvZGUuIFRoZSBhcHByb3ByaWF0ZSBjaG9pY2Ugb2YgdG9vbCB3aWxsIGRlcGVuZCBvbiB0aGUKK3Rhc2sgdG8gYmUgZXhlY3V0ZWQgKENQVSBib3VuZCB2cyBJTyBib3VuZCkgYW5kIHByZWZlcnJlZCBzdHlsZSBvZgorZGV2ZWxvcG1lbnQgKGV2ZW50IGRyaXZlbiBjb29wZXJhdGl2ZSBtdWx0aXRhc2tpbmcgdnMgcHJlZW1wdGl2ZQorbXVsdGl0YXNraW5nKSBIZXJlJ3MgYW4gb3ZlcnZpZXc6CisKKworLi4gdG9jdHJlZTo6CisKKyAgIHRocmVhZGluZy5yc3QKKyAgIG11bHRpcHJvY2Vzc2luZy5yc3QKKyAgIGNvbmN1cnJlbnQucnN0CisgICBjb25jdXJyZW50LmZ1dHVyZXMucnN0CisgICBzdWJwcm9jZXNzLnJzdAorICAgc2NoZWQucnN0CisgICBxdWV1ZS5yc3QKKyAgIHNlbGVjdC5yc3QKKworCitUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0IG1vZHVsZXMgZm9yIHNvbWUgb2YgdGhlIGFib3ZlIHNlcnZpY2VzOgorCisuLiB0b2N0cmVlOjoKKworICAgZHVtbXlfdGhyZWFkaW5nLnJzdAorICAgX3RocmVhZC5yc3QKKyAgIF9kdW1teV90aHJlYWQucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAppbmRleCBlZWUyMjg1Li43ZWQ5OWQ1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKQEAgLTEzNiwyMCArMTM2LDIzIEBACiAgICAgICAgICAgICdodHRwOi8vd3d3LmJiYy5jby51ay8nLAogICAgICAgICAgICAnaHR0cDovL3NvbWUtbWFkZS11cC1kb21haW4uY29tLyddCiAKKyAgICMgUmV0cmlldmUgYSBzaW5nbGUgcGFnZSBhbmQgcmVwb3J0IHRoZSB1cmwgYW5kIGNvbnRlbnRzCiAgICBkZWYgbG9hZF91cmwodXJsLCB0aW1lb3V0KToKLSAgICAgICByZXR1cm4gdXJsbGliLnJlcXVlc3QudXJsb3Blbih1cmwsIHRpbWVvdXQ9dGltZW91dCkucmVhZCgpCisgICAgICAgY29ubiA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4odXJsLCB0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgcmV0dXJuIGNvbm4ucmVhZGFsbCgpCiAKKyAgICMgV2UgY2FuIHVzZSBhIHdpdGggc3RhdGVtZW50IHRvIGVuc3VyZSB0aHJlYWRzIGFyZSBjbGVhbmVkIHVwIHByb21wdGx5CiAgICB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9NSkgYXMgZXhlY3V0b3I6Ci0gICAgICAgZnV0dXJlX3RvX3VybCA9IGRpY3QoKGV4ZWN1dG9yLnN1Ym1pdChsb2FkX3VybCwgdXJsLCA2MCksIHVybCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdXJsIGluIFVSTFMpCi0KKyAgICAgICAjIFN0YXJ0IHRoZSBsb2FkIG9wZXJhdGlvbnMgYW5kIG1hcmsgZWFjaCBmdXR1cmUgd2l0aCBpdHMgVVJMCisgICAgICAgZnV0dXJlX3RvX3VybCA9IHtleGVjdXRvci5zdWJtaXQobG9hZF91cmwsIHVybCwgNjApOnVybCBmb3IgdXJsIGluIFVSTFN9CiAgICAgICAgZm9yIGZ1dHVyZSBpbiBjb25jdXJyZW50LmZ1dHVyZXMuYXNfY29tcGxldGVkKGZ1dHVyZV90b191cmwpOgogICAgICAgICAgICB1cmwgPSBmdXR1cmVfdG9fdXJsW2Z1dHVyZV0KLSAgICAgICAgICAgaWYgZnV0dXJlLmV4Y2VwdGlvbigpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgcHJpbnQoJyVyIGdlbmVyYXRlZCBhbiBleGNlcHRpb246ICVzJyAlICh1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgIGRhdGEgPSBmdXR1cmUucmVzdWx0KCkKKyAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICBwcmludCgnJXIgZ2VuZXJhdGVkIGFuIGV4Y2VwdGlvbjogJXMnICUgKHVybCwgZXhjKSkKICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihmdXR1cmUucmVzdWx0KCkpKSkKKyAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihkYXRhKSkpCiAKIAogUHJvY2Vzc1Bvb2xFeGVjdXRvcgpAQCAtMTcwLDYgKzE3MywxMiBAQAogICAgb2YgYXQgbW9zdCAqbWF4X3dvcmtlcnMqIHByb2Nlc3Nlcy4gIElmICptYXhfd29ya2VycyogaXMgYGBOb25lYGAgb3Igbm90CiAgICBnaXZlbiwgaXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBvbiB0aGUgbWFjaGluZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFdoZW4gb25lIG9mIHRoZSB3b3JrZXIgcHJvY2Vzc2VzIHRlcm1pbmF0ZXMgYWJydXB0bHksIGEKKyAgICAgIDpleGM6YEJyb2tlblByb2Nlc3NQb29sYCBlcnJvciBpcyBub3cgcmFpc2VkLiAgUHJldmlvdXNseSwgYmVoYXZpb3VyCisgICAgICB3YXMgdW5kZWZpbmVkIGJ1dCBvcGVyYXRpb25zIG9uIHRoZSBleGVjdXRvciBvciBpdHMgZnV0dXJlcyB3b3VsZCBvZnRlbgorICAgICAgZnJlZXplIG9yIGRlYWRsb2NrLgorCiAKIC4uIF9wcm9jZXNzcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKQEAgLTM3MSwzICszODAsMTYgQEAKICAgIDpwZXA6YDMxNDhgIC0tIGZ1dHVyZXMgLSBleGVjdXRlIGNvbXB1dGF0aW9ucyBhc3luY2hyb25vdXNseQogICAgICAgVGhlIHByb3Bvc2FsIHdoaWNoIGRlc2NyaWJlZCB0aGlzIGZlYXR1cmUgZm9yIGluY2x1c2lvbiBpbiB0aGUgUHl0aG9uCiAgICAgICBzdGFuZGFyZCBsaWJyYXJ5LgorCisKK0V4Y2VwdGlvbiBjbGFzc2VzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiBleGNlcHRpb246OiBCcm9rZW5Qcm9jZXNzUG9vbAorCisgICBEZXJpdmVkIGZyb20gOmV4YzpgUnVudGltZUVycm9yYCwgdGhpcyBleGNlcHRpb24gY2xhc3MgaXMgcmFpc2VkIHdoZW4KKyAgIG9uZSBvZiB0aGUgd29ya2VycyBvZiBhIDpjbGFzczpgUHJvY2Vzc1Bvb2xFeGVjdXRvcmAgaGFzIHRlcm1pbmF0ZWQKKyAgIGluIGEgbm9uLWNsZWFuIGZhc2hpb24gKGZvciBleGFtcGxlLCBpZiBpdCB3YXMga2lsbGVkIGZyb20gdGhlIG91dHNpZGUpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWJhNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QKQEAgLTAsMCArMSw2IEBACitUaGUgOm1vZDpgY29uY3VycmVudGAgcGFja2FnZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ3VycmVudGx5LCB0aGVyZSBpcyBvbmx5IG9uZSBtb2R1bGUgaW4gdGhpcyBwYWNrYWdlOgorCisqIDptb2Q6YGNvbmN1cnJlbnQuZnV0dXJlc2AgLS0gTGF1bmNoaW5nIHBhcmFsbGVsIHRhc2tzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CmluZGV4IGU4ZGMxN2YuLmVkOWViYjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CkBAIC0xMiw4ICsxMiwxMSBAQAogc3RhdGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgIGFuZAogOnJlZjpgY29udGV4dC1tYW5hZ2Vyc2AuCiAKLUZ1bmN0aW9ucyBwcm92aWRlZDoKIAorVXRpbGl0aWVzCistLS0tLS0tLS0KKworRnVuY3Rpb25zIGFuZCBjbGFzc2VzIHByb3ZpZGVkOgogCiAuLiBkZWNvcmF0b3I6OiBjb250ZXh0bWFuYWdlcgogCkBAIC0xNjgsNiArMTcxLDM0OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gY2xhc3M6OiBFeGl0U3RhY2soKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IGlzIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzeSB0byBwcm9ncmFtbWF0aWNhbGx5CisgICBjb21iaW5lIG90aGVyIGNvbnRleHQgbWFuYWdlcnMgYW5kIGNsZWFudXAgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IHRob3NlCisgICB0aGF0IGFyZSBvcHRpb25hbCBvciBvdGhlcndpc2UgZHJpdmVuIGJ5IGlucHV0IGRhdGEuCisKKyAgIEZvciBleGFtcGxlLCBhIHNldCBvZiBmaWxlcyBtYXkgZWFzaWx5IGJlIGhhbmRsZWQgaW4gYSBzaW5nbGUgd2l0aAorICAgc3RhdGVtZW50IGFzIGZvbGxvd3M6OgorCisgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgIyBBbGwgb3BlbmVkIGZpbGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAjIGluIHRoZSBsaXN0IHRocm93IGFuIGV4Y2VwdGlvbgorCisgICBFYWNoIGluc3RhbmNlIG1haW50YWlucyBhIHN0YWNrIG9mIHJlZ2lzdGVyZWQgY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBpbgorICAgcmV2ZXJzZSBvcmRlciB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjbG9zZWQgKGVpdGhlciBleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkKKyAgIGF0IHRoZSBlbmQgb2YgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4gTm90ZSB0aGF0IGNhbGxiYWNrcyBhcmUgKm5vdCoKKyAgIGludm9rZWQgaW1wbGljaXRseSB3aGVuIHRoZSBjb250ZXh0IHN0YWNrIGluc3RhbmNlIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgorCisgICBUaGlzIHN0YWNrIG1vZGVsIGlzIHVzZWQgc28gdGhhdCBjb250ZXh0IG1hbmFnZXJzIHRoYXQgYWNxdWlyZSB0aGVpcgorICAgcmVzb3VyY2VzIGluIHRoZWlyIGBgX19pbml0X19gYCBtZXRob2QgKHN1Y2ggYXMgZmlsZSBvYmplY3RzKSBjYW4gYmUKKyAgIGhhbmRsZWQgY29ycmVjdGx5LgorCisgICBTaW5jZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBhcmUgaW52b2tlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlciBvZgorICAgcmVnaXN0cmF0aW9uLCB0aGlzIGVuZHMgdXAgYmVoYXZpbmcgYXMgaWYgbXVsdGlwbGUgbmVzdGVkIDprZXl3b3JkOmB3aXRoYAorICAgc3RhdGVtZW50cyBoYWQgYmVlbiB1c2VkIHdpdGggdGhlIHJlZ2lzdGVyZWQgc2V0IG9mIGNhbGxiYWNrcy4gVGhpcyBldmVuCisgICBleHRlbmRzIHRvIGV4Y2VwdGlvbiBoYW5kbGluZyAtIGlmIGFuIGlubmVyIGNhbGxiYWNrIHN1cHByZXNzZXMgb3IgcmVwbGFjZXMKKyAgIGFuIGV4Y2VwdGlvbiwgdGhlbiBvdXRlciBjYWxsYmFja3Mgd2lsbCBiZSBwYXNzZWQgYXJndW1lbnRzIGJhc2VkIG9uIHRoYXQKKyAgIHVwZGF0ZWQgc3RhdGUuCisKKyAgIFRoaXMgaXMgYSByZWxhdGl2ZWx5IGxvdyBsZXZlbCBBUEkgdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBkZXRhaWxzIG9mCisgICBjb3JyZWN0bHkgdW53aW5kaW5nIHRoZSBzdGFjayBvZiBleGl0IGNhbGxiYWNrcy4gSXQgcHJvdmlkZXMgYSBzdWl0YWJsZQorICAgZm91bmRhdGlvbiBmb3IgaGlnaGVyIGxldmVsIGNvbnRleHQgbWFuYWdlcnMgdGhhdCBtYW5pcHVsYXRlIHRoZSBleGl0CisgICBzdGFjayBpbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyB3YXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZW50ZXJfY29udGV4dChjbSkKKworICAgICAgRW50ZXJzIGEgbmV3IGNvbnRleHQgbWFuYWdlciBhbmQgYWRkcyBpdHMgOm1ldGg6YF9fZXhpdF9fYCBtZXRob2QgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIHRoZSBjb250ZXh0CisgICAgICBtYW5hZ2VyJ3Mgb3duIDptZXRoOmBfX2VudGVyX19gIG1ldGhvZC4KKworICAgICAgVGhlc2UgY29udGV4dCBtYW5hZ2VycyBtYXkgc3VwcHJlc3MgZXhjZXB0aW9ucyBqdXN0IGFzIHRoZXkgbm9ybWFsbHkKKyAgICAgIHdvdWxkIGlmIHVzZWQgZGlyZWN0bHkgYXMgcGFydCBvZiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHB1c2goZXhpdCkKKworICAgICAgQWRkcyBhIGNvbnRleHQgbWFuYWdlcidzIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kIHRvIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgQXMgYGBfX2VudGVyX19gYCBpcyAqbm90KiBpbnZva2VkLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjb3ZlcgorICAgICAgcGFydCBvZiBhbiA6bWV0aDpgX19lbnRlcl9fYCBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgY29udGV4dCBtYW5hZ2VyJ3Mgb3duCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZC4KKworICAgICAgSWYgcGFzc2VkIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBhIGNvbnRleHQgbWFuYWdlciwgdGhpcyBtZXRob2QgYXNzdW1lcworICAgICAgaXQgaXMgYSBjYWxsYmFjayB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBhIGNvbnRleHQgbWFuYWdlcidzCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZCBhbmQgYWRkcyBpdCBkaXJlY3RseSB0byB0aGUgY2FsbGJhY2sgc3RhY2suCisKKyAgICAgIEJ5IHJldHVybmluZyB0cnVlIHZhbHVlcywgdGhlc2UgY2FsbGJhY2tzIGNhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZQorICAgICAgc2FtZSB3YXkgY29udGV4dCBtYW5hZ2VyIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kcyBjYW4uCisKKyAgICAgIFRoZSBwYXNzZWQgaW4gb2JqZWN0IGlzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uLCBhbGxvd2luZyB0aGlzCisgICAgICBtZXRob2QgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworICAgLi4gbWV0aG9kOjogY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgIEFjY2VwdHMgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgYW5kIGFkZHMgaXQgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgVW5saWtlIHRoZSBvdGhlciBtZXRob2RzLCBjYWxsYmFja3MgYWRkZWQgdGhpcyB3YXkgY2Fubm90IHN1cHByZXNzCisgICAgICBleGNlcHRpb25zIChhcyB0aGV5IGFyZSBuZXZlciBwYXNzZWQgdGhlIGV4Y2VwdGlvbiBkZXRhaWxzKS4KKworICAgICAgVGhlIHBhc3NlZCBpbiBjYWxsYmFjayBpcyByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbiwgYWxsb3dpbmcgdGhpcworICAgICAgbWV0aG9kIHRvIGJlIHVzZWQgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IuCisKKyAgIC4uIG1ldGhvZDo6IHBvcF9hbGwoKQorCisgICAgICBUcmFuc2ZlcnMgdGhlIGNhbGxiYWNrIHN0YWNrIHRvIGEgZnJlc2ggOmNsYXNzOmBFeGl0U3RhY2tgIGluc3RhbmNlCisgICAgICBhbmQgcmV0dXJucyBpdC4gTm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIGJ5IHRoaXMgb3BlcmF0aW9uIC0gaW5zdGVhZCwKKyAgICAgIHRoZXkgd2lsbCBub3cgYmUgaW52b2tlZCB3aGVuIHRoZSBuZXcgc3RhY2sgaXMgY2xvc2VkIChlaXRoZXIKKyAgICAgIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBhdCB0aGUgZW5kIG9mIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCkuCisKKyAgICAgIEZvciBleGFtcGxlLCBhIGdyb3VwIG9mIGZpbGVzIGNhbiBiZSBvcGVuZWQgYXMgYW4gImFsbCBvciBub3RoaW5nIgorICAgICAgb3BlcmF0aW9uIGFzIGZvbGxvd3M6OgorCisgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgICAgY2xvc2VfZmlsZXMgPSBzdGFjay5wb3BfYWxsKCkuY2xvc2UKKyAgICAgICAgICAgICAjIElmIG9wZW5pbmcgYW55IGZpbGUgZmFpbHMsIGFsbCBwcmV2aW91c2x5IG9wZW5lZCBmaWxlcyB3aWxsIGJlCisgICAgICAgICAgICAgIyBjbG9zZWQgYXV0b21hdGljYWxseS4gSWYgYWxsIGZpbGVzIGFyZSBvcGVuZWQgc3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICMgdGhleSB3aWxsIHJlbWFpbiBvcGVuIGV2ZW4gYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50IGVuZHMuCisgICAgICAgICAgICAgIyBjbG9zZV9maWxlcygpIGNhbiB0aGVuIGJlIGludm9rZWQgZXhwbGljaXRseSB0byBjbG9zZSB0aGVtIGFsbAorCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIEltbWVkaWF0ZWx5IHVud2luZHMgdGhlIGNhbGxiYWNrIHN0YWNrLCBpbnZva2luZyBjYWxsYmFja3MgaW4gdGhlCisgICAgICByZXZlcnNlIG9yZGVyIG9mIHJlZ2lzdHJhdGlvbi4gRm9yIGFueSBjb250ZXh0IG1hbmFnZXJzIGFuZCBleGl0CisgICAgICBjYWxsYmFja3MgcmVnaXN0ZXJlZCwgdGhlIGFyZ3VtZW50cyBwYXNzZWQgaW4gd2lsbCBpbmRpY2F0ZSB0aGF0IG5vCisgICAgICBleGNlcHRpb24gb2NjdXJyZWQuCisKKworRXhhbXBsZXMgYW5kIFJlY2lwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgc29tZSBleGFtcGxlcyBhbmQgcmVjaXBlcyBmb3IgbWFraW5nIGVmZmVjdGl2ZSB1c2Ugb2YKK3RoZSB0b29scyBwcm92aWRlZCBieSA6bW9kOmBjb250ZXh0bGliYC4KKworCitTdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3IgOmNsYXNzOmBFeGl0U3RhY2tgIGlzIHRoZSBvbmUgZ2l2ZW4gaW4gdGhlIGNsYXNzCitkb2N1bWVudGF0aW9uOiBzdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMgYW5kIG90aGVyCitjbGVhbnVwIG9wZXJhdGlvbnMgaW4gYSBzaW5nbGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlIHZhcmlhYmlsaXR5CittYXkgY29tZSBmcm9tIHRoZSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBuZWVkZWQgYmVpbmcgZHJpdmVuIGJ5IHVzZXIKK2lucHV0IChzdWNoIGFzIG9wZW5pbmcgYSB1c2VyIHNwZWNpZmllZCBjb2xsZWN0aW9uIG9mIGZpbGVzKSwgb3IgZnJvbQorc29tZSBvZiB0aGUgY29udGV4dCBtYW5hZ2VycyBiZWluZyBvcHRpb25hbDo6CisKKyAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gcmVzb3VyY2VzOgorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChyZXNvdXJjZSkKKyAgICAgICAgaWYgbmVlZF9zcGVjaWFsIHJlc291cmNlOgorICAgICAgICAgICAgc3BlY2lhbCA9IGFjcXVpcmVfc3BlY2lhbF9yZXNvdXJjZSgpCisgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyZWxlYXNlX3NwZWNpYWxfcmVzb3VyY2UsIHNwZWNpYWwpCisgICAgICAgICMgUGVyZm9ybSBvcGVyYXRpb25zIHRoYXQgdXNlIHRoZSBhY3F1aXJlZCByZXNvdXJjZXMKKworQXMgc2hvd24sIDpjbGFzczpgRXhpdFN0YWNrYCBhbHNvIG1ha2VzIGl0IHF1aXRlIGVhc3kgdG8gdXNlIDprZXl3b3JkOmB3aXRoYAorc3RhdGVtZW50cyB0byBtYW5hZ2UgYXJiaXRyYXJ5IHJlc291cmNlcyB0aGF0IGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgdGhlCitjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisKKworU2ltcGxpZnlpbmcgc3VwcG9ydCBmb3Igc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0luIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGEgc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlciwgOmNsYXNzOmBFeGl0U3RhY2tgCitpbnN0YW5jZXMgY2FuIGJlIHVzZWQgYXMgYSAiZG8gbm90aGluZyIgY29udGV4dCBtYW5hZ2VyLCBhbGxvd2luZyBhIGNvbnRleHQKK21hbmFnZXIgdG8gZWFzaWx5IGJlIG9taXR0ZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mCit0aGUgc291cmNlIGNvZGU6OgorCisgICBkZWYgZGVidWdfdHJhY2UoZGV0YWlscyk6CisgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICByZXR1cm4gVHJhY2VDb250ZXh0KGRldGFpbHMpCisgICAgICAgIyBEb24ndCBkbyBhbnl0aGluZyBzcGVjaWFsIHdpdGggdGhlIGNvbnRleHQgaW4gcmVsZWFzZSBtb2RlCisgICAgICAgcmV0dXJuIEV4aXRTdGFjaygpCisKKyAgIHdpdGggZGVidWdfdHJhY2UoKToKKyAgICAgICAjIFN1aXRlIGlzIHRyYWNlZCBpbiBkZWJ1ZyBtb2RlLCBidXQgcnVucyBub3JtYWxseSBvdGhlcndpc2UKKworCitDYXRjaGluZyBleGNlcHRpb25zIGZyb20gYGBfX2VudGVyX19gYCBtZXRob2RzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0l0IGlzIG9jY2FzaW9uYWxseSBkZXNpcmFibGUgdG8gY2F0Y2ggZXhjZXB0aW9ucyBmcm9tIGFuIGBgX19lbnRlcl9fYGAKK21ldGhvZCBpbXBsZW1lbnRhdGlvbiwgKndpdGhvdXQqIGluYWR2ZXJ0ZW50bHkgY2F0Y2hpbmcgZXhjZXB0aW9ucyBmcm9tCit0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IG9yIHRoZSBjb250ZXh0IG1hbmFnZXIncyBgYF9fZXhpdF9fYGAKK21ldGhvZC4gQnkgdXNpbmcgOmNsYXNzOmBFeGl0U3RhY2tgIHRoZSBzdGVwcyBpbiB0aGUgY29udGV4dCBtYW5hZ2VtZW50Citwcm90b2NvbCBjYW4gYmUgc2VwYXJhdGVkIHNsaWdodGx5IGluIG9yZGVyIHRvIGFsbG93IHRoaXM6OgorCisgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICB0cnk6CisgICAgICAgeCA9IHN0YWNrLmVudGVyX2NvbnRleHQoY20pCisgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICMgaGFuZGxlIF9fZW50ZXJfXyBleGNlcHRpb24KKyAgIGVsc2U6CisgICAgICAgd2l0aCBzdGFjazoKKyAgICAgICAgICAgIyBIYW5kbGUgbm9ybWFsIGNhc2UKKworQWN0dWFsbHkgbmVlZGluZyB0byBkbyB0aGlzIGlzIGxpa2VseSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1bmRlcmx5aW5nIEFQSQorc2hvdWxkIGJlIHByb3ZpZGluZyBhIGRpcmVjdCByZXNvdXJjZSBtYW5hZ2VtZW50IGludGVyZmFjZSBmb3IgdXNlIHdpdGgKKzprZXl3b3JkOmB0cnlgLzprZXl3b3JkOmBleGNlcHRgLzprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnRzLCBidXQgbm90CithbGwgQVBJcyBhcmUgd2VsbCBkZXNpZ25lZCBpbiB0aGF0IHJlZ2FyZC4gV2hlbiBhIGNvbnRleHQgbWFuYWdlciBpcyB0aGUKK29ubHkgcmVzb3VyY2UgbWFuYWdlbWVudCBBUEkgcHJvdmlkZWQsIHRoZW4gOmNsYXNzOmBFeGl0U3RhY2tgIGNhbiBtYWtlIGl0CitlYXNpZXIgdG8gaGFuZGxlIHZhcmlvdXMgc2l0dWF0aW9ucyB0aGF0IGNhbid0IGJlIGhhbmRsZWQgZGlyZWN0bHkgaW4gYQorOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKworCitDbGVhbmluZyB1cCBpbiBhbiBgYF9fZW50ZXJfX2BgIGltcGxlbWVudGF0aW9uCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0FzIG5vdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIDptZXRoOmBFeGl0U3RhY2sucHVzaGAsIHRoaXMKK21ldGhvZCBjYW4gYmUgdXNlZnVsIGluIGNsZWFuaW5nIHVwIGFuIGFscmVhZHkgYWxsb2NhdGVkIHJlc291cmNlIGlmIGxhdGVyCitzdGVwcyBpbiB0aGUgOm1ldGg6YF9fZW50ZXJfX2AgaW1wbGVtZW50YXRpb24gZmFpbC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgZG9pbmcgdGhpcyBmb3IgYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBhY2NlcHRzIHJlc291cmNlCithY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYW4gb3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbiwKK2FuZCBtYXBzIHRoZW0gdG8gdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEV4aXRTdGFjaworCisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIob2JqZWN0KToKKworICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3F1aXJlX3Jlc291cmNlLCByZWxlYXNlX3Jlc291cmNlLCBjaGVja19yZXNvdXJjZV9vaz1Ob25lKToKKyAgICAgICAgICAgc2VsZi5hY3F1aXJlX3Jlc291cmNlID0gYWNxdWlyZV9yZXNvdXJjZQorICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UgPSByZWxlYXNlX3Jlc291cmNlCisgICAgICAgICAgIGlmIGNoZWNrX3Jlc291cmNlX29rIGlzIE5vbmU6CisgICAgICAgICAgICAgICBkZWYgY2hlY2tfcmVzb3VyY2Vfb2socmVzb3VyY2UpOgorICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgIHNlbGYuY2hlY2tfcmVzb3VyY2Vfb2sgPSBjaGVja19yZXNvdXJjZV9vaworCisgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAgZGVmIF9jbGVhbnVwX29uX2Vycm9yKHNlbGYpOgorICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgc3RhY2sucHVzaChzZWxmKQorICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICMgVGhlIHZhbGlkYXRpb24gY2hlY2sgcGFzc2VkIGFuZCBkaWRuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAjIEFjY29yZGluZ2x5LCB3ZSB3YW50IHRvIGtlZXAgdGhlIHJlc291cmNlLCBhbmQgcGFzcyBpdAorICAgICAgICAgICAgICAgIyBiYWNrIHRvIG91ciBjYWxsZXIKKyAgICAgICAgICAgICAgIHN0YWNrLnBvcF9hbGwoKQorCisgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgcmVzb3VyY2UgPSBzZWxmLmFjcXVpcmVfcmVzb3VyY2UoKQorICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfb25fZXJyb3IoKToKKyAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrX3Jlc291cmNlX29rKHJlc291cmNlKToKKyAgICAgICAgICAgICAgICAgICBtc2cgPSAiRmFpbGVkIHZhbGlkYXRpb24gZm9yIHshcn0iCisgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1zZy5mb3JtYXQocmVzb3VyY2UpKQorICAgICAgICAgICByZXR1cm4gcmVzb3VyY2UKKworICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAjIFdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGFueSBvZiBvdXIgcmVzb3VyY2UgcmVsZWFzZSBsb2dpYworICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UoKQorCisKK1JlcGxhY2luZyBhbnkgdXNlIG9mIGBgdHJ5LWZpbmFsbHlgYCBhbmQgZmxhZyB2YXJpYWJsZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworQSBwYXR0ZXJuIHlvdSB3aWxsIHNvbWV0aW1lcyBzZWUgaXMgYSBgYHRyeS1maW5hbGx5YGAgc3RhdGVtZW50IHdpdGggYSBmbGFnCit2YXJpYWJsZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgYm9keSBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHNob3VsZAorYmUgZXhlY3V0ZWQuIEluIGl0cyBzaW1wbGVzdCBmb3JtICh0aGF0IGNhbid0IGFscmVhZHkgYmUgaGFuZGxlZCBqdXN0IGJ5Cit1c2luZyBhbiBgYGV4Y2VwdGBgIGNsYXVzZSBpbnN0ZWFkKSwgaXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpczo6CisKKyAgIGNsZWFudXBfbmVlZGVkID0gVHJ1ZQorICAgdHJ5OgorICAgICAgIHJlc3VsdCA9IHBlcmZvcm1fb3BlcmF0aW9uKCkKKyAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgIGNsZWFudXBfbmVlZGVkID0gRmFsc2UKKyAgIGZpbmFsbHk6CisgICAgICAgaWYgY2xlYW51cF9uZWVkZWQ6CisgICAgICAgICAgIGNsZWFudXBfcmVzb3VyY2VzKCkKKworQXMgd2l0aCBhbnkgYGB0cnlgYCBzdGF0ZW1lbnQgYmFzZWQgY29kZSwgdGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yCitkZXZlbG9wbWVudCBhbmQgcmV2aWV3LCBiZWNhdXNlIHRoZSBzZXR1cCBjb2RlIGFuZCB0aGUgY2xlYW51cCBjb2RlIGNhbiBlbmQKK3VwIGJlaW5nIHNlcGFyYXRlZCBieSBhcmJpdHJhcmlseSBsb25nIHNlY3Rpb25zIG9mIGNvZGUuCisKKzpjbGFzczpgRXhpdFN0YWNrYCBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbnN0ZWFkIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yCitleGVjdXRpb24gYXQgdGhlIGVuZCBvZiBhIGBgd2l0aGBgIHN0YXRlbWVudCwgYW5kIHRoZW4gbGF0ZXIgZGVjaWRlIHRvIHNraXAKK2V4ZWN1dGluZyB0aGF0IGNhbGxiYWNrOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBzdGFjay5jYWxsYmFjayhjbGVhbnVwX3Jlc291cmNlcykKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBzdGFjay5wb3BfYWxsKCkKKworVGhpcyBhbGxvd3MgdGhlIGludGVuZGVkIGNsZWFudXAgdXAgYmVoYXZpb3VyIHRvIGJlIG1hZGUgZXhwbGljaXQgdXAgZnJvbnQsCityYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSBmbGFnIHZhcmlhYmxlLgorCitJZiBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gdXNlcyB0aGlzIHBhdHRlcm4gYSBsb3QsIGl0IGNhbiBiZSBzaW1wbGlmaWVkCitldmVuIGZ1cnRoZXIgYnkgbWVhbnMgb2YgYSBzbWFsbCBoZWxwZXIgY2xhc3M6OgorCisgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IEV4aXRTdGFjaworCisgICBjbGFzcyBDYWxsYmFjayhFeGl0U3RhY2spOgorICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsYmFjaywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgIHN1cGVyKENhbGxiYWNrLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgICAgIHNlbGYuY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICAgICBzZWxmLnBvcF9hbGwoKQorCisgICB3aXRoIENhbGxiYWNrKGNsZWFudXBfcmVzb3VyY2VzKSBhcyBjYjoKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBjYi5jYW5jZWwoKQorCitJZiB0aGUgcmVzb3VyY2UgY2xlYW51cCBpc24ndCBhbHJlYWR5IG5lYXRseSBidW5kbGVkIGludG8gYSBzdGFuZGFsb25lCitmdW5jdGlvbiwgdGhlbiBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byB1c2UgdGhlIGRlY29yYXRvciBmb3JtIG9mCis6bWV0aDpgRXhpdFN0YWNrLmNhbGxiYWNrYCB0byBkZWNsYXJlIHRoZSByZXNvdXJjZSBjbGVhbnVwIGluCithZHZhbmNlOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBAc3RhY2suY2FsbGJhY2sKKyAgICAgICBkZWYgY2xlYW51cF9yZXNvdXJjZXMoKToKKyAgICAgICAgICAgLi4uCisgICAgICAgcmVzdWx0ID0gcGVyZm9ybV9vcGVyYXRpb24oKQorICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgc3RhY2sucG9wX2FsbCgpCisKK0R1ZSB0byB0aGUgd2F5IHRoZSBkZWNvcmF0b3IgcHJvdG9jb2wgd29ya3MsIGEgY2FsbGJhY2sgZnVuY3Rpb24KK2RlY2xhcmVkIHRoaXMgd2F5IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXJzLiBJbnN0ZWFkLCBhbnkgcmVzb3VyY2VzIHRvCitiZSByZWxlYXNlZCBtdXN0IGJlIGFjY2Vzc2VkIGFzIGNsb3N1cmUgdmFyaWFibGVzCisKKworVXNpbmcgYSBjb250ZXh0IG1hbmFnZXIgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgQ29udGV4dERlY29yYXRvcmAgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGEgY29udGV4dCBtYW5hZ2VyIGluCitib3RoIGFuIG9yZGluYXJ5IGBgd2l0aGBgIHN0YXRlbWVudCBhbmQgYWxzbyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworRm9yIGV4YW1wbGUsIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gd3JhcCBmdW5jdGlvbnMgb3IgZ3JvdXBzIG9mIHN0YXRlbWVudHMKK3dpdGggYSBsb2dnZXIgdGhhdCBjYW4gdHJhY2sgdGhlIHRpbWUgb2YgZW50cnkgYW5kIHRpbWUgb2YgZXhpdC4gIFJhdGhlciB0aGFuCit3cml0aW5nIGJvdGggYSBmdW5jdGlvbiBkZWNvcmF0b3IgYW5kIGEgY29udGV4dCBtYW5hZ2VyIGZvciB0aGUgdGFzaywKK2luaGVyaXRpbmcgZnJvbSA6Y2xhc3M6YENvbnRleHREZWNvcmF0b3JgIHByb3ZpZGVzIGJvdGggY2FwYWJpbGl0aWVzIGluIGEKK3NpbmdsZSBkZWZpbml0aW9uOjoKKworICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgQ29udGV4dERlY29yYXRvcgorICAgIGltcG9ydCBsb2dnaW5nCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTykKKworICAgIGNsYXNzIHRyYWNrX2VudHJ5X2FuZF9leGl0KENvbnRleHREZWNvcmF0b3IpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKK0luc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGFzIGJvdGggYSBjb250ZXh0IG1hbmFnZXI6OgorCisgICAgd2l0aCB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpOgorICAgICAgICBwcmludCgnU29tZSB0aW1lIGNvbnN1bWluZyBhY3Rpdml0eSBnb2VzIGhlcmUnKQorICAgICAgICBsb2FkX3dpZGdldCgpCisKK0FuZCBhbHNvIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yOjoKKworICAgIEB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpCisgICAgZGVmIGFjdGl2aXR5KCk6CisgICAgICAgIHByaW50KCdTb21lIHRpbWUgY29uc3VtaW5nIGFjdGl2aXR5IGdvZXMgaGVyZScpCisgICAgICAgIGxvYWRfd2lkZ2V0KCkKKworTm90ZSB0aGF0IHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsIGxpbWl0YXRpb24gd2hlbiB1c2luZyBjb250ZXh0IG1hbmFnZXJzCithcyBmdW5jdGlvbiBkZWNvcmF0b3JzOiB0aGVyZSdzIG5vIHdheSB0byBhY2Nlc3MgdGhlIHJldHVybiB2YWx1ZSBvZgorOm1ldGg6YF9fZW50ZXJfX2AuIElmIHRoYXQgdmFsdWUgaXMgbmVlZGVkLCB0aGVuIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byB1c2UKK2FuIGV4cGxpY2l0IGBgd2l0aGBgIHN0YXRlbWVudC4KKwogLi4gc2VlYWxzbzo6CiAKICAgIDpwZXA6YDAzNDNgIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvcHlyZWcucnN0IGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKaW5kZXggYTJkMzE2ZS4uNDEwNjFlNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKQEAgLTMyLDYgKzMyLDggQEAKICAgIHJldHVybmVkIGJ5ICpmdW5jdGlvbiogYXQgcGlja2xpbmcgdGltZS4gIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYKICAgICpvYmplY3QqIGlzIGEgY2xhc3Mgb3IgKmNvbnN0cnVjdG9yKiBpcyBub3QgY2FsbGFibGUuCiAKLSAgIFNlZSB0aGUgOm1vZDpgcGlja2xlYCBtb2R1bGUgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgaW50ZXJmYWNlIGV4cGVjdGVkIG9mCi0gICAqZnVuY3Rpb24qIGFuZCAqY29uc3RydWN0b3IqLgotCisgICBTZWUgdGhlIDptb2Q6YHBpY2tsZWAgbW9kdWxlIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGludGVyZmFjZQorICAgZXhwZWN0ZWQgb2YgKmZ1bmN0aW9uKiBhbmQgKmNvbnN0cnVjdG9yKi4gIE5vdGUgdGhhdCB0aGUKKyAgIDphdHRyOmB+cGlja2xlLlBpY2tsZXIuZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSBvZiBhIHBpY2tsZXIKKyAgIG9iamVjdCBvciBzdWJjbGFzcyBvZiA6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCBjYW4gYWxzbyBiZSB1c2VkIGZvcgorICAgZGVjbGFyaW5nIHJlZHVjdGlvbiBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKaW5kZXggMGJlNTcxZS4uYjRjOTBjZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdApAQCAtMTUsOSArMTUsOSBAQAogCiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byB0aGUgOm1hbnBhZ2U6YGNyeXB0KDMpYCByb3V0aW5lLCB3aGljaCBpcwogYSBvbmUtd2F5IGhhc2ggZnVuY3Rpb24gYmFzZWQgdXBvbiBhIG1vZGlmaWVkIERFUyBhbGdvcml0aG07IHNlZSB0aGUgVW5peCBtYW4KLXBhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBhbGxvd2luZyBQeXRob24gc2NyaXB0cyB0bwotYWNjZXB0IHR5cGVkIHBhc3N3b3JkcyBmcm9tIHRoZSB1c2VyLCBvciBhdHRlbXB0aW5nIHRvIGNyYWNrIFVuaXggcGFzc3dvcmRzIHdpdGgKLWEgZGljdGlvbmFyeS4KK3BhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBzdG9yaW5nIGhhc2hlZCBwYXNzd29yZHMKK3NvIHlvdSBjYW4gY2hlY2sgcGFzc3dvcmRzIHdpdGhvdXQgc3RvcmluZyB0aGUgYWN0dWFsIHBhc3N3b3JkLCBvciBhdHRlbXB0aW5nCit0byBjcmFjayBVbml4IHBhc3N3b3JkcyB3aXRoIGEgZGljdGlvbmFyeS4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNyeXB0KDMpCiAKQEAgLTI2LDE1ICsyNiw3NCBAQAogZXh0ZW5zaW9ucyBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2lsbCBhbHNvICBiZSBhdmFpbGFibGUgb24KIHRoaXMgbW9kdWxlLgogCitIYXNoaW5nIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQpCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIDptb2Q6YGNyeXB0YCBtb2R1bGUgZGVmaW5lcyB0aGUgbGlzdCBvZiBoYXNoaW5nIG1ldGhvZHMgKG5vdCBhbGwgbWV0aG9kcworYXJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zKToKKworLi4gZGF0YTo6IE1FVEhPRF9TSEE1MTIKKworICAgQSBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgODYgY2hhcmFjdGVyCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgc3Ryb25nZXN0IG1ldGhvZC4KKworLi4gZGF0YTo6IE1FVEhPRF9TSEEyNTYKKworICAgQW5vdGhlciBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgNDMKKyAgIGNoYXJhY3RlciBoYXNoLgorCisuLiBkYXRhOjogTUVUSE9EX01ENQorCisgICBBbm90aGVyIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IG1ldGhvZCB3aXRoIDggY2hhcmFjdGVyIHNhbHQgYW5kIDIyCisgICBjaGFyYWN0ZXIgaGFzaC4KKworLi4gZGF0YTo6IE1FVEhPRF9DUllQVAorCisgICBUaGUgdHJhZGl0aW9uYWwgbWV0aG9kIHdpdGggYSAyIGNoYXJhY3RlciBzYWx0IGFuZCAxMyBjaGFyYWN0ZXJzIG9mCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgd2Vha2VzdCBtZXRob2QuCisKKworTW9kdWxlIEF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBtZXRob2RzCisKKyAgIEEgbGlzdCBvZiBhdmFpbGFibGUgcGFzc3dvcmQgaGFzaGluZyBhbGdvcml0aG1zLCBhcworICAgYGBjcnlwdC5NRVRIT0RfKmBgIG9iamVjdHMuICBUaGlzIGxpc3QgaXMgc29ydGVkIGZyb20gc3Ryb25nZXN0IHRvCisgICB3ZWFrZXN0LCBhbmQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IGBgY3J5cHQuTUVUSE9EX0NSWVBUYGAuCisKKworTW9kdWxlIEZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorCisuLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQ9Tm9uZSkKIAogICAgKndvcmQqIHdpbGwgdXN1YWxseSBiZSBhIHVzZXIncyBwYXNzd29yZCBhcyB0eXBlZCBhdCBhIHByb21wdCBvciAgaW4gYSBncmFwaGljYWwKLSAgIGludGVyZmFjZS4gICpzYWx0KiBpcyB1c3VhbGx5IGEgcmFuZG9tIHR3by1jaGFyYWN0ZXIgc3RyaW5nIHdoaWNoIHdpbGwgYmUgdXNlZAotICAgdG8gcGVydHVyYiB0aGUgREVTIGFsZ29yaXRobSBpbiBvbmUgb2YgNDA5NiB3YXlzLiAgVGhlIGNoYXJhY3RlcnMgaW4gKnNhbHQqIG11c3QKLSAgIGJlIGluIHRoZSBzZXQgYGBbLi9hLXpBLVowLTldYGAuICBSZXR1cm5zIHRoZSBoYXNoZWQgcGFzc3dvcmQgYXMgYSBzdHJpbmcsIHdoaWNoCi0gICB3aWxsIGJlIGNvbXBvc2VkIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgc2FtZSBhbHBoYWJldCBhcyB0aGUgc2FsdCAodGhlIGZpcnN0IHR3bwotICAgY2hhcmFjdGVycyByZXByZXNlbnQgdGhlIHNhbHQgaXRzZWxmKS4KKyAgIGludGVyZmFjZS4gIFRoZSBvcHRpb25hbCAqc2FsdCogaXMgZWl0aGVyIGEgc3RyaW5nIGFzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBta3NhbHRgLCBvbmUgb2YgdGhlIGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgKHRob3VnaCBub3QgYWxsCisgICBtYXkgYmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMpLCBvciBhIGZ1bGwgZW5jcnlwdGVkIHBhc3N3b3JkCisgICBpbmNsdWRpbmcgc2FsdCwgYXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4gIElmICpzYWx0KiBpcyBub3QKKyAgIHByb3ZpZGVkLCB0aGUgc3Ryb25nZXN0IG1ldGhvZCB3aWxsIGJlIHVzZWQgKGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgbWV0aG9kc2AuCisKKyAgIENoZWNraW5nIGEgcGFzc3dvcmQgaXMgdXN1YWxseSBkb25lIGJ5IHBhc3NpbmcgdGhlIHBsYWluLXRleHQgcGFzc3dvcmQKKyAgIGFzICp3b3JkKiBhbmQgdGhlIGZ1bGwgcmVzdWx0cyBvZiBhIHByZXZpb3VzIDpmdW5jOmBjcnlwdGAgY2FsbCwKKyAgIHdoaWNoIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcmVzdWx0cyBvZiB0aGlzIGNhbGwuCisKKyAgICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTYgY2hhcmFjdGVyIHN0cmluZywgcG9zc2libHkgcHJlZml4ZWQgd2l0aAorICAgYGAkZGlnaXQkYGAgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZCkgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlCisgICBlbmNyeXB0aW9uIGFsZ29yaXRobS4gIFRoZSBjaGFyYWN0ZXJzIGluICpzYWx0KiBtdXN0IGJlIGluIHRoZSBzZXQKKyAgIGBgWy4vYS16QS1aMC05XWBgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgTW9kdWxhciBDcnlwdCBGb3JtYXQgd2hpY2gKKyAgIHByZWZpeGVzIGEgYGAkZGlnaXQkYGAuCisKKyAgIFJldHVybnMgdGhlIGhhc2hlZCBwYXNzd29yZCBhcyBhIHN0cmluZywgd2hpY2ggd2lsbCBiZSBjb21wb3NlZCBvZgorICAgY2hhcmFjdGVycyBmcm9tIHRoZSBzYW1lIGFscGhhYmV0IGFzIHRoZSBzYWx0LgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogY3J5cHQoMykKIApAQCAtNDIsMTggKzEwMSw1MiBAQAogICAgZGlmZmVyZW50IHNpemVzIGluIHRoZSAqc2FsdCosIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSAgdGhlIGZ1bGwgY3J5cHRlZAogICAgcGFzc3dvcmQgYXMgc2FsdCB3aGVuIGNoZWNraW5nIGZvciBhIHBhc3N3b3JkLgogCi1BIHNpbXBsZSBleGFtcGxlIGlsbHVzdHJhdGluZyB0eXBpY2FsIHVzZTo6CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWNjZXB0IGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgaW4gYWRkaXRpb24gdG8gc3RyaW5ncyBmb3IgKnNhbHQqLgogCi0gICBpbXBvcnQgY3J5cHQsIGdldHBhc3MsIHB3ZAorCisuLiBmdW5jdGlvbjo6IG1rc2FsdChtZXRob2Q9Tm9uZSkKKworICAgUmV0dXJuIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIHNhbHQgb2YgdGhlIHNwZWNpZmllZCBtZXRob2QuICBJZiBubworICAgKm1ldGhvZCogaXMgZ2l2ZW4sIHRoZSBzdHJvbmdlc3QgbWV0aG9kIGF2YWlsYWJsZSBhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YG1ldGhvZHNgIGlzIHVzZWQuCisKKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgZWl0aGVyIG9mIDIgY2hhcmFjdGVycyBpbiBsZW5ndGggZm9yCisgICBgYGNyeXB0Lk1FVEhPRF9DUllQVGBgLCBvciAxOSBjaGFyYWN0ZXJzIHN0YXJ0aW5nIHdpdGggYGAkZGlnaXQkYGAgYW5kCisgICAxNiByYW5kb20gY2hhcmFjdGVycyBmcm9tIHRoZSBzZXQgYGBbLi9hLXpBLVowLTldYGAsIHN1aXRhYmxlIGZvcgorICAgcGFzc2luZyBhcyB0aGUgKnNhbHQqIGFyZ3VtZW50IHRvIDpmdW5jOmBjcnlwdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCitFeGFtcGxlcworLS0tLS0tLS0KKworQSBzaW1wbGUgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdHlwaWNhbCB1c2UgKGEgY29uc3RhbnQtdGltZSBjb21wYXJpc29uCitvcGVyYXRpb24gaXMgbmVlZGVkIHRvIGxpbWl0IGV4cG9zdXJlIHRvIHRpbWluZyBhdHRhY2tzLgorOmZ1bmM6YGhtYWMuY29tcGFyZV9kaWdlc3RgIGlzIHN1aXRhYmxlIGZvciB0aGlzIHB1cnBvc2UpOjoKKworICAgaW1wb3J0IHB3ZAorICAgaW1wb3J0IGNyeXB0CisgICBpbXBvcnQgZ2V0cGFzcworICAgZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2hhc2gKIAogICAgZGVmIGxvZ2luKCk6Ci0gICAgICAgdXNlcm5hbWUgPSBpbnB1dCgnUHl0aG9uIGxvZ2luOicpCisgICAgICAgdXNlcm5hbWUgPSBpbnB1dCgnUHl0aG9uIGxvZ2luOiAnKQogICAgICAgIGNyeXB0ZWRwYXNzd2QgPSBwd2QuZ2V0cHduYW0odXNlcm5hbWUpWzFdCiAgICAgICAgaWYgY3J5cHRlZHBhc3N3ZDoKICAgICAgICAgICAgaWYgY3J5cHRlZHBhc3N3ZCA9PSAneCcgb3IgY3J5cHRlZHBhc3N3ZCA9PSAnKic6Ci0gICAgICAgICAgICAgICByYWlzZSAiU29ycnksIGN1cnJlbnRseSBubyBzdXBwb3J0IGZvciBzaGFkb3cgcGFzc3dvcmRzIgorICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbm8gc3VwcG9ydCBmb3Igc2hhZG93IHBhc3N3b3JkcycpCiAgICAgICAgICAgIGNsZWFydGV4dCA9IGdldHBhc3MuZ2V0cGFzcygpCi0gICAgICAgICAgIHJldHVybiBjcnlwdC5jcnlwdChjbGVhcnRleHQsIGNyeXB0ZWRwYXNzd2QpID09IGNyeXB0ZWRwYXNzd2QKKyAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVfaGFzaChjcnlwdC5jcnlwdChjbGVhcnRleHQsIGNyeXB0ZWRwYXNzd2QpLCBjcnlwdGVkcGFzc3dkKQogICAgICAgIGVsc2U6Ci0gICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgIHJldHVybiBUcnVlCiAKK1RvIGdlbmVyYXRlIGEgaGFzaCBvZiBhIHBhc3N3b3JkIHVzaW5nIHRoZSBzdHJvbmdlc3QgYXZhaWxhYmxlIG1ldGhvZCBhbmQKK2NoZWNrIGl0IGFnYWluc3QgdGhlIG9yaWdpbmFsOjoKKworICAgaW1wb3J0IGNyeXB0CisgICBmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0IGFzIGNvbXBhcmVfaGFzaAorCisgICBoYXNoZWQgPSBjcnlwdC5jcnlwdChwbGFpbnRleHQpCisgICBpZiBub3QgY29tcGFyZV9oYXNoKGhhc2hlZCwgY3J5cHQuY3J5cHQocGxhaW50ZXh0LCBoYXNoZWQpKToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhhc2hlZCB2ZXJzaW9uIGRvZXNuJ3QgdmFsaWRhdGUgYWdhaW5zdCBvcmlnaW5hbCIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAppbmRleCBhMjMzNTYxLi40NjllZGU0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKQEAgLTgsNiArOCw3IEBACiAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgaW1wbGVtZW50IHZhcmlvdXMgYWxnb3JpdGhtcyBvZiBhCiBjcnlwdG9ncmFwaGljIG5hdHVyZS4gIFRoZXkgYXJlIGF2YWlsYWJsZSBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgaW5zdGFsbGF0aW9uLgorT24gVW5peCBzeXN0ZW1zLCB0aGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBtYXkgYWxzbyBiZSBhdmFpbGFibGUuCiBIZXJlJ3MgYW4gb3ZlcnZpZXc6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggZDhkZjdmYy4uNGYxOWNlZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC0xMSwxNSArMTEsMTUgQEAKICAgIHBhaXI6IGRhdGE7IHRhYnVsYXIKIAogVGhlIHNvLWNhbGxlZCBDU1YgKENvbW1hIFNlcGFyYXRlZCBWYWx1ZXMpIGZvcm1hdCBpcyB0aGUgbW9zdCBjb21tb24gaW1wb3J0IGFuZAotZXhwb3J0IGZvcm1hdCBmb3Igc3ByZWFkc2hlZXRzIGFuZCBkYXRhYmFzZXMuICBUaGVyZSBpcyBubyAiQ1NWIHN0YW5kYXJkIiwgc28KLXRoZSBmb3JtYXQgaXMgb3BlcmF0aW9uYWxseSBkZWZpbmVkIGJ5IHRoZSBtYW55IGFwcGxpY2F0aW9ucyB3aGljaCByZWFkIGFuZAotd3JpdGUgaXQuICBUaGUgbGFjayBvZiBhIHN0YW5kYXJkIG1lYW5zIHRoYXQgc3VidGxlIGRpZmZlcmVuY2VzIG9mdGVuIGV4aXN0IGluCi10aGUgZGF0YSBwcm9kdWNlZCBhbmQgY29uc3VtZWQgYnkgZGlmZmVyZW50IGFwcGxpY2F0aW9ucy4gIFRoZXNlIGRpZmZlcmVuY2VzIGNhbgotbWFrZSBpdCBhbm5veWluZyB0byBwcm9jZXNzIENTViBmaWxlcyBmcm9tIG11bHRpcGxlIHNvdXJjZXMuICBTdGlsbCwgd2hpbGUgdGhlCi1kZWxpbWl0ZXJzIGFuZCBxdW90aW5nIGNoYXJhY3RlcnMgdmFyeSwgdGhlIG92ZXJhbGwgZm9ybWF0IGlzIHNpbWlsYXIgZW5vdWdoCi10aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGEgc2luZ2xlIG1vZHVsZSB3aGljaCBjYW4gZWZmaWNpZW50bHkgbWFuaXB1bGF0ZQotc3VjaCBkYXRhLCBoaWRpbmcgdGhlIGRldGFpbHMgb2YgcmVhZGluZyBhbmQgd3JpdGluZyB0aGUgZGF0YSBmcm9tIHRoZQotcHJvZ3JhbW1lci4KK2V4cG9ydCBmb3JtYXQgZm9yIHNwcmVhZHNoZWV0cyBhbmQgZGF0YWJhc2VzLiAgQ1NWIGZvcm1hdCB3YXMgdXNlZCBmb3IgbWFueQoreWVhcnMgcHJpb3IgdG8gYXR0ZW1wdHMgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCBpbiBhIHN0YW5kYXJkaXplZCB3YXkgaW4KKzpyZmM6YDQxODBgLiAgVGhlIGxhY2sgb2YgYSB3ZWxsLWRlZmluZWQgc3RhbmRhcmQgbWVhbnMgdGhhdCBzdWJ0bGUgZGlmZmVyZW5jZXMKK29mdGVuIGV4aXN0IGluIHRoZSBkYXRhIHByb2R1Y2VkIGFuZCBjb25zdW1lZCBieSBkaWZmZXJlbnQgYXBwbGljYXRpb25zLiAgVGhlc2UKK2RpZmZlcmVuY2VzIGNhbiBtYWtlIGl0IGFubm95aW5nIHRvIHByb2Nlc3MgQ1NWIGZpbGVzIGZyb20gbXVsdGlwbGUgc291cmNlcy4KK1N0aWxsLCB3aGlsZSB0aGUgZGVsaW1pdGVycyBhbmQgcXVvdGluZyBjaGFyYWN0ZXJzIHZhcnksIHRoZSBvdmVyYWxsIGZvcm1hdCBpcworc2ltaWxhciBlbm91Z2ggdGhhdCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSBhIHNpbmdsZSBtb2R1bGUgd2hpY2ggY2FuCitlZmZpY2llbnRseSBtYW5pcHVsYXRlIHN1Y2ggZGF0YSwgaGlkaW5nIHRoZSBkZXRhaWxzIG9mIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGhlCitkYXRhIGZyb20gdGhlIHByb2dyYW1tZXIuCiAKIFRoZSA6bW9kOmBjc3ZgIG1vZHVsZSBpbXBsZW1lbnRzIGNsYXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgdGFidWxhciBkYXRhIGluIENTVgogZm9ybWF0LiAgSXQgYWxsb3dzIHByb2dyYW1tZXJzIHRvIHNheSwgIndyaXRlIHRoaXMgZGF0YSBpbiB0aGUgZm9ybWF0IHByZWZlcnJlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKaW5kZXggM2M2MDJjOC4uM2U0YWZkMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CkBAIC0zOSw5ICszOSwxNCBAQAogY29udmVudGlvbiwgd2hpbGUgKndpbmRsbCogbGlicmFyaWVzIGNhbGwgZnVuY3Rpb25zIHVzaW5nIHRoZSBgYHN0ZGNhbGxgYAogY2FsbGluZyBjb252ZW50aW9uLiAqb2xlZGxsKiBhbHNvIHVzZXMgdGhlIGBgc3RkY2FsbGBgIGNhbGxpbmcgY29udmVudGlvbiwgYW5kCiBhc3N1bWVzIHRoZSBmdW5jdGlvbnMgcmV0dXJuIGEgV2luZG93cyA6Yzp0eXBlOmBIUkVTVUxUYCBlcnJvciBjb2RlLiBUaGUgZXJyb3IKLWNvZGUgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IHJhaXNlIGEgOmNsYXNzOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiB3aGVuIHRoZQorY29kZSBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgcmFpc2UgYSA6Y2xhc3M6YE9TRXJyb3JgIGV4Y2VwdGlvbiB3aGVuIHRoZQogZnVuY3Rpb24gY2FsbCBmYWlscy4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFdpbmRvd3MgZXJyb3JzIHVzZWQgdG8gcmFpc2UgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzCisgICBvZiA6ZXhjOmBPU0Vycm9yYC4KKworCiBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIGZvciBXaW5kb3dzLiBOb3RlIHRoYXQgYGBtc3ZjcnRgYCBpcyB0aGUgTVMgc3RhbmRhcmQgQwogbGlicmFyeSBjb250YWluaW5nIG1vc3Qgc3RhbmRhcmQgQyBmdW5jdGlvbnMsIGFuZCB1c2VzIHRoZSBjZGVjbCBjYWxsaW5nCiBjb252ZW50aW9uOjoKQEAgLTE4OSw3ICsxOTQsNyBAQAogICAgPj4+IHdpbmRsbC5rZXJuZWwzMi5HZXRNb2R1bGVIYW5kbGVBKDMyKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KLSAgIFdpbmRvd3NFcnJvcjogZXhjZXB0aW9uOiBhY2Nlc3MgdmlvbGF0aW9uIHJlYWRpbmcgMHgwMDAwMDAyMAorICAgT1NFcnJvcjogZXhjZXB0aW9uOiBhY2Nlc3MgdmlvbGF0aW9uIHJlYWRpbmcgMHgwMDAwMDAyMAogICAgPj4+CiAKIFRoZXJlIGFyZSwgaG93ZXZlciwgZW5vdWdoIHdheXMgdG8gY3Jhc2ggUHl0aG9uIHdpdGggOm1vZDpgY3R5cGVzYCwgc28geW91CkBAIC00OTYsNyArNTAxLDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAzLCBpbiBWYWxpZEhhbmRsZQotICAgV2luZG93c0Vycm9yOiBbRXJybm8gMTI2XSBUaGUgc3BlY2lmaWVkIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuCisgICBPU0Vycm9yOiBbRXJybm8gMTI2XSBUaGUgc3BlY2lmaWVkIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuCiAgICA+Pj4KIAogYGBXaW5FcnJvcmBgIGlzIGEgZnVuY3Rpb24gd2hpY2ggd2lsbCBjYWxsIFdpbmRvd3MgYGBGb3JtYXRNZXNzYWdlKClgYCBhcGkgdG8KQEAgLTkyNiwyMSArOTMxLDIxIEBACiA6bW9kOmBjdHlwZXNgIGFsbG93cyB0byBjcmVhdGUgQyBjYWxsYWJsZSBmdW5jdGlvbiBwb2ludGVycyBmcm9tIFB5dGhvbiBjYWxsYWJsZXMuCiBUaGVzZSBhcmUgc29tZXRpbWVzIGNhbGxlZCAqY2FsbGJhY2sgZnVuY3Rpb25zKi4KIAotRmlyc3QsIHlvdSBtdXN0IGNyZWF0ZSBhIGNsYXNzIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHRoZSBjbGFzcyBrbm93cyB0aGUKK0ZpcnN0LCB5b3UgbXVzdCBjcmVhdGUgYSBjbGFzcyBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLiBUaGUgY2xhc3Mga25vd3MgdGhlCiBjYWxsaW5nIGNvbnZlbnRpb24sIHRoZSByZXR1cm4gdHlwZSwgYW5kIHRoZSBudW1iZXIgYW5kIHR5cGVzIG9mIGFyZ3VtZW50cyB0aGlzCiBmdW5jdGlvbiB3aWxsIHJlY2VpdmUuCiAKLVRoZSBDRlVOQ1RZUEUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMgdXNpbmcgdGhlCi1ub3JtYWwgY2RlY2wgY2FsbGluZyBjb252ZW50aW9uLCBhbmQsIG9uIFdpbmRvd3MsIHRoZSBXSU5GVU5DVFlQRSBmYWN0b3J5Ci1mdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMgdXNpbmcgdGhlIHN0ZGNhbGwgY2FsbGluZwotY29udmVudGlvbi4KK1RoZSA6ZnVuYzpgQ0ZVTkNUWVBFYCBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucwordXNpbmcgdGhlIGBgY2RlY2xgYCBjYWxsaW5nIGNvbnZlbnRpb24uIE9uIFdpbmRvd3MsIHRoZSA6ZnVuYzpgV0lORlVOQ1RZUEVgCitmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucyB1c2luZyB0aGUgYGBzdGRjYWxsYGAKK2NhbGxpbmcgY29udmVudGlvbi4KIAogQm90aCBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCB0eXBlIGFzIGZpcnN0CiBhcmd1bWVudCwgYW5kIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgZXhwZWN0ZWQgYXJndW1lbnQgdHlwZXMgYXMgdGhlIHJlbWFpbmluZwogYXJndW1lbnRzLgogCiBJIHdpbGwgcHJlc2VudCBhbiBleGFtcGxlIGhlcmUgd2hpY2ggdXNlcyB0aGUgc3RhbmRhcmQgQyBsaWJyYXJ5J3MKLTpjOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiwgdGhpcyBpcyB1c2VkIHRvIHNvcnQgaXRlbXMgd2l0aCB0aGUgaGVscCBvZiBhIGNhbGxiYWNrCis6YzpmdW5jOmBxc29ydGAgZnVuY3Rpb24sIHRoYXQgaXMgdXNlZCB0byBzb3J0IGl0ZW1zIHdpdGggdGhlIGhlbHAgb2YgYSBjYWxsYmFjawogZnVuY3Rpb24uICA6YzpmdW5jOmBxc29ydGAgd2lsbCBiZSB1c2VkIHRvIHNvcnQgYW4gYXJyYXkgb2YgaW50ZWdlcnM6OgogCiAgICA+Pj4gSW50QXJyYXk1ID0gY19pbnQgKiA1CkBAIC05NTMsNyArOTU4LDcgQEAKIGl0ZW1zIGluIHRoZSBkYXRhIGFycmF5LCB0aGUgc2l6ZSBvZiBvbmUgaXRlbSwgYW5kIGEgcG9pbnRlciB0byB0aGUgY29tcGFyaXNvbgogZnVuY3Rpb24sIHRoZSBjYWxsYmFjay4gVGhlIGNhbGxiYWNrIHdpbGwgdGhlbiBiZSBjYWxsZWQgd2l0aCB0d28gcG9pbnRlcnMgdG8KIGl0ZW1zLCBhbmQgaXQgbXVzdCByZXR1cm4gYSBuZWdhdGl2ZSBpbnRlZ2VyIGlmIHRoZSBmaXJzdCBpdGVtIGlzIHNtYWxsZXIgdGhhbgotdGhlIHNlY29uZCwgYSB6ZXJvIGlmIHRoZXkgYXJlIGVxdWFsLCBhbmQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGVsc2UuCit0aGUgc2Vjb25kLCBhIHplcm8gaWYgdGhleSBhcmUgZXF1YWwsIGFuZCBhIHBvc2l0aXZlIGludGVnZXIgb3RoZXJ3aXNlLgogCiBTbyBvdXIgY2FsbGJhY2sgZnVuY3Rpb24gcmVjZWl2ZXMgcG9pbnRlcnMgdG8gaW50ZWdlcnMsIGFuZCBtdXN0IHJldHVybiBhbgogaW50ZWdlci4gRmlyc3Qgd2UgY3JlYXRlIHRoZSBgYHR5cGVgYCBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uOjoKQEAgLTk2MSwzNiArOTY2LDggQEAKICAgID4+PiBDTVBGVU5DID0gQ0ZVTkNUWVBFKGNfaW50LCBQT0lOVEVSKGNfaW50KSwgUE9JTlRFUihjX2ludCkpCiAgICA+Pj4KIAotRm9yIHRoZSBmaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHdlIHNpbXBseSBwcmludCB0aGUKLWFyZ3VtZW50cyB3ZSBnZXQsIGFuZCByZXR1cm4gMCAoaW5jcmVtZW50YWwgZGV2ZWxvcG1lbnQgOy0pOjoKLQotICAgPj4+IGRlZiBweV9jbXBfZnVuYyhhLCBiKToKLSAgIC4uLiAgICAgcHJpbnQoInB5X2NtcF9mdW5jIiwgYSwgYikKLSAgIC4uLiAgICAgcmV0dXJuIDAKLSAgIC4uLgotICAgPj4+Ci0KLUNyZWF0ZSB0aGUgQyBjYWxsYWJsZSBjYWxsYmFjazo6Ci0KLSAgID4+PiBjbXBfZnVuYyA9IENNUEZVTkMocHlfY21wX2Z1bmMpCi0gICA+Pj4KLQotQW5kIHdlJ3JlIHJlYWR5IHRvIGdvOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgPj4+Ci0KLVdlIGtub3cgaG93IHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgYSBwb2ludGVyLCBzbyBsZXRzIHJlZGVmaW5lIG91ciBjYWxsYmFjazo6CitUbyBnZXQgc3RhcnRlZCwgaGVyZSBpcyBhIHNpbXBsZSBjYWxsYmFjayB0aGF0IHNob3dzIHRoZSB2YWx1ZXMgaXQgZ2V0cworcGFzc2VkOjoKIAogICAgPj4+IGRlZiBweV9jbXBfZnVuYyhhLCBiKToKICAgIC4uLiAgICAgcHJpbnQoInB5X2NtcF9mdW5jIiwgYVswXSwgYlswXSkKQEAgLTk5OSwyMyArOTc2LDcgQEAKICAgID4+PiBjbXBfZnVuYyA9IENNUEZVTkMocHlfY21wX2Z1bmMpCiAgICA+Pj4KIAotSGVyZSBpcyB3aGF0IHdlIGdldCBvbiBXaW5kb3dzOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgNyAxCi0gICBweV9jbXBfZnVuYyAzMyAxCi0gICBweV9jbXBfZnVuYyA5OSAxCi0gICBweV9jbXBfZnVuYyA1IDEKLSAgIHB5X2NtcF9mdW5jIDcgNQotICAgcHlfY21wX2Z1bmMgMzMgNQotICAgcHlfY21wX2Z1bmMgOTkgNQotICAgcHlfY21wX2Z1bmMgNyA5OQotICAgcHlfY21wX2Z1bmMgMzMgOTkKLSAgIHB5X2NtcF9mdW5jIDcgMzMKLSAgID4+PgotCi1JdCBpcyBmdW5ueSB0byBzZWUgdGhhdCBvbiBsaW51eCB0aGUgc29ydCBmdW5jdGlvbiBzZWVtcyB0byB3b3JrIG11Y2ggbW9yZQotZWZmaWNpZW50bHksIGl0IGlzIGRvaW5nIGxlc3MgY29tcGFyaXNvbnM6OgorVGhlIHJlc3VsdDo6CiAKICAgID4+PiBxc29ydChpYSwgbGVuKGlhKSwgc2l6ZW9mKGNfaW50KSwgY21wX2Z1bmMpICMgZG9jdGVzdDogK0xJTlVYCiAgICBweV9jbXBfZnVuYyA1IDEKQEAgLTEwMjUsMzIgKzk4NiwxMyBAQAogICAgcHlfY21wX2Z1bmMgMSA3CiAgICA+Pj4KIAotQWgsIHdlJ3JlIG5lYXJseSBkb25lISBUaGUgbGFzdCBzdGVwIGlzIHRvIGFjdHVhbGx5IGNvbXBhcmUgdGhlIHR3byBpdGVtcyBhbmQKLXJldHVybiBhIHVzZWZ1bCByZXN1bHQ6OgorTm93IHdlIGNhbiBhY3R1YWxseSBjb21wYXJlIHRoZSB0d28gaXRlbXMgYW5kIHJldHVybiBhIHVzZWZ1bCByZXN1bHQ6OgogCiAgICA+Pj4gZGVmIHB5X2NtcF9mdW5jKGEsIGIpOgogICAgLi4uICAgICBwcmludCgicHlfY21wX2Z1bmMiLCBhWzBdLCBiWzBdKQogICAgLi4uICAgICByZXR1cm4gYVswXSAtIGJbMF0KICAgIC4uLgogICAgPj4+Ci0KLUZpbmFsIHJ1biBvbiBXaW5kb3dzOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBDTVBGVU5DKHB5X2NtcF9mdW5jKSkgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgMzMgNwotICAgcHlfY21wX2Z1bmMgOTkgMzMKLSAgIHB5X2NtcF9mdW5jIDUgOTkKLSAgIHB5X2NtcF9mdW5jIDEgOTkKLSAgIHB5X2NtcF9mdW5jIDMzIDcKLSAgIHB5X2NtcF9mdW5jIDEgMzMKLSAgIHB5X2NtcF9mdW5jIDUgMzMKLSAgIHB5X2NtcF9mdW5jIDUgNwotICAgcHlfY21wX2Z1bmMgMSA3Ci0gICBweV9jbXBfZnVuYyA1IDEKLSAgID4+PgotCi1hbmQgb24gTGludXg6OgotCiAgICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIENNUEZVTkMocHlfY21wX2Z1bmMpKSAjIGRvY3Rlc3Q6ICtMSU5VWAogICAgcHlfY21wX2Z1bmMgNSAxCiAgICBweV9jbXBfZnVuYyAzMyA5OQpAQCAtMTA1OSw5ICsxMDAxLDYgQEAKICAgIHB5X2NtcF9mdW5jIDUgNwogICAgPj4+CiAKLUl0IGlzIHF1aXRlIGludGVyZXN0aW5nIHRvIHNlZSB0aGF0IHRoZSBXaW5kb3dzIDpmdW5jOmBxc29ydGAgZnVuY3Rpb24gbmVlZHMKLW1vcmUgY29tcGFyaXNvbnMgdGhhbiB0aGUgbGludXggdmVyc2lvbiEKLQogQXMgd2UgY2FuIGVhc2lseSBjaGVjaywgb3VyIGFycmF5IGlzIHNvcnRlZCBub3c6OgogCiAgICA+Pj4gZm9yIGkgaW4gaWE6IHByaW50KGksIGVuZD0iICIpCkBAIC0xMDcxLDkgKzEwMTAsOSBAQAogCiAqKkltcG9ydGFudCBub3RlIGZvciBjYWxsYmFjayBmdW5jdGlvbnM6KioKIAotTWFrZSBzdXJlIHlvdSBrZWVwIHJlZmVyZW5jZXMgdG8gQ0ZVTkNUWVBFIG9iamVjdHMgYXMgbG9uZyBhcyB0aGV5IGFyZSB1c2VkIGZyb20KLUMgY29kZS4gOm1vZDpgY3R5cGVzYCBkb2Vzbid0LCBhbmQgaWYgeW91IGRvbid0LCB0aGV5IG1heSBiZSBnYXJiYWdlIGNvbGxlY3RlZCwKLWNyYXNoaW5nIHlvdXIgcHJvZ3JhbSB3aGVuIGEgY2FsbGJhY2sgaXMgbWFkZS4KK01ha2Ugc3VyZSB5b3Uga2VlcCByZWZlcmVuY2VzIHRvIDpmdW5jOmBDRlVOQ1RZUEVgIG9iamVjdHMgYXMgbG9uZyBhcyB0aGV5IGFyZQordXNlZCBmcm9tIEMgY29kZS4gOm1vZDpgY3R5cGVzYCBkb2Vzbid0LCBhbmQgaWYgeW91IGRvbid0LCB0aGV5IG1heSBiZSBnYXJiYWdlCitjb2xsZWN0ZWQsIGNyYXNoaW5nIHlvdXIgcHJvZ3JhbSB3aGVuIGEgY2FsbGJhY2sgaXMgbWFkZS4KIAogCiAuLiBfY3R5cGVzLWFjY2Vzc2luZy12YWx1ZXMtZXhwb3J0ZWQtZnJvbS1kbGxzOgpAQCAtMTM1MCw3ICsxMjg5LDEwIEBACiAgICBhc3N1bWVkIHRvIHJldHVybiB0aGUgd2luZG93cyBzcGVjaWZpYyA6Y2xhc3M6YEhSRVNVTFRgIGNvZGUuICA6Y2xhc3M6YEhSRVNVTFRgCiAgICB2YWx1ZXMgY29udGFpbiBpbmZvcm1hdGlvbiBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGNhbGwgZmFpbGVkIG9yCiAgICBzdWNjZWVkZWQsIHRvZ2V0aGVyIHdpdGggYWRkaXRpb25hbCBlcnJvciBjb2RlLiAgSWYgdGhlIHJldHVybiB2YWx1ZSBzaWduYWxzIGEKLSAgIGZhaWx1cmUsIGFuIDpjbGFzczpgV2luZG93c0Vycm9yYCBpcyBhdXRvbWF0aWNhbGx5IHJhaXNlZC4KKyAgIGZhaWx1cmUsIGFuIDpjbGFzczpgT1NFcnJvcmAgaXMgYXV0b21hdGljYWxseSByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBXaW5kb3dzRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLgogCiAKIC4uIGNsYXNzOjogV2luRExMKG5hbWUsIG1vZGU9REVGQVVMVF9NT0RFLCBoYW5kbGU9Tm9uZSwgdXNlX2Vycm5vPUZhbHNlLCB1c2VfbGFzdF9lcnJvcj1GYWxzZSkKQEAgLTE5NjcsMTEgKzE5MDksMTQgQEAKIC4uIGZ1bmN0aW9uOjogV2luRXJyb3IoY29kZT1Ob25lLCBkZXNjcj1Ob25lKQogCiAgICBXaW5kb3dzIG9ubHk6IHRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHdvcnN0LW5hbWVkIHRoaW5nIGluIGN0eXBlcy4gSXQKLSAgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgV2luZG93c0Vycm9yLiAgSWYgKmNvZGUqIGlzIG5vdCBzcGVjaWZpZWQsCisgICBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIE9TRXJyb3IuICBJZiAqY29kZSogaXMgbm90IHNwZWNpZmllZCwKICAgIGBgR2V0TGFzdEVycm9yYGAgaXMgY2FsbGVkIHRvIGRldGVybWluZSB0aGUgZXJyb3IgY29kZS4gSWYgKmRlc2NyKiBpcyBub3QKICAgIHNwZWNpZmllZCwgOmZ1bmM6YEZvcm1hdEVycm9yYCBpcyBjYWxsZWQgdG8gZ2V0IGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUKICAgIGVycm9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQW4gaW5zdGFuY2Ugb2YgOmV4YzpgV2luZG93c0Vycm9yYCB1c2VkIHRvIGJlIGNyZWF0ZWQuCisKIAogLi4gZnVuY3Rpb246OiB3c3RyaW5nX2F0KGFkZHJlc3MsIHNpemU9LTEpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CmluZGV4IDExYWI1ZDAuLjllNWNiNTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdApAQCAtNTk5LDYgKzU5OSwxNyBAQAogICAgICAgT25seSBvbmUgKmNoKiBjYW4gYmUgcHVzaGVkIGJlZm9yZSA6bWV0aDpgZ2V0Y2hgIGlzIGNhbGxlZC4KIAogCisuLiBmdW5jdGlvbjo6IHVuZ2V0X3djaChjaCkKKworICAgUHVzaCAqY2gqIHNvIHRoZSBuZXh0IDptZXRoOmBnZXRfd2NoYCB3aWxsIHJldHVybiBpdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIE9ubHkgb25lICpjaCogY2FuIGJlIHB1c2hlZCBiZWZvcmUgOm1ldGg6YGdldF93Y2hgIGlzIGNhbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiB1bmdldG1vdXNlKGlkLCB4LCB5LCB6LCBic3RhdGUpCiAKICAgIFB1c2ggYSA6Y29uc3Q6YEtFWV9NT1VTRWAgZXZlbnQgb250byB0aGUgaW5wdXQgcXVldWUsIGFzc29jaWF0aW5nIHRoZSBnaXZlbgpAQCAtNjQzLDcgKzY1NCw3IEBACiAtLS0tLS0tLS0tLS0tLQogCiBXaW5kb3cgb2JqZWN0cywgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGluaXRzY3JgIGFuZCA6ZnVuYzpgbmV3d2luYCBhYm92ZSwgaGF2ZQotdGhlIGZvbGxvd2luZyBtZXRob2RzOgordGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAKIC4uIG1ldGhvZDo6IHdpbmRvdy5hZGRjaChjaFssIGF0dHJdKQpAQCAtODMxLDYgKzg0MiwxNiBAQAogICAgZXZlbnQuCiAKIAorLi4gYXR0cmlidXRlOjogd2luZG93LmVuY29kaW5nCisKKyAgIEVuY29kaW5nIHVzZWQgdG8gZW5jb2RlIG1ldGhvZCBhcmd1bWVudHMgKFVuaWNvZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVycykuCisgICBUaGUgZW5jb2RpbmcgYXR0cmlidXRlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgd2luZG93IHdoZW4gYSBzdWJ3aW5kb3cKKyAgIGlzIGNyZWF0ZWQsIGZvciBleGFtcGxlIHdpdGggOm1ldGg6YHdpbmRvdy5zdWJ3aW5gLiBCeSBkZWZhdWx0LCB0aGUgbG9jYWxlCisgICBlbmNvZGluZyBpcyB1c2VkIChzZWUgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2ApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiB3aW5kb3cuZXJhc2UoKQogCiAgICBDbGVhciB0aGUgd2luZG93LgpAQCAtODU0LDExICs4NzUsMjAgQEAKICAgIHVudGlsIGEga2V5IGlzIHByZXNzZWQuCiAKIAorLi4gbWV0aG9kOjogd2luZG93LmdldF93Y2goW3ksIHhdKQorCisgICBHZXQgYSB3aWRlIGNoYXJhY3Rlci4gUmV0dXJuIGEgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIG9yIGFuIGludGVnZXIgZm9yCisgICBmdW5jdGlvbiBrZXlzLCBrZXlwYWQga2V5cywgYW5kIG90aGVyIHNwZWNpYWwga2V5cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogd2luZG93LmdldGtleShbeSwgeF0pCiAKICAgIEdldCBhIGNoYXJhY3RlciwgcmV0dXJuaW5nIGEgc3RyaW5nIGluc3RlYWQgb2YgYW4gaW50ZWdlciwgYXMgOm1ldGg6YGdldGNoYAotICAgZG9lcy4gRnVuY3Rpb24ga2V5cywga2V5cGFkIGtleXMgYW5kIHNvIG9uIHJldHVybiBhIG11bHRpYnl0ZSBzdHJpbmcgY29udGFpbmluZwotICAgdGhlIGtleSBuYW1lLiAgSW4gbm8tZGVsYXkgbW9kZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGVyZSBpcyBubyBpbnB1dC4KKyAgIGRvZXMuIEZ1bmN0aW9uIGtleXMsIGtleXBhZCBrZXlzIGFuZCBvdGhlciBzcGVjaWFsIGtleXMgcmV0dXJuIGEgbXVsdGlieXRlCisgICBzdHJpbmcgY29udGFpbmluZyB0aGUga2V5IG5hbWUuICBJbiBuby1kZWxheSBtb2RlLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGlmCisgICB0aGVyZSBpcyBubyBpbnB1dC4KIAogCiAuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0bWF4eXgoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QKaW5kZXggNmI0YTcxYS4uZDAzODJlMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0CkBAIC0yMSwxMSArMjEsMTAgQEAKICAgIGRhdGV0aW1lLnJzdAogICAgY2FsZW5kYXIucnN0CiAgICBjb2xsZWN0aW9ucy5yc3QKKyAgIGNvbGxlY3Rpb25zLmFiYy5yc3QKICAgIGhlYXBxLnJzdAogICAgYmlzZWN0LnJzdAogICAgYXJyYXkucnN0Ci0gICBzY2hlZC5yc3QKLSAgIHF1ZXVlLnJzdAogICAgd2Vha3JlZi5yc3QKICAgIHR5cGVzLnJzdAogICAgY29weS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAppbmRleCA4OGZhMDFjLi43YzBhYWMzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CkBAIC00MDQsMTIgKzQwNCwxOSBAQAogLi4gY2xhc3NtZXRob2Q6OiBkYXRlLmZyb210aW1lc3RhbXAodGltZXN0YW1wKQogCiAgICBSZXR1cm4gdGhlIGxvY2FsIGRhdGUgY29ycmVzcG9uZGluZyB0byB0aGUgUE9TSVggdGltZXN0YW1wLCBzdWNoIGFzIGlzIHJldHVybmVkCi0gICBieSA6ZnVuYzpgdGltZS50aW1lYC4gIFRoaXMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dAotICAgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmdW5jdGlvbi4KKyAgIGJ5IDpmdW5jOmB0aW1lLnRpbWVgLiAgVGhpcyBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0CisgICBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBsb2NhbHRpbWVgIGZ1bmN0aW9uLAorICAgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbHVyZS4KICAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgZnJvbSAxOTcwIHRocm91Z2ggMjAzOC4gIE5vdGUKICAgIHRoYXQgb24gbm9uLVBPU0lYIHN5c3RlbXMgdGhhdCBpbmNsdWRlIGxlYXAgc2Vjb25kcyBpbiB0aGVpciBub3Rpb24gb2YgYQogICAgdGltZXN0YW1wLCBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQgYnkgOm1ldGg6YGZyb210aW1lc3RhbXBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdGltZXN0YW1wCisgICAgICBpcyBvdXQgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMKKyAgICAgIDpjOmZ1bmM6YGxvY2FsdGltZWAgZnVuY3Rpb24uIFJhaXNlIDpleGM6YE9TRXJyb3JgIGluc3RlYWQgb2YKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbHVyZS4KKwogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGUuZnJvbW9yZGluYWwob3JkaW5hbCkKIApAQCAtNzEzLDIzICs3MjAsNDQgQEAKICAgIGVxdWl2YWxlbnQgdG8KICAgIGBgdHouZnJvbXV0YyhkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkucmVwbGFjZSh0emluZm89dHopKWBgLgogCi0gICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dCBvZgorICAgOm1ldGg6YGZyb210aW1lc3RhbXBgIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcyBvdXQgb2YKICAgIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IKLSAgIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb25zLiAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbgorICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbnMsIGFuZCA6ZXhjOmBPU0Vycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yCisgICA6YzpmdW5jOmBnbXRpbWVgIGZhaWx1cmUuCisgICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluCiAgICAxOTcwIHRocm91Z2ggMjAzOC4gTm90ZSB0aGF0IG9uIG5vbi1QT1NJWCBzeXN0ZW1zIHRoYXQgaW5jbHVkZSBsZWFwIHNlY29uZHMgaW4KICAgIHRoZWlyIG5vdGlvbiBvZiBhIHRpbWVzdGFtcCwgbGVhcCBzZWNvbmRzIGFyZSBpZ25vcmVkIGJ5IDptZXRoOmBmcm9tdGltZXN0YW1wYCwKICAgIGFuZCB0aGVuIGl0J3MgcG9zc2libGUgdG8gaGF2ZSB0d28gdGltZXN0YW1wcyBkaWZmZXJpbmcgYnkgYSBzZWNvbmQgdGhhdCB5aWVsZAogICAgaWRlbnRpY2FsIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3RzLiBTZWUgYWxzbyA6bWV0aDpgdXRjZnJvbXRpbWVzdGFtcGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9ucy4gUmFpc2UgOmV4YzpgT1NFcnJvcmAKKyAgICAgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgCisgICAgICBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKICAgIFJldHVybiB0aGUgVVRDIDpjbGFzczpgLmRhdGV0aW1lYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAsIHdpdGgKLSAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcwotICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24uCisgICA6YXR0cjpgdHppbmZvYCBgYE5vbmVgYC4gVGhpcyBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMKKyAgIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9uLAorICAgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGdtdGltZWAgZmFpbHVyZS4KICAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4gMTk3MCB0aHJvdWdoIDIwMzguIFNlZSBhbHNvCiAgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAuCiAKKyAgIE9uIHRoZSBQT1NJWCBjb21wbGlhbnQgcGxhdGZvcm1zLCBgYHV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKWBgCisgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbjo6CisKKyAgICAgZGF0ZXRpbWUoMTk3MCwgMSwgMSkgKyB0aW1lZGVsdGEoc2Vjb25kcz10aW1lc3RhbXApCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbi4gUmFpc2UgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuZnJvbW9yZGluYWwob3JkaW5hbCkKIApAQCAtODczLDEzICs5MDEsMjAgQEAKICAgICpkYXRldGltZTEqIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuICpkYXRldGltZTIqIHdoZW4gKmRhdGV0aW1lMSogcHJlY2VkZXMKICAgICpkYXRldGltZTIqIGluIHRpbWUuCiAKLSAgIElmIG9uZSBjb21wYXJhbmQgaXMgbmFpdmUgYW5kIHRoZSBvdGhlciBpcyBhd2FyZSwgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCisgICBJZiBvbmUgY29tcGFyYW5kIGlzIG5haXZlIGFuZCB0aGUgb3RoZXIgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAKKyAgIGlzIHJhaXNlZCBpZiBhbiBvcmRlciBjb21wYXJpc29uIGlzIGF0dGVtcHRlZC4gIEZvciBlcXVhbGl0eQorICAgY29tcGFyaXNvbnMsIG5haXZlIGluc3RhbmNlcyBhcmUgbmV2ZXIgZXF1YWwgdG8gYXdhcmUgaW5zdGFuY2VzLgorCiAgICBJZiBib3RoIGNvbXBhcmFuZHMgYXJlIGF3YXJlLCBhbmQgaGF2ZSB0aGUgc2FtZSA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUsIHRoZQogICAgY29tbW9uIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSBpcyBpZ25vcmVkIGFuZCB0aGUgYmFzZSBkYXRldGltZXMgYXJlCiAgICBjb21wYXJlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUgYW5kIGhhdmUgZGlmZmVyZW50IDphdHRyOmB0emluZm9gCiAgICBhdHRyaWJ1dGVzLCB0aGUgY29tcGFyYW5kcyBhcmUgZmlyc3QgYWRqdXN0ZWQgYnkgc3VidHJhY3RpbmcgdGhlaXIgVVRDCiAgICBvZmZzZXRzIChvYnRhaW5lZCBmcm9tIGBgc2VsZi51dGNvZmZzZXQoKWBgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEVxdWFsaXR5IGNvbXBhcmlzb25zIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlIDpjbGFzczpgZGF0ZXRpbWVgCisgICAgICBpbnN0YW5jZXMgZG9uJ3QgcmFpc2UgOmV4YzpgVHlwZUVycm9yYC4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIEluIG9yZGVyIHRvIHN0b3AgY29tcGFyaXNvbiBmcm9tIGZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdCBzY2hlbWUgb2YgY29tcGFyaW5nCkBAIC05MjIsMTcgKzk1NywyMiBAQAogICAgZGF0ZXRpbWUgd2l0aCBubyBjb252ZXJzaW9uIG9mIGRhdGUgYW5kIHRpbWUgZGF0YS4KIAogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6KQorLi4gbWV0aG9kOjogZGF0ZXRpbWUuYXN0aW1lem9uZSh0ej1Ob25lKQogCi0gICBSZXR1cm4gYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdpdGggbmV3IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSAqdHoqLAorICAgUmV0dXJuIGEgOmNsYXNzOmBkYXRldGltZWAgb2JqZWN0IHdpdGggbmV3IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSAqdHoqLAogICAgYWRqdXN0aW5nIHRoZSBkYXRlIGFuZCB0aW1lIGRhdGEgc28gdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBVVEMgdGltZSBhcwogICAgKnNlbGYqLCBidXQgaW4gKnR6KidzIGxvY2FsIHRpbWUuCiAKLSAgICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cworICAgSWYgcHJvdmlkZWQsICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cwogICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgKnNlbGYqIG11c3QKICAgIGJlIGF3YXJlIChgYHNlbGYudHppbmZvYGAgbXVzdCBub3QgYmUgYGBOb25lYGAsIGFuZCBgYHNlbGYudXRjb2Zmc2V0KClgYCBtdXN0CiAgICBub3QgcmV0dXJuIGBgTm9uZWBgKS4KIAorICAgSWYgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIChvciB3aXRoIGBgdHo9Tm9uZWBgKSB0aGUgc3lzdGVtIGxvY2FsCisgICB0aW1lem9uZSBpcyBhc3N1bWVkLiAgVGhlIGBgdHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKKyAgIGRhdGV0aW1lIGluc3RhbmNlIHdpbGwgYmUgc2V0IHRvIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZXpvbmVgCisgICB3aXRoIHRoZSB6b25lIG5hbWUgYW5kIG9mZnNldCBvYnRhaW5lZCBmcm9tIHRoZSBPUy4KKwogICAgSWYgYGBzZWxmLnR6aW5mb2BgIGlzICp0eiosIGBgc2VsZi5hc3RpbWV6b25lKHR6KWBgIGlzIGVxdWFsIHRvICpzZWxmKjogIG5vCiAgICBhZGp1c3RtZW50IG9mIGRhdGUgb3IgdGltZSBkYXRhIGlzIHBlcmZvcm1lZC4gRWxzZSB0aGUgcmVzdWx0IGlzIGxvY2FsCiAgICB0aW1lIGluIHRpbWUgem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKQEAgLTk1OSw2ICs5OTksOSBAQAogICAgICAgICAgICMgQ29udmVydCBmcm9tIFVUQyB0byB0eidzIGxvY2FsIHRpbWUuCiAgICAgICAgICAgcmV0dXJuIHR6LmZyb211dGModXRjKQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnR6KiBub3cgY2FuIGJlIG9taXR0ZWQuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudXRjb2Zmc2V0KCkKIApAQCAtMTAxNSw2ICsxMDU4LDM5IEBACiAgICBSZXR1cm4gdGhlIHByb2xlcHRpYyBHcmVnb3JpYW4gb3JkaW5hbCBvZiB0aGUgZGF0ZS4gIFRoZSBzYW1lIGFzCiAgICBgYHNlbGYuZGF0ZSgpLnRvb3JkaW5hbCgpYGAuCiAKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWVzdGFtcCgpCisKKyAgIFJldHVybiBQT1NJWCB0aW1lc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGUgOmNsYXNzOmBkYXRldGltZWAKKyAgIGluc3RhbmNlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDpjbGFzczpgZmxvYXRgIHNpbWlsYXIgdG8gdGhhdAorICAgcmV0dXJuZWQgYnkgOmZ1bmM6YHRpbWUudGltZWAuCisKKyAgIE5haXZlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcyBhcmUgYXNzdW1lZCB0byByZXByZXNlbnQgbG9jYWwKKyAgIHRpbWUgYW5kIHRoaXMgbWV0aG9kIHJlbGllcyBvbiB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBta3RpbWVgCisgICBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBjb252ZXJzaW9uLiAgU2luY2UgOmNsYXNzOmBkYXRldGltZWAKKyAgIHN1cHBvcnRzIHdpZGVyIHJhbmdlIG9mIHZhbHVlcyB0aGFuIDpjOmZ1bmM6YG1rdGltZWAgb24gbWFueQorICAgcGxhdGZvcm1zLCB0aGlzIG1ldGhvZCBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgZm9yIHRpbWVzIGZhcgorICAgaW4gdGhlIHBhc3Qgb3IgZmFyIGluIHRoZSBmdXR1cmUuCisKKyAgIEZvciBhd2FyZSA6Y2xhc3M6YGRhdGV0aW1lYCBpbnN0YW5jZXMsIHRoZSByZXR1cm4gdmFsdWUgaXMgY29tcHV0ZWQKKyAgIGFzOjoKKworICAgICAgKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvPXRpbWV6b25lLnV0YykpLnRvdGFsX3NlY29uZHMoKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoZXJlIGlzIG5vIG1ldGhvZCB0byBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBkaXJlY3RseSBmcm9tIGEKKyAgICAgIG5haXZlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlIHJlcHJlc2VudGluZyBVVEMgdGltZS4gIElmIHlvdXIKKyAgICAgIGFwcGxpY2F0aW9uIHVzZXMgdGhpcyBjb252ZW50aW9uIGFuZCB5b3VyIHN5c3RlbSB0aW1lem9uZSBpcyBub3QKKyAgICAgIHNldCB0byBVVEMsIHlvdSBjYW4gb2J0YWluIHRoZSBQT1NJWCB0aW1lc3RhbXAgYnkgc3VwcGx5aW5nCisgICAgICBgYHR6aW5mbz10aW1lem9uZS51dGNgYDo6CisKKyAgICAgICAgIHRpbWVzdGFtcCA9IGR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykudGltZXN0YW1wKCkKKworICAgICAgb3IgYnkgY2FsY3VsYXRpbmcgdGhlIHRpbWVzdGFtcCBkaXJlY3RseTo6CisKKyAgICAgICAgIHRpbWVzdGFtcCA9IChkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEpKSAvIHRpbWVkZWx0YShzZWNvbmRzPTEpCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLndlZWtkYXkoKQogCkBAIC0xMjU0LDcgKzEzMzAsMTAgQEAKIAogKiBjb21wYXJpc29uIG9mIDpjbGFzczpgLnRpbWVgIHRvIDpjbGFzczpgLnRpbWVgLCB3aGVyZSAqYSogaXMgY29uc2lkZXJlZCBsZXNzCiAgIHRoYW4gKmIqIHdoZW4gKmEqIHByZWNlZGVzICpiKiBpbiB0aW1lLiAgSWYgb25lIGNvbXBhcmFuZCBpcyBuYWl2ZSBhbmQgdGhlIG90aGVyCi0gIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlCisgIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZiBhbiBvcmRlciBjb21wYXJpc29uIGlzIGF0dGVtcHRlZC4gRm9yIGVxdWFsaXR5CisgIGNvbXBhcmlzb25zLCBuYWl2ZSBpbnN0YW5jZXMgYXJlIG5ldmVyIGVxdWFsIHRvIGF3YXJlIGluc3RhbmNlcy4KKworICBJZiBib3RoIGNvbXBhcmFuZHMgYXJlIGF3YXJlLCBhbmQgaGF2ZQogICB0aGUgc2FtZSA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUsIHRoZSBjb21tb24gOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlIGlzCiAgIGlnbm9yZWQgYW5kIHRoZSBiYXNlIHRpbWVzIGFyZSBjb21wYXJlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUgYW5kCiAgIGhhdmUgZGlmZmVyZW50IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZXMsIHRoZSBjb21wYXJhbmRzIGFyZSBmaXJzdCBhZGp1c3RlZCBieQpAQCAtMTI2NCw2ICsxMzQzLDEwIEBACiAgIGRpZmZlcmVudCB0eXBlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCB1bmxlc3MgdGhlIGNvbXBhcmlzb24gaXMgYGA9PWBgIG9yCiAgIGBgIT1gYC4gIFRoZSBsYXR0ZXIgY2FzZXMgcmV0dXJuIDpjb25zdDpgRmFsc2VgIG9yIDpjb25zdDpgVHJ1ZWAsIHJlc3BlY3RpdmVseS4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICBFcXVhbGl0eSBjb21wYXJpc29ucyBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZSA6Y2xhc3M6YHRpbWVgIGluc3RhbmNlcworICAgICBkb24ndCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgLgorCiAqIGhhc2gsIHVzZSBhcyBkaWN0IGtleQogCiAqIGVmZmljaWVudCBwaWNrbGluZwpAQCAtMTU4NywxMSArMTY3MCwxMiBAQAogOmNsYXNzOmB0aW1lem9uZWAgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSA6Y2xhc3M6YHRpbWV6b25lYCBvYmplY3QgcmVwcmVzZW50cyBhIHRpbWV6b25lIHRoYXQgaXMgZGVmaW5lZCBieSBhCi1maXhlZCBvZmZzZXQgZnJvbSBVVEMuICBOb3RlIHRoYXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbm5vdCBiZSB1c2VkCi10byByZXByZXNlbnQgdGltZXpvbmUgaW5mb3JtYXRpb24gaW4gdGhlIGxvY2F0aW9ucyB3aGVyZSBkaWZmZXJlbnQKLW9mZnNldHMgYXJlIHVzZWQgaW4gZGlmZmVyZW50IGRheXMgb2YgdGhlIHllYXIgb3Igd2hlcmUgaGlzdG9yaWNhbAotY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBjaXZpbCB0aW1lLgorVGhlIDpjbGFzczpgdGltZXpvbmVgIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB0emluZm9gLCBlYWNoCitpbnN0YW5jZSBvZiB3aGljaCByZXByZXNlbnRzIGEgdGltZXpvbmUgZGVmaW5lZCBieSBhIGZpeGVkIG9mZnNldCBmcm9tCitVVEMuICBOb3RlIHRoYXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudAordGltZXpvbmUgaW5mb3JtYXRpb24gaW4gdGhlIGxvY2F0aW9ucyB3aGVyZSBkaWZmZXJlbnQgb2Zmc2V0cyBhcmUgdXNlZAoraW4gZGlmZmVyZW50IGRheXMgb2YgdGhlIHllYXIgb3Igd2hlcmUgaGlzdG9yaWNhbCBjaGFuZ2VzIGhhdmUgYmVlbgorbWFkZSB0byBjaXZpbCB0aW1lLgogCiAKIC4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0WywgbmFtZV0pCkBAIC0xNzYwLDggKzE4NDQsNyBAQAogfCAgICAgICAgICAgfCBkZWNpbWFsIG51bWJlciBbMDAsOTldLiAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIHwgYGAlWWBgICAgIHwgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIHwgXCg1KSAgfAotfCAgICAgICAgICAgfCBudW1iZXIgWzAwMDEsOTk5OV0gKHN0cnB0aW1lKSwgfCAgICAgICB8Ci18ICAgICAgICAgICB8IFsxMDAwLDk5OTldIChzdHJmdGltZSkuICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgbnVtYmVyIFswMDAxLDk5OTldLiAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiB8IGBgJXpgYCAgICB8IFVUQyBvZmZzZXQgaW4gdGhlIGZvcm0gK0hITU0gICB8IFwoNikgIHwKIHwgICAgICAgICAgIHwgb3IgLUhITU0gKGVtcHR5IHN0cmluZyBpZiB0aGUgIHwgICAgICAgfApAQCAtMTc5NSwxMCArMTg3OCw3IEBACiAgICBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgogCiAoNSkKLSAgIEZvciB0ZWNobmljYWwgcmVhc29ucywgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2QgZG9lcyBub3Qgc3VwcG9ydAotICAgZGF0ZXMgYmVmb3JlIHllYXIgMTAwMDogYGB0LnN0cmZ0aW1lKGZvcm1hdClgYCB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gYGB0LnllYXIgPCAxMDAwYGAgZXZlbiBpZiBgYGZvcm1hdGBgIGRvZXMKLSAgIG5vdCBjb250YWluIGBgJVlgYCBkaXJlY3RpdmUuICBUaGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QgY2FuCisgICBUaGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QgY2FuCiAgICBwYXJzZSB5ZWFycyBpbiB0aGUgZnVsbCBbMSwgOTk5OV0gcmFuZ2UsIGJ1dCB5ZWFycyA8IDEwMDAgbXVzdCBiZQogICAgemVyby1maWxsZWQgdG8gNC1kaWdpdCB3aWR0aC4KIApAQCAtMTgwNiw2ICsxODg2LDEwIEBACiAgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucywgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2Qgd2FzIHJlc3RyaWN0ZWQgdG8KICAgICAgIHllYXJzID49IDE5MDAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBJbiB2ZXJzaW9uIDMuMiwgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2Qgd2FzIHJlc3RyaWN0ZWQgdG8KKyAgICAgIHllYXJzID49IDEwMDAuCisKICg2KQogICAgRm9yIGV4YW1wbGUsIGlmIDptZXRoOmB1dGNvZmZzZXRgIHJldHVybnMgYGB0aW1lZGVsdGEoaG91cnM9LTMsIG1pbnV0ZXM9LTMwKWBgLAogICAgYGAlemBgIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyBgYCctMDMzMCdgYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlYnVnLnJzdCBiL0RvYy9saWJyYXJ5L2RlYnVnLnJzdAppbmRleCBiMmVlNGZhLi5jNjlmYjFjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWJ1Zy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGVidWcucnN0CkBAIC0xMCw3ICsxMCw4IEBACiAuLiB0b2N0cmVlOjoKIAogICAgYmRiLnJzdAorICAgZmF1bHRoYW5kbGVyLnJzdAogICAgcGRiLnJzdAogICAgcHJvZmlsZS5yc3QKICAgIHRpbWVpdC5yc3QKLSAgIHRyYWNlLnJzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgIHRyYWNlLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCBlZjhiNDNmLi40YTJiMmQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtOSw2ICs5LDcgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KIC4uIG1vZHVsZWF1dGhvcjo6IEFhaHogPGFhaHogYXQgcG9ib3guY29tPgogLi4gbW9kdWxlYXV0aG9yOjogVGltIFBldGVycyA8dGltLm9uZSBhdCBjb21jYXN0Lm5ldD4KKy4uIG1vZHVsZWF1dGhvcjo6IFN0ZWZhbiBLcmFoIDxza3JhaCBhdCBieXRlcmVlZi5vcmc+CiAuLiBzZWN0aW9uYXV0aG9yOjogUmF5bW9uZCBELiBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgogCiAuLiBpbXBvcnQgbW9kdWxlcyBmb3IgdGVzdGluZyBpbmxpbmUgZG9jdGVzdHMgd2l0aCB0aGUgU3BoaW54IGRvY3Rlc3QgYnVpbGRlcgpAQCAtMjAsOCArMjEsOSBAQAogICAgIyBtYWtlIHN1cmUgZWFjaCBncm91cCBnZXRzIGEgZnJlc2ggY29udGV4dAogICAgc2V0Y29udGV4dChDb250ZXh0KCkpCiAKLVRoZSA6bW9kOmBkZWNpbWFsYCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZGVjaW1hbCBmbG9hdGluZyBwb2ludAotYXJpdGhtZXRpYy4gIEl0IG9mZmVycyBzZXZlcmFsIGFkdmFudGFnZXMgb3ZlciB0aGUgOmNsYXNzOmBmbG9hdGAgZGF0YXR5cGU6CitUaGUgOm1vZDpgZGVjaW1hbGAgbW9kdWxlIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGZhc3QgY29ycmVjdGx5LXJvdW5kZWQKK2RlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYy4gSXQgb2ZmZXJzIHNldmVyYWwgYWR2YW50YWdlcyBvdmVyIHRoZQorOmNsYXNzOmBmbG9hdGAgZGF0YXR5cGU6CiAKICogRGVjaW1hbCAiaXMgYmFzZWQgb24gYSBmbG9hdGluZy1wb2ludCBtb2RlbCB3aGljaCB3YXMgZGVzaWduZWQgd2l0aCBwZW9wbGUKICAgaW4gbWluZCwgYW5kIG5lY2Vzc2FyaWx5IGhhcyBhIHBhcmFtb3VudCBndWlkaW5nIHByaW5jaXBsZSAtLSBjb21wdXRlcnMgbXVzdApAQCAtOTIsNyArOTQsNyBAQAogY29uc2lkZXJlZCBhcyBpbmZvcm1hdGlvbmFsLCBvciB0cmVhdGVkIGFzIGV4Y2VwdGlvbnMuIFRoZSBzaWduYWxzIGluIHRoZQogZGVjaW1hbCBtb2R1bGUgYXJlOiA6Y29uc3Q6YENsYW1wZWRgLCA6Y29uc3Q6YEludmFsaWRPcGVyYXRpb25gLAogOmNvbnN0OmBEaXZpc2lvbkJ5WmVyb2AsIDpjb25zdDpgSW5leGFjdGAsIDpjb25zdDpgUm91bmRlZGAsIDpjb25zdDpgU3Vibm9ybWFsYCwKLTpjb25zdDpgT3ZlcmZsb3dgLCBhbmQgOmNvbnN0OmBVbmRlcmZsb3dgLgorOmNvbnN0OmBPdmVyZmxvd2AsIDpjb25zdDpgVW5kZXJmbG93YCBhbmQgOmNvbnN0OmBGbG9hdE9wZXJhdGlvbmAuCiAKIEZvciBlYWNoIHNpZ25hbCB0aGVyZSBpcyBhIGZsYWcgYW5kIGEgdHJhcCBlbmFibGVyLiAgV2hlbiBhIHNpZ25hbCBpcwogZW5jb3VudGVyZWQsIGl0cyBmbGFnIGlzIHNldCB0byBvbmUsIHRoZW4sIGlmIHRoZSB0cmFwIGVuYWJsZXIgaXMKQEAgLTEyMiw3ICsxMjQsNyBAQAogCiAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCAqCiAgICA+Pj4gZ2V0Y29udGV4dCgpCi0gICBDb250ZXh0KHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5OTk5LCBFbWF4PTk5OTk5OTk5OSwKKyAgIENvbnRleHQocHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bXSwgdHJhcHM9W092ZXJmbG93LCBEaXZpc2lvbkJ5WmVybywKICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbl0pCiAKQEAgLTEzMiw3ICsxMzQsNyBAQAogQ29uc3RydWN0aW9uIGZyb20gYW4gaW50ZWdlciBvciBhIGZsb2F0IHBlcmZvcm1zIGFuIGV4YWN0IGNvbnZlcnNpb24gb2YgdGhlCiB2YWx1ZSBvZiB0aGF0IGludGVnZXIgb3IgZmxvYXQuICBEZWNpbWFsIG51bWJlcnMgaW5jbHVkZSBzcGVjaWFsIHZhbHVlcyBzdWNoIGFzCiA6Y29uc3Q6YE5hTmAgd2hpY2ggc3RhbmRzIGZvciAiTm90IGEgbnVtYmVyIiwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlCi06Y29uc3Q6YEluZmluaXR5YCwgYW5kIDpjb25zdDpgLTBgLgorOmNvbnN0OmBJbmZpbml0eWAsIGFuZCA6Y29uc3Q6YC0wYDo6CiAKICAgID4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDI4CiAgICA+Pj4gRGVjaW1hbCgxMCkKQEAgLTE1Miw2ICsxNTQsMjUgQEAKICAgID4+PiBEZWNpbWFsKCctSW5maW5pdHknKQogICAgRGVjaW1hbCgnLUluZmluaXR5JykKIAorSWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYCBzaWduYWwgaXMgdHJhcHBlZCwgYWNjaWRlbnRhbCBtaXhpbmcgb2YKK2RlY2ltYWxzIGFuZCBmbG9hdHMgaW4gY29uc3RydWN0b3JzIG9yIG9yZGVyaW5nIGNvbXBhcmlzb25zIHJhaXNlcworYW4gZXhjZXB0aW9uOjoKKworICAgPj4+IGMgPSBnZXRjb250ZXh0KCkKKyAgID4+PiBjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSA9IFRydWUKKyAgID4+PiBEZWNpbWFsKDMuMTQpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgZGVjaW1hbC5GbG9hdE9wZXJhdGlvbjogWzxjbGFzcyAnZGVjaW1hbC5GbG9hdE9wZXJhdGlvbic+XQorICAgPj4+IERlY2ltYWwoJzMuNScpIDwgMy43CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uOiBbPGNsYXNzICdkZWNpbWFsLkZsb2F0T3BlcmF0aW9uJz5dCisgICA+Pj4gRGVjaW1hbCgnMy41JykgPT0gMy41CisgICBUcnVlCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBUaGUgc2lnbmlmaWNhbmNlIG9mIGEgbmV3IERlY2ltYWwgaXMgZGV0ZXJtaW5lZCBzb2xlbHkgYnkgdGhlIG51bWJlciBvZiBkaWdpdHMKIGlucHV0LiAgQ29udGV4dCBwcmVjaXNpb24gYW5kIHJvdW5kaW5nIG9ubHkgY29tZSBpbnRvIHBsYXkgZHVyaW5nIGFyaXRobWV0aWMKIG9wZXJhdGlvbnMuCkBAIC0xNjksNiArMTkwLDE2IEBACiAgICA+Pj4gRGVjaW1hbCgnMy4xNDE1OTI2NTM1JykgKyBEZWNpbWFsKCcyLjcxODI4MTgyODUnKQogICAgRGVjaW1hbCgnNS44NTk4OCcpCiAKK0lmIHRoZSBpbnRlcm5hbCBsaW1pdHMgb2YgdGhlIEMgdmVyc2lvbiBhcmUgZXhjZWVkZWQsIGNvbnN0cnVjdGluZworYSBkZWNpbWFsIHJhaXNlcyA6Y2xhc3M6YEludmFsaWRPcGVyYXRpb25gOjoKKworICAgPj4+IERlY2ltYWwoIjFlOTk5OTk5OTk5OTk5OTk5OTk5OSIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkludmFsaWRPcGVyYXRpb246IFs8Y2xhc3MgJ2RlY2ltYWwuSW52YWxpZE9wZXJhdGlvbic+XQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworCiBEZWNpbWFscyBpbnRlcmFjdCB3ZWxsIHdpdGggbXVjaCBvZiB0aGUgcmVzdCBvZiBQeXRob24uICBIZXJlIGlzIGEgc21hbGwgZGVjaW1hbAogZmxvYXRpbmcgcG9pbnQgZmx5aW5nIGNpcmN1czoKIApAQCAtMjQ0LDcgKzI3NSw3IEBACiAgICBEZWNpbWFsKCcwLjE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NycpCiAKICAgID4+PiBFeHRlbmRlZENvbnRleHQKLSAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OTk5OSwgRW1heD05OTk5OTk5OTksCisgICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bXSwgdHJhcHM9W10pCiAgICA+Pj4gc2V0Y29udGV4dChFeHRlbmRlZENvbnRleHQpCiAgICA+Pj4gRGVjaW1hbCgxKSAvIERlY2ltYWwoNykKQEAgLTI2OSw3ICszMDAsNyBAQAogICAgPj4+IERlY2ltYWwoMzU1KSAvIERlY2ltYWwoMTEzKQogICAgRGVjaW1hbCgnMy4xNDE1OTI5MicpCiAgICA+Pj4gZ2V0Y29udGV4dCgpCi0gICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTk5OTksIEVtYXg9OTk5OTk5OTk5LAorICAgQ29udGV4dChwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5LCBFbWF4PTk5OTk5OSwKICAgICAgICAgICAgY2FwaXRhbHM9MSwgY2xhbXA9MCwgZmxhZ3M9W0luZXhhY3QsIFJvdW5kZWRdLCB0cmFwcz1bXSkKIAogVGhlICpmbGFncyogZW50cnkgc2hvd3MgdGhhdCB0aGUgcmF0aW9uYWwgYXBwcm94aW1hdGlvbiB0byA6Y29uc3Q6YFBpYCB3YXMKQEAgLTM1OCw2ICszODksMTAgQEAKICAgICAgIFRoZSBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IgaXMgbm93IHBlcm1pdHRlZCB0byBiZSBhIDpjbGFzczpgZmxvYXRgCiAgICAgICBpbnN0YW5jZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpjbGFzczpgZmxvYXRgIGFyZ3VtZW50cyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYAorICAgICAgdHJhcCBpcyBzZXQuIEJ5IGRlZmF1bHQgdGhlIHRyYXAgaXMgb2ZmLgorCiAgICBEZWNpbWFsIGZsb2F0aW5nIHBvaW50IG9iamVjdHMgc2hhcmUgbWFueSBwcm9wZXJ0aWVzIHdpdGggdGhlIG90aGVyIGJ1aWx0LWluCiAgICBudW1lcmljIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBmbG9hdGAgYW5kIDpjbGFzczpgaW50YC4gIEFsbCBvZiB0aGUgdXN1YWwgbWF0aAogICAgb3BlcmF0aW9ucyBhbmQgc3BlY2lhbCBtZXRob2RzIGFwcGx5LiAgTGlrZXdpc2UsIGRlY2ltYWwgb2JqZWN0cyBjYW4gYmUKQEAgLTcwMiw2ICs3MzcsMTEgQEAKICAgICAgIHJlc3VsdGluZyBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4gOmF0dHI6YEVtYXhgIG9yIGxlc3MgdGhhbgogICAgICAgOmF0dHI6YEV0aW55YC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgICAgKndhdGNoZXhwKiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZnJvbSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbgorICAgICAgICAgYW5kIGlzIG5vdCBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uCisgICAgICAgICAzLjQsIHdoZXJlIGl0IGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCiAgICAuLiBtZXRob2Q6OiByYWRpeCgpCiAKICAgICAgIFJldHVybiBgYERlY2ltYWwoMTApYGAsIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIDpjbGFzczpgRGVjaW1hbGAKQEAgLTg4MCwzOSArOTIwLDMzIEBACiAgICBJbiBzaW5nbGUgdGhyZWFkZWQgZW52aXJvbm1lbnRzLCBpdCBpcyBwcmVmZXJhYmxlIHRvIG5vdCB1c2UgdGhpcyBjb250ZXh0IGF0CiAgICBhbGwuICBJbnN0ZWFkLCBzaW1wbHkgY3JlYXRlIGNvbnRleHRzIGV4cGxpY2l0bHkgYXMgZGVzY3JpYmVkIGJlbG93LgogCi0gICBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIHByZWNpc2lvbj0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBhbmQgZW5hYmxlZCB0cmFwcwotICAgZm9yIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBhbmQgRGl2aXNpb25CeVplcm8uCisgICBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIDphdHRyOmBwcmVjYFwgPVwgOmNvbnN0OmAyOGAsCisgICA6YXR0cjpgcm91bmRpbmdgXCA9XCA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAsCisgICBhbmQgZW5hYmxlZCB0cmFwcyBmb3IgOmNsYXNzOmBPdmVyZmxvd2AsIDpjbGFzczpgSW52YWxpZE9wZXJhdGlvbmAsIGFuZAorICAgOmNsYXNzOmBEaXZpc2lvbkJ5WmVyb2AuCiAKIEluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBzdXBwbGllZCBjb250ZXh0cywgbmV3IGNvbnRleHRzIGNhbiBiZSBjcmVhdGVkIHdpdGggdGhlCiA6Y2xhc3M6YENvbnRleHRgIGNvbnN0cnVjdG9yLgogCiAKLS4uIGNsYXNzOjogQ29udGV4dChwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIHRyYXBzPU5vbmUsIGZsYWdzPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLCBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lKQorLi4gY2xhc3M6OiBDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpCiAKICAgIENyZWF0ZXMgYSBuZXcgY29udGV4dC4gIElmIGEgZmllbGQgaXMgbm90IHNwZWNpZmllZCBvciBpcyA6Y29uc3Q6YE5vbmVgLCB0aGUKICAgIGRlZmF1bHQgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSB0aGUgOmNvbnN0OmBEZWZhdWx0Q29udGV4dGAuICBJZiB0aGUgKmZsYWdzKgogICAgZmllbGQgaXMgbm90IHNwZWNpZmllZCBvciBpcyA6Y29uc3Q6YE5vbmVgLCBhbGwgZmxhZ3MgYXJlIGNsZWFyZWQuCiAKLSAgIFRoZSAqcHJlYyogZmllbGQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgcHJlY2lzaW9uIGZvciBhcml0aG1ldGljCi0gICBvcGVyYXRpb25zIGluIHRoZSBjb250ZXh0LgorICAgKnByZWMqIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YDFgLCA6Y29uc3Q6YE1BWF9QUkVDYF0gdGhhdCBzZXRzCisgICB0aGUgcHJlY2lzaW9uIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMgaW4gdGhlIGNvbnRleHQuCiAKLSAgIFRoZSAqcm91bmRpbmcqIG9wdGlvbiBpcyBvbmUgb2Y6Ci0KLSAgICogOmNvbnN0OmBST1VORF9DRUlMSU5HYCAodG93YXJkcyA6Y29uc3Q6YEluZmluaXR5YCksCi0gICAqIDpjb25zdDpgUk9VTkRfRE9XTmAgKHRvd2FyZHMgemVybyksCi0gICAqIDpjb25zdDpgUk9VTkRfRkxPT1JgICh0b3dhcmRzIDpjb25zdDpgLUluZmluaXR5YCksCi0gICAqIDpjb25zdDpgUk9VTkRfSEFMRl9ET1dOYCAodG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG93YXJkcyB6ZXJvKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX0VWRU5gICh0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlciksCi0gICAqIDpjb25zdDpgUk9VTkRfSEFMRl9VUGAgKHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIGF3YXkgZnJvbSB6ZXJvKSwgb3IKLSAgICogOmNvbnN0OmBST1VORF9VUGAgKGF3YXkgZnJvbSB6ZXJvKS4KLSAgICogOmNvbnN0OmBST1VORF8wNVVQYCAoYXdheSBmcm9tIHplcm8gaWYgbGFzdCBkaWdpdCBhZnRlciByb3VuZGluZyB0b3dhcmRzIHplcm8KLSAgICAgd291bGQgaGF2ZSBiZWVuIDAgb3IgNTsgb3RoZXJ3aXNlIHRvd2FyZHMgemVybykKKyAgIFRoZSAqcm91bmRpbmcqIG9wdGlvbiBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBsaXN0ZWQgaW4gdGhlIHNlY3Rpb24KKyAgIGBSb3VuZGluZyBNb2Rlc2BfLgogCiAgICBUaGUgKnRyYXBzKiBhbmQgKmZsYWdzKiBmaWVsZHMgbGlzdCBhbnkgc2lnbmFscyB0byBiZSBzZXQuIEdlbmVyYWxseSwgbmV3CiAgICBjb250ZXh0cyBzaG91bGQgb25seSBzZXQgdHJhcHMgYW5kIGxlYXZlIHRoZSBmbGFncyBjbGVhci4KIAogICAgVGhlICpFbWluKiBhbmQgKkVtYXgqIGZpZWxkcyBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgb3V0ZXIgbGltaXRzIGFsbG93YWJsZQotICAgZm9yIGV4cG9uZW50cy4KKyAgIGZvciBleHBvbmVudHMuICpFbWluKiBtdXN0IGJlIGluIHRoZSByYW5nZSBbOmNvbnN0OmBNSU5fRU1JTmAsIDpjb25zdDpgMGBdLAorICAgKkVtYXgqIGluIHRoZSByYW5nZSBbOmNvbnN0OmAwYCwgOmNvbnN0OmBNQVhfRU1BWGBdLgogCiAgICBUaGUgKmNhcGl0YWxzKiBmaWVsZCBpcyBlaXRoZXIgOmNvbnN0OmAwYCBvciA6Y29uc3Q6YDFgICh0aGUgZGVmYXVsdCkuIElmIHNldCB0bwogICAgOmNvbnN0OmAxYCwgZXhwb25lbnRzIGFyZSBwcmludGVkIHdpdGggYSBjYXBpdGFsIDpjb25zdDpgRWA7IG90aGVyd2lzZSwgYQpAQCAtOTUxLDYgKzk4NSwxMiBAQAogCiAgICAgICBSZXNldHMgYWxsIG9mIHRoZSBmbGFncyB0byA6Y29uc3Q6YDBgLgogCisgICAuLiBtZXRob2Q6OiBjbGVhcl90cmFwcygpCisKKyAgICAgIFJlc2V0cyBhbGwgb2YgdGhlIHRyYXBzIHRvIDpjb25zdDpgMGAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiBjb3B5KCkKIAogICAgICAgUmV0dXJuIGEgZHVwbGljYXRlIG9mIHRoZSBjb250ZXh0LgpAQCAtMTI1MCw4ICsxMjkwLDEzIEBACiAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgYGB4Kip5YGAuICBJZiBgYHhgYCBpcyBuZWdhdGl2ZSB0aGVuIGBgeWBgCiAgICAgICBtdXN0IGJlIGludGVncmFsLiAgVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIGBgeWBgIGlzIGludGVncmFsIGFuZAogICAgICAgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuCi0gICAgICBUaGUgcmVzdWx0IHNob3VsZCBhbHdheXMgYmUgY29ycmVjdGx5IHJvdW5kZWQsIHVzaW5nIHRoZSByb3VuZGluZyBtb2RlIG9mCi0gICAgICB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0LgorICAgICAgVGhlIHJvdW5kaW5nIG1vZGUgb2YgdGhlIGNvbnRleHQgaXMgdXNlZC4gUmVzdWx0cyBhcmUgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkCisgICAgICBpbiB0aGUgUHl0aG9uIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgQyBtb2R1bGUgY29tcHV0ZXMgOm1ldGg6YHBvd2VyYCBpbiB0ZXJtcyBvZiB0aGUgY29ycmVjdGx5LXJvdW5kZWQKKyAgICAgICAgIDptZXRoOmBleHBgIGFuZCA6bWV0aDpgbG5gIGZ1bmN0aW9ucy4gVGhlIHJlc3VsdCBpcyB3ZWxsLWRlZmluZWQgYnV0CisgICAgICAgICBvbmx5ICJhbG1vc3QgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkIi4KIAogICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgYGAoeCoqeSkgJSBtb2R1bG9gYC4gIEZvciB0aGUgdGhyZWUgYXJndW1lbnQKICAgICAgIGZvcm0sIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZSBhcmd1bWVudHMgaG9sZDoKQEAgLTEzMzksNiArMTM4NCw2OSBAQAogCiAuLiAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKIAorLi4gX2RlY2ltYWwtcm91bmRpbmctbW9kZXM6CisKK0NvbnN0YW50cworLS0tLS0tLS0tCisKK1RoZSBjb25zdGFudHMgaW4gdGhpcyBzZWN0aW9uIGFyZSBvbmx5IHJlbGV2YW50IGZvciB0aGUgQyBtb2R1bGUuIFRoZXkKK2FyZSBhbHNvIGluY2x1ZGVkIGluIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5LgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgMzItYml0ICAgICAgICB8ICAgICAgICAgICAgNjQtYml0ICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IC4uIGRhdGE6OiBNQVhfUFJFQyAgfCA6Y29uc3Q6YDQyNTAwMDAwMGAgIHwgOmNvbnN0OmA5OTk5OTk5OTk5OTk5OTk5OTlgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgLi4gZGF0YTo6IE1BWF9FTUFYICB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAuLiBkYXRhOjogTUlOX0VNSU4gIHwgOmNvbnN0OmAtNDI1MDAwMDAwYCB8IDpjb25zdDpgLTk5OTk5OTk5OTk5OTk5OTk5OWAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IC4uIGRhdGE6OiBNSU5fRVRJTlkgfCA6Y29uc3Q6YC04NDk5OTk5OTlgIHwgOmNvbnN0OmAtMTk5OTk5OTk5OTk5OTk5OTk5N2AgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworCisuLiBkYXRhOjogSEFWRV9USFJFQURTCisKKyAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIFRydWUuIElmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHMsIHRoZQorICAgQyB2ZXJzaW9uIGF1dG9tYXRpY2FsbHkgZGlzYWJsZXMgdGhlIGV4cGVuc2l2ZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICAgbWFjaGluZXJ5LiBJbiB0aGlzIGNhc2UsIHRoZSB2YWx1ZSBpcyBGYWxzZS4KKworUm91bmRpbmcgbW9kZXMKKy0tLS0tLS0tLS0tLS0tCisKKy4uIGRhdGE6OiBST1VORF9DRUlMSU5HCisKKyAgIFJvdW5kIHRvd2FyZHMgOmNvbnN0OmBJbmZpbml0eWAuCisKKy4uIGRhdGE6OiBST1VORF9ET1dOCisKKyAgIFJvdW5kIHRvd2FyZHMgemVyby4KKworLi4gZGF0YTo6IFJPVU5EX0ZMT09SCisKKyAgIFJvdW5kIHRvd2FyZHMgOmNvbnN0OmAtSW5maW5pdHlgLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9ET1dOCisKKyAgIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvd2FyZHMgemVyby4KKworLi4gZGF0YTo6IFJPVU5EX0hBTEZfRVZFTgorCisgICBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlci4KKworLi4gZGF0YTo6IFJPVU5EX0hBTEZfVVAKKworICAgUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8uCisKKy4uIGRhdGE6OiBST1VORF9VUAorCisgICBSb3VuZCBhd2F5IGZyb20gemVyby4KKworLi4gZGF0YTo6IFJPVU5EXzA1VVAKKworICAgUm91bmQgYXdheSBmcm9tIHplcm8gaWYgbGFzdCBkaWdpdCBhZnRlciByb3VuZGluZyB0b3dhcmRzIHplcm8gd291bGQgaGF2ZQorICAgYmVlbiAwIG9yIDU7IG90aGVyd2lzZSByb3VuZCB0b3dhcmRzIHplcm8uCisKIAogLi4gX2RlY2ltYWwtc2lnbmFsczoKIApAQCAtMTQwMyw3ICsxNTExLDYgQEAKICAgICAgIEluZmluaXR5IC8gSW5maW5pdHkKICAgICAgIHggJSAwCiAgICAgICBJbmZpbml0eSAlIHgKLSAgICAgIHguX3Jlc2NhbGUoIG5vbi1pbnRlZ2VyICkKICAgICAgIHNxcnQoLXgpIGFuZCB4ID4gMAogICAgICAgMCAqKiAwCiAgICAgICB4ICoqIChub24taW50ZWdlcikKQEAgLTE0NDYsNiArMTU1MywyMyBAQAogICAgT2NjdXJzIHdoZW4gYSBzdWJub3JtYWwgcmVzdWx0IGlzIHB1c2hlZCB0byB6ZXJvIGJ5IHJvdW5kaW5nLiA6Y2xhc3M6YEluZXhhY3RgCiAgICBhbmQgOmNsYXNzOmBTdWJub3JtYWxgIGFyZSBhbHNvIHNpZ25hbGVkLgogCisKKy4uIGNsYXNzOjogRmxvYXRPcGVyYXRpb24KKworICAgIEVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisgICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCisgICAgcGVybWl0dGVkIGluIHRoZSA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIGNvbnN0cnVjdG9yLAorICAgIDptZXRoOmB+ZGVjaW1hbC5Db250ZXh0LmNyZWF0ZV9kZWNpbWFsYCBhbmQgYWxsIGNvbXBhcmlzb24gb3BlcmF0b3JzLgorICAgIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LiBBbnkgb2NjdXJyZW5jZSBvZiBhIG1peGVkCisgICAgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcgOmV4YzpgRmxvYXRPcGVyYXRpb25gIGluIHRoZQorICAgIGNvbnRleHQgZmxhZ3MuIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGggOm1ldGg6YH5kZWNpbWFsLkRlY2ltYWwuZnJvbV9mbG9hdGAKKyAgICBvciA6bWV0aDpgfmRlY2ltYWwuQ29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0YCBkbyBub3Qgc2V0IHRoZSBmbGFnLgorCisgICAgT3RoZXJ3aXNlICh0aGUgc2lnbmFsIGlzIHRyYXBwZWQpLCBvbmx5IGVxdWFsaXR5IGNvbXBhcmlzb25zIGFuZCBleHBsaWNpdAorICAgIGNvbnZlcnNpb25zIGFyZSBzaWxlbnQuIEFsbCBvdGhlciBtaXhlZCBvcGVyYXRpb25zIHJhaXNlIDpleGM6YEZsb2F0T3BlcmF0aW9uYC4KKworCiBUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIGhpZXJhcmNoeSBvZiBzaWduYWxzOjoKIAogICAgZXhjZXB0aW9ucy5Bcml0aG1ldGljRXJyb3IoZXhjZXB0aW9ucy5FeGNlcHRpb24pCkBAIC0xNDU4LDEwICsxNTgyLDEyIEBACiAgICAgICAgICAgIEludmFsaWRPcGVyYXRpb24KICAgICAgICAgICAgUm91bmRlZAogICAgICAgICAgICBTdWJub3JtYWwKKyAgICAgICAgICAgRmxvYXRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbiwgZXhjZXB0aW9ucy5UeXBlRXJyb3IpCiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCiAKKwogLi4gX2RlY2ltYWwtbm90ZXM6CiAKIEZsb2F0aW5nIFBvaW50IE5vdGVzCkBAIC0xNTcxLDcgKzE2OTcsNyBAQAogdGhlIGZvbGxvd2luZyBjYWxjdWxhdGlvbiByZXR1cm5zIGEgdmFsdWUgZXF1YWwgdG8gemVybzoKIAogICAgPj4+IDEgLyBEZWNpbWFsKCdJbmZpbml0eScpCi0gICBEZWNpbWFsKCcwRS0xMDAwMDAwMDI2JykKKyAgIERlY2ltYWwoJzBFLTEwMDAwMjYnKQogCiAuLiAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKIApAQCAtMTU4Myw3ICsxNzA5LDcgQEAKIAogVGhlIDpmdW5jOmBnZXRjb250ZXh0YCBmdW5jdGlvbiBhY2Nlc3NlcyBhIGRpZmZlcmVudCA6Y2xhc3M6YENvbnRleHRgIG9iamVjdCBmb3IKIGVhY2ggdGhyZWFkLiAgSGF2aW5nIHNlcGFyYXRlIHRocmVhZCBjb250ZXh0cyBtZWFucyB0aGF0IHRocmVhZHMgbWF5IG1ha2UKLWNoYW5nZXMgKHN1Y2ggYXMgYGBnZXRjb250ZXh0LnByZWM9MTBgYCkgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIHRocmVhZHMuCitjaGFuZ2VzIChzdWNoIGFzIGBgZ2V0Y29udGV4dCgpLnByZWM9MTBgYCkgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIHRocmVhZHMuCiAKIExpa2V3aXNlLCB0aGUgOmZ1bmM6YHNldGNvbnRleHRgIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgYXNzaWducyBpdHMgdGFyZ2V0IHRvCiB0aGUgY3VycmVudCB0aHJlYWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nIGIvRG9jL2xpYnJhcnkvZGVwZ3JhcGgtb3V0cHV0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjBiYjFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZGVwZ3JhcGgtb3V0cHV0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QgYi9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKaW5kZXggYzgyMmUwOC4uMjM2ODc2OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdApAQCAtMTksNSArMTksOCBAQAogICAgcHlkb2MucnN0CiAgICBkb2N0ZXN0LnJzdAogICAgdW5pdHRlc3QucnN0CisgICB1bml0dGVzdC5tb2NrLnJzdAorICAgdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QKICAgIDJ0bzMucnN0CiAgICB0ZXN0LnJzdAorICAgdmVudi5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0IGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKaW5kZXggYmRjMzdiMy4uODM2ZTI0MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKQEAgLTc1Miw4ICs3NTIsOCBAQAogICAgICAgICMgd2UncmUgcGFzc2luZyB0aGVzZSBhcyBhcmd1bWVudHMgdG8gdGhlIGRpZmYgZnVuY3Rpb24KICAgICAgICBmcm9tZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdChmcm9tZmlsZSkuc3RfbXRpbWUpCiAgICAgICAgdG9kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KHRvZmlsZSkuc3RfbXRpbWUpCi0gICAgICAgZnJvbWxpbmVzID0gb3Blbihmcm9tZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQotICAgICAgIHRvbGluZXMgPSBvcGVuKHRvZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQorICAgICAgIHdpdGggb3Blbihmcm9tbGluZXMpIGFzIGZyb21mLCBvcGVuKHRvZmlsZSkgYXMgdG9mOgorICAgICAgICAgICBmcm9tbGluZXMsIHRvbGluZXMgPSBsaXN0KGZyb21mKSwgbGlzdCh0b2YpCiAKICAgICAgICBpZiBvcHRpb25zLnU6CiAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLCB0b2ZpbGUsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCAxMDhjZGE3Li44NTRjNTIxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTE3MSwxMSArMTcxLDYgQEAKIAogKipHZW5lcmFsIGluc3RydWN0aW9ucyoqCiAKLS4uIG9wY29kZTo6IFNUT1BfQ09ERQotCi0gICBJbmRpY2F0ZXMgZW5kLW9mLWNvZGUgdG8gdGhlIGNvbXBpbGVyLCBub3QgdXNlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCi0KLQogLi4gb3Bjb2RlOjogTk9QCiAKICAgIERvIG5vdGhpbmcgY29kZS4gIFVzZWQgYXMgYSBwbGFjZWhvbGRlciBieSB0aGUgYnl0ZWNvZGUgb3B0aW1pemVyLgpAQCAtNDM2LDYgKzQzMSwxMyBAQAogICAgUG9wcyBgYFRPU2BgIGFuZCB5aWVsZHMgaXQgZnJvbSBhIDp0ZXJtOmBnZW5lcmF0b3JgLgogCiAKKy4uIG9wY29kZTo6IFlJRUxEX0ZST00KKworICAgUG9wcyBgYFRPU2BgIGFuZCBkZWxlZ2F0ZXMgdG8gaXQgYXMgYSBzdWJpdGVyYXRvciBmcm9tIGEgOnRlcm06YGdlbmVyYXRvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG9wY29kZTo6IElNUE9SVF9TVEFSCiAKICAgIExvYWRzIGFsbCBzeW1ib2xzIG5vdCBzdGFydGluZyB3aXRoIGBgJ18nYGAgZGlyZWN0bHkgZnJvbSB0aGUgbW9kdWxlIFRPUyB0byB0aGUKQEAgLTc1Miw5ICs3NTQsMTAgQEAKIAogLi4gb3Bjb2RlOjogTUFLRV9GVU5DVElPTiAoYXJnYykKIAotICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBUT1MgaXMgdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgZnVuY3Rpb24uICBUaGUgZnVuY3Rpb24gb2JqZWN0IGlzIGRlZmluZWQgdG8gaGF2ZSAqYXJnYyogZGVmYXVsdCBwYXJhbWV0ZXJzLAotICAgd2hpY2ggYXJlIGZvdW5kIGJlbG93IFRPUy4KKyAgIFB1c2hlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3Qgb24gdGhlIHN0YWNrLiAgVE9TIGlzIHRoZQorICAgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgZnVuY3Rpb247IFRPUzEgaXMgdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoCisgICB0aGUgZnVuY3Rpb24uICBUaGUgZnVuY3Rpb24gb2JqZWN0IGlzIGRlZmluZWQgdG8gaGF2ZSAqYXJnYyogZGVmYXVsdCBwYXJhbWV0ZXJzLAorICAgd2hpY2ggYXJlIGZvdW5kIGJlbG93IFRPUzEuCiAKIAogLi4gb3Bjb2RlOjogTUFLRV9DTE9TVVJFIChhcmdjKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdCBiL0RvYy9saWJyYXJ5L2Rpc3R1dGlscy5yc3QKaW5kZXggMjM4Yjc5ZC4uMTFhMjk0OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0CkBAIC0xMiwxOCArMTIsMTQgQEAKIDEwMCUtcHVyZSBQeXRob24sIG9yIG1heSBiZSBleHRlbnNpb24gbW9kdWxlcyB3cml0dGVuIGluIEMsIG9yIG1heSBiZQogY29sbGVjdGlvbnMgb2YgUHl0aG9uIHBhY2thZ2VzIHdoaWNoIGluY2x1ZGUgbW9kdWxlcyBjb2RlZCBpbiBib3RoIFB5dGhvbiBhbmQgQy4KIAotVGhpcyBwYWNrYWdlIGlzIGRpc2N1c3NlZCBpbiB0d28gc2VwYXJhdGUgY2hhcHRlcnM6CiAKK1VzZXIgZG9jdW1lbnRhdGlvbiBhbmQgQVBJIHJlZmVyZW5jZSBhcmUgcHJvdmlkZWQgaW4gYW5vdGhlciBkb2N1bWVudDoKIAogLi4gc2VlYWxzbzo6CiAKICAgIDpyZWY6YGRpc3R1dGlscy1pbmRleGAKICAgICAgIFRoZSBtYW51YWwgZm9yIGRldmVsb3BlcnMgYW5kIHBhY2thZ2VycyBvZiBQeXRob24gbW9kdWxlcy4gIFRoaXMgZGVzY3JpYmVzCiAgICAgICBob3cgdG8gcHJlcGFyZSA6bW9kOmBkaXN0dXRpbHNgXCAtYmFzZWQgcGFja2FnZXMgc28gdGhhdCB0aGV5IG1heSBiZQotICAgICAgZWFzaWx5IGluc3RhbGxlZCBpbnRvIGFuIGV4aXN0aW5nIFB5dGhvbiBpbnN0YWxsYXRpb24uCi0KLSAgIDpyZWY6YGluc3RhbGwtaW5kZXhgCi0gICAgICBBbiAiYWRtaW5pc3RyYXRvcnMiIG1hbnVhbCB3aGljaCBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsaW5nCi0gICAgICBtb2R1bGVzIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4gIFlvdSBkbyBub3QgbmVlZCB0byBiZSBhCi0gICAgICBQeXRob24gcHJvZ3JhbW1lciB0byByZWFkIHRoaXMgbWFudWFsLgotCisgICAgICBlYXNpbHkgaW5zdGFsbGVkIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4gIElmIGFsc28gY29udGFpbnMKKyAgICAgIGluc3RydWN0aW9ucyBmb3IgZW5kLXVzZXJzIHdhbnRpbmcgdG8gaW5zdGFsbCBhIGRpc3R1dGlscy1iYXNlZCBwYWNrYWdlLAorICAgICAgOnJlZjpgaW5zdGFsbC1pbmRleGAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CmluZGV4IGVjOGVkYmUuLjIyMmM3MTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CkBAIC0zMjAsNyArMzIwLDggQEAKICAgVGFicyBpbiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSB0ZXN0ZWQgY29kZSBhcmUgbm90IG1vZGlmaWVkLiAgQmVjYXVzZSBhbnkKICAgaGFyZCB0YWJzIGluIHRoZSBzYW1wbGUgb3V0cHV0ICphcmUqIGV4cGFuZGVkLCB0aGlzIG1lYW5zIHRoYXQgaWYgdGhlIGNvZGUKICAgb3V0cHV0IGluY2x1ZGVzIGhhcmQgdGFicywgdGhlIG9ubHkgd2F5IHRoZSBkb2N0ZXN0IGNhbiBwYXNzIGlzIGlmIHRoZQotICA6Y29uc3Q6YE5PUk1BTElaRV9XSElURVNQQUNFYCBvcHRpb24gb3IgZGlyZWN0aXZlIGlzIGluIGVmZmVjdC4KKyAgOmNvbnN0OmBOT1JNQUxJWkVfV0hJVEVTUEFDRWAgb3B0aW9uIG9yIDpyZWY6YGRpcmVjdGl2ZSA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAKKyAgaXMgaW4gZWZmZWN0LgogICBBbHRlcm5hdGl2ZWx5LCB0aGUgdGVzdCBjYW4gYmUgcmV3cml0dGVuIHRvIGNhcHR1cmUgdGhlIG91dHB1dCBhbmQgY29tcGFyZSBpdAogICB0byBhbiBleHBlY3RlZCB2YWx1ZSBhcyBwYXJ0IG9mIHRoZSB0ZXN0LiAgVGhpcyBoYW5kbGluZyBvZiB0YWJzIGluIHRoZQogICBzb3VyY2Ugd2FzIGFycml2ZWQgYXQgdGhyb3VnaCB0cmlhbCBhbmQgZXJyb3IsIGFuZCBoYXMgcHJvdmVuIHRvIGJlIHRoZSBsZWFzdApAQCAtNDg1LDE1ICs0ODYsMTYgQEAKICAgICAgU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4CiAKIAorLi4gX29wdGlvbi1mbGFncy1hbmQtZGlyZWN0aXZlczoKIC4uIF9kb2N0ZXN0LW9wdGlvbnM6CiAKLU9wdGlvbiBGbGFncyBhbmQgRGlyZWN0aXZlcwotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCitPcHRpb24gRmxhZ3MKK15eXl5eXl5eXl5eXgogCiBBIG51bWJlciBvZiBvcHRpb24gZmxhZ3MgY29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2YgZG9jdGVzdCdzIGJlaGF2aW9yLgogU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFncyBhcmUgc3VwcGxpZWQgYXMgbW9kdWxlIGNvbnN0YW50cywgd2hpY2ggY2FuIGJlCiBvcidlZCB0b2dldGhlciBhbmQgcGFzc2VkIHRvIHZhcmlvdXMgZnVuY3Rpb25zLiAgVGhlIG5hbWVzIGNhbiBhbHNvIGJlIHVzZWQgaW4KLWRvY3Rlc3QgZGlyZWN0aXZlcyAoc2VlIGJlbG93KS4KKzpyZWY6YGRvY3Rlc3QgZGlyZWN0aXZlcyA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAuCiAKIFRoZSBmaXJzdCBncm91cCBvZiBvcHRpb25zIGRlZmluZSB0ZXN0IHNlbWFudGljcywgY29udHJvbGxpbmcgYXNwZWN0cyBvZiBob3cKIGRvY3Rlc3QgZGVjaWRlcyB3aGV0aGVyIGFjdHVhbCBvdXRwdXQgbWF0Y2hlcyBhbiBleGFtcGxlJ3MgZXhwZWN0ZWQgb3V0cHV0OgpAQCAtNTQ3LDE0ICs1NDksMTQgQEAKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICBJdCB3aWxsIGFsc28gaWdub3JlIHRoZSBtb2R1bGUgbmFtZSB1c2VkIGluIFB5dGhvbiAzIGRvY3Rlc3QgcmVwb3J0cy4gSGVuY2UKLSAgIGJvdGggdGhlc2UgdmFyaWF0aW9ucyB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB0ZXN0IGlzIHJ1biB1bmRlcgotICAgUHl0aG9uIDIuNyBvciBQeXRob24gMy4yIChvciBsYXRlciB2ZXJzaW9ucyk6CisgICBib3RoIG9mIHRoZXNlIHZhcmlhdGlvbnMgd2lsbCB3b3JrIHdpdGggdGhlIGZsYWcgc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mCisgICB3aGV0aGVyIHRoZSB0ZXN0IGlzIHJ1biB1bmRlciBQeXRob24gMi43IG9yIFB5dGhvbiAzLjIgKG9yIGxhdGVyIHZlcnNpb25zKTo6CiAKLSAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpICNkb2N0ZXN0OiArSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwKKyAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICBDdXN0b21FcnJvcjogbWVzc2FnZQogCi0gICAgICA+Pj4gcmFpc2UgQ3VzdG9tRXJyb3IoJ21lc3NhZ2UnKSAjZG9jdGVzdDogK0lHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICA+Pj4gcmFpc2UgQ3VzdG9tRXJyb3IoJ21lc3NhZ2UnKQogICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgbXlfbW9kdWxlLkN1c3RvbUVycm9yOiBtZXNzYWdlCiAKQEAgLTU2NCwxNSArNTY2LDE2IEBACiAgICBleGNlcHRpb24gbmFtZS4gVXNpbmcgOmNvbnN0OmBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTGAgYW5kIHRoZSBkZXRhaWxzCiAgICBmcm9tIFB5dGhvbiAyLjMgaXMgYWxzbyB0aGUgb25seSBjbGVhciB3YXkgdG8gd3JpdGUgYSBkb2N0ZXN0IHRoYXQgZG9lc24ndAogICAgY2FyZSBhYm91dCB0aGUgZXhjZXB0aW9uIGRldGFpbCB5ZXQgY29udGludWVzIHRvIHBhc3MgdW5kZXIgUHl0aG9uIDIuMyBvcgotICAgZWFybGllciAodGhvc2UgcmVsZWFzZXMgZG8gbm90IHN1cHBvcnQgZG9jdGVzdCBkaXJlY3RpdmVzIGFuZCBpZ25vcmUgdGhlbQotICAgYXMgaXJyZWxldmFudCBjb21tZW50cykuIEZvciBleGFtcGxlLCA6OgorICAgZWFybGllciAodGhvc2UgcmVsZWFzZXMgZG8gbm90IHN1cHBvcnQgOnJlZjpgZG9jdGVzdCBkaXJlY3RpdmVzCisgICA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAgYW5kIGlnbm9yZSB0aGVtIGFzIGlycmVsZXZhbnQgY29tbWVudHMpLiBGb3IgZXhhbXBsZTo6CiAKLSAgICAgID4+PiAoMSwgMilbM10gPSAnbW9vJyAjZG9jdGVzdDogK0lHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICA+Pj4gKDEsIDIpWzNdID0gJ21vbycKICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwogICAgICAgVHlwZUVycm9yOiBvYmplY3QgZG9lc24ndCBzdXBwb3J0IGl0ZW0gYXNzaWdubWVudAogCi0gICBwYXNzZXMgdW5kZXIgUHl0aG9uIDIuMyBhbmQgbGF0ZXIgUHl0aG9uIHZlcnNpb25zLCBldmVuIHRob3VnaCB0aGUgZGV0YWlsCisgICBwYXNzZXMgdW5kZXIgUHl0aG9uIDIuMyBhbmQgbGF0ZXIgUHl0aG9uIHZlcnNpb25zIHdpdGggdGhlIGZsYWcgc3BlY2lmaWVkLAorICAgZXZlbiB0aG91Z2ggdGhlIGRldGFpbAogICAgY2hhbmdlZCBpbiBQeXRob24gMi40IHRvIHNheSAiZG9lcyBub3QiIGluc3RlYWQgb2YgImRvZXNuJ3QiLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpAQCAtNjM0LDkgKzYzNywzMCBAQAogCiAgICBBIGJpdG1hc2sgb3InaW5nIHRvZ2V0aGVyIGFsbCB0aGUgcmVwb3J0aW5nIGZsYWdzIGFib3ZlLgogCi0iRG9jdGVzdCBkaXJlY3RpdmVzIiBtYXkgYmUgdXNlZCB0byBtb2RpZnkgdGhlIG9wdGlvbiBmbGFncyBmb3IgaW5kaXZpZHVhbAotZXhhbXBsZXMuICBEb2N0ZXN0IGRpcmVjdGl2ZXMgYXJlIGV4cHJlc3NlZCBhcyBhIHNwZWNpYWwgUHl0aG9uIGNvbW1lbnQKLWZvbGxvd2luZyBhbiBleGFtcGxlJ3Mgc291cmNlIGNvZGU6CisKK1RoZXJlIGlzIGFsc28gYSB3YXkgdG8gcmVnaXN0ZXIgbmV3IG9wdGlvbiBmbGFnIG5hbWVzLCB0aG91Z2ggdGhpcyBpc24ndAordXNlZnVsIHVubGVzcyB5b3UgaW50ZW5kIHRvIGV4dGVuZCA6bW9kOmBkb2N0ZXN0YCBpbnRlcm5hbHMgdmlhIHN1YmNsYXNzaW5nOgorCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfb3B0aW9uZmxhZyhuYW1lKQorCisgICBDcmVhdGUgYSBuZXcgb3B0aW9uIGZsYWcgd2l0aCBhIGdpdmVuIG5hbWUsIGFuZCByZXR1cm4gdGhlIG5ldyBmbGFnJ3MgaW50ZWdlcgorICAgdmFsdWUuICA6ZnVuYzpgcmVnaXN0ZXJfb3B0aW9uZmxhZ2AgY2FuIGJlIHVzZWQgd2hlbiBzdWJjbGFzc2luZworICAgOmNsYXNzOmBPdXRwdXRDaGVja2VyYCBvciA6Y2xhc3M6YERvY1Rlc3RSdW5uZXJgIHRvIGNyZWF0ZSBuZXcgb3B0aW9ucyB0aGF0IGFyZQorICAgc3VwcG9ydGVkIGJ5IHlvdXIgc3ViY2xhc3Nlcy4gIDpmdW5jOmByZWdpc3Rlcl9vcHRpb25mbGFnYCBzaG91bGQgYWx3YXlzIGJlCisgICBjYWxsZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBpZGlvbTo6CisKKyAgICAgIE1ZX0ZMQUcgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdNWV9GTEFHJykKKworCisuLiBfZG9jdGVzdC1kaXJlY3RpdmVzOgorCitEaXJlY3RpdmVzCiteXl5eXl5eXl5eCisKK0RvY3Rlc3QgZGlyZWN0aXZlcyBtYXkgYmUgdXNlZCB0byBtb2RpZnkgdGhlIDpyZWY6YG9wdGlvbiBmbGFncworPGRvY3Rlc3Qtb3B0aW9ucz5gIGZvciBhbiBpbmRpdmlkdWFsIGV4YW1wbGUuICBEb2N0ZXN0IGRpcmVjdGl2ZXMgYXJlCitzcGVjaWFsIFB5dGhvbiBjb21tZW50cyBmb2xsb3dpbmcgYW4gZXhhbXBsZSdzIHNvdXJjZSBjb2RlOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6IGRvY3Rlc3QKICAgIGRpcmVjdGl2ZTogIiMiICJkb2N0ZXN0OiIgYGRpcmVjdGl2ZV9vcHRpb25zYApAQCAtNjkzLDIwICs3MTcsNiBAQAogZnVuY3Rpb25zIHRoYXQgcnVuIGRvY3Rlc3RzLCBlc3RhYmxpc2hpbmcgZGlmZmVyZW50IGRlZmF1bHRzLiAgSW4gc3VjaCBjYXNlcywKIGRpc2FibGluZyBhbiBvcHRpb24gdmlhIGBgLWBgIGluIGEgZGlyZWN0aXZlIGNhbiBiZSB1c2VmdWwuCiAKLVRoZXJlJ3MgYWxzbyBhIHdheSB0byByZWdpc3RlciBuZXcgb3B0aW9uIGZsYWcgbmFtZXMsIGFsdGhvdWdoIHRoaXMgaXNuJ3QgdXNlZnVsCi11bmxlc3MgeW91IGludGVuZCB0byBleHRlbmQgOm1vZDpgZG9jdGVzdGAgaW50ZXJuYWxzIHZpYSBzdWJjbGFzc2luZzoKLQotCi0uLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX29wdGlvbmZsYWcobmFtZSkKLQotICAgQ3JlYXRlIGEgbmV3IG9wdGlvbiBmbGFnIHdpdGggYSBnaXZlbiBuYW1lLCBhbmQgcmV0dXJuIHRoZSBuZXcgZmxhZydzIGludGVnZXIKLSAgIHZhbHVlLiAgOmZ1bmM6YHJlZ2lzdGVyX29wdGlvbmZsYWdgIGNhbiBiZSB1c2VkIHdoZW4gc3ViY2xhc3NpbmcKLSAgIDpjbGFzczpgT3V0cHV0Q2hlY2tlcmAgb3IgOmNsYXNzOmBEb2NUZXN0UnVubmVyYCB0byBjcmVhdGUgbmV3IG9wdGlvbnMgdGhhdCBhcmUKLSAgIHN1cHBvcnRlZCBieSB5b3VyIHN1YmNsYXNzZXMuICA6ZnVuYzpgcmVnaXN0ZXJfb3B0aW9uZmxhZ2Agc2hvdWxkIGFsd2F5cyBiZQotICAgY2FsbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgaWRpb206OgotCi0gICAgICBNWV9GTEFHID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnTVlfRkxBRycpCi0KIAogLi4gX2RvY3Rlc3Qtd2FybmluZ3M6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CmluZGV4IGQ4ZjMzMGYuLjlmMGE5ZTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdApAQCAtNzMsMTcgKzczLDM4IEBACiAqIDpjbGFzczpgU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0YCAtLSBUaGUgc3RhcnQgYm91bmRhcnkgY2xhaW1lZCBpbiB0aGUKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHdhcyBuZXZlciBmb3VuZC4KIAorKiA6Y2xhc3M6YENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdGAgLS0gQSBzdGFydCBib3VuZGFyeSB3YXMgZm91bmQsIGJ1dAorICBubyBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5IHdhcyBldmVyIGZvdW5kLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAqIDpjbGFzczpgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3RgIC0tIFRoZSBtZXNzYWdlIGhhZCBhIGNvbnRpbnVhdGlvbgogICBsaW5lIGFzIGl0cyBmaXJzdCBoZWFkZXIgbGluZS4KIAogKiA6Y2xhc3M6YE1pc3BsYWNlZEVudmVsb3BlSGVhZGVyRGVmZWN0YCAtIEEgIlVuaXggRnJvbSIgaGVhZGVyIHdhcyBmb3VuZCBpbiB0aGUKICAgbWlkZGxlIG9mIGEgaGVhZGVyIGJsb2NrLgogCisqIDpjbGFzczpgTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RgIC0gQSBsaW5lIHdhcyBmb3VuZCB3aGlsZSBwYXJzaW5nCisgIGhlYWRlcnMgdGhhdCBoYWQgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBidXQgY29udGFpbmVkIG5vICc6Jy4gIFBhcnNpbmcKKyAgY29udGludWVzIGFzc3VtaW5nIHRoYXQgdGhlIGxpbmUgcmVwcmVzZW50cyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgYm9keS4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogKiA6Y2xhc3M6YE1hbGZvcm1lZEhlYWRlckRlZmVjdGAgLS0gQSBoZWFkZXIgd2FzIGZvdW5kIHRoYXQgd2FzIG1pc3NpbmcgYSBjb2xvbiwKICAgb3Igd2FzIG90aGVyd2lzZSBtYWxmb3JtZWQuCiAKKyAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICBUaGlzIGRlZmVjdCBoYXMgbm90IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBQeXRob24gdmVyc2lvbnMuCisKICogOmNsYXNzOmBNdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3RgIC0tIEEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEKICAgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgbm8gc3VicGFydHMgd2VyZSBmb3VuZC4gIE5vdGUgdGhhdCB3aGVuIGEgbWVzc2FnZSBoYXMKICAgdGhpcyBkZWZlY3QsIGl0cyA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBmYWxzZSBldmVuIHRob3VnaCBpdHMKICAgY29udGVudCB0eXBlIGNsYWltcyB0byBiZSA6bWltZXR5cGU6YG11bHRpcGFydGAuCiAKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCB0aGUgcGFkZGluZyB3YXMgbm90IGNvcnJlY3QuICBFbm91Z2ggcGFkZGluZyBpcyBhZGRlZCB0bworICBwZXJmb3JtIHRoZSBkZWNvZGUsIGJ1dCB0aGUgcmVzdWx0aW5nIGRlY29kZWQgYnl0ZXMgbWF5IGJlIGludmFsaWQuCisKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NCBhbHBoZWJldCB3ZXJlIGVuY291bnRlcmVkLgorICBUaGUgY2hhcmFjdGVycyBhcmUgaWdub3JlZCwgYnV0IHRoZSByZXN1bHRpbmcgZGVjb2RlZCBieXRlcyBtYXkgYmUgaW52YWxpZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IDg4YzYyYTIuLmMxNzJhY2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtMzIsNyArMzIsNyBAQAogOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGU6CiAKIAotLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAogICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCkBAIC01MywxMCArNTMsMTcgQEAKICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgogCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+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+ZGF0ZXRpbWUudHppbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBta3RpbWVfdHoodHVwbGUpCiAKICAgIFR1cm4gYSAxMC10dXBsZSBhcyByZXR1cm5lZCBieSA6ZnVuYzpgcGFyc2VkYXRlX3R6YCBpbnRvIGEgVVRDIHRpbWVzdGFtcC4gIEl0CkBAIC0xMDUsNiArMTI3LDM2IEBACiAgICBgYEZhbHNlYGAuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAKIAorLi4gZnVuY3Rpb246OiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSkKKworICAgTGlrZSBgYGZvcm1hdGRhdGVgYCwgYnV0IHRoZSBpbnB1dCBpcyBhIDptb2Q6YGRhdGV0aW1lYCBpbnN0YW5jZS4gIElmIGl0IGlzCisgICBhIG5haXZlIGRhdGV0aW1lLCBpdCBpcyBhc3N1bWVkIHRvIGJlICJVVEMgd2l0aCBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHNvdXJjZSB0aW1lem9uZSIsIGFuZCB0aGUgY29udmVudGlvbmFsIGBgLTAwMDBgYCBpcyB1c2VkIGZvciB0aGUgdGltZXpvbmUuCisgICBJZiBpdCBpcyBhbiBhd2FyZSBgYGRhdGV0aW1lYGAsIHRoZW4gdGhlIG51bWVyaWMgdGltZXpvbmUgb2Zmc2V0IGlzIHVzZWQuCisgICBJZiBpdCBpcyBhbiBhd2FyZSB0aW1lem9uZSB3aXRoIG9mZnNldCB6ZXJvLCB0aGVuICp1c2VnbXQqIG1heSBiZSBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBzdHJpbmcgYGBHTVRgYCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG51bWVyaWMKKyAgIHRpbWV6b25lIG9mZnNldC4gIFRoaXMgcHJvdmlkZXMgYSB3YXkgdG8gZ2VuZXJhdGUgc3RhbmRhcmRzIGNvbmZvcm1hbnQgSFRUUAorICAgZGF0ZSBoZWFkZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGxvY2FsdGltZShkdD1Ob25lKQorCisgICAgUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LiAgSWYgY2FsbGVkIHdpdGhvdXQKKyAgICBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KiBhcmd1bWVudCBzaG91bGQgYmUgYQorICAgIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZQorICAgIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcyBuYWl2ZSAodGhhdAorICAgIGlzLCBgYGR0LnR6aW5mb2BgIGlzIGBgTm9uZWBgKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLiAgSW4gdGhpcworICAgIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgYGBsb2NhbHRpbWVgYCB0byBwcmVzdW1lCisgICAgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkgaXMgb3IgaXMgbm90CisgICAgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgorICAgICppc2RzdCogY2F1c2VzIHRoZSBgYGxvY2FsdGltZWBgIHRvIGF0dGVtcHQgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUKKyAgICBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSkKIAogICAgUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYW4gOnJmYzpgMjgyMmBcIC1jb21wbGlhbnQKQEAgLTExNSw3ICsxNjcsOCBAQAogICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CiAgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIGRvbWFpbiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWRkZWQgdGhlICpkb21haW4qIGtleXdvcmQuCiAKIAogLi4gZnVuY3Rpb246OiBkZWNvZGVfcmZjMjIzMShzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCA3ZDYyMmMyLi4wNTNiYTU2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMzQsNiArMzQsMjcgQEAKIGRlZmluaW5nIGV4Y2VwdGlvbnMgaXMgYXZhaWxhYmxlIGluIHRoZSBQeXRob24gVHV0b3JpYWwgdW5kZXIKIDpyZWY6YHR1dC11c2VyZXhjZXB0aW9uc2AuCiAKK1doZW4gcmFpc2luZyAob3IgcmUtcmFpc2luZykgYW4gZXhjZXB0aW9uIGluIGFuIDprZXl3b3JkOmBleGNlcHRgIGNsYXVzZQorOmF0dHI6YF9fY29udGV4dF9fYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUgbGFzdCBleGNlcHRpb24gY2F1Z2h0OyBpZiB0aGUKK25ldyBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgdGhlIHRyYWNlYmFjayB0aGF0IGlzIGV2ZW50dWFsbHkgZGlzcGxheWVkIHdpbGwKK2luY2x1ZGUgdGhlIG9yaWdpbmF0aW5nIGV4Y2VwdGlvbihzKSBhbmQgdGhlIGZpbmFsIGV4Y2VwdGlvbi4KKworVGhpcyBpbXBsaWNpdCBleGNlcHRpb24gY2hhaW4gY2FuIGJlIG1hZGUgZXhwbGljaXQgYnkgdXNpbmcgOmtleXdvcmQ6YGZyb21gIHdpdGgKKzprZXl3b3JkOmByYWlzZWAuICBUaGUgc2luZ2xlIGFyZ3VtZW50IHRvIDprZXl3b3JkOmBmcm9tYCBtdXN0IGJlIGFuIGV4Y2VwdGlvbgorb3IgYGBOb25lYGAuIEl0IHdpbGwgYmUgc2V0IGFzIDphdHRyOmBfX2NhdXNlX19gIG9uIHRoZSByYWlzZWQgZXhjZXB0aW9uLgorU2V0dGluZyA6YXR0cjpgX19jYXVzZV9fYCBpbXBsaWNpdGx5IHNldHMgdGhlIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgdG8KK2BgVHJ1ZWBgLiBJZiA6YXR0cjpgX19jYXVzZV9fYCBpcyBhbiBleGNlcHRpb24sIGl0IHdpbGwgYmUgZGlzcGxheWVkLiBJZgorOmF0dHI6YF9fY2F1c2VfX2AgaXMgcHJlc2VudCBvciA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gIGhhcyBhIHRydWUgdmFsdWUsCis6YXR0cjpgX19jb250ZXh0X19gIHdpbGwgbm90IGJlIGRpc3BsYXllZC4KKworSW4gZWl0aGVyIGNhc2UsIHRoZSBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGluZyBjb2RlIHdpbGwgbm90IGRpc3BsYXkgYW55IG9mIHRoZQorcmVtYWluaW5nIGxpbmtzIGluIHRoZSA6YXR0cjpgX19jb250ZXh0X19gIGNoYWluIGlmIDphdHRyOmBfX2NhdXNlX19gIGhhcyBiZWVuCitzZXQuCisKKworQmFzZSBjbGFzc2VzCistLS0tLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIG1vc3RseSBhcyBiYXNlIGNsYXNzZXMgZm9yIG90aGVyIGV4Y2VwdGlvbnMuCiAKIC4uIGV4Y2VwdGlvbjo6IEJhc2VFeGNlcHRpb24KQEAgLTkwLDI3ICsxMTEsOCBAQAogICAgY2FuIGJlIHJhaXNlZCBkaXJlY3RseSBieSA6ZnVuYzpgY29kZWNzLmxvb2t1cGAuCiAKIAotLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgotCi0gICBUaGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyB0aGF0IGNhbiBvY2N1ciBvdXRzaWRlIHRoZSBQeXRob24gc3lzdGVtOgotICAgOmV4YzpgSU9FcnJvcmAsIDpleGM6YE9TRXJyb3JgLiAgV2hlbiBleGNlcHRpb25zIG9mIHRoaXMgdHlwZSBhcmUgY3JlYXRlZCB3aXRoIGEKLSAgIDItdHVwbGUsIHRoZSBmaXJzdCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUgaW5zdGFuY2UncyA6YXR0cjpgZXJybm9gIGF0dHJpYnV0ZQotICAgKGl0IGlzIGFzc3VtZWQgdG8gYmUgYW4gZXJyb3IgbnVtYmVyKSwgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhdmFpbGFibGUgb24gdGhlCi0gICA6YXR0cjpgc3RyZXJyb3JgIGF0dHJpYnV0ZSAoaXQgaXMgdXN1YWxseSB0aGUgYXNzb2NpYXRlZCBlcnJvciBtZXNzYWdlKS4gIFRoZQotICAgdHVwbGUgaXRzZWxmIGlzIGFsc28gYXZhaWxhYmxlIG9uIHRoZSA6YXR0cjpgYXJnc2AgYXR0cmlidXRlLgotCi0gICBXaGVuIGFuIDpleGM6YEVudmlyb25tZW50RXJyb3JgIGV4Y2VwdGlvbiBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIDMtdHVwbGUsIHRoZQotICAgZmlyc3QgdHdvIGl0ZW1zIGFyZSBhdmFpbGFibGUgYXMgYWJvdmUsIHdoaWxlIHRoZSB0aGlyZCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUKLSAgIDphdHRyOmBmaWxlbmFtZWAgYXR0cmlidXRlLiAgSG93ZXZlciwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUKLSAgIDphdHRyOmBhcmdzYCBhdHRyaWJ1dGUgY29udGFpbnMgb25seSBhIDItdHVwbGUgb2YgdGhlIGZpcnN0IHR3byBjb25zdHJ1Y3RvcgotICAgYXJndW1lbnRzLgotCi0gICBUaGUgOmF0dHI6YGZpbGVuYW1lYCBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgd2hlbiB0aGlzIGV4Y2VwdGlvbiBpcyBjcmVhdGVkIHdpdGgKLSAgIG90aGVyIHRoYW4gMyBhcmd1bWVudHMuICBUaGUgOmF0dHI6YGVycm5vYCBhbmQgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGVzIGFyZQotICAgYWxzbyBgYE5vbmVgYCB3aGVuIHRoZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCB3aXRoIG90aGVyIHRoYW4gMiBvciAzIGFyZ3VtZW50cy4KLSAgIEluIHRoaXMgbGFzdCBjYXNlLCA6YXR0cjpgYXJnc2AgY29udGFpbnMgdGhlIHZlcmJhdGltIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhcyBhCi0gICB0dXBsZS4KLQorQ29uY3JldGUgZXhjZXB0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHRoZSBleGNlcHRpb25zIHRoYXQgYXJlIHVzdWFsbHkgcmFpc2VkLgogCkBAIC0xNTEsMjEgKzE1MywxOSBAQAogICAgaXQgaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLgogCiAKLS4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYW4gSS9PIG9wZXJhdGlvbiAoc3VjaCBhcyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByaW50YCBvcgotICAgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9ucyBvciBhIG1ldGhvZCBvZiBhIDp0ZXJtOmBmaWxlIG9iamVjdGApIGZhaWxzIGZvciBhbgotICAgSS9PLXJlbGF0ZWQgcmVhc29uLCBlLmcuLCAiZmlsZSBub3QgZm91bmQiIG9yICJkaXNrIGZ1bGwiLgotCi0gICBUaGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIFNlZSB0aGUgZGlzY3Vzc2lvbiBhYm92ZQotICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9uIGluc3RhbmNlIGF0dHJpYnV0ZXMuCi0KLQogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAogICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCiAgICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgogCisgICBUaGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcyBjYW4gYmUgc2V0IHVzaW5nIGtleXdvcmQtb25seQorICAgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4gV2hlbiBzZXQgdGhleSByZXByZXNlbnQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZQorICAgdGhhdCB3YXMgYXR0ZW1wdGVkIHRvIGJlIGltcG9ydGVkIGFuZCB0aGUgcGF0aCB0byBhbnkgZmlsZSB3aGljaCB0cmlnZ2VyZWQKKyAgIHRoZSBleGNlcHRpb24sIHJlc3BlY3RpdmVseS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzLgorCiAKIC4uIGV4Y2VwdGlvbjo6IEluZGV4RXJyb3IKIApAQCAtMjIxLDE3ICsyMjEsMzAgQEAKIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IGVycm5vCiAKLSAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIEl0IGlzIHJhaXNlZCB3aGVuIGEKLSAgIGZ1bmN0aW9uIHJldHVybnMgYSBzeXN0ZW0tcmVsYXRlZCBlcnJvciAobm90IGZvciBpbGxlZ2FsIGFyZ3VtZW50IHR5cGVzIG9yCi0gICBvdGhlciBpbmNpZGVudGFsIGVycm9ycykuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgYSBudW1lcmljIGVycm9yCi0gICBjb2RlIGZyb20gOmM6ZGF0YTpgZXJybm9gLCBhbmQgdGhlIDphdHRyOmBzdHJlcnJvcmAgYXR0cmlidXRlIGlzIHRoZQotICAgY29ycmVzcG9uZGluZyBzdHJpbmcsIGFzIHdvdWxkIGJlIHByaW50ZWQgYnkgdGhlIEMgZnVuY3Rpb24gOmM6ZnVuYzpgcGVycm9yYC4KLSAgIFNlZSB0aGUgbW9kdWxlIDptb2Q6YGVycm5vYCwgd2hpY2ggY29udGFpbnMgbmFtZXMgZm9yIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkCi0gICBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLgorICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBzeXN0ZW0gZnVuY3Rpb24gcmV0dXJucyBhIHN5c3RlbS1yZWxhdGVkCisgICBlcnJvciwgaW5jbHVkaW5nIEkvTyBmYWlsdXJlcyBzdWNoIGFzICJmaWxlIG5vdCBmb3VuZCIgb3IgImRpc2sgZnVsbCIKKyAgIChub3QgZm9yIGlsbGVnYWwgYXJndW1lbnQgdHlwZXMgb3Igb3RoZXIgaW5jaWRlbnRhbCBlcnJvcnMpLiAgT2Z0ZW4gYQorICAgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgd2lsbCBhY3R1YWxseSBiZSByYWlzZWQgYXMgZGVzY3JpYmVkIGluCisgICBgT1MgZXhjZXB0aW9uc2BfIGJlbG93LiAgVGhlIDphdHRyOmBlcnJub2AgYXR0cmlidXRlIGlzIGEgbnVtZXJpYyBlcnJvcgorICAgY29kZSBmcm9tIHRoZSBDIHZhcmlhYmxlIDpjOmRhdGE6YGVycm5vYC4KIAotICAgRm9yIGV4Y2VwdGlvbnMgdGhhdCBpbnZvbHZlIGEgZmlsZSBzeXN0ZW0gcGF0aCAoc3VjaCBhcyA6ZnVuYzpgY2hkaXJgIG9yCi0gICA6ZnVuYzpgdW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGEgdGhpcmQgYXR0cmlidXRlLAotICAgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorICAgVW5kZXIgV2luZG93cywgdGhlIDphdHRyOmB3aW5lcnJvcmAgYXR0cmlidXRlIGdpdmVzIHlvdSB0aGUgbmF0aXZlCisgICBXaW5kb3dzIGVycm9yIGNvZGUuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgdGhlbiBhbiBhcHByb3hpbWF0ZQorICAgdHJhbnNsYXRpb24sIGluIFBPU0lYIHRlcm1zLCBvZiB0aGF0IG5hdGl2ZSBlcnJvciBjb2RlLgorCisgICBVbmRlciBhbGwgcGxhdGZvcm1zLCB0aGUgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGUgaXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgIGVycm9yIG1lc3NhZ2UgYXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKGFzIGZvcm1hdHRlZCBieSB0aGUgQworICAgZnVuY3Rpb25zIDpjOmZ1bmM6YHBlcnJvcmAgdW5kZXIgUE9TSVgsIGFuZCA6YzpmdW5jOmBGb3JtYXRNZXNzYWdlYAorICAgV2luZG93cykuCisKKyAgIEZvciBleGNlcHRpb25zIHRoYXQgaW52b2x2ZSBhIGZpbGUgc3lzdGVtIHBhdGggKHN1Y2ggYXMgOmZ1bmM6YG9wZW5gIG9yCisgICA6ZnVuYzpgb3MudW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGFuIGFkZGl0aW9uYWwKKyAgIGF0dHJpYnV0ZSwgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBXaW5kb3dzRXJyb3JgLAorICAgICAgOmV4YzpgVk1TRXJyb3JgLCA6ZXhjOmBzb2NrZXQuZXJyb3JgLCA6ZXhjOmBzZWxlY3QuZXJyb3JgIGFuZAorICAgICAgOmV4YzpgbW1hcC5lcnJvcmAgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IE92ZXJmbG93RXJyb3IKQEAgLTI2Miw4ICsyNzUsMjAgQEAKIC4uIGV4Y2VwdGlvbjo6IFN0b3BJdGVyYXRpb24KIAogICAgUmFpc2VkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBuZXh0YCBhbmQgYW4gOnRlcm06YGl0ZXJhdG9yYFwncwotICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kIHRvIHNpZ25hbCB0aGF0IHRoZXJlIGFyZSBubyBmdXJ0aGVyIHZhbHVlcy4KKyAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gIG1ldGhvZCB0byBzaWduYWwgdGhhdCB0aGVyZSBhcmUgbm8gZnVydGhlcgorICAgaXRlbXMgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLgogCisgICBUaGUgZXhjZXB0aW9uIG9iamVjdCBoYXMgYSBzaW5nbGUgYXR0cmlidXRlIDphdHRyOmB2YWx1ZWAsIHdoaWNoIGlzCisgICBnaXZlbiBhcyBhbiBhcmd1bWVudCB3aGVuIGNvbnN0cnVjdGluZyB0aGUgZXhjZXB0aW9uLCBhbmQgZGVmYXVsdHMKKyAgIHRvIDpjb25zdDpgTm9uZWAuCisKKyAgIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gcmV0dXJucywgYSBuZXcgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgaW5zdGFuY2UgaXMKKyAgIHJhaXNlZCwgYW5kIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUKKyAgIDphdHRyOmB2YWx1ZWAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgZXhjZXB0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB2YWx1ZWBgIGF0dHJpYnV0ZSBhbmQgdGhlIGFiaWxpdHkgZm9yIGdlbmVyYXRvciBmdW5jdGlvbnMgdG8KKyAgICAgIHVzZSBpdCB0byByZXR1cm4gYSB2YWx1ZS4KIAogLi4gZXhjZXB0aW9uOjogU3ludGF4RXJyb3IKIApAQCAtMzcyLDIxICszOTcsNiBAQAogICAgbW9yZSBwcmVjaXNlIGV4Y2VwdGlvbiBzdWNoIGFzIDpleGM6YEluZGV4RXJyb3JgLgogCiAKLS4uIGV4Y2VwdGlvbjo6IFZNU0Vycm9yCi0KLSAgIE9ubHkgYXZhaWxhYmxlIG9uIFZNUy4gIFJhaXNlZCB3aGVuIGEgVk1TLXNwZWNpZmljIGVycm9yIG9jY3Vycy4KLQotCi0uLiBleGNlcHRpb246OiBXaW5kb3dzRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYSBXaW5kb3dzLXNwZWNpZmljIGVycm9yIG9jY3VycyBvciB3aGVuIHRoZSBlcnJvciBudW1iZXIgZG9lcyBub3QKLSAgIGNvcnJlc3BvbmQgdG8gYW4gOmM6ZGF0YTpgZXJybm9gIHZhbHVlLiAgVGhlIDphdHRyOmB3aW5lcnJvcmAgYW5kCi0gICA6YXR0cjpgc3RyZXJyb3JgIHZhbHVlcyBhcmUgY3JlYXRlZCBmcm9tIHRoZSByZXR1cm4gdmFsdWVzIG9mIHRoZQotICAgOmM6ZnVuYzpgR2V0TGFzdEVycm9yYCBhbmQgOmM6ZnVuYzpgRm9ybWF0TWVzc2FnZWAgZnVuY3Rpb25zIGZyb20gdGhlIFdpbmRvd3MKLSAgIFBsYXRmb3JtIEFQSS4gVGhlIDphdHRyOmBlcnJub2AgdmFsdWUgbWFwcyB0aGUgOmF0dHI6YHdpbmVycm9yYCB2YWx1ZSB0bwotICAgY29ycmVzcG9uZGluZyBgYGVycm5vLmhgYCB2YWx1ZXMuIFRoaXMgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KLQotCiAuLiBleGNlcHRpb246OiBaZXJvRGl2aXNpb25FcnJvcgogCiAgICBSYWlzZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIGEgZGl2aXNpb24gb3IgbW9kdWxvIG9wZXJhdGlvbiBpcyB6ZXJvLiAgVGhlCkBAIC0zOTQsNiArNDA0LDEzNiBAQAogICAgb3BlcmF0aW9uLgogCiAKK1RoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUga2VwdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zOworc3RhcnRpbmcgZnJvbSBQeXRob24gMy4zLCB0aGV5IGFyZSBhbGlhc2VzIG9mIDpleGM6YE9TRXJyb3JgLgorCisuLiBleGNlcHRpb246OiBFbnZpcm9ubWVudEVycm9yCisKKy4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKKworLi4gZXhjZXB0aW9uOjogVk1TRXJyb3IKKworICAgT25seSBhdmFpbGFibGUgb24gVk1TLgorCisuLiBleGNlcHRpb246OiBXaW5kb3dzRXJyb3IKKworICAgT25seSBhdmFpbGFibGUgb24gV2luZG93cy4KKworCitPUyBleGNlcHRpb25zCiteXl5eXl5eXl5eXl5eCisKK1RoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUgc3ViY2xhc3NlcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhleSBnZXQgcmFpc2VkCitkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBlcnJvciBjb2RlLgorCisuLiBleGNlcHRpb246OiBCbG9ja2luZ0lPRXJyb3IKKworICAgUmFpc2VkIHdoZW4gYW4gb3BlcmF0aW9uIHdvdWxkIGJsb2NrIG9uIGFuIG9iamVjdCAoZS5nLiBzb2NrZXQpIHNldAorICAgZm9yIG5vbi1ibG9ja2luZyBvcGVyYXRpb24uCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQUdBSU5gYCwgYGBFQUxSRUFEWWBgLAorICAgYGBFV09VTERCTE9DS2BgIGFuZCBgYEVJTlBST0dSRVNTYGAuCisKKyAgIEluIGFkZGl0aW9uIHRvIHRob3NlIG9mIDpleGM6YE9TRXJyb3JgLCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGNhbiBoYXZlCisgICBvbmUgbW9yZSBhdHRyaWJ1dGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNoYXJhY3RlcnNfd3JpdHRlbgorCisgICAgICBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbQorICAgICAgYmVmb3JlIGl0IGJsb2NrZWQuICBUaGlzIGF0dHJpYnV0ZSBpcyBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUKKyAgICAgIGJ1ZmZlcmVkIEkvTyBjbGFzc2VzIGZyb20gdGhlIDptb2Q6YGlvYCBtb2R1bGUuCisKKy4uIGV4Y2VwdGlvbjo6IENoaWxkUHJvY2Vzc0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiBvbiBhIGNoaWxkIHByb2Nlc3MgZmFpbGVkLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNISUxEYGAuCisKKy4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25FcnJvcgorCisgICBBIGJhc2UgY2xhc3MgZm9yIGNvbm5lY3Rpb24tcmVsYXRlZCBpc3N1ZXMuCisKKyAgIFN1YmNsYXNzZXMgYXJlIDpleGM6YEJyb2tlblBpcGVFcnJvcmAsIDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgLAorICAgOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgYW5kIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYC4KKworLi4gZXhjZXB0aW9uOjogQnJva2VuUGlwZUVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIG9uIGEKKyAgIHBpcGUgd2hpbGUgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQsIG9yIHRyeWluZyB0byB3cml0ZSBvbiBhIHNvY2tldAorICAgd2hpY2ggaGFzIGJlZW4gc2h1dGRvd24gZm9yIHdyaXRpbmcuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFUElQRWBgIGFuZCBgYEVTSFVURE9XTmBgLgorCisuLiBleGNlcHRpb246OiBDb25uZWN0aW9uQWJvcnRlZEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGF0dGVtcHQKKyAgIGlzIGFib3J0ZWQgYnkgdGhlIHBlZXIuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQ09OTkFCT1JURURgYC4KKworLi4gZXhjZXB0aW9uOjogQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBhdHRlbXB0CisgICBpcyByZWZ1c2VkIGJ5IHRoZSBwZWVyLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNPTk5SRUZVU0VEYGAuCisKKy4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25SZXNldEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlzCisgICByZXNldCBieSB0aGUgcGVlci4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDT05OUkVTRVRgYC4KKworLi4gZXhjZXB0aW9uOjogRmlsZUV4aXN0c0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aGljaCBhbHJlYWR5IGV4aXN0cy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVFWElTVGBgLgorCisuLiBleGNlcHRpb246OiBGaWxlTm90Rm91bmRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIHJlcXVlc3RlZCBidXQgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT0VOVGBgLgorCisuLiBleGNlcHRpb246OiBJbnRlcnJ1cHRlZEVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYnkgYW4gaW5jb21pbmcgc2lnbmFsLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUVJTlRSYGAuCisKKy4uIGV4Y2VwdGlvbjo6IElzQURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZmlsZSBvcGVyYXRpb24gKHN1Y2ggYXMgOmZ1bmM6YG9zLnJlbW92ZWApIGlzIHJlcXVlc3RlZAorICAgb24gYSBkaXJlY3RvcnkuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFSVNESVJgYC4KKworLi4gZXhjZXB0aW9uOjogTm90QURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZGlyZWN0b3J5IG9wZXJhdGlvbiAoc3VjaCBhcyA6ZnVuYzpgb3MubGlzdGRpcmApIGlzIHJlcXVlc3RlZAorICAgb24gc29tZXRoaW5nIHdoaWNoIGlzIG5vdCBhIGRpcmVjdG9yeS4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT1RESVJgYC4KKworLi4gZXhjZXB0aW9uOjogUGVybWlzc2lvbkVycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBydW4gYW4gb3BlcmF0aW9uIHdpdGhvdXQgdGhlIGFkZXF1YXRlIGFjY2VzcworICAgcmlnaHRzIC0gZm9yIGV4YW1wbGUgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVBQ0NFU2BgIGFuZCBgYEVQRVJNYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFByb2Nlc3NMb29rdXBFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGdpdmVuIHByb2Nlc3MgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVTUkNIYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBmdW5jdGlvbiB0aW1lZCBvdXQgYXQgdGhlIHN5c3RlbSBsZXZlbC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVUSU1FRE9VVGBgLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIEFsbCB0aGUgYWJvdmUgOmV4YzpgT1NFcnJvcmAgc3ViY2xhc3NlcyB3ZXJlIGFkZGVkLgorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKworCitXYXJuaW5ncworLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIGFzIHdhcm5pbmcgY2F0ZWdvcmllczsgc2VlIHRoZSA6bW9kOmB3YXJuaW5nc2AKIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdCBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MzMzYyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTAsMCArMSwxMzYgQEAKKzptb2Q6YGZhdWx0aGFuZGxlcmAgLS0tIER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogZmF1bHRoYW5kbGVyCisgICA6c3lub3BzaXM6IER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2suCisKK1RoaXMgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkdW1wIFB5dGhvbiB0cmFjZWJhY2tzIGV4cGxpY2l0bHksIG9uIGEgZmF1bHQsCithZnRlciBhIHRpbWVvdXQsIG9yIG9uIGEgdXNlciBzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvCitpbnN0YWxsIGZhdWx0IGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLAorOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgLCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbworZW5hYmxlIHRoZW0gYXQgc3RhcnR1cCBieSBzZXR0aW5nIHRoZSA6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50Cit2YXJpYWJsZSBvciBieSB1c2luZyA6b3B0aW9uOmAtWGAgYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjb21wYXRpYmxlIHdpdGggc3lzdGVtIGZhdWx0IGhhbmRsZXJzIGxpa2UgQXBwb3J0IG9yIHRoZQorV2luZG93cyBmYXVsdCBoYW5kbGVyLiBUaGUgbW9kdWxlIHVzZXMgYW4gYWx0ZXJuYXRpdmUgc3RhY2sgZm9yIHNpZ25hbCBoYW5kbGVycworaWYgdGhlIDpjOmZ1bmM6YHNpZ2FsdHN0YWNrYCBmdW5jdGlvbiBpcyBhdmFpbGFibGUuIFRoaXMgYWxsb3dzIGl0IHRvIGR1bXAgdGhlCit0cmFjZWJhY2sgZXZlbiBvbiBhIHN0YWNrIG92ZXJmbG93LgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzIGFuZCB0aGVyZWZvcmUgY2FuIG9ubHkgdXNlCitzaWduYWwtc2FmZSBmdW5jdGlvbnMgKGUuZy4gaXQgY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgaGVhcCkuIEJlY2F1c2Ugb2YKK3RoaXMgbGltaXRhdGlvbiB0cmFjZWJhY2sgZHVtcGluZyBpcyBtaW5pbWFsIGNvbXBhcmVkIHRvIG5vcm1hbCBQeXRob24KK3RyYWNlYmFja3M6CisKKyogT25seSBBU0NJSSBpcyBzdXBwb3J0ZWQuIFRoZSBgYGJhY2tzbGFzaHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyIGlzIHVzZWQgb24KKyAgZW5jb2RpbmcuCisqIEVhY2ggc3RyaW5nIGlzIGxpbWl0ZWQgdG8gNTAwIGNoYXJhY3RlcnMuCisqIE9ubHkgdGhlIGZpbGVuYW1lLCB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGxpbmUgbnVtYmVyIGFyZQorICBkaXNwbGF5ZWQuIChubyBzb3VyY2UgY29kZSkKKyogSXQgaXMgbGltaXRlZCB0byAxMDAgZnJhbWVzIGFuZCAxMDAgdGhyZWFkcy4KKworQnkgZGVmYXVsdCwgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaXMgd3JpdHRlbiB0byA6ZGF0YTpgc3lzLnN0ZGVycmAuIFRvIHNlZQordHJhY2ViYWNrcywgYXBwbGljYXRpb25zIG11c3QgYmUgcnVuIGluIHRoZSB0ZXJtaW5hbC4gQSBsb2cgZmlsZSBjYW4KK2FsdGVybmF0aXZlbHkgYmUgcGFzc2VkIHRvIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYC4KKworVGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBDLCBzbyB0cmFjZWJhY2tzIGNhbiBiZSBkdW1wZWQgb24gYSBjcmFzaCBvciB3aGVuCitQeXRob24gaXMgZGVhZGxvY2tlZC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRHVtcCB0aGUgdHJhY2ViYWNrCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMgaW50byAqZmlsZSouIElmICphbGxfdGhyZWFkcyogaXMKKyAgIGBgRmFsc2VgYCwgZHVtcCBvbmx5IHRoZSBjdXJyZW50IHRocmVhZC4KKworCitGYXVsdCBoYW5kbGVyIHN0YXRlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgRW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiBpbnN0YWxsIGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwKKyAgIDpjb25zdDpgU0lHRlBFYCwgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgIGFuZCA6Y29uc3Q6YFNJR0lMTGAKKyAgIHNpZ25hbHMgdG8gZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjay4gSWYgKmFsbF90aHJlYWRzKiBpcyBgYFRydWVgYCwKKyAgIHByb2R1Y2UgdHJhY2ViYWNrcyBmb3IgZXZlcnkgcnVubmluZyB0aHJlYWQuIE90aGVyd2lzZSwgZHVtcCBvbmx5IHRoZSBjdXJyZW50CisgICB0aHJlYWQuCisKKy4uIGZ1bmN0aW9uOjogZGlzYWJsZSgpCisKKyAgIERpc2FibGUgdGhlIGZhdWx0IGhhbmRsZXI6IHVuaW5zdGFsbCB0aGUgc2lnbmFsIGhhbmRsZXJzIGluc3RhbGxlZCBieQorICAgOmZ1bmM6YGVuYWJsZWAuCisKKy4uIGZ1bmN0aW9uOjogaXNfZW5hYmxlZCgpCisKKyAgIENoZWNrIGlmIHRoZSBmYXVsdCBoYW5kbGVyIGlzIGVuYWJsZWQuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrcyBhZnRlciBhIHRpbWVvdXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnIsIGV4aXQ9RmFsc2UpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMsIGFmdGVyIGEgdGltZW91dCBvZiAqdGltZW91dCogc2Vjb25kcywgb3IKKyAgIGV2ZXJ5ICp0aW1lb3V0KiBzZWNvbmRzIGlmICpyZXBlYXQqIGlzIGBgVHJ1ZWBgLiAgSWYgKmV4aXQqIGlzIGBgVHJ1ZWBgLCBjYWxsCisgICA6YzpmdW5jOmBfZXhpdGAgd2l0aCBzdGF0dXM9MSBhZnRlciBkdW1waW5nIHRoZSB0cmFjZWJhY2tzLiAgKE5vdGUKKyAgIDpjOmZ1bmM6YF9leGl0YCBleGl0cyB0aGUgcHJvY2VzcyBpbW1lZGlhdGVseSwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBkbyBhbnkKKyAgIGNsZWFudXAgbGlrZSBmbHVzaGluZyBmaWxlIGJ1ZmZlcnMuKSBJZiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLCB0aGUgbmV3CisgICBjYWxsIHJlcGxhY2VzIHByZXZpb3VzIHBhcmFtZXRlcnMgYW5kIHJlc2V0cyB0aGUgdGltZW91dC4gVGhlIHRpbWVyIGhhcyBhCisgICBzdWItc2Vjb25kIHJlc29sdXRpb24uCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSB3YXRjaGRvZyB0aHJlYWQgYW5kIHRoZXJlZm9yZSBpcyBub3QKKyAgIGF2YWlsYWJsZSBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCB0aHJlYWRzIGRpc2FibGVkLgorCisuLiBmdW5jdGlvbjo6IGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgIENhbmNlbCB0aGUgbGFzdCBjYWxsIHRvIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoc2lnbnVtLCBmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUsIGNoYWluPUZhbHNlKQorCisgICBSZWdpc3RlciBhIHVzZXIgc2lnbmFsOiBpbnN0YWxsIGEgaGFuZGxlciBmb3IgdGhlICpzaWdudW0qIHNpZ25hbCB0byBkdW1wCisgICB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzLCBvciBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYgKmFsbF90aHJlYWRzKiBpcworICAgYGBGYWxzZWBgLCBpbnRvICpmaWxlKi4gQ2FsbCB0aGUgcHJldmlvdXMgaGFuZGxlciBpZiBjaGFpbiBpcyBgYFRydWVgYC4KKworICAgTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorCisuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXIoc2lnbnVtKQorCisgICBVbnJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IHVuaW5zdGFsbCB0aGUgaGFuZGxlciBvZiB0aGUgKnNpZ251bSogc2lnbmFsCisgICBpbnN0YWxsZWQgYnkgOmZ1bmM6YHJlZ2lzdGVyYC4gUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzaWduYWwgd2FzIHJlZ2lzdGVyZWQsCisgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworRmlsZSBkZXNjcmlwdG9yIGlzc3VlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmZ1bmM6YGVuYWJsZWAsIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAgYW5kIDpmdW5jOmByZWdpc3RlcmAga2VlcCB0aGUKK2ZpbGUgZGVzY3JpcHRvciBvZiB0aGVpciAqZmlsZSogYXJndW1lbnQuIElmIHRoZSBmaWxlIGlzIGNsb3NlZCBhbmQgaXRzIGZpbGUKK2Rlc2NyaXB0b3IgaXMgcmV1c2VkIGJ5IGEgbmV3IGZpbGUsIG9yIGlmIDpmdW5jOmBvcy5kdXAyYCBpcyB1c2VkIHRvIHJlcGxhY2UKK3RoZSBmaWxlIGRlc2NyaXB0b3IsIHRoZSB0cmFjZWJhY2sgd2lsbCBiZSB3cml0dGVuIGludG8gYSBkaWZmZXJlbnQgZmlsZS4gQ2FsbAordGhlc2UgZnVuY3Rpb25zIGFnYWluIGVhY2ggdGltZSB0aGF0IHRoZSBmaWxlIGlzIHJlcGxhY2VkLgorCisKK0V4YW1wbGUKKy0tLS0tLS0KKworRXhhbXBsZSBvZiBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBMaW51eDogOjoKKworICAgICQgcHl0aG9uIC1xIC1YIGZhdWx0aGFuZGxlcgorICAgID4+PiBpbXBvcnQgY3R5cGVzCisgICAgPj4+IGN0eXBlcy5zdHJpbmdfYXQoMCkKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IFNlZ21lbnRhdGlvbiBmYXVsdAorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiODk5ZjM5NzAwOgorICAgICAgRmlsZSAiL2hvbWUvcHl0aG9uL2NweXRob24vTGliL2N0eXBlcy9fX2luaXRfXy5weSIsIGxpbmUgNDg2IGluIHN0cmluZ19hdAorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSBpbiA8bW9kdWxlPgorICAgIFNlZ21lbnRhdGlvbiBmYXVsdAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mY250bC5yc3QgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKaW5kZXggNjE5MjQwMC4uOWE5Y2RjMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmNudGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdApAQCAtMTksNiArMTksMTEgQEAKIGBgc3lzLnN0ZGluLmZpbGVubygpYGAsIG9yIGEgOmNsYXNzOmBpby5JT0Jhc2VgIG9iamVjdCwgc3VjaCBhcyBgYHN5cy5zdGRpbmBgCiBpdHNlbGYsIHdoaWNoIHByb3ZpZGVzIGEgOm1ldGg6YGZpbGVub2AgdGhhdCByZXR1cm5zIGEgZ2VudWluZSBmaWxlIGRlc2NyaXB0b3IuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBJT0Vycm9yYCB3aGVyZSB0aGV5IG5vdworICAgcmFpc2UgYSA6ZXhjOmBPU0Vycm9yYC4KKworCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIApAQCAtNDAsNyArNDUsNyBAQAogICAgbGFyZ2VyIHRoYW4gMTAyNCBieXRlcywgdGhpcyBpcyBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24KICAgIHZpb2xhdGlvbiBvciBhIG1vcmUgc3VidGxlIGRhdGEgY29ycnVwdGlvbi4KIAotICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIG9wWywgYXJnWywgbXV0YXRlX2ZsYWddXSkKQEAgLTEwNyw3ICsxMTIsNyBAQAogICAgV2hlbiAqb3BlcmF0aW9uKiBpcyA6Y29uc3Q6YExPQ0tfU0hgIG9yIDpjb25zdDpgTE9DS19FWGAsIGl0IGNhbiBhbHNvIGJlCiAgICBiaXR3aXNlIE9SZWQgd2l0aCA6Y29uc3Q6YExPQ0tfTkJgIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uCiAgICBJZiA6Y29uc3Q6YExPQ0tfTkJgIGlzIHVzZWQgYW5kIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4KLSAgIDpleGM6YElPRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGwgaGF2ZSBhbiAqZXJybm8qCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsIGhhdmUgYW4gKmVycm5vKgogICAgYXR0cmlidXRlIHNldCB0byA6Y29uc3Q6YEVBQ0NFU2Agb3IgOmNvbnN0OmBFQUdBSU5gIChkZXBlbmRpbmcgb24gdGhlCiAgICBvcGVyYXRpbmcgc3lzdGVtOyBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBib3RoIHZhbHVlcykuICBPbiBhdCBsZWFzdCBzb21lCiAgICBzeXN0ZW1zLCA6Y29uc3Q6YExPQ0tfRVhgIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciByZWZlcnMgdG8gYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAppbmRleCBkZTIwZmIxLi5hZGQ2OGEzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdApAQCAtMjEsMTEgKzIxLDggQEAKICAgIENvbXBhcmUgdGhlIGZpbGVzIG5hbWVkICpmMSogYW5kICpmMiosIHJldHVybmluZyBgYFRydWVgYCBpZiB0aGV5IHNlZW0gZXF1YWwsCiAgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgogCi0gICBVbmxlc3MgKnNoYWxsb3cqIGlzIGdpdmVuIGFuZCBpcyBmYWxzZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgCi0gICBzaWduYXR1cmVzIGFyZSB0YWtlbiB0byBiZSBlcXVhbC4KLQotICAgRmlsZXMgdGhhdCB3ZXJlIGNvbXBhcmVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgYmUgY29tcGFyZWQgYWdhaW4gdW5sZXNzCi0gICB0aGVpciA6ZnVuYzpgb3Muc3RhdGAgc2lnbmF0dXJlIGNoYW5nZXMuCisgICBJZiAqc2hhbGxvdyogaXMgdHJ1ZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgIHNpZ25hdHVyZXMgYXJlCisgICB0YWtlbiB0byBiZSBlcXVhbC4gIE90aGVyd2lzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlcyBhcmUgY29tcGFyZWQuCiAKICAgIE5vdGUgdGhhdCBubyBleHRlcm5hbCBwcm9ncmFtcyBhcmUgY2FsbGVkIGZyb20gdGhpcyBmdW5jdGlvbiwgZ2l2aW5nIGl0CiAgICBwb3J0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeS4KQEAgLTUxLDIzICs0OCwxMSBAQAogICAgb25lIG9mIHRoZSB0aHJlZSByZXR1cm5lZCBsaXN0cy4KIAogCi1FeGFtcGxlOjoKLQotICAgPj4+IGltcG9ydCBmaWxlY21wCi0gICA+Pj4gZmlsZWNtcC5jbXAoJ3VuZG9jLnJzdCcsICd1bmRvYy5yc3QnKQotICAgVHJ1ZQotICAgPj4+IGZpbGVjbXAuY21wKCd1bmRvYy5yc3QnLCAnaW5kZXgucnN0JykKLSAgIEZhbHNlCi0KLQogLi4gX2RpcmNtcC1vYmplY3RzOgogCiBUaGUgOmNsYXNzOmBkaXJjbXBgIGNsYXNzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTpjbGFzczpgZGlyY21wYCBpbnN0YW5jZXMgYXJlIGJ1aWx0IHVzaW5nIHRoaXMgY29uc3RydWN0b3I6Ci0KLQogLi4gY2xhc3M6OiBkaXJjbXAoYSwgYiwgaWdub3JlPU5vbmUsIGhpZGU9Tm9uZSkKIAogICAgQ29uc3RydWN0IGEgbmV3IGRpcmVjdG9yeSBjb21wYXJpc29uIG9iamVjdCwgdG8gY29tcGFyZSB0aGUgZGlyZWN0b3JpZXMgKmEqIGFuZApAQCAtODMsNyArNjgsNyBAQAogCiAgICAuLiBtZXRob2Q6OiByZXBvcnQoKQogCi0gICAgICBQcmludCAodG8gYGBzeXMuc3Rkb3V0YGApIGEgY29tcGFyaXNvbiBiZXR3ZWVuICphKiBhbmQgKmIqLgorICAgICAgUHJpbnQgKHRvIDpkYXRhOmBzeXMuc3Rkb3V0YCkgYSBjb21wYXJpc29uIGJldHdlZW4gKmEqIGFuZCAqYiouCiAKIAogICAgLi4gbWV0aG9kOjogcmVwb3J0X3BhcnRpYWxfY2xvc3VyZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAppbmRleCBhYzQ0MzExLi5mOGVjNDM2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKQEAgLTI4LDcgKzI4LDEwIEBACiBBbGwgZmlsZXMgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieQogc3BlY2lmeWluZyB0aGUgKm1vZGUqIHBhcmFtZXRlciBpbiB0aGUgY2FsbCB0byA6ZnVuYzpgLmlucHV0YCBvcgogOmNsYXNzOmBGaWxlSW5wdXRgLiAgSWYgYW4gSS9PIGVycm9yIG9jY3VycyBkdXJpbmcgb3BlbmluZyBvciByZWFkaW5nIGEgZmlsZSwKLTpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKzpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkOyBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIElmIGBgc3lzLnN0ZGluYGAgaXMgdXNlZCBtb3JlIHRoYW4gb25jZSwgdGhlIHNlY29uZCBhbmQgZnVydGhlciB1c2Ugd2lsbCByZXR1cm4KIG5vIGxpbmVzLCBleGNlcHQgcGVyaGFwcyBmb3IgaW50ZXJhY3RpdmUgdXNlLCBvciBpZiBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IHJlc2V0CkBAIC0xNjgsMTAgKzE3MSw2IEBACiBpdCBpcyBkZWxldGVkIHdoZW4gdGhlIG91dHB1dCBmaWxlIGlzIGNsb3NlZC4gIEluLXBsYWNlIGZpbHRlcmluZyBpcyBkaXNhYmxlZAogd2hlbiBzdGFuZGFyZCBpbnB1dCBpcyByZWFkLgogCi0uLiBub3RlOjoKLQotICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgd29yayBmb3IgTVMtRE9TIDgrMyBmaWxlc3lzdGVtcy4KLQogCiBUaGUgdHdvIGZvbGxvd2luZyBvcGVuaW5nIGhvb2tzIGFyZSBwcm92aWRlZCBieSB0aGlzIG1vZHVsZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggYTY2OWIxYi4uMTQxOWFmNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC00MCw3ICs0MCw3IEBACiAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgogCi0uLiBjbGFzczo6IEZUUChob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JydbLCB0aW1lb3V0XSkKKy4uIGNsYXNzOjogRlRQKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgRlRQYCBjbGFzcy4gIFdoZW4gKmhvc3QqIGlzIGdpdmVuLCB0aGUKICAgIG1ldGhvZCBjYWxsIGBgY29ubmVjdChob3N0KWBgIGlzIG1hZGUuICBXaGVuICp1c2VyKiBpcyBnaXZlbiwgYWRkaXRpb25hbGx5CkBAIC00OCw3ICs0OCw4IEBACiAgICAqYWNjdCogZGVmYXVsdCB0byB0aGUgZW1wdHkgc3RyaW5nIHdoZW4gbm90IGdpdmVuKS4gIFRoZSBvcHRpb25hbCAqdGltZW91dCoKICAgIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIGJsb2NraW5nIG9wZXJhdGlvbnMgbGlrZSB0aGUKICAgIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgaXMgbm90IHNwZWNpZmllZCwgdGhlIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZwotICAgd2lsbCBiZSB1c2VkKS4KKyAgIHdpbGwgYmUgdXNlZCkuICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQKKyAgIHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgogCiAgICA6Y2xhc3M6YEZUUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuIEhlcmUgaXMgYSBzYW1wbGUKICAgIG9uIGhvdyB1c2luZyBpdDoKQEAgLTY4LDggKzY5LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCi0uLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBba2V5ZmlsZVssIGNlcnRmaWxlWywgY29udGV4dFssIHRpbWVvdXRdXV1dKQorCisuLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSwgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgRlRQYCBzdWJjbGFzcyB3aGljaCBhZGRzIFRMUyBzdXBwb3J0IHRvIEZUUCBhcyBkZXNjcmliZWQgaW4KICAgIDpyZmM6YDQyMTdgLgpAQCAtODAsMTAgKzg0LDE1IEBACiAgICBwcml2YXRlIGtleSBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBuYW1lIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uCiAgICAqY29udGV4dCogcGFyYW1ldGVyIGlzIGEgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cwogICAgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhCi0gICBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpIHN0cnVjdHVyZS4KKyAgIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkgc3RydWN0dXJlLiAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZQorICAgYGAoaG9zdCwgcG9ydClgYCBmb3IgdGhlIHNvY2tldCB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUKKyAgIGNvbm5lY3RpbmcuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAgICBIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB1c2luZyB0aGUgOmNsYXNzOmBGVFBfVExTYCBjbGFzczoKIAogICAgPj4+IGZyb20gZnRwbGliIGltcG9ydCBGVFBfVExTCkBAIC0xMzUsOCArMTQ0LDcgQEAKICAgIFRoZSBzZXQgb2YgYWxsIGV4Y2VwdGlvbnMgKGFzIGEgdHVwbGUpIHRoYXQgbWV0aG9kcyBvZiA6Y2xhc3M6YEZUUGAKICAgIGluc3RhbmNlcyBtYXkgcmFpc2UgYXMgYSByZXN1bHQgb2YgcHJvYmxlbXMgd2l0aCB0aGUgRlRQIGNvbm5lY3Rpb24gKGFzCiAgICBvcHBvc2VkIHRvIHByb2dyYW1taW5nIGVycm9ycyBtYWRlIGJ5IHRoZSBjYWxsZXIpLiAgVGhpcyBzZXQgaW5jbHVkZXMgdGhlCi0gICBmb3VyIGV4Y2VwdGlvbnMgbGlzdGVkIGFib3ZlIGFzIHdlbGwgYXMgOmV4Yzpgc29ja2V0LmVycm9yYCBhbmQKLSAgIDpleGM6YElPRXJyb3JgLgorICAgZm91ciBleGNlcHRpb25zIGxpc3RlZCBhYm92ZSBhcyB3ZWxsIGFzIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIHNlZWFsc286OgpAQCAtMTc0LDcgKzE4Miw3IEBACiAgICBkZWJ1Z2dpbmcgb3V0cHV0LCBsb2dnaW5nIGVhY2ggbGluZSBzZW50IGFuZCByZWNlaXZlZCBvbiB0aGUgY29udHJvbCBjb25uZWN0aW9uLgogCiAKLS4uIG1ldGhvZDo6IEZUUC5jb25uZWN0KGhvc3Q9JycsIHBvcnQ9MFssIHRpbWVvdXRdKQorLi4gbWV0aG9kOjogRlRQLmNvbm5lY3QoaG9zdD0nJywgcG9ydD0wLCB0aW1lb3V0PU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIENvbm5lY3QgdG8gdGhlIGdpdmVuIGhvc3QgYW5kIHBvcnQuICBUaGUgZGVmYXVsdCBwb3J0IG51bWJlciBpcyBgYDIxYGAsIGFzCiAgICBzcGVjaWZpZWQgYnkgdGhlIEZUUCBwcm90b2NvbCBzcGVjaWZpY2F0aW9uLiAgSXQgaXMgcmFyZWx5IG5lZWRlZCB0byBzcGVjaWZ5IGEKQEAgLTE4MiwxMCArMTkwLDE0IEBACiAgICBpbnN0YW5jZTsgaXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXQgYWxsIGlmIGEgaG9zdCB3YXMgZ2l2ZW4gd2hlbiB0aGUgaW5zdGFuY2UKICAgIHdhcyBjcmVhdGVkLiAgQWxsIG90aGVyIG1ldGhvZHMgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KICAgIG1hZGUuCi0KICAgIFRoZSBvcHRpb25hbCAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQuIElmIG5vICp0aW1lb3V0KiBpcyBwYXNzZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0CiAgICBzZXR0aW5nIHdpbGwgYmUgdXNlZC4KKyAgICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcworICAgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAKIC4uIG1ldGhvZDo6IEZUUC5nZXR3ZWxjb21lKCkKQEAgLTI0MSwxMyArMjUzLDEyIEBACiAKICAgIFJldHJpZXZlIGEgZmlsZSBvciBkaXJlY3RvcnkgbGlzdGluZyBpbiBBU0NJSSB0cmFuc2ZlciBtb2RlLiAgKmNtZCogc2hvdWxkIGJlCiAgICBhbiBhcHByb3ByaWF0ZSBgYFJFVFJgYCBjb21tYW5kIChzZWUgOm1ldGg6YHJldHJiaW5hcnlgKSBvciBhIGNvbW1hbmQgc3VjaCBhcwotICAgYGBMSVNUYGAsIGBgTkxTVGBgIG9yIGBgTUxTRGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KKyAgIGBgTElTVGBgIG9yIGBgTkxTVGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KICAgIGBgTElTVGBgIHJldHJpZXZlcyBhIGxpc3Qgb2YgZmlsZXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IHRob3NlIGZpbGVzLgotICAgYGBOTFNUYGAgcmV0cmlldmVzIGEgbGlzdCBvZiBmaWxlIG5hbWVzLiAgT24gc29tZSBzZXJ2ZXJzLCBgYE1MU0RgYCByZXRyaWV2ZXMKLSAgIGEgbWFjaGluZSByZWFkYWJsZSBsaXN0IG9mIGZpbGVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZSBmaWxlcy4gIFRoZQotICAgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50IGNvbnRhaW5pbmcKLSAgIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqIHByaW50cyB0aGUKLSAgIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCisgICBgYE5MU1RgYCByZXRyaWV2ZXMgYSBsaXN0IG9mIGZpbGUgbmFtZXMuCisgICBUaGUgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50CisgICBjb250YWluaW5nIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqCisgICBwcmludHMgdGhlIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCiAKIAogLi4gbWV0aG9kOjogRlRQLnNldF9wYXN2KGJvb2xlYW4pCkBAIC0zMDcsNiArMzE4LDIwIEBACiAgICBpbiA6bWV0aDpgdHJhbnNmZXJjbWRgLgogCiAKKy4uIG1ldGhvZDo6IEZUUC5tbHNkKHBhdGg9IiIsIGZhY3RzPVtdKQorCisgICBMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBNTFNEIGNvbW1hbmQKKyAgICg6cmZjOmAzNjU5YCkuICBJZiAqcGF0aCogaXMgb21pdHRlZCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYXNzdW1lZC4KKyAgICpmYWN0cyogaXMgYSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG9mIGluZm9ybWF0aW9uIGRlc2lyZWQKKyAgIChlLmcuIGBgWyJ0eXBlIiwgInNpemUiLCAicGVybSJdYGApLiAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhCisgICB0dXBsZSBvZiB0d28gZWxlbWVudHMgZm9yIGV2ZXJ5IGZpbGUgZm91bmQgaW4gcGF0aC4gIEZpcnN0IGVsZW1lbnQgaXMgdGhlCisgICBmaWxlIG5hbWUsIHRoZSBzZWNvbmQgb25lIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGZhY3RzIGFib3V0IHRoZSBmaWxlCisgICBuYW1lLiAgQ29udGVudCBvZiB0aGlzIGRpY3Rpb25hcnkgbWlnaHQgYmUgbGltaXRlZCBieSB0aGUgKmZhY3RzKiBhcmd1bWVudAorICAgYnV0IHNlcnZlciBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYWxsIHJlcXVlc3RlZCBmYWN0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogRlRQLm5sc3QoYXJndW1lbnRbLCAuLi5dKQogCiAgICBSZXR1cm4gYSBsaXN0IG9mIGZpbGUgbmFtZXMgYXMgcmV0dXJuZWQgYnkgdGhlIGBgTkxTVGBgIGNvbW1hbmQuICBUaGUKQEAgLTMxNCw2ICszMzksOCBAQAogICAgZGlyZWN0b3J5KS4gIE11bHRpcGxlIGFyZ3VtZW50cyBjYW4gYmUgdXNlZCB0byBwYXNzIG5vbi1zdGFuZGFyZCBvcHRpb25zIHRvCiAgICB0aGUgYGBOTFNUYGAgY29tbWFuZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMyB1c2UgOm1ldGg6YG1sc2RgIGluc3RlYWQuCisKIAogLi4gbWV0aG9kOjogRlRQLmRpcihhcmd1bWVudFssIC4uLl0pCiAKQEAgLTMyNCw2ICszNTEsOCBAQAogICAgYXMgYSAqY2FsbGJhY2sqIGZ1bmN0aW9uIGFzIGZvciA6bWV0aDpgcmV0cmxpbmVzYDsgdGhlIGRlZmF1bHQgcHJpbnRzIHRvCiAgICBgYHN5cy5zdGRvdXRgYC4gIFRoaXMgbWV0aG9kIHJldHVybnMgYGBOb25lYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMgdXNlIDptZXRoOmBtbHNkYCBpbnN0ZWFkLgorCiAKIC4uIG1ldGhvZDo6IEZUUC5yZW5hbWUoZnJvbW5hbWUsIHRvbmFtZSkKIApAQCAtMzk2LDYgKzQyNSwxNCBAQAogCiAgICBTZXQgdXAgc2VjdXJlIGNvbnRyb2wgY29ubmVjdGlvbiBieSB1c2luZyBUTFMgb3IgU1NMLCBkZXBlbmRpbmcgb24gd2hhdCBzcGVjaWZpZWQgaW4gOm1ldGg6YHNzbF92ZXJzaW9uYCBhdHRyaWJ1dGUuCiAKKy4uIG1ldGhvZDo6IEZUUF9UTFMuY2NjKCkKKworICAgUmV2ZXJ0IGNvbnRyb2wgY2hhbm5lbCBiYWNrIHRvIHBsYWludGV4dC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0YWtlCisgICBhZHZhbnRhZ2Ugb2YgZmlyZXdhbGxzIHRoYXQga25vdyBob3cgdG8gaGFuZGxlIE5BVCB3aXRoIG5vbi1zZWN1cmUgRlRQCisgICB3aXRob3V0IG9wZW5pbmcgZml4ZWQgcG9ydHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBtZXRob2Q6OiBGVFBfVExTLnByb3RfcCgpCiAKICAgIFNldCB1cCBzZWN1cmUgZGF0YSBjb25uZWN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggMzFkOGNmMS4uMGZiNDhmNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0xNyw5ICsxNyw5IEBACiA6ZnVuYzpgYmluYCAgICAgICAgICA6ZnVuYzpgZXZhbGAgICAgICAgOmZ1bmM6YGludGAgICAgICAgICA6ZnVuYzpgb3BlbmAgICAgICA6ZnVuYzpgc3RyYAogOmZ1bmM6YGJvb2xgICAgICAgICAgOmZ1bmM6YGV4ZWNgICAgICAgIDpmdW5jOmBpc2luc3RhbmNlYCAgOmZ1bmM6YG9yZGAgICAgICAgOmZ1bmM6YHN1bWAKIDpmdW5jOmBieXRlYXJyYXlgICAgIDpmdW5jOmBmaWx0ZXJgICAgICA6ZnVuYzpgaXNzdWJjbGFzc2AgIDpmdW5jOmBwb3dgICAgICAgIDpmdW5jOmBzdXBlcmAKLTpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIDpmdW5jOmB0dXBsZWAKKzpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIHxmdW5jLXR1cGxlfF8KIDpmdW5jOmBjYWxsYWJsZWAgICAgIDpmdW5jOmBmb3JtYXRgICAgICA6ZnVuYzpgbGVuYCAgICAgICAgIDpmdW5jOmBwcm9wZXJ0eWAgIDpmdW5jOmB0eXBlYAotOmZ1bmM6YGNocmAgICAgICAgICAgfGZ1bmMtZnJvemVuc2V0fF8gIDpmdW5jOmBsaXN0YCAgICAgICAgOmZ1bmM6YHJhbmdlYCAgICAgOmZ1bmM6YHZhcnNgCis6ZnVuYzpgY2hyYCAgICAgICAgICB8ZnVuYy1mcm96ZW5zZXR8XyAgfGZ1bmMtbGlzdHxfICAgICAgICB8ZnVuYy1yYW5nZXxfICAgICA6ZnVuYzpgdmFyc2AKIDpmdW5jOmBjbGFzc21ldGhvZGAgIDpmdW5jOmBnZXRhdHRyYCAgICA6ZnVuYzpgbG9jYWxzYCAgICAgIDpmdW5jOmByZXByYCAgICAgIDpmdW5jOmB6aXBgCiA6ZnVuYzpgY29tcGlsZWAgICAgICA6ZnVuYzpgZ2xvYmFsc2AgICAgOmZ1bmM6YG1hcGAgICAgICAgICA6ZnVuYzpgcmV2ZXJzZWRgICA6ZnVuYzpgX19pbXBvcnRfX2AKIDpmdW5jOmBjb21wbGV4YCAgICAgIDpmdW5jOmBoYXNhdHRyYCAgICA6ZnVuYzpgbWF4YCAgICAgICAgIDpmdW5jOmByb3VuZGAKQEAgLTMzLDYgKzMzLDkgQEAKIC4uIHxmdW5jLWZyb3plbnNldHwgcmVwbGFjZTo6IGBgZnJvemVuc2V0KClgYAogLi4gfGZ1bmMtbWVtb3J5dmlld3wgcmVwbGFjZTo6IGBgbWVtb3J5dmlldygpYGAKIC4uIHxmdW5jLXNldHwgcmVwbGFjZTo6IGBgc2V0KClgYAorLi4gfGZ1bmMtbGlzdHwgcmVwbGFjZTo6IGBgbGlzdCgpYGAKKy4uIHxmdW5jLXR1cGxlfCByZXBsYWNlOjogYGB0dXBsZSgpYGAKKy4uIHxmdW5jLXJhbmdlfCByZXBsYWNlOjogYGByYW5nZSgpYGAKIAogCiAuLiBmdW5jdGlvbjo6IGFicyh4KQpAQCAtOTMsNiArOTYsNyBAQAogICAgLi4gaW5kZXg6OiBwYWlyOiBCb29sZWFuOyB0eXBlCiAKIAorLi4gX2Z1bmMtYnl0ZWFycmF5OgogLi4gZnVuY3Rpb246OiBieXRlYXJyYXkoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgYXJyYXkgb2YgYnl0ZXMuICBUaGUgOmNsYXNzOmBieXRlYXJyYXlgIHR5cGUgaXMgYSBtdXRhYmxlCkBAIC0xMTgsNyArMTIyLDEwIEBACiAKICAgIFdpdGhvdXQgYW4gYXJndW1lbnQsIGFuIGFycmF5IG9mIHNpemUgMCBpcyBjcmVhdGVkLgogCisgICBTZWUgYWxzbyA6cmVmOmBiaW5hcnlzZXFgIGFuZCA6cmVmOmB0eXBlYnl0ZWFycmF5YC4KIAorCisuLiBfZnVuYy1ieXRlczoKIC4uIGZ1bmN0aW9uOjogYnl0ZXMoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgImJ5dGVzIiBvYmplY3QsIHdoaWNoIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyBpbgpAQCAtMTMwLDYgKzEzNyw4IEBACiAKICAgIEJ5dGVzIG9iamVjdHMgY2FuIGFsc28gYmUgY3JlYXRlZCB3aXRoIGxpdGVyYWxzLCBzZWUgOnJlZjpgc3RyaW5nc2AuCiAKKyAgIFNlZSBhbHNvIDpyZWY6YGJpbmFyeXNlcWAsIDpyZWY6YHR5cGVieXRlc2AsIGFuZCA6cmVmOmBieXRlcy1tZXRob2RzYC4KKwogCiAuLiBmdW5jdGlvbjo6IGNhbGxhYmxlKG9iamVjdCkKIApAQCAtMTUyLDEwICsxNjEsNiBAQAogICAgMSwxMTQsMTExICgweDEwRkZGRiBpbiBiYXNlIDE2KS4gIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcwogICAgb3V0c2lkZSB0aGF0IHJhbmdlLgogCi0gICBOb3RlIHRoYXQgb24gbmFycm93IFVuaWNvZGUgYnVpbGRzLCB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nIG9mCi0gICBsZW5ndGggdHdvIGZvciAqaSogZ3JlYXRlciB0aGFuIDY1LDUzNSAoMHhGRkZGIGluIGhleGFkZWNpbWFsKS4KLQotCiAKIC4uIGZ1bmN0aW9uOjogY2xhc3NtZXRob2QoZnVuY3Rpb24pCiAKQEAgLTMxMiwxNyArMzE3LDE4IEBACiAKICAgICAgID4+PiBpbXBvcnQgc3RydWN0CiAgICAgICA+Pj4gZGlyKCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBtb2R1bGUgbmFtZXNwYWNlCi0gICAgICBbJ19fYnVpbHRpbnNfXycsICdfX2RvY19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCi0gICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlCi0gICAgICBbJ1N0cnVjdCcsICdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgJ19fcGFja2FnZV9fJywgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKKyAgICAgIFsnX19idWlsdGluc19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCisgICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlICMgZG9jdGVzdDogK1NLSVAKKyAgICAgIFsnU3RydWN0JywgJ19fYWxsX18nLCAnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCisgICAgICAgJ19faW5pdGlhbGl6aW5nX18nLCAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsCisgICAgICAgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKICAgICAgICAndW5wYWNrJywgJ3VucGFja19mcm9tJ10KICAgICAgID4+PiBjbGFzcyBTaGFwZShvYmplY3QpOgotICAgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICAgIHJldHVybiBbJ2FyZWEnLCAncGVyaW1ldGVyJywgJ2xvY2F0aW9uJ10KKyAgICAgIC4uLiAgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAuLi4gICAgICAgICByZXR1cm4gWydhcmVhJywgJ3BlcmltZXRlcicsICdsb2NhdGlvbiddCiAgICAgICA+Pj4gcyA9IFNoYXBlKCkKICAgICAgID4+PiBkaXIocykKLSAgICAgIFsnYXJlYScsICdwZXJpbWV0ZXInLCAnbG9jYXRpb24nXQorICAgICAgWydhcmVhJywgJ2xvY2F0aW9uJywgJ3BlcmltZXRlciddCiAKICAgIC4uIG5vdGU6OgogCkBAIC02MjEsOSArNjI3LDkgQEAKICAgIHRvIGEgc3RyaW5nIChzdHJpcHBpbmcgYSB0cmFpbGluZyBuZXdsaW5lKSwgYW5kIHJldHVybnMgdGhhdC4gIFdoZW4gRU9GIGlzCiAgICByZWFkLCA6ZXhjOmBFT0ZFcnJvcmAgaXMgcmFpc2VkLiAgRXhhbXBsZTo6CiAKLSAgICAgID4+PiBzID0gaW5wdXQoJy0tPiAnKQorICAgICAgPj4+IHMgPSBpbnB1dCgnLS0+ICcpICAjIGRvY3Rlc3Q6ICtTS0lQCiAgICAgICAtLT4gTW9udHkgUHl0aG9uJ3MgRmx5aW5nIENpcmN1cwotICAgICAgPj4+IHMKKyAgICAgID4+PiBzICAjIGRvY3Rlc3Q6ICtTS0lQCiAgICAgICAiTW9udHkgUHl0aG9uJ3MgRmx5aW5nIENpcmN1cyIKIAogICAgSWYgdGhlIDptb2Q6YHJlYWRsaW5lYCBtb2R1bGUgd2FzIGxvYWRlZCwgdGhlbiA6ZnVuYzpgaW5wdXRgIHdpbGwgdXNlIGl0CkBAIC02ODksNiArNjk1LDggQEAKICAgICpzZW50aW5lbCosIDpleGM6YFN0b3BJdGVyYXRpb25gIHdpbGwgYmUgcmFpc2VkLCBvdGhlcndpc2UgdGhlIHZhbHVlIHdpbGwKICAgIGJlIHJldHVybmVkLgogCisgICBTZWUgYWxzbyA6cmVmOmB0eXBlaXRlcmAuCisKICAgIE9uZSB1c2VmdWwgYXBwbGljYXRpb24gb2YgdGhlIHNlY29uZCBmb3JtIG9mIDpmdW5jOmBpdGVyYCBpcyB0byByZWFkIGxpbmVzIG9mCiAgICBhIGZpbGUgdW50aWwgYSBjZXJ0YWluIGxpbmUgaXMgcmVhY2hlZC4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSByZWFkcyBhIGZpbGUKICAgIHVudGlsIHRoZSA6bWV0aDpgcmVhZGxpbmVgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZzo6CkBAIC03MDQsMTYgKzcxMiwxMiBAQAogICAgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3IgYSBtYXBwaW5nIChkaWN0aW9uYXJ5KS4KIAogCisuLiBfZnVuYy1saXN0OgogLi4gZnVuY3Rpb246OiBsaXN0KFtpdGVyYWJsZV0pCisgICA6bm9pbmRleDoKIAotICAgUmV0dXJuIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncwotICAgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cwotICAgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMKLSAgIG1hZGUgYW5kIHJldHVybmVkLCBzaW1pbGFyIHRvIGBgaXRlcmFibGVbOl1gYC4gIEZvciBpbnN0YW5jZSwgYGBsaXN0KCdhYmMnKWBgCi0gICByZXR1cm5zIGBgWydhJywgJ2InLCAnYyddYGAgYW5kIGBgbGlzdCggKDEsIDIsIDMpIClgYCByZXR1cm5zIGBgWzEsIDIsIDNdYGAuCi0gICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIG5ldyBlbXB0eSBsaXN0LCBgYFtdYGAuCi0KLSAgIDpjbGFzczpgbGlzdGAgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXFgLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmBsaXN0YCBpcyBhY3R1YWxseSBhIG11dGFibGUKKyAgIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXEtbGlzdGAgYW5kIDpyZWY6YHR5cGVzc2VxYC4KIAogCiAuLiBmdW5jdGlvbjo6IGxvY2FscygpCkBAIC04MTIsMTAgKzgxNiwxMCBAQAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBmaWxlIG9iamVjdDsgb3BlbigpIGJ1aWx0LWluIGZ1bmN0aW9uCiAKLS4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkKIAogICAgT3BlbiAqZmlsZSogYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgOnRlcm06YGZpbGUgb2JqZWN0YC4gIElmIHRoZSBmaWxlCi0gICBjYW5ub3QgYmUgb3BlbmVkLCBhbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCisgICBjYW5ub3QgYmUgb3BlbmVkLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKICAgICpmaWxlKiBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0IGdpdmluZyB0aGUgcGF0aG5hbWUgKGFic29sdXRlIG9yCiAgICByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkIG9yCkBAIC04MjYsMTcgKzgzMCwyMCBAQAogICAgKm1vZGUqIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZSBpcwogICAgb3BlbmVkLiAgSXQgZGVmYXVsdHMgdG8gYGAncidgYCB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQgbW9kZS4KICAgIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlIGBgJ3cnYGAgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYgaXQKLSAgIGFscmVhZHkgZXhpc3RzKSwgYW5kIGBgJ2EnYGAgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gKnNvbWUqIFVuaXggc3lzdGVtcywKLSAgIG1lYW5zIHRoYXQgKmFsbCogd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlCi0gICBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiAgSW4gdGV4dCBtb2RlLCBpZiAqZW5jb2RpbmcqIGlzIG5vdCBzcGVjaWZpZWQgdGhlCi0gICBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdyBieXRlcyB1c2UKLSAgIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZSAqZW5jb2RpbmcqIHVuc3BlY2lmaWVkLikgIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOgorICAgYWxyZWFkeSBleGlzdHMpLCBgYCd4J2BgIGZvciBleGNsdXNpdmUgY3JlYXRpb24gYW5kIGBgJ2EnYGAgZm9yIGFwcGVuZGluZworICAgKHdoaWNoIG9uICpzb21lKiBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgKmFsbCogd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mCisgICB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiAgSW4gdGV4dCBtb2RlLCBpZgorICAgKmVuY29kaW5nKiBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudDoKKyAgIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKWBgIGlzIGNhbGxlZCB0byBnZXQgdGhlIGN1cnJlbnQgbG9jYWxlCisgICBlbmNvZGluZy4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdyBieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlCisgICAqZW5jb2RpbmcqIHVuc3BlY2lmaWVkLikgIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOgogCiAgICA9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBDaGFyYWN0ZXIgTWVhbmluZwogICAgLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYGAncidgYCAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpCiAgICBgYCd3J2BgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdAorICAgYGAneCdgYCAgIG9wZW4gZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiwgZmFpbGluZyBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cwogICAgYGAnYSdgYCAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0cwogICAgYGAnYidgYCAgIGJpbmFyeSBtb2RlCiAgICBgYCd0J2BgICAgdGV4dCBtb2RlIChkZWZhdWx0KQpAQCAtOTIyLDYgKzkyOSwxNiBAQAogICAgY2xvc2VkLiAgSWYgYSBmaWxlbmFtZSBpcyBnaXZlbiAqY2xvc2VmZCogaGFzIG5vIGVmZmVjdCBhbmQgbXVzdCBiZSBgYFRydWVgYAogICAgKHRoZSBkZWZhdWx0KS4KIAorICAgQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcKKyAgIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoCisgICAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3NpbmcKKyAgIDptb2Q6YG9zLm9wZW5gIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcKKyAgIGBgTm9uZWBgKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQuCisKICAgIFRoZSB0eXBlIG9mIDp0ZXJtOmBmaWxlIG9iamVjdGAgcmV0dXJuZWQgYnkgdGhlIDpmdW5jOmBvcGVuYCBmdW5jdGlvbgogICAgZGVwZW5kcyBvbiB0aGUgbW9kZS4gIFdoZW4gOmZ1bmM6YG9wZW5gIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0CiAgICBtb2RlIChgYCd3J2BgLCBgYCdyJ2BgLCBgYCd3dCdgYCwgYGAncnQnYGAsIGV0Yy4pLCBpdCByZXR1cm5zIGEgc3ViY2xhc3Mgb2YKQEAgLTk0Nyw2ICs5NjQsMTEgQEAKICAgICh3aGVyZSA6ZnVuYzpgb3BlbmAgaXMgZGVjbGFyZWQpLCA6bW9kOmBvc2AsIDptb2Q6YG9zLnBhdGhgLCA6bW9kOmB0ZW1wZmlsZWAsCiAgICBhbmQgOm1vZDpgc2h1dGlsYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisgICAgICA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQorICAgICAgY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisKIAogLi4gWFhYIHdvcmtzIGZvciBieXRlcyB0b28sIGJ1dCBzaG91bGQgaXQ/CiAuLiBmdW5jdGlvbjo6IG9yZChjKQpAQCAtOTU2LDkgKzk3OCw2IEBACiAgICBwb2ludCBvZiB0aGF0IGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYG9yZCgnYScpYGAgcmV0dXJucyB0aGUgaW50ZWdlciBgYDk3YGAKICAgIGFuZCBgYG9yZCgnXHUyMDIwJylgYCByZXR1cm5zIGBgODIyNGBgLiAgVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiA6ZnVuYzpgY2hyYC4KIAotICAgT24gd2lkZSBVbmljb2RlIGJ1aWxkcywgaWYgdGhlIGFyZ3VtZW50IGxlbmd0aCBpcyBub3Qgb25lLCBhCi0gICA6ZXhjOmBUeXBlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgT24gbmFycm93IFVuaWNvZGUgYnVpbGRzLCBzdHJpbmdzCi0gICBvZiBsZW5ndGggdHdvIGFyZSBhY2NlcHRlZCB3aGVuIHRoZXkgZm9ybSBhIFVURi0xNiBzdXJyb2dhdGUgcGFpci4KIAogLi4gZnVuY3Rpb246OiBwb3coeCwgeVssIHpdKQogCkBAIC05NzYsNyArOTk1LDcgQEAKICAgIG11c3QgYmUgb2YgaW50ZWdlciB0eXBlcywgYW5kICp5KiBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KIAogCi0uLiBmdW5jdGlvbjo6IHByaW50KCpvYmplY3RzLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dCkKKy4uIGZ1bmN0aW9uOjogcHJpbnQoKm9iamVjdHMsIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0LCBmbHVzaD1GYWxzZSkKIAogICAgUHJpbnQgKm9iamVjdHMqIHRvIHRoZSBzdHJlYW0gKmZpbGUqLCBzZXBhcmF0ZWQgYnkgKnNlcCogYW5kIGZvbGxvd2VkIGJ5CiAgICAqZW5kKi4gICpzZXAqLCAqZW5kKiBhbmQgKmZpbGUqLCBpZiBwcmVzZW50LCBtdXN0IGJlIGdpdmVuIGFzIGtleXdvcmQKQEAgLTk4OSw5ICsxMDA4LDEyIEBACiAgICAqZW5kKi4KIAogICAgVGhlICpmaWxlKiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGEgYGB3cml0ZShzdHJpbmcpYGAgbWV0aG9kOyBpZiBpdAotICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuIE91dHB1dCBidWZmZXJpbmcKLSAgIGlzIGRldGVybWluZWQgYnkgKmZpbGUqLiBVc2UgYGBmaWxlLmZsdXNoKClgYCB0byBlbnN1cmUsIGZvciBpbnN0YW5jZSwKLSAgIGltbWVkaWF0ZSBhcHBlYXJhbmNlIG9uIGEgc2NyZWVuLgorICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuICBXaGV0aGVyIG91dHB1dAorICAgaXMgYnVmZmVyZWQgaXMgdXN1YWxseSBkZXRlcm1pbmVkIGJ5ICpmaWxlKiwgYnV0IGlmIHRoZSAgKmZsdXNoKiBrZXl3b3JkCisgICBhcmd1bWVudCBpcyB0cnVlLCB0aGUgc3RyZWFtIGlzIGZvcmNpYmx5IGZsdXNoZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmZsdXNoKiBrZXl3b3JkIGFyZ3VtZW50LgogCiAKIC4uIGZ1bmN0aW9uOjogcHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCkBAIC0xMDYzLDYzICsxMDg1LDEzIEBACiAgICBgYGZkZWxgYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCiAKIAotLi4gWFhYIGRvZXMgYWNjZXB0IG9iamVjdHMgd2l0aCBfX2luZGV4X18gdG9vCisuLiBfZnVuYy1yYW5nZToKIC4uIGZ1bmN0aW9uOjogcmFuZ2Uoc3RvcCkKICAgICAgICAgICAgICAgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSkKKyAgIDpub2luZGV4OgogCi0gICBUaGlzIGlzIGEgdmVyc2F0aWxlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBpdGVyYWJsZXMgeWllbGRpbmcgYXJpdGhtZXRpYwotICAgcHJvZ3Jlc3Npb25zLiAgSXQgaXMgbW9zdCBvZnRlbiB1c2VkIGluIDprZXl3b3JkOmBmb3JgIGxvb3BzLiAgVGhlIGFyZ3VtZW50cwotICAgbXVzdCBiZSBpbnRlZ2Vycy4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAxYGAuCi0gICBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDBgYC4gIFRoZSBmdWxsIGZvcm0KLSAgIHJldHVybnMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgYGBbc3RhcnQsIHN0YXJ0ICsgc3RlcCwgc3RhcnQgKyAyICogc3RlcCwKLSAgIC4uLl1gYC4gIElmICpzdGVwKiBpcyBwb3NpdGl2ZSwgdGhlIGxhc3QgZWxlbWVudCBpcyB0aGUgbGFyZ2VzdCBgYHN0YXJ0ICsgaSAqCi0gICBzdGVwYGAgbGVzcyB0aGFuICpzdG9wKjsgaWYgKnN0ZXAqIGlzIG5lZ2F0aXZlLCB0aGUgbGFzdCBlbGVtZW50IGlzIHRoZQotICAgc21hbGxlc3QgYGBzdGFydCArIGkgKiBzdGVwYGAgZ3JlYXRlciB0aGFuICpzdG9wKi4gICpzdGVwKiBtdXN0IG5vdCBiZSB6ZXJvCi0gICAob3IgZWxzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQpLiAgRXhhbXBsZToKLQotICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKQotICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpCi0gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpCi0gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpCi0gICAgICBbMCwgMywgNiwgOV0KLSAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKQotICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwKSkKLSAgICAgIFtdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSkKLSAgICAgIFtdCi0KLSAgIFJhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNlcXVlbmNlYCBBQkMsIGFuZCBwcm92aWRlCi0gICBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmQKLSAgIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSA6cmVmOmB0eXBlc3NlcWApOgotCi0gICAgICA+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IHIKLSAgICAgIHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IDExIGluIHIKLSAgICAgIEZhbHNlCi0gICAgICA+Pj4gMTAgaW4gcgotICAgICAgVHJ1ZQotICAgICAgPj4+IHIuaW5kZXgoMTApCi0gICAgICA1Ci0gICAgICA+Pj4gcls1XQotICAgICAgMTAKLSAgICAgID4+PiByWzo1XQotICAgICAgcmFuZ2UoMCwgMTAsIDIpCi0gICAgICA+Pj4gclstMV0KLSAgICAgIDE4Ci0KLSAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiA6ZGF0YTpgc3lzLm1heHNpemVgIGFyZSBwZXJtaXR0ZWQKLSAgIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIDpmdW5jOmBsZW5gKSB3aWxsIHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuCi0gICAgICBTdXBwb3J0IHNsaWNpbmcgYW5kIG5lZ2F0aXZlIGluZGljZXMuCi0gICAgICBUZXN0IGludGVnZXJzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50IHRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcKLSAgICAgIHRocm91Z2ggYWxsIGl0ZW1zLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmByYW5nZWAgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlCisgICBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxLXJhbmdlYCBhbmQgOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVwcihvYmplY3QpCkBAIC0xMjQwLDEwICsxMjEyLDEyIEBACiAgICBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBpbiA6cmVmOmB0eXBlc2AuCiAKIAorLi4gX2Z1bmMtc3RyOgogLi4gZnVuY3Rpb246OiBzdHIob2JqZWN0PScnKQogICAgICAgICAgICAgICBzdHIob2JqZWN0WywgZW5jb2RpbmdbLCBlcnJvcnNdXSkKIAotICAgUmV0dXJuIGEgc3RyaW5nIHZlcnNpb24gb2YgYW4gb2JqZWN0LCB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBtb2RlczoKKyAgIFJldHVybiBhIDpyZWY6YHN0cmluZyA8dGV4dHNlcT5gIHZlcnNpb24gb2YgYW4gb2JqZWN0LCB1c2luZyBvbmUgb2YgdGhlCisgICBmb2xsb3dpbmcgbW9kZXM6CiAKICAgIElmICplbmNvZGluZyogYW5kL29yICplcnJvcnMqIGFyZSBnaXZlbiwgOmZ1bmM6YHN0cmAgd2lsbCBkZWNvZGUgdGhlCiAgICAqb2JqZWN0KiB3aGljaCBjYW4gZWl0aGVyIGJlIGEgYnl0ZSBzdHJpbmcgb3IgYSBjaGFyYWN0ZXIgYnVmZmVyIHVzaW5nCkBAIC0xMjY2LDExICsxMjQwLDkgQEAKICAgIE9iamVjdHMgY2FuIHNwZWNpZnkgd2hhdCBgYHN0cihvYmplY3QpYGAgcmV0dXJucyBieSBkZWZpbmluZyBhIDptZXRoOmBfX3N0cl9fYAogICAgc3BlY2lhbCBtZXRob2QuCiAKLSAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN0cmluZ3Mgc2VlIDpyZWY6YHR5cGVzc2VxYCB3aGljaCBkZXNjcmliZXMgc2VxdWVuY2UKLSAgIGZ1bmN0aW9uYWxpdHkgKHN0cmluZ3MgYXJlIHNlcXVlbmNlcyksIGFuZCBhbHNvIHRoZSBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcwotICAgZGVzY3JpYmVkIGluIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbi4gVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLAotICAgc2VlIHRoZSA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2Agc2VjdGlvbi4gSW4gYWRkaXRpb24gc2VlIHRoZQotICAgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdHJpbmdzIGFuZCBzdHJpbmcgbWV0aG9kcywgc2VlIHRoZSA6cmVmOmB0ZXh0c2VxYAorICAgc2VjdGlvbi4gIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2AKKyAgIHNlY3Rpb24uICBJbiBhZGRpdGlvbiwgc2VlIHRoZSA6cmVmOmBzdHJpbmdzZXJ2aWNlc2Agc2VjdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IHN1bShpdGVyYWJsZVssIHN0YXJ0XSkKQEAgLTEzMzAsMjYgKzEzMDIsMjQgQEAKICAgIEFjY29yZGluZ2x5LCA6ZnVuYzpgc3VwZXJgIGlzIHVuZGVmaW5lZCBmb3IgaW1wbGljaXQgbG9va3VwcyB1c2luZyBzdGF0ZW1lbnRzIG9yCiAgICBvcGVyYXRvcnMgc3VjaCBhcyBgYHN1cGVyKClbbmFtZV1gYC4KIAotICAgQWxzbyBub3RlIHRoYXQgOmZ1bmM6YHN1cGVyYCBpcyBub3QgbGltaXRlZCB0byB1c2UgaW5zaWRlIG1ldGhvZHMuICBUaGUgdHdvCi0gICBhcmd1bWVudCBmb3JtIHNwZWNpZmllcyB0aGUgYXJndW1lbnRzIGV4YWN0bHkgYW5kIG1ha2VzIHRoZSBhcHByb3ByaWF0ZQotICAgcmVmZXJlbmNlcy4gIFRoZSB6ZXJvIGFyZ3VtZW50IGZvcm0gYXV0b21hdGljYWxseSBzZWFyY2hlcyB0aGUgc3RhY2sgZnJhbWUKLSAgIGZvciB0aGUgY2xhc3MgKGBgX19jbGFzc19fYGApIGFuZCB0aGUgZmlyc3QgYXJndW1lbnQuCisgICBBbHNvIG5vdGUgdGhhdCwgYXNpZGUgZnJvbSB0aGUgemVybyBhcmd1bWVudCBmb3JtLCA6ZnVuYzpgc3VwZXJgIGlzIG5vdAorICAgbGltaXRlZCB0byB1c2UgaW5zaWRlIG1ldGhvZHMuICBUaGUgdHdvIGFyZ3VtZW50IGZvcm0gc3BlY2lmaWVzIHRoZQorICAgYXJndW1lbnRzIGV4YWN0bHkgYW5kIG1ha2VzIHRoZSBhcHByb3ByaWF0ZSByZWZlcmVuY2VzLiAgVGhlIHplcm8KKyAgIGFyZ3VtZW50IGZvcm0gb25seSB3b3JrcyBpbnNpZGUgYSBjbGFzcyBkZWZpbml0aW9uLCBhcyB0aGUgY29tcGlsZXIgZmlsbHMKKyAgIGluIHRoZSBuZWNlc3NhcnkgZGV0YWlscyB0byBjb3JyZWN0bHkgcmV0cmlldmUgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQsCisgICBhcyB3ZWxsIGFzIGFjY2Vzc2luZyB0aGUgY3VycmVudCBpbnN0YW5jZSBmb3Igb3JkaW5hcnkgbWV0aG9kcy4KIAogICAgRm9yIHByYWN0aWNhbCBzdWdnZXN0aW9ucyBvbiBob3cgdG8gZGVzaWduIGNvb3BlcmF0aXZlIGNsYXNzZXMgdXNpbmcKICAgIDpmdW5jOmBzdXBlcmAsIHNlZSBgZ3VpZGUgdG8gdXNpbmcgc3VwZXIoKQogICAgPGh0dHA6Ly9yaGV0dGluZ2VyLndvcmRwcmVzcy5jb20vMjAxMS8wNS8yNi9zdXBlci1jb25zaWRlcmVkLXN1cGVyLz5gXy4KIAogCisuLiBfZnVuYy10dXBsZToKIC4uIGZ1bmN0aW9uOjogdHVwbGUoW2l0ZXJhYmxlXSkKKyAgIDpub2luZGV4OgogCi0gICBSZXR1cm4gYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncwotICAgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4KLSAgIGl0ZXJhdG9yIG9iamVjdC4gSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4KLSAgIEZvciBpbnN0YW5jZSwgYGB0dXBsZSgnYWJjJylgYCByZXR1cm5zIGBgKCdhJywgJ2InLCAnYycpYGAgYW5kIGBgdHVwbGUoWzEsIDIsCi0gICAzXSlgYCByZXR1cm5zIGBgKDEsIDIsIDMpYGAuICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIG5ldyBlbXB0eQotICAgdHVwbGUsIGBgKClgYC4KLQotICAgOmNsYXNzOmB0dXBsZWAgaXMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXFgLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmB0dXBsZWAgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlCisgICBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxLXR1cGxlYCBhbmQgOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogdHlwZShvYmplY3QpCkBAIC0xMzc4LDYgKzEzNDgsOCBAQAogICAgICAgLi4uCiAgICAgICA+Pj4gWCA9IHR5cGUoJ1gnLCAob2JqZWN0LCksIGRpY3QoYT0xKSkKIAorICAgU2VlIGFsc28gOnJlZjpgYmx0aW4tdHlwZS1vYmplY3RzYC4KKwogCiAuLiBmdW5jdGlvbjo6IHZhcnMoW29iamVjdF0pCiAKQEAgLTE0MzQsNyArMTQwNiw3IEBACiAgICAgICBUcnVlCiAKIAotLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9W10sIGxldmVsPS0xKQorLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzdGF0ZW1lbnQ6IGltcG9ydApAQCAtMTQ0OSw4ICsxNDIxLDkgQEAKICAgIHJlcGxhY2VkIChieSBpbXBvcnRpbmcgdGhlIDptb2Q6YGJ1aWx0aW5zYCBtb2R1bGUgYW5kIGFzc2lnbmluZyB0bwogICAgYGBidWlsdGlucy5fX2ltcG9ydF9fYGApIGluIG9yZGVyIHRvIGNoYW5nZSBzZW1hbnRpY3Mgb2YgdGhlCiAgICA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIGJ1dCBub3dhZGF5cyBpdCBpcyB1c3VhbGx5IHNpbXBsZXIgdG8gdXNlIGltcG9ydAotICAgaG9va3MgKHNlZSA6cGVwOmAzMDJgKS4gIERpcmVjdCB1c2Ugb2YgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHJhcmUsIGV4Y2VwdCBpbgotICAgY2FzZXMgd2hlcmUgeW91IHdhbnQgdG8gaW1wb3J0IGEgbW9kdWxlIHdob3NlIG5hbWUgaXMgb25seSBrbm93biBhdCBydW50aW1lLgorICAgaG9va3MgKHNlZSA6cGVwOmAzMDJgKSB0byBhdHRhaW4gdGhlIHNhbWUgZ29hbHMuICBEaXJlY3QgdXNlIG9mCisgICA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgZW50aXJlbHkgZGlzY291cmFnZWQgaW4gZmF2b3Igb2YKKyAgIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAuCiAKICAgIFRoZSBmdW5jdGlvbiBpbXBvcnRzIHRoZSBtb2R1bGUgKm5hbWUqLCBwb3RlbnRpYWxseSB1c2luZyB0aGUgZ2l2ZW4gKmdsb2JhbHMqCiAgICBhbmQgKmxvY2FscyogdG8gZGV0ZXJtaW5lIGhvdyB0byBpbnRlcnByZXQgdGhlIG5hbWUgaW4gYSBwYWNrYWdlIGNvbnRleHQuCkBAIC0xNDU5LDEzICsxNDMyLDExIEBACiAgICBub3QgdXNlIGl0cyAqbG9jYWxzKiBhcmd1bWVudCBhdCBhbGwsIGFuZCB1c2VzIGl0cyAqZ2xvYmFscyogb25seSB0bwogICAgZGV0ZXJtaW5lIHRoZSBwYWNrYWdlIGNvbnRleHQgb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KIAotICAgKmxldmVsKiBzcGVjaWZpZXMgd2hldGhlciB0byB1c2UgYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gYGAwYGAKLSAgIG1lYW5zIG9ubHkgcGVyZm9ybSBhYnNvbHV0ZSBpbXBvcnRzLiBQb3NpdGl2ZSB2YWx1ZXMgZm9yICpsZXZlbCogaW5kaWNhdGUgdGhlCi0gICBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZQotICAgbW9kdWxlIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gLiAgTmVnYXRpdmUgdmFsdWVzIGF0dGVtcHQgYm90aCBhbiBpbXBsaWNpdAotICAgcmVsYXRpdmUgaW1wb3J0IGFuZCBhbiBhYnNvbHV0ZSBpbXBvcnQgKHVzYWdlIG9mIG5lZ2F0aXZlIHZhbHVlcyBmb3IgKmxldmVsKgotICAgYXJlIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkIGFzIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24gZG8gbm90IHN1cHBvcnQgc3VjaAotICAgdmFsdWVzKS4gSW1wb3J0IHN0YXRlbWVudHMgb25seSB1c2UgdmFsdWVzIG9mIDAgb3IgZ3JlYXRlci4KKyAgICpsZXZlbCogc3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuIGBgMGBgICh0aGUKKyAgIGRlZmF1bHQpIG1lYW5zIG9ubHkgcGVyZm9ybSBhYnNvbHV0ZSBpbXBvcnRzLiAgUG9zaXRpdmUgdmFsdWVzIGZvcgorICAgKmxldmVsKiBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlCisgICBkaXJlY3Rvcnkgb2YgdGhlIG1vZHVsZSBjYWxsaW5nIDpmdW5jOmBfX2ltcG9ydF9fYCAoc2VlIDpwZXA6YDMyOGAgZm9yIHRoZQorICAgZGV0YWlscykuCiAKICAgIFdoZW4gdGhlICpuYW1lKiB2YXJpYWJsZSBpcyBvZiB0aGUgZm9ybSBgYHBhY2thZ2UubW9kdWxlYGAsIG5vcm1hbGx5LCB0aGUKICAgIHRvcC1sZXZlbCBwYWNrYWdlICh0aGUgbmFtZSB1cCB0aWxsIHRoZSBmaXJzdCBkb3QpIGlzIHJldHVybmVkLCAqbm90KiB0aGUKQEAgLTE0OTgsNiArMTQ2OSwxMCBAQAogICAgSWYgeW91IHNpbXBseSB3YW50IHRvIGltcG9ydCBhIG1vZHVsZSAocG90ZW50aWFsbHkgd2l0aGluIGEgcGFja2FnZSkgYnkgbmFtZSwKICAgIHVzZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgTmVnYXRpdmUgdmFsdWVzIGZvciAqbGV2ZWwqIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkICh3aGljaCBhbHNvIGNoYW5nZXMKKyAgICAgIHRoZSBkZWZhdWx0IHZhbHVlIHRvIDApLgorCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdAppbmRleCAwNDc0M2QzLi5mNWM2NjA4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QKQEAgLTQwLDcgKzQwLDcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGRlY29yYXRvcjo6IGxydV9jYWNoZShtYXhzaXplPTEwMCkKKy4uIGRlY29yYXRvcjo6IGxydV9jYWNoZShtYXhzaXplPTEyOCwgdHlwZWQ9RmFsc2UpCiAKICAgIERlY29yYXRvciB0byB3cmFwIGEgZnVuY3Rpb24gd2l0aCBhIG1lbW9pemluZyBjYWxsYWJsZSB0aGF0IHNhdmVzIHVwIHRvIHRoZQogICAgKm1heHNpemUqIG1vc3QgcmVjZW50IGNhbGxzLiAgSXQgY2FuIHNhdmUgdGltZSB3aGVuIGFuIGV4cGVuc2l2ZSBvciBJL08gYm91bmQKQEAgLTQ5LDggKzQ5LDEzIEBACiAgICBTaW5jZSBhIGRpY3Rpb25hcnkgaXMgdXNlZCB0byBjYWNoZSByZXN1bHRzLCB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZAogICAgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiBtdXN0IGJlIGhhc2hhYmxlLgogCi0gICBJZiAqbWF4c2l6ZSogaXMgc2V0IHRvIE5vbmUsIHRoZSBMUlUgZmVhdHVyZSBpcyBkaXNhYmxlZCBhbmQgdGhlIGNhY2hlCi0gICBjYW4gZ3JvdyB3aXRob3V0IGJvdW5kLgorICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmUgaXMgZGlzYWJsZWQgYW5kIHRoZSBjYWNoZSBjYW4KKyAgIGdyb3cgd2l0aG91dCBib3VuZC4gIFRoZSBMUlUgZmVhdHVyZSBwZXJmb3JtcyBiZXN0IHdoZW4gKm1heHNpemUqIGlzIGEKKyAgIHBvd2VyLW9mLXR3by4KKworICAgSWYgKnR5cGVkKiBpcyBzZXQgdG8gVHJ1ZSwgZnVuY3Rpb24gYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcyB3aWxsIGJlCisgICBjYWNoZWQgc2VwYXJhdGVseS4gIEZvciBleGFtcGxlLCBgYGYoMylgYCBhbmQgYGBmKDMuMClgYCB3aWxsIGJlIHRyZWF0ZWQKKyAgIGFzIGRpc3RpbmN0IGNhbGxzIHdpdGggZGlzdGluY3QgcmVzdWx0cy4KIAogICAgVG8gaGVscCBtZWFzdXJlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBjYWNoZSBhbmQgdHVuZSB0aGUgKm1heHNpemUqCiAgICBwYXJhbWV0ZXIsIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIGlzIGluc3RydW1lbnRlZCB3aXRoIGEgOmZ1bmM6YGNhY2hlX2luZm9gCkBAIC02Nyw4ICs3Miw4IEBACiAKICAgIEFuIGBMUlUgKGxlYXN0IHJlY2VudGx5IHVzZWQpIGNhY2hlCiAgICA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYWNoZV9hbGdvcml0aG1zI0xlYXN0X1JlY2VudGx5X1VzZWQ+YF8gd29ya3MKLSAgIGJlc3Qgd2hlbiBtb3JlIHJlY2VudCBjYWxscyBhcmUgdGhlIGJlc3QgcHJlZGljdG9ycyBvZiB1cGNvbWluZyBjYWxscyAoZm9yCi0gICBleGFtcGxlLCB0aGUgbW9zdCBwb3B1bGFyIGFydGljbGVzIG9uIGEgbmV3cyBzZXJ2ZXIgdGVuZCB0byBjaGFuZ2UgZGFpbHkpLgorICAgYmVzdCB3aGVuIHRoZSBtb3N0IHJlY2VudCBjYWxscyBhcmUgdGhlIGJlc3QgcHJlZGljdG9ycyBvZiB1cGNvbWluZyBjYWxscyAoZm9yCisgICBleGFtcGxlLCB0aGUgbW9zdCBwb3B1bGFyIGFydGljbGVzIG9uIGEgbmV3cyBzZXJ2ZXIgdGVuZCB0byBjaGFuZ2UgZWFjaCBkYXkpLgogICAgVGhlIGNhY2hlJ3Mgc2l6ZSBsaW1pdCBhc3N1cmVzIHRoYXQgdGhlIGNhY2hlIGRvZXMgbm90IGdyb3cgd2l0aG91dCBib3VuZCBvbgogICAgbG9uZy1ydW5uaW5nIHByb2Nlc3NlcyBzdWNoIGFzIHdlYiBzZXJ2ZXJzLgogCkBAIC0xMTEsNiArMTE2LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKnR5cGVkKiBvcHRpb24uCisKIC4uIGRlY29yYXRvcjo6IHRvdGFsX29yZGVyaW5nCiAKICAgIEdpdmVuIGEgY2xhc3MgZGVmaW5pbmcgb25lIG9yIG1vcmUgcmljaCBjb21wYXJpc29uIG9yZGVyaW5nIG1ldGhvZHMsIHRoaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2djLnJzdCBiL0RvYy9saWJyYXJ5L2djLnJzdAppbmRleCAwMjgxYmI3Li40MWJkYTFlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2MucnN0CkBAIC0xNTMsOCArMTUzLDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLVRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgcHJvdmlkZWQgZm9yIHJlYWQtb25seSBhY2Nlc3MgKHlvdSBjYW4gbXV0YXRlIGl0cwotdmFsdWUgYnV0IHNob3VsZCBub3QgcmViaW5kIGl0KToKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBwcm92aWRlZCBmb3IgcmVhZC1vbmx5IGFjY2VzcyAoeW91IGNhbiBtdXRhdGUgdGhlCit2YWx1ZXMgYnV0IHNob3VsZCBub3QgcmViaW5kIHRoZW0pOgogCiAuLiBkYXRhOjogZ2FyYmFnZQogCkBAIC0xODMsNiArMTgzLDQxIEBACiAgICAgICA6Y29uc3Q6YERFQlVHX1VOQ09MTEVDVEFCTEVgIGlzIHNldCwgaW4gYWRkaXRpb24gYWxsIHVuY29sbGVjdGFibGUgb2JqZWN0cwogICAgICAgYXJlIHByaW50ZWQuCiAKKy4uIGRhdGE6OiBjYWxsYmFja3MKKworICAgQSBsaXN0IG9mIGNhbGxiYWNrcyB0aGF0IHdpbGwgYmUgaW52b2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgYmVmb3JlIGFuZAorICAgYWZ0ZXIgY29sbGVjdGlvbi4gIFRoZSBjYWxsYmFja3Mgd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLAorICAgKnBoYXNlKiBhbmQgKmluZm8qLgorCisgICAqcGhhc2UqIGNhbiBiZSBvbmUgb2YgdHdvIHZhbHVlczoKKworICAgICAgInN0YXJ0IjogVGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBhYm91dCB0byBzdGFydC4KKworICAgICAgInN0b3AiOiBUaGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGhhcyBmaW5pc2hlZC4KKworICAgKmluZm8qIGlzIGEgZGljdCBwcm92aWRpbmcgbW9yZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNhbGxiYWNrLiAgVGhlIGZvbGxvd2luZworICAga2V5cyBhcmUgY3VycmVudGx5IGRlZmluZWQ6CisKKyAgICAgICJnZW5lcmF0aW9uIjogVGhlIG9sZGVzdCBnZW5lcmF0aW9uIGJlaW5nIGNvbGxlY3RlZC4KKworICAgICAgImNvbGxlY3RlZCI6IFdoZW4gKnBoYXNlKiBpcyAic3RvcCIsIHRoZSBudW1iZXIgb2Ygb2JqZWN0cworICAgICAgc3VjY2Vzc2Z1bGx5IGNvbGxlY3RlZC4KKworICAgICAgInVuY29sbGVjdGFibGUiOiBXaGVuICpwaGFzZSogaXMgInN0b3AiLCB0aGUgbnVtYmVyIG9mIG9iamVjdHMKKyAgICAgIHRoYXQgY291bGQgbm90IGJlIGNvbGxlY3RlZCBhbmQgd2VyZSBwdXQgaW4gOmRhdGE6YGdhcmJhZ2VgLgorCisgICBBcHBsaWNhdGlvbnMgY2FuIGFkZCB0aGVpciBvd24gY2FsbGJhY2tzIHRvIHRoaXMgbGlzdC4gIFRoZSBwcmltYXJ5CisgICB1c2UgY2FzZXMgYXJlOgorCisgICAgICBHYXRoZXJpbmcgc3RhdGlzdGljcyBhYm91dCBnYXJiYWdlIGNvbGxlY3Rpb24sIHN1Y2ggYXMgaG93IG9mdGVuCisgICAgICB2YXJpb3VzIGdlbmVyYXRpb25zIGFyZSBjb2xsZWN0ZWQsIGFuZCBob3cgbG9uZyB0aGUgY29sbGVjdGlvbgorICAgICAgdGFrZXMuCisKKyAgICAgIEFsbG93aW5nIGFwcGxpY2F0aW9ucyB0byBpZGVudGlmeSBhbmQgY2xlYXIgdGhlaXIgb3duIHVuY29sbGVjdGFibGUKKyAgICAgIHR5cGVzIHdoZW4gdGhleSBhcHBlYXIgaW4gOmRhdGE6YGdhcmJhZ2VgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgcHJvdmlkZWQgZm9yIHVzZSB3aXRoIDpmdW5jOmBzZXRfZGVidWdgOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CmluZGV4IDBmYTAyMmMuLjgyNTMxMWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CkBAIC0xODUsMTAgKzE4NSwxMyBAQAogICAgdHJhbnNsYXRpb24gb2JqZWN0IGZyb20gdGhlIGNhY2hlOyB0aGUgYWN0dWFsIGluc3RhbmNlIGRhdGEgaXMgc3RpbGwgc2hhcmVkIHdpdGgKICAgIHRoZSBjYWNoZS4KIAotICAgSWYgbm8gOmZpbGU6YC5tb2AgZmlsZSBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgOmV4YzpgSU9FcnJvcmAgaWYKKyAgIElmIG5vIDpmaWxlOmAubW9gIGZpbGUgaXMgZm91bmQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmCiAgICAqZmFsbGJhY2sqIGlzIGZhbHNlICh3aGljaCBpcyB0aGUgZGVmYXVsdCksIGFuZCByZXR1cm5zIGEKICAgIDpjbGFzczpgTnVsbFRyYW5zbGF0aW9uc2AgaW5zdGFuY2UgaWYgKmZhbGxiYWNrKiBpcyB0cnVlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IGluc3RhbGwoZG9tYWluLCBsb2NhbGVkaXI9Tm9uZSwgY29kZXNldD1Ob25lLCBuYW1lcz1Ob25lKQogCkBAIC0zNDIsNyArMzQ1LDcgQEAKIAogSWYgdGhlIDpmaWxlOmAubW9gIGZpbGUncyBtYWdpYyBudW1iZXIgaXMgaW52YWxpZCwgb3IgaWYgb3RoZXIgcHJvYmxlbXMgb2NjdXIKIHdoaWxlIHJlYWRpbmcgdGhlIGZpbGUsIGluc3RhbnRpYXRpbmcgYSA6Y2xhc3M6YEdOVVRyYW5zbGF0aW9uc2AgY2xhc3MgY2FuIHJhaXNlCi06ZXhjOmBJT0Vycm9yYC4KKzpleGM6YE9TRXJyb3JgLgogCiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gZnJvbSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QgYi9Eb2MvbGlicmFyeS9nemlwLnJzdAppbmRleCA5NDIyZWE5Li41MGQwNDYyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nemlwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nemlwLnJzdApAQCAtMTMsOSArMTMsMTEgQEAKIAogVGhlIGRhdGEgY29tcHJlc3Npb24gaXMgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHpsaWJgIG1vZHVsZS4KIAotVGhlIDptb2Q6YGd6aXBgIG1vZHVsZSBwcm92aWRlcyB0aGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MuIFRoZSA6Y2xhc3M6YEd6aXBGaWxlYAotY2xhc3MgcmVhZHMgYW5kIHdyaXRlcyA6cHJvZ3JhbTpgZ3ppcGBcIC1mb3JtYXQgZmlsZXMsIGF1dG9tYXRpY2FsbHkgY29tcHJlc3NpbmcKLW9yIGRlY29tcHJlc3NpbmcgdGhlIGRhdGEgc28gdGhhdCBpdCBsb29rcyBsaWtlIGFuIG9yZGluYXJ5IDp0ZXJtOmBmaWxlIG9iamVjdGAuCitUaGUgOm1vZDpgZ3ppcGAgbW9kdWxlIHByb3ZpZGVzIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcywgYXMgd2VsbCBhcyB0aGUKKzpmdW5jOmAub3BlbmAsIDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBjb252ZW5pZW5jZSBmdW5jdGlvbnMuCitUaGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MgcmVhZHMgYW5kIHdyaXRlcyA6cHJvZ3JhbTpgZ3ppcGBcIC1mb3JtYXQgZmlsZXMsCithdXRvbWF0aWNhbGx5IGNvbXByZXNzaW5nIG9yIGRlY29tcHJlc3NpbmcgdGhlIGRhdGEgc28gdGhhdCBpdCBsb29rcyBsaWtlIGFuCitvcmRpbmFyeSA6dGVybTpgZmlsZSBvYmplY3RgLgogCiBOb3RlIHRoYXQgYWRkaXRpb25hbCBmaWxlIGZvcm1hdHMgd2hpY2ggY2FuIGJlIGRlY29tcHJlc3NlZCBieSB0aGUKIDpwcm9ncmFtOmBnemlwYCBhbmQgOnByb2dyYW06YGd1bnppcGAgcHJvZ3JhbXMsIHN1Y2ggIGFzIHRob3NlIHByb2R1Y2VkIGJ5CkBAIC0yNCw2ICsyNiwzNCBAQAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgaXRlbXM6CiAKIAorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGVuYW1lLCBtb2RlPSdyYicsIGNvbXByZXNzbGV2ZWw9OSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhIGd6aXAtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIDpjbGFzczpgc3RyYCBvcgorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAncidgYCwgYGAncmInYGAsIGBgJ2EnYGAsIGBgJ2FiJ2BgLAorICAgYGAndydgYCwgb3IgYGAnd2InYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCdydCdgYCwgYGAnYXQnYGAsIG9yIGBgJ3d0J2BgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KKworICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMSB0byA5LCBhcyBmb3IgdGhlCisgICA6Y2xhc3M6YEd6aXBGaWxlYCBjb25zdHJ1Y3Rvci4KKworICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIDpjbGFzczpgR3ppcEZpbGVgCisgICBjb25zdHJ1Y3RvcjogYGBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbClgYC4gSW4gdGhpcyBjYXNlLCB0aGUKKyAgICplbmNvZGluZyosICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgR3ppcEZpbGVgIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yCisgICBoYW5kbGluZyBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgKmZpbGVuYW1lKiBiZWluZyBhIGZpbGUgb2JqZWN0LCBzdXBwb3J0IGZvciB0ZXh0IG1vZGUsCisgICAgICBhbmQgdGhlICplbmNvZGluZyosICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzLgorCisKIC4uIGNsYXNzOjogR3ppcEZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT1Ob25lLCBjb21wcmVzc2xldmVsPTksIGZpbGVvYmo9Tm9uZSwgbXRpbWU9Tm9uZSkKIAogICAgQ29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcywgd2hpY2ggc2ltdWxhdGVzIG1vc3Qgb2YgdGhlCkBAIC00Niw5ICs3Niw5IEBACiAgICBvciBgYCd3YidgYCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGZpbGUgd2lsbCBiZSByZWFkIG9yIHdyaXR0ZW4uICBUaGUgZGVmYXVsdAogICAgaXMgdGhlIG1vZGUgb2YgKmZpbGVvYmoqIGlmIGRpc2Nlcm5pYmxlOyBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIGBgJ3JiJ2BgLgogCi0gICBOb3RlIHRoYXQgdGhlIGZpbGUgaXMgYWx3YXlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZTsgdGV4dCBtb2RlIGlzIG5vdAotICAgc3VwcG9ydGVkLiBJZiB5b3UgbmVlZCB0byByZWFkIGEgY29tcHJlc3NlZCBmaWxlIGluIHRleHQgbW9kZSwgd3JhcCB5b3VyCi0gICA6Y2xhc3M6YEd6aXBGaWxlYCB3aXRoIGFuIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAuCisgICBOb3RlIHRoYXQgdGhlIGZpbGUgaXMgYWx3YXlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4gVG8gb3BlbiBhIGNvbXByZXNzZWQgZmlsZQorICAgaW4gdGV4dCBtb2RlLCB1c2UgOmZ1bmM6YC5vcGVuYCAob3Igd3JhcCB5b3VyIDpjbGFzczpgR3ppcEZpbGVgIHdpdGggYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmApLgogCiAgICBUaGUgKmNvbXByZXNzbGV2ZWwqIGFyZ3VtZW50IGlzIGFuIGludGVnZXIgZnJvbSBgYDFgYCB0byBgYDlgYCBjb250cm9sbGluZyB0aGUKICAgIGxldmVsIG9mIGNvbXByZXNzaW9uOyBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sIGFuZApAQCAtNzEsNyArMTAxLDcgQEAKIAogICAgOmNsYXNzOmBHemlwRmlsZWAgc3VwcG9ydHMgdGhlIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGludGVyZmFjZSwKICAgIGluY2x1ZGluZyBpdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgT25seSB0aGUKLSAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kcyBhcmVuJ3QgaW1wbGVtZW50ZWQuCisgICA6bWV0aDpgdHJ1bmNhdGVgIG1ldGhvZCBpc24ndCBpbXBsZW1lbnRlZC4KIAogICAgOmNsYXNzOmBHemlwRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKIApAQCAtOTMsMTIgKzEyMyw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdW5zZWVrYWJsZSBmaWxlcyB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWQxYCBtZXRob2QgaXMgbm93IGltcGxlbWVudGVkLgogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9J3JiJywgY29tcHJlc3NsZXZlbD05KQotCi0gICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYEd6aXBGaWxlKGZpbGVuYW1lLGBgIGBgbW9kZSxgYCBgYGNvbXByZXNzbGV2ZWwpYGAuCi0gICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBpcyByZXF1aXJlZDsgKm1vZGUqIGRlZmF1bHRzIHRvIGBgJ3JiJ2BgIGFuZAotICAgKmNvbXByZXNzbGV2ZWwqIGRlZmF1bHRzIHRvIGBgOWBgLgogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaG1hYy5yc3QgYi9Eb2MvbGlicmFyeS9obWFjLnJzdAppbmRleCBlZmYyNzI0Li4wNzA2ZmY0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9obWFjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9obWFjLnJzdApAQCAtMzgsNiArMzgsMTMgQEAKICAgIGdpdmVuIHRvIHRoZSBjb25zdHJ1Y3Rvci4gIEl0IG1heSBjb250YWluIG5vbi1BU0NJSSBieXRlcywgaW5jbHVkaW5nIE5VTAogICAgYnl0ZXMuCiAKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBXaGVuIGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIDptZXRoOmBkaWdlc3RgIHRvIGFuIGV4dGVybmFsbHktc3VwcGxpZWQKKyAgICAgIGRpZ2VzdCBkdXJpbmcgYSB2ZXJpZmljYXRpb24gcm91dGluZSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZQorICAgICAgOmZ1bmM6YGNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBgYD09YGAgb3BlcmF0b3IKKyAgICAgIHRvIHJlZHVjZSB0aGUgdnVsbmVyYWJpbGl0eSB0byB0aW1pbmcgYXR0YWNrcy4KKwogCiAuLiBtZXRob2Q6OiBITUFDLmhleGRpZ2VzdCgpCiAKQEAgLTQ1LDYgKzUyLDEzIEBACiAgICBsZW5ndGggY29udGFpbmluZyBvbmx5IGhleGFkZWNpbWFsIGRpZ2l0cy4gIFRoaXMgbWF5IGJlIHVzZWQgdG8gZXhjaGFuZ2UgdGhlCiAgICB2YWx1ZSBzYWZlbHkgaW4gZW1haWwgb3Igb3RoZXIgbm9uLWJpbmFyeSBlbnZpcm9ubWVudHMuCiAKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBXaGVuIGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIDptZXRoOmBoZXhkaWdlc3RgIHRvIGFuIGV4dGVybmFsbHktc3VwcGxpZWQKKyAgICAgIGRpZ2VzdCBkdXJpbmcgYSB2ZXJpZmljYXRpb24gcm91dGluZSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZQorICAgICAgOmZ1bmM6YGNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBgYD09YGAgb3BlcmF0b3IKKyAgICAgIHRvIHJlZHVjZSB0aGUgdnVsbmVyYWJpbGl0eSB0byB0aW1pbmcgYXR0YWNrcy4KKwogCiAuLiBtZXRob2Q6OiBITUFDLmNvcHkoKQogCkBAIC01Miw2ICs2NiwyNyBAQAogICAgY29tcHV0ZSB0aGUgZGlnZXN0cyBvZiBzdHJpbmdzIHRoYXQgc2hhcmUgYSBjb21tb24gaW5pdGlhbCBzdWJzdHJpbmcuCiAKIAorVGhpcyBtb2R1bGUgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbjoKKworLi4gZnVuY3Rpb246OiBjb21wYXJlX2RpZ2VzdChhLCBiKQorCisgICBSZXR1cm4gYGBhID09IGJgYC4gIFRoaXMgZnVuY3Rpb24gdXNlcyBhbiBhcHByb2FjaCBkZXNpZ25lZCB0byBwcmV2ZW50CisgICB0aW1pbmcgYW5hbHlzaXMgYnkgYXZvaWRpbmcgY29udGVudC1iYXNlZCBzaG9ydCBjaXJjdWl0aW5nIGJlaGF2aW91ciwKKyAgIG1ha2luZyBpdCBhcHByb3ByaWF0ZSBmb3IgY3J5cHRvZ3JhcGh5LiAgKmEqIGFuZCAqYiogbXVzdCBib3RoIGJlIG9mIHRoZQorICAgc2FtZSB0eXBlOiBlaXRoZXIgOmNsYXNzOmBzdHJgIChBU0NJSSBvbmx5LCBhcyBlLmcuIHJldHVybmVkIGJ5CisgICA6bWV0aDpgSE1BQy5oZXhkaWdlc3RgKSwgb3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sCisgICAoZS5nLiA6Y2xhc3M6YGJ5dGVzYCkuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJZiAqYSogYW5kICpiKiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycywKKyAgICAgIGEgdGltaW5nIGF0dGFjayBjb3VsZCB0aGVvcmV0aWNhbGx5IHJldmVhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgIHR5cGVzIGFuZCBsZW5ndGhzIG9mICphKiBhbmQgKmIqLS1idXQgbm90IHRoZWlyIHZhbHVlcy4KKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBzZWVhbHNvOjoKIAogICAgTW9kdWxlIDptb2Q6YGhhc2hsaWJgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLmVudGl0aWVzLnJzdCBiL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CmluZGV4IGI4YjRhYTguLjY1Y2U4MTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CkBAIC05LDExICs5LDE5IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGRlZmluZXMgdGhyZWUgZGljdGlvbmFyaWVzLCBgYG5hbWUyY29kZXBvaW50YGAsIGBgY29kZXBvaW50Mm5hbWVgYCwKLWFuZCBgYGVudGl0eWRlZnNgYC4gYGBlbnRpdHlkZWZzYGAgaXMgdXNlZCB0byBwcm92aWRlIHRoZSA6YXR0cjpgZW50aXR5ZGVmc2AKLWF0dHJpYnV0ZSBvZiB0aGUgOmNsYXNzOmBodG1sLnBhcnNlci5IVE1MUGFyc2VyYCBjbGFzcy4gIFRoZSBkZWZpbml0aW9uIHByb3ZpZGVkCi1oZXJlIGNvbnRhaW5zIGFsbCB0aGUgZW50aXRpZXMgZGVmaW5lZCBieSBYSFRNTCAxLjAgdGhhdCBjYW4gYmUgaGFuZGxlZCB1c2luZwotc2ltcGxlIHRleHR1YWwgc3Vic3RpdHV0aW9uIGluIHRoZSBMYXRpbi0xIGNoYXJhY3RlciBzZXQgKElTTy04ODU5LTEpLgorVGhpcyBtb2R1bGUgZGVmaW5lcyBmb3VyIGRpY3Rpb25hcmllcywgOmRhdGE6YGh0bWw1YCwKKzpkYXRhOmBuYW1lMmNvZGVwb2ludGAsIDpkYXRhOmBjb2RlcG9pbnQybmFtZWAsIGFuZCA6ZGF0YTpgZW50aXR5ZGVmc2AuCisKKworLi4gZGF0YTo6IGh0bWw1CisKKyAgIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgSFRNTDUgbmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgWyNdXyB0byB0aGUKKyAgIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocyksIGUuZy4gYGBodG1sNVsnZ3Q7J10gPT0gJz4nYGAuCisgICBOb3RlIHRoYXQgdGhlIHRyYWlsaW5nIHNlbWljb2xvbiBpcyBpbmNsdWRlZCBpbiB0aGUgbmFtZSAoZS5nLiBgYCdndDsnYGApLAorICAgaG93ZXZlciBzb21lIG9mIHRoZSBuYW1lcyBhcmUgYWNjZXB0ZWQgYnkgdGhlIHN0YW5kYXJkIGV2ZW4gd2l0aG91dCB0aGUKKyAgIHNlbWljb2xvbjogaW4gdGhpcyBjYXNlIHRoZSBuYW1lIGlzIHByZXNlbnQgd2l0aCBhbmQgd2l0aG91dCB0aGUgYGAnOydgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZGF0YTo6IGVudGl0eWRlZnMKQEAgLTMwLDMgKzM4LDggQEAKIC4uIGRhdGE6OiBjb2RlcG9pbnQybmFtZQogCiAgICBBIGRpY3Rpb25hcnkgdGhhdCBtYXBzIFVuaWNvZGUgY29kZXBvaW50cyB0byBIVE1MIGVudGl0eSBuYW1lcy4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNdIFNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlcy5odG1sCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKaW5kZXggZjNjMzZlYy4uZTQxNTRlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdApAQCAtMTYsMTMgKzE2LDE0IEBACiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY2xhc3MgOmNsYXNzOmBIVE1MUGFyc2VyYCB3aGljaCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvcgogcGFyc2luZyB0ZXh0IGZpbGVzIGZvcm1hdHRlZCBpbiBIVE1MIChIeXBlclRleHQgTWFyay11cCBMYW5ndWFnZSkgYW5kIFhIVE1MLgogCi0uLiBjbGFzczo6IEhUTUxQYXJzZXIoc3RyaWN0PVRydWUpCisuLiBjbGFzczo6IEhUTUxQYXJzZXIoc3RyaWN0PUZhbHNlKQogCi0gICBDcmVhdGUgYSBwYXJzZXIgaW5zdGFuY2UuICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCBpbnZhbGlkCi0gICBIVE1MIHJlc3VsdHMgaW4gOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb25zIFsjXV8uICBJZgotICAgKnN0cmljdCogaXMgYGBGYWxzZWBgLCB0aGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBtYWtlIGEgYmVzdCBndWVzcyBhdAotICAgdGhlIGludGVudGlvbiBvZiBhbnkgaW52YWxpZCBIVE1MIGl0IGVuY291bnRlcnMsIHNpbWlsYXIgdG8gdGhlIHdheSBtb3N0Ci0gICBicm93c2VycyBkby4gIFVzaW5nIGBgc3RyaWN0PUZhbHNlYGAgaXMgYWR2aXNlZC4KKyAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZS4gIElmICpzdHJpY3QqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpLCB0aGUgcGFyc2VyCisgICB3aWxsIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAuICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCB0aGUgcGFyc2VyCisgICB3aWxsIHJhaXNlIGFuIDpleGM6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcmAgZXhjZXB0aW9uIGluc3RlYWQgWyNdXyB3aGVuCisgICBpdCdzIG5vdCBhYmxlIHRvIHBhcnNlIHRoZSBtYXJrdXAuCisgICBUaGUgdXNlIG9mIGBgc3RyaWN0PVRydWVgYCBpcyBkaXNjb3VyYWdlZCBhbmQgdGhlICpzdHJpY3QqIGFyZ3VtZW50IGlzCisgICBkZXByZWNhdGVkLgogCiAgICBBbiA6Y2xhc3M6YC5IVE1MUGFyc2VyYCBpbnN0YW5jZSBpcyBmZWQgSFRNTCBkYXRhIGFuZCBjYWxscyBoYW5kbGVyIG1ldGhvZHMKICAgIHdoZW4gc3RhcnQgdGFncywgZW5kIHRhZ3MsIHRleHQsIGNvbW1lbnRzLCBhbmQgb3RoZXIgbWFya3VwIGVsZW1lbnRzIGFyZQpAQCAtMzIsNyArMzMsMTIgQEAKICAgIFRoaXMgcGFyc2VyIGRvZXMgbm90IGNoZWNrIHRoYXQgZW5kIHRhZ3MgbWF0Y2ggc3RhcnQgdGFncyBvciBjYWxsIHRoZSBlbmQtdGFnCiAgICBoYW5kbGVyIGZvciBlbGVtZW50cyB3aGljaCBhcmUgY2xvc2VkIGltcGxpY2l0bHkgYnkgY2xvc2luZyBhbiBvdXRlciBlbGVtZW50LgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiAqc3RyaWN0KiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgKnN0cmljdCoga2V5d29yZCBhZGRlZC4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQorICAgICAgVGhlICpzdHJpY3QqIGFyZ3VtZW50IGFuZCB0aGUgc3RyaWN0IG1vZGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQuCisgICAgICBUaGUgcGFyc2VyIGlzIG5vdyBhYmxlIHRvIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAgdG9vLgogCiBBbiBleGNlcHRpb24gaXMgZGVmaW5lZCBhcyB3ZWxsOgogCkBAIC00Niw2ICs1MiwxMCBAQAogICAgZGV0ZWN0ZWQsIGFuZCA6YXR0cjpgb2Zmc2V0YCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW50byB0aGUgbGluZSBhdAogICAgd2hpY2ggdGhlIGNvbnN0cnVjdCBzdGFydHMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjUKKyAgICAgIFRoaXMgZXhjZXB0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCdzIG5ldmVyIHJhaXNlZCBieSB0aGUgcGFyc2VyCisgICAgICAod2hlbiB0aGUgZGVmYXVsdCBub24tc3RyaWN0IG1vZGUgaXMgdXNlZCkuCisKIAogRXhhbXBsZSBIVE1MIFBhcnNlciBBcHBsaWNhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHRtbC5yc3QgYi9Eb2MvbGlicmFyeS9odG1sLnJzdAppbmRleCAzYWQxYzBjLi4xMTA3Y2E5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odG1sLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odG1sLnJzdApAQCAtMTksMyArMTksMTAgQEAKICAgIGF0dHJpYnV0ZSB2YWx1ZSBkZWxpbWl0ZWQgYnkgcXVvdGVzLCBhcyBpbiBgYDxhIGhyZWY9Ii4uLiI+YGAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCistLS0tLS0tLS0tLS0tLQorCitTdWJtb2R1bGVzIGluIHRoZSBgYGh0bWxgYCBwYWNrYWdlIGFyZToKKworKiA6bW9kOmBodG1sLnBhcnNlcmAgLS0gSFRNTC9YSFRNTCBwYXJzZXIgd2l0aCBsZW5pZW50IHBhcnNpbmcgbW9kZQorKiA6bW9kOmBodG1sLmVudGl0aWVzYCAtLSBIVE1MIGVudGl0eSBkZWZpbml0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CmluZGV4IGQ0MzlmMjQuLjU1OTlkYWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKQEAgLTM0Myw2ICszNDMsMTUgQEAKIHwgOmNvbnN0OmBVUEdSQURFX1JFUVVJUkVEYCAgICAgICAgICAgICAgICB8IGBgNDI2YGAgfCBIVFRQIFVwZ3JhZGUgdG8gVExTLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI4MTdgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBQUkVDT05ESVRJT05fUkVRVUlSRURgICAgICAgICAgICB8IGBgNDI4YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBUT09fTUFOWV9SRVFVRVNUU2AgICAgICAgICAgICAgICB8IGBgNDI5YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFYCB8IGBgNDMxYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgOmNvbnN0OmBJTlRFUk5BTF9TRVJWRVJfRVJST1JgICAgICAgICAgICB8IGBgNTAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjE+YF8gIHwKQEAgLTM3Myw2ICszODIsMTIgQEAKIHwgOmNvbnN0OmBOT1RfRVhURU5ERURgICAgICAgICAgICAgICAgICAgICB8IGBgNTEwYGAgfCBBbiBIVFRQIEV4dGVuc2lvbiBGcmFtZXdvcmssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI3NzRgLCBTZWN0aW9uIDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEYCB8IGBgNTExYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFkZGVkIGNvZGVzIGBgNDI4YGAsIGBgNDI5YGAsIGBgNDMxYGAgYW5kIGBgNTExYGAgZnJvbSA6cmZjOmA2NTg1YC4KIAogCiAuLiBkYXRhOjogcmVzcG9uc2VzCkBAIC01MDYsNiArNTIxLDEyIEBACiAKICAgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBib2R5LCBvciB1cCB0byB0aGUgbmV4dCAqYW10KiBieXRlcy4KIAorLi4gbWV0aG9kOjogSFRUUFJlc3BvbnNlLnJlYWRpbnRvKGIpCisKKyAgIFJlYWRzIHVwIHRvIHRoZSBuZXh0IGxlbihiKSBieXRlcyBvZiB0aGUgcmVzcG9uc2UgYm9keSBpbnRvIHRoZSBidWZmZXIgKmIqLgorICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBIVFRQUmVzcG9uc2UuZ2V0aGVhZGVyKG5hbWUsIGRlZmF1bHQ9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0CmluZGV4IGNjOGYyNTEuLjQwZjI0ZjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY29va2llamFyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QKQEAgLTQwLDcgKzQwLDExIEBACiAuLiBleGNlcHRpb246OiBMb2FkRXJyb3IKIAogICAgSW5zdGFuY2VzIG9mIDpjbGFzczpgRmlsZUNvb2tpZUphcmAgcmFpc2UgdGhpcyBleGNlcHRpb24gb24gZmFpbHVyZSB0byBsb2FkCi0gICBjb29raWVzIGZyb20gYSBmaWxlLiAgOmV4YzpgTG9hZEVycm9yYCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YElPRXJyb3JgLgorICAgY29va2llcyBmcm9tIGEgZmlsZS4gIDpleGM6YExvYWRFcnJvcmAgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIExvYWRFcnJvciB3YXMgbWFkZSBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgIGluc3RlYWQgb2YKKyAgICAgIDpleGM6YElPRXJyb3JgLgogCiAKIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6CkBAIC0yNTcsOSArMjYxLDEyIEBACiAgICBBcmd1bWVudHMgYXJlIGFzIGZvciA6bWV0aDpgc2F2ZWAuCiAKICAgIFRoZSBuYW1lZCBmaWxlIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB1bmRlcnN0b29kIGJ5IHRoZSBjbGFzcywgb3IKLSAgIDpleGM6YExvYWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBBbHNvLCA6ZXhjOmBJT0Vycm9yYCBtYXkgYmUgcmFpc2VkLCBmb3IKKyAgIDpleGM6YExvYWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBBbHNvLCA6ZXhjOmBPU0Vycm9yYCBtYXkgYmUgcmFpc2VkLCBmb3IKICAgIGV4YW1wbGUgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIG1ldGhvZDo6IEZpbGVDb29raWVKYXIucmV2ZXJ0KGZpbGVuYW1lPU5vbmUsIGlnbm9yZV9kaXNjYXJkPUZhbHNlLCBpZ25vcmVfZXhwaXJlcz1GYWxzZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKaW5kZXggNWFlM2ZkNC4uNjQ2ZjJlOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CkBAIC0yMiw5ICsyMiwxMiBAQAogQ29va2llIGhhbmRsaW5nLiAgQXMgYSByZXN1bHQsIHRoZSBwYXJzaW5nIHJ1bGVzIHVzZWQgYXJlIGEgYml0IGxlc3Mgc3RyaWN0LgogCiBUaGUgY2hhcmFjdGVyIHNldCwgOmRhdGE6YHN0cmluZy5hc2NpaV9sZXR0ZXJzYCwgOmRhdGE6YHN0cmluZy5kaWdpdHNgIGFuZAotYGAhIyQlJicqKy0uXl9gfH5gYCBkZW5vdGUgdGhlIHNldCBvZiB2YWxpZCBjaGFyYWN0ZXJzIGFsbG93ZWQgYnkgdGhpcyBtb2R1bGUKK2BgISMkJSYnKistLl5fYHx+OmBgIGRlbm90ZSB0aGUgc2V0IG9mIHZhbGlkIGNoYXJhY3RlcnMgYWxsb3dlZCBieSB0aGlzIG1vZHVsZQogaW4gQ29va2llIG5hbWUgKGFzIDphdHRyOmB+TW9yc2VsLmtleWApLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWxsb3dlZCAnOicgYXMgYSB2YWxpZCBDb29raWUgbmFtZSBjaGFyYWN0ZXIuCisKIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM4N2EzNwotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2h0dHAucnN0CkBAIC0wLDAgKzEsMTEgQEAKKzptb2Q6YGh0dHBgIC0tLSBIVFRQIG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYGBodHRwYGAgaXMgYSBwYWNrYWdlIHRoYXQgY29sbGVjdHMgc2V2ZXJhbCBtb2R1bGVzIGZvciB3b3JraW5nIHdpdGggdGhlCitIeXBlclRleHQgVHJhbnNmZXIgUHJvdG9jb2w6CisKKyogOm1vZDpgaHR0cC5jbGllbnRgIGlzIGEgbG93LWxldmVsIEhUVFAgcHJvdG9jb2wgY2xpZW50OyBmb3IgaGlnaC1sZXZlbCBVUkwKKyAgb3BlbmluZyB1c2UgOm1vZDpgdXJsbGliLnJlcXVlc3RgCisqIDptb2Q6YGh0dHAuc2VydmVyYCBjb250YWlucyBiYXNpYyBIVFRQIHNlcnZlciBjbGFzc2VzIGJhc2VkIG9uIDptb2Q6YHNvY2tldHNlcnZlcmAKKyogOm1vZDpgaHR0cC5jb29raWVzYCBoYXMgdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgc3RhdGUgbWFuYWdlbWVudCB3aXRoIGNvb2tpZXMKKyogOm1vZDpgaHR0cC5jb29raWVqYXJgIHByb3ZpZGVzIHBlcnNpc3RlbmNlIG9mIGNvb2tpZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAppbmRleCAzMDBlMzMyLi5jYmFkM2VkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CkBAIC0xNzksMTkgKzE3OSwzMCBAQAogCiAgICAuLiBtZXRob2Q6OiBzZW5kX3Jlc3BvbnNlKGNvZGUsIG1lc3NhZ2U9Tm9uZSkKIAotICAgICAgU2VuZHMgYSByZXNwb25zZSBoZWFkZXIgYW5kIGxvZ3MgdGhlIGFjY2VwdGVkIHJlcXVlc3QuIFRoZSBIVFRQIHJlc3BvbnNlCi0gICAgICBsaW5lIGlzIHNlbnQsIGZvbGxvd2VkIGJ5ICpTZXJ2ZXIqIGFuZCAqRGF0ZSogaGVhZGVycy4gVGhlIHZhbHVlcyBmb3IKLSAgICAgIHRoZXNlIHR3byBoZWFkZXJzIGFyZSBwaWNrZWQgdXAgZnJvbSB0aGUgOm1ldGg6YHZlcnNpb25fc3RyaW5nYCBhbmQKLSAgICAgIDptZXRoOmBkYXRlX3RpbWVfc3RyaW5nYCBtZXRob2RzLCByZXNwZWN0aXZlbHkuCisgICAgICBBZGRzIGEgcmVzcG9uc2UgaGVhZGVyIHRvIHRoZSBoZWFkZXJzIGJ1ZmZlciBhbmQgbG9ncyB0aGUgYWNjZXB0ZWQKKyAgICAgIHJlcXVlc3QuIFRoZSBIVFRQIHJlc3BvbnNlIGxpbmUgaXMgd3JpdHRlbiB0byB0aGUgaW50ZXJuYWwgYnVmZmVyLAorICAgICAgZm9sbG93ZWQgYnkgKlNlcnZlciogYW5kICpEYXRlKiBoZWFkZXJzLiBUaGUgdmFsdWVzIGZvciB0aGVzZSB0d28gaGVhZGVycworICAgICAgYXJlIHBpY2tlZCB1cCBmcm9tIHRoZSA6bWV0aDpgdmVyc2lvbl9zdHJpbmdgIGFuZAorICAgICAgOm1ldGg6YGRhdGVfdGltZV9zdHJpbmdgIG1ldGhvZHMsIHJlc3BlY3RpdmVseS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdAorICAgICAgaW50ZW5kIHRvIHNlbmQgYW55IG90aGVyIGhlYWRlcnMgdXNpbmcgdGhlIDptZXRoOmBzZW5kX2hlYWRlcmAgbWV0aG9kLAorICAgICAgdGhlbiA6bWV0aDpgc2VuZF9yZXNwb25zZWAgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgOm1ldGg6YGVuZF9oZWFkZXJzYAorICAgICAgY2FsbC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEhlYWRlcnMgYXJlIHN0b3JlZCB0byBhbiBpbnRlcm5hbCBidWZmZXIgYW5kIDptZXRoOmBlbmRfaGVhZGVyc2AKKyAgICAgICAgIG5lZWRzIHRvIGJlIGNhbGxlZCBleHBsaWNpdGx5LgorCiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfaGVhZGVyKGtleXdvcmQsIHZhbHVlKQogCi0gICAgICBTdG9yZXMgdGhlIEhUVFAgaGVhZGVyIHRvIGFuIGludGVybmFsIGJ1ZmZlciB3aGljaCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlCi0gICAgICBvdXRwdXQgc3RyZWFtIHdoZW4gOm1ldGg6YGVuZF9oZWFkZXJzYCBtZXRob2QgaXMgaW52b2tlZC4KLSAgICAgICprZXl3b3JkKiBzaG91bGQgc3BlY2lmeSB0aGUgaGVhZGVyIGtleXdvcmQsIHdpdGggKnZhbHVlKgotICAgICAgc3BlY2lmeWluZyBpdHMgdmFsdWUuCisgICAgICBBZGRzIHRoZSBIVFRQIGhlYWRlciB0byBhbiBpbnRlcm5hbCBidWZmZXIgd2hpY2ggd2lsbCBiZSB3cml0dGVuIHRvIHRoZQorICAgICAgb3V0cHV0IHN0cmVhbSB3aGVuIGVpdGhlciA6bWV0aDpgZW5kX2hlYWRlcnNgIG9yIDptZXRoOmBmbHVzaF9oZWFkZXJzYCBpcworICAgICAgaW52b2tlZC4gKmtleXdvcmQqIHNob3VsZCBzcGVjaWZ5IHRoZSBoZWFkZXIga2V5d29yZCwgd2l0aCAqdmFsdWUqCisgICAgICBzcGVjaWZ5aW5nIGl0cyB2YWx1ZS4gTm90ZSB0aGF0LCBhZnRlciB0aGUgc2VuZF9oZWFkZXIgY2FsbHMgYXJlIGRvbmUsCisgICAgICA6bWV0aDpgZW5kX2hlYWRlcnNgIE1VU1QgQkUgY2FsbGVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb24uCiAKLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIFN0b3JpbmcgdGhlIGhlYWRlcnMgaW4gYW4gaW50ZXJuYWwgYnVmZmVyCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgSGVhZGVycyBhcmUgc3RvcmVkIGluIGFuIGludGVybmFsIGJ1ZmZlci4KIAogCiAgICAuLiBtZXRob2Q6OiBzZW5kX3Jlc3BvbnNlX29ubHkoY29kZSwgbWVzc2FnZT1Ob25lKQpAQCAtMjA1LDEwICsyMTYsMTkgQEAKIAogICAgLi4gbWV0aG9kOjogZW5kX2hlYWRlcnMoKQogCi0gICAgICBXcml0ZSB0aGUgYnVmZmVyZWQgSFRUUCBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCBzZW5kIGEgYmxhbmsKLSAgICAgIGxpbmUsIGluZGljYXRpbmcgdGhlIGVuZCBvZiB0aGUgSFRUUCBoZWFkZXJzIGluIHRoZSByZXNwb25zZS4KKyAgICAgIEFkZHMgYSBibGFuayBsaW5lCisgICAgICAoaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlKQorICAgICAgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBjYWxscyA6bWV0aDpgZmx1c2hfaGVhZGVycygpYC4KIAotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgV3JpdGluZyB0aGUgYnVmZmVyZWQgaGVhZGVycyB0byB0aGUgb3V0cHV0IHN0cmVhbS4KKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBUaGUgYnVmZmVyZWQgaGVhZGVycyBhcmUgd3JpdHRlbiB0byB0aGUgb3V0cHV0IHN0cmVhbS4KKworICAgLi4gbWV0aG9kOjogZmx1c2hfaGVhZGVycygpCisKKyAgICAgIEZpbmFsbHkgc2VuZCB0aGUgaGVhZGVycyB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgZmx1c2ggdGhlIGludGVybmFsCisgICAgICBoZWFkZXJzIGJ1ZmZlci4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKICAgIC4uIG1ldGhvZDo6IGxvZ19yZXF1ZXN0KGNvZGU9Jy0nLCBzaXplPSctJykKIApAQCAtMjUwLDggKzI3MCwxMSBAQAogCiAgICAuLiBtZXRob2Q6OiBhZGRyZXNzX3N0cmluZygpCiAKLSAgICAgIFJldHVybnMgdGhlIGNsaWVudCBhZGRyZXNzLCBmb3JtYXR0ZWQgZm9yIGxvZ2dpbmcuIEEgbmFtZSBsb29rdXAgaXMKLSAgICAgIHBlcmZvcm1lZCBvbiB0aGUgY2xpZW50J3MgSVAgYWRkcmVzcy4KKyAgICAgIFJldHVybnMgdGhlIGNsaWVudCBhZGRyZXNzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUHJldmlvdXNseSwgYSBuYW1lIGxvb2t1cCB3YXMgcGVyZm9ybWVkLiBUbyBhdm9pZCBuYW1lIHJlc29sdXRpb24KKyAgICAgICAgIGRlbGF5cywgaXQgbm93IGFsd2F5cyByZXR1cm5zIHRoZSBJUCBhZGRyZXNzLgogCiAKIC4uIGNsYXNzOjogU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCkBAIC0yOTksNyArMzIyLDcgQEAKICAgICAgIHJlc3BvbnNlIGlmIHRoZSA6ZnVuYzpgbGlzdGRpcmAgZmFpbHMuCiAKICAgICAgIElmIHRoZSByZXF1ZXN0IHdhcyBtYXBwZWQgdG8gYSBmaWxlLCBpdCBpcyBvcGVuZWQgYW5kIHRoZSBjb250ZW50cyBhcmUKLSAgICAgIHJldHVybmVkLiAgQW55IDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbiBpbiBvcGVuaW5nIHRoZSByZXF1ZXN0ZWQgZmlsZSBpcworICAgICAgcmV0dXJuZWQuICBBbnkgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGluIG9wZW5pbmcgdGhlIHJlcXVlc3RlZCBmaWxlIGlzCiAgICAgICBtYXBwZWQgdG8gYSBgYDQwNGBgLCBgYCdGaWxlIG5vdCBmb3VuZCdgYCBlcnJvci4gT3RoZXJ3aXNlLCB0aGUgY29udGVudAogICAgICAgdHlwZSBpcyBndWVzc2VkIGJ5IGNhbGxpbmcgdGhlIDptZXRoOmBndWVzc190eXBlYCBtZXRob2QsIHdoaWNoIGluIHR1cm4KICAgICAgIHVzZXMgdGhlICpleHRlbnNpb25zX21hcCogdmFyaWFibGUuCkBAIC0zNzgsMyArNDAxLDkgQEAKIAogICAgTm90ZSB0aGF0IENHSSBzY3JpcHRzIHdpbGwgYmUgcnVuIHdpdGggVUlEIG9mIHVzZXIgbm9ib2R5LCBmb3Igc2VjdXJpdHkKICAgIHJlYXNvbnMuICBQcm9ibGVtcyB3aXRoIHRoZSBDR0kgc2NyaXB0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBlcnJvciA0MDMuCisKKzpjbGFzczpgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyYCBjYW4gYmUgZW5hYmxlZCBpbiB0aGUgY29tbWFuZCBsaW5lIGJ5IHBhc3NpbmcKK3RoZSBgYC0tY2dpYGAgb3B0aW9uLjo6CisKKyAgICAgICAgcHl0aG9uIC1tIGh0dHAuc2VydmVyIC0tY2dpIDgwMDAKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCAzZjQ1Yzk1Li5mZWZiMjg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtNjQsMTQgKzY0LDIxIEBACiBUaGVyZSdzIGFsc28gYSBzdWJjbGFzcyBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zOgogCiAKLS4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSkKKy4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSkKIAogICAgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YElNQVA0YCB0aGF0IGNvbm5lY3RzIG92ZXIgYW4gU1NMCiAgICBlbmNyeXB0ZWQgc29ja2V0ICh0byB1c2UgdGhpcyBjbGFzcyB5b3UgbmVlZCBhIHNvY2tldCBtb2R1bGUgdGhhdCB3YXMgY29tcGlsZWQKICAgIHdpdGggU1NMIHN1cHBvcnQpLiAgSWYgKmhvc3QqIGlzIG5vdCBzcGVjaWZpZWQsIGBgJydgYCAodGhlIGxvY2FsIGhvc3QpIGlzIHVzZWQuCiAgICBJZiAqcG9ydCogaXMgb21pdHRlZCwgdGhlIHN0YW5kYXJkIElNQVA0LW92ZXItU1NMIHBvcnQgKDk5MykgaXMgdXNlZC4gICprZXlmaWxlKgogICAgYW5kICpjZXJ0ZmlsZSogYXJlIGFsc28gb3B0aW9uYWwgLSB0aGV5IGNhbiBjb250YWluIGEgUEVNIGZvcm1hdHRlZCBwcml2YXRlIGtleQotICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4KKyAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uICpzc2xfY29udGV4dCogcGFyYW1ldGVyIGlzIGEKKyAgIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdCB3aGljaCBhbGxvd3MgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24KKyAgIG9wdGlvbnMsIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYSBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpCisgICBzdHJ1Y3R1cmUuIE5vdGUgdGhhdCB0aGUgKmtleWZpbGUqLypjZXJ0ZmlsZSogcGFyYW1ldGVycyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggKnNzbF9jb250ZXh0KiwKKyAgIGEgOmNsYXNzOmBWYWx1ZUVycm9yYCBpcyB0aHJvd24gaWYgKmtleWZpbGUqLypjZXJ0ZmlsZSogaXMgcHJvdmlkZWQgYWxvbmcgd2l0aCAqc3NsX2NvbnRleHQqLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNzbF9jb250ZXh0KiBwYXJhbWV0ZXIgYWRkZWQuCiAKIAogVGhlIHNlY29uZCBzdWJjbGFzcyBhbGxvd3MgZm9yIGNvbm5lY3Rpb25zIGNyZWF0ZWQgYnkgYSBjaGlsZCBwcm9jZXNzOgpAQCAtMTA2LDEzICsxMTMsMTUgQEAKIAogLi4gZnVuY3Rpb246OiBUaW1lMkludGVybmFsZGF0ZShkYXRlX3RpbWUpCiAKLSAgIENvbnZlcnQgKmRhdGVfdGltZSogdG8gYW4gSU1BUDQgYGBJTlRFUk5BTERBVEVgYCByZXByZXNlbnRhdGlvbi4gIFRoZQotICAgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtOiBgYCJERC1NbW0tWVlZWSBISDpNTTpTUwotICAgK0hITU0iYGAgKGluY2x1ZGluZyBkb3VibGUtcXVvdGVzKS4gIFRoZSAqZGF0ZV90aW1lKiBhcmd1bWVudCBjYW4gYmUgYQotICAgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZyBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcyByZXR1cm5lZAotICAgYnkgOmZ1bmM6YHRpbWUudGltZWApLCBhIDktdHVwbGUgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUgKGFzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgdGltZS5sb2NhbHRpbWVgKSwgb3IgYSBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0IGNhc2UsIGl0Ci0gICBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgorICAgQ29udmVydCAqZGF0ZV90aW1lKiB0byBhbiBJTUFQNCBgYElOVEVSTkFMREFURWBgIHJlcHJlc2VudGF0aW9uLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybTogYGAiREQtTW1tLVlZWVkgSEg6TU06U1MKKyAgICtISE1NImBgIChpbmNsdWRpbmcgZG91YmxlLXF1b3RlcykuICBUaGUgKmRhdGVfdGltZSogYXJndW1lbnQgY2FuCisgICBiZSBhIG51bWJlciAoaW50IG9yIGZsb2F0KSByZXByZXNlbnRpbmcgc2Vjb25kcyBzaW5jZSBlcG9jaCAoYXMKKyAgIHJldHVybmVkIGJ5IDpmdW5jOmB0aW1lLnRpbWVgKSwgYSA5LXR1cGxlIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lCisgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHRpbWUuc3RydWN0X3RpbWVgIChhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YHRpbWUubG9jYWx0aW1lYCksIGFuIGF3YXJlIGluc3RhbmNlIG9mCisgICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCwgb3IgYSBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0CisgICBjYXNlLCBpdCBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgogCiBOb3RlIHRoYXQgSU1BUDQgbWVzc2FnZSBudW1iZXJzIGNoYW5nZSBhcyB0aGUgbWFpbGJveCBjaGFuZ2VzOyBpbiBwYXJ0aWN1bGFyLAogYWZ0ZXIgYW4gYGBFWFBVTkdFYGAgY29tbWFuZCBwZXJmb3JtcyBkZWxldGlvbnMgdGhlIHJlbWFpbmluZyBtZXNzYWdlcyBhcmUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcC5yc3QgYi9Eb2MvbGlicmFyeS9pbXAucnN0CmluZGV4IDEzNDViMjUuLjVjYWRkYTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wLnJzdApAQCAtMzAsNiArMzAsOSBAQAogICAgOmNvbnN0OmBQWV9TT1VSQ0VgLCA6Y29uc3Q6YFBZX0NPTVBJTEVEYCwgb3IgOmNvbnN0OmBDX0VYVEVOU0lPTmAsIGRlc2NyaWJlZAogICAgYmVsb3cuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVzZSB0aGUgY29uc3RhbnRzIGRlZmluZWQgb24gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgaW5zdGVhZC4KKwogCiAuLiBmdW5jdGlvbjo6IGZpbmRfbW9kdWxlKG5hbWVbLCBwYXRoXSkKIApAQCAtNjksNiArNzIsOSBAQAogICAgdGhlbiB1c2UgOmZ1bmM6YGZpbmRfbW9kdWxlYCB3aXRoIHRoZSAqcGF0aCogYXJndW1lbnQgc2V0IHRvIGBgUC5fX3BhdGhfX2BgLgogICAgV2hlbiAqUCogaXRzZWxmIGhhcyBhIGRvdHRlZCBuYW1lLCBhcHBseSB0aGlzIHJlY2lwZSByZWN1cnNpdmVseS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIGluc3RlYWQuCisKIAogLi4gZnVuY3Rpb246OiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24pCiAKQEAgLTkwLDYgKzk2LDEwIEBACiAgICBpdCB3YXMgbm90IGBgTm9uZWBgLCBldmVuIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gIFRoaXMgaXMgYmVzdCBkb25lCiAgICB1c2luZyBhIDprZXl3b3JkOmB0cnlgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgc3RhdGVtZW50LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVbm5lZWRlZCBhcyBsb2FkZXJzIHNob3VsZCBiZSB1c2VkIHRvIGxvYWQgbW9kdWxlcyBhbmQKKyAgICAgIDpmdW5jOmBmaW5kX21vZHVsZWAgaXMgZGVwcmVjYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IG5ld19tb2R1bGUobmFtZSkKIApAQCAtOTcsMzcgKzEwNyw2IEBACiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKIAotLi4gZnVuY3Rpb246OiBsb2NrX2hlbGQoKQotCi0gICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIGltcG9ydCBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBlbHNlIGBgRmFsc2VgYC4gT24KLSAgIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIGFsd2F5cyByZXR1cm4gYGBGYWxzZWBgLgotCi0gICBPbiBwbGF0Zm9ybXMgd2l0aCB0aHJlYWRzLCBhIHRocmVhZCBleGVjdXRpbmcgYW4gaW1wb3J0IGhvbGRzIGFuIGludGVybmFsIGxvY2sKLSAgIHVudGlsIHRoZSBpbXBvcnQgaXMgY29tcGxldGUuIFRoaXMgbG9jayBibG9ja3Mgb3RoZXIgdGhyZWFkcyBmcm9tIGRvaW5nIGFuCi0gICBpbXBvcnQgdW50aWwgdGhlIG9yaWdpbmFsIGltcG9ydCBjb21wbGV0ZXMsIHdoaWNoIGluIHR1cm4gcHJldmVudHMgb3RoZXIgdGhyZWFkcwotICAgZnJvbSBzZWVpbmcgaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0cyBjb25zdHJ1Y3RlZCBieSB0aGUgb3JpZ2luYWwgdGhyZWFkIHdoaWxlCi0gICBpbiB0aGUgcHJvY2VzcyBvZiBjb21wbGV0aW5nIGl0cyBpbXBvcnQgKGFuZCB0aGUgaW1wb3J0cywgaWYgYW55LCB0cmlnZ2VyZWQgYnkKLSAgIHRoYXQpLgotCi0KLS4uIGZ1bmN0aW9uOjogYWNxdWlyZV9sb2NrKCkKLQotICAgQWNxdWlyZSB0aGUgaW50ZXJwcmV0ZXIncyBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLiAgVGhpcyBsb2NrIHNob3VsZAotICAgYmUgdXNlZCBieSBpbXBvcnQgaG9va3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHkgd2hlbiBpbXBvcnRpbmcgbW9kdWxlcy4KLQotICAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgdGhlIGltcG9ydCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQKLSAgIGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZSB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMKLSAgIGFjcXVpcmVkIGl0LgotCi0gICBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLQotCi0uLiBmdW5jdGlvbjo6IHJlbGVhc2VfbG9jaygpCi0KLSAgIFJlbGVhc2UgdGhlIGludGVycHJldGVyJ3MgaW1wb3J0IGxvY2suIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMKLSAgIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLQotCiAuLiBmdW5jdGlvbjo6IHJlbG9hZChtb2R1bGUpCiAKICAgIFJlbG9hZCBhIHByZXZpb3VzbHkgaW1wb3J0ZWQgKm1vZHVsZSouICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG1vZHVsZSBvYmplY3QsIHNvCkBAIC0yMDEsMTQgKzE4MCwxOSBAQAogICAgc291cmNlICpwYXRoKi4gIEZvciBleGFtcGxlLCBpZiAqcGF0aCogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCB0aGUgcmV0dXJuCiAgICB2YWx1ZSB3b3VsZCBiZSBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIGZvciBQeXRob24gMy4yLgogICAgVGhlIGBgY3B5dGhvbi0zMmBgIHN0cmluZyBjb21lcyBmcm9tIHRoZSBjdXJyZW50IG1hZ2ljIHRhZyAoc2VlCi0gICA6ZnVuYzpgZ2V0X3RhZ2ApLiAgVGhlIHJldHVybmVkIHBhdGggd2lsbCBlbmQgaW4gYGAucHljYGAgd2hlbgotICAgYGBfX2RlYnVnX19gYCBpcyBUcnVlIG9yIGBgLnB5b2BgIGZvciBhbiBvcHRpbWl6ZWQgUHl0aG9uCisgICA6ZnVuYzpgZ2V0X3RhZ2A7IGlmIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCB0aGVuCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBUaGUgcmV0dXJuZWQgcGF0aCB3aWxsIGVuZCBpbgorICAgYGAucHljYGAgd2hlbiBgYF9fZGVidWdfX2BgIGlzIFRydWUgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KICAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgRmFsc2UpLiAgQnkgcGFzc2luZyBpbiBUcnVlIG9yIEZhbHNlIGZvcgogICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKICAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCiAKICAgICpwYXRoKiBuZWVkIG5vdCBleGlzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIElmIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBgYE5vbmVgYCwgdGhlbgorICAgICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMjE2LDcgKzIwMCwxMyBAQAogICAgZmlsZSBwYXRoLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcwogICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCB0aGUgcmV0dXJuZWQgcGF0aCB3b3VsZCBiZQogICAgYGAvZm9vL2Jhci9iYXoucHlgYC4gICpwYXRoKiBuZWVkIG5vdCBleGlzdCwgaG93ZXZlciBpZiBpdCBkb2VzIG5vdCBjb25mb3JtCi0gICB0byA6cGVwOmAzMTQ3YCBmb3JtYXQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLgorICAgdG8gOnBlcDpgMzE0N2AgZm9ybWF0LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gSWYKKyAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCwKKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdoZW4KKyAgICAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZC4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF90YWcoKQpAQCAtMjI0LDYgKzIxNCw2NCBAQAogICAgUmV0dXJuIHRoZSA6cGVwOmAzMTQ3YCBtYWdpYyB0YWcgc3RyaW5nIG1hdGNoaW5nIHRoaXMgdmVyc2lvbiBvZiBQeXRob24ncwogICAgbWFnaWMgbnVtYmVyLCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgZ2V0X21hZ2ljYC4KIAorICAgLi4gbm90ZTo6CisgICAgICBZb3UgbWF5IHVzZSA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgZGlyZWN0bHkgc3RhcnRpbmcKKyAgICAgIGluIFB5dGhvbiAzLjMuCisKKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGVscCBpbnRlcmFjdCB3aXRoIHRoZSBpbXBvcnQgc3lzdGVtJ3MgaW50ZXJuYWwKK2xvY2tpbmcgbWVjaGFuaXNtLiAgTG9ja2luZyBzZW1hbnRpY3Mgb2YgaW1wb3J0cyBhcmUgYW4gaW1wbGVtZW50YXRpb24KK2RldGFpbCB3aGljaCBtYXkgdmFyeSBmcm9tIHJlbGVhc2UgdG8gcmVsZWFzZS4gIEhvd2V2ZXIsIFB5dGhvbiBlbnN1cmVzCit0aGF0IGNpcmN1bGFyIGltcG9ydHMgd29yayB3aXRob3V0IGFueSBkZWFkbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiBsb2NrX2hlbGQoKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgZWxzZQorICAgYGBGYWxzZWBgLiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCBhbHdheXMgcmV0dXJuIGBgRmFsc2VgYC4KKworICAgT24gcGxhdGZvcm1zIHdpdGggdGhyZWFkcywgYSB0aHJlYWQgZXhlY3V0aW5nIGFuIGltcG9ydCBmaXJzdCBob2xkcyBhCisgICBnbG9iYWwgaW1wb3J0IGxvY2ssIHRoZW4gc2V0cyB1cCBhIHBlci1tb2R1bGUgbG9jayBmb3IgdGhlIHJlc3Qgb2YgdGhlCisgICBpbXBvcnQuICBUaGlzIGJsb2NrcyBvdGhlciB0aHJlYWRzIGZyb20gaW1wb3J0aW5nIHRoZSBzYW1lIG1vZHVsZSB1bnRpbAorICAgdGhlIG9yaWdpbmFsIGltcG9ydCBjb21wbGV0ZXMsIHByZXZlbnRpbmcgb3RoZXIgdGhyZWFkcyBmcm9tIHNlZWluZworICAgaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0cyBjb25zdHJ1Y3RlZCBieSB0aGUgb3JpZ2luYWwgdGhyZWFkLiAgQW4KKyAgIGV4Y2VwdGlvbiBpcyBtYWRlIGZvciBjaXJjdWxhciBpbXBvcnRzLCB3aGljaCBieSBjb25zdHJ1Y3Rpb24gaGF2ZSB0bworICAgZXhwb3NlIGFuIGluY29tcGxldGUgbW9kdWxlIG9iamVjdCBhdCBzb21lIHBvaW50LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGxvY2tpbmcgc2NoZW1lIGhhcyBjaGFuZ2VkIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yCisgICB0aGUgbW9zdCBwYXJ0LiAgQSBnbG9iYWwgaW1wb3J0IGxvY2sgaXMga2VwdCBmb3Igc29tZSBjcml0aWNhbCB0YXNrcywKKyAgIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItbW9kdWxlIGxvY2tzLgorCisKKy4uIGZ1bmN0aW9uOjogYWNxdWlyZV9sb2NrKCkKKworICAgQWNxdWlyZSB0aGUgaW50ZXJwcmV0ZXIncyBnbG9iYWwgaW1wb3J0IGxvY2sgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgIFRoaXMgbG9jayBzaG91bGQgYmUgdXNlZCBieSBpbXBvcnQgaG9va3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHkgd2hlbgorICAgaW1wb3J0aW5nIG1vZHVsZXMuCisKKyAgIE9uY2UgYSB0aHJlYWQgaGFzIGFjcXVpcmVkIHRoZSBpbXBvcnQgbG9jaywgdGhlIHNhbWUgdGhyZWFkIG1heSBhY3F1aXJlIGl0CisgICBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUgdGhyZWFkIG11c3QgcmVsZWFzZSBpdCBvbmNlIGZvciBlYWNoIHRpbWUgaXQgaGFzCisgICBhY3F1aXJlZCBpdC4KKworICAgT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiByZWxlYXNlX2xvY2soKQorCisgICBSZWxlYXNlIHRoZSBpbnRlcnByZXRlcidzIGdsb2JhbCBpbXBvcnQgbG9jay4gT24gcGxhdGZvcm1zIHdpdGhvdXQKKyAgIHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGxvY2tpbmcgc2NoZW1lIGhhcyBjaGFuZ2VkIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yCisgICB0aGUgbW9zdCBwYXJ0LiAgQSBnbG9iYWwgaW1wb3J0IGxvY2sgaXMga2VwdCBmb3Igc29tZSBjcml0aWNhbCB0YXNrcywKKyAgIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItbW9kdWxlIGxvY2tzLgorCiAKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIHdpdGggaW50ZWdlciB2YWx1ZXMsIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUsIGFyZSB1c2VkCiB0byBpbmRpY2F0ZSB0aGUgc2VhcmNoIHJlc3VsdCBvZiA6ZnVuYzpgZmluZF9tb2R1bGVgLgpAQCAtMjMzLDMxICsyODEsNDMgQEAKIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgYSBzb3VyY2UgZmlsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQWV9DT01QSUxFRAogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGNvbXBpbGVkIGNvZGUgb2JqZWN0IGZpbGUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogQ19FWFRFTlNJT04KIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgZHluYW1pY2FsbHkgbG9hZGFibGUgc2hhcmVkIGxpYnJhcnkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogUEtHX0RJUkVDVE9SWQogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIHBhY2thZ2UgZGlyZWN0b3J5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IENfQlVJTFRJTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGJ1aWx0LWluIG1vZHVsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQWV9GUk9aRU4KIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgYSBmcm96ZW4gbW9kdWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gY2xhc3M6OiBOdWxsSW1wb3J0ZXIocGF0aF9zdHJpbmcpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CmluZGV4IDE2NDkwNjMuLjY4MWYxZDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdApAQCAtNjMsNyArNjMsNyBAQAogRnVuY3Rpb25zCiAtLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9bGlzdCgpLCBsZXZlbD0wKQorLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKQogCiAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbi4KIApAQCAtODYsNiArODYsMzAgQEAKICAgICB0aGF0IHdhcyBpbXBvcnRlZCAoZS5nLiBgYHBrZy5tb2RgYCksIHdoaWxlIDpmdW5jOmBfX2ltcG9ydF9fYCByZXR1cm5zIHRoZQogICAgIHRvcC1sZXZlbCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZ2BgKS4KIAorLi4gZnVuY3Rpb246OiBmaW5kX2xvYWRlcihuYW1lLCBwYXRoPU5vbmUpCisKKyAgIEZpbmQgdGhlIGxvYWRlciBmb3IgYSBtb2R1bGUsIG9wdGlvbmFsbHkgd2l0aGluIHRoZSBzcGVjaWZpZWQgKnBhdGgqLiBJZiB0aGUKKyAgIG1vZHVsZSBpcyBpbiA6YXR0cjpgc3lzLm1vZHVsZXNgLCB0aGVuIGBgc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfX2BgIGlzCisgICByZXR1cm5lZCAodW5sZXNzIHRoZSBsb2FkZXIgd291bGQgYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCkuIE90aGVyd2lzZSBhIHNlYXJjaCB1c2luZyA6YXR0cjpgc3lzLm1ldGFfcGF0aGAKKyAgIGlzIGRvbmUuIGBgTm9uZWBgIGlzIHJldHVybmVkIGlmIG5vIGxvYWRlciBpcyBmb3VuZC4KKworICAgQSBkb3R0ZWQgbmFtZSBkb2VzIG5vdCBoYXZlIGl0cyBwYXJlbnQncyBpbXBsaWNpdGx5IGltcG9ydGVkLiBJZiB0aGF0IGlzCisgICBkZXNpcmVkIChhbHRob3VnaCBub3QgbmVzc2FyaWx5IHJlcXVpcmVkIHRvIGZpbmQgdGhlIGxvYWRlciwgaXQgd2lsbCBtb3N0CisgICBsaWtlbHkgYmUgbmVlZGVkIGlmIHRoZSBsb2FkZXIgYWN0dWFsbHkgaXMgdXNlZCB0byBsb2FkIHRoZSBtb2R1bGUpLCB0aGVuCisgICB5b3Ugd2lsbCBoYXZlIHRvIGltcG9ydCB0aGUgcGFja2FnZXMgY29udGFpbmluZyB0aGUgbW9kdWxlIHByaW9yIHRvIGNhbGxpbmcKKyAgIHRoaXMgZnVuY3Rpb24uCisKKy4uIGZ1bmN0aW9uOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICBJbnZhbGlkYXRlIHRoZSBpbnRlcm5hbCBjYWNoZXMgb2YgZmluZGVycyBzdG9yZWQgYXQKKyAgIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gSWYgYSBmaW5kZXIgaW1wbGVtZW50cyBgYGludmFsaWRhdGVfY2FjaGVzKClgYCB0aGVuIGl0CisgICB3aWxsIGJlIGNhbGxlZCB0byBwZXJmb3JtIHRoZSBpbnZhbGlkYXRpb24uICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBuZWVkZWQgaWYKKyAgIHNvbWUgbW9kdWxlcyBhcmUgaW5zdGFsbGVkIHdoaWxlIHlvdXIgcHJvZ3JhbSBpcyBydW5uaW5nIGFuZCB5b3UgZXhwZWN0IHRoZQorICAgcHJvZ3JhbSB0byBub3RpY2UgdGhlIGNoYW5nZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIDptb2Q6YGltcG9ydGxpYi5hYmNgIC0tIEFic3RyYWN0IGJhc2UgY2xhc3NlcyByZWxhdGVkIHRvIGltcG9ydAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05NywxOSArMTIxLDkwIEBACiB1c2VkIGJ5IDprZXl3b3JkOmBpbXBvcnRgLiBTb21lIHN1YmNsYXNzZXMgb2YgdGhlIGNvcmUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzCiBhcmUgYWxzbyBwcm92aWRlZCB0byBoZWxwIGluIGltcGxlbWVudGluZyB0aGUgY29yZSBBQkNzLgogCitBQkMgaGllcmFyY2h5OjoKKworICAgIG9iamVjdAorICAgICArLS0gRmluZGVyIChkZXByZWNhdGVkKQorICAgICB8ICAgICstLSBNZXRhUGF0aEZpbmRlcgorICAgICB8ICAgICstLSBQYXRoRW50cnlGaW5kZXIKKyAgICAgKy0tIExvYWRlcgorICAgICAgICAgICstLSBSZXNvdXJjZUxvYWRlciAtLS0tLS0tLSsKKyAgICAgICAgICArLS0gSW5zcGVjdExvYWRlciAgICAgICAgICB8CisgICAgICAgICAgICAgICArLS0gRXhlY3V0aW9uTG9hZGVyIC0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBGaWxlTG9hZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFNvdXJjZUxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5TG9hZGVyIChkZXByZWNhdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5UHljTG9hZGVyIChkZXByZWNhdGVkKQorCiAKIC4uIGNsYXNzOjogRmluZGVyCiAKLSAgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBmaW5kZXJgLgotICAgIFNlZSA6cGVwOmAzMDJgIGZvciB0aGUgZXhhY3QgZGVmaW5pdGlvbiBmb3IgYSBmaW5kZXIuCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBmaW5kZXJgLgogCi0gICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVzZSA6Y2xhc3M6YE1ldGFQYXRoRmluZGVyYCBvciA6Y2xhc3M6YFBhdGhFbnRyeUZpbmRlcmAgaW5zdGVhZC4KIAotICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAotICAgICAgICBtb2R1bGUuIElmIHRoZSA6dGVybTpgZmluZGVyYCBpcyBmb3VuZCBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYW5kIHRoZQotICAgICAgICBtb2R1bGUgdG8gYmUgc2VhcmNoZWQgZm9yIGlzIGEgc3VicGFja2FnZSBvciBtb2R1bGUgdGhlbiAqcGF0aCogd2lsbAotICAgICAgICBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZSBwYXJlbnQgcGFja2FnZS4gSWYgYSBsb2FkZXIKLSAgICAgICAgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisKKyAgICAgIEFuIGFic3RhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgIG1vZHVsZS4gIE9yaWdpbmFsbHkgc3BlY2lmaWVkIGluIDpwZXA6YDMwMmAsIHRoaXMgbWV0aG9kIHdhcyBtZWFudAorICAgICAgZm9yIHVzZSBpbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYW5kIGluIHRoZSBwYXRoLWJhc2VkIGltcG9ydCBzdWJzeXN0ZW0uCisKKworLi4gY2xhc3M6OiBNZXRhUGF0aEZpbmRlcgorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYC4gRm9yCisgICBjb21wYXRpYmlsaXR5LCB0aGlzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBGaW5kZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKKyAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICBtb2R1bGUuICBJZiB0aGlzIGlzIGEgdG9wLWxldmVsIGltcG9ydCwgKnBhdGgqIHdpbGwgYmUgYGBOb25lYGAuCisgICAgICBPdGhlcndpc2UsIHRoaXMgaXMgYSBzZWFyY2ggZm9yIGEgc3VicGFja2FnZSBvciBtb2R1bGUgYW5kICpwYXRoKgorICAgICAgd2lsbCBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZSBwYXJlbnQKKyAgICAgIHBhY2thZ2UuIElmIGEgbG9hZGVyIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQW4gb3B0aW9uYWwgbWV0aG9kIHdoaWNoLCB3aGVuIGNhbGxlZCwgc2hvdWxkIGludmFsaWRhdGUgYW55IGludGVybmFsCisgICAgICBjYWNoZSB1c2VkIGJ5IHRoZSBmaW5kZXIuIFVzZWQgYnkgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AKKyAgICAgIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBjYWNoZXMgb2YgYWxsIGZpbmRlcnMgb24gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLgorCisKKy4uIGNsYXNzOjogUGF0aEVudHJ5RmluZGVyCisKKyAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gIFRob3VnaAorICAgaXQgYmVhcnMgc29tZSBzaW1pbGFyaXRpZXMgdG8gOmNsYXNzOmBNZXRhUGF0aEZpbmRlcmAsIGBgUGF0aEVudHJ5RmluZGVyYGAKKyAgIGlzIG1lYW50IGZvciB1c2Ugb25seSB3aXRoaW4gdGhlIHBhdGgtYmFzZWQgaW1wb3J0IHN1YnN5c3RlbSBwcm92aWRlZAorICAgYnkgOmNsYXNzOmBQYXRoRmluZGVyYC4gVGhpcyBBQkMgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEZpbmRlcmAgZm9yCisgICBjb21wYXRpYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZmluZF9sb2FkZXIoZnVsbG5hbWUpOgorCisgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgbW9kdWxlLiAgUmV0dXJucyBhIDItdHVwbGUgb2YgYGAobG9hZGVyLCBwb3J0aW9uKWBgIHdoZXJlIGBgcG9ydGlvbmBgCisgICAgICBpcyBhIHNlcXVlbmNlIG9mIGZpbGUgc3lzdGVtIGxvY2F0aW9ucyBjb250cmlidXRpbmcgdG8gcGFydCBvZiBhIG5hbWVzcGFjZQorICAgICAgcGFja2FnZS4gVGhlIGxvYWRlciBtYXkgYmUgYGBOb25lYGAgd2hpbGUgc3BlY2lmeWluZyBgYHBvcnRpb25gYCB0bworICAgICAgc2lnbmlmeSB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgdG8gYSBuYW1lc3BhY2UKKyAgICAgIHBhY2thZ2UuIEFuIGVtcHR5IGxpc3QgY2FuIGJlIHVzZWQgZm9yIGBgcG9ydGlvbmBgIHRvIHNpZ25pZnkgdGhlIGxvYWRlcgorICAgICAgaXMgbm90IHBhcnQgb2YgYSBwYWNrYWdlLiBJZiBgYGxvYWRlcmBgIGlzIGBgTm9uZWBgIGFuZCBgYHBvcnRpb25gYCBpcworICAgICAgdGhlIGVtcHR5IGxpc3QgdGhlbiBubyBsb2FkZXIgb3IgbG9jYXRpb24gZm9yIGEgbmFtZXNwYWNlIHBhY2thZ2Ugd2VyZQorICAgICAgZm91bmQgKGkuZS4gZmFpbHVyZSB0byBmaW5kIGFueXRoaW5nIGZvciB0aGUgbW9kdWxlKS4KKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUpOgorCisgICAgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBGaW5kZXIuZmluZF9tb2R1bGVgIHdoaWNoIGlzCisgICAgICBlcXVpdmFsZW50IHRvIGBgc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSlbMF1gYC4KKworICAgLi4gbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICBBbiBvcHRpb25hbCBtZXRob2Qgd2hpY2gsIHdoZW4gY2FsbGVkLCBzaG91bGQgaW52YWxpZGF0ZSBhbnkgaW50ZXJuYWwKKyAgICAgIGNhY2hlIHVzZWQgYnkgdGhlIGZpbmRlci4gVXNlZCBieSA6bWV0aDpgUGF0aEZpbmRlci5pbnZhbGlkYXRlX2NhY2hlc2AKKyAgICAgIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBjYWNoZXMgb2YgYWxsIGNhY2hlZCBmaW5kZXJzLgogCiAKIC4uIGNsYXNzOjogTG9hZGVyCkBAIC0xNTksNiArMjU0LDEzIEBACiAgICAgICAgICAgICAoVGhpcyBpcyBub3Qgc2V0IGJ5IHRoZSBidWlsdC1pbiBpbXBvcnQgbWFjaGluZXJ5LAogICAgICAgICAgICAgYnV0IGl0IHNob3VsZCBiZSBzZXQgd2hlbmV2ZXIgYSA6dGVybTpgbG9hZGVyYCBpcyB1c2VkLikKIAorICAgIC4uIG1ldGhvZDo6IG1vZHVsZV9yZXByKG1vZHVsZSkKKworICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZQorICAgICAgICBnaXZlbiBtb2R1bGUncyByZXByLCBhcyBhIHN0cmluZy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6IDMuMworCiAKIC4uIGNsYXNzOjogUmVzb3VyY2VMb2FkZXIKIApAQCAtMjI0LDYgKzMyNiwzOCBAQAogICAgICAgICBtb2R1bGUuCiAKIAorLi4gY2xhc3M6OiBGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHdoaWNoIGluaGVyaXRzIGZyb20gOmNsYXNzOmBSZXNvdXJjZUxvYWRlcmAgYW5kCisgICA6Y2xhc3M6YEV4ZWN1dGlvbkxvYWRlcmAsIHByb3ZpZGluZyBjb25jcmVhdGUgaW1wbGVtZW50YXRpb25zIG9mCisgICA6bWV0aDpgUmVzb3VyY2VMb2FkZXIuZ2V0X2RhdGFgIGFuZCA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWAuCisKKyAgIFRoZSAqZnVsbG5hbWUqIGFyZ3VtZW50IGlzIGEgZnVsbHkgcmVzb2x2ZWQgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgaXMKKyAgIHRvIGhhbmRsZS4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZmlsZSBmb3IgdGhlIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIGNhbiBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgUGF0aCB0byB0aGUgZmlsZSBvZiB0aGUgbW9kdWxlLgorCisgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgICAgQ2FsbHMgc3VwZXIncyBgYGxvYWRfbW9kdWxlKClgYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2RhdGEocGF0aCkKKworICAgICAgUmV0dXJucyB0aGUgb3BlbiwgYmluYXJ5IGZpbGUgZm9yICpwYXRoKi4KKworCiAuLiBjbGFzczo6IFNvdXJjZUxvYWRlcgogCiAgICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIHNvdXJjZSAoYW5kIG9wdGlvbmFsbHkgYnl0ZWNvZGUpCkBAIC0yNDMsMTIgKzM3NywzMSBAQAogICAgIG9wdGltaXphdGlvbiB0byBzcGVlZCB1cCBsb2FkaW5nIGJ5IHJlbW92aW5nIHRoZSBwYXJzaW5nIHN0ZXAgb2YgUHl0aG9uJ3MKICAgICBjb21waWxlciwgYW5kIHNvIG5vIGJ5dGVjb2RlLXNwZWNpZmljIEFQSSBpcyBleHBvc2VkLgogCi0gICAgLi4gbWV0aG9kOjogcGF0aF9tdGltZShzZWxmLCBwYXRoKQorICAgIC4uIG1ldGhvZDo6IHBhdGhfc3RhdHMocGF0aCkKKworICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIDpjbGFzczpgZGljdGAgY29udGFpbmluZworICAgICAgICBtZXRhZGF0YSBhYm91dCB0aGUgc3BlY2lmZWQgcGF0aC4gIFN1cHBvcnRlZCBkaWN0aW9uYXJ5IGtleXMgYXJlOgorCisgICAgICAgIC0gYGAnbXRpbWUnYGAgKG1hbmRhdG9yeSk6IGFuIGludGVnZXIgb3IgZmxvYXRpbmctcG9pbnQgbnVtYmVyCisgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgc291cmNlIGNvZGU7CisgICAgICAgIC0gYGAnc2l6ZSdgYCAob3B0aW9uYWwpOiB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgQW55IG90aGVyIGtleXMgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIGlnbm9yZWQsIHRvIGFsbG93IGZvciBmdXR1cmUKKyAgICAgICAgZXh0ZW5zaW9ucy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgIC4uIG1ldGhvZDo6IHBhdGhfbXRpbWUocGF0aCkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZQogICAgICAgICBzcGVjaWZpZWQgcGF0aC4KIAotICAgIC4uIG1ldGhvZDo6IHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpCisgICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgOm1ldGg6YHBhdGhfc3RhdHNgLiAgWW91IGRvbid0CisgICAgICAgICAgIGhhdmUgdG8gaW1wbGVtZW50IGl0LCBidXQgaXQgaXMgc3RpbGwgYXZhaWxhYmxlIGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgIHB1cnBvc2VzLgorCisgICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd3JpdGVzIHRoZSBzcGVjaWZpZWQgYnl0ZXMgdG8gYSBmaWxlCiAgICAgICAgIHBhdGguIEFueSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgd2hpY2ggZG8gbm90IGV4aXN0IGFyZSB0byBiZSBjcmVhdGVkCkBAIC0yNTcsMjMgKzQxMCwyNSBAQAogICAgICAgICBXaGVuIHdyaXRpbmcgdG8gdGhlIHBhdGggZmFpbHMgYmVjYXVzZSB0aGUgcGF0aCBpcyByZWFkLW9ubHkKICAgICAgICAgKDphdHRyOmBlcnJuby5FQUNDRVNgKSwgZG8gbm90IHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uLgogCi0gICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X2NvZGVgLgogCi0gICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YExvYWRlci5sb2FkX21vZHVsZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGdldF9zb3VyY2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuaXNfcGFja2FnZWAuIEEgbW9kdWxlCi0gICAgICAgIGlzIGRldGVybWluZWQgdG8gYmUgYSBwYWNrYWdlIGlmIGl0cyBmaWxlIHBhdGggaXMgYSBmaWxlIG5hbWVkCi0gICAgICAgIGBgX19pbml0X19gYCB3aGVuIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyByZW1vdmVkLgorICAgICAgICBpcyBkZXRlcm1pbmVkIHRvIGJlIGEgcGFja2FnZSBpZiBpdHMgZmlsZSBwYXRoIChhcyBwcm92aWRlZCBieQorICAgICAgICA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWApIGlzIGEgZmlsZSBuYW1lZAorICAgICAgICBgYF9faW5pdF9fYGAgd2hlbiB0aGUgZmlsZSBleHRlbnNpb24gaXMgcmVtb3ZlZCAqKmFuZCoqIHRoZSBtb2R1bGUgbmFtZQorICAgICAgICBpdHNlbGYgZG9lcyBub3QgZW5kIGluIGBgX19pbml0X19gYC4KIAogCiAuLiBjbGFzczo6IFB5TG9hZGVyCkBAIC0zNzQsNiArNTI5LDEwIEBACiAgICAgICAgIDpjbGFzczpgUHlMb2FkZXJgLiBEbyBub3RlIHRoYXQgdGhpcyBzb2x1dGlvbiB3aWxsIG5vdCBzdXBwb3J0CiAgICAgICAgIHNvdXJjZWxlc3MvYnl0ZWNvZGUtb25seSBsb2FkaW5nOyBvbmx5IHNvdXJjZSAqYW5kKiBieXRlY29kZSBsb2FkaW5nLgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBVcGRhdGVkIHRvIHBhcnNlIChidXQgbm90IHVzZSkgdGhlIG5ldyBzb3VyY2Ugc2l6ZSBmaWVsZCBpbiBieXRlY29kZQorICAgICAgIGZpbGVzIHdoZW4gcmVhZGluZyBhbmQgdG8gd3JpdGUgb3V0IHRoZSBmaWVsZCBwcm9wZXJseSB3aGVuIHdyaXRpbmcuCisKICAgICAuLiBtZXRob2Q6OiBzb3VyY2VfbXRpbWUoZnVsbG5hbWUpCiAKICAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgc291cmNlCkBAIC00MTcsMTIgKzU3Niw1OSBAQAogVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIHZhcmlvdXMgb2JqZWN0cyB0aGF0IGhlbHAgOmtleXdvcmQ6YGltcG9ydGAKIGZpbmQgYW5kIGxvYWQgbW9kdWxlcy4KIAorLi4gYXR0cmlidXRlOjogU09VUkNFX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvciBzb3VyY2UKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGZpbGUgc3VmZml4ZXMgZm9yIG5vbi1vcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBmaWxlIHN1ZmZpeGVzIGZvciBvcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBCWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuIFNldCB0byBlaXRoZXIgOmF0dHI6YERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTYCBvcgorICAgOmF0dHI6YE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU2AgYmFzZWQgb24gd2hldGhlciBgYF9fZGVidWdfX2BgIGlzIHRydWUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBFWFRFTlNJT05fU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogYWxsX3N1ZmZpeGVzKCkKKworICAgUmV0dXJucyBhIGNvbWJpbmVkIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgYWxsIGZpbGUgc3VmZml4ZXMgZm9yCisgICBtb2R1bGVzIHJlY29nbml6ZWQgYnkgdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkuIFRoaXMgaXMgYQorICAgaGVscGVyIGZvciBjb2RlIHdoaWNoIHNpbXBseSBuZWVkcyB0byBrbm93IGlmIGEgZmlsZXN5c3RlbSBwYXRoCisgICBwb3RlbnRpYWxseSByZWZlcnMgdG8gYSBtb2R1bGUgd2l0aG91dCBuZWVkaW5nIGFueSBkZXRhaWxzIG9uIHRoZSBraW5kCisgICBvZiBtb2R1bGUgKGZvciBleGFtcGxlLCA6ZnVuYzpgaW5zcGVjdC5nZXRtb2R1bGVuYW1lYCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gY2xhc3M6OiBCdWlsdGluSW1wb3J0ZXIKIAogICAgIEFuIDp0ZXJtOmBpbXBvcnRlcmAgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIEFsbCBrbm93biBidWlsdC1pbiBtb2R1bGVzIGFyZQogICAgIGxpc3RlZCBpbiA6ZGF0YTpgc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzYC4gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZQotICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFuZCA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAKLSAgICBBQkNzLgorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlcmAgYW5kCisgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgIEFCQ3MuCiAKICAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCiAgICAgaW5zdGFudGlhdGlvbi4KQEAgLTQzMSw0OCArNjM3LDIyMyBAQAogLi4gY2xhc3M6OiBGcm96ZW5JbXBvcnRlcgogCiAgICAgQW4gOnRlcm06YGltcG9ydGVyYCBmb3IgZnJvemVuIG1vZHVsZXMuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgCi0gICAgQUJDcy4KKyAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIGFuZAorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYCBBQkNzLgogCiAgICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgogICAgIGluc3RhbnRpYXRpb24uCiAKIAorLi4gY2xhc3M6OiBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKKworICAgOnRlcm06YEZpbmRlcmAgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuICBUaGlzIGNsYXNzCisgICBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisKKyAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKKyAgIGluc3RhbnRpYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGNsYXNzOjogUGF0aEZpbmRlcgogCi0gICAgOnRlcm06YEZpbmRlcmAgZm9yIDpkYXRhOmBzeXMucGF0aGAuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisgICBBIDp0ZXJtOmBGaW5kZXJgIGZvciA6ZGF0YTpgc3lzLnBhdGhgIGFuZCBwYWNrYWdlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGVzLgorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIEFCQy4KIAotICAgIFRoaXMgY2xhc3MgZG9lcyBub3QgcGVyZmVjdGx5IG1pcnJvciB0aGUgc2VtYW50aWNzIG9mIDprZXl3b3JkOmBpbXBvcnRgIGluCi0gICAgdGVybXMgb2YgOmRhdGE6YHN5cy5wYXRoYC4gTm8gaW1wbGljaXQgcGF0aCBob29rcyBhcmUgYXNzdW1lZCBmb3IKLSAgICBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgY2xhc3MgYW5kIGl0cyBzZW1hbnRpY3MuCisgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCisgICBpbnN0YW50aWF0aW9uLgogCi0gICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgotICAgIGluc3RhbnRpYXRpb24uCisgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCiAKLSAgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisgICAgIENsYXNzIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGZpbmQgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIG1vZHVsZQorICAgICBzcGVjaWZpZWQgYnkgKmZ1bGxuYW1lKiBvbiA6ZGF0YTpgc3lzLnBhdGhgIG9yLCBpZiBkZWZpbmVkLCBvbgorICAgICAqcGF0aCouIEZvciBlYWNoIHBhdGggZW50cnkgdGhhdCBpcyBzZWFyY2hlZCwKKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpcyBjaGVja2VkLiBJZiBhIG5vbi1mYWxzZSBvYmplY3QgaXMKKyAgICAgZm91bmQgdGhlbiBpdCBpcyB1c2VkIGFzIHRoZSA6dGVybTpgZmluZGVyYCB0byBsb29rIGZvciB0aGUgbW9kdWxlCisgICAgIGJlaW5nIHNlYXJjaGVkIGZvci4gSWYgbm8gZW50cnkgaXMgZm91bmQgaW4KKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgdGhlbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzCisgICAgIHNlYXJjaGVkIGZvciBhIGZpbmRlciBmb3IgdGhlIHBhdGggZW50cnkgYW5kLCBpZiBmb3VuZCwgaXMgc3RvcmVkIGluCisgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgYWxvbmcgd2l0aCBiZWluZyBxdWVyaWVkIGFib3V0IHRoZQorICAgICBtb2R1bGUuIElmIG5vIGZpbmRlciBpcyBldmVyIGZvdW5kIHRoZW4gYGBOb25lYGAgaXMgYm90aCBzdG9yZWQgaW4KKyAgICAgdGhlIGNhY2hlIGFuZCByZXR1cm5lZC4KIAotICAgICAgICBDbGFzcyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBmaW5kIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgc3BlY2lmaWVkIGJ5ICpmdWxsbmFtZSogb24gOmRhdGE6YHN5cy5wYXRoYCBvciwgaWYgZGVmaW5lZCwgb24KLSAgICAgICAgKnBhdGgqLiBGb3IgZWFjaCBwYXRoIGVudHJ5IHRoYXQgaXMgc2VhcmNoZWQsCi0gICAgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgaXMgY2hlY2tlZC4gSWYgYW4gbm9uLWZhbHNlIG9iamVjdCBpcwotICAgICAgICBmb3VuZCB0aGVuIGl0IGlzIHVzZWQgYXMgdGhlIDp0ZXJtOmBmaW5kZXJgIHRvIGxvb2sgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgYmVpbmcgc2VhcmNoZWQgZm9yLiBJZiBubyBlbnRyeSBpcyBmb3VuZCBpbgotICAgICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMKLSAgICAgICAgc2VhcmNoZWQgZm9yIGEgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBhbmQsIGlmIGZvdW5kLCBpcyBzdG9yZWQgaW4KLSAgICAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbG9uZyB3aXRoIGJlaW5nIHF1ZXJpZWQgYWJvdXQgdGhlCi0gICAgICAgIG1vZHVsZS4gSWYgbm8gZmluZGVyIGlzIGV2ZXIgZm91bmQgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIC4uIGNsYXNzbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgIENhbGxzIDptZXRoOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlci5pbnZhbGlkYXRlX2NhY2hlc2Agb24gYWxsCisgICAgIGZpbmRlcnMgc3RvcmVkIGluIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCisKKworLi4gY2xhc3M6OiBGaWxlRmluZGVyKHBhdGgsIFwqbG9hZGVyX2RldGFpbHMpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcmAgd2hpY2gKKyAgIGNhY2hlcyByZXN1bHRzIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorCisgICBUaGUgKnBhdGgqIGFyZ3VtZW50IGlzIHRoZSBkaXJlY3RvcnkgZm9yIHdoaWNoIHRoZSBmaW5kZXIgaXMgaW4gY2hhcmdlIG9mCisgICBzZWFyY2hpbmcuCisKKyAgIFRoZSAqbG9hZGVyX2RldGFpbHMqIGFyZ3VtZW50IGlzIGEgdmFyaWFibGUgbnVtYmVyIG9mIDItaXRlbSB0dXBsZXMgZWFjaAorICAgY29udGFpbmluZyBhIGxvYWRlciBhbmQgYSBzZXF1ZW5jZSBvZiBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcy4KKworICAgVGhlIGZpbmRlciB3aWxsIGNhY2hlIHRoZSBkaXJlY3RvcnkgY29udGVudHMgYXMgbmVjZXNzYXJ5LCBtYWtpbmcgc3RhdCBjYWxscworICAgZm9yIGVhY2ggbW9kdWxlIHNlYXJjaCB0byB2ZXJpZnkgdGhlIGNhY2hlIGlzIG5vdCBvdXRkYXRlZC4gQmVjYXVzZSBjYWNoZQorICAgc3RhbGVuZXNzIHJlbGllcyB1cG9uIHRoZSBncmFudWxhcml0eSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIHN0YXRlCisgICBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0sIHRoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9mCisgICBzZWFyY2hpbmcgZm9yIGEgbW9kdWxlLCBjcmVhdGluZyBhIG5ldyBmaWxlLCBhbmQgdGhlbiBzZWFyY2hpbmcgZm9yIHRoZQorICAgbW9kdWxlIHRoZSBuZXcgZmlsZSByZXByZXNlbnRzLiBJZiB0aGUgb3BlcmF0aW9ucyBoYXBwZW4gZmFzdCBlbm91Z2ggdG8gZml0CisgICB3aXRoaW4gdGhlIGdyYW51bGFyaXR5IG9mIHN0YXQgY2FsbHMsIHRoZW4gdGhlIG1vZHVsZSBzZWFyY2ggd2lsbCBmYWlsLiBUbworICAgcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nLCB3aGVuIHlvdSBjcmVhdGUgYSBtb2R1bGUgZHluYW1pY2FsbHksIG1ha2Ugc3VyZQorICAgdG8gY2FsbCA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdGhlIGZpbmRlciB3aWxsIHNlYXJjaCBpbi4KKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICAgIEF0dGVtcHQgdG8gZmluZCB0aGUgbG9hZGVyIHRvIGhhbmRsZSAqZnVsbG5hbWUqIHdpdGhpbiA6YXR0cjpgcGF0aGAuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQ2xlYXIgb3V0IHRoZSBpbnRlcm5hbCBjYWNoZS4KKworICAgLi4gY2xhc3NtZXRob2Q6OiBwYXRoX2hvb2soXCpsb2FkZXJfZGV0YWlscykKKworICAgICAgQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgZm9yIHVzZSBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLgorICAgICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBGaWxlRmluZGVyYCBpcyByZXR1cm5lZCBieSB0aGUgY2xvc3VyZSB1c2luZyB0aGUKKyAgICAgIHBhdGggYXJndW1lbnQgZ2l2ZW4gdG8gdGhlIGNsb3N1cmUgZGlyZWN0bHkgYW5kICpsb2FkZXJfZGV0YWlscyoKKyAgICAgIGluZGlyZWN0bHkuCisKKyAgICAgIElmIHRoZSBhcmd1bWVudCB0byB0aGUgY2xvc3VyZSBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LAorICAgICAgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworCisuLiBjbGFzczo6IFNvdXJjZUZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcmAgYnkKKyAgIHN1YmNsYXNzaW5nIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCBhbmQgcHJvdmlkaW5nIHNvbWUgY29uY3JldGUKKyAgIGltcGxlbWVudGF0aW9ucyBvZiBvdGhlciBtZXRob2RzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgdGhpcyBsb2FkZXIgd2lsbCBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm4gdHJ1ZSBpZiA6YXR0cjpgcGF0aGAgYXBwZWFycyB0byBiZSBmb3IgYSBwYWNrYWdlLgorCisgICAuLiBtZXRob2Q6OiBwYXRoX3N0YXRzKHBhdGgpCisKKyAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX3N0YXRzYC4KKworICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKKworICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnNldF9kYXRhYC4KKworCisuLiBjbGFzczo6IFNvdXJjZWxlc3NGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCB3aGljaCBjYW4KKyAgIGltcG9ydCBieXRlY29kZSBmaWxlcyAoaS5lLiBubyBzb3VyY2UgY29kZSBmaWxlcyBleGlzdCkuCisKKyAgIFBsZWFzZSBub3RlIHRoYXQgZGlyZWN0IHVzZSBvZiBieXRlY29kZSBmaWxlcyAoYW5kIHRodXMgbm90IHNvdXJjZSBjb2RlCisgICBmaWxlcykgaW5oaWJpdHMgeW91ciBtb2R1bGVzIGZyb20gYmVpbmcgdXNhYmxlIGJ5IGFsbCBQeXRob24KKyAgIGltcGxlbWVudGF0aW9ucyBvciBuZXcgdmVyc2lvbnMgb2YgUHl0aG9uIHdoaWNoIGNoYW5nZSB0aGUgYnl0ZWNvZGUKKyAgIGZvcm1hdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHdpbGwgaGFuZGxlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFRoZSBwYXRoIHRvIHRoZSBieXRlY29kZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBEZXRlcm1pbmVzIGlmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIGJhc2VkIG9uIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgdGhlIGNvZGUgb2JqZWN0IGZvciA6YXR0cjpgbmFtZWAgY3JlYXRlZCBmcm9tIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBieXRlY29kZSBmaWxlcyBoYXZlIG5vIHNvdXJjZSB3aGVuIHRoaXMgbG9hZGVyIGlzCisgICAgICB1c2VkLgorCisKKy4uIGNsYXNzOjogRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgVGhlICpmdWxsbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciBpcyB0bworICAgc3VwcG9ydC4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZXh0ZW5zaW9uIG1vZHVsZSdzIGZpbGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIE5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHN1cHBvcnRzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFBhdGggdG8gdGhlIGV4dGVuc2lvbiBtb2R1bGUuCisKKyAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgICBMb2FkcyB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpZiBhbmQgb25seSBpZiAqZnVsbG5hbWUqIGlzIHRoZSBzYW1lIGFzCisgICAgICA6YXR0cjpgbmFtZWAgb3IgaXMgYGBOb25lYGAuCisKKyAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgYGBUcnVlYGAgaWYgdGhlIGZpbGUgcGF0aCBwb2ludHMgdG8gYSBwYWNrYWdlJ3MgYGBfX2luaXRfX2BgCisgICAgICBtb2R1bGUgYmFzZWQgb24gOmF0dHI6YEVYVEVOU0lPTl9TVUZGSVhFU2AuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIGBgTm9uZWBgIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGxhY2sgYSBjb2RlIG9iamVjdC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBleHRlbnNpb24gbW9kdWxlcyBkbyBub3QgaGF2ZSBzb3VyY2UgY29kZS4KIAogCiA6bW9kOmBpbXBvcnRsaWIudXRpbGAgLS0gVXRpbGl0eSBjb2RlIGZvciBpbXBvcnRlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBtb2R1bGU6OiBpbXBvcnRsaWIudXRpbAotICAgIDpzeW5vcHNpczogSW1wb3J0ZXJzIGFuZCBwYXRoIGhvb2tzCisgICAgOnN5bm9wc2lzOiBVdGlsaXR5IGNvZGUgZm9yIGltcG9ydGVycwogCiBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgdmFyaW91cyBvYmplY3RzIHRoYXQgaGVscCBpbiB0aGUgY29uc3RydWN0aW9uIG9mCiBhbiA6dGVybTpgaW1wb3J0ZXJgLgogCisuLiBmdW5jdGlvbjo6IHJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKQorCisgICBSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLgorCisgICBJZiAgKipuYW1lKiogaGFzIG5vIGxlYWRpbmcgZG90cywgdGhlbiAqKm5hbWUqKiBpcyBzaW1wbHkgcmV0dXJuZWQuIFRoaXMKKyAgIGFsbG93cyBmb3IgdXNhZ2Ugc3VjaCBhcworICAgYGBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoJ3N5cycsIF9fcGFja2FnZV9fKWBgIHdpdGhvdXQgZG9pbmcgYQorICAgY2hlY2sgdG8gc2VlIGlmIHRoZSAqKnBhY2thZ2UqKiBhcmd1bWVudCBpcyBuZWVkZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqKm5hbWUqKiBpcyBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIGJ1dAorICAgcGFja2FnZSBpcyBhIGZhbHNlIHZhbHVlIChlLmcuIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcpLgorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgYWxzbyByYWlzZWQgYSByZWxhdGl2ZSBuYW1lIHdvdWxkIGVzY2FwZSBpdHMgY29udGFpbmluZworICAgcGFja2FnZSAoZS5nLiByZXF1ZXN0aW5nIGBgLi5iYWNvbmBgIGZyb20gd2l0aGluIHRoZSBgYHNwYW1gYCBwYWNrYWdlKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGRlY29yYXRvcjo6IG1vZHVsZV9mb3JfbG9hZGVyCiAKICAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciBhIDp0ZXJtOmBsb2FkZXJgIG1ldGhvZCwKQEAgLTQ4MSwyMiArODYyLDMwIEBACiAgICAgc2lnbmF0dXJlIHRha2luZyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMKICAgICAoZS5nLiBgYGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSlgYCkgZm9yIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQKICAgICB3aWxsIGJlIHRoZSBtb2R1bGUgKipvYmplY3QqKiB0byBiZSB1c2VkIGJ5IHRoZSBsb2FkZXIuCi0gICAgTm90ZSB0aGF0IHRoZSBkZWNvcmF0b3IKLSAgICB3aWxsIG5vdCB3b3JrIG9uIHN0YXRpYyBtZXRob2RzIGJlY2F1c2Ugb2YgdGhlIGFzc3VtcHRpb24gb2YgdHdvCi0gICAgYXJndW1lbnRzLgorICAgIE5vdGUgdGhhdCB0aGUgZGVjb3JhdG9yIHdpbGwgbm90IHdvcmsgb24gc3RhdGljIG1ldGhvZHMgYmVjYXVzZSBvZiB0aGUKKyAgICBhc3N1bXB0aW9uIG9mIHR3byBhcmd1bWVudHMuCiAKICAgICBUaGUgZGVjb3JhdGVkIG1ldGhvZCB3aWxsIHRha2UgaW4gdGhlICoqbmFtZSoqIG9mIHRoZSBtb2R1bGUgdG8gYmUgbG9hZGVkCiAgICAgYXMgZXhwZWN0ZWQgZm9yIGEgOnRlcm06YGxvYWRlcmAuIElmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGEgbmV3IG9uZSBpcyBjb25zdHJ1Y3RlZCB3aXRoIGl0cwotICAgIDphdHRyOmBfX25hbWVfX2AgYXR0cmlidXRlIHNldC4gT3RoZXJ3aXNlIHRoZSBtb2R1bGUgZm91bmQgaW4KLSAgICA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIG1ldGhvZC4gSWYgYW4KLSAgICBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGFuZCBhIG1vZHVsZSB3YXMgYWRkZWQgdG8KKyAgICA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZSBzZXQgdG8gKipuYW1lKiosIDphdHRyOmBfX2xvYWRlcl9fYCBzZXQgdG8KKyAgICAqKnNlbGYqKiwgYW5kIDphdHRyOmBfX3BhY2thZ2VfX2Agc2V0IGlmCisgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5pc19wYWNrYWdlYCBpcyBkZWZpbmVkIGZvciAqKnNlbGYqKiBhbmQKKyAgICBkb2VzIG5vdCByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZm9yICoqbmFtZSoqLiBJZiBhIG5ldyBtb2R1bGUgaXMgbm90CisgICAgbmVlZGVkIHRoZW4gdGhlIG1vZHVsZSBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlCisgICAgbWV0aG9kLgorCisgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB0aGUgZGVjb3JhdGVkIG1ldGhvZCBhbmQgYSBtb2R1bGUgd2FzIGFkZGVkIHRvCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCBpdCB3aWxsIGJlIHJlbW92ZWQgdG8gcHJldmVudCBhIHBhcnRpYWxseSBpbml0aWFsaXplZAogICAgIG1vZHVsZSBmcm9tIGJlaW5nIGluIGxlZnQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4gSWYgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeQogICAgIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgdGhlbiBpdCBpcyBsZWZ0IGFsb25lLgogCiAgICAgVXNlIG9mIHRoaXMgZGVjb3JhdG9yIGhhbmRsZXMgYWxsIHRoZSBkZXRhaWxzIG9mIHdoaWNoIG1vZHVsZSBvYmplY3QgYQotICAgIGxvYWRlciBzaG91bGQgaW5pdGlhbGl6ZSBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgMzAyYC4KKyAgICBsb2FkZXIgc2hvdWxkIGluaXRpYWxpemUgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDMwMmAgYXMgYmVzdCBhcyBwb3NzaWJsZS4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgOmF0dHI6YF9fbG9hZGVyX19gIGFuZCA6YXR0cjpgX19wYWNrYWdlX19gIGFyZSBhdXRvbWF0aWNhbGx5IHNldAorICAgICAgICh3aGVuIHBvc3NpYmxlKS4KIAogLi4gZGVjb3JhdG9yOjogc2V0X2xvYWRlcgogCkBAIC01MDQsNyArODkzLDEzIEBACiAgICAgdG8gc2V0IHRoZSA6YXR0cjpgX19sb2FkZXJfX2AKICAgICBhdHRyaWJ1dGUgb24gbG9hZGVkIG1vZHVsZXMuIElmIHRoZSBhdHRyaWJ1dGUgaXMgYWxyZWFkeSBzZXQgdGhlIGRlY29yYXRvcgogICAgIGRvZXMgbm90aGluZy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50IHRvIHRoZQotICAgIHdyYXBwZWQgbWV0aG9kIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisgICAgd3JhcHBlZCBtZXRob2QgKGkuZS4gYGBzZWxmYGApIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDpmdW5jOmBtb2R1bGVfZm9yX2xvYWRlcmAgYmUgdXNlZCBvdmVyIHRoaXMKKyAgICAgIGRlY29yYXRvciBhcyBpdCBzdWJzdW1lcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIApAQCAtNTE1LDggKzkxMCwxMiBAQAogICAgIHNldCBvbiBhbmQgbm90IHRoZSBtb2R1bGUgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KIAogICAgIFJlbGlhbmNlIG9uIHRoaXMgZGVjb3JhdG9yIGlzIGRpc2NvdXJhZ2VkIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gc2V0Ci0gICAgOmF0dHI6YF9fcGFja2FnZV9fYCBiZWZvcmUgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSBpcyBwb3NzaWJsZS4gQnkKLSAgICBzZXR0aW5nIGl0IGJlZm9yZSB0aGUgY29kZSBmb3IgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCBpdCBhbGxvd3MgdGhlCi0gICAgYXR0cmlidXRlIHRvIGJlIHVzZWQgYXQgdGhlIGdsb2JhbCBsZXZlbCBvZiB0aGUgbW9kdWxlIGR1cmluZworICAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYmVmb3JlIGltcG9ydGluZy4gQnkKKyAgICBzZXR0aW5nIGl0IGJlZm9yZWhhbmQgdGhlIGNvZGUgZm9yIHRoZSBtb2R1bGUgaXMgZXhlY3V0ZWQgd2l0aCB0aGUKKyAgICBhdHRyaWJ1dGUgc2V0IGFuZCB0aHVzIGNhbiBiZSB1c2VkIGJ5IGdsb2JhbCBsZXZlbCBjb2RlIGR1cmluZwogICAgIGluaXRpYWxpemF0aW9uLgogCisgICAuLiBub3RlOjoKKworICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCA6ZnVuYzpgbW9kdWxlX2Zvcl9sb2FkZXJgIGJlIHVzZWQgb3ZlciB0aGlzCisgICAgICBkZWNvcmF0b3IgYXMgaXQgc3Vic3VtZXMgdGhpcyBmdW5jdGlvbmFsaXR5LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5kZXgucnN0IGIvRG9jL2xpYnJhcnkvaW5kZXgucnN0CmluZGV4IDlhYzY4OGMuLmJhMjAzNjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luZGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbmRleC5yc3QKQEAgLTQ2LDcgKzQ2LDggQEAKICAgIHN0ZHR5cGVzLnJzdAogICAgZXhjZXB0aW9ucy5yc3QKIAotICAgc3RyaW5ncy5yc3QKKyAgIHRleHQucnN0CisgICBiaW5hcnkucnN0CiAgICBkYXRhdHlwZXMucnN0CiAgICBudW1lcmljLnJzdAogICAgZnVuY3Rpb25hbC5yc3QKQEAgLTU2LDcgKzU3LDcgQEAKICAgIGZpbGVmb3JtYXRzLnJzdAogICAgY3J5cHRvLnJzdAogICAgYWxsb3MucnN0Ci0gICBzb21lb3MucnN0CisgICBjb25jdXJyZW5jeS5yc3QKICAgIGlwYy5yc3QKICAgIG5ldGRhdGEucnN0CiAgICBtYXJrdXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IGQxMjdjZTguLjAxYmJjZTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0xOTAsMTMgKzE5MCwyNiBAQAogICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQogICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCisgICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCi0gICBuYW1lcyBvZiBlbmNsb3NpbmcgcGFja2FnZXMuICBUaGlzIHVzZXMgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIHRoZSBpbnRlcnByZXRlcgotICAgdXNlcyB3aGVuIHNlYXJjaGluZyBmb3IgbW9kdWxlcy4gIElmIHRoZSBuYW1lIGNhbm5vdCBiZSBtYXRjaGVkIGFjY29yZGluZyB0byB0aGUKLSAgIGludGVycHJldGVyJ3MgcnVsZXMsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorICAgbmFtZXMgb2YgZW5jbG9zaW5nIHBhY2thZ2VzLiBUaGUgZmlsZSBleHRlbnNpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IGFsbCBvZgorICAgdGhlIGVudHJpZXMgaW4gOmZ1bmM6YGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzYC4gSWYgaXQgbWF0Y2hlcywKKyAgIHRoZSBmaW5hbCBwYXRoIGNvbXBvbmVudCBpcyByZXR1cm5lZCB3aXRoIHRoZSBleHRlbnNpb24gcmVtb3ZlZC4KKyAgIE90aGVyd2lzZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisKKyAgIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uICpvbmx5KiByZXR1cm5zIGEgbWVhbmluZ2Z1bCBuYW1lIGZvciBhY3R1YWwKKyAgIFB5dGhvbiBtb2R1bGVzIC0gcGF0aHMgdGhhdCBwb3RlbnRpYWxseSByZWZlciB0byBQeXRob24gcGFja2FnZXMgd2lsbAorICAgc3RpbGwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiB0aGUKKyAgICAgIGRlcHJlY2F0ZWQgOmZ1bmM6YGdldG1vZHVsZWluZm9gLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtMzU1LDE3ICszNjgsMjUgQEAKICAgIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUKICAgIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgdGhlIGxpbmVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAgICBvYmplY3QgYW5kIHRoZSBsaW5lIG51bWJlciBpbmRpY2F0ZXMgd2hlcmUgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdAotICAgbGluZSBvZiBjb2RlIHdhcyBmb3VuZC4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90CisgICBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QKICAgIGJlIHJldHJpZXZlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YElPRXJyb3JgLCBub3cgYW4gYWxpYXMgb2YgdGhlCisgICAgICBmb3JtZXIuCisKIAogLi4gZnVuY3Rpb246OiBnZXRzb3VyY2Uob2JqZWN0KQogCiAgICBSZXR1cm4gdGhlIHRleHQgb2YgdGhlIHNvdXJjZSBjb2RlIGZvciBhbiBvYmplY3QuIFRoZSBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsCiAgICBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZSBvYmplY3QuICBUaGUgc291cmNlIGNvZGUgaXMKLSAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKKyAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKICAgIGNhbm5vdCBiZSByZXRyaWV2ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIHRoZQorICAgICAgZm9ybWVyLgorCiAKIC4uIGZ1bmN0aW9uOjogY2xlYW5kb2MoZG9jKQogCkBAIC0zNzQsNiArMzk1LDI2NCBAQAogICAgb253YXJkcyBpcyByZW1vdmVkLiAgQWxzbywgYWxsIHRhYnMgYXJlIGV4cGFuZGVkIHRvIHNwYWNlcy4KIAogCisuLiBfaW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0OgorCitJbnRyb3NwZWN0aW5nIGNhbGxhYmxlcyB3aXRoIHRoZSBTaWduYXR1cmUgb2JqZWN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBjYWxsIHNpZ25hdHVyZSBvZiBhIGNhbGxhYmxlIG9iamVjdCBhbmQgaXRzCityZXR1cm4gYW5ub3RhdGlvbi4gIFRvIHJldHJpZXZlIGEgU2lnbmF0dXJlIG9iamVjdCwgdXNlIHRoZSA6ZnVuYzpgc2lnbmF0dXJlYAorZnVuY3Rpb24uCisKKy4uIGZ1bmN0aW9uOjogc2lnbmF0dXJlKGNhbGxhYmxlKQorCisgICBSZXR1cm4gYSA6Y2xhc3M6YFNpZ25hdHVyZWAgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYGBjYWxsYWJsZWBgOjoKKworICAgICAgPj4+IGZyb20gaW5zcGVjdCBpbXBvcnQgc2lnbmF0dXJlCisgICAgICA+Pj4gZGVmIGZvbyhhLCAqLCBiOmludCwgKiprd2FyZ3MpOgorICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorCisgICAgICA+Pj4gc3RyKHNpZykKKyAgICAgICcoYSwgKiwgYjppbnQsICoqa3dhcmdzKScKKworICAgICAgPj4+IHN0cihzaWcucGFyYW1ldGVyc1snYiddKQorICAgICAgJ2I6aW50JworCisgICAgICA+Pj4gc2lnLnBhcmFtZXRlcnNbJ2InXS5hbm5vdGF0aW9uCisgICAgICA8Y2xhc3MgJ2ludCc+CisKKyAgIEFjY2VwdHMgYSB3aWRlIHJhbmdlIG9mIHB5dGhvbiBjYWxsYWJsZXMsIGZyb20gcGxhaW4gZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHRvCisgICA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgIG9iamVjdHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBTb21lIGNhbGxhYmxlcyBtYXkgbm90IGJlIGludHJvc3BlY3RhYmxlIGluIGNlcnRhaW4gaW1wbGVtZW50YXRpb25zIG9mCisgICAgICBQeXRob24uICBGb3IgZXhhbXBsZSwgaW4gQ1B5dGhvbiwgYnVpbHQtaW4gZnVuY3Rpb25zIGRlZmluZWQgaW4gQyBwcm92aWRlCisgICAgICBubyBtZXRhZGF0YSBhYm91dCB0aGVpciBhcmd1bWVudHMuCisKKworLi4gY2xhc3M6OiBTaWduYXR1cmUKKworICAgQSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGNhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gYW5kIGl0cyByZXR1cm4KKyAgIGFubm90YXRpb24uICBGb3IgZWFjaCBwYXJhbWV0ZXIgYWNjZXB0ZWQgYnkgdGhlIGZ1bmN0aW9uIGl0IHN0b3JlcyBhCisgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0IGluIGl0cyA6YXR0cjpgcGFyYW1ldGVyc2AgY29sbGVjdGlvbi4KKworICAgU2lnbmF0dXJlIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgVXNlIDptZXRoOmBTaWduYXR1cmUucmVwbGFjZWAgdG8gbWFrZSBhCisgICBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgYSByZXR1cm4gYW5ub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnBhcmFtZXRlcnMKKworICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0cy4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnJldHVybl9hbm5vdGF0aW9uCisKKyAgICAgIFRoZSAicmV0dXJuIiBhbm5vdGF0aW9uIGZvciB0aGUgY2FsbGFibGUuICBJZiB0aGUgY2FsbGFibGUgaGFzIG5vICJyZXR1cm4iCisgICAgICBhbm5vdGF0aW9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5iaW5kKCphcmdzLCAqKmt3YXJncykKKworICAgICAgQ3JlYXRlIGEgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMuCisgICAgICBSZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVudHNgIGlmIGBgKmFyZ3NgYCBhbmQgYGAqKmt3YXJnc2BgIG1hdGNoIHRoZQorICAgICAgc2lnbmF0dXJlLCBvciByYWlzZXMgYSA6ZXhjOmBUeXBlRXJyb3JgLgorCisgICAuLiBtZXRob2Q6OiBTaWduYXR1cmUuYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykKKworICAgICAgV29ya3MgdGhlIHNhbWUgd2F5IGFzIDptZXRoOmBTaWduYXR1cmUuYmluZGAsIGJ1dCBhbGxvd3MgdGhlIG9taXNzaW9uIG9mCisgICAgICBzb21lIHJlcXVpcmVkIGFyZ3VtZW50cyAobWltaWNzIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgYmVoYXZpb3IuKQorICAgICAgUmV0dXJucyA6Y2xhc3M6YEJvdW5kQXJndW1lbnRzYCwgb3IgcmFpc2VzIGEgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUKKyAgICAgIHBhc3NlZCBhcmd1bWVudHMgZG8gbm90IG1hdGNoIHRoZSBzaWduYXR1cmUuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5yZXBsYWNlKCpbLCBwYXJhbWV0ZXJzXVssIHJldHVybl9hbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFNpZ25hdHVyZSBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZSB3YXMgaW52b2tlZAorICAgICAgb24uICBJdCBpcyBwb3NzaWJsZSB0byBwYXNzIGRpZmZlcmVudCBgYHBhcmFtZXRlcnNgYCBhbmQvb3IKKyAgICAgIGBgcmV0dXJuX2Fubm90YXRpb25gYCB0byBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNlCisgICAgICBzaWduYXR1cmUuICBUbyByZW1vdmUgcmV0dXJuX2Fubm90YXRpb24gZnJvbSB0aGUgY29waWVkIFNpZ25hdHVyZSwgcGFzcyBpbgorICAgICAgOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBkZWYgdGVzdChhLCBiKToKKyAgICAgICAgIC4uLiAgICAgcGFzcworICAgICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZSh0ZXN0KQorICAgICAgICAgPj4+IG5ld19zaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj0ibmV3IHJldHVybiBhbm5vIikKKyAgICAgICAgID4+PiBzdHIobmV3X3NpZykKKyAgICAgICAgICIoYSwgYikgLT4gJ25ldyByZXR1cm4gYW5ubyciCisKKworLi4gY2xhc3M6OiBQYXJhbWV0ZXIKKworICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgYSBQYXJhbWV0ZXIgb2JqZWN0LAorICAgeW91IGNhbiB1c2UgOm1ldGg6YFBhcmFtZXRlci5yZXBsYWNlYCB0byBjcmVhdGUgYSBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgYW5kCisgICAgICBhbm5vdGF0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLm5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIE11c3QgYmUgYSB2YWxpZCBweXRob24gaWRlbnRpZmllcgorICAgICAgbmFtZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGBgUE9TSVRJT05BTF9PTkxZYGAgcGFyYW1ldGVycywgd2hpY2ggY2FuIGhhdmUKKyAgICAgIGl0IHNldCB0byBgYE5vbmVgYCkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZhdWx0CisKKyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdAorICAgICAgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmFubm90YXRpb24KKworICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBhbm5vdGF0aW9uLAorICAgICAgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIua2luZAorCisgICAgICBEZXNjcmliZXMgaG93IGFyZ3VtZW50IHZhbHVlcyBhcmUgYm91bmQgdG8gdGhlIHBhcmFtZXRlci4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgKGFjY2Vzc2libGUgdmlhIDpjbGFzczpgUGFyYW1ldGVyYCwgbGlrZSBgYFBhcmFtZXRlci5LRVlXT1JEX09OTFlgYCk6CisKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgTmFtZSAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT05MWSogICAgICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBwb3NpdGlvbmFsICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBoYXMgbm8gZXhwbGljaXQgc3ludGF4IGZvciBkZWZpbmluZyAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCBidXQgbWFueSBidWlsdC1pbnwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCBleHRlbnNpb24gbW9kdWxlIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRob3NlIHRoYXQgYWNjZXB0IG9ubHkgb25lIG9yIHR3byBwYXJhbWV0ZXJzKXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFjY2VwdCB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT1JfS0VZV09SRCp8IFZhbHVlIG1heSBiZSBzdXBwbGllZCBhcyBlaXRoZXIgYSBrZXl3b3JkIG9yIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwgYXJndW1lbnQgKHRoaXMgaXMgdGhlIHN0YW5kYXJkICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJpbmRpbmcgYmVoYXZpb3VyIGZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGluIFB5dGhvbi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9QT1NJVElPTkFMKiAgICAgICB8IEEgdHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmVuJ3QgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJvdW5kIHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGNvcnJlc3BvbmRzIHRvIGEgYGAqYXJnc2BgIHBhcmFtZXRlciBpbiBhICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKktFWVdPUkRfT05MWSogICAgICAgICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LnwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IEtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGFyZSB0aG9zZSB3aGljaCAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFwcGVhciBhZnRlciBhIGBgKmBgIG9yIGBgKmFyZ3NgYCBlbnRyeSBpbiBhIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9LRVlXT1JEKiAgICAgICAgICB8IEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZW4ndCBib3VuZHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMgY29ycmVzcG9uZHMgdG8gYXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGBgKiprd2FyZ3NgYCBwYXJhbWV0ZXIgaW4gYSBQeXRob24gZnVuY3Rpb24gIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgRXhhbXBsZTogcHJpbnQgYWxsIGtleXdvcmQtb25seSBhcmd1bWVudHMgd2l0aG91dCBkZWZhdWx0IHZhbHVlczo6CisKKyAgICAgICAgID4+PiBkZWYgZm9vKGEsIGIsICosIGMsIGQ9MTApOgorICAgICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorICAgICAgICAgPj4+IGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgIC4uLiAgICAgaWYgKHBhcmFtLmtpbmQgPT0gcGFyYW0uS0VZV09SRF9PTkxZIGFuZAorICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSk6CisgICAgICAgICAuLi4gICAgICAgICBwcmludCgnUGFyYW1ldGVyOicsIHBhcmFtKQorICAgICAgICAgUGFyYW1ldGVyOiBjCisKKyAgIC4uIG1ldGhvZDo6IFBhcmFtZXRlci5yZXBsYWNlKCpbLCBuYW1lXVssIGtpbmRdWywgZGVmYXVsdF1bLCBhbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFBhcmFtZXRlciBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZWQgd2FzIGludm9rZWQKKyAgICAgIG9uLiAgVG8gb3ZlcnJpZGUgYSA6Y2xhc3M6YFBhcmFtZXRlcmAgYXR0cmlidXRlLCBwYXNzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICBhcmd1bWVudC4gIFRvIHJlbW92ZSBhIGRlZmF1bHQgdmFsdWUgb3IvYW5kIGFuIGFubm90YXRpb24gZnJvbSBhCisgICAgICBQYXJhbWV0ZXIsIHBhc3MgOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IFBhcmFtZXRlcgorICAgICAgICAgPj4+IHBhcmFtID0gUGFyYW1ldGVyKCdmb28nLCBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZLCBkZWZhdWx0PTQyKQorICAgICAgICAgPj4+IHN0cihwYXJhbSkKKyAgICAgICAgICdmb289NDInCisKKyAgICAgICAgID4+PiBzdHIocGFyYW0ucmVwbGFjZSgpKSAjIFdpbGwgY3JlYXRlIGEgc2hhbGxvdyBjb3B5IG9mICdwYXJhbScKKyAgICAgICAgICdmb289NDInCisKKyAgICAgICAgID4+PiBzdHIocGFyYW0ucmVwbGFjZShkZWZhdWx0PVBhcmFtZXRlci5lbXB0eSwgYW5ub3RhdGlvbj0nc3BhbScpKQorICAgICAgICAgImZvbzonc3BhbSciCisKKworLi4gY2xhc3M6OiBCb3VuZEFyZ3VtZW50cworCisgICBSZXN1bHQgb2YgYSA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIG9yIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCBjYWxsLgorICAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmFyZ3VtZW50cworCisgICAgICBBbiBvcmRlcmVkLCBtdXRhYmxlIG1hcHBpbmcgKDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgKSBvZgorICAgICAgcGFyYW1ldGVycycgbmFtZXMgdG8gYXJndW1lbnRzJyB2YWx1ZXMuICBDb250YWlucyBvbmx5IGV4cGxpY2l0bHkgYm91bmQKKyAgICAgIGFyZ3VtZW50cy4gIENoYW5nZXMgaW4gOmF0dHI6YGFyZ3VtZW50c2Agd2lsbCByZWZsZWN0IGluIDphdHRyOmBhcmdzYCBhbmQKKyAgICAgIDphdHRyOmBrd2FyZ3NgLgorCisgICAgICBTaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIDphdHRyOmBTaWduYXR1cmUucGFyYW1ldGVyc2AgZm9yIGFueQorICAgICAgYXJndW1lbnQgcHJvY2Vzc2luZyBwdXJwb3Nlcy4KKworICAgICAgLi4gbm90ZTo6CisKKyAgICAgICAgIEFyZ3VtZW50cyBmb3Igd2hpY2ggOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBvcgorICAgICAgICAgOm1ldGg6YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIHJlbGllZCBvbiBhIGRlZmF1bHQgdmFsdWUgYXJlIHNraXBwZWQuCisgICAgICAgICBIb3dldmVyLCBpZiBuZWVkZWQsIGl0IGlzIGVhc3kgdG8gaW5jbHVkZSB0aGVtLgorCisgICAgICA6OgorCisgICAgICAgID4+PiBkZWYgZm9vKGEsIGI9MTApOgorICAgICAgICAuLi4gICAgIHBhc3MKKworICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKGZvbykKKyAgICAgICAgPj4+IGJhID0gc2lnLmJpbmQoNSkKKworICAgICAgICA+Pj4gYmEuYXJncywgYmEua3dhcmdzCisgICAgICAgICgoNSwpLCB7fSkKKworICAgICAgICA+Pj4gZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpOgorICAgICAgICAuLi4gICAgIGlmIHBhcmFtLm5hbWUgbm90IGluIGJhLmFyZ3VtZW50czoKKyAgICAgICAgLi4uICAgICAgICAgYmEuYXJndW1lbnRzW3BhcmFtLm5hbWVdID0gcGFyYW0uZGVmYXVsdAorCisgICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKKyAgICAgICAgKCg1LCAxMCksIHt9KQorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmFyZ3MKKworICAgICAgQSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyB2YWx1ZXMuICBEeW5hbWljYWxseSBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgOmF0dHI6YGFyZ3VtZW50c2AgYXR0cmlidXRlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5rd2FyZ3MKKworICAgICAgQSBkaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4gIER5bmFtaWNhbGx5IGNvbXB1dGVkIGZyb20gdGhlCisgICAgICA6YXR0cjpgYXJndW1lbnRzYCBhdHRyaWJ1dGUuCisKKyAgIFRoZSA6YXR0cjpgYXJnc2AgYW5kIDphdHRyOmBrd2FyZ3NgIHByb3BlcnRpZXMgY2FuIGJlIHVzZWQgdG8gaW52b2tlCisgICBmdW5jdGlvbnM6OgorCisgICAgICBkZWYgdGVzdChhLCAqLCBiKToKKyAgICAgICAgIC4uLgorCisgICAgICBzaWcgPSBzaWduYXR1cmUodGVzdCkKKyAgICAgIGJhID0gc2lnLmJpbmQoMTAsIGI9MjApCisgICAgICB0ZXN0KCpiYS5hcmdzLCAqKmJhLmt3YXJncykKKworCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzYyYCAtIEZ1bmN0aW9uIFNpZ25hdHVyZSBPYmplY3QuCisgICAgICBUaGUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbiwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgZXhhbXBsZXMuCisKKwogLi4gX2luc3BlY3QtY2xhc3Nlcy1mdW5jdGlvbnM6CiAKIENsYXNzZXMgYW5kIGZ1bmN0aW9ucwpAQCAtMzk2LDkgKzY3NSw5IEBACiAgICA6dGVybTpgbmFtZWQgdHVwbGVgIGBgQXJnU3BlYyhhcmdzLCB2YXJhcmdzLCBrZXl3b3JkcywgZGVmYXVsdHMpYGAgaXMKICAgIHJldHVybmVkLiAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gKnZhcmFyZ3MqIGFuZCAqa2V5d29yZHMqCiAgICBhcmUgdGhlIG5hbWVzIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gKmRlZmF1bHRzKiBpcyBhCi0gICB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBvciBOb25lIGlmIHRoZXJlIGFyZSBubyBkZWZhdWx0IGFyZ3VtZW50czsKLSAgIGlmIHRoaXMgdHVwbGUgaGFzICpuKiBlbGVtZW50cywgdGhleSBjb3JyZXNwb25kIHRvIHRoZSBsYXN0ICpuKiBlbGVtZW50cwotICAgbGlzdGVkIGluICphcmdzKi4KKyAgIHR1cGxlIG9mIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGFyZSBubyBkZWZhdWx0CisgICBhcmd1bWVudHM7IGlmIHRoaXMgdHVwbGUgaGFzICpuKiBlbGVtZW50cywgdGhleSBjb3JyZXNwb25kIHRvIHRoZSBsYXN0CisgICAqbiogZWxlbWVudHMgbGlzdGVkIGluICphcmdzKi4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMAogICAgICAgVXNlIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AgaW5zdGVhZCwgd2hpY2ggcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQKQEAgLTQxNCwxNCArNjkzLDE5IEBACiAgICBhbm5vdGF0aW9ucylgYAogCiAgICAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gICp2YXJhcmdzKiBhbmQgKnZhcmt3KiBhcmUgdGhlIG5hbWVzCi0gICBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICAqZGVmYXVsdHMqIGlzIGFuIG4tdHVwbGUgb2YKLSAgIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4gICprd29ubHlhcmdzKiBpcyBhIGxpc3Qgb2YKKyAgIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gICpkZWZhdWx0cyogaXMgYW4gKm4qLXR1cGxlCisgICBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgKm4qIGFyZ3VtZW50cywgb3IgYGBOb25lYGAgaWYgdGhlcmUgYXJlIG5vCisgICBkZWZhdWx0IGFyZ3VtZW50cy4gICprd29ubHlhcmdzKiBpcyBhIGxpc3Qgb2YKICAgIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4gICprd29ubHlkZWZhdWx0cyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMKICAgIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4gICphbm5vdGF0aW9ucyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgYXJndW1lbnQKICAgIG5hbWVzIHRvIGFubm90YXRpb25zLgogCiAgICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byA6ZnVuYzpgZ2V0YXJnc3BlY2AuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YAorICAgICAgaW50ZXJmYWNlLCB3aGljaCBwcm92aWRlcyBhIGJldHRlciB3YXkgb2YgaW50cm9zcGVjdGluZyBmdW5jdGlvbnMuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhcmd2YWx1ZXMoZnJhbWUpCiAKQEAgLTQzMiwxMSArNzE2LDIzIEBACiAgICBsb2NhbHMgZGljdGlvbmFyeSBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAKIAotLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlXSkKKy4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIAotICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgZm91ciB2YWx1ZXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBnZXRhcmdzcGVjYC4gIFRoZSBmb3JtYXRcKiBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsCi0gICBmb3JtYXR0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4KKyAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YGdldGFyZ3NwZWNgIG9yIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCisKKyAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKKyAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4gVGhlCisgICBvdGhlciBmaXZlIGFyZ3VtZW50cyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uYWwgZm9ybWF0dGluZyBmdW5jdGlvbnMKKyAgIHRoYXQgYXJlIGNhbGxlZCB0byB0dXJuIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBzdHJpbmdzLiBUaGUgbGFzdCBhcmd1bWVudAorICAgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBzZXF1ZW5jZSBvZiBhcmd1bWVudHMuIEZvciBleGFtcGxlOjoKKworICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IGZvcm1hdGFyZ3NwZWMsIGdldGZ1bGxhcmdzcGVjCisgICAgPj4+IGRlZiBmKGE6IGludCwgYjogZmxvYXQpOgorICAgIC4uLiAgICAgcGFzcworICAgIC4uLgorICAgID4+PiBmb3JtYXRhcmdzcGVjKCpnZXRmdWxsYXJnc3BlYyhmKSkKKyAgICAnKGE6IGludCwgYjogZmxvYXQpJwogCiAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJndmFsdWVzKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZV0pCkBAIC00NjgsMTcgKzc2NCwzNiBAQAogICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IGdldGNhbGxhcmdzCiAgICAgPj4+IGRlZiBmKGEsIGI9MSwgKnBvcywgKipuYW1lZCk6CiAgICAgLi4uICAgICBwYXNzCi0gICAgPj4+IGdldGNhbGxhcmdzKGYsIDEsIDIsIDMpCi0gICAgeydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9Ci0gICAgPj4+IGdldGNhbGxhcmdzKGYsIGE9MiwgeD00KQotICAgIHsnYSc6IDIsICduYW1lZCc6IHsneCc6IDR9LCAnYic6IDEsICdwb3MnOiAoKX0KKyAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZiwgMSwgMiwgMykgPT0geydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9CisgICAgVHJ1ZQorICAgID4+PiBnZXRjYWxsYXJncyhmLCBhPTIsIHg9NCkgPT0geydhJzogMiwgJ25hbWVkJzogeyd4JzogNH0sICdiJzogMSwgJ3Bvcyc6ICgpfQorICAgIFRydWUKICAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ2EnCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiBub3RlOjoKKyAgICAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXcgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBpbnN0ZWFkLgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y2xvc3VyZXZhcnMoZnVuYykKKworICAgR2V0IHRoZSBtYXBwaW5nIG9mIGV4dGVybmFsIG5hbWUgcmVmZXJlbmNlcyBpbiBhIFB5dGhvbiBmdW5jdGlvbiBvcgorICAgbWV0aG9kICpmdW5jKiB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4gQQorICAgOnRlcm06YG5hbWVkIHR1cGxlYCBgYENsb3N1cmVWYXJzKG5vbmxvY2FscywgZ2xvYmFscywgYnVpbHRpbnMsIHVuYm91bmQpYGAKKyAgIGlzIHJldHVybmVkLiAqbm9ubG9jYWxzKiBtYXBzIHJlZmVyZW5jZWQgbmFtZXMgdG8gbGV4aWNhbCBjbG9zdXJlCisgICB2YXJpYWJsZXMsICpnbG9iYWxzKiB0byB0aGUgZnVuY3Rpb24ncyBtb2R1bGUgZ2xvYmFscyBhbmQgKmJ1aWx0aW5zKiB0bworICAgdGhlIGJ1aWx0aW5zIHZpc2libGUgZnJvbSB0aGUgZnVuY3Rpb24gYm9keS4gKnVuYm91bmQqIGlzIHRoZSBzZXQgb2YgbmFtZXMKKyAgIHJlZmVyZW5jZWQgaW4gdGhlIGZ1bmN0aW9uIHRoYXQgY291bGQgbm90IGJlIHJlc29sdmVkIGF0IGFsbCBnaXZlbiB0aGUKKyAgIGN1cnJlbnQgbW9kdWxlIGdsb2JhbHMgYW5kIGJ1aWx0aW5zLgorCisgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZiAqZnVuYyogaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uIG9yIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gX2luc3BlY3Qtc3RhY2s6CiAKQEAgLTY0MywzICs5NTgsMjcgQEAKICAgICAqIEdFTl9DTE9TRUQ6IEV4ZWN1dGlvbiBoYXMgY29tcGxldGVkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworVGhlIGN1cnJlbnQgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBjYW4gYWxzbyBiZSBxdWVyaWVkLiBUaGlzIGlzCittb3N0bHkgdXNlZnVsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB0byBlbnN1cmUgdGhhdCBpbnRlcm5hbCBzdGF0ZSBpcyBiZWluZwordXBkYXRlZCBhcyBleHBlY3RlZDoKKworLi4gZnVuY3Rpb246OiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKQorCisgICBHZXQgdGhlIG1hcHBpbmcgb2YgbGl2ZSBsb2NhbCB2YXJpYWJsZXMgaW4gKmdlbmVyYXRvciogdG8gdGhlaXIgY3VycmVudAorICAgdmFsdWVzLiAgQSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHRoYXQgbWFwcyBmcm9tIHZhcmlhYmxlIG5hbWVzIHRvIHZhbHVlcy4KKyAgIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgY2FsbGluZyA6ZnVuYzpgbG9jYWxzYCBpbiB0aGUgYm9keSBvZiB0aGUKKyAgIGdlbmVyYXRvciwgYW5kIGFsbCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LgorCisgICBJZiAqZ2VuZXJhdG9yKiBpcyBhIDp0ZXJtOmBnZW5lcmF0b3JgIHdpdGggbm8gY3VycmVudGx5IGFzc29jaWF0ZWQgZnJhbWUsCisgICB0aGVuIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQuICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZgorICAgKmdlbmVyYXRvciogaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciBvYmplY3QuCisKKyAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGdlbmVyYXRvciBleHBvc2luZyBhIFB5dGhvbiBzdGFjayBmcmFtZQorICAgICAgZm9yIGludHJvc3BlY3Rpb24sIHdoaWNoIGlzbid0IGd1YXJhbnRlZWQgdG8gYmUgdGhlIGNhc2UgaW4gYWxsCisgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLiBJbiBzdWNoIGNhc2VzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzCisgICAgICByZXR1cm4gYW4gZW1wdHkgZGljdGlvbmFyeS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QgYi9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QKaW5kZXggNmZhNzg3My4uYjg5NTBiYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW50ZXJuZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ludGVybmV0LnJzdApAQCAtMjMsMTAgKzIzLDEyIEBACiAgICBjZ2kucnN0CiAgICBjZ2l0Yi5yc3QKICAgIHdzZ2lyZWYucnN0CisgICB1cmxsaWIucnN0CiAgICB1cmxsaWIucmVxdWVzdC5yc3QKICAgIHVybGxpYi5wYXJzZS5yc3QKICAgIHVybGxpYi5lcnJvci5yc3QKICAgIHVybGxpYi5yb2JvdHBhcnNlci5yc3QKKyAgIGh0dHAucnN0CiAgICBodHRwLmNsaWVudC5yc3QKICAgIGZ0cGxpYi5yc3QKICAgIHBvcGxpYi5yc3QKQEAgLTQwLDUgKzQyLDcgQEAKICAgIGh0dHAuc2VydmVyLnJzdAogICAgaHR0cC5jb29raWVzLnJzdAogICAgaHR0cC5jb29raWVqYXIucnN0CisgICB4bWxycGMucnN0CiAgICB4bWxycGMuY2xpZW50LnJzdAogICAgeG1scnBjLnNlcnZlci5yc3QKKyAgIGlwYWRkcmVzcy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lvLnJzdCBiL0RvYy9saWJyYXJ5L2lvLnJzdAppbmRleCA2MmVhZjZkLi5lODNlNTVjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW8ucnN0CkBAIC0zNyw2ICszNywxMCBAQAogd2lsbCByYWlzZSBhIGBgVHlwZUVycm9yYGAuICBTbyB3aWxsIGdpdmluZyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB0byB0aGUKIGBgd3JpdGUoKWBgIG1ldGhvZCBvZiBhIHRleHQgc3RyZWFtLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyB0aGF0IHVzZWQgdG8gcmFpc2UgOmV4YzpgSU9FcnJvcmAgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgLCBzaW5jZQorICAgOmV4YzpgSU9FcnJvcmAgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIFRleHQgSS9PCiBeXl5eXl5eXgpAQCAtNTUsNyArNTksNyBAQAogCiAgICBmID0gaW8uU3RyaW5nSU8oInNvbWUgaW5pdGlhbCB0ZXh0IGRhdGEiKQogCi1UaGUgdGV4dCBzdHJlYW0gQVBJIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZQorVGhlIHRleHQgc3RyZWFtIEFQSSBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mCiA6Y2xhc3M6YFRleHRJT0Jhc2VgLgogCiAKQEAgLTExMywyMSArMTE3LDEzIEBACiAKIC4uIGV4Y2VwdGlvbjo6IEJsb2NraW5nSU9FcnJvcgogCi0gICBFcnJvciByYWlzZWQgd2hlbiBibG9ja2luZyB3b3VsZCBvY2N1ciBvbiBhIG5vbi1ibG9ja2luZyBzdHJlYW0uICBJdCBpbmhlcml0cwotICAgOmV4YzpgSU9FcnJvcmAuCi0KLSAgIEluIGFkZGl0aW9uIHRvIHRob3NlIG9mIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGhhcyBvbmUKLSAgIGF0dHJpYnV0ZToKLQotICAgLi4gYXR0cmlidXRlOjogY2hhcmFjdGVyc193cml0dGVuCi0KLSAgICAgIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiB0byB0aGUgc3RyZWFtCi0gICAgICBiZWZvcmUgaXQgYmxvY2tlZC4KKyAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IGFsaWFzIGZvciB0aGUgYnVpbHRpbiA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgCisgICBleGNlcHRpb24uCiAKIAogLi4gZXhjZXB0aW9uOjogVW5zdXBwb3J0ZWRPcGVyYXRpb24KIAotICAgQW4gZXhjZXB0aW9uIGluaGVyaXRpbmcgOmV4YzpgSU9FcnJvcmAgYW5kIDpleGM6YFZhbHVlRXJyb3JgIHRoYXQgaXMgcmFpc2VkCisgICBBbiBleGNlcHRpb24gaW5oZXJpdGluZyA6ZXhjOmBPU0Vycm9yYCBhbmQgOmV4YzpgVmFsdWVFcnJvcmAgdGhhdCBpcyByYWlzZWQKICAgIHdoZW4gYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGlzIGNhbGxlZCBvbiBhIHN0cmVhbS4KIAogCkBAIC0yMDYsOCArMjAyLDggQEAKICAgIEV2ZW4gdGhvdWdoIDpjbGFzczpgSU9CYXNlYCBkb2VzIG5vdCBkZWNsYXJlIDptZXRoOmByZWFkYCwgOm1ldGg6YHJlYWRpbnRvYCwKICAgIG9yIDptZXRoOmB3cml0ZWAgYmVjYXVzZSB0aGVpciBzaWduYXR1cmVzIHdpbGwgdmFyeSwgaW1wbGVtZW50YXRpb25zIGFuZAogICAgY2xpZW50cyBzaG91bGQgY29uc2lkZXIgdGhvc2UgbWV0aG9kcyBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UuICBBbHNvLAotICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YElPRXJyb3JgIHdoZW4gb3BlcmF0aW9ucyB0aGV5IGRvIG5vdAotICAgc3VwcG9ydCBhcmUgY2FsbGVkLgorICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIChvciA6ZXhjOmBVbnN1cHBvcnRlZE9wZXJhdGlvbmApCisgICB3aGVuIG9wZXJhdGlvbnMgdGhleSBkbyBub3Qgc3VwcG9ydCBhcmUgY2FsbGVkLgogCiAgICBUaGUgYmFzaWMgdHlwZSB1c2VkIGZvciBiaW5hcnkgZGF0YSByZWFkIGZyb20gb3Igd3JpdHRlbiB0byBhIGZpbGUgaXMKICAgIDpjbGFzczpgYnl0ZXNgLiAgOmNsYXNzOmBieXRlYXJyYXlgXHMgYXJlIGFjY2VwdGVkIHRvbywgYW5kIGluIHNvbWUgY2FzZXMKQEAgLTIxNSwxNSArMjExLDE1IEBACiAgICA6Y2xhc3M6YHN0cmAgZGF0YS4KIAogICAgTm90ZSB0aGF0IGNhbGxpbmcgYW55IG1ldGhvZCAoZXZlbiBpbnF1aXJpZXMpIG9uIGEgY2xvc2VkIHN0cmVhbSBpcwotICAgdW5kZWZpbmVkLiAgSW1wbGVtZW50YXRpb25zIG1heSByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpbiB0aGlzIGNhc2UuCisgICB1bmRlZmluZWQuICBJbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgIGluIHRoaXMgY2FzZS4KIAotICAgSU9CYXNlIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nIHRoYXQgYW4KLSAgIDpjbGFzczpgSU9CYXNlYCBvYmplY3QgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgeWllbGRpbmcgdGhlIGxpbmVzIGluIGEgc3RyZWFtLgotICAgTGluZXMgYXJlIGRlZmluZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHN0cmVhbSBpcwotICAgYSBiaW5hcnkgc3RyZWFtICh5aWVsZGluZyBieXRlcyksIG9yIGEgdGV4dCBzdHJlYW0gKHlpZWxkaW5nIGNoYXJhY3RlcgotICAgc3RyaW5ncykuICBTZWUgOm1ldGg6YH5JT0Jhc2UucmVhZGxpbmVgIGJlbG93LgorICAgOmNsYXNzOmBJT0Jhc2VgIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nCisgICB0aGF0IGFuIDpjbGFzczpgSU9CYXNlYCBvYmplY3QgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgeWllbGRpbmcgdGhlIGxpbmVzIGluIGEKKyAgIHN0cmVhbS4gIExpbmVzIGFyZSBkZWZpbmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQorICAgc3RyZWFtIGlzIGEgYmluYXJ5IHN0cmVhbSAoeWllbGRpbmcgYnl0ZXMpLCBvciBhIHRleHQgc3RyZWFtICh5aWVsZGluZworICAgY2hhcmFjdGVyIHN0cmluZ3MpLiAgU2VlIDptZXRoOmB+SU9CYXNlLnJlYWRsaW5lYCBiZWxvdy4KIAotICAgSU9CYXNlIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKKyAgIDpjbGFzczpgSU9CYXNlYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgSW4gdGhpcyBleGFtcGxlLCAqZmlsZSogaXMgY2xvc2VkIGFmdGVyIHRoZQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCdzIHN1aXRlIGlzIGZpbmlzaGVkLS0tZXZlbiBpZiBhbiBleGNlcHRpb24gb2NjdXJzOjoKIApAQCAtMjQzLDEyICsyMzksMTIgQEAKIAogICAgLi4gYXR0cmlidXRlOjogY2xvc2VkCiAKLSAgICAgIFRydWUgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZC4KIAogICAgLi4gbWV0aG9kOjogZmlsZW5vKCkKIAogICAgICAgUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikgb2YgdGhlIHN0cmVhbSBpZiBpdAotICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQorICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQogICAgICAgZGVzY3JpcHRvci4KIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQpAQCAtMjY0LDcgKzI2MCw3IEBACiAgICAuLiBtZXRob2Q6OiByZWFkYWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGNhbiBiZSByZWFkIGZyb20uICBJZiBGYWxzZSwgOm1ldGg6YHJlYWRgCi0gICAgICB3aWxsIHJhaXNlIDpleGM6YElPRXJyb3JgLgorICAgICAgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gbWV0aG9kOjogcmVhZGxpbmUobGltaXQ9LTEpCiAKQEAgLTI5OSwxMCArMjk1LDE1IEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKICAgICAgICAgIFRoZSBgYFNFRUtfKmBgIGNvbnN0YW50cy4KIAorICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIGNvdWxkIHN1cHBvcnQgYWRkaXRpb25hbCB2YWx1ZXMsIGxpa2UKKyAgICAgICAgIDpkYXRhOmBvcy5TRUVLX0hPTEVgIG9yIDpkYXRhOmBvcy5TRUVLX0RBVEFgLiBUaGUgdmFsaWQgdmFsdWVzCisgICAgICAgICBmb3IgYSBmaWxlIGNvdWxkIGRlcGVuZCBvbiBpdCBiZWluZyBvcGVuIGluIHRleHQgb3IgYmluYXJ5IG1vZGUuCisKICAgIC4uIG1ldGhvZDo6IHNlZWthYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy4gIElmIGBgRmFsc2VgYCwKLSAgICAgIDptZXRoOmBzZWVrYCwgOm1ldGg6YHRlbGxgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCBhbmQgOm1ldGg6YHRydW5jYXRlYCB3aWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAgICAuLiBtZXRob2Q6OiB0ZWxsKCkKIApAQCAtMzIwLDcgKzMyMSw3IEBACiAgICAuLiBtZXRob2Q6OiB3cml0YWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIHN1cHBvcnRzIHdyaXRpbmcuICBJZiBgYEZhbHNlYGAsCi0gICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlbGluZXMobGluZXMpCiAKQEAgLTMzOSw3ICszNDAsNyBAQAogICAgKHRoaXMgaXMgbGVmdCB0byBCdWZmZXJlZCBJL08gYW5kIFRleHQgSS9PLCBkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBwYWdlKS4KIAogICAgSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgZnJvbSA6Y2xhc3M6YElPQmFzZWAsCi0gICBSYXdJT0Jhc2UgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOmNsYXNzOmBSYXdJT0Jhc2VgIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCkBAIC0zNTksMTggKzM2MCwxOCBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyCi0gICAgICBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KKyAgICAgIFJlYWQgdXAgdG8gYGBsZW4oYilgYCBieXRlcyBpbnRvIDpjbGFzczpgYnl0ZWFycmF5YCAqYiogYW5kIHJldHVybiB0aGUKKyAgICAgIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KICAgICAgIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqLCB0byB0aGUgdW5kZXJseWluZyByYXcKLSAgICAgIHN0cmVhbSBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gIFRoaXMgY2FuIGJlIGxlc3MgdGhhbgotICAgICAgYGBsZW4oYilgYCwgZGVwZW5kaW5nIG9uIHNwZWNpZmljcyBvZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtLCBhbmQKLSAgICAgIGVzcGVjaWFsbHkgaWYgaXQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUuICBgYE5vbmVgYCBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIHJhdyBzdHJlYW0gaXMgc2V0IG5vdCB0byBibG9jayBhbmQgbm8gc2luZ2xlIGJ5dGUgY291bGQgYmUgcmVhZGlseQotICAgICAgd3JpdHRlbiB0byBpdC4KKyAgICAgIFdyaXRlIHRoZSBnaXZlbiA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiosIHRvIHRoZQorICAgICAgdW5kZXJseWluZyByYXcgc3RyZWFtIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgVGhpcyBjYW4KKyAgICAgIGJlIGxlc3MgdGhhbiBgYGxlbihiKWBgLCBkZXBlbmRpbmcgb24gc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIHJhdworICAgICAgc3RyZWFtLCBhbmQgZXNwZWNpYWxseSBpZiBpdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZS4gIGBgTm9uZWBgIGlzCisgICAgICByZXR1cm5lZCBpZiB0aGUgcmF3IHN0cmVhbSBpcyBzZXQgbm90IHRvIGJsb2NrIGFuZCBubyBzaW5nbGUgYnl0ZSBjb3VsZAorICAgICAgYmUgcmVhZGlseSB3cml0dGVuIHRvIGl0LgogCiAKIC4uIGNsYXNzOjogQnVmZmVyZWRJT0Jhc2UKQEAgLTQyMCw4ICs0MjEsOCBAQAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCiAgICAgICBSZWFkIGFuZCByZXR1cm4gdXAgdG8gKm4qIGJ5dGVzLiAgSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGBgTm9uZWBgLCBvcgotICAgICAgbmVnYXRpdmUsIGRhdGEgaXMgcmVhZCBhbmQgcmV0dXJuZWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuICBBbiBlbXB0eSBieXRlcwotICAgICAgb2JqZWN0IGlzIHJldHVybmVkIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gIEFuIGVtcHR5CisgICAgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaXMgcmV0dXJuZWQgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGF0IEVPRi4KIAogICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIHBvc2l0aXZlLCBhbmQgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyBub3QKICAgICAgIGludGVyYWN0aXZlLCBtdWx0aXBsZSByYXcgcmVhZHMgbWF5IGJlIGlzc3VlZCB0byBzYXRpc2Z5IHRoZSBieXRlIGNvdW50CkBAIC00NDEsMjIgKzQ0MiwyMyBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICAgICByZWFkLgorICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAgICAgIGJ5dGVzIHJlYWQuCiAKICAgICAgIExpa2UgOm1ldGg6YHJlYWRgLCBtdWx0aXBsZSByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwotICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyAnaW50ZXJhY3RpdmUnLgorICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyBpbnRlcmFjdGl2ZS4KIAogICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluCiAgICAgICBub24gYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlcgotICAgICAgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmIHRoZSB3cml0ZSBmYWlscwotICAgICAgYW4gOmV4YzpgSU9FcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwKLSAgICAgIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZSB1bmRlcmx5aW5nCi0gICAgICBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5IHJlYXNvbnMuCisgICAgICBXcml0ZSB0aGUgZ2l2ZW4gOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgKmIqIGFuZAorICAgICAgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmCisgICAgICB0aGUgd3JpdGUgZmFpbHMgYW4gOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZQorICAgICAgYWN0dWFsIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZQorICAgICAgdW5kZXJseWluZyBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5CisgICAgICByZWFzb25zLgogCiAgICAgICBXaGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBhIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgZGF0YSBuZWVkZWQgdG8gYmUgd3JpdHRlbiB0byB0aGUgcmF3IHN0cmVhbSBidXQgaXQgY291bGRuJ3QgYWNjZXB0CkBAIC00NjYsNyArNDY4LDcgQEAKIFJhdyBGaWxlIEkvTwogXl5eXl5eXl5eXl5eCiAKLS4uIGNsYXNzOjogRmlsZUlPKG5hbWUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUpCisuLiBjbGFzczo6IEZpbGVJTyhuYW1lLCBtb2RlPSdyJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkKIAogICAgOmNsYXNzOmBGaWxlSU9gIHJlcHJlc2VudHMgYW4gT1MtbGV2ZWwgZmlsZSBjb250YWluaW5nIGJ5dGVzIGRhdGEuCiAgICBJdCBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YFJhd0lPQmFzZWAgaW50ZXJmYWNlIChhbmQgdGhlcmVmb3JlIHRoZQpAQCAtNDc0LDIyICs0NzYsMzUgQEAKIAogICAgVGhlICpuYW1lKiBjYW4gYmUgb25lIG9mIHR3byB0aGluZ3M6CiAKLSAgICogYSBjaGFyYWN0ZXIgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGZpbGUKLSAgICAgd2hpY2ggd2lsbCBiZSBvcGVuZWQ7CisgICAqIGEgY2hhcmFjdGVyIHN0cmluZyBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZQorICAgICBmaWxlIHdoaWNoIHdpbGwgYmUgb3BlbmVkOwogICAgKiBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGFuIGV4aXN0aW5nIE9TLWxldmVsIGZpbGUgZGVzY3JpcHRvcgogICAgICB0byB3aGljaCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgRmlsZUlPYCBvYmplY3Qgd2lsbCBnaXZlIGFjY2Vzcy4KIAotICAgVGhlICptb2RlKiBjYW4gYmUgYGAncidgYCwgYGAndydgYCBvciBgYCdhJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgd3JpdGluZywKLSAgIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvcgotICAgd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQWRkIGEKKyAgIFRoZSAqbW9kZSogY2FuIGJlIGBgJ3InYGAsIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCBmb3IgcmVhZGluZworICAgKGRlZmF1bHQpLCB3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiBUaGUgZmlsZSB3aWxsIGJlCisgICBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlCisgICB0cnVuY2F0ZWQgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYKKyAgIGl0IGFscmVhZHkgZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nCisgICBpbXBsaWVzIHdyaXRpbmcsIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gYGAndydgYC4gQWRkIGEKICAgIGBgJysnYGAgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuCiAKICAgIFRoZSA6bWV0aDpgcmVhZGAgKHdoZW4gY2FsbGVkIHdpdGggYSBwb3NpdGl2ZSBhcmd1bWVudCksIDptZXRoOmByZWFkaW50b2AKICAgIGFuZCA6bWV0aDpgd3JpdGVgIG1ldGhvZHMgb24gdGhpcyBjbGFzcyB3aWxsIG9ubHkgbWFrZSBvbmUgc3lzdGVtIGNhbGwuCiAKKyAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nCisgICBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aAorICAgKCpuYW1lKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nCisgICA6bW9kOmBvcy5vcGVuYCBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nCisgICBgYE5vbmVgYCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKyAgICAgIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIDpjbGFzczpgSU9CYXNlYCBhbmQKICAgIDpjbGFzczpgUmF3SU9CYXNlYCwgOmNsYXNzOmBGaWxlSU9gIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGF0YQotICAgYXR0cmlidXRlcyBhbmQgbWV0aG9kczoKKyAgIGF0dHJpYnV0ZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IG1vZGUKIApAQCAtNTM3LDcgKzU1Miw3IEBACiAKICAgIC4uIG1ldGhvZDo6IGdldHZhbHVlKCkKIAotICAgICAgUmV0dXJuIGBgYnl0ZXNgYCBjb250YWluaW5nIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGJ1ZmZlci4KKyAgICAgIFJldHVybiA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGJ1ZmZlci4KIAogICAgLi4gbWV0aG9kOjogcmVhZDEoKQogCkBAIC01ODEsNyArNTk2LDcgQEAKIAogICAgQSBidWZmZXIgcHJvdmlkaW5nIGhpZ2hlci1sZXZlbCBhY2Nlc3MgdG8gYSB3cml0ZWFibGUsIHNlcXVlbnRpYWwKICAgIDpjbGFzczpgUmF3SU9CYXNlYCBvYmplY3QuICBJdCBpbmhlcml0cyA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYC4KLSAgIFdoZW4gd3JpdGluZyB0byB0aGlzIG9iamVjdCwgZGF0YSBpcyBub3JtYWxseSBoZWxkIGludG8gYW4gaW50ZXJuYWwKKyAgIFdoZW4gd3JpdGluZyB0byB0aGlzIG9iamVjdCwgZGF0YSBpcyBub3JtYWxseSBwbGFjZWQgaW50byBhbiBpbnRlcm5hbAogICAgYnVmZmVyLiAgVGhlIGJ1ZmZlciB3aWxsIGJlIHdyaXR0ZW4gb3V0IHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgUmF3SU9CYXNlYAogICAgb2JqZWN0IHVuZGVyIHZhcmlvdXMgY29uZGl0aW9ucywgaW5jbHVkaW5nOgogCkBAIC01OTQsOCArNjA5LDYgQEAKICAgICpyYXcqIHN0cmVhbS4gIElmIHRoZSAqYnVmZmVyX3NpemUqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8KICAgIDpkYXRhOmBERUZBVUxUX0JVRkZFUl9TSVpFYC4KIAotICAgQSB0aGlyZCBhcmd1bWVudCwgKm1heF9idWZmZXJfc2l6ZSosIGlzIHN1cHBvcnRlZCwgYnV0IHVudXNlZCBhbmQgZGVwcmVjYXRlZC4KLQogICAgOmNsYXNzOmBCdWZmZXJlZFdyaXRlcmAgcHJvdmlkZXMgb3Igb3ZlcnJpZGVzIHRoZXNlIG1ldGhvZHMgaW4gYWRkaXRpb24gdG8KICAgIHRob3NlIGZyb20gOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAgYW5kIDpjbGFzczpgSU9CYXNlYDoKIApAQCAtNjA2LDkgKzYxOSwxMCBAQAogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcwotICAgICAgd3JpdHRlbi4gIFdoZW4gaW4gbm9uLWJsb2NraW5nIG1vZGUsIGEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQKLSAgICAgIGlmIHRoZSBidWZmZXIgbmVlZHMgdG8gYmUgd3JpdHRlbiBvdXQgYnV0IHRoZSByYXcgc3RyZWFtIGJsb2Nrcy4KKyAgICAgIFdyaXRlIHRoZSA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiogYW5kIHJldHVybiB0aGUKKyAgICAgIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgV2hlbiBpbiBub24tYmxvY2tpbmcgbW9kZSwgYQorICAgICAgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0dGVuIG91dCBidXQKKyAgICAgIHRoZSByYXcgc3RyZWFtIGJsb2Nrcy4KIAogCiAuLiBjbGFzczo6IEJ1ZmZlcmVkUmFuZG9tKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSkKQEAgLTYyMSw4ICs2MzUsNiBAQAogICAgaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiAgSWYgdGhlICpidWZmZXJfc2l6ZSogaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0bwogICAgOmRhdGE6YERFRkFVTFRfQlVGRkVSX1NJWkVgLgogCi0gICBBIHRoaXJkIGFyZ3VtZW50LCAqbWF4X2J1ZmZlcl9zaXplKiwgaXMgc3VwcG9ydGVkLCBidXQgdW51c2VkIGFuZCBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkUmFuZG9tYCBpcyBjYXBhYmxlIG9mIGFueXRoaW5nIDpjbGFzczpgQnVmZmVyZWRSZWFkZXJgIG9yCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkV3JpdGVyYCBjYW4gZG8uCiAKQEAgLTYzNyw5ICs2NDksNiBAQAogICAgd3JpdGVhYmxlIHJlc3BlY3RpdmVseS4gIElmIHRoZSAqYnVmZmVyX3NpemUqIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8KICAgIDpkYXRhOmBERUZBVUxUX0JVRkZFUl9TSVpFYC4KIAotICAgQSBmb3VydGggYXJndW1lbnQsICptYXhfYnVmZmVyX3NpemUqLCBpcyBzdXBwb3J0ZWQsIGJ1dCB1bnVzZWQgYW5kCi0gICBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkUldQYWlyYCBpbXBsZW1lbnRzIGFsbCBvZiA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYFwncyBtZXRob2RzCiAgICBleGNlcHQgZm9yIDptZXRoOmB+QnVmZmVyZWRJT0Jhc2UuZGV0YWNoYCwgd2hpY2ggcmFpc2VzCiAgICA6ZXhjOmBVbnN1cHBvcnRlZE9wZXJhdGlvbmAuCkBAIC02ODIsNyArNjkxLDcgQEAKIAogICAgICAgVGhlIHVuZGVybHlpbmcgYmluYXJ5IGJ1ZmZlciAoYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBpbnN0YW5jZSkgdGhhdAogICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBkZWFscyB3aXRoLiAgVGhpcyBpcyBub3QgcGFydCBvZiB0aGUKLSAgICAgIDpjbGFzczpgVGV4dElPQmFzZWAgQVBJIGFuZCBtYXkgbm90IGV4aXN0IG9uIHNvbWUgaW1wbGVtZW50YXRpb25zLgorICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBBUEkgYW5kIG1heSBub3QgZXhpc3QgaW4gc29tZSBpbXBsZW1lbnRhdGlvbnMuCiAKICAgIC4uIG1ldGhvZDo6IGRldGFjaCgpCiAKQEAgLTc0MiwxMyArNzUxLDE1IEBACiAgICAgICB3cml0dGVuLgogCiAKLS4uIGNsYXNzOjogVGV4dElPV3JhcHBlcihidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGxpbmVfYnVmZmVyaW5nPUZhbHNlKQorLi4gY2xhc3M6OiBUZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPUZhbHNlLCB3cml0ZV90aHJvdWdoPUZhbHNlKQogCiAgICBBIGJ1ZmZlcmVkIHRleHQgc3RyZWFtIG92ZXIgYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBiaW5hcnkgc3RyZWFtLgogICAgSXQgaW5oZXJpdHMgOmNsYXNzOmBUZXh0SU9CYXNlYC4KIAogICAgKmVuY29kaW5nKiBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUgZGVjb2RlZCBvcgotICAgZW5jb2RlZCB3aXRoLiAgSXQgZGVmYXVsdHMgdG8gOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2AuCisgICBlbmNvZGVkIHdpdGguICBJdCBkZWZhdWx0cyB0bworICAgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLgogCiAgICAqZXJyb3JzKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGFuZCBkZWNvZGluZwogICAgZXJyb3JzIGFyZSB0byBiZSBoYW5kbGVkLiAgUGFzcyBgYCdzdHJpY3QnYGAgdG8gcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYApAQCAtNzg1LDYgKzc5NiwxOSBAQAogICAgSWYgKmxpbmVfYnVmZmVyaW5nKiBpcyBgYFRydWVgYCwgOm1ldGg6YGZsdXNoYCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvCiAgICB3cml0ZSBjb250YWlucyBhIG5ld2xpbmUgY2hhcmFjdGVyLgogCisgICBJZiAqd3JpdGVfdGhyb3VnaCogaXMgYGBUcnVlYGAsIGNhbGxzIHRvIDptZXRoOmB3cml0ZWAgYXJlIGd1YXJhbnRlZWQKKyAgIG5vdCB0byBiZSBidWZmZXJlZDogYW55IGRhdGEgd3JpdHRlbiBvbiB0aGUgOmNsYXNzOmBUZXh0SU9XcmFwcGVyYAorICAgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGhhbmRsZWQgdG8gaXRzIHVuZGVybHlpbmcgYmluYXJ5ICpidWZmZXIqLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICp3cml0ZV90aHJvdWdoKiBhcmd1bWVudCBoYXMgYmVlbiBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBkZWZhdWx0ICplbmNvZGluZyogaXMgbm93IGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKWBgCisgICAgICBpbnN0ZWFkIG9mIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKClgYC4gRG9uJ3QgY2hhbmdlIHRlbXBvcmFyeSB0aGUKKyAgICAgIGxvY2FsZSBlbmNvZGluZyB1c2luZyA6ZnVuYzpgbG9jYWxlLnNldGxvY2FsZWAsIHVzZSB0aGUgY3VycmVudCBsb2NhbGUKKyAgICAgIGVuY29kaW5nIGluc3RlYWQgb2YgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nLgorCiAgICA6Y2xhc3M6YFRleHRJT1dyYXBwZXJgIHByb3ZpZGVzIG9uZSBhdHRyaWJ1dGUgaW4gYWRkaXRpb24gdG8gdGhvc2Ugb2YKICAgIDpjbGFzczpgVGV4dElPQmFzZWAgYW5kIGl0cyBwYXJlbnRzOgogCkBAIC04NTEsOCArODc1LDggQEAKIGtpbmQgb2YgSS9PIHdoaWNoIGlzIHBlcmZvcm1lZC4gIEZvciBleGFtcGxlLCBvbiBzb21lIG1vZGVybiBPU2VzIHN1Y2ggYXMgTGludXgsCiB1bmJ1ZmZlcmVkIGRpc2sgSS9PIGNhbiBiZSBhcyBmYXN0IGFzIGJ1ZmZlcmVkIEkvTy4gIFRoZSBib3R0b20gbGluZSwgaG93ZXZlciwKIGlzIHRoYXQgYnVmZmVyZWQgSS9PIG9mZmVycyBwcmVkaWN0YWJsZSBwZXJmb3JtYW5jZSByZWdhcmRsZXNzIG9mIHRoZSBwbGF0Zm9ybQotYW5kIHRoZSBiYWNraW5nIGRldmljZS4gIFRoZXJlZm9yZSwgaXQgaXMgbW9zdCBhbHdheXMgcHJlZmVyYWJsZSB0byB1c2UgYnVmZmVyZWQKLUkvTyByYXRoZXIgdGhhbiB1bmJ1ZmZlcmVkIEkvTyBmb3IgYmluYXJ5IGRhdGFsCithbmQgdGhlIGJhY2tpbmcgZGV2aWNlLiAgVGhlcmVmb3JlLCBpdCBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmFibGUgdG8gdXNlCitidWZmZXJlZCBJL08gcmF0aGVyIHRoYW4gdW5idWZmZXJlZCBJL08gZm9yIGJpbmFyeSBkYXRhLgogCiBUZXh0IEkvTwogXl5eXl5eXl4KQEAgLTg4Nyw4ICs5MTEsOCBAQAogOmNsYXNzOmBCdWZmZXJlZFdyaXRlcmAsIDpjbGFzczpgQnVmZmVyZWRSYW5kb21gIGFuZCA6Y2xhc3M6YEJ1ZmZlcmVkUldQYWlyYCkKIGFyZSBub3QgcmVlbnRyYW50LiAgV2hpbGUgcmVlbnRyYW50IGNhbGxzIHdpbGwgbm90IGhhcHBlbiBpbiBub3JtYWwgc2l0dWF0aW9ucywKIHRoZXkgY2FuIGFyaXNlIGZyb20gZG9pbmcgSS9PIGluIGEgOm1vZDpgc2lnbmFsYCBoYW5kbGVyLiAgSWYgYSB0aHJlYWQgdHJpZXMgdG8KLXJlbnRlciBhIGJ1ZmZlcmVkIG9iamVjdCB3aGljaCBpdCBpcyBhbHJlYWR5IGFjY2Vzc2luZywgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzCi1yYWlzZWQuICBOb3RlIHRoaXMgZG9lc24ndCBwcm9oaWJpdCBhIGRpZmZlcmVudCB0aHJlYWQgZnJvbSBlbnRlcmluZyB0aGUKK3JlLWVudGVyIGEgYnVmZmVyZWQgb2JqZWN0IHdoaWNoIGl0IGlzIGFscmVhZHkgYWNjZXNzaW5nLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAKK2lzIHJhaXNlZC4gIE5vdGUgdGhpcyBkb2Vzbid0IHByb2hpYml0IGEgZGlmZmVyZW50IHRocmVhZCBmcm9tIGVudGVyaW5nIHRoZQogYnVmZmVyZWQgb2JqZWN0LgogCiBUaGUgYWJvdmUgaW1wbGljaXRseSBleHRlbmRzIHRvIHRleHQgZmlsZXMsIHNpbmNlIHRoZSA6ZnVuYzpgb3BlbigpYCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdCBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZkODRhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKQEAgLTAsMCArMSw4MDQgQEAKKzptb2Q6YGlwYWRkcmVzc2AgLS0tIElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGlwYWRkcmVzcworICAgOnN5bm9wc2lzOiBJUHY0L0lQdjYgbWFuaXB1bGF0aW9uIGxpYnJhcnkuCisuLiBtb2R1bGVhdXRob3I6OiBQZXRlciBNb29keQorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9pcGFkZHJlc3MucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKKy4uIG5vdGU6OgorCisgICBUaGUgYGBpcGFkZHJlc3NgYCBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQorICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKKyAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgcGFja2FnZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAorICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKzptb2Q6YGlwYWRkcmVzc2AgcHJvdmlkZXMgdGhlIGNhcGFiaWxpdGllcyB0byBjcmVhdGUsIG1hbmlwdWxhdGUgYW5kCitvcGVyYXRlIG9uIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KKworVGhlIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBpbiB0aGlzIG1vZHVsZSBtYWtlIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byBoYW5kbGUKK3ZhcmlvdXMgdGFza3MgcmVsYXRlZCB0byBJUCBhZGRyZXNzZXMsIGluY2x1ZGluZyBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0d28KK2hvc3RzIGFyZSBvbiB0aGUgc2FtZSBzdWJuZXQsIGl0ZXJhdGluZyBvdmVyIGFsbCBob3N0cyBpbiBhIHBhcnRpY3VsYXIKK3N1Ym5ldCwgY2hlY2tpbmcgd2hldGhlciBvciBub3QgYSBzdHJpbmcgcmVwcmVzZW50cyBhIHZhbGlkIElQIGFkZHJlc3Mgb3IKK25ldHdvcmsgZGVmaW5pdGlvbiwgYW5kIHNvIG9uLgorCitUaGlzIGlzIHRoZSBmdWxsIG1vZHVsZSBBUEkgcmVmZXJlbmNlIC0gZm9yIGFuIG92ZXJ2aWV3IGFuZCBpbnRyb2R1Y3Rpb24sCitzZWUgOnJlZjpgaXBhZGRyZXNzLWhvd3RvYC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworQ29udmVuaWVuY2UgZmFjdG9yeSBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBpcGFkZHJlc3NgIG1vZHVsZSBwcm92aWRlcyBmYWN0b3J5IGZ1bmN0aW9ucyB0byBjb252ZW5pZW50bHkgY3JlYXRlCitJUCBhZGRyZXNzZXMsIG5ldHdvcmtzIGFuZCBpbnRlcmZhY2VzOgorCisuLiBmdW5jdGlvbjo6IGlwX2FkZHJlc3MoYWRkcmVzcykKKworICAgUmV0dXJuIGFuIDpjbGFzczpgSVB2NEFkZHJlc3NgIG9yIDpjbGFzczpgSVB2NkFkZHJlc3NgIG9iamVjdCBkZXBlbmRpbmcgb24KKyAgIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gIEVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzc2VzIG1heSBiZQorICAgc3VwcGxpZWQ7IGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorICAgQSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIElQdjQKKyAgIG9yIElQdjYgYWRkcmVzcy4KKworLi4gdGVzdHNldHVwOjoKKyAgID4+PiBpbXBvcnQgaXBhZGRyZXNzCisgICA+Pj4gZnJvbSBpcGFkZHJlc3MgaW1wb3J0IChpcF9uZXR3b3JrLCBJUHY0QWRkcmVzcywgSVB2NEludGVyZmFjZSwKKyAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgIElQdjROZXR3b3JrKQorCis6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjonKQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorCisKKy4uIGZ1bmN0aW9uOjogaXBfbmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSkKKworICAgUmV0dXJuIGFuIDpjbGFzczpgSVB2NE5ldHdvcmtgIG9yIDpjbGFzczpgSVB2Nk5ldHdvcmtgIG9iamVjdCBkZXBlbmRpbmcgb24KKyAgIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gICphZGRyZXNzKiBpcyBhIHN0cmluZyBvciBpbnRlZ2VyCisgICByZXByZXNlbnRpbmcgdGhlIElQIG5ldHdvcmsuICBFaXRoZXIgSVB2NCBvciBJUHY2IG5ldHdvcmtzIG1heSBiZSBzdXBwbGllZDsKKyAgIGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LiAgKnN0cmljdCoKKyAgIGlzIHBhc3NlZCB0byA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBjb25zdHJ1Y3Rvci4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgSVB2NCBvcgorICAgSVB2NiBhZGRyZXNzLCBvciBpZiB0aGUgbmV0d29yayBoYXMgaG9zdCBiaXRzIHNldC4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMTY4LjAuMC8yOCcpCisgICBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMjgnKQorCisKKy4uIGZ1bmN0aW9uOjogaXBfaW50ZXJmYWNlKGFkZHJlc3MpCisKKyAgIFJldHVybiBhbiA6Y2xhc3M6YElQdjRJbnRlcmZhY2VgIG9yIDpjbGFzczpgSVB2NkludGVyZmFjZWAgb2JqZWN0IGRlcGVuZGluZworICAgb24gdGhlIElQIGFkZHJlc3MgcGFzc2VkIGFzIGFyZ3VtZW50LiAgKmFkZHJlc3MqIGlzIGEgc3RyaW5nIG9yIGludGVnZXIKKyAgIHJlcHJlc2VudGluZyB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzc2VzIG1heSBiZSBzdXBwbGllZDsKKyAgIGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBJUHY0IG9yCisgICBJUHY2IGFkZHJlc3MuCisKK09uZSBkb3duc2lkZSBvZiB0aGVzZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgaXMgdGhhdCB0aGUgbmVlZCB0byBoYW5kbGUgYm90aAorSVB2NCBhbmQgSVB2NiBmb3JtYXRzIG1lYW5zIHRoYXQgZXJyb3IgbWVzc2FnZXMgcHJvdmlkZSBtaW5pbWFsCitpbmZvcm1hdGlvbiBvbiB0aGUgcHJlY2lzZSBlcnJvciwgYXMgdGhlIGZ1bmN0aW9ucyBkb24ndCBrbm93IHdoZXRoZXIgdGhlCitJUHY0IG9yIElQdjYgZm9ybWF0IHdhcyBpbnRlbmRlZC4gTW9yZSBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmcgY2FuIGJlCitvYnRhaW5lZCBieSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uIHNwZWNpZmljIGNsYXNzIGNvbnN0cnVjdG9ycworZGlyZWN0bHkuCisKKworSVAgQWRkcmVzc2VzCistLS0tLS0tLS0tLS0KKworQWRkcmVzcyBvYmplY3RzCiteXl5eXl5eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgSVB2NEFkZHJlc3NgIGFuZCA6Y2xhc3M6YElQdjZBZGRyZXNzYCBvYmplY3RzIHNoYXJlIGEgbG90IG9mIGNvbW1vbgorYXR0cmlidXRlcy4gIFNvbWUgYXR0cmlidXRlcyB0aGF0IGFyZSBvbmx5IG1lYW5pbmdmdWwgZm9yIElQdjYgYWRkcmVzc2VzIGFyZQorYWxzbyBpbXBsZW1lbnRlZCBieSA6Y2xhc3M6YElQdjRBZGRyZXNzYCBvYmplY3RzLCBpbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciB0bword3JpdGUgY29kZSB0aGF0IGhhbmRsZXMgYm90aCBJUCB2ZXJzaW9ucyBjb3JyZWN0bHkuCisKKy4uIGNsYXNzOjogSVB2NEFkZHJlc3MoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjQgYWRkcmVzcy4gIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MuCisKKyAgIFRoZSBmb2xsb3dpbmcgY29uc3RpdHV0ZXMgYSB2YWxpZCBJUHY0IGFkZHJlc3M6CisKKyAgIDEuIEEgc3RyaW5nIGluIGRlY2ltYWwtZG90IG5vdGF0aW9uLCBjb25zaXN0aW5nIG9mIGZvdXIgZGVjaW1hbCBpbnRlZ2VycyBpbgorICAgICAgdGhlIGluY2x1c2l2ZSByYW5nZSAwLTI1NSwgc2VwYXJhdGVkIGJ5IGRvdHMgKGUuZy4gYGAxOTIuMTY4LjAuMWBgKS4gRWFjaAorICAgICAgaW50ZWdlciByZXByZXNlbnRzIGFuIG9jdGV0IChieXRlKSBpbiB0aGUgYWRkcmVzcy4gTGVhZGluZyB6ZXJvZXMgYXJlCisgICAgICB0b2xlcmF0ZWQgb25seSBmb3IgdmFsdWVzIGxlc3MgdGhlbiA4IChhcyB0aGVyZSBpcyBubyBhbWJpZ3VpdHkKKyAgICAgIGJldHdlZW4gdGhlIGRlY2ltYWwgYW5kIG9jdGFsIGludGVycHJldGF0aW9ucyBvZiBzdWNoIHN0cmluZ3MpLgorICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAzMiBiaXRzLgorICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggNCAobW9zdAorICAgICAgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QpLgorCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygzMjMyMjM1NTIxKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYidceEMwXHhBOFx4MDBceDAxJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKworICAgICAgVGhlIGFwcHJvcHJpYXRlIHZlcnNpb24gbnVtYmVyOiBgYDRgYCBmb3IgSVB2NCwgYGA2YGAgZm9yIElQdjYuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKworICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiBiaXRzIGluIHRoZSBhZGRyZXNzIHJlcHJlc2VudGF0aW9uIGZvciB0aGlzCisgICAgICB2ZXJzaW9uOiBgYDMyYGAgZm9yIElQdjQsIGBgMTI4YGAgZm9yIElQdjYuCisKKyAgICAgIFRoZSBwcmVmaXggZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgYml0cyBpbiBhbiAgYWRkcmVzcyB0aGF0CisgICAgICBhcmUgY29tcGFyZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGFuIGFkZHJlc3MgaXMgcGFydCBvZiBhCisgICAgICBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorCisgICAgICBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLiBMZWFkaW5nIHplcm9lcworICAgICAgYXJlIG5ldmVyIGluY2x1ZGVkIGluIHRoZSByZXByZXNlbnRhdGlvbi4KKworICAgICAgQXMgSVB2NCBkb2VzIG5vdCBkZWZpbmUgYSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGFkZHJlc3NlcyB3aXRoIG9jdGV0cworICAgICAgc2V0IHRvIHplcm8sIHRoZXNlIHR3byBhdHRyaWJ1dGVzIGFyZSBhbHdheXMgdGhlIHNhbWUgYXMgYGBzdHIoYWRkcilgYAorICAgICAgZm9yIElQdjQgYWRkcmVzc2VzLiBFeHBvc2luZyB0aGVzZSBhdHRyaWJ1dGVzIG1ha2VzIGl0IGVhc2llciB0bworICAgICAgd3JpdGUgZGlzcGxheSBjb2RlIHRoYXQgY2FuIGhhbmRsZSBib3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYWNrZWQKKworICAgICAgVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGFkZHJlc3MgLSBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZgorICAgICAgdGhlIGFwcHJvcHJpYXRlIGxlbmd0aCAobW9zdCBzaWduaWZpY2FudCBvY3RldCBmaXJzdCkuIFRoaXMgaXMgNCBieXRlcworICAgICAgZm9yIElQdjQgYW5kIDE2IGJ5dGVzIGZvciBJUHY2LgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuICBTZWUKKyAgICAgIDpSRkM6YDMxNzFgIChmb3IgSVB2NCkgb3IgOlJGQzpgMjM3M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuICBTZWUKKyAgICAgIDpSRkM6YDE5MThgIChmb3IgSVB2NCkgb3IgOlJGQzpgNDE5M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuICBTZWUgOlJGQzpgNTM3NWAgKGZvciBJUHY0KQorICAgICAgb3IgOlJGQzpgMjM3M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoaXMgaXMgYSBsb29wYmFjayBhZGRyZXNzLiAgU2VlIDpSRkM6YDMzMzBgIChmb3IgSVB2NCkKKyAgICAgIG9yIDpSRkM6YDIzNzNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwgdXNhZ2UuICBTZWUKKyAgICAgIDpSRkM6YDM5MjdgLgorCisKKy4uIGNsYXNzOjogSVB2NkFkZHJlc3MoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjYgYWRkcmVzcy4gIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCisKKyAgIFRoZSBmb2xsb3dpbmcgY29uc3RpdHV0ZXMgYSB2YWxpZCBJUHY2IGFkZHJlc3M6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgZ3JvdXBzIG9mIGZvdXIgaGV4YWRlY2ltYWwgZGlnaXRzLCBlYWNoCisgICAgICBncm91cCByZXByZXNlbnRpbmcgMTYgYml0cy4gIFRoZSBncm91cHMgYXJlIHNlcGFyYXRlZCBieSBjb2xvbnMuCisgICAgICBUaGlzIGRlc2NyaWJlcyBhbiAqZXhwbG9kZWQqIChsb25naGFuZCkgbm90YXRpb24uICBUaGUgc3RyaW5nIGNhbgorICAgICAgYWxzbyBiZSAqY29tcHJlc3NlZCogKHNob3J0aGFuZCBub3RhdGlvbikgYnkgdmFyaW91cyBtZWFucy4gIFNlZQorICAgICAgOlJGQzpgNDI5MWAgZm9yIGRldGFpbHMuICBGb3IgZXhhbXBsZSwKKyAgICAgIGBgIjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowYWJjOjAwMDc6MGRlZiJgYCBjYW4gYmUgY29tcHJlc3NlZCB0bworICAgICAgYGAiOjphYmM6NzpkZWYiYGAuCisgICAyLiBBbiBpbnRlZ2VyIHRoYXQgZml0cyBpbnRvIDEyOCBiaXRzLgorICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMTYsIGJpZy1lbmRpYW4uCisKKyAgID4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbXByZXNzZWQKKworICAgVGhlIHNob3J0IGZvcm0gb2YgdGhlIGFkZHJlc3MgcmVwcmVzZW50YXRpb24sIHdpdGggbGVhZGluZyB6ZXJvZXMgaW4KKyAgIGdyb3VwcyBvbWl0dGVkIGFuZCB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSBvZiBncm91cHMgY29uc2lzdGluZyBlbnRpcmVseSBvZgorICAgemVyb2VzIGNvbGxhcHNlZCB0byBhIHNpbmdsZSBlbXB0eSBncm91cC4KKworICAgVGhpcyBpcyBhbHNvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBgYHN0cihhZGRyKWBgIGZvciBJUHY2IGFkZHJlc3Nlcy4KKworICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgVGhlIGxvbmcgZm9ybSBvZiB0aGUgYWRkcmVzcyByZXByZXNlbnRhdGlvbiwgd2l0aCBhbGwgbGVhZGluZyB6ZXJvZXMgYW5kCisgICBncm91cHMgY29uc2lzdGluZyBlbnRpcmVseSBvZiB6ZXJvZXMgaW5jbHVkZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhY2tlZAorICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19zaXRlX2xvY2FsCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBzaXRlLWxvY2FsIHVzYWdlLiAgTm90ZSB0aGF0CisgICAgICB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgOlJGQzpgMzg3OWAuIFVzZQorICAgICAgOmF0dHI6YH5JUHY0QWRkcmVzcy5pc19wcml2YXRlYCB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUKKyAgICAgIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbCBhZGRyZXNzZXMgYXMgZGVmaW5lZCBieSA6UkZDOmA0MTkzYC4KKworICAgLi4gYXR0cmlidXRlOjogaXB2NF9tYXBwZWQKKworICAgICAgRm9yIGFkZHJlc3NlcyB0aGF0IGFwcGVhciB0byBiZSBJUHY0IG1hcHBlZCBhZGRyZXNzZXMgKHN0YXJ0aW5nIHdpdGgKKyAgICAgIGBgOjpGRkZGLzk2YGApLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0IHRoZSBlbWJlZGRlZCBJUHY0IGFkZHJlc3MuCisgICAgICBGb3IgYW55IG90aGVyIGFkZHJlc3MsIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBgYE5vbmVgYC4KKworICAgLi4gYXR0cmlidXRlOjogc2l4dG9mb3VyCisKKyAgICAgIEZvciBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgdG8gYmUgNnRvNCBhZGRyZXNzZXMgIChzdGFydGluZyB3aXRoCisgICAgICBgYDIwMDI6Oi8xNmBgKSBhcyBkZWZpbmVkIGJ5IDpSRkM6YDMwNTZgLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0CisgICAgICB0aGUgZW1iZWRkZWQgSVB2NCBhZGRyZXNzLiAgRm9yIGFueSBvdGhlciBhZGRyZXNzLCB0aGlzIHByb3BlcnR5IHdpbGwKKyAgICAgIGJlIGBgTm9uZWBgLgorCisgICAuLiBhdHRyaWJ1dGU6OiB0ZXJlZG8KKworICAgICAgRm9yIGFkZHJlc3NlcyB0aGF0IGFwcGVhciB0byBiZSBUZXJlZG8gYWRkcmVzc2VzIChzdGFydGluZyB3aXRoCisgICAgICBgYDIwMDE6Oi8zMmBgKSBhcyBkZWZpbmVkIGJ5IDpSRkM6YDQzODBgLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0CisgICAgICB0aGUgZW1iZWRkZWQgYGAoc2VydmVyLCBjbGllbnQpYGAgSVAgYWRkcmVzcyBwYWlyLiAgRm9yIGFueSBvdGhlcgorICAgICAgYWRkcmVzcywgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIGBgTm9uZWBgLgorCisKK0NvbnZlcnNpb24gdG8gU3RyaW5ncyBhbmQgSW50ZWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVG8gaW50ZXJvcGVyYXRlIHdpdGggbmV0d29ya2luZyBpbnRlcmZhY2VzIHN1Y2ggYXMgdGhlIHNvY2tldCBtb2R1bGUsCithZGRyZXNzZXMgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBvciBpbnRlZ2Vycy4gVGhpcyBpcyBoYW5kbGVkIHVzaW5nCit0aGUgOmZ1bmM6YHN0cmAgYW5kIDpmdW5jOmBpbnRgIGJ1aWx0aW4gZnVuY3Rpb25zOjoKKworICAgPj4+IHN0cihpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykpCisgICAnMTkyLjE2OC4wLjEnCisgICA+Pj4gaW50KGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKSkKKyAgIDMyMzIyMzU1MjEKKyAgID4+PiBzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKKyAgICc6OjEnCisgICA+Pj4gaW50KGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpCisgICAxCisKKworT3BlcmF0b3JzCiteXl5eXl5eXl4KKworQWRkcmVzcyBvYmplY3RzIHN1cHBvcnQgc29tZSBvcGVyYXRvcnMuICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgb3BlcmF0b3JzIGNhbgorb25seSBiZSBhcHBsaWVkIGJldHdlZW4gY29tcGF0aWJsZSBvYmplY3RzIChpLmUuIElQdjQgd2l0aCBJUHY0LCBJUHY2IHdpdGgKK0lQdjYpLgorCisKK0xvZ2ljYWwgb3BlcmF0b3JzCisiIiIiIiIiIiIiIiIiIiIiIgorCitBZGRyZXNzIG9iamVjdHMgY2FuIGJlIGNvbXBhcmVkIHdpdGggdGhlIHVzdWFsIHNldCBvZiBsb2dpY2FsIG9wZXJhdG9ycy4gIFNvbWUKK2V4YW1wbGVzOjoKKworICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSA+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjEnKQorICAgVHJ1ZQorICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSA9PSBJUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgIEZhbHNlCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpICE9IElQdjRBZGRyZXNzKCcxMjcuMC4wLjEnKQorICAgVHJ1ZQorCisKK0FyaXRobWV0aWMgb3BlcmF0b3JzCisiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitJbnRlZ2VycyBjYW4gYmUgYWRkZWQgdG8gb3Igc3VidHJhY3RlZCBmcm9tIGFkZHJlc3Mgb2JqZWN0cy4gIFNvbWUgZXhhbXBsZXM6OgorCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpICsgMworICAgSVB2NEFkZHJlc3MoJzEyNy4wLjAuNScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpIC0gMworICAgSVB2NEFkZHJlc3MoJzEyNi4yNTUuMjU1LjI1NScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzI1NS4yNTUuMjU1LjI1NScpICsgMQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yOiA0Mjk0OTY3Mjk2ICg+PSAyKiozMikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MKKworCitJUCBOZXR3b3JrIGRlZmluaXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YElQdjROZXR3b3JrYCBhbmQgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0cyBwcm92aWRlIGEgbWVjaGFuaXNtCitmb3IgZGVmaW5pbmcgYW5kIGluc3BlY3RpbmcgSVAgbmV0d29yayBkZWZpbml0aW9ucy4gIEEgbmV0d29yayBkZWZpbml0aW9uCitjb25zaXN0cyBvZiBhICptYXNrKiBhbmQgYSAqbmV0d29yayBhZGRyZXNzKiwgYW5kIGFzIHN1Y2ggZGVmaW5lcyBhIHJhbmdlIG9mCitJUCBhZGRyZXNzZXMgdGhhdCBlcXVhbCB0aGUgbmV0d29yayBhZGRyZXNzIHdoZW4gbWFza2VkIChiaW5hcnkgQU5EKSB3aXRoIHRoZQorbWFzay4gIEZvciBleGFtcGxlLCBhIG5ldHdvcmsgZGVmaW5pdGlvbiB3aXRoIHRoZSBtYXNrIGBgMjU1LjI1NS4yNTUuMGBgIGFuZAordGhlIG5ldHdvcmsgYWRkcmVzcyBgYDE5Mi4xNjguMS4wYGAgY29uc2lzdHMgb2YgSVAgYWRkcmVzc2VzIGluIHRoZSBpbmNsdXNpdmUKK3JhbmdlIGBgMTkyLjE2OC4xLjBgYCB0byBgYDE5Mi4xNjguMS4yNTVgYC4KKworCitQcmVmaXgsIG5ldCBtYXNrIGFuZCBob3N0IG1hc2sKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGVyZSBhcmUgc2V2ZXJhbCBlcXVpdmFsZW50IHdheXMgdG8gc3BlY2lmeSBJUCBuZXR3b3JrIG1hc2tzLiAgQSAqcHJlZml4KgorYGAvPG5iaXRzPmBgIGlzIGEgbm90YXRpb24gdGhhdCBkZW5vdGVzIGhvdyBtYW55IGhpZ2gtb3JkZXIgYml0cyBhcmUgc2V0IGluCit0aGUgbmV0d29yayBtYXNrLiAgQSAqbmV0IG1hc2sqIGlzIGFuIElQIGFkZHJlc3Mgd2l0aCBzb21lIG51bWJlciBvZgoraGlnaC1vcmRlciBiaXRzIHNldC4gIFRodXMgdGhlIHByZWZpeCBgYC8yNGBgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIG5ldCBtYXNrCitgYDI1NS4yNTUuMjU1LjBgYCBpbiBJUHY0LCBvciBgYGZmZmY6ZmYwMDo6YGAgaW4gSVB2Ni4gIEluIGFkZGl0aW9uLCBhCisqaG9zdCBtYXNrKiBpcyB0aGUgbG9naWNhbCBpbnZlcnNlIG9mIGEgKm5ldCBtYXNrKiwgYW5kIGlzIHNvbWV0aW1lcyB1c2VkCisoZm9yIGV4YW1wbGUgaW4gQ2lzY28gYWNjZXNzIGNvbnRyb2wgbGlzdHMpIHRvIGRlbm90ZSBhIG5ldHdvcmsgbWFzay4gIFRoZQoraG9zdCBtYXNrIGVxdWl2YWxlbnQgdG8gYGAvMjRgYCBpbiBJUHY0IGlzIGBgMC4wLjAuMjU1YGAuCisKKworTmV0d29yayBvYmplY3RzCiteXl5eXl5eXl5eXl5eXl4KKworQWxsIGF0dHJpYnV0ZXMgaW1wbGVtZW50ZWQgYnkgYWRkcmVzcyBvYmplY3RzIGFyZSBpbXBsZW1lbnRlZCBieSBuZXR3b3JrCitvYmplY3RzIGFzIHdlbGwuICBJbiBhZGRpdGlvbiwgbmV0d29yayBvYmplY3RzIGltcGxlbWVudCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCitBbGwgb2YgdGhlc2UgYXJlIGNvbW1vbiBiZXR3ZWVuIDpjbGFzczpgSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YElQdjZOZXR3b3JrYCwKK3NvIHRvIGF2b2lkIGR1cGxpY2F0aW9uIHRoZXkgYXJlIG9ubHkgZG9jdW1lbnRlZCBmb3IgOmNsYXNzOmBJUHY0TmV0d29ya2AuCisKKy4uIGNsYXNzOjogSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY0IG5ldHdvcmsgZGVmaW5pdGlvbi4gICphZGRyZXNzKiBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gSVAgYWRkcmVzcyBhbmQgYW4gb3B0aW9uYWwgbWFzaywgc2VwYXJhdGVkIGJ5CisgICAgICBhIHNsYXNoIChgYC9gYCkuICBUaGUgSVAgYWRkcmVzcyBpcyB0aGUgbmV0d29yayBhZGRyZXNzLCBhbmQgdGhlIG1hc2sKKyAgICAgIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgbnVtYmVyLCB3aGljaCBtZWFucyBpdCdzIGEgKnByZWZpeCosIG9yIGEgc3RyaW5nCisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY0IGFkZHJlc3MuICBJZiBpdCdzIHRoZSBsYXR0ZXIsIHRoZSBtYXNrIGlzCisgICAgICBpbnRlcnByZXRlZCBhcyBhICpuZXQgbWFzayogaWYgaXQgc3RhcnRzIHdpdGggYSBub24temVybyBmaWVsZCwgb3IgYXMKKyAgICAgIGEgKmhvc3QgbWFzayogaWYgaXQgc3RhcnRzIHdpdGggYSB6ZXJvIGZpZWxkLiAgSWYgbm8gbWFzayBpcyBwcm92aWRlZCwKKyAgICAgIGl0J3MgY29uc2lkZXJlZCB0byBiZSBgYC8zMmBgLgorCisgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyAqYWRkcmVzcyogc3BlY2lmaWNhdGlvbnMgYXJlIGVxdWl2YWxlbnQ6CisgICAgICBgYDE5Mi4xNjguMS4wLzI0YGAsIGBgMTkyLjE2OC4xLjAvMjU1LjI1NS4yNTUuMGBgIGFuZAorICAgICAgYGAxOTIuMTY4LjEuMC8wLjAuMC4yNTVgYC4KKworICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAzMiBiaXRzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEKKyAgICAgIHNpbmdsZS1hZGRyZXNzIG5ldHdvcmssIHdpdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBiZWluZyAqYWRkcmVzcyogYW5kCisgICAgICB0aGUgbWFzayBiZWluZyBgYC8zMmBgLgorCisgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCA0LCBiaWctZW5kaWFuLgorICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCisKKyAgIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjQKKyAgIGFkZHJlc3MuICBBIDpleGM6YE5ldG1hc2tWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIG1hc2sgaXMgbm90IHZhbGlkIGZvcgorICAgYW4gSVB2NCBhZGRyZXNzLgorCisgICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCBhbmQgaG9zdCBiaXRzIGFyZSBzZXQgaW4gdGhlIHN1cHBsaWVkIGFkZHJlc3MsCisgICB0aGVuIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGhvc3QgYml0cyBhcmUgbWFza2VkIG91dAorICAgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGFkZHJlc3MuCisKKyAgIFVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCBhbGwgbmV0d29yayBtZXRob2RzIGFjY2VwdGluZyBvdGhlciBuZXR3b3JrL2FkZHJlc3MKKyAgIG9iamVjdHMgd2lsbCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZSBhcmd1bWVudCdzIElQIHZlcnNpb24gaXMKKyAgIGluY29tcGF0aWJsZSB0byBgYHNlbGZgYAorCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3ByaXZhdGUKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Vuc3BlY2lmaWVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19yZXNlcnZlZAorICAgLi4gYXR0cmlidXRlOjogaXNfbG9vcGJhY2sKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKworICAgICAgVGhlc2UgYXR0cmlidXRlcyBhcmUgdHJ1ZSBmb3IgdGhlIG5ldHdvcmsgYXMgYSB3aG9sZSBpZiB0aGV5IGFyZSB0cnVlCisgICAgICB0cnVlIGZvciBib3RoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZSBicm9hZGNhc3QgYWRkcmVzcworCisgICAuLiBhdHRyaWJ1dGU6OiBuZXR3b3JrX2FkZHJlc3MKKworICAgICAgVGhlIG5ldHdvcmsgYWRkcmVzcyBmb3IgdGhlIG5ldHdvcmsuIFRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZQorICAgICAgcHJlZml4IGxlbmd0aCB0b2dldGhlciB1bmlxdWVseSBkZWZpbmUgYSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBicm9hZGNhc3RfYWRkcmVzcworCisgICAgICBUaGUgYnJvYWRjYXN0IGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrLiBQYWNrZXRzIHNlbnQgdG8gdGhlIGJyb2FkY2FzdAorICAgICAgYWRkcmVzcyBzaG91bGQgYmUgcmVjZWl2ZWQgYnkgZXZlcnkgaG9zdCBvbiB0aGUgbmV0d29yay4KKworICAgLi4gYXR0cmlidXRlOjogaG9zdCBtYXNrCisKKyAgICAgIFRoZSBob3N0IG1hc2ssIGFzIGEgc3RyaW5nLgorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmssIHdpdGggdGhlIG1hc2sgaW4gcHJlZml4CisgICAgICBub3RhdGlvbi4KKworICAgICAgYGB3aXRoX3ByZWZpeGxlbmBgIGFuZCBgYGNvbXByZXNzZWRgYCBhcmUgYWx3YXlzIHRoZSBzYW1lIGFzCisgICAgICBgYHN0cihuZXR3b3JrKWBgLgorICAgICAgYGBleHBsb2RlZGBgIHVzZXMgdGhlIGV4cGxvZGVkIGZvcm0gdGhlIG5ldHdvcmsgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrLCB3aXRoIHRoZSBtYXNrIGluIG5ldCBtYXNrCisgICAgICBub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yaywgd2l0aCB0aGUgbWFzayBpbiBob3N0IG1hc2sKKyAgICAgIG5vdGF0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiBudW1fYWRkcmVzc2VzCisKKyAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgYWRkcmVzc2VzIGluIHRoZSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwcmVmaXhsZW4KKworICAgICAgTGVuZ3RoIG9mIHRoZSBuZXR3b3JrIHByZWZpeCwgaW4gYml0cy4KKworICAgLi4gbWV0aG9kOjogaG9zdHMoKQorCisgICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHVzYWJsZSBob3N0cyBpbiB0aGUgbmV0d29yay4gIFRoZSB1c2FibGUKKyAgICAgIGhvc3RzIGFyZSBhbGwgdGhlIElQIGFkZHJlc3NlcyB0aGF0IGJlbG9uZyB0byB0aGUgbmV0d29yaywgZXhjZXB0IHRoZQorICAgICAgbmV0d29yayBhZGRyZXNzIGl0c2VsZiBhbmQgdGhlIG5ldHdvcmsgYnJvYWRjYXN0IGFkZHJlc3MuCisKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yOScpLmhvc3RzKCkpICAjZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFCisgICAgICAgICBbSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi4yJyksCisgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMycpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi40JyksCisgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNScpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi42JyldCisKKyAgIC4uIG1ldGhvZDo6IG92ZXJsYXBzKG90aGVyKQorCisgICAgICBgYFRydWVgYCBpZiB0aGlzIG5ldHdvcmsgaXMgcGFydGx5IG9yIHdob2xseSBjb250YWluZWQgaW4gKm90aGVyKiBvcgorICAgICAgb3IgKm90aGVyKiBpcyB3aG9sbHkgY29udGFpbmVkIGluIHRoaXMgbmV0d29yay4KKworICAgLi4gbWV0aG9kOjogYWRkcmVzc19leGNsdWRlKG5ldHdvcmspCisKKyAgICAgIENvbXB1dGVzIHRoZSBuZXR3b3JrIGRlZmluaXRpb25zIHJlc3VsdGluZyBmcm9tIHJlbW92aW5nIHRoZSBnaXZlbgorICAgICAgKm5ldHdvcmsqIGZyb20gdGhpcyBvbmUuICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG9mIG5ldHdvcmsgb2JqZWN0cy4KKyAgICAgIFJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqbmV0d29yayogaXMgbm90IGNvbXBsZXRlbHkgY29udGFpbmVkIGluCisgICAgICB0aGlzIG5ldHdvcmsuCisKKyAgICAgICAgID4+PiBuMSA9IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpCisgICAgICAgICA+Pj4gbjIgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICAgPj4+IGxpc3QobjEuYWRkcmVzc19leGNsdWRlKG4yKSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi44LzI5JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjQvMzAnKSwKKyAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4yLzMxJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMzInKV0KKworICAgLi4gbWV0aG9kOjogc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisKKyAgICAgIFRoZSBzdWJuZXRzIHRoYXQgam9pbiB0byBtYWtlIHRoZSBjdXJyZW50IG5ldHdvcmsgZGVmaW5pdGlvbiwgZGVwZW5kaW5nCisgICAgICBvbiB0aGUgYXJndW1lbnQgdmFsdWVzLiAgKnByZWZpeGxlbl9kaWZmKiBpcyB0aGUgYW1vdW50IG91ciBwcmVmaXgKKyAgICAgIGxlbmd0aCBzaG91bGQgYmUgaW5jcmVhc2VkIGJ5LiAgKm5ld19wcmVmaXgqIGlzIHRoZSBkZXNpcmVkIG5ldworICAgICAgcHJlZml4IG9mIHRoZSBzdWJuZXRzOyBpdCBtdXN0IGJlIGxhcmdlciB0aGFuIG91ciBwcmVmaXguICBPbmUgYW5kCisgICAgICBvbmx5IG9uZSBvZiAqcHJlZml4bGVuX2RpZmYqIGFuZCAqbmV3X3ByZWZpeCogbXVzdCBiZSBzZXQuICBSZXR1cm5zIGFuCisgICAgICBpdGVyYXRvciBvZiBuZXR3b3JrIG9iamVjdHMuCisKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMoKSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0yKSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JyksCisgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhuZXdfcHJlZml4PTI2KSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JyksCisgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpXQorICAgICAgICAgPj4+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+Pj4gW2lwYWRkciBmb3IgaXBhZGRyIGluCisgICAuLi4gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwKKyAgIC4uLiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldKV0KKyAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCisKKworLi4gZnVuY3Rpb246OiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKQorCisgICBSZXR1cm4gYSBrZXkgc3VpdGFibGUgZm9yIHNvcnRpbmcgYmV0d2VlbiBuZXR3b3JrcyBhbmQgYWRkcmVzc2VzLiAgQWRkcmVzcworICAgYW5kIE5ldHdvcmsgb2JqZWN0cyBhcmUgbm90IHNvcnRhYmxlIGJ5IGRlZmF1bHQ7IHRoZXkncmUgZnVuZGFtZW50YWxseQorICAgZGlmZmVyZW50LCBzbyB0aGUgZXhwcmVzc2lvbjo6CisKKyAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICBkb2Vzbid0IG1ha2Ugc2Vuc2UuICBUaGVyZSBhcmUgc29tZSB0aW1lcyBob3dldmVyLCB3aGVyZSB5b3UgbWF5IHdpc2ggdG8KKyAgIGhhdmUgOm1vZDpgaXBhZGRyZXNzYCBzb3J0IHRoZXNlIGFueXdheS4gIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdSBjYW4gdXNlCisgICB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBgYGtleWBgIGFyZ3VtZW50IHRvIDpmdW5jOmBzb3J0ZWQoKWAuCisKKyAgICpvYmoqIGlzIGVpdGhlciBhIG5ldHdvcmsgb3IgYWRkcmVzcyBvYmplY3QuCisKKworQ3VzdG9tIEV4Y2VwdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHN1cHBvcnQgbW9yZSBzcGVjaWZpYyBlcnJvciByZXBvcnRpbmcgZnJvbSBjbGFzcyBjb25zdHJ1Y3RvcnMsIHRoZQorbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCisuLiBleGNlcHRpb246OiBBZGRyZXNzVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgYWRkcmVzcy4KKworCisuLiBleGNlcHRpb246OiBOZXRtYXNrVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgbmV0bWFzay4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lwYy5yc3QgYi9Eb2MvbGlicmFyeS9pcGMucnN0CmluZGV4IGM4NzMwNjUuLjkxZWM2OTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lwYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXBjLnJzdApAQCAtOCw3ICs4LDcgQEAKIHRvIGNvbW11bmljYXRlLgogCiBTb21lIG1vZHVsZXMgb25seSB3b3JrIGZvciB0d28gcHJvY2Vzc2VzIHRoYXQgYXJlIG9uIHRoZSBzYW1lIG1hY2hpbmUsIGUuZy4KLTptb2Q6YHNpZ25hbGAgYW5kIDptb2Q6YHN1YnByb2Nlc3NgLiAgT3RoZXIgbW9kdWxlcyBzdXBwb3J0IG5ldHdvcmtpbmcgcHJvdG9jb2xzCis6bW9kOmBzaWduYWxgIGFuZCA6bW9kOmBtbWFwYC4gIE90aGVyIG1vZHVsZXMgc3VwcG9ydCBuZXR3b3JraW5nIHByb3RvY29scwogdGhhdCB0d28gb3IgbW9yZSBwcm9jZXNzZXMgY2FuIHVzZWQgdG8gY29tbXVuaWNhdGUgYWNyb3NzIG1hY2hpbmVzLgogCiBUaGUgbGlzdCBvZiBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgaXM6CkBAIC0xNiw5ICsxNiw5IEBACiAKIC4uIHRvY3RyZWU6OgogCi0gICBzdWJwcm9jZXNzLnJzdAogICAgc29ja2V0LnJzdAogICAgc3NsLnJzdAotICAgc2lnbmFsLnJzdAogICAgYXN5bmNvcmUucnN0CiAgICBhc3luY2hhdC5yc3QKKyAgIHNpZ25hbC5yc3QKKyAgIG1tYXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCAzMDhmOTI1Li4xZWI1NTRhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTQ2LDcgKzQ2LDcgQEAKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIEl0ZXJhdG9yICAgICAgICAgICAgICAgIEFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGUKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKKzpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgWyxmdW5jXSAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKIDpmdW5jOmBjaGFpbmAgICAgICAgICAgIHAsIHEsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAxLCAuLi4gcGxhc3QsIHEwLCBxMSwgLi4uICAgICAgICAgICAgICAgICAgICAgIGBgY2hhaW4oJ0FCQycsICdERUYnKSAtLT4gQSBCIEMgRCBFIEZgYAogOmZ1bmM6YGNvbXByZXNzYCAgICAgICAgZGF0YSwgc2VsZWN0b3JzICAgICAgICAgICAgICAgICAoZFswXSBpZiBzWzBdKSwgKGRbMV0gaWYgc1sxXSksIC4uLiAgICAgICAgICAgICAgICAgYGBjb21wcmVzcygnQUJDREVGJywgWzEsMCwxLDAsMSwxXSkgLS0+IEEgQyBFIEZgYAogOmZ1bmM6YGRyb3B3aGlsZWAgICAgICAgcHJlZCwgc2VxICAgICAgICAgICAgICAgICAgICAgICBzZXFbbl0sIHNlcVtuKzFdLCBzdGFydGluZyB3aGVuIHByZWQgZmFpbHMgICAgICAgICAgYGBkcm9wd2hpbGUobGFtYmRhIHg6IHg8NSwgWzEsNCw2LDQsMV0pIC0tPiA2IDQgMWBgCkBAIC04NCwyMyArODQsNjEgQEAKIHN0cmVhbXMgb2YgaW5maW5pdGUgbGVuZ3RoLCBzbyB0aGV5IHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIGJ5IGZ1bmN0aW9ucyBvcgogbG9vcHMgdGhhdCB0cnVuY2F0ZSB0aGUgc3RyZWFtLgogCi0uLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGUpCisuLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGVbLCBmdW5jXSkKIAogICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMuIEVsZW1lbnRzIG1heSBiZSBhbnkgYWRkYWJsZQotICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgRGVjaW1hbGAgb3IgOmNsYXNzOmBGcmFjdGlvbmAuICBFcXVpdmFsZW50IHRvOjoKKyAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YERlY2ltYWxgIG9yIDpjbGFzczpgRnJhY3Rpb25gLiAgSWYgdGhlIG9wdGlvbmFsCisgICAgKmZ1bmMqIGFyZ3VtZW50IGlzIHN1cHBsaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzCisgICAgYW5kIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFkZGl0aW9uLgogCi0gICAgICAgIGRlZiBhY2N1bXVsYXRlKGl0ZXJhYmxlKToKKyAgICBFcXVpdmFsZW50IHRvOjoKKworICAgICAgICBkZWYgYWNjdW11bGF0ZShpdGVyYWJsZSwgZnVuYz1vcGVyYXRvci5hZGQpOgogICAgICAgICAgICAgJ1JldHVybiBydW5uaW5nIHRvdGFscycKICAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1CisgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0sIG9wZXJhdG9yLm11bCkgLS0+IDEgMiA2IDI0IDEyMAogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQogICAgICAgICAgICAgdG90YWwgPSBuZXh0KGl0KQogICAgICAgICAgICAgeWllbGQgdG90YWwKICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGl0OgotICAgICAgICAgICAgICAgIHRvdGFsID0gdG90YWwgKyBlbGVtZW50CisgICAgICAgICAgICAgICAgdG90YWwgPSBmdW5jKHRvdGFsLCBlbGVtZW50KQogICAgICAgICAgICAgICAgIHlpZWxkIHRvdGFsCiAKKyAgICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgdXNlcyBmb3IgdGhlICpmdW5jKiBhcmd1bWVudC4gIEl0IGNhbiBiZSBzZXQgdG8KKyAgICA6ZnVuYzpgbWluYCBmb3IgYSBydW5uaW5nIG1pbmltdW0sIDpmdW5jOmBtYXhgIGZvciBhIHJ1bm5pbmcgbWF4aW11bSwgb3IKKyAgICA6ZnVuYzpgb3BlcmF0b3IubXVsYCBmb3IgYSBydW5uaW5nIHByb2R1Y3QuICBBbW9ydGl6YXRpb24gdGFibGVzIGNhbiBiZQorICAgIGJ1aWx0IGJ5IGFjY3VtdWxhdGluZyBpbnRlcmVzdCBhbmQgYXBwbHlpbmcgcGF5bWVudHMuICBGaXJzdC1vcmRlcgorICAgIGByZWN1cnJlbmNlIHJlbGF0aW9ucyA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN1cnJlbmNlX3JlbGF0aW9uPmBfCisgICAgY2FuIGJlIG1vZGVsZWQgYnkgc3VwcGx5aW5nIHRoZSBpbml0aWFsIHZhbHVlIGluIHRoZSBpdGVyYWJsZSBhbmQgdXNpbmcgb25seQorICAgIHRoZSBhY2N1bXVsYXRlZCB0b3RhbCBpbiAqZnVuYyogYXJndW1lbnQ6OgorCisgICAgICA+Pj4gZGF0YSA9IFszLCA0LCA2LCAyLCAxLCA5LCAwLCA3LCA1LCA4XQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBvcGVyYXRvci5tdWwpKSAgICAgIyBydW5uaW5nIHByb2R1Y3QKKyAgICAgIFszLCAxMiwgNzIsIDE0NCwgMTQ0LCAxMjk2LCAwLCAwLCAwLCAwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBtYXgpKSAgICAgICAgICAgICAgIyBydW5uaW5nIG1heGltdW0KKyAgICAgIFszLCA0LCA2LCA2LCA2LCA5LCA5LCA5LCA5LCA5XQorCisgICAgICAjIEFtb3J0aXplIGEgNSUgbG9hbiBvZiAxMDAwIHdpdGggNCBhbm51YWwgcGF5bWVudHMgb2YgOTAKKyAgICAgID4+PiBjYXNoZmxvd3MgPSBbMTAwMCwgLTkwLCAtOTAsIC05MCwgLTkwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShjYXNoZmxvd3MsIGxhbWJkYSBiYWwsIHBtdDogYmFsKjEuMDUgKyBwbXQpKQorICAgICAgWzEwMDAsIDk2MC4wLCA5MTguMCwgODczLjkwMDAwMDAwMDAwMDEsIDgyNy41OTUwMDAwMDAwMDAxXQorCisgICAgICAjIENoYW90aWMgcmVjdXJyZW5jZSByZWxhdGlvbiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvZ2lzdGljX21hcAorICAgICAgPj4+IGxvZ2lzdGljX21hcCA9IGxhbWJkYSB4LCBfOiAgciAqIHggKiAoMSAtIHgpCisgICAgICA+Pj4gciA9IDMuOAorICAgICAgPj4+IHgwID0gMC40CisgICAgICA+Pj4gaW5wdXRzID0gcmVwZWF0KHgwLCAzNikgICAgICMgb25seSB0aGUgaW5pdGlhbCB2YWx1ZSBpcyB1c2VkCisgICAgICA+Pj4gW2Zvcm1hdCh4LCAnLjJmJykgZm9yIHggaW4gYWNjdW11bGF0ZShpbnB1dHMsIGxvZ2lzdGljX21hcCldCisgICAgICBbJzAuNDAnLCAnMC45MScsICcwLjMwJywgJzAuODEnLCAnMC42MCcsICcwLjkyJywgJzAuMjknLCAnMC43OScsICcwLjYzJywKKyAgICAgICAnMC44OCcgLCcwLjM5JywgJzAuOTAnLCAnMC4zMycsICcwLjg0JywgJzAuNTInLCAnMC45NScsICcwLjE4JywgJzAuNTcnLAorICAgICAgICcwLjkzJywgJzAuMjUnLCAnMC43MScsICcwLjc5JywgJzAuNjMnLCAnMC44OCcsICcwLjM5JywgJzAuOTEnLCAnMC4zMicsCisgICAgICAgJzAuODMnLCAnMC41NCcsICcwLjk1JywgJzAuMjAnLCAnMC42MCcsICcwLjkxJywgJzAuMzAnLCAnMC44MCcsICcwLjYwJ10KKwogICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgKmZ1bmMqIHBhcmFtZXRlci4KKwogLi4gZnVuY3Rpb246OiBjaGFpbigqaXRlcmFibGVzKQogCiAgICBNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBlbGVtZW50cyBmcm9tIHRoZSBmaXJzdCBpdGVyYWJsZSB1bnRpbCBpdCBpcwpAQCAtNjY4LDcgKzcwNiw4IEBACiAgICAgICAgcmV0dXJuIHppcChhLCBiKQogCiAgICBkZWYgZ3JvdXBlcihuLCBpdGVyYWJsZSwgZmlsbHZhbHVlPU5vbmUpOgotICAgICAgICJncm91cGVyKDMsICdBQkNERUZHJywgJ3gnKSAtLT4gQUJDIERFRiBHeHgiCisgICAgICAgIkNvbGxlY3QgZGF0YSBpbnRvIGZpeGVkLWxlbmd0aCBjaHVua3Mgb3IgYmxvY2tzIgorICAgICAgICMgZ3JvdXBlcigzLCAnQUJDREVGRycsICd4JykgLS0+IEFCQyBERUYgR3h4IgogICAgICAgIGFyZ3MgPSBbaXRlcihpdGVyYWJsZSldICogbgogICAgICAgIHJldHVybiB6aXBfbG9uZ2VzdCgqYXJncywgZmlsbHZhbHVlPWZpbGx2YWx1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggNDVhYmEwYS4uZDQ2ZjFjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CkBAIC00NzUsOCArNDc1LDExIEBACiBsb2NhbGUgc29tZXdoYXQgcGFpbmZ1bCB0byB1c2UgY29ycmVjdGx5LgogCiBJbml0aWFsbHksIHdoZW4gYSBwcm9ncmFtIGlzIHN0YXJ0ZWQsIHRoZSBsb2NhbGUgaXMgdGhlIGBgQ2BgIGxvY2FsZSwgbm8gbWF0dGVyCi13aGF0IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBpcy4gIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseSBzYXkgdGhhdCBpdAotd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGJ5IGNhbGxpbmcgYGBzZXRsb2NhbGUoTENfQUxMLCAnJylgYC4KK3doYXQgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIGlzLiAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdGhlCis6ZGF0YTpgTENfQ1RZUEVgIGNhdGVnb3J5IGlzIGNoYW5nZWQgYXQgc3RhcnR1cCB0byBzZXQgdGhlIGN1cnJlbnQgbG9jYWxlCitlbmNvZGluZyB0byB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseQorc2F5IHRoYXQgaXQgd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGZvciBvdGhlciBjYXRlZ29yaWVzIGJ5CitjYWxsaW5nIGBgc2V0bG9jYWxlKExDX0FMTCwgJycpYGAuCiAKIEl0IGlzIGdlbmVyYWxseSBhIGJhZCBpZGVhIHRvIGNhbGwgOmZ1bmM6YHNldGxvY2FsZWAgaW4gc29tZSBsaWJyYXJ5IHJvdXRpbmUsCiBzaW5jZSBhcyBhIHNpZGUgZWZmZWN0IGl0IGFmZmVjdHMgdGhlIGVudGlyZSBwcm9ncmFtLiAgU2F2aW5nIGFuZCByZXN0b3JpbmcgaXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKaW5kZXggZWY2NWNmYS4uNTM3YjhjNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKQEAgLTE2NCw2ICsxNjQsODcgQEAKICAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKICAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgogCisuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgorCitCYXNlUm90YXRpbmdIYW5kbGVyCiteXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YEJhc2VSb3RhdGluZ0hhbmRsZXJgIGNsYXNzLCBsb2NhdGVkIGluIHRoZSA6bW9kOmBsb2dnaW5nLmhhbmRsZXJzYAorbW9kdWxlLCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMsCis6Y2xhc3M6YFJvdGF0aW5nRmlsZUhhbmRsZXJgIGFuZCA6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIFlvdSBzaG91bGQKK25vdCBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMgY2xhc3MsIGJ1dCBpdCBoYXMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyB5b3UgbWF5CituZWVkIHRvIG92ZXJyaWRlLgorCisuLiBjbGFzczo6IEJhc2VSb3RhdGluZ0hhbmRsZXIoZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKQorCisgICBUaGUgcGFyYW1ldGVycyBhcmUgYXMgZm9yIDpjbGFzczpgRmlsZUhhbmRsZXJgLiBUaGUgYXR0cmlidXRlcyBhcmU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWVyCisKKyAgICAgIElmIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byBhIGNhbGxhYmxlLCB0aGUgOm1ldGg6YHJvdGF0aW9uX2ZpbGVuYW1lYAorICAgICAgbWV0aG9kIGRlbGVnYXRlcyB0byB0aGlzIGNhbGxhYmxlLiBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlCisgICAgICBhcmUgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGlvbl9maWxlbmFtZWAuCisKKyAgICAgIC4uIG5vdGU6OiBUaGUgbmFtZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHF1aXRlIGEgZmV3IHRpbWVzIGR1cmluZyByb2xsb3ZlciwKKyAgICAgICAgIHNvIGl0IHNob3VsZCBiZSBhcyBzaW1wbGUgYW5kIGFzIGZhc3QgYXMgcG9zc2libGUuIEl0IHNob3VsZCBhbHNvCisgICAgICAgICByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGV2ZXJ5IHRpbWUgZm9yIGEgZ2l2ZW4gaW5wdXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAgIHJvbGxvdmVyIGJlaGF2aW91ciBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJhc2VSb3RhdGluZ0hhbmRsZXIucm90YXRvcgorCisgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYSBjYWxsYWJsZSwgdGhlIDptZXRoOmByb3RhdGVgIG1ldGhvZAorICAgICAgZGVsZWdhdGVzIHRvIHRoaXMgY2FsbGFibGUuICBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlIGFyZQorICAgICAgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGVgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogQmFzZVJvdGF0aW5nSGFuZGxlci5yb3RhdGlvbl9maWxlbmFtZShkZWZhdWx0X25hbWUpCisKKyAgICAgIE1vZGlmeSB0aGUgZmlsZW5hbWUgb2YgYSBsb2cgZmlsZSB3aGVuIHJvdGF0aW5nLgorCisgICAgICBUaGlzIGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBjdXN0b20gZmlsZW5hbWUgY2FuIGJlIHByb3ZpZGVkLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlIGhhbmRsZXIsCisgICAgICBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBkZWZhdWx0IG5hbWUgdG8gaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QKKyAgICAgIGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBgYE5vbmVgYCksIHRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgOnBhcmFtIGRlZmF1bHRfbmFtZTogVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIGxvZyBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisgICAuLiBtZXRob2Q6OiBCYXNlUm90YXRpbmdIYW5kbGVyLnJvdGF0ZShzb3VyY2UsIGRlc3QpCisKKyAgICAgIFdoZW4gcm90YXRpbmcsIHJvdGF0ZSB0aGUgY3VycmVudCBsb2cuCisKKyAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZSBoYW5kbGVyLAorICAgICAgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgc291cmNlIGFuZCBkZXN0IGFyZ3VtZW50cyB0byBpdC4gSWYgdGhlCisgICAgICBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgKSwgdGhlIHNvdXJjZSBpcyBzaW1wbHkKKyAgICAgIHJlbmFtZWQgdG8gdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICA6cGFyYW0gc291cmNlOiBUaGUgc291cmNlIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5IHRoZSBiYXNlCisgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICA6cGFyYW0gZGVzdDogICBUaGUgZGVzdGluYXRpb24gZmlsZW5hbWUuIFRoaXMgaXMgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICAgICAgIHdoYXQgdGhlIHNvdXJjZSBpcyByb3RhdGVkIHRvLCBlLmcuICd0ZXN0LmxvZy4xJy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSByZWFzb24gdGhlIGF0dHJpYnV0ZXMgZXhpc3QgaXMgdG8gc2F2ZSB5b3UgaGF2aW5nIHRvIHN1YmNsYXNzIC0geW91IGNhbiB1c2UKK3RoZSBzYW1lIGNhbGxhYmxlcyBmb3IgaW5zdGFuY2VzIG9mIDpjbGFzczpgUm90YXRpbmdGaWxlSGFuZGxlcmAgYW5kCis6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIElmIGVpdGhlciB0aGUgbmFtZXIgb3Igcm90YXRvciBjYWxsYWJsZQorcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhpcyB3aWxsIGJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGFueSBvdGhlcgorZXhjZXB0aW9uIGR1cmluZyBhbiA6bWV0aDpgZW1pdGAgY2FsbCwgaS5lLiB2aWEgdGhlIDptZXRoOmBoYW5kbGVFcnJvcmAgbWV0aG9kCitvZiB0aGUgaGFuZGxlci4KKworSWYgeW91IG5lZWQgdG8gbWFrZSBtb3JlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gcm90YXRpb24gcHJvY2Vzc2luZywgeW91IGNhbgorb3ZlcnJpZGUgdGhlIG1ldGhvZHMuCisKK0ZvciBhbiBleGFtcGxlLCBzZWUgOnJlZjpgY29va2Jvb2stcm90YXRvci1uYW1lcmAuCisKKwogLi4gX3JvdGF0aW5nLWZpbGUtaGFuZGxlcjoKIAogUm90YXRpbmdGaWxlSGFuZGxlcgpAQCAtNDUyLDYgKzUzMywxNSBAQAogICAgICAgICAgYmVoYXZpb3VyKSBidXQgY2FuIGJlIHNldCB0byBgYEZhbHNlYGAgb24gYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRoYXQgaW5zdGFuY2UgdG8gKm5vdCogYXBwZW5kIHRoZSBOVUwgdGVybWluYXRvci4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIChTZWU6IDppc3N1ZTpgMTI0MTlgLikgSW4gZWFybGllciB2ZXJzaW9ucywgdGhlcmUgd2FzIG5vIGZhY2lsaXR5IGZvcgorICAgICAgICAgYW4gImlkZW50IiBvciAidGFnIiBwcmVmaXggdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGUgbWVzc2FnZS4gVGhpcworICAgICAgICAgY2FuIG5vdyBiZSBzcGVjaWZpZWQgdXNpbmcgYSBjbGFzcy1sZXZlbCBhdHRyaWJ1dGUsIGRlZmF1bHRpbmcgdG8KKyAgICAgICAgIGBgIiJgYCB0byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIsIGJ1dCB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbiBvbgorICAgICAgICAgYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZSBpbiBvcmRlciBmb3IgdGhhdCBpbnN0YW5jZSB0byBwcmVwZW5kCisgICAgICAgICB0aGUgaWRlbnQgdG8gZXZlcnkgbWVzc2FnZSBoYW5kbGVkLiBOb3RlIHRoYXQgdGhlIHByb3ZpZGVkIGlkZW50IG11c3QKKyAgICAgICAgIGJlIHRleHQsIG5vdCBieXRlcywgYW5kIGlzIHByZXBlbmRlZCB0byB0aGUgbWVzc2FnZSBleGFjdGx5IGFzIGlzLgorCiAgICAuLiBtZXRob2Q6OiBlbmNvZGVQcmlvcml0eShmYWNpbGl0eSwgcHJpb3JpdHkpCiAKICAgICAgIEVuY29kZXMgdGhlIGZhY2lsaXR5IGFuZCBwcmlvcml0eSBpbnRvIGFuIGludGVnZXIuIFlvdSBjYW4gcGFzcyBpbiBzdHJpbmdzCkBAIC02MTQsNyArNzA0LDcgQEAKIHN1cHBvcnRzIHNlbmRpbmcgbG9nZ2luZyBtZXNzYWdlcyB0byBhbiBlbWFpbCBhZGRyZXNzIHZpYSBTTVRQLgogCiAKLS4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSkKKy4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSwgdGltZW91dD0xLjApCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgU01UUEhhbmRsZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIGZyb20gYW5kIHRvIGFkZHJlc3NlcyBhbmQgc3ViamVjdCBsaW5lIG9mIHRoZSBlbWFpbC4gVGhlCkBAIC02MzAsNiArNzIwLDEyIEBACiAgICBhbmQgY2VydGlmaWNhdGUgZmlsZS4gKFRoaXMgdHVwbGUgaXMgcGFzc2VkIHRvIHRoZQogICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zdGFydHRsc2AgbWV0aG9kLikKIAorICAgQSB0aW1lb3V0IGNhbiBiZSBzcGVjaWZpZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgU01UUCBzZXJ2ZXIgdXNpbmcgdGhlCisgICAqdGltZW91dCogYXJndW1lbnQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCB3YXMgYWRkZWQuCisKICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCiAgICAgICBGb3JtYXRzIHRoZSByZWNvcmQgYW5kIHNlbmRzIGl0IHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzc2Vlcy4KQEAgLTY5MCw3ICs3ODYsNyBAQAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKLSAgICAgIENhbGxzIDptZXRoOmBmbHVzaGAsIHNldHMgdGhlIHRhcmdldCB0byA6Y29uc3Q6YE5vbmVgIGFuZCBjbGVhcnMgdGhlCisgICAgICBDYWxscyA6bWV0aDpgZmx1c2hgLCBzZXRzIHRoZSB0YXJnZXQgdG8gYGBOb25lYGAgYW5kIGNsZWFycyB0aGUKICAgICAgIGJ1ZmZlci4KIAogCkBAIC04NTksNiArOTU1LDE1IEBACiAgICAgICBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGNhbGwgdGhpcyBiZWZvcmUgeW91ciBhcHBsaWNhdGlvbiBleGl0cywgdGhlcmUKICAgICAgIG1heSBiZSBzb21lIHJlY29yZHMgc3RpbGwgbGVmdCBvbiB0aGUgcXVldWUsIHdoaWNoIHdvbid0IGJlIHByb2Nlc3NlZC4KIAorICAgLi4gbWV0aG9kOjogZW5xdWV1ZV9zZW50aW5lbCgpCisKKyAgICAgIFdyaXRlcyBhIHNlbnRpbmVsIHRvIHRoZSBxdWV1ZSB0byB0ZWxsIHRoZSBsaXN0ZW5lciB0byBxdWl0LiBUaGlzCisgICAgICBpbXBsZW1lbnRhdGlvbiB1c2VzIGBgcHV0X25vd2FpdCgpYGAuICBZb3UgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcworICAgICAgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHVzZSB0aW1lb3V0cyBvciB3b3JrIHdpdGggY3VzdG9tIHF1ZXVlCisgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CmluZGV4IGI2NjIyZTMuLjBkOTU2YjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CkBAIC0yMTMsNiArMjEzLDkgQEAKICAgIExvZ3MgYSBtZXNzYWdlIHdpdGggbGV2ZWwgOmNvbnN0OmBXQVJOSU5HYCBvbiB0aGlzIGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKICAgIGludGVycHJldGVkIGFzIGZvciA6bWV0aDpgZGVidWdgLgogCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgbWV0aG9kIGBgd2FybmBgIHdoaWNoIGlzIGZ1bmN0aW9uYWxseQorICAgICAgaWRlbnRpY2FsIHRvIGBgd2FybmluZ2BgLiBBcyBgYHdhcm5gYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgZG8gbm90IHVzZQorICAgICAgaXQgLSB1c2UgYGB3YXJuaW5nYGAgaW5zdGVhZC4KIAogLi4gbWV0aG9kOjogTG9nZ2VyLmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCkBAIC00OTIsNiArNDk1LDE5IEBACiAgICAgICB3YW50IGFsbCBsb2dnaW5nIHRpbWVzIHRvIGJlIHNob3duIGluIEdNVCwgc2V0IHRoZSBgYGNvbnZlcnRlcmBgCiAgICAgICBhdHRyaWJ1dGUgaW4gdGhlIGBgRm9ybWF0dGVyYGAgY2xhc3MuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91c2x5LCB0aGUgZGVmYXVsdCBJU08gODYwMSBmb3JtYXQgd2FzIGhhcmQtY29kZWQgYXMgaW4gdGhpcworICAgICAgICAgZXhhbXBsZTogYGAyMDEwLTA5LTA2IDIyOjM4OjE1LDI5MmBgIHdoZXJlIHRoZSBwYXJ0IGJlZm9yZSB0aGUgY29tbWEgaXMKKyAgICAgICAgIGhhbmRsZWQgYnkgYSBzdHJwdGltZSBmb3JtYXQgc3RyaW5nIChgYCclWS0lbS0lZCAlSDolTTolUydgYCksIGFuZCB0aGUKKyAgICAgICAgIHBhcnQgYWZ0ZXIgdGhlIGNvbW1hIGlzIGEgbWlsbGlzZWNvbmQgdmFsdWUuIEJlY2F1c2Ugc3RycHRpbWUgZG9lcyBub3QKKyAgICAgICAgIGhhdmUgYSBmb3JtYXQgcGxhY2Vob2xkZXIgZm9yIG1pbGxpc2Vjb25kcywgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIGlzCisgICAgICAgICBhcHBlbmRlZCB1c2luZyBhbm90aGVyIGZvcm1hdCBzdHJpbmcsIGBgJyVzLCUwM2QnYGAg4oCTIGFuZCBib3RoIG9mIHRoZXNlCisgICAgICAgICBmb3JtYXQgc3RyaW5ncyBoYXZlIGJlZW4gaGFyZGNvZGVkIGludG8gdGhpcyBtZXRob2QuIFdpdGggdGhlIGNoYW5nZSwKKyAgICAgICAgIHRoZXNlIHN0cmluZ3MgYXJlIGRlZmluZWQgYXMgY2xhc3MtbGV2ZWwgYXR0cmlidXRlcyB3aGljaCBjYW4gYmUKKyAgICAgICAgIG92ZXJyaWRkZW4gYXQgdGhlIGluc3RhbmNlIGxldmVsIHdoZW4gZGVzaXJlZC4gVGhlIG5hbWVzIG9mIHRoZQorICAgICAgICAgYXR0cmlidXRlcyBhcmUgYGBkZWZhdWx0X3RpbWVfZm9ybWF0YGAgKGZvciB0aGUgc3RycHRpbWUgZm9ybWF0IHN0cmluZykKKyAgICAgICAgIGFuZCBgYGRlZmF1bHRfbXNlY19mb3JtYXRgYCAoZm9yIGFwcGVuZGluZyB0aGUgbWlsbGlzZWNvbmQgdmFsdWUpLgorCiAgICAuLiBtZXRob2Q6OiBmb3JtYXRFeGNlcHRpb24oZXhjX2luZm8pCiAKICAgICAgIEZvcm1hdHMgdGhlIHNwZWNpZmllZCBleGNlcHRpb24gaW5mb3JtYXRpb24gKGEgc3RhbmRhcmQgZXhjZXB0aW9uIHR1cGxlIGFzCkBAIC05MDEsOCArOTE3LDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAotICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKLSAgIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cworICAgYXJlIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgZnVuY3Rpb24gYGB3YXJuYGAgd2hpY2ggaXMgZnVuY3Rpb25hbGx5CisgICAgICBpZGVudGljYWwgdG8gYGB3YXJuaW5nYGAuIEFzIGBgd2FybmBgIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSBkbyBub3QgdXNlCisgICAgICBpdCAtIHVzZSBgYHdhcm5pbmdgYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZXJyb3IobXNnLCAqYXJncywgKiprd2FyZ3MpCkBAIC0xMDI4LDEyICsxMDQ4LDI3IEBACiAgICB8IGBgc3RyZWFtYGAgICB8IFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSAgfAogICAgfCAgICAgICAgICAgICAgfCBTdHJlYW1IYW5kbGVyLiBOb3RlIHRoYXQgdGhpcyBhcmd1bWVudCBpcyAgIHwKICAgIHwgICAgICAgICAgICAgIHwgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGggYXJlICB8Ci0gICB8ICAgICAgICAgICAgICB8IHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgaGFuZGxlcnNgYCB8IElmIHNwZWNpZmllZCwgdGhpcyBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgfAorICAgfCAgICAgICAgICAgICAgfCBhbHJlYWR5IGNyZWF0ZWQgaGFuZGxlcnMgdG8gYWRkIHRvIHRoZSByb290IHwKKyAgIHwgICAgICAgICAgICAgIHwgbG9nZ2VyLiBBbnkgaGFuZGxlcnMgd2hpY2ggZG9uJ3QgYWxyZWFkeSAgICB8CisgICB8ICAgICAgICAgICAgICB8IGhhdmUgYSBmb3JtYXR0ZXIgc2V0IHdpbGwgYmUgYXNzaWduZWQgdGhlICAgfAorICAgfCAgICAgICAgICAgICAgfCBkZWZhdWx0IGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uIHwKKyAgIHwgICAgICAgICAgICAgIHwgTm90ZSB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlICAgICB8CisgICB8ICAgICAgICAgICAgICB8IHdpdGggJ2ZpbGVuYW1lJyBvciAnc3RyZWFtJyAtIGlmIGJvdGggYXJlICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgYGBzdHlsZWBgIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBgYGhhbmRsZXJzYGAgYXJndW1lbnQgd2FzIGFkZGVkLiBBZGRpdGlvbmFsIGNoZWNrcyB3ZXJlIGFkZGVkIHRvCisgICAgICBjYXRjaCBzaXR1YXRpb25zIHdoZXJlIGluY29tcGF0aWJsZSBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCAoZS5nLgorICAgICAgYGBoYW5kbGVyc2BgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCBvciBgYGZpbGVuYW1lYGAsIG9yIGBgc3RyZWFtYGAKKyAgICAgIHRvZ2V0aGVyIHdpdGggYGBmaWxlbmFtZWBgKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbHptYS5yc3QgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDlmYTA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTAsMCArMSwzODIgQEAKKzptb2Q6YGx6bWFgIC0tLSBDb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogbHptYQorICAgOnN5bm9wc2lzOiBBIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGlibHptYSBjb21wcmVzc2lvbiBsaWJyYXJ5LgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IE5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgTFpNQSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIEFsc28gaW5jbHVkZWQgaXMgYSBmaWxlCitpbnRlcmZhY2Ugc3VwcG9ydGluZyB0aGUgYGAueHpgYCBhbmQgbGVnYWN5IGBgLmx6bWFgYCBmaWxlIGZvcm1hdHMgdXNlZCBieSB0aGUKKzpwcm9ncmFtOmB4emAgdXRpbGl0eSwgYXMgd2VsbCBhcyByYXcgY29tcHJlc3NlZCBzdHJlYW1zLgorCitUaGUgaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSA6bW9kOmBiejJgCittb2R1bGUuIEhvd2V2ZXIsIG5vdGUgdGhhdCA6Y2xhc3M6YExaTUFGaWxlYCBpcyAqbm90KiB0aHJlYWQtc2FmZSwgdW5saWtlCis6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCwgc28gaWYgeW91IG5lZWQgdG8gdXNlIGEgc2luZ2xlIDpjbGFzczpgTFpNQUZpbGVgIGluc3RhbmNlCitmcm9tIG11bHRpcGxlIHRocmVhZHMsIGl0IGlzIG5lY2Vzc2FyeSB0byBwcm90ZWN0IGl0IHdpdGggYSBsb2NrLgorCisKKy4uIGV4Y2VwdGlvbjo6IExaTUFFcnJvcgorCisgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbXByZXNzaW9uIG9yCisgICBkZWNvbXByZXNzaW9uLCBvciB3aGlsZSBpbml0aWFsaXppbmcgdGhlIGNvbXByZXNzb3IvZGVjb21wcmVzc29yIHN0YXRlLgorCisKK1JlYWRpbmcgYW5kIHdyaXRpbmcgY29tcHJlc3NlZCBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCisgICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCJyImBgLCBgYCJyYiJgYCwgYGAidyJgYCwgYGAid2IiYGAsCisgICBgYCJhImBgIG9yIGBgImFiImBgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAicnQiYGAsIGBgInd0ImBgLCBvciBgYCJhdCJgYCBmb3IKKyAgIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgaXMgYGAicmIiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSAqZm9ybWF0KiBhbmQgKmZpbHRlcnMqIGFyZ3VtZW50cyBoYXZlCisgICB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYC4gSW4gdGhpcyBjYXNlLCB0aGUgKmNoZWNrKgorICAgYW5kICpwcmVzZXQqIGFyZ3VtZW50cyBzaG91bGQgbm90IGJlIHVzZWQuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kCisgICAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZ3MgYXMgZm9yIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBMWk1BRmlsZWAKKyAgIGNvbnN0cnVjdG9yOiBgYExaTUFGaWxlKGZpbGVuYW1lLCBtb2RlLCAuLi4pYGAuIEluIHRoaXMgY2FzZSwgdGhlICplbmNvZGluZyosCisgICAqZXJyb3JzKiBhbmQgKm5ld2xpbmUqIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgRm9yIHRleHQgbW9kZSwgYSA6Y2xhc3M6YExaTUFGaWxlYCBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvcgorICAgaGFuZGxpbmcgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworCisuLiBjbGFzczo6IExaTUFGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9InIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgorCisgICBBbiA6Y2xhc3M6YExaTUFGaWxlYCBjYW4gd3JhcCBhbiBhbHJlYWR5LW9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3Igb3BlcmF0ZQorICAgZGlyZWN0bHkgb24gYSBuYW1lZCBmaWxlLiBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgZWl0aGVyIHRoZSBmaWxlCisgICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAgb3IKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkCisgICBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZSA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCJyImBgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAidyJgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCJhImBgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgInJiImBgLCBgYCJ3YiJgYCwgYW5kIGBgImFiImBgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCJ3ImBgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgImEiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZgorICAgbXVsdGlwbGUgc2VwYXJhdGUgY29tcHJlc3NlZCBzdHJlYW1zLiBUaGVzZSBhcmUgdHJhbnNwYXJlbnRseSBkZWNvZGVkIGFzIGEKKyAgIHNpbmdsZSBsb2dpY2FsIHN0cmVhbS4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpmb3JtYXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUKKyAgIHRoZSBzYW1lIG1lYW5pbmdzIGFzIGZvciA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLiBJbiB0aGlzIGNhc2UsIHRoZSAqY2hlY2sqCisgICBhbmQgKnByZXNldCogYXJndW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZC4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3Igd3JpdGluZywgdGhlICpmb3JtYXQqLCAqY2hlY2sqLCAqcHJlc2V0KiBhbmQKKyAgICpmaWx0ZXJzKiBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAuCisKKyAgIDpjbGFzczpgTFpNQUZpbGVgIHN1cHBvcnRzIGFsbCB0aGUgbWVtYmVycyBzcGVjaWZpZWQgYnkKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZCBpcyBhbHNvIHByb3ZpZGVkOgorCisgICAuLiBtZXRob2Q6OiBwZWVrKHNpemU9LTEpCisKKyAgICAgIFJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLiBBdCBsZWFzdCBvbmUKKyAgICAgIGJ5dGUgb2YgZGF0YSB3aWxsIGJlIHJldHVybmVkLCB1bmxlc3MgRU9GIGhhcyBiZWVuIHJlYWNoZWQuIFRoZSBleGFjdAorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkICh0aGUgKnNpemUqIGFyZ3VtZW50IGlzIGlnbm9yZWQpLgorCisKK0NvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBjbGFzczo6IExaTUFDb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29tcHJlc3MgZGF0YSBpbmNyZW1lbnRhbGx5LgorCisgICBGb3IgYSBtb3JlIGNvbnZlbmllbnQgd2F5IG9mIGNvbXByZXNzaW5nIGEgc2luZ2xlIGNodW5rIG9mIGRhdGEsIHNlZQorICAgOmZ1bmM6YGNvbXByZXNzYC4KKworICAgVGhlICpmb3JtYXQqIGFyZ3VtZW50IHNwZWNpZmllcyB3aGF0IGNvbnRhaW5lciBmb3JtYXQgc2hvdWxkIGJlIHVzZWQuCisgICBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisgICAqIDpjb25zdDpgRk9STUFUX1haYDogVGhlIGBgLnh6YGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9ybWF0LgorCisgICAqIDpjb25zdDpgRk9STUFUX0FMT05FYDogVGhlIGxlZ2FjeSBgYC5sem1hYGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgZm9ybWF0IGlzIG1vcmUgbGltaXRlZCB0aGFuIGBgLnh6YGAgLS0gaXQgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkKKyAgICAgIGNoZWNrcyBvciBtdWx0aXBsZSBmaWx0ZXJzLgorCisgICAqIDpjb25zdDpgRk9STUFUX1JBV2A6IEEgcmF3IGRhdGEgc3RyZWFtLCBub3QgdXNpbmcgYW55IGNvbnRhaW5lciBmb3JtYXQuCisgICAgICBUaGlzIGZvcm1hdCBzcGVjaWZpZXIgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkgY2hlY2tzLCBhbmQgcmVxdWlyZXMgdGhhdAorICAgICAgeW91IGFsd2F5cyBzcGVjaWZ5IGEgY3VzdG9tIGZpbHRlciBjaGFpbiAoZm9yIGJvdGggY29tcHJlc3Npb24gYW5kCisgICAgICBkZWNvbXByZXNzaW9uKS4gQWRkaXRpb25hbGx5LCBkYXRhIGNvbXByZXNzZWQgaW4gdGhpcyBtYW5uZXIgY2Fubm90IGJlCisgICAgICBkZWNvbXByZXNzZWQgdXNpbmcgOmNvbnN0OmBGT1JNQVRfQVVUT2AgKHNlZSA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgKS4KKworICAgVGhlICpjaGVjayogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGludGVncml0eSBjaGVjayB0byBpbmNsdWRlIGluIHRoZQorICAgY29tcHJlc3NlZCBkYXRhLiBUaGlzIGNoZWNrIGlzIHVzZWQgd2hlbiBkZWNvbXByZXNzaW5nLCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgIGRhdGEgaGFzIG5vdCBiZWVuIGNvcnJ1cHRlZC4gUG9zc2libGUgdmFsdWVzIGFyZToKKworICAgKiA6Y29uc3Q6YENIRUNLX05PTkVgOiBObyBpbnRlZ3JpdHkgY2hlY2suCisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgKGFuZCB0aGUgb25seSBhY2NlcHRhYmxlIHZhbHVlKSBmb3IKKyAgICAgOmNvbnN0OmBGT1JNQVRfQUxPTkVgIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfQ1JDMzJgOiAzMi1iaXQgQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2suCisKKyAgICogOmNvbnN0OmBDSEVDS19DUkM2NGA6IDY0LWJpdCBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjay4KKyAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgOmNvbnN0OmBGT1JNQVRfWFpgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfU0hBMjU2YDogMjU2LWJpdCBTZWN1cmUgSGFzaCBBbGdvcml0aG0uCisKKyAgIElmIHRoZSBzcGVjaWZpZWQgY2hlY2sgaXMgbm90IHN1cHBvcnRlZCwgYW4gOmNsYXNzOmBMWk1BRXJyb3JgIGlzIHJhaXNlZC4KKworICAgVGhlIGNvbXByZXNzaW9uIHNldHRpbmdzIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgcHJlc2V0IGNvbXByZXNzaW9uCisgICBsZXZlbCAod2l0aCB0aGUgKnByZXNldCogYXJndW1lbnQpLCBvciBpbiBkZXRhaWwgYXMgYSBjdXN0b20gZmlsdGVyIGNoYWluCisgICAod2l0aCB0aGUgKmZpbHRlcnMqIGFyZ3VtZW50KS4KKworICAgVGhlICpwcmVzZXQqIGFyZ3VtZW50IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiBgYDBgYCBhbmQKKyAgIGBgOWBgIChpbmNsdXNpdmUpLCBvcHRpb25hbGx5IE9SLWVkIHdpdGggdGhlIGNvbnN0YW50CisgICA6Y29uc3Q6YFBSRVNFVF9FWFRSRU1FYC4gSWYgbmVpdGhlciAqcHJlc2V0KiBub3IgKmZpbHRlcnMqIGFyZSBnaXZlbiwgdGhlCisgICBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSA6Y29uc3Q6YFBSRVNFVF9ERUZBVUxUYCAocHJlc2V0IGxldmVsIGBgNmBgKS4KKyAgIEhpZ2hlciBwcmVzZXRzIHByb2R1Y2Ugc21hbGxlciBvdXRwdXQsIGJ1dCBtYWtlIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzCisgICBzbG93ZXIuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJbiBhZGRpdGlvbiB0byBiZWluZyBtb3JlIENQVS1pbnRlbnNpdmUsIGNvbXByZXNzaW9uIHdpdGggaGlnaGVyIHByZXNldHMKKyAgICAgIGFsc28gcmVxdWlyZXMgbXVjaCBtb3JlIG1lbW9yeSAoYW5kIHByb2R1Y2VzIG91dHB1dCB0aGF0IG5lZWRzIG1vcmUgbWVtb3J5CisgICAgICB0byBkZWNvbXByZXNzKS4gV2l0aCBwcmVzZXQgYGA5YGAgZm9yIGV4YW1wbGUsIHRoZSBvdmVyaGVhZCBmb3IgYW4KKyAgICAgIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgIG9iamVjdCBjYW4gYmUgYXMgaGlnaCBhcyA4MDBNaUIuIEZvciB0aGlzIHJlYXNvbiwKKyAgICAgIGl0IGlzIGdlbmVyYWxseSBiZXN0IHRvIHN0aWNrIHdpdGggdGhlIGRlZmF1bHQgcHJlc2V0LgorCisgICBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGEgZmlsdGVyIGNoYWluIHNwZWNpZmllci4KKyAgIFNlZSA6cmVmOmBmaWx0ZXItY2hhaW4tc3BlY3NgIGZvciBkZXRhaWxzLgorCisgICAuLiBtZXRob2Q6OiBjb21wcmVzcyhkYXRhKQorCisgICAgICBDb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKKyAgICAgIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuIFNvbWUgb2YKKyAgICAgICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bworICAgICAgOm1ldGg6YGNvbXByZXNzYCBhbmQgOm1ldGg6YGZsdXNoYC4gVGhlIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlCisgICAgICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3V0cHV0IG9mIGFueSBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgY29tcHJlc3NgLgorCisgICAuLiBtZXRob2Q6OiBmbHVzaCgpCisKKyAgICAgIEZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcywgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0CisgICAgICBjb250YWluaW5nIGFueSBkYXRhIHN0b3JlZCBpbiB0aGUgY29tcHJlc3NvcidzIGludGVybmFsIGJ1ZmZlcnMuCisKKyAgICAgIFRoZSBjb21wcmVzc29yIGNhbm5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KKworCisuLiBjbGFzczo6IExaTUFEZWNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpCisKKyAgIENyZWF0ZSBhIGRlY29tcHJlc3NvciBvYmplY3QsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRlY29tcHJlc3MgZGF0YQorICAgaW5jcmVtZW50YWxseS4KKworICAgRm9yIGEgbW9yZSBjb252ZW5pZW50IHdheSBvZiBkZWNvbXByZXNzaW5nIGFuIGVudGlyZSBjb21wcmVzc2VkIHN0cmVhbSBhdAorICAgb25jZSwgc2VlIDpmdW5jOmBkZWNvbXByZXNzYC4KKworICAgVGhlICpmb3JtYXQqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCB0aGF0IHNob3VsZCBiZSB1c2VkLiBUaGUKKyAgIGRlZmF1bHQgaXMgOmNvbnN0OmBGT1JNQVRfQVVUT2AsIHdoaWNoIGNhbiBkZWNvbXByZXNzIGJvdGggYGAueHpgYCBhbmQKKyAgIGBgLmx6bWFgYCBmaWxlcy4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSA6Y29uc3Q6YEZPUk1BVF9YWmAsCisgICA6Y29uc3Q6YEZPUk1BVF9BTE9ORWAsIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgLgorCisgICBUaGUgKm1lbWxpbWl0KiBhcmd1bWVudCBzcGVjaWZpZXMgYSBsaW1pdCAoaW4gYnl0ZXMpIG9uIHRoZSBhbW91bnQgb2YgbWVtb3J5CisgICB0aGF0IHRoZSBkZWNvbXByZXNzb3IgY2FuIHVzZS4gV2hlbiB0aGlzIGFyZ3VtZW50IGlzIHVzZWQsIGRlY29tcHJlc3Npb24gd2lsbAorICAgZmFpbCB3aXRoIGFuIDpjbGFzczpgTFpNQUVycm9yYCBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVjb21wcmVzcyB0aGUgaW5wdXQKKyAgIHdpdGhpbiB0aGUgZ2l2ZW4gbWVtb3J5IGxpbWl0LgorCisgICBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgZmlsdGVyIGNoYWluIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlCisgICB0aGUgc3RyZWFtIGJlaW5nIGRlY29tcHJlc3NlZC4gVGhpcyBhcmd1bWVudCBpcyByZXF1aXJlZCBpZiAqZm9ybWF0KiBpcworICAgOmNvbnN0OmBGT1JNQVRfUkFXYCwgYnV0IHNob3VsZCBub3QgYmUgdXNlZCBmb3Igb3RoZXIgZm9ybWF0cy4KKyAgIFNlZSA6cmVmOmBmaWx0ZXItY2hhaW4tc3BlY3NgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGZpbHRlciBjaGFpbnMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbnB1dHMgY29udGFpbmluZyBtdWx0aXBsZQorICAgICAgY29tcHJlc3NlZCBzdHJlYW1zLCB1bmxpa2UgOmZ1bmM6YGRlY29tcHJlc3NgIGFuZCA6Y2xhc3M6YExaTUFGaWxlYC4gVG8KKyAgICAgIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLCB5b3UgbXVzdAorICAgICAgY3JlYXRlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCisKKyAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKKworICAgICAgRGVjb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKKyAgICAgIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuCisgICAgICBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bworICAgICAgOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhlCisgICAgICBvdXRwdXQgb2YgYW55IHByZXZpb3VzIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4KKworICAgLi4gYXR0cmlidXRlOjogY2hlY2sKKworICAgICAgVGhlIElEIG9mIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdXNlZCBieSB0aGUgaW5wdXQgc3RyZWFtLiBUaGlzIG1heSBiZQorICAgICAgOmNvbnN0OmBDSEVDS19VTktOT1dOYCB1bnRpbCBlbm91Z2ggb2YgdGhlIGlucHV0IGhhcyBiZWVuIGRlY29kZWQgdG8KKyAgICAgIGRldGVybWluZSB3aGF0IGludGVncml0eSBjaGVjayBpdCB1c2VzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBlb2YKKworICAgICAgVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4KKworICAgLi4gYXR0cmlidXRlOjogdW51c2VkX2RhdGEKKworICAgICAgRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICAgQmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyByZWFjaGVkLCB0aGlzIHdpbGwgYmUgYGBiIiJgYC4KKworCisuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIHRoZSBjb21wcmVzc2VkIGRhdGEgYXMgYQorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorCisgICBTZWUgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAgYWJvdmUgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlICpmb3JtYXQqLCAqY2hlY2sqLAorICAgKnByZXNldCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMuCisKKworLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfQVVUTywgbWVtbGltaXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCByZXR1cm5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhCisgICBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKworICAgSWYgKmRhdGEqIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlIGRpc3RpbmN0IGNvbXByZXNzZWQgc3RyZWFtcywKKyAgIGRlY29tcHJlc3MgYWxsIG9mIHRoZXNlIHN0cmVhbXMsIGFuZCByZXR1cm4gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHJlc3VsdHMuCisKKyAgIFNlZSA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgIGFib3ZlIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAqZm9ybWF0KiwKKyAgICptZW1saW1pdCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMuCisKKworTWlzY2VsbGFuZW91cworLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGlzX2NoZWNrX3N1cHBvcnRlZChjaGVjaykKKworICAgUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBpbnRlZ3JpdHkgY2hlY2sgaXMgc3VwcG9ydGVkIG9uIHRoaXMgc3lzdGVtLgorCisgICA6Y29uc3Q6YENIRUNLX05PTkVgIGFuZCA6Y29uc3Q6YENIRUNLX0NSQzMyYCBhcmUgYWx3YXlzIHN1cHBvcnRlZC4KKyAgIDpjb25zdDpgQ0hFQ0tfQ1JDNjRgIGFuZCA6Y29uc3Q6YENIRUNLX1NIQTI1NmAgbWF5IGJlIHVuYXZhaWxhYmxlIGlmIHlvdSBhcmUKKyAgIHVzaW5nIGEgdmVyc2lvbiBvZiA6cHJvZ3JhbTpgbGlibHptYWAgdGhhdCB3YXMgY29tcGlsZWQgd2l0aCBhIGxpbWl0ZWQKKyAgIGZlYXR1cmUgc2V0LgorCisKKy4uIF9maWx0ZXItY2hhaW4tc3BlY3M6CisKK1NwZWNpZnlpbmcgY3VzdG9tIGZpbHRlciBjaGFpbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBmaWx0ZXIgY2hhaW4gc3BlY2lmaWVyIGlzIGEgc2VxdWVuY2Ugb2YgZGljdGlvbmFyaWVzLCB3aGVyZSBlYWNoIGRpY3Rpb25hcnkKK2NvbnRhaW5zIHRoZSBJRCBhbmQgb3B0aW9ucyBmb3IgYSBzaW5nbGUgZmlsdGVyLiBFYWNoIGRpY3Rpb25hcnkgbXVzdCBjb250YWluCit0aGUga2V5IGBgImlkImBgLCBhbmQgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBrZXlzIHRvIHNwZWNpZnkgZmlsdGVyLWRlcGVuZGVudAorb3B0aW9ucy4gVmFsaWQgZmlsdGVyIElEcyBhcmUgYXMgZm9sbG93czoKKworKiBDb21wcmVzc2lvbiBmaWx0ZXJzOgorICAgKiA6Y29uc3Q6YEZJTFRFUl9MWk1BMWAgKGZvciB1c2Ugd2l0aCA6Y29uc3Q6YEZPUk1BVF9BTE9ORWApCisgICAqIDpjb25zdDpgRklMVEVSX0xaTUEyYCAoZm9yIHVzZSB3aXRoIDpjb25zdDpgRk9STUFUX1haYCBhbmQgOmNvbnN0OmBGT1JNQVRfUkFXYCkKKworKiBEZWx0YSBmaWx0ZXI6CisgICAqIDpjb25zdDpgRklMVEVSX0RFTFRBYAorCisqIEJyYW5jaC1DYWxsLUp1bXAgKEJDSikgZmlsdGVyczoKKyAgICogOmNvbnN0OmBGSUxURVJfWDg2YAorICAgKiA6Y29uc3Q6YEZJTFRFUl9JQTY0YAorICAgKiA6Y29uc3Q6YEZJTFRFUl9BUk1gCisgICAqIDpjb25zdDpgRklMVEVSX0FSTVRIVU1CYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9QT1dFUlBDYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9TUEFSQ2AKKworQSBmaWx0ZXIgY2hhaW4gY2FuIGNvbnNpc3Qgb2YgdXAgdG8gNCBmaWx0ZXJzLCBhbmQgY2Fubm90IGJlIGVtcHR5LiBUaGUgbGFzdAorZmlsdGVyIGluIHRoZSBjaGFpbiBtdXN0IGJlIGEgY29tcHJlc3Npb24gZmlsdGVyLCBhbmQgYW55IG90aGVyIGZpbHRlcnMgbXVzdCBiZQorZGVsdGEgb3IgQkNKIGZpbHRlcnMuCisKK0NvbXByZXNzaW9uIGZpbHRlcnMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgKHNwZWNpZmllZCBhcyBhZGRpdGlvbmFsCitlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5IHJlcHJlc2VudGluZyB0aGUgZmlsdGVyKToKKworICAgKiBgYHByZXNldGBgOiBBIGNvbXByZXNzaW9uIHByZXNldCB0byB1c2UgYXMgYSBzb3VyY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgZm9yCisgICAgIG9wdGlvbnMgdGhhdCBhcmUgbm90IHNwZWNpZmllZCBleHBsaWNpdGx5LgorICAgKiBgYGRpY3Rfc2l6ZWBgOiBEaWN0aW9uYXJ5IHNpemUgaW4gYnl0ZXMuIFRoaXMgc2hvdWxkIGJlIGJldHdlZW4gNEtpQiBhbmQKKyAgICAgMS41R2lCIChpbmNsdXNpdmUpLgorICAgKiBgYGxjYGA6IE51bWJlciBvZiBsaXRlcmFsIGNvbnRleHQgYml0cy4KKyAgICogYGBscGBgOiBOdW1iZXIgb2YgbGl0ZXJhbCBwb3NpdGlvbiBiaXRzLiBUaGUgc3VtIGBgbGMgKyBscGBgIG11c3QgYmUgYXQKKyAgICAgbW9zdCA0LgorICAgKiBgYHBiYGA6IE51bWJlciBvZiBwb3NpdGlvbiBiaXRzOyBtdXN0IGJlIGF0IG1vc3QgNC4KKyAgICogYGBtb2RlYGA6IDpjb25zdDpgTU9ERV9GQVNUYCBvciA6Y29uc3Q6YE1PREVfTk9STUFMYC4KKyAgICogYGBuaWNlX2xlbmBgOiBXaGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgIm5pY2UgbGVuZ3RoIiBmb3IgYSBtYXRjaC4KKyAgICAgVGhpcyBzaG91bGQgYmUgMjczIG9yIGxlc3MuCisgICAqIGBgbWZgYDogV2hhdCBtYXRjaCBmaW5kZXIgdG8gdXNlIC0tIDpjb25zdDpgTUZfSEMzYCwgOmNvbnN0OmBNRl9IQzRgLAorICAgICA6Y29uc3Q6YE1GX0JUMmAsIDpjb25zdDpgTUZfQlQzYCwgb3IgOmNvbnN0OmBNRl9CVDRgLgorICAgKiBgYGRlcHRoYGA6IE1heGltdW0gc2VhcmNoIGRlcHRoIHVzZWQgYnkgbWF0Y2ggZmluZGVyLiAwIChkZWZhdWx0KSBtZWFucyB0bworICAgICBzZWxlY3QgYXV0b21hdGljYWxseSBiYXNlZCBvbiBvdGhlciBmaWx0ZXIgb3B0aW9ucy4KKworVGhlIGRlbHRhIGZpbHRlciBzdG9yZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYnl0ZXMsIHByb2R1Y2luZyBtb3JlIHJlcGV0aXRpdmUKK2lucHV0IGZvciB0aGUgY29tcHJlc3NvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuIEl0IG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUKK1RoZSBkZWx0YSBmaWx0ZXIgc3VwcG9ydHMgb25seSBvbmUgb3B0aW9uLCBgYGRpc3RgYC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGRpc3RhbmNlCitiZXR3ZWVuIGJ5dGVzIHRvIGJlIHN1YnRyYWN0ZWQuIFRoZSBkZWZhdWx0IGlzIDEsIGkuZS4gdGFrZSB0aGUgZGlmZmVyZW5jZXMKK2JldHdlZW4gYWRqYWNlbnQgYnl0ZXMuCisKK1RoZSBCQ0ogZmlsdGVycyBhcmUgaW50ZW5kZWQgdG8gYmUgYXBwbGllZCB0byBtYWNoaW5lIGNvZGUuIFRoZXkgY29udmVydAorcmVsYXRpdmUgYnJhbmNoZXMsIGNhbGxzIGFuZCBqdW1wcyBpbiB0aGUgY29kZSB0byB1c2UgYWJzb2x1dGUgYWRkcmVzc2luZywgd2l0aAordGhlIGFpbSBvZiBpbmNyZWFzaW5nIHRoZSByZWR1bmRhbmN5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCBieSB0aGUgY29tcHJlc3Nvci4KK1RoZXNlIGZpbHRlcnMgc3VwcG9ydCBvbmUgb3B0aW9uLCBgYHN0YXJ0X29mZnNldGBgLiBUaGlzIHNwZWNpZmllcyB0aGUgYWRkcmVzcwordGhhdCBzaG91bGQgYmUgbWFwcGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IGRhdGEuIFRoZSBkZWZhdWx0IGlzIDAuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK1JlYWRpbmcgaW4gYSBjb21wcmVzc2VkIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBsem1hLm9wZW4oImZpbGUueHoiKSBhcyBmOgorICAgICAgIGZpbGVfY29udGVudCA9IGYucmVhZCgpCisKK0NyZWF0aW5nIGEgY29tcHJlc3NlZCBmaWxlOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGEgPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICB3aXRoIGx6bWEub3BlbigiZmlsZS54eiIsICJ3IikgYXMgZjoKKyAgICAgICBmLndyaXRlKGRhdGEpCisKK0NvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5OjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGFfaW4gPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICBkYXRhX291dCA9IGx6bWEuY29tcHJlc3MoZGF0YV9pbikKKworSW5jcmVtZW50YWwgY29tcHJlc3Npb246OgorCisgICBpbXBvcnQgbHptYQorICAgbHpjID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisgICBvdXQxID0gbHpjLmNvbXByZXNzKGIiU29tZSBkYXRhXG4iKQorICAgb3V0MiA9IGx6Yy5jb21wcmVzcyhiIkFub3RoZXIgcGllY2Ugb2YgZGF0YVxuIikKKyAgIG91dDMgPSBsemMuY29tcHJlc3MoYiJFdmVuIG1vcmUgZGF0YVxuIikKKyAgIG91dDQgPSBsemMuZmx1c2goKQorICAgIyBDb25jYXRlbmF0ZSBhbGwgdGhlIHBhcnRpYWwgcmVzdWx0czoKKyAgIHJlc3VsdCA9IGIiIi5qb2luKFtvdXQxLCBvdXQyLCBvdXQzLCBvdXQ0XSkKKworV3JpdGluZyBjb21wcmVzc2VkIGRhdGEgdG8gYW4gYWxyZWFkeS1vcGVuIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBvcGVuKCJmaWxlLnh6IiwgIndiIikgYXMgZjoKKyAgICAgICBmLndyaXRlKGIiVGhpcyBkYXRhIHdpbGwgbm90IGJlIGNvbXByZXNzZWRcbiIpCisgICAgICAgd2l0aCBsem1hLm9wZW4oZiwgInciKSBhcyBsemY6CisgICAgICAgICAgIGx6Zi53cml0ZShiIlRoaXMgKndpbGwqIGJlIGNvbXByZXNzZWRcbiIpCisgICAgICAgZi53cml0ZShiIk5vdCBjb21wcmVzc2VkXG4iKQorCitDcmVhdGluZyBhIGNvbXByZXNzZWQgZmlsZSB1c2luZyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW46OgorCisgICBpbXBvcnQgbHptYQorICAgbXlfZmlsdGVycyA9IFsKKyAgICAgICB7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJkaXN0IjogNX0sCisgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyLCAicHJlc2V0IjogNyB8IGx6bWEuUFJFU0VUX0VYVFJFTUV9LAorICAgXQorICAgd2l0aCBsem1hLm9wZW4oImZpbGUueHoiLCAidyIsIGZpbHRlcnM9bXlfZmlsdGVycykgYXMgZjoKKyAgICAgICBmLndyaXRlKGIiYmxhaCBibGFoIGJsYWgiKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWFya3VwLnJzdCBiL0RvYy9saWJyYXJ5L21hcmt1cC5yc3QKaW5kZXggMWI0Y2NhNS4uMTU4OGFhOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWFya3VwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXJrdXAucnN0CkBAIC05LDIwICs5LDEzIEBACiBMYW5ndWFnZSAoU0dNTCkgYW5kIHRoZSBIeXBlcnRleHQgTWFya3VwIExhbmd1YWdlIChIVE1MKSwgYW5kIHNldmVyYWwgaW50ZXJmYWNlcwogZm9yIHdvcmtpbmcgd2l0aCB0aGUgRXh0ZW5zaWJsZSBNYXJrdXAgTGFuZ3VhZ2UgKFhNTCkuCiAKLUl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgbW9kdWxlcyBpbiB0aGUgOm1vZDpgeG1sYCBwYWNrYWdlIHJlcXVpcmUgdGhhdAotdGhlcmUgYmUgYXQgbGVhc3Qgb25lIFNBWC1jb21wbGlhbnQgWE1MIHBhcnNlciBhdmFpbGFibGUuIFRoZSBFeHBhdCBwYXJzZXIgaXMKLWluY2x1ZGVkIHdpdGggUHl0aG9uLCBzbyB0aGUgOm1vZDpgeG1sLnBhcnNlcnMuZXhwYXRgIG1vZHVsZSB3aWxsIGFsd2F5cyBiZQotYXZhaWxhYmxlLgotCi1UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDptb2Q6YHhtbC5kb21gIGFuZCA6bW9kOmB4bWwuc2F4YCBwYWNrYWdlcyBhcmUgdGhlCi1kZWZpbml0aW9uIG9mIHRoZSBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBET00gYW5kIFNBWCBpbnRlcmZhY2VzLgotCiAKIC4uIHRvY3RyZWU6OgogCiAgICBodG1sLnJzdAogICAgaHRtbC5wYXJzZXIucnN0CiAgICBodG1sLmVudGl0aWVzLnJzdAorICAgeG1sLnJzdAogICAgeG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAogICAgeG1sLmRvbS5yc3QKICAgIHhtbC5kb20ubWluaWRvbS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21hdGgucnN0IGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKaW5kZXggOThjNWIzMy4uNjJjMGYzNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKQEAgLTE4NCw2ICsxODQsMTkgQEAKICAgIHJlc3VsdCBpcyBjYWxjdWxhdGVkIGluIGEgd2F5IHdoaWNoIGlzIGFjY3VyYXRlIGZvciAqeCogbmVhciB6ZXJvLgogCiAKKy4uIGZ1bmN0aW9uOjogbG9nMih4KQorCisgICBSZXR1cm4gdGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgKngqLiBUaGlzIGlzIHVzdWFsbHkgbW9yZSBhY2N1cmF0ZSB0aGFuCisgICBgYGxvZyh4LCAyKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDptZXRoOmBpbnQuYml0X2xlbmd0aGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudAorICAgICAgYW4gaW50ZWdlciBpbiBiaW5hcnksIGV4Y2x1ZGluZyB0aGUgc2lnbiBhbmQgbGVhZGluZyB6ZXJvcy4KKworCiAuLiBmdW5jdGlvbjo6IGxvZzEwKHgpCiAKICAgIFJldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2YgKngqLiAgVGhpcyBpcyB1c3VhbGx5IG1vcmUgYWNjdXJhdGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21tYXAucnN0IGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKaW5kZXggNWYwZjAwNC4uMWExOWE3ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKQEAgLTE5NiwxMiArMTk2LDE2IEBACiAgICAgICBtb3ZlIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAogCi0gICAuLiBtZXRob2Q6OiByZWFkKG51bSkKKyAgIC4uIG1ldGhvZDo6IHJlYWQoW25dKQogCi0gICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpudW0qIGJ5dGVzIHN0YXJ0aW5nIGZyb20gdGhlCi0gICAgICBjdXJyZW50IGZpbGUgcG9zaXRpb247IHRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlCi0gICAgICBieXRlcyB0aGF0IHdlcmUgcmV0dXJuZWQuCisgICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpuKiBieXRlcyBzdGFydGluZyBmcm9tIHRoZQorICAgICAgY3VycmVudCBmaWxlIHBvc2l0aW9uLiBJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgKk5vbmUqIG9yIG5lZ2F0aXZlLAorICAgICAgcmV0dXJuIGFsbCBieXRlcyBmcm9tIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUKKyAgICAgIG1hcHBpbmcuIFRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQgd2VyZQorICAgICAgcmV0dXJuZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBcmd1bWVudCBjYW4gYmUgb21pdHRlZCBvciAqTm9uZSouCiAKICAgIC4uIG1ldGhvZDo6IHJlYWRfYnl0ZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QgYi9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0CmluZGV4IDg4OWEwYzUuLjlkMjM3MjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdApAQCAtMjAsNiArMjAsMTEgQEAKIGZvciBpbnRlcm5hdGlvbmFsaXplZCBhcHBsaWNhdGlvbnMuIFRoZSB3aWRlIGNoYXIgQVBJIHNob3VsZCBiZSB1c2VkIHdoZXJlCiBldmVyIHBvc3NpYmxlCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIG5vdyByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aGVyZSA6ZXhjOmBJT0Vycm9yYAorICAgd2FzIHJhaXNlZC4KKworCiAuLiBfbXN2Y3J0LWZpbGVzOgogCiBGaWxlIE9wZXJhdGlvbnMKQEAgLTI5LDcgKzM0LDcgQEAKIC4uIGZ1bmN0aW9uOjogbG9ja2luZyhmZCwgbW9kZSwgbmJ5dGVzKQogCiAgICBMb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIGZyb20gdGhlIEMgcnVudGltZS4gIFJhaXNlcwotICAgOmV4YzpgSU9FcnJvcmAgb24gZmFpbHVyZS4gIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbSB0aGUKKyAgIDpleGM6YE9TRXJyb3JgIG9uIGZhaWx1cmUuICBUaGUgbG9ja2VkIHJlZ2lvbiBvZiB0aGUgZmlsZSBleHRlbmRzIGZyb20gdGhlCiAgICBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yICpuYnl0ZXMqIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgZmlsZS4gICptb2RlKiBtdXN0IGJlIG9uZSBvZiB0aGUgOmNvbnN0OmBMS19cKmAgY29uc3RhbnRzIGxpc3RlZCBiZWxvdy4gTXVsdGlwbGUKICAgIHJlZ2lvbnMgaW4gYSBmaWxlIG1heSBiZSBsb2NrZWQgYXQgdGhlIHNhbWUgdGltZSwgYnV0IG1heSBub3Qgb3ZlcmxhcC4gIEFkamFjZW50CkBAIC00MSwxMyArNDYsMTMgQEAKIAogICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIHRoZSBwcm9ncmFtCiAgICBpbW1lZGlhdGVseSB0cmllcyBhZ2FpbiBhZnRlciAxIHNlY29uZC4gIElmLCBhZnRlciAxMCBhdHRlbXB0cywgdGhlIGJ5dGVzIGNhbm5vdAotICAgYmUgbG9ja2VkLCA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCisgICBiZSBsb2NrZWQsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogCiAuLiBkYXRhOjogTEtfTkJMQ0sKICAgICAgICAgICBMS19OQlJMQ0sKIAotICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIDpleGM6YElPRXJyb3JgIGlzCisgICBMb2NrcyB0aGUgc3BlY2lmaWVkIGJ5dGVzLiBJZiB0aGUgYnl0ZXMgY2Fubm90IGJlIGxvY2tlZCwgOmV4YzpgT1NFcnJvcmAgaXMKICAgIHJhaXNlZC4KIAogCkBAIC03Myw3ICs3OCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogZ2V0X29zZmhhbmRsZShmZCkKIAotICAgUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgUmFpc2VzIDpleGM6YElPRXJyb3JgIGlmCisgICBSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouICBSYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYKICAgICpmZCogaXMgbm90IHJlY29nbml6ZWQuCiAKIApAQCAtMTQ0LDQgKzE0OSw0IEBACiAuLiBmdW5jdGlvbjo6IGhlYXBtaW4oKQogCiAgICBGb3JjZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgcmV0dXJuIHVudXNlZCBibG9ja3MgdG8KLSAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgOmV4YzpgSU9FcnJvcmAuCisgICB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIDpleGM6YE9TRXJyb3JgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggNDI3MWZjMi4uODJjODYxMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICAgRnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhpcyBwYWNrYWdlIHJlcXVpcmVzIHRoYXQgdGhlIGBgX19tYWluX19gYCBtb2R1bGUgYmUKICAgICBpbXBvcnRhYmxlIGJ5IHRoZSBjaGlsZHJlbi4gVGhpcyBpcyBjb3ZlcmVkIGluIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm9ncmFtbWluZ2AKICAgICBob3dldmVyIGl0IGlzIHdvcnRoIHBvaW50aW5nIG91dCBoZXJlLiBUaGlzIG1lYW5zIHRoYXQgc29tZSBleGFtcGxlcywgc3VjaAotICAgIGFzIHRoZSA6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5Qb29sYCBleGFtcGxlcyB3aWxsIG5vdCB3b3JrIGluIHRoZQorICAgIGFzIHRoZSA6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5wb29sLlBvb2xgIGV4YW1wbGVzIHdpbGwgbm90IHdvcmsgaW4gdGhlCiAgICAgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuIEZvciBleGFtcGxlOjoKIAogICAgICAgICA+Pj4gZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wKQEAgLTEyMSw5ICsxMjEsNyBAQAogICAgICAgICAgIHByaW50KHEuZ2V0KCkpICAgICMgcHJpbnRzICJbNDIsIE5vbmUsICdoZWxsbyddIgogICAgICAgICAgIHAuam9pbigpCiAKLSAgIFF1ZXVlcyBhcmUgdGhyZWFkIGFuZCBwcm9jZXNzIHNhZmUsIGJ1dCBub3RlIHRoYXQgdGhleSBtdXN0IG5ldmVyCi0gICBiZSBpbnN0YW50aWF0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBpbXBvcnRpbmcgYSBtb2R1bGU6IHRoaXMgY2FuIGxlYWQKLSAgIHRvIGEgZGVhZGxvY2shICAoc2VlIDpyZWY6YHRocmVhZGVkLWltcG9ydHNgKQorICAgUXVldWVzIGFyZSB0aHJlYWQgYW5kIHByb2Nlc3Mgc2FmZS4KIAogKipQaXBlcyoqCiAKQEAgLTIyOSwxMSArMjI3LDExIEBACiAgICBob2xkcyBQeXRob24gb2JqZWN0cyBhbmQgYWxsb3dzIG90aGVyIHByb2Nlc3NlcyB0byBtYW5pcHVsYXRlIHRoZW0gdXNpbmcKICAgIHByb3hpZXMuCiAKLSAgIEEgbWFuYWdlciByZXR1cm5lZCBieSA6ZnVuYzpgTWFuYWdlcmAgd2lsbCBzdXBwb3J0IHR5cGVzIDpjbGFzczpgbGlzdGAsCi0gICA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YE5hbWVzcGFjZWAsIDpjbGFzczpgTG9ja2AsIDpjbGFzczpgUkxvY2tgLAotICAgOmNsYXNzOmBTZW1hcGhvcmVgLCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgLCA6Y2xhc3M6YENvbmRpdGlvbmAsCi0gICA6Y2xhc3M6YEV2ZW50YCwgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgVmFsdWVgIGFuZCA6Y2xhc3M6YEFycmF5YC4gIEZvcgotICAgZXhhbXBsZSwgOjoKKyAgIEEgbWFuYWdlciByZXR1cm5lZCBieSA6ZnVuYzpgTWFuYWdlcmAgd2lsbCBzdXBwb3J0IHR5cGVzCisgICA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YE5hbWVzcGFjZWAsIDpjbGFzczpgTG9ja2AsCisgICA6Y2xhc3M6YFJMb2NrYCwgOmNsYXNzOmBTZW1hcGhvcmVgLCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgLAorICAgOmNsYXNzOmBDb25kaXRpb25gLCA6Y2xhc3M6YEV2ZW50YCwgOmNsYXNzOmBCYXJyaWVyYCwKKyAgIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFZhbHVlYCBhbmQgOmNsYXNzOmBBcnJheWAuICBGb3IgZXhhbXBsZSwgOjoKIAogICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MsIE1hbmFnZXIKIApAQCAtMjQ0LDE3ICsyNDIsMTYgQEAKICAgICAgICAgICBsLnJldmVyc2UoKQogCiAgICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKCkKKyAgICAgICAgICB3aXRoIE1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICAgICBkID0gbWFuYWdlci5kaWN0KCkKKyAgICAgICAgICAgICAgbCA9IG1hbmFnZXIubGlzdChyYW5nZSgxMCkpCiAKLSAgICAgICAgICBkID0gbWFuYWdlci5kaWN0KCkKLSAgICAgICAgICBsID0gbWFuYWdlci5saXN0KHJhbmdlKDEwKSkKKyAgICAgICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWYsIGFyZ3M9KGQsIGwpKQorICAgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgICAgcC5qb2luKCkKIAotICAgICAgICAgIHAgPSBQcm9jZXNzKHRhcmdldD1mLCBhcmdzPShkLCBsKSkKLSAgICAgICAgICBwLnN0YXJ0KCkKLSAgICAgICAgICBwLmpvaW4oKQotCi0gICAgICAgICAgcHJpbnQoZCkKLSAgICAgICAgICBwcmludChsKQorICAgICAgICAgICAgICBwcmludChkKQorICAgICAgICAgICAgICBwcmludChsKQogCiAgICB3aWxsIHByaW50IDo6CiAKQEAgLTI4MiwxMCArMjc5LDEwIEBACiAgICAgICAgcmV0dXJuIHgqeAogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIHBvb2wgPSBQb29sKHByb2Nlc3Nlcz00KSAgICAgICAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCBbMTBdKSAgICAgIyBldmFsdWF0ZSAiZigxMCkiIGFzeW5jaHJvbm91c2x5Ci0gICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgICAgIyBwcmludHMgIjEwMCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKLSAgICAgICBwcmludChwb29sLm1hcChmLCByYW5nZSgxMCkpKSAgICAgICAgICAjIHByaW50cyAiWzAsIDEsIDQsLi4uLCA4MV0iCisgICAgICAgd2l0aCBQb29sKHByb2Nlc3Nlcz00KSBhcyBwb29sICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCBbMTBdKSAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKKyAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdworICAgICAgICAgICBwcmludChwb29sLm1hcChmLCByYW5nZSgxMCkpKSAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKIAogCiBSZWZlcmVuY2UKQEAgLTI5OCw3ICsyOTUsOCBAQAogOmNsYXNzOmBQcm9jZXNzYCBhbmQgZXhjZXB0aW9ucwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi0uLiBjbGFzczo6IFByb2Nlc3MoZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9KQorLi4gY2xhc3M6OiBQcm9jZXNzKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwgXAorICAgICAgICAgICAgICAgICAgICosIGRhZW1vbj1Ob25lKQogCiAgICBQcm9jZXNzIG9iamVjdHMgcmVwcmVzZW50IGFjdGl2aXR5IHRoYXQgaXMgcnVuIGluIGEgc2VwYXJhdGUgcHJvY2Vzcy4gVGhlCiAgICA6Y2xhc3M6YFByb2Nlc3NgIGNsYXNzIGhhcyBlcXVpdmFsZW50cyBvZiBhbGwgdGhlIG1ldGhvZHMgb2YKQEAgLTMwOCwxOCArMzA2LDIyIEBACiAgICBzaG91bGQgYWx3YXlzIGJlIGBgTm9uZWBgOyBpdCBleGlzdHMgc29sZWx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGgKICAgIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAuICAqdGFyZ2V0KiBpcyB0aGUgY2FsbGFibGUgb2JqZWN0IHRvIGJlIGludm9rZWQgYnkKICAgIHRoZSA6bWV0aDpgcnVuKClgIG1ldGhvZC4gIEl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLCBtZWFuaW5nIG5vdGhpbmcgaXMKLSAgIGNhbGxlZC4gKm5hbWUqIGlzIHRoZSBwcm9jZXNzIG5hbWUuICBCeSBkZWZhdWx0LCBhIHVuaXF1ZSBuYW1lIGlzIGNvbnN0cnVjdGVkCi0gICBvZiB0aGUgZm9ybSAnUHJvY2Vzcy1OXCA6c3ViOmAxYDpOXCA6c3ViOmAyYDouLi46TlwgOnN1Yjpga2AnIHdoZXJlIE5cCi0gICA6c3ViOmAxYCxOXCA6c3ViOmAyYCwuLi4sTlwgOnN1Yjpga2AgaXMgYSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyB3aG9zZSBsZW5ndGgKLSAgIGlzIGRldGVybWluZWQgYnkgdGhlICpnZW5lcmF0aW9uKiBvZiB0aGUgcHJvY2Vzcy4gICphcmdzKiBpcyB0aGUgYXJndW1lbnQKLSAgIHR1cGxlIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZAotICAgYXJndW1lbnRzIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0bwotICAgKnRhcmdldCouCisgICBjYWxsZWQuICpuYW1lKiBpcyB0aGUgcHJvY2VzcyBuYW1lIChzZWUgOmF0dHI6YG5hbWVgIGZvciBtb3JlIGRldGFpbHMpLgorICAgKmFyZ3MqIGlzIHRoZSBhcmd1bWVudCB0dXBsZSBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgKmt3YXJncyogaXMgYQorICAgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgSWYgcHJvdmlkZWQsCisgICB0aGUga2V5d29yZC1vbmx5ICpkYWVtb24qIGFyZ3VtZW50IHNldHMgdGhlIHByb2Nlc3MgOmF0dHI6YGRhZW1vbmAgZmxhZworICAgdG8gYGBUcnVlYGAgb3IgYGBGYWxzZWBgLiAgSWYgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdGhpcyBmbGFnIHdpbGwgYmUKKyAgIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyBwcm9jZXNzLgorCisgICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byAqdGFyZ2V0Ki4KIAogICAgSWYgYSBzdWJjbGFzcyBvdmVycmlkZXMgdGhlIGNvbnN0cnVjdG9yLCBpdCBtdXN0IG1ha2Ugc3VyZSBpdCBpbnZva2VzIHRoZQogICAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciAoOm1ldGg6YFByb2Nlc3MuX19pbml0X19gKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZQogICAgdG8gdGhlIHByb2Nlc3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRhZW1vbiogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bigpCiAKICAgICAgIE1ldGhvZCByZXByZXNlbnRpbmcgdGhlIHByb2Nlc3MncyBhY3Rpdml0eS4KQEAgLTMzOCwxMCArMzQwLDkgQEAKIAogICAgLi4gbWV0aG9kOjogam9pbihbdGltZW91dF0pCiAKLSAgICAgIEJsb2NrIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzCi0gICAgICBjYWxsZWQgdGVybWluYXRlcyBvciB1bnRpbCB0aGUgb3B0aW9uYWwgdGltZW91dCBvY2N1cnMuCi0KLSAgICAgIElmICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIHRoZXJlIGlzIG5vIHRpbWVvdXQuCisgICAgICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVvdXQqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHRoZSBtZXRob2QKKyAgICAgIGJsb2NrcyB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzIGNhbGxlZCB0ZXJtaW5hdGVzLgorICAgICAgSWYgKnRpbWVvdXQqIGlzIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBibG9ja3MgYXQgbW9zdCAqdGltZW91dCogc2Vjb25kcy4KIAogICAgICAgQSBwcm9jZXNzIGNhbiBiZSBqb2luZWQgbWFueSB0aW1lcy4KIApAQCAtMzUwLDExICszNTEsMTQgQEAKIAogICAgLi4gYXR0cmlidXRlOjogbmFtZQogCi0gICAgICBUaGUgcHJvY2VzcydzIG5hbWUuCisgICAgICBUaGUgcHJvY2VzcydzIG5hbWUuICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcworICAgICAgb25seS4gIEl0IGhhcyBubyBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lCisgICAgICBuYW1lLgogCi0gICAgICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBvbmx5LiAgSXQgaGFzIG5vCi0gICAgICBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lIG5hbWUuICBUaGUgaW5pdGlhbAotICAgICAgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLgorICAgICAgVGhlIGluaXRpYWwgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLiAgSWYgbm8gZXhwbGljaXQgbmFtZSBpcworICAgICAgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBhIG5hbWUgb2YgdGhlIGZvcm0KKyAgICAgICdQcm9jZXNzLU5cIDpzdWI6YDFgOk5cIDpzdWI6YDJgOi4uLjpOXCA6c3ViOmBrYCcgaXMgY29uc3RydWN0ZWQsIHdoZXJlCisgICAgICBlYWNoIE5cIDpzdWI6YGtgIGlzIHRoZSBOLXRoIGNoaWxkIG9mIGl0cyBwYXJlbnQuCiAKICAgIC4uIG1ldGhvZDo6IGlzX2FsaXZlCiAKQEAgLTQwNiw2ICs0MTAsMjEgQEAKIAogICAgICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCisgICAuLiBhdHRyaWJ1dGU6OiBzZW50aW5lbAorCisgICAgICBBIG51bWVyaWMgaGFuZGxlIG9mIGEgc3lzdGVtIG9iamVjdCB3aGljaCB3aWxsIGJlY29tZSAicmVhZHkiIHdoZW4KKyAgICAgIHRoZSBwcm9jZXNzIGVuZHMuCisKKyAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFsdWUgaWYgeW91IHdhbnQgdG8gd2FpdCBvbiBzZXZlcmFsIGV2ZW50cyBhdAorICAgICAgb25jZSB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuICBPdGhlcndpc2UKKyAgICAgIGNhbGxpbmcgOm1ldGg6YGpvaW4oKWAgaXMgc2ltcGxlci4KKworICAgICAgT24gV2luZG93cywgdGhpcyBpcyBhbiBPUyBoYW5kbGUgdXNhYmxlIHdpdGggdGhlIGBgV2FpdEZvclNpbmdsZU9iamVjdGBgCisgICAgICBhbmQgYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzYGAgZmFtaWx5IG9mIEFQSSBjYWxscy4gIE9uIFVuaXgsIHRoaXMgaXMKKyAgICAgIGEgZmlsZSBkZXNjcmlwdG9yIHVzYWJsZSB3aXRoIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgc2VsZWN0YCBtb2R1bGUuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiB0ZXJtaW5hdGUoKQogCiAgICAgICBUZXJtaW5hdGUgdGhlIHByb2Nlc3MuICBPbiBVbml4IHRoaXMgaXMgZG9uZSB1c2luZyB0aGUgYGBTSUdURVJNYGAgc2lnbmFsOwpAQCAtNDQ1LDYgKzQ2NCw5IEBACiAgICAgICAgPj4+IHAuZXhpdGNvZGUgPT0gLXNpZ25hbC5TSUdURVJNCiAgICAgICAgVHJ1ZQogCisuLiBleGNlcHRpb246OiBQcm9jZXNzRXJyb3IKKworICAgVGhlIGJhc2UgY2xhc3Mgb2YgYWxsIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AgZXhjZXB0aW9ucy4KIAogLi4gZXhjZXB0aW9uOjogQnVmZmVyVG9vU2hvcnQKIApAQCAtNDU0LDYgKzQ3NiwxMyBAQAogICAgSWYgYGBlYGAgaXMgYW4gaW5zdGFuY2Ugb2YgOmV4YzpgQnVmZmVyVG9vU2hvcnRgIHRoZW4gYGBlLmFyZ3NbMF1gYCB3aWxsIGdpdmUKICAgIHRoZSBtZXNzYWdlIGFzIGEgYnl0ZSBzdHJpbmcuCiAKKy4uIGV4Y2VwdGlvbjo6IEF1dGhlbnRpY2F0aW9uRXJyb3IKKworICAgUmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gYXV0aGVudGljYXRpb24gZXJyb3IuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgYnkgbWV0aG9kcyB3aXRoIGEgdGltZW91dCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuCiAKIFBpcGVzIGFuZCBRdWV1ZXMKIH5+fn5+fn5+fn5+fn5+fn4KQEAgLTQ2NSw3ICs0OTQsNyBAQAogRm9yIHBhc3NpbmcgbWVzc2FnZXMgb25lIGNhbiB1c2UgOmZ1bmM6YFBpcGVgIChmb3IgYSBjb25uZWN0aW9uIGJldHdlZW4gdHdvCiBwcm9jZXNzZXMpIG9yIGEgcXVldWUgKHdoaWNoIGFsbG93cyBtdWx0aXBsZSBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycykuCiAKLVRoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcucXVldWVzLlNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcyBhcmUgbXVsdGktcHJvZHVjZXIsCitUaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKIG11bHRpLWNvbnN1bWVyIEZJRk8gcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKIHN0YW5kYXJkIGxpYnJhcnkuICBUaGV5IGRpZmZlciBpbiB0aGF0IDpjbGFzczpgUXVldWVgIGxhY2tzIHRoZQogOm1ldGg6YH5xdWV1ZS5RdWV1ZS50YXNrX2RvbmVgIGFuZCA6bWV0aDpgfnF1ZXVlLlF1ZXVlLmpvaW5gIG1ldGhvZHMgaW50cm9kdWNlZApAQCAtNjExLDcgKzY0MCw3IEBACiAgICAgICBleGl0cyAtLSBzZWUgOm1ldGg6YGpvaW5fdGhyZWFkYC4KIAogCi0uLiBjbGFzczo6IG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMuU2ltcGxlUXVldWUoKQorLi4gY2xhc3M6OiBTaW1wbGVRdWV1ZSgpCiAKICAgIEl0IGlzIGEgc2ltcGxpZmllZCA6Y2xhc3M6YFF1ZXVlYCB0eXBlLCB2ZXJ5IGNsb3NlIHRvIGEgbG9ja2VkIDpjbGFzczpgUGlwZWAuCiAKQEAgLTYzNSw4ICs2NjQsOCBAQAogCiAgICAuLiBtZXRob2Q6OiB0YXNrX2RvbmUoKQogCi0gICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZSBjb25zdW1lcgotICAgICAgdGhyZWFkcy4gIEZvciBlYWNoIDptZXRoOmB+UXVldWUuZ2V0YCB1c2VkIHRvIGZldGNoIGEgdGFzaywgYSBzdWJzZXF1ZW50CisgICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZQorICAgICAgY29uc3VtZXJzLiAgRm9yIGVhY2ggOm1ldGg6YH5RdWV1ZS5nZXRgIHVzZWQgdG8gZmV0Y2ggYSB0YXNrLCBhIHN1YnNlcXVlbnQKICAgICAgIGNhbGwgdG8gOm1ldGg6YHRhc2tfZG9uZWAgdGVsbHMgdGhlIHF1ZXVlIHRoYXQgdGhlIHByb2Nlc3Npbmcgb24gdGhlIHRhc2sKICAgICAgIGlzIGNvbXBsZXRlLgogCkBAIC02NTMsNyArNjgyLDcgQEAKICAgICAgIEJsb2NrIHVudGlsIGFsbCBpdGVtcyBpbiB0aGUgcXVldWUgaGF2ZSBiZWVuIGdvdHRlbiBhbmQgcHJvY2Vzc2VkLgogCiAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCi0gICAgICBxdWV1ZS4gIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciB0aHJlYWQgY2FsbHMKKyAgICAgIHF1ZXVlLiAgVGhlIGNvdW50IGdvZXMgZG93biB3aGVuZXZlciBhIGNvbnN1bWVyIGNhbGxzCiAgICAgICA6bWV0aDpgdGFza19kb25lYCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uCiAgICAgICBpdCBpcyBjb21wbGV0ZS4gIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywKICAgICAgIDptZXRoOmB+UXVldWUuam9pbmAgdW5ibG9ja3MuCkBAIC03NjcsNiArNzk2LDkgQEAKICAgICAgICp0aW1lb3V0KiBpcyBhIG51bWJlciB0aGVuIHRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0bwogICAgICAgYmxvY2suICBJZiAqdGltZW91dCogaXMgYGBOb25lYGAgdGhlbiBhbiBpbmZpbml0ZSB0aW1lb3V0IGlzIHVzZWQuCiAKKyAgICAgIE5vdGUgdGhhdCBtdWx0aXBsZSBjb25uZWN0aW9uIG9iamVjdHMgbWF5IGJlIHBvbGxlZCBhdCBvbmNlIGJ5CisgICAgICB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuCisKICAgIC4uIG1ldGhvZDo6IHNlbmRfYnl0ZXMoYnVmZmVyWywgb2Zmc2V0Wywgc2l6ZV1dKQogCiAgICAgICBTZW5kIGJ5dGUgZGF0YSBmcm9tIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlIGFzIGEKQEAgLTc4NSw5ICs4MTcsMTQgQEAKICAgICAgIHRvIHJlY2VpdmUgYW5kIHRoZSBvdGhlciBlbmQgaGFzIGNsb3NlZC4KIAogICAgICAgSWYgKm1heGxlbmd0aCogaXMgc3BlY2lmaWVkIGFuZCB0aGUgbWVzc2FnZSBpcyBsb25nZXIgdGhhbiAqbWF4bGVuZ3RoKgotICAgICAgdGhlbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBjb25uZWN0aW9uIHdpbGwgbm8gbG9uZ2VyIGJlCisgICAgICB0aGVuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIGNvbm5lY3Rpb24gd2lsbCBubyBsb25nZXIgYmUKICAgICAgIHJlYWRhYmxlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgSU9FcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKwogICAgLi4gbWV0aG9kOjogcmVjdl9ieXRlc19pbnRvKGJ1ZmZlclssIG9mZnNldF0pCiAKICAgICAgIFJlYWQgaW50byAqYnVmZmVyKiBhIGNvbXBsZXRlIG1lc3NhZ2Ugb2YgYnl0ZSBkYXRhIHNlbnQgZnJvbSB0aGUgb3RoZXIgZW5kCkBAIC04MDUsNiArODQyLDE0IEBACiAgICAgICByYWlzZWQgYW5kIHRoZSBjb21wbGV0ZSBtZXNzYWdlIGlzIGF2YWlsYWJsZSBhcyBgYGUuYXJnc1swXWBgIHdoZXJlIGBgZWBgCiAgICAgICBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ29ubmVjdGlvbiBvYmplY3RzIHRoZW1zZWx2ZXMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHByb2Nlc3NlcworICAgICAgdXNpbmcgOm1ldGg6YENvbm5lY3Rpb24uc2VuZGAgYW5kIDptZXRoOmBDb25uZWN0aW9uLnJlY3ZgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIENvbm5lY3Rpb24gb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBjb25uZWN0aW9uIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YGNsb3NlYC4KIAogRm9yIGV4YW1wbGU6CiAKQEAgLTg1Niw2ICs5MDEsMTIgQEAKIE5vdGUgdGhhdCBvbmUgY2FuIGFsc28gY3JlYXRlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGJ5IHVzaW5nIGEgbWFuYWdlcgogb2JqZWN0IC0tIHNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctbWFuYWdlcnNgLgogCisuLiBjbGFzczo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKKworICAgQSBiYXJyaWVyIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGNsYXNzOjogQm91bmRlZFNlbWFwaG9yZShbdmFsdWVdKQogCiAgICBBIGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYC4KQEAgLTg2NSwyMCArOTE2LDE3IEBACiAKIC4uIGNsYXNzOjogQ29uZGl0aW9uKFtsb2NrXSkKIAotICAgQSBjb25kaXRpb24gdmFyaWFibGU6IGEgY2xvbmUgb2YgOmNsYXNzOmB0aHJlYWRpbmcuQ29uZGl0aW9uYC4KKyAgIEEgY29uZGl0aW9uIHZhcmlhYmxlOiBhbiBhbGlhcyBmb3IgOmNsYXNzOmB0aHJlYWRpbmcuQ29uZGl0aW9uYC4KIAogICAgSWYgKmxvY2sqIGlzIHNwZWNpZmllZCB0aGVuIGl0IHNob3VsZCBiZSBhIDpjbGFzczpgTG9ja2Agb3IgOmNsYXNzOmBSTG9ja2AKICAgIG9iamVjdCBmcm9tIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAuLiBjbGFzczo6IEV2ZW50KCkKIAogICAgQSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAuCi0gICBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgaW50ZXJuYWwgc2VtYXBob3JlIG9uIGV4aXQsIHNvIGl0Ci0gICB3aWxsIGFsd2F5cyByZXR1cm4gYGBUcnVlYGAgZXhjZXB0IGlmIGEgdGltZW91dCBpcyBnaXZlbiBhbmQgdGhlIG9wZXJhdGlvbgotICAgdGltZXMgb3V0LgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgUHJldmlvdXNseSwgdGhlIG1ldGhvZCBhbHdheXMgcmV0dXJuZWQgYGBOb25lYGAuCiAKIC4uIGNsYXNzOjogTG9jaygpCiAKQEAgLTg5NCw2ICs5NDIsMTIgQEAKIAogLi4gbm90ZTo6CiAKKyAgIFRoZSA6bWV0aDpgYWNxdWlyZWAgYW5kIDptZXRoOmB3YWl0YCBtZXRob2RzIG9mIGVhY2ggb2YgdGhlc2UgdHlwZXMKKyAgIHRyZWF0IG5lZ2F0aXZlIHRpbWVvdXRzIGFzIHplcm8gdGltZW91dHMuICBUaGlzIGRpZmZlcnMgZnJvbQorICAgOm1vZDpgdGhyZWFkaW5nYCB3aGVyZSwgc2luY2UgdmVyc2lvbiAzLjIsIHRoZSBlcXVpdmFsZW50CisgICA6bWV0aDpgYWNxdWlyZWAgbWV0aG9kcyB0cmVhdCBuZWdhdGl2ZSB0aW1lb3V0cyBhcyBpbmZpbml0ZQorICAgdGltZW91dHMuCisKICAgIE9uIE1hYyBPUyBYLCBgYHNlbV90aW1lZHdhaXRgYCBpcyB1bnN1cHBvcnRlZCwgc28gY2FsbGluZyBgYGFjcXVpcmUoKWBgIHdpdGgKICAgIGEgdGltZW91dCB3aWxsIGVtdWxhdGUgdGhhdCBmdW5jdGlvbidzIGJlaGF2aW9yIHVzaW5nIGEgc2xlZXBpbmcgbG9vcC4KIApAQCAtOTE1LDEwICs5NjksMTEgQEAKIEl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBzaGFyZWQgb2JqZWN0cyB1c2luZyBzaGFyZWQgbWVtb3J5IHdoaWNoIGNhbiBiZQogaW5oZXJpdGVkIGJ5IGNoaWxkIHByb2Nlc3Nlcy4KIAotLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJnc1ssIGxvY2tdKQorLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1UcnVlKQogCiAgICBSZXR1cm4gYSA6bW9kOmBjdHlwZXNgIG9iamVjdCBhbGxvY2F0ZWQgZnJvbSBzaGFyZWQgbWVtb3J5LiAgQnkgZGVmYXVsdCB0aGUKLSAgIHJldHVybiB2YWx1ZSBpcyBhY3R1YWxseSBhIHN5bmNocm9uaXplZCB3cmFwcGVyIGZvciB0aGUgb2JqZWN0LgorICAgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGEgc3luY2hyb25pemVkIHdyYXBwZXIgZm9yIHRoZSBvYmplY3QuICBUaGUgb2JqZWN0CisgICBpdHNlbGYgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgKnZhbHVlKiBhdHRyaWJ1dGUgb2YgYSA6Y2xhc3M6YFZhbHVlYC4KIAogICAgKnR5cGVjb2RlX29yX3R5cGUqIGRldGVybWluZXMgdGhlIHR5cGUgb2YgdGhlIHJldHVybmVkIG9iamVjdDogaXQgaXMgZWl0aGVyIGEKICAgIGN0eXBlcyB0eXBlIG9yIGEgb25lIGNoYXJhY3RlciB0eXBlY29kZSBvZiB0aGUga2luZCB1c2VkIGJ5IHRoZSA6bW9kOmBhcnJheWAKQEAgLTEwMDcsNyArMTA2Miw3IEBACiAgICBhdHRyaWJ1dGVzIHdoaWNoIGFsbG93IG9uZSB0byB1c2UgaXQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIHN0cmluZ3MgLS0gc2VlCiAgICBkb2N1bWVudGF0aW9uIGZvciA6bW9kOmBjdHlwZXNgLgogCi0uLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSkKIAogICAgVGhlIHNhbWUgYXMgOmZ1bmM6YFJhd0FycmF5YCBleGNlcHQgdGhhdCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mICpsb2NrKiBhCiAgICBwcm9jZXNzLXNhZmUgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgbWF5IGJlIHJldHVybmVkIGluc3RlYWQgb2YgYSByYXcgY3R5cGVzCkBAIC0xMDIyLDcgKzEwNzcsNyBAQAogCiAgICBOb3RlIHRoYXQgKmxvY2sqIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50LgogCi0uLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpCiAKICAgIFRoZSBzYW1lIGFzIDpmdW5jOmBSYXdWYWx1ZWAgZXhjZXB0IHRoYXQgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiAqbG9jayogYQogICAgcHJvY2Vzcy1zYWZlIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIG1heSBiZSByZXR1cm5lZCBpbnN0ZWFkIG9mIGEgcmF3IGN0eXBlcwpAQCAtMTEyNCw4ICsxMTc5LDEwIEBACiB+fn5+fn5+fgogCiBNYW5hZ2VycyBwcm92aWRlIGEgd2F5IHRvIGNyZWF0ZSBkYXRhIHdoaWNoIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBkaWZmZXJlbnQKLXByb2Nlc3Nlcy4gQSBtYW5hZ2VyIG9iamVjdCBjb250cm9scyBhIHNlcnZlciBwcm9jZXNzIHdoaWNoIG1hbmFnZXMgKnNoYXJlZAotb2JqZWN0cyouICBPdGhlciBwcm9jZXNzZXMgY2FuIGFjY2VzcyB0aGUgc2hhcmVkIG9iamVjdHMgYnkgdXNpbmcgcHJveGllcy4KK3Byb2Nlc3NlcywgaW5jbHVkaW5nIHNoYXJpbmcgb3ZlciBhIG5ldHdvcmsgYmV0d2VlbiBwcm9jZXNzZXMgcnVubmluZyBvbgorZGlmZmVyZW50IG1hY2hpbmVzLiBBIG1hbmFnZXIgb2JqZWN0IGNvbnRyb2xzIGEgc2VydmVyIHByb2Nlc3Mgd2hpY2ggbWFuYWdlcworKnNoYXJlZCBvYmplY3RzKi4gIE90aGVyIHByb2Nlc3NlcyBjYW4gYWNjZXNzIHRoZSBzaGFyZWQgb2JqZWN0cyBieSB1c2luZworcHJveGllcy4KIAogLi4gZnVuY3Rpb246OiBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcigpCiAKQEAgLTExOTgsOSArMTI1NSwxMCBAQAogICAgICAgdHlwZSBvZiBzaGFyZWQgb2JqZWN0LiAgVGhpcyBtdXN0IGJlIGEgc3RyaW5nLgogCiAgICAgICAqY2FsbGFibGUqIGlzIGEgY2FsbGFibGUgdXNlZCBmb3IgY3JlYXRpbmcgb2JqZWN0cyBmb3IgdGhpcyB0eXBlCi0gICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUKLSAgICAgIDptZXRoOmBmcm9tX2FkZHJlc3NgIGNsYXNzbWV0aG9kIG9yIGlmIHRoZSAqY3JlYXRlX21ldGhvZCogYXJndW1lbnQgaXMKLSAgICAgIGBgRmFsc2VgYCB0aGVuIHRoaXMgY2FuIGJlIGxlZnQgYXMgYGBOb25lYGAuCisgICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY29ubmVjdGVkIHRvIHRoZQorICAgICAgc2VydmVyIHVzaW5nIHRoZSA6bWV0aDpgY29ubmVjdGAgbWV0aG9kLCBvciBpZiB0aGUKKyAgICAgICpjcmVhdGVfbWV0aG9kKiBhcmd1bWVudCBpcyBgYEZhbHNlYGAgdGhlbiB0aGlzIGNhbiBiZSBsZWZ0IGFzCisgICAgICBgYE5vbmVgYC4KIAogICAgICAgKnByb3h5dHlwZSogaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEJhc2VQcm94eWAgd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUKICAgICAgIHByb3hpZXMgZm9yIHNoYXJlZCBvYmplY3RzIHdpdGggdGhpcyAqdHlwZWlkKi4gIElmIGBgTm9uZWBgIHRoZW4gYSBwcm94eQpAQCAtMTIzMiw2ICsxMjkwLDE0IEBACiAKICAgICAgIFRoZSBhZGRyZXNzIHVzZWQgYnkgdGhlIG1hbmFnZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBNYW5hZ2VyIG9iamVjdHMgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHN0YXJ0cyB0aGUgc2VydmVyCisgICAgICBwcm9jZXNzIChpZiBpdCBoYXMgbm90IGFscmVhZHkgc3RhcnRlZCkgYW5kIHRoZW4gcmV0dXJucyB0aGUKKyAgICAgIG1hbmFnZXIgb2JqZWN0LiAgOm1ldGg6YF9fZXhpdF9fYCBjYWxscyA6bWV0aDpgc2h1dGRvd25gLgorCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucyA6bWV0aDpgX19lbnRlcl9fYCBkaWQgbm90IHN0YXJ0IHRoZQorICAgICAgbWFuYWdlcidzIHNlcnZlciBwcm9jZXNzIGlmIGl0IHdhcyBub3QgYWxyZWFkeSBzdGFydGVkLgogCiAuLiBjbGFzczo6IFN5bmNNYW5hZ2VyCiAKQEAgLTEyNDEsNiArMTMwNywxMyBAQAogCiAgICBJdCBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgogCisgICAuLiBtZXRob2Q6OiBCYXJyaWVyKHBhcnRpZXNbLCBhY3Rpb25bLCB0aW1lb3V0XV0pCisKKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYCBvYmplY3QgYW5kIHJldHVybiBhCisgICAgICBwcm94eSBmb3IgaXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiBCb3VuZGVkU2VtYXBob3JlKFt2YWx1ZV0pCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYCBvYmplY3QgYW5kIHJldHVybiBhCkBAIC0xMjU0LDYgKzEzMjcsOSBAQAogICAgICAgSWYgKmxvY2sqIGlzIHN1cHBsaWVkIHRoZW4gaXQgc2hvdWxkIGJlIGEgcHJveHkgZm9yIGEKICAgICAgIDpjbGFzczpgdGhyZWFkaW5nLkxvY2tgIG9yIDpjbGFzczpgdGhyZWFkaW5nLlJMb2NrYCBvYmplY3QuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAgICAuLiBtZXRob2Q6OiBFdmVudCgpCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCkBAIC0xMzU5LDExICsxNDM1LDEwIEBACiAgICBNeU1hbmFnZXIucmVnaXN0ZXIoJ01hdGhzJywgTWF0aHNDbGFzcykKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKLSAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKLSAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQotICAgICAgIHByaW50KG1hdGhzLmFkZCg0LCAzKSkgICAgICAgICAjIHByaW50cyA3Ci0gICAgICAgcHJpbnQobWF0aHMubXVsKDcsIDgpKSAgICAgICAgICMgcHJpbnRzIDU2CisgICAgICAgd2l0aCBNeU1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQorICAgICAgICAgICBwcmludChtYXRocy5hZGQoNCwgMykpICAgICAgICAgIyBwcmludHMgNworICAgICAgICAgICBwcmludChtYXRocy5tdWwoNywgOCkpICAgICAgICAgIyBwcmludHMgNTYKIAogCiBVc2luZyBhIHJlbW90ZSBtYW5hZ2VyCkBAIC0xNTYzLDcgKzE2MzgsNyBAQAogT25lIGNhbiBjcmVhdGUgYSBwb29sIG9mIHByb2Nlc3NlcyB3aGljaCB3aWxsIGNhcnJ5IG91dCB0YXNrcyBzdWJtaXR0ZWQgdG8gaXQKIHdpdGggdGhlIDpjbGFzczpgUG9vbGAgY2xhc3MuCiAKLS4uIGNsYXNzOjogbXVsdGlwcm9jZXNzaW5nLlBvb2woW3Byb2Nlc3Nlc1ssIGluaXRpYWxpemVyWywgaW5pdGFyZ3NbLCBtYXh0YXNrc3BlcmNoaWxkXV1dXSkKKy4uIGNsYXNzOjogUG9vbChbcHJvY2Vzc2VzWywgaW5pdGlhbGl6ZXJbLCBpbml0YXJnc1ssIG1heHRhc2tzcGVyY2hpbGRdXV1dKQogCiAgICBBIHByb2Nlc3MgcG9vbCBvYmplY3Qgd2hpY2ggY29udHJvbHMgYSBwb29sIG9mIHdvcmtlciBwcm9jZXNzZXMgdG8gd2hpY2ggam9icwogICAgY2FuIGJlIHN1Ym1pdHRlZC4gIEl0IHN1cHBvcnRzIGFzeW5jaHJvbm91cyByZXN1bHRzIHdpdGggdGltZW91dHMgYW5kCkBAIC0xNjU4LDYgKzE3MzMsMjQgQEAKICAgICAgIHJldHVybmVkIGl0ZXJhdG9yIHNob3VsZCBiZSBjb25zaWRlcmVkIGFyYml0cmFyeS4gIChPbmx5IHdoZW4gdGhlcmUgaXMKICAgICAgIG9ubHkgb25lIHdvcmtlciBwcm9jZXNzIGlzIHRoZSBvcmRlciBndWFyYW50ZWVkIHRvIGJlICJjb3JyZWN0Ii4pCiAKKyAgIC4uIG1ldGhvZDo6IHN0YXJtYXAoZnVuYywgaXRlcmFibGVbLCBjaHVua3NpemVdKQorCisgICAgICBMaWtlIDptZXRoOmBtYXBgIGV4Y2VwdCB0aGF0IHRoZSBlbGVtZW50cyBvZiB0aGUgYGl0ZXJhYmxlYCBhcmUgZXhwZWN0ZWQKKyAgICAgIHRvIGJlIGl0ZXJhYmxlcyB0aGF0IGFyZSB1bnBhY2tlZCBhcyBhcmd1bWVudHMuCisKKyAgICAgIEhlbmNlIGFuIGBpdGVyYWJsZWAgb2YgYFsoMSwyKSwgKDMsIDQpXWAgcmVzdWx0cyBpbiBgW2Z1bmMoMSwyKSwKKyAgICAgIGZ1bmMoMyw0KV1gLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogc3Rhcm1hcF9hc3luYyhmdW5jLCBpdGVyYWJsZVssIGNodW5rc2l6ZVssIGNhbGxiYWNrWywgZXJyb3JfYmFja11dXSkKKworICAgICAgQSBjb21iaW5hdGlvbiBvZiA6bWV0aDpgc3Rhcm1hcGAgYW5kIDptZXRoOmBtYXBfYXN5bmNgIHRoYXQgaXRlcmF0ZXMgb3ZlcgorICAgICAgYGl0ZXJhYmxlYCBvZiBpdGVyYWJsZXMgYW5kIGNhbGxzIGBmdW5jYCB3aXRoIHRoZSBpdGVyYWJsZXMgdW5wYWNrZWQuCisgICAgICBSZXR1cm5zIGEgcmVzdWx0IG9iamVjdC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAogICAgICAgUHJldmVudHMgYW55IG1vcmUgdGFza3MgZnJvbSBiZWluZyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wuICBPbmNlIGFsbCB0aGUKQEAgLTE2NzQsNiArMTc2NywxMSBAQAogICAgICAgV2FpdCBmb3IgdGhlIHdvcmtlciBwcm9jZXNzZXMgdG8gZXhpdC4gIE9uZSBtdXN0IGNhbGwgOm1ldGg6YGNsb3NlYCBvcgogICAgICAgOm1ldGg6YHRlcm1pbmF0ZWAgYmVmb3JlIHVzaW5nIDptZXRoOmBqb2luYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBQb29sIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAtLSBzZWUKKyAgICAgIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAuICA6bWV0aDpgX19lbnRlcl9fYCByZXR1cm5zIHRoZSBwb29sCisgICAgICBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmB0ZXJtaW5hdGVgLgorCiAKIC4uIGNsYXNzOjogQXN5bmNSZXN1bHQKIApAQCAtMTcwOCwyMSArMTgwNiwyMCBAQAogICAgICAgIHJldHVybiB4KngKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBwb29sID0gUG9vbChwcm9jZXNzZXM9NCkgICAgICAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgd2l0aCBQb29sKHByb2Nlc3Nlcz00KSBhcyBwb29sOiAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmMoZiwgKDEwLCkpICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdwogCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCAoMTAsKSkgICAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CisgICAgICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKIAotICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgorICAgICAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCisgICAgICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIwIgorICAgICAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMSIKKyAgICAgICAgICAgcHJpbnQoaXQubmV4dCh0aW1lb3V0PTEpKSAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CiAKLSAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCi0gICAgICAgcHJpbnQobmV4dChpdCkpICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMCIKLSAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIxIgotICAgICAgIHByaW50KGl0Lm5leHQodGltZW91dD0xKSkgICAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93Ci0KLSAgICAgICBpbXBvcnQgdGltZQotICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmModGltZS5zbGVlcCwgKDEwLCkpCi0gICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgICAjIHJhaXNlcyBUaW1lb3V0RXJyb3IKKyAgICAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyh0aW1lLnNsZWVwLCAoMTAsKSkKKyAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgIyByYWlzZXMgVGltZW91dEVycm9yCiAKIAogLi4gX211bHRpcHJvY2Vzc2luZy1saXN0ZW5lcnMtY2xpZW50czoKQEAgLTE3MzgsOCArMTgzNSw5IEBACiAKIEhvd2V2ZXIsIHRoZSA6bW9kOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbmAgbW9kdWxlIGFsbG93cyBzb21lIGV4dHJhCiBmbGV4aWJpbGl0eS4gIEl0IGJhc2ljYWxseSBnaXZlcyBhIGhpZ2ggbGV2ZWwgbWVzc2FnZSBvcmllbnRlZCBBUEkgZm9yIGRlYWxpbmcKLXdpdGggc29ja2V0cyBvciBXaW5kb3dzIG5hbWVkIHBpcGVzLCBhbmQgYWxzbyBoYXMgc3VwcG9ydCBmb3IgKmRpZ2VzdAotYXV0aGVudGljYXRpb24qIHVzaW5nIHRoZSA6bW9kOmBobWFjYCBtb2R1bGUuCit3aXRoIHNvY2tldHMgb3IgV2luZG93cyBuYW1lZCBwaXBlcy4gIEl0IGFsc28gaGFzIHN1cHBvcnQgZm9yICpkaWdlc3QKK2F1dGhlbnRpY2F0aW9uKiB1c2luZyB0aGUgOm1vZDpgaG1hY2AgbW9kdWxlLCBhbmQgZm9yIHBvbGxpbmcKK211bHRpcGxlIGNvbm5lY3Rpb25zIGF0IHRoZSBzYW1lIHRpbWUuCiAKIAogLi4gZnVuY3Rpb246OiBkZWxpdmVyX2NoYWxsZW5nZShjb25uZWN0aW9uLCBhdXRoa2V5KQpAQCAtMTc0OSwxNSArMTg0NywxNSBAQAogCiAgICBJZiB0aGUgcmVwbHkgbWF0Y2hlcyB0aGUgZGlnZXN0IG9mIHRoZSBtZXNzYWdlIHVzaW5nICphdXRoa2V5KiBhcyB0aGUga2V5CiAgICB0aGVuIGEgd2VsY29tZSBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbi4gIE90aGVyd2lzZQotICAgOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogYW5zd2VyQ2hhbGxlbmdlKGNvbm5lY3Rpb24sIGF1dGhrZXkpCiAKICAgIFJlY2VpdmUgYSBtZXNzYWdlLCBjYWxjdWxhdGUgdGhlIGRpZ2VzdCBvZiB0aGUgbWVzc2FnZSB1c2luZyAqYXV0aGtleSogYXMgdGhlCiAgICBrZXksIGFuZCB0aGVuIHNlbmQgdGhlIGRpZ2VzdCBiYWNrLgogCi0gICBJZiBhIHdlbGNvbWUgbWVzc2FnZSBpcyBub3QgcmVjZWl2ZWQsIHRoZW4gOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMKLSAgIHJhaXNlZC4KKyAgIElmIGEgd2VsY29tZSBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCwgdGhlbgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogQ2xpZW50KGFkZHJlc3NbLCBmYW1pbHlbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dKQogCkBAIC0xNzcxLDcgKzE4NjksOCBAQAogICAgSWYgKmF1dGhlbnRpY2F0ZSogaXMgYGBUcnVlYGAgb3IgKmF1dGhrZXkqIGlzIGEgYnl0ZSBzdHJpbmcgdGhlbiBkaWdlc3QKICAgIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQuICBUaGUga2V5IHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uIHdpbGwgYmUgZWl0aGVyCiAgICAqYXV0aGtleSogb3IgYGBjdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5YGAgaWYgKmF1dGhrZXkqIGlzIGBgTm9uZWBgLgotICAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuICBTZWUKKyAgIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLiAgU2VlCiAgICA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KIAogLi4gY2xhc3M6OiBMaXN0ZW5lcihbYWRkcmVzc1ssIGZhbWlseVssIGJhY2tsb2dbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dXV0pCkBAIC0xODEyLDEzICsxOTExLDE1IEBACiAgICBgYGN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXlgYCBpcyB1c2VkIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkuICBJZgogICAgKmF1dGhrZXkqIGlzIGBgTm9uZWBgIGFuZCAqYXV0aGVudGljYXRlKiBpcyBgYEZhbHNlYGAgdGhlbiBubwogICAgYXV0aGVudGljYXRpb24gaXMgZG9uZS4gIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KLSAgIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4gIFNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCiAgICAuLiBtZXRob2Q6OiBhY2NlcHQoKQogCiAgICAgICBBY2NlcHQgYSBjb25uZWN0aW9uIG9uIHRoZSBib3VuZCBzb2NrZXQgb3IgbmFtZWQgcGlwZSBvZiB0aGUgbGlzdGVuZXIKICAgICAgIG9iamVjdCBhbmQgcmV0dXJuIGEgOmNsYXNzOmBDb25uZWN0aW9uYCBvYmplY3QuICBJZiBhdXRoZW50aWNhdGlvbiBpcwotICAgICAgYXR0ZW1wdGVkIGFuZCBmYWlscywgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICAgICBhdHRlbXB0ZWQgYW5kIGZhaWxzLCB0aGVuCisgICAgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC0xODM3LDEyICsxOTM4LDQ0IEBACiAgICAgICBUaGUgYWRkcmVzcyBmcm9tIHdoaWNoIHRoZSBsYXN0IGFjY2VwdGVkIGNvbm5lY3Rpb24gY2FtZS4gIElmIHRoaXMgaXMKICAgICAgIHVuYXZhaWxhYmxlIHRoZW4gaXQgaXMgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgTGlzdGVuZXIgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBsaXN0ZW5lciBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmBjbG9zZWAuCiAKLVRoZSBtb2R1bGUgZGVmaW5lcyB0d28gZXhjZXB0aW9uczoKKy4uIGZ1bmN0aW9uOjogd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKQogCi0uLiBleGNlcHRpb246OiBBdXRoZW50aWNhdGlvbkVycm9yCisgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluICpvYmplY3RfbGlzdCogaXMgcmVhZHkuICBSZXR1cm5zIHRoZSBsaXN0IG9mCisgICB0aG9zZSBvYmplY3RzIGluICpvYmplY3RfbGlzdCogd2hpY2ggYXJlIHJlYWR5LiAgSWYgKnRpbWVvdXQqIGlzIGEKKyAgIGZsb2F0IHRoZW4gdGhlIGNhbGwgYmxvY2tzIGZvciBhdCBtb3N0IHRoYXQgbWFueSBzZWNvbmRzLiAgSWYKKyAgICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIGl0IHdpbGwgYmxvY2sgZm9yIGFuIHVubGltaXRlZCBwZXJpb2QuCisgICBBIG5lZ2F0aXZlIHRpbWVvdXQgaXMgZXF1aXZhbGVudCB0byBhIHplcm8gdGltZW91dC4KIAotICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHRoZXJlIGlzIGFuIGF1dGhlbnRpY2F0aW9uIGVycm9yLgorICAgRm9yIGJvdGggVW5peCBhbmQgV2luZG93cywgYW4gb2JqZWN0IGNhbiBhcHBlYXIgaW4gKm9iamVjdF9saXN0KiBpZgorICAgaXQgaXMKKworICAgKiBhIHJlYWRhYmxlIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCBvYmplY3Q7CisgICAqIGEgY29ubmVjdGVkIGFuZCByZWFkYWJsZSA6Y2xhc3M6YHNvY2tldC5zb2NrZXRgIG9iamVjdDsgb3IKKyAgICogdGhlIDphdHRyOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3Muc2VudGluZWxgIGF0dHJpYnV0ZSBvZiBhCisgICAgIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYCBvYmplY3QuCisKKyAgIEEgY29ubmVjdGlvbiBvciBzb2NrZXQgb2JqZWN0IGlzIHJlYWR5IHdoZW4gdGhlcmUgaXMgZGF0YSBhdmFpbGFibGUKKyAgIHRvIGJlIHJlYWQgZnJvbSBpdCwgb3IgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQuCisKKyAgICoqVW5peCoqOiBgYHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQpYGAgYWxtb3N0IGVxdWl2YWxlbnQKKyAgIGBgc2VsZWN0LnNlbGVjdChvYmplY3RfbGlzdCwgW10sIFtdLCB0aW1lb3V0KWBgLiAgVGhlIGRpZmZlcmVuY2UgaXMKKyAgIHRoYXQsIGlmIDpmdW5jOmBzZWxlY3Quc2VsZWN0YCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaXQgY2FuCisgICByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aXRoIGFuIGVycm9yIG51bWJlciBvZiBgYEVJTlRSYGAsIHdoZXJlYXMKKyAgIDpmdW5jOmB3YWl0YCB3aWxsIG5vdC4KKworICAgKipXaW5kb3dzKio6IEFuIGl0ZW0gaW4gKm9iamVjdF9saXN0KiBtdXN0IGVpdGhlciBiZSBhbiBpbnRlZ2VyCisgICBoYW5kbGUgd2hpY2ggaXMgd2FpdGFibGUgKGFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IHRoZQorICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgV2luMzIgZnVuY3Rpb24gYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKClgYCkKKyAgIG9yIGl0IGNhbiBiZSBhbiBvYmplY3Qgd2l0aCBhIDptZXRoOmBmaWxlbm9gIG1ldGhvZCB3aGljaCByZXR1cm5zIGEKKyAgIHNvY2tldCBoYW5kbGUgb3IgcGlwZSBoYW5kbGUuICAoTm90ZSB0aGF0IHBpcGUgaGFuZGxlcyBhbmQgc29ja2V0CisgICBoYW5kbGVzIGFyZSAqKm5vdCoqIHdhaXRhYmxlIGhhbmRsZXMuKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAqKkV4YW1wbGVzKioKQEAgLTE4NTUsMTkgKzE5ODgsMTYgQEAKICAgIGZyb20gYXJyYXkgaW1wb3J0IGFycmF5CiAKICAgIGFkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsIDYwMDApICAgICAjIGZhbWlseSBpcyBkZWR1Y2VkIHRvIGJlICdBRl9JTkVUJwotICAgbGlzdGVuZXIgPSBMaXN0ZW5lcihhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykKIAotICAgY29ubiA9IGxpc3RlbmVyLmFjY2VwdCgpCi0gICBwcmludCgnY29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tJywgbGlzdGVuZXIubGFzdF9hY2NlcHRlZCkKKyAgIHdpdGggTGlzdGVuZXIoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpIGFzIGxpc3RlbmVyOgorICAgICAgIHdpdGggbGlzdGVuZXIuYWNjZXB0KCkgYXMgY29ubjoKKyAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Rpb24gYWNjZXB0ZWQgZnJvbScsIGxpc3RlbmVyLmxhc3RfYWNjZXB0ZWQpCiAKLSAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCisgICAgICAgICAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCiAKLSAgIGNvbm4uc2VuZF9ieXRlcyhiJ2hlbGxvJykKKyAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGInaGVsbG8nKQogCi0gICBjb25uLnNlbmRfYnl0ZXMoYXJyYXkoJ2knLCBbNDIsIDE3MjldKSkKLQotICAgY29ubi5jbG9zZSgpCi0gICBsaXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhhcnJheSgnaScsIFs0MiwgMTcyOV0pKQogCiBUaGUgZm9sbG93aW5nIGNvZGUgY29ubmVjdHMgdG8gdGhlIHNlcnZlciBhbmQgcmVjZWl2ZXMgc29tZSBkYXRhIGZyb20gdGhlCiBzZXJ2ZXI6OgpAQCAtMTg3NiwxNyArMjAwNiw1MCBAQAogICAgZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKIAogICAgYWRkcmVzcyA9ICgnbG9jYWxob3N0JywgNjAwMCkKLSAgIGNvbm4gPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpCiAKLSAgIHByaW50KGNvbm4ucmVjdigpKSAgICAgICAgICAgICAgICAgICMgPT4gWzIuMjUsIE5vbmUsICdqdW5rJywgZmxvYXRdCisgICB3aXRoIENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykgYXMgY29ubjoKKyAgICAgICBwcmludChjb25uLnJlY3YoKSkgICAgICAgICAgICAgICAgICAjID0+IFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XQogCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKKyAgICAgICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKIAotICAgYXJyID0gYXJyYXkoJ2knLCBbMCwgMCwgMCwgMCwgMF0pCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXNfaW50byhhcnIpKSAgICAjID0+IDgKLSAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQorICAgICAgIGFyciA9IGFycmF5KCdpJywgWzAsIDAsIDAsIDAsIDBdKQorICAgICAgIHByaW50KGNvbm4ucmVjdl9ieXRlc19pbnRvKGFycikpICAgICMgPT4gOAorICAgICAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQogCi0gICBjb25uLmNsb3NlKCkKK1RoZSBmb2xsb3dpbmcgY29kZSB1c2VzIDpmdW5jOmB+bXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAgdG8KK3dhaXQgZm9yIG1lc3NhZ2VzIGZyb20gbXVsdGlwbGUgcHJvY2Vzc2VzIGF0IG9uY2U6OgorCisgICBpbXBvcnQgdGltZSwgcmFuZG9tCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgUGlwZSwgY3VycmVudF9wcm9jZXNzCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgIGRlZiBmb28odyk6CisgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICB3LnNlbmQoKGksIGN1cnJlbnRfcHJvY2VzcygpLm5hbWUpKQorICAgICAgIHcuY2xvc2UoKQorCisgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICAgIHJlYWRlcnMgPSBbXQorCisgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgIHIsIHcgPSBQaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWZvbywgYXJncz0odywpKQorICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIyBXZSBjbG9zZSB0aGUgd3JpdGFibGUgZW5kIG9mIHRoZSBwaXBlIG5vdyB0byBiZSBzdXJlIHRoYXQKKyAgICAgICAgICAgIyBwIGlzIHRoZSBvbmx5IHByb2Nlc3Mgd2hpY2ggb3ducyBhIGhhbmRsZSBmb3IgaXQuICBUaGlzCisgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IHdoZW4gcCBjbG9zZXMgaXRzIGhhbmRsZSBmb3IgdGhlIHdyaXRhYmxlIGVuZCwKKyAgICAgICAgICAgIyB3YWl0KCkgd2lsbCBwcm9tcHRseSByZXBvcnQgdGhlIHJlYWRhYmxlIGVuZCBhcyBiZWluZyByZWFkeS4KKyAgICAgICAgICAgdy5jbG9zZSgpCisKKyAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogCiAKIC4uIF9tdWx0aXByb2Nlc3NpbmctYWRkcmVzcy1mb3JtYXRzOgpAQCAtMjA0Nyw3ICsyMjEwLDcgQEAKIAogICAgIEl0IGlzIHByb2JhYmx5IGJlc3QgdG8gc3RpY2sgdG8gdXNpbmcgcXVldWVzIG9yIHBpcGVzIGZvciBjb21tdW5pY2F0aW9uCiAgICAgYmV0d2VlbiBwcm9jZXNzZXMgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGxvd2VyIGxldmVsIHN5bmNocm9uaXphdGlvbgotICAgIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUuCisgICAgcHJpbWl0aXZlcy4KIAogUGlja2xhYmlsaXR5CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L25udHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKaW5kZXggMjQ3ZWZiNy4uODdhNTBiMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKQEAgLTcwLDEwICs3MCwyMyBAQAogICAgY29ubmVjdGluZyB0byBhbiBOTlRQIHNlcnZlciBvbiB0aGUgbG9jYWwgbWFjaGluZSBhbmQgaW50ZW5kIHRvIGNhbGwKICAgIHJlYWRlci1zcGVjaWZpYyBjb21tYW5kcywgc3VjaCBhcyBgYGdyb3VwYGAuICBJZiB5b3UgZ2V0IHVuZXhwZWN0ZWQKICAgIDpleGM6YE5OVFBQZXJtYW5lbnRFcnJvcmBcIHMsIHlvdSBtaWdodCBuZWVkIHRvIHNldCAqcmVhZGVybW9kZSouCisgICA6Y2xhc3M6YE5OVFBgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHRvCisgICB1bmNvbmRpdGlvbmFsbHkgY29uc3VtZSA6ZXhjOmBzb2NrZXQuZXJyb3JgIGV4Y2VwdGlvbnMgYW5kIHRvIGNsb3NlIHRoZSBOTlRQCisgICBjb25uZWN0aW9uIHdoZW4gZG9uZS4gSGVyZSBpcyBhIHNhbXBsZSBvbiBob3cgdXNpbmcgaXQ6CisKKyAgICA+Pj4gZnJvbSBubnRwbGliIGltcG9ydCBOTlRQCisgICAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAgIC4uLiAgICAgbi5ncm91cCgnZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycpCisgICAgLi4uCisgICAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgICA+Pj4KKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKnVzZW5ldHJjKiBpcyBub3cgRmFsc2UgYnkgZGVmYXVsdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAogLi4gY2xhc3M6OiBOTlRQX1NTTChob3N0LCBwb3J0PTU2MywgdXNlcj1Ob25lLCBwYXNzd29yZD1Ob25lLCBzc2xfY29udGV4dD1Ob25lLCByZWFkZXJtb2RlPU5vbmUsIHVzZW5ldHJjPUZhbHNlLCBbdGltZW91dF0pCiAKQEAgLTUwNCw2ICs1MTcsOSBAQAogICAgYXJ0aWNsZSB3aXRoIG1lc3NhZ2UgSUQgKmlkKi4gIE1vc3Qgb2YgdGhlIHRpbWUsIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdAogICAgZW5hYmxlZCBieSBOTlRQIHNlcnZlciBhZG1pbmlzdHJhdG9ycy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhlIFhQQVRIIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZC4KKwogCiAuLiBYWFggZGVwcmVjYXRlZDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbnVtZXJpYy5yc3QgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAppbmRleCBiYTIyY2I2Li4yNzMyYTg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAorKysgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdApAQCAtOCw5ICs4LDkgQEAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBudW1lcmljIGFuZCBtYXRoLXJlbGF0ZWQgZnVuY3Rpb25zCiBhbmQgZGF0YSB0eXBlcy4gVGhlIDptb2Q6YG51bWJlcnNgIG1vZHVsZSBkZWZpbmVzIGFuIGFic3RyYWN0IGhpZXJhcmNoeSBvZgogbnVtZXJpYyB0eXBlcy4gVGhlIDptb2Q6YG1hdGhgIGFuZCA6bW9kOmBjbWF0aGAgbW9kdWxlcyBjb250YWluIHZhcmlvdXMKLW1hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIEZvciB1c2VycyBtb3JlCi1pbnRlcmVzdGVkIGluIGRlY2ltYWwgYWNjdXJhY3kgdGhhbiBpbiBzcGVlZCwgdGhlIDptb2Q6YGRlY2ltYWxgIG1vZHVsZSBzdXBwb3J0cwotZXhhY3QgcmVwcmVzZW50YXRpb25zIG9mIGRlY2ltYWwgbnVtYmVycy4KK21hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIFRoZSA6bW9kOmBkZWNpbWFsYAorbW9kdWxlIHN1cHBvcnRzIGV4YWN0IHJlcHJlc2VudGF0aW9ucyBvZiBkZWNpbWFsIG51bWJlcnMsIHVzaW5nIGFyYml0cmFyeSBwcmVjaXNpb24KK2FyaXRobWV0aWMuCiAKIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgZG9jdW1lbnRlZCBpbiB0aGlzIGNoYXB0ZXI6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggMjE0ZTI3Yy4uMjBhODRiNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTcwLDExICs3MCwxNiBAQAogCiAuLiBmdW5jdGlvbjo6IGV4aXN0cyhwYXRoKQogCi0gICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhbiBleGlzdGluZyBwYXRoLiAgUmV0dXJucyBgYEZhbHNlYGAgZm9yCi0gICBicm9rZW4gc3ltYm9saWMgbGlua3MuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmCi0gICBwZXJtaXNzaW9uIGlzIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgcGF0aCBvciBhbiBvcGVuCisgICBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGBgRmFsc2VgYCBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzLiAgT24KKyAgIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmIHBlcm1pc3Npb24gaXMKKyAgIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgogICAgaWYgdGhlICpwYXRoKiBwaHlzaWNhbGx5IGV4aXN0cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpwYXRoKiBjYW4gbm93IGJlIGFuIGludGVnZXI6IGBgVHJ1ZWBgIGlzIHJldHVybmVkIGlmIGl0IGlzIGFuCisgICAgICAgb3BlbiBmaWxlIGRlc2NyaXB0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKIAogLi4gZnVuY3Rpb246OiBsZXhpc3RzKHBhdGgpCiAKQEAgLTI1NCw3ICsyNTksOCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBzYW1lc3RhdChzdGF0MSwgc3RhdDIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggNDEwZTAzYS4uMmU0NWRlMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtOTYsNiArOTYsMTMgQEAKIHByb2Nlc3MgYW5kIHVzZXIuCiAKIAorLi4gZnVuY3Rpb246OiBjdGVybWlkKCkKKworICAgUmV0dXJuIHRoZSBmaWxlbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZiB0aGUgcHJvY2Vzcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisKIC4uIGRhdGE6OiBlbnZpcm9uCiAKICAgIEEgbWFwcGluZyBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLApAQCAtMTc3LDYgKzE4NCwyOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gZnVuY3Rpb246OiBnZXRlbnYoa2V5LCBkZWZhdWx0PU5vbmUpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKKyAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBzdHIuCisKKyAgIE9uIFVuaXgsIGtleXMgYW5kIHZhbHVlcyBhcmUgZGVjb2RlZCB3aXRoIDpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYAorICAgYW5kIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLiBVc2UgOmZ1bmM6YG9zLmdldGVudmJgIGlmIHlvdQorICAgd291bGQgbGlrZSB0byB1c2UgYSBkaWZmZXJlbnQgZW5jb2RpbmcuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXgsIFdpbmRvd3MuCisKKworLi4gZnVuY3Rpb246OiBnZXRlbnZiKGtleSwgZGVmYXVsdD1Ob25lKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCisgICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgYnl0ZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisKIC4uIGZ1bmN0aW9uOjogZ2V0X2V4ZWNfcGF0aChlbnY9Tm9uZSkKIAogICAgUmV0dXJucyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGEgbmFtZWQKQEAgLTE4OCwxMyArMjE3LDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGZ1bmN0aW9uOjogY3Rlcm1pZCgpCi0KLSAgIFJldHVybiB0aGUgZmlsZW5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgb2YgdGhlIHByb2Nlc3MuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotCiAuLiBmdW5jdGlvbjo6IGdldGVnaWQoKQogCiAgICBSZXR1cm4gdGhlIGVmZmVjdGl2ZSBncm91cCBpZCBvZiB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUKQEAgLTIyMSw2ICsyNDMsMTcgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCisuLiBmdW5jdGlvbjo6IGdldGdyb3VwbGlzdCh1c2VyLCBncm91cCkKKworICAgUmV0dXJuIGxpc3Qgb2YgZ3JvdXAgaWRzIHRoYXQgKnVzZXIqIGJlbG9uZ3MgdG8uIElmICpncm91cCogaXMgbm90IGluIHRoZQorICAgbGlzdCwgaXQgaXMgaW5jbHVkZWQ7IHR5cGljYWxseSwgKmdyb3VwKiBpcyBzcGVjaWZpZWQgYXMgdGhlIGdyb3VwIElECisgICBmaWVsZCBmcm9tIHRoZSBwYXNzd29yZCByZWNvcmQgZm9yICp1c2VyKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGdldGdyb3VwcygpCiAKICAgIFJldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBpZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MuCkBAIC0yNDIsMTcgKzI3NSw2IEBACiAgICAgICBvYnRhaW5lZCB3aXRoIDpmdW5jOmBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJgLgogCiAKLS4uIGZ1bmN0aW9uOjogaW5pdGdyb3Vwcyh1c2VybmFtZSwgZ2lkKQotCi0gICBDYWxsIHRoZSBzeXN0ZW0gaW5pdGdyb3VwcygpIHRvIGluaXRpYWxpemUgdGhlIGdyb3VwIGFjY2VzcyBsaXN0IHdpdGggYWxsIG9mCi0gICB0aGUgZ3JvdXBzIG9mIHdoaWNoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUgaXMgYSBtZW1iZXIsIHBsdXMgdGhlIHNwZWNpZmllZAotICAgZ3JvdXAgaWQuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLQogLi4gZnVuY3Rpb246OiBnZXRsb2dpbigpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgdXNlciBsb2dnZWQgaW4gb24gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIG9mIHRoZQpAQCAtMjk3LDExICszMTksNDAgQEAKICAgIHRoZSBpZCByZXR1cm5lZCBpcyB0aGUgb25lIG9mIHRoZSBpbml0IHByb2Nlc3MgKDEpLCBvbiBXaW5kb3dzIGl0IGlzIHN0aWxsCiAgICB0aGUgc2FtZSBpZCwgd2hpY2ggbWF5IGJlIGFscmVhZHkgcmV1c2VkIGJ5IGFub3RoZXIgcHJvY2Vzcy4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzLgogCisKKy4uIGZ1bmN0aW9uOjogZ2V0cHJpb3JpdHkod2hpY2gsIHdobykKKworICAgLi4gaW5kZXg6OiBzaW5nbGU6IHByb2Nlc3M7IHNjaGVkdWxpbmcgcHJpb3JpdHkKKworICAgR2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4gIFRoZSB2YWx1ZSAqd2hpY2gqIGlzIG9uZSBvZgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCA6Y29uc3Q6YFBSSU9fUEdSUGAsIG9yIDpjb25zdDpgUFJJT19VU0VSYCwgYW5kICp3aG8qCisgICBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byAqd2hpY2gqIChhIHByb2Nlc3MgaWRlbnRpZmllciBmb3IKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgcHJvY2VzcyBncm91cCBpZGVudGlmaWVyIGZvciA6Y29uc3Q6YFBSSU9fUEdSUGAsIGFuZCBhCisgICB1c2VyIElEIGZvciA6Y29uc3Q6YFBSSU9fVVNFUmApLiAgQSB6ZXJvIHZhbHVlIGZvciAqd2hvKiBkZW5vdGVzCisgICAocmVzcGVjdGl2ZWx5KSB0aGUgY2FsbGluZyBwcm9jZXNzLCB0aGUgcHJvY2VzcyBncm91cCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLAorICAgb3IgdGhlIHJlYWwgdXNlciBJRCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBQUklPX1BST0NFU1MKKyAgICAgICAgICBQUklPX1BHUlAKKyAgICAgICAgICBQUklPX1VTRVIKKworICAgUGFyYW1ldGVycyBmb3IgdGhlIDpmdW5jOmBnZXRwcmlvcml0eWAgYW5kIDpmdW5jOmBzZXRwcmlvcml0eWAgZnVuY3Rpb25zLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ2V0cmVzdWlkKCkKIAogICAgUmV0dXJuIGEgdHVwbGUgKHJ1aWQsIGV1aWQsIHN1aWQpIGRlbm90aW5nIHRoZSBjdXJyZW50IHByb2Nlc3MncwpAQCAtMzMxLDI0ICszODIsMTMgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogaW5pdGdyb3Vwcyh1c2VybmFtZSwgZ2lkKQogCi0gICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCi0gICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgc3RyLgorICAgQ2FsbCB0aGUgc3lzdGVtIGluaXRncm91cHMoKSB0byBpbml0aWFsaXplIHRoZSBncm91cCBhY2Nlc3MgbGlzdCB3aXRoIGFsbCBvZgorICAgdGhlIGdyb3VwcyBvZiB3aGljaCB0aGUgc3BlY2lmaWVkIHVzZXJuYW1lIGlzIGEgbWVtYmVyLCBwbHVzIHRoZSBzcGVjaWZpZWQKKyAgIGdyb3VwIGlkLgogCi0gICBPbiBVbml4LCBrZXlzIGFuZCB2YWx1ZXMgYXJlIGRlY29kZWQgd2l0aCA6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZ2AKLSAgIGFuZCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlci4gVXNlIDpmdW5jOmBvcy5nZXRlbnZiYCBpZiB5b3UKLSAgIHdvdWxkIGxpa2UgdG8gdXNlIGEgZGlmZmVyZW50IGVuY29kaW5nLgotCi0gICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LCBXaW5kb3dzLgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0ZW52YihrZXksIGRlZmF1bHQ9Tm9uZSkKLQotICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKmtleSogaWYgaXQgZXhpc3RzLCBvcgotICAgKmRlZmF1bHQqIGlmIGl0IGRvZXNuJ3QuICprZXkqLCAqZGVmYXVsdCogYW5kIHRoZSByZXN1bHQgYXJlIGJ5dGVzLgotCi0gICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LgorICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtNDEwLDcgKzQ1MCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogc2V0cGdycCgpCiAKLSAgIENhbGwgdGhlIHN5c3RlbSBjYWxsIDpjOmZ1bmM6YHNldHBncnBgIG9yIDpjOmZ1bmM6YHNldHBncnAoMCwgMClgIGRlcGVuZGluZyBvbgorICAgQ2FsbCB0aGUgc3lzdGVtIGNhbGwgOmM6ZnVuYzpgc2V0cGdycGAgb3IgYGBzZXRwZ3JwKDAsIDApYGAgZGVwZW5kaW5nIG9uCiAgICB3aGljaCB2ZXJzaW9uIGlzIGltcGxlbWVudGVkIChpZiBhbnkpLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBmb3IgdGhlIHNlbWFudGljcy4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgpAQCAtNDI1LDYgKzQ2NSwyNSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpb3JpdHkpCisKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBwcm9jZXNzOyBzY2hlZHVsaW5nIHByaW9yaXR5CisKKyAgIFNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIFRoZSB2YWx1ZSAqd2hpY2gqIGlzIG9uZSBvZgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCA6Y29uc3Q6YFBSSU9fUEdSUGAsIG9yIDpjb25zdDpgUFJJT19VU0VSYCwgYW5kICp3aG8qCisgICBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byAqd2hpY2gqIChhIHByb2Nlc3MgaWRlbnRpZmllciBmb3IKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgcHJvY2VzcyBncm91cCBpZGVudGlmaWVyIGZvciA6Y29uc3Q6YFBSSU9fUEdSUGAsIGFuZCBhCisgICB1c2VyIElEIGZvciA6Y29uc3Q6YFBSSU9fVVNFUmApLiBBIHplcm8gdmFsdWUgZm9yICp3aG8qIGRlbm90ZXMKKyAgIChyZXNwZWN0aXZlbHkpIHRoZSBjYWxsaW5nIHByb2Nlc3MsIHRoZSBwcm9jZXNzIGdyb3VwIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MsCisgICBvciB0aGUgcmVhbCB1c2VyIElEIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisgICAqcHJpb3JpdHkqIGlzIGEgdmFsdWUgaW4gdGhlIHJhbmdlIC0yMCB0byAxOS4gVGhlIGRlZmF1bHQgcHJpb3JpdHkgaXMgMDsKKyAgIGxvd2VyIHByaW9yaXRpZXMgY2F1c2UgbW9yZSBmYXZvcmFibGUgc2NoZWR1bGluZy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogc2V0cmVnaWQocmdpZCwgZWdpZCkKIAogICAgU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLgpAQCAtNTExLDE1ICs1NzAsMzEgQEAKICAgICAgIHNpbmdsZTogZ2V0aG9zdG5hbWUoKSAoaW4gbW9kdWxlIHNvY2tldCkKICAgICAgIHNpbmdsZTogZ2V0aG9zdGJ5YWRkcigpIChpbiBtb2R1bGUgc29ja2V0KQogCi0gICBSZXR1cm4gYSA1LXR1cGxlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nCi0gICBzeXN0ZW0uICBUaGUgdHVwbGUgY29udGFpbnMgNSBzdHJpbmdzOiBgYChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwKLSAgIG1hY2hpbmUpYGAuICBTb21lIHN5c3RlbXMgdHJ1bmNhdGUgdGhlIG5vZGVuYW1lIHRvIDggY2hhcmFjdGVycyBvciB0byB0aGUKKyAgIFJldHVybnMgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggZml2ZSBhdHRyaWJ1dGVzOgorCisgICAqIDphdHRyOmBzeXNuYW1lYCAtIG9wZXJhdGluZyBzeXN0ZW0gbmFtZQorICAgKiA6YXR0cjpgbm9kZW5hbWVgIC0gbmFtZSBvZiBtYWNoaW5lIG9uIG5ldHdvcmsgKGltcGxlbWVudGF0aW9uLWRlZmluZWQpCisgICAqIDphdHRyOmByZWxlYXNlYCAtIG9wZXJhdGluZyBzeXN0ZW0gcmVsZWFzZQorICAgKiA6YXR0cjpgdmVyc2lvbmAgLSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24KKyAgICogOmF0dHI6YG1hY2hpbmVgIC0gaGFyZHdhcmUgaWRlbnRpZmllcgorCisgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoaXMgb2JqZWN0IGlzIGFsc28gaXRlcmFibGUsIGJlaGF2aW5nCisgICBsaWtlIGEgZml2ZS10dXBsZSBjb250YWluaW5nIDphdHRyOmBzeXNuYW1lYCwgOmF0dHI6YG5vZGVuYW1lYCwKKyAgIDphdHRyOmByZWxlYXNlYCwgOmF0dHI6YHZlcnNpb25gLCBhbmQgOmF0dHI6YG1hY2hpbmVgCisgICBpbiB0aGF0IG9yZGVyLgorCisgICBTb21lIHN5c3RlbXMgdHJ1bmNhdGUgOmF0dHI6YG5vZGVuYW1lYCB0byA4IGNoYXJhY3RlcnMgb3IgdG8gdGhlCiAgICBsZWFkaW5nIGNvbXBvbmVudDsgYSBiZXR0ZXIgd2F5IHRvIGdldCB0aGUgaG9zdG5hbWUgaXMKICAgIDpmdW5jOmBzb2NrZXQuZ2V0aG9zdG5hbWVgICBvciBldmVuCiAgICBgYHNvY2tldC5nZXRob3N0YnlhZGRyKHNvY2tldC5nZXRob3N0bmFtZSgpKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IHJlY2VudCBmbGF2b3JzIG9mIFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIHR1cGxlLWxpa2Ugb2JqZWN0CisgICAgICB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuCisKIAogLi4gZnVuY3Rpb246OiB1bnNldGVudihrZXkpCiAKQEAgLTU0MiwxNSArNjE3LDE2IEBACiBGaWxlIE9iamVjdCBDcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlc2UgZnVuY3Rpb25zIGNyZWF0ZSBuZXcgOnRlcm06YGZpbGUgb2JqZWN0cyA8ZmlsZSBvYmplY3Q+YC4gKFNlZSBhbHNvIDpmdW5jOmBvcGVuYC4pCitUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgbmV3IDp0ZXJtOmBmaWxlIG9iamVjdHMgPGZpbGUgb2JqZWN0PmAuICAoU2VlIGFsc28KKzpmdW5jOmB+b3Mub3BlbmAgZm9yIG9wZW5pbmcgZmlsZSBkZXNjcmlwdG9ycy4pCiAKIAogLi4gZnVuY3Rpb246OiBmZG9wZW4oZmQsICphcmdzLCAqKmt3YXJncykKIAotICAgUmV0dXJuIGFuIG9wZW4gZmlsZSBvYmplY3QgY29ubmVjdGVkIHRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4KLSAgIFRoaXMgaXMgYW4gYWxpYXMgb2YgOmZ1bmM6YG9wZW5gIGFuZCBhY2NlcHRzIHRoZSBzYW1lIGFyZ3VtZW50cy4KLSAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgb2YgOmZ1bmM6YGZkb3BlbmAKLSAgIG11c3QgYWx3YXlzIGJlIGFuIGludGVnZXIuCisgICBSZXR1cm4gYW4gb3BlbiBmaWxlIG9iamVjdCBjb25uZWN0ZWQgdG8gdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgVGhpcyBpcyBhbgorICAgYWxpYXMgb2YgdGhlIDpmdW5jOmBvcGVuYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYWNjZXB0cyB0aGUgc2FtZSBhcmd1bWVudHMuCisgICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIDpmdW5jOmBmZG9wZW5gIG11c3QgYWx3YXlzCisgICBiZSBhbiBpbnRlZ2VyLgogCiAKIC4uIF9vcy1mZC1vcHM6CkBAIC01NzIsNiArNjQ4LDcgQEAKIGRlc2NyaXB0b3IgZGlyZWN0bHkgd2lsbCBieXBhc3MgdGhlIGZpbGUgb2JqZWN0IG1ldGhvZHMsIGlnbm9yaW5nIGFzcGVjdHMgc3VjaAogYXMgaW50ZXJuYWwgYnVmZmVyaW5nIG9mIGRhdGEuCiAKKwogLi4gZnVuY3Rpb246OiBjbG9zZShmZCkKIAogICAgQ2xvc2UgZmlsZSBkZXNjcmlwdG9yICpmZCouCkBAIC01ODksNyArNjY2LDcgQEAKIC4uIGZ1bmN0aW9uOjogY2xvc2VyYW5nZShmZF9sb3csIGZkX2hpZ2gpCiAKICAgIENsb3NlIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gKmZkX2xvdyogKGluY2x1c2l2ZSkgdG8gKmZkX2hpZ2gqIChleGNsdXNpdmUpLAotICAgaWdub3JpbmcgZXJyb3JzLiBFcXVpdmFsZW50IHRvOjoKKyAgIGlnbm9yaW5nIGVycm9ycy4gRXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOjoKIAogICAgICAgZm9yIGZkIGluIHJhbmdlKGZkX2xvdywgZmRfaGlnaCk6CiAgICAgICAgICAgdHJ5OgpAQCAtNjIyLDggKzY5OSw5IEBACiAKIC4uIGZ1bmN0aW9uOjogZmNobW9kKGZkLCBtb2RlKQogCi0gICBDaGFuZ2UgdGhlIG1vZGUgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICBTZWUgdGhlIGRvY3MKLSAgIGZvciA6ZnVuYzpgY2htb2RgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLgorICAgQ2hhbmdlIHRoZSBtb2RlIG9mIHRoZSBmaWxlIGdpdmVuIGJ5ICpmZCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiAgU2VlIHRoZQorICAgZG9jcyBmb3IgOmZ1bmM6YGNobW9kYCBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMKKyAgIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5jaG1vZChmZCwgbW9kZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC02MzEsNyArNzA5LDkgQEAKIC4uIGZ1bmN0aW9uOjogZmNob3duKGZkLCB1aWQsIGdpZCkKIAogICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqdWlkKgotICAgYW5kICpnaWQqLiAgVG8gbGVhdmUgb25lIG9mIHRoZSBpZHMgdW5jaGFuZ2VkLCBzZXQgaXQgdG8gLTEuCisgICBhbmQgKmdpZCouICBUbyBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4gIFNlZQorICAgOmZ1bmM6YGNob3duYC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLmNob3duKGZkLCB1aWQsCisgICBnaWQpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNjYyLDIwICs3NDIsMjQgQEAKICAgIGluY2x1ZGVkIGluIGBgcGF0aGNvbmZfbmFtZXNgYCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdpdGgKICAgIDpjb25zdDpgZXJybm8uRUlOVkFMYCBmb3IgdGhlIGVycm9yIG51bWJlci4KIAorICAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MucGF0aGNvbmYoZmQsIG5hbWUpYGAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBmdW5jdGlvbjo6IGZzdGF0KGZkKQogCi0gICBSZXR1cm4gc3RhdHVzIGZvciBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgfm9zLnN0YXRgLgorICAgUmV0dXJuIHN0YXR1cyBmb3IgZmlsZSBkZXNjcmlwdG9yICpmZCosIGxpa2UgOmZ1bmM6YH5vcy5zdGF0YC4gIEFzIG9mIFB5dGhvbgorICAgMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5zdGF0KGZkKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAogLi4gZnVuY3Rpb246OiBmc3RhdHZmcyhmZCkKIAotICAgUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGZpbGUKLSAgIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgc3RhdHZmc2AuCisgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgZmlsZSBhc3NvY2lhdGVkIHdpdGgKKyAgIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmBzdGF0dmZzYC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMKKyAgIGVxdWl2YWxlbnQgdG8gYGBvcy5zdGF0dmZzKGZkKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTY4OSwxMyArNzczLDE0IEBACiAgICBgYGYuZmx1c2goKWBgLCBhbmQgdGhlbiBkbyBgYG9zLmZzeW5jKGYuZmlsZW5vKCkpYGAsIHRvIGVuc3VyZSB0aGF0IGFsbCBpbnRlcm5hbAogICAgYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggKmYqIGFyZSB3cml0dGVuIHRvIGRpc2suCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgYW5kIFdpbmRvd3MuCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAogLi4gZnVuY3Rpb246OiBmdHJ1bmNhdGUoZmQsIGxlbmd0aCkKIAotICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgc28gdGhhdCBpdCBpcyBhdCBtb3N0Ci0gICAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLgorICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgc28gdGhhdCBpdCBpcyBhdAorICAgbW9zdCAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLnRydW5jYXRlKGZkLCBsZW5ndGgpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNzA4LDYgKzc5MywzMSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogbG9ja2YoZmQsIGNtZCwgbGVuKQorCisgICBBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgKmZkKiBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgICpjbWQqIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgLSBvbmUgb2YgOmRhdGE6YEZfTE9DS2AsIDpkYXRhOmBGX1RMT0NLYCwKKyAgIDpkYXRhOmBGX1VMT0NLYCBvciA6ZGF0YTpgRl9URVNUYC4KKyAgICpsZW4qIHNwZWNpZmllcyB0aGUgc2VjdGlvbiBvZiB0aGUgZmlsZSB0byBsb2NrLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBGX0xPQ0sKKyAgICAgICAgICBGX1RMT0NLCisgICAgICAgICAgRl9VTE9DSworICAgICAgICAgIEZfVEVTVAorCisgICBGbGFncyB0aGF0IHNwZWNpZnkgd2hhdCBhY3Rpb24gOmZ1bmM6YGxvY2tmYCB3aWxsIHRha2UuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBsc2VlayhmZCwgcG9zLCBob3cpCiAKICAgIFNldCB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBmaWxlIGRlc2NyaXB0b3IgKmZkKiB0byBwb3NpdGlvbiAqcG9zKiwgbW9kaWZpZWQKQEAgLTcyNCwyMSArODM0LDI5IEBACiAgICAgICAgICAgU0VFS19FTkQKIAogICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YGxzZWVrYCBmdW5jdGlvbi4gVGhlaXIgdmFsdWVzIGFyZSAwLCAxLCBhbmQgMiwKLSAgIHJlc3BlY3RpdmVseS4gQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBVbml4LgorICAgcmVzcGVjdGl2ZWx5LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyBjb3VsZCBzdXBwb3J0IGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCisgICAgICA6ZGF0YTpgb3MuU0VFS19IT0xFYCBvciA6ZGF0YTpgb3MuU0VFS19EQVRBYC4KIAogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgZmxhZ3NbLCBtb2RlXSkKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIE9wZW4gdGhlIGZpbGUgKmZpbGUqIGFuZCBzZXQgdmFyaW91cyBmbGFncyBhY2NvcmRpbmcgdG8gKmZsYWdzKiBhbmQgcG9zc2libHkKLSAgIGl0cyBtb2RlIGFjY29yZGluZyB0byAqbW9kZSouICBUaGUgZGVmYXVsdCAqbW9kZSogaXMgYGAwbzc3N2BgIChvY3RhbCksIGFuZAotICAgdGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUgaXMgZmlyc3QgbWFza2VkIG91dC4gIFJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvcgotICAgdGhlIG5ld2x5IG9wZW5lZCBmaWxlLgorICAgaXRzIG1vZGUgYWNjb3JkaW5nIHRvICptb2RlKi4gIFdoZW4gY29tcHV0aW5nICptb2RlKiwgdGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUKKyAgIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIG5ld2x5IG9wZW5lZCBmaWxlLgogCiAgICBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmxhZyBhbmQgbW9kZSB2YWx1ZXMsIHNlZSB0aGUgQyBydW4tdGltZSBkb2N1bWVudGF0aW9uOwogICAgZmxhZyBjb25zdGFudHMgKGxpa2UgOmNvbnN0OmBPX1JET05MWWAgYW5kIDpjb25zdDpgT19XUk9OTFlgKSBhcmUgZGVmaW5lZCBpbgogICAgdGhpcyBtb2R1bGUgdG9vIChzZWUgOnJlZjpgb3Blbi1jb25zdGFudHNgKS4gIEluIHBhcnRpY3VsYXIsIG9uIFdpbmRvd3MgYWRkaW5nCiAgICA6Y29uc3Q6YE9fQklOQVJZYCBpcyBuZWVkZWQgdG8gb3BlbiBmaWxlcyBpbiBiaW5hcnkgbW9kZS4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiBub3RlOjoKQEAgLTc0OCw2ICs4NjYsOSBAQAogICAgICAgOm1ldGg6YH5maWxlLnJlYWRgIGFuZCA6bWV0aDpgfmZpbGUud3JpdGVgIG1ldGhvZHMgKGFuZCBtYW55IG1vcmUpLiAgVG8KICAgICAgIHdyYXAgYSBmaWxlIGRlc2NyaXB0b3IgaW4gYSBmaWxlIG9iamVjdCwgdXNlIDpmdW5jOmBmZG9wZW5gLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW5wdHkoKQogCkBAIC03NjgsNiArODg5LDc5IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAorLi4gZnVuY3Rpb246OiBwaXBlMihmbGFncykKKworICAgQ3JlYXRlIGEgcGlwZSB3aXRoICpmbGFncyogc2V0IGF0b21pY2FsbHkuCisgICAqZmxhZ3MqIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6CisgICA6ZGF0YTpgT19OT05CTE9DS2AsIDpkYXRhOmBPX0NMT0VYRUNgLgorICAgUmV0dXJuIGEgcGFpciBvZiBmaWxlIGRlc2NyaXB0b3JzIGBgKHIsIHcpYGAgdXNhYmxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLAorICAgcmVzcGVjdGl2ZWx5LgorCisgICBBdmFpbGFiaWxpdHk6IHNvbWUgZmxhdm9ycyBvZiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pCisKKyAgIEVuc3VyZXMgdGhhdCBlbm91Z2ggZGlzayBzcGFjZSBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqZmQqCisgICBzdGFydGluZyBmcm9tICpvZmZzZXQqIGFuZCBjb250aW51aW5nIGZvciAqbGVuKiBieXRlcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpCisKKyAgIEFubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmcKKyAgIHRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLgorICAgVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpmZCogc3RhcnRpbmcgYXQKKyAgICpvZmZzZXQqIGFuZCBjb250aW51aW5nIGZvciAqbGVuKiBieXRlcy4KKyAgICphZHZpY2UqIGlzIG9uZSBvZiA6ZGF0YTpgUE9TSVhfRkFEVl9OT1JNQUxgLCA6ZGF0YTpgUE9TSVhfRkFEVl9TRVFVRU5USUFMYCwKKyAgIDpkYXRhOmBQT1NJWF9GQURWX1JBTkRPTWAsIDpkYXRhOmBQT1NJWF9GQURWX05PUkVVU0VgLAorICAgOmRhdGE6YFBPU0lYX0ZBRFZfV0lMTE5FRURgIG9yIDpkYXRhOmBQT1NJWF9GQURWX0RPTlRORUVEYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogUE9TSVhfRkFEVl9OT1JNQUwKKyAgICAgICAgICBQT1NJWF9GQURWX1NFUVVFTlRJQUwKKyAgICAgICAgICBQT1NJWF9GQURWX1JBTkRPTQorICAgICAgICAgIFBPU0lYX0ZBRFZfTk9SRVVTRQorICAgICAgICAgIFBPU0lYX0ZBRFZfV0lMTE5FRUQKKyAgICAgICAgICBQT1NJWF9GQURWX0RPTlRORUVECisKKyAgIEZsYWdzIHRoYXQgY2FuIGJlIHVzZWQgaW4gKmFkdmljZSogaW4gOmZ1bmM6YHBvc2l4X2ZhZHZpc2VgIHRoYXQgc3BlY2lmeQorICAgdGhlIGFjY2VzcyBwYXR0ZXJuIHRoYXQgaXMgbGlrZWx5IHRvIGJlIHVzZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KQorCisgICBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IsICpmZCosIGF0IGEgcG9zaXRpb24gb2YgKm9mZnNldCouIEl0IHdpbGwgcmVhZCB1cAorICAgdG8gKmJ1ZmZlcnNpemUqIG51bWJlciBvZiBieXRlcy4gVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcHdyaXRlKGZkLCBzdHJpbmcsIG9mZnNldCkKKworICAgV3JpdGUgKnN0cmluZyogdG8gYSBmaWxlIGRlc2NyaXB0b3IsICpmZCosIGZyb20gKm9mZnNldCosIGxlYXZpbmcgdGhlIGZpbGUKKyAgIG9mZnNldCB1bmNoYW5nZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiByZWFkKGZkLCBuKQogCiAgICBSZWFkIGF0IG1vc3QgKm4qIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yICpmZCouIFJldHVybiBhIGJ5dGVzdHJpbmcgY29udGFpbmluZyB0aGUKQEAgLTc3OSwxMCArOTczLDYyIEBACiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQotICAgICAgZGVzY3JpcHRvciBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmAgb3IgOmZ1bmM6YHBpcGVgLiAgVG8gcmVhZCBhICJmaWxlIG9iamVjdCIKLSAgICAgIHJldHVybmVkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3BlbmAgb3IgYnkgOmZ1bmM6YHBvcGVuYCBvcgotICAgICAgOmZ1bmM6YGZkb3BlbmAsIG9yIDpkYXRhOmBzeXMuc3RkaW5gLCB1c2UgaXRzIDptZXRoOmB+ZmlsZS5yZWFkYCBvcgotICAgICAgOm1ldGg6YH5maWxlLnJlYWRsaW5lYCBtZXRob2RzLgorICAgICAgZGVzY3JpcHRvciBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmAgb3IgOmZ1bmM6YHBpcGVgLiAgVG8gcmVhZCBhCisgICAgICAiZmlsZSBvYmplY3QiIHJldHVybmVkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3BlbmAgb3IgYnkKKyAgICAgIDpmdW5jOmBwb3BlbmAgb3IgOmZ1bmM6YGZkb3BlbmAsIG9yIDpkYXRhOmBzeXMuc3RkaW5gLCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmZpbGUucmVhZGAgb3IgOm1ldGg6YH5maWxlLnJlYWRsaW5lYCBtZXRob2RzLgorCisKKy4uIGZ1bmN0aW9uOjogc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICAgIHNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPU5vbmUsIHRyYWlsZXJzPU5vbmUsIGZsYWdzPTApCisKKyAgIENvcHkgKm5ieXRlcyogYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgKmluKiB0byBmaWxlIGRlc2NyaXB0b3IgKm91dCoKKyAgIHN0YXJ0aW5nIGF0ICpvZmZzZXQqLgorICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudC4gV2hlbiBFT0YgaXMgcmVhY2hlZCByZXR1cm4gMC4KKworICAgVGhlIGZpcnN0IGZ1bmN0aW9uIG5vdGF0aW9uIGlzIHN1cHBvcnRlZCBieSBhbGwgcGxhdGZvcm1zIHRoYXQgZGVmaW5lCisgICA6ZnVuYzpgc2VuZGZpbGVgLgorCisgICBPbiBMaW51eCwgaWYgKm9mZnNldCogaXMgZ2l2ZW4gYXMgYGBOb25lYGAsIHRoZSBieXRlcyBhcmUgcmVhZCBmcm9tIHRoZQorICAgY3VycmVudCBwb3NpdGlvbiBvZiAqaW4qIGFuZCB0aGUgcG9zaXRpb24gb2YgKmluKiBpcyB1cGRhdGVkLgorCisgICBUaGUgc2Vjb25kIGNhc2UgbWF5IGJlIHVzZWQgb24gTWFjIE9TIFggYW5kIEZyZWVCU0Qgd2hlcmUgKmhlYWRlcnMqIGFuZAorICAgKnRyYWlsZXJzKiBhcmUgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBidWZmZXJzIHRoYXQgYXJlIHdyaXR0ZW4gYmVmb3JlIGFuZAorICAgYWZ0ZXIgdGhlIGRhdGEgZnJvbSAqaW4qIGlzIHdyaXR0ZW4uIEl0IHJldHVybnMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGNhc2UuCisKKyAgIE9uIE1hYyBPUyBYIGFuZCBGcmVlQlNELCBhIHZhbHVlIG9mIDAgZm9yICpuYnl0ZXMqIHNwZWNpZmllcyB0byBzZW5kIHVudGlsCisgICB0aGUgZW5kIG9mICppbiogaXMgcmVhY2hlZC4KKworICAgT24gU29sYXJpcywgKm91dCogbWF5IGJlIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgYSByZWd1bGFyIGZpbGUgb3IgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3Igb2YgYSBzb2NrZXQuIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsICpvdXQqIG11c3QgYmUgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3Igb2YgYW4gb3BlbiBzb2NrZXQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IFNGX05PRElTS0lPCisgICAgICAgICAgU0ZfTU5PV0FJVAorICAgICAgICAgIFNGX1NZTkMKKworICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YHNlbmRmaWxlYCBmdW5jdGlvbiwgaWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzCisgICB0aGVtLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcmVhZHYoZmQsIGJ1ZmZlcnMpCisKKyAgIFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuICpidWZmZXJzKiBpcworICAgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcworICAgcmVhZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBmdW5jdGlvbjo6IHRjZ2V0cGdycChmZCkKQEAgLTgyNiw2ICsxMDcyLDE3IEBACiAgICAgICA6bWV0aDpgfmZpbGUud3JpdGVgIG1ldGhvZC4KIAogCisuLiBmdW5jdGlvbjo6IHdyaXRldihmZCwgYnVmZmVycykKKworICAgV3JpdGUgdGhlIGNvbnRlbnRzIG9mICpidWZmZXJzKiB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgd2hlcmUgKmJ1ZmZlcnMqCisgICBpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy4KKyAgIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIF9vcGVuLWNvbnN0YW50czoKIAogYGBvcGVuKClgYCBmbGFnIGNvbnN0YW50cwpAQCAtODU3LDkgKzExMTQsMTIgQEAKICAgICAgICAgICBPX05PQ1RUWQogICAgICAgICAgIE9fU0hMT0NLCiAgICAgICAgICAgT19FWExPQ0sKKyAgICAgICAgICBPX0NMT0VYRUMKIAogICAgVGhlc2UgY29uc3RhbnRzIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkIDpkYXRhOmBPX0NMT0VYRUNgIGNvbnN0YW50LgogCiAuLiBkYXRhOjogT19CSU5BUlkKICAgICAgICAgICBPX05PSU5IRVJJVApAQCAtODgyLDEyICsxMTQyLDEwNiBAQAogICAgdGhlIEMgbGlicmFyeS4KIAogCisuLiBkYXRhOjogUlRMRF9MQVpZCisgICAgICAgICAgUlRMRF9OT1cKKyAgICAgICAgICBSVExEX0dMT0JBTAorICAgICAgICAgIFJUTERfTE9DQUwKKyAgICAgICAgICBSVExEX05PREVMRVRFCisgICAgICAgICAgUlRMRF9OT0xPQUQKKyAgICAgICAgICBSVExEX0RFRVBCSU5ECisKKyAgIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZSA6bWFucGFnZTpgZGxvcGVuKDMpYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gX3Rlcm1pbmFsLXNpemU6CisKK1F1ZXJ5aW5nIHRoZSBzaXplIG9mIGEgdGVybWluYWwKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogZ2V0X3Rlcm1pbmFsX3NpemUoZmQ9U1RET1VUX0ZJTEVOTykKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgYXMgYGAoY29sdW1ucywgbGluZXMpYGAsCisgICB0dXBsZSBvZiB0eXBlIDpjbGFzczpgdGVybWluYWxfc2l6ZWAuCisKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCBgYGZkYGAgKGRlZmF1bHQgYGBTVERPVVRfRklMRU5PYGAsIG9yIHN0YW5kYXJkCisgICBvdXRwdXQpIHNwZWNpZmllcyB3aGljaCBmaWxlIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHF1ZXJpZWQuCisKKyAgIElmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCBhbiA6ZXhjOmBPU0Vycm9yYAorICAgaXMgdGhyb3duLgorCisgICA6ZnVuYzpgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplYCBpcyB0aGUgaGlnaC1sZXZlbCBmdW5jdGlvbiB3aGljaAorICAgc2hvdWxkIG5vcm1hbGx5IGJlIHVzZWQsIGBgb3MuZ2V0X3Rlcm1pbmFsX3NpemVgYCBpcyB0aGUgbG93LWxldmVsCisgICBpbXBsZW1lbnRhdGlvbi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisuLiBjbGFzczo6IHRlcm1pbmFsX3NpemUKKworICAgQSBzdWJjbGFzcyBvZiB0dXBsZSwgaG9sZGluZyBgYChjb2x1bW5zLCBsaW5lcylgYCBvZiB0aGUgdGVybWluYWwgd2luZG93IHNpemUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbHVtbnMKKworICAgICAgV2lkdGggb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBsaW5lcworCisgICAgICBIZWlnaHQgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzLgorCisKIC4uIF9vcy1maWxlLWRpcjoKIAogRmlsZXMgYW5kIERpcmVjdG9yaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBhY2Nlc3MocGF0aCwgbW9kZSkKK09uIHNvbWUgVW5peCBwbGF0Zm9ybXMsIG1hbnkgb2YgdGhlc2UgZnVuY3Rpb25zIHN1cHBvcnQgb25lIG9yIG1vcmUgb2YgdGhlc2UKK2ZlYXR1cmVzOgorCisuLiBfcGF0aF9mZDoKKworKiAqKnNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3I6KioKKyAgRm9yIHNvbWUgZnVuY3Rpb25zLCB0aGUgKnBhdGgqIGFyZ3VtZW50IGNhbiBiZSBub3Qgb25seSBhIHN0cmluZyBnaXZpbmcgYSBwYXRoCisgIG5hbWUsIGJ1dCBhbHNvIGEgZmlsZSBkZXNjcmlwdG9yLiAgVGhlIGZ1bmN0aW9uIHdpbGwgdGhlbiBvcGVyYXRlIG9uIHRoZSBmaWxlCisgIHJlZmVycmVkIHRvIGJ5IHRoZSBkZXNjcmlwdG9yLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsIHRoZQorICBgYGYuLi5gYCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqcGF0aCogY2FuIGJlIHNwZWNpZmllZCBhcyBhIGZpbGUgZGVzY3JpcHRvciBvbgorICB5b3VyIHBsYXRmb3JtIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19mZGAuICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQKKyAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCisgIElmIHRoZSBmdW5jdGlvbiBhbHNvIHN1cHBvcnRzICpkaXJfZmQqIG9yICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgaXQgaXMKKyAgYW4gZXJyb3IgdG8gc3BlY2lmeSBvbmUgb2YgdGhvc2Ugd2hlbiBzdXBwbHlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yLgorCisuLiBfZGlyX2ZkOgorCisqICoqcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzOioqIElmICpkaXJfZmQqIGlzIG5vdCBgYE5vbmVgYCwgaXQKKyAgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSBwYXRoIHRvIG9wZXJhdGUKKyAgb24gc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4gIElmIHRoZQorICBwYXRoIGlzIGFic29sdXRlLCAqZGlyX2ZkKiBpcyBpZ25vcmVkLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsCisgIHRoZSBgYC4uLmF0YGAgb3IgYGBmLi4uYXRgYCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqZGlyX2ZkKiBpcyBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybSB1c2luZworICA6ZGF0YTpgb3Muc3VwcG9ydHNfZGlyX2ZkYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEKKyAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKy4uIF9mb2xsb3dfc3ltbGlua3M6CisKKyogKipub3QgZm9sbG93aW5nIHN5bWxpbmtzOioqIElmICpmb2xsb3dfc3ltbGlua3MqIGlzCisgIGBgRmFsc2VgYCwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggdG8gb3BlcmF0ZSBvbiBpcyBhIHN5bWJvbGljIGxpbmssCisgIHRoZSBmdW5jdGlvbiB3aWxsIG9wZXJhdGUgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlCisgIGxpbmsgcG9pbnRzIHRvLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsIHRoZSBgYGwuLi5gYCB2ZXJzaW9uIG9mCisgIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqZm9sbG93X3N5bWxpbmtzKiBpcyBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybQorICB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdAorICB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKworCisuLiBmdW5jdGlvbjo6IGFjY2VzcyhwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFVzZSB0aGUgcmVhbCB1aWQvZ2lkIHRvIHRlc3QgZm9yIGFjY2VzcyB0byAqcGF0aCouICBOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zCiAgICB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQsIHRoZXJlZm9yZSB0aGlzIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYQpAQCAtODk4LDYgKzEyNTIsMTUgQEAKICAgIDpjb25zdDpgRmFsc2VgIGlmIG5vdC4gU2VlIHRoZSBVbml4IG1hbiBwYWdlIDptYW5wYWdlOmBhY2Nlc3MoMilgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbi4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeQorICAgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgSWYgKmVmZmVjdGl2ZV9pZHMqIGlzIGBgVHJ1ZWBgLCA6ZnVuYzpgYWNjZXNzYCB3aWxsIHBlcmZvcm0gaXRzIGFjY2VzcworICAgY2hlY2tzIHVzaW5nIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCBpbnN0ZWFkIG9mIHRoZSByZWFsIHVpZC9naWQuCisgICAqZWZmZWN0aXZlX2lkcyogbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsgeW91IGNhbiBjaGVjayB3aGV0aGVyCisgICBvciBub3QgaXQgaXMgYXZhaWxhYmxlIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19lZmZlY3RpdmVfaWRzYC4gIElmIGl0IGlzCisgICB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIG5vdGU6OgpAQCAtOTE3LDExICsxMjgwLDggQEAKIAogICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIGZwID0gb3BlbigibXlmaWxlIikKLSAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUNDRVM6Ci0gICAgICAgICAgICAgICAgIHJldHVybiAic29tZSBkZWZhdWx0IGRhdGEiCi0gICAgICAgICAgICAgIyBOb3QgYSBwZXJtaXNzaW9uIGVycm9yLgotICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICAgICAgIHJldHVybiAic29tZSBkZWZhdWx0IGRhdGEiCiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgIHdpdGggZnA6CiAgICAgICAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKQEAgLTkzMiwyOSArMTI5MiwxOCBAQAogICAgICAgc3VjY2VlZCwgcGFydGljdWxhcmx5IGZvciBvcGVyYXRpb25zIG9uIG5ldHdvcmsgZmlsZXN5c3RlbXMgd2hpY2ggbWF5IGhhdmUKICAgICAgIHBlcm1pc3Npb25zIHNlbWFudGljcyBiZXlvbmQgdGhlIHVzdWFsIFBPU0lYIHBlcm1pc3Npb24tYml0IG1vZGVsLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqLCAqZWZmZWN0aXZlX2lkcyosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXJzLgorCiAKIC4uIGRhdGE6OiBGX09LCisgICAgICAgICAgUl9PSworICAgICAgICAgIFdfT0sKKyAgICAgICAgICBYX09LCiAKLSAgIFZhbHVlIHRvIHBhc3MgYXMgdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUgZXhpc3RlbmNlIG9mCi0gICAqcGF0aCouCi0KLQotLi4gZGF0YTo6IFJfT0sKLQotICAgVmFsdWUgdG8gaW5jbHVkZSBpbiB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZQotICAgcmVhZGFiaWxpdHkgb2YgKnBhdGgqLgotCi0KLS4uIGRhdGE6OiBXX09LCi0KLSAgIFZhbHVlIHRvIGluY2x1ZGUgaW4gdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUKLSAgIHdyaXRhYmlsaXR5IG9mICpwYXRoKi4KLQotCi0uLiBkYXRhOjogWF9PSwotCi0gICBWYWx1ZSB0byBpbmNsdWRlIGluIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIGRldGVybWluZSBpZgotICAgKnBhdGgqIGNhbiBiZSBleGVjdXRlZC4KKyAgIFZhbHVlcyB0byBwYXNzIGFzIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIHRlc3QgdGhlCisgICBleGlzdGVuY2UsIHJlYWRhYmlsaXR5LCB3cml0YWJpbGl0eSBhbmQgZXhlY3V0YWJpbGl0eSBvZiAqcGF0aCosCisgICByZXNwZWN0aXZlbHkuCiAKIAogLi4gZnVuY3Rpb246OiBjaGRpcihwYXRoKQpAQCAtOTYzLDMzICsxMzEyLDE3IEBACiAKICAgIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byAqcGF0aCouCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQotCi0uLiBmdW5jdGlvbjo6IGZjaGRpcihmZCkKLQotICAgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBkaXJlY3RvcnkgcmVwcmVzZW50ZWQgYnkgdGhlIGZpbGUKLSAgIGRlc2NyaXB0b3IgKmZkKi4gIFRoZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuIG9wZW4KLSAgIGZpbGUuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotCi0uLiBmdW5jdGlvbjo6IGdldGN3ZCgpCi0KLSAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4gIFRoZQorICAgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbiBvcGVuIGZpbGUuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAotCi0uLiBmdW5jdGlvbjo6IGdldGN3ZGIoKQotCi0gICBSZXR1cm4gYSBieXRlc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhIGZpbGUgZGVzY3JpcHRvcgorICAgICAgb24gc29tZSBwbGF0Zm9ybXMuCiAKIAotLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzKQorLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBmbGFncyBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKmZsYWdzKi4gKmZsYWdzKiBtYXkgdGFrZSBhIGNvbWJpbmF0aW9uCiAgICAoYml0d2lzZSBPUikgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXMgKGFzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHN0YXRgIG1vZHVsZSk6CkBAIC0xMDA3LDE2ICsxMzQwLDE1IEBACiAgICAqIDpkYXRhOmBzdGF0LlNGX05PVU5MSU5LYAogICAgKiA6ZGF0YTpgc3RhdC5TRl9TTkFQU0hPVGAKIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCi0KLS4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCi0KLSAgIENoYW5nZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byAqcGF0aCouIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KIAogCi0uLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUpCisuLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ2hhbmdlIHRoZSBtb2RlIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICptb2RlKiBtYXkgdGFrZSBvbmUgb2YgdGhlCiAgICBmb2xsb3dpbmcgdmFsdWVzIChhcyBkZWZpbmVkIGluIHRoZSA6bW9kOmBzdGF0YCBtb2R1bGUpIG9yIGJpdHdpc2UgT1JlZApAQCAtMTA0MiwyOCArMTM3NCw3NyBAQAogICAgKiA6ZGF0YTpgc3RhdC5TX0lXT1RIYAogICAgKiA6ZGF0YTpgc3RhdC5TX0lYT1RIYAogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCwKKyAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiBub3RlOjoKIAotICAgICAgQWx0aG91Z2ggV2luZG93cyBzdXBwb3J0cyA6ZnVuYzpgY2htb2RgLCB5b3UgY2FuIG9ubHkgIHNldCB0aGUgZmlsZSdzIHJlYWQtb25seQotICAgICAgZmxhZyB3aXRoIGl0ICh2aWEgdGhlIGBgc3RhdC5TX0lXUklURWBgICBhbmQgYGBzdGF0LlNfSVJFQURgYAotICAgICAgY29uc3RhbnRzIG9yIGEgY29ycmVzcG9uZGluZyBpbnRlZ2VyIHZhbHVlKS4gIEFsbCBvdGhlciBiaXRzIGFyZQotICAgICAgaWdub3JlZC4KKyAgICAgIEFsdGhvdWdoIFdpbmRvd3Mgc3VwcG9ydHMgOmZ1bmM6YGNobW9kYCwgeW91IGNhbiBvbmx5IHNldCB0aGUgZmlsZSdzCisgICAgICByZWFkLW9ubHkgZmxhZyB3aXRoIGl0ICh2aWEgdGhlIGBgc3RhdC5TX0lXUklURWBgIGFuZCBgYHN0YXQuU19JUkVBRGBgCisgICAgICBjb25zdGFudHMgb3IgYSBjb3JyZXNwb25kaW5nIGludGVnZXIgdmFsdWUpLiAgQWxsIG90aGVyIGJpdHMgYXJlIGlnbm9yZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCisgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKIAotLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1aWQsIGdpZCkKKy4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gVG8gbGVhdmUKLSAgIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLgorICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gIFRvCisgICBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAsCisgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKyAgIFNlZSA6ZnVuYzpgc2h1dGlsLmNob3duYCBmb3IgYSBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIG5hbWVzIGluCisgICBhZGRpdGlvbiB0byBudW1lcmljIGlkcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKKyAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KKworCisuLiBmdW5jdGlvbjo6IGNocm9vdChwYXRoKQorCisgICBDaGFuZ2UgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gKnBhdGgqLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBmY2hkaXIoZmQpCisKKyAgIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZGlyZWN0b3J5IHJlcHJlc2VudGVkIGJ5IHRoZSBmaWxlCisgICBkZXNjcmlwdG9yICpmZCouICBUaGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbgorICAgb3BlbiBmaWxlLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MuY2hkaXIoZmQpYGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworCisuLiBmdW5jdGlvbjo6IGdldGN3ZCgpCisKKyAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworCisuLiBmdW5jdGlvbjo6IGdldGN3ZGIoKQorCisgICBSZXR1cm4gYSBieXRlc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisKIC4uIGZ1bmN0aW9uOjogbGNoZmxhZ3MocGF0aCwgZmxhZ3MpCiAKLSAgIFNldCB0aGUgZmxhZ3Mgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICpmbGFncyosIGxpa2UgOmZ1bmM6YGNoZmxhZ3NgLCBidXQgZG8gbm90Ci0gICBmb2xsb3cgc3ltYm9saWMgbGlua3MuCisgICBTZXQgdGhlIGZsYWdzIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqZmxhZ3MqLCBsaWtlIDpmdW5jOmBjaGZsYWdzYCwgYnV0IGRvCisgICBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLmNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC0xMDcxLDExMCArMTQ1MiwxMDEgQEAKIC4uIGZ1bmN0aW9uOjogbGNobW9kKHBhdGgsIG1vZGUpCiAKICAgIENoYW5nZSB0aGUgbW9kZSBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiBJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcwotICAgYWZmZWN0cyB0aGUgc3ltbGluayByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiBTZWUgdGhlIGRvY3MgZm9yIDpmdW5jOmBjaG1vZGAKLSAgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLgorICAgYWZmZWN0cyB0aGUgc3ltbGluayByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiAgU2VlIHRoZSBkb2NzIGZvciA6ZnVuYzpgY2htb2RgCisgICBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgYGBvcy5jaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBmdW5jdGlvbjo6IGxjaG93bihwYXRoLCB1aWQsIGdpZCkKIAotICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gVGhpcwotICAgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gIFRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudAorICAgdG8gYGBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAotLi4gZnVuY3Rpb246OiBsaW5rKHNvdXJjZSwgbGlua19uYW1lKQorLi4gZnVuY3Rpb246OiBsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKLSAgIENyZWF0ZSBhIGhhcmQgbGluayBwb2ludGluZyB0byAqc291cmNlKiBuYW1lZCAqbGlua19uYW1lKi4KKyAgIENyZWF0ZSBhIGhhcmQgbGluayBwb2ludGluZyB0byAqc3JjKiBuYW1lZCAqZHN0Ki4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCwgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqc3JjX2Rpcl9mZCosICpkc3RfZGlyX2ZkKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3RkaXIocGF0aD0nLicpCiAKICAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieQotICAgKnBhdGgqIChkZWZhdWx0OiBgYCcuJ2BgKS4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKKyAgICpwYXRoKi4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlciwgYW5kIGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKICAgIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuCiAKLSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB3aXRoIGEgYnl0ZXMgb3Igc3RyaW5nIGFyZ3VtZW50LCBhbmQgcmV0dXJucwotICAgZmlsZW5hbWVzIG9mIHRoZSBzYW1lIGRhdGF0eXBlLgorICAgKnBhdGgqIG1heSBiZSBlaXRoZXIgb2YgdHlwZSBgYHN0cmBgIG9yIG9mIHR5cGUgYGBieXRlc2BgLiAgSWYgKnBhdGgqCisgICBpcyBvZiB0eXBlIGBgYnl0ZXNgYCwgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CisgICBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcywgdGhleSB3aWxsIGJlIG9mIHR5cGUgYGBzdHJgYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKKyAgIDxwYXRoX2ZkPmA7IHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS4KKworICAgLi4gbm90ZTo6CisgICAgICBUbyBlbmNvZGUgYGBzdHJgYCBmaWxlbmFtZXMgdG8gYGBieXRlc2BgLCB1c2UgOmZ1bmM6YH5vcy5mc2VuY29kZWAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSAqcGF0aCogcGFyYW1ldGVyIGJlY2FtZSBvcHRpb25hbC4KIAotLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoKQorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCisKKworLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhbiA6YzpmdW5jOmBsc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCiAgICBTaW1pbGFyIHRvIDpmdW5jOmB+b3Muc3RhdGAsIGJ1dCBkb2VzIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuICBPbgogICAgcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgc3ltYm9saWMgbGlua3MsIHRoaXMgaXMgYW4gYWxpYXMgZm9yCi0gICA6ZnVuYzpgfm9zLnN0YXRgLgorICAgOmZ1bmM6YH5vcy5zdGF0YC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLnN0YXQocGF0aCwKKyAgIGRpcl9mZD1kaXJfZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cyA2LjAgKFZpc3RhKSBzeW1ib2xpYyBsaW5rcy4KIAotCi0uLiBmdW5jdGlvbjo6IG1rZmlmbyhwYXRoWywgbW9kZV0pCi0KLSAgIENyZWF0ZSBhIEZJRk8gKGEgbmFtZWQgcGlwZSkgbmFtZWQgKnBhdGgqIHdpdGggbnVtZXJpYyBtb2RlICptb2RlKi4gIFRoZQotICAgZGVmYXVsdCAqbW9kZSogaXMgYGAwbzY2NmBgIChvY3RhbCkuICBUaGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQKLSAgIG91dCBmcm9tIHRoZSBtb2RlLgotCi0gICBGSUZPcyBhcmUgcGlwZXMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgbGlrZSByZWd1bGFyIGZpbGVzLiAgRklGT3MgZXhpc3QgdW50aWwgdGhleQotICAgYXJlIGRlbGV0ZWQgKGZvciBleGFtcGxlIHdpdGggOmZ1bmM6YG9zLnVubGlua2ApLiBHZW5lcmFsbHksIEZJRk9zIGFyZSB1c2VkIGFzCi0gICByZW5kZXp2b3VzIGJldHdlZW4gImNsaWVudCIgYW5kICJzZXJ2ZXIiIHR5cGUgcHJvY2Vzc2VzOiB0aGUgc2VydmVyIG9wZW5zIHRoZQotICAgRklGTyBmb3IgcmVhZGluZywgYW5kIHRoZSBjbGllbnQgb3BlbnMgaXQgZm9yIHdyaXRpbmcuICBOb3RlIHRoYXQgOmZ1bmM6YG1rZmlmb2AKLSAgIGRvZXNuJ3Qgb3BlbiB0aGUgRklGTyAtLS0gaXQganVzdCBjcmVhdGVzIHRoZSByZW5kZXp2b3VzIHBvaW50LgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAogCi0uLiBmdW5jdGlvbjo6IG1rbm9kKGZpbGVuYW1lWywgbW9kZT0wbzYwMFssIGRldmljZT0wXV0pCisuLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKQogCi0gICBDcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSkgbmFtZWQKLSAgICpmaWxlbmFtZSouICptb2RlKiBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGUgdHlwZSBvZiBub2RlCi0gICB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2YgYGBzdGF0LlNfSUZSRUdgYCwKLSAgIGBgc3RhdC5TX0lGQ0hSYGAsIGBgc3RhdC5TX0lGQkxLYGAsIGFuZCBgYHN0YXQuU19JRklGT2BgICh0aG9zZSBjb25zdGFudHMgYXJlCi0gICBhdmFpbGFibGUgaW4gOm1vZDpgc3RhdGApLiAgRm9yIGBgc3RhdC5TX0lGQ0hSYGAgYW5kIGBgc3RhdC5TX0lGQkxLYGAsCi0gICAqZGV2aWNlKiBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nCi0gICA6ZnVuYzpgb3MubWFrZWRldmApLCBvdGhlcndpc2UgaXQgaXMgaWdub3JlZC4KKyAgIENyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLgogCisgICBPbiBzb21lIHN5c3RlbXMsICptb2RlKiBpcyBpZ25vcmVkLiAgV2hlcmUgaXQgaXMgdXNlZCwgdGhlIGN1cnJlbnQgdW1hc2sKKyAgIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBJZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLCA6ZXhjOmBPU0Vycm9yYAorICAgaXMgcmFpc2VkLgogCi0uLiBmdW5jdGlvbjo6IG1ham9yKGRldmljZSkKLQotICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCi0gICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCi0KLQotLi4gZnVuY3Rpb246OiBtaW5vcihkZXZpY2UpCi0KLSAgIEV4dHJhY3QgdGhlIGRldmljZSBtaW5vciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyICh1c3VhbGx5IHRoZQotICAgOmF0dHI6YHN0X2RldmAgb3IgOmF0dHI6YHN0X3JkZXZgIGZpZWxkIGZyb20gOmM6dHlwZTpgc3RhdGApLgotCi0KLS4uIGZ1bmN0aW9uOjogbWFrZWRldihtYWpvciwgbWlub3IpCi0KLSAgIENvbXBvc2UgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuCi0KLQotLi4gZnVuY3Rpb246OiBta2RpcihwYXRoWywgbW9kZV0pCi0KLSAgIENyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLiBUaGUgZGVmYXVsdCAqbW9kZSoKLSAgIGlzIGBgMG83NzdgYCAob2N0YWwpLiAgT24gc29tZSBzeXN0ZW1zLCAqbW9kZSogaXMgaWdub3JlZC4gIFdoZXJlIGl0IGlzIHVzZWQsCi0gICB0aGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0LiAgSWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5Ci0gICBleGlzdHMsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KIAogICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzOyBzZWUgdGhlCiAgICA6bW9kOmB0ZW1wZmlsZWAgbW9kdWxlJ3MgOmZ1bmM6YHRlbXBmaWxlLm1rZHRlbXBgIGZ1bmN0aW9uLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogbWFrZWRpcnMocGF0aCwgbW9kZT0wbzc3NywgZXhpc3Rfb2s9RmFsc2UpCiAKQEAgLTEyMDUsNiArMTU3Nyw2MCBAQAogICAgICAgVGhlICpleGlzdF9vayogcGFyYW1ldGVyLgogCiAKKy4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKQorCisgICBDcmVhdGUgYSBGSUZPIChhIG5hbWVkIHBpcGUpIG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouCisgICBUaGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0IGZyb20gdGhlIG1vZGUuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKworICAgRklGT3MgYXJlIHBpcGVzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGxpa2UgcmVndWxhciBmaWxlcy4gIEZJRk9zIGV4aXN0IHVudGlsIHRoZXkKKyAgIGFyZSBkZWxldGVkIChmb3IgZXhhbXBsZSB3aXRoIDpmdW5jOmBvcy51bmxpbmtgKS4gR2VuZXJhbGx5LCBGSUZPcyBhcmUgdXNlZCBhcworICAgcmVuZGV6dm91cyBiZXR3ZWVuICJjbGllbnQiIGFuZCAic2VydmVyIiB0eXBlIHByb2Nlc3NlczogdGhlIHNlcnZlciBvcGVucyB0aGUKKyAgIEZJRk8gZm9yIHJlYWRpbmcsIGFuZCB0aGUgY2xpZW50IG9wZW5zIGl0IGZvciB3cml0aW5nLiAgTm90ZSB0aGF0IDpmdW5jOmBta2ZpZm9gCisgICBkb2Vzbid0IG9wZW4gdGhlIEZJRk8gLS0tIGl0IGp1c3QgY3JlYXRlcyB0aGUgcmVuZGV6dm91cyBwb2ludC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKworCisuLiBmdW5jdGlvbjo6IG1rbm9kKGZpbGVuYW1lLCBtb2RlPTBvNjAwLCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIENyZWF0ZSBhIGZpbGVzeXN0ZW0gbm9kZSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKSBuYW1lZAorICAgKmZpbGVuYW1lKi4gKm1vZGUqIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZSB0eXBlIG9mIG5vZGUKKyAgIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZiBgYHN0YXQuU19JRlJFR2BgLAorICAgYGBzdGF0LlNfSUZDSFJgYCwgYGBzdGF0LlNfSUZCTEtgYCwgYW5kIGBgc3RhdC5TX0lGSUZPYGAgKHRob3NlIGNvbnN0YW50cyBhcmUKKyAgIGF2YWlsYWJsZSBpbiA6bW9kOmBzdGF0YCkuICBGb3IgYGBzdGF0LlNfSUZDSFJgYCBhbmQgYGBzdGF0LlNfSUZCTEtgYCwKKyAgICpkZXZpY2UqIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmcKKyAgIDpmdW5jOmBvcy5tYWtlZGV2YCksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCisKKy4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQorCisgICBFeHRyYWN0IHRoZSBkZXZpY2UgbWFqb3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKKyAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KKworCisuLiBmdW5jdGlvbjo6IG1pbm9yKGRldmljZSkKKworICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCisgICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCisKKworLi4gZnVuY3Rpb246OiBtYWtlZGV2KG1ham9yLCBtaW5vcikKKworICAgQ29tcG9zZSBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4KKworCiAuLiBmdW5jdGlvbjo6IHBhdGhjb25mKHBhdGgsIG5hbWUpCiAKICAgIFJldHVybiBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZWxldmFudCB0byBhIG5hbWVkIGZpbGUuICpuYW1lKgpAQCAtMTIyMCw2ICsxNjQ2LDkgQEAKICAgIGluY2x1ZGVkIGluIGBgcGF0aGNvbmZfbmFtZXNgYCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdpdGgKICAgIDpjb25zdDpgZXJybm8uRUlOVkFMYCBmb3IgdGhlIGVycm9yIG51bWJlci4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yCisgICA8cGF0aF9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIApAQCAtMTIyNywzOCArMTY1Niw1MyBAQAogCiAgICBEaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMgYWNjZXB0ZWQgYnkgOmZ1bmM6YHBhdGhjb25mYCBhbmQgOmZ1bmM6YGZwYXRoY29uZmAgdG8KICAgIHRoZSBpbnRlZ2VyIHZhbHVlcyBkZWZpbmVkIGZvciB0aG9zZSBuYW1lcyBieSB0aGUgaG9zdCBvcGVyYXRpbmcgc3lzdGVtLiAgVGhpcwotICAgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZXQgb2YgbmFtZXMga25vd24gdG8gdGhlIHN5c3RlbS4gQXZhaWxhYmlsaXR5OgotICAgVW5peC4KKyAgIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2V0IG9mIG5hbWVzIGtub3duIHRvIHRoZSBzeXN0ZW0uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlYWRsaW5rKHBhdGgpCisuLiBmdW5jdGlvbjo6IHJlYWRsaW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4gIFRoZQotICAgcmVzdWx0IG1heSBiZSBlaXRoZXIgYW4gYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aG5hbWU7IGlmIGl0IGlzIHJlbGF0aXZlLCBpdCBtYXkKLSAgIGJlIGNvbnZlcnRlZCB0byBhbiBhYnNvbHV0ZSBwYXRobmFtZSB1c2luZyBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksCi0gICByZXN1bHQpYGAuCisgICByZXN1bHQgbWF5IGJlIGVpdGhlciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRobmFtZTsgaWYgaXQgaXMgcmVsYXRpdmUsIGl0CisgICBtYXkgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nCisgICBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksIHJlc3VsdClgYC4KIAogICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKICAgIGFuZCB0aGUgY2FsbCBtYXkgcmFpc2UgYW4gVW5pY29kZURlY29kZUVycm9yLiBJZiB0aGUgKnBhdGgqIGlzIGEgYnl0ZXMKICAgIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cyA2LjAgKFZpc3RhKSBzeW1ib2xpYyBsaW5rcy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgpCisKKy4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgSWYgKnBhdGgqIGlzIGEgZGlyZWN0b3J5LCA6ZXhjOmBPU0Vycm9yYCBpcwotICAgcmFpc2VkOyBzZWUgOmZ1bmM6YHJtZGlyYCBiZWxvdyB0byByZW1vdmUgYSBkaXJlY3RvcnkuICBUaGlzIGlzIGlkZW50aWNhbCB0bwotICAgdGhlIDpmdW5jOmB1bmxpbmtgIGZ1bmN0aW9uIGRvY3VtZW50ZWQgYmVsb3cuICBPbiBXaW5kb3dzLCBhdHRlbXB0aW5nIHRvCi0gICByZW1vdmUgYSBmaWxlIHRoYXQgaXMgaW4gdXNlIGNhdXNlcyBhbiBleGNlcHRpb24gdG8gYmUgcmFpc2VkOyBvbiBVbml4LCB0aGUKLSAgIGRpcmVjdG9yeSBlbnRyeSBpcyByZW1vdmVkIGJ1dCB0aGUgc3RvcmFnZSBhbGxvY2F0ZWQgdG8gdGhlIGZpbGUgaXMgbm90IG1hZGUKLSAgIGF2YWlsYWJsZSB1bnRpbCB0aGUgb3JpZ2luYWwgZmlsZSBpcyBubyBsb25nZXIgaW4gdXNlLgorICAgcmFpc2VkLiAgVXNlIDpmdW5jOmBybWRpcmAgdG8gcmVtb3ZlIGRpcmVjdG9yaWVzLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCisgICBPbiBXaW5kb3dzLCBhdHRlbXB0aW5nIHRvIHJlbW92ZSBhIGZpbGUgdGhhdCBpcyBpbiB1c2UgY2F1c2VzIGFuIGV4Y2VwdGlvbiB0bworICAgYmUgcmFpc2VkOyBvbiBVbml4LCB0aGUgZGlyZWN0b3J5IGVudHJ5IGlzIHJlbW92ZWQgYnV0IHRoZSBzdG9yYWdlIGFsbG9jYXRlZAorICAgdG8gdGhlIGZpbGUgaXMgbm90IG1hZGUgYXZhaWxhYmxlIHVudGlsIHRoZSBvcmlnaW5hbCBmaWxlIGlzIG5vIGxvbmdlciBpbiB1c2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIDpmdW5jOmB1bmxpbmtgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZlZGlycyhwYXRoKQogCkBAIC0xMjc0LDcgKzE3MTgsNyBAQAogICAgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAKIAotLi4gZnVuY3Rpb246OiByZW5hbWUoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKICAgIFJlbmFtZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKnNyYyogdG8gKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwKICAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgT24gVW5peCwgaWYgKmRzdCogZXhpc3RzIGFuZCBpcyBhIGZpbGUsIGl0IHdpbGwKQEAgLTEyODIsMTEgKzE3MjYsMTggQEAKICAgIFVuaXggZmxhdm9ycyBpZiAqc3JjKiBhbmQgKmRzdCogYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcy4gIElmIHN1Y2Nlc3NmdWwsCiAgICB0aGUgcmVuYW1pbmcgd2lsbCBiZSBhbiBhdG9taWMgb3BlcmF0aW9uICh0aGlzIGlzIGEgUE9TSVggcmVxdWlyZW1lbnQpLiAgT24KICAgIFdpbmRvd3MsIGlmICpkc3QqIGFscmVhZHkgZXhpc3RzLCA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBldmVuIGlmIGl0IGlzIGEKLSAgIGZpbGU7IHRoZXJlIG1heSBiZSBubyB3YXkgdG8gaW1wbGVtZW50IGFuIGF0b21pYyByZW5hbWUgd2hlbiAqZHN0KiBuYW1lcyBhbgotICAgZXhpc3RpbmcgZmlsZS4KKyAgIGZpbGUuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgc3BlY2lmeWluZyAqc3JjX2Rpcl9mZCogYW5kL29yICpkc3RfZGlyX2ZkKiB0bworICAgc3VwcGx5IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAuCisKKyAgIElmIHlvdSB3YW50IGNyb3NzLXBsYXRmb3JtIG92ZXJ3cml0aW5nIG9mIHRoZSBkZXN0aW5hdGlvbiwgdXNlIDpmdW5jOmByZXBsYWNlYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqc3JjX2Rpcl9mZCogYW5kICpkc3RfZGlyX2ZkKiBhcmd1bWVudHMuCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWVzKG9sZCwgbmV3KQogCkBAIC0xMzAxLDIyICsxNzUyLDQ2IEBACiAgICAgICBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gcmVtb3ZlIHRoZSBsZWFmIGRpcmVjdG9yeSBvciBmaWxlLgogCiAKLS4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCkKKy4uIGZ1bmN0aW9uOjogcmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCisKKyAgIFJlbmFtZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKnNyYyogdG8gKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwKKyAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgSWYgKmRzdCogZXhpc3RzIGFuZCBpcyBhIGZpbGUsIGl0IHdpbGwKKyAgIGJlIHJlcGxhY2VkIHNpbGVudGx5IGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uLiAgVGhlIG9wZXJhdGlvbiBtYXkgZmFpbAorICAgaWYgKnNyYyogYW5kICpkc3QqIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMuICBJZiBzdWNjZXNzZnVsLAorICAgdGhlIHJlbmFtaW5nIHdpbGwgYmUgYW4gYXRvbWljIG9wZXJhdGlvbiAodGhpcyBpcyBhIFBPU0lYIHJlcXVpcmVtZW50KS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGRpcmVjdG9yeSAqcGF0aCouICBPbmx5IHdvcmtzIHdoZW4gdGhlIGRpcmVjdG9yeSBpcwogICAgZW1wdHksIG90aGVyd2lzZSwgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLiAgSW4gb3JkZXIgdG8gcmVtb3ZlIHdob2xlCiAgICBkaXJlY3RvcnkgdHJlZXMsIDpmdW5jOmBzaHV0aWwucm10cmVlYCBjYW4gYmUgdXNlZC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogc3RhdChwYXRoKQorCisuLiBmdW5jdGlvbjo6IHN0YXQocGF0aCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGEgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCi0gICAoVGhpcyBmdW5jdGlvbiBmb2xsb3dzIHN5bWxpbmtzOyB0byBzdGF0IGEgc3ltbGluayB1c2UgOmZ1bmM6YGxzdGF0YC4pCisgICAqcGF0aCogbWF5IGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAoVGhpcyBmdW5jdGlvbiBub3JtYWxseSBmb2xsb3dzIHN5bWxpbmtzOyB0byBzdGF0IGEgc3ltbGluayBhZGQgdGhlIGFyZ3VtZW50CisgICBgYGZvbGxvd19zeW1saW5rcz1GYWxzZWBgLCBvciB1c2UgOmZ1bmM6YGxzdGF0YC4pCiAKLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdob3NlIGF0dHJpYnV0ZXMgY29ycmVzcG9uZCB0byB0aGUgbWVtYmVycwotICAgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgbmFtZWx5OgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2hvc2UgYXR0cmlidXRlcyBjb3JyZXNwb25kIHJvdWdobHkKKyAgIHRvIHRoZSBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIG5hbWVseToKIAogICAgKiA6YXR0cjpgc3RfbW9kZWAgLSBwcm90ZWN0aW9uIGJpdHMsCiAgICAqIDphdHRyOmBzdF9pbm9gIC0gaW5vZGUgbnVtYmVyLApAQCAtMTMyNSwxMCArMTgwMCwxOCBAQAogICAgKiA6YXR0cjpgc3RfdWlkYCAtIHVzZXIgaWQgb2Ygb3duZXIsCiAgICAqIDphdHRyOmBzdF9naWRgIC0gZ3JvdXAgaWQgb2Ygb3duZXIsCiAgICAqIDphdHRyOmBzdF9zaXplYCAtIHNpemUgb2YgZmlsZSwgaW4gYnl0ZXMsCi0gICAqIDphdHRyOmBzdF9hdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcywKLSAgICogOmF0dHI6YHN0X210aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24sCi0gICAqIDphdHRyOmBzdF9jdGltZWAgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEgY2hhbmdlIG9uCi0gICAgIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MpCisgICAqIDphdHRyOmBzdF9hdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcyBleHByZXNzZWQgaW4gc2Vjb25kcywKKyAgICogOmF0dHI6YHN0X210aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24KKyAgICAgZXhwcmVzc2VkIGluIHNlY29uZHMsCisgICAqIDphdHRyOmBzdF9jdGltZWAgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEKKyAgICAgY2hhbmdlIG9uIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MsIGV4cHJlc3NlZCBpbiBzZWNvbmRzCisgICAqIDphdHRyOmBzdF9hdGltZV9uc2AgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcworICAgICBleHByZXNzZWQgaW4gbmFub3NlY29uZHMgYXMgYW4gaW50ZWdlciwKKyAgICogOmF0dHI6YHN0X210aW1lX25zYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24KKyAgICAgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzIGFzIGFuIGludGVnZXIsCisgICAqIDphdHRyOmBzdF9jdGltZV9uc2AgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEKKyAgICAgY2hhbmdlIG9uIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MsCisgICAgIGV4cHJlc3NlZCBpbiBuYW5vc2Vjb25kcyBhcyBhbiBpbnRlZ2VyCiAKICAgIE9uIHNvbWUgVW5peCBzeXN0ZW1zIChzdWNoIGFzIExpbnV4KSwgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIG1heSBhbHNvIGJlCiAgICBhdmFpbGFibGU6CkBAIC0xMzU4LDEzICsxODQxLDI1IEBACiAgICAgICBvciBGQVQzMiBmaWxlIHN5c3RlbXMsIDphdHRyOmBzdF9tdGltZWAgaGFzIDItc2Vjb25kIHJlc29sdXRpb24sIGFuZAogICAgICAgOmF0dHI6YHN0X2F0aW1lYCBoYXMgb25seSAxLWRheSByZXNvbHV0aW9uLiAgU2VlIHlvdXIgb3BlcmF0aW5nIHN5c3RlbQogICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgICAgIFNpbWlsYXJseSwgYWx0aG91Z2ggOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwKKyAgICAgIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgIGFyZSBhbHdheXMgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzLCBtYW55CisgICAgICBzeXN0ZW1zIGRvIG5vdCBwcm92aWRlIG5hbm9zZWNvbmQgcHJlY2lzaW9uLiAgT24gc3lzdGVtcyB0aGF0IGRvCisgICAgICBwcm92aWRlIG5hbm9zZWNvbmQgcHJlY2lzaW9uLCB0aGUgZmxvYXRpbmctcG9pbnQgb2JqZWN0IHVzZWQgdG8KKyAgICAgIHN0b3JlIDphdHRyOmBzdF9hdGltZWAsIDphdHRyOmBzdF9tdGltZWAsIGFuZCA6YXR0cjpgc3RfY3RpbWVgCisgICAgICBjYW5ub3QgcHJlc2VydmUgYWxsIG9mIGl0LCBhbmQgYXMgc3VjaCB3aWxsIGJlIHNsaWdodGx5IGluZXhhY3QuCisgICAgICBJZiB5b3UgbmVlZCB0aGUgZXhhY3QgdGltZXN0YW1wcyB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UKKyAgICAgIDphdHRyOmBzdF9hdGltZV9uc2AsIDphdHRyOmBzdF9tdGltZV9uc2AsIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgLgogCi0gICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgfm9zLnN0YXRgIGlzIGFsc28gYWNjZXNzaWJsZQotICAgYXMgYSB0dXBsZSBvZiBhdCBsZWFzdCAxMCBpbnRlZ2VycyBnaXZpbmcgdGhlIG1vc3QgaW1wb3J0YW50IChhbmQgcG9ydGFibGUpCi0gICBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIGluIHRoZSBvcmRlciA6YXR0cjpgc3RfbW9kZWAsCi0gICA6YXR0cjpgc3RfaW5vYCwgOmF0dHI6YHN0X2RldmAsIDphdHRyOmBzdF9ubGlua2AsIDphdHRyOmBzdF91aWRgLAotICAgOmF0dHI6YHN0X2dpZGAsIDphdHRyOmBzdF9zaXplYCwgOmF0dHI6YHN0X2F0aW1lYCwgOmF0dHI6YHN0X210aW1lYCwKLSAgIDphdHRyOmBzdF9jdGltZWAuIE1vcmUgaXRlbXMgbWF5IGJlIGFkZGVkIGF0IHRoZSBlbmQgYnkgc29tZSBpbXBsZW1lbnRhdGlvbnMuCisgICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgfm9zLnN0YXRgIGlzIGFsc28KKyAgIGFjY2Vzc2libGUgYXMgYSB0dXBsZSBvZiBhdCBsZWFzdCAxMCBpbnRlZ2VycyBnaXZpbmcgdGhlIG1vc3QgaW1wb3J0YW50IChhbmQKKyAgIHBvcnRhYmxlKSBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIGluIHRoZSBvcmRlcgorICAgOmF0dHI6YHN0X21vZGVgLCA6YXR0cjpgc3RfaW5vYCwgOmF0dHI6YHN0X2RldmAsIDphdHRyOmBzdF9ubGlua2AsCisgICA6YXR0cjpgc3RfdWlkYCwgOmF0dHI6YHN0X2dpZGAsIDphdHRyOmBzdF9zaXplYCwgOmF0dHI6YHN0X2F0aW1lYCwKKyAgIDphdHRyOmBzdF9tdGltZWAsIDphdHRyOmBzdF9jdGltZWAuIE1vcmUgaXRlbXMgbWF5IGJlIGFkZGVkIGF0IHRoZSBlbmQgYnkKKyAgIHNvbWUgaW1wbGVtZW50YXRpb25zLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogc3RhdAogCkBAIC0xMzg1LDYgKzE4ODAsMTIgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLAorICAgICAgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciBpbnN0ZWFkIG9mIGEgcGF0aCwKKyAgICAgIGFuZCB0aGUgOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwKKyAgICAgIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgIG1lbWJlcnMuCisKIAogLi4gZnVuY3Rpb246OiBzdGF0X2Zsb2F0X3RpbWVzKFtuZXd2YWx1ZV0pCiAKQEAgLTE0MTAsNiArMTkxMSw4IEBACiAgICBhcmUgcHJvY2Vzc2VkLCB0aGlzIGFwcGxpY2F0aW9uIHNob3VsZCB0dXJuIHRoZSBmZWF0dXJlIG9mZiB1bnRpbCB0aGUgbGlicmFyeQogICAgaGFzIGJlZW4gY29ycmVjdGVkLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiBzdGF0dmZzKHBhdGgpCiAKQEAgLTE0MjUsMzQgKzE5MjgsMTE4IEBACiAgICByZWFkLW9ubHksIGFuZCBpZiA6Y29uc3Q6YFNUX05PU1VJRGAgaXMgc2V0LCB0aGUgc2VtYW50aWNzIG9mCiAgICBzZXR1aWQvc2V0Z2lkIGJpdHMgYXJlIGRpc2FibGVkIG9yIG5vdCBzdXBwb3J0ZWQuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgogCi0uLiBmdW5jdGlvbjo6IHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUpCi0gICAgICAgICAgICAgIHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UpCisKKy4uIGRhdGE6OiBzdXBwb3J0c19kaXJfZmQKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHVzZSBvZiB0aGVpciAqZGlyX2ZkKiBwYXJhbWV0ZXIuICBEaWZmZXJlbnQgcGxhdGZvcm1zCisgICBwcm92aWRlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5LCBhbmQgYW4gb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbiBvbmUgbWlnaHQKKyAgIGJlIHVuc3VwcG9ydGVkIG9uIGFub3RoZXIuICBGb3IgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQgc3VwcG9ydAorICAgKmRpcl9mZCogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcgdGhlIHBhcmFtZXRlciwgYnV0IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uCisgICBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLgorCisgICBUbyBjaGVjayB3aGV0aGVyIGEgcGFydGljdWxhciBmdW5jdGlvbiBwZXJtaXRzIHVzZSBvZiBpdHMgKmRpcl9mZCoKKyAgIHBhcmFtZXRlciwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19kaXJfZmRgYC4gIEFzIGFuIGV4YW1wbGUsCisgICB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YG9zLnN0YXRgCisgICBpcyBsb2NhbGx5IGF2YWlsYWJsZTo6CisKKyAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2Rpcl9mZAorCisgICBDdXJyZW50bHkgKmRpcl9mZCogcGFyYW1ldGVycyBvbmx5IHdvcmsgb24gVW5peCBwbGF0Zm9ybXM7IG5vbmUgb2YgdGhlbSB3b3JrCisgICBvbiBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogc3VwcG9ydHNfZWZmZWN0aXZlX2lkcworCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgdXNlIG9mIHRoZSAqZWZmZWN0aXZlX2lkcyogcGFyYW1ldGVyIGZvcgorICAgOmZ1bmM6YG9zLmFjY2Vzc2AuICBJZiB0aGUgbG9jYWwgcGxhdGZvcm0gc3VwcG9ydHMgaXQsIHRoZSBjb2xsZWN0aW9uIHdpbGwKKyAgIGNvbnRhaW4gOmZ1bmM6YG9zLmFjY2Vzc2AsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGVtcHR5LgorCisgICBUbyBjaGVjayB3aGV0aGVyIHlvdSBjYW4gdXNlIHRoZSAqZWZmZWN0aXZlX2lkcyogcGFyYW1ldGVyIGZvcgorICAgOmZ1bmM6YG9zLmFjY2Vzc2AsIHVzZSB0aGUgYGBpbmBgIG9wZXJhdG9yIG9uIGBgc3VwcG9ydHNfZGlyX2ZkYGAsIGxpa2Ugc286OgorCisgICAgICAgb3MuYWNjZXNzIGluIG9zLnN1cHBvcnRzX2VmZmVjdGl2ZV9pZHMKKworICAgQ3VycmVudGx5ICplZmZlY3RpdmVfaWRzKiBvbmx5IHdvcmtzIG9uIFVuaXggcGxhdGZvcm1zOyBpdCBkb2VzIG5vdCB3b3JrIG9uCisgICBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogc3VwcG9ydHNfZmQKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHNwZWNpZnlpbmcgdGhlaXIgKnBhdGgqIHBhcmFtZXRlciBhcyBhbiBvcGVuIGZpbGUKKyAgIGRlc2NyaXB0b3IuICBEaWZmZXJlbnQgcGxhdGZvcm1zIHByb3ZpZGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHksIGFuZCBhbgorICAgb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbiBvbmUgbWlnaHQgYmUgdW5zdXBwb3J0ZWQgb24gYW5vdGhlci4gIEZvcgorICAgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQgc3VwcG9ydCAqZmQqIGFsd2F5cyBhbGxvdyBzcGVjaWZ5aW5nCisgICB0aGUgcGFyYW1ldGVyLCBidXQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgbm90CisgICBhY3R1YWxseSBhdmFpbGFibGUuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHBlcm1pdHMgc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUKKyAgIGRlc2NyaXB0b3IgZm9yIGl0cyAqcGF0aCogcGFyYW1ldGVyLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbgorICAgYGBzdXBwb3J0c19mZGBgLiBBcyBhbiBleGFtcGxlLCB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyCisgICA6ZnVuYzpgb3MuY2hkaXJgIGFjY2VwdHMgb3BlbiBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gY2FsbGVkIG9uIHlvdXIgbG9jYWwKKyAgIHBsYXRmb3JtOjoKKworICAgICAgIG9zLmNoZGlyIGluIG9zLnN1cHBvcnRzX2ZkCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3MKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHVzZSBvZiB0aGVpciAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXIuICBEaWZmZXJlbnQKKyAgIHBsYXRmb3JtcyBwcm92aWRlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5LCBhbmQgYW4gb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbgorICAgb25lIG1pZ2h0IGJlIHVuc3VwcG9ydGVkIG9uIGFub3RoZXIuICBGb3IgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQKKyAgIHN1cHBvcnQgKmZvbGxvd19zeW1saW5rcyogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcgdGhlIHBhcmFtZXRlciwgYnV0IHdpbGwKKyAgIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLgorCisgICBUbyBjaGVjayB3aGV0aGVyIGEgcGFydGljdWxhciBmdW5jdGlvbiBwZXJtaXRzIHVzZSBvZiBpdHMgKmZvbGxvd19zeW1saW5rcyoKKyAgIHBhcmFtZXRlciwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgYC4gIEFzIGFuCisgICBleGFtcGxlLCB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXIKKyAgIG9mIDpmdW5jOmBvcy5zdGF0YCBpcyBsb2NhbGx5IGF2YWlsYWJsZTo6CisKKyAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKQogCiAgICBDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvICpzb3VyY2UqIG5hbWVkICpsaW5rX25hbWUqLgogCi0gICBPbiBXaW5kb3dzLCBzeW1saW5rIHZlcnNpb24gdGFrZXMgYW4gYWRkaXRpb25hbCBvcHRpb25hbCBwYXJhbWV0ZXIsCi0gICAqdGFyZ2V0X2lzX2RpcmVjdG9yeSosIHdoaWNoIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4KLQotICAgT24gV2luZG93cywgYSBzeW1saW5rIHJlcHJlc2VudHMgYSBmaWxlIG9yIGEgZGlyZWN0b3J5LCBhbmQgZG9lcyBub3QgbW9ycGggdG8KLSAgIHRoZSB0YXJnZXQgZHluYW1pY2FsbHkuICBJZiAqdGFyZ2V0X2lzX2RpcmVjdG9yeSogaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGUKLSAgIHN5bWxpbmsgd2lsbCBiZSBjcmVhdGVkIGFzIGEgZGlyZWN0b3J5IHN5bWxpbmssIG90aGVyd2lzZSBhcyBhIGZpbGUgc3ltbGluawotICAgKHRoZSBkZWZhdWx0KS4KKyAgIE9uIFdpbmRvd3MsIGEgc3ltbGluayByZXByZXNlbnRzIGVpdGhlciBhIGZpbGUgb3IgYSBkaXJlY3RvcnksIGFuZCBkb2VzIG5vdAorICAgbW9ycGggdG8gdGhlIHRhcmdldCBkeW5hbWljYWxseS4gIElmICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBzZXQgdG8gYGBUcnVlYGAsCisgICB0aGUgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBkaXJlY3Rvcnkgc3ltbGluaywgb3RoZXJ3aXNlIGFzIGEgZmlsZSBzeW1saW5rCisgICAodGhlIGRlZmF1bHQpLiAgT24gbm9uLVdpbmRvdyBwbGF0Zm9ybXMsICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBpZ25vcmVkLgogCiAgICBTeW1ib2xpYyBsaW5rIHN1cHBvcnQgd2FzIGludHJvZHVjZWQgaW4gV2luZG93cyA2LjAgKFZpc3RhKS4gIDpmdW5jOmBzeW1saW5rYAogICAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIG9uIFdpbmRvd3MgdmVyc2lvbnMgZWFybGllciB0aGFuIDYuMC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgLi4gbm90ZTo6CiAKLSAgICAgIFRoZSAqU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UqIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseQotICAgICAgY3JlYXRlIHN5bWxpbmtzLiBUaGlzIHByaXZpbGVnZSBpcyBub3QgdHlwaWNhbGx5IGdyYW50ZWQgdG8gcmVndWxhcgotICAgICAgdXNlcnMgYnV0IGlzIGF2YWlsYWJsZSB0byBhY2NvdW50cyB3aGljaCBjYW4gZXNjYWxhdGUgcHJpdmlsZWdlcyB0byB0aGUKLSAgICAgIGFkbWluaXN0cmF0b3IgbGV2ZWwuIEVpdGhlciBvYnRhaW5pbmcgdGhlIHByaXZpbGVnZSBvciBydW5uaW5nIHlvdXIKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSAqU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UqIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvCisgICAgICBzdWNjZXNzZnVsbHkgY3JlYXRlIHN5bWxpbmtzLiBUaGlzIHByaXZpbGVnZSBpcyBub3QgdHlwaWNhbGx5IGdyYW50ZWQgdG8KKyAgICAgIHJlZ3VsYXIgdXNlcnMgYnV0IGlzIGF2YWlsYWJsZSB0byBhY2NvdW50cyB3aGljaCBjYW4gZXNjYWxhdGUgcHJpdmlsZWdlcworICAgICAgdG8gdGhlIGFkbWluaXN0cmF0b3IgbGV2ZWwuIEVpdGhlciBvYnRhaW5pbmcgdGhlIHByaXZpbGVnZSBvciBydW5uaW5nIHlvdXIKICAgICAgIGFwcGxpY2F0aW9uIGFzIGFuIGFkbWluaXN0cmF0b3IgYXJlIHdheXMgdG8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBzeW1saW5rcy4KIAogICAgICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBhbiB1bnByaXZpbGVnZWQKQEAgLTE0NjMsMzEgKzIwNTAsODUgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzIDYuMCAoVmlzdGEpIHN5bWJvbGljIGxpbmtzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKKyAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAotLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCkKIAotICAgUmVtb3ZlIChkZWxldGUpIHRoZSBmaWxlICpwYXRoKi4gIFRoaXMgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMKLSAgIDpmdW5jOmByZW1vdmVgOyB0aGUgOmZ1bmM6YHVubGlua2AgbmFtZSBpcyBpdHMgdHJhZGl0aW9uYWwgVW5peAotICAgbmFtZS4KKy4uIGZ1bmN0aW9uOjogc3luYygpCisKKyAgIEZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHRydW5jYXRlKHBhdGgsIGxlbmd0aCkKKworICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byAqcGF0aCosIHNvIHRoYXQgaXQgaXMgYXQgbW9zdAorICAgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0bworICAgOmZ1bmM6YHJlbW92ZWA7IHRoZSBgYHVubGlua2BgIG5hbWUgaXMgaXRzIHRyYWRpdGlvbmFsIFVuaXgKKyAgIG5hbWUuICBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciA6ZnVuYzpgcmVtb3ZlYCBmb3IKKyAgIGZ1cnRoZXIgaW5mb3JtYXRpb24uCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCi0uLiBmdW5jdGlvbjo6IHV0aW1lKHBhdGgsIHRpbWVzKQogCi0gICBTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpwYXRoKi4gSWYgKnRpbWVzKgotICAgaXMgYGBOb25lYGAsIHRoZW4gdGhlIGZpbGUncyBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIGFyZSBzZXQgdG8gdGhlIGN1cnJlbnQKLSAgIHRpbWUuIChUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gcnVubmluZyB0aGUgVW5peCBwcm9ncmFtIDpwcm9ncmFtOmB0b3VjaGAgb24KLSAgIHRoZSBwYXRoLikgIE90aGVyd2lzZSwgKnRpbWVzKiBtdXN0IGJlIGEgMi10dXBsZSBvZiBudW1iZXJzLCBvZiB0aGUgZm9ybQotICAgYGAoYXRpbWUsIG10aW1lKWBgIHdoaWNoIGlzIHVzZWQgdG8gc2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzLAotICAgcmVzcGVjdGl2ZWx5LiBXaGV0aGVyIGEgZGlyZWN0b3J5IGNhbiBiZSBnaXZlbiBmb3IgKnBhdGgqIGRlcGVuZHMgb24gd2hldGhlcgotICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW1wbGVtZW50cyBkaXJlY3RvcmllcyBhcyBmaWxlcyAoZm9yIGV4YW1wbGUsIFdpbmRvd3MKLSAgIGRvZXMgbm90KS4gIE5vdGUgdGhhdCB0aGUgZXhhY3QgdGltZXMgeW91IHNldCBoZXJlIG1heSBub3QgYmUgcmV0dXJuZWQgYnkgYQotICAgc3Vic2VxdWVudCA6ZnVuYzpgfm9zLnN0YXRgIGNhbGwsIGRlcGVuZGluZyBvbiB0aGUgcmVzb2x1dGlvbiB3aXRoIHdoaWNoIHlvdXIKLSAgIG9wZXJhdGluZyBzeXN0ZW0gcmVjb3JkcyBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lczsgc2VlIDpmdW5jOmB+b3Muc3RhdGAuCisuLiBmdW5jdGlvbjo6IHV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICosIG5zPU5vbmUsIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqcGF0aCouCisKKyAgIDpmdW5jOmB1dGltZWAgdGFrZXMgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsICp0aW1lcyogYW5kICpucyouCisgICBUaGVzZSBzcGVjaWZ5IHRoZSB0aW1lcyBzZXQgb24gKnBhdGgqIGFuZCBhcmUgdXNlZCBhcyBmb2xsb3dzOgorCisgICAtIElmICpucyogaXMgbm90IGBgTm9uZWBgLAorICAgICBpdCBtdXN0IGJlIGEgMi10dXBsZSBvZiB0aGUgZm9ybSBgYChhdGltZV9ucywgbXRpbWVfbnMpYGAKKyAgICAgd2hlcmUgZWFjaCBtZW1iZXIgaXMgYW4gaW50IGV4cHJlc3NpbmcgbmFub3NlY29uZHMuCisgICAtIElmICp0aW1lcyogaXMgbm90IGBgTm9uZWBgLAorICAgICBpdCBtdXN0IGJlIGEgMi10dXBsZSBvZiB0aGUgZm9ybSBgYChhdGltZSwgbXRpbWUpYGAKKyAgICAgd2hlcmUgZWFjaCBtZW1iZXIgaXMgYW4gaW50IG9yIGZsb2F0IGV4cHJlc3Npbmcgc2Vjb25kcy4KKyAgIC0gSWYgKnRpbWVzKiBhbmQgKm5zKiBhcmUgYm90aCBgYE5vbmVgYCwKKyAgICAgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgYGBucz0oYXRpbWVfbnMsIG10aW1lX25zKWBgCisgICAgIHdoZXJlIGJvdGggdGltZXMgYXJlIHRoZSBjdXJyZW50IHRpbWUuCisgICAgIChUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gcnVubmluZyB0aGUgVW5peCBwcm9ncmFtCisgICAgIDpwcm9ncmFtOmB0b3VjaGAgb24gKnBhdGgqLikKKworICAgSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeSB0dXBsZXMgZm9yIGJvdGggKnRpbWVzKiBhbmQgKm5zKi4KKworICAgV2hldGhlciBhIGRpcmVjdG9yeSBjYW4gYmUgZ2l2ZW4gZm9yICpwYXRoKgorICAgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGltcGxlbWVudHMgZGlyZWN0b3JpZXMgYXMgZmlsZXMKKyAgIChmb3IgZXhhbXBsZSwgV2luZG93cyBkb2VzIG5vdCkuICBOb3RlIHRoYXQgdGhlIGV4YWN0IHRpbWVzIHlvdSBzZXQgaGVyZSBtYXkKKyAgIG5vdCBiZSByZXR1cm5lZCBieSBhIHN1YnNlcXVlbnQgOmZ1bmM6YH5vcy5zdGF0YCBjYWxsLCBkZXBlbmRpbmcgb24gdGhlCisgICByZXNvbHV0aW9uIHdpdGggd2hpY2ggeW91ciBvcGVyYXRpbmcgc3lzdGVtIHJlY29yZHMgYWNjZXNzIGFuZCBtb2RpZmljYXRpb24KKyAgIHRpbWVzOyBzZWUgOmZ1bmM6YH5vcy5zdGF0YC4gIFRoZSBiZXN0IHdheSB0byBwcmVzZXJ2ZSBleGFjdCB0aW1lcyBpcyB0bworICAgdXNlIHRoZSAqc3RfYXRpbWVfbnMqIGFuZCAqc3RfbXRpbWVfbnMqIGZpZWxkcyBmcm9tIHRoZSA6ZnVuYzpgb3Muc3RhdGAKKyAgIHJlc3VsdCBvYmplY3Qgd2l0aCB0aGUgKm5zKiBwYXJhbWV0ZXIgdG8gYHV0aW1lYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAsCisgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCisgICAgICBhbmQgdGhlICpkaXJfZmQqLCAqZm9sbG93X3N5bWxpbmtzKiwgYW5kICpucyogcGFyYW1ldGVycy4KKwogCiAuLiBmdW5jdGlvbjo6IHdhbGsodG9wLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgZm9sbG93bGlua3M9RmFsc2UpCiAKQEAgLTE1MzQsOSArMjE3NSw5IEBACiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBCZSBhd2FyZSB0aGF0IHNldHRpbmcgKmZvbGxvd2xpbmtzKiB0byBgYFRydWVgYCBjYW4gbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24gaWYgYQotICAgICAgbGluayBwb2ludHMgdG8gYSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0c2VsZi4gOmZ1bmM6YHdhbGtgIGRvZXMgbm90IGtlZXAgdHJhY2sgb2YKLSAgICAgIHRoZSBkaXJlY3RvcmllcyBpdCB2aXNpdGVkIGFscmVhZHkuCisgICAgICBCZSBhd2FyZSB0aGF0IHNldHRpbmcgKmZvbGxvd2xpbmtzKiB0byBgYFRydWVgYCBjYW4gbGVhZCB0byBpbmZpbml0ZQorICAgICAgcmVjdXJzaW9uIGlmIGEgbGluayBwb2ludHMgdG8gYSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0c2VsZi4gOmZ1bmM6YHdhbGtgCisgICAgICBkb2VzIG5vdCBrZWVwIHRyYWNrIG9mIHRoZSBkaXJlY3RvcmllcyBpdCB2aXNpdGVkIGFscmVhZHkuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xNTcyLDYgKzIyMTMsMTM3IEBACiAgICAgICAgICAgICAgIG9zLnJtZGlyKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKIAogCisuLiBmdW5jdGlvbjo6IGZ3YWxrKHRvcD0nLicsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKQorCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IGRpcmVjdG9yeTsgd2Fsa2luZworICAgICAgc2luZ2xlOiBkaXJlY3Rvcnk7IHRyYXZlcnNhbAorCisgICBUaGlzIGJlaGF2ZXMgZXhhY3RseSBsaWtlIDpmdW5jOmB3YWxrYCwgZXhjZXB0IHRoYXQgaXQgeWllbGRzIGEgNC10dXBsZQorICAgYGAoZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcywgZGlyZmQpYGAsIGFuZCBpdCBzdXBwb3J0cyBgYGRpcl9mZGBgLgorCisgICAqZGlycGF0aCosICpkaXJuYW1lcyogYW5kICpmaWxlbmFtZXMqIGFyZSBpZGVudGljYWwgdG8gOmZ1bmM6YHdhbGtgIG91dHB1dCwKKyAgIGFuZCAqZGlyZmQqIGlzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byB0aGUgZGlyZWN0b3J5ICpkaXJwYXRoKi4KKworICAgVGhpcyBmdW5jdGlvbiBhbHdheXMgc3VwcG9ydHMgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLiAgTm90ZSBob3dldmVyCisgICB0aGF0LCB1bmxpa2Ugb3RoZXIgZnVuY3Rpb25zLCB0aGUgOmZ1bmM6YGZ3YWxrYCBkZWZhdWx0IHZhbHVlIGZvcgorICAgKmZvbGxvd19zeW1saW5rcyogaXMgYGBGYWxzZWBgLgorCisgICAuLiBub3RlOjoKKworICAgICAgU2luY2UgOmZ1bmM6YGZ3YWxrYCB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycywgdGhvc2UgYXJlIG9ubHkgdmFsaWQgdW50aWwKKyAgICAgIHRoZSBuZXh0IGl0ZXJhdGlvbiBzdGVwLCBzbyB5b3Ugc2hvdWxkIGR1cGxpY2F0ZSB0aGVtIChlLmcuIHdpdGgKKyAgICAgIDpmdW5jOmBkdXBgKSBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gbG9uZ2VyLgorCisgICBUaGlzIGV4YW1wbGUgZGlzcGxheXMgdGhlIG51bWJlciBvZiBieXRlcyB0YWtlbiBieSBub24tZGlyZWN0b3J5IGZpbGVzIGluIGVhY2gKKyAgIGRpcmVjdG9yeSB1bmRlciB0aGUgc3RhcnRpbmcgZGlyZWN0b3J5LCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGxvb2sgdW5kZXIgYW55CisgICBDVlMgc3ViZGlyZWN0b3J5OjoKKworICAgICAgaW1wb3J0IG9zCisgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygncHl0aG9uL0xpYi9lbWFpbCcpOgorICAgICAgICAgIHByaW50KHJvb3QsICJjb25zdW1lcyIsIGVuZD0iIikKKyAgICAgICAgICBwcmludChzdW0oW29zLnN0YXQobmFtZSwgZGlyX2ZkPXJvb3RmZCkuc3Rfc2l6ZSBmb3IgbmFtZSBpbiBmaWxlc10pLAorICAgICAgICAgICAgICAgIGVuZD0iIikKKyAgICAgICAgICBwcmludCgiYnl0ZXMgaW4iLCBsZW4oZmlsZXMpLCAibm9uLWRpcmVjdG9yeSBmaWxlcyIpCisgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKKyAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcworCisgICBJbiB0aGUgbmV4dCBleGFtcGxlLCB3YWxraW5nIHRoZSB0cmVlIGJvdHRvbS11cCBpcyBlc3NlbnRpYWw6CisgICA6ZnVuYzpgcm1kaXJgIGRvZXNuJ3QgYWxsb3cgZGVsZXRpbmcgYSBkaXJlY3RvcnkgYmVmb3JlIHRoZSBkaXJlY3RvcnkgaXMKKyAgIGVtcHR5OjoKKworICAgICAgIyBEZWxldGUgZXZlcnl0aGluZyByZWFjaGFibGUgZnJvbSB0aGUgZGlyZWN0b3J5IG5hbWVkIGluICJ0b3AiLAorICAgICAgIyBhc3N1bWluZyB0aGVyZSBhcmUgbm8gc3ltYm9saWMgbGlua3MuCisgICAgICAjIENBVVRJT046ICBUaGlzIGlzIGRhbmdlcm91cyEgIEZvciBleGFtcGxlLCBpZiB0b3AgPT0gJy8nLCBpdAorICAgICAgIyBjb3VsZCBkZWxldGUgYWxsIHlvdXIgZGlzayBmaWxlcy4KKyAgICAgIGltcG9ydCBvcworICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsodG9wLCB0b3Bkb3duPUZhbHNlKToKKyAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKKyAgICAgICAgICAgICAgb3Mucm1kaXIobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBhdmFpbGFibGUgb24gTGludXggb25seS4KKworLi4gZnVuY3Rpb246OiBnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmb3IKKyAgICpwYXRoKi4gKmF0dHJpYnV0ZSogY2FuIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgc3RyLCBpdCBpcyBlbmNvZGVkCisgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisKKy4uIGZ1bmN0aW9uOjogbGlzdHhhdHRyKHBhdGg9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlcyBvbiAqcGF0aCouICBUaGUKKyAgIGF0dHJpYnV0ZXMgaW4gdGhlIGxpc3QgYXJlIHJlcHJlc2VudGVkIGFzIHN0cmluZ3MgZGVjb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4gIElmICpwYXRoKiBpcyBgYE5vbmVgYCwgOmZ1bmM6YGxpc3R4YXR0cmAgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50CisgICBkaXJlY3RvcnkuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKworLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KKyAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisKKy4uIGZ1bmN0aW9uOjogc2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFNldCB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogb24gKnBhdGgqIHRvICp2YWx1ZSouCisgICAqYXR0cmlidXRlKiBtdXN0IGJlIGEgYnl0ZXMgb3Igc3RyIHdpdGggbm8gZW1iZWRkZWQgTlVMcy4gSWYgaXQgaXMgYSBzdHIsCisgICBpdCBpcyBlbmNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuICAqZmxhZ3MqIG1heSBiZQorICAgOmRhdGE6YFhBVFRSX1JFUExBQ0VgIG9yIDpkYXRhOmBYQVRUUl9DUkVBVEVgLiBJZiA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgaXMKKyAgIGdpdmVuIGFuZCB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LCBgYEVFWElTVFNgYCB3aWxsIGJlIHJhaXNlZC4KKyAgIElmIDpkYXRhOmBYQVRUUl9DUkVBVEVgIGlzIGdpdmVuIGFuZCB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzLCB0aGUKKyAgIGF0dHJpYnV0ZSB3aWxsIG5vdCBiZSBjcmVhdGVkIGFuZCBgYEVOT0RBVEFgYCB3aWxsIGJlIHJhaXNlZC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKKyAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KKworCisuLiBkYXRhOjogWEFUVFJfU0laRV9NQVgKKworICAgVGhlIG1heGltdW0gc2l6ZSB0aGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGNhbiBiZS4gQ3VycmVudGx5LCB0aGlzCisgICBpcyA2NCBraWxvYnl0ZXMgb24gTGludXguCisKKworLi4gZGF0YTo6IFhBVFRSX0NSRUFURQorCisgICBUaGlzIGlzIGEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSBmbGFncyBhcmd1bWVudCBpbiA6ZnVuYzpgc2V0eGF0dHJgLiBJdAorICAgaW5kaWNhdGVzIHRoZSBvcGVyYXRpb24gbXVzdCBjcmVhdGUgYW4gYXR0cmlidXRlLgorCisKKy4uIGRhdGE6OiBYQVRUUl9SRVBMQUNFCisKKyAgIFRoaXMgaXMgYSBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhlIGZsYWdzIGFyZ3VtZW50IGluIDpmdW5jOmBzZXR4YXR0cmAuIEl0CisgICBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBtdXN0IHJlcGxhY2UgYW4gZXhpc3RpbmcgYXR0cmlidXRlLgorCisKIC4uIF9vcy1wcm9jZXNzOgogCiBQcm9jZXNzIE1hbmFnZW1lbnQKQEAgLTE2NDUsOCArMjQxNywxNiBAQAogICAgOmZ1bmM6YGV4ZWNscGAsIDpmdW5jOmBleGVjdmAsIGFuZCA6ZnVuYzpgZXhlY3ZwYCBhbGwgY2F1c2UgdGhlIG5ldyBwcm9jZXNzIHRvCiAgICBpbmhlcml0IHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgY3VycmVudCBwcm9jZXNzLgogCisgICBGb3IgOmZ1bmM6YGV4ZWN2ZWAgb24gc29tZSBwbGF0Zm9ybXMsICpwYXRoKiBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbgorICAgZmlsZSBkZXNjcmlwdG9yLiAgVGhpcyBmdW5jdGlvbmFsaXR5IG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIHlvdXIgcGxhdGZvcm07CisgICB5b3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90IGl0IGlzIGF2YWlsYWJsZSB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZmRgLgorICAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKgorICAgICAgZm9yIDpmdW5jOmBleGVjdmVgLgogCiAuLiBmdW5jdGlvbjo6IF9leGl0KG4pCiAKQEAgLTE4MzYsNiArMjYxNiw4IEBACiAgICB3aWxsIGJlIHNldCB0byAqc2lnKi4gVGhlIFdpbmRvd3MgdmVyc2lvbiBvZiA6ZnVuYzpga2lsbGAgYWRkaXRpb25hbGx5IHRha2VzCiAgICBwcm9jZXNzIGhhbmRsZXMgdG8gYmUga2lsbGVkLgogCisgICBTZWUgYWxzbyA6ZnVuYzpgc2lnbmFsLnB0aHJlYWRfa2lsbGAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgV2luZG93cyBzdXBwb3J0LgogCkBAIC0yMDI2LDE0ICsyODA4LDMwIEBACiAKIC4uIGZ1bmN0aW9uOjogdGltZXMoKQogCi0gICBSZXR1cm4gYSA1LXR1cGxlIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBhY2N1bXVsYXRlZCAocHJvY2Vzc29yCi0gICBvciBvdGhlcikgdGltZXMsIGluIHNlY29uZHMuICBUaGUgaXRlbXMgYXJlOiB1c2VyIHRpbWUsIHN5c3RlbSB0aW1lLAotICAgY2hpbGRyZW4ncyB1c2VyIHRpbWUsIGNoaWxkcmVuJ3Mgc3lzdGVtIHRpbWUsIGFuZCBlbGFwc2VkIHJlYWwgdGltZSBzaW5jZSBhCi0gICBmaXhlZCBwb2ludCBpbiB0aGUgcGFzdCwgaW4gdGhhdCBvcmRlci4gIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQotICAgOm1hbnBhZ2U6YHRpbWVzKDIpYCBvciB0aGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIFBsYXRmb3JtIEFQSSBkb2N1bWVudGF0aW9uLgotICAgT24gV2luZG93cywgb25seSB0aGUgZmlyc3QgdHdvIGl0ZW1zIGFyZSBmaWxsZWQsIHRoZSBvdGhlcnMgYXJlIHplcm8uCisgICBSZXR1cm5zIHRoZSBjdXJyZW50IGdsb2JhbCBwcm9jZXNzIHRpbWVzLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBmaXZlIGF0dHJpYnV0ZXM6CiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cworICAgKiA6YXR0cjpgdXNlcmAgLSB1c2VyIHRpbWUKKyAgICogOmF0dHI6YHN5c3RlbWAgLSBzeXN0ZW0gdGltZQorICAgKiA6YXR0cjpgY2hpbGRyZW5fdXNlcmAgLSB1c2VyIHRpbWUgb2YgYWxsIGNoaWxkIHByb2Nlc3NlcworICAgKiA6YXR0cjpgY2hpbGRyZW5fc3lzdGVtYCAtIHN5c3RlbSB0aW1lIG9mIGFsbCBjaGlsZCBwcm9jZXNzZXMKKyAgICogOmF0dHI6YGVsYXBzZWRgIC0gZWxhcHNlZCByZWFsIHRpbWUgc2luY2UgYSBmaXhlZCBwb2ludCBpbiB0aGUgcGFzdAorCisgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoaXMgb2JqZWN0IGFsc28gYmVoYXZlcyBsaWtlIGEgZml2ZS10dXBsZQorICAgY29udGFpbmluZyA6YXR0cjpgdXNlcmAsIDphdHRyOmBzeXN0ZW1gLCA6YXR0cjpgY2hpbGRyZW5fdXNlcmAsCisgICA6YXR0cjpgY2hpbGRyZW5fc3lzdGVtYCwgYW5kIDphdHRyOmBlbGFwc2VkYCBpbiB0aGF0IG9yZGVyLgorCisgICBTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UKKyAgIDptYW5wYWdlOmB0aW1lcygyKWAgb3IgdGhlIGNvcnJlc3BvbmRpbmcgV2luZG93cyBQbGF0Zm9ybSBBUEkgZG9jdW1lbnRhdGlvbi4KKyAgIE9uIFdpbmRvd3MsIG9ubHkgOmF0dHI6YHVzZXJgIGFuZCA6YXR0cjpgc3lzdGVtYCBhcmUga25vd247IHRoZSBvdGhlcgorICAgYXR0cmlidXRlcyBhcmUgemVyby4KKyAgIE9uIE9TLzIsIG9ubHkgOmF0dHI6YGVsYXBzZWRgIGlzIGtub3duOyB0aGUgb3RoZXIgYXR0cmlidXRlcyBhcmUgemVyby4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSB0dXBsZS1saWtlIG9iamVjdAorICAgICAgd2l0aCBuYW1lZCBhdHRyaWJ1dGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogd2FpdCgpCkBAIC0yMDQ2LDYgKzI4NDQsNTggQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisuLiBmdW5jdGlvbjo6IHdhaXRpZChpZHR5cGUsIGlkLCBvcHRpb25zKQorCisgICBXYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuCisgICAqaWR0eXBlKiBjYW4gYmUgOmRhdGE6YFBfUElEYCwgOmRhdGE6YFBfUEdJRGAgb3IgOmRhdGE6YFBfQUxMYC4KKyAgICppZCogc3BlY2lmaWVzIHRoZSBwaWQgdG8gd2FpdCBvbi4KKyAgICpvcHRpb25zKiBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiA6ZGF0YTpgV0VYSVRFRGAsCisgICA6ZGF0YTpgV1NUT1BQRURgIG9yIDpkYXRhOmBXQ09OVElOVUVEYCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGgKKyAgIDpkYXRhOmBXTk9IQU5HYCBvciA6ZGF0YTpgV05PV0FJVGAuIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0CisgICByZXByZXNlbnRpbmcgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSA6Yzp0eXBlOmBzaWdpbmZvX3RgIHN0cnVjdHVyZSwgbmFtZWx5OgorICAgOmF0dHI6YHNpX3BpZGAsIDphdHRyOmBzaV91aWRgLCA6YXR0cjpgc2lfc2lnbm9gLCA6YXR0cjpgc2lfc3RhdHVzYCwKKyAgIDphdHRyOmBzaV9jb2RlYCBvciBgYE5vbmVgYCBpZiA6ZGF0YTpgV05PSEFOR2AgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmUgbm8KKyAgIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBQX1BJRAorICAgICAgICAgIFBfUEdJRAorICAgICAgICAgIFBfQUxMCisKKyAgIFRoZXNlIGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIGZvciAqaWR0eXBlKiBpbiA6ZnVuYzpgd2FpdGlkYC4gVGhleSBhZmZlY3QKKyAgIGhvdyAqaWQqIGlzIGludGVycHJldGVkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogV0VYSVRFRAorICAgICAgICAgIFdTVE9QUEVECisgICAgICAgICAgV05PV0FJVAorCisgICBGbGFncyB0aGF0IGNhbiBiZSB1c2VkIGluICpvcHRpb25zKiBpbiA6ZnVuYzpgd2FpdGlkYCB0aGF0IHNwZWNpZnkgd2hhdAorICAgY2hpbGQgc2lnbmFsIHRvIHdhaXQgZm9yLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTERfRVhJVEVECisgICAgICAgICAgQ0xEX0RVTVBFRAorICAgICAgICAgIENMRF9UUkFQUEVECisgICAgICAgICAgQ0xEX0NPTlRJTlVFRAorCisgICBUaGVzZSBhcmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgOmF0dHI6YHNpX2NvZGVgIGluIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmB3YWl0aWRgLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogd2FpdHBpZChwaWQsIG9wdGlvbnMpCiAKQEAgLTIxMTAsNyArMjk2MCw3IEBACiAgICBUaGlzIG9wdGlvbiBjYXVzZXMgY2hpbGQgcHJvY2Vzc2VzIHRvIGJlIHJlcG9ydGVkIGlmIHRoZXkgaGF2ZSBiZWVuIGNvbnRpbnVlZAogICAgZnJvbSBhIGpvYiBjb250cm9sIHN0b3Agc2luY2UgdGhlaXIgc3RhdHVzIHdhcyBsYXN0IHJlcG9ydGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFNvbWUgVW5peCBzeXN0ZW1zLgorICAgQXZhaWxhYmlsaXR5OiBzb21lIFVuaXggc3lzdGVtcy4KIAogCiAuLiBkYXRhOjogV1VOVFJBQ0VECkBAIC0yMTg3LDYgKzMwMzcsMTI5IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorSW50ZXJmYWNlIHRvIHRoZSBzY2hlZHVsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIGZ1bmN0aW9ucyBjb250cm9sIGhvdyBhIHByb2Nlc3MgaXMgYWxsb2NhdGVkIENQVSB0aW1lIGJ5IHRoZSBvcGVyYXRpbmcKK3N5c3RlbS4gVGhleSBhcmUgb25seSBhdmFpbGFibGUgb24gc29tZSBVbml4IHBsYXRmb3Jtcy4gRm9yIG1vcmUgZGV0YWlsZWQKK2luZm9ybWF0aW9uLCBjb25zdWx0IHlvdXIgVW5peCBtYW5wYWdlcy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSBmb2xsb3dpbmcgc2NoZWR1bGluZyBwb2xpY2llcyBhcmUgZXhwb3NlZCBpZiB0aGV5IGFyZSBhIHN1cHBvcnRlZCBieSB0aGUKK29wZXJhdGluZyBzeXN0ZW0uCisKKy4uIGRhdGE6OiBTQ0hFRF9PVEhFUgorCisgICBUaGUgZGVmYXVsdCBzY2hlZHVsaW5nIHBvbGljeS4KKworLi4gZGF0YTo6IFNDSEVEX0JBVENICisKKyAgIFNjaGVkdWxpbmcgcG9saWN5IGZvciBDUFUtaW50ZW5zaXZlIHByb2Nlc3NlcyB0aGF0IHRyaWVzIHRvIHByZXNlcnZlCisgICBpbnRlcmFjdGl2aXR5IG9uIHRoZSByZXN0IG9mIHRoZSBjb21wdXRlci4KKworLi4gZGF0YTo6IFNDSEVEX0lETEUKKworICAgU2NoZWR1bGluZyBwb2xpY3kgZm9yIGV4dHJlbWVseSBsb3cgcHJpb3JpdHkgYmFja2dyb3VuZCB0YXNrcy4KKworLi4gZGF0YTo6IFNDSEVEX1NQT1JBRElDCisKKyAgIFNjaGVkdWxpbmcgcG9saWN5IGZvciBzcG9yYWRpYyBzZXJ2ZXIgcHJvZ3JhbXMuCisKKy4uIGRhdGE6OiBTQ0hFRF9GSUZPCisKKyAgIEEgRmlyc3QgSW4gRmlyc3QgT3V0IHNjaGVkdWxpbmcgcG9saWN5LgorCisuLiBkYXRhOjogU0NIRURfUlIKKworICAgQSByb3VuZC1yb2JpbiBzY2hlZHVsaW5nIHBvbGljeS4KKworLi4gZGF0YTo6IFNDSEVEX1JFU0VUX09OX0ZPUksKKworICAgVGhpcyBmbGFnIGNhbiBPUidlZCB3aXRoIGFueSBvdGhlciBzY2hlZHVsaW5nIHBvbGljeS4gV2hlbiBhIHByb2Nlc3Mgd2l0aAorICAgdGhpcyBmbGFnIHNldCBmb3JrcywgaXRzIGNoaWxkJ3Mgc2NoZWR1bGluZyBwb2xpY3kgYW5kIHByaW9yaXR5IGFyZSByZXNldCB0bworICAgdGhlIGRlZmF1bHQuCisKKworLi4gY2xhc3M6OiBzY2hlZF9wYXJhbShzY2hlZF9wcmlvcml0eSkKKworICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIHR1bmFibGUgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIHVzZWQgaW4KKyAgIDpmdW5jOmBzY2hlZF9zZXRwYXJhbWAsIDpmdW5jOmBzY2hlZF9zZXRzY2hlZHVsZXJgLCBhbmQKKyAgIDpmdW5jOmBzY2hlZF9nZXRwYXJhbWAuIEl0IGlzIGltbXV0YWJsZS4KKworICAgQXQgdGhlIG1vbWVudCwgdGhlcmUgaXMgb25seSBvbmUgcG9zc2libGUgcGFyYW1ldGVyOgorCisgICAuLiBhdHRyaWJ1dGU6OiBzY2hlZF9wcmlvcml0eQorCisgICAgICBUaGUgc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgYSBzY2hlZHVsaW5nIHBvbGljeS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KQorCisgICBHZXQgdGhlIG1pbmltdW0gcHJpb3JpdHkgdmFsdWUgZm9yICpwb2xpY3kqLiAqcG9saWN5KiBpcyBvbmUgb2YgdGhlCisgICBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMgYWJvdmUuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSkKKworICAgR2V0IHRoZSBtYXhpbXVtIHByaW9yaXR5IHZhbHVlIGZvciAqcG9saWN5Ki4gKnBvbGljeSogaXMgb25lIG9mIHRoZQorICAgc2NoZWR1bGluZyBwb2xpY3kgY29uc3RhbnRzIGFib3ZlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCBwYXJhbSkKKworICAgU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucworICAgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gKnBvbGljeSogaXMgb25lIG9mIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMKKyAgIGFib3ZlLiAqcGFyYW0qIGlzIGEgOmNsYXNzOmBzY2hlZF9wYXJhbWAgaW5zdGFuY2UuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKQorCisgICBSZXR1cm4gdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwCisgICBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiBUaGUgcmVzdWx0IGlzIG9uZSBvZiB0aGUgc2NoZWR1bGluZyBwb2xpY3kKKyAgIGNvbnN0YW50cyBhYm92ZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pCisKKyAgIFNldCBhIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucworICAgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gKnBhcmFtKiBpcyBhIDpjbGFzczpgc2NoZWRfcGFyYW1gIGluc3RhbmNlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0cGFyYW0ocGlkKQorCisgICBSZXR1cm4gdGhlIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBhcyBhIDpjbGFzczpgc2NoZWRfcGFyYW1gIGluc3RhbmNlIGZvciB0aGUKKyAgIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCkKKworICAgUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGluIHNlY29uZHMgZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBCisgICAqcGlkKiBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF95aWVsZCgpCisKKyAgIFZvbHVudGFyaWx5IHJlbGlucXVpc2ggdGhlIENQVS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3NldGFmZmluaXR5KHBpZCwgbWFzaykKKworICAgUmVzdHJpY3QgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykgdG8gYQorICAgc2V0IG9mIENQVXMuICAqbWFzayogaXMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHRoZSBzZXQgb2YKKyAgIENQVXMgdG8gd2hpY2ggdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJlc3RyaWN0ZWQuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRhZmZpbml0eShwaWQpCisKKyAgIFJldHVybiB0aGUgc2V0IG9mIENQVXMgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MKKyAgIGlmIHplcm8pIGlzIHJlc3RyaWN0ZWQgdG8uCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnRgIHJldHVybnMgdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZQorICAgICAgc3lzdGVtLgorCisKIC4uIF9vcy1wYXRoOgogCiBNaXNjZWxsYW5lb3VzIFN5c3RlbSBJbmZvcm1hdGlvbgpAQCAtMjIxMSw3ICszMTg0LDcgQEAKICAgIGluY2x1ZGVkIGluIGBgY29uZnN0cl9uYW1lc2BgLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2l0aAogICAgOmNvbnN0OmBlcnJuby5FSU5WQUxgIGZvciB0aGUgZXJyb3IgbnVtYmVyLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBkYXRhOjogY29uZnN0cl9uYW1lcwpAQCAtMjMzMyw2ICszMzA2LDkgQEAKIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHJhbmRvbSBieXRlcyBmcm9tIGFuIE9TLXNwZWNpZmljIHJhbmRvbW5lc3Mgc291cmNlLiAgVGhlCiAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSB1bnByZWRpY3RhYmxlIGVub3VnaCBmb3IgY3J5cHRvZ3JhcGhpYyBhcHBsaWNhdGlvbnMsCi0gICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uICBPbiBhIFVOSVgtbGlrZQorICAgdGhvdWdoIGl0cyBleGFjdCBxdWFsaXR5IGRlcGVuZHMgb24gdGhlIE9TIGltcGxlbWVudGF0aW9uLiAgT24gYSBVbml4LWxpa2UKICAgIHN5c3RlbSB0aGlzIHdpbGwgcXVlcnkgL2Rldi91cmFuZG9tLCBhbmQgb24gV2luZG93cyBpdCB3aWxsIHVzZSBDcnlwdEdlblJhbmRvbS4KICAgIElmIGEgcmFuZG9tbmVzcyBzb3VyY2UgaXMgbm90IGZvdW5kLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKworICAgRm9yIGFuIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKKyAgIHByb3ZpZGVkIGJ5IHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBzZWUgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdCBiL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdAppbmRleCBlZDg0NDEzLi4zMDAyNzAwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CkBAIC0zOCw2ICszOCwxMCBAQAogICAgVGhpcyBwcm9iYWJseSBhbGwgd2FycmFudHMgYSBmb290bm90ZSBvciB0d28sIGJ1dCBJIGRvbid0IHVuZGVyc3RhbmQKICAgIHRoaW5ncyB3ZWxsIGVub3VnaCByaWdodCBub3cgdG8gd3JpdGUgaXQhICAgLS1HUFcKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIE9wZXJhdGlvbnMgaW4gdGhpcyBtb2R1bGUgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgIHdoZXJlIDpleGM6YElPRXJyb3JgCisgICB3YXMgcmFpc2VkLgorCiAKIC4uIHNlZWFsc286OgogCkBAIC01Niw3ICs2MCw3IEBACiAgICB3aGF0IHdlbnQgd3JvbmcuCiAKICAgIChJZiA6bW9kOmBvc3NhdWRpb2RldmAgcmVjZWl2ZXMgYW4gZXJyb3IgZnJvbSBhIHN5c3RlbSBjYWxsIHN1Y2ggYXMKLSAgIDpjOmZ1bmM6YG9wZW5gLCA6YzpmdW5jOmB3cml0ZWAsIG9yIDpjOmZ1bmM6YGlvY3RsYCwgaXQgcmFpc2VzIDpleGM6YElPRXJyb3JgLgorICAgOmM6ZnVuYzpgb3BlbmAsIDpjOmZ1bmM6YHdyaXRlYCwgb3IgOmM6ZnVuYzpgaW9jdGxgLCBpdCByYWlzZXMgOmV4YzpgT1NFcnJvcmAuCiAgICBFcnJvcnMgZGV0ZWN0ZWQgZGlyZWN0bHkgYnkgOm1vZDpgb3NzYXVkaW9kZXZgIHJlc3VsdCBpbiA6ZXhjOmBPU1NBdWRpb0Vycm9yYC4pCiAKICAgIChGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBleGNlcHRpb24gY2xhc3MgaXMgYWxzbyBhdmFpbGFibGUgYXMKQEAgLTE2OSw3ICsxNzMsNyBAQAogY29ycmVzcG9uZGVuY2UgaXMgb2J2aW91czogZm9yIGV4YW1wbGUsIDptZXRoOmBzZXRmbXRgIGNvcnJlc3BvbmRzIHRvIHRoZQogYGBTTkRDVExfRFNQX1NFVEZNVGBgIGlvY3RsLCBhbmQgOm1ldGg6YHN5bmNgIHRvIGBgU05EQ1RMX0RTUF9TWU5DYGAgKHRoaXMgY2FuCiBiZSB1c2VmdWwgd2hlbiBjb25zdWx0aW5nIHRoZSBPU1MgZG9jdW1lbnRhdGlvbikuICBJZiB0aGUgdW5kZXJseWluZwotOmZ1bmM6YGlvY3RsYCBmYWlscywgdGhleSBhbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCis6ZnVuYzpgaW9jdGxgIGZhaWxzLCB0aGV5IGFsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfYXVkaW9fZGV2aWNlLm5vbmJsb2NrKCkKQEAgLTM0NSw3ICszNDksNyBAQAogLi4gbWV0aG9kOjogb3NzX21peGVyX2RldmljZS5jbG9zZSgpCiAKICAgIFRoaXMgbWV0aG9kIGNsb3NlcyB0aGUgb3BlbiBtaXhlciBkZXZpY2UgZmlsZS4gIEFueSBmdXJ0aGVyIGF0dGVtcHRzIHRvIHVzZSB0aGUKLSAgIG1peGVyIGFmdGVyIHRoaXMgZmlsZSBpcyBjbG9zZWQgd2lsbCByYWlzZSBhbiA6ZXhjOmBJT0Vycm9yYC4KKyAgIG1peGVyIGFmdGVyIHRoaXMgZmlsZSBpcyBjbG9zZWQgd2lsbCByYWlzZSBhbiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLmZpbGVubygpCkBAIC00MDQsNyArNDA4LDcgQEAKICAgIHJldHVybmVkLCBidXQgYm90aCB2b2x1bWVzIGFyZSB0aGUgc2FtZS4KIAogICAgUmFpc2VzIDpleGM6YE9TU0F1ZGlvRXJyb3JgIGlmIGFuIGludmFsaWQgY29udHJvbCB3YXMgaXMgc3BlY2lmaWVkLCBvcgotICAgOmV4YzpgSU9FcnJvcmAgaWYgYW4gdW5zdXBwb3J0ZWQgY29udHJvbCBpcyBzcGVjaWZpZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBpZiBhbiB1bnN1cHBvcnRlZCBjb250cm9sIGlzIHNwZWNpZmllZC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLnNldChjb250cm9sLCAobGVmdCwgcmlnaHQpKQpAQCAtNDI4LDcgKzQzMiw3IEBACiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLnNldF9yZWNzcmMoYml0bWFzaykKIAogICAgQ2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHNwZWNpZnkgYSByZWNvcmRpbmcgc291cmNlLiAgUmV0dXJucyBhIGJpdG1hc2sgaW5kaWNhdGluZwotICAgdGhlIG5ldyByZWNvcmRpbmcgc291cmNlIChvciBzb3VyY2VzKSBpZiBzdWNjZXNzZnVsOyByYWlzZXMgOmV4YzpgSU9FcnJvcmAgaWYgYW4KKyAgIHRoZSBuZXcgcmVjb3JkaW5nIHNvdXJjZSAob3Igc291cmNlcykgaWYgc3VjY2Vzc2Z1bDsgcmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmIGFuCiAgICBpbnZhbGlkIHNvdXJjZSB3YXMgc3BlY2lmaWVkLiAgVG8gc2V0IHRoZSBjdXJyZW50IHJlY29yZGluZyBzb3VyY2UgdG8gdGhlCiAgICBtaWNyb3Bob25lIGlucHV0OjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGRiLnJzdCBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKaW5kZXggMWU5ZGU2My4uZjRlMzdhYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGRiLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wZGIucnN0CkBAIC0zOCw2ICszOCwxMSBAQAogICAgPiA8c3RyaW5nPigxKT8oKQogICAgKFBkYikKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgOm1vZDpgcmVhZGxpbmVgIG1vZHVsZSBpcyBhdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZAorICAgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcworICAgYXJndW1lbnRzIG9mIHRoZSBgYHByaW50YGAgY29tbWFuZC4KKwogOmZpbGU6YHBkYi5weWAgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLiAgRm9yCiBleGFtcGxlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggYTFmOWFmMi4uMjg3YTA4YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC0yODcsNiArMjg3LDI5IEBACiAKICAgICAgIFNlZSA6cmVmOmBwaWNrbGUtcGVyc2lzdGVudGAgZm9yIGRldGFpbHMgYW5kIGV4YW1wbGVzIG9mIHVzZXMuCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IGRpc3BhdGNoX3RhYmxlCisKKyAgICAgIEEgcGlja2xlciBvYmplY3QncyBkaXNwYXRjaCB0YWJsZSBpcyBhIHJlZ2lzdHJ5IG9mICpyZWR1Y3Rpb24KKyAgICAgIGZ1bmN0aW9ucyogb2YgdGhlIGtpbmQgd2hpY2ggY2FuIGJlIGRlY2xhcmVkIHVzaW5nCisgICAgICA6ZnVuYzpgY29weXJlZy5waWNrbGVgLiAgSXQgaXMgYSBtYXBwaW5nIHdob3NlIGtleXMgYXJlIGNsYXNzZXMKKyAgICAgIGFuZCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjdGlvbiBmdW5jdGlvbnMuICBBIHJlZHVjdGlvbiBmdW5jdGlvbgorICAgICAgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlIGFzc29jaWF0ZWQgY2xhc3MgYW5kIHNob3VsZAorICAgICAgY29uZm9ybSB0byB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgYSA6bWV0aDpgfm9iamVjdC5fX3JlZHVjZV9fYAorICAgICAgbWV0aG9kLgorCisgICAgICBCeSBkZWZhdWx0LCBhIHBpY2tsZXIgb2JqZWN0IHdpbGwgbm90IGhhdmUgYQorICAgICAgOmF0dHI6YGRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUsIGFuZCBpdCB3aWxsIGluc3RlYWQgdXNlIHRoZQorICAgICAgZ2xvYmFsIGRpc3BhdGNoIHRhYmxlIG1hbmFnZWQgYnkgdGhlIDptb2Q6YGNvcHlyZWdgIG1vZHVsZS4KKyAgICAgIEhvd2V2ZXIsIHRvIGN1c3RvbWl6ZSB0aGUgcGlja2xpbmcgZm9yIGEgc3BlY2lmaWMgcGlja2xlciBvYmplY3QKKyAgICAgIG9uZSBjYW4gc2V0IHRoZSA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSB0byBhIGRpY3QtbGlrZQorICAgICAgb2JqZWN0LiAgQWx0ZXJuYXRpdmVseSwgaWYgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YFBpY2tsZXJgIGhhcyBhCisgICAgICA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSB0aGVuIHRoaXMgd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgICAgZGVmYXVsdCBkaXNwYXRjaCB0YWJsZSBmb3IgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MuCisKKyAgICAgIFNlZSA6cmVmOmBwaWNrbGUtZGlzcGF0Y2hgIGZvciB1c2FnZSBleGFtcGxlcy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIGF0dHJpYnV0ZTo6IGZhc3QKIAogICAgICAgRGVwcmVjYXRlZC4gRW5hYmxlIGZhc3QgbW9kZSBpZiBzZXQgdG8gYSB0cnVlIHZhbHVlLiAgVGhlIGZhc3QgbW9kZQpAQCAtNTc3LDYgKzYwMCw0NCBAQAogCiAuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2RicGlja2xlLnB5CiAKKy4uIF9waWNrbGUtZGlzcGF0Y2g6CisKK0Rpc3BhdGNoIFRhYmxlcworXl5eXl5eXl5eXl5eXl5eCisKK0lmIG9uZSB3YW50cyB0byBjdXN0b21pemUgcGlja2xpbmcgb2Ygc29tZSBjbGFzc2VzIHdpdGhvdXQgZGlzdHVyYmluZworYW55IG90aGVyIGNvZGUgd2hpY2ggZGVwZW5kcyBvbiBwaWNrbGluZywgdGhlbiBvbmUgY2FuIGNyZWF0ZSBhCitwaWNrbGVyIHdpdGggYSBwcml2YXRlIGRpc3BhdGNoIHRhYmxlLgorCitUaGUgZ2xvYmFsIGRpc3BhdGNoIHRhYmxlIG1hbmFnZWQgYnkgdGhlIDptb2Q6YGNvcHlyZWdgIG1vZHVsZSBpcworYXZhaWxhYmxlIGFzIDpkYXRhOmBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlYC4gIFRoZXJlZm9yZSwgb25lIG1heQorY2hvb3NlIHRvIHVzZSBhIG1vZGlmaWVkIGNvcHkgb2YgOmRhdGE6YGNvcHlyZWcuZGlzcGF0Y2hfdGFibGVgIGFzIGEKK3ByaXZhdGUgZGlzcGF0Y2ggdGFibGUuCisKK0ZvciBleGFtcGxlIDo6CisKKyAgIGYgPSBpby5CeXRlc0lPKCkKKyAgIHAgPSBwaWNrbGUuUGlja2xlcihmKQorICAgcC5kaXNwYXRjaF90YWJsZSA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICBwLmRpc3BhdGNoX3RhYmxlW1NvbWVDbGFzc10gPSByZWR1Y2VfU29tZUNsYXNzCisKK2NyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBwaWNrbGUuUGlja2xlcmAgd2l0aCBhIHByaXZhdGUgZGlzcGF0Y2gKK3RhYmxlIHdoaWNoIGhhbmRsZXMgdGhlIGBgU29tZUNsYXNzYGAgY2xhc3Mgc3BlY2lhbGx5LiAgQWx0ZXJuYXRpdmVseSwKK3RoZSBjb2RlIDo6CisKKyAgIGNsYXNzIE15UGlja2xlcihwaWNrbGUuUGlja2xlcik6CisgICAgICAgZGlzcGF0Y2hfdGFibGUgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorICAgICAgIGRpc3BhdGNoX3RhYmxlW1NvbWVDbGFzc10gPSByZWR1Y2VfU29tZUNsYXNzCisgICBmID0gaW8uQnl0ZXNJTygpCisgICBwID0gTXlQaWNrbGVyKGYpCisKK2RvZXMgdGhlIHNhbWUsIGJ1dCBhbGwgaW5zdGFuY2VzIG9mIGBgTXlQaWNrbGVyYGAgd2lsbCBieSBkZWZhdWx0CitzaGFyZSB0aGUgc2FtZSBkaXNwYXRjaCB0YWJsZS4gIFRoZSBlcXVpdmFsZW50IGNvZGUgdXNpbmcgdGhlCis6bW9kOmBjb3B5cmVnYCBtb2R1bGUgaXMgOjoKKworICAgY29weXJlZy5waWNrbGUoU29tZUNsYXNzLCByZWR1Y2VfU29tZUNsYXNzKQorICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgcCA9IHBpY2tsZS5QaWNrbGVyKGYpCiAKIC4uIF9waWNrbGUtc3RhdGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggMzExOGZmMi4uMjJkNDRlYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTU2LDIxICs1NiwzMiBAQAogICAgTm90ZSB0aGF0IDpjbGFzczpgSW1wSW1wb3J0ZXJgIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IGJlaW5nIHVzZWQgYnkKICAgIHBsYWNlbWVudCBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisKIAogLi4gY2xhc3M6OiBJbXBMb2FkZXIoZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpCiAKICAgIDpwZXA6YDMwMmAgTG9hZGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0uCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisKIAogLi4gZnVuY3Rpb246OiBmaW5kX2xvYWRlcihmdWxsbmFtZSkKIAotICAgRmluZCBhIDpwZXA6YDMwMmAgImxvYWRlciIgb2JqZWN0IGZvciAqZnVsbG5hbWUqLgorICAgUmV0cmlldmUgYSA6cGVwOmAzMDJgIG1vZHVsZSBsb2FkZXIgZm9yIHRoZSBnaXZlbiAqZnVsbG5hbWUqLgogCi0gICBJZiAqZnVsbG5hbWUqIGNvbnRhaW5zIGRvdHMsIHBhdGggbXVzdCBiZSB0aGUgY29udGFpbmluZyBwYWNrYWdlJ3MKLSAgIGBgX19wYXRoX19gYC4gIFJldHVybnMgYGBOb25lYGAgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuCi0gICBUaGlzIGZ1bmN0aW9uIHVzZXMgOmZ1bmM6YGl0ZXJfaW1wb3J0ZXJzYCwgYW5kIGlzIHRodXMgc3ViamVjdCB0byB0aGUgc2FtZQotICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoIGFzIHRoZQotICAgV2luZG93cyByZWdpc3RyeS4KKyAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCA6ZnVuYzpgaW1wb3J0bGliLmZpbmRfbG9hZGVyYCB0aGF0CisgICBzZXRzIHRoZSAqcGF0aCogYXJndW1lbnQgY29ycmVjdGx5IHdoZW4gc2VhcmNoaW5nIGZvciBzdWJtb2R1bGVzLCBhbmQKKyAgIGFsc28gZW5zdXJlcyBwYXJlbnQgcGFja2FnZXMgKGlmIGFueSkgYXJlIGltcG9ydGVkIGJlZm9yZSBzZWFyY2hpbmcgZm9yCisgICBzdWJtb2R1bGVzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF9pbXBvcnRlcihwYXRoX2l0ZW0pCkBAIC04MCwxMyArOTEsMTMgQEAKICAgIFRoZSByZXR1cm5lZCBpbXBvcnRlciBpcyBjYWNoZWQgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpZiBpdCB3YXMKICAgIG5ld2x5IGNyZWF0ZWQgYnkgYSBwYXRoIGhvb2suCiAKLSAgIElmIHRoZXJlIGlzIG5vIGltcG9ydGVyLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBiYXNpYyBpbXBvcnQgbWFjaGluZXJ5IGlzCi0gICByZXR1cm5lZC4gIFRoaXMgd3JhcHBlciBpcyBuZXZlciBpbnNlcnRlZCBpbnRvIHRoZSBpbXBvcnRlciBjYWNoZSAoYGBOb25lYGAKLSAgIGlzIGluc2VydGVkIGluc3RlYWQpLgotCiAgICBUaGUgY2FjaGUgKG9yIHBhcnQgb2YgaXQpIGNhbiBiZSBjbGVhcmVkIG1hbnVhbGx5IGlmIGEgcmVzY2FuIG9mCiAgICA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzIG5lY2Vzc2FyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRfbG9hZGVyKG1vZHVsZV9vcl9uYW1lKQogCkBAIC0xMDIsNDYgKzExMyw1MiBAQAogICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoIGFzIHRoZQogICAgV2luZG93cyByZWdpc3RyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBpdGVyX2ltcG9ydGVycyhmdWxsbmFtZT0nJykKIAogICAgWWllbGQgOnBlcDpgMzAyYCBpbXBvcnRlcnMgZm9yIHRoZSBnaXZlbiBtb2R1bGUgbmFtZS4KIAotICAgSWYgZnVsbG5hbWUgY29udGFpbnMgYSAnLicsIHRoZSBpbXBvcnRlcnMgd2lsbCBiZSBmb3IgdGhlIHBhY2thZ2UgY29udGFpbmluZwotICAgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgaW1wb3J0ZXJzIGZvciA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsCi0gICA6ZGF0YTpgc3lzLnBhdGhgLCBhbmQgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBtYWNoaW5lcnksIGluIHRoYXQgb3JkZXIuICBJZgotICAgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUgZWZmZWN0Ci0gICBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgorICAgSWYgZnVsbG5hbWUgY29udGFpbnMgYSAnLicsIHRoZSBpbXBvcnRlcnMgd2lsbCBiZSBmb3IgdGhlIHBhY2thZ2UKKyAgIGNvbnRhaW5pbmcgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsIHJlZ2lzdGVyZWQgdG9wIGxldmVsCisgICBpbXBvcnRlcnMgKGkuZS4gdGhvc2Ugb24gYm90aCBzeXMubWV0YV9wYXRoIGFuZCBzeXMucGF0aF9ob29rcykuCiAKLSAgIE5vbi06cGVwOmAzMDJgIG1lY2hhbmlzbXMgKGUuZy4gdGhlIFdpbmRvd3MgcmVnaXN0cnkpIHVzZWQgYnkgdGhlIHN0YW5kYXJkCi0gICBpbXBvcnQgbWFjaGluZXJ5IHRvIGZpbmQgZmlsZXMgaW4gYWx0ZXJuYXRpdmUgbG9jYXRpb25zIGFyZSBwYXJ0aWFsbHkKLSAgIHN1cHBvcnRlZCwgYnV0IGFyZSBzZWFyY2hlZCAqYWZ0ZXIqIDpkYXRhOmBzeXMucGF0aGAuICBOb3JtYWxseSwgdGhlc2UKLSAgIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgKmJlZm9yZSogOmRhdGE6YHN5cy5wYXRoYCwgcHJldmVudGluZyA6ZGF0YTpgc3lzLnBhdGhgCi0gICBlbnRyaWVzIGZyb20gc2hhZG93aW5nIHRoZW0uCisgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZQorICAgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCiAKLSAgIEZvciB0aGlzIHRvIGNhdXNlIGEgdmlzaWJsZSBkaWZmZXJlbmNlIGluIGJlaGF2aW91ciwgdGhlcmUgbXVzdCBiZSBhIG1vZHVsZQotICAgb3IgcGFja2FnZSBuYW1lIHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgYm90aCA6ZGF0YTpgc3lzLnBhdGhgIGFuZCBvbmUgb2YgdGhlCi0gICBub24tOnBlcDpgMzAyYCBmaWxlIHN5c3RlbSBtZWNoYW5pc21zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZW11bGF0aW9uIHdpbGwgZmluZAotICAgdGhlIGZvcm1lciB2ZXJzaW9uLCB3aGlsZSB0aGUgYnVpbHRpbiBpbXBvcnQgbWVjaGFuaXNtIHdpbGwgZmluZCB0aGUgbGF0dGVyLgorICAgSWYgbm8gbW9kdWxlIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGwgdG9wIGxldmVsIGltcG9ydGVycyBhcmUgcHJvZHVjZWQuCiAKLSAgIEl0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoaXMgZGlzY3JlcGFuY3k6Ci0gICBgYGltcC5DX0VYVEVOU0lPTmBgLCBgYGltcC5QWV9TT1VSQ0VgYCwgYGBpbXAuUFlfQ09NUElMRURgYCwKLSAgIGBgaW1wLlBLR19ESVJFQ1RPUllgYC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogaXRlcl9tb2R1bGVzKHBhdGg9Tm9uZSwgcHJlZml4PScnKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2xvYWRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCisgICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCiAgICBwYXRoIGlzIGBgTm9uZWBgLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gYGBzeXMucGF0aGBgLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KIAogICAgKnByZWZpeCogaXMgYSBzdHJpbmcgdG8gb3V0cHV0IG9uIHRoZSBmcm9udCBvZiBldmVyeSBtb2R1bGUgbmFtZSBvbiBvdXRwdXQuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgT25seSB3b3JrcyBmb3IgYSA6dGVybTpgZmluZGVyYCB3aGljaCBkZWZpbmVzIGFuIGBgaXRlcl9tb2R1bGVzKClgYAorICAgICAgbWV0aG9kLiBUaGlzIGludGVyZmFjZSBpcyBub24tc3RhbmRhcmQsIHNvIHRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcworICAgICAgaW1wbGVtZW50YXRpb25zIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgYW5kCisgICAgICA6Y2xhc3M6YHppcGltcG9ydC56aXBpbXBvcnRlcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2xvYWRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCisgICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCiAgICAqcGF0aCosIG9yLCBpZiBwYXRoIGlzIGBgTm9uZWBgLCBhbGwgYWNjZXNzaWJsZSBtb2R1bGVzLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KQEAgLTE2Niw2ICsxODMsMTYgQEAKICAgICAgICMgbGlzdCBhbGwgc3VibW9kdWxlcyBvZiBjdHlwZXMKICAgICAgIHdhbGtfcGFja2FnZXMoY3R5cGVzLl9fcGF0aF9fLCBjdHlwZXMuX19uYW1lX18gKyAnLicpCiAKKyAgIC4uIG5vdGU6OgorICAgICAgT25seSB3b3JrcyBmb3IgYSA6dGVybTpgZmluZGVyYCB3aGljaCBkZWZpbmVzIGFuIGBgaXRlcl9tb2R1bGVzKClgYAorICAgICAgbWV0aG9kLiBUaGlzIGludGVyZmFjZSBpcyBub24tc3RhbmRhcmQsIHNvIHRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcworICAgICAgaW1wbGVtZW50YXRpb25zIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgYW5kCisgICAgICA6Y2xhc3M6YHppcGltcG9ydC56aXBpbXBvcnRlcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2RhdGEocGFja2FnZSwgcmVzb3VyY2UpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdCBiL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAppbmRleCAxNTdhYzNhLi5hNmE5OGYxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CkBAIC0zMCw4ICszMCw4IEBACiAgICByZXR1cm5lZCBhcyBzdHJpbmdzLgogCiAgICBWYWx1ZXMgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhcmUgcmV0dXJuZWQgYXMgZ2l2ZW4gYnkgdGhlIHBhcmFtZXRlciBwcmVzZXRzLgotICAgSWYgYml0cyBpcyBnaXZlbiBhcyBgYCcnYGAsIHRoZSA6YzpmdW5jOmBzaXplb2YocG9pbnRlcilgIChvcgotICAgOmM6ZnVuYzpgc2l6ZW9mKGxvbmcpYCBvbiBQeXRob24gdmVyc2lvbiA8IDEuNS4yKSBpcyB1c2VkIGFzIGluZGljYXRvciBmb3IgdGhlCisgICBJZiBiaXRzIGlzIGdpdmVuIGFzIGBgJydgYCwgdGhlIGBgc2l6ZW9mKHBvaW50ZXIpYGAgKG9yCisgICBgYHNpemVvZihsb25nKWBgIG9uIFB5dGhvbiB2ZXJzaW9uIDwgMS41LjIpIGlzIHVzZWQgYXMgaW5kaWNhdG9yIGZvciB0aGUKICAgIHN1cHBvcnRlZCBwb2ludGVyIHNpemUuCiAKICAgIFRoZSBmdW5jdGlvbiByZWxpZXMgb24gdGhlIHN5c3RlbSdzIDpmaWxlOmBmaWxlYCBjb21tYW5kIHRvIGRvIHRoZSBhY3R1YWwgd29yay4KQEAgLTE1OCwxNCArMTU4LDIwIEBACiAKIC4uIGZ1bmN0aW9uOjogdW5hbWUoKQogCi0gICBGYWlybHkgcG9ydGFibGUgdW5hbWUgaW50ZXJmYWNlLiBSZXR1cm5zIGEgdHVwbGUgb2Ygc3RyaW5ncyBgYChzeXN0ZW0sIG5vZGUsCi0gICByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lLCBwcm9jZXNzb3IpYGAgaWRlbnRpZnlpbmcgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0uCisgICBGYWlybHkgcG9ydGFibGUgdW5hbWUgaW50ZXJmYWNlLiBSZXR1cm5zIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgY29udGFpbmluZyBzaXggYXR0cmlidXRlczogOmF0dHI6YHN5c3RlbWAsIDphdHRyOmBub2RlYCwgOmF0dHI6YHJlbGVhc2VgLAorICAgOmF0dHI6YHZlcnNpb25gLCA6YXR0cjpgbWFjaGluZWAsIGFuZCA6YXR0cjpgcHJvY2Vzc29yYC4KIAotICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgOmZ1bmM6YG9zLnVuYW1lYCBmdW5jdGlvbiB0aGlzIGFsc28gcmV0dXJucyBwb3NzaWJsZQotICAgcHJvY2Vzc29yIGluZm9ybWF0aW9uIGFzIGFkZGl0aW9uYWwgdHVwbGUgZW50cnkuCisgICBOb3RlIHRoYXQgdGhpcyBhZGRzIGEgc2l4dGggYXR0cmlidXRlICg6YXR0cjpgcHJvY2Vzc29yYCkgbm90IHByZXNlbnQKKyAgIGluIHRoZSA6ZnVuYzpgb3MudW5hbWVgIHJlc3VsdC4gIEFsc28sIHRoZSBhdHRyaWJ1dGUgbmFtZXMgYXJlIGRpZmZlcmVudAorICAgZm9yIHRoZSBmaXJzdCB0d28gYXR0cmlidXRlczsgOmZ1bmM6YG9zLnVuYW1lYCBuYW1lcyB0aGVtCisgICA6YXR0cjpgc3lzbmFtZWAgYW5kIDphdHRyOmBub2RlbmFtZWAuCiAKICAgIEVudHJpZXMgd2hpY2ggY2Fubm90IGJlIGRldGVybWluZWQgYXJlIHNldCB0byBgYCcnYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXN1bHQgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSBuYW1lZHR1cGxlLgorCiAKIEphdmEgUGxhdGZvcm0KIC0tLS0tLS0tLS0tLS0KQEAgLTIxNCw2ICsyMjAsMTAgQEAKICAgIHByZWZlcnJpbmcgOmZ1bmM6YHdpbjMycGlwZS5wb3BlbmAuICBPbiBXaW5kb3dzIE5ULCA6ZnVuYzpgd2luMzJwaXBlLnBvcGVuYAogICAgc2hvdWxkIHdvcms7IG9uIFdpbmRvd3MgOXggaXQgaGFuZ3MgZHVlIHRvIGJ1Z3MgaW4gdGhlIE1TIEMgbGlicmFyeS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBvYnNvbGV0ZS4gIFVzZSB0aGUgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlLiAgQ2hlY2sKKyAgICAgIGVzcGVjaWFsbHkgdGhlIDpyZWY6YHN1YnByb2Nlc3MtcmVwbGFjZW1lbnRzYCBzZWN0aW9uLgorCiAKIE1hYyBPUyBQbGF0Zm9ybQogLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0IGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAppbmRleCAxY2Q0ZDI2Li41NWM5ZDcwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKQEAgLTQzLDYgKzQzLDEyIEBACiB1c2VzIHRoZSBzeXN0ZW0gZnVuY3Rpb24gOmZ1bmM6YG9zLnVyYW5kb21gIHRvIGdlbmVyYXRlIHJhbmRvbSBudW1iZXJzCiBmcm9tIHNvdXJjZXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCiAKKy4uIHdhcm5pbmc6OgorCisgICBUaGUgZ2VuZXJhdG9ycyBvZiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBzZWN1cml0eQorICAgcHVycG9zZXMuIFVzZSA6ZnVuYzpgc3NsLlJBTkRfYnl0ZXNgIGlmIHlvdSByZXF1aXJlIGEgY3J5cHRvZ3JhcGhpY2FsbHkKKyAgIHNlY3VyZSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KKwogCiBCb29ra2VlcGluZyBmdW5jdGlvbnM6CiAKQEAgLTE0NSw2ICsxNTEsOSBAQAogICAgYXJndW1lbnQuICBUaGlzIGlzIGVzcGVjaWFsbHkgZmFzdCBhbmQgc3BhY2UgZWZmaWNpZW50IGZvciBzYW1wbGluZyBmcm9tIGEgbGFyZ2UKICAgIHBvcHVsYXRpb246ICBgYHNhbXBsZShyYW5nZSgxMDAwMDAwMCksIDYwKWBgLgogCisgICBJZiB0aGUgc2FtcGxlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIHBvcHVsYXRpb24gc2l6ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAorICAgaXMgcmFpc2VkLgorCiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBnZW5lcmF0ZSBzcGVjaWZpYyByZWFsLXZhbHVlZCBkaXN0cmlidXRpb25zLiBGdW5jdGlvbgogcGFyYW1ldGVycyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGVzIGluIHRoZSBkaXN0cmlidXRpb24ncwogZXF1YXRpb24sIGFzIHVzZWQgaW4gY29tbW9uIG1hdGhlbWF0aWNhbCBwcmFjdGljZTsgbW9zdCBvZiB0aGVzZSBlcXVhdGlvbnMgY2FuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggODM5N2FhZC4uMDc2MjNjOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtNDE0LDE3ICs0MTQsMjQgQEAKIGFjY2VwdGVkIGJ5IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2VyOjoKIAogICAgXGEgICAgICBcYiAgICAgIFxmICAgICAgXG4KLSAgIFxyICAgICAgXHQgICAgICBcdiAgICAgIFx4Ci0gICBcXAorICAgXHIgICAgICBcdCAgICAgIFx1ICAgICAgXFUKKyAgIFx2ICAgICAgXHggICAgICBcXAogCiAoTm90ZSB0aGF0IGBgXGJgYCBpcyB1c2VkIHRvIHJlcHJlc2VudCB3b3JkIGJvdW5kYXJpZXMsIGFuZCBtZWFucyAiYmFja3NwYWNlIgogb25seSBpbnNpZGUgY2hhcmFjdGVyIGNsYXNzZXMuKQogCitgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBhcmUgb25seSByZWNvZ25pemVkIGluIFVuaWNvZGUKK3BhdHRlcm5zLiAgSW4gYnl0ZXMgcGF0dGVybnMgdGhleSBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LgorCiBPY3RhbCBlc2NhcGVzIGFyZSBpbmNsdWRlZCBpbiBhIGxpbWl0ZWQgZm9ybS4gIElmIHRoZSBmaXJzdCBkaWdpdCBpcyBhIDAsIG9yIGlmCiB0aGVyZSBhcmUgdGhyZWUgb2N0YWwgZGlnaXRzLCBpdCBpcyBjb25zaWRlcmVkIGFuIG9jdGFsIGVzY2FwZS4gT3RoZXJ3aXNlLCBpdCBpcwogYSBncm91cCByZWZlcmVuY2UuICBBcyBmb3Igc3RyaW5nIGxpdGVyYWxzLCBvY3RhbCBlc2NhcGVzIGFyZSBhbHdheXMgYXQgbW9zdAogdGhyZWUgZGlnaXRzIGluIGxlbmd0aC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCisKKwogCiAuLiBfY29udGVudHMtb2YtbW9kdWxlLXJlOgogCkBAIC02ODQsOSArNjkxLDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogZXNjYXBlKHN0cmluZykKIAotICAgUmV0dXJuICpzdHJpbmcqIHdpdGggYWxsIG5vbi1hbHBoYW51bWVyaWNzIGJhY2tzbGFzaGVkOyB0aGlzIGlzIHVzZWZ1bCBpZiB5b3UKLSAgIHdhbnQgdG8gbWF0Y2ggYW4gYXJiaXRyYXJ5IGxpdGVyYWwgc3RyaW5nIHRoYXQgbWF5IGhhdmUgcmVndWxhciBleHByZXNzaW9uCi0gICBtZXRhY2hhcmFjdGVycyBpbiBpdC4KKyAgIEVzY2FwZSBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gcGF0dGVybiBleGNlcHQgQVNDSUkgbGV0dGVycywgbnVtYmVycyBhbmQgYGAnXydgYC4KKyAgIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvIG1hdGNoIGFuIGFyYml0cmFyeSBsaXRlcmFsIHN0cmluZyB0aGF0IG1heQorICAgaGF2ZSByZWd1bGFyIGV4cHJlc3Npb24gbWV0YWNoYXJhY3RlcnMgaW4gaXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGAnXydgYCBjaGFyYWN0ZXIgaXMgbm8gbG9uZ2VyIGVzY2FwZWQuCiAKIAogLi4gZnVuY3Rpb246OiBwdXJnZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggYWI1NTE5Ny4uMTEzNDYxOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtMTk5LDcgKzE5OSw3IEBACiAgICBoaXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5weWhpc3QiKQogICAgdHJ5OgogICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhpc3RmaWxlKQotICAgZXhjZXB0IElPRXJyb3I6CisgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgcGFzcwogICAgaW1wb3J0IGF0ZXhpdAogICAgYXRleGl0LnJlZ2lzdGVyKHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZSwgaGlzdGZpbGUpCkBAIC0yMjQsNyArMjI0LDcgQEAKICAgICAgICAgICAgaWYgaGFzYXR0cihyZWFkbGluZSwgInJlYWRfaGlzdG9yeV9maWxlIik6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0gICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBhdGV4aXQucmVnaXN0ZXIoc2VsZi5zYXZlX2hpc3RvcnksIGhpc3RmaWxlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QgYi9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QKaW5kZXggYzE2YjAxMy4uMDNhN2NiNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVzb3VyY2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdApAQCAtMTQsMTMgKzE0LDE1IEBACiBTeW1ib2xpYyBjb25zdGFudHMgYXJlIHVzZWQgdG8gc3BlY2lmeSBwYXJ0aWN1bGFyIHN5c3RlbSByZXNvdXJjZXMgYW5kIHRvCiByZXF1ZXN0IHVzYWdlIGluZm9ybWF0aW9uIGFib3V0IGVpdGhlciB0aGUgY3VycmVudCBwcm9jZXNzIG9yIGl0cyBjaGlsZHJlbi4KIAotQSBzaW5nbGUgZXhjZXB0aW9uIGlzIGRlZmluZWQgZm9yIGVycm9yczoKK0FuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBvbiBzeXNjYWxsIGZhaWx1cmUuCiAKIAogLi4gZXhjZXB0aW9uOjogZXJyb3IKIAotICAgVGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgYmVsb3cgbWF5IHJhaXNlIHRoaXMgZXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwKLSAgIGZhaWx1cmVzIHVuZXhwZWN0ZWRseS4KKyAgIEEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEZvbGxvd2luZyA6cGVwOmAzMTUxYCwgdGhpcyBjbGFzcyB3YXMgbWFkZSBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiBSZXNvdXJjZSBMaW1pdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NjaGVkLnJzdCBiL0RvYy9saWJyYXJ5L3NjaGVkLnJzdAppbmRleCAwMDBkYmEwLi5kNmM4NmM3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zY2hlZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2NoZWQucnN0CkBAIC0xNCw3ICsxNCw3IEBACiBUaGUgOm1vZDpgc2NoZWRgIG1vZHVsZSBkZWZpbmVzIGEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBhIGdlbmVyYWwgcHVycG9zZSBldmVudAogc2NoZWR1bGVyOgogCi0uLiBjbGFzczo6IHNjaGVkdWxlcih0aW1lZnVuYywgZGVsYXlmdW5jKQorLi4gY2xhc3M6OiBzY2hlZHVsZXIodGltZWZ1bmM9dGltZS50aW1lLCBkZWxheWZ1bmM9dGltZS5zbGVlcCkKIAogICAgVGhlIDpjbGFzczpgc2NoZWR1bGVyYCBjbGFzcyBkZWZpbmVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gc2NoZWR1bGluZyBldmVudHMuCiAgICBJdCBuZWVkcyB0d28gZnVuY3Rpb25zIHRvIGFjdHVhbGx5IGRlYWwgd2l0aCB0aGUgIm91dHNpZGUgd29ybGQiIC0tLSAqdGltZWZ1bmMqCkBAIC0yNSw2ICsyNSwxMiBAQAogICAgZXZlbnQgaXMgcnVuIHRvIGFsbG93IG90aGVyIHRocmVhZHMgYW4gb3Bwb3J0dW5pdHkgdG8gcnVuIGluIG11bHRpLXRocmVhZGVkCiAgICBhcHBsaWNhdGlvbnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZWZ1bmMqIGFuZCAqZGVsYXlmdW5jKiBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6Y2xhc3M6YHNjaGVkdWxlcmAgY2xhc3MgY2FuIGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgICAgICBlbnZpcm9ubWVudHMuCisKIEV4YW1wbGU6OgogCiAgICA+Pj4gaW1wb3J0IHNjaGVkLCB0aW1lCkBAIC00NCwzMyArNTAsNiBAQAogICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzcwMC4yNzMKICAgIDkzMDM0MzcwMC4yNzYKIAotSW4gbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnRzLCB0aGUgOmNsYXNzOmBzY2hlZHVsZXJgIGNsYXNzIGhhcyBsaW1pdGF0aW9ucwotd2l0aCByZXNwZWN0IHRvIHRocmVhZC1zYWZldHksIGluYWJpbGl0eSB0byBpbnNlcnQgYSBuZXcgdGFzayBiZWZvcmUKLXRoZSBvbmUgY3VycmVudGx5IHBlbmRpbmcgaW4gYSBydW5uaW5nIHNjaGVkdWxlciwgYW5kIGhvbGRpbmcgdXAgdGhlIG1haW4KLXRocmVhZCB1bnRpbCB0aGUgZXZlbnQgcXVldWUgaXMgZW1wdHkuICBJbnN0ZWFkLCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoCi1pcyB0byB1c2UgdGhlIDpjbGFzczpgdGhyZWFkaW5nLlRpbWVyYCBjbGFzcyBpbnN0ZWFkLgotCi1FeGFtcGxlOjoKLQotICAgID4+PiBpbXBvcnQgdGltZQotICAgID4+PiBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGltZXIKLSAgICA+Pj4gZGVmIHByaW50X3RpbWUoKToKLSAgICAuLi4gICAgIHByaW50KCJGcm9tIHByaW50X3RpbWUiLCB0aW1lLnRpbWUoKSkKLSAgICAuLi4KLSAgICA+Pj4gZGVmIHByaW50X3NvbWVfdGltZXMoKToKLSAgICAuLi4gICAgIHByaW50KHRpbWUudGltZSgpKQotICAgIC4uLiAgICAgVGltZXIoNSwgcHJpbnRfdGltZSwgKCkpLnN0YXJ0KCkKLSAgICAuLi4gICAgIFRpbWVyKDEwLCBwcmludF90aW1lLCAoKSkuc3RhcnQoKQotICAgIC4uLiAgICAgdGltZS5zbGVlcCgxMSkgICMgc2xlZXAgd2hpbGUgdGltZS1kZWxheSBldmVudHMgZXhlY3V0ZQotICAgIC4uLiAgICAgcHJpbnQodGltZS50aW1lKCkpCi0gICAgLi4uCi0gICAgPj4+IHByaW50X3NvbWVfdGltZXMoKQotICAgIDkzMDM0MzY5MC4yNTcKLSAgICBGcm9tIHByaW50X3RpbWUgOTMwMzQzNjk1LjI3NAotICAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM3MDAuMjczCi0gICAgOTMwMzQzNzAxLjMwMQotCi0KIC4uIF9zY2hlZHVsZXItb2JqZWN0czoKIAogU2NoZWR1bGVyIE9iamVjdHMKQEAgLTc5LDI2ICs1OCwzOCBAQAogOmNsYXNzOmBzY2hlZHVsZXJgIGluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAogCi0uLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCisuLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9W10sIGt3YXJncz17fSkKIAogICAgU2NoZWR1bGUgYSBuZXcgZXZlbnQuIFRoZSAqdGltZSogYXJndW1lbnQgc2hvdWxkIGJlIGEgbnVtZXJpYyB0eXBlIGNvbXBhdGlibGUKICAgIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgKnRpbWVmdW5jKiBmdW5jdGlvbiBwYXNzZWQgIHRvIHRoZSBjb25zdHJ1Y3Rvci4KICAgIEV2ZW50cyBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lICp0aW1lKiB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciBvZiB0aGVpcgogICAgKnByaW9yaXR5Ki4KIAotICAgRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcgYGBhY3Rpb24oKmFyZ3VtZW50KWBgLiAgKmFyZ3VtZW50KiBtdXN0IGJlIGEKLSAgIHNlcXVlbmNlIGhvbGRpbmcgdGhlIHBhcmFtZXRlcnMgZm9yICphY3Rpb24qLgorICAgRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcgYGBhY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncylgYC4KKyAgICphcmd1bWVudCogbXVzdCBiZSBhIHNlcXVlbmNlIGhvbGRpbmcgdGhlIHBhcmFtZXRlcnMgZm9yICphY3Rpb24qLgorICAgKmt3YXJncyogbXVzdCBiZSBhIGRpY3Rpb25hcnkgaG9sZGluZyB0aGUga2V5d29yZCBwYXJhbWV0ZXJzIGZvciAqYWN0aW9uKi4KIAogICAgUmV0dXJuIHZhbHVlIGlzIGFuIGV2ZW50IHdoaWNoIG1heSBiZSB1c2VkIGZvciBsYXRlciBjYW5jZWxsYXRpb24gb2YgdGhlIGV2ZW50CiAgICAoc2VlIDptZXRoOmBjYW5jZWxgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICphcmd1bWVudCogcGFyYW1ldGVyIGlzIG9wdGlvbmFsLgogCi0uLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXIoZGVsYXksIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KQorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCisKKy4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcihkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9W10sIGt3YXJncz17fSkKIAogICAgU2NoZWR1bGUgYW4gZXZlbnQgZm9yICpkZWxheSogbW9yZSB0aW1lIHVuaXRzLiBPdGhlciB0aGFuIHRoZSByZWxhdGl2ZSB0aW1lLCB0aGUKICAgIG90aGVyIGFyZ3VtZW50cywgdGhlIGVmZmVjdCBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgdGhlIHNhbWUgYXMgdGhvc2UgZm9yCiAgICA6bWV0aDpgZW50ZXJhYnNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmFyZ3VtZW50KiBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgKmt3YXJncyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogLi4gbWV0aG9kOjogc2NoZWR1bGVyLmNhbmNlbChldmVudCkKIApAQCAtMTExLDEyICsxMDIsMTYgQEAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBldmVudCBxdWV1ZSBpcyBlbXB0eS4KIAogCi0uLiBtZXRob2Q6OiBzY2hlZHVsZXIucnVuKCkKKy4uIG1ldGhvZDo6IHNjaGVkdWxlci5ydW4oYmxvY2tpbmc9VHJ1ZSkKIAotICAgUnVuIGFsbCBzY2hlZHVsZWQgZXZlbnRzLiBUaGlzIGZ1bmN0aW9uIHdpbGwgd2FpdCAgKHVzaW5nIHRoZSA6ZnVuYzpgZGVsYXlmdW5jYAorICAgUnVuIGFsbCBzY2hlZHVsZWQgZXZlbnRzLiBUaGlzIG1ldGhvZCB3aWxsIHdhaXQgICh1c2luZyB0aGUgOmZ1bmM6YGRlbGF5ZnVuY2AKICAgIGZ1bmN0aW9uIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IpIGZvciB0aGUgbmV4dCBldmVudCwgdGhlbiBleGVjdXRlIGl0IGFuZCBzbwogICAgb24gdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgc2NoZWR1bGVkIGV2ZW50cy4KIAorICAgSWYgKmJsb2NraW5nKiBpcyBGYWxzZSBleGVjdXRlcyB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlIHNvb25lc3QKKyAgIChpZiBhbnkpIGFuZCB0aGVuIHJldHVybiB0aGUgZGVhZGxpbmUgb2YgdGhlIG5leHQgc2NoZWR1bGVkIGNhbGwgaW4gdGhlCisgICBzY2hlZHVsZXIgKGlmIGFueSkuCisKICAgIEVpdGhlciAqYWN0aW9uKiBvciAqZGVsYXlmdW5jKiBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uLiAgSW4gZWl0aGVyIGNhc2UsIHRoZQogICAgc2NoZWR1bGVyIHdpbGwgbWFpbnRhaW4gYSBjb25zaXN0ZW50IHN0YXRlIGFuZCBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbi4gIElmIGFuCiAgICBleGNlcHRpb24gaXMgcmFpc2VkIGJ5ICphY3Rpb24qLCB0aGUgZXZlbnQgd2lsbCBub3QgYmUgYXR0ZW1wdGVkIGluIGZ1dHVyZSBjYWxscwpAQCAtMTI3LDYgKzEyMiw5IEBACiAgICB0aGUgY2FsbGluZyBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBjYW5jZWxpbmcgIGV2ZW50cyB3aGljaCBhcmUgbm8gbG9uZ2VyCiAgICBwZXJ0aW5lbnQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgKmJsb2NraW5nKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAuLiBhdHRyaWJ1dGU6OiBzY2hlZHVsZXIucXVldWUKIAogICAgUmVhZC1vbmx5IGF0dHJpYnV0ZSByZXR1cm5pbmcgYSBsaXN0IG9mIHVwY29taW5nIGV2ZW50cyBpbiB0aGUgb3JkZXIgdGhleQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdCBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKaW5kZXggYTQ1MGVjMi4uNGU2MGY0YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CkBAIC02LDcgKzYsOCBAQAogCiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgOmM6ZnVuYzpgc2VsZWN0YCBhbmQgOmM6ZnVuYzpgcG9sbGAgZnVuY3Rpb25zCi1hdmFpbGFibGUgaW4gbW9zdCBvcGVyYXRpbmcgc3lzdGVtcywgOmM6ZnVuYzpgZXBvbGxgIGF2YWlsYWJsZSBvbiBMaW51eCAyLjUrIGFuZAorYXZhaWxhYmxlIGluIG1vc3Qgb3BlcmF0aW5nIHN5c3RlbXMsIDpjOmZ1bmM6YGRldnBvbGxgIGF2YWlsYWJsZSBvbgorU29sYXJpcyBhbmQgZGVyaXZhdGl2ZXMsIDpjOmZ1bmM6YGVwb2xsYCBhdmFpbGFibGUgb24gTGludXggMi41KyBhbmQKIDpjOmZ1bmM6YGtxdWV1ZWAgYXZhaWxhYmxlIG9uIG1vc3QgQlNELgogTm90ZSB0aGF0IG9uIFdpbmRvd3MsIGl0IG9ubHkgd29ya3MgZm9yIHNvY2tldHM7IG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLAogaXQgYWxzbyB3b3JrcyBmb3Igb3RoZXIgZmlsZSB0eXBlcyAoaW4gcGFydGljdWxhciwgb24gVW5peCwgaXQgd29ya3Mgb24gcGlwZXMpLgpAQCAtMTgsMTcgKzE5LDM4IEBACiAKIC4uIGV4Y2VwdGlvbjo6IGVycm9yCiAKLSAgIFRoZSBleGNlcHRpb24gcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIKLSAgIGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgZXJyb3IgY29kZSBmcm9tIDpjOmRhdGE6YGVycm5vYCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKLSAgIHN0cmluZywgYXMgd291bGQgYmUgcHJpbnRlZCBieSB0aGUgQyBmdW5jdGlvbiA6YzpmdW5jOmBwZXJyb3JgLgorICAgQSBkZXByZWNhdGVkIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRm9sbG93aW5nIDpwZXA6YDMxNTFgLCB0aGlzIGNsYXNzIHdhcyBtYWRlIGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKLS4uIGZ1bmN0aW9uOjogZXBvbGwoc2l6ZWhpbnQ9LTEpCisuLiBmdW5jdGlvbjo6IGRldnBvbGwoKQogCi0gICAoT25seSBzdXBwb3J0ZWQgb24gTGludXggMi41LjQ0IGFuZCBuZXdlci4pICBSZXR1cm5zIGFuIGVkZ2UgcG9sbGluZyBvYmplY3QsCi0gICB3aGljaCBjYW4gYmUgdXNlZCBhcyBFZGdlIG9yIExldmVsIFRyaWdnZXJlZCBpbnRlcmZhY2UgZm9yIEkvTyBldmVudHM7IHNlZQotICAgc2VjdGlvbiA6cmVmOmBlcG9sbC1vYmplY3RzYCBiZWxvdyBmb3IgdGhlIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IGVwb2xsaW5nCi0gICBvYmplY3RzLgorICAgKE9ubHkgc3VwcG9ydGVkIG9uIFNvbGFyaXMgYW5kIGRlcml2YXRpdmVzLikgIFJldHVybnMgYSBgYC9kZXYvcG9sbGBgCisgICBwb2xsaW5nIG9iamVjdDsgc2VlIHNlY3Rpb24gOnJlZjpgZGV2cG9sbC1vYmplY3RzYCBiZWxvdyBmb3IgdGhlCisgICBtZXRob2RzIHN1cHBvcnRlZCBieSBkZXZwb2xsIG9iamVjdHMuCisKKyAgIDpjOmZ1bmM6YGRldnBvbGxgIG9iamVjdHMgYXJlIGxpbmtlZCB0byB0aGUgbnVtYmVyIG9mIGZpbGUKKyAgIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgdGhlIHRpbWUgb2YgaW5zdGFudGlhdGlvbi4gSWYgeW91ciBwcm9ncmFtCisgICByZWR1Y2VzIHRoaXMgdmFsdWUsIDpjOmZ1bmM6YGRldnBvbGxgIHdpbGwgZmFpbC4gSWYgeW91ciBwcm9ncmFtCisgICBpbmNyZWFzZXMgdGhpcyB2YWx1ZSwgOmM6ZnVuYzpgZGV2cG9sbGAgbWF5IHJldHVybiBhbgorICAgaW5jb21wbGV0ZSBsaXN0IG9mIGFjdGl2ZSBmaWxlIGRlc2NyaXB0b3JzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBlcG9sbChzaXplaGludD0tMSwgZmxhZ3M9MCkKKworICAgKE9ubHkgc3VwcG9ydGVkIG9uIExpbnV4IDIuNS40NCBhbmQgbmV3ZXIuKSBSZXR1cm4gYW4gZWRnZSBwb2xsaW5nIG9iamVjdCwKKyAgIHdoaWNoIGNhbiBiZSB1c2VkIGFzIEVkZ2Ugb3IgTGV2ZWwgVHJpZ2dlcmVkIGludGVyZmFjZSBmb3IgSS9PCisgICBldmVudHMuICpzaXplaGludCogaXMgZGVwcmVjYXRlZCBhbmQgY29tcGxldGVseSBpZ25vcmVkLiAqZmxhZ3MqIGNhbiBiZSBzZXQKKyAgIHRvIDpjb25zdDpgRVBPTExfQ0xPRVhFQ2AsIHdoaWNoIGNhdXNlcyB0aGUgZXBvbGwgZGVzY3JpcHRvciB0byBiZSBjbG9zZWQKKyAgIGF1dG9tYXRpY2FsbHkgd2hlbiA6ZnVuYzpgb3MuZXhlY3ZlYCBpcyBjYWxsZWQuIFNlZSBzZWN0aW9uCisgICA6cmVmOmBlcG9sbC1vYmplY3RzYCBiZWxvdyBmb3IgdGhlIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IGVwb2xsaW5nIG9iamVjdHMuCisKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZmxhZ3MqIHBhcmFtZXRlci4KIAogCiAuLiBmdW5jdGlvbjo6IHBvbGwoKQpAQCAtMTA2LDYgKzEyOCw3NCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gX2RldnBvbGwtb2JqZWN0czoKKworYGAvZGV2L3BvbGxgYCBQb2xsaW5nIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgaHR0cDovL2RldmVsb3BlcnMuc3VuLmNvbS9zb2xhcmlzL2FydGljbGVzL3VzaW5nX2RldnBvbGwuaHRtbAorICAgaHR0cDovL2RldmVsb3BlcnMuc3VuLmNvbS9zb2xhcmlzL2FydGljbGVzL3BvbGxpbmdfZWZmaWNpZW50Lmh0bWwKKworU29sYXJpcyBhbmQgZGVyaXZhdGl2ZXMgaGF2ZSBgYC9kZXYvcG9sbGBgLiBXaGlsZSA6YzpmdW5jOmBzZWxlY3RgIGlzCitPKGhpZ2hlc3QgZmlsZSBkZXNjcmlwdG9yKSBhbmQgOmM6ZnVuYzpgcG9sbGAgaXMgTyhudW1iZXIgb2YgZmlsZQorZGVzY3JpcHRvcnMpLCBgYC9kZXYvcG9sbGBgIGlzIE8oYWN0aXZlIGZpbGUgZGVzY3JpcHRvcnMpLgorCitgYC9kZXYvcG9sbGBgIGJlaGF2aW91ciBpcyB2ZXJ5IGNsb3NlIHRvIHRoZSBzdGFuZGFyZCA6YzpmdW5jOmBwb2xsYAorb2JqZWN0LgorCisKKy4uIG1ldGhvZDo6IGRldnBvbGwucmVnaXN0ZXIoZmRbLCBldmVudG1hc2tdKQorCisgICBSZWdpc3RlciBhIGZpbGUgZGVzY3JpcHRvciB3aXRoIHRoZSBwb2xsaW5nIG9iamVjdC4gIEZ1dHVyZSBjYWxscyB0byB0aGUKKyAgIDptZXRoOmBwb2xsYCBtZXRob2Qgd2lsbCB0aGVuIGNoZWNrIHdoZXRoZXIgdGhlIGZpbGUgZGVzY3JpcHRvciBoYXMgYW55IHBlbmRpbmcKKyAgIEkvTyBldmVudHMuICAqZmQqIGNhbiBiZSBlaXRoZXIgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IHdpdGggYSA6bWV0aDpgZmlsZW5vYAorICAgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpbnRlZ2VyLiAgRmlsZSBvYmplY3RzIGltcGxlbWVudCA6bWV0aDpgZmlsZW5vYCwgc28gdGhleQorICAgY2FuIGFsc28gYmUgdXNlZCBhcyB0aGUgYXJndW1lbnQuCisKKyAgICpldmVudG1hc2sqIGlzIGFuIG9wdGlvbmFsIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgeW91IHdhbnQgdG8KKyAgIGNoZWNrIGZvci4gVGhlIGNvbnN0YW50cyBhcmUgdGhlIHNhbWUgdGhhdCB3aXRoIDpjOmZ1bmM6YHBvbGxgCisgICBvYmplY3QuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIGNvbnN0YW50cyA6Y29uc3Q6YFBPTExJTmAsCisgICA6Y29uc3Q6YFBPTExQUklgLCBhbmQgOmNvbnN0OmBQT0xMT1VUYC4KKworICAgLi4gd2FybmluZzo6CisKKyAgICAgIFJlZ2lzdGVyaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQgaXMgbm90IGFuCisgICAgICBlcnJvciwgYnV0IHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLiBUaGUgYXBwcm9waWF0ZSBhY3Rpb24gaXMgdG8KKyAgICAgIHVucmVnaXN0ZXIgb3IgbW9kaWZ5IGl0IGZpcnN0LiBUaGlzIGlzIGFuIGltcG9ydGFudCBkaWZmZXJlbmNlCisgICAgICBjb21wYXJlZCB3aXRoIDpjOmZ1bmM6YHBvbGxgLgorCisKKy4uIG1ldGhvZDo6IGRldnBvbGwubW9kaWZ5KGZkWywgZXZlbnRtYXNrXSkKKworICAgVGhpcyBtZXRob2QgZG9lcyBhbiA6bWV0aDpgdW5yZWdpc3RlcmAgZm9sbG93ZWQgYnkgYQorICAgOm1ldGg6YHJlZ2lzdGVyYC4gSXQgaXMgKGEgYml0KSBtb3JlIGVmZmljaWVudCB0aGF0IGRvaW5nIHRoZSBzYW1lCisgICBleHBsaWNpdGx5LgorCisKKy4uIG1ldGhvZDo6IGRldnBvbGwudW5yZWdpc3RlcihmZCkKKworICAgUmVtb3ZlIGEgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRyYWNrZWQgYnkgYSBwb2xsaW5nIG9iamVjdC4gIEp1c3QgbGlrZSB0aGUKKyAgIDptZXRoOmByZWdpc3RlcmAgbWV0aG9kLCAqZmQqIGNhbiBiZSBhbiBpbnRlZ2VyIG9yIGFuIG9iamVjdCB3aXRoIGEKKyAgIDptZXRoOmBmaWxlbm9gIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gaW50ZWdlci4KKworICAgQXR0ZW1wdGluZyB0byByZW1vdmUgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCBpcworICAgc2FmZWx5IGlnbm9yZWQuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC5wb2xsKFt0aW1lb3V0XSkKKworICAgUG9sbHMgdGhlIHNldCBvZiByZWdpc3RlcmVkIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCByZXR1cm5zIGEgcG9zc2libHktZW1wdHkgbGlzdAorICAgY29udGFpbmluZyBgYChmZCwgZXZlbnQpYGAgMi10dXBsZXMgZm9yIHRoZSBkZXNjcmlwdG9ycyB0aGF0IGhhdmUgZXZlbnRzIG9yCisgICBlcnJvcnMgdG8gcmVwb3J0LiAqZmQqIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3IsIGFuZCAqZXZlbnQqIGlzIGEgYml0bWFzayB3aXRoCisgICBiaXRzIHNldCBmb3IgdGhlIHJlcG9ydGVkIGV2ZW50cyBmb3IgdGhhdCBkZXNjcmlwdG9yIC0tLSA6Y29uc3Q6YFBPTExJTmAgZm9yCisgICB3YWl0aW5nIGlucHV0LCA6Y29uc3Q6YFBPTExPVVRgIHRvIGluZGljYXRlIHRoYXQgdGhlIGRlc2NyaXB0b3IgY2FuIGJlIHdyaXR0ZW4KKyAgIHRvLCBhbmQgc28gZm9ydGguIEFuIGVtcHR5IGxpc3QgaW5kaWNhdGVzIHRoYXQgdGhlIGNhbGwgdGltZWQgb3V0IGFuZCBubyBmaWxlCisgICBkZXNjcmlwdG9ycyBoYWQgYW55IGV2ZW50cyB0byByZXBvcnQuIElmICp0aW1lb3V0KiBpcyBnaXZlbiwgaXQgc3BlY2lmaWVzIHRoZQorICAgbGVuZ3RoIG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHdoaWNoIHRoZSBzeXN0ZW0gd2lsbCB3YWl0IGZvciBldmVudHMgYmVmb3JlCisgICByZXR1cm5pbmcuIElmICp0aW1lb3V0KiBpcyBvbWl0dGVkLCAtMSwgb3IgOmNvbnN0OmBOb25lYCwgdGhlIGNhbGwgd2lsbAorICAgYmxvY2sgdW50aWwgdGhlcmUgaXMgYW4gZXZlbnQgZm9yIHRoaXMgcG9sbCBvYmplY3QuCisKKwogLi4gX2Vwb2xsLW9iamVjdHM6CiAKIEVkZ2UgYW5kIExldmVsIFRyaWdnZXIgUG9sbGluZyAoZXBvbGwpIE9iamVjdHMKQEAgLTE2NSwxMSArMjU1LDYgQEAKIAogICAgUmVnaXN0ZXIgYSBmZCBkZXNjcmlwdG9yIHdpdGggdGhlIGVwb2xsIG9iamVjdC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgUmVnaXN0ZXJpbmcgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCdzIGFscmVhZHkgcmVnaXN0ZXJlZCByYWlzZXMgYW4KLSAgICAgSU9FcnJvciAtLSBjb250cmFyeSB0byA6cmVmOmBwb2xsLW9iamVjdHNgJ3MgcmVnaXN0ZXIuCi0KIAogLi4gbWV0aG9kOjogZXBvbGwubW9kaWZ5KGZkLCBldmVudG1hc2spCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdCBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdAppbmRleCAwMTEzZmI3Li45NDFlMDkwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CkBAIC0zNCw2ICszNCw0MCBAQAogICAgICAgcGFzc2luZyBgYE5vbmVgYCBmb3IgKnMqIHdpbGwgcmVhZCB0aGUgc3RyaW5nIHRvIHNwbGl0IGZyb20gc3RhbmRhcmQKICAgICAgIGlucHV0LgogCisKKy4uIGZ1bmN0aW9uOjogcXVvdGUocykKKworICAgUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgKnMqLiAgVGhlIHJldHVybmVkIHZhbHVlIGlzIGEKKyAgIHN0cmluZyB0aGF0IGNhbiBzYWZlbHkgYmUgdXNlZCBhcyBvbmUgdG9rZW4gaW4gYSBzaGVsbCBjb21tYW5kIGxpbmUsIGZvcgorICAgY2FzZXMgd2hlcmUgeW91IGNhbm5vdCB1c2UgYSBsaXN0LgorCisgICBUaGlzIGlkaW9tIHdvdWxkIGJlIHVuc2FmZTo6CisKKyAgICAgID4+PiBmaWxlbmFtZSA9ICdzb21lZmlsZTsgcm0gLXJmIH4nCisgICAgICA+Pj4gY29tbWFuZCA9ICdscyAtbCB7fScuZm9ybWF0KGZpbGVuYW1lKQorICAgICAgPj4+IHByaW50KGNvbW1hbmQpICAjIGV4ZWN1dGVkIGJ5IGEgc2hlbGw6IGJvb20hCisgICAgICBscyAtbCBzb21lZmlsZTsgcm0gLXJmIH4KKworICAgOmZ1bmM6YHF1b3RlYCBsZXRzIHlvdSBwbHVnIHRoZSBzZWN1cml0eSBob2xlOjoKKworICAgICAgPj4+IGNvbW1hbmQgPSAnbHMgLWwge30nLmZvcm1hdChxdW90ZShmaWxlbmFtZSkpCisgICAgICA+Pj4gcHJpbnQoY29tbWFuZCkKKyAgICAgIGxzIC1sICdzb21lZmlsZTsgcm0gLXJmIH4nCisgICAgICA+Pj4gcmVtb3RlX2NvbW1hbmQgPSAnc3NoIGhvbWUge30nLmZvcm1hdChxdW90ZShjb21tYW5kKSkKKyAgICAgID4+PiBwcmludChyZW1vdGVfY29tbWFuZCkKKyAgICAgIHNzaCBob21lICdscyAtbCAnIiciJ3NvbWVmaWxlOyBybSAtcmYgficiJyInJworCisgICBUaGUgcXVvdGluZyBpcyBjb21wYXRpYmxlIHdpdGggVU5JWCBzaGVsbHMgYW5kIHdpdGggOmZ1bmM6YHNwbGl0YDoKKworICAgICAgPj4+IHJlbW90ZV9jb21tYW5kID0gc3BsaXQocmVtb3RlX2NvbW1hbmQpCisgICAgICA+Pj4gcmVtb3RlX2NvbW1hbmQKKyAgICAgIFsnc3NoJywgJ2hvbWUnLCAibHMgLWwgJ3NvbWVmaWxlOyBybSAtcmYgficiXQorICAgICAgPj4+IGNvbW1hbmQgPSBzcGxpdChyZW1vdGVfY29tbWFuZFstMV0pCisgICAgICA+Pj4gY29tbWFuZAorICAgICAgWydscycsICctbCcsICdzb21lZmlsZTsgcm0gLXJmIH4nXQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogVGhlIDptb2Q6YHNobGV4YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzOgogCiAKQEAgLTI4Miw1ICszMTYsNCBAQAogCiAqIEVPRiBpcyBzaWduYWxlZCB3aXRoIGEgOmNvbnN0OmBOb25lYCB2YWx1ZTsKIAotKiBRdW90ZWQgZW1wdHkgc3RyaW5ncyAoYGAnJ2BgKSBhcmUgYWxsb3dlZDsKLQorKiBRdW90ZWQgZW1wdHkgc3RyaW5ncyAoYGAnJ2BgKSBhcmUgYWxsb3dlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IDE4ZjY0ODUuLjA4MGM5MjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtNDcsNDUgKzQ3LDEyOSBAQAogICAgYmUgY29waWVkLgogCiAKLS4uIGZ1bmN0aW9uOjogY29weWZpbGUoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IGNvcHlmaWxlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ29weSB0aGUgY29udGVudHMgKG5vIG1ldGFkYXRhKSBvZiB0aGUgZmlsZSBuYW1lZCAqc3JjKiB0byBhIGZpbGUgbmFtZWQKLSAgICpkc3QqLiAgKmRzdCogbXVzdCBiZSB0aGUgY29tcGxldGUgdGFyZ2V0IGZpbGUgbmFtZTsgbG9vayBhdAotICAgOmZ1bmM6YHNodXRpbC5jb3B5YCBmb3IgYSBjb3B5IHRoYXQgYWNjZXB0cyBhIHRhcmdldCBkaXJlY3RvcnkgcGF0aC4gIElmCi0gICAqc3JjKiBhbmQgKmRzdCogYXJlIHRoZSBzYW1lIGZpbGVzLCA6ZXhjOmBFcnJvcmAgaXMgcmFpc2VkLgotICAgVGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uIG11c3QgYmUgd3JpdGFibGU7IG90aGVyd2lzZSwgIGFuIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbgotICAgd2lsbCBiZSByYWlzZWQuIElmICpkc3QqIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHJlcGxhY2VkLiAgIFNwZWNpYWwgZmlsZXMKLSAgIHN1Y2ggYXMgY2hhcmFjdGVyIG9yIGJsb2NrIGRldmljZXMgYW5kIHBpcGVzIGNhbm5vdCBiZSBjb3BpZWQgd2l0aCB0aGlzCi0gICBmdW5jdGlvbi4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgKmRzdCogYW5kIHJldHVybiAqZHN0Ki4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgKmRzdCogbXVzdCBiZSB0aGUgY29tcGxldGUgdGFyZ2V0IGZpbGUgbmFtZTsgbG9vayBhdCA6ZnVuYzpgc2h1dGlsLmNvcHlgCisgICBmb3IgYSBjb3B5IHRoYXQgYWNjZXB0cyBhIHRhcmdldCBkaXJlY3RvcnkgcGF0aC4gIElmICpzcmMqIGFuZCAqZHN0KgorICAgc3BlY2lmeSB0aGUgc2FtZSBmaWxlLCA6ZXhjOmBFcnJvcmAgaXMgcmFpc2VkLgogCisgICBUaGUgZGVzdGluYXRpb24gbG9jYXRpb24gbXVzdCBiZSB3cml0YWJsZTsgb3RoZXJ3aXNlLCBhbiA6ZXhjOmBPU0Vycm9yYAorICAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBJZiAqZHN0KiBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXBsYWNlZC4KKyAgIFNwZWNpYWwgZmlsZXMgc3VjaCBhcyBjaGFyYWN0ZXIgb3IgYmxvY2sgZGV2aWNlcyBhbmQgcGlwZXMgY2Fubm90IGJlCisgICBjb3BpZWQgd2l0aCB0aGlzIGZ1bmN0aW9uLgogCi0uLiBmdW5jdGlvbjo6IGNvcHltb2RlKHNyYywgZHN0KQorICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UgYW5kICpzcmMqIGlzIGEgc3ltYm9saWMgbGluaywKKyAgIGEgbmV3IHN5bWJvbGljIGxpbmsgd2lsbCBiZSBjcmVhdGVkIGluc3RlYWQgb2YgY29weWluZyB0aGUKKyAgIGZpbGUgKnNyYyogcG9pbnRzIHRvLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgorICAgICAgTm93IHJldHVybnMgKmRzdCouCisKKy4uIGZ1bmN0aW9uOjogY29weW1vZGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBDb3B5IHRoZSBwZXJtaXNzaW9uIGJpdHMgZnJvbSAqc3JjKiB0byAqZHN0Ki4gIFRoZSBmaWxlIGNvbnRlbnRzLCBvd25lciwgYW5kCiAgICBncm91cCBhcmUgdW5hZmZlY3RlZC4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsIGFuZCBib3RoICpzcmMqIGFuZCAqZHN0KiBhcmUgc3ltYm9saWMgbGlua3MsCisgICA6ZnVuYzpgY29weW1vZGVgIHdpbGwgYXR0ZW1wdCB0byBtb2RpZnkgdGhlIG1vZGUgb2YgKmRzdCogaXRzZWxmIChyYXRoZXIKKyAgIHRoYW4gdGhlIGZpbGUgaXQgcG9pbnRzIHRvKS4gIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhaWxhYmxlIG9uIGV2ZXJ5CisgICBwbGF0Zm9ybTsgcGxlYXNlIHNlZSA6ZnVuYzpgY29weXN0YXRgIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgSWYKKyAgIDpmdW5jOmBjb3B5bW9kZWAgY2Fubm90IG1vZGlmeSBzeW1ib2xpYyBsaW5rcyBvbiB0aGUgbG9jYWwgcGxhdGZvcm0sIGFuZCBpdAorICAgaXMgYXNrZWQgdG8gZG8gc28sIGl0IHdpbGwgZG8gbm90aGluZyBhbmQgcmV0dXJuLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogY29weXN0YXQoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IGNvcHlzdGF0KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ29weSB0aGUgcGVybWlzc2lvbiBiaXRzLCBsYXN0IGFjY2VzcyB0aW1lLCBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lLCBhbmQgZmxhZ3MKLSAgIGZyb20gKnNyYyogdG8gKmRzdCouICBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZCBncm91cCBhcmUgdW5hZmZlY3RlZC4gICpzcmMqCi0gICBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgIENvcHkgdGhlIHBlcm1pc3Npb24gYml0cywgbGFzdCBhY2Nlc3MgdGltZSwgbGFzdCBtb2RpZmljYXRpb24gdGltZSwgYW5kCisgICBmbGFncyBmcm9tICpzcmMqIHRvICpkc3QqLiAgT24gTGludXgsIDpmdW5jOmBjb3B5c3RhdGAgYWxzbyBjb3BpZXMgdGhlCisgICAiZXh0ZW5kZWQgYXR0cmlidXRlcyIgd2hlcmUgcG9zc2libGUuICBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZAorICAgZ3JvdXAgYXJlIHVuYWZmZWN0ZWQuICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KIAorICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsIGFuZCAqc3JjKiBhbmQgKmRzdCogYm90aAorICAgcmVmZXIgdG8gc3ltYm9saWMgbGlua3MsIDpmdW5jOmBjb3B5c3RhdGAgd2lsbCBvcGVyYXRlIG9uCisgICB0aGUgc3ltYm9saWMgbGlua3MgdGhlbXNlbHZlcyByYXRoZXIgdGhhbiB0aGUgZmlsZXMgdGhlCisgICBzeW1ib2xpYyBsaW5rcyByZWZlciB0by0tcmVhZGluZyB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUKKyAgICpzcmMqIHN5bWJvbGljIGxpbmssIGFuZCB3cml0aW5nIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUKKyAgICpkc3QqIHN5bWJvbGljIGxpbmsuCiAKLS4uIGZ1bmN0aW9uOjogY29weShzcmMsIGRzdCkKKyAgIC4uIG5vdGU6OgogCi0gICBDb3B5IHRoZSBmaWxlICpzcmMqIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAqZHN0Ki4gIElmICpkc3QqIGlzIGEgZGlyZWN0b3J5LCBhCi0gICBmaWxlIHdpdGggdGhlIHNhbWUgYmFzZW5hbWUgYXMgKnNyYyogIGlzIGNyZWF0ZWQgKG9yIG92ZXJ3cml0dGVuKSBpbiB0aGUKLSAgIGRpcmVjdG9yeSBzcGVjaWZpZWQuICBQZXJtaXNzaW9uIGJpdHMgYXJlIGNvcGllZC4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aAotICAgbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgICAgIE5vdCBhbGwgcGxhdGZvcm1zIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gZXhhbWluZSBhbmQKKyAgICAgIG1vZGlmeSBzeW1ib2xpYyBsaW5rcy4gIFB5dGhvbiBpdHNlbGYgY2FuIHRlbGwgeW91IHdoYXQKKyAgICAgIGZ1bmN0aW9uYWxpdHkgaXMgbG9jYWxseSBhdmFpbGFibGUuCiAKKyAgICAgICogSWYgYGBvcy5jaG1vZCBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgYCBpcworICAgICAgICBgYFRydWVgYCwgOmZ1bmM6YGNvcHlzdGF0YCBjYW4gbW9kaWZ5IHRoZSBwZXJtaXNzaW9uCisgICAgICAgIGJpdHMgb2YgYSBzeW1ib2xpYyBsaW5rLgogCi0uLiBmdW5jdGlvbjo6IGNvcHkyKHNyYywgZHN0KQorICAgICAgKiBJZiBgYG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2BgIGlzCisgICAgICAgIGBgVHJ1ZWBgLCA6ZnVuYzpgY29weXN0YXRgIGNhbiBtb2RpZnkgdGhlIGxhc3QgYWNjZXNzCisgICAgICAgIGFuZCBtb2RpZmljYXRpb24gdGltZXMgb2YgYSBzeW1ib2xpYyBsaW5rLgogCi0gICBTaW1pbGFyIHRvIDpmdW5jOmBzaHV0aWwuY29weWAsIGJ1dCBtZXRhZGF0YSBpcyBjb3BpZWQgYXMgd2VsbCAtLSBpbiBmYWN0LAotICAgdGhpcyBpcyBqdXN0IDpmdW5jOmBzaHV0aWwuY29weWAgZm9sbG93ZWQgYnkgOmZ1bmM6YGNvcHlzdGF0YC4gIFRoaXMgaXMKLSAgIHNpbWlsYXIgdG8gdGhlIFVuaXggY29tbWFuZCA6cHJvZ3JhbTpgY3AgLXBgLgorICAgICAgKiBJZiBgYG9zLmNoZmxhZ3MgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYGAgaXMKKyAgICAgICAgYGBUcnVlYGAsIDpmdW5jOmBjb3B5c3RhdGAgY2FuIG1vZGlmeSB0aGUgZmxhZ3Mgb2YKKyAgICAgICAgYSBzeW1ib2xpYyBsaW5rLiAgKGBgb3MuY2hmbGFnc2BgIGlzIG5vdCBhdmFpbGFibGUgb24KKyAgICAgICAgYWxsIHBsYXRmb3Jtcy4pCiAKKyAgICAgIE9uIHBsYXRmb3JtcyB3aGVyZSBzb21lIG9yIGFsbCBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkKKyAgICAgIGlzIHVuYXZhaWxhYmxlLCB3aGVuIGFza2VkIHRvIG1vZGlmeSBhIHN5bWJvbGljIGxpbmssCisgICAgICA6ZnVuYzpgY29weXN0YXRgIHdpbGwgY29weSBldmVyeXRoaW5nIGl0IGNhbi4KKyAgICAgIDpmdW5jOmBjb3B5c3RhdGAgbmV2ZXIgcmV0dXJucyBmYWlsdXJlLgorCisgICAgICBQbGVhc2Ugc2VlIDpkYXRhOmBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgCisgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50IGFuZCBzdXBwb3J0IGZvciBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzLgorCisuLiBmdW5jdGlvbjo6IGNvcHkoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBDb3BpZXMgdGhlIGZpbGUgKnNyYyogdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5ICpkc3QqLiAgKnNyYyogYW5kICpkc3QqCisgICBzaG91bGQgYmUgc3RyaW5ncy4gIElmICpkc3QqIHNwZWNpZmllcyBhIGRpcmVjdG9yeSwgdGhlIGZpbGUgd2lsbCBiZQorICAgY29waWVkIGludG8gKmRzdCogdXNpbmcgdGhlIGJhc2UgZmlsZW5hbWUgZnJvbSAqc3JjKi4gIFJldHVybnMgdGhlCisgICBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCisKKyAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlLCBhbmQgKnNyYyogaXMgYSBzeW1ib2xpYyBsaW5rLAorICAgKmRzdCogd2lsbCBiZSBjcmVhdGVkIGFzIGEgc3ltYm9saWMgbGluay4gIElmICpmb2xsb3dfc3ltbGlua3MqCisgICBpcyB0cnVlIGFuZCAqc3JjKiBpcyBhIHN5bWJvbGljIGxpbmssICpkc3QqIHdpbGwgYmUgYSBjb3B5IG9mCisgICB0aGUgZmlsZSAqc3JjKiByZWZlcnMgdG8uCisKKyAgIDpmdW5jOmBjb3B5YCBjb3BpZXMgdGhlIGZpbGUgZGF0YSBhbmQgdGhlIGZpbGUncyBwZXJtaXNzaW9uCisgICBtb2RlIChzZWUgOmZ1bmM6YG9zLmNobW9kYCkuICBPdGhlciBtZXRhZGF0YSwgbGlrZSB0aGUKKyAgIGZpbGUncyBjcmVhdGlvbiBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzLCBpcyBub3QgcHJlc2VydmVkLgorICAgVG8gcHJlc2VydmUgYWxsIGZpbGUgbWV0YWRhdGEgZnJvbSB0aGUgb3JpZ2luYWwsIHVzZQorICAgOmZ1bmM6YH5zaHV0aWwuY29weTJgIGluc3RlYWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KKyAgICAgIE5vdyByZXR1cm5zIHBhdGggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZS4KKworLi4gZnVuY3Rpb246OiBjb3B5MihzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIElkZW50aWNhbCB0byA6ZnVuYzpgfnNodXRpbC5jb3B5YCBleGNlcHQgdGhhdCA6ZnVuYzpgY29weTJgCisgICBhbHNvIGF0dGVtcHRzIHRvIHByZXNlcnZlIGFsbCBmaWxlIG1ldGFkYXRhLgorCisgICBXaGVuICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlLCBhbmQgKnNyYyogaXMgYSBzeW1ib2xpYworICAgbGluaywgOmZ1bmM6YGNvcHkyYCBhdHRlbXB0cyB0byBjb3B5IGFsbCBtZXRhZGF0YSBmcm9tIHRoZQorICAgKnNyYyogc3ltYm9saWMgbGluayB0byB0aGUgbmV3bHktY3JlYXRlZCAqZHN0KiBzeW1ib2xpYyBsaW5rLgorICAgSG93ZXZlciwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgIE9uIHBsYXRmb3JtcyB3aGVyZSBzb21lIG9yIGFsbCBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgIHVuYXZhaWxhYmxlLCA6ZnVuYzpgY29weTJgIHdpbGwgcHJlc2VydmUgYWxsIHRoZSBtZXRhZGF0YQorICAgaXQgY2FuOyA6ZnVuYzpgY29weTJgIG5ldmVyIHJldHVybnMgZmFpbHVyZS4KKworICAgOmZ1bmM6YGNvcHkyYCB1c2VzIDpmdW5jOmBjb3B5c3RhdGAgdG8gY29weSB0aGUgZmlsZSBtZXRhZGF0YS4KKyAgIFBsZWFzZSBzZWUgOmZ1bmM6YGNvcHlzdGF0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgYWJvdXQgcGxhdGZvcm0gc3VwcG9ydCBmb3IgbW9kaWZ5aW5nIHN5bWJvbGljIGxpbmsgbWV0YWRhdGEuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudCwgdHJ5IHRvIGNvcHkgZXh0ZW5kZWQKKyAgICAgIGZpbGUgc3lzdGVtIGF0dHJpYnV0ZXMgdG9vIChjdXJyZW50bHkgTGludXggb25seSkuCisgICAgICBOb3cgcmV0dXJucyBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCiAKIC4uIGZ1bmN0aW9uOjogaWdub3JlX3BhdHRlcm5zKFwqcGF0dGVybnMpCiAKQEAgLTk2LDE2ICsxODAsMTcgQEAKIAogLi4gZnVuY3Rpb246OiBjb3B5dHJlZShzcmMsIGRzdCwgc3ltbGlua3M9RmFsc2UsIGlnbm9yZT1Ob25lLCBjb3B5X2Z1bmN0aW9uPWNvcHkyLCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9RmFsc2UpCiAKLSAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKi4gIFRoZSBkZXN0aW5hdGlvbgorICAgUmVjdXJzaXZlbHkgY29weSBhbiBlbnRpcmUgZGlyZWN0b3J5IHRyZWUgcm9vdGVkIGF0ICpzcmMqLCByZXR1cm5pbmcgdGhlCisgICBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuICBUaGUgZGVzdGluYXRpb24KICAgIGRpcmVjdG9yeSwgbmFtZWQgYnkgKmRzdCosIG11c3Qgbm90IGFscmVhZHkgZXhpc3Q7IGl0IHdpbGwgYmUgY3JlYXRlZCBhcwogICAgd2VsbCBhcyBtaXNzaW5nIHBhcmVudCBkaXJlY3Rvcmllcy4gIFBlcm1pc3Npb25zIGFuZCB0aW1lcyBvZiBkaXJlY3RvcmllcwogICAgYXJlIGNvcGllZCB3aXRoIDpmdW5jOmBjb3B5c3RhdGAsIGluZGl2aWR1YWwgZmlsZXMgYXJlIGNvcGllZCB1c2luZwogICAgOmZ1bmM6YHNodXRpbC5jb3B5MmAuCiAKICAgIElmICpzeW1saW5rcyogaXMgdHJ1ZSwgc3ltYm9saWMgbGlua3MgaW4gdGhlIHNvdXJjZSB0cmVlIGFyZSByZXByZXNlbnRlZCBhcwotICAgc3ltYm9saWMgbGlua3MgaW4gdGhlIG5ldyB0cmVlLCBidXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBvcmlnaW5hbCBsaW5rcyBpcyBOT1QKLSAgIGNvcGllZDsgaWYgZmFsc2Ugb3Igb21pdHRlZCwgdGhlIGNvbnRlbnRzIGFuZCBtZXRhZGF0YSBvZiB0aGUgbGlua2VkIGZpbGVzCi0gICBhcmUgY29waWVkIHRvIHRoZSBuZXcgdHJlZS4KKyAgIHN5bWJvbGljIGxpbmtzIGluIHRoZSBuZXcgdHJlZSBhbmQgdGhlIG1ldGFkYXRhIG9mIHRoZSBvcmlnaW5hbCBsaW5rcyB3aWxsCisgICBiZSBjb3BpZWQgYXMgZmFyIGFzIHRoZSBwbGF0Zm9ybSBhbGxvd3M7IGlmIGZhbHNlIG9yIG9taXR0ZWQsIHRoZSBjb250ZW50cworICAgYW5kIG1ldGFkYXRhIG9mIHRoZSBsaW5rZWQgZmlsZXMgYXJlIGNvcGllZCB0byB0aGUgbmV3IHRyZWUuCiAKICAgIFdoZW4gKnN5bWxpbmtzKiBpcyBmYWxzZSwgaWYgdGhlIGZpbGUgcG9pbnRlZCBieSB0aGUgc3ltbGluayBkb2Vzbid0CiAgICBleGlzdCwgYSBleGNlcHRpb24gd2lsbCBiZSBhZGRlZCBpbiB0aGUgbGlzdCBvZiBlcnJvcnMgcmFpc2VkIGluCkBAIC0xMjksMTMgKzIxNCwxNSBAQAogICAgSWYgKmNvcHlfZnVuY3Rpb24qIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgY2FsbGFibGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY29weQogICAgZWFjaCBmaWxlLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzb3VyY2UgcGF0aCBhbmQgdGhlIGRlc3RpbmF0aW9uIHBhdGgKICAgIGFzIGFyZ3VtZW50cy4gQnkgZGVmYXVsdCwgOmZ1bmM6YHNodXRpbC5jb3B5MmAgaXMgdXNlZCwgYnV0IGFueSBmdW5jdGlvbgotICAgdGhhdCBzdXBwb3J0cyB0aGUgc2FtZSBzaWduYXR1cmUgKGxpa2UgOmZ1bmM6YGNvcHlgKSBjYW4gYmUgdXNlZC4KKyAgIHRoYXQgc3VwcG9ydHMgdGhlIHNhbWUgc2lnbmF0dXJlIChsaWtlIDpmdW5jOmBzaHV0aWwuY29weWApIGNhbiBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ29weSBtZXRhZGF0YSB3aGVuICpzeW1saW5rcyogaXMgZmFsc2UuCisgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqY29weV9mdW5jdGlvbiogYXJndW1lbnQgdG8gYmUgYWJsZSB0byBwcm92aWRlIGEgY3VzdG9tIGNvcHkKICAgICAgIGZ1bmN0aW9uLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlICppZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3MqIGFyZ3VtZW50IHRvIHNpbGVudCBkYW5nbGluZyBzeW1saW5rcwogICAgICAgZXJyb3JzIHdoZW4gKnN5bWxpbmtzKiBpcyBmYWxzZS4KIApAQCAtMTUwLDE5ICsyMzcsNDIgQEAKICAgIGhhbmRsZWQgYnkgY2FsbGluZyBhIGhhbmRsZXIgc3BlY2lmaWVkIGJ5ICpvbmVycm9yKiBvciwgaWYgdGhhdCBpcyBvbWl0dGVkLAogICAgdGhleSByYWlzZSBhbiBleGNlcHRpb24uCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHRoZSBuZWNlc3NhcnkgZmQtYmFzZWQgZnVuY3Rpb25zIGEgc3ltbGluaworICAgICAgYXR0YWNrIHJlc2lzdGFudCB2ZXJzaW9uIG9mIDpmdW5jOmBybXRyZWVgIGlzIHVzZWQgYnkgZGVmYXVsdC4gIE9uIG90aGVyCisgICAgICBwbGF0Zm9ybXMsIHRoZSA6ZnVuYzpgcm10cmVlYCBpbXBsZW1lbnRhdGlvbiBpcyBzdXNjZXB0aWJsZSB0byBhIHN5bWxpbmsKKyAgICAgIGF0dGFjazogZ2l2ZW4gcHJvcGVyIHRpbWluZyBhbmQgY2lyY3Vtc3RhbmNlcywgYXR0YWNrZXJzIGNhbiBtYW5pcHVsYXRlCisgICAgICBzeW1saW5rcyBvbiB0aGUgZmlsZXN5c3RlbSB0byBkZWxldGUgZmlsZXMgdGhleSB3b3VsZG4ndCBiZSBhYmxlIHRvIGFjY2VzcworICAgICAgb3RoZXJ3aXNlLiAgQXBwbGljYXRpb25zIGNhbiB1c2UgdGhlIDpkYXRhOmBybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrc2AKKyAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZSB0byBkZXRlcm1pbmUgd2hpY2ggY2FzZSBhcHBsaWVzLgorCiAgICBJZiAqb25lcnJvciogaXMgcHJvdmlkZWQsIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IGFjY2VwdHMgdGhyZWUKLSAgIHBhcmFtZXRlcnM6ICpmdW5jdGlvbiosICpwYXRoKiwgYW5kICpleGNpbmZvKi4gVGhlIGZpcnN0IHBhcmFtZXRlciwKLSAgICpmdW5jdGlvbiosIGlzIHRoZSBmdW5jdGlvbiB3aGljaCByYWlzZWQgdGhlIGV4Y2VwdGlvbjsgaXQgd2lsbCBiZQotICAgOmZ1bmM6YG9zLnBhdGguaXNsaW5rYCwgOmZ1bmM6YG9zLmxpc3RkaXJgLCA6ZnVuYzpgb3MucmVtb3ZlYCBvcgotICAgOmZ1bmM6YG9zLnJtZGlyYC4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyLCAqcGF0aCosIHdpbGwgYmUgdGhlIHBhdGggbmFtZSBwYXNzZWQKLSAgIHRvICpmdW5jdGlvbiouICBUaGUgdGhpcmQgcGFyYW1ldGVyLCAqZXhjaW5mbyosIHdpbGwgYmUgdGhlIGV4Y2VwdGlvbgotICAgaW5mb3JtYXRpb24gcmV0dXJuIGJ5IDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgRXhjZXB0aW9ucyByYWlzZWQgYnkgKm9uZXJyb3IqCi0gICB3aWxsIG5vdCBiZSBjYXVnaHQuCisgICBwYXJhbWV0ZXJzOiAqZnVuY3Rpb24qLCAqcGF0aCosIGFuZCAqZXhjaW5mbyouCisKKyAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIsICpmdW5jdGlvbiosIGlzIHRoZSBmdW5jdGlvbiB3aGljaCByYWlzZWQgdGhlIGV4Y2VwdGlvbjsKKyAgIGl0IGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtIGFuZCBpbXBsZW1lbnRhdGlvbi4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyLAorICAgKnBhdGgqLCB3aWxsIGJlIHRoZSBwYXRoIG5hbWUgcGFzc2VkIHRvICpmdW5jdGlvbiouICBUaGUgdGhpcmQgcGFyYW1ldGVyLAorICAgKmV4Y2luZm8qLCB3aWxsIGJlIHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgRXhjZXB0aW9ucyByYWlzZWQgYnkgKm9uZXJyb3IqIHdpbGwgbm90IGJlIGNhdWdodC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGEgc3ltbGluayBhdHRhY2sgcmVzaXN0YW50IHZlcnNpb24gdGhhdCBpcyB1c2VkIGF1dG9tYXRpY2FsbHkKKyAgICAgIGlmIHBsYXRmb3JtIHN1cHBvcnRzIGZkLWJhc2VkIGZ1bmN0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogcm10cmVlLmF2b2lkc19zeW1saW5rX2F0dGFja3MKKworICAgICAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gYW5kIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGEKKyAgICAgIHN5bWxpbmsgYXR0YWNrIHJlc2lzdGFudCB2ZXJzaW9uIG9mIDpmdW5jOmBybXRyZWVgLiAgQ3VycmVudGx5IHRoaXMgaXMKKyAgICAgIG9ubHkgdHJ1ZSBmb3IgcGxhdGZvcm1zIHN1cHBvcnRpbmcgZmQtYmFzZWQgZGlyZWN0b3J5IGFjY2VzcyBmdW5jdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCkKIAotICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopLgorICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopCisgICBhbmQgcmV0dXJuIHRoZSBkZXN0aW5hdGlvbi4KIAogICAgSWYgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5IG9yIGEgc3ltbGluayB0byBhIGRpcmVjdG9yeSwgdGhlbiAqc3JjKiBpcwogICAgbW92ZWQgaW5zaWRlIHRoYXQgZGlyZWN0b3J5LgpAQCAtMTczLDcgKzI4Myw2MSBAQAogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiA6ZnVuYzpgb3MucmVuYW1lYCBpcwogICAgdXNlZC4gIE90aGVyd2lzZSwgKnNyYyogaXMgY29waWVkICh1c2luZyA6ZnVuYzpgc2h1dGlsLmNvcHkyYCkgdG8gKmRzdCogYW5kCi0gICB0aGVuIHJlbW92ZWQuCisgICB0aGVuIHJlbW92ZWQuIEluIGNhc2Ugb2Ygc3ltbGlua3MsIGEgbmV3IHN5bWxpbmsgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBvZgorICAgKnNyYyogd2lsbCBiZSBjcmVhdGVkIGluIG9yIGFzICpkc3QqIGFuZCAqc3JjKiB3aWxsIGJlIHJlbW92ZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBleHBsaWNpdCBzeW1saW5rIGhhbmRsaW5nIGZvciBmb3JlaWduIGZpbGVzeXN0ZW1zLCB0aHVzIGFkYXB0aW5nCisgICAgICBpdCB0byB0aGUgYmVoYXZpb3Igb2YgR05VJ3MgOnByb2dyYW06YG12YC4KKyAgICAgIE5vdyByZXR1cm5zICpkc3QqLgorCisuLiBmdW5jdGlvbjo6IGRpc2tfdXNhZ2UocGF0aCkKKworICAgUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhIDp0ZXJtOmBuYW1lZCB0dXBsZWAKKyAgIHdpdGggdGhlIGF0dHJpYnV0ZXMgKnRvdGFsKiwgKnVzZWQqIGFuZCAqZnJlZSosIHdoaWNoIGFyZSB0aGUgYW1vdW50IG9mCisgICB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKy4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdXNlcj1Ob25lLCBncm91cD1Ob25lKQorCisgICBDaGFuZ2Ugb3duZXIgKnVzZXIqIGFuZC9vciAqZ3JvdXAqIG9mIHRoZSBnaXZlbiAqcGF0aCouCisKKyAgICp1c2VyKiBjYW4gYmUgYSBzeXN0ZW0gdXNlciBuYW1lIG9yIGEgdWlkOyB0aGUgc2FtZSBhcHBsaWVzIHRvICpncm91cCouIEF0CisgICBsZWFzdCBvbmUgYXJndW1lbnQgaXMgcmVxdWlyZWQuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBvcy5jaG93bmAsIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogd2hpY2goY21kLCBtb2RlPW9zLkZfT0sgfCBvcy5YX09LLCBwYXRoPU5vbmUpCisKKyAgIFJldHVybiB0aGUgcGF0aCB0byBhbiBleGVjdXRhYmxlIHdoaWNoIHdvdWxkIGJlIHJ1biBpZiB0aGUgZ2l2ZW4gKmNtZCogd2FzCisgICBjYWxsZWQuICBJZiBubyAqY21kKiB3b3VsZCBiZSBjYWxsZWQsIHJldHVybiBgYE5vbmVgYC4KKworICAgKm1vZGUqIGlzIGEgcGVybWlzc2lvbiBtYXNrIHBhc3NlZCBhIHRvIDpmdW5jOmBvcy5hY2Nlc3NgLCBieSBkZWZhdWx0CisgICBkZXRlcm1pbmluZyBpZiB0aGUgZmlsZSBleGlzdHMgYW5kIGV4ZWN1dGFibGUuCisKKyAgIFdoZW4gbm8gKnBhdGgqIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdHMgb2YgOmZ1bmM6YG9zLmVudmlyb25gIGFyZSB1c2VkLAorICAgcmV0dXJuaW5nIGVpdGhlciB0aGUgIlBBVEgiIHZhbHVlIG9yIGEgZmFsbGJhY2sgb2YgOmF0dHI6YG9zLmRlZnBhdGhgLgorCisgICBPbiBXaW5kb3dzLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYWx3YXlzIHByZXBlbmRlZCB0byB0aGUgKnBhdGgqIHdoZXRoZXIKKyAgIG9yIG5vdCB5b3UgdXNlIHRoZSBkZWZhdWx0IG9yIHByb3ZpZGUgeW91ciBvd24sIHdoaWNoIGlzIHRoZSBiZWhhdmlvciB0aGUKKyAgIGNvbW1hbmQgc2hlbGwgdXNlcyB3aGVuIGZpbmRpbmcgZXhlY3V0YWJsZXMuICBBZGRpdGlvbmFseSwgd2hlbiBmaW5kaW5nIHRoZQorICAgKmNtZCogaW4gdGhlICpwYXRoKiwgdGhlIGBgUEFUSEVYVGBgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGNoZWNrZWQuICBGb3IKKyAgIGV4YW1wbGUsIGlmIHlvdSBjYWxsIGBgc2h1dGlsLndoaWNoKCJweXRob24iKWBgLCA6ZnVuYzpgd2hpY2hgIHdpbGwgc2VhcmNoCisgICBgYFBBVEhFWFRgYCB0byBrbm93IHRoYXQgaXQgc2hvdWxkIGxvb2sgZm9yIGBgcHl0aG9uLmV4ZWBgIHdpdGhpbiB0aGUgKnBhdGgqCisgICBkaXJlY3Rvcmllcy4gIEZvciBleGFtcGxlLCBvbiBXaW5kb3dzOjoKKworICAgICAgPj4+IHNodXRpbC53aGljaCgicHl0aG9uIikKKyAgICAgICdjOlxccHl0aG9uMzNcXHB5dGhvbi5leGUnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGV4Y2VwdGlvbjo6IEVycm9yCkBAIC0xODYsNyArMzUwLDcgQEAKIC4uIF9zaHV0aWwtY29weXRyZWUtZXhhbXBsZToKIAogY29weXRyZWUgZXhhbXBsZQotOjo6Ojo6Ojo6Ojo6Ojo6Ogorfn5+fn5+fn5+fn5+fn5+fgogCiBUaGlzIGV4YW1wbGUgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSA6ZnVuYzpgY29weXRyZWVgIGZ1bmN0aW9uLCBkZXNjcmliZWQKIGFib3ZlLCB3aXRoIHRoZSBkb2NzdHJpbmcgb21pdHRlZC4gIEl0IGRlbW9uc3RyYXRlcyBtYW55IG9mIHRoZSBvdGhlciBmdW5jdGlvbnMKQEAgLTI1MCw2ICs0MTQsOCBAQAogQXJjaGl2aW5nIG9wZXJhdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuMgorCiBIaWdoLWxldmVsIHV0aWxpdGllcyB0byBjcmVhdGUgYW5kIHJlYWQgY29tcHJlc3NlZCBhbmQgYXJjaGl2ZWQgZmlsZXMgYXJlIGFsc28KIHByb3ZpZGVkLiAgVGhleSByZWx5IG9uIHRoZSA6bW9kOmB6aXBmaWxlYCBhbmQgOm1vZDpgdGFyZmlsZWAgbW9kdWxlcy4KIApAQCAtMjc3LDggKzQ0Myw2IEBACiAgICAqbG9nZ2VyKiBtdXN0IGJlIGFuIG9iamVjdCBjb21wYXRpYmxlIHdpdGggOnBlcDpgMjgyYCwgdXN1YWxseSBhbiBpbnN0YW5jZSBvZgogICAgOmNsYXNzOmBsb2dnaW5nLkxvZ2dlcmAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTI5NSw4ICs0NTksNiBAQAogICAgWW91IGNhbiByZWdpc3RlciBuZXcgZm9ybWF0cyBvciBwcm92aWRlIHlvdXIgb3duIGFyY2hpdmVyIGZvciBhbnkgZXhpc3RpbmcKICAgIGZvcm1hdHMsIGJ5IHVzaW5nIDpmdW5jOmByZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSwgZnVuY3Rpb24sIFtleHRyYV9hcmdzLCBbZGVzY3JpcHRpb25dXSkKIApAQCAtMzA5LDE1ICs0NzEsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogaXMgdXNlZCBieSA6ZnVuYzpgZ2V0X2FyY2hpdmVfZm9ybWF0c2Agd2hpY2ggcmV0dXJucyB0aGUKICAgIGxpc3Qgb2YgYXJjaGl2ZXJzLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBsaXN0LgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSkKIAogICAgUmVtb3ZlIHRoZSBhcmNoaXZlIGZvcm1hdCAqbmFtZSogZnJvbSB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cy4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiB1bnBhY2tfYXJjaGl2ZShmaWxlbmFtZVssIGV4dHJhY3RfZGlyWywgZm9ybWF0XV0pCiAKQEAgLTMzMiw4ICs0OTAsNiBAQAogICAgYW5kIHNlZSBpZiBhbiB1bnBhY2tlciB3YXMgcmVnaXN0ZXJlZCBmb3IgdGhhdCBleHRlbnNpb24uIEluIGNhc2Ugbm9uZSBpcwogICAgZm91bmQsIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX3VucGFja19mb3JtYXQobmFtZSwgZXh0ZW5zaW9ucywgZnVuY3Rpb25bLCBleHRyYV9hcmdzWywgZGVzY3JpcHRpb25dXSkKIApAQCAtMzUxLDE1ICs1MDcsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogY2FuIGJlIHByb3ZpZGVkIHRvIGRlc2NyaWJlIHRoZSBmb3JtYXQsIGFuZCB3aWxsIGJlIHJldHVybmVkCiAgICBieSB0aGUgOmZ1bmM6YGdldF91bnBhY2tfZm9ybWF0c2AgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0KG5hbWUpCiAKICAgIFVucmVnaXN0ZXIgYW4gdW5wYWNrIGZvcm1hdC4gKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtYXQuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3VucGFja19mb3JtYXRzKCkKIApAQCAtMzc3LDEzICs1MjksMTEgQEAKICAgIFlvdSBjYW4gcmVnaXN0ZXIgbmV3IGZvcm1hdHMgb3IgcHJvdmlkZSB5b3VyIG93biB1bnBhY2tlciBmb3IgYW55IGV4aXN0aW5nCiAgICBmb3JtYXRzLCBieSB1c2luZyA6ZnVuYzpgcmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIF9zaHV0aWwtYXJjaGl2aW5nLWV4YW1wbGU6CiAKIEFyY2hpdmluZyBleGFtcGxlCi06Ojo6Ojo6Ojo6Ojo6Ojo6Ogorfn5+fn5+fn5+fn5+fn5+fn4KIAogSW4gdGhpcyBleGFtcGxlLCB3ZSBjcmVhdGUgYSBnemlwJ2VkIHRhci1maWxlIGFyY2hpdmUgY29udGFpbmluZyBhbGwgZmlsZXMKIGZvdW5kIGluIHRoZSA6ZmlsZTpgLnNzaGAgZGlyZWN0b3J5IG9mIHRoZSB1c2VyOjoKQEAgLTQwNiwzICs1NTYsMzYgQEAKICAgICAtcnctLS0tLS0tIHRhcmVrL3N0YWZmICAgIDE2NzUgMjAwOC0wNi0wOSAxMzoyNjo1NCAuL2lkX3JzYQogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAgIDM5NyAyMDA4LTA2LTA5IDEzOjI2OjU0IC4vaWRfcnNhLnB1YgogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAzNzE5MiAyMDEwLTAyLTA2IDE4OjIzOjEwIC4va25vd25faG9zdHMKKworCitRdWVyeWluZyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IHRlcm1pbmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGdldF90ZXJtaW5hbF9zaXplKGZhbGxiYWNrPShjb2x1bW5zLCBsaW5lcykpCisKKyAgIEdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICBGb3IgZWFjaCBvZiB0aGUgdHdvIGRpbWVuc2lvbnMsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYGBDT0xVTU5TYGAKKyAgIGFuZCBgYExJTkVTYGAgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgIHRoZSB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGl0IGlzIHVzZWQuCisKKyAgIFdoZW4gYGBDT0xVTU5TYGAgb3IgYGBMSU5FU2BgIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIDpkYXRhOmBzeXMuX19zdGRvdXRfX2AgaXMgcXVlcmllZAorICAgYnkgaW52b2tpbmcgOmZ1bmM6YG9zLmdldF90ZXJtaW5hbF9zaXplYC4KKworICAgSWYgdGhlIHRlcm1pbmFsIHNpemUgY2Fubm90IGJlIHN1Y2Nlc3NmdWxseSBxdWVyaWVkLCBlaXRoZXIgYmVjYXVzZQorICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIHRoZSB2YWx1ZSBnaXZlbiBpbiBgYGZhbGxiYWNrYGAgcGFyYW1ldGVyCisgICBpcyB1c2VkLiBgYGZhbGxiYWNrYGAgZGVmYXVsdHMgdG8gYGAoODAsIDI0KWBgIHdoaWNoIGlzIHRoZSBkZWZhdWx0CisgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIG5hbWVkIHR1cGxlIG9mIHR5cGUgOmNsYXNzOmBvcy50ZXJtaW5hbF9zaXplYC4KKworICAgU2VlIGFsc286IFRoZSBTaW5nbGUgVU5JWCBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDIsCisgICBgT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYF8uCisKKy4uIF9gT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYDoKKyAgIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy83OTA4Nzk5L3hiZC9lbnZ2YXIuaHRtbCN0YWdfMDAyXzAwMworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0IGIvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAppbmRleCBkMWNhZTEzLi4yYTQ3MmZlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKQEAgLTQ0LDYgKzQ0LDkgQEAKICAgc2lnbmFsIGhhbmRsZXJzIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGNhbGN1bGF0aW9uIGZpbmlzaGVzLgogCiAKKy4uIF9zaWduYWxzLWFuZC10aHJlYWRzOgorCisKIFNpZ25hbHMgYW5kIHRocmVhZHMKIF5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMTMxLDYgKzEzNCwyOCBAQAogICAgaW4gdXNlciBhbmQga2VybmVsIHNwYWNlLiBTSUdQUk9GIGlzIGRlbGl2ZXJlZCB1cG9uIGV4cGlyYXRpb24uCiAKIAorLi4gZGF0YTo6IFNJR19CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgYmxvY2tlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBTSUdfVU5CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgdW5ibG9ja2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFNJR19TRVRNQVNLCisKKyAgIEEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSAqaG93KiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AKKyAgIGluZGljYXRpbmcgdGhhdCB0aGUgc2lnbmFsIG1hc2sgaXMgdG8gYmUgcmVwbGFjZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIG9uZSBleGNlcHRpb246CiAKIC4uIGV4Y2VwdGlvbjo6IEl0aW1lckVycm9yCkBAIC0xMzgsNyArMTYzLDExIEBACiAgICBSYWlzZWQgdG8gc2lnbmFsIGFuIGVycm9yIGZyb20gdGhlIHVuZGVybHlpbmcgOmZ1bmM6YHNldGl0aW1lcmAgb3IKICAgIDpmdW5jOmBnZXRpdGltZXJgIGltcGxlbWVudGF0aW9uLiBFeHBlY3QgdGhpcyBlcnJvciBpZiBhbiBpbnZhbGlkCiAgICBpbnRlcnZhbCB0aW1lciBvciBhIG5lZ2F0aXZlIHRpbWUgaXMgcGFzc2VkIHRvIDpmdW5jOmBzZXRpdGltZXJgLgotICAgVGhpcyBlcnJvciBpcyBhIHN1YnR5cGUgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBUaGlzIGVycm9yIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGlzIGVycm9yIHVzZWQgdG8gYmUgYSBzdWJ0eXBlIG9mIDpleGM6YElPRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgpAQCAtMTcyLDYgKzIwMSw2NSBAQAogICAgd2lsbCB0aGVuIGJlIGNhbGxlZC4gIFJldHVybnMgbm90aGluZy4gIE5vdCBvbiBXaW5kb3dzLiAoU2VlIHRoZSBVbml4IG1hbiBwYWdlCiAgICA6bWFucGFnZTpgc2lnbmFsKDIpYC4pCiAKKyAgIFNlZSBhbHNvIDpmdW5jOmBzaWd3YWl0YCwgOmZ1bmM6YHNpZ3dhaXRpbmZvYCwgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAgYW5kCisgICA6ZnVuYzpgc2lncGVuZGluZ2AuCisKKworLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pCisKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQorICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KKyAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKKyAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAorICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKKyAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAorICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQorICAgZm9yICp0aHJlYWRfaWQqLgorCisgICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIHBlcmZvcm1lZDsgdGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdGFyZ2V0IHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXggKHNlZSB0aGUgbWFuIHBhZ2UgOm1hbnBhZ2U6YHB0aHJlYWRfa2lsbCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YG9zLmtpbGxgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spCisKKyAgIEZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4gIFRoZSBzaWduYWwgbWFzaworICAgaXMgdGhlIHNldCBvZiBzaWduYWxzIHdob3NlIGRlbGl2ZXJ5IGlzIGN1cnJlbnRseSBibG9ja2VkIGZvciB0aGUgY2FsbGVyLgorICAgUmV0dXJuIHRoZSBvbGQgc2lnbmFsIG1hc2sgYXMgYSBzZXQgb2Ygc2lnbmFscy4KKworICAgVGhlIGJlaGF2aW9yIG9mIHRoZSBjYWxsIGlzIGRlcGVuZGVudCBvbiB0aGUgdmFsdWUgb2YgKmhvdyosIGFzIGZvbGxvd3MuCisKKyAgICogOmRhdGE6YFNJR19CTE9DS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHRoZSB1bmlvbiBvZiB0aGUgY3VycmVudAorICAgICBzZXQgYW5kIHRoZSAqbWFzayogYXJndW1lbnQuCisgICAqIDpkYXRhOmBTSUdfVU5CTE9DS2A6IFRoZSBzaWduYWxzIGluICptYXNrKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBjdXJyZW50CisgICAgIHNldCBvZiBibG9ja2VkIHNpZ25hbHMuICBJdCBpcyBwZXJtaXNzaWJsZSB0byBhdHRlbXB0IHRvIHVuYmxvY2sgYQorICAgICBzaWduYWwgd2hpY2ggaXMgbm90IGJsb2NrZWQuCisgICAqIDpkYXRhOmBTSUdfU0VUTUFTS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHNldCB0byB0aGUgKm1hc2sqCisgICAgIGFyZ3VtZW50LgorCisgICAqbWFzayogaXMgYSBzZXQgb2Ygc2lnbmFsIG51bWJlcnMgKGUuZy4gezpjb25zdDpgc2lnbmFsLlNJR0lOVGAsCisgICA6Y29uc3Q6YHNpZ25hbC5TSUdURVJNYH0pLiBVc2UgYGByYW5nZSgxLCBzaWduYWwuTlNJRylgYCBmb3IgYSBmdWxsIG1hc2sKKyAgIGluY2x1ZGluZyBhbGwgc2lnbmFscy4KKworICAgRm9yIGV4YW1wbGUsIGBgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSlgYCByZWFkcyB0aGUKKyAgIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LiBTZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWdwcm9jbWFzaygzKWAgYW5kCisgICA6bWFucGFnZTpgcHRocmVhZF9zaWdtYXNrKDMpYCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHNpZ3BlbmRpbmdgIGFuZCA6ZnVuYzpgc2lnd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogc2V0aXRpbWVyKHdoaWNoLCBzZWNvbmRzWywgaW50ZXJ2YWxdKQogCkBAIC0yMDEsMTMgKzI4OSwxNyBAQAogCiAuLiBmdW5jdGlvbjo6IHNldF93YWtldXBfZmQoZmQpCiAKLSAgIFNldCB0aGUgd2FrZXVwIGZkIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCBhIGBgJ1wwJ2BgIGJ5dGUgaXMKLSAgIHdyaXR0ZW4gdG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieSBhIGxpYnJhcnkgdG8gd2FrZXVwIGEgcG9sbCBvciBzZWxlY3QKLSAgIGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkgcHJvY2Vzc2VkLgorICAgU2V0IHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCB0aGUKKyAgIHNpZ25hbCBudW1iZXIgaXMgd3JpdHRlbiBhcyBhIHNpbmdsZSBieXRlIGludG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieQorICAgYSBsaWJyYXJ5IHRvIHdha2V1cCBhIHBvbGwgb3Igc2VsZWN0IGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkKKyAgIHByb2Nlc3NlZC4KIAogICAgVGhlIG9sZCB3YWtldXAgZmQgaXMgcmV0dXJuZWQuICAqZmQqIG11c3QgYmUgbm9uLWJsb2NraW5nLiAgSXQgaXMgdXAgdG8gdGhlCiAgICBsaWJyYXJ5IHRvIHJlbW92ZSBhbnkgYnl0ZXMgYmVmb3JlIGNhbGxpbmcgcG9sbCBvciBzZWxlY3QgYWdhaW4uCiAKKyAgIFVzZSBmb3IgZXhhbXBsZSBgYHN0cnVjdC51bnBhY2soJyV1QicgJSBsZW4oZGF0YSksIGRhdGEpYGAgdG8gZGVjb2RlIHRoZQorICAgc2lnbmFsIG51bWJlcnMgbGlzdC4KKwogICAgV2hlbiB0aHJlYWRzIGFyZSBlbmFibGVkLCB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZDsKICAgIGF0dGVtcHRpbmcgdG8gY2FsbCBpdCBmcm9tIG90aGVyIHRocmVhZHMgd2lsbCBjYXVzZSBhIDpleGM6YFZhbHVlRXJyb3JgCiAgICBleGNlcHRpb24gdG8gYmUgcmFpc2VkLgpAQCAtMjQ3LDYgKzMzOSw3MyBAQAogICAgOmNvbnN0OmBTSUdURVJNYC4gQSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpbiBhbnkgb3RoZXIgY2FzZS4KIAogCisuLiBmdW5jdGlvbjo6IHNpZ3BlbmRpbmcoKQorCisgICBFeGFtaW5lIHRoZSBzZXQgb2Ygc2lnbmFscyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0byB0aGUgY2FsbGluZworICAgdGhyZWFkIChpLmUuLCB0aGUgc2lnbmFscyB3aGljaCBoYXZlIGJlZW4gcmFpc2VkIHdoaWxlIGJsb2NrZWQpLiAgUmV0dXJuIHRoZQorICAgc2V0IG9mIHRoZSBwZW5kaW5nIHNpZ25hbHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lncGVuZGluZygyKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AgYW5kIDpmdW5jOmBzaWd3YWl0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBzaWd3YWl0KHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBzaWduYWwKKyAgIChyZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzKSwgYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCwKKyAgIDpmdW5jOmBzaWd3YWl0aW5mb2AgYW5kIDpmdW5jOmBzaWd0aW1lZHdhaXRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHNpZ3dhaXRpbmZvKHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZQorICAgc2lnbmFsIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzLiBJZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIGluICpzaWdzZXQqIGlzIGFscmVhZHkgcGVuZGluZyBmb3IgdGhlIGNhbGxpbmcgdGhyZWFkLCB0aGUgZnVuY3Rpb24KKyAgIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBzaWduYWwuIFRoZSBzaWduYWwKKyAgIGhhbmRsZXIgaXMgbm90IGNhbGxlZCBmb3IgdGhlIGRlbGl2ZXJlZCBzaWduYWwuIFRoZSBmdW5jdGlvbiByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIHRoYXQgaXMgbm90IGluCisgICAqc2lnc2V0Ki4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUKKyAgIDpjOnR5cGU6YHNpZ2luZm9fdGAgc3RydWN0dXJlLCBuYW1lbHk6IDphdHRyOmBzaV9zaWdub2AsIDphdHRyOmBzaV9jb2RlYCwKKyAgIDphdHRyOmBzaV9lcnJub2AsIDphdHRyOmBzaV9waWRgLCA6YXR0cjpgc2lfdWlkYCwgOmF0dHI6YHNpX3N0YXR1c2AsCisgICA6YXR0cjpgc2lfYmFuZGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdGluZm8oMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogc2lndGltZWR3YWl0KHNpZ3NldCwgdGltZW91dCkKKworICAgTGlrZSA6ZnVuYzpgc2lnd2FpdGluZm9gLCBidXQgdGFrZXMgYW4gYWRkaXRpb25hbCAqdGltZW91dCogYXJndW1lbnQKKyAgIHNwZWNpZnlpbmcgYSB0aW1lb3V0LiBJZiAqdGltZW91dCogaXMgc3BlY2lmaWVkIGFzIDpjb25zdDpgMGAsIGEgcG9sbCBpcworICAgcGVyZm9ybWVkLiBSZXR1cm5zIDpjb25zdDpgTm9uZWAgaWYgYSB0aW1lb3V0IG9jY3Vycy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4IChzZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWd0aW1lZHdhaXQoMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3dhaXRpbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3NpZ25hbC1leGFtcGxlOgogCiBFeGFtcGxlCkBAIC0yNjMsNyArNDIyLDcgQEAKIAogICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgcHJpbnQoJ1NpZ25hbCBoYW5kbGVyIGNhbGxlZCB3aXRoIHNpZ25hbCcsIHNpZ251bSkKLSAgICAgICByYWlzZSBJT0Vycm9yKCJDb3VsZG4ndCBvcGVuIGRldmljZSEiKQorICAgICAgIHJhaXNlIE9TRXJyb3IoIkNvdWxkbid0IG9wZW4gZGV2aWNlISIpCiAKICAgICMgU2V0IHRoZSBzaWduYWwgaGFuZGxlciBhbmQgYSA1LXNlY29uZCBhbGFybQogICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggNTc5NTcxYS4uMzZiODBjMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTE2LDcgKzE2LDE0IEBACiAuLiBpbmRleDo6IHRyaXBsZTogbW9kdWxlOyBzZWFyY2g7IHBhdGgKIAogSW1wb3J0aW5nIHRoaXMgbW9kdWxlIHdpbGwgYXBwZW5kIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAotYW5kIGFkZCBhIGZldyBidWlsdGlucy4KK2FuZCBhZGQgYSBmZXcgYnVpbHRpbnMsIHVubGVzcyA6b3B0aW9uOmAtU2Agd2FzIHVzZWQuICBJbiB0aGF0IGNhc2UsIHRoaXMgbW9kdWxlCitjYW4gYmUgc2FmZWx5IGltcG9ydGVkIHdpdGggbm8gYXV0b21hdGljIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAorb3IgYWRkaXRpb25zIHRvIHRoZSBidWlsdGlucy4gIFRvIGV4cGxpY2l0bHkgdHJpZ2dlciB0aGUgdXN1YWwgc2l0ZS1zcGVjaWZpYworYWRkaXRpb25zLCBjYWxsIHRoZSA6ZnVuYzpgc2l0ZS5tYWluYCBmdW5jdGlvbi4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEltcG9ydGluZyB0aGUgbW9kdWxlIHVzZWQgdG8gdHJpZ2dlciBwYXRocyBtYW5pcHVsYXRpb24gZXZlbiB3aGVuIHVzaW5nCisgICA6b3B0aW9uOmAtU2AuCiAKIC4uIGluZGV4OjoKICAgIHBhaXI6IHNpdGUtcHl0aG9uOyBkaXJlY3RvcnkKQEAgLTMxLDYgKzM4LDE1IEBACiBpZiBpdCByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZAogYWxzbyBpbnNwZWN0cyB0aGUgbmV3bHkgYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAorSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKK3N5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAorc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCitpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKK3RoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKyhjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKK3NlYXJjaGVkIGZvciBzaXRlLXBhY2thZ2VzOyBvdGhlcndpc2UgdGhleSB3b24ndC4KKwogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0gOmZpbGU6YHtuYW1lfS5wdGhgCiBhbmQgZXhpc3RzIGluIG9uZSBvZiB0aGUgZm91ciBkaXJlY3RvcmllcyBtZW50aW9uZWQgYWJvdmU7IGl0cyBjb250ZW50cyBhcmUKIGFkZGl0aW9uYWwgaXRlbXMgKG9uZSBwZXIgbGluZSkgdG8gYmUgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm9uLWV4aXN0aW5nIGl0ZW1zCkBAIC0xMjksOCArMTQ1LDE5IEBACiAgICA6ZmlsZTpgfi9MaWJyYXJ5L1B5dGhvbi97WC5ZfWAgZm9yIE1hYyBmcmFtZXdvcmsgYnVpbGRzLCBhbmQKICAgIDpmaWxlOmB7JUFQUERBVEElfVxcUHl0aG9uYCBmb3IgV2luZG93cy4gIFRoaXMgdmFsdWUgaXMgdXNlZCBieSBEaXN0dXRpbHMgdG8KICAgIGNvbXB1dGUgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcyBmb3Igc2NyaXB0cywgZGF0YSBmaWxlcywgUHl0aG9uIG1vZHVsZXMsCi0gICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4gIFNlZQotICAgYWxzbyA6ZW52dmFyOmBQWVRIT05VU0VSQkFTRWAuCisgICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4KKyAgIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTlVTRVJCQVNFYC4KKworCisuLiBmdW5jdGlvbjo6IG1haW4oKQorCisgICBBZGRzIGFsbCB0aGUgc3RhbmRhcmQgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgbW9kdWxlIHNlYXJjaAorICAgcGF0aC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKKyAgIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgOm9wdGlvbjpgLVNgCisgICBmbGFnLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGJlIGNhbGxlZCB1bmNvbmRpdGlvbm5hbGx5LgogCiAKIC4uIGZ1bmN0aW9uOjogYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocz1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IGJmZGM3MjcuLjJjYTcxZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTIwLDE3ICsyMCwyNCBAQAogQWRkaXRpb25hbGx5IHRoZSBTTVRQQ2hhbm5lbCBtYXkgYmUgZXh0ZW5kZWQgdG8gaW1wbGVtZW50IHZlcnkgc3BlY2lmaWMKIGludGVyYWN0aW9uIGJlaGF2aW91ciB3aXRoIFNNVFAgY2xpZW50cy4KIAorVGhlIGNvZGUgc3VwcG9ydHMgOlJGQzpgNTMyMWAsIHBsdXMgdGhlIDpyZmM6YDE4NzBgIFNJWkUgZXh0ZW5zaW9uLgorCisKIFNNVFBTZXJ2ZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAotLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkcikKKy4uIGNsYXNzOjogU01UUFNlcnZlcihsb2NhbGFkZHIsIHJlbW90ZWFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMikKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUFNlcnZlcmAgb2JqZWN0LCB3aGljaCBiaW5kcyB0byBsb2NhbCBhZGRyZXNzCiAgICAqbG9jYWxhZGRyKi4gIEl0IHdpbGwgdHJlYXQgKnJlbW90ZWFkZHIqIGFzIGFuIHVwc3RyZWFtIFNNVFAgcmVsYXllci4gIEl0CiAgICBpbmhlcml0cyBmcm9tIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIGFuZCBzbyB3aWxsIGluc2VydCBpdHNlbGYgaW50bwogICAgOm1vZDpgYXN5bmNvcmVgJ3MgZXZlbnQgbG9vcCBvbiBpbnN0YW50aWF0aW9uLgogCisgICAqZGF0YV9zaXplX2xpbWl0KiBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2lsbCBiZQorICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubworICAgbGltaXQuCisKICAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKIAogICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KQEAgLTE1NiwxMSArMTYzLDE1IEBACiAgICBDb21tYW5kICBBY3Rpb24gdGFrZW4KICAgID09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIEhFTE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCi0gICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBiYXNlIGNvbW1hbmQgbW9kZS4KKyAgIEVITE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBleHRlbmRlZCBjb21tYW5kIG1vZGUuCiAgICBOT09QICAgICBUYWtlcyBubyBhY3Rpb24uCiAgICBRVUlUICAgICBDbG9zZXMgdGhlIGNvbm5lY3Rpb24gY2xlYW5seS4KICAgIE1BSUwgICAgIEFjY2VwdHMgdGhlICJNQUlMIEZST006IiBzeW50YXggYW5kIHN0b3JlcyB0aGUgc3VwcGxpZWQgYWRkcmVzcyBhcwotICAgICAgICAgICAgOmF0dHI6YG1haWxmcm9tYC4KKyAgICAgICAgICAgIDphdHRyOmBtYWlsZnJvbWAuICBJbiBleHRlbmRlZCBjb21tYW5kIG1vZGUsIGFjY2VwdHMgdGhlCisgICAgICAgICAgICA6cmZjOmAxODcwYCBTSVpFIGF0dHJpYnV0ZSBhbmQgcmVzcG9uZHMgYXBwcm9wcmlhdGVseSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgIHZhbHVlIG9mICpkYXRhX3NpemVfbGltaXQqLgogICAgUkNQVCAgICAgQWNjZXB0cyB0aGUgIlJDUFQgVE86IiBzeW50YXggYW5kIHN0b3JlcyB0aGUgc3VwcGxpZWQgYWRkcmVzc2VzIGluCiAgICAgICAgICAgICB0aGUgOmF0dHI6YHJjcHR0b3NgIGxpc3QuCiAgICBSU0VUICAgICBSZXNldHMgdGhlIDphdHRyOmBtYWlsZnJvbWAsIDphdHRyOmByY3B0dG9zYCwgYW5kCkBAIC0xNjgsNCArMTc5LDcgQEAKICAgIERBVEEgICAgIFNldHMgdGhlIGludGVybmFsIHN0YXRlIHRvIDphdHRyOmBEQVRBYCBhbmQgc3RvcmVzIHJlbWFpbmluZyBsaW5lcwogICAgICAgICAgICAgZnJvbSB0aGUgY2xpZW50IGluIDphdHRyOmByZWNlaXZlZF9kYXRhYCB1bnRpbCB0aGUgdGVybWluYXRvcgogICAgICAgICAgICAgYGAiXHJcbi5cclxuImBgIGlzIHJlY2VpdmVkLgorICAgSEVMUCAgICAgUmV0dXJucyBtaW5pbWFsIGluZm9ybWF0aW9uIG9uIGNvbW1hbmQgc3ludGF4CisgICBWUkZZICAgICBSZXR1cm5zIGNvZGUgMjUyICh0aGUgc2VydmVyIGRvZXNuJ3Qga25vdyBpZiB0aGUgYWRkcmVzcyBpcyB2YWxpZCkKKyAgIEVYUE4gICAgIFJlcG9ydHMgdGhhdCB0aGUgY29tbWFuZCBpcyBub3QgaW1wbGVtZW50ZWQuCiAgICA9PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDMxMDFhYjcuLjcxMTk4MWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC0yMCw3ICsyMCw3IEBACiBQcm90b2NvbCkgYW5kIDpyZmM6YDE4NjlgIChTTVRQIFNlcnZpY2UgRXh0ZW5zaW9ucykuCiAKIAotLi4gY2xhc3M6OiBTTVRQKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZVssIHRpbWVvdXRdKQorLi4gY2xhc3M6OiBTTVRQKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZVssIHRpbWVvdXRdLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgU01UUGAgaW5zdGFuY2UgZW5jYXBzdWxhdGVzIGFuIFNNVFAgY29ubmVjdGlvbi4gIEl0IGhhcyBtZXRob2RzCiAgICB0aGF0IHN1cHBvcnQgYSBmdWxsIHJlcGVydG9pcmUgb2YgU01UUCBhbmQgRVNNVFAgb3BlcmF0aW9ucy4gSWYgdGhlIG9wdGlvbmFsCkBAIC0yOSwxMyArMjksMzQgQEAKICAgIHJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGhvc3QgZG9lc24ndCByZXNwb25kIGNvcnJlY3RseS4gVGhlIG9wdGlvbmFsCiAgICAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgYmxvY2tpbmcgb3BlcmF0aW9ucwogICAgbGlrZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IChpZiBub3Qgc3BlY2lmaWVkLCB0aGUgZ2xvYmFsIGRlZmF1bHQgdGltZW91dAotICAgc2V0dGluZyB3aWxsIGJlIHVzZWQpLgorICAgc2V0dGluZyB3aWxsIGJlIHVzZWQpLiBUaGUgb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIGFsbG93cyB0byBiaW5kIHRvIHNvbWUKKyAgIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIGluIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcywKKyAgIGFuZC9vciB0byBzb21lIHNwZWNpZmljIHNvdXJjZSBUQ1AgcG9ydC4gSXQgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSwKKyAgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZgorICAgb21pdHRlZCAob3IgaWYgaG9zdCBvciBwb3J0IGFyZSBgYCcnYGAgYW5kL29yIDAgcmVzcGVjdGl2ZWx5KSB0aGUgT1MgZGVmYXVsdAorICAgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgogCiAgICBGb3Igbm9ybWFsIHVzZSwgeW91IHNob3VsZCBvbmx5IHJlcXVpcmUgdGhlIGluaXRpYWxpemF0aW9uL2Nvbm5lY3QsCiAgICA6bWV0aDpgc2VuZG1haWxgLCBhbmQgOm1ldGg6YHF1aXRgIG1ldGhvZHMuICBBbiBleGFtcGxlIGlzIGluY2x1ZGVkIGJlbG93LgogCisgICBUaGUgOmNsYXNzOmBTTVRQYCBjbGFzcyBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdXNlZAorICAgbGlrZSB0aGlzLCB0aGUgU01UUCBgYFFVSVRgYCBjb21tYW5kIGlzIGlzc3VlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlCisgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGV4aXRzLiAgRS5nLjo6CiAKLS4uIGNsYXNzOjogU01UUF9TU0woaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmVbLCB0aW1lb3V0XSkKKyAgICA+Pj4gZnJvbSBzbXRwbGliIGltcG9ydCBTTVRQCisgICAgPj4+IHdpdGggU01UUCgiZG9tYWluLm9yZyIpIGFzIHNtdHA6CisgICAgLi4uICAgICBzbXRwLm5vb3AoKQorICAgIC4uLgorICAgICgyNTAsIGInT2snKQorICAgID4+PgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgc291cmNlX2FkZHJlc3MgYXJndW1lbnQgd2FzIGFkZGVkLgorCisuLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lWywgdGltZW91dF0sIGNvbnRleHQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgQSA6Y2xhc3M6YFNNVFBfU1NMYCBpbnN0YW5jZSBiZWhhdmVzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaW5zdGFuY2VzIG9mCiAgICA6Y2xhc3M6YFNNVFBgLiA6Y2xhc3M6YFNNVFBfU1NMYCBzaG91bGQgYmUgdXNlZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBTU0wgaXMKQEAgLTQzLDE4ICs2NCwzMyBAQAogICAgbm90IGFwcHJvcHJpYXRlLiBJZiAqaG9zdCogaXMgbm90IHNwZWNpZmllZCwgdGhlIGxvY2FsIGhvc3QgaXMgdXNlZC4gSWYKICAgICpwb3J0KiBpcyB6ZXJvLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuICprZXlmaWxlKgogICAgYW5kICpjZXJ0ZmlsZSogYXJlIGFsc28gb3B0aW9uYWwsIGFuZCBjYW4gY29udGFpbiBhIFBFTSBmb3JtYXR0ZWQgcHJpdmF0ZSBrZXkKLSAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uIFRoZSBvcHRpb25hbCAqdGltZW91dCoKKyAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uICpjb250ZXh0KiBhbHNvIG9wdGlvbmFsLCBjYW4gY29udGFpbgorICAgYSBTU0xDb250ZXh0LCBhbmQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8ga2V5ZmlsZSBhbmQgY2VydGZpbGU7IElmIGl0IGlzIHNwZWNpZmllZCBib3RoCisgICBrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBtdXN0IGJlIE5vbmUuICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqCiAgICBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvciBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0IHNldHRpbmcKLSAgIHdpbGwgYmUgdXNlZCkuCisgICB3aWxsIGJlIHVzZWQpLiBUaGUgb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIGFsbG93cyB0byBiaW5kIHRvIHNvbWUKKyAgIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIGluIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcywKKyAgIGFuZC9vciB0byBzb21lIHNwZWNpZmljIHNvdXJjZSB0Y3AgcG9ydC4gSXQgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSwKKyAgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZgorICAgb21pdHRlZCAob3IgaWYgaG9zdCBvciBwb3J0IGFyZSBgYCcnYGAgYW5kL29yIDAgcmVzcGVjdGl2ZWx5KSB0aGUgT1MgZGVmYXVsdAorICAgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogCi0uLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUpCisuLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIFRoZSBMTVRQIHByb3RvY29sLCB3aGljaCBpcyB2ZXJ5IHNpbWlsYXIgdG8gRVNNVFAsIGlzIGhlYXZpbHkgYmFzZWQgb24gdGhlCi0gICBzdGFuZGFyZCBTTVRQIGNsaWVudC4gSXQncyBjb21tb24gdG8gdXNlIFVuaXggc29ja2V0cyBmb3IgTE1UUCwgc28gb3VyIDptZXRoOmBjb25uZWN0YAotICAgbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydCBzZXJ2ZXIuIFRvIHNwZWNpZnkgYQotICAgVW5peCBzb2NrZXQsIHlvdSBtdXN0IHVzZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciAqaG9zdCosIHN0YXJ0aW5nIHdpdGggYSAnLycuCisgICBzdGFuZGFyZCBTTVRQIGNsaWVudC4gSXQncyBjb21tb24gdG8gdXNlIFVuaXggc29ja2V0cyBmb3IgTE1UUCwgc28gb3VyCisgICA6bWV0aDpgY29ubmVjdGAgbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydAorICAgc2VydmVyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGxvY2FsX2hvc3RuYW1lIGFuZCBzb3VyY2VfYWRkcmVzcyBoYXZlIHRoZQorICAgc2FtZSBtZWFuaW5nIGFzIHRoYXQgb2YgU01UUCBjbGllbnQuIFRvIHNwZWNpZnkgYSBVbml4IHNvY2tldCwgeW91IG11c3QgdXNlCisgICBhbiBhYnNvbHV0ZSBwYXRoIGZvciAqaG9zdCosIHN0YXJ0aW5nIHdpdGggYSAnLycuCiAKICAgIEF1dGhlbnRpY2F0aW9uIGlzIHN1cHBvcnRlZCwgdXNpbmcgdGhlIHJlZ3VsYXIgU01UUCBtZWNoYW5pc20uIFdoZW4gdXNpbmcgYSBVbml4CiAgICBzb2NrZXQsIExNVFAgZ2VuZXJhbGx5IGRvbid0IHN1cHBvcnQgb3IgcmVxdWlyZSBhbnkgYXV0aGVudGljYXRpb24sIGJ1dCB5b3VyCkBAIC0yNDIsNyArMjc4LDcgQEAKICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgZm91bmQuCiAKIAotLi4gbWV0aG9kOjogU01UUC5zdGFydHRscyhrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUpCisuLiBtZXRob2Q6OiBTTVRQLnN0YXJ0dGxzKGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKQogCiAgICBQdXQgdGhlIFNNVFAgY29ubmVjdGlvbiBpbiBUTFMgKFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSkgbW9kZS4gIEFsbCBTTVRQCiAgICBjb21tYW5kcyB0aGF0IGZvbGxvdyB3aWxsIGJlIGVuY3J5cHRlZC4gIFlvdSBzaG91bGQgdGhlbiBjYWxsIDptZXRoOmBlaGxvYApAQCAtMjUxLDYgKzI4Nyw5IEBACiAgICBJZiAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIHByb3ZpZGVkLCB0aGVzZSBhcmUgcGFzc2VkIHRvIHRoZSA6bW9kOmBzb2NrZXRgCiAgICBtb2R1bGUncyA6ZnVuYzpgc3NsYCBmdW5jdGlvbi4KIAorICAgT3B0aW9uYWwgKmNvbnRleHQqIHBhcmFtZXRlciBpcyBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdDsgVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSB0bworICAgdXNpbmcgYSBrZXlmaWxlIGFuZCBhIGNlcnRmaWxlIGFuZCBpZiBzcGVjaWZpZWQgYm90aCAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogc2hvdWxkIGJlIE5vbmUuCisKICAgIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIGBgRUhMT2BgIG9yIGBgSEVMT2BgIGNvbW1hbmQgdGhpcyBzZXNzaW9uLAogICAgdGhpcyBtZXRob2QgdHJpZXMgRVNNVFAgYGBFSExPYGAgZmlyc3QuCiAKQEAgLTI2Myw2ICszMDIsOSBAQAogICAgOmV4YzpgUnVudGltZUVycm9yYAogICAgICBTU0wvVExTIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZSB0byB5b3VyIFB5dGhvbiBpbnRlcnByZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBtc2csIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQogCkBAIC0zMjAsNyArMzYyLDggQEAKICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiAqbXNnKiBtYXkgYmUgYSBieXRlIHN0cmluZy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAqbXNnKiBtYXkgYmUgYSBieXRlIHN0cmluZy4KIAogCiAuLiBtZXRob2Q6OiBTTVRQLnNlbmRfbWVzc2FnZShtc2csIGZyb21fYWRkcj1Ob25lLCB0b19hZGRycz1Ob25lLCBcCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAppbmRleCAzNDRhMjlmLi41NzM3YjQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKQEAgLTQwLDkgKzQwLDIzIEBACiBEZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQgdGhlIGJ1aWxkIG9wdGlvbnMsIHZhcmlvdXMgc29ja2V0IGZhbWlsaWVzCiBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi1Tb2NrZXQgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOgorVGhlIGFkZHJlc3MgZm9ybWF0IHJlcXVpcmVkIGJ5IGEgcGFydGljdWxhciBzb2NrZXQgb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkKK3NlbGVjdGVkIGJhc2VkIG9uIHRoZSBhZGRyZXNzIGZhbWlseSBzcGVjaWZpZWQgd2hlbiB0aGUgc29ja2V0IG9iamVjdCB3YXMKK2NyZWF0ZWQuICBTb2NrZXQgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOgogCi0tIEEgc2luZ2xlIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgOmNvbnN0OmBBRl9VTklYYCBhZGRyZXNzIGZhbWlseS4KKy0gVGhlIGFkZHJlc3Mgb2YgYW4gOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgYm91bmQgdG8gYSBmaWxlIHN5c3RlbSBub2RlCisgIGlzIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nLCB1c2luZyB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgYW5kIHRoZQorICBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciAoc2VlIDpwZXA6YDM4M2ApLiAgQW4gYWRkcmVzcyBpbgorICBMaW51eCdzIGFic3RyYWN0IG5hbWVzcGFjZSBpcyByZXR1cm5lZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB3aXRoCisgIGFuIGluaXRpYWwgbnVsbCBieXRlOyBub3RlIHRoYXQgc29ja2V0cyBpbiB0aGlzIG5hbWVzcGFjZSBjYW4KKyAgY29tbXVuaWNhdGUgd2l0aCBub3JtYWwgZmlsZSBzeXN0ZW0gc29ja2V0cywgc28gcHJvZ3JhbXMgaW50ZW5kZWQgdG8KKyAgcnVuIG9uIExpbnV4IG1heSBuZWVkIHRvIGRlYWwgd2l0aCBib3RoIHR5cGVzIG9mIGFkZHJlc3MuICBBIHN0cmluZyBvcgorICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciB0eXBlIG9mIGFkZHJlc3Mgd2hlbgorICBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUHJldmlvdXNseSwgOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgcGF0aHMgd2VyZSBhc3N1bWVkIHRvIHVzZSBVVEYtOAorICAgICAgZW5jb2RpbmcuCiAKIC0gQSBwYWlyIGBgKGhvc3QsIHBvcnQpYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgQUZfSU5FVGAgYWRkcmVzcyBmYW1pbHksCiAgIHdoZXJlICpob3N0KiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgZWl0aGVyIGEgaG9zdG5hbWUgaW4gSW50ZXJuZXQgZG9tYWluCkBAIC04MCw2ICs5NCwxOSBAQAogICAgIElmICphZGRyX3R5cGUqIGlzIDpjb25zdDpgVElQQ19BRERSX0lEYCwgdGhlbiAqdjEqIGlzIHRoZSBub2RlLCAqdjIqIGlzIHRoZQogICAgIHJlZmVyZW5jZSwgYW5kICp2Myogc2hvdWxkIGJlIHNldCB0byAwLgogCistIEEgdHVwbGUgYGAoaW50ZXJmYWNlLCApYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgQUZfQ0FOYCBhZGRyZXNzIGZhbWlseSwKKyAgd2hlcmUgKmludGVyZmFjZSogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgbmV0d29yayBpbnRlcmZhY2UgbmFtZSBsaWtlCisgIGBgJ2NhbjAnYGAuIFRoZSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGBgJydgYCBjYW4gYmUgdXNlZCB0byByZWNlaXZlIHBhY2tldHMKKyAgZnJvbSBhbGwgbmV0d29yayBpbnRlcmZhY2VzIG9mIHRoaXMgZmFtaWx5LgorCistIEEgc3RyaW5nIG9yIGEgdHVwbGUgYGAoaWQsIHVuaXQpYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgU1lTUFJPVE9fQ09OVFJPTGAKKyAgcHJvdG9jb2wgb2YgdGhlIDpjb25zdDpgUEZfU1lTVEVNYCBmYW1pbHkuIFRoZSBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgYQorICBrZXJuZWwgY29udHJvbCB1c2luZyBhIGR5bmFtaWNhbGx5LWFzc2lnbmVkIElELiBUaGUgdHVwbGUgY2FuIGJlIHVzZWQgaWYgSUQKKyAgYW5kIHVuaXQgbnVtYmVyIG9mIHRoZSBrZXJuZWwgY29udHJvbCBhcmUga25vd24gb3IgaWYgYSByZWdpc3RlcmVkIElEIGlzCisgIHVzZWQuCisKKyAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC0gQ2VydGFpbiBvdGhlciBhZGRyZXNzIGZhbWlsaWVzICg6Y29uc3Q6YEFGX0JMVUVUT09USGAsIDpjb25zdDpgQUZfUEFDS0VUYCkKICAgc3VwcG9ydCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuCiAKQEAgLTk5LDggKzEyNiw5IEBACiBudW1lcmljIGFkZHJlc3MgaW4gKmhvc3QqIHBvcnRpb24uCiAKIEFsbCBlcnJvcnMgcmFpc2UgZXhjZXB0aW9ucy4gIFRoZSBub3JtYWwgZXhjZXB0aW9ucyBmb3IgaW52YWxpZCBhcmd1bWVudCB0eXBlcwotYW5kIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucyBjYW4gYmUgcmFpc2VkOyBlcnJvcnMgcmVsYXRlZCB0byBzb2NrZXQgb3IgYWRkcmVzcwotc2VtYW50aWNzIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmAgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorYW5kIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucyBjYW4gYmUgcmFpc2VkOyBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjMsIGVycm9ycworcmVsYXRlZCB0byBzb2NrZXQgb3IgYWRkcmVzcyBzZW1hbnRpY3MgcmFpc2UgOmV4YzpgT1NFcnJvcmAgb3Igb25lIG9mIGl0cworc3ViY2xhc3NlcyAodGhleSB1c2VkIHRvIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmApLgogCiBOb24tYmxvY2tpbmcgbW9kZSBpcyBzdXBwb3J0ZWQgdGhyb3VnaCA6bWV0aDpgfnNvY2tldC5zZXRibG9ja2luZ2AuICBBCiBnZW5lcmFsaXphdGlvbiBvZiB0aGlzIGJhc2VkIG9uIHRpbWVvdXRzIGlzIHN1cHBvcnRlZCB0aHJvdWdoCkBAIC0xMTUsMjAgKzE0MywxNSBAQAogCiAuLiBleGNlcHRpb246OiBlcnJvcgogCi0gICAuLiBpbmRleDo6IG1vZHVsZTogZXJybm8KKyAgIEEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBJT0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvciBzb2NrZXQtcmVsYXRlZAotICAgZXJyb3JzLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgaW5zcGVjdCBpdHMgYGBlcnJub2BgIGF0dHJpYnV0ZSB0bwotICAgZGlzY3JpbWluYXRlIGJldHdlZW4gZGlmZmVyZW50IGtpbmRzIG9mIGVycm9ycy4KLQotICAgLi4gc2VlYWxzbzo6Ci0gICAgICBUaGUgOm1vZDpgZXJybm9gIG1vZHVsZSBjb250YWlucyBzeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGVycm9yIGNvZGVzCi0gICAgICBkZWZpbmVkIGJ5IHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRm9sbG93aW5nIDpwZXA6YDMxNTFgLCB0aGlzIGNsYXNzIHdhcyBtYWRlIGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IGhlcnJvcgogCi0gICBBIHN1YmNsYXNzIG9mIDpleGM6YHNvY2tldC5lcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKICAgIGFkZHJlc3MtcmVsYXRlZCBlcnJvcnMsIGkuZS4gZm9yIGZ1bmN0aW9ucyB0aGF0IHVzZSAqaF9lcnJubyogaW4gdGhlIFBPU0lYCiAgICBDIEFQSSwgaW5jbHVkaW5nIDpmdW5jOmBnZXRob3N0YnluYW1lX2V4YCBhbmQgOmZ1bmM6YGdldGhvc3RieWFkZHJgLgogICAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIgYGAoaF9lcnJubywgc3RyaW5nKWBgIHJlcHJlc2VudGluZyBhbgpAQCAtMTM2LDEwICsxNTksMTIgQEAKICAgICpzdHJpbmcqIHJlcHJlc2VudHMgdGhlIGRlc2NyaXB0aW9uIG9mICpoX2Vycm5vKiwgYXMgcmV0dXJuZWQgYnkgdGhlCiAgICA6YzpmdW5jOmBoc3RyZXJyb3JgIEMgZnVuY3Rpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGNsYXNzIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IGdhaWVycm9yCiAKLSAgIEEgc3ViY2xhc3Mgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgorICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgogICAgYWRkcmVzcy1yZWxhdGVkIGVycm9ycyBieSA6ZnVuYzpgZ2V0YWRkcmluZm9gIGFuZCA6ZnVuYzpgZ2V0bmFtZWluZm9gLgogICAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIgYGAoZXJyb3IsIHN0cmluZylgYCByZXByZXNlbnRpbmcgYW4gZXJyb3IKICAgIHJldHVybmVkIGJ5IGEgbGlicmFyeSBjYWxsLiAgKnN0cmluZyogcmVwcmVzZW50cyB0aGUgZGVzY3JpcHRpb24gb2YKQEAgLTE0NywxNSArMTcyLDE5IEBACiAgICBudW1lcmljICplcnJvciogdmFsdWUgd2lsbCBtYXRjaCBvbmUgb2YgdGhlIDpjb25zdDpgRUFJX1wqYCBjb25zdGFudHMKICAgIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGNsYXNzIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IHRpbWVvdXQKIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHRpbWVvdXQKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgdGltZW91dAogICAgb2NjdXJzIG9uIGEgc29ja2V0IHdoaWNoIGhhcyBoYWQgdGltZW91dHMgZW5hYmxlZCB2aWEgYSBwcmlvciBjYWxsIHRvCiAgICA6bWV0aDpgfnNvY2tldC5zZXR0aW1lb3V0YCAob3IgaW1wbGljaXRseSB0aHJvdWdoCiAgICA6ZnVuYzpgfnNvY2tldC5zZXRkZWZhdWx0dGltZW91dGApLiAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHN0cmluZwogICAgd2hvc2UgdmFsdWUgaXMgY3VycmVudGx5IGFsd2F5cyAidGltZWQgb3V0Ii4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgY2xhc3Mgd2FzIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogLi4gZGF0YTo6IEFGX1VOSVgKICAgICAgICAgICBBRl9JTkVUCkBAIC0xOTgsNiArMjI3LDcgQEAKICAgICAgICAgICBTT01BWENPTk4KICAgICAgICAgICBNU0dfKgogICAgICAgICAgIFNPTF8qCisgICAgICAgICAgU0NNXyoKICAgICAgICAgICBJUFBST1RPXyoKICAgICAgICAgICBJUFBPUlRfKgogICAgICAgICAgIElOQUREUl8qCkBAIC0yMTUsNiArMjQ1LDMyIEBACiAgICBpbiB0aGUgVW5peCBoZWFkZXIgZmlsZXMgYXJlIGRlZmluZWQ7IGZvciBhIGZldyBzeW1ib2xzLCBkZWZhdWx0IHZhbHVlcyBhcmUKICAgIHByb3ZpZGVkLgogCisuLiBkYXRhOjogQUZfQ0FOCisgICAgICAgICAgUEZfQ0FOCisgICAgICAgICAgU09MX0NBTl8qCisgICAgICAgICAgQ0FOXyoKKworICAgTWFueSBjb25zdGFudHMgb2YgdGhlc2UgZm9ybXMsIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24sIGFyZQorICAgYWxzbyBkZWZpbmVkIGluIHRoZSBzb2NrZXQgbW9kdWxlLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4yNS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IEFGX1JEUworICAgICAgICAgIFBGX1JEUworICAgICAgICAgIFNPTF9SRFMKKyAgICAgICAgICBSRFNfKgorCisgICBNYW55IGNvbnN0YW50cyBvZiB0aGVzZSBmb3JtcywgZG9jdW1lbnRlZCBpbiB0aGUgTGludXggZG9jdW1lbnRhdGlvbiwgYXJlCisgICBhbHNvIGRlZmluZWQgaW4gdGhlIHNvY2tldCBtb2R1bGUuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjMwLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogU0lPXyoKICAgICAgICAgICBSQ1ZBTExfKgogCkBAIC0zOTMsMTAgKzQ0OSwxNSBAQAogCiAgICBDcmVhdGUgYSBuZXcgc29ja2V0IHVzaW5nIHRoZSBnaXZlbiBhZGRyZXNzIGZhbWlseSwgc29ja2V0IHR5cGUgYW5kIHByb3RvY29sCiAgICBudW1iZXIuICBUaGUgYWRkcmVzcyBmYW1pbHkgc2hvdWxkIGJlIDpjb25zdDpgQUZfSU5FVGAgKHRoZSBkZWZhdWx0KSwKLSAgIDpjb25zdDpgQUZfSU5FVDZgIG9yIDpjb25zdDpgQUZfVU5JWGAuICBUaGUgc29ja2V0IHR5cGUgc2hvdWxkIGJlCi0gICA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCAodGhlIGRlZmF1bHQpLCA6Y29uc3Q6YFNPQ0tfREdSQU1gIG9yIHBlcmhhcHMgb25lIG9mIHRoZQotICAgb3RoZXIgYGBTT0NLX2BgIGNvbnN0YW50cy4gIFRoZSBwcm90b2NvbCBudW1iZXIgaXMgdXN1YWxseSB6ZXJvIGFuZCBtYXkgYmUKLSAgIG9taXR0ZWQgaW4gdGhhdCBjYXNlLgorICAgOmNvbnN0OmBBRl9JTkVUNmAsIDpjb25zdDpgQUZfVU5JWGAsIDpjb25zdDpgQUZfQ0FOYCBvciA6Y29uc3Q6YEFGX1JEU2AuIFRoZQorICAgc29ja2V0IHR5cGUgc2hvdWxkIGJlIDpjb25zdDpgU09DS19TVFJFQU1gICh0aGUgZGVmYXVsdCksCisgICA6Y29uc3Q6YFNPQ0tfREdSQU1gLCA6Y29uc3Q6YFNPQ0tfUkFXYCBvciBwZXJoYXBzIG9uZSBvZiB0aGUgb3RoZXIgYGBTT0NLX2BgCisgICBjb25zdGFudHMuIFRoZSBwcm90b2NvbCBudW1iZXIgaXMgdXN1YWxseSB6ZXJvIGFuZCBtYXkgYmUgb21pdHRlZCBpbiB0aGF0CisgICBjYXNlIG9yIDpjb25zdDpgQ0FOX1JBV2AgaW4gY2FzZSB0aGUgYWRkcmVzcyBmYW1pbHkgaXMgOmNvbnN0OmBBRl9DQU5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIEFGX0NBTiBmYW1pbHkgd2FzIGFkZGVkLgorICAgICAgVGhlIEFGX1JEUyBmYW1pbHkgd2FzIGFkZGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogc29ja2V0cGFpcihbZmFtaWx5WywgdHlwZVssIHByb3RvXV1dKQpAQCAtNDY0LDcgKzUyNSw3IEBACiAgICBVbml4IG1hbnVhbCBwYWdlIDptYW5wYWdlOmBpbmV0KDMpYCBmb3IgZGV0YWlscy4KIAogICAgSWYgdGhlIElQdjQgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgaW52YWxpZCwKLSAgIDpleGM6YHNvY2tldC5lcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgorICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgogICAgdGhlIHVuZGVybHlpbmcgQyBpbXBsZW1lbnRhdGlvbiBvZiA6YzpmdW5jOmBpbmV0X2F0b25gLgogCiAgICA6ZnVuYzpgaW5ldF9hdG9uYCBkb2VzIG5vdCBzdXBwb3J0IElQdjYsIGFuZCA6ZnVuYzpgaW5ldF9wdG9uYCBzaG91bGQgYmUgdXNlZApAQCAtNDgxLDcgKzU0Miw3IEBACiAgICBhcmd1bWVudC4KIAogICAgSWYgdGhlIGJ5dGUgc2VxdWVuY2UgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgbm90IGV4YWN0bHkgNCBieXRlcyBpbgotICAgbGVuZ3RoLCA6ZXhjOmBzb2NrZXQuZXJyb3JgIHdpbGwgYmUgcmFpc2VkLiA6ZnVuYzpgaW5ldF9udG9hYCBkb2VzIG5vdAorICAgbGVuZ3RoLCA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gOmZ1bmM6YGluZXRfbnRvYWAgZG9lcyBub3QKICAgIHN1cHBvcnQgSVB2NiwgYW5kIDpmdW5jOmBpbmV0X250b3BgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgZm9yIElQdjQvdjYgZHVhbAogICAgc3RhY2sgc3VwcG9ydC4KIApAQCAtNDk1LDcgKzU1Niw3IEBACiAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAogICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBJUCBhZGRyZXNzIHN0cmluZyAqaXBfc3RyaW5nKiBpcyBpbnZhbGlkLAotICAgOmV4Yzpgc29ja2V0LmVycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCiAgICBib3RoIHRoZSB2YWx1ZSBvZiAqYWRkcmVzc19mYW1pbHkqIGFuZCB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBvZgogICAgOmM6ZnVuYzpgaW5ldF9wdG9uYC4KIApAQCAtNTEzLDExICs1NzQsNTQgQEAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAogICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBzdHJpbmcgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCBmb3IgdGhlCiAgICBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgQQotICAgOmV4Yzpgc29ja2V0LmVycm9yYCBpcyByYWlzZWQgZm9yIGVycm9ycyBmcm9tIHRoZSBjYWxsIHRvIDpmdW5jOmBpbmV0X250b3BgLgorICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4IChtYXliZSBub3QgYWxsIHBsYXRmb3JtcykuCiAKIAorLi4KKyAgIFhYWDogQXJlIHNlbmRtc2coKSwgcmVjdm1zZygpIGFuZCBDTVNHXyooKSBhdmFpbGFibGUgb24gYW55CisgICBub24tVW5peCBwbGF0Zm9ybXM/ICBUaGUgb2xkIChvYnNvbGV0ZT8pIDQuMkJTRCBmb3JtIG9mIHRoZQorICAgaW50ZXJmYWNlLCBpbiB3aGljaCBzdHJ1Y3QgbXNnaGRyIGhhcyBubyBtc2dfY29udHJvbCBvcgorICAgbXNnX2NvbnRyb2xsZW4gbWVtYmVycywgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisKKy4uIGZ1bmN0aW9uOjogQ01TR19MRU4obGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIHRvdGFsIGxlbmd0aCwgd2l0aG91dCB0cmFpbGluZyBwYWRkaW5nLCBvZiBhbiBhbmNpbGxhcnkKKyAgIGRhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4gKmxlbmd0aCouICBUaGlzIHZhbHVlCisgICBjYW4gb2Z0ZW4gYmUgdXNlZCBhcyB0aGUgYnVmZmVyIHNpemUgZm9yIDptZXRoOmB+c29ja2V0LnJlY3Ztc2dgIHRvCisgICByZWNlaXZlIGEgc2luZ2xlIGl0ZW0gb2YgYW5jaWxsYXJ5IGRhdGEsIGJ1dCA6cmZjOmAzNTQyYCByZXF1aXJlcworICAgcG9ydGFibGUgYXBwbGljYXRpb25zIHRvIHVzZSA6ZnVuYzpgQ01TR19TUEFDRWAgYW5kIHRodXMgaW5jbHVkZQorICAgc3BhY2UgZm9yIHBhZGRpbmcsIGV2ZW4gd2hlbiB0aGUgaXRlbSB3aWxsIGJlIHRoZSBsYXN0IGluIHRoZQorICAgYnVmZmVyLiAgUmFpc2VzIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmICpsZW5ndGgqIGlzIG91dHNpZGUgdGhlCisgICBwZXJtaXNzaWJsZSByYW5nZSBvZiB2YWx1ZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IENNU0dfU1BBQ0UobGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIGJ1ZmZlciBzaXplIG5lZWRlZCBmb3IgOm1ldGg6YH5zb2NrZXQucmVjdm1zZ2AgdG8KKyAgIHJlY2VpdmUgYW4gYW5jaWxsYXJ5IGRhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4KKyAgICpsZW5ndGgqLCBhbG9uZyB3aXRoIGFueSB0cmFpbGluZyBwYWRkaW5nLiAgVGhlIGJ1ZmZlciBzcGFjZSBuZWVkZWQKKyAgIHRvIHJlY2VpdmUgbXVsdGlwbGUgaXRlbXMgaXMgdGhlIHN1bSBvZiB0aGUgOmZ1bmM6YENNU0dfU1BBQ0VgCisgICB2YWx1ZXMgZm9yIHRoZWlyIGFzc29jaWF0ZWQgZGF0YSBsZW5ndGhzLiAgUmFpc2VzCisgICA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpZiAqbGVuZ3RoKiBpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSByYW5nZQorICAgb2YgdmFsdWVzLgorCisgICBOb3RlIHRoYXQgc29tZSBzeXN0ZW1zIG1pZ2h0IHN1cHBvcnQgYW5jaWxsYXJ5IGRhdGEgd2l0aG91dAorICAgcHJvdmlkaW5nIHRoaXMgZnVuY3Rpb24uICBBbHNvIG5vdGUgdGhhdCBzZXR0aW5nIHRoZSBidWZmZXIgc2l6ZQorICAgdXNpbmcgdGhlIHJlc3VsdHMgb2YgdGhpcyBmdW5jdGlvbiBtYXkgbm90IHByZWNpc2VseSBsaW1pdCB0aGUKKyAgIGFtb3VudCBvZiBhbmNpbGxhcnkgZGF0YSB0aGF0IGNhbiBiZSByZWNlaXZlZCwgc2luY2UgYWRkaXRpb25hbAorICAgZGF0YSBtYXkgYmUgYWJsZSB0byBmaXQgaW50byB0aGUgcGFkZGluZyBhcmVhLgorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnZXRkZWZhdWx0dGltZW91dCgpCiAKICAgIFJldHVybiB0aGUgZGVmYXVsdCB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0KSBmb3IgbmV3IHNvY2tldCBvYmplY3RzLiBBIHZhbHVlCkBAIC01MzMsNiArNjM3LDU5IEBACiAgICBtZWFuaW5ncy4KIAogCisuLiBmdW5jdGlvbjo6IHNldGhvc3RuYW1lKG5hbWUpCisKKyAgIFNldCB0aGUgbWFjaGluZSdzIGhvc3RuYW1lIHRvICpuYW1lKi4gIFRoaXMgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBPU0Vycm9yYCBpZiB5b3UgZG9uJ3QgaGF2ZSBlbm91Z2ggcmlnaHRzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogaWZfbmFtZWluZGV4KCkKKworICAgUmV0dXJuIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmZvcm1hdGlvbgorICAgKGluZGV4IGludCwgbmFtZSBzdHJpbmcpIHR1cGxlcy4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBzeXN0ZW0gY2FsbCBmYWlscy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGlmX25hbWV0b2luZGV4KGlmX25hbWUpCisKKyAgIFJldHVybiBhIG5ldHdvcmsgaW50ZXJmYWNlIGluZGV4IG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGFuCisgICBpbnRlcmZhY2UgbmFtZS4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIG5vIGludGVyZmFjZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGlmX2luZGV4dG9uYW1lKGlmX2luZGV4KQorCisgICBSZXR1cm4gYSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gYQorICAgaW50ZXJmYWNlIGluZGV4IG51bWJlci4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIG5vIGludGVyZmFjZSB3aXRoIHRoZSBnaXZlbiBpbmRleCBleGlzdHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBmcm9tc2hhcmUoZGF0YSkKKworICAgSW5zdGFudGlhdGUgYSBzb2NrZXQgZnJvbSBkYXRhIG9idGFpbmVkIGZyb20gOm1ldGg6YH5zb2NrZXQuc2hhcmVgLgorICAgVGhlIHNvY2tldCBpcyBhc3N1bWVkIHRvIGJlIGluIGJsb2NraW5nIG1vZGUuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZGF0YTo6IFNvY2tldFR5cGUKIAogICAgVGhpcyBpcyBhIFB5dGhvbiB0eXBlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHNvY2tldCBvYmplY3QgdHlwZS4gSXQgaXMgdGhlCkBAIC03MDYsNiArODYzLDEwOSBAQAogICAgdG8gemVyby4gKFRoZSBmb3JtYXQgb2YgKmFkZHJlc3MqIGRlcGVuZHMgb24gdGhlIGFkZHJlc3MgZmFtaWx5IC0tLSBzZWUgYWJvdmUuKQogCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkKKworICAgUmVjZWl2ZSBub3JtYWwgZGF0YSAodXAgdG8gKmJ1ZnNpemUqIGJ5dGVzKSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbQorICAgdGhlIHNvY2tldC4gIFRoZSAqYW5jYnVmc2l6ZSogYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZgorICAgdGhlIGludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cworICAgdG8gMCwgbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZQorICAgYnVmZmVyIHNpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZworICAgOmZ1bmM6YENNU0dfU1BBQ0VgIG9yIDpmdW5jOmBDTVNHX0xFTmAsIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0CisgICBpbnRvIHRoZSBidWZmZXIgbWlnaHQgYmUgdHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSAqZmxhZ3MqCisgICBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKKyAgIDptZXRoOmByZWN2YC4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IGBgKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywKKyAgIGFkZHJlc3MpYGAuICBUaGUgKmRhdGEqIGl0ZW0gaXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaG9sZGluZyB0aGUKKyAgIG5vbi1hbmNpbGxhcnkgZGF0YSByZWNlaXZlZC4gIFRoZSAqYW5jZGF0YSogaXRlbSBpcyBhIGxpc3Qgb2YgemVybworICAgb3IgbW9yZSB0dXBsZXMgYGAoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpYGAgcmVwcmVzZW50aW5nCisgICB0aGUgYW5jaWxsYXJ5IGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiAqY21zZ19sZXZlbCogYW5kCisgICAqY21zZ190eXBlKiBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kCisgICBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kICpjbXNnX2RhdGEqIGlzIGEKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUgKm1zZ19mbGFncyoKKyAgIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFncyBpbmRpY2F0aW5nIGNvbmRpdGlvbnMgb24KKyAgIHRoZSByZWNlaXZlZCBtZXNzYWdlOyBzZWUgeW91ciBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgIElmIHRoZSByZWNlaXZpbmcgc29ja2V0IGlzIHVuY29ubmVjdGVkLCAqYWRkcmVzcyogaXMgdGhlIGFkZHJlc3Mgb2YKKyAgIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcworICAgdW5zcGVjaWZpZWQuCisKKyAgIE9uIHNvbWUgc3lzdGVtcywgOm1ldGg6YHNlbmRtc2dgIGFuZCA6bWV0aDpgcmVjdm1zZ2AgY2FuIGJlIHVzZWQgdG8KKyAgIHBhc3MgZmlsZSBkZXNjcmlwdG9ycyBiZXR3ZWVuIHByb2Nlc3NlcyBvdmVyIGFuIDpjb25zdDpgQUZfVU5JWGAKKyAgIHNvY2tldC4gIFdoZW4gdGhpcyBmYWNpbGl0eSBpcyB1c2VkIChpdCBpcyBvZnRlbiByZXN0cmljdGVkIHRvCisgICA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCBzb2NrZXRzKSwgOm1ldGg6YHJlY3Ztc2dgIHdpbGwgcmV0dXJuLCBpbiBpdHMKKyAgIGFuY2lsbGFyeSBkYXRhLCBpdGVtcyBvZiB0aGUgZm9ybSBgYChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgIHNvY2tldC5TQ01fUklHSFRTLCBmZHMpYGAsIHdoZXJlICpmZHMqIGlzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0CisgICByZXByZXNlbnRpbmcgdGhlIG5ldyBmaWxlIGRlc2NyaXB0b3JzIGFzIGEgYmluYXJ5IGFycmF5IG9mIHRoZQorICAgbmF0aXZlIEMgOmM6dHlwZTpgaW50YCB0eXBlLiAgSWYgOm1ldGg6YHJlY3Ztc2dgIHJhaXNlcyBhbgorICAgZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLCBpdCB3aWxsIGZpcnN0IGF0dGVtcHQgdG8KKyAgIGNsb3NlIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYSB0aGlzIG1lY2hhbmlzbS4KKworICAgU29tZSBzeXN0ZW1zIGRvIG5vdCBpbmRpY2F0ZSB0aGUgdHJ1bmNhdGVkIGxlbmd0aCBvZiBhbmNpbGxhcnkgZGF0YQorICAgaXRlbXMgd2hpY2ggaGF2ZSBiZWVuIG9ubHkgcGFydGlhbGx5IHJlY2VpdmVkLiAgSWYgYW4gaXRlbSBhcHBlYXJzCisgICB0byBleHRlbmQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgOm1ldGg6YHJlY3Ztc2dgIHdpbGwgaXNzdWUKKyAgIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgLCBhbmQgd2lsbCByZXR1cm4gdGhlIHBhcnQgb2YgaXQgd2hpY2ggaXMKKyAgIGluc2lkZSB0aGUgYnVmZmVyIHByb3ZpZGVkIGl0IGhhcyBub3QgYmVlbiB0cnVuY2F0ZWQgYmVmb3JlIHRoZQorICAgc3RhcnQgb2YgaXRzIGFzc29jaWF0ZWQgZGF0YS4KKworICAgT24gc3lzdGVtcyB3aGljaCBzdXBwb3J0IHRoZSA6Y29uc3Q6YFNDTV9SSUdIVFNgIG1lY2hhbmlzbSwgdGhlCisgICBmb2xsb3dpbmcgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHVwIHRvICptYXhmZHMqIGZpbGUgZGVzY3JpcHRvcnMsCisgICByZXR1cm5pbmcgdGhlIG1lc3NhZ2UgZGF0YSBhbmQgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGRlc2NyaXB0b3JzCisgICAod2hpbGUgaWdub3JpbmcgdW5leHBlY3RlZCBjb25kaXRpb25zIHN1Y2ggYXMgdW5yZWxhdGVkIGNvbnRyb2wKKyAgIG1lc3NhZ2VzIGJlaW5nIHJlY2VpdmVkKS4gIFNlZSBhbHNvIDptZXRoOmBzZW5kbXNnYC4gOjoKKworICAgICAgaW1wb3J0IHNvY2tldCwgYXJyYXkKKworICAgICAgZGVmIHJlY3ZfZmRzKHNvY2ssIG1zZ2xlbiwgbWF4ZmRzKToKKyAgICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpICAgIyBBcnJheSBvZiBpbnRzCisgICAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNvY2sucmVjdm1zZyhtc2dsZW4sIHNvY2tldC5DTVNHX0xFTihtYXhmZHMgKiBmZHMuaXRlbXNpemUpKQorICAgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgICBpZiAoY21zZ19sZXZlbCA9PSBzb2NrZXQuU09MX1NPQ0tFVCBhbmQgY21zZ190eXBlID09IHNvY2tldC5TQ01fUklHSFRTKToKKyAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGRhdGEsIGlnbm9yaW5nIGFueSB0cnVuY2F0ZWQgaW50ZWdlcnMgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgIGZkcy5mcm9tc3RyaW5nKGNtc2dfZGF0YVs6bGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgICByZXR1cm4gbXNnLCBsaXN0KGZkcykKKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IFVuaXggcGxhdGZvcm1zLCBwb3NzaWJseSBvdGhlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQorCisgICBSZWNlaXZlIG5vcm1hbCBkYXRhIGFuZCBhbmNpbGxhcnkgZGF0YSBmcm9tIHRoZSBzb2NrZXQsIGJlaGF2aW5nIGFzCisgICA6bWV0aDpgcmVjdm1zZ2Agd291bGQsIGJ1dCBzY2F0dGVyIHRoZSBub24tYW5jaWxsYXJ5IGRhdGEgaW50byBhCisgICBzZXJpZXMgb2YgYnVmZmVycyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBieXRlcyBvYmplY3QuICBUaGUKKyAgICpidWZmZXJzKiBhcmd1bWVudCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIG9iamVjdHMgdGhhdCBleHBvcnQKKyAgIHdyaXRhYmxlIGJ1ZmZlcnMgKGUuZy4gOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMpOyB0aGVzZSB3aWxsIGJlCisgICBmaWxsZWQgd2l0aCBzdWNjZXNzaXZlIGNodW5rcyBvZiB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIHVudGlsIGl0CisgICBoYXMgYWxsIGJlZW4gd3JpdHRlbiBvciB0aGVyZSBhcmUgbm8gbW9yZSBidWZmZXJzLiAgVGhlIG9wZXJhdGluZworICAgc3lzdGVtIG1heSBzZXQgYSBsaW1pdCAoOmZ1bmM6YH5vcy5zeXNjb25mYCB2YWx1ZSBgYFNDX0lPVl9NQVhgYCkKKyAgIG9uIHRoZSBudW1iZXIgb2YgYnVmZmVycyB0aGF0IGNhbiBiZSB1c2VkLiAgVGhlICphbmNidWZzaXplKiBhbmQKKyAgICpmbGFncyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgOm1ldGg6YHJlY3Ztc2dgLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogYGAobmJ5dGVzLCBhbmNkYXRhLCBtc2dfZmxhZ3MsCisgICBhZGRyZXNzKWBgLCB3aGVyZSAqbmJ5dGVzKiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG9mCisgICBub24tYW5jaWxsYXJ5IGRhdGEgd3JpdHRlbiBpbnRvIHRoZSBidWZmZXJzLCBhbmQgKmFuY2RhdGEqLAorICAgKm1zZ19mbGFncyogYW5kICphZGRyZXNzKiBhcmUgdGhlIHNhbWUgYXMgZm9yIDptZXRoOmByZWN2bXNnYC4KKworICAgRXhhbXBsZTo6CisKKyAgICAgID4+PiBpbXBvcnQgc29ja2V0CisgICAgICA+Pj4gczEsIHMyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgPj4+IGIxID0gYnl0ZWFycmF5KGInLS0tLScpCisgICAgICA+Pj4gYjIgPSBieXRlYXJyYXkoYicwMTIzNDU2Nzg5JykKKyAgICAgID4+PiBiMyA9IGJ5dGVhcnJheShiJy0tLS0tLS0tLS0tLS0tJykKKyAgICAgID4+PiBzMS5zZW5kKGInTWFyeSBoYWQgYSBsaXR0bGUgbGFtYicpCisgICAgICAyMgorICAgICAgPj4+IHMyLnJlY3Ztc2dfaW50byhbYjEsIG1lbW9yeXZpZXcoYjIpWzI6OV0sIGIzXSkKKyAgICAgICgyMiwgW10sIDAsIE5vbmUpCisgICAgICA+Pj4gW2IxLCBiMiwgYjNdCisgICAgICBbYnl0ZWFycmF5KGInTWFyeScpLCBieXRlYXJyYXkoYicwMSBoYWQgYSA5JyksIGJ5dGVhcnJheShiJ2xpdHRsZSBsYW1iLS0tJyldCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzb2NrZXQucmVjdmZyb21faW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKQogCiAgICBSZWNlaXZlIGRhdGEgZnJvbSB0aGUgc29ja2V0LCB3cml0aW5nIGl0IGludG8gKmJ1ZmZlciogaW5zdGVhZCBvZiBjcmVhdGluZyBhCkBAIC03NTUsNiArMTAxNSw0MSBAQAogICAgYWJvdmUuKQogCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKQorCisgICBTZW5kIG5vcm1hbCBhbmQgYW5jaWxsYXJ5IGRhdGEgdG8gdGhlIHNvY2tldCwgZ2F0aGVyaW5nIHRoZQorICAgbm9uLWFuY2lsbGFyeSBkYXRhIGZyb20gYSBzZXJpZXMgb2YgYnVmZmVycyBhbmQgY29uY2F0ZW5hdGluZyBpdAorICAgaW50byBhIHNpbmdsZSBtZXNzYWdlLiAgVGhlICpidWZmZXJzKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlCisgICBub24tYW5jaWxsYXJ5IGRhdGEgYXMgYW4gaXRlcmFibGUgb2YgYnVmZmVyLWNvbXBhdGlibGUgb2JqZWN0cworICAgKGUuZy4gOmNsYXNzOmBieXRlc2Agb2JqZWN0cyk7IHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1heSBzZXQgYSBsaW1pdAorICAgKDpmdW5jOmB+b3Muc3lzY29uZmAgdmFsdWUgYGBTQ19JT1ZfTUFYYGApIG9uIHRoZSBudW1iZXIgb2YgYnVmZmVycworICAgdGhhdCBjYW4gYmUgdXNlZC4gIFRoZSAqYW5jZGF0YSogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBhbmNpbGxhcnkKKyAgIGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIGFzIGFuIGl0ZXJhYmxlIG9mIHplcm8gb3IgbW9yZSB0dXBsZXMKKyAgIGBgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhKWBgLCB3aGVyZSAqY21zZ19sZXZlbCogYW5kCisgICAqY21zZ190eXBlKiBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kCisgICBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kICpjbXNnX2RhdGEqIGlzIGEKKyAgIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBOb3RlIHRoYXQKKyAgIHNvbWUgc3lzdGVtcyAoaW4gcGFydGljdWxhciwgc3lzdGVtcyB3aXRob3V0IDpmdW5jOmBDTVNHX1NQQUNFYCkKKyAgIG1pZ2h0IHN1cHBvcnQgc2VuZGluZyBvbmx5IG9uZSBjb250cm9sIG1lc3NhZ2UgcGVyIGNhbGwuICBUaGUKKyAgICpmbGFncyogYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICA6bWV0aDpgc2VuZGAuICBJZiAqYWRkcmVzcyogaXMgc3VwcGxpZWQgYW5kIG5vdCBgYE5vbmVgYCwgaXQgc2V0cyBhCisgICBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciB0aGUgbWVzc2FnZS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlCisgICBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeSBkYXRhIHNlbnQuCisKKyAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2VuZHMgdGhlIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycyAqZmRzKgorICAgb3ZlciBhbiA6Y29uc3Q6YEFGX1VOSVhgIHNvY2tldCwgb24gc3lzdGVtcyB3aGljaCBzdXBwb3J0IHRoZQorICAgOmNvbnN0OmBTQ01fUklHSFRTYCBtZWNoYW5pc20uICBTZWUgYWxzbyA6bWV0aDpgcmVjdm1zZ2AuIDo6CisKKyAgICAgIGltcG9ydCBzb2NrZXQsIGFycmF5CisKKyAgICAgIGRlZiBzZW5kX2Zkcyhzb2NrLCBtc2csIGZkcyk6CisgICAgICAgICAgcmV0dXJuIHNvY2suc2VuZG1zZyhbbXNnXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNDTV9SSUdIVFMsIGFycmF5LmFycmF5KCJpIiwgZmRzKSldKQorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogc29ja2V0LnNldGJsb2NraW5nKGZsYWcpCiAKICAgIFNldCBibG9ja2luZyBvciBub24tYmxvY2tpbmcgbW9kZSBvZiB0aGUgc29ja2V0OiBpZiAqZmxhZyogaXMgZmFsc2UsIHRoZQpAQCAtNzk2LDkgKzEwOTEsMjIgQEAKICAgIFNodXQgZG93biBvbmUgb3IgYm90aCBoYWx2ZXMgb2YgdGhlIGNvbm5lY3Rpb24uICBJZiAqaG93KiBpcyA6Y29uc3Q6YFNIVVRfUkRgLAogICAgZnVydGhlciByZWNlaXZlcyBhcmUgZGlzYWxsb3dlZC4gIElmICpob3cqIGlzIDpjb25zdDpgU0hVVF9XUmAsIGZ1cnRoZXIgc2VuZHMKICAgIGFyZSBkaXNhbGxvd2VkLiAgSWYgKmhvdyogaXMgOmNvbnN0OmBTSFVUX1JEV1JgLCBmdXJ0aGVyIHNlbmRzIGFuZCByZWNlaXZlcyBhcmUKLSAgIGRpc2FsbG93ZWQuICBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCBzaHV0dGluZyBkb3duIG9uZSBoYWxmIG9mIHRoZSBjb25uZWN0aW9uCi0gICBjYW4gYWxzbyBjbG9zZSB0aGUgb3Bwb3NpdGUgaGFsZiAoZS5nLiBvbiBNYWMgT1MgWCwgYGBzaHV0ZG93bihTSFVUX1dSKWBgIGRvZXMKLSAgIG5vdCBhbGxvdyBmdXJ0aGVyIHJlYWRzIG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlIGNvbm5lY3Rpb24pLgorICAgZGlzYWxsb3dlZC4KKworCisuLiBtZXRob2Q6OiBzb2NrZXQuc2hhcmUocHJvY2Vzc19pZCkKKworICAgIDpwbGF0Zm9ybTogV2luZG93cworCisgICAgRHVwbGFjZXQgYSBzb2NrZXQgYW5kIHByZXBhcmUgaXQgZm9yIHNoYXJpbmcgd2l0aCBhIHRhcmdldCBwcm9jZXNzLiAgVGhlCisgICAgdGFyZ2V0IHByb2Nlc3MgbXVzdCBiZSBwcm92aWRlZCB3aXRoICpwcm9jZXNzX2lkKi4gIFRoZSByZXN1bHRpbmcgYnl0ZXMgb2JqZWN0CisgICAgY2FuIHRoZW4gYmUgcGFzc2VkIHRvIHRoZSB0YXJnZXQgcHJvY2VzcyB1c2luZyBzb21lIGZvcm0gb2YgaW50ZXJwcm9jZXNzCisgICAgY29tbXVuaWNhdGlvbiBhbmQgdGhlIHNvY2tldCBjYW4gYmUgcmVjcmVhdGVkIHRoZXJlIHVzaW5nIDpmdW5jOmBmcm9tc2hhcmVgLgorICAgIE9uY2UgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBpdCBpcyBzYWZlIHRvIGNsb3NlIHRoZSBzb2NrZXQgc2luY2UKKyAgICB0aGUgb3BlcmF0aW5nIHN5c3RlbSBoYXMgYWxyZWFkeSBkdXBsaWNhdGVkIGl0IGZvciB0aGUgdGFyZ2V0IHByb2Nlc3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gbWV0aG9kcyA6bWV0aDpgcmVhZGAgb3IgOm1ldGg6YHdyaXRlYDsgdXNlCiA6bWV0aDpgfnNvY2tldC5yZWN2YCBhbmQgOm1ldGg6YH5zb2NrZXQuc2VuZGAgd2l0aG91dCAqZmxhZ3MqIGFyZ3VtZW50IGluc3RlYWQuCkBAIC05NDMsMTMgKzEyNTEsMTMgQEAKICAgICAgICBhZiwgc29ja3R5cGUsIHByb3RvLCBjYW5vbm5hbWUsIHNhID0gcmVzCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChhZiwgc29ja3R5cGUsIHByb3RvKQotICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMuYmluZChzYSkKICAgICAgICAgICAgcy5saXN0ZW4oMSkKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICBzID0gTm9uZQogICAgICAgICAgICBjb250aW51ZQpAQCAtOTc4LDEyICsxMjg2LDEyIEBACiAgICAgICAgYWYsIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzYSA9IHJlcwogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoYWYsIHNvY2t0eXBlLCBwcm90bykKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMgPSBOb25lCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzLmNvbm5lY3Qoc2EpCi0gICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CisgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKQEAgLTk5Nyw3ICsxMzA1LDcgQEAKICAgIHByaW50KCdSZWNlaXZlZCcsIHJlcHIoZGF0YSkpCiAKIAotVGhlIGxhc3QgZXhhbXBsZSBzaG93cyBob3cgdG8gd3JpdGUgYSB2ZXJ5IHNpbXBsZSBuZXR3b3JrIHNuaWZmZXIgd2l0aCByYXcKK1RoZSBuZXh0IGV4YW1wbGUgc2hvd3MgaG93IHRvIHdyaXRlIGEgdmVyeSBzaW1wbGUgbmV0d29yayBzbmlmZmVyIHdpdGggcmF3CiBzb2NrZXRzIG9uIFdpbmRvd3MuIFRoZSBleGFtcGxlIHJlcXVpcmVzIGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyB0byBtb2RpZnkKIHRoZSBpbnRlcmZhY2U6OgogCkBAIC0xMDIyLDExICsxMzMwLDUxIEBACiAgICAjIGRpc2FibGVkIHByb21pc2N1b3VzIG1vZGUKICAgIHMuaW9jdGwoc29ja2V0LlNJT19SQ1ZBTEwsIHNvY2tldC5SQ1ZBTExfT0ZGKQogCitUaGUgbGFzdCBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgdGhlIHNvY2tldCBpbnRlcmZhY2UgdG8gY29tbXVuaWNhdGUgdG8gYSBDQU4KK25ldHdvcmsuIFRoaXMgZXhhbXBsZSBtaWdodCByZXF1aXJlIHNwZWNpYWwgcHJpdmlsZWRnZTo6CisKKyAgIGltcG9ydCBzb2NrZXQKKyAgIGltcG9ydCBzdHJ1Y3QKKworCisgICAjIENBTiBmcmFtZSBwYWNraW5nL3VucGFja2luZyAoc2VlICdzdHJ1Y3QgY2FuX2ZyYW1lJyBpbiA8bGludXgvY2FuLmg+KQorCisgICBjYW5fZnJhbWVfZm10ID0gIj1JQjN4OHMiCisgICBjYW5fZnJhbWVfc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShjYW5fZnJhbWVfZm10KQorCisgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNhbl9pZCwgZGF0YSk6CisgICAgICAgY2FuX2RsYyA9IGxlbihkYXRhKQorICAgICAgIGRhdGEgPSBkYXRhLmxqdXN0KDgsIGInXHgwMCcpCisgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNhbl9mcmFtZV9mbXQsIGNhbl9pZCwgY2FuX2RsYywgZGF0YSkKKworICAgZGVmIGRpc3NlY3RfY2FuX2ZyYW1lKGZyYW1lKToKKyAgICAgICBjYW5faWQsIGNhbl9kbGMsIGRhdGEgPSBzdHJ1Y3QudW5wYWNrKGNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgIHJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkKKworCisgICAjIGNyZWF0ZSBhIHJhdyBzb2NrZXQgYW5kIGJpbmQgaXQgdG8gdGhlICd2Y2FuMCcgaW50ZXJmYWNlCisgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgcy5iaW5kKCgndmNhbjAnLCkpCisKKyAgIHdoaWxlIFRydWU6CisgICAgICAgY2YsIGFkZHIgPSBzLnJlY3Zmcm9tKGNhbl9mcmFtZV9zaXplKQorCisgICAgICAgcHJpbnQoJ1JlY2VpdmVkOiBjYW5faWQ9JXgsIGNhbl9kbGM9JXgsIGRhdGE9JXMnICUgZGlzc2VjdF9jYW5fZnJhbWUoY2YpKQorCisgICAgICAgdHJ5OgorICAgICAgICAgICBzLnNlbmQoY2YpCisgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHByaW50KCdFcnJvciBzZW5kaW5nIENBTiBmcmFtZScpCisKKyAgICAgICB0cnk6CisgICAgICAgICAgIHMuc2VuZChidWlsZF9jYW5fZnJhbWUoMHgwMSwgYidceDAxXHgwMlx4MDMnKSkKKyAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgcHJpbnQoJ0Vycm9yIHNlbmRpbmcgQ0FOIGZyYW1lJykKIAogUnVubmluZyBhbiBleGFtcGxlIHNldmVyYWwgdGltZXMgd2l0aCB0b28gc21hbGwgZGVsYXkgYmV0d2VlbiBleGVjdXRpb25zLCBjb3VsZAogbGVhZCB0byB0aGlzIGVycm9yOjoKIAotICAgc29ja2V0LmVycm9yOiBbRXJybm8gOThdIEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UKKyAgIE9TRXJyb3I6IFtFcnJubyA5OF0gQWRkcmVzcyBhbHJlYWR5IGluIHVzZQogCiBUaGlzIGlzIGJlY2F1c2UgdGhlIHByZXZpb3VzIGV4ZWN1dGlvbiBoYXMgbGVmdCB0aGUgc29ja2V0IGluIGEgYGBUSU1FX1dBSVRgYAogc3RhdGUsIGFuZCBjYW4ndCBiZSBpbW1lZGlhdGVseSByZXVzZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAppbmRleCA1Mjg3ZjE3Li4yOGU4YTBhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKQEAgLTE1MywxMCArMTUzLDI0IEBACiAKIC4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsPTAuNSkKIAotICAgSGFuZGxlIHJlcXVlc3RzIHVudGlsIGFuIGV4cGxpY2l0IDptZXRoOmBzaHV0ZG93bmAgcmVxdWVzdC4KLSAgIFBvbGwgZm9yIHNodXRkb3duIGV2ZXJ5ICpwb2xsX2ludGVydmFsKiBzZWNvbmRzLiBJZ25vcmVzIDphdHRyOmBzZWxmLnRpbWVvdXRgLgotICAgSWYgeW91IG5lZWQgdG8gZG8gcGVyaW9kaWMgdGFza3MsIGRvIHRoZW0gaW4gYW5vdGhlciB0aHJlYWQuCisgICBIYW5kbGUgcmVxdWVzdHMgdW50aWwgYW4gZXhwbGljaXQgOm1ldGg6YHNodXRkb3duYCByZXF1ZXN0LiAgUG9sbCBmb3IKKyAgIHNodXRkb3duIGV2ZXJ5ICpwb2xsX2ludGVydmFsKiBzZWNvbmRzLiBJZ25vcmVzIDphdHRyOmBzZWxmLnRpbWVvdXRgLiAgSXQKKyAgIGFsc28gY2FsbHMgOm1ldGg6YHNlcnZpY2VfYWN0aW9uc2AsIHdoaWNoIG1heSBiZSB1c2VkIGJ5IGEgc3ViY2xhc3Mgb3IgbWl4aW4KKyAgIHRvIHByb3ZpZGUgYWN0aW9ucyBzcGVjaWZpYyB0byBhIGdpdmVuIHNlcnZpY2UuICBGb3IgZXhhbXBsZSwgdGhlCisgICA6Y2xhc3M6YEZvcmtpbmdNaXhJbmAgY2xhc3MgdXNlcyA6bWV0aDpgc2VydmljZV9hY3Rpb25zYCB0byBjbGVhbiB1cCB6b21iaWUKKyAgIGNoaWxkIHByb2Nlc3Nlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCBgYHNlcnZpY2VfYWN0aW9uc2BgIGNhbGwgdG8gdGhlIGBgc2VydmVfZm9yZXZlcmBgIG1ldGhvZC4KKworCisuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNlcnZpY2VfYWN0aW9ucygpCisKKyAgIFRoaXMgaXMgY2FsbGVkIGluIHRoZSA6bWV0aDpgc2VydmVfZm9yZXZlcmAgbG9vcC4gVGhpcyBtZXRob2QgaXMgY2FuIGJlCisgICBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgb3IgbWl4aW4gY2xhc3NlcyB0byBwZXJmb3JtIGFjdGlvbnMgc3BlY2lmaWMgdG8KKyAgIGEgZ2l2ZW4gc2VydmljZSwgc3VjaCBhcyBjbGVhbnVwIGFjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdCBiL0RvYy9saWJyYXJ5L3NvbWVvcy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDA5YmIuLjAwMDAwMDAKLS0tIGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS4uIF9zb21lb3M6Ci0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLU9wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIGludGVyZmFjZXMgdG8gb3BlcmF0aW5nIHN5c3RlbQotZmVhdHVyZXMgdGhhdCBhcmUgYXZhaWxhYmxlIG9uIHNlbGVjdGVkIG9wZXJhdGluZyBzeXN0ZW1zIG9ubHkuIFRoZSBpbnRlcmZhY2VzCi1hcmUgZ2VuZXJhbGx5IG1vZGVsZWQgYWZ0ZXIgdGhlIFVuaXggb3IgQyBpbnRlcmZhY2VzIGJ1dCB0aGV5IGFyZSBhdmFpbGFibGUgb24KLXNvbWUgb3RoZXIgc3lzdGVtcyBhcyB3ZWxsIChlLmcuIFdpbmRvd3MpLiAgSGVyZSdzIGFuIG92ZXJ2aWV3OgotCi0KLS4uIHRvY3RyZWU6OgotCi0gICBzZWxlY3QucnN0Ci0gICB0aHJlYWRpbmcucnN0Ci0gICBtdWx0aXByb2Nlc3NpbmcucnN0Ci0gICBjb25jdXJyZW50LmZ1dHVyZXMucnN0Ci0gICBtbWFwLnJzdAotICAgcmVhZGxpbmUucnN0Ci0gICBybGNvbXBsZXRlci5yc3QKLSAgIGR1bW15X3RocmVhZGluZy5yc3QKLSAgIF90aHJlYWQucnN0Ci0gICBfZHVtbXlfdGhyZWFkLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCA5M2Y2ZDgyLi43ZDE1NmRlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKQEAgLTM2OSw2ICszNjksMjIgQEAKICAgICAgIG1ldGhvZCB3aXRoIDpjb25zdDpgTm9uZWAgZm9yICpoYW5kbGVyKi4KIAogCisgICAuLiBtZXRob2Q6OiBzZXRfdHJhY2VfY2FsbGJhY2sodHJhY2VfY2FsbGJhY2spCisKKyAgICAgIFJlZ2lzdGVycyAqdHJhY2VfY2FsbGJhY2sqIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IHRoYXQgaXMKKyAgICAgIGFjdHVhbGx5IGV4ZWN1dGVkIGJ5IHRoZSBTUUxpdGUgYmFja2VuZC4KKworICAgICAgVGhlIG9ubHkgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBpcyB0aGUgc3RhdGVtZW50IChhcyBzdHJpbmcpIHRoYXQKKyAgICAgIGlzIGJlaW5nIGV4ZWN1dGVkLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpcyBpZ25vcmVkLiBOb3RlIHRoYXQKKyAgICAgIHRoZSBiYWNrZW5kIGRvZXMgbm90IG9ubHkgcnVuIHN0YXRlbWVudHMgcGFzc2VkIHRvIHRoZSA6bWV0aDpgQ3Vyc29yLmV4ZWN1dGVgCisgICAgICBtZXRob2RzLiAgT3RoZXIgc291cmNlcyBpbmNsdWRlIHRoZSB0cmFuc2FjdGlvbiBtYW5hZ2VtZW50IG9mIHRoZSBQeXRob24KKyAgICAgIG1vZHVsZSBhbmQgdGhlIGV4ZWN1dGlvbiBvZiB0cmlnZ2VycyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLgorCisgICAgICBQYXNzaW5nIDpjb25zdDpgTm9uZWAgYXMgKnRyYWNlX2NhbGxiYWNrKiB3aWxsIGRpc2FibGUgdGhlIHRyYWNlIGNhbGxiYWNrLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBtZXRob2Q6OiBlbmFibGVfbG9hZF9leHRlbnNpb24oZW5hYmxlZCkKIAogICAgICAgVGhpcyByb3V0aW5lIGFsbG93cy9kaXNhbGxvd3MgdGhlIFNRTGl0ZSBlbmdpbmUgdG8gbG9hZCBTUUxpdGUgZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggMGY1Y2VhMi4uNzcxOTZlMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC01Myw5ICs1Myw2OSBAQAogICAgKGN1cnJlbnRseSBwcm92aWRlZCBieSB0aGUgT3BlblNTTCBsaWJyYXJ5KS4gIFRoaXMgc2lnbmlmaWVzIHNvbWUKICAgIHByb2JsZW0gaW4gdGhlIGhpZ2hlci1sZXZlbCBlbmNyeXB0aW9uIGFuZCBhdXRoZW50aWNhdGlvbiBsYXllciB0aGF0J3MKICAgIHN1cGVyaW1wb3NlZCBvbiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIGNvbm5lY3Rpb24uICBUaGlzIGVycm9yCi0gICBpcyBhIHN1YnR5cGUgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgd2hpY2ggaW4gdHVybiBpcyBhIHN1YnR5cGUgb2YKLSAgIDpleGM6YElPRXJyb3JgLiAgVGhlIGVycm9yIGNvZGUgYW5kIG1lc3NhZ2Ugb2YgOmV4YzpgU1NMRXJyb3JgIGluc3RhbmNlcwotICAgYXJlIHByb3ZpZGVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkuCisgICBpcyBhIHN1YnR5cGUgb2YgOmV4YzpgT1NFcnJvcmAuICBUaGUgZXJyb3IgY29kZSBhbmQgbWVzc2FnZSBvZgorICAgOmV4YzpgU1NMRXJyb3JgIGluc3RhbmNlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyeS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFNTTEVycm9yYCB1c2VkIHRvIGJlIGEgc3VidHlwZSBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBsaWJyYXJ5CisKKyAgICAgIEEgc3RyaW5nIG1uZW1vbmljIGRlc2lnbmF0aW5nIHRoZSBPcGVuU1NMIHN1Ym1vZHVsZSBpbiB3aGljaCB0aGUgZXJyb3IKKyAgICAgIG9jY3VycmVkLCBzdWNoIGFzIGBgU1NMYGAsIGBgUEVNYGAgb3IgYGBYNTA5YGAuICBUaGUgcmFuZ2Ugb2YgcG9zc2libGUKKyAgICAgIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBPcGVuU1NMIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiByZWFzb24KKworICAgICAgQSBzdHJpbmcgbW5lbW9uaWMgZGVzaWduYXRpbmcgdGhlIHJlYXNvbiB0aGlzIGVycm9yIG9jY3VycmVkLCBmb3IKKyAgICAgIGV4YW1wbGUgYGBDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEYGAuICBUaGUgcmFuZ2Ugb2YgcG9zc2libGUKKyAgICAgIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBPcGVuU1NMIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xaZXJvUmV0dXJuRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgYW5kCisgICB0aGUgU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIGNsZWFubHkuICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0CisgICBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IChyZWFkIFRDUCkgaGFzIGJlZW4gY2xvc2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMV2FudFJlYWRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgYnkgYSA6cmVmOmBub24tYmxvY2tpbmcgU1NMIHNvY2tldAorICAgPHNzbC1ub25ibG9ja2luZz5gIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgZGF0YSwgYnV0IG1vcmUgZGF0YSBuZWVkcworICAgdG8gYmUgcmVjZWl2ZWQgb24gdGhlIHVuZGVybHlpbmcgVENQIHRyYW5zcG9ydCBiZWZvcmUgdGhlIHJlcXVlc3QgY2FuIGJlCisgICBmdWxmaWxsZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xXYW50V3JpdGVFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgYnkgYSA6cmVmOmBub24tYmxvY2tpbmcgU1NMIHNvY2tldAorICAgPHNzbC1ub25ibG9ja2luZz5gIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgZGF0YSwgYnV0IG1vcmUgZGF0YSBuZWVkcworICAgdG8gYmUgc2VudCBvbiB0aGUgdW5kZXJseWluZyBUQ1AgdHJhbnNwb3J0IGJlZm9yZSB0aGUgcmVxdWVzdCBjYW4gYmUKKyAgIGZ1bGZpbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFN5c2NhbGxFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgd2hlbiBhIHN5c3RlbSBlcnJvciB3YXMgZW5jb3VudGVyZWQKKyAgIHdoaWxlIHRyeWluZyB0byBmdWxmaWxsIGFuIG9wZXJhdGlvbiBvbiBhIFNTTCBzb2NrZXQuICBVbmZvcnR1bmF0ZWx5LAorICAgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gaW5zcGVjdCB0aGUgb3JpZ2luYWwgZXJybm8gbnVtYmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMRU9GRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIHdoZW4gdGhlIFNTTCBjb25uZWN0aW9uIGhhcyBiZWVuCisgICB0ZXJtaW5hdGVkIGFicnVwdGx5LiAgR2VuZXJhbGx5LCB5b3Ugc2hvdWxkbid0IHRyeSB0byByZXVzZSB0aGUgdW5kZXJseWluZworICAgdHJhbnNwb3J0IHdoZW4gdGhpcyBlcnJvciBpcyBlbmNvdW50ZXJlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGV4Y2VwdGlvbjo6IENlcnRpZmljYXRlRXJyb3IKIApAQCAtMTYxLDYgKzIyMSwzNSBAQAogUmFuZG9tIGdlbmVyYXRpb24KIF5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIGZ1bmN0aW9uOjogUkFORF9ieXRlcyhudW0pCisKKyAgIFJldHVybnMgKm51bSogY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuIFJhaXNlcyBhbgorICAgOmNsYXNzOmBTU0xFcnJvcmAgaWYgdGhlIFBSTkcgaGFzIG5vdCBiZWVuIHNlZWRlZCB3aXRoIGVub3VnaCBkYXRhIG9yIGlmIHRoZQorICAgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgUkFORCBtZXRob2QuIDpmdW5jOmBSQU5EX3N0YXR1c2AKKyAgIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIFBSTkcgYW5kIDpmdW5jOmBSQU5EX2FkZGAgY2FuIGJlIHVzZWQKKyAgIHRvIHNlZWQgdGhlIFBSTkcuCisKKyAgIFJlYWQgdGhlIFdpa2lwZWRpYSBhcnRpY2xlLCBgQ3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkb3JhbmRvbSBudW1iZXIKKyAgIGdlbmVyYXRvciAoQ1NQUk5HKQorICAgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3J5cHRvZ3JhcGhpY2FsbHlfc2VjdXJlX3BzZXVkb3JhbmRvbV9udW1iZXJfZ2VuZXJhdG9yPmBfLAorICAgdG8gZ2V0IHRoZSByZXF1aXJlbWVudHMgb2YgYSBjcnlwdG9ncmFwaGljYWxseSBnZW5lcmF0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IFJBTkRfcHNldWRvX2J5dGVzKG51bSkKKworICAgUmV0dXJucyAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpOiBieXRlcyBhcmUgKm51bSogcHNldWRvLXJhbmRvbSBieXRlcywKKyAgIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZSBpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseQorICAgc3Ryb25nLiBSYWlzZXMgYW4gOmNsYXNzOmBTU0xFcnJvcmAgaWYgdGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZQorICAgY3VycmVudCBSQU5EIG1ldGhvZC4KKworICAgR2VuZXJhdGVkIHBzZXVkby1yYW5kb20gYnl0ZSBzZXF1ZW5jZXMgd2lsbCBiZSB1bmlxdWUgaWYgdGhleSBhcmUgb2YKKyAgIHN1ZmZpY2llbnQgbGVuZ3RoLCBidXQgYXJlIG5vdCBuZWNlc3NhcmlseSB1bnByZWRpY3RhYmxlLiBUaGV5IGNhbiBiZSB1c2VkCisgICBmb3Igbm9uLWNyeXB0b2dyYXBoaWMgcHVycG9zZXMgYW5kIGZvciBjZXJ0YWluIHB1cnBvc2VzIGluIGNyeXB0b2dyYXBoaWMKKyAgIHByb3RvY29scywgYnV0IHVzdWFsbHkgbm90IGZvciBrZXkgZ2VuZXJhdGlvbiBldGMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBmdW5jdGlvbjo6IFJBTkRfc3RhdHVzKCkKIAogICAgUmV0dXJucyBUcnVlIGlmIHRoZSBTU0wgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGhhcyBiZWVuIHNlZWRlZCB3aXRoCkBAIC0xNzAsNyArMjU5LDcgQEAKIAogLi4gZnVuY3Rpb246OiBSQU5EX2VnZChwYXRoKQogCi0gICBJZiB5b3UgYXJlIHJ1bm5pbmcgYW4gZW50cm9weS1nYXRoZXJpbmcgZGFlbW9uIChFR0QpIHNvbWV3aGVyZSwgYW5kIGBgcGF0aGBgCisgICBJZiB5b3UgYXJlIHJ1bm5pbmcgYW4gZW50cm9weS1nYXRoZXJpbmcgZGFlbW9uIChFR0QpIHNvbWV3aGVyZSwgYW5kICpwYXRoKgogICAgaXMgdGhlIHBhdGhuYW1lIG9mIGEgc29ja2V0IGNvbm5lY3Rpb24gb3BlbiB0byBpdCwgdGhpcyB3aWxsIHJlYWQgMjU2IGJ5dGVzCiAgICBvZiByYW5kb21uZXNzIGZyb20gdGhlIHNvY2tldCwgYW5kIGFkZCBpdCB0byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyCiAgICBnZW5lcmF0b3IgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5IG9mIGdlbmVyYXRlZCBzZWNyZXQga2V5cy4gIFRoaXMgaXMKQEAgLTE4MSw4ICsyNzAsOCBAQAogCiAuLiBmdW5jdGlvbjo6IFJBTkRfYWRkKGJ5dGVzLCBlbnRyb3B5KQogCi0gICBNaXhlcyB0aGUgZ2l2ZW4gYGBieXRlc2BgIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKLSAgIHBhcmFtZXRlciBgYGVudHJvcHlgYCAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4KKyAgIE1peGVzIHRoZSBnaXZlbiAqYnl0ZXMqIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKKyAgIHBhcmFtZXRlciAqZW50cm9weSogKGEgZmxvYXQpIGlzIGEgbG93ZXIgYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluCiAgICBzdHJpbmcgKHNvIHlvdSBjYW4gYWx3YXlzIHVzZSA6Y29uc3Q6YDAuMGApLiAgU2VlIDpyZmM6YDE3NTBgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBzb3VyY2VzIG9mIGVudHJvcHkuCiAKQEAgLTIzOCw2ICszMjcsOSBAQAogICAgd2lsbCBhdHRlbXB0IHRvIHZhbGlkYXRlIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgYWdhaW5zdCB0aGF0IHNldCBvZiByb290CiAgICBjZXJ0aWZpY2F0ZXMsIGFuZCB3aWxsIGZhaWwgaWYgdGhlIHZhbGlkYXRpb24gYXR0ZW1wdCBmYWlscy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IElQdjYtY29tcGF0aWJsZS4KKwogLi4gZnVuY3Rpb246OiBERVJfY2VydF90b19QRU1fY2VydChERVJfY2VydF9ieXRlcykKIAogICAgR2l2ZW4gYSBjZXJ0aWZpY2F0ZSBhcyBhIERFUi1lbmNvZGVkIGJsb2Igb2YgYnl0ZXMsIHJldHVybnMgYSBQRU0tZW5jb2RlZApAQCAtMzQ1LDYgKzQzNyw0NiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gZGF0YTo6IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorCisgICBVc2UgdGhlIHNlcnZlcidzIGNpcGhlciBvcmRlcmluZyBwcmVmZXJlbmNlLCByYXRoZXIgdGhhbiB0aGUgY2xpZW50J3MuCisgICBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIGNsaWVudCBzb2NrZXRzIGFuZCBTU0x2MiBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9TSU5HTEVfREhfVVNFCisKKyAgIFByZXZlbnRzIHJlLXVzZSBvZiB0aGUgc2FtZSBESCBrZXkgZm9yIGRpc3RpbmN0IFNTTCBzZXNzaW9ucy4gIFRoaXMKKyAgIGltcHJvdmVzIGZvcndhcmQgc2VjcmVjeSBidXQgcmVxdWlyZXMgbW9yZSBjb21wdXRhdGlvbmFsIHJlc291cmNlcy4KKyAgIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB0byBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9TSU5HTEVfRUNESF9VU0UKKworICAgUHJldmVudHMgcmUtdXNlIG9mIHRoZSBzYW1lIEVDREgga2V5IGZvciBkaXN0aW5jdCBTU0wgc2Vzc2lvbnMuICBUaGlzCisgICBpbXByb3ZlcyBmb3J3YXJkIHNlY3JlY3kgYnV0IHJlcXVpcmVzIG1vcmUgY29tcHV0YXRpb25hbCByZXNvdXJjZXMuCisgICBUaGlzIG9wdGlvbiBvbmx5IGFwcGxpZXMgdG8gc2VydmVyIHNvY2tldHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogT1BfTk9fQ09NUFJFU1NJT04KKworICAgRGlzYWJsZSBjb21wcmVzc2lvbiBvbiB0aGUgU1NMIGNoYW5uZWwuICBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgYXBwbGljYXRpb24KKyAgIHByb3RvY29sIHN1cHBvcnRzIGl0cyBvd24gY29tcHJlc3Npb24gc2NoZW1lLgorCisgICBUaGlzIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIE9wZW5TU0wgMS4wLjAgYW5kIGxhdGVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IEhBU19FQ0RICisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgRWxsaXB0aWMgQ3VydmUtYmFzZWQKKyAgIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZS4gIFRoaXMgc2hvdWxkIGJlIHRydWUgdW5sZXNzIHRoZSBmZWF0dXJlIHdhcworICAgZXhwbGljaXRseSBkaXNhYmxlZCBieSB0aGUgZGlzdHJpYnV0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBkYXRhOjogSEFTX1NOSQogCiAgICBXaGV0aGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHRoZSAqU2VydmVyIE5hbWUKQEAgLTM1NCw2ICs0ODYsMjMgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGRhdGE6OiBIQVNfTlBOCisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgKk5leHQgUHJvdG9jb2wKKyAgIE5lZ290aWF0aW9uKiBhcyBkZXNjcmliZWQgaW4gdGhlIGBOUE4gZHJhZnQgc3BlY2lmaWNhdGlvbgorICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWFnbC10bHMtbmV4dHByb3RvbmVnPmBfLiBXaGVuIHRydWUsCisgICB5b3UgY2FuIHVzZSB0aGUgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIG1ldGhvZCB0byBhZHZlcnRpc2UKKyAgIHdoaWNoIHByb3RvY29scyB5b3Ugd2FudCB0byBzdXBwb3J0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IENIQU5ORUxfQklORElOR19UWVBFUworCisgICBMaXN0IG9mIHN1cHBvcnRlZCBUTFMgY2hhbm5lbCBiaW5kaW5nIHR5cGVzLiAgU3RyaW5ncyBpbiB0aGlzIGxpc3QKKyAgIGNhbiBiZSB1c2VkIGFzIGFyZ3VtZW50cyB0byA6bWV0aDpgU1NMU29ja2V0LmdldF9jaGFubmVsX2JpbmRpbmdgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZGF0YTo6IE9QRU5TU0xfVkVSU0lPTgogCiAgICBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIE9wZW5TU0wgbGlicmFyeSBsb2FkZWQgYnkgdGhlIGludGVycHJldGVyOjoKQEAgLTQ3OSw2ICs2MjgsMzcgQEAKICAgIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IGRlZmluZXMgaXRzIHVzZSwgYW5kIHRoZSBudW1iZXIgb2Ygc2VjcmV0CiAgICBiaXRzIGJlaW5nIHVzZWQuICBJZiBubyBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLCByZXR1cm5zIGBgTm9uZWBgLgogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuY29tcHJlc3Npb24oKQorCisgICBSZXR1cm4gdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiZWluZyB1c2VkIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYAorICAgaWYgdGhlIGNvbm5lY3Rpb24gaXNuJ3QgY29tcHJlc3NlZC4KKworICAgSWYgdGhlIGhpZ2hlci1sZXZlbCBwcm90b2NvbCBzdXBwb3J0cyBpdHMgb3duIGNvbXByZXNzaW9uIG1lY2hhbmlzbSwKKyAgIHlvdSBjYW4gdXNlIDpkYXRhOmBPUF9OT19DT01QUkVTU0lPTmAgdG8gZGlzYWJsZSBTU0wtbGV2ZWwgY29tcHJlc3Npb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZyhjYl90eXBlPSJ0bHMtdW5pcXVlIikKKworICAgR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24sIGFzIGEgYnl0ZXMgb2JqZWN0LiAgUmV0dXJucworICAgYGBOb25lYGAgaWYgbm90IGNvbm5lY3RlZCBvciB0aGUgaGFuZHNoYWtlIGhhcyBub3QgYmVlbiBjb21wbGV0ZWQuCisKKyAgIFRoZSAqY2JfdHlwZSogcGFyYW1ldGVyIGFsbG93IHNlbGVjdGlvbiBvZiB0aGUgZGVzaXJlZCBjaGFubmVsIGJpbmRpbmcKKyAgIHR5cGUuIFZhbGlkIGNoYW5uZWwgYmluZGluZyB0eXBlcyBhcmUgbGlzdGVkIGluIHRoZQorICAgOmRhdGE6YENIQU5ORUxfQklORElOR19UWVBFU2AgbGlzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSAndGxzLXVuaXF1ZScgY2hhbm5lbAorICAgYmluZGluZywgZGVmaW5lZCBieSA6cmZjOmA1OTI5YCwgaXMgc3VwcG9ydGVkLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZQorICAgcmFpc2VkIGlmIGFuIHVuc3VwcG9ydGVkIGNoYW5uZWwgYmluZGluZyB0eXBlIGlzIHJlcXVlc3RlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorCisgICBSZXR1cm5zIHRoZSBwcm90b2NvbCB0aGF0IHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIFRMUy9TU0wgaGFuZHNoYWtlLiBJZgorICAgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIHdhcyBub3QgY2FsbGVkLCBvciBpZiB0aGUgb3RoZXIgcGFydHkKKyAgIGRvZXMgbm90IHN1cHBvcnQgTlBOLCBvciBpZiB0aGUgaGFuZHNoYWtlIGhhcyBub3QgeWV0IGhhcHBlbmVkLCB0aGlzIHdpbGwKKyAgIHJldHVybiBgYE5vbmVgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC51bndyYXAoKQogCkBAIC00ODgsNyArNjY4LDYgQEAKICAgIHJldHVybmVkIHNvY2tldCBzaG91bGQgYWx3YXlzIGJlIHVzZWQgZm9yIGZ1cnRoZXIgY29tbXVuaWNhdGlvbiB3aXRoIHRoZQogICAgb3RoZXIgc2lkZSBvZiB0aGUgY29ubmVjdGlvbiwgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIHNvY2tldC4KIAotCiAuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuY29udGV4dAogCiAgICBUaGUgOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3QgdGhpcyBTU0wgc29ja2V0IGlzIHRpZWQgdG8uICBJZiB0aGUgU1NMCkBAIC01MTgsNyArNjk3LDcgQEAKIAogOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCi0uLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lKQorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSkKIAogICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBjZXJ0aWZpY2F0ZS4gIFRoZSAqY2VydGZpbGUqCiAgICBzdHJpbmcgbXVzdCBiZSB0aGUgcGF0aCB0byBhIHNpbmdsZSBmaWxlIGluIFBFTSBmb3JtYXQgY29udGFpbmluZyB0aGUKQEAgLTUyOSw5ICs3MDgsMjUgQEAKICAgIDpyZWY6YHNzbC1jZXJ0aWZpY2F0ZXNgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgY2VydGlmaWNhdGUKICAgIGlzIHN0b3JlZCBpbiB0aGUgKmNlcnRmaWxlKi4KIAorICAgVGhlICpwYXNzd29yZCogYXJndW1lbnQgbWF5IGJlIGEgZnVuY3Rpb24gdG8gY2FsbCB0byBnZXQgdGhlIHBhc3N3b3JkIGZvcgorICAgZGVjcnlwdGluZyB0aGUgcHJpdmF0ZSBrZXkuICBJdCB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBwcml2YXRlIGtleSBpcworICAgZW5jcnlwdGVkIGFuZCBhIHBhc3N3b3JkIGlzIG5lY2Vzc2FyeS4gIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLAorICAgYW5kIGl0IHNob3VsZCByZXR1cm4gYSBzdHJpbmcsIGJ5dGVzLCBvciBieXRlYXJyYXkuICBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzCisgICBhIHN0cmluZyBpdCB3aWxsIGJlIGVuY29kZWQgYXMgVVRGLTggYmVmb3JlIHVzaW5nIGl0IHRvIGRlY3J5cHQgdGhlIGtleS4KKyAgIEFsdGVybmF0aXZlbHkgYSBzdHJpbmcsIGJ5dGVzLCBvciBieXRlYXJyYXkgdmFsdWUgbWF5IGJlIHN1cHBsaWVkIGRpcmVjdGx5CisgICBhcyB0aGUgKnBhc3N3b3JkKiBhcmd1bWVudC4gIEl0IHdpbGwgYmUgaWdub3JlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgbm90CisgICBlbmNyeXB0ZWQgYW5kIG5vIHBhc3N3b3JkIGlzIG5lZWRlZC4KKworICAgSWYgdGhlICpwYXNzd29yZCogYXJndW1lbnQgaXMgbm90IHNwZWNpZmllZCBhbmQgYSBwYXNzd29yZCBpcyByZXF1aXJlZCwKKyAgIE9wZW5TU0wncyBidWlsdC1pbiBwYXNzd29yZCBwcm9tcHRpbmcgbWVjaGFuaXNtIHdpbGwgYmUgdXNlZCB0bworICAgaW50ZXJhY3RpdmVseSBwcm9tcHQgdGhlIHVzZXIgZm9yIGEgcGFzc3dvcmQuCisKICAgIEFuIDpjbGFzczpgU1NMRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgZG9lc24ndAogICAgbWF0Y2ggd2l0aCB0aGUgY2VydGlmaWNhdGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBOZXcgb3B0aW9uYWwgYXJndW1lbnQgKnBhc3N3b3JkKi4KKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lKQogCiAgICBMb2FkIGEgc2V0IG9mICJjZXJ0aWZpY2F0aW9uIGF1dGhvcml0eSIgKENBKSBjZXJ0aWZpY2F0ZXMgdXNlZCB0byB2YWxpZGF0ZQpAQCAtNTcwLDYgKzc2NSw1MyBAQAogICAgICAgd2hlbiBjb25uZWN0ZWQsIHRoZSA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgbWV0aG9kIG9mIFNTTCBzb2NrZXRzIHdpbGwKICAgICAgIGdpdmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIuCiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHMocHJvdG9jb2xzKQorCisgICBTcGVjaWZ5IHdoaWNoIHByb3RvY29scyB0aGUgc29ja2V0IHNob3VsZCBhdmVydGlzZSBkdXJpbmcgdGhlIFNTTC9UTFMKKyAgIGhhbmRzaGFrZS4gSXQgc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJpbmdzLCBsaWtlIGBgWydodHRwLzEuMScsICdzcGR5LzInXWBgLAorICAgb3JkZXJlZCBieSBwcmVmZXJlbmNlLiBUaGUgc2VsZWN0aW9uIG9mIGEgcHJvdG9jb2wgd2lsbCBoYXBwZW4gZHVyaW5nIHRoZQorICAgaGFuZHNoYWtlLCBhbmQgd2lsbCBwbGF5IG91dCBhY2NvcmRpbmcgdG8gdGhlIGBOUE4gZHJhZnQgc3BlY2lmaWNhdGlvbgorICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWFnbC10bHMtbmV4dHByb3RvbmVnPmBfLiBBZnRlciBhCisgICBzdWNjZXNzZnVsIGhhbmRzaGFrZSwgdGhlIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sYCBtZXRob2Qgd2lsbAorICAgcmV0dXJuIHRoZSBhZ3JlZWQtdXBvbiBwcm90b2NvbC4KKworICAgVGhpcyBtZXRob2Qgd2lsbCByYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpZiA6ZGF0YTpgSEFTX05QTmAgaXMKKyAgIEZhbHNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcyhkaGZpbGUpCisKKyAgIExvYWQgdGhlIGtleSBnZW5lcmF0aW9uIHBhcmFtZXRlcnMgZm9yIERpZmZpZS1IZWxtYW4gKERIKSBrZXkgZXhjaGFuZ2UuCisgICBVc2luZyBESCBrZXkgZXhjaGFuZ2UgaW1wcm92ZXMgZm9yd2FyZCBzZWNyZWN5IGF0IHRoZSBleHBlbnNlIG9mCisgICBjb21wdXRhdGlvbmFsIHJlc291cmNlcyAoYm90aCBvbiB0aGUgc2VydmVyIGFuZCBvbiB0aGUgY2xpZW50KS4KKyAgIFRoZSAqZGhmaWxlKiBwYXJhbWV0ZXIgc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIERICisgICBwYXJhbWV0ZXJzIGluIFBFTSBmb3JtYXQuCisKKyAgIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIGNsaWVudCBzb2NrZXRzLiAgWW91IGNhbiBhbHNvIHVzZSB0aGUKKyAgIDpkYXRhOmBPUF9TSU5HTEVfREhfVVNFYCBvcHRpb24gdG8gZnVydGhlciBpbXByb3ZlIHNlY3VyaXR5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZShjdXJ2ZV9uYW1lKQorCisgICBTZXQgdGhlIGN1cnZlIG5hbWUgZm9yIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuIChFQ0RIKSBrZXkKKyAgIGV4Y2hhbmdlLiAgRUNESCBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHJlZ3VsYXIgREggd2hpbGUgYXJndWFibHkKKyAgIGFzIHNlY3VyZS4gIFRoZSAqY3VydmVfbmFtZSogcGFyYW1ldGVyIHNob3VsZCBiZSBhIHN0cmluZyBkZXNjcmliaW5nCisgICBhIHdlbGwta25vd24gZWxsaXB0aWMgY3VydmUsIGZvciBleGFtcGxlIGBgcHJpbWUyNTZ2MWBgIGZvciBhIHdpZGVseQorICAgc3VwcG9ydGVkIGN1cnZlLgorCisgICBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBjbGllbnQgc29ja2V0cy4gIFlvdSBjYW4gYWxzbyB1c2UgdGhlCisgICA6ZGF0YTpgT1BfU0lOR0xFX0VDREhfVVNFYCBvcHRpb24gdG8gZnVydGhlciBpbXByb3ZlIHNlY3VyaXR5LgorCisgICBUaGlzIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIGlmIDpkYXRhOmBIQVNfRUNESGAgaXMgRmFsc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIGBTU0wvVExTICYgUGVyZmVjdCBGb3J3YXJkIFNlY3JlY3kgPGh0dHA6Ly92aW5jZW50LmJlcm5hdC5pbS9lbi9ibG9nLzIwMTEtc3NsLXBlcmZlY3QtZm9yd2FyZC1zZWNyZWN5Lmh0bWw+YF8KKyAgICAgICAgIFZpbmNlbnQgQmVybmF0LgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLCBcCiAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBcCiAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKQEAgLTk4NCwxMyArMTIyNiwxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NvY2tdLCBbXSwgW10pCi0gICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc29ja10sIFtdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzb2NrXSwgW10sIFtdKQorICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NvY2tdLCBbXSkKIAogCiAuLiBfc3NsLXNlY3VyaXR5OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RhdC5yc3QgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdAppbmRleCA3ZGU5OGI2Li5mNDdmNDY0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGF0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdApAQCAtMTA0LDYgKzEwNCwxNiBAQAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICB3YWxrdHJlZShzeXMuYXJndlsxXSwgdmlzaXRmaWxlKQogCitBbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gY292ZXJ0IGEgZmlsZSdzIG1vZGUgaW4gYSBodW1hbgorcmVhZGFibGUgc3RyaW5nOgorCisuLiBmdW5jdGlvbjo6IGZpbGVtb2RlKG1vZGUpCisKKyAgIENvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybSAnLXJ3eHJ3eHJ3eCcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIEFsbCB0aGUgdmFyaWFibGVzIGJlbG93IGFyZSBzaW1wbHkgc3ltYm9saWMgaW5kZXhlcyBpbnRvIHRoZSAxMC10dXBsZSByZXR1cm5lZAogYnkgOmZ1bmM6YG9zLnN0YXRgLCA6ZnVuYzpgb3MuZnN0YXRgIG9yIDpmdW5jOmBvcy5sc3RhdGAuCiAKQEAgLTM0NCw0ICszNTQsMyBAQAogICAgVGhlIGZpbGUgaXMgYSBzbmFwc2hvdCBmaWxlLgogCiBTZWUgdGhlIFwqQlNEIG9yIE1hYyBPUyBzeXN0ZW1zIG1hbiBwYWdlIDptYW5wYWdlOmBjaGZsYWdzKDIpYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDc4YTI3OTkuLjRkNDc5YTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTE1LDYgKzE1LDEwIEBACiBUaGUgcHJpbmNpcGFsIGJ1aWx0LWluIHR5cGVzIGFyZSBudW1lcmljcywgc2VxdWVuY2VzLCBtYXBwaW5ncywgY2xhc3NlcywKIGluc3RhbmNlcyBhbmQgZXhjZXB0aW9ucy4KIAorU29tZSBjb2xsZWN0aW9uIGNsYXNzZXMgYXJlIG11dGFibGUuICBUaGUgbWV0aG9kcyB0aGF0IGFkZCwgc3VidHJhY3QsIG9yCityZWFycmFuZ2UgdGhlaXIgbWVtYmVycyBpbiBwbGFjZSwgYW5kIGRvbid0IHJldHVybiBhIHNwZWNpZmljIGl0ZW0sIG5ldmVyIHJldHVybgordGhlIGNvbGxlY3Rpb24gaW5zdGFuY2UgaXRzZWxmIGJ1dCBgYE5vbmVgYC4KKwogU29tZSBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgYnkgc2V2ZXJhbCBvYmplY3QgdHlwZXM7IGluIHBhcnRpY3VsYXIsCiBwcmFjdGljYWxseSBhbGwgb2JqZWN0cyBjYW4gYmUgY29tcGFyZWQsIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGFuZCBjb252ZXJ0ZWQKIHRvIGEgc3RyaW5nICh3aXRoIHRoZSA6ZnVuYzpgcmVwcmAgZnVuY3Rpb24gb3IgdGhlIHNsaWdodGx5IGRpZmZlcmVudApAQCAtNjQxLDM0ICs2NDUsMzQgQEAKIAogSGVyZSBhcmUgdGhlIHJ1bGVzIGluIGRldGFpbDoKIAotIC0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQotICAgYnkgYGBQYGAsIGRlZmluZSBgYGhhc2goeClgYCBhcyBgYG0gKiBpbnZtb2QobiwgUCkgJSBQYGAsIHdoZXJlIGBgaW52bW9kKG4sCi0gICBQKWBgIGdpdmVzIHRoZSBpbnZlcnNlIG9mIGBgbmBgIG1vZHVsbyBgYFBgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQorICBieSBgYFBgYCwgZGVmaW5lIGBgaGFzaCh4KWBgIGFzIGBgbSAqIGludm1vZChuLCBQKSAlIFBgYCwgd2hlcmUgYGBpbnZtb2QobiwKKyAgUClgYCBnaXZlcyB0aGUgaW52ZXJzZSBvZiBgYG5gYCBtb2R1bG8gYGBQYGAuCiAKLSAtIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBub25uZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgYW5kIGBgbmBgIGlzCi0gICBkaXZpc2libGUgYnkgYGBQYGAgKGJ1dCBgYG1gYCBpcyBub3QpIHRoZW4gYGBuYGAgaGFzIG5vIGludmVyc2UKLSAgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQotICAgYGBoYXNoKHgpYGAgdG8gYmUgdGhlIGNvbnN0YW50IHZhbHVlIGBgc3lzLmhhc2hfaW5mby5pbmZgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMKKyAgZGl2aXNpYmxlIGJ5IGBgUGBgIChidXQgYGBtYGAgaXMgbm90KSB0aGVuIGBgbmBgIGhhcyBubyBpbnZlcnNlCisgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQorICBgYGhhc2goeClgYCB0byBiZSB0aGUgY29uc3RhbnQgdmFsdWUgYGBzeXMuaGFzaF9pbmZvLmluZmBgLgogCi0gLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAotICAgYXMgYGAtaGFzaCgteClgYC4gIElmIHRoZSByZXN1bHRpbmcgaGFzaCBpcyBgYC0xYGAsIHJlcGxhY2UgaXQgd2l0aAotICAgYGAtMmBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAorICBhcyBgYC1oYXNoKC14KWBgLiAgSWYgdGhlIHJlc3VsdGluZyBoYXNoIGlzIGBgLTFgYCwgcmVwbGFjZSBpdCB3aXRoCisgIGBgLTJgYC4KIAotIC0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAotICAgYW5kIGBgc3lzLmhhc2hfaW5mby5uYW5gYCBhcmUgdXNlZCBhcyBoYXNoIHZhbHVlcyBmb3IgcG9zaXRpdmUKLSAgIGluZmluaXR5LCBuZWdhdGl2ZSBpbmZpbml0eSwgb3IgbmFucyAocmVzcGVjdGl2ZWx5KS4gIChBbGwgaGFzaGFibGUKLSAgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKKy0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAorICBhbmQgYGBzeXMuaGFzaF9pbmZvLm5hbmBgIGFyZSB1c2VkIGFzIGhhc2ggdmFsdWVzIGZvciBwb3NpdGl2ZQorICBpbmZpbml0eSwgbmVnYXRpdmUgaW5maW5pdHksIG9yIG5hbnMgKHJlc3BlY3RpdmVseSkuICAoQWxsIGhhc2hhYmxlCisgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKIAotIC0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAotICAgYW5kIGltYWdpbmFyeSBwYXJ0cyBhcmUgY29tYmluZWQgYnkgY29tcHV0aW5nIGBgaGFzaCh6LnJlYWwpICsKLSAgIHN5cy5oYXNoX2luZm8uaW1hZyAqIGhhc2goei5pbWFnKWBgLCByZWR1Y2VkIG1vZHVsbwotICAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCi0gICBgYHJhbmdlKC0yKiooc3lzLmhhc2hfaW5mby53aWR0aCAtIDEpLCAyKiooc3lzLmhhc2hfaW5mby53aWR0aCAtCi0gICAxKSlgYC4gIEFnYWluLCBpZiB0aGUgcmVzdWx0IGlzIGBgLTFgYCwgaXQncyByZXBsYWNlZCB3aXRoIGBgLTJgYC4KKy0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAorICBhbmQgaW1hZ2luYXJ5IHBhcnRzIGFyZSBjb21iaW5lZCBieSBjb21wdXRpbmcgYGBoYXNoKHoucmVhbCkgKworICBzeXMuaGFzaF9pbmZvLmltYWcgKiBoYXNoKHouaW1hZylgYCwgcmVkdWNlZCBtb2R1bG8KKyAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCisgIGBgcmFuZ2UoLTIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0gMSksIDIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0KKyAgMSkpYGAuICBBZ2FpbiwgaWYgdGhlIHJlc3VsdCBpcyBgYC0xYGAsIGl0J3MgcmVwbGFjZWQgd2l0aCBgYC0yYGAuCiAKIAogVG8gY2xhcmlmeSB0aGUgYWJvdmUgcnVsZXMsIGhlcmUncyBzb21lIGV4YW1wbGUgUHl0aG9uIGNvZGUsCi1lcXVpdmFsZW50IHRvIHRoZSBidWlsdGluIGhhc2gsIGZvciBjb21wdXRpbmcgdGhlIGhhc2ggb2YgYSByYXRpb25hbAorZXF1aXZhbGVudCB0byB0aGUgYnVpbHQtaW4gaGFzaCwgZm9yIGNvbXB1dGluZyB0aGUgaGFzaCBvZiBhIHJhdGlvbmFsCiBudW1iZXIsIDpjbGFzczpgZmxvYXRgLCBvciA6Y2xhc3M6YGNvbXBsZXhgOjoKIAogCkBAIC03OTYsMTEwICs4MDAsMzUgQEAKIAogLi4gX3R5cGVzc2VxOgogCi1TZXF1ZW5jZSBUeXBlcyAtLS0gOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YHR1cGxlYCwgOmNsYXNzOmByYW5nZWAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU2VxdWVuY2UgVHlwZXMgLS0tIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YHJhbmdlYAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGVyZSBhcmUgc2l4IHNlcXVlbmNlIHR5cGVzOiBzdHJpbmdzLCBieXRlIHNlcXVlbmNlcyAoOmNsYXNzOmBieXRlc2Agb2JqZWN0cyksCi1ieXRlIGFycmF5cyAoOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4gIEZvcgotb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIDpjbGFzczpgZGljdGAgYW5kIDpjbGFzczpgc2V0YCBjbGFzc2VzLCBhbmQKLXRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4KK0FkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YKKzpyZWY6YGJpbmFyeSBkYXRhIDxiaW5hcnlzZXE+YCBhbmQgOnJlZjpgdGV4dCBzdHJpbmdzIDx0ZXh0c2VxPmAgYXJlCitkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLgogCiAKLS4uIGluZGV4OjoKLSAgIG9iamVjdDogc2VxdWVuY2UKLSAgIG9iamVjdDogc3RyaW5nCi0gICBvYmplY3Q6IGJ5dGVzCi0gICBvYmplY3Q6IGJ5dGVhcnJheQotICAgb2JqZWN0OiB0dXBsZQotICAgb2JqZWN0OiBsaXN0Ci0gICBvYmplY3Q6IHJhbmdlCisuLiBfdHlwZXNzZXEtY29tbW9uOgogCi1TdHJpbmdzIGNvbnRhaW4gVW5pY29kZSBjaGFyYWN0ZXJzLiAgVGhlaXIgbGl0ZXJhbHMgYXJlIHdyaXR0ZW4gaW4gc2luZ2xlIG9yCi1kb3VibGUgcXVvdGVzOiBgYCd4eXp6eSdgYCwgYGAiZnJvYm96eiJgYC4gIFNlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dAotc3RyaW5nIGxpdGVyYWxzLiAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZQotYWxzbyBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uLgorQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBjb250YWluIHNpbmdsZSBieXRlcyAtLSB0aGUgZm9ybWVyIGlzIGltbXV0YWJsZQotd2hpbGUgdGhlIGxhdHRlciBpcyBhIG11dGFibGUgc2VxdWVuY2UuCi1CeXRlcyBvYmplY3RzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSB1c2luZyB0aGUKLWNvbnN0cnVjdG9yLCA6ZnVuYzpgYnl0ZXNgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGEgYGBiYGAgcHJlZml4IHdpdGggbm9ybWFsCi1zdHJpbmcgc3ludGF4OiBgYGIneHl6enknYGAuICBUbyBjb25zdHJ1Y3QgYnl0ZSBhcnJheXMsIHVzZSB0aGUKLTpmdW5jOmBieXRlYXJyYXlgIGZ1bmN0aW9uLgorLi4gaW5kZXg6OiBvYmplY3Q6IHNlcXVlbmNlCiAKLVdoaWxlIHN0cmluZyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycyAocmVwcmVzZW50ZWQgYnkgc3RyaW5ncyBvZgotbGVuZ3RoIDEpLCBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiAqaW50ZWdlcnMqIChiZXR3ZWVuIDAKLWFuZCAyNTUpLCByZXByZXNlbnRpbmcgdGhlIEFTQ0lJIHZhbHVlIG9mIHNpbmdsZSBieXRlcy4gIFRoYXQgbWVhbnMgdGhhdCBmb3IKLWEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgIHdpbGwgYmUgYW4gaW50ZWdlciwgd2hpbGUKLWBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3Qgb2YgbGVuZ3RoIDEuICBUaGUKLXJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGUgbGl0ZXJhbCBmb3JtYXQgKGBgYicuLi4nYGApIHNpbmNlIGl0Ci1pcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhbiBlLmcuIGBgYnl0ZXMoWzUwLCAxOSwgMTAwXSlgYC4gIFlvdSBjYW4gYWx3YXlzCi1jb252ZXJ0IGEgYnl0ZXMgb2JqZWN0IGludG8gYSBsaXN0IG9mIGludGVnZXJzIHVzaW5nIGBgbGlzdChiKWBgLgotCi1BbHNvLCB3aGlsZSBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMsIGJ5dGUgc3RyaW5ncyBhbmQgVW5pY29kZSBzdHJpbmdzCi1jb3VsZCBiZSBleGNoYW5nZWQgZm9yIGVhY2ggb3RoZXIgcmF0aGVyIGZyZWVseSAoYmFycmluZyBlbmNvZGluZyBpc3N1ZXMpLAotc3RyaW5ncyBhbmQgYnl0ZXMgYXJlIG5vdyBjb21wbGV0ZWx5IHNlcGFyYXRlIGNvbmNlcHRzLiAgVGhlcmUncyBubyBpbXBsaWNpdAotZW4tL2RlY29kaW5nIGlmIHlvdSBwYXNzIGFuIG9iamVjdCBvZiB0aGUgd3JvbmcgdHlwZS4gIEEgc3RyaW5nIGFsd2F5cwotY29tcGFyZXMgdW5lcXVhbCB0byBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QuCi0KLUxpc3RzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBbYSwKLWIsIGNdYGAuICBUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvciAobm90IHdpdGhpbiBzcXVhcmUKLWJyYWNrZXRzKSwgd2l0aCBvciB3aXRob3V0IGVuY2xvc2luZyBwYXJlbnRoZXNlcywgYnV0IGFuIGVtcHR5IHR1cGxlIG11c3QgaGF2ZQotdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyBgYGEsIGIsIGNgYCBvciBgYCgpYGAuICBBIHNpbmdsZSBpdGVtIHR1cGxlCi1tdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSwgc3VjaCBhcyBgYChkLClgYC4KLQotT2JqZWN0cyBvZiB0eXBlIHJhbmdlIGFyZSBjcmVhdGVkIHVzaW5nIHRoZSA6ZnVuYzpgcmFuZ2VgIGZ1bmN0aW9uLiAgVGhleSBkb24ndAotc3VwcG9ydCBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24sIGFuZCB1c2luZyA6ZnVuYzpgbWluYCBvciA6ZnVuYzpgbWF4YCBvbgotdGhlbSBpcyBpbmVmZmljaWVudC4KLQotTW9zdCBzZXF1ZW5jZSB0eXBlcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy4gIFRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAKLW9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZSBjb21wYXJpc29uIG9wZXJhdGlvbnMuICBUaGUgYGArYGAgYW5kCi1gYCpgYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpYyBvcGVyYXRpb25zLgotWzNdXyBBZGRpdGlvbmFsIG1ldGhvZHMgYXJlIHByb3ZpZGVkIGZvciA6cmVmOmB0eXBlc3NlcS1tdXRhYmxlYC4KK1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlIHR5cGVzLAorYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWAgQUJDIGlzCitwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24KK2N1c3RvbSBzZXF1ZW5jZSB0eXBlcy4KIAogVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5CiAob3BlcmF0aW9ucyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSkuICBJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqCi1hcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGU7ICpuKiwgKmkqLCAqaiogYW5kICprKiBhcmUgaW50ZWdlcnMuCithcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgKmkqLCAqaiogYW5kICprKiBhcmUgaW50ZWdlcnMgYW5kICp4KiBpcworYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouCiAKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgT3BlcmF0aW9uICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKLSs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKLXwgYGB4IGluIHNgYCAgICAgICB8IGBgVHJ1ZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICB8IFwoMSkgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGB4IG5vdCBpbiBzYGAgICB8IGBgRmFsc2VgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyB8IFwoMSkgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzICsgdGBgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgICB8IFwoNikgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8ICp0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzICogbiwgbiAqIHNgYCB8ICpuKiBzaGFsbG93IGNvcGllcyBvZiAqcyogICAgICB8IFwoMikgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2ldYGAgICAgICAgICB8ICppKlwgdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICB8IFwoMykgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2k6al1gYCAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg0KSAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2k6ajprXWBgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg1KSAgIHwKLXwgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBsZW4ocylgYCAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBtaW4ocylgYCAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBtYXgocylgYCAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzLmluZGV4KGkpYGAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2UgICB8ICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IG9mICppKiBpbiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzLmNvdW50KGkpYGAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICB8ICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8ICppKiBpbiAqcyogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLQotU2VxdWVuY2UgdHlwZXMgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZCBsaXN0cyBhcmUKLWNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0Ci10byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZQotb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUKLTpyZWY6YGNvbXBhcmlzb25zYCBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLikKK1RoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlCitjb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSBgYCtgYCAoY29uY2F0ZW5hdGlvbikgYW5kIGBgKmBgIChyZXBldGl0aW9uKQorb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4KIAogLi4gaW5kZXg6OgogICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBzZXF1ZW5jZTsgdHlwZXMKQEAgLTkxMiwxOCArODQxLDY3IEBACiAgICBwYWlyOiBzbGljZTsgb3BlcmF0aW9uCiAgICBvcGVyYXRvcjogaW4KICAgIG9wZXJhdG9yOiBub3QgaW4KKyAgIHNpbmdsZTogY291bnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBpbmRleCgpIChzZXF1ZW5jZSBtZXRob2QpCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKK3wgYGB4IGluIHNgYCAgICAgICAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgIHwgXCgxKSAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBGYWxzZWBgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGB4IG5vdCBpbiBzYGAgICAgICAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzIHwgXCgxKSAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBUcnVlYGAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzICsgdGBgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAgIHwgKDYpKDcpICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzICogbmBgIG9yICAgICAgICAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgIHwgKDIpKDcpICAgfAorfCBgYG4gKiBzYGAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzW2ldYGAgICAgICAgICAgICAgICAgIHwgKmkqXCB0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgIHwgXCgzKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg0KSAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHNbaTpqOmtdYGAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAoMykoNSkgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYGxlbihzKWBgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBtaW4ocylgYCAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgbWF4KHMpYGAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlICAgfCBcKDgpICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyICAgICB8ICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKXwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgcy5jb3VudCh4KWBgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICB8ICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKK1NlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsIHR1cGxlcworYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmcgY29ycmVzcG9uZGluZyBlbGVtZW50cy4KK1RoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlCit0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwKK2RldGFpbHMgc2VlIDpyZWY6YGNvbXBhcmlzb25zYCBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLikKIAogTm90ZXM6CiAKICgxKQotICAgV2hlbiAqcyogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgYWN0IGxpa2UgYQotICAgc3Vic3RyaW5nIHRlc3QuCisgICBXaGlsZSB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3Igc2ltcGxlCisgICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgc2VxdWVuY2VzCisgICAoc3VjaCBhcyA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWApIGFsc28gdXNlCisgICB0aGVtIGZvciBzdWJzZXF1ZW5jZSB0ZXN0aW5nOjoKKworICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiCisgICAgICBUcnVlCiAKICgyKQogICAgVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gYGAwYGAgYXJlIHRyZWF0ZWQgYXMgYGAwYGAgKHdoaWNoIHlpZWxkcyBhbiBlbXB0eQogICAgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSBhbHNvIHRoYXQgdGhlIGNvcGllcyBhcmUgc2hhbGxvdzsKICAgIG5lc3RlZCBzdHJ1Y3R1cmVzIGFyZSBub3QgY29waWVkLiAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsKLSAgIGNvbnNpZGVyOgorICAgY29uc2lkZXI6OgogCiAgICAgICA+Pj4gbGlzdHMgPSBbW11dICogMwogICAgICAgPj4+IGxpc3RzCkBAIC05MzUsNyArOTEzLDcgQEAKICAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgYGBbW11dYGAgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmcgYW4gZW1wdHkKICAgIGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiBgYFtbXV0gKiAzYGAgYXJlIChwb2ludGVycyB0bykgdGhpcyBzaW5nbGUgZW1wdHkKICAgIGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZiBgYGxpc3RzYGAgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4KLSAgIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZiBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6CisgICBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2YgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OjoKIAogICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXQogICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKQpAQCAtOTY2LDMzICs5NDQsNDc2IEBACiAgICBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC4KIAogKDYpCi0gICBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzdHJpbmdzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC4gIFRoaXMgbWVhbnMKLSAgIHRoYXQgYnVpbGRpbmcgdXAgYSBzdHJpbmcgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMKLSAgIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc3RyaW5nIGxlbmd0aC4gIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsCi0gICB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6CisgICBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXcgb2JqZWN0LiAgVGhpcworICAgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkIGNvbmNhdGVuYXRpb24gd2lsbCBoYXZlIGEKKyAgIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsIHNlcXVlbmNlIGxlbmd0aC4gIFRvIGdldCBhIGxpbmVhcgorICAgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6CiAKICAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YHN0cmAgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kIHVzZQotICAgICA6bWV0aDpgc3RyLmpvaW5gIGF0IHRoZSBlbmQ7CisgICAgIDptZXRoOmBzdHIuam9pbmAgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgOmNsYXNzOmBpby5TdHJpbmdJT2AKKyAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlCiAKICAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2UKLSAgICAgOm1ldGg6YGJ5dGVzLmpvaW5gLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlIGNvbmNhdGVuYXRpb24gd2l0aCBhCi0gICAgIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QuICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBhcmUgbXV0YWJsZSBhbmQKLSAgICAgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtLgorICAgICA6bWV0aDpgYnl0ZXMuam9pbmAgb3IgOmNsYXNzOmBpby5CeXRlc0lPYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZQorICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LiAgOmNsYXNzOmBieXRlYXJyYXlgCisgICAgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbQogCisgICAqIGlmIGNvbmNhdGVuYXRpbmcgOmNsYXNzOmB0dXBsZWAgb2JqZWN0cywgZXh0ZW5kIGEgOmNsYXNzOmBsaXN0YCBpbnN0ZWFkCisKKyAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgZG9jdW1lbnRhdGlvbgorCisKKyg3KQorICBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzIDpjbGFzczpgcmFuZ2VgKSBvbmx5IHN1cHBvcnQgaXRlbSBzZXF1ZW5jZXMKKyAgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb24ndCBzdXBwb3J0IHNlcXVlbmNlCisgIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi4KKworKDgpCisgICBgYGluZGV4YGAgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouCisgICBXaGVuIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3cKKyAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZSBleHRyYQorICAgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyBgYHNbaTpqXS5pbmRleCh4KWBgLCBvbmx5CisgICB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nIHJlbGF0aXZlIHRvCisgICB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGUgc2xpY2UuCisKKworLi4gX3R5cGVzc2VxLWltbXV0YWJsZToKKworSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgdHJpcGxlOiBpbW11dGFibGU7IHNlcXVlbmNlOyB0eXBlcworICAgb2JqZWN0OiB0dXBsZQorICAgYnVpbHRpbjogaGFzaAorCitUaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5IGltcGxlbWVudCB0aGF0IGlzCitub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzIHN1cHBvcnQgZm9yIHRoZSA6ZnVuYzpgaGFzaGAKK2J1aWx0LWluLgorCitUaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgOmNsYXNzOmB0dXBsZWAgaW5zdGFuY2VzLCB0bworYmUgdXNlZCBhcyA6Y2xhc3M6YGRpY3RgIGtleXMgYW5kIHN0b3JlZCBpbiA6Y2xhc3M6YHNldGAgYW5kIDpjbGFzczpgZnJvemVuc2V0YAoraW5zdGFuY2VzLgorCitBdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZSB2YWx1ZXMgd2lsbAorcmVzdWx0IGluIDpleGM6YFR5cGVFcnJvcmAuCisKKworLi4gX3R5cGVzc2VxLW11dGFibGU6CisKK011dGFibGUgU2VxdWVuY2UgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgdHJpcGxlOiBtdXRhYmxlOyBzZXF1ZW5jZTsgdHlwZXMKKyAgIG9iamVjdDogbGlzdAorICAgb2JqZWN0OiBieXRlYXJyYXkKKworVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzLgorVGhlIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2UgaXQKK2Vhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLgorCitJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogaXMgYW55CitpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUKK2FuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCA6Y2xhc3M6YGJ5dGVhcnJheWAgb25seQorYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS4KKworCisuLiBpbmRleDo6CisgICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcworICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBsaXN0OyB0eXBlCisgICBwYWlyOiBzdWJzY3JpcHQ7IGFzc2lnbm1lbnQKKyAgIHBhaXI6IHNsaWNlOyBhc3NpZ25tZW50CisgICBzdGF0ZW1lbnQ6IGRlbAorICAgc2luZ2xlOiBhcHBlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBjbGVhcigpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGNvcHkoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBleHRlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBpbnNlcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBwb3AoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiByZW1vdmUoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiByZXZlcnNlKCkgKHNlcXVlbmNlIG1ldGhvZCkKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09KworfCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5IHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpcyByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCAgIHwgXCgxKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmUgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tsZW4ocyk6bGVuKHMpXSA9IFt4XWBgKSAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tIGBgc2BgICAgfCBcKDUpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgZGVsIHNbOl1gYCkgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mIGBgc2BgfCBcKDUpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgc1s6XWBgKSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbnRlbnRzIG9mICp0KiAoc2FtZSBhcyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gdGBgKSAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbaTppXSA9IFt4XWBgKSAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgIHwgXCgyKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqIHwgXCgzKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSBgYHNbaV0gPT0geGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgIHwgXCg0KSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKK05vdGVzOgorCisoMSkKKyAgICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuCisKKygyKQorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGFzdAorICAgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC4KKworKDMpCisgICBgYHJlbW92ZWBgIHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLgorCisoNCkKKyAgIFRoZSA6bWV0aDpgcmV2ZXJzZWAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZgorICAgc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzIGJ5CisgICBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS4KKworKDUpCisgICA6bWV0aDpgY2xlYXJgIGFuZCA6bWV0aDpgIWNvcHlgIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUKKyAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzbGljaW5nIG9wZXJhdGlvbnMKKyAgIChzdWNoIGFzIDpjbGFzczpgZGljdGAgYW5kIDpjbGFzczpgc2V0YCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICA6bWV0aDpgY2xlYXJgIGFuZCA6bWV0aDpgIWNvcHlgIG1ldGhvZHMuCisKKworLi4gX3R5cGVzc2VxLWxpc3Q6CisKK0xpc3RzCistLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogbGlzdAorCitMaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mCitob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCB2YXJ5IGJ5CithcHBsaWNhdGlvbikuCisKKy4uIGNsYXNzOjogbGlzdChbaXRlcmFibGVdKQorCisgICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOgorCisgICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiBgYFtdYGAKKyAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYFthXWBgLCBgYFthLCBiLCBjXWBgCisgICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiBgYFt4IGZvciB4IGluIGl0ZXJhYmxlXWBgCisgICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiBgYGxpc3QoKWBgIG9yIGBgbGlzdChpdGVyYWJsZSlgYAorCisgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lCisgICBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYQorICAgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqCisgICBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kIHJldHVybmVkLCBzaW1pbGFyIHRvIGBgaXRlcmFibGVbOl1gYC4KKyAgIEZvciBleGFtcGxlLCBgYGxpc3QoJ2FiYycpYGAgcmV0dXJucyBgYFsnYScsICdiJywgJ2MnXWBgIGFuZAorICAgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSwgMiwgM11gYC4KKyAgIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSBsaXN0LCBgYFtdYGAuCisKKworICAgTWFueSBvdGhlciBvcGVyYXRpb25zIGFsc28gcHJvZHVjZSBsaXN0cywgaW5jbHVkaW5nIHRoZSA6ZnVuYzpgc29ydGVkYAorICAgYnVpbHQtaW4uCisKKyAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgYW5kCisgICA6cmVmOmBtdXRhYmxlIDx0eXBlc3NlcS1tdXRhYmxlPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZQorICAgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBsaXN0LnNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSkKKworICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgYGA8YGAgY29tcGFyaXNvbnMKKyAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb24gb3BlcmF0aW9ucworICAgICAgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGUgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0CisgICAgICBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuCisKKyAgICAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCBhCisgICAgICBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgZXhhbXBsZSwgYGBrZXk9c3RyLmxvd2VyYGApLgorICAgICAgVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kCisgICAgICB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYAorICAgICAgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZSBzb3J0ZWQgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlCisgICAgICBrZXkgdmFsdWUuCisKKyAgICAgIFRoZSA6ZnVuYzpgZnVuY3Rvb2xzLmNtcF90b19rZXlgIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYSAyLngKKyAgICAgIHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uCisKKyAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3QgZWxlbWVudHMKKyAgICAgIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuCisKKyAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuCisgICAgICBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlCisgICAgICBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2UgOmZ1bmM6YHNvcnRlZGAgdG8KKyAgICAgIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuCisKKyAgICAgIFRoZSA6bWV0aDpgc29ydGAgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0IGlzIHN0YWJsZSBpZiBpdAorICAgICAgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwKKyAgICAgIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yIHNvcnRpbmcgaW4gbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieQorICAgICAgZGVwYXJ0bWVudCwgdGhlbiBieSBzYWxhcnkgZ3JhZGUpLgorCisgICAgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgICAgIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4KKyAgICAgICAgIGluc3BlY3QsIHRoZSBsaXN0IGlzIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUKKyAgICAgICAgIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgaXQgY2FuCisgICAgICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuCisKKworLi4gX3R5cGVzc2VxLXR1cGxlOgorCitUdXBsZXMKKy0tLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogdHVwbGUKKworVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZgoraGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGUgOmZ1bmM6YGVudW1lcmF0ZWAKK2J1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZgoraG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmcgc3RvcmFnZSBpbiBhIDpjbGFzczpgc2V0YCBvcgorOmNsYXNzOmBkaWN0YCBpbnN0YW5jZSkuCisKKy4uIGNsYXNzOjogdHVwbGUoW2l0ZXJhYmxlXSkKKworICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOgorCisgICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiBgYCgpYGAKKyAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6IGBgYSxgYCBvciBgYChhLClgYAorICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYGEsIGIsIGNgYCBvciBgYChhLCBiLCBjKWBgCisgICAqIFVzaW5nIHRoZSA6ZnVuYzpgdHVwbGVgIGJ1aWx0LWluOiBgYHR1cGxlKClgYCBvciBgYHR1cGxlKGl0ZXJhYmxlKWBgCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lCisgICBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYQorICAgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqCisgICBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsCisgICBgYHR1cGxlKCdhYmMnKWBgIHJldHVybnMgYGAoJ2EnLCAnYicsICdjJylgYCBhbmQKKyAgIGBgdHVwbGUoIFsxLCAyLCAzXSApYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLgorICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCBgYCgpYGAuCisKKyAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90IHRoZSBwYXJlbnRoZXNlcy4KKyAgIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgZW1wdHkgdHVwbGUgY2FzZSwgb3IKKyAgIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyBhbWJpZ3VpdHkuIEZvciBleGFtcGxlLAorICAgYGBmKGEsIGIsIGMpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLCB3aGlsZQorICAgYGBmKChhLCBiLCBjKSlgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlIHNvbGUgYXJndW1lbnQuCisKKyAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCisgICBvcGVyYXRpb25zLgorCitGb3IgaGV0ZXJvZ2VuZW91cyBjb2xsZWN0aW9ucyBvZiBkYXRhIHdoZXJlIGFjY2VzcyBieSBuYW1lIGlzIGNsZWFyZXIgdGhhbgorYWNjZXNzIGJ5IGluZGV4LCA6ZnVuYzpgY29sbGVjdGlvbnMubmFtZWR0dXBsZWAgbWF5IGJlIGEgbW9yZSBhcHByb3ByaWF0ZQorY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LgorCisKKy4uIF90eXBlc3NlcS1yYW5nZToKKworUmFuZ2VzCistLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IHJhbmdlCisKK1RoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzCitjb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluIDprZXl3b3JkOmBmb3JgCitsb29wcy4KKworLi4gY2xhc3M6OiByYW5nZShzdG9wKQorICAgICAgICAgICByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKQorCisgICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzIChlaXRoZXIgYnVpbHQtaW4KKyAgIDpjbGFzczpgaW50YCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYCBzcGVjaWFsCisgICBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDFgYC4KKyAgIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLgorICAgSWYgKnN0ZXAqIGlzIHplcm8sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZCBieSB0aGUKKyAgIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZAorICAgYGByW2ldIDwgc3RvcGBgLgorCisgICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsIGRldGVybWluZWQgYnkKKyAgIHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGUgY29uc3RyYWludHMgYXJlIGBgaSA+PSAwYGAKKyAgIGFuZCBgYHJbaV0gPiBzdG9wYGAuCisKKyAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVhbnQgdGhlIHZhbHVlCisgICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlIGludGVycHJldGVkCisgICBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnkgdGhlIHBvc2l0aXZlCisgICBpbmRpY2VzLgorCisgICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gOmRhdGE6YHN5cy5tYXhzaXplYCBhcmUKKyAgIHBlcm1pdHRlZCBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyA6ZnVuYzpgbGVuYCkgbWF5IHJhaXNlCisgICA6ZXhjOmBPdmVyZmxvd0Vycm9yYC4KKworICAgUmFuZ2UgZXhhbXBsZXM6OgorCisgICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpCisgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDExKSkKKyAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSkKKyAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAyNV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSkKKyAgICAgIFswLCAzLCA2LCA5XQorICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgLTEwLCAtMSkpCisgICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDApKQorICAgICAgW10KKyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKQorICAgICAgW10KKworICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucworICAgZXhjZXB0IGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHMgY2FuCisgICBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmQgcmVwZXRpdGlvbiBhbmQKKyAgIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS4KKworICAgLi4gZGF0YTogc3RhcnQKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RhcnQqIHBhcmFtZXRlciAob3IgYGAwYGAgaWYgdGhlIHBhcmFtZXRlciB3YXMKKyAgICAgIG5vdCBzdXBwbGllZCkKKworICAgLi4gZGF0YTogc3RvcAorCisgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXIKKworICAgLi4gZGF0YTogc3RlcAorCisgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yIGBgMWBgIGlmIHRoZSBwYXJhbWV0ZXIgd2FzCisgICAgICBub3Qgc3VwcGxpZWQpCisKK1RoZSBhZHZhbnRhZ2Ugb2YgdGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgOmNsYXNzOmBsaXN0YCBvcgorOmNsYXNzOmB0dXBsZWAgaXMgdGhhdCBhIDpjbGFzczpgcmFuZ2VgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lCisoc21hbGwpIGFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQKK29ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWwKK2l0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS4KKworUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIDpjbGFzczpgY29sbGVjdGlvbnMuU2VxdWVuY2VgIEFCQywgYW5kIHByb3ZpZGUKK2ZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLCBzbGljaW5nIGFuZAorc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlIDpyZWY6YHR5cGVzc2VxYCk6CisKKyAgID4+PiByID0gcmFuZ2UoMCwgMjAsIDIpCisgICA+Pj4gcgorICAgcmFuZ2UoMCwgMjAsIDIpCisgICA+Pj4gMTEgaW4gcgorICAgRmFsc2UKKyAgID4+PiAxMCBpbiByCisgICBUcnVlCisgICA+Pj4gci5pbmRleCgxMCkKKyAgIDUKKyAgID4+PiByWzVdCisgICAxMAorICAgPj4+IHJbOjVdCisgICByYW5nZSgwLCAxMCwgMikKKyAgID4+PiByWy0xXQorICAgMTgKKworVGVzdGluZyByYW5nZSBvYmplY3RzIGZvciBlcXVhbGl0eSB3aXRoIGBgPT1gYCBhbmQgYGAhPWBgIGNvbXBhcmVzCit0aGVtIGFzIHNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmCit0aGV5IHJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZQorb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHN0YXJ0YCwKKzphdHRyOmBzdG9wYCBhbmQgOmF0dHI6YHN0ZXBgIGF0dHJpYnV0ZXMsIGZvciBleGFtcGxlIGBgcmFuZ2UoMCkgPT0KK3JhbmdlKDIsIDEsIDMpYGAgb3IgYGByYW5nZSgwLCAzLCAyKSA9PSByYW5nZSgwLCA0LCAyKWBgLikKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgIEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLgorICAgU3VwcG9ydCBzbGljaW5nIGFuZCBuZWdhdGl2ZSBpbmRpY2VzLgorICAgVGVzdCA6Y2xhc3M6YGludGAgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudCB0aW1lIGluc3RlYWQgb2YKKyAgIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0cyBiYXNlZCBvbiB0aGUKKyAgIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KKyAgIG9iamVjdCBpZGVudGl0eSkuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgVGhlIDphdHRyOmBzdGFydGAsIDphdHRyOmBzdG9wYCBhbmQgOmF0dHI6YHN0ZXBgIGF0dHJpYnV0ZXMuCisKKworLi4gX3RleHRzZXE6CisKK1RleHQgU2VxdWVuY2UgVHlwZSAtLS0gOmNsYXNzOmBzdHJgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBpbmRleDo6CisgICBvYmplY3Q6IHN0cmluZworICAgb2JqZWN0OiBieXRlcworICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogaW8uU3RyaW5nSU8KKworCitUZXh0dWFsIGRhdGEgaW4gUHl0aG9uIGlzIGhhbmRsZWQgd2l0aCBgYHN0cmBgIG9iamVjdHMsIHdoaWNoIGFyZSBpbW11dGFibGUKKzpyZWY6YHNlcXVlbmNlcyA8dHlwZXNzZXE+YCBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLiAgU3RyaW5nIGxpdGVyYWxzIGFyZQord3JpdHRlbiBpbiBhIHZhcmlldHkgb2Ygd2F5czoKKworKiBTaW5nbGUgcXVvdGVzOiBgYCdhbGxvd3MgZW1iZWRkZWQgImRvdWJsZSIgcXVvdGVzJ2BgCisqIERvdWJsZSBxdW90ZXM6IGBgImFsbG93cyBlbWJlZGRlZCAnc2luZ2xlJyBxdW90ZXMiYGAuCisqIFRyaXBsZSBxdW90ZWQ6IGBgJycnVGhyZWUgc2luZ2xlIHF1b3RlcycnJ2BgLCBgYCIiIlRocmVlIGRvdWJsZSBxdW90ZXMiIiJgYAorCitUcmlwbGUgcXVvdGVkIHN0cmluZ3MgbWF5IHNwYW4gbXVsdGlwbGUgbGluZXMgLSBhbGwgYXNzb2NpYXRlZCB3aGl0ZXNwYWNlIHdpbGwKK2JlIGluY2x1ZGVkIGluIHRoZSBzdHJpbmcgbGl0ZXJhbC4KKworU3RyaW5nIGxpdGVyYWxzIHRoYXQgYXJlIHBhcnQgb2YgYSBzaW5nbGUgZXhwcmVzc2lvbiBhbmQgaGF2ZSBvbmx5IHdoaXRlc3BhY2UKK2JldHdlZW4gdGhlbSB3aWxsIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgc2luZ2xlIHN0cmluZyBsaXRlcmFsLiBUaGF0CitpcywgYGAoInNwYW0gIiAiZWdncyIpID09ICJzcGFtIGVnZ3MiYGAuCisKK1NlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dCB0aGUgdmFyaW91cyBmb3JtcyBvZiBzdHJpbmcgbGl0ZXJhbCwKK2luY2x1ZGluZyBzdXBwb3J0ZWQgZXNjYXBlIHNlcXVlbmNlcywgYW5kIHRoZSBgYHJgYCAoInJhdyIpIHByZWZpeCB0aGF0CitkaXNhYmxlcyBtb3N0IGVzY2FwZSBzZXF1ZW5jZSBwcm9jZXNzaW5nLgorCitTdHJpbmdzIG1heSBhbHNvIGJlIGNyZWF0ZWQgZnJvbSBvdGhlciBvYmplY3RzIHdpdGggdGhlIGJ1aWx0LWluCitmdW5jdGlvbiA6ZnVuYzpgc3RyYC4KKworU2luY2UgdGhlcmUgaXMgbm8gc2VwYXJhdGUgImNoYXJhY3RlciIgdHlwZSwgaW5kZXhpbmcgYSBzdHJpbmcgcHJvZHVjZXMKK3N0cmluZ3Mgb2YgbGVuZ3RoIDEuIFRoYXQgaXMsIGZvciBhIG5vbi1lbXB0eSBzdHJpbmcgKnMqLCBgYHNbMF0gPT0gc1swOjFdYGAuCisKK1RoZXJlIGlzIGFsc28gbm8gbXV0YWJsZSBzdHJpbmcgdHlwZSwgYnV0IDptZXRoOmBzdHIuam9pbmAgb3IKKzpjbGFzczpgaW8uU3RyaW5nSU9gIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvbnN0cnVjdCBzdHJpbmdzIGZyb20KK211bHRpcGxlIGZyYWdtZW50cy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMiBzZXJpZXMsIHRoZSBgYHVgYCBwcmVmaXggaXMKKyAgIG9uY2UgYWdhaW4gcGVybWl0dGVkIG9uIHN0cmluZyBsaXRlcmFscy4gSXQgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWVhbmluZworICAgb2Ygc3RyaW5nIGxpdGVyYWxzIGFuZCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aGUgYGByYGAgcHJlZml4LgogCiAuLiBfc3RyaW5nLW1ldGhvZHM6CiAKIFN0cmluZyBNZXRob2RzCiAtLS0tLS0tLS0tLS0tLQogCi0uLiBpbmRleDo6IHBhaXI6IHN0cmluZzsgbWV0aG9kcworLi4gaW5kZXg6OgorICAgcGFpcjogc3RyaW5nOyBtZXRob2RzCisgICBtb2R1bGU6IHJlCiAKLVN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LgorU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCitvcGVyYXRpb25zLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LgogCi1JbiBhZGRpdGlvbiwgUHl0aG9uJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZQotOnJlZjpgdHlwZXNzZXFgIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZQotOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgOm1vZDpgcmVgIG1vZHVsZSBmb3Igc3RyaW5nCi1mdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy4KK1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYSBsYXJnZQorZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgOm1ldGg6YHN0ci5mb3JtYXRgLAorOnJlZjpgZm9ybWF0c3RyaW5nc2AgYW5kIDpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYCkgYW5kIHRoZSBvdGhlciBiYXNlZCBvbiBDCitgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXMgYW5kIGlzCitzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlIGNhc2VzIGl0IGNhbgoraGFuZGxlICg6cmVmOmBvbGQtc3RyaW5nLWZvcm1hdHRpbmdgKS4KKworVGhlIDpyZWY6YHRleHRzZXJ2aWNlc2Agc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnMgYSBudW1iZXIgb2YKK290aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllcyAoaW5jbHVkaW5nIHJlZ3VsYXIKK2V4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgOm1vZDpgcmVgIG1vZHVsZSkuCiAKIC4uIG1ldGhvZDo6IHN0ci5jYXBpdGFsaXplKCkKIApAQCAtMTAwMCw2ICsxNDIxLDIzIEBACiAgICByZXN0IGxvd2VyY2FzZWQuCiAKIAorLi4gbWV0aG9kOjogc3RyLmNhc2Vmb2xkKCkKKworICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmUgdXNlZCBmb3IKKyAgIGNhc2VsZXNzIG1hdGNoaW5nLgorCisgICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZSBpdCBpcworICAgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHRoZSBHZXJtYW4KKyAgIGxvd2VyY2FzZSBsZXR0ZXIgYGAnw58nYGAgaXMgZXF1aXZhbGVudCB0byBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeQorICAgbG93ZXJjYXNlLCA6bWV0aDpgbG93ZXJgIHdvdWxkIGRvIG5vdGhpbmcgdG8gYGAnw58nYGA7IDptZXRoOmBjYXNlZm9sZGAKKyAgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLgorCisgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKQogCiAgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUKQEAgLTEyMDcsNiArMTY0NSw5IEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIGxvd2VyY2FzZS4KIAorICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCiAKIC4uIG1ldGhvZDo6IHN0ci5sc3RyaXAoW2NoYXJzXSkKIApAQCAtMTI3OSw3ICsxNzIwLDcgQEAKICAgIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIGl0c2VsZi4KIAogCi0uLiBtZXRob2Q6OiBzdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZSBkZWxpbWl0ZXIgc3RyaW5nLgogICAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqCkBAIC0xMzAxLDcgKzE3NDIsNyBAQAogICAgICAgJ21pc3Npc3MnCiAKIAotLi4gbWV0aG9kOjogc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlIGRlbGltaXRlcgogICAgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSAodGh1cywKQEAgLTEzNzAsNyArMTgxMSw4IEBACiAuLiBtZXRob2Q6OiBzdHIuc3dhcGNhc2UoKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZAotICAgdmljZSB2ZXJzYS4KKyAgIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0CisgICBgYHMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHNgYC4KIAogCiAuLiBtZXRob2Q6OiBzdHIudGl0bGUoKQpAQCAtMTQyMSw3ICsxODYzLDExIEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0IGJlIGBgRmFsc2VgYCBpZiBgYHNgYAogICAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcKLSAgIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuCisgICBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLAorICAgdGl0bGVjYXNlKS4KKworICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgogCiAKIC4uIG1ldGhvZDo6IHN0ci56ZmlsbCh3aWR0aCkKQEAgLTE0MzQsOCArMTg4MCw4IEBACiAKIC4uIF9vbGQtc3RyaW5nLWZvcm1hdHRpbmc6CiAKLU9sZCBTdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGBwcmludGZgYC1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGZvcm1hdHRpbmcsIHN0cmluZyAoJSkKQEAgLTE0NDcsMjMgKzE4OTMsMTkgQEAKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgaW50ZXJwb2xhdGlvbgogCi0uLiBYWFggaXMgdGhlIG5vdGUgZW5vdWdoPwotCiAuLiBub3RlOjoKIAotICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBhcmUgbW9kZWxsZWQgb24gQydzIHByaW50ZigpCi0gICBzeW50YXguICBUaGV5IG9ubHkgc3VwcG9ydCBmb3JtYXR0aW5nIG9mIGNlcnRhaW4gYnVpbHRpbiB0eXBlcy4gIFRoZQotICAgdXNlIG9mIGEgYmluYXJ5IG9wZXJhdG9yIG1lYW5zIHRoYXQgY2FyZSBtYXkgYmUgbmVlZGVkIGluIG9yZGVyIHRvCi0gICBmb3JtYXQgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgY29ycmVjdGx5LiAgQXMgdGhlIG5ldwotICAgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHN5bnRheCBpcyBtb3JlIGZsZXhpYmxlIGFuZCBoYW5kbGVzIHR1cGxlcyBhbmQKLSAgIGRpY3Rpb25hcmllcyBuYXR1cmFsbHksIGl0IGlzIHJlY29tbWVuZGVkIGZvciBuZXcgY29kZS4gIEhvd2V2ZXIsIHRoZXJlCi0gICBhcmUgbm8gY3VycmVudCBwbGFucyB0byBkZXByZWNhdGUgcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcuCisgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CisgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgVXNpbmcgdGhlIG5ld2VyIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycywgYW5kIGFsc28gcHJvdmlkZXMgYSBnZW5lcmFsbHkgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzIGEgc3RyaW5nKSwgYGAlYGAgY29udmVyc2lvbgogc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLgotVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZSB1c2luZyA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KK1RoZSBlZmZlY3QgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgOmM6ZnVuYzpgc3ByaW50ZmAgaW4gdGhlIEMgbGFuZ3VhZ2UuCiAKIElmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLXR1cGxlCiBvYmplY3QuIFs1XV8gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseSB0aGUgbnVtYmVyIG9mCkBAIC0xNjIxLDIxMSArMjA2MywxNzggQEAKICAgIGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZSB2YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vCiAgICBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLgogCi0uLiBpbmRleDo6Ci0gICBtb2R1bGU6IHN0cmluZwotICAgbW9kdWxlOiByZQogCi1BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXMgOm1vZDpgc3RyaW5nYCBhbmQKLTptb2Q6YHJlYC4KKy4uIF9iaW5hcnlzZXE6CiAKLQotLi4gX3R5cGVzc2VxLXJhbmdlOgotCi1SYW5nZSBUeXBlCi0tLS0tLS0tLS0tCi0KLS4uIGluZGV4Ojogb2JqZWN0OiByYW5nZQotCi1UaGUgOmNsYXNzOmByYW5nZWAgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3IKLWxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIGlzIHRoYXQgYW4gOmNsYXNzOmByYW5nZWAKLW9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIGFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUKLXJhbmdlIGl0IHJlcHJlc2VudHMuCi0KLVJhbmdlIG9iamVjdHMgaGF2ZSByZWxhdGl2ZWx5IGxpdHRsZSBiZWhhdmlvcjogdGhleSBzdXBwb3J0IGluZGV4aW5nLCBjb250YWlucywKLWl0ZXJhdGlvbiwgdGhlIDpmdW5jOmBsZW5gIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0uLiBtZXRob2Q6OiByYW5nZS5jb3VudCh4KQotCi0gICBSZXR1cm4gdGhlIG51bWJlciBvZiAqaSoncyBmb3Igd2hpY2ggYGBzW2ldID09IHhgYC4KLQotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0uLiBtZXRob2Q6OiByYW5nZS5pbmRleCh4KQotCi0gICBSZXR1cm4gdGhlIHNtYWxsZXN0ICppKiBzdWNoIHRoYXQgYGBzW2ldID09IHhgYC4gIFJhaXNlcwotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGluIHRoZSByYW5nZS4KLQotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0uLiBfdHlwZXNzZXEtbXV0YWJsZToKLQotTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQmluYXJ5IFNlcXVlbmNlIFR5cGVzIC0tLSA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YG1lbW9yeXZpZXdgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gaW5kZXg6OgotICAgdHJpcGxlOiBtdXRhYmxlOyBzZXF1ZW5jZTsgdHlwZXMKLSAgIG9iamVjdDogbGlzdAorICAgb2JqZWN0OiBieXRlcwogICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogbWVtb3J5dmlldworICAgbW9kdWxlOiBhcnJheQogCi1MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93IGluLXBsYWNlCi1tb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZW4gYWRkZWQgdG8gdGhlCi1sYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLiAgU3RyaW5ncyBhbmQgdHVwbGVzIGFyZQotaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90IGJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlCi1mb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4KLWFyYml0cmFyeSBvYmplY3QpLgorVGhlIGNvcmUgYnVpbHQtaW4gdHlwZXMgZm9yIG1hbmlwdWxhdGluZyBiaW5hcnkgZGF0YSBhcmUgOmNsYXNzOmBieXRlc2AgYW5kCis6Y2xhc3M6YGJ5dGVhcnJheWAuIFRoZXkgYXJlIHN1cHBvcnRlZCBieSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHdoaWNoIHVzZXMKK3RoZSBidWZmZXIgcHJvdG9jb2wgdG8gYWNjZXNzIHRoZSBtZW1vcnkgb2Ygb3RoZXIgYmluYXJ5IG9iamVjdHMgd2l0aG91dAorbmVlZGluZyB0byBtYWtlIGEgY29weS4KIAotTm90ZSB0aGF0IHdoaWxlIGxpc3RzIGFsbG93IHRoZWlyIGl0ZW1zIHRvIGJlIG9mIGFueSB0eXBlLCBieXRlYXJyYXkgb2JqZWN0Ci0iaXRlbXMiIGFyZSBhbGwgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni4KK1RoZSA6bW9kOmBhcnJheWAgbW9kdWxlIHN1cHBvcnRzIGVmZmljaWVudCBzdG9yYWdlIG9mIGJhc2ljIGRhdGEgdHlwZXMgbGlrZQorMzItYml0IGludGVnZXJzIGFuZCBJRUVFNzU0IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgdmFsdWVzLgogCi0uLiBpbmRleDo6Ci0gICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcwotICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBsaXN0OyB0eXBlCi0gICBwYWlyOiBzdWJzY3JpcHQ7IGFzc2lnbm1lbnQKLSAgIHBhaXI6IHNsaWNlOyBhc3NpZ25tZW50Ci0gICBzdGF0ZW1lbnQ6IGRlbAotICAgc2luZ2xlOiBhcHBlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBleHRlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBjb3VudCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGluZGV4KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogaW5zZXJ0KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcG9wKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcmVtb3ZlKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcmV2ZXJzZSgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IHNvcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorLi4gX3R5cGVieXRlczoKIAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09KwotfCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5IHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpcyByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCAgIHwgXCgxKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmUgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuZXh0ZW5kKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgIHwgXCgyKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICAgIHwgcmV0dXJuIG51bWJlciBvZiAqaSoncyBmb3IgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCBgYHNbaV0gPT0geGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiBzdWNoIHRoYXQgIHwgXCgzKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNba10gPT0geGBgIGFuZCBgYGkgPD0gayA8ICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGpgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5pbnNlcnQoaSwgeClgYCAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgfCBcKDQpICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgIHwgXCg1KSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgIHwgXCgzKSAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLnJldmVyc2UoKWBgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICB8IFwoNikgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLnNvcnQoW2tleVssIHJldmVyc2VdXSlgYCB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSB8ICg2KSwgKDcpLCAoOCkgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCitCeXRlcworLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IGJ5dGVzCisKK0J5dGVzIG9iamVjdHMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMgb2Ygc2luZ2xlIGJ5dGVzLiBTaW5jZSBtYW55IG1ham9yCitiaW5hcnkgcHJvdG9jb2xzIGFyZSBiYXNlZCBvbiB0aGUgQVNDSUkgdGV4dCBlbmNvZGluZywgYnl0ZXMgb2JqZWN0cyBvZmZlcgorc2V2ZXJhbCBtZXRob2RzIHRoYXQgYXJlIG9ubHkgdmFsaWQgd2hlbiB3b3JraW5nIHdpdGggQVNDSUkgY29tcGF0aWJsZQorZGF0YSBhbmQgYXJlIGNsb3NlbHkgcmVsYXRlZCB0byBzdHJpbmcgb2JqZWN0cyBpbiBhIHZhcmlldHkgb2Ygb3RoZXIgd2F5cy4KKworRmlyc3RseSwgdGhlIHN5bnRheCBmb3IgYnl0ZXMgbGl0ZXJhbHMgaXMgbGFyZ2VseSB0aGUgc2FtZSBhcyB0aGF0IGZvciBzdHJpbmcKK2xpdGVyYWxzLCBleGNlcHQgdGhhdCBhIGBgYmBgIHByZWZpeCBpcyBhZGRlZDoKKworKiBTaW5nbGUgcXVvdGVzOiBgYGInc3RpbGwgYWxsb3dzIGVtYmVkZGVkICJkb3VibGUiIHF1b3RlcydgYAorKiBEb3VibGUgcXVvdGVzOiBgYGIic3RpbGwgYWxsb3dzIGVtYmVkZGVkICdzaW5nbGUnIHF1b3RlcyJgYC4KKyogVHJpcGxlIHF1b3RlZDogYGBiJycnMyBzaW5nbGUgcXVvdGVzJycnYGAsIGBgYiIiIjMgZG91YmxlIHF1b3RlcyIiImBgCisKK09ubHkgQVNDSUkgY2hhcmFjdGVycyBhcmUgcGVybWl0dGVkIGluIGJ5dGVzIGxpdGVyYWxzIChyZWdhcmRsZXNzIG9mIHRoZQorZGVjbGFyZWQgc291cmNlIGNvZGUgZW5jb2RpbmcpLiBBbnkgYmluYXJ5IHZhbHVlcyBvdmVyIDEyNyBtdXN0IGJlIGVudGVyZWQKK2ludG8gYnl0ZXMgbGl0ZXJhbHMgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGVzY2FwZSBzZXF1ZW5jZS4KKworQXMgd2l0aCBzdHJpbmcgbGl0ZXJhbHMsIGJ5dGVzIGxpdGVyYWxzIG1heSBhbHNvIHVzZSBhIGBgcmBgIHByZWZpeCB0byBkaXNhYmxlCitwcm9jZXNzaW5nIG9mIGVzY2FwZSBzZXF1ZW5jZXMuIFNlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dCB0aGUgdmFyaW91cworZm9ybXMgb2YgYnl0ZXMgbGl0ZXJhbCwgaW5jbHVkaW5nIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVuY2VzLgorCitXaGlsZSBieXRlcyBsaXRlcmFscyBhbmQgcmVwcmVzZW50YXRpb25zIGFyZSBiYXNlZCBvbiBBU0NJSSB0ZXh0LCBieXRlcworb2JqZWN0cyBhY3R1YWxseSBiZWhhdmUgbGlrZSBpbW11dGFibGUgc2VxdWVuY2VzIG9mIGludGVnZXJzLCB3aXRoIGVhY2gKK3ZhbHVlIGluIHRoZSBzZXF1ZW5jZSByZXN0cmljdGVkIHN1Y2ggdGhhdCBgYDAgPD0geCA8IDI1NmBgIChhdHRlbXB0cyB0bwordmlvbGF0ZSB0aGlzIHJlc3RyaWN0aW9uIHdpbGwgdHJpZ2dlciA6ZXhjOmBWYWx1ZUVycm9yYC4gVGhpcyBpcyBkb25lCitkZWxpYmVyYXRlbHkgdG8gZW1waGFzaXNlIHRoYXQgd2hpbGUgbWFueSBiaW5hcnkgZm9ybWF0cyBpbmNsdWRlIEFTQ0lJIGJhc2VkCitlbGVtZW50cyBhbmQgY2FuIGJlIHVzZWZ1bGx5IG1hbmlwdWxhdGVkIHdpdGggc29tZSB0ZXh0LW9yaWVudGVkIGFsZ29yaXRobXMsCit0aGlzIGlzIG5vdCBnZW5lcmFsbHkgdGhlIGNhc2UgZm9yIGFyYml0cmFyeSBiaW5hcnkgZGF0YSAoYmxpbmRseSBhcHBseWluZwordGV4dCBwcm9jZXNzaW5nIGFsZ29yaXRobXMgdG8gYmluYXJ5IGRhdGEgZm9ybWF0cyB0aGF0IGFyZSBub3QgQVNDSUkKK2NvbXBhdGlibGUgd2lsbCB1c3VhbGx5IGxlYWQgdG8gZGF0YSBjb3JydXB0aW9uKS4KKworSW4gYWRkaXRpb24gdG8gdGhlIGxpdGVyYWwgZm9ybXMsIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGNyZWF0ZWQgaW4gYSBudW1iZXIgb2YKK290aGVyIHdheXM6CisKKyogQSB6ZXJvLWZpbGxlZCBieXRlcyBvYmplY3Qgb2YgYSBzcGVjaWZpZWQgbGVuZ3RoOiBgYGJ5dGVzKDEwKWBgCisqIEZyb20gYW4gaXRlcmFibGUgb2YgaW50ZWdlcnM6IGBgYnl0ZXMocmFuZ2UoMjApKWBgCisqIENvcHlpbmcgZXhpc3RpbmcgYmluYXJ5IGRhdGEgdmlhIHRoZSBidWZmZXIgcHJvdG9jb2w6ICBgYGJ5dGVzKG9iailgYAorCitBbHNvIHNlZSB0aGUgOnJlZjpgYnl0ZXMgPGZ1bmMtYnl0ZXM+YCBidWlsdC1pbi4KKworU2luY2UgYnl0ZXMgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGludGVnZXJzLCBmb3IgYSBieXRlcyBvYmplY3QgKmIqLAorYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcyBvYmplY3Qgb2YKK2xlbmd0aCAxLiAgKFRoaXMgY29udHJhc3RzIHdpdGggdGV4dCBzdHJpbmdzLCB3aGVyZSBib3RoIGluZGV4aW5nIGFuZAorc2xpY2luZyB3aWxsIHByb2R1Y2UgYSBzdHJpbmcgb2YgbGVuZ3RoIDEpCisKK1RoZSByZXByZXNlbnRhdGlvbiBvZiBieXRlcyBvYmplY3RzIHVzZXMgdGhlIGxpdGVyYWwgZm9ybWF0IChgYGInLi4uJ2BgKQorc2luY2UgaXQgaXMgb2Z0ZW4gbW9yZSB1c2VmdWwgdGhhbiBlLmcuIGBgYnl0ZXMoWzQ2LCA0NiwgNDZdKWBgLiAgWW91IGNhbgorYWx3YXlzIGNvbnZlcnQgYSBieXRlcyBvYmplY3QgaW50byBhIGxpc3Qgb2YgaW50ZWdlcnMgdXNpbmcgYGBsaXN0KGIpYGAuCiAKIAotTm90ZXM6Ci0KLSgxKQotICAgKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy4KLQotKDIpCi0gICAqeCogY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuCi0KLSgzKQotICAgUmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcwotICAgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSA6bWV0aDpgaW5kZXhgIG1ldGhvZCwgdGhlIHNlcXVlbmNlCi0gICBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZAotICAgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuCi0KLSg0KQotICAgV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIHRoZSA6bWV0aDpgaW5zZXJ0YAotICAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsCi0gICBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvciBzbGljZSBpbmRpY2VzLgotCi0oNSkKLSAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gYGAtMWBgLCBzbyB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxhc3QKLSAgIGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuCi0KLSg2KQotICAgVGhlIDptZXRoOmBzb3J0YCBhbmQgOm1ldGg6YHJldmVyc2VgIG1ldGhvZHMgbW9kaWZ5IHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IKLSAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiBzb3J0aW5nIG9yIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHlvdQotICAgdGhhdCB0aGV5IG9wZXJhdGUgYnkgc2lkZSBlZmZlY3QsIHRoZXkgZG9uJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQKLSAgIHNlcXVlbmNlLgotCi0oNykKLSAgIFRoZSA6bWV0aDpgc29ydGAgbWV0aG9kIHRha2VzIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgY29udHJvbGxpbmcgdGhlCi0gICBjb21wYXJpc29ucy4gIEVhY2ggbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgotCi0gICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3QgYSBjb21wYXJpc29uCi0gICBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudDogYGBrZXk9c3RyLmxvd2VyYGAuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYE5vbmVgYC4KLSAgIFVzZSA6ZnVuYzpgZnVuY3Rvb2xzLmNtcF90b19rZXlgIHRvIGNvbnZlcnQgYW4KLSAgIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLgorLi4gbm90ZTo6CisgICBGb3IgUHl0aG9uIDIueCB1c2VyczogSW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzLCBhIHZhcmlldHkgb2YgaW1wbGljaXQKKyAgIGNvbnZlcnNpb25zIGJldHdlZW4gOC1iaXQgc3RyaW5ncyAodGhlIGNsb3Nlc3QgdGhpbmcgMi54IG9mZmVycyB0byBhCisgICBidWlsdC1pbiBiaW5hcnkgZGF0YSB0eXBlKSBhbmQgVW5pY29kZSBzdHJpbmdzIHdlcmUgcGVybWl0dGVkLiBUaGlzIHdhcyBhCisgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3b3JrYXJvdW5kIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgUHl0aG9uCisgICBvcmlnaW5hbGx5IG9ubHkgc3VwcG9ydGVkIDgtYml0IHRleHQsIGFuZCBVbmljb2RlIHRleHQgd2FzIGEgbGF0ZXIKKyAgIGFkZGl0aW9uLiBJbiBQeXRob24gMy54LCB0aG9zZSBpbXBsaWNpdCBjb252ZXJzaW9ucyBhcmUgZ29uZSAtIGNvbnZlcnNpb25zCisgICBiZXR3ZWVuIDgtYml0IGJpbmFyeSBkYXRhIGFuZCBVbmljb2RlIHRleHQgbXVzdCBiZSBleHBsaWNpdCwgYW5kIGJ5dGVzIGFuZAorICAgc3RyaW5nIG9iamVjdHMgd2lsbCBhbHdheXMgY29tcGFyZSB1bmVxdWFsLgogCiAKLSAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3QgZWxlbWVudHMgYXJlCi0gICBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuCisuLiBfdHlwZWJ5dGVhcnJheToKIAotICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBCi0gICBzb3J0IGlzIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzCi0gICB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXMgKGZvcgotICAgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuCitCeXRlYXJyYXkgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgLi4gaW1wbC1kZXRhaWw6OgorLi4gaW5kZXg6OiBvYmplY3Q6IGJ5dGVhcnJheQogCi0gICAgICBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLCB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuCi0gICAgICBpbnNwZWN0LCB0aGUgbGlzdCBpcyB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlCi0gICAgICBsaXN0IGFwcGVhciBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGlmIGl0IGNhbgotICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LgorOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMgYXJlIGEgbXV0YWJsZSBjb3VudGVycGFydCB0byA6Y2xhc3M6YGJ5dGVzYAorb2JqZWN0cy4gVGhlcmUgaXMgbm8gZGVkaWNhdGVkIGxpdGVyYWwgc3ludGF4IGZvciBieXRlYXJyYXkgb2JqZWN0cywgaW5zdGVhZAordGhleSBhcmUgYWx3YXlzIGNyZWF0ZWQgYnkgY2FsbGluZyB0aGUgY29uc3RydWN0b3I6CiAKLSg4KQotICAgOm1ldGg6YHNvcnRgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMuCisqIENyZWF0aW5nIGFuIGVtcHR5IGluc3RhbmNlOiBgYGJ5dGVhcnJheSgpYGAKKyogQ3JlYXRpbmcgYSB6ZXJvLWZpbGxlZCBpbnN0YW5jZSB3aXRoIGEgZ2l2ZW4gbGVuZ3RoOiBgYGJ5dGVhcnJheSgxMClgYAorKiBGcm9tIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzOiBgYGJ5dGVhcnJheShyYW5nZSgyMCkpYGAKKyogQ29weWluZyBleGlzdGluZyBiaW5hcnkgZGF0YSB2aWEgdGhlIGJ1ZmZlciBwcm90b2NvbDogIGBgYnl0ZWFycmF5KGInSGkhJylgYAorCitBcyBieXRlYXJyYXkgb2JqZWN0cyBhcmUgbXV0YWJsZSwgdGhleSBzdXBwb3J0IHRoZQorOnJlZjpgbXV0YWJsZSA8dHlwZXNzZXEtbXV0YWJsZT5gIHNlcXVlbmNlIG9wZXJhdGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCitjb21tb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvcGVyYXRpb25zIGRlc2NyaWJlZCBpbiA6cmVmOmBieXRlcy1tZXRob2RzYC4KKworQWxzbyBzZWUgdGhlIDpyZWY6YGJ5dGVhcnJheSA8ZnVuYy1ieXRlYXJyYXk+YCBidWlsdC1pbi4KIAogCiAuLiBfYnl0ZXMtbWV0aG9kczoKIAotQnl0ZXMgYW5kIEJ5dGUgQXJyYXkgTWV0aG9kcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQnl0ZXMgYW5kIEJ5dGVhcnJheSBPcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gaW5kZXg6OiBwYWlyOiBieXRlczsgbWV0aG9kcwogICAgICAgICAgICBwYWlyOiBieXRlYXJyYXk7IG1ldGhvZHMKIAotQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzLCBiZWluZyAic3RyaW5ncyBvZiBieXRlcyIsIGhhdmUgYWxsIG1ldGhvZHMgZm91bmQgb24KLXN0cmluZ3MsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiA6ZnVuYzpgZW5jb2RlYCwgOmZ1bmM6YGZvcm1hdGAgYW5kCi06ZnVuYzpgaXNpZGVudGlmaWVyYCwgd2hpY2ggZG8gbm90IG1ha2Ugc2Vuc2Ugd2l0aCB0aGVzZSB0eXBlcy4gIEZvciBjb252ZXJ0aW5nCi10aGUgb2JqZWN0cyB0byBzdHJpbmdzLCB0aGV5IGhhdmUgYSA6ZnVuYzpgZGVjb2RlYCBtZXRob2QuCitCb3RoIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gCitzZXF1ZW5jZSBvcGVyYXRpb25zLiBUaGV5IGludGVyb3BlcmF0ZSBub3QganVzdCB3aXRoIG9wZXJhbmRzIG9mIHRoZSBzYW1lCit0eXBlLCBidXQgd2l0aCBhbnkgb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlCis6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YC4gRHVlIHRvIHRoaXMgZmxleGliaWxpdHksIHRoZXkgY2FuIGJlCitmcmVlbHkgbWl4ZWQgaW4gb3BlcmF0aW9ucyB3aXRob3V0IGNhdXNpbmcgZXJyb3JzLiBIb3dldmVyLCB0aGUgcmV0dXJuIHR5cGUKK29mIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGUgb3JkZXIgb2Ygb3BlcmFuZHMuCiAKLVdoZXJldmVyIG9uZSBvZiB0aGVzZSBtZXRob2RzIG5lZWRzIHRvIGludGVycHJldCB0aGUgYnl0ZXMgYXMgY2hhcmFjdGVycwotKGUuZy4gdGhlIDpmdW5jOmBpcy4uLmAgbWV0aG9kcyksIHRoZSBBU0NJSSBjaGFyYWN0ZXIgc2V0IGlzIGFzc3VtZWQuCitEdWUgdG8gdGhlIGNvbW1vbiB1c2Ugb2YgQVNDSUkgdGV4dCBhcyB0aGUgYmFzaXMgZm9yIGJpbmFyeSBwcm90b2NvbHMsIGJ5dGVzCithbmQgYnl0ZWFycmF5IG9iamVjdHMgcHJvdmlkZSBhbG1vc3QgYWxsIG1ldGhvZHMgZm91bmQgb24gdGV4dCBzdHJpbmdzLCB3aXRoCit0aGUgZXhjZXB0aW9ucyBvZjoKKworKiA6bWV0aDpgc3RyLmVuY29kZWAgKHdoaWNoIGNvbnZlcnRzIHRleHQgc3RyaW5ncyB0byBieXRlcyBvYmplY3RzKQorKiA6bWV0aDpgc3RyLmZvcm1hdGAgYW5kIDptZXRoOmBzdHIuZm9ybWF0X21hcGAgKHdoaWNoIGFyZSB1c2VkIHRvIGZvcm1hdAorICB0ZXh0IGZvciBkaXNwbGF5IHRvIHVzZXJzKQorKiA6bWV0aDpgc3RyLmlzaWRlbnRpZmllcmAsIDptZXRoOmBzdHIuaXNudW1lcmljYCwgOm1ldGg6YHN0ci5pc2RlY2ltYWxgLAorICA6bWV0aDpgc3RyLmlzcHJpbnRhYmxlYCAod2hpY2ggYXJlIHVzZWQgdG8gY2hlY2sgdmFyaW91cyBwcm9wZXJ0aWVzIG9mCisgIHRleHQgc3RyaW5ncyB3aGljaCBhcmUgbm90IHR5cGljYWxseSBhcHBsaWNhYmxlIHRvIGJpbmFyeSBwcm90b2NvbHMpLgorCitBbGwgb3RoZXIgc3RyaW5nIG1ldGhvZHMgYXJlIHN1cHBvcnRlZCwgYWx0aG91Z2ggc29tZXRpbWVzIHdpdGggc2xpZ2h0CitkaWZmZXJlbmNlcyBpbiBmdW5jdGlvbmFsaXR5IGFuZCBzZW1hbnRpY3MgKGFzIGRlc2NyaWJlZCBiZWxvdykuCiAKIC4uIG5vdGU6OgogCiAgICBUaGUgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgZG9uJ3QgYWNjZXB0IHN0cmluZ3MgYXMgdGhlaXIKICAgIGFyZ3VtZW50cywganVzdCBhcyB0aGUgbWV0aG9kcyBvbiBzdHJpbmdzIGRvbid0IGFjY2VwdCBieXRlcyBhcyB0aGVpcgotICAgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIHlvdSBoYXZlIHRvIHdyaXRlIDo6CisgICBhcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgeW91IGhhdmUgdG8gd3JpdGU6OgogCiAgICAgICBhID0gImFiYyIKICAgICAgIGIgPSBhLnJlcGxhY2UoImEiLCAiZiIpCiAKLSAgIGFuZCA6OgorICAgYW5kOjoKIAogICAgICAgYSA9IGIiYWJjIgogICAgICAgYiA9IGEucmVwbGFjZShiImEiLCBiImYiKQogCitXaGVuZXZlciBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBtZXRob2QgbmVlZHMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhcworY2hhcmFjdGVycyAoZS5nLiB0aGUgOm1ldGg6YGlzLi4uYCBtZXRob2RzLCA6bWV0aDpgc3BsaXRgLCA6bWV0aDpgc3RyaXBgKSwKK3RoZSBBU0NJSSBjaGFyYWN0ZXIgc2V0IGlzIGFzc3VtZWQgKHRleHQgc3RyaW5ncyB1c2UgVW5pY29kZSBzZW1hbnRpY3MpLgorCisuLiBub3RlOjoKKyAgIFVzaW5nIHRoZXNlIEFTQ0lJIGJhc2VkIG1ldGhvZHMgdG8gbWFuaXB1bGF0ZSBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdAorICAgc3RvcmVkIGluIGFuIEFTQ0lJIGJhc2VkIGZvcm1hdCBtYXkgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24uCisKK1RoZSBzZWFyY2ggb3BlcmF0aW9ucyAoOmtleXdvcmQ6YGluYCwgOm1ldGg6YGNvdW50YCwgOm1ldGg6YGZpbmRgLAorOm1ldGg6YGluZGV4YCwgOm1ldGg6YHJmaW5kYCBhbmQgOm1ldGg6YHJpbmRleGApIGFsbCBhY2NlcHQgYm90aCBpbnRlZ2VycworaW4gdGhlIHJhbmdlIDAgdG8gMjU1IChpbmNsdXNpdmUpIGFzIHdlbGwgYXMgYnl0ZXMgYW5kIGJ5dGUgYXJyYXkgc2VxdWVuY2VzLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWxsIG9mIHRoZSBzZWFyY2ggbWV0aG9kcyBhbHNvIGFjY2VwdCBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAwIHRvIDI1NQorICAgKGluY2x1c2l2ZSkgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCisKKworRWFjaCBieXRlcyBhbmQgYnl0ZWFycmF5IGluc3RhbmNlIHByb3ZpZGVzIGEgOm1ldGg6YGRlY29kZWAgY29udmVuaWVuY2UKK21ldGhvZCB0aGF0IGlzIHRoZSBpbnZlcnNlIG9mIDptZXRoOmBzdHIuZW5jb2RlYDoKIAogLi4gbWV0aG9kOjogYnl0ZXMuZGVjb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IikKICAgICAgICAgICAgIGJ5dGVhcnJheS5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKQpAQCAtMTg0MSw4ICsyMjUwLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMuCiAKLQotVGhlIGJ5dGVzIGFuZCBieXRlYXJyYXkgdHlwZXMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNsYXNzIG1ldGhvZDoKK1NpbmNlIDIgaGV4YWRlY2ltYWwgZGlnaXRzIGNvcnJlc3BvbmQgcHJlY2lzZWx5IHRvIGEgc2luZ2xlIGJ5dGUsIGhleGFkZWNpbWFsCitudW1iZXJzIGFyZSBhIGNvbW1vbmx5IHVzZWQgZm9ybWF0IGZvciBkZXNjcmliaW5nIGJpbmFyeSBkYXRhLiBBY2NvcmRpbmdseSwKK3RoZSBieXRlcyBhbmQgYnl0ZWFycmF5IHR5cGVzIGhhdmUgYW4gYWRkaXRpb25hbCBjbGFzcyBtZXRob2QgdG8gcmVhZCBkYXRhIGluCit0aGF0IGZvcm1hdDoKIAogLi4gY2xhc3NtZXRob2Q6OiBieXRlcy5mcm9taGV4KHN0cmluZykKICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5LmZyb21oZXgoc3RyaW5nKQpAQCAtMTg1MSw4ICsyMjYyLDggQEAKICAgIGRlY29kaW5nIHRoZSBnaXZlbiBzdHJpbmcgb2JqZWN0LiAgVGhlIHN0cmluZyBtdXN0IGNvbnRhaW4gdHdvIGhleGFkZWNpbWFsCiAgICBkaWdpdHMgcGVyIGJ5dGUsIHNwYWNlcyBhcmUgaWdub3JlZC4KIAotICAgPj4+IGJ5dGVzLmZyb21oZXgoJ2YwIGYxZjIgICcpCi0gICBiJ1x4ZjBceGYxXHhmMicKKyAgID4+PiBieXRlcy5mcm9taGV4KCcyRWYwIEYxZjIgICcpCisgICBiJy5ceGYwXHhmMVx4ZjInCiAKIAogVGhlIG1ha2V0cmFucyBhbmQgdHJhbnNsYXRlIG1ldGhvZHMgZGlmZmVyIGluIHNlbWFudGljcyBmcm9tIHRoZSB2ZXJzaW9ucwpAQCAtMTg4Niw2ICsyMjk3LDQzNCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAorLi4gX3R5cGVtZW1vcnl2aWV3OgorCitNZW1vcnkgVmlld3MKKy0tLS0tLS0tLS0tLQorCis6Y2xhc3M6YG1lbW9yeXZpZXdgIG9iamVjdHMgYWxsb3cgUHl0aG9uIGNvZGUgdG8gYWNjZXNzIHRoZSBpbnRlcm5hbCBkYXRhCitvZiBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAgd2l0aG91dAorY29weWluZy4KKworLi4gY2xhc3M6OiBtZW1vcnl2aWV3KG9iaikKKworICAgQ3JlYXRlIGEgOmNsYXNzOmBtZW1vcnl2aWV3YCB0aGF0IHJlZmVyZW5jZXMgKm9iaiouICAqb2JqKiBtdXN0IHN1cHBvcnQgdGhlCisgICBidWZmZXIgcHJvdG9jb2wuICBCdWlsdC1pbiBvYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIGluY2x1ZGUKKyAgIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAuCisKKyAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgdGhlIG5vdGlvbiBvZiBhbiAqZWxlbWVudCosIHdoaWNoIGlzIHRoZQorICAgYXRvbWljIG1lbW9yeSB1bml0IGhhbmRsZWQgYnkgdGhlIG9yaWdpbmF0aW5nIG9iamVjdCAqb2JqKi4gIEZvciBtYW55CisgICBzaW1wbGUgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgLCBhbiBlbGVtZW50CisgICBpcyBhIHNpbmdsZSBieXRlLCBidXQgb3RoZXIgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGFycmF5LmFycmF5YCBtYXkgaGF2ZQorICAgYmlnZ2VyIGVsZW1lbnRzLgorCisgICBgYGxlbih2aWV3KWBgIGlzIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgOmNsYXNzOmB+bWVtb3J5dmlldy50b2xpc3RgLgorICAgSWYgYGB2aWV3Lm5kaW0gPSAwYGAsIHRoZSBsZW5ndGggaXMgMS4gSWYgYGB2aWV3Lm5kaW0gPSAxYGAsIHRoZSBsZW5ndGgKKyAgIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHZpZXcuIEZvciBoaWdoZXIgZGltZW5zaW9ucywKKyAgIHRoZSBsZW5ndGggaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gb2YKKyAgIHRoZSB2aWV3LiBUaGUgOmNsYXNzOmB+bWVtb3J5dmlldy5pdGVtc2l6ZWAgYXR0cmlidXRlIHdpbGwgZ2l2ZSB5b3UgdGhlCisgICBudW1iZXIgb2YgYnl0ZXMgaW4gYSBzaW5nbGUgZWxlbWVudC4KKworICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHN1cHBvcnRzIHNsaWNpbmcgdG8gZXhwb3NlIGl0cyBkYXRhLiBJZgorICAgOmNsYXNzOmB+bWVtb3J5dmlldy5mb3JtYXRgIGlzIG9uZSBvZiB0aGUgbmF0aXZlIGZvcm1hdCBzcGVjaWZpZXJzCisgICBmcm9tIHRoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSwgaW5kZXhpbmcgd2lsbCByZXR1cm4gYSBzaW5nbGUgZWxlbWVudAorICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiBGdWxsIHNsaWNpbmcgd2lsbCByZXN1bHQgaW4gYSBzdWJ2aWV3OjoKKworICAgID4+PiB2ID0gbWVtb3J5dmlldyhiJ2FiY2VmZycpCisgICAgPj4+IHZbMV0KKyAgICA5OAorICAgID4+PiB2Wy0xXQorICAgIDEwMworICAgID4+PiB2WzE6NF0KKyAgICA8bWVtb3J5IGF0IDB4N2YzZGRjOWY0MzUwPgorICAgID4+PiBieXRlcyh2WzE6NF0pCisgICAgYidiY2UnCisKKyAgIE90aGVyIG5hdGl2ZSBmb3JtYXRzOjoKKworICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnbCcsIFstMTExMTExMTEsIDIyMjIyMjIyLCAtMzMzMzMzMzMsIDQ0NDQ0NDQ0XSkKKyAgICAgID4+PiBhWzBdCisgICAgICAtMTExMTExMTEKKyAgICAgID4+PiBhWy0xXQorICAgICAgNDQ0NDQ0NDQKKyAgICAgID4+PiBhWzI6M10udG9saXN0KCkKKyAgICAgIFstMzMzMzMzMzNdCisgICAgICA+Pj4gYVs6OjJdLnRvbGlzdCgpCisgICAgICBbLTExMTExMTExLCAtMzMzMzMzMzNdCisgICAgICA+Pj4gYVs6Oi0xXS50b2xpc3QoKQorICAgICAgWzQ0NDQ0NDQ0LCAtMzMzMzMzMzMsIDIyMjIyMjIyLCAtMTExMTExMTFdCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICBJZiB0aGUgdW5kZXJseWluZyBvYmplY3QgaXMgd3JpdGFibGUsIHRoZSBtZW1vcnl2aWV3IHN1cHBvcnRzIHNsaWNlCisgICBhc3NpZ25tZW50LiBSZXNpemluZyBpcyBub3QgYWxsb3dlZDo6CisKKyAgICAgID4+PiBkYXRhID0gYnl0ZWFycmF5KGInYWJjZWZnJykKKyAgICAgID4+PiB2ID0gbWVtb3J5dmlldyhkYXRhKQorICAgICAgPj4+IHYucmVhZG9ubHkKKyAgICAgIEZhbHNlCisgICAgICA+Pj4gdlswXSA9IG9yZChiJ3onKQorICAgICAgPj4+IGRhdGEKKyAgICAgIGJ5dGVhcnJheShiJ3piY2VmZycpCisgICAgICA+Pj4gdlsxOjRdID0gYicxMjMnCisgICAgICA+Pj4gZGF0YQorICAgICAgYnl0ZWFycmF5KGInejEyM2ZnJykKKyAgICAgID4+PiB2WzI6M10gPSBiJ3NwYW0nCisgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBWYWx1ZUVycm9yOiBtZW1vcnl2aWV3IGFzc2lnbm1lbnQ6IGx2YWx1ZSBhbmQgcnZhbHVlIGhhdmUgZGlmZmVyZW50IHN0cnVjdHVyZXMKKyAgICAgID4+PiB2WzI6Nl0gPSBiJ3NwYW0nCisgICAgICA+Pj4gZGF0YQorICAgICAgYnl0ZWFycmF5KGInejFzcGFtJykKKworICAgT25lLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIG9mIGhhc2hhYmxlIChyZWFkLW9ubHkpIHR5cGVzIHdpdGggZm9ybWF0cworICAgJ0InLCAnYicgb3IgJ2MnIGFyZSBhbHNvIGhhc2hhYmxlLiBUaGUgaGFzaCBpcyBkZWZpbmVkIGFzCisgICBgYGhhc2gobSkgPT0gaGFzaChtLnRvYnl0ZXMoKSlgYDo6CisKKyAgICAgID4+PiB2ID0gbWVtb3J5dmlldyhiJ2FiY2VmZycpCisgICAgICA+Pj4gaGFzaCh2KSA9PSBoYXNoKGInYWJjZWZnJykKKyAgICAgIFRydWUKKyAgICAgID4+PiBoYXNoKHZbMjo0XSkgPT0gaGFzaChiJ2NlJykKKyAgICAgIFRydWUKKyAgICAgID4+PiBoYXNoKHZbOjotMl0pID09IGhhc2goYidhYmNlZmcnWzo6LTJdKQorICAgICAgVHJ1ZQorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgT25lLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIHdpdGggZm9ybWF0cyAnQicsICdiJyBvciAnYycgYXJlIG5vdyBoYXNoYWJsZS4KKworICAgLi4gbm90ZTo6CisgICAgICBIYXNoaW5nIG9mIG1lbW9yeXZpZXdzIHdpdGggZm9ybWF0cyBvdGhlciB0aGFuICdCJywgJ2InIG9yICdjJyBhcyB3ZWxsCisgICAgICBhcyBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIGlzIHBvc3NpYmxlIGluIHZlcnNpb24gMy4zLjAsCisgICAgICBidXQgd2lsbCByYWlzZSBhbiBlcnJvciBpbiAzLjMuMSBpbiBvcmRlciB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIG5ldworICAgICAgbWVtb3J5dmlldyBlcXVhbGl0eSBkZWZpbml0aW9uLgorCisgICA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyBzZXZlcmFsIG1ldGhvZHM6CisKKyAgIC4uIG1ldGhvZDo6IF9fZXFfXyhleHBvcnRlcikKKworICAgICAgQSBtZW1vcnl2aWV3IGFuZCBhIDpwZXA6YDMxMThgIGV4cG9ydGVyIGFyZSBlcXVhbCBpZiB0aGVpciBzaGFwZXMgYXJlCisgICAgICBlcXVpdmFsZW50IGFuZCBpZiBhbGwgY29ycmVzcG9uZGluZyB2YWx1ZXMgYXJlIGVxdWFsIHdoZW4gdGhlIG9wZXJhbmRzJworICAgICAgcmVzcGVjdGl2ZSBmb3JtYXQgY29kZXMgYXJlIGludGVycHJldGVkIHVzaW5nIDptb2Q6YHN0cnVjdGAgc3ludGF4LgorCisgICAgICBGb3IgdGhlIHN1YnNldCBvZiA6bW9kOmBzdHJ1Y3RgIGZvcm1hdCBzdHJpbmdzIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkKKyAgICAgIDptZXRoOmB0b2xpc3RgLCBgYHZgYCBhbmQgYGB3YGAgYXJlIGVxdWFsIGlmIGBgdi50b2xpc3QoKSA9PSB3LnRvbGlzdCgpYGA6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdJJywgWzEsIDIsIDMsIDQsIDVdKQorICAgICAgICAgPj4+IGIgPSBhcnJheS5hcnJheSgnZCcsIFsxLjAsIDIuMCwgMy4wLCA0LjAsIDUuMF0pCisgICAgICAgICA+Pj4gYyA9IGFycmF5LmFycmF5KCdiJywgWzUsIDMsIDFdKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4geSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgID4+PiB4ID09IGEgPT0geSA9PSBiCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4geC50b2xpc3QoKSA9PSBhLnRvbGlzdCgpID09IHkudG9saXN0KCkgPT0gYi50b2xpc3QoKQorICAgICAgICAgVHJ1ZQorICAgICAgICAgPj4+IHogPSB5Wzo6LTJdCisgICAgICAgICA+Pj4geiA9PSBjCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4gei50b2xpc3QoKSA9PSBjLnRvbGlzdCgpCisgICAgICAgICBUcnVlCisKKyAgICAgIElmIGVpdGhlciBmb3JtYXQgc3RyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLAorICAgICAgdGhlbiB0aGUgb2JqZWN0cyB3aWxsIGFsd2F5cyBjb21wYXJlIGFzIHVuZXF1YWwgKGV2ZW4gaWYgdGhlIGZvcm1hdAorICAgICAgc3RyaW5ncyBhbmQgYnVmZmVyIGNvbnRlbnRzIGFyZSBpZGVudGljYWwpOjoKKworICAgICAgICAgPj4+IGZyb20gY3R5cGVzIGltcG9ydCBCaWdFbmRpYW5TdHJ1Y3R1cmUsIGNfbG9uZworICAgICAgICAgPj4+IGNsYXNzIEJFUG9pbnQoQmlnRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgIC4uLiAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY19sb25nKSwgKCJ5IiwgY19sb25nKV0KKyAgICAgICAgIC4uLgorICAgICAgICAgPj4+IHBvaW50ID0gQkVQb2ludCgxMDAsIDIwMCkKKyAgICAgICAgID4+PiBhID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgID4+PiBiID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgID4+PiBhID09IHBvaW50CisgICAgICAgICBGYWxzZQorICAgICAgICAgPj4+IGEgPT0gYgorICAgICAgICAgRmFsc2UKKworICAgICAgTm90ZSB0aGF0LCBhcyB3aXRoIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGBgdiBpcyB3YGAgZG9lcyAqbm90KiBpbXBseQorICAgICAgYGB2ID09IHdgYCBmb3IgbWVtb3J5dmlldyBvYmplY3RzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUHJldmlvdXMgdmVyc2lvbnMgY29tcGFyZWQgdGhlIHJhdyBtZW1vcnkgZGlzcmVnYXJkaW5nIHRoZSBpdGVtIGZvcm1hdAorICAgICAgICAgYW5kIHRoZSBsb2dpY2FsIGFycmF5IHN0cnVjdHVyZS4KKworICAgLi4gbWV0aG9kOjogdG9ieXRlcygpCisKKyAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgYnl0ZXN0cmluZy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgICAgY2FsbGluZyB0aGUgOmNsYXNzOmBieXRlc2AgY29uc3RydWN0b3Igb24gdGhlIG1lbW9yeXZpZXcuIDo6CisKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhiImFiYyIpCisgICAgICAgICA+Pj4gbS50b2J5dGVzKCkKKyAgICAgICAgIGInYWJjJworICAgICAgICAgPj4+IGJ5dGVzKG0pCisgICAgICAgICBiJ2FiYycKKworICAgICAgRm9yIG5vbi1jb250aWd1b3VzIGFycmF5cyB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIHRoZSBmbGF0dGVuZWQgbGlzdAorICAgICAgcmVwcmVzZW50YXRpb24gd2l0aCBhbGwgZWxlbWVudHMgY29udmVydGVkIHRvIGJ5dGVzLiA6bWV0aDpgdG9ieXRlc2AKKyAgICAgIHN1cHBvcnRzIGFsbCBmb3JtYXQgc3RyaW5ncywgaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJlIG5vdCBpbgorICAgICAgOm1vZDpgc3RydWN0YCBtb2R1bGUgc3ludGF4LgorCisgICAuLiBtZXRob2Q6OiB0b2xpc3QoKQorCisgICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgZWxlbWVudHMuIDo6CisKKyAgICAgICAgID4+PiBtZW1vcnl2aWV3KGInYWJjJykudG9saXN0KCkKKyAgICAgICAgIFs5NywgOTgsIDk5XQorICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICAgPj4+IG0udG9saXN0KCkKKyAgICAgICAgIFsxLjEsIDIuMiwgMy4zXQorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgOm1ldGg6YHRvbGlzdGAgbm93IHN1cHBvcnRzIGFsbCBzaW5nbGUgY2hhcmFjdGVyIG5hdGl2ZSBmb3JtYXRzIGluCisgICAgICAgICA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzeW50YXggYXMgd2VsbCBhcyBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICAgcmVwcmVzZW50YXRpb25zLgorCisgICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKKworICAgICAgUmVsZWFzZSB0aGUgdW5kZXJseWluZyBidWZmZXIgZXhwb3NlZCBieSB0aGUgbWVtb3J5dmlldyBvYmplY3QuICBNYW55CisgICAgICBvYmplY3RzIHRha2Ugc3BlY2lhbCBhY3Rpb25zIHdoZW4gYSB2aWV3IGlzIGhlbGQgb24gdGhlbSAoZm9yIGV4YW1wbGUsCisgICAgICBhIDpjbGFzczpgYnl0ZWFycmF5YCB3b3VsZCB0ZW1wb3JhcmlseSBmb3JiaWQgcmVzaXppbmcpOyB0aGVyZWZvcmUsCisgICAgICBjYWxsaW5nIHJlbGVhc2UoKSBpcyBoYW5keSB0byByZW1vdmUgdGhlc2UgcmVzdHJpY3Rpb25zIChhbmQgZnJlZSBhbnkKKyAgICAgIGRhbmdsaW5nIHJlc291cmNlcykgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworICAgICAgQWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBhbnkgZnVydGhlciBvcGVyYXRpb24gb24gdGhlIHZpZXcKKyAgICAgIHJhaXNlcyBhIDpjbGFzczpgVmFsdWVFcnJvcmAgKGV4Y2VwdCA6bWV0aDpgcmVsZWFzZSgpYCBpdHNlbGYgd2hpY2ggY2FuCisgICAgICBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMpOjoKKworICAgICAgICAgPj4+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+IHkubmJ5dGVzCisgICAgICAgICA5NgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogcmVhZG9ubHkKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4KKworICAgLi4gYXR0cmlidXRlOjogZm9ybWF0CisKKyAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUpIGZvciBlYWNoCisgICAgICBlbGVtZW50IGluIHRoZSB2aWV3LiBBIG1lbW9yeXZpZXcgY2FuIGJlIGNyZWF0ZWQgZnJvbSBleHBvcnRlcnMgd2l0aAorICAgICAgYXJiaXRyYXJ5IGZvcm1hdCBzdHJpbmdzLCBidXQgc29tZSBtZXRob2RzIChlLmcuIDptZXRoOmB0b2xpc3RgKSBhcmUKKyAgICAgIHJlc3RyaWN0ZWQgdG8gbmF0aXZlIHNpbmdsZSBlbGVtZW50IGZvcm1hdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBmb3JtYXQgYGAnQidgYCBpcyBub3cgaGFuZGxlZCBhY2NvcmRpbmcgdG8gdGhlIHN0cnVjdCBtb2R1bGUgc3ludGF4LgorICAgICAgICAgVGhpcyBtZWFucyB0aGF0IGBgbWVtb3J5dmlldyhiJ2FiYycpWzBdID09IGInYWJjJ1swXSA9PSA5N2BgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpdGVtc2l6ZQorCisgICAgICBUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXc6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5LCBzdHJ1Y3QKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhcnJheS5hcnJheSgnSCcsIFszMjAwMCwgMzIwMDEsIDMyMDAyXSkpCisgICAgICAgICA+Pj4gbS5pdGVtc2l6ZQorICAgICAgICAgMgorICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIDMyMDAwCisgICAgICAgICA+Pj4gc3RydWN0LmNhbGNzaXplKCdIJykgPT0gbS5pdGVtc2l6ZQorICAgICAgICAgVHJ1ZQorCisgICAuLiBhdHRyaWJ1dGU6OiBuZGltCisKKyAgICAgIEFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaW1lbnNpb25zIG9mIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXkgdGhlCisgICAgICBtZW1vcnkgcmVwcmVzZW50cy4KKworICAgLi4gYXR0cmlidXRlOjogc2hhcGUKKworICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZQorICAgICAgbWVtb3J5IGFzIGFuIE4tZGltZW5zaW9uYWwgYXJyYXkuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUgd2hlbiBuZGltID0gMC4KKworICAgLi4gYXR0cmlidXRlOjogc3RyaWRlcworCisgICAgICBBIHR1cGxlIG9mIGludGVnZXJzIHRoZSBsZW5ndGggb2YgOmF0dHI6YG5kaW1gIGdpdmluZyB0aGUgc2l6ZSBpbiBieXRlcyB0bworICAgICAgYWNjZXNzIGVhY2ggZWxlbWVudCBmb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQW4gZW1wdHkgdHVwbGUgaW5zdGVhZCBvZiBOb25lIHdoZW4gbmRpbSA9IDAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN1Ym9mZnNldHMKKworICAgICAgVXNlZCBpbnRlcm5hbGx5IGZvciBQSUwtc3R5bGUgYXJyYXlzLiBUaGUgdmFsdWUgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBjX2NvbnRpZ3VvdXMKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMtY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGZfY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgRm9ydHJhbiBjb250aWd1b3VzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3R5cGVzLXNldDoKIAogU2V0IFR5cGVzIC0tLSA6Y2xhc3M6YHNldGAsIDpjbGFzczpgZnJvemVuc2V0YApAQCAtMTg5Nyw3ICsyNzM2LDcgQEAKIENvbW1vbiB1c2VzIGluY2x1ZGUgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kCiBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLCBhbmQKIHN5bW1ldHJpYyBkaWZmZXJlbmNlLgotKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBsaXN0YCwKKyhGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LWluIDpjbGFzczpgZGljdGAsIDpjbGFzczpgbGlzdGAsCiBhbmQgOmNsYXNzOmB0dXBsZWAgY2xhc3NlcywgYW5kIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLikKIAogTGlrZSBvdGhlciBjb2xsZWN0aW9ucywgc2V0cyBzdXBwb3J0IGBgeCBpbiBzZXRgYCwgYGBsZW4oc2V0KWBgLCBhbmQgYGBmb3IgeCBpbgpAQCAtMjA5Nyw3ICsyOTM2LDcgQEAKIAogQSA6ZGZuOmBtYXBwaW5nYCBvYmplY3QgbWFwcyA6dGVybTpgaGFzaGFibGVgIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy4KIE1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmQgbWFwcGluZwotdHlwZSwgdGhlIDpkZm46YGRpY3Rpb25hcnlgLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4KK3R5cGUsIHRoZSA6ZGZuOmBkaWN0aW9uYXJ5YC4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LWluCiA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YHNldGAsIGFuZCA6Y2xhc3M6YHR1cGxlYCBjbGFzc2VzLCBhbmQgdGhlCiA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLikKIApAQCAtMjIyOSwxMyArMzA2OCwxMyBAQAogCiAgICAuLiBtZXRob2Q6OiBpdGVtcygpCiAKLSAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGAgcGFpcnMpLiAgU2VlCi0gICAgICBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgIHBhaXJzKS4KKyAgICAgIFNlZSB0aGUgOnJlZjpgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMgPGRpY3Qtdmlld3M+YC4KIAogICAgLi4gbWV0aG9kOjoga2V5cygpCiAKLSAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZgotICAgICAgdmlldyBvYmplY3RzLgorICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBrZXlzLiAgU2VlIHRoZSA6cmVmOmBkb2N1bWVudGF0aW9uCisgICAgICBvZiB2aWV3IG9iamVjdHMgPGRpY3Qtdmlld3M+YC4KIAogICAgLi4gbWV0aG9kOjogcG9wKGtleVssIGRlZmF1bHRdKQogCkBAIC0yMjY5LDggKzMxMDgsMTIgQEAKIAogICAgLi4gbWV0aG9kOjogdmFsdWVzKCkKIAotICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyB2YWx1ZXMuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YKLSAgICAgIHZpZXcgb2JqZWN0cy4KKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlIHRoZQorICAgICAgOnJlZjpgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMgPGRpY3Qtdmlld3M+YC4KKworLi4gc2VlYWxzbzo6CisgICA6Y2xhc3M6YHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlYWQtb25seSB2aWV3CisgICBvZiBhIDpjbGFzczpgZGljdGAuCiAKIAogLi4gX2RpY3Qtdmlld3M6CkBAIC0yMzE2LDcgKzMxNTksNyBAQAogdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWUgYW5kIGhhc2hhYmxlLAogdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmUgbm90IHRyZWF0ZWQgYXMgc2V0LWxpa2UKIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pICBGb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUKLW9wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBjb2xsZWN0aW9ucy5TZXRgIGFyZQorb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXRgIGFyZQogYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLCBgYDxgYCwgb3IgYGBeYGApLgogCiBBbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTo6CkBAIC0yMzUxLDE1OSArMzE5NCw2IEBACiAgICB7J2p1aWNlJywgJ3NhdXNhZ2UnLCAnYmFjb24nLCAnc3BhbSd9CiAKIAotLi4gX3R5cGVtZW1vcnl2aWV3OgotCi1tZW1vcnl2aWV3IHR5cGUKLT09PT09PT09PT09PT09PQotCi06Y2xhc3M6YG1lbW9yeXZpZXdgIG9iamVjdHMgYWxsb3cgUHl0aG9uIGNvZGUgdG8gYWNjZXNzIHRoZSBpbnRlcm5hbCBkYXRhCi1vZiBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAgd2l0aG91dAotY29weWluZy4gIE1lbW9yeSBpcyBnZW5lcmFsbHkgaW50ZXJwcmV0ZWQgYXMgc2ltcGxlIGJ5dGVzLgotCi0uLiBjbGFzczo6IG1lbW9yeXZpZXcob2JqKQotCi0gICBDcmVhdGUgYSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHRoYXQgcmVmZXJlbmNlcyAqb2JqKi4gICpvYmoqIG11c3Qgc3VwcG9ydCB0aGUKLSAgIGJ1ZmZlciBwcm90b2NvbC4gIEJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wgaW5jbHVkZQotICAgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YC4KLQotICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyB0aGUgbm90aW9uIG9mIGFuICplbGVtZW50Kiwgd2hpY2ggaXMgdGhlCi0gICBhdG9taWMgbWVtb3J5IHVuaXQgaGFuZGxlZCBieSB0aGUgb3JpZ2luYXRpbmcgb2JqZWN0ICpvYmoqLiAgRm9yIG1hbnkKLSAgIHNpbXBsZSB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAsIGFuIGVsZW1lbnQKLSAgIGlzIGEgc2luZ2xlIGJ5dGUsIGJ1dCBvdGhlciB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYXJyYXkuYXJyYXlgIG1heSBoYXZlCi0gICBiaWdnZXIgZWxlbWVudHMuCi0KLSAgIGBgbGVuKHZpZXcpYGAgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBtZW1vcnl2aWV3LAotICAgKnZpZXcqLiAgVGhlIDpjbGFzczpgfm1lbW9yeXZpZXcuaXRlbXNpemVgIGF0dHJpYnV0ZSB3aWxsIGdpdmUgeW91IHRoZQotICAgbnVtYmVyIG9mIGJ5dGVzIGluIGEgc2luZ2xlIGVsZW1lbnQuCi0KLSAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBzdXBwb3J0cyBzbGljaW5nIHRvIGV4cG9zZSBpdHMgZGF0YS4gIFRha2luZyBhIHNpbmdsZQotICAgaW5kZXggd2lsbCByZXR1cm4gYSBzaW5nbGUgZWxlbWVudCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gIEZ1bGwKLSAgIHNsaWNpbmcgd2lsbCByZXN1bHQgaW4gYSBzdWJ2aWV3OjoKLQotICAgICAgPj4+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+Pj4gbGVuKG1bMF0pID09IG0uaXRlbXNpemUKLSAgICAgICAgIFRydWUKLQotICAgLi4gYXR0cmlidXRlOjogc2hhcGUKLQotICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZQotICAgICAgbWVtb3J5IGFzIGEgTi1kaW1lbnNpb25hbCBhcnJheS4KLQotICAgLi4gYXR0cmlidXRlOjogbmRpbQotCi0gICAgICBBbiBpbnRlZ2VyIGluZGljYXRpbmcgaG93IG1hbnkgZGltZW5zaW9ucyBvZiBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5IHRoZQotICAgICAgbWVtb3J5IHJlcHJlc2VudHMuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHN0cmlkZXMKLQotICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNpemUgaW4gYnl0ZXMgdG8KLSAgICAgIGFjY2VzcyBlYWNoIGVsZW1lbnQgZm9yIGVhY2ggZGltZW5zaW9uIG9mIHRoZSBhcnJheS4KLQotICAgLi4gYXR0cmlidXRlOjogcmVhZG9ubHkKLQotICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4KLQotICAgLi4gbWVtb3J5dmlldy5zdWJvZmZzZXRzIGlzbid0IGRvY3VtZW50ZWQgYmVjYXVzZSBpdCBvbmx5IHNlZW1zIHVzZWZ1bCBmb3IgQwotCi0KIC4uIF90eXBlY29udGV4dG1hbmFnZXI6CiAKIENvbnRleHQgTWFuYWdlciBUeXBlcwpAQCAtMjcyNSw3ICszNDE1LDcgQEAKIAogVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYSB2YWx1ZS4gIEl0CiBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsIG9iamVjdCwgbmFtZWQKLWBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLgorYGBOb25lYGAgKGEgYnVpbHQtaW4gbmFtZSkuICBgYHR5cGUoTm9uZSkoKWBgIHByb2R1Y2VzIHRoZSBzYW1lIHNpbmdsZXRvbi4KIAogSXQgaXMgd3JpdHRlbiBhcyBgYE5vbmVgYC4KIApAQCAtMjczNyw3ICszNDI3LDggQEAKIAogVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgOnJlZjpgc2xpY2luZ3NgKS4gIEl0IHN1cHBvcnRzIG5vCiBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkCi06Y29uc3Q6YEVsbGlwc2lzYCAoYSBidWlsdC1pbiBuYW1lKS4KKzpjb25zdDpgRWxsaXBzaXNgIChhIGJ1aWx0LWluIG5hbWUpLiAgYGB0eXBlKEVsbGlwc2lzKSgpYGAgcHJvZHVjZXMgdGhlCis6Y29uc3Q6YEVsbGlwc2lzYCBzaW5nbGV0b24uCiAKIEl0IGlzIHdyaXR0ZW4gYXMgYGBFbGxpcHNpc2BgIG9yIGBgLi4uYGAuCiAKQEAgLTI3NDksNyArMzQ0MCw4IEBACiAKIFRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGZyb20gY29tcGFyaXNvbnMgYW5kIGJpbmFyeSBvcGVyYXRpb25zIHdoZW4gdGhleSBhcmUKIGFza2VkIHRvIG9wZXJhdGUgb24gdHlwZXMgdGhleSBkb24ndCBzdXBwb3J0LiBTZWUgOnJlZjpgY29tcGFyaXNvbnNgIGZvciBtb3JlCi1pbmZvcm1hdGlvbi4KK2luZm9ybWF0aW9uLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgYGBOb3RJbXBsZW1lbnRlZGBgIG9iamVjdC4KK2BgdHlwZShOb3RJbXBsZW1lbnRlZCkoKWBgIHByb2R1Y2VzIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuCiAKIEl0IGlzIHdyaXR0ZW4gYXMgYGBOb3RJbXBsZW1lbnRlZGBgLgogCkBAIC0yODE1LDYgKzM1MDcsMTMgQEAKICAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLgogCiAKKy4uIGF0dHJpYnV0ZTo6IGNsYXNzLl9fcXVhbG5hbWVfXworCisgICBUaGUgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgY2xhc3Mgb3IgdHlwZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYXR0cmlidXRlOjogY2xhc3MuX19tcm9fXwogCiAgICBUaGlzIGF0dHJpYnV0ZSBpcyBhIHR1cGxlIG9mIGNsYXNzZXMgdGhhdCBhcmUgY29uc2lkZXJlZCB3aGVuIGxvb2tpbmcgZm9yCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0IGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAppbmRleCA3OWQ0ZTNmLi45YzYzMjcyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKQEAgLTEwLDcgKzEwLDcgQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgIDpyZWY6YHR5cGVzc2VxYAorICAgOnJlZjpgdGV4dHNlcWAKIAogICAgOnJlZjpgc3RyaW5nLW1ldGhvZHNgCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cmluZ3MucnN0IGIvRG9jL2xpYnJhcnkvc3RyaW5ncy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZjE2NTguLjAwMDAwMDAKLS0tIGEvRG9jL2xpYnJhcnkvc3RyaW5ncy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0uLiBfc3RyaW5nc2VydmljZXM6Ci0KLSoqKioqKioqKioqKioqKgotU3RyaW5nIFNlcnZpY2VzCi0qKioqKioqKioqKioqKioKLQotVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIGEgd2lkZSByYW5nZSBvZiBzdHJpbmcKLW1hbmlwdWxhdGlvbiBvcGVyYXRpb25zLgotCi1JbiBhZGRpdGlvbiwgUHl0aG9uJ3MgYnVpbHQtaW4gc3RyaW5nIGNsYXNzZXMgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzCi1kZXNjcmliZWQgaW4gdGhlIDpyZWY6YHR5cGVzc2VxYCBzZWN0aW9uLCBhbmQgYWxzbyB0aGUgc3RyaW5nLXNwZWNpZmljIG1ldGhvZHMKLWRlc2NyaWJlZCBpbiB0aGUgOnJlZjpgc3RyaW5nLW1ldGhvZHNgIHNlY3Rpb24uICBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MsCi1zZWUgdGhlIDpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYCBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIDptb2Q6YHJlYCBtb2R1bGUgZm9yCi1zdHJpbmcgZnVuY3Rpb25zIGJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi0KLQotLi4gdG9jdHJlZTo6Ci0KLSAgIHN0cmluZy5yc3QKLSAgIHJlLnJzdAotICAgc3RydWN0LnJzdAotICAgZGlmZmxpYi5yc3QKLSAgIHRleHR3cmFwLnJzdAotICAgY29kZWNzLnJzdAotICAgdW5pY29kZWRhdGEucnN0Ci0gICBzdHJpbmdwcmVwLnJzdAotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0IGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAppbmRleCAxMjgyMGUwLi45OTQ1MDZjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKQEAgLTE4NywxNyArMTg3LDI0IEBACiB8IGBgUWBgICB8IDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgICB8IGludGVnZXIgICAgICAgICAgICB8IDggICAgICAgICAgICAgIHwgXCgyKSwgXCgzKSB8CiB8ICAgICAgICB8IGxvbmdgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi18IGBgZmBgICB8IDpjOnR5cGU6YGZsb2F0YCAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8Cit8IGBgbmBgICB8IDpjOnR5cGU6YHNzaXplX3RgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi18IGBgZGBgICB8IDpjOnR5cGU6YGRvdWJsZWAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8Cit8IGBgTmBgICB8IDpjOnR5cGU6YHNpemVfdGAgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8CisrLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IGBgZmBgICB8IDpjOnR5cGU6YGZsb2F0YCAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CisrLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IGBgZGBgICB8IDpjOnR5cGU6YGRvdWJsZWAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgc2BgICB8IDpjOnR5cGU6YGNoYXJbXWAgICAgICAgICB8IGJ5dGVzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgcGBgICB8IDpjOnR5cGU6YGNoYXJbXWAgICAgICAgICB8IGJ5dGVzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi18IGBgUGBgICB8IDpjOnR5cGU6YHZvaWQgXCpgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8Cit8IGBgUGBgICB8IDpjOnR5cGU6YHZvaWQgXCpgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg2KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAnbidgYCBhbmQgYGAnTidgYCBmb3JtYXRzLgorCiBOb3RlczoKIAogKDEpCkBAIC0yMTksMTEgKzIyNiwxNyBAQAogICAgICAgVXNlIG9mIHRoZSA6bWV0aDpgX19pbmRleF9fYCBtZXRob2QgZm9yIG5vbi1pbnRlZ2VycyBpcyBuZXcgaW4gMy4yLgogCiAoNCkKKyAgIFRoZSBgYCduJ2BgIGFuZCBgYCdOJ2BgIGNvbnZlcnNpb24gY29kZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlCisgICBzaXplIChzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvciB3aXRoIHRoZSBgYCdAJ2BgIGJ5dGUgb3JkZXIgY2hhcmFjdGVyKS4KKyAgIEZvciB0aGUgc3RhbmRhcmQgc2l6ZSwgeW91IGNhbiB1c2Ugd2hpY2hldmVyIG9mIHRoZSBvdGhlciBpbnRlZ2VyIGZvcm1hdHMKKyAgIGZpdHMgeW91ciBhcHBsaWNhdGlvbi4KKworKDUpCiAgICBGb3IgdGhlIGBgJ2YnYGAgYW5kIGBgJ2QnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZCByZXByZXNlbnRhdGlvbiB1c2VzCiAgICB0aGUgSUVFRSA3NTQgYmluYXJ5MzIgKGZvciBgYCdmJ2BgKSBvciBiaW5hcnk2NCAoZm9yIGBgJ2QnYGApIGZvcm1hdCwKICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGZsb2F0aW5nLXBvaW50IGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KIAotKDUpCisoNikKICAgIFRoZSBgYCdQJ2BgIGZvcm1hdCBjaGFyYWN0ZXIgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBuYXRpdmUgYnl0ZSBvcmRlcmluZwogICAgKHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IG9yIHdpdGggdGhlIGBgJ0AnYGAgYnl0ZSBvcmRlciBjaGFyYWN0ZXIpLiBUaGUgYnl0ZQogICAgb3JkZXIgY2hhcmFjdGVyIGBgJz0nYGAgY2hvb3NlcyB0byB1c2UgbGl0dGxlLSBvciBiaWctZW5kaWFuIG9yZGVyaW5nIGJhc2VkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdCBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CmluZGV4IGUyNjBhMWYuLjY2ZDZjYmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CkBAIC0zMCwxNiArMzAsMjEgQEAKIHVzZSBjYXNlcywgdGhlIHVuZGVybHlpbmcgOmNsYXNzOmBQb3BlbmAgaW50ZXJmYWNlIGNhbiBiZSB1c2VkIGRpcmVjdGx5LgogCiAKLS4uIGZ1bmN0aW9uOjogY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlKQorLi4gZnVuY3Rpb246OiBjYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCiAgICByZXR1cm4gdGhlIDphdHRyOmByZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCiAKICAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHNsaWdodGx5IG9kZCBub3RhdGlvbiBpbgotICAgdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyB0aGUgc2FtZSBhcwotICAgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgorICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQorICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAorICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisKKyAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKKyAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKKyAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKKyAgIGhhcyB0ZXJtaW5hdGVkLgogCiAgICBFeGFtcGxlczo6CiAKQEAgLTYyLDggKzY3LDExIEBACiAgICAgICBwcm9jZXNzIG1heSBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoIG91dHB1dCB0byBhIHBpcGUgdG8gZmlsbCB1cAogICAgICAgdGhlIE9TIHBpcGUgYnVmZmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAotLi4gZnVuY3Rpb246OiBjaGVja19jYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UpCisKKy4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCiAKICAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gSWYgdGhlIHJldHVybgogICAgY29kZSB3YXMgemVybyB0aGVuIHJldHVybiwgb3RoZXJ3aXNlIHJhaXNlIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuIFRoZQpAQCAtNzEsMTAgKzc5LDE1IEBACiAgICA6YXR0cjpgcmV0dXJuY29kZWAgYXR0cmlidXRlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwotICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSBzbGlnaHRseSBvZGQgbm90YXRpb24gaW4KLSAgIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgdGhlIHNhbWUgYXMKLSAgIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbnMgcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KKyAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9uIHBhc3NlcyBhbGwKKyAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorCisgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCisgICBoYXMgdGVybWluYXRlZC4KIAogICAgRXhhbXBsZXM6OgogCkBAIC04Niw4ICs5OSw2IEBACiAgICAgICAgICAuLi4KICAgICAgIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOiBDb21tYW5kICdleGl0IDEnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzIDEKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMi41Ci0KICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBJbnZva2luZyB0aGUgc3lzdGVtIHNoZWxsIHdpdGggYGBzaGVsbD1UcnVlYGAgY2FuIGJlIGEgc2VjdXJpdHkgaGF6YXJkCkBAIC0xMDEsOCArMTEyLDExIEBACiAgICAgICBwcm9jZXNzIG1heSBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoIG91dHB1dCB0byBhIHBpcGUgdG8gZmlsbCB1cAogICAgICAgdGhlIE9TIHBpcGUgYnVmZmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAotLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UpCisKKy4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCiAKICAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dCBhcyBhIGJ5dGUgc3RyaW5nLgogCkBAIC0xMTIsMTEgKzEyNiwxNyBAQAogICAgYXR0cmlidXRlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwotICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSBzbGlnaHRseSBvZGQgbm90YXRpb24gaW4KLSAgIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKLSAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IsIGV4Y2VwdCB0aGF0ICpzdGRvdXQqIGlzCi0gICBub3QgcGVybWl0dGVkIGFzIGl0IGlzIHVzZWQgaW50ZXJuYWxseS4gQWxsIG90aGVyIHN1cHBsaWVkIGFyZ3VtZW50cyBhcmUKLSAgIHBhc3NlZCBkaXJlY3RseSB0aHJvdWdoIHRvIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3Rvci4KKyAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgorICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQorICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb25zIHBhc3NlcyBhbGwKKyAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorICAgSW4gYWRkaXRpb24sICpzdGRvdXQqIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gYXJndW1lbnQsIGFzIGl0IGlzIHVzZWQKKyAgIGludGVybmFsbHkgdG8gY29sbGVjdCB0aGUgb3V0cHV0IGZyb20gdGhlIHN1YnByb2Nlc3MuCisKKyAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKKyAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKKyAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKKyAgIGhhcyB0ZXJtaW5hdGVkLgogCiAgICBFeGFtcGxlczo6CiAKQEAgLTE0Nyw3ICsxNjcsNyBAQAogICAgICAgLi4uICAgICBzaGVsbD1UcnVlKQogICAgICAgJ2xzOiBub25fZXhpc3RlbnRfZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVxuJwogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjcKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAgICAuLiB3YXJuaW5nOjoKIApAQCAtMTYxLDYgKzE4MSwxOCBAQAogICAgICAgcmVhZCBpbiB0aGUgY3VycmVudCBwcm9jZXNzLCB0aGUgY2hpbGQgcHJvY2VzcyBtYXkgYmxvY2sgaWYgaXQKICAgICAgIGdlbmVyYXRlcyBlbm91Z2ggb3V0cHV0IHRvIHRoZSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKworCisuLiBkYXRhOjogREVWTlVMTAorCisgICBTcGVjaWFsIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgYXMgdGhlICpzdGRpbiosICpzdGRvdXQqIG9yICpzdGRlcnIqIGFyZ3VtZW50CisgICB0byA6Y2xhc3M6YFBvcGVuYCBhbmQgaW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAKKyAgIHdpbGwgYmUgdXNlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gZGF0YTo6IFBJUEUKIApAQCAtMTc2LDEwICsyMDgsMzggQEAKICAgIG91dHB1dC4KIAogCisuLiBleGNlcHRpb246OiBTdWJwcm9jZXNzRXJyb3IKKworICAgIEJhc2UgY2xhc3MgZm9yIGFsbCBvdGhlciBleGNlcHRpb25zIGZyb20gdGhpcyBtb2R1bGUuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBleGNlcHRpb246OiBUaW1lb3V0RXhwaXJlZAorCisgICAgU3ViY2xhc3Mgb2YgOmV4YzpgU3VicHJvY2Vzc0Vycm9yYCwgcmFpc2VkIHdoZW4gYSB0aW1lb3V0IGV4cGlyZXMKKyAgICB3aGlsZSB3YWl0aW5nIGZvciBhIGNoaWxkIHByb2Nlc3MuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBjbWQKKworICAgICAgICBDb21tYW5kIHRoYXQgd2FzIHVzZWQgdG8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3MuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiB0aW1lb3V0CisKKyAgICAgICAgVGltZW91dCBpbiBzZWNvbmRzLgorCisgICAgLi4gYXR0cmlidXRlOjogb3V0cHV0CisKKyAgICAgICAgT3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBieQorICAgICAgICA6ZnVuYzpgY2hlY2tfb3V0cHV0YC4gIE90aGVyd2lzZSwgYGBOb25lYGAuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBleGNlcHRpb246OiBDYWxsZWRQcm9jZXNzRXJyb3IKIAotICAgIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIHByb2Nlc3MgcnVuIGJ5IDpmdW5jOmBjaGVja19jYWxsYCBvcgotICAgIDpmdW5jOmBjaGVja19vdXRwdXRgIHJldHVybnMgYSBub24temVybyBleGl0IHN0YXR1cy4KKyAgICBTdWJjbGFzcyBvZiA6ZXhjOmBTdWJwcm9jZXNzRXJyb3JgLCByYWlzZWQgd2hlbiBhIHByb2Nlc3MgcnVuIGJ5CisgICAgOmZ1bmM6YGNoZWNrX2NhbGxgIG9yIDpmdW5jOmBjaGVja19vdXRwdXRgIHJldHVybnMgYSBub24temVybyBleGl0IHN0YXR1cy4KIAogICAgIC4uIGF0dHJpYnV0ZTo6IHJldHVybmNvZGUKIApAQCAtMjE2LDI1ICsyNzYsMjcgQEAKIAogICAgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHNwZWNpZnkgdGhlIGV4ZWN1dGVkIHByb2dyYW0ncyBzdGFuZGFyZCBpbnB1dCwKICAgIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IgZmlsZSBoYW5kbGVzLCByZXNwZWN0aXZlbHkuICBWYWxpZCB2YWx1ZXMKLSAgIGFyZSA6ZGF0YTpgUElQRWAsIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciAoYSBwb3NpdGl2ZSBpbnRlZ2VyKSwgYW4KLSAgIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCBhbmQgYGBOb25lYGAuICA6ZGF0YTpgUElQRWAgaW5kaWNhdGVzIHRoYXQgYSBuZXcgcGlwZQotICAgdG8gdGhlIGNoaWxkIHNob3VsZCBiZSBjcmVhdGVkLiAgV2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8KLSAgIHJlZGlyZWN0aW9uIHdpbGwgb2NjdXI7IHRoZSBjaGlsZCdzIGZpbGUgaGFuZGxlcyB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZQotICAgcGFyZW50LiAgQWRkaXRpb25hbGx5LCAqc3RkZXJyKiBjYW4gYmUgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0Ci0gICB0aGUgc3RkZXJyIGRhdGEgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBzaG91bGQgYmUgY2FwdHVyZWQgaW50byB0aGUgc2FtZSBmaWxlCi0gICBoYW5kbGUgYXMgZm9yIHN0ZG91dC4KKyAgIGFyZSA6ZGF0YTpgUElQRWAsIDpkYXRhOmBERVZOVUxMYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCisgICBpbnRlZ2VyKSwgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIGFuZCBgYE5vbmVgYC4gIDpkYXRhOmBQSVBFYCBpbmRpY2F0ZXMKKyAgIHRoYXQgYSBuZXcgcGlwZSB0byB0aGUgY2hpbGQgc2hvdWxkIGJlIGNyZWF0ZWQuICA6ZGF0YTpgREVWTlVMTGAgaW5kaWNhdGVzCisgICB0aGF0IHRoZSBzcGVjaWFsIGZpbGUgOmRhdGE6YG9zLmRldm51bGxgIHdpbGwgYmUgdXNlZC4gIFdpdGggdGhlIGRlZmF1bHQKKyAgIHNldHRpbmdzIG9mIGBgTm9uZWBgLCBubyByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMKKyAgIHdpbGwgYmUgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlCisgICA6ZGF0YTpgU1RET1VUYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGNoaWxkCisgICBwcm9jZXNzIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUgaGFuZGxlIGFzIGZvciAqc3Rkb3V0Ki4KIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IHN1YnByb2Nlc3MgbW9kdWxlCiAKLSAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqCi0gICBhbmQgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgCi0gICBtb2RlIHVzaW5nIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nYC4KLSAgIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZAotICAgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IgOmRhdGE6YG9zLmxpbmVzZXBgLiAgRm9yICpzdGRvdXQqIGFuZAotICAgKnN0ZGVyciosIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4KLSAgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYAotICAgY2xhc3Mgd2hlbiB0aGUgKm5ld2xpbmUqIGFyZ3VtZW50IHRvIGl0cyBjb25zdHJ1Y3RvciBpcyBgYE5vbmVgYC4KKyAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqIGFuZAorICAgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUKKyAgIHVzaW5nIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQorICAgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLiAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMKKyAgIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvcgorICAgOmRhdGE6YG9zLmxpbmVzZXBgLiAgRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUKKyAgIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKyAgIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3Mgd2hlbiB0aGUgKm5ld2xpbmUqCisgICBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yNTQsNiArMzE2LDEyIEBACiAgICA6bW9kOmBmbm1hdGNoYCwgOmZ1bmM6YG9zLndhbGtgLCA6ZnVuYzpgb3MucGF0aC5leHBhbmR2YXJzYCwKICAgIDpmdW5jOmBvcy5wYXRoLmV4cGFuZHVzZXJgLCBhbmQgOm1vZDpgc2h1dGlsYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBXaGVuICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGUgY2xhc3MgdXNlcyB0aGUgZW5jb2RpbmcKKyAgICAgIDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIDxsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rpbmc+YAorICAgICAgaW5zdGVhZCBvZiBgYGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpYGAuICBTZWUgdGhlCisgICAgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY2hhbmdlLgorCiAgICAuLiB3YXJuaW5nOjoKIAogICAgICAgRXhlY3V0aW5nIHNoZWxsIGNvbW1hbmRzIHRoYXQgaW5jb3Jwb3JhdGUgdW5zYW5pdGl6ZWQgaW5wdXQgZnJvbSBhbgpAQCAtMzgyLDEzICs0NTAsMTQgQEAKIAogICAgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHNwZWNpZnkgdGhlIGV4ZWN1dGVkIHByb2dyYW0ncyBzdGFuZGFyZCBpbnB1dCwKICAgIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IgZmlsZSBoYW5kbGVzLCByZXNwZWN0aXZlbHkuICBWYWxpZCB2YWx1ZXMKLSAgIGFyZSA6ZGF0YTpgUElQRWAsIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciAoYSBwb3NpdGl2ZSBpbnRlZ2VyKSwgYW4KLSAgIGV4aXN0aW5nIDp0ZXJtOmBmaWxlIG9iamVjdGAsIGFuZCBgYE5vbmVgYC4gIDpkYXRhOmBQSVBFYCBpbmRpY2F0ZXMgdGhhdCBhCi0gICBuZXcgcGlwZSB0byB0aGUgY2hpbGQgc2hvdWxkIGJlIGNyZWF0ZWQuICBXaXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzIG9mCi0gICBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZSBoYW5kbGVzIHdpbGwgYmUKLSAgIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZSA6ZGF0YTpgU1RET1VUYCwKLSAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBhcHBsaWNhdGlvbnMgc2hvdWxkIGJlCi0gICBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUgaGFuZGxlIGFzIGZvciBzdGRvdXQuCisgICBhcmUgOmRhdGE6YFBJUEVgLCA6ZGF0YTpgREVWTlVMTGAsIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciAoYSBwb3NpdGl2ZQorICAgaW50ZWdlciksIGFuIGV4aXN0aW5nIDp0ZXJtOmBmaWxlIG9iamVjdGAsIGFuZCBgYE5vbmVgYC4gIDpkYXRhOmBQSVBFYAorICAgaW5kaWNhdGVzIHRoYXQgYSBuZXcgcGlwZSB0byB0aGUgY2hpbGQgc2hvdWxkIGJlIGNyZWF0ZWQuICA6ZGF0YTpgREVWTlVMTGAKKyAgIGluZGljYXRlcyB0aGF0IHRoZSBzcGVjaWFsIGZpbGUgOmRhdGE6YG9zLmRldm51bGxgIHdpbGwgYmUgdXNlZC4gV2l0aCB0aGUKKyAgIGRlZmF1bHQgc2V0dGluZ3Mgb2YgYGBOb25lYGAsIG5vIHJlZGlyZWN0aW9uIHdpbGwgb2NjdXI7IHRoZSBjaGlsZCdzIGZpbGUKKyAgIGhhbmRsZXMgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50LiAgQWRkaXRpb25hbGx5LCAqc3RkZXJyKiBjYW4gYmUKKyAgIDpkYXRhOmBTVERPVVRgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3RkZXJyIGRhdGEgZnJvbSB0aGUgYXBwbGljYXRpb25zCisgICBzaG91bGQgYmUgY2FwdHVyZWQgaW50byB0aGUgc2FtZSBmaWxlIGhhbmRsZSBhcyBmb3Igc3Rkb3V0LgogCiAgICBJZiAqcHJlZXhlY19mbiogaXMgc2V0IHRvIGEgY2FsbGFibGUgb2JqZWN0LCB0aGlzIG9iamVjdCB3aWxsIGJlIGNhbGxlZCBpbiB0aGUKICAgIGNoaWxkIHByb2Nlc3MganVzdCBiZWZvcmUgdGhlIGNoaWxkIGlzIGV4ZWN1dGVkLgpAQCAtNDk4LDYgKzU2NywxNSBAQAogOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBpZiB0aGUgY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybgogY29kZS4KIAorQWxsIG9mIHRoZSBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgdGhhdCBhY2NlcHQgYSAqdGltZW91dCogcGFyYW1ldGVyLCBzdWNoIGFzCis6ZnVuYzpgY2FsbGAgYW5kIDptZXRoOmBQb3Blbi5jb21tdW5pY2F0ZWAgd2lsbCByYWlzZSA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgaWYKK3RoZSB0aW1lb3V0IGV4cGlyZXMgYmVmb3JlIHRoZSBwcm9jZXNzIGV4aXRzLgorCitFeGNlcHRpb25zIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgYWxsIGluaGVyaXQgZnJvbSA6ZXhjOmBTdWJwcm9jZXNzRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSA6ZXhjOmBTdWJwcm9jZXNzRXJyb3JgIGJhc2UgY2xhc3Mgd2FzIGFkZGVkLgorCiAKIFNlY3VyaXR5CiBeXl5eXl5eXgpAQCAtNTIxLDExICs1OTksMTUgQEAKICAgIGF0dHJpYnV0ZS4KIAogCi0uLiBtZXRob2Q6OiBQb3Blbi53YWl0KCkKKy4uIG1ldGhvZDo6IFBvcGVuLndhaXQodGltZW91dD1Ob25lKQogCiAgICBXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFNldCBhbmQgcmV0dXJuIDphdHRyOmByZXR1cm5jb2RlYAogICAgYXR0cmlidXRlLgogCisgICBJZiB0aGUgcHJvY2VzcyBkb2VzIG5vdCB0ZXJtaW5hdGUgYWZ0ZXIgKnRpbWVvdXQqIHNlY29uZHMsIHJhaXNlIGEKKyAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24uICBJdCBpcyBzYWZlIHRvIGNhdGNoIHRoaXMgZXhjZXB0aW9uIGFuZAorICAgcmV0cnkgdGhlIHdhaXQuCisKICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBUaGlzIHdpbGwgZGVhZGxvY2sgd2hlbiB1c2luZyBgYHN0ZG91dD1QSVBFYGAgYW5kL29yCkBAIC01MzMsMTMgKzYxNSwxNyBAQAogICAgICAgYSBwaXBlIHN1Y2ggdGhhdCBpdCBibG9ja3Mgd2FpdGluZyBmb3IgdGhlIE9TIHBpcGUgYnVmZmVyIHRvCiAgICAgICBhY2NlcHQgbW9yZSBkYXRhLiAgVXNlIDptZXRoOmBjb21tdW5pY2F0ZWAgdG8gYXZvaWQgdGhhdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKLS4uIG1ldGhvZDo6IFBvcGVuLmNvbW11bmljYXRlKGlucHV0PU5vbmUpCisKKy4uIG1ldGhvZDo6IFBvcGVuLmNvbW11bmljYXRlKGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSkKIAogICAgSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbSBzdGRvdXQgYW5kIHN0ZGVyciwKLSAgIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gVGhlIG9wdGlvbmFsCi0gICAqaW5wdXQqIGFyZ3VtZW50IHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nIHRvIGJlIHNlbnQgdG8gdGhlIGNoaWxkIHByb2Nlc3MsIG9yCi0gICBgYE5vbmVgYCwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuCisgICB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkLiAgV2FpdCBmb3IgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwKKyAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKKyAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4gIFRoZSB0eXBlIG9mICppbnB1dCoKKyAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCiAKICAgIDptZXRoOmBjb21tdW5pY2F0ZWAgcmV0dXJucyBhIHR1cGxlIGBgKHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpYGAuCiAKQEAgLTU0OCwxMSArNjM0LDI5IEBACiAgICBgYE5vbmVgYCBpbiB0aGUgcmVzdWx0IHR1cGxlLCB5b3UgbmVlZCB0byBnaXZlIGBgc3Rkb3V0PVBJUEVgYCBhbmQvb3IKICAgIGBgc3RkZXJyPVBJUEVgYCB0b28uCiAKKyAgIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHRlcm1pbmF0ZSBhZnRlciAqdGltZW91dCogc2Vjb25kcywgYQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4gIENhdGNoaW5nIHRoaXMgZXhjZXB0aW9uIGFuZAorICAgcmV0cnlpbmcgY29tbXVuaWNhdGlvbiB3aWxsIG5vdCBsb3NlIGFueSBvdXRwdXQuCisKKyAgIFRoZSBjaGlsZCBwcm9jZXNzIGlzIG5vdCBraWxsZWQgaWYgdGhlIHRpbWVvdXQgZXhwaXJlcywgc28gaW4gb3JkZXIgdG8KKyAgIGNsZWFudXAgcHJvcGVybHkgYSB3ZWxsLWJlaGF2ZWQgYXBwbGljYXRpb24gc2hvdWxkIGtpbGwgdGhlIGNoaWxkIHByb2Nlc3MgYW5kCisgICBmaW5pc2ggY29tbXVuaWNhdGlvbjo6CisKKyAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKC4uLikKKyAgICAgIHRyeToKKyAgICAgICAgICBvdXRzLCBlcnJzID0gcHJvYy5jb21tdW5pY2F0ZSh0aW1lb3V0PTE1KQorICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgIHByb2Mua2lsbCgpCisgICAgICAgICAgb3V0cywgZXJycyA9IHByb2MuY29tbXVuaWNhdGUoKQorCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhlIGRhdGEgcmVhZCBpcyBidWZmZXJlZCBpbiBtZW1vcnksIHNvIGRvIG5vdCB1c2UgdGhpcyBtZXRob2QgaWYgdGhlIGRhdGEKICAgICAgIHNpemUgaXMgbGFyZ2Ugb3IgdW5saW1pdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBQb3Blbi5zZW5kX3NpZ25hbChzaWduYWwpCiAKQEAgLTk5NCwzICsxMDk4LDkgQEAKICAgIGJhY2tzbGFzaC4gIElmIHRoZSBudW1iZXIgb2YgYmFja3NsYXNoZXMgaXMgb2RkLCB0aGUgbGFzdAogICAgYmFja3NsYXNoIGVzY2FwZXMgdGhlIG5leHQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIGFzCiAgICBkZXNjcmliZWQgaW4gcnVsZSAzLgorCisKKy4uIHNlZWFsc286OgorCisgICA6bW9kOmBzaGxleGAKKyAgICAgIE1vZHVsZSB3aGljaCBwcm92aWRlcyBmdW5jdGlvbiB0byBwYXJzZSBhbmQgZXNjYXBlIGNvbW1hbmQgbGluZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXMucnN0IGIvRG9jL2xpYnJhcnkvc3lzLnJzdAppbmRleCAwZTRhZGVjLi5jZDZkNGJmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKQEAgLTI5LDYgKzI5LDMzIEBACiAgICBjb21tYW5kIGxpbmUsIHNlZSB0aGUgOm1vZDpgZmlsZWlucHV0YCBtb2R1bGUuCiAKIAorLi4gZGF0YTo6IGJhc2VfZXhlY19wcmVmaXgKKworICAgU2V0IGR1cmluZyBQeXRob24gc3RhcnR1cCwgYmVmb3JlIGBgc2l0ZS5weWBgIGlzIHJ1biwgdG8gdGhlIHNhbWUgdmFsdWUgYXMKKyAgIDpkYXRhOmBleGVjX3ByZWZpeGAuIElmIG5vdCBydW5uaW5nIGluIGEKKyAgIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAsIHRoZSB2YWx1ZXMgd2lsbCBzdGF5IHRoZSBzYW1lOyBpZgorICAgYGBzaXRlLnB5YGAgZmluZHMgdGhhdCBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgaW4gdXNlLCB0aGUgdmFsdWVzIG9mCisgICA6ZGF0YTpgcHJlZml4YCBhbmQgOmRhdGE6YGV4ZWNfcHJlZml4YCB3aWxsIGJlIGNoYW5nZWQgdG8gcG9pbnQgdG8gdGhlCisgICB2aXJ0dWFsIGVudmlyb25tZW50LCB3aGVyZWFzIDpkYXRhOmBiYXNlX3ByZWZpeGAgYW5kCisgICA6ZGF0YTpgYmFzZV9leGVjX3ByZWZpeGAgd2lsbCByZW1haW4gcG9pbnRpbmcgdG8gdGhlIGJhc2UgUHl0aG9uCisgICBpbnN0YWxsYXRpb24gKHRoZSBvbmUgd2hpY2ggdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2FzIGNyZWF0ZWQgZnJvbSkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBiYXNlX3ByZWZpeAorCisgICBTZXQgZHVyaW5nIFB5dGhvbiBzdGFydHVwLCBiZWZvcmUgYGBzaXRlLnB5YGAgaXMgcnVuLCB0byB0aGUgc2FtZSB2YWx1ZSBhcworICAgOmRhdGE6YHByZWZpeGAuIElmIG5vdCBydW5uaW5nIGluIGEgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudCA8dmVudi1kZWY+YCwgdGhlIHZhbHVlcworICAgd2lsbCBzdGF5IHRoZSBzYW1lOyBpZiBgYHNpdGUucHlgYCBmaW5kcyB0aGF0IGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBpbgorICAgdXNlLCB0aGUgdmFsdWVzIG9mIDpkYXRhOmBwcmVmaXhgIGFuZCA6ZGF0YTpgZXhlY19wcmVmaXhgIHdpbGwgYmUgY2hhbmdlZCB0bworICAgcG9pbnQgdG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmRhdGE6YGJhc2VfcHJlZml4YCBhbmQKKyAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YCB3aWxsIHJlbWFpbiBwb2ludGluZyB0byB0aGUgYmFzZSBQeXRob24KKyAgIGluc3RhbGxhdGlvbiAodGhlIG9uZSB3aGljaCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3YXMgY3JlYXRlZCBmcm9tKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZGF0YTo6IGJ5dGVvcmRlcgogCiAgICBBbiBpbmRpY2F0b3Igb2YgdGhlIG5hdGl2ZSBieXRlIG9yZGVyLiAgVGhpcyB3aWxsIGhhdmUgdGhlIHZhbHVlIGBgJ2JpZydgYCBvbgpAQCAtODAsNiArMTA3LDIyIEBACiAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciBpbnRlcm5hbCBhbmQgc3BlY2lhbGl6ZWQgcHVycG9zZXMgb25seS4KIAogCisuLiBmdW5jdGlvbjo6IF9kZWJ1Z21hbGxvY3N0YXRzKCkKKworICAgUHJpbnQgbG93LWxldmVsIGluZm9ybWF0aW9uIHRvIHN0ZGVyciBhYm91dCB0aGUgc3RhdGUgb2YgQ1B5dGhvbidzIG1lbW9yeQorICAgYWxsb2NhdG9yLgorCisgICBJZiBQeXRob24gaXMgY29uZmlndXJlZCAtLXdpdGgtcHlkZWJ1ZywgaXQgYWxzbyBwZXJmb3JtcyBzb21lIGV4cGVuc2l2ZQorICAgaW50ZXJuYWwgY29uc2lzdGVuY3kgY2hlY2tzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gaW1wbC1kZXRhaWw6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHNwZWNpZmljIHRvIENQeXRob24uICBUaGUgZXhhY3Qgb3V0cHV0IGZvcm1hdCBpcyBub3QKKyAgICAgIGRlZmluZWQgaGVyZSwgYW5kIG1heSBjaGFuZ2UuCisKKwogLi4gZGF0YTo6IGRsbGhhbmRsZQogCiAgICBJbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIGhhbmRsZSBvZiB0aGUgUHl0aG9uIERMTC4gQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgpAQCAtMTk5LDYgKzI0MiwxMSBAQAogICAgaW5zdGFsbGVkIGluIDpmaWxlOmB7ZXhlY19wcmVmaXh9L2xpYi9weXRob257WC5ZfS9saWItZHlubG9hZGAsIHdoZXJlICpYLlkqCiAgICBpcyB0aGUgdmVyc2lvbiBudW1iZXIgb2YgUHl0aG9uLCBmb3IgZXhhbXBsZSBgYDMuMmBgLgogCisgICAuLiBub3RlOjogSWYgYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gIGlzIGluIGVmZmVjdCwgdGhpcworICAgICAgdmFsdWUgd2lsbCBiZSBjaGFuZ2VkIGluIGBgc2l0ZS5weWBgIHRvIHBvaW50IHRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICAgVGhlIHZhbHVlIGZvciB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZSwgdmlhCisgICAgICA6ZGF0YTpgYmFzZV9leGVjX3ByZWZpeGAuCisKIAogLi4gZGF0YTo6IGV4ZWN1dGFibGUKIApAQCAtMjM1LDE0ICsyODMsMTMgQEAKIAogLi4gZGF0YTo6IGZsYWdzCiAKLSAgIFRoZSBzdHJ1Y3Qgc2VxdWVuY2UgKmZsYWdzKiBleHBvc2VzIHRoZSBzdGF0dXMgb2YgY29tbWFuZCBsaW5lIGZsYWdzLiBUaGUKLSAgIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4KKyAgIFRoZSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCAqZmxhZ3MqIGV4cG9zZXMgdGhlIHN0YXR1cyBvZiBjb21tYW5kIGxpbmUKKyAgIGZsYWdzLiBUaGUgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgogCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgYXR0cmlidXRlICAgICAgICAgICAgICAgICAgICAgZmxhZwogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDpjb25zdDpgZGVidWdgICAgICAgICAgICAgICAgIDpvcHRpb246YC1kYAotICAgOmNvbnN0OmBkaXZpc2lvbl93YXJuaW5nYCAgICAgOm9wdGlvbjpgLVFgCiAgICA6Y29uc3Q6YGluc3BlY3RgICAgICAgICAgICAgICA6b3B0aW9uOmAtaWAKICAgIDpjb25zdDpgaW50ZXJhY3RpdmVgICAgICAgICAgIDpvcHRpb246YC1pYAogICAgOmNvbnN0OmBvcHRpbWl6ZWAgICAgICAgICAgICAgOm9wdGlvbjpgLU9gIG9yIDpvcHRpb246YC1PT2AKQEAgLTI2MiwxNSArMzA5LDE4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIuMwogICAgICAgVGhlIGBgaGFzaF9yYW5kb21pemF0aW9uYGAgYXR0cmlidXRlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCBvYnNvbGV0ZSBgYGRpdmlzaW9uX3dhcm5pbmdgYCBhdHRyaWJ1dGUuCisKIAogLi4gZGF0YTo6IGZsb2F0X2luZm8KIAotICAgQSBzdHJ1Y3RzZXEgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgdHlwZS4gSXQgY29udGFpbnMgbG93IGxldmVsCi0gICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJlY2lzaW9uIGFuZCBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gIFRoZSB2YWx1ZXMKLSAgIGNvcnJlc3BvbmQgdG8gdGhlIHZhcmlvdXMgZmxvYXRpbmctcG9pbnQgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkCi0gICBoZWFkZXIgZmlsZSA6ZmlsZTpgZmxvYXQuaGAgZm9yIHRoZSAnQycgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHNlZSBzZWN0aW9uCi0gICA1LjIuNC4yLjIgb2YgdGhlIDE5OTkgSVNPL0lFQyBDIHN0YW5kYXJkIFtDOTldXywgJ0NoYXJhY3RlcmlzdGljcyBvZgotICAgZmxvYXRpbmcgdHlwZXMnLCBmb3IgZGV0YWlscy4KKyAgIEEgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgdHlwZS4gSXQKKyAgIGNvbnRhaW5zIGxvdyBsZXZlbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJlY2lzaW9uIGFuZCBpbnRlcm5hbAorICAgcmVwcmVzZW50YXRpb24uICBUaGUgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhlIHZhcmlvdXMgZmxvYXRpbmctcG9pbnQKKyAgIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSBzdGFuZGFyZCBoZWFkZXIgZmlsZSA6ZmlsZTpgZmxvYXQuaGAgZm9yIHRoZSAnQycKKyAgIHByb2dyYW1taW5nIGxhbmd1YWdlOyBzZWUgc2VjdGlvbiA1LjIuNC4yLjIgb2YgdGhlIDE5OTkgSVNPL0lFQyBDIHN0YW5kYXJkCisgICBbQzk5XV8sICdDaGFyYWN0ZXJpc3RpY3Mgb2YgZmxvYXRpbmcgdHlwZXMnLCBmb3IgZGV0YWlscy4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBhdHRyaWJ1dGUgICAgICAgICAgIHwgZmxvYXQuaCBtYWNybyAgfCBleHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtNDA5LDYgKzQ1OSw5IEBACiAgICBkb2VzIG5vdCBoYXZlIHRvIGhvbGQgdHJ1ZSBmb3IgdGhpcmQtcGFydHkgZXh0ZW5zaW9ucyBhcyBpdCBpcyBpbXBsZW1lbnRhdGlvbgogICAgc3BlY2lmaWMuCiAKKyAgIE9ubHkgdGhlIG1lbW9yeSBjb25zdW1wdGlvbiBkaXJlY3RseSBhdHRyaWJ1dGVkIHRvIHRoZSBvYmplY3QgaXMKKyAgIGFjY291bnRlZCBmb3IsIG5vdCB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIG9mIG9iamVjdHMgaXQgcmVmZXJzIHRvLgorCiAgICBJZiBnaXZlbiwgKmRlZmF1bHQqIHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIG9iamVjdCBkb2VzIG5vdCBwcm92aWRlIG1lYW5zIHRvCiAgICByZXRyaWV2ZSB0aGUgc2l6ZS4gIE90aGVyd2lzZSBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKQEAgLTUyMCw4ICs1NzMsOSBAQAogCiAuLiBkYXRhOjogaGFzaF9pbmZvCiAKLSAgIEEgc3RydWN0c2VxIGdpdmluZyBwYXJhbWV0ZXJzIG9mIHRoZSBudW1lcmljIGhhc2ggaW1wbGVtZW50YXRpb24uICBGb3IKLSAgIG1vcmUgZGV0YWlscyBhYm91dCBoYXNoaW5nIG9mIG51bWVyaWMgdHlwZXMsIHNlZSA6cmVmOmBudW1lcmljLWhhc2hgLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBnaXZpbmcgcGFyYW1ldGVycyBvZiB0aGUgbnVtZXJpYyBoYXNoCisgICBpbXBsZW1lbnRhdGlvbi4gIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgaGFzaGluZyBvZiBudW1lcmljIHR5cGVzLCBzZWUKKyAgIDpyZWY6YG51bWVyaWMtaGFzaGAuCiAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGF0dHJpYnV0ZSAgICAgICAgICAgfCBleHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtNTU2LDggKzYxMCw4IEBACiAKICAgIFRoaXMgaXMgY2FsbGVkIGBgaGV4dmVyc2lvbmBgIHNpbmNlIGl0IG9ubHkgcmVhbGx5IGxvb2tzIG1lYW5pbmdmdWwgd2hlbiB2aWV3ZWQKICAgIGFzIHRoZSByZXN1bHQgb2YgcGFzc2luZyBpdCB0byB0aGUgYnVpbHQtaW4gOmZ1bmM6YGhleGAgZnVuY3Rpb24uICBUaGUKLSAgIHN0cnVjdCBzZXF1ZW5jZSAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gIG1heSBiZSB1c2VkIGZvciBhIG1vcmUgaHVtYW4tZnJpZW5kbHkKLSAgIGVuY29kaW5nIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uLgorICAgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgIDpkYXRhOmBzeXMudmVyc2lvbl9pbmZvYCBtYXkgYmUgdXNlZCBmb3IgYSBtb3JlCisgICBodW1hbi1mcmllbmRseSBlbmNvZGluZyBvZiB0aGUgc2FtZSBpbmZvcm1hdGlvbi4KIAogICAgVGhlIGBgaGV4dmVyc2lvbmBgIGlzIGEgMzItYml0IG51bWJlciB3aXRoIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgogCkBAIC01ODMsMTAgKzYzNyw1MSBAQAogCiAgICBUaHVzIGBgMi4xLjBhM2BgIGlzIGhleHZlcnNpb24gYGAweDAyMDEwMGEzYGAuCiAKKworLi4gZGF0YTo6IGltcGxlbWVudGF0aW9uCisKKyAgIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgIGN1cnJlbnRseSBydW5uaW5nIFB5dGhvbiBpbnRlcnByZXRlci4gIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUKKyAgIHJlcXVpcmVkIHRvIGV4aXN0IGluIGFsbCBQeXRob24gaW1wbGVtZW50YXRpb25zLgorCisgICAqbmFtZSogaXMgdGhlIGltcGxlbWVudGF0aW9uJ3MgaWRlbnRpZmllciwgZS5nLiBgYCdjcHl0aG9uJ2BgLiAgVGhlIGFjdHVhbAorICAgc3RyaW5nIGlzIGRlZmluZWQgYnkgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiwgYnV0IGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUKKyAgIGxvd2VyIGNhc2UuCisKKyAgICp2ZXJzaW9uKiBpcyBhIG5hbWVkIHR1cGxlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMKKyAgIDpkYXRhOmBzeXMudmVyc2lvbl9pbmZvYC4gIEl0IHJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgdGhlIFB5dGhvbgorICAgKmltcGxlbWVudGF0aW9uKi4gIFRoaXMgaGFzIGEgZGlzdGluY3QgbWVhbmluZyBmcm9tIHRoZSBzcGVjaWZpYworICAgdmVyc2lvbiBvZiB0aGUgUHl0aG9uICpsYW5ndWFnZSogdG8gd2hpY2ggdGhlIGN1cnJlbnRseSBydW5uaW5nCisgICBpbnRlcnByZXRlciBjb25mb3Jtcywgd2hpY2ggYGBzeXMudmVyc2lvbl9pbmZvYGAgcmVwcmVzZW50cy4gIEZvcgorICAgZXhhbXBsZSwgZm9yIFB5UHkgMS44IGBgc3lzLmltcGxlbWVudGF0aW9uLnZlcnNpb25gYCBtaWdodCBiZQorICAgYGBzeXMudmVyc2lvbl9pbmZvKDEsIDgsIDAsICdmaW5hbCcsIDApYGAsIHdoZXJlYXMgYGBzeXMudmVyc2lvbl9pbmZvYGAKKyAgIHdvdWxkIGJlIGBgc3lzLnZlcnNpb25faW5mbygyLCA3LCAyLCAnZmluYWwnLCAwKWBgLiAgRm9yIENQeXRob24gdGhleQorICAgYXJlIHRoZSBzYW1lIHZhbHVlLCBzaW5jZSBpdCBpcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLgorCisgICAqaGV4dmVyc2lvbiogaXMgdGhlIGltcGxlbWVudGF0aW9uIHZlcnNpb24gaW4gaGV4YWRlY2ltYWwgZm9ybWF0LCBsaWtlCisgICA6ZGF0YTpgc3lzLmhleHZlcnNpb25gLgorCisgICAqY2FjaGVfdGFnKiBpcyB0aGUgdGFnIHVzZWQgYnkgdGhlIGltcG9ydCBtYWNoaW5lcnkgaW4gdGhlIGZpbGVuYW1lcyBvZgorICAgY2FjaGVkIG1vZHVsZXMuICBCeSBjb252ZW50aW9uLCBpdCB3b3VsZCBiZSBhIGNvbXBvc2l0ZSBvZiB0aGUKKyAgIGltcGxlbWVudGF0aW9uJ3MgbmFtZSBhbmQgdmVyc2lvbiwgbGlrZSBgYCdjcHl0aG9uLTMzJ2BgLiAgSG93ZXZlciwgYQorICAgUHl0aG9uIGltcGxlbWVudGF0aW9uIG1heSB1c2Ugc29tZSBvdGhlciB2YWx1ZSBpZiBhcHByb3ByaWF0ZS4gIElmCisgICBgYGNhY2hlX3RhZ2BgIGlzIHNldCB0byBgYE5vbmVgYCwgaXQgaW5kaWNhdGVzIHRoYXQgbW9kdWxlIGNhY2hpbmcgc2hvdWxkCisgICBiZSBkaXNhYmxlZC4KKworICAgOmRhdGE6YHN5cy5pbXBsZW1lbnRhdGlvbmAgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHNwZWNpZmljIHRvCisgICB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLiAgVGhlc2Ugbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZXMgbXVzdCBzdGFydCB3aXRoCisgICBhbiB1bmRlcnNjb3JlLCBhbmQgYXJlIG5vdCBkZXNjcmliZWQgaGVyZS4gIFJlZ2FyZGxlc3Mgb2YgaXRzIGNvbnRlbnRzLAorICAgOmRhdGE6YHN5cy5pbXBsZW1lbnRhdGlvbmAgd2lsbCBub3QgY2hhbmdlIGR1cmluZyBhIHJ1biBvZiB0aGUgaW50ZXJwcmV0ZXIsCisgICBub3IgYmV0d2VlbiBpbXBsZW1lbnRhdGlvbiB2ZXJzaW9ucy4gIChJdCBtYXkgY2hhbmdlIGJldHdlZW4gUHl0aG9uCisgICBsYW5ndWFnZSB2ZXJzaW9ucywgaG93ZXZlci4pICBTZWUgYFBFUCA0MjFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogaW50X2luZm8KIAotICAgQSBzdHJ1Y3Qgc2VxdWVuY2UgdGhhdCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBQeXRob24ncwotICAgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMuICBUaGUgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbidzIGludGVybmFsCisgICByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2Vycy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCiAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgIHwgRXhwbGFuYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtNjQxLDkgKzczNiwxMyBAQAogCiAuLiBkYXRhOjogbWF4dW5pY29kZQogCi0gICBBbiBpbnRlZ2VyIGdpdmluZyB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQgY29kZSBwb2ludCBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlci4gIFRoZQotICAgdmFsdWUgb2YgdGhpcyBkZXBlbmRzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIFVuaWNvZGUKLSAgIGNoYXJhY3RlcnMgYXJlIHN0b3JlZCBhcyBVQ1MtMiBvciBVQ1MtNC4KKyAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSB2YWx1ZSBvZiB0aGUgbGFyZ2VzdCBVbmljb2RlIGNvZGUgcG9pbnQsCisgICBpLmUuIGBgMTExNDExMWBgIChgYDB4MTBGRkZGYGAgaW4gaGV4YWRlY2ltYWwpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQmVmb3JlIDpwZXA6YDM5M2AsIGBgc3lzLm1heHVuaWNvZGVgYCB1c2VkIHRvIGJlIGVpdGhlciBgYDB4RkZGRmBgCisgICAgICBvciBgYDB4MTBGRkZGYGAsIGRlcGVuZGluZyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBzcGVjaWZpZWQKKyAgICAgIHdoZXRoZXIgVW5pY29kZSBjaGFyYWN0ZXJzIHdlcmUgc3RvcmVkIGFzIFVDUy0yIG9yIFVDUy00LgogCiAKIC4uIGRhdGE6OiBtZXRhX3BhdGgKQEAgLTcxOCwzNiArODE3LDM1IEBACiAgICBUaGlzIHN0cmluZyBjb250YWlucyBhIHBsYXRmb3JtIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBlbmQKICAgIHBsYXRmb3JtLXNwZWNpZmljIGNvbXBvbmVudHMgdG8gOmRhdGE6YHN5cy5wYXRoYCwgZm9yIGluc3RhbmNlLgogCi0gICBGb3IgbW9zdCBVbml4IHN5c3RlbXMsIHRoaXMgaXMgdGhlIGxvd2VyY2FzZWQgT1MgbmFtZSBhcyByZXR1cm5lZCBieSBgYHVuYW1lCi0gICAtc2BgIHdpdGggdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHZlcnNpb24gYXMgcmV0dXJuZWQgYnkgYGB1bmFtZSAtcmBgIGFwcGVuZGVkLAotICAgZS5nLiBgYCdzdW5vczUnYGAsICphdCB0aGUgdGltZSB3aGVuIFB5dGhvbiB3YXMgYnVpbHQqLiAgVW5sZXNzIHlvdSB3YW50IHRvCi0gICB0ZXN0IGZvciBhIHNwZWNpZmljIHN5c3RlbSB2ZXJzaW9uLCBpdCBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gdXNlIHRoZQotICAgZm9sbG93aW5nIGlkaW9tOjoKKyAgIEZvciBVbml4IHN5c3RlbXMsIGV4Y2VwdCBvbiBMaW51eCwgdGhpcyBpcyB0aGUgbG93ZXJjYXNlZCBPUyBuYW1lIGFzCisgICByZXR1cm5lZCBieSBgYHVuYW1lIC1zYGAgd2l0aCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgdmVyc2lvbiBhcyByZXR1cm5lZCBieQorICAgYGB1bmFtZSAtcmBgIGFwcGVuZGVkLCBlLmcuIGBgJ3N1bm9zNSdgYCBvciBgYCdmcmVlYnNkOCdgYCwgKmF0IHRoZSB0aW1lCisgICB3aGVuIFB5dGhvbiB3YXMgYnVpbHQqLiAgVW5sZXNzIHlvdSB3YW50IHRvIHRlc3QgZm9yIGEgc3BlY2lmaWMgc3lzdGVtCisgICB2ZXJzaW9uLCBpdCBpcyB0aGVyZWZvcmUgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBmb2xsb3dpbmcgaWRpb206OgogCiAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpOgogICAgICAgICAgICMgRnJlZUJTRC1zcGVjaWZpYyBjb2RlIGhlcmUuLi4KICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgICAgIyBMaW51eC1zcGVjaWZpYyBjb2RlIGhlcmUuLi4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIuMgotICAgICAgU2luY2UgbG90cyBvZiBjb2RlIGNoZWNrIGZvciBgYHN5cy5wbGF0Zm9ybSA9PSAnbGludXgyJ2BgLCBhbmQgdGhlcmUgaXMKLSAgICAgIG5vIGVzc2VudGlhbCBjaGFuZ2UgYmV0d2VlbiBMaW51eCAyLnggYW5kIDMueCwgYGBzeXMucGxhdGZvcm1gYCBpcyBhbHdheXMKLSAgICAgIHNldCB0byBgYCdsaW51eDInYGAsIGV2ZW4gb24gTGludXggMy54LiAgSW4gUHl0aG9uIDMuMyBhbmQgbGF0ZXIsIHRoZQotICAgICAgdmFsdWUgd2lsbCBhbHdheXMgYmUgc2V0IHRvIGBgJ2xpbnV4J2BgLCBzbyBpdCBpcyByZWNvbW1lbmRlZCB0byBhbHdheXMKLSAgICAgIHVzZSB0aGUgYGBzdGFydHN3aXRoYGAgaWRpb20gcHJlc2VudGVkIGFib3ZlLgotCiAgICBGb3Igb3RoZXIgc3lzdGVtcywgdGhlIHZhbHVlcyBhcmU6CiAKLSAgID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICBTeXN0ZW0gICAgICAgICAgICAgICAgIDpkYXRhOmBwbGF0Zm9ybWAgdmFsdWUKLSAgID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICBMaW51eCAoMi54ICphbmQqIDMueCkgIGBgJ2xpbnV4MidgYAotICAgV2luZG93cyAgICAgICAgICAgICAgICBgYCd3aW4zMidgYAotICAgV2luZG93cy9DeWd3aW4gICAgICAgICBgYCdjeWd3aW4nYGAKLSAgIE1hYyBPUyBYICAgICAgICAgICAgICAgYGAnZGFyd2luJ2BgCi0gICBPUy8yICAgICAgICAgICAgICAgICAgIGBgJ29zMidgYAotICAgT1MvMiBFTVggICAgICAgICAgICAgICBgYCdvczJlbXgnYGAKLSAgID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgU3lzdGVtICAgICAgICAgICA6ZGF0YTpgcGxhdGZvcm1gIHZhbHVlCisgICA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgTGludXggICAgICAgICAgICBgYCdsaW51eCdgYAorICAgV2luZG93cyAgICAgICAgICBgYCd3aW4zMidgYAorICAgV2luZG93cy9DeWd3aW4gICBgYCdjeWd3aW4nYGAKKyAgIE1hYyBPUyBYICAgICAgICAgYGAnZGFyd2luJ2BgCisgICBPUy8yICAgICAgICAgICAgIGBgJ29zMidgYAorICAgT1MvMiBFTVggICAgICAgICBgYCdvczJlbXgnYGAKKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBPbiBMaW51eCwgOmF0dHI6YHN5cy5wbGF0Zm9ybWAgZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uIGFueW1vcmUuCisgICAgICBJdCBpcyBhbHdheXMgYGAnbGludXgnYGAsIGluc3RlYWQgb2YgYGAnbGludXgyJ2BgIG9yIGBgJ2xpbnV4MydgYC4gIFNpbmNlCisgICAgICBvbGRlciBQeXRob24gdmVyc2lvbnMgaW5jbHVkZSB0aGUgdmVyc2lvbiBudW1iZXIsIGl0IGlzIHJlY29tbWVuZGVkIHRvCisgICAgICBhbHdheXMgdXNlIHRoZSBgYHN0YXJ0c3dpdGhgYCBpZGlvbSBwcmVzZW50ZWQgYWJvdmUuCiAKICAgIC4uIHNlZWFsc286OgogCkBAIC03NjQsMTEgKzg2MiwxNiBAQAogICAgaW5kZXBlbmRlbnQgUHl0aG9uIGZpbGVzIGFyZSBpbnN0YWxsZWQ7IGJ5IGRlZmF1bHQsIHRoaXMgaXMgdGhlIHN0cmluZwogICAgYGAnL3Vzci9sb2NhbCdgYC4gIFRoaXMgY2FuIGJlIHNldCBhdCBidWlsZCB0aW1lIHdpdGggdGhlIGBgLS1wcmVmaXhgYAogICAgYXJndW1lbnQgdG8gdGhlIDpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdC4gIFRoZSBtYWluIGNvbGxlY3Rpb24gb2YgUHl0aG9uCi0gICBsaWJyYXJ5IG1vZHVsZXMgaXMgaW5zdGFsbGVkIGluIHRoZSBkaXJlY3RvcnkgOmZpbGU6YHtwcmVmaXh9L2xpYi9weXRob257WC5ZfWBgCisgICBsaWJyYXJ5IG1vZHVsZXMgaXMgaW5zdGFsbGVkIGluIHRoZSBkaXJlY3RvcnkgOmZpbGU6YHtwcmVmaXh9L2xpYi9weXRob257WC5ZfWAKICAgIHdoaWxlIHRoZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBoZWFkZXIgZmlsZXMgKGFsbCBleGNlcHQgOmZpbGU6YHB5Y29uZmlnLmhgKSBhcmUKICAgIHN0b3JlZCBpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZS9weXRob257WC5ZfWAsIHdoZXJlICpYLlkqIGlzIHRoZSB2ZXJzaW9uCiAgICBudW1iZXIgb2YgUHl0aG9uLCBmb3IgZXhhbXBsZSBgYDMuMmBgLgogCisgICAuLiBub3RlOjogSWYgYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gIGlzIGluIGVmZmVjdCwgdGhpcworICAgICAgdmFsdWUgd2lsbCBiZSBjaGFuZ2VkIGluIGBgc2l0ZS5weWBgIHRvIHBvaW50IHRvIHRoZSB2aXJ0dWFsCisgICAgICBlbnZpcm9ubWVudC4gVGhlIHZhbHVlIGZvciB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB3aWxsIHN0aWxsIGJlCisgICAgICBhdmFpbGFibGUsIHZpYSA6ZGF0YTpgYmFzZV9wcmVmaXhgLgorCiAKIC4uIGRhdGE6OiBwczEKICAgICAgICAgICBwczIKQEAgLTgwNiwxMSArOTA5LDExIEBACiAgICB0aGUgaW50ZXJwcmV0ZXIgbG9hZHMgZXh0ZW5zaW9uIG1vZHVsZXMuICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgd2lsbCBlbmFibGUgYQogICAgbGF6eSByZXNvbHZpbmcgb2Ygc3ltYm9scyB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSwgaWYgY2FsbGVkIGFzCiAgICBgYHN5cy5zZXRkbG9wZW5mbGFncygwKWBgLiAgVG8gc2hhcmUgc3ltYm9scyBhY3Jvc3MgZXh0ZW5zaW9uIG1vZHVsZXMsIGNhbGwgYXMKLSAgIGBgc3lzLnNldGRsb3BlbmZsYWdzKGN0eXBlcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUKLSAgIGZsYWcgbW9kdWxlcyBjYW4gYmUgZWl0aGVyIGZvdW5kIGluIHRoZSA6bW9kOmBjdHlwZXNgIG1vZHVsZSwgb3IgaW4gdGhlIDptb2Q6YERMRkNOYAotICAgbW9kdWxlLiBJZiA6bW9kOmBETEZDTmAgaXMgbm90IGF2YWlsYWJsZSwgaXQgY2FuIGJlIGdlbmVyYXRlZCBmcm9tCi0gICA6ZmlsZTpgL3Vzci9pbmNsdWRlL2RsZmNuLmhgIHVzaW5nIHRoZSA6cHJvZ3JhbTpgaDJweWAgc2NyaXB0LiBBdmFpbGFiaWxpdHk6Ci0gICBVbml4LgorICAgYGBzeXMuc2V0ZGxvcGVuZmxhZ3Mob3MuUlRMRF9HTE9CQUwpYGAuICBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWcgbW9kdWxlcworICAgY2FuIGJlIGZvdW5kIGluIHRoZSA6bW9kOmBvc2AgbW9kdWxlIChgYFJUTERfeHh4YGAgY29uc3RhbnRzLCBlLmcuCisgICA6ZGF0YTpgb3MuUlRMRF9MQVpZYCkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogLi4gZnVuY3Rpb246OiBzZXRwcm9maWxlKHByb2ZpbGVmdW5jKQogCkBAIC0xMDAzLDIyICsxMTA2LDMzIEBACiAgICAgICAgdG8gYSBjb25zb2xlIGFuZCBQeXRob24gYXBwcyBzdGFydGVkIHdpdGggOnByb2dyYW06YHB5dGhvbndgLgogCiAKLS4uIGRhdGE6OiBzdWJ2ZXJzaW9uCisuLiBkYXRhOjogdGhyZWFkX2luZm8KIAotICAgQSB0cmlwbGUgKHJlcG8sIGJyYW5jaCwgdmVyc2lvbikgcmVwcmVzZW50aW5nIHRoZSBTdWJ2ZXJzaW9uIGluZm9ybWF0aW9uIG9mIHRoZQotICAgUHl0aG9uIGludGVycHJldGVyLiAqcmVwbyogaXMgdGhlIG5hbWUgb2YgdGhlIHJlcG9zaXRvcnksIGBgJ0NQeXRob24nYGAuCi0gICAqYnJhbmNoKiBpcyBhIHN0cmluZyBvZiBvbmUgb2YgdGhlIGZvcm1zIGBgJ3RydW5rJ2BgLCBgYCdicmFuY2hlcy9uYW1lJ2BgIG9yCi0gICBgYCd0YWdzL25hbWUnYGAuICp2ZXJzaW9uKiBpcyB0aGUgb3V0cHV0IG9mIGBgc3ZudmVyc2lvbmBgLCBpZiB0aGUgaW50ZXJwcmV0ZXIKLSAgIHdhcyBidWlsdCBmcm9tIGEgU3VidmVyc2lvbiBjaGVja291dDsgaXQgY29udGFpbnMgdGhlIHJldmlzaW9uIG51bWJlciAocmFuZ2UpCi0gICBhbmQgcG9zc2libHkgYSB0cmFpbGluZyAnTScgaWYgdGhlcmUgd2VyZSBsb2NhbCBtb2RpZmljYXRpb25zLiBJZiB0aGUgdHJlZSB3YXMKLSAgIGV4cG9ydGVkIChvciBzdm52ZXJzaW9uIHdhcyBub3QgYXZhaWxhYmxlKSwgaXQgaXMgdGhlIHJldmlzaW9uIG9mCi0gICBgYEluY2x1ZGUvcGF0Y2hsZXZlbC5oYGAgaWYgdGhlIGJyYW5jaCBpcyBhIHRhZy4gT3RoZXJ3aXNlLCBpdCBpcyBgYE5vbmVgYC4KKyAgIEEgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGhyZWFkCisgICBpbXBsZW1lbnRhdGlvbi4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuMi4xCi0gICAgICBQeXRob24gaXMgbm93IGBkZXZlbG9wZWQgPGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvPmBfIHVzaW5nCi0gICAgICBNZXJjdXJpYWwuICBJbiByZWNlbnQgUHl0aG9uIDMuMiBidWdmaXggcmVsZWFzZXMsIDpkYXRhOmBzdWJ2ZXJzaW9uYAotICAgICAgdGhlcmVmb3JlIGNvbnRhaW5zIHBsYWNlaG9sZGVyIGluZm9ybWF0aW9uLiAgSXQgaXMgcmVtb3ZlZCBpbiBQeXRob24KLSAgICAgIDMuMy4KKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBBdHRyaWJ1dGUgICAgICAgIHwgRXhwbGFuYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArPT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBuYW1lYCAgICB8IE5hbWUgb2YgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbjogICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdudCdgYDogV2luZG93cyB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ29zMidgYDogT1MvMiB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAncHRocmVhZCdgYDogUE9TSVggdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdzb2xhcmlzJ2BgOiBTb2xhcmlzIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YGxvY2tgICAgIHwgTmFtZSBvZiB0aGUgbG9jayBpbXBsZW1lbnRhdGlvbjogICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ3NlbWFwaG9yZSdgYDogYSBsb2NrIHVzZXMgYSBzZW1hcGhvcmUgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnbXV0ZXgrY29uZCdgYDogYSBsb2NrIHVzZXMgYSBtdXRleCAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICBhbmQgYSBjb25kaXRpb24gdmFyaWFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgTm9uZWBgIGlmIHRoaXMgaW5mb3JtYXRpb24gaXMgdW5rbm93biAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgdmVyc2lvbmAgfCBOYW1lIGFuZCB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeS4gSXQgaXMgYSBzdHJpbmcsIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IG9yIGBgTm9uZWBgIGlmIHRoZXNlIGluZm9ybWF0aW9ucyBhcmUgdW5rbm93bi4gICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGRhdGE6OiB0cmFjZWJhY2tsaW1pdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdCBiL0RvYy9saWJyYXJ5L3N5c2xvZy5yc3QKaW5kZXggOTc0ZWNmOS4uNmU5MGRjMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXNsb2cucnN0CkBAIC03OSwxMiArNzksMTQgQEAKIEZhY2lsaXRpZXM6CiAgICA6Y29uc3Q6YExPR19LRVJOYCwgOmNvbnN0OmBMT0dfVVNFUmAsIDpjb25zdDpgTE9HX01BSUxgLCA6Y29uc3Q6YExPR19EQUVNT05gLAogICAgOmNvbnN0OmBMT0dfQVVUSGAsIDpjb25zdDpgTE9HX0xQUmAsIDpjb25zdDpgTE9HX05FV1NgLCA6Y29uc3Q6YExPR19VVUNQYCwKLSAgIDpjb25zdDpgTE9HX0NST05gLCA6Y29uc3Q6YExPR19TWVNMT0dgIGFuZCA6Y29uc3Q6YExPR19MT0NBTDBgIHRvCi0gICA6Y29uc3Q6YExPR19MT0NBTDdgLgorICAgOmNvbnN0OmBMT0dfQ1JPTmAsIDpjb25zdDpgTE9HX1NZU0xPR2AsIDpjb25zdDpgTE9HX0xPQ0FMMGAgdG8KKyAgIDpjb25zdDpgTE9HX0xPQ0FMN2AsIGFuZCwgaWYgZGVmaW5lZCBpbiBgYDxzeXNsb2cuaD5gYCwKKyAgIDpjb25zdDpgTE9HX0FVVEhQUklWYC4KIAogTG9nIG9wdGlvbnM6Ci0gICA6Y29uc3Q6YExPR19QSURgLCA6Y29uc3Q6YExPR19DT05TYCwgOmNvbnN0OmBMT0dfTkRFTEFZYCwgOmNvbnN0OmBMT0dfTk9XQUlUYAotICAgYW5kIDpjb25zdDpgTE9HX1BFUlJPUmAgaWYgZGVmaW5lZCBpbiBgYDxzeXNsb2cuaD5gYC4KKyAgIDpjb25zdDpgTE9HX1BJRGAsIDpjb25zdDpgTE9HX0NPTlNgLCA6Y29uc3Q6YExPR19OREVMQVlgLCBhbmQsIGlmIGRlZmluZWQKKyAgIGluIGBgPHN5c2xvZy5oPmBgLCA6Y29uc3Q6YExPR19PREVMQVlgLCA6Y29uc3Q6YExPR19OT1dBSVRgLCBhbmQKKyAgIDpjb25zdDpgTE9HX1BFUlJPUmAuCiAKIAogRXhhbXBsZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RhcmZpbGUucnN0IGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKaW5kZXggNDZlNDkwMC4uODZkZDMzZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKQEAgLTEzLDEzICsxMywxMyBAQAogLS0tLS0tLS0tLS0tLS0KIAogVGhlIDptb2Q6YHRhcmZpbGVgIG1vZHVsZSBtYWtlcyBpdCBwb3NzaWJsZSB0byByZWFkIGFuZCB3cml0ZSB0YXIKLWFyY2hpdmVzLCBpbmNsdWRpbmcgdGhvc2UgdXNpbmcgZ3ppcCBvciBiejIgY29tcHJlc3Npb24uCithcmNoaXZlcywgaW5jbHVkaW5nIHRob3NlIHVzaW5nIGd6aXAsIGJ6MiBhbmQgbHptYSBjb21wcmVzc2lvbi4KIFVzZSB0aGUgOm1vZDpgemlwZmlsZWAgbW9kdWxlIHRvIHJlYWQgb3Igd3JpdGUgOmZpbGU6YC56aXBgIGZpbGVzLCBvciB0aGUKIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgaW4gOnJlZjpgc2h1dGlsIDxhcmNoaXZpbmctb3BlcmF0aW9ucz5gLgogCiBTb21lIGZhY3RzIGFuZCBmaWd1cmVzOgogCi0qIHJlYWRzIGFuZCB3cml0ZXMgOm1vZDpgZ3ppcGAgYW5kIDptb2Q6YGJ6MmAgY29tcHJlc3NlZCBhcmNoaXZlcy4KKyogcmVhZHMgYW5kIHdyaXRlcyA6bW9kOmBnemlwYCwgOm1vZDpgYnoyYCBhbmQgOm1vZDpgbHptYWAgY29tcHJlc3NlZCBhcmNoaXZlcy4KIAogKiByZWFkL3dyaXRlIHN1cHBvcnQgZm9yIHRoZSBQT1NJWC4xLTE5ODggKHVzdGFyKSBmb3JtYXQuCiAKQEAgLTMzLDYgKzMzLDkgQEAKICAgY2hhcmFjdGVyIGRldmljZXMgYW5kIGJsb2NrIGRldmljZXMgYW5kIGlzIGFibGUgdG8gYWNxdWlyZSBhbmQgcmVzdG9yZSBmaWxlCiAgIGluZm9ybWF0aW9uIGxpa2UgdGltZXN0YW1wLCBhY2Nlc3MgcGVybWlzc2lvbnMgYW5kIG93bmVyLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWRkZWQgc3VwcG9ydCBmb3IgOm1vZDpgbHptYWAgY29tcHJlc3Npb24uCisKIAogLi4gZnVuY3Rpb246OiBvcGVuKG5hbWU9Tm9uZSwgbW9kZT0ncicsIGZpbGVvYmo9Tm9uZSwgYnVmc2l6ZT0xMDI0MCwgXCpcKmt3YXJncykKIApAQCAtNTYsNiArNTksOCBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3I6YnoyJ2BgICAgICAgfCBPcGVuIGZvciByZWFkaW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24uICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdyOnh6J2BgICAgICAgIHwgT3BlbiBmb3IgcmVhZGluZyB3aXRoIGx6bWEgY29tcHJlc3Npb24uICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAnYScgb3IgJ2E6J2BgICB8IE9wZW4gZm9yIGFwcGVuZGluZyB3aXRoIG5vIGNvbXByZXNzaW9uLiBUaGUgfAogICAgfCAgICAgICAgICAgICAgICAgIHwgZmlsZSBpcyBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTY1LDExICs3MCwxMyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3c6YnoyJ2BgICAgICAgfCBPcGVuIGZvciBiemlwMiBjb21wcmVzc2VkIHdyaXRpbmcuICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd3Onh6J2BgICAgICAgIHwgT3BlbiBmb3IgbHptYSBjb21wcmVzc2VkIHdyaXRpbmcuICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotICAgTm90ZSB0aGF0IGBgJ2E6Z3onYGAgb3IgYGAnYTpiejInYGAgaXMgbm90IHBvc3NpYmxlLiBJZiAqbW9kZSogaXMgbm90IHN1aXRhYmxlCi0gICB0byBvcGVuIGEgY2VydGFpbiAoY29tcHJlc3NlZCkgZmlsZSBmb3IgcmVhZGluZywgOmV4YzpgUmVhZEVycm9yYCBpcyByYWlzZWQuIFVzZQotICAgKm1vZGUqIGBgJ3InYGAgdG8gYXZvaWQgdGhpcy4gIElmIGEgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQsCi0gICA6ZXhjOmBDb21wcmVzc2lvbkVycm9yYCBpcyByYWlzZWQuCisgICBOb3RlIHRoYXQgYGAnYTpneidgYCwgYGAnYTpiejInYGAgb3IgYGAnYTp4eidgYCBpcyBub3QgcG9zc2libGUuIElmICptb2RlKgorICAgaXMgbm90IHN1aXRhYmxlIHRvIG9wZW4gYSBjZXJ0YWluIChjb21wcmVzc2VkKSBmaWxlIGZvciByZWFkaW5nLAorICAgOmV4YzpgUmVhZEVycm9yYCBpcyByYWlzZWQuIFVzZSAqbW9kZSogYGAncidgYCB0byBhdm9pZCB0aGlzLiAgSWYgYQorICAgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQsIDpleGM6YENvbXByZXNzaW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgSWYgKmZpbGVvYmoqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBhIDp0ZXJtOmBmaWxlIG9iamVjdGAKICAgIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSBmb3IgKm5hbWUqLiBJdCBpcyBzdXBwb3NlZCB0byBiZSBhdCBwb3NpdGlvbiAwLgpAQCAtMTAwLDYgKzEwNyw5IEBACiAgICB8IGBgJ3J8YnoyJ2BgIHwgT3BlbiBhIGJ6aXAyIGNvbXByZXNzZWQgKnN0cmVhbSogZm9yICAgICAgIHwKICAgIHwgICAgICAgICAgICAgfCByZWFkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3J8eHonYGAgIHwgT3BlbiBhIGx6bWEgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgfCByZWFkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3d8J2BgICAgIHwgT3BlbiBhbiB1bmNvbXByZXNzZWQgKnN0cmVhbSogZm9yIHdyaXRpbmcuIHwKICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCd3fGd6J2BgICB8IE9wZW4gYSBnemlwIGNvbXByZXNzZWQgKnN0cmVhbSogZm9yICAgICAgICB8CkBAIC0xMDgsNiArMTE4LDkgQEAKICAgIHwgYGAnd3xiejInYGAgfCBPcGVuIGEgYnppcDIgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAogICAgfCAgICAgICAgICAgICB8IHdyaXRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnd3x4eidgYCAgfCBPcGVuIGFuIGx6bWEgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAorICAgfCAgICAgICAgICAgICB8IHdyaXRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogCiAuLiBjbGFzczo6IFRhckZpbGUKQEAgLTI2Myw5ICsyNzYsOSBAQAogCiAgICBJZiAqZXJyb3JsZXZlbCogaXMgYGAwYGAsIGFsbCBlcnJvcnMgYXJlIGlnbm9yZWQgd2hlbiB1c2luZyA6bWV0aDpgVGFyRmlsZS5leHRyYWN0YC4KICAgIE5ldmVydGhlbGVzcywgdGhleSBhcHBlYXIgYXMgZXJyb3IgbWVzc2FnZXMgaW4gdGhlIGRlYnVnIG91dHB1dCwgd2hlbiBkZWJ1Z2dpbmcKLSAgIGlzIGVuYWJsZWQuICBJZiBgYDFgYCwgYWxsICpmYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgT1NFcnJvcmAgb3IKLSAgIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbnMuIElmIGBgMmBgLCBhbGwgKm5vbi1mYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMKLSAgIDpleGM6YFRhckVycm9yYCBleGNlcHRpb25zIGFzIHdlbGwuCisgICBpcyBlbmFibGVkLiAgSWYgYGAxYGAsIGFsbCAqZmF0YWwqIGVycm9ycyBhcmUgcmFpc2VkIGFzIDpleGM6YE9TRXJyb3JgCisgICBleGNlcHRpb25zLiBJZiBgYDJgYCwgYWxsICpub24tZmF0YWwqIGVycm9ycyBhcmUgcmFpc2VkIGFzIDpleGM6YFRhckVycm9yYAorICAgZXhjZXB0aW9ucyBhcyB3ZWxsLgogCiAgICBUaGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogYXJndW1lbnRzIGRlZmluZSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIHRvIGJlCiAgICB1c2VkIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgdGhlIGFyY2hpdmUgYW5kIGhvdyBjb252ZXJzaW9uIGVycm9ycyBhcmUgZ29pbmcKQEAgLTM2MywxNSArMzc2LDEyIEBACiAuLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RmaWxlKG1lbWJlcikKIAogICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuICptZW1iZXIqIG1heSBiZSBhIGZpbGVuYW1lCi0gICBvciBhIDpjbGFzczpgVGFySW5mb2Agb2JqZWN0LiBJZiAqbWVtYmVyKiBpcyBhIHJlZ3VsYXIgZmlsZSwgYSA6dGVybTpgZmlsZS1saWtlCi0gICBvYmplY3RgIGlzIHJldHVybmVkLiBJZiAqbWVtYmVyKiBpcyBhIGxpbmssIGEgZmlsZS1saWtlIG9iamVjdCBpcyBjb25zdHJ1Y3RlZCBmcm9tCi0gICB0aGUgbGluaydzIHRhcmdldC4gSWYgKm1lbWJlciogaXMgbm9uZSBvZiB0aGUgYWJvdmUsIDpjb25zdDpgTm9uZWAgaXMgcmV0dXJuZWQuCisgICBvciBhIDpjbGFzczpgVGFySW5mb2Agb2JqZWN0LiBJZiAqbWVtYmVyKiBpcyBhIHJlZ3VsYXIgZmlsZSBvciBhIGxpbmssIGFuCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkUmVhZGVyYCBvYmplY3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgOmNvbnN0OmBOb25lYCBpcworICAgcmV0dXJuZWQuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkuICBJdCBwcm92aWRlcyB0aGUgbWV0aG9kcwotICAgICAgOm1ldGg6YHJlYWRgLCA6bWV0aDpgcmVhZGxpbmVgLCA6bWV0aDpgcmVhZGxpbmVzYCwgOm1ldGg6YHNlZWtgLCA6bWV0aDpgdGVsbGAsCi0gICAgICBhbmQgOm1ldGg6YGNsb3NlYCwgYW5kIGFsc28gc3VwcG9ydHMgaXRlcmF0aW9uIG92ZXIgaXRzIGxpbmVzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJldHVybiBhbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkUmVhZGVyYCBvYmplY3QuCiAKIAogLi4gbWV0aG9kOjogVGFyRmlsZS5hZGQobmFtZSwgYXJjbmFtZT1Ob25lLCByZWN1cnNpdmU9VHJ1ZSwgZXhjbHVkZT1Ob25lLCAqLCBmaWx0ZXI9Tm9uZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CmluZGV4IDY0NjYzNGQuLjliYzc5YzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdApAQCAtMTYyLDkgKzE2MiwxMyBAQAogLi4gbWV0aG9kOjogVGVsbmV0LndyaXRlKGJ1ZmZlcikKIAogICAgV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgc29ja2V0LCBkb3VibGluZyBhbnkgSUFDIGNoYXJhY3RlcnMuIFRoaXMgY2FuCi0gICBibG9jayBpZiB0aGUgY29ubmVjdGlvbiBpcyBibG9ja2VkLiAgTWF5IHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmAgaWYgdGhlCisgICBibG9jayBpZiB0aGUgY29ubmVjdGlvbiBpcyBibG9ja2VkLiAgTWF5IHJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZQogICAgY29ubmVjdGlvbiBpcyBjbG9zZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIG1ldGhvZCB1c2VkIHRvIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmAsIHdoaWNoIGlzIG5vdyBhbiBhbGlhcworICAgICAgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gbWV0aG9kOjogVGVsbmV0LmludGVyYWN0KCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CmluZGV4IGMxNDNiODguLjk2ZWFkMWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKQEAgLTI1LDcgKzI1LDcgQEAKIAogQWxzbywgYWxsIHRoZSB1c2VyLWNhbGxhYmxlIGZ1bmN0aW9ucyBub3cgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aGljaAogYWxsb3cgZGlyZWN0IGNvbnRyb2wgb3ZlciB0aGUgbG9jYXRpb24gYW5kIG5hbWUgb2YgdGVtcG9yYXJ5IGZpbGVzLiAgSXQgaXMKLW5vIGxvbmdlciBuZWNlc3NhcnkgdG8gdXNlIHRoZSBnbG9iYWwgKnRlbXBkaXIqIGFuZCAqdGVtcGxhdGUqIHZhcmlhYmxlcy4KK25vIGxvbmdlciBuZWNlc3NhcnkgdG8gdXNlIHRoZSBnbG9iYWwgKnRlbXBkaXIqIHZhcmlhYmxlLgogVG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIGFyZ3VtZW50IG9yZGVyIGlzIHNvbWV3aGF0IG9kZDsgaXQKIGlzIHJlY29tbWVuZGVkIHRvIHVzZSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgY2xhcml0eS4KIApAQCAtNzYsOCArNzYsNyBAQAogICAgZGF0YSBpcyBzcG9vbGVkIGluIG1lbW9yeSB1bnRpbCB0aGUgZmlsZSBzaXplIGV4Y2VlZHMgKm1heF9zaXplKiwgb3IKICAgIHVudGlsIHRoZSBmaWxlJ3MgOmZ1bmM6YGZpbGVub2AgbWV0aG9kIGlzIGNhbGxlZCwgYXQgd2hpY2ggcG9pbnQgdGhlCiAgICBjb250ZW50cyBhcmUgd3JpdHRlbiB0byBkaXNrIGFuZCBvcGVyYXRpb24gcHJvY2VlZHMgYXMgd2l0aAotICAgOmZ1bmM6YFRlbXBvcmFyeUZpbGVgLiAgQWxzbywgaXQncyBgYHRydW5jYXRlYGAgbWV0aG9kIGRvZXMgbm90Ci0gICBhY2NlcHQgYSBgYHNpemVgYCBhcmd1bWVudC4KKyAgIDpmdW5jOmBUZW1wb3JhcnlGaWxlYC4KIAogICAgVGhlIHJlc3VsdGluZyBmaWxlIGhhcyBvbmUgYWRkaXRpb25hbCBtZXRob2QsIDpmdW5jOmByb2xsb3ZlcmAsIHdoaWNoCiAgICBjYXVzZXMgdGhlIGZpbGUgdG8gcm9sbCBvdmVyIHRvIGFuIG9uLWRpc2sgZmlsZSByZWdhcmRsZXNzIG9mIGl0cyBzaXplLgpAQCAtODcsNiArODYsOSBAQAogICAgd2hldGhlciA6ZnVuYzpgcm9sbG92ZXJgIGhhcyBiZWVuIGNhbGxlZC4gVGhpcyBmaWxlLWxpa2Ugb2JqZWN0IGNhbiBiZQogICAgdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQsIGp1c3QgbGlrZSBhIG5vcm1hbCBmaWxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgdGhlIHRydW5jYXRlIG1ldGhvZCBub3cgYWNjZXB0cyBhIGBgc2l6ZWBgIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogVGVtcG9yYXJ5RGlyZWN0b3J5KHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdAppbmRleCA0MGY0MTE1Li4yZThiYTMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdApAQCAtODAsMTcgKzgwLDEyIEBACiAKICAgIC4uLiBtb3JlIHRlc3QgY2xhc3NlcyAuLi4KIAotICAgZGVmIHRlc3RfbWFpbigpOgotICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE15VGVzdENhc2UxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXlUZXN0Q2FzZTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gbGlzdCBvdGhlciB0ZXN0cyAuLi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIHRlc3RfbWFpbigpCisgICAgICAgdW5pdHRlc3QubWFpbigpCiAKLVRoaXMgYm9pbGVycGxhdGUgY29kZSBhbGxvd3MgdGhlIHRlc3Rpbmcgc3VpdGUgdG8gYmUgcnVuIGJ5IDptb2Q6YHRlc3QucmVncnRlc3RgCi1hcyB3ZWxsIGFzIG9uIGl0cyBvd24gYXMgYSBzY3JpcHQuCitUaGlzIGNvZGUgcGF0dGVybiBhbGxvd3MgdGhlIHRlc3Rpbmcgc3VpdGUgdG8gYmUgcnVuIGJ5IDptb2Q6YHRlc3QucmVncnRlc3RgLAorb24gaXRzIG93biBhcyBhIHNjcmlwdCB0aGF0IHN1cHBvcnRzIHRoZSA6bW9kOmB1bml0dGVzdGAgQ0xJLCBvciB2aWEgdGhlCitgcHl0aG9uIC1tIHVuaXR0ZXN0YCBDTEkuCiAKIFRoZSBnb2FsIGZvciByZWdyZXNzaW9uIHRlc3RpbmcgaXMgdG8gdHJ5IHRvIGJyZWFrIGNvZGUuIFRoaXMgbGVhZHMgdG8gYSBmZXcKIGd1aWRlbGluZXMgdG8gYmUgZm9sbG93ZWQ6CkBAIC0xMjksMjIgKzEyNCwyNyBAQAogICBhcyB3aGF0IHR5cGUgb2YgaW5wdXQgaXMgdXNlZC4gTWluaW1pemUgY29kZSBkdXBsaWNhdGlvbiBieSBzdWJjbGFzc2luZyBhCiAgIGJhc2ljIHRlc3QgY2xhc3Mgd2l0aCBhIGNsYXNzIHRoYXQgc3BlY2lmaWVzIHRoZSBpbnB1dDo6CiAKLSAgICAgY2xhc3MgVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgY2xhc3MgVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzTWl4aW46CiAKICAgICAgICAgIGZ1bmMgPSBteVN1cGVyV2hhbW15RnVuY3Rpb24KIAogICAgICAgICAgZGVmIHRlc3RfZnVuYyhzZWxmKToKICAgICAgICAgICAgICBzZWxmLmZ1bmMoc2VsZi5hcmcpCiAKLSAgICAgY2xhc3MgQWNjZXB0TGlzdHMoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzKToKKyAgICAgY2xhc3MgQWNjZXB0TGlzdHMoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIGFyZyA9IFsxLCAyLCAzXQogCi0gICAgIGNsYXNzIEFjY2VwdFN0cmluZ3MoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzKToKKyAgICAgY2xhc3MgQWNjZXB0U3RyaW5ncyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgYXJnID0gJ2FiYycKIAotICAgICBjbGFzcyBBY2NlcHRUdXBsZXMoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzKToKKyAgICAgY2xhc3MgQWNjZXB0VHVwbGVzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlc01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICBhcmcgPSAoMSwgMiwgMykKIAorICBXaGVuIHVzaW5nIHRoaXMgcGF0dGVybiwgcmVtZW1iZXIgdGhhdCBhbGwgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbQorICBgdW5pdHRlc3QuVGVzdENhc2VgIGFyZSBydW4gYXMgdGVzdHMuICBUaGUgYE1peGluYCBjbGFzcyBpbiB0aGUgZXhhbXBsZSBhYm92ZQorICBkb2VzIG5vdCBoYXZlIGFueSBkYXRhIGFuZCBzbyBjYW4ndCBiZSBydW4gYnkgaXRzZWxmLCB0aHVzIGl0IGRvZXMgbm90CisgIGluaGVyaXQgZnJvbSBgdW5pdHRlc3QuVGVzdENhc2VgLgorCiAKIC4uIHNlZWFsc286OgogCkBAIC0xNjAsMTQgKzE2MCwxNSBAQAogVGhlIDptb2Q6YHRlc3RgIHBhY2thZ2UgY2FuIGJlIHJ1biBhcyBhIHNjcmlwdCB0byBkcml2ZSBQeXRob24ncyByZWdyZXNzaW9uCiB0ZXN0IHN1aXRlLCB0aGFua3MgdG8gdGhlIDpvcHRpb246YC1tYCBvcHRpb246IDpwcm9ncmFtOmBweXRob24gLW0gdGVzdGAuIFVuZGVyCiB0aGUgaG9vZCwgaXQgdXNlcyA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YDsgdGhlIGNhbGwgOnByb2dyYW06YHB5dGhvbiAtbQotdGVzdC5yZWdydGVzdGAgdXNlZCBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMgc3RpbGwgd29ya3MpLgotUnVubmluZyB0aGUgc2NyaXB0IGJ5IGl0c2VsZiBhdXRvbWF0aWNhbGx5IHN0YXJ0cyBydW5uaW5nIGFsbCByZWdyZXNzaW9uCi10ZXN0cyBpbiB0aGUgOm1vZDpgdGVzdGAgcGFja2FnZS4gSXQgZG9lcyB0aGlzIGJ5IGZpbmRpbmcgYWxsIG1vZHVsZXMgaW4gdGhlCi1wYWNrYWdlIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggYGB0ZXN0X2BgLCBpbXBvcnRpbmcgdGhlbSwgYW5kIGV4ZWN1dGluZyB0aGUKLWZ1bmN0aW9uIDpmdW5jOmB0ZXN0X21haW5gIGlmIHByZXNlbnQuIFRoZSBuYW1lcyBvZiB0ZXN0cyB0byBleGVjdXRlIG1heSBhbHNvCi1iZSBwYXNzZWQgdG8gdGhlIHNjcmlwdC4gU3BlY2lmeWluZyBhIHNpbmdsZSByZWdyZXNzaW9uIHRlc3QgKDpwcm9ncmFtOmBweXRob24KLS1tIHRlc3QgdGVzdF9zcGFtYCkgd2lsbCBtaW5pbWl6ZSBvdXRwdXQgYW5kIG9ubHkgcHJpbnQKLXdoZXRoZXIgdGhlIHRlc3QgcGFzc2VkIG9yIGZhaWxlZCBhbmQgdGh1cyBtaW5pbWl6ZSBvdXRwdXQuCit0ZXN0LnJlZ3J0ZXN0YCB1c2VkIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucyBzdGlsbCB3b3JrcykuICBSdW5uaW5nIHRoZQorc2NyaXB0IGJ5IGl0c2VsZiBhdXRvbWF0aWNhbGx5IHN0YXJ0cyBydW5uaW5nIGFsbCByZWdyZXNzaW9uIHRlc3RzIGluIHRoZQorOm1vZDpgdGVzdGAgcGFja2FnZS4gSXQgZG9lcyB0aGlzIGJ5IGZpbmRpbmcgYWxsIG1vZHVsZXMgaW4gdGhlIHBhY2thZ2Ugd2hvc2UKK25hbWUgc3RhcnRzIHdpdGggYGB0ZXN0X2BgLCBpbXBvcnRpbmcgdGhlbSwgYW5kIGV4ZWN1dGluZyB0aGUgZnVuY3Rpb24KKzpmdW5jOmB0ZXN0X21haW5gIGlmIHByZXNlbnQgb3IgbG9hZGluZyB0aGUgdGVzdHMgdmlhCit1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUgaWYgYGB0ZXN0X21haW5gYCBkb2VzIG5vdCBleGlzdC4gIFRoZQorbmFtZXMgb2YgdGVzdHMgdG8gZXhlY3V0ZSBtYXkgYWxzbyBiZSBwYXNzZWQgdG8gdGhlIHNjcmlwdC4gU3BlY2lmeWluZyBhIHNpbmdsZQorcmVncmVzc2lvbiB0ZXN0ICg6cHJvZ3JhbTpgcHl0aG9uIC1tIHRlc3QgdGVzdF9zcGFtYCkgd2lsbCBtaW5pbWl6ZSBvdXRwdXQgYW5kCitvbmx5IHByaW50IHdoZXRoZXIgdGhlIHRlc3QgcGFzc2VkIG9yIGZhaWxlZC4KIAogUnVubmluZyA6bW9kOmB0ZXN0YCBkaXJlY3RseSBhbGxvd3Mgd2hhdCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSBmb3IKIHRlc3RzIHRvIHVzZSB0byBiZSBzZXQuIFlvdSBkbyB0aGlzIGJ5IHVzaW5nIHRoZSBgYC11YGAgY29tbWFuZC1saW5lCkBAIC0yMjMsMTQgKzIyNCwxNCBAQAogCiAuLiBkYXRhOjogdmVyYm9zZQogCi0gICA6Y29uc3Q6YFRydWVgIHdoZW4gdmVyYm9zZSBvdXRwdXQgaXMgZW5hYmxlZC4gU2hvdWxkIGJlIGNoZWNrZWQgd2hlbiBtb3JlCisgICBgYFRydWVgYCB3aGVuIHZlcmJvc2Ugb3V0cHV0IGlzIGVuYWJsZWQuIFNob3VsZCBiZSBjaGVja2VkIHdoZW4gbW9yZQogICAgZGV0YWlsZWQgaW5mb3JtYXRpb24gaXMgZGVzaXJlZCBhYm91dCBhIHJ1bm5pbmcgdGVzdC4gKnZlcmJvc2UqIGlzIHNldCBieQogICAgOm1vZDpgdGVzdC5yZWdydGVzdGAuCiAKIAogLi4gZGF0YTo6IGlzX2p5dGhvbgogCi0gICA6Y29uc3Q6YFRydWVgIGlmIHRoZSBydW5uaW5nIGludGVycHJldGVyIGlzIEp5dGhvbi4KKyAgIGBgVHJ1ZWBgIGlmIHRoZSBydW5uaW5nIGludGVycHJldGVyIGlzIEp5dGhvbi4KIAogCiAuLiBkYXRhOjogVEVTVEZOCkBAIC0yNDksNyArMjUwLDcgQEAKIAogLi4gZnVuY3Rpb246OiBpc19yZXNvdXJjZV9lbmFibGVkKHJlc291cmNlKQogCi0gICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiAqcmVzb3VyY2UqIGlzIGVuYWJsZWQgYW5kIGF2YWlsYWJsZS4gVGhlIGxpc3Qgb2YKKyAgIFJldHVybiBgYFRydWVgYCBpZiAqcmVzb3VyY2UqIGlzIGVuYWJsZWQgYW5kIGF2YWlsYWJsZS4gVGhlIGxpc3Qgb2YKICAgIGF2YWlsYWJsZSByZXNvdXJjZXMgaXMgb25seSBzZXQgd2hlbiA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YCBpcyBleGVjdXRpbmcgdGhlCiAgICB0ZXN0cy4KIApAQCAtMjU4LDcgKzI1OSw3IEBACiAKICAgIFJhaXNlIDpleGM6YFJlc291cmNlRGVuaWVkYCBpZiAqcmVzb3VyY2UqIGlzIG5vdCBhdmFpbGFibGUuICptc2cqIGlzIHRoZQogICAgYXJndW1lbnQgdG8gOmV4YzpgUmVzb3VyY2VEZW5pZWRgIGlmIGl0IGlzIHJhaXNlZC4gQWx3YXlzIHJldHVybnMKLSAgIDpjb25zdDpgVHJ1ZWAgaWYgY2FsbGVkIGJ5IGEgZnVuY3Rpb24gd2hvc2UgYGBfX25hbWVfX2BgIGlzIGBgJ19fbWFpbl9fJ2BgLgorICAgYGBUcnVlYGAgaWYgY2FsbGVkIGJ5IGEgZnVuY3Rpb24gd2hvc2UgYGBfX25hbWVfX2BgIGlzIGBgJ19fbWFpbl9fJ2BgLgogICAgVXNlZCB3aGVuIHRlc3RzIGFyZSBleGVjdXRlZCBieSA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YC4KIAogCkBAIC0yODYsNiArMjg3LDE1IEBACiAgICBUaGlzIHdpbGwgcnVuIGFsbCB0ZXN0cyBkZWZpbmVkIGluIHRoZSBuYW1lZCBtb2R1bGUuCiAKIAorLi4gZnVuY3Rpb246OiBydW5fZG9jdGVzdChtb2R1bGUsIHZlcmJvc2l0eT1Ob25lKQorCisgICBSdW4gOmZ1bmM6YGRvY3Rlc3QudGVzdG1vZGAgb24gdGhlIGdpdmVuICptb2R1bGUqLiAgUmV0dXJuCisgICBgYChmYWlsdXJlX2NvdW50LCB0ZXN0X2NvdW50KWBgLgorCisgICBJZiAqdmVyYm9zaXR5KiBpcyBgYE5vbmVgYCwgOmZ1bmM6YGRvY3Rlc3QudGVzdG1vZGAgaXMgcnVuIHdpdGggdmVyYm9zaXR5CisgICBzZXQgdG8gOmRhdGE6YHZlcmJvc2VgLiAgT3RoZXJ3aXNlLCBpdCBpcyBydW4gd2l0aCB2ZXJib3NpdHkgc2V0IHRvCisgICBgYE5vbmVgYC4KKwogLi4gZnVuY3Rpb246OiBjaGVja193YXJuaW5ncyhcKmZpbHRlcnMsIHF1aWV0PVRydWUpCiAKICAgIEEgY29udmVuaWVuY2Ugd3JhcHBlciBmb3IgOmZ1bmM6YHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKClgIHRoYXQgbWFrZXMgaXQKQEAgLTI5NiwxMiArMzA2LDEyIEBACiAKICAgIGBgY2hlY2tfd2FybmluZ3NgYCBhY2NlcHRzIDItdHVwbGVzIG9mIHRoZSBmb3JtIGBgKCJtZXNzYWdlIHJlZ2V4cCIsCiAgICBXYXJuaW5nQ2F0ZWdvcnkpYGAgYXMgcG9zaXRpb25hbCBhcmd1bWVudHMuIElmIG9uZSBvciBtb3JlICpmaWx0ZXJzKiBhcmUKLSAgIHByb3ZpZGVkLCBvciBpZiB0aGUgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAqcXVpZXQqIGlzIDpjb25zdDpgRmFsc2VgLAorICAgcHJvdmlkZWQsIG9yIGlmIHRoZSBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICpxdWlldCogaXMgYGBGYWxzZWBgLAogICAgaXQgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgd2FybmluZ3MgYXJlIGFzIGV4cGVjdGVkOiAgZWFjaCBzcGVjaWZpZWQgZmlsdGVyCiAgICBtdXN0IG1hdGNoIGF0IGxlYXN0IG9uZSBvZiB0aGUgd2FybmluZ3MgcmFpc2VkIGJ5IHRoZSBlbmNsb3NlZCBjb2RlIG9yIHRoZQogICAgdGVzdCBmYWlscywgYW5kIGlmIGFueSB3YXJuaW5ncyBhcmUgcmFpc2VkIHRoYXQgZG8gbm90IG1hdGNoIGFueSBvZiB0aGUKICAgIHNwZWNpZmllZCBmaWx0ZXJzIHRoZSB0ZXN0IGZhaWxzLiAgVG8gZGlzYWJsZSB0aGUgZmlyc3Qgb2YgdGhlc2UgY2hlY2tzLAotICAgc2V0ICpxdWlldCogdG8gOmNvbnN0OmBUcnVlYC4KKyAgIHNldCAqcXVpZXQqIHRvIGBgVHJ1ZWBgLgogCiAgICBJZiBubyBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG86OgogCkBAIC0zMTYsNyArMzI2LDcgQEAKICAgIHJlcHJlc2VudGluZyB0aGUgbW9zdCByZWNlbnQgd2FybmluZyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBkaXJlY3RseSB0aHJvdWdoCiAgICB0aGUgcmVjb3JkZXIgb2JqZWN0IChzZWUgZXhhbXBsZSBiZWxvdykuICBJZiBubyB3YXJuaW5nIGhhcyBiZWVuIHJhaXNlZCwKICAgIHRoZW4gYW55IG9mIHRoZSBhdHRyaWJ1dGVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGV4cGVjdGVkIG9uIGFuIG9iamVjdAotICAgcmVwcmVzZW50aW5nIGEgd2FybmluZyB3aWxsIHJldHVybiA6Y29uc3Q6YE5vbmVgLgorICAgcmVwcmVzZW50aW5nIGEgd2FybmluZyB3aWxsIHJldHVybiBgYE5vbmVgYC4KIAogICAgVGhlIHJlY29yZGVyIG9iamVjdCBhbHNvIGhhcyBhIDptZXRoOmByZXNldGAgbWV0aG9kLCB3aGljaCBjbGVhcnMgdGhlCiAgICB3YXJuaW5ncyBsaXN0LgpAQCAtMzU0LDcgKzM2NCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogY2FwdHVyZWRfc3Rkb3V0KCkKIAotICAgVGhpcyBpcyBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHJ1bnMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYm9keSB1c2luZworICAgQSBjb250ZXh0IG1hbmFnZXIgdGhhdCBydW5zIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGJvZHkgdXNpbmcKICAgIGEgOmNsYXNzOmBTdHJpbmdJTy5TdHJpbmdJT2Agb2JqZWN0IGFzIHN5cy5zdGRvdXQuICBUaGF0IG9iamVjdCBjYW4gYmUKICAgIHJldHJpZXZlZCB1c2luZyB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KIApAQCAtMzY1LDYgKzM3NSw1NyBAQAogICAgICAgYXNzZXJ0IHMuZ2V0dmFsdWUoKSA9PSAiaGVsbG9cbiIKIAogCisuLiBmdW5jdGlvbjo6IHRlbXBfY3dkKG5hbWU9J3RlbXBjd2QnLCBxdWlldD1GYWxzZSwgcGF0aD1Ob25lKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIGN1cnJlbnQgd29ya2luZworICAgZGlyZWN0b3J5IChDV0QpLgorCisgICBBbiBleGlzdGluZyBwYXRoIG1heSBiZSBwcm92aWRlZCBhcyAqcGF0aCosIGluIHdoaWNoIGNhc2UgdGhpcyBmdW5jdGlvbgorICAgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgIE90aGVyd2lzZSwgdGhlIG5ldyBDV0QgaXMgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIGl0J3MgbmFtZWQKKyAgICpuYW1lKi4gIElmICpxdWlldCogaXMgYGBGYWxzZWBgIGFuZCBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKKyAgIGNoYW5nZSB0aGUgQ1dELCBhbiBlcnJvciBpcyByYWlzZWQuICBJZiBpdCdzIGBgVHJ1ZWBgLCBvbmx5IGEgd2FybmluZworICAgaXMgcmFpc2VkIGFuZCB0aGUgb3JpZ2luYWwgQ1dEIGlzIHVzZWQuCisKKworLi4gZnVuY3Rpb246OiB0ZW1wX3VtYXNrKHVtYXNrKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suCisKKworLi4gZnVuY3Rpb246OiBjYW5fc3ltbGluaygpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgT1Mgc3VwcG9ydHMgc3ltYm9saWMgbGlua3MsIGBgRmFsc2VgYAorICAgb3RoZXJ3aXNlLgorCisKKy4uIGRlY29yYXRvcjo6IHNraXBfdW5sZXNzX3N5bWxpbmsoKQorCisgICBBIGRlY29yYXRvciBmb3IgcnVubmluZyB0ZXN0cyB0aGF0IHJlcXVpcmUgc3VwcG9ydCBmb3Igc3ltYm9saWMgbGlua3MuCisKKworLi4gZGVjb3JhdG9yOjogYW50aWNpcGF0ZV9mYWlsdXJlKGNvbmRpdGlvbikKKworICAgQSBkZWNvcmF0b3IgdG8gY29uZGl0aW9uYWxseSBtYXJrIHRlc3RzIHdpdGgKKyAgIDpmdW5jOmB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmVgLiBBbnkgdXNlIG9mIHRoaXMgZGVjb3JhdG9yIHNob3VsZAorICAgaGF2ZSBhbiBhc3NvY2lhdGVkIGNvbW1lbnQgaWRlbnRpZnlpbmcgdGhlIHJlbGV2YW50IHRyYWNrZXIgaXNzdWUuCisKKworLi4gZGVjb3JhdG9yOjogcnVuX3dpdGhfbG9jYWxlKGNhdHN0ciwgKmxvY2FsZXMpCisKKyAgIEEgZGVjb3JhdG9yIGZvciBydW5uaW5nIGEgZnVuY3Rpb24gaW4gYSBkaWZmZXJlbnQgbG9jYWxlLCBjb3JyZWN0bHkKKyAgIHJlc2V0dGluZyBpdCBhZnRlciBpdCBoYXMgZmluaXNoZWQuICAqY2F0c3RyKiBpcyB0aGUgbG9jYWxlIGNhdGVnb3J5IGFzCisgICBhIHN0cmluZyAoZm9yIGV4YW1wbGUgYGAiTENfQUxMImBgKS4gIFRoZSAqbG9jYWxlcyogcGFzc2VkIHdpbGwgYmUgdHJpZWQKKyAgIHNlcXVlbnRpYWxseSwgYW5kIHRoZSBmaXJzdCB2YWxpZCBsb2NhbGUgd2lsbCBiZSB1c2VkLgorCisKKy4uIGZ1bmN0aW9uOjogbWFrZV9iYWRfZmQoKQorCisgICBDcmVhdGUgYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgYnkgb3BlbmluZyBhbmQgY2xvc2luZyBhIHRlbXBvcmFyeSBmaWxlLAorICAgYW5kIHJldHVybmluZyBpdHMgZGVzY3JpcG9yLgorCisKIC4uIGZ1bmN0aW9uOjogaW1wb3J0X21vZHVsZShuYW1lLCBkZXByZWNhdGVkPUZhbHNlKQogCiAgICBUaGlzIGZ1bmN0aW9uIGltcG9ydHMgYW5kIHJldHVybnMgdGhlIG5hbWVkIG1vZHVsZS4gVW5saWtlIGEgbm9ybWFsCkBAIC0zNzIsNyArNDMzLDcgQEAKICAgIGNhbm5vdCBiZSBpbXBvcnRlZC4KIAogICAgTW9kdWxlIGFuZCBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGR1cmluZyB0aGlzIGltcG9ydAotICAgaWYgKmRlcHJlY2F0ZWQqIGlzIDpjb25zdDpgVHJ1ZWAuCisgICBpZiAqZGVwcmVjYXRlZCogaXMgYGBUcnVlYGAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCkBAIC0zOTYsOSArNDU3LDkgQEAKICAgIGBgc3lzLm1vZHVsZXNgYCB3aGVuIHRoZSBmcmVzaCBpbXBvcnQgaXMgY29tcGxldGUuCiAKICAgIE1vZHVsZSBhbmQgcGFja2FnZSBkZXByZWNhdGlvbiBtZXNzYWdlcyBhcmUgc3VwcHJlc3NlZCBkdXJpbmcgdGhpcyBpbXBvcnQKLSAgIGlmICpkZXByZWNhdGVkKiBpcyA6Y29uc3Q6YFRydWVgLgorICAgaWYgKmRlcHJlY2F0ZWQqIGlzIGBgVHJ1ZWBgLgogCi0gICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmFpc2UgOmV4YzpgdW5pdHRlc3QuU2tpcFRlc3RgIGlzIHRoZSBuYW1lZCBtb2R1bGUKKyAgIFRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSA6ZXhjOmB1bml0dGVzdC5Ta2lwVGVzdGAgaWYgdGhlIG5hbWVkIG1vZHVsZQogICAgY2Fubm90IGJlIGltcG9ydGVkLgogCiAgICBFeGFtcGxlIHVzZTo6CkBAIC00MTMsNiArNDc0LDQ4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCisuLiBmdW5jdGlvbjo6IGJpbmRfcG9ydChzb2NrLCBob3N0PUhPU1QpCisKKyAgIEJpbmQgdGhlIHNvY2tldCB0byBhIGZyZWUgcG9ydCBhbmQgcmV0dXJuIHRoZSBwb3J0IG51bWJlci4gIFJlbGllcyBvbgorICAgZXBoZW1lcmFsIHBvcnRzIGluIG9yZGVyIHRvIGVuc3VyZSB3ZSBhcmUgdXNpbmcgYW4gdW5ib3VuZCBwb3J0LiAgVGhpcyBpcworICAgaW1wb3J0YW50IGFzIG1hbnkgdGVzdHMgbWF5IGJlIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHksIGVzcGVjaWFsbHkgaW4gYQorICAgYnVpbGRib3QgZW52aXJvbm1lbnQuICBUaGlzIG1ldGhvZCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZQorICAgYGBzb2NrLmZhbWlseWBgIGlzIDpjb25zdDpgfnNvY2tldC5BRl9JTkVUYCBhbmQgYGBzb2NrLnR5cGVgYCBpcworICAgOmNvbnN0OmB+c29ja2V0LlNPQ0tfU1RSRUFNYCwgYW5kIHRoZSBzb2NrZXQgaGFzCisgICA6Y29uc3Q6YH5zb2NrZXQuU09fUkVVU0VBRERSYCBvciA6Y29uc3Q6YH5zb2NrZXQuU09fUkVVU0VQT1JUYCBzZXQgb24gaXQuCisgICBUZXN0cyBzaG91bGQgbmV2ZXIgc2V0IHRoZXNlIHNvY2tldCBvcHRpb25zIGZvciBUQ1AvSVAgc29ja2V0cy4KKyAgIFRoZSBvbmx5IGNhc2UgZm9yIHNldHRpbmcgdGhlc2Ugb3B0aW9ucyBpcyB0ZXN0aW5nIG11bHRpY2FzdGluZyB2aWEKKyAgIG11bHRpcGxlIFVEUCBzb2NrZXRzLgorCisgICBBZGRpdGlvbmFsbHksIGlmIHRoZSA6Y29uc3Q6YH5zb2NrZXQuU09fRVhDTFVTSVZFQUREUlVTRWAgc29ja2V0IG9wdGlvbiBpcworICAgYXZhaWxhYmxlIChpLmUuIG9uIFdpbmRvd3MpLCBpdCB3aWxsIGJlIHNldCBvbiB0aGUgc29ja2V0LiAgVGhpcyB3aWxsCisgICBwcmV2ZW50IGFueW9uZSBlbHNlIGZyb20gYmluZGluZyB0byBvdXIgaG9zdC9wb3J0IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlCisgICB0ZXN0LgorCisKKy4uIGZ1bmN0aW9uOjogZmluZF91bnVzZWRfcG9ydChmYW1pbHk9c29ja2V0LkFGX0lORVQsIHNvY2t0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSkKKworICAgUmV0dXJucyBhbiB1bnVzZWQgcG9ydCB0aGF0IHNob3VsZCBiZSBzdWl0YWJsZSBmb3IgYmluZGluZy4gIFRoaXMgaXMKKyAgIGFjaGlldmVkIGJ5IGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHNvY2tldCB3aXRoIHRoZSBzYW1lIGZhbWlseSBhbmQgdHlwZSBhcworICAgdGhlIGBgc29ja2BgIHBhcmFtZXRlciAoZGVmYXVsdCBpcyA6Y29uc3Q6YH5zb2NrZXQuQUZfSU5FVGAsCisgICA6Y29uc3Q6YH5zb2NrZXQuU09DS19TVFJFQU1gKSwKKyAgIGFuZCBiaW5kaW5nIGl0IHRvIHRoZSBzcGVjaWZpZWQgaG9zdCBhZGRyZXNzIChkZWZhdWx0cyB0byBgYDAuMC4wLjBgYCkKKyAgIHdpdGggdGhlIHBvcnQgc2V0IHRvIDAsIGVsaWNpdGluZyBhbiB1bnVzZWQgZXBoZW1lcmFsIHBvcnQgZnJvbSB0aGUgT1MuCisgICBUaGUgdGVtcG9yYXJ5IHNvY2tldCBpcyB0aGVuIGNsb3NlZCBhbmQgZGVsZXRlZCwgYW5kIHRoZSBlcGhlbWVyYWwgcG9ydCBpcworICAgcmV0dXJuZWQuCisKKyAgIEVpdGhlciB0aGlzIG1ldGhvZCBvciA6ZnVuYzpgYmluZF9wb3J0YCBzaG91bGQgYmUgdXNlZCBmb3IgYW55IHRlc3RzCisgICB3aGVyZSBhIHNlcnZlciBzb2NrZXQgbmVlZHMgdG8gYmUgYm91bmQgdG8gYSBwYXJ0aWN1bGFyIHBvcnQgZm9yIHRoZQorICAgZHVyYXRpb24gb2YgdGhlIHRlc3QuCisgICBXaGljaCBvbmUgdG8gdXNlIGRlcGVuZHMgb24gd2hldGhlciB0aGUgY2FsbGluZyBjb2RlIGlzIGNyZWF0aW5nIGEgcHl0aG9uCisgICBzb2NrZXQsIG9yIGlmIGFuIHVudXNlZCBwb3J0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIGEgY29uc3RydWN0b3IKKyAgIG9yIHBhc3NlZCB0byBhbiBleHRlcm5hbCBwcm9ncmFtIChpLmUuIHRoZSBgYC1hY2NlcHRgYCBhcmd1bWVudCB0bworICAgb3BlbnNzbCdzIHNfc2VydmVyIG1vZGUpLiAgQWx3YXlzIHByZWZlciA6ZnVuYzpgYmluZF9wb3J0YCBvdmVyCisgICA6ZnVuYzpgZmluZF91bnVzZWRfcG9ydGAgd2hlcmUgcG9zc2libGUuICBVc2luZyBhIGhhcmQgY29kZWQgcG9ydCBpcworICAgZGlzY291cmFnZWQgc2luY2UgaXQgY2FuIG1ha2VzIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgdGVzdCBpbXBvc3NpYmxlIHRvCisgICBydW4gc2ltdWx0YW5lb3VzbHksIHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgYnVpbGRib3RzLgorCisKIFRoZSA6bW9kOmB0ZXN0LnN1cHBvcnRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKIAogLi4gY2xhc3M6OiBUcmFuc2llbnRSZXNvdXJjZShleGMsICoqa3dhcmdzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGV4dC5yc3QgYi9Eb2MvbGlicmFyeS90ZXh0LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2I2Nzg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdGV4dC5yc3QKQEAgLTAsMCArMSwyNiBAQAorLi4gX3N0cmluZ3NlcnZpY2VzOgorLi4gX3RleHRzZXJ2aWNlczoKKworKioqKioqKioqKioqKioqKioqKioqKioqCitUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMKKyoqKioqKioqKioqKioqKioqKioqKioqKgorCitUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgYSB3aWRlIHJhbmdlIG9mIHN0cmluZworbWFuaXB1bGF0aW9uIG9wZXJhdGlvbnMgYW5kIG90aGVyIHRleHQgcHJvY2Vzc2luZyBzZXJ2aWNlcy4KKworVGhlIDptb2Q6YGNvZGVjc2AgbW9kdWxlIGRlc2NyaWJlZCB1bmRlciA6cmVmOmBiaW5hcnlzZXJ2aWNlc2AgaXMgYWxzbworaGlnaGx5IHJlbGV2YW50IHRvIHRleHQgcHJvY2Vzc2luZy4gSW4gYWRkaXRpb24sIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKK1B5dGhvbidzIGJ1aWx0LWluIHN0cmluZyB0eXBlIGluIDpyZWY6YHRleHRzZXFgLgorCisKKy4uIHRvY3RyZWU6OgorCisgICBzdHJpbmcucnN0CisgICByZS5yc3QKKyAgIGRpZmZsaWIucnN0CisgICB0ZXh0d3JhcC5yc3QKKyAgIHVuaWNvZGVkYXRhLnJzdAorICAgc3RyaW5ncHJlcC5yc3QKKyAgIHJlYWRsaW5lLnJzdAorICAgcmxjb21wbGV0ZXIucnN0CisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RleHR3cmFwLnJzdCBiL0RvYy9saWJyYXJ5L3RleHR3cmFwLnJzdAppbmRleCAzYzFlY2Y2Li5jNjI1MjU0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZXh0d3JhcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0CkBAIC0xMiw3ICsxMiw3IEBACiAKIFRoZSA6bW9kOmB0ZXh0d3JhcGAgbW9kdWxlIHByb3ZpZGVzIHR3byBjb252ZW5pZW5jZSBmdW5jdGlvbnMsIDpmdW5jOmB3cmFwYCBhbmQKIDpmdW5jOmBmaWxsYCwgYXMgd2VsbCBhcyA6Y2xhc3M6YFRleHRXcmFwcGVyYCwgdGhlIGNsYXNzIHRoYXQgZG9lcyBhbGwgdGhlIHdvcmssCi1hbmQgYSB1dGlsaXR5IGZ1bmN0aW9uICA6ZnVuYzpgZGVkZW50YC4gIElmIHlvdSdyZSBqdXN0IHdyYXBwaW5nIG9yIGZpbGxpbmcgb25lCithbmQgdHdvIHV0aWxpdHkgZnVuY3Rpb25zLCA6ZnVuYzpgZGVkZW50YCBhbmQgOmZ1bmM6YGluZGVudGAuICBJZiB5b3UncmUganVzdCB3cmFwcGluZyBvciBmaWxsaW5nIG9uZQogb3IgdHdvICB0ZXh0IHN0cmluZ3MsIHRoZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGdvb2QgZW5vdWdoOwogb3RoZXJ3aXNlLCAgeW91IHNob3VsZCB1c2UgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBUZXh0V3JhcHBlcmAgZm9yIGVmZmljaWVuY3kuCiAKQEAgLTQ4LDkgKzQ4LDEwIEBACiBoeXBoZW5hdGVkIHdvcmRzOyBvbmx5IHRoZW4gd2lsbCBsb25nIHdvcmRzIGJlIGJyb2tlbiBpZiBuZWNlc3NhcnksIHVubGVzcwogOmF0dHI6YFRleHRXcmFwcGVyLmJyZWFrX2xvbmdfd29yZHNgIGlzIHNldCB0byBmYWxzZS4KIAotQW4gYWRkaXRpb25hbCB1dGlsaXR5IGZ1bmN0aW9uLCA6ZnVuYzpgZGVkZW50YCwgaXMgcHJvdmlkZWQgdG8gcmVtb3ZlCi1pbmRlbnRhdGlvbiBmcm9tIHN0cmluZ3MgdGhhdCBoYXZlIHVud2FudGVkIHdoaXRlc3BhY2UgdG8gdGhlIGxlZnQgb2YgdGhlIHRleHQuCi0KK1R3byBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24sIDpmdW5jOmBkZWRlbnRgIGFuZCA6ZnVuYzpgaW5kZW50YCwgYXJlCitwcm92aWRlZCB0byByZW1vdmUgaW5kZW50YXRpb24gZnJvbSBzdHJpbmdzIHRoYXQgaGF2ZSB1bndhbnRlZCB3aGl0ZXNwYWNlCit0byB0aGUgbGVmdCBvZiB0aGUgdGV4dCBhbmQgdG8gYWRkIGFuIGFyYml0cmFyeSBwcmVmaXggdG8gc2VsZWN0ZWQgbGluZXMKK2luIGEgYmxvY2sgb2YgdGV4dC4KIAogLi4gZnVuY3Rpb246OiBkZWRlbnQodGV4dCkKIApAQCAtNzUsNiArNzYsMzIgQEAKICAgICAgICAgICBwcmludChyZXByKGRlZGVudChzKSkpICAjIHByaW50cyAnaGVsbG9cbiAgd29ybGRcbicKIAogCisuLiBmdW5jdGlvbjo6IGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZT1Ob25lKQorCisgICBBZGQgKnByZWZpeCogdG8gdGhlIGJlZ2lubmluZyBvZiBzZWxlY3RlZCBsaW5lcyBpbiAqdGV4dCouCisKKyAgIExpbmVzIGFyZSBzZXBhcmF0ZWQgYnkgY2FsbGluZyBgYHRleHQuc3BsaXRsaW5lcyhUcnVlKWBgLgorCisgICBCeSBkZWZhdWx0LCAqcHJlZml4KiBpcyBhZGRlZCB0byBhbGwgbGluZXMgdGhhdCBkbyBub3QgY29uc2lzdAorICAgc29sZWx5IG9mIHdoaXRlc3BhY2UgKGluY2x1ZGluZyBhbnkgbGluZSBlbmRpbmdzKS4KKworICAgRm9yIGV4YW1wbGU6OgorCisgICAgICA+Pj4gcyA9ICdoZWxsb1xuXG4gXG53b3JsZCcKKyAgICAgID4+PiBpbmRlbnQocywgJyAgJykKKyAgICAgICcgIGhlbGxvXG5cbiBcbiAgd29ybGQnCisKKyAgIFRoZSBvcHRpb25hbCAqcHJlZGljYXRlKiBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHdoaWNoIGxpbmVzCisgICBhcmUgaW5kZW50ZWQuIEZvciBleGFtcGxlLCBpdCBpcyBlYXN5IHRvIGFkZCAqcHJlZml4KiB0byBldmVuIGVtcHR5CisgICBhbmQgd2hpdGVzcGFjZS1vbmx5IGxpbmVzOjoKKworICAgICAgPj4+IHByaW50KGluZGVudChzLCAnKyAnLCBsYW1iZGEgbGluZTogVHJ1ZSkpCisgICAgICArIGhlbGxvCisgICAgICArCisgICAgICArCisgICAgICArIHdvcmxkCisKKwogLi4gY2xhc3M6OiBUZXh0V3JhcHBlcigqKmt3YXJncykKIAogICAgVGhlIDpjbGFzczpgVGV4dFdyYXBwZXJgIGNvbnN0cnVjdG9yIGFjY2VwdHMgYSBudW1iZXIgb2Ygb3B0aW9uYWwga2V5d29yZApAQCAtMTEwLDYgKzEzNywxNSBAQAogICAgICAgZXhwYW5kZWQgdG8gc3BhY2VzIHVzaW5nIHRoZSA6bWV0aDpgZXhwYW5kdGFic2AgbWV0aG9kIG9mICp0ZXh0Ki4KIAogCisgICAuLiBhdHRyaWJ1dGU6OiB0YWJzaXplCisKKyAgICAgIChkZWZhdWx0OiBgYDhgYCkgSWYgOmF0dHI6YGV4cGFuZF90YWJzYCBpcyB0cnVlLCB0aGVuIGFsbCB0YWIgY2hhcmFjdGVycworICAgICAgaW4gKnRleHQqIHdpbGwgYmUgZXhwYW5kZWQgdG8gemVybyBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgY3VycmVudCBjb2x1bW4gYW5kIHRoZSBnaXZlbiB0YWIgc2l6ZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogICAgLi4gYXR0cmlidXRlOjogcmVwbGFjZV93aGl0ZXNwYWNlCiAKICAgICAgIChkZWZhdWx0OiBgYFRydWVgYCkgSWYgdHJ1ZSwgYWZ0ZXIgdGFiIGV4cGFuc2lvbiBidXQgYmVmb3JlIHdyYXBwaW5nLApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGhyZWFkaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3RocmVhZGluZy5yc3QKaW5kZXggNDMwODdlZi4uMDU4NjNhMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGhyZWFkaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0CkBAIC0yMCwxOSArMjAsOCBAQAogICAgbWV0aG9kcyBhbmQgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIGluIHRoZSBQeXRob24gMi54IHNlcmllcyBhcmUgc3RpbGwKICAgIHN1cHBvcnRlZCBieSB0aGlzIG1vZHVsZS4KIAotLi4gaW1wbC1kZXRhaWw6OgogCi0gICBEdWUgdG8gdGhlIDp0ZXJtOmBHbG9iYWwgSW50ZXJwcmV0ZXIgTG9ja2AsIGluIENQeXRob24gb25seSBvbmUgdGhyZWFkCi0gICBjYW4gZXhlY3V0ZSBQeXRob24gY29kZSBhdCBvbmNlIChldmVuIHRob3VnaCBjZXJ0YWluIHBlcmZvcm1hbmNlLW9yaWVudGVkCi0gICBsaWJyYXJpZXMgbWlnaHQgb3ZlcmNvbWUgdGhpcyBsaW1pdGF0aW9uKS4KLSAgIElmIHlvdSB3YW50IHlvdXIgYXBwbGljYXRpb24gdG8gbWFrZSBiZXR0ZXIgb2YgdXNlIG9mIHRoZSBjb21wdXRhdGlvbmFsCi0gICByZXNvdXJjZXMgb2YgbXVsdGktY29yZSBtYWNoaW5lcywgeW91IGFyZSBhZHZpc2VkIHRvIHVzZQotICAgOm1vZDpgbXVsdGlwcm9jZXNzaW5nYCBvciA6Y2xhc3M6YGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yYC4KLSAgIEhvd2V2ZXIsIHRocmVhZGluZyBpcyBzdGlsbCBhbiBhcHByb3ByaWF0ZSBtb2RlbCBpZiB5b3Ugd2FudCB0byBydW4KLSAgIG11bHRpcGxlIEkvTy1ib3VuZCB0YXNrcyBzaW11bHRhbmVvdXNseS4KLQotCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFuZCBvYmplY3RzOgorVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogCiAuLiBmdW5jdGlvbjo6IGFjdGl2ZV9jb3VudCgpCkBAIC00MSwxNiArMzAsNiBAQAogICAgY291bnQgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUgbGlzdCByZXR1cm5lZCBieSA6ZnVuYzpgLmVudW1lcmF0ZWAuCiAKIAotLi4gZnVuY3Rpb246OiBDb25kaXRpb24oKQotICAgOm5vaW5kZXg6Ci0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgY29uZGl0aW9uIHZhcmlhYmxlIG9iamVjdC4gQSBjb25kaXRpb24KLSAgIHZhcmlhYmxlIGFsbG93cyBvbmUgb3IgbW9yZSB0aHJlYWRzIHRvIHdhaXQgdW50aWwgdGhleSBhcmUgbm90aWZpZWQgYnkgYW5vdGhlcgotICAgdGhyZWFkLgotCi0gICBTZWUgOnJlZjpgY29uZGl0aW9uLW9iamVjdHNgLgotCi0KIC4uIGZ1bmN0aW9uOjogY3VycmVudF90aHJlYWQoKQogCiAgICBSZXR1cm4gdGhlIGN1cnJlbnQgOmNsYXNzOmBUaHJlYWRgIG9iamVjdCwgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbGVyJ3MgdGhyZWFkCkBAIC01OSw2ICszOCwxNyBAQAogICAgcmV0dXJuZWQuCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfaWRlbnQoKQorCisgICBSZXR1cm4gdGhlICd0aHJlYWQgaWRlbnRpZmllcicgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiAgVGhpcyBpcyBhIG5vbnplcm8KKyAgIGludGVnZXIuICBJdHMgdmFsdWUgaGFzIG5vIGRpcmVjdCBtZWFuaW5nOyBpdCBpcyBpbnRlbmRlZCBhcyBhIG1hZ2ljIGNvb2tpZQorICAgdG8gYmUgdXNlZCBlLmcuIHRvIGluZGV4IGEgZGljdGlvbmFyeSBvZiB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gIFRocmVhZAorICAgaWRlbnRpZmllcnMgbWF5IGJlIHJlY3ljbGVkIHdoZW4gYSB0aHJlYWQgZXhpdHMgYW5kIGFub3RoZXIgdGhyZWFkIGlzCisgICBjcmVhdGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGVudW1lcmF0ZSgpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIDpjbGFzczpgVGhyZWFkYCBvYmplY3RzIGN1cnJlbnRseSBhbGl2ZS4gIFRoZSBsaXN0CkBAIC02Nyw4OSArNTcsNiBAQAogICAgYW5kIHRocmVhZHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBzdGFydGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogRXZlbnQoKQotICAgOm5vaW5kZXg6Ci0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgZXZlbnQgb2JqZWN0LiAgQW4gZXZlbnQgbWFuYWdlcyBhIGZsYWcKLSAgIHRoYXQgY2FuIGJlIHNldCB0byB0cnVlIHdpdGggdGhlIDptZXRoOmB+RXZlbnQuc2V0YCBtZXRob2QgYW5kIHJlc2V0IHRvIGZhbHNlCi0gICB3aXRoIHRoZSA6bWV0aDpgY2xlYXJgIG1ldGhvZC4gIFRoZSA6bWV0aDpgd2FpdGAgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgZmxhZwotICAgaXMgdHJ1ZS4KLQotICAgU2VlIDpyZWY6YGV2ZW50LW9iamVjdHNgLgotCi0KLS4uIGNsYXNzOjogbG9jYWwKLQotICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhyZWFkLWxvY2FsIGRhdGEuICBUaHJlYWQtbG9jYWwgZGF0YSBhcmUgZGF0YSB3aG9zZQotICAgdmFsdWVzIGFyZSB0aHJlYWQgc3BlY2lmaWMuICBUbyBtYW5hZ2UgdGhyZWFkLWxvY2FsIGRhdGEsIGp1c3QgY3JlYXRlIGFuCi0gICBpbnN0YW5jZSBvZiA6Y2xhc3M6YGxvY2FsYCAob3IgYSBzdWJjbGFzcykgYW5kIHN0b3JlIGF0dHJpYnV0ZXMgb24gaXQ6OgotCi0gICAgICBteWRhdGEgPSB0aHJlYWRpbmcubG9jYWwoKQotICAgICAgbXlkYXRhLnggPSAxCi0KLSAgIFRoZSBpbnN0YW5jZSdzIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudCBmb3Igc2VwYXJhdGUgdGhyZWFkcy4KLQotICAgRm9yIG1vcmUgZGV0YWlscyBhbmQgZXh0ZW5zaXZlIGV4YW1wbGVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZQotICAgOm1vZDpgX3RocmVhZGluZ19sb2NhbGAgbW9kdWxlLgotCi0KLS4uIGZ1bmN0aW9uOjogTG9jaygpCi0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgcHJpbWl0aXZlIGxvY2sgb2JqZWN0LiAgT25jZSBhIHRocmVhZCBoYXMKLSAgIGFjcXVpcmVkIGl0LCBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGFjcXVpcmUgaXQgYmxvY2ssIHVudGlsIGl0IGlzIHJlbGVhc2VkOyBhbnkKLSAgIHRocmVhZCBtYXkgcmVsZWFzZSBpdC4KLQotICAgU2VlIDpyZWY6YGxvY2stb2JqZWN0c2AuCi0KLQotLi4gZnVuY3Rpb246OiBSTG9jaygpCi0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgcmVlbnRyYW50IGxvY2sgb2JqZWN0LiBBIHJlZW50cmFudCBsb2NrCi0gICBtdXN0IGJlIHJlbGVhc2VkIGJ5IHRoZSB0aHJlYWQgdGhhdCBhY3F1aXJlZCBpdC4gT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgYQotICAgcmVlbnRyYW50IGxvY2ssIHRoZSBzYW1lIHRocmVhZCBtYXkgYWNxdWlyZSBpdCBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUKLSAgIHRocmVhZCBtdXN0IHJlbGVhc2UgaXQgb25jZSBmb3IgZWFjaCB0aW1lIGl0IGhhcyBhY3F1aXJlZCBpdC4KLQotICAgU2VlIDpyZWY6YHJsb2NrLW9iamVjdHNgLgotCi0KLS4uIGZ1bmN0aW9uOjogU2VtYXBob3JlKHZhbHVlPTEpCi0gICA6bm9pbmRleDoKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBzZW1hcGhvcmUgb2JqZWN0LiAgQSBzZW1hcGhvcmUgbWFuYWdlcyBhCi0gICBjb3VudGVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIDptZXRoOmByZWxlYXNlYCBjYWxscyBtaW51cyB0aGUgbnVtYmVyIG9mCi0gICA6bWV0aDpgYWNxdWlyZWAgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gVGhlIDptZXRoOmBhY3F1aXJlYCBtZXRob2QgYmxvY2tzCi0gICBpZiBuZWNlc3NhcnkgdW50aWwgaXQgY2FuIHJldHVybiB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlciBuZWdhdGl2ZS4gIElmIG5vdAotICAgZ2l2ZW4sICp2YWx1ZSogZGVmYXVsdHMgdG8gMS4KLQotICAgU2VlIDpyZWY6YHNlbWFwaG9yZS1vYmplY3RzYC4KLQotCi0uLiBmdW5jdGlvbjo6IEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBib3VuZGVkIHNlbWFwaG9yZSBvYmplY3QuICBBIGJvdW5kZWQKLSAgIHNlbWFwaG9yZSBjaGVja3MgdG8gbWFrZSBzdXJlIGl0cyBjdXJyZW50IHZhbHVlIGRvZXNuJ3QgZXhjZWVkIGl0cyBpbml0aWFsCi0gICB2YWx1ZS4gIElmIGl0IGRvZXMsIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zIHNlbWFwaG9yZXMKLSAgIGFyZSB1c2VkIHRvIGd1YXJkIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuICBJZiB0aGUgc2VtYXBob3JlIGlzIHJlbGVhc2VkCi0gICB0b28gbWFueSB0aW1lcyBpdCdzIGEgc2lnbiBvZiBhIGJ1Zy4gIElmIG5vdCBnaXZlbiwgKnZhbHVlKiBkZWZhdWx0cyB0byAxLgotCi0KLS4uIGNsYXNzOjogVGhyZWFkCi0gICA6bm9pbmRleDoKLQotICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB0aHJlYWQgb2YgY29udHJvbC4gIFRoaXMgY2xhc3MgY2FuIGJlIHNhZmVseQotICAgc3ViY2xhc3NlZCBpbiBhIGxpbWl0ZWQgZmFzaGlvbi4KLQotICAgU2VlIDpyZWY6YHRocmVhZC1vYmplY3RzYC4KLQotCi0uLiBjbGFzczo6IFRpbWVyCi0gICA6bm9pbmRleDoKLQotICAgQSB0aHJlYWQgdGhhdCBleGVjdXRlcyBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIGludGVydmFsIGhhcyBwYXNzZWQuCi0KLSAgIFNlZSA6cmVmOmB0aW1lci1vYmplY3RzYC4KLQotCiAuLiBmdW5jdGlvbjo6IHNldHRyYWNlKGZ1bmMpCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiB0cmFjZSBmdW5jdGlvbgpAQCAtMTc0LDcgKzgxLDcgQEAKICAgICpzaXplKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQKICAgIHRocmVhZHMsIGFuZCBtdXN0IGJlIDAgKHVzZSBwbGF0Zm9ybSBvciBjb25maWd1cmVkIGRlZmF1bHQpIG9yIGEgcG9zaXRpdmUKICAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmtCKS4gSWYgY2hhbmdpbmcgdGhlIHRocmVhZCBzdGFjayBzaXplIGlzCi0gICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCisgICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBzcGVjaWZpZWQgc3RhY2sgc2l6ZSBpcwogICAgaW52YWxpZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBzdGFjayBzaXplIGlzIHVubW9kaWZpZWQuICAzMmtCCiAgICBpcyBjdXJyZW50bHkgdGhlIG1pbmltdW0gc3VwcG9ydGVkIHN0YWNrIHNpemUgdmFsdWUgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQKICAgIHN0YWNrIHNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmLiAgTm90ZSB0aGF0IHNvbWUgcGxhdGZvcm1zIG1heSBoYXZlCkBAIC0xOTgsNyArMTA1LDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLURldGFpbGVkIGludGVyZmFjZXMgZm9yIHRoZSBvYmplY3RzIGFyZSBkb2N1bWVudGVkIGJlbG93LgorVGhpcyBtb2R1bGUgZGVmaW5lcyBhIG51bWJlciBvZiBjbGFzc2VzLCB3aGljaCBhcmUgZGV0YWlsZWQgaW4gdGhlIHNlY3Rpb25zCitiZWxvdy4KIAogVGhlIGRlc2lnbiBvZiB0aGlzIG1vZHVsZSBpcyBsb29zZWx5IGJhc2VkIG9uIEphdmEncyB0aHJlYWRpbmcgbW9kZWwuIEhvd2V2ZXIsCiB3aGVyZSBKYXZhIG1ha2VzIGxvY2tzIGFuZCBjb25kaXRpb24gdmFyaWFibGVzIGJhc2ljIGJlaGF2aW9yIG9mIGV2ZXJ5IG9iamVjdCwKQEAgLTIxMSwxNyArMTE5LDM4IEBACiBBbGwgb2YgdGhlIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93IGFyZSBleGVjdXRlZCBhdG9taWNhbGx5LgogCiAKK1RocmVhZC1Mb2NhbCBEYXRhCistLS0tLS0tLS0tLS0tLS0tLQorCitUaHJlYWQtbG9jYWwgZGF0YSBpcyBkYXRhIHdob3NlIHZhbHVlcyBhcmUgdGhyZWFkIHNwZWNpZmljLiAgVG8gbWFuYWdlCit0aHJlYWQtbG9jYWwgZGF0YSwganVzdCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBsb2NhbGAgKG9yIGEKK3N1YmNsYXNzKSBhbmQgc3RvcmUgYXR0cmlidXRlcyBvbiBpdDo6CisKKyAgbXlkYXRhID0gdGhyZWFkaW5nLmxvY2FsKCkKKyAgbXlkYXRhLnggPSAxCisKK1RoZSBpbnN0YW5jZSdzIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudCBmb3Igc2VwYXJhdGUgdGhyZWFkcy4KKworCisuLiBjbGFzczo6IGxvY2FsKCkKKworICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhyZWFkLWxvY2FsIGRhdGEuCisKKyAgIEZvciBtb3JlIGRldGFpbHMgYW5kIGV4dGVuc2l2ZSBleGFtcGxlcywgc2VlIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUKKyAgIDptb2Q6YF90aHJlYWRpbmdfbG9jYWxgIG1vZHVsZS4KKworCiAuLiBfdGhyZWFkLW9iamVjdHM6CiAKIFRocmVhZCBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIGNsYXNzIHJlcHJlc2VudHMgYW4gYWN0aXZpdHkgdGhhdCBpcyBydW4gaW4gYSBzZXBhcmF0ZSB0aHJlYWQgb2YgY29udHJvbC4KLVRoZXJlIGFyZSB0d28gd2F5cyB0byBzcGVjaWZ5IHRoZSBhY3Rpdml0eTogYnkgcGFzc2luZyBhIGNhbGxhYmxlIG9iamVjdCB0byB0aGUKLWNvbnN0cnVjdG9yLCBvciBieSBvdmVycmlkaW5nIHRoZSA6bWV0aDpgflRocmVhZC5ydW5gIG1ldGhvZCBpbiBhIHN1YmNsYXNzLgotTm8gb3RoZXIgbWV0aG9kcyAoZXhjZXB0IGZvciB0aGUgY29uc3RydWN0b3IpIHNob3VsZCBiZSBvdmVycmlkZGVuIGluIGEKLXN1YmNsYXNzLiAgSW4gb3RoZXIgd29yZHMsICAqb25seSogIG92ZXJyaWRlIHRoZSA6bWV0aDpgflRocmVhZC5fX2luaXRfX2AKLWFuZCA6bWV0aDpgflRocmVhZC5ydW5gIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy4KK1RoZSA6Y2xhc3M6YFRocmVhZGAgY2xhc3MgcmVwcmVzZW50cyBhbiBhY3Rpdml0eSB0aGF0IGlzIHJ1biBpbiBhIHNlcGFyYXRlCit0aHJlYWQgb2YgY29udHJvbC4gIFRoZXJlIGFyZSB0d28gd2F5cyB0byBzcGVjaWZ5IHRoZSBhY3Rpdml0eTogYnkgcGFzc2luZyBhCitjYWxsYWJsZSBvYmplY3QgdG8gdGhlIGNvbnN0cnVjdG9yLCBvciBieSBvdmVycmlkaW5nIHRoZSA6bWV0aDpgflRocmVhZC5ydW5gCittZXRob2QgaW4gYSBzdWJjbGFzcy4gIE5vIG90aGVyIG1ldGhvZHMgKGV4Y2VwdCBmb3IgdGhlIGNvbnN0cnVjdG9yKSBzaG91bGQgYmUKK292ZXJyaWRkZW4gaW4gYSBzdWJjbGFzcy4gIEluIG90aGVyIHdvcmRzLCAqb25seSogIG92ZXJyaWRlIHRoZQorOm1ldGg6YH5UaHJlYWQuX19pbml0X19gIGFuZCA6bWV0aDpgflRocmVhZC5ydW5gIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy4KIAogT25jZSBhIHRocmVhZCBvYmplY3QgaXMgY3JlYXRlZCwgaXRzIGFjdGl2aXR5IG11c3QgYmUgc3RhcnRlZCBieSBjYWxsaW5nIHRoZQogdGhyZWFkJ3MgOm1ldGg6YH5UaHJlYWQuc3RhcnRgIG1ldGhvZC4gIFRoaXMgaW52b2tlcyB0aGUgOm1ldGg6YH5UaHJlYWQucnVuYApAQCAtMjM5LDEwICsxNjgsMTEgQEAKIEEgdGhyZWFkIGhhcyBhIG5hbWUuICBUaGUgbmFtZSBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciwgYW5kIHJlYWQgb3IKIGNoYW5nZWQgdGhyb3VnaCB0aGUgOmF0dHI6YH5UaHJlYWQubmFtZWAgYXR0cmlidXRlLgogCi1BIHRocmVhZCBjYW4gYmUgZmxhZ2dlZCBhcyBhICJkYWVtb24gdGhyZWFkIi4gIFRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBmbGFnCi1pcyB0aGF0IHRoZSBlbnRpcmUgUHl0aG9uIHByb2dyYW0gZXhpdHMgd2hlbiBvbmx5IGRhZW1vbiB0aHJlYWRzIGFyZSBsZWZ0LgotVGhlIGluaXRpYWwgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGNyZWF0aW5nIHRocmVhZC4gIFRoZSBmbGFnIGNhbiBiZQotc2V0IHRocm91Z2ggdGhlIDphdHRyOmB+VGhyZWFkLmRhZW1vbmAgcHJvcGVydHkuCitBIHRocmVhZCBjYW4gYmUgZmxhZ2dlZCBhcyBhICJkYWVtb24gdGhyZWFkIi4gIFRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBmbGFnIGlzCit0aGF0IHRoZSBlbnRpcmUgUHl0aG9uIHByb2dyYW0gZXhpdHMgd2hlbiBvbmx5IGRhZW1vbiB0aHJlYWRzIGFyZSBsZWZ0LiAgVGhlCitpbml0aWFsIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyB0aHJlYWQuICBUaGUgZmxhZyBjYW4gYmUgc2V0Cit0aHJvdWdoIHRoZSA6YXR0cjpgflRocmVhZC5kYWVtb25gIHByb3BlcnR5IG9yIHRoZSAqZGFlbW9uKiBjb25zdHJ1Y3RvcgorYXJndW1lbnQuCiAKIFRoZXJlIGlzIGEgIm1haW4gdGhyZWFkIiBvYmplY3Q7IHRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgdGhyZWFkIG9mCiBjb250cm9sIGluIHRoZSBQeXRob24gcHJvZ3JhbS4gIEl0IGlzIG5vdCBhIGRhZW1vbiB0aHJlYWQuCkBAIC0yNTUsNyArMTg1LDggQEAKIHNpbmNlIGl0IGlzIGltcG9zc2libGUgdG8gZGV0ZWN0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhbGllbiB0aHJlYWRzLgogCiAKLS4uIGNsYXNzOjogVGhyZWFkKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSkKKy4uIGNsYXNzOjogVGhyZWFkKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwgKiwgXAorICAgICAgICAgICAgICAgICAgZGFlbW9uPU5vbmUpCiAKICAgIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cy4gIEFyZ3VtZW50cwogICAgYXJlOgpAQCAtMjc0LDEwICsyMDUsMTcgQEAKICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLgogICAgRGVmYXVsdHMgdG8gYGB7fWBgLgogCisgICBJZiBub3QgYGBOb25lYGAsICpkYWVtb24qIGV4cGxpY2l0bHkgc2V0cyB3aGV0aGVyIHRoZSB0aHJlYWQgaXMgZGFlbW9uaWMuCisgICBJZiBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB0aGUgZGFlbW9uaWMgcHJvcGVydHkgaXMgaW5oZXJpdGVkIGZyb20gdGhlCisgICBjdXJyZW50IHRocmVhZC4KKwogICAgSWYgdGhlIHN1YmNsYXNzIG92ZXJyaWRlcyB0aGUgY29uc3RydWN0b3IsIGl0IG11c3QgbWFrZSBzdXJlIHRvIGludm9rZSB0aGUKICAgIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgKGBgVGhyZWFkLl9faW5pdF9fKClgYCkgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UgdG8KICAgIHRoZSB0aHJlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRhZW1vbiogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHN0YXJ0KCkKIAogICAgICAgU3RhcnQgdGhlIHRocmVhZCdzIGFjdGl2aXR5LgpAQCAtMzY4LDYgKzMwNiwxOCBAQAogICAgICAgcHJvcGVydHkgaW5zdGVhZC4KIAogCisuLiBpbXBsLWRldGFpbDo6CisKKyAgIER1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgaW4gQ1B5dGhvbiBvbmx5IG9uZSB0aHJlYWQKKyAgIGNhbiBleGVjdXRlIFB5dGhvbiBjb2RlIGF0IG9uY2UgKGV2ZW4gdGhvdWdoIGNlcnRhaW4gcGVyZm9ybWFuY2Utb3JpZW50ZWQKKyAgIGxpYnJhcmllcyBtaWdodCBvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24pLgorICAgSWYgeW91IHdhbnQgeW91ciBhcHBsaWNhdGlvbiB0byBtYWtlIGJldHRlciBvZiB1c2Ugb2YgdGhlIGNvbXB1dGF0aW9uYWwKKyAgIHJlc291cmNlcyBvZiBtdWx0aS1jb3JlIG1hY2hpbmVzLCB5b3UgYXJlIGFkdmlzZWQgdG8gdXNlCisgICA6bW9kOmBtdWx0aXByb2Nlc3NpbmdgIG9yIDpjbGFzczpgY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3JgLgorICAgSG93ZXZlciwgdGhyZWFkaW5nIGlzIHN0aWxsIGFuIGFwcHJvcHJpYXRlIG1vZGVsIGlmIHlvdSB3YW50IHRvIHJ1bgorICAgbXVsdGlwbGUgSS9PLWJvdW5kIHRhc2tzIHNpbXVsdGFuZW91c2x5LgorCisKIC4uIF9sb2NrLW9iamVjdHM6CiAKIExvY2sgT2JqZWN0cwpAQCAtMzk5LDQ1ICszNDksNTUgQEAKIEFsbCBtZXRob2RzIGFyZSBleGVjdXRlZCBhdG9taWNhbGx5LgogCiAKLS4uIG1ldGhvZDo6IExvY2suYWNxdWlyZShibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKQorLi4gY2xhc3M6OiBMb2NrKCkKIAotICAgQWNxdWlyZSBhIGxvY2ssIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZy4KKyAgIFRoZSBjbGFzcyBpbXBsZW1lbnRpbmcgcHJpbWl0aXZlIGxvY2sgb2JqZWN0cy4gIE9uY2UgYSB0aHJlYWQgaGFzIGFjcXVpcmVkIGEKKyAgIGxvY2ssIHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gYWNxdWlyZSBpdCBibG9jaywgdW50aWwgaXQgaXMgcmVsZWFzZWQ7IGFueQorICAgdGhyZWFkIG1heSByZWxlYXNlIGl0LgogCi0gICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwKLSAgIGJsb2NrIHVudGlsIHRoZSBsb2NrIGlzIHVubG9ja2VkLCB0aGVuIHNldCBpdCB0byBsb2NrZWQgYW5kIHJldHVybiBgYFRydWVgYC4KLQotICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIGBgRmFsc2VgYCwgZG8gbm90IGJsb2NrLgotICAgSWYgYSBjYWxsIHdpdGggKmJsb2NraW5nKiBzZXQgdG8gYGBUcnVlYGAgd291bGQgYmxvY2ssIHJldHVybiBgYEZhbHNlYGAKLSAgIGltbWVkaWF0ZWx5OyBvdGhlcndpc2UsIHNldCB0aGUgbG9jayB0byBsb2NrZWQgYW5kIHJldHVybiBgYFRydWVgYC4KLQotICAgV2hlbiBpbnZva2VkIHdpdGggdGhlIGZsb2F0aW5nLXBvaW50ICp0aW1lb3V0KiBhcmd1bWVudCBzZXQgdG8gYSBwb3NpdGl2ZQotICAgdmFsdWUsIGJsb2NrIGZvciBhdCBtb3N0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzcGVjaWZpZWQgYnkgKnRpbWVvdXQqCi0gICBhbmQgYXMgbG9uZyBhcyB0aGUgbG9jayBjYW5ub3QgYmUgYWNxdWlyZWQuICBBIG5lZ2F0aXZlICp0aW1lb3V0KiBhcmd1bWVudAotICAgc3BlY2lmaWVzIGFuIHVuYm91bmRlZCB3YWl0LiAgSXQgaXMgZm9yYmlkZGVuIHRvIHNwZWNpZnkgYSAqdGltZW91dCoKLSAgIHdoZW4gKmJsb2NraW5nKiBpcyBmYWxzZS4KLQotICAgVGhlIHJldHVybiB2YWx1ZSBpcyBgYFRydWVgYCBpZiB0aGUgbG9jayBpcyBhY3F1aXJlZCBzdWNjZXNzZnVsbHksCi0gICBgYEZhbHNlYGAgaWYgbm90IChmb3IgZXhhbXBsZSBpZiB0aGUgKnRpbWVvdXQqIGV4cGlyZWQpLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVGhlICp0aW1lb3V0KiBwYXJhbWV0ZXIgaXMgbmV3LgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgTG9jayBhY3F1aXJlcyBjYW4gbm93IGJlIGludGVycnVwdGVkIGJ5IHNpZ25hbHMgb24gUE9TSVguCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgogCiAKLS4uIG1ldGhvZDo6IExvY2sucmVsZWFzZSgpCisgICAuLiBtZXRob2Q6OiBhY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpCiAKLSAgIFJlbGVhc2UgYSBsb2NrLiAgVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZCwgbm90IG9ubHkgdGhlIHRocmVhZAotICAgd2hpY2ggaGFzIGFjcXVpcmVkIHRoZSBsb2NrLgorICAgICAgQWNxdWlyZSBhIGxvY2ssIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZy4KIAotICAgV2hlbiB0aGUgbG9jayBpcyBsb2NrZWQsIHJlc2V0IGl0IHRvIHVubG9ja2VkLCBhbmQgcmV0dXJuLiAgSWYgYW55IG90aGVyIHRocmVhZHMKLSAgIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBsb2NrIHRvIGJlY29tZSB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUgb2YgdGhlbQotICAgdG8gcHJvY2VlZC4KKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBgYFRydWVgYCAodGhlIGRlZmF1bHQpLAorICAgICAgYmxvY2sgdW50aWwgdGhlIGxvY2sgaXMgdW5sb2NrZWQsIHRoZW4gc2V0IGl0IHRvIGxvY2tlZCBhbmQgcmV0dXJuIGBgVHJ1ZWBgLgogCi0gICBXaGVuIGludm9rZWQgb24gYW4gdW5sb2NrZWQgbG9jaywgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLgorICAgICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIGBgRmFsc2VgYCwgZG8gbm90IGJsb2NrLgorICAgICAgSWYgYSBjYWxsIHdpdGggKmJsb2NraW5nKiBzZXQgdG8gYGBUcnVlYGAgd291bGQgYmxvY2ssIHJldHVybiBgYEZhbHNlYGAKKyAgICAgIGltbWVkaWF0ZWx5OyBvdGhlcndpc2UsIHNldCB0aGUgbG9jayB0byBsb2NrZWQgYW5kIHJldHVybiBgYFRydWVgYC4KIAotICAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlLgorICAgICAgV2hlbiBpbnZva2VkIHdpdGggdGhlIGZsb2F0aW5nLXBvaW50ICp0aW1lb3V0KiBhcmd1bWVudCBzZXQgdG8gYSBwb3NpdGl2ZQorICAgICAgdmFsdWUsIGJsb2NrIGZvciBhdCBtb3N0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzcGVjaWZpZWQgYnkgKnRpbWVvdXQqCisgICAgICBhbmQgYXMgbG9uZyBhcyB0aGUgbG9jayBjYW5ub3QgYmUgYWNxdWlyZWQuICBBIG5lZ2F0aXZlICp0aW1lb3V0KiBhcmd1bWVudAorICAgICAgc3BlY2lmaWVzIGFuIHVuYm91bmRlZCB3YWl0LiAgSXQgaXMgZm9yYmlkZGVuIHRvIHNwZWNpZnkgYSAqdGltZW91dCoKKyAgICAgIHdoZW4gKmJsb2NraW5nKiBpcyBmYWxzZS4KKworICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBgYFRydWVgYCBpZiB0aGUgbG9jayBpcyBhY3F1aXJlZCBzdWNjZXNzZnVsbHksCisgICAgICBgYEZhbHNlYGAgaWYgbm90IChmb3IgZXhhbXBsZSBpZiB0aGUgKnRpbWVvdXQqIGV4cGlyZWQpLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgVGhlICp0aW1lb3V0KiBwYXJhbWV0ZXIgaXMgbmV3LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgTG9jayBhY3F1aXJlcyBjYW4gbm93IGJlIGludGVycnVwdGVkIGJ5IHNpZ25hbHMgb24gUE9TSVguCisKKworICAgLi4gbWV0aG9kOjogcmVsZWFzZSgpCisKKyAgICAgIFJlbGVhc2UgYSBsb2NrLiAgVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZCwgbm90IG9ubHkgdGhlIHRocmVhZAorICAgICAgd2hpY2ggaGFzIGFjcXVpcmVkIHRoZSBsb2NrLgorCisgICAgICBXaGVuIHRoZSBsb2NrIGlzIGxvY2tlZCwgcmVzZXQgaXQgdG8gdW5sb2NrZWQsIGFuZCByZXR1cm4uICBJZiBhbnkgb3RoZXIgdGhyZWFkcworICAgICAgYXJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZSBvZiB0aGVtCisgICAgICB0byBwcm9jZWVkLgorCisgICAgICBXaGVuIGludm9rZWQgb24gYW4gdW5sb2NrZWQgbG9jaywgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlLgogCiAKIC4uIF9ybG9jay1vYmplY3RzOgpAQCAtNDYxLDQ3ICs0MjEsNTkgQEAKIFJlZW50cmFudCBsb2NrcyBhbHNvIHN1cHBvcnQgdGhlIDpyZWY6YGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCA8d2l0aC1sb2Nrcz5gLgogCiAKLS4uIG1ldGhvZDo6IFJMb2NrLmFjcXVpcmUoYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSkKKy4uIGNsYXNzOjogUkxvY2soKQogCi0gICBBY3F1aXJlIGEgbG9jaywgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nLgorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHJlZW50cmFudCBsb2NrIG9iamVjdHMuICBBIHJlZW50cmFudCBsb2NrIG11c3QgYmUKKyAgIHJlbGVhc2VkIGJ5IHRoZSB0aHJlYWQgdGhhdCBhY3F1aXJlZCBpdC4gIE9uY2UgYSB0aHJlYWQgaGFzIGFjcXVpcmVkIGEKKyAgIHJlZW50cmFudCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQgYWdhaW4gd2l0aG91dCBibG9ja2luZzsgdGhlCisgICB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMgYWNxdWlyZWQgaXQuCiAKLSAgIFdoZW4gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50czogaWYgdGhpcyB0aHJlYWQgYWxyZWFkeSBvd25zIHRoZSBsb2NrLCBpbmNyZW1lbnQKLSAgIHRoZSByZWN1cnNpb24gbGV2ZWwgYnkgb25lLCBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5LiAgT3RoZXJ3aXNlLCBpZiBhbm90aGVyCi0gICB0aHJlYWQgb3ducyB0aGUgbG9jaywgYmxvY2sgdW50aWwgdGhlIGxvY2sgaXMgdW5sb2NrZWQuICBPbmNlIHRoZSBsb2NrIGlzCi0gICB1bmxvY2tlZCAobm90IG93bmVkIGJ5IGFueSB0aHJlYWQpLCB0aGVuIGdyYWIgb3duZXJzaGlwLCBzZXQgdGhlIHJlY3Vyc2lvbiBsZXZlbAotICAgdG8gb25lLCBhbmQgcmV0dXJuLiAgSWYgbW9yZSB0aGFuIG9uZSB0aHJlYWQgaXMgYmxvY2tlZCB3YWl0aW5nIHVudGlsIHRoZSBsb2NrCi0gICBpcyB1bmxvY2tlZCwgb25seSBvbmUgYXQgYSB0aW1lIHdpbGwgYmUgYWJsZSB0byBncmFiIG93bmVyc2hpcCBvZiB0aGUgbG9jay4KLSAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZSBpbiB0aGlzIGNhc2UuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byB0cnVlLCBkbyB0aGUgc2FtZSB0aGluZyBhcyB3aGVuCi0gICBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIGFuZCByZXR1cm4gdHJ1ZS4KLQotICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIGZhbHNlLCBkbyBub3QgYmxvY2suICBJZiBhIGNhbGwKLSAgIHdpdGhvdXQgYW4gYXJndW1lbnQgd291bGQgYmxvY2ssIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCBkbyB0aGUKLSAgIHNhbWUgdGhpbmcgYXMgd2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIGFuZCByZXR1cm4gdHJ1ZS4KLQotICAgV2hlbiBpbnZva2VkIHdpdGggdGhlIGZsb2F0aW5nLXBvaW50ICp0aW1lb3V0KiBhcmd1bWVudCBzZXQgdG8gYSBwb3NpdGl2ZQotICAgdmFsdWUsIGJsb2NrIGZvciBhdCBtb3N0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzcGVjaWZpZWQgYnkgKnRpbWVvdXQqCi0gICBhbmQgYXMgbG9uZyBhcyB0aGUgbG9jayBjYW5ub3QgYmUgYWNxdWlyZWQuICBSZXR1cm4gdHJ1ZSBpZiB0aGUgbG9jayBoYXMKLSAgIGJlZW4gYWNxdWlyZWQsIGZhbHNlIGlmIHRoZSB0aW1lb3V0IGhhcyBlbGFwc2VkLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVGhlICp0aW1lb3V0KiBwYXJhbWV0ZXIgaXMgbmV3LgorICAgTm90ZSB0aGF0IGBgUkxvY2tgYCBpcyBhY3R1YWxseSBhIGZhY3RvcnkgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBpbnN0YW5jZQorICAgb2YgdGhlIG1vc3QgZWZmaWNpZW50IHZlcnNpb24gb2YgdGhlIGNvbmNyZXRlIFJMb2NrIGNsYXNzIHRoYXQgaXMgc3VwcG9ydGVkCisgICBieSB0aGUgcGxhdGZvcm0uCiAKIAotLi4gbWV0aG9kOjogUkxvY2sucmVsZWFzZSgpCisgICAuLiBtZXRob2Q6OiBhY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpCiAKLSAgIFJlbGVhc2UgYSBsb2NrLCBkZWNyZW1lbnRpbmcgdGhlIHJlY3Vyc2lvbiBsZXZlbC4gIElmIGFmdGVyIHRoZSBkZWNyZW1lbnQgaXQgaXMKLSAgIHplcm8sIHJlc2V0IHRoZSBsb2NrIHRvIHVubG9ja2VkIChub3Qgb3duZWQgYnkgYW55IHRocmVhZCksIGFuZCBpZiBhbnkgb3RoZXIKLSAgIHRocmVhZHMgYXJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZQotICAgb2YgdGhlbSB0byBwcm9jZWVkLiAgSWYgYWZ0ZXIgdGhlIGRlY3JlbWVudCB0aGUgcmVjdXJzaW9uIGxldmVsIGlzIHN0aWxsCi0gICBub256ZXJvLCB0aGUgbG9jayByZW1haW5zIGxvY2tlZCBhbmQgb3duZWQgYnkgdGhlIGNhbGxpbmcgdGhyZWFkLgorICAgICAgQWNxdWlyZSBhIGxvY2ssIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZy4KIAotICAgT25seSBjYWxsIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGNhbGxpbmcgdGhyZWFkIG93bnMgdGhlIGxvY2suIEEKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBsb2NrIGlzCi0gICB1bmxvY2tlZC4KKyAgICAgIFdoZW4gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50czogaWYgdGhpcyB0aHJlYWQgYWxyZWFkeSBvd25zIHRoZSBsb2NrLCBpbmNyZW1lbnQKKyAgICAgIHRoZSByZWN1cnNpb24gbGV2ZWwgYnkgb25lLCBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5LiAgT3RoZXJ3aXNlLCBpZiBhbm90aGVyCisgICAgICB0aHJlYWQgb3ducyB0aGUgbG9jaywgYmxvY2sgdW50aWwgdGhlIGxvY2sgaXMgdW5sb2NrZWQuICBPbmNlIHRoZSBsb2NrIGlzCisgICAgICB1bmxvY2tlZCAobm90IG93bmVkIGJ5IGFueSB0aHJlYWQpLCB0aGVuIGdyYWIgb3duZXJzaGlwLCBzZXQgdGhlIHJlY3Vyc2lvbiBsZXZlbAorICAgICAgdG8gb25lLCBhbmQgcmV0dXJuLiAgSWYgbW9yZSB0aGFuIG9uZSB0aHJlYWQgaXMgYmxvY2tlZCB3YWl0aW5nIHVudGlsIHRoZSBsb2NrCisgICAgICBpcyB1bmxvY2tlZCwgb25seSBvbmUgYXQgYSB0aW1lIHdpbGwgYmUgYWJsZSB0byBncmFiIG93bmVyc2hpcCBvZiB0aGUgbG9jay4KKyAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZSBpbiB0aGlzIGNhc2UuCiAKLSAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byB0cnVlLCBkbyB0aGUgc2FtZSB0aGluZyBhcyB3aGVuCisgICAgICBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIGFuZCByZXR1cm4gdHJ1ZS4KKworICAgICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIGZhbHNlLCBkbyBub3QgYmxvY2suICBJZiBhIGNhbGwKKyAgICAgIHdpdGhvdXQgYW4gYXJndW1lbnQgd291bGQgYmxvY2ssIHJldHVybiBmYWxzZSBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCBkbyB0aGUKKyAgICAgIHNhbWUgdGhpbmcgYXMgd2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIGFuZCByZXR1cm4gdHJ1ZS4KKworICAgICAgV2hlbiBpbnZva2VkIHdpdGggdGhlIGZsb2F0aW5nLXBvaW50ICp0aW1lb3V0KiBhcmd1bWVudCBzZXQgdG8gYSBwb3NpdGl2ZQorICAgICAgdmFsdWUsIGJsb2NrIGZvciBhdCBtb3N0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzcGVjaWZpZWQgYnkgKnRpbWVvdXQqCisgICAgICBhbmQgYXMgbG9uZyBhcyB0aGUgbG9jayBjYW5ub3QgYmUgYWNxdWlyZWQuICBSZXR1cm4gdHJ1ZSBpZiB0aGUgbG9jayBoYXMKKyAgICAgIGJlZW4gYWNxdWlyZWQsIGZhbHNlIGlmIHRoZSB0aW1lb3V0IGhhcyBlbGFwc2VkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgVGhlICp0aW1lb3V0KiBwYXJhbWV0ZXIgaXMgbmV3LgorCisKKyAgIC4uIG1ldGhvZDo6IHJlbGVhc2UoKQorCisgICAgICBSZWxlYXNlIGEgbG9jaywgZGVjcmVtZW50aW5nIHRoZSByZWN1cnNpb24gbGV2ZWwuICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IGl0IGlzCisgICAgICB6ZXJvLCByZXNldCB0aGUgbG9jayB0byB1bmxvY2tlZCAobm90IG93bmVkIGJ5IGFueSB0aHJlYWQpLCBhbmQgaWYgYW55IG90aGVyCisgICAgICB0aHJlYWRzIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBsb2NrIHRvIGJlY29tZSB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUKKyAgICAgIG9mIHRoZW0gdG8gcHJvY2VlZC4gIElmIGFmdGVyIHRoZSBkZWNyZW1lbnQgdGhlIHJlY3Vyc2lvbiBsZXZlbCBpcyBzdGlsbAorICAgICAgbm9uemVybywgdGhlIGxvY2sgcmVtYWlucyBsb2NrZWQgYW5kIG93bmVkIGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KKworICAgICAgT25seSBjYWxsIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGNhbGxpbmcgdGhyZWFkIG93bnMgdGhlIGxvY2suIEEKKyAgICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBsb2NrIGlzCisgICAgICB1bmxvY2tlZC4KKworICAgICAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlLgogCiAKIC4uIF9jb25kaXRpb24tb2JqZWN0czoKQEAgLTUzNiwxMCArNTA4LDYgQEAKIHRoZSB0aHJlYWQgdGhhdCBjYWxsZWQgOm1ldGg6YH5Db25kaXRpb24ubm90aWZ5YCBvciA6bWV0aDpgfkNvbmRpdGlvbi5ub3RpZnlfYWxsYAogZmluYWxseSByZWxpbnF1aXNoZXMgb3duZXJzaGlwIG9mIHRoZSBsb2NrLgogCi0KLVVzYWdlCi1eXl5eXgotCiBUaGUgdHlwaWNhbCBwcm9ncmFtbWluZyBzdHlsZSB1c2luZyBjb25kaXRpb24gdmFyaWFibGVzIHVzZXMgdGhlIGxvY2sgdG8KIHN5bmNocm9uaXplIGFjY2VzcyB0byBzb21lIHNoYXJlZCBzdGF0ZTsgdGhyZWFkcyB0aGF0IGFyZSBpbnRlcmVzdGVkIGluIGEKIHBhcnRpY3VsYXIgY2hhbmdlIG9mIHN0YXRlIGNhbGwgOm1ldGg6YH5Db25kaXRpb24ud2FpdGAgcmVwZWF0ZWRseSB1bnRpbCB0aGV5CkBAIC01NzgsMTUgKzU0NiwxOCBAQAogaXRlbSB0byB0aGUgYnVmZmVyIG9ubHkgbmVlZHMgdG8gd2FrZSB1cCBvbmUgY29uc3VtZXIgdGhyZWFkLgogCiAKLUludGVyZmFjZQotXl5eXl5eXl5eCi0KIC4uIGNsYXNzOjogQ29uZGl0aW9uKGxvY2s9Tm9uZSkKIAorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGNvbmRpdGlvbiB2YXJpYWJsZSBvYmplY3RzLiAgQSBjb25kaXRpb24gdmFyaWFibGUKKyAgIGFsbG93cyBvbmUgb3IgbW9yZSB0aHJlYWRzIHRvIHdhaXQgdW50aWwgdGhleSBhcmUgbm90aWZpZWQgYnkgYW5vdGhlciB0aHJlYWQuCisKICAgIElmIHRoZSAqbG9jayogYXJndW1lbnQgaXMgZ2l2ZW4gYW5kIG5vdCBgYE5vbmVgYCwgaXQgbXVzdCBiZSBhIDpjbGFzczpgTG9ja2AKICAgIG9yIDpjbGFzczpgUkxvY2tgIG9iamVjdCwgYW5kIGl0IGlzIHVzZWQgYXMgdGhlIHVuZGVybHlpbmcgbG9jay4gIE90aGVyd2lzZSwKICAgIGEgbmV3IDpjbGFzczpgUkxvY2tgIG9iamVjdCBpcyBjcmVhdGVkIGFuZCB1c2VkIGFzIHRoZSB1bmRlcmx5aW5nIGxvY2suCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBjaGFuZ2VkIGZyb20gYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGEgY2xhc3MuCisKICAgIC4uIG1ldGhvZDo6IGFjcXVpcmUoKmFyZ3MpCiAKICAgICAgIEFjcXVpcmUgdGhlIHVuZGVybHlpbmcgbG9jay4gVGhpcyBtZXRob2QgY2FsbHMgdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kIG9uCkBAIC02OTYsMTAgKzY2NywxOSBAQAogCiAuLiBjbGFzczo6IFNlbWFwaG9yZSh2YWx1ZT0xKQogCisgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgc2VtYXBob3JlIG9iamVjdHMuICBBIHNlbWFwaG9yZSBtYW5hZ2VzIGEgY291bnRlcgorICAgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgOm1ldGg6YHJlbGVhc2VgIGNhbGxzIG1pbnVzIHRoZSBudW1iZXIgb2YKKyAgIDptZXRoOmBhY3F1aXJlYCBjYWxscywgcGx1cyBhbiBpbml0aWFsIHZhbHVlLiAgVGhlIDptZXRoOmBhY3F1aXJlYCBtZXRob2QKKyAgIGJsb2NrcyBpZiBuZWNlc3NhcnkgdW50aWwgaXQgY2FuIHJldHVybiB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlciBuZWdhdGl2ZS4KKyAgIElmIG5vdCBnaXZlbiwgKnZhbHVlKiBkZWZhdWx0cyB0byAxLgorCiAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgZ2l2ZXMgdGhlIGluaXRpYWwgKnZhbHVlKiBmb3IgdGhlIGludGVybmFsIGNvdW50ZXI7IGl0CiAgICBkZWZhdWx0cyB0byBgYDFgYC4gSWYgdGhlICp2YWx1ZSogZ2l2ZW4gaXMgbGVzcyB0aGFuIDAsIDpleGM6YFZhbHVlRXJyb3JgIGlzCiAgICByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBjaGFuZ2VkIGZyb20gYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGEgY2xhc3MuCisKICAgIC4uIG1ldGhvZDo6IGFjcXVpcmUoYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD1Ob25lKQogCiAgICAgICBBY3F1aXJlIGEgc2VtYXBob3JlLgpAQCAtNzMyLDYgKzcxMiwxOCBAQAogICAgICAgdGhhbiB6ZXJvIGFnYWluLCB3YWtlIHVwIHRoYXQgdGhyZWFkLgogCiAKKy4uIGNsYXNzOjogQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT0xKQorCisgICBDbGFzcyBpbXBsZW1lbnRpbmcgYm91bmRlZCBzZW1hcGhvcmUgb2JqZWN0cy4gIEEgYm91bmRlZCBzZW1hcGhvcmUgY2hlY2tzIHRvCisgICBtYWtlIHN1cmUgaXRzIGN1cnJlbnQgdmFsdWUgZG9lc24ndCBleGNlZWQgaXRzIGluaXRpYWwgdmFsdWUuICBJZiBpdCBkb2VzLAorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiBJbiBtb3N0IHNpdHVhdGlvbnMgc2VtYXBob3JlcyBhcmUgdXNlZCB0byBndWFyZAorICAgcmVzb3VyY2VzIHdpdGggbGltaXRlZCBjYXBhY2l0eS4gIElmIHRoZSBzZW1hcGhvcmUgaXMgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKKyAgIGl0J3MgYSBzaWduIG9mIGEgYnVnLiAgSWYgbm90IGdpdmVuLCAqdmFsdWUqIGRlZmF1bHRzIHRvIDEuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBjaGFuZ2VkIGZyb20gYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGEgY2xhc3MuCisKKwogLi4gX3NlbWFwaG9yZS1leGFtcGxlczoKIAogOmNsYXNzOmBTZW1hcGhvcmVgIEV4YW1wbGUKQEAgLTc0Myw3ICs3MzUsNyBAQAogbWFpbiB0aHJlYWQgd291bGQgaW5pdGlhbGl6ZSB0aGUgc2VtYXBob3JlOjoKIAogICAgbWF4Y29ubmVjdGlvbnMgPSA1Ci0gICAuLi4KKyAgICMgLi4uCiAgICBwb29sX3NlbWEgPSBCb3VuZGVkU2VtYXBob3JlKHZhbHVlPW1heGNvbm5lY3Rpb25zKQogCiBPbmNlIHNwYXduZWQsIHdvcmtlciB0aHJlYWRzIGNhbGwgdGhlIHNlbWFwaG9yZSdzIGFjcXVpcmUgYW5kIHJlbGVhc2UgbWV0aG9kcwpAQCAtNzUyLDcgKzc0NCw3IEBACiAgICB3aXRoIHBvb2xfc2VtYToKICAgICAgICBjb25uID0gY29ubmVjdGRiKCkKICAgICAgICB0cnk6Ci0gICAgICAgICAgIC4uLiB1c2UgY29ubmVjdGlvbiAuLi4KKyAgICAgICAgICAgIyAuLi4gdXNlIGNvbm5lY3Rpb24gLi4uCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAKQEAgLTc3NSw3ICs3NjcsMTMgQEAKIAogLi4gY2xhc3M6OiBFdmVudCgpCiAKLSAgIFRoZSBpbnRlcm5hbCBmbGFnIGlzIGluaXRpYWxseSBmYWxzZS4KKyAgIENsYXNzIGltcGxlbWVudGluZyBldmVudCBvYmplY3RzLiAgQW4gZXZlbnQgbWFuYWdlcyBhIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRvCisgICB0cnVlIHdpdGggdGhlIDptZXRoOmB+RXZlbnQuc2V0YCBtZXRob2QgYW5kIHJlc2V0IHRvIGZhbHNlIHdpdGggdGhlCisgICA6bWV0aDpgY2xlYXJgIG1ldGhvZC4gIFRoZSA6bWV0aDpgd2FpdGAgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgZmxhZyBpcyB0cnVlLgorICAgVGhlIGZsYWcgaXMgaW5pdGlhbGx5IGZhbHNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgogCiAgICAuLiBtZXRob2Q6OiBpc19zZXQoKQogCkBAIC04NDAsNiArODM4LDkgQEAKICAgIENyZWF0ZSBhIHRpbWVyIHRoYXQgd2lsbCBydW4gKmZ1bmN0aW9uKiB3aXRoIGFyZ3VtZW50cyAqYXJncyogYW5kICBrZXl3b3JkCiAgICBhcmd1bWVudHMgKmt3YXJncyosIGFmdGVyICppbnRlcnZhbCogc2Vjb25kcyBoYXZlIHBhc3NlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIGNoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KKwogICAgLi4gbWV0aG9kOjogY2FuY2VsKCkKIAogICAgICAgU3RvcCB0aGUgdGltZXIsIGFuZCBjYW5jZWwgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgdGltZXIncyBhY3Rpb24uICBUaGlzIHdpbGwKQEAgLTk3MywyNyArOTc0LDMgQEAKIEN1cnJlbnRseSwgOmNsYXNzOmBMb2NrYCwgOmNsYXNzOmBSTG9ja2AsIDpjbGFzczpgQ29uZGl0aW9uYCwKIDpjbGFzczpgU2VtYXBob3JlYCwgYW5kIDpjbGFzczpgQm91bmRlZFNlbWFwaG9yZWAgb2JqZWN0cyBtYXkgYmUgdXNlZCBhcwogOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBjb250ZXh0IG1hbmFnZXJzLgotCi0KLS4uIF90aHJlYWRlZC1pbXBvcnRzOgotCi1JbXBvcnRpbmcgaW4gdGhyZWFkZWQgY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2hpbGUgdGhlIGltcG9ydCBtYWNoaW5lcnkgaXMgdGhyZWFkLXNhZmUsIHRoZXJlIGFyZSB0d28ga2V5IHJlc3RyaWN0aW9ucyBvbgotdGhyZWFkZWQgaW1wb3J0cyBkdWUgdG8gaW5oZXJlbnQgbGltaXRhdGlvbnMgaW4gdGhlIHdheSB0aGF0IHRocmVhZC1zYWZldHkgaXMKLXByb3ZpZGVkOgotCi0qIEZpcnN0bHksIG90aGVyIHRoYW4gaW4gdGhlIG1haW4gbW9kdWxlLCBhbiBpbXBvcnQgc2hvdWxkIG5vdCBoYXZlIHRoZQotICBzaWRlIGVmZmVjdCBvZiBzcGF3bmluZyBhIG5ldyB0aHJlYWQgYW5kIHRoZW4gd2FpdGluZyBmb3IgdGhhdCB0aHJlYWQgaW4KLSAgYW55IHdheS4gRmFpbGluZyB0byBhYmlkZSBieSB0aGlzIHJlc3RyaWN0aW9uIGNhbiBsZWFkIHRvIGEgZGVhZGxvY2sgaWYKLSAgdGhlIHNwYXduZWQgdGhyZWFkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgYXR0ZW1wdHMgdG8gaW1wb3J0IGEgbW9kdWxlLgotKiBTZWNvbmRseSwgYWxsIGltcG9ydCBhdHRlbXB0cyBtdXN0IGJlIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGludGVycHJldGVyCi0gIHN0YXJ0cyBzaHV0dGluZyBpdHNlbGYgZG93bi4gVGhpcyBjYW4gYmUgbW9zdCBlYXNpbHkgYWNoaWV2ZWQgYnkgb25seQotICBwZXJmb3JtaW5nIGltcG9ydHMgZnJvbSBub24tZGFlbW9uIHRocmVhZHMgY3JlYXRlZCB0aHJvdWdoIHRoZSB0aHJlYWRpbmcKLSAgbW9kdWxlLiBEYWVtb24gdGhyZWFkcyBhbmQgdGhyZWFkcyBjcmVhdGVkIGRpcmVjdGx5IHdpdGggdGhlIHRocmVhZAotICBtb2R1bGUgd2lsbCByZXF1aXJlIHNvbWUgb3RoZXIgZm9ybSBvZiBzeW5jaHJvbml6YXRpb24gdG8gZW5zdXJlIHRoZXkgZG8KLSAgbm90IGF0dGVtcHQgaW1wb3J0cyBhZnRlciBzeXN0ZW0gc2h1dGRvd24gaGFzIGNvbW1lbmNlZC4gRmFpbHVyZSB0bwotICBhYmlkZSBieSB0aGlzIHJlc3RyaWN0aW9uIHdpbGwgbGVhZCB0byBpbnRlcm1pdHRlbnQgZXhjZXB0aW9ucyBhbmQKLSAgY3Jhc2hlcyBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24gKGFzIHRoZSBsYXRlIGltcG9ydHMgYXR0ZW1wdCB0bwotICBhY2Nlc3MgbWFjaGluZXJ5IHdoaWNoIGlzIG5vIGxvbmdlciBpbiBhIHZhbGlkIHN0YXRlKS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWUucnN0IGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKaW5kZXggZTBjNzAwNy4uYmFkM2Y0NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKQEAgLTQxLDI1ICs0MSw2IEBACiAgIHBhcnNlZCwgdGhleSBhcmUgY29udmVydGVkIGFjY29yZGluZyB0byB0aGUgUE9TSVggYW5kIElTTyBDIHN0YW5kYXJkczogdmFsdWVzCiAgIDY5LS05OSBhcmUgbWFwcGVkIHRvIDE5NjktLTE5OTksIGFuZCB2YWx1ZXMgMC0tNjggYXJlIG1hcHBlZCB0byAyMDAwLS0yMDY4LgogCi0gIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB5ZWFycyB3aXRoIGxlc3MgdGhhbiA0IGRpZ2l0cyBhcmUgdHJlYXRlZAotICBzcGVjaWFsbHkgYnkgOmZ1bmM6YGFzY3RpbWVgLCA6ZnVuYzpgbWt0aW1lYCwgYW5kIDpmdW5jOmBzdHJmdGltZWAgZnVuY3Rpb25zCi0gIHRoYXQgb3BlcmF0ZSBvbiBhIDktdHVwbGUgb3IgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgdmFsdWVzLiBJZiB5ZWFyICh0aGUgZmlyc3QKLSAgdmFsdWUgaW4gdGhlIDktdHVwbGUpIGlzIHNwZWNpZmllZCB3aXRoIGxlc3MgdGhhbiA0IGRpZ2l0cywgaXRzIGludGVycHJldGF0aW9uCi0gIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIGBgYWNjZXB0MmR5ZWFyYGAgdmFyaWFibGUuCi0KLSAgSWYgYGBhY2NlcHQyZHllYXJgYCBpcyB0cnVlIChkZWZhdWx0KSwgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGlzCi0gIGludm9rZWQgYXMgZm9sbG93czoKLQotICAgIC0gZm9yIDItZGlnaXQgeWVhciwgY2VudHVyeSBpcyBndWVzc2VkIGFjY29yZGluZyB0byBQT1NJWCBydWxlcyBmb3IKLSAgICAgIGBgJXlgYCBzdHJwdGltZSBmb3JtYXQuICBBIGRlcHJlY2F0aW9uIHdhcm5pbmcgaXMgaXNzdWVkIHdoZW4gY2VudHVyeQotICAgICAgaW5mb3JtYXRpb24gaXMgZ3Vlc3NlZCBpbiB0aGlzIHdheS4KLQotICAgIC0gZm9yIDMtZGlnaXQgb3IgbmVnYXRpdmUgeWVhciwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gIElmIGBgYWNjZXB0MmR5ZWFyYGAgaXMgZmFsc2UgKHNldCBieSB0aGUgcHJvZ3JhbSBvciBhcyBhIHJlc3VsdCBvZiBhCi0gIG5vbi1lbXB0eSB2YWx1ZSBhc3NpZ25lZCB0byBgYFBZVEhPTlkyS2BgIGVudmlyb25tZW50IHZhcmlhYmxlKSBhbGwgeWVhcgotICB2YWx1ZXMgYXJlIGludGVycHJldGVkIGFzIGdpdmVuLgotCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IFVUQwogICAgc2luZ2xlOiBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZQpAQCAtOTYsNiArNzcsMTEgQEAKIAogICBTZWUgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlc2Ugb2JqZWN0cy4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICBUaGUgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgdHlwZSB3YXMgZXh0ZW5kZWQgdG8gcHJvdmlkZSB0aGUgOmF0dHI6YHRtX2dtdG9mZmAKKyAgICAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIHdoZW4gcGxhdGZvcm0gc3VwcG9ydHMgY29ycmVzcG9uZGluZworICAgICBgYHN0cnVjdCB0bWBgIG1lbWJlcnMuCisKICogVXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGNvbnZlcnQgYmV0d2VlbiB0aW1lIHJlcHJlc2VudGF0aW9uczoKIAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xMTcsMjQgKzEwMyw2IEBACiAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhbmQgZGF0YSBpdGVtczoKIAotCi0uLiBkYXRhOjogYWNjZXB0MmR5ZWFyCi0KLSAgIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHR3by1kaWdpdCB5ZWFyIHZhbHVlcyB3aWxsIGJlCi0gICBtYXBwZWQgdG8gMTk2OS0tMjA2OCByYW5nZSBieSA6ZnVuYzpgYXNjdGltZWAsIDpmdW5jOmBta3RpbWVgLCBhbmQKLSAgIDpmdW5jOmBzdHJmdGltZWAgZnVuY3Rpb25zLiAgVGhpcyBpcyB0cnVlIGJ5IGRlZmF1bHQsIGJ1dCB3aWxsIGJlCi0gICBzZXQgdG8gZmFsc2UgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTlkyS2AgaGFzCi0gICBiZWVuIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcuICBJdCBtYXkgYWxzbyBiZSBtb2RpZmllZCBhdCBydW4KLSAgIHRpbWUuCi0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLSAgICAgIE1hcHBpbmcgb2YgMi1kaWdpdCB5ZWFyIHZhbHVlcyBieSA6ZnVuYzpgYXNjdGltZWAsCi0gICAgICA6ZnVuYzpgbWt0aW1lYCwgYW5kIDpmdW5jOmBzdHJmdGltZWAgZnVuY3Rpb25zIHRvIDE5NjktLTIwNjgKLSAgICAgIHJhbmdlIGlzIGRlcHJlY2F0ZWQuICBQcm9ncmFtcyB0aGF0IG5lZWQgdG8gcHJvY2VzcyAyLWRpZ2l0Ci0gICAgICB5ZWFycyBzaG91bGQgdXNlIGBgJXlgYCBjb2RlIGF2YWlsYWJsZSBpbiA6ZnVuYzpgc3RycHRpbWVgCi0gICAgICBmdW5jdGlvbiBvciBjb252ZXJ0IDItZGlnaXQgeWVhciB2YWx1ZXMgdG8gNC1kaWdpdCB0aGVtc2VsdmVzLgotCi0KIC4uIGRhdGE6OiBhbHR6b25lCiAKICAgIFRoZSBvZmZzZXQgb2YgdGhlIGxvY2FsIERTVCB0aW1lem9uZSwgaW4gc2Vjb25kcyB3ZXN0IG9mIFVUQywgaWYgb25lIGlzIGRlZmluZWQuCkBAIC0xNTIsNyArMTIwLDggQEAKIAogICAgLi4gbm90ZTo6CiAKLSAgICAgIFVubGlrZSB0aGUgQyBmdW5jdGlvbiBvZiB0aGUgc2FtZSBuYW1lLCB0aGVyZSBpcyBubyB0cmFpbGluZyBuZXdsaW5lLgorICAgICAgVW5saWtlIHRoZSBDIGZ1bmN0aW9uIG9mIHRoZSBzYW1lIG5hbWUsIDpmdW5jOmBhc2N0aW1lYCBkb2VzIG5vdCBhZGQgYQorICAgICAgdHJhaWxpbmcgbmV3bGluZS4KIAogCiAuLiBmdW5jdGlvbjo6IGNsb2NrKCkKQEAgLTE3Miw2ICsxNDEsOTcgQEAKICAgIDpjOmZ1bmM6YFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyYC4gVGhlIHJlc29sdXRpb24gaXMgdHlwaWNhbGx5IGJldHRlciB0aGFuIG9uZQogICAgbWljcm9zZWNvbmQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoZSBiZWhhdmlvdXIgb2YgdGhpcyBmdW5jdGlvbiBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybTogdXNlCisgICAgICA6ZnVuYzpgcGVyZl9jb3VudGVyYCBvciA6ZnVuYzpgcHJvY2Vzc190aW1lYCBpbnN0ZWFkLCBkZXBlbmRpbmcgb24geW91cgorICAgICAgcmVxdWlyZW1lbnRzLCB0byBoYXZlIGEgd2VsbCBkZWZpbmVkIGJlaGF2aW91ci4KKworCisuLiBmdW5jdGlvbjo6IGNsb2NrX2dldHJlcyhjbGtfaWQpCisKKyAgIFJldHVybiB0aGUgcmVzb2x1dGlvbiAocHJlY2lzaW9uKSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrICpjbGtfaWQqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogY2xvY2tfZ2V0dGltZShjbGtfaWQpCisKKyAgIFJldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrICpjbGtfaWQqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogY2xvY2tfc2V0dGltZShjbGtfaWQsIHRpbWUpCisKKyAgIFNldCB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrICpjbGtfaWQqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19ISUdIUkVTCisKKyAgIFRoZSBTb2xhcmlzIE9TIGhhcyBhIENMT0NLX0hJR0hSRVMgdGltZXIgdGhhdCBhdHRlbXB0cyB0byB1c2UgYW4gb3B0aW1hbAorICAgaGFyZHdhcmUgc291cmNlLCBhbmQgbWF5IGdpdmUgY2xvc2UgdG8gbmFub3NlY29uZCByZXNvbHV0aW9uLiAgQ0xPQ0tfSElHSFJFUworICAgaXMgdGhlIG5vbmFkanVzdGFibGUsIGhpZ2gtcmVzb2x1dGlvbiBjbG9jay4KKworICAgQXZhaWxhYmlsaXR5OiBTb2xhcmlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfTU9OT1RPTklDCisKKyAgIENsb2NrIHRoYXQgY2Fubm90IGJlIHNldCBhbmQgcmVwcmVzZW50cyBtb25vdG9uaWMgdGltZSBzaW5jZSBzb21lIHVuc3BlY2lmaWVkCisgICBzdGFydGluZyBwb2ludC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfTU9OT1RPTklDX1JBVworCisgICBTaW1pbGFyIHRvIDpkYXRhOmBDTE9DS19NT05PVE9OSUNgLCBidXQgcHJvdmlkZXMgYWNjZXNzIHRvIGEgcmF3CisgICBoYXJkd2FyZS1iYXNlZCB0aW1lIHRoYXQgaXMgbm90IHN1YmplY3QgdG8gTlRQIGFkanVzdG1lbnRzLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4IDIuNi4yOCBvciBsYXRlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAorCisgICBIaWdoLXJlc29sdXRpb24gcGVyLXByb2Nlc3MgdGltZXIgZnJvbSB0aGUgQ1BVLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19SRUFMVElNRQorCisgICBTeXN0ZW0td2lkZSByZWFsLXRpbWUgY2xvY2suICBTZXR0aW5nIHRoaXMgY2xvY2sgcmVxdWlyZXMgYXBwcm9wcmlhdGUKKyAgIHByaXZpbGVnZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisKKyAgIFRocmVhZC1zcGVjaWZpYyBDUFUtdGltZSBjbG9jay4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBmdW5jdGlvbjo6IGN0aW1lKFtzZWNzXSkKIApAQCAtMTg2LDYgKzI0NiwzMSBAQAogICAgTm9uemVybyBpZiBhIERTVCB0aW1lem9uZSBpcyBkZWZpbmVkLgogCiAKKy4uIGZ1bmN0aW9uOjogZ2V0X2Nsb2NrX2luZm8obmFtZSkKKworICAgR2V0IGluZm9ybWF0aW9uIG9uIHRoZSBzcGVjaWZpZWQgY2xvY2sgYXMgYSBuYW1lc3BhY2Ugb2JqZWN0LgorICAgU3VwcG9ydGVkIGNsb2NrIG5hbWVzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgdG8gcmVhZCB0aGVpciB2YWx1ZQorICAgYXJlOgorCisgICAqIGBgJ2Nsb2NrJ2BgOiA6ZnVuYzpgdGltZS5jbG9ja2AKKyAgICogYGAnbW9ub3RvbmljJ2BgOiA6ZnVuYzpgdGltZS5tb25vdG9uaWNgCisgICAqIGBgJ3BlcmZfY291bnRlcidgYDogOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYAorICAgKiBgYCdwcm9jZXNzX3RpbWUnYGA6IDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAKKyAgICogYGAndGltZSdgYDogOmZ1bmM6YHRpbWUudGltZWAKKworICAgVGhlIHJlc3VsdCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorCisgICAtICphZGp1c3RhYmxlKjogYGBUcnVlYGAgaWYgdGhlIGNsb2NrIGNhbiBiZSBjaGFuZ2VkIGF1dG9tYXRpY2FsbHkgKGUuZy4gYnkKKyAgICAgYSBOVFAgZGFlbW9uKSBvciBtYW51YWxseSBieSB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UKKyAgIC0gKmltcGxlbWVudGF0aW9uKjogVGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcgQyBmdW5jdGlvbiB1c2VkIHRvIGdldAorICAgICB0aGUgY2xvY2sgdmFsdWUKKyAgIC0gKm1vbm90b25pYyo6IGBgVHJ1ZWBgIGlmIHRoZSBjbG9jayBjYW5ub3QgZ28gYmFja3dhcmQsCisgICAgIGBgRmFsc2VgYCBvdGhlcndpc2UKKyAgIC0gKnJlc29sdXRpb24qOiBUaGUgcmVzb2x1dGlvbiBvZiB0aGUgY2xvY2sgaW4gc2Vjb25kcyAoOmNsYXNzOmBmbG9hdGApCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ210aW1lKFtzZWNzXSkKIAogICAgQ29udmVydCBhIHRpbWUgZXhwcmVzc2VkIGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIHRvIGEgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgaW4KQEAgLTIxNSw2ICszMDAsNDcgQEAKICAgIFRoZSBlYXJsaWVzdCBkYXRlIGZvciB3aGljaCBpdCBjYW4gZ2VuZXJhdGUgYSB0aW1lIGlzIHBsYXRmb3JtLWRlcGVuZGVudC4KIAogCisuLiBmdW5jdGlvbjo6IG1vbm90b25pYygpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgKGluIGZyYWN0aW9uYWwgc2Vjb25kcykgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jaworICAgdGhhdCBjYW5ub3QgZ28gYmFja3dhcmRzLiAgVGhlIGNsb2NrIGlzIG5vdCBhZmZlY3RlZCBieSBzeXN0ZW0gY2xvY2sgdXBkYXRlcy4KKyAgIFRoZSByZWZlcmVuY2UgcG9pbnQgb2YgdGhlIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZQorICAgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSByZXN1bHRzIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICBPbiBXaW5kb3dzIHZlcnNpb25zIG9sZGVyIHRoYW4gVmlzdGEsIDpmdW5jOmBtb25vdG9uaWNgIGRldGVjdHMKKyAgIDpjOmZ1bmM6YEdldFRpY2tDb3VudGAgaW50ZWdlciBvdmVyZmxvdyAoMzIgYml0cywgcm9sbC1vdmVyIGFmdGVyIDQ5LjcgZGF5cykuCisgICBJdCBpbmNyZWFzZXMgYW4gaW50ZXJuYWwgZXBvY2ggKHJlZmVyZW5jZSB0aW1lIGJ5KSAyXCA6c3VwOmAzMmAgZWFjaCB0aW1lCisgICB0aGF0IGFuIG92ZXJmbG93IGlzIGRldGVjdGVkLiAgVGhlIGVwb2NoIGlzIHN0b3JlZCBpbiB0aGUgcHJvY2Vzcy1sb2NhbCBzdGF0ZQorICAgYW5kIHNvIHRoZSB2YWx1ZSBvZiA6ZnVuYzpgbW9ub3RvbmljYCBtYXkgYmUgZGlmZmVyZW50IGluIHR3byBQeXRob24KKyAgIHByb2Nlc3NlcyBydW5uaW5nIGZvciBtb3JlIHRoYW4gNDkgZGF5cy4gT24gbW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgV2luZG93cworICAgYW5kIG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLCA6ZnVuYzpgbW9ub3RvbmljYCBpcyBzeXN0ZW0td2lkZS4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBNYWMgT1MgWCwgTGludXgsIEZyZWVCU0QsIE9wZW5CU0QsIFNvbGFyaXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcGVyZl9jb3VudGVyKCkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSAoaW4gZnJhY3Rpb25hbCBzZWNvbmRzKSBvZiBhIHBlcmZvcm1hbmNlIGNvdW50ZXIsIGkuZS4gYQorICAgY2xvY2sgd2l0aCB0aGUgaGlnaGVzdCBhdmFpbGFibGUgcmVzb2x1dGlvbiB0byBtZWFzdXJlIGEgc2hvcnQgZHVyYXRpb24uICBJdAorICAgZG9lcyBpbmNsdWRlIHRpbWUgZWxhcHNlZCBkdXJpbmcgc2xlZXAgYW5kIGlzIHN5c3RlbS13aWRlLiAgVGhlIHJlZmVyZW5jZQorICAgcG9pbnQgb2YgdGhlIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKyAgIHRoZSByZXN1bHRzIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHByb2Nlc3NfdGltZSgpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgKGluIGZyYWN0aW9uYWwgc2Vjb25kcykgb2YgdGhlIHN1bSBvZiB0aGUgc3lzdGVtIGFuZCB1c2VyCisgICBDUFUgdGltZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzLiAgSXQgZG9lcyBub3QgaW5jbHVkZSB0aW1lIGVsYXBzZWQgZHVyaW5nCisgICBzbGVlcC4gIEl0IGlzIHByb2Nlc3Mtd2lkZSBieSBkZWZpbml0aW9uLiAgVGhlIHJlZmVyZW5jZSBwb2ludCBvZiB0aGUKKyAgIHJldHVybmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgc28gdGhhdCBvbmx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHJlc3VsdHMKKyAgIG9mIGNvbnNlY3V0aXZlIGNhbGxzIGlzIHZhbGlkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZnVuY3Rpb246OiBzbGVlcChzZWNzKQogCiAgICBTdXNwZW5kIGV4ZWN1dGlvbiBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLiAgVGhlIGFyZ3VtZW50IG1heSBiZSBhCkBAIC0zMDgsOSArNDM0LDE1IEBACiAgICB8IGBgJXlgYCAgICB8IFllYXIgd2l0aG91dCBjZW50dXJ5IGFzIGEgZGVjaW1hbCBudW1iZXIgICAgICAgfCAgICAgICB8CiAgICB8ICAgICAgICAgICB8IFswMCw5OV0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi0gICB8IGBgJVlgYCAgICB8IFllYXIgd2l0aCBjZW50dXJ5IGFzIGEgZGVjaW1hbCBudW1iZXIuICAgICAgICAgfCBcKDQpICB8CisgICB8IGBgJVlgYCAgICB8IFllYXIgd2l0aCBjZW50dXJ5IGFzIGEgZGVjaW1hbCBudW1iZXIuICAgICAgICAgfCAgICAgICB8CiAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisgICB8IGBgJXpgYCAgICB8IFRpbWUgem9uZSBvZmZzZXQgaW5kaWNhdGluZyBhIHBvc2l0aXZlIG9yICAgICAgfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIHRpbWUgZGlmZmVyZW5jZSBmcm9tIFVUQy9HTVQgb2YgdGhlICAgfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IGZvcm0gK0hITU0gb3IgLUhITU0sIHdoZXJlIEggcmVwcmVzZW50cyBkZWNpbWFsfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IGhvdXIgZGlnaXRzIGFuZCBNIHJlcHJlc2VudHMgZGVjaW1hbCBtaW51dGUgICAgfCAgICAgICB8CisgICB8ICAgICAgICAgICB8IGRpZ2l0cyBbLTIzOjU5LCArMjM6NTldLiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAgICB8IGBgJVpgYCAgICB8IFRpbWUgem9uZSBuYW1lIChubyBjaGFyYWN0ZXJzIGlmIG5vIHRpbWUgem9uZSAgfCAgICAgICB8CiAgICB8ICAgICAgICAgICB8IGV4aXN0cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCkBAIC0zMzIsMTIgKzQ2NCw2IEBACiAgICAgICBXaGVuIHVzZWQgd2l0aCB0aGUgOmZ1bmM6YHN0cnB0aW1lYCBmdW5jdGlvbiwgYGAlVWBgIGFuZCBgYCVXYGAgYXJlIG9ubHkgdXNlZCBpbgogICAgICAgY2FsY3VsYXRpb25zIHdoZW4gdGhlIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIHllYXIgYXJlIHNwZWNpZmllZC4KIAotICAgKDQpCi0gICAgICBQcm9kdWNlcyBkaWZmZXJlbnQgcmVzdWx0cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCi0gICAgICBgYHRpbWUuYWNjZXB0MmR5ZWFyYGAgdmFyaWFibGUuICBTZWUgOnJlZjpgWWVhciAyMDAwIChZMkspCi0gICAgICBpc3N1ZXMgPHRpbWUteTJraXNzdWVzPmAgZm9yIGRldGFpbHMuCi0KLQogICAgSGVyZSBpcyBhbiBleGFtcGxlLCBhIGZvcm1hdCBmb3IgZGF0ZXMgY29tcGF0aWJsZSB3aXRoIHRoYXQgc3BlY2lmaWVkICBpbiB0aGUKICAgIDpyZmM6YDI4MjJgIEludGVybmV0IGVtYWlsIHN0YW5kYXJkLiAgWyNdXyA6OgogCkBAIC00MTYsMTAgKzU0MiwxMyBAQAogICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDggICAgIHwgOmF0dHI6YHRtX2lzZHN0YCAgfCAwLCAxIG9yIC0xOyBzZWUgYmVsb3cgICAgICAgICAgIHwKICAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBOL0EgICB8IDphdHRyOmB0bV96b25lYCAgIHwgYWJicmV2aWF0aW9uIG9mIHRpbWV6b25lIG5hbWUgICB8CisgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgTi9BICAgfCA6YXR0cjpgdG1fZ210b2ZmYCB8IG9mZnNldCBlYXN0IG9mIFVUQyBpbiBzZWNvbmRzICAgfAorICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIE5vdGUgdGhhdCB1bmxpa2UgdGhlIEMgc3RydWN0dXJlLCB0aGUgbW9udGggdmFsdWUgaXMgYSByYW5nZSBvZiBbMSwgMTJdLCBub3QKLSAgIFswLCAxMV0uICBBIHllYXIgdmFsdWUgd2lsbCBiZSBoYW5kbGVkIGFzIGRlc2NyaWJlZCB1bmRlciA6cmVmOmBZZWFyIDIwMDAKLSAgIChZMkspIGlzc3VlcyA8dGltZS15Mmtpc3N1ZXM+YCBhYm92ZS4gIEEgYGAtMWBgIGFyZ3VtZW50IGFzIHRoZSBkYXlsaWdodAorICAgWzAsIDExXS4gIEEgYGAtMWBgIGFyZ3VtZW50IGFzIHRoZSBkYXlsaWdodAogICAgc2F2aW5ncyBmbGFnLCBwYXNzZWQgdG8gOmZ1bmM6YG1rdGltZWAgd2lsbCB1c3VhbGx5IHJlc3VsdCBpbiB0aGUgY29ycmVjdAogICAgZGF5bGlnaHQgc2F2aW5ncyBzdGF0ZSB0byBiZSBmaWxsZWQgaW4uCiAKQEAgLTQyNyw2ICs1NTYsOSBAQAogICAgOmNsYXNzOmBzdHJ1Y3RfdGltZWAsIG9yIGhhdmluZyBlbGVtZW50cyBvZiB0aGUgd3JvbmcgdHlwZSwgYQogICAgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgOmF0dHI6YHRtX2dtdG9mZmAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgb24gcGxhdGZvcm1zCisgICAgIHdpdGggQyBsaWJyYXJ5IHN1cHBvcnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGluIGBgc3RydWN0IHRtYGAuCiAKIC4uIGZ1bmN0aW9uOjogdGltZSgpCiAKQEAgLTQzNyw3ICs1NjksNiBAQAogICAgbG93ZXIgdmFsdWUgdGhhbiBhIHByZXZpb3VzIGNhbGwgaWYgdGhlIHN5c3RlbSBjbG9jayBoYXMgYmVlbiBzZXQgYmFjayBiZXR3ZWVuCiAgICB0aGUgdHdvIGNhbGxzLgogCi0KIC4uIGRhdGE6OiB0aW1lem9uZQogCiAgICBUaGUgb2Zmc2V0IG9mIHRoZSBsb2NhbCAobm9uLURTVCkgdGltZXpvbmUsIGluIHNlY29uZHMgd2VzdCBvZiBVVEMgKG5lZ2F0aXZlIGluCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1laXQucnN0IGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAppbmRleCBhM2VjNjZmLi5hNDg3OTE3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1laXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKQEAgLTczLDEzICs3MywxMCBAQAogCiAuLiBmdW5jdGlvbjo6IGRlZmF1bHRfdGltZXIoKQogCi0gICBEZWZpbmUgYSBkZWZhdWx0IHRpbWVyLCBpbiBhIHBsYXRmb3JtLXNwZWNpZmljIG1hbm5lci4gT24gV2luZG93cywKLSAgIDpmdW5jOmB0aW1lLmNsb2NrYCBoYXMgbWljcm9zZWNvbmQgZ3JhbnVsYXJpdHksIGJ1dCA6ZnVuYzpgdGltZS50aW1lYCdzCi0gICBncmFudWxhcml0eSBpcyAxLzYwdGggb2YgYSBzZWNvbmQuICBPbiBVbml4LCA6ZnVuYzpgdGltZS5jbG9ja2AgaGFzIDEvMTAwdGggb2YKLSAgIGEgc2Vjb25kIGdyYW51bGFyaXR5LCBhbmQgOmZ1bmM6YHRpbWUudGltZWAgaXMgbXVjaCBtb3JlIHByZWNpc2UuICBPbiBlaXRoZXIKLSAgIHBsYXRmb3JtLCA6ZnVuYzpgZGVmYXVsdF90aW1lcmAgbWVhc3VyZXMgd2FsbCBjbG9jayB0aW1lLCBub3QgdGhlIENQVQotICAgdGltZS4gIFRoaXMgbWVhbnMgdGhhdCBvdGhlciBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgc2FtZSBjb21wdXRlciBtYXkKLSAgIGludGVyZmVyZSB3aXRoIHRoZSB0aW1pbmcuCisgICBUaGUgZGVmYXVsdCB0aW1lciwgd2hpY2ggaXMgYWx3YXlzIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgIGlzIG5vdyB0aGUgZGVmYXVsdCB0aW1lci4KIAogCiAuLiBjbGFzczo6IFRpbWVyKHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTx0aW1lciBmdW5jdGlvbj4pCkBAIC0xODcsMTMgKzE4NCwyMCBAQAogCiAgICBzdGF0ZW1lbnQgdG8gYmUgZXhlY3V0ZWQgb25jZSBpbml0aWFsbHkgKGRlZmF1bHQgYGBwYXNzYGApCiAKKy4uIGNtZG9wdGlvbjo6IC1wLCAtLXByb2Nlc3MKKworICAgbWVhc3VyZSBwcm9jZXNzIHRpbWUsIG5vdCB3YWxsY2xvY2sgdGltZSwgdXNpbmcgOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYAorICAgaW5zdGVhZCBvZiA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgLCB3aGljaCBpcyB0aGUgZGVmYXVsdAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gY21kb3B0aW9uOjogLXQsIC0tdGltZQogCi0gICB1c2UgOmZ1bmM6YHRpbWUudGltZWAgKGRlZmF1bHQgb24gYWxsIHBsYXRmb3JtcyBidXQgV2luZG93cykKKyAgIHVzZSA6ZnVuYzpgdGltZS50aW1lYCAoZGVwcmVjYXRlZCkKIAogLi4gY21kb3B0aW9uOjogLWMsIC0tY2xvY2sKIAotICAgdXNlIDpmdW5jOmB0aW1lLmNsb2NrYCAoZGVmYXVsdCBvbiBXaW5kb3dzKQorICAgdXNlIDpmdW5jOmB0aW1lLmNsb2NrYCAoZGVwcmVjYXRlZCkKIAogLi4gY21kb3B0aW9uOjogLXYsIC0tdmVyYm9zZQogCkBAIC0yMTEsMTIgKzIxNSwxMSBAQAogSWYgOm9wdGlvbjpgLW5gIGlzIG5vdCBnaXZlbiwgYSBzdWl0YWJsZSBudW1iZXIgb2YgbG9vcHMgaXMgY2FsY3VsYXRlZCBieSB0cnlpbmcKIHN1Y2Nlc3NpdmUgcG93ZXJzIG9mIDEwIHVudGlsIHRoZSB0b3RhbCB0aW1lIGlzIGF0IGxlYXN0IDAuMiBzZWNvbmRzLgogCi06ZnVuYzpgZGVmYXVsdF90aW1lcmAgbWVhc3VyYXRpb25zIGNhbiBiZSBhZmZlY3RlZCBieSBvdGhlciBwcm9ncmFtcyBydW5uaW5nIG9uCi10aGUgc2FtZSBtYWNoaW5lLCBzbwotdGhlIGJlc3QgdGhpbmcgdG8gZG8gd2hlbiBhY2N1cmF0ZSB0aW1pbmcgaXMgbmVjZXNzYXJ5IGlzIHRvIHJlcGVhdAotdGhlIHRpbWluZyBhIGZldyB0aW1lcyBhbmQgdXNlIHRoZSBiZXN0IHRpbWUuICBUaGUgOm9wdGlvbjpgLXJgIG9wdGlvbiBpcyBnb29kCi1mb3IgdGhpczsgdGhlIGRlZmF1bHQgb2YgMyByZXBldGl0aW9ucyBpcyBwcm9iYWJseSBlbm91Z2ggaW4gbW9zdCBjYXNlcy4gIE9uCi1Vbml4LCB5b3UgY2FuIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgdG8gbWVhc3VyZSBDUFUgdGltZS4KKzpmdW5jOmBkZWZhdWx0X3RpbWVyYCBtZWFzdXJlbWVudHMgY2FuIGJlIGFmZmVjdGVkIGJ5IG90aGVyIHByb2dyYW1zIHJ1bm5pbmcgb24KK3RoZSBzYW1lIG1hY2hpbmUsIHNvIHRoZSBiZXN0IHRoaW5nIHRvIGRvIHdoZW4gYWNjdXJhdGUgdGltaW5nIGlzIG5lY2Vzc2FyeSBpcwordG8gcmVwZWF0IHRoZSB0aW1pbmcgYSBmZXcgdGltZXMgYW5kIHVzZSB0aGUgYmVzdCB0aW1lLiAgVGhlIDpvcHRpb246YC1yYAorb3B0aW9uIGlzIGdvb2QgZm9yIHRoaXM7IHRoZSBkZWZhdWx0IG9mIDMgcmVwZXRpdGlvbnMgaXMgcHJvYmFibHkgZW5vdWdoIGluCittb3N0IGNhc2VzLiAgWW91IGNhbiB1c2UgOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYCB0byBtZWFzdXJlIENQVSB0aW1lLgogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QgYi9Eb2MvbGlicmFyeS90a2ludGVyLnJzdAppbmRleCBmNmUwOTVhLi44M2E1Mzc1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90a2ludGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS90a2ludGVyLnJzdApAQCAtMTk0LDM1ICsxOTQsMzAgQEAKIAogOjoKIAotICAgZnJvbSB0a2ludGVyIGltcG9ydCAqCisgICAgaW1wb3J0IHRraW50ZXIgYXMgdGsKIAotICAgY2xhc3MgQXBwbGljYXRpb24oRnJhbWUpOgotICAgICAgIGRlZiBzYXlfaGkoc2VsZik6Ci0gICAgICAgICAgIHByaW50KCJoaSB0aGVyZSwgZXZlcnlvbmUhIikKKyAgICBjbGFzcyBBcHBsaWNhdGlvbih0ay5GcmFtZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSk6CisgICAgICAgICAgICB0ay5GcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIpCisgICAgICAgICAgICBzZWxmLnBhY2soKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVXaWRnZXRzKCkKIAotICAgICAgIGRlZiBjcmVhdGVXaWRnZXRzKHNlbGYpOgotICAgICAgICAgICBzZWxmLlFVSVQgPSBCdXR0b24oc2VsZikKLSAgICAgICAgICAgc2VsZi5RVUlUWyJ0ZXh0Il0gPSAiUVVJVCIKLSAgICAgICAgICAgc2VsZi5RVUlUWyJmZyJdID0gInJlZCIKLSAgICAgICAgICAgc2VsZi5RVUlUWyJjb21tYW5kIl0gPSBzZWxmLnF1aXQKKyAgICAgICAgZGVmIGNyZWF0ZVdpZGdldHMoc2VsZik6CisgICAgICAgICAgICBzZWxmLmhpX3RoZXJlID0gdGsuQnV0dG9uKHNlbGYpCisgICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJ0ZXh0Il0gPSAiSGVsbG8gV29ybGRcbihjbGljayBtZSkiCisgICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJjb21tYW5kIl0gPSBzZWxmLnNheV9oaQorICAgICAgICAgICAgc2VsZi5oaV90aGVyZS5wYWNrKHNpZGU9InRvcCIpCiAKLSAgICAgICAgICAgc2VsZi5RVUlULnBhY2soeyJzaWRlIjogImxlZnQifSkKKyAgICAgICAgICAgIHNlbGYuUVVJVCA9IHRrLkJ1dHRvbihzZWxmLCB0ZXh0PSJRVUlUIiwgZmc9InJlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXJvb3QuZGVzdHJveSkKKyAgICAgICAgICAgIHNlbGYuUVVJVC5wYWNrKHNpZGU9ImJvdHRvbSIpCiAKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZSA9IEJ1dHRvbihzZWxmKQotICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJ0ZXh0Il0gPSAiSGVsbG8iLAotICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJjb21tYW5kIl0gPSBzZWxmLnNheV9oaQorICAgICAgICBkZWYgc2F5X2hpKHNlbGYpOgorICAgICAgICAgICAgcHJpbnQoImhpIHRoZXJlLCBldmVyeW9uZSEiKQogCi0gICAgICAgICAgIHNlbGYuaGlfdGhlcmUucGFjayh7InNpZGUiOiAibGVmdCJ9KQotCi0gICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lKToKLSAgICAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyKQotICAgICAgICAgICBzZWxmLnBhY2soKQotICAgICAgICAgICBzZWxmLmNyZWF0ZVdpZGdldHMoKQotCi0gICByb290ID0gVGsoKQotICAgYXBwID0gQXBwbGljYXRpb24obWFzdGVyPXJvb3QpCi0gICBhcHAubWFpbmxvb3AoKQotICAgcm9vdC5kZXN0cm95KCkKKyAgICByb290ID0gdGsuVGsoKQorICAgIGFwcCA9IEFwcGxpY2F0aW9uKG1hc3Rlcj1yb290KQorICAgIGFwcC5tYWlubG9vcCgpCiAKIAogQSAoVmVyeSkgUXVpY2sgTG9vayBhdCBUY2wvVGsKQEAgLTc1NSwyMiArNzUwLDMyIEBACiAgICBkaXNwbGF5ZWQuICBZb3UgY2FuIHVzZSB0aGVzZSA6bW9kOmB0a2ludGVyYCBmdW5jdGlvbnMgdG8gYWNjZXNzIHRoZXNlIHNwZWNpYWwKICAgIHBvaW50cyBpbiB0ZXh0IHdpZGdldHM6CiAKLSAgIEF0RW5kKCkKKy4uIGZ1bmN0aW9uOjogQXRFbmQoKQogICAgICAgcmVmZXJzIHRvIHRoZSBsYXN0IHBvc2l0aW9uIGluIHRoZSB0ZXh0CiAKLSAgIEF0SW5zZXJ0KCkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdEluc2VydCgpCiAgICAgICByZWZlcnMgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSB0ZXh0IGN1cnNvciBpcwogCi0gICBBdFNlbEZpcnN0KCkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdFNlbEZpcnN0KCkKICAgICAgIGluZGljYXRlcyB0aGUgYmVnaW5uaW5nIHBvaW50IG9mIHRoZSBzZWxlY3RlZCB0ZXh0CiAKLSAgIEF0U2VsTGFzdCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRTZWxMYXN0KCkKICAgICAgIGRlbm90ZXMgdGhlIGxhc3QgcG9pbnQgb2YgdGhlIHNlbGVjdGVkIHRleHQgYW5kIGZpbmFsbHkKIAotICAgQXQoeFssIHldKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IEF0KHhbLCB5XSkKICAgICAgIHJlZmVycyB0byB0aGUgY2hhcmFjdGVyIGF0IHBpeGVsIGxvY2F0aW9uICp4KiwgKnkqICh3aXRoICp5KiBub3QgdXNlZCBpbiB0aGUKICAgICAgIGNhc2Ugb2YgYSB0ZXh0IGVudHJ5IHdpZGdldCwgd2hpY2ggY29udGFpbnMgYSBzaW5nbGUgbGluZSBvZiB0ZXh0KS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiBUZXh0IHdpZGdldCBpbmRleGVzCiAgICBUaGUgaW5kZXggbm90YXRpb24gZm9yIFRleHQgd2lkZ2V0cyBpcyB2ZXJ5IHJpY2ggYW5kIGlzIGJlc3QgZGVzY3JpYmVkIGluIHRoZSBUawogICAgbWFuIHBhZ2VzLgpAQCAtODE4LDQgKzgyMywzIEBACiByZWZlcmVuY2UgdG8gdGhlIGltYWdlLiBXaGVuIHRoZSBsYXN0IFB5dGhvbiByZWZlcmVuY2UgdG8gdGhlIGltYWdlIG9iamVjdCBpcwogZGVsZXRlZCwgdGhlIGltYWdlIGRhdGEgaXMgZGVsZXRlZCBhcyB3ZWxsLCBhbmQgVGsgd2lsbCBkaXNwbGF5IGFuIGVtcHR5IGJveAogd2hlcmV2ZXIgdGhlIGltYWdlIHdhcyB1c2VkLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QgYi9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QKaW5kZXggNzA5MTljYS4uMzdkOWY0MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rva2VuaXplLnJzdApAQCAtMTcsOSArMTcsMTEgQEAKIAogVG8gc2ltcGxpZnkgdG9rZW4gc3RyZWFtIGhhbmRsaW5nLCBhbGwgOnJlZjpgb3BlcmF0b3JzYCBhbmQgOnJlZjpgZGVsaW1pdGVyc2AKIHRva2VucyBhcmUgcmV0dXJuZWQgdXNpbmcgdGhlIGdlbmVyaWMgOmRhdGE6YHRva2VuLk9QYCB0b2tlbiB0eXBlLiAgVGhlIGV4YWN0Ci10eXBlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSB0b2tlbiBgYHN0cmluZ2BgIGZpZWxkIG9uIHRoZQotOnRlcm06YG5hbWVkIHR1cGxlYCByZXR1cm5lZCBmcm9tIDpmdW5jOmB0b2tlbml6ZS50b2tlbml6ZWAgZm9yIHRoZSBjaGFyYWN0ZXIKLXNlcXVlbmNlIHRoYXQgaWRlbnRpZmllcyBhIHNwZWNpZmljIG9wZXJhdG9yIHRva2VuLgordHlwZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgYGBleGFjdF90eXBlYGAgcHJvcGVydHkgb24gdGhlCis6dGVybTpgbmFtZWQgdHVwbGVgIHJldHVybmVkIGZyb20gOmZ1bmM6YHRva2VuaXplLnRva2VuaXplYC4KKworVG9rZW5pemluZyBJbnB1dAorLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBpcyBhIDp0ZXJtOmBnZW5lcmF0b3JgOgogCkBAIC0zOSw5ICs0MSwxNyBAQAogICAgcmV0dXJuZWQgYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgIHdpdGggdGhlIGZpZWxkIG5hbWVzOgogICAgYGB0eXBlIHN0cmluZyBzdGFydCBlbmQgbGluZWBgLgogCisgICBUaGUgcmV0dXJuZWQgOnRlcm06YG5hbWVkIHR1cGxlYCBoYXMgYSBhZGRpdGlvbmFsIHByb3BlcnR5IG5hbWVkCisgICBgYGV4YWN0X3R5cGVgYCB0aGF0IGNvbnRhaW5zIHRoZSBleGFjdCBvcGVyYXRvciB0eXBlIGZvcgorICAgOmRhdGE6YHRva2VuLk9QYCB0b2tlbnMuICBGb3IgYWxsIG90aGVyIHRva2VuIHR5cGVzIGBgZXhhY3RfdHlwZWBgCisgICBlcXVhbHMgdGhlIG5hbWVkIHR1cGxlIGBgdHlwZWBgIGZpZWxkLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgbmFtZWQgdHVwbGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgYGBleGFjdF90eXBlYGAuCisKICAgIDpmdW5jOmB0b2tlbml6ZWAgZGV0ZXJtaW5lcyB0aGUgc291cmNlIGVuY29kaW5nIG9mIHRoZSBmaWxlIGJ5IGxvb2tpbmcgZm9yIGEKICAgIFVURi04IEJPTSBvciBlbmNvZGluZyBjb29raWUsIGFjY29yZGluZyB0byA6cGVwOmAyNjNgLgogCkBAIC0xMjIsNiArMTMyLDM4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBfdG9rZW5pemUtY2xpOgorCitDb21tYW5kLUxpbmUgVXNhZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIDptb2Q6YHRva2VuaXplYCBtb2R1bGUgY2FuIGJlIGV4ZWN1dGVkIGFzIGEgc2NyaXB0IGZyb20gdGhlIGNvbW1hbmQgbGluZS4KK0l0IGlzIGFzIHNpbXBsZSBhczoKKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgIHB5dGhvbiAtbSB0b2tlbml6ZSBbLWVdIFtmaWxlbmFtZS5weV0KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhY2NlcHRlZDoKKworLi4gcHJvZ3JhbTo6IHRva2VuaXplCisKKy4uIGNtZG9wdGlvbjo6IC1oLCAtLWhlbHAKKworICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisuLiBjbWRvcHRpb246OiAtZSwgLS1leGFjdAorCisgICBkaXNwbGF5IHRva2VuIG5hbWVzIHVzaW5nIHRoZSBleGFjdCB0eXBlCisKK0lmIDpmaWxlOmBmaWxlbmFtZS5weWAgaXMgc3BlY2lmaWVkIGl0cyBjb250ZW50cyBhcmUgdG9rZW5pemVkIHRvIHN0ZG91dC4KK090aGVyd2lzZSwgdG9rZW5pemF0aW9uIGlzIHBlcmZvcm1lZCBvbiBzdGRpbi4KKworRXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCiBFeGFtcGxlIG9mIGEgc2NyaXB0IHJld3JpdGVyIHRoYXQgdHJhbnNmb3JtcyBmbG9hdCBsaXRlcmFscyBpbnRvIERlY2ltYWwKIG9iamVjdHM6OgogCkBAIC0xNjQsMyArMjA2LDYzIEBACiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgodG9rbnVtLCB0b2t2YWwpKQogICAgICAgICByZXR1cm4gdW50b2tlbml6ZShyZXN1bHQpLmRlY29kZSgndXRmLTgnKQogCitFeGFtcGxlIG9mIHRva2VuaXppbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgVGhlIHNjcmlwdDo6CisKKyAgICBkZWYgc2F5X2hlbGxvKCk6CisgICAgICAgIHByaW50KCJIZWxsbywgV29ybGQhIikKKworICAgIHNheV9oZWxsbygpCisKK3dpbGwgYmUgdG9rZW5pemVkIHRvIHRoZSBmb2xsb3dpbmcgb3V0cHV0IHdoZXJlIHRoZSBmaXJzdCBjb2x1bW4gaXMgdGhlIHJhbmdlCitvZiB0aGUgbGluZS9jb2x1bW4gY29vcmRpbmF0ZXMgd2hlcmUgdGhlIHRva2VuIGlzIGZvdW5kLCB0aGUgc2Vjb25kIGNvbHVtbiBpcwordGhlIG5hbWUgb2YgdGhlIHRva2VuLCBhbmQgdGhlIGZpbmFsIGNvbHVtbiBpcyB0aGUgdmFsdWUgb2YgdGhlIHRva2VuIChpZiBhbnkpCisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAgJCBweXRob24gLW0gdG9rZW5pemUgaGVsbG8ucHkKKyAgICAwLDAtMCwwOiAgICAgICAgICAgIEVOQ09ESU5HICAgICAgICd1dGYtOCcKKyAgICAxLDAtMSwzOiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdkZWYnCisgICAgMSw0LTEsMTM6ICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDEsMTMtMSwxNDogICAgICAgICAgT1AgICAgICAgICAgICAgJygnCisgICAgMSwxNC0xLDE1OiAgICAgICAgICBPUCAgICAgICAgICAgICAnKScKKyAgICAxLDE1LTEsMTY6ICAgICAgICAgIE9QICAgICAgICAgICAgICc6JworICAgIDEsMTYtMSwxNzogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDIsMC0yLDQ6ICAgICAgICAgICAgSU5ERU5UICAgICAgICAgJyAgICAnCisgICAgMiw0LTIsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAncHJpbnQnCisgICAgMiw5LTIsMTA6ICAgICAgICAgICBPUCAgICAgICAgICAgICAnKCcKKyAgICAyLDEwLTIsMjU6ICAgICAgICAgIFNUUklORyAgICAgICAgICciSGVsbG8sIFdvcmxkISInCisgICAgMiwyNS0yLDI2OiAgICAgICAgICBPUCAgICAgICAgICAgICAnKScKKyAgICAyLDI2LTIsMjc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAzLDAtMywxOiAgICAgICAgICAgIE5MICAgICAgICAgICAgICdcbicKKyAgICA0LDAtNCwwOiAgICAgICAgICAgIERFREVOVCAgICAgICAgICcnCisgICAgNCwwLTQsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDQsOS00LDEwOiAgICAgICAgICAgT1AgICAgICAgICAgICAgJygnCisgICAgNCwxMC00LDExOiAgICAgICAgICBPUCAgICAgICAgICAgICAnKScKKyAgICA0LDExLTQsMTI6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICA1LDAtNSwwOiAgICAgICAgICAgIEVORE1BUktFUiAgICAgICcnCisKK1RoZSBleGFjdCB0b2tlbiB0eXBlIG5hbWVzIGNhbiBiZSBkaXNwbGF5ZWQgdXNpbmcgdGhlIGBgLWVgYCBvcHRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAgJCBweXRob24gLW0gdG9rZW5pemUgLWUgaGVsbG8ucHkKKyAgICAwLDAtMCwwOiAgICAgICAgICAgIEVOQ09ESU5HICAgICAgICd1dGYtOCcKKyAgICAxLDAtMSwzOiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdkZWYnCisgICAgMSw0LTEsMTM6ICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDEsMTMtMSwxNDogICAgICAgICAgTFBBUiAgICAgICAgICAgJygnCisgICAgMSwxNC0xLDE1OiAgICAgICAgICBSUEFSICAgICAgICAgICAnKScKKyAgICAxLDE1LTEsMTY6ICAgICAgICAgIENPTE9OICAgICAgICAgICc6JworICAgIDEsMTYtMSwxNzogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDIsMC0yLDQ6ICAgICAgICAgICAgSU5ERU5UICAgICAgICAgJyAgICAnCisgICAgMiw0LTIsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAncHJpbnQnCisgICAgMiw5LTIsMTA6ICAgICAgICAgICBMUEFSICAgICAgICAgICAnKCcKKyAgICAyLDEwLTIsMjU6ICAgICAgICAgIFNUUklORyAgICAgICAgICciSGVsbG8sIFdvcmxkISInCisgICAgMiwyNS0yLDI2OiAgICAgICAgICBSUEFSICAgICAgICAgICAnKScKKyAgICAyLDI2LTIsMjc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAzLDAtMywxOiAgICAgICAgICAgIE5MICAgICAgICAgICAgICdcbicKKyAgICA0LDAtNCwwOiAgICAgICAgICAgIERFREVOVCAgICAgICAgICcnCisgICAgNCwwLTQsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDQsOS00LDEwOiAgICAgICAgICAgTFBBUiAgICAgICAgICAgJygnCisgICAgNCwxMC00LDExOiAgICAgICAgICBSUEFSICAgICAgICAgICAnKScKKyAgICA0LDExLTQsMTI6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICA1LDAtNSwwOiAgICAgICAgICAgIEVORE1BUktFUiAgICAgICcnCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKaW5kZXggZDRhNzZiNi4uNjk1NDgwZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdApAQCAtMSw1ICsxLDUgQEAKLTptb2Q6YHR5cGVzYCAtLS0gTmFtZXMgZm9yIGJ1aWx0LWluIHR5cGVzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOm1vZDpgdHlwZXNgIC0tLSBEeW5hbWljIHR5cGUgY3JlYXRpb24gYW5kIG5hbWVzIGZvciBidWlsdC1pbiB0eXBlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiB0eXBlcwogICAgOnN5bm9wc2lzOiBOYW1lcyBmb3IgYnVpbHQtaW4gdHlwZXMuCkBAIC04LDIwICs4LDc3IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGRlZmluZXMgbmFtZXMgZm9yIHNvbWUgb2JqZWN0IHR5cGVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIHN0YW5kYXJkCitUaGlzIG1vZHVsZSBkZWZpbmVzIHV0aWxpdHkgZnVuY3Rpb24gdG8gYXNzaXN0IGluIGR5bmFtaWMgY3JlYXRpb24gb2YKK25ldyB0eXBlcy4KKworSXQgYWxzbyBkZWZpbmVzIG5hbWVzIGZvciBzb21lIG9iamVjdCB0eXBlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZAogUHl0aG9uIGludGVycHJldGVyLCBidXQgbm90IGV4cG9zZWQgYXMgYnVpbHRpbnMgbGlrZSA6Y2xhc3M6YGludGAgb3IKLTpjbGFzczpgc3RyYCBhcmUuICBBbHNvLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHNvbWUgb2YgdGhlIHR5cGVzIHRoYXQgYXJpc2UKLXRyYW5zcGFyZW50bHkgZHVyaW5nIHByb2Nlc3Npbmcgc3VjaCBhcyB0aGUgYGBsaXN0aXRlcmF0b3JgYCB0eXBlLgorOmNsYXNzOmBzdHJgIGFyZS4KIAotVHlwaWNhbCB1c2UgaXMgZm9yIDpmdW5jOmBpc2luc3RhbmNlYCBvciA6ZnVuYzpgaXNzdWJjbGFzc2AgY2hlY2tzLgogCi1UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBuYW1lczoKK0R5bmFtaWMgVHlwZSBDcmVhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogbmV3X2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUsIGV4ZWNfYm9keT1Ob25lKQorCisgICBDcmVhdGVzIGEgY2xhc3Mgb2JqZWN0IGR5bmFtaWNhbGx5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MuCisKKyAgIFRoZSBmaXJzdCB0aHJlZSBhcmd1bWVudHMgYXJlIHRoZSBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCBhIGNsYXNzCisgICBkZWZpbml0aW9uIGhlYWRlcjogdGhlIGNsYXNzIG5hbWUsIHRoZSBiYXNlIGNsYXNzZXMgKGluIG9yZGVyKSwgdGhlCisgICBrZXl3b3JkIGFyZ3VtZW50cyAoc3VjaCBhcyBgYG1ldGFjbGFzc2BgKS4KKworICAgVGhlICpleGVjX2JvZHkqIGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgdGhhdCBpcyB1c2VkIHRvIHBvcHVsYXRlIHRoZQorICAgZnJlc2hseSBjcmVhdGVkIGNsYXNzIG5hbWVzcGFjZS4gSXQgc2hvdWxkIGFjY2VwdCB0aGUgY2xhc3MgbmFtZXNwYWNlCisgICBhcyBpdHMgc29sZSBhcmd1bWVudCBhbmQgdXBkYXRlIHRoZSBuYW1lc3BhY2UgZGlyZWN0bHkgd2l0aCB0aGUgY2xhc3MKKyAgIGNvbnRlbnRzLiBJZiBubyBjYWxsYmFjayBpcyBwcm92aWRlZCwgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBwYXNzaW5nCisgICBpbiBgYGxhbWJkYSBuczogbnNgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogcHJlcGFyZV9jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lKQorCisgICBDYWxjdWxhdGVzIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgYW5kIGNyZWF0ZXMgdGhlIGNsYXNzIG5hbWVzcGFjZS4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIGEgY2xhc3MgZGVmaW5pdGlvbiBoZWFkZXI6CisgICB0aGUgY2xhc3MgbmFtZSwgdGhlIGJhc2UgY2xhc3NlcyAoaW4gb3JkZXIpIGFuZCB0aGUga2V5d29yZCBhcmd1bWVudHMKKyAgIChzdWNoIGFzIGBgbWV0YWNsYXNzYGApLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgMy10dXBsZTogYGBtZXRhY2xhc3MsIG5hbWVzcGFjZSwga3dkc2BgCisKKyAgICptZXRhY2xhc3MqIGlzIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MsICpuYW1lc3BhY2UqIGlzIHRoZQorICAgcHJlcGFyZWQgY2xhc3MgbmFtZXNwYWNlIGFuZCAqa3dkcyogaXMgYW4gdXBkYXRlZCBjb3B5IG9mIHRoZSBwYXNzZWQKKyAgIGluICprd2RzKiBhcmd1bWVudCB3aXRoIGFueSBgYCdtZXRhY2xhc3MnYGAgZW50cnkgcmVtb3ZlZC4gSWYgbm8gKmt3ZHMqCisgICBhcmd1bWVudCBpcyBwYXNzZWQgaW4sIHRoaXMgd2lsbCBiZSBhbiBlbXB0eSBkaWN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gc2VlYWxzbzo6CisKKyAgIDpyZWY6YG1ldGFjbGFzc2VzYAorICAgICAgRnVsbCBkZXRhaWxzIG9mIHRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIHN1cHBvcnRlZCBieSB0aGVzZSBmdW5jdGlvbnMKKworICAgOnBlcDpgMzExNWAgLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMAorICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rCisKKworU3RhbmRhcmQgSW50ZXJwcmV0ZXIgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIG5hbWVzIGZvciBtYW55IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSByZXF1aXJlZCB0bworaW1wbGVtZW50IGEgUHl0aG9uIGludGVycHJldGVyLiBJdCBkZWxpYmVyYXRlbHkgYXZvaWRzIGluY2x1ZGluZyBzb21lIG9mCit0aGUgdHlwZXMgdGhhdCBhcmlzZSBvbmx5IGluY2lkZW50YWxseSBkdXJpbmcgcHJvY2Vzc2luZyBzdWNoIGFzIHRoZQorYGBsaXN0aXRlcmF0b3JgYCB0eXBlLgorCitUeXBpY2FsIHVzZSBvZiB0aGVzZSBuYW1lcyBpcyBmb3IgOmZ1bmM6YGlzaW5zdGFuY2VgIG9yCis6ZnVuYzpgaXNzdWJjbGFzc2AgY2hlY2tzLgorCitTdGFuZGFyZCBuYW1lcyBhcmUgZGVmaW5lZCBmb3IgdGhlIGZvbGxvd2luZyB0eXBlczoKIAogLi4gZGF0YTo6IEZ1bmN0aW9uVHlwZQogICAgICAgICAgIExhbWJkYVR5cGUKIAotICAgVGhlIHR5cGUgb2YgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQgZnVuY3Rpb25zIGNyZWF0ZWQgYnkgOmtleXdvcmQ6YGxhbWJkYWAKLSAgIGV4cHJlc3Npb25zLgorICAgVGhlIHR5cGUgb2YgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQgZnVuY3Rpb25zIGNyZWF0ZWQgYnkKKyAgIDprZXl3b3JkOmBsYW1iZGFgICBleHByZXNzaW9ucy4KIAogCiAuLiBkYXRhOjogR2VuZXJhdG9yVHlwZQpAQCAtODUsMyArMTQyLDc5IEBACiAKICAgICAgIEluIG90aGVyIGltcGxlbWVudGF0aW9ucyBvZiBQeXRob24sIHRoaXMgdHlwZSBtYXkgYmUgaWRlbnRpY2FsIHRvCiAgICAgICBgYEdldFNldERlc2NyaXB0b3JUeXBlYGAuCisKKy4uIGNsYXNzOjogTWFwcGluZ1Byb3h5VHlwZShtYXBwaW5nKQorCisgICBSZWFkLW9ubHkgcHJveHkgb2YgYSBtYXBwaW5nLiBJdCBwcm92aWRlcyBhIGR5bmFtaWMgdmlldyBvbiB0aGUgbWFwcGluZydzCisgICBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIG1hcHBpbmcgY2hhbmdlcywgdGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UKKyAgIGNoYW5nZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBkZXNjcmliZTo6IGtleSBpbiBwcm94eQorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHVuZGVybHlpbmcgbWFwcGluZyBoYXMgYSBrZXkgKmtleSosIGVsc2UKKyAgICAgIGBgRmFsc2VgYC4KKworICAgLi4gZGVzY3JpYmU6OiBwcm94eVtrZXldCisKKyAgICAgIFJldHVybiB0aGUgaXRlbSBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEKKyAgICAgIDpleGM6YEtleUVycm9yYCBpZiAqa2V5KiBpcyBub3QgaW4gdGhlIHVuZGVybHlpbmcgbWFwcGluZy4KKworICAgLi4gZGVzY3JpYmU6OiBpdGVyKHByb3h5KQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLiAgVGhpcyBpcyBhCisgICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKHByb3h5LmtleXMoKSlgYC4KKworICAgLi4gZGVzY3JpYmU6OiBsZW4ocHJveHkpCisKKyAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIG1ldGhvZDo6IGNvcHkoKQorCisgICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZy4KKworICAgLi4gbWV0aG9kOjogZ2V0KGtleVssIGRlZmF1bHRdKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLCBlbHNlCisgICAgICAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYCwgc28gdGhhdAorICAgICAgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgOmV4YzpgS2V5RXJyb3JgLgorCisgICAuLiBtZXRob2Q6OiBpdGVtcygpCisKKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYAorICAgICAgcGFpcnMpLgorCisgICAuLiBtZXRob2Q6OiBrZXlzKCkKKworICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZydzIGtleXMuCisKKyAgIC4uIG1ldGhvZDo6IHZhbHVlcygpCisKKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcncyB2YWx1ZXMuCisKKworLi4gY2xhc3M6OiBTaW1wbGVOYW1lc3BhY2UKKworICAgQSBzaW1wbGUgOmNsYXNzOmBvYmplY3RgIHN1YmNsYXNzIHRoYXQgcHJvdmlkZXMgYXR0cmlidXRlIGFjY2VzcyB0byBpdHMKKyAgIG5hbWVzcGFjZSwgYXMgd2VsbCBhcyBhIG1lYW5pbmdmdWwgcmVwci4KKworICAgVW5saWtlIDpjbGFzczpgb2JqZWN0YCwgd2l0aCBgYFNpbXBsZU5hbWVzcGFjZWBgIHlvdSBjYW4gYWRkIGFuZCByZW1vdmUKKyAgIGF0dHJpYnV0ZXMuICBJZiBhIGBgU2ltcGxlTmFtZXNwYWNlYGAgb2JqZWN0IGlzIGluaXRpYWxpemVkIHdpdGgga2V5d29yZAorICAgYXJndW1lbnRzLCB0aG9zZSBhcmUgZGlyZWN0bHkgYWRkZWQgdG8gdGhlIHVuZGVybHlpbmcgbmFtZXNwYWNlLgorCisgICBUaGUgdHlwZSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBjb2RlOjoKKworICAgICAgIGNsYXNzIFNpbXBsZU5hbWVzcGFjZToKKyAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3YXJncykKKyAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAga2V5cyA9IHNvcnRlZChzZWxmLl9fZGljdF9fKQorICAgICAgICAgICAgICAgaXRlbXMgPSAoInt9PXshcn0iLmZvcm1hdChrLCBzZWxmLl9fZGljdF9fW2tdKSBmb3IgayBpbiBrZXlzKQorICAgICAgICAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdCh0eXBlKHNlbGYpLl9fbmFtZV9fLCAiLCAiLmpvaW4oaXRlbXMpKQorCisgICBgYFNpbXBsZU5hbWVzcGFjZWBgIG1heSBiZSB1c2VmdWwgYXMgYSByZXBsYWNlbWVudCBmb3IgYGBjbGFzcyBOUzogcGFzc2BgLgorICAgSG93ZXZlciwgZm9yIGEgc3RydWN0dXJlZCByZWNvcmQgdHlwZSB1c2UgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggM2IxYmJlMC4uMzc4N2MzNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTUsOCArMTUsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMC4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4wLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gNi4xLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTI5LDYgKzI5LDkgQEAKICAgIExvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuICBJZiBhIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiBuYW1lIGlzIGZvdW5kLCByZXR1cm4KICAgIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4gIElmIG5vdCBmb3VuZCwgOmV4YzpgS2V5RXJyb3JgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbI11fIGFuZCBuYW1lZCBzZXF1ZW5jZXMgWyNdXyBoYXMgYmVlbiBhZGRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IG5hbWUoY2hyWywgZGVmYXVsdF0pCiAKQEAgLTE2MCwzICsxNjMsOSBAQAogICAgPj4+IHVuaWNvZGVkYXRhLmJpZGlyZWN0aW9uYWwoJ1x1MDY2MCcpICMgJ0EncmFiaWMsICdOJ3VtYmVyCiAgICAnQU4nCiAKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2QvTmFtZUFsaWFzZXMudHh0CisKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2stZXhhbXBsZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMWU4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdApAQCAtMCwwICsxLDEyNDYgQEAKKzptb2Q6YHVuaXR0ZXN0Lm1vY2tgIC0tLSBnZXR0aW5nIHN0YXJ0ZWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlYXV0aG9yOjogTWljaGFlbCBGb29yZCA8bWljaGFlbEBweXRob24ub3JnPgorLi4gY3VycmVudG1vZHVsZTo6IHVuaXR0ZXN0Lm1vY2sKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gX2dldHRpbmctc3RhcnRlZDoKKworVXNpbmcgTW9jaworLS0tLS0tLS0tLQorCitNb2NrIFBhdGNoaW5nIE1ldGhvZHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitDb21tb24gdXNlcyBmb3IgOmNsYXNzOmBNb2NrYCBvYmplY3RzIGluY2x1ZGU6CisKKyogUGF0Y2hpbmcgbWV0aG9kcworKiBSZWNvcmRpbmcgbWV0aG9kIGNhbGxzIG9uIG9iamVjdHMKKworWW91IG1pZ2h0IHdhbnQgdG8gcmVwbGFjZSBhIG1ldGhvZCBvbiBhbiBvYmplY3QgdG8gY2hlY2sgdGhhdAoraXQgaXMgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgYXJndW1lbnRzIGJ5IGFub3RoZXIgcGFydCBvZiB0aGUgc3lzdGVtOgorCisgICAgPj4+IHJlYWwgPSBTb21lQ2xhc3MoKQorICAgID4+PiByZWFsLm1ldGhvZCA9IE1hZ2ljTW9jayhuYW1lPSdtZXRob2QnKQorICAgID4+PiByZWFsLm1ldGhvZCgzLCA0LCA1LCBrZXk9J3ZhbHVlJykKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21ldGhvZCgpJyBpZD0nLi4uJz4KKworT25jZSBvdXIgbW9jayBoYXMgYmVlbiB1c2VkIChgcmVhbC5tZXRob2RgIGluIHRoaXMgZXhhbXBsZSkgaXQgaGFzIG1ldGhvZHMKK2FuZCBhdHRyaWJ1dGVzIHRoYXQgYWxsb3cgeW91IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCBob3cgaXQgaGFzIGJlZW4gdXNlZC4KKworLi4gbm90ZTo6CisKKyAgICBJbiBtb3N0IG9mIHRoZXNlIGV4YW1wbGVzIHRoZSA6Y2xhc3M6YE1vY2tgIGFuZCA6Y2xhc3M6YE1hZ2ljTW9ja2AgY2xhc3NlcworICAgIGFyZSBpbnRlcmNoYW5nZWFibGUuIEFzIHRoZSBgTWFnaWNNb2NrYCBpcyB0aGUgbW9yZSBjYXBhYmxlIGNsYXNzIGl0IG1ha2VzCisgICAgYSBzZW5zaWJsZSBvbmUgdG8gdXNlIGJ5IGRlZmF1bHQuCisKK09uY2UgdGhlIG1vY2sgaGFzIGJlZW4gY2FsbGVkIGl0cyA6YXR0cjpgfk1vY2suY2FsbGVkYCBhdHRyaWJ1dGUgaXMgc2V0IHRvCitgVHJ1ZWAuIE1vcmUgaW1wb3J0YW50bHkgd2UgY2FuIHVzZSB0aGUgOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAgb3IKKzptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgbWV0aG9kIHRvIGNoZWNrIHRoYXQgaXQgd2FzIGNhbGxlZCB3aXRoCit0aGUgY29ycmVjdCBhcmd1bWVudHMuCisKK1RoaXMgZXhhbXBsZSB0ZXN0cyB0aGF0IGNhbGxpbmcgYFByb2R1Y3Rpb25DbGFzcygpLm1ldGhvZGAgcmVzdWx0cyBpbiBhIGNhbGwgdG8KK3RoZSBgc29tZXRoaW5nYCBtZXRob2Q6CisKKyAgICA+Pj4gY2xhc3MgUHJvZHVjdGlvbkNsYXNzKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuc29tZXRoaW5nKDEsIDIsIDMpCisgICAgLi4uICAgICBkZWYgc29tZXRoaW5nKHNlbGYsIGEsIGIsIGMpOgorICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgPj4+IHJlYWwuc29tZXRoaW5nID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gcmVhbC5tZXRob2QoKQorICAgID4+PiByZWFsLnNvbWV0aGluZy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorCisKKworTW9jayBmb3IgTWV0aG9kIENhbGxzIG9uIGFuIE9iamVjdAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJbiB0aGUgbGFzdCBleGFtcGxlIHdlIHBhdGNoZWQgYSBtZXRob2QgZGlyZWN0bHkgb24gYW4gb2JqZWN0IHRvIGNoZWNrIHRoYXQgaXQKK3dhcyBjYWxsZWQgY29ycmVjdGx5LiBBbm90aGVyIGNvbW1vbiB1c2UgY2FzZSBpcyB0byBwYXNzIGFuIG9iamVjdCBpbnRvIGEKK21ldGhvZCAob3Igc29tZSBwYXJ0IG9mIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCkgYW5kIHRoZW4gY2hlY2sgdGhhdCBpdCBpcyB1c2VkCitpbiB0aGUgY29ycmVjdCB3YXkuCisKK1RoZSBzaW1wbGUgYFByb2R1Y3Rpb25DbGFzc2AgYmVsb3cgaGFzIGEgYGNsb3NlcmAgbWV0aG9kLiBJZiBpdCBpcyBjYWxsZWQgd2l0aAorYW4gb2JqZWN0IHRoZW4gaXQgY2FsbHMgYGNsb3NlYCBvbiBpdC4KKworICAgID4+PiBjbGFzcyBQcm9kdWN0aW9uQ2xhc3Mob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBjbG9zZXIoc2VsZiwgc29tZXRoaW5nKToKKyAgICAuLi4gICAgICAgICBzb21ldGhpbmcuY2xvc2UoKQorICAgIC4uLgorCitTbyB0byB0ZXN0IGl0IHdlIG5lZWQgdG8gcGFzcyBpbiBhbiBvYmplY3Qgd2l0aCBhIGBjbG9zZWAgbWV0aG9kIGFuZCBjaGVjawordGhhdCBpdCB3YXMgY2FsbGVkIGNvcnJlY3RseS4KKworICAgID4+PiByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiByZWFsLmNsb3Nlcihtb2NrKQorICAgID4+PiBtb2NrLmNsb3NlLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKK1dlIGRvbid0IGhhdmUgdG8gZG8gYW55IHdvcmsgdG8gcHJvdmlkZSB0aGUgJ2Nsb3NlJyBtZXRob2Qgb24gb3VyIG1vY2suCitBY2Nlc3NpbmcgY2xvc2UgY3JlYXRlcyBpdC4gU28sIGlmICdjbG9zZScgaGFzbid0IGFscmVhZHkgYmVlbiBjYWxsZWQgdGhlbgorYWNjZXNzaW5nIGl0IGluIHRoZSB0ZXN0IHdpbGwgY3JlYXRlIGl0LCBidXQgOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAKK3dpbGwgcmFpc2UgYSBmYWlsdXJlIGV4Y2VwdGlvbi4KKworCitNb2NraW5nIENsYXNzZXMKK35+fn5+fn5+fn5+fn5+fgorCitBIGNvbW1vbiB1c2UgY2FzZSBpcyB0byBtb2NrIG91dCBjbGFzc2VzIGluc3RhbnRpYXRlZCBieSB5b3VyIGNvZGUgdW5kZXIgdGVzdC4KK1doZW4geW91IHBhdGNoIGEgY2xhc3MsIHRoZW4gdGhhdCBjbGFzcyBpcyByZXBsYWNlZCB3aXRoIGEgbW9jay4gSW5zdGFuY2VzCithcmUgY3JlYXRlZCBieSAqY2FsbGluZyB0aGUgY2xhc3MqLiBUaGlzIG1lYW5zIHlvdSBhY2Nlc3MgdGhlICJtb2NrIGluc3RhbmNlIgorYnkgbG9va2luZyBhdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrZWQgY2xhc3MuCisKK0luIHRoZSBleGFtcGxlIGJlbG93IHdlIGhhdmUgYSBmdW5jdGlvbiBgc29tZV9mdW5jdGlvbmAgdGhhdCBpbnN0YW50aWF0ZXMgYEZvb2AKK2FuZCBjYWxscyBhIG1ldGhvZCBvbiBpdC4gVGhlIGNhbGwgdG8gYHBhdGNoYCByZXBsYWNlcyB0aGUgY2xhc3MgYEZvb2Agd2l0aCBhCittb2NrLiBUaGUgYEZvb2AgaW5zdGFuY2UgaXMgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBtb2NrLCBzbyBpdCBpcyBjb25maWd1cmVkCitieSBtb2RpZnlpbmcgdGhlIG1vY2sgOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAuCisKKyAgICA+Pj4gZGVmIHNvbWVfZnVuY3Rpb24oKToKKyAgICAuLi4gICAgIGluc3RhbmNlID0gbW9kdWxlLkZvbygpCisgICAgLi4uICAgICByZXR1cm4gaW5zdGFuY2UubWV0aG9kKCkKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnbW9kdWxlLkZvbycpIGFzIG1vY2s6CisgICAgLi4uICAgICBpbnN0YW5jZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgLi4uICAgICBpbnN0YW5jZS5tZXRob2QucmV0dXJuX3ZhbHVlID0gJ3RoZSByZXN1bHQnCisgICAgLi4uICAgICByZXN1bHQgPSBzb21lX2Z1bmN0aW9uKCkKKyAgICAuLi4gICAgIGFzc2VydCByZXN1bHQgPT0gJ3RoZSByZXN1bHQnCisKKworTmFtaW5nIHlvdXIgbW9ja3MKK35+fn5+fn5+fn5+fn5+fn5+CisKK0l0IGNhbiBiZSB1c2VmdWwgdG8gZ2l2ZSB5b3VyIG1vY2tzIGEgbmFtZS4gVGhlIG5hbWUgaXMgc2hvd24gaW4gdGhlIHJlcHIgb2YKK3RoZSBtb2NrIGFuZCBjYW4gYmUgaGVscGZ1bCB3aGVuIHRoZSBtb2NrIGFwcGVhcnMgaW4gdGVzdCBmYWlsdXJlIG1lc3NhZ2VzLiBUaGUKK25hbWUgaXMgYWxzbyBwcm9wYWdhdGVkIHRvIGF0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvZiB0aGUgbW9jazoKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKG5hbWU9J2ZvbycpCisgICAgPj4+IG1vY2sKKyAgICA8TWFnaWNNb2NrIG5hbWU9J2ZvbycgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subWV0aG9kCisgICAgPE1hZ2ljTW9jayBuYW1lPSdmb28ubWV0aG9kJyBpZD0nLi4uJz4KKworCitUcmFja2luZyBhbGwgQ2FsbHMKK35+fn5+fn5+fn5+fn5+fn5+fgorCitPZnRlbiB5b3Ugd2FudCB0byB0cmFjayBtb3JlIHRoYW4gYSBzaW5nbGUgY2FsbCB0byBhIG1ldGhvZC4gVGhlCis6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgYXR0cmlidXRlIHJlY29yZHMgYWxsIGNhbGxzCit0byBjaGlsZCBhdHRyaWJ1dGVzIG9mIHRoZSBtb2NrIC0gYW5kIGFsc28gdG8gdGhlaXIgY2hpbGRyZW4uCisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLmF0dHJpYnV0ZS5tZXRob2QoMTAsIHg9NTMpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmF0dHJpYnV0ZS5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subW9ja19jYWxscworICAgIFtjYWxsLm1ldGhvZCgpLCBjYWxsLmF0dHJpYnV0ZS5tZXRob2QoMTAsIHg9NTMpXQorCitJZiB5b3UgbWFrZSBhbiBhc3NlcnRpb24gYWJvdXQgYG1vY2tfY2FsbHNgIGFuZCBhbnkgdW5leHBlY3RlZCBtZXRob2RzCitoYXZlIGJlZW4gY2FsbGVkLCB0aGVuIHRoZSBhc3NlcnRpb24gd2lsbCBmYWlsLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGFzIHdlbGwKK2FzIGFzc2VydGluZyB0aGF0IHRoZSBjYWxscyB5b3UgZXhwZWN0ZWQgaGF2ZSBiZWVuIG1hZGUsIHlvdSBhcmUgYWxzbyBjaGVja2luZwordGhhdCB0aGV5IHdlcmUgbWFkZSBpbiB0aGUgcmlnaHQgb3JkZXIgYW5kIHdpdGggbm8gYWRkaXRpb25hbCBjYWxsczoKKworWW91IHVzZSB0aGUgOmRhdGE6YGNhbGxgIG9iamVjdCB0byBjb25zdHJ1Y3QgbGlzdHMgZm9yIGNvbXBhcmluZyB3aXRoCitgbW9ja19jYWxsc2A6CisKKyAgICA+Pj4gZXhwZWN0ZWQgPSBbY2FsbC5tZXRob2QoKSwgY2FsbC5hdHRyaWJ1dGUubWV0aG9kKDEwLCB4PTUzKV0KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgVHJ1ZQorCisKK1NldHRpbmcgUmV0dXJuIFZhbHVlcyBhbmQgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NldHRpbmcgdGhlIHJldHVybiB2YWx1ZXMgb24gYSBtb2NrIG9iamVjdCBpcyB0cml2aWFsbHkgZWFzeToKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlID0gMworICAgID4+PiBtb2NrKCkKKyAgICAzCisKK09mIGNvdXJzZSB5b3UgY2FuIGRvIHRoZSBzYW1lIGZvciBtZXRob2RzIG9uIHRoZSBtb2NrOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5tZXRob2QucmV0dXJuX3ZhbHVlID0gMworICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgMworCitUaGUgcmV0dXJuIHZhbHVlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3I6CisKKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgPj4+IG1vY2soKQorICAgIDMKKworSWYgeW91IG5lZWQgYW4gYXR0cmlidXRlIHNldHRpbmcgb24geW91ciBtb2NrLCBqdXN0IGRvIGl0OgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay54ID0gMworICAgID4+PiBtb2NrLngKKyAgICAzCisKK1NvbWV0aW1lcyB5b3Ugd2FudCB0byBtb2NrIHVwIGEgbW9yZSBjb21wbGV4IHNpdHVhdGlvbiwgbGlrZSBmb3IgZXhhbXBsZQorYG1vY2suY29ubmVjdGlvbi5jdXJzb3IoKS5leGVjdXRlKCJTRUxFQ1QgMSIpYC4gSWYgd2Ugd2FudGVkIHRoaXMgY2FsbCB0bworcmV0dXJuIGEgbGlzdCwgdGhlbiB3ZSBoYXZlIHRvIGNvbmZpZ3VyZSB0aGUgcmVzdWx0IG9mIHRoZSBuZXN0ZWQgY2FsbC4KKworV2UgY2FuIHVzZSA6ZGF0YTpgY2FsbGAgdG8gY29uc3RydWN0IHRoZSBzZXQgb2YgY2FsbHMgaW4gYSAiY2hhaW5lZCBjYWxsIiBsaWtlCit0aGlzIGZvciBlYXN5IGFzc2VydGlvbiBhZnRlcndhcmRzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gY3Vyc29yID0gbW9jay5jb25uZWN0aW9uLmN1cnNvci5yZXR1cm5fdmFsdWUKKyAgICA+Pj4gY3Vyc29yLmV4ZWN1dGUucmV0dXJuX3ZhbHVlID0gWydmb28nXQorICAgID4+PiBtb2NrLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKQorICAgIFsnZm9vJ10KKyAgICA+Pj4gZXhwZWN0ZWQgPSBjYWxsLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKS5jYWxsX2xpc3QoKQorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5jb25uZWN0aW9uLmN1cnNvcigpLCBjYWxsLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgnU0VMRUNUIDEnKV0KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgVHJ1ZQorCitJdCBpcyB0aGUgY2FsbCB0byBgLmNhbGxfbGlzdCgpYCB0aGF0IHR1cm5zIG91ciBjYWxsIG9iamVjdCBpbnRvIGEgbGlzdCBvZgorY2FsbHMgcmVwcmVzZW50aW5nIHRoZSBjaGFpbmVkIGNhbGxzLgorCisKK1JhaXNpbmcgZXhjZXB0aW9ucyB3aXRoIG1vY2tzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitBIHVzZWZ1bCBhdHRyaWJ1dGUgaXMgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YC4gSWYgeW91IHNldCB0aGlzIHRvIGFuCitleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UgdGhlbiB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdGhlIG1vY2sKK2lzIGNhbGxlZC4KKworICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1FeGNlcHRpb24oJ0Jvb20hJykpCisgICAgPj4+IG1vY2soKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEV4Y2VwdGlvbjogQm9vbSEKKworCitTaWRlIGVmZmVjdCBmdW5jdGlvbnMgYW5kIGl0ZXJhYmxlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworYHNpZGVfZWZmZWN0YCBjYW4gYWxzbyBiZSBzZXQgdG8gYSBmdW5jdGlvbiBvciBhbiBpdGVyYWJsZS4gVGhlIHVzZSBjYXNlIGZvcgorYHNpZGVfZWZmZWN0YCBhcyBhbiBpdGVyYWJsZSBpcyB3aGVyZSB5b3VyIG1vY2sgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHNldmVyYWwKK3RpbWVzLCBhbmQgeW91IHdhbnQgZWFjaCBjYWxsIHRvIHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZS4gV2hlbiB5b3Ugc2V0Citgc2lkZV9lZmZlY3RgIHRvIGFuIGl0ZXJhYmxlIGV2ZXJ5IGNhbGwgdG8gdGhlIG1vY2sgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZQorZnJvbSB0aGUgaXRlcmFibGU6CisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1bNCwgNSwgNl0pCisgICAgPj4+IG1vY2soKQorICAgIDQKKyAgICA+Pj4gbW9jaygpCisgICAgNQorICAgID4+PiBtb2NrKCkKKyAgICA2CisKKworRm9yIG1vcmUgYWR2YW5jZWQgdXNlIGNhc2VzLCBsaWtlIGR5bmFtaWNhbGx5IHZhcnlpbmcgdGhlIHJldHVybiB2YWx1ZXMKK2RlcGVuZGluZyBvbiB3aGF0IHRoZSBtb2NrIGlzIGNhbGxlZCB3aXRoLCBgc2lkZV9lZmZlY3RgIGNhbiBiZSBhIGZ1bmN0aW9uLgorVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBtb2NrLiBXaGF0ZXZlciB0aGUKK2Z1bmN0aW9uIHJldHVybnMgaXMgd2hhdCB0aGUgY2FsbCByZXR1cm5zOgorCisgICAgPj4+IHZhbHMgPSB7KDEsIDIpOiAxLCAoMiwgMyk6IDJ9CisgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncyk6CisgICAgLi4uICAgICByZXR1cm4gdmFsc1thcmdzXQorICAgIC4uLgorICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgID4+PiBtb2NrKDEsIDIpCisgICAgMQorICAgID4+PiBtb2NrKDIsIDMpCisgICAgMgorCisKK0NyZWF0aW5nIGEgTW9jayBmcm9tIGFuIEV4aXN0aW5nIE9iamVjdAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK09uZSBwcm9ibGVtIHdpdGggb3ZlciB1c2Ugb2YgbW9ja2luZyBpcyB0aGF0IGl0IGNvdXBsZXMgeW91ciB0ZXN0cyB0byB0aGUKK2ltcGxlbWVudGF0aW9uIG9mIHlvdXIgbW9ja3MgcmF0aGVyIHRoYW4geW91ciByZWFsIGNvZGUuIFN1cHBvc2UgeW91IGhhdmUgYQorY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGBzb21lX21ldGhvZGAuIEluIGEgdGVzdCBmb3IgYW5vdGhlciBjbGFzcywgeW91Citwcm92aWRlIGEgbW9jayBvZiB0aGlzIG9iamVjdCB0aGF0ICphbHNvKiBwcm92aWRlcyBgc29tZV9tZXRob2RgLiBJZiBsYXRlcgoreW91IHJlZmFjdG9yIHRoZSBmaXJzdCBjbGFzcywgc28gdGhhdCBpdCBubyBsb25nZXIgaGFzIGBzb21lX21ldGhvZGAgLSB0aGVuCit5b3VyIHRlc3RzIHdpbGwgY29udGludWUgdG8gcGFzcyBldmVuIHRob3VnaCB5b3VyIGNvZGUgaXMgbm93IGJyb2tlbiEKKworYE1vY2tgIGFsbG93cyB5b3UgdG8gcHJvdmlkZSBhbiBvYmplY3QgYXMgYSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jaywKK3VzaW5nIHRoZSBgc3BlY2Aga2V5d29yZCBhcmd1bWVudC4gQWNjZXNzaW5nIG1ldGhvZHMgLyBhdHRyaWJ1dGVzIG9uIHRoZQorbW9jayB0aGF0IGRvbid0IGV4aXN0IG9uIHlvdXIgc3BlY2lmaWNhdGlvbiBvYmplY3Qgd2lsbCBpbW1lZGlhdGVseSByYWlzZSBhbgorYXR0cmlidXRlIGVycm9yLiBJZiB5b3UgY2hhbmdlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIHNwZWNpZmljYXRpb24sIHRoZW4KK3Rlc3RzIHRoYXQgdXNlIHRoYXQgY2xhc3Mgd2lsbCBzdGFydCBmYWlsaW5nIGltbWVkaWF0ZWx5IHdpdGhvdXQgeW91IGhhdmluZyB0bworaW5zdGFudGlhdGUgdGhlIGNsYXNzIGluIHRob3NlIHRlc3RzLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9U29tZUNsYXNzKQorICAgID4+PiBtb2NrLm9sZF9tZXRob2QoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ29sZF9tZXRob2QnCisKK0lmIHlvdSB3YW50IGEgc3Ryb25nZXIgZm9ybSBvZiBzcGVjaWZpY2F0aW9uIHRoYXQgcHJldmVudHMgdGhlIHNldHRpbmcKK29mIGFyYml0cmFyeSBhdHRyaWJ1dGVzIGFzIHdlbGwgYXMgdGhlIGdldHRpbmcgb2YgdGhlbSB0aGVuIHlvdSBjYW4gdXNlCitgc3BlY19zZXRgIGluc3RlYWQgb2YgYHNwZWNgLgorCisKKworUGF0Y2ggRGVjb3JhdG9ycworLS0tLS0tLS0tLS0tLS0tLQorCisuLiBub3RlOjoKKworICAgV2l0aCBgcGF0Y2hgIGl0IG1hdHRlcnMgdGhhdCB5b3UgcGF0Y2ggb2JqZWN0cyBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIHRoZXkKKyAgIGFyZSBsb29rZWQgdXAuIFRoaXMgaXMgbm9ybWFsbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgZm9yIGEgcXVpY2sgZ3VpZGUKKyAgIHJlYWQgOnJlZjpgd2hlcmUgdG8gcGF0Y2ggPHdoZXJlLXRvLXBhdGNoPmAuCisKKworQSBjb21tb24gbmVlZCBpbiB0ZXN0cyBpcyB0byBwYXRjaCBhIGNsYXNzIGF0dHJpYnV0ZSBvciBhIG1vZHVsZSBhdHRyaWJ1dGUsCitmb3IgZXhhbXBsZSBwYXRjaGluZyBhIGJ1aWx0aW4gb3IgcGF0Y2hpbmcgYSBjbGFzcyBpbiBhIG1vZHVsZSB0byB0ZXN0IHRoYXQgaXQKK2lzIGluc3RhbnRpYXRlZC4gTW9kdWxlcyBhbmQgY2xhc3NlcyBhcmUgZWZmZWN0aXZlbHkgZ2xvYmFsLCBzbyBwYXRjaGluZyBvbgordGhlbSBoYXMgdG8gYmUgdW5kb25lIGFmdGVyIHRoZSB0ZXN0IG9yIHRoZSBwYXRjaCB3aWxsIHBlcnNpc3QgaW50byBvdGhlcgordGVzdHMgYW5kIGNhdXNlIGhhcmQgdG8gZGlhZ25vc2UgcHJvYmxlbXMuCisKK21vY2sgcHJvdmlkZXMgdGhyZWUgY29udmVuaWVudCBkZWNvcmF0b3JzIGZvciB0aGlzOiBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBhbmQKK2BwYXRjaC5kaWN0YC4gYHBhdGNoYCB0YWtlcyBhIHNpbmdsZSBzdHJpbmcsIG9mIHRoZSBmb3JtCitgcGFja2FnZS5tb2R1bGUuQ2xhc3MuYXR0cmlidXRlYCB0byBzcGVjaWZ5IHRoZSBhdHRyaWJ1dGUgeW91IGFyZSBwYXRjaGluZy4gSXQKK2Fsc28gb3B0aW9uYWxseSB0YWtlcyBhIHZhbHVlIHRoYXQgeW91IHdhbnQgdGhlIGF0dHJpYnV0ZSAob3IgY2xhc3Mgb3IKK3doYXRldmVyKSB0byBiZSByZXBsYWNlZCB3aXRoLiAncGF0Y2gub2JqZWN0JyB0YWtlcyBhbiBvYmplY3QgYW5kIHRoZSBuYW1lIG9mCit0aGUgYXR0cmlidXRlIHlvdSB3b3VsZCBsaWtlIHBhdGNoZWQsIHBsdXMgb3B0aW9uYWxseSB0aGUgdmFsdWUgdG8gcGF0Y2ggaXQKK3dpdGguCisKK2BwYXRjaC5vYmplY3RgOgorCisgICAgPj4+IG9yaWdpbmFsID0gU29tZUNsYXNzLmF0dHJpYnV0ZQorICAgID4+PiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGFzc2VydCBTb21lQ2xhc3MuYXR0cmlidXRlID09IHNlbnRpbmVsLmF0dHJpYnV0ZQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKyAgICA+Pj4gYXNzZXJ0IFNvbWVDbGFzcy5hdHRyaWJ1dGUgPT0gb3JpZ2luYWwKKworICAgID4+PiBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLmF0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IGF0dHJpYnV0ZQorICAgIC4uLiAgICAgYXNzZXJ0IGF0dHJpYnV0ZSBpcyBzZW50aW5lbC5hdHRyaWJ1dGUKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKK0lmIHlvdSBhcmUgcGF0Y2hpbmcgYSBtb2R1bGUgKGluY2x1ZGluZyBgX19idWlsdGluX19gKSB0aGVuIHVzZSBgcGF0Y2hgCitpbnN0ZWFkIG9mIGBwYXRjaC5vYmplY3RgOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlID0gc2VudGluZWwuZmlsZV9oYW5kbGUpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fYnVpbHRpbl9fLm9wZW4nLCBtb2NrKToKKyAgICAuLi4gICAgIGhhbmRsZSA9IG9wZW4oJ2ZpbGVuYW1lJywgJ3InKQorICAgIC4uLgorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgnZmlsZW5hbWUnLCAncicpCisgICAgPj4+IGFzc2VydCBoYW5kbGUgPT0gc2VudGluZWwuZmlsZV9oYW5kbGUsICJpbmNvcnJlY3QgZmlsZSBoYW5kbGUgcmV0dXJuZWQiCisKK1RoZSBtb2R1bGUgbmFtZSBjYW4gYmUgJ2RvdHRlZCcsIGluIHRoZSBmb3JtIGBwYWNrYWdlLm1vZHVsZWAgaWYgbmVlZGVkOgorCisgICAgPj4+IEBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lLmF0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IENsYXNzTmFtZQorICAgIC4uLiAgICAgYXNzZXJ0IENsYXNzTmFtZS5hdHRyaWJ1dGUgPT0gc2VudGluZWwuYXR0cmlidXRlCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitBIG5pY2UgcGF0dGVybiBpcyB0byBhY3R1YWxseSBkZWNvcmF0ZSB0ZXN0IG1ldGhvZHMgdGhlbXNlbHZlczoKKworICAgID4+PiBjbGFzcyBNeVRlc3QodW5pdHRlc3QyLlRlc3RDYXNlKToKKyAgICAuLi4gICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnYXR0cmlidXRlJywgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLmF0dHJpYnV0ZSwgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IFNvbWVDbGFzcy5hdHRyaWJ1dGUKKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKyAgICA+Pj4gYXNzZXJ0IFNvbWVDbGFzcy5hdHRyaWJ1dGUgPT0gb3JpZ2luYWwKKworSWYgeW91IHdhbnQgdG8gcGF0Y2ggd2l0aCBhIE1vY2ssIHlvdSBjYW4gdXNlIGBwYXRjaGAgd2l0aCBvbmx5IG9uZSBhcmd1bWVudAorKG9yIGBwYXRjaC5vYmplY3RgIHdpdGggdHdvIGFyZ3VtZW50cykuIFRoZSBtb2NrIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91IGFuZAorcGFzc2VkIGludG8gdGhlIHRlc3QgZnVuY3Rpb24gLyBtZXRob2Q6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CisgICAgLi4uICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ3N0YXRpY19tZXRob2QnKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYsIG1vY2tfbWV0aG9kKToKKyAgICAuLi4gICAgICAgICBTb21lQ2xhc3Muc3RhdGljX21ldGhvZCgpCisgICAgLi4uICAgICAgICAgbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKworWW91IGNhbiBzdGFjayB1cCBtdWx0aXBsZSBwYXRjaCBkZWNvcmF0b3JzIHVzaW5nIHRoaXMgcGF0dGVybjoKKworICAgID4+PiBjbGFzcyBNeVRlc3QodW5pdHRlc3QyLlRlc3RDYXNlKToKKyAgICAuLi4gICAgIEBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lMScpCisgICAgLi4uICAgICBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTInKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYsIE1vY2tDbGFzczIsIE1vY2tDbGFzczEpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUxIGlzIE1vY2tDbGFzczEpCisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTIgaXMgTW9ja0NsYXNzMikKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKworV2hlbiB5b3UgbmVzdCBwYXRjaCBkZWNvcmF0b3JzIHRoZSBtb2NrcyBhcmUgcGFzc2VkIGluIHRvIHRoZSBkZWNvcmF0ZWQKK2Z1bmN0aW9uIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwbGllZCAodGhlIG5vcm1hbCAqcHl0aG9uKiBvcmRlciB0aGF0CitkZWNvcmF0b3JzIGFyZSBhcHBsaWVkKS4gVGhpcyBtZWFucyBmcm9tIHRoZSBib3R0b20gdXAsIHNvIGluIHRoZSBleGFtcGxlCithYm92ZSB0aGUgbW9jayBmb3IgYHRlc3RfbW9kdWxlLkNsYXNzTmFtZTJgIGlzIHBhc3NlZCBpbiBmaXJzdC4KKworVGhlcmUgaXMgYWxzbyA6ZnVuYzpgcGF0Y2guZGljdGAgZm9yIHNldHRpbmcgdmFsdWVzIGluIGEgZGljdGlvbmFyeSBqdXN0CitkdXJpbmcgYSBzY29wZSBhbmQgcmVzdG9yaW5nIHRoZSBkaWN0aW9uYXJ5IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZSB3aGVuIHRoZSB0ZXN0CitlbmRzOgorCisgICA+Pj4gZm9vID0geydrZXknOiAndmFsdWUnfQorICAgPj4+IG9yaWdpbmFsID0gZm9vLmNvcHkoKQorICAgPj4+IHdpdGggcGF0Y2guZGljdChmb28sIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30sIGNsZWFyPVRydWUpOgorICAgLi4uICAgICBhc3NlcnQgZm9vID09IHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30KKyAgIC4uLgorICAgPj4+IGFzc2VydCBmb28gPT0gb3JpZ2luYWwKKworYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgYW5kIGBwYXRjaC5kaWN0YCBjYW4gYWxsIGJlIHVzZWQgYXMgY29udGV4dCBtYW5hZ2Vycy4KKworV2hlcmUgeW91IHVzZSBgcGF0Y2hgIHRvIGNyZWF0ZSBhIG1vY2sgZm9yIHlvdSwgeW91IGNhbiBnZXQgYSByZWZlcmVuY2UgdG8gdGhlCittb2NrIHVzaW5nIHRoZSAiYXMiIGZvcm0gb2YgdGhlIHdpdGggc3RhdGVtZW50OgorCisgICAgPj4+IGNsYXNzIFByb2R1Y3Rpb25DbGFzcyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAuLi4gICAgICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2gub2JqZWN0KFByb2R1Y3Rpb25DbGFzcywgJ21ldGhvZCcpIGFzIG1vY2tfbWV0aG9kOgorICAgIC4uLiAgICAgbW9ja19tZXRob2QucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgIC4uLiAgICAgcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgLi4uICAgICByZWFsLm1ldGhvZCgxLCAyLCAzKQorICAgIC4uLgorICAgID4+PiBtb2NrX21ldGhvZC5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgMykKKworCitBcyBhbiBhbHRlcm5hdGl2ZSBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBhbmQgYHBhdGNoLmRpY3RgIGNhbiBiZSB1c2VkIGFzCitjbGFzcyBkZWNvcmF0b3JzLiBXaGVuIHVzZWQgaW4gdGhpcyB3YXkgaXQgaXMgdGhlIHNhbWUgYXMgYXBwbHlpbmcgdGhlCitkZWNvcmF0b3IgaW5kdmlkdWFsbHkgdG8gZXZlcnkgbWV0aG9kIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggInRlc3QiLgorCisKKy4uIF9mdXJ0aGVyLWV4YW1wbGVzOgorCitGdXJ0aGVyIEV4YW1wbGVzCis9PT09PT09PT09PT09PT09CisKKworSGVyZSBhcmUgc29tZSBtb3JlIGV4YW1wbGVzIGZvciBzb21lIHNsaWdodGx5IG1vcmUgYWR2YW5jZWQgc2NlbmFyaW9zLgorCisKK01vY2tpbmcgY2hhaW5lZCBjYWxscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01vY2tpbmcgY2hhaW5lZCBjYWxscyBpcyBhY3R1YWxseSBzdHJhaWdodGZvcndhcmQgd2l0aCBtb2NrIG9uY2UgeW91Cit1bmRlcnN0YW5kIHRoZSA6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuIFdoZW4gYSBtb2NrIGlzIGNhbGxlZCBmb3IKK3RoZSBmaXJzdCB0aW1lLCBvciB5b3UgZmV0Y2ggaXRzIGByZXR1cm5fdmFsdWVgIGJlZm9yZSBpdCBoYXMgYmVlbiBjYWxsZWQsIGEKK25ldyBgTW9ja2AgaXMgY3JlYXRlZC4KKworVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc2VlIGhvdyB0aGUgb2JqZWN0IHJldHVybmVkIGZyb20gYSBjYWxsIHRvIGEgbW9ja2VkCitvYmplY3QgaGFzIGJlZW4gdXNlZCBieSBpbnRlcnJvZ2F0aW5nIHRoZSBgcmV0dXJuX3ZhbHVlYCBtb2NrOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jaygpLmZvbyhhPTIsIGI9MykKKyAgICA8TW9jayBuYW1lPSdtb2NrKCkuZm9vKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLnJldHVybl92YWx1ZS5mb28uYXNzZXJ0X2NhbGxlZF93aXRoKGE9MiwgYj0zKQorCitGcm9tIGhlcmUgaXQgaXMgYSBzaW1wbGUgc3RlcCB0byBjb25maWd1cmUgYW5kIHRoZW4gbWFrZSBhc3NlcnRpb25zIGFib3V0CitjaGFpbmVkIGNhbGxzLiBPZiBjb3Vyc2UgYW5vdGhlciBhbHRlcm5hdGl2ZSBpcyB3cml0aW5nIHlvdXIgY29kZSBpbiBhIG1vcmUKK3Rlc3RhYmxlIHdheSBpbiB0aGUgZmlyc3QgcGxhY2UuLi4KKworU28sIHN1cHBvc2Ugd2UgaGF2ZSBzb21lIGNvZGUgdGhhdCBsb29rcyBhIGxpdHRsZSBiaXQgbGlrZSB0aGlzOgorCisgICAgPj4+IGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYmFja2VuZCA9IEJhY2tlbmRQcm92aWRlcigpCisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5iYWNrZW5kLmdldF9lbmRwb2ludCgnZm9vYmFyJykuY3JlYXRlX2NhbGwoJ3NwYW0nLCAnZWdncycpLnN0YXJ0X2NhbGwoKQorICAgIC4uLiAgICAgICAgICMgbW9yZSBjb2RlCisKK0Fzc3VtaW5nIHRoYXQgYEJhY2tlbmRQcm92aWRlcmAgaXMgYWxyZWFkeSB3ZWxsIHRlc3RlZCwgaG93IGRvIHdlIHRlc3QKK2BtZXRob2QoKWA/IFNwZWNpZmljYWxseSwgd2Ugd2FudCB0byB0ZXN0IHRoYXQgdGhlIGNvZGUgc2VjdGlvbiBgIyBtb3JlCitjb2RlYCB1c2VzIHRoZSByZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvcnJlY3Qgd2F5LgorCitBcyB0aGlzIGNoYWluIG9mIGNhbGxzIGlzIG1hZGUgZnJvbSBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgd2UgY2FuIG1vbmtleSBwYXRjaAordGhlIGBiYWNrZW5kYCBhdHRyaWJ1dGUgb24gYSBgU29tZXRoaW5nYCBpbnN0YW5jZS4gSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UKK3dlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBmaW5hbCBjYWxsIHRvCitgc3RhcnRfY2FsbGAgc28gd2UgZG9uJ3QgaGF2ZSBtdWNoIGNvbmZpZ3VyYXRpb24gdG8gZG8uIExldCdzIGFzc3VtZSB0aGUKK29iamVjdCBpdCByZXR1cm5zIGlzICdmaWxlLWxpa2UnLCBzbyB3ZSdsbCBlbnN1cmUgdGhhdCBvdXIgcmVzcG9uc2Ugb2JqZWN0Cit1c2VzIHRoZSBidWlsdGluIGBmaWxlYCBhcyBpdHMgYHNwZWNgLgorCitUbyBkbyB0aGlzIHdlIGNyZWF0ZSBhIG1vY2sgaW5zdGFuY2UgYXMgb3VyIG1vY2sgYmFja2VuZCBhbmQgY3JlYXRlIGEgbW9jaworcmVzcG9uc2Ugb2JqZWN0IGZvciBpdC4gVG8gc2V0IHRoZSByZXNwb25zZSBhcyB0aGUgcmV0dXJuIHZhbHVlIGZvciB0aGF0IGZpbmFsCitgc3RhcnRfY2FsbGAgd2UgY291bGQgZG8gdGhpczoKKworICAgIGBtb2NrX2JhY2tlbmQuZ2V0X2VuZHBvaW50LnJldHVybl92YWx1ZS5jcmVhdGVfY2FsbC5yZXR1cm5fdmFsdWUuc3RhcnRfY2FsbC5yZXR1cm5fdmFsdWUgPSBtb2NrX3Jlc3BvbnNlYC4KKworV2UgY2FuIGRvIHRoYXQgaW4gYSBzbGlnaHRseSBuaWNlciB3YXkgdXNpbmcgdGhlIDptZXRoOmB+TW9jay5jb25maWd1cmVfbW9ja2AKK21ldGhvZCB0byBkaXJlY3RseSBzZXQgdGhlIHJldHVybiB2YWx1ZSBmb3IgdXM6CisKKyAgICA+Pj4gc29tZXRoaW5nID0gU29tZXRoaW5nKCkKKyAgICA+Pj4gbW9ja19yZXNwb25zZSA9IE1vY2soc3BlYz1maWxlKQorICAgID4+PiBtb2NrX2JhY2tlbmQgPSBNb2NrKCkKKyAgICA+Pj4gY29uZmlnID0geydnZXRfZW5kcG9pbnQucmV0dXJuX3ZhbHVlLmNyZWF0ZV9jYWxsLnJldHVybl92YWx1ZS5zdGFydF9jYWxsLnJldHVybl92YWx1ZSc6IG1vY2tfcmVzcG9uc2V9CisgICAgPj4+IG1vY2tfYmFja2VuZC5jb25maWd1cmVfbW9jaygqKmNvbmZpZykKKworV2l0aCB0aGVzZSB3ZSBtb25rZXkgcGF0Y2ggdGhlICJtb2NrIGJhY2tlbmQiIGluIHBsYWNlIGFuZCBjYW4gbWFrZSB0aGUgcmVhbAorY2FsbDoKKworICAgID4+PiBzb21ldGhpbmcuYmFja2VuZCA9IG1vY2tfYmFja2VuZAorICAgID4+PiBzb21ldGhpbmcubWV0aG9kKCkKKworVXNpbmcgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIHdlIGNhbiBjaGVjayB0aGUgY2hhaW5lZCBjYWxsIHdpdGggYSBzaW5nbGUKK2Fzc2VydC4gQSBjaGFpbmVkIGNhbGwgaXMgc2V2ZXJhbCBjYWxscyBpbiBvbmUgbGluZSBvZiBjb2RlLCBzbyB0aGVyZSB3aWxsIGJlCitzZXZlcmFsIGVudHJpZXMgaW4gYG1vY2tfY2FsbHNgLiBXZSBjYW4gdXNlIDptZXRoOmBjYWxsLmNhbGxfbGlzdGAgdG8gY3JlYXRlCit0aGlzIGxpc3Qgb2YgY2FsbHMgZm9yIHVzOgorCisgICAgPj4+IGNoYWluZWQgPSBjYWxsLmdldF9lbmRwb2ludCgnZm9vYmFyJykuY3JlYXRlX2NhbGwoJ3NwYW0nLCAnZWdncycpLnN0YXJ0X2NhbGwoKQorICAgID4+PiBjYWxsX2xpc3QgPSBjaGFpbmVkLmNhbGxfbGlzdCgpCisgICAgPj4+IGFzc2VydCBtb2NrX2JhY2tlbmQubW9ja19jYWxscyA9PSBjYWxsX2xpc3QKKworCitQYXJ0aWFsIG1vY2tpbmcKKy0tLS0tLS0tLS0tLS0tLQorCitJbiBzb21lIHRlc3RzIEkgd2FudGVkIHRvIG1vY2sgb3V0IGEgY2FsbCB0byBgZGF0ZXRpbWUuZGF0ZS50b2RheSgpCis8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2RhdGV0aW1lLmh0bWwjZGF0ZXRpbWUuZGF0ZS50b2RheT5gXyB0byByZXR1cm4KK2Ega25vd24gZGF0ZSwgYnV0IEkgZGlkbid0IHdhbnQgdG8gcHJldmVudCB0aGUgY29kZSB1bmRlciB0ZXN0IGZyb20KK2NyZWF0aW5nIG5ldyBkYXRlIG9iamVjdHMuIFVuZm9ydHVuYXRlbHkgYGRhdGV0aW1lLmRhdGVgIGlzIHdyaXR0ZW4gaW4gQywgYW5kCitzbyBJIGNvdWxkbid0IGp1c3QgbW9ua2V5LXBhdGNoIG91dCB0aGUgc3RhdGljIGBkYXRlLnRvZGF5YCBtZXRob2QuCisKK0kgZm91bmQgYSBzaW1wbGUgd2F5IG9mIGRvaW5nIHRoaXMgdGhhdCBpbnZvbHZlZCBlZmZlY3RpdmVseSB3cmFwcGluZyB0aGUgZGF0ZQorY2xhc3Mgd2l0aCBhIG1vY2ssIGJ1dCBwYXNzaW5nIHRocm91Z2ggY2FsbHMgdG8gdGhlIGNvbnN0cnVjdG9yIHRvIHRoZSByZWFsCitjbGFzcyAoYW5kIHJldHVybmluZyByZWFsIGluc3RhbmNlcykuCisKK1RoZSA6ZnVuYzpgcGF0Y2ggZGVjb3JhdG9yIDxwYXRjaD5gIGlzIHVzZWQgaGVyZSB0bworbW9jayBvdXQgdGhlIGBkYXRlYCBjbGFzcyBpbiB0aGUgbW9kdWxlIHVuZGVyIHRlc3QuIFRoZSA6YXR0cjpgc2lkZV9lZmZlY3RgCithdHRyaWJ1dGUgb24gdGhlIG1vY2sgZGF0ZSBjbGFzcyBpcyB0aGVuIHNldCB0byBhIGxhbWJkYSBmdW5jdGlvbiB0aGF0IHJldHVybnMKK2EgcmVhbCBkYXRlLiBXaGVuIHRoZSBtb2NrIGRhdGUgY2xhc3MgaXMgY2FsbGVkIGEgcmVhbCBkYXRlIHdpbGwgYmUKK2NvbnN0cnVjdGVkIGFuZCByZXR1cm5lZCBieSBgc2lkZV9lZmZlY3RgLgorCisgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuZGF0ZScpIGFzIG1vY2tfZGF0ZToKKyAgICAuLi4gICAgIG1vY2tfZGF0ZS50b2RheS5yZXR1cm5fdmFsdWUgPSBkYXRlKDIwMTAsIDEwLCA4KQorICAgIC4uLiAgICAgbW9ja19kYXRlLnNpZGVfZWZmZWN0ID0gbGFtYmRhICphcmdzLCAqKmt3OiBkYXRlKCphcmdzLCAqKmt3KQorICAgIC4uLgorICAgIC4uLiAgICAgYXNzZXJ0IG15bW9kdWxlLmRhdGUudG9kYXkoKSA9PSBkYXRlKDIwMTAsIDEwLCA4KQorICAgIC4uLiAgICAgYXNzZXJ0IG15bW9kdWxlLmRhdGUoMjAwOSwgNiwgOCkgPT0gZGF0ZSgyMDA5LCA2LCA4KQorICAgIC4uLgorCitOb3RlIHRoYXQgd2UgZG9uJ3QgcGF0Y2ggYGRhdGV0aW1lLmRhdGVgIGdsb2JhbGx5LCB3ZSBwYXRjaCBgZGF0ZWAgaW4gdGhlCittb2R1bGUgdGhhdCAqdXNlcyogaXQuIFNlZSA6cmVmOmB3aGVyZSB0byBwYXRjaCA8d2hlcmUtdG8tcGF0Y2g+YC4KKworV2hlbiBgZGF0ZS50b2RheSgpYCBpcyBjYWxsZWQgYSBrbm93biBkYXRlIGlzIHJldHVybmVkLCBidXQgY2FsbHMgdG8gdGhlCitgZGF0ZSguLi4pYCBjb25zdHJ1Y3RvciBzdGlsbCByZXR1cm4gbm9ybWFsIGRhdGVzLiBXaXRob3V0IHRoaXMgeW91IGNhbiBmaW5kCit5b3Vyc2VsZiBoYXZpbmcgdG8gY2FsY3VsYXRlIGFuIGV4cGVjdGVkIHJlc3VsdCB1c2luZyBleGFjdGx5IHRoZSBzYW1lCithbGdvcml0aG0gYXMgdGhlIGNvZGUgdW5kZXIgdGVzdCwgd2hpY2ggaXMgYSBjbGFzc2ljIHRlc3RpbmcgYW50aS1wYXR0ZXJuLgorCitDYWxscyB0byB0aGUgZGF0ZSBjb25zdHJ1Y3RvciBhcmUgcmVjb3JkZWQgaW4gdGhlIGBtb2NrX2RhdGVgIGF0dHJpYnV0ZXMKKyhgY2FsbF9jb3VudGAgYW5kIGZyaWVuZHMpIHdoaWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3IgeW91ciB0ZXN0cy4KKworQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGRlYWxpbmcgd2l0aCBtb2NraW5nIGRhdGVzLCBvciBvdGhlciBidWlsdGluIGNsYXNzZXMsCitpcyBkaXNjdXNzZWQgaW4gYHRoaXMgYmxvZyBlbnRyeQorPGh0dHA6Ly93aWxsaWFtam9obmJlcnQuY29tLzIwMTEvMDcvaG93LXRvLXVuaXQtdGVzdGluZy1pbi1kamFuZ28td2l0aC1tb2NraW5nLWFuZC1wYXRjaGluZy8+YF8uCisKKworTW9ja2luZyBhIEdlbmVyYXRvciBNZXRob2QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgUHl0aG9uIGdlbmVyYXRvciBpcyBhIGZ1bmN0aW9uIG9yIG1ldGhvZCB0aGF0IHVzZXMgdGhlIGB5aWVsZCBzdGF0ZW1lbnQKKzxodHRwOi8vZG9jcy5weXRob24ub3JnL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMuaHRtbCN0aGUteWllbGQtc3RhdGVtZW50PmBfIHRvCityZXR1cm4gYSBzZXJpZXMgb2YgdmFsdWVzIHdoZW4gaXRlcmF0ZWQgb3ZlciBbI11fLgorCitBIGdlbmVyYXRvciBtZXRob2QgLyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcmV0dXJuIHRoZSBnZW5lcmF0b3Igb2JqZWN0LiBJdCBpcwordGhlIGdlbmVyYXRvciBvYmplY3QgdGhhdCBpcyB0aGVuIGl0ZXJhdGVkIG92ZXIuIFRoZSBwcm90b2NvbCBtZXRob2QgZm9yCitpdGVyYXRpb24gaXMgYF9faXRlcl9fCis8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3N0ZHR5cGVzLmh0bWwjY29udGFpbmVyLl9faXRlcl9fPmBfLCBzbyB3ZSBjYW4KK21vY2sgdGhpcyB1c2luZyBhIGBNYWdpY01vY2tgLgorCitIZXJlJ3MgYW4gZXhhbXBsZSBjbGFzcyB3aXRoIGFuICJpdGVyIiBtZXRob2QgaW1wbGVtZW50ZWQgYXMgYSBnZW5lcmF0b3I6CisKKyAgICA+Pj4gY2xhc3MgRm9vKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgaXRlcihzZWxmKToKKyAgICAuLi4gICAgICAgICBmb3IgaSBpbiBbMSwgMiwgM106CisgICAgLi4uICAgICAgICAgICAgIHlpZWxkIGkKKyAgICAuLi4KKyAgICA+Pj4gZm9vID0gRm9vKCkKKyAgICA+Pj4gbGlzdChmb28uaXRlcigpKQorICAgIFsxLCAyLCAzXQorCisKK0hvdyB3b3VsZCB3ZSBtb2NrIHRoaXMgY2xhc3MsIGFuZCBpbiBwYXJ0aWN1bGFyIGl0cyAiaXRlciIgbWV0aG9kPworCitUbyBjb25maWd1cmUgdGhlIHZhbHVlcyByZXR1cm5lZCBmcm9tIHRoZSBpdGVyYXRpb24gKGltcGxpY2l0IGluIHRoZSBjYWxsIHRvCitgbGlzdGApLCB3ZSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIGBmb28uaXRlcigpYC4KKworICAgID4+PiBtb2NrX2ZvbyA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2tfZm9vLml0ZXIucmV0dXJuX3ZhbHVlID0gaXRlcihbMSwgMiwgM10pCisgICAgPj4+IGxpc3QobW9ja19mb28uaXRlcigpKQorICAgIFsxLCAyLCAzXQorCisuLiBbI10gVGhlcmUgYXJlIGFsc28gZ2VuZXJhdG9yIGV4cHJlc3Npb25zIGFuZCBtb3JlIGBhZHZhbmNlZCB1c2VzCisgICAgPGh0dHA6Ly93d3cuZGFiZWF6LmNvbS9jb3JvdXRpbmVzL2luZGV4Lmh0bWw+YF8gb2YgZ2VuZXJhdG9ycywgYnV0IHdlIGFyZW4ndAorICAgIGNvbmNlcm5lZCBhYm91dCB0aGVtIGhlcmUuIEEgdmVyeSBnb29kIGludHJvZHVjdGlvbiB0byBnZW5lcmF0b3JzIGFuZCBob3cKKyAgICBwb3dlcmZ1bCB0aGV5IGFyZSBpczogYEdlbmVyYXRvciBUcmlja3MgZm9yIFN5c3RlbXMgUHJvZ3JhbW1lcnMKKyAgICA8aHR0cDovL3d3dy5kYWJlYXouY29tL2dlbmVyYXRvcnMvPmBfLgorCisKK0FwcGx5aW5nIHRoZSBzYW1lIHBhdGNoIHRvIGV2ZXJ5IHRlc3QgbWV0aG9kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3Ugd2FudCBzZXZlcmFsIHBhdGNoZXMgaW4gcGxhY2UgZm9yIG11bHRpcGxlIHRlc3QgbWV0aG9kcyB0aGUgb2J2aW91cyB3YXkKK2lzIHRvIGFwcGx5IHRoZSBwYXRjaCBkZWNvcmF0b3JzIHRvIGV2ZXJ5IG1ldGhvZC4gVGhpcyBjYW4gZmVlbCBsaWtlIHVubmVjZXNzYXJ5CityZXBldGl0aW9uLiBGb3IgUHl0aG9uIDIuNiBvciBtb3JlIHJlY2VudCB5b3UgY2FuIHVzZSBgcGF0Y2hgIChpbiBhbGwgaXRzCit2YXJpb3VzIGZvcm1zKSBhcyBhIGNsYXNzIGRlY29yYXRvci4gVGhpcyBhcHBsaWVzIHRoZSBwYXRjaGVzIHRvIGFsbCB0ZXN0CittZXRob2RzIG9uIHRoZSBjbGFzcy4gQSB0ZXN0IG1ldGhvZCBpcyBpZGVudGlmaWVkIGJ5IG1ldGhvZHMgd2hvc2UgbmFtZXMgc3RhcnQKK3dpdGggYHRlc3RgOgorCisgICAgPj4+IEBwYXRjaCgnbXltb2R1bGUuU29tZUNsYXNzJykKKyAgICAuLi4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X29uZShzZWxmLCBNb2NrU29tZUNsYXNzKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUobXltb2R1bGUuU29tZUNsYXNzIGlzIE1vY2tTb21lQ2xhc3MpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF90d28oc2VsZiwgTW9ja1NvbWVDbGFzcyk6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG15bW9kdWxlLlNvbWVDbGFzcyBpcyBNb2NrU29tZUNsYXNzKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIG5vdF9hX3Rlc3Qoc2VsZik6CisgICAgLi4uICAgICAgICAgcmV0dXJuICdzb21ldGhpbmcnCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9vbmUnKS50ZXN0X29uZSgpCisgICAgPj4+IE15VGVzdCgndGVzdF90d28nKS50ZXN0X3R3bygpCisgICAgPj4+IE15VGVzdCgndGVzdF90d28nKS5ub3RfYV90ZXN0KCkKKyAgICAnc29tZXRoaW5nJworCitBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgbWFuYWdpbmcgcGF0Y2hlcyBpcyB0byB1c2UgdGhlIDpyZWY6YHN0YXJ0LWFuZC1zdG9wYC4KK1RoZXNlIGFsbG93IHlvdSB0byBtb3ZlIHRoZSBwYXRjaGluZyBpbnRvIHlvdXIgYHNldFVwYCBhbmQgYHRlYXJEb3duYCBtZXRob2RzLgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyID0gcGF0Y2goJ215bW9kdWxlLmZvbycpCisgICAgLi4uICAgICAgICAgc2VsZi5tb2NrX2ZvbyA9IHNlbGYucGF0Y2hlci5zdGFydCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG15bW9kdWxlLmZvbyBpcyBzZWxmLm1vY2tfZm9vKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlci5zdG9wKCkKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnJ1bigpCisKK0lmIHlvdSB1c2UgdGhpcyB0ZWNobmlxdWUgeW91IG11c3QgZW5zdXJlIHRoYXQgdGhlIHBhdGNoaW5nIGlzICJ1bmRvbmUiIGJ5CitjYWxsaW5nIGBzdG9wYC4gVGhpcyBjYW4gYmUgZmlkZGxpZXIgdGhhbiB5b3UgbWlnaHQgdGhpbmssIGJlY2F1c2UgaWYgYW4KK2V4Y2VwdGlvbiBpcyByYWlzZWQgaW4gdGhlIHNldFVwIHRoZW4gdGVhckRvd24gaXMgbm90IGNhbGxlZC4KKzptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5hZGRDbGVhbnVwYCBtYWtlcyB0aGlzIGVhc2llcjoKKworICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnbXltb2R1bGUuZm9vJykKKyAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgIC4uLiAgICAgICAgIHNlbGYubW9ja19mb28gPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUobXltb2R1bGUuZm9vIGlzIHNlbGYubW9ja19mb28pCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS5ydW4oKQorCisKK01vY2tpbmcgVW5ib3VuZCBNZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGlsc3Qgd3JpdGluZyB0ZXN0cyB0b2RheSBJIG5lZWRlZCB0byBwYXRjaCBhbiAqdW5ib3VuZCBtZXRob2QqIChwYXRjaGluZyB0aGUKK21ldGhvZCBvbiB0aGUgY2xhc3MgcmF0aGVyIHRoYW4gb24gdGhlIGluc3RhbmNlKS4gSSBuZWVkZWQgc2VsZiB0byBiZSBwYXNzZWQKK2luIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIGFzc2VydHMgYWJvdXQgd2hpY2ggb2JqZWN0cword2VyZSBjYWxsaW5nIHRoaXMgcGFydGljdWxhciBtZXRob2QuIFRoZSBpc3N1ZSBpcyB0aGF0IHlvdSBjYW4ndCBwYXRjaCB3aXRoIGEKK21vY2sgZm9yIHRoaXMsIGJlY2F1c2UgaWYgeW91IHJlcGxhY2UgYW4gdW5ib3VuZCBtZXRob2Qgd2l0aCBhIG1vY2sgaXQgZG9lc24ndAorYmVjb21lIGEgYm91bmQgbWV0aG9kIHdoZW4gZmV0Y2hlZCBmcm9tIHRoZSBpbnN0YW5jZSwgYW5kIHNvIGl0IGRvZXNuJ3QgZ2V0CitzZWxmIHBhc3NlZCBpbi4gVGhlIHdvcmthcm91bmQgaXMgdG8gcGF0Y2ggdGhlIHVuYm91bmQgbWV0aG9kIHdpdGggYSByZWFsCitmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgbWFrZXMgaXQgc28gc2ltcGxlIHRvCitwYXRjaCBvdXQgbWV0aG9kcyB3aXRoIGEgbW9jayB0aGF0IGhhdmluZyB0byBjcmVhdGUgYSByZWFsIGZ1bmN0aW9uIGJlY29tZXMgYQorbnVpc2FuY2UuCisKK0lmIHlvdSBwYXNzIGBhdXRvc3BlYz1UcnVlYCB0byBwYXRjaCB0aGVuIGl0IGRvZXMgdGhlIHBhdGNoaW5nIHdpdGggYQorKnJlYWwqIGZ1bmN0aW9uIG9iamVjdC4gVGhpcyBmdW5jdGlvbiBvYmplY3QgaGFzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyB0aGUgb25lCitpdCBpcyByZXBsYWNpbmcsIGJ1dCBkZWxlZ2F0ZXMgdG8gYSBtb2NrIHVuZGVyIHRoZSBob29kLiBZb3Ugc3RpbGwgZ2V0IHlvdXIKK21vY2sgYXV0by1jcmVhdGVkIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGJlZm9yZS4gV2hhdCBpdCBtZWFucyB0aG91Z2gsIGlzCit0aGF0IGlmIHlvdSB1c2UgaXQgdG8gcGF0Y2ggb3V0IGFuIHVuYm91bmQgbWV0aG9kIG9uIGEgY2xhc3MgdGhlIG1vY2tlZAorZnVuY3Rpb24gd2lsbCBiZSB0dXJuZWQgaW50byBhIGJvdW5kIG1ldGhvZCBpZiBpdCBpcyBmZXRjaGVkIGZyb20gYW4gaW5zdGFuY2UuCitJdCB3aWxsIGhhdmUgYHNlbGZgIHBhc3NlZCBpbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJCit3YW50ZWQ6CisKKyAgICA+Pj4gY2xhc3MgRm9vKG9iamVjdCk6CisgICAgLi4uICAgZGVmIGZvbyhzZWxmKToKKyAgICAuLi4gICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgYXV0b3NwZWM9VHJ1ZSkgYXMgbW9ja19mb286CisgICAgLi4uICAgbW9ja19mb28ucmV0dXJuX3ZhbHVlID0gJ2ZvbycKKyAgICAuLi4gICBmb28gPSBGb28oKQorICAgIC4uLiAgIGZvby5mb28oKQorICAgIC4uLgorICAgICdmb28nCisgICAgPj4+IG1vY2tfZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGZvbykKKworSWYgd2UgZG9uJ3QgdXNlIGBhdXRvc3BlYz1UcnVlYCB0aGVuIHRoZSB1bmJvdW5kIG1ldGhvZCBpcyBwYXRjaGVkIG91dAord2l0aCBhIE1vY2sgaW5zdGFuY2UgaW5zdGVhZCwgYW5kIGlzbid0IGNhbGxlZCB3aXRoIGBzZWxmYC4KKworCitDaGVja2luZyBtdWx0aXBsZSBjYWxscyB3aXRoIG1vY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCittb2NrIGhhcyBhIG5pY2UgQVBJIGZvciBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBob3cgeW91ciBtb2NrIG9iamVjdHMgYXJlIHVzZWQuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLmZvb19iYXIucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgID4+PiBtb2NrLmZvb19iYXIoJ2JheicsIHNwYW09J2VnZ3MnKQorICAgID4+PiBtb2NrLmZvb19iYXIuYXNzZXJ0X2NhbGxlZF93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKworSWYgeW91ciBtb2NrIGlzIG9ubHkgYmVpbmcgY2FsbGVkIG9uY2UgeW91IGNhbiB1c2UgdGhlCis6bWV0aDpgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIG1ldGhvZCB0aGF0IGFsc28gYXNzZXJ0cyB0aGF0IHRoZQorOmF0dHI6YGNhbGxfY291bnRgIGlzIG9uZS4KKworICAgID4+PiBtb2NrLmZvb19iYXIuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JheicsIHNwYW09J2VnZ3MnKQorICAgID4+PiBtb2NrLmZvb19iYXIoKQorICAgID4+PiBtb2NrLmZvb19iYXIuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JheicsIHNwYW09J2VnZ3MnKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBvbmNlLiBDYWxsZWQgMiB0aW1lcy4KKworQm90aCBgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgYGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCBtYWtlIGFzc2VydGlvbnMgYWJvdXQKK3RoZSAqbW9zdCByZWNlbnQqIGNhbGwuIElmIHlvdXIgbW9jayBpcyBnb2luZyB0byBiZSBjYWxsZWQgc2V2ZXJhbCB0aW1lcywgYW5kCit5b3Ugd2FudCB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgKmFsbCogdGhvc2UgY2FsbHMgeW91IGNhbiB1c2UKKzphdHRyOmB+TW9jay5jYWxsX2FyZ3NfbGlzdGA6CisKKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soMSwgMiwgMykKKyAgICA+Pj4gbW9jayg0LCA1LCA2KQorICAgID4+PiBtb2NrKCkKKyAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdAorICAgIFtjYWxsKDEsIDIsIDMpLCBjYWxsKDQsIDUsIDYpLCBjYWxsKCldCisKK1RoZSA6ZGF0YTpgY2FsbGAgaGVscGVyIG1ha2VzIGl0IGVhc3kgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0IHRoZXNlIGNhbGxzLiBZb3UKK2NhbiBidWlsZCB1cCBhIGxpc3Qgb2YgZXhwZWN0ZWQgY2FsbHMgYW5kIGNvbXBhcmUgaXQgdG8gYGNhbGxfYXJnc19saXN0YC4gVGhpcworbG9va3MgcmVtYXJrYWJseSBzaW1pbGFyIHRvIHRoZSByZXByIG9mIHRoZSBgY2FsbF9hcmdzX2xpc3RgOgorCisgICAgPj4+IGV4cGVjdGVkID0gW2NhbGwoMSwgMiwgMyksIGNhbGwoNCwgNSwgNiksIGNhbGwoKV0KKyAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdCA9PSBleHBlY3RlZAorICAgIFRydWUKKworCitDb3Bpbmcgd2l0aCBtdXRhYmxlIGFyZ3VtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW5vdGhlciBzaXR1YXRpb24gaXMgcmFyZSwgYnV0IGNhbiBiaXRlIHlvdSwgaXMgd2hlbiB5b3VyIG1vY2sgaXMgY2FsbGVkIHdpdGgKK211dGFibGUgYXJndW1lbnRzLiBgY2FsbF9hcmdzYCBhbmQgYGNhbGxfYXJnc19saXN0YCBzdG9yZSAqcmVmZXJlbmNlcyogdG8gdGhlCithcmd1bWVudHMuIElmIHRoZSBhcmd1bWVudHMgYXJlIG11dGF0ZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdCB0aGVuIHlvdSBjYW4gbm8KK2xvbmdlciBtYWtlIGFzc2VydGlvbnMgYWJvdXQgd2hhdCB0aGUgdmFsdWVzIHdlcmUgd2hlbiB0aGUgbW9jayB3YXMgY2FsbGVkLgorCitIZXJlJ3Mgc29tZSBleGFtcGxlIGNvZGUgdGhhdCBzaG93cyB0aGUgcHJvYmxlbS4gSW1hZ2luZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucworZGVmaW5lZCBpbiAnbXltb2R1bGUnOjoKKworICAgIGRlZiBmcm9iKHZhbCk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBncm9iKHZhbCk6CisgICAgICAgICJGaXJzdCBmcm9iIGFuZCB0aGVuIGNsZWFyIHZhbCIKKyAgICAgICAgZnJvYih2YWwpCisgICAgICAgIHZhbC5jbGVhcigpCisKK1doZW4gd2UgdHJ5IHRvIHRlc3QgdGhhdCBgZ3JvYmAgY2FsbHMgYGZyb2JgIHdpdGggdGhlIGNvcnJlY3QgYXJndW1lbnQgbG9vaword2hhdCBoYXBwZW5zOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLmZyb2InKSBhcyBtb2NrX2Zyb2I6CisgICAgLi4uICAgICB2YWwgPSBzZXQoWzZdKQorICAgIC4uLiAgICAgbXltb2R1bGUuZ3JvYih2YWwpCisgICAgLi4uCisgICAgPj4+IHZhbAorICAgIHNldChbXSkKKyAgICA+Pj4gbW9ja19mcm9iLmFzc2VydF9jYWxsZWRfd2l0aChzZXQoWzZdKSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZDogKChzZXQoWzZdKSwpLCB7fSkKKyAgICBDYWxsZWQgd2l0aDogKChzZXQoW10pLCksIHt9KQorCitPbmUgcG9zc2liaWxpdHkgd291bGQgYmUgZm9yIG1vY2sgdG8gY29weSB0aGUgYXJndW1lbnRzIHlvdSBwYXNzIGluLiBUaGlzCitjb3VsZCB0aGVuIGNhdXNlIHByb2JsZW1zIGlmIHlvdSBkbyBhc3NlcnRpb25zIHRoYXQgcmVseSBvbiBvYmplY3QgaWRlbnRpdHkKK2ZvciBlcXVhbGl0eS4KKworSGVyZSdzIG9uZSBzb2x1dGlvbiB0aGF0IHVzZXMgdGhlIDphdHRyOmBzaWRlX2VmZmVjdGAKK2Z1bmN0aW9uYWxpdHkuIElmIHlvdSBwcm92aWRlIGEgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBmb3IgYSBtb2NrIHRoZW4KK2BzaWRlX2VmZmVjdGAgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgc2FtZSBhcmdzIGFzIHRoZSBtb2NrLiBUaGlzIGdpdmVzIHVzIGFuCitvcHBvcnR1bml0eSB0byBjb3B5IHRoZSBhcmd1bWVudHMgYW5kIHN0b3JlIHRoZW0gZm9yIGxhdGVyIGFzc2VydGlvbnMuIEluIHRoaXMKK2V4YW1wbGUgSSdtIHVzaW5nICphbm90aGVyKiBtb2NrIHRvIHN0b3JlIHRoZSBhcmd1bWVudHMgc28gdGhhdCBJIGNhbiB1c2UgdGhlCittb2NrIG1ldGhvZHMgZm9yIGRvaW5nIHRoZSBhc3NlcnRpb24uIEFnYWluIGEgaGVscGVyIGZ1bmN0aW9uIHNldHMgdGhpcyB1cCBmb3IKK21lLgorCisgICAgPj4+IGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKKyAgICA+Pj4gZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBwYXRjaCwgREVGQVVMVAorICAgID4+PiBkZWYgY29weV9jYWxsX2FyZ3MobW9jayk6CisgICAgLi4uICAgICBuZXdfbW9jayA9IE1vY2soKQorICAgIC4uLiAgICAgZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MpCisgICAgLi4uICAgICAgICAga3dhcmdzID0gZGVlcGNvcHkoa3dhcmdzKQorICAgIC4uLiAgICAgICAgIG5ld19tb2NrKCphcmdzLCAqKmt3YXJncykKKyAgICAuLi4gICAgICAgICByZXR1cm4gREVGQVVMVAorICAgIC4uLiAgICAgbW9jay5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICAgLi4uICAgICByZXR1cm4gbmV3X21vY2sKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuZnJvYicpIGFzIG1vY2tfZnJvYjoKKyAgICAuLi4gICAgIG5ld19tb2NrID0gY29weV9jYWxsX2FyZ3MobW9ja19mcm9iKQorICAgIC4uLiAgICAgdmFsID0gc2V0KFs2XSkKKyAgICAuLi4gICAgIG15bW9kdWxlLmdyb2IodmFsKQorICAgIC4uLgorICAgID4+PiBuZXdfbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoc2V0KFs2XSkpCisgICAgPj4+IG5ld19tb2NrLmNhbGxfYXJncworICAgIGNhbGwoc2V0KFs2XSkpCisKK2Bjb3B5X2NhbGxfYXJnc2AgaXMgY2FsbGVkIHdpdGggdGhlIG1vY2sgdGhhdCB3aWxsIGJlIGNhbGxlZC4gSXQgcmV0dXJucyBhIG5ldworbW9jayB0aGF0IHdlIGRvIHRoZSBhc3NlcnRpb24gb24uIFRoZSBgc2lkZV9lZmZlY3RgIGZ1bmN0aW9uIG1ha2VzIGEgY29weSBvZgordGhlIGFyZ3MgYW5kIGNhbGxzIG91ciBgbmV3X21vY2tgIHdpdGggdGhlIGNvcHkuCisKKy4uIG5vdGU6OgorCisgICAgSWYgeW91ciBtb2NrIGlzIG9ubHkgZ29pbmcgdG8gYmUgdXNlZCBvbmNlIHRoZXJlIGlzIGFuIGVhc2llciB3YXkgb2YKKyAgICBjaGVja2luZyBhcmd1bWVudHMgYXQgdGhlIHBvaW50IHRoZXkgYXJlIGNhbGxlZC4gWW91IGNhbiBzaW1wbHkgZG8gdGhlCisgICAgY2hlY2tpbmcgaW5zaWRlIGEgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbi4KKworICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KGFyZyk6CisgICAgICAgIC4uLiAgICAgYXNzZXJ0IGFyZyA9PSBzZXQoWzZdKQorICAgICAgICAuLi4KKyAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgICAgICA+Pj4gbW9jayhzZXQoWzZdKSkKKyAgICAgICAgPj4+IG1vY2soc2V0KCkpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgIC4uLgorICAgICAgICBBc3NlcnRpb25FcnJvcgorCitBbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBzdWJjbGFzcyBvZiBgTW9ja2Agb3IgYE1hZ2ljTW9ja2AgdGhhdAorY29waWVzICh1c2luZyA6ZnVuYzpgY29weS5kZWVwY29weWApIHRoZSBhcmd1bWVudHMuCitIZXJlJ3MgYW4gZXhhbXBsZSBpbXBsZW1lbnRhdGlvbjoKKworICAgID4+PiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CisgICAgPj4+IGNsYXNzIENvcHlpbmdNb2NrKE1hZ2ljTW9jayk6CisgICAgLi4uICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAuLi4gICAgICAgICBhcmdzID0gZGVlcGNvcHkoYXJncykKKyAgICAuLi4gICAgICAgICBrd2FyZ3MgPSBkZWVwY29weShrd2FyZ3MpCisgICAgLi4uICAgICAgICAgcmV0dXJuIHN1cGVyKENvcHlpbmdNb2NrLCBzZWxmKS5fX2NhbGxfXygqYXJncywgKiprd2FyZ3MpCisgICAgLi4uCisgICAgPj4+IGMgPSBDb3B5aW5nTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gYXJnID0gc2V0KCkKKyAgICA+Pj4gYyhhcmcpCisgICAgPj4+IGFyZy5hZGQoMSkKKyAgICA+Pj4gYy5hc3NlcnRfY2FsbGVkX3dpdGgoc2V0KCkpCisgICAgPj4+IGMuYXNzZXJ0X2NhbGxlZF93aXRoKGFyZykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCBjYWxsOiBtb2NrKHNldChbMV0pKQorICAgIEFjdHVhbCBjYWxsOiBtb2NrKHNldChbXSkpCisgICAgPj4+IGMuZm9vCisgICAgPENvcHlpbmdNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KKworV2hlbiB5b3Ugc3ViY2xhc3MgYE1vY2tgIG9yIGBNYWdpY01vY2tgIGFsbCBkeW5hbWljYWxseSBjcmVhdGVkIGF0dHJpYnV0ZXMsCithbmQgdGhlIGByZXR1cm5fdmFsdWVgIHdpbGwgdXNlIHlvdXIgc3ViY2xhc3MgYXV0b21hdGljYWxseS4gVGhhdCBtZWFucyBhbGwKK2NoaWxkcmVuIG9mIGEgYENvcHlpbmdNb2NrYCB3aWxsIGFsc28gaGF2ZSB0aGUgdHlwZSBgQ29weWluZ01vY2tgLgorCisKK05lc3RpbmcgUGF0Y2hlcworLS0tLS0tLS0tLS0tLS0tCisKK1VzaW5nIHBhdGNoIGFzIGEgY29udGV4dCBtYW5hZ2VyIGlzIG5pY2UsIGJ1dCBpZiB5b3UgZG8gbXVsdGlwbGUgcGF0Y2hlcyB5b3UKK2NhbiBlbmQgdXAgd2l0aCBuZXN0ZWQgd2l0aCBzdGF0ZW1lbnRzIGluZGVudGluZyBmdXJ0aGVyIGFuZCBmdXJ0aGVyIHRvIHRoZQorcmlnaHQ6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAuLi4gICAgICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5Gb28nKSBhcyBtb2NrX2ZvbzoKKyAgICAuLi4gICAgICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuQmFyJykgYXMgbW9ja19iYXI6CisgICAgLi4uICAgICAgICAgICAgICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5TcGFtJykgYXMgbW9ja19zcGFtOgorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBteW1vZHVsZS5Gb28gaXMgbW9ja19mb28KKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbXltb2R1bGUuQmFyIGlzIG1vY2tfYmFyCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLlNwYW0gaXMgbW9ja19zcGFtCisgICAgLi4uCisgICAgPj4+IG9yaWdpbmFsID0gbXltb2R1bGUuRm9vCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS50ZXN0X2ZvbygpCisgICAgPj4+IGFzc2VydCBteW1vZHVsZS5Gb28gaXMgb3JpZ2luYWwKKworV2l0aCB1bml0dGVzdCBgY2xlYW51cGAgZnVuY3Rpb25zIGFuZCB0aGUgOnJlZjpgc3RhcnQtYW5kLXN0b3BgIHdlIGNhbgorYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgd2l0aG91dCB0aGUgbmVzdGVkIGluZGVudGF0aW9uLiBBIHNpbXBsZSBoZWxwZXIKK21ldGhvZCwgYGNyZWF0ZV9wYXRjaGAsIHB1dHMgdGhlIHBhdGNoIGluIHBsYWNlIGFuZCByZXR1cm5zIHRoZSBjcmVhdGVkIG1vY2sKK2ZvciB1czoKKworICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBuYW1lKToKKyAgICAuLi4gICAgICAgICBwYXRjaGVyID0gcGF0Y2gobmFtZSkKKyAgICAuLi4gICAgICAgICB0aGluZyA9IHBhdGNoZXIuc3RhcnQoKQorICAgIC4uLiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisgICAgLi4uICAgICAgICAgcmV0dXJuIHRoaW5nCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgbW9ja19mb28gPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuRm9vJykKKyAgICAuLi4gICAgICAgICBtb2NrX2JhciA9IHNlbGYuY3JlYXRlX3BhdGNoKCdteW1vZHVsZS5CYXInKQorICAgIC4uLiAgICAgICAgIG1vY2tfc3BhbSA9IHNlbGYuY3JlYXRlX3BhdGNoKCdteW1vZHVsZS5TcGFtJykKKyAgICAuLi4KKyAgICAuLi4gICAgICAgICBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG1vY2tfZm9vCisgICAgLi4uICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkJhciBpcyBtb2NrX2JhcgorICAgIC4uLiAgICAgICAgIGFzc2VydCBteW1vZHVsZS5TcGFtIGlzIG1vY2tfc3BhbQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IG15bW9kdWxlLkZvbworICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykucnVuKCkKKyAgICA+Pj4gYXNzZXJ0IG15bW9kdWxlLkZvbyBpcyBvcmlnaW5hbAorCisKK01vY2tpbmcgYSBkaWN0aW9uYXJ5IHdpdGggTWFnaWNNb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3UgbWF5IHdhbnQgdG8gbW9jayBhIGRpY3Rpb25hcnksIG9yIG90aGVyIGNvbnRhaW5lciBvYmplY3QsIHJlY29yZGluZyBhbGwKK2FjY2VzcyB0byBpdCB3aGlsc3QgaGF2aW5nIGl0IHN0aWxsIGJlaGF2ZSBsaWtlIGEgZGljdGlvbmFyeS4KKworV2UgY2FuIGRvIHRoaXMgd2l0aCA6Y2xhc3M6YE1hZ2ljTW9ja2AsIHdoaWNoIHdpbGwgYmVoYXZlIGxpa2UgYSBkaWN0aW9uYXJ5LAorYW5kIHVzaW5nIDpkYXRhOmB+TW9jay5zaWRlX2VmZmVjdGAgdG8gZGVsZWdhdGUgZGljdGlvbmFyeSBhY2Nlc3MgdG8gYSByZWFsCit1bmRlcmx5aW5nIGRpY3Rpb25hcnkgdGhhdCBpcyB1bmRlciBvdXIgY29udHJvbC4KKworV2hlbiB0aGUgYF9fZ2V0aXRlbV9fYCBhbmQgYF9fc2V0aXRlbV9fYCBtZXRob2RzIG9mIG91ciBgTWFnaWNNb2NrYCBhcmUgY2FsbGVkCisobm9ybWFsIGRpY3Rpb25hcnkgYWNjZXNzKSB0aGVuIGBzaWRlX2VmZmVjdGAgaXMgY2FsbGVkIHdpdGggdGhlIGtleSAoYW5kIGluCit0aGUgY2FzZSBvZiBgX19zZXRpdGVtX19gIHRoZSB2YWx1ZSB0b28pLiBXZSBjYW4gYWxzbyBjb250cm9sIHdoYXQgaXMgcmV0dXJuZWQuCisKK0FmdGVyIHRoZSBgTWFnaWNNb2NrYCBoYXMgYmVlbiB1c2VkIHdlIGNhbiB1c2UgYXR0cmlidXRlcyBsaWtlCis6ZGF0YTpgfk1vY2suY2FsbF9hcmdzX2xpc3RgIHRvIGFzc2VydCBhYm91dCBob3cgdGhlIGRpY3Rpb25hcnkgd2FzIHVzZWQ6CisKKyAgICA+Pj4gbXlfZGljdCA9IHsnYSc6IDEsICdiJzogMiwgJ2MnOiAzfQorICAgID4+PiBkZWYgZ2V0aXRlbShuYW1lKToKKyAgICAuLi4gICAgICByZXR1cm4gbXlfZGljdFtuYW1lXQorICAgIC4uLgorICAgID4+PiBkZWYgc2V0aXRlbShuYW1lLCB2YWwpOgorICAgIC4uLiAgICAgbXlfZGljdFtuYW1lXSA9IHZhbAorICAgIC4uLgorICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9jay5fX2dldGl0ZW1fXy5zaWRlX2VmZmVjdCA9IGdldGl0ZW0KKyAgICA+Pj4gbW9jay5fX3NldGl0ZW1fXy5zaWRlX2VmZmVjdCA9IHNldGl0ZW0KKworLi4gbm90ZTo6CisKKyAgICBBbiBhbHRlcm5hdGl2ZSB0byB1c2luZyBgTWFnaWNNb2NrYCBpcyB0byB1c2UgYE1vY2tgIGFuZCAqb25seSogcHJvdmlkZQorICAgIHRoZSBtYWdpYyBtZXRob2RzIHlvdSBzcGVjaWZpY2FsbHkgd2FudDoKKworICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICA+Pj4gbW9jay5fX3NldGl0ZW1fXyA9IE1vY2soc2lkZV9lZmZlY3Q9Z2V0aXRlbSkKKyAgICAgICAgPj4+IG1vY2suX19nZXRpdGVtX18gPSBNb2NrKHNpZGVfZWZmZWN0PXNldGl0ZW0pCisKKyAgICBBICp0aGlyZCogb3B0aW9uIGlzIHRvIHVzZSBgTWFnaWNNb2NrYCBidXQgcGFzc2luZyBpbiBgZGljdGAgYXMgdGhlIGBzcGVjYAorICAgIChvciBgc3BlY19zZXRgKSBhcmd1bWVudCBzbyB0aGF0IHRoZSBgTWFnaWNNb2NrYCBjcmVhdGVkIG9ubHkgaGFzCisgICAgZGljdGlvbmFyeSBtYWdpYyBtZXRob2RzIGF2YWlsYWJsZToKKworICAgICAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzcGVjX3NldD1kaWN0KQorICAgICAgICA+Pj4gbW9jay5fX2dldGl0ZW1fXy5zaWRlX2VmZmVjdCA9IGdldGl0ZW0KKyAgICAgICAgPj4+IG1vY2suX19zZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBzZXRpdGVtCisKK1dpdGggdGhlc2Ugc2lkZSBlZmZlY3QgZnVuY3Rpb25zIGluIHBsYWNlLCB0aGUgYG1vY2tgIHdpbGwgYmVoYXZlIGxpa2UgYSBub3JtYWwKK2RpY3Rpb25hcnkgYnV0IHJlY29yZGluZyB0aGUgYWNjZXNzLiBJdCBldmVuIHJhaXNlcyBhIGBLZXlFcnJvcmAgaWYgeW91IHRyeQordG8gYWNjZXNzIGEga2V5IHRoYXQgZG9lc24ndCBleGlzdC4KKworICAgID4+PiBtb2NrWydhJ10KKyAgICAxCisgICAgPj4+IG1vY2tbJ2MnXQorICAgIDMKKyAgICA+Pj4gbW9ja1snZCddCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBLZXlFcnJvcjogJ2QnCisgICAgPj4+IG1vY2tbJ2InXSA9ICdmaXNoJworICAgID4+PiBtb2NrWydkJ10gPSAnZWdncycKKyAgICA+Pj4gbW9ja1snYiddCisgICAgJ2Zpc2gnCisgICAgPj4+IG1vY2tbJ2QnXQorICAgICdlZ2dzJworCitBZnRlciBpdCBoYXMgYmVlbiB1c2VkIHlvdSBjYW4gbWFrZSBhc3NlcnRpb25zIGFib3V0IHRoZSBhY2Nlc3MgdXNpbmcgdGhlIG5vcm1hbAorbW9jayBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgorCisgICAgPj4+IG1vY2suX19nZXRpdGVtX18uY2FsbF9hcmdzX2xpc3QKKyAgICBbY2FsbCgnYScpLCBjYWxsKCdjJyksIGNhbGwoJ2QnKSwgY2FsbCgnYicpLCBjYWxsKCdkJyldCisgICAgPj4+IG1vY2suX19zZXRpdGVtX18uY2FsbF9hcmdzX2xpc3QKKyAgICBbY2FsbCgnYicsICdmaXNoJyksIGNhbGwoJ2QnLCAnZWdncycpXQorICAgID4+PiBteV9kaWN0CisgICAgeydhJzogMSwgJ2MnOiAzLCAnYic6ICdmaXNoJywgJ2QnOiAnZWdncyd9CisKKworTW9jayBzdWJjbGFzc2VzIGFuZCB0aGVpciBhdHRyaWJ1dGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHZhcmlvdXMgcmVhc29ucyB3aHkgeW91IG1pZ2h0IHdhbnQgdG8gc3ViY2xhc3MgYE1vY2tgLiBPbmUgcmVhc29uCittaWdodCBiZSB0byBhZGQgaGVscGVyIG1ldGhvZHMuIEhlcmUncyBhIHNpbGx5IGV4YW1wbGU6CisKKyAgICA+Pj4gY2xhc3MgTXlNb2NrKE1hZ2ljTW9jayk6CisgICAgLi4uICAgICBkZWYgaGFzX2JlZW5fY2FsbGVkKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBzZWxmLmNhbGxlZAorICAgIC4uLgorICAgID4+PiBteW1vY2sgPSBNeU1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG15bW9jaworICAgIDxNeU1vY2sgaWQ9Jy4uLic+CisgICAgPj4+IG15bW9jay5oYXNfYmVlbl9jYWxsZWQoKQorICAgIEZhbHNlCisgICAgPj4+IG15bW9jaygpCisgICAgPj4+IG15bW9jay5oYXNfYmVlbl9jYWxsZWQoKQorICAgIFRydWUKKworVGhlIHN0YW5kYXJkIGJlaGF2aW91ciBmb3IgYE1vY2tgIGluc3RhbmNlcyBpcyB0aGF0IGF0dHJpYnV0ZXMgYW5kIHRoZSByZXR1cm4KK3ZhbHVlIG1vY2tzIGFyZSBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBtb2NrIHRoZXkgYXJlIGFjY2Vzc2VkIG9uLiBUaGlzIGVuc3VyZXMKK3RoYXQgYE1vY2tgIGF0dHJpYnV0ZXMgYXJlIGBNb2Nrc2AgYW5kIGBNYWdpY01vY2tgIGF0dHJpYnV0ZXMgYXJlIGBNYWdpY01vY2tzYAorWyNdXy4gU28gaWYgeW91J3JlIHN1YmNsYXNzaW5nIHRvIGFkZCBoZWxwZXIgbWV0aG9kcyB0aGVuIHRoZXknbGwgYWxzbyBiZQorYXZhaWxhYmxlIG9uIHRoZSBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWUgbW9jayBvZiBpbnN0YW5jZXMgb2YgeW91cgorc3ViY2xhc3MuCisKKyAgICA+Pj4gbXltb2NrLmZvbworICAgIDxNeU1vY2sgbmFtZT0nbW9jay5mb28nIGlkPScuLi4nPgorICAgID4+PiBteW1vY2suZm9vLmhhc19iZWVuX2NhbGxlZCgpCisgICAgRmFsc2UKKyAgICA+Pj4gbXltb2NrLmZvbygpCisgICAgPE15TW9jayBuYW1lPSdtb2NrLmZvbygpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbXltb2NrLmZvby5oYXNfYmVlbl9jYWxsZWQoKQorICAgIFRydWUKKworU29tZXRpbWVzIHRoaXMgaXMgaW5jb252ZW5pZW50LiBGb3IgZXhhbXBsZSwgYG9uZSB1c2VyCis8aHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9tb2NrL2lzc3Vlcy9kZXRhaWw/aWQ9MTA1PmBfIGlzIHN1YmNsYXNzaW5nIG1vY2sgdG8KK2NyZWF0ZWQgYSBgVHdpc3RlZCBhZGFwdG9yCis8aHR0cDovL3R3aXN0ZWRtYXRyaXguY29tL2RvY3VtZW50cy8xMS4wLjAvYXBpL3R3aXN0ZWQucHl0aG9uLmNvbXBvbmVudHMuaHRtbD5gXy4KK0hhdmluZyB0aGlzIGFwcGxpZWQgdG8gYXR0cmlidXRlcyB0b28gYWN0dWFsbHkgY2F1c2VzIGVycm9ycy4KKworYE1vY2tgIChpbiBhbGwgaXRzIGZsYXZvdXJzKSB1c2VzIGEgbWV0aG9kIGNhbGxlZCBgX2dldF9jaGlsZF9tb2NrYCB0byBjcmVhdGUKK3RoZXNlICJzdWItbW9ja3MiIGZvciBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWVzLiBZb3UgY2FuIHByZXZlbnQgeW91cgorc3ViY2xhc3MgYmVpbmcgdXNlZCBmb3IgYXR0cmlidXRlcyBieSBvdmVycmlkaW5nIHRoaXMgbWV0aG9kLiBUaGUgc2lnbmF0dXJlIGlzCit0aGF0IGl0IHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyAoYCoqa3dhcmdzYCkgd2hpY2ggYXJlIHRoZW4gcGFzc2VkCitvbnRvIHRoZSBtb2NrIGNvbnN0cnVjdG9yOgorCisgICAgPj4+IGNsYXNzIFN1YmNsYXNzKE1hZ2ljTW9jayk6CisgICAgLi4uICAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3dhcmdzKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgIC4uLgorICAgID4+PiBteW1vY2sgPSBTdWJjbGFzcygpCisgICAgPj4+IG15bW9jay5mb28KKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KKyAgICA+Pj4gYXNzZXJ0IGlzaW5zdGFuY2UobXltb2NrLCBTdWJjbGFzcykKKyAgICA+Pj4gYXNzZXJ0IG5vdCBpc2luc3RhbmNlKG15bW9jay5mb28sIFN1YmNsYXNzKQorICAgID4+PiBhc3NlcnQgbm90IGlzaW5zdGFuY2UobXltb2NrKCksIFN1YmNsYXNzKQorCisuLiBbI10gQW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSBhcmUgdGhlIG5vbi1jYWxsYWJsZSBtb2Nrcy4gQXR0cmlidXRlcyB1c2UgdGhlCisgICAgY2FsbGFibGUgdmFyaWFudCBiZWNhdXNlIG90aGVyd2lzZSBub24tY2FsbGFibGUgbW9ja3MgY291bGRuJ3QgaGF2ZSBjYWxsYWJsZQorICAgIG1ldGhvZHMuCisKKworTW9ja2luZyBpbXBvcnRzIHdpdGggcGF0Y2guZGljdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgc2l0dWF0aW9uIHdoZXJlIG1vY2tpbmcgY2FuIGJlIGhhcmQgaXMgd2hlcmUgeW91IGhhdmUgYSBsb2NhbCBpbXBvcnQgaW5zaWRlCithIGZ1bmN0aW9uLiBUaGVzZSBhcmUgaGFyZGVyIHRvIG1vY2sgYmVjYXVzZSB0aGV5IGFyZW4ndCB1c2luZyBhbiBvYmplY3QgZnJvbQordGhlIG1vZHVsZSBuYW1lc3BhY2UgdGhhdCB3ZSBjYW4gcGF0Y2ggb3V0LgorCitHZW5lcmFsbHkgbG9jYWwgaW1wb3J0cyBhcmUgdG8gYmUgYXZvaWRlZC4gVGhleSBhcmUgc29tZXRpbWVzIGRvbmUgdG8gcHJldmVudAorY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBmb3Igd2hpY2ggdGhlcmUgaXMgKnVzdWFsbHkqIGEgbXVjaCBiZXR0ZXIgd2F5IHRvIHNvbHZlCit0aGUgcHJvYmxlbSAocmVmYWN0b3IgdGhlIGNvZGUpIG9yIHRvIHByZXZlbnQgInVwIGZyb250IGNvc3RzIiBieSBkZWxheWluZyB0aGUKK2ltcG9ydC4gVGhpcyBjYW4gYWxzbyBiZSBzb2x2ZWQgaW4gYmV0dGVyIHdheXMgdGhhbiBhbiB1bmNvbmRpdGlvbmFsIGxvY2FsCitpbXBvcnQgKHN0b3JlIHRoZSBtb2R1bGUgYXMgYSBjbGFzcyBvciBtb2R1bGUgYXR0cmlidXRlIGFuZCBvbmx5IGRvIHRoZSBpbXBvcnQKK29uIGZpcnN0IHVzZSkuCisKK1RoYXQgYXNpZGUgdGhlcmUgaXMgYSB3YXkgdG8gdXNlIGBtb2NrYCB0byBhZmZlY3QgdGhlIHJlc3VsdHMgb2YgYW4gaW1wb3J0LgorSW1wb3J0aW5nIGZldGNoZXMgYW4gKm9iamVjdCogZnJvbSB0aGUgYHN5cy5tb2R1bGVzYCBkaWN0aW9uYXJ5LiBOb3RlIHRoYXQgaXQKK2ZldGNoZXMgYW4gKm9iamVjdCosIHdoaWNoIG5lZWQgbm90IGJlIGEgbW9kdWxlLiBJbXBvcnRpbmcgYSBtb2R1bGUgZm9yIHRoZQorZmlyc3QgdGltZSByZXN1bHRzIGluIGEgbW9kdWxlIG9iamVjdCBiZWluZyBwdXQgaW4gYHN5cy5tb2R1bGVzYCwgc28gdXN1YWxseQord2hlbiB5b3UgaW1wb3J0IHNvbWV0aGluZyB5b3UgZ2V0IGEgbW9kdWxlIGJhY2suIFRoaXMgbmVlZCBub3QgYmUgdGhlIGNhc2UKK2hvd2V2ZXIuCisKK1RoaXMgbWVhbnMgeW91IGNhbiB1c2UgOmZ1bmM6YHBhdGNoLmRpY3RgIHRvICp0ZW1wb3JhcmlseSogcHV0IGEgbW9jayBpbiBwbGFjZQoraW4gYHN5cy5tb2R1bGVzYC4gQW55IGltcG9ydHMgd2hpbHN0IHRoaXMgcGF0Y2ggaXMgYWN0aXZlIHdpbGwgZmV0Y2ggdGhlIG1vY2suCitXaGVuIHRoZSBwYXRjaCBpcyBjb21wbGV0ZSAodGhlIGRlY29yYXRlZCBmdW5jdGlvbiBleGl0cywgdGhlIHdpdGggc3RhdGVtZW50Citib2R5IGlzIGNvbXBsZXRlIG9yIGBwYXRjaGVyLnN0b3AoKWAgaXMgY2FsbGVkKSB0aGVuIHdoYXRldmVyIHdhcyB0aGVyZQorcHJldmlvdXNseSB3aWxsIGJlIHJlc3RvcmVkIHNhZmVseS4KKworSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBtb2NrcyBvdXQgdGhlICdmb29ibGUnIG1vZHVsZS4KKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCB7J2Zvb2JsZSc6IG1vY2t9KToKKyAgICAuLi4gICAgaW1wb3J0IGZvb2JsZQorICAgIC4uLiAgICBmb29ibGUuYmxvYigpCisgICAgLi4uCisgICAgPE1vY2sgbmFtZT0nbW9jay5ibG9iKCknIGlkPScuLi4nPgorICAgID4+PiBhc3NlcnQgJ2Zvb2JsZScgbm90IGluIHN5cy5tb2R1bGVzCisgICAgPj4+IG1vY2suYmxvYi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKK0FzIHlvdSBjYW4gc2VlIHRoZSBgaW1wb3J0IGZvb2JsZWAgc3VjY2VlZHMsIGJ1dCBvbiBleGl0IHRoZXJlIGlzIG5vICdmb29ibGUnCitsZWZ0IGluIGBzeXMubW9kdWxlc2AuCisKK1RoaXMgYWxzbyB3b3JrcyBmb3IgdGhlIGBmcm9tIG1vZHVsZSBpbXBvcnQgbmFtZWAgZm9ybToKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCB7J2Zvb2JsZSc6IG1vY2t9KToKKyAgICAuLi4gICAgZnJvbSBmb29ibGUgaW1wb3J0IGJsb2IKKyAgICAuLi4gICAgYmxvYi5ibGlwKCkKKyAgICAuLi4KKyAgICA8TW9jayBuYW1lPSdtb2NrLmJsb2IuYmxpcCgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5ibG9iLmJsaXAuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCitXaXRoIHNsaWdodGx5IG1vcmUgd29yayB5b3UgY2FuIGFsc28gbW9jayBwYWNrYWdlIGltcG9ydHM6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2R1bGVzID0geydwYWNrYWdlJzogbW9jaywgJ3BhY2thZ2UubW9kdWxlJzogbW9jay5tb2R1bGV9CisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBtb2R1bGVzKToKKyAgICAuLi4gICAgZnJvbSBwYWNrYWdlLm1vZHVsZSBpbXBvcnQgZm9vYmxlCisgICAgLi4uICAgIGZvb2JsZSgpCisgICAgLi4uCisgICAgPE1vY2sgbmFtZT0nbW9jay5tb2R1bGUuZm9vYmxlKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLm1vZHVsZS5mb29ibGUuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisKK1RyYWNraW5nIG9yZGVyIG9mIGNhbGxzIGFuZCBsZXNzIHZlcmJvc2UgY2FsbCBhc3NlcnRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmBNb2NrYCBjbGFzcyBhbGxvd3MgeW91IHRvIHRyYWNrIHRoZSAqb3JkZXIqIG9mIG1ldGhvZCBjYWxscyBvbgoreW91ciBtb2NrIG9iamVjdHMgdGhyb3VnaCB0aGUgOmF0dHI6YH5Nb2NrLm1ldGhvZF9jYWxsc2AgYXR0cmlidXRlLiBUaGlzCitkb2Vzbid0IGFsbG93IHlvdSB0byB0cmFjayB0aGUgb3JkZXIgb2YgY2FsbHMgYmV0d2VlbiBzZXBhcmF0ZSBtb2NrIG9iamVjdHMsCitob3dldmVyIHdlIGNhbiB1c2UgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIHRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0LgorCitCZWNhdXNlIG1vY2tzIHRyYWNrIGNhbGxzIHRvIGNoaWxkIG1vY2tzIGluIGBtb2NrX2NhbGxzYCwgYW5kIGFjY2Vzc2luZyBhbgorYXJiaXRyYXJ5IGF0dHJpYnV0ZSBvZiBhIG1vY2sgY3JlYXRlcyBhIGNoaWxkIG1vY2ssIHdlIGNhbiBjcmVhdGUgb3VyIHNlcGFyYXRlCittb2NrcyBmcm9tIGEgcGFyZW50IG9uZS4gQ2FsbHMgdG8gdGhvc2UgY2hpbGQgbW9jayB3aWxsIHRoZW4gYWxsIGJlIHJlY29yZGVkLAoraW4gb3JkZXIsIGluIHRoZSBgbW9ja19jYWxsc2Agb2YgdGhlIHBhcmVudDoKKworICAgID4+PiBtYW5hZ2VyID0gTW9jaygpCisgICAgPj4+IG1vY2tfZm9vID0gbWFuYWdlci5mb28KKyAgICA+Pj4gbW9ja19iYXIgPSBtYW5hZ2VyLmJhcgorCisgICAgPj4+IG1vY2tfZm9vLnNvbWV0aGluZygpCisgICAgPE1vY2sgbmFtZT0nbW9jay5mb28uc29tZXRoaW5nKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrX2Jhci5vdGhlci50aGluZygpCisgICAgPE1vY2sgbmFtZT0nbW9jay5iYXIub3RoZXIudGhpbmcoKScgaWQ9Jy4uLic+CisKKyAgICA+Pj4gbWFuYWdlci5tb2NrX2NhbGxzCisgICAgW2NhbGwuZm9vLnNvbWV0aGluZygpLCBjYWxsLmJhci5vdGhlci50aGluZygpXQorCitXZSBjYW4gdGhlbiBhc3NlcnQgYWJvdXQgdGhlIGNhbGxzLCBpbmNsdWRpbmcgdGhlIG9yZGVyLCBieSBjb21wYXJpbmcgd2l0aAordGhlIGBtb2NrX2NhbGxzYCBhdHRyaWJ1dGUgb24gdGhlIG1hbmFnZXIgbW9jazoKKworICAgID4+PiBleHBlY3RlZF9jYWxscyA9IFtjYWxsLmZvby5zb21ldGhpbmcoKSwgY2FsbC5iYXIub3RoZXIudGhpbmcoKV0KKyAgICA+Pj4gbWFuYWdlci5tb2NrX2NhbGxzID09IGV4cGVjdGVkX2NhbGxzCisgICAgVHJ1ZQorCitJZiBgcGF0Y2hgIGlzIGNyZWF0aW5nLCBhbmQgcHV0dGluZyBpbiBwbGFjZSwgeW91ciBtb2NrcyB0aGVuIHlvdSBjYW4gYXR0YWNoCit0aGVtIHRvIGEgbWFuYWdlciBtb2NrIHVzaW5nIHRoZSA6bWV0aDpgfk1vY2suYXR0YWNoX21vY2tgIG1ldGhvZC4gQWZ0ZXIKK2F0dGFjaGluZyBjYWxscyB3aWxsIGJlIHJlY29yZGVkIGluIGBtb2NrX2NhbGxzYCBvZiB0aGUgbWFuYWdlci4KKworICAgID4+PiBtYW5hZ2VyID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuQ2xhc3MxJykgYXMgTW9ja0NsYXNzMToKKyAgICAuLi4gICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLkNsYXNzMicpIGFzIE1vY2tDbGFzczI6CisgICAgLi4uICAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhNb2NrQ2xhc3MxLCAnTW9ja0NsYXNzMScpCisgICAgLi4uICAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhNb2NrQ2xhc3MyLCAnTW9ja0NsYXNzMicpCisgICAgLi4uICAgICAgICAgTW9ja0NsYXNzMSgpLmZvbygpCisgICAgLi4uICAgICAgICAgTW9ja0NsYXNzMigpLmJhcigpCisgICAgLi4uCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLk1vY2tDbGFzczEoKS5mb28oKScgaWQ9Jy4uLic+CisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLk1vY2tDbGFzczIoKS5iYXIoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscworICAgIFtjYWxsLk1vY2tDbGFzczEoKSwKKyAgICAgY2FsbC5Nb2NrQ2xhc3MxKCkuZm9vKCksCisgICAgIGNhbGwuTW9ja0NsYXNzMigpLAorICAgICBjYWxsLk1vY2tDbGFzczIoKS5iYXIoKV0KKworSWYgbWFueSBjYWxscyBoYXZlIGJlZW4gbWFkZSwgYnV0IHlvdSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gYSBwYXJ0aWN1bGFyCitzZXF1ZW5jZSBvZiB0aGVtIHRoZW4gYW4gYWx0ZXJuYXRpdmUgaXMgdG8gdXNlIHRoZQorOm1ldGg6YH5Nb2NrLmFzc2VydF9oYXNfY2FsbHNgIG1ldGhvZC4gVGhpcyB0YWtlcyBhIGxpc3Qgb2YgY2FsbHMgKGNvbnN0cnVjdGVkCit3aXRoIHRoZSA6ZGF0YTpgY2FsbGAgb2JqZWN0KS4gSWYgdGhhdCBzZXF1ZW5jZSBvZiBjYWxscyBhcmUgaW4KKzphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCB0aGVuIHRoZSBhc3NlcnQgc3VjY2VlZHMuCisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0oKS5mb28oKS5iYXIoKS5iYXooKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jaygpLmZvbygpLmJhcigpLmJheigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbS5vbmUoKS50d28oKS50aHJlZSgpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLm9uZSgpLnR3bygpLnRocmVlKCknIGlkPScuLi4nPgorICAgID4+PiBjYWxscyA9IGNhbGwub25lKCkudHdvKCkudGhyZWUoKS5jYWxsX2xpc3QoKQorICAgID4+PiBtLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMpCisKK0V2ZW4gdGhvdWdoIHRoZSBjaGFpbmVkIGNhbGwgYG0ub25lKCkudHdvKCkudGhyZWUoKWAgYXJlbid0IHRoZSBvbmx5IGNhbGxzIHRoYXQKK2hhdmUgYmVlbiBtYWRlIHRvIHRoZSBtb2NrLCB0aGUgYXNzZXJ0IHN0aWxsIHN1Y2NlZWRzLgorCitTb21ldGltZXMgYSBtb2NrIG1heSBoYXZlIHNldmVyYWwgY2FsbHMgbWFkZSB0byBpdCwgYW5kIHlvdSBhcmUgb25seSBpbnRlcmVzdGVkCitpbiBhc3NlcnRpbmcgYWJvdXQgKnNvbWUqIG9mIHRob3NlIGNhbGxzLiBZb3UgbWF5IG5vdCBldmVuIGNhcmUgYWJvdXQgdGhlCitvcmRlci4gSW4gdGhpcyBjYXNlIHlvdSBjYW4gcGFzcyBgYW55X29yZGVyPVRydWVgIHRvIGBhc3NlcnRfaGFzX2NhbGxzYDoKKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbSgxKSwgbS50d28oMiwgMyksIG0uc2V2ZW4oNyksIG0uZmlmdHkoJzUwJykKKyAgICAoLi4uKQorICAgID4+PiBjYWxscyA9IFtjYWxsLmZpZnR5KCc1MCcpLCBjYWxsKDEpLCBjYWxsLnNldmVuKDcpXQorICAgID4+PiBtLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMsIGFueV9vcmRlcj1UcnVlKQorCisKK01vcmUgY29tcGxleCBhcmd1bWVudCBtYXRjaGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSBzYW1lIGJhc2ljIGNvbmNlcHQgYXMgOmRhdGE6YEFOWWAgd2UgY2FuIGltcGxlbWVudCBtYXRjaGVycyB0byBkbyBtb3JlCitjb21wbGV4IGFzc2VydGlvbnMgb24gb2JqZWN0cyB1c2VkIGFzIGFyZ3VtZW50cyB0byBtb2Nrcy4KKworU3VwcG9zZSB3ZSBleHBlY3Qgc29tZSBvYmplY3QgdG8gYmUgcGFzc2VkIHRvIGEgbW9jayB0aGF0IGJ5IGRlZmF1bHQKK2NvbXBhcmVzIGVxdWFsIGJhc2VkIG9uIG9iamVjdCBpZGVudGl0eSAod2hpY2ggaXMgdGhlIFB5dGhvbiBkZWZhdWx0IGZvciB1c2VyCitkZWZpbmVkIGNsYXNzZXMpLiBUbyB1c2UgOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAgd2Ugd291bGQgbmVlZCB0byBwYXNzCitpbiB0aGUgZXhhY3Qgc2FtZSBvYmplY3QuIElmIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gc29tZSBvZiB0aGUgYXR0cmlidXRlcworb2YgdGhpcyBvYmplY3QgdGhlbiB3ZSBjYW4gY3JlYXRlIGEgbWF0Y2hlciB0aGF0IHdpbGwgY2hlY2sgdGhlc2UgYXR0cmlidXRlcworZm9yIHVzLgorCitZb3UgY2FuIHNlZSBpbiB0aGlzIGV4YW1wbGUgaG93IGEgJ3N0YW5kYXJkJyBjYWxsIHRvIGBhc3NlcnRfY2FsbGVkX3dpdGhgIGlzbid0CitzdWZmaWNpZW50OgorCisgICAgPj4+IGNsYXNzIEZvbyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGIpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYSwgc2VsZi5iID0gYSwgYgorICAgIC4uLgorICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jayhGb28oMSwgMikpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKEZvbygxLCAyKSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZDogY2FsbCg8X19tYWluX18uRm9vIG9iamVjdCBhdCAweC4uLj4pCisgICAgQWN0dWFsIGNhbGw6IGNhbGwoPF9fbWFpbl9fLkZvbyBvYmplY3QgYXQgMHguLi4+KQorCitBIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIG91ciBgRm9vYCBjbGFzcyBtaWdodCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKyAgICA+Pj4gZGVmIGNvbXBhcmUoc2VsZiwgb3RoZXIpOgorICAgIC4uLiAgICAgaWYgbm90IHR5cGUoc2VsZikgPT0gdHlwZShvdGhlcik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgLi4uICAgICBpZiBzZWxmLmEgIT0gb3RoZXIuYToKKyAgICAuLi4gICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAuLi4gICAgIGlmIHNlbGYuYiAhPSBvdGhlci5iOgorICAgIC4uLiAgICAgICAgIHJldHVybiBGYWxzZQorICAgIC4uLiAgICAgcmV0dXJuIFRydWUKKyAgICAuLi4KKworQW5kIGEgbWF0Y2hlciBvYmplY3QgdGhhdCBjYW4gdXNlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGxpa2UgdGhpcyBmb3IgaXRzCitlcXVhbGl0eSBvcGVyYXRpb24gd291bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgICAgPj4+IGNsYXNzIE1hdGNoZXIob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21wYXJlLCBzb21lX29iaik6CisgICAgLi4uICAgICAgICAgc2VsZi5jb21wYXJlID0gY29tcGFyZQorICAgIC4uLiAgICAgICAgIHNlbGYuc29tZV9vYmogPSBzb21lX29iagorICAgIC4uLiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShzZWxmLnNvbWVfb2JqLCBvdGhlcikKKyAgICAuLi4KKworUHV0dGluZyBhbGwgdGhpcyB0b2dldGhlcjoKKworICAgID4+PiBtYXRjaF9mb28gPSBNYXRjaGVyKGNvbXBhcmUsIEZvbygxLCAyKSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgobWF0Y2hfZm9vKQorCitUaGUgYE1hdGNoZXJgIGlzIGluc3RhbnRpYXRlZCB3aXRoIG91ciBjb21wYXJlIGZ1bmN0aW9uIGFuZCB0aGUgYEZvb2Agb2JqZWN0Cit3ZSB3YW50IHRvIGNvbXBhcmUgYWdhaW5zdC4gSW4gYGFzc2VydF9jYWxsZWRfd2l0aGAgdGhlIGBNYXRjaGVyYCBlcXVhbGl0eQorbWV0aG9kIHdpbGwgYmUgY2FsbGVkLCB3aGljaCBjb21wYXJlcyB0aGUgb2JqZWN0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aAorYWdhaW5zdCB0aGUgb25lIHdlIGNyZWF0ZWQgb3VyIG1hdGNoZXIgd2l0aC4gSWYgdGhleSBtYXRjaCB0aGVuCitgYXNzZXJ0X2NhbGxlZF93aXRoYCBwYXNzZXMsIGFuZCBpZiB0aGV5IGRvbid0IGFuIGBBc3NlcnRpb25FcnJvcmAgaXMgcmFpc2VkOgorCisgICAgPj4+IG1hdGNoX3dyb25nID0gTWF0Y2hlcihjb21wYXJlLCBGb28oMywgNCkpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKG1hdGNoX3dyb25nKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkOiAoKDxNYXRjaGVyIG9iamVjdCBhdCAweC4uLj4sKSwge30pCisgICAgQ2FsbGVkIHdpdGg6ICgoPEZvbyBvYmplY3QgYXQgMHguLi4+LCksIHt9KQorCitXaXRoIGEgYml0IG9mIHR3ZWFraW5nIHlvdSBjb3VsZCBoYXZlIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHJhaXNlIHRoZQorYEFzc2VydGlvbkVycm9yYCBkaXJlY3RseSBhbmQgcHJvdmlkZSBhIG1vcmUgdXNlZnVsIGZhaWx1cmUgbWVzc2FnZS4KKworQXMgb2YgdmVyc2lvbiAxLjUsIHRoZSBQeXRob24gdGVzdGluZyBsaWJyYXJ5IGBQeUhhbWNyZXN0Cis8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1B5SGFtY3Jlc3Q+YF8gcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5LAordGhhdCBtYXkgYmUgdXNlZnVsIGhlcmUsIGluIHRoZSBmb3JtIG9mIGl0cyBlcXVhbGl0eSBtYXRjaGVyCisoYGhhbWNyZXN0LmxpYnJhcnkuaW50ZWdyYXRpb24ubWF0Y2hfZXF1YWxpdHkKKzxodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9QeUhhbWNyZXN0L2ludGVncmF0aW9uLmh0bWwjaGFtY3Jlc3QubGlicmFyeS5pbnRlZ3JhdGlvbi5tYXRjaF9lcXVhbGl0eT5gXykuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTAwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMCwwICsxLDIyMjUgQEAKKzptb2Q6YHVuaXR0ZXN0Lm1vY2tgIC0tLSBtb2NrIG9iamVjdCBsaWJyYXJ5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisgICA6c3lub3BzaXM6IE1vY2sgb2JqZWN0IGxpYnJhcnkuCisuLiBtb2R1bGVhdXRob3I6OiBNaWNoYWVsIEZvb3JkIDxtaWNoYWVsQHB5dGhvbi5vcmc+CisuLiBjdXJyZW50bW9kdWxlOjogdW5pdHRlc3QubW9jaworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworOm1vZDpgdW5pdHRlc3QubW9ja2AgaXMgYSBsaWJyYXJ5IGZvciB0ZXN0aW5nIGluIFB5dGhvbi4gSXQgYWxsb3dzIHlvdSB0bworcmVwbGFjZSBwYXJ0cyBvZiB5b3VyIHN5c3RlbSB1bmRlciB0ZXN0IHdpdGggbW9jayBvYmplY3RzIGFuZCBtYWtlIGFzc2VydGlvbnMKK2Fib3V0IGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkLgorCitgdW5pdHRlc3QubW9ja2AgcHJvdmlkZXMgYSBjb3JlIDpjbGFzczpgTW9ja2AgY2xhc3MgcmVtb3ZpbmcgdGhlIG5lZWQgdG8KK2NyZWF0ZSBhIGhvc3Qgb2Ygc3R1YnMgdGhyb3VnaG91dCB5b3VyIHRlc3Qgc3VpdGUuIEFmdGVyIHBlcmZvcm1pbmcgYW4KK2FjdGlvbiwgeW91IGNhbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQgd2hpY2ggbWV0aG9kcyAvIGF0dHJpYnV0ZXMgd2VyZSB1c2VkCithbmQgYXJndW1lbnRzIHRoZXkgd2VyZSBjYWxsZWQgd2l0aC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgcmV0dXJuIHZhbHVlcyBhbmQKK3NldCBuZWVkZWQgYXR0cmlidXRlcyBpbiB0aGUgbm9ybWFsIHdheS4KKworQWRkaXRpb25hbGx5LCBtb2NrIHByb3ZpZGVzIGEgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgdGhhdCBoYW5kbGVzIHBhdGNoaW5nCittb2R1bGUgYW5kIGNsYXNzIGxldmVsIGF0dHJpYnV0ZXMgd2l0aGluIHRoZSBzY29wZSBvZiBhIHRlc3QsIGFsb25nIHdpdGgKKzpjb25zdDpgc2VudGluZWxgIGZvciBjcmVhdGluZyB1bmlxdWUgb2JqZWN0cy4gU2VlIHRoZSBgcXVpY2sgZ3VpZGVgXyBmb3IKK3NvbWUgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSA6Y2xhc3M6YE1vY2tgLCA6Y2xhc3M6YE1hZ2ljTW9ja2AgYW5kCis6ZnVuYzpgcGF0Y2hgLgorCitNb2NrIGlzIHZlcnkgZWFzeSB0byB1c2UgYW5kIGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCA6bW9kOmB1bml0dGVzdGAuIE1vY2sKK2lzIGJhc2VkIG9uIHRoZSAnYWN0aW9uIC0+IGFzc2VydGlvbicgcGF0dGVybiBpbnN0ZWFkIG9mIGAncmVjb3JkIC0+IHJlcGxheSdgCit1c2VkIGJ5IG1hbnkgbW9ja2luZyBmcmFtZXdvcmtzLgorCitUaGVyZSBpcyBhIGJhY2twb3J0IG9mIGB1bml0dGVzdC5tb2NrYCBmb3IgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24sCithdmFpbGFibGUgYXMgYG1vY2sgb24gUHlQSSA8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL21vY2s+YF8uCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3VuaXR0ZXN0L21vY2sucHlgCisKKworUXVpY2sgR3VpZGUKKy0tLS0tLS0tLS0tCisKKzpjbGFzczpgTW9ja2AgYW5kIDpjbGFzczpgTWFnaWNNb2NrYCBvYmplY3RzIGNyZWF0ZSBhbGwgYXR0cmlidXRlcyBhbmQKK21ldGhvZHMgYXMgeW91IGFjY2VzcyB0aGVtIGFuZCBzdG9yZSBkZXRhaWxzIG9mIGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkLiBZb3UKK2NhbiBjb25maWd1cmUgdGhlbSwgdG8gc3BlY2lmeSByZXR1cm4gdmFsdWVzIG9yIGxpbWl0IHdoYXQgYXR0cmlidXRlcyBhcmUKK2F2YWlsYWJsZSwgYW5kIHRoZW4gbWFrZSBhc3NlcnRpb25zIGFib3V0IGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkOgorCisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTWFnaWNNb2NrCisgICAgPj4+IHRoaW5nID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gdGhpbmcubWV0aG9kID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT0zKQorICAgID4+PiB0aGluZy5tZXRob2QoMywgNCwgNSwga2V5PSd2YWx1ZScpCisgICAgMworICAgID4+PiB0aGluZy5tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDMsIDQsIDUsIGtleT0ndmFsdWUnKQorCis6YXR0cjpgc2lkZV9lZmZlY3RgIGFsbG93cyB5b3UgdG8gcGVyZm9ybSBzaWRlIGVmZmVjdHMsIGluY2x1ZGluZyByYWlzaW5nIGFuCitleGNlcHRpb24gd2hlbiBhIG1vY2sgaXMgY2FsbGVkOgorCisgICA+Pj4gbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5RXJyb3IoJ2ZvbycpKQorICAgPj4+IG1vY2soKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgS2V5RXJyb3I6ICdmb28nCisKKyAgID4+PiB2YWx1ZXMgPSB7J2EnOiAxLCAnYic6IDIsICdjJzogM30KKyAgID4+PiBkZWYgc2lkZV9lZmZlY3QoYXJnKToKKyAgIC4uLiAgICAgcmV0dXJuIHZhbHVlc1thcmddCisgICAuLi4KKyAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgID4+PiBtb2NrKCdhJyksIG1vY2soJ2InKSwgbW9jaygnYycpCisgICAoMSwgMiwgMykKKyAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gWzUsIDQsIDMsIDIsIDFdCisgICA+Pj4gbW9jaygpLCBtb2NrKCksIG1vY2soKQorICAgKDUsIDQsIDMpCisKK01vY2sgaGFzIG1hbnkgb3RoZXIgd2F5cyB5b3UgY2FuIGNvbmZpZ3VyZSBpdCBhbmQgY29udHJvbCBpdHMgYmVoYXZpb3VyLiBGb3IKK2V4YW1wbGUgdGhlIGBzcGVjYCBhcmd1bWVudCBjb25maWd1cmVzIHRoZSBtb2NrIHRvIHRha2UgaXRzIHNwZWNpZmljYXRpb24KK2Zyb20gYW5vdGhlciBvYmplY3QuIEF0dGVtcHRpbmcgdG8gYWNjZXNzIGF0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvbiB0aGUgbW9jawordGhhdCBkb24ndCBleGlzdCBvbiB0aGUgc3BlYyB3aWxsIGZhaWwgd2l0aCBhbiBgQXR0cmlidXRlRXJyb3JgLgorCitUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgLyBjb250ZXh0IG1hbmFnZXIgbWFrZXMgaXQgZWFzeSB0byBtb2NrIGNsYXNzZXMgb3IKK29iamVjdHMgaW4gYSBtb2R1bGUgdW5kZXIgdGVzdC4gVGhlIG9iamVjdCB5b3Ugc3BlY2lmeSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYQorbW9jayAob3Igb3RoZXIgb2JqZWN0KSBkdXJpbmcgdGhlIHRlc3QgYW5kIHJlc3RvcmVkIHdoZW4gdGhlIHRlc3QgZW5kczoKKworICAgID4+PiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisgICAgPj4+IEBwYXRjaCgnbW9kdWxlLkNsYXNzTmFtZTInKQorICAgIC4uLiBAcGF0Y2goJ21vZHVsZS5DbGFzc05hbWUxJykKKyAgICAuLi4gZGVmIHRlc3QoTW9ja0NsYXNzMSwgTW9ja0NsYXNzMik6CisgICAgLi4uICAgICBtb2R1bGUuQ2xhc3NOYW1lMSgpCisgICAgLi4uICAgICBtb2R1bGUuQ2xhc3NOYW1lMigpCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMSBpcyBtb2R1bGUuQ2xhc3NOYW1lMQorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczIgaXMgbW9kdWxlLkNsYXNzTmFtZTIKKyAgICAuLi4gICAgIGFzc2VydCBNb2NrQ2xhc3MxLmNhbGxlZAorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczIuY2FsbGVkCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCisuLiBub3RlOjoKKworICAgV2hlbiB5b3UgbmVzdCBwYXRjaCBkZWNvcmF0b3JzIHRoZSBtb2NrcyBhcmUgcGFzc2VkIGluIHRvIHRoZSBkZWNvcmF0ZWQKKyAgIGZ1bmN0aW9uIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwbGllZCAodGhlIG5vcm1hbCAqcHl0aG9uKiBvcmRlciB0aGF0CisgICBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkKS4gVGhpcyBtZWFucyBmcm9tIHRoZSBib3R0b20gdXAsIHNvIGluIHRoZSBleGFtcGxlCisgICBhYm92ZSB0aGUgbW9jayBmb3IgYG1vZHVsZS5DbGFzc05hbWUxYCBpcyBwYXNzZWQgaW4gZmlyc3QuCisKKyAgIFdpdGggYHBhdGNoYCBpdCBtYXR0ZXJzIHRoYXQgeW91IHBhdGNoIG9iamVjdHMgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSB0aGV5CisgICBhcmUgbG9va2VkIHVwLiBUaGlzIGlzIG5vcm1hbGx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGZvciBhIHF1aWNrIGd1aWRlCisgICByZWFkIDpyZWY6YHdoZXJlIHRvIHBhdGNoIDx3aGVyZS10by1wYXRjaD5gLgorCitBcyB3ZWxsIGFzIGEgZGVjb3JhdG9yIGBwYXRjaGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgaW4gYSB3aXRoCitzdGF0ZW1lbnQ6CisKKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoUHJvZHVjdGlvbkNsYXNzLCAnbWV0aG9kJywgcmV0dXJuX3ZhbHVlPU5vbmUpIGFzIG1vY2tfbWV0aG9kOgorICAgIC4uLiAgICAgdGhpbmcgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgIC4uLiAgICAgdGhpbmcubWV0aG9kKDEsIDIsIDMpCisgICAgLi4uCisgICAgPj4+IG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisKKworVGhlcmUgaXMgYWxzbyA6ZnVuYzpgcGF0Y2guZGljdGAgZm9yIHNldHRpbmcgdmFsdWVzIGluIGEgZGljdGlvbmFyeSBqdXN0CitkdXJpbmcgYSBzY29wZSBhbmQgcmVzdG9yaW5nIHRoZSBkaWN0aW9uYXJ5IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZSB3aGVuIHRoZSB0ZXN0CitlbmRzOgorCisgICA+Pj4gZm9vID0geydrZXknOiAndmFsdWUnfQorICAgPj4+IG9yaWdpbmFsID0gZm9vLmNvcHkoKQorICAgPj4+IHdpdGggcGF0Y2guZGljdChmb28sIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30sIGNsZWFyPVRydWUpOgorICAgLi4uICAgICBhc3NlcnQgZm9vID09IHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30KKyAgIC4uLgorICAgPj4+IGFzc2VydCBmb28gPT0gb3JpZ2luYWwKKworTW9jayBzdXBwb3J0cyB0aGUgbW9ja2luZyBvZiBQeXRob24gOnJlZjpgbWFnaWMgbWV0aG9kcyA8bWFnaWMtbWV0aG9kcz5gLiBUaGUKK2Vhc2llc3Qgd2F5IG9mIHVzaW5nIG1hZ2ljIG1ldGhvZHMgaXMgd2l0aCB0aGUgOmNsYXNzOmBNYWdpY01vY2tgIGNsYXNzLiBJdAorYWxsb3dzIHlvdSB0byBkbyB0aGluZ3MgbGlrZToKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9jay5fX3N0cl9fLnJldHVybl92YWx1ZSA9ICdmb29iYXJiYXonCisgICAgPj4+IHN0cihtb2NrKQorICAgICdmb29iYXJiYXonCisgICAgPj4+IG1vY2suX19zdHJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCitNb2NrIGFsbG93cyB5b3UgdG8gYXNzaWduIGZ1bmN0aW9ucyAob3Igb3RoZXIgTW9jayBpbnN0YW5jZXMpIHRvIG1hZ2ljIG1ldGhvZHMKK2FuZCB0aGV5IHdpbGwgYmUgY2FsbGVkIGFwcHJvcHJpYXRlbHkuIFRoZSBgTWFnaWNNb2NrYCBjbGFzcyBpcyBqdXN0IGEgTW9jawordmFyaWFudCB0aGF0IGhhcyBhbGwgb2YgdGhlIG1hZ2ljIG1ldGhvZHMgcHJlLWNyZWF0ZWQgZm9yIHlvdSAod2VsbCwgYWxsIHRoZQordXNlZnVsIG9uZXMgYW55d2F5KS4KKworVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIG1hZ2ljIG1ldGhvZHMgd2l0aCB0aGUgb3JkaW5hcnkgTW9jaworY2xhc3M6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLl9fc3RyX18gPSBNb2NrKHJldHVybl92YWx1ZT0nd2hlZWVlZWUnKQorICAgID4+PiBzdHIobW9jaykKKyAgICAnd2hlZWVlZWUnCisKK0ZvciBlbnN1cmluZyB0aGF0IHRoZSBtb2NrIG9iamVjdHMgaW4geW91ciB0ZXN0cyBoYXZlIHRoZSBzYW1lIGFwaSBhcyB0aGUKK29iamVjdHMgdGhleSBhcmUgcmVwbGFjaW5nLCB5b3UgY2FuIHVzZSA6cmVmOmBhdXRvLXNwZWNjaW5nIDxhdXRvLXNwZWNjaW5nPmAuCitBdXRvLXNwZWNjaW5nIGNhbiBiZSBkb25lIHRocm91Z2ggdGhlIGBhdXRvc3BlY2AgYXJndW1lbnQgdG8gcGF0Y2gsIG9yIHRoZQorOmZ1bmM6YGNyZWF0ZV9hdXRvc3BlY2AgZnVuY3Rpb24uIEF1dG8tc3BlY2NpbmcgY3JlYXRlcyBtb2NrIG9iamVjdHMgdGhhdAoraGF2ZSB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIGFzIHRoZSBvYmplY3RzIHRoZXkgYXJlIHJlcGxhY2luZywgYW5kCithbnkgZnVuY3Rpb25zIGFuZCBtZXRob2RzIChpbmNsdWRpbmcgY29uc3RydWN0b3JzKSBoYXZlIHRoZSBzYW1lIGNhbGwKK3NpZ25hdHVyZSBhcyB0aGUgcmVhbCBvYmplY3QuCisKK1RoaXMgZW5zdXJlcyB0aGF0IHlvdXIgbW9ja3Mgd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyB5b3VyIHByb2R1Y3Rpb24KK2NvZGUgaWYgdGhleSBhcmUgdXNlZCBpbmNvcnJlY3RseToKKworICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgY3JlYXRlX2F1dG9zcGVjCisgICA+Pj4gZGVmIGZ1bmN0aW9uKGEsIGIsIGMpOgorICAgLi4uICAgICBwYXNzCisgICAuLi4KKyAgID4+PiBtb2NrX2Z1bmN0aW9uID0gY3JlYXRlX2F1dG9zcGVjKGZ1bmN0aW9uLCByZXR1cm5fdmFsdWU9J2Zpc2h5JykKKyAgID4+PiBtb2NrX2Z1bmN0aW9uKDEsIDIsIDMpCisgICAnZmlzaHknCisgICA+Pj4gbW9ja19mdW5jdGlvbi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgPj4+IG1vY2tfZnVuY3Rpb24oJ3dyb25nIGFyZ3VtZW50cycpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICBUeXBlRXJyb3I6IDxsYW1iZGE+KCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbikKKworYGNyZWF0ZV9hdXRvc3BlY2AgY2FuIGFsc28gYmUgdXNlZCBvbiBjbGFzc2VzLCB3aGVyZSBpdCBjb3BpZXMgdGhlIHNpZ25hdHVyZSBvZgordGhlIGBfX2luaXRfX2AgbWV0aG9kLCBhbmQgb24gY2FsbGFibGUgb2JqZWN0cyB3aGVyZSBpdCBjb3BpZXMgdGhlIHNpZ25hdHVyZSBvZgordGhlIGBfX2NhbGxfX2AgbWV0aG9kLgorCisKKworVGhlIE1vY2sgQ2xhc3MKKy0tLS0tLS0tLS0tLS0tCisKKworYE1vY2tgIGlzIGEgZmxleGlibGUgbW9jayBvYmplY3QgaW50ZW5kZWQgdG8gcmVwbGFjZSB0aGUgdXNlIG9mIHN0dWJzIGFuZAordGVzdCBkb3VibGVzIHRocm91Z2hvdXQgeW91ciBjb2RlLiBNb2NrcyBhcmUgY2FsbGFibGUgYW5kIGNyZWF0ZSBhdHRyaWJ1dGVzIGFzCituZXcgbW9ja3Mgd2hlbiB5b3UgYWNjZXNzIHRoZW0gWyNdXy4gQWNjZXNzaW5nIHRoZSBzYW1lIGF0dHJpYnV0ZSB3aWxsIGFsd2F5cworcmV0dXJuIHRoZSBzYW1lIG1vY2suIE1vY2tzIHJlY29yZCBob3cgeW91IHVzZSB0aGVtLCBhbGxvd2luZyB5b3UgdG8gbWFrZQorYXNzZXJ0aW9ucyBhYm91dCB3aGF0IHlvdXIgY29kZSBoYXMgZG9uZSB0byB0aGVtLgorCis6Y2xhc3M6YE1hZ2ljTW9ja2AgaXMgYSBzdWJjbGFzcyBvZiBgTW9ja2Agd2l0aCBhbGwgdGhlIG1hZ2ljIG1ldGhvZHMKK3ByZS1jcmVhdGVkIGFuZCByZWFkeSB0byB1c2UuIFRoZXJlIGFyZSBhbHNvIG5vbi1jYWxsYWJsZSB2YXJpYW50cywgdXNlZnVsCit3aGVuIHlvdSBhcmUgbW9ja2luZyBvdXQgb2JqZWN0cyB0aGF0IGFyZW4ndCBjYWxsYWJsZToKKzpjbGFzczpgTm9uQ2FsbGFibGVNb2NrYCBhbmQgOmNsYXNzOmBOb25DYWxsYWJsZU1hZ2ljTW9ja2AKKworVGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9ycyBtYWtlcyBpdCBlYXN5IHRvIHRlbXBvcmFyaWx5IHJlcGxhY2UgY2xhc3NlcworaW4gYSBwYXJ0aWN1bGFyIG1vZHVsZSB3aXRoIGEgYE1vY2tgIG9iamVjdC4gQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgY3JlYXRlCithIGBNYWdpY01vY2tgIGZvciB5b3UuIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBjbGFzcyBvZiBgTW9ja2AgdXNpbmcKK3RoZSBgbmV3X2NhbGxhYmxlYCBhcmd1bWVudCB0byBgcGF0Y2hgLgorCisKKy4uIGNsYXNzOjogTW9jayhzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsICoqa3dhcmdzKQorCisgICAgQ3JlYXRlIGEgbmV3IGBNb2NrYCBvYmplY3QuIGBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cworICAgIHRoYXQgc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBNb2NrIG9iamVjdDoKKworICAgICogYHNwZWNgOiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgYW4gZXhpc3Rpbmcgb2JqZWN0IChhCisgICAgICBjbGFzcyBvciBpbnN0YW5jZSkgdGhhdCBhY3RzIGFzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jayBvYmplY3QuIElmCisgICAgICB5b3UgcGFzcyBpbiBhbiBvYmplY3QgdGhlbiBhIGxpc3Qgb2Ygc3RyaW5ncyBpcyBmb3JtZWQgYnkgY2FsbGluZyBkaXIgb24KKyAgICAgIHRoZSBvYmplY3QgKGV4Y2x1ZGluZyB1bnN1cHBvcnRlZCBtYWdpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzKS4KKyAgICAgIEFjY2Vzc2luZyBhbnkgYXR0cmlidXRlIG5vdCBpbiB0aGlzIGxpc3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgorICAgICAgOmF0dHI6YF9fY2xhc3NfX2AgcmV0dXJucyB0aGUgY2xhc3Mgb2YgdGhlIHNwZWMgb2JqZWN0LiBUaGlzIGFsbG93cyBtb2NrcworICAgICAgdG8gcGFzcyBgaXNpbnN0YW5jZWAgdGVzdHMuCisKKyAgICAqIGBzcGVjX3NldGA6IEEgc3RyaWN0ZXIgdmFyaWFudCBvZiBgc3BlY2AuIElmIHVzZWQsIGF0dGVtcHRpbmcgdG8gKnNldCoKKyAgICAgIG9yIGdldCBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vY2sgdGhhdCBpc24ndCBvbiB0aGUgb2JqZWN0IHBhc3NlZCBhcworICAgICAgYHNwZWNfc2V0YCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAqIGBzaWRlX2VmZmVjdGA6IEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBNb2NrIGlzIGNhbGxlZC4gU2VlCisgICAgICB0aGUgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCBhdHRyaWJ1dGUuIFVzZWZ1bCBmb3IgcmFpc2luZyBleGNlcHRpb25zIG9yCisgICAgICBkeW5hbWljYWxseSBjaGFuZ2luZyByZXR1cm4gdmFsdWVzLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUKKyAgICAgIGFyZ3VtZW50cyBhcyB0aGUgbW9jaywgYW5kIHVubGVzcyBpdCByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAgIEFsdGVybmF0aXZlbHkgYHNpZGVfZWZmZWN0YCBjYW4gYmUgYW4gZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLiBJbgorICAgICAgdGhpcyBjYXNlIHRoZSBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuCisKKyAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KKyAgICAgIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLgorCisgICAgICBBIGBzaWRlX2VmZmVjdGAgY2FuIGJlIGNsZWFyZWQgYnkgc2V0dGluZyBpdCB0byBgTm9uZWAuCisKKyAgICAqIGByZXR1cm5fdmFsdWVgOiBUaGUgdmFsdWUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIEJ5IGRlZmF1bHQKKyAgICAgIHRoaXMgaXMgYSBuZXcgTW9jayAoY3JlYXRlZCBvbiBmaXJzdCBhY2Nlc3MpLiBTZWUgdGhlCisgICAgICA6YXR0cjpgcmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuCisKKyAgICAqIGB3cmFwc2A6IEl0ZW0gZm9yIHRoZSBtb2NrIG9iamVjdCB0byB3cmFwLiBJZiBgd3JhcHNgIGlzIG5vdCBOb25lIHRoZW4KKyAgICAgIGNhbGxpbmcgdGhlIE1vY2sgd2lsbCBwYXNzIHRoZSBjYWxsIHRocm91Z2ggdG8gdGhlIHdyYXBwZWQgb2JqZWN0CisgICAgICAocmV0dXJuaW5nIHRoZSByZWFsIHJlc3VsdCkuIEF0dHJpYnV0ZSBhY2Nlc3Mgb24gdGhlIG1vY2sgd2lsbCByZXR1cm4gYQorICAgICAgTW9jayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgdGhlIHdyYXBwZWQKKyAgICAgIG9iamVjdCAoc28gYXR0ZW1wdGluZyB0byBhY2Nlc3MgYW4gYXR0cmlidXRlIHRoYXQgZG9lc24ndCBleGlzdCB3aWxsCisgICAgICByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgKS4KKworICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0IGByZXR1cm5fdmFsdWVgIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCisgICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCBpcyByZXR1cm5lZCBpbnN0ZWFkLgorCisgICAgKiBgbmFtZWA6IElmIHRoZSBtb2NrIGhhcyBhIG5hbWUgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcHIgb2YgdGhlCisgICAgICBtb2NrLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gVGhlIG5hbWUgaXMgcHJvcGFnYXRlZCB0byBjaGlsZAorICAgICAgbW9ja3MuCisKKyAgICBNb2NrcyBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUKKyAgICB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGl0IGlzIGNyZWF0ZWQuIFNlZSB0aGUKKyAgICA6bWV0aDpgY29uZmlndXJlX21vY2tgIG1ldGhvZCBmb3IgZGV0YWlscy4KKworCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBhIGNvbnZlbmllbnQgd2F5IG9mIGFzc2VydGluZyB0aGF0IGNhbGxzIGFyZSBtYWRlIGluIGEKKyAgICAgICAgcGFydGljdWxhciB3YXk6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoMSwgMiwgMywgdGVzdD0nd293JykKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzLCB0ZXN0PSd3b3cnKQorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZSBhbmQgd2l0aCB0aGUgc3BlY2lmaWVkCisgICAgICAgYXJndW1lbnRzLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsIGJhcj0nYmF6JykKKyAgICAgICAgICAgID4+PiBtb2NrKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCAnbW9jaycgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKworICAgICAgICBUaGUgYXNzZXJ0IHBhc3NlcyBpZiB0aGUgbW9jayBoYXMgKmV2ZXIqIGJlZW4gY2FsbGVkLCB1bmxpa2UKKyAgICAgICAgOm1ldGg6YGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIDptZXRoOmBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgdGhhdAorICAgICAgICBvbmx5IHBhc3MgaWYgdGhlIGNhbGwgaXMgdGhlIG1vc3QgcmVjZW50IG9uZS4KKworICAgICAgICAgICAgPj4+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+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtb2NrJyB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKK0JlY2F1c2UgbW9ja3MgYXV0by1jcmVhdGUgYXR0cmlidXRlcyBvbiBkZW1hbmQsIGFuZCBhbGxvdyB5b3UgdG8gY2FsbCB0aGVtCit3aXRoIGFyYml0cmFyeSBhcmd1bWVudHMsIGlmIHlvdSBtaXNzcGVsbCBvbmUgb2YgdGhlc2UgYXNzZXJ0IG1ldGhvZHMgdGhlbgoreW91ciBhc3NlcnRpb24gaXMgZ29uZToKKworLi4gY29kZS1ibG9jazo6IHB5Y29uCisKKyAgICA+Pj4gbW9jayA9IE1vY2sobmFtZT0nVGhpbmcnLCByZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgID4+PiBtb2NrLmFzc3JldF9jYWxsZWRfb25jZV93aXRoKDQsIDUsIDYpCisKK1lvdXIgdGVzdHMgY2FuIHBhc3Mgc2lsZW50bHkgYW5kIGluY29ycmVjdGx5IGJlY2F1c2Ugb2YgdGhlIHR5cG8uCisKK1RoZSBzZWNvbmQgaXNzdWUgaXMgbW9yZSBnZW5lcmFsIHRvIG1vY2tpbmcuIElmIHlvdSByZWZhY3RvciBzb21lIG9mIHlvdXIKK2NvZGUsIHJlbmFtZSBtZW1iZXJzIGFuZCBzbyBvbiwgYW55IHRlc3RzIGZvciBjb2RlIHRoYXQgaXMgc3RpbGwgdXNpbmcgdGhlCisqb2xkIGFwaSogYnV0IHVzZXMgbW9ja3MgaW5zdGVhZCBvZiB0aGUgcmVhbCBvYmplY3RzIHdpbGwgc3RpbGwgcGFzcy4gVGhpcworbWVhbnMgeW91ciB0ZXN0cyBjYW4gYWxsIHBhc3MgZXZlbiB0aG91Z2ggeW91ciBjb2RlIGlzIGJyb2tlbi4KKworTm90ZSB0aGF0IHRoaXMgaXMgYW5vdGhlciByZWFzb24gd2h5IHlvdSBuZWVkIGludGVncmF0aW9uIHRlc3RzIGFzIHdlbGwgYXMKK3VuaXQgdGVzdHMuIFRlc3RpbmcgZXZlcnl0aGluZyBpbiBpc29sYXRpb24gaXMgYWxsIGZpbmUgYW5kIGRhbmR5LCBidXQgaWYgeW91Citkb24ndCB0ZXN0IGhvdyB5b3VyIHVuaXRzIGFyZSAid2lyZWQgdG9nZXRoZXIiIHRoZXJlIGlzIHN0aWxsIGxvdHMgb2Ygcm9vbQorZm9yIGJ1Z3MgdGhhdCB0ZXN0cyBtaWdodCBoYXZlIGNhdWdodC4KKworYG1vY2tgIGFscmVhZHkgcHJvdmlkZXMgYSBmZWF0dXJlIHRvIGhlbHAgd2l0aCB0aGlzLCBjYWxsZWQgc3BlY2NpbmcuIElmIHlvdQordXNlIGEgY2xhc3Mgb3IgaW5zdGFuY2UgYXMgdGhlIGBzcGVjYCBmb3IgYSBtb2NrIHRoZW4geW91IGNhbiBvbmx5IGFjY2VzcworYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aGF0IGV4aXN0IG9uIHRoZSByZWFsIGNsYXNzOgorCisgICAgPj4+IGZyb20gdXJsbGliIGltcG9ydCByZXF1ZXN0CisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9cmVxdWVzdC5SZXF1ZXN0KQorICAgID4+PiBtb2NrLmFzc3JldF9jYWxsZWRfd2l0aAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IE1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2Fzc3JldF9jYWxsZWRfd2l0aCcKKworVGhlIHNwZWMgb25seSBhcHBsaWVzIHRvIHRoZSBtb2NrIGl0c2VsZiwgc28gd2Ugc3RpbGwgaGF2ZSB0aGUgc2FtZSBpc3N1ZQord2l0aCBhbnkgbWV0aG9kcyBvbiB0aGUgbW9jazoKKworLi4gY29kZS1ibG9jazo6IHB5Y29uCisKKyAgICA+Pj4gbW9jay5oYXNfZGF0YSgpCisgICAgPG1vY2suTW9jayBvYmplY3QgYXQgMHguLi4+CisgICAgPj4+IG1vY2suaGFzX2RhdGEuYXNzcmV0X2NhbGxlZF93aXRoKCkKKworQXV0by1zcGVjY2luZyBzb2x2ZXMgdGhpcyBwcm9ibGVtLiBZb3UgY2FuIGVpdGhlciBwYXNzIGBhdXRvc3BlYz1UcnVlYCB0bworYHBhdGNoYCAvIGBwYXRjaC5vYmplY3RgIG9yIHVzZSB0aGUgYGNyZWF0ZV9hdXRvc3BlY2AgZnVuY3Rpb24gdG8gY3JlYXRlIGEKK21vY2sgd2l0aCBhIHNwZWMuIElmIHlvdSB1c2UgdGhlIGBhdXRvc3BlYz1UcnVlYCBhcmd1bWVudCB0byBgcGF0Y2hgIHRoZW4gdGhlCitvYmplY3QgdGhhdCBpcyBiZWluZyByZXBsYWNlZCB3aWxsIGJlIHVzZWQgYXMgdGhlIHNwZWMgb2JqZWN0LiBCZWNhdXNlIHRoZQorc3BlY2NpbmcgaXMgZG9uZSAibGF6aWx5IiAodGhlIHNwZWMgaXMgY3JlYXRlZCBhcyBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFyZQorYWNjZXNzZWQpIHlvdSBjYW4gdXNlIGl0IHdpdGggdmVyeSBjb21wbGV4IG9yIGRlZXBseSBuZXN0ZWQgb2JqZWN0cyAobGlrZQorbW9kdWxlcyB0aGF0IGltcG9ydCBtb2R1bGVzIHRoYXQgaW1wb3J0IG1vZHVsZXMpIHdpdGhvdXQgYSBiaWcgcGVyZm9ybWFuY2UKK2hpdC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaXQgaW4gdXNlOgorCisgICAgPj4+IGZyb20gdXJsbGliIGltcG9ydCByZXF1ZXN0CisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18ucmVxdWVzdCcsIGF1dG9zcGVjPVRydWUpCisgICAgPj4+IG1vY2tfcmVxdWVzdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiByZXF1ZXN0IGlzIG1vY2tfcmVxdWVzdAorICAgIFRydWUKKyAgICA+Pj4gbW9ja19yZXF1ZXN0LlJlcXVlc3QKKyAgICA8TWFnaWNNb2NrIG5hbWU9J3JlcXVlc3QuUmVxdWVzdCcgc3BlYz0nUmVxdWVzdCcgaWQ9Jy4uLic+CisKK1lvdSBjYW4gc2VlIHRoYXQgYHJlcXVlc3QuUmVxdWVzdGAgaGFzIGEgc3BlYy4gYHJlcXVlc3QuUmVxdWVzdGAgdGFrZXMgdHdvCithcmd1bWVudHMgaW4gdGhlIGNvbnN0cnVjdG9yIChvbmUgb2Ygd2hpY2ggaXMgYHNlbGZgKS4gSGVyZSdzIHdoYXQgaGFwcGVucyBpZgord2UgdHJ5IHRvIGNhbGwgaXQgaW5jb3JyZWN0bHk6CisKKyAgICA+Pj4gcmVxID0gcmVxdWVzdC5SZXF1ZXN0KCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIFR5cGVFcnJvcjogPGxhbWJkYT4oKSB0YWtlcyBhdCBsZWFzdCAyIGFyZ3VtZW50cyAoMSBnaXZlbikKKworVGhlIHNwZWMgYWxzbyBhcHBsaWVzIHRvIGluc3RhbnRpYXRlZCBjbGFzc2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YKK3NwZWNjZWQgbW9ja3MpOgorCisgICAgPj4+IHJlcSA9IHJlcXVlc3QuUmVxdWVzdCgnZm9vJykKKyAgICA+Pj4gcmVxCisgICAgPE5vbkNhbGxhYmxlTWFnaWNNb2NrIG5hbWU9J3JlcXVlc3QuUmVxdWVzdCgpJyBzcGVjPSdSZXF1ZXN0JyBpZD0nLi4uJz4KKworYFJlcXVlc3RgIG9iamVjdHMgYXJlIG5vdCBjYWxsYWJsZSwgc28gdGhlIHJldHVybiB2YWx1ZSBvZiBpbnN0YW50aWF0aW5nIG91cgorbW9ja2VkIG91dCBgcmVxdWVzdC5SZXF1ZXN0YCBpcyBhIG5vbi1jYWxsYWJsZSBtb2NrLiBXaXRoIHRoZSBzcGVjIGluIHBsYWNlCithbnkgdHlwb3MgaW4gb3VyIGFzc2VydHMgd2lsbCByYWlzZSB0aGUgY29ycmVjdCBlcnJvcjoKKworICAgID4+PiByZXEuYWRkX2hlYWRlcignc3BhbScsICdlZ2dzJykKKyAgICA8TWFnaWNNb2NrIG5hbWU9J3JlcXVlc3QuUmVxdWVzdCgpLmFkZF9oZWFkZXIoKScgaWQ9Jy4uLic+CisgICAgPj4+IHJlcS5hZGRfaGVhZGVyLmFzc3JldF9jYWxsZWRfd2l0aAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IE1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2Fzc3JldF9jYWxsZWRfd2l0aCcKKyAgICA+Pj4gcmVxLmFkZF9oZWFkZXIuYXNzZXJ0X2NhbGxlZF93aXRoKCdzcGFtJywgJ2VnZ3MnKQorCitJbiBtYW55IGNhc2VzIHlvdSB3aWxsIGp1c3QgYmUgYWJsZSB0byBhZGQgYGF1dG9zcGVjPVRydWVgIHRvIHlvdXIgZXhpc3RpbmcKK2BwYXRjaGAgY2FsbHMgYW5kIHRoZW4gYmUgcHJvdGVjdGVkIGFnYWluc3QgYnVncyBkdWUgdG8gdHlwb3MgYW5kIGFwaQorY2hhbmdlcy4KKworQXMgd2VsbCBhcyB1c2luZyBgYXV0b3NwZWNgIHRocm91Z2ggYHBhdGNoYCB0aGVyZSBpcyBhCis6ZnVuYzpgY3JlYXRlX2F1dG9zcGVjYCBmb3IgY3JlYXRpbmcgYXV0b3NwZWNjZWQgbW9ja3MgZGlyZWN0bHk6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gbW9ja19yZXF1ZXN0ID0gY3JlYXRlX2F1dG9zcGVjKHJlcXVlc3QpCisgICAgPj4+IG1vY2tfcmVxdWVzdC5SZXF1ZXN0KCdmb28nLCAnYmFyJykKKyAgICA8Tm9uQ2FsbGFibGVNYWdpY01vY2sgbmFtZT0nbW9jay5SZXF1ZXN0KCknIHNwZWM9J1JlcXVlc3QnIGlkPScuLi4nPgorCitUaGlzIGlzbid0IHdpdGhvdXQgY2F2ZWF0cyBhbmQgbGltaXRhdGlvbnMgaG93ZXZlciwgd2hpY2ggaXMgd2h5IGl0IGlzIG5vdAordGhlIGRlZmF1bHQgYmVoYXZpb3VyLiBJbiBvcmRlciB0byBrbm93IHdoYXQgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHRoZQorc3BlYyBvYmplY3QsIGF1dG9zcGVjIGhhcyB0byBpbnRyb3NwZWN0IChhY2Nlc3MgYXR0cmlidXRlcykgdGhlIHNwZWMuIEFzIHlvdQordHJhdmVyc2UgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhIGNvcnJlc3BvbmRpbmcgdHJhdmVyc2FsIG9mIHRoZSBvcmlnaW5hbAorb2JqZWN0IGlzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gSWYgYW55IG9mIHlvdXIgc3BlY2NlZCBvYmplY3RzIGhhdmUKK3Byb3BlcnRpZXMgb3IgZGVzY3JpcHRvcnMgdGhhdCBjYW4gdHJpZ2dlciBjb2RlIGV4ZWN1dGlvbiB0aGVuIHlvdSBtYXkgbm90IGJlCithYmxlIHRvIHVzZSBhdXRvc3BlYy4gT24gdGhlIG90aGVyIGhhbmQgaXQgaXMgbXVjaCBiZXR0ZXIgdG8gZGVzaWduIHlvdXIKK29iamVjdHMgc28gdGhhdCBpbnRyb3NwZWN0aW9uIGlzIHNhZmUgWyNdXy4KKworQSBtb3JlIHNlcmlvdXMgcHJvYmxlbSBpcyB0aGF0IGl0IGlzIGNvbW1vbiBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcyB0byBiZQorY3JlYXRlZCBpbiB0aGUgYF9faW5pdF9fYCBtZXRob2QgYW5kIG5vdCB0byBleGlzdCBvbiB0aGUgY2xhc3MgYXQgYWxsLgorYGF1dG9zcGVjYCBjYW4ndCBrbm93IGFib3V0IGFueSBkeW5hbWljYWxseSBjcmVhdGVkIGF0dHJpYnV0ZXMgYW5kIHJlc3RyaWN0cwordGhlIGFwaSB0byB2aXNpYmxlIGF0dHJpYnV0ZXMuCisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgc2VsZi5hID0gMzMKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYScKKworVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVudCB3YXlzIG9mIHJlc29sdmluZyB0aGlzIHByb2JsZW0uIFRoZSBlYXNpZXN0LCBidXQKK25vdCBuZWNlc3NhcmlseSB0aGUgbGVhc3QgYW5ub3lpbmcsIHdheSBpcyB0byBzaW1wbHkgc2V0IHRoZSByZXF1aXJlZAorYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBjcmVhdGlvbi4gSnVzdCBiZWNhdXNlIGBhdXRvc3BlY2AgZG9lc24ndCBhbGxvdworeW91IHRvIGZldGNoIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdCBvbiB0aGUgc3BlYyBpdCBkb2Vzbid0IHByZXZlbnQgeW91CitzZXR0aW5nIHRoZW06CisKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEgPSAzMworICAgIC4uLgorCitUaGVyZSBpcyBhIG1vcmUgYWdncmVzc2l2ZSB2ZXJzaW9uIG9mIGJvdGggYHNwZWNgIGFuZCBgYXV0b3NwZWNgIHRoYXQgKmRvZXMqCitwcmV2ZW50IHlvdSBzZXR0aW5nIG5vbi1leGlzdGVudCBhdHRyaWJ1dGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0bworZW5zdXJlIHlvdXIgY29kZSBvbmx5ICpzZXRzKiB2YWxpZCBhdHRyaWJ1dGVzIHRvbywgYnV0IG9idmlvdXNseSBpdCBwcmV2ZW50cwordGhpcyBwYXJ0aWN1bGFyIHNjZW5hcmlvOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVRydWUsIHNwZWNfc2V0PVRydWUpOgorICAgIC4uLiAgIHRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAuLi4gICB0aGluZy5hID0gMzMKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdhJworCitQcm9iYWJseSB0aGUgYmVzdCB3YXkgb2Ygc29sdmluZyB0aGUgcHJvYmxlbSBpcyB0byBhZGQgY2xhc3MgYXR0cmlidXRlcyBhcworZGVmYXVsdCB2YWx1ZXMgZm9yIGluc3RhbmNlIG1lbWJlcnMgaW5pdGlhbGlzZWQgaW4gYF9faW5pdF9fYC4gTm90ZSB0aGF0IGlmCit5b3UgYXJlIG9ubHkgc2V0dGluZyBkZWZhdWx0IGF0dHJpYnV0ZXMgaW4gYF9faW5pdF9fYCB0aGVuIHByb3ZpZGluZyB0aGVtIHZpYQorY2xhc3MgYXR0cmlidXRlcyAoc2hhcmVkIGJldHdlZW4gaW5zdGFuY2VzIG9mIGNvdXJzZSkgaXMgZmFzdGVyIHRvby4gZS5nLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgYSA9IDMzCisKK1RoaXMgYnJpbmdzIHVwIGFub3RoZXIgaXNzdWUuIEl0IGlzIHJlbGF0aXZlbHkgY29tbW9uIHRvIHByb3ZpZGUgYSBkZWZhdWx0Cit2YWx1ZSBvZiBgTm9uZWAgZm9yIG1lbWJlcnMgdGhhdCB3aWxsIGxhdGVyIGJlIGFuIG9iamVjdCBvZiBhIGRpZmZlcmVudCB0eXBlLgorYE5vbmVgIHdvdWxkIGJlIHVzZWxlc3MgYXMgYSBzcGVjIGJlY2F1c2UgaXQgd291bGRuJ3QgbGV0IHlvdSBhY2Nlc3MgKmFueSoKK2F0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvbiBpdC4gQXMgYE5vbmVgIGlzICpuZXZlciogZ29pbmcgdG8gYmUgdXNlZnVsIGFzIGEKK3NwZWMsIGFuZCBwcm9iYWJseSBpbmRpY2F0ZXMgYSBtZW1iZXIgdGhhdCB3aWxsIG5vcm1hbGx5IG9mIHNvbWUgb3RoZXIgdHlwZSwKK2BhdXRvc3BlY2AgZG9lc24ndCB1c2UgYSBzcGVjIGZvciBtZW1iZXJzIHRoYXQgYXJlIHNldCB0byBgTm9uZWAuIFRoZXNlIHdpbGwKK2p1c3QgYmUgb3JkaW5hcnkgbW9ja3MgKHdlbGwgLSBgTWFnaWNNb2Nrc2ApOgorCisgICAgPj4+IGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgIC4uLiAgICAgbWVtYmVyID0gTm9uZQorICAgIC4uLgorICAgID4+PiBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFNvbWV0aGluZykKKyAgICA+Pj4gbW9jay5tZW1iZXIuZm9vLmJhci5iYXooKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5tZW1iZXIuZm9vLmJhci5iYXooKScgaWQ9Jy4uLic+CisKK0lmIG1vZGlmeWluZyB5b3VyIHByb2R1Y3Rpb24gY2xhc3NlcyB0byBhZGQgZGVmYXVsdHMgaXNuJ3QgdG8geW91ciBsaWtpbmcKK3RoZW4gdGhlcmUgYXJlIG1vcmUgb3B0aW9ucy4gT25lIG9mIHRoZXNlIGlzIHNpbXBseSB0byB1c2UgYW4gaW5zdGFuY2UgYXMgdGhlCitzcGVjIHJhdGhlciB0aGFuIHRoZSBjbGFzcy4gVGhlIG90aGVyIGlzIHRvIGNyZWF0ZSBhIHN1YmNsYXNzIG9mIHRoZQorcHJvZHVjdGlvbiBjbGFzcyBhbmQgYWRkIHRoZSBkZWZhdWx0cyB0byB0aGUgc3ViY2xhc3Mgd2l0aG91dCBhZmZlY3RpbmcgdGhlCitwcm9kdWN0aW9uIGNsYXNzLiBCb3RoIG9mIHRoZXNlIHJlcXVpcmUgeW91IHRvIHVzZSBhbiBhbHRlcm5hdGl2ZSBvYmplY3QgYXMKK3RoZSBzcGVjLiBUaGFua2Z1bGx5IGBwYXRjaGAgc3VwcG9ydHMgdGhpcyAtIHlvdSBjYW4gc2ltcGx5IHBhc3MgdGhlCithbHRlcm5hdGl2ZSBvYmplY3QgYXMgdGhlIGBhdXRvc3BlY2AgYXJndW1lbnQ6CisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgc2VsZi5hID0gMzMKKyAgICAuLi4KKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nRm9yVGVzdChTb21ldGhpbmcpOgorICAgIC4uLiAgIGEgPSAzMworICAgIC4uLgorICAgID4+PiBwID0gcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVNvbWV0aGluZ0ZvclRlc3QpCisgICAgPj4+IG1vY2sgPSBwLnN0YXJ0KCkKKyAgICA+Pj4gbW9jay5hCisgICAgPE5vbkNhbGxhYmxlTWFnaWNNb2NrIG5hbWU9J1NvbWV0aGluZy5hJyBzcGVjPSdpbnQnIGlkPScuLi4nPgorCisKKy4uIFsjXSBUaGlzIG9ubHkgYXBwbGllcyB0byBjbGFzc2VzIG9yIGFscmVhZHkgaW5zdGFudGlhdGVkIG9iamVjdHMuIENhbGxpbmcKKyAgIGEgbW9ja2VkIGNsYXNzIHRvIGNyZWF0ZSBhIG1vY2sgaW5zdGFuY2UgKmRvZXMgbm90KiBjcmVhdGUgYSByZWFsIGluc3RhbmNlLgorICAgSXQgaXMgb25seSBhdHRyaWJ1dGUgbG9va3VwcyAtIGFsb25nIHdpdGggY2FsbHMgdG8gYGRpcmAgLSB0aGF0IGFyZSBkb25lLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKaW5kZXggNDQyMjUzMy4uMDZmM2Q4MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdApAQCAtNzkzLDExICs3OTMsMTQgQEAKICAgICAgIFJ1biB0aGUgdGVzdCwgY29sbGVjdGluZyB0aGUgcmVzdWx0IGludG8gdGhlIHRlc3QgcmVzdWx0IG9iamVjdCBwYXNzZWQgYXMKICAgICAgICpyZXN1bHQqLiAgSWYgKnJlc3VsdCogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgYSB0ZW1wb3JhcnkgcmVzdWx0CiAgICAgICBvYmplY3QgaXMgY3JlYXRlZCAoYnkgY2FsbGluZyB0aGUgOm1ldGg6YGRlZmF1bHRUZXN0UmVzdWx0YCBtZXRob2QpIGFuZAotICAgICAgdXNlZC4gVGhlIHJlc3VsdCBvYmplY3QgaXMgbm90IHJldHVybmVkIHRvIDptZXRoOmBydW5gJ3MgY2FsbGVyLgorICAgICAgdXNlZC4gVGhlIHJlc3VsdCBvYmplY3QgaXMgcmV0dXJuZWQgdG8gOm1ldGg6YHJ1bmAncyBjYWxsZXIuCiAKICAgICAgIFRoZSBzYW1lIGVmZmVjdCBtYXkgYmUgaGFkIGJ5IHNpbXBseSBjYWxsaW5nIHRoZSA6Y2xhc3M6YFRlc3RDYXNlYAogICAgICAgaW5zdGFuY2UuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91cyB2ZXJzaW9ucyBvZiBgYHJ1bmBgIGRpZCBub3QgcmV0dXJuIHRoZSByZXN1bHQuIE5laXRoZXIgZGlkCisgICAgICAgICBjYWxsaW5nIGFuIGluc3RhbmNlLgogCiAgICAuLiBtZXRob2Q6OiBza2lwVGVzdChyZWFzb24pCiAKQEAgLTg1OCwxMCArODYxLDExIEBACiAgICB8IDxUZXN0Q2FzZS5hc3NlcnROb3RJc0luc3RhbmNlPmAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKIAotICAgQWxsIHRoZSBhc3NlcnQgbWV0aG9kcyAoZXhjZXB0IDptZXRoOmBhc3NlcnRSYWlzZXNgLAotICAgOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YCwgOm1ldGg6YGFzc2VydFdhcm5zYCwgOm1ldGg6YGFzc2VydFdhcm5zUmVnZXhgKQotICAgYWNjZXB0IGEgKm1zZyogYXJndW1lbnQgdGhhdCwgaWYgc3BlY2lmaWVkLCBpcyB1c2VkIGFzIHRoZSBlcnJvciBtZXNzYWdlIG9uCi0gICBmYWlsdXJlIChzZWUgYWxzbyA6ZGF0YTpgbG9uZ01lc3NhZ2VgKS4KKyAgIEFsbCB0aGUgYXNzZXJ0IG1ldGhvZHMgYWNjZXB0IGEgKm1zZyogYXJndW1lbnQgdGhhdCwgaWYgc3BlY2lmaWVkLCBpcyB1c2VkCisgICBhcyB0aGUgZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlIChzZWUgYWxzbyA6ZGF0YTpgbG9uZ01lc3NhZ2VgKS4KKyAgIE5vdGUgdGhhdCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCBjYW4gYmUgcGFzc2VkIHRvIDptZXRoOmBhc3NlcnRSYWlzZXNgLAorICAgOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YCwgOm1ldGg6YGFzc2VydFdhcm5zYCwgOm1ldGg6YGFzc2VydFdhcm5zUmVnZXhgCisgICBvbmx5IHdoZW4gdGhleSBhcmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpCiAKQEAgLTk1Niw3ICs5NjAsNyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiAKICAgIC4uIG1ldGhvZDo6IGFzc2VydFJhaXNlcyhleGNlcHRpb24sIGNhbGxhYmxlLCAqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgIGFzc2VydFJhaXNlcyhleGNlcHRpb24sIG1zZz1Ob25lKQogCiAgICAgICBUZXN0IHRoYXQgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuICpjYWxsYWJsZSogaXMgY2FsbGVkIHdpdGggYW55CiAgICAgICBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIGFsc28gcGFzc2VkIHRvCkBAIC05NjUsMTIgKzk2OSwxNiBAQAogICAgICAgVG8gY2F0Y2ggYW55IG9mIGEgZ3JvdXAgb2YgZXhjZXB0aW9ucywgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlcHRpb24KICAgICAgIGNsYXNzZXMgbWF5IGJlIHBhc3NlZCBhcyAqZXhjZXB0aW9uKi4KIAotICAgICAgSWYgb25seSB0aGUgKmV4Y2VwdGlvbiogYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIgc28KLSAgICAgIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CisgICAgICBJZiBvbmx5IHRoZSAqZXhjZXB0aW9uKiBhbmQgcG9zc2libHkgdGhlICptc2cqIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sCisgICAgICByZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgc28gdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuCisgICAgICBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CiAKICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKIAorICAgICAgV2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCA6bWV0aDpgYXNzZXJ0UmFpc2VzYCBhY2NlcHRzIHRoZQorICAgICAgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICptc2cqLgorCiAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIHdpbGwgc3RvcmUgdGhlIGNhdWdodCBleGNlcHRpb24gb2JqZWN0IGluIGl0cwogICAgICAgOmF0dHI6YGV4Y2VwdGlvbmAgYXR0cmlidXRlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHRoZSBpbnRlbnRpb24KICAgICAgIGlzIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlIGV4Y2VwdGlvbiByYWlzZWQ6OgpAQCAtOTg3LDkgKzk5NSwxMiBAQAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIEFkZGVkIHRoZSA6YXR0cjpgZXhjZXB0aW9uYCBhdHRyaWJ1dGUuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBZGRlZCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uLCByZWdleCwgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4KQorICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uLCByZWdleCwgbXNnPU5vbmUpCiAKICAgICAgIExpa2UgOm1ldGg6YGFzc2VydFJhaXNlc2AgYnV0IGFsc28gdGVzdHMgdGhhdCAqcmVnZXgqIG1hdGNoZXMKICAgICAgIG9uIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJhaXNlZCBleGNlcHRpb24uICAqcmVnZXgqIG1heSBiZQpAQCAtMTAwNiwxMiArMTAxNywxNiBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKICAgICAgICAgIHVuZGVyIHRoZSBuYW1lIGBgYXNzZXJ0UmFpc2VzUmVnZXhwYGAuCisKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAgICBSZW5hbWVkIHRvIDptZXRoOmBhc3NlcnRSYWlzZXNSZWdleGAuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBZGRlZCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0V2FybnMod2FybmluZywgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRXYXJucyh3YXJuaW5nKQorICAgICAgICAgICAgICAgYXNzZXJ0V2FybnMod2FybmluZywgbXNnPU5vbmUpCiAKICAgICAgIFRlc3QgdGhhdCBhIHdhcm5pbmcgaXMgdHJpZ2dlcmVkIHdoZW4gKmNhbGxhYmxlKiBpcyBjYWxsZWQgd2l0aCBhbnkKICAgICAgIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgYWxzbyBwYXNzZWQgdG8KQEAgLTEwMjAsMTIgKzEwMzUsMTYgQEAKICAgICAgIFRvIGNhdGNoIGFueSBvZiBhIGdyb3VwIG9mIHdhcm5pbmdzLCBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHdhcm5pbmcKICAgICAgIGNsYXNzZXMgbWF5IGJlIHBhc3NlZCBhcyAqd2FybmluZ3MqLgogCi0gICAgICBJZiBvbmx5IHRoZSAqd2FybmluZyogYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIgc28KLSAgICAgIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CisgICAgICBJZiBvbmx5IHRoZSAqd2FybmluZyogYW5kIHBvc3NpYmx5IHRoZSAqbXNnKiBhcmd1bWVudHMgYXJlIGdpdmVuLAorICAgICAgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbyB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4KKyAgICAgIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKIAogICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFNvbWVXYXJuaW5nKToKICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICBXaGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIDptZXRoOmBhc3NlcnRSYWlzZXNgIGFjY2VwdHMgdGhlCisgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKm1zZyouCisKICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgd2lsbCBzdG9yZSB0aGUgY2F1Z2h0IHdhcm5pbmcgb2JqZWN0IGluIGl0cwogICAgICAgOmF0dHI6YHdhcm5pbmdgIGF0dHJpYnV0ZSwgYW5kIHRoZSBzb3VyY2UgbGluZSB3aGljaCB0cmlnZ2VyZWQgdGhlCiAgICAgICB3YXJuaW5ncyBpbiB0aGUgOmF0dHI6YGZpbGVuYW1lYCBhbmQgOmF0dHI6YGxpbmVub2AgYXR0cmlidXRlcy4KQEAgLTEwNDMsOSArMTA2MiwxMiBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRXYXJuc1JlZ2V4KHdhcm5pbmcsIHJlZ2V4LCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgpCisgICAgICAgICAgICAgICBhc3NlcnRXYXJuc1JlZ2V4KHdhcm5pbmcsIHJlZ2V4LCBtc2c9Tm9uZSkKIAogICAgICAgTGlrZSA6bWV0aDpgYXNzZXJ0V2FybnNgIGJ1dCBhbHNvIHRlc3RzIHRoYXQgKnJlZ2V4KiBtYXRjaGVzIG9uIHRoZQogICAgICAgbWVzc2FnZSBvZiB0aGUgdHJpZ2dlcmVkIHdhcm5pbmcuICAqcmVnZXgqIG1heSBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbgpAQCAtMTA2Myw2ICsxMDg1LDggQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBZGRlZCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAKIAogICAgVGhlcmUgYXJlIGFsc28gb3RoZXIgbWV0aG9kcyB1c2VkIHRvIHBlcmZvcm0gbW9yZSBzcGVjaWZpYyBjaGVja3MsIHN1Y2ggYXM6CkBAIC0xMTUyLDIxICsxMTc2LDYgQEAKICAgICAgICAgIDptZXRoOmAuYXNzZXJ0Tm90UmVnZXhgLgogCiAKLSAgIC4uIG1ldGhvZDo6IGFzc2VydERpY3RDb250YWluc1N1YnNldChzdWJzZXQsIGRpY3Rpb25hcnksIG1zZz1Ob25lKQotCi0gICAgICBUZXN0cyB3aGV0aGVyIHRoZSBrZXkvdmFsdWUgcGFpcnMgaW4gKmRpY3Rpb25hcnkqIGFyZSBhIHN1cGVyc2V0IG9mCi0gICAgICB0aG9zZSBpbiAqc3Vic2V0Ki4gIElmIG5vdCwgYW4gZXJyb3IgbWVzc2FnZSBsaXN0aW5nIHRoZSBtaXNzaW5nIGtleXMKLSAgICAgIGFuZCBtaXNtYXRjaGVkIHZhbHVlcyBpcyBnZW5lcmF0ZWQuCi0KLSAgICAgIE5vdGUsIHRoZSBhcmd1bWVudHMgYXJlIGluIHRoZSBvcHBvc2l0ZSBvcmRlciBvZiB3aGF0IHRoZSBtZXRob2QgbmFtZQotICAgICAgZGljdGF0ZXMuICBJbnN0ZWFkLCBjb25zaWRlciB1c2luZyB0aGUgc2V0LW1ldGhvZHMgb24gOnJlZjpgZGljdGlvbmFyeQotICAgICAgdmlld3MgPGRpY3Qtdmlld3M+YCwgZm9yIGV4YW1wbGU6IGBgZC5rZXlzKCkgPD0gZS5rZXlzKClgYCBvcgotICAgICAgYGBkLml0ZW1zKCkgPD0gZC5pdGVtcygpYGAuCi0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQotICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMgotCi0KICAgIC4uIG1ldGhvZDo6IGFzc2VydENvdW50RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpCiAKICAgICAgIFRlc3QgdGhhdCBzZXF1ZW5jZSAqZmlyc3QqIGNvbnRhaW5zIHRoZSBzYW1lIGVsZW1lbnRzIGFzICpzZWNvbmQqLApAQCAtMTE4MSwyMSArMTE5MCw2IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBtZXRob2Q6OiBhc3NlcnRTYW1lRWxlbWVudHMoZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpCi0KLSAgICAgIFRlc3QgdGhhdCBzZXF1ZW5jZSAqZmlyc3QqIGNvbnRhaW5zIHRoZSBzYW1lIGVsZW1lbnRzIGFzICpzZWNvbmQqLAotICAgICAgcmVnYXJkbGVzcyBvZiB0aGVpciBvcmRlci4gV2hlbiB0aGV5IGRvbid0LCBhbiBlcnJvciBtZXNzYWdlIGxpc3RpbmcKLSAgICAgIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBzZXF1ZW5jZXMgd2lsbCBiZSBnZW5lcmF0ZWQuCi0KLSAgICAgIER1cGxpY2F0ZSBlbGVtZW50cyBhcmUgaWdub3JlZCB3aGVuIGNvbXBhcmluZyAqZmlyc3QqIGFuZCAqc2Vjb25kKi4KLSAgICAgIEl0IGlzIHRoZSBlcXVpdmFsZW50IG9mIGBgYXNzZXJ0RXF1YWwoc2V0KGZpcnN0KSwgc2V0KHNlY29uZCkpYGAKLSAgICAgIGJ1dCBpdCB3b3JrcyB3aXRoIHNlcXVlbmNlcyBvZiB1bmhhc2hhYmxlIG9iamVjdHMgYXMgd2VsbC4gQmVjYXVzZQotICAgICAgZHVwbGljYXRlcyBhcmUgaWdub3JlZCwgdGhpcyBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YKLSAgICAgIDptZXRoOmBhc3NlcnRDb3VudEVxdWFsYC4KLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCi0gICAgICAuLiBkZXByZWNhdGVkOjogMy4yCi0KIAogICAgLi4gX3R5cGUtc3BlY2lmaWMtbWV0aG9kczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QKaW5kZXggMjgyMzI5Zi4uZTIwZGIyNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0CkBAIC04LDIxICs4LDIzIEBACiAKIAogVGhlIDptb2Q6YHVybGxpYi5lcnJvcmAgbW9kdWxlIGRlZmluZXMgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzIGZvciBleGNlcHRpb25zCi1yYWlzZWQgYnkgOm1vZDpgdXJsbGliLnJlcXVlc3RgLiAgVGhlIGJhc2UgZXhjZXB0aW9uIGNsYXNzIGlzIDpleGM6YFVSTEVycm9yYCwKLXdoaWNoIGluaGVyaXRzIGZyb20gOmV4YzpgSU9FcnJvcmAuCityYWlzZWQgYnkgOm1vZDpgdXJsbGliLnJlcXVlc3RgLiAgVGhlIGJhc2UgZXhjZXB0aW9uIGNsYXNzIGlzIDpleGM6YFVSTEVycm9yYC4KIAogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSByYWlzZWQgYnkgOm1vZDpgdXJsbGliLmVycm9yYCBhcyBhcHByb3ByaWF0ZToKIAogLi4gZXhjZXB0aW9uOjogVVJMRXJyb3IKIAogICAgVGhlIGhhbmRsZXJzIHJhaXNlIHRoaXMgZXhjZXB0aW9uIChvciBkZXJpdmVkIGV4Y2VwdGlvbnMpIHdoZW4gdGhleSBydW4gaW50bwotICAgYSBwcm9ibGVtLiAgSXQgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJT0Vycm9yYC4KKyAgIGEgcHJvYmxlbS4gIEl0IGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHJlYXNvbgogCiAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIGVycm9yLiAgSXQgY2FuIGJlIGEgbWVzc2FnZSBzdHJpbmcgb3IgYW5vdGhlcgotICAgICAgZXhjZXB0aW9uIGluc3RhbmNlICg6ZXhjOmBzb2NrZXQuZXJyb3JgIGZvciByZW1vdGUgVVJMcywgOmV4YzpgT1NFcnJvcmAKLSAgICAgIGZvciBsb2NhbCBVUkxzKS4KKyAgICAgIGV4Y2VwdGlvbiBpbnN0YW5jZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFVSTEVycm9yYCBoYXMgYmVlbiBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZAorICAgICAgb2YgOmV4YzpgSU9FcnJvcmAuCiAKIAogLi4gZXhjZXB0aW9uOjogSFRUUEVycm9yCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAppbmRleCBiYzFkYTYyLi4yMDhjYjk3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKQEAgLTgxLDggKzgxLDcgQEAKICAgIHRoaXMgYXJndW1lbnQgaXMgdGhlIGVtcHR5IHN0cmluZy4KIAogICAgSWYgdGhlICphbGxvd19mcmFnbWVudHMqIGFyZ3VtZW50IGlzIGZhbHNlLCBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUgbm90Ci0gICBhbGxvd2VkLCBldmVuIGlmIHRoZSBVUkwncyBhZGRyZXNzaW5nIHNjaGVtZSBub3JtYWxseSBkb2VzIHN1cHBvcnQgdGhlbS4gIFRoZQotICAgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBhcmd1bWVudCBpcyA6Y29uc3Q6YFRydWVgLgorICAgYWxsb3dlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGFyZ3VtZW50IGlzIDpjb25zdDpgVHJ1ZWAuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YHR1cGxlYC4gIFRoaXMKICAgIGNsYXNzIGhhcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcmVhZC1vbmx5IGNvbnZlbmllbmNlIGF0dHJpYnV0ZXM6CkBAIC0xMTksNiArMTE4LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgSVB2NiBVUkwgcGFyc2luZyBjYXBhYmlsaXRpZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgZnJhZ21lbnQgaXMgbm93IHBhcnNlZCBmb3IgYWxsIFVSTCBzY2hlbWVzICh1bmxlc3MgKmFsbG93X2ZyYWdtZW50KiBpcworICAgICAgZmFsc2UpLCBpbiBhY2NvcmRhbmNlIHdpdGggOnJmYzpgMzk4NmAuICBQcmV2aW91c2x5LCBhIHdoaXRlbGlzdCBvZgorICAgICAgc2NoZW1lcyB0aGF0IHN1cHBvcnQgZnJhZ21lbnRzIGV4aXN0ZWQuCisKIAogLi4gZnVuY3Rpb246OiBwYXJzZV9xcyhxcywga2VlcF9ibGFua192YWx1ZXM9RmFsc2UsIHN0cmljdF9wYXJzaW5nPUZhbHNlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnKQogCkBAIC0xNDEsOCArMTQ1LDkgQEAKICAgIHBlcmNlbnQtZW5jb2RlZCBzZXF1ZW5jZXMgaW50byBVbmljb2RlIGNoYXJhY3RlcnMsIGFzIGFjY2VwdGVkIGJ5IHRoZQogICAgOm1ldGg6YGJ5dGVzLmRlY29kZWAgbWV0aG9kLgogCi0gICBVc2UgdGhlIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0byBjb252ZXJ0IHN1Y2gKLSAgIGRpY3Rpb25hcmllcyBpbnRvIHF1ZXJ5IHN0cmluZ3MuCisgICBVc2UgdGhlIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiAod2l0aCB0aGUgYGBkb3NlcWBgCisgICBwYXJhbWV0ZXIgc2V0IHRvIGBgVHJ1ZWBgKSB0byBjb252ZXJ0IHN1Y2ggZGljdGlvbmFyaWVzIGludG8gcXVlcnkKKyAgIHN0cmluZ3MuCiAKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCBiNDc2NGNjLi44OThmZTcxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0xNiw3ICsxNiw3IEBACiBUaGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAKLS4uIGZ1bmN0aW9uOjogdXJsb3Blbih1cmwsIGRhdGE9Tm9uZVssIHRpbWVvdXRdLCAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUpCisuLiBmdW5jdGlvbjo6IHVybG9wZW4odXJsLCBkYXRhPU5vbmVbLCB0aW1lb3V0XSwgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRlZmF1bHQ9VHJ1ZSkKIAogICAgT3BlbiB0aGUgVVJMICp1cmwqLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgpAQCAtNTMsOSArNTMsMTUgQEAKICAgIHBvaW50IHRvIGEgZGlyZWN0b3J5IG9mIGhhc2hlZCBjZXJ0aWZpY2F0ZSBmaWxlcy4gIE1vcmUgaW5mb3JtYXRpb24gY2FuCiAgICBiZSBmb3VuZCBpbiA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYC4KIAorICAgVGhlICpjYWRlZmF1bHQqIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0byBmYWxsIGJhY2sgdG8gbG9hZGluZyBhCisgICBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGRlZmluZWQgYnkgdGhlIHVuZGVybHlpbmcgT3BlblNTTCBsaWJyYXJ5IGlmIHRoZQorICAgKmNhZmlsZSogYW5kICpjYXBhdGgqIHBhcmFtZXRlcnMgYXJlIG9taXR0ZWQuICBUaGlzIHdpbGwgb25seSB3b3JrIG9uCisgICBzb21lIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KKwogICAgLi4gd2FybmluZzo6Ci0gICAgICBJZiBuZWl0aGVyICpjYWZpbGUqIG5vciAqY2FwYXRoKiBpcyBzcGVjaWZpZWQsIGFuIEhUVFBTIHJlcXVlc3QKLSAgICAgIHdpbGwgbm90IGRvIGFueSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLgorICAgICAgSWYgbmVpdGhlciAqY2FmaWxlKiBub3IgKmNhcGF0aCogaXMgc3BlY2lmaWVkLCBhbmQgKmNhZGVmYXVsdCogaXMgRmFsc2UsCisgICAgICBhbiBIVFRQUyByZXF1ZXN0IHdpbGwgbm90IGRvIGFueSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlcidzCisgICAgICBjZXJ0aWZpY2F0ZS4KIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgZmlsZS1saWtlIG9iamVjdCB0aGF0IHdvcmtzIGFzIGEgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAsCiAgICB3aXRoIHR3byBhZGRpdGlvbmFsIG1ldGhvZHMgZnJvbSB0aGUgOm1vZDpgdXJsbGliLnJlc3BvbnNlYCBtb2R1bGUKQEAgLTkyLDYgKzk4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgKmRhdGEqIGNhbiBiZSBhbiBpdGVyYWJsZSBvYmplY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqY2FkZWZhdWx0KiB3YXMgYWRkZWQuCisKIC4uIGZ1bmN0aW9uOjogaW5zdGFsbF9vcGVuZXIob3BlbmVyKQogCiAgICBJbnN0YWxsIGFuIDpjbGFzczpgT3BlbmVyRGlyZWN0b3JgIGluc3RhbmNlIGFzIHRoZSBkZWZhdWx0IGdsb2JhbCBvcGVuZXIuCkBAIC0xNDUsNyArMTU0LDcgQEAKIAogVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKIAotLi4gY2xhc3M6OiBSZXF1ZXN0KHVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPXt9LCBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlKQorLi4gY2xhc3M6OiBSZXF1ZXN0KHVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPXt9LCBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlLCBtZXRob2Q9Tm9uZSkKIAogICAgVGhpcyBjbGFzcyBpcyBhbiBhYnN0cmFjdGlvbiBvZiBhIFVSTCByZXF1ZXN0LgogCkBAIC0xOTgsNiArMjA3LDEzIEBACiAgICBkb2N1bWVudCwgYW5kIHRoZSB1c2VyIGhhZCBubyBvcHRpb24gdG8gYXBwcm92ZSB0aGUgYXV0b21hdGljCiAgICBmZXRjaGluZyBvZiB0aGUgaW1hZ2UsIHRoaXMgc2hvdWxkIGJlIHRydWUuCiAKKyAgICptZXRob2QqIHNob3VsZCBiZSBhIHN0cmluZyB0aGF0IGluZGljYXRlcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0aGF0CisgICB3aWxsIGJlIHVzZWQgKGUuZy4gYGAnSEVBRCdgYCkuICBJdHMgdmFsdWUgaXMgc3RvcmVkIGluIHRoZQorICAgOmF0dHI6YH5SZXF1ZXN0Lm1ldGhvZGAgYXR0cmlidXRlIGFuZCBpcyB1c2VkIGJ5IDptZXRoOmBnZXRfbWV0aG9kKClgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBhcmd1bWVudCBpcyBhZGRlZCB0byB0aGUgUmVxdWVzdCBjbGFzcy4KKwogCiAuLiBjbGFzczo6IE9wZW5lckRpcmVjdG9yKCkKIApAQCAtMjYzLDEwICsyNzksMTEgQEAKIAogLi4gY2xhc3M6OiBIVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKIAotICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZQotICAgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgotICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZAorICAgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8KKyAgIHNlY3Rpb24gOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdAorICAgYmUgc3VwcG9ydGVkLiBIVFRQQmFzaWNBdXRoSGFuZGxlciB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbgorICAgcHJlc2VudGVkIHdpdGggYSB3cm9uZyBBdXRoZW50aWNhdGlvbiBzY2hlbWUuCiAKIAogLi4gY2xhc3M6OiBQcm94eUJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCkBAIC0yODgsMTAgKzMwNSwxOSBAQAogCiAuLiBjbGFzczo6IEhUVFBEaWdlc3RBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKIAotICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZQotICAgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgotICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZAorICAgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8KKyAgIHNlY3Rpb24gOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdAorICAgYmUgc3VwcG9ydGVkLiBXaGVuIGJvdGggRGlnZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXIgYW5kIEJhc2ljCisgICBBdXRoZW50aWNhdGlvbiBIYW5kbGVyIGFyZSBib3RoIGFkZGVkLCBEaWdlc3QgQXV0aGVudGljYXRpb24gaXMgYWx3YXlzIHRyaWVkCisgICBmaXJzdC4gSWYgdGhlIERpZ2VzdCBBdXRoZW50aWNhdGlvbiByZXR1cm5zIGEgNDB4IHJlc3BvbnNlIGFnYWluLCBpdCBpcyBzZW50CisgICB0byBCYXNpYyBBdXRoZW50aWNhdGlvbiBoYW5kbGVyIHRvIEhhbmRsZS4gIFRoaXMgSGFuZGxlciBtZXRob2Qgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIHByZXNlbnRlZCB3aXRoIGFuIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBvdGhlciB0aGFuCisgICBEaWdlc3Qgb3IgQmFzaWMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCBvbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuCisKIAogCiAuLiBjbGFzczo6IFByb3h5RGlnZXN0QXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCkBAIC0zODIsMjcgKzQwOCwyNSBAQAogICAgYm9vbGVhbiwgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgdW52ZXJpZmlhYmxlIGFzIGRlZmluZWQKICAgIGJ5IFJGQyAyOTY1LgogCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmFkZF9kYXRhKGRhdGEpCisuLiBhdHRyaWJ1dGU6OiBSZXF1ZXN0Lm1ldGhvZAogCi0gICBTZXQgdGhlIDpjbGFzczpgUmVxdWVzdGAgZGF0YSB0byAqZGF0YSouICBUaGlzIGlzIGlnbm9yZWQgYnkgYWxsIGhhbmRsZXJzIGV4Y2VwdAotICAgSFRUUCBoYW5kbGVycyAtLS0gYW5kIHRoZXJlIGl0IHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nLCBhbmQgd2lsbCBjaGFuZ2UgdGhlCi0gICByZXF1ZXN0IHRvIGJlIGBgUE9TVGBgIHJhdGhlciB0aGFuIGBgR0VUYGAuCisgICBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0byB1c2UuICBUaGlzIHZhbHVlIGlzIHVzZWQgYnkKKyAgIDptZXRoOmB+UmVxdWVzdC5nZXRfbWV0aG9kYCB0byBvdmVycmlkZSB0aGUgY29tcHV0ZWQgSFRUUCByZXF1ZXN0CisgICBtZXRob2QgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgcmV0dXJuZWQuICBUaGlzIGF0dHJpYnV0ZSBpcyBpbml0aWFsaXplZCB3aXRoCisgICB0aGUgdmFsdWUgb2YgdGhlICptZXRob2QqIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X21ldGhvZCgpCiAKLSAgIFJldHVybiBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kLiAgVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yCi0gICBIVFRQIHJlcXVlc3RzLCBhbmQgY3VycmVudGx5IGFsd2F5cyByZXR1cm5zIGBgJ0dFVCdgYCBvciBgYCdQT1NUJ2BgLgorICAgUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuICBJZgorICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBpcyBub3QgYGBOb25lYGAsIHJldHVybiBpdHMgdmFsdWUsIG90aGVyd2lzZSByZXR1cm4KKyAgIGBgJ0dFVCdgYCBpZiA6YXR0cjpgUmVxdWVzdC5kYXRhYCBpcyBgYE5vbmVgYCwgb3IgYGAnUE9TVCdgYCBpZiBpdCdzIG5vdC4KKyAgIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciBIVFRQIHJlcXVlc3RzLgogCi0KLS4uIG1ldGhvZDo6IFJlcXVlc3QuaGFzX2RhdGEoKQotCi0gICBSZXR1cm4gd2hldGhlciB0aGUgaW5zdGFuY2UgaGFzIGEgbm9uLVwgYGBOb25lYGAgZGF0YS4KLQotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9kYXRhKCkKLQotICAgUmV0dXJuIHRoZSBpbnN0YW5jZSdzIGRhdGEuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgZ2V0X21ldGhvZCBub3cgbG9va3MgYXQgdGhlIHZhbHVlIG9mIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAuCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5hZGRfaGVhZGVyKGtleSwgdmFsKQpAQCAtNDMyLDIwICs0NTYsNjAgQEAKICAgIFJldHVybiB0aGUgVVJMIGdpdmVuIGluIHRoZSBjb25zdHJ1Y3Rvci4KIAogCisuLiBtZXRob2Q6OiBSZXF1ZXN0LnNldF9wcm94eShob3N0LCB0eXBlKQorCisgICBQcmVwYXJlIHRoZSByZXF1ZXN0IGJ5IGNvbm5lY3RpbmcgdG8gYSBwcm94eSBzZXJ2ZXIuIFRoZSAqaG9zdCogYW5kICp0eXBlKiB3aWxsCisgICByZXBsYWNlIHRob3NlIG9mIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBpbnN0YW5jZSdzIHNlbGVjdG9yIHdpbGwgYmUgdGhlIG9yaWdpbmFsCisgICBVUkwgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgorCisKKy4uIG1ldGhvZDo6IFJlcXVlc3QuYWRkX2RhdGEoZGF0YSkKKworICAgU2V0IHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGRhdGEgdG8gKmRhdGEqLiAgVGhpcyBpcyBpZ25vcmVkIGJ5IGFsbCBoYW5kbGVycyBleGNlcHQKKyAgIEhUVFAgaGFuZGxlcnMgLS0tIGFuZCB0aGVyZSBpdCBzaG91bGQgYmUgYSBieXRlIHN0cmluZywgYW5kIHdpbGwgY2hhbmdlIHRoZQorICAgcmVxdWVzdCB0byBiZSBgYFBPU1RgYCByYXRoZXIgdGhhbiBgYEdFVGBgLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQorICAgOmF0dHI6YFJlcXVlc3QuZGF0YWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworCisuLiBtZXRob2Q6OiBSZXF1ZXN0Lmhhc19kYXRhKCkKKworICAgUmV0dXJuIHdoZXRoZXIgdGhlIGluc3RhbmNlIGhhcyBhIG5vbi1cIGBgTm9uZWBgIGRhdGEuIERlcHJlY2F0ZWQgaW4gMy4zLAorICAgdXNlIDphdHRyOmBSZXF1ZXN0LmRhdGFgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKworLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfZGF0YSgpCisKKyAgIFJldHVybiB0aGUgaW5zdGFuY2UncyBkYXRhLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5kYXRhYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X3R5cGUoKQogCi0gICBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIFVSTCAtLS0gYWxzbyBrbm93biBhcyB0aGUgc2NoZW1lLgorICAgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBVUkwgLS0tIGFsc28ga25vd24gYXMgdGhlIHNjaGVtZS4gIERlcHJlY2F0ZWQgaW4gMy4zLAorICAgdXNlIDphdHRyOmBSZXF1ZXN0LnR5cGVgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfaG9zdCgpCiAKLSAgIFJldHVybiB0aGUgaG9zdCB0byB3aGljaCBhIGNvbm5lY3Rpb24gd2lsbCBiZSBtYWRlLgorICAgUmV0dXJuIHRoZSBob3N0IHRvIHdoaWNoIGEgY29ubmVjdGlvbiB3aWxsIGJlIG1hZGUuIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKKyAgIDphdHRyOmBSZXF1ZXN0Lmhvc3RgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfc2VsZWN0b3IoKQogCiAgICBSZXR1cm4gdGhlIHNlbGVjdG9yIC0tLSB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgaXMgc2VudCB0byB0aGUgc2VydmVyLgorICAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5zZWxlY3RvcmAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfaGVhZGVyKGhlYWRlcl9uYW1lLCBkZWZhdWx0PU5vbmUpCiAKQEAgLTQ2MCwyMSArNTI0LDIyIEBACiAKIC4uIG1ldGhvZDo6IFJlcXVlc3Quc2V0X3Byb3h5KGhvc3QsIHR5cGUpCiAKLSAgIFByZXBhcmUgdGhlIHJlcXVlc3QgYnkgY29ubmVjdGluZyB0byBhIHByb3h5IHNlcnZlci4gVGhlICpob3N0KiBhbmQgKnR5cGUqIHdpbGwKLSAgIHJlcGxhY2UgdGhvc2Ugb2YgdGhlIGluc3RhbmNlLCBhbmQgdGhlIGluc3RhbmNlJ3Mgc2VsZWN0b3Igd2lsbCBiZSB0aGUgb3JpZ2luYWwKLSAgIFVSTCBnaXZlbiBpbiB0aGUgY29uc3RydWN0b3IuCi0KLQogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfb3JpZ2luX3JlcV9ob3N0KCkKIAotICAgUmV0dXJuIHRoZSByZXF1ZXN0LWhvc3Qgb2YgdGhlIG9yaWdpbiB0cmFuc2FjdGlvbiwgYXMgZGVmaW5lZCBieSA6cmZjOmAyOTY1YC4KLSAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBSZXR1cm4gdGhlIHJlcXVlc3QtaG9zdCBvZiB0aGUgb3JpZ2luIHRyYW5zYWN0aW9uLCBhcyBkZWZpbmVkIGJ5CisgICA6cmZjOmAyOTY1YC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0Lm9yaWdpbl9yZXFfaG9zdGAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSgpCiAKICAgIFJldHVybiB3aGV0aGVyIHRoZSByZXF1ZXN0IGlzIHVudmVyaWZpYWJsZSwgYXMgZGVmaW5lZCBieSBSRkMgMjk2NS4gU2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4gIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKKyAgIDphdHRyOmBSZXF1ZXN0LnVudmVyaWZpYWJsZWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBfb3BlbmVyLWRpcmVjdG9yLW9iamVjdHM6CkBAIC0xMTM4LDE2ICsxMjAzLDE0IEBACiBgYHVybGxpYmBgIChhcyBvcHBvc2VkIHRvIGBgdXJsbGliMmBgKS4gIFRoZXkgbWlnaHQgYmVjb21lIGRlcHJlY2F0ZWQgYXQKIHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS4KIAotCiAuLiBmdW5jdGlvbjo6IHVybHJldHJpZXZlKHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpCiAKLSAgIENvcHkgYSBuZXR3b3JrIG9iamVjdCBkZW5vdGVkIGJ5IGEgVVJMIHRvIGEgbG9jYWwgZmlsZSwgaWYgbmVjZXNzYXJ5LiBJZiB0aGUgVVJMCi0gICBwb2ludHMgdG8gYSBsb2NhbCBmaWxlLCBvciBhIHZhbGlkIGNhY2hlZCBjb3B5IG9mIHRoZSBvYmplY3QgZXhpc3RzLCB0aGUgb2JqZWN0Ci0gICBpcyBub3QgY29waWVkLiAgUmV0dXJuIGEgdHVwbGUgYGAoZmlsZW5hbWUsIGhlYWRlcnMpYGAgd2hlcmUgKmZpbGVuYW1lKiBpcyB0aGUKKyAgIENvcHkgYSBuZXR3b3JrIG9iamVjdCBkZW5vdGVkIGJ5IGEgVVJMIHRvIGEgbG9jYWwgZmlsZS4gSWYgdGhlIFVSTAorICAgcG9pbnRzIHRvIGEgbG9jYWwgZmlsZSwgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBjb3BpZWQgdW5sZXNzIGZpbGVuYW1lIGlzIHN1cHBsaWVkLgorICAgUmV0dXJuIGEgdHVwbGUgYGAoZmlsZW5hbWUsIGhlYWRlcnMpYGAgd2hlcmUgKmZpbGVuYW1lKiBpcyB0aGUKICAgIGxvY2FsIGZpbGUgbmFtZSB1bmRlciB3aGljaCB0aGUgb2JqZWN0IGNhbiBiZSBmb3VuZCwgYW5kICpoZWFkZXJzKiBpcyB3aGF0ZXZlcgogICAgdGhlIDptZXRoOmBpbmZvYCBtZXRob2Qgb2YgdGhlIG9iamVjdCByZXR1cm5lZCBieSA6ZnVuYzpgdXJsb3BlbmAgcmV0dXJuZWQgKGZvcgotICAgYSByZW1vdGUgb2JqZWN0LCBwb3NzaWJseSBjYWNoZWQpLiBFeGNlcHRpb25zIGFyZSB0aGUgc2FtZSBhcyBmb3IKLSAgIDpmdW5jOmB1cmxvcGVuYC4KKyAgIGEgcmVtb3RlIG9iamVjdCkuIEV4Y2VwdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGZvciA6ZnVuYzpgdXJsb3BlbmAuCiAKICAgIFRoZSBzZWNvbmQgYXJndW1lbnQsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvIChpZgogICAgYWJzZW50LCB0aGUgbG9jYXRpb24gd2lsbCBiZSBhIHRlbXBmaWxlIHdpdGggYSBnZW5lcmF0ZWQgbmFtZSkuIFRoZSB0aGlyZApAQCAtMTE1OCw2ICsxMjIxLDEzIEBACiAgICB0aGlyZCBhcmd1bWVudCBtYXkgYmUgYGAtMWBgIG9uIG9sZGVyIEZUUCBzZXJ2ZXJzIHdoaWNoIGRvIG5vdCByZXR1cm4gYSBmaWxlCiAgICBzaXplIGluIHJlc3BvbnNlIHRvIGEgcmV0cmlldmFsIHJlcXVlc3QuCiAKKyAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpbGx1c3RyYXRlcyB0aGUgbW9zdCBjb21tb24gdXNhZ2Ugc2NlbmFyaW86OgorCisgICAgICA+Pj4gaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisgICAgICA+Pj4gbG9jYWxfZmlsZW5hbWUsIGhlYWRlcnMgPSB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSgnaHR0cDovL3B5dGhvbi5vcmcvJykKKyAgICAgID4+PiBodG1sID0gb3Blbihsb2NhbF9maWxlbmFtZSkKKyAgICAgID4+PiBodG1sLmNsb3NlKCkKKwogICAgSWYgdGhlICp1cmwqIHVzZXMgdGhlIDpmaWxlOmBodHRwOmAgc2NoZW1lIGlkZW50aWZpZXIsIHRoZSBvcHRpb25hbCAqZGF0YSoKICAgIGFyZ3VtZW50IG1heSBiZSBnaXZlbiB0byBzcGVjaWZ5IGEgYGBQT1NUYGAgcmVxdWVzdCAobm9ybWFsbHkgdGhlIHJlcXVlc3QKICAgIHR5cGUgaXMgYGBHRVRgYCkuICBUaGUgKmRhdGEqIGFyZ3VtZW50IG11c3QgYmUgYSBieXRlcyBvYmplY3QgaW4gc3RhbmRhcmQKQEAgLTExNzAsMjAgKzEyNDAsMjAgQEAKICAgIHRoZSAgZG93bmxvYWQgaXMgaW50ZXJydXB0ZWQuCiAKICAgIFRoZSAqQ29udGVudC1MZW5ndGgqIGlzIHRyZWF0ZWQgYXMgYSBsb3dlciBib3VuZDogaWYgdGhlcmUncyBtb3JlIGRhdGEgIHRvIHJlYWQsCi0gICA6ZnVuYzpgdXJscmV0cmlldmVgIHJlYWRzIG1vcmUgZGF0YSwgYnV0IGlmIGxlc3MgZGF0YSBpcyBhdmFpbGFibGUsICBpdCByYWlzZXMKLSAgIHRoZSBleGNlcHRpb24uCisgICB1cmxyZXRyaWV2ZSByZWFkcyBtb3JlIGRhdGEsIGJ1dCBpZiBsZXNzIGRhdGEgaXMgYXZhaWxhYmxlLCAgaXQgcmFpc2VzIHRoZQorICAgZXhjZXB0aW9uLgogCiAgICBZb3UgY2FuIHN0aWxsIHJldHJpZXZlIHRoZSBkb3dubG9hZGVkIGRhdGEgaW4gdGhpcyBjYXNlLCBpdCBpcyBzdG9yZWQgIGluIHRoZQogICAgOmF0dHI6YGNvbnRlbnRgIGF0dHJpYnV0ZSBvZiB0aGUgZXhjZXB0aW9uIGluc3RhbmNlLgogCi0gICBJZiBubyAqQ29udGVudC1MZW5ndGgqIGhlYWRlciB3YXMgc3VwcGxpZWQsIDpmdW5jOmB1cmxyZXRyaWV2ZWAgY2FuIG5vdCBjaGVjawotICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgaXQgaGFzIGRvd25sb2FkZWQsIGFuZCBqdXN0IHJldHVybnMgaXQuICBJbiB0aGlzIGNhc2UKLSAgIHlvdSBqdXN0IGhhdmUgdG8gYXNzdW1lIHRoYXQgdGhlIGRvd25sb2FkIHdhcyBzdWNjZXNzZnVsLgorICAgSWYgbm8gKkNvbnRlbnQtTGVuZ3RoKiBoZWFkZXIgd2FzIHN1cHBsaWVkLCB1cmxyZXRyaWV2ZSBjYW4gbm90IGNoZWNrIHRoZSBzaXplCisgICBvZiB0aGUgZGF0YSBpdCBoYXMgZG93bmxvYWRlZCwgYW5kIGp1c3QgcmV0dXJucyBpdC4gIEluIHRoaXMgY2FzZSB5b3UganVzdCBoYXZlCisgICB0byBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwuCiAKIC4uIGZ1bmN0aW9uOjogdXJsY2xlYW51cCgpCiAKLSAgIENsZWFyIHRoZSBjYWNoZSB0aGF0IG1heSBoYXZlIGJlZW4gYnVpbHQgdXAgYnkgcHJldmlvdXMgY2FsbHMgdG8KLSAgIDpmdW5jOmB1cmxyZXRyaWV2ZWAuCisgICBDbGVhbnMgdXAgdGVtcG9yYXJ5IGZpbGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBsZWZ0IGJlaGluZCBieSBwcmV2aW91cworICAgY2FsbHMgdG8gOmZ1bmM6YHVybHJldHJpZXZlYC4KIAogLi4gY2xhc3M6OiBVUkxvcGVuZXIocHJveGllcz1Ob25lLCAqKng1MDkpCiAKQEAgLTEyMDcsNyArMTI3Nyw3IEBACiAgICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgc3VwcG9ydGVkIHRvIHByb3ZpZGUgYW4gIFNTTCBrZXkgYW5kIGNlcnRpZmljYXRlOwogICAgYm90aCBhcmUgbmVlZGVkIHRvIHN1cHBvcnQgY2xpZW50IGF1dGhlbnRpY2F0aW9uLgogCi0gICA6Y2xhc3M6YFVSTG9wZW5lcmAgb2JqZWN0cyB3aWxsIHJhaXNlIGFuIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgc2VydmVyCisgICA6Y2xhc3M6YFVSTG9wZW5lcmAgb2JqZWN0cyB3aWxsIHJhaXNlIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgc2VydmVyCiAgICByZXR1cm5zIGFuIGVycm9yIGNvZGUuCiAKICAgICAuLiBtZXRob2Q6OiBvcGVuKGZ1bGx1cmwsIGRhdGE9Tm9uZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYTc0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucnN0CkBAIC0wLDAgKzEsOSBAQAorOm1vZDpgdXJsbGliYCAtLS0gVVJMIGhhbmRsaW5nIG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2BgdXJsbGliYGAgaXMgYSBwYWNrYWdlIHRoYXQgY29sbGVjdHMgc2V2ZXJhbCBtb2R1bGVzIGZvciB3b3JraW5nIHdpdGggVVJMczoKKworKiA6bW9kOmB1cmxsaWIucmVxdWVzdGAgZm9yIG9wZW5pbmcgYW5kIHJlYWRpbmcgVVJMcworKiA6bW9kOmB1cmxsaWIuZXJyb3JgIGNvbnRhaW5pbmcgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IDptb2Q6YHVybGxpYi5yZXF1ZXN0YAorKiA6bW9kOmB1cmxsaWIucGFyc2VgIGZvciBwYXJzaW5nIFVSTHMKKyogOm1vZDpgdXJsbGliLnJvYm90cGFyc2VyYCBmb3IgcGFyc2luZyBgYHJvYm90cy50eHRgYCBmaWxlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdmVudi5yc3QgYi9Eb2MvbGlicmFyeS92ZW52LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDk5OTYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKQEAgLTAsMCArMSwxODAgQEAKKzptb2Q6YHZlbnZgIC0tLSBDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHZlbnYKKyAgIDpzeW5vcHNpczogQ3JlYXRpb24gb2YgdmlydHVhbCBlbnZpcm9ubWVudHMuCisuLiBtb2R1bGVhdXRob3I6OiBWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAeWFob28uY28udWs+CisuLiBzZWN0aW9uYXV0aG9yOjogVmluYXkgU2FqaXAgPHZpbmF5X3NhamlwQHlhaG9vLmNvLnVrPgorCisKKy4uIGluZGV4OjogcGFpcjogRW52aXJvbm1lbnRzOyB2aXJ0dWFsCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi92ZW52LnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgdmVudmAgbW9kdWxlIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGxpZ2h0d2VpZ2h0ICJ2aXJ0dWFsCitlbnZpcm9ubWVudHMiIHdpdGggdGhlaXIgb3duIHNpdGUgZGlyZWN0b3JpZXMsIG9wdGlvbmFsbHkgaXNvbGF0ZWQgZnJvbSBzeXN0ZW0KK3NpdGUgZGlyZWN0b3JpZXMuICBFYWNoIHZpcnR1YWwgZW52aXJvbm1lbnQgaGFzIGl0cyBvd24gUHl0aG9uIGJpbmFyeSAoYWxsb3dpbmcKK2NyZWF0aW9uIG9mIGVudmlyb25tZW50cyB3aXRoIHZhcmlvdXMgUHl0aG9uIHZlcnNpb25zKSBhbmQgY2FuIGhhdmUgaXRzIG93bgoraW5kZXBlbmRlbnQgc2V0IG9mIGluc3RhbGxlZCBQeXRob24gcGFja2FnZXMgaW4gaXRzIHNpdGUgZGlyZWN0b3JpZXMuCisKKworQ3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluY2x1ZGU6OiAvdXNpbmcvdmVudi1jcmVhdGUuaW5jCisKKworLi4gX3ZlbnYtZGVmOgorCisuLiBub3RlOjogQSB2aXJ0dWFsIGVudmlyb25tZW50IChhbHNvIGNhbGxlZCBhIGBgdmVudmBgKSBpcyBhIFB5dGhvbgorICAgZW52aXJvbm1lbnQgc3VjaCB0aGF0IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGxpYnJhcmllcyBhbmQgc2NyaXB0cworICAgaW5zdGFsbGVkIGludG8gaXQgYXJlIGlzb2xhdGVkIGZyb20gdGhvc2UgaW5zdGFsbGVkIGluIG90aGVyIHZpcnR1YWwKKyAgIGVudmlyb25tZW50cywgYW5kIChieSBkZWZhdWx0KSBhbnkgbGlicmFyaWVzIGluc3RhbGxlZCBpbiBhICJzeXN0ZW0iIFB5dGhvbiwKKyAgIGkuZS4gb25lIHdoaWNoIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4KKworICAgQSB2ZW52IGlzIGEgZGlyZWN0b3J5IHRyZWUgd2hpY2ggY29udGFpbnMgUHl0aG9uIGV4ZWN1dGFibGUgZmlsZXMgYW5kCisgICBvdGhlciBmaWxlcyB3aGljaCBpbmRpY2F0ZSB0aGF0IGl0IGlzIGEgdmVudi4KKworICAgQ29tbW9uIGluc3RhbGxhdGlvbiB0b29scyBzdWNoIGFzIGBgRGlzdHJpYnV0ZWBgIGFuZCBgYHBpcGBgIHdvcmsgYXMKKyAgIGV4cGVjdGVkIHdpdGggdmVudnMgLSBpLmUuIHdoZW4gYSB2ZW52IGlzIGFjdGl2ZSwgdGhleSBpbnN0YWxsIFB5dGhvbgorICAgcGFja2FnZXMgaW50byB0aGUgdmVudiB3aXRob3V0IG5lZWRpbmcgdG8gYmUgdG9sZCB0byBkbyBzbyBleHBsaWNpdGx5LgorICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBpbnN0YWxsIHRoZW0gaW50byB0aGUgdmVudiBmaXJzdDogdGhpcyBjb3VsZCBiZQorICAgZG9uZSBieSBydW5uaW5nIGBgZGlzdHJpYnV0ZV9zZXR1cC5weWBgIHdpdGggdGhlIHZlbnYgYWN0aXZhdGVkLAorICAgZm9sbG93ZWQgYnkgcnVubmluZyBgYGVhc3lfaW5zdGFsbCBwaXBgYC4gQWx0ZXJuYXRpdmVseSwgeW91IGNvdWxkIGRvd25sb2FkCisgICB0aGUgc291cmNlIHRhcmJhbGxzIGFuZCBydW4gYGBweXRob24gc2V0dXAucHkgaW5zdGFsbGBgIGFmdGVyIHVucGFja2luZywKKyAgIHdpdGggdGhlIHZlbnYgYWN0aXZhdGVkLgorCisgICBXaGVuIGEgdmVudiBpcyBhY3RpdmUgKGkuZS4gdGhlIHZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgaXMgcnVubmluZyksIHRoZQorICAgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBiYXNlCisgICBkaXJlY3Rvcnkgb2YgdGhlIHZlbnYsIHdoZXJlYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uCisgICB3aGljaCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHZlbnYuIElmIGEgdmVudiBpcyBub3QgYWN0aXZlLCB0aGVuCisgICA6YXR0cjpgc3lzLnByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgICh0aGV5CisgICBhbGwgcG9pbnQgdG8gYSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uKS4KKworCitBUEkKKy0tLQorCisuLiBoaWdobGlnaHQ6OiBweXRob24KKworVGhlIGhpZ2gtbGV2ZWwgbWV0aG9kIGRlc2NyaWJlZCBhYm92ZSBtYWtlcyB1c2Ugb2YgYSBzaW1wbGUgQVBJIHdoaWNoIHByb3ZpZGVzCittZWNoYW5pc21zIGZvciB0aGlyZC1wYXJ0eSB2aXJ0dWFsIGVudmlyb25tZW50IGNyZWF0b3JzIHRvIGN1c3RvbWl6ZSBlbnZpcm9ubWVudAorY3JlYXRpb24gYWNjb3JkaW5nIHRvIHRoZWlyIG5lZWRzLCB0aGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcy4KKworLi4gY2xhc3M6OiBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UpCisKKyAgICBUaGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgb24KKyAgICBpbnN0YW50aWF0aW9uOgorCisgICAgKiBgYHN5c3RlbV9zaXRlX3BhY2thZ2VzYGAgLS0gYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhhdCB0aGUgc3lzdGVtIFB5dGhvbgorICAgICAgc2l0ZS1wYWNrYWdlcyBzaG91bGQgYmUgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudCAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KKworICAgICogYGBjbGVhcmBgIC0tIGEgQm9vbGVhbiB2YWx1ZSB3aGljaCwgaWYgVHJ1ZSwgd2lsbCBkZWxldGUgYW55IGV4aXN0aW5nIHRhcmdldAorICAgICAgZGlyZWN0b3J5IGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24gKGRlZmF1bHRzIHRvIGBgRmFsc2VgYCkuCisKKyAgICAqIGBgc3ltbGlua3NgYCAtLSBhIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGF0dGVtcHQgdG8gc3ltbGluayB0aGUKKyAgICAgIFB5dGhvbiBiaW5hcnkgKGFuZCBhbnkgbmVjZXNzYXJ5IERMTHMgb3Igb3RoZXIgYmluYXJpZXMsCisgICAgICBlLmcuIGBgcHl0aG9udy5leGVgYCksIHJhdGhlciB0aGFuIGNvcHlpbmcuIERlZmF1bHRzIHRvIGBgVHJ1ZWBgIG9uIExpbnV4IGFuZAorICAgICAgVW5peCBzeXN0ZW1zLCBidXQgYGBGYWxzZWBgIG9uIFdpbmRvd3MuCisKKyAgICAqIGBgdXBncmFkZWBgIC0tIGEgQm9vbGVhbiB2YWx1ZSB3aGljaCwgaWYgVHJ1ZSwgd2lsbCB1cGdyYWRlIGFuIGV4aXN0aW5nCisgICAgICBlbnZpcm9ubWVudCB3aXRoIHRoZSBydW5uaW5nIFB5dGhvbiAtIGZvciB1c2Ugd2hlbiB0aGF0IFB5dGhvbiBoYXMgYmVlbgorICAgICAgdXBncmFkZWQgaW4tcGxhY2UgKGRlZmF1bHRzIHRvIGBgRmFsc2VgYCkuCisKKworCisgICAgQ3JlYXRvcnMgb2YgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCB0b29scyB3aWxsIGJlIGZyZWUgdG8gdXNlIHRoZQorICAgIHByb3ZpZGVkIGBgRW52QnVpbGRlcmBgIGNsYXNzIGFzIGEgYmFzZSBjbGFzcy4KKworICAgIFRoZSByZXR1cm5lZCBlbnYtYnVpbGRlciBpcyBhbiBvYmplY3Qgd2hpY2ggaGFzIGEgbWV0aG9kLCBgYGNyZWF0ZWBgOgorCisgICAgLi4gbWV0aG9kOjogY3JlYXRlKGVudl9kaXIpCisKKyAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYXMgcmVxdWlyZWQgYXJndW1lbnQgdGhlIHBhdGggKGFic29sdXRlIG9yIHJlbGF0aXZlIHRvCisgICAgICAgIHRoZSBjdXJyZW50IGRpcmVjdG9yeSkgb2YgdGhlIHRhcmdldCBkaXJlY3Rvcnkgd2hpY2ggaXMgdG8gY29udGFpbiB0aGUKKyAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4gIFRoZSBgYGNyZWF0ZWBgIG1ldGhvZCB3aWxsIGVpdGhlciBjcmVhdGUgdGhlCisgICAgICAgIGVudmlyb25tZW50IGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5LCBvciByYWlzZSBhbiBhcHByb3ByaWF0ZQorICAgICAgICBleGNlcHRpb24uCisKKyAgICAgICAgVGhlIGBgY3JlYXRlYGAgbWV0aG9kIG9mIHRoZSBgYEVudkJ1aWxkZXJgYCBjbGFzcyBpbGx1c3RyYXRlcyB0aGUgaG9va3MKKyAgICAgICAgYXZhaWxhYmxlIGZvciBzdWJjbGFzcyBjdXN0b21pemF0aW9uOjoKKworICAgICAgICAgICAgZGVmIGNyZWF0ZShzZWxmLCBlbnZfZGlyKToKKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBDcmVhdGUgYSB2aXJ0dWFsaXplZCBQeXRob24gZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgZW52X2RpciBpcyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgaW4uCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZW52X2RpciA9IG9zLnBhdGguYWJzcGF0aChlbnZfZGlyKQorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzZWxmLmNyZWF0ZV9kaXJlY3RvcmllcyhlbnZfZGlyKQorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbmZpZ3VyYXRpb24oY29udGV4dCkKKyAgICAgICAgICAgICAgICBzZWxmLnNldHVwX3B5dGhvbihjb250ZXh0KQorICAgICAgICAgICAgICAgIHNlbGYuc2V0dXBfc2NyaXB0cyhjb250ZXh0KQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9zZXR1cChjb250ZXh0KQorCisgICAgICAgIEVhY2ggb2YgdGhlIG1ldGhvZHMgOm1ldGg6YGNyZWF0ZV9kaXJlY3Rvcmllc2AsCisgICAgICAgIDptZXRoOmBjcmVhdGVfY29uZmlndXJhdGlvbmAsIDptZXRoOmBzZXR1cF9weXRob25gLAorICAgICAgICA6bWV0aDpgc2V0dXBfc2NyaXB0c2AgYW5kIDptZXRoOmBwb3N0X3NldHVwYCBjYW4gYmUgb3ZlcnJpZGRlbi4KKworICAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9kaXJlY3RvcmllcyhlbnZfZGlyKQorCisgICAgICAgIENyZWF0ZXMgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBhbmQgYWxsIG5lY2Vzc2FyeSBkaXJlY3RvcmllcywgYW5kCisgICAgICAgIHJldHVybnMgYSBjb250ZXh0IG9iamVjdC4gIFRoaXMgaXMganVzdCBhIGhvbGRlciBmb3IgYXR0cmlidXRlcyAoc3VjaCBhcworICAgICAgICBwYXRocyksIGZvciB1c2UgYnkgdGhlIG90aGVyIG1ldGhvZHMuCisKKyAgICAuLiBtZXRob2Q6OiBjcmVhdGVfY29uZmlndXJhdGlvbihjb250ZXh0KQorCisgICAgICAgIENyZWF0ZXMgdGhlIGBgcHl2ZW52LmNmZ2BgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAuLiBtZXRob2Q6OiBzZXR1cF9weXRob24oY29udGV4dCkKKworICAgICAgICBDcmVhdGVzIGEgY29weSBvZiB0aGUgUHl0aG9uIGV4ZWN1dGFibGUgKGFuZCwgdW5kZXIgV2luZG93cywgRExMcykgaW4KKyAgICAgICAgdGhlIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogc2V0dXBfc2NyaXB0cyhjb250ZXh0KQorCisgICAgICAgIEluc3RhbGxzIGFjdGl2YXRpb24gc2NyaXB0cyBhcHByb3ByaWF0ZSB0byB0aGUgcGxhdGZvcm0gaW50byB0aGUgdmlydHVhbAorICAgICAgICBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IHBvc3Rfc2V0dXAoY29udGV4dCkKKworICAgICAgICBBIHBsYWNlaG9sZGVyIG1ldGhvZCB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGlyZCBwYXJ0eQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgdG8gcHJlLWluc3RhbGwgcGFja2FnZXMgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgb3IKKyAgICAgICAgcGVyZm9ybSBvdGhlciBwb3N0LWNyZWF0aW9uIHN0ZXBzLgorCisgICAgSW4gYWRkaXRpb24sIDpjbGFzczpgRW52QnVpbGRlcmAgcHJvdmlkZXMgdGhpcyB1dGlsaXR5IG1ldGhvZCB0aGF0IGNhbiBiZQorICAgIGNhbGxlZCBmcm9tIDptZXRoOmBzZXR1cF9zY3JpcHRzYCBvciA6bWV0aDpgcG9zdF9zZXR1cGAgaW4gc3ViY2xhc3NlcyB0bworICAgIGFzc2lzdCBpbiBpbnN0YWxsaW5nIGN1c3RvbSBzY3JpcHRzIGludG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisKKyAgICAuLiBtZXRob2Q6OiBpbnN0YWxsX3NjcmlwdHMoY29udGV4dCwgcGF0aCkKKworICAgICAgICAqcGF0aCogaXMgdGhlIHBhdGggdG8gYSBkaXJlY3RvcnkgdGhhdCBzaG91bGQgY29udGFpbiBzdWJkaXJlY3RvcmllcworICAgICAgICAiY29tbW9uIiwgInBvc2l4IiwgIm50IiwgZWFjaCBjb250YWluaW5nIHNjcmlwdHMgZGVzdGluZWQgZm9yIHRoZSBiaW4KKyAgICAgICAgZGlyZWN0b3J5IGluIHRoZSBlbnZpcm9ubWVudC4gIFRoZSBjb250ZW50cyBvZiAiY29tbW9uIiBhbmQgdGhlCisgICAgICAgIGRpcmVjdG9yeSBjb3JyZXNwb25kaW5nIHRvIDpkYXRhOmBvcy5uYW1lYCBhcmUgY29waWVkIGFmdGVyIHNvbWUgdGV4dAorICAgICAgICByZXBsYWNlbWVudCBvZiBwbGFjZWhvbGRlcnM6CisKKyAgICAgICAgKiBgYF9fVkVOVl9ESVJfX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGVudmlyb25tZW50CisgICAgICAgICAgZGlyZWN0b3J5LgorCisgICAgICAgICogYGBfX1ZFTlZfTkFNRV9fYGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgZW52aXJvbm1lbnQgbmFtZSAoZmluYWwgcGF0aAorICAgICAgICAgIHNlZ21lbnQgb2YgZW52aXJvbm1lbnQgZGlyZWN0b3J5KS4KKworICAgICAgICAqIGBgX19WRU5WX0JJTl9OQU1FX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBiaW4gZGlyZWN0b3J5CisgICAgICAgICAgKGVpdGhlciBgYGJpbmBgIG9yIGBgU2NyaXB0c2BgKS4KKworICAgICAgICAqIGBgX19WRU5WX1BZVEhPTl9fYGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUKKyAgICAgICAgICBlbnZpcm9ubWVudCdzIGV4ZWN1dGFibGUuCisKKworVGhlcmUgaXMgYWxzbyBhIG1vZHVsZS1sZXZlbCBjb252ZW5pZW5jZSBmdW5jdGlvbjoKKworLi4gZnVuY3Rpb246OiBjcmVhdGUoZW52X2Rpciwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBzeW1saW5rcz1GYWxzZSkKKworICAgIENyZWF0ZSBhbiA6Y2xhc3M6YEVudkJ1aWxkZXJgIHdpdGggdGhlIGdpdmVuIGtleXdvcmQgYXJndW1lbnRzLCBhbmQgY2FsbCBpdHMKKyAgICA6bWV0aDpgfkVudkJ1aWxkZXIuY3JlYXRlYCBtZXRob2Qgd2l0aCB0aGUgKmVudl9kaXIqIGFyZ3VtZW50LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0IGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CmluZGV4IDhhZjE5YTIuLjgzODdmNWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAorKysgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKQEAgLTMzOSw4ICszMzksNyBAQAogICAgV3JpdGUgYSB3YXJuaW5nIHRvIGEgZmlsZS4gIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzCiAgICBgYGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpYGAgYW5kIHdyaXRlcyB0aGUKICAgIHJlc3VsdGluZyBzdHJpbmcgdG8gKmZpbGUqLCB3aGljaCBkZWZhdWx0cyB0byBgYHN5cy5zdGRlcnJgYC4gIFlvdSBtYXkgcmVwbGFjZQotICAgdGhpcyBmdW5jdGlvbiB3aXRoIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIGJ5IGFzc2lnbmluZyB0bwotICAgYGB3YXJuaW5ncy5zaG93d2FybmluZ2BgLgorICAgdGhpcyBmdW5jdGlvbiB3aXRoIGFueSBjYWxsYWJsZSBieSBhc3NpZ25pbmcgdG8gYGB3YXJuaW5ncy5zaG93d2FybmluZ2BgLgogICAgKmxpbmUqIGlzIGEgbGluZSBvZiBzb3VyY2UgY29kZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgd2FybmluZwogICAgbWVzc2FnZTsgaWYgKmxpbmUqIGlzIG5vdCBzdXBwbGllZCwgOmZ1bmM6YHNob3d3YXJuaW5nYCB3aWxsCiAgICB0cnkgdG8gcmVhZCB0aGUgbGluZSBzcGVjaWZpZWQgYnkgKmZpbGVuYW1lKiBhbmQgKmxpbmVubyouCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdCBiL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0CmluZGV4IGIyZGNmOGYuLjljMmIzYWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0CkBAIC05OCw0NyArOTgsNTUgQEAKIG1heSBiZSBwYXNzZWQgdG8gdGhlIDpmdW5jOmBnZXRgIGZ1bmN0aW9uIGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbnN0YW50aWF0aW9ucwogZm9yIHRoZSBjb250cm9sbGVyIGNsYXNzZXMsIGFsbCBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgVHlwZSBOYW1lICAgICAgICAgICAgIHwgQ2xhc3MgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfAotKz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCi18IGBgJ21vemlsbGEnYGAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdmaXJlZm94J2BgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbmV0c2NhcGUnYGAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCduZXRzY2FwZScpYCAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2dhbGVvbidgYCAgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdnYWxlb24nKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdlcGlwaGFueSdgYCAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZXBpcGhhbnknKWAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnc2tpcHN0b25lJ2BgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3Nlcignc2tpcHN0b25lJylgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2tmbWNsaWVudCdgYCAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdrb25xdWVyb3InYGAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAna2ZtJ2BgICAgICAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ21vc2FpYydgYCAgICAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ21vc2FpYycpYCAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdvcGVyYSdgYCAgICAgICAgICAgfCA6Y2xhc3M6YE9wZXJhKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZ3JhaWwnYGAgICAgICAgICAgIHwgOmNsYXNzOmBHcmFpbCgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2xpbmtzJ2BgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2xpbmtzJylgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdlbGlua3MnYGAgICAgICAgICAgfCA6Y2xhc3M6YEVsaW5rcygnZWxpbmtzJylgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbHlueCdgYCAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbHlueCcpYCAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3czbSdgYCAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ3czbScpYCAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCd3aW5kb3dzLWRlZmF1bHQnYGAgfCA6Y2xhc3M6YFdpbmRvd3NEZWZhdWx0YCAgICAgICAgICAgICAgICAgfCBcKDIpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbWFjb3N4J2BgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ2RlZmF1bHQnKWAgICAgICAgICAgICAgIHwgXCgzKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3NhZmFyaSdgYCAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdzYWZhcmknKWAgICAgICAgICAgICAgICB8IFwoMykgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBUeXBlIE5hbWUgICAgICAgICAgICAgIHwgQ2xhc3MgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfAorKz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KworfCBgYCdtb3ppbGxhJ2BgICAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdmaXJlZm94J2BgICAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCduZXRzY2FwZSdgYCAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCduZXRzY2FwZScpYCAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdnYWxlb24nYGAgICAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2dhbGVvbicpYCAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdlcGlwaGFueSdgYCAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2VwaXBoYW55JylgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdza2lwc3RvbmUnYGAgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3Nlcignc2tpcHN0b25lJylgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdrZm1jbGllbnQnYGAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdrb25xdWVyb3InYGAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdrZm0nYGAgICAgICAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdtb3NhaWMnYGAgICAgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3NlcignbW9zYWljJylgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdvcGVyYSdgYCAgICAgICAgICAgIHwgOmNsYXNzOmBPcGVyYSgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdncmFpbCdgYCAgICAgICAgICAgIHwgOmNsYXNzOmBHcmFpbCgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdsaW5rcydgYCAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbGlua3MnKWAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdlbGlua3MnYGAgICAgICAgICAgIHwgOmNsYXNzOmBFbGlua3MoJ2VsaW5rcycpYCAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdseW54J2BgICAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbHlueCcpYCAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd3M20nYGAgICAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcigndzNtJylgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd3aW5kb3dzLWRlZmF1bHQnYGAgIHwgOmNsYXNzOmBXaW5kb3dzRGVmYXVsdGAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdtYWNvc3gnYGAgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ2RlZmF1bHQnKWAgICAgICAgICAgICAgIHwgXCgzKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdzYWZhcmknYGAgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ3NhZmFyaScpYCAgICAgICAgICAgICAgIHwgXCgzKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdnb29nbGUtY2hyb21lJ2BgICAgIHwgOmNsYXNzOmBDaHJvbWUoJ2dvb2dsZS1jaHJvbWUnKWAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdjaHJvbWUnYGAgICAgICAgICAgIHwgOmNsYXNzOmBDaHJvbWUoJ2Nocm9tZScpYCAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdjaHJvbWl1bSdgYCAgICAgICAgIHwgOmNsYXNzOmBDaHJvbWl1bSgnY2hyb21pdW0nKWAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdjaHJvbWl1bS1icm93c2VyJ2BgIHwgOmNsYXNzOmBDaHJvbWl1bSgnY2hyb21pdW0tYnJvd3NlcicpYCAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCiBOb3RlczoKIApAQCAtMTU1LDEyICsxNjMsMTUgQEAKICgzKQogICAgT25seSBvbiBNYWMgT1MgWCBwbGF0Zm9ybS4KIAorLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBTdXBwb3J0IGZvciBDaHJvbWUvQ2hyb21pdW0gaGFzIGJlZW4gYWRkZWQuCisKIEhlcmUgYXJlIHNvbWUgc2ltcGxlIGV4YW1wbGVzOjoKIAotICAgdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy8nCisgICB1cmwgPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy8nCiAKICAgICMgT3BlbiBVUkwgaW4gYSBuZXcgdGFiLCBpZiBhIGJyb3dzZXIgd2luZG93IGlzIGFscmVhZHkgb3Blbi4KLSAgIHdlYmJyb3dzZXIub3Blbl9uZXdfdGFiKHVybCArICdkb2MvJykKKyAgIHdlYmJyb3dzZXIub3Blbl9uZXdfdGFiKHVybCkKIAogICAgIyBPcGVuIFVSTCBpbiBuZXcgd2luZG93LCByYWlzaW5nIHRoZSB3aW5kb3cgaWYgcG9zc2libGUuCiAgICB3ZWJicm93c2VyLm9wZW5fbmV3KHVybCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CmluZGV4IGU0OWI1MWIuLmE4NzhkYTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdApAQCAtMzgsNyArMzgsMTEgQEAKICAgICprZXkqIGlzIHRoZSBwcmVkZWZpbmVkIGhhbmRsZSB0byBjb25uZWN0IHRvLgogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYQotICAgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gZnVuY3Rpb246OiBDcmVhdGVLZXkoa2V5LCBzdWJfa2V5KQpAQCAtNTcsNyArNjEsMTEgQEAKICAgIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEKLSAgIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGZ1bmN0aW9uOjogQ3JlYXRlS2V5RXgoa2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9S0VZX0FMTF9BQ0NFU1MpCkBAIC04MiwxMCArOTAsMTQgQEAKICAgIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEKLSAgIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IERlbGV0ZUtleShrZXksIHN1Yl9rZXkpCiAKQEAgLTEwMCw3ICsxMTIsMTEgQEAKICAgICpUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy4qCiAKICAgIElmIHRoZSBtZXRob2Qgc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsIGlzIHJlbW92ZWQuCi0gICBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIElmIHRoZSBtZXRob2QgZmFpbHMsIGEgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gZnVuY3Rpb246OiBEZWxldGVLZXlFeChrZXksIHN1Yl9rZXksIGFjY2Vzcz1LRVlfQUxMX0FDQ0VTUywgcmVzZXJ2ZWQ9MCkKQEAgLTEyOSwxMiArMTQ1LDE2IEBACiAgICAqVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuKgogCiAgICBJZiB0aGUgbWV0aG9kIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLCBpcwotICAgcmVtb3ZlZC4gSWYgdGhlIG1ldGhvZCBmYWlscywgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICByZW1vdmVkLiBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCiAKICAgIE9uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIGZ1bmN0aW9uOjogRGVsZXRlVmFsdWUoa2V5LCB2YWx1ZSkKIApAQCAtMTU2LDkgKzE3NiwxMyBAQAogICAgKmluZGV4KiBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIGtleSB0byByZXRyaWV2ZS4KIAogICAgVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuICBJdCBpcwotICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGEgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMKKyAgIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBhIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLCBpbmRpY2F0aW5nLCBubyBtb3JlIHZhbHVlcyBhcmUgYXZhaWxhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IEVudW1WYWx1ZShrZXksIGluZGV4KQogCkBAIC0xNzAsNyArMTk0LDcgQEAKICAgICppbmRleCogaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0byByZXRyaWV2ZS4KIAogICAgVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuIEl0IGlzCi0gICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGEgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMKKyAgIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMKICAgIHJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcy4KIAogICAgVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6CkBAIC0xODksNiArMjEzLDEwIEBACiAgICB8ICAgICAgIHwgOm1ldGg6YFNldFZhbHVlRXhgKSAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IEV4cGFuZEVudmlyb25tZW50U3RyaW5ncyhzdHIpCiAKQEAgLTI2MCw5ICsyODgsMTQgQEAKIAogICAgVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXkuCiAKLSAgIElmIHRoZSBmdW5jdGlvbiBmYWlscywgOmV4YzpgV2luZG93c0Vycm9yYCBpcyByYWlzZWQuCisgICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgQWxsb3cgdGhlIHVzZSBvZiBuYW1lZCBhcmd1bWVudHMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWxsb3cgdGhlIHVzZSBvZiBuYW1lZCBhcmd1bWVudHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGZ1bmN0aW9uOjogT3BlbktleUV4KCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0IGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKaW5kZXggMWZkMzQ1MS4uMWNlZjJlOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKQEAgLTYwOSw2ICs2MDksOSBAQAogICAgICAgYXMgOmNsYXNzOmBCYXNlQ0dJSGFuZGxlcmAgYW5kIDpjbGFzczpgQ0dJSGFuZGxlcmApIHRoYXQgYXJlIG5vdCBIVFRQIG9yaWdpbgogICAgICAgc2VydmVycy4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoZSB0ZXJtICJQeXRob24iIGlzIHJlcGxhY2VkIHdpdGggaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdGVybSBsaWtlCisgICAgICAgICAiQ1B5dGhvbiIsICJKeXRob24iIGV0Yy4KIAogICAgLi4gbWV0aG9kOjogQmFzZUhhbmRsZXIuZ2V0X3NjaGVtZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QgYi9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0CmluZGV4IGFlMjg2YjAuLmE1YzZmYjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdApAQCAtMTQ3LDEyICsxNDcsNyBAQAogICAgdGhlIERPTSBub2RlLgogCiAgICBXaXRoIGFuIGV4cGxpY2l0ICplbmNvZGluZyogWzFdXyBhcmd1bWVudCwgdGhlIHJlc3VsdCBpcyBhIGJ5dGUKLSAgIHN0cmluZyBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UKLSAgIGFsd2F5cyBzcGVjaWZ5IGFuIGVuY29kaW5nOyB5b3UgbWF5IHVzZSBhbnkgZW5jb2RpbmcgeW91IGxpa2UsIGJ1dAotICAgYW4gYXJndW1lbnQgb2YgInV0Zi04IiBpcyB0aGUgbW9zdCBjb21tb24gY2hvaWNlLCBhdm9pZGluZwotICAgOmV4YzpgVW5pY29kZUVycm9yYCBleGNlcHRpb25zIGluIGNhc2Ugb2YgdW5yZXByZXNlbnRhYmxlIHRleHQKLSAgIGRhdGEuCi0KKyAgIHN0cmluZyBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLgogICAgV2l0aCBubyAqZW5jb2RpbmcqIGFyZ3VtZW50LCB0aGUgcmVzdWx0IGlzIGEgVW5pY29kZSBzdHJpbmcsIGFuZCB0aGUKICAgIFhNTCBkZWNsYXJhdGlvbiBpbiB0aGUgcmVzdWx0aW5nIHN0cmluZyBkb2VzIG5vdCBzcGVjaWZ5IGFuCiAgICBlbmNvZGluZy4gRW5jb2RpbmcgdGhpcyBzdHJpbmcgaW4gYW4gZW5jb2Rpbmcgb3RoZXIgdGhhbiBVVEYtOCBpcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKaW5kZXggYzVjODgwMi4uMjZmMWZiZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CkBAIC01LDQ5ICs1LDMyMyBAQAogICAgOnN5bm9wc2lzOiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRWxlbWVudFRyZWUgQVBJLgogLi4gbW9kdWxlYXV0aG9yOjogRnJlZHJpayBMdW5kaCA8ZnJlZHJpa0BweXRob253YXJlLmNvbT4KIAotKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5YAorVGhlIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgbW9kdWxlIGltcGxlbWVudHMgYSBzaW1wbGUgYW5kIGVmZmljaWVudCBBUEkKK2ZvciBwYXJzaW5nIGFuZCBjcmVhdGluZyBYTUwgZGF0YS4KIAotLS0tLS0tLS0tLS0tLS0KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGlzIG1vZHVsZSB3aWxsIHVzZSBhIGZhc3QgaW1wbGVtZW50YXRpb24gd2hlbmV2ZXIgYXZhaWxhYmxlLgorICAgVGhlIDptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgIG1vZHVsZSBpcyBkZXByZWNhdGVkLgogCi1UaGUgOmNsYXNzOmBFbGVtZW50YCB0eXBlIGlzIGEgZmxleGlibGUgY29udGFpbmVyIG9iamVjdCwgZGVzaWduZWQgdG8gc3RvcmUKLWhpZXJhcmNoaWNhbCBkYXRhIHN0cnVjdHVyZXMgaW4gbWVtb3J5LiAgVGhlIHR5cGUgY2FuIGJlIGRlc2NyaWJlZCBhcyBhIGNyb3NzCi1iZXR3ZWVuIGEgbGlzdCBhbmQgYSBkaWN0aW9uYXJ5LgorVHV0b3JpYWwKKy0tLS0tLS0tCiAKLUVhY2ggZWxlbWVudCBoYXMgYSBudW1iZXIgb2YgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggaXQ6CitUaGlzIGlzIGEgc2hvcnQgdHV0b3JpYWwgZm9yIHVzaW5nIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgKGBgRVRgYCBpbgorc2hvcnQpLiAgVGhlIGdvYWwgaXMgdG8gZGVtb25zdHJhdGUgc29tZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2tzIGFuZCBiYXNpYworY29uY2VwdHMgb2YgdGhlIG1vZHVsZS4KIAotKiBhIHRhZyB3aGljaCBpcyBhIHN0cmluZyBpZGVudGlmeWluZyB3aGF0IGtpbmQgb2YgZGF0YSB0aGlzIGVsZW1lbnQgcmVwcmVzZW50cwotICAodGhlIGVsZW1lbnQgdHlwZSwgaW4gb3RoZXIgd29yZHMpLgorWE1MIHRyZWUgYW5kIGVsZW1lbnRzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotKiBhIG51bWJlciBvZiBhdHRyaWJ1dGVzLCBzdG9yZWQgaW4gYSBQeXRob24gZGljdGlvbmFyeS4KK1hNTCBpcyBhbiBpbmhlcmVudGx5IGhpZXJhcmNoaWNhbCBkYXRhIGZvcm1hdCwgYW5kIHRoZSBtb3N0IG5hdHVyYWwgd2F5IHRvCityZXByZXNlbnQgaXQgaXMgd2l0aCBhIHRyZWUuICBgYEVUYGAgaGFzIHR3byBjbGFzc2VzIGZvciB0aGlzIHB1cnBvc2UgLQorOmNsYXNzOmBFbGVtZW50VHJlZWAgcmVwcmVzZW50cyB0aGUgd2hvbGUgWE1MIGRvY3VtZW50IGFzIGEgdHJlZSwgYW5kCis6Y2xhc3M6YEVsZW1lbnRgIHJlcHJlc2VudHMgYSBzaW5nbGUgbm9kZSBpbiB0aGlzIHRyZWUuICBJbnRlcmFjdGlvbnMgd2l0aAordGhlIHdob2xlIGRvY3VtZW50IChyZWFkaW5nIGFuZCB3cml0aW5nIHRvL2Zyb20gZmlsZXMpIGFyZSB1c3VhbGx5IGRvbmUKK29uIHRoZSA6Y2xhc3M6YEVsZW1lbnRUcmVlYCBsZXZlbC4gIEludGVyYWN0aW9ucyB3aXRoIGEgc2luZ2xlIFhNTCBlbGVtZW50CithbmQgaXRzIHN1Yi1lbGVtZW50cyBhcmUgZG9uZSBvbiB0aGUgOmNsYXNzOmBFbGVtZW50YCBsZXZlbC4KIAotKiBhIHRleHQgc3RyaW5nLgorLi4gX2VsZW1lbnR0cmVlLXBhcnNpbmcteG1sOgogCi0qIGFuIG9wdGlvbmFsIHRhaWwgc3RyaW5nLgorUGFyc2luZyBYTUwKK15eXl5eXl5eXl5eCiAKLSogYSBudW1iZXIgb2YgY2hpbGQgZWxlbWVudHMsIHN0b3JlZCBpbiBhIFB5dGhvbiBzZXF1ZW5jZQorV2UnbGwgYmUgdXNpbmcgdGhlIGZvbGxvd2luZyBYTUwgZG9jdW1lbnQgYXMgdGhlIHNhbXBsZSBkYXRhIGZvciB0aGlzIHNlY3Rpb246CiAKLVRvIGNyZWF0ZSBhbiBlbGVtZW50IGluc3RhbmNlLCB1c2UgdGhlIDpjbGFzczpgRWxlbWVudGAgY29uc3RydWN0b3Igb3IgdGhlCi06ZnVuYzpgU3ViRWxlbWVudGAgZmFjdG9yeSBmdW5jdGlvbi4KKy4uIGNvZGUtYmxvY2s6OiB4bWwKIAotVGhlIDpjbGFzczpgRWxlbWVudFRyZWVgIGNsYXNzIGNhbiBiZSB1c2VkIHRvIHdyYXAgYW4gZWxlbWVudCBzdHJ1Y3R1cmUsIGFuZAotY29udmVydCBpdCBmcm9tIGFuZCB0byBYTUwuCisgICA8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKyAgIDxkYXRhPgorICAgICAgIDxjb3VudHJ5IG5hbWU9IkxpZWNodGVuc3RlaW4iPgorICAgICAgICAgICA8cmFuaz4xPC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDA4PC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTQxMTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkF1c3RyaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iU3dpdHplcmxhbmQiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJTaW5nYXBvcmUiPgorICAgICAgICAgICA8cmFuaz40PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+NTk5MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iTWFsYXlzaWEiIGRpcmVjdGlvbj0iTiIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJQYW5hbWEiPgorICAgICAgICAgICA8cmFuaz42ODwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjEzNjAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvc3RhIFJpY2EiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29sb21iaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgIDwvY291bnRyeT4KKyAgIDwvZGF0YT4KIAotQSBDIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgQVBJIGlzIGF2YWlsYWJsZSBhcyA6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYC4KK1dlIGNhbiBpbXBvcnQgdGhpcyBkYXRhIGJ5IHJlYWRpbmcgZnJvbSBhIGZpbGU6OgorCisgICBpbXBvcnQgeG1sLmV0cmVlLkVsZW1lbnRUcmVlIGFzIEVUCisgICB0cmVlID0gRVQucGFyc2UoJ2NvdW50cnlfZGF0YS54bWwnKQorICAgcm9vdCA9IHRyZWUuZ2V0cm9vdCgpCisKK09yIGRpcmVjdGx5IGZyb20gYSBzdHJpbmc6OgorCisgICByb290ID0gRVQuZnJvbXN0cmluZyhjb3VudHJ5X2RhdGFfYXNfc3RyaW5nKQorCis6ZnVuYzpgZnJvbXN0cmluZ2AgcGFyc2VzIFhNTCBmcm9tIGEgc3RyaW5nIGRpcmVjdGx5IGludG8gYW4gOmNsYXNzOmBFbGVtZW50YCwKK3doaWNoIGlzIHRoZSByb290IGVsZW1lbnQgb2YgdGhlIHBhcnNlZCB0cmVlLiAgT3RoZXIgcGFyc2luZyBmdW5jdGlvbnMgbWF5CitjcmVhdGUgYW4gOmNsYXNzOmBFbGVtZW50VHJlZWAuICBDaGVjayB0aGUgZG9jdW1lbnRhdGlvbiB0byBiZSBzdXJlLgorCitBcyBhbiA6Y2xhc3M6YEVsZW1lbnRgLCBgYHJvb3RgYCBoYXMgYSB0YWcgYW5kIGEgZGljdGlvbmFyeSBvZiBhdHRyaWJ1dGVzOjoKKworICAgPj4+IHJvb3QudGFnCisgICAnZGF0YScKKyAgID4+PiByb290LmF0dHJpYgorICAge30KKworSXQgYWxzbyBoYXMgY2hpbGRyZW4gbm9kZXMgb3ZlciB3aGljaCB3ZSBjYW4gaXRlcmF0ZTo6CisKKyAgID4+PiBmb3IgY2hpbGQgaW4gcm9vdDoKKyAgIC4uLiAgIHByaW50KGNoaWxkLnRhZywgY2hpbGQuYXR0cmliKQorICAgLi4uCisgICBjb3VudHJ5IHsnbmFtZSc6ICdMaWVjaHRlbnN0ZWluJ30KKyAgIGNvdW50cnkgeyduYW1lJzogJ1NpbmdhcG9yZSd9CisgICBjb3VudHJ5IHsnbmFtZSc6ICdQYW5hbWEnfQorCitDaGlsZHJlbiBhcmUgbmVzdGVkLCBhbmQgd2UgY2FuIGFjY2VzcyBzcGVjaWZpYyBjaGlsZCBub2RlcyBieSBpbmRleDo6CisKKyAgID4+PiByb290WzBdWzFdLnRleHQKKyAgICcyMDA4JworCitGaW5kaW5nIGludGVyZXN0aW5nIGVsZW1lbnRzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgRWxlbWVudGAgaGFzIHNvbWUgdXNlZnVsIG1ldGhvZHMgdGhhdCBoZWxwIGl0ZXJhdGUgcmVjdXJzaXZlbHkgb3ZlciBhbGwKK3RoZSBzdWItdHJlZSBiZWxvdyBpdCAoaXRzIGNoaWxkcmVuLCB0aGVpciBjaGlsZHJlbiwgYW5kIHNvIG9uKS4gIEZvciBleGFtcGxlLAorOm1ldGg6YEVsZW1lbnQuaXRlcmA6OgorCisgICA+Pj4gZm9yIG5laWdoYm9yIGluIHJvb3QuaXRlcignbmVpZ2hib3InKToKKyAgIC4uLiAgIHByaW50KG5laWdoYm9yLmF0dHJpYikKKyAgIC4uLgorICAgeyduYW1lJzogJ0F1c3RyaWEnLCAnZGlyZWN0aW9uJzogJ0UnfQorICAgeyduYW1lJzogJ1N3aXR6ZXJsYW5kJywgJ2RpcmVjdGlvbic6ICdXJ30KKyAgIHsnbmFtZSc6ICdNYWxheXNpYScsICdkaXJlY3Rpb24nOiAnTid9CisgICB7J25hbWUnOiAnQ29zdGEgUmljYScsICdkaXJlY3Rpb24nOiAnVyd9CisgICB7J25hbWUnOiAnQ29sb21iaWEnLCAnZGlyZWN0aW9uJzogJ0UnfQorCis6bWV0aDpgRWxlbWVudC5maW5kYWxsYCBmaW5kcyBvbmx5IGVsZW1lbnRzIHdpdGggYSB0YWcgd2hpY2ggYXJlIGRpcmVjdAorY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgZWxlbWVudC4gIDptZXRoOmBFbGVtZW50LmZpbmRgIGZpbmRzIHRoZSAqZmlyc3QqIGNoaWxkCit3aXRoIGEgcGFydGljdWxhciB0YWcsIGFuZCA6bWV0aDpgRWxlbWVudC50ZXh0YCBhY2Nlc3NlcyB0aGUgZWxlbWVudCdzIHRleHQKK2NvbnRlbnQuICA6bWV0aDpgRWxlbWVudC5nZXRgIGFjY2Vzc2VzIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlczo6CisKKyAgID4+PiBmb3IgY291bnRyeSBpbiByb290LmZpbmRhbGwoJ2NvdW50cnknKToKKyAgIC4uLiAgIHJhbmsgPSBjb3VudHJ5LmZpbmQoJ3JhbmsnKS50ZXh0CisgICAuLi4gICBuYW1lID0gY291bnRyeS5nZXQoJ25hbWUnKQorICAgLi4uICAgcHJpbnQobmFtZSwgcmFuaykKKyAgIC4uLgorICAgTGllY2h0ZW5zdGVpbiAxCisgICBTaW5nYXBvcmUgNAorICAgUGFuYW1hIDY4CisKK01vcmUgc29waGlzdGljYXRlZCBzcGVjaWZpY2F0aW9uIG9mIHdoaWNoIGVsZW1lbnRzIHRvIGxvb2sgZm9yIGlzIHBvc3NpYmxlIGJ5Cit1c2luZyA6cmVmOmBYUGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4KKworTW9kaWZ5aW5nIGFuIFhNTCBGaWxlCiteXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworOmNsYXNzOmBFbGVtZW50VHJlZWAgcHJvdmlkZXMgYSBzaW1wbGUgd2F5IHRvIGJ1aWxkIFhNTCBkb2N1bWVudHMgYW5kIHdyaXRlIHRoZW0gdG8gZmlsZXMuCitUaGUgOm1ldGg6YEVsZW1lbnRUcmVlLndyaXRlYCBtZXRob2Qgc2VydmVzIHRoaXMgcHVycG9zZS4KKworT25jZSBjcmVhdGVkLCBhbiA6Y2xhc3M6YEVsZW1lbnRgIG9iamVjdCBtYXkgYmUgbWFuaXB1bGF0ZWQgYnkgZGlyZWN0bHkgY2hhbmdpbmcKK2l0cyBmaWVsZHMgKHN1Y2ggYXMgOmF0dHI6YEVsZW1lbnQudGV4dGApLCBhZGRpbmcgYW5kIG1vZGlmeWluZyBhdHRyaWJ1dGVzCisoOm1ldGg6YEVsZW1lbnQuc2V0YCBtZXRob2QpLCBhcyB3ZWxsIGFzIGFkZGluZyBuZXcgY2hpbGRyZW4gKGZvciBleGFtcGxlCit3aXRoIDptZXRoOmBFbGVtZW50LmFwcGVuZGApLgorCitMZXQncyBzYXkgd2Ugd2FudCB0byBhZGQgb25lIHRvIGVhY2ggY291bnRyeSdzIHJhbmssIGFuZCBhZGQgYW4gYGB1cGRhdGVkYGAKK2F0dHJpYnV0ZSB0byB0aGUgcmFuayBlbGVtZW50OjoKKworICAgPj4+IGZvciByYW5rIGluIHJvb3QuaXRlcigncmFuaycpOgorICAgLi4uICAgbmV3X3JhbmsgPSBpbnQocmFuay50ZXh0KSArIDEKKyAgIC4uLiAgIHJhbmsudGV4dCA9IHN0cihuZXdfcmFuaykKKyAgIC4uLiAgIHJhbmsuc2V0KCd1cGRhdGVkJywgJ3llcycpCisgICAuLi4KKyAgID4+PiB0cmVlLndyaXRlKCdvdXRwdXQueG1sJykKKworT3VyIFhNTCBub3cgbG9va3MgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogeG1sCisKKyAgIDw/eG1sIHZlcnNpb249IjEuMCI/PgorICAgPGRhdGE+CisgICAgICAgPGNvdW50cnkgbmFtZT0iTGllY2h0ZW5zdGVpbiI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+MjwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAwODwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjE0MTEwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJBdXN0cmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IlN3aXR6ZXJsYW5kIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iU2luZ2Fwb3JlIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj41PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+NTk5MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iTWFsYXlzaWEiIGRpcmVjdGlvbj0iTiIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJQYW5hbWEiPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjY5PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTM2MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29zdGEgUmljYSIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb2xvbWJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgPC9kYXRhPgorCitXZSBjYW4gcmVtb3ZlIGVsZW1lbnRzIHVzaW5nIDptZXRoOmBFbGVtZW50LnJlbW92ZWAuICBMZXQncyBzYXkgd2Ugd2FudCB0bworcmVtb3ZlIGFsbCBjb3VudHJpZXMgd2l0aCBhIHJhbmsgaGlnaGVyIHRoYW4gNTA6OgorCisgICA+Pj4gZm9yIGNvdW50cnkgaW4gcm9vdC5maW5kYWxsKCdjb3VudHJ5Jyk6CisgICAuLi4gICByYW5rID0gaW50KGNvdW50cnkuZmluZCgncmFuaycpLnRleHQpCisgICAuLi4gICBpZiByYW5rID4gNTA6CisgICAuLi4gICAgIHJvb3QucmVtb3ZlKGNvdW50cnkpCisgICAuLi4KKyAgID4+PiB0cmVlLndyaXRlKCdvdXRwdXQueG1sJykKKworT3VyIFhNTCBub3cgbG9va3MgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogeG1sCisKKyAgIDw/eG1sIHZlcnNpb249IjEuMCI/PgorICAgPGRhdGE+CisgICAgICAgPGNvdW50cnkgbmFtZT0iTGllY2h0ZW5zdGVpbiI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+MjwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAwODwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjE0MTEwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJBdXN0cmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IlN3aXR6ZXJsYW5kIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iU2luZ2Fwb3JlIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj41PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+NTk5MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iTWFsYXlzaWEiIGRpcmVjdGlvbj0iTiIvPgorICAgICAgIDwvY291bnRyeT4KKyAgIDwvZGF0YT4KKworQnVpbGRpbmcgWE1MIGRvY3VtZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgOmZ1bmM6YFN1YkVsZW1lbnRgIGZ1bmN0aW9uIGFsc28gcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSB0byBjcmVhdGUgbmV3CitzdWItZWxlbWVudHMgZm9yIGEgZ2l2ZW4gZWxlbWVudDo6CisKKyAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCisgICA+Pj4gYiA9IEVULlN1YkVsZW1lbnQoYSwgJ2InKQorICAgPj4+IGMgPSBFVC5TdWJFbGVtZW50KGEsICdjJykKKyAgID4+PiBkID0gRVQuU3ViRWxlbWVudChjLCAnZCcpCisgICA+Pj4gRVQuZHVtcChhKQorICAgPGE+PGIgLz48Yz48ZCAvPjwvYz48L2E+CisKK0FkZGl0aW9uYWwgcmVzb3VyY2VzCiteXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBTZWUgaHR0cDovL2VmZmJvdC5vcmcvem9uZS9lbGVtZW50LWluZGV4Lmh0bSBmb3IgdHV0b3JpYWxzIGFuZCBsaW5rcyB0byBvdGhlcgotZG9jcy4gIEZyZWRyaWsgTHVuZGgncyBwYWdlIGlzIGFsc28gdGhlIGxvY2F0aW9uIG9mIHRoZSBkZXZlbG9wbWVudCB2ZXJzaW9uIG9mCi10aGUgeG1sLmV0cmVlLkVsZW1lbnRUcmVlLgorZG9jcy4KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgIFRoZSBFbGVtZW50VHJlZSBBUEkgaXMgdXBkYXRlZCB0byAxLjMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCi0gICBgSW50cm9kdWNpbmcgRWxlbWVudFRyZWUgMS4zCi0gICA8aHR0cDovL2VmZmJvdC5vcmcvem9uZS9lbGVtZW50dHJlZS0xMy1pbnRyby5odG0+YF8uCiAKKy4uIF9lbGVtZW50dHJlZS14cGF0aDoKKworWFBhdGggc3VwcG9ydAorLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBsaW1pdGVkIHN1cHBvcnQgZm9yCitgWFBhdGggZXhwcmVzc2lvbnMgPGh0dHA6Ly93d3cudzMub3JnL1RSL3hwYXRoPmBfIGZvciBsb2NhdGluZyBlbGVtZW50cyBpbiBhCit0cmVlLiAgVGhlIGdvYWwgaXMgdG8gc3VwcG9ydCBhIHNtYWxsIHN1YnNldCBvZiB0aGUgYWJicmV2aWF0ZWQgc3ludGF4OyBhIGZ1bGwKK1hQYXRoIGVuZ2luZSBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGUgbW9kdWxlLgorCitFeGFtcGxlCiteXl5eXl5eCisKK0hlcmUncyBhbiBleGFtcGxlIHRoYXQgZGVtb25zdHJhdGVzIHNvbWUgb2YgdGhlIFhQYXRoIGNhcGFiaWxpdGllcyBvZiB0aGUKK21vZHVsZS4gIFdlJ2xsIGJlIHVzaW5nIHRoZSBgYGNvdW50cnlkYXRhYGAgWE1MIGRvY3VtZW50IGZyb20gdGhlCis6cmVmOmBQYXJzaW5nIFhNTCA8ZWxlbWVudHRyZWUtcGFyc2luZy14bWw+YCBzZWN0aW9uOjoKKworICAgaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAorCisgICByb290ID0gRVQuZnJvbXN0cmluZyhjb3VudHJ5ZGF0YSkKKworICAgIyBUb3AtbGV2ZWwgZWxlbWVudHMKKyAgIHJvb3QuZmluZGFsbCgiLiIpCisKKyAgICMgQWxsICduZWlnaGJvcicgZ3JhbmQtY2hpbGRyZW4gb2YgJ2NvdW50cnknIGNoaWxkcmVuIG9mIHRoZSB0b3AtbGV2ZWwKKyAgICMgZWxlbWVudHMKKyAgIHJvb3QuZmluZGFsbCgiLi9jb3VudHJ5L25laWdoYm9yIikKKworICAgIyBOb2RlcyB3aXRoIG5hbWU9J1NpbmdhcG9yZScgdGhhdCBoYXZlIGEgJ3llYXInIGNoaWxkCisgICByb290LmZpbmRhbGwoIi4vL3llYXIvLi5bQG5hbWU9J1NpbmdhcG9yZSddIikKKworICAgIyAneWVhcicgbm9kZXMgdGhhdCBhcmUgY2hpbGRyZW4gb2Ygbm9kZXMgd2l0aCBuYW1lPSdTaW5nYXBvcmUnCisgICByb290LmZpbmRhbGwoIi4vLypbQG5hbWU9J1NpbmdhcG9yZSddL3llYXIiKQorCisgICAjIEFsbCAnbmVpZ2hib3InIG5vZGVzIHRoYXQgYXJlIHRoZSBzZWNvbmQgY2hpbGQgb2YgdGhlaXIgcGFyZW50CisgICByb290LmZpbmRhbGwoIi4vL25laWdoYm9yWzJdIikKKworU3VwcG9ydGVkIFhQYXRoIHN5bnRheAorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBTeW50YXggICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IGBgdGFnYGAgICAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIGNoaWxkIGVsZW1lbnRzIHdpdGggdGhlIGdpdmVuIHRhZy4gICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBGb3IgZXhhbXBsZSwgYGBzcGFtYGAgc2VsZWN0cyBhbGwgY2hpbGQgZWxlbWVudHMgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZWQgYGBzcGFtYGAsIGBgc3BhbS9lZ2dgYCBzZWxlY3RzIGFsbCAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGdyYW5kY2hpbGRyZW4gbmFtZWQgYGBlZ2dgYCBpbiBhbGwgY2hpbGRyZW4gbmFtZWQgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNwYW1gYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgKmBgICAgICAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIGNoaWxkIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsIGBgKi9lZ2dgYCAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBzZWxlY3RzIGFsbCBncmFuZGNoaWxkcmVuIG5hbWVkIGBgZWdnYGAuICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgLmBgICAgICAgICAgICAgICAgICB8IFNlbGVjdHMgdGhlIGN1cnJlbnQgbm9kZS4gIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoLCB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYSByZWxhdGl2ZSBwYXRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYC8vYGAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIGFsbCBzdWJlbGVtZW50cywgb24gYWxsIGxldmVscyBiZW5lYXRoIHRoZSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgY3VycmVudCAgZWxlbWVudC4gIEZvciBleGFtcGxlLCBgYC4vL2VnZ2BgIHNlbGVjdHMgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGFsbCBgYGVnZ2BgIGVsZW1lbnRzIGluIHRoZSBlbnRpcmUgdHJlZS4gICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAuLmBgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyB0aGUgcGFyZW50IGVsZW1lbnQuICBSZXR1cm5zIGBgTm9uZWBgIGlmIHRoZSB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHBhdGggYXR0ZW1wdHMgdG8gcmVhY2ggdGhlIGFuY2VzdG9ycyBvZiB0aGUgc3RhcnQgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBlbGVtZW50ICh0aGUgZWxlbWVudCBgYGZpbmRgYCB3YXMgY2FsbGVkIG9uKS4gICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgW0BhdHRyaWJdYGAgICAgICAgICB8IFNlbGVjdHMgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gYXR0cmlidXRlLiAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbQGF0dHJpYj0ndmFsdWUnXWBgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBnaXZlbiBhdHRyaWJ1dGUgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGhhcyB0aGUgZ2l2ZW4gdmFsdWUuICBUaGUgdmFsdWUgY2Fubm90IGNvbnRhaW4gICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBxdW90ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgW3RhZ11gYCAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGNoaWxkIG5hbWVkICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBgYHRhZ2BgLiAgT25seSBpbW1lZGlhdGUgY2hpbGRyZW4gYXJlIHN1cHBvcnRlZC4gICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgW3Bvc2l0aW9uXWBgICAgICAgICB8IFNlbGVjdHMgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIGxvY2F0ZWQgYXQgdGhlIGdpdmVuICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBwb3NpdGlvbi4gIFRoZSBwb3NpdGlvbiBjYW4gYmUgZWl0aGVyIGFuIGludGVnZXIgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgKDEgaXMgdGhlIGZpcnN0IHBvc2l0aW9uKSwgdGhlIGV4cHJlc3Npb24gYGBsYXN0KClgYCB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IChmb3IgdGhlIGxhc3QgcG9zaXRpb24pLCBvciBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgbGFzdCBwb3NpdGlvbiAoZS5nLiBgYGxhc3QoKS0xYGApLiAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK1ByZWRpY2F0ZXMgKGV4cHJlc3Npb25zIHdpdGhpbiBzcXVhcmUgYnJhY2tldHMpIG11c3QgYmUgcHJlY2VkZWQgYnkgYSB0YWcKK25hbWUsIGFuIGFzdGVyaXNrLCBvciBhbm90aGVyIHByZWRpY2F0ZS4gIGBgcG9zaXRpb25gYCBwcmVkaWNhdGVzIG11c3QgYmUKK3ByZWNlZGVkIGJ5IGEgdGFnIG5hbWUuCisKK1JlZmVyZW5jZQorLS0tLS0tLS0tCiAKIC4uIF9lbGVtZW50dHJlZS1mdW5jdGlvbnM6CiAKIEZ1bmN0aW9ucwotLS0tLS0tLS0tCiteXl5eXl5eXl4KIAogCiAuLiBmdW5jdGlvbjo6IENvbW1lbnQodGV4dD1Ob25lKQpAQCAtMTU5LDkgKzQzMyw5IEBACiAgICBHZW5lcmF0ZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gWE1MIGVsZW1lbnQsIGluY2x1ZGluZyBhbGwKICAgIHN1YmVsZW1lbnRzLiAgKmVsZW1lbnQqIGlzIGFuIDpjbGFzczpgRWxlbWVudGAgaW5zdGFuY2UuICAqZW5jb2RpbmcqIFsxXV8gaXMKICAgIHRoZSBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8KLSAgIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcuICAqbWV0aG9kKiBpcyBlaXRoZXIgYGAieG1sImBgLAotICAgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuICBSZXR1cm5zIGFuIChvcHRpb25hbGx5KQotICAgZW5jb2RlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgWE1MIGRhdGEuCisgICBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nIChvdGhlcndpc2UsIGEgYnl0ZXN0cmluZyBpcyBnZW5lcmF0ZWQpLiAgKm1ldGhvZCoKKyAgIGlzIGVpdGhlciBgYCJ4bWwiYGAsIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcyBgYCJ4bWwiYGApLgorICAgUmV0dXJucyBhbiAob3B0aW9uYWxseSkgZW5jb2RlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgWE1MIGRhdGEuCiAKIAogLi4gZnVuY3Rpb246OiB0b3N0cmluZ2xpc3QoZWxlbWVudCwgZW5jb2Rpbmc9InVzLWFzY2lpIiwgbWV0aG9kPSJ4bWwiKQpAQCAtMTY5LDExICs0NDMsMTEgQEAKICAgIEdlbmVyYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBYTUwgZWxlbWVudCwgaW5jbHVkaW5nIGFsbAogICAgc3ViZWxlbWVudHMuICAqZWxlbWVudCogaXMgYW4gOmNsYXNzOmBFbGVtZW50YCBpbnN0YW5jZS4gICplbmNvZGluZyogWzFdXyBpcwogICAgdGhlIG91dHB1dCBlbmNvZGluZyAoZGVmYXVsdCBpcyBVUy1BU0NJSSkuICBVc2UgYGBlbmNvZGluZz0idW5pY29kZSJgYCB0bwotICAgZ2VuZXJhdGUgYSBVbmljb2RlIHN0cmluZy4gICptZXRob2QqIGlzIGVpdGhlciBgYCJ4bWwiYGAsCi0gICBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4gIFJldHVybnMgYSBsaXN0IG9mCi0gICAob3B0aW9uYWxseSkgZW5jb2RlZCBzdHJpbmdzIGNvbnRhaW5pbmcgdGhlIFhNTCBkYXRhLiAgSXQgZG9lcyBub3QgZ3VhcmFudGVlCi0gICBhbnkgc3BlY2lmaWMgc2VxdWVuY2UsIGV4Y2VwdCB0aGF0IGBgIiIuam9pbih0b3N0cmluZ2xpc3QoZWxlbWVudCkpID09Ci0gICB0b3N0cmluZyhlbGVtZW50KWBgLgorICAgZ2VuZXJhdGUgYSBVbmljb2RlIHN0cmluZyAob3RoZXJ3aXNlLCBhIGJ5dGVzdHJpbmcgaXMgZ2VuZXJhdGVkKS4gICptZXRob2QqCisgICBpcyBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4KKyAgIFJldHVybnMgYSBsaXN0IG9mIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZ3MgY29udGFpbmluZyB0aGUgWE1MIGRhdGEuCisgICBJdCBkb2VzIG5vdCBndWFyYW50ZWUgYW55IHNwZWNpZmljIHNlcXVlbmNlLCBleGNlcHQgdGhhdAorICAgYGAiIi5qb2luKHRvc3RyaW5nbGlzdChlbGVtZW50KSkgPT0gdG9zdHJpbmcoZWxlbWVudClgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTE5OCw4ICs0NzIsNyBAQAogLi4gX2VsZW1lbnR0cmVlLWVsZW1lbnQtb2JqZWN0czoKIAogRWxlbWVudCBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0KLQorXl5eXl5eXl5eXl5eXl5eCiAKIC4uIGNsYXNzOjogRWxlbWVudCh0YWcsIGF0dHJpYj17fSwgKipleHRyYSkKIApAQCAtMjUwLDcgKzUyMyw3IEBACiAgICAuLiBtZXRob2Q6OiBjbGVhcigpCiAKICAgICAgIFJlc2V0cyBhbiBlbGVtZW50LiAgVGhpcyBmdW5jdGlvbiByZW1vdmVzIGFsbCBzdWJlbGVtZW50cywgY2xlYXJzIGFsbAotICAgICAgYXR0cmlidXRlcywgYW5kIHNldHMgdGhlIHRleHQgYW5kIHRhaWwgYXR0cmlidXRlcyB0byBOb25lLgorICAgICAgYXR0cmlidXRlcywgYW5kIHNldHMgdGhlIHRleHQgYW5kIHRhaWwgYXR0cmlidXRlcyB0byBgYE5vbmVgYC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXQoa2V5LCBkZWZhdWx0PU5vbmUpCkBAIC0yODEsMzYgKzU1NCw0MyBAQAogCiAgICAuLiBtZXRob2Q6OiBhcHBlbmQoc3ViZWxlbWVudCkKIAotICAgICAgQWRkcyB0aGUgZWxlbWVudCAqc3ViZWxlbWVudCogdG8gdGhlIGVuZCBvZiB0aGlzIGVsZW1lbnRzIGludGVybmFsIGxpc3QKLSAgICAgIG9mIHN1YmVsZW1lbnRzLgorICAgICAgQWRkcyB0aGUgZWxlbWVudCAqc3ViZWxlbWVudCogdG8gdGhlIGVuZCBvZiB0aGlzIGVsZW1lbnQncyBpbnRlcm5hbCBsaXN0CisgICAgICBvZiBzdWJlbGVtZW50cy4gIFJhaXNlcyA6ZXhjOmBUeXBlRXJyb3JgIGlmICpzdWJlbGVtZW50KiBpcyBub3QgYW4KKyAgICAgIDpjbGFzczpgRWxlbWVudGAuCiAKIAogICAgLi4gbWV0aG9kOjogZXh0ZW5kKHN1YmVsZW1lbnRzKQogCiAgICAgICBBcHBlbmRzICpzdWJlbGVtZW50cyogZnJvbSBhIHNlcXVlbmNlIG9iamVjdCB3aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cy4KLSAgICAgIFJhaXNlcyA6ZXhjOmBBc3NlcnRpb25FcnJvcmAgaWYgYSBzdWJlbGVtZW50IGlzIG5vdCBhIHZhbGlkIG9iamVjdC4KKyAgICAgIFJhaXNlcyA6ZXhjOmBUeXBlRXJyb3JgIGlmIGEgc3ViZWxlbWVudCBpcyBub3QgYW4gOmNsYXNzOmBFbGVtZW50YC4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAogICAgICAgRmluZHMgdGhlIGZpcnN0IHN1YmVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUKLSAgICAgIG9yIHBhdGguICBSZXR1cm5zIGFuIGVsZW1lbnQgaW5zdGFuY2Ugb3IgYGBOb25lYGAuCisgICAgICBvciBhIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIGFuIGVsZW1lbnQgaW5zdGFuY2UKKyAgICAgIG9yIGBgTm9uZWBgLiAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4CisgICAgICB0byBmdWxsIG5hbWUuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZGFsbChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGZpbmRhbGwobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLiAgUmV0dXJucyBhIGxpc3QKLSAgICAgIGNvbnRhaW5pbmcgYWxsIG1hdGNoaW5nIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgorICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvcgorICAgICAgOnJlZjpgcGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4gIFJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYWxsIG1hdGNoaW5nCisgICAgICBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4gICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20KKyAgICAgIG5hbWVzcGFjZSBwcmVmaXggdG8gZnVsbCBuYW1lLgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmR0ZXh0KG1hdGNoLCBkZWZhdWx0PU5vbmUpCisgICAuLiBtZXRob2Q6OiBmaW5kdGV4dChtYXRjaCwgZGVmYXVsdD1Ob25lLCBuYW1lc3BhY2VzPU5vbmUpCiAKICAgICAgIEZpbmRzIHRleHQgZm9yIHRoZSBmaXJzdCBzdWJlbGVtZW50IG1hdGNoaW5nICptYXRjaCouICAqbWF0Y2gqIG1heSBiZQotICAgICAgYSB0YWcgbmFtZSBvciBwYXRoLiAgUmV0dXJucyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBtYXRjaGluZwotICAgICAgZWxlbWVudCwgb3IgKmRlZmF1bHQqIGlmIG5vIGVsZW1lbnQgd2FzIGZvdW5kLiAgTm90ZSB0aGF0IGlmIHRoZSBtYXRjaGluZwotICAgICAgZWxlbWVudCBoYXMgbm8gdGV4dCBjb250ZW50IGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KKyAgICAgIGEgdGFnIG5hbWUgb3IgYSA6cmVmOmBwYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLiAgUmV0dXJucyB0aGUgdGV4dCBjb250ZW50CisgICAgICBvZiB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCwgb3IgKmRlZmF1bHQqIGlmIG5vIGVsZW1lbnQgd2FzIGZvdW5kLgorICAgICAgTm90ZSB0aGF0IGlmIHRoZSBtYXRjaGluZyBlbGVtZW50IGhhcyBubyB0ZXh0IGNvbnRlbnQgYW4gZW1wdHkgc3RyaW5nCisgICAgICBpcyByZXR1cm5lZC4gKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4CisgICAgICB0byBmdWxsIG5hbWUuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0Y2hpbGRyZW4oKQpAQCAtMzI1LDkgKzYwNSwxMCBAQAogICAgICAgICAgVXNlIG1ldGhvZCA6bWV0aDpgRWxlbWVudC5pdGVyYCBpbnN0ZWFkLgogCiAKLSAgIC4uIG1ldGhvZDo6IGluc2VydChpbmRleCwgZWxlbWVudCkKKyAgIC4uIG1ldGhvZDo6IGluc2VydChpbmRleCwgc3ViZWxlbWVudCkKIAotICAgICAgSW5zZXJ0cyBhIHN1YmVsZW1lbnQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGluIHRoaXMgZWxlbWVudC4KKyAgICAgIEluc2VydHMgKnN1YmVsZW1lbnQqIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBpbiB0aGlzIGVsZW1lbnQuICBSYWlzZXMKKyAgICAgIDpleGM6YFR5cGVFcnJvcmAgaWYgKnN1YmVsZW1lbnQqIGlzIG5vdCBhbiA6Y2xhc3M6YEVsZW1lbnRgLgogCiAKICAgIC4uIG1ldGhvZDo6IGl0ZXIodGFnPU5vbmUpCkBAIC0zNDEsMTAgKzYyMiwxMyBAQAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotICAgLi4gbWV0aG9kOjogaXRlcmZpbmQobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBpdGVyZmluZChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIGFuIGl0ZXJhYmxlCi0gICAgICB5aWVsZGluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yCisgICAgICA6cmVmOmBwYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLiAgUmV0dXJucyBhbiBpdGVyYWJsZSB5aWVsZGluZyBhbGwKKyAgICAgIG1hdGNoaW5nIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLiAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZworICAgICAgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KKwogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMzg5LDcgKzY3Myw3IEBACiAuLiBfZWxlbWVudHRyZWUtZWxlbWVudHRyZWUtb2JqZWN0czoKIAogRWxlbWVudFRyZWUgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0tLQorXl5eXl5eXl5eXl5eXl5eXl5eXgogCiAKIC4uIGNsYXNzOjogRWxlbWVudFRyZWUoZWxlbWVudD1Ob25lLCBmaWxlPU5vbmUpCkBAIC00MDksMjggKzY5MywxOSBAQAogICAgICAgY2FyZS4gICplbGVtZW50KiBpcyBhbiBlbGVtZW50IGluc3RhbmNlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmQobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBmaW5kKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIHRoZSBmaXJzdCB0b3BsZXZlbCBlbGVtZW50IG1hdGNoaW5nICptYXRjaCouICAqbWF0Y2gqIG1heSBiZSBhIHRhZwotICAgICAgbmFtZSBvciBwYXRoLiAgU2FtZSBhcyBnZXRyb290KCkuZmluZChtYXRjaCkuICBSZXR1cm5zIHRoZSBmaXJzdCBtYXRjaGluZwotICAgICAgZWxlbWVudCwgb3IgYGBOb25lYGAgaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmRgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZGFsbChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguICBTYW1lIGFzCi0gICAgICBnZXRyb290KCkuZmluZGFsbChtYXRjaCkuICAqbWF0Y2gqIG1heSBiZSBhIHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIGEKLSAgICAgIGxpc3QgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMsIGluIGRvY3VtZW50IG9yZGVyLgorICAgICAgU2FtZSBhcyA6bWV0aDpgRWxlbWVudC5maW5kYWxsYCwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IGZpbmR0ZXh0KG1hdGNoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgdGhlIGVsZW1lbnQgdGV4dCBmb3IgdGhlIGZpcnN0IHRvcGxldmVsIGVsZW1lbnQgd2l0aCBnaXZlbiB0YWcuCi0gICAgICBTYW1lIGFzIGdldHJvb3QoKS5maW5kdGV4dChtYXRjaCkuICAqbWF0Y2gqIG1heSBiZSBhIHRhZyBuYW1lIG9yIHBhdGguCi0gICAgICAqZGVmYXVsdCogaXMgdGhlIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgZWxlbWVudCB3YXMgbm90IGZvdW5kLiAgUmV0dXJucwotICAgICAgdGhlIHRleHQgY29udGVudCBvZiB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCwgb3IgdGhlIGRlZmF1bHQgdmFsdWUgbm8KLSAgICAgIGVsZW1lbnQgd2FzIGZvdW5kLiAgTm90ZSB0aGF0IGlmIHRoZSBlbGVtZW50IGlzIGZvdW5kLCBidXQgaGFzIG5vIHRleHQKLSAgICAgIGNvbnRlbnQsIHRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgorICAgICAgU2FtZSBhcyA6bWV0aDpgRWxlbWVudC5maW5kdGV4dGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldGl0ZXJhdG9yKHRhZz1Ob25lKQpAQCAtNDUxLDExICs3MjYsOSBAQAogICAgICAgdG8gbG9vayBmb3IgKGRlZmF1bHQgaXMgdG8gcmV0dXJuIGFsbCBlbGVtZW50cykKIAogCi0gICAuLiBtZXRob2Q6OiBpdGVyZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFNhbWUgYXMKLSAgICAgIGdldHJvb3QoKS5pdGVyZmluZChtYXRjaCkuIFJldHVybnMgYW4gaXRlcmFibGUgeWllbGRpbmcgYWxsIG1hdGNoaW5nCi0gICAgICBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKyAgICAgIFNhbWUgYXMgOm1ldGg6YEVsZW1lbnQuaXRlcmZpbmRgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTQ2NCwyMCArNzM3LDI5IEBACiAKICAgICAgIExvYWRzIGFuIGV4dGVybmFsIFhNTCBzZWN0aW9uIGludG8gdGhpcyBlbGVtZW50IHRyZWUuICAqc291cmNlKiBpcyBhIGZpbGUKICAgICAgIG5hbWUgb3IgOnRlcm06YGZpbGUgb2JqZWN0YC4gICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4KLSAgICAgIElmIG5vdCBnaXZlbiwgdGhlIHN0YW5kYXJkIFhNTFBhcnNlciBwYXJzZXIgaXMgdXNlZC4gIFJldHVybnMgdGhlIHNlY3Rpb24KLSAgICAgIHJvb3QgZWxlbWVudC4KKyAgICAgIElmIG5vdCBnaXZlbiwgdGhlIHN0YW5kYXJkIDpjbGFzczpgWE1MUGFyc2VyYCBwYXJzZXIgaXMgdXNlZC4gIFJldHVybnMgdGhlCisgICAgICBzZWN0aW9uIHJvb3QgZWxlbWVudC4KIAogCi0gICAuLiBtZXRob2Q6OiB3cml0ZShmaWxlLCBlbmNvZGluZz0idXMtYXNjaWkiLCB4bWxfZGVjbGFyYXRpb249Tm9uZSwgbWV0aG9kPSJ4bWwiKQorICAgLi4gbWV0aG9kOjogd3JpdGUoZmlsZSwgZW5jb2Rpbmc9InVzLWFzY2lpIiwgeG1sX2RlY2xhcmF0aW9uPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0ieG1sIikKIAogICAgICAgV3JpdGVzIHRoZSBlbGVtZW50IHRyZWUgdG8gYSBmaWxlLCBhcyBYTUwuICAqZmlsZSogaXMgYSBmaWxlIG5hbWUsIG9yIGEKLSAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGAgb3BlbmVkIGZvciB3cml0aW5nLiAgKmVuY29kaW5nKiBbMV1fIGlzIHRoZSBvdXRwdXQgZW5jb2RpbmcKLSAgICAgIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4gIFVzZSBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvIHdyaXRlIGEgVW5pY29kZSBzdHJpbmcuCi0gICAgICAqeG1sX2RlY2xhcmF0aW9uKiBjb250cm9scyBpZiBhbiBYTUwgZGVjbGFyYXRpb24KLSAgICAgIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZS4gIFVzZSBGYWxzZSBmb3IgbmV2ZXIsIFRydWUgZm9yIGFsd2F5cywgTm9uZQotICAgICAgZm9yIG9ubHkgaWYgbm90IFVTLUFTQ0lJIG9yIFVURi04IG9yIFVuaWNvZGUgKGRlZmF1bHQgaXMgTm9uZSkuICAqbWV0aG9kKiBpcwotICAgICAgZWl0aGVyIGBgInhtbCJgYCwgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuCi0gICAgICBSZXR1cm5zIGFuIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZy4KKyAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGAgb3BlbmVkIGZvciB3cml0aW5nLiAgKmVuY29kaW5nKiBbMV1fIGlzIHRoZSBvdXRwdXQKKyAgICAgIGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4KKyAgICAgICp4bWxfZGVjbGFyYXRpb24qIGNvbnRyb2xzIGlmIGFuIFhNTCBkZWNsYXJhdGlvbiBzaG91bGQgYmUgYWRkZWQgdG8gdGhlCisgICAgICBmaWxlLiAgVXNlIGBgRmFsc2VgYCBmb3IgbmV2ZXIsIGBgVHJ1ZWBgIGZvciBhbHdheXMsIGBgTm9uZWBgCisgICAgICBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZSAoZGVmYXVsdCBpcyBgYE5vbmVgYCkuCisgICAgICAqbWV0aG9kKiBpcyBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMKKyAgICAgIGBgInhtbCJgYCkuCisKKyAgICAgIFRoZSBvdXRwdXQgaXMgZWl0aGVyIGEgc3RyaW5nICg6Y2xhc3M6YHN0cmApIG9yIGJpbmFyeSAoOmNsYXNzOmBieXRlc2ApLgorICAgICAgVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAqZW5jb2RpbmcqIGFyZ3VtZW50LiAgSWYgKmVuY29kaW5nKiBpcworICAgICAgYGAidW5pY29kZSJgYCwgdGhlIG91dHB1dCBpcyBhIHN0cmluZzsgb3RoZXJ3aXNlLCBpdCdzIGJpbmFyeS4gIE5vdGUgdGhhdAorICAgICAgdGhpcyBtYXkgY29uZmxpY3Qgd2l0aCB0aGUgdHlwZSBvZiAqZmlsZSogaWYgaXQncyBhbiBvcGVuCisgICAgICA6dGVybTpgZmlsZSBvYmplY3RgOyBtYWtlIHN1cmUgeW91IGRvIG5vdCB0cnkgdG8gd3JpdGUgYSBzdHJpbmcgdG8gYQorICAgICAgYmluYXJ5IHN0cmVhbSBhbmQgdmljZSB2ZXJzYS4KKwogCiBUaGlzIGlzIHRoZSBYTUwgZmlsZSB0aGF0IGlzIGdvaW5nIHRvIGJlIG1hbmlwdWxhdGVkOjoKIApAQCAtNTEwLDcgKzc5Miw3IEBACiAuLiBfZWxlbWVudHRyZWUtcW5hbWUtb2JqZWN0czoKIAogUU5hbWUgT2JqZWN0cwotLS0tLS0tLS0tLS0tLQorXl5eXl5eXl5eXl5eXgogCiAKIC4uIGNsYXNzOjogUU5hbWUodGV4dF9vcl91cmksIHRhZz1Ob25lKQpAQCAtNTI2LDcgKzgwOCw3IEBACiAuLiBfZWxlbWVudHRyZWUtdHJlZWJ1aWxkZXItb2JqZWN0czoKIAogVHJlZUJ1aWxkZXIgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0tLQorXl5eXl5eXl5eXl5eXl5eXl5eXgogCiAKIC4uIGNsYXNzOjogVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PU5vbmUpCkBAIC01MzQsOSArODE2LDkgQEAKICAgIEdlbmVyaWMgZWxlbWVudCBzdHJ1Y3R1cmUgYnVpbGRlci4gIFRoaXMgYnVpbGRlciBjb252ZXJ0cyBhIHNlcXVlbmNlIG9mCiAgICBzdGFydCwgZGF0YSwgYW5kIGVuZCBtZXRob2QgY2FsbHMgdG8gYSB3ZWxsLWZvcm1lZCBlbGVtZW50IHN0cnVjdHVyZS4gIFlvdQogICAgY2FuIHVzZSB0aGlzIGNsYXNzIHRvIGJ1aWxkIGFuIGVsZW1lbnQgc3RydWN0dXJlIHVzaW5nIGEgY3VzdG9tIFhNTCBwYXJzZXIsCi0gICBvciBhIHBhcnNlciBmb3Igc29tZSBvdGhlciBYTUwtbGlrZSBmb3JtYXQuICBUaGUgKmVsZW1lbnRfZmFjdG9yeSogaXMgY2FsbGVkCi0gICB0byBjcmVhdGUgbmV3IDpjbGFzczpgRWxlbWVudGAgaW5zdGFuY2VzIHdoZW4gZ2l2ZW4uCi0KKyAgIG9yIGEgcGFyc2VyIGZvciBzb21lIG90aGVyIFhNTC1saWtlIGZvcm1hdC4gICplbGVtZW50X2ZhY3RvcnkqLCB3aGVuIGdpdmVuLAorICAgbXVzdCBiZSBhIGNhbGxhYmxlIGFjY2VwdGluZyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHM6IGEgdGFnIGFuZAorICAgYSBkaWN0IG9mIGF0dHJpYnV0ZXMuICBJdCBpcyBleHBlY3RlZCB0byByZXR1cm4gYSBuZXcgZWxlbWVudCBpbnN0YW5jZS4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC01NzcsNyArODU5LDcgQEAKIC4uIF9lbGVtZW50dHJlZS14bWxwYXJzZXItb2JqZWN0czoKIAogWE1MUGFyc2VyIE9iamVjdHMKLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXgogCiAKIC4uIGNsYXNzOjogWE1MUGFyc2VyKGh0bWw9MCwgdGFyZ2V0PU5vbmUsIGVuY29kaW5nPU5vbmUpCkBAIC01ODUsOSArODY3LDkgQEAKICAgIDpjbGFzczpgRWxlbWVudGAgc3RydWN0dXJlIGJ1aWxkZXIgZm9yIFhNTCBzb3VyY2UgZGF0YSwgYmFzZWQgb24gdGhlIGV4cGF0CiAgICBwYXJzZXIuICAqaHRtbCogYXJlIHByZWRlZmluZWQgSFRNTCBlbnRpdGllcy4gIFRoaXMgZmxhZyBpcyBub3Qgc3VwcG9ydGVkIGJ5CiAgICB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4gICp0YXJnZXQqIGlzIHRoZSB0YXJnZXQgb2JqZWN0LiAgSWYgb21pdHRlZCwgdGhlCi0gICBidWlsZGVyIHVzZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN0YW5kYXJkIFRyZWVCdWlsZGVyIGNsYXNzLiAgKmVuY29kaW5nKiBbMV1fCi0gICBpcyBvcHRpb25hbC4gIElmIGdpdmVuLCB0aGUgdmFsdWUgb3ZlcnJpZGVzIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gdGhlCi0gICBYTUwgZmlsZS4KKyAgIGJ1aWxkZXIgdXNlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3RhbmRhcmQgOmNsYXNzOmBUcmVlQnVpbGRlcmAgY2xhc3MuCisgICAqZW5jb2RpbmcqIFsxXV8gaXMgb3B0aW9uYWwuICBJZiBnaXZlbiwgdGhlIHZhbHVlIG92ZXJyaWRlcyB0aGUgZW5jb2RpbmcKKyAgIHNwZWNpZmllZCBpbiB0aGUgWE1MIGZpbGUuCiAKIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQpAQCAtNjQ1LDYgKzkyNywyNCBAQAogICAgID4+PiBwYXJzZXIuY2xvc2UoKQogICAgIDQKIAorRXhjZXB0aW9ucworXl5eXl5eXl5eXgorCisuLiBjbGFzczo6IFBhcnNlRXJyb3IKKworICAgWE1MIHBhcnNlIGVycm9yLCByYWlzZWQgYnkgdGhlIHZhcmlvdXMgcGFyc2luZyBtZXRob2RzIGluIHRoaXMgbW9kdWxlIHdoZW4KKyAgIHBhcnNpbmcgZmFpbHMuICBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGluc3RhbmNlIG9mIHRoaXMgZXhjZXB0aW9uCisgICB3aWxsIGNvbnRhaW4gYSB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICBJbiBhZGRpdGlvbiwgaXQgd2lsbCBoYXZlCisgICB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBjb2RlCisKKyAgICAgIEEgbnVtZXJpYyBlcnJvciBjb2RlIGZyb20gdGhlIGV4cGF0IHBhcnNlci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mCisgICAgICA6bW9kOmB4bWwucGFyc2Vycy5leHBhdGAgZm9yIHRoZSBsaXN0IG9mIGVycm9yIGNvZGVzIGFuZCB0aGVpciBtZWFuaW5ncy4KKworICAgLi4gYXR0cmlidXRlOjogcG9zaXRpb24KKworICAgICAgQSB0dXBsZSBvZiAqbGluZSosICpjb2x1bW4qIG51bWJlcnMsIHNwZWNpZnlpbmcgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLgogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiMmUyMwotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3htbC5yc3QKQEAgLTAsMCArMSwyOSBAQAorLi4gX3htbDoKKworWE1MIFByb2Nlc3NpbmcgTW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PQorCitQeXRob24ncyBpbnRlcmZhY2VzIGZvciBwcm9jZXNzaW5nIFhNTCBhcmUgZ3JvdXBlZCBpbiB0aGUgYGB4bWxgYCBwYWNrYWdlLgorCitJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG1vZHVsZXMgaW4gdGhlIDptb2Q6YHhtbGAgcGFja2FnZSByZXF1aXJlIHRoYXQKK3RoZXJlIGJlIGF0IGxlYXN0IG9uZSBTQVgtY29tcGxpYW50IFhNTCBwYXJzZXIgYXZhaWxhYmxlLiBUaGUgRXhwYXQgcGFyc2VyIGlzCitpbmNsdWRlZCB3aXRoIFB5dGhvbiwgc28gdGhlIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YCBtb2R1bGUgd2lsbCBhbHdheXMgYmUKK2F2YWlsYWJsZS4KKworVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6bW9kOmB4bWwuZG9tYCBhbmQgOm1vZDpgeG1sLnNheGAgcGFja2FnZXMgYXJlIHRoZQorZGVmaW5pdGlvbiBvZiB0aGUgUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgRE9NIGFuZCBTQVggaW50ZXJmYWNlcy4KKworVGhlIFhNTCBoYW5kbGluZyBzdWJtb2R1bGVzIGFyZToKKworKiA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgOiB0aGUgRWxlbWVudFRyZWUgQVBJLCBhIHNpbXBsZSBhbmQgbGlnaHR3ZWlnaHQKKworLi4KKworKiA6bW9kOmB4bWwuZG9tYDogdGhlIERPTSBBUEkgZGVmaW5pdGlvbgorKiA6bW9kOmB4bWwuZG9tLm1pbmlkb21gOiBhIGxpZ2h0d2VpZ2h0IERPTSBpbXBsZW1lbnRhdGlvbgorKiA6bW9kOmB4bWwuZG9tLnB1bGxkb21gOiBzdXBwb3J0IGZvciBidWlsZGluZyBwYXJ0aWFsIERPTSB0cmVlcworCisuLgorCisqIDptb2Q6YHhtbC5zYXhgOiBTQVgyIGJhc2UgY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zCisqIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YDogdGhlIEV4cGF0IHBhcnNlciBiaW5kaW5nCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnV0aWxzLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CmluZGV4IGZmMzZmZDguLjBhNDAzOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CkBAIC02Miw3ICs2Miw3IEBACiAgICB0YWdzLCBpZiBzZXQgdG8gKlRydWUqIHRoZXkgYXJlIGVtaXR0ZWQgYXMgYSBzaW5nbGUgc2VsZi1jbG9zZWQgdGFnLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLSAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzCisgICAgICBUaGUgKnNob3J0X2VtcHR5X2VsZW1lbnRzKiBwYXJhbWV0ZXIuCiAKIAogLi4gY2xhc3M6OiBYTUxGaWx0ZXJCYXNlKGJhc2UpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGU3Mjc3MGEuLjE4NzFjOTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC04LDcgKzgsNyBAQAogCiAKIC4uIFhYWCBOb3QgZXZlcnl0aGluZyBpcyBkb2N1bWVudGVkIHlldC4gIEl0IG1pZ2h0IGJlIGdvb2QgdG8gZGVzY3JpYmUKLSAgIE1hcnNoYWxsZXIsIFVubWFyc2hhbGxlciwgZ2V0cGFyc2VyLCBkdW1wcywgbG9hZHMsIGFuZCBUcmFuc3BvcnQuCisgICBNYXJzaGFsbGVyLCBVbm1hcnNoYWxsZXIsIGdldHBhcnNlciBhbmQgVHJhbnNwb3J0LgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi94bWxycGMvY2xpZW50LnB5YAogCkBAIC0yMSw3ICsyMSwxMiBAQAogYmV0d2VlbiBjb25mb3JtYWJsZSBQeXRob24gb2JqZWN0cyBhbmQgWE1MIG9uIHRoZSB3aXJlLgogCiAKLS4uIGNsYXNzOjogU2VydmVyUHJveHkodXJpLCB0cmFuc3BvcnQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgdmVyYm9zZT1GYWxzZSwgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlKQorLi4gY2xhc3M6OiBTZXJ2ZXJQcm94eSh1cmksIHRyYW5zcG9ydD1Ob25lLCBlbmNvZGluZz1Ob25lLCB2ZXJib3NlPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAgICBBIDpjbGFzczpgU2VydmVyUHJveHlgIGluc3RhbmNlIGlzIGFuIG9iamVjdCB0aGF0IG1hbmFnZXMgY29tbXVuaWNhdGlvbiB3aXRoIGEKICAgIHJlbW90ZSBYTUwtUlBDIHNlcnZlci4gIFRoZSByZXF1aXJlZCBmaXJzdCBhcmd1bWVudCBpcyBhIFVSSSAoVW5pZm9ybSBSZXNvdXJjZQpAQCAtMzQsOSArMzksMTMgQEAKICAgIFhNTDsgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGZvciBgYE5vbmVgYCB0byByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIFRoaXMgaXMKICAgIGEgY29tbW9ubHktdXNlZCBleHRlbnNpb24gdG8gdGhlIFhNTC1SUEMgc3BlY2lmaWNhdGlvbiwgYnV0IGlzbid0IHN1cHBvcnRlZCBieQogICAgYWxsIGNsaWVudHMgYW5kIHNlcnZlcnM7IHNlZSBodHRwOi8vb250b3N5cy5jb20veG1sLXJwYy9leHRlbnNpb25zLnBocCBmb3IgYQotICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvCi0gICBiZSBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGNhbGxzLgorICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMKKyAgIHRvIGJlIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIGFuZCBiaW5hcnkgZGF0YSB0byBiZQorICAgcHJlc2VudGVkIGFzIDpjbGFzczpgYnl0ZXNgIG9iamVjdHM7IHRoaXMgZmxhZyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgYW5kIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgbWF5IGJlIHBhc3NlZCB0byBjYWxscy4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCiAKICAgIEJvdGggdGhlIEhUVFAgYW5kIEhUVFBTIHRyYW5zcG9ydHMgc3VwcG9ydCB0aGUgVVJMIHN5bnRheCBleHRlbnNpb24gZm9yIEhUVFAKICAgIEJhc2ljIEF1dGhlbnRpY2F0aW9uOiBgYGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGhgYC4gIFRoZSAgYGB1c2VyOnBhc3NgYApAQCAtNzgsMTIgKzg3LDEyIEBACiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvbmx5IHRoZWlyICpfX2RpY3RfXyogYXR0cmlidXRlIGlzICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgZGF0ZXNgICAgICAgICAgICAgICAgICAgfCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAocGFzcyBpbiBhbiAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YERhdGVUaW1lYCBjbGFzcykgb3IgfAorICAgfCA6Y29uc3Q6YGRhdGVzYCAgICAgICAgICAgICAgICAgIHwgSW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guICBQYXNzIGluIGFuICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBEYXRlVGltZWAgY2xhc3Mgb3IgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UuICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgYmluYXJ5IGRhdGFgICAgICAgICAgICAgfCBwYXNzIGluIGFuIGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEJpbmFyeWAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyYXBwZXIgY2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCA6Y29uc3Q6YGJpbmFyeSBkYXRhYCAgICAgICAgICAgIHwgUGFzcyBpbiBhbiBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBCaW5hcnlgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3cmFwcGVyIGNsYXNzIG9yIGEgOmNsYXNzOmBieXRlc2AgaW5zdGFuY2UuIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBUaGlzIGlzIHRoZSBmdWxsIHNldCBvZiBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieSBYTUwtUlBDLiAgTWV0aG9kIGNhbGxzIG1heSBhbHNvCkBAIC05OCw4ICsxMDcsOSBAQAogICAgZW5zdXJlIHRoYXQgdGhlIHN0cmluZyBpcyBmcmVlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmVuJ3QgYWxsb3dlZCBpbiBYTUwsIHN1Y2ggYXMKICAgIHRoZSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aCBBU0NJSSB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAzMSAoZXhjZXB0LCBvZiBjb3Vyc2UsCiAgICB0YWIsIG5ld2xpbmUgYW5kIGNhcnJpYWdlIHJldHVybik7IGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBYTUwtUlBDCi0gICByZXF1ZXN0IHRoYXQgaXNuJ3Qgd2VsbC1mb3JtZWQgWE1MLiAgSWYgeW91IGhhdmUgdG8gcGFzcyBhcmJpdHJhcnkgc3RyaW5ncyB2aWEKLSAgIFhNTC1SUEMsIHVzZSB0aGUgOmNsYXNzOmBCaW5hcnlgIHdyYXBwZXIgY2xhc3MgZGVzY3JpYmVkIGJlbG93LgorICAgcmVxdWVzdCB0aGF0IGlzbid0IHdlbGwtZm9ybWVkIFhNTC4gIElmIHlvdSBoYXZlIHRvIHBhc3MgYXJiaXRyYXJ5IGJ5dGVzCisgICB2aWEgWE1MLVJQQywgdXNlIHRoZSA6Y2xhc3M6YGJ5dGVzYCBjbGFzcyBvciB0aGUgY2xhc3M6YEJpbmFyeWAgd3JhcHBlciBjbGFzcworICAgZGVzY3JpYmVkIGJlbG93LgogCiAgICA6Y2xhc3M6YFNlcnZlcmAgaXMgcmV0YWluZWQgYXMgYW4gYWxpYXMgZm9yIDpjbGFzczpgU2VydmVyUHJveHlgIGZvciBiYWNrd2FyZHMKICAgIGNvbXBhdGliaWxpdHkuICBOZXcgY29kZSBzaG91bGQgdXNlIDpjbGFzczpgU2VydmVyUHJveHlgLgpAQCAtMjQ5LDcgKzI1OSw3IEBACiBCaW5hcnkgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBzdHJpbmcgZGF0YSAod2hpY2ggbWF5IGluY2x1ZGUgTlVMcykuIFRoZQorVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBieXRlcyBkYXRhICh3aGljaCBtYXkgaW5jbHVkZSBOVUxzKS4gVGhlCiBwcmltYXJ5IGFjY2VzcyB0byB0aGUgY29udGVudCBvZiBhIDpjbGFzczpgQmluYXJ5YCBvYmplY3QgaXMgcHJvdmlkZWQgYnkgYW4KIGF0dHJpYnV0ZToKIApAQCAtMjU3LDE1ICsyNjcsMTUgQEAKIC4uIGF0dHJpYnV0ZTo6IEJpbmFyeS5kYXRhCiAKICAgIFRoZSBiaW5hcnkgZGF0YSBlbmNhcHN1bGF0ZWQgYnkgdGhlIDpjbGFzczpgQmluYXJ5YCBpbnN0YW5jZS4gIFRoZSBkYXRhIGlzCi0gICBwcm92aWRlZCBhcyBhbiA4LWJpdCBzdHJpbmcuCisgICBwcm92aWRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KIAogOmNsYXNzOmBCaW5hcnlgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMsIHN1cHBvcnRlZCBtYWlubHkgZm9yCiBpbnRlcm5hbCB1c2UgYnkgdGhlIG1hcnNoYWxsaW5nL3VubWFyc2hhbGxpbmcgY29kZToKIAogCi0uLiBtZXRob2Q6OiBCaW5hcnkuZGVjb2RlKHN0cmluZykKKy4uIG1ldGhvZDo6IEJpbmFyeS5kZWNvZGUoYnl0ZXMpCiAKLSAgIEFjY2VwdCBhIGJhc2U2NCBzdHJpbmcgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KKyAgIEFjY2VwdCBhIGJhc2U2NCA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KIAogCiAuLiBtZXRob2Q6OiBCaW5hcnkuZW5jb2RlKG91dCkKQEAgLTQ3MSwxNCArNDgxLDIxIEBACiAgICBpdCB2aWEgYW4gZXh0ZW5zaW9uLCAgcHJvdmlkZSBhIHRydWUgdmFsdWUgZm9yICphbGxvd19ub25lKi4KIAogCi0uLiBmdW5jdGlvbjo6IGxvYWRzKGRhdGEsIHVzZV9kYXRldGltZT1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ29udmVydCBhbiBYTUwtUlBDIHJlcXVlc3Qgb3IgcmVzcG9uc2UgaW50byBQeXRob24gb2JqZWN0cywgYSBgYChwYXJhbXMsCiAgICBtZXRob2RuYW1lKWBgLiAgKnBhcmFtcyogaXMgYSB0dXBsZSBvZiBhcmd1bWVudDsgKm1ldGhvZG5hbWUqIGlzIGEgc3RyaW5nLCBvcgogICAgYGBOb25lYGAgaWYgbm8gbWV0aG9kIG5hbWUgaXMgcHJlc2VudCBpbiB0aGUgcGFja2V0LiBJZiB0aGUgWE1MLVJQQyBwYWNrZXQKICAgIHJlcHJlc2VudHMgYSBmYXVsdCBjb25kaXRpb24sIHRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSBhIDpleGM6YEZhdWx0YCBleGNlcHRpb24uCi0gICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlIHByZXNlbnRlZCBhcwotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlCisgICBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBhbmQgYmluYXJ5IGRhdGEgdG8gYmUKKyAgIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzOyB0aGlzIGZsYWcgaXMgZmFsc2UgYnkgZGVmYXVsdC4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBfeG1scnBjLWNsaWVudC1leGFtcGxlOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU2ODE1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5yc3QKQEAgLTAsMCArMSwxMiBAQAorOm1vZDpgeG1scnBjYCAtLS0gWE1MUlBDIHNlcnZlciBhbmQgY2xpZW50IG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1hNTC1SUEMgaXMgYSBSZW1vdGUgUHJvY2VkdXJlIENhbGwgbWV0aG9kIHRoYXQgdXNlcyBYTUwgcGFzc2VkIHZpYSBIVFRQIGFzIGEKK3RyYW5zcG9ydC4gIFdpdGggaXQsIGEgY2xpZW50IGNhbiBjYWxsIG1ldGhvZHMgd2l0aCBwYXJhbWV0ZXJzIG9uIGEgcmVtb3RlCitzZXJ2ZXIgKHRoZSBzZXJ2ZXIgaXMgbmFtZWQgYnkgYSBVUkkpIGFuZCBnZXQgYmFjayBzdHJ1Y3R1cmVkIGRhdGEuCisKK2BgeG1scnBjYGAgaXMgYSBwYWNrYWdlIHRoYXQgY29sbGVjdHMgc2VydmVyIGFuZCBjbGllbnQgbW9kdWxlcyBpbXBsZW1lbnRpbmcKK1hNTC1SUEMuICBUaGUgbW9kdWxlcyBhcmU6CisKKyogOm1vZDpgeG1scnBjLmNsaWVudGAKKyogOm1vZDpgeG1scnBjLnNlcnZlcmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKaW5kZXggNjdmZWJhNi4uNjQ5M2ZkNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKQEAgLTE2LDcgKzE2LDkgQEAKIDpjbGFzczpgQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXJgLgogCiAKLS4uIGNsYXNzOjogU2ltcGxlWE1MUlBDU2VydmVyKGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLCBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKQorLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsXAorICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSxcCisgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IHNlcnZlciBpbnN0YW5jZS4gIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcmVnaXN0cmF0aW9uIG9mCiAgICBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBYTUwtUlBDIHByb3RvY29sLiAgVGhlICpyZXF1ZXN0SGFuZGxlcioKQEAgLTI1LDE4ICsyNywzMSBAQAogICAgYXJlIHBhc3NlZCB0byB0aGUgOmNsYXNzOmBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyYCBjb25zdHJ1Y3Rvci4gIElmICpsb2dSZXF1ZXN0cyoKICAgIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgcmVxdWVzdHMgd2lsbCBiZSBsb2dnZWQ7IHNldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gZmFsc2UKICAgIHdpbGwgdHVybiBvZmYgbG9nZ2luZy4gICBUaGUgKmFsbG93X25vbmUqIGFuZCAqZW5jb2RpbmcqIHBhcmFtZXRlcnMgYXJlIHBhc3NlZAotICAgb24gdG8gIDptb2Q6YHhtbHJwYy5jbGllbnRgIGFuZCBjb250cm9sIHRoZSBYTUwtUlBDIHJlc3BvbnNlcyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQKKyAgIG9uIHRvIDptb2Q6YHhtbHJwYy5jbGllbnRgIGFuZCBjb250cm9sIHRoZSBYTUwtUlBDIHJlc3BvbnNlcyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQKICAgIGZyb20gdGhlIHNlcnZlci4gVGhlICpiaW5kX2FuZF9hY3RpdmF0ZSogcGFyYW1ldGVyIGNvbnRyb2xzIHdoZXRoZXIKICAgIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kIDptZXRoOmBzZXJ2ZXJfYWN0aXZhdGVgIGFyZSBjYWxsZWQgaW1tZWRpYXRlbHkgYnkgdGhlCiAgICBjb25zdHJ1Y3RvcjsgaXQgZGVmYXVsdHMgdG8gdHJ1ZS4gU2V0dGluZyBpdCB0byBmYWxzZSBhbGxvd3MgY29kZSB0byBtYW5pcHVsYXRlCiAgICB0aGUgKmFsbG93X3JldXNlX2FkZHJlc3MqIGNsYXNzIHZhcmlhYmxlIGJlZm9yZSB0aGUgYWRkcmVzcyBpcyBib3VuZC4KKyAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gdGhlCisgICA6ZnVuYzpgfnhtbHJwYy5jbGllbnQubG9hZHNgIGZ1bmN0aW9uIGFuZCBjb250cm9scyB3aGljaCB0eXBlcyBhcmUgcHJvY2Vzc2VkCisgICB3aGVuIGRhdGUvdGltZXMgdmFsdWVzIG9yIGJpbmFyeSBkYXRhIGFyZSByZWNlaXZlZDsgaXQgZGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCi0uLiBjbGFzczo6IENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUpCisuLiBjbGFzczo6IENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsXAorICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSB0byBoYW5kbGUgWE1MLVJQQyByZXF1ZXN0cyBpbiBhIENHSSBlbnZpcm9ubWVudC4gIFRoZQogICAgKmFsbG93X25vbmUqIGFuZCAqZW5jb2RpbmcqIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBvbiB0byA6bW9kOmB4bWxycGMuY2xpZW50YAogICAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuCisgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBwYXJhbWV0ZXIgaXMgcGFzc2VkIHRvIHRoZQorICAgOmZ1bmM6YH54bWxycGMuY2xpZW50LmxvYWRzYCBmdW5jdGlvbiBhbmQgY29udHJvbHMgd2hpY2ggdHlwZXMgYXJlIHByb2Nlc3NlZAorICAgd2hlbiBkYXRlL3RpbWVzIHZhbHVlcyBvciBiaW5hcnkgZGF0YSBhcmUgcmVjZWl2ZWQ7IGl0IGRlZmF1bHRzIHRvIGZhbHNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyB3YXMgYWRkZWQuCiAKIAogLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcigpCkBAIC0yMzMsMTIgKzI0OCwxNyBAQAogOmNsYXNzOmBEb2NDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKIAotLi4gY2xhc3M6OiBEb2NYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9RG9jWE1MUlBDUmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpCisuLiBjbGFzczo6IERvY1hNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlcixcCisgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLFwKKyAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCiAKICAgIENyZWF0ZSBhIG5ldyBzZXJ2ZXIgaW5zdGFuY2UuIEFsbCBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKICAgIDpjbGFzczpgU2ltcGxlWE1MUlBDU2VydmVyYDsgKnJlcXVlc3RIYW5kbGVyKiBkZWZhdWx0cyB0bwogICAgOmNsYXNzOmBEb2NYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KKwogCiAuLiBjbGFzczo6IERvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAppbmRleCAyNjRjZDQ3Li45ZjZlMDc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdApAQCAtODcsNyArODcsMzAgQEAKIC4uIGRhdGE6OiBaSVBfREVGTEFURUQKIAogICAgVGhlIG51bWVyaWMgY29uc3RhbnQgZm9yIHRoZSB1c3VhbCBaSVAgY29tcHJlc3Npb24gbWV0aG9kLiAgVGhpcyByZXF1aXJlcyB0aGUKLSAgIDptb2Q6YHpsaWJgIG1vZHVsZS4gIE5vIG90aGVyIGNvbXByZXNzaW9uIG1ldGhvZHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuCisgICA6bW9kOmB6bGliYCBtb2R1bGUuCisKKworLi4gZGF0YTo6IFpJUF9CWklQMgorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIEJaSVAyIGNvbXByZXNzaW9uIG1ldGhvZC4gIFRoaXMgcmVxdWlyZXMgdGhlCisgICA6bW9kOmBiejJgIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBaSVBfTFpNQQorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIExaTUEgY29tcHJlc3Npb24gbWV0aG9kLiAgVGhpcyByZXF1aXJlcyB0aGUKKyAgIDptb2Q6YGx6bWFgIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGUgWklQIGZpbGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaGFzIGluY2x1ZGVkIHN1cHBvcnQgZm9yIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICBzaW5jZSAyMDAxLCBhbmQgZm9yIExaTUEgY29tcHJlc3Npb24gc2luY2UgMjAwNi4gSG93ZXZlciwgc29tZSB0b29scworICAgICAgKGluY2x1ZGluZyBvbGRlciBQeXRob24gcmVsZWFzZXMpIGRvIG5vdCBzdXBwb3J0IHRoZXNlIGNvbXByZXNzaW9uCisgICAgICBtZXRob2RzLCBhbmQgbWF5IGVpdGhlciByZWZ1c2UgdG8gcHJvY2VzcyB0aGUgWklQIGZpbGUgYWx0b2dldGhlciwKKyAgICAgIG9yIGZhaWwgdG8gZXh0cmFjdCBpbmRpdmlkdWFsIGZpbGVzLgogCiAKIC4uIHNlZWFsc286OgpAQCAtMTE4LDkgKzE0MSwxMSBAQAogICAgYWRkaW5nIGEgWklQIGFyY2hpdmUgdG8gYW5vdGhlciBmaWxlIChzdWNoIGFzIDpmaWxlOmBweXRob24uZXhlYCkuICBJZgogICAgKm1vZGUqIGlzIGBgYWBgIGFuZCB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBhdCBhbGwsIGl0IGlzIGNyZWF0ZWQuCiAgICAqY29tcHJlc3Npb24qIGlzIHRoZSBaSVAgY29tcHJlc3Npb24gbWV0aG9kIHRvIHVzZSB3aGVuIHdyaXRpbmcgdGhlIGFyY2hpdmUsCi0gICBhbmQgc2hvdWxkIGJlIDpjb25zdDpgWklQX1NUT1JFRGAgb3IgOmNvbnN0OmBaSVBfREVGTEFURURgOyB1bnJlY29nbml6ZWQKLSAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YFJ1bnRpbWVFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgCi0gICBpcyBzcGVjaWZpZWQgYnV0IHRoZSA6bW9kOmB6bGliYCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSwgOmV4YzpgUnVudGltZUVycm9yYAorICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCisgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWA7IHVucmVjb2duaXplZAorICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgUnVudGltZUVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCisgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgY29ycmVzcG9uZGVkIG1vZHVsZQorICAgKDptb2Q6YHpsaWJgLCA6bW9kOmBiejJgIG9yIDptb2Q6YGx6bWFgKSBpcyBub3QgYXZhaWxhYmxlLCA6ZXhjOmBSdW50aW1lRXJyb3JgCiAgICBpcyBhbHNvIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcwogICAgYGBUcnVlYGAgemlwZmlsZSB3aWxsIGNyZWF0ZSBaSVAgZmlsZXMgdGhhdCB1c2UgdGhlIFpJUDY0IGV4dGVuc2lvbnMgd2hlbgogICAgdGhlIHppcGZpbGUgaXMgbGFyZ2VyIHRoYW4gMiBHQi4gSWYgaXQgaXMgIGZhbHNlICh0aGUgZGVmYXVsdCkgOm1vZDpgemlwZmlsZWAKQEAgLTE0Myw2ICsxNjgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgYWJpbGl0eSB0byB1c2UgOmNsYXNzOmBaaXBGaWxlYCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDptb2Q6YGJ6aXAyIDxiejI+YCBhbmQgOm1vZDpgbHptYWAgY29tcHJlc3Npb24uCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QgYi9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CmluZGV4IDRmMTcwOTIuLmI0N2MzNWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdApAQCAtODUsOSArODUsMTIgQEAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2RhdGEocGF0aG5hbWUpCiAKLSAgICAgIFJldHVybiB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggKnBhdGhuYW1lKi4gUmFpc2UgOmV4YzpgSU9FcnJvcmAgaWYgdGhlCisgICAgICBSZXR1cm4gdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoICpwYXRobmFtZSouIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZQogICAgICAgZmlsZSB3YXNuJ3QgZm91bmQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKICAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmdWxsbmFtZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemxpYi5yc3QgYi9Eb2MvbGlicmFyeS96bGliLnJzdAppbmRleCA4OTdkOTE5Li40MjUzNWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS96bGliLnJzdApAQCAtNTgsMTIgKzU4LDM3IEBACiAgICBleGNlcHRpb24gaWYgYW55IGVycm9yIG9jY3Vycy4KIAogCi0uLiBmdW5jdGlvbjo6IGNvbXByZXNzb2JqKFtsZXZlbF0pCisuLiBmdW5jdGlvbjo6IGNvbXByZXNzb2JqKGxldmVsPS0xLCBtZXRob2Q9REVGTEFURUQsIHdiaXRzPTE1LCBtZW1sZXZlbD04LCBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pCiAKICAgIFJldHVybnMgYSBjb21wcmVzc2lvbiBvYmplY3QsIHRvIGJlIHVzZWQgZm9yIGNvbXByZXNzaW5nIGRhdGEgc3RyZWFtcyB0aGF0IHdvbid0Ci0gICBmaXQgaW50byBtZW1vcnkgYXQgb25jZS4gICpsZXZlbCogaXMgYW4gaW50ZWdlciBmcm9tIGBgMWBgIHRvIGBgOWBgIGNvbnRyb2xsaW5nCi0gICB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb247IGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwKLSAgIGBgOWBgIGlzIHNsb3dlc3QgYW5kIHByb2R1Y2VzIHRoZSBtb3N0LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGA2YGAuCisgICBmaXQgaW50byBtZW1vcnkgYXQgb25jZS4KKworICAgKmxldmVsKiBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwgLS0gYW4gaW50ZWdlciBmcm9tIGBgMWBgIHRvIGBgOWBgLiBBIHZhbHVlCisgICBvZiBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sIHdoaWxlIGEgdmFsdWUgb2YKKyAgIGBgOWBgIGlzIHNsb3dlc3QgYW5kIHByb2R1Y2VzIHRoZSBtb3N0LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDZgYC4KKworICAgKm1ldGhvZCogaXMgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgdmFsdWUgaXMKKyAgIGBgREVGTEFURURgYC4KKworICAgKndiaXRzKiBpcyB0aGUgYmFzZSB0d28gbG9nYXJpdGhtIG9mIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgYnVmZmVyLiBUaGlzCisgICBzaG91bGQgYmUgYW4gaW50ZWdlciBmcm9tIGBgOGBgIHRvIGBgMTVgYC4gSGlnaGVyIHZhbHVlcyBnaXZlIGJldHRlcgorICAgY29tcHJlc3Npb24sIGJ1dCB1c2UgbW9yZSBtZW1vcnkuCisKKyAgICptZW1sZXZlbCogY29udHJvbHMgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBmb3IgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuCisgICBWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSBgYDFgYCB0byBgYDlgYC4gSGlnaGVyIHZhbHVlcyB1c2luZyBtb3JlIG1lbW9yeSwKKyAgIGJ1dCBhcmUgZmFzdGVyIGFuZCBwcm9kdWNlIHNtYWxsZXIgb3V0cHV0LgorCisgICAqc3RyYXRlZ3kqIGlzIHVzZWQgdG8gdHVuZSB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlCisgICBgYFpfREVGQVVMVF9TVFJBVEVHWWBgLCBgYFpfRklMVEVSRURgYCwgYW5kIGBgWl9IVUZGTUFOX09OTFlgYC4KKworICAgKnpkaWN0KiBpcyBhIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyeS4gVGhpcyBpcyBhIHNlcXVlbmNlIG9mIGJ5dGVzCisgICAoc3VjaCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCkgY29udGFpbmluZyBzdWJzZXF1ZW5jZXMgdGhhdCBhcmUgZXhwZWN0ZWQKKyAgIHRvIG9jY3VyIGZyZXF1ZW50bHkgaW4gdGhlIGRhdGEgdGhhdCBpcyB0byBiZSBjb21wcmVzc2VkLiBUaG9zZSBzdWJzZXF1ZW5jZXMKKyAgIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIG1vc3QgY29tbW9uIHNob3VsZCBjb21lIGF0IHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKm1ldGhvZCosICp3Yml0cyosICptZW1sZXZlbCosICpzdHJhdGVneSogYW5kICp6ZGljdCoKKyAgICAgIHBhcmFtZXRlcnMuCiAKIAogLi4gZnVuY3Rpb246OiBjcmMzMihkYXRhWywgdmFsdWVdKQpAQCAtODIsMTIgKzEwNywxMyBAQAogCiAgICBBbHdheXMgcmV0dXJucyBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlci4KIAotLi4gbm90ZTo6Ci0gICBUbyBnZW5lcmF0ZSB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGFjcm9zcyBhbGwgUHl0aG9uIHZlcnNpb25zIGFuZAotICAgcGxhdGZvcm1zIHVzZSBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmYuICBJZiB5b3UgYXJlIG9ubHkgdXNpbmcKLSAgIHRoZSBjaGVja3N1bSBpbiBwYWNrZWQgYmluYXJ5IGZvcm1hdCB0aGlzIGlzIG5vdCBuZWNlc3NhcnkgYXMgdGhlCi0gICByZXR1cm4gdmFsdWUgaXMgdGhlIGNvcnJlY3QgMzJiaXQgYmluYXJ5IHJlcHJlc2VudGF0aW9uCi0gICByZWdhcmRsZXNzIG9mIHNpZ24uCisgICAuLiBub3RlOjoKKworICAgICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKKyAgICAgIHBsYXRmb3JtcywgdXNlIGBgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmYGAuICBJZiB5b3UgYXJlIG9ubHkgdXNpbmcKKyAgICAgIHRoZSBjaGVja3N1bSBpbiBwYWNrZWQgYmluYXJ5IGZvcm1hdCB0aGlzIGlzIG5vdCBuZWNlc3NhcnkgYXMgdGhlCisgICAgICByZXR1cm4gdmFsdWUgaXMgdGhlIGNvcnJlY3QgMzItYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbgorICAgICAgcmVnYXJkbGVzcyBvZiBzaWduLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhWywgd2JpdHNbLCBidWZzaXplXV0pCkBAIC0xMTQsMTEgKzE0MCwyNiBAQAogICAgdG8gOmM6ZnVuYzpgbWFsbG9jYC4gIFRoZSBkZWZhdWx0IHNpemUgaXMgMTYzODQuCiAKIAotLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzb2JqKFt3Yml0c10pCisuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3NvYmood2JpdHM9MTVbLCB6ZGljdF0pCiAKICAgIFJldHVybnMgYSBkZWNvbXByZXNzaW9uIG9iamVjdCwgdG8gYmUgdXNlZCBmb3IgZGVjb21wcmVzc2luZyBkYXRhIHN0cmVhbXMgdGhhdAotICAgd29uJ3QgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuICBUaGUgKndiaXRzKiBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIHNpemUgb2YgdGhlCi0gICB3aW5kb3cgYnVmZmVyLgorICAgd29uJ3QgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuCisKKyAgIFRoZSAqd2JpdHMqIHBhcmFtZXRlciBjb250cm9scyB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IGJ1ZmZlci4KKworICAgVGhlICp6ZGljdCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyeS4gSWYKKyAgIHByb3ZpZGVkLCB0aGlzIG11c3QgYmUgdGhlIHNhbWUgZGljdGlvbmFyeSBhcyB3YXMgdXNlZCBieSB0aGUgY29tcHJlc3NvciB0aGF0CisgICBwcm9kdWNlZCB0aGUgZGF0YSB0aGF0IGlzIHRvIGJlIGRlY29tcHJlc3NlZC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIElmICp6ZGljdCogaXMgYSBtdXRhYmxlIG9iamVjdCAoc3VjaCBhcyBhIDpjbGFzczpgYnl0ZWFycmF5YCksIHlvdSBtdXN0IG5vdAorICAgICAgbW9kaWZ5IGl0cyBjb250ZW50cyBiZXR3ZWVuIHRoZSBjYWxsIHRvIDpmdW5jOmBkZWNvbXByZXNzb2JqYCBhbmQgdGhlIGZpcnN0CisgICAgICBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IncyBgYGRlY29tcHJlc3MoKWBgIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqemRpY3QqIHBhcmFtZXRlci4KKwogCiBDb21wcmVzc2lvbiBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCkBAIC0xNTAsNyArMTkxLDcgQEAKICAgIGNvbXByZXNzIGEgc2V0IG9mIGRhdGEgdGhhdCBzaGFyZSBhIGNvbW1vbiBpbml0aWFsIHByZWZpeC4KIAogCi1EZWNvbXByZXNzaW9uIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHMsIGFuZCB0d28gYXR0cmlidXRlczoKK0RlY29tcHJlc3Npb24gb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAogCiAuLiBhdHRyaWJ1dGU6OiBEZWNvbXByZXNzLnVudXNlZF9kYXRhCkBAIC0xNjAsMTMgKzIwMSw2IEBACiAgICBhdmFpbGFibGUuICBJZiB0aGUgd2hvbGUgYnl0ZXN0cmluZyB0dXJuZWQgb3V0IHRvIGNvbnRhaW4gY29tcHJlc3NlZCBkYXRhLCB0aGlzIGlzCiAgICBgYGIiImBgLCBhbiBlbXB0eSBieXRlcyBvYmplY3QuCiAKLSAgIFRoZSBvbmx5IHdheSB0byBkZXRlcm1pbmUgd2hlcmUgYSBieXRlc3RyaW5nIG9mIGNvbXByZXNzZWQgZGF0YSBlbmRzIGlzIGJ5IGFjdHVhbGx5Ci0gICBkZWNvbXByZXNzaW5nIGl0LiAgVGhpcyBtZWFucyB0aGF0IHdoZW4gY29tcHJlc3NlZCBkYXRhIGlzIGNvbnRhaW5lZCBwYXJ0IG9mIGEKLSAgIGxhcmdlciBmaWxlLCB5b3UgY2FuIG9ubHkgZmluZCB0aGUgZW5kIG9mIGl0IGJ5IHJlYWRpbmcgZGF0YSBhbmQgZmVlZGluZyBpdAotICAgZm9sbG93ZWQgYnkgc29tZSBub24tZW1wdHkgYnl0ZXN0cmluZyBpbnRvIGEgZGVjb21wcmVzc2lvbiBvYmplY3QncwotICAgOm1ldGg6YGRlY29tcHJlc3NgIG1ldGhvZCB1bnRpbCB0aGUgOmF0dHI6YHVudXNlZF9kYXRhYCBhdHRyaWJ1dGUgaXMgbm8gbG9uZ2VyCi0gICBlbXB0eS4KLQogCiAuLiBhdHRyaWJ1dGU6OiBEZWNvbXByZXNzLnVuY29uc3VtZWRfdGFpbAogCkBAIC0xNzcsNiArMjExLDE3IEBACiAgICA6bWV0aDpgZGVjb21wcmVzc2AgbWV0aG9kIGNhbGwgaW4gb3JkZXIgdG8gZ2V0IGNvcnJlY3Qgb3V0cHV0LgogCiAKKy4uIGF0dHJpYnV0ZTo6IERlY29tcHJlc3MuZW9mCisKKyAgIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIHN0cmVhbSBoYXMgYmVlbgorICAgcmVhY2hlZC4KKworICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgcHJvcGVybHktZm9ybWVkIGNvbXByZXNzZWQKKyAgIHN0cmVhbSwgYW5kIGFuIGluY29tcGxldGUgb3IgdHJ1bmNhdGVkIG9uZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGFbLCBtYXhfbGVuZ3RoXSkKIAogICAgRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQpAQCAtMjExLDYgKzI1NiwyNCBAQAogICAgc2Vla3MgaW50byB0aGUgc3RyZWFtIGF0IGEgZnV0dXJlIHBvaW50LgogCiAKK0luZm9ybWF0aW9uIGFib3V0IHRoZSB2ZXJzaW9uIG9mIHRoZSB6bGliIGxpYnJhcnkgaW4gdXNlIGlzIGF2YWlsYWJsZSB0aHJvdWdoCit0aGUgZm9sbG93aW5nIGNvbnN0YW50czoKKworCisuLiBkYXRhOjogWkxJQl9WRVJTSU9OCisKKyAgIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgemxpYiBsaWJyYXJ5IHRoYXQgd2FzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBtb2R1bGUuCisgICBUaGlzIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgemxpYiBsaWJyYXJ5IGFjdHVhbGx5IHVzZWQgYXQgcnVudGltZSwgd2hpY2gKKyAgIGlzIGF2YWlsYWJsZSBhcyA6Y29uc3Q6YFpMSUJfUlVOVElNRV9WRVJTSU9OYC4KKworCisuLiBkYXRhOjogWkxJQl9SVU5USU1FX1ZFUlNJT04KKworICAgVGhlIHZlcnNpb24gc3RyaW5nIG9mIHRoZSB6bGliIGxpYnJhcnkgYWN0dWFsbHkgbG9hZGVkIGJ5IHRoZSBpbnRlcnByZXRlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gc2VlYWxzbzo6CiAKICAgIE1vZHVsZSA6bW9kOmBnemlwYApkaWZmIC0tZ2l0IGEvRG9jL2xpY2Vuc2UucnN0IGIvRG9jL2xpY2Vuc2UucnN0CmluZGV4IGE0NGZhMDQuLjYzMjZjZTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWNlbnNlLnJzdAorKysgYi9Eb2MvbGljZW5zZS5yc3QKQEAgLTEyMCw2ICsxMjAsOCBAQAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKIHwgMy4yLjMgICAgICAgICAgfCAzLjIuMiAgICAgICAgfCAyMDEyICAgICAgIHwgUFNGICAgICAgICB8IHllcyAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworfCAzLjMuMCAgICAgICAgICB8IDMuMiAgICAgICAgICB8IDIwMTIgICAgICAgfCBQU0YgICAgICAgIHwgeWVzICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCiAKIC4uIG5vdGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbWFrZS5iYXQgYi9Eb2MvbWFrZS5iYXQKaW5kZXggNGVhMmQ1MS4uYTIyMjBjMCAxMDA2NDQKLS0tIGEvRG9jL21ha2UuYmF0CisrKyBiL0RvYy9tYWtlLmJhdApAQCAtMzcsNyArMzcsNyBAQAogc3ZuIGNvICVTVk5ST09UJS9leHRlcm5hbC9TcGhpbngtMS4wLjcvc3BoaW54IHRvb2xzL3NwaGlueAogc3ZuIGNvICVTVk5ST09UJS9leHRlcm5hbC9kb2N1dGlscy0wLjYvZG9jdXRpbHMgdG9vbHMvZG9jdXRpbHMKIHN2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvSmluamEtMi4zLjEvamluamEyIHRvb2xzL2ppbmphMgotc3ZuIGNvICVTVk5ST09UJS9leHRlcm5hbC9QeWdtZW50cy0xLjMuMS9weWdtZW50cyB0b29scy9weWdtZW50cworc3ZuIGNvICVTVk5ST09UJS9leHRlcm5hbC9QeWdtZW50cy0xLjVkZXYtMjAxMjA5MzAvcHlnbWVudHMgdG9vbHMvcHlnbWVudHMKIGdvdG8gZW5kCiAKIDp1cGRhdGUKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdCBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAppbmRleCAzMjJlOGM4Li5kMDkzMzgzIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CkBAIC0zNSwxMiArMzUsMTkgQEAKIEV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdCdzICppZGVudGl0eSogbmV2ZXIKIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0IGFzIHRoZSBvYmplY3QncyBhZGRyZXNzIGluCiBtZW1vcnkuICBUaGUgJzprZXl3b3JkOmBpc2AnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZSBpZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlCi06ZnVuYzpgaWRgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5IChjdXJyZW50bHkKLWltcGxlbWVudGVkIGFzIGl0cyBhZGRyZXNzKS4gQW4gb2JqZWN0J3MgOmRmbjpgdHlwZWAgaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsjXV8KKzpmdW5jOmBpZGAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkuCisKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRm9yIENQeXRob24sIGBgaWQoeClgYCBpcyB0aGUgbWVtb3J5IGFkZHJlc3Mgd2hlcmUgYGB4YGAgaXMgc3RvcmVkLgorCiBBbiBvYmplY3QncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzIChlLmcuLCAiZG9lcwogaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIG9iamVjdHMgb2YgdGhhdAogdHlwZS4gIFRoZSA6ZnVuYzpgdHlwZWAgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3QncyB0eXBlICh3aGljaCBpcyBhbiBvYmplY3QKLWl0c2VsZikuICBUaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuCitpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuIG9iamVjdCdzIDpkZm46YHR5cGVgIGlzIGFsc28gdW5jaGFuZ2VhYmxlLgorWyNdXworCitUaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuCiBjaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZSBvbmNlIHRoZXkKIGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW4gaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QKIHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlcidzIHZhbHVlCkBAIC0yNzYsMTYgKzI4MywxNiBAQAogICAgICAgICAgICAgc2luZ2xlOiBpbnRlZ2VyCiAgICAgICAgICAgICBzaW5nbGU6IFVuaWNvZGUKIAotICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgc3RyaW5nIG9iamVjdCBhcmUgVW5pY29kZSBjb2RlIHVuaXRzLiAgQSBVbmljb2RlIGNvZGUKLSAgICAgICAgIHVuaXQgaXMgcmVwcmVzZW50ZWQgYnkgYSBzdHJpbmcgb2JqZWN0IG9mIG9uZSBpdGVtIGFuZCBjYW4gaG9sZCBlaXRoZXIKLSAgICAgICAgIGEgMTYtYml0IG9yIDMyLWJpdCB2YWx1ZSByZXByZXNlbnRpbmcgYSBVbmljb2RlIG9yZGluYWwgKHRoZSBtYXhpbXVtCi0gICAgICAgICB2YWx1ZSBmb3IgdGhlIG9yZGluYWwgaXMgZ2l2ZW4gaW4gYGBzeXMubWF4dW5pY29kZWBgLCBhbmQgZGVwZW5kcyBvbgotICAgICAgICAgaG93IFB5dGhvbiBpcyBjb25maWd1cmVkIGF0IGNvbXBpbGUgdGltZSkuICBTdXJyb2dhdGUgcGFpcnMgbWF5IGJlCi0gICAgICAgICBwcmVzZW50IGluIHRoZSBVbmljb2RlIG9iamVjdCwgYW5kIHdpbGwgYmUgcmVwb3J0ZWQgYXMgdHdvIHNlcGFyYXRlCi0gICAgICAgICBpdGVtcy4gIFRoZSBidWlsdC1pbiBmdW5jdGlvbnMgOmZ1bmM6YGNocmAgYW5kIDpmdW5jOmBvcmRgIGNvbnZlcnQKLSAgICAgICAgIGJldHdlZW4gY29kZSB1bml0cyBhbmQgbm9ubmVnYXRpdmUgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHRoZSBVbmljb2RlCi0gICAgICAgICBvcmRpbmFscyBhcyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIFN0YW5kYXJkIDMuMC4gQ29udmVyc2lvbiBmcm9tIGFuZCB0bwotICAgICAgICAgb3RoZXIgZW5jb2RpbmdzIGFyZSBwb3NzaWJsZSB0aHJvdWdoIHRoZSBzdHJpbmcgbWV0aG9kIDptZXRoOmBlbmNvZGVgLgorICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlcG9pbnRzLgorICAgICAgICAgQWxsIHRoZSBjb2RlcG9pbnRzIGluIHJhbmdlIGBgVSswMDAwIC0gVSsxMEZGRkZgYCBjYW4gYmUgcmVwcmVzZW50ZWQKKyAgICAgICAgIGluIGEgc3RyaW5nLiAgUHl0aG9uIGRvZXNuJ3QgaGF2ZSBhIDpjOnR5cGU6YGNocmAgdHlwZSwgYW5kCisgICAgICAgICBldmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpcyByZXByZXNlbnRlZCBhcyBhIHN0cmluZyBvYmplY3QKKyAgICAgICAgIHdpdGggbGVuZ3RoIGBgMWBgLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBvcmRgIGNvbnZlcnRzIGEKKyAgICAgICAgIGNoYXJhY3RlciB0byBpdHMgY29kZXBvaW50IChhcyBhbiBpbnRlZ2VyKTsgOmZ1bmM6YGNocmAgY29udmVydHMKKyAgICAgICAgIGFuIGludGVnZXIgaW4gcmFuZ2UgYGAwIC0gMTBGRkZGYGAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLgorICAgICAgICAgOm1ldGg6YHN0ci5lbmNvZGVgIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYSA6Y2xhc3M6YHN0cmAgdG8KKyAgICAgICAgIDpjbGFzczpgYnl0ZXNgIHVzaW5nIHRoZSBnaXZlbiBlbmNvZGluZywgYW5kIDptZXRoOmBieXRlcy5kZWNvZGVgIGNhbgorICAgICAgICAgYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS4KIAogICAgICAgVHVwbGVzCiAgICAgICAgICAuLiBpbmRleDo6CkBAIC00NDgsNiArNDU1LDExIEBACiAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKwogICAgICAgfCA6YXR0cjpgX19uYW1lX19gICAgICAgICB8IFRoZSBmdW5jdGlvbidzIG5hbWUgICAgICAgICAgIHwgV3JpdGFibGUgIHwKICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rCisgICAgICB8IDphdHRyOmBfX3F1YWxuYW1lX19gICAgIHwgVGhlIGZ1bmN0aW9uJ3MgICAgICAgICAgICAgICAgfCBXcml0YWJsZSAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgLi4gdmVyc2lvbmFkZGVkOjogMy4zICAgICAgICAgfCAgICAgICAgICAgfAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKICAgICAgIHwgOmF0dHI6YF9fbW9kdWxlX19gICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICB8IFdyaXRhYmxlICB8CiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgfCAgICAgICAgICAgfAogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLiAgICAgIHwgICAgICAgICAgIHwKQEAgLTYzOSwxNyArNjUxLDIwIEBACiAgICAgICBzdGF0ZW1lbnQ6IGltcG9ydAogICAgICAgb2JqZWN0OiBtb2R1bGUKIAotICAgTW9kdWxlcyBhcmUgaW1wb3J0ZWQgYnkgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCAoc2VlIHNlY3Rpb24KLSAgIDpyZWY6YGltcG9ydGApLiBBIG1vZHVsZSBvYmplY3QgaGFzIGEKLSAgIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQKLSAgIGJ5IHRoZSBfX2dsb2JhbHNfXyBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUKLSAgIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXMKLSAgIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUKLSAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkIG9uY2UgdGhlCi0gICBpbml0aWFsaXphdGlvbiBpcyBkb25lKS4KKyAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZSBjcmVhdGVkIGJ5CisgICB0aGUgOnJlZjpgaW1wb3J0IHN5c3RlbSA8aW1wb3J0c3lzdGVtPmAgYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlCisgICA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgKHNlZSA6a2V5d29yZDpgaW1wb3J0YCksIG9yIGJ5IGNhbGxpbmcKKyAgIGZ1bmN0aW9ucyBzdWNoIGFzIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgYW5kIGJ1aWx0LWluCisgICA6ZnVuYzpgX19pbXBvcnRfX2AuICBBIG1vZHVsZSBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEKKyAgIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlIGBgX19nbG9iYWxzX19gYAorICAgYXR0cmlidXRlIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlCisgICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYG0ueGBgIGlzIGVxdWl2YWxlbnQgdG8KKyAgIGBgbS5fX2RpY3RfX1sieCJdYGAuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlIG9iamVjdCB1c2VkCisgICB0byBpbml0aWFsaXplIHRoZSBtb2R1bGUgKHNpbmNlIGl0IGlzbid0IG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcworICAgZG9uZSkuCiAKLSAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LCBlLmcuLCBgYG0ueCA9Ci0gICAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC4KKyAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LCBlLmcuLAorICAgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IF9fZGljdF9fIChtb2R1bGUgYXR0cmlidXRlKQogCkBAIC02NzEsMTEgKzY4NiwxMiBAQAogCiAgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogOmF0dHI6YF9fbmFtZV9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZTsKICAgIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmCi0gICB1bmF2YWlsYWJsZTsgOmF0dHI6YF9fZmlsZV9fYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUgbW9kdWxlCi0gICB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgOmF0dHI6YF9fZmlsZV9fYCBhdHRyaWJ1dGUgaXMgbm90Ci0gICBwcmVzZW50IGZvciBDIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvcgotICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lCi0gICBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS4KKyAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZQorICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gCisgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDIG1vZHVsZXMKKyAgIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKKyAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkCisgICBsaWJyYXJ5IGZpbGUuCiAKIEN1c3RvbSBjbGFzc2VzCiAgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWUgc2VjdGlvbgpAQCAtMTI1MCwxMCArMTI2NiwxMCBAQAogICAgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0J3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoCiAgICBidWNrZXQpLgogCi0KICAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgOm1ldGg6YF9fZXFfX2AgYW5kIDptZXRoOmBfX2hhc2hfX2AgbWV0aG9kcwogICAgYnkgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoIHRoZW1zZWx2ZXMpCi0gICBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGBgaWQoeClgYC4KKyAgIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaCB0aGF0IGBgeCA9PSB5YGAKKyAgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PSBoYXNoKHkpYGAuCiAKICAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgOm1ldGg6YF9fZXFfX2AgYW5kIGRvZXMgbm90IGRlZmluZSA6bWV0aDpgX19oYXNoX19gCiAgICB3aWxsIGhhdmUgaXRzIDptZXRoOmBfX2hhc2hfX2AgaW1wbGljaXRseSBzZXQgdG8gYGBOb25lYGAuICBXaGVuIHRoZQpAQCAtMTI3Miw3ICsxMjg4LDI3IEBACiAgICBhIDpleGM6YFR5cGVFcnJvcmAgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCBhcyBoYXNoYWJsZSBieQogICAgYW4gYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgY2FsbC4KIAotICAgU2VlIGFsc28gdGhlIDpvcHRpb246YC1SYCBjb21tYW5kLWxpbmUgb3B0aW9uLgorCisgICAuLiBub3RlOjoKKworICAgICAgQnkgZGVmYXVsdCwgdGhlIDptZXRoOmBfX2hhc2hfX2AgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lCisgICAgICBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLiAgQWx0aG91Z2ggdGhleQorICAgICAgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZSBub3QKKyAgICAgIHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgorCisgICAgICBUaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLW9mLXNlcnZpY2UgY2F1c2VkCisgICAgICBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYQorICAgICAgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCisgICAgICBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yIGRldGFpbHMuCisKKyAgICAgIENoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZiBkaWN0cywgc2V0cyBhbmQKKyAgICAgIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXMgYWJvdXQgdGhpcyBvcmRlcmluZworICAgICAgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgYnVpbGRzKS4KKworICAgICAgU2VlIGFsc28gOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19ib29sX18oc2VsZikKQEAgLTEzNTMsNyArMTM4OSw4IEBACiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2Rpcl9fKHNlbGYpCiAKLSAgIENhbGxlZCB3aGVuIDpmdW5jOmBkaXJgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiAgQSBsaXN0IG11c3QgYmUgcmV0dXJuZWQuCisgICBDYWxsZWQgd2hlbiA6ZnVuYzpgZGlyYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlCisgICByZXR1cm5lZC4gOmZ1bmM6YGRpcmAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmQgc29ydHMgaXQuCiAKIAogLi4gX2Rlc2NyaXB0b3JzOgpAQCAtMTUyNCw1MyArMTU2MSwxMTUgQEAKIEN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIEEgY2xhc3MgZGVmaW5pdGlvbiBpcwotcmVhZCBpbnRvIGEgc2VwYXJhdGUgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgb2YgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGUKLXJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIGRpY3QpYGAuCitCeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIFRoZSBjbGFzcyBib2R5IGlzCitleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlCityZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuCiAKLVdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcmVhZCwgaWYgYSBjYWxsYWJsZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQKLWlzIHBhc3NlZCBhZnRlciB0aGUgYmFzZXMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHRoZSBjYWxsYWJsZSBnaXZlbiB3aWxsIGJlCi1jYWxsZWQgaW5zdGVhZCBvZiA6ZnVuYzpgdHlwZWAuICBJZiBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkLCB0aGV5Ci13aWxsIGFsc28gYmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3MuICBUaGlzIGFsbG93cyBjbGFzc2VzIG9yIGZ1bmN0aW9ucyB0byBiZQotd3JpdHRlbiB3aGljaCBtb25pdG9yIG9yIGFsdGVyIHRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzOgorVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGUgYGBtZXRhY2xhc3NgYAora2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieSBpbmhlcml0aW5nIGZyb20gYW4KK2V4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLAorYm90aCBgYE15Q2xhc3NgYCBhbmQgYGBNeVN1YmNsYXNzYGAgYXJlIGluc3RhbmNlcyBvZiBgYE1ldGFgYDo6CiAKLSogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLgorICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICBwYXNzCiAKLSogUmV0dXJuaW5nIGFuIGluc3RhbmNlIG9mIGFub3RoZXIgY2xhc3MgLS0gZXNzZW50aWFsbHkgcGVyZm9ybWluZyB0aGUgcm9sZSBvZiBhCi0gIGZhY3RvcnkgZnVuY3Rpb24uCisgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICBwYXNzCiAKLVRoZXNlIHN0ZXBzIHdpbGwgaGF2ZSB0byBiZSBwZXJmb3JtZWQgaW4gdGhlIG1ldGFjbGFzcydzIDptZXRoOmBfX25ld19fYCBtZXRob2QKLS0tIDptZXRoOmB0eXBlLl9fbmV3X19gIGNhbiB0aGVuIGJlIGNhbGxlZCBmcm9tIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBhIGNsYXNzCi13aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgVGhpcyBleGFtcGxlIGFkZHMgYSBuZXcgZWxlbWVudCB0byB0aGUgY2xhc3MKLWRpY3Rpb25hcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSBjbGFzczo6CisgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOgorICAgICAgIHBhc3MKIAotICBjbGFzcyBtZXRhY2xzKHR5cGUpOgotICAgICAgZGVmIF9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCk6Ci0gICAgICAgICAgZGljdFsnZm9vJ10gPSAnbWV0YWNscyB3YXMgaGVyZScKLSAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpCitBbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZQorcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy4KIAotWW91IGNhbiBvZiBjb3Vyc2UgYWxzbyBvdmVycmlkZSBvdGhlciBjbGFzcyBtZXRob2RzIChvciBhZGQgbmV3IG1ldGhvZHMpOyBmb3IKLWV4YW1wbGUgZGVmaW5pbmcgYSBjdXN0b20gOm1ldGg6YF9fY2FsbF9fYCBtZXRob2QgaW4gdGhlIG1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tCi1iZWhhdmlvciB3aGVuIHRoZSBjbGFzcyBpcyBjYWxsZWQsIGUuZy4gbm90IGFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS4KK1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOgogCi1JZiB0aGUgbWV0YWNsYXNzIGhhcyBhIDptZXRoOmBfX3ByZXBhcmVfX2AgYXR0cmlidXRlICh1c3VhbGx5IGltcGxlbWVudGVkIGFzIGEKLWNsYXNzIG9yIHN0YXRpYyBtZXRob2QpLCBpdCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjbGFzcyBib2R5IGlzIGV2YWx1YXRlZCB3aXRoCi10aGUgbmFtZSBvZiB0aGUgY2xhc3MgYW5kIGEgdHVwbGUgb2YgaXRzIGJhc2VzIGZvciBhcmd1bWVudHMuICBJdCBzaG91bGQgcmV0dXJuCi1hbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgbWFwcGluZyBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlCi1uYW1lc3BhY2Ugb2YgdGhlIGNsYXNzLiAgVGhlIGRlZmF1bHQgaXMgYSBwbGFpbiBkaWN0aW9uYXJ5LiAgVGhpcyBjb3VsZCBiZSB1c2VkLAotZm9yIGV4YW1wbGUsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIHRoYXQgY2xhc3MgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWQgaW4gYnkKLXJldHVybmluZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuCisqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZAorKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkCisqIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkCisqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZAogCi1UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBwcmVjZWRlbmNlIHJ1bGVzOgorRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi0qIElmIHRoZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaXMgcGFzc2VkIHdpdGggdGhlIGJhc2VzLCBpdCBpcyB1c2VkLgorVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXMgZm9sbG93czoKIAotKiBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBiYXNlIGNsYXNzLCBpdHMgbWV0YWNsYXNzIGlzIHVzZWQuCisqIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuIDpmdW5jOmB0eXBlYCBpcyB1c2VkCisqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2YKKyAgOmZ1bmM6YHR5cGVgLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzcworKiBpZiBhbiBpbnN0YW5jZSBvZiA6ZnVuYzpgdHlwZWAgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3IKKyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZAogCi0qIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgbWV0YWNsYXNzICg6Y2xhc3M6YHR5cGVgKSBpcyB1c2VkLgorVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWQKK21ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuIGBgdHlwZShjbHMpYGApIG9mIGFsbCBzcGVjaWZpZWQKK2Jhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGEgc3VidHlwZSBvZiAqYWxsKgorb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMKK3RoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIHdpbGwgZmFpbCB3aXRoIGBgVHlwZUVycm9yYGAuCisKKworUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2UKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK09uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKK2lzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIGl0IGlzIGNhbGxlZAorYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsICoqa3dkcylgYCAod2hlcmUgdGhlCithZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuCisKK0lmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzIG5hbWVzcGFjZQoraXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgOmZ1bmM6YGRpY3RgIGluc3RhbmNlLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzExNWAgLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMAorICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rCisKKworRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzCitgYGV4ZWMoYm9keSwgZ2xvYmFscygpLCBuYW1lc3BhY2UpYGAuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsCitjYWxsIHRvIDpmdW5jOmBleGVjYCBpcyB0aGF0IGxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZworYW55IG1ldGhvZHMpIHRvIHJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUKK2NsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLgorCitIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sIG1ldGhvZHMKK2RlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlIGNsYXNzIHNjb3BlLgorQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yCitjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbCBmcm9tIHN0YXRpYyBtZXRob2RzLgorCisKK0NyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3QKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzIGJvZHksCit0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZworYGBtZXRhY2xhc3MobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKWBgICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcworcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lIGFzIHRob3NlIHBhc3NlZCB0byBgYF9fcHJlcGFyZV9fYGApLgorCitUaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLWFyZ3VtZW50Citmb3JtIG9mIDpmdW5jOmBzdXBlcmAuIGBgX19jbGFzc19fYGAgaXMgYW4gaW1wbGljaXQgY2xvc3VyZSByZWZlcmVuY2UKK2NyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlciB0byBlaXRoZXIKK2BgX19jbGFzc19fYGAgb3IgYGBzdXBlcmBgLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudCBmb3JtIG9mCis6ZnVuYzpgc3VwZXJgIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBiYXNlZCBvbgorbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0byBtYWtlIHRoZQorY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgbWV0aG9kLgorCitBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3MgZGVjb3JhdG9ycworaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmcgb2JqZWN0IGlzIGJvdW5kCitpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzEzNWAgLSBOZXcgc3VwZXIKKyAgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgYGBfX2NsYXNzX19gYCBjbG9zdXJlIHJlZmVyZW5jZQorCisKK01ldGFjbGFzcyBleGFtcGxlCiteXl5eXl5eXl5eXl5eXl5eXgogCiBUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlIGJlZW4KLWV4cGxvcmVkIGluY2x1ZGluZyBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpYyBkZWxlZ2F0aW9uLCBhdXRvbWF0aWMKK2V4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWMgZGVsZWdhdGlvbiwgYXV0b21hdGljCiBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kIGF1dG9tYXRpYyByZXNvdXJjZQogbG9ja2luZy9zeW5jaHJvbml6YXRpb24uCiAKQEAgLTE1ODMsOSArMTY4Miw5IEBACiAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6CiAgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQogCi0gICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBjbGFzc2RpY3QpOgotICAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QoY2xhc3NkaWN0KSkKLSAgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUoY2xhc3NkaWN0KQorICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOgorICAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSkKKyAgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKToKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0IGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKaW5kZXggMmM2YWNiNi4uNDE1MjNjYiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKQEAgLTMxOCw3ICszMTgsNyBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICB5aWVsZF9hdG9tOiAiKCIgYHlpZWxkX2V4cHJlc3Npb25gICIpIgotICAgeWllbGRfZXhwcmVzc2lvbjogInlpZWxkIiBbYGV4cHJlc3Npb25fbGlzdGBdCisgICB5aWVsZF9leHByZXNzaW9uOiAieWllbGQiIFtgZXhwcmVzc2lvbl9saXN0YCB8ICJmcm9tIiBgZXhwcmVzc2lvbmBdCiAKIFRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gaXMgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24sCiBhbmQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlZmluaXRpb24uICBVc2luZyBhCkBAIC0zMzYsNyArMzM2LDEwIEBACiB0aGUgZ2VuZXJhdG9yJ3MgbWV0aG9kcywgdGhlIGZ1bmN0aW9uIGNhbiBwcm9jZWVkIGV4YWN0bHkgYXMgaWYgdGhlCiA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gd2FzIGp1c3QgYW5vdGhlciBleHRlcm5hbCBjYWxsLiAgVGhlIHZhbHVlIG9mIHRoZQogOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIGFmdGVyIHJlc3VtaW5nIGRlcGVuZHMgb24gdGhlIG1ldGhvZCB3aGljaCByZXN1bWVkCi10aGUgZXhlY3V0aW9uLgordGhlIGV4ZWN1dGlvbi4gSWYgOm1ldGg6YF9fbmV4dF9fYCBpcyB1c2VkICh0eXBpY2FsbHkgdmlhIGVpdGhlciBhCis6a2V5d29yZDpgZm9yYCBvciB0aGUgOmZ1bmM6YG5leHRgIGJ1aWx0aW4pIHRoZW4gdGhlIHJlc3VsdCBpcyA6Y29uc3Q6YE5vbmVgLAorb3RoZXJ3aXNlLCBpZiA6bWV0aDpgc2VuZGAgaXMgdXNlZCwgdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUgdGhlIHZhbHVlIHBhc3NlZAoraW4gdG8gdGhhdCBtZXRob2QuCiAKIC4uIGluZGV4Ojogc2luZ2xlOiBjb3JvdXRpbmUKIApAQCAtMzQ2LDEyICszNDksMzIgQEAKIHdoZXJlIHNob3VsZCB0aGUgZXhlY3V0aW9uIGNvbnRpbnVlIGFmdGVyIGl0IHlpZWxkczsgdGhlIGNvbnRyb2wgaXMgYWx3YXlzCiB0cmFuc2ZlcnJlZCB0byB0aGUgZ2VuZXJhdG9yJ3MgY2FsbGVyLgogCi1UaGUgOmtleXdvcmQ6YHlpZWxkYCBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBpbiB0aGUgOmtleXdvcmQ6YHRyeWAgY2xhdXNlIG9mIGEKKzprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbnMgYXJlIGFsbG93ZWQgaW4gdGhlIDprZXl3b3JkOmB0cnlgIGNsYXVzZSBvZiBhCiA6a2V5d29yZDpgdHJ5YCAuLi4gIDprZXl3b3JkOmBmaW5hbGx5YCBjb25zdHJ1Y3QuICBJZiB0aGUgZ2VuZXJhdG9yIGlzIG5vdAogcmVzdW1lZCBiZWZvcmUgaXQgaXMgZmluYWxpemVkIChieSByZWFjaGluZyBhIHplcm8gcmVmZXJlbmNlIGNvdW50IG9yIGJ5IGJlaW5nCiBnYXJiYWdlIGNvbGxlY3RlZCksIHRoZSBnZW5lcmF0b3ItaXRlcmF0b3IncyA6bWV0aDpgY2xvc2VgIG1ldGhvZCB3aWxsIGJlCiBjYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIDprZXl3b3JkOmBmaW5hbGx5YCBjbGF1c2VzIHRvIGV4ZWN1dGUuCiAKK1doZW4gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIHVzZWQsIGl0IHRyZWF0cyB0aGUgc3VwcGxpZWQgZXhwcmVzc2lvbiBhcworYSBzdWJpdGVyYXRvci4gQWxsIHZhbHVlcyBwcm9kdWNlZCBieSB0aGF0IHN1Yml0ZXJhdG9yIGFyZSBwYXNzZWQgZGlyZWN0bHkKK3RvIHRoZSBjYWxsZXIgb2YgdGhlIGN1cnJlbnQgZ2VuZXJhdG9yJ3MgbWV0aG9kcy4gQW55IHZhbHVlcyBwYXNzZWQgaW4gd2l0aAorOm1ldGg6YHNlbmRgIGFuZCBhbnkgZXhjZXB0aW9ucyBwYXNzZWQgaW4gd2l0aCA6bWV0aDpgdGhyb3dgIGFyZSBwYXNzZWQgdG8KK3RoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIGlmIGl0IGhhcyB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kcy4gSWYgdGhpcyBpcyBub3QgdGhlCitjYXNlLCB0aGVuIDptZXRoOmBzZW5kYCB3aWxsIHJhaXNlIDpleGM6YEF0dHJpYnV0ZUVycm9yYCBvciA6ZXhjOmBUeXBlRXJyb3JgLAord2hpbGUgOm1ldGg6YHRocm93YCB3aWxsIGp1c3QgcmFpc2UgdGhlIHBhc3NlZCBpbiBleGNlcHRpb24gaW1tZWRpYXRlbHkuCisKK1doZW4gdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgaXMgY29tcGxldGUsIHRoZSA6YXR0cjpgflN0b3BJdGVyYXRpb24udmFsdWVgCithdHRyaWJ1dGUgb2YgdGhlIHJhaXNlZCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBpbnN0YW5jZSBiZWNvbWVzIHRoZSB2YWx1ZSBvZgordGhlIHlpZWxkIGV4cHJlc3Npb24uIEl0IGNhbiBiZSBlaXRoZXIgc2V0IGV4cGxpY2l0bHkgd2hlbiByYWlzaW5nCis6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgb3IgYXV0b21hdGljYWxseSB3aGVuIHRoZSBzdWItaXRlcmF0b3IgaXMgYSBnZW5lcmF0b3IKKyhieSByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSBzdWItZ2VuZXJhdG9yKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZSBjb250cm9sIGZsb3cgdG8gYSBzdWJpdGVyYXRvcgorCitUaGUgcGFyZW50aGVzZXMgY2FuIGJlIG9taXR0ZWQgd2hlbiB0aGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIGlzIHRoZQorc29sZSBleHByZXNzaW9uIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQuCisKIC4uIGluZGV4Ojogb2JqZWN0OiBnZW5lcmF0b3IKIAogCkBAIC00NTIsNiArNDc1LDEwIEBACiAgICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nIHRoZW0KICAgICAgIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy4KIAorICAgOnBlcDpgMDM4MGAgLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKyAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIDp0b2tlbjpgeWllbGRfZnJvbWAgc3ludGF4LCBtYWtpbmcgZGVsZWdhdGlvbgorICAgICAgdG8gc3ViLWdlbmVyYXRvcnMgZWFzeS4KKwogCiAuLiBfcHJpbWFyaWVzOgogCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY4OGU3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApAQCAtMCwwICsxLDY5NyBAQAorCisuLiBfaW1wb3J0c3lzdGVtOgorCisqKioqKioqKioqKioqKioqKgorVGhlIGltcG9ydCBzeXN0ZW0KKyoqKioqKioqKioqKioqKioqCisKKy4uIGluZGV4Ojogc2luZ2xlOiBpbXBvcnQgbWFjaGluZXJ5CisKK1B5dGhvbiBjb2RlIGluIG9uZSA6dGVybTpgbW9kdWxlYCBnYWlucyBhY2Nlc3MgdG8gdGhlIGNvZGUgaW4gYW5vdGhlciBtb2R1bGUKK2J5IHRoZSBwcm9jZXNzIG9mIDp0ZXJtOmBpbXBvcnRpbmdgIGl0LiAgVGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBpcwordGhlIG1vc3QgY29tbW9uIHdheSBvZiBpbnZva2luZyB0aGUgaW1wb3J0IG1hY2hpbmVyeSwgYnV0IGl0IGlzIG5vdCB0aGUgb25seQord2F5LiAgRnVuY3Rpb25zIHN1Y2ggYXMgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBhbmQgYnVpbHQtaW4KKzpmdW5jOmBfX2ltcG9ydF9fYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGludm9rZSB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KKworVGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBjb21iaW5lcyB0d28gb3BlcmF0aW9uczsgaXQgc2VhcmNoZXMgZm9yIHRoZQorbmFtZWQgbW9kdWxlLCB0aGVuIGl0IGJpbmRzIHRoZSByZXN1bHRzIG9mIHRoYXQgc2VhcmNoIHRvIGEgbmFtZSBpbiB0aGUgbG9jYWwKK3Njb3BlLiAgVGhlIHNlYXJjaCBvcGVyYXRpb24gb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBpcyBkZWZpbmVkIGFzCithIGNhbGwgdG8gdGhlIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiwgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYXJndW1lbnRzLgorVGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgdXNlZCB0byBwZXJmb3JtIHRoZSBuYW1lCitiaW5kaW5nIG9wZXJhdGlvbiBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LiAgU2VlIHRoZQorOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZvciB0aGUgZXhhY3QgZGV0YWlscyBvZiB0aGF0IG5hbWUgYmluZGluZworb3BlcmF0aW9uLgorCitBIGRpcmVjdCBjYWxsIHRvIDpmdW5jOmBfX2ltcG9ydF9fYCBwZXJmb3JtcyBvbmx5IHRoZSBtb2R1bGUgc2VhcmNoIGFuZCwgaWYKK2ZvdW5kLCB0aGUgbW9kdWxlIGNyZWF0aW9uIG9wZXJhdGlvbi4gIFdoaWxlIGNlcnRhaW4gc2lkZS1lZmZlY3RzIG1heSBvY2N1ciwKK3N1Y2ggYXMgdGhlIGltcG9ydGluZyBvZiBwYXJlbnQgcGFja2FnZXMsIGFuZCB0aGUgdXBkYXRpbmcgb2YgdmFyaW91cyBjYWNoZXMKKyhpbmNsdWRpbmcgOmRhdGE6YHN5cy5tb2R1bGVzYCksIG9ubHkgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBwZXJmb3JtcworYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uLgorCitXaGVuIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gIGFzIHBhcnQgb2YgYW4gaW1wb3J0IHN0YXRlbWVudCwgdGhlCitpbXBvcnQgc3lzdGVtIGZpcnN0IGNoZWNrcyB0aGUgbW9kdWxlIGdsb2JhbCBuYW1lc3BhY2UgZm9yIGEgZnVuY3Rpb24gYnkKK3RoYXQgbmFtZS4gSWYgaXQgaXMgbm90IGZvdW5kLCB0aGVuIHRoZSBzdGFuZGFyZCBidWlsdGluIDpmdW5jOmBfX2ltcG9ydF9fYAoraXMgY2FsbGVkLiBPdGhlciBtZWNoYW5pc21zIGZvciBpbnZva2luZyB0aGUgaW1wb3J0IHN5c3RlbSAoc3VjaCBhcworOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCkgZG8gbm90IHBlcmZvcm0gdGhpcyBjaGVjayBhbmQgd2lsbCBhbHdheXMKK3VzZSB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbS4KKworV2hlbiBhIG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgUHl0aG9uIHNlYXJjaGVzIGZvciB0aGUgbW9kdWxlIGFuZCBpZiBmb3VuZCwKK2l0IGNyZWF0ZXMgYSBtb2R1bGUgb2JqZWN0IFsjZm5tb11fLCBpbml0aWFsaXppbmcgaXQuICBJZiB0aGUgbmFtZWQgbW9kdWxlCitjYW5ub3QgYmUgZm91bmQsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCitzdHJhdGVnaWVzIHRvIHNlYXJjaCBmb3IgdGhlIG5hbWVkIG1vZHVsZSB3aGVuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzCitpbnZva2VkLiAgVGhlc2Ugc3RyYXRlZ2llcyBjYW4gYmUgbW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IHVzaW5nIHZhcmlvdXMgaG9va3MKK2Rlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbnMgYmVsb3cuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgaW1wb3J0IHN5c3RlbSBoYXMgYmVlbiB1cGRhdGVkIHRvIGZ1bGx5IGltcGxlbWVudCB0aGUgc2Vjb25kIHBoYXNlCisgICBvZiBQRVAgMzAyLiBUaGVyZSBpcyBubyBsb25nZXIgYW55IGltcGxpY2l0IGltcG9ydCBtYWNoaW5lcnkgLSB0aGUgZnVsbAorICAgaW1wb3J0IHN5c3RlbSBpcyBleHBvc2VkIHRocm91Z2ggOmRhdGE6YHN5cy5tZXRhX3BhdGhgLiBJbiBhZGRpdGlvbiwKKyAgIG5hdGl2ZSBuYW1lc3BhY2UgcGFja2FnZSBzdXBwb3J0IGhhcyBiZWVuIGltcGxlbWVudGVkIChzZWUgUEVQIDQyMCkuCisKKworOm1vZDpgaW1wb3J0bGliYAorPT09PT09PT09PT09PT09PQorCitUaGUgOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUgcHJvdmlkZXMgYSByaWNoIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKK2ltcG9ydCBzeXN0ZW0uICBGb3IgZXhhbXBsZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIHByb3ZpZGVzIGEKK3JlY29tbWVuZGVkLCBzaW1wbGVyIEFQSSB0aGFuIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmb3IgaW52b2tpbmcgdGhlCitpbXBvcnQgbWFjaGluZXJ5LiAgUmVmZXIgdG8gdGhlIDptb2Q6YGltcG9ydGxpYmAgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvcgorYWRkaXRpb25hbCBkZXRhaWwuCisKKworCitQYWNrYWdlcworPT09PT09PT0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogcGFja2FnZQorCitQeXRob24gaGFzIG9ubHkgb25lIHR5cGUgb2YgbW9kdWxlIG9iamVjdCwgYW5kIGFsbCBtb2R1bGVzIGFyZSBvZiB0aGlzIHR5cGUsCityZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIEMsIG9yIHNvbWV0aGluZworZWxzZS4gIFRvIGhlbHAgb3JnYW5pemUgbW9kdWxlcyBhbmQgcHJvdmlkZSBhIG5hbWluZyBoaWVyYXJjaHksIFB5dGhvbiBoYXMgYQorY29uY2VwdCBvZiA6dGVybTpgcGFja2FnZXMgPHBhY2thZ2U+YC4KKworWW91IGNhbiB0aGluayBvZiBwYWNrYWdlcyBhcyB0aGUgZGlyZWN0b3JpZXMgb24gYSBmaWxlIHN5c3RlbSBhbmQgbW9kdWxlcyBhcworZmlsZXMgd2l0aGluIGRpcmVjdG9yaWVzLCBidXQgZG9uJ3QgdGFrZSB0aGlzIGFuYWxvZ3kgdG9vIGxpdGVyYWxseSBzaW5jZQorcGFja2FnZXMgYW5kIG1vZHVsZXMgbmVlZCBub3Qgb3JpZ2luYXRlIGZyb20gdGhlIGZpbGUgc3lzdGVtLiAgRm9yIHRoZQorcHVycG9zZXMgb2YgdGhpcyBkb2N1bWVudGF0aW9uLCB3ZSdsbCB1c2UgdGhpcyBjb252ZW5pZW50IGFuYWxvZ3kgb2YKK2RpcmVjdG9yaWVzIGFuZCBmaWxlcy4gIExpa2UgZmlsZSBzeXN0ZW0gZGlyZWN0b3JpZXMsIHBhY2thZ2VzIGFyZSBvcmdhbml6ZWQKK2hpZXJhcmNoaWNhbGx5LCBhbmQgcGFja2FnZXMgbWF5IHRoZW1zZWx2ZXMgY29udGFpbiBzdWJwYWNrYWdlcywgYXMgd2VsbCBhcworcmVndWxhciBtb2R1bGVzLgorCitJdCdzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgdGhhdCBhbGwgcGFja2FnZXMgYXJlIG1vZHVsZXMsIGJ1dCBub3QgYWxsCittb2R1bGVzIGFyZSBwYWNrYWdlcy4gIE9yIHB1dCBhbm90aGVyIHdheSwgcGFja2FnZXMgYXJlIGp1c3QgYSBzcGVjaWFsIGtpbmQgb2YKK21vZHVsZS4gIFNwZWNpZmljYWxseSwgYW55IG1vZHVsZSB0aGF0IGNvbnRhaW5zIGEgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBpcworY29uc2lkZXJlZCBhIHBhY2thZ2UuCisKK0FsbCBtb2R1bGVzIGhhdmUgYSBuYW1lLiAgU3VicGFja2FnZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGZyb20gdGhlaXIgcGFyZW50CitwYWNrYWdlIG5hbWUgYnkgZG90cywgYWtpbiB0byBQeXRob24ncyBzdGFuZGFyZCBhdHRyaWJ1dGUgYWNjZXNzIHN5bnRheC4gIFRodXMKK3lvdSBtaWdodCBoYXZlIGEgbW9kdWxlIGNhbGxlZCA6bW9kOmBzeXNgIGFuZCBhIHBhY2thZ2UgY2FsbGVkIDptb2Q6YGVtYWlsYCwKK3doaWNoIGluIHR1cm4gaGFzIGEgc3VicGFja2FnZSBjYWxsZWQgOm1vZDpgZW1haWwubWltZWAgYW5kIGEgbW9kdWxlIHdpdGhpbgordGhhdCBzdWJwYWNrYWdlIGNhbGxlZCA6bW9kOmBlbWFpbC5taW1lLnRleHRgLgorCisKK1JlZ3VsYXIgcGFja2FnZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHBhaXI6IHBhY2thZ2U7IHJlZ3VsYXIKKworUHl0aG9uIGRlZmluZXMgdHdvIHR5cGVzIG9mIHBhY2thZ2VzLCA6dGVybTpgcmVndWxhciBwYWNrYWdlcyA8cmVndWxhcgorcGFja2FnZT5gIGFuZCA6dGVybTpgbmFtZXNwYWNlIHBhY2thZ2VzIDxuYW1lc3BhY2UgcGFja2FnZT5gLiAgUmVndWxhcgorcGFja2FnZXMgYXJlIHRyYWRpdGlvbmFsIHBhY2thZ2VzIGFzIHRoZXkgZXhpc3RlZCBpbiBQeXRob24gMy4yIGFuZCBlYXJsaWVyLgorQSByZWd1bGFyIHBhY2thZ2UgaXMgdHlwaWNhbGx5IGltcGxlbWVudGVkIGFzIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW4KK2BgX19pbml0X18ucHlgYCBmaWxlLiAgV2hlbiBhIHJlZ3VsYXIgcGFja2FnZSBpcyBpbXBvcnRlZCwgdGhpcworYGBfX2luaXRfXy5weWBgIGZpbGUgaXMgaW1wbGljaXRseSBleGVjdXRlZCwgYW5kIHRoZSBvYmplY3RzIGl0IGRlZmluZXMgYXJlCitib3VuZCB0byBuYW1lcyBpbiB0aGUgcGFja2FnZSdzIG5hbWVzcGFjZS4gIFRoZSBgYF9faW5pdF9fLnB5YGAgZmlsZSBjYW4KK2NvbnRhaW4gdGhlIHNhbWUgUHl0aG9uIGNvZGUgdGhhdCBhbnkgb3RoZXIgbW9kdWxlIGNhbiBjb250YWluLCBhbmQgUHl0aG9uCit3aWxsIGFkZCBzb21lIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0byB0aGUgbW9kdWxlIHdoZW4gaXQgaXMgaW1wb3J0ZWQuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGZpbGUgc3lzdGVtIGxheW91dCBkZWZpbmVzIGEgdG9wIGxldmVsIGBgcGFyZW50YGAKK3BhY2thZ2Ugd2l0aCB0aHJlZSBzdWJwYWNrYWdlczo6CisKKyAgICBwYXJlbnQvCisgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIG9uZS8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIHR3by8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIHRocmVlLworICAgICAgICAgICAgX19pbml0X18ucHkKKworSW1wb3J0aW5nIGBgcGFyZW50Lm9uZWBgIHdpbGwgaW1wbGljaXRseSBleGVjdXRlIGBgcGFyZW50L19faW5pdF9fLnB5YGAgYW5kCitgYHBhcmVudC9vbmUvX19pbml0X18ucHlgYC4gIFN1YnNlcXVlbnQgaW1wb3J0cyBvZiBgYHBhcmVudC50d29gYCBvcgorYGBwYXJlbnQudGhyZWVgYCB3aWxsIGV4ZWN1dGUgYGBwYXJlbnQvdHdvL19faW5pdF9fLnB5YGAgYW5kCitgYHBhcmVudC90aHJlZS9fX2luaXRfXy5weWBgIHJlc3BlY3RpdmVseS4KKworCitOYW1lc3BhY2UgcGFja2FnZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgcGFpcjo6IHBhY2thZ2U7IG5hbWVzcGFjZQorICAgIHBhaXI6OiBwYWNrYWdlOyBwb3J0aW9uCisKK0EgbmFtZXNwYWNlIHBhY2thZ2UgaXMgYSBjb21wb3NpdGUgb2YgdmFyaW91cyA6dGVybTpgcG9ydGlvbnMgPHBvcnRpb24+YCwKK3doZXJlIGVhY2ggcG9ydGlvbiBjb250cmlidXRlcyBhIHN1YnBhY2thZ2UgdG8gdGhlIHBhcmVudCBwYWNrYWdlLiAgUG9ydGlvbnMKK21heSByZXNpZGUgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyBvbiB0aGUgZmlsZSBzeXN0ZW0uICBQb3J0aW9ucyBtYXkgYWxzbyBiZQorZm91bmQgaW4gemlwIGZpbGVzLCBvbiB0aGUgbmV0d29yaywgb3IgYW55d2hlcmUgZWxzZSB0aGF0IFB5dGhvbiBzZWFyY2hlcworZHVyaW5nIGltcG9ydC4gIE5hbWVzcGFjZSBwYWNrYWdlcyBtYXkgb3IgbWF5IG5vdCBjb3JyZXNwb25kIGRpcmVjdGx5IHRvCitvYmplY3RzIG9uIHRoZSBmaWxlIHN5c3RlbTsgdGhleSBtYXkgYmUgdmlydHVhbCBtb2R1bGVzIHRoYXQgaGF2ZSBubyBjb25jcmV0ZQorcmVwcmVzZW50YXRpb24uCisKK05hbWVzcGFjZSBwYWNrYWdlcyBkbyBub3QgdXNlIGFuIG9yZGluYXJ5IGxpc3QgZm9yIHRoZWlyIGBgX19wYXRoX19gYAorYXR0cmlidXRlLiBUaGV5IGluc3RlYWQgdXNlIGEgY3VzdG9tIGl0ZXJhYmxlIHR5cGUgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5CitwZXJmb3JtIGEgbmV3IHNlYXJjaCBmb3IgcGFja2FnZSBwb3J0aW9ucyBvbiB0aGUgbmV4dCBpbXBvcnQgYXR0ZW1wdCB3aXRoaW4KK3RoYXQgcGFja2FnZSBpZiB0aGUgcGF0aCBvZiB0aGVpciBwYXJlbnQgcGFja2FnZSAob3IgOmRhdGE6YHN5cy5wYXRoYCBmb3IgYQordG9wIGxldmVsIHBhY2thZ2UpIGNoYW5nZXMuCisKK1dpdGggbmFtZXNwYWNlIHBhY2thZ2VzLCB0aGVyZSBpcyBubyBgYHBhcmVudC9fX2luaXRfXy5weWBgIGZpbGUuICBJbiBmYWN0LAordGhlcmUgbWF5IGJlIG11bHRpcGxlIGBgcGFyZW50YGAgZGlyZWN0b3JpZXMgZm91bmQgZHVyaW5nIGltcG9ydCBzZWFyY2gsIHdoZXJlCitlYWNoIG9uZSBpcyBwcm92aWRlZCBieSBhIGRpZmZlcmVudCBwb3J0aW9uLiAgVGh1cyBgYHBhcmVudC9vbmVgYCBtYXkgbm90IGJlCitwaHlzaWNhbGx5IGxvY2F0ZWQgbmV4dCB0byBgYHBhcmVudC90d29gYC4gIEluIHRoaXMgY2FzZSwgUHl0aG9uIHdpbGwgY3JlYXRlIGEKK25hbWVzcGFjZSBwYWNrYWdlIGZvciB0aGUgdG9wLWxldmVsIGBgcGFyZW50YGAgcGFja2FnZSB3aGVuZXZlciBpdCBvciBvbmUgb2YKK2l0cyBzdWJwYWNrYWdlcyBpcyBpbXBvcnRlZC4KKworU2VlIGFsc28gOnBlcDpgNDIwYCBmb3IgdGhlIG5hbWVzcGFjZSBwYWNrYWdlIHNwZWNpZmljYXRpb24uCisKKworU2VhcmNoaW5nCis9PT09PT09PT0KKworVG8gYmVnaW4gdGhlIHNlYXJjaCwgUHl0aG9uIG5lZWRzIHRoZSA6dGVybTpgZnVsbHkgcXVhbGlmaWVkIDxxdWFsaWZpZWQgbmFtZT5gCituYW1lIG9mIHRoZSBtb2R1bGUgKG9yIHBhY2thZ2UsIGJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGlzY3Vzc2lvbiwgdGhlCitkaWZmZXJlbmNlIGlzIGltbWF0ZXJpYWwpIGJlaW5nIGltcG9ydGVkLiAgVGhpcyBuYW1lIG1heSBjb21lIGZyb20gdmFyaW91cworYXJndW1lbnRzIHRvIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIG9yIGZyb20gdGhlIHBhcmFtZXRlcnMgdG8gdGhlCis6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIG9yIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbnMuCisKK1RoaXMgbmFtZSB3aWxsIGJlIHVzZWQgaW4gdmFyaW91cyBwaGFzZXMgb2YgdGhlIGltcG9ydCBzZWFyY2gsIGFuZCBpdCBtYXkgYmUKK3RoZSBkb3R0ZWQgcGF0aCB0byBhIHN1Ym1vZHVsZSwgZS5nLiBgYGZvby5iYXIuYmF6YGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbgorZmlyc3QgdHJpZXMgdG8gaW1wb3J0IGBgZm9vYGAsIHRoZW4gYGBmb28uYmFyYGAsIGFuZCBmaW5hbGx5IGBgZm9vLmJhci5iYXpgYC4KK0lmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworCitUaGUgbW9kdWxlIGNhY2hlCistLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHN5cy5tb2R1bGVzCisKK1RoZSBmaXJzdCBwbGFjZSBjaGVja2VkIGR1cmluZyBpbXBvcnQgc2VhcmNoIGlzIDpkYXRhOmBzeXMubW9kdWxlc2AuICBUaGlzCittYXBwaW5nIHNlcnZlcyBhcyBhIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgaW1wb3J0ZWQsCitpbmNsdWRpbmcgdGhlIGludGVybWVkaWF0ZSBwYXRocy4gIFNvIGlmIGBgZm9vLmJhci5iYXpgYCB3YXMgcHJldmlvdXNseQoraW1wb3J0ZWQsIDpkYXRhOmBzeXMubW9kdWxlc2Agd2lsbCBjb250YWluIGVudHJpZXMgZm9yIGBgZm9vYGAsIGBgZm9vLmJhcmBgLAorYW5kIGBgZm9vLmJhci5iYXpgYC4gIEVhY2gga2V5IHdpbGwgaGF2ZSBhcyBpdHMgdmFsdWUgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlCitvYmplY3QuCisKK0R1cmluZyBpbXBvcnQsIHRoZSBtb2R1bGUgbmFtZSBpcyBsb29rZWQgdXAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBhbmQgaWYKK3ByZXNlbnQsIHRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIHRoZSBtb2R1bGUgc2F0aXNmeWluZyB0aGUgaW1wb3J0LCBhbmQgdGhlCitwcm9jZXNzIGNvbXBsZXRlcy4gIEhvd2V2ZXIsIGlmIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgdGhlbiBhbgorOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBtaXNzaW5nLCBQeXRob24gd2lsbAorY29udGludWUgc2VhcmNoaW5nIGZvciB0aGUgbW9kdWxlLgorCis6ZGF0YTpgc3lzLm1vZHVsZXNgIGlzIHdyaXRhYmxlLiAgRGVsZXRpbmcgYSBrZXkgbWF5IG5vdCBkZXN0cm95IHRoZQorYXNzb2NpYXRlZCBtb2R1bGUgKGFzIG90aGVyIG1vZHVsZXMgbWF5IGhvbGQgcmVmZXJlbmNlcyB0byBpdCksCitidXQgaXQgd2lsbCBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIG5hbWVkIG1vZHVsZSwgY2F1c2luZworUHl0aG9uIHRvIHNlYXJjaCBhbmV3IGZvciB0aGUgbmFtZWQgbW9kdWxlIHVwb24gaXRzIG5leHQKK2ltcG9ydC4gVGhlIGtleSBjYW4gYWxzbyBiZSBhc3NpZ25lZCB0byBgYE5vbmVgYCwgZm9yY2luZyB0aGUgbmV4dCBpbXBvcnQKK29mIHRoZSBtb2R1bGUgdG8gcmVzdWx0IGluIGFuIDpleGM6YEltcG9ydEVycm9yYC4KKworQmV3YXJlIHRob3VnaCwgYXMgaWYgeW91IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsCitpbnZhbGlkYXRlIGl0cyBjYWNoZSBlbnRyeSBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBhbmQgdGhlbiByZS1pbXBvcnQgdGhlCituYW1lZCBtb2R1bGUsIHRoZSB0d28gbW9kdWxlIG9iamVjdHMgd2lsbCAqbm90KiBiZSB0aGUgc2FtZS4gQnkgY29udHJhc3QsCis6ZnVuYzpgaW1wLnJlbG9hZGAgd2lsbCByZXVzZSB0aGUgKnNhbWUqIG1vZHVsZSBvYmplY3QsIGFuZCBzaW1wbHkKK3JlaW5pdGlhbGlzZSB0aGUgbW9kdWxlIGNvbnRlbnRzIGJ5IHJlcnVubmluZyB0aGUgbW9kdWxlJ3MgY29kZS4KKworCitGaW5kZXJzIGFuZCBsb2FkZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IGZpbmRlcgorICAgIHNpbmdsZTogbG9hZGVyCisKK0lmIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZW4gUHl0aG9uJ3MgaW1wb3J0Citwcm90b2NvbCBpcyBpbnZva2VkIHRvIGZpbmQgYW5kIGxvYWQgdGhlIG1vZHVsZS4gIFRoaXMgcHJvdG9jb2wgY29uc2lzdHMgb2YKK3R3byBjb25jZXB0dWFsIG9iamVjdHMsIDp0ZXJtOmBmaW5kZXJzIDxmaW5kZXI+YCBhbmQgOnRlcm06YGxvYWRlcnMgPGxvYWRlcj5gLgorQSBmaW5kZXIncyBqb2IgaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgY2FuIGZpbmQgdGhlIG5hbWVkIG1vZHVsZSB1c2luZword2hhdGV2ZXIgc3RyYXRlZ3kgaXQga25vd3MgYWJvdXQuIE9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYm90aCBvZiB0aGVzZQoraW50ZXJmYWNlcyBhcmUgcmVmZXJyZWQgdG8gYXMgOnRlcm06YGltcG9ydGVycyA8aW1wb3J0ZXI+YCAtIHRoZXkgcmV0dXJuCit0aGVtc2VsdmVzIHdoZW4gdGhleSBmaW5kIHRoYXQgdGhleSBjYW4gbG9hZCB0aGUgcmVxdWVzdGVkIG1vZHVsZS4KKworUHl0aG9uIGluY2x1ZGVzIGEgbnVtYmVyIG9mIGRlZmF1bHQgZmluZGVycyBhbmQgaW1wb3J0ZXJzLiAgT25lCitrbm93cyBob3cgdG8gbG9jYXRlIGZyb3plbiBtb2R1bGVzLCBhbmQgYW5vdGhlciBrbm93cyBob3cgdG8gbG9jYXRlCitidWlsdC1pbiBtb2R1bGVzLiAgQSB0aGlyZCBkZWZhdWx0IGZpbmRlciBzZWFyY2hlcyBhbiA6dGVybTpgaW1wb3J0IHBhdGhgCitmb3IgbW9kdWxlcy4gIFRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIGlzIGEgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBtYXkKK25hbWUgZmlsZSBzeXN0ZW0gcGF0aHMgb3IgemlwIGZpbGVzLiAgSXQgY2FuIGFsc28gYmUgZXh0ZW5kZWQgdG8gc2VhcmNoCitmb3IgYW55IGxvY2F0YWJsZSByZXNvdXJjZSwgc3VjaCBhcyB0aG9zZSBpZGVudGlmaWVkIGJ5IFVSTHMuCisKK1RoZSBpbXBvcnQgbWFjaGluZXJ5IGlzIGV4dGVuc2libGUsIHNvIG5ldyBmaW5kZXJzIGNhbiBiZSBhZGRlZCB0byBleHRlbmQgdGhlCityYW5nZSBhbmQgc2NvcGUgb2YgbW9kdWxlIHNlYXJjaGluZy4KKworRmluZGVycyBkbyBub3QgYWN0dWFsbHkgbG9hZCBtb2R1bGVzLiAgSWYgdGhleSBjYW4gZmluZCB0aGUgbmFtZWQgbW9kdWxlLCB0aGV5CityZXR1cm4gYSA6dGVybTpgbG9hZGVyYCwgd2hpY2ggdGhlIGltcG9ydCBtYWNoaW5lcnkgdGhlbiBpbnZva2VzIHRvIGxvYWQgdGhlCittb2R1bGUgYW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUgb2JqZWN0LgorCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSBwcm90b2NvbCBmb3IgZmluZGVycyBhbmQgbG9hZGVycyBpbiBtb3JlCitkZXRhaWwsIGluY2x1ZGluZyBob3cgeW91IGNhbiBjcmVhdGUgYW5kIHJlZ2lzdGVyIG5ldyBvbmVzIHRvIGV4dGVuZCB0aGUKK2ltcG9ydCBtYWNoaW5lcnkuCisKKworSW1wb3J0IGhvb2tzCistLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBpbXBvcnQgaG9va3MKKyAgIHNpbmdsZTogbWV0YSBob29rcworICAgc2luZ2xlOiBwYXRoIGhvb2tzCisgICBwYWlyOiBob29rczsgaW1wb3J0CisgICBwYWlyOiBob29rczsgbWV0YQorICAgcGFpcjogaG9va3M7IHBhdGgKKworVGhlIGltcG9ydCBtYWNoaW5lcnkgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZTsgdGhlIHByaW1hcnkgbWVjaGFuaXNtIGZvcgordGhpcyBhcmUgdGhlICppbXBvcnQgaG9va3MqLiAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbXBvcnQgaG9va3M6ICptZXRhCitob29rcyogYW5kICppbXBvcnQgcGF0aCBob29rcyouCisKK01ldGEgaG9va3MgYXJlIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgaW1wb3J0IHByb2Nlc3NpbmcsIGJlZm9yZSBhbnkgb3RoZXIKK2ltcG9ydCBwcm9jZXNzaW5nIGhhcyBvY2N1cnJlZCwgb3RoZXIgdGhhbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGNhY2hlIGxvb2sgdXAuCitUaGlzIGFsbG93cyBtZXRhIGhvb2tzIHRvIG92ZXJyaWRlIDpkYXRhOmBzeXMucGF0aGAgcHJvY2Vzc2luZywgZnJvemVuCittb2R1bGVzLCBvciBldmVuIGJ1aWx0LWluIG1vZHVsZXMuICBNZXRhIGhvb2tzIGFyZSByZWdpc3RlcmVkIGJ5IGFkZGluZyBuZXcKK2ZpbmRlciBvYmplY3RzIHRvIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgYXMgZGVzY3JpYmVkIGJlbG93LgorCitJbXBvcnQgcGF0aCBob29rcyBhcmUgY2FsbGVkIGFzIHBhcnQgb2YgOmRhdGE6YHN5cy5wYXRoYCAob3IKK2BgcGFja2FnZS5fX3BhdGhfX2BgKSBwcm9jZXNzaW5nLCBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlaXIgYXNzb2NpYXRlZCBwYXRoCitpdGVtIGlzIGVuY291bnRlcmVkLiAgSW1wb3J0IHBhdGggaG9va3MgYXJlIHJlZ2lzdGVyZWQgYnkgYWRkaW5nIG5ldyBjYWxsYWJsZXMKK3RvIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgYXMgZGVzY3JpYmVkIGJlbG93LgorCisKK1RoZSBtZXRhIHBhdGgKKy0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogc3lzLm1ldGFfcGF0aAorICAgIHBhaXI6IGZpbmRlcjsgZmluZF9tb2R1bGUKKyAgICBwYWlyOiBmaW5kZXI7IGZpbmRfbG9hZGVyCisKK1doZW4gdGhlIG5hbWVkIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgUHl0aG9uIG5leHQKK3NlYXJjaGVzIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgd2hpY2ggY29udGFpbnMgYSBsaXN0IG9mIG1ldGEgcGF0aCBmaW5kZXIKK29iamVjdHMuICBUaGVzZSBmaW5kZXJzIGFyZSBxdWVyaWVkIGluIG9yZGVyIHRvIHNlZSBpZiB0aGV5IGtub3cgaG93IHRvIGhhbmRsZQordGhlIG5hbWVkIG1vZHVsZS4gIE1ldGEgcGF0aCBmaW5kZXJzIG11c3QgaW1wbGVtZW50IGEgbWV0aG9kIGNhbGxlZAorOm1ldGg6YGZpbmRfbW9kdWxlKClgIHdoaWNoIHRha2VzIHR3byBhcmd1bWVudHMsIGEgbmFtZSBhbmQgYW4gaW1wb3J0IHBhdGguCitUaGUgbWV0YSBwYXRoIGZpbmRlciBjYW4gdXNlIGFueSBzdHJhdGVneSBpdCB3YW50cyB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBjYW4KK2hhbmRsZSB0aGUgbmFtZWQgbW9kdWxlIG9yIG5vdC4KKworSWYgdGhlIG1ldGEgcGF0aCBmaW5kZXIga25vd3MgaG93IHRvIGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGEKK2xvYWRlciBvYmplY3QuICBJZiBpdCBjYW5ub3QgaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYGBOb25lYGAuICBJZgorOmRhdGE6YHN5cy5tZXRhX3BhdGhgIHByb2Nlc3NpbmcgcmVhY2hlcyB0aGUgZW5kIG9mIGl0cyBsaXN0IHdpdGhvdXQgcmV0dXJuaW5nCithIGxvYWRlciwgdGhlbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMgcmFpc2VkCithcmUgc2ltcGx5IHByb3BhZ2F0ZWQgdXAsIGFib3J0aW5nIHRoZSBpbXBvcnQgcHJvY2Vzcy4KKworVGhlIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2Qgb2YgbWV0YSBwYXRoIGZpbmRlcnMgaXMgY2FsbGVkIHdpdGggdHdvCithcmd1bWVudHMuICBUaGUgZmlyc3QgaXMgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcKK2ltcG9ydGVkLCBmb3IgZXhhbXBsZSBgYGZvby5iYXIuYmF6YGAuICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBwYXRoCitlbnRyaWVzIHRvIHVzZSBmb3IgdGhlIG1vZHVsZSBzZWFyY2guICBGb3IgdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBzZWNvbmQKK2FyZ3VtZW50IGlzIGBgTm9uZWBgLCBidXQgZm9yIHN1Ym1vZHVsZXMgb3Igc3VicGFja2FnZXMsIHRoZSBzZWNvbmQKK2FyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyZW50IHBhY2thZ2UncyBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLiBJZgordGhlIGFwcHJvcHJpYXRlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgY2Fubm90IGJlIGFjY2Vzc2VkLCBhbgorOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworVGhlIG1ldGEgcGF0aCBtYXkgYmUgdHJhdmVyc2VkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBpbXBvcnQgcmVxdWVzdC4KK0ZvciBleGFtcGxlLCBhc3N1bWluZyBub25lIG9mIHRoZSBtb2R1bGVzIGludm9sdmVkIGhhcyBhbHJlYWR5IGJlZW4gY2FjaGVkLAoraW1wb3J0aW5nIGBgZm9vLmJhci5iYXpgYCB3aWxsIGZpcnN0IHBlcmZvcm0gYSB0b3AgbGV2ZWwgaW1wb3J0LCBjYWxsaW5nCitgYG1wZi5maW5kX21vZHVsZSgiZm9vIiwgTm9uZSlgYCBvbiBlYWNoIG1ldGEgcGF0aCBmaW5kZXIgKGBgbXBmYGApLiBBZnRlcgorYGBmb29gYCBoYXMgYmVlbiBpbXBvcnRlZCwgYGBmb28uYmFyYGAgd2lsbCBiZSBpbXBvcnRlZCBieSB0cmF2ZXJzaW5nIHRoZQorbWV0YSBwYXRoIGEgc2Vjb25kIHRpbWUsIGNhbGxpbmcKK2BgbXBmLmZpbmRfbW9kdWxlKCJmb28uYmFyIiwgZm9vLl9fcGF0aF9fKWBgLiBPbmNlIGBgZm9vLmJhcmBgIGhhcyBiZWVuCitpbXBvcnRlZCwgdGhlIGZpbmFsIHRyYXZlcnNhbCB3aWxsIGNhbGwKK2BgbXBmLmZpbmRfbW9kdWxlKCJmb28uYmFyLmJheiIsIGZvby5iYXIuX19wYXRoX18pYGAuCisKK1NvbWUgbWV0YSBwYXRoIGZpbmRlcnMgb25seSBzdXBwb3J0IHRvcCBsZXZlbCBpbXBvcnRzLiBUaGVzZSBpbXBvcnRlcnMgd2lsbAorYWx3YXlzIHJldHVybiBgYE5vbmVgYCB3aGVuIGFueXRoaW5nIG90aGVyIHRoYW4gYGBOb25lYGAgaXMgcGFzc2VkIGFzIHRoZQorc2Vjb25kIGFyZ3VtZW50LgorCitQeXRob24ncyBkZWZhdWx0IDpkYXRhOmBzeXMubWV0YV9wYXRoYCBoYXMgdGhyZWUgbWV0YSBwYXRoIGZpbmRlcnMsIG9uZSB0aGF0Citrbm93cyBob3cgdG8gaW1wb3J0IGJ1aWx0LWluIG1vZHVsZXMsIG9uZSB0aGF0IGtub3dzIGhvdyB0byBpbXBvcnQgZnJvemVuCittb2R1bGVzLCBhbmQgb25lIHRoYXQga25vd3MgaG93IHRvIGltcG9ydCBtb2R1bGVzIGZyb20gYW4gOnRlcm06YGltcG9ydCBwYXRoYAorKGkuZS4gdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmApLgorCisKK0xvYWRlcnMKKz09PT09PT0KKworSWYgYW5kIHdoZW4gYSBtb2R1bGUgbG9hZGVyIGlzIGZvdW5kIGl0cworOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgbWV0aG9kIGlzIGNhbGxlZCwgd2l0aCBhIHNpbmdsZQorYXJndW1lbnQsIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkLiAgVGhpcyBtZXRob2QKK2hhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXMsIGFuZCBzaG91bGQgcmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0IGl0IGhhcworbG9hZGVkIFsjZm5sb11fLiAgSWYgaXQgY2Fubm90IGxvYWQgdGhlIG1vZHVsZSwgaXQgc2hvdWxkIHJhaXNlIGFuCis6ZXhjOmBJbXBvcnRFcnJvcmAsIGFsdGhvdWdoIGFueSBvdGhlciBleGNlcHRpb24gcmFpc2VkIGR1cmluZworOm1ldGg6YGxvYWRfbW9kdWxlKClgIHdpbGwgYmUgcHJvcGFnYXRlZC4KKworSW4gbWFueSBjYXNlcywgdGhlIGZpbmRlciBhbmQgbG9hZGVyIGNhbiBiZSB0aGUgc2FtZSBvYmplY3Q7IGluIHN1Y2ggY2FzZXMgdGhlCis6bWV0aDpgZmluZGVyLmZpbmRfbW9kdWxlKClgIHdvdWxkIGp1c3QgcmV0dXJuIGBgc2VsZmBgLgorCitMb2FkZXJzIG11c3Qgc2F0aXNmeSB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czoKKworICogSWYgdGhlcmUgaXMgYW4gZXhpc3RpbmcgbW9kdWxlIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBuYW1lIGluCisgICA6ZGF0YTpgc3lzLm1vZHVsZXNgLCB0aGUgbG9hZGVyIG11c3QgdXNlIHRoYXQgZXhpc3RpbmcgbW9kdWxlLiAgKE90aGVyd2lzZSwKKyAgIDpmdW5jOmBpbXAucmVsb2FkYCB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4pICBJZiB0aGUgbmFtZWQgbW9kdWxlIGRvZXMKKyAgIG5vdCBleGlzdCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCB0aGUgbG9hZGVyIG11c3QgY3JlYXRlIGEgbmV3IG1vZHVsZQorICAgb2JqZWN0IGFuZCBhZGQgaXQgdG8gOmRhdGE6YHN5cy5tb2R1bGVzYC4KKworICAgTm90ZSB0aGF0IHRoZSBtb2R1bGUgKm11c3QqIGV4aXN0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AgYmVmb3JlIHRoZSBsb2FkZXIKKyAgIGV4ZWN1dGVzIHRoZSBtb2R1bGUgY29kZS4gIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIHRoZSBtb2R1bGUgY29kZSBtYXkKKyAgIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBpbXBvcnQgaXRzZWxmOyBhZGRpbmcgaXQgdG8gOmRhdGE6YHN5cy5tb2R1bGVzYAorICAgYmVmb3JlaGFuZCBwcmV2ZW50cyB1bmJvdW5kZWQgcmVjdXJzaW9uIGluIHRoZSB3b3JzdCBjYXNlIGFuZCBtdWx0aXBsZQorICAgbG9hZGluZyBpbiB0aGUgYmVzdC4KKworICAgSWYgbG9hZGluZyBmYWlscywgdGhlIGxvYWRlciBtdXN0IHJlbW92ZSBhbnkgbW9kdWxlcyBpdCBoYXMgaW5zZXJ0ZWQgaW50bworICAgOmRhdGE6YHN5cy5tb2R1bGVzYCwgYnV0IGl0IG11c3QgcmVtb3ZlICoqb25seSoqIHRoZSBmYWlsaW5nIG1vZHVsZSwgYW5kCisgICBvbmx5IGlmIHRoZSBsb2FkZXIgaXRzZWxmIGhhcyBsb2FkZWQgaXQgZXhwbGljaXRseS4gIEFueSBtb2R1bGUgYWxyZWFkeSBpbgorICAgdGhlIDpkYXRhOmBzeXMubW9kdWxlc2AgY2FjaGUsIGFuZCBhbnkgbW9kdWxlIHRoYXQgd2FzIHN1Y2Nlc3NmdWxseSBsb2FkZWQKKyAgIGFzIGEgc2lkZS1lZmZlY3QsIG11c3QgcmVtYWluIGluIHRoZSBjYWNoZS4KKworICogVGhlIGxvYWRlciBtYXkgc2V0IHRoZSBgYF9fZmlsZV9fYGAgYXR0cmlidXRlIG9mIHRoZSBtb2R1bGUuICBJZiBzZXQsIHRoaXMKKyAgIGF0dHJpYnV0ZSdzIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcuICBUaGUgbG9hZGVyIG1heSBvcHQgdG8gbGVhdmUKKyAgIGBgX19maWxlX19gYCB1bnNldCBpZiBpdCBoYXMgbm8gc2VtYW50aWMgbWVhbmluZyAoZS5nLiBhIG1vZHVsZSBsb2FkZWQgZnJvbQorICAgYSBkYXRhYmFzZSkuCisKKyAqIFRoZSBsb2FkZXIgbWF5IHNldCB0aGUgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlLiAgV2hpbGUgbm90CisgICByZXF1aXJlZCwgc2V0dGluZyB0aGlzIGF0dHJpYnV0ZSBpcyBoaWdobHkgcmVjb21tZW5kZWQgc28gdGhhdCB0aGUKKyAgIDptZXRoOmByZXByKClgIG9mIHRoZSBtb2R1bGUgaXMgbW9yZSBpbmZvcm1hdGl2ZS4KKworICogSWYgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UgKGVpdGhlciByZWd1bGFyIG9yIG5hbWVzcGFjZSksIHRoZSBsb2FkZXIgbXVzdAorICAgc2V0IHRoZSBtb2R1bGUgb2JqZWN0J3MgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZS4gIFRoZSB2YWx1ZSBtdXN0IGJlCisgICBpdGVyYWJsZSwgYnV0IG1heSBiZSBlbXB0eSBpZiBgYF9fcGF0aF9fYGAgaGFzIG5vIGZ1cnRoZXIgc2lnbmlmaWNhbmNlCisgICB0byB0aGUgbG9hZGVyLiBJZiBgYF9fcGF0aF9fYGAgaXMgbm90IGVtcHR5LCBpdCBtdXN0IHByb2R1Y2Ugc3RyaW5ncworICAgd2hlbiBpdGVyYXRlZCBvdmVyLiBNb3JlIGRldGFpbHMgb24gdGhlIHNlbWFudGljcyBvZiBgYF9fcGF0aF9fYGAgYXJlCisgICBnaXZlbiA6cmVmOmBiZWxvdyA8cGFja2FnZS1wYXRoLXJ1bGVzPmAuCisKKyAqIFRoZSBgYF9fbG9hZGVyX19gYCBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGxvYWRlciBvYmplY3QgdGhhdCBsb2FkZWQKKyAgIHRoZSBtb2R1bGUuICBUaGlzIGlzIG1vc3RseSBmb3IgaW50cm9zcGVjdGlvbiBhbmQgcmVsb2FkaW5nLCBidXQgY2FuIGJlCisgICB1c2VkIGZvciBhZGRpdGlvbmFsIGxvYWRlci1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBmb3IgZXhhbXBsZSBnZXR0aW5nCisgICBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGxvYWRlci4KKworICogVGhlIG1vZHVsZSdzIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgc2hvdWxkIGJlIHNldC4gIEl0cyB2YWx1ZSBtdXN0IGJlIGEKKyAgIHN0cmluZywgYnV0IGl0IGNhbiBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBpdHMgYGBfX25hbWVfX2BgLiAgSWYgdGhlIGF0dHJpYnV0ZQorICAgaXMgc2V0IHRvIGBgTm9uZWBgIG9yIGlzIG1pc3NpbmcsIHRoZSBpbXBvcnQgc3lzdGVtIHdpbGwgZmlsbCBpdCBpbiB3aXRoIGEKKyAgIG1vcmUgYXBwcm9wcmlhdGUgdmFsdWUuICBXaGVuIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlLCBpdHMgYGBfX3BhY2thZ2VfX2BgCisgICB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIGl0cyBgYF9fbmFtZV9fYGAuICBXaGVuIHRoZSBtb2R1bGUgaXMgbm90IGEgcGFja2FnZSwKKyAgIGBgX19wYWNrYWdlX19gYCBzaG91bGQgYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgZm9yIHRvcC1sZXZlbCBtb2R1bGVzLCBvcgorICAgZm9yIHN1Ym1vZHVsZXMsIHRvIHRoZSBwYXJlbnQgcGFja2FnZSdzIG5hbWUuICBTZWUgOnBlcDpgMzY2YCBmb3IgZnVydGhlcgorICAgZGV0YWlscy4KKworICAgVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBpbnN0ZWFkIG9mIGBgX19uYW1lX19gYCB0byBjYWxjdWxhdGUgZXhwbGljaXQKKyAgIHJlbGF0aXZlIGltcG9ydHMgZm9yIG1haW4gbW9kdWxlcywgYXMgZGVmaW5lZCBpbiA6cGVwOmAzNjZgLgorCisgKiBJZiB0aGUgbW9kdWxlIGlzIGEgUHl0aG9uIG1vZHVsZSAoYXMgb3Bwb3NlZCB0byBhIGJ1aWx0LWluIG1vZHVsZSBvciBhCisgICBkeW5hbWljYWxseSBsb2FkZWQgZXh0ZW5zaW9uKSwgdGhlIGxvYWRlciBzaG91bGQgZXhlY3V0ZSB0aGUgbW9kdWxlJ3MgY29kZQorICAgaW4gdGhlIG1vZHVsZSdzIGdsb2JhbCBuYW1lIHNwYWNlIChgYG1vZHVsZS5fX2RpY3RfX2BgKS4KKworCitNb2R1bGUgcmVwcnMKKy0tLS0tLS0tLS0tLQorCitCeSBkZWZhdWx0LCBhbGwgbW9kdWxlcyBoYXZlIGEgdXNhYmxlIHJlcHIsIGhvd2V2ZXIgZGVwZW5kaW5nIG9uIHRoZQorYXR0cmlidXRlcyBzZXQgYWJvdmUsIGFuZCBob29rcyBpbiB0aGUgbG9hZGVyLCB5b3UgY2FuIG1vcmUgZXhwbGljaXRseSBjb250cm9sCit0aGUgcmVwciBvZiBtb2R1bGUgb2JqZWN0cy4KKworTG9hZGVycyBtYXkgaW1wbGVtZW50IGEgOm1ldGg6YG1vZHVsZV9yZXByKClgIG1ldGhvZCB3aGljaCB0YWtlcyBhIHNpbmdsZQorYXJndW1lbnQsIHRoZSBtb2R1bGUgb2JqZWN0LiAgV2hlbiBgYHJlcHIobW9kdWxlKWBgIGlzIGNhbGxlZCBmb3IgYSBtb2R1bGUKK3dpdGggYSBsb2FkZXIgc3VwcG9ydGluZyB0aGlzIHByb3RvY29sLCB3aGF0ZXZlciBpcyByZXR1cm5lZCBmcm9tCitgYG1vZHVsZS5fX2xvYWRlcl9fLm1vZHVsZV9yZXByKG1vZHVsZSlgYCBpcyByZXR1cm5lZCBhcyB0aGUgbW9kdWxlJ3MgcmVwcgord2l0aG91dCBmdXJ0aGVyIHByb2Nlc3NpbmcuICBUaGlzIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLgorCitJZiB0aGUgbW9kdWxlIGhhcyBubyBgYF9fbG9hZGVyX19gYCBhdHRyaWJ1dGUsIG9yIHRoZSBsb2FkZXIgaGFzIG5vCis6bWV0aDpgbW9kdWxlX3JlcHIoKWAgbWV0aG9kLCB0aGVuIHRoZSBtb2R1bGUgb2JqZWN0IGltcGxlbWVudGF0aW9uIGl0c2VsZgord2lsbCBjcmFmdCBhIGRlZmF1bHQgcmVwciB1c2luZyB3aGF0ZXZlciBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUuICBJdCB3aWxsCit0cnkgdG8gdXNlIHRoZSBgYG1vZHVsZS5fX25hbWVfX2BgLCBgYG1vZHVsZS5fX2ZpbGVfX2BgLCBhbmQKK2BgbW9kdWxlLl9fbG9hZGVyX19gYCBhcyBpbnB1dCBpbnRvIHRoZSByZXByLCB3aXRoIGRlZmF1bHRzIGZvciB3aGF0ZXZlcgoraW5mb3JtYXRpb24gaXMgbWlzc2luZy4KKworSGVyZSBhcmUgdGhlIGV4YWN0IHJ1bGVzIHVzZWQ6CisKKyAqIElmIHRoZSBtb2R1bGUgaGFzIGEgYGBfX2xvYWRlcl9fYGAgYW5kIHRoYXQgbG9hZGVyIGhhcyBhCisgICA6bWV0aDpgbW9kdWxlX3JlcHIoKWAgbWV0aG9kLCBjYWxsIGl0IHdpdGggYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGlzIHRoZQorICAgbW9kdWxlIG9iamVjdC4gIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyB1c2VkIGFzIHRoZSBtb2R1bGUncyByZXByLgorCisgKiBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIDptZXRoOmBtb2R1bGVfcmVwcigpYCwgdGhlIGV4Y2VwdGlvbiBpcyBjYXVnaHQKKyAgIGFuZCBkaXNjYXJkZWQsIGFuZCB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIG1vZHVsZSdzIHJlcHIgY29udGludWVzIGFzIGlmCisgICA6bWV0aDpgbW9kdWxlX3JlcHIoKWAgZGlkIG5vdCBleGlzdC4KKworICogSWYgdGhlIG1vZHVsZSBoYXMgYSBgYF9fZmlsZV9fYGAgYXR0cmlidXRlLCB0aGlzIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUKKyAgIG1vZHVsZSdzIHJlcHIuCisKKyAqIElmIHRoZSBtb2R1bGUgaGFzIG5vIGBgX19maWxlX19gYCBidXQgZG9lcyBoYXZlIGEgYGBfX2xvYWRlcl9fYGAsIHRoZW4gdGhlCisgICBsb2FkZXIncyByZXByIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgbW9kdWxlJ3MgcmVwci4KKworICogT3RoZXJ3aXNlLCBqdXN0IHVzZSB0aGUgbW9kdWxlJ3MgYGBfX25hbWVfX2BgIGluIHRoZSByZXByLgorCitUaGlzIGV4YW1wbGUsIGZyb20gOnBlcDpgNDIwYCBzaG93cyBob3cgYSBsb2FkZXIgY2FuIGNyYWZ0IGl0cyBvd24gbW9kdWxlCityZXByOjoKKworICAgIGNsYXNzIE5hbWVzcGFjZUxvYWRlcjoKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6CisgICAgICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAobmFtZXNwYWNlKT4iLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisKKworLi4gX3BhY2thZ2UtcGF0aC1ydWxlczoKKworbW9kdWxlLl9fcGF0aF9fCistLS0tLS0tLS0tLS0tLS0KKworQnkgZGVmaW5pdGlvbiwgaWYgYSBtb2R1bGUgaGFzIGFuIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUsIGl0IGlzIGEgcGFja2FnZSwKK3JlZ2FyZGxlc3Mgb2YgaXRzIHZhbHVlLgorCitBIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAgYXR0cmlidXRlIGlzIHVzZWQgZHVyaW5nIGltcG9ydHMgb2YgaXRzIHN1YnBhY2thZ2VzLgorV2l0aGluIHRoZSBpbXBvcnQgbWFjaGluZXJ5LCBpdCBmdW5jdGlvbnMgbXVjaCB0aGUgc2FtZSBhcyA6ZGF0YTpgc3lzLnBhdGhgLAoraS5lLiBwcm92aWRpbmcgYSBsaXN0IG9mIGxvY2F0aW9ucyB0byBzZWFyY2ggZm9yIG1vZHVsZXMgZHVyaW5nIGltcG9ydC4KK0hvd2V2ZXIsIGBgX19wYXRoX19gYCBpcyB0eXBpY2FsbHkgbXVjaCBtb3JlIGNvbnN0cmFpbmVkIHRoYW4KKzpkYXRhOmBzeXMucGF0aGAuCisKK2BgX19wYXRoX19gYCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIHN0cmluZ3MsIGJ1dCBpdCBtYXkgYmUgZW1wdHkuCitUaGUgc2FtZSBydWxlcyB1c2VkIGZvciA6ZGF0YTpgc3lzLnBhdGhgIGFsc28gYXBwbHkgdG8gYSBwYWNrYWdlJ3MKK2BgX19wYXRoX19gYCwgYW5kIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgKGRlc2NyaWJlZCBiZWxvdykgYXJlCitjb25zdWx0ZWQgd2hlbiB0cmF2ZXJzaW5nIGEgcGFja2FnZSdzIGBgX19wYXRoX19gYC4KKworQSBwYWNrYWdlJ3MgYGBfX2luaXRfXy5weWBgIGZpbGUgbWF5IHNldCBvciBhbHRlciB0aGUgcGFja2FnZSdzIGBgX19wYXRoX19gYAorYXR0cmlidXRlLCBhbmQgdGhpcyB3YXMgdHlwaWNhbGx5IHRoZSB3YXkgbmFtZXNwYWNlIHBhY2thZ2VzIHdlcmUgaW1wbGVtZW50ZWQKK3ByaW9yIHRvIDpwZXA6YDQyMGAuICBXaXRoIHRoZSBhZG9wdGlvbiBvZiA6cGVwOmA0MjBgLCBuYW1lc3BhY2UgcGFja2FnZXMgbm8KK2xvbmdlciBuZWVkIHRvIHN1cHBseSBgYF9faW5pdF9fLnB5YGAgZmlsZXMgY29udGFpbmluZyBvbmx5IGBgX19wYXRoX19gYAorbWFuaXB1bGF0aW9uIGNvZGU7IHRoZSBuYW1lc3BhY2UgbG9hZGVyIGF1dG9tYXRpY2FsbHkgc2V0cyBgYF9fcGF0aF9fYGAKK2NvcnJlY3RseSBmb3IgdGhlIG5hbWVzcGFjZSBwYWNrYWdlLgorCisKK1RoZSBQYXRoIEJhc2VkIEZpbmRlcgorPT09PT09PT09PT09PT09PT09PT09CisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHBhdGggYmFzZWQgZmluZGVyCisKK0FzIG1lbnRpb25lZCBwcmV2aW91c2x5LCBQeXRob24gY29tZXMgd2l0aCBzZXZlcmFsIGRlZmF1bHQgbWV0YSBwYXRoIGZpbmRlcnMuCitPbmUgb2YgdGhlc2UsIGNhbGxlZCB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCwgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydAorcGF0aGAsIHdoaWNoIGNvbnRhaW5zIGEgbGlzdCBvZiA6dGVybTpgcGF0aCBlbnRyaWVzIDxwYXRoIGVudHJ5PmAuICBFYWNoIHBhdGgKK2VudHJ5IG5hbWVzIGEgbG9jYXRpb24gdG8gc2VhcmNoIGZvciBtb2R1bGVzLgorCitUaGUgcGF0aCBiYXNlZCBmaW5kZXIgaXRzZWxmIGRvZXNuJ3Qga25vdyBob3cgdG8gaW1wb3J0IGFueXRoaW5nLiBJbnN0ZWFkLCBpdAordHJhdmVyc2VzIHRoZSBpbmRpdmlkdWFsIHBhdGggZW50cmllcywgYXNzb2NpYXRpbmcgZWFjaCBvZiB0aGVtIHdpdGggYQorcGF0aCBlbnRyeSBmaW5kZXIgdGhhdCBrbm93cyBob3cgdG8gaGFuZGxlIHRoYXQgcGFydGljdWxhciBraW5kIG9mIHBhdGguCisKK1RoZSBkZWZhdWx0IHNldCBvZiBwYXRoIGVudHJ5IGZpbmRlcnMgaW1wbGVtZW50IGFsbCB0aGUgc2VtYW50aWNzIGZvciBmaW5kaW5nCittb2R1bGVzIG9uIHRoZSBmaWxlIHN5c3RlbSwgaGFuZGxpbmcgc3BlY2lhbCBmaWxlIHR5cGVzIHN1Y2ggYXMgUHl0aG9uIHNvdXJjZQorY29kZSAoYGAucHlgYCBmaWxlcyksIFB5dGhvbiBieXRlIGNvZGUgKGBgLnB5Y2BgIGFuZCBgYC5weW9gYCBmaWxlcykgYW5kCitzaGFyZWQgbGlicmFyaWVzIChlLmcuIGBgLnNvYGAgZmlsZXMpLiBXaGVuIHN1cHBvcnRlZCBieSB0aGUgOm1vZDpgemlwaW1wb3J0YAorbW9kdWxlIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB0aGUgZGVmYXVsdCBwYXRoIGVudHJ5IGZpbmRlcnMgYWxzbyBoYW5kbGUKK2xvYWRpbmcgYWxsIG9mIHRoZXNlIGZpbGUgdHlwZXMgKG90aGVyIHRoYW4gc2hhcmVkIGxpYnJhcmllcykgZnJvbSB6aXBmaWxlcy4KKworUGF0aCBlbnRyaWVzIG5lZWQgbm90IGJlIGxpbWl0ZWQgdG8gZmlsZSBzeXN0ZW0gbG9jYXRpb25zLiAgVGhleSBjYW4gcmVmZXIgdG8KK1VSTHMsIGRhdGFiYXNlIHF1ZXJpZXMsIG9yIGFueSBvdGhlciBsb2NhdGlvbiB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYQorc3RyaW5nLgorCitUaGUgcGF0aCBiYXNlZCBmaW5kZXIgcHJvdmlkZXMgYWRkaXRpb25hbCBob29rcyBhbmQgcHJvdG9jb2xzIHNvIHRoYXQgeW91CitjYW4gZXh0ZW5kIGFuZCBjdXN0b21pemUgdGhlIHR5cGVzIG9mIHNlYXJjaGFibGUgcGF0aCBlbnRyaWVzLiAgRm9yIGV4YW1wbGUsCitpZiB5b3Ugd2FudGVkIHRvIHN1cHBvcnQgcGF0aCBlbnRyaWVzIGFzIG5ldHdvcmsgVVJMcywgeW91IGNvdWxkIHdyaXRlIGEgaG9vawordGhhdCBpbXBsZW1lbnRzIEhUVFAgc2VtYW50aWNzIHRvIGZpbmQgbW9kdWxlcyBvbiB0aGUgd2ViLiAgVGhpcyBob29rIChhCitjYWxsYWJsZSkgd291bGQgcmV0dXJuIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCBzdXBwb3J0aW5nIHRoZSBwcm90b2NvbAorZGVzY3JpYmVkIGJlbG93LCB3aGljaCB3YXMgdGhlbiB1c2VkIHRvIGdldCBhIGxvYWRlciBmb3IgdGhlIG1vZHVsZSBmcm9tIHRoZQord2ViLgorCitBIHdvcmQgb2Ygd2FybmluZzogdGhpcyBzZWN0aW9uIGFuZCB0aGUgcHJldmlvdXMgYm90aCB1c2UgdGhlIHRlcm0gKmZpbmRlciosCitkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIHRoZW0gYnkgdXNpbmcgdGhlIHRlcm1zIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCBhbmQKKzp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAuICBUaGVzZSB0d28gdHlwZXMgb2YgZmluZGVycyBhcmUgdmVyeSBzaW1pbGFyLAorc3VwcG9ydCBzaW1pbGFyIHByb3RvY29scywgYW5kIGZ1bmN0aW9uIGluIHNpbWlsYXIgd2F5cyBkdXJpbmcgdGhlIGltcG9ydAorcHJvY2VzcywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCB0aGF0IHRoZXkgYXJlIHN1YnRseSBkaWZmZXJlbnQuCitJbiBwYXJ0aWN1bGFyLCBtZXRhIHBhdGggZmluZGVycyBvcGVyYXRlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGltcG9ydAorcHJvY2VzcywgYXMga2V5ZWQgb2ZmIHRoZSA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgdHJhdmVyc2FsLgorCitCeSBjb250cmFzdCwgcGF0aCBlbnRyeSBmaW5kZXJzIGFyZSBpbiBhIHNlbnNlIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAorb2YgdGhlIHBhdGggYmFzZWQgZmluZGVyLCBhbmQgaW4gZmFjdCwgaWYgdGhlIHBhdGggYmFzZWQgZmluZGVyIHdlcmUgdG8gYmUKK3JlbW92ZWQgZnJvbSA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIG5vbmUgb2YgdGhlIHBhdGggZW50cnkgZmluZGVyIHNlbWFudGljcword291bGQgYmUgaW52b2tlZC4KKworCitQYXRoIGVudHJ5IGZpbmRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBzeXMucGF0aAorICAgIHNpbmdsZTogc3lzLnBhdGhfaG9va3MKKyAgICBzaW5nbGU6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCisgICAgc2luZ2xlOiBQWVRIT05QQVRICisKK1RoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIGFuZCBsb2FkaW5nIFB5dGhvbgorbW9kdWxlcyBhbmQgcGFja2FnZXMgd2hvc2UgbG9jYXRpb24gaXMgc3BlY2lmaWVkIHdpdGggYSBzdHJpbmcgOnRlcm06YHBhdGgKK2VudHJ5YC4gIE1vc3QgcGF0aCBlbnRyaWVzIG5hbWUgbG9jYXRpb25zIGluIHRoZSBmaWxlIHN5c3RlbSwgYnV0IHRoZXkgbmVlZAorbm90IGJlIGxpbWl0ZWQgdG8gdGhpcy4KKworQXMgYSBtZXRhIHBhdGggZmluZGVyLCB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBpbXBsZW1lbnRzIHRoZQorOm1ldGg6YGZpbmRfbW9kdWxlKClgIHByb3RvY29sIHByZXZpb3VzbHkgZGVzY3JpYmVkLCBob3dldmVyIGl0IGV4cG9zZXMKK2FkZGl0aW9uYWwgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgaG93IG1vZHVsZXMgYXJlIGZvdW5kIGFuZAorbG9hZGVkIGZyb20gdGhlIDp0ZXJtOmBpbXBvcnQgcGF0aGAuCisKK1RocmVlIHZhcmlhYmxlcyBhcmUgdXNlZCBieSB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCwgOmRhdGE6YHN5cy5wYXRoYCwKKzpkYXRhOmBzeXMucGF0aF9ob29rc2AgYW5kIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuICBUaGUgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGVzIG9uIHBhY2thZ2Ugb2JqZWN0cyBhcmUgYWxzbyB1c2VkLiAgVGhlc2UgcHJvdmlkZSBhZGRpdGlvbmFsIHdheXMKK3RoYXQgdGhlIGltcG9ydCBtYWNoaW5lcnkgY2FuIGJlIGN1c3RvbWl6ZWQuCisKKzpkYXRhOmBzeXMucGF0aGAgY29udGFpbnMgYSBsaXN0IG9mIHN0cmluZ3MgcHJvdmlkaW5nIHNlYXJjaCBsb2NhdGlvbnMgZm9yCittb2R1bGVzIGFuZCBwYWNrYWdlcy4gIEl0IGlzIGluaXRpYWxpemVkIGZyb20gdGhlIDpkYXRhOmBQWVRIT05QQVRIYAorZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHZhcmlvdXMgb3RoZXIgaW5zdGFsbGF0aW9uLSBhbmQKK2ltcGxlbWVudGF0aW9uLXNwZWNpZmljIGRlZmF1bHRzLiAgRW50cmllcyBpbiA6ZGF0YTpgc3lzLnBhdGhgIGNhbiBuYW1lCitkaXJlY3RvcmllcyBvbiB0aGUgZmlsZSBzeXN0ZW0sIHppcCBmaWxlcywgYW5kIHBvdGVudGlhbGx5IG90aGVyICJsb2NhdGlvbnMiCisoc2VlIHRoZSA6bW9kOmBzaXRlYCBtb2R1bGUpIHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkIGZvciBtb2R1bGVzLCBzdWNoIGFzCitVUkxzLCBvciBkYXRhYmFzZSBxdWVyaWVzLgorCitUaGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBpcyBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCwgc28gdGhlIGltcG9ydAorbWFjaGluZXJ5IGJlZ2lucyB0aGUgOnRlcm06YGltcG9ydCBwYXRoYCBzZWFyY2ggYnkgY2FsbGluZyB0aGUgcGF0aAorYmFzZWQgZmluZGVyJ3MgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBhcyBkZXNjcmliZWQgcHJldmlvdXNseS4gIFdoZW4KK3RoZSBgYHBhdGhgYCBhcmd1bWVudCB0byA6bWV0aDpgZmluZF9tb2R1bGUoKWAgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgYQorbGlzdCBvZiBzdHJpbmcgcGF0aHMgdG8gdHJhdmVyc2UgLSB0eXBpY2FsbHkgYSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGUgZm9yIGFuIGltcG9ydCB3aXRoaW4gdGhhdCBwYWNrYWdlLiAgSWYgdGhlIGBgcGF0aGBgIGFyZ3VtZW50CitpcyBgYE5vbmVgYCwgdGhpcyBpbmRpY2F0ZXMgYSB0b3AgbGV2ZWwgaW1wb3J0IGFuZCA6ZGF0YTpgc3lzLnBhdGhgIGlzIHVzZWQuCisKK1RoZSBwYXRoIGJhc2VkIGZpbmRlciBpdGVyYXRlcyBvdmVyIGV2ZXJ5IGVudHJ5IGluIHRoZSBzZWFyY2ggcGF0aCwgYW5kCitmb3IgZWFjaCBvZiB0aGVzZSwgbG9va3MgZm9yIGFuIGFwcHJvcHJpYXRlIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgZm9yIHRoZQorcGF0aCBlbnRyeS4gIEJlY2F1c2UgdGhpcyBjYW4gYmUgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbiAoZS5nLiB0aGVyZSBtYXkgYmUKK2BzdGF0KClgIGNhbGwgb3ZlcmhlYWRzIGZvciB0aGlzIHNlYXJjaCksIHRoZSBwYXRoIGJhc2VkIGZpbmRlciBtYWludGFpbnMKK2EgY2FjaGUgbWFwcGluZyBwYXRoIGVudHJpZXMgdG8gcGF0aCBlbnRyeSBmaW5kZXJzLiAgVGhpcyBjYWNoZSBpcyBtYWludGFpbmVkCitpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIChkZXNwaXRlIHRoZSBuYW1lLCB0aGlzIGNhY2hlIGFjdHVhbGx5CitzdG9yZXMgZmluZGVyIG9iamVjdHMgcmF0aGVyIHRoYW4gYmVpbmcgbGltaXRlZCB0byA6dGVybTpgaW1wb3J0ZXJgIG9iamVjdHMpLgorSW4gdGhpcyB3YXksIHRoZSBleHBlbnNpdmUgc2VhcmNoIGZvciBhIHBhcnRpY3VsYXIgOnRlcm06YHBhdGggZW50cnlgCitsb2NhdGlvbidzIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgbmVlZCBvbmx5IGJlIGRvbmUgb25jZS4gIFVzZXIgY29kZSBpcworZnJlZSB0byByZW1vdmUgY2FjaGUgZW50cmllcyBmcm9tIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgZm9yY2luZwordGhlIHBhdGggYmFzZWQgZmluZGVyIHRvIHBlcmZvcm0gdGhlIHBhdGggZW50cnkgc2VhcmNoIGFnYWluIFsjZm5waWNdXy4KKworSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGNhY2hlLCB0aGUgcGF0aCBiYXNlZCBmaW5kZXIgaXRlcmF0ZXMKK292ZXIgZXZlcnkgY2FsbGFibGUgaW4gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYC4gIEVhY2ggb2YgdGhlCis6dGVybTpgcGF0aCBlbnRyeSBob29rcyA8cGF0aCBlbnRyeSBob29rPmAgaW4gdGhpcyBsaXN0IGlzIGNhbGxlZCB3aXRoIGEKK3NpbmdsZSBhcmd1bWVudCwgdGhlIHBhdGggZW50cnkgdG8gYmUgc2VhcmNoZWQuICBUaGlzIGNhbGxhYmxlIG1heSBlaXRoZXIKK3JldHVybiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgdGhhdCBjYW4gaGFuZGxlIHRoZSBwYXRoIGVudHJ5LCBvciBpdCBtYXkKK3JhaXNlIDpleGM6YEltcG9ydEVycm9yYC4KK0FuIDpleGM6YEltcG9ydEVycm9yYCBpcyB1c2VkIGJ5IHRoZSBwYXRoIGJhc2VkIGZpbmRlciB0byBzaWduYWwgdGhhdCB0aGUgaG9vaworY2Fubm90IGZpbmQgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIGZvciB0aGF0IDp0ZXJtOmBwYXRoIGVudHJ5YC4gIFRoZQorZXhjZXB0aW9uIGlzIGlnbm9yZWQgYW5kIDp0ZXJtOmBpbXBvcnQgcGF0aGAgaXRlcmF0aW9uIGNvbnRpbnVlcy4KKworSWYgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBpdGVyYXRpb24gZW5kcyB3aXRoIG5vIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAKK2JlaW5nIHJldHVybmVkLCB0aGVuIHRoZSBwYXRoIGJhc2VkIGZpbmRlcidzIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2QKK3dpbGwgc3RvcmUgYGBOb25lYGAgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCAodG8gaW5kaWNhdGUgdGhhdAordGhlcmUgaXMgbm8gZmluZGVyIGZvciB0aGlzIHBhdGggZW50cnkpIGFuZCByZXR1cm4gYGBOb25lYGAsIGluZGljYXRpbmcgdGhhdAordGhpcyA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAgY291bGQgbm90IGZpbmQgdGhlIG1vZHVsZS4KKworSWYgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgICppcyogcmV0dXJuZWQgYnkgb25lIG9mIHRoZSA6dGVybTpgcGF0aCBlbnRyeQoraG9va2AgY2FsbGFibGVzIG9uIDpkYXRhOmBzeXMucGF0aF9ob29rc2AsIHRoZW4gdGhlIGZvbGxvd2luZyBwcm90b2NvbCBpcyB1c2VkCit0byBhc2sgdGhlIGZpbmRlciBmb3IgYSBtb2R1bGUgbG9hZGVyLCB3aGljaCBpcyB0aGVuIHVzZWQgdG8gbG9hZCB0aGUgbW9kdWxlLgorCisKK1BhdGggZW50cnkgZmluZGVyIHByb3RvY29sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBvcmRlciB0byBzdXBwb3J0IGltcG9ydHMgb2YgbW9kdWxlcyBhbmQgaW5pdGlhbGl6ZWQgcGFja2FnZXMgYW5kIGFsc28gdG8KK2NvbnRyaWJ1dGUgcG9ydGlvbnMgdG8gbmFtZXNwYWNlIHBhY2thZ2VzLCBwYXRoIGVudHJ5IGZpbmRlcnMgbXVzdCBpbXBsZW1lbnQKK3RoZSA6bWV0aDpgZmluZF9sb2FkZXIoKWAgbWV0aG9kLgorCis6bWV0aDpgZmluZF9sb2FkZXIoKWAgdGFrZXMgb25lIGFyZ3VtZW50LCB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlCittb2R1bGUgYmVpbmcgaW1wb3J0ZWQuICA6bWV0aDpgZmluZF9sb2FkZXIoKWAgcmV0dXJucyBhIDItdHVwbGUgd2hlcmUgdGhlCitmaXJzdCBpdGVtIGlzIHRoZSBsb2FkZXIgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhIG5hbWVzcGFjZSA6dGVybTpgcG9ydGlvbmAuCitXaGVuIHRoZSBmaXJzdCBpdGVtIChpLmUuIHRoZSBsb2FkZXIpIGlzIGBgTm9uZWBgLCB0aGlzIG1lYW5zIHRoYXQgd2hpbGUgdGhlCitwYXRoIGVudHJ5IGZpbmRlciBkb2VzIG5vdCBoYXZlIGEgbG9hZGVyIGZvciB0aGUgbmFtZWQgbW9kdWxlLCBpdCBrbm93cyB0aGF0IHRoZQorcGF0aCBlbnRyeSBjb250cmlidXRlcyB0byBhIG5hbWVzcGFjZSBwb3J0aW9uIGZvciB0aGUgbmFtZWQgbW9kdWxlLiAgVGhpcyB3aWxsCithbG1vc3QgYWx3YXlzIGJlIHRoZSBjYXNlIHdoZXJlIFB5dGhvbiBpcyBhc2tlZCB0byBpbXBvcnQgYSBuYW1lc3BhY2UgcGFja2FnZQordGhhdCBoYXMgbm8gcGh5c2ljYWwgcHJlc2VuY2Ugb24gdGhlIGZpbGUgc3lzdGVtLiAgV2hlbiBhIHBhdGggZW50cnkgZmluZGVyCityZXR1cm5zIGBgTm9uZWBgIGZvciB0aGUgbG9hZGVyLCB0aGUgc2Vjb25kIGl0ZW0gb2YgdGhlIDItdHVwbGUgcmV0dXJuIHZhbHVlCittdXN0IGJlIGEgc2VxdWVuY2UsIGFsdGhvdWdoIGl0IGNhbiBiZSBlbXB0eS4KKworSWYgOm1ldGg6YGZpbmRfbG9hZGVyKClgIHJldHVybnMgYSBub24tYGBOb25lYGAgbG9hZGVyIHZhbHVlLCB0aGUgcG9ydGlvbiBpcworaWdub3JlZCBhbmQgdGhlIGxvYWRlciBpcyByZXR1cm5lZCBmcm9tIHRoZSBwYXRoIGJhc2VkIGZpbmRlciwgdGVybWluYXRpbmcKK3RoZSBzZWFyY2ggdGhyb3VnaCB0aGUgcGF0aCBlbnRyaWVzLgorCitGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGltcG9ydAorcHJvdG9jb2wsIG1hbnkgcGF0aCBlbnRyeSBmaW5kZXJzIGFsc28gc3VwcG9ydCB0aGUgc2FtZSwKK3RyYWRpdGlvbmFsIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2QgdGhhdCBtZXRhIHBhdGggZmluZGVycyBzdXBwb3J0LgorSG93ZXZlciBwYXRoIGVudHJ5IGZpbmRlciA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kcyBhcmUgbmV2ZXIgY2FsbGVkCit3aXRoIGEgYGBwYXRoYGAgYXJndW1lbnQgKHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJlY29yZCB0aGUgYXBwcm9wcmlhdGUKK3BhdGggaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5pdGlhbCBjYWxsIHRvIHRoZSBwYXRoIGhvb2spLgorCitUaGUgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBvbiBwYXRoIGVudHJ5IGZpbmRlcnMgaXMgZGVwcmVjYXRlZCwKK2FzIGl0IGRvZXMgbm90IGFsbG93IHRoZSBwYXRoIGVudHJ5IGZpbmRlciB0byBjb250cmlidXRlIHBvcnRpb25zIHRvCituYW1lc3BhY2UgcGFja2FnZXMuIEluc3RlYWQgcGF0aCBlbnRyeSBmaW5kZXJzIHNob3VsZCBpbXBsZW1lbnQgdGhlCis6bWV0aDpgZmluZF9sb2FkZXIoKWAgbWV0aG9kIGFzIGRlc2NyaWJlZCBhYm92ZS4gSWYgaXQgZXhpc3RzIG9uIHRoZSBwYXRoCitlbnRyeSBmaW5kZXIsIHRoZSBpbXBvcnQgc3lzdGVtIHdpbGwgYWx3YXlzIGNhbGwgOm1ldGg6YGZpbmRfbG9hZGVyKClgCitpbiBwcmVmZXJlbmNlIHRvIDptZXRoOmBmaW5kX21vZHVsZSgpYC4KKworCitSZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgbW9zdCByZWxpYWJsZSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyB0aGUgZW50aXJlIGltcG9ydCBzeXN0ZW0gaXMgdG8KK2RlbGV0ZSB0aGUgZGVmYXVsdCBjb250ZW50cyBvZiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIHJlcGxhY2luZyB0aGVtCitlbnRpcmVseSB3aXRoIGEgY3VzdG9tIG1ldGEgcGF0aCBob29rLgorCitJZiBpdCBpcyBhY2NlcHRhYmxlIHRvIG9ubHkgYWx0ZXIgdGhlIGJlaGF2aW91ciBvZiBpbXBvcnQgc3RhdGVtZW50cword2l0aG91dCBhZmZlY3Rpbmcgb3RoZXIgQVBJcyB0aGF0IGFjY2VzcyB0aGUgaW1wb3J0IHN5c3RlbSwgdGhlbiByZXBsYWNpbmcKK3RoZSBidWlsdGluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiBtYXkgYmUgc3VmZmljaWVudC4gVGhpcyB0ZWNobmlxdWUKK21heSBhbHNvIGJlIGVtcGxveWVkIGF0IHRoZSBtb2R1bGUgbGV2ZWwgdG8gb25seSBhbHRlciB0aGUgYmVoYXZpb3VyIG9mCitpbXBvcnQgc3RhdGVtZW50cyB3aXRoaW4gdGhhdCBtb2R1bGUuCisKK1RvIHNlbGVjdGl2ZWx5IHByZXZlbnQgaW1wb3J0IG9mIHNvbWUgbW9kdWxlcyBmcm9tIGEgaG9vayBlYXJseSBvbiB0aGUKK21ldGEgcGF0aCAocmF0aGVyIHRoYW4gZGlzYWJsaW5nIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtIGVudGlyZWx5KSwKK2l0IGlzIHN1ZmZpY2llbnQgdG8gcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgIGRpcmVjdGx5IGZyb20KKzptZXRoOmBmaW5kX21vZHVsZWAgaW5zdGVhZCBvZiByZXR1cm5pbmcgYGBOb25lYGAuIFRoZSBsYXR0ZXIgaW5kaWNhdGVzCit0aGF0IHRoZSBtZXRhIHBhdGggc2VhcmNoIHNob3VsZCBjb250aW51ZS4gd2hpbGUgcmFpc2luZyBhbiBleGNlcHRpb24KK3Rlcm1pbmF0ZXMgaXQgaW1tZWRpYXRlbHkuCisKKworT3BlbiBpc3N1ZXMKKz09PT09PT09PT09CisKK1hYWCBJdCB3b3VsZCBiZSByZWFsbHkgbmljZSB0byBoYXZlIGEgZGlhZ3JhbS4KKworWFhYICogKGltcG9ydF9tYWNoaW5lcnkucnN0KSBob3cgYWJvdXQgYSBzZWN0aW9uIGRldm90ZWQganVzdCB0byB0aGUKK2F0dHJpYnV0ZXMgb2YgbW9kdWxlcyBhbmQgcGFja2FnZXMsIHBlcmhhcHMgZXhwYW5kaW5nIHVwb24gb3Igc3VwcGxhbnRpbmcgdGhlCityZWxhdGVkIGVudHJpZXMgaW4gdGhlIGRhdGEgbW9kZWwgcmVmZXJlbmNlIHBhZ2U/CisKK1hYWCBydW5weSwgcGtndXRpbCwgZXQgYWwgaW4gdGhlIGxpYnJhcnkgbWFudWFsIHNob3VsZCBhbGwgZ2V0ICJTZWUgQWxzbyIKK2xpbmtzIGF0IHRoZSB0b3AgcG9pbnRpbmcgdG8gdGhlIG5ldyBpbXBvcnQgc3lzdGVtIHNlY3Rpb24uCisKKworUmVmZXJlbmNlcworPT09PT09PT09PQorCitUaGUgaW1wb3J0IG1hY2hpbmVyeSBoYXMgZXZvbHZlZCBjb25zaWRlcmFibHkgc2luY2UgUHl0aG9uJ3MgZWFybHkgZGF5cy4gIFRoZQorb3JpZ2luYWwgYHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzCis8aHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbD5gXyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCwKK2FsdGhvdWdoIHNvbWUgZGV0YWlscyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHdyaXRpbmcgb2YgdGhhdCBkb2N1bWVudC4KKworVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCB3YXMgOnBlcDpgMzAyYCwgd2l0aAorc3Vic2VxdWVudCBleHRlbnNpb24gaW4gOnBlcDpgNDIwYC4KKworOnBlcDpgNDIwYCBpbnRyb2R1Y2VkIDp0ZXJtOmBuYW1lc3BhY2UgcGFja2FnZXMgPG5hbWVzcGFjZSBwYWNrYWdlPmAgZm9yCitQeXRob24gMy4zLiAgOnBlcDpgNDIwYCBhbHNvIGludHJvZHVjZWQgdGhlIDptZXRoOmBmaW5kX2xvYWRlcmAgcHJvdG9jb2wgYXMgYW4KK2FsdGVybmF0aXZlIHRvIDptZXRoOmBmaW5kX21vZHVsZWAuCisKKzpwZXA6YDM2NmAgZGVzY3JpYmVzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGBfX3BhY2thZ2VfX2BgIGF0dHJpYnV0ZSBmb3IKK2V4cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgaW4gbWFpbiBtb2R1bGVzLgorCis6cGVwOmAzMjhgIGludHJvZHVjZWQgYWJzb2x1dGUgYW5kIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgYW5kIGluaXRpYWxseQorcHJvcG9zZWQgYGBfX25hbWVfX2BgIGZvciBzZW1hbnRpY3MgOnBlcDpgMzY2YCB3b3VsZCBldmVudHVhbGx5IHNwZWNpZnkgZm9yCitgYF9fcGFja2FnZV9fYGAuCisKKzpwZXA6YDMzOGAgZGVmaW5lcyBleGVjdXRpbmcgbW9kdWxlcyBhcyBzY3JpcHRzLgorCisKK0Zvb3Rub3RlcworPT09PT09PT09CisKKy4uIFsjZm5tb10gU2VlIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAuCisKKy4uIFsjZm5sb10gVGhlIGltcG9ydGxpYiBpbXBsZW1lbnRhdGlvbiBhdm9pZHMgdXNpbmcgdGhlIHJldHVybiB2YWx1ZQorICAgZGlyZWN0bHkuIEluc3RlYWQsIGl0IGdldHMgdGhlIG1vZHVsZSBvYmplY3QgYnkgbG9va2luZyB0aGUgbW9kdWxlIG5hbWUgdXAKKyAgIGluIDpkYXRhOmBzeXMubW9kdWxlc2AuICBUaGUgaW5kaXJlY3QgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCBhbiBpbXBvcnRlZAorICAgbW9kdWxlIG1heSByZXBsYWNlIGl0c2VsZiBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLiAgVGhpcyBpcworICAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgYmVoYXZpb3IgdGhhdCBpcyBub3QgZ3VhcmFudGVlZCB0byB3b3JrIGluIG90aGVyCisgICBQeXRob24gaW1wbGVtZW50YXRpb25zLgorCisuLiBbI2ZucGljXSBJbiBsZWdhY3kgY29kZSwgaXQgaXMgcG9zc2libGUgdG8gZmluZCBpbnN0YW5jZXMgb2YKKyAgIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgaW4gdGhlIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuICBJdAorICAgaXMgcmVjb21tZW5kZWQgdGhhdCBjb2RlIGJlIGNoYW5nZWQgdG8gdXNlIGBgTm9uZWBgIGluc3RlYWQuICBTZWUKKyAgIDpyZWY6YHBvcnRpbmdweXRob25jb2RlYCBmb3IgbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdAppbmRleCBiZDFhMjgxLi41NWY5M2Q3IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdApAQCAtMjQsNiArMjQsNyBAQAogICAgbGV4aWNhbF9hbmFseXNpcy5yc3QKICAgIGRhdGFtb2RlbC5yc3QKICAgIGV4ZWN1dGlvbm1vZGVsLnJzdAorICAgaW1wb3J0LnJzdAogICAgZXhwcmVzc2lvbnMucnN0CiAgICBzaW1wbGVfc3RtdHMucnN0CiAgICBjb21wb3VuZF9zdG10cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CmluZGV4IDRiNDk3MzguLjk0ZjIxOWIgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdApAQCAtNDAxLDcgKzQwMSw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIHN0cmluZ2xpdGVyYWw6IFtgc3RyaW5ncHJlZml4YF0oYHNob3J0c3RyaW5nYCB8IGBsb25nc3RyaW5nYCkKLSAgIHN0cmluZ3ByZWZpeDogInIiIHwgIlIiCisgICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIgogICAgc2hvcnRzdHJpbmc6ICInIiBgc2hvcnRzdHJpbmdpdGVtYCogIiciIHwgJyInIGBzaG9ydHN0cmluZ2l0ZW1gKiAnIicKICAgIGxvbmdzdHJpbmc6ICInJyciIGBsb25nc3RyaW5naXRlbWAqICInJyciIHwgJyIiIicgYGxvbmdzdHJpbmdpdGVtYCogJyIiIicKICAgIHNob3J0c3RyaW5naXRlbTogYHNob3J0c3RyaW5nY2hhcmAgfCBgc3RyaW5nZXNjYXBlc2VxYApAQCAtNDEyLDcgKzQxMiw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGJ5dGVzbGl0ZXJhbDogYGJ5dGVzcHJlZml4YChgc2hvcnRieXRlc2AgfCBgbG9uZ2J5dGVzYCkKLSAgIGJ5dGVzcHJlZml4OiAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiCisgICBieXRlc3ByZWZpeDogImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiIKICAgIHNob3J0Ynl0ZXM6ICInIiBgc2hvcnRieXRlc2l0ZW1gKiAiJyIgfCAnIicgYHNob3J0Ynl0ZXNpdGVtYCogJyInCiAgICBsb25nYnl0ZXM6ICInJyciIGBsb25nYnl0ZXNpdGVtYCogIicnJyIgfCAnIiIiJyBgbG9uZ2J5dGVzaXRlbWAqICciIiInCiAgICBzaG9ydGJ5dGVzaXRlbTogYHNob3J0Ynl0ZXNjaGFyYCB8IGBieXRlc2VzY2FwZXNlcWAKQEAgLTQ0MSwxMCArNDQxLDI0IEBACiBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCBvciBncmVhdGVyCiBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuCiAKK0FzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGEKK2BgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy4KKwogQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYSBsZXR0ZXIgYGAncidgYAogb3IgYGAnUidgYDsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgOmRmbjpgcmF3IHN0cmluZ3NgIGFuZCB0cmVhdCBiYWNrc2xhc2hlcyBhcwogbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscywgYGAnXFUnYGAgYW5kIGBgJ1x1J2BgCi1lc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuCitlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueCdzIHJhdwordW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhbiBQeXRob24gMy54J3MgdGhlIGBgJ3VyJ2BgIHN5bnRheAoraXMgbm90IHN1cHBvcnRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgYGAncmInYGAgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0KKyAgICAgIG9mIGBgJ2JyJ2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsIChgYHUndmFsdWUnYGApIHdhcyByZWludHJvZHVjZWQKKyAgICAgIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuCisgICAgICBTZWUgOnBlcDpgNDE0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogSW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZCAoYW5kIGFyZQogcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93IHRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEKQEAgLTQ5MiwxMyArNTA2LDEzIEBACiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiB8IEVzY2FwZSBTZXF1ZW5jZSB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8CiArPT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCi18IGBgXE57bmFtZX1gYCAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgfCAgICAgICB8Cit8IGBgXE57bmFtZX1gYCAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgfCBcKDQpICB8CiB8ICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgXHV4eHh4YGAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgfCBcKDQpICB8Cit8IGBgXHV4eHh4YGAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgfCBcKDUpICB8CiB8ICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgXFV4eHh4eHh4eGBgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgfCBcKDUpICB8Cit8IGBgXFV4eHh4eHh4eGBgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgfCBcKDYpICB8CiB8ICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKQEAgLTUxNiwxMyArNTMwLDE1IEBACiAgICB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KIAogKDQpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsjXV8gaGFzIGJlZW4gYWRkZWQuCisKKyg1KQogICAgSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmUgZW5jb2RlZCB1c2luZwogICAgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuCiAKLSg1KQotICAgQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LCBidXQgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYwotICAgTXVsdGlsaW5ndWFsIFBsYW5lIChCTVApIHdpbGwgYmUgZW5jb2RlZCB1c2luZyBhIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcwotICAgY29tcGlsZWQgdG8gdXNlIDE2LWJpdCBjb2RlIHVuaXRzICh0aGUgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMKKyg2KQorICAgQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LiAgRXhhY3RseSBlaWdodCBoZXggZGlnaXRzCiAgICBhcmUgcmVxdWlyZWQuCiAKIApAQCAtNzA2LDMgKzcyMiw4IEBACiBvY2N1cnJlbmNlIG91dHNpZGUgc3RyaW5nIGxpdGVyYWxzIGFuZCBjb21tZW50cyBpcyBhbiB1bmNvbmRpdGlvbmFsIGVycm9yOjoKIAogICAgJCAgICAgICA/ICAgICAgIGAKKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMS4wL3VjZC9OYW1lQWxpYXNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCA3MzE4M2Q1Li44MWRjNzQ4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC00MjQsMTAgKzQyNCwxMCBAQAogOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZSwgdGhhdCA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZQogcmVhbGx5IGxlYXZpbmcgdGhlIGZ1bmN0aW9uLgogCi1JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIDprZXl3b3JkOmByZXR1cm5gIHN0YXRlbWVudCBpcyBub3QgYWxsb3dlZCB0bwotaW5jbHVkZSBhbiA6dG9rZW46YGV4cHJlc3Npb25fbGlzdGAuICBJbiB0aGF0IGNvbnRleHQsIGEgYmFyZSA6a2V5d29yZDpgcmV0dXJuYAotaW5kaWNhdGVzIHRoYXQgdGhlIGdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIDpleGM6YFN0b3BJdGVyYXRpb25gIHRvIGJlCi1yYWlzZWQuCitJbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIDprZXl3b3JkOmByZXR1cm5gIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGUKK2dlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIDpleGM6YFN0b3BJdGVyYXRpb25gIHRvIGJlIHJhaXNlZC4gVGhlIHJldHVybmVkCit2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBhbmQKK2JlY29tZXMgdGhlIDphdHRyOmBTdG9wSXRlcmF0aW9uLnZhbHVlYCBhdHRyaWJ1dGUuCiAKIAogLi4gX3lpZWxkOgpAQCAtNDQ5LDYgKzQ0OSw3IEBACiBhbmQgaXMgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uIFVzaW5nIGEgOmtleXdvcmQ6YHlpZWxkYAogc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvIGNhdXNlIHRoYXQgZGVmaW5pdGlvbiB0bwogY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWwgZnVuY3Rpb24uCisKIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuIGl0ZXJhdG9yIGtub3duIGFzIGEgZ2VuZXJhdG9yCiBpdGVyYXRvciwgb3IgbW9yZSBjb21tb25seSwgYSBnZW5lcmF0b3IuICBUaGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzCiBleGVjdXRlZCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgbmV4dGAgZnVuY3Rpb24gb24gdGhlIGdlbmVyYXRvciByZXBlYXRlZGx5IHVudGlsCkBAIC00NjgsMTQgKzQ2OSwyOCBAQAogZ2FyYmFnZSBjb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yJ3MgOm1ldGg6YGNsb3NlYCBtZXRob2Qgd2lsbCBiZQogY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlcyB0byBleGVjdXRlLgogCitXaGVuIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCBpcyB1c2VkLCBpdCB0cmVhdHMgdGhlIHN1cHBsaWVkIGV4cHJlc3Npb24gYXMKK2Egc3ViaXRlcmF0b3IsIHByb2R1Y2luZyB2YWx1ZXMgZnJvbSBpdCB1bnRpbCB0aGUgdW5kZXJseWluZyBpdGVyYXRvciBpcworZXhoYXVzdGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB5aWVsZCBmcm9tIDxleHByPmBgIHRvIGRlbGVnYXRlIGNvbnRyb2wgZmxvdyB0byBhIHN1Yml0ZXJhdG9yCisKK0ZvciBmdWxsIGRldGFpbHMgb2YgOmtleXdvcmQ6YHlpZWxkYCBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSA6cmVmOmB5aWVsZGV4cHJgCitzZWN0aW9uLgorCiAuLiBzZWVhbHNvOjoKIAogICAgOnBlcDpgMDI1NWAgLSBTaW1wbGUgR2VuZXJhdG9ycwogICAgICAgVGhlIHByb3Bvc2FsIGZvciBhZGRpbmcgZ2VuZXJhdG9ycyBhbmQgdGhlIDprZXl3b3JkOmB5aWVsZGAgc3RhdGVtZW50IHRvIFB5dGhvbi4KIAogICAgOnBlcDpgMDM0MmAgLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzCi0gICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgcHJvcG9zZWQgYWxsb3dpbmcKLSAgICAgIDprZXl3b3JkOmB5aWVsZGAgdG8gYXBwZWFyIGluc2lkZSBhIDprZXl3b3JkOmB0cnlgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgYmxvY2suCisgICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nIHRoZW0KKyAgICAgIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy4KKworICAgOnBlcDpgMDM4MGAgLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKyAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIDp0b2tlbjpgeWllbGRfZnJvbWAgc3ludGF4LCBtYWtpbmcgZGVsZWdhdGlvbgorICAgICAgdG8gc3ViLWdlbmVyYXRvcnMgZWFzeS4KIAogCiAuLiBfcmFpc2U6CkBAIC02NDUsMTYxICs2NjAsOTggQEAKICAgIHJlbGF0aXZlX21vZHVsZTogIi4iKiBgbW9kdWxlYCB8ICIuIisKICAgIG5hbWU6IGBpZGVudGlmaWVyYAogCi1JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kIGluaXRpYWxpemUKLWl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSAob2YgdGhlIHNjb3BlCi13aGVyZSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IG9jY3VycykuIFRoZSBzdGF0ZW1lbnQgY29tZXMgaW4gdHdvCi1mb3JtcyBkaWZmZXJpbmcgb24gd2hldGhlciBpdCB1c2VzIHRoZSA6a2V5d29yZDpgZnJvbWAga2V5d29yZC4gVGhlIGZpcnN0IGZvcm0KLSh3aXRob3V0IDprZXl3b3JkOmBmcm9tYCkgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3IgZWFjaCBpZGVudGlmaWVyIGluIHRoZSBsaXN0LgotVGhlIGZvcm0gd2l0aCA6a2V5d29yZDpgZnJvbWAgcGVyZm9ybXMgc3RlcCAoMSkgb25jZSwgYW5kIHRoZW4gcGVyZm9ybXMgc3RlcAotKDIpIHJlcGVhdGVkbHkuIEZvciBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGVwICgxKSwgc2VlIHRoZQotOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUuCitUaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gOmtleXdvcmQ6YGZyb21gIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvCitzdGVwczoKIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogcGFja2FnZQorIy4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeQorIy4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmUKKyAgIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgb2NjdXJzLgogCi1UbyB1bmRlcnN0YW5kIGhvdyBzdGVwICgxKSBvY2N1cnMsIG9uZSBtdXN0IGZpcnN0IHVuZGVyc3RhbmQgaG93IFB5dGhvbiBoYW5kbGVzCi1oaWVyYXJjaGljYWwgbmFtaW5nIG9mIG1vZHVsZXMuIFRvIGhlbHAgb3JnYW5pemUgbW9kdWxlcyBhbmQgcHJvdmlkZSBhCi1oaWVyYXJjaHkgaW4gbmFtaW5nLCBQeXRob24gaGFzIGEgY29uY2VwdCBvZiBwYWNrYWdlcy4gQSBwYWNrYWdlIGNhbiBjb250YWluCi1vdGhlciBwYWNrYWdlcyBhbmQgbW9kdWxlcyB3aGlsZSBtb2R1bGVzIGNhbm5vdCBjb250YWluIG90aGVyIG1vZHVsZXMgb3IKLXBhY2thZ2VzLiBGcm9tIGEgZmlsZSBzeXN0ZW0gcGVyc3BlY3RpdmUsIHBhY2thZ2VzIGFyZSBkaXJlY3RvcmllcyBhbmQgbW9kdWxlcwotYXJlIGZpbGVzLiBUaGUgb3JpZ2luYWwgYHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzCi08aHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbD5gXyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCwKLWFsdGhvdWdoIG1pbm9yIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXQgZG9jdW1lbnQuCitXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5Citjb21tYXMpIHRoZSB0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0CithcyB0aG91Z2ggdGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWRpdWFsIGltcG9ydAorc3RhdGVtZW50cy4KIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLm1vZHVsZXMKK1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXMgZGVzY3JpYmVkIGluCitncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgOnJlZjpgaW1wb3J0IHN5c3RlbSA8aW1wb3J0c3lzdGVtPmAsCit3aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0IGNhbgorYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZQordGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5IGluZGljYXRlIGVpdGhlcgordGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUKK2luaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb24gb2YgdGhlIG1vZHVsZSdzIGNvZGUuCiAKLU9uY2UgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBpcyBrbm93biAodW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIHRoZSB0ZXJtCi0ibW9kdWxlIiB3aWxsIHJlZmVyIHRvIGJvdGggcGFja2FnZXMgYW5kIG1vZHVsZXMpLCBzZWFyY2hpbmcKLWZvciB0aGUgbW9kdWxlIG9yIHBhY2thZ2UgY2FuIGJlZ2luLiBUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBpcwotOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkCi1wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKSBvZiBpbXBvcnQKLXVubGVzcyBgYE5vbmVgYCBpcyBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBpbiB3aGljaCBjYXNlCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlCithdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czoKIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLm1ldGFfcGF0aAotICAgIHNpbmdsZTogZmluZGVyCi0gICAgcGFpcjogZmluZGVyOyBmaW5kX21vZHVsZQotICAgIHNpbmdsZTogX19wYXRoX18KKyogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IDprZXl3b3JkOmBhc2AsIHRoZW4gdGhlIG5hbWUKKyAgZm9sbG93aW5nIDprZXl3b3JkOmBhc2AgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS4KKyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGEgdG9wCisgIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhCisgIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlCisqIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZSBuYW1lCisgIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW4gdGhlIGxvY2FsCisgIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZSBpbXBvcnRlZCBtb2R1bGUKKyAgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZSByYXRoZXIgdGhhbiBkaXJlY3RseQogCi1JZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiB0aGUgY2FjaGUsIHRoZW4gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGlzIHNlYXJjaGVkCi0odGhlIHNwZWNpZmljYXRpb24gZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBjYW4gYmUgZm91bmQgaW4gOnBlcDpgMzAyYCkuCi1UaGUgb2JqZWN0IGlzIGEgbGlzdCBvZiA6dGVybTpgZmluZGVyYCBvYmplY3RzIHdoaWNoIGFyZSBxdWVyaWVkIGluIG9yZGVyIGFzIHRvCi13aGV0aGVyIHRoZXkga25vdyBob3cgdG8gbG9hZCB0aGUgbW9kdWxlIGJ5IGNhbGxpbmcgdGhlaXIgOm1ldGg6YGZpbmRfbW9kdWxlYAotbWV0aG9kIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBoYXBwZW5zIHRvIGJlIGNvbnRhaW5lZAotd2l0aGluIGEgcGFja2FnZSAoYXMgZGVub3RlZCBieSB0aGUgZXhpc3RlbmNlIG9mIGEgZG90IGluIHRoZSBuYW1lKSwgdGhlbiBhCi1zZWNvbmQgYXJndW1lbnQgdG8gOm1ldGg6YGZpbmRfbW9kdWxlYCBpcyBnaXZlbiBhcyB0aGUgdmFsdWUgb2YgdGhlCi06YXR0cjpgX19wYXRoX19gIGF0dHJpYnV0ZSBmcm9tIHRoZSBwYXJlbnQgcGFja2FnZSAoZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdAotZG90IGluIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlCi1pdCByZXR1cm5zIGEgOnRlcm06YGxvYWRlcmAgKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyBgYE5vbmVgYC4KLQotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLnBhdGhfaG9va3MKLSAgICBzaW5nbGU6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCi0gICAgc2luZ2xlOiBzeXMucGF0aAotCi1JZiBub25lIG9mIHRoZSBmaW5kZXJzIG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBhcmUgYWJsZSB0byBmaW5kIHRoZSBtb2R1bGUKLXRoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC4gSW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbgotdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZSBkZWZpbmVkLiBUaGUgb25lIHRoZXkgYWxsIGRvCi1kZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlcyA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLAotOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgYW5kIDpkYXRhOmBzeXMucGF0aGAuCi0KLVRoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAicGF0aHMiIHNwZWNpZmllZAotaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSBzeXN0ZW0gcGF0aHMpLiBJZiB0aGUKLW1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWQgd2l0aGluIGEgcGFja2FnZSB0aGVuIHRoZQotc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byA6bWV0aDpgZmluZF9tb2R1bGVgLCA6YXR0cjpgX19wYXRoX19gIG9uIHRoZSBwYXJlbnQKLXBhY2thZ2UsIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4gSWYgdGhlIG1vZHVsZSBpcyBub3QgY29udGFpbmVkIGluIGEKLXBhY2thZ2UgdGhlbiA6ZGF0YTpgc3lzLnBhdGhgIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4KLQotT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYSBmaW5kZXIgdGhhdAotY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0IDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgY2FjaGVzCi1maW5kZXJzIGZvciBwYXRocyBhbmQgaXMgY2hlY2tlZCBmb3IgYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYQotZmluZGVyIGNhY2hlZCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMgc2VhcmNoZWQgYnkgY2FsbGluZyBlYWNoIG9iamVjdCBpbgotdGhlIGxpc3Qgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCBvZiB0aGUgcGF0aCwgcmV0dXJuaW5nIGEgZmluZGVyIG9yIHJhaXNlcwotOmV4YzpgSW1wb3J0RXJyb3JgLiBJZiBhIGZpbmRlciBpcyByZXR1cm5lZCB0aGVuIGl0IGlzIGNhY2hlZCBpbgotOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbmQgdGhlbiB1c2VkIGZvciB0aGF0IHBhdGggZW50cnkuIElmIG5vIGZpbmRlcgotY2FuIGJlIGZvdW5kIGJ1dCB0aGUgcGF0aCBleGlzdHMgdGhlbiBhIHZhbHVlIG9mIGBgTm9uZWBgIGlzCi1zdG9yZWQgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsCi1maWxlLWJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlcyBzaG91bGQgYmUKLXVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlciB3aGljaCBhbHdheXMKLXJldHVybnMgYGBOb25lYGAgaXMgcGxhY2VkIGluIHRoZSBjYWNoZSBmb3IgdGhlIHBhdGguCi0KLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IGxvYWRlcgotICAgIHBhaXI6IGxvYWRlcjsgbG9hZF9tb2R1bGUKLSAgICBleGNlcHRpb246IEltcG9ydEVycm9yCi0KLUlmIG5vIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIHRoZW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gT3RoZXJ3aXNlCi1zb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSA6bWV0aDpgbG9hZF9tb2R1bGVgIG1ldGhvZCBpcyBjYWxsZWQgd2l0aAotdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIChzZWUgOnBlcDpgMzAyYCBmb3IgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24gb2YKLWxvYWRlcnMpLiBBIGxvYWRlciBoYXMgc2V2ZXJhbCByZXNwb25zaWJpbGl0aWVzIHRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQKLWxvYWRzLiBGaXJzdCwgaWYgdGhlIG1vZHVsZSBhbHJlYWR5IGV4aXN0cyBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIChhCi1wb3NzaWJpbGl0eSBpZiB0aGUgbG9hZGVyIGlzIGNhbGxlZCBvdXRzaWRlIG9mIHRoZSBpbXBvcnQgbWFjaGluZXJ5KSB0aGVuIGl0Ci1pcyB0byB1c2UgdGhhdCBtb2R1bGUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCBub3QgYSBuZXcgbW9kdWxlLiBCdXQgaWYgdGhlCi1tb2R1bGUgZG9lcyBub3QgZXhpc3QgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGl0IGlzIHRvIGJlIGFkZGVkIHRvIHRoYXQKLWRpY3QgYmVmb3JlIGluaXRpYWxpemF0aW9uIGJlZ2lucy4gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIG9mIHRoZQotbW9kdWxlIGFuZCBpdCB3YXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5tb2R1bGVzYCBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlCi1kaWN0LiBJZiBhbiBlcnJvciBvY2N1cnMgYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBpdAotaXMgbGVmdCBpbiB0aGUgZGljdC4KLQotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogX19uYW1lX18KLSAgICBzaW5nbGU6IF9fZmlsZV9fCi0gICAgc2luZ2xlOiBfX3BhdGhfXwotICAgIHNpbmdsZTogX19wYWNrYWdlX18KLSAgICBzaW5nbGU6IF9fbG9hZGVyX18KLQotVGhlIGxvYWRlciBtdXN0IHNldCBzZXZlcmFsIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZS4gOmRhdGE6YF9fbmFtZV9fYCBpcyB0byBiZQotc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIDpkYXRhOmBfX2ZpbGVfX2AgaXMgdG8gYmUgdGhlICJwYXRoIiB0byB0aGUgZmlsZQotdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpbgotOmRhdGE6YHN5cy5idWlsdGluX21vZHVsZV9uYW1lc2ApIGluIHdoaWNoIGNhc2UgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LgotSWYgd2hhdCBpcyBiZWluZyBpbXBvcnRlZCBpcyBhIHBhY2thZ2UgdGhlbiA6ZGF0YTpgX19wYXRoX19gIGlzIHRvIGJlIHNldCB0byBhCi1saXN0IG9mIHBhdGhzIHRvIGJlIHNlYXJjaGVkIHdoZW4gbG9va2luZyBmb3IgbW9kdWxlcyBhbmQgcGFja2FnZXMgY29udGFpbmVkCi13aXRoaW4gdGhlIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQuIDpkYXRhOmBfX3BhY2thZ2VfX2AgaXMgb3B0aW9uYWwgYnV0IHNob3VsZAotYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIG9yIHBhY2thZ2UgKHRoZSBlbXB0eQotc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkIGluIGEgcGFja2FnZSkuIDpkYXRhOmBfX2xvYWRlcl9fYCBpcwotYWxzbyBvcHRpb25hbCBidXQgc2hvdWxkIGJlIHNldCB0byB0aGUgbG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlCi1tb2R1bGUuCi0KLS4uIGluZGV4OjoKLSAgICBleGNlcHRpb246IEltcG9ydEVycm9yCi0KLUlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyB0aGVuIHRoZSBsb2FkZXIgcmFpc2VzIDpleGM6YEltcG9ydEVycm9yYCBpZgotc29tZSBvdGhlciBleGNlcHRpb24gaXMgbm90IGFscmVhZHkgYmVpbmcgcHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZSBsb2FkZXIKLXJldHVybnMgdGhlIG1vZHVsZSB0aGF0IHdhcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkLgotCi1XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhbiBiZWdpbi4KLQotVGhlIGZpcnN0IGZvcm0gb2YgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGJpbmRzIHRoZSBtb2R1bGUgbmFtZSBpbiB0aGUgbG9jYWwKLW5hbWVzcGFjZSB0byB0aGUgbW9kdWxlIG9iamVjdCwgYW5kIHRoZW4gZ29lcyBvbiB0byBpbXBvcnQgdGhlIG5leHQgaWRlbnRpZmllciwKLWlmIGFueS4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSA6a2V5d29yZDpgYXNgLCB0aGUgbmFtZSBmb2xsb3dpbmcKLTprZXl3b3JkOmBhc2AgaXMgdXNlZCBhcyB0aGUgbG9jYWwgbmFtZSBmb3IgdGhlIG1vZHVsZS4KIAogLi4gaW5kZXg6OgogICAgcGFpcjogbmFtZTsgYmluZGluZworICAga2V5d29yZDogZnJvbQogICAgZXhjZXB0aW9uOiBJbXBvcnRFcnJvcgogCi1UaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gZG9lcyBub3QgYmluZCB0aGUgbW9kdWxlIG5hbWU6IGl0IGdvZXMgdGhyb3VnaCB0aGUgbGlzdAotb2YgaWRlbnRpZmllcnMsIGxvb2tzIGVhY2ggb25lIG9mIHRoZW0gdXAgaW4gdGhlIG1vZHVsZSBmb3VuZCBpbiBzdGVwICgxKSwgYW5kCi1iaW5kcyB0aGUgbmFtZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBvYmplY3QgdGh1cyBmb3VuZC4gIEFzIHdpdGggdGhlCi1maXJzdCBmb3JtIG9mIDprZXl3b3JkOmBpbXBvcnRgLCBhbiBhbHRlcm5hdGUgbG9jYWwgbmFtZSBjYW4gYmUgc3VwcGxpZWQgYnkKLXNwZWNpZnlpbmcgIjprZXl3b3JkOmBhc2AgbG9jYWxuYW1lIi4gIElmIGEgbmFtZSBpcyBub3QgZm91bmQsCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyCi0oYGAnKidgYCksIGFsbCBwdWJsaWMgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwKLW5hbWVzcGFjZSBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LgorVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczoKKworIy4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgOmtleXdvcmQ6YGZyb21gIGNsYXVzZSBsb2FkaW5nIGFuZAorICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTsKKyMuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlIDprZXl3b3JkOmBpbXBvcnRgIGNsYXVzZXM6CisKKyAgICMuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUKKyAgICMuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW4KKyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlCisgICAjLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKyAgICMuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlLAorICAgICAgdXNpbmcgdGhlIG5hbWUgaW4gdGhlIDprZXl3b3JkOmBhc2AgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsCisgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lCisKK0V4YW1wbGVzOjoKKworICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHkKKyAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5CisgICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmIKKyAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhegorICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHIKKworSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyIChgYCcqJ2BgKSwgYWxsIHB1YmxpYworbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUKK3doZXJlIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgb2NjdXJzLgogCiAuLiBpbmRleDo6IHNpbmdsZTogX19hbGxfXyAob3B0aW9uYWwgbW9kdWxlIGF0dHJpYnV0ZSkKIAogVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIG1vZHVsZSdzCi1uYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZSBvZgotc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbgotYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAKLWlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzCi1uYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKGBgJ18nYGApLgotYGBfX2FsbF9fYGAgc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZAotYWNjaWRlbnRhbGx5IGV4cG9ydGluZyBpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzIGxpYnJhcnkKLW1vZHVsZXMgd2hpY2ggd2VyZSBpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuCituYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZQorb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcworZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYKK2BgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQKK2luIHRoZSBtb2R1bGUncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIKKyhgYCdfJ2BgKS4gIGBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQKK3RvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcworbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgorCitUaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4KK0F0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYQorOmV4YzpgU3ludGF4RXJyb3JgLgorCisuLiBpbmRleDo6IHNpbmdsZTogX19hbGxfXyAob3B0aW9uYWwgbW9kdWxlIGF0dHJpYnV0ZSkKKworVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIG1vZHVsZSdzCituYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZQorb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcworZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYKK2BgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQKK2luIHRoZSBtb2R1bGUncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIKKyhgYCdfJ2BgKS4gIGBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQKK3RvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcworbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgogCiBUaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZSB3aWxkCiBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLgpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbCBiL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwKaW5kZXggNzQ4Y2I5MS4uYTBlYzMyZiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbAorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sCkBAIC0zLDcgKzMsNyBAQAogCSAgICA8aDM+RG9jcyBmb3Igb3RoZXIgdmVyc2lvbnM8L2gzPgogCSAgICA8dWw+CiAJICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMi43LyI+UHl0aG9uIDIuNyAoc3RhYmxlKTwvYT48L2xpPgotCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8iPlB5dGhvbiAzLjMgKGluIGRldmVsb3BtZW50KTwvYT48L2xpPgorCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC8iPlB5dGhvbiAzLjQgKGluIGRldmVsb3BtZW50KTwvYT48L2xpPgogICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy92ZXJzaW9ucy8iPk9sZCB2ZXJzaW9uczwvYT48L2xpPgogICAgICAgICAgICAgPC91bD4KIApkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9sYXlvdXQuaHRtbCBiL0RvYy90b29scy9zcGhpbnhleHQvbGF5b3V0Lmh0bWwKaW5kZXggNGIxNmIzZi4uMTZhOTIxMiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9sYXlvdXQuaHRtbAorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2xheW91dC5odG1sCkBAIC0xNiw2ICsxNiw2MyBAQAogICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSJ7eyBwYXRodG8oJ19zdGF0aWMvcHkucG5nJywgMSkgfX0iIC8+CiAgICAgeyUgaWYgbm90IGVtYmVkZGVkICV9PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ie3sgcGF0aHRvKCdfc3RhdGljL2NvcHlidXR0b24uanMnLCAxKSB9fSI+PC9zY3JpcHQ+eyUgZW5kaWYgJX0KICAgICB7JSBpZiB2ZXJzaW9uc3dpdGNoZXIgaXMgZGVmaW5lZCBhbmQgbm90IGVtYmVkZGVkICV9PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ie3sgcGF0aHRvKCdfc3RhdGljL3ZlcnNpb25fc3dpdGNoLmpzJywgMSkgfX0iPjwvc2NyaXB0PnslIGVuZGlmICV9CisgICAgeyUgaWYgcGFnZW5hbWUgPT0gJ3doYXRzbmV3L2NoYW5nZWxvZycgJX0KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKyAgICAgICAgICAvLyBhZGQgdGhlIHNlYXJjaCBmb3JtIGFuZCBiaW5kIHRoZSBldmVudHMKKyAgICAgICAgICAkKCdoMScpLmFmdGVyKFsKKyAgICAgICAgICAgICc8cD5GaWx0ZXIgZW50cmllcyBieSBjb250ZW50OicsCisgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSIiIGlkPSJzZWFyY2hib3giIHN0eWxlPSJ3aWR0aDogNTAlIj4nLAorICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJzZWFyY2hib3gtc3VibWl0IiB2YWx1ZT0iRmlsdGVyIj48L3A+JworICAgICAgICAgIF0uam9pbignXG4nKSk7CisKKyAgICAgICAgICBmdW5jdGlvbiBkb2ZpbHRlcigpIHsKKyAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIHZhciBxdWVyeSA9IG5ldyBSZWdFeHAoJCgnI3NlYXJjaGJveCcpLnZhbCgpLCAnaScpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIG5vdCBhIHZhbGlkIHJlZ2V4ICh5ZXQpCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgLy8gZmluZCBoZWFkZXJzIGZvciB0aGUgdmVyc2lvbnMgKFdoYXQncyBuZXcgaW4gUHl0aG9uIFguWS5aPykKKyAgICAgICAgICAgICAgJCgnI2NoYW5nZWxvZyBoMicpLmVhY2goZnVuY3Rpb24oaW5kZXgxLCBoMikgeworICAgICAgICAgICAgICAgICAgdmFyIGgyX3BhcmVudCA9ICQoaDIpLnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb25zX2ZvdW5kID0gMDsKKyAgICAgICAgICAgICAgICAgIC8vIGZpbmQgaGVhZGVycyBmb3IgdGhlIHNlY3Rpb25zIChDb3JlLCBMaWJyYXJ5LCBldGMuKQorICAgICAgICAgICAgICAgICAgaDJfcGFyZW50LmZpbmQoJ2gzJykuZWFjaChmdW5jdGlvbihpbmRleDIsIGgzKSB7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIGgzX3BhcmVudCA9ICQoaDMpLnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgICAgIHZhciBlbnRyaWVzX2ZvdW5kID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBmaW5kIGFsbCB0aGUgZW50cmllcworICAgICAgICAgICAgICAgICAgICAgIGgzX3BhcmVudC5maW5kKCdsaScpLmVhY2goZnVuY3Rpb24oaW5kZXgzLCBsaSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGkgPSAkKGxpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIHF1ZXJ5IG1hdGNoZXMgdGhlIGVudHJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeS50ZXN0KGxpLnRleHQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpLnNob3coKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXNfZm91bmQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpLmhpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBlbnRyaWVzLCBzaG93IHRoZSBzZWN0aW9uLCBvdGhlcndpc2UgaGlkZSBpdAorICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzX2ZvdW5kID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBoM19wYXJlbnQuc2hvdygpOworICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uc19mb3VuZCsrOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaDNfcGFyZW50LmhpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uc19mb3VuZCA+IDApCisgICAgICAgICAgICAgICAgICAgICAgaDJfcGFyZW50LnNob3coKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICBoMl9wYXJlbnQuaGlkZSgpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisgICAgICAgICAgJCgnI3NlYXJjaGJveCcpLmtleXVwKGRvZmlsdGVyKTsKKyAgICAgICAgICAkKCcjc2VhcmNoYm94LXN1Ym1pdCcpLmNsaWNrKGRvZmlsdGVyKTsKKyAgICAgIH0pOworICAgIDwvc2NyaXB0PgorICAgIHslIGVuZGlmICV9CiB7eyBzdXBlcigpIH19CiB7JSBlbmRibG9jayAlfQogeyUgYmxvY2sgZm9vdGVyICV9CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkKaW5kZXggYjA3MGQ2MC4uYmNhMmViOCAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5CisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvcGF0Y2hsZXZlbC5weQpAQCAtMzQsOCArMzQsNyBAQAogCiAgICAgcmVsZWFzZSA9IHZlcnNpb24gPSAnJXMuJXMnICUgKGRbJ1BZX01BSk9SX1ZFUlNJT04nXSwgZFsnUFlfTUlOT1JfVkVSU0lPTiddKQogICAgIG1pY3JvID0gaW50KGRbJ1BZX01JQ1JPX1ZFUlNJT04nXSkKLSAgICBpZiBtaWNybyAhPSAwOgotICAgICAgICByZWxlYXNlICs9ICcuJyArIHN0cihtaWNybykKKyAgICByZWxlYXNlICs9ICcuJyArIHN0cihtaWNybykKIAogICAgIGxldmVsID0gZFsnUFlfUkVMRUFTRV9MRVZFTCddCiAgICAgc3VmZml4ZXMgPSB7CkBAIC01MSw4ICs1MCw3IEBACiBkZWYgZ2V0X3N5c192ZXJzaW9uX2luZm8oKToKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwogICAgIHJlbGVhc2UgPSB2ZXJzaW9uID0gJyVzLiVzJyAlIChtYWpvciwgbWlub3IpCi0gICAgaWYgbWljcm86Ci0gICAgICAgIHJlbGVhc2UgKz0gJy4lcycgJSBtaWNybworICAgIHJlbGVhc2UgKz0gJy4lcycgJSBtaWNybwogICAgIGlmIGxldmVsICE9ICdmaW5hbCc6CiAgICAgICAgIHJlbGVhc2UgKz0gJyVzJXMnICUgKGxldmVsWzBdLCBzZXJpYWwpCiAgICAgcmV0dXJuIHZlcnNpb24sIHJlbGVhc2UKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weQppbmRleCA5YjJjYzQ3Li5lOGViNzAzIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5CkBAIC01LDEyICs1LDEyIEBACiAKICAgICBTcGhpbnggZXh0ZW5zaW9uIHdpdGggUHl0aG9uIGRvYy1zcGVjaWZpYyBtYXJrdXAuCiAKLSAgICA6Y29weXJpZ2h0OiAyMDA4LCAyMDA5LCAyMDEwIGJ5IEdlb3JnIEJyYW5kbC4KKyAgICA6Y29weXJpZ2h0OiAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIGJ5IEdlb3JnIEJyYW5kbC4KICAgICA6bGljZW5zZTogUHl0aG9uIGxpY2Vuc2UuCiAiIiIKIAogSVNTVUVfVVJJID0gJ2h0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUlcycKLVNPVVJDRV9VUkkgPSAnaHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuMi8lcycKK1NPVVJDRV9VUkkgPSAnaHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuMy8lcycKIAogZnJvbSBkb2N1dGlscyBpbXBvcnQgbm9kZXMsIHV0aWxzCiBmcm9tIHNwaGlueC51dGlsLm5vZGVzIGltcG9ydCBzcGxpdF9leHBsaWNpdF90aXRsZQpAQCAtMTc0LDYgKzE3NCw0NyBAQAogICAgICAgICByZXR1cm4gcmV0CiAKIAorIyBTdXBwb3J0IGZvciBpbmNsdWRpbmcgTWlzYy9ORVdTCisKK2ltcG9ydCByZQoraW1wb3J0IGNvZGVjcworCitpc3N1ZV9yZSA9IHJlLmNvbXBpbGUoJyhbSWldKXNzdWUgIyhbMC05XSspJykKK3doYXRzbmV3X3JlID0gcmUuY29tcGlsZShyIig/aW0pXndoYXQncyBuZXcgaW4gKC4qPylcPz8kIikKKworY2xhc3MgTWlzY05ld3MoRGlyZWN0aXZlKToKKyAgICBoYXNfY29udGVudCA9IEZhbHNlCisgICAgcmVxdWlyZWRfYXJndW1lbnRzID0gMQorICAgIG9wdGlvbmFsX2FyZ3VtZW50cyA9IDAKKyAgICBmaW5hbF9hcmd1bWVudF93aGl0ZXNwYWNlID0gRmFsc2UKKyAgICBvcHRpb25fc3BlYyA9IHt9CisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBmbmFtZSA9IHNlbGYuYXJndW1lbnRzWzBdCisgICAgICAgIHNvdXJjZSA9IHNlbGYuc3RhdGVfbWFjaGluZS5pbnB1dF9saW5lcy5zb3VyY2UoCisgICAgICAgICAgICBzZWxmLmxpbmVubyAtIHNlbGYuc3RhdGVfbWFjaGluZS5pbnB1dF9vZmZzZXQgLSAxKQorICAgICAgICBzb3VyY2VfZGlyID0gcGF0aC5kaXJuYW1lKHBhdGguYWJzcGF0aChzb3VyY2UpKQorICAgICAgICBmcGF0aCA9IHBhdGguam9pbihzb3VyY2VfZGlyLCBmbmFtZSkKKyAgICAgICAgc2VsZi5zdGF0ZS5kb2N1bWVudC5zZXR0aW5ncy5yZWNvcmRfZGVwZW5kZW5jaWVzLmFkZChmcGF0aCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnAgPSBjb2RlY3Mub3BlbihmcGF0aCwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb250ZW50ID0gZnAucmVhZCgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHRleHQgPSAnVGhlIE5FV1MgZmlsZSBpcyBub3QgYXZhaWxhYmxlLicKKyAgICAgICAgICAgIG5vZGUgPSBub2Rlcy5zdHJvbmcodGV4dCwgdGV4dCkKKyAgICAgICAgICAgIHJldHVybiBbbm9kZV0KKyAgICAgICAgY29udGVudCA9IGlzc3VlX3JlLnN1YihyJ2BcMXNzdWUgI1wyIDxodHRwOi8vYnVncy5weXRob24ub3JnL1wyPmBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCkKKyAgICAgICAgY29udGVudCA9IHdoYXRzbmV3X3JlLnN1YihyJ1wxJywgY29udGVudCkKKyAgICAgICAgIyByZW1vdmUgZmlyc3QgMyBsaW5lcyBhcyB0aGV5IGFyZSB0aGUgbWFpbiBoZWFkaW5nCisgICAgICAgIGxpbmVzID0gWycuLiBkZWZhdWx0LXJvbGU6OiBvYmonLCAnJ10gKyBjb250ZW50LnNwbGl0bGluZXMoKVszOl0KKyAgICAgICAgc2VsZi5zdGF0ZV9tYWNoaW5lLmluc2VydF9pbnB1dChsaW5lcywgZm5hbWUpCisgICAgICAgIHJldHVybiBbXQorCisKICMgU3VwcG9ydCBmb3IgYnVpbGRpbmcgInRvcGljIGhlbHAiIGZvciBweWRvYwogCiBweWRvY190b3BpY19sYWJlbHMgPSBbCkBAIC0yMzAsMTEgKzI3MSwxMiBAQAogICAgICAgICAgICAgZG9jdW1lbnQuYXBwZW5kKGRvY3RyZWUuaWRzW2xhYmVsaWRdKQogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBTdHJpbmdPdXRwdXQoZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgICAgIHdyaXRlci53cml0ZShkb2N1bWVudCwgZGVzdGluYXRpb24pCi0gICAgICAgICAgICBzZWxmLnRvcGljc1tsYWJlbF0gPSBzdHIod3JpdGVyLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYudG9waWNzW2xhYmVsXSA9IHdyaXRlci5vdXRwdXQuZW5jb2RlKCd1dGYtOCcpCiAKICAgICBkZWYgZmluaXNoKHNlbGYpOgogICAgICAgICBmID0gb3BlbihwYXRoLmpvaW4oc2VsZi5vdXRkaXIsICd0b3BpY3MucHknKSwgJ3cnKQogICAgICAgICB0cnk6CisgICAgICAgICAgICBmLndyaXRlKCcjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLVxuJykKICAgICAgICAgICAgIGYud3JpdGUoJyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gJXNcbicgJSBhc2N0aW1lKCkpCiAgICAgICAgICAgICBmLndyaXRlKCd0b3BpY3MgPSAnICsgcGZvcm1hdChzZWxmLnRvcGljcykgKyAnXG4nKQogICAgICAgICBmaW5hbGx5OgpAQCAtMzA0LDMgKzM0Niw0IEBACiAgICAgYXBwLmFkZF9kZXNjcmlwdGlvbl91bml0KCcydG8zZml4ZXInLCAnMnRvM2ZpeGVyJywgJyVzICgydG8zIGZpeGVyKScpCiAgICAgYXBwLmFkZF9kaXJlY3RpdmVfdG9fZG9tYWluKCdweScsICdkZWNvcmF0b3InLCBQeURlY29yYXRvckZ1bmN0aW9uKQogICAgIGFwcC5hZGRfZGlyZWN0aXZlX3RvX2RvbWFpbigncHknLCAnZGVjb3JhdG9ybWV0aG9kJywgUHlEZWNvcmF0b3JNZXRob2QpCisgICAgYXBwLmFkZF9kaXJlY3RpdmUoJ21pc2NuZXdzJywgTWlzY05ld3MpCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YKaW5kZXggNTA3NmFlZC4uMmMxNWE1YyAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2CisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdgpAQCAtMSwxNiArMSwyNCBAQAogYy1hcGkvYXJnLCw6cmVmLCJQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiT3xPOnJlZiIiLCAmb2JqZWN0LCAmY2FsbGJhY2spIgogYy1hcGkvbGlzdCwsOmhpZ2gsbGlzdFtsb3c6aGlnaF0KIGMtYXBpL2xpc3QsLDpoaWdoLGxpc3RbbG93OmhpZ2hdID0gaXRlbWxpc3QKK2MtYXBpL3NlcXVlbmNlLCw6aTIsZGVsIG9baTE6aTJdCiBjLWFwaS9zZXF1ZW5jZSwsOmkyLG9baTE6aTJdCiBjLWFwaS9zZXF1ZW5jZSwsOmkyLG9baTE6aTJdID0gdgotYy1hcGkvc2VxdWVuY2UsLDppMixkZWwgb1tpMTppMl0KIGMtYXBpL3VuaWNvZGUsLDplbmQsc3RyW3N0YXJ0OmVuZF0KK2MtYXBpL3VuaWNvZGUsLDpzdGFydCx1bmljb2RlW3N0YXJ0OnN0YXJ0K2xlbmd0aF0KK2Rpc3R1dGlscy9leGFtcGxlcywyNjcsYCxUaGlzIGlzIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBmb29iYXJgYCBwYWNrYWdlLgogZGlzdHV0aWxzL3NldHVwc2NyaXB0LCw6OiwKIGV4dGVuZGluZy9lbWJlZGRpbmcsLDpudW1hcmdzLCJpZighUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIjpudW1hcmdzIiIpKSIKLWV4dGVuZGluZy9leHRlbmRpbmcsLDpzZXQsImlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiTzpzZXRfY2FsbGJhY2siIiwgJnRlbXApKSB7IgogZXh0ZW5kaW5nL2V4dGVuZGluZywsOm15ZnVuY3Rpb24sIlB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJEOm15ZnVuY3Rpb24iIiwgJmMpOyIKK2V4dGVuZGluZy9leHRlbmRpbmcsLDpzZXQsImlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiTzpzZXRfY2FsbGJhY2siIiwgJnRlbXApKSB7IgogZXh0ZW5kaW5nL25ld3R5cGVzLCw6Y2FsbCwiaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIic3NzOmNhbGwiIiwgJmFyZzEsICZhcmcyLCAmYXJnMykpIHsiCiBleHRlbmRpbmcvd2luZG93cywsOmluaXRzcGFtLC9leHBvcnQ6aW5pdHNwYW0KK2ZhcS9wcm9ncmFtbWluZywsOmNociwiPj00LjApIG9yIDErZih4Yyx5Yyx4KngteSp5K3hjLDIuMCp4KnkreWMsay0xLGYpOmYoeGMseWMseCx5LGssZik6Y2hyKCIKK2ZhcS9wcm9ncmFtbWluZywsOjosZm9yIHggaW4gc2VxdWVuY2VbOjotMV06CitmYXEvcHJvZ3JhbW1pbmcsLDpyZWR1Y2UsInByaW50KChsYW1iZGEgUnUsUm8sSXUsSW8sSU0sU3gsU3k6cmVkdWNlKGxhbWJkYSB4LHk6eCt5LG1hcChsYW1iZGEgeSwiCitmYXEvcHJvZ3JhbW1pbmcsLDpyZWR1Y2UsIlN4PVN4LFN5PVN5OnJlZHVjZShsYW1iZGEgeCx5OngreSxtYXAobGFtYmRhIHgseGM9UnUseWM9eWMsUnU9UnUsUm89Um8sIgorZmFxL3dpbmRvd3MsMjI5LDpFT0YsQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMgJiBweXRob24gLXggJX5mMCAlKiAmIGdvdG8gOkVPRgorZmFxL3dpbmRvd3MsMzkzLDpSRUcsLnB5IDpSRUdfU1o6IGM6XDxwYXRoIHRvIHB5dGhvbj5ccHl0aG9uLmV4ZSAtdSAlcyAlcwogaG93dG8vY3BvcnRpbmcsLDphZGQsImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiImlpOmFkZF9pbnRzIiIsICZvbmUsICZ0d28pKSIKIGhvd3RvL2Nwb3J0aW5nLCw6ZW5jb2RlLCJpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJPOmVuY29kZV9vYmplY3QiIiwgJm15b2JqKSkiCiBob3d0by9jcG9ydGluZywsOnNheSwiaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiVTpzYXlfaGVsbG8iIiwgJm5hbWUpKSIKQEAgLTIyLDE5ICszMCw5MSBAQAogaG93dG8vY3Vyc2VzLCw6cmVkLCJUaGV5IGFyZTogMDpibGFjaywgMTpyZWQsIDI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQiCiBob3d0by9jdXJzZXMsLDp3aGl0ZSwiNzp3aGl0ZS4iCiBob3d0by9jdXJzZXMsLDp5ZWxsb3csIlRoZXkgYXJlOiAwOmJsYWNrLCAxOnJlZCwgMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCIKK2hvd3RvL2lwYWRkcmVzcywsOkRCOCw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnOjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMTI4JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMTI4JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGFkZHI2ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGFkZHI2ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gaG9zdDYgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBob3N0NiA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmZmZmYsSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZicpCitob3d0by9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6OmZmZmY6ZmZmZicpCitob3d0by9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCcyMDAxOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LCcyMDAxOmRiODo6JworaG93dG8vaXBhZGRyZXNzLCw6OiwnMjAwMTpkYjg6OicKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCwnMjAwMTpkYjg6Oi85NicKK2hvd3RvL2lwYWRkcmVzcywsOjosJzIwMDE6ZGI4OjovOTYnCitob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOkFuZCB0aGlzLCB0b28iCitob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOnJvb3Q6QW5kIHRoaXMsIHRvbyIKK2hvd3RvL2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCitob3d0by9sb2dnaW5nLCw6RmluaXNoZWQsSU5GTzpyb290OkZpbmlzaGVkCitob3d0by9sb2dnaW5nLCw6bG9nZ2VyLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKK2hvd3RvL2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKK2hvd3RvL2xvZ2dpbmcsLDptZXNzYWdlLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKK2hvd3RvL2xvZ2dpbmcsLDpyb290LERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKK2hvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKK2hvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpGaW5pc2hlZAoraG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCitob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6U3RhcnRlZAoraG93dG8vbG9nZ2luZywsOnJvb3QsIldBUk5JTkc6cm9vdDpBbmQgdGhpcywgdG9vIgoraG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQoraG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290OldhdGNoIG91dCEKK2hvd3RvL2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKK2hvd3RvL2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCitob3d0by9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAoraG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6cm9vdDpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGdvIHRvIHRoZSBsb2cgZmlsZQoraG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6VGhpcyBtZXNzYWdlIHNob3VsZCBhcHBlYXIgb24gdGhlIGNvbnNvbGUKK2hvd3RvL2xvZ2dpbmcsLDpXYXRjaCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQoraG93dG8vcHlwb3J0aW5nLDc1LDo6LCMgbWFrZSBzdXJlIHRvIHVzZSA6OiBQeXRob24gKmFuZCogOjogUHl0aG9uIDo6IDMgc28KK2hvd3RvL3B5cG9ydGluZyw3NSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgoraG93dG8vcHlwb3J0aW5nLDc1LDo6LCdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMycKIGhvd3RvL3JlZ2V4LCw6OiwKIGhvd3RvL3JlZ2V4LCw6Zm9vLCg/OmZvbykKIGhvd3RvL3VybGxpYjIsLDpleGFtcGxlLCJmb3IgZXhhbXBsZSAiImpvZUBwYXNzd29yZDpleGFtcGxlLmNvbSIiIgogaG93dG8vd2Vic2VydmVycywsLi4gaW1hZ2U6LC4uIGltYWdlOjogaHR0cC5wbmcKIGxpYnJhcnkvYXVkaW9vcCwsOmlwb3MsIiMgZmFjdG9yID0gYXVkaW9vcC5maW5kZmFjdG9yKGluX3Rlc3RbaXBvcyoyOmlwb3MqMitsZW4ob3V0X3Rlc3QpXSwiCitsaWJyYXJ5L2Jpc2VjdCwzMiw6aGksYWxsKHZhbCA+PSB4IGZvciB2YWwgaW4gYVtpOmhpXSkKK2xpYnJhcnkvYmlzZWN0LDQyLDpoaSxhbGwodmFsID4geCBmb3IgdmFsIGluIGFbaTpoaV0pCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOmhvbWUsbXlfZGlyOiAke0NvbW1vbjpob21lX2Rpcn0vdHdvc2hlZHMKK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6b3B0aW9uLCR7c2VjdGlvbjpvcHRpb259CitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOnBhdGgscHl0aG9uX2RpcjogJHtGcmFtZXdvcmtzOnBhdGh9L1B5dGhvbi9WZXJzaW9ucy8ke0ZyYW1ld29ya3M6UHl0aG9ufQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpQeXRob24scHl0aG9uX2RpcjogJHtGcmFtZXdvcmtzOnBhdGh9L1B5dGhvbi9WZXJzaW9ucy8ke0ZyYW1ld29ya3M6UHl0aG9ufQorbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBTZXQgdGhlIG9wdGlvbmFsIGByYXdgIGFyZ3VtZW50IG9mIGdldCgpIHRvIFRydWUgaWYgeW91IHdpc2ggdG8gZGlzYWJsZQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpzeXN0ZW0scGF0aDogJHtDb21tb246c3lzdGVtX2Rpcn0vTGlicmFyeS9GcmFtZXdvcmtzLworbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBUaGUgb3B0aW9uYWwgYGZhbGxiYWNrYCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGEgZmFsbGJhY2sgdmFsdWUKK2xpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgVGhlIG9wdGlvbmFsIGB2YXJzYCBhcmd1bWVudCBpcyBhIGRpY3Qgd2l0aCBtZW1iZXJzIHRoYXQgd2lsbCB0YWtlCiBsaWJyYXJ5L2RhdGV0aW1lLCw6TU0sCiBsaWJyYXJ5L2RhdGV0aW1lLCw6U1MsCiBsaWJyYXJ5L2RlY2ltYWwsLDpvcHRpb25hbCwidHJhaWxuZWc6b3B0aW9uYWwgdHJhaWxpbmcgbWludXMgaW5kaWNhdG9yIgogbGlicmFyeS9kaWZmbGliLCw6YWhpLGFbYWxvOmFoaV0KIGxpYnJhcnkvZGlmZmxpYiwsOmJoaSxiW2JsbzpiaGldCitsaWJyYXJ5L2RpZmZsaWIsLDppMSwKIGxpYnJhcnkvZGlmZmxpYiwsOmkyLAogbGlicmFyeS9kaWZmbGliLCw6ajIsCi1saWJyYXJ5L2RpZmZsaWIsLDppMSwKIGxpYnJhcnkvZGlzLCw6VE9TLAogbGlicmFyeS9kaXMsLGAsVE9TID0gYFRPU2AKIGxpYnJhcnkvZG9jdGVzdCwsYCxgYGZhY3RvcmlhbGBgIGZyb20gdGhlIGBgZXhhbXBsZWBgIG1vZHVsZToKQEAgLTQ0LDk2ICsxMjQsMTg2IEBACiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsImFbc3RhcnQ6c3RvcCwgaV0iCiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsYVtzdGFydDpzdG9wOnN0ZXBdCiBsaWJyYXJ5L2hvdHNob3QsLDpsaW5lbm8sIm5jYWxscyAgdG90dGltZSAgcGVyY2FsbCAgY3VtdGltZSAgcGVyY2FsbCBmaWxlbmFtZTpsaW5lbm8oZnVuY3Rpb24pIgotbGlicmFyeS9odHRwbGliLCw6cG9ydCxob3N0OnBvcnQKLWxpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTICtISE1NIiIiCi1saWJyYXJ5L2ltYXBsaWIsLDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyArSEhNTSIiIgotbGlicmFyeS9pdGVydG9vbHMsLDpzdG9wLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaHR0cC5jbGllbnQsLDpwb3J0LGhvc3Q6cG9ydAorbGlicmFyeS9odHRwLmNvb2tpZXMsLGAsISMkJSYnKistLl5fYHx+OgorbGlicmFyeS9pbWFwbGliLCw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCitsaWJyYXJ5L2ltYXBsaWIsLDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKK2xpYnJhcnkvaW5zcGVjdCwsOmludCwiPj4+IGRlZiBmb28oYSwgKiwgYjppbnQsICoqa3dhcmdzKToiCitsaWJyYXJ5L2luc3BlY3QsLDppbnQsIicoYSwgKiwgYjppbnQsICoqa3dhcmdzKSciCitsaWJyYXJ5L2luc3BlY3QsLDppbnQsJ2I6aW50JworbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjonKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LElQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykubmV0d29yaworbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEwMDAvOTYnKS5uZXR3b3JrCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpLm5ldG1hc2sKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykubmV0bWFzaworbGlicmFyeS9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCwiPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvOTYnLCBzdHJpY3Q9RmFsc2UpIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCI+Pj4gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC85NicsIHN0cmljdD1GYWxzZSkiCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosIiIiOjphYmM6NzpkZWYiIiIKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGVmLCIiIjo6YWJjOjc6ZGVmIiIiCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosOjpGRkZGLzk2CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMjo6LzE2CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMTo6LzMyCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IHN0cihpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCc6OjEnCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGludChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorbGlicmFyeS9pcGFkZHJlc3MsLDpmZjAwLGZmZmY6ZmYwMDo6CitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiMDAsMjAwMTpkYjAwOjowLzI0CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMTpkYjAwOjowLzI0CitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiMDAsMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6CitsaWJyYXJ5L2lwYWRkcmVzcywsOmZmMDAsMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6CiBsaWJyYXJ5L2l0ZXJ0b29scywsOnN0ZXAsZWxlbWVudHMgZnJvbSBzZXFbc3RhcnQ6c3RvcDpzdGVwXQorbGlicmFyeS9pdGVydG9vbHMsLDpzdG9wLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KIGxpYnJhcnkvbGluZWNhY2hlLCw6c3lzLCJzeXM6eDozOjM6c3lzOi9kZXY6L2Jpbi9zaCIKIGxpYnJhcnkvbG9nZ2luZywsOkFuZCwKK2xpYnJhcnkvbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKK2xpYnJhcnkvbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAorbGlicmFyeS9sb2dnaW5nLCw6bG9nZ2VyLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKK2xpYnJhcnkvbG9nZ2luZywsOkxvb2ssV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQorbGlicmFyeS9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCiBsaWJyYXJ5L2xvZ2dpbmcsLDpwYWNrYWdlMSwKIGxpYnJhcnkvbG9nZ2luZywsOnBhY2thZ2UyLAotbGlicmFyeS9sb2dnaW5nLCw6cm9vdCwKLWxpYnJhcnkvbG9nZ2luZywsOlRoaXMsCiBsaWJyYXJ5L2xvZ2dpbmcsLDpwb3J0LGhvc3Q6cG9ydAorbGlicmFyeS9sb2dnaW5nLCw6cm9vdCwKK2xpYnJhcnkvbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcworbGlicmFyeS9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcworbGlicmFyeS9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAorbGlicmFyeS9sb2dnaW5nLCw6VGhpcywKK2xpYnJhcnkvbG9nZ2luZywsOldhdGNoLFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCitsaWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAogbGlicmFyeS9tbWFwLCw6aTIsb2JqW2kxOmkyXQotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLDpxdWV1ZSwiPj4+IFF1ZXVlTWFuYWdlci5yZWdpc3RlcignZ2V0X3F1ZXVlJywgY2FsbGFibGU9bGFtYmRhOnF1ZXVlKSIKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICMgZXF1aXYgdG8gYGxbMjBdYCIKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRzbGljZV9fJywgKDIsIDcpKSAgICMgZXF1aXYgdG8gYGxbMjo3XWAiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGBCYXNlTWFuYWdlcmAuCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGBQb29sLmltYXAoKWAgKHdoaWNoIHdpbGwgc2F2ZSBvbiB0aGUgYW1vdW50IG9mIGNvZGUgbmVlZGVkIGFueXdheSkuCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEFkZCBtb3JlIHRhc2tzIHVzaW5nIGBwdXQoKWAKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgQSB0ZXN0IGZpbGUgZm9yIHRoZSBgbXVsdGlwcm9jZXNzaW5nYCBwYWNrYWdlCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEEgdGVzdCBvZiBgbXVsdGlwcm9jZXNzaW5nLlBvb2xgIGNsYXNzCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEFkZCBtb3JlIHRhc2tzIHVzaW5nIGBwdXQoKWAKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgYEJhc2VNYW5hZ2VyYC4KK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLGBDbHVzdGVyYCBpcyBhIHN1YmNsYXNzIG9mIGBTeW5jTWFuYWdlcmAgc28gaXQgYWxsb3dzIGNyZWF0aW9uIG9mCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGNyZWF0ZSBzZXJ2ZXIgZm9yIGEgYEhvc3RNYW5hZ2VyYCBvYmplY3QKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgRGVwZW5kcyBvbiBgbXVsdGlwcm9jZXNzaW5nYCBwYWNrYWdlIC0tIHRlc3RlZCB3aXRoIGBwcm9jZXNzaW5nLTAuNjBgCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgaG9zdG5hbWVgIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBob3N0LiAgSWYgaG9zdG5hbWUgaXMgbm90CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGluIHRoZSBvcmlnaW5hbCBvcmRlciB0aGVuIGNvbnNpZGVyIHVzaW5nIGBQb29sLm1hcCgpYCBvcgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIj4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsICgyMCwpKSAgICAgIyBlcXVpdiB0byBgbFsyMF1gIgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIj4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldHNsaWNlX18nLCAoMiwgNykpICAgIyBlcXVpdiB0byBgbFsyOjddYCIKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgTm90IHN1cmUgaWYgd2Ugc2hvdWxkIHN5bmNocm9uaXplIGFjY2VzcyB0byBgc29ja2V0LmFjY2VwdCgpYCBtZXRob2QgYnkKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgb2JqZWN0LiAgKFdlIGltcG9ydCBgbXVsdGlwcm9jZXNzaW5nLnJlZHVjdGlvbmAgdG8gZW5hYmxlIHRoaXMgcGlja2xpbmcuKQorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgUG9vbC5pbWFwKClgICh3aGljaCB3aWxsIHNhdmUgb24gdGhlIGFtb3VudCBvZiBjb2RlIG5lZWRlZCBhbnl3YXkpLgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLDpxdWV1ZSwiPj4+IFF1ZXVlTWFuYWdlci5yZWdpc3RlcignZ2V0X3F1ZXVlJywgY2FsbGFibGU9bGFtYmRhOnF1ZXVlKSIKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZigpYCBhbmQgYGcoKWAgYWNjZXNzaWJsZSB2aWEgcHJveHkKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZygpYCBhbmQgYF9oKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gYmF6OyB1c2UgYEdlbmVyYXRvclByb3h5YCB0byBtYWtlIHByb3hpZXMKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLGBDbHVzdGVyYCBpcyBhIHN1YmNsYXNzIG9mIGBTeW5jTWFuYWdlcmAgc28gaXQgYWxsb3dzIGNyZWF0aW9uIG9mCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgaG9zdG5hbWVgIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBob3N0LiAgSWYgaG9zdG5hbWUgaXMgbm90CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgc2xvdHNgIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHNsb3RzIGZvciBwcm9jZXNzZXMgb24KK2xpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLDpieXRlcworbGlicmFyeS9ubnRwbGliLCw6Ynl0ZXMsIlsneHJlZicsICdmcm9tJywgJzpsaW5lcycsICc6Ynl0ZXMnLCAncmVmZXJlbmNlcycsICdkYXRlJywgJ21lc3NhZ2UtaWQnLCAnc3ViamVjdCddIgorbGlicmFyeS9ubnRwbGliLCw6bGluZXMsOmxpbmVzCitsaWJyYXJ5L25udHBsaWIsLDpsaW5lcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCiBsaWJyYXJ5L29wdHBhcnNlLCw6bGVuLCJkZWwgcGFyc2VyLnJhcmdzWzpsZW4odmFsdWUpXSIKIGxpYnJhcnkvb3MucGF0aCwsOmZvbyxjOmZvbwogbGlicmFyeS9wYXJzZXIsLGAsIiIiTWFrZSBhIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIGFuIGFyZ3VtZW50IHRvIHRoZSBleHBvbmVudCBgZXhwYC4iIiIKK2xpYnJhcnkvcGRiLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubworbGlicmFyeS9wZGIsLDpsaW5lbm8sW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXQorbGlicmFyeS9waWNrbGUsLDptZW1vcnksImNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoIiI6bWVtb3J5OiIiKSIKIGxpYnJhcnkvcG9zaXgsLGAsIkNGTEFHUz0iImBnZXRjb25mIExGU19DRkxBR1NgIiIgT1BUPSIiLWcgLU8yICRDRkxBR1MiIiIKLWxpYnJhcnkvcHJvZmlsZSwsOmxpbmVubyxuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInY2xhc3NpZmllcnMnOiBbJ0RldmVsb3BtZW50IFN0YXR1cyA6OiA0IC0gQmV0YScsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycycsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogTUlUIExpY2Vuc2UnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ05hdHVyYWwgTGFuZ3VhZ2UgOjogRW5nbGlzaCcsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInT3BlcmF0aW5nIFN5c3RlbSA6OiBPUyBJbmRlcGVuZGVudCcsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywiCitsaWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMicsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNicsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNycsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzJywiCitsaWJyYXJ5L3BwcmludCwyMDksOjosIidUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMgOjogUHl0aG9uIE1vZHVsZXMnXSwiCiBsaWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQorbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLG5jYWxscyAgdG90dGltZSAgcGVyY2FsbCAgY3VtdGltZSAgcGVyY2FsbCBmaWxlbmFtZTpsaW5lbm8oZnVuY3Rpb24pCitsaWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sIihzb3J0IGJ5IGZpbGVuYW1lOmxpbmVubyksIgogbGlicmFyeS9weWV4cGF0LCw6ZWxlbTEsPHB5OmVsZW0xIC8+CiBsaWJyYXJ5L3B5ZXhwYXQsLDpweSwieG1sbnM6cHkgPSAiImh0dHA6Ly93d3cucHl0aG9uLm9yZy9ucy8iIj4iCiBsaWJyYXJ5L3JlcHIsLGAsInJldHVybiBgb2JqYCIKIGxpYnJhcnkvc210cGxpYiwsOnBvcnQsImFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydCBzZXJ2ZXIuIgorbGlicmFyeS9zbXRwbGliLCw6cG9ydCxtZXRob2QgbXVzdCBzdXBwb3J0IHRoYXQgYXMgd2VsbCBhcyBhIHJlZ3VsYXIgaG9zdDpwb3J0CitsaWJyYXJ5L3NvY2tldCwsOjosIigxMCwgMSwgNiwgJycsICgnMjAwMTo4ODg6MjAwMDpkOjphMicsIDgwLCAwLCAwKSldIgogbGlicmFyeS9zb2NrZXQsLDo6LCc1YWVmOjJiOjo4JwotbGlicmFyeS9zcWxpdGUzLCw6bWVtb3J5LAorbGlicmFyeS9zb2NrZXQsLDpjYW4sInJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkiCitsaWJyYXJ5L3NvY2tldCwsOmxlbixmZHMuZnJvbXN0cmluZyhjbXNnX2RhdGFbOmxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCitsaWJyYXJ5L3NxbGl0ZTMsLDphZ2UsImN1ci5leGVjdXRlKCIic2VsZWN0ICogZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIiIsIHsiIndobyIiOiB3aG8sICIiYWdlIiI6IGFnZX0pIgogbGlicmFyeS9zcWxpdGUzLCw6YWdlLCJzZWxlY3QgbmFtZV9sYXN0LCBhZ2UgZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIgotbGlicmFyeS9zcWxpdGUzLCw6d2hvLCJzZWxlY3QgbmFtZV9sYXN0LCBhZ2UgZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIgotbGlicmFyeS9zc2wsLDpNeSwiT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KSBbSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkXTpNeSBPcmdhbml6YXRpb24sIEluYy4iCitsaWJyYXJ5L3NxbGl0ZTMsLDptZW1vcnksCitsaWJyYXJ5L3NxbGl0ZTMsLDp3aG8sImN1ci5leGVjdXRlKCIic2VsZWN0ICogZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIiIsIHsiIndobyIiOiB3aG8sICIiYWdlIiI6IGFnZX0pIgogbGlicmFyeS9zc2wsLDpNeSwiT3JnYW5pemF0aW9uYWwgVW5pdCBOYW1lIChlZywgc2VjdGlvbikgW106TXkgR3JvdXAiCitsaWJyYXJ5L3NzbCwsOk15LCJPcmdhbml6YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpIFtJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGRdOk15IE9yZ2FuaXphdGlvbiwgSW5jLiIKIGxpYnJhcnkvc3NsLCw6bXlzZXJ2ZXIsIkNvbW1vbiBOYW1lIChlZywgWU9VUiBuYW1lKSBbXTpteXNlcnZlci5teWdyb3VwLm15b3JnYW5pemF0aW9uLmNvbSIKIGxpYnJhcnkvc3NsLCw6TXlTdGF0ZSxTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChmdWxsIG5hbWUpIFtTb21lLVN0YXRlXTpNeVN0YXRlCiBsaWJyYXJ5L3NzbCwsOm9wcyxFbWFpbCBBZGRyZXNzIFtdOm9wc0BteXNlcnZlci5teWdyb3VwLm15b3JnYW5pemF0aW9uLmNvbQogbGlicmFyeS9zc2wsLDpTb21lLCJMb2NhbGl0eSBOYW1lIChlZywgY2l0eSkgW106U29tZSBDaXR5IgogbGlicmFyeS9zc2wsLDpVUyxDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpIFtBVV06VVMKK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBhWzo6LTFdLnRvbGlzdCgpCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gYVs6OjJdLnRvbGlzdCgpCitsaWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGhhc2godls6Oi0yXSkgPT0gaGFzaChiJ2FiY2VmZydbOjotMl0pCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6bGVuLHNbbGVuKHMpOmxlbihzKV0KLWxpYnJhcnkvc3RkdHlwZXMsLDpsZW4sc1tsZW4ocyk6bGVuKHMpXQorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IHkgPSBtWzo6Ml0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiB6ID0geVs6Oi0yXQogbGlicmFyeS9zdHJpbmcsLDplbmQsc1tzdGFydDplbmRdCi1saWJyYXJ5L3N0cmluZywsOmVuZCxzW3N0YXJ0OmVuZF0KLWxpYnJhcnkvc3VicHJvY2VzcywsYCwib3V0cHV0PWBteWNtZCBteWFyZ2AiCiBsaWJyYXJ5L3N1YnByb2Nlc3MsLGAsIm91dHB1dD1gZG1lc2cgfCBncmVwIGhkYWAiCitsaWJyYXJ5L3N1YnByb2Nlc3MsLGAsIm91dHB1dD1gbXljbWQgbXlhcmdgIgorbGlicmFyeS90YXJmaWxlLCw6YnoyLAogbGlicmFyeS90YXJmaWxlLCw6Y29tcHJlc3Npb24sZmlsZW1vZGVbOmNvbXByZXNzaW9uXQogbGlicmFyeS90YXJmaWxlLCw6Z3osCi1saWJyYXJ5L3RhcmZpbGUsLDpiejIsCitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwnYTp4eicKK2xpYnJhcnkvdGFyZmlsZSwsOnh6LCdyOnh6JworbGlicmFyeS90YXJmaWxlLCw6eHosJ3c6eHonCiBsaWJyYXJ5L3RpbWUsLDptbSwKIGxpYnJhcnkvdGltZSwsOnNzLAogbGlicmFyeS90dXJ0bGUsLDo6LEV4YW1wbGU6OgotbGlicmFyeS91cmxsaWIsLDpwb3J0LDpwb3J0CiBsaWJyYXJ5L3VybGxpYjIsLDpwYXNzd29yZCwiIiJqb2U6cGFzc3dvcmRAcHl0aG9uLm9yZyIiIgorbGlicmFyeS91cmxsaWIsLDpwb3J0LDpwb3J0CitsaWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6Y2xvc2UsQ29ubmVjdGlvbjpjbG9zZQorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmxhbmcsInhtbG5zPSIiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIiIHhtbDpsYW5nPSIiZW4iIiBsYW5nPSIiZW4iIj5cblxuPGhlYWQ+XG4iCitsaWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKIGxpYnJhcnkvdXVpZCwsOnV1aWQsdXJuOnV1aWQ6MTIzNDU2NzgtMTIzNC01Njc4LTEyMzQtNTY3ODEyMzQ1Njc4Ci1saWJyYXJ5L3htbHJwY2xpYiwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAotbGlicmFyeS94bWxycGNsaWIsLDpwYXNzLHVzZXI6cGFzcwotbGlicmFyeS94bWxycGNsaWIsLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAorbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyx1c2VyOnBhc3MKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAorbGljZW5zZSwsYCwiYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIgorbGljZW5zZSwsYCwiVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwiCitsaWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKK2xpY2Vuc2UsLGAsVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorbGljZW5zZSwsYCwqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQogbGljZW5zZSwsYCxUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogbGljZW5zZSwsOnpvb2tvLG1haWx0bzp6b29rb0B6b29rby5jb20KLWxpY2Vuc2UsLGAsVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotcmVmZXJlbmNlL2RhdGFtb2RlbCwsOnN0ZXAsYVtpOmo6c3RlcF0KIHJlZmVyZW5jZS9kYXRhbW9kZWwsLDptYXgsCi1yZWZlcmVuY2UvZXhwcmVzc2lvbnMsLDppbmRleCx4W2luZGV4OmluZGV4XQorcmVmZXJlbmNlL2RhdGFtb2RlbCwsOnN0ZXAsYVtpOmo6c3RlcF0KIHJlZmVyZW5jZS9leHByZXNzaW9ucywsOmRhdHVtLHtrZXk6ZGF0dW0uLi59CiByZWZlcmVuY2UvZXhwcmVzc2lvbnMsLGAsYGV4cHJlc3Npb25zLi4uYAorcmVmZXJlbmNlL2V4cHJlc3Npb25zLCw6aW5kZXgseFtpbmRleDppbmRleF0KIHJlZmVyZW5jZS9ncmFtbWFyLCw6b3V0cHV0LCNkaWFncmFtOm91dHB1dAogcmVmZXJlbmNlL2dyYW1tYXIsLDpydWxlcywjZGlhZ3JhbTpydWxlcwotcmVmZXJlbmNlL2dyYW1tYXIsLDp0b2tlbiwjZGlhZ3JhbTp0b2tlbgogcmVmZXJlbmNlL2dyYW1tYXIsLGAsJ2AnIHRlc3RsaXN0MSAnYCcKLXJlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLCw6ZmlsZWVuY29kaW5nLCMgdmltOmZpbGVlbmNvZGluZz08ZW5jb2RpbmctbmFtZT4KK3JlZmVyZW5jZS9ncmFtbWFyLCw6dG9rZW4sI2RpYWdyYW06dG9rZW4KIHJlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLCxgLCIsICAgICAgIDogICAgICAgLiAgICAgICBgICAgICAgID0gICAgICAgOyIKLXR1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLCw6dmFsdWUsa2V5OnZhbHVlIHBhaXJzIHdpdGhpbiB0aGUgYnJhY2VzIGFkZHMgaW5pdGlhbCBrZXk6dmFsdWUgcGFpcnMKK3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLCxgLCQgICAgICAgPyAgICAgICBgCityZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsOmZpbGVlbmNvZGluZywjIHZpbTpmaWxlZW5jb2Rpbmc9PGVuY29kaW5nLW5hbWU+CiB0dXRvcmlhbC9kYXRhc3RydWN0dXJlcywsOnZhbHVlLEl0IGlzIGFsc28gcG9zc2libGUgdG8gZGVsZXRlIGEga2V5OnZhbHVlCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsImZpZWxkcyA9IHN0cnVjdC51bnBhY2soJzxJSUlISCcsIGRhdGFbc3RhcnQ6c3RhcnQrMTZdKSIKLXR1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxleHRyYSA9IGRhdGFbc3RhcnQ6c3RhcnQrZXh0cmFfc2l6ZV0KLXR1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxmaWxlbmFtZSA9IGRhdGFbc3RhcnQ6c3RhcnQrZmlsZW5hbWVzaXplXQordHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMsLDp2YWx1ZSxrZXk6dmFsdWUgcGFpcnMgd2l0aGluIHRoZSBicmFjZXMgYWRkcyBpbml0aWFsIGtleTp2YWx1ZSBwYWlycwogdHV0b3JpYWwvc3RkbGliMiwsOmNvbmZpZywibG9nZ2luZy53YXJuaW5nKCdXYXJuaW5nOmNvbmZpZyBmaWxlICVzIG5vdCBmb3VuZCcsICdzZXJ2ZXIuY29uZicpIgogdHV0b3JpYWwvc3RkbGliMiwsOmNvbmZpZyxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKIHR1dG9yaWFsL3N0ZGxpYjIsLDpDcml0aWNhbCxDUklUSUNBTDpyb290OkNyaXRpY2FsIGVycm9yIC0tIHNodXR0aW5nIGRvd24KQEAgLTE0MSwxNSArMzExLDE2IEBACiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxDUklUSUNBTDpyb290OkNyaXRpY2FsIGVycm9yIC0tIHNodXR0aW5nIGRvd24KIHR1dG9yaWFsL3N0ZGxpYjIsLDpyb290LEVSUk9SOnJvb3Q6RXJyb3Igb2NjdXJyZWQKIHR1dG9yaWFsL3N0ZGxpYjIsLDpyb290LFdBUk5JTkc6cm9vdDpXYXJuaW5nOmNvbmZpZyBmaWxlIHNlcnZlci5jb25mIG5vdCBmb3VuZAordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LGV4dHJhID0gZGF0YVtzdGFydDpzdGFydCtleHRyYV9zaXplXQordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LCJmaWVsZHMgPSBzdHJ1Y3QudW5wYWNrKCc8SUlJSEgnLCBkYXRhW3N0YXJ0OnN0YXJ0KzE2XSkiCit0dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZmlsZW5hbWUgPSBkYXRhW3N0YXJ0OnN0YXJ0K2ZpbGVuYW1lc2l6ZV0KIHR1dG9yaWFsL3N0ZGxpYjIsLDpXYXJuaW5nLFdBUk5JTkc6cm9vdDpXYXJuaW5nOmNvbmZpZyBmaWxlIHNlcnZlci5jb25mIG5vdCBmb3VuZAotdXNpbmcvY21kbGluZSwsOmxpbmUsZmlsZTpsaW5lOiBjYXRlZ29yeTogbWVzc2FnZQogdXNpbmcvY21kbGluZSwsOmNhdGVnb3J5LGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCit1c2luZy9jbWRsaW5lLCw6ZXJyb3JoYW5kbGVyLDplcnJvcmhhbmRsZXIKIHVzaW5nL2NtZGxpbmUsLDpsaW5lLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCit1c2luZy9jbWRsaW5lLCw6bGluZSxmaWxlOmxpbmU6IGNhdGVnb3J5OiBtZXNzYWdlCiB1c2luZy9jbWRsaW5lLCw6bWVzc2FnZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvY21kbGluZSwsOm1vZHVsZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQotdXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCi11c2luZy93aW5kb3dzLDE2MixgLGBgIHRoaXMgZml4ZXMgc3ludGF4IGhpZ2hsaWdodGluZyBlcnJvcnMgaW4gc29tZSBlZGl0b3JzIGR1ZSB0byB0aGUgXFxcXCBoYWNrZXJ5Ci11c2luZy93aW5kb3dzLDE3MCxgLGBgCiB3aGF0c25ldy8yLjAsNDE4LDpsZW4sCiB3aGF0c25ldy8yLjMsLDo6LAogd2hhdHNuZXcvMi4zLCw6Y29uZmlnLApAQCAtMTYzLDExMyArMzM0LDM4IEBACiB3aGF0c25ldy8yLjUsLDptZW1vcnksOm1lbW9yeToKIHdoYXRzbmV3LzIuNSwsOnN0ZXAsW3N0YXJ0OnN0b3A6c3RlcF0KIHdoYXRzbmV3LzIuNSwsOnN0b3AsW3N0YXJ0OnN0b3A6c3RlcF0KLWRpc3R1dGlscy9leGFtcGxlcywyNjcsYCxUaGlzIGlzIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBmb29iYXJgYCBwYWNrYWdlLgotZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJwcmludCgobGFtYmRhIFJ1LFJvLEl1LElvLElNLFN4LFN5OnJlZHVjZShsYW1iZGEgeCx5OngreSxtYXAobGFtYmRhIHksIgotZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJTeD1TeCxTeT1TeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB4LHhjPVJ1LHljPXljLFJ1PVJ1LFJvPVJvLCIKLWZhcS9wcm9ncmFtbWluZywsOmNociwiPj00LjApIG9yIDErZih4Yyx5Yyx4KngteSp5K3hjLDIuMCp4KnkreWMsay0xLGYpOmYoeGMseWMseCx5LGssZik6Y2hyKCIKLWZhcS9wcm9ncmFtbWluZywsOjosZm9yIHggaW4gc2VxdWVuY2VbOjotMV06Ci1mYXEvd2luZG93cywyMjksOkVPRixAc2V0bG9jYWwgZW5hYmxlZXh0ZW5zaW9ucyAmIHB5dGhvbiAteCAlfmYwICUqICYgZ290byA6RU9GCi1mYXEvd2luZG93cywzOTMsOlJFRywucHkgOlJFR19TWjogYzpcPHBhdGggdG8gcHl0aG9uPlxweXRob24uZXhlIC11ICVzICVzCi1saWJyYXJ5L2Jpc2VjdCwzMiw6aGksYWxsKHZhbCA+PSB4IGZvciB2YWwgaW4gYVtpOmhpXSkKLWxpYnJhcnkvYmlzZWN0LDQyLDpoaSxhbGwodmFsID4geCBmb3IgdmFsIGluIGFbaTpoaV0pCi1saWJyYXJ5L2h0dHAuY2xpZW50LDUyLDpwb3J0LGhvc3Q6cG9ydAotbGlicmFyeS9ubnRwbGliLCw6Ynl0ZXMsOmJ5dGVzCi1saWJyYXJ5L25udHBsaWIsLDpsaW5lcyw6bGluZXMKLWxpYnJhcnkvbm50cGxpYiwsOmxpbmVzLCJbJ3hyZWYnLCAnZnJvbScsICc6bGluZXMnLCAnOmJ5dGVzJywgJ3JlZmVyZW5jZXMnLCAnZGF0ZScsICdtZXNzYWdlLWlkJywgJ3N1YmplY3QnXSIKLWxpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLCJbJ3hyZWYnLCAnZnJvbScsICc6bGluZXMnLCAnOmJ5dGVzJywgJ3JlZmVyZW5jZXMnLCAnZGF0ZScsICdtZXNzYWdlLWlkJywgJ3N1YmplY3QnXSIKLWxpYnJhcnkvcGlja2xlLCw6bWVtb3J5LCJjb25uID0gc3FsaXRlMy5jb25uZWN0KCIiOm1lbW9yeToiIikiCi1saWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sIihzb3J0IGJ5IGZpbGVuYW1lOmxpbmVubyksIgotbGlicmFyeS9zb2NrZXQsLDo6LCIoMTAsIDEsIDYsICcnLCAoJzIwMDE6ODg4OjIwMDA6ZDo6YTInLCA4MCwgMCwgMCkpXSIKLWxpYnJhcnkvc3RkdHlwZXMsLDplbmQsc1tzdGFydDplbmRdCi1saWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmNsb3NlLENvbm5lY3Rpb246Y2xvc2UKLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpwYXNzd29yZCwiIiJqb2U6cGFzc3dvcmRAcHl0aG9uLm9yZyIiIgotbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmxhbmcsInhtbG5zPSIiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIiIHhtbDpsYW5nPSIiZW4iIiBsYW5nPSIiZW4iIj5cblxuPGhlYWQ+XG4iCi1saWJyYXJ5L3htbHJwYy5jbGllbnQsMTAzLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjLmNsaWVudCwxMDMsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAotbGlicmFyeS94bWxycGMuY2xpZW50LDEwMyw6cGFzcyx1c2VyOnBhc3MKLWxpY2Vuc2UsLGAsKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLWxpY2Vuc2UsLGAsKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBBUyBJUycnIEFORAotbGljZW5zZSwsYCwiYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIgotbGljZW5zZSwsYCwiVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwiCi1yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcyw3MDQsYCwkICAgICAgID8gICAgICAgYAotd2hhdHNuZXcvMi43LDczNSw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jwotd2hhdHNuZXcvMi43LDg2Miw6OiwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDg2Miw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCi13aGF0c25ldy8yLjcsMTYxOSw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQogd2hhdHNuZXcvMi43LDE2MTksOjosIlBhcnNlUmVzdWx0KHNjaGVtZT0naHR0cCcsIG5ldGxvYz0nWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0nLCIKLWxpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgU2V0IHRoZSBvcHRpb25hbCBgcmF3YCBhcmd1bWVudCBvZiBnZXQoKSB0byBUcnVlIGlmIHlvdSB3aXNoIHRvIGRpc2FibGUKLWxpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgVGhlIG9wdGlvbmFsIGB2YXJzYCBhcmd1bWVudCBpcyBhIGRpY3Qgd2l0aCBtZW1iZXJzIHRoYXQgd2lsbCB0YWtlCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgZmFsbGJhY2tgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYSBmYWxsYmFjayB2YWx1ZQotbGlicmFyeS9jb25maWdwYXJzZXIsLDpvcHRpb24sJHtzZWN0aW9uOm9wdGlvbn0KLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6c3lzdGVtLHBhdGg6ICR7Q29tbW9uOnN5c3RlbV9kaXJ9L0xpYnJhcnkvRnJhbWV3b3Jrcy8KLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6aG9tZSxteV9kaXI6ICR7Q29tbW9uOmhvbWVfZGlyfS90d29zaGVkcwotbGlicmFyeS9jb25maWdwYXJzZXIsLDpwYXRoLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6UHl0aG9uLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KLWxpYnJhcnkvcGRiLCw6bGluZW5vLFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV0KLWxpYnJhcnkvcGRiLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubwotbGlicmFyeS9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKLWxpYnJhcnkvbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotbGlicmFyeS9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAotbGlicmFyeS9sb2dnaW5nLCw6RG9pbmcsSU5GTzpyb290OkRvaW5nIHNvbWV0aGluZwotbGlicmFyeS9sb2dnaW5nLCw6RmluaXNoZWQsSU5GTzpyb290OkZpbmlzaGVkCi1saWJyYXJ5L2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWxpYnJhcnkvbG9nZ2luZywsOlNvLElORk86U28gc2hvdWxkIHRoaXMKLWxpYnJhcnkvbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1saWJyYXJ5L2xvZ2dpbmcsLDptZXNzYWdlLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKLXdoYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwuLi4gICAke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKLXdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLC4uLiB6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Ci13aGF0c25ldy8zLjIsLDpwcmVmaXgsLi4uIHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotaG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290OldhdGNoIG91dCEKLWhvd3RvL2xvZ2dpbmcsLDpXYXRjaCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQotaG93dG8vbG9nZ2luZywsOnJvb3QsREVCVUc6cm9vdDpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGdvIHRvIHRoZSBsb2cgZmlsZQotaG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6cm9vdDpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGdvIHRvIHRoZSBsb2cgZmlsZQotaG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCi1ob3d0by9sb2dnaW5nLCw6U28sSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCi1ob3d0by9sb2dnaW5nLCw6cm9vdCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOnJvb3Q6QW5kIHRoaXMsIHRvbyIKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTdGFydGVkCi1ob3d0by9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAotaG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OkRvaW5nIHNvbWV0aGluZwotaG93dG8vbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpGaW5pc2hlZAotaG93dG8vbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAotaG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQotaG93dG8vbG9nZ2luZywsOkxvb2ssV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQotaG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6VGhpcyBtZXNzYWdlIHNob3VsZCBhcHBlYXIgb24gdGhlIGNvbnNvbGUKLWhvd3RvL2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCi1ob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6bG9nZ2VyLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKLWhvd3RvL2xvZ2dpbmcsLDptZXNzYWdlLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKLWxpYnJhcnkvbG9nZ2luZy5oYW5kbGVycywsOnBvcnQsaG9zdDpwb3J0Ci1saWJyYXJ5L2ltYXBsaWIsMTE2LDpNTSwiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKLWxpYnJhcnkvaW1hcGxpYiwxMTYsOlNTLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgotd2hhdHNuZXcvMy4yLCw6OiwiJCBleHBvcnQgUFlUSE9OV0FSTklOR1M9J2lnbm9yZTo6UnVudGltZVdhcm5pbmc6OixvbmNlOjpVbmljb2RlV2FybmluZzo6JyIKLWhvd3RvL3B5cG9ydGluZyw3NSw6OiwjIG1ha2Ugc3VyZSB0byB1c2UgOjogUHl0aG9uICphbmQqIDo6IFB5dGhvbiA6OiAzIHNvCi1ob3d0by9weXBvcnRpbmcsNzUsOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKLWhvd3RvL3B5cG9ydGluZyw3NSw6OiwnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMnCi13aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igotd2hhdHNuZXcvMy4yLCw6ZGlyZWN0b3J5LCR7YnVpbGRvdXQ6ZGlyZWN0b3J5fS9kb3dubG9hZHMvZGlzdAotd2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQotd2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotd2hhdHNuZXcvMy4yLCw6YmVlZiw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpjYWZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmFmZmUsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6ZGVhZiw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpmZWVkLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmJlZWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKLXdoYXRzbmV3LzMuMiwsOmNhZmUsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzIuNywxNjE5LDo6LD4+PiB1cmxwYXJzZS51cmxwYXJzZSgnaHR0cDovL1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdL2ZvbycpCit3aGF0c25ldy8yLjcsNzM1LDpTdW5kYXksJzIwMDk6NDpTdW5kYXknCit3aGF0c25ldy8yLjcsODYyLDpDb29raWUsImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKK3doYXRzbmV3LzIuNyw4NjIsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKIHdoYXRzbmV3LzMuMiwsOmFmZmUsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmFmZmUsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6YmVlZiwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgord2hhdHNuZXcvMy4yLCw6YmVlZiw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCit3aGF0c25ldy8zLjIsLDpjYWZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDpjYWZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKIHdoYXRzbmV3LzMuMiwsOmRlYWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmRlYWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6ZGlyZWN0b3J5LC4uLiAgICR7YnVpbGRvdXQ6ZGlyZWN0b3J5fS9kb3dubG9hZHMvZGlzdAord2hhdHNuZXcvMy4yLCw6ZGlyZWN0b3J5LCR7YnVpbGRvdXQ6ZGlyZWN0b3J5fS9kb3dubG9hZHMvZGlzdAord2hhdHNuZXcvMy4yLCw6OiwiJCBleHBvcnQgUFlUSE9OV0FSTklOR1M9J2lnbm9yZTo6UnVudGltZVdhcm5pbmc6OixvbmNlOjpVbmljb2RlV2FybmluZzo6JyIKIHdoYXRzbmV3LzMuMiwsOmZlZWQsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ2NsYXNzaWZpZXJzJzogWydEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ09wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzIDo6IFB5dGhvbiBNb2R1bGVzJ10sIgord2hhdHNuZXcvMy4yLCw6ZmVlZCw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCit3aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igord2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sLi4uIHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KK3doYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KK3doYXRzbmV3LzMuMiwsOnByZWZpeCwuLi4gem9wZS1jb25mID0gJHtjdXN0b206cHJlZml4fS9ldGMvem9wZS5jb25mCit3aGF0c25ldy8zLjIsLDpwcmVmaXgsem9wZS1jb25mID0gJHtjdXN0b206cHJlZml4fS9ldGMvem9wZS5jb25mCit3aGF0c25ldy9uZXdzLCw6cGxhdGZvcm0sOnBsYXRmb3JtOgord2hhdHNuZXcvbmV3cywsOnBhc3N3b3JkLDogVW5xdW90ZSBiZWZvcmUgYjY0ZW5jb2RpbmcgdXNlcjpwYXNzd29yZCBkdXJpbmcgQmFzaWMKK3doYXRzbmV3L25ld3MsLDpjbG9zZSxDb25uZWN0aW9uOmNsb3NlIGhlYWRlci4KK3doYXRzbmV3L25ld3MsLDpQeXRob25DbWQsIldpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQiCit3aGF0c25ldy9uZXdzLCw6Y2xvc2UsOiBDb25uZWN0aW9uOmNsb3NlIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgord2hhdHNuZXcvbmV3cywsOjosIjogRml4IEZUUCB0ZXN0cyBmb3IgSVB2NiwgYmluZCB0byAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIi4iCit3aGF0c25ldy9uZXdzLCw6dGVzdCw6IHRlc3Rfc3VicHJvY2Vzczp0ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCit3aGF0c25ldy9uZXdzLCw6dGVzdCw6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCit3aGF0c25ldy9uZXdzLCw6T2xpbWl0LERyb3AgLU9QVDpPbGltaXQgY29tcGlsZXIgb3B0aW9uLgord2hhdHNuZXcvbmV3cywsOk1BWFlFQVIsdGltZWRlbHRhIGZyb20gZGF0ZSBvciBkYXRldGltZSBmYWxscyBvdXRzaWRlIG9mIHRoZSBNSU5ZRUFSOk1BWFlFQVIgcmFuZ2UuCit3aGF0c25ldy9uZXdzLCw6YnoyLHdpdGggbW9kZSAncicgb3IgJ3I6YnoyJyBhbmQgYSBmaWxlb2JqIGFyZ3VtZW50IHRoYXQgY29udGFpbmVkIG5vIGRhdGEgb3IKK3doYXRzbmV3L25ld3MsLDpkYjIsOiBBZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4gdG8gc3BlY2lmeQpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0IGIvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0CmluZGV4IGNmZjI3MTAuLjMyODNlNTQgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvY2xhc3Nlcy5yc3QKQEAgLTE4NCw3ICsxODQsNiBAQAogCiAuLiBjb2RlLWJsb2NrOjogbm9uZQogCi0KICAgIEFmdGVyIGxvY2FsIGFzc2lnbm1lbnQ6IHRlc3Qgc3BhbQogICAgQWZ0ZXIgbm9ubG9jYWwgYXNzaWdubWVudDogbm9ubG9jYWwgc3BhbQogICAgQWZ0ZXIgZ2xvYmFsIGFzc2lnbm1lbnQ6IG5vbmxvY2FsIHNwYW0KQEAgLTY5OCw5ICs2OTcsOSBAQAogICAgY2xhc3MgRChDKToKICAgICAgICBwYXNzCiAKLSAgIGZvciBjIGluIFtCLCBDLCBEXToKKyAgIGZvciBjbHMgaW4gW0IsIEMsIERdOgogICAgICAgIHRyeToKLSAgICAgICAgICAgcmFpc2UgYygpCisgICAgICAgICAgIHJhaXNlIGNscygpCiAgICAgICAgZXhjZXB0IEQ6CiAgICAgICAgICAgIHByaW50KCJEIikKICAgICAgICBleGNlcHQgQzoKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CmluZGV4IGUwMDhkZDguLjM2YWJjOWMgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdApAQCAtMTksMTMgKzE5LDEzIEBACiAuLiBtZXRob2Q6OiBsaXN0LmFwcGVuZCh4KQogICAgOm5vaW5kZXg6CiAKLSAgIEFkZCBhbiBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Q7IGVxdWl2YWxlbnQgdG8gYGBhW2xlbihhKTpdID0gW3hdYGAuCisgICBBZGQgYW4gaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LiAgRXF1aXZhbGVudCB0byBgYGFbbGVuKGEpOl0gPSBbeF1gYC4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LmV4dGVuZChMKQogICAgOm5vaW5kZXg6CiAKLSAgIEV4dGVuZCB0aGUgbGlzdCBieSBhcHBlbmRpbmcgYWxsIHRoZSBpdGVtcyBpbiB0aGUgZ2l2ZW4gbGlzdDsgZXF1aXZhbGVudCB0bworICAgRXh0ZW5kIHRoZSBsaXN0IGJ5IGFwcGVuZGluZyBhbGwgdGhlIGl0ZW1zIGluIHRoZSBnaXZlbiBsaXN0LiAgRXF1aXZhbGVudCB0bwogICAgYGBhW2xlbihhKTpdID0gTGBgLgogCiAKQEAgLTQwLDggKzQwLDggQEAKIC4uIG1ldGhvZDo6IGxpc3QucmVtb3ZlKHgpCiAgICA6bm9pbmRleDoKIAotICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiBJdCBpcyBhbiBlcnJvciBpZiB0aGVyZQotICAgaXMgbm8gc3VjaCBpdGVtLgorICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiAgSXQgaXMgYW4gZXJyb3IgaWYKKyAgIHRoZXJlIGlzIG5vIHN1Y2ggaXRlbS4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LnBvcChbaV0pCkBAIC03MCwxMyArNzAsMTQgQEAKIC4uIG1ldGhvZDo6IGxpc3Quc29ydCgpCiAgICA6bm9pbmRleDoKIAotICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QsIGluIHBsYWNlLgorICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QgaW4gcGxhY2UuCiAKIAogLi4gbWV0aG9kOjogbGlzdC5yZXZlcnNlKCkKICAgIDpub2luZGV4OgogCi0gICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCwgaW4gcGxhY2UuCisgICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCBpbiBwbGFjZS4KKwogCiBBbiBleGFtcGxlIHRoYXQgdXNlcyBtb3N0IG9mIHRoZSBsaXN0IG1ldGhvZHM6OgogCkBAIC05OSw2ICsxMDAsMTAgQEAKICAgID4+PiBhCiAgICBbLTEsIDEsIDY2LjI1LCAzMzMsIDMzMywgMTIzNC41XQogCitZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgbWV0aG9kcyBsaWtlIGBgaW5zZXJ0YGAsIGBgcmVtb3ZlYGAgb3IgYGBzb3J0YGAgdGhhdAorbW9kaWZ5IHRoZSBsaXN0IGhhdmUgbm8gcmV0dXJuIHZhbHVlIHByaW50ZWQgLS0gdGhleSByZXR1cm4gYGBOb25lYGAuIFsxXV8gIFRoaXMKK2lzIGEgZGVzaWduIHByaW5jaXBsZSBmb3IgYWxsIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmVzIGluIFB5dGhvbi4KKwogCiAuLiBfdHV0LWxpc3RzLWFzLXN0YWNrczoKIApAQCAtNDgwLDcgKzQ4NSw3IEBACiAKIFBlcmZvcm1pbmcgYGBsaXN0KGQua2V5cygpKWBgIG9uIGEgZGljdGlvbmFyeSByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGtleXMKIHVzZWQgaW4gdGhlIGRpY3Rpb25hcnksIGluIGFyYml0cmFyeSBvcmRlciAoaWYgeW91IHdhbnQgaXQgc29ydGVkLCBqdXN0IHVzZQotYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsxXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQorYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsyXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQogZGljdGlvbmFyeSwgdXNlIHRoZSA6a2V5d29yZDpgaW5gIGtleXdvcmQuCiAKIEhlcmUgaXMgYSBzbWFsbCBleGFtcGxlIHVzaW5nIGEgZGljdGlvbmFyeTo6CkBAIC02NzcsNiArNjgyLDkgQEAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsxXSBDYWxsaW5nIGBgZC5rZXlzKClgYCB3aWxsIHJldHVybiBhIDpkZm46YGRpY3Rpb25hcnkgdmlld2Agb2JqZWN0LiAgSXQKKy4uIFsxXSBPdGhlciBsYW5ndWFnZXMgbWF5IHJldHVybiB0aGUgbXV0YXRlZCBvYmplY3QsIHdoaWNoIGFsbG93cyBtZXRob2QKKyAgICAgICBjaGFpbmluZywgc3VjaCBhcyBgYGQtPmluc2VydCgiYSIpLT5yZW1vdmUoImIiKS0+c29ydCgpO2BgLgorCisuLiBbMl0gQ2FsbGluZyBgYGQua2V5cygpYGAgd2lsbCByZXR1cm4gYSA6ZGZuOmBkaWN0aW9uYXJ5IHZpZXdgIG9iamVjdC4gIEl0CiAgICAgICAgc3VwcG9ydHMgb3BlcmF0aW9ucyBsaWtlIG1lbWJlcnNoaXAgdGVzdCBhbmQgaXRlcmF0aW9uLCBidXQgaXRzIGNvbnRlbnRzCiAgICAgICAgYXJlIG5vdCBpbmRlcGVuZGVudCBvZiB0aGUgb3JpZ2luYWwgZGljdGlvbmFyeSAtLSBpdCBpcyBvbmx5IGEgKnZpZXcqLgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKaW5kZXggZDYxZGFmYy4uY2RjMmJmMiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CkBAIC0xMCwxMyArMTAsMTMgQEAKIEludm9raW5nIHRoZSBJbnRlcnByZXRlcgogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuMmAKK1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuM2AKIG9uIHRob3NlIG1hY2hpbmVzIHdoZXJlIGl0IGlzIGF2YWlsYWJsZTsgcHV0dGluZyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW5gIGluIHlvdXIKIFVuaXggc2hlbGwncyBzZWFyY2ggcGF0aCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzdGFydCBpdCBieSB0eXBpbmcgdGhlIGNvbW1hbmQ6CiAKIC4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKLSAgIHB5dGhvbjMuMgorICAgcHl0aG9uMy4zCiAKIHRvIHRoZSBzaGVsbC4gWyNdXyBTaW5jZSB0aGUgY2hvaWNlIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGludGVycHJldGVyIGxpdmVzCiBpcyBhbiBpbnN0YWxsYXRpb24gb3B0aW9uLCBvdGhlciBwbGFjZXMgYXJlIHBvc3NpYmxlOyBjaGVjayB3aXRoIHlvdXIgbG9jYWwKQEAgLTI0LDExICsyNCwxMSBAQAogcG9wdWxhciBhbHRlcm5hdGl2ZSBsb2NhdGlvbi4pCiAKIE9uIFdpbmRvd3MgbWFjaGluZXMsIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGlzIHVzdWFsbHkgcGxhY2VkIGluCi06ZmlsZTpgQzpcXFB5dGhvbjMyYCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKKzpmaWxlOmBDOlxcUHl0aG9uMzNgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQogaW5zdGFsbGVyLiAgVG8gYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgIHlvdSBjYW4gdHlwZSB0aGUgZm9sbG93aW5nCiBjb21tYW5kIGludG8gdGhlIGNvbW1hbmQgcHJvbXB0IGluIGEgRE9TIGJveDo6CiAKLSAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zMgorICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjMzCiAKIFR5cGluZyBhbiBlbmQtb2YtZmlsZSBjaGFyYWN0ZXIgKDprYmQ6YENvbnRyb2wtRGAgb24gVW5peCwgOmtiZDpgQ29udHJvbC1aYCBvbgogV2luZG93cykgYXQgdGhlIHByaW1hcnkgcHJvbXB0IGNhdXNlcyB0aGUgaW50ZXJwcmV0ZXIgdG8gZXhpdCB3aXRoIGEgemVybyBleGl0CkBAIC05NSw4ICs5NSw4IEBACiBwcmludHMgYSB3ZWxjb21lIG1lc3NhZ2Ugc3RhdGluZyBpdHMgdmVyc2lvbiBudW1iZXIgYW5kIGEgY29weXJpZ2h0IG5vdGljZQogYmVmb3JlIHByaW50aW5nIHRoZSBmaXJzdCBwcm9tcHQ6OgogCi0gICAkIHB5dGhvbjMuMgotICAgUHl0aG9uIDMuMi4zIChkZWZhdWx0LCBNYXkgIDMgMjAxMiwgMTU6NTQ6NDIpCisgICAkIHB5dGhvbjMuMworICAgUHl0aG9uIDMuMyAoZGVmYXVsdCwgU2VwIDI0IDIwMTIsIDA5OjI1OjA0KQogICAgW0dDQyA0LjYuM10gb24gbGludXgyCiAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICA+Pj4KQEAgLTE0OSw3ICsxNDksNyBAQAogT24gQlNEJ2lzaCBVbml4IHN5c3RlbXMsIFB5dGhvbiBzY3JpcHRzIGNhbiBiZSBtYWRlIGRpcmVjdGx5IGV4ZWN1dGFibGUsIGxpa2UKIHNoZWxsIHNjcmlwdHMsIGJ5IHB1dHRpbmcgdGhlIGxpbmUgOjoKIAotICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMgorICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMwogCiAoYXNzdW1pbmcgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaXMgb24gdGhlIHVzZXIncyA6ZW52dmFyOmBQQVRIYCkgYXQgdGhlIGJlZ2lubmluZwogb2YgdGhlIHNjcmlwdCBhbmQgZ2l2aW5nIHRoZSBmaWxlIGFuIGV4ZWN1dGFibGUgbW9kZS4gIFRoZSBgYCMhYGAgbXVzdCBiZSB0aGUKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0IGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKaW5kZXggYjZkOTRhYy4uYzA3YTY2OCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKQEAgLTM5MCw3ICszOTAsNyBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgOnJlZjpgdHlwZXNzZXFgCisgICA6cmVmOmB0ZXh0c2VxYAogICAgICAgU3RyaW5ncyBhcmUgZXhhbXBsZXMgb2YgKnNlcXVlbmNlIHR5cGVzKiwgYW5kIHN1cHBvcnQgdGhlIGNvbW1vbgogICAgICAgb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgc3VjaCB0eXBlcy4KIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAppbmRleCAxMjhlNmE2Li4xZWJmNzkyIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdApAQCAtMTUsNyArMTUsNyBAQAogCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gb3MuZ2V0Y3dkKCkgICAgICAjIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgJ0M6XFxQeXRob24zMScKKyAgICdDOlxcUHl0aG9uMzMnCiAgICA+Pj4gb3MuY2hkaXIoJy9zZXJ2ZXIvYWNjZXNzbG9ncycpICAgIyBDaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogICAgPj4+IG9zLnN5c3RlbSgnbWtkaXIgdG9kYXknKSAgICMgUnVuIHRoZSBjb21tYW5kIG1rZGlyIGluIHRoZSBzeXN0ZW0gc2hlbGwKICAgIDAKQEAgLTIwMyw3ICsyMDMsNyBAQAogPT09PT09PT09PT09PT09PQogCiBDb21tb24gZGF0YSBhcmNoaXZpbmcgYW5kIGNvbXByZXNzaW9uIGZvcm1hdHMgYXJlIGRpcmVjdGx5IHN1cHBvcnRlZCBieSBtb2R1bGVzCi1pbmNsdWRpbmc6IDptb2Q6YHpsaWJgLCA6bW9kOmBnemlwYCwgOm1vZDpgYnoyYCwgOm1vZDpgemlwZmlsZWAgYW5kCitpbmNsdWRpbmc6IDptb2Q6YHpsaWJgLCA6bW9kOmBnemlwYCwgOm1vZDpgYnoyYCwgOm1vZDpgbHptYWAsIDptb2Q6YHppcGZpbGVgIGFuZAogOm1vZDpgdGFyZmlsZWAuIDo6CiAKICAgID4+PiBpbXBvcnQgemxpYgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CmluZGV4IDIyNjVjZDAuLjRiNmUwMzYgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKQEAgLTE0MSw3ICsxNDEsOSBAQAogCiAgICBpbXBvcnQgc3RydWN0CiAKLSAgIGRhdGEgPSBvcGVuKCdteWZpbGUuemlwJywgJ3JiJykucmVhZCgpCisgICB3aXRoIG9wZW4oJ215ZmlsZS56aXAnLCAncmInKSBhcyBmOgorICAgICAgIGRhdGEgPSBmLnJlYWQoKQorCiAgICBzdGFydCA9IDAKICAgIGZvciBpIGluIHJhbmdlKDMpOiAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgdGhlIGZpcnN0IDMgZmlsZSBoZWFkZXJzCiAgICAgICAgc3RhcnQgKz0gMTQKQEAgLTI3Myw3ICsyNzUsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGRbJ3ByaW1hcnknXSAgICAgICAgICAgICAgICAjIGVudHJ5IHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQKLSAgICAgRmlsZSAiQzovcHl0aG9uMzEvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXworICAgICBGaWxlICJDOi9weXRob24zMy9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCiAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgIEtleUVycm9yOiAncHJpbWFyeScKIApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0IGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CmluZGV4IGNkNGQwMmYuLjI3MDM2ODQgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9jbWRsaW5lLnJzdAorKysgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKQEAgLTI0LDcgKzI0LDcgQEAKIAogV2hlbiBpbnZva2luZyBQeXRob24sIHlvdSBtYXkgc3BlY2lmeSBhbnkgb2YgdGhlc2Ugb3B0aW9uczo6CiAKLSAgICBweXRob24gWy1iQmRFaGlPUnFzU3V2Vld4P10gWy1jIGNvbW1hbmQgfCAtbSBtb2R1bGUtbmFtZSB8IHNjcmlwdCB8IC0gXSBbYXJnc10KKyAgICBweXRob24gWy1iQmRFaGlPcXNTdXZWV3g/XSBbLWMgY29tbWFuZCB8IC1tIG1vZHVsZS1uYW1lIHwgc2NyaXB0IHwgLSBdIFthcmdzXQogCiBUaGUgbW9zdCBjb21tb24gdXNlIGNhc2UgaXMsIG9mIGNvdXJzZSwgYSBzaW1wbGUgaW52b2NhdGlvbiBvZiBhIHNjcmlwdDo6CiAKQEAgLTIyOSwyMyArMjI5LDIyIEBACiAKIC4uIGNtZG9wdGlvbjo6IC1SCiAKLSAgIFR1cm4gb24gaGFzaCByYW5kb21pemF0aW9uLCBzbyB0aGF0IHRoZSA6bWV0aDpgX19oYXNoX19gIHZhbHVlcyBvZiBzdHIsIGJ5dGVzCi0gICBhbmQgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS4KLSAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZQotICAgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgorICAgS2VwdCBmb3IgY29tcGF0aWJpbGl0eS4gIE9uIFB5dGhvbiAzLjMgYW5kIGdyZWF0ZXIsIGhhc2ggcmFuZG9taXphdGlvbiBpcworICAgdHVybmVkIG9uIGJ5IGRlZmF1bHQuCiAKLSAgIFRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtb2Ytc2VydmljZSBjYXVzZWQgYnkKLSAgIGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGUgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QKLSAgIGNvbnN0cnVjdGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuICBTZWUKKyAgIE9uIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbiwgdGhpcyBvcHRpb24gdHVybnMgb24gaGFzaCByYW5kb21pemF0aW9uLAorICAgc28gdGhhdCB0aGUgOm1ldGg6YF9faGFzaF9fYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUKKyAgIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLiAgQWx0aG91Z2ggdGhleSByZW1haW4KKyAgIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUKKyAgIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgorCisgICBIYXNoIHJhbmRvbWl6YXRpb24gaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYQorICAgZGVuaWFsLW9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGUgd29yc3QKKyAgIGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGNvbnN0cnVjdGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuICBTZWUKICAgIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3IgZGV0YWlscy4KIAotICAgQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgb3JkZXIgaW4gd2hpY2gga2V5cyBhcmUgcmV0cmlldmVkIGZyb20gYQotICAgZGljdC4gIEFsdGhvdWdoIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdAotICAgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IGJ1aWxkcyksIGVub3VnaCByZWFsLXdvcmxkIGNvZGUKLSAgIGltcGxpY2l0bHkgcmVsaWVzIG9uIHRoaXMgbm9uLWd1YXJhbnRlZWQgYmVoYXZpb3IgdGhhdCB0aGUgcmFuZG9taXphdGlvbiBpcwotICAgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLQotICAgU2VlIGFsc28gOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorICAgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgIGFsbG93cyB5b3UgdG8gc2V0IGEgZml4ZWQgdmFsdWUgZm9yIHRoZSBoYXNoCisgICBzZWVkIHNlY3JldC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yLjMKIApAQCAtMjYzLDcgKzI2Miw5IEBACiAuLiBjbWRvcHRpb246OiAtUwogCiAgICBEaXNhYmxlIHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSA6bW9kOmBzaXRlYCBhbmQgdGhlIHNpdGUtZGVwZW5kZW50Ci0gICBtYW5pcHVsYXRpb25zIG9mIDpkYXRhOmBzeXMucGF0aGAgdGhhdCBpdCBlbnRhaWxzLgorICAgbWFuaXB1bGF0aW9ucyBvZiA6ZGF0YTpgc3lzLnBhdGhgIHRoYXQgaXQgZW50YWlscy4gIEFsc28gZGlzYWJsZSB0aGVzZQorICAgbWFuaXB1bGF0aW9ucyBpZiA6bW9kOmBzaXRlYCBpcyBleHBsaWNpdGx5IGltcG9ydGVkIGxhdGVyIChjYWxsCisgICA6ZnVuYzpgc2l0ZS5tYWluYCBpZiB5b3Ugd2FudCB0aGVtIHRvIGJlIHRyaWdnZXJlZCkuCiAKIAogLi4gY21kb3B0aW9uOjogLXUKQEAgLTM1Nyw3ICszNTgsOCBAQAogLi4gY21kb3B0aW9uOjogLVgKIAogICAgUmVzZXJ2ZWQgZm9yIHZhcmlvdXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgb3B0aW9ucy4gIENQeXRob24gY3VycmVudGx5Ci0gICBkZWZpbmVzIG5vbmUgb2YgdGhlbSwgYnV0IGFsbG93cyB0byBwYXNzIGFyYml0cmFyeSB2YWx1ZXMgYW5kIHJldHJpZXZlCisgICBkZWZpbmVzIGp1c3Qgb25lLCB5b3UgY2FuIHVzZSBgYC1YIGZhdWx0aGFuZGVyYGAgdG8gZW5hYmxlCisgICA6ZGF0YTpgZmF1bHRoYW5kbGVyYC4gSXQgYWxzbyBhbGxvd3MgdG8gcGFzcyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2ZQogICAgdGhlbSB0aHJvdWdoIHRoZSA6ZGF0YTpgc3lzLl94b3B0aW9uc2AgZGljdGlvbmFyeS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTQ3NSw3ICs0NzcsNyBAQAogLi4gZW52dmFyOjogUFlUSE9OQ0FTRU9LCiAKICAgIElmIHRoaXMgaXMgc2V0LCBQeXRob24gaWdub3JlcyBjYXNlIGluIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudHMuICBUaGlzCi0gICBvbmx5IHdvcmtzIG9uIFdpbmRvd3MsIE9TIFgsIGFuZCBPUy8yLgorICAgb25seSB3b3JrcyBvbiBXaW5kb3dzIGFuZCBPUyBYLgogCiAKIC4uIGVudnZhcjo6IFBZVEhPTkRPTlRXUklURUJZVEVDT0RFCkBAIC00ODcsOSArNDg5LDggQEAKIAogLi4gZW52dmFyOjogUFlUSE9OSEFTSFNFRUQKIAotICAgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gYGByYW5kb21gYCwgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZSBhcyBzcGVjaWZ5aW5nCi0gICB0aGUgOm9wdGlvbjpgLVJgIG9wdGlvbjogYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLAotICAgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCisgICBJZiB0aGlzIHZhcmlhYmxlIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGBgcmFuZG9tYGAsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWQKKyAgIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLgogCiAgICBJZiA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAgaXMgc2V0IHRvIGFuIGludGVnZXIgdmFsdWUsIGl0IGlzIHVzZWQgYXMgYSBmaXhlZAogICAgc2VlZCBmb3IgZ2VuZXJhdGluZyB0aGUgaGFzaCgpIG9mIHRoZSB0eXBlcyBjb3ZlcmVkIGJ5IHRoZSBoYXNoCkBAIC01MDAsOCArNTAxLDcgQEAKICAgIHZhbHVlcy4KIAogICAgVGhlIGludGVnZXIgbXVzdCBiZSBhIGRlY2ltYWwgbnVtYmVyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XS4gIFNwZWNpZnlpbmcKLSAgIHRoZSB2YWx1ZSAwIHdpbGwgbGVhZCB0byB0aGUgc2FtZSBoYXNoIHZhbHVlcyBhcyB3aGVuIGhhc2ggcmFuZG9taXphdGlvbiBpcwotICAgZGlzYWJsZWQuCisgICB0aGUgdmFsdWUgMCB3aWxsIGRpc2FibGUgaGFzaCByYW5kb21pemF0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIuMwogCkBAIC01MzEsOCArNTMxLDggQEAKIAogICAgRGVmaW5lcyB0aGUgOmRhdGE6YHVzZXIgYmFzZSBkaXJlY3RvcnkgPHNpdGUuVVNFUl9CQVNFPmAsIHdoaWNoIGlzIHVzZWQgdG8KICAgIGNvbXB1dGUgdGhlIHBhdGggb2YgdGhlIDpkYXRhOmB1c2VyIHNpdGUtcGFja2FnZXMgZGlyZWN0b3J5IDxzaXRlLlVTRVJfU0lURT5gCi0gICBhbmQgOnJlZjpgRGlzdHV0aWxzIGluc3RhbGxhdGlvbiBwYXRocyA8aW5zdC1hbHQtaW5zdGFsbC11c2VyPmAgZm9yIGBgcHl0aG9uCi0gICBzZXR1cC5weSBpbnN0YWxsIC0tdXNlcmBgLgorICAgYW5kIDpyZWY6YERpc3R1dGlscyBpbnN0YWxsYXRpb24gcGF0aHMgPGluc3QtYWx0LWluc3RhbGwtdXNlcj5gIGZvcgorICAgYGBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXJgYC4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTU1MSw2ICs1NTEsMTQgQEAKICAgIHNlcGFyYXRlZCBzdHJpbmcsIGl0IGlzIGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyA6b3B0aW9uOmAtV2AgbXVsdGlwbGUKICAgIHRpbWVzLgogCisuLiBlbnZ2YXI6OiBQWVRIT05GQVVMVEhBTkRMRVIKKworICAgSWYgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYCBpcyBjYWxsZWQKKyAgIGF0IHN0YXJ0dXA6IGluc3RhbGwgYSBoYW5kbGVyIGZvciA6Y29uc3Q6YFNJR1NFR1ZgLCA6Y29uc3Q6YFNJR0ZQRWAsCisgICA6Y29uc3Q6YFNJR0FCUlRgLCA6Y29uc3Q6YFNJR0JVU2AgYW5kIDpjb25zdDpgU0lHSUxMYCBzaWduYWxzIHRvIGR1bXAgdGhlCisgICBQeXRob24gdHJhY2ViYWNrLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIDpvcHRpb246YC1YYCBgYGZhdWx0aGFuZGxlcmBgCisgICBvcHRpb24uCisKIAogRGVidWctbW9kZSB2YXJpYWJsZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+CmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvaW5kZXgucnN0IGIvRG9jL3VzaW5nL2luZGV4LnJzdAppbmRleCAxMjAxMTUzLi41MDJhZmE5IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvaW5kZXgucnN0CisrKyBiL0RvYy91c2luZy9pbmRleC5yc3QKQEAgLTE3LDQgKzE3LDQgQEAKICAgIHVuaXgucnN0CiAgICB3aW5kb3dzLnJzdAogICAgbWFjLnJzdAotCisgICBzY3JpcHRzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3NjcmlwdHMucnN0IGIvRG9jL3VzaW5nL3NjcmlwdHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjODc0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKQEAgLTAsMCArMSwxMiBAQAorLi4gX3Rvb2xzLWFuZC1zY3JpcHRzOgorCitBZGRpdGlvbmFsIFRvb2xzIGFuZCBTY3JpcHRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIF9zY3JpcHRzLXB5dmVudjoKKworcHl2ZW52IC0gQ3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluY2x1ZGU6OiB2ZW52LWNyZWF0ZS5pbmMKKwpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYmM5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTAsMCArMSw4NSBAQAorQ3JlYXRpb24gb2YgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudHMgPHZlbnYtZGVmPmAgaXMgZG9uZSBieSBleGVjdXRpbmcgdGhlCitgYHB5dmVudmBgIHNjcmlwdDo6CisKKyAgICBweXZlbnYgL3BhdGgvdG8vbmV3L3ZpcnR1YWwvZW52aXJvbm1lbnQKKworUnVubmluZyB0aGlzIGNvbW1hbmQgY3JlYXRlcyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSAoY3JlYXRpbmcgYW55IHBhcmVudAorZGlyZWN0b3JpZXMgdGhhdCBkb24ndCBleGlzdCBhbHJlYWR5KSBhbmQgcGxhY2VzIGEgYGBweXZlbnYuY2ZnYGAgZmlsZSBpbiBpdAord2l0aCBhIGBgaG9tZWBgIGtleSBwb2ludGluZyB0byB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB0aGUgY29tbWFuZCB3YXMgcnVuCitmcm9tLiAgSXQgYWxzbyBjcmVhdGVzIGEgYGBiaW5gYCAob3IgYGBTY3JpcHRzYGAgb24gV2luZG93cykgc3ViZGlyZWN0b3J5Citjb250YWluaW5nIGEgY29weSBvZiB0aGUgYGBweXRob25gYCBiaW5hcnkgKG9yIGJpbmFyaWVzLCBpbiB0aGUgY2FzZSBvZgorV2luZG93cykuICBJdCBhbHNvIGNyZWF0ZXMgYW4gKGluaXRpYWxseSBlbXB0eSkgYGBsaWIvcHl0aG9uWC5ZL3NpdGUtcGFja2FnZXNgYAorc3ViZGlyZWN0b3J5IChvbiBXaW5kb3dzLCB0aGlzIGlzIGBgTGliXHNpdGUtcGFja2FnZXNgYCkuCisKKy4uIGhpZ2hsaWdodDo6IG5vbmUKKworT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91Citkb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKKworICAgIGM6XFRlbXA+YzpcUHl0aG9uMzNccHl0aG9uIGM6XFB5dGhvbjMzXFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisKK29yIGVxdWl2YWxlbnRseTo6CisKKyAgICBjOlxUZW1wPmM6XFB5dGhvbjMzXHB5dGhvbiAtbSB2ZW52IG15ZW52CisKK1RoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgorCisgICAgdXNhZ2U6IHB5dmVudiBbLWhdIFstLXN5c3RlbS1zaXRlLXBhY2thZ2VzXSBbLS1zeW1saW5rc10gWy0tY2xlYXJdCisgICAgICAgICAgICAgICAgICBbLS11cGdyYWRlXSBFTlZfRElSIFtFTlZfRElSIC4uLl0KKworICAgIENyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KKworICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgRU5WX0RJUiAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgorCisgICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAgLWgsIC0taGVscCAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzIEdpdmUgYWNjZXNzIHRvIHRoZSBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgICAtLXN5bWxpbmtzICAgICAgICAgICAgIFRyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCB3aGVuIHN5bWxpbmtzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KKyAgICAgIC0tY2xlYXIgICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZWQuCisgICAgICAtLXVwZ3JhZGUgICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgorCitJZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZCwgdW5sZXNzCit0aGUgYGAtLWNsZWFyYGAgb3IgYGAtLXVwZ3JhZGVgYCBvcHRpb24gd2FzIHByb3ZpZGVkLgorCitUaGUgY3JlYXRlZCBgYHB5dmVudi5jZmdgYCBmaWxlIGFsc28gaW5jbHVkZXMgdGhlCitgYGluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXNgYCBrZXksIHNldCB0byBgYHRydWVgYCBpZiBgYHZlbnZgYCBpcworcnVuIHdpdGggdGhlIGBgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc2BgIG9wdGlvbiwgYGBmYWxzZWBgIG90aGVyd2lzZS4KKworTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgcHl2ZW52YGAsIGluIHdoaWNoIGNhc2UgYW4gaWRlbnRpY2FsCit2aXJ0dWFsZW52IHdpbGwgYmUgY3JlYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBvcHRpb25zLCBhdCBlYWNoCitwcm92aWRlZCBwYXRoLgorCitPbmNlIGEgdmVudiBoYXMgYmVlbiBjcmVhdGVkLCBpdCBjYW4gYmUgImFjdGl2YXRlZCIgdXNpbmcgYSBzY3JpcHQgaW4gdGhlCit2ZW52J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlIHNjcmlwdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogb24KK2EgUG9zaXggcGxhdGZvcm0sIHlvdSB3b3VsZCB0eXBpY2FsbHkgZG86OgorCisgICAgJCBzb3VyY2UgPHZlbnY+L2Jpbi9hY3RpdmF0ZQorCit3aGVyZWFzIG9uIFdpbmRvd3MsIHlvdSBtaWdodCBkbzo6CisKKyAgICBDOlw+IDx2ZW52Pi9TY3JpcHRzL2FjdGl2YXRlCisKK2lmIHlvdSBhcmUgdXNpbmcgdGhlIGBgY21kLmV4ZWBgIHNoZWxsLCBvciBwZXJoYXBzOjoKKworICAgIFBTIEM6XD4gPHZlbnY+L1NjcmlwdHMvQWN0aXZhdGUucHMxCisKK2lmIHlvdSB1c2UgUG93ZXJTaGVsbC4KKworWW91IGRvbid0IHNwZWNpZmljYWxseSAqbmVlZCogdG8gYWN0aXZhdGUgYW4gZW52aXJvbm1lbnQ7IGFjdGl2YXRpb24ganVzdAorcHJlcGVuZHMgdGhlIHZlbnYncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdCAicHl0aG9uIiBpbnZva2VzIHRoZQordmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4gaW5zdGFsbGVkIHNjcmlwdHMgd2l0aG91dCBoYXZpbmcgdG8KK3VzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzIGluc3RhbGxlZCBpbiBhIHZlbnYgc2hvdWxkIGJlCitydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsIGFuZCBydW4gd2l0aCB0aGUgdmVudidzIFB5dGhvbiBhdXRvbWF0aWNhbGx5LgorCitZb3UgY2FuIGRlYWN0aXZhdGUgYSB2ZW52IGJ5IHR5cGluZyAiZGVhY3RpdmF0ZSIgaW4geW91ciBzaGVsbC4gVGhlIGV4YWN0CittZWNoYW5pc20gaXMgcGxhdGZvcm0tc3BlY2lmaWM6IGZvciBleGFtcGxlLCB0aGUgQmFzaCBhY3RpdmF0aW9uIHNjcmlwdCBkZWZpbmVzCithICJkZWFjdGl2YXRlIiBmdW5jdGlvbiwgd2hlcmVhcyBvbiBXaW5kb3dzIHRoZXJlIGFyZSBzZXBhcmF0ZSBzY3JpcHRzIGNhbGxlZAorYGBkZWFjdGl2YXRlLmJhdGBgIGFuZCBgYERlYWN0aXZhdGUucHMxYGAgd2hpY2ggYXJlIGluc3RhbGxlZCB3aGVuIHRoZSB2ZW52IGlzCitjcmVhdGVkLgorCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggNzQyYTI5MC4uYWUyNTIxNSAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtODIsNiArODIsOCBAQAogc2V0dGluZ3MgaW4gV2luZG93cy4KIAogCisuLiBfc2V0dGluZy1lbnZ2YXJzOgorCiBFeGN1cnN1czogU2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xMzAsMjEgKzEzMiwzMyBAQAogICAgICAgU2V0dGluZyBFbnZpcm9ubWVudCB2YXJpYWJsZXMsIExvdWlzIEouIEZhcnJ1Z2lhCiAKIAorLi4gX3dpbmRvd3MtcGF0aC1tb2Q6CisKIEZpbmRpbmcgdGhlIFB5dGhvbiBleGVjdXRhYmxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworCiBCZXNpZGVzIHVzaW5nIHRoZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgc3RhcnQgbWVudSBlbnRyeSBmb3IgdGhlIFB5dGhvbgotaW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgRE9TIHByb21wdC4gIFRvIG1ha2UgdGhpcwotd29yaywgeW91IG5lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgJVBBVEglYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZQotZGlyZWN0b3J5IG9mIHlvdXIgUHl0aG9uIGRpc3RyaWJ1dGlvbiwgZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uIGZyb20gb3RoZXIKLWVudHJpZXMuICBBbiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvCi1lbnRyaWVzIGFyZSBXaW5kb3dzJyBkZWZhdWx0KTo6CitpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gQXMgb2YKK1B5dGhvbiAzLjMsIHRoZSBpbnN0YWxsZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgogCi0gICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFB5dGhvbjI1CitBdCB0aGUgIkN1c3RvbWl6ZSBQeXRob24gMy4zIiBzY3JlZW4sIGFuIG9wdGlvbiBjYWxsZWQKKyJBZGQgcHl0aG9uLmV4ZSB0byBzZWFyY2ggcGF0aCIgY2FuIGJlIGVuYWJsZWQgdG8gaGF2ZSB0aGUgaW5zdGFsbGVyIHBsYWNlCit5b3VyIGluc3RhbGxhdGlvbiBpbnRvIHRoZSA6ZW52dmFyOmAlUEFUSCVgLiBUaGlzIGFsbG93cyB5b3UgdG8gdHlwZQorOmNvbW1hbmQ6YHB5dGhvbmAgdG8gcnVuIHRoZSBpbnRlcnByZXRlci4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgorc2NyaXB0cyB3aXRoIGNvbW1hbmQgbGluZSBvcHRpb25zLCBzZWUgOnJlZjpgdXNpbmctb24tY21kbGluZWAgZG9jdW1lbnRhdGlvbi4KIAotVHlwaW5nIDpjb21tYW5kOmBweXRob25gIG9uIHlvdXIgY29tbWFuZCBwcm9tcHQgd2lsbCBub3cgZmlyZSB1cCB0aGUgUHl0aG9uCi1pbnRlcnByZXRlci4gIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIgc2NyaXB0cyB3aXRoIGNvbW1hbmQgbGluZSBvcHRpb25zLAotc2VlIDpyZWY6YHVzaW5nLW9uLWNtZGxpbmVgIGRvY3VtZW50YXRpb24uCitJZiB5b3UgZG9uJ3QgZW5hYmxlIHRoaXMgb3B0aW9uIGF0IGluc3RhbGwgdGltZSwgeW91IGNhbiBhbHdheXMgcmUtcnVuIHRoZQoraW5zdGFsbGVyIHRvIGNob29zZSBpdC4KKworVGhlIGFsdGVybmF0aXZlIGlzIG1hbnVhbGx5IG1vZGlmeWluZyB0aGUgOmVudnZhcjpgJVBBVEglYCB1c2luZyB0aGUKK2RpcmVjdGlvbnMgaW4gOnJlZjpgc2V0dGluZy1lbnZ2YXJzYC4gWW91IG5lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgJVBBVEglYAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5IG9mIHlvdXIgUHl0aG9uIGRpc3RyaWJ1dGlvbiwKK2RlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuIEFuIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vaworbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYXJlIFdpbmRvd3MnIGRlZmF1bHQpOjoKKworICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24zMwogCiAKIEZpbmRpbmcgbW9kdWxlcwpAQCAtMjAzLDEzICsyMTcsMTkgQEAKIEV4ZWN1dGluZyBzY3JpcHRzCiAtLS0tLS0tLS0tLS0tLS0tLQogCi1QeXRob24gc2NyaXB0cyAoZmlsZXMgd2l0aCB0aGUgZXh0ZW5zaW9uIGBgLnB5YGApIHdpbGwgYmUgZXhlY3V0ZWQgYnkKLTpwcm9ncmFtOmBweXRob24uZXhlYCBieSBkZWZhdWx0LiAgVGhpcyBleGVjdXRhYmxlIG9wZW5zIGEgdGVybWluYWwsIHdoaWNoIHN0YXlzCi1vcGVuIGV2ZW4gaWYgdGhlIHByb2dyYW0gdXNlcyBhIEdVSS4gIElmIHlvdSBkbyBub3Qgd2FudCB0aGlzIHRvIGhhcHBlbiwgdXNlIHRoZQotZXh0ZW5zaW9uIGBgLnB5d2BgIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNjcmlwdCB0byBiZSBleGVjdXRlZCBieQotOnByb2dyYW06YHB5dGhvbncuZXhlYCBieSBkZWZhdWx0IChib3RoIGV4ZWN1dGFibGVzIGFyZSBsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwKLW9mIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkpLiAgVGhpcyBzdXBwcmVzc2VzIHRoZSB0ZXJtaW5hbCB3aW5kb3cgb24KLXN0YXJ0dXAuCitBcyBvZiBQeXRob24gMy4zLCBQeXRob24gaW5jbHVkZXMgYSBsYXVuY2hlciB3aGljaCBmYWNpbGl0YXRlcyBydW5uaW5nIFB5dGhvbgorc2NyaXB0cy4gU2VlIDpyZWY6YGxhdW5jaGVyYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworRXhlY3V0aW5nIHNjcmlwdHMgd2l0aG91dCB0aGUgUHl0aG9uIGxhdW5jaGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2l0aG91dCB0aGUgUHl0aG9uIGxhdW5jaGVyIGluc3RhbGxlZCwgUHl0aG9uIHNjcmlwdHMgKGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbgorYGAucHlgYCkgd2lsbCBiZSBleGVjdXRlZCBieSA6cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgYnkgZGVmYXVsdC4gIFRoaXMgZXhlY3V0YWJsZQorb3BlbnMgYSB0ZXJtaW5hbCwgd2hpY2ggc3RheXMgb3BlbiBldmVuIGlmIHRoZSBwcm9ncmFtIHVzZXMgYSBHVUkuICBJZiB5b3UgZG8KK25vdCB3YW50IHRoaXMgdG8gaGFwcGVuLCB1c2UgdGhlIGV4dGVuc2lvbiBgYC5weXdgYCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzY3JpcHQKK3RvIGJlIGV4ZWN1dGVkIGJ5IDpwcm9ncmFtOmBweXRob253LmV4ZWAgYnkgZGVmYXVsdCAoYm90aCBleGVjdXRhYmxlcyBhcmUKK2xvY2F0ZWQgaW4gdGhlIHRvcC1sZXZlbCBvZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gZGlyZWN0b3J5KS4gIFRoaXMKK3N1cHByZXNzZXMgdGhlIHRlcm1pbmFsIHdpbmRvdyBvbiBzdGFydHVwLgogCiBZb3UgY2FuIGFsc28gbWFrZSBhbGwgYGAucHlgYCBzY3JpcHRzIGV4ZWN1dGUgd2l0aCA6cHJvZ3JhbTpgcHl0aG9udy5leGVgLAogc2V0dGluZyB0aGlzIHRocm91Z2ggdGhlIHVzdWFsIGZhY2lsaXRpZXMsIGZvciBleGFtcGxlIChtaWdodCByZXF1aXJlCkBAIC0yMjUsNiArMjQ1LDI1MCBAQAogICAgICAgZnR5cGUgUHl0aG9uLkZpbGU9QzpcUGF0aFx0b1xweXRob253LmV4ZSAiJTEiICUqCiAKIAorLi4gX2xhdW5jaGVyOgorCitQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cyBpcyBhIHV0aWxpdHkgd2hpY2ggYWlkcyBpbiB0aGUgbG9jYXRpb24gYW5kCitleGVjdXRpb24gb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKK2NvbW1hbmQtbGluZSkgdG8gaW5kaWNhdGUgYSBwcmVmZXJlbmNlIGZvciBhIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLCBhbmQKK3dpbGwgbG9jYXRlIGFuZCBleGVjdXRlIHRoYXQgdmVyc2lvbi4KKworR2V0dGluZyBzdGFydGVkCistLS0tLS0tLS0tLS0tLS0KKworRnJvbSB0aGUgY29tbWFuZC1saW5lCiteXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworWW91IHNob3VsZCBlbnN1cmUgdGhlIGxhdW5jaGVyIGlzIG9uIHlvdXIgUEFUSCAtIGRlcGVuZGluZyBvbiBob3cgaXQgd2FzCitpbnN0YWxsZWQgaXQgbWF5IGFscmVhZHkgYmUgdGhlcmUsIGJ1dCBjaGVjayBqdXN0IGluIGNhc2UgaXQgaXMgbm90LgorCitGcm9tIGEgY29tbWFuZC1wcm9tcHQsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCis6OgorCisgIHB5CisKK1lvdSBzaG91bGQgZmluZCB0aGF0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHlvdSBoYXZlIGluc3RhbGxlZCBpcworc3RhcnRlZCAtIGl0IGNhbiBiZSBleGl0ZWQgYXMgbm9ybWFsLCBhbmQgYW55IGFkZGl0aW9uYWwgY29tbWFuZC1saW5lCithcmd1bWVudHMgc3BlY2lmaWVkIHdpbGwgYmUgc2VudCBkaXJlY3RseSB0byBQeXRob24uCisKK0lmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiAyLnggaW5zdGFsbGVkIChlLmcuLCAyLjYgYW5kIDIuNykgeW91Cit3aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiAyLjcgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNiwgdHJ5IHRoZQorY29tbWFuZDoKKworOjoKKworICBweSAtMi42CisKK0lmIHlvdSBoYXZlIGEgUHl0aG9uIDMueCBpbnN0YWxsZWQsIHRyeSB0aGUgY29tbWFuZDoKKworOjoKKworICBweSAtMworCitZb3Ugc2hvdWxkIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAzLnggc3RhcnRzLgorCitGcm9tIGEgc2NyaXB0CiteXl5eXl5eXl5eXl5eCisKK0xldCdzIGNyZWF0ZSBhIHRlc3QgUHl0aG9uIHNjcmlwdCAtIGNyZWF0ZSBhIGZpbGUgY2FsbGVkIGBgaGVsbG8ucHlgYCB3aXRoIHRoZQorZm9sbG93aW5nIGNvbnRlbnRzCisKKzo6CisKKyAgICAjISBweXRob24KKyAgICBpbXBvcnQgc3lzCisgICAgc3lzLnN0ZG91dC53cml0ZSgiaGVsbG8gZnJvbSBQeXRob24gJXNcbiIgJSAoc3lzLnZlcnNpb24sKSkKKworRnJvbSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGhlbGxvLnB5IGxpdmVzLCBleGVjdXRlIHRoZSBjb21tYW5kOgorCis6OgorCisgICBweSBoZWxsby5weQorCitZb3Ugc2hvdWxkIG5vdGljZSB0aGUgdmVyc2lvbiBudW1iZXIgb2YgeW91ciBsYXRlc3QgUHl0aG9uIDIueCBpbnN0YWxsYXRpb24KK2lzIHByaW50ZWQuICBOb3cgdHJ5IGNoYW5naW5nIHRoZSBmaXJzdCBsaW5lIHRvIGJlOgorCis6OgorCisgICAgIyEgcHl0aG9uMworCitSZS1leGVjdXRpbmcgdGhlIGNvbW1hbmQgc2hvdWxkIG5vdyBwcmludCB0aGUgbGF0ZXN0IFB5dGhvbiAzLnggaW5mb3JtYXRpb24uCitBcyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kLWxpbmUgZXhhbXBsZXMsIHlvdSBjYW4gc3BlY2lmeSBhIG1vcmUgZXhwbGljaXQKK3ZlcnNpb24gcXVhbGlmaWVyLiAgQXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNiBpbnN0YWxsZWQsIHRyeSBjaGFuZ2luZyB0aGUKK2ZpcnN0IGxpbmUgdG8gYGAjISBweXRob24yLjZgYCBhbmQgeW91IHNob3VsZCBmaW5kIHRoZSAyLjYgdmVyc2lvbgoraW5mb3JtYXRpb24gcHJpbnRlZC4KKworRnJvbSBmaWxlIGFzc29jaWF0aW9ucworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgbGF1bmNoZXIgc2hvdWxkIGhhdmUgYmVlbiBhc3NvY2lhdGVkIHdpdGggUHl0aG9uIGZpbGVzIChpLmUuIGBgLnB5YGAsCitgYC5weXdgYCwgYGAucHljYGAsIGBgLnB5b2BgIGZpbGVzKSB3aGVuIGl0IHdhcyBpbnN0YWxsZWQuICBUaGlzIG1lYW5zIHRoYXQKK3doZW4geW91IGRvdWJsZS1jbGljayBvbiBvbmUgb2YgdGhlc2UgZmlsZXMgZnJvbSBXaW5kb3dzIGV4cGxvcmVyIHRoZSBsYXVuY2hlcgord2lsbCBiZSB1c2VkLCBhbmQgdGhlcmVmb3JlIHlvdSBjYW4gdXNlIHRoZSBzYW1lIGZhY2lsaXRpZXMgZGVzY3JpYmVkIGFib3ZlIHRvCitoYXZlIHRoZSBzY3JpcHQgc3BlY2lmeSB0aGUgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC4KKworVGhlIGtleSBiZW5lZml0IG9mIHRoaXMgaXMgdGhhdCBhIHNpbmdsZSBsYXVuY2hlciBjYW4gc3VwcG9ydCBtdWx0aXBsZSBQeXRob24KK3ZlcnNpb25zIGF0IHRoZSBzYW1lIHRpbWUgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgZmlyc3QgbGluZS4KKworU2hlYmFuZyBMaW5lcworLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgZmlyc3QgbGluZSBvZiBhIHNjcmlwdCBmaWxlIHN0YXJ0cyB3aXRoIGBgIyFgYCwgaXQgaXMga25vd24gYXMgYQorInNoZWJhbmciIGxpbmUuICBMaW51eCBhbmQgb3RoZXIgVW5peCBsaWtlIG9wZXJhdGluZyBzeXN0ZW1zIGhhdmUgbmF0aXZlCitzdXBwb3J0IGZvciBzdWNoIGxpbmVzIGFuZCBhcmUgY29tbW9ubHkgdXNlZCBvbiBzdWNoIHN5c3RlbXMgdG8gaW5kaWNhdGUgaG93CithIHNjcmlwdCBzaG91bGQgYmUgZXhlY3V0ZWQuICBUaGlzIGxhdW5jaGVyIGFsbG93cyB0aGUgc2FtZSBmYWNpbGl0aWVzIHRvIGJlCit1c2luZyB3aXRoIFB5dGhvbiBzY3JpcHRzIG9uIFdpbmRvd3MgYW5kIHRoZSBleGFtcGxlcyBhYm92ZSBkZW1vbnN0cmF0ZSB0aGVpcgordXNlLgorCitUbyBhbGxvdyBzaGViYW5nIGxpbmVzIGluIFB5dGhvbiBzY3JpcHRzIHRvIGJlIHBvcnRhYmxlIGJldHdlZW4gVW5peCBhbmQKK1dpbmRvd3MsIHRoaXMgbGF1bmNoZXIgc3VwcG9ydHMgYSBudW1iZXIgb2YgJ3ZpcnR1YWwnIGNvbW1hbmRzIHRvIHNwZWNpZnkKK3doaWNoIGludGVycHJldGVyIHRvIHVzZS4gIFRoZSBzdXBwb3J0ZWQgdmlydHVhbCBjb21tYW5kcyBhcmU6CisKKyogYGAvdXNyL2Jpbi9lbnYgcHl0aG9uYGAKKyogYGAvdXNyL2Jpbi9weXRob25gYAorKiBgYC91c3IvbG9jYWwvYmluL3B5dGhvbmBgCisqIGBgcHl0aG9uYGAKKworRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBsaW5lIG9mIHlvdXIgc2NyaXB0IHN0YXJ0cyB3aXRoCisKKzo6CisKKyAgIyEgL3Vzci9iaW4vcHl0aG9uCisKK1RoZSBkZWZhdWx0IFB5dGhvbiB3aWxsIGJlIGxvY2F0ZWQgYW5kIHVzZWQuICBBcyBtYW55IFB5dGhvbiBzY3JpcHRzIHdyaXR0ZW4KK3RvIHdvcmsgb24gVW5peCB3aWxsIGFscmVhZHkgaGF2ZSB0aGlzIGxpbmUsIHlvdSBzaG91bGQgZmluZCB0aGVzZSBzY3JpcHRzIGNhbgorYmUgdXNlZCBieSB0aGUgbGF1bmNoZXIgd2l0aG91dCBtb2RpZmljYXRpb24uICBJZiB5b3UgYXJlIHdyaXRpbmcgYSBuZXcgc2NyaXB0CitvbiBXaW5kb3dzIHdoaWNoIHlvdSBob3BlIHdpbGwgYmUgdXNlZnVsIG9uIFVuaXgsIHlvdSBzaG91bGQgdXNlIG9uZSBvZiB0aGUKK3NoZWJhbmcgbGluZXMgc3RhcnRpbmcgd2l0aCBgYC91c3JgYC4KKworQXJndW1lbnRzIGluIHNoZWJhbmcgbGluZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzaGViYW5nIGxpbmVzIGNhbiBhbHNvIHNwZWNpZnkgYWRkaXRpb25hbCBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUKK1B5dGhvbiBpbnRlcnByZXRlci4gIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhIHNoZWJhbmcgbGluZToKKworOjoKKworICAjISAvdXNyL2Jpbi9weXRob24gLXYKKworVGhlbiBQeXRob24gd2lsbCBiZSBzdGFydGVkIHdpdGggdGhlIGBgLXZgYCBvcHRpb24KKworQ3VzdG9taXphdGlvbgorLS0tLS0tLS0tLS0tLQorCitDdXN0b21pemF0aW9uIHZpYSBJTkkgZmlsZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCisgICAgVHdvIC5pbmkgZmlsZXMgd2lsbCBiZSBzZWFyY2hlZCBieSB0aGUgbGF1bmNoZXIgLSBgYHB5LmluaWBgIGluIHRoZQorICAgIGN1cnJlbnQgdXNlcidzICJhcHBsaWNhdGlvbiBkYXRhIiBkaXJlY3RvcnkgKGkuZS4gdGhlIGRpcmVjdG9yeSByZXR1cm5lZAorICAgIGJ5IGNhbGxpbmcgdGhlIFdpbmRvd3MgZnVuY3Rpb24gU0hHZXRGb2xkZXJQYXRoIHdpdGggQ1NJRExfTE9DQUxfQVBQREFUQSkKKyAgICBhbmQgYGBweS5pbmlgYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGxhdW5jaGVyLiAgVGhlIHNhbWUgLmluaQorICAgIGZpbGVzIGFyZSB1c2VkIGZvciBib3RoIHRoZSAnY29uc29sZScgdmVyc2lvbiBvZiB0aGUgbGF1bmNoZXIgKGkuZS4KKyAgICBweS5leGUpIGFuZCBmb3IgdGhlICd3aW5kb3dzJyB2ZXJzaW9uIChpLmUuIHB5dy5leGUpCisKKyAgICBDdXN0b21pemF0aW9uIHNwZWNpZmllZCBpbiB0aGUgImFwcGxpY2F0aW9uIGRpcmVjdG9yeSIgd2lsbCBoYXZlCisgICAgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUgbmV4dCB0byB0aGUgZXhlY3V0YWJsZSwgc28gYSB1c2VyLCB3aG8gbWF5IG5vdAorICAgIGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSAuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZQorICAgIGNvbW1hbmRzIGluIHRoYXQgZ2xvYmFsIC5pbmkgZmlsZSkKKworQ3VzdG9taXppbmcgZGVmYXVsdCBQeXRob24gdmVyc2lvbnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0luIHNvbWUgY2FzZXMsIGEgdmVyc2lvbiBxdWFsaWZpZXIgY2FuIGJlIGluY2x1ZGVkIGluIGEgY29tbWFuZCB0byBkaWN0YXRlCit3aGljaCB2ZXJzaW9uIG9mIFB5dGhvbiB3aWxsIGJlIHVzZWQgYnkgdGhlIGNvbW1hbmQuIEEgdmVyc2lvbiBxdWFsaWZpZXIKK3N0YXJ0cyB3aXRoIGEgbWFqb3IgdmVyc2lvbiBudW1iZXIgYW5kIGNhbiBvcHRpb25hbGx5IGJlIGZvbGxvd2VkIGJ5IGEgcGVyaW9kCisoJy4nKSBhbmQgYSBtaW5vciB2ZXJzaW9uIHNwZWNpZmllci4gSWYgdGhlIG1pbm9yIHF1YWxpZmllciBpcyBzcGVjaWZpZWQsIGl0CittYXkgb3B0aW9uYWxseSBiZSBmb2xsb3dlZCBieSAiLTMyIiB0byBpbmRpY2F0ZSB0aGUgMzItYml0IGltcGxlbWVudGF0aW9uIG9mCit0aGF0IHZlcnNpb24gYmUgdXNlZC4KKworRm9yIGV4YW1wbGUsIGEgc2hlYmFuZyBsaW5lIG9mIGBgIyFweXRob25gYCBoYXMgbm8gdmVyc2lvbiBxdWFsaWZpZXIsIHdoaWxlCitgYCMhcHl0aG9uM2BgIGhhcyBhIHZlcnNpb24gcXVhbGlmaWVyIHdoaWNoIHNwZWNpZmllcyBvbmx5IGEgbWFqb3IgdmVyc2lvbi4KKworSWYgbm8gdmVyc2lvbiBxdWFsaWZpZXJzIGFyZSBmb3VuZCBpbiBhIGNvbW1hbmQsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorYGBQWV9QWVRIT05gYCBjYW4gYmUgc2V0IHRvIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmVyc2lvbiBxdWFsaWZpZXIgLSB0aGUgZGVmYXVsdAordmFsdWUgaXMgIjIiLiBOb3RlIHRoaXMgdmFsdWUgY291bGQgc3BlY2lmeSBqdXN0IGEgbWFqb3IgdmVyc2lvbiAoZS5nLiAiMiIpIG9yCithIG1ham9yLm1pbm9yIHF1YWxpZmllciAoZS5nLiAiMi42IiksIG9yIGV2ZW4gbWFqb3IubWlub3ItMzIuCisKK0lmIG5vIG1pbm9yIHZlcnNpb24gcXVhbGlmaWVycyBhcmUgZm91bmQsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorYGBQWV9QWVRIT057bWFqb3J9YGAgKHdoZXJlIGBge21ham9yfWBgIGlzIHRoZSBjdXJyZW50IG1ham9yIHZlcnNpb24gcXVhbGlmaWVyCithcyBkZXRlcm1pbmVkIGFib3ZlKSBjYW4gYmUgc2V0IHRvIHNwZWNpZnkgdGhlIGZ1bGwgdmVyc2lvbi4gSWYgbm8gc3VjaCBvcHRpb24KK2lzIGZvdW5kLCB0aGUgbGF1bmNoZXIgd2lsbCBlbnVtZXJhdGUgdGhlIGluc3RhbGxlZCBQeXRob24gdmVyc2lvbnMgYW5kIHVzZQordGhlIGxhdGVzdCBtaW5vciByZWxlYXNlIGZvdW5kIGZvciB0aGUgbWFqb3IgdmVyc2lvbiwgd2hpY2ggaXMgbGlrZWx5LAorYWx0aG91Z2ggbm90IGd1YXJhbnRlZWQsIHRvIGJlIHRoZSBtb3N0IHJlY2VudGx5IGluc3RhbGxlZCB2ZXJzaW9uIGluIHRoYXQKK2ZhbWlseS4KKworT24gNjQtYml0IFdpbmRvd3Mgd2l0aCBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZQorKG1ham9yLm1pbm9yKSBQeXRob24gdmVyc2lvbiBpbnN0YWxsZWQsIHRoZSA2NC1iaXQgdmVyc2lvbiB3aWxsIGFsd2F5cyBiZQorcHJlZmVycmVkLiBUaGlzIHdpbGwgYmUgdHJ1ZSBmb3IgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCitsYXVuY2hlciAtIGEgMzItYml0IGxhdW5jaGVyIHdpbGwgcHJlZmVyIHRvIGV4ZWN1dGUgYSA2NC1iaXQgUHl0aG9uIGluc3RhbGxhdGlvbgorb2YgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIGlmIGF2YWlsYWJsZS4gVGhpcyBpcyBzbyB0aGUgYmVoYXZpb3Igb2YgdGhlIGxhdW5jaGVyCitjYW4gYmUgcHJlZGljdGVkIGtub3dpbmcgb25seSB3aGF0IHZlcnNpb25zIGFyZSBpbnN0YWxsZWQgb24gdGhlIFBDIGFuZAord2l0aG91dCByZWdhcmQgdG8gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBpbnN0YWxsZWQgKGkuZS4sIHdpdGhvdXQga25vd2luZword2hldGhlciBhIDMyIG9yIDY0LWJpdCB2ZXJzaW9uIG9mIFB5dGhvbiBhbmQgY29ycmVzcG9uZGluZyBsYXVuY2hlciB3YXMKK2luc3RhbGxlZCBsYXN0KS4gQXMgbm90ZWQgYWJvdmUsIGFuIG9wdGlvbmFsICItMzIiIHN1ZmZpeCBjYW4gYmUgdXNlZCBvbiBhCit2ZXJzaW9uIHNwZWNpZmllciB0byBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIuCisKK0V4YW1wbGVzOgorCisqIElmIG5vIHJlbGV2YW50IG9wdGlvbnMgYXJlIHNldCwgdGhlIGNvbW1hbmRzIGBgcHl0aG9uYGAgYW5kCisgIGBgcHl0aG9uMmBgIHdpbGwgdXNlIHRoZSBsYXRlc3QgUHl0aG9uIDIueCB2ZXJzaW9uIGluc3RhbGxlZCBhbmQKKyAgdGhlIGNvbW1hbmQgYGBweXRob24zYGAgd2lsbCB1c2UgdGhlIGxhdGVzdCBQeXRob24gMy54IGluc3RhbGxlZC4KKworKiBUaGUgY29tbWFuZHMgYGBweXRob24zLjFgYCBhbmQgYGBweXRob24yLjdgYCB3aWxsIG5vdCBjb25zdWx0IGFueQorICBvcHRpb25zIGF0IGFsbCBhcyB0aGUgdmVyc2lvbnMgYXJlIGZ1bGx5IHNwZWNpZmllZC4KKworKiBJZiBgYFBZX1BZVEhPTj0zYGAsIHRoZSBjb21tYW5kcyBgYHB5dGhvbmBgIGFuZCBgYHB5dGhvbjNgYCB3aWxsIGJvdGggdXNlCisgIHRoZSBsYXRlc3QgaW5zdGFsbGVkIFB5dGhvbiAzIHZlcnNpb24uCisKKyogSWYgYGBQWV9QWVRIT049My4xLTMyYGAsIHRoZSBjb21tYW5kIGBgcHl0aG9uYGAgd2lsbCB1c2UgdGhlIDMyLWJpdAorICBpbXBsZW1lbnRhdGlvbiBvZiAzLjEgd2hlcmVhcyB0aGUgY29tbWFuZCBgYHB5dGhvbjNgYCB3aWxsIHVzZSB0aGUgbGF0ZXN0CisgIGluc3RhbGxlZCBQeXRob24gKFBZX1BZVEhPTiB3YXMgbm90IGNvbnNpZGVyZWQgYXQgYWxsIGFzIGEgbWFqb3IKKyAgdmVyc2lvbiB3YXMgc3BlY2lmaWVkLikKKworKiBJZiBgYFBZX1BZVEhPTj0zYGAgYW5kIGBgUFlfUFlUSE9OMz0zLjFgYCwgdGhlIGNvbW1hbmRzCisgIGBgcHl0aG9uYGAgYW5kIGBgcHl0aG9uM2BgIHdpbGwgYm90aCB1c2Ugc3BlY2lmaWNhbGx5IDMuMQorCitJbiBhZGRpdGlvbiB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHRoZSBzYW1lIHNldHRpbmdzIGNhbiBiZSBjb25maWd1cmVkCitpbiB0aGUgLklOSSBmaWxlIHVzZWQgYnkgdGhlIGxhdW5jaGVyLiAgVGhlIHNlY3Rpb24gaW4gdGhlIElOSSBmaWxlIGlzCitjYWxsZWQgYGBbZGVmYXVsdHNdYGAgYW5kIHRoZSBrZXkgbmFtZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZQorZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGhvdXQgdGhlIGxlYWRpbmcgYGBQWV9gYCBwcmVmaXggKGFuZCBub3RlIHRoYXQKK3RoZSBrZXkgbmFtZXMgaW4gdGhlIElOSSBmaWxlIGFyZSBjYXNlIGluc2Vuc2l0aXZlLikgIFRoZSBjb250ZW50cyBvZgorYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2lsbCBvdmVycmlkZSB0aGluZ3Mgc3BlY2lmaWVkIGluIHRoZSBJTkkgZmlsZS4KKworRm9yIGV4YW1wbGU6CisKKyogU2V0dGluZyBgYFBZX1BZVEhPTj0zLjFgYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBJTkkgZmlsZSBjb250YWluaW5nOgorCis6OgorCisgIFtkZWZhdWx0c10KKyAgcHl0aG9uPTMuMQorCisqIFNldHRpbmcgYGBQWV9QWVRIT049M2BgIGFuZCBgYFBZX1BZVEhPTjM9My4xYGAgaXMgZXF1aXZhbGVudCB0byB0aGUgSU5JIGZpbGUKKyAgY29udGFpbmluZzoKKworOjoKKworICBbZGVmYXVsdHNdCisgIHB5dGhvbj0zCisgIHB5dGhvbjM9My4xCisKK0RpYWdub3N0aWNzCistLS0tLS0tLS0tLQorCitJZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYFBZTEFVTkNIX0RFQlVHYGAgaXMgc2V0ICh0byBhbnkgdmFsdWUpLCB0aGUKK2xhdW5jaGVyIHdpbGwgcHJpbnQgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiB0byBzdGRlcnIgKGkuZS4gdG8gdGhlIGNvbnNvbGUpLgorV2hpbGUgdGhpcyBpbmZvcm1hdGlvbiBtYW5hZ2VzIHRvIGJlIHNpbXVsdGFuZW91c2x5IHZlcmJvc2UgKmFuZCogdGVyc2UsIGl0CitzaG91bGQgYWxsb3cgeW91IHRvIHNlZSB3aGF0IHZlcnNpb25zIG9mIFB5dGhvbiB3ZXJlIGxvY2F0ZWQsIHdoeSBhCitwYXJ0aWN1bGFyIHZlcnNpb24gd2FzIGNob3NlbiBhbmQgdGhlIGV4YWN0IGNvbW1hbmQtbGluZSB1c2VkIHRvIGV4ZWN1dGUgdGhlCit0YXJnZXQgUHl0aG9uLgorCisKIEFkZGl0aW9uYWwgbW9kdWxlcwogPT09PT09PT09PT09PT09PT09CiAKQEAgLTM0MSwzICs2MDUsNyBAQAogICAgYEEgUHl0aG9uIGZvciBXaW5kb3dzIFR1dG9yaWFsIDxodHRwOi8vd3d3LmltbGFkcmlzLmNvbS9TY3JpcHRzL1B5dGhvbkZvcldpbmRvd3MuaHRtbD5gXwogICAgICAgYnkgQW1hbmRhIEJpcm1pbmdoYW0sIDIwMDQKIAorICAgOnBlcDpgMzk3YCAtIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cworICAgICAgVGhlIHByb3Bvc2FsIGZvciB0aGUgbGF1bmNoZXIgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIFB5dGhvbiBkaXN0cmlidXRpb24uCisKKwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4wLnJzdAppbmRleCA4NTBlNTdkLi42NGI5MDhiIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4wLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4wLnJzdApAQCAtMTY2LDcgKzE2Niw3IEBACiByZWdpc3RlcmluZyBuZXcgZW5jb2RpbmdzIHRoYXQgYXJlIHRoZW4gYXZhaWxhYmxlIHRocm91Z2hvdXQgYSBQeXRob24gcHJvZ3JhbS4KIElmIGFuIGVuY29kaW5nIGlzbid0IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgdXN1YWxseSA3LWJpdCBBU0NJSSwKIHRob3VnaCBpdCBjYW4gYmUgY2hhbmdlZCBmb3IgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGJ5IGNhbGxpbmcgdGhlCi06ZnVuYzpgc3lzLnNldGRlZmF1bHRlbmNvZGluZyhlbmNvZGluZylgIGZ1bmN0aW9uIGluIGEgY3VzdG9taXNlZCB2ZXJzaW9uIG9mCitgYHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoZW5jb2RpbmcpYGAgZnVuY3Rpb24gaW4gYSBjdXN0b21pc2VkIHZlcnNpb24gb2YKIDpmaWxlOmBzaXRlLnB5YC4KIAogQ29tYmluaW5nIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgYWx3YXlzIGNvZXJjZXMgdG8gVW5pY29kZSwgdXNpbmcgdGhlIGRlZmF1bHQKQEAgLTIwMyw3ICsyMDMsNyBAQAogCiBUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIHRvIGxvb2sgdXAgZXhpc3RpbmcgZW5jb2RpbmdzIGFuZAogcmVnaXN0ZXIgbmV3IG9uZXMuICBVbmxlc3MgeW91IHdhbnQgdG8gaW1wbGVtZW50IGEgbmV3IGVuY29kaW5nLCB5b3UnbGwgbW9zdAotb2Z0ZW4gdXNlIHRoZSA6ZnVuYzpgY29kZWNzLmxvb2t1cChlbmNvZGluZylgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEKK29mdGVuIHVzZSB0aGUgYGBjb2RlY3MubG9va3VwKGVuY29kaW5nKWBgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEKIDQtZWxlbWVudCB0dXBsZTogYGAoZW5jb2RlX2Z1bmMsIGRlY29kZV9mdW5jLCBzdHJlYW1fcmVhZGVyLCBzdHJlYW1fd3JpdGVyKWBgLgogCiAqICplbmNvZGVfZnVuYyogaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgVW5pY29kZSBzdHJpbmcsIGFuZCByZXR1cm5zIGEgMi10dXBsZQpAQCAtNjAwLDcgKzYwMCw3IEBACiBDaGFuZ2VzIHRvIEJ1aWx0LWluIEZ1bmN0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSBuZXcgYnVpbHQtaW4sIDpmdW5jOmB6aXAoc2VxMSwgc2VxMiwgLi4uKWAsIGhhcyBiZWVuIGFkZGVkLiAgOmZ1bmM6YHppcGAKK0EgbmV3IGJ1aWx0LWluLCBgYHppcChzZXExLCBzZXEyLCAuLi4pYGAsIGhhcyBiZWVuIGFkZGVkLiAgOmZ1bmM6YHppcGAKIHJldHVybnMgYSBsaXN0IG9mIHR1cGxlcyB3aGVyZSBlYWNoIHR1cGxlIGNvbnRhaW5zIHRoZSBpLXRoIGVsZW1lbnQgZnJvbSBlYWNoIG9mCiB0aGUgYXJndW1lbnQgc2VxdWVuY2VzLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiA6ZnVuYzpgemlwYCBhbmQgYGBtYXAoTm9uZSwKIHNlcTEsIHNlcTIpYGAgaXMgdGhhdCA6ZnVuYzpgbWFwYCBwYWRzIHRoZSBzZXF1ZW5jZXMgd2l0aCBgYE5vbmVgYCBpZiB0aGUKQEAgLTYxOSw3ICs2MTksNyBAQAogd291bGQgYmUgYGAoMiwgMCwgMSwgJ2JldGEnLCAxKWBgLiAqbGV2ZWwqIGlzIGEgc3RyaW5nIHN1Y2ggYXMgYGAiYWxwaGEiYGAsCiBgYCJiZXRhImBgLCBvciBgYCJmaW5hbCJgYCBmb3IgYSBmaW5hbCByZWxlYXNlLgogCi1EaWN0aW9uYXJpZXMgaGF2ZSBhbiBvZGQgbmV3IG1ldGhvZCwgOm1ldGg6YHNldGRlZmF1bHQoa2V5LCBkZWZhdWx0KWAsIHdoaWNoCitEaWN0aW9uYXJpZXMgaGF2ZSBhbiBvZGQgbmV3IG1ldGhvZCwgYGBzZXRkZWZhdWx0KGtleSwgZGVmYXVsdClgYCwgd2hpY2gKIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHRoZSBleGlzdGluZyA6bWV0aDpgZ2V0YCBtZXRob2QuICBIb3dldmVyLCBpZiB0aGUga2V5IGlzCiBtaXNzaW5nLCA6bWV0aDpgc2V0ZGVmYXVsdGAgYm90aCByZXR1cm5zIHRoZSB2YWx1ZSBvZiAqZGVmYXVsdCogYXMgOm1ldGg6YGdldGAKIHdvdWxkIGRvLCBhbmQgYWxzbyBpbnNlcnRzIGl0IGludG8gdGhlIGRpY3Rpb25hcnkgYXMgdGhlIHZhbHVlIGZvciAqa2V5Ki4gIFRodXMsCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBTb2NrZXQgTGF5ZXIsIHdoaWNoIGVuY3J5cHRzIHRoZSBkYXRhIGJlaW5nCiBzZW50IG92ZXIgYSBzb2NrZXQuICBXaGVuIGNvbXBpbGluZyBQeXRob24sIHlvdSBjYW4gZWRpdCA6ZmlsZTpgTW9kdWxlcy9TZXR1cGAKIHRvIGluY2x1ZGUgU1NMIHN1cHBvcnQsIHdoaWNoIGFkZHMgYW4gYWRkaXRpb25hbCBmdW5jdGlvbiB0byB0aGUgOm1vZDpgc29ja2V0YAotbW9kdWxlOiA6ZnVuYzpgc29ja2V0LnNzbChzb2NrZXQsIGtleWZpbGUsIGNlcnRmaWxlKWAsIHdoaWNoIHRha2VzIGEgc29ja2V0Cittb2R1bGU6IGBgc29ja2V0LnNzbChzb2NrZXQsIGtleWZpbGUsIGNlcnRmaWxlKWBgLCB3aGljaCB0YWtlcyBhIHNvY2tldAogb2JqZWN0IGFuZCByZXR1cm5zIGFuIFNTTCBzb2NrZXQuICBUaGUgOm1vZDpgaHR0cGxpYmAgYW5kIDptb2Q6YHVybGxpYmAgbW9kdWxlcwogd2VyZSBhbHNvIGNoYW5nZWQgdG8gc3VwcG9ydCBgYGh0dHBzOi8vYGAgVVJMcywgdGhvdWdoIG5vIG9uZSBoYXMgaW1wbGVtZW50ZWQKIEZUUCBvciBTTVRQIG92ZXIgU1NMLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAppbmRleCAxMTdhZjEwLi5iMWFiNDhlIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdApAQCAtMjA0LDcgKzIwNCw3IEBACiBsaXN0LCBvciBhbnkgb3RoZXIgUHl0aG9uIG9iamVjdC4gIEFsdGVybmF0aXZlbHkgdGhleSBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIGlmCiB0aGUgY29tcGFyaXNvbiBpcyBpbXBvc3NpYmxlLCBpbmNvbnNpc3RlbnQsIG9yIG90aGVyd2lzZSBtZWFuaW5nbGVzcy4KIAotVGhlIGJ1aWx0LWluIDpmdW5jOmBjbXAoQSxCKWAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKK1RoZSBidWlsdC1pbiBgYGNtcChBLEIpYGAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKIGFuZCBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24gb3BlcmF0aW9uIHRvCiB1c2U7IHRoaXMgaXMgZ2l2ZW4gYXMgb25lIG9mIHRoZSBzdHJpbmdzIGBgIjwiYGAsIGBgIjw9ImBgLCBgYCI+ImBgLCBgYCI+PSJgYCwKIGBgIj09ImBgLCBvciBgYCIhPSJgYC4gIElmIGNhbGxlZCB3aXRob3V0IHRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwKQEAgLTM1MCw3ICszNTAsNyBAQAogYW5kIGFub3RoZXIgYmVpbmcgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiBkYXRhIHN0cnVjdHVyZXMgc3VjaCBhcyB0cmVlcy4KIAogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgbWVtb2l6aW5nIGZ1bmN0aW9uIHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGFub3RoZXIKLWZ1bmN0aW9uIDpmdW5jOmBmKHgpYCBieSBzdG9yaW5nIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGFuZCBpdHMgcmVzdWx0IGluIGEKK2Z1bmN0aW9uIGBgZih4KWBgIGJ5IHN0b3JpbmcgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgYW5kIGl0cyByZXN1bHQgaW4gYQogZGljdGlvbmFyeTo6CiAKICAgIF9jYWNoZSA9IHt9CkBAIC02NTYsNyArNjU2LDcgQEAKICAgdXNlIDptb2Q6YGZ0cGxpYmAgdG8gcmV0cmlldmUgZmlsZXMgYW5kIHRoZW4gZG9uJ3Qgd29yayBmcm9tIGJlaGluZCBhIGZpcmV3YWxsLgogICBJdCdzIGRlZW1lZCB1bmxpa2VseSB0aGF0IHRoaXMgd2lsbCBjYXVzZSBwcm9ibGVtcyBmb3IgYW55b25lLCBiZWNhdXNlIE5ldHNjYXBlCiAgIGRlZmF1bHRzIHRvIHBhc3NpdmUgbW9kZSBhbmQgZmV3IHBlb3BsZSBjb21wbGFpbiwgYnV0IGlmIHBhc3NpdmUgbW9kZSBpcwotICB1bnN1aXRhYmxlIGZvciB5b3VyIGFwcGxpY2F0aW9uIG9yIG5ldHdvcmsgc2V0dXAsIGNhbGwgOm1ldGg6YHNldF9wYXN2KDApYCBvbgorICB1bnN1aXRhYmxlIGZvciB5b3VyIGFwcGxpY2F0aW9uIG9yIG5ldHdvcmsgc2V0dXAsIGNhbGwgYGBzZXRfcGFzdigwKWBgIG9uCiAgIEZUUCBvYmplY3RzIHRvIGRpc2FibGUgcGFzc2l2ZSBtb2RlLgogCiAqIFN1cHBvcnQgZm9yIHJhdyBzb2NrZXQgYWNjZXNzIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSwKQEAgLTY2Niw3ICs2NjYsNyBAQAogICBmb3IgZGlzcGxheWluZyB0aW1pbmcgcHJvZmlsZXMgZm9yIFB5dGhvbiBwcm9ncmFtcywgaW52b2tlZCB3aGVuIHRoZSBtb2R1bGUgaXMKICAgcnVuIGFzIGEgc2NyaXB0LiAgQ29udHJpYnV0ZWQgYnkgIEVyaWMgUy4gUmF5bW9uZC4KIAotKiBBIG5ldyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgZnVuY3Rpb24sIDpmdW5jOmBzeXMuX2dldGZyYW1lKFtkZXB0aF0pYCwgaGFzCisqIEEgbmV3IGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBmdW5jdGlvbiwgYGBzeXMuX2dldGZyYW1lKFtkZXB0aF0pYGAsIGhhcwogICBiZWVuIGFkZGVkIHRvIHJldHVybiBhIGdpdmVuIGZyYW1lIG9iamVjdCBmcm9tIHRoZSBjdXJyZW50IGNhbGwgc3RhY2suCiAgIDpmdW5jOmBzeXMuX2dldGZyYW1lYCByZXR1cm5zIHRoZSBmcmFtZSBhdCB0aGUgdG9wIG9mIHRoZSBjYWxsIHN0YWNrOyAgaWYgdGhlCiAgIG9wdGlvbmFsIGludGVnZXIgYXJndW1lbnQgKmRlcHRoKiBpcyBzdXBwbGllZCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZyYW1lCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4yLnJzdCBiL0RvYy93aGF0c25ldy8yLjIucnN0CmluZGV4IDFkYjFlZTcuLjJlNzA2OWQgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjIucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjIucnN0CkBAIC0xNzMsMTIgKzE3MywxMiBAQAogCiAqIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgYXR0cmlidXRlJ3MgZG9jc3RyaW5nLgogCi0qIDptZXRoOmBfX2dldF9fKG9iamVjdClgIGlzIGEgbWV0aG9kIHRoYXQgcmV0cmlldmVzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgZnJvbQorKiBgYF9fZ2V0X18ob2JqZWN0KWBgIGlzIGEgbWV0aG9kIHRoYXQgcmV0cmlldmVzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgZnJvbQogICAqb2JqZWN0Ki4KIAotKiA6bWV0aDpgX19zZXRfXyhvYmplY3QsIHZhbHVlKWAgc2V0cyB0aGUgYXR0cmlidXRlIG9uICpvYmplY3QqIHRvICp2YWx1ZSouCisqIGBgX19zZXRfXyhvYmplY3QsIHZhbHVlKWBgIHNldHMgdGhlIGF0dHJpYnV0ZSBvbiAqb2JqZWN0KiB0byAqdmFsdWUqLgogCi0qIDptZXRoOmBfX2RlbGV0ZV9fKG9iamVjdCwgdmFsdWUpYCBkZWxldGVzIHRoZSAqdmFsdWUqICBhdHRyaWJ1dGUgb2YgKm9iamVjdCouCisqIGBgX19kZWxldGVfXyhvYmplY3QsIHZhbHVlKWBgIGRlbGV0ZXMgdGhlICp2YWx1ZSogIGF0dHJpYnV0ZSBvZiAqb2JqZWN0Ki4KIAogRm9yIGV4YW1wbGUsIHdoZW4geW91IHdyaXRlIGBgb2JqLnhgYCwgdGhlIHN0ZXBzIHRoYXQgUHl0aG9uIGFjdHVhbGx5IHBlcmZvcm1zCiBhcmU6OgpAQCAtMjg4LDcgKzI4OCw3IEBACiB3aGljaCBpcyB0aGUgYmVoYXZpb3VyIHdlJ3JlIGFmdGVyLiAgVGhpcyBsb29rdXAgcnVsZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lCiBmb2xsb3dlZCBieSBDb21tb24gTGlzcC4gIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgc3VwZXJgLCBwcm92aWRlcyBhIHdheQogdG8gZ2V0IGF0IGEgY2xhc3MncyBzdXBlcmNsYXNzZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVpbXBsZW1lbnQgUHl0aG9uJ3MKLWFsZ29yaXRobS4gVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmb3JtIHdpbGwgYmUgIDpmdW5jOmBzdXBlcihjbGFzcywgb2JqKWAsIHdoaWNoCithbGdvcml0aG0uIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZm9ybSB3aWxsIGJlICBgYHN1cGVyKGNsYXNzLCBvYmopYGAsIHdoaWNoCiByZXR1cm5zICBhIGJvdW5kIHN1cGVyY2xhc3Mgb2JqZWN0IChub3QgdGhlIGFjdHVhbCBjbGFzcyBvYmplY3QpLiAgVGhpcyBmb3JtCiB3aWxsIGJlIHVzZWQgaW4gbWV0aG9kcyB0byBjYWxsIGEgbWV0aG9kIGluIHRoZSBzdXBlcmNsYXNzOyBmb3IgZXhhbXBsZSwKIDpjbGFzczpgRGAncyA6bWV0aDpgc2F2ZWAgbWV0aG9kIHdvdWxkIGxvb2sgbGlrZSB0aGlzOjoKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgICAgICAgICAuLi4KIAogOmZ1bmM6YHN1cGVyYCBjYW4gYWxzbyByZXR1cm4gdW5ib3VuZCBzdXBlcmNsYXNzIG9iamVjdHMgd2hlbiBjYWxsZWQgYXMKLTpmdW5jOmBzdXBlcihjbGFzcylgIG9yIDpmdW5jOmBzdXBlcihjbGFzczEsIGNsYXNzMilgLCBidXQgdGhpcyBwcm9iYWJseSB3b24ndAorYGBzdXBlcihjbGFzcylgYCBvciBgYHN1cGVyKGNsYXNzMSwgY2xhc3MyKWBgLCBidXQgdGhpcyBwcm9iYWJseSB3b24ndAogb2Z0ZW4gYmUgdXNlZnVsLgogCiAKQEAgLTMxNCwxMyArMzE0LDEzIEBACiBgYG9iai5wYXJlbnRgYCBpbnRvIGEgbWV0aG9kIGNhbGwgc3VjaCBhcyBgYG9iai5nZXRfcGFyZW50YGAuICBQeXRob24gMi4yIGFkZHMKIHNvbWUgbmV3IHdheXMgb2YgY29udHJvbGxpbmcgYXR0cmlidXRlIGFjY2Vzcy4KIAotRmlyc3QsIDptZXRoOmBfX2dldGF0dHJfXyhhdHRyX25hbWUpYCBpcyBzdGlsbCBzdXBwb3J0ZWQgYnkgbmV3LXN0eWxlIGNsYXNzZXMsCitGaXJzdCwgYGBfX2dldGF0dHJfXyhhdHRyX25hbWUpYGAgaXMgc3RpbGwgc3VwcG9ydGVkIGJ5IG5ldy1zdHlsZSBjbGFzc2VzLAogYW5kIG5vdGhpbmcgYWJvdXQgaXQgaGFzIGNoYW5nZWQuICBBcyBiZWZvcmUsIGl0IHdpbGwgYmUgY2FsbGVkIHdoZW4gYW4gYXR0ZW1wdAogaXMgbWFkZSB0byBhY2Nlc3MgYGBvYmouZm9vYGAgYW5kIG5vIGF0dHJpYnV0ZSBuYW1lZCBgYGZvb2BgIGlzIGZvdW5kIGluIHRoZQogaW5zdGFuY2UncyBkaWN0aW9uYXJ5LgogCiBOZXctc3R5bGUgY2xhc3NlcyBhbHNvIHN1cHBvcnQgYSBuZXcgbWV0aG9kLAotOm1ldGg6YF9fZ2V0YXR0cmlidXRlX18oYXR0cl9uYW1lKWAuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcyBpcworYGBfX2dldGF0dHJpYnV0ZV9fKGF0dHJfbmFtZSlgYC4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBtZXRob2RzIGlzCiB0aGF0IDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBpcyAqYWx3YXlzKiBjYWxsZWQgd2hlbmV2ZXIgYW55IGF0dHJpYnV0ZSBpcwogYWNjZXNzZWQsIHdoaWxlIHRoZSBvbGQgOm1ldGg6YF9fZ2V0YXR0cl9fYCBpcyBvbmx5IGNhbGxlZCBpZiBgYGZvb2BgIGlzbid0CiBmb3VuZCBpbiB0aGUgaW5zdGFuY2UncyBkaWN0aW9uYXJ5LgpAQCAtNDQxLDggKzQ0MSw4IEBACiAKIEluIFB5dGhvbiAyLjIsIGl0ZXJhdGlvbiBjYW4gYmUgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSwgYW5kIDptZXRoOmBfX2dldGl0ZW1fX2AKIG1ldGhvZHMgY2FuIGJlIGxpbWl0ZWQgdG8gY2xhc3NlcyB0aGF0IHJlYWxseSBkbyBzdXBwb3J0IHJhbmRvbSBhY2Nlc3MuICBUaGUKLWJhc2ljIGlkZWEgb2YgaXRlcmF0b3JzIGlzICBzaW1wbGUuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YGl0ZXIob2JqKWAKLW9yIGBgaXRlcihDLCBzZW50aW5lbClgYCwgaXMgdXNlZCB0byBnZXQgYW4gaXRlcmF0b3IuIDpmdW5jOmBpdGVyKG9iailgIHJldHVybnMKK2Jhc2ljIGlkZWEgb2YgaXRlcmF0b3JzIGlzICBzaW1wbGUuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgYGBpdGVyKG9iailgYAorb3IgYGBpdGVyKEMsIHNlbnRpbmVsKWBgLCBpcyB1c2VkIHRvIGdldCBhbiBpdGVyYXRvci4gYGBpdGVyKG9iailgYCByZXR1cm5zCiBhbiBpdGVyYXRvciBmb3IgdGhlIG9iamVjdCAqb2JqKiwgd2hpbGUgYGBpdGVyKEMsIHNlbnRpbmVsKWBgIHJldHVybnMgYW4KIGl0ZXJhdG9yIHRoYXQgd2lsbCBpbnZva2UgdGhlIGNhbGxhYmxlIG9iamVjdCAqQyogdW50aWwgaXQgcmV0dXJucyAqc2VudGluZWwqIHRvCiBzaWduYWwgdGhhdCB0aGUgaXRlcmF0b3IgaXMgZG9uZS4KQEAgLTc5Myw3ICs3OTMsNyBAQAogCiBBbm90aGVyIGNoYW5nZSBpcyBzaW1wbGVyIHRvIGV4cGxhaW4uIFNpbmNlIHRoZWlyIGludHJvZHVjdGlvbiwgVW5pY29kZSBzdHJpbmdzCiBoYXZlIHN1cHBvcnRlZCBhbiA6bWV0aDpgZW5jb2RlYCBtZXRob2QgdG8gY29udmVydCB0aGUgc3RyaW5nIHRvIGEgc2VsZWN0ZWQKLWVuY29kaW5nIHN1Y2ggYXMgVVRGLTggb3IgTGF0aW4tMS4gIEEgc3ltbWV0cmljIDptZXRoOmBkZWNvZGUoWyplbmNvZGluZypdKWAKK2VuY29kaW5nIHN1Y2ggYXMgVVRGLTggb3IgTGF0aW4tMS4gIEEgc3ltbWV0cmljIGBgZGVjb2RlKFsqZW5jb2RpbmcqXSlgYAogbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIDgtYml0IHN0cmluZ3MgKHRob3VnaCBub3QgdG8gVW5pY29kZSBzdHJpbmdzKSBpbiAyLjIuCiA6bWV0aDpgZGVjb2RlYCBhc3N1bWVzIHRoYXQgdGhlIHN0cmluZyBpcyBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGFuZCBkZWNvZGVzCiBpdCwgcmV0dXJuaW5nIHdoYXRldmVyIGlzIHJldHVybmVkIGJ5IHRoZSBjb2RlYy4KQEAgLTEyMDMsNyArMTIwMyw3IEBACiAgIHRvIGFuIE1CQ1MgZW5jb2RlZCBzdHJpbmcsIGFzIHVzZWQgYnkgdGhlIE1pY3Jvc29mdCBmaWxlIEFQSXMuICBBcyBNQkNTIGlzCiAgIGV4cGxpY2l0bHkgdXNlZCBieSB0aGUgZmlsZSBBUElzLCBQeXRob24ncyBjaG9pY2Ugb2YgQVNDSUkgYXMgdGhlIGRlZmF1bHQKICAgZW5jb2RpbmcgdHVybnMgb3V0IHRvIGJlIGFuIGFubm95YW5jZS4gIE9uIFVuaXgsIHRoZSBsb2NhbGUncyBjaGFyYWN0ZXIgc2V0IGlzCi0gIHVzZWQgaWYgOmZ1bmM6YGxvY2FsZS5ubF9sYW5naW5mbyhDT0RFU0VUKWAgaXMgYXZhaWxhYmxlLiAgKFdpbmRvd3Mgc3VwcG9ydCB3YXMKKyAgdXNlZCBpZiBgYGxvY2FsZS5ubF9sYW5naW5mbyhDT0RFU0VUKWBgIGlzIGF2YWlsYWJsZS4gIChXaW5kb3dzIHN1cHBvcnQgd2FzCiAgIGNvbnRyaWJ1dGVkIGJ5IE1hcmsgSGFtbW9uZCB3aXRoIGFzc2lzdGFuY2UgZnJvbSBNYXJjLUFuZHLDqSBMZW1idXJnLiBVbml4CiAgIHN1cHBvcnQgd2FzIGFkZGVkIGJ5IE1hcnRpbiB2b24gTMO2d2lzLikKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4zLnJzdAppbmRleCBmNGM3OWU0Li5mMGU0OGQ5IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4zLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4zLnJzdApAQCAtNTA0LDggKzUwNCw4IEBACiAgICBaZXJvRGl2aXNpb25FcnJvcjogaW50ZWdlciBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVybwogCiBTbGlnaHRseSBtb3JlIGFkdmFuY2VkIHByb2dyYW1zIHdpbGwgdXNlIGEgbG9nZ2VyIG90aGVyIHRoYW4gdGhlIHJvb3QgbG9nZ2VyLgotVGhlIDpmdW5jOmBnZXRMb2dnZXIobmFtZSlgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IGEgcGFydGljdWxhciBsb2csIGNyZWF0aW5nCi1pdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4gOmZ1bmM6YGdldExvZ2dlcihOb25lKWAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CitUaGUgYGBnZXRMb2dnZXIobmFtZSlgYCBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBhIHBhcnRpY3VsYXIgbG9nLCBjcmVhdGluZworaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuIGBgZ2V0TG9nZ2VyKE5vbmUpYGAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CiAKICAgIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdzZXJ2ZXInKQogICAgIC4uLgpAQCAtNzI0LDEwICs3MjQsMTAgQEAKICAgb2JqZWN0cyB0byBpdC4gIEFkZGl0aW9uYWwgYnVpbHQtaW4gYW5kIGZyb3plbiBtb2R1bGVzIGNhbiBiZSBpbXBvcnRlZCBieSBhbgogICBvYmplY3QgYWRkZWQgdG8gdGhpcyBsaXN0LgogCi1JbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIDptZXRoOmBmaW5kX21vZHVsZShmdWxsbmFtZSwKLXBhdGg9Tm9uZSlgLiAgKmZ1bGxuYW1lKiB3aWxsIGJlIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwgZS5nLiBgYHN0cmluZ2BgIG9yCitJbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIGBgZmluZF9tb2R1bGUoZnVsbG5hbWUsCitwYXRoPU5vbmUpYGAuICAqZnVsbG5hbWUqIHdpbGwgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lLCBlLmcuIGBgc3RyaW5nYGAgb3IKIGBgZGlzdHV0aWxzLmNvcmVgYC4gIDptZXRoOmBmaW5kX21vZHVsZWAgbXVzdCByZXR1cm4gYSBsb2FkZXIgb2JqZWN0IHRoYXQgaGFzIGEKLXNpbmdsZSBtZXRob2QsIDptZXRoOmBsb2FkX21vZHVsZShmdWxsbmFtZSlgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCitzaW5nbGUgbWV0aG9kLCBgYGxvYWRfbW9kdWxlKGZ1bGxuYW1lKWBgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCiBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QuCiAKIFBzZXVkby1jb2RlIGZvciBQeXRob24ncyBuZXcgaW1wb3J0IGxvZ2ljLCB0aGVyZWZvcmUsIGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXMKQEAgLTkzNSw3ICs5MzUsNyBAQAogICAgWzAsIDIsIDRdCiAKIFRvIHNpbXBsaWZ5IGltcGxlbWVudGluZyBzZXF1ZW5jZXMgdGhhdCBzdXBwb3J0IGV4dGVuZGVkIHNsaWNpbmcsIHNsaWNlIG9iamVjdHMKLW5vdyBoYXZlIGEgbWV0aG9kIDptZXRoOmBpbmRpY2VzKGxlbmd0aClgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCitub3cgaGF2ZSBhIG1ldGhvZCBgYGluZGljZXMobGVuZ3RoKWBgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCiByZXR1cm5zIGEgYGAoc3RhcnQsIHN0b3AsIHN0ZXApYGAgdHVwbGUgdGhhdCBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvCiA6ZnVuYzpgcmFuZ2VgLiA6bWV0aDpgaW5kaWNlc2AgaGFuZGxlcyBvbWl0dGVkIGFuZCBvdXQtb2YtYm91bmRzIGluZGljZXMgaW4gYQogbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcyAoYW5kIHRoaXMgaW5ub2N1b3VzIHBocmFzZSBoaWRlcyBhIHdlbHRlcgpAQCAtOTg0LDcgKzk4NCw3IEBACiAqIEJ1aWx0LWluIHR5cGVzIG5vdyBzdXBwb3J0IHRoZSBleHRlbmRlZCBzbGljaW5nIHN5bnRheCwgYXMgZGVzY3JpYmVkIGluCiAgIHNlY3Rpb24gOnJlZjpgc2VjdGlvbi1zbGljZXNgIG9mIHRoaXMgZG9jdW1lbnQuCiAKLSogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBzdW0oaXRlcmFibGUsIHN0YXJ0PTApYCwgIGFkZHMgdXAgdGhlIG51bWVyaWMKKyogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgc3VtKGl0ZXJhYmxlLCBzdGFydD0wKWBgLCAgYWRkcyB1cCB0aGUgbnVtZXJpYwogICBpdGVtcyBpbiB0aGUgaXRlcmFibGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZWlyIHN1bS4gIDpmdW5jOmBzdW1gIG9ubHkgYWNjZXB0cwogICBudW1iZXJzLCBtZWFuaW5nIHRoYXQgeW91IGNhbid0IHVzZSBpdCB0byBjb25jYXRlbmF0ZSBhIGJ1bmNoIG9mIHN0cmluZ3MuCiAgIChDb250cmlidXRlZCBieSBBbGV4IE1hcnRlbGxpLikKQEAgLTk5OCw3ICs5OTgsNyBAQAogICBpdHMgaW5kZXgsIG5vdyB0YWtlcyBvcHRpb25hbCAgKnN0YXJ0KiBhbmQgKnN0b3AqIGFyZ3VtZW50cyB0byBsaW1pdCB0aGUgc2VhcmNoCiAgIHRvICBvbmx5IHBhcnQgb2YgdGhlIGxpc3QuCiAKLSogRGljdGlvbmFyaWVzIGhhdmUgYSBuZXcgbWV0aG9kLCA6bWV0aDpgcG9wKGtleVssICpkZWZhdWx0Kl0pYCwgdGhhdCByZXR1cm5zCisqIERpY3Rpb25hcmllcyBoYXZlIGEgbmV3IG1ldGhvZCwgYGBwb3Aoa2V5WywgKmRlZmF1bHQqXSlgYCwgdGhhdCByZXR1cm5zCiAgIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvICprZXkqIGFuZCByZW1vdmVzIHRoYXQga2V5L3ZhbHVlIHBhaXIgZnJvbSB0aGUKICAgZGljdGlvbmFyeS4gIElmIHRoZSByZXF1ZXN0ZWQga2V5IGlzbid0IHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksICpkZWZhdWx0KiBpcwogICByZXR1cm5lZCBpZiBpdCdzIHNwZWNpZmllZCBhbmQgOmV4YzpgS2V5RXJyb3JgIHJhaXNlZCBpZiBpdCBpc24ndC4gOjoKQEAgLTEwMjAsNyArMTAyMCw3IEBACiAgICAgIHt9CiAgICAgID4+PgogCi0gIFRoZXJlJ3MgYWxzbyBhIG5ldyBjbGFzcyBtZXRob2QsICA6bWV0aDpgZGljdC5mcm9ta2V5cyhpdGVyYWJsZSwgdmFsdWUpYCwgdGhhdAorICBUaGVyZSdzIGFsc28gYSBuZXcgY2xhc3MgbWV0aG9kLCAgYGBkaWN0LmZyb21rZXlzKGl0ZXJhYmxlLCB2YWx1ZSlgYCwgdGhhdAogICBjcmVhdGVzIGEgZGljdGlvbmFyeSB3aXRoIGtleXMgdGFrZW4gZnJvbSB0aGUgc3VwcGxpZWQgaXRlcmF0b3IgKml0ZXJhYmxlKiBhbmQKICAgYWxsIHZhbHVlcyBzZXQgdG8gKnZhbHVlKiwgZGVmYXVsdGluZyB0byBgYE5vbmVgYC4KIApAQCAtMTA5Myw3ICsxMDkzLDcgQEAKICAgMTAwIGJ5dGVjb2Rlcywgc3BlZWRpbmcgdXAgc2luZ2xlLXRocmVhZGVkIGFwcGxpY2F0aW9ucyBieSByZWR1Y2luZyB0aGUKICAgc3dpdGNoaW5nIG92ZXJoZWFkLiAgU29tZSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9ucyBtYXkgc3VmZmVyIHNsb3dlciByZXNwb25zZQogICB0aW1lLCBidXQgdGhhdCdzIGVhc2lseSBmaXhlZCBieSBzZXR0aW5nIHRoZSBsaW1pdCBiYWNrIHRvIGEgbG93ZXIgbnVtYmVyIHVzaW5nCi0gIDpmdW5jOmBzeXMuc2V0Y2hlY2tpbnRlcnZhbChOKWAuIFRoZSBsaW1pdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggdGhlIG5ldworICBgYHN5cy5zZXRjaGVja2ludGVydmFsKE4pYGAuIFRoZSBsaW1pdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggdGhlIG5ldwogICA6ZnVuYzpgc3lzLmdldGNoZWNraW50ZXJ2YWxgIGZ1bmN0aW9uLgogCiAqIE9uZSBtaW5vciBidXQgZmFyLXJlYWNoaW5nIGNoYW5nZSBpcyB0aGF0IHRoZSBuYW1lcyBvZiBleHRlbnNpb24gdHlwZXMgZGVmaW5lZApAQCAtMTI3MiwxMCArMTI3MiwxMCBAQAogCiAqIFByZXZpb3VzbHkgdGhlIDptb2Q6YGRvY3Rlc3RgIG1vZHVsZSB3b3VsZCBvbmx5IHNlYXJjaCB0aGUgZG9jc3RyaW5ncyBvZgogICBwdWJsaWMgbWV0aG9kcyBhbmQgZnVuY3Rpb25zIGZvciB0ZXN0IGNhc2VzLCBidXQgaXQgbm93IGFsc28gZXhhbWluZXMgcHJpdmF0ZQotICBvbmVzIGFzIHdlbGwuICBUaGUgOmZ1bmM6YERvY1Rlc3RTdWl0ZShgIGZ1bmN0aW9uIGNyZWF0ZXMgYQorICBvbmVzIGFzIHdlbGwuICBUaGUgOmZ1bmM6YERvY1Rlc3RTdWl0ZWAgZnVuY3Rpb24gY3JlYXRlcyBhCiAgIDpjbGFzczpgdW5pdHRlc3QuVGVzdFN1aXRlYCBvYmplY3QgZnJvbSBhIHNldCBvZiA6bW9kOmBkb2N0ZXN0YCB0ZXN0cy4KIAotKiBUaGUgbmV3IDpmdW5jOmBnYy5nZXRfcmVmZXJlbnRzKG9iamVjdClgIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUKKyogVGhlIG5ldyBgYGdjLmdldF9yZWZlcmVudHMob2JqZWN0KWBgIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUKICAgb2JqZWN0cyByZWZlcmVuY2VkIGJ5ICpvYmplY3QqLgogCiAqIFRoZSA6bW9kOmBnZXRvcHRgIG1vZHVsZSBnYWluZWQgYSBuZXcgZnVuY3Rpb24sIDpmdW5jOmBnbnVfZ2V0b3B0YCwgdGhhdApAQCAtMTM0Nyw4ICsxMzQ3LDggQEAKICAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KICAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIAotKiBUd28gbmV3IGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlLCA6ZnVuYzpgZGVncmVlcyhyYWRzKWAgYW5kCi0gIDpmdW5jOmByYWRpYW5zKGRlZ3MpYCwgY29udmVydCBiZXR3ZWVuIHJhZGlhbnMgYW5kIGRlZ3JlZXMuICBPdGhlciBmdW5jdGlvbnMgaW4KKyogVHdvIG5ldyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YG1hdGhgIG1vZHVsZSwgYGBkZWdyZWVzKHJhZHMpYGAgYW5kCisgIGBgcmFkaWFucyhkZWdzKWBgLCBjb252ZXJ0IGJldHdlZW4gcmFkaWFucyBhbmQgZGVncmVlcy4gIE90aGVyIGZ1bmN0aW9ucyBpbgogICB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlIHN1Y2ggYXMgOmZ1bmM6YG1hdGguc2luYCBhbmQgOmZ1bmM6YG1hdGguY29zYCBoYXZlIGFsd2F5cwogICByZXF1aXJlZCBpbnB1dCB2YWx1ZXMgbWVhc3VyZWQgaW4gcmFkaWFucy4gIEFsc28sIGFuIG9wdGlvbmFsICpiYXNlKiBhcmd1bWVudAogICB3YXMgYWRkZWQgdG8gOmZ1bmM6YG1hdGgubG9nYCB0byBtYWtlIGl0IGVhc2llciB0byBjb21wdXRlIGxvZ2FyaXRobXMgZm9yIGJhc2VzCkBAIC0xNDA1LDcgKzE0MDUsNyBAQAogICBhbmQgdGhlcmVmb3JlIGZhc3RlciBwZXJmb3JtYW5jZS4gIFNldHRpbmcgdGhlIHBhcnNlciBvYmplY3QncwogICA6YXR0cjpgYnVmZmVyX3RleHRgIGF0dHJpYnV0ZSB0byA6Y29uc3Q6YFRydWVgIHdpbGwgZW5hYmxlIGJ1ZmZlcmluZy4KIAotKiBUaGUgOmZ1bmM6YHNhbXBsZShwb3B1bGF0aW9uLCBrKWAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmByYW5kb21gCisqIFRoZSBgYHNhbXBsZShwb3B1bGF0aW9uLCBrKWBgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgcmFuZG9tYAogICBtb2R1bGUuICAqcG9wdWxhdGlvbiogaXMgYSBzZXF1ZW5jZSBvciA6Y2xhc3M6YHhyYW5nZWAgb2JqZWN0IGNvbnRhaW5pbmcgdGhlCiAgIGVsZW1lbnRzIG9mIGEgcG9wdWxhdGlvbiwgYW5kIDpmdW5jOmBzYW1wbGVgIGNob29zZXMgKmsqIGVsZW1lbnRzIGZyb20gdGhlCiAgIHBvcHVsYXRpb24gd2l0aG91dCByZXBsYWNpbmcgY2hvc2VuIGVsZW1lbnRzLiAgKmsqIGNhbiBiZSBhbnkgdmFsdWUgdXAgdG8KQEAgLTE0NTEsNyArMTQ1MSw3IEBACiAgIGVuY3J5cHRpb24gaXMgbm90IGJlbGlldmVkIHRvIGJlIHNlY3VyZS4gIElmIHlvdSBuZWVkIGVuY3J5cHRpb24sIHVzZSBvbmUgb2YgdGhlCiAgIHNldmVyYWwgQUVTIFB5dGhvbiBtb2R1bGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBzZXBhcmF0ZWx5LgogCi0qIFRoZSA6bW9kOmBzaHV0aWxgIG1vZHVsZSBnYWluZWQgYSA6ZnVuYzpgbW92ZShzcmMsIGRlc3QpYCBmdW5jdGlvbiB0aGF0CisqIFRoZSA6bW9kOmBzaHV0aWxgIG1vZHVsZSBnYWluZWQgYSBgYG1vdmUoc3JjLCBkZXN0KWBgIGZ1bmN0aW9uIHRoYXQKICAgcmVjdXJzaXZlbHkgbW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBhIG5ldyBsb2NhdGlvbi4KIAogKiBTdXBwb3J0IGZvciBtb3JlIGFkdmFuY2VkIFBPU0lYIHNpZ25hbCBoYW5kbGluZyB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YHNpZ25hbGAKQEAgLTE0NTksNyArMTQ1OSw3IEBACiAgIHBsYXRmb3Jtcy4KIAogKiBUaGUgOm1vZDpgc29ja2V0YCBtb2R1bGUgbm93IHN1cHBvcnRzIHRpbWVvdXRzLiAgWW91IGNhbiBjYWxsIHRoZQotICA6bWV0aDpgc2V0dGltZW91dCh0KWAgbWV0aG9kIG9uIGEgc29ja2V0IG9iamVjdCB0byBzZXQgYSB0aW1lb3V0IG9mICp0KiBzZWNvbmRzLgorICBgYHNldHRpbWVvdXQodClgYCBtZXRob2Qgb24gYSBzb2NrZXQgb2JqZWN0IHRvIHNldCBhIHRpbWVvdXQgb2YgKnQqIHNlY29uZHMuCiAgIFN1YnNlcXVlbnQgc29ja2V0IG9wZXJhdGlvbnMgdGhhdCB0YWtlIGxvbmdlciB0aGFuICp0KiBzZWNvbmRzIHRvIGNvbXBsZXRlIHdpbGwKICAgYWJvcnQgYW5kIHJhaXNlIGEgOmV4Yzpgc29ja2V0LnRpbWVvdXRgIGV4Y2VwdGlvbi4KIApAQCAtMTQ4MCw5ICsxNDgwLDkgQEAKICAgOnByb2dyYW06YHRhcmBcIC1mb3JtYXQgYXJjaGl2ZSBmaWxlcy4gKENvbnRyaWJ1dGVkIGJ5IExhcnMgR3VzdMOkYmVsLikKIAogKiBUaGUgbmV3IDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciB3cmFwcGluZyBzdHJpbmdzCi0gIGNvbnRhaW5pbmcgcGFyYWdyYXBocyBvZiB0ZXh0LiAgVGhlIDpmdW5jOmB3cmFwKHRleHQsIHdpZHRoKWAgZnVuY3Rpb24gdGFrZXMgYQorICBjb250YWluaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4gIFRoZSBgYHdyYXAodGV4dCwgd2lkdGgpYGAgZnVuY3Rpb24gdGFrZXMgYQogICBzdHJpbmcgYW5kIHJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIHRleHQgc3BsaXQgaW50byBsaW5lcyBvZiBubyBtb3JlIHRoYW4KLSAgdGhlIGNob3NlbiB3aWR0aC4gIFRoZSA6ZnVuYzpgZmlsbCh0ZXh0LCB3aWR0aClgIGZ1bmN0aW9uIHJldHVybnMgYSBzaW5nbGUKKyAgdGhlIGNob3NlbiB3aWR0aC4gIFRoZSBgYGZpbGwodGV4dCwgd2lkdGgpYGAgZnVuY3Rpb24gcmV0dXJucyBhIHNpbmdsZQogICBzdHJpbmcsIHJlZm9ybWF0dGVkIHRvIGZpdCBpbnRvIGxpbmVzIG5vIGxvbmdlciB0aGFuIHRoZSBjaG9zZW4gd2lkdGguIChBcyB5b3UKICAgY2FuIGd1ZXNzLCA6ZnVuYzpgZmlsbGAgaXMgYnVpbHQgb24gdG9wIG9mIDpmdW5jOmB3cmFwYC4gIEZvciBleGFtcGxlOjoKIApAQCAtMTkwMyw3ICsxOTAzLDcgQEAKICAgc2hvcnQgaW50YCwgIGBgSWBgIGZvciA6Yzp0eXBlOmB1bnNpZ25lZCBpbnRgLCAgYW5kIGBgS2BgIGZvciA6Yzp0eXBlOmB1bnNpZ25lZAogICBsb25nIGxvbmdgLgogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeU9iamVjdF9EZWxJdGVtU3RyaW5nKG1hcHBpbmcsIGNoYXIgXCprZXkpYCB3YXMgYWRkZWQKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlPYmplY3RfRGVsSXRlbVN0cmluZyhtYXBwaW5nLCBjaGFyICprZXkpYGAgd2FzIGFkZGVkCiAgIGFzIHNob3J0aGFuZCBmb3IgYGBQeU9iamVjdF9EZWxJdGVtKG1hcHBpbmcsIFB5U3RyaW5nX05ldyhrZXkpKWBgLgogCiAqIEZpbGUgb2JqZWN0cyBub3cgbWFuYWdlIHRoZWlyIGludGVybmFsIHN0cmluZyBidWZmZXIgZGlmZmVyZW50bHksIGluY3JlYXNpbmcKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjQucnN0IGIvRG9jL3doYXRzbmV3LzIuNC5yc3QKaW5kZXggOWQzMzlhNS4uNWEyOGY4OSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuNC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuNC5yc3QKQEAgLTM3LDcgKzM3LDcgQEAKIAogUHl0aG9uIDIuMyBpbnRyb2R1Y2VkIHRoZSA6bW9kOmBzZXRzYCBtb2R1bGUuICBDIGltcGxlbWVudGF0aW9ucyBvZiBzZXQgZGF0YQogdHlwZXMgaGF2ZSBub3cgYmVlbiBhZGRlZCB0byB0aGUgUHl0aG9uIGNvcmUgYXMgdHdvIG5ldyBidWlsdC1pbiB0eXBlcywKLTpmdW5jOmBzZXQoaXRlcmFibGUpYCBhbmQgOmZ1bmM6YGZyb3plbnNldChpdGVyYWJsZSlgLiAgVGhleSBwcm92aWRlIGhpZ2ggc3BlZWQKK2Bgc2V0KGl0ZXJhYmxlKWBgIGFuZCBgYGZyb3plbnNldChpdGVyYWJsZSlgYC4gIFRoZXkgcHJvdmlkZSBoaWdoIHNwZWVkCiBvcGVyYXRpb25zIGZvciBtZW1iZXJzaGlwIHRlc3RpbmcsIGZvciBlbGltaW5hdGluZyBkdXBsaWNhdGVzIGZyb20gc2VxdWVuY2VzLAogYW5kIGZvciBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBsaWtlIHVuaW9ucywgaW50ZXJzZWN0aW9ucywgZGlmZmVyZW5jZXMsIGFuZAogc3ltbWV0cmljIGRpZmZlcmVuY2VzLiA6OgpAQCAtMzQ2LDcgKzM0Niw3IEBACiBQRVAgMzIyOiBSZXZlcnNlIEl0ZXJhdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmByZXZlcnNlZChzZXEpYCwgdGFrZXMgYSBzZXF1ZW5jZSBhbmQgcmV0dXJucyBhbgorQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgcmV2ZXJzZWQoc2VxKWBgLCB0YWtlcyBhIHNlcXVlbmNlIGFuZCByZXR1cm5zIGFuCiBpdGVyYXRvciB0aGF0IGxvb3BzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXF1ZW5jZSAgaW4gcmV2ZXJzZSBvcmRlci4gICA6OgogCiAgICA+Pj4gZm9yIGkgaW4gcmV2ZXJzZWQoeHJhbmdlKDEsNCkpOgpAQCAtMzg0LDcgKzM4NCw3IEBACiAKIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IHByb3ZpZGVzIGEgbnVtYmVyIG9mIHdheXMgdG8gZXhlY3V0ZSBhIHN1YnByb2Nlc3MsIG9mZmVyaW5nCiBkaWZmZXJlbnQgZmVhdHVyZXMgYW5kIGRpZmZlcmVudCBsZXZlbHMgb2YgY29tcGxleGl0eS4KLTpmdW5jOmBvcy5zeXN0ZW0oY29tbWFuZClgIGlzIGVhc3kgdG8gdXNlLCBidXQgc2xvdyAoaXQgcnVucyBhIHNoZWxsIHByb2Nlc3MKK2Bgb3Muc3lzdGVtKGNvbW1hbmQpYGAgaXMgZWFzeSB0byB1c2UsIGJ1dCBzbG93IChpdCBydW5zIGEgc2hlbGwgcHJvY2Vzcwogd2hpY2ggZXhlY3V0ZXMgdGhlIGNvbW1hbmQpIGFuZCBkYW5nZXJvdXMgKHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQgZXNjYXBpbmcKIHRoZSBzaGVsbCdzIG1ldGFjaGFyYWN0ZXJzKS4gIFRoZSA6bW9kOmBwb3BlbjJgIG1vZHVsZSBvZmZlcnMgY2xhc3NlcyB0aGF0IGNhbgogY2FwdHVyZSBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIGZyb20gdGhlIHN1YnByb2Nlc3MsIGJ1dCB0aGUgbmFtaW5nCkBAIC00MzEsOCArNDMxLDggQEAKIAogT25jZSB5b3UndmUgY3JlYXRlZCB0aGUgOmNsYXNzOmBQb3BlbmAgaW5zdGFuY2UsICB5b3UgY2FuIGNhbGwgaXRzIDptZXRoOmB3YWl0YAogbWV0aG9kIHRvIHBhdXNlIHVudGlsIHRoZSBzdWJwcm9jZXNzIGhhcyBleGl0ZWQsIDptZXRoOmBwb2xsYCB0byBjaGVjayBpZiBpdCdzCi1leGl0ZWQgd2l0aG91dCBwYXVzaW5nLCAgb3IgOm1ldGg6YGNvbW11bmljYXRlKGRhdGEpYCB0byBzZW5kIHRoZSBzdHJpbmcgKmRhdGEqCi10byB0aGUgc3VicHJvY2VzcydzIHN0YW5kYXJkIGlucHV0LiAgIDptZXRoOmBjb21tdW5pY2F0ZShkYXRhKWAgIHRoZW4gcmVhZHMgYW55CitleGl0ZWQgd2l0aG91dCBwYXVzaW5nLCAgb3IgYGBjb21tdW5pY2F0ZShkYXRhKWBgIHRvIHNlbmQgdGhlIHN0cmluZyAqZGF0YSoKK3RvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RhbmRhcmQgaW5wdXQuICAgYGBjb21tdW5pY2F0ZShkYXRhKWBgICB0aGVuIHJlYWRzIGFueQogZGF0YSB0aGF0IHRoZSBzdWJwcm9jZXNzIGhhcyBzZW50IHRvIGl0cyBzdGFuZGFyZCBvdXRwdXQgIG9yIHN0YW5kYXJkIGVycm9yLAogcmV0dXJuaW5nIGEgdHVwbGUgYGAoc3Rkb3V0X2RhdGEsIHN0ZGVycl9kYXRhKWBgLgogCkBAIC03NDksMTAgKzc0OSwxMCBAQAogVGhlIHNvbHV0aW9uIGRlc2NyaWJlZCBpbiB0aGUgUEVQIGlzIHRvIGFkZCB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIHRoZSBQeXRob24KIEFQSSB0aGF0IHBlcmZvcm0gQVNDSUktb25seSBjb252ZXJzaW9ucywgaWdub3JpbmcgdGhlIGxvY2FsZSBzZXR0aW5nOgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWAgIGFuZCA6YzpmdW5jOmBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYAorKiBgYFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWBgICBhbmQgYGBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYGAKICAgYm90aCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgQyA6Yzp0eXBlOmBkb3VibGVgLgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfZm9ybWF0ZChidWZmZXIsIGJ1Zl9sZW4sIGZvcm1hdCwgZClgIGNvbnZlcnRzIGEKKyogYGBQeU9TX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCBidWZfbGVuLCBmb3JtYXQsIGQpYGAgY29udmVydHMgYQogICA6Yzp0eXBlOmBkb3VibGVgIHRvIGFuIEFTQ0lJIHN0cmluZy4KIAogVGhlIGNvZGUgZm9yIHRoZXNlIGZ1bmN0aW9ucyBjYW1lIGZyb20gdGhlIEdMaWIgbGlicmFyeQpAQCAtNzc4LDcgKzc3OCw3IEBACiAqIERlY29yYXRvcnMgZm9yIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB3ZXJlIGFkZGVkICg6cGVwOmAzMThgKS4KIAogKiBCdWlsdC1pbiA6ZnVuYzpgc2V0YCBhbmQgOmZ1bmM6YGZyb3plbnNldGAgdHlwZXMgd2VyZSAgYWRkZWQgKDpwZXA6YDIxOGApLgotICBPdGhlciBuZXcgYnVpbHQtaW5zIGluY2x1ZGUgdGhlIDpmdW5jOmByZXZlcnNlZChzZXEpYCBmdW5jdGlvbiAoOnBlcDpgMzIyYCkuCisgIE90aGVyIG5ldyBidWlsdC1pbnMgaW5jbHVkZSB0aGUgYGByZXZlcnNlZChzZXEpYGAgZnVuY3Rpb24gKDpwZXA6YDMyMmApLgogCiAqIEdlbmVyYXRvciBleHByZXNzaW9ucyB3ZXJlIGFkZGVkICg6cGVwOmAyODlgKS4KIApAQCAtODU3LDcgKzg1Nyw3IEBACiAKICAgKEFsbCBjaGFuZ2VzIHRvIDptZXRoOmBzb3J0YCBjb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKLSogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YHNvcnRlZChpdGVyYWJsZSlgIHRoYXQgd29ya3MgbGlrZSB0aGUKKyogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gYGBzb3J0ZWQoaXRlcmFibGUpYGAgdGhhdCB3b3JrcyBsaWtlIHRoZQogICBpbi1wbGFjZSA6bWV0aDpgbGlzdC5zb3J0YCBtZXRob2QgYnV0IGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zLiAgVGhlCiAgIGRpZmZlcmVuY2VzIGFyZToKIApAQCAtODk4LDggKzg5OCw4IEBACiAgIEZvciBleGFtcGxlLCAgeW91IGNhbiBub3cgcnVuIHRoZSBQeXRob24gcHJvZmlsZXIgd2l0aCBgYHB5dGhvbiAtbSBwcm9maWxlYGAuCiAgIChDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4uKQogCi0qIFRoZSA6ZnVuYzpgZXZhbChleHByLCBnbG9iYWxzLCBsb2NhbHMpYCBhbmQgOmZ1bmM6YGV4ZWNmaWxlKGZpbGVuYW1lLCBnbG9iYWxzLAotICBsb2NhbHMpYCBmdW5jdGlvbnMgYW5kIHRoZSBgYGV4ZWNgYCBzdGF0ZW1lbnQgbm93IGFjY2VwdCBhbnkgbWFwcGluZyB0eXBlCisqIFRoZSBgYGV2YWwoZXhwciwgZ2xvYmFscywgbG9jYWxzKWBgIGFuZCBgYGV4ZWNmaWxlKGZpbGVuYW1lLCBnbG9iYWxzLAorICBsb2NhbHMpYGAgZnVuY3Rpb25zIGFuZCB0aGUgYGBleGVjYGAgc3RhdGVtZW50IG5vdyBhY2NlcHQgYW55IG1hcHBpbmcgdHlwZQogICBmb3IgdGhlICpsb2NhbHMqIHBhcmFtZXRlci4gIFByZXZpb3VzbHkgdGhpcyBoYWQgdG8gYmUgYSByZWd1bGFyIFB5dGhvbgogICBkaWN0aW9uYXJ5LiAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIApAQCAtMTA5MCw3ICsxMDkwLDcgQEAKICAgWXZlcyBEaW9ubmUpIGFuZCBuZXcgOm1ldGg6YGRlbGV0ZWFjbGAgYW5kIDptZXRoOmBteXJpZ2h0c2AgbWV0aG9kcyAoY29udHJpYnV0ZWQKICAgYnkgQXJuYXVkIE1hemluKS4KIAotKiBUaGUgOm1vZDpgaXRlcnRvb2xzYCBtb2R1bGUgZ2FpbmVkIGEgOmZ1bmM6YGdyb3VwYnkoaXRlcmFibGVbLCAqZnVuYypdKWAKKyogVGhlIDptb2Q6YGl0ZXJ0b29sc2AgbW9kdWxlIGdhaW5lZCBhIGBgZ3JvdXBieShpdGVyYWJsZVssICpmdW5jKl0pYGAKICAgZnVuY3Rpb24uICppdGVyYWJsZSogaXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8gcmV0dXJuIGEgc3RyZWFtCiAgIG9mIGVsZW1lbnRzLCBhbmQgdGhlIG9wdGlvbmFsICpmdW5jKiBwYXJhbWV0ZXIgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuCiAgIGVsZW1lbnQgYW5kIHJldHVybnMgYSBrZXkgdmFsdWU7IGlmIG9taXR0ZWQsIHRoZSBrZXkgaXMgc2ltcGx5IHRoZSBlbGVtZW50CkBAIC0xMTM5LDcgKzExMzksNyBAQAogCiAgIChDb250cmlidXRlZCBieSBIeWUtU2hpayBDaGFuZy4pCiAKLSogOm1vZDpgaXRlcnRvb2xzYCBhbHNvIGdhaW5lZCBhIGZ1bmN0aW9uIG5hbWVkIDpmdW5jOmB0ZWUoaXRlcmF0b3IsIE4pYCB0aGF0CisqIDptb2Q6YGl0ZXJ0b29sc2AgYWxzbyBnYWluZWQgYSBmdW5jdGlvbiBuYW1lZCBgYHRlZShpdGVyYXRvciwgTilgYCB0aGF0CiAgIHJldHVybnMgKk4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyB0aGF0IHJlcGxpY2F0ZSAqaXRlcmF0b3IqLiAgSWYgKk4qIGlzIG9taXR0ZWQsCiAgIHRoZSBkZWZhdWx0IGlzIDIuIDo6CiAKQEAgLTExNzcsNyArMTE3Nyw3IEBACiAgICAgICAgICBsZXZlbD0wLCAgIyBMb2cgYWxsIG1lc3NhZ2VzCiAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKTolKHByb2Nlc3MpOiUodGhyZWFkKTolKG1lc3NhZ2UpJykKIAotICBPdGhlciBhZGRpdGlvbnMgdG8gdGhlIDptb2Q6YGxvZ2dpbmdgIHBhY2thZ2UgaW5jbHVkZSBhIDptZXRoOmBsb2cobGV2ZWwsIG1zZylgCisgIE90aGVyIGFkZGl0aW9ucyB0byB0aGUgOm1vZDpgbG9nZ2luZ2AgcGFja2FnZSBpbmNsdWRlIGEgYGBsb2cobGV2ZWwsIG1zZylgYAogICBjb252ZW5pZW5jZSBtZXRob2QsIGFzIHdlbGwgYXMgYSA6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAgY2xhc3MgdGhhdAogICByb3RhdGVzIGl0cyBsb2cgZmlsZXMgYXQgYSB0aW1lZCBpbnRlcnZhbC4gIFRoZSBtb2R1bGUgYWxyZWFkeSBoYWQKICAgOmNsYXNzOmBSb3RhdGluZ0ZpbGVIYW5kbGVyYCwgd2hpY2ggcm90YXRlZCBsb2dzIG9uY2UgdGhlIGZpbGUgZXhjZWVkZWQgYQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAKICAgZ3JvdXAgb3IgZm9yIGEgcmFuZ2Ugb2YgZ3JvdXBzLiAoQ29udHJpYnV0ZWQgYnkgSsO8cmdlbiBBLiBFcmhhcmQuKQogCiAqIFR3byBuZXcgZnVuY3Rpb25zIHdlcmUgYWRkZWQgdG8gdGhlIDptb2Q6YG9wZXJhdG9yYCBtb2R1bGUsCi0gIDpmdW5jOmBhdHRyZ2V0dGVyKGF0dHIpYCBhbmQgOmZ1bmM6YGl0ZW1nZXR0ZXIoaW5kZXgpYC4gQm90aCBmdW5jdGlvbnMgcmV0dXJuCisgIGBgYXR0cmdldHRlcihhdHRyKWBgIGFuZCBgYGl0ZW1nZXR0ZXIoaW5kZXgpYGAuIEJvdGggZnVuY3Rpb25zIHJldHVybgogICBjYWxsYWJsZXMgdGhhdCB0YWtlIGEgc2luZ2xlIGFyZ3VtZW50IGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9yCiAgIGl0ZW07IHRoZXNlIGNhbGxhYmxlcyBtYWtlIGV4Y2VsbGVudCBkYXRhIGV4dHJhY3RvcnMgd2hlbiB1c2VkIHdpdGggOmZ1bmM6YG1hcGAKICAgb3IgOmZ1bmM6YHNvcnRlZGAuICBGb3IgZXhhbXBsZTo6CkBAIC0xMjIzLDE0ICsxMjIzLDE0IEBACiAgIHJlcGxhY2VtZW50IGZvciA6ZnVuYzpgcmZjODIyLmZvcm1hdGRhdGVgLiAgWW91IG1heSB3YW50IHRvIHdyaXRlIG5ldyBlLW1haWwKICAgcHJvY2Vzc2luZyBjb2RlIHdpdGggdGhpcyBpbiBtaW5kLiAgKENoYW5nZSBpbXBsZW1lbnRlZCBieSBBbnRob255IEJheHRlci4pCiAKLSogQSBuZXcgOmZ1bmM6YHVyYW5kb20obilgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgb3NgIG1vZHVsZSwgcmV0dXJuaW5nCisqIEEgbmV3IGBgdXJhbmRvbShuKWBgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgb3NgIG1vZHVsZSwgcmV0dXJuaW5nCiAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgKm4qIGJ5dGVzIG9mIHJhbmRvbSBkYXRhLiAgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhY2Nlc3MgdG8KICAgcGxhdGZvcm0tc3BlY2lmaWMgc291cmNlcyBvZiByYW5kb21uZXNzIHN1Y2ggYXMgOmZpbGU6YC9kZXYvdXJhbmRvbWAgb24gTGludXggb3IKICAgdGhlIFdpbmRvd3MgQ3J5cHRvQVBJLiAgKENvbnRyaWJ1dGVkIGJ5IFRyZXZvciBQZXJyaW4uKQogCi0qIEFub3RoZXIgbmV3IGZ1bmN0aW9uOiA6ZnVuYzpgb3MucGF0aC5sZXhpc3RzKHBhdGgpYCAgcmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlCisqIEFub3RoZXIgbmV3IGZ1bmN0aW9uOiBgYG9zLnBhdGgubGV4aXN0cyhwYXRoKWBgICByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUKICAgc3BlY2lmaWVkIGJ5ICpwYXRoKiBleGlzdHMsIHdoZXRoZXIgb3Igbm90IGl0J3MgYSBzeW1ib2xpYyBsaW5rLiAgVGhpcyBkaWZmZXJzCi0gIGZyb20gdGhlIGV4aXN0aW5nIDpmdW5jOmBvcy5wYXRoLmV4aXN0cyhwYXRoKWAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgZmFsc2UgaWYKKyAgZnJvbSB0aGUgZXhpc3RpbmcgYGBvcy5wYXRoLmV4aXN0cyhwYXRoKWBgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGZhbHNlIGlmCiAgICpwYXRoKiBpcyBhIHN5bWxpbmsgdGhhdCBwb2ludHMgdG8gYSBkZXN0aW5hdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QuCiAgIChDb250cmlidXRlZCBieSBCZW5pIENoZXJuaWF2c2t5LikKIApAQCAtMTI0Myw3ICsxMjQzLDcgQEAKICogVGhlIDptb2Q6YHByb2ZpbGVgIG1vZHVsZSBjYW4gbm93IHByb2ZpbGUgQyBleHRlbnNpb24gZnVuY3Rpb25zLiAoQ29udHJpYnV0ZWQKICAgYnkgTmljayBCYXN0aW4uKQogCi0qIFRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBoYXMgYSBuZXcgbWV0aG9kIGNhbGxlZCA6bWV0aDpgZ2V0cmFuZGJpdHMoTilgIHRoYXQKKyogVGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlIGhhcyBhIG5ldyBtZXRob2QgY2FsbGVkIGBgZ2V0cmFuZGJpdHMoTilgYCB0aGF0CiAgIHJldHVybnMgYSBsb25nIGludGVnZXIgKk4qIGJpdHMgaW4gbGVuZ3RoLiAgVGhlIGV4aXN0aW5nIDptZXRoOmByYW5kcmFuZ2VgCiAgIG1ldGhvZCBub3cgdXNlcyA6bWV0aDpgZ2V0cmFuZGJpdHNgIHdoZXJlIGFwcHJvcHJpYXRlLCBtYWtpbmcgZ2VuZXJhdGlvbiBvZgogICBhcmJpdHJhcmlseSBsYXJnZSByYW5kb20gbnVtYmVycyBtb3JlIGVmZmljaWVudC4gIChDb250cmlidXRlZCBieSBSYXltb25kCkBAIC0xMjcyLDcgKzEyNzIsNyBAQAogICB0aGlzLCBidXQgMi40IHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGV4Y2VwdGlvbi4KIAogKiBUd28gbmV3IGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHRvIHRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZS4gOmZ1bmM6YHNvY2tldHBhaXJgCi0gIHJldHVybnMgYSBwYWlyIG9mIGNvbm5lY3RlZCBzb2NrZXRzIGFuZCA6ZnVuYzpgZ2V0c2VydmJ5cG9ydChwb3J0KWAgbG9va3MgdXAgdGhlCisgIHJldHVybnMgYSBwYWlyIG9mIGNvbm5lY3RlZCBzb2NrZXRzIGFuZCBgYGdldHNlcnZieXBvcnQocG9ydClgYCBsb29rcyB1cCB0aGUKICAgc2VydmljZSBuYW1lIGZvciBhIGdpdmVuIHBvcnQgbnVtYmVyLiAoQ29udHJpYnV0ZWQgYnkgRGF2ZSBDb2xlIGFuZCBCYXJyeQogICBXYXJzYXcuKQogCkBAIC0xNDU0LDExICsxNDU0LDExIEBACiAqIEFub3RoZXIgbmV3IG1hY3JvLCA6YzptYWNybzpgUHlfQ0xFQVIob2JqKWAsICBkZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZgogICAqb2JqKiBhbmQgc2V0cyAqb2JqKiB0byB0aGUgbnVsbCBwb2ludGVyLiAgKENvbnRyaWJ1dGVkIGJ5IEppbSBGdWx0b24uKQogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeVR1cGxlX1BhY2soTiwgb2JqMSwgb2JqMiwgLi4uLCBvYmpOKWAsIGNvbnN0cnVjdHMKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlUdXBsZV9QYWNrKE4sIG9iajEsIG9iajIsIC4uLiwgb2JqTilgYCwgY29uc3RydWN0cwogICB0dXBsZXMgZnJvbSBhIHZhcmlhYmxlIGxlbmd0aCBhcmd1bWVudCBsaXN0IG9mIFB5dGhvbiBvYmplY3RzLiAgKENvbnRyaWJ1dGVkIGJ5CiAgIFJheW1vbmQgSGV0dGluZ2VyLikKIAotKiBBIG5ldyBmdW5jdGlvbiwgOmM6ZnVuYzpgUHlEaWN0X0NvbnRhaW5zKGQsIGspYCwgaW1wbGVtZW50cyBmYXN0IGRpY3Rpb25hcnkKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlEaWN0X0NvbnRhaW5zKGQsIGspYGAsIGltcGxlbWVudHMgZmFzdCBkaWN0aW9uYXJ5CiAgIGxvb2t1cHMgd2l0aG91dCBtYXNraW5nIGV4Y2VwdGlvbnMgcmFpc2VkIGR1cmluZyB0aGUgbG9vay11cCBwcm9jZXNzLgogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi41LnJzdCBiL0RvYy93aGF0c25ldy8yLjUucnN0CmluZGV4IGUwNTljZDUuLmI5MWU2NDcgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjUucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjUucnN0CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgICAgcG9wdXBfbWVudS5hcHBlbmQoICgiT3BlbiIsIG9wZW5fZnVuYywgMSkgKQogCiBBbm90aGVyIGZ1bmN0aW9uIGluIHRoZSA6bW9kOmBmdW5jdG9vbHNgIG1vZHVsZSBpcyB0aGUKLTpmdW5jOmB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB3cmFwcGVkKWAgZnVuY3Rpb24gdGhhdCBoZWxwcyB5b3Ugd3JpdGUgd2VsbC0KK2BgdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgd3JhcHBlZClgYCBmdW5jdGlvbiB0aGF0IGhlbHBzIHlvdSB3cml0ZSB3ZWxsLQogYmVoYXZlZCBkZWNvcmF0b3JzLiAgOmZ1bmM6YHVwZGF0ZV93cmFwcGVyYCBjb3BpZXMgdGhlIG5hbWUsIG1vZHVsZSwgYW5kCiBkb2NzdHJpbmcgYXR0cmlidXRlIHRvIGEgd3JhcHBlciBmdW5jdGlvbiBzbyB0aGF0IHRyYWNlYmFja3MgaW5zaWRlIHRoZSB3cmFwcGVkCiBmdW5jdGlvbiBhcmUgZWFzaWVyIHRvIHVuZGVyc3RhbmQuICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdyaXRlOjoKQEAgLTQ1NCw3ICs0NTQsNyBAQAogYGB2YWwgPSB5aWVsZCBpYGAgYnV0IGhhdmUgdG8gdXNlIHBhcmVudGhlc2VzIHdoZW4gdGhlcmUncyBhbiBvcGVyYXRpb24sIGFzIGluCiBgYHZhbCA9ICh5aWVsZCBpKSArIDEyYGAuKQogCi1WYWx1ZXMgYXJlIHNlbnQgaW50byBhIGdlbmVyYXRvciBieSBjYWxsaW5nIGl0cyA6bWV0aDpgc2VuZCh2YWx1ZSlgIG1ldGhvZC4gIFRoZQorVmFsdWVzIGFyZSBzZW50IGludG8gYSBnZW5lcmF0b3IgYnkgY2FsbGluZyBpdHMgYGBzZW5kKHZhbHVlKWBgIG1ldGhvZC4gIFRoZQogZ2VuZXJhdG9yJ3MgY29kZSBpcyB0aGVuIHJlc3VtZWQgYW5kIHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gcmV0dXJucyB0aGUKIHNwZWNpZmllZCAqdmFsdWUqLiAgSWYgdGhlIHJlZ3VsYXIgOm1ldGg6YG5leHRgIG1ldGhvZCBpcyBjYWxsZWQsIHRoZQogOmtleXdvcmQ6YHlpZWxkYCByZXR1cm5zIDpjb25zdDpgTm9uZWAuCkBAIC00OTYsNyArNDk2LDcgQEAKIAogSW4gYWRkaXRpb24gdG8gOm1ldGg6YHNlbmRgLCB0aGVyZSBhcmUgdHdvIG90aGVyIG5ldyBtZXRob2RzIG9uIGdlbmVyYXRvcnM6CiAKLSogOm1ldGg6YHRocm93KHR5cGUsIHZhbHVlPU5vbmUsIHRyYWNlYmFjaz1Ob25lKWAgaXMgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24KKyogYGB0aHJvdyh0eXBlLCB2YWx1ZT1Ob25lLCB0cmFjZWJhY2s9Tm9uZSlgYCBpcyB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbgogICBpbnNpZGUgdGhlIGdlbmVyYXRvcjsgdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgdGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbgogICB3aGVyZSB0aGUgZ2VuZXJhdG9yJ3MgZXhlY3V0aW9uIGlzIHBhdXNlZC4KIApAQCAtNjYwLDcgKzY2MCw3IEBACiAKICogVGhlIGNvZGUgaW4gKkJMT0NLKiBpcyBleGVjdXRlZC4KIAotKiBJZiAqQkxPQ0sqIHJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSA6bWV0aDpgX19leGl0X18odHlwZSwgdmFsdWUsIHRyYWNlYmFjaylgCisqIElmICpCTE9DSyogcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIGBgX19leGl0X18odHlwZSwgdmFsdWUsIHRyYWNlYmFjaylgYAogICBpcyBjYWxsZWQgd2l0aCB0aGUgZXhjZXB0aW9uIGRldGFpbHMsIHRoZSBzYW1lIHZhbHVlcyByZXR1cm5lZCBieQogICA6ZnVuYzpgc3lzLmV4Y19pbmZvYC4gIFRoZSBtZXRob2QncyByZXR1cm4gdmFsdWUgY29udHJvbHMgd2hldGhlciB0aGUgZXhjZXB0aW9uCiAgIGlzIHJlLXJhaXNlZDogYW55IGZhbHNlIHZhbHVlIHJlLXJhaXNlcyB0aGUgZXhjZXB0aW9uLCBhbmQgYGBUcnVlYGAgd2lsbCByZXN1bHQKQEAgLTc3Myw3ICs3NzMsNyBAQAogICAgd2l0aCBkYl90cmFuc2FjdGlvbihkYikgYXMgY3Vyc29yOgogICAgICAgIC4uLgogCi1UaGUgOm1vZDpgY29udGV4dGxpYmAgbW9kdWxlIGFsc28gaGFzIGEgOmZ1bmM6YG5lc3RlZChtZ3IxLCBtZ3IyLCAuLi4pYCBmdW5jdGlvbgorVGhlIDptb2Q6YGNvbnRleHRsaWJgIG1vZHVsZSBhbHNvIGhhcyBhIGBgbmVzdGVkKG1ncjEsIG1ncjIsIC4uLilgYCBmdW5jdGlvbgogdGhhdCBjb21iaW5lcyBhIG51bWJlciBvZiBjb250ZXh0IG1hbmFnZXJzIHNvIHlvdSBkb24ndCBuZWVkIHRvIHdyaXRlIG5lc3RlZAogJzprZXl3b3JkOmB3aXRoYCcgc3RhdGVtZW50cy4gIEluIHRoaXMgZXhhbXBsZSwgdGhlIHNpbmdsZSAnOmtleXdvcmQ6YHdpdGhgJwogc3RhdGVtZW50IGJvdGggc3RhcnRzIGEgZGF0YWJhc2UgdHJhbnNhY3Rpb24gYW5kIGFjcXVpcmVzIGEgdGhyZWFkIGxvY2s6OgpAQCAtNzgyLDcgKzc4Miw3IEBACiAgICB3aXRoIG5lc3RlZCAoZGJfdHJhbnNhY3Rpb24oZGIpLCBsb2NrKSBhcyAoY3Vyc29yLCBsb2NrZWQpOgogICAgICAgIC4uLgogCi1GaW5hbGx5LCB0aGUgOmZ1bmM6YGNsb3Npbmcob2JqZWN0KWAgZnVuY3Rpb24gcmV0dXJucyAqb2JqZWN0KiBzbyB0aGF0IGl0IGNhbiBiZQorRmluYWxseSwgdGhlIGBgY2xvc2luZyhvYmplY3QpYGAgZnVuY3Rpb24gcmV0dXJucyAqb2JqZWN0KiBzbyB0aGF0IGl0IGNhbiBiZQogYm91bmQgdG8gYSB2YXJpYWJsZSwgYW5kIGNhbGxzIGBgb2JqZWN0LmNsb3NlYGAgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2suIDo6CiAKICAgIGltcG9ydCB1cmxsaWIsIHN5cwpAQCAtOTU1LDcgKzk1NSw3IEBACiAKIEEgY29ycmVzcG9uZGluZyA6YXR0cjpgbmJfaW5kZXhgIHNsb3Qgd2FzIGFkZGVkIHRvIHRoZSBDLWxldmVsCiA6Yzp0eXBlOmBQeU51bWJlck1ldGhvZHNgIHN0cnVjdHVyZSB0byBsZXQgQyBleHRlbnNpb25zIGltcGxlbWVudCB0aGlzIHByb3RvY29sLgotOmM6ZnVuYzpgUHlOdW1iZXJfSW5kZXgob2JqKWAgY2FuIGJlIHVzZWQgaW4gZXh0ZW5zaW9uIGNvZGUgdG8gY2FsbCB0aGUKK2BgUHlOdW1iZXJfSW5kZXgob2JqKWBgIGNhbiBiZSB1c2VkIGluIGV4dGVuc2lvbiBjb2RlIHRvIGNhbGwgdGhlCiA6bWV0aDpgX19pbmRleF9fYCBmdW5jdGlvbiBhbmQgcmV0cmlldmUgaXRzIHJlc3VsdC4KIAogCkBAIC05NzYsNyArOTc2LDcgQEAKIAogKiBUaGUgOmNsYXNzOmBkaWN0YCB0eXBlIGhhcyBhIG5ldyBob29rIGZvciBsZXR0aW5nIHN1YmNsYXNzZXMgcHJvdmlkZSBhIGRlZmF1bHQKICAgdmFsdWUgd2hlbiBhIGtleSBpc24ndCBjb250YWluZWQgaW4gdGhlIGRpY3Rpb25hcnkuIFdoZW4gYSBrZXkgaXNuJ3QgZm91bmQsIHRoZQotICBkaWN0aW9uYXJ5J3MgOm1ldGg6YF9fbWlzc2luZ19fKGtleSlgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4gIFRoaXMgaG9vayBpcyB1c2VkCisgIGRpY3Rpb25hcnkncyBgYF9fbWlzc2luZ19fKGtleSlgYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuICBUaGlzIGhvb2sgaXMgdXNlZAogICB0byBpbXBsZW1lbnQgdGhlIG5ldyA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBjbGFzcyBpbiB0aGUgOm1vZDpgY29sbGVjdGlvbnNgCiAgIG1vZHVsZS4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWZpbmVzIGEgZGljdGlvbmFyeSAgdGhhdCByZXR1cm5zIHplcm8gZm9yIGFueQogICBtaXNzaW5nIGtleTo6CkBAIC05ODksMTYgKzk4OSwxNiBAQAogICAgICBwcmludCBkWzFdLCBkWzJdICAgIyBQcmludHMgMSwgMgogICAgICBwcmludCBkWzNdLCBkWzRdICAgIyBQcmludHMgMCwgMAogCi0qIEJvdGggOC1iaXQgYW5kIFVuaWNvZGUgc3RyaW5ncyBoYXZlIG5ldyA6bWV0aDpgcGFydGl0aW9uKHNlcClgICBhbmQKLSAgOm1ldGg6YHJwYXJ0aXRpb24oc2VwKWAgbWV0aG9kcyB0aGF0IHNpbXBsaWZ5IGEgY29tbW9uIHVzZSBjYXNlLgorKiBCb3RoIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgaGF2ZSBuZXcgYGBwYXJ0aXRpb24oc2VwKWBgICBhbmQKKyAgYGBycGFydGl0aW9uKHNlcClgYCBtZXRob2RzIHRoYXQgc2ltcGxpZnkgYSBjb21tb24gdXNlIGNhc2UuCiAKLSAgVGhlIDptZXRoOmBmaW5kKFMpYCBtZXRob2QgaXMgb2Z0ZW4gdXNlZCB0byBnZXQgYW4gaW5kZXggd2hpY2ggaXMgdGhlbiB1c2VkIHRvCisgIFRoZSBgYGZpbmQoUylgYCBtZXRob2QgaXMgb2Z0ZW4gdXNlZCB0byBnZXQgYW4gaW5kZXggd2hpY2ggaXMgdGhlbiB1c2VkIHRvCiAgIHNsaWNlIHRoZSBzdHJpbmcgYW5kIG9idGFpbiB0aGUgcGllY2VzIHRoYXQgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4KLSAgOm1ldGg6YHBhcnRpdGlvbihzZXApYCBjb25kZW5zZXMgdGhpcyBwYXR0ZXJuIGludG8gYSBzaW5nbGUgbWV0aG9kIGNhbGwgdGhhdAorICBgYHBhcnRpdGlvbihzZXApYGAgY29uZGVuc2VzIHRoaXMgcGF0dGVybiBpbnRvIGEgc2luZ2xlIG1ldGhvZCBjYWxsIHRoYXQKICAgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3Vic3RyaW5nIGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yCiAgIGl0c2VsZiwgYW5kIHRoZSBzdWJzdHJpbmcgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXNuJ3QgZm91bmQsCiAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSB0dXBsZSBpcyB0aGUgZW50aXJlIHN0cmluZyBhbmQgdGhlIG90aGVyIHR3byBlbGVtZW50cwotICBhcmUgZW1wdHkuICA6bWV0aDpgcnBhcnRpdGlvbihzZXApYCBhbHNvIHJldHVybnMgYSAzLXR1cGxlIGJ1dCBzdGFydHMgc2VhcmNoaW5nCisgIGFyZSBlbXB0eS4gIGBgcnBhcnRpdGlvbihzZXApYGAgYWxzbyByZXR1cm5zIGEgMy10dXBsZSBidXQgc3RhcnRzIHNlYXJjaGluZwogICBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZzsgdGhlIGBgcmBgIHN0YW5kcyBmb3IgJ3JldmVyc2UnLgogCiAgIFNvbWUgZXhhbXBsZXM6OgpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAKIAogICAuLiBQYXRjaCAxMzEzOTM5LCAxMzU5NjE4CiAKLSogVGhlIDpmdW5jOmBsb25nKHN0ciwgYmFzZSlgIGZ1bmN0aW9uIGlzIG5vdyBmYXN0ZXIgb24gbG9uZyBkaWdpdCBzdHJpbmdzCisqIFRoZSBgYGxvbmcoc3RyLCBiYXNlKWBgIGZ1bmN0aW9uIGlzIG5vdyBmYXN0ZXIgb24gbG9uZyBkaWdpdCBzdHJpbmdzCiAgIGJlY2F1c2UgZmV3ZXIgaW50ZXJtZWRpYXRlIHJlc3VsdHMgYXJlIGNhbGN1bGF0ZWQuICBUaGUgcGVhayBpcyBmb3Igc3RyaW5ncyBvZgogICBhcm91bmQgODAwLS0xMDAwIGRpZ2l0cyB3aGVyZSAgdGhlIGZ1bmN0aW9uIGlzIDYgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkKICAgQWxhbiBNY0ludHlyZSBhbmQgY29tbWl0dGVkIGF0IHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50LikKQEAgLTEyNjgsNyArMTI2OCw3IEBACiAgIChDb250cmlidXRlZCBieSBHdWlkbyB2YW4gUm9zc3VtLikKIAogKiBUaGUgOmNsYXNzOmBkZXF1ZWAgZG91YmxlLWVuZGVkIHF1ZXVlIHR5cGUgc3VwcGxpZWQgYnkgdGhlIDptb2Q6YGNvbGxlY3Rpb25zYAotICBtb2R1bGUgbm93IGhhcyBhIDptZXRoOmByZW1vdmUodmFsdWUpYCBtZXRob2QgdGhhdCByZW1vdmVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlCisgIG1vZHVsZSBub3cgaGFzIGEgYGByZW1vdmUodmFsdWUpYGAgbWV0aG9kIHRoYXQgcmVtb3ZlcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZQogICBvZiAqdmFsdWUqIGluIHRoZSBxdWV1ZSwgcmFpc2luZyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdmFsdWUgaXNuJ3QgZm91bmQuCiAgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKQEAgLTEyOTEsNyArMTI5MSw3IEBACiAqIFRoZSA6bW9kOmBjc3ZgIG1vZHVsZSwgd2hpY2ggcGFyc2VzIGZpbGVzIGluIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZSBmb3JtYXQsCiAgIHJlY2VpdmVkIHNldmVyYWwgZW5oYW5jZW1lbnRzIGFuZCBhIG51bWJlciBvZiBidWdmaXhlcy4gIFlvdSBjYW4gbm93IHNldCB0aGUKICAgbWF4aW11bSBzaXplIGluIGJ5dGVzIG9mIGEgZmllbGQgYnkgY2FsbGluZyB0aGUKLSAgOm1ldGg6YGNzdi5maWVsZF9zaXplX2xpbWl0KG5ld19saW1pdClgIGZ1bmN0aW9uOyBvbWl0dGluZyB0aGUgKm5ld19saW1pdCoKKyAgYGBjc3YuZmllbGRfc2l6ZV9saW1pdChuZXdfbGltaXQpYGAgZnVuY3Rpb247IG9taXR0aW5nIHRoZSAqbmV3X2xpbWl0KgogICBhcmd1bWVudCB3aWxsIHJldHVybiB0aGUgY3VycmVudGx5LXNldCBsaW1pdC4gIFRoZSA6Y2xhc3M6YHJlYWRlcmAgY2xhc3Mgbm93IGhhcwogICBhIDphdHRyOmBsaW5lX251bWAgYXR0cmlidXRlIHRoYXQgY291bnRzIHRoZSBudW1iZXIgb2YgcGh5c2ljYWwgbGluZXMgcmVhZCBmcm9tCiAgIHRoZSBzb3VyY2U7IHJlY29yZHMgY2FuIHNwYW4gbXVsdGlwbGUgcGh5c2ljYWwgbGluZXMsIHNvIDphdHRyOmBsaW5lX251bWAgaXMgbm90CkBAIC0xMzA4LDcgKzEzMDgsNyBAQAogICAoQ29udHJpYnV0ZWQgYnkgU2tpcCBNb250YW5hcm8gYW5kIEFuZHJldyBNY05hbWFyYS4pCiAKICogVGhlIDpjbGFzczpgZGF0ZXRpbWVgIGNsYXNzIGluIHRoZSA6bW9kOmBkYXRldGltZWAgIG1vZHVsZSBub3cgaGFzIGEKLSAgOm1ldGg6YHN0cnB0aW1lKHN0cmluZywgZm9ybWF0KWAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCisgIGBgc3RycHRpbWUoc3RyaW5nLCBmb3JtYXQpYGAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCiAgIGJ5IEpvc2ggU3BvZXJyaS4gSXQgdXNlcyB0aGUgc2FtZSBmb3JtYXQgY2hhcmFjdGVycyBhcyA6ZnVuYzpgdGltZS5zdHJwdGltZWAgYW5kCiAgIDpmdW5jOmB0aW1lLnN0cmZ0aW1lYDo6CiAKQEAgLTE0MDMsNyArMTQwMyw3IEBACiAqIFRoZSA6bW9kOmBtYWlsYm94YCBtb2R1bGUgdW5kZXJ3ZW50IGEgbWFzc2l2ZSByZXdyaXRlIHRvIGFkZCB0aGUgY2FwYWJpbGl0eSB0bwogICBtb2RpZnkgbWFpbGJveGVzIGluIGFkZGl0aW9uIHRvIHJlYWRpbmcgdGhlbS4gIEEgbmV3IHNldCBvZiBjbGFzc2VzIHRoYXQgaW5jbHVkZQogICA6Y2xhc3M6YG1ib3hgLCA6Y2xhc3M6YE1IYCwgYW5kIDpjbGFzczpgTWFpbGRpcmAgYXJlIHVzZWQgdG8gcmVhZCBtYWlsYm94ZXMsIGFuZAotICBoYXZlIGFuIDptZXRoOmBhZGQobWVzc2FnZSlgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIDptZXRoOmByZW1vdmUoa2V5KWAgdG8KKyAgaGF2ZSBhbiBgYGFkZChtZXNzYWdlKWBgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIGBgcmVtb3ZlKGtleSlgYCB0bwogICByZW1vdmUgbWVzc2FnZXMsIGFuZCA6bWV0aDpgbG9ja2AvOm1ldGg6YHVubG9ja2AgdG8gbG9jay91bmxvY2sgdGhlIG1haWxib3guCiAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb252ZXJ0cyBhIG1haWxkaXItZm9ybWF0IG1haWxib3ggaW50byBhbiBtYm94LWZvcm1hdAogICBvbmU6OgpAQCAtMTQ1OCw3ICsxNDU4LDcgQEAKICAgOmZ1bmM6YHdhaXQ0YCByZXR1cm4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIDpmdW5jOmB3YWl0M2AgZG9lc24ndCB0YWtlIGEKICAgcHJvY2VzcyBJRCBhcyBpbnB1dCwgc28gaXQgd2FpdHMgZm9yIGFueSBjaGlsZCBwcm9jZXNzIHRvIGV4aXQgYW5kIHJldHVybnMgYQogICAzLXR1cGxlIG9mICpwcm9jZXNzLWlkKiwgKmV4aXQtc3RhdHVzKiwgKnJlc291cmNlLXVzYWdlKiBhcyByZXR1cm5lZCBmcm9tIHRoZQotICA6ZnVuYzpgcmVzb3VyY2UuZ2V0cnVzYWdlYCBmdW5jdGlvbi4gOmZ1bmM6YHdhaXQ0KHBpZClgIGRvZXMgdGFrZSBhIHByb2Nlc3MgSUQuCisgIDpmdW5jOmByZXNvdXJjZS5nZXRydXNhZ2VgIGZ1bmN0aW9uLiBgYHdhaXQ0KHBpZClgYCBkb2VzIHRha2UgYSBwcm9jZXNzIElELgogICAoQ29udHJpYnV0ZWQgYnkgQ2hhZCBKLiBTY2hyb2VkZXIuKQogCiAgIE9uIEZyZWVCU0QsIHRoZSA6ZnVuYzpgb3Muc3RhdGAgZnVuY3Rpb24gbm93IHJldHVybnMgIHRpbWVzIHdpdGggbmFub3NlY29uZApAQCAtMTUzMiw4ICsxNTMyLDggQEAKICAgSW4gUHl0aG9uIGNvZGUsIG5ldGxpbmsgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBhIHR1cGxlIG9mIDIgaW50ZWdlcnMsCiAgIGBgKHBpZCwgZ3JvdXBfbWFzaylgYC4KIAotICBUd28gbmV3IG1ldGhvZHMgb24gc29ja2V0IG9iamVjdHMsIDptZXRoOmByZWN2X2ludG8oYnVmZmVyKWAgYW5kCi0gIDptZXRoOmByZWN2ZnJvbV9pbnRvKGJ1ZmZlcilgLCBzdG9yZSB0aGUgcmVjZWl2ZWQgZGF0YSBpbiBhbiBvYmplY3QgIHRoYXQKKyAgVHdvIG5ldyBtZXRob2RzIG9uIHNvY2tldCBvYmplY3RzLCBgYHJlY3ZfaW50byhidWZmZXIpYGAgYW5kCisgIGBgcmVjdmZyb21faW50byhidWZmZXIpYGAsIHN0b3JlIHRoZSByZWNlaXZlZCBkYXRhIGluIGFuIG9iamVjdCAgdGhhdAogICBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSBkYXRhIGFzIGEgc3RyaW5nLiAgVGhpcwogICBtZWFucyB5b3UgY2FuIHB1dCB0aGUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LW1hcHBlZCBmaWxlLgogCkBAIC0xNTU3LDggKzE1NTcsOCBAQAogICAgICB5ZWFyLCBudW1iZXIsIG5hbWUgPSBzLnVucGFjayhkYXRhKQogCiAgIFlvdSBjYW4gYWxzbyBwYWNrIGFuZCB1bnBhY2sgZGF0YSB0byBhbmQgZnJvbSBidWZmZXIgb2JqZWN0cyBkaXJlY3RseSB1c2luZyB0aGUKLSAgOm1ldGg6YHBhY2tfaW50byhidWZmZXIsIG9mZnNldCwgdjEsIHYyLCAuLi4pYCBhbmQgOm1ldGg6YHVucGFja19mcm9tKGJ1ZmZlciwKLSAgb2Zmc2V0KWAgbWV0aG9kcy4gIFRoaXMgbGV0cyB5b3Ugc3RvcmUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LQorICBgYHBhY2tfaW50byhidWZmZXIsIG9mZnNldCwgdjEsIHYyLCAuLi4pYGAgYW5kIGBgdW5wYWNrX2Zyb20oYnVmZmVyLAorICBvZmZzZXQpYGAgbWV0aG9kcy4gIFRoaXMgbGV0cyB5b3Ugc3RvcmUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LQogICBtYXBwZWQgZmlsZS4KIAogICAoOmNsYXNzOmBTdHJ1Y3RgIG9iamVjdHMgd2VyZSBpbXBsZW1lbnRlZCBieSBCb2IgSXBwb2xpdG8gYXQgdGhlIE5lZWRGb3JTcGVlZApAQCAtMTU5Miw3ICsxNTkyLDcgQEAKICAgLi4gcGF0Y2ggOTE4MTAxCiAKICogVGhlIDptb2Q6YHRocmVhZGluZ2AgbW9kdWxlIG5vdyBsZXRzIHlvdSBzZXQgdGhlIHN0YWNrIHNpemUgdXNlZCB3aGVuIG5ldwotICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgOmZ1bmM6YHN0YWNrX3NpemUoWypzaXplKl0pYCBmdW5jdGlvbiByZXR1cm5zIHRoZQorICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgYGBzdGFja19zaXplKFsqc2l6ZSpdKWBgIGZ1bmN0aW9uIHJldHVybnMgdGhlCiAgIGN1cnJlbnRseSBjb25maWd1cmVkIHN0YWNrIHNpemUsIGFuZCBzdXBwbHlpbmcgdGhlIG9wdGlvbmFsICpzaXplKiBwYXJhbWV0ZXIKICAgc2V0cyBhIG5ldyB2YWx1ZS4gIE5vdCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgY2hhbmdpbmcgdGhlIHN0YWNrIHNpemUsIGJ1dAogICBXaW5kb3dzLCBQT1NJWCB0aHJlYWRpbmcsIGFuZCBPUy8yIGFsbCBkby4gKENvbnRyaWJ1dGVkIGJ5IEFuZHJldyBNYWNJbnR5cmUuKQpAQCAtMTkxMSw3ICsxOTExLDcgQEAKICAgIGggPSBoYXNobGliLm5ldygnbWQ1JykgICAgICAgICAgIyBQcm92aWRlIGFsZ29yaXRobSBhcyBhIHN0cmluZwogCiBPbmNlIGEgaGFzaCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgaXRzIG1ldGhvZHMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZToKLTptZXRoOmB1cGRhdGUoc3RyaW5nKWAgaGFzaGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGludG8gdGhlICBjdXJyZW50IGRpZ2VzdAorYGB1cGRhdGUoc3RyaW5nKWBgIGhhc2hlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbnRvIHRoZSAgY3VycmVudCBkaWdlc3QKIHN0YXRlLCA6bWV0aDpgZGlnZXN0YCBhbmQgOm1ldGg6YGhleGRpZ2VzdGAgcmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBiaW5hcnkKIHN0cmluZyBvciBhIHN0cmluZyBvZiBoZXggZGlnaXRzLCBhbmQgOm1ldGg6YGNvcHlgIHJldHVybnMgYSBuZXcgaGFzaGluZyBvYmplY3QKIHdpdGggdGhlIHNhbWUgZGlnZXN0IHN0YXRlLgpAQCAtMjE2OCwyMCArMjE2OCwyMCBAQAogCiAqIFR3byBuZXcgbWFjcm9zIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIEMgZnVuY3Rpb25zIHRoYXQgYXJlIGxvY2FsIHRvIHRoZQogICBjdXJyZW50IGZpbGUgc28gdGhhdCBhIGZhc3RlciBjYWxsaW5nIGNvbnZlbnRpb24gY2FuIGJlIHVzZWQuCi0gIDpjOmZ1bmM6YFB5X0xPQ0FMKHR5cGUpYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCisgIGBgUHlfTE9DQUwodHlwZSlgYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCiAgIHNwZWNpZmllZCAqdHlwZSogYW5kIHVzZXMgYSBmYXN0LWNhbGxpbmcgcXVhbGlmaWVyLgotICA6YzpmdW5jOmBQeV9MT0NBTF9JTkxJTkUodHlwZSlgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYW5kIGFsc28gcmVxdWVzdHMgdGhlCisgIGBgUHlfTE9DQUxfSU5MSU5FKHR5cGUpYGAgZG9lcyB0aGUgc2FtZSB0aGluZyBhbmQgYWxzbyByZXF1ZXN0cyB0aGUKICAgZnVuY3Rpb24gYmUgaW5saW5lZC4gIElmIDpjOmZ1bmM6YFBZX0xPQ0FMX0FHR1JFU1NJVkVgIGlzIGRlZmluZWQgYmVmb3JlCiAgIDpmaWxlOmBweXRob24uaGAgaXMgaW5jbHVkZWQsIGEgc2V0IG9mIG1vcmUgYWdncmVzc2l2ZSBvcHRpbWl6YXRpb25zIGFyZSBlbmFibGVkCiAgIGZvciB0aGUgbW9kdWxlOyB5b3Ugc2hvdWxkIGJlbmNobWFyayB0aGUgcmVzdWx0cyB0byBmaW5kIG91dCBpZiB0aGVzZQogICBvcHRpbWl6YXRpb25zIGFjdHVhbGx5IG1ha2UgdGhlIGNvZGUgZmFzdGVyLiAgKENvbnRyaWJ1dGVkIGJ5IEZyZWRyaWsgTHVuZGggYXQKICAgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQuKQogCi0qIDpjOmZ1bmM6YFB5RXJyX05ld0V4Y2VwdGlvbihuYW1lLCBiYXNlLCBkaWN0KWAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCisqIGBgUHlFcnJfTmV3RXhjZXB0aW9uKG5hbWUsIGJhc2UsIGRpY3QpYGAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCiAgIGNsYXNzZXMgYXMgaXRzICpiYXNlKiBhcmd1bWVudC4gIChDb250cmlidXRlZCBieSBHZW9yZyBCcmFuZGwuKQogCiAqIFRoZSA6YzpmdW5jOmBQeUVycl9XYXJuYCBmdW5jdGlvbiBmb3IgaXNzdWluZyB3YXJuaW5ncyBpcyBub3cgZGVwcmVjYXRlZCBpbgotICBmYXZvdXIgb2YgOmM6ZnVuYzpgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWAgd2hpY2ggbGV0cyB5b3UKKyAgZmF2b3VyIG9mIGBgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWBgIHdoaWNoIGxldHMgeW91CiAgIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgc2VwYXJhdGluZyB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgY2FsbGVyLiAgQQogICAqc3RhY2tsZXZlbCogb2YgMSBpcyB0aGUgZnVuY3Rpb24gY2FsbGluZyA6YzpmdW5jOmBQeUVycl9XYXJuRXhgLCAyIGlzIHRoZQogICBmdW5jdGlvbiBhYm92ZSB0aGF0LCBhbmQgc28gZm9ydGguICAoQWRkZWQgYnkgTmVhbCBOb3J3aXR6LikKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjAucnN0IGIvRG9jL3doYXRzbmV3LzMuMC5yc3QKaW5kZXggOWYxZWM5Ny4uNzc4MjY2MyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMC5yc3QKQEAgLTgxMiw3ICs4MTIsNyBAQAogKiBUaGUgOmZ1bmM6YHJvdW5kYCBmdW5jdGlvbiByb3VuZGluZyBzdHJhdGVneSBhbmQgcmV0dXJuIHR5cGUgaGF2ZQogICBjaGFuZ2VkLiAgRXhhY3QgaGFsZndheSBjYXNlcyBhcmUgbm93IHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgZXZlbgogICByZXN1bHQgaW5zdGVhZCBvZiBhd2F5IGZyb20gemVyby4gIChGb3IgZXhhbXBsZSwgYGByb3VuZCgyLjUpYGAgbm93Ci0gIHJldHVybnMgYGAyYGAgcmF0aGVyIHRoYW4gYGAzYGAuKSAgOmZ1bmM6YHJvdW5kKHhbLCBuXSlgIG5vdworICByZXR1cm5zIGBgMmBgIHJhdGhlciB0aGFuIGBgM2BgLikgIGBgcm91bmQoeFssIG5dKWBgIG5vdwogICBkZWxlZ2F0ZXMgdG8gYGB4Ll9fcm91bmRfXyhbbl0pYGAgaW5zdGVhZCBvZiBhbHdheXMgcmV0dXJuaW5nIGEKICAgZmxvYXQuICBJdCBnZW5lcmFsbHkgcmV0dXJucyBhbiBpbnRlZ2VyIHdoZW4gY2FsbGVkIHdpdGggYSBzaW5nbGUKICAgYXJndW1lbnQgYW5kIGEgdmFsdWUgb2YgdGhlIHNhbWUgdHlwZSBhcyBgYHhgYCB3aGVuIGNhbGxlZCB3aXRoIHR3bwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAppbmRleCAwNTUzZWMzLi45OTgyN2ZmIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdApAQCAtMjcwLDcgKzI3MCw3IEBACiAgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzEudHh0JywgJ2Rlc3QxLnR4dCcpCiAgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzIudHh0JywgJ2Rlc3QyLnR4dCcpCiAgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzMudHh0JywgJ2Rlc3QzLnR4dCcpCi0gICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzQudHh0JywgJ2Rlc3Q0LnR4dCcpCisgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzMudHh0JywgJ2Rlc3Q0LnR4dCcpCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMzU0LDcgKzIzNTQsNyBAQAogICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3U7IDppc3N1ZTpgMzAwMWAuKQogCiAqIFRoZSBmYXN0LXNlYXJjaCBhbGdvcml0aG0gaW4gc3RyaW5nbGliIGlzIG5vdyB1c2VkIGJ5IHRoZSA6bWV0aDpgc3BsaXRgLAotICA6bWV0aDpgc3BsaXRsaW5lc2AgYW5kIDptZXRoOmByZXBsYWNlYCBtZXRob2RzIG9uCisgIDptZXRoOmByc3BsaXRgLCA6bWV0aDpgc3BsaXRsaW5lc2AgYW5kIDptZXRoOmByZXBsYWNlYCBtZXRob2RzIG9uCiAgIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YGJ5dGVhcnJheWAgYW5kIDpjbGFzczpgc3RyYCBvYmplY3RzLiBMaWtld2lzZSwgdGhlCiAgIGFsZ29yaXRobSBpcyBhbHNvIHVzZWQgYnkgOm1ldGg6YHJmaW5kYCwgOm1ldGg6YHJpbmRleGAsIDptZXRoOmByc3BsaXRgIGFuZAogICA6bWV0aDpgcnBhcnRpdGlvbmAuCkBAIC0yNDcxLDE0ICsyNDcxLDE0IEBACiAKIEluIGFkZGl0aW9uIHRvIHRoZSBleGlzdGluZyBTdWJ2ZXJzaW9uIGNvZGUgcmVwb3NpdG9yeSBhdCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcKIHRoZXJlIGlzIG5vdyBhIGBNZXJjdXJpYWwgPGh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vPmBfIHJlcG9zaXRvcnkgYXQKLWh0dHA6Ly9oZy5weXRob24ub3JnL1wuCitodHRwOi8vaGcucHl0aG9uLm9yZy8gLgogCiBBZnRlciB0aGUgMy4yIHJlbGVhc2UsIHRoZXJlIGFyZSBwbGFucyB0byBzd2l0Y2ggdG8gTWVyY3VyaWFsIGFzIHRoZSBwcmltYXJ5CiByZXBvc2l0b3J5LiAgVGhpcyBkaXN0cmlidXRlZCB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIHNob3VsZCBtYWtlIGl0IGVhc2llciBmb3IKIG1lbWJlcnMgb2YgdGhlIGNvbW11bml0eSB0byBjcmVhdGUgYW5kIHNoYXJlIGV4dGVybmFsIGNoYW5nZXNldHMuICBTZWUKIDpwZXA6YDM4NWAgZm9yIGRldGFpbHMuCiAKLVRvIGxlYXJuIHRoZSBuZXcgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgc2VlIHRoZSBgdHV0b3JpYWwgYnkgSm9lbAorVG8gbGVhcm4gdG8gdXNlIHRoZSBuZXcgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgc2VlIHRoZSBgdHV0b3JpYWwgYnkgSm9lbAogU3BvbHNreSA8aHR0cDovL2hnaW5pdC5jb20+YF8gb3IgdGhlIGBHdWlkZSB0byBNZXJjdXJpYWwgV29ya2Zsb3dzCiA8aHR0cDovL21lcmN1cmlhbC5zZWxlbmljLmNvbS9ndWlkZS8+YF8uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjMucnN0IGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJhMjQxNQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy93aGF0c25ldy8zLjMucnN0CkBAIC0wLDAgKzEsMjUxMSBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICBXaGF0J3MgTmV3IEluIFB5dGhvbiAzLjMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOlJlbGVhc2U6IHxyZWxlYXNlfAorOkRhdGU6IHx0b2RheXwKKworLi4gUnVsZXMgZm9yIG1haW50ZW5hbmNlOgorCisgICAqIEFueW9uZSBjYW4gYWRkIHRleHQgdG8gdGhpcyBkb2N1bWVudC4gIERvIG5vdCBzcGVuZCB2ZXJ5IG11Y2ggdGltZQorICAgb24gdGhlIHdvcmRpbmcgb2YgeW91ciBjaGFuZ2VzLCBiZWNhdXNlIHlvdXIgdGV4dCB3aWxsIHByb2JhYmx5CisgICBnZXQgcmV3cml0dGVuIHRvIHNvbWUgZGVncmVlLgorCisgICAqIFRoZSBtYWludGFpbmVyIHdpbGwgZ28gdGhyb3VnaCBNaXNjL05FV1MgcGVyaW9kaWNhbGx5IGFuZCBhZGQKKyAgIGNoYW5nZXM7IGl0J3MgdGhlcmVmb3JlIG1vcmUgaW1wb3J0YW50IHRvIGFkZCB5b3VyIGNoYW5nZXMgdG8KKyAgIE1pc2MvTkVXUyB0aGFuIHRvIHRoaXMgZmlsZS4KKworICAgKiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIGxpc3Qgb2YgZXZlcnkgc2luZ2xlIGNoYW5nZTsgY29tcGxldGVuZXNzCisgICBpcyB0aGUgcHVycG9zZSBvZiBNaXNjL05FV1MuICBTb21lIGNoYW5nZXMgSSBjb25zaWRlciB0b28gc21hbGwKKyAgIG9yIGVzb3RlcmljIHRvIGluY2x1ZGUuICBJZiBzdWNoIGEgY2hhbmdlIGlzIGFkZGVkIHRvIHRoZSB0ZXh0LAorICAgSSdsbCBqdXN0IHJlbW92ZSBpdC4gIChUaGlzIGlzIGFub3RoZXIgcmVhc29uIHlvdSBzaG91bGRuJ3Qgc3BlbmQKKyAgIHRvbyBtdWNoIHRpbWUgb24gd3JpdGluZyB5b3VyIGFkZGl0aW9uLikKKworICAgKiBJZiB5b3Ugd2FudCB0byBkcmF3IHlvdXIgbmV3IHRleHQgdG8gdGhlIGF0dGVudGlvbiBvZiB0aGUKKyAgIG1haW50YWluZXIsIGFkZCAnWFhYJyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhZ3JhcGggb3IKKyAgIHNlY3Rpb24uCisKKyAgICogSXQncyBPSyB0byBqdXN0IGFkZCBhIGZyYWdtZW50YXJ5IG5vdGUgYWJvdXQgYSBjaGFuZ2UuICBGb3IKKyAgIGV4YW1wbGU6ICJYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZQorICAgc29ja2V0IG1vZHVsZS4iICBUaGUgbWFpbnRhaW5lciB3aWxsIHJlc2VhcmNoIHRoZSBjaGFuZ2UgYW5kCisgICB3cml0ZSB0aGUgbmVjZXNzYXJ5IHRleHQuCisKKyAgICogWW91IGNhbiBjb21tZW50IG91dCB5b3VyIGFkZGl0aW9ucyBpZiB5b3UgbGlrZSwgYnV0IGl0J3Mgbm90CisgICBuZWNlc3NhcnkgKGVzcGVjaWFsbHkgd2hlbiBhIGZpbmFsIHJlbGVhc2UgaXMgc29tZSBtb250aHMgYXdheSkuCisKKyAgICogQ3JlZGl0IHRoZSBhdXRob3Igb2YgYSBwYXRjaCBvciBidWdmaXguICAgSnVzdCB0aGUgbmFtZSBpcworICAgc3VmZmljaWVudDsgdGhlIGUtbWFpbCBhZGRyZXNzIGlzbid0IG5lY2Vzc2FyeS4KKworICAgKiBJdCdzIGhlbHBmdWwgdG8gYWRkIHRoZSBidWcvcGF0Y2ggbnVtYmVyIGFzIGEgY29tbWVudDoKKworICAgWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUgc29ja2V0CisgICBtb2R1bGUuCisgICAoQ29udHJpYnV0ZWQgYnkgUC5ZLiBEZXZlbG9wZXIgaW4gOmlzc3VlOmAxMjM0NWAuKQorCisgICBUaGlzIHNhdmVzIHRoZSBtYWludGFpbmVyIHRoZSBlZmZvcnQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgTWVyY3VyaWFsIGxvZworICAgd2hlbiByZXNlYXJjaGluZyBhIGNoYW5nZS4KKworVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuMywgY29tcGFyZWQgdG8gMy4yLgorUHl0aG9uIDMuMyB3YXMgcmVsZWFzZWQgb24gU2VwdGVtYmVyIDI5LCAyMDEyLiAgRm9yIGZ1bGwgZGV0YWlscywKK3NlZSB0aGUgOnNvdXJjZTpgTWlzYy9ORVdTYCBmaWxlLgorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDM5OGAgLSBQeXRob24gMy4zIFJlbGVhc2UgU2NoZWR1bGUKKworCitTdW1tYXJ5IC0tIFJlbGVhc2UgaGlnaGxpZ2h0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gVGhpcyBzZWN0aW9uIHNpbmdsZXMgb3V0IHRoZSBtb3N0IGltcG9ydGFudCBjaGFuZ2VzIGluIFB5dGhvbiAzLjMuCisgICBCcmV2aXR5IGlzIGtleS4KKworTmV3IHN5bnRheCBmZWF0dXJlczoKKworKiBOZXcgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbiBmb3IgOnJlZjpgZ2VuZXJhdG9yIGRlbGVnYXRpb24gPHBlcC0zODA+YC4KKyogVGhlIGBgdSd1bmljb2RlJ2BgIHN5bnRheCBpcyBhY2NlcHRlZCBhZ2FpbiBmb3IgOmNsYXNzOmBzdHJgIG9iamVjdHMuCisKK05ldyBsaWJyYXJ5IG1vZHVsZXM6CisKKyogOm1vZDpgZmF1bHRoYW5kbGVyYCAoaGVscHMgZGVidWdnaW5nIGxvdy1sZXZlbCBjcmFzaGVzKQorKiA6bW9kOmBpcGFkZHJlc3NgIChoaWdoLWxldmVsIG9iamVjdHMgcmVwcmVzZW50aW5nIElQIGFkZHJlc3NlcyBhbmQgbWFza3MpCisqIDptb2Q6YGx6bWFgIChjb21wcmVzcyBkYXRhIHVzaW5nIHRoZSBYWiAvIExaTUEgYWxnb3JpdGhtKQorKiA6bW9kOmB1bml0dGVzdC5tb2NrYCAocmVwbGFjZSBwYXJ0cyBvZiB5b3VyIHN5c3RlbSB1bmRlciB0ZXN0IHdpdGggbW9jayBvYmplY3RzKQorKiA6bW9kOmB2ZW52YCAoUHl0aG9uIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnRzIDxwZXAtNDA1PmAsIGFzIGluIHRoZQorICBwb3B1bGFyIGBgdmlydHVhbGVudmBgIHBhY2thZ2UpCisKK05ldyBidWlsdC1pbiBmZWF0dXJlczoKKworKiBSZXdvcmtlZCA6cmVmOmBJL08gZXhjZXB0aW9uIGhpZXJhcmNoeSA8cGVwLTMxNTE+YC4KKworSW1wbGVtZW50YXRpb24gaW1wcm92ZW1lbnRzOgorCisqIFJld3JpdHRlbiA6cmVmOmBpbXBvcnQgbWFjaGluZXJ5IDxpbXBvcnRsaWI+YCBiYXNlZCBvbiA6bW9kOmBpbXBvcnRsaWJgLgorKiBNb3JlIGNvbXBhY3QgOnJlZjpgdW5pY29kZSBzdHJpbmdzIDxwZXAtMzkzPmAuCisqIE1vcmUgY29tcGFjdCA6cmVmOmBhdHRyaWJ1dGUgZGljdGlvbmFyaWVzIDxwZXAtNDEyPmAuCisKK1NpZ25pZmljYW50bHkgSW1wcm92ZWQgTGlicmFyeSBNb2R1bGVzOgorCisqIEMgQWNjZWxlcmF0b3IgZm9yIHRoZSA6cmVmOmBkZWNpbWFsIDxuZXctZGVjaW1hbD5gIG1vZHVsZS4KKyogQmV0dGVyIHVuaWNvZGUgaGFuZGxpbmcgaW4gdGhlIDpyZWY6YGVtYWlsIDxuZXctZW1haWw+YCBtb2R1bGUKKyAgKDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgcGFja2FnZT5gKS4KKworU2VjdXJpdHkgaW1wcm92ZW1lbnRzOgorCisqIEhhc2ggcmFuZG9taXphdGlvbiBpcyBzd2l0Y2hlZCBvbiBieSBkZWZhdWx0LgorCitQbGVhc2UgcmVhZCBvbiBmb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdXNlci1mYWNpbmcgY2hhbmdlcy4KKworCisuLiBfcGVwLTQwNToKKworUEVQIDQwNTogVmlydHVhbCBFbnZpcm9ubWVudHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1ZpcnR1YWwgZW52aXJvbm1lbnRzIGhlbHAgY3JlYXRlIHNlcGFyYXRlIFB5dGhvbiBzZXR1cHMgd2hpbGUgc2hhcmluZyBhCitzeXN0ZW0td2lkZSBiYXNlIGluc3RhbGwsIGZvciBlYXNlIG9mIG1haW50ZW5hbmNlLiAgVmlydHVhbCBlbnZpcm9ubWVudHMKK2hhdmUgdGhlaXIgb3duIHNldCBvZiBwcml2YXRlIHNpdGUgcGFja2FnZXMgKGkuZS4gbG9jYWxseS1pbnN0YWxsZWQKK2xpYnJhcmllcyksIGFuZCBhcmUgb3B0aW9uYWxseSBzZWdyZWdhdGVkIGZyb20gdGhlIHN5c3RlbS13aWRlIHNpdGUKK3BhY2thZ2VzLiAgVGhlaXIgY29uY2VwdCBhbmQgaW1wbGVtZW50YXRpb24gYXJlIGluc3BpcmVkIGJ5IHRoZSBwb3B1bGFyCitgYHZpcnR1YWxlbnZgYCB0aGlyZC1wYXJ0eSBwYWNrYWdlLCBidXQgYmVuZWZpdCBmcm9tIHRpZ2h0ZXIgaW50ZWdyYXRpb24KK3dpdGggdGhlIGludGVycHJldGVyIGNvcmUuCisKK1RoaXMgUEVQIGFkZHMgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcywgYW5kIHRoZQorOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKK2FkbWluaXN0cmF0aW9uLiAgVGhlIFB5dGhvbiBpbnRlcnByZXRlciBjaGVja3MgZm9yIGEgYGBweXZlbnYuY2ZnYGAsCitmaWxlIHdob3NlIGV4aXN0ZW5jZSBzaWduYWxzIHRoZSBiYXNlIG9mIGEgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeQordHJlZS4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0MDVgIC0gUHl0aG9uIFZpcnR1YWwgRW52aXJvbm1lbnRzCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQ2FybCBNZXllcjsgaW1wbGVtZW50YXRpb24gYnkgQ2FybCBNZXllciBhbmQgVmluYXkgU2FqaXAKKworCitQRVAgNDIwOiBJbXBsaWNpdCBOYW1lc3BhY2UgUGFja2FnZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitOYXRpdmUgc3VwcG9ydCBmb3IgcGFja2FnZSBkaXJlY3RvcmllcyB0aGF0IGRvbid0IHJlcXVpcmUgYGBfX2luaXRfXy5weWBgCittYXJrZXIgZmlsZXMgYW5kIGNhbiBhdXRvbWF0aWNhbGx5IHNwYW4gbXVsdGlwbGUgcGF0aCBzZWdtZW50cyAoaW5zcGlyZWQgYnkKK3ZhcmlvdXMgdGhpcmQgcGFydHkgYXBwcm9hY2hlcyB0byBuYW1lc3BhY2UgcGFja2FnZXMsIGFzIGRlc2NyaWJlZCBpbgorOnBlcDpgNDIwYCkKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQyMGAgLSBJbXBsaWNpdCBOYW1lc3BhY2UgUGFja2FnZXMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEVyaWMgVi4gU21pdGg7IGltcGxlbWVudGF0aW9uIGJ5IEVyaWMgVi4gU21pdGgKKyAgICAgIGFuZCBCYXJyeSBXYXJzYXcKKworCisuLiBfcGVwLTMxMTgtdXBkYXRlOgorCitQRVAgMzExODogTmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gYW5kIGJ1ZmZlciBwcm90b2NvbCBkb2N1bWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiA6cGVwOmAzMTE4YCBoYXMgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLgorCitUaGUgbmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gY29tcHJlaGVuc2l2ZWx5IGZpeGVzIGFsbCBvd25lcnNoaXAgYW5kCitsaWZldGltZSBpc3N1ZXMgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGZpZWxkcyBpbiB0aGUgUHlfYnVmZmVyIHN0cnVjdAordGhhdCBsZWQgdG8gbXVsdGlwbGUgY3Jhc2ggcmVwb3J0cy4gQWRkaXRpb25hbGx5LCBzZXZlcmFsIGZ1bmN0aW9ucyB0aGF0CitjcmFzaGVkIG9yIHJldHVybmVkIGluY29ycmVjdCByZXN1bHRzIGZvciBub24tY29udGlndW91cyBvciBtdWx0aS1kaW1lbnNpb25hbAoraW5wdXQgaGF2ZSBiZWVuIGZpeGVkLgorCitUaGUgbWVtb3J5dmlldyBvYmplY3Qgbm93IGhhcyBhIFBFUC0zMTE4IGNvbXBsaWFudCBnZXRidWZmZXJwcm9jKCkKK3RoYXQgY2hlY2tzIHRoZSBjb25zdW1lcidzIHJlcXVlc3QgdHlwZS4gTWFueSBuZXcgZmVhdHVyZXMgaGF2ZSBiZWVuCithZGRlZCwgbW9zdCBvZiB0aGVtIHdvcmsgaW4gZnVsbCBnZW5lcmFsaXR5IGZvciBub24tY29udGlndW91cyBhcnJheXMKK2FuZCBhcnJheXMgd2l0aCBzdWJvZmZzZXRzLgorCitUaGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLCBjbGVhcmx5IHNwZWxsaW5nIG91dCByZXNwb25zaWJpbGl0aWVzCitmb3IgYm90aCBleHBvcnRlcnMgYW5kIGNvbnN1bWVycy4gQnVmZmVyIHJlcXVlc3QgZmxhZ3MgYXJlIGdyb3VwZWQgaW50bworYmFzaWMgYW5kIGNvbXBvdW5kIGZsYWdzLiBUaGUgbWVtb3J5IGxheW91dCBvZiBub24tY29udGlndW91cyBhbmQKK211bHRpLWRpbWVuc2lvbmFsIE51bVB5LXN0eWxlIGFycmF5cyBpcyBleHBsYWluZWQuCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCisqIEFsbCBuYXRpdmUgc2luZ2xlIGNoYXJhY3RlciBmb3JtYXQgc3BlY2lmaWVycyBpbiBzdHJ1Y3QgbW9kdWxlIHN5bnRheAorICAob3B0aW9uYWxseSBwcmVmaXhlZCB3aXRoICdAJykgYXJlIG5vdyBzdXBwb3J0ZWQuCisKKyogV2l0aCBzb21lIHJlc3RyaWN0aW9ucywgdGhlIGNhc3QoKSBtZXRob2QgYWxsb3dzIGNoYW5naW5nIG9mIGZvcm1hdCBhbmQKKyAgc2hhcGUgb2YgQy1jb250aWd1b3VzIGFycmF5cy4KKworKiBNdWx0aS1kaW1lbnNpb25hbCBsaXN0IHJlcHJlc2VudGF0aW9ucyBhcmUgc3VwcG9ydGVkIGZvciBhbnkgYXJyYXkgdHlwZS4KKworKiBNdWx0aS1kaW1lbnNpb25hbCBjb21wYXJpc29ucyBhcmUgc3VwcG9ydGVkIGZvciBhbnkgYXJyYXkgdHlwZS4KKworKiBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgb2YgaGFzaGFibGUgKHJlYWQtb25seSkgdHlwZXMgd2l0aCBmb3JtYXRzIEIsCisgIGIgb3IgYyBhcmUgbm93IGhhc2hhYmxlLiAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMzQxMWApCisKKyogQXJiaXRyYXJ5IHNsaWNpbmcgb2YgYW55IDEtRCBhcnJheXMgdHlwZSBpcyBzdXBwb3J0ZWQuIEZvciBleGFtcGxlLCBpdAorICBpcyBub3cgcG9zc2libGUgdG8gcmV2ZXJzZSBhIG1lbW9yeXZpZXcgaW4gTygxKSBieSB1c2luZyBhIG5lZ2F0aXZlIHN0ZXAuCisKK0FQSSBjaGFuZ2VzCistLS0tLS0tLS0tLQorCisqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaW1lbnNpb25zIGlzIG9mZmljaWFsbHkgbGltaXRlZCB0byA2NC4KKworKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgZW1wdHkgc2hhcGUsIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMgaXMgbm93CisgIGFuIGVtcHR5IHR1cGxlIGluc3RlYWQgb2YgTm9uZS4KKworKiBBY2Nlc3NpbmcgYSBtZW1vcnl2aWV3IGVsZW1lbnQgd2l0aCBmb3JtYXQgJ0InICh1bnNpZ25lZCBieXRlcykKKyAgbm93IHJldHVybnMgYW4gaW50ZWdlciAoaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzdHJ1Y3QgbW9kdWxlIHN5bnRheCkuCisgIEZvciByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgdGhlIHZpZXcgbXVzdCBiZSBjYXN0IHRvICdjJyBmaXJzdC4KKworKiBtZW1vcnl2aWV3IGNvbXBhcmlzb25zIG5vdyB1c2UgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBvcGVyYW5kcworICBhbmQgY29tcGFyZSBhbGwgYXJyYXkgZWxlbWVudHMgYnkgdmFsdWUuIEFsbCBmb3JtYXQgc3RyaW5ncyBpbiBzdHJ1Y3QKKyAgbW9kdWxlIHN5bnRheCBhcmUgc3VwcG9ydGVkLiBWaWV3cyB3aXRoIHVucmVjb2duaXNlZCBmb3JtYXQgc3RyaW5ncworICBhcmUgc3RpbGwgcGVybWl0dGVkLCBidXQgd2lsbCBhbHdheXMgY29tcGFyZSBhcyB1bmVxdWFsLCByZWdhcmRsZXNzCisgIG9mIHZpZXcgY29udGVudHMuCisKKyogRm9yIGZ1cnRoZXIgY2hhbmdlcyBzZWUgYEJ1aWxkIGFuZCBDIEFQSSBDaGFuZ2VzYF8gYW5kIGBQb3J0aW5nIEMgY29kZWBfIC4KKworKENvbnRyaWJ1dGVkIGJ5IFN0ZWZhbiBLcmFoIGluIDppc3N1ZTpgMTAxODFgKQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzExOGAgLSBSZXZpc2luZyB0aGUgQnVmZmVyIFByb3RvY29sCisKKworLi4gX3BlcC0zOTM6CisKK1BFUCAzOTM6IEZsZXhpYmxlIFN0cmluZyBSZXByZXNlbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBVbmljb2RlIHN0cmluZyB0eXBlIGlzIGNoYW5nZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbnRlcm5hbAorcmVwcmVzZW50YXRpb25zLCBkZXBlbmRpbmcgb24gdGhlIGNoYXJhY3RlciB3aXRoIHRoZSBsYXJnZXN0IFVuaWNvZGUgb3JkaW5hbAorKDEsIDIsIG9yIDQgYnl0ZXMpIGluIHRoZSByZXByZXNlbnRlZCBzdHJpbmcuICBUaGlzIGFsbG93cyBhIHNwYWNlLWVmZmljaWVudAorcmVwcmVzZW50YXRpb24gaW4gY29tbW9uIGNhc2VzLCBidXQgZ2l2ZXMgYWNjZXNzIHRvIGZ1bGwgVUNTLTQgb24gYWxsCitzeXN0ZW1zLiAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBBUElzLCBzZXZlcmFsIHJlcHJlc2VudGF0aW9ucyBtYXkKK2V4aXN0IGluIHBhcmFsbGVsOyBvdmVyIHRpbWUsIHRoaXMgY29tcGF0aWJpbGl0eSBzaG91bGQgYmUgcGhhc2VkIG91dC4KKworT24gdGhlIFB5dGhvbiBzaWRlLCB0aGVyZSBzaG91bGQgYmUgbm8gZG93bnNpZGUgdG8gdGhpcyBjaGFuZ2UuCisKK09uIHRoZSBDIEFQSSBzaWRlLCBQRVAgMzkzIGlzIGZ1bGx5IGJhY2t3YXJkIGNvbXBhdGlibGUuICBUaGUgbGVnYWN5IEFQSQorc2hvdWxkIHJlbWFpbiBhdmFpbGFibGUgYXQgbGVhc3QgZml2ZSB5ZWFycy4gIEFwcGxpY2F0aW9ucyB1c2luZyB0aGUgbGVnYWN5CitBUEkgd2lsbCBub3QgZnVsbHkgYmVuZWZpdCBvZiB0aGUgbWVtb3J5IHJlZHVjdGlvbiwgb3IgLSB3b3JzZSAtIG1heSB1c2UKK2EgYml0IG1vcmUgbWVtb3J5LCBiZWNhdXNlIFB5dGhvbiBtYXkgaGF2ZSB0byBtYWludGFpbiB0d28gdmVyc2lvbnMgb2YgZWFjaAorc3RyaW5nIChpbiB0aGUgbGVnYWN5IGZvcm1hdCBhbmQgaW4gdGhlIG5ldyBlZmZpY2llbnQgc3RvcmFnZSkuCisKK0Z1bmN0aW9uYWxpdHkKKy0tLS0tLS0tLS0tLS0KKworQ2hhbmdlcyBpbnRyb2R1Y2VkIGJ5IDpwZXA6YDM5M2AgYXJlIHRoZSBmb2xsb3dpbmc6CisKKyogUHl0aG9uIG5vdyBhbHdheXMgc3VwcG9ydHMgdGhlIGZ1bGwgcmFuZ2Ugb2YgVW5pY29kZSBjb2RlcG9pbnRzLCBpbmNsdWRpbmcKKyAgbm9uLUJNUCBvbmVzIChpLmUuIGZyb20gYGBVKzAwMDBgYCB0byBgYFUrMTBGRkZGYGApLiAgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4KKyAgbmFycm93IGFuZCB3aWRlIGJ1aWxkcyBubyBsb25nZXIgZXhpc3RzIGFuZCBQeXRob24gbm93IGJlaGF2ZXMgbGlrZSBhIHdpZGUKKyAgYnVpbGQsIGV2ZW4gdW5kZXIgV2luZG93cy4KKworKiBXaXRoIHRoZSBkZWF0aCBvZiBuYXJyb3cgYnVpbGRzLCB0aGUgcHJvYmxlbXMgc3BlY2lmaWMgdG8gbmFycm93IGJ1aWxkcyBoYXZlCisgIGFsc28gYmVlbiBmaXhlZCwgZm9yIGV4YW1wbGU6CisKKyAgKiA6ZnVuYzpgbGVuYCBub3cgYWx3YXlzIHJldHVybnMgMSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzLAorICAgIHNvIGBgbGVuKCdcVTAwMTBGRkZGJykgPT0gMWBgOworCisgICogc3Vycm9nYXRlIHBhaXJzIGFyZSBub3QgcmVjb21iaW5lZCBpbiBzdHJpbmcgbGl0ZXJhbHMsCisgICAgc28gYGAnXHVEQkZGXHVERkZGJyAhPSAnXFUwMDEwRkZGRidgYDsKKworICAqIGluZGV4aW5nIG9yIHNsaWNpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlLAorICAgIHNvIGBgJ1xVMDAxMEZGRkYnWzBdYGAgbm93IHJldHVybnMgYGAnXFUwMDEwRkZGRidgYCBhbmQgbm90IGBgJ1x1REJGRidgYDsKKworICAqIGFsbCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgbm93IGNvcnJlY3RseSBoYW5kbGUKKyAgICBub24tQk1QIGNvZGVwb2ludHMuCisKKyogVGhlIHZhbHVlIG9mIDpkYXRhOmBzeXMubWF4dW5pY29kZWAgaXMgbm93IGFsd2F5cyBgYDExMTQxMTFgYCAoYGAweDEwRkZGRmBgCisgIGluIGhleGFkZWNpbWFsKS4gIFRoZSA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TWF4YCBmdW5jdGlvbiBzdGlsbCByZXR1cm5zCisgIGVpdGhlciBgYDB4RkZGRmBgIG9yIGBgMHgxMEZGRkZgYCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgYW5kIGl0IHNob3VsZAorICBub3QgYmUgdXNlZCB3aXRoIHRoZSBuZXcgVW5pY29kZSBBUEkgKHNlZSA6aXNzdWU6YDEzMDU0YCkuCisKKyogVGhlIDpmaWxlOmAuL2NvbmZpZ3VyZWAgZmxhZyBgYC0td2l0aC13aWRlLXVuaWNvZGVgYCBoYXMgYmVlbiByZW1vdmVkLgorCitQZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc3RvcmFnZSBvZiBVbmljb2RlIHN0cmluZ3Mgbm93IGRlcGVuZHMgb24gdGhlIGhpZ2hlc3QgY29kZXBvaW50IGluIHRoZSBzdHJpbmc6CisKKyogcHVyZSBBU0NJSSBhbmQgTGF0aW4xIHN0cmluZ3MgKGBgVSswMDAwLVUrMDBGRmBgKSB1c2UgMSBieXRlIHBlciBjb2RlcG9pbnQ7CisKKyogQk1QIHN0cmluZ3MgKGBgVSswMDAwLVUrRkZGRmBgKSB1c2UgMiBieXRlcyBwZXIgY29kZXBvaW50OworCisqIG5vbi1CTVAgc3RyaW5ncyAoYGBVKzEwMDAwLVUrMTBGRkZGYGApIHVzZSA0IGJ5dGVzIHBlciBjb2RlcG9pbnQuCisKK1RoZSBuZXQgZWZmZWN0IGlzIHRoYXQgZm9yIG1vc3QgYXBwbGljYXRpb25zLCBtZW1vcnkgdXNhZ2Ugb2Ygc3RyaW5nCitzdG9yYWdlIHNob3VsZCBkZWNyZWFzZSBzaWduaWZpY2FudGx5IC0gZXNwZWNpYWxseSBjb21wYXJlZCB0byBmb3JtZXIKK3dpZGUgdW5pY29kZSBidWlsZHMgLSBhcywgaW4gbWFueSBjYXNlcywgc3RyaW5ncyB3aWxsIGJlIHB1cmUgQVNDSUkKK2V2ZW4gaW4gaW50ZXJuYXRpb25hbCBjb250ZXh0cyAoYmVjYXVzZSBtYW55IHN0cmluZ3Mgc3RvcmUgbm9uLWh1bWFuCitsYW5ndWFnZSBkYXRhLCBzdWNoIGFzIFhNTCBmcmFnbWVudHMsIEhUVFAgaGVhZGVycywgSlNPTi1lbmNvZGVkIGRhdGEsCitldGMuKS4gIFdlIGFsc28gaG9wZSB0aGF0IGl0IHdpbGwsIGZvciB0aGUgc2FtZSByZWFzb25zLCBpbmNyZWFzZSBDUFUKK2NhY2hlIGVmZmljaWVuY3kgb24gbm9uLXRyaXZpYWwgYXBwbGljYXRpb25zLiBUaGUgbWVtb3J5IHVzYWdlIG9mCitQeXRob24gMy4zIGlzIHR3byB0byB0aHJlZSB0aW1lcyBzbWFsbGVyIHRoYW4gUHl0aG9uIDMuMiwgYW5kIGEgbGl0dGxlCitiaXQgYmV0dGVyIHRoYW4gUHl0aG9uIDIuNywgb24gYSBEamFuZ28gYmVuY2htYXJrIChzZWUgdGhlIFBFUCBmb3IKK2RldGFpbHMpLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzkzYCAtIEZsZXhpYmxlIFN0cmluZyBSZXByZXNlbnRhdGlvbgorICAgICAgUEVQIHdyaXR0ZW4gYnkgTWFydGluIHZvbiBMw7Z3aXM7IGltcGxlbWVudGF0aW9uIGJ5IFRvcnN0ZW4gQmVja2VyCisgICAgICBhbmQgTWFydGluIHZvbiBMw7Z3aXMuCisKKworLi4gX3BlcC0zOTc6CisKK1BFUCAzOTc6IFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBQeXRob24gMy4zIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhIGBgcHlgYCBsYXVuY2hlciBhcHBsaWNhdGlvbgordGhhdCBjYW4gYmUgdXNlZCB0byBsYXVuY2ggUHl0aG9uIGFwcGxpY2F0aW9ucyBpbiBhIHZlcnNpb24gaW5kZXBlbmRlbnQKK2Zhc2hpb24uCisKK1RoaXMgbGF1bmNoZXIgaXMgaW52b2tlZCBpbXBsaWNpdGx5IHdoZW4gZG91YmxlLWNsaWNraW5nIGBgKi5weWBgIGZpbGVzLgorSWYgb25seSBhIHNpbmdsZSBQeXRob24gdmVyc2lvbiBpcyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSwgdGhhdCB2ZXJzaW9uCit3aWxsIGJlIHVzZWQgdG8gcnVuIHRoZSBmaWxlLiBJZiBtdWx0aXBsZSB2ZXJzaW9ucyBhcmUgaW5zdGFsbGVkLCB0aGUgbW9zdAorcmVjZW50IHZlcnNpb24gaXMgdXNlZCBieSBkZWZhdWx0LCBidXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbmNsdWRpbmcKK2EgVW5peC1zdHlsZSAic2hlYmFuZyBsaW5lIiBpbiB0aGUgUHl0aG9uIHNjcmlwdC4KKworVGhlIGxhdW5jaGVyIGNhbiBhbHNvIGJlIHVzZWQgZXhwbGljaXRseSBmcm9tIHRoZSBjb21tYW5kIGxpbmUgYXMgdGhlIGBgcHlgYAorYXBwbGljYXRpb24uIFJ1bm5pbmcgYGBweWBgIGZvbGxvd3MgdGhlIHNhbWUgdmVyc2lvbiBzZWxlY3Rpb24gcnVsZXMgYXMKK2ltcGxpY2l0bHkgbGF1bmNoaW5nIHNjcmlwdHMsIGJ1dCBhIG1vcmUgc3BlY2lmaWMgdmVyc2lvbiBjYW4gYmUgc2VsZWN0ZWQKK2J5IHBhc3NpbmcgYXBwcm9wcmlhdGUgYXJndW1lbnRzIChzdWNoIGFzIGBgLTNgYCB0byByZXF1ZXN0IFB5dGhvbiAzIHdoZW4KK1B5dGhvbiAyIGlzIGFsc28gaW5zdGFsbGVkLCBvciBgYC0yLjZgYCB0byBzcGVjaWZjbGx5IHJlcXVlc3QgYW4gZWFybGllcgorUHl0aG9uIHZlcnNpb24gd2hlbiBhIG1vcmUgcmVjZW50IHZlcnNpb24gaXMgaW5zdGFsbGVkKS4KKworSW4gYWRkaXRpb24gdG8gdGhlIGxhdW5jaGVyLCB0aGUgV2luZG93cyBpbnN0YWxsZXIgbm93IGluY2x1ZGVzIGFuCitvcHRpb24gdG8gYWRkIHRoZSBuZXdseSBpbnN0YWxsZWQgUHl0aG9uIHRvIHRoZSBzeXN0ZW0gUEFUSCAoY29udHJpYnV0ZWQKK2J5IEJyaWFuIEN1cnRpbiBpbiA6aXNzdWU6YDM1NjFgKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM5N2AgLSBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKyAgICAgIFBFUCB3cml0dGVuIGJ5IE1hcmsgSGFtbW9uZCBhbmQgTWFydGluIHYuIEzDtndpczsgaW1wbGVtZW50YXRpb24gYnkKKyAgICAgIFZpbmF5IFNhamlwLgorCisgICBMYXVuY2hlciBkb2N1bWVudGF0aW9uOiA6cmVmOmBsYXVuY2hlcmAKKworICAgSW5zdGFsbGVyIFBBVEggbW9kaWZpY2F0aW9uOiA6cmVmOmB3aW5kb3dzLXBhdGgtbW9kYAorCisKKy4uIF9wZXAtMzE1MToKKworUEVQIDMxNTE6IFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBoaWVyYXJjaHkgb2YgZXhjZXB0aW9ucyByYWlzZWQgYnkgb3BlcmF0aW5nIHN5c3RlbSBlcnJvcnMgaXMgbm93IGJvdGgKK3NpbXBsaWZpZWQgYW5kIGZpbmVyLWdyYWluZWQuCisKK1lvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFueW1vcmUgYWJvdXQgY2hvb3NpbmcgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbgordHlwZSBiZXR3ZWVuIDpleGM6YE9TRXJyb3JgLCA6ZXhjOmBJT0Vycm9yYCwgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsCis6ZXhjOmBXaW5kb3dzRXJyb3JgLCA6ZXhjOmBtbWFwLmVycm9yYCwgOmV4Yzpgc29ja2V0LmVycm9yYCBvcgorOmV4Yzpgc2VsZWN0LmVycm9yYC4gIEFsbCB0aGVzZSBleGNlcHRpb24gdHlwZXMgYXJlIG5vdyBvbmx5IG9uZToKKzpleGM6YE9TRXJyb3JgLiAgVGhlIG90aGVyIG5hbWVzIGFyZSBrZXB0IGFzIGFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHkKK3JlYXNvbnMuCisKK0Fsc28sIGl0IGlzIG5vdyBlYXNpZXIgdG8gY2F0Y2ggYSBzcGVjaWZpYyBlcnJvciBjb25kaXRpb24uICBJbnN0ZWFkIG9mCitpbnNwZWN0aW5nIHRoZSBgYGVycm5vYGAgYXR0cmlidXRlIChvciBgYGFyZ3NbMF1gYCkgZm9yIGEgcGFydGljdWxhcgorY29uc3RhbnQgZnJvbSB0aGUgOm1vZDpgZXJybm9gIG1vZHVsZSwgeW91IGNhbiBjYXRjaCB0aGUgYWRlcXVhdGUKKzpleGM6YE9TRXJyb3JgIHN1YmNsYXNzLiAgVGhlIGF2YWlsYWJsZSBzdWJjbGFzc2VzIGFyZSB0aGUgZm9sbG93aW5nOgorCisqIDpleGM6YEJsb2NraW5nSU9FcnJvcmAKKyogOmV4YzpgQ2hpbGRQcm9jZXNzRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25FcnJvcmAKKyogOmV4YzpgRmlsZUV4aXN0c0Vycm9yYAorKiA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAKKyogOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAKKyogOmV4YzpgSXNBRGlyZWN0b3J5RXJyb3JgCisqIDpleGM6YE5vdEFEaXJlY3RvcnlFcnJvcmAKKyogOmV4YzpgUGVybWlzc2lvbkVycm9yYAorKiA6ZXhjOmBQcm9jZXNzTG9va3VwRXJyb3JgCisqIDpleGM6YFRpbWVvdXRFcnJvcmAKKworQW5kIHRoZSA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIGl0c2VsZiBoYXMgZmluZXItZ3JhaW5lZCBzdWJjbGFzc2VzOgorCisqIDpleGM6YEJyb2tlblBpcGVFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvblJlc2V0RXJyb3JgCisKK1RoYW5rcyB0byB0aGUgbmV3IGV4Y2VwdGlvbnMsIGNvbW1vbiB1c2FnZXMgb2YgdGhlIDptb2Q6YGVycm5vYCBjYW4gbm93IGJlCithdm9pZGVkLiAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZSB3cml0dGVuIGZvciBQeXRob24gMy4yOjoKKworICAgIGZyb20gZXJybm8gaW1wb3J0IEVOT0VOVCwgRUFDQ0VTLCBFUEVSTQorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oImRvY3VtZW50LnR4dCIpIGFzIGY6CisgICAgICAgICAgICBjb250ZW50ID0gZi5yZWFkKCkKKyAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgIGlmIGVyci5lcnJubyA9PSBFTk9FTlQ6CisgICAgICAgICAgICBwcmludCgiZG9jdW1lbnQudHh0IGZpbGUgaXMgbWlzc2luZyIpCisgICAgICAgIGVsaWYgZXJyLmVycm5vIGluIChFQUNDRVMsIEVQRVJNKToKKyAgICAgICAgICAgIHByaW50KCJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHJlYWQgZG9jdW1lbnQudHh0IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlCisKK2NhbiBub3cgYmUgd3JpdHRlbiB3aXRob3V0IHRoZSA6bW9kOmBlcnJub2AgaW1wb3J0IGFuZCB3aXRob3V0IG1hbnVhbAoraW5zcGVjdGlvbiBvZiBleGNlcHRpb24gYXR0cmlidXRlczo6CisKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbigiZG9jdW1lbnQudHh0IikgYXMgZjoKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQorICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgcHJpbnQoImRvY3VtZW50LnR4dCBmaWxlIGlzIG1pc3NpbmciKQorICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgIHByaW50KCJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHJlYWQgZG9jdW1lbnQudHh0IikKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxNTFgIC0gUmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gRXhjZXB0aW9uIEhpZXJhcmNoeQorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEFudG9pbmUgUGl0cm91CisKKworLi4gX3BlcC0zODA6CisKK1BFUCAzODA6IFN5bnRheCBmb3IgRGVsZWdhdGluZyB0byBhIFN1YmdlbmVyYXRvcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1BFUCAzODAgYWRkcyB0aGUgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbiwgYWxsb3dpbmcgYSBnZW5lcmF0b3IgdG8gZGVsZWdhdGUKK3BhcnQgb2YgaXRzIG9wZXJhdGlvbnMgdG8gYW5vdGhlciBnZW5lcmF0b3IuIFRoaXMgYWxsb3dzIGEgc2VjdGlvbiBvZiBjb2RlCitjb250YWluaW5nICd5aWVsZCcgdG8gYmUgZmFjdG9yZWQgb3V0IGFuZCBwbGFjZWQgaW4gYW5vdGhlciBnZW5lcmF0b3IuCitBZGRpdGlvbmFsbHksIHRoZSBzdWJnZW5lcmF0b3IgaXMgYWxsb3dlZCB0byByZXR1cm4gd2l0aCBhIHZhbHVlLCBhbmQgdGhlCit2YWx1ZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgZGVsZWdhdGluZyBnZW5lcmF0b3IuCisKK1doaWxlIGRlc2lnbmVkIHByaW1hcmlseSBmb3IgdXNlIGluIGRlbGVnYXRpbmcgdG8gYSBzdWJnZW5lcmF0b3IsIHRoZSBgYHlpZWxkCitmcm9tYGAgZXhwcmVzc2lvbiBhY3R1YWxseSBhbGxvd3MgZGVsZWdhdGlvbiB0byBhcmJpdHJhcnkgc3ViaXRlcmF0b3JzLgorCitGb3Igc2ltcGxlIGl0ZXJhdG9ycywgYGB5aWVsZCBmcm9tIGl0ZXJhYmxlYGAgaXMgZXNzZW50aWFsbHkganVzdCBhIHNob3J0ZW5lZAorZm9ybSBvZiBgYGZvciBpdGVtIGluIGl0ZXJhYmxlOiB5aWVsZCBpdGVtYGA6OgorCisgICAgPj4+IGRlZiBnKHgpOgorICAgIC4uLiAgICAgeWllbGQgZnJvbSByYW5nZSh4LCAwLCAtMSkKKyAgICAuLi4gICAgIHlpZWxkIGZyb20gcmFuZ2UoeCkKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChnKDUpKQorICAgIFs1LCA0LCAzLCAyLCAxLCAwLCAxLCAyLCAzLCA0XQorCitIb3dldmVyLCB1bmxpa2UgYW4gb3JkaW5hcnkgbG9vcCwgYGB5aWVsZCBmcm9tYGAgYWxsb3dzIHN1YmdlbmVyYXRvcnMgdG8KK3JlY2VpdmUgc2VudCBhbmQgdGhyb3duIHZhbHVlcyBkaXJlY3RseSBmcm9tIHRoZSBjYWxsaW5nIHNjb3BlLCBhbmQKK3JldHVybiBhIGZpbmFsIHZhbHVlIHRvIHRoZSBvdXRlciBnZW5lcmF0b3I6OgorCisgICAgPj4+IGRlZiBhY2N1bXVsYXRlKHN0YXJ0PTApOgorICAgIC4uLiAgICAgdGFsbHkgPSBzdGFydAorICAgIC4uLiAgICAgd2hpbGUgMToKKyAgICAuLi4gICAgICAgICBuZXh0ID0geWllbGQKKyAgICAuLi4gICAgICAgICBpZiBuZXh0IGlzIE5vbmU6CisgICAgLi4uICAgICAgICAgICAgIHJldHVybiB0YWxseQorICAgIC4uLiAgICAgICAgIHRhbGx5ICs9IG5leHQKKyAgICAuLi4KKyAgICA+Pj4gZGVmIGdhdGhlcl90YWxsaWVzKHRhbGxpZXMsIHN0YXJ0PTApOgorICAgIC4uLiAgICAgd2hpbGUgMToKKyAgICAuLi4gICAgICAgICB0YWxseSA9IHlpZWxkIGZyb20gYWNjdW11bGF0ZSgpCisgICAgLi4uICAgICAgICAgdGFsbGllcy5hcHBlbmQodGFsbHkpCisgICAgLi4uCisgICAgPj4+IHRhbGxpZXMgPSBbXQorICAgID4+PiBhY2MgPSBnYXRoZXJfdGFsbGllcyh0YWxsaWVzKQorICAgID4+PiBuZXh0KGFjYykgIyBFbnN1cmUgdGhlIGFjY3VtdWxhdG9yIGlzIHJlYWR5IHRvIGFjY2VwdCB2YWx1ZXMKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgIC4uLiAgICAgYWNjLnNlbmQoaSkKKyAgICAuLi4KKyAgICA+Pj4gYWNjLnNlbmQoTm9uZSkgIyBGaW5pc2ggdGhlIGZpcnN0IHRhbGx5CisgICAgPj4+IGZvciBpIGluIHJhbmdlKDUpOgorICAgIC4uLiAgICAgYWNjLnNlbmQoaSkKKyAgICAuLi4KKyAgICA+Pj4gYWNjLnNlbmQoTm9uZSkgIyBGaW5pc2ggdGhlIHNlY29uZCB0YWxseQorICAgID4+PiB0YWxsaWVzCisgICAgWzQ1LCAxMF0KKworVGhlIG1haW4gcHJpbmNpcGxlIGRyaXZpbmcgdGhpcyBjaGFuZ2UgaXMgdG8gYWxsb3cgZXZlbiBnZW5lcmF0b3JzIHRoYXQgYXJlCitkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggdGhlIGBgc2VuZGBgIGFuZCBgYHRocm93YGAgbWV0aG9kcyB0byBiZSBzcGxpdCBpbnRvCittdWx0aXBsZSBzdWJnZW5lcmF0b3JzIGFzIGVhc2lseSBhcyBhIHNpbmdsZSBsYXJnZSBmdW5jdGlvbiBjYW4gYmUgc3BsaXQgaW50bworbXVsdGlwbGUgc3ViZnVuY3Rpb25zLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzgwYCAtIFN5bnRheCBmb3IgRGVsZWdhdGluZyB0byBhIFN1YmdlbmVyYXRvcgorICAgICAgUEVQIHdyaXR0ZW4gYnkgR3JlZyBFd2luZzsgaW1wbGVtZW50YXRpb24gYnkgR3JlZyBFd2luZywgaW50ZWdyYXRlZCBpbnRvCisgICAgICAzLjMgYnkgUmVuYXVkIEJsYW5jaCwgUnlhbiBLZWxseSBhbmQgTmljayBDb2dobGFuOyBkb2N1bWVudGF0aW9uIGJ5CisgICAgICBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrIGFuZCBOaWNrIENvZ2hsYW4KKworCitQRVAgNDA5OiBTdXBwcmVzc2luZyBleGNlcHRpb24gY29udGV4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUEVQIDQwOSBpbnRyb2R1Y2VzIG5ldyBzeW50YXggdGhhdCBhbGxvd3MgdGhlIGRpc3BsYXkgb2YgdGhlIGNoYWluZWQKK2V4Y2VwdGlvbiBjb250ZXh0IHRvIGJlIGRpc2FibGVkLiBUaGlzIGFsbG93cyBjbGVhbmVyIGVycm9yIG1lc3NhZ2VzIGluCithcHBsaWNhdGlvbnMgdGhhdCBjb252ZXJ0IGJldHdlZW4gZXhjZXB0aW9uIHR5cGVzOjoKKworICAgID4+PiBjbGFzcyBEOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhKToKKyAgICAuLi4gICAgICAgICBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzID0gZXh0cmEKKyAgICAuLi4gICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAuLi4gICAgICAgICB0cnk6CisgICAgLi4uICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzW2F0dHJdCisgICAgLi4uICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgIC4uLiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKSBmcm9tIE5vbmUKKyAgICAuLi4KKyAgICA+Pj4gRCh7fSkueAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA4LCBpbiBfX2dldGF0dHJfXworICAgIEF0dHJpYnV0ZUVycm9yOiB4CisKK1dpdGhvdXQgdGhlIGBgZnJvbSBOb25lYGAgc3VmZml4IHRvIHN1cHByZXNzIHRoZSBjYXVzZSwgdGhlIG9yaWdpbmFsCitleGNlcHRpb24gd291bGQgYmUgZGlzcGxheWVkIGJ5IGRlZmF1bHQ6OgorCisgICAgPj4+IGNsYXNzIEM6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgZXh0cmEpOgorICAgIC4uLiAgICAgICAgIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXMgPSBleHRyYQorICAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgIC4uLiAgICAgICAgIHRyeToKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXNbYXR0cl0KKyAgICAuLi4gICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgLi4uICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCisgICAgLi4uCisgICAgPj4+IEMoe30pLngKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA2LCBpbiBfX2dldGF0dHJfXworICAgIEtleUVycm9yOiAneCcKKworICAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKKworICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA4LCBpbiBfX2dldGF0dHJfXworICAgIEF0dHJpYnV0ZUVycm9yOiB4CisKK05vIGRlYnVnZ2luZyBjYXBhYmlsaXR5IGlzIGxvc3QsIGFzIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gY29udGV4dCByZW1haW5zCithdmFpbGFibGUgaWYgbmVlZGVkIChmb3IgZXhhbXBsZSwgaWYgYW4gaW50ZXJ2ZW5pbmcgbGlicmFyeSBoYXMgaW5jb3JyZWN0bHkKK3N1cHByZXNzZWQgdmFsdWFibGUgdW5kZXJseWluZyBkZXRhaWxzKTo6CisKKyAgICA+Pj4gdHJ5OgorICAgIC4uLiAgICAgRCh7fSkueAorICAgIC4uLiBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZXhjOgorICAgIC4uLiAgICAgcHJpbnQocmVwcihleGMuX19jb250ZXh0X18pKQorICAgIC4uLgorICAgIEtleUVycm9yKCd4JywpCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MDlgIC0gU3VwcHJlc3NpbmcgZXhjZXB0aW9uIGNvbnRleHQKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEV0aGFuIEZ1cm1hbjsgaW1wbGVtZW50ZWQgYnkgRXRoYW4gRnVybWFuIGFuZCBOaWNrCisgICAgICBDb2dobGFuLgorCisKK1BFUCA0MTQ6IEV4cGxpY2l0IFVuaWNvZGUgbGl0ZXJhbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIGVhc2UgdGhlIHRyYW5zaXRpb24gZnJvbSBQeXRob24gMiBmb3IgVW5pY29kZSBhd2FyZSBQeXRob24gYXBwbGljYXRpb25zCit0aGF0IG1ha2UgaGVhdnkgdXNlIG9mIFVuaWNvZGUgbGl0ZXJhbHMsIFB5dGhvbiAzLjMgb25jZSBhZ2FpbiBzdXBwb3J0cyB0aGUKKyJgYHVgYCIgcHJlZml4IGZvciBzdHJpbmcgbGl0ZXJhbHMuIFRoaXMgcHJlZml4IGhhcyBubyBzZW1hbnRpYyBzaWduaWZpY2FuY2UKK2luIFB5dGhvbiAzLCBpdCBpcyBwcm92aWRlZCBzb2xlbHkgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVyZWx5IG1lY2hhbmljYWwKK2NoYW5nZXMgaW4gbWlncmF0aW5nIHRvIFB5dGhvbiAzLCBtYWtpbmcgaXQgZWFzaWVyIGZvciBkZXZlbG9wZXJzIHRvIGZvY3VzIG9uCit0aGUgbW9yZSBzaWduaWZpY2FudCBzZW1hbnRpYyBjaGFuZ2VzIChzdWNoIGFzIHRoZSBzdHJpY3RlciBkZWZhdWx0CitzZXBhcmF0aW9uIG9mIGJpbmFyeSBhbmQgdGV4dCBkYXRhKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQxNGAgLSBFeHBsaWNpdCBVbmljb2RlIGxpdGVyYWxzCisgICAgICBQRVAgd3JpdHRlbiBieSBBcm1pbiBSb25hY2hlci4KKworCitQRVAgMzE1NTogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRnVuY3Rpb25zIGFuZCBjbGFzcyBvYmplY3RzIGhhdmUgYSBuZXcgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUgcmVwcmVzZW50aW5nCit0aGUgInBhdGgiIGZyb20gdGhlIG1vZHVsZSB0b3AtbGV2ZWwgdG8gdGhlaXIgZGVmaW5pdGlvbi4gIEZvciBnbG9iYWwgZnVuY3Rpb25zCithbmQgY2xhc3NlcywgdGhpcyBpcyB0aGUgc2FtZSBhcyBgYF9fbmFtZV9fYGAuICBGb3Igb3RoZXIgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLAoraXQgcHJvdmlkZXMgYmV0dGVyIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZXkgd2VyZSBhY3R1YWxseSBkZWZpbmVkLCBhbmQKK2hvdyB0aGV5IG1pZ2h0IGJlIGFjY2Vzc2libGUgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLgorCitFeGFtcGxlIHdpdGggKG5vbi1ib3VuZCkgbWV0aG9kczo6CisKKyAgID4+PiBjbGFzcyBDOgorICAgLi4uICAgICBkZWYgbWV0aChzZWxmKToKKyAgIC4uLiAgICAgICAgIHBhc3MKKyAgID4+PiBDLm1ldGguX19uYW1lX18KKyAgICdtZXRoJworICAgPj4+IEMubWV0aC5fX3F1YWxuYW1lX18KKyAgICdDLm1ldGgnCisKK0V4YW1wbGUgd2l0aCBuZXN0ZWQgY2xhc3Nlczo6CisKKyAgID4+PiBjbGFzcyBDOgorICAgLi4uICAgICBjbGFzcyBEOgorICAgLi4uICAgICAgICAgZGVmIG1ldGgoc2VsZik6CisgICAuLi4gICAgICAgICAgICAgcGFzcworICAgLi4uCisgICA+Pj4gQy5ELl9fbmFtZV9fCisgICAnRCcKKyAgID4+PiBDLkQuX19xdWFsbmFtZV9fCisgICAnQy5EJworICAgPj4+IEMuRC5tZXRoLl9fbmFtZV9fCisgICAnbWV0aCcKKyAgID4+PiBDLkQubWV0aC5fX3F1YWxuYW1lX18KKyAgICdDLkQubWV0aCcKKworRXhhbXBsZSB3aXRoIG5lc3RlZCBmdW5jdGlvbnM6OgorCisgICA+Pj4gZGVmIG91dGVyKCk6CisgICAuLi4gICAgIGRlZiBpbm5lcigpOgorICAgLi4uICAgICAgICAgcGFzcworICAgLi4uICAgICByZXR1cm4gaW5uZXIKKyAgIC4uLgorICAgPj4+IG91dGVyKCkuX19uYW1lX18KKyAgICdpbm5lcicKKyAgID4+PiBvdXRlcigpLl9fcXVhbG5hbWVfXworICAgJ291dGVyLjxsb2NhbHM+LmlubmVyJworCitUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRob3NlIG9iamVjdHMgaXMgYWxzbyBjaGFuZ2VkIHRvIGluY2x1ZGUgdGhlCituZXcsIG1vcmUgcHJlY2lzZSBpbmZvcm1hdGlvbjo6CisKKyAgID4+PiBzdHIoQy5EKQorICAgIjxjbGFzcyAnX19tYWluX18uQy5EJz4iCisgICA+Pj4gc3RyKEMuRC5tZXRoKQorICAgJzxmdW5jdGlvbiBDLkQubWV0aCBhdCAweDdmNDZiOWZlMzFlMD4nCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTU1YCAtIFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBBbnRvaW5lIFBpdHJvdS4KKworCisuLiBfcGVwLTQxMjoKKworUEVQIDQxMjogS2V5LVNoYXJpbmcgRGljdGlvbmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEaWN0aW9uYXJpZXMgdXNlZCBmb3IgdGhlIHN0b3JhZ2Ugb2Ygb2JqZWN0cycgYXR0cmlidXRlcyBhcmUgbm93IGFibGUgdG8KK3NoYXJlIHBhcnQgb2YgdGhlaXIgaW50ZXJuYWwgc3RvcmFnZSBiZXR3ZWVuIGVhY2ggb3RoZXIgKG5hbWVseSwgdGhlIHBhcnQKK3doaWNoIHN0b3JlcyB0aGUga2V5cyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBoYXNoZXMpLiAgVGhpcyByZWR1Y2VzIHRoZSBtZW1vcnkKK2NvbnN1bXB0aW9uIG9mIHByb2dyYW1zIGNyZWF0aW5nIG1hbnkgaW5zdGFuY2VzIG9mIG5vbi1idWlsdGluIHR5cGVzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDEyYCAtIEtleS1TaGFyaW5nIERpY3Rpb25hcnkKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBNYXJrIFNoYW5ub24uCisKKworUEVQIDM2MjogRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIG5ldyBmdW5jdGlvbiA6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmVgIG1ha2VzIGludHJvc3BlY3Rpb24gb2YgcHl0aG9uCitjYWxsYWJsZXMgZWFzeSBhbmQgc3RyYWlnaHRmb3J3YXJkLiAgQSBicm9hZCByYW5nZSBvZiBjYWxsYWJsZXMgaXMgc3VwcG9ydGVkOgorcHl0aG9uIGZ1bmN0aW9ucywgZGVjb3JhdGVkIG9yIG5vdCwgY2xhc3NlcywgYW5kIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAKK29iamVjdHMuICBOZXcgY2xhc3NlcyA6Y2xhc3M6YGluc3BlY3QuU2lnbmF0dXJlYCwgOmNsYXNzOmBpbnNwZWN0LlBhcmFtZXRlcmAKK2FuZCA6Y2xhc3M6YGluc3BlY3QuQm91bmRBcmd1bWVudHNgIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhbGwgc2lnbmF0dXJlcywKK3N1Y2ggYXMsIGFubm90YXRpb25zLCBkZWZhdWx0IHZhbHVlcywgcGFyYW1ldGVycyBraW5kcywgYW5kIGJvdW5kIGFyZ3VtZW50cywKK3doaWNoIGNvbnNpZGVyYWJseSBzaW1wbGlmaWVzIHdyaXRpbmcgZGVjb3JhdG9ycyBhbmQgYW55IGNvZGUgdGhhdCB2YWxpZGF0ZXMKK29yIGFtZW5kcyBjYWxsaW5nIHNpZ25hdHVyZXMgb3IgYXJndW1lbnRzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzYyYDogLSAgRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdAorICAgICAgUEVQIHdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uLCBZdXJ5IFNlbGl2YW5vdiwgTGFycnkgSGFzdGluZ3MsIEppd29uIFNlbzsKKyAgICAgIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisKK1BFUCA0MjE6IEFkZGluZyBzeXMuaW1wbGVtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBuZXcgYXR0cmlidXRlIG9uIHRoZSA6bW9kOmBzeXNgIG1vZHVsZSBleHBvc2VzIGRldGFpbHMgc3BlY2lmaWMgdG8gdGhlCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgaW50ZXJwcmV0ZXIuICBUaGUgaW5pdGlhbCBzZXQgb2YKK2F0dHJpYnV0ZXMgb24gOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbmAgYXJlIGBgbmFtZWBgLCBgYHZlcnNpb25gYCwKK2BgaGV4dmVyc2lvbmBgLCBhbmQgYGBjYWNoZV90YWdgYC4KKworVGhlIGludGVudGlvbiBvZiBgYHN5cy5pbXBsZW1lbnRhdGlvbmBgIGlzIHRvIGNvbnNvbGlkYXRlIGludG8gb25lIG5hbWVzcGFjZQordGhlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGRhdGEgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIFRoaXMgYWxsb3dzCitkaWZmZXJlbnQgUHl0aG9uIGltcGxlbWVudGF0aW9ucyB0byBzaGFyZSBhIHNpbmdsZSBzdGFuZGFyZCBsaWJyYXJ5IGNvZGUgYmFzZQorbXVjaCBtb3JlIGVhc2lseS4gIEluIGl0cyBpbml0aWFsIHN0YXRlLCBgYHN5cy5pbXBsZW1lbnRhdGlvbmBgIGhvbGRzIG9ubHkgYQorc21hbGwgcG9ydGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZGF0YS4gIE92ZXIgdGltZSB0aGF0IHJhdGlvIHdpbGwKK3NoaWZ0IGluIG9yZGVyIHRvIG1ha2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgbW9yZSBwb3J0YWJsZS4KKworT25lIGV4YW1wbGUgb2YgaW1wcm92ZWQgc3RhbmRhcmQgbGlicmFyeSBwb3J0YWJpbGl0eSBpcyBgYGNhY2hlX3RhZ2BgLiAgQXMgb2YKK1B5dGhvbiAzLjMsIGBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2BgIGlzIHVzZWQgYnkgOm1vZDpgaW1wb3J0bGliYCB0bworc3VwcG9ydCA6cGVwOmAzMTQ3YCBjb21wbGlhbmNlLiAgQW55IFB5dGhvbiBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMKK2BgaW1wb3J0bGliYGAgZm9yIGl0cyBidWlsdC1pbiBpbXBvcnQgc3lzdGVtIG1heSB1c2UgYGBjYWNoZV90YWdgYCB0byBjb250cm9sCit0aGUgY2FjaGluZyBiZWhhdmlvciBmb3IgbW9kdWxlcy4KKworU2ltcGxlTmFtZXNwYWNlCistLS0tLS0tLS0tLS0tLS0KKworVGhlIGltcGxlbWVudGF0aW9uIG9mIGBgc3lzLmltcGxlbWVudGF0aW9uYGAgYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IHR5cGUgdG8KK1B5dGhvbjogOmNsYXNzOmB0eXBlcy5TaW1wbGVOYW1lc3BhY2VgLiAgSW4gY29udHJhc3QgdG8gYSBtYXBwaW5nLWJhc2VkCituYW1lc3BhY2UsIGxpa2UgOmNsYXNzOmBkaWN0YCwgYGBTaW1wbGVOYW1lc3BhY2VgYCBpcyBhdHRyaWJ1dGUtYmFzZWQsIGxpa2UKKzpjbGFzczpgb2JqZWN0YC4gIEhvd2V2ZXIsIHVubGlrZSBgYG9iamVjdGBgLCBgYFNpbXBsZU5hbWVzcGFjZWBgIGluc3RhbmNlcworYXJlIHdyaXRhYmxlLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gYWRkLCByZW1vdmUsIGFuZCBtb2RpZnkgdGhlIG5hbWVzcGFjZQordGhyb3VnaCBub3JtYWwgYXR0cmlidXRlIGFjY2Vzcy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQyMWAgLSBBZGRpbmcgc3lzLmltcGxlbWVudGF0aW9uCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisKKy4uIF9pbXBvcnRsaWI6CisKK1VzaW5nIGltcG9ydGxpYiBhcyB0aGUgSW1wbGVtZW50YXRpb24gb2YgSW1wb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmlzc3VlOmAyMzc3YCAtIFJlcGxhY2UgX19pbXBvcnRfXyB3LyBpbXBvcnRsaWIuX19pbXBvcnRfXworOmlzc3VlOmAxMzk1OWAgLSBSZS1pbXBsZW1lbnQgcGFydHMgb2YgOm1vZDpgaW1wYCBpbiBwdXJlIFB5dGhvbgorOmlzc3VlOmAxNDYwNWAgLSBNYWtlIGltcG9ydCBtYWNoaW5lcnkgZXhwbGljaXQKKzppc3N1ZTpgMTQ2NDZgIC0gUmVxdWlyZSBsb2FkZXJzIHNldCBfX2xvYWRlcl9fIGFuZCBfX3BhY2thZ2VfXworCitUaGUgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIGlzIG5vdyBwb3dlcmVkIGJ5IDpmdW5jOmBpbXBvcnRsaWIuX19pbXBvcnRfX2AuCitUaGlzIHdvcmsgbGVhZHMgdG8gdGhlIGNvbXBsZXRpb24gb2YgInBoYXNlIDIiIG9mIDpwZXA6YDMwMmAuIFRoZXJlIGFyZQorbXVsdGlwbGUgYmVuZWZpdHMgdG8gdGhpcyBjaGFuZ2UuIEZpcnN0LCBpdCBoYXMgYWxsb3dlZCBmb3IgbW9yZSBvZiB0aGUKK21hY2hpbmVyeSBwb3dlcmluZyBpbXBvcnQgdG8gYmUgZXhwb3NlZCBpbnN0ZWFkIG9mIGJlaW5nIGltcGxpY2l0IGFuZCBoaWRkZW4KK3dpdGhpbiB0aGUgQyBjb2RlLiBJdCBhbHNvIHByb3ZpZGVzIGEgc2luZ2xlIGltcGxlbWVudGF0aW9uIGZvciBhbGwgUHl0aG9uIFZNcworc3VwcG9ydGluZyBQeXRob24gMy4zIHRvIHVzZSwgaGVscGluZyB0byBlbmQgYW55IFZNLXNwZWNpZmljIGRldmlhdGlvbnMgaW4KK2ltcG9ydCBzZW1hbnRpY3MuIEFuZCBmaW5hbGx5IGl0IGVhc2VzIHRoZSBtYWludGVuYW5jZSBvZiBpbXBvcnQsIGFsbG93aW5nIGZvcgorZnV0dXJlIGdyb3d0aCB0byBvY2N1ci4KKworRm9yIHRoZSBjb21tb24gdXNlciwgdGhlcmUgc2hvdWxkIGJlIG5vIHZpc2libGUgY2hhbmdlIGluIHNlbWFudGljcy4gIEZvcgordGhvc2Ugd2hvc2UgY29kZSBjdXJyZW50bHkgbWFuaXB1bGF0ZXMgaW1wb3J0IG9yIGNhbGxzIGltcG9ydAorcHJvZ3JhbW1hdGljYWxseSwgdGhlIGNvZGUgY2hhbmdlcyB0aGF0IG1pZ2h0IHBvc3NpYmx5IGJlIHJlcXVpcmVkIGFyZSBjb3ZlcmVkCitpbiB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXyBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKK05ldyBBUElzCistLS0tLS0tLQorT25lIG9mIHRoZSBsYXJnZSBiZW5lZml0cyBvZiB0aGlzIHdvcmsgaXMgdGhlIGV4cG9zdXJlIG9mIHdoYXQgZ29lcyBpbnRvCittYWtpbmcgdGhlIGltcG9ydCBzdGF0ZW1lbnQgd29yay4gVGhhdCBtZWFucyB0aGUgdmFyaW91cyBpbXBvcnRlcnMgdGhhdCB3ZXJlCitvbmNlIGltcGxpY2l0IGFyZSBub3cgZnVsbHkgZXhwb3NlZCBhcyBwYXJ0IG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgIHBhY2thZ2UuCisKK1RoZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgZGVmaW5lZCBpbiA6bW9kOmBpbXBvcnRsaWIuYWJjYCBoYXZlIGJlZW4gZXhwYW5kZWQKK3RvIHByb3Blcmx5IGRlbGluZWF0ZSBiZXR3ZWVuIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBwYXRoIGZpbmRlcj5gCithbmQgOnRlcm06YHBhdGggZW50cnkgZmluZGVycyA8cGF0aCBlbnRyeSBmaW5kZXI+YCBieSBpbnRyb2R1Y2luZworOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYCBhbmQKKzpjbGFzczpgaW1wb3J0bGliLmFiYy5QYXRoRW50cnlGaW5kZXJgLCByZXNwZWN0aXZlbHkuIFRoZSBvbGQgQUJDIG9mCis6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBpcyBub3cgb25seSBwcm92aWRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKK2FuZCBkb2VzIG5vdCBlbmZvcmNlIGFueSBtZXRob2QgcmVxdWlyZW1lbnRzLgorCitJbiB0ZXJtcyBvZiBmaW5kZXJzLCA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgZXhwb3NlcyB0aGUKK21lY2hhbmlzbSB1c2VkIHRvIHNlYXJjaCBmb3Igc291cmNlIGFuZCBieXRlY29kZSBmaWxlcyBvZiBhIG1vZHVsZS4gUHJldmlvdXNseQordGhpcyBjbGFzcyB3YXMgYW4gaW1wbGljaXQgbWVtYmVyIG9mIDphdHRyOmBzeXMucGF0aF9ob29rc2AuCisKK0ZvciBsb2FkZXJzLCB0aGUgbmV3IGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXJgIGhlbHBzCit3cml0ZSBhIGxvYWRlciB0aGF0IHVzZXMgdGhlIGZpbGUgc3lzdGVtIGFzIHRoZSBzdG9yYWdlIG1lY2hhbmlzbSBmb3IgYSBtb2R1bGUncworY29kZS4gVGhlIGxvYWRlciBmb3Igc291cmNlIGZpbGVzCisoOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXJgKSwgc291cmNlbGVzcyBieXRlY29kZSBmaWxlcworKDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcmApLCBhbmQgZXh0ZW5zaW9uIG1vZHVsZXMKKyg6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcmApIGFyZSBub3cgYXZhaWxhYmxlIGZvcgorZGlyZWN0IHVzZS4KKworOmV4YzpgSW1wb3J0RXJyb3JgIG5vdyBoYXMgYGBuYW1lYGAgYW5kIGBgcGF0aGBgIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHNldCB3aGVuCit0aGVyZSBpcyByZWxldmFudCBkYXRhIHRvIHByb3ZpZGUuIFRoZSBtZXNzYWdlIGZvciBmYWlsZWQgaW1wb3J0cyB3aWxsIGFsc28KK3Byb3ZpZGUgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgbW9kdWxlIG5vdyBpbnN0ZWFkIG9mIGp1c3QgdGhlIHRhaWwgZW5kIG9mIHRoZQorbW9kdWxlJ3MgbmFtZS4KKworVGhlIDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgIGZ1bmN0aW9uIHdpbGwgbm93IGNhbGwgdGhlIG1ldGhvZCB3aXRoCit0aGUgc2FtZSBuYW1lIG9uIGFsbCBmaW5kZXJzIGNhY2hlZCBpbiA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHRvIGhlbHAKK2NsZWFuIHVwIGFueSBzdG9yZWQgc3RhdGUgYXMgbmVjZXNzYXJ5LgorCitWaXNpYmxlIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLQorCitGb3IgcG90ZW50aWFsIHJlcXVpcmVkIGNoYW5nZXMgdG8gY29kZSwgc2VlIHRoZSBgUG9ydGluZyBQeXRob24gY29kZWBfCitzZWN0aW9uLgorCitCZXlvbmQgdGhlIGV4cGFuc2Ugb2Ygd2hhdCA6bW9kOmBpbXBvcnRsaWJgIG5vdyBleHBvc2VzLCB0aGVyZSBhcmUgb3RoZXIKK3Zpc2libGUgY2hhbmdlcyB0byBpbXBvcnQuIFRoZSBiaWdnZXN0IGlzIHRoYXQgOmF0dHI6YHN5cy5tZXRhX3BhdGhgIGFuZAorOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBub3cgc3RvcmUgYWxsIG9mIHRoZSBtZXRhIHBhdGggZmluZGVycyBhbmQgcGF0aCBlbnRyeQoraG9va3MgdXNlZCBieSBpbXBvcnQuICBQcmV2aW91c2x5IHRoZSBmaW5kZXJzIHdlcmUgaW1wbGljaXQgYW5kIGhpZGRlbiB3aXRoaW4KK3RoZSBDIGNvZGUgb2YgaW1wb3J0IGluc3RlYWQgb2YgYmVpbmcgZGlyZWN0bHkgZXhwb3NlZC4gVGhpcyBtZWFucyB0aGF0IG9uZSBjYW4KK25vdyBlYXNpbHkgcmVtb3ZlIG9yIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIHZhcmlvdXMgZmluZGVycyB0byBmaXQgb25lJ3MgbmVlZHMuCisKK0Fub3RoZXIgY2hhbmdlIGlzIHRoYXQgYWxsIG1vZHVsZXMgaGF2ZSBhIGBgX19sb2FkZXJfX2BgIGF0dHJpYnV0ZSwgc3RvcmluZyB0aGUKK2xvYWRlciB1c2VkIHRvIGNyZWF0ZSB0aGUgbW9kdWxlLiA6cGVwOmAzMDJgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gbWFrZSB0aGlzCithdHRyaWJ1dGUgbWFuZGF0b3J5IGZvciBsb2FkZXJzIHRvIGltcGxlbWVudCwgc28gaW4gdGhlIGZ1dHVyZSBvbmNlIDNyZC1wYXJ0eQorbG9hZGVycyBoYXZlIGJlZW4gdXBkYXRlZCBwZW9wbGUgd2lsbCBiZSBhYmxlIHRvIHJlbHkgb24gdGhlIGV4aXN0ZW5jZSBvZiB0aGUKK2F0dHJpYnV0ZS4gVW50aWwgc3VjaCB0aW1lLCB0aG91Z2gsIGltcG9ydCBpcyBzZXR0aW5nIHRoZSBtb2R1bGUgcG9zdC1sb2FkLgorCitMb2FkZXJzIGFyZSBhbHNvIG5vdyBleHBlY3RlZCB0byBzZXQgdGhlIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgZnJvbQorOnBlcDpgMzY2YC4gT25jZSBhZ2FpbiwgaW1wb3J0IGl0c2VsZiBpcyBhbHJlYWR5IHNldHRpbmcgdGhpcyBvbiBhbGwgbG9hZGVycworZnJvbSA6bW9kOmBpbXBvcnRsaWJgIGFuZCBpbXBvcnQgaXRzZWxmIGlzIHNldHRpbmcgdGhlIGF0dHJpYnV0ZSBwb3N0LWxvYWQuCisKK2BgTm9uZWBgIGlzIG5vdyBpbnNlcnRlZCBpbnRvIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgd2hlbiBubyBmaW5kZXIKK2NhbiBiZSBmb3VuZCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLiBTaW5jZSA6Y2xhc3M6YGltcC5OdWxsSW1wb3J0ZXJgIGlzIG5vdAorZGlyZWN0bHkgZXhwb3NlZCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIGl0IGNvdWxkIG5vIGxvbmdlciBiZSByZWxpZWQgdXBvbiB0bworYWx3YXlzIGJlIGF2YWlsYWJsZSB0byB1c2UgYXMgYSB2YWx1ZSByZXByZXNlbnRpbmcgbm8gZmluZGVyIGZvdW5kLgorCitBbGwgb3RoZXIgY2hhbmdlcyByZWxhdGUgdG8gc2VtYW50aWMgY2hhbmdlcyB3aGljaCBzaG91bGQgYmUgdGFrZW4gaW50bworY29uc2lkZXJhdGlvbiB3aGVuIHVwZGF0aW5nIGNvZGUgZm9yIFB5dGhvbiAzLjMsIGFuZCB0aHVzIHNob3VsZCBiZSByZWFkIGFib3V0CitpbiB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXyBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKKyhJbXBsZW1lbnRhdGlvbiBieSBCcmV0dCBDYW5ub24pCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQWRkZWQgc3VwcG9ydCBmb3IgVW5pY29kZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4KKyAgQm90aCA6ZnVuYzpgdW5pY29kZWRhdGEubG9va3VwKClgIGFuZCBgYCdcTnsuLi59J2BgIG5vdyByZXNvbHZlIG5hbWUgYWxpYXNlcywKKyAgYW5kIDpmdW5jOmB1bmljb2RlZGF0YS5sb29rdXAoKWAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworICAoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTI3NTNgKQorCisqIFVuaWNvZGUgZGF0YWJhc2UgdXBkYXRlZCB0byBVQ0QgdmVyc2lvbiA2LjEuMAorCisqIEVxdWFsaXR5IGNvbXBhcmlzb25zIG9uIDpmdW5jOmByYW5nZWAgb2JqZWN0cyBub3cgcmV0dXJuIGEgcmVzdWx0IHJlZmxlY3RpbmcKKyAgdGhlIGVxdWFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIHNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgdGhvc2UgcmFuZ2Ugb2JqZWN0cy4KKyAgKDppc3N1ZTpgMTMyMDFgKQorCisqIFRoZSBgYGNvdW50KClgYCwgYGBmaW5kKClgYCwgYGByZmluZCgpYGAsIGBgaW5kZXgoKWBgIGFuZCBgYHJpbmRleCgpYGAKKyAgbWV0aG9kcyBvZiA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMgbm93IGFjY2VwdCBhbgorICBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1IGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LgorCisgIChDb250cmlidXRlZCBieSBQZXRyaSBMZWh0aW5lbiBpbiA6aXNzdWU6YDEyMTcwYCkKKworKiBUaGUgYGByanVzdCgpYGAsIGBgbGp1c3QoKWBgLCBhbmQgYGBjZW50ZXIoKWBgIG1ldGhvZHMgb2YgOmNsYXNzOmBieXRlc2AKKyAgYW5kIDpjbGFzczpgYnl0ZWFycmF5YCBub3cgYWNjZXB0IGEgOmNsYXNzOmBieXRlYXJyYXlgIGZvciB0aGUgYGBmaWxsYGAKKyAgYXJndW1lbnQuICAoQ29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4gaW4gOmlzc3VlOmAxMjM4MGAuKQorCisqIE5ldyBtZXRob2RzIGhhdmUgYmVlbiBhZGRlZCB0byA6Y2xhc3M6YGxpc3RgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWA6CisgIGBgY29weSgpYGAgYW5kIGBgY2xlYXIoKWBgICg6aXNzdWU6YDEwNTE2YCkuICBDb25zZXF1ZW50bHksCisgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2VgIG5vdyBhbHNvIGRlZmluZXMgYQorICA6bWV0aDpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UuY2xlYXJgIG1ldGhvZCAoOmlzc3VlOmAxMTM4OGApLgorCisqIFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gYGByYiIuLi4iYGAgYXMgd2VsbCBhcyBgYGJyIi4uLiJgYC4KKworICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMzc0OGAuKQorCisqIDptZXRoOmBkaWN0LnNldGRlZmF1bHRgIG5vdyBkb2VzIG9ubHkgb25lIGxvb2t1cCBmb3IgdGhlIGdpdmVuIGtleSwgbWFraW5nCisgIGl0IGF0b21pYyB3aGVuIHVzZWQgd2l0aCBidWlsdC1pbiB0eXBlcy4KKworICAoQ29udHJpYnV0ZWQgYnkgRmlsaXAgR3J1c3pjennFhHNraSBpbiA6aXNzdWU6YDEzNTIxYC4pCisKKyogVGhlIGVycm9yIG1lc3NhZ2VzIHByb2R1Y2VkIHdoZW4gYSBmdW5jdGlvbiBjYWxsIGRvZXMgbm90IG1hdGNoIHRoZSBmdW5jdGlvbgorICBzaWduYXR1cmUgaGF2ZSBiZWVuIHNpZ25pZmljYW50bHkgaW1wcm92ZWQuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEJlbmphbWluIFBldGVyc29uLikKKworCitBIEZpbmVyLUdyYWluZWQgSW1wb3J0IExvY2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQcmV2aW91cyB2ZXJzaW9ucyBvZiBDUHl0aG9uIGhhdmUgYWx3YXlzIHJlbGllZCBvbiBhIGdsb2JhbCBpbXBvcnQgbG9jay4KK1RoaXMgbGVkIHRvIHVuZXhwZWN0ZWQgYW5ub3lhbmNlcywgc3VjaCBhcyBkZWFkbG9ja3Mgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUKK3dvdWxkIHRyaWdnZXIgY29kZSBleGVjdXRpb24gaW4gYSBkaWZmZXJlbnQgdGhyZWFkIGFzIGEgc2lkZS1lZmZlY3QuCitDbHVtc3kgd29ya2Fyb3VuZHMgd2VyZSBzb21ldGltZXMgZW1wbG95ZWQsIHN1Y2ggYXMgdGhlCis6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrYCBDIEFQSSBmdW5jdGlvbi4KKworSW4gUHl0aG9uIDMuMywgaW1wb3J0aW5nIGEgbW9kdWxlIHRha2VzIGEgcGVyLW1vZHVsZSBsb2NrLiAgVGhpcyBjb3JyZWN0bHkKK3NlcmlhbGl6ZXMgaW1wb3J0YXRpb24gb2YgYSBnaXZlbiBtb2R1bGUgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIChwcmV2ZW50aW5nCit0aGUgZXhwb3N1cmUgb2YgaW5jb21wbGV0ZWx5IGluaXRpYWxpemVkIG1vZHVsZXMpLCB3aGlsZSBlbGltaW5hdGluZyB0aGUKK2Fmb3JlbWVudGlvbmVkIGFubm95YW5jZXMuCisKKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDkyNjBgLikKKworCitCdWlsdGluIGZ1bmN0aW9ucyBhbmQgdHlwZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqIDpmdW5jOmBvcGVuYCBnZXRzIGEgbmV3ICpvcGVuZXIqIHBhcmFtZXRlcjogdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yCisgIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nICpvcGVuZXIqIHdpdGggKCpmaWxlKiwKKyAgKmZsYWdzKikuIEl0IGNhbiBiZSB1c2VkIHRvIHVzZSBjdXN0b20gZmxhZ3MgbGlrZSA6ZGF0YTpgb3MuT19DTE9FWEVDYCBmb3IKKyAgZXhhbXBsZS4gVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQ6IG9wZW4gZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiwgZmFpbGluZyBpZgorICB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy4KKyogOmZ1bmM6YHByaW50YDogYWRkZWQgdGhlICpmbHVzaCoga2V5d29yZCBhcmd1bWVudC4gSWYgdGhlICpmbHVzaCoga2V5d29yZAorICBhcmd1bWVudCBpcyB0cnVlLCB0aGUgc3RyZWFtIGlzIGZvcmNpYmx5IGZsdXNoZWQuCisqIDpmdW5jOmBoYXNoYDogaGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgc2VlCisgIDptZXRoOmBvYmplY3QuX19oYXNoX19gIGFuZCA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAuCisqIFRoZSA6Y2xhc3M6YHN0cmAgdHlwZSBnZXRzIGEgbmV3IDptZXRoOmB+c3RyLmNhc2Vmb2xkYCBtZXRob2Q6IHJldHVybiBhCisgIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLCBjYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlIHVzZWQgZm9yIGNhc2VsZXNzCisgIG1hdGNoaW5nLiBGb3IgZXhhbXBsZSwgYGAnw58nLmNhc2Vmb2xkKClgYCByZXR1cm5zIGBgJ3NzJ2BgLgorKiBUaGUgc2VxdWVuY2UgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBzdWJzdGFudGlhbGx5IHJld3JpdHRlbiB0byBiZXR0ZXIKKyAgZXhwbGFpbiB0aGUgYmluYXJ5L3RleHQgc2VxdWVuY2UgZGlzdGluY3Rpb24gYW5kIHRvIHByb3ZpZGUgc3BlY2lmaWMKKyAgZG9jdW1lbnRhdGlvbiBzZWN0aW9ucyBmb3IgdGhlIGluZGl2aWR1YWwgYnVpbHRpbiBzZXF1ZW5jZSB0eXBlcworICAoOmlzc3VlOmA0OTY2YCkKKworCitOZXcgTW9kdWxlcworPT09PT09PT09PT0KKworZmF1bHRoYW5kbGVyCistLS0tLS0tLS0tLS0KKworVGhpcyBuZXcgZGVidWcgbW9kdWxlIDptb2Q6YGZhdWx0aGFuZGxlcmAgY29udGFpbnMgZnVuY3Rpb25zIHRvIGR1bXAgUHl0aG9uIHRyYWNlYmFja3MgZXhwbGljaXRseSwKK29uIGEgZmF1bHQgKGEgY3Jhc2ggbGlrZSBhIHNlZ21lbnRhdGlvbiBmYXVsdCksIGFmdGVyIGEgdGltZW91dCwgb3Igb24gYSB1c2VyCitzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvIGluc3RhbGwgZmF1bHQgaGFuZGxlcnMgZm9yIHRoZQorOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLCA6Y29uc3Q6YFNJR0FCUlRgLCA6Y29uc3Q6YFNJR0JVU2AsIGFuZAorOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbyBlbmFibGUgdGhlbSBhdCBzdGFydHVwIGJ5IHNldHRpbmcgdGhlCis6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGJ5IHVzaW5nIDpvcHRpb246YC1YYAorYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitFeGFtcGxlIG9mIGEgc2VnbWVudGF0aW9uIGZhdWx0IG9uIExpbnV4OiA6OgorCisgICAgJCBweXRob24gLXEgLVggZmF1bHRoYW5kbGVyCisgICAgPj4+IGltcG9ydCBjdHlwZXMKKyAgICA+Pj4gY3R5cGVzLnN0cmluZ19hdCgwKQorICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogU2VnbWVudGF0aW9uIGZhdWx0CisKKyAgICBDdXJyZW50IHRocmVhZCAweDAwMDA3ZmI4OTlmMzk3MDA6CisgICAgICBGaWxlICIvaG9tZS9weXRob24vY3B5dGhvbi9MaWIvY3R5cGVzL19faW5pdF9fLnB5IiwgbGluZSA0ODYgaW4gc3RyaW5nX2F0CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxIGluIDxtb2R1bGU+CisgICAgU2VnbWVudGF0aW9uIGZhdWx0CisKKworaXBhZGRyZXNzCistLS0tLS0tLS0KKworVGhlIG5ldyA6bW9kOmBpcGFkZHJlc3NgIG1vZHVsZSBwcm92aWRlcyB0b29scyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZworb2JqZWN0cyByZXByZXNlbnRpbmcgSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMsIG5ldHdvcmtzIGFuZCBpbnRlcmZhY2VzIChpLmUuCithbiBJUCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIElQIHN1Ym5ldCkuCisKKyhDb250cmlidXRlZCBieSBHb29nbGUgYW5kIFBldGVyIE1vb2R5IGluIDpwZXA6YDMxNDRgKQorCitsem1hCistLS0tCisKK1RoZSBuZXdseS1hZGRlZCA6bW9kOmBsem1hYCBtb2R1bGUgcHJvdmlkZXMgZGF0YSBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbgordXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgdGhlIGBgLnh6YGAgYW5kIGBgLmx6bWFgYAorZmlsZSBmb3JtYXRzLgorCisoQ29udHJpYnV0ZWQgYnkgTmFkZWVtIFZhd2RhIGFuZCBQZXIgw5h5dmluZCBLYXJsc2VuIGluIDppc3N1ZTpgNjcxNWApCisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCithYmMKKy0tLQorCitJbXByb3ZlZCBzdXBwb3J0IGZvciBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgY29udGFpbmluZyBkZXNjcmlwdG9ycyBjb21wb3NlZCB3aXRoCithYnN0cmFjdCBtZXRob2RzLiBUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gZGVjbGFyaW5nIGFic3RyYWN0IGRlc2NyaXB0b3JzIGlzCitub3cgdG8gcHJvdmlkZSA6YXR0cjpgX19pc2Fic3RyYWN0bWV0aG9kX19gIGFzIGEgZHluYW1pY2FsbHkgdXBkYXRlZAorcHJvcGVydHkuIFRoZSBidWlsdC1pbiBkZXNjcmlwdG9ycyBoYXZlIGJlZW4gdXBkYXRlZCBhY2NvcmRpbmdseS4KKworICAqIDpjbGFzczpgYWJjLmFic3RyYWN0cHJvcGVydHlgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSA6Y2xhc3M6YHByb3BlcnR5YAorICAgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgc3RhdGljbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisKKyhDb250cmlidXRlZCBieSBEYXJyZW4gRGFsZSBpbiA6aXNzdWU6YDExNjEwYCkKKworOm1ldGg6YGFiYy5BQkNNZXRhLnJlZ2lzdGVyYCBub3cgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBzdWJjbGFzcywgd2hpY2ggbWVhbnMKK2l0IGNhbiBub3cgYmUgdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciAoOmlzc3VlOmAxMDg2OGApLgorCisKK2FycmF5CistLS0tLQorCitUaGUgOm1vZDpgYXJyYXlgIG1vZHVsZSBzdXBwb3J0cyB0aGUgOmM6dHlwZTpgbG9uZyBsb25nYCB0eXBlIHVzaW5nIGBgcWBgIGFuZAorYGBRYGAgdHlwZSBjb2Rlcy4KKworKENvbnRyaWJ1dGVkIGJ5IE9yZW4gVGlyb3NoIGFuZCBIaXJva2F6dSBZYW1hbW90byBpbiA6aXNzdWU6YDExNzI3MTFgKQorCisKK2Jhc2U2NAorLS0tLS0tCisKK0FTQ0lJLW9ubHkgVW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZiB0aGUKKzptb2Q6YGJhc2U2NGAgbW9kZXJuIGludGVyZmFjZS4gRm9yIGV4YW1wbGUsIGBgYmFzZTY0LmI2NGRlY29kZSgnWVdKaicpYGAKK3JldHVybnMgYGBiJ2FiYydgYC4gIChDb250cmlidXRlZCBieSBDYXRhbGluIElhY29iIGluIDppc3N1ZTpgMTM2NDFgLikKKworCitiaW5hc2NpaQorLS0tLS0tLS0KKworSW4gYWRkaXRpb24gdG8gdGhlIGJpbmFyeSBvYmplY3RzIHRoZXkgbm9ybWFsbHkgYWNjZXB0LCB0aGUgYGBhMmJfYGAgZnVuY3Rpb25zCitub3cgYWxsIGFsc28gYWNjZXB0IEFTQ0lJLW9ubHkgc3RyaW5ncyBhcyBpbnB1dC4gIChDb250cmlidXRlZCBieSBBbnRvaW5lCitQaXRyb3UgaW4gOmlzc3VlOmAxMzYzN2AuKQorCisKK2J6MgorLS0tCisKK1RoZSA6bW9kOmBiejJgIG1vZHVsZSBoYXMgYmVlbiByZXdyaXR0ZW4gZnJvbSBzY3JhdGNoLiBJbiB0aGUgcHJvY2Vzcywgc2V2ZXJhbAorbmV3IGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZDoKKworKiBOZXcgOmZ1bmM6YGJ6Mi5vcGVuYCBmdW5jdGlvbjogb3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IKKyAgdGV4dCBtb2RlLgorCisqIDpjbGFzczpgYnoyLkJaMkZpbGVgIGNhbiBub3cgcmVhZCBmcm9tIGFuZCB3cml0ZSB0byBhcmJpdHJhcnkgZmlsZS1saWtlCisgIG9iamVjdHMsIGJ5IG1lYW5zIG9mIGl0cyBjb25zdHJ1Y3RvcidzICpmaWxlb2JqKiBhcmd1bWVudC4KKworICAoQ29udHJpYnV0ZWQgYnkgTmFkZWVtIFZhd2RhIGluIDppc3N1ZTpgNTg2M2ApCisKKyogOmNsYXNzOmBiejIuQloyRmlsZWAgYW5kIDpmdW5jOmBiejIuZGVjb21wcmVzc2AgY2FuIG5vdyBkZWNvbXByZXNzCisgIG11bHRpLXN0cmVhbSBpbnB1dHMgKHN1Y2ggYXMgdGhvc2UgcHJvZHVjZWQgYnkgdGhlIDpwcm9ncmFtOmBwYnppcDJgIHRvb2wpLgorICA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBjYW4gbm93IGFsc28gYmUgdXNlZCB0byBjcmVhdGUgdGhpcyB0eXBlIG9mIGZpbGUsIHVzaW5nCisgIHRoZSBgYCdhJ2BgIChhcHBlbmQpIG1vZGUuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IE5pciBBaWRlcyBpbiA6aXNzdWU6YDE2MjVgKQorCisqIDpjbGFzczpgYnoyLkJaMkZpbGVgIG5vdyBpbXBsZW1lbnRzIGFsbCBvZiB0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgQVBJLAorICBleGNlcHQgZm9yIHRoZSA6bWV0aDpgZGV0YWNoYCBhbmQgOm1ldGg6YHRydW5jYXRlYCBtZXRob2RzLgorCisKK2NvZGVjcworLS0tLS0tCisKK1RoZSA6bW9kOmB+ZW5jb2RpbmdzLm1iY3NgIGNvZGVjIGhhcyBiZWVuIHJld3JpdHRlbiB0byBoYW5kbGUgY29ycmVjdGx5CitgYHJlcGxhY2VgYCBhbmQgYGBpZ25vcmVgYCBlcnJvciBoYW5kbGVycyBvbiBhbGwgV2luZG93cyB2ZXJzaW9ucy4gIFRoZQorOm1vZDpgfmVuY29kaW5ncy5tYmNzYCBjb2RlYyBub3cgc3VwcG9ydHMgYWxsIGVycm9yIGhhbmRsZXJzLCBpbnN0ZWFkIG9mIG9ubHkKK2BgcmVwbGFjZWBgIHRvIGVuY29kZSBhbmQgYGBpZ25vcmVgYCB0byBkZWNvZGUuCisKK0EgbmV3IFdpbmRvd3Mtb25seSBjb2RlYyBoYXMgYmVlbiBhZGRlZDogYGBjcDY1MDAxYGAgKDppc3N1ZTpgMTMyMTZgKS4gSXQgaXMgdGhlCitXaW5kb3dzIGNvZGUgcGFnZSA2NTAwMSAoV2luZG93cyBVVEYtOCwgYGBDUF9VVEY4YGApLiAgRm9yIGV4YW1wbGUsIGl0IGlzIHVzZWQKK2J5IGBgc3lzLnN0ZG91dGBgIGlmIHRoZSBjb25zb2xlIG91dHB1dCBjb2RlIHBhZ2UgaXMgc2V0IHRvIGNwNjUwMDEgKGUuZy4sIHVzaW5nCitgYGNoY3AgNjUwMDFgYCBjb21tYW5kKS4KKworTXVsdGlieXRlIENKSyBkZWNvZGVycyBub3cgcmVzeW5jaHJvbml6ZSBmYXN0ZXIuICBUaGV5IG9ubHkgaWdub3JlIHRoZSBmaXJzdAorYnl0ZSBvZiBhbiBpbnZhbGlkIGJ5dGUgc2VxdWVuY2UuIEZvciBleGFtcGxlLCBgYGInXHhmZlxuJy5kZWNvZGUoJ2diMjMxMicsCisncmVwbGFjZScpYGAgbm93IHJldHVybnMgYSBgYFxuYGAgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4KKworKDppc3N1ZTpgMTIwMTZgKQorCitJbmNyZW1lbnRhbCBDSksgY29kZWMgZW5jb2RlcnMgYXJlIG5vIGxvbmdlciByZXNldCBhdCBlYWNoIGNhbGwgdG8gdGhlaXIKK2VuY29kZSgpIG1ldGhvZHMuIEZvciBleGFtcGxlOjoKKworICAgICQgLi9weXRob24gLXEKKyAgICA+Pj4gaW1wb3J0IGNvZGVjcworICAgID4+PiBlbmNvZGVyID0gY29kZWNzLmdldGluY3JlbWVudGFsZW5jb2RlcignaHonKSgnc3RyaWN0JykKKyAgICA+Pj4gYicnLmpvaW4oZW5jb2Rlci5lbmNvZGUoeCkgZm9yIHggaW4gJ1x1NTJmZlx1NjViZFx1NjViY1x1NGViYVx1MzAwMiBCeWUuJykKKyAgICBiJ357TnBKKWw2SEshI359IEJ5ZS4nCisKK1RoaXMgZXhhbXBsZSBnaXZlcyBgYGInfntOcH59fntKKX59fntsNn59fntIS359fnshI359IEJ5ZS4nYGAgd2l0aCBvbGRlciBQeXRob24KK3ZlcnNpb25zLgorCisoOmlzc3VlOmAxMjEwMGApCisKK1RoZSBgYHVuaWNvZGVfaW50ZXJuYWxgYCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkLgorCisKK2NvbGxlY3Rpb25zCistLS0tLS0tLS0tLQorCitBZGRpdGlvbiBvZiBhIG5ldyA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5DaGFpbk1hcGAgY2xhc3MgdG8gYWxsb3cgdHJlYXRpbmcgYQorbnVtYmVyIG9mIG1hcHBpbmdzIGFzIGEgc2luZ2xlIHVuaXQuICAoV3JpdHRlbiBieSBSYXltb25kIEhldHRpbmdlciBmb3IKKzppc3N1ZTpgMTEwODlgLCBtYWRlIHB1YmxpYyBpbiA6aXNzdWU6YDExMjk3YCkKKworVGhlIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBoYXZlIGJlZW4gbW92ZWQgaW4gYSBuZXcgOm1vZDpgY29sbGVjdGlvbnMuYWJjYAorbW9kdWxlLCB0byBiZXR0ZXIgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBhYnN0cmFjdCBhbmQgdGhlIGNvbmNyZXRlCitjb2xsZWN0aW9ucyBjbGFzc2VzLiAgQWxpYXNlcyBmb3IgQUJDcyBhcmUgc3RpbGwgcHJlc2VudCBpbiB0aGUKKzptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgdG8gcHJlc2VydmUgZXhpc3RpbmcgaW1wb3J0cy4gICg6aXNzdWU6YDExMDg1YCkKKworLi4gWFhYIGFkZGl0aW9uIG9mIF9fc2xvdHNfXyB0byBBQkNzIG5vdCByZWNvcmRlZCBoZXJlOiBpbnRlcm5hbCBkZXRhaWwKKworVGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLkNvdW50ZXJgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgdW5hcnkgYGArYGAgYW5kIGBgLWBgCitvcGVyYXRvcnMsIGFzIHdlbGwgYXMgdGhlIGluLXBsYWNlIG9wZXJhdG9ycyBgYCs9YGAsIGBgLT1gYCwgYGB8PWBgLCBhbmQKK2BgJj1gYC4gIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDEzMTIxYC4pCisKKworY29udGV4dGxpYgorLS0tLS0tLS0tLQorCis6Y2xhc3M6YH5jb250ZXh0bGliLkV4aXRTdGFja2Agbm93IHByb3ZpZGVzIGEgc29saWQgZm91bmRhdGlvbiBmb3IKK3Byb2dyYW1tYXRpYyBtYW5pcHVsYXRpb24gb2YgY29udGV4dCBtYW5hZ2VycyBhbmQgc2ltaWxhciBjbGVhbnVwCitmdW5jdGlvbmFsaXR5LiBVbmxpa2UgdGhlIHByZXZpb3VzIGBgY29udGV4dGxpYi5uZXN0ZWRgYCBBUEkgKHdoaWNoIHdhcworZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCksIHRoZSBuZXcgQVBJIGlzIGRlc2lnbmVkIHRvIHdvcmsgY29ycmVjdGx5CityZWdhcmRsZXNzIG9mIHdoZXRoZXIgY29udGV4dCBtYW5hZ2VycyBhY3F1aXJlIHRoZWlyIHJlc291cmNlcyBpbgordGhlaXIgYGBfX2luaXRfX2BgIG1ldGhvZCAoZm9yIGV4YW1wbGUsIGZpbGUgb2JqZWN0cykgb3IgaW4gdGhlaXIKK2BgX19lbnRlcl9fYGAgbWV0aG9kIChmb3IgZXhhbXBsZSwgc3luY2hyb25pc2F0aW9uIG9iamVjdHMgZnJvbSB0aGUKKzptb2Q6YHRocmVhZGluZ2AgbW9kdWxlKS4KKworKDppc3N1ZTpgMTM1ODVgKQorCisKK2NyeXB0CistLS0tLQorCitBZGRpdGlvbiBvZiBzYWx0IGFuZCBtb2R1bGFyIGNyeXB0IGZvcm1hdCAoaGFzaGluZyBtZXRob2QpIGFuZCB0aGUgOmZ1bmM6YH5jcnlwdC5ta3NhbHRgCitmdW5jdGlvbiB0byB0aGUgOm1vZDpgY3J5cHRgIG1vZHVsZS4KKworKDppc3N1ZTpgMTA5MjRgKQorCitjdXJzZXMKKy0tLS0tLQorCisgKiBJZiB0aGUgOm1vZDpgY3Vyc2VzYCBtb2R1bGUgaXMgbGlua2VkIHRvIHRoZSBuY3Vyc2VzdyBsaWJyYXJ5LCB1c2UgVW5pY29kZQorICAgZnVuY3Rpb25zIHdoZW4gVW5pY29kZSBzdHJpbmdzIG9yIGNoYXJhY3RlcnMgYXJlIHBhc3NlZCAoZS5nLgorICAgOmM6ZnVuYzpgd2FkZHdzdHJgKSwgYW5kIGJ5dGVzIGZ1bmN0aW9ucyBvdGhlcndpc2UgKGUuZy4gOmM6ZnVuYzpgd2FkZHN0cmApLgorICogVXNlIHRoZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBgYHV0Zi04YGAgdG8gZW5jb2RlIFVuaWNvZGUgc3RyaW5ncy4KKyAqIDpjbGFzczpgY3Vyc2VzLndpbmRvd2AgaGFzIGEgbmV3IDphdHRyOmBjdXJzZXMud2luZG93LmVuY29kaW5nYCBhdHRyaWJ1dGUuCisgKiBUaGUgOmNsYXNzOmBjdXJzZXMud2luZG93YCBjbGFzcyBoYXMgYSBuZXcgOm1ldGg6YH5jdXJzZXMud2luZG93LmdldF93Y2hgCisgICBtZXRob2QgdG8gZ2V0IGEgd2lkZSBjaGFyYWN0ZXIKKyAqIFRoZSA6bW9kOmBjdXJzZXNgIG1vZHVsZSBoYXMgYSBuZXcgOm1ldGg6YH5jdXJzZXMudW5nZXRfd2NoYCBmdW5jdGlvbiB0bworICAgcHVzaCBhIHdpZGUgY2hhcmFjdGVyIHNvIHRoZSBuZXh0IDptZXRoOmB+Y3Vyc2VzLndpbmRvdy5nZXRfd2NoYCB3aWxsIHJldHVybgorICAgaXQKKworKENvbnRyaWJ1dGVkIGJ5IEnDsWlnbyBTZXJuYSBpbiA6aXNzdWU6YDY3NTVgKQorCitkYXRldGltZQorLS0tLS0tLS0KKworICogRXF1YWxpdHkgY29tcGFyaXNvbnMgYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgCisgICBpbnN0YW5jZXMgbm93IHJldHVybiA6Y29uc3Q6YEZhbHNlYCBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgVHlwZUVycm9yYAorICAgKDppc3N1ZTpgMTUwMDZgKS4KKyAqIE5ldyA6bWV0aDpgZGF0ZXRpbWUuZGF0ZXRpbWUudGltZXN0YW1wYCBtZXRob2Q6IFJldHVybiBQT1NJWCB0aW1lc3RhbXAKKyAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZS4KKyAqIFRoZSA6bWV0aDpgZGF0ZXRpbWUuZGF0ZXRpbWUuc3RyZnRpbWVgIG1ldGhvZCBzdXBwb3J0cyBmb3JtYXR0aW5nIHllYXJzCisgICBvbGRlciB0aGFuIDEwMDAuCisgKiBUaGUgOm1ldGg6YGRhdGV0aW1lLmRhdGV0aW1lLmFzdGltZXpvbmVgIG1ldGhvZCBjYW4gbm93IGJlCisgICBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgdG8gY29udmVydCBkYXRldGltZSBpbnN0YW5jZSB0byB0aGUgc3lzdGVtCisgICB0aW1lem9uZS4KKworCisuLiBfbmV3LWRlY2ltYWw6CisKK2RlY2ltYWwKKy0tLS0tLS0KKworOmlzc3VlOmA3NjUyYCAtIGludGVncmF0ZSBmYXN0IG5hdGl2ZSBkZWNpbWFsIGFyaXRobWV0aWMuCisgICBDLW1vZHVsZSBhbmQgbGlibXBkZWMgd3JpdHRlbiBieSBTdGVmYW4gS3JhaC4KKworVGhlIG5ldyBDIHZlcnNpb24gb2YgdGhlIGRlY2ltYWwgbW9kdWxlIGludGVncmF0ZXMgdGhlIGhpZ2ggc3BlZWQgbGlibXBkZWMKK2xpYnJhcnkgZm9yIGFyYml0cmFyeSBwcmVjaXNpb24gY29ycmVjdGx5LXJvdW5kZWQgZGVjaW1hbCBmbG9hdGluZyBwb2ludAorYXJpdGhtZXRpYy4gbGlibXBkZWMgY29uZm9ybXMgdG8gSUJNJ3MgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbi4KKworUGVyZm9ybWFuY2UgZ2FpbnMgcmFuZ2UgZnJvbSAxMHggZm9yIGRhdGFiYXNlIGFwcGxpY2F0aW9ucyB0byAxMDB4IGZvcgorbnVtZXJpY2FsbHkgaW50ZW5zaXZlIGFwcGxpY2F0aW9ucy4gVGhlc2UgbnVtYmVycyBhcmUgZXhwZWN0ZWQgZ2FpbnMKK2ZvciBzdGFuZGFyZCBwcmVjaXNpb25zIHVzZWQgaW4gZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBTaW5jZQordGhlIHByZWNpc2lvbiBpcyB1c2VyIGNvbmZpZ3VyYWJsZSwgdGhlIGV4YWN0IGZpZ3VyZXMgbWF5IHZhcnkuIEZvciBleGFtcGxlLAoraW4gaW50ZWdlciBiaWdudW0gYXJpdGhtZXRpYyB0aGUgZGlmZmVyZW5jZXMgY2FuIGJlIHNpZ25pZmljYW50bHkgaGlnaGVyLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGlzIG1lYW50IGFzIGFuIGlsbHVzdHJhdGlvbi4gQmVuY2htYXJrcyBhcmUgYXZhaWxhYmxlCithdCBodHRwOi8vd3d3LmJ5dGVyZWVmLm9yZy9tcGRlY2ltYWwvcXVpY2tzdGFydC5odG1sLgorCisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgICAgICB8ICBkZWNpbWFsLnB5IHwgICBfZGVjaW1hbCAgIHwgICBzcGVlZHVwICAgfAorICAgKz09PT09PT09PSs9PT09PT09PT09PT09Kz09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rCisgICB8ICAgcGkgICAgfCAgICA0Mi4wMnMgICB8ICAgIDAuMzQ1cyAgICB8ICAgIDEyMHggICAgIHwKKyAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKworICAgfCB0ZWxjbyAgIHwgICAxNzIuMTlzICAgfCAgICA1LjY4cyAgICAgfCAgICAgMzB4ICAgICB8CisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgIHwgcHN5Y29wZyB8ICAgICAzLjU3cyAgIHwgICAgMC4yOXMgICAgIHwgICAgIDEyeCAgICAgfAorICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisKK0ZlYXR1cmVzCit+fn5+fn5+fgorCisqIFRoZSA6ZXhjOmB+ZGVjaW1hbC5GbG9hdE9wZXJhdGlvbmAgc2lnbmFsIG9wdGlvbmFsbHkgZW5hYmxlcyBzdHJpY3RlcgorICBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisqIElmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHMsIHRoZSBDIHZlcnNpb24gYXV0b21hdGljYWxseQorICBkaXNhYmxlcyB0aGUgZXhwZW5zaXZlIHRocmVhZCBsb2NhbCBjb250ZXh0IG1hY2hpbmVyeS4gSW4gdGhpcyBjYXNlLAorICB0aGUgdmFyaWFibGUgOmRhdGE6YH5kZWNpbWFsLkhBVkVfVEhSRUFEU2AgaXMgc2V0IHRvIEZhbHNlLgorCitBUEkgY2hhbmdlcworfn5+fn5+fn5+fn4KKworKiBUaGUgQyBtb2R1bGUgaGFzIHRoZSBmb2xsb3dpbmcgY29udGV4dCBsaW1pdHMsIGRlcGVuZGluZyBvbiB0aGUgbWFjaGluZQorICBhcmNoaXRlY3R1cmU6CisKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgMzItYml0ICAgICAgICB8ICAgICAgICAgICAgNjQtYml0ICAgICAgICAgICAgfAorICAgKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBNQVhfUFJFQ2AgfCA6Y29uc3Q6YDQyNTAwMDAwMGAgIHwgOmNvbnN0OmA5OTk5OTk5OTk5OTk5OTk5OTlgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YE1BWF9FTUFYYCB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgTUlOX0VNSU5gIHwgOmNvbnN0OmAtNDI1MDAwMDAwYCB8IDpjb25zdDpgLTk5OTk5OTk5OTk5OTk5OTk5OWAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworKiBJbiB0aGUgY29udGV4dCB0ZW1wbGF0ZXMgKDpjbGFzczpgfmRlY2ltYWwuRGVmYXVsdENvbnRleHRgLAorICA6Y2xhc3M6YH5kZWNpbWFsLkJhc2ljQ29udGV4dGAgYW5kIDpjbGFzczpgfmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0YCkKKyAgdGhlIG1hZ25pdHVkZSBvZiA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5FbWF4YCBhbmQKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuRW1pbmAgaGFzIGNoYW5nZWQgdG8gOmNvbnN0OmA5OTk5OTlgLgorCisqIFRoZSA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIGNvbnN0cnVjdG9yIGluIGRlY2ltYWwucHkgZG9lcyBub3Qgb2JzZXJ2ZQorICB0aGUgY29udGV4dCBsaW1pdHMgYW5kIGNvbnZlcnRzIHZhbHVlcyB3aXRoIGFyYml0cmFyeSBleHBvbmVudHMgb3IgcHJlY2lzaW9uCisgIGV4YWN0bHkuIFNpbmNlIHRoZSBDIHZlcnNpb24gaGFzIGludGVybmFsIGxpbWl0cywgdGhlIGZvbGxvd2luZyBzY2hlbWUgaXMKKyAgdXNlZDogSWYgcG9zc2libGUsIHZhbHVlcyBhcmUgY29udmVydGVkIGV4YWN0bHksIG90aGVyd2lzZQorICA6ZXhjOmB+ZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uYCBpcyByYWlzZWQgYW5kIHRoZSByZXN1bHQgaXMgTmFOLiBJbiB0aGUKKyAgbGF0dGVyIGNhc2UgaXQgaXMgYWx3YXlzIHBvc3NpYmxlIHRvIHVzZSA6bWV0aDpgfmRlY2ltYWwuQ29udGV4dC5jcmVhdGVfZGVjaW1hbGAKKyAgaW4gb3JkZXIgdG8gb2J0YWluIGEgcm91bmRlZCBvciBpbmV4YWN0IHZhbHVlLgorCisKKyogVGhlIHBvd2VyIGZ1bmN0aW9uIGluIGRlY2ltYWwucHkgaXMgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkLiBJbiB0aGUKKyAgQyB2ZXJzaW9uLCBpdCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHRoZSBjb3JyZWN0bHktcm91bmRlZAorICA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5leHBgIGFuZCA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5sbmAgZnVuY3Rpb25zLAorICBidXQgdGhlIGZpbmFsIHJlc3VsdCBpcyBvbmx5ICJhbG1vc3QgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkIi4KKworCisqIEluIHRoZSBDIHZlcnNpb24sIHRoZSBjb250ZXh0IGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgc2lnbmFscyBpcyBhCisgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AuICBGb3Igc3BlZWQgcmVhc29ucywKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuZmxhZ3NgIGFuZCA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC50cmFwc2AgYWx3YXlzCisgIHJlZmVyIHRvIHRoZSBzYW1lIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AgdGhhdCB0aGUgY29udGV4dAorICB3YXMgaW5pdGlhbGl6ZWQgd2l0aC4gSWYgYSBuZXcgc2lnbmFsIGRpY3Rpb25hcnkgaXMgYXNzaWduZWQsCisgIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LmZsYWdzYCBhbmQgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQudHJhcHNgCisgIGFyZSB1cGRhdGVkIHdpdGggdGhlIG5ldyB2YWx1ZXMsIGJ1dCB0aGV5IGRvIG5vdCByZWZlcmVuY2UgdGhlIFJIUworICBkaWN0aW9uYXJ5LgorCisKKyogUGlja2xpbmcgYSA6Y2xhc3M6YH5kZWNpbWFsLkNvbnRleHRgIHByb2R1Y2VzIGEgZGlmZmVyZW50IG91dHB1dCBpbiBvcmRlcgorICB0byBoYXZlIGEgY29tbW9uIGludGVyY2hhbmdlIGZvcm1hdCBmb3IgdGhlIFB5dGhvbiBhbmQgQyB2ZXJzaW9ucy4KKworCisqIFRoZSBvcmRlciBvZiBhcmd1bWVudHMgaW4gdGhlIDpjbGFzczpgfmRlY2ltYWwuQ29udGV4dGAgY29uc3RydWN0b3IgaGFzIGJlZW4KKyAgY2hhbmdlZCB0byBtYXRjaCB0aGUgb3JkZXIgZGlzcGxheWVkIGJ5IDpmdW5jOmByZXByYC4KKworCisqIFRoZSBgYHdhdGNoZXhwYGAgcGFyYW1ldGVyIGluIHRoZSA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5xdWFudGl6ZWAgbWV0aG9kCisgIGlzIGRlcHJlY2F0ZWQuCisKKworLi4gX25ldy1lbWFpbDoKKworZW1haWwKKy0tLS0tCisKK1BvbGljeSBGcmFtZXdvcmsKK35+fn5+fn5+fn5+fn5+fn4KKworVGhlIGVtYWlsIHBhY2thZ2Ugbm93IGhhcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGZyYW1ld29yay4gIEEKKzpjbGFzczpgfmVtYWlsLnBvbGljeS5Qb2xpY3lgIGlzIGFuIG9iamVjdCB3aXRoIHNldmVyYWwgbWV0aG9kcyBhbmQgcHJvcGVydGllcwordGhhdCBjb250cm9sIGhvdyB0aGUgZW1haWwgcGFja2FnZSBiZWhhdmVzLiAgVGhlIHByaW1hcnkgcG9saWN5IGZvciBQeXRob24gMy4zCitpcyB0aGUgOmNsYXNzOmB+ZW1haWwucG9saWN5LkNvbXBhdDMyYCBwb2xpY3ksIHdoaWNoIHByb3ZpZGVzIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IHdpdGggdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIEEgYGBwb2xpY3lgYCBjYW4gYmUKK3NwZWNpZmllZCB3aGVuIGFuIGVtYWlsIG1lc3NhZ2UgaXMgcGFyc2VkIGJ5IGEgOm1vZDpgfmVtYWlsLnBhcnNlcmAsIG9yIHdoZW4gYQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgaXMgY3JlYXRlZCwgb3Igd2hlbiBhbiBlbWFpbCBpcworc2VyaWFsaXplZCB1c2luZyBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLiAgVW5sZXNzIG92ZXJyaWRkZW4sIGEgcG9saWN5IHBhc3NlZAordG8gYSBgYHBhcnNlcmBgIGlzIGluaGVyaXRlZCBieSBhbGwgdGhlIGBgTWVzc2FnZWBgIG9iamVjdCBhbmQgc3ViLW9iamVjdHMKK2NyZWF0ZWQgYnkgdGhlIGBgcGFyc2VyYGAuICBCeSBkZWZhdWx0IGEgYGBnZW5lcmF0b3JgYCB3aWxsIHVzZSB0aGUgcG9saWN5IG9mCit0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IGl0IGlzIHNlcmlhbGl6aW5nLiAgVGhlIGRlZmF1bHQgcG9saWN5IGlzCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAuCisKK1RoZSBtaW5pbXVtIHNldCBvZiBjb250cm9scyBpbXBsZW1lbnRlZCBieSBhbGwgYGBwb2xpY3lgYCBvYmplY3RzIGFyZToKKworICAgID09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIG1heF9saW5lX2xlbmd0aCAgICAgVGhlIG1heGltdW0gbGVuZ3RoLCBleGNsdWRpbmcgdGhlIGxpbmVzZXAgY2hhcmFjdGVyKHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBsaW5lcyBtYXkgaGF2ZSB3aGVuIGEgYGBNZXNzYWdlYGAgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQuICBEZWZhdWx0cyB0byA3OC4KKworICAgIGxpbmVzZXAgICAgICAgICAgICAgVGhlIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIGluZGl2aWR1YWwgbGluZXMgd2hlbiBhCisgICAgICAgICAgICAgICAgICAgICAgICBgYE1lc3NhZ2VgYCBpcyBzZXJpYWxpemVkLiAgRGVmYXVsdHMgdG8gYGBcbmBgLgorCisgICAgY3RlX3R5cGUgICAgICAgICAgICBgYDdiaXRgYCBvciBgYDhiaXRgYC4gIGBgOGJpdGBgIGFwcGxpZXMgb25seSB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICBgYEJ5dGVzYGAgYGBnZW5lcmF0b3JgYCwgYW5kIG1lYW5zIHRoYXQgbm9uLUFTQ0lJIG1heQorICAgICAgICAgICAgICAgICAgICAgICAgYmUgdXNlZCB3aGVyZSBhbGxvd2VkIGJ5IHRoZSBwcm90b2NvbCAob3Igd2hlcmUgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbiB0aGUgb3JpZ2luYWwgaW5wdXQpLgorCisgICAgcmFpc2Vfb25fZGVmZWN0ICAgICBDYXVzZXMgYSBgYHBhcnNlcmBgIHRvIHJhaXNlIGVycm9yIHdoZW4gZGVmZWN0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY291bnRlcmVkIGluc3RlYWQgb2YgYWRkaW5nIHRoZW0gdG8gdGhlIGBgTWVzc2FnZWBgCisgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QncyBgYGRlZmVjdHNgYCBsaXN0LgorICAgID09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIG5ldyBwb2xpY3kgaW5zdGFuY2UsIHdpdGggbmV3IHNldHRpbmdzLCBpcyBjcmVhdGVkIHVzaW5nIHRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmNsb25lYCBtZXRob2Qgb2YgcG9saWN5IG9iamVjdHMuICBgYGNsb25lYGAgdGFrZXMKK2FueSBvZiB0aGUgYWJvdmUgY29udHJvbHMgYXMga2V5d29yZCBhcmd1bWVudHMuICBBbnkgY29udHJvbCBub3Qgc3BlY2lmaWVkIGluCit0aGUgY2FsbCByZXRhaW5zIGl0cyBkZWZhdWx0IHZhbHVlLiAgVGh1cyB5b3UgY2FuIGNyZWF0ZSBhIHBvbGljeSB0aGF0IHVzZXMKK2BgXHJcbmBgIGxpbmVzZXAgY2hhcmFjdGVycyBsaWtlIHRoaXM6OgorCisgICAgbXlwb2xpY3kgPSBjb21wYXQzMi5jbG9uZShsaW5lc2VwPSdcclxuJykKKworUG9saWNpZXMgY2FuIGJlIHVzZWQgdG8gbWFrZSB0aGUgZ2VuZXJhdGlvbiBvZiBtZXNzYWdlcyBpbiB0aGUgZm9ybWF0IG5lZWRlZCBieQoreW91ciBhcHBsaWNhdGlvbiBzaW1wbGVyLiAgSW5zdGVhZCBvZiBoYXZpbmcgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeQorYGBsaW5lc2VwPSdcclxuJ2BgIGluIGFsbCB0aGUgcGxhY2VzIHlvdSBjYWxsIGEgYGBnZW5lcmF0b3JgYCwgeW91IGNhbiBzcGVjaWZ5CitpdCBvbmNlLCB3aGVuIHlvdSBzZXQgdGhlIHBvbGljeSB1c2VkIGJ5IHRoZSBgYHBhcnNlcmBgIG9yIHRoZSBgYE1lc3NhZ2VgYCwKK3doaWNoZXZlciB5b3VyIHByb2dyYW0gdXNlcyB0byBjcmVhdGUgYGBNZXNzYWdlYGAgb2JqZWN0cy4gIE9uIHRoZSBvdGhlciBoYW5kLAoraWYgeW91IG5lZWQgdG8gZ2VuZXJhdGUgbWVzc2FnZXMgaW4gbXVsdGlwbGUgZm9ybXMsIHlvdSBjYW4gc3RpbGwgc3BlY2lmeSB0aGUKK3BhcmFtZXRlcnMgaW4gdGhlIGFwcHJvcHJpYXRlIGBgZ2VuZXJhdG9yYGAgY2FsbC4gIE9yIHlvdSBjYW4gaGF2ZSBjdXN0b20KK3BvbGljeSBpbnN0YW5jZXMgZm9yIHlvdXIgZGlmZmVyZW50IGNhc2VzLCBhbmQgcGFzcyB0aG9zZSBpbiB3aGVuIHlvdSBjcmVhdGUKK3RoZSBgYGdlbmVyYXRvcmBgLgorCisKK1Byb3Zpc2lvbmFsIFBvbGljeSB3aXRoIE5ldyBIZWFkZXIgQVBJCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitXaGlsZSB0aGUgcG9saWN5IGZyYW1ld29yayBpcyB3b3J0aHdoaWxlIGFsbCBieSBpdHNlbGYsIHRoZSBtYWluIG1vdGl2YXRpb24gZm9yCitpbnRyb2R1Y2luZyBpdCBpcyB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgbmV3IHBvbGljaWVzIHRoYXQgaW1wbGVtZW50IG5ldworZmVhdHVyZXMgZm9yIHRoZSBlbWFpbCBwYWNrYWdlIGluIGEgd2F5IHRoYXQgbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKK2ZvciB0aG9zZSB3aG8gZG8gbm90IHVzZSB0aGUgbmV3IHBvbGljaWVzLiAgQmVjYXVzZSB0aGUgbmV3IHBvbGljaWVzIGludHJvZHVjZSBhCituZXcgQVBJLCB3ZSBhcmUgcmVsZWFzaW5nIHRoZW0gaW4gUHl0aG9uIDMuMyBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBwb2xpY3kKKzxwcm92aXNpb25hbCBwYWNrYWdlPmAuICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcKK3JlbW92YWwgb2YgdGhlIGNvZGUpIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKK1RoZSBuZXcgcG9saWNpZXMgYXJlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3lgLAorYW5kIGFkZCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgY29udHJvbHM6CisKKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICByZWZvbGRfc291cmNlICAgICAgIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGhlYWRlcnMgcGFyc2VkIGJ5IGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGFyZSByZWZvbGRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLiAgSXQgY2FuIGJlIGBgbm9uZWBgLCBgYGxvbmdgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGBgYWxsYGAuICBUaGUgZGVmYXVsdCBpcyBgYGxvbmdgYCwgd2hpY2ggbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGhlYWRlcnMgd2l0aCBhIGxpbmUgbG9uZ2VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGBgbWF4X2xpbmVfbGVuZ3RoYGAgZ2V0IHJlZm9sZGVkLiAgYGBub25lYGAgbWVhbnMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgZ2V0IHJlZm9sZGVkLCBhbmQgYGBhbGxgYCBtZWFucyB0aGF0IGFsbCBsaW5lcworICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IHJlZm9sZGVkLgorCisgICAgaGVhZGVyX2ZhY3RvcnkgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZSBhIGBgbmFtZWBgIGFuZCBgYHZhbHVlYGAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0LgorICAgID09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgYGBoZWFkZXJfZmFjdG9yeWBgIGlzIHRoZSBrZXkgdG8gdGhlIG5ldyBmZWF0dXJlcyBwcm92aWRlZCBieSB0aGUgbmV3Citwb2xpY2llcy4gIFdoZW4gb25lIG9mIHRoZSBuZXcgcG9saWNpZXMgaXMgdXNlZCwgYW55IGhlYWRlciByZXRyaWV2ZWQgZnJvbQorYSBgYE1lc3NhZ2VgYCBvYmplY3QgaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBgYGhlYWRlcl9mYWN0b3J5YGAsIGFuZCBhbnkKK3RpbWUgeW91IHNldCBhIGhlYWRlciBvbiBhIGBgTWVzc2FnZWBgIGl0IGJlY29tZXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5CitgYGhlYWRlcl9mYWN0b3J5YGAuICBBbGwgc3VjaCBoZWFkZXIgb2JqZWN0cyBoYXZlIGEgYGBuYW1lYGAgYXR0cmlidXRlIGVxdWFsCit0byB0aGUgaGVhZGVyIG5hbWUuICBBZGRyZXNzIGFuZCBEYXRlIGhlYWRlcnMgaGF2ZSBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMKK3RoYXQgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBwYXJzZWQgZGF0YSBvZiB0aGUgaGVhZGVyLiAgVGhpcyBtZWFucyB5b3UgY2FuIG5vdworZG8gdGhpbmdzIGxpa2UgdGhpczo6CisKKyAgICA+Pj4gbSA9IE1lc3NhZ2UocG9saWN5PVNNVFApCisgICAgPj4+IG1bJ1RvJ10gPSAnw4lyaWMgPGZvb0BleGFtcGxlLmNvbT4nCisgICAgPj4+IG1bJ3RvJ10KKyAgICAnw4lyaWMgPGZvb0BleGFtcGxlLmNvbT4nCisgICAgPj4+IG1bJ3RvJ10uYWRkcmVzc2VzCisgICAgKEFkZHJlc3MoZGlzcGxheV9uYW1lPSfDiXJpYycsIHVzZXJuYW1lPSdmb28nLCBkb21haW49J2V4YW1wbGUuY29tJyksKQorICAgID4+PiBtWyd0byddLmFkZHJlc3Nlc1swXS51c2VybmFtZQorICAgICdmb28nCisgICAgPj4+IG1bJ3RvJ10uYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZQorICAgICfDiXJpYycKKyAgICA+Pj4gbVsnRGF0ZSddID0gZW1haWwudXRpbHMubG9jYWx0aW1lKCkKKyAgICA+Pj4gbVsnRGF0ZSddLmRhdGV0aW1lCisgICAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgNSwgMjUsIDIxLCAzOSwgMjQsIDQ2NTQ4NCwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YSgtMSwgNzIwMDApLCAnRURUJykpCisgICAgPj4+IG1bJ0RhdGUnXQorICAgICdGcmksIDI1IE1heSAyMDEyIDIxOjQ0OjI3IC0wNDAwJworICAgID4+PiBwcmludChtKQorICAgIFRvOiA9P3V0Zi04P3E/PUMzPTg5cmljPz0gPGZvb0BleGFtcGxlLmNvbT4KKyAgICBEYXRlOiBGcmksIDI1IE1heSAyMDEyIDIxOjQ0OjI3IC0wNDAwCisKK1lvdSB3aWxsIG5vdGUgdGhhdCB0aGUgdW5pY29kZSBkaXNwbGF5IG5hbWUgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGFzCitgYHV0Zi04YGAgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkLCBidXQgdGhhdCB3aGVuIHRoZSBoZWFkZXIgaXMgYWNjZXNzZWQKK2RpcmVjdGx5LCB5b3UgZ2V0IHRoZSB1bmljb2RlIHZlcnNpb24uICBUaGlzIGVsaW1pbmF0ZXMgYW55IG5lZWQgdG8gZGVhbCB3aXRoCit0aGUgOm1vZDpgZW1haWwuaGVhZGVyYCA6bWV0aDpgfmVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyYCBvcgorOm1ldGg6YH5lbWFpbC5oZWFkZXIubWFrZV9oZWFkZXJgIGZ1bmN0aW9ucy4KKworWW91IGNhbiBhbHNvIGNyZWF0ZSBhZGRyZXNzZXMgZnJvbSBwYXJ0czo6CisKKyAgICA+Pj4gbVsnY2MnXSA9IFtHcm91cCgncGFscycsIFtBZGRyZXNzKCdCb2InLCAnYm9iJywgJ2V4YW1wbGUuY29tJyksCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcygnU2FsbHknLCAnc2FsbHknLCAnZXhhbXBsZS5jb20nKV0pLAorICAgIC4uLiAgICAgICAgICAgIEFkZHJlc3MoJ0JvbnpvJywgYWRkcl9zcGVjPSdib256QGxhdWdoLmNvbScpXQorICAgID4+PiBwcmludChtKQorICAgIFRvOiA9P3V0Zi04P3E/PUMzPTg5cmljPz0gPGZvb0BleGFtcGxlLmNvbT4KKyAgICBEYXRlOiBGcmksIDI1IE1heSAyMDEyIDIxOjQ0OjI3IC0wNDAwCisgICAgY2M6IHBhbHM6IEJvYiA8Ym9iQGV4YW1wbGUuY29tPiwgU2FsbHkgPHNhbGx5QGV4YW1wbGUuY29tPjssIEJvbnpvIDxib256QGxhdWdoLmNvbT4KKworRGVjb2RpbmcgdG8gdW5pY29kZSBpcyBkb25lIGF1dG9tYXRpY2FsbHk6OgorCisgICAgPj4+IG0yID0gbWVzc2FnZV9mcm9tX3N0cmluZyhzdHIobSkpCisgICAgPj4+IG0yWyd0byddCisgICAgJ8OJcmljIDxmb29AZXhhbXBsZS5jb20+JworCitXaGVuIHlvdSBwYXJzZSBhIG1lc3NhZ2UsIHlvdSBjYW4gdXNlIHRoZSBgYGFkZHJlc3Nlc2BgIGFuZCBgYGdyb3Vwc2BgCithdHRyaWJ1dGVzIG9mIHRoZSBoZWFkZXIgb2JqZWN0cyB0byBhY2Nlc3MgdGhlIGdyb3VwcyBhbmQgaW5kaXZpZHVhbAorYWRkcmVzc2VzOjoKKworICAgID4+PiBtMlsnY2MnXS5hZGRyZXNzZXMKKyAgICAoQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvYicsIHVzZXJuYW1lPSdib2InLCBkb21haW49J2V4YW1wbGUuY29tJyksIEFkZHJlc3MoZGlzcGxheV9uYW1lPSdTYWxseScsIHVzZXJuYW1lPSdzYWxseScsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSwgQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvbnpvJywgdXNlcm5hbWU9J2JvbnonLCBkb21haW49J2xhdWdoLmNvbScpKQorICAgID4+PiBtMlsnY2MnXS5ncm91cHMKKyAgICAoR3JvdXAoZGlzcGxheV9uYW1lPSdwYWxzJywgYWRkcmVzc2VzPShBZGRyZXNzKGRpc3BsYXlfbmFtZT0nQm9iJywgdXNlcm5hbWU9J2JvYicsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSwgQWRkcmVzcyhkaXNwbGF5X25hbWU9J1NhbGx5JywgdXNlcm5hbWU9J3NhbGx5JywgZG9tYWluPSdleGFtcGxlLmNvbScpKSwgR3JvdXAoZGlzcGxheV9uYW1lPU5vbmUsIGFkZHJlc3Nlcz0oQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvbnpvJywgdXNlcm5hbWU9J2JvbnonLCBkb21haW49J2xhdWdoLmNvbScpLCkpCisKK0luIHN1bW1hcnksIGlmIHlvdSB1c2Ugb25lIG9mIHRoZSBuZXcgcG9saWNpZXMsIGhlYWRlciBtYW5pcHVsYXRpb24gd29ya3MgdGhlCit3YXkgaXQgb3VnaHQgdG86ICB5b3VyIGFwcGxpY2F0aW9uIHdvcmtzIHdpdGggdW5pY29kZSBzdHJpbmdzLCBhbmQgdGhlIGVtYWlsCitwYWNrYWdlIHRyYW5zcGFyZW50bHkgZW5jb2RlcyBhbmQgZGVjb2RlcyB0aGUgdW5pY29kZSB0byBhbmQgZnJvbSB0aGUgUkZDCitzdGFuZGFyZCBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5ncy4KKworT3RoZXIgQVBJIENoYW5nZXMKK35+fn5+fn5+fn5+fn5+fn5+CisKK05ldyA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNIZWFkZXJQYXJzZXJgLCBhZGRlZCB0byB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAKK21vZHVsZSB0byBjb21wbGVtZW50IDpjbGFzczpgfmVtYWlsLnBhcnNlci5IZWFkZXJQYXJzZXJgIGFuZCBjb21wbGV0ZSB0aGUgQnl0ZXMKK0FQSS4KKworTmV3IHV0aWxpdHkgZnVuY3Rpb25zOgorCisgICAqIDpmdW5jOmB+ZW1haWwudXRpbHMuZm9ybWF0X2RhdGV0aW1lYDogZ2l2ZW4gYSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAsCisgICAgIHByb2R1Y2UgYSBzdHJpbmcgZm9ybWF0dGVkIGZvciB1c2UgaW4gYW4gZW1haWwgaGVhZGVyLgorCisgICAqIDpmdW5jOmB+ZW1haWwudXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lYDogZ2l2ZW4gYSBkYXRlIHN0cmluZyBmcm9tCisgICAgIGFuIGVtYWlsIGhlYWRlciwgY29udmVydCBpdCBpbnRvIGFuIGF3YXJlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCwKKyAgICAgb3IgYSBuYWl2ZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaWYgdGhlIG9mZnNldCBpcyBgYC0wMDAwYGAuCisKKyAgICogOmZ1bmM6YH5lbWFpbC51dGlscy5sb2NhbHRpbWVgOiBXaXRoIG5vIGFyZ3VtZW50LCByZXR1cm5zIHRoZQorICAgICBjdXJyZW50IGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIHVzaW5nIHRoZSBsb2NhbAorICAgICA6Y2xhc3M6YH5kYXRldGltZS50aW1lem9uZWAuICBHaXZlbiBhbiBhd2FyZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAsCisgICAgIGNvbnZlcnRzIGl0IGludG8gYW4gYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIHVzaW5nIHRoZQorICAgICBsb2NhbCA6Y2xhc3M6YH5kYXRldGltZS50aW1lem9uZWAuCisKKworZnRwbGliCistLS0tLS0KKworKiA6Y2xhc3M6YGZ0cGxpYi5GVFBgIG5vdyBhY2NlcHRzIGEgYGBzb3VyY2VfYWRkcmVzc2BgIGtleXdvcmQgYXJndW1lbnQgdG8KKyAgc3BlY2lmeSB0aGUgYGAoaG9zdCwgcG9ydClgYCB0byB1c2UgYXMgdGhlIHNvdXJjZSBhZGRyZXNzIGluIHRoZSBiaW5kIGNhbGwKKyAgd2hlbiBjcmVhdGluZyB0aGUgb3V0Z29pbmcgc29ja2V0LiAgKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgCisgIGluIDppc3N1ZTpgODU5NGAuKQorCisqIFRoZSA6Y2xhc3M6YH5mdHBsaWIuRlRQX1RMU2AgY2xhc3Mgbm93IHByb3ZpZGVzIGEgbmV3CisgIDpmdW5jOmB+ZnRwbGliLkZUUF9UTFMuY2NjYCBmdW5jdGlvbiB0byByZXZlcnQgY29udHJvbCBjaGFubmVsIGJhY2sgdG8KKyAgcGxhaW50ZXh0LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRha2UgYWR2YW50YWdlIG9mIGZpcmV3YWxscyB0aGF0IGtub3cgaG93CisgIHRvIGhhbmRsZSBOQVQgd2l0aCBub24tc2VjdXJlIEZUUCB3aXRob3V0IG9wZW5pbmcgZml4ZWQgcG9ydHMuICAoQ29udHJpYnV0ZWQKKyAgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMjEzOWApCisKKyogQWRkZWQgOm1ldGg6YGZ0cGxpYi5GVFAubWxzZGAgbWV0aG9kIHdoaWNoIHByb3ZpZGVzIGEgcGFyc2FibGUgZGlyZWN0b3J5CisgIGxpc3RpbmcgZm9ybWF0IGFuZCBkZXByZWNhdGVzIDptZXRoOmBmdHBsaWIuRlRQLm5sc3RgIGFuZAorICA6bWV0aDpgZnRwbGliLkZUUC5kaXJgLiAgKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTEwNzJgKQorCisKK2Z1bmN0b29scworLS0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgZnVuY3Rvb2xzLmxydV9jYWNoZWAgZGVjb3JhdG9yIG5vdyBhY2NlcHRzIGEgYGB0eXBlZGBgIGtleXdvcmQKK2FyZ3VtZW50ICh0aGF0IGRlZmF1bHRzIHRvIGBgRmFsc2VgYCB0byBlbnN1cmUgdGhhdCBpdCBjYWNoZXMgdmFsdWVzIG9mCitkaWZmZXJlbnQgdHlwZXMgdGhhdCBjb21wYXJlIGVxdWFsIGluIHNlcGFyYXRlIGNhY2hlIHNsb3RzLiAgKENvbnRyaWJ1dGVkCitieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDEzMjI3YC4pCisKKworZ2MKKy0tCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byByZWdpc3RlciBjYWxsYmFja3MgaW52b2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKK2JlZm9yZSBhbmQgYWZ0ZXIgY29sbGVjdGlvbiB1c2luZyB0aGUgbmV3IDpkYXRhOmB+Z2MuY2FsbGJhY2tzYCBsaXN0LgorCisKK2htYWMKKy0tLS0KKworQSBuZXcgOmZ1bmM6YH5obWFjLmNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCB0byBwcmV2ZW50IHNpZGUKK2NoYW5uZWwgYXR0YWNrcyBvbiBkaWdlc3RzIHRocm91Z2ggdGltaW5nIGFuYWx5c2lzLiAgKENvbnRyaWJ1dGVkIGJ5IE5pY2sKK0NvZ2hsYW4gYW5kIENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAxNTA2MWApCisKKworaHR0cAorLS0tLQorCis6Y2xhc3M6YGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXJgIG5vdyBidWZmZXJzIHRoZSBoZWFkZXJzIGFuZCB3cml0ZXMKK3RoZW0gYWxsIGF0IG9uY2Ugd2hlbiA6bWV0aDpgfmh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuZW5kX2hlYWRlcnNgIGlzCitjYWxsZWQuICBBIG5ldyBtZXRob2QgOm1ldGg6YH5odHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmZsdXNoX2hlYWRlcnNgCitjYW4gYmUgdXNlZCB0byBkaXJlY3RseSBtYW5hZ2Ugd2hlbiB0aGUgYWNjdW1sYXRlZCBoZWFkZXJzIGFyZSBzZW50LgorKENvbnRyaWJ1dGVkIGJ5IEFuZHJldyBTY2hhYWYgaW4gOmlzc3VlOmAzNzA5YC4pCisKKzpjbGFzczpgaHR0cC5zZXJ2ZXJgIG5vdyBwcm9kdWNlcyB2YWxpZCBgYEhUTUwgNC4wMSBzdHJpY3RgYCBvdXRwdXQuCisoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTMyOTVgLikKKworOmNsYXNzOmBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2VgIG5vdyBoYXMgYQorOm1ldGg6YH5odHRwLmNsaWVudC5IVFRQUmVzcG9uc2UucmVhZGludG9gIG1ldGhvZCwgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHVzZWQKK2FzIGEgOmNsYXNzOmBpby5SYXdJT0Jhc2VgIGNsYXNzLiAgKENvbnRyaWJ1dGVkIGJ5IEpvaG4gS3VobiBpbgorOmlzc3VlOmAxMzQ2NGAuKQorCisKK2h0bWwKKy0tLS0KKworOmNsYXNzOmBodG1sLnBhcnNlci5IVE1MUGFyc2VyYCBpcyBub3cgYWJsZSB0byBwYXJzZSBicm9rZW4gbWFya3VwIHdpdGhvdXQKK3JhaXNpbmcgZXJyb3JzLCB0aGVyZWZvcmUgdGhlICpzdHJpY3QqIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBhbmQgdGhlCis6ZXhjOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3JgIGV4Y2VwdGlvbiBhcmUgbm93IGRlcHJlY2F0ZWQuCitUaGUgYWJpbGl0eSB0byBwYXJzZSBicm9rZW4gbWFya3VwIGlzIHRoZSByZXN1bHQgb2YgYSBudW1iZXIgb2YgYnVnIGZpeGVzIHRoYXQKK2FyZSBhbHNvIGF2YWlsYWJsZSBvbiB0aGUgbGF0ZXN0IGJ1ZyBmaXggcmVsZWFzZXMgb2YgUHl0aG9uIDIuNy8zLjIuCisoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTUxMTRgLCBhbmQgOmlzc3VlOmAxNDUzOGAsCis6aXNzdWU6YDEzOTkzYCwgOmlzc3VlOmAxMzk2MGAsIDppc3N1ZTpgMTMzNThgLCA6aXNzdWU6YDE3NDU3NjFgLAorOmlzc3VlOmA3NTU2NzBgLCA6aXNzdWU6YDEzMzU3YCwgOmlzc3VlOmAxMjYyOWAsIDppc3N1ZTpgMTIwMDMxM2AsCis6aXNzdWU6YDY3MDY2NGAsIDppc3N1ZTpgMTMyNzNgLCA6aXNzdWU6YDEyODg4YCwgOmlzc3VlOmA3MzExYCkKKworQSBuZXcgOmRhdGE6YH5odG1sLmVudGl0aWVzLmh0bWw1YCBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBIVE1MNSBuYW1lZCBjaGFyYWN0ZXIKK3JlZmVyZW5jZXMgdG8gdGhlIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocykgKGUuZy4gYGBodG1sNVsnZ3Q7J10gPT0KKyc+J2BgKSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgaHRtbC5lbnRpdGllc2AgbW9kdWxlLiAgVGhlIGRpY3Rpb25hcnkgaXMKK25vdyBhbHNvIHVzZWQgYnkgOmNsYXNzOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAuICAoQ29udHJpYnV0ZWQgYnkgRXppbworTWVsb3R0aSBpbiA6aXNzdWU6YDExMTEzYCBhbmQgOmlzc3VlOmAxNTE1NmApCisKKworaW1hcGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+aW1hcGxpYi5JTUFQNF9TU0xgIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGFuIFNTTENvbnRleHQKK3BhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLgorCisoQ29udHJpYnV0ZWQgYnkgU2lqaW4gSm9zZXBoIGluIDppc3N1ZTpgODgwOGApCisKKworaW5zcGVjdAorLS0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmluc3BlY3QuZ2V0Y2xvc3VyZXZhcnNgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLiBUaGlzIGZ1bmN0aW9uCityZXBvcnRzIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgYWxsIG5hbWVzIHJlZmVyZW5jZWQgZnJvbSB0aGUgZnVuY3Rpb24gYm9keSBhbmQKK3doZXJlIHRob3NlIG5hbWVzIHdlcmUgcmVzb2x2ZWQsIG1ha2luZyBpdCBlYXNpZXIgdG8gdmVyaWZ5IGNvcnJlY3QgaW50ZXJuYWwKK3N0YXRlIHdoZW4gdGVzdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHN0YXRlZnVsIGNsb3N1cmVzLgorCisoQ29udHJpYnV0ZWQgYnkgTWVhZG9yIEluZ2UgYW5kIE5pY2sgQ29naGxhbiBpbiA6aXNzdWU6YDEzMDYyYCkKKworQSBuZXcgOmZ1bmM6YH5pbnNwZWN0LmdldGdlbmVyYXRvcmxvY2Fsc2AgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuIFRoaXMKK2Z1bmN0aW9uIHJlcG9ydHMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvcidzCitzdGFjayBmcmFtZSwgbWFraW5nIGl0IGVhc2llciB0byB2ZXJpZnkgY29ycmVjdCBpbnRlcm5hbCBzdGF0ZSB3aGVuIHRlc3RpbmcKK2dlbmVyYXRvcnMuCisKKyhDb250cmlidXRlZCBieSBNZWFkb3IgSW5nZSBpbiA6aXNzdWU6YDE1MTUzYCkKKworaW8KKy0tCisKK1RoZSA6ZnVuYzpgfmlvLm9wZW5gIGZ1bmN0aW9uIGhhcyBhIG5ldyBgYCd4J2BgIG1vZGUgdGhhdCBjYW4gYmUgdXNlZCB0bworZXhjbHVzaXZlbHkgY3JlYXRlIGEgbmV3IGZpbGUsIGFuZCByYWlzZSBhIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUKK2FscmVhZHkgZXhpc3RzLiBJdCBpcyBiYXNlZCBvbiB0aGUgQzExICd4JyBtb2RlIHRvIGZvcGVuKCkuCisKKyhDb250cmlidXRlZCBieSBEYXZpZCBUb3duc2hlbmQgaW4gOmlzc3VlOmAxMjc2MGApCisKK1RoZSBjb25zdHJ1Y3RvciBvZiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgY2xhc3MgaGFzIGEgbmV3Cisqd3JpdGVfdGhyb3VnaCogb3B0aW9uYWwgYXJndW1lbnQuIElmICp3cml0ZV90aHJvdWdoKiBpcyBgYFRydWVgYCwgY2FsbHMgdG8KKzptZXRoOmB+aW8uVGV4dElPV3JhcHBlci53cml0ZWAgYXJlIGd1YXJhbnRlZWQgbm90IHRvIGJlIGJ1ZmZlcmVkOiBhbnkgZGF0YQord3JpdHRlbiBvbiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGhhbmRsZWQgdG8gaXRzCit1bmRlcmx5aW5nIGJpbmFyeSBidWZmZXIuCisKKworaXRlcnRvb2xzCistLS0tLS0tLS0KKworOmZ1bmM6YH5pdGVydG9vbHMuYWNjdW11bGF0ZWAgbm93IHRha2VzIGFuIG9wdGlvbmFsIGBgZnVuY2BgIGFyZ3VtZW50IGZvcgorcHJvdmlkaW5nIGEgdXNlci1zdXBwbGllZCBiaW5hcnkgZnVuY3Rpb24uCisKKworbG9nZ2luZworLS0tLS0tLQorCitUaGUgOmZ1bmM6YH5sb2dnaW5nLmJhc2ljQ29uZmlnYCBmdW5jdGlvbiBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgYGBoYW5kbGVyc2BgCithcmd1bWVudCB0YWtpbmcgYW4gaXRlcmFibGUgb2YgaGFuZGxlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIHJvb3QgbG9nZ2VyLgorCitBIGNsYXNzIGxldmVsIGF0dHJpYnV0ZSA6YXR0cjpgfmxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlci5hcHBlbmRfbnVsYCBoYXMKK2JlZW4gYWRkZWQgdG8gOmNsYXNzOmB+bG9nZ2luZy5oYW5kbGVycy5TeXNMb2dIYW5kbGVyYCB0byBhbGxvdyBjb250cm9sIG9mIHRoZQorYXBwZW5kaW5nIG9mIHRoZSBgYE5VTGBgIChgYFwwMDBgYCkgYnl0ZSB0byBzeXNsb2cgcmVjb3Jkcywgc2luY2UgZm9yIHNvbWUKK2RlYW1vbnMgaXQgaXMgcmVxdWlyZWQgd2hpbGUgZm9yIG90aGVycyBpdCBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgbG9nLgorCisKKworbWF0aAorLS0tLQorCitUaGUgOm1vZDpgbWF0aGAgbW9kdWxlIGhhcyBhIG5ldyBmdW5jdGlvbiwgOmZ1bmM6YH5tYXRoLmxvZzJgLCAgd2hpY2ggcmV0dXJucwordGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgKngqLgorCisoV3JpdHRlbiBieSBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDExODg4YCkuCisKKworbW1hcAorLS0tLQorCitUaGUgOm1ldGg6YH5tbWFwLm1tYXAucmVhZGAgbWV0aG9kIGlzIG5vdyBtb3JlIGNvbXBhdGlibGUgd2l0aCBvdGhlciBmaWxlLWxpa2UKK29iamVjdHM6IGlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIHNwZWNpZmllZCBhcyBgYE5vbmVgYCwgaXQgcmV0dXJucyB0aGUKK2J5dGVzIGZyb20gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBtYXBwaW5nLiAgKENvbnRyaWJ1dGVkCitieSBQZXRyaSBMZWh0aW5lbiBpbiA6aXNzdWU6YDEyMDIxYC4pCisKKworbXVsdGlwcm9jZXNzaW5nCistLS0tLS0tLS0tLS0tLS0KKworVGhlIG5ldyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAgZnVuY3Rpb24gYWxsb3dzIHRvIHBvbGwKK211bHRpcGxlIG9iamVjdHMgKHN1Y2ggYXMgY29ubmVjdGlvbnMsIHNvY2tldHMgYW5kIHBpcGVzKSB3aXRoIGEgdGltZW91dC4KKyhDb250cmlidXRlZCBieSBSaWNoYXJkIE91ZGtlcmsgaW4gOmlzc3VlOmAxMjMyOGAuKQorCis6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCBvYmplY3RzIGNhbiBub3cgYmUgdHJhbnNmZXJyZWQgb3ZlcgorbXVsdGlwcm9jZXNzaW5nIGNvbm5lY3Rpb25zLgorKENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgT3Vka2VyayBpbiA6aXNzdWU6YDQ4OTJgLikKKworOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzc2Agbm93IGFjY2VwdHMgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQKK3RvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGluaGVyaXRpbmcgdGhlIGBgZGFlbW9uYGAgZmxhZyBmcm9tCit0aGUgcGFyZW50IHByb2Nlc3MgKDppc3N1ZTpgNjA2NGApLgorCitOZXcgYXR0cmlidXRlIGF0dHJpYnV0ZSA6ZGF0YTpgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3Muc2VudGluZWxgIGFsbG93cyBhCitwcm9ncmFtIHRvIHdhaXQgb24gbXVsdGlwbGUgOmNsYXNzOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgIG9iamVjdHMgYXQgb25lCit0aW1lIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBPUyBwcmltaXRpdmVzIChmb3IgZXhhbXBsZSwgOm1vZDpgc2VsZWN0YCBvbgorcG9zaXggc3lzdGVtcykuCisKK05ldyBtZXRob2RzIDptZXRoOmBtdWx0aXByb2Nlc3NpbmcucG9vbC5Qb29sLnN0YXJtYXBgIGFuZAorOm1ldGg6YH5tdWx0aXByb2Nlc3NpbmcucG9vbC5Qb29sLnN0YXJtYXBfYXN5bmNgIHByb3ZpZGUKKzpmdW5jOmBpdGVydG9vbHMuc3Rhcm1hcGAgZXF1aXZhbGVudHMgdG8gdGhlIGV4aXN0aW5nCis6bWV0aDpgbXVsdGlwcm9jZXNzaW5nLnBvb2wuUG9vbC5tYXBgIGFuZAorOm1ldGg6YH5tdWx0aXByb2Nlc3NpbmcucG9vbC5Qb29sLm1hcF9hc3luY2AgZnVuY3Rpb25zLiAgKENvbnRyaWJ1dGVkIGJ5IEh5bmVrCitTY2hsYXdhY2sgaW4gOmlzc3VlOmAxMjcwOGAuKQorCisKK25udHBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgbm50cGxpYi5OTlRQYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0bwordW5jb25kaXRpb25hbGx5IGNvbnN1bWUgOmV4Yzpgc29ja2V0LmVycm9yYCBleGNlcHRpb25zIGFuZCB0byBjbG9zZSB0aGUgTk5UUAorY29ubmVjdGlvbiB3aGVuIGRvbmU6OgorCisgID4+PiBmcm9tIG5udHBsaWIgaW1wb3J0IE5OVFAKKyAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAuLi4gICAgIG4uZ3JvdXAoJ2dtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnKQorICAuLi4KKyAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgPj4+CisKKyhDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDk3OTVgKQorCisKK29zCistLQorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfm9zLnBpcGUyYCBmdW5jdGlvbiB0aGF0IG1ha2VzIGl0CisgIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIHBpcGUgd2l0aCA6ZGF0YTpgfm9zLk9fQ0xPRVhFQ2Agb3IKKyAgOmRhdGE6YH5vcy5PX05PTkJMT0NLYCBmbGFncyBzZXQgYXRvbWljYWxseS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0bworICBhdm9pZCByYWNlIGNvbmRpdGlvbnMgaW4gbXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMuCisKKyogVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3Muc2VuZGZpbGVgIGZ1bmN0aW9uIHdoaWNoIHByb3ZpZGVzCisgIGFuIGVmZmljZW50ICJ6ZXJvLWNvcHkiIHdheSBmb3IgY29weWluZyBkYXRhIGZyb20gb25lIGZpbGUgKG9yIHNvY2tldCkKKyAgZGVzY3JpcHRvciB0byBhbm90aGVyLiBUaGUgcGhyYXNlICJ6ZXJvLWNvcHkiIHJlZmVycyB0byB0aGUgZmFjdCB0aGF0IGFsbCBvZgorICB0aGUgY29weWluZyBvZiBkYXRhIGJldHdlZW4gdGhlIHR3byBkZXNjcmlwdG9ycyBpcyBkb25lIGVudGlyZWx5IGJ5IHRoZQorICBrZXJuZWwsIHdpdGggbm8gY29weWluZyBvZiBkYXRhIGludG8gdXNlcnNwYWNlIGJ1ZmZlcnMuIDpmdW5jOmB+b3Muc2VuZGZpbGVgCisgIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvcHkgZGF0YSBmcm9tIGEgZmlsZSBvbiBkaXNrIHRvIGEgbmV0d29yayBzb2NrZXQsCisgIGUuZy4gZm9yIGRvd25sb2FkaW5nIGEgZmlsZS4KKworICAoUGF0Y2ggc3VibWl0dGVkIGJ5IFJvc3MgTGFnZXJ3YWxsIGFuZCBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEwODgyYC4pCisKKyogVG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIGxpa2Ugc3ltbGluayBhdHRhY2tzIGFuZCBpc3N1ZXMgd2l0aCB0ZW1wb3JhcnkKKyAgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLCBpdCBpcyBtb3JlIHJlbGlhYmxlIChhbmQgYWxzbyBmYXN0ZXIpIHRvIG1hbmlwdWxhdGUKKyAgZmlsZSBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIGZpbGUgbmFtZXMuIFB5dGhvbiAzLjMgZW5oYW5jZXMgZXhpc3RpbmcgZnVuY3Rpb25zCisgIGFuZCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gd29yayBvbiBmaWxlIGRlc2NyaXB0b3JzICg6aXNzdWU6YDQ3NjFgLAorICA6aXNzdWU6YDEwNzU1YCBhbmQgOmlzc3VlOmAxNDYyNmApLgorCisgIC0gVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3MuZndhbGtgIGZ1bmN0aW9uIHNpbWlsYXIgdG8KKyAgICA6ZnVuYzpgfm9zLndhbGtgIGV4Y2VwdCB0aGF0IGl0IGFsc28geWllbGRzIGZpbGUgZGVzY3JpcHRvcnMgcmVmZXJyaW5nIHRvIHRoZQorICAgIGRpcmVjdG9yaWVzIHZpc2l0ZWQuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8gYXZvaWQgc3ltbGluayByYWNlcy4KKworICAtIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdldCBuZXcgb3B0aW9uYWwgKmRpcl9mZCogKDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvCisgICAgZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCkgYW5kL29yICpmb2xsb3dfc3ltbGlua3MqICg6cmVmOmBub3QKKyAgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gKToKKyAgICA6ZnVuYzpgfm9zLmFjY2Vzc2AsIDpmdW5jOmB+b3MuY2hmbGFnc2AsIDpmdW5jOmB+b3MuY2htb2RgLCA6ZnVuYzpgfm9zLmNob3duYCwKKyAgICA6ZnVuYzpgfm9zLmxpbmtgLCA6ZnVuYzpgfm9zLmxzdGF0YCwgOmZ1bmM6YH5vcy5ta2RpcmAsIDpmdW5jOmB+b3MubWtmaWZvYCwKKyAgICA6ZnVuYzpgfm9zLm1rbm9kYCwgOmZ1bmM6YH5vcy5vcGVuYCwgOmZ1bmM6YH5vcy5yZWFkbGlua2AsIDpmdW5jOmB+b3MucmVtb3ZlYCwKKyAgICA6ZnVuYzpgfm9zLnJlbmFtZWAsIDpmdW5jOmB+b3MucmVwbGFjZWAsIDpmdW5jOmB+b3Mucm1kaXJgLCA6ZnVuYzpgfm9zLnN0YXRgLAorICAgIDpmdW5jOmB+b3Muc3ltbGlua2AsIDpmdW5jOmB+b3MudW5saW5rYCwgOmZ1bmM6YH5vcy51dGltZWAuICBQbGF0Zm9ybQorICAgIHN1cHBvcnQgZm9yIHVzaW5nIHRoZXNlIHBhcmFtZXRlcnMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBzZXRzCisgICAgOmRhdGE6YG9zLnN1cHBvcnRzX2Rpcl9mZGAgYW5kIDpkYXRhOmBvcy5zdXBwb3J0c19mb2xsb3dzX3N5bWxpbmtzYC4KKworICAtIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IGEgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGVpciBwYXRoIGFyZ3VtZW50OgorICAgIDpmdW5jOmB+b3MuY2hkaXJgLCA6ZnVuYzpgfm9zLmNobW9kYCwgOmZ1bmM6YH5vcy5jaG93bmAsCisgICAgOmZ1bmM6YH5vcy5leGVjdmVgLCA6ZnVuYzpgfm9zLmxpc3RkaXJgLCA6ZnVuYzpgfm9zLnBhdGhjb25mYCwgOmZ1bmM6YH5vcy5wYXRoLmV4aXN0c2AsCisgICAgOmZ1bmM6YH5vcy5zdGF0YCwgOmZ1bmM6YH5vcy5zdGF0dmZzYCwgOmZ1bmM6YH5vcy51dGltZWAuICBQbGF0Zm9ybSBzdXBwb3J0CisgICAgZm9yIHRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSA6ZGF0YTpgb3Muc3VwcG9ydHNfZmRgIHNldC4KKworKiA6ZnVuYzpgfm9zLmFjY2Vzc2AgYWNjZXB0cyBhbiBgYGVmZmVjdGl2ZV9pZHNgYCBrZXl3b3JkIGFyZ3VtZW50IHRvIHR1cm4gb24KKyAgdXNpbmcgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIHJhdGhlciB0aGFuIHRoZSByZWFsIHVpZC9naWQgaW4gdGhlIGFjY2VzcyBjaGVjay4KKyAgUGxhdGZvcm0gc3VwcG9ydCBmb3IgdGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlCisgIDpkYXRhOmB+b3Muc3VwcG9ydHNfZWZmZWN0aXZlX2lkc2Agc2V0LgorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyB0d28gbmV3IGZ1bmN0aW9uczogOmZ1bmM6YH5vcy5nZXRwcmlvcml0eWAgYW5kCisgIDpmdW5jOmB+b3Muc2V0cHJpb3JpdHlgLiBUaGV5IGNhbiBiZSB1c2VkIHRvIGdldCBvciBzZXQgcHJvY2VzcworICBuaWNlbmVzcy9wcmlvcml0eSBpbiBhIGZhc2hpb24gc2ltaWxhciB0byA6ZnVuYzpgb3MubmljZWAgYnV0IGV4dGVuZGVkIHRvIGFsbAorICBwcm9jZXNzZXMgaW5zdGVhZCBvZiBqdXN0IHRoZSBjdXJyZW50IG9uZS4KKworICAoUGF0Y2ggc3VibWl0dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTA3ODRgLikKKworKiBUaGUgbmV3IDpmdW5jOmBvcy5yZXBsYWNlYCBmdW5jdGlvbiBhbGxvd3MgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcgb2YgYQorICBmaWxlIHdpdGggb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLiAgV2l0aCA6ZnVuYzpgb3MucmVuYW1lYCwgYW4gZXhpc3RpbmcKKyAgZGVzdGluYXRpb24gZmlsZSBpcyBvdmVyd3JpdHRlbiB1bmRlciBQT1NJWCwgYnV0IHJhaXNlcyBhbiBlcnJvciB1bmRlcgorICBXaW5kb3dzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmA4ODI4YC4pCisKKyogVGhlIHN0YXQgZmFtaWx5IG9mIGZ1bmN0aW9ucyAoOmZ1bmM6YH5vcy5zdGF0YCwgOmZ1bmM6YH5vcy5mc3RhdGAsCisgIGFuZCA6ZnVuYzpgfm9zLmxzdGF0YCkgbm93IHN1cHBvcnQgcmVhZGluZyBhIGZpbGUncyB0aW1lc3RhbXBzCisgIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24uICBTeW1tZXRyaWNhbGx5LCA6ZnVuYzpgfm9zLnV0aW1lYAorICBjYW4gbm93IHdyaXRlIGZpbGUgdGltZXN0YW1wcyB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uLiAgKENvbnRyaWJ1dGVkIGJ5CisgIExhcnJ5IEhhc3RpbmdzIGluIDppc3N1ZTpgMTQxMjdgLikKKworKiBUaGUgbmV3IDpmdW5jOmBvcy5nZXRfdGVybWluYWxfc2l6ZWAgZnVuY3Rpb24gcXVlcmllcyB0aGUgc2l6ZSBvZiB0aGUKKyAgdGVybWluYWwgYXR0YWNoZWQgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIFNlZSBhbHNvCisgIDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgLgorICAoQ29udHJpYnV0ZWQgYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layBpbiA6aXNzdWU6YDEzNjA5YC4pCisKKy4uIFhYWCBzb3J0IG91dCB0aGlzIG1lc3MgYWZ0ZXIgYmV0YTEKKworKiBOZXcgZnVuY3Rpb25zIHRvIHN1cHBvcnQgTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcyAoOmlzc3VlOmAxMjcyMGApOgorICA6ZnVuYzpgfm9zLmdldHhhdHRyYCwgOmZ1bmM6YH5vcy5saXN0eGF0dHJgLCA6ZnVuYzpgfm9zLnJlbW92ZXhhdHRyYCwKKyAgOmZ1bmM6YH5vcy5zZXR4YXR0cmAuCisKKyogTmV3IGludGVyZmFjZSB0byB0aGUgc2NoZWR1bGVyLiBUaGVzZSBmdW5jdGlvbnMKKyAgY29udHJvbCBob3cgYSBwcm9jZXNzIGlzIGFsbG9jYXRlZCBDUFUgdGltZSBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gTmV3CisgIGZ1bmN0aW9uczoKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4YCwgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWluYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfZ2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX2dldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfcnJfZ2V0X2ludGVydmFsYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9zZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfc2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX3NldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfeWllbGRgLAorCisqIE5ldyBmdW5jdGlvbnMgdG8gY29udHJvbCB0aGUgZmlsZSBzeXN0ZW06CisKKyAgKiA6ZnVuYzpgfm9zLnBvc2l4X2ZhZHZpc2VgOiBBbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEKKyAgICBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmcgdGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCisgICogOmZ1bmM6YH5vcy5wb3NpeF9mYWxsb2NhdGVgOiBFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkCisgICAgZm9yIGEgZmlsZS4KKyAgKiA6ZnVuYzpgfm9zLnN5bmNgOiBGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suCisKKyogQWRkaXRpb25hbCBuZXcgIHBvc2l4IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+b3MubG9ja2ZgOiBBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAqIDpmdW5jOmB+b3MucHJlYWRgOiBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgYXQgYW4gb2Zmc2V0LCB0aGUgZmlsZQorICAgIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4KKyAgKiA6ZnVuYzpgfm9zLnB3cml0ZWA6IFdyaXRlIHRvIGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYW4gb2Zmc2V0LCBsZWF2aW5nCisgICAgdGhlIGZpbGUgb2Zmc2V0IHVuY2hhbmdlZC4KKyAgKiA6ZnVuYzpgfm9zLnJlYWR2YDogUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGludG8gYSBudW1iZXIgb2Ygd3JpdGFibGUgYnVmZmVycy4KKyAgKiA6ZnVuYzpgfm9zLnRydW5jYXRlYDogVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byAqcGF0aCosIHNvIHRoYXQKKyAgICBpdCBpcyBhdCBtb3N0ICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuCisgICogOmZ1bmM6YH5vcy53YWl0aWRgOiBXYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuCisgICogOmZ1bmM6YH5vcy53cml0ZXZgOiBXcml0ZSB0aGUgY29udGVudHMgb2YgKmJ1ZmZlcnMqIHRvIGEgZmlsZSBkZXNjcmlwdG9yLAorICAgIHdoZXJlICpidWZmZXJzKiBpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy4KKyAgKiA6ZnVuYzpgfm9zLmdldGdyb3VwbGlzdGAgKDppc3N1ZTpgOTM0NGApOiBSZXR1cm4gbGlzdCBvZiBncm91cCBpZHMgdGhhdAorICAgIHNwZWNpZmllZCB1c2VyIGJlbG9uZ3MgdG8uCisKKyogOmZ1bmM6YH5vcy50aW1lc2AgYW5kIDpmdW5jOmB+b3MudW5hbWVgOiBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0bworICBhIHR1cGxlLWxpa2Ugb2JqZWN0IHdpdGggbmFtZWQgYXR0cmlidXRlcy4KKworKiBTb21lIHBsYXRmb3JtcyBub3cgc3VwcG9ydCBhZGRpdGlvbmFsIGNvbnN0YW50cyBmb3IgdGhlIDpmdW5jOmB+b3MubHNlZWtgCisgIGZ1bmN0aW9uLCBzdWNoIGFzIGBgb3MuU0VFS19IT0xFYGAgYW5kIGBgb3MuU0VFS19EQVRBYGAuCisKKyogTmV3IGNvbnN0YW50cyA6ZGF0YTpgfm9zLlJUTERfTEFaWWAsIDpkYXRhOmB+b3MuUlRMRF9OT1dgLAorICA6ZGF0YTpgfm9zLlJUTERfR0xPQkFMYCwgOmRhdGE6YH5vcy5SVExEX0xPQ0FMYCwgOmRhdGE6YH5vcy5SVExEX05PREVMRVRFYCwKKyAgOmRhdGE6YH5vcy5SVExEX05PTE9BRGAsIGFuZCA6ZGF0YTpgfm9zLlJUTERfREVFUEJJTkRgIGFyZSBhdmFpbGFibGUgb24KKyAgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGVtLiAgIFRoZXNlIGFyZSBmb3IgdXNlIHdpdGggdGhlCisgIDpmdW5jOmBzeXMuc2V0ZGxvcGVuZmxhZ3NgIGZ1bmN0aW9uLCBhbmQgc3VwZXJzZWRlIHRoZSBzaW1pbGFyIGNvbnN0YW50cworICBkZWZpbmVkIGluIDptb2Q6YGN0eXBlc2AgYW5kIDptb2Q6YERMRkNOYC4gIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lcgorICBpbiA6aXNzdWU6YDEzMjI2YC4pCisKKyogOmZ1bmM6YG9zLnN5bWxpbmtgIG5vdyBhY2NlcHRzIChhbmQgaWdub3JlcykgdGhlIGBgdGFyZ2V0X2lzX2RpcmVjdG9yeWBgCisgIGtleXdvcmQgYXJndW1lbnQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCB0byBlYXNlIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQuCisKKworcGRiCistLS0KKworVGFiLWNvbXBsZXRpb24gaXMgbm93IGF2YWlsYWJsZSBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0IGFsc28gdGhlaXIKK2FyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBmb3IgdGhlIGBgYnJlYWtgYCBjb21tYW5kLCBmdW5jdGlvbiBhbmQgZmlsZSBuYW1lcworYXJlIGNvbXBsZXRlZC4KKworKENvbnRyaWJ1dGVkIGJ5IEdlb3JnIEJyYW5kbCBpbiA6aXNzdWU6YDE0MjEwYCkKKworCitwaWNrbGUKKy0tLS0tLQorCis6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCBvYmplY3RzIG5vdyBoYXZlIGFuIG9wdGlvbmFsCis6YXR0cjpgfnBpY2tsZS5QaWNrbGVyLmRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUgYWxsb3dpbmcgdG8gc2V0IHBlci1waWNrbGVyCityZWR1Y3Rpb24gZnVuY3Rpb25zLgorCisoQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBPdWRrZXJrIGluIDppc3N1ZTpgMTQxNjZgLikKKworCitweWRvYworLS0tLS0KKworVGhlIFRrIEdVSSBhbmQgdGhlIDpmdW5jOmB+cHlkb2Muc2VydmVgIGZ1bmN0aW9uIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlCis6bW9kOmBweWRvY2AgbW9kdWxlOiBgYHB5ZG9jIC1nYGAgYW5kIDpmdW5jOmB+cHlkb2Muc2VydmVgIGhhdmUgYmVlbiBkZXByZWNhdGVkCitpbiBQeXRob24gMy4yLgorCisKK3JlCistLQorCis6Y2xhc3M6YHN0cmAgcmVndWxhciBleHByZXNzaW9ucyBub3cgc3VwcG9ydCBgYFx1YGAgYW5kIGBgXFVgYCBlc2NhcGVzLgorCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDM2NjVgLikKKworCitzY2hlZAorLS0tLS0KKworKiA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5ydW5gIG5vdyBhY2NlcHRzIGEgKmJsb2NraW5nKiBwYXJhbWV0ZXIgd2hpY2ggd2hlbgorICBzZXQgdG8gRmFsc2UgbWFrZXMgdGhlIG1ldGhvZCBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKKyAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4gaW1tZWRpYXRlbHkuCisgIFRoaXMgaXMgdXNlZnVsIGluIGNhc2UgeW91IHdhbnQgdG8gdXNlIHRoZSA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGluCisgIG5vbi1ibG9ja2luZyBhcHBsaWNhdGlvbnMuICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMzQ0OWApCisKKyogOmNsYXNzOmB+c2NoZWQuc2NoZWR1bGVyYCBjbGFzcyBjYW4gbm93IGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgIGVudmlyb25tZW50cy4gIChDb250cmlidXRlZCBieSBKb3NpYWggQ2FybHNvbiBhbmQgR2lhbXBhb2xvIFJvZG9sw6AgaW4KKyAgOmlzc3VlOmA4Njg0YCkKKworKiAqdGltZWZ1bmMqIGFuZCAqZGVsYXlmdW5jdCogcGFyYW1ldGVycyBvZiA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGNsYXNzCisgIGNvbnN0cnVjdG9yIGFyZSBub3cgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIDpmdW5jOmB0aW1lLnRpbWVgIGFuZAorICA6ZnVuYzpgdGltZS5zbGVlcGAgcmVzcGVjdGl2ZWx5LiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisqIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYCBhbmQgOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJhYnNgCisgICphcmd1bWVudCogcGFyYW1ldGVyIGlzIG5vdyBvcHRpb25hbC4gIChDb250cmlidXRlZCBieSBDaHJpcyBDbGFyayBpbgorICA6aXNzdWU6YDEzMjQ1YCkKKworKiA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5lbnRlcmAgYW5kIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYWJzYAorICBub3cgYWNjZXB0IGEgKmt3YXJncyogcGFyYW1ldGVyLiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisKK3NlbGVjdAorLS0tLS0tCisKK1NvbGFyaXMgYW5kIGRlcml2YXRpdmVzIHBsYXRmb3JtcyBoYXZlIGEgbmV3IGNsYXNzIDpjbGFzczpgc2VsZWN0LmRldnBvbGxgCitmb3IgaGlnaCBwZXJmb3JtYW5jZSBhc3luY2hyb25vdXMgc29ja2V0cyB2aWEgOmZpbGU6YC9kZXYvcG9sbGAuCisoQ29udHJpYnV0ZWQgYnkgSmVzw7pzIENlYSBBdmnDs24gaW4gOmlzc3VlOmA2Mzk3YC4pCisKKworc2hsZXgKKy0tLS0tCisKK1RoZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCBoZWxwZXIgZnVuY3Rpb24gYGBxdW90ZWBgIGZyb20gdGhlCis6bW9kOmBwaXBlc2AgbW9kdWxlcyBoYXMgYmVlbiBtb3ZlZCB0byB0aGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBhbmQKK2RvY3VtZW50ZWQuICA6ZnVuYzpgfnNobGV4LnF1b3RlYCBwcm9wZXJseSBlc2NhcGVzIGFsbCBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nCit0aGF0IG1pZ2h0IGJlIG90aGVyd2lzZSBnaXZlbiBzcGVjaWFsIG1lYW5pbmcgYnkgdGhlIHNoZWxsLgorCisKK3NodXRpbAorLS0tLS0tCisKKyogTmV3IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+c2h1dGlsLmRpc2tfdXNhZ2VgOiBwcm92aWRlcyB0b3RhbCwgdXNlZCBhbmQgZnJlZSBkaXNrIHNwYWNlCisgICAgc3RhdGlzdGljcy4gKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTI0NDJgKQorICAqIDpmdW5jOmB+c2h1dGlsLmNob3duYDogYWxsb3dzIG9uZSB0byBjaGFuZ2UgdXNlciBhbmQvb3IgZ3JvdXAgb2YgdGhlIGdpdmVuCisgICAgcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlIHVzZXIvZ3JvdXAgbmFtZXMgYW5kIG5vdCBvbmx5IHRoZWlyIG51bWVyaWMKKyAgICBpZHMuIChDb250cmlidXRlZCBieSBTYW5kcm8gVG9zaSBpbiA6aXNzdWU6YDEyMTkxYCkKKyAgKiA6ZnVuYzpgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplYDogcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93CisgICAgdG8gd2hpY2ggdGhlIGludGVycHJldGVyIGlzIGF0dGFjaGVkLiAgKENvbnRyaWJ1dGVkIGJ5IFpiaWduaWV3CisgICAgSsSZZHJ6ZWpld3NraS1Tem1layBpbiA6aXNzdWU6YDEzNjA5YC4pCisKKyogOmZ1bmM6YH5zaHV0aWwuY29weTJgIGFuZCA6ZnVuYzpgfnNodXRpbC5jb3B5c3RhdGAgbm93IHByZXNlcnZlIGZpbGUKKyAgdGltZXN0YW1wcyB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQuCisgIFRoZXkgYWxzbyBwcmVzZXJ2ZSBmaWxlICJleHRlbmRlZCBhdHRyaWJ1dGVzIiBvbiBMaW51eC4gIChDb250cmlidXRlZAorICBieSBMYXJyeSBIYXN0aW5ncyBpbiA6aXNzdWU6YDE0MTI3YCBhbmQgIDppc3N1ZTpgMTUyMzhgLikKKworKiBTZXZlcmFsIGZ1bmN0aW9ucyBub3cgdGFrZSBhbiBvcHRpb25hbCBgYHN5bWxpbmtzYGAgYXJndW1lbnQ6IHdoZW4gdGhhdAorICBwYXJhbWV0ZXIgaXMgdHJ1ZSwgc3ltbGlua3MgYXJlbid0IGRlcmVmZXJlbmNlZCBhbmQgdGhlIG9wZXJhdGlvbiBpbnN0ZWFkCisgIGFjdHMgb24gdGhlIHN5bWxpbmsgaXRzZWxmIChvciBjcmVhdGVzIG9uZSwgaWYgcmVsZXZhbnQpLgorICAoQ29udHJpYnV0ZWQgYnkgSHluZWsgU2NobGF3YWNrIGluIDppc3N1ZTpgMTI3MTVgLikKKworKiBXaGVuIGNvcHlpbmcgZmlsZXMgdG8gYSBkaWZmZXJlbnQgZmlsZSBzeXN0ZW0sIDpmdW5jOmB+c2h1dGlsLm1vdmVgIG5vdworICBoYW5kbGVzIHN5bWxpbmtzIHRoZSB3YXkgdGhlIHBvc2l4IGBgbXZgYCBjb21tYW5kIGRvZXMsIHJlY3JlYXRpbmcgdGhlCisgIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weWluZyB0aGUgdGFyZ2V0IGZpbGUgY29udGVudHMuICAoQ29udHJpYnV0ZWQgYnkKKyAgSm9uYXRoYW4gTmllaG9mIGluIDppc3N1ZTpgOTk5M2AuKSAgOmZ1bmM6YH5zaHV0aWwubW92ZWAgbm93IGFsc28gcmV0dXJucworICB0aGUgYGBkc3RgYCBhcmd1bWVudCBhcyBpdHMgcmVzdWx0LgorCisqIDpmdW5jOmB+c2h1dGlsLnJtdHJlZWAgaXMgbm93IHJlc2lzdGFudCB0byBzeW1saW5rIGF0dGFja3Mgb24gcGxhdGZvcm1zCisgIHdoaWNoIHN1cHBvcnQgdGhlIG5ldyBgYGRpcl9mZGBgIHBhcmFtZXRlciBpbiA6ZnVuYzpgb3Mub3BlbmAgYW5kCisgIDpmdW5jOmBvcy51bmxpbmtgLiAoQ29udHJpYnV0ZWQgYnkgTWFydGluIHZvbiBMw7Z3aXMgYW5kIEh5bmVrIFNjaGxhd2FjaworICBpbiA6aXNzdWU6YDQ0ODlgLikKKworCitzaWduYWwKKy0tLS0tLQorCisqIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBoYXMgbmV3IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+c2lnbmFsLnB0aHJlYWRfc2lnbWFza2A6IGZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZQorICAgIGNhbGxpbmcgdGhyZWFkIChDb250cmlidXRlZCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lIGluIDppc3N1ZTpgODQwN2ApIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5wdGhyZWFkX2tpbGxgOiBzZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWdwZW5kaW5nYDogZXhhbWluZSBwZW5kaW5nIGZ1bmN0aW9ucyA7CisgICogOmZ1bmM6YH5zaWduYWwuc2lnd2FpdGA6IHdhaXQgYSBzaWduYWwuCisgICogOmZ1bmM6YH5zaWduYWwuc2lnd2FpdGluZm9gOiB3YWl0IGZvciBhIHNpZ25hbCwgcmV0dXJuaW5nIGRldGFpbGVkCisgICAgaW5mb3JtYXRpb24gYWJvdXQgaXQuCisgICogOmZ1bmM6YH5zaWduYWwuc2lndGltZWR3YWl0YDogbGlrZSA6ZnVuYzpgfnNpZ25hbC5zaWd3YWl0aW5mb2AgYnV0IHdpdGggYQorICAgIHRpbWVvdXQuCisKKyogVGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyB0aGUgc2lnbmFsIG51bWJlciBhcyBhIHNpbmdsZSBieXRlIGluc3RlYWQgb2YKKyAgYSBudWwgYnl0ZSBpbnRvIHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yLiBTbyBpdCBpcyBwb3NzaWJsZSB0byB3YWl0IG1vcmUKKyAgdGhhbiBvbmUgc2lnbmFsIGFuZCBrbm93IHdoaWNoIHNpZ25hbHMgd2VyZSByYWlzZWQuCisKKyogOmZ1bmM6YHNpZ25hbC5zaWduYWxgIGFuZCA6ZnVuYzpgc2lnbmFsLnNpZ2ludGVycnVwdGAgcmFpc2UgYW4gT1NFcnJvciwKKyAgaW5zdGVhZCBvZiBhIFJ1bnRpbWVFcnJvcjogT1NFcnJvciBoYXMgYW4gZXJybm8gYXR0cmlidXRlLgorCisKK3NtdHBkCistLS0tLQorCitUaGUgOm1vZDpgc210cGRgIG1vZHVsZSBub3cgc3VwcG9ydHMgOnJmYzpgNTMyMWAgKGV4dGVuZGVkIFNNVFApIGFuZCA6cmZjOmAxODcwYAorKHNpemUgZXh0ZW5zaW9uKS4gIFBlciB0aGUgc3RhbmRhcmQsIHRoZXNlIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQgaWYgYW5kIG9ubHkKK2lmIHRoZSBjbGllbnQgaW5pdGlhdGVzIHRoZSBzZXNzaW9uIHdpdGggYW4gYGBFSExPYGAgY29tbWFuZC4KKworKEluaXRpYWwgYGBFTEhPYGAgc3VwcG9ydCBieSBBbGJlcnRvIFRyZXZpbm8uICBTaXplIGV4dGVuc2lvbiBieSBKdWhhbmEKK0phdWhpYWluZW4uICBTdWJzdGFudGlhbCBhZGRpdGlvbmFsIHdvcmsgb24gdGhlIHBhdGNoIGNvbnRyaWJ1dGVkIGJ5IE1pY2hlbGUKK09ycsO5IGFuZCBEYW4gQm9zd2VsbC4gIDppc3N1ZTpgODczOWApCisKKworc210cGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+c210cGxpYi5TTVRQYCwgOmNsYXNzOmB+c210cGxpYi5TTVRQX1NTTGAsIGFuZAorOmNsYXNzOmB+c210cGxpYi5MTVRQYCBjbGFzc2VzIG5vdyBhY2NlcHQgYSBgYHNvdXJjZV9hZGRyZXNzYGAga2V5d29yZCBhcmd1bWVudAordG8gc3BlY2lmeSB0aGUgYGAoaG9zdCwgcG9ydClgYCB0byB1c2UgYXMgdGhlIHNvdXJjZSBhZGRyZXNzIGluIHRoZSBiaW5kIGNhbGwKK3doZW4gY3JlYXRpbmcgdGhlIG91dGdvaW5nIHNvY2tldC4gIChDb250cmlidXRlZCBieSBQYXVsbyBTY2FyZGluZSBpbgorOmlzc3VlOmAxMTI4MWAuKQorCis6Y2xhc3M6YH5zbXRwbGliLlNNVFBgIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sLCBhbGxvd2luZyBhbgorYGBTTVRQYGAgaW5zdGFuY2UgdG8gYmUgdXNlZCBpbiBhIGBgd2l0aGBgIHN0YXRlbWVudC4gIChDb250cmlidXRlZAorYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMTI4OWAuKQorCitUaGUgOmNsYXNzOmB+c210cGxpYi5TTVRQX1NTTGAgY29uc3RydWN0b3IgYW5kIHRoZSA6bWV0aDpgfnNtdHBsaWIuU01UUC5zdGFydHRsc2AKK21ldGhvZCBub3cgYWNjZXB0IGFuIFNTTENvbnRleHQgcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlCitjaGFubmVsLiAgKENvbnRyaWJ1dGVkIGJ5IEthc3VuIEhlcmF0aCBpbiA6aXNzdWU6YDg4MDlgKQorCisKK3NvY2tldAorLS0tLS0tCisKKyogVGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzIG5vdyBleHBvc2VzIGFkZGl0aW9uYWwgbWV0aG9kcyB0byBwcm9jZXNzCisgIGFuY2lsbGFyeSBkYXRhIHdoZW4gc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtOgorCisgICogOmZ1bmM6YH5zb2NrZXQuc29ja2V0LnNlbmRtc2dgCisgICogOmZ1bmM6YH5zb2NrZXQuc29ja2V0LnJlY3Ztc2dgCisgICogOmZ1bmM6YH5zb2NrZXQuc29ja2V0LnJlY3Ztc2dfaW50b2AKKworICAoQ29udHJpYnV0ZWQgYnkgRGF2aWQgV2F0c29uIGluIDppc3N1ZTpgNjU2MGAsIGJhc2VkIG9uIGFuIGVhcmxpZXIgcGF0Y2ggYnkKKyAgSGVpa28gV3VuZHJhbSkKKworKiBUaGUgOmNsYXNzOmB+c29ja2V0LnNvY2tldGAgY2xhc3Mgbm93IHN1cHBvcnRzIHRoZSBQRl9DQU4gcHJvdG9jb2wgZmFtaWx5CisgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2tldGNhbiksIG9uIExpbnV4CisgIChodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yNTM0MjUpLgorCisgIChDb250cmlidXRlZCBieSBNYXR0aGlhcyBGdWNocywgdXBkYXRlZCBieSBUaWFnbyBHb27Dp2FsdmVzIGluIDppc3N1ZTpgMTAxNDFgKQorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIFBGX1JEUyBwcm90b2NvbCBmYW1pbHkKKyAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVsaWFibGVfRGF0YWdyYW1fU29ja2V0cyBhbmQKKyAgaHR0cDovL29zcy5vcmFjbGUuY29tL3Byb2plY3RzL3Jkcy8pLgorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIGBgUEZfU1lTVEVNYGAgcHJvdG9jb2wKKyAgZmFtaWx5IG9uIE9TIFguICAoQ29udHJpYnV0ZWQgYnkgTWljaGFlbCBHb2RlcmJhdWVyIGluIDppc3N1ZTpgMTM3NzdgLikKKworKiBOZXcgZnVuY3Rpb24gOmZ1bmM6YH5zb2NrZXQuc2V0aG9zdG5hbWVgIGFsbG93cyB0aGUgaG9zdG5hbWUgdG8gYmUgc2V0CisgIG9uIHVuaXggc3lzdGVtcyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGhhcyBzdWZmaWNpZW50IHByaXZpbGVnZXMuCisgIChDb250cmlidXRlZCBieSBSb3NzIExhZ2Vyd2FsbCBpbiA6aXNzdWU6YDEwODY2YC4pCisKKworc29ja2V0c2VydmVyCistLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXJgIG5vdyBoYXMgYW4gb3ZlcnJpZGFibGUgbWV0aG9kCis6bWV0aDpgfnNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNlcnZpY2VfYWN0aW9uc2AgdGhhdCBpcyBjYWxsZWQgYnkgdGhlCis6bWV0aDpgfnNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXJgIG1ldGhvZCBpbiB0aGUgc2VydmljZSBsb29wLgorOmNsYXNzOmB+c29ja2V0c2VydmVyLkZvcmtpbmdNaXhJbmAgbm93IHVzZXMgdGhpcyB0byBjbGVhbiB1cCB6b21iaWUKK2NoaWxkIHByb2Nlc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IEp1c3RpbiBXYXJrZW50aW4gaW4gOmlzc3VlOmAxMTEwOWAuKQorCisKK3NxbGl0ZTMKKy0tLS0tLS0KKworTmV3IDpjbGFzczpgc3FsaXRlMy5Db25uZWN0aW9uYCBtZXRob2QKKzptZXRoOmB+c3FsaXRlMy5Db25uZWN0aW9uLnNldF90cmFjZV9jYWxsYmFja2AgY2FuIGJlIHVzZWQgdG8gY2FwdHVyZSBhIHRyYWNlIG9mCithbGwgc3FsIGNvbW1hbmRzIHByb2Nlc3NlZCBieSBzcWxpdGUuICAoQ29udHJpYnV0ZWQgYnkgVG9yc3RlbiBMYW5kc2Nob2ZmCitpbiA6aXNzdWU6YDExNjg4YC4pCisKKworc3NsCistLS0KKworKiBUaGUgOm1vZDpgc3NsYCBtb2R1bGUgaGFzIHR3byBuZXcgcmFuZG9tIGdlbmVyYXRpb24gZnVuY3Rpb25zOgorCisgICogOmZ1bmM6YH5zc2wuUkFORF9ieXRlc2A6IGdlbmVyYXRlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZworICAgIHBzZXVkby1yYW5kb20gYnl0ZXMuCisgICogOmZ1bmM6YH5zc2wuUkFORF9wc2V1ZG9fYnl0ZXNgOiBnZW5lcmF0ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDEyMDQ5YCkKKworKiBUaGUgOm1vZDpgc3NsYCBtb2R1bGUgbm93IGV4cG9zZXMgYSBmaW5lci1ncmFpbmVkIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKyAgaW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgdG8gaW5zcGVjdCB0aGUgdmFyaW91cyBraW5kcyBvZiBlcnJvcnMuCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDExMTgzYCkKKworKiA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgbm93IGFjY2VwdHMgYSAqcGFzc3dvcmQqIGFyZ3VtZW50CisgIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFkYW0gU2ltcGtpbnMgaW4gOmlzc3VlOmAxMjgwM2ApCisKKyogRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLCBib3RoIHJlZ3VsYXIgYW5kIEVsbGlwdGljIEN1cnZlLWJhc2VkLCBpcworICBub3cgc3VwcG9ydGVkIHRocm91Z2ggdGhlIDptZXRoOmB+c3NsLlNTTENvbnRleHQubG9hZF9kaF9wYXJhbXNgIGFuZAorICA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlYCBtZXRob2RzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMzYyNmAgYW5kIDppc3N1ZTpgMTM2MjdgKQorCisqIFNTTCBzb2NrZXRzIGhhdmUgYSBuZXcgOm1ldGg6YH5zc2wuU1NMU29ja2V0LmdldF9jaGFubmVsX2JpbmRpbmdgIG1ldGhvZAorICBhbGxvd2luZyB0aGUgaW1wbGVtZW50YXRpb24gb2YgY2VydGFpbiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIHN1Y2ggYXMKKyAgU0NSQU0tU0hBLTEtUExVUy4gIChDb250cmlidXRlZCBieSBKYWNlayBLb25pZWN6bnkgaW4gOmlzc3VlOmAxMjU1MWApCisKKyogWW91IGNhbiBxdWVyeSB0aGUgU1NMIGNvbXByZXNzaW9uIGFsZ29yaXRobSB1c2VkIGJ5IGFuIFNTTCBzb2NrZXQsIHRoYW5rcworICB0byBpdHMgbmV3IDptZXRoOmB+c3NsLlNTTFNvY2tldC5jb21wcmVzc2lvbmAgbWV0aG9kLiAgVGhlIG5ldyBhdHRyaWJ1dGUKKyAgOmF0dHI6YH5zc2wuT1BfTk9fQ09NUFJFU1NJT05gIGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgY29tcHJlc3Npb24uCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDEzNjM0YCkKKworKiBTdXBwb3J0IGhhcyBiZWVuIGFkZGVkIGZvciB0aGUgTmV4dCBQcm9jb3RvbCBOZWdvdGlhdGlvbiBleHRlbnNpb24gdXNpbmcKKyAgdGhlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2AgbWV0aG9kLgorICAoQ29udHJpYnV0ZWQgYnkgQ29saW4gTWFyYyBpbiA6aXNzdWU6YDE0MjA0YCkKKworKiBTU0wgZXJyb3JzIGNhbiBub3cgYmUgaW50cm9zcGVjdGVkIG1vcmUgZWFzaWx5IHRoYW5rcyB0bworICA6YXR0cjpgfnNzbC5TU0xFcnJvci5saWJyYXJ5YCBhbmQgOmF0dHI6YH5zc2wuU1NMRXJyb3IucmVhc29uYCBhdHRyaWJ1dGVzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxNDgzN2ApCisKKyogVGhlIDpmdW5jOmB+c3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGVgIGZ1bmN0aW9uIG5vdyBzdXBwb3J0cyBJUHY2LgorICAoQ29udHJpYnV0ZWQgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpIGluIDppc3N1ZTpgMTE4MTFgLikKKworKiBOZXcgYXR0cmlidXRlIDphdHRyOmB+c3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRWAgYWxsb3dzIHNldHRpbmcKKyAgU1NMdjMgc2VydmVyIHNvY2tldHMgdG8gdXNlIHRoZSBzZXJ2ZXIncyBjaXBoZXIgb3JkZXJpbmcgcHJlZmVyZW5jZSByYXRoZXIKKyAgdGhhbiB0aGUgY2xpZW50J3MgKDppc3N1ZTpgMTM2MzVgKS4KKworCitzdGF0CistLS0tCisKK1RoZSB1bmRvY3VtZW50ZWQgdGFyZmlsZS5maWxlbW9kZSBmdW5jdGlvbiBoYXMgYmVlbiBtb3ZlZCB0bworOmZ1bmM6YHN0YXQuZmlsZW1vZGVgLiBJdCBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YKK3RoZSBmb3JtICctcnd4cnd4cnd4Jy4KKworKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTQ4MDdgKQorCisKK3N0cnVjdAorLS0tLS0tCisKK1RoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBub3cgc3VwcG9ydHMgYGBzc2l6ZV90YGAgYW5kIGBgc2l6ZV90YGAgdmlhIHRoZQorbmV3IGNvZGVzIGBgbmBgIGFuZCBgYE5gYCwgcmVzcGVjdGl2ZWx5LiAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91CitpbiA6aXNzdWU6YDMxNjNgLikKKworCitzdWJwcm9jZXNzCistLS0tLS0tLS0tCisKK0NvbW1hbmQgc3RyaW5ncyBjYW4gbm93IGJlIGJ5dGVzIG9iamVjdHMgb24gcG9zaXggcGxhdGZvcm1zLiAgKENvbnRyaWJ1dGVkIGJ5CitWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDg1MTNgLikKKworQSBuZXcgY29uc3RhbnQgOmRhdGE6YH5zdWJwcm9jZXNzLkRFVk5VTExgIGFsbG93cyBzdXBwcmVzc2luZyBvdXRwdXQgaW4gYQorcGxhdGZvcm0taW5kZXBlbmRlbnQgZmFzaGlvbi4gIChDb250cmlidXRlZCBieSBSb3NzIExhZ2Vyd2FsbCBpbgorOmlzc3VlOmA1ODcwYC4pCisKKworc3lzCistLS0KKworVGhlIDptb2Q6YHN5c2AgbW9kdWxlIGhhcyBhIG5ldyA6ZGF0YTpgfnN5cy50aHJlYWRfaW5mb2AgOnRlcm06YHN0cnVjdAorc2VxdWVuY2VgIGhvbGRpbmcgaW5mb3JtYXRpb25zIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24KKyg6aXNzdWU6YDExMjIzYCkuCisKKwordGFyZmlsZQorLS0tLS0tLQorCis6bW9kOmB0YXJmaWxlYCBub3cgc3VwcG9ydHMgYGBsem1hYGAgZW5jb2RpbmcgdmlhIHRoZSA6bW9kOmBsem1hYCBtb2R1bGUuCisoQ29udHJpYnV0ZWQgYnkgTGFycyBHdXN0w6RiZWwgaW4gOmlzc3VlOmA1Njg5YC4pCisKKwordGVtcGZpbGUKKy0tLS0tLS0tCisKKzpjbGFzczpgdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGVgXCdzCis6bWV0aDpgfnRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlLnRydWNhdGVgIG1ldGhvZCBub3cgYWNjZXB0cworYSBgYHNpemVgYCBwYXJhbWV0ZXIuICAoQ29udHJpYnV0ZWQgYnkgUnlhbiBLZWxseSBpbiA6aXNzdWU6YDk5NTdgLikKKworCit0ZXh0d3JhcAorLS0tLS0tLS0KKworVGhlIDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+dGV4dHdyYXAuaW5kZW50YCB0aGF0IG1ha2VzCitpdCBzdHJhaWdodGZvcndhcmQgdG8gYWRkIGEgY29tbW9uIHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcyBpbiBhIGJsb2NrCitvZiB0ZXh0ICAoOmlzc3VlOmAxMzg1N2ApLgorCisKK3RocmVhZGluZworLS0tLS0tLS0tCisKKzpjbGFzczpgdGhyZWFkaW5nLkNvbmRpdGlvbmAsIDpjbGFzczpgdGhyZWFkaW5nLlNlbWFwaG9yZWAsCis6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYCwgOmNsYXNzOmB0aHJlYWRpbmcuRXZlbnRgLCBhbmQKKzpjbGFzczpgdGhyZWFkaW5nLlRpbWVyYCwgYWxsIG9mIHdoaWNoIHVzZWQgdG8gYmUgZmFjdG9yeSBmdW5jdGlvbnMgcmV0dXJuaW5nIGEKK2NsYXNzIGluc3RhbmNlLCBhcmUgbm93IGNsYXNzZXMgYW5kIG1heSBiZSBzdWJjbGFzc2VkLiAoQ29udHJpYnV0ZWQgYnkgw4lyaWMKK0FyYXVqbyBpbiA6aXNzdWU6YDEwOTY4YCkuCisKK1RoZSA6Y2xhc3M6YHRocmVhZGluZy5UaHJlYWRgIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGEgYGBkYWVtb25gYCBrZXl3b3JkCithcmd1bWVudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBpbmhlcml0aW5nIHRoZSBgYGRlYW1vbmBgIGZsYWcKK3ZhbHVlIGZyb20gdGhlIHBhcmVudCB0aHJlYWQgKDppc3N1ZTpgNjA2NGApLgorCitUaGUgZm9ybWVybHkgcHJpdmF0ZSBmdW5jdGlvbiBgYF90aHJlYWQuZ2V0X2lkZW50YGAgaXMgbm93IGF2YWlsYWJsZSBhcyB0aGUKK3B1YmxpYyBmdW5jdGlvbiA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudGAuICBUaGlzIGVsaW1pbmF0ZXMgc2V2ZXJhbCBjYXNlcyBvZgorZGlyZWN0IGFjY2VzcyB0byB0aGUgYGBfdGhyZWFkYGAgbW9kdWxlIGluIHRoZSBzdGRsaWIuICBUaGlyZCBwYXJ0eSBjb2RlIHRoYXQKK3VzZWQgYGBfdGhyZWFkLmdldF9pZGVudGBgIHNob3VsZCBsaWtld2lzZSBiZSBjaGFuZ2VkIHRvIHVzZSB0aGUgbmV3IHB1YmxpYworaW50ZXJmYWNlLgorCisKK3RpbWUKKy0tLS0KKworVGhlIDpwZXA6YDQxOGAgYWRkZWQgbmV3IGZ1bmN0aW9ucyB0byB0aGUgOm1vZDpgdGltZWAgbW9kdWxlOgorCisqIDpmdW5jOmB+dGltZS5nZXRfY2xvY2tfaW5mb2A6IEdldCBpbmZvcm1hdGlvbiBvbiBhIGNsb2NrLgorKiA6ZnVuYzpgfnRpbWUubW9ub3RvbmljYDogTW9ub3RvbmljIGNsb2NrIChjYW5ub3QgZ28gYmFja3dhcmQpLCBub3QgYWZmZWN0ZWQKKyAgYnkgc3lzdGVtIGNsb2NrIHVwZGF0ZXMuCisqIDpmdW5jOmB+dGltZS5wZXJmX2NvdW50ZXJgOiBQZXJmb3JtYW5jZSBjb3VudGVyIHdpdGggdGhlIGhpZ2hlc3QgYXZhaWxhYmxlCisgIHJlc29sdXRpb24gdG8gbWVhc3VyZSBhIHNob3J0IGR1cmF0aW9uLgorKiA6ZnVuYzpgfnRpbWUucHJvY2Vzc190aW1lYDogU3VtIG9mIHRoZSBzeXN0ZW0gYW5kIHVzZXIgQ1BVIHRpbWUgb2YgdGhlCisgIGN1cnJlbnQgcHJvY2Vzcy4KKworT3RoZXIgbmV3IGZ1bmN0aW9uczoKKworKiA6ZnVuYzpgfnRpbWUuY2xvY2tfZ2V0cmVzYCwgOmZ1bmM6YH50aW1lLmNsb2NrX2dldHRpbWVgIGFuZAorICA6ZnVuYzpgfnRpbWUuY2xvY2tfc2V0dGltZWAgZnVuY3Rpb25zIHdpdGggYGBDTE9DS194eHhgYCBjb25zdGFudHMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDEwMjc4YCkKKworVG8gaW1wcm92ZSBjcm9zcyBwbGF0Zm9ybSBjb25zaXN0ZW5jeSwgOmZ1bmM6YH50aW1lLnNsZWVwYCBub3cgcmFpc2VzIGEKKzpleGM6YFZhbHVlRXJyb3JgIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgc2xlZXAgdmFsdWUuICBQcmV2aW91c2x5IHRoaXMgd2FzIGFuCitlcnJvciBvbiBwb3NpeCwgYnV0IHByb2R1Y2VkIGFuIGluZmluaXRlIHNsZWVwIG9uIFdpbmRvd3MuCisKKwordHlwZXMKKy0tLS0tCisKK0FkZCBhIG5ldyA6Y2xhc3M6YHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgIGNsYXNzOiBSZWFkLW9ubHkgcHJveHkgb2YgYSBtYXBwaW5nLgorKDppc3N1ZTpgMTQzODZgKQorCisKK1RoZSBuZXcgZnVuY3Rpb25zIGB0eXBlcy5uZXdfY2xhc3NgIGFuZCBgdHlwZXMucHJlcGFyZV9jbGFzc2AgcHJvdmlkZSBzdXBwb3J0Citmb3IgUEVQIDMxMTUgY29tcGxpYW50IGR5bmFtaWMgdHlwZSBjcmVhdGlvbi4gKDppc3N1ZTpgMTQ1ODhgKQorCisKK3VuaXR0ZXN0CistLS0tLS0tLQorCis6bWV0aDpgLmFzc2VydFJhaXNlc2AsIDptZXRoOmAuYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgLmFzc2VydFdhcm5zYCwgYW5kCis6bWV0aDpgLmFzc2VydFdhcm5zUmVnZXhgIG5vdyBhY2NlcHQgYSBrZXl3b3JkIGFyZ3VtZW50ICptc2cqIHdoZW4gdXNlZCBhcworY29udGV4dCBtYW5hZ2Vycy4gIChDb250cmlidXRlZCBieSBFemlvIE1lbG90dGkgYW5kIFdpbnN0b24gRXdlcnQgaW4KKzppc3N1ZTpgMTA3NzVgKQorCis6bWV0aDpgdW5pdHRlc3QuVGVzdENhc2UucnVuYCBub3cgcmV0dXJucyB0aGUgOmNsYXNzOmB+dW5pdHRlc3QuVGVzdFJlc3VsdGAKK29iamVjdC4KKworCit1cmxsaWIKKy0tLS0tLQorCitUaGUgOmNsYXNzOmB+dXJsbGliLnJlcXVlc3QuUmVxdWVzdGAgY2xhc3MsIG5vdyBhY2NlcHRzIGEgKm1ldGhvZCogYXJndW1lbnQKK3VzZWQgYnkgOm1ldGg6YH51cmxsaWIucmVxdWVzdC5SZXF1ZXN0LmdldF9tZXRob2RgIHRvIGRldGVybWluZSB3aGF0IEhUVFAgbWV0aG9kCitzaG91bGQgYmUgdXNlZC4gIEZvciBleGFtcGxlLCB0aGlzIHdpbGwgc2VuZCBhIGBgJ0hFQUQnYGAgcmVxdWVzdDo6CisKKyAgID4+PiB1cmxvcGVuKFJlcXVlc3QoJ2h0dHA6Ly93d3cucHl0aG9uLm9yZycsIG1ldGhvZD0nSEVBRCcpKQorCisoOmlzc3VlOmAxNjczMDA3YCkKKworCit3ZWJicm93c2VyCistLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB3ZWJicm93c2VyYCBtb2R1bGUgc3VwcG9ydHMgbW9yZSAiYnJvd3NlcnMiOiBHb29nbGUgQ2hyb21lIChuYW1lZAorOnByb2dyYW06YGNocm9tZWAsIDpwcm9ncmFtOmBjaHJvbWl1bWAsIDpwcm9ncmFtOmBjaHJvbWUtYnJvd3NlcmAgb3IKKzpwcm9ncmFtOmBjaHJvbWl1bS1icm93c2VyYCBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gYW5kIG9wZXJhdGluZyBzeXN0ZW0pLAorYW5kIHRoZSBnZW5lcmljIGxhdW5jaGVycyA6cHJvZ3JhbTpgeGRnLW9wZW5gLCBmcm9tIHRoZSBGcmVlRGVza3RvcC5vcmcKK3Byb2plY3QsIGFuZCA6cHJvZ3JhbTpgZ3Zmcy1vcGVuYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgVVJJIGhhbmRsZXIgZm9yIEdOT01FCiszLiAgKFRoZSBmb3JtZXIgY29udHJpYnV0ZWQgYnkgQXJuYXVkIENhbG1ldHRlcyBpbiA6aXNzdWU6YDEzNjIwYCwgdGhlIGxhdHRlcgorYnkgTWF0dGhpYXMgS2xvc2UgaW4gOmlzc3VlOmAxNDQ5M2ApCisKKworeG1sLmV0cmVlLkVsZW1lbnRUcmVlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgbW9kdWxlIG5vdyBpbXBvcnRzIGl0cyBDIGFjY2VsZXJhdG9yIGJ5CitkZWZhdWx0OyB0aGVyZSBpcyBubyBsb25nZXIgYSBuZWVkIHRvIGV4cGxpY2l0bHkgaW1wb3J0Cis6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYCAodGhpcyBtb2R1bGUgc3RheXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LAorYnV0IGlzIG5vdyBkZXByZWNhdGVkKS4gIEluIGFkZGl0aW9uLCAgdGhlIGBgaXRlcmBgIGZhbWlseSBvZiBtZXRob2RzIG9mCis6Y2xhc3M6YH54bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudGAgaGFzIGJlZW4gb3B0aW1pemVkIChyZXdyaXR0ZW4gaW4gQykuCitUaGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBoYXMgYWxzbyBiZWVuIGdyZWF0bHkgaW1wcm92ZWQgd2l0aCBhZGRlZCBleGFtcGxlcworYW5kIGEgbW9yZSBkZXRhaWxlZCByZWZlcmVuY2UuCisKKworemxpYgorLS0tLQorCitOZXcgYXR0cmlidXRlIDphdHRyOmB6bGliLkRlY29tcHJlc3MuZW9mYCBtYWtlcyBpdCBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaAorYmV0d2VlbiBhIHByb3Blcmx5LWZvcm1lZCBjb21wcmVzc2VkIHN0cmVhbSBhbmQgYW4gaW5jb21wbGV0ZSBvciB0cnVuY2F0ZWQgb25lLgorKENvbnRyaWJ1dGVkIGJ5IE5hZGVlbSBWYXdkYSBpbiA6aXNzdWU6YDEyNjQ2YC4pCisKK05ldyBhdHRyaWJ1dGUgOmF0dHI6YHpsaWIuWkxJQl9SVU5USU1FX1ZFUlNJT05gIHJlcG9ydHMgdGhlIHZlcnNpb24gc3RyaW5nIG9mCit0aGUgdW5kZXJseWluZyBgYHpsaWJgYCBsaWJyYXJ5IHRoYXQgaXMgbG9hZGVkIGF0IHJ1bnRpbWUuICAoQ29udHJpYnV0ZWQgYnkKK1RvcnN0ZW4gTGFuZHNjaG9mZiBpbiA6aXNzdWU6YDEyMzA2YC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCitNYWpvciBwZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgaGF2ZSBiZWVuIGFkZGVkOgorCisqIFRoYW5rcyB0byA6cGVwOmAzOTNgLCBzb21lIG9wZXJhdGlvbnMgb24gVW5pY29kZSBzdHJpbmdzIGhhdmUgYmVlbiBvcHRpbWl6ZWQ6CisKKyAgKiB0aGUgbWVtb3J5IGZvb3RwcmludCBpcyBkaXZpZGVkIGJ5IDIgdG8gNCBkZXBlbmRpbmcgb24gdGhlIHRleHQKKyAgKiBlbmNvZGUgYW4gQVNDSUkgc3RyaW5nIHRvIFVURi04IGRvZXNuJ3QgbmVlZCB0byBlbmNvZGUgY2hhcmFjdGVycyBhbnltb3JlLAorICAgIHRoZSBVVEYtOCByZXByZXNlbnRhdGlvbiBpcyBzaGFyZWQgd2l0aCB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24KKyAgKiB0aGUgVVRGLTggZW5jb2RlciBoYXMgYmVlbiBvcHRpbWl6ZWQKKyAgKiByZXBlYXRpbmcgYSBzaW5nbGUgQVNDSUkgbGV0dGVyIGFuZCBnZXR0aW5nIGEgc3Vic3RyaW5nIG9mIGEgQVNDSUkgc3RyaW5ncworICAgIGlzIDQgdGltZXMgZmFzdGVyCisKKyogVVRGLTggaXMgbm93IDJ4IHRvIDR4IGZhc3Rlci4gIFVURi0xNiBlbmNvZGluZyBpcyBub3cgdXAgdG8gMTB4IGZhc3Rlci4KKworICAoY29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSwgOmlzc3VlOmAxNDYyNGAsIDppc3N1ZTpgMTQ3MzhgIGFuZAorICA6aXNzdWU6YDE1MDI2YC4pCisKKworQnVpbGQgYW5kIEMgQVBJIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0NoYW5nZXMgdG8gUHl0aG9uJ3MgYnVpbGQgcHJvY2VzcyBhbmQgdG8gdGhlIEMgQVBJIGluY2x1ZGU6CisKKyogTmV3IDpwZXA6YDMxMThgIHJlbGF0ZWQgZnVuY3Rpb246CisKKyAgKiA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeWAKKworKiA6cGVwOmAzOTNgIGFkZGVkIG5ldyBVbmljb2RlIHR5cGVzLCBtYWNyb3MgYW5kIGZ1bmN0aW9uczoKKworICAqIEhpZ2gtbGV2ZWwgQVBJOgorCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnNgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRmluZENoYXJgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYCwgOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfTEVOR1RIYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfUmVhZENoYXJgLCA6YzpmdW5jOmBQeVVuaWNvZGVfV3JpdGVDaGFyYAorCisgICogTG93LWxldmVsIEFQSToKKworICAgICogOmM6dHlwZTpgUHlfVUNTMWAsIDpjOnR5cGU6YFB5X1VDUzJgLCA6Yzp0eXBlOmBQeV9VQ1M0YCB0eXBlcworICAgICogOmM6dHlwZTpgUHlBU0NJSU9iamVjdGAgYW5kIDpjOnR5cGU6YFB5Q29tcGFjdFVuaWNvZGVPYmplY3RgIHN0cnVjdHVyZXMKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRFlgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNGAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VDUzRDb3B5YAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9EQVRBYCwgOmM6bWFjcm86YFB5VW5pY29kZV8xQllURV9EQVRBYCwKKyAgICAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfMkJZVEVfREFUQWAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfNEJZVEVfREFUQWAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfS0lORGAgd2l0aCA6Yzp0eXBlOmBQeVVuaWNvZGVfS2luZGAgZW51bToKKyAgICAgIDpjOmRhdGE6YFB5VW5pY29kZV9XQ0hBUl9LSU5EYCwgOmM6ZGF0YTpgUHlVbmljb2RlXzFCWVRFX0tJTkRgLAorICAgICAgOmM6ZGF0YTpgUHlVbmljb2RlXzJCWVRFX0tJTkRgLCA6YzpkYXRhOmBQeVVuaWNvZGVfNEJZVEVfS0lORGAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRGAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRF9DSEFSYCwgOmM6bWFjcm86YFB5VW5pY29kZV9XUklURWAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUVgCisKKyogOmM6bWFjcm86YFB5QXJnX1BhcnNlVHVwbGVgIG5vdyBhY2NlcHRzIGEgOmNsYXNzOmBieXRlYXJyYXlgIGZvciB0aGUgYGBjYGAKKyAgZm9ybWF0ICg6aXNzdWU6YDEyMzgwYCkuCisKKworCitEZXByZWNhdGVkCis9PT09PT09PT09CisKK1Vuc3VwcG9ydGVkIE9wZXJhdGluZyBTeXN0ZW1zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPUy8yIGFuZCBWTVMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgZHVlIHRvIHRoZSBsYWNrIG9mIGEgbWFpbnRhaW5lci4KKworV2luZG93cyAyMDAwIGFuZCBXaW5kb3dzIHBsYXRmb3JtcyB3aGljaCBzZXQgYGBDT01TUEVDYGAgdG8gYGBjb21tYW5kLmNvbWBgCithcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBkdWUgdG8gbWFpbnRlbmFuY2UgYnVyZGVuLgorCitPU0Ygc3VwcG9ydCwgd2hpY2ggd2FzIGRlcHJlY2F0ZWQgaW4gMy4yLCBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQuCisKKworRGVwcmVjYXRlZCBQeXRob24gbW9kdWxlcywgZnVuY3Rpb25zIGFuZCBtZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBQYXNzaW5nIGEgbm9uLWVtcHR5IHN0cmluZyB0byBgYG9iamVjdC5fX2Zvcm1hdF9fKClgYCBpcyBkZXByZWNhdGVkLCBhbmQKKyAgd2lsbCBwcm9kdWNlIGEgOmV4YzpgVHlwZUVycm9yYCBpbiBQeXRob24gMy40ICg6aXNzdWU6YDk4NTZgKS4KKyogVGhlIGBgdW5pY29kZV9pbnRlcm5hbGBgIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYmVjYXVzZSBvZiB0aGUKKyAgOnBlcDpgMzkzYCwgdXNlIFVURi04LCBVVEYtMTYgKGBgdXRmLTE2LWxlYGAgb3IgYGB1dGYtMTYtYmVgYCksIG9yIFVURi0zMgorICAoYGB1dGYtMzItbGVgYCBvciBgYHV0Zi0zMi1iZWBgKQorKiA6bWV0aDpgZnRwbGliLkZUUC5ubHN0YCBhbmQgOm1ldGg6YGZ0cGxpYi5GVFAuZGlyYDogdXNlCisgIDptZXRoOmBmdHBsaWIuRlRQLm1sc2RgCisqIDpmdW5jOmBwbGF0Zm9ybS5wb3BlbmA6IHVzZSB0aGUgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlLiBDaGVjayBlc3BlY2lhbGx5CisgIHRoZSA6cmVmOmBzdWJwcm9jZXNzLXJlcGxhY2VtZW50c2Agc2VjdGlvbiAoOmlzc3VlOmAxMTM3N2ApLgorKiA6aXNzdWU6YDEzMzc0YDogVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdGhlIDptb2Q6YG9zYAorICBtb2R1bGUuIFVzZSBVbmljb2RlIGZpbGVuYW1lcywgaW5zdGVhZCBvZiBieXRlcyBmaWxlbmFtZXMsIHRvIG5vdCBkZXBlbmQgb24KKyAgdGhlIEFOU0kgY29kZSBwYWdlIGFueW1vcmUgYW5kIHRvIHN1cHBvcnQgYW55IGZpbGVuYW1lLgorKiA6aXNzdWU6YDEzOTg4YDogVGhlIDptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgIG1vZHVsZSBpcyBkZXByZWNhdGVkLiAgVGhlCisgIGFjY2VsZXJhdG9yIGlzIHVzZWQgYXV0b21hdGljYWxseSB3aGVuZXZlciBhdmFpbGFibGUuCisqIFRoZSBiZWhhdmlvdXIgb2YgOmZ1bmM6YHRpbWUuY2xvY2tgIGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtOiB1c2UgdGhlIG5ldworICA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgIG9yIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAgZnVuY3Rpb24gaW5zdGVhZCwKKyAgZGVwZW5kaW5nIG9uIHlvdXIgcmVxdWlyZW1lbnRzLCB0byBoYXZlIGEgd2VsbCBkZWZpbmVkIGJlaGF2aW91ci4KKyogVGhlIDpmdW5jOmBvcy5zdGF0X2Zsb2F0X3RpbWVzYCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgorKiA6bW9kOmBhYmNgIG1vZHVsZToKKworICAqIDpjbGFzczpgYWJjLmFic3RyYWN0cHJvcGVydHlgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSA6Y2xhc3M6YHByb3BlcnR5YAorICAgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgc3RhdGljbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisKKyogOm1vZDpgaW1wb3J0bGliYCBwYWNrYWdlOgorCisgICogOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnBhdGhfbXRpbWVgIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICAgIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX3N0YXRzYCBhcyBieXRlY29kZSBmaWxlcyBub3cgc3RvcmUKKyAgICBib3RoIHRoZSBtb2RpZmljYXRpb24gdGltZSBhbmQgc2l6ZSBvZiB0aGUgc291cmNlIGZpbGUgdGhlIGJ5dGVjb2RlIGZpbGUgd2FzCisgICAgY29tcGlsZWQgZnJvbS4KKworCisKKworCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdHlwZXMgb2YgdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IDpwZXA6YDM5M2AgYW5kIHdpbGwgYmUKK3JlbW92ZWQgaW4gUHl0aG9uIDQuIEFsbCBmdW5jdGlvbnMgdXNpbmcgdGhpcyB0eXBlIGFyZSBkZXByZWNhdGVkOgorCitVbmljb2RlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB1c2luZyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhbmQKKzpjOnR5cGU6YFB5X1VOSUNPREUqYCB0eXBlczoKKworKiA6YzptYWNybzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tV2lkZUNoYXJgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgCisqIDpjOm1hY3JvOmBQeVVuaWNvZGVfQVNfVU5JQ09ERWAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVgLAorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZ2AKKyogOmM6bWFjcm86YFB5VW5pY29kZV9BU19EQVRBYDogdXNlIDpjOm1hY3JvOmBQeVVuaWNvZGVfREFUQWAgd2l0aAorICA6YzptYWNybzpgUHlVbmljb2RlX1JFQURgIGFuZCA6YzptYWNybzpgUHlVbmljb2RlX1dSSVRFYAorKiA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9TSVpFYCwgOmM6ZnVuYzpgUHlVbmljb2RlX0dldFNpemVgOiB1c2UKKyAgOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfTEVOR1RIYCBvciA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYAorKiA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9EQVRBX1NJWkVgOiB1c2UKKyAgYGBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICogUHlVbmljb2RlX0tJTkQoc3RyKWBgIChvbmx5IHdvcmsgb24gcmVhZHkKKyAgc3RyaW5ncykKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUNvcHlgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNENvcHlgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TWF4YAorCisKK0Z1bmN0aW9ucyBhbmQgbWFjcm9zIG1hbmlwdWxhdGluZyBQeV9VTklDT0RFKiBzdHJpbmdzOgorCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmxlbmA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYCBvcgorICA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNhdGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnNgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0YAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjcHlgLCA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJuY3B5YCwKKyAgOmM6bWFjcm86YFB5X1VOSUNPREVfQ09QWWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnNgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNtcGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQ29tcGFyZWAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RybmNtcGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfVGFpbG1hdGNoYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjaHJgLCA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJyY2hyYDogdXNlCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9GaW5kQ2hhcmAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfRklMTGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRmlsbGAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfTUFUQ0hgCisKK0VuY29kZXJzOgorCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdGAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVURjdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEY4YDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEYzMmAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVURjE2YAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZTpgIHVzZQorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZTpgIHVzZQorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUFTQ0lJYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcGAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXBgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVNQkNTYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc01CQ1NTdHJpbmdgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZWAgKHdpdGggYGBDUF9BQ1BgYCBjb2RlX3BhZ2UpCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsYCwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJYAorCisKK0RlcHJlY2F0ZWQgZmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YGFycmF5YCBtb2R1bGUncyBgYCd1J2BgIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCityZW1vdmVkIGluIFB5dGhvbiA0IHRvZ2V0aGVyIHdpdGggdGhlIHJlc3Qgb2YgdGhlICg6Yzp0eXBlOmBQeV9VTklDT0RFYCkgQVBJLgorCisKK1BvcnRpbmcgdG8gUHl0aG9uIDMuMworPT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VjdGlvbiBsaXN0cyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjaGFuZ2VzIGFuZCBvdGhlciBidWdmaXhlcwordGhhdCBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHlvdXIgY29kZS4KKworLi4gX3BvcnRpbmdweXRob25jb2RlOgorCitQb3J0aW5nIFB5dGhvbiBjb2RlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gU2V0IHRoZSA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAKKyAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYGAwYGAgdG8gZGlzYWJsZSBoYXNoIHJhbmRvbWl6YXRpb24uIFNlZSBhbHNvIHRoZQorICA6bWV0aDpgb2JqZWN0Ll9faGFzaF9fYCBtZXRob2QuCisKKyogOmlzc3VlOmAxMjMyNmA6IE9uIExpbnV4LCBzeXMucGxhdGZvcm0gZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uCisgIGFueW1vcmUuIEl0IGlzIG5vdyBhbHdheXMgJ2xpbnV4JywgaW5zdGVhZCBvZiAnbGludXgyJyBvciAnbGludXgzJyBkZXBlbmRpbmcKKyAgb24gdGhlIExpbnV4IHZlcnNpb24gdXNlZCB0byBidWlsZCBQeXRob24uIFJlcGxhY2Ugc3lzLnBsYXRmb3JtID09ICdsaW51eDInCisgIHdpdGggc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4JyksIG9yIGRpcmVjdGx5IHN5cy5wbGF0Zm9ybSA9PSAnbGludXgnIGlmCisgIHlvdSBkb24ndCBuZWVkIHRvIHN1cHBvcnQgb2xkZXIgUHl0aG9uIHZlcnNpb25zLgorCisqIDppc3N1ZTpgMTM4NDdgLCA6aXNzdWU6YDE0MTgwYDogOm1vZDpgdGltZWAgYW5kIDptb2Q6YGRhdGV0aW1lYDoKKyAgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaXMgbm93IHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIGEKKyAgdGltZXN0YW1wIGlzIG91dCBvZiByYW5nZS4gOmV4YzpgT1NFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiBDIGZ1bmN0aW9ucworICA6YzpmdW5jOmBnbXRpbWVgIG9yIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbGVkLgorCisqIFRoZSBkZWZhdWx0IGZpbmRlcnMgdXNlZCBieSBpbXBvcnQgbm93IHV0aWxpemUgYSBjYWNoZSBvZiB3aGF0IGlzIGNvbnRhaW5lZAorICB3aXRoaW4gYSBzcGVjaWZpYyBkaXJlY3RvcnkuIElmIHlvdSBjcmVhdGUgYSBQeXRob24gc291cmNlIGZpbGUgb3Igc291cmNlbGVzcworICBieXRlY29kZSBmaWxlLCBtYWtlIHN1cmUgdG8gY2FsbCA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYCB0byBjbGVhcgorICBvdXQgdGhlIGNhY2hlIGZvciB0aGUgZmluZGVycyB0byBub3RpY2UgdGhlIG5ldyBmaWxlLgorCisqIDpleGM6YEltcG9ydEVycm9yYCBub3cgdXNlcyB0aGUgZnVsbCBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCB3YXMgYXR0ZW1wZWQgdG8KKyAgYmUgaW1wb3J0ZWQuIERvY3Rlc3RzIHRoYXQgY2hlY2sgSW1wb3J0RXJyb3JzJyBtZXNzYWdlIHdpbGwgbmVlZCB0byBiZQorICB1cGRhdGVkIHRvIHVzZSB0aGUgZnVsbCBuYW1lIG9mIHRoZSBtb2R1bGUgaW5zdGVhZCBvZiBqdXN0IHRoZSB0YWlsIG9mIHRoZQorICBuYW1lLgorCisqIFRoZSAqaW5kZXgqIGFyZ3VtZW50IHRvIDpmdW5jOmBfX2ltcG9ydF9fYCBub3cgZGVmYXVsdHMgdG8gMCBpbnN0ZWFkIG9mIC0xCisgIGFuZCBubyBsb25nZXIgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMuIEl0IHdhcyBhbiBvdmVyc2lnaHQgd2hlbiA6cGVwOmAzMjhgIHdhcworICBpbXBsZW1lbnRlZCB0aGF0IHRoZSBkZWZhdWx0IHZhbHVlIHJlbWFpbmVkIC0xLiBJZiB5b3UgbmVlZCB0byBjb250aW51ZSB0bworICBwZXJmb3JtIGEgcmVsYXRpdmUgaW1wb3J0IGZvbGxvd2VkIGJ5IGFuIGFic29sdXRlIGltcG9ydCwgdGhlbiBwZXJmb3JtIHRoZQorICByZWxhdGl2ZSBpbXBvcnQgdXNpbmcgYW4gaW5kZXggb2YgMSwgZm9sbG93ZWQgYnkgYW5vdGhlciBpbXBvcnQgdXNpbmcgYW4KKyAgaW5kZXggb2YgMC4gSXQgaXMgcHJlZmVycmVkLCB0aG91Z2gsIHRoYXQgeW91IHVzZQorICA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIHJhdGhlciB0aGFuIGNhbGwgOmZ1bmM6YF9faW1wb3J0X19gIGRpcmVjdGx5LgorCisqIDpmdW5jOmBfX2ltcG9ydF9fYCBubyBsb25nZXIgYWxsb3dzIG9uZSB0byB1c2UgYW4gaW5kZXggdmFsdWUgb3RoZXIgdGhhbiAwCisgIGZvciB0b3AtbGV2ZWwgbW9kdWxlcy4gRS5nLiBgYF9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpYGAgaXMgbm93IGFuIGVycm9yLgorCisqIEJlY2F1c2UgOmF0dHI6YHN5cy5tZXRhX3BhdGhgIGFuZCA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIG5vdyBoYXZlIGZpbmRlcnMgb24KKyAgdGhlbSBieSBkZWZhdWx0LCB5b3Ugd2lsbCBtb3N0IGxpa2VseSB3YW50IHRvIHVzZSA6bWV0aDpgbGlzdC5pbnNlcnRgIGluc3RlYWQKKyAgb2YgOm1ldGg6YGxpc3QuYXBwZW5kYCB0byBhZGQgdG8gdGhvc2UgbGlzdHMuCisKKyogQmVjYXVzZSBgYE5vbmVgYCBpcyBub3cgaW5zZXJ0ZWQgaW50byA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCBpZiB5b3UKKyAgYXJlIGNsZWFyaW5nIG91dCBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5IG9mIHBhdGhzIHRoYXQgZG8gbm90IGhhdmUgYQorICBmaW5kZXIsIHlvdSB3aWxsIG5lZWQgdG8gcmVtb3ZlIGtleXMgcGFpcmVkIHdpdGggdmFsdWVzIG9mIGBgTm9uZWBgICoqYW5kKioKKyAgOmNsYXNzOmBpbXAuTnVsbEltcG9ydGVyYCB0byBiZSBiYWNrd2FyZHMtY29tcGF0aWJsZS4gVGhpcyB3aWxsIGxlYWQgdG8gZXh0cmEKKyAgb3ZlcmhlYWQgb24gb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uIHRoYXQgcmUtaW5zZXJ0IGBgTm9uZWBgIGludG8KKyAgOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB3aGVyZSBpdCByZXBlc2VudHMgdGhlIHVzZSBvZiBpbXBsaWNpdAorICBmaW5kZXJzLCBidXQgc2VtYW50aWNhbGx5IGl0IHNob3VsZCBub3QgY2hhbmdlIGFueXRoaW5nLgorCisqIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIG5vIGxvbmdlciBzcGVjaWZpZXMgYSBgZmluZF9tb2R1bGUoKWAgYWJzdHJhY3QKKyAgbWV0aG9kIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZC4gSWYgeW91IHdlcmUgcmVseWluZyBvbiBzdWJjbGFzc2VzIHRvCisgIGltcGxlbWVudCB0aGF0IG1ldGhvZCwgbWFrZSBzdXJlIHRvIGNoZWNrIGZvciB0aGUgbWV0aG9kJ3MgZXhpc3RlbmNlIGZpcnN0LgorICBZb3Ugd2lsbCBwcm9iYWJseSB3YW50IHRvIGNoZWNrIGZvciBgZmluZF9sb2FkZXIoKWAgZmlyc3QsIHRob3VnaCwgaW4gdGhlCisgIGNhc2Ugb2Ygd29ya2luZyB3aXRoIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMgPHBhdGggZW50cnkgZmluZGVyPmAuCisKKyogOm1vZDpgcGtndXRpbGAgaGFzIGJlZW4gY29udmVydGVkIHRvIHVzZSA6bW9kOmBpbXBvcnRsaWJgIGludGVybmFsbHkuIFRoaXMKKyAgZWxpbWluYXRlcyBtYW55IGVkZ2UgY2FzZXMgd2hlcmUgdGhlIG9sZCBiZWhhdmlvdXIgb2YgdGhlIFBFUCAzMDIgaW1wb3J0CisgIGVtdWxhdGlvbiBmYWlsZWQgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiB0aGUgcmVhbCBpbXBvcnQgc3lzdGVtLiBUaGUKKyAgaW1wb3J0IGVtdWxhdGlvbiBpdHNlbGYgaXMgc3RpbGwgcHJlc2VudCwgYnV0IGlzIG5vdyBkZXByZWNhdGVkLiBUaGUKKyAgOmZ1bmM6YHBrZ3V0aWwuaXRlcl9pbXBvcnRlcnNgIGFuZCA6ZnVuYzpgcGtndXRpbC53YWxrX3BhY2thZ2VzYCBmdW5jdGlvbnMKKyAgc3BlY2lhbCBjYXNlIHRoZSBzdGFuZGFyZCBpbXBvcnQgaG9va3Mgc28gdGhleSBhcmUgc3RpbGwgc3VwcG9ydGVkIGV2ZW4KKyAgdGhvdWdoIHRoZXkgZG8gbm90IHByb3ZpZGUgdGhlIG5vbi1zdGFuZGFyZCBgYGl0ZXJfbW9kdWxlcygpYGAgbWV0aG9kLgorCisqIEEgbG9uZ3N0YW5kaW5nIFJGQy1jb21wbGlhbmNlIGJ1ZyAoOmlzc3VlOmAxMDc5YCkgaW4gdGhlIHBhcnNpbmcgZG9uZSBieQorICA6ZnVuYzpgZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXJgIGhhcyBiZWVuIGZpeGVkLiAgQ29kZSB0aGF0IHVzZXMgdGhlCisgIHN0YW5kYXJkIGlkaW9tIHRvIGNvbnZlcnQgZW5jb2RlZCBoZWFkZXJzIGludG8gdW5pY29kZQorICAoYGBzdHIobWFrZV9oZWFkZXIoZGVjb2RlX2hlYWRlcihoKSlgYCkgd2lsbCBzZWUgbm8gY2hhbmdlLCBidXQgY29kZSB0aGF0CisgIGxvb2tzIGF0IHRoZSBpbmRpdmlkdWFsIHR1cGxlcyByZXR1cm5lZCBieSBkZWNvZGVfaGVhZGVyIHdpbGwgc2VlIHRoYXQKKyAgd2hpdGVzcGFjZSB0aGF0IHByZWNlZGVzIG9yIGZvbGxvd3MgYGBBU0NJSWBgIHNlY3Rpb25zIGlzIG5vdyBpbmNsdWRlZCBpbiB0aGUKKyAgYGBBU0NJSWBgIHNlY3Rpb24uICBDb2RlIHRoYXQgYnVpbGRzIGhlYWRlcnMgdXNpbmcgYGBtYWtlX2hlYWRlcmBgIHNob3VsZAorICBhbHNvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aG91dCBjaGFuZ2UsIHNpbmNlIGBgbWFrZV9oZWFkZXJgYCBjb250aW51ZXMgdG8gYWRkCisgIHdoaXRlc3BhY2UgYmV0d2VlbiBgYEFTQ0lJYGAgYW5kIG5vbi1gYEFTQ0lJYGAgc2VjdGlvbnMgaWYgaXQgaXMgbm90IGFscmVhZHkKKyAgcHJlc2VudCBpbiB0aGUgaW5wdXQgc3RyaW5ncy4KKworKiA6ZnVuYzpgZW1haWwudXRpbHMuZm9ybWF0YWRkcmAgbm93IGRvZXMgdGhlIGNvcnJlY3QgY29udGVudCB0cmFuc2ZlcgorICBlbmNvZGluZyB3aGVuIHBhc3NlZCBub24tYGBBU0NJSWBgIGRpc3BsYXkgbmFtZXMuICBBbnkgY29kZSB0aGF0IGRlcGVuZGVkIG9uCisgIHRoZSBwcmV2aW91cyBidWdneSBiZWhhdmlvciB0aGF0IHByZXNlcnZlZCB0aGUgbm9uLWBgQVNDSUlgYCB1bmljb2RlIGluIHRoZQorICBmb3JtYXR0ZWQgb3V0cHV0IHN0cmluZyB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCAoOmlzc3VlOmAxNjkwNjA4YCkuCisKKyogOm1ldGg6YHBvcGxpYi5QT1AzLnF1aXRgIG1heSBub3cgcmFpc2UgcHJvdG9jb2wgZXJyb3JzIGxpa2UgYWxsIG90aGVyCisgIGBgcG9wbGliYGAgbWV0aG9kcy4gIENvZGUgdGhhdCBhc3N1bWVzIGBgcXVpdGBgIGRvZXMgbm90IHJhaXNlCisgIDpleGM6YHBvcGxpYi5lcnJvcl9wcm90b2AgZXJyb3JzIG1heSBuZWVkIHRvIGJlIGNoYW5nZWQgaWYgZXJyb3JzIG9uIGBgcXVpdGBgCisgIGFyZSBlbmNvdW50ZXJlZCBieSBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gKDppc3N1ZTpgMTEyOTFgKS4KKworKiBUaGUgYGBzdHJpY3RgYCBhcmd1bWVudCB0byA6Y2xhc3M6YGVtYWlsLnBhcnNlci5QYXJzZXJgLCBkZXByZWNhdGVkIHNpbmNlCisgIFB5dGhvbiAyLjQsIGhhcyBmaW5hbGx5IGJlZW4gcmVtb3ZlZC4KKworKiBUaGUgZGVwcmVjYXRlZCBtZXRob2QgYGB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRTYW1lRWxlbWVudHNgYCBoYXMgYmVlbgorICByZW1vdmVkLgorCisqIFRoZSBkZXByZWNhdGVkIHZhcmlhYmxlIGBgdGltZS5hY2NlcHQyZHllYXJgYCBoYXMgYmVlbiByZW1vdmVkLgorCisqIFRoZSBkZXByZWNhdGVkIGBgQ29udGV4dC5fY2xhbXBgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZQorICA6bW9kOmBkZWNpbWFsYCBtb2R1bGUuICBJdCB3YXMgcHJldmlvdXNseSByZXBsYWNlZCBieSB0aGUgcHVibGljIGF0dHJpYnV0ZQorICA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5jbGFtcGAuICAoU2VlIDppc3N1ZTpgODU0MGAuKQorCisqIFRoZSB1bmRvY3VtZW50ZWQgaW50ZXJuYWwgaGVscGVyIGNsYXNzIGBgU1NMRmFrZUZpbGVgYCBoYXMgYmVlbiByZW1vdmVkCisgIGZyb20gOm1vZDpgc210cGxpYmAsIHNpbmNlIGl0cyBmdW5jdGlvbmFsaXR5IGhhcyBsb25nIGJlZW4gcHJvdmlkZWQgZGlyZWN0bHkKKyAgYnkgOm1ldGg6YHNvY2tldC5zb2NrZXQubWFrZWZpbGVgLgorCisqIFBhc3NpbmcgYSBuZWdhdGl2ZSB2YWx1ZSB0byA6ZnVuYzpgdGltZS5zbGVlcGAgb24gV2luZG93cyBub3cgcmFpc2VzIGFuCisgIGVycm9yIGluc3RlYWQgb2Ygc2xlZXBpbmcgZm9yZXZlci4gIEl0IGhhcyBhbHdheXMgcmFpc2VkIGFuIGVycm9yIG9uIHBvc2l4LgorCisqIFRoZSBgYGFzdC5fX3ZlcnNpb25fX2BgIGNvbnN0YW50IGhhcyBiZWVuIHJlbW92ZWQuICBJZiB5b3UgbmVlZCB0bworICBtYWtlIGRlY2lzaW9ucyBhZmZlY3RlZCBieSB0aGUgQVNUIHZlcnNpb24sIHVzZSA6YXR0cjpgc3lzLnZlcnNpb25faW5mb2AKKyAgdG8gbWFrZSB0aGUgZGVjaXNpb24uCisKKyogQ29kZSB0aGF0IHVzZWQgdG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCB0aGUgOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUgdXNlZAorICBmYWN0b3J5IGZ1bmN0aW9ucyBieSBzdWJjbGFzc2luZyB0aGUgcHJpdmF0ZSBjbGFzc2VzIHdpbGwgbmVlZCB0byBjaGFuZ2UgdG8KKyAgc3ViY2xhc3MgdGhlIG5vdy1wdWJsaWMgY2xhc3Nlcy4KKworKiBUaGUgdW5kb2N1bWVudGVkIGRlYnVnZ2luZyBtYWNoaW5lcnkgaW4gdGhlIHRocmVhZGluZyBtb2R1bGUgaGFzIGJlZW4KKyAgcmVtb3ZlZCwgc2ltcGxpZnlpbmcgdGhlIGNvZGUuICBUaGlzIHNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBwcm9kdWN0aW9uCisgIGNvZGUsIGJ1dCBpcyBtZW50aW9uZWQgaGVyZSBpbiBjYXNlIGFueSBhcHBsaWNhdGlvbiBkZWJ1ZyBmcmFtZXdvcmtzIHdlcmUKKyAgaW50ZXJhY3Rpbmcgd2l0aCBpdCAoOmlzc3VlOmAxMzU1MGApLgorCisKK1BvcnRpbmcgQyBjb2RlCistLS0tLS0tLS0tLS0tLQorCisqIEluIHRoZSBjb3Vyc2Ugb2YgY2hhbmdlcyB0byB0aGUgYnVmZmVyIEFQSSB0aGUgdW5kb2N1bWVudGVkCisgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zbWFsbHRhYmxlYCBtZW1iZXIgb2YgdGhlCisgIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGhhcyBiZWVuIHJlbW92ZWQgYW5kIHRoZQorICBsYXlvdXQgb2YgdGhlIDpjOnR5cGU6YFB5TWVtb3J5Vmlld09iamVjdGAgaGFzIGNoYW5nZWQuCisKKyAgQWxsIGV4dGVuc2lvbnMgcmVseWluZyBvbiB0aGUgcmVsZXZhbnQgcGFydHMgaW4gYGBtZW1vcnlvYmplY3QuaGBgCisgIG9yIGBgb2JqZWN0LmhgYCBtdXN0IGJlIHJlYnVpbHQuCisKKyogRHVlIHRvIDpyZWY6YFBFUCAzOTMgPHBlcC0zOTM+YCwgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIHR5cGUgYW5kIGFsbAorICBmdW5jdGlvbnMgdXNpbmcgdGhpcyB0eXBlIGFyZSBkZXByZWNhdGVkIChidXQgd2lsbCBzdGF5IGF2YWlsYWJsZSBmb3IKKyAgYXQgbGVhc3QgZml2ZSB5ZWFycykuICBJZiB5b3Ugd2VyZSB1c2luZyBsb3ctbGV2ZWwgVW5pY29kZSBBUElzIHRvCisgIGNvbnN0cnVjdCBhbmQgYWNjZXNzIHVuaWNvZGUgb2JqZWN0cyBhbmQgeW91IHdhbnQgdG8gYmVuZWZpdCBvZiB0aGUKKyAgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gcHJvdmlkZWQgYnkgUEVQIDM5MywgeW91IGhhdmUgdG8gY29udmVydAorICB5b3VyIGNvZGUgdG8gdGhlIG5ldyA6ZG9jOmBVbmljb2RlIEFQSSA8Li4vYy1hcGkvdW5pY29kZT5gLgorCisgIEhvd2V2ZXIsIGlmIHlvdSBvbmx5IGhhdmUgYmVlbiB1c2luZyBoaWdoLWxldmVsIGZ1bmN0aW9ucyBzdWNoIGFzCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Db25jYXQoKWAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Kb2luYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpYCwgeW91ciBjb2RlIHdpbGwgYXV0b21hdGljYWxseSB0YWtlCisgIGFkdmFudGFnZSBvZiB0aGUgbmV3IHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLgorCisqIDpjOmZ1bmM6YFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyYCBub3cgcmV0dXJucyAtMSB1cG9uIGZhaWx1cmUuCisKKyogQXMgYSBuZWdhdGl2ZSB2YWx1ZSBmb3IgdGhlICpsZXZlbCogYXJndW1lbnQgdG8gOmZ1bmM6YF9faW1wb3J0X19gIGlzIG5vCisgIGxvbmdlciB2YWxpZCwgdGhlIHNhbWUgbm93IGhvbGRzIGZvciA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbGAuCisgIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSB2YWx1ZSBvZiAqbGV2ZWwqIHVzZWQgYnkKKyAgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXhgIGlzIG5vdyAwIGluc3RlYWQgb2YgLTEuCisKKworQnVpbGRpbmcgQyBleHRlbnNpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgcmFuZ2Ugb2YgcG9zc2libGUgZmlsZSBuYW1lcyBmb3IgQyBleHRlbnNpb25zIGhhcyBiZWVuIG5hcnJvd2VkLgorICBWZXJ5IHJhcmVseSB1c2VkIHNwZWxsaW5ncyBoYXZlIGJlZW4gc3VwcHJlc3NlZDogdW5kZXIgUE9TSVgsIGZpbGVzCisgIG5hbWVkIGBgeHh4bW9kdWxlLnNvYGAsIGBgeHh4bW9kdWxlLmFiaTMuc29gYCBhbmQKKyAgYGB4eHhtb2R1bGUuY3B5dGhvbi0qLnNvYGAgYXJlIG5vIGxvbmdlciByZWNvZ25pemVkIGFzIGltcGxlbWVudGluZworICB0aGUgYGB4eHhgYCBtb2R1bGUuICBJZiB5b3UgaGFkIGJlZW4gZ2VuZXJhdGluZyBzdWNoIGZpbGVzLCB5b3UgaGF2ZQorICB0byBzd2l0Y2ggdG8gdGhlIG90aGVyIHNwZWxsaW5ncyAoaS5lLiwgcmVtb3ZlIHRoZSBgYG1vZHVsZWBgIHN0cmluZworICBmcm9tIHRoZSBmaWxlIG5hbWVzKS4KKworICAoaW1wbGVtZW50ZWQgaW4gOmlzc3VlOmAxNDA0MGAuKQorCisKK0NvbW1hbmQgTGluZSBTd2l0Y2ggQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIC1RIGNvbW1hbmQtbGluZSBmbGFnIGFuZCByZWxhdGVkIGFydGlmYWN0cyBoYXZlIGJlZW4gcmVtb3ZlZC4gIENvZGUKKyAgY2hlY2tpbmcgc3lzLmZsYWdzLmRpdmlzaW9uX3dhcm5pbmcgd2lsbCBuZWVkIHVwZGF0aW5nLgorCisgICg6aXNzdWU6YDEwOTk4YCwgY29udHJpYnV0ZWQgYnkgw4lyaWMgQXJhdWpvLikKKworKiBXaGVuIDpwcm9ncmFtOmBweXRob25gIGlzIHN0YXJ0ZWQgd2l0aCA6b3B0aW9uOmAtU2AsIGBgaW1wb3J0IHNpdGVgYAorICB3aWxsIG5vIGxvbmdlciBhZGQgc2l0ZS1zcGVjaWZpYyBwYXRocyB0byB0aGUgbW9kdWxlIHNlYXJjaCBwYXRocy4gIEluCisgIHByZXZpb3VzIHZlcnNpb25zLCBpdCBkaWQuCisKKyAgKDppc3N1ZTpgMTE1OTFgLCBjb250cmlidXRlZCBieSBDYXJsIE1leWVyIHdpdGggZWRpdGlvbnMgYnkgw4lyaWMgQXJhdWpvLikKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy9jaGFuZ2Vsb2cucnN0IGIvRG9jL3doYXRzbmV3L2NoYW5nZWxvZy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlMmRhYgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy93aGF0c25ldy9jaGFuZ2Vsb2cucnN0CkBAIC0wLDAgKzEsNiBAQAorKysrKysrKysrCitDaGFuZ2Vsb2cKKysrKysrKysrKworCisuLiBtaXNjbmV3czo6IC4uLy4uL01pc2MvTkVXUworCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0IGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdAppbmRleCA4MjIwYmQyLi5iYzEyMDZiIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CisrKyBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKQEAgLTExLDYgKzExLDcgQEAKIC4uIHRvY3RyZWU6OgogICAgOm1heGRlcHRoOiAyCiAKKyAgIDMuMy5yc3QKICAgIDMuMi5yc3QKICAgIDMuMS5yc3QKICAgIDMuMC5yc3QKQEAgLTIyLDMgKzIzLDExIEBACiAgICAyLjIucnN0CiAgICAyLjEucnN0CiAgICAyLjAucnN0CisKK1RoZSAiQ2hhbmdlbG9nIiBpcyBhIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSA6c291cmNlOmBNaXNjL05FV1NgIHdoaWNoCitjb250YWlucyAqYWxsKiBub250cml2aWFsIGNoYW5nZXMgdG8gUHl0aG9uIGZvciB0aGUgY3VycmVudCB2ZXJzaW9uLgorCisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMgorCisgICBjaGFuZ2Vsb2cucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggY2VhNjhkZS4uZDdhYWZmZCAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMTMsNyArMTMsNyBAQAogIyBTdGFydCBzeW1ib2xzIGZvciB0aGUgZ3JhbW1hcjoKICMgICAgICAgc2luZ2xlX2lucHV0IGlzIGEgc2luZ2xlIGludGVyYWN0aXZlIHN0YXRlbWVudDsKICMgICAgICAgZmlsZV9pbnB1dCBpcyBhIG1vZHVsZSBvciBzZXF1ZW5jZSBvZiBjb21tYW5kcyByZWFkIGZyb20gYW4gaW5wdXQgZmlsZTsKLSMgICAgICAgZXZhbF9pbnB1dCBpcyB0aGUgaW5wdXQgZm9yIHRoZSBldmFsKCkgYW5kIGlucHV0KCkgZnVuY3Rpb25zLgorIyAgICAgICBldmFsX2lucHV0IGlzIHRoZSBpbnB1dCBmb3IgdGhlIGV2YWwoKSBmdW5jdGlvbnMuCiAjIE5COiBjb21wb3VuZF9zdG10IGluIHNpbmdsZV9pbnB1dCBpcyBmb2xsb3dlZCBieSBleHRyYSBORVdMSU5FIQogc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKIGZpbGVfaW5wdXQ6IChORVdMSU5FIHwgc3RtdCkqIEVORE1BUktFUgpAQCAtMTI5LDQgKzEyOSw1IEBACiAjIG5vdCB1c2VkIGluIGdyYW1tYXIsIGJ1dCBtYXkgYXBwZWFyIGluICJub2RlIiBwYXNzZWQgZnJvbSBQYXJzZXIgdG8gQ29tcGlsZXIKIGVuY29kaW5nX2RlY2w6IE5BTUUKIAoteWllbGRfZXhwcjogJ3lpZWxkJyBbdGVzdGxpc3RdCit5aWVsZF9leHByOiAneWllbGQnIFt5aWVsZF9hcmddCit5aWVsZF9hcmc6ICdmcm9tJyB0ZXN0IHwgdGVzdGxpc3QKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKaW5kZXggMGFkNzg4Yi4uN2FkNmNiMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24tYXN0LmgKKysrIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKQEAgLTM2LDYgKzM2LDggQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX2FsaWFzICphbGlhc190eTsKIAordHlwZWRlZiBzdHJ1Y3QgX3dpdGhpdGVtICp3aXRoaXRlbV90eTsKKwogCiBlbnVtIF9tb2Rfa2luZCB7TW9kdWxlX2tpbmQ9MSwgSW50ZXJhY3RpdmVfa2luZD0yLCBFeHByZXNzaW9uX2tpbmQ9MywKICAgICAgICAgICAgICAgICAgU3VpdGVfa2luZD00fTsKQEAgLTY0LDEwICs2Niw5IEBACiBlbnVtIF9zdG10X2tpbmQge0Z1bmN0aW9uRGVmX2tpbmQ9MSwgQ2xhc3NEZWZfa2luZD0yLCBSZXR1cm5fa2luZD0zLAogICAgICAgICAgICAgICAgICAgRGVsZXRlX2tpbmQ9NCwgQXNzaWduX2tpbmQ9NSwgQXVnQXNzaWduX2tpbmQ9NiwgRm9yX2tpbmQ9NywKICAgICAgICAgICAgICAgICAgIFdoaWxlX2tpbmQ9OCwgSWZfa2luZD05LCBXaXRoX2tpbmQ9MTAsIFJhaXNlX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBUcnlFeGNlcHRfa2luZD0xMiwgVHJ5RmluYWxseV9raW5kPTEzLCBBc3NlcnRfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIEltcG9ydF9raW5kPTE1LCBJbXBvcnRGcm9tX2tpbmQ9MTYsIEdsb2JhbF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgTm9ubG9jYWxfa2luZD0xOCwgRXhwcl9raW5kPTE5LCBQYXNzX2tpbmQ9MjAsIEJyZWFrX2tpbmQ9MjEsCi0gICAgICAgICAgICAgICAgICBDb250aW51ZV9raW5kPTIyfTsKKyAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTEyLCBBc3NlcnRfa2luZD0xMywgSW1wb3J0X2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTUsIEdsb2JhbF9raW5kPTE2LCBOb25sb2NhbF9raW5kPTE3LAorICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTE4LCBQYXNzX2tpbmQ9MTksIEJyZWFrX2tpbmQ9MjAsIENvbnRpbnVlX2tpbmQ9MjF9Owogc3RydWN0IF9zdG10IHsKICAgICAgICAgZW51bSBfc3RtdF9raW5kIGtpbmQ7CiAgICAgICAgIHVuaW9uIHsKQEAgLTEyOCw4ICsxMjksNyBAQAogICAgICAgICAgICAgICAgIH0gSWY7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgY29udGV4dF9leHByOwotICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKml0ZW1zOwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICAgICAgfSBXaXRoOwogICAgICAgICAgICAgICAgIApAQCAtMTQyLDEyICsxNDIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqaGFuZGxlcnM7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqb3JlbHNlOwotICAgICAgICAgICAgICAgIH0gVHJ5RXhjZXB0OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpmaW5hbGJvZHk7Ci0gICAgICAgICAgICAgICAgfSBUcnlGaW5hbGx5OworICAgICAgICAgICAgICAgIH0gVHJ5OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHRlc3Q7CkBAIC0xODQsMTAgKzE4MCwxMCBAQAogZW51bSBfZXhwcl9raW5kIHtCb29sT3Bfa2luZD0xLCBCaW5PcF9raW5kPTIsIFVuYXJ5T3Bfa2luZD0zLCBMYW1iZGFfa2luZD00LAogICAgICAgICAgICAgICAgICAgSWZFeHBfa2luZD01LCBEaWN0X2tpbmQ9NiwgU2V0X2tpbmQ9NywgTGlzdENvbXBfa2luZD04LAogICAgICAgICAgICAgICAgICAgU2V0Q29tcF9raW5kPTksIERpY3RDb21wX2tpbmQ9MTAsIEdlbmVyYXRvckV4cF9raW5kPTExLAotICAgICAgICAgICAgICAgICAgWWllbGRfa2luZD0xMiwgQ29tcGFyZV9raW5kPTEzLCBDYWxsX2tpbmQ9MTQsIE51bV9raW5kPTE1LAotICAgICAgICAgICAgICAgICAgU3RyX2tpbmQ9MTYsIEJ5dGVzX2tpbmQ9MTcsIEVsbGlwc2lzX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVfa2luZD0xOSwgU3Vic2NyaXB0X2tpbmQ9MjAsIFN0YXJyZWRfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIE5hbWVfa2luZD0yMiwgTGlzdF9raW5kPTIzLCBUdXBsZV9raW5kPTI0fTsKKyAgICAgICAgICAgICAgICAgIFlpZWxkX2tpbmQ9MTIsIFlpZWxkRnJvbV9raW5kPTEzLCBDb21wYXJlX2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBDYWxsX2tpbmQ9MTUsIE51bV9raW5kPTE2LCBTdHJfa2luZD0xNywgQnl0ZXNfa2luZD0xOCwKKyAgICAgICAgICAgICAgICAgIEVsbGlwc2lzX2tpbmQ9MTksIEF0dHJpYnV0ZV9raW5kPTIwLCBTdWJzY3JpcHRfa2luZD0yMSwKKyAgICAgICAgICAgICAgICAgIFN0YXJyZWRfa2luZD0yMiwgTmFtZV9raW5kPTIzLCBMaXN0X2tpbmQ9MjQsIFR1cGxlX2tpbmQ9MjV9Owogc3RydWN0IF9leHByIHsKICAgICAgICAgZW51bSBfZXhwcl9raW5kIGtpbmQ7CiAgICAgICAgIHVuaW9uIHsKQEAgLTI1Myw2ICsyNDksMTAgQEAKICAgICAgICAgICAgICAgICB9IFlpZWxkOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgICAgIH0gWWllbGRGcm9tOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX2ludF9zZXEgKm9wczsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpjb21wYXJhdG9yczsKQEAgLTI3NSw3ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgIH0gU3RyOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIHM7CiAgICAgICAgICAgICAgICAgfSBCeXRlczsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgewpAQCAtMzgzLDYgKzM4MywxMSBAQAogICAgICAgICBpZGVudGlmaWVyIGFzbmFtZTsKIH07CiAKK3N0cnVjdCBfd2l0aGl0ZW0geworICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKKyAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworfTsKKwogCiAjZGVmaW5lIE1vZHVsZShhMCwgYTEpIF9QeV9Nb2R1bGUoYTAsIGExKQogbW9kX3R5IF9QeV9Nb2R1bGUoYXNkbF9zZXEgKiBib2R5LCBQeUFyZW5hICphcmVuYSk7CkBAIC00MjEsMTggKzQyNiwxNiBAQAogI2RlZmluZSBJZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfSWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X0lmKGV4cHJfdHkgdGVzdCwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50IGxpbmVubywKICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIFdpdGgoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKLXN0bXRfdHkgX1B5X1dpdGgoZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgYXNkbF9zZXEgKiBib2R5LAotICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0KQorc3RtdF90eSBfUHlfV2l0aChhc2RsX3NlcSAqIGl0ZW1zLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFJhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1JhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkKIHN0bXRfdHkgX1B5X1JhaXNlKGV4cHJfdHkgZXhjLCBleHByX3R5IGNhdXNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgVHJ5RXhjZXB0KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9UcnlFeGNlcHQoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKLXN0bXRfdHkgX1B5X1RyeUV4Y2VwdChhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIFRyeUZpbmFsbHkoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfVHJ5RmluYWxseShhMCwgYTEsIGEyLCBhMywgYTQpCi1zdG10X3R5IF9QeV9UcnlGaW5hbGx5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludAotICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFRyeShhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgX1B5X1RyeShhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKK3N0bXRfdHkgX1B5X1RyeShhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLAorICAgICAgICAgICAgICAgIGFzZGxfc2VxICogZmluYWxib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEFzc2VydChhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9Bc3NlcnQoYTAsIGExLCBhMiwgYTMsIGE0KQogc3RtdF90eSBfUHlfQXNzZXJ0KGV4cHJfdHkgdGVzdCwgZXhwcl90eSBtc2csIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQ5MCw2ICs0OTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgWWllbGQoYTAsIGExLCBhMiwgYTMpIF9QeV9ZaWVsZChhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X1lpZWxkKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFlpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykKK2V4cHJfdHkgX1B5X1lpZWxkRnJvbShleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIENvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0NvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4cHJfdHkgX1B5X0NvbXBhcmUoZXhwcl90eSBsZWZ0LCBhc2RsX2ludF9zZXEgKiBvcHMsIGFzZGxfc2VxICogY29tcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC01MDIsNyArNTA4LDcgQEAKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfU3RyKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBCeXRlcyhhMCwgYTEsIGEyLCBhMykgX1B5X0J5dGVzKGEwLCBhMSwgYTIsIGEzKQotZXhwcl90eSBfUHlfQnl0ZXMoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CitleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBFbGxpcHNpcyhhMCwgYTEsIGEyKSBfUHlfRWxsaXBzaXMoYTAsIGExLCBhMikKIGV4cHJfdHkgX1B5X0VsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEF0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCkBAIC01NDcsNiArNTUzLDkgQEAKIGtleXdvcmRfdHkgX1B5X2tleXdvcmQoaWRlbnRpZmllciBhcmcsIGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgYWxpYXMoYTAsIGExLCBhMikgX1B5X2FsaWFzKGEwLCBhMSwgYTIpCiBhbGlhc190eSBfUHlfYWxpYXMoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyIGFzbmFtZSwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSB3aXRoaXRlbShhMCwgYTEsIGEyKSBfUHlfd2l0aGl0ZW0oYTAsIGExLCBhMikKK3dpdGhpdGVtX3R5IF9QeV93aXRoaXRlbShleHByX3R5IGNvbnRleHRfZXhwciwgZXhwcl90eSBvcHRpb25hbF92YXJzLCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKIAogUHlPYmplY3QqIFB5QVNUX21vZDJvYmoobW9kX3R5IHQpOwogbW9kX3R5IFB5QVNUX29iajJtb2QoUHlPYmplY3QqIGFzdCwgUHlBcmVuYSogYXJlbmEsIGludCBtb2RlKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IGQ2ZTQ3YzIuLmE3OGE3MjEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogCiAjaW5jbHVkZSAicHlwb3J0LmgiCisjaW5jbHVkZSAicHltYWNyby5oIgogCiAjaW5jbHVkZSAicHlhdG9taWMuaCIKIApAQCAtMTAwLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAid2FybmluZ3MuaCIKICNpbmNsdWRlICJ3ZWFrcmVmb2JqZWN0LmgiCiAjaW5jbHVkZSAic3RydWN0c2VxLmgiCisjaW5jbHVkZSAibmFtZXNwYWNlb2JqZWN0LmgiCiAKICNpbmNsdWRlICJjb2RlY3MuaCIKICNpbmNsdWRlICJweWVycm9ycy5oIgpAQCAtMTI1LDQzICsxMjcsNiBAQAogI2luY2x1ZGUgInB5c3RyY21wLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgImZpbGV1dGlscy5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qIF9QeV9NYW5nbGUgaXMgZGVmaW5lZCBpbiBjb21waWxlLmMgKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfTWFuZ2xlKFB5T2JqZWN0ICpwLCBQeU9iamVjdCAqbmFtZSk7Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwotI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQotCiAjaW5jbHVkZSAicHlmcGUuaCIKIAotLyogVGhlc2UgZGVmaW5pdGlvbnMgbXVzdCBtYXRjaCBjb3JyZXNwb25kaW5nIGRlZmluaXRpb25zIGluIGdyYW1pbml0LmguCi0gICBUaGVyZSdzIGNvZGUgaW4gY29tcGlsZS5jIHRoYXQgY2hlY2tzIHRoYXQgdGhleSBhcmUgdGhlIHNhbWUuICovCi0jZGVmaW5lIFB5X3NpbmdsZV9pbnB1dCAyNTYKLSNkZWZpbmUgUHlfZmlsZV9pbnB1dCAyNTcKLSNkZWZpbmUgUHlfZXZhbF9pbnB1dCAyNTgKLQotI2lmZGVmIEhBVkVfUFRICi0vKiBHTlUgcHRoIHVzZXItc3BhY2UgdGhyZWFkIHN1cHBvcnQgKi8KLSNpbmNsdWRlIDxwdGguaD4KLSNlbmRpZgotCi0vKiBEZWZpbmUgbWFjcm9zIGZvciBpbmxpbmUgZG9jdW1lbnRhdGlvbi4gKi8KLSNkZWZpbmUgUHlEb2NfVkFSKG5hbWUpIHN0YXRpYyBjaGFyIG5hbWVbXQotI2RlZmluZSBQeURvY19TVFJWQVIobmFtZSxzdHIpIFB5RG9jX1ZBUihuYW1lKSA9IFB5RG9jX1NUUihzdHIpCi0jaWZkZWYgV0lUSF9ET0NfU1RSSU5HUwotI2RlZmluZSBQeURvY19TVFIoc3RyKSBzdHIKLSNlbHNlCi0jZGVmaW5lIFB5RG9jX1NUUihzdHIpICIiCi0jZW5kaWYKLQogI2VuZGlmIC8qICFQeV9QWVRIT05fSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IDBmZTA5NTYuLjQ0YjVhZjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTcsNiArNyw3IEBACiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgogI2RlZmluZSBQeU9iamVjdF9DYWxsRnVuY3Rpb24gX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAogI2RlZmluZSBQeU9iamVjdF9DYWxsTWV0aG9kIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisjZGVmaW5lIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVAogI2VuZGlmCiAKIC8qIEFic3RyYWN0IE9iamVjdCBJbnRlcmZhY2UgKG1hbnkgdGhhbmtzIHRvIEppbSBGdWx0b24pICovCkBAIC0zMDcsMTEgKzMwOCwyMiBAQAogICAgICBQeXRob24gZXhwcmVzc2lvbjogby5tZXRob2QoYXJncykuCiAgICAgICAgKi8KIAorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICptZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKworICAgICAgIC8qCisgICAgICAgICBMaWtlIFB5T2JqZWN0X0NhbGxNZXRob2QsIGJ1dCBleHBlY3QgYSBfUHlfSWRlbnRpZmllciogYXMgdGhlCisgICAgICAgICBtZXRob2QgbmFtZS4KKyAgICAgICAqLworCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVChQeU9iamVjdCAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CkBAIC0zMjcsNiArMzM5LDEwIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOworICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKFB5T2JqZWN0ICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKwogCiAgICAgICAgLyoKICAgICAgQ2FsbCB0aGUgbWV0aG9kIG5hbWVkIG0gb2Ygb2JqZWN0IG8gd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgpAQCAtNTE5LDExICs1MzUsMTIgQEAKIAogCiAKKyAgICAgLyogSW1wbGVtZW50YXRpb24gaW4gbWVtb3J5b2JqZWN0LmMgKi8KICAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX1RvQ29udGlndW91cyh2b2lkICpidWYsIFB5X2J1ZmZlciAqdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBmb3J0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBvcmRlcik7CiAKICAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0Zyb21Db250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgdm9pZCAqYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBvcmRlcik7CiAKIAogICAgIC8qIENvcHkgbGVuIGJ5dGVzIG9mIGRhdGEgZnJvbSB0aGUgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkKQEAgLTU0Nyw3ICs1NjQsNyBAQAogICAgIC8qIENvcHkgdGhlIGRhdGEgZnJvbSB0aGUgc3JjIGJ1ZmZlciB0byB0aGUgYnVmZmVyIG9mIGRlc3RpbmF0aW9uCiAgICAgICovCiAKLSAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCk7CisgICAgIFB5QVBJX0ZVTkMoaW50KSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnQpOwogCiAKICAgICAgUHlBUElfRlVOQyh2b2lkKSBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW1zLApAQCAtNzYxLDIxICs3NzgsNiBAQAogICAgICBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5TnVtYmVyX0FzU3NpemVfdChQeU9iamVjdCAqbywgUHlPYmplY3QgKmV4Yyk7CiAKICAgICAgICAvKgotICAgICBSZXR1cm5zIHRoZSBJbnRlZ3JhbCBpbnN0YW5jZSBjb252ZXJ0ZWQgdG8gYW4gaW50LiBUaGUKLSAgICAgaW5zdGFuY2UgaXMgZXhwZWN0ZWQgdG8gYmUgaW50IG9yIGxvbmcgb3IgaGF2ZSBhbiBfX2ludF9fCi0gICAgIG1ldGhvZC4gU3RlYWxzIGludGVncmFsJ3MgcmVmZXJlbmNlLiBlcnJvcl9mb3JtYXQgd2lsbCBiZQotICAgICB1c2VkIHRvIGNyZWF0ZSB0aGUgVHlwZUVycm9yIGlmIGludGVncmFsIGlzbid0IGFjdHVhbGx5IGFuCi0gICAgIEludGVncmFsIGluc3RhbmNlLiBlcnJvcl9mb3JtYXQgc2hvdWxkIGJlIGEgZm9ybWF0IHN0cmluZwotICAgICB0aGF0IGNhbiBhY2NlcHQgYSBjaGFyKiBuYW1pbmcgaW50ZWdyYWwncyB0eXBlLgotICAgICAgICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlOdW1iZXJfQ29udmVydEludGVncmFsVG9JbnQoCi0gICAgICAgICBQeU9iamVjdCAqaW50ZWdyYWwsCi0gICAgICAgICBjb25zdCBjaGFyKiBlcnJvcl9mb3JtYXQpOwotI2VuZGlmCi0KLSAgICAgICAvKgogICAgIFJldHVybnMgdGhlIG9iamVjdCBjb252ZXJ0ZWQgdG8gUHlfc3NpemVfdCBieSBnb2luZyB0aHJvdWdoCiAgICAgUHlOdW1iZXJfSW5kZXggZmlyc3QuICBJZiBhbiBvdmVyZmxvdyBlcnJvciBvY2N1cnMgd2hpbGUKICAgICBjb252ZXJ0aW5nIHRoZSBpbnQtb3ItbG9uZyB0byBQeV9zc2l6ZV90LCB0aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQKQEAgLTEwMTQsNyArMTAxNiw3IEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNlcXVlbmNlX0Zhc3QoUHlPYmplY3QgKm8sIGNvbnN0IGNoYXIqIG0pOwogICAgICAgIC8qCi0gICAgIFJldHVybnMgdGhlIHNlcXVlbmNlLCBvLCBhcyBhIHR1cGxlLCB1bmxlc3MgaXQncyBhbHJlYWR5IGEKKyAgICAgUmV0dXJucyB0aGUgc2VxdWVuY2UsIG8sIGFzIGEgbGlzdCwgdW5sZXNzIGl0J3MgYWxyZWFkeSBhCiAgICAgIHR1cGxlIG9yIGxpc3QuICBVc2UgUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNIHRvIGFjY2VzcyB0aGUKICAgICAgbWVtYmVycyBvZiB0aGlzIGxpc3QsIGFuZCBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUgdG8gZ2V0IGl0cyBsZW5ndGguCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYXNkbC5oIGIvSW5jbHVkZS9hc2RsLmgKaW5kZXggOWJiMDY5Ny4uNmJmNjE4ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc2RsLmgKKysrIGIvSW5jbHVkZS9hc2RsLmgKQEAgLTMsNiArMyw3IEBACiAKIHR5cGVkZWYgUHlPYmplY3QgKiBpZGVudGlmaWVyOwogdHlwZWRlZiBQeU9iamVjdCAqIHN0cmluZzsKK3R5cGVkZWYgUHlPYmplY3QgKiBieXRlczsKIHR5cGVkZWYgUHlPYmplY3QgKiBvYmplY3Q7CiAKIC8qIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFzZGxfYy5weSB3YXMgY29tcGxldGVseQpAQCAtMTQsMTcgKzE1LDE3IEBACiAvKiBYWFggQSBzZXF1ZW5jZSBzaG91bGQgYmUgdHlwZWQgc28gdGhhdCBpdHMgdXNlIGNhbiBiZSB0eXBlY2hlY2tlZC4gKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBzaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICB2b2lkICplbGVtZW50c1sxXTsKIH0gYXNkbF9zZXE7CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnQgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGVsZW1lbnRzWzFdOwogfSBhc2RsX2ludF9zZXE7CiAKLWFzZGxfc2VxICphc2RsX3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKLWFzZGxfaW50X3NlcSAqYXNkbF9pbnRfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOworYXNkbF9zZXEgKmFzZGxfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKK2FzZGxfaW50X3NlcSAqYXNkbF9pbnRfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKIAogI2RlZmluZSBhc2RsX3NlcV9HRVQoUywgSSkgKFMpLT5lbGVtZW50c1soSSldCiAjZGVmaW5lIGFzZGxfc2VxX0xFTihTKSAoKFMpID09IE5VTEwgPyAwIDogKFMpLT5zaXplKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hc3QuaCBiL0luY2x1ZGUvYXN0LmgKaW5kZXggYTAxNTMzNi4uMDU1ZThkYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc3QuaAorKysgYi9JbmNsdWRlL2FzdC5oCkBAIC00LDYgKzQsNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorUHlBUElfRlVOQyhpbnQpIFB5QVNUX1ZhbGlkYXRlKG1vZF90eSk7CiBQeUFQSV9GVU5DKG1vZF90eSkgUHlBU1RfRnJvbU5vZGUoCiAgICAgY29uc3Qgbm9kZSAqbiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc29iamVjdC5oIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCmluZGV4IGUxYWY4OWYuLmQ3YzdmZmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAorKysgYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKQEAgLTYyLDggKzYyLDYgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19Db25jYXRBbmREZWwoUHlPYmplY3QgKiosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUJ5dGVzX1Jlc2l6ZShQeU9iamVjdCAqKiwgUHlfc3NpemVfdCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ5dGVzX0Zvcm1hdExvbmcoUHlPYmplY3QqLCBpbnQsIGludCwKLQkJCQkJCSAgaW50LCBjaGFyKiosIGludCopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggZTc3M2I2YS4uN2M3ZTViZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTIyLDYgKzIyLDcgQEAKICAgICBQeU9iamVjdCAqY29fZnJlZXZhcnM7CS8qIHR1cGxlIG9mIHN0cmluZ3MgKGZyZWUgdmFyaWFibGUgbmFtZXMpICovCiAgICAgUHlPYmplY3QgKmNvX2NlbGx2YXJzOyAgICAgIC8qIHR1cGxlIG9mIHN0cmluZ3MgKGNlbGwgdmFyaWFibGUgbmFtZXMpICovCiAgICAgLyogVGhlIHJlc3QgZG9lc24ndCBjb3VudCBmb3IgaGFzaCBvciBjb21wYXJpc29ucyAqLworICAgIHVuc2lnbmVkIGNoYXIgKmNvX2NlbGwyYXJnOyAvKiBNYXBzIGNlbGwgdmFycyB3aGljaCBhcmUgYXJndW1lbnRzLiAqLwogICAgIFB5T2JqZWN0ICpjb19maWxlbmFtZTsJLyogdW5pY29kZSAod2hlcmUgaXQgd2FzIGxvYWRlZCBmcm9tKSAqLwogICAgIFB5T2JqZWN0ICpjb19uYW1lOwkJLyogdW5pY29kZSAobmFtZSwgZm9yIHJlZmVyZW5jZSkgKi8KICAgICBpbnQgY29fZmlyc3RsaW5lbm87CQkvKiBmaXJzdCBzb3VyY2UgbGluZSBudW1iZXIgKi8KQEAgLTU3LDYgKzU4LDExIEBACiAKICNkZWZpbmUgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgIDB4NDAwMDAKIAorLyogVGhpcyB2YWx1ZSBpcyBmb3VuZCBpbiB0aGUgY29fY2VsbDJhcmcgYXJyYXkgd2hlbiB0aGUgYXNzb2NpYXRlZCBjZWxsCisgICB2YXJpYWJsZSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFuIGFyZ3VtZW50LiBUaGUgbWF4aW11bSBudW1iZXIgb2YKKyAgIGFyZ3VtZW50cyBpcyAyNTUgKGluZGV4ZWQgdXAgdG8gMjU0KSwgc28gMjU1IHdvcmsgYXMgYSBzcGVjaWFsIGZsYWcuKi8KKyNkZWZpbmUgQ09fQ0VMTF9OT1RfQU5fQVJHIDI1NQorCiAvKiBUaGlzIHNob3VsZCBiZSBkZWZpbmVkIGlmIGEgZnV0dXJlIHN0YXRlbWVudCBtb2RpZmllcyB0aGUgc3ludGF4LgogICAgRm9yIGV4YW1wbGUsIHdoZW4gYSBrZXl3b3JkIGlzIGFkZGVkLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZWNzLmggYi9JbmNsdWRlL2NvZGVjcy5oCmluZGV4IGRmZjA5ZTcuLjBkOWU5YjQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29kZWNzLmgKKysrIGIvSW5jbHVkZS9jb2RlY3MuaApAQCAtMTc0LDYgKzE3NCw4IEBACiAvKiByZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIChceCwgXHUgYW5kIFxVKSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4Yyk7CiAKK1B5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9oZXhkaWdpdHM7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBpbGUuaCBiL0luY2x1ZGUvY29tcGlsZS5oCmluZGV4IGJjNTNiMzkuLmFjMjYzNmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGlsZS5oCisrKyBiL0luY2x1ZGUvY29tcGlsZS5oCkBAIC0xLDcgKzEsNyBAQAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2lmbmRlZiBQeV9DT01QSUxFX0gKICNkZWZpbmUgUHlfQ09NUElMRV9ICiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICNpbmNsdWRlICJjb2RlLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzgsOSArMzgsMTkgQEAKICAgICBQeUFyZW5hICphcmVuYSk7CiBQeUFQSV9GVU5DKFB5RnV0dXJlRmVhdHVyZXMgKikgUHlGdXR1cmVfRnJvbUFTVChzdHJ1Y3QgX21vZCAqLCBjb25zdCBjaGFyICopOwogCisvKiBfUHlfTWFuZ2xlIGlzIGRlZmluZWQgaW4gY29tcGlsZS5jICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X01hbmdsZShQeU9iamVjdCAqcCwgUHlPYmplY3QgKm5hbWUpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotI2VuZGlmIC8qICFQeV9DT01QSUxFX0ggKi8KKwogI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCisvKiBUaGVzZSBkZWZpbml0aW9ucyBtdXN0IG1hdGNoIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbnMgaW4gZ3JhbWluaXQuaC4KKyAgIFRoZXJlJ3MgY29kZSBpbiBjb21waWxlLmMgdGhhdCBjaGVja3MgdGhhdCB0aGV5IGFyZSB0aGUgc2FtZS4gKi8KKyNkZWZpbmUgUHlfc2luZ2xlX2lucHV0IDI1NgorI2RlZmluZSBQeV9maWxlX2lucHV0IDI1NworI2RlZmluZSBQeV9ldmFsX2lucHV0IDI1OAorCisjZW5kaWYgLyogIVB5X0NPTVBJTEVfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAppbmRleCBjMzc5YjA4Li4xOTM0ZjNiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAorKysgYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaApAQCAtNjMsOSArNjMsMTIgQEAKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGF0ZXRpbWUuaCBiL0luY2x1ZGUvZGF0ZXRpbWUuaAppbmRleCBkYjU3YTE4Li40MWUzYmNmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RhdGV0aW1lLmgKKysrIGIvSW5jbHVkZS9kYXRldGltZS5oCkBAIC0xMzUsNiArMTM1LDEyIEBACiAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbNF0gPDwgOCkgIHwgICAgICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs1XSkKIAorLyogQXBwbHkgZm9yIHRpbWUgZGVsdGEgaW5zdGFuY2VzICovCisjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMobykgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+ZGF5cykKKyNkZWZpbmUgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUyhvKSAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEqKW8pLT5zZWNvbmRzKQorI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORFMobykgICAgICAgICAgICBcCisgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPm1pY3Jvc2Vjb25kcykKKwogCiAvKiBEZWZpbmUgc3RydWN0dXJlIGZvciBDIEFQSS4gKi8KIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaAppbmRleCA2NDZiM2NjLi5lMmJhOTdmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCkBAIC00Miw2ICs0Miw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5VHlwZU9iamVjdCAqZF90eXBlOwogICAgIFB5T2JqZWN0ICpkX25hbWU7CisgICAgUHlPYmplY3QgKmRfcXVhbG5hbWU7CiB9IFB5RGVzY3JPYmplY3Q7CiAKICNkZWZpbmUgUHlEZXNjcl9DT01NT04gUHlEZXNjck9iamVjdCBkX2NvbW1vbgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBiMDI2Nzg1Li5kODlhYWM4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMTMsNzggKzEzLDIwIEBACiAgICB0dW5pbmcgZGljdGlvbmFyaWVzLCBhbmQgc2V2ZXJhbCBpZGVhcyBmb3IgcG9zc2libGUgb3B0aW1pemF0aW9ucy4KICovCiAKLS8qCi1UaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgotCi0xLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAotICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCi0gICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKLSAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KLQotMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAotICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IHVwb24KLSAgIGtleSBkZWxldGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgotCi0zLiBEdW1teS4gIG1lX2tleSA9PSBkdW1teSBhbmQgbWVfdmFsdWUgPT0gTlVMTAotICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCi0gICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCi0gICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCi0gICAoY2Fubm90IGhhdmUgbWVfa2V5IHNldCB0byBOVUxMKSwgZWxzZSB0aGUgcHJvYmUgc2VxdWVuY2UgaW4gY2FzZSBvZgotICAgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cgdGhleSB3ZXJlIG9uY2UgYWN0aXZlLgotCi1Ob3RlOiAucG9waXRlbSgpIGFidXNlcyB0aGUgbWVfaGFzaCBmaWVsZCBvZiBhbiBVbnVzZWQgb3IgRHVtbXkgc2xvdCB0bwotaG9sZCBhIHNlYXJjaCBmaW5nZXIuICBUaGUgbWVfaGFzaCBmaWVsZCBvZiBVbnVzZWQgb3IgRHVtbXkgc2xvdHMgaGFzIG5vCi1tZWFuaW5nIG90aGVyd2lzZS4KLSovCi0KLS8qIFB5RGljdF9NSU5TSVpFIGlzIHRoZSBtaW5pbXVtIHNpemUgb2YgYSBkaWN0aW9uYXJ5LiAgVGhpcyBtYW55IHNsb3RzIGFyZQotICogYWxsb2NhdGVkIGRpcmVjdGx5IGluIHRoZSBkaWN0IG9iamVjdCAoaW4gdGhlIG1hX3NtYWxsdGFibGUgbWVtYmVyKS4KLSAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4gIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZQotICogdGhhbiA1IGFjdGl2ZSBlbnRyaWVzIHRvIGxpdmUgaW4gbWFfc21hbGx0YWJsZSAoYW5kIHNvIGF2b2lkIGFuCi0gKiBhZGRpdGlvbmFsIG1hbGxvYyk7IGluc3RydW1lbnRhdGlvbiBzdWdnZXN0ZWQgdGhpcyBzdWZmaWNlcyBmb3IgdGhlCi0gKiBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbCBpbnN0YW5jZSBkaWN0cyBhbmQKLSAqIHVzdWFsbHktc21hbGwgZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KLSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotI2RlZmluZSBQeURpY3RfTUlOU0laRSA4CiAKK3R5cGVkZWYgc3RydWN0IF9kaWN0a2V5c29iamVjdCBQeURpY3RLZXlzT2JqZWN0OworCisvKiBUaGUgbWFfdmFsdWVzIHBvaW50ZXIgaXMgTlVMTCBmb3IgYSBjb21iaW5lZCB0YWJsZQorICogb3IgcG9pbnRzIHRvIGFuIGFycmF5IG9mIFB5T2JqZWN0KiBmb3IgYSBzcGxpdCB0YWJsZQorICovCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCi0gICAgUHlfaGFzaF90IG1lX2hhc2g7Ci0gICAgUHlPYmplY3QgKm1lX2tleTsKLSAgICBQeU9iamVjdCAqbWVfdmFsdWU7Ci19IFB5RGljdEVudHJ5OwotCi0vKgotVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZAotc2xvdCAoTlVMTCBrZXkpIGluIHRoZSB0YWJsZS4KLVRoZSB2YWx1ZSBtYV9maWxsIGlzIHRoZSBudW1iZXIgb2Ygbm9uLU5VTEwga2V5cyAoc3VtIG9mIEFjdGl2ZSBhbmQgRHVtbXkpOwotbWFfdXNlZCBpcyB0aGUgbnVtYmVyIG9mIG5vbi1OVUxMLCBub24tZHVtbXkga2V5cyAoPT0gdGhlIG51bWJlciBvZiBub24tTlVMTAotdmFsdWVzID09IHRoZSBudW1iZXIgb2YgQWN0aXZlIGl0ZW1zKS4KLVRvIGF2b2lkIHNsb3dpbmcgZG93biBsb29rdXBzIG9uIGEgbmVhci1mdWxsIHRhYmxlLCB3ZSByZXNpemUgdGhlIHRhYmxlIHdoZW4KLWl0J3MgdHdvLXRoaXJkcyBmdWxsLgotKi8KLXR5cGVkZWYgc3RydWN0IF9kaWN0b2JqZWN0IFB5RGljdE9iamVjdDsKLXN0cnVjdCBfZGljdG9iamVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X3NzaXplX3QgbWFfZmlsbDsgIC8qICMgQWN0aXZlICsgIyBEdW1teSAqLwotICAgIFB5X3NzaXplX3QgbWFfdXNlZDsgIC8qICMgQWN0aXZlICovCisgICAgUHlfc3NpemVfdCBtYV91c2VkOworICAgIFB5RGljdEtleXNPYmplY3QgKm1hX2tleXM7CisgICAgUHlPYmplY3QgKiptYV92YWx1ZXM7Cit9IFB5RGljdE9iamVjdDsKIAotICAgIC8qIFRoZSB0YWJsZSBjb250YWlucyBtYV9tYXNrICsgMSBzbG90cywgYW5kIHRoYXQncyBhIHBvd2VyIG9mIDIuCi0gICAgICogV2Ugc3RvcmUgdGhlIG1hc2sgaW5zdGVhZCBvZiB0aGUgc2l6ZSBiZWNhdXNlIHRoZSBtYXNrIGlzIG1vcmUKLSAgICAgKiBmcmVxdWVudGx5IG5lZWRlZC4KLSAgICAgKi8KLSAgICBQeV9zc2l6ZV90IG1hX21hc2s7Ci0KLSAgICAvKiBtYV90YWJsZSBwb2ludHMgdG8gbWFfc21hbGx0YWJsZSBmb3Igc21hbGwgdGFibGVzLCBlbHNlIHRvCi0gICAgICogYWRkaXRpb25hbCBtYWxsb2MnZWQgbWVtb3J5LiAgbWFfdGFibGUgaXMgbmV2ZXIgTlVMTCEgIFRoaXMgcnVsZQotICAgICAqIHNhdmVzIHJlcGVhdGVkIHJ1bnRpbWUgbnVsbC10ZXN0cyBpbiB0aGUgd29ya2hvcnNlIGdldGl0ZW0gYW5kCi0gICAgICogc2V0aXRlbSBjYWxscy4KLSAgICAgKi8KLSAgICBQeURpY3RFbnRyeSAqbWFfdGFibGU7Ci0gICAgUHlEaWN0RW50cnkgKigqbWFfbG9va3VwKShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCk7Ci0gICAgUHlEaWN0RW50cnkgbWFfc21hbGx0YWJsZVtQeURpY3RfTUlOU0laRV07Ci19OwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeURpY3RfVHlwZTsKQEAgLTEwOSwxMiArNTEsMTYgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X05ldyh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X05leHQoCiAgICAgUHlPYmplY3QgKm1wLCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeU9iamVjdCAqKnZhbHVlKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5RGljdEtleXNPYmplY3QgKl9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZW5lcmljR2V0RGljdChQeU9iamVjdCAqLCB2b2lkICopOwogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTmV4dCgKICAgICBQeU9iamVjdCAqbXAsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUsIFB5X2hhc2hfdCAqaGFzaCk7CiAjZW5kaWYKQEAgLTEyOSw2ICs3NSwxMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X05ld1ByZXNpemVkKFB5X3NzaXplX3QgbWludXNlZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeURpY3RfTWF5YmVVbnRyYWNrKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9IYXNPbmx5U3RyaW5nS2V5cyhQeU9iamVjdCAqbXApOworUHlfc3NpemVfdCBfUHlEaWN0X0tleXNTaXplKFB5RGljdEtleXNPYmplY3QgKmtleXMpOworI2RlZmluZSBfUHlEaWN0X0hhc1NwbGl0VGFibGUoZCkgKChkKS0+bWFfdmFsdWVzICE9IE5VTEwpCisKK1B5QVBJX0ZVTkMoaW50KSBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKICNlbmRpZgogCiAvKiBQeURpY3RfVXBkYXRlKG1wLCBvdGhlcikgaXMgZXF1aXZhbGVudCB0byBQeURpY3RfTWVyZ2UobXAsIG90aGVyLCAxKS4gKi8KQEAgLTE1Myw5ICsxMDMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitpbnQgX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5VHlwZU9iamVjdCAqdHAsIFB5T2JqZWN0ICoqZGljdHB0ciwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSk7CitQeU9iamVjdCAqX1B5RGljdF9Mb2FkR2xvYmFsKFB5RGljdE9iamVjdCAqLCBQeURpY3RPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHZvaWQpIF9QeURpY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2R0b2EuaCBiL0luY2x1ZGUvZHRvYS5oCmluZGV4IDgxOWJkMGYuLjliZmI2MjUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZHRvYS5oCisrKyBiL0luY2x1ZGUvZHRvYS5oCkBAIC04LDYgKzgsOCBAQAogUHlBUElfRlVOQyhjaGFyICopIF9QeV9kZ19kdG9hKGRvdWJsZSBkLCBpbnQgbW9kZSwgaW50IG5kaWdpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmRlY3B0LCBpbnQgKnNpZ24sIGNoYXIgKipydmUpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfZGdfZnJlZWR0b2EoY2hhciAqcyk7CitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X2RnX3N0ZG5hbihpbnQgc2lnbik7CitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X2RnX2luZmluaXR5KGludCBzaWduKTsKIAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZXJyY29kZS5oIGIvSW5jbHVkZS9lcnJjb2RlLmgKaW5kZXggNmJiM2NjMS4uNTk0NjY4NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9lcnJjb2RlLmgKKysrIGIvSW5jbHVkZS9lcnJjb2RlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgRV9FT0xTCQkyNAkvKiBFT0wgaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmcgKi8KICNkZWZpbmUgRV9MSU5FQ09OVAkyNQkvKiBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgYSBsaW5lIGNvbnRpbnVhdGlvbiAqLwogI2RlZmluZSBFX0lERU5USUZJRVIgICAgMjYgICAgICAvKiBJbnZhbGlkIGNoYXJhY3RlcnMgaW4gaWRlbnRpZmllciAqLworI2RlZmluZSBFX0JBRFNJTkdMRQkyNwkvKiBJbGwtZm9ybWVkIHNpbmdsZSBzdGF0ZW1lbnQgaW5wdXQgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGV1dGlscy5oIGIvSW5jbHVkZS9maWxldXRpbHMuaAppbmRleCAyZmFkZTliLi43YzE4Y2YyIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZpbGV1dGlscy5oCisrKyBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9kZXZpY2VfZW5jb2RpbmcoaW50KTsKKwogUHlBUElfRlVOQyh3Y2hhcl90ICopIF9QeV9jaGFyMndjaGFyKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCmluZGV4IDkwZjBhNDUuLmUyNDBmZGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaAorKysgYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKQEAgLTI3LDEyICsyNywxMiBAQAogI2RlZmluZSBQeV9SRVRVUk5fTkFOIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTkFOKQogI2VuZGlmCiAKLSNkZWZpbmUgUHlfUkVUVVJOX0lORihzaWduKSBkbwkJCQkJXAotCWlmIChjb3B5c2lnbigxLiwgc2lnbikgPT0gMS4pIHsJCQkJXAotCQlyZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKFB5X0hVR0VfVkFMKTsJXAotCX0gZWxzZSB7CQkJCQkJXAotCQlyZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKC1QeV9IVUdFX1ZBTCk7CVwKLQl9IHdoaWxlKDApCisjZGVmaW5lIFB5X1JFVFVSTl9JTkYoc2lnbikgZG8gICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGNvcHlzaWduKDEuLCBzaWduKSA9PSAxLikgeyAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfSFVHRV9WQUwpOyAgICBcCisgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoLVB5X0hVR0VfVkFMKTsgICBcCisgICAgfSB3aGlsZSgwKQogCiBQeUFQSV9GVU5DKGRvdWJsZSkgUHlGbG9hdF9HZXRNYXgodm9pZCk7CiBQeUFQSV9GVU5DKGRvdWJsZSkgUHlGbG9hdF9HZXRNaW4odm9pZCk7CkBAIC0xMTAsMTEgKzExMCwxNiBAQAogLyogZnJlZSBsaXN0IGFwaSAqLwogUHlBUElfRlVOQyhpbnQpIFB5RmxvYXRfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUqIG91dCk7CisKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLQkJCQkJICAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotCQkJCQkgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnJhbWVvYmplY3QuaCBiL0luY2x1ZGUvZnJhbWVvYmplY3QuaAppbmRleCAxZmI2NGJiLi5hYzJmNzkwIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mcmFtZW9iamVjdC5oCkBAIC05LDQ1ICs5LDQ1IEBACiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBiX3R5cGU7CQkJLyogd2hhdCBraW5kIG9mIGJsb2NrIHRoaXMgaXMgKi8KLSAgICBpbnQgYl9oYW5kbGVyOwkJLyogd2hlcmUgdG8ganVtcCB0byBmaW5kIGhhbmRsZXIgKi8KLSAgICBpbnQgYl9sZXZlbDsJCS8qIHZhbHVlIHN0YWNrIGxldmVsIHRvIHBvcCB0byAqLworICAgIGludCBiX3R5cGU7ICAgICAgICAgICAgICAgICAvKiB3aGF0IGtpbmQgb2YgYmxvY2sgdGhpcyBpcyAqLworICAgIGludCBiX2hhbmRsZXI7ICAgICAgICAgICAgICAvKiB3aGVyZSB0byBqdW1wIHRvIGZpbmQgaGFuZGxlciAqLworICAgIGludCBiX2xldmVsOyAgICAgICAgICAgICAgICAvKiB2YWx1ZSBzdGFjayBsZXZlbCB0byBwb3AgdG8gKi8KIH0gUHlUcnlCbG9jazsKIAogdHlwZWRlZiBzdHJ1Y3QgX2ZyYW1lIHsKICAgICBQeU9iamVjdF9WQVJfSEVBRAotICAgIHN0cnVjdCBfZnJhbWUgKmZfYmFjazsJLyogcHJldmlvdXMgZnJhbWUsIG9yIE5VTEwgKi8KLSAgICBQeUNvZGVPYmplY3QgKmZfY29kZTsJLyogY29kZSBzZWdtZW50ICovCi0gICAgUHlPYmplY3QgKmZfYnVpbHRpbnM7CS8qIGJ1aWx0aW4gc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCi0gICAgUHlPYmplY3QgKmZfZ2xvYmFsczsJLyogZ2xvYmFsIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLwotICAgIFB5T2JqZWN0ICpmX2xvY2FsczsJCS8qIGxvY2FsIHN5bWJvbCB0YWJsZSAoYW55IG1hcHBpbmcpICovCi0gICAgUHlPYmplY3QgKipmX3ZhbHVlc3RhY2s7CS8qIHBvaW50cyBhZnRlciB0aGUgbGFzdCBsb2NhbCAqLworICAgIHN0cnVjdCBfZnJhbWUgKmZfYmFjazsgICAgICAvKiBwcmV2aW91cyBmcmFtZSwgb3IgTlVMTCAqLworICAgIFB5Q29kZU9iamVjdCAqZl9jb2RlOyAgICAgICAvKiBjb2RlIHNlZ21lbnQgKi8KKyAgICBQeU9iamVjdCAqZl9idWlsdGluczsgICAgICAgLyogYnVpbHRpbiBzeW1ib2wgdGFibGUgKFB5RGljdE9iamVjdCkgKi8KKyAgICBQeU9iamVjdCAqZl9nbG9iYWxzOyAgICAgICAgLyogZ2xvYmFsIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLworICAgIFB5T2JqZWN0ICpmX2xvY2FsczsgICAgICAgICAvKiBsb2NhbCBzeW1ib2wgdGFibGUgKGFueSBtYXBwaW5nKSAqLworICAgIFB5T2JqZWN0ICoqZl92YWx1ZXN0YWNrOyAgICAvKiBwb2ludHMgYWZ0ZXIgdGhlIGxhc3QgbG9jYWwgKi8KICAgICAvKiBOZXh0IGZyZWUgc2xvdCBpbiBmX3ZhbHVlc3RhY2suICBGcmFtZSBjcmVhdGlvbiBzZXRzIHRvIGZfdmFsdWVzdGFjay4KICAgICAgICBGcmFtZSBldmFsdWF0aW9uIHVzdWFsbHkgTlVMTHMgaXQsIGJ1dCBhIGZyYW1lIHRoYXQgeWllbGRzIHNldHMgaXQKICAgICAgICB0byB0aGUgY3VycmVudCBzdGFjayB0b3AuICovCiAgICAgUHlPYmplY3QgKipmX3N0YWNrdG9wOwotICAgIFB5T2JqZWN0ICpmX3RyYWNlOwkJLyogVHJhY2UgZnVuY3Rpb24gKi8KKyAgICBQeU9iamVjdCAqZl90cmFjZTsgICAgICAgICAgLyogVHJhY2UgZnVuY3Rpb24gKi8KIAotCS8qIEluIGEgZ2VuZXJhdG9yLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc3dhcCBiZXR3ZWVuIHRoZSBleGNlcHRpb24KLQkgICBzdGF0ZSBpbnNpZGUgdGhlIGdlbmVyYXRvciBhbmQgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBvZiB0aGUgY2FsbGluZwotCSAgIGZyYW1lICh3aGljaCBzaG91bGRuJ3QgYmUgaW1wYWN0ZWQgd2hlbiB0aGUgZ2VuZXJhdG9yICJ5aWVsZHMiCi0JICAgZnJvbSBhbiBleGNlcHQgaGFuZGxlcikuCi0JICAgVGhlc2UgdGhyZWUgZmllbGRzIGV4aXN0IGV4YWN0bHkgZm9yIHRoYXQsIGFuZCBhcmUgdW51c2VkIGZvcgotCSAgIG5vbi1nZW5lcmF0b3IgZnJhbWVzLiBTZWUgdGhlIFNBVkVfRVhDX1NUQVRFIGFuZCBTV0FQX0VYQ19TVEFURQotCSAgIG1hY3JvcyBpbiBjZXZhbC5jIGZvciBkZXRhaWxzIG9mIHRoZWlyIHVzZS4gKi8KKyAgICAgICAgLyogSW4gYSBnZW5lcmF0b3IsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzd2FwIGJldHdlZW4gdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICBzdGF0ZSBpbnNpZGUgdGhlIGdlbmVyYXRvciBhbmQgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBvZiB0aGUgY2FsbGluZworICAgICAgICAgICBmcmFtZSAod2hpY2ggc2hvdWxkbid0IGJlIGltcGFjdGVkIHdoZW4gdGhlIGdlbmVyYXRvciAieWllbGRzIgorICAgICAgICAgICBmcm9tIGFuIGV4Y2VwdCBoYW5kbGVyKS4KKyAgICAgICAgICAgVGhlc2UgdGhyZWUgZmllbGRzIGV4aXN0IGV4YWN0bHkgZm9yIHRoYXQsIGFuZCBhcmUgdW51c2VkIGZvcgorICAgICAgICAgICBub24tZ2VuZXJhdG9yIGZyYW1lcy4gU2VlIHRoZSBTQVZFX0VYQ19TVEFURSBhbmQgU1dBUF9FWENfU1RBVEUKKyAgICAgICAgICAgbWFjcm9zIGluIGNldmFsLmMgZm9yIGRldGFpbHMgb2YgdGhlaXIgdXNlLiAqLwogICAgIFB5T2JqZWN0ICpmX2V4Y190eXBlLCAqZl9leGNfdmFsdWUsICpmX2V4Y190cmFjZWJhY2s7CiAKICAgICBQeVRocmVhZFN0YXRlICpmX3RzdGF0ZTsKLSAgICBpbnQgZl9sYXN0aTsJCS8qIExhc3QgaW5zdHJ1Y3Rpb24gaWYgY2FsbGVkICovCisgICAgaW50IGZfbGFzdGk7ICAgICAgICAgICAgICAgIC8qIExhc3QgaW5zdHJ1Y3Rpb24gaWYgY2FsbGVkICovCiAgICAgLyogQ2FsbCBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSBpbnN0ZWFkIG9mIHJlYWRpbmcgdGhpcyBmaWVsZAogICAgICAgIGRpcmVjdGx5LiAgQXMgb2YgMi4zIGZfbGluZW5vIGlzIG9ubHkgdmFsaWQgd2hlbiB0cmFjaW5nIGlzCiAgICAgICAgYWN0aXZlIChpLmUuIHdoZW4gZl90cmFjZSBpcyBzZXQpLiAgQXQgb3RoZXIgdGltZXMgd2UgdXNlCiAgICAgICAgUHlDb2RlX0FkZHIyTGluZSB0byBjYWxjdWxhdGUgdGhlIGxpbmUgZnJvbSB0aGUgY3VycmVudAogICAgICAgIGJ5dGVjb2RlIGluZGV4LiAqLwotICAgIGludCBmX2xpbmVubzsJCS8qIEN1cnJlbnQgbGluZSBudW1iZXIgKi8KLSAgICBpbnQgZl9pYmxvY2s7CQkvKiBpbmRleCBpbiBmX2Jsb2Nrc3RhY2sgKi8KKyAgICBpbnQgZl9saW5lbm87ICAgICAgICAgICAgICAgLyogQ3VycmVudCBsaW5lIG51bWJlciAqLworICAgIGludCBmX2libG9jazsgICAgICAgICAgICAgICAvKiBpbmRleCBpbiBmX2Jsb2Nrc3RhY2sgKi8KICAgICBQeVRyeUJsb2NrIGZfYmxvY2tzdGFja1tDT19NQVhCTE9DS1NdOyAvKiBmb3IgdHJ5IGFuZCBsb29wIGJsb2NrcyAqLwotICAgIFB5T2JqZWN0ICpmX2xvY2Fsc3BsdXNbMV07CS8qIGxvY2FscytzdGFjaywgZHluYW1pY2FsbHkgc2l6ZWQgKi8KKyAgICBQeU9iamVjdCAqZl9sb2NhbHNwbHVzWzFdOyAgLyogbG9jYWxzK3N0YWNrLCBkeW5hbWljYWxseSBzaXplZCAqLwogfSBQeUZyYW1lT2JqZWN0OwogCiAKQEAgLTc5LDYgKzc5LDggQEAKIAogUHlBUElfRlVOQyhpbnQpIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlGcmFtZV9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisKIC8qIFJldHVybiB0aGUgbGluZSBvZiBjb2RlIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLiAqLwogUHlBUElfRlVOQyhpbnQpIFB5RnJhbWVfR2V0TGluZU51bWJlcihQeUZyYW1lT2JqZWN0ICopOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBiL0luY2x1ZGUvZnVuY29iamVjdC5oCmluZGV4IDUyMWQ4N2IuLmNjMTQyNmMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnVuY29iamVjdC5oCisrKyBiL0luY2x1ZGUvZnVuY29iamVjdC5oCkBAIC0zMSw2ICszMSw3IEBACiAgICAgUHlPYmplY3QgKmZ1bmNfd2Vha3JlZmxpc3Q7CS8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiAgICAgUHlPYmplY3QgKmZ1bmNfbW9kdWxlOwkvKiBUaGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUsIGNhbiBiZSBhbnl0aGluZyAqLwogICAgIFB5T2JqZWN0ICpmdW5jX2Fubm90YXRpb25zOwkvKiBBbm5vdGF0aW9ucywgYSBkaWN0IG9yIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZnVuY19xdWFsbmFtZTsgICAgLyogVGhlIHF1YWxpZmllZCBuYW1lICovCiAKICAgICAvKiBJbnZhcmlhbnQ6CiAgICAgICogICAgIGZ1bmNfY2xvc3VyZSBjb250YWlucyB0aGUgYmluZGluZ3MgZm9yIGZ1bmNfY29kZS0+Y29fZnJlZXZhcnMsIHNvCkBAIC00NCw2ICs0NSw3IEBACiAjZGVmaW5lIFB5RnVuY3Rpb25fQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlGdW5jdGlvbl9UeXBlKQogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9HZXRDb2RlKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldEdsb2JhbHMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0TW9kdWxlKFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9nZW5vYmplY3QuaCBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKaW5kZXggZDI5ZmIxZS4uZWQ0NTFiYSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9nZW5vYmplY3QuaAorKysgYi9JbmNsdWRlL2dlbm9iamVjdC5oCkBAIC0xMSwyMCArMTEsMjAgQEAKIHN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCiAKIHR5cGVkZWYgc3RydWN0IHsKLQlQeU9iamVjdF9IRUFECi0JLyogVGhlIGdpXyBwcmVmaXggaXMgaW50ZW5kZWQgdG8gcmVtaW5kIG9mIGdlbmVyYXRvci1pdGVyYXRvci4gKi8KKyAgICBQeU9iamVjdF9IRUFECisgICAgLyogVGhlIGdpXyBwcmVmaXggaXMgaW50ZW5kZWQgdG8gcmVtaW5kIG9mIGdlbmVyYXRvci1pdGVyYXRvci4gKi8KIAotCS8qIE5vdGU6IGdpX2ZyYW1lIGNhbiBiZSBOVUxMIGlmIHRoZSBnZW5lcmF0b3IgaXMgImZpbmlzaGVkIiAqLwotCXN0cnVjdCBfZnJhbWUgKmdpX2ZyYW1lOworICAgIC8qIE5vdGU6IGdpX2ZyYW1lIGNhbiBiZSBOVUxMIGlmIHRoZSBnZW5lcmF0b3IgaXMgImZpbmlzaGVkIiAqLworICAgIHN0cnVjdCBfZnJhbWUgKmdpX2ZyYW1lOwogCi0JLyogVHJ1ZSBpZiBnZW5lcmF0b3IgaXMgYmVpbmcgZXhlY3V0ZWQuICovCi0JaW50IGdpX3J1bm5pbmc7Ci0gICAgCi0JLyogVGhlIGNvZGUgb2JqZWN0IGJhY2tpbmcgdGhlIGdlbmVyYXRvciAqLwotCVB5T2JqZWN0ICpnaV9jb2RlOworICAgIC8qIFRydWUgaWYgZ2VuZXJhdG9yIGlzIGJlaW5nIGV4ZWN1dGVkLiAqLworICAgIGNoYXIgZ2lfcnVubmluZzsKIAotCS8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCi0JUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OworICAgIC8qIFRoZSBjb2RlIG9iamVjdCBiYWNraW5nIHRoZSBnZW5lcmF0b3IgKi8KKyAgICBQeU9iamVjdCAqZ2lfY29kZTsKKworICAgIC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCisgICAgUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OwogfSBQeUdlbk9iamVjdDsKIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5R2VuX1R5cGU7CkBAIC0zNCw2ICszNCw4IEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlHZW5fTmV3KHN0cnVjdCBfZnJhbWUgKik7CiBQeUFQSV9GVU5DKGludCkgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKFB5R2VuT2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZShQeU9iamVjdCAqKik7CitQeU9iamVjdCAqX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ncmFtaW5pdC5oIGIvSW5jbHVkZS9ncmFtaW5pdC5oCmluZGV4IGUwZTI3ZjkuLjNlYzk0OWEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbWluaXQuaAorKysgYi9JbmNsdWRlL2dyYW1pbml0LmgKQEAgLTgxLDMgKzgxLDQgQEAKICNkZWZpbmUgY29tcF9pZiAzMzQKICNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzUKICNkZWZpbmUgeWllbGRfZXhwciAzMzYKKyNkZWZpbmUgeWllbGRfYXJnIDMzNwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbXBvcnQuaCBiL0luY2x1ZGUvaW1wb3J0LmgKaW5kZXggNDAwZTk3Yy4uZmRjMjczMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbXBvcnQuaAorKysgYi9JbmNsdWRlL2ltcG9ydC5oCkBAIC03LDYgKzcsOSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKTsKKworUHlNT0RJTklUX0ZVTkMgUHlJbml0X2ltcCh2b2lkKTsKIFB5QVBJX0ZVTkMobG9uZykgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlJbXBvcnRfR2V0TWFnaWNUYWcodm9pZCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKApAQCAtMjQsNyArMjcsMTYgQEAKICAgICBjaGFyICpwYXRobmFtZSwgICAgICAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgY2hhciAqY3BhdGhuYW1lICAgICAgICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lLAorICAgIFB5T2JqZWN0ICpjbywKKyAgICBQeU9iamVjdCAqcGF0aG5hbWUsCisgICAgUHlPYmplY3QgKmNwYXRobmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0dldE1vZHVsZURpY3Qodm9pZCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0FkZE1vZHVsZSgKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwpAQCAtMzUsNyArNDcsMTQgQEAKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbCgKLSAgICBjaGFyICpuYW1lLCAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICpuYW1lLCAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBQeU9iamVjdCAqZ2xvYmFscywKKyAgICBQeU9iamVjdCAqbG9jYWxzLAorICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwKKyAgICBpbnQgbGV2ZWwKKyAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZSwKICAgICBQeU9iamVjdCAqZ2xvYmFscywKICAgICBQeU9iamVjdCAqbG9jYWxzLAogICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwKQEAgLTQzLDEyICs2MiwxNSBAQAogICAgICk7CiAKICNkZWZpbmUgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgobiwgZywgbCwgZikgXAotICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG4sIGcsIGwsIGYsIC0xKQorICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG4sIGcsIGwsIGYsIDApCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfR2V0SW1wb3J0ZXIoUHlPYmplY3QgKnBhdGgpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnQoUHlPYmplY3QgKm5hbWUpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9SZWxvYWRNb2R1bGUoUHlPYmplY3QgKm0pOwogUHlBUElfRlVOQyh2b2lkKSBQeUltcG9ydF9DbGVhbnVwKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKGludCkgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKAogICAgIGNoYXIgKm5hbWUgICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CkBAIC02NSwxNyArODcsMTcgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X1JlSW5pdExvY2sodm9pZCk7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEJ1aWx0aW4oCi0gICAgY2hhciAqbmFtZSAgICAgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCisgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUoY2hhciAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KV9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oCiAgICAgUHlPYmplY3QgKm1vZCwKICAgICBjaGFyICpuYW1lICAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwotUHlBUElfRlVOQyhpbnQpX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZShQeU9iamVjdCosIGNoYXIgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludClfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoUHlPYmplY3QqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogc3RydWN0IF9pbml0dGFiIHsKLSAgICBjaGFyICpuYW1lOworICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAvKiBBU0NJSSBlbmNvZGVkIHN0cmluZyAqLwogICAgIFB5T2JqZWN0KiAoKmluaXRmdW5jKSh2b2lkKTsKIH07CiBQeUFQSV9EQVRBKHN0cnVjdCBfaW5pdHRhYiAqKSBQeUltcG9ydF9Jbml0dGFiOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbnRyY2hlY2suaCBiL0luY2x1ZGUvaW50cmNoZWNrLmgKaW5kZXggM2I2N2VkMC4uZjUzZmVlMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbnRyY2hlY2suaAorKysgYi9JbmNsdWRlL2ludHJjaGVjay5oCkBAIC04LDYgKzgsMTIgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0FmdGVyRm9yayh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19Jc01haW5UaHJlYWQodm9pZCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisvKiB3aW5kb3dzLmggaXMgbm90IGluY2x1ZGVkIGJ5IFB5dGhvbi5oIHNvIHVzZSB2b2lkKiBpbnN0ZWFkIG9mIEhBTkRMRSAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5T1NfU2lnaW50RXZlbnQodm9pZCk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xpc3RvYmplY3QuaCBiL0luY2x1ZGUvbGlzdG9iamVjdC5oCmluZGV4IDk0OWIxYTMuLmRjNjJhZWUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbGlzdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvbGlzdG9iamVjdC5oCkBAIC02Miw2ICs2Miw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TGlzdF9Bc1R1cGxlKFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMaXN0X0V4dGVuZChQeUxpc3RPYmplY3QgKiwgUHlPYmplY3QgKik7CisKK1B5QVBJX0ZVTkMoaW50KSBQeUxpc3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CiAjZW5kaWYKIAogLyogTWFjcm8sIHRyYWRpbmcgc2FmZXR5IGZvciBzcGVlZCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25naW50cmVwci5oIGIvSW5jbHVkZS9sb25naW50cmVwci5oCmluZGV4IGI5NGY3YjIuLjNhNDViYWQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAorKysgYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKQEAgLTYsNyArNiw3IEBACiAjZW5kaWYKIAogCi0vKiBUaGlzIGlzIHB1Ymxpc2hlZCBmb3IgdGhlIGJlbmVmaXQgb2YgImZyaWVuZCIgbWFyc2hhbC5jIG9ubHkuICovCisvKiBUaGlzIGlzIHB1Ymxpc2hlZCBmb3IgdGhlIGJlbmVmaXQgb2YgImZyaWVuZHMiIG1hcnNoYWwuYyBhbmQgX2RlY2ltYWwuYy4gKi8KIAogLyogUGFyYW1ldGVycyBvZiB0aGUgbG9uZyBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uLiAgVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQKICAgIHNldHMgb2YgcGFyYW1ldGVyczogb25lIHNldCBmb3IgMzAtYml0IGRpZ2l0cywgc3RvcmVkIGluIGFuIHVuc2lnbmVkIDMyLWJpdApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCBjMDk1NjVhLi5kNzQxZjFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtMTIsNyArMTIsNyBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5TG9uZ19UeXBlOwogCiAjZGVmaW5lIFB5TG9uZ19DaGVjayhvcCkgXAotCQlQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX0xPTkdfU1VCQ0xBU1MpCisgICAgICAgIFB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfTE9OR19TVUJDTEFTUykKICNkZWZpbmUgUHlMb25nX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlMb25nX1R5cGUpCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Mb25nKGxvbmcpOwpAQCAtODAsNiArODAsNyBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVN0cmluZyhjaGFyICosIGNoYXIgKiosIGludCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5pY29kZShQeV9VTklDT0RFKiwgUHlfc3NpemVfdCwgaW50KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KFB5T2JqZWN0ICp1LCBpbnQgYmFzZSk7CiAjZW5kaWYKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtMTIxLDggKzEyMiw4IEBACiAgICAgIGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIHRoZSBQeXRob24gbG9uZy4KICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgKLQljb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCi0JaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKKyAgICBpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CiAKIC8qIF9QeUxvbmdfQXNCeXRlQXJyYXk6IENvbnZlcnQgdGhlIGxlYXN0LXNpZ25pZmljYW50IDgqbiBiaXRzIG9mIGxvbmcKICAgIHYgdG8gYSBiYXNlLTI1NiBpbnRlZ2VyLCBzdG9yZWQgaW4gYXJyYXkgYnl0ZXMuICBOb3JtYWxseSByZXR1cm4gMCwKQEAgLTE0NCwxOSArMTQ1LDI4IEBACiAgICAgIGNhc2UsIGJ1dCBieXRlcyBob2xkcyB0aGUgbGVhc3Qtc2lnbmZpY2FudCBuIGJ5dGVzIG9mIHRoZSB0cnVlIHZhbHVlLgogKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0FzQnl0ZUFycmF5KFB5TG9uZ09iamVjdCogdiwKLQl1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCi0JaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOworICAgIHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKKyAgICBpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CiAKIAogLyogX1B5TG9uZ19Gb3JtYXQ6IENvbnZlcnQgdGhlIGxvbmcgdG8gYSBzdHJpbmcgb2JqZWN0IHdpdGggZ2l2ZW4gYmFzZSwKICAgIGFwcGVuZGluZyBhIGJhc2UgcHJlZml4IG9mIDBbYm94XSBpZiBiYXNlIGlzIDIsIDggb3IgMTYuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICphYSwgaW50IGJhc2UpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zvcm1hdChQeU9iamVjdCAqb2JqLCBpbnQgYmFzZSk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBpbnQgYmFzZSwKKyAgICBpbnQgYWx0ZXJuYXRlKTsKIAogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0JCQkJCSAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotCQkJCQkgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogLyogVGhlc2UgYXJlbid0IHJlYWxseSBwYXJ0IG9mIHRoZSBsb25nIG9iamVjdCwgYnV0IHRoZXkncmUgaGFuZHkuIFRoZQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBiL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKaW5kZXggNjJlY2JkNi4uYzJlMTE5NCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaAorKysgYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCkBAIC02LDY5ICs2LDY1IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlOworI2VuZGlmCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlNZW1vcnlWaWV3X1R5cGU7CiAKICNkZWZpbmUgUHlNZW1vcnlWaWV3X0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5TWVtb3J5Vmlld19UeXBlKQogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0vKiBHZXQgYSBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIFB5X2J1ZmZlciBvZiBhIG1lbW9yeXZpZXcgb2JqZWN0LiAqLworLyogR2V0IGEgcG9pbnRlciB0byB0aGUgbWVtb3J5dmlldydzIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyBidWZmZXIuICovCiAjZGVmaW5lIFB5TWVtb3J5Vmlld19HRVRfQlVGRkVSKG9wKSAoJigoUHlNZW1vcnlWaWV3T2JqZWN0ICopKG9wKSktPnZpZXcpCi0vKiBHZXQgYSBwb2ludGVyIHRvIHRoZSBQeU9iamVjdCBmcm9tIHdoaWNoIG9yaWdpbmF0ZXMgYSBtZW1vcnl2aWV3IG9iamVjdC4gKi8KKy8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QgKHRoaXMgbWF5IGJlIE5VTEwhKS4gKi8KICNkZWZpbmUgUHlNZW1vcnlWaWV3X0dFVF9CQVNFKG9wKSAoKChQeU1lbW9yeVZpZXdPYmplY3QgKikob3ApKS0+dmlldy5vYmopCiAjZW5kaWYKIAotCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpiYXNlLCAKLQkJCQkJCSAgaW50IGJ1ZmZlcnR5cGUsIAotCQkJCQkJICBjaGFyIGZvcnQpOwotCi0gICAgLyogUmV0dXJuIGEgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkgcmVwcmVzZW50aW5nIHRoZSBidWZmZXIKLSAgICAgICBmcm9tIGFuIG9iamVjdCBpbiBhIG1lbW9yeSB2aWV3IG9iamVjdC4gIElmIGEgY29weSBpcyBtYWRlIHRoZW4gdGhlCi0gICAgICAgYmFzZSBvYmplY3QgZm9yIHRoZSBtZW1vcnkgdmlldyB3aWxsIGJlIGEgKm5ldyogYnl0ZXMgb2JqZWN0LiAKLSAgICAgICAKLSAgICAgICBPdGhlcndpc2UsIHRoZSBiYXNlLW9iamVjdCB3aWxsIGJlIHRoZSBvYmplY3QgaXRzZWxmIGFuZCBubyAKLSAgICAgICBkYXRhLWNvcHlpbmcgd2lsbCBiZSBkb25lLiAKLQotICAgICAgIFRoZSBidWZmZXJ0eXBlIGFyZ3VtZW50IGNhbiBiZSBQeUJVRl9SRUFELCBQeUJVRl9XUklURSwKLSAgICAgICBQeUJVRl9TSEFET1cgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJldHVybmVkIGJ1ZmZlcgotICAgICAgIHNob3VsZCBiZSBSRUFET05MWSwgV1JJVEFCTEUsIG9yIHNldCB0byB1cGRhdGUgdGhlCi0gICAgICAgb3JpZ2luYWwgYnVmZmVyIGlmIGEgY29weSBtdXN0IGJlIG1hZGUuICBJZiBidWZmZXJ0eXBlIGlzCi0gICAgICAgUHlCVUZfV1JJVEUgYW5kIHRoZSBidWZmZXIgaXMgbm90IGNvbnRpZ3VvdXMgYW4gZXJyb3Igd2lsbAotICAgICAgIGJlIHJhaXNlZC4gIEluIHRoaXMgY2lyY3Vtc3RhbmNlLCB0aGUgdXNlciBjYW4gdXNlCi0gICAgICAgUHlCVUZfU0hBRE9XIHRvIGVuc3VyZSB0aGF0IGEgYSB3cml0YWJsZSB0ZW1wb3JhcnkKLSAgICAgICBjb250aWd1b3VzIGJ1ZmZlciBpcyByZXR1cm5lZC4gIFRoZSBjb250ZW50cyBvZiB0aGlzCi0gICAgICAgY29udGlndW91cyBidWZmZXIgd2lsbCBiZSBjb3BpZWQgYmFjayBpbnRvIHRoZSBvcmlnaW5hbAotICAgICAgIG9iamVjdCBhZnRlciB0aGUgbWVtb3J5dmlldyBvYmplY3QgaXMgZGVsZXRlZCBhcyBsb25nIGFzCi0gICAgICAgdGhlIG9yaWdpbmFsIG9iamVjdCBpcyB3cml0YWJsZSBhbmQgYWxsb3dzIHNldHRpbmcgYW4KLSAgICAgICBleGNsdXNpdmUgd3JpdGUgbG9jay4gSWYgdGhpcyBpcyBub3QgYWxsb3dlZCBieSB0aGUKLSAgICAgICBvcmlnaW5hbCBvYmplY3QsIHRoZW4gYSBCdWZmZXJFcnJvciBpcyByYWlzZWQuCi0gICAgICAgCi0gICAgICAgSWYgdGhlIG9iamVjdCBpcyBtdWx0aS1kaW1lbnNpb25hbCBhbmQgaWYgZm9ydHJhbiBpcyAnRicsCi0gICAgICAgdGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgdW5kZXJseWluZyBhcnJheSB3aWxsIHZhcnkgdGhlCi0gICAgICAgZmFzdGVzdCBpbiB0aGUgYnVmZmVyLiAgSWYgZm9ydHJhbiBpcyAnQycsIHRoZW4gdGhlIGxhc3QKLSAgICAgICBkaW1lbnNpb24gd2lsbCB2YXJ5IHRoZSBmYXN0ZXN0IChDLXN0eWxlIGNvbnRpZ3VvdXMpLiAgSWYKLSAgICAgICBmb3J0cmFuIGlzICdBJywgdGhlbiBpdCBkb2VzIG5vdCBtYXR0ZXIgYW5kIHlvdSB3aWxsIGdldAotICAgICAgIHdoYXRldmVyIHRoZSBvYmplY3QgZGVjaWRlcyBpcyBtb3JlIGVmZmljaWVudC4gIAotCi0gICAgICAgQSBuZXcgcmVmZXJlbmNlIGlzIHJldHVybmVkIHRoYXQgbXVzdCBiZSBERUNSRUYnZCB3aGVuIGZpbmlzaGVkLgotICAgICovCi0KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpOwotCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGNoYXIgKm1lbSwgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKmluZm8pOwotICAgIC8qIGNyZWF0ZSBuZXcgaWYgYnVmcHRyIGlzIE5VTEwgCi0gICAgICAgIHdpbGwgYmUgYSBuZXcgYnl0ZXNvYmplY3QgaW4gYmFzZSAqLwogI2VuZGlmCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBvcmRlcik7CiAKIAotLyogVGhlIHN0cnVjdCBpcyBkZWNsYXJlZCBoZXJlIHNvIHRoYXQgbWFjcm9zIGNhbiB3b3JrLCBidXQgaXQgc2hvdWxkbid0Ci0gICBiZSBjb25zaWRlcmVkIHB1YmxpYy4gRG9uJ3QgYWNjZXNzIHRob3NlIGZpZWxkcyBkaXJlY3RseSwgdXNlIHRoZSBtYWNyb3MKKy8qIFRoZSBzdHJ1Y3RzIGFyZSBkZWNsYXJlZCBoZXJlIHNvIHRoYXQgbWFjcm9zIGNhbiB3b3JrLCBidXQgdGhleSBzaG91bGRuJ3QKKyAgIGJlIGNvbnNpZGVyZWQgcHVibGljLiBEb24ndCBhY2Nlc3MgdGhlaXIgZmllbGRzIGRpcmVjdGx5LCB1c2UgdGhlIG1hY3JvcwogICAgYW5kIGZ1bmN0aW9ucyBpbnN0ZWFkISAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQgICAgMHgwMDEgIC8qIGFjY2VzcyB0byBleHBvcnRlciBibG9ja2VkICovCisjZGVmaW5lIF9QeV9NQU5BR0VEX0JVRkZFUl9GUkVFX0ZPUk1BVCAweDAwMiAgLyogZnJlZSBmb3JtYXQgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfYnVmZmVyIHZpZXc7CisgICAgaW50IGZsYWdzOyAgICAgICAgICAvKiBzdGF0ZSBmbGFncyAqLworICAgIFB5X3NzaXplX3QgZXhwb3J0czsgLyogbnVtYmVyIG9mIGRpcmVjdCBtZW1vcnl2aWV3IGV4cG9ydHMgKi8KKyAgICBQeV9idWZmZXIgbWFzdGVyOyAvKiBzbmFwc2hvdCBidWZmZXIgb2J0YWluZWQgZnJvbSB0aGUgb3JpZ2luYWwgZXhwb3J0ZXIgKi8KK30gX1B5TWFuYWdlZEJ1ZmZlck9iamVjdDsKKworCisvKiBzdGF0aWMgc3RvcmFnZSB1c2VkIGZvciBjYXN0aW5nIGJldHdlZW4gZm9ybWF0cyAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUIDMgLyogbXVzdCBiZSA+PSAzICovCisKKy8qIG1lbW9yeXZpZXcgc3RhdGUgZmxhZ3MgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQgICAgMHgwMDEgIC8qIGFjY2VzcyB0byBtYXN0ZXIgYnVmZmVyIGJsb2NrZWQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfQyAgICAgICAgICAgMHgwMDIgIC8qIEMtY29udGlndW91cyBsYXlvdXQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfRk9SVFJBTiAgICAgMHgwMDQgIC8qIEZvcnRyYW4gY29udGlndW91cyBsYXlvdXQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfU0NBTEFSICAgICAgMHgwMDggIC8qIHNjYWxhcjogbmRpbSA9IDAgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfUElMICAgICAgICAgMHgwMTAgIC8qIFBJTC1zdHlsZSBsYXlvdXQgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X1ZBUl9IRUFECisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsgLyogbWFuYWdlZCBidWZmZXIgKi8KKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgICAvKiBoYXNoIHZhbHVlIGZvciByZWFkLW9ubHkgdmlld3MgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgICAvKiBzdGF0ZSBmbGFncyAqLworICAgIFB5X3NzaXplX3QgZXhwb3J0czsgICAgICAgICAgIC8qIG51bWJlciBvZiBidWZmZXIgcmUtZXhwb3J0cyAqLworICAgIFB5X2J1ZmZlciB2aWV3OyAgICAgICAgICAgICAgIC8qIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyB2aWV3ICovCisgICAgY2hhciBmb3JtYXRbX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVF07IC8qIHVzZWQgZm9yIGNhc3RpbmcgKi8KKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CisgICAgUHlfc3NpemVfdCBvYl9hcnJheVsxXTsgICAgICAgLyogc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMgKi8KIH0gUHlNZW1vcnlWaWV3T2JqZWN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmggYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCmluZGV4IDdlNjdjMGIuLjNjYzJlYTkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaApAQCAtMTcsNyArMTcsNyBAQAogCiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uKShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0JCQkJCSAgICAgUHlPYmplY3QgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlOb0FyZ3NGdW5jdGlvbikoUHlPYmplY3QgKik7CiAKIFB5QVBJX0ZVTkMoUHlDRnVuY3Rpb24pIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uKFB5T2JqZWN0ICopOwpAQCAtMzAsMjQgKzMwLDI1IEBACiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKSBcCiAgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9tZXRoKQogI2RlZmluZSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKSBcCi0JKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX3NlbGYpCisgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9mbGFncyAmIE1FVEhfU1RBVElDID8gXAorICAgICAgICAgTlVMTCA6ICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX3NlbGYpCiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKSBcCi0JKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX2ZsYWdzKQorICAgICAgICAoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fbWwgLT4gbWxfZmxhZ3MpCiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fQ2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogc3RydWN0IFB5TWV0aG9kRGVmIHsKLSAgICBjb25zdCBjaGFyCSptbF9uYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24vbWV0aG9kICovCi0gICAgUHlDRnVuY3Rpb24gIG1sX21ldGg7CS8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLwotICAgIGludAkJIG1sX2ZsYWdzOwkvKiBDb21iaW5hdGlvbiBvZiBNRVRIX3h4eCBmbGFncywgd2hpY2ggbW9zdGx5Ci0JCQkJICAgZGVzY3JpYmUgdGhlIGFyZ3MgZXhwZWN0ZWQgYnkgdGhlIEMgZnVuYyAqLwotICAgIGNvbnN0IGNoYXIJKm1sX2RvYzsJLyogVGhlIF9fZG9jX18gYXR0cmlidXRlLCBvciBOVUxMICovCisgICAgY29uc3QgY2hhciAgKm1sX25hbWU7ICAgLyogVGhlIG5hbWUgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uL21ldGhvZCAqLworICAgIFB5Q0Z1bmN0aW9uIG1sX21ldGg7ICAgIC8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLworICAgIGludCAgICAgICAgIG1sX2ZsYWdzOyAgIC8qIENvbWJpbmF0aW9uIG9mIE1FVEhfeHh4IGZsYWdzLCB3aGljaCBtb3N0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZSB0aGUgYXJncyBleHBlY3RlZCBieSB0aGUgQyBmdW5jICovCisgICAgY29uc3QgY2hhciAgKm1sX2RvYzsgICAgLyogVGhlIF9fZG9jX18gYXR0cmlidXRlLCBvciBOVUxMICovCiB9OwogdHlwZWRlZiBzdHJ1Y3QgUHlNZXRob2REZWYgUHlNZXRob2REZWY7CiAKICNkZWZpbmUgUHlDRnVuY3Rpb25fTmV3KE1MLCBTRUxGKSBQeUNGdW5jdGlvbl9OZXdFeCgoTUwpLCAoU0VMRiksIE5VTEwpCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX05ld0V4KFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICosIAotCQkJCQkgUHlPYmplY3QgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogCiAvKiBGbGFnIHBhc3NlZCB0byBuZXdtZXRob2RvYmplY3QgKi8KIC8qICNkZWZpbmUgTUVUSF9PTERBUkdTICAweDAwMDAgICAtLSB1bnN1cHBvcnRlZCBub3cgKi8KQEAgLTgxLDYgKzgyLDExIEBACiAKIFB5QVBJX0ZVTkMoaW50KSBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0KHZvaWQpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeU1ldGhvZF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKaW5kZXggYmY2NDc4Zi4uZWNmMWRjYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2RzdXBwb3J0LmgKKysrIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKQEAgLTIzLDYgKzIzLDggQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIHZhX2xpc3QpOwogI2VuZGlmCiAKKy8qIER1ZSB0byBhIGdsaXRjaCBpbiAzLjIsIHRoZSBfU2l6ZVQgdmVyc2lvbnMgd2VyZW4ndCBleHBvcnRlZCBmcm9tIHRoZSBETEwuICovCisjaWYgIWRlZmluZWQoUFlfU1NJWkVfVF9DTEVBTikgfHwgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1BhcnNlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZVR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKSBQeV9GT1JNQVRfUEFSU0VUVVBMRShQeUFyZ19QYXJzZVR1cGxlLCAyLCAzKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKQEAgLTMxLDEzICszMywxNCBAQAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1VucGFja1R1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgUHlfc3NpemVfdCwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlfQnVpbGRWYWx1ZShjb25zdCBjaGFyICosIC4uLik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9CdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgLi4uKTsKKyNlbmRpZgogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19Ob0tleXdvcmRzKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqa3cpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19WYVBhcnNlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiBQeUFQSV9GVU5DKGludCkgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0KTsKKyNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9WYUJ1aWxkVmFsdWUoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIAogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZE9iamVjdChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2R1bGVvYmplY3QuaCBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKaW5kZXggN2IyYmYxYy4uODAxM2RkOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAorKysgYi9JbmNsdWRlL21vZHVsZW9iamVjdC5oCkBAIC0xMiwxMCArMTIsMTQgQEAKICNkZWZpbmUgUHlNb2R1bGVfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5TW9kdWxlX1R5cGUpCiAjZGVmaW5lIFB5TW9kdWxlX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlNb2R1bGVfVHlwZSkKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9OZXdPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUKKyAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9OZXcoCiAgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5TW9kdWxlX0dldEZpbGVuYW1lKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MTJmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCkBAIC0wLDAgKzEsMTcgQEAKKworLyogc2ltcGxlIG5hbWVzcGFjZSBvYmplY3QgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgTkFNRVNQQUNFT0JKRUNUX0gKKyNkZWZpbmUgTkFNRVNQQUNFT0JKRUNUX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5hbWVzcGFjZV9UeXBlOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFOQU1FU1BBQ0VPQkpFQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ub2RlLmggYi9JbmNsdWRlL25vZGUuaAppbmRleCA5ZjY3NjBjLi45OWMxM2Y3IDEwMDY0NAotLS0gYS9JbmNsdWRlL25vZGUuaAorKysgYi9JbmNsdWRlL25vZGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBSQ0hJTEQobiwgaSkJKENISUxEKG4sIE5DSChuKSArIGkpKQogI2RlZmluZSBUWVBFKG4pCQkoKG4pLT5uX3R5cGUpCiAjZGVmaW5lIFNUUihuKQkJKChuKS0+bl9zdHIpCisjZGVmaW5lIExJTkVOTyhuKSAgICAgICAoKG4pLT5uX2xpbmVubykKIAogLyogQXNzZXJ0IHRoYXQgdGhlIHR5cGUgb2YgYSBub2RlIGlzIHdoYXQgd2UgZXhwZWN0ICovCiAjZGVmaW5lIFJFUShuLCB0eXBlKSBhc3NlcnQoVFlQRShuKSA9PSAodHlwZSkpCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCA2MTIwYWI4MTMuLjM4N2NhZGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9vYmplY3QuaApAQCAtMTE3LDYgKzExNywzNSBAQAogI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgICAgICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZGVmaW5lIFB5X1NJWkUob2IpICAgICAgICAgICAgICgoKFB5VmFyT2JqZWN0Kikob2IpKS0+b2Jfc2l6ZSkKIAorLyoqKioqKioqKioqKioqKioqKioqKiBTdHJpbmcgTGl0ZXJhbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFRoaXMgc3RydWN0dXJlIGhlbHBzIG1hbmFnaW5nIHN0YXRpYyBzdHJpbmdzLiBUaGUgYmFzaWMgdXNhZ2UgZ29lcyBsaWtlIHRoaXM6CisgICBJbnN0ZWFkIG9mIGRvaW5nCisKKyAgICAgICByID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAiZm9vIiwgImFyZ3MiLCAuLi4pOworCisgICBkbworCisgICAgICAgX1B5X0lERU5USUZJRVIoZm9vKTsKKyAgICAgICAuLi4KKyAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvLCAmUHlJZF9mb28sICJhcmdzIiwgLi4uKTsKKworICAgUHlJZF9mb28gaXMgYSBzdGF0aWMgdmFyaWFibGUsIGVpdGhlciBvbiBibG9jayBsZXZlbCBvciBmaWxlIGxldmVsLiBPbiBmaXJzdAorICAgdXNhZ2UsIHRoZSBzdHJpbmcgImZvbyIgaXMgaW50ZXJuZWQsIGFuZCB0aGUgc3RydWN0dXJlcyBhcmUgbGlua2VkLiBPbiBpbnRlcnByZXRlcgorICAgc2h1dGRvd24sIGFsbCBzdHJpbmdzIGFyZSByZWxlYXNlZCAodGhyb3VnaCBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncykuCisKKyAgIEFsdGVybmF0aXZlbHksIF9QeV9zdGF0aWNfc3RyaW5nIGFsbG93cyB0byBjaG9vc2UgdGhlIHZhcmlhYmxlIG5hbWUuCisgICBfUHlVbmljb2RlX0Zyb21JZCByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5lZCBzdHJpbmcuCisgICBfUHlPYmplY3Rfe0dldCxTZXQsSGFzfUF0dHJJZCBhcmUgX19nZXRhdHRyX18gdmVyc2lvbnMgdXNpbmcgX1B5X0lkZW50aWZpZXIqLgorKi8KK3R5cGVkZWYgc3RydWN0IF9QeV9JZGVudGlmaWVyIHsKKyAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5leHQ7CisgICAgY29uc3QgY2hhciogc3RyaW5nOworICAgIFB5T2JqZWN0ICpvYmplY3Q7Cit9IF9QeV9JZGVudGlmaWVyOworCisjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nKHZhcm5hbWUsIHZhbHVlKSAgc3RhdGljIF9QeV9JZGVudGlmaWVyIHZhcm5hbWUgPSB7IDAsIHZhbHVlLCAwIH0KKyNkZWZpbmUgX1B5X0lERU5USUZJRVIodmFybmFtZSkgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF8jI3Zhcm5hbWUsICN2YXJuYW1lKQorCiAvKgogVHlwZSBvYmplY3RzIGNvbnRhaW4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBuYW1lICh0byBoZWxwIHNvbWV3aGF0CiBpbiBkZWJ1Z2dpbmcpLCB0aGUgYWxsb2NhdGlvbiBwYXJhbWV0ZXJzIChzZWUgUHlPYmplY3RfTmV3KCkgYW5kCkBAIC0xNTcsMTUgKzE4NiwxNiBAQAogICAgIFB5X3NzaXplX3QgKnNoYXBlOwogICAgIFB5X3NzaXplX3QgKnN0cmlkZXM7CiAgICAgUHlfc3NpemVfdCAqc3Vib2Zmc2V0czsKLSAgICBQeV9zc2l6ZV90IHNtYWxsdGFibGVbMl07ICAvKiBzdGF0aWMgc3RvcmUgZm9yIHNoYXBlIGFuZCBzdHJpZGVzIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uby1kaW1lbnNpb25hbCBidWZmZXJzLiAqLwogICAgIHZvaWQgKmludGVybmFsOwogfSBQeV9idWZmZXI7CiAKIHR5cGVkZWYgaW50ICgqZ2V0YnVmZmVycHJvYykoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGludCk7CiB0eXBlZGVmIHZvaWQgKCpyZWxlYXNlYnVmZmVycHJvYykoUHlPYmplY3QgKiwgUHlfYnVmZmVyICopOwogCi0gICAgLyogRmxhZ3MgZm9yIGdldHRpbmcgYnVmZmVycyAqLworLyogTWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucyAqLworI2RlZmluZSBQeUJVRl9NQVhfTkRJTSA2NAorCisvKiBGbGFncyBmb3IgZ2V0dGluZyBidWZmZXJzICovCiAjZGVmaW5lIFB5QlVGX1NJTVBMRSAwCiAjZGVmaW5lIFB5QlVGX1dSSVRBQkxFIDB4MDAwMQogLyogIHdlIHVzZWQgdG8gaW5jbHVkZSBhbiBFLCBiYWNrd2FyZHMgY29tcGF0aWJsZSBhbGlhcyAgKi8KQEAgLTQwMyw2ICs0MzMsOSBAQAogfSBQeVR5cGVfU3BlYzsKIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VHlwZV9Gcm9tU3BlYyhQeVR5cGVfU3BlYyopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoUHlUeXBlX1NwZWMqLCBQeU9iamVjdCopOworI2VuZGlmCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoZSAqcmVhbCogbGF5b3V0IG9mIGEgdHlwZSBvYmplY3Qgd2hlbiBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgKi8KQEAgLTQxOCw3ICs0NTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGdpdmVuIG9wZXJhdG9yIChlLmcuIF9fZ2V0aXRlbV9fKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGFkZF9vcGVyYXRvcnMoKSBpbiB0eXBlb2JqZWN0LmMgLiAqLwogICAgIFB5QnVmZmVyUHJvY3MgYXNfYnVmZmVyOwotICAgIFB5T2JqZWN0ICpodF9uYW1lLCAqaHRfc2xvdHM7CisgICAgUHlPYmplY3QgKmh0X25hbWUsICpodF9zbG90cywgKmh0X3F1YWxuYW1lOworICAgIHN0cnVjdCBfZGljdGtleXNvYmplY3QgKmh0X2NhY2hlZF9rZXlzOwogICAgIC8qIGhlcmUgYXJlIG9wdGlvbmFsIHVzZXIgc2xvdHMsIGZvbGxvd2VkIGJ5IHRoZSBtZW1iZXJzLiAqLwogfSBQeUhlYXBUeXBlT2JqZWN0OwogCkBAIC00NDgsMTMgKzQ4MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VHlwZV9Mb29rdXAoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqLCBjaGFyICosIFB5T2JqZWN0ICoqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKiwgX1B5X0lkZW50aWZpZXIgKik7CiBQeUFQSV9GVU5DKFB5VHlwZU9iamVjdCAqKSBfUHlUeXBlX0NhbGN1bGF0ZU1ldGFjbGFzcyhQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkModW5zaWduZWQgaW50KSBQeVR5cGVfQ2xlYXJDYWNoZSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlUeXBlX01vZGlmaWVkKFB5VHlwZU9iamVjdCAqKTsKIAogLyogR2VuZXJpYyBvcGVyYXRpb25zIG9uIG9iamVjdHMgKi8KK3N0cnVjdCBfUHlfSWRlbnRpZmllcjsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9QcmludChQeU9iamVjdCAqLCBGSUxFICosIGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9CcmVha1BvaW50KHZvaWQpOwpAQCAtNDcyLDYgKzUwNywxMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1NldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfSGFzQXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSXNBYnN0cmFjdChQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X1NldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICoqKSBfUHlPYmplY3RfR2V0RGljdFB0cihQeU9iamVjdCAqKTsKICNlbmRpZgpAQCAtNDgyLDYgKzUyMSw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgdm9pZCAqKTsKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBQeU9iamVjdF9IYXNoKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeV9oYXNoX3QpIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9Jc1RydWUoUHlPYmplY3QgKik7CkBAIC00OTgsNiArNTM4LDExIEBACiBfUHlPYmplY3RfR2VuZXJpY1NldEF0dHJXaXRoRGljdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKy8qIEhlbHBlciB0byBsb29rIHVwIGEgYnVpbHRpbiBvYmplY3QgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikKK19QeU9iamVjdF9HZXRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpOworI2VuZGlmCiAKIC8qIFB5T2JqZWN0X0RpcihvYmopIGFjdHMgbGlrZSBQeXRob24gYnVpbHRpbnMuZGlyKG9iaiksIHJldHVybmluZyBhCiAgICBsaXN0IG9mIHN0cmluZ3MuICBQeU9iamVjdF9EaXIoTlVMTCkgaXMgbGlrZSBidWlsdGlucy5kaXIoKSwKQEAgLTUxNSw2ICs1NjAsNyBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeV9oYXNoX3QpIF9QeV9IYXNoRG91YmxlKGRvdWJsZSk7CiBQeUFQSV9GVU5DKFB5X2hhc2hfdCkgX1B5X0hhc2hQb2ludGVyKHZvaWQqKTsKK1B5QVBJX0ZVTkMoUHlfaGFzaF90KSBfUHlfSGFzaEJ5dGVzKHVuc2lnbmVkIGNoYXIqLCBQeV9zc2l6ZV90KTsKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC04MDMsNiArODQ5LDEwIEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0KSBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q7IC8qIERvbid0IHVzZSB0aGlzIGRpcmVjdGx5ICovCiAjZGVmaW5lIFB5X05vdEltcGxlbWVudGVkICgmX1B5X05vdEltcGxlbWVudGVkU3RydWN0KQogCisvKiBNYWNybyBmb3IgcmV0dXJuaW5nIFB5X05vdEltcGxlbWVudGVkIGZyb20gYSBmdW5jdGlvbiAqLworI2RlZmluZSBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQgXAorICAgIHJldHVybiBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpLCBQeV9Ob3RJbXBsZW1lbnRlZAorCiAvKiBSaWNoIGNvbXBhcmlzb24gb3Bjb2RlcyAqLwogI2RlZmluZSBQeV9MVCAwCiAjZGVmaW5lIFB5X0xFIDEKQEAgLTkxMiw3ICs5NjIsNyBAQAogKi8KIAogLyogVGhpcyBpcyB0aGUgb2xkIHByaXZhdGUgQVBJLCBpbnZva2VkIGJ5IHRoZSBtYWNyb3MgYmVmb3JlIDMuMi40LgotICAgS2VwdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXh0ZW5zaW9ucy4gKi8KKyAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMgdXNpbmcgdGhlIHN0YWJsZSBBQkkuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CiBQeUFQSV9EQVRBKGludCkgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CkBAIC05MzksNiArOTg5LDE0IEBACiAgICAgICAgICAgICBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3QoKFB5T2JqZWN0KilvcCk7IFwKICAgICB9IHdoaWxlICgwKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKQorX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhGSUxFICpvdXQsIGNvbnN0IGNoYXIgKmJsb2NrX25hbWUsIGludCBudW1fYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZW9mX2Jsb2NrKTsKK1B5QVBJX0ZVTkModm9pZCkKK19QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qIGlmbmRlZiBQeV9MSU1JVEVEX0FQSSAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmppbXBsLmggYi9JbmNsdWRlL29iamltcGwuaAppbmRleCA4ZmMzZmMxLi4zZDVmNTA5IDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamltcGwuaAorKysgYi9JbmNsdWRlL29iamltcGwuaApAQCAtMTAxLDEzICsxMDEsMTUgQEAKIAogLyogTWFjcm9zICovCiAjaWZkZWYgV0lUSF9QWU1BTExPQworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qICNpZm5kZWYgUHlfTElNSVRFRF9BUEkgKi8KICNpZmRlZiBQWU1BTExPQ19ERUJVRyAgIC8qIFdJVEhfUFlNQUxMT0MgJiYgUFlNQUxMT0NfREVCVUcgKi8KIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdNYWxsb2Moc2l6ZV90IG5ieXRlcyk7CiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnUmVhbGxvYyh2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRnJlZSh2b2lkICpwKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MoY29uc3Qgdm9pZCAqcCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0NoZWNrQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnTWFsbG9jQXBpKGNoYXIgYXBpLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdSZWFsbG9jQXBpKGNoYXIgYXBpLCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRnJlZUFwaShjaGFyIGFwaSwgdm9pZCAqcCk7CkBAIC0xNzksMTIgKzE4MSw5IEBACiAjZW5kaWYKIAogI2RlZmluZSBfUHlPYmplY3RfVkFSX1NJWkUodHlwZW9iaiwgbml0ZW1zKSAgICAgXAotICAgIChzaXplX3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICggKCAodHlwZW9iaiktPnRwX2Jhc2ljc2l6ZSArICAgICAgICAgICAgICAgXAotICAgICAgICAobml0ZW1zKSoodHlwZW9iaiktPnRwX2l0ZW1zaXplICsgICAgICAgXAotICAgICAgICAoU0laRU9GX1ZPSURfUCAtIDEpICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKSAmIH4oU0laRU9GX1ZPSURfUCAtIDEpICAgICAgICAgICAgICAgICAgXAotICAgICkKKyAgICBfUHlfU0laRV9ST1VORF9VUCgodHlwZW9iaiktPnRwX2Jhc2ljc2l6ZSArIFwKKyAgICAgICAgKG5pdGVtcykqKHR5cGVvYmopLT50cF9pdGVtc2l6ZSwgICAgICAgIFwKKyAgICAgICAgU0laRU9GX1ZPSURfUCkKIAogI2RlZmluZSBQeU9iamVjdF9ORVcodHlwZSwgdHlwZW9iaikgXAogKCAodHlwZSAqKSBQeU9iamVjdF9Jbml0KCBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL29wY29kZS5oIGIvSW5jbHVkZS9vcGNvZGUuaAppbmRleCA2YjEwOTQ0Li5hOTAxODRkIDEwMDY0NAotLS0gYS9JbmNsdWRlL29wY29kZS5oCisrKyBiL0luY2x1ZGUvb3Bjb2RlLmgKQEAgLTcsMTE3ICs3LDExNyBAQAogCiAvKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCiAKLSNkZWZpbmUgU1RPUF9DT0RFCTAKLSNkZWZpbmUgUE9QX1RPUAkJMQotI2RlZmluZSBST1RfVFdPCQkyCi0jZGVmaW5lIFJPVF9USFJFRQkzCi0jZGVmaW5lIERVUF9UT1AJCTQKKyNkZWZpbmUgUE9QX1RPUCAgICAgICAgIDEKKyNkZWZpbmUgUk9UX1RXTyAgICAgICAgIDIKKyNkZWZpbmUgUk9UX1RIUkVFICAgICAgIDMKKyNkZWZpbmUgRFVQX1RPUCAgICAgICAgIDQKICNkZWZpbmUgRFVQX1RPUF9UV08gICAgIDUKLSNkZWZpbmUgTk9QCQk5CisjZGVmaW5lIE5PUCAgICAgICAgICAgICA5CiAKLSNkZWZpbmUgVU5BUllfUE9TSVRJVkUJMTAKLSNkZWZpbmUgVU5BUllfTkVHQVRJVkUJMTEKLSNkZWZpbmUgVU5BUllfTk9UCTEyCisjZGVmaW5lIFVOQVJZX1BPU0lUSVZFICAxMAorI2RlZmluZSBVTkFSWV9ORUdBVElWRSAgMTEKKyNkZWZpbmUgVU5BUllfTk9UICAgICAgIDEyCiAKLSNkZWZpbmUgVU5BUllfSU5WRVJUCTE1CisjZGVmaW5lIFVOQVJZX0lOVkVSVCAgICAxNQogCi0jZGVmaW5lIEJJTkFSWV9QT1dFUgkxOQorI2RlZmluZSBCSU5BUllfUE9XRVIgICAgMTkKIAotI2RlZmluZSBCSU5BUllfTVVMVElQTFkJMjAKKyNkZWZpbmUgQklOQVJZX01VTFRJUExZIDIwCiAKLSNkZWZpbmUgQklOQVJZX01PRFVMTwkyMgotI2RlZmluZSBCSU5BUllfQURECTIzCi0jZGVmaW5lIEJJTkFSWV9TVUJUUkFDVAkyNAotI2RlZmluZSBCSU5BUllfU1VCU0NSCTI1CisjZGVmaW5lIEJJTkFSWV9NT0RVTE8gICAyMgorI2RlZmluZSBCSU5BUllfQUREICAgICAgMjMKKyNkZWZpbmUgQklOQVJZX1NVQlRSQUNUIDI0CisjZGVmaW5lIEJJTkFSWV9TVUJTQ1IgICAyNQogI2RlZmluZSBCSU5BUllfRkxPT1JfRElWSURFIDI2CiAjZGVmaW5lIEJJTkFSWV9UUlVFX0RJVklERSAyNwogI2RlZmluZSBJTlBMQUNFX0ZMT09SX0RJVklERSAyOAogI2RlZmluZSBJTlBMQUNFX1RSVUVfRElWSURFIDI5CiAKLSNkZWZpbmUgU1RPUkVfTUFQCTU0Ci0jZGVmaW5lIElOUExBQ0VfQURECTU1Ci0jZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QJNTYKLSNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWQk1NworI2RlZmluZSBTVE9SRV9NQVAgICAgICAgNTQKKyNkZWZpbmUgSU5QTEFDRV9BREQgICAgIDU1CisjZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QgICAgICAgIDU2CisjZGVmaW5lIElOUExBQ0VfTVVMVElQTFkgICAgICAgIDU3CiAKLSNkZWZpbmUgSU5QTEFDRV9NT0RVTE8JNTkKLSNkZWZpbmUgU1RPUkVfU1VCU0NSCTYwCi0jZGVmaW5lIERFTEVURV9TVUJTQ1IJNjEKKyNkZWZpbmUgSU5QTEFDRV9NT0RVTE8gIDU5CisjZGVmaW5lIFNUT1JFX1NVQlNDUiAgICA2MAorI2RlZmluZSBERUxFVEVfU1VCU0NSICAgNjEKIAotI2RlZmluZSBCSU5BUllfTFNISUZUCTYyCi0jZGVmaW5lIEJJTkFSWV9SU0hJRlQJNjMKLSNkZWZpbmUgQklOQVJZX0FORAk2NAotI2RlZmluZSBCSU5BUllfWE9SCTY1Ci0jZGVmaW5lIEJJTkFSWV9PUgk2NgotI2RlZmluZSBJTlBMQUNFX1BPV0VSCTY3Ci0jZGVmaW5lIEdFVF9JVEVSCTY4Ci0jZGVmaW5lIFNUT1JFX0xPQ0FMUwk2OQotI2RlZmluZSBQUklOVF9FWFBSCTcwCisjZGVmaW5lIEJJTkFSWV9MU0hJRlQgICA2MgorI2RlZmluZSBCSU5BUllfUlNISUZUICAgNjMKKyNkZWZpbmUgQklOQVJZX0FORCAgICAgIDY0CisjZGVmaW5lIEJJTkFSWV9YT1IgICAgICA2NQorI2RlZmluZSBCSU5BUllfT1IgICAgICAgNjYKKyNkZWZpbmUgSU5QTEFDRV9QT1dFUiAgIDY3CisjZGVmaW5lIEdFVF9JVEVSICAgICAgICA2OAorI2RlZmluZSBTVE9SRV9MT0NBTFMgICAgNjkKKyNkZWZpbmUgUFJJTlRfRVhQUiAgICAgIDcwCiAjZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgNzEKKyNkZWZpbmUgWUlFTERfRlJPTSAgICAgIDcyCiAKLSNkZWZpbmUgSU5QTEFDRV9MU0hJRlQJNzUKLSNkZWZpbmUgSU5QTEFDRV9SU0hJRlQJNzYKLSNkZWZpbmUgSU5QTEFDRV9BTkQJNzcKLSNkZWZpbmUgSU5QTEFDRV9YT1IJNzgKLSNkZWZpbmUgSU5QTEFDRV9PUgk3OQotI2RlZmluZSBCUkVBS19MT09QCTgwCisjZGVmaW5lIElOUExBQ0VfTFNISUZUICA3NQorI2RlZmluZSBJTlBMQUNFX1JTSElGVCAgNzYKKyNkZWZpbmUgSU5QTEFDRV9BTkQgICAgIDc3CisjZGVmaW5lIElOUExBQ0VfWE9SICAgICA3OAorI2RlZmluZSBJTlBMQUNFX09SICAgICAgNzkKKyNkZWZpbmUgQlJFQUtfTE9PUCAgICAgIDgwCiAjZGVmaW5lIFdJVEhfQ0xFQU5VUCAgICA4MQogCi0jZGVmaW5lIFJFVFVSTl9WQUxVRQk4MwotI2RlZmluZSBJTVBPUlRfU1RBUgk4NAorI2RlZmluZSBSRVRVUk5fVkFMVUUgICAgODMKKyNkZWZpbmUgSU1QT1JUX1NUQVIgICAgIDg0CiAKLSNkZWZpbmUgWUlFTERfVkFMVUUJODYKLSNkZWZpbmUgUE9QX0JMT0NLCTg3Ci0jZGVmaW5lIEVORF9GSU5BTExZCTg4Ci0jZGVmaW5lIFBPUF9FWENFUFQJODkKKyNkZWZpbmUgWUlFTERfVkFMVUUgICAgIDg2CisjZGVmaW5lIFBPUF9CTE9DSyAgICAgICA4NworI2RlZmluZSBFTkRfRklOQUxMWSAgICAgODgKKyNkZWZpbmUgUE9QX0VYQ0VQVCAgICAgIDg5CiAKLSNkZWZpbmUgSEFWRV9BUkdVTUVOVAk5MAkvKiBPcGNvZGVzIGZyb20gaGVyZSBoYXZlIGFuIGFyZ3VtZW50OiAqLworI2RlZmluZSBIQVZFX0FSR1VNRU5UICAgOTAgICAgICAvKiBPcGNvZGVzIGZyb20gaGVyZSBoYXZlIGFuIGFyZ3VtZW50OiAqLwogCi0jZGVmaW5lIFNUT1JFX05BTUUJOTAJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9OQU1FCTkxCS8qICIiICovCi0jZGVmaW5lIFVOUEFDS19TRVFVRU5DRQk5MgkvKiBOdW1iZXIgb2Ygc2VxdWVuY2UgaXRlbXMgKi8KLSNkZWZpbmUgRk9SX0lURVIJOTMKKyNkZWZpbmUgU1RPUkVfTkFNRSAgICAgIDkwICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIERFTEVURV9OQU1FICAgICA5MSAgICAgIC8qICIiICovCisjZGVmaW5lIFVOUEFDS19TRVFVRU5DRSA5MiAgICAgIC8qIE51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyAqLworI2RlZmluZSBGT1JfSVRFUiAgICAgICAgOTMKICNkZWZpbmUgVU5QQUNLX0VYICAgICAgIDk0ICAgICAgLyogTnVtIGl0ZW1zIGJlZm9yZSB2YXJpYWJsZSBwYXJ0ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE51bSBpdGVtcyBhZnRlciB2YXJpYWJsZSBwYXJ0IDw8IDgpICovCiAKLSNkZWZpbmUgU1RPUkVfQVRUUgk5NQkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgREVMRVRFX0FUVFIJOTYJLyogIiIgKi8KLSNkZWZpbmUgU1RPUkVfR0xPQkFMCTk3CS8qICIiICovCi0jZGVmaW5lIERFTEVURV9HTE9CQUwJOTgJLyogIiIgKi8KKyNkZWZpbmUgU1RPUkVfQVRUUiAgICAgIDk1ICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIERFTEVURV9BVFRSICAgICA5NiAgICAgIC8qICIiICovCisjZGVmaW5lIFNUT1JFX0dMT0JBTCAgICA5NyAgICAgIC8qICIiICovCisjZGVmaW5lIERFTEVURV9HTE9CQUwgICA5OCAgICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9DT05TVAkxMDAJLyogSW5kZXggaW4gY29uc3QgbGlzdCAqLwotI2RlZmluZSBMT0FEX05BTUUJMTAxCS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBCVUlMRF9UVVBMRQkxMDIJLyogTnVtYmVyIG9mIHR1cGxlIGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX0xJU1QJMTAzCS8qIE51bWJlciBvZiBsaXN0IGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX1NFVAkxMDQgICAgIC8qIE51bWJlciBvZiBzZXQgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTUFQCTEwNQkvKiBBbHdheXMgemVybyBmb3Igbm93ICovCi0jZGVmaW5lIExPQURfQVRUUgkxMDYJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIENPTVBBUkVfT1AJMTA3CS8qIENvbXBhcmlzb24gb3BlcmF0b3IgKi8KLSNkZWZpbmUgSU1QT1JUX05BTUUJMTA4CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBJTVBPUlRfRlJPTQkxMDkJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIExPQURfQ09OU1QgICAgICAxMDAgICAgIC8qIEluZGV4IGluIGNvbnN0IGxpc3QgKi8KKyNkZWZpbmUgTE9BRF9OQU1FICAgICAgIDEwMSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIEJVSUxEX1RVUExFICAgICAxMDIgICAgIC8qIE51bWJlciBvZiB0dXBsZSBpdGVtcyAqLworI2RlZmluZSBCVUlMRF9MSVNUICAgICAgMTAzICAgICAvKiBOdW1iZXIgb2YgbGlzdCBpdGVtcyAqLworI2RlZmluZSBCVUlMRF9TRVQgICAgICAgMTA0ICAgICAvKiBOdW1iZXIgb2Ygc2V0IGl0ZW1zICovCisjZGVmaW5lIEJVSUxEX01BUCAgICAgICAxMDUgICAgIC8qIEFsd2F5cyB6ZXJvIGZvciBub3cgKi8KKyNkZWZpbmUgTE9BRF9BVFRSICAgICAgIDEwNiAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIENPTVBBUkVfT1AgICAgICAxMDcgICAgIC8qIENvbXBhcmlzb24gb3BlcmF0b3IgKi8KKyNkZWZpbmUgSU1QT1JUX05BTUUgICAgIDEwOCAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIElNUE9SVF9GUk9NICAgICAxMDkgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwogCi0jZGVmaW5lIEpVTVBfRk9SV0FSRAkxMTAJLyogTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgKi8KLSNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgMTExCS8qIFRhcmdldCBieXRlIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBjb2RlICovCi0jZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgMTEyCS8qICIiICovCi0jZGVmaW5lIEpVTVBfQUJTT0xVVEUJMTEzCS8qICIiICovCi0jZGVmaW5lIFBPUF9KVU1QX0lGX0ZBTFNFIDExNAkvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9UUlVFIDExNQkvKiAiIiAqLworI2RlZmluZSBKVU1QX0ZPUldBUkQgICAgMTEwICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCAqLworI2RlZmluZSBKVU1QX0lGX0ZBTFNFX09SX1BPUCAxMTEgICAgICAgIC8qIFRhcmdldCBieXRlIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBjb2RlICovCisjZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgMTEyIC8qICIiICovCisjZGVmaW5lIEpVTVBfQUJTT0xVVEUgICAxMTMgICAgIC8qICIiICovCisjZGVmaW5lIFBPUF9KVU1QX0lGX0ZBTFNFIDExNCAgIC8qICIiICovCisjZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgMTE1ICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9HTE9CQUwJMTE2CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBMT0FEX0dMT0JBTCAgICAgMTE2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KIAotI2RlZmluZSBDT05USU5VRV9MT09QCTExOQkvKiBTdGFydCBvZiBsb29wIChhYnNvbHV0ZSkgKi8KLSNkZWZpbmUgU0VUVVBfTE9PUAkxMjAJLyogVGFyZ2V0IGFkZHJlc3MgKHJlbGF0aXZlKSAqLwotI2RlZmluZSBTRVRVUF9FWENFUFQJMTIxCS8qICIiICovCi0jZGVmaW5lIFNFVFVQX0ZJTkFMTFkJMTIyCS8qICIiICovCisjZGVmaW5lIENPTlRJTlVFX0xPT1AgICAxMTkgICAgIC8qIFN0YXJ0IG9mIGxvb3AgKGFic29sdXRlKSAqLworI2RlZmluZSBTRVRVUF9MT09QICAgICAgMTIwICAgICAvKiBUYXJnZXQgYWRkcmVzcyAocmVsYXRpdmUpICovCisjZGVmaW5lIFNFVFVQX0VYQ0VQVCAgICAxMjEgICAgIC8qICIiICovCisjZGVmaW5lIFNFVFVQX0ZJTkFMTFkgICAxMjIgICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9GQVNUCTEyNAkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLSNkZWZpbmUgU1RPUkVfRkFTVAkxMjUJLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0jZGVmaW5lIERFTEVURV9GQVNUCTEyNgkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KKyNkZWZpbmUgTE9BRF9GQVNUICAgICAgIDEyNCAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCisjZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAxMjUgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLworI2RlZmluZSBERUxFVEVfRkFTVCAgICAgMTI2ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KIAotI2RlZmluZSBSQUlTRV9WQVJBUkdTCTEzMAkvKiBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyIG9yIDMpICovCisjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAxMzAgICAgIC8qIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIgb3IgMykgKi8KIC8qIENBTExfRlVOQ1RJT05fWFhYIG9wY29kZXMgZGVmaW5lZCBiZWxvdyBkZXBlbmQgb24gdGhpcyBkZWZpbml0aW9uICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT04JMTMxCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIE1BS0VfRlVOQ1RJT04JMTMyCS8qICNkZWZhdWx0cyArICNrd2RlZmF1bHRzPDw4ICsgI2Fubm90YXRpb25zPDwxNiAqLwotI2RlZmluZSBCVUlMRF9TTElDRSAJMTMzCS8qIE51bWJlciBvZiBpdGVtcyAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgMTMxICAgICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgMTMyICAgICAvKiAjZGVmYXVsdHMgKyAja3dkZWZhdWx0czw8OCArICNhbm5vdGF0aW9uczw8MTYgKi8KKyNkZWZpbmUgQlVJTERfU0xJQ0UgICAgIDEzMyAgICAgLyogTnVtYmVyIG9mIGl0ZW1zICovCiAKICNkZWZpbmUgTUFLRV9DTE9TVVJFICAgIDEzNCAgICAgLyogc2FtZSBhcyBNQUtFX0ZVTkNUSU9OICovCiAjZGVmaW5lIExPQURfQ0xPU1VSRSAgICAxMzUgICAgIC8qIExvYWQgZnJlZSB2YXJpYWJsZSBmcm9tIGNsb3N1cmUgKi8KQEAgLTEyNyw5ICsxMjcsOSBAQAogCiAvKiBUaGUgbmV4dCAzIG9wY29kZXMgbXVzdCBiZSBjb250aWd1b3VzIGFuZCBzYXRpc2Z5CiAgICAoQ0FMTF9GVU5DVElPTl9WQVIgLSBDQUxMX0ZVTkNUSU9OKSAmIDMgPT0gMSAgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgICAgMTQwCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgICAgIDE0MQkvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAgICAxNDIJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgICAgMTQwICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAgICAxNDEgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgICAgIDE0MiAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KIAogI2RlZmluZSBTRVRVUF9XSVRIIDE0MwogCkBAIC0xNDksNyArMTQ5LDcgQEAKIAogCiBlbnVtIGNtcF9vcCB7UHlDbXBfTFQ9UHlfTFQsIFB5Q21wX0xFPVB5X0xFLCBQeUNtcF9FUT1QeV9FUSwgUHlDbXBfTkU9UHlfTkUsIFB5Q21wX0dUPVB5X0dULCBQeUNtcF9HRT1QeV9HRSwKLQkgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKKyAgICAgICAgICAgICBQeUNtcF9JTiwgUHlDbXBfTk9UX0lOLCBQeUNtcF9JUywgUHlDbXBfSVNfTk9ULCBQeUNtcF9FWENfTUFUQ0gsIFB5Q21wX0JBRH07CiAKICNkZWZpbmUgSEFTX0FSRyhvcCkgKChvcCkgPj0gSEFWRV9BUkdVTUVOVCkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXJzZXRvay5oIGIvSW5jbHVkZS9wYXJzZXRvay5oCmluZGV4IDRiNzY5NGYuLjkxMWRmYzEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGFyc2V0b2suaAorKysgYi9JbmNsdWRlL3BhcnNldG9rLmgKQEAgLTksNyArOSwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgaW50IGVycm9yOwotICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOyAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KKyNpZm5kZWYgUEdFTgorICAgIC8qIFRoZSBmaWxlbmFtZSBpcyB1c2VsZXNzIGZvciBwZ2VuLCBzZWUgY29tbWVudCBpbiB0b2tfc3RhdGUgc3RydWN0dXJlICovCisgICAgUHlPYmplY3QgKmZpbGVuYW1lOworI2VuZGlmCiAgICAgaW50IGxpbmVubzsKICAgICBpbnQgb2Zmc2V0OwogICAgIGNoYXIgKnRleHQ7ICAgICAgICAgICAgICAgICAvKiBVVEYtOC1lbmNvZGVkIHN0cmluZyAqLwpAQCAtNjYsOCArNjksMTAgQEAKICAgICBwZXJyZGV0YWlsICplcnJfcmV0LAogICAgIGludCAqZmxhZ3MpOwogCi0vKiBOb3RlIHRoYXQgaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gcHl0aG9ucnVuLmMgbm90IHBhcnNldG9rLmMuICovCisvKiBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gcHl0aG9ucnVuLmMsCisgICBub3QgaW4gcGFyc2V0b2suYyAqLwogUHlBUElfRlVOQyh2b2lkKSBQeVBhcnNlcl9TZXRFcnJvcihwZXJyZGV0YWlsICopOworUHlBUElfRlVOQyh2b2lkKSBQeVBhcnNlcl9DbGVhckVycm9yKHBlcnJkZXRhaWwgKik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXRjaGxldmVsLmggYi9JbmNsdWRlL3BhdGNobGV2ZWwuaAppbmRleCAwODM5MDcxLi5iNTkxOWE0IDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhdGNobGV2ZWwuaAorKysgYi9JbmNsdWRlL3BhdGNobGV2ZWwuaApAQCAtMTcsMTkgKzE3LDE1IEBACiAvKiBWZXJzaW9uIHBhcnNlZCBvdXQgaW50byBudW1lcmljIHZhbHVlcyAqLwogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkzCi0jZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JMgotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTMKKyNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgkzCisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMAogI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfRklOQUwKICNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMAogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuMi4zKyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy4zLjArIgogLyotLWVuZCBjb25zdGFudHMtLSovCiAKLS8qIFN1YnZlcnNpb24gUmV2aXNpb24gbnVtYmVyIG9mIHRoaXMgZmlsZSAobm90IG9mIHRoZSByZXBvc2l0b3J5KS4gRW1wdHkKLSAgIHNpbmNlIE1lcmN1cmlhbCBtaWdyYXRpb24uICovCi0jZGVmaW5lIFBZX1BBVENITEVWRUxfUkVWSVNJT04gICIiCi0KIC8qIFZlcnNpb24gYXMgYSBzaW5nbGUgNC1ieXRlIGhleCBudW1iZXIsIGUuZy4gMHgwMTA1MDJCMiA9PSAxLjUuMmIyLgogICAgVXNlIHRoaXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbnMsIGUuZy4gI2lmIFBZX1ZFUlNJT05fSEVYID49IC4uLiAqLwogI2RlZmluZSBQWV9WRVJTSU9OX0hFWCAoKFBZX01BSk9SX1ZFUlNJT04gPDwgMjQpIHwgXApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weV9jdXJzZXMuaCBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKaW5kZXggYTg5MWM0Mi4uZjJjMDhmNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weV9jdXJzZXMuaAorKysgYi9JbmNsdWRlL3B5X2N1cnNlcy5oCkBAIC03Niw2ICs3Niw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAJUHlPYmplY3RfSEVBRAogCVdJTkRPVyAqd2luOworCWNoYXIgKmVuY29kaW5nOwogfSBQeUN1cnNlc1dpbmRvd09iamVjdDsKIAogI2RlZmluZSBQeUN1cnNlc1dpbmRvd19DaGVjayh2KQkgKFB5X1RZUEUodikgPT0gJlB5Q3Vyc2VzV2luZG93X1R5cGUpCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZGVidWcuaCBiL0luY2x1ZGUvcHlkZWJ1Zy5oCmluZGV4IGUyM2NiZGMuLjk3YzJmOGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlkZWJ1Zy5oCisrKyBiL0luY2x1ZGUvcHlkZWJ1Zy5oCkBAIC0xNiw3ICsxNiw2IEBACiBQeUFQSV9EQVRBKGludCkgUHlfVXNlQ2xhc3NFeGNlcHRpb25zRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9Gcm96ZW5GbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZzsKLVB5QVBJX0RBVEEoaW50KSBQeV9EaXZpc2lvbldhcm5pbmdGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0RvbnRXcml0ZUJ5dGVjb2RlRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5OwogUHlBUElfREFUQShpbnQpIFB5X1VuYnVmZmVyZWRTdGRpb0ZsYWc7CkBAIC0yNyw4ICsyNiw2IEBACiAgICBQWVRIT05QQVRIIGFuZCBQWVRIT05IT01FIGZyb20gdGhlIGVudmlyb25tZW50ICovCiAjZGVmaW5lIFB5X0dFVEVOVihzKSAoUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnID8gTlVMTCA6IGdldGVudihzKSkKIAotUHlBUElfRlVOQyh2b2lkKSBQeV9GYXRhbEVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWVycm9ycy5oIGIvSW5jbHVkZS9weWVycm9ycy5oCmluZGV4IDRiYjNjMDEuLmFmMzc0MTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHllcnJvcnMuaAorKysgYi9JbmNsdWRlL3B5ZXJyb3JzLmgKQEAgLTEwLDcgKzEwLDggQEAKIC8qIFB5RXhjZXB0aW9uX0hFQUQgZGVmaW5lcyB0aGUgaW5pdGlhbCBzZWdtZW50IG9mIGV2ZXJ5IGV4Y2VwdGlvbiBjbGFzcy4gKi8KICNkZWZpbmUgUHlFeGNlcHRpb25fSEVBRCBQeU9iamVjdF9IRUFEIFB5T2JqZWN0ICpkaWN0O1wKICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnczsgUHlPYmplY3QgKnRyYWNlYmFjaztcCi0gICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQ7IFB5T2JqZWN0ICpjYXVzZTsKKyAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dDsgUHlPYmplY3QgKmNhdXNlO1wKKyAgICAgICAgICAgICBjaGFyIHN1cHByZXNzX2NvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeUV4Y2VwdGlvbl9IRUFECkBAIC0yOCw2ICsyOSwxMyBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlFeGNlcHRpb25fSEVBRAorICAgIFB5T2JqZWN0ICptc2c7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnBhdGg7Cit9IFB5SW1wb3J0RXJyb3JPYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeUV4Y2VwdGlvbl9IRUFECiAgICAgUHlPYmplY3QgKmVuY29kaW5nOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKQEAgLTQ1LDE4ICs1MywyMyBAQAogICAgIFB5T2JqZWN0ICpteWVycm5vOwogICAgIFB5T2JqZWN0ICpzdHJlcnJvcjsKICAgICBQeU9iamVjdCAqZmlsZW5hbWU7Ci19IFB5RW52aXJvbm1lbnRFcnJvck9iamVjdDsKLQogI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqd2luZXJyb3I7CisjZW5kaWYKKyAgICBQeV9zc2l6ZV90IHdyaXR0ZW47ICAgLyogb25seSBmb3IgQmxvY2tpbmdJT0Vycm9yLCAtMSBvdGhlcndpc2UgKi8KK30gUHlPU0Vycm9yT2JqZWN0OworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlFeGNlcHRpb25fSEVBRAotICAgIFB5T2JqZWN0ICpteWVycm5vOwotICAgIFB5T2JqZWN0ICpzdHJlcnJvcjsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7Ci0gICAgUHlPYmplY3QgKndpbmVycm9yOwotfSBQeVdpbmRvd3NFcnJvck9iamVjdDsKKyAgICBQeU9iamVjdCAqdmFsdWU7Cit9IFB5U3RvcEl0ZXJhdGlvbk9iamVjdDsKKworLyogQ29tcGF0aWJpbGl0eSB0eXBlZGVmcyAqLwordHlwZWRlZiBQeU9TRXJyb3JPYmplY3QgUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0OworI2lmZGVmIE1TX1dJTkRPV1MKK3R5cGVkZWYgUHlPU0Vycm9yT2JqZWN0IFB5V2luZG93c0Vycm9yT2JqZWN0OwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogRXJyb3IgaGFuZGxpbmcgZGVmaW5pdGlvbnMgKi8KIApAQCAtNzAsNyArODMsMTkgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfQ2xlYXIodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0ZldGNoKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKiwgUHlPYmplY3QgKiopOwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9SZXN0b3JlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyh2b2lkKSBQeV9GYXRhbEVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworUHlBUElfRlVOQyh2b2lkKSBQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKiwgUHlPYmplY3QgKiopOworUHlBUElfRlVOQyh2b2lkKSBQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworCisjaWYgZGVmaW5lZChfX2NsYW5nX18pIHx8IFwKKyAgICAoZGVmaW5lZChfX0dOVUNfTUFKT1JfXykgJiYgXAorICAgICAoKF9fR05VQ19NQUpPUl9fID49IDMpIHx8IFwKKyAgICAgIChfX0dOVUNfTUFKT1JfXyA9PSAyKSAmJiAoX19HTlVDX01JTk9SX18gPj0gNSkpKQorI2RlZmluZSBfUHlfTk9fUkVUVVJOIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpCisjZWxzZQorI2RlZmluZSBfUHlfTk9fUkVUVVJOCisjZW5kaWYKKworUHlBUElfRlVOQyh2b2lkKSBQeV9GYXRhbEVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UpIF9QeV9OT19SRVRVUk47CiAKICNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogI2RlZmluZSBfUHlFcnJfT0NDVVJSRUQoKSBQeUVycl9PY2N1cnJlZCgpCkBAIC0xMjIsMTAgKzE0Nyw5IEBACiAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQXNzZXJ0aW9uRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0F0dHJpYnV0ZUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19CdWZmZXJFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRU9GRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcjsKLVB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRW52aXJvbm1lbnRFcnJvcjsKLVB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSU9FcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfT1NFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW1wb3J0RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0luZGV4RXJyb3I7CkBAIC0xNTAsNiArMTc0LDI3IEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfVmFsdWVFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I7CisKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Ccm9rZW5QaXBlRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0NoaWxkUHJvY2Vzc0Vycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Nvbm5lY3Rpb25SZXNldEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GaWxlRXhpc3RzRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbnRlcnJ1cHRlZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Jc0FEaXJlY3RvcnlFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTm90QURpcmVjdG9yeUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19QZXJtaXNzaW9uRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfVGltZW91dEVycm9yOworCisKKy8qIENvbXBhdGliaWxpdHkgYWxpYXNlcyAqLworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19FbnZpcm9ubWVudEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JT0Vycm9yOwogI2lmZGVmIE1TX1dJTkRPV1MKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfV2luZG93c0Vycm9yOwogI2VuZGlmCkBAIC0xNTcsOCArMjAyLDYgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfVk1TRXJyb3I7CiAjZW5kaWYKIAotUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19CdWZmZXJFcnJvcjsKLQogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q7CiAKIC8qIFByZWRlZmluZWQgd2FybmluZyBjYXRlZ29yaWVzICovCkBAIC0xOTgsOCArMjQxLDYgQEAKICAgICApOwogCiAjaWZkZWYgTVNfV0lORE9XUwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgKLSAgICBpbnQsIGNvbnN0IGNoYXIgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKAogICAgIGludCBpZXJyLAogICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lICAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KQEAgLTIyNCw2ICsyNjUsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlPYmplY3QgKiwgaW50KTsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RXhjV2l0aEFyZ3NLd2FyZ3MoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICBQeU9iamVjdCAqKTsKKwogLyogRXhwb3J0IHRoZSBvbGQgZnVuY3Rpb24gc28gdGhhdCB0aGUgZXhpc3RpbmcgQVBJIHJlbWFpbnMgYXZhaWxhYmxlOiAqLwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9CYWRJbnRlcm5hbENhbGwodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pOwpAQCAtMjkzLDYgKzMzOSwxMiBAQAogICAgIFB5X3NzaXplX3QgZW5kLAogICAgIGNvbnN0IGNoYXIgKnJlYXNvbiAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUoCisgICAgUHlPYmplY3QgKm9iamVjdCwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kLAorICAgIGNvbnN0IGNoYXIgKnJlYXNvbiAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLworICAgICk7CiAjZW5kaWYKIAogLyogZ2V0IHRoZSBlbmNvZGluZyBhdHRyaWJ1dGUgKi8KQEAgLTM0OCw3ICs0MDAsNiBAQAogICAgIGNvbnN0IGNoYXIgKnJlYXNvbiAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CiAKLQogLyogVGhlc2UgQVBJcyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGVycm9yIGltcGxlbWVudGF0aW9uLCBidXQKICAgIG9mdGVuIG5lZWRlZCB0byBmb3JtYXQgZXJyb3IgbWVzc2FnZXM7IHRoZSBuYXRpdmUgQyBsaWIgQVBJcyBhcmUKICAgIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcywgd2hpY2ggaXMgd2h5IHdlIHByb3ZpZGUgZW11bGF0aW9ucwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWV4cGF0LmggYi9JbmNsdWRlL3B5ZXhwYXQuaAppbmRleCA1MzQwZWY1Li4xNjhiNWIyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXhwYXQuaAorKysgYi9JbmNsdWRlL3B5ZXhwYXQuaApAQCAtNDMsNiArNDMsOCBAQAogICAgICAgICBYTUxfUGFyc2VyIHBhcnNlciwgWE1MX1Vua25vd25FbmNvZGluZ0hhbmRsZXIgaGFuZGxlciwKICAgICAgICAgdm9pZCAqZW5jb2RpbmdIYW5kbGVyRGF0YSk7CiAgICAgdm9pZCAoKlNldFVzZXJEYXRhKShYTUxfUGFyc2VyIHBhcnNlciwgdm9pZCAqdXNlckRhdGEpOworICAgIHZvaWQgKCpTZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlcikoWE1MX1BhcnNlciBwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgc3RhcnQpOwogICAgIC8qIGFsd2F5cyBhZGQgbmV3IHN0dWZmIHRvIHRoZSBlbmQhICovCiB9OwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWFjcm8uaCBiL0luY2x1ZGUvcHltYWNyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZThlZTMKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5bWFjcm8uaApAQCAtMCwwICsxLDY5IEBACisjaWZuZGVmIFB5X1BZTUFDUk9fSAorI2RlZmluZSBQeV9QWU1BQ1JPX0gKKworI2RlZmluZSBQeV9NSU4oeCwgeSkgKCgoeCkgPiAoeSkpID8gKHkpIDogKHgpKQorI2RlZmluZSBQeV9NQVgoeCwgeSkgKCgoeCkgPiAoeSkpID8gKHgpIDogKHkpKQorCisvKiBBcmd1bWVudCBtdXN0IGJlIGEgY2hhciBvciBhbiBpbnQgaW4gWy0xMjgsIDEyN10gb3IgWzAsIDI1NV0uICovCisjZGVmaW5lIFB5X0NIQVJNQVNLKGMpICgodW5zaWduZWQgY2hhcikoKGMpICYgMHhmZikpCisKKworLyogQXNzZXJ0IGEgYnVpbGQtdGltZSBkZXBlbmRlbmN5LCBhcyBhbiBleHByZXNzaW9uLgorCisgICBZb3VyIGNvbXBpbGUgd2lsbCBmYWlsIGlmIHRoZSBjb25kaXRpb24gaXNuJ3QgdHJ1ZSwgb3IgY2FuJ3QgYmUgZXZhbHVhdGVkCisgICBieSB0aGUgY29tcGlsZXIuIFRoaXMgY2FuIGJlIHVzZWQgaW4gYW4gZXhwcmVzc2lvbjogaXRzIHZhbHVlIGlzIDAuCisKKyAgIEV4YW1wbGU6CisKKyAgICNkZWZpbmUgZm9vX3RvX2NoYXIoZm9vKSAgXAorICAgICAgICgoY2hhciAqKShmb28pICAgICAgICBcCisgICAgICAgICsgUHlfQlVJTERfQVNTRVJUX0VYUFIob2Zmc2V0b2Yoc3RydWN0IGZvbywgc3RyaW5nKSA9PSAwKSkKKworICAgV3JpdHRlbiBieSBSdXN0eSBSdXNzZWxsLCBwdWJsaWMgZG9tYWluLCBodHRwOi8vY2NvZGVhcmNoaXZlLm5ldC8gKi8KKyNkZWZpbmUgUHlfQlVJTERfQVNTRVJUX0VYUFIoY29uZCkgXAorICAgIChzaXplb2YoY2hhciBbMSAtIDIqIShjb25kKV0pIC0gMSkKKworLyogR2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2aXNpYmxlIGFycmF5CisKKyAgIFRoaXMgZG9lcyBub3Qgd29yayBvbiBwb2ludGVycywgb3IgYXJyYXlzIGRlY2xhcmVkIGFzIFtdLCBvciBmdW5jdGlvbgorICAgcGFyYW1ldGVycy4gV2l0aCBjb3JyZWN0IGNvbXBpbGVyIHN1cHBvcnQsIHN1Y2ggdXNhZ2Ugd2lsbCBjYXVzZSBhIGJ1aWxkCisgICBlcnJvciAoc2VlIFB5X0JVSUxEX0FTU0VSVF9FWFBSKS4KKworICAgV3JpdHRlbiBieSBSdXN0eSBSdXNzZWxsLCBwdWJsaWMgZG9tYWluLCBodHRwOi8vY2NvZGVhcmNoaXZlLm5ldC8gKi8KKyNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKSkKKy8qIFR3byBnY2MgZXh0ZW5zaW9ucy4KKyAgICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjogYSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovCisjZGVmaW5lIFB5X0FSUkFZX0xFTkdUSChhcnJheSkgXAorICAgIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKChhcnJheSlbMF0pIFwKKyAgICAgKyBQeV9CVUlMRF9BU1NFUlRfRVhQUighX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoYXJyYXkpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mKCYoYXJyYXkpWzBdKSkpKQorI2Vsc2UKKyNkZWZpbmUgUHlfQVJSQVlfTEVOR1RIKGFycmF5KSBcCisgICAgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKGFycmF5KVswXSkpCisjZW5kaWYKKworCisvKiBEZWZpbmUgbWFjcm9zIGZvciBpbmxpbmUgZG9jdW1lbnRhdGlvbi4gKi8KKyNkZWZpbmUgUHlEb2NfVkFSKG5hbWUpIHN0YXRpYyBjaGFyIG5hbWVbXQorI2RlZmluZSBQeURvY19TVFJWQVIobmFtZSxzdHIpIFB5RG9jX1ZBUihuYW1lKSA9IFB5RG9jX1NUUihzdHIpCisjaWZkZWYgV0lUSF9ET0NfU1RSSU5HUworI2RlZmluZSBQeURvY19TVFIoc3RyKSBzdHIKKyNlbHNlCisjZGVmaW5lIFB5RG9jX1NUUihzdHIpICIiCisjZW5kaWYKKworLyogQmVsb3cgImEiIGlzIGEgcG93ZXIgb2YgMi4gKi8KKy8qIFJvdW5kIGRvd24gc2l6ZSAibiIgdG8gYmUgYSBtdWx0aXBsZSBvZiAiYSIuICovCisjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX0RPV04obiwgYSkgKChzaXplX3QpKG4pICYgfihzaXplX3QpKChhKSAtIDEpKQorLyogUm91bmQgdXAgc2l6ZSAibiIgdG8gYmUgYSBtdWx0aXBsZSBvZiAiYSIuICovCisjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX1VQKG4sIGEpICgoKHNpemVfdCkobikgKyBcCisgICAgICAgIChzaXplX3QpKChhKSAtIDEpKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKKy8qIFJvdW5kIHBvaW50ZXIgInAiIGRvd24gdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA8PSAicCIuICovCisjZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgoUHlfdWludHB0cl90KShwKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisvKiBSb3VuZCBwb2ludGVyICJwIiB1cCB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzID49ICJwIi4gKi8KKyNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKFB5X3VpbnRwdHJfdCkocCkgKyBcCisgICAgICAgIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisvKiBDaGVjayBpZiBwb2ludGVyICJwIiBpcyBhbGlnbmVkIHRvICJhIi1ieXRlcyBib3VuZGFyeS4gKi8KKyNkZWZpbmUgX1B5X0lTX0FMSUdORUQocCwgYSkgKCEoKFB5X3VpbnRwdHJfdCkocCkgJiAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisKKyNlbmRpZiAvKiBQeV9QWU1BQ1JPX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYXRoLmggYi9JbmNsdWRlL3B5bWF0aC5oCmluZGV4IGI0ZWRhNjYuLjYyYTZjNDIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYXRoLmgKKysrIGIvSW5jbHVkZS9weW1hdGguaApAQCAtMzcsMTIgKzM3LDYgQEAKICNlbmRpZiAvKiBfX1NURENfXyAqLwogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoZXNlIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gaW50IGZpbml0ZShkb3VibGUpOwotZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbihkb3VibGUsIGRvdWJsZSk7Ci0jZW5kaWYKLQogLyogSGlnaCBwcmVjaXNpb24gZGVmaW50aW9uIG9mIHBpIGFuZCBlIChFdWxlcikKICAqIFRoZSB2YWx1ZXMgYXJlIHRha2VuIGZyb20gbGliYzYncyBtYXRoLmguCiAgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlwb3J0LmggYi9JbmNsdWRlL3B5cG9ydC5oCmluZGV4IDRlZjBkYjIuLmViYTM0ZjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlwb3J0LmgKKysrIGIvSW5jbHVkZS9weXBvcnQuaApAQCAtMTM1LDcgKzEzNSw3IEBACiAjZGVmaW5lIF9QeUhBU0hfTVVMVElQTElFUiAxMDAwMDAzICAvKiAweGY0MjQzICovCiAKIC8qIFBhcmFtZXRlcnMgdXNlZCBmb3IgdGhlIG51bWVyaWMgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIFNlZSBub3RlcyBmb3IKLSAgIF9QeUhhc2hfRG91YmxlIGluIE9iamVjdHMvb2JqZWN0LmMuICBOdW1lcmljIGhhc2hlcyBhcmUgYmFzZWQgb24KKyAgIF9QeV9IYXNoRG91YmxlIGluIE9iamVjdHMvb2JqZWN0LmMuICBOdW1lcmljIGhhc2hlcyBhcmUgYmFzZWQgb24KICAgIHJlZHVjdGlvbiBtb2R1bG8gdGhlIHByaW1lIDIqKl9QeUhBU0hfQklUUyAtIDEuICovCiAKICNpZiBTSVpFT0ZfVk9JRF9QID49IDgKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdGF0ZS5oIGIvSW5jbHVkZS9weXN0YXRlLmgKaW5kZXggMDYwZWZhNy4uMjAxN2IwMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0YXRlLmgKKysrIGIvSW5jbHVkZS9weXN0YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKICAgICBQeU9iamVjdCAqbW9kdWxlc19ieV9pbmRleDsKICAgICBQeU9iamVjdCAqc3lzZGljdDsKICAgICBQeU9iamVjdCAqYnVpbHRpbnM7Ci0gICAgUHlPYmplY3QgKm1vZHVsZXNfcmVsb2FkaW5nOworICAgIFB5T2JqZWN0ICppbXBvcnRsaWI7CiAKICAgICBQeU9iamVjdCAqY29kZWNfc2VhcmNoX3BhdGg7CiAgICAgUHlPYmplY3QgKmNvZGVjX3NlYXJjaF9jYWNoZTsKQEAgLTMzLDYgKzMzLDcgQEAKICAgICBpbnQgY29kZWNzX2luaXRpYWxpemVkOwogICAgIGludCBmc2NvZGVjX2luaXRpYWxpemVkOwogCisKICNpZmRlZiBIQVZFX0RMT1BFTgogICAgIGludCBkbG9wZW5mbGFnczsKICNlbmRpZgpAQCAtNzQsOSArNzUsOSBAQAogICAgIHN0cnVjdCBfZnJhbWUgKmZyYW1lOwogICAgIGludCByZWN1cnNpb25fZGVwdGg7CiAgICAgY2hhciBvdmVyZmxvd2VkOyAvKiBUaGUgc3RhY2sgaGFzIG92ZXJmbG93ZWQuIEFsbG93IDUwIG1vcmUgY2FsbHMKLQkJICAgICAgICB0byBoYW5kbGUgdGhlIHJ1bnRpbWUgZXJyb3IuICovCi0gICAgY2hhciByZWN1cnNpb25fY3JpdGljYWw7IC8qIFRoZSBjdXJyZW50IGNhbGxzIG11c3Qgbm90IGNhdXNlIAotCQkJCWEgc3RhY2sgb3ZlcmZsb3cuICovCisgICAgICAgICAgICAgICAgICAgICAgICB0byBoYW5kbGUgdGhlIHJ1bnRpbWUgZXJyb3IuICovCisgICAgY2hhciByZWN1cnNpb25fY3JpdGljYWw7IC8qIFRoZSBjdXJyZW50IGNhbGxzIG11c3Qgbm90IGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RhY2sgb3ZlcmZsb3cuICovCiAgICAgLyogJ3RyYWNpbmcnIGtlZXBzIHRyYWNrIG9mIHRoZSBleGVjdXRpb24gZGVwdGggd2hlbiB0cmFjaW5nL3Byb2ZpbGluZy4KICAgICAgICBUaGlzIGlzIHRvIHByZXZlbnQgdGhlIGFjdHVhbCB0cmFjZS9wcm9maWxlIGNvZGUgZnJvbSBiZWluZyByZWNvcmRlZCBpbgogICAgICAgIHRoZSB0cmFjZS9wcm9maWxlLiAqLwpAQCAtMTI2LDYgKzEyNywxMSBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCisvKiBOZXcgaW4gMy4zICovCitQeUFQSV9GVU5DKGludCkgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeVN0YXRlX1JlbW92ZU1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5U3RhdGVfRmluZE1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfTmV3KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKQEAgLTE2Myw2ICsxNjksOCBAQAogICAgIGVudW0ge1B5R0lMU3RhdGVfTE9DS0VELCBQeUdJTFN0YXRlX1VOTE9DS0VEfQogICAgICAgICBQeUdJTFN0YXRlX1NUQVRFOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKwogLyogRW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHJlYWR5IHRvIGNhbGwgdGhlIFB5dGhvbgogICAgQyBBUEksIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgUHl0aG9uLCBvciBvZiBpdHMKICAgIHRocmVhZCBsb2NrLiAgVGhpcyBtYXkgYmUgY2FsbGVkIGFzIG1hbnkgdGltZXMgYXMgZGVzaXJlZApAQCAtMjA0LDYgKzIxMiw4IEBACiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKHZvaWQpOwogCisjZW5kaWYgICAvKiAjaWZkZWYgV0lUSF9USFJFQUQgKi8KKwogLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHN5cy5fY3VycmVudF9mcmFtZXMoKSAgUmV0dXJucyBhIGRpY3QgbWFwcGluZwogICAgdGhyZWFkIGlkIHRvIHRoYXQgdGhyZWFkJ3MgY3VycmVudCBmcmFtZS4KICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhvbnJ1bi5oIGIvSW5jbHVkZS9weXRob25ydW4uaAppbmRleCBlMjQ0Y2U3Li40ZDI0YjJkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKQEAgLTMwLDYgKzMwLDkgQEAKIAogUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplRXgoaW50KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCwgaW50KTsKKyNlbmRpZgogUHlBUElfRlVOQyh2b2lkKSBQeV9GaW5hbGl6ZSh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwpAQCAtODIsOSArODUsMTIgQEAKICAgICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncyhGUCwgUywgQiwgMCkKICNlbmRpZgogUHlBUElfRlVOQyhzdHJ1Y3QgX25vZGUgKikgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncyhjb25zdCBjaGFyICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpOworUHlBUElfRlVOQyhzdHJ1Y3QgX25vZGUgKikgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1lKGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOwogUHlBUElfRlVOQyhzdHJ1Y3QgX25vZGUgKikgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MoRklMRSAqLCBjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50KTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVJ1bl9TdHJpbmdGbGFncyhjb25zdCBjaGFyICosIGludCwgUHlPYmplY3QgKiwKQEAgLTE3OSw5ICsxODUsNiBAQAogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfc3ZudmVyc2lvbih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9TdWJ2ZXJzaW9uUmV2aXNpb24odm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfU3VidmVyc2lvblNob3J0QnJhbmNoKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ2lkZW50aWZpZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hndmVyc2lvbih2b2lkKTsKICNlbmRpZgpAQCAtMTkxLDcgKzE5NCw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ1aWx0aW5fSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0luaXQoUHlPYmplY3QgKiBibHRpbm1vZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKGludCkgX1B5RnJhbWVfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RmxvYXRfSW5pdCh2b2lkKTsKQEAgLTIxNSw2ICsyMTgsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUZsb2F0X0Zpbmkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfRmluaUludGVycnVwdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUdDX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKIAogUHlBUElfREFUQShQeVRocmVhZFN0YXRlICopIF9QeV9GaW5hbGl6aW5nOwogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhyZWFkLmggYi9JbmNsdWRlL3B5dGhyZWFkLmgKaW5kZXggOTgwNmM2MS4uNmU5ZjMwMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRocmVhZC5oCisrKyBiL0luY2x1ZGUvcHl0aHJlYWQuaApAQCAtMzIsNyArMzIsNyBAQAogICAgb24gYSBsb2NrIChzZWUgUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKCkgYmVsb3cpLgogICAgUFlfVElNRU9VVF9NQVggaXMgdGhlIGhpZ2hlc3QgdXNhYmxlIHZhbHVlIChpbiBtaWNyb3NlY29uZHMpIG9mIHRoYXQKICAgIHR5cGUsIGFuZCBkZXBlbmRzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIEFQSS4KLSAgIAorCiAgICBOT1RFOiB0aGlzIGlzbid0IHRoZSBzYW1lIHZhbHVlIGFzIGBfdGhyZWFkLlRJTUVPVVRfTUFYYC4gIFRoZSBfdGhyZWFkCiAgICBtb2R1bGUgZXhwb3NlcyBhIGhpZ2hlci1sZXZlbCBBUEksIHdpdGggdGltZW91dHMgZXhwcmVzc2VkIGluIHNlY29uZHMKICAgIGFuZCBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFsbG93ZWQuCkBAIC03NCw2ICs3NCw4IEBACiBQeUFQSV9GVU5DKHNpemVfdCkgUHlUaHJlYWRfZ2V0X3N0YWNrc2l6ZSh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeVRocmVhZF9zZXRfc3RhY2tzaXplKHNpemVfdCk7CiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVRocmVhZF9HZXRJbmZvKHZvaWQpOworCiAvKiBUaHJlYWQgTG9jYWwgU3RvcmFnZSAoVExTKSBBUEkgKi8KIFB5QVBJX0ZVTkMoaW50KSBQeVRocmVhZF9jcmVhdGVfa2V5KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZF9kZWxldGVfa2V5KGludCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGltZS5oIGIvSW5jbHVkZS9weXRpbWUuaAppbmRleCBkNzA3YmRiLi41MjkwMmY1IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGltZS5oCisrKyBiL0luY2x1ZGUvcHl0aW1lLmgKQEAgLTMsNiArMyw3IEBACiAjZGVmaW5lIFB5X1BZVElNRV9ICiAKICNpbmNsdWRlICJweWNvbmZpZy5oIiAvKiBpbmNsdWRlIGZvciBkZWZpbmVzICovCisjaW5jbHVkZSAib2JqZWN0LmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogU3ltYm9scyBhbmQgbWFjcm9zIHRvIHN1cHBseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbnRlcmZhY2VzIHRvIHRpbWUgcmVsYXRlZApAQCAtMjEsMTEgKzIyLDI1IEBACiB9IF9QeVRpbWVfdGltZXZhbDsKICNlbmRpZgogCisvKiBTdHJ1Y3R1cmUgdXNlZCBieSB0aW1lLmdldF9jbG9ja19pbmZvKCkgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyICppbXBsZW1lbnRhdGlvbjsKKyAgICBpbnQgbW9ub3RvbmljOworICAgIGludCBhZGp1c3RhYmxlOworICAgIGRvdWJsZSByZXNvbHV0aW9uOworfSBfUHlfY2xvY2tfaW5mb190OworCiAvKiBTaW1pbGFyIHRvIFBPU0lYIGdldHRpbWVvZmRheSBidXQgY2Fubm90IGZhaWwuICBJZiBzeXN0ZW0gZ2V0dGltZW9mZGF5CiAgKiBmYWlscyBvciBpcyBub3QgYXZhaWxhYmxlLCBmYWxsIGJhY2sgdG8gbG93ZXIgcmVzb2x1dGlvbiBjbG9ja3MuCiAgKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCk7CiAKKy8qIFNpbWlsYXIgdG8gX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBidXQgcmV0cmlldmUgYWxzbyBpbmZvcm1hdGlvbiBvbiB0aGUKKyAqIGNsb2NrIHVzZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oCisgICAgX1B5VGltZV90aW1ldmFsICp0cCwKKyAgICBfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKKwogI2RlZmluZSBfUHlUaW1lX0FERF9TRUNPTkRTKHR2LCBpbnRlcnZhbCkgXAogZG8geyBcCiAgICAgdHYudHZfdXNlYyArPSAobG9uZykgKCgobG9uZykgaW50ZXJ2YWwgLSBpbnRlcnZhbCkgKiAxMDAwMDAwKTsgXApAQCAtMzcsNiArNTIsMzcgQEAKICAgICAoKHR2X2VuZC50dl9zZWMgLSB0dl9zdGFydC50dl9zZWMpICsgXAogICAgICAodHZfZW5kLnR2X3VzZWMgLSB0dl9zdGFydC50dl91c2VjKSAqIDAuMDAwMDAxKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gdGltZV90LiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYyk7CisKKy8qIENvbnZlcnQgYSB0aW1lX3QgdG8gYSBQeUxvbmcuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRnJvbVRpbWVfdCgKKyAgICB0aW1lX3Qgc2VjKTsKKworLyogQ29udmVydCBhIFB5TG9uZyB0byBhIHRpbWVfdC4gKi8KK1B5QVBJX0ZVTkModGltZV90KSBfUHlMb25nX0FzVGltZV90KAorICAgIFB5T2JqZWN0ICpvYmopOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gYSB0aW1ldmFsIHN0cnVjdHVyZS4KKyAgIHVzZWMgaXMgaW4gdGhlIHJhbmdlIFswOyA5OTk5OTldIGFuZCByb3VuZGVkIHRvd2FyZHMgemVyby4KKyAgIEZvciBleGFtcGxlLCAtMS4yIGlzIGNvbnZlcnRlZCB0byAoLTIsIDgwMDAwMCkuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYywKKyAgICBsb25nICp1c2VjKTsKKworLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIGEgdGltZXNwZWMgc3RydWN0dXJlLgorICAgbnNlYyBpcyBpbiB0aGUgcmFuZ2UgWzA7IDk5OTk5OTk5OV0gYW5kIHJvdW5kZWQgdG93YXJkcyB6ZXJvLgorICAgRm9yIGV4YW1wbGUsIC0xLjIgaXMgY29udmVydGVkIHRvICgtMiwgODAwMDAwMDAwKS4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYywKKyAgICBsb25nICpuc2VjKTsKKyNlbmRpZgorCiAvKiBEdW1teSB0byBmb3JjZSBsaW5raW5nLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX0luaXQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2V0b2JqZWN0LmggYi9JbmNsdWRlL3NldG9iamVjdC5oCmluZGV4IDYyMzQxMTEuLmExNDg3NGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc2V0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zZXRvYmplY3QuaApAQCAtOTksNiArOTksOSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNldF9Qb3AoUHlPYmplY3QgKnNldCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5U2V0X1VwZGF0ZShQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqaXRlcmFibGUpOworCitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5U2V0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmggYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCmluZGV4IDBiODViMmEuLjk0OGY2OTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKKysrIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaApAQCAtOSwxNiArOSw2IEBACiAKICNpbmNsdWRlIDxzdGRkZWYuaD4gLyogRm9yIG9mZnNldG9mICovCiAKLS8qIFRoZSBvZmZzZXRvZigpIG1hY3JvIGNhbGN1bGF0ZXMgdGhlIG9mZnNldCBvZiBhIHN0cnVjdHVyZSBtZW1iZXIKLSAgIGluIGl0cyBzdHJ1Y3R1cmUuICBVbmZvcnR1bmF0ZWx5IHRoaXMgY2Fubm90IGJlIHdyaXR0ZW4gZG93bgotICAgcG9ydGFibHksIGhlbmNlIGl0IGlzIHByb3ZpZGVkIGJ5IGEgU3RhbmRhcmQgQyBoZWFkZXIgZmlsZS4KLSAgIEZvciBwcmUtU3RhbmRhcmQgQyBjb21waWxlcnMsIGhlcmUgaXMgYSB2ZXJzaW9uIHRoYXQgdXN1YWxseSB3b3JrcwotICAgKGJ1dCB3YXRjaCBvdXQhKTogKi8KLQotI2lmbmRlZiBvZmZzZXRvZgotI2RlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICggKGludCkgJiAoKHR5cGUqKTApIC0+IG1lbWJlciApCi0jZW5kaWYKLQogLyogQW4gYXJyYXkgb2YgUHlNZW1iZXJEZWYgc3RydWN0dXJlcyBkZWZpbmVzIHRoZSBuYW1lLCB0eXBlIGFuZCBvZmZzZXQKICAgIG9mIHNlbGVjdGVkIG1lbWJlcnMgb2YgYSBDIHN0cnVjdHVyZS4gIFRoZXNlIGNhbiBiZSByZWFkIGJ5CiAgICBQeU1lbWJlcl9HZXRPbmUoKSBhbmQgc2V0IGJ5IFB5TWVtYmVyX1NldE9uZSgpIChleGNlcHQgaWYgdGhlaXIgUkVBRE9OTFkKQEAgLTI2LDQyICsxNiw0MSBAQAogICAgcG9pbnRlciBpcyBOVUxMLiAqLwogCiB0eXBlZGVmIHN0cnVjdCBQeU1lbWJlckRlZiB7Ci0JLyogQ3VycmVudCB2ZXJzaW9uLCB1c2UgdGhpcyAqLwotCWNoYXIgKm5hbWU7Ci0JaW50IHR5cGU7Ci0JUHlfc3NpemVfdCBvZmZzZXQ7Ci0JaW50IGZsYWdzOwotCWNoYXIgKmRvYzsKKyAgICBjaGFyICpuYW1lOworICAgIGludCB0eXBlOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIGludCBmbGFnczsKKyAgICBjaGFyICpkb2M7CiB9IFB5TWVtYmVyRGVmOwogCiAvKiBUeXBlcyAqLwotI2RlZmluZSBUX1NIT1JUCQkwCi0jZGVmaW5lIFRfSU5UCQkxCi0jZGVmaW5lIFRfTE9ORwkJMgotI2RlZmluZSBUX0ZMT0FUCQkzCi0jZGVmaW5lIFRfRE9VQkxFCTQKLSNkZWZpbmUgVF9TVFJJTkcJNQotI2RlZmluZSBUX09CSkVDVAk2CisjZGVmaW5lIFRfU0hPUlQgICAgIDAKKyNkZWZpbmUgVF9JTlQgICAgICAgMQorI2RlZmluZSBUX0xPTkcgICAgICAyCisjZGVmaW5lIFRfRkxPQVQgICAgIDMKKyNkZWZpbmUgVF9ET1VCTEUgICAgNAorI2RlZmluZSBUX1NUUklORyAgICA1CisjZGVmaW5lIFRfT0JKRUNUICAgIDYKIC8qIFhYWCB0aGUgb3JkZXJpbmcgaGVyZSBpcyB3ZWlyZCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgKi8KLSNkZWZpbmUgVF9DSEFSCQk3CS8qIDEtY2hhcmFjdGVyIHN0cmluZyAqLwotI2RlZmluZSBUX0JZVEUJCTgJLyogOC1iaXQgc2lnbmVkIGludCAqLworI2RlZmluZSBUX0NIQVIgICAgICA3ICAgLyogMS1jaGFyYWN0ZXIgc3RyaW5nICovCisjZGVmaW5lIFRfQllURSAgICAgIDggICAvKiA4LWJpdCBzaWduZWQgaW50ICovCiAvKiB1bnNpZ25lZCB2YXJpYW50czogKi8KLSNkZWZpbmUgVF9VQllURQkJOQotI2RlZmluZSBUX1VTSE9SVAkxMAotI2RlZmluZSBUX1VJTlQJCTExCi0jZGVmaW5lIFRfVUxPTkcJCTEyCisjZGVmaW5lIFRfVUJZVEUgICAgIDkKKyNkZWZpbmUgVF9VU0hPUlQgICAgMTAKKyNkZWZpbmUgVF9VSU5UICAgICAgMTEKKyNkZWZpbmUgVF9VTE9ORyAgICAgMTIKIAogLyogQWRkZWQgYnkgSmFjazogc3RyaW5ncyBjb250YWluZWQgaW4gdGhlIHN0cnVjdHVyZSAqLwotI2RlZmluZSBUX1NUUklOR19JTlBMQUNFCTEzCisjZGVmaW5lIFRfU1RSSU5HX0lOUExBQ0UgICAgMTMKIAogLyogQWRkZWQgYnkgTGlsbG86IGJvb2xzIGNvbnRhaW5lZCBpbiB0aGUgc3RydWN0dXJlIChhc3N1bWVkIGNoYXIpICovCi0jZGVmaW5lIFRfQk9PTAkJMTQKKyNkZWZpbmUgVF9CT09MICAgICAgMTQKIAotI2RlZmluZSBUX09CSkVDVF9FWAkxNgkvKiBMaWtlIFRfT0JKRUNULCBidXQgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCi0JCQkJICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgotCQkJCSAgIGNvbnZlcnRpbmcgdG8gTm9uZS4gKi8KKyNkZWZpbmUgVF9PQkpFQ1RfRVggMTYgIC8qIExpa2UgVF9PQkpFQ1QsIGJ1dCByYWlzZXMgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIHZhbHVlIGlzIE5VTEwsIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRpbmcgdG8gTm9uZS4gKi8KICNpZmRlZiBIQVZFX0xPTkdfTE9ORwotI2RlZmluZSBUX0xPTkdMT05HICAgICAgMTcgIAorI2RlZmluZSBUX0xPTkdMT05HICAgICAgMTcKICNkZWZpbmUgVF9VTE9OR0xPTkcgICAgIDE4CiAjZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KIApAQCAtNzAsMTAgKzU5LDEwIEBACiAKIAogLyogRmxhZ3MgKi8KLSNkZWZpbmUgUkVBRE9OTFkJMQotI2RlZmluZSBSRUFEX1JFU1RSSUNURUQJMgorI2RlZmluZSBSRUFET05MWSAgICAgICAgICAgIDEKKyNkZWZpbmUgUkVBRF9SRVNUUklDVEVEICAgICAyCiAjZGVmaW5lIFBZX1dSSVRFX1JFU1RSSUNURUQgNAotI2RlZmluZSBSRVNUUklDVEVECShSRUFEX1JFU1RSSUNURUQgfCBQWV9XUklURV9SRVNUUklDVEVEKQorI2RlZmluZSBSRVNUUklDVEVEICAgICAgICAgIChSRUFEX1JFU1RSSUNURUQgfCBQWV9XUklURV9SRVNUUklDVEVEKQogCiAKIC8qIEN1cnJlbnQgQVBJLCB1c2UgdGhpcyAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IGZkN2RlMDQuLjgyZjYyNjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTIzLDEwICsyMywxMyBAQAogICAgIFB5T2JqZWN0ICpzdF9ibG9ja3M7ICAgICAgICAgICAgLyogZGljdDogbWFwIEFTVCBub2RlIGFkZHJlc3NlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgdG8gc3ltYm9sIHRhYmxlIGVudHJpZXMgKi8KICAgICBQeU9iamVjdCAqc3Rfc3RhY2s7ICAgICAgICAgICAgIC8qIGxpc3Q6IHN0YWNrIG9mIG5hbWVzcGFjZSBpbmZvICovCi0gICAgUHlPYmplY3QgKnN0X2dsb2JhbDsgICAgICAgICAgICAvKiBib3Jyb3dlZCByZWYgdG8gc3RfdG9wLT5zdF9zeW1ib2xzICovCi0gICAgaW50IHN0X25ibG9ja3M7ICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYmxvY2tzIHVzZWQgKi8KKyAgICBQeU9iamVjdCAqc3RfZ2xvYmFsOyAgICAgICAgICAgIC8qIGJvcnJvd2VkIHJlZiB0byBzdF90b3AtPnN0ZV9zeW1ib2xzICovCisgICAgaW50IHN0X25ibG9ja3M7ICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYmxvY2tzIHVzZWQuIGtlcHQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zaXN0ZW5jeSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlciBzdHJ1Y3R1cmUgKi8KICAgICBQeU9iamVjdCAqc3RfcHJpdmF0ZTsgICAgICAgICAgIC8qIG5hbWUgb2YgY3VycmVudCBjbGFzcyBvciBOVUxMICovCi0gICAgUHlGdXR1cmVGZWF0dXJlcyAqc3RfZnV0dXJlOyAgICAvKiBtb2R1bGUncyBmdXR1cmUgZmVhdHVyZXMgKi8KKyAgICBQeUZ1dHVyZUZlYXR1cmVzICpzdF9mdXR1cmU7ICAgIC8qIG1vZHVsZSdzIGZ1dHVyZSBmZWF0dXJlcyB0aGF0IGFmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5bWJvbCB0YWJsZSAqLwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgX3N5bXRhYmxlX2VudHJ5IHsKQEAgLTM0LDcgKzM3LDcgQEAKICAgICBQeU9iamVjdCAqc3RlX2lkOyAgICAgICAgLyogaW50OiBrZXkgaW4gc3RlX3RhYmxlLT5zdF9ibG9ja3MgKi8KICAgICBQeU9iamVjdCAqc3RlX3N5bWJvbHM7ICAgLyogZGljdDogdmFyaWFibGUgbmFtZXMgdG8gZmxhZ3MgKi8KICAgICBQeU9iamVjdCAqc3RlX25hbWU7ICAgICAgLyogc3RyaW5nOiBuYW1lIG9mIGN1cnJlbnQgYmxvY2sgKi8KLSAgICBQeU9iamVjdCAqc3RlX3Zhcm5hbWVzOyAgLyogbGlzdCBvZiB2YXJpYWJsZSBuYW1lcyAqLworICAgIFB5T2JqZWN0ICpzdGVfdmFybmFtZXM7ICAvKiBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMgKi8KICAgICBQeU9iamVjdCAqc3RlX2NoaWxkcmVuOyAgLyogbGlzdCBvZiBjaGlsZCBibG9ja3MgKi8KICAgICBfUHlfYmxvY2tfdHkgc3RlX3R5cGU7ICAgLyogbW9kdWxlLCBjbGFzcywgb3IgZnVuY3Rpb24gKi8KICAgICBpbnQgc3RlX3Vub3B0aW1pemVkOyAgICAgLyogZmFsc2UgaWYgbmFtZXNwYWNlIGlzIG9wdGltaXplZCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90aW1lZnVuY3MuaCBiL0luY2x1ZGUvdGltZWZ1bmNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNDM1NzUuLjAwMDAwMDAKLS0tIGEvSW5jbHVkZS90aW1lZnVuY3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8qICB0aW1lZnVuY3MuaAotICovCi0KLS8qIFV0aWxpdHkgZnVuY3Rpb24gcmVsYXRlZCB0byB0aW1lbW9kdWxlLmMuICovCi0KLSNpZm5kZWYgVElNRUZVTkNTX0gKLSNkZWZpbmUgVElNRUZVTkNTX0gKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotCi0vKiBDYXN0IGRvdWJsZSB4IHRvIHRpbWVfdCwgYnV0IHJhaXNlIFZhbHVlRXJyb3IgaWYgeCBpcyB0b28gbGFyZ2UKLSAqIHRvIGZpdCBpbiBhIHRpbWVfdC4gIFZhbHVlRXJyb3IgaXMgc2V0IG9uIHJldHVybiBpZmYgdGhlIHJldHVybgotICogdmFsdWUgaXMgKHRpbWVfdCktMSBhbmQgUHlFcnJfT2NjdXJyZWQoKS4KLSAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyh0aW1lX3QpIF9QeVRpbWVfRG91YmxlVG9UaW1ldChkb3VibGUgeCk7Ci0jZW5kaWYKLQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmICAvKiBUSU1FRlVOQ1NfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90cmFjZWJhY2suaCBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKaW5kZXggNjllM2QwNS4uNzczNDcwNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS90cmFjZWJhY2suaAorKysgYi9JbmNsdWRlL3RyYWNlYmFjay5oCkBAIC01LDYgKzUsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2luY2x1ZGUgInB5c3RhdGUuaCIKKwogc3RydWN0IF9mcmFtZTsKIAogLyogVHJhY2ViYWNrIGludGVyZmFjZSAqLwpAQCAtMjgsNiArMzAsNDIgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVRyYWNlQmFja19UeXBlOwogI2RlZmluZSBQeVRyYWNlQmFja19DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmUHlUcmFjZUJhY2tfVHlwZSkKIAorLyogV3JpdGUgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaW50byB0aGUgZmlsZSAnZmQnLiBGb3IgZXhhbXBsZToKKworICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorICAgICAgICAgRmlsZSAieHh4IiwgbGluZSB4eHggaW4gPHh4eD4KKyAgICAgICAgIC4uLgorICAgICAgICAgRmlsZSAieHh4IiwgbGluZSB4eHggaW4gPHh4eD4KKworICAgVGhpcyBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHksIHRvIGR1bXAgdGhlIHRyYWNlYmFjayBpbgorICAgdGhlIHdvcnN0IGNhc2U6IGFmdGVyIGEgc2VnbWVudGF0aW9uIGZhdWx0LCBhdCBmYXRhbCBlcnJvciwgZXRjLiBUaGF0J3Mgd2h5LAorICAgaXQgaXMgdmVyeSBsaW1pdGVkLiBTdHJpbmdzIGFyZSB0cnVuY2F0ZWQgdG8gMTAwIGNoYXJhY3RlcnMgYW5kIGVuY29kZWQgdG8KKyAgIEFTQ0lJIHdpdGggYmFja3NsYXNocmVwbGFjZS4gSXQgZG9lc24ndCB3cml0ZSB0aGUgc291cmNlIGNvZGUsIG9ubHkgdGhlCisgICBmdW5jdGlvbiBuYW1lLCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgb2YgZWFjaCBmcmFtZS4gV3JpdGUgb25seSB0aGUgZmlyc3QKKyAgIDEwMCBmcmFtZXM6IGlmIHRoZSB0cmFjZWJhY2sgaXMgdHJ1bmNhdGVkLCB3cml0ZSB0aGUgbGluZSAiIC4uLiIuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK1B5QVBJX0RBVEEodm9pZCkgX1B5X0R1bXBUcmFjZWJhY2soCisgICAgaW50IGZkLAorICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CisKKy8qIFdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW50byB0aGUgZmlsZSAnZmQnLiBjdXJyZW50X3RocmVhZCBjYW4gYmUKKyAgIE5VTEwuIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgd3JpdHRlbiBmb3IgZGVidWcgcHVycG9zZSBvbmx5LiBJdCBjYWxscworICAgX1B5X0R1bXBUcmFjZWJhY2soKSBmb3IgZWFjaCB0aHJlYWQsIGFuZCBzbyBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbnMuIEl0CisgICBvbmx5IHdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgdGhlIGZpcnN0IDEwMCB0aHJlYWRzOiB3cml0ZSAiLi4uIiBpZiB0aGVyZSBhcmUKKyAgIG1vcmUgdGhyZWFkcy4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworUHlBUElfREFUQShjb25zdCBjaGFyKikgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKAorICAgIGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpOworCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3R1cGxlb2JqZWN0LmggYi9JbmNsdWRlL3R1cGxlb2JqZWN0LmgKaW5kZXggZjE3Yjc4OC4uYzI3M2NlNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS90dXBsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvdHVwbGVvYmplY3QuaApAQCAtNjMsNiArNjMsOSBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoaW50KSBQeVR1cGxlX0NsZWFyRnJlZUxpc3Qodm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeVR1cGxlX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvdWNuaGFzaC5oIGIvSW5jbHVkZS91Y25oYXNoLmgKaW5kZXggNzBmZGYxMy4uOGRlOWJhMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS91Y25oYXNoLmgKKysrIGIvSW5jbHVkZS91Y25oYXNoLmgKQEAgLTE5LDExICsxOSwxMyBAQAogICAgICAgIHN1Y2Nlc3MsIHplcm8gaWYgbm90LiAgRG9lcyBub3Qgc2V0IFB5dGhvbiBleGNlcHRpb25zLiAKICAgICAgICBJZiBzZWxmIGlzIE5VTEwsIGRhdGEgY29tZSBmcm9tIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlLgogICAgICAgIElmIGl0IGlzIG5vdCBOVUxMLCBpdCBzaG91bGQgYmUgYSB1bmljb2RlZGF0YS51Y2RfWF9ZX1ogb2JqZWN0ICovCi0gICAgaW50ICgqZ2V0bmFtZSkoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuKTsKKyAgICBpbnQgKCpnZXRuYW1lKShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4sCisgICAgICAgICAgICAgICAgICAgaW50IHdpdGhfYWxpYXNfYW5kX3NlcSk7CiAKICAgICAvKiBHZXQgY2hhcmFjdGVyIGNvZGUgZm9yIGEgZ2l2ZW4gbmFtZS4gIFNhbWUgZXJyb3IgaGFuZGxpbmcKICAgICAgICBhcyBmb3IgZ2V0bmFtZS4gKi8KLSAgICBpbnQgKCpnZXRjb2RlKShQeU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUpOworICAgIGludCAoKmdldGNvZGUpKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSwKKyAgICAgICAgICAgICAgICAgICBpbnQgd2l0aF9uYW1lZF9zZXEpOwogCiB9IF9QeVVuaWNvZGVfTmFtZV9DQVBJOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCmluZGV4IDM3OWE5MGMuLmE4ZjViNWQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCkBAIC02NCwxNiArNjQsMTUgQEAKIC8qIFB5dGhvbiAzLnggcmVxdWlyZXMgdW5pY29kZSAqLwogI2RlZmluZSBQeV9VU0lOR19VTklDT0RFCiAKLS8qIEZJWE1FOiBNdkwncyBuZXcgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IFB5X1VOSUNPREVfU0laRSBpcwotICAgcHJvcGVybHkgc2V0LCBidXQgdGhlIGRlZmF1bHQgcnVsZXMgYmVsb3cgZG9lc24ndCBzZXQgaXQuICBJJ2xsCi0gICBzb3J0IHRoaXMgb3V0IHNvbWUgb3RoZXIgZGF5IC0tIGZyZWRyaWtAcHl0aG9ud2FyZS5jb20gKi8KLQotI2lmbmRlZiBQeV9VTklDT0RFX1NJWkUKLSNlcnJvciBNdXN0IGRlZmluZSBQeV9VTklDT0RFX1NJWkUKKyNpZm5kZWYgU0laRU9GX1dDSEFSX1QKKyNlcnJvciBNdXN0IGRlZmluZSBTSVpFT0ZfV0NIQVJfVAogI2VuZGlmCiAKLS8qIFNldHRpbmcgUHlfVU5JQ09ERV9XSURFIGVuYWJsZXMgVUNTLTQgc3RvcmFnZS4gIE90aGVyd2lzZSwgVW5pY29kZQotICAgc3RyaW5ncyBhcmUgc3RvcmVkIGFzIFVDUy0yICh3aXRoIGxpbWl0ZWQgc3VwcG9ydCBmb3IgVVRGLTE2KSAqLworI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgU0laRU9GX1dDSEFSX1QKKworLyogSWYgd2NoYXJfdCBjYW4gYmUgdXNlZCBmb3IgVUNTLTQgc3RvcmFnZSwgc2V0IFB5X1VOSUNPREVfV0lERS4KKyAgIE90aGVyd2lzZSwgVW5pY29kZSBzdHJpbmdzIGFyZSBzdG9yZWQgYXMgVUNTLTIgKHdpdGggbGltaXRlZCBzdXBwb3J0CisgICBmb3IgVVRGLTE2KSAqLwogCiAjaWYgUHlfVU5JQ09ERV9TSVpFID49IDQKICNkZWZpbmUgUHlfVU5JQ09ERV9XSURFCkBAIC04NCwxOSArODMsMTQgQEAKIC8qICNkZWZpbmUgSEFWRV9XQ0hBUl9IICovCiAvKiAjZGVmaW5lIEhBVkVfVVNBQkxFX1dDSEFSX1QgKi8KIAotLyogRGVmYXVsdHMgZm9yIHZhcmlvdXMgcGxhdGZvcm1zICovCi0jaWZuZGVmIFBZX1VOSUNPREVfVFlQRQorLyogUHlfVU5JQ09ERSB3YXMgdGhlIG5hdGl2ZSBVbmljb2RlIHN0b3JhZ2UgZm9ybWF0IChjb2RlIHVuaXQpIHVzZWQgYnkKKyAgIFB5dGhvbiBhbmQgcmVwcmVzZW50cyBhIHNpbmdsZSBVbmljb2RlIGVsZW1lbnQgaW4gdGhlIFVuaWNvZGUgdHlwZS4KKyAgIFdpdGggUEVQIDM5MywgUHlfVU5JQ09ERSBpcyBkZXByZWNhdGVkIGFuZCByZXBsYWNlZCB3aXRoIGEKKyAgIHR5cGVkZWYgdG8gd2NoYXJfdC4gKi8KIAotLyogV2luZG93cyBoYXMgYSB1c2FibGUgd2NoYXJfdCB0eXBlICh1bmxlc3Mgd2UncmUgdXNpbmcgVUNTLTQpICovCi0jIGlmIGRlZmluZWQoTVNfV0lOMzIpICYmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0jICBkZWZpbmUgSEFWRV9VU0FCTEVfV0NIQVJfVAotIyAgZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB3Y2hhcl90Ci0jIGVuZGlmCi0KLSMgaWYgZGVmaW5lZChQeV9VTklDT0RFX1dJREUpCi0jICBkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIFB5X1VDUzQKLSMgZW5kaWYKLQorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgd2NoYXJfdAordHlwZWRlZiB3Y2hhcl90IFB5X1VOSUNPREU7CiAjZW5kaWYKIAogLyogSWYgdGhlIGNvbXBpbGVyIHByb3ZpZGVzIGEgd2NoYXJfdCB0eXBlIHdlIHRyeSB0byBzdXBwb3J0IGl0CkBAIC0xMDksNiArMTAzLDEwIEBACiAjIGVuZGlmCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyMgIGRlZmluZSBIQVZFX01CQ1MKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9XQ0hBUl9ICiAvKiBXb3JrIGFyb3VuZCBhIGNvc21ldGljIGJ1ZyBpbiBCU0RJIDQueCB3Y2hhci5oOyB0aGFua3MgdG8gVGhvbWFzIFdvdXRlcnMgKi8KICMgaWZkZWYgX0hBVkVfQlNESQpAQCAtMTE3LDIwMSArMTE1LDI0IEBACiAjICBpbmNsdWRlIDx3Y2hhci5oPgogI2VuZGlmCiAKLS8qCi0gKiBVc2UgdGhpcyB0eXBlZGVmIHdoZW4geW91IG5lZWQgdG8gcmVwcmVzZW50IGEgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyCi0gKiBhcyBzaW5nbGUgdW5zaWduZWQgaW50ZWdlci4KLSAqLwotI2lmIFNJWkVPRl9JTlQgPj0gNAorLyogUHlfVUNTNCBhbmQgUHlfVUNTMiBhcmUgdHlwZWRlZnMgZm9yIHRoZSByZXNwZWN0aXZlCisgICB1bmljb2RlIHJlcHJlc2VudGF0aW9ucy4gKi8KKyNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IFB5X1VDUzQ7Ci0jZWxpZiBTSVpFT0ZfTE9ORyA+PSA0CisjZWxpZiBTSVpFT0ZfTE9ORyA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgUHlfVUNTNDsKLSNlbmRpZgotCi0vKiBQeV9VTklDT0RFIGlzIHRoZSBuYXRpdmUgVW5pY29kZSBzdG9yYWdlIGZvcm1hdCAoY29kZSB1bml0KSB1c2VkIGJ5Ci0gICBQeXRob24gYW5kIHJlcHJlc2VudHMgYSBzaW5nbGUgVW5pY29kZSBlbGVtZW50IGluIHRoZSBVbmljb2RlCi0gICB0eXBlLiAqLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi10eXBlZGVmIFBZX1VOSUNPREVfVFlQRSBQeV9VTklDT0RFOwotI2VuZGlmCi0KLS8qIC0tLSBVQ1MtMi9VQ1MtNCBOYW1lIE1hbmdsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKiBVbmljb2RlIEFQSSBuYW1lcyBhcmUgbWFuZ2xlZCB0byBhc3N1cmUgdGhhdCBVQ1MtMiBhbmQgVUNTLTQgYnVpbGRzCi0gICBwcm9kdWNlIGRpZmZlcmVudCBleHRlcm5hbCBuYW1lcyBhbmQgdGh1cyBjYXVzZSBpbXBvcnQgZXJyb3JzIGluCi0gICBjYXNlIFB5dGhvbiBpbnRlcnByZXRlcnMgYW5kIGV4dGVuc2lvbnMgd2l0aCBtaXhlZCBjb21waWxlZCBpbgotICAgVW5pY29kZSB3aWR0aCBhc3N1bXB0aW9ucyBhcmUgY29tYmluZWQuICovCi0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0KLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzQ2hhcm1hcFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUgUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzJfQXNFbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNFbmNvZGVkU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzTGF0aW4xU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzVVRGMzJTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEYxNlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGOFN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzVVRGOFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0FzVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzVW5pY29kZUVzY2FwZVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzV2lkZUNoYXIgUHlVbmljb2RlVUNTMl9Bc1dpZGVDaGFyCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXJTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9DbGVhckZyZWVMaXN0IFB5VW5pY29kZVVDUzJfQ2xlYXJGcmVlbGlzdAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbXBhcmUgUHlVbmljb2RlVUNTMl9Db21wYXJlCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyBQeVVuaWNvZGVVQ1MyX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Db25jYXQgUHlVbmljb2RlVUNTMl9Db25jYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9BcHBlbmQgUHlVbmljb2RlVUNTMl9BcHBlbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9BcHBlbmRBbmREZWwgUHlVbmljb2RlVUNTMl9BcHBlbmRBbmREZWwKLSMgZGVmaW5lIFB5VW5pY29kZV9Db250YWlucyBQeVVuaWNvZGVVQ1MyX0NvbnRhaW5zCi0jIGRlZmluZSBQeVVuaWNvZGVfQ291bnQgUHlVbmljb2RlVUNTMl9Db3VudAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZSBQeVVuaWNvZGVVQ1MyX0RlY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUFTQ0lJIFB5VW5pY29kZVVDUzJfRGVjb2RlQVNDSUkKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwIFB5VW5pY29kZVVDUzJfRGVjb2RlQ2hhcm1hcAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUxhdGluMSBQeVVuaWNvZGVVQ1MyX0RlY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCBQeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUgUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1MyX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMiBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyU3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNiBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2U3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEY4IFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjhTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9EZWNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlIFB5VW5pY29kZVVDUzJfRW5jb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkgUHlVbmljb2RlVUNTMl9FbmNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTMl9FbmNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCBQeVVuaWNvZGVVQ1MyX0VuY29kZURlY2ltYWwKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEgUHlVbmljb2RlVUNTMl9FbmNvZGVMYXRpbjEKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRW5jb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjMyIFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEYxNiBQeVVuaWNvZGVVQ1MyX0VuY29kZVVURjE2Ci0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGOCBQeVVuaWNvZGVVQ1MyX0VuY29kZVVURjgKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRW5jb2RlVW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0ZpbmQgUHlVbmljb2RlVUNTMl9GaW5kCi0jIGRlZmluZSBQeVVuaWNvZGVfRm9ybWF0IFB5VW5pY29kZVVDUzJfRm9ybWF0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTMl9Gcm9tRW5jb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Gb3JtYXQgUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYgUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0VgotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21PYmplY3QgUHlVbmljb2RlVUNTMl9Gcm9tT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9yZGluYWwgUHlVbmljb2RlVUNTMl9Gcm9tT3JkaW5hbAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21TdHJpbmcgUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUgUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nQW5kU2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Vbmljb2RlIFB5VW5pY29kZVVDUzJfRnJvbVVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgUHlVbmljb2RlVUNTMl9Gcm9tV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0NvbnZlcnRlciBQeVVuaWNvZGVVQ1MyX0ZTQ29udmVydGVyCi0jIGRlZmluZSBQeVVuaWNvZGVfRlNEZWNvZGVyIFB5VW5pY29kZVVDUzJfRlNEZWNvZGVyCi0jIGRlZmluZSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nIFB5VW5pY29kZVVDUzJfR2V0RGVmYXVsdEVuY29kaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfR2V0TWF4IFB5VW5pY29kZVVDUzJfR2V0TWF4Ci0jIGRlZmluZSBQeVVuaWNvZGVfR2V0U2l6ZSBQeVVuaWNvZGVVQ1MyX0dldFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIgUHlVbmljb2RlVUNTMl9Jc0lkZW50aWZpZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Kb2luIFB5VW5pY29kZVVDUzJfSm9pbgotIyBkZWZpbmUgUHlVbmljb2RlX1BhcnRpdGlvbiBQeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbgotIyBkZWZpbmUgUHlVbmljb2RlX1JQYXJ0aXRpb24gUHlVbmljb2RlVUNTMl9SUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlNwbGl0IFB5VW5pY29kZVVDUzJfUlNwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfUmVwbGFjZSBQeVVuaWNvZGVVQ1MyX1JlcGxhY2UKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXNpemUgUHlVbmljb2RlVUNTMl9SZXNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9SaWNoQ29tcGFyZSBQeVVuaWNvZGVVQ1MyX1JpY2hDb21wYXJlCi0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXQgUHlVbmljb2RlVUNTMl9TcGxpdAotIyBkZWZpbmUgUHlVbmljb2RlX1NwbGl0bGluZXMgUHlVbmljb2RlVUNTMl9TcGxpdGxpbmVzCi0jIGRlZmluZSBQeVVuaWNvZGVfVGFpbG1hdGNoIFB5VW5pY29kZVVDUzJfVGFpbG1hdGNoCi0jIGRlZmluZSBQeVVuaWNvZGVfVHJhbnNsYXRlIFB5VW5pY29kZVVDUzJfVHJhbnNsYXRlCi0jIGRlZmluZSBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCBQeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZUNoYXJtYXAKLSMgZGVmaW5lIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyBfUHlVbmljb2RlVUNTMl9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nCi0jIGRlZmluZSBfUHlVbmljb2RlX0ZpbmkgX1B5VW5pY29kZVVDUzJfRmluaQotIyBkZWZpbmUgX1B5VW5pY29kZV9Jbml0IF9QeVVuaWNvZGVVQ1MyX0luaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9zdHJkdXAgUHlVbmljb2RlVUNTMl9zdHJkdXAKLQogI2Vsc2UKLQotIyBkZWZpbmUgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0FTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNDaGFybWFwU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzRfQXNEZWNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1M0X0FzRGVjb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTNF9Bc0VuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0VuY29kZWRTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzRfQXNFbmNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNMYXRpbjFTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNVVEYzMlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjE2U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nIFB5VW5pY29kZVVDUzRfQXNVVEY4U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlIFB5VW5pY29kZVVDUzRfQXNVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhciBQeVVuaWNvZGVVQ1M0X0FzV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNXaWRlQ2hhclN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QgUHlVbmljb2RlVUNTNF9DbGVhckZyZWVsaXN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZSBQeVVuaWNvZGVVQ1M0X0NvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzRfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NvbmNhdCBQeVVuaWNvZGVVQ1M0X0NvbmNhdAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZCBQeVVuaWNvZGVVQ1M0X0FwcGVuZAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZEFuZERlbCBQeVVuaWNvZGVVQ1M0X0FwcGVuZEFuZERlbAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbnRhaW5zIFB5VW5pY29kZVVDUzRfQ29udGFpbnMKLSMgZGVmaW5lIFB5VW5pY29kZV9Db3VudCBQeVVuaWNvZGVVQ1M0X0NvdW50Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlIFB5VW5pY29kZVVDUzRfRGVjb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkgUHlVbmljb2RlVUNTNF9EZWNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTNF9EZWNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xIFB5VW5pY29kZVVDUzRfRGVjb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0IFB5VW5pY29kZVVDUzRfRGVjb2RlRlNEZWZhdWx0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSBQeVVuaWNvZGVVQ1M0X0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzRfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2IFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjggUHlVbmljb2RlVUNTNF9EZWNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsIFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGOFN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0RlY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGUgUHlVbmljb2RlVUNTNF9FbmNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVBU0NJSSBQeVVuaWNvZGVVQ1M0X0VuY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1M0X0VuY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsIFB5VW5pY29kZVVDUzRfRW5jb2RlRGVjaW1hbAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUxhdGluMSBQeVVuaWNvZGVVQ1M0X0VuY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9FbmNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMzIgUHlVbmljb2RlVUNTNF9FbmNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjE2IFB5VW5pY29kZVVDUzRfRW5jb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEY4IFB5VW5pY29kZVVDUzRfRW5jb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9FbmNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRmluZCBQeVVuaWNvZGVVQ1M0X0ZpbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gb3JtYXQgUHlVbmljb2RlVUNTNF9Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1M0X0Zyb21FbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdCBQeVVuaWNvZGVVQ1M0X0Zyb21Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0ViBQeVVuaWNvZGVVQ1M0X0Zyb21Gb3JtYXRWCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9iamVjdCBQeVVuaWNvZGVVQ1M0X0Zyb21PYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCBQeVVuaWNvZGVVQ1M0X0Zyb21PcmRpbmFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZyBQeVVuaWNvZGVVQ1M0X0Zyb21TdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSBQeVVuaWNvZGVVQ1M0X0Zyb21TdHJpbmdBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUgUHlVbmljb2RlVUNTNF9Gcm9tVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBQeVVuaWNvZGVVQ1M0X0Zyb21XaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTQ29udmVydGVyIFB5VW5pY29kZVVDUzRfRlNDb252ZXJ0ZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0RlY29kZXIgUHlVbmljb2RlVUNTNF9GU0RlY29kZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcgUHlVbmljb2RlVUNTNF9HZXREZWZhdWx0RW5jb2RpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRNYXggUHlVbmljb2RlVUNTNF9HZXRNYXgKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRTaXplIFB5VW5pY29kZVVDUzRfR2V0U2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0lzSWRlbnRpZmllciBQeVVuaWNvZGVVQ1M0X0lzSWRlbnRpZmllcgotIyBkZWZpbmUgUHlVbmljb2RlX0pvaW4gUHlVbmljb2RlVUNTNF9Kb2luCi0jIGRlZmluZSBQeVVuaWNvZGVfUGFydGl0aW9uIFB5VW5pY29kZVVDUzRfUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlBhcnRpdGlvbiBQeVVuaWNvZGVVQ1M0X1JQYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SU3BsaXQgUHlVbmljb2RlVUNTNF9SU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXBsYWNlIFB5VW5pY29kZVVDUzRfUmVwbGFjZQotIyBkZWZpbmUgUHlVbmljb2RlX1Jlc2l6ZSBQeVVuaWNvZGVVQ1M0X1Jlc2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX1JpY2hDb21wYXJlIFB5VW5pY29kZVVDUzRfUmljaENvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdCBQeVVuaWNvZGVVQ1M0X1NwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXRsaW5lcyBQeVVuaWNvZGVVQ1M0X1NwbGl0bGluZXMKLSMgZGVmaW5lIFB5VW5pY29kZV9UYWlsbWF0Y2ggUHlVbmljb2RlVUNTNF9UYWlsbWF0Y2gKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGUgUHlVbmljb2RlVUNTNF9UcmFuc2xhdGUKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwIFB5VW5pY29kZVVDUzRfVHJhbnNsYXRlQ2hhcm1hcAotIyBkZWZpbmUgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIF9QeVVuaWNvZGVVQ1M0X0FzRGVmYXVsdEVuY29kZWRTdHJpbmcKLSMgZGVmaW5lIF9QeVVuaWNvZGVfRmluaSBfUHlVbmljb2RlVUNTNF9GaW5pCi0jIGRlZmluZSBfUHlVbmljb2RlX0luaXQgX1B5VW5pY29kZVVDUzRfSW5pdAotIyBkZWZpbmUgUHlVbmljb2RlX3N0cmR1cCBQeVVuaWNvZGVVQ1M0X3N0cmR1cAotCisjZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzQiCiAjZW5kaWYKIAorI2lmIFNJWkVPRl9TSE9SVCA9PSAyCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFB5X1VDUzI7CisjZWxzZQorI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1MyIgorI2VuZGlmCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBQeV9VQ1MxOworCiAvKiAtLS0gSW50ZXJuYWwgVW5pY29kZSBPcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogU2luY2Ugc3BsaXR0aW5nIG9uIHdoaXRlc3BhY2UgaXMgYW4gaW1wb3J0YW50IHVzZSBjYXNlLCBhbmQKQEAgLTM1MCw3ICsxNzEsNyBAQAogICAgIFB5X1VOSUNPREVfSVNESUdJVChjaCkgfHwgXAogICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKGNoKSkKIAotI2RlZmluZSBQeV9VTklDT0RFX0NPUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBQeV9VTklDT0RFX0NPUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgXAogICAgIFB5X01FTUNQWSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0ZJTEwodGFyZ2V0LCB2YWx1ZSwgbGVuZ3RoKSBcCkBAIC0zNTgsMTMgKzE3OSwyNyBAQAogICAgIGZvciAoaV8gPSAwOyBpXyA8IChsZW5ndGgpOyBpXysrKSB0X1tpX10gPSB2XztcCiAgICAgfSB3aGlsZSAoMCkKIAorLyogbWFjcm9zIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzICovCisjZGVmaW5lIFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REZGRikKKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpCisjZGVmaW5lIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkgKDB4REMwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpCisvKiBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuICovCisjZGVmaW5lIFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGhpZ2gsIGxvdykgIFwKKyAgICAoKCgoKFB5X1VDUzQpKGhpZ2gpICYgMHgwM0ZGKSA8PCAxMCkgfCAgICAgIFwKKyAgICAgICgoUHlfVUNTNCkobG93KSAmIDB4MDNGRikpICsgMHgxMDAwMCkKKy8qIGhpZ2ggc3Vycm9nYXRlID0gdG9wIDEwIGJpdHMgYWRkZWQgdG8gRDgwMCAqLworI2RlZmluZSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIC0gKDB4MTAwMDAgPj4gMTApICsgKChjaCkgPj4gMTApKQorLyogbG93IHN1cnJvZ2F0ZSA9IGJvdHRvbSAxMCBiaXRzIGFkZGVkIHRvIERDMDAgKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKSAoMHhEQzAwICsgKChjaCkgJiAweDNGRikpCisKIC8qIENoZWNrIGlmIHN1YnN0cmluZyBtYXRjaGVzIGF0IGdpdmVuIG9mZnNldC4gIFRoZSBvZmZzZXQgbXVzdCBiZQogICAgdmFsaWQsIGFuZCB0aGUgc3Vic3RyaW5nIG11c3Qgbm90IGJlIGVtcHR5LiAqLwogCiAjZGVmaW5lIFB5X1VOSUNPREVfTUFUQ0goc3RyaW5nLCBvZmZzZXQsIHN1YnN0cmluZykgXAotICAgICgoKigoc3RyaW5nKS0+c3RyICsgKG9mZnNldCkpID09ICooKHN1YnN0cmluZyktPnN0cikpICYmIFwKLSAgICAoKCooKHN0cmluZyktPnN0ciArIChvZmZzZXQpICsgKHN1YnN0cmluZyktPmxlbmd0aC0xKSA9PSAqKChzdWJzdHJpbmcpLT5zdHIgKyAoc3Vic3RyaW5nKS0+bGVuZ3RoLTEpKSkgJiYgXAotICAgICAhbWVtY21wKChzdHJpbmcpLT5zdHIgKyAob2Zmc2V0KSwgKHN1YnN0cmluZyktPnN0ciwgKHN1YnN0cmluZyktPmxlbmd0aCpzaXplb2YoUHlfVU5JQ09ERSkpKQorICAgICgoKigoc3RyaW5nKS0+d3N0ciArIChvZmZzZXQpKSA9PSAqKChzdWJzdHJpbmcpLT53c3RyKSkgJiYgXAorICAgICAoKCooKHN0cmluZyktPndzdHIgKyAob2Zmc2V0KSArIChzdWJzdHJpbmcpLT53c3RyX2xlbmd0aC0xKSA9PSAqKChzdWJzdHJpbmcpLT53c3RyICsgKHN1YnN0cmluZyktPndzdHJfbGVuZ3RoLTEpKSkgJiYgXAorICAgICAhbWVtY21wKChzdHJpbmcpLT53c3RyICsgKG9mZnNldCksIChzdWJzdHJpbmcpLT53c3RyLCAoc3Vic3RyaW5nKS0+d3N0cl9sZW5ndGgqc2l6ZW9mKFB5X1VOSUNPREUpKSkKKwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzc0LDQxICsyMDksMzc0IEBACiAvKiAtLS0gVW5pY29kZSBUeXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCisvKiBBU0NJSS1vbmx5IHN0cmluZ3MgY3JlYXRlZCB0aHJvdWdoIFB5VW5pY29kZV9OZXcgdXNlIHRoZSBQeUFTQ0lJT2JqZWN0CisgICBzdHJ1Y3R1cmUuIHN0YXRlLmFzY2lpIGFuZCBzdGF0ZS5jb21wYWN0IGFyZSBzZXQsIGFuZCB0aGUgZGF0YQorICAgaW1tZWRpYXRlbHkgZm9sbG93IHRoZSBzdHJ1Y3R1cmUuIHV0ZjhfbGVuZ3RoIGFuZCB3c3RyX2xlbmd0aCBjYW4gYmUgZm91bmQKKyAgIGluIHRoZSBsZW5ndGggZmllbGQ7IHRoZSB1dGY4IHBvaW50ZXIgaXMgZXF1YWwgdG8gdGhlIGRhdGEgcG9pbnRlci4gKi8KIHR5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBUaGVyZSBhcmUgNCBmb3JtcyBvZiBVbmljb2RlIHN0cmluZ3M6CisKKyAgICAgICAtIGNvbXBhY3QgYXNjaWk6CisKKyAgICAgICAgICogc3RydWN0dXJlID0gUHlBU0NJSU9iamVjdAorICAgICAgICAgKiB0ZXN0OiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkKKyAgICAgICAgICoga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAxCisgICAgICAgICAqIGFzY2lpID0gMQorICAgICAgICAgKiByZWFkeSA9IDEKKyAgICAgICAgICogKGxlbmd0aCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSB1dGY4IGFuZCB3c3RyIHN0cmluZ3MpCisgICAgICAgICAqIChkYXRhIHN0YXJ0cyBqdXN0IGFmdGVyIHRoZSBzdHJ1Y3R1cmUpCisgICAgICAgICAqIChzaW5jZSBBU0NJSSBpcyBkZWNvZGVkIGZyb20gVVRGLTgsIHRoZSB1dGY4IHN0cmluZyBhcmUgdGhlIGRhdGEpCisKKyAgICAgICAtIGNvbXBhY3Q6CisKKyAgICAgICAgICogc3RydWN0dXJlID0gUHlDb21wYWN0VW5pY29kZU9iamVjdAorICAgICAgICAgKiB0ZXN0OiBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgJiYgIVB5VW5pY29kZV9JU19BU0NJSShvcCkKKyAgICAgICAgICoga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5ELCBQeVVuaWNvZGVfMkJZVEVfS0lORCBvcgorICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMQorICAgICAgICAgKiByZWFkeSA9IDEKKyAgICAgICAgICogYXNjaWkgPSAwCisgICAgICAgICAqIHV0ZjggaXMgbm90IHNoYXJlZCB3aXRoIGRhdGEKKyAgICAgICAgICogdXRmOF9sZW5ndGggPSAwIGlmIHV0ZjggaXMgTlVMTAorICAgICAgICAgKiB3c3RyIGlzIHNoYXJlZCB3aXRoIGRhdGEgYW5kIHdzdHJfbGVuZ3RoPWxlbmd0aAorICAgICAgICAgICBpZiBraW5kPVB5VW5pY29kZV8yQllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfdCk9MgorICAgICAgICAgICBvciBpZiBraW5kPVB5VW5pY29kZV80QllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfdCk9NAorICAgICAgICAgKiB3c3RyX2xlbmd0aCA9IDAgaWYgd3N0ciBpcyBOVUxMCisgICAgICAgICAqIChkYXRhIHN0YXJ0cyBqdXN0IGFmdGVyIHRoZSBzdHJ1Y3R1cmUpCisKKyAgICAgICAtIGxlZ2FjeSBzdHJpbmcsIG5vdCByZWFkeToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeVVuaWNvZGVPYmplY3QKKyAgICAgICAgICogdGVzdDoga2luZCA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBsZW5ndGggPSAwICh1c2Ugd3N0cl9sZW5ndGgpCisgICAgICAgICAqIGhhc2ggPSAtMQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICogY29tcGFjdCA9IDAKKyAgICAgICAgICogYXNjaWkgPSAwCisgICAgICAgICAqIHJlYWR5ID0gMAorICAgICAgICAgKiBpbnRlcm5lZCA9IFNTVEFURV9OT1RfSU5URVJORUQKKyAgICAgICAgICogd3N0ciBpcyBub3QgTlVMTAorICAgICAgICAgKiBkYXRhLmFueSBpcyBOVUxMCisgICAgICAgICAqIHV0ZjggaXMgTlVMTAorICAgICAgICAgKiB1dGY4X2xlbmd0aCA9IDAKKworICAgICAgIC0gbGVnYWN5IHN0cmluZywgcmVhZHk6CisKKyAgICAgICAgICogc3RydWN0dXJlID0gUHlVbmljb2RlT2JqZWN0IHN0cnVjdHVyZQorICAgICAgICAgKiB0ZXN0OiAhUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApICYmIGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICoga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5ELCBQeVVuaWNvZGVfMkJZVEVfS0lORCBvcgorICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMAorICAgICAgICAgKiByZWFkeSA9IDEKKyAgICAgICAgICogZGF0YS5hbnkgaXMgbm90IE5VTEwKKyAgICAgICAgICogdXRmOCBpcyBzaGFyZWQgYW5kIHV0ZjhfbGVuZ3RoID0gbGVuZ3RoIHdpdGggZGF0YS5hbnkgaWYgYXNjaWkgPSAxCisgICAgICAgICAqIHV0ZjhfbGVuZ3RoID0gMCBpZiB1dGY4IGlzIE5VTEwKKyAgICAgICAgICogd3N0ciBpcyBzaGFyZWQgd2l0aCBkYXRhLmFueSBhbmQgd3N0cl9sZW5ndGggPSBsZW5ndGgKKyAgICAgICAgICAgaWYga2luZD1QeVVuaWNvZGVfMkJZVEVfS0lORCBhbmQgc2l6ZW9mKHdjaGFyX3QpPTIKKyAgICAgICAgICAgb3IgaWYga2luZD1QeVVuaWNvZGVfNEJZVEVfS0lORCBhbmQgc2l6ZW9mKHdjaGFyXzQpPTQKKyAgICAgICAgICogd3N0cl9sZW5ndGggPSAwIGlmIHdzdHIgaXMgTlVMTAorCisgICAgICAgQ29tcGFjdCBzdHJpbmdzIHVzZSBvbmx5IG9uZSBtZW1vcnkgYmxvY2sgKHN0cnVjdHVyZSArIGNoYXJhY3RlcnMpLAorICAgICAgIHdoZXJlYXMgbGVnYWN5IHN0cmluZ3MgdXNlIG9uZSBibG9jayBmb3IgdGhlIHN0cnVjdHVyZSBhbmQgb25lIGJsb2NrCisgICAgICAgZm9yIGNoYXJhY3RlcnMuCisKKyAgICAgICBMZWdhY3kgc3RyaW5ncyBhcmUgY3JlYXRlZCBieSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKSBhbmQKKyAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSkgZnVuY3Rpb25zLiBUaGV5IGJlY29tZSByZWFkeQorICAgICAgIHdoZW4gUHlVbmljb2RlX1JFQURZKCkgaXMgY2FsbGVkLgorCisgICAgICAgU2VlIGFsc28gX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KCkuCisgICAgKi8KICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfc3NpemVfdCBsZW5ndGg7ICAgICAgICAgIC8qIExlbmd0aCBvZiByYXcgVW5pY29kZSBkYXRhIGluIGJ1ZmZlciAqLwotICAgIFB5X1VOSUNPREUgKnN0cjsgICAgICAgICAgICAvKiBSYXcgVW5pY29kZSBidWZmZXIgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsgICAgICAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBzdHJpbmcgKi8KICAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogSGFzaCB2YWx1ZTsgLTEgaWYgbm90IHNldCAqLwotICAgIGludCBzdGF0ZTsgICAgICAgICAgICAgICAgICAvKiAhPSAwIGlmIGludGVybmVkLiBJbiB0aGlzIGNhc2UgdGhlIHR3bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZWZlcmVuY2VzIGZyb20gdGhlIGRpY3Rpb25hcnkgdG8gdGhpcyBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYXJlICpub3QqIGNvdW50ZWQgaW4gb2JfcmVmY250LiAqLwotICAgIFB5T2JqZWN0ICpkZWZlbmM7ICAgICAgICAgICAvKiAoRGVmYXVsdCkgRW5jb2RlZCB2ZXJzaW9uIGFzIFB5dGhvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcsIG9yIE5VTEw7IHRoaXMgaXMgdXNlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50aW5nIHRoZSBidWZmZXIgcHJvdG9jb2wgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICAvKgorICAgICAgICAgICBTU1RBVEVfTk9UX0lOVEVSTkVEICgwKQorICAgICAgICAgICBTU1RBVEVfSU5URVJORURfTU9SVEFMICgxKQorICAgICAgICAgICBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwgKDIpCisKKyAgICAgICAgICAgSWYgaW50ZXJuZWQgIT0gU1NUQVRFX05PVF9JTlRFUk5FRCwgdGhlIHR3byByZWZlcmVuY2VzIGZyb20gdGhlCisgICAgICAgICAgIGRpY3Rpb25hcnkgdG8gdGhpcyBvYmplY3QgYXJlICpub3QqIGNvdW50ZWQgaW4gb2JfcmVmY250LgorICAgICAgICAgKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGludGVybmVkOjI7CisgICAgICAgIC8qIENoYXJhY3RlciBzaXplOgorCisgICAgICAgICAgIC0gUHlVbmljb2RlX1dDSEFSX0tJTkQgKDApOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IHdjaGFyX3QgKDE2IG9yIDMyIGJpdHMsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgICAgICAgIHBsYXRmb3JtKQorCisgICAgICAgICAgIC0gUHlVbmljb2RlXzFCWVRFX0tJTkQgKDEpOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IFB5X1VDUzEgKDggYml0cywgdW5zaWduZWQpCisgICAgICAgICAgICAgKiBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzAwRkYgKGxhdGluMSkKKyAgICAgICAgICAgICAqIGlmIGFzY2lpIGlzIHNldCwgYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVSswMDdGCisgICAgICAgICAgICAgICAoQVNDSUkpLCBvdGhlcndpc2UgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpcyBpbiB0aGUgcmFuZ2UKKyAgICAgICAgICAgICAgIFUrMDA4MC1VKzAwRkYKKworICAgICAgICAgICAtIFB5VW5pY29kZV8yQllURV9LSU5EICgyKToKKworICAgICAgICAgICAgICogY2hhcmFjdGVyIHR5cGUgPSBQeV9VQ1MyICgxNiBiaXRzLCB1bnNpZ25lZCkKKyAgICAgICAgICAgICAqIGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrRkZGRiAoQk1QKQorICAgICAgICAgICAgICogYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpcyBpbiB0aGUgcmFuZ2UgVSswMTAwLVUrRkZGRgorCisgICAgICAgICAgIC0gUHlVbmljb2RlXzRCWVRFX0tJTkQgKDQpOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IFB5X1VDUzQgKDMyIGJpdHMsIHVuc2lnbmVkKQorICAgICAgICAgICAgICogYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVSsxMEZGRkYKKyAgICAgICAgICAgICAqIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaXMgaW4gdGhlIHJhbmdlIFUrMTAwMDAtVSsxMEZGRkYKKyAgICAgICAgICovCisgICAgICAgIHVuc2lnbmVkIGludCBraW5kOjM7CisgICAgICAgIC8qIENvbXBhY3QgaXMgd2l0aCByZXNwZWN0IHRvIHRoZSBhbGxvY2F0aW9uIHNjaGVtZS4gQ29tcGFjdCB1bmljb2RlCisgICAgICAgICAgIG9iamVjdHMgb25seSByZXF1aXJlIG9uZSBtZW1vcnkgYmxvY2sgd2hpbGUgbm9uLWNvbXBhY3Qgb2JqZWN0cyB1c2UKKyAgICAgICAgICAgb25lIGJsb2NrIGZvciB0aGUgUHlVbmljb2RlT2JqZWN0IHN0cnVjdCBhbmQgYW5vdGhlciBmb3IgaXRzIGRhdGEKKyAgICAgICAgICAgYnVmZmVyLiAqLworICAgICAgICB1bnNpZ25lZCBpbnQgY29tcGFjdDoxOworICAgICAgICAvKiBUaGUgc3RyaW5nIG9ubHkgY29udGFpbnMgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMDA3RiAoQVNDSUkpCisgICAgICAgICAgIGFuZCB0aGUga2luZCBpcyBQeVVuaWNvZGVfMUJZVEVfS0lORC4gSWYgYXNjaWkgaXMgc2V0IGFuZCBjb21wYWN0IGlzCisgICAgICAgICAgIHNldCwgdXNlIHRoZSBQeUFTQ0lJT2JqZWN0IHN0cnVjdHVyZS4gKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGFzY2lpOjE7CisgICAgICAgIC8qIFRoZSByZWFkeSBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgbGF5b3V0IGlzIGluaXRpYWxpemVkCisgICAgICAgICAgIGNvbXBsZXRlbHkuIFRoaXMgbWVhbnMgdGhhdCB0aGlzIGlzIGVpdGhlciBhIGNvbXBhY3Qgb2JqZWN0LCBvcgorICAgICAgICAgICB0aGUgZGF0YSBwb2ludGVyIGlzIGZpbGxlZCBvdXQuIFRoZSBiaXQgaXMgcmVkdW5kYW50LCBhbmQgaGVscHMKKyAgICAgICAgICAgdG8gbWluaW1pemUgdGhlIHRlc3QgaW4gUHlVbmljb2RlX0lTX1JFQURZKCkuICovCisgICAgICAgIHVuc2lnbmVkIGludCByZWFkeToxOworICAgIH0gc3RhdGU7CisgICAgd2NoYXJfdCAqd3N0cjsgICAgICAgICAgICAgIC8qIHdjaGFyX3QgcmVwcmVzZW50YXRpb24gKG51bGwtdGVybWluYXRlZCkgKi8KK30gUHlBU0NJSU9iamVjdDsKKworLyogTm9uLUFTQ0lJIHN0cmluZ3MgYWxsb2NhdGVkIHRocm91Z2ggUHlVbmljb2RlX05ldyB1c2UgdGhlCisgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0IHN0cnVjdHVyZS4gc3RhdGUuY29tcGFjdCBpcyBzZXQsIGFuZCB0aGUgZGF0YQorICAgaW1tZWRpYXRlbHkgZm9sbG93IHRoZSBzdHJ1Y3R1cmUuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlBU0NJSU9iamVjdCBfYmFzZTsKKyAgICBQeV9zc2l6ZV90IHV0ZjhfbGVuZ3RoOyAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIGluIHV0ZjgsIGV4Y2x1ZGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGVybWluYXRpbmcgXDAuICovCisgICAgY2hhciAqdXRmODsgICAgICAgICAgICAgICAgIC8qIFVURi04IHJlcHJlc2VudGF0aW9uIChudWxsLXRlcm1pbmF0ZWQpICovCisgICAgUHlfc3NpemVfdCB3c3RyX2xlbmd0aDsgICAgIC8qIE51bWJlciBvZiBjb2RlIHBvaW50cyBpbiB3c3RyLCBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdXJyb2dhdGVzIGNvdW50IGFzIHR3byBjb2RlIHBvaW50cy4gKi8KK30gUHlDb21wYWN0VW5pY29kZU9iamVjdDsKKworLyogU3RyaW5ncyBhbGxvY2F0ZWQgdGhyb3VnaCBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbGVuKSB1c2UgdGhlCisgICBQeVVuaWNvZGVPYmplY3Qgc3RydWN0dXJlLiBUaGUgYWN0dWFsIHN0cmluZyBkYXRhIGlzIGluaXRpYWxseSBpbiB0aGUgd3N0cgorICAgYmxvY2ssIGFuZCBjb3BpZWQgaW50byB0aGUgZGF0YSBibG9jayB1c2luZyBfUHlVbmljb2RlX1JlYWR5LiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgX2Jhc2U7CisgICAgdW5pb24geworICAgICAgICB2b2lkICphbnk7CisgICAgICAgIFB5X1VDUzEgKmxhdGluMTsKKyAgICAgICAgUHlfVUNTMiAqdWNzMjsKKyAgICAgICAgUHlfVUNTNCAqdWNzNDsKKyAgICB9IGRhdGE7ICAgICAgICAgICAgICAgICAgICAgLyogQ2Fub25pY2FsLCBzbWFsbGVzdC1mb3JtIFVuaWNvZGUgYnVmZmVyICovCiB9IFB5VW5pY29kZU9iamVjdDsKICNlbmRpZgogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlVbmljb2RlX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlVbmljb2RlSXRlcl9UeXBlOwogCi0jZGVmaW5lIFNTVEFURV9OT1RfSU5URVJORUQgMAotI2RlZmluZSBTU1RBVEVfSU5URVJORURfTU9SVEFMIDEKLSNkZWZpbmUgU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMIDIKLQogI2RlZmluZSBQeVVuaWNvZGVfQ2hlY2sob3ApIFwKICAgICAgICAgICAgICAgICAgUHlUeXBlX0Zhc3RTdWJjbGFzcyhQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19VTklDT0RFX1NVQkNMQVNTKQogI2RlZmluZSBQeVVuaWNvZGVfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeVVuaWNvZGVfVHlwZSkKIAogLyogRmFzdCBhY2Nlc3MgbWFjcm9zICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0jZGVmaW5lIFB5VW5pY29kZV9HRVRfU0laRShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPmxlbmd0aCkpCisKKyNkZWZpbmUgUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSBcCisgICAgKFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QqKW9wKS0+bGVuZ3RoIDogICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0KilvcCktPndzdHJfbGVuZ3RoKQorCisvKiBSZXR1cm5zIHRoZSBkZXByZWNhdGVkIFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24ncyBzaXplIGluIGNvZGUgdW5pdHMKKyAgICh0aGlzIGluY2x1ZGVzIHN1cnJvZ2F0ZSBwYWlycyBhcyAyIHVuaXRzKS4KKyAgIElmIHRoZSBQeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uIGlzIG5vdCBhdmFpbGFibGUsIGl0IHdpbGwgYmUgY29tcHV0ZWQKKyAgIG9uIHJlcXVlc3QuICBVc2UgUHlVbmljb2RlX0dFVF9MRU5HVEgoKSBmb3IgdGhlIGxlbmd0aCBpbiBjb2RlIHBvaW50cy4gKi8KKworI2RlZmluZSBQeVVuaWNvZGVfR0VUX1NJWkUob3ApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT53c3RyKSA/ICAgICAgICAgICAgICAgXAorICAgICAgUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSA6ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoKHZvaWQpUHlVbmljb2RlX0FzVW5pY29kZSgoUHlPYmplY3QgKikob3ApKSwgIFwKKyAgICAgICBhc3NlcnQoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpLCAgICAgICAgXAorICAgICAgIFB5VW5pY29kZV9XU1RSX0xFTkdUSChvcCkpKQorCiAjZGVmaW5lIFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+bGVuZ3RoICogc2l6ZW9mKFB5X1VOSUNPREUpKSkKKyAgICAoUHlVbmljb2RlX0dFVF9TSVpFKG9wKSAqIFB5X1VOSUNPREVfU0laRSkKKworLyogQWxpYXMgZm9yIFB5VW5pY29kZV9Bc1VuaWNvZGUoKS4gIFRoaXMgd2lsbCBjcmVhdGUgYSB3Y2hhcl90L1B5X1VOSUNPREUKKyAgIHJlcHJlc2VudGF0aW9uIG9uIGRlbWFuZC4gIFVzaW5nIHRoaXMgbWFjcm8gaXMgdmVyeSBpbmVmZmljaWVudCBub3csCisgICB0cnkgdG8gcG9ydCB5b3VyIGNvZGUgdG8gdXNlIHRoZSBuZXcgUHlVbmljb2RlXypCWVRFX0RBVEEoKSBtYWNyb3Mgb3IKKyAgIHVzZSBQeVVuaWNvZGVfV1JJVEUoKSBhbmQgUHlVbmljb2RlX1JFQUQoKS4gKi8KKwogI2RlZmluZSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPnN0cikpCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgXAorICAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpID8gKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT53c3RyKSA6IFwKKyAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUoKFB5T2JqZWN0ICopKG9wKSkpCisKICNkZWZpbmUgUHlVbmljb2RlX0FTX0RBVEEob3ApIFwKLSAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCgoY29uc3QgY2hhciAqKSgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPnN0cikpCisgICAgKChjb25zdCBjaGFyICopKFB5VW5pY29kZV9BU19VTklDT0RFKG9wKSkpCisKKworLyogLS0tIEZsZXhpYmxlIFN0cmluZyBSZXByZXNlbnRhdGlvbiBIZWxwZXIgTWFjcm9zIChQRVAgMzkzKSAtLS0tLS0tLS0tLS0tLSAqLworCisvKiBWYWx1ZXMgZm9yIFB5QVNDSUlPYmplY3Quc3RhdGU6ICovCisKKy8qIEludGVybmluZyBzdGF0ZS4gKi8KKyNkZWZpbmUgU1NUQVRFX05PVF9JTlRFUk5FRCAwCisjZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgMQorI2RlZmluZSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwgMgorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycywgb3IgMCBpZiBub3QuIFRoZQorICAgc3RyaW5nIG1heSBiZSBjb21wYWN0IChQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSkgb3Igbm90LCBidXQgbXVzdCBiZQorICAgcmVhZHkuICovCisjZGVmaW5lIFB5VW5pY29kZV9JU19BU0NJSShvcCkgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksICAgICAgICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCopb3ApLT5zdGF0ZS5hc2NpaSkKKworLyogUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBjb21wYWN0IG9yIDAgaWYgbm90LgorICAgTm8gdHlwZSBjaGVja3Mgb3IgUmVhZHkgY2FsbHMgYXJlIHBlcmZvcm1lZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0Kikob3ApKS0+c3RhdGUuY29tcGFjdCkKKworLyogUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIGNvbXBhY3QgQVNDSUkgc3RyaW5nICh1c2UgUHlBU0NJSU9iamVjdAorICAgc3RydWN0dXJlKSwgb3IgMCBpZiBub3QuICBObyB0eXBlIGNoZWNrcyBvciBSZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0KilvcCktPnN0YXRlLmFzY2lpICYmIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSkKKworZW51bSBQeVVuaWNvZGVfS2luZCB7CisvKiBTdHJpbmcgY29udGFpbnMgb25seSB3c3RyIGJ5dGUgY2hhcmFjdGVycy4gIFRoaXMgaXMgb25seSBwb3NzaWJsZQorICAgd2hlbiB0aGUgc3RyaW5nIHdhcyBjcmVhdGVkIHdpdGggYSBsZWdhY3kgQVBJIGFuZCBfUHlVbmljb2RlX1JlYWR5KCkKKyAgIGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0LiAgKi8KKyAgICBQeVVuaWNvZGVfV0NIQVJfS0lORCA9IDAsCisvKiBSZXR1cm4gdmFsdWVzIG9mIHRoZSBQeVVuaWNvZGVfS0lORCgpIG1hY3JvOiAqLworICAgIFB5VW5pY29kZV8xQllURV9LSU5EID0gMSwKKyAgICBQeVVuaWNvZGVfMkJZVEVfS0lORCA9IDIsCisgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQgPSA0Cit9OworCisvKiBSZXR1cm4gcG9pbnRlcnMgdG8gdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBjYXN0IHRvIHVuc2lnbmVkIGNoYXIsCisgICBQeV9VQ1MyLCBvciBQeV9VQ1M0IGZvciBkaXJlY3QgY2hhcmFjdGVyIGFjY2Vzcy4KKyAgIE5vIGNoZWNrcyBhcmUgcGVyZm9ybWVkLCB1c2UgUHlVbmljb2RlX0tJTkQoKSBiZWZvcmUgdG8gZW5zdXJlCisgICB0aGVzZSB3aWxsIHdvcmsgY29ycmVjdGx5LiAqLworCisjZGVmaW5lIFB5VW5pY29kZV8xQllURV9EQVRBKG9wKSAoKFB5X1VDUzEqKVB5VW5pY29kZV9EQVRBKG9wKSkKKyNkZWZpbmUgUHlVbmljb2RlXzJCWVRFX0RBVEEob3ApICgoUHlfVUNTMiopUHlVbmljb2RlX0RBVEEob3ApKQorI2RlZmluZSBQeVVuaWNvZGVfNEJZVEVfREFUQShvcCkgKChQeV9VQ1M0KilQeVVuaWNvZGVfREFUQShvcCkpCisKKy8qIFJldHVybiBvbmUgb2YgdGhlIFB5VW5pY29kZV8qX0tJTkQgdmFsdWVzIGRlZmluZWQgYWJvdmUuICovCisjZGVmaW5lIFB5VW5pY29kZV9LSU5EKG9wKSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+c3RhdGUua2luZCkKKworLyogUmV0dXJuIGEgdm9pZCBwb2ludGVyIHRvIHRoZSByYXcgdW5pY29kZSBidWZmZXIuICovCisjZGVmaW5lIF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKG9wKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoUHlVbmljb2RlX0lTX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKCh2b2lkKikoKFB5QVNDSUlPYmplY3QqKShvcCkgKyAxKSkgOiAgICAgICAgICAgICAgXAorICAgICAoKHZvaWQqKSgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSArIDEpKSkKKworI2RlZmluZSBfUHlVbmljb2RlX05PTkNPTVBBQ1RfREFUQShvcCkgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydCgoKFB5VW5pY29kZU9iamVjdCopKG9wKSktPmRhdGEuYW55KSwgICAgICAgIFwKKyAgICAgKCgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5kYXRhLmFueSkpKQorCisjZGVmaW5lIFB5VW5pY29kZV9EQVRBKG9wKSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgXAorICAgICBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgPyBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQShvcCkgOiAgIFwKKyAgICAgX1B5VW5pY29kZV9OT05DT01QQUNUX0RBVEEob3ApKQorCisvKiBJbiB0aGUgYWNjZXNzIG1hY3JvcyBiZWxvdywgImtpbmQiIG1heSBiZSBldmFsdWF0ZWQgbW9yZSB0aGFuIG9uY2UuCisgICBBbGwgb3RoZXIgbWFjcm8gcGFyYW1ldGVycyBhcmUgZXZhbHVhdGVkIGV4YWN0bHkgb25jZSwgc28gaXQgaXMgc2FmZQorICAgdG8gcHV0IHNpZGUgZWZmZWN0cyBpbnRvIHRoZW0gKHN1Y2ggYXMgaW5jcmVhc2luZyB0aGUgaW5kZXgpLiAqLworCisvKiBXcml0ZSBpbnRvIHRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24sIHRoaXMgbWFjcm8gZG9lcyBub3QgZG8gYW55IHNhbml0eQorICAgY2hlY2tzIGFuZCBpcyBpbnRlbmRlZCBmb3IgdXNhZ2UgaW4gbG9vcHMuICBUaGUgY2FsbGVyIHNob3VsZCBjYWNoZSB0aGUKKyAgIGtpbmQgYW5kIGRhdGEgcG9pbnRlcnMgb2J0YWluZWQgZnJvbSBvdGhlciBtYWNybyBjYWxscy4KKyAgIGluZGV4IGlzIHRoZSBpbmRleCBpbiB0aGUgc3RyaW5nIChzdGFydHMgYXQgMCkgYW5kIHZhbHVlIGlzIHRoZSBuZXcKKyAgIGNvZGUgcG9pbnQgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHdyaXR0ZW4gdG8gdGhhdCBsb2NhdGlvbi4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGluZGV4LCB2YWx1ZSkgXAorICAgIGRvIHsgXAorICAgICAgICBzd2l0Y2ggKChraW5kKSkgeyBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgKChQeV9VQ1MxICopKGRhdGEpKVsoaW5kZXgpXSA9IChQeV9VQ1MxKSh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgICgoUHlfVUNTMiAqKShkYXRhKSlbKGluZGV4KV0gPSAoUHlfVUNTMikodmFsdWUpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9IFwKKyAgICAgICAgZGVmYXVsdDogeyBcCisgICAgICAgICAgICBhc3NlcnQoKGtpbmQpID09IFB5VW5pY29kZV80QllURV9LSU5EKTsgXAorICAgICAgICAgICAgKChQeV9VQ1M0ICopKGRhdGEpKVsoaW5kZXgpXSA9IChQeV9VQ1M0KSh2YWx1ZSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFJlYWQgYSBjb2RlIHBvaW50IGZyb20gdGhlIHN0cmluZydzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbi4gIE5vIGNoZWNrcworICAgb3IgcmVhZHkgY2FsbHMgYXJlIHBlcmZvcm1lZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpIFwKKyAgICAoKFB5X1VDUzQpIFwKKyAgICAoKGtpbmQpID09IFB5VW5pY29kZV8xQllURV9LSU5EID8gXAorICAgICAgICAoKGNvbnN0IFB5X1VDUzEgKikoZGF0YSkpWyhpbmRleCldIDogXAorICAgICAgICAoKGtpbmQpID09IFB5VW5pY29kZV8yQllURV9LSU5EID8gXAorICAgICAgICAgICAgKChjb25zdCBQeV9VQ1MyICopKGRhdGEpKVsoaW5kZXgpXSA6IFwKKyAgICAgICAgICAgICgoY29uc3QgUHlfVUNTNCAqKShkYXRhKSlbKGluZGV4KV0gXAorICAgICAgICApIFwKKyAgICApKQorCisvKiBQeVVuaWNvZGVfUkVBRF9DSEFSKCkgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiBQeVVuaWNvZGVfUkVBRCgpIGJlY2F1c2UgaXQKKyAgIGNhbGxzIFB5VW5pY29kZV9LSU5EKCkgYW5kIG1pZ2h0IGNhbGwgaXQgdHdpY2UuICBGb3Igc2luZ2xlIHJlYWRzLCB1c2UKKyAgIFB5VW5pY29kZV9SRUFEX0NIQVIsIGZvciBtdWx0aXBsZSBjb25zZWN1dGl2ZSByZWFkcyBjYWxsZXJzIHNob3VsZAorICAgY2FjaGUga2luZCBhbmQgdXNlIFB5VW5pY29kZV9SRUFEIGluc3RlYWQuICovCisjZGVmaW5lIFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgaW5kZXgpIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh1bmljb2RlKSksICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSksICAgICAgIFwKKyAgICAgKFB5X1VDUzQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKFB5VW5pY29kZV9LSU5EKCh1bmljb2RlKSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgPyBcCisgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzEgKikoUHlVbmljb2RlX0RBVEEoKHVuaWNvZGUpKSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgKFB5VW5pY29kZV9LSU5EKCh1bmljb2RlKSkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgPyBcCisgICAgICAgICAgICAgICAgKChjb25zdCBQeV9VQ1MyICopKFB5VW5pY29kZV9EQVRBKCh1bmljb2RlKSkpKVsoaW5kZXgpXSA6IFwKKyAgICAgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzQgKikoUHlVbmljb2RlX0RBVEEoKHVuaWNvZGUpKSkpWyhpbmRleCldIFwKKyAgICAgICAgICAgICkgXAorICAgICAgICApKQorCisvKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHVuaWNvZGUgc3RyaW5nLiBUaGUgY2FsbGVyIGhhcyB0byBtYWtlIHN1cmUgdGhhdAorICAgdGhlIHN0cmluZyBoYXMgaXQncyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gc2V0IGJlZm9yZSBjYWxsaW5nCisgICB0aGlzIG1hY3JvLiAgQ2FsbCBQeVVuaWNvZGVfKEZBU1RfKVJlYWR5IHRvIGVuc3VyZSB0aGF0LiAqLworI2RlZmluZSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+bGVuZ3RoKQorCisKKy8qIEZhc3QgY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2JqZWN0IGlzIHJlYWR5LiBFcXVpdmFsZW50IHRvCisgICBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgfHwgKChQeVVuaWNvZGVPYmplY3QqKShvcCkpLT5kYXRhLmFueSkgKi8KKworI2RlZmluZSBQeVVuaWNvZGVfSVNfUkVBRFkob3ApICgoKFB5QVNDSUlPYmplY3QqKW9wKS0+c3RhdGUucmVhZHkpCisKKy8qIFB5VW5pY29kZV9SRUFEWSgpIGRvZXMgbGVzcyB3b3JrIHRoYW4gX1B5VW5pY29kZV9SZWFkeSgpIGluIHRoZSBiZXN0CisgICBjYXNlLiAgSWYgdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpcyBub3QgeWV0IHNldCwgaXQgd2lsbCBzdGlsbCBjYWxsCisgICBfUHlVbmljb2RlX1JlYWR5KCkuCisgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgLTEgb24gZXJyb3JzLiAqLworI2RlZmluZSBQeVVuaWNvZGVfUkVBRFkob3ApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfUkVBRFkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDAgOiBfUHlVbmljb2RlX1JlYWR5KChQeU9iamVjdCAqKShvcCkpKSkKKworLyogUmV0dXJuIGEgbWF4aW11bSBjaGFyYWN0ZXIgdmFsdWUgd2hpY2ggaXMgc3VpdGFibGUgZm9yIGNyZWF0aW5nIGFub3RoZXIKKyAgIHN0cmluZyBiYXNlZCBvbiBvcC4gIFRoaXMgaXMgYWx3YXlzIGFuIGFwcHJveGltYXRpb24gYnV0IG1vcmUgZWZmaWNpZW50CisgICB0aGFuIGl0ZXJhdGluZyBvdmVyIHRoZSBzdHJpbmcuICovCisjZGVmaW5lIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShvcCkgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoUHlVbmljb2RlX0lTX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKDB4N2YpIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKFB5VW5pY29kZV9LSU5EKG9wKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICgweGZmVSkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIChQeVVuaWNvZGVfS0lORChvcCkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgPyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoMHhmZmZmVSkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoMHgxMGZmZmZVKSkpKSkKKwogI2VuZGlmCiAKIC8qIC0tLSBDb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNDE4LDEyICs1ODYsMTA3IEBACiAgICBVbmljb2RlIGNoYXJhY3RlciBVK0ZGRkQgaXMgdGhlIG9mZmljaWFsIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiBpbgogICAgVW5pY29kZSAzLjAuICovCiAKLSNkZWZpbmUgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIgKChQeV9VTklDT0RFKSAweEZGRkQpCisjZGVmaW5lIFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSICgoUHlfVUNTNCkgMHhGRkZEKQogCiAvKiA9PT0gUHVibGljIEFQSSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAogLyogLS0tIFBsYWluIFB5X1VOSUNPREUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qIFdpdGggUEVQIDM5MywgdGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGFsbG9jYXRlIGEgbmV3IHVuaWNvZGUgb2JqZWN0LgorICAgVGhpcyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHRoZSBvYmplY3QgYW5kIGl0cyBidWZmZXIgaW4gYSBzaW5nbGUgbWVtb3J5CisgICBibG9jay4gIE9iamVjdHMgY3JlYXRlZCB1c2luZyB0aGlzIGZ1bmN0aW9uIGFyZSBub3QgcmVzaXphYmxlLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9OZXcoCisgICAgUHlfc3NpemVfdCBzaXplLCAgICAgICAgICAgIC8qIE51bWJlciBvZiBjb2RlIHBvaW50cyBpbiB0aGUgbmV3IHN0cmluZyAqLworICAgIFB5X1VDUzQgbWF4Y2hhciAgICAgICAgICAgICAvKiBtYXhpbXVtIGNvZGUgcG9pbnQgdmFsdWUgaW4gdGhlIHN0cmluZyAqLworICAgICk7CisjZW5kaWYKKworLyogSW5pdGlhbGl6ZXMgdGhlIGNhbm9uaWNhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gZnJvbSBhIHRoZSBkZXByZWNhdGVkCisgICB3c3RyL1B5X1VOSUNPREUgcmVwcmVzZW50YXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjb252ZXJ0IFVuaWNvZGUKKyAgIG9iamVjdHMgd2hpY2ggd2VyZSBjcmVhdGVkIHVzaW5nIHRoZSBvbGQgQVBJIHRvIHRoZSBuZXcgZmxleGlibGUgZm9ybWF0CisgICBpbnRyb2R1Y2VkIHdpdGggUEVQIDM5My4KKworICAgRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgdGhlIHB1YmxpYyBQeVVuaWNvZGVfUkVBRFkoKSBtYWNybworICAgaW5zdGVhZC4gKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1JlYWR5KAorICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgICk7CisjZW5kaWYKKworLyogR2V0IGEgY29weSBvZiBhIFVuaWNvZGUgc3RyaW5nLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQ29weSgKKyAgICBQeU9iamVjdCAqdW5pY29kZQorICAgICk7CisjZW5kaWYKKworLyogQ29weSBjaGFyYWN0ZXIgZnJvbSBvbmUgdW5pY29kZSBvYmplY3QgaW50byBhbm90aGVyLCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zCisgICBjaGFyYWN0ZXIgY29udmVyc2lvbiB3aGVuIG5lY2Vzc2FyeSBhbmQgZmFsbHMgYmFjayB0byBtZW1jcHkoKSBpZiBwb3NzaWJsZS4KKworICAgRmFpbCBpZiB0byBpcyB0b28gc21hbGwgKHNtYWxsZXIgdGhhbiAqaG93X21hbnkqIG9yIHNtYWxsZXIgdGhhbgorICAgbGVuKGZyb20pLWZyb21fc3RhcnQpLCBvciBpZiBraW5kKGZyb21bZnJvbV9zdGFydDpmcm9tX3N0YXJ0K2hvd19tYW55XSkgPgorICAga2luZCh0byksIG9yIGlmICp0byogaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiAtMSBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uCisgICBvbiBlcnJvci4KKworICAgUHNldWRvLWNvZGU6CisKKyAgICAgICBob3dfbWFueSA9IG1pbihob3dfbWFueSwgbGVuKGZyb20pIC0gZnJvbV9zdGFydCkKKyAgICAgICB0b1t0b19zdGFydDp0b19zdGFydCtob3dfbWFueV0gPSBmcm9tW2Zyb21fc3RhcnQ6ZnJvbV9zdGFydCtob3dfbWFueV0KKyAgICAgICByZXR1cm4gaG93X21hbnkKKworICAgTm90ZTogVGhlIGZ1bmN0aW9uIGRvZXNuJ3Qgd3JpdGUgYSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3Rlci4KKyAgICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sCisgICAgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICBQeU9iamVjdCAqZnJvbSwKKyAgICBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgUHlfc3NpemVfdCBob3dfbWFueQorICAgICk7CisKKy8qIFVuc2FmZSB2ZXJzaW9uIG9mIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycygpOiBkb24ndCBjaGVjayBhcmd1bWVudHMgYW5kIHNvCisgICBtYXkgY3Jhc2ggaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZCAoZS5nLiBpZiB0aGUgb3V0cHV0IHN0cmluZworICAgaXMgdG9vIHNob3J0KS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoCisgICAgUHlPYmplY3QgKnRvLAorICAgIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgUHlPYmplY3QgKmZyb20sCisgICAgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LAorICAgIFB5X3NzaXplX3QgaG93X21hbnkKKyAgICApOworI2VuZGlmCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIEZpbGwgYSBzdHJpbmcgd2l0aCBhIGNoYXJhY3Rlcjogd3JpdGUgZmlsbF9jaGFyIGludG8KKyAgIHVuaWNvZGVbc3RhcnQ6c3RhcnQrbGVuZ3RoXS4KKworICAgRmFpbCBpZiBmaWxsX2NoYXIgaXMgYmlnZ2VyIHRoYW4gdGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3Rlciwgb3IgaWYgdGhlCisgICBzdHJpbmcgaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiAtMSBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uCisgICBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0ZpbGwoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICBQeV9VQ1M0IGZpbGxfY2hhcgorICAgICk7CisKKy8qIFVuc2FmZSB2ZXJzaW9uIG9mIFB5VW5pY29kZV9GaWxsKCk6IGRvbid0IGNoZWNrIGFyZ3VtZW50cyBhbmQgc28gbWF5IGNyYXNoCisgICBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIChlLmcuIGlmIGxlbmd0aCBpcyBsb25nZXIgdGhhbiB0aGUgc3RyaW5nKS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9GYXN0RmlsbCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgIFB5X1VDUzQgZmlsbF9jaGFyCisgICAgKTsKKyNlbmRpZgorCiAvKiBDcmVhdGUgYSBVbmljb2RlIE9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciB1IG9mIHRoZSBnaXZlbgogICAgc2l6ZS4KIApAQCAtNDQ4LDEzICs3MTEsNjAgQEAKICAgICApOwogCiAvKiBTaW1pbGFyIHRvIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgpLCBidXQgdSBwb2ludHMgdG8gbnVsbC10ZXJtaW5hdGVkCi0gICBVVEYtOCBlbmNvZGVkIGJ5dGVzICovCisgICBVVEYtOCBlbmNvZGVkIGJ5dGVzLiAgVGhlIHNpemUgaXMgZGV0ZXJtaW5lZCB3aXRoIHN0cmxlbigpLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Gcm9tU3RyaW5nKAogICAgIGNvbnN0IGNoYXIgKnUgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogQ3JlYXRlIGEgbmV3IHN0cmluZyBmcm9tIGEgYnVmZmVyIG9mIFB5X1VDUzEsIFB5X1VDUzIgb3IgUHlfVUNTNCBjaGFyYWN0ZXJzLgorICAgU2NhbiB0aGUgc3RyaW5nIHRvIGZpbmQgdGhlIG1heGltdW0gY2hhcmFjdGVyLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgaW50IGtpbmQsCisgICAgY29uc3Qgdm9pZCAqYnVmZmVyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgZnJvbSBhIGJ1ZmZlciBvZiBBU0NJSSBjaGFyYWN0ZXJzLgorICAgV0FSTklORzogRG9uJ3QgY2hlY2sgaWYgdGhlIHN0cmluZyBjb250YWlucyBhbnkgbm9uLUFTQ0lJIGNoYXJhY3Rlci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0Zyb21BU0NJSSgKKyAgICBjb25zdCBjaGFyICpidWZmZXIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZgorCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX1N1YnN0cmluZygKKyAgICBQeU9iamVjdCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBDb21wdXRlIHRoZSBtYXhpbXVtIGNoYXJhY3RlciBvZiB0aGUgc3Vic3RyaW5nIHVuaWNvZGVbc3RhcnQ6ZW5kXS4KKyAgIFJldHVybiAxMjcgZm9yIGFuIGVtcHR5IHN0cmluZy4gKi8KK1B5QVBJX0ZVTkMoUHlfVUNTNCkgX1B5VW5pY29kZV9GaW5kTWF4Q2hhciAoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CisjZW5kaWYKKworLyogQ29weSB0aGUgc3RyaW5nIGludG8gYSBVQ1M0IGJ1ZmZlciBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGlmIGNvcHlfbnVsbAorICAgaXMgc2V0LiBSZXR1cm4gTlVMTCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiBSYWlzZSBhIFZhbHVlRXJyb3IgaWYKKyAgIHRoZSBidWZmZXIgaXMgc21hbGxlciB0aGFuIHRoZSBzdHJpbmcuIFJldHVybiBidWZmZXIgb24gc3VjY2Vzcy4KKworICAgYnVmbGVuIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiAoUHlfVUNTNCkgY2hhcmFjdGVycy4gKi8KK1B5QVBJX0ZVTkMoUHlfVUNTNCopIFB5VW5pY29kZV9Bc1VDUzQoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfVUNTNCogYnVmZmVyLAorICAgIFB5X3NzaXplX3QgYnVmbGVuLAorICAgIGludCBjb3B5X251bGwpOworCisvKiBDb3B5IHRoZSBzdHJpbmcgaW50byBhIFVDUzQgYnVmZmVyLiBBIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIHVzaW5nCisgKiBQeU1lbV9NYWxsb2M7IGlmIHRoaXMgZmFpbHMsIE5VTEwgaXMgcmV0dXJuZWQgd2l0aCBhIG1lbW9yeSBlcnJvcgorICAgZXhjZXB0aW9uIHNldC4gKi8KK1B5QVBJX0ZVTkMoUHlfVUNTNCopIFB5VW5pY29kZV9Bc1VDUzRDb3B5KFB5T2JqZWN0ICp1bmljb2RlKTsKKwogLyogUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKLSAgIFB5X1VOSUNPREUgYnVmZmVyLiAqLworICAgUHlfVU5JQ09ERSBidWZmZXIuCisgICBJZiB0aGUgd2NoYXJfdC9QeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uIGlzIG5vdCB5ZXQgYXZhaWxhYmxlLCB0aGlzCisgICBmdW5jdGlvbiB3aWxsIGNhbGN1bGF0ZSBpdC4gKi8KIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeV9VTklDT0RFICopIFB5VW5pY29kZV9Bc1VuaWNvZGUoCkBAIC00NjIsMzAgKzc3Miw2OSBAQAogICAgICk7CiAjZW5kaWYKIAorLyogUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKKyAgIFB5X1VOSUNPREUgYnVmZmVyIGFuZCBzYXZlIHRoZSBsZW5ndGggYXQgc2l6ZS4KKyAgIElmIHRoZSB3Y2hhcl90L1B5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IHlldCBhdmFpbGFibGUsIHRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgY2FsY3VsYXRlIGl0LiAqLworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X1VOSUNPREUgKikgUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgUHlfc3NpemVfdCAqc2l6ZSAgICAgICAgICAgIC8qIGxvY2F0aW9uIHdoZXJlIHRvIHNhdmUgdGhlIGxlbmd0aCAqLworICAgICk7CisjZW5kaWYKKwogLyogR2V0IHRoZSBsZW5ndGggb2YgdGhlIFVuaWNvZGUgb2JqZWN0LiAqLwogCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9HZXRMZW5ndGgoCisgICAgUHlPYmplY3QgKnVuaWNvZGUKKyk7CisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIFB5X1VOSUNPREUgdW5pdHMgaW4gdGhlCisgICBzdHJpbmcgcmVwcmVzZW50YXRpb24uICovCisKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0dldFNpemUoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgKTsKIAorLyogUmVhZCBhIGNoYXJhY3RlciBmcm9tIHRoZSBzdHJpbmcuICovCisKK1B5QVBJX0ZVTkMoUHlfVUNTNCkgUHlVbmljb2RlX1JlYWRDaGFyKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgKKyAgICApOworCisvKiBXcml0ZSBhIGNoYXJhY3RlciB0byB0aGUgc3RyaW5nLiBUaGUgc3RyaW5nIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaAorICAgUHlVbmljb2RlX05ldywgbXVzdCBub3QgYmUgc2hhcmVkLCBhbmQgbXVzdCBub3QgaGF2ZSBiZWVuIGhhc2hlZCB5ZXQuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLiAqLworCitQeUFQSV9GVU5DKGludCkgUHlVbmljb2RlX1dyaXRlQ2hhcigKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IGluZGV4LAorICAgIFB5X1VDUzQgY2hhcmFjdGVyCisgICAgKTsKKwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogR2V0IHRoZSBtYXhpbXVtIG9yZGluYWwgZm9yIGEgVW5pY29kZSBjaGFyYWN0ZXIuICovCiBQeUFQSV9GVU5DKFB5X1VOSUNPREUpIFB5VW5pY29kZV9HZXRNYXgodm9pZCk7CiAjZW5kaWYKIAotLyogUmVzaXplIGFuIGFscmVhZHkgYWxsb2NhdGVkIFVuaWNvZGUgb2JqZWN0IHRvIHRoZSBuZXcgc2l6ZSBsZW5ndGguCisvKiBSZXNpemUgYW4gVW5pY29kZSBvYmplY3QuIFRoZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBleGNlcHQKKyAgIGlmIHRoZSBraW5kIG9mIHRoZSBzdHJpbmcgaXMgUHlVbmljb2RlX1dDSEFSX0tJTkQ6IGluIHRoaXMgY2FzZSwgdGhlIGxlbmd0aAorICAgaXMgdGhlIG51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJhY3RlcnMuCiAKICAgICp1bmljb2RlIGlzIG1vZGlmaWVkIHRvIHBvaW50IHRvIHRoZSBuZXcgKHJlc2l6ZWQpIG9iamVjdCBhbmQgMAogICAgcmV0dXJuZWQgb24gc3VjY2Vzcy4KIAotICAgVGhpcyBBUEkgbWF5IG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBmdW5jdGlvbiB3aGljaCBhbHNvIGNhbGxlZCB0aGUKLSAgIFVuaWNvZGUgY29uc3RydWN0b3IuIFRoZSByZWZjb3VudCBvbiB0aGUgb2JqZWN0IG11c3QgYmUgMS4gT3RoZXJ3aXNlLAotICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuCisgICBUcnkgdG8gcmVzaXplIHRoZSBzdHJpbmcgaW4gcGxhY2UgKHdoaWNoIGlzIHVzdWFsbHkgZmFzdGVyIHRoYW4gYWxsb2NhdGluZworICAgYSBuZXcgc3RyaW5nIGFuZCBjb3B5IGNoYXJhY3RlcnMpLCBvciBjcmVhdGUgYSBuZXcgc3RyaW5nLgogCiAgICBFcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZCBhcyBmb2xsb3dzOiBhbiBleGNlcHRpb24gaXMgc2V0LCAtMQogICAgaXMgcmV0dXJuZWQgYW5kICp1bmljb2RlIGxlZnQgdW50b3VjaGVkLgogCi0qLworICAgV0FSTklORzogVGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY2hlY2sgc3RyaW5nIGNvbnRlbnQsIHRoZSByZXN1bHQgbWF5IG5vdCBiZSBhCisgICAgICAgICAgICBzdHJpbmcgaW4gY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uLiAqLwogCiBQeUFQSV9GVU5DKGludCkgUHlVbmljb2RlX1Jlc2l6ZSgKICAgICBQeU9iamVjdCAqKnVuaWNvZGUsICAgICAgICAgLyogUG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QgKi8KQEAgLTU0MiwxMSArODkxLDY3IEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpidWZmZXI7CisgICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHBvczsKKyAgICAvKiBtaW5pbXVtIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHdoZW4gb3ZlcmFsbG9jYXRpb24gaXMgZW5hYmxlZCwKKyAgICAgICBzZWUgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCkgKi8KKyAgICBQeV9zc2l6ZV90IG1pbl9sZW5ndGg7CisgICAgdW5zaWduZWQgY2hhciBvdmVyYWxsb2NhdGU7CisgICAgLyogSWYgcmVhZG9ubHkgaXMgMSwgYnVmZmVyIGlzIGEgc2hhcmVkIHN0cmluZyAoY2Fubm90IGJlIG1vZGlmaWVkKQorICAgICAgIGFuZCBzaXplIGlzIHNldCB0byAwLiAqLworICAgIHVuc2lnbmVkIGNoYXIgcmVhZG9ubHk7Cit9IF9QeVVuaWNvZGVXcml0ZXIgOworCisvKiBJbml0aWFsaXplIGEgVW5pY29kZSB3cml0ZXIuCisKKyAgIElmIG1pbl9sZW5ndGggaXMgZ3JlYXRlciB0aGFuIHplcm8sIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgpCisgICBvdmVyYWxsb2NhdGVzIHRoZSBidWZmZXIgYW5kIG1pbl9sZW5ndGggaXMgdGhlIG1pbmltdW0gbGVuZ3RoIGluIGNoYXJhY3RlcnMKKyAgIG9mIHRoZSBidWZmZXIuICovCitQeUFQSV9GVU5DKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX0luaXQoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeV9zc2l6ZV90IG1pbl9sZW5ndGgpOworCisvKiBQcmVwYXJlIHRoZSBidWZmZXIgdG8gd3JpdGUgJ2xlbmd0aCcgY2hhcmFjdGVycworICAgd2l0aCB0aGUgc3BlY2lmaWVkIG1heGltdW0gY2hhcmFjdGVyLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKFdSSVRFUiwgTEVOR1RILCBNQVhDSEFSKSAgICAgICAgICAgICBcCisgICAgKCgoTUFYQ0hBUikgPD0gKFdSSVRFUiktPm1heGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgJiYgKExFTkdUSCkgPD0gKFdSSVRFUiktPnNpemUgLSAoV1JJVEVSKS0+cG9zKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgPyAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIDogKCgoTEVOR1RIKSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICA/IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgOiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbCgoV1JJVEVSKSwgKExFTkdUSCksIChNQVhDSEFSKSkpKQorCisvKiBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkgbWFjcm8KKyAgIGluc3RlYWQuICovCitQeUFQSV9GVU5DKGludCkKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpOworCitQeUFQSV9GVU5DKGludCkKK19QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeU9iamVjdCAqc3RyKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKQorX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKTsKKworUHlBUElfRlVOQyh2b2lkKQorX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcik7CisjZW5kaWYKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmCiAKIFB5QVBJX0ZVTkModm9pZCkgUHlVbmljb2RlX0ludGVybkluUGxhY2UoUHlPYmplY3QgKiopOwpAQCAtNTU5LDcgKzk2NCw4IEBACiAjZW5kaWYKIAogLyogVXNlIG9ubHkgaWYgeW91IGtub3cgaXQncyBhIHN0cmluZyAqLwotI2RlZmluZSBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQob3ApICgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5zdGF0ZSkKKyNkZWZpbmUgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKG9wKSBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5zdGF0ZS5pbnRlcm5lZCkKIAogLyogLS0tIHdjaGFyX3Qgc3VwcG9ydCBmb3IgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgaXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTYwNiwxNCArMTAxMiwxNyBAQAogICAgIFB5X3NzaXplX3QgKnNpemUgICAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyBvZiB0aGUgcmVzdWx0ICovCiAgICAgKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKikgX1B5VW5pY29kZV9Bc0tpbmQoUHlPYmplY3QgKnMsIHVuc2lnbmVkIGludCBraW5kKTsKKyNlbmRpZgorCiAjZW5kaWYKIAogLyogLS0tIFVuaWNvZGUgb3JkaW5hbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIENyZWF0ZSBhIFVuaWNvZGUgT2JqZWN0IGZyb20gdGhlIGdpdmVuIFVuaWNvZGUgY29kZSBwb2ludCBvcmRpbmFsLgogCi0gICBUaGUgb3JkaW5hbCBtdXN0IGJlIGluIHJhbmdlKDB4MTAwMDApIG9uIG5hcnJvdyBQeXRob24gYnVpbGRzCi0gICAoVUNTMiksIGFuZCByYW5nZSgweDExMDAwMCkgb24gd2lkZSBidWlsZHMgKFVDUzQpLiBBIFZhbHVlRXJyb3IgaXMKKyAgIFRoZSBvcmRpbmFsIG11c3QgYmUgaW4gcmFuZ2UoMHgxMTAwMDApLiBBIFZhbHVlRXJyb3IgaXMKICAgIHJhaXNlZCBpbiBjYXNlIGl0IGlzIG5vdC4KIAogKi8KQEAgLTY1MSw1MCArMTA2MCw0MiBAQAogCiAvKiAtLS0gTWFuYWdlIHRoZSBkZWZhdWx0IGVuY29kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotLyogUmV0dXJuIGEgUHl0aG9uIHN0cmluZyBob2xkaW5nIHRoZSBkZWZhdWx0IGVuY29kZWQgdmFsdWUgb2YgdGhlCi0gICBVbmljb2RlIG9iamVjdC4KLQotICAgU2FtZSBhcyBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKCkgZXhjZXB0Ci0gICB0aGUgcmVzdWx0aW5nIHN0cmluZyBpcyBjYWNoZWQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0IGZvciBzdWJzZXF1ZW50Ci0gICB1c2FnZSBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgY2FjaGVkIHZlcnNpb24gaXMgbmVlZGVkIHRvIGltcGxlbWVudAotICAgdGhlIGNoYXJhY3RlciBidWZmZXIgaW50ZXJmYWNlIGFuZCB3aWxsIGxpdmUgKGF0IGxlYXN0KSBhcyBsb25nIGFzCi0gICB0aGUgVW5pY29kZSBvYmplY3QgaXRzZWxmLgotCi0gICBUaGUgcmVmY291bnQgb2YgdGhlIHN0cmluZyBpcyAqbm90KiBpbmNyZW1lbnRlZC4KLQotICAgKioqIEV4cG9ydGVkIGZvciBpbnRlcm5hbCB1c2UgYnkgdGhlIGludGVycHJldGVyIG9ubHkgISEhICoqKgotCi0qLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZygKLSAgICBQeU9iamVjdCAqdW5pY29kZSwKLSAgICBjb25zdCBjaGFyICplcnJvcnMpOwotI2VuZGlmCi0KIC8qIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGVuY29kaW5nIChVVEYtOCkgb2YgdGhlCiAgICBVbmljb2RlIG9iamVjdCB1bmljb2RlIGFuZCB0aGUgc2l6ZSBvZiB0aGUgZW5jb2RlZCByZXByZXNlbnRhdGlvbgogICAgaW4gYnl0ZXMgc3RvcmVkIGluICpzaXplLgogCiAgICBJbiBjYXNlIG9mIGFuIGVycm9yLCBubyAqc2l6ZSBpcyBzZXQuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FjaGVzIHRoZSBVVEYtOCBlbmNvZGVkIHN0cmluZyBpbiB0aGUgdW5pY29kZW9iamVjdAorICAgYW5kIHN1YnNlcXVlbnQgY2FsbHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nLiAgVGhlIG1lbW9yeSBpcyByZWxlYXNlZAorICAgd2hlbiB0aGUgdW5pY29kZW9iamVjdCBpcyBkZWFsbG9jYXRlZC4KKworICAgX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUgaXMgYSAjZGVmaW5lIGZvciBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSB0bworICAgc3VwcG9ydCB0aGUgcHJldmlvdXMgaW50ZXJuYWwgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBiZWhhdmlvdXIuCisKICAgICoqKiBUaGlzIEFQSSBpcyBmb3IgaW50ZXJwcmV0ZXIgSU5URVJOQUwgVVNFIE9OTFkgYW5kIHdpbGwgbGlrZWx5CiAgICAqKiogYmUgcmVtb3ZlZCBvciBjaGFuZ2VkIGluIHRoZSBmdXR1cmUuCiAKICAgICoqKiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIFVuaWNvZGUgb2JqZWN0IGFzIFVURi04IGJ5dGVzIHN0cmluZywKICAgICoqKiBwbGVhc2UgdXNlIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBpbnN0ZWFkLgotCiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGNoYXIgKikgX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoCitQeUFQSV9GVU5DKGNoYXIgKikgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsCiAgICAgUHlfc3NpemVfdCAqc2l6ZSk7CisjZGVmaW5lIF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplCiAjZW5kaWYKIAogLyogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcgKFVURi04KSBvZiB0aGUKICAgIFVuaWNvZGUgb2JqZWN0IHVuaWNvZGUuCiAKKyAgIExpa2UgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoKSwgdGhpcyBhbHNvIGNhY2hlcyB0aGUgVVRGLTggcmVwcmVzZW50YXRpb24KKyAgIGluIHRoZSB1bmljb2Rlb2JqZWN0LgorCisgICBfUHlVbmljb2RlX0FzU3RyaW5nIGlzIGEgI2RlZmluZSBmb3IgUHlVbmljb2RlX0FzVVRGOCB0bworICAgc3VwcG9ydCB0aGUgcHJldmlvdXMgaW50ZXJuYWwgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBiZWhhdmlvdXIuCisKICAgIFVzZSBvZiB0aGlzIEFQSSBpcyBERVBSRUNBVEVEIHNpbmNlIG5vIHNpemUgaW5mb3JtYXRpb24gY2FuIGJlCiAgICBleHRyYWN0ZWQgZnJvbSB0aGUgcmV0dXJuZWQgZGF0YS4KIApAQCAtNzA3LDcgKzExMDgsOCBAQAogKi8KIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjaGFyICopIF9QeVVuaWNvZGVfQXNTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpOworUHlBUElfRlVOQyhjaGFyICopIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3QgKnVuaWNvZGUpOworI2RlZmluZSBfUHlVbmljb2RlX0FzU3RyaW5nIFB5VW5pY29kZV9Bc1VURjgKICNlbmRpZgogCiAvKiBSZXR1cm5zICJ1dGYtOCIuICAqLwpAQCAtODEyLDYgKzEyMTQsMTIgQEAKICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgICAgICAgLyogRW5jb2RlIHdoaXRlc3BhY2UgKHNwLCBodCwgbmwsIGNyKSBpbiBiYXNlNjQgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRW5jb2RlVVRGNygKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBpbnQgYmFzZTY0U2V0TywgICAgICAgICAgICAgLyogRW5jb2RlIFJGQzIxNTIgU2V0IE8gY2hhcmFjdGVycyBpbiBiYXNlNjQgKi8KKyAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgICAgICAgLyogRW5jb2RlIHdoaXRlc3BhY2UgKHNwLCBodCwgbmwsIGNyKSBpbiBiYXNlNjQgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIC0tLSBVVEYtOCBDb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtODM0LDYgKzEyNDIsMTAgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVVVEY4KAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIG51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLwpAQCAtOTE1LDYgKzEzMjcsMTEgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICBpbnQgYnl0ZW9yZGVyICAgICAgICAgICAgICAgLyogYnl0ZW9yZGVyIHRvIHVzZSAwPUJPTStuYXRpdmU7LTE9TEUsMT1CRSAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVVVEYzMigKKyAgICBQeU9iamVjdCAqb2JqZWN0LCAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICBpbnQgYnl0ZW9yZGVyICAgICAgICAgICAgICAgLyogYnl0ZW9yZGVyIHRvIHVzZSAwPUJPTStuYXRpdmU7LTE9TEUsMT1CRSAqLworICAgICk7CiAjZW5kaWYKIAogLyogLS0tIFVURi0xNiBDb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC05OTUsNiArMTQxMiwxMSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZVVURjE2KAorICAgIFB5T2JqZWN0KiB1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCisgICAgKTsKICNlbmRpZgogCiAvKiAtLS0gVW5pY29kZS1Fc2NhcGUgQ29kZWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTEwNjQsNiArMTQ4NiwxMCBAQAogICAgICk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKAorICAgIFB5T2JqZWN0KiB1bmljb2RlLAorICAgIGNvbnN0IGNoYXIqIGVycm9ycyk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIE51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLwpAQCAtMTA4OCw2ICsxNTE0LDEwIEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZygKKyAgICBQeU9iamVjdCogdW5pY29kZSwKKyAgICBjb25zdCBjaGFyKiBlcnJvcnMpOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZUFTQ0lJKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIE51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLwpAQCAtMTEzOSw2ICsxNTY5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmljb2RlIG9yZGluYWwgLT4gY2hhciBvcmRpbmFsKSAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIFB5T2JqZWN0ICptYXBwaW5nLCAgICAgICAgICAvKiBjaGFyYWN0ZXIgbWFwcGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pY29kZSBvcmRpbmFsIC0+IGNoYXIgb3JkaW5hbCkgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIFRyYW5zbGF0ZSBhIFB5X1VOSUNPREUgYnVmZmVyIG9mIHRoZSBnaXZlbiBsZW5ndGggYnkgYXBwbHlpbmcgYQpAQCAtMTE2Myw3ICsxNTk5LDcgQEAKICAgICApOwogI2VuZGlmCiAKLSNpZmRlZiBNU19XSU4zMgorI2lmZGVmIEhBVkVfTUJDUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTE4MCw2ICsxNjE2LDE0IEBACiAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQgICAgICAgIC8qIGJ5dGVzIGNvbnN1bWVkICovCiAgICAgKTsKIAorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKAorICAgIGludCBjb2RlX3BhZ2UsICAgICAgICAgICAgICAvKiBjb2RlIHBhZ2UgbnVtYmVyICovCisgICAgY29uc3QgY2hhciAqc3RyaW5nLCAgICAgICAgIC8qIGVuY29kZWQgc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgUHlfc3NpemVfdCAqY29uc3VtZWQgICAgICAgIC8qIGJ5dGVzIGNvbnN1bWVkICovCisgICAgKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgKTsKQEAgLTExODcsMTIgKzE2MzEsMTggQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTUJDUygKICAgICBjb25zdCBQeV9VTklDT0RFICpkYXRhLCAgICAgLyogVW5pY29kZSBjaGFyIGJ1ZmZlciAqLwotICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBOdW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKICNlbmRpZgogCi0jZW5kaWYgLyogTVNfV0lOMzIgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoCisgICAgaW50IGNvZGVfcGFnZSwgICAgICAgICAgICAgIC8qIGNvZGUgcGFnZSBudW1iZXIgKi8KKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICApOworCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBEZWNpbWFsIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMjQwLDYgKzE2OTAsNDkgQEAKICAgICApOwogI2VuZGlmCiAKKy8qIFNpbWlsYXIgdG8gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKCksIGJ1dCB0YWtlcyBhIFB5T2JqZWN0CisgICBhcyBhcmd1bWVudCBpbnN0ZWFkIG9mIGEgcmF3IGJ1ZmZlciBhbmQgbGVuZ3RoLiAgVGhpcyBmdW5jdGlvbiBhZGRpdGlvbmFsbHkKKyAgIHRyYW5zZm9ybXMgc3BhY2VzIHRvIEFTQ0lJIGJlY2F1c2UgdGhpcyBpcyB3aGF0IHRoZSBjYWxsZXJzIGluIGxvbmdvYmplY3QsCisgICBmbG9hdG9iamVjdCwgYW5kIGNvbXBsZXhvYmplY3QgZGlkIGFueXdheXMuICovCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkoCisgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgKTsKKyNlbmRpZgorCisvKiAtLS0gTG9jYWxlIGVuY29kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBEZWNvZGUgYSBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBkZWNvZGVyIGlzIHN0cmljdCBpZgorICAgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIGl0IHVzZXMgdGhlICdzdXJyb2dhdGVlc2NhcGUnCisgICBlcnJvciBoYW5kbGVyIChQRVAgMzgzKSB0byBlc2NhcGUgdW5kZWNvZGFibGUgYnl0ZXMuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4KKyAgIGJlIGRlY29kZWQgYXMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyIGFuZCAqc3Vycm9nYXRlZXNjYXBlKiBpcyBub3QgZXF1YWwgdG8KKyAgIHplcm8sIHRoZSBieXRlIHNlcXVlbmNlIGlzIGVzY2FwZWQgdXNpbmcgdGhlICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIKKyAgIGluc3RlYWQgb2YgYmVpbmcgZGVjb2RlZC4gKnN0ciogbXVzdCBlbmQgd2l0aCBhIG51bGwgY2hhcmFjdGVyIGJ1dCBjYW5ub3QKKyAgIGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLiAqLworCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoCisgICAgY29uc3QgY2hhciAqc3RyLAorICAgIFB5X3NzaXplX3QgbGVuLAorICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKKy8qIFNpbWlsYXIgdG8gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKSwgYnV0IGNvbXB1dGUgdGhlIHN0cmluZworICAgbGVuZ3RoIHVzaW5nIHN0cmxlbigpLiAqLworCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgKKyAgICBjb25zdCBjaGFyICpzdHIsCisgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworLyogRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZW5jb2RlciBpcworICAgc3RyaWN0IGlzICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSB0aGUKKyAgICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yIGhhbmRsZXIgaXMgdXNlZC4gUmV0dXJuIGEgYnl0ZXMgb2JqZWN0LiBUaGUgc3RyaW5nCisgICBjYW5ub3QgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuLiAqLworCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBjb25zdCBjaGFyICplcnJvcnMKKyAgICApOworCiAvKiAtLS0gRmlsZSBzeXN0ZW0gZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZW5jb2RlIHN0ciBvYmplY3RzIHRvIGJ5dGVzIHVzaW5nCkBAIC0xMjkyLDcgKzE3ODUsNyBAQAogCiAgICBUaGVzZSBhcmUgY2FwYWJsZSBvZiBoYW5kbGluZyBVbmljb2RlIG9iamVjdHMgYW5kIHN0cmluZ3Mgb24gaW5wdXQKICAgICh3ZSByZWZlciB0byB0aGVtIGFzIHN0cmluZ3MgaW4gdGhlIGRlc2NyaXB0aW9ucykgYW5kIHJldHVybgotICAgVW5pY29kZSBvYmplY3RzIG9yIGludGVnZXJzIGFzIGFwcG9ycHJpYXRlLiAqLworICAgVW5pY29kZSBvYmplY3RzIG9yIGludGVnZXJzIGFzIGFwcHJvcHJpYXRlLiAqLwogCiAvKiBDb25jYXQgdHdvIHN0cmluZ3MgZ2l2aW5nIGEgbmV3IFVuaWNvZGUgc3RyaW5nLiAqLwogCkBAIC0xNDI3LDYgKzE5MjAsMTUgQEAKICAgICBpbnQgZGlyZWN0aW9uICAgICAgICAgICAgICAgLyogRmluZCBkaXJlY3Rpb246ICsxIGZvcndhcmQsIC0xIGJhY2t3YXJkICovCiAgICAgKTsKIAorLyogTGlrZSBQeVVuaWNvZGVfRmluZCwgYnV0IHNlYXJjaCBmb3Igc2luZ2xlIGNoYXJhY3RlciBvbmx5LiAqLworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfRmluZENoYXIoCisgICAgUHlPYmplY3QgKnN0ciwKKyAgICBQeV9VQ1M0IGNoLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQsCisgICAgaW50IGRpcmVjdGlvbgorICAgICk7CisKIC8qIENvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3Vic3RyIGluIHN0cltzdGFydDplbmRdLiAqLwogCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9Db3VudCgKQEAgLTE0NjMsNyArMTk2NSw3IEBACiAvKiBSaWNoIGNvbXBhcmUgdHdvIHN0cmluZ3MgYW5kIHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIAogICAgLSBOVUxMIGluIGNhc2UgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQKLSAgIC0gUHlfVHJ1ZSBvciBQeV9GYWxzZSBmb3Igc3VjY2Vzc2Z1bHkgY29tcGFyaXNvbnMKKyAgIC0gUHlfVHJ1ZSBvciBQeV9GYWxzZSBmb3Igc3VjY2Vzc2Z1bGx5IGNvbXBhcmlzb25zCiAgICAtIFB5X05vdEltcGxlbWVudGVkIGluIGNhc2UgdGhlIHR5cGUgY29tYmluYXRpb24gaXMgdW5rbm93bgogCiAgICBOb3RlIHRoYXQgUHlfRVEgYW5kIFB5X05FIGNvbXBhcmlzb25zIGNhbiBjYXVzZSBhIFVuaWNvZGVXYXJuaW5nIGluCkBAIC0xNTE0LDM1ICsyMDE2LDI2IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBFeHRlcm5hbGx5IHZpc2libGUgZm9yIHN0ci5zdHJpcCh1bmljb2RlKSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlX1hTdHJpcCgKLSAgICBQeVVuaWNvZGVPYmplY3QgKnNlbGYsCisgICAgUHlPYmplY3QgKnNlbGYsCiAgICAgaW50IHN0cmlwdHlwZSwKICAgICBQeU9iamVjdCAqc2Vwb2JqCiAgICAgKTsKICNlbmRpZgogCi0vKiBVc2luZyB0aGUgY3VycmVudCBsb2NhbGUsIGluc2VydCB0aGUgdGhvdXNhbmRzIGdyb3VwaW5nCi0gICBpbnRvIHRoZSBzdHJpbmcgcG9pbnRlZCB0byBieSBidWZmZXIuICBGb3IgdGhlIGFyZ3VtZW50IGRlc2NyaXB0aW9ucywKLSAgIHNlZSBPYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggKi8KLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlKFB5X1VOSUNPREUgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgpOwotI2VuZGlmCi0KIC8qIFVzaW5nIGV4cGxpY2l0IHBhc3NlZC1pbiB2YWx1ZXMsIGluc2VydCB0aGUgdGhvdXNhbmRzIGdyb3VwaW5nCiAgICBpbnRvIHRoZSBzdHJpbmcgcG9pbnRlZCB0byBieSBidWZmZXIuICBGb3IgdGhlIGFyZ3VtZW50IGRlc2NyaXB0aW9ucywKICAgIHNlZSBPYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyhQeV9VTklDT0RFICpidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0aG91c2FuZHNfc2VwKTsKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IGluZGV4LAorICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCisgICAgdm9pZCAqZGlnaXRzLAorICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCisgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCisgICAgUHlPYmplY3QgKnRob3VzYW5kc19zZXAsCisgICAgUHlfVUNTNCAqbWF4Y2hhcik7CiAjZW5kaWYKIC8qID09PSBDaGFyYWN0ZXJzIFR5cGUgQVBJcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCkBAIC0xNTk4LDYgKzIwOTEsMzQgQEAKICAgICBQeV9VQ1M0IGNoICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCiAgICAgKTsKIAorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub1RpdGxlRnVsbCgKKyAgICBQeV9VQ1M0IGNoLCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgKnJlcworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvVXBwZXJGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfSXNDYXNlSWdub3JhYmxlKAorICAgIFB5X1VDUzQgY2ggICAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0lzQ2FzZWQoCisgICAgUHlfVUNTNCBjaCAgICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgKTsKKwogUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9EZWNpbWFsRGlnaXQoCiAgICAgUHlfVUNTNCBjaCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLwogICAgICk7CkBAIC0xNjc2LDYgKzIxOTcsMTcgQEAKICAgICApOwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKKyNpZiBkZWZpbmVkKFB5X0RFQlVHKSAmJiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koCisgICAgUHlPYmplY3QgKm9wLAorICAgIGludCBjaGVja19jb250ZW50KTsKKyNlbmRpZgorCisvKiBSZXR1cm4gYW4gaW50ZXJuZWQgVW5pY29kZSBvYmplY3QgZm9yIGFuIElkZW50aWZpZXI7IG1heSBmYWlsIGlmIHRoZXJlIGlzIG5vIG1lbW9yeS4qLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyKik7CisvKiBDbGVhciBhbGwgc3RhdGljIHN0cmluZ3MuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKHZvaWQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKaW5kZXggNDMzODhlNy4uODhlZWQxZiAxMDA2NDQKLS0tIGEvTElDRU5TRQorKysgYi9MSUNFTlNFCkBAIC03NCw2ICs3NCw3IEBACiAgICAgMy4yLjEgICAgICAgICAgIDMuMiAgICAgICAgIDIwMTEgICAgICAgIFBTRiAgICAgICAgIHllcwogICAgIDMuMi4yICAgICAgICAgICAzLjIuMSAgICAgICAyMDExICAgICAgICBQU0YgICAgICAgICB5ZXMKICAgICAzLjIuMyAgICAgICAgICAgMy4yLjIgICAgICAgMjAxMiAgICAgICAgUFNGICAgICAgICAgeWVzCisgICAgMy4zLjAgICAgICAgICAgIDMuMiAgICAgICAgIDIwMTIgICAgICAgIFBTRiAgICAgICAgIHllcwogCiBGb290bm90ZXM6CiAKZGlmZiAtLWdpdCBhL0xpYi9fZHVtbXlfdGhyZWFkLnB5IGIvTGliL19kdW1teV90aHJlYWQucHkKaW5kZXggZWQ1MDUyMC4uMTNiMWYyNiAxMDA2NDQKLS0tIGEvTGliL19kdW1teV90aHJlYWQucHkKKysrIGIvTGliL19kdW1teV90aHJlYWQucHkKQEAgLTI0LDExICsyNCw3IEBACiAjIGltcG9ydHMgYXJlIGRvbmUgd2hlbiBuZWVkZWQgb24gYSBmdW5jdGlvbi1ieS1mdW5jdGlvbiBiYXNpcy4gIFNpbmNlIHRocmVhZHMKICMgYXJlIGRpc2FibGVkLCB0aGUgaW1wb3J0IGxvY2sgc2hvdWxkIG5vdCBiZSBhbiBpc3N1ZSBhbnl3YXkgKD8/KS4KIAotY2xhc3MgZXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiJEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBfdGhyZWFkLmVycm9yLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgc2VsZi5hcmdzID0gYXJncworZXJyb3IgPSBSdW50aW1lRXJyb3IKIAogZGVmIHN0YXJ0X25ld190aHJlYWQoZnVuY3Rpb24sIGFyZ3MsIGt3YXJncz17fSk6CiAgICAgIiIiRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkuCmRpZmYgLS1naXQgYS9MaWIvX29zeF9zdXBwb3J0LnB5IGIvTGliL19vc3hfc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2FhZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL19vc3hfc3VwcG9ydC5weQpAQCAtMCwwICsxLDQ4OCBAQAorIiIiU2hhcmVkIE9TIFggc3VwcG9ydCBmdW5jdGlvbnMuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK19fYWxsX18gPSBbCisgICAgJ2NvbXBpbGVyX2ZpeHVwJywKKyAgICAnY3VzdG9taXplX2NvbmZpZ192YXJzJywKKyAgICAnY3VzdG9taXplX2NvbXBpbGVyJywKKyAgICAnZ2V0X3BsYXRmb3JtX29zeCcsCitdCisKKyMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtYXkgY29udGFpbiB1bml2ZXJzYWwgYnVpbGQgZmxhZ3MsCisjIGxpa2UgIi1hcmNoIiBvciAiLWlzZGtyb290IiwgdGhhdCBtYXkgbmVlZCBjdXN0b21pemF0aW9uIGZvcgorIyB0aGUgdXNlciBlbnZpcm9ubWVudAorX1VOSVZFUlNBTF9DT05GSUdfVkFSUyA9ICgnQ0ZMQUdTJywgJ0xERkxBR1MnLCAnQ1BQRkxBR1MnLCAnQkFTRUNGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JMRFNIQVJFRCcsICdMRFNIQVJFRCcsICdDQycsICdDWFgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQWV9DRkxBR1MnLCAnUFlfTERGTEFHUycsICdQWV9DUFBGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BZX0NPUkVfQ0ZMQUdTJykKKworIyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IG1heSBjb250YWluIGNvbXBpbGVyIGNhbGxzCitfQ09NUElMRVJfQ09ORklHX1ZBUlMgPSAoJ0JMRFNIQVJFRCcsICdMRFNIQVJFRCcsICdDQycsICdDWFgnKQorCisjIHByZWZpeCBhZGRlZCB0byBvcmlnaW5hbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIG5hbWVzCitfSU5JVFBSRSA9ICdfT1NYX1NVUFBPUlRfSU5JVElBTF8nCisKKworZGVmIF9maW5kX2V4ZWN1dGFibGUoZXhlY3V0YWJsZSwgcGF0aD1Ob25lKToKKyAgICAiIiJUcmllcyB0byBmaW5kICdleGVjdXRhYmxlJyBpbiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICdwYXRoJy4KKworICAgIEEgc3RyaW5nIGxpc3RpbmcgZGlyZWN0b3JpZXMgc2VwYXJhdGVkIGJ5ICdvcy5wYXRoc2VwJzsgZGVmYXVsdHMgdG8KKyAgICBvcy5lbnZpcm9uWydQQVRIJ10uICBSZXR1cm5zIHRoZSBjb21wbGV0ZSBmaWxlbmFtZSBvciBOb25lIGlmIG5vdCBmb3VuZC4KKyAgICAiIiIKKyAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgIHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKworICAgIHBhdGhzID0gcGF0aC5zcGxpdChvcy5wYXRoc2VwKQorICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZXhlY3V0YWJsZSkKKworICAgIGlmIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBvciBvcy5uYW1lID09ICdvczInKSBhbmQgKGV4dCAhPSAnLmV4ZScpOgorICAgICAgICBleGVjdXRhYmxlID0gZXhlY3V0YWJsZSArICcuZXhlJworCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGV4ZWN1dGFibGUpOgorICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4ocCwgZXhlY3V0YWJsZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGYpOgorICAgICAgICAgICAgICAgICMgdGhlIGZpbGUgZXhpc3RzLCB3ZSBoYXZlIGEgc2hvdCBhdCBzcGF3biB3b3JraW5nCisgICAgICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZXhlY3V0YWJsZQorCisKK2RlZiBfcmVhZF9vdXRwdXQoY29tbWFuZHN0cmluZyk6CisgICAgIiIiT3V0cHV0IGZyb20gc3VjY2VzZnVsIGNvbW1hbmQgZXhlY3V0aW9uIG9yIE5vbmUiIiIKKyAgICAjIFNpbWlsYXIgdG8gb3MucG9wZW4oY29tbWFuZHN0cmluZywgInIiKS5yZWFkKCksCisgICAgIyBidXQgd2l0aG91dCBhY3R1YWxseSB1c2luZyBvcy5wb3BlbiBiZWNhdXNlIHRoYXQKKyAgICAjIGZ1bmN0aW9uIGlzIG5vdCB1c2FibGUgZHVyaW5nIHB5dGhvbiBib290c3RyYXAuCisgICAgIyB0ZW1wZmlsZSBpcyBhbHNvIG5vdCBhdmFpbGFibGUgdGhlbi4KKyAgICBpbXBvcnQgY29udGV4dGxpYgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgICAgIGZwID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIGZwID0gb3BlbigiL3RtcC9fb3N4X3N1cHBvcnQuJXMiJSgKKyAgICAgICAgICAgIG9zLmdldHBpZCgpLCksICJ3K2IiKQorCisgICAgd2l0aCBjb250ZXh0bGliLmNsb3NpbmcoZnApIGFzIGZwOgorICAgICAgICBjbWQgPSAiJXMgMj4vZGV2L251bGwgPiclcyciICUgKGNvbW1hbmRzdHJpbmcsIGZwLm5hbWUpCisgICAgICAgIHJldHVybiBmcC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpLnN0cmlwKCkgaWYgbm90IG9zLnN5c3RlbShjbWQpIGVsc2UgTm9uZQorCisKK2RlZiBfZmluZF9idWlsZF90b29sKHRvb2xuYW1lKToKKyAgICAiIiJGaW5kIGEgYnVpbGQgdG9vbCBvbiBjdXJyZW50IHBhdGggb3IgdXNpbmcgeGNydW4iIiIKKyAgICByZXR1cm4gKF9maW5kX2V4ZWN1dGFibGUodG9vbG5hbWUpCisgICAgICAgICAgICAgICAgb3IgX3JlYWRfb3V0cHV0KCIvdXNyL2Jpbi94Y3J1biAtZmluZCAlcyIgJSAodG9vbG5hbWUsKSkKKyAgICAgICAgICAgICAgICBvciAnJworICAgICAgICAgICAgKQorCitfU1lTVEVNX1ZFUlNJT04gPSBOb25lCisKK2RlZiBfZ2V0X3N5c3RlbV92ZXJzaW9uKCk6CisgICAgIiIiUmV0dXJuIHRoZSBPUyBYIHN5c3RlbSB2ZXJzaW9uIGFzIGEgc3RyaW5nIiIiCisgICAgIyBSZWFkaW5nIHRoaXMgcGxpc3QgaXMgYSBkb2N1bWVudGVkIHdheSB0byBnZXQgdGhlIHN5c3RlbQorICAgICMgdmVyc2lvbiAoc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgR2VzdGFsdCBNYW5hZ2VyKQorICAgICMgV2UgYXZvaWQgdXNpbmcgcGxhdGZvcm0ubWFjX3ZlciB0byBhdm9pZCBwb3NzaWJsZSBib290c3RyYXAgaXNzdWVzIGR1cmluZworICAgICMgdGhlIGJ1aWxkIG9mIFB5dGhvbiBpdHNlbGYgKGRpc3R1dGlscyBpcyB1c2VkIHRvIGJ1aWxkIHN0YW5kYXJkIGxpYnJhcnkKKyAgICAjIGV4dGVuc2lvbnMpLgorCisgICAgZ2xvYmFsIF9TWVNURU1fVkVSU0lPTgorCisgICAgaWYgX1NZU1RFTV9WRVJTSU9OIGlzIE5vbmU6CisgICAgICAgIF9TWVNURU1fVkVSU0lPTiA9ICcnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBvcGVuKCcvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1N5c3RlbVZlcnNpb24ucGxpc3QnKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICMgV2UncmUgb24gYSBwbGFpbiBkYXJ3aW4gYm94LCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICMgYmVoYXZpb3VyLgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2gocic8a2V5PlByb2R1Y3RVc2VyVmlzaWJsZVZlcnNpb248L2tleT5ccyonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxzdHJpbmc+KC4qPyk8L3N0cmluZz4nLCBmLnJlYWQoKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIF9TWVNURU1fVkVSU0lPTiA9ICcuJy5qb2luKG0uZ3JvdXAoMSkuc3BsaXQoJy4nKVs6Ml0pCisgICAgICAgICAgICAjIGVsc2U6IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBiZWhhdmlvdXIKKworICAgIHJldHVybiBfU1lTVEVNX1ZFUlNJT04KKworZGVmIF9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKF9jb25maWdfdmFycyk6CisgICAgIiIiUmVtb3ZlIG9yaWdpbmFsIHVubW9kaWZpZWQgdmFsdWVzIGZvciB0ZXN0aW5nIiIiCisgICAgIyBUaGlzIGlzIG5lZWRlZCBmb3IgaGlnaGVyLWxldmVsIGNyb3NzLXBsYXRmb3JtIHRlc3RzIG9mIGdldF9wbGF0Zm9ybS4KKyAgICBmb3IgayBpbiBsaXN0KF9jb25maWdfdmFycyk6CisgICAgICAgIGlmIGsuc3RhcnRzd2l0aChfSU5JVFBSRSk6CisgICAgICAgICAgICBkZWwgX2NvbmZpZ192YXJzW2tdCisKK2RlZiBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBuZXd2YWx1ZSk6CisgICAgIiIiU2F2ZSBtb2RpZmllZCBhbmQgb3JpZ2luYWwgdW5tb2RpZmllZCB2YWx1ZSBvZiBjb25maWd1cmF0aW9uIHZhciIiIgorCisgICAgb2xkdmFsdWUgPSBfY29uZmlnX3ZhcnMuZ2V0KGN2LCAnJykKKyAgICBpZiAob2xkdmFsdWUgIT0gbmV3dmFsdWUpIGFuZCAoX0lOSVRQUkUgKyBjdiBub3QgaW4gX2NvbmZpZ192YXJzKToKKyAgICAgICAgX2NvbmZpZ192YXJzW19JTklUUFJFICsgY3ZdID0gb2xkdmFsdWUKKyAgICBfY29uZmlnX3ZhcnNbY3ZdID0gbmV3dmFsdWUKKworZGVmIF9zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKCk6CisgICAgIiIiUmV0dXJucyBUcnVlIGlmIHVuaXZlcnNhbCBidWlsZHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSIiIgorICAgICMgQXMgYW4gYXBwcm94aW1hdGlvbiwgd2UgYXNzdW1lIHRoYXQgaWYgd2UgYXJlIHJ1bm5pbmcgb24gMTAuNCBvciBhYm92ZSwKKyAgICAjIHRoZW4gd2UgYXJlIHJ1bm5pbmcgd2l0aCBhbiBYY29kZSBlbnZpcm9ubWVudCB0aGF0IHN1cHBvcnRzIHVuaXZlcnNhbAorICAgICMgYnVpbGRzLCBpbiBwYXJ0aWN1bGFyIC1pc3lzcm9vdCBhbmQgLWFyY2ggYXJndW1lbnRzIHRvIHRoZSBjb21waWxlci4gVGhpcworICAgICMgaXMgaW4gc3VwcG9ydCBvZiBhbGxvd2luZyAxMC40IHVuaXZlcnNhbCBidWlsZHMgdG8gcnVuIG9uIDEwLjMueCBzeXN0ZW1zLgorCisgICAgb3N4X3ZlcnNpb24gPSBfZ2V0X3N5c3RlbV92ZXJzaW9uKCkKKyAgICBpZiBvc3hfdmVyc2lvbjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShpbnQoaSkgZm9yIGkgaW4gb3N4X3ZlcnNpb24uc3BsaXQoJy4nKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBvc3hfdmVyc2lvbiA9ICcnCisgICAgcmV0dXJuIGJvb2wob3N4X3ZlcnNpb24gPj0gKDEwLCA0KSkgaWYgb3N4X3ZlcnNpb24gZWxzZSBGYWxzZQorCisKK2RlZiBfZmluZF9hcHByb3ByaWF0ZV9jb21waWxlcihfY29uZmlnX3ZhcnMpOgorICAgICIiIkZpbmQgYXBwcm9wcmlhdGUgQyBjb21waWxlciBmb3IgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMiIiIKKworICAgICMgSXNzdWUgIzEzNTkwOgorICAgICMgICAgVGhlIE9TWCBsb2NhdGlvbiBmb3IgdGhlIGNvbXBpbGVyIHZhcmllcyBiZXR3ZWVuIE9TWAorICAgICMgICAgKG9yIHJhdGhlciBYY29kZSkgcmVsZWFzZXMuICBXaXRoIG9sZGVyIHJlbGVhc2VzICh1cC10byAxMC41KQorICAgICMgICAgdGhlIGNvbXBpbGVyIGlzIGluIC91c3IvYmluLCB3aXRoIG5ld2VyIHJlbGVhc2VzIHRoZSBjb21waWxlcgorICAgICMgICAgY2FuIG9ubHkgYmUgZm91bmQgaW5zaWRlIFhjb2RlLmFwcCBpZiB0aGUgIkNvbW1hbmQgTGluZSBUb29scyIKKyAgICAjICAgIGFyZSBub3QgaW5zdGFsbGVkLgorICAgICMKKyAgICAjICAgIEZ1dGhlcm1vcmUsIHRoZSBjb21waWxlciB0aGF0IGNhbiBiZSB1c2VkIHZhcmllcyBiZXR3ZWVuCisgICAgIyAgICBYY29kZSByZWxlYXNlcy4gVXB0byBYY29kZSA0IGl0IHdhcyBwb3NzaWJsZSB0byB1c2UgJ2djYy00LjInCisgICAgIyAgICBhcyB0aGUgY29tcGlsZXIsIGFmdGVyIHRoYXQgJ2NsYW5nJyBzaG91bGQgYmUgdXNlZCBiZWNhdXNlCisgICAgIyAgICBnY2MtNC4yIGlzIGVpdGhlciBub3QgcHJlc2VudCwgb3IgYSBjb3B5IG9mICdsbHZtLWdjYycgdGhhdAorICAgICMgICAgbWlzY29tcGlsZXMgUHl0aG9uLgorCisgICAgIyBza2lwIGNoZWNrcyBpZiB0aGUgY29tcGlsZXIgd2FzIG92ZXJyaWRlbiB3aXRoIGEgQ0MgZW52IHZhcmlhYmxlCisgICAgaWYgJ0NDJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKyAgICAjIFRoZSBDQyBjb25maWcgdmFyIG1pZ2h0IGNvbnRhaW4gYWRkaXRpb25hbCBhcmd1bWVudHMuCisgICAgIyBJZ25vcmUgdGhlbSB3aGlsZSBzZWFyY2hpbmcuCisgICAgY2MgPSBvbGRjYyA9IF9jb25maWdfdmFyc1snQ0MnXS5zcGxpdCgpWzBdCisgICAgaWYgbm90IF9maW5kX2V4ZWN1dGFibGUoY2MpOgorICAgICAgICAjIENvbXBpbGVyIGlzIG5vdCBmb3VuZCBvbiB0aGUgc2hlbGwgc2VhcmNoIFBBVEguCisgICAgICAgICMgTm93IHNlYXJjaCBmb3IgY2xhbmcsIGZpcnN0IG9uIFBBVEggKGlmIHRoZSBDb21tYW5kIExJbmUKKyAgICAgICAgIyBUb29scyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluIC8gb3IgaWYgdGhlIHVzZXIgaGFzIHByb3ZpZGVkCisgICAgICAgICMgYW5vdGhlciBsb2NhdGlvbiB2aWEgQ0MpLiAgSWYgbm90IGZvdW5kLCB0cnkgdXNpbmcgeGNydW4KKyAgICAgICAgIyB0byBmaW5kIGFuIHVuaW5zdGFsbGVkIGNsYW5nICh3aXRoaW4gYSBzZWxlY3RlZCBYY29kZSkuCisKKyAgICAgICAgIyBOT1RFOiBDYW5ub3QgdXNlIHN1YnByb2Nlc3MgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcAorICAgICAgICAjIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBpdHNlbGYgKGFuZCBvcy5wb3BlbiBpcworICAgICAgICAjIGltcGxlbWVudGVkIG9uIHRvcCBvZiBzdWJwcm9jZXNzIGFuZCBpcyB0aGVyZWZvcmUgbm90CisgICAgICAgICMgdXNhYmxlIGFzIHdlbGwpCisKKyAgICAgICAgY2MgPSBfZmluZF9idWlsZF90b29sKCdjbGFuZycpCisKKyAgICBlbGlmIG9zLnBhdGguYmFzZW5hbWUoY2MpLnN0YXJ0c3dpdGgoJ2djYycpOgorICAgICAgICAjIENvbXBpbGVyIGlzIEdDQywgY2hlY2sgaWYgaXQgaXMgTExWTS1HQ0MKKyAgICAgICAgZGF0YSA9IF9yZWFkX291dHB1dCgiJyVzJyAtLXZlcnNpb24iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNjLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpLCkpCisgICAgICAgIGlmICdsbHZtLWdjYycgaW4gZGF0YToKKyAgICAgICAgICAgICMgRm91bmQgTExWTS1HQ0MsIGZhbGwgYmFjayB0byBjbGFuZworICAgICAgICAgICAgY2MgPSBfZmluZF9idWlsZF90b29sKCdjbGFuZycpCisKKyAgICBpZiBub3QgY2M6CisgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKAorICAgICAgICAgICAgICAgIkNhbm5vdCBsb2NhdGUgd29ya2luZyBjb21waWxlciIpCisKKyAgICBpZiBjYyAhPSBvbGRjYzoKKyAgICAgICAgIyBGb3VuZCBhIHJlcGxhY2VtZW50IGNvbXBpbGVyLgorICAgICAgICAjIE1vZGlmeSBjb25maWcgdmFycyB1c2luZyBuZXcgY29tcGlsZXIsIGlmIG5vdCBhbHJlYWR5IGV4cGxpY3RseQorICAgICAgICAjIG92ZXJyaWRlbiBieSBhbiBlbnYgdmFyaWFibGUsIHByZXNlcnZpbmcgYWRkaXRpb25hbCBhcmd1bWVudHMuCisgICAgICAgIGZvciBjdiBpbiBfQ09NUElMRVJfQ09ORklHX1ZBUlM6CisgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIGN2X3NwbGl0ID0gX2NvbmZpZ192YXJzW2N2XS5zcGxpdCgpCisgICAgICAgICAgICAgICAgY3Zfc3BsaXRbMF0gPSBjYyBpZiBjdiAhPSAnQ1hYJyBlbHNlIGNjICsgJysrJworICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsICcgJy5qb2luKGN2X3NwbGl0KSkKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3MoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgYWxsIHVuaXZlcnNhbCBidWlsZCBhcmd1bWVudHMgZnJvbSBjb25maWcgdmFycyIiIgorCisgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CisgICAgICAgICMgRG8gbm90IGFsdGVyIGEgY29uZmlnIHZhciBleHBsaWNpdGx5IG92ZXJyaWRlbiBieSBlbnYgdmFyCisgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KKyAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCisgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIF9yZW1vdmVfdW5zdXBwb3J0ZWRfYXJjaHMoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgYW55IHVuc3VwcG9ydGVkIGFyY2hzIGZyb20gY29uZmlnIHZhcnMiIiIKKyAgICAjIERpZmZlcmVudCBYY29kZSByZWxlYXNlcyBzdXBwb3J0IGRpZmZlcmVudCBzZXRzIGZvciAnLWFyY2gnCisgICAgIyBmbGFncy4gSW4gcGFydGljdWxhciwgWGNvZGUgNC54IG5vIGxvbmdlciBzdXBwb3J0cyB0aGUKKyAgICAjIFBQQyBhcmNoaXRlY3R1cmVzLgorICAgICMKKyAgICAjIFRoaXMgY29kZSBhdXRvbWF0aWNhbGx5IHJlbW92ZXMgJy1hcmNoIHBwYycgYW5kICctYXJjaCBwcGM2NCcKKyAgICAjIHdoZW4gdGhlc2UgYXJlIG5vdCBzdXBwb3J0ZWQuIFRoYXQgbWFrZXMgaXQgcG9zc2libGUgdG8KKyAgICAjIGJ1aWxkIGV4dGVuc2lvbnMgb24gT1NYIDEwLjcgYW5kIGxhdGVyIHdpdGggdGhlIHByZWJ1aWx0CisgICAgIyAzMi1iaXQgaW5zdGFsbGVyIG9uIHRoZSBweXRob24ub3JnIHdlYnNpdGUuCisKKyAgICAjIHNraXAgY2hlY2tzIGlmIHRoZSBjb21waWxlciB3YXMgb3ZlcnJpZGVuIHdpdGggYSBDQyBlbnYgdmFyaWFibGUKKyAgICBpZiAnQ0MnIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworICAgIGlmIHJlLnNlYXJjaCgnLWFyY2hccytwcGMnLCBfY29uZmlnX3ZhcnNbJ0NGTEFHUyddKSBpcyBub3QgTm9uZToKKyAgICAgICAgIyBOT1RFOiBDYW5ub3QgdXNlIHN1YnByb2Nlc3MgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcAorICAgICAgICAjIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBpdHNlbGYKKyAgICAgICAgc3RhdHVzID0gb3Muc3lzdGVtKCInJXMnIC1hcmNoIHBwYyAteCBjIC9kZXYvbnVsbCAyPi9kZXYvbnVsbCIlKAorICAgICAgICAgICAgX2NvbmZpZ192YXJzWydDQyddLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpLCkpCisgICAgICAgICMgVGhlIEFwcGxlIGNvbXBpbGVyIGRyaXZlcnMgcmV0dXJuIHN0YXR1cyAyNTUgaWYgbm8gUFBDCisgICAgICAgIGlmIChzdGF0dXMgPj4gOCkgPT0gMjU1OgorICAgICAgICAgICAgIyBDb21waWxlciBkb2Vzbid0IHN1cHBvcnQgUFBDLCByZW1vdmUgdGhlIHJlbGF0ZWQKKyAgICAgICAgICAgICMgJy1hcmNoJyBmbGFncyBpZiBub3QgZXhwbGljaXRseSBvdmVycmlkZGVuIGJ5IGFuCisgICAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKKyAgICAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX292ZXJyaWRlX2FsbF9hcmNocyhfY29uZmlnX3ZhcnMpOgorICAgICIiIkFsbG93IG92ZXJyaWRlIG9mIGFsbCBhcmNocyB3aXRoIEFSQ0hGTEFHUyBlbnYgdmFyIiIiCisgICAgIyBOT1RFOiBUaGlzIG5hbWUgd2FzIGludHJvZHVjZWQgYnkgQXBwbGUgaW4gT1NYIDEwLjUgYW5kCisgICAgIyBpcyB1c2VkIGJ5IHNldmVyYWwgc2NyaXB0aW5nIGxhbmd1YWdlcyBkaXN0cmlidXRlZCB3aXRoCisgICAgIyB0aGF0IE9TIHJlbGVhc2UuCisgICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYXJjaCA9IG9zLmVudmlyb25bJ0FSQ0hGTEFHUyddCisgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgorICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCAnLWFyY2gnIGluIF9jb25maWdfdmFyc1tjdl06CisgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCisgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCisgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIF9jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKF9jb25maWdfdmFycyk6CisgICAgIiIiUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYW55IFNES3Mgbm90IGF2YWlsYWJsZSIiIgorICAgICMgSWYgd2UncmUgb24gT1NYIDEwLjUgb3IgbGF0ZXIgYW5kIHRoZSB1c2VyIHRyaWVzIHRvCisgICAgIyBjb21waWxlIGFuIGV4dGVuc2lvbiB1c2luZyBhbiBTREsgdGhhdCBpcyBub3QgcHJlc2VudAorICAgICMgb24gdGhlIGN1cnJlbnQgbWFjaGluZSBpdCBpcyBiZXR0ZXIgdG8gbm90IHVzZSBhbiBTREsKKyAgICAjIHRoYW4gdG8gZmFpbC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCB3aXRoCisgICAgIyB0aGUgc3RhbmRhbG9uZyBDb21tYW5kIExpbmUgVG9vbHMgYWx0ZXJuYXRpdmUgdG8gYQorICAgICMgZnVsbC1ibG93biBYY29kZSBpbnN0YWxsIHNpbmNlIHRoZSBDTFQgcGFja2FnZXMgZG8gbm90CisgICAgIyBwcm92aWRlIFNES3MuICBJZiB0aGUgU0RLIGlzIG5vdCBwcmVzZW50LCBpdCBpcyBhc3N1bWVkCisgICAgIyB0aGF0IHRoZSBoZWFkZXIgZmlsZXMgYW5kIGRldiBsaWJzIGhhdmUgYmVlbiBpbnN0YWxsZWQKKyAgICAjIHRvIC91c3IgYW5kIC9TeXN0ZW0vTGlicmFyeSBieSBlaXRoZXIgYSBzdGFuZGFsb25lIENMVAorICAgICMgcGFja2FnZSBvciB0aGUgQ0xUIGNvbXBvbmVudCB3aXRoaW4gWGNvZGUuCisgICAgY2ZsYWdzID0gX2NvbmZpZ192YXJzLmdldCgnQ0ZMQUdTJywgJycpCisgICAgbSA9IHJlLnNlYXJjaChyJy1pc3lzcm9vdFxzKyhcUyspJywgY2ZsYWdzKQorICAgIGlmIG0gaXMgbm90IE5vbmU6CisgICAgICAgIHNkayA9IG0uZ3JvdXAoMSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNkayk6CisgICAgICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKKyAgICAgICAgICAgICAgICAjIERvIG5vdCBhbHRlciBhIGNvbmZpZyB2YXIgZXhwbGljaXRseSBvdmVycmlkZW4gYnkgZW52IHZhcgorICAgICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1pc3lzcm9vdFxzK1xTKyg/OlxzfCQpJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIGNvbXBpbGVyX2ZpeHVwKGNvbXBpbGVyX3NvLCBjY19hcmdzKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc3RyaXAgJy1pc3lzcm9vdCBQQVRIJyBhbmQgJy1hcmNoIEFSQ0gnIGZyb20gdGhlCisgICAgY29tcGlsZSBmbGFncyBpZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIG9uZSB0aGVtIGluIGV4dHJhX2NvbXBpbGVfZmxhZ3MuCisKKyAgICBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlICctYXJjaCBBUkNIJyBhZGRzIGFub3RoZXIgYXJjaGl0ZWN0dXJlIHRvIHRoZQorICAgIGJ1aWxkLCB3aXRob3V0IGEgd2F5IHRvIHJlbW92ZSBhbiBhcmNoaXRlY3R1cmUuIEZ1cnRoZXJtb3JlIEdDQyB3aWxsCisgICAgYmFyZiBpZiBtdWx0aXBsZSAnLWlzeXNyb290JyBhcmd1bWVudHMgYXJlIHByZXNlbnQuCisgICAgIiIiCisgICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gRmFsc2UKKworICAgIGNvbXBpbGVyX3NvID0gbGlzdChjb21waWxlcl9zbykKKworICAgIGlmIG5vdCBfc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcygpOgorICAgICAgICAjIE9TWCBiZWZvcmUgMTAuNC4wLCB0aGVzZSBkb24ndCBzdXBwb3J0IC1hcmNoIGFuZCAtaXN5c3Jvb3QgYXQKKyAgICAgICAgIyBhbGwuCisgICAgICAgIHN0cmlwQXJjaCA9IHN0cmlwU3lzcm9vdCA9IFRydWUKKyAgICBlbHNlOgorICAgICAgICBzdHJpcEFyY2ggPSAnLWFyY2gnIGluIGNjX2FyZ3MKKyAgICAgICAgc3RyaXBTeXNyb290ID0gJy1pc3lzcm9vdCcgaW4gY2NfYXJncworCisgICAgaWYgc3RyaXBBcmNoIG9yICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb246CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW5kZXggPSBjb21waWxlcl9zby5pbmRleCgnLWFyY2gnKQorICAgICAgICAgICAgICAgICMgU3RyaXAgdGhpcyBhcmd1bWVudCBhbmQgdGhlIG5leHQgb25lOgorICAgICAgICAgICAgICAgIGRlbCBjb21waWxlcl9zb1tpbmRleDppbmRleCsyXQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGlmICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb24gYW5kIG5vdCBzdHJpcEFyY2g6CisgICAgICAgICMgVXNlciBzcGVjaWZpZWQgZGlmZmVyZW50IC1hcmNoIGZsYWdzIGluIHRoZSBlbnZpcm9uLAorICAgICAgICAjIHNlZSBhbHNvIGRpc3R1dGlscy5zeXNjb25maWcKKyAgICAgICAgY29tcGlsZXJfc28gPSBjb21waWxlcl9zbyArIG9zLmVudmlyb25bJ0FSQ0hGTEFHUyddLnNwbGl0KCkKKworICAgIGlmIHN0cmlwU3lzcm9vdDoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQorICAgICAgICAgICAgICAgICMgU3RyaXAgdGhpcyBhcmd1bWVudCBhbmQgdGhlIG5leHQgb25lOgorICAgICAgICAgICAgICAgIGRlbCBjb21waWxlcl9zb1tpbmRleDppbmRleCsyXQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICMgQ2hlY2sgaWYgdGhlIFNESyB0aGF0IGlzIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIGFjdHVhbGx5IGV4aXN0cywKKyAgICAjIHRoZSB1bml2ZXJzYWwgYnVpbGQgcmVxdWlyZXMgdGhlIHVzYWdlIG9mIGEgdW5pdmVyc2FsIFNESyBhbmQgbm90IGFsbAorICAgICMgdXNlcnMgaGF2ZSB0aGF0IGluc3RhbGxlZCBieSBkZWZhdWx0LgorICAgIHN5c3Jvb3QgPSBOb25lCisgICAgaWYgJy1pc3lzcm9vdCcgaW4gY2NfYXJnczoKKyAgICAgICAgaWR4ID0gY2NfYXJncy5pbmRleCgnLWlzeXNyb290JykKKyAgICAgICAgc3lzcm9vdCA9IGNjX2FyZ3NbaWR4KzFdCisgICAgZWxpZiAnLWlzeXNyb290JyBpbiBjb21waWxlcl9zbzoKKyAgICAgICAgaWR4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1pc3lzcm9vdCcpCisgICAgICAgIHN5c3Jvb3QgPSBjb21waWxlcl9zb1tpZHgrMV0KKworICAgIGlmIHN5c3Jvb3QgYW5kIG5vdCBvcy5wYXRoLmlzZGlyKHN5c3Jvb3QpOgorICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgbG9nCisgICAgICAgIGxvZy53YXJuKCJDb21waWxpbmcgd2l0aCBhbiBTREsgdGhhdCBkb2Vzbid0IHNlZW0gdG8gZXhpc3Q6ICVzIiwKKyAgICAgICAgICAgICAgICBzeXNyb290KQorICAgICAgICBsb2cud2FybigiUGxlYXNlIGNoZWNrIHlvdXIgWGNvZGUgaW5zdGFsbGF0aW9uIikKKworICAgIHJldHVybiBjb21waWxlcl9zbworCisKK2RlZiBjdXN0b21pemVfY29uZmlnX3ZhcnMoX2NvbmZpZ192YXJzKToKKyAgICAiIiJDdXN0b21pemUgUHl0aG9uIGJ1aWxkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorCisgICAgQ2FsbGVkIGludGVybmFsbHkgZnJvbSBzeXNjb25maWcgd2l0aCBhIG11dGFibGUgbWFwcGluZworICAgIGNvbnRhaW5pbmcgbmFtZS92YWx1ZSBwYWlycyBwYXJzZWQgZnJvbSB0aGUgY29uZmlndXJlZAorICAgIG1ha2VmaWxlIHVzZWQgdG8gYnVpbGQgdGhpcyBpbnRlcnByZXRlci4gIFJldHVybnMKKyAgICB0aGUgbWFwcGluZyB1cGRhdGVkIGFzIG5lZWRlZCB0byByZWZsZWN0IHRoZSBlbnZpcm9ubWVudAorICAgIGluIHdoaWNoIHRoZSBpbnRlcnByZXRlciBpcyBydW5uaW5nOyBpbiB0aGUgY2FzZSBvZgorICAgIGEgUHl0aG9uIGZyb20gYSBiaW5hcnkgaW5zdGFsbGVyLCB0aGUgaW5zdGFsbGVkCisgICAgZW52aXJvbm1lbnQgbWF5IGJlIHZlcnkgZGlmZmVyZW50IGZyb20gdGhlIGJ1aWxkCisgICAgZW52aXJvbm1lbnQsIGkuZS4gZGlmZmVyZW50IE9TIGxldmVscywgZGlmZmVyZW50CisgICAgYnVpbHQgdG9vbHMsIGRpZmZlcmVudCBhdmFpbGFibGUgQ1BVIGFyY2hpdGVjdHVyZXMuCisKKyAgICBUaGlzIGN1c3RvbWl6YXRpb24gaXMgcGVyZm9ybWVkIHdoZW5ldmVyCisgICAgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSBpcyBmaXJzdAorICAgIGNhbGxlZC4gIEl0IG1heSBiZSB1c2VkIGluIGVudmlyb25tZW50cyB3aGVyZSBubworICAgIGNvbXBpbGVycyBhcmUgcHJlc2VudCwgaS5lLiB3aGVuIGluc3RhbGxpbmcgcHVyZQorICAgIFB5dGhvbiBkaXN0cy4gIEN1c3RvbWl6YXRpb24gb2YgY29tcGlsZXIgcGF0aHMKKyAgICBhbmQgZGV0ZWN0aW9uIG9mIHVuYXZhaWxhYmxlIGFyY2hzIGlzIGRlZmVycmVkCisgICAgdW50aWwgdGhlIGZpcnN0IGV4dGVudGlvbiBtb2R1bGUgYnVpbGQgaXMKKyAgICByZXF1ZXN0ZWQgKGluIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyKS4KKworICAgIEN1cnJlbnRseSBjYWxsZWQgZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnCisgICAgIiIiCisKKyAgICBpZiBub3QgX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoKToKKyAgICAgICAgIyBPbiBNYWMgT1MgWCBiZWZvcmUgMTAuNCwgY2hlY2sgaWYgLWFyY2ggYW5kIC1pc3lzcm9vdAorICAgICAgICAjIGFyZSBpbiBDRkxBR1Mgb3IgTERGTEFHUyBhbmQgcmVtb3ZlIHRoZW0gaWYgdGhleSBhcmUuCisgICAgICAgICMgVGhpcyBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIG9uIGEgMTAuMyBzeXN0ZW0KKyAgICAgICAgIyB1c2luZyBhIHVuaXZlcnNhbCBidWlsZCBvZiBweXRob24uCisgICAgICAgIF9yZW1vdmVfdW5pdmVyc2FsX2ZsYWdzKF9jb25maWdfdmFycykKKworICAgICMgQWxsb3cgdXNlciB0byBvdmVycmlkZSBhbGwgYXJjaHMgd2l0aCBBUkNIRkxBR1MgZW52IHZhcgorICAgIF9vdmVycmlkZV9hbGxfYXJjaHMoX2NvbmZpZ192YXJzKQorCisgICAgIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBzZGtzIHRoYXQgYXJlIG5vdCBmb3VuZAorICAgIF9jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKF9jb25maWdfdmFycykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgY3VzdG9taXplX2NvbXBpbGVyKF9jb25maWdfdmFycyk6CisgICAgIiIiQ3VzdG9taXplIGNvbXBpbGVyIHBhdGggYW5kIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorCisgICAgVGhpcyBjdXN0b21pemF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSBmaXJzdAorICAgIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGQgaXMgcmVxdWVzdGVkCisgICAgaW4gZGlzdHV0aWxzLnN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIpLgorICAgICIiIgorCisgICAgIyBGaW5kIGEgY29tcGlsZXIgdG8gdXNlIGZvciBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcworICAgIF9maW5kX2FwcHJvcHJpYXRlX2NvbXBpbGVyKF9jb25maWdfdmFycykKKworICAgICMgUmVtb3ZlIHBwYyBhcmNoIGZsYWdzIGlmIG5vdCBzdXBwb3J0ZWQgaGVyZQorICAgIF9yZW1vdmVfdW5zdXBwb3J0ZWRfYXJjaHMoX2NvbmZpZ192YXJzKQorCisgICAgIyBBbGxvdyB1c2VyIHRvIG92ZXJyaWRlIGFsbCBhcmNocyB3aXRoIEFSQ0hGTEFHUyBlbnYgdmFyCisgICAgX292ZXJyaWRlX2FsbF9hcmNocyhfY29uZmlnX3ZhcnMpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIGdldF9wbGF0Zm9ybV9vc3goX2NvbmZpZ192YXJzLCBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpOgorICAgICIiIkZpbHRlciB2YWx1ZXMgZm9yIGdldF9wbGF0Zm9ybSgpIiIiCisgICAgIyBjYWxsZWQgZnJvbSBnZXRfcGxhdGZvcm0oKSBpbiBzeXNjb25maWcgYW5kIGRpc3R1dGlscy51dGlsCisgICAgIworICAgICMgRm9yIG91ciBwdXJwb3Nlcywgd2UnbGwgYXNzdW1lIHRoYXQgdGhlIHN5c3RlbSB2ZXJzaW9uIGZyb20KKyAgICAjIGRpc3R1dGlscycgcGVyc3BlY3RpdmUgaXMgd2hhdCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0CisgICAgIyB0by4gVGhpcyBtYWtlcyB0aGUgY29tcGF0aWJpbGl0eSBzdG9yeSBhIGJpdCBtb3JlIHNhbmUgYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgaXMgZ29pbmcgdG8gY29tcGlsZSBhbmQgbGluayBhcyBpZiBpdCB3ZXJlCisgICAgIyBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQuCisKKyAgICBtYWN2ZXIgPSBfY29uZmlnX3ZhcnMuZ2V0KCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnLCAnJykKKyAgICBtYWNyZWxlYXNlID0gX2dldF9zeXN0ZW1fdmVyc2lvbigpIG9yIG1hY3ZlcgorICAgIG1hY3ZlciA9IG1hY3ZlciBvciBtYWNyZWxlYXNlCisKKyAgICBpZiBtYWN2ZXI6CisgICAgICAgIHJlbGVhc2UgPSBtYWN2ZXIKKyAgICAgICAgb3NuYW1lID0gIm1hY29zeCIKKworICAgICAgICAjIFVzZSB0aGUgb3JpZ2luYWwgQ0ZMQUdTIHZhbHVlLCBpZiBhdmFpbGFibGUsIHNvIHRoYXQgd2UKKyAgICAgICAgIyByZXR1cm4gdGhlIHNhbWUgbWFjaGluZSB0eXBlIGZvciB0aGUgcGxhdGZvcm0gc3RyaW5nLgorICAgICAgICAjIE90aGVyd2lzZSwgZGlzdHV0aWxzIG1heSBjb25zaWRlciB0aGlzIGEgY3Jvc3MtY29tcGlsaW5nCisgICAgICAgICMgY2FzZSBhbmQgZGlzYWxsb3cgaW5zdGFsbHMuCisgICAgICAgIGNmbGFncyA9IF9jb25maWdfdmFycy5nZXQoX0lOSVRQUkUrJ0NGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29uZmlnX3ZhcnMuZ2V0KCdDRkxBR1MnLCAnJykpCisgICAgICAgIGlmICgobWFjcmVsZWFzZSArICcuJykgPj0gJzEwLjQuJyBhbmQKKyAgICAgICAgICAgICctYXJjaCcgaW4gY2ZsYWdzLnN0cmlwKCkpOgorICAgICAgICAgICAgIyBUaGUgdW5pdmVyc2FsIGJ1aWxkIHdpbGwgYnVpbGQgZmF0IGJpbmFyaWVzLCBidXQgbm90IG9uCisgICAgICAgICAgICAjIHN5c3RlbXMgYmVmb3JlIDEwLjQKKworICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCisKKyAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKKyAgICAgICAgICAgIGFyY2hzID0gdHVwbGUoc29ydGVkKHNldChhcmNocykpKQorCisgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9IGFyY2hzWzBdCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3g4Nl82NCcpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnaW50ZWwnCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQzJworICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ3BwYzY0JywgJ3g4Nl82NCcpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0NjQnCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAncHBjNjQnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICd1bml2ZXJzYWwnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3cgbWFjaGluZSB2YWx1ZSBmb3IgYXJjaHM9JXIiICUgKGFyY2hzLCkpCisKKyAgICAgICAgZWxpZiBtYWNoaW5lID09ICdpMzg2JzoKKyAgICAgICAgICAgICMgT24gT1NYIHRoZSBtYWNoaW5lIHR5cGUgcmV0dXJuZWQgYnkgdW5hbWUgaXMgYWx3YXlzIHRoZQorICAgICAgICAgICAgIyAzMi1iaXQgdmFyaWFudCwgZXZlbiBpZiB0aGUgZXhlY3V0YWJsZSBhcmNoaXRlY3R1cmUgaXMKKyAgICAgICAgICAgICMgdGhlIDY0LWJpdCB2YXJpYW50CisgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3g4Nl82NCcKKworICAgICAgICBlbGlmIG1hY2hpbmUgaW4gKCdQb3dlclBDJywgJ1Bvd2VyX01hY2ludG9zaCcpOgorICAgICAgICAgICAgIyBQaWNrIGEgc2FuZSBuYW1lIGZvciB0aGUgUFBDIGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICMgU2VlICdpMzg2JyBjYXNlCisgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYzY0JworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYycKKworICAgIHJldHVybiAob3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IDJkMzc2ZDguLmZhNzdlYzEgMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBhYmMKIGltcG9ydCBjb2RlY3MKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVycm5vCiAjIEltcG9ydCBfdGhyZWFkIGluc3RlYWQgb2YgdGhyZWFkaW5nIHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKIHRyeToKQEAgLTE1LDcgKzE0LDExIEBACiAKIGltcG9ydCBpbwogZnJvbSBpbyBpbXBvcnQgKF9fYWxsX18sIFNFRUtfU0VULCBTRUVLX0NVUiwgU0VFS19FTkQpCi1mcm9tIGVycm5vIGltcG9ydCBFSU5UUgorCit2YWxpZF9zZWVrX2ZsYWdzID0gezAsIDEsIDJ9ICAjIEhhcmR3aXJlZCB2YWx1ZXMKK2lmIGhhc2F0dHIob3MsICdTRUVLX0hPTEUnKSA6CisgICAgdmFsaWRfc2Vla19mbGFncy5hZGQob3MuU0VFS19IT0xFKQorICAgIHZhbGlkX3NlZWtfZmxhZ3MuYWRkKG9zLlNFRUtfREFUQSkKIAogIyBvcGVuKCkgdXNlcyBzdF9ibGtzaXplIHdoZW5ldmVyIHdlIGNhbgogREVGQVVMVF9CVUZGRVJfU0laRSA9IDggKiAxMDI0ICAjIGJ5dGVzCkBAIC0yNCwyMCArMjcsMTIgQEAKICMgZGVmaW5lZCBpbiBpby5weS4gV2UgZG9uJ3QgdXNlIHJlYWwgaW5oZXJpdGFuY2UgdGhvdWdoLCBiZWNhdXNlIHdlIGRvbid0CiAjIHdhbnQgdG8gaW5oZXJpdCB0aGUgQyBpbXBsZW1lbnRhdGlvbnMuCiAKLQotY2xhc3MgQmxvY2tpbmdJT0Vycm9yKElPRXJyb3IpOgotCi0gICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIEkvTyB3b3VsZCBibG9jayBvbiBhIG5vbi1ibG9ja2luZyBJL08gc3RyZWFtLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm5vLCBzdHJlcnJvciwgY2hhcmFjdGVyc193cml0dGVuPTApOgotICAgICAgICBzdXBlcigpLl9faW5pdF9fKGVycm5vLCBzdHJlcnJvcikKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2hhcmFjdGVyc193cml0dGVuLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjaGFyYWN0ZXJzX3dyaXR0ZW4gbXVzdCBiZSBhIGludGVnZXIiKQotICAgICAgICBzZWxmLmNoYXJhY3RlcnNfd3JpdHRlbiA9IGNoYXJhY3RlcnNfd3JpdHRlbgorIyBSZWJpbmQgZm9yIGNvbXBhdGliaWxpdHkKK0Jsb2NraW5nSU9FcnJvciA9IEJsb2NraW5nSU9FcnJvcgogCiAKIGRlZiBvcGVuKGZpbGUsIG1vZGU9InIiLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLAotICAgICAgICAgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpOgorICAgICAgICAgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKToKIAogICAgIHIiIiJPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIElPRXJyb3IgdXBvbiBmYWlsdXJlLgogCkBAIC00NywyMSArNDIsMjIgQEAKICAgICB3cmFwcGVkLiAoSWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZQogICAgIHJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MgY2xvc2VmZCBpcyBzZXQgdG8gRmFsc2UuKQogCi0gICAgbW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUKLSAgICBpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQKLSAgICBtb2RlLiAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmCi0gICAgaXQgYWxyZWFkeSBleGlzdHMpLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLAotICAgIG1lYW5zIHRoYXQgYWxsIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZQotICAgIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuIEluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGUKLSAgICBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdwotICAgIGJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlCi0gICAgbW9kZXMgYXJlOgorICAgIG1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCisgICAgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0IG1vZGUuIE90aGVyCisgICAgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmIGl0IGFscmVhZHkKKyAgICBleGlzdHMpLCAneCcgZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvZiBhIG5ldyBmaWxlLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcKKyAgICAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUKKyAgICBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuIEluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMKKyAgICBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZAorICAgIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUKKyAgICBhdmFpbGFibGUgbW9kZXMgYXJlOgogCiAgICAgPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIENoYXJhY3RlciBNZWFuaW5nCiAgICAgLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICdyJyAgICAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KQogICAgICd3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0CisgICAgJ3gnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nCiAgICAgJ2EnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0cwogICAgICdiJyAgICAgICBiaW5hcnkgbW9kZQogICAgICd0JyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpCkBAIC03Miw3ICs2OCw4IEBACiAKICAgICBUaGUgZGVmYXVsdCBtb2RlIGlzICdydCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tCiAgICAgYWNjZXNzLCB0aGUgbW9kZSAndytiJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlCi0gICAgJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLgorICAgICdyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZAorICAgIHJhaXNlcyBhbiBgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy4KIAogICAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZmlsZXMgb3BlbmVkIGluIGJpbmFyeSBhbmQgdGV4dCBtb2RlcywKICAgICBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2Vzbid0LiBGaWxlcyBvcGVuZWQgaW4KQEAgLTEzMiw2ICsxMjksMTIgQEAKICAgICBiZSBrZXB0IG9wZW4gd2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzCiAgICAgZ2l2ZW4gYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuCiAKKyAgICBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUKKyAgICB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZworICAgICpvcGVuZXIqIHdpdGggKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZQorICAgIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0bworICAgIHBhc3NpbmcgTm9uZSkuCisKICAgICBvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kCiAgICAgdGhyb3VnaCB3aGljaCB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZwogICAgIGFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JywKQEAgLTE1Nyw4ICsxNjAsOSBAQAogICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UoZXJyb3JzLCBzdHIpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZXJyb3JzOiAlciIgJSBlcnJvcnMpCiAgICAgbW9kZXMgPSBzZXQobW9kZSkKLSAgICBpZiBtb2RlcyAtIHNldCgiYXJ3Yit0VSIpIG9yIGxlbihtb2RlKSA+IGxlbihtb2Rlcyk6CisgICAgaWYgbW9kZXMgLSBzZXQoImF4cndiK3RVIikgb3IgbGVuKG1vZGUpID4gbGVuKG1vZGVzKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBtb2RlOiAlciIgJSBtb2RlKQorICAgIGNyZWF0aW5nID0gIngiIGluIG1vZGVzCiAgICAgcmVhZGluZyA9ICJyIiBpbiBtb2RlcwogICAgIHdyaXRpbmcgPSAidyIgaW4gbW9kZXMKICAgICBhcHBlbmRpbmcgPSAiYSIgaW4gbW9kZXMKQEAgLTE2NiwxNCArMTcwLDE0IEBACiAgICAgdGV4dCA9ICJ0IiBpbiBtb2RlcwogICAgIGJpbmFyeSA9ICJiIiBpbiBtb2RlcwogICAgIGlmICJVIiBpbiBtb2RlczoKLSAgICAgICAgaWYgd3JpdGluZyBvciBhcHBlbmRpbmc6CisgICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgdXNlIFUgYW5kIHdyaXRpbmcgbW9kZSBhdCBvbmNlIikKICAgICAgICAgcmVhZGluZyA9IFRydWUKICAgICBpZiB0ZXh0IGFuZCBiaW5hcnk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGhhdmUgdGV4dCBhbmQgYmluYXJ5IG1vZGUgYXQgb25jZSIpCi0gICAgaWYgcmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxOgorICAgIGlmIGNyZWF0aW5nICsgcmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBoYXZlIHJlYWQvd3JpdGUvYXBwZW5kIG1vZGUgYXQgb25jZSIpCi0gICAgaWYgbm90IChyZWFkaW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nKToKKyAgICBpZiBub3QgKGNyZWF0aW5nIG9yIHJlYWRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmcpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpCiAgICAgaWYgYmluYXJ5IGFuZCBlbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGFuIGVuY29kaW5nIGFyZ3VtZW50IikKQEAgLTE4MiwxMSArMTg2LDEyIEBACiAgICAgaWYgYmluYXJ5IGFuZCBuZXdsaW5lIGlzIG5vdCBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYSBuZXdsaW5lIGFyZ3VtZW50IikKICAgICByYXcgPSBGaWxlSU8oZmlsZSwKKyAgICAgICAgICAgICAgICAgKGNyZWF0aW5nIGFuZCAieCIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKHJlYWRpbmcgYW5kICJyIiBvciAiIikgKwogICAgICAgICAgICAgICAgICAod3JpdGluZyBhbmQgInciIG9yICIiKSArCiAgICAgICAgICAgICAgICAgIChhcHBlbmRpbmcgYW5kICJhIiBvciAiIikgKwogICAgICAgICAgICAgICAgICAodXBkYXRpbmcgYW5kICIrIiBvciAiIiksCi0gICAgICAgICAgICAgICAgIGNsb3NlZmQpCisgICAgICAgICAgICAgICAgIGNsb3NlZmQsIG9wZW5lcj1vcGVuZXIpCiAgICAgbGluZV9idWZmZXJpbmcgPSBGYWxzZQogICAgIGlmIGJ1ZmZlcmluZyA9PSAxIG9yIGJ1ZmZlcmluZyA8IDAgYW5kIHJhdy5pc2F0dHkoKToKICAgICAgICAgYnVmZmVyaW5nID0gLTEKQEAgLTIwOCw3ICsyMTMsNyBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBoYXZlIHVuYnVmZmVyZWQgdGV4dCBJL08iKQogICAgIGlmIHVwZGF0aW5nOgogICAgICAgICBidWZmZXIgPSBCdWZmZXJlZFJhbmRvbShyYXcsIGJ1ZmZlcmluZykKLSAgICBlbGlmIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgorICAgIGVsaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmc6CiAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlcmVkV3JpdGVyKHJhdywgYnVmZmVyaW5nKQogICAgIGVsaWYgcmVhZGluZzoKICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJpbmcpCkBAIC0zMDUsNiArMzEwLDcgQEAKICAgICAgICAgKiAwIC0tIHN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpOyBvZmZzZXQgc2hvdWxkIGJlIHplcm8gb3IgcG9zaXRpdmUKICAgICAgICAgKiAxIC0tIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uOyBvZmZzZXQgbWF5IGJlIG5lZ2F0aXZlCiAgICAgICAgICogMiAtLSBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgaXMgdXN1YWxseSBuZWdhdGl2ZQorICAgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIC8gZmlsZSBzeXN0ZW1zIGNvdWxkIHByb3ZpZGUgYWRkaXRpb25hbCB2YWx1ZXMuCiAKICAgICAgICAgUmV0dXJuIGFuIGludCBpbmRpY2F0aW5nIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uCiAgICAgICAgICIiIgpAQCAtODY1LDcgKzg3MSw3IEBACiAgICAgICAgIGVsaWYgd2hlbmNlID09IDI6CiAgICAgICAgICAgICBzZWxmLl9wb3MgPSBtYXgoMCwgbGVuKHNlbGYuX2J1ZmZlcikgKyBwb3MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB3aGVuY2UgdmFsdWUiKQogICAgICAgICByZXR1cm4gc2VsZi5fcG9zCiAKICAgICBkZWYgdGVsbChzZWxmKToKQEAgLTk1NCwxNSArOTYwLDE5IEBACiAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB3aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBpcyB1bnNwZWNpZmllZC4KICAgICAgICAgaWYgbiBpcyBOb25lIG9yIG4gPT0gLTE6CiAgICAgICAgICAgICBzZWxmLl9yZXNldF9yZWFkX2J1ZigpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYucmF3LCAncmVhZGFsbCcpOgorICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZGFsbCgpCisgICAgICAgICAgICAgICAgaWYgY2h1bmsgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1Zltwb3M6XSBvciBOb25lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1Zltwb3M6XSArIGNodW5rCiAgICAgICAgICAgICBjaHVua3MgPSBbYnVmW3BvczpdXSAgIyBTdHJpcCB0aGUgY29uc3VtZWQgYnl0ZXMuCiAgICAgICAgICAgICBjdXJyZW50X3NpemUgPSAwCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICMgUmVhZCB1bnRpbCBFT0Ygb3IgdW50aWwgcmVhZCgpIHdvdWxkIGJsb2NrLgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawpAQCAtOTg0LDkgKzk5NCw3IEBACiAgICAgICAgIHdoaWxlIGF2YWlsIDwgbjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQod2FudGVkKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGNodW5rIGluIGVtcHR5X3ZhbHVlczoKICAgICAgICAgICAgICAgICBub2RhdGFfdmFsID0gY2h1bmsKQEAgLTEwMTksOSArMTAyNyw3IEBACiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHNlbGYucmF3LnJlYWQodG9fcmVhZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgY3VycmVudDoKQEAgLTEwNDYsNyArMTA1Miw3IEBACiAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnRlbGwoc2VsZikgLSBsZW4oc2VsZi5fcmVhZF9idWYpICsgc2VsZi5fcmVhZF9wb3MKIAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgotICAgICAgICBpZiBub3QgKDAgPD0gd2hlbmNlIDw9IDIpOgorICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICAgaWYgd2hlbmNlID09IDE6CkBAIC0xMDY0LDE5ICsxMDcwLDEzIEBACiAgICAgREVGQVVMVF9CVUZGRVJfU0laRS4KICAgICAiIiIKIAotICAgIF93YXJuaW5nX3N0YWNrX29mZnNldCA9IDIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgaWYgbm90IHJhdy53cml0YWJsZSgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignInJhdyIgYXJndW1lbnQgbXVzdCBiZSB3cml0YWJsZS4nKQogCiAgICAgICAgIF9CdWZmZXJlZElPTWl4aW4uX19pbml0X18oc2VsZiwgcmF3KQogICAgICAgICBpZiBidWZmZXJfc2l6ZSA8PSAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBidWZmZXIgc2l6ZSIpCi0gICAgICAgIGlmIG1heF9idWZmZXJfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YXJuaW5nX3N0YWNrX29mZnNldCkKICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplCiAgICAgICAgIHNlbGYuX3dyaXRlX2J1ZiA9IGJ5dGVhcnJheSgpCiAgICAgICAgIHNlbGYuX3dyaXRlX2xvY2sgPSBMb2NrKCkKQEAgLTExMjYsMTMgKzExMjYsMTEgQEAKICAgICAgICAgd2hpbGUgc2VsZi5fd3JpdGVfYnVmOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG4gPSBzZWxmLnJhdy53cml0ZShzZWxmLl93cml0ZV9idWYpCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNlbGYucmF3IHNob3VsZCBpbXBsZW1lbnQgUmF3SU9CYXNlOiBpdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgbm90IHJhaXNlIEJsb2NraW5nSU9FcnJvciIpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIG4gaXMgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBCbG9ja2luZ0lPRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIGVycm5vLkVBR0FJTiwKQEAgLTExNDUsOCArMTE0Myw4IEBACiAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnRlbGwoc2VsZikgKyBsZW4oc2VsZi5fd3JpdGVfYnVmKQogCiAgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6Ci0gICAgICAgIGlmIG5vdCAoMCA8PSB3aGVuY2UgPD0gMik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSIpCisgICAgICAgIGlmIHdoZW5jZSBub3QgaW4gdmFsaWRfc2Vla19mbGFnczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgd2l0aCBzZWxmLl93cml0ZV9sb2NrOgogICAgICAgICAgICAgc2VsZi5fZmx1c2hfdW5sb2NrZWQoKQogICAgICAgICAgICAgcmV0dXJuIF9CdWZmZXJlZElPTWl4aW4uc2VlayhzZWxmLCBwb3MsIHdoZW5jZSkKQEAgLTExNjgsMTUgKzExNjYsMTEgQEAKICAgICAjIFhYWCBUaGUgdXNlZnVsbmVzcyBvZiB0aGlzIChjb21wYXJlZCB0byBoYXZpbmcgdHdvIHNlcGFyYXRlIElPCiAgICAgIyBvYmplY3RzKSBpcyBxdWVzdGlvbmFibGUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyLCB3cml0ZXIsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyLCB3cml0ZXIsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KIAogICAgICAgICBUaGUgYXJndW1lbnRzIGFyZSB0d28gUmF3SU8gaW5zdGFuY2VzLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbWF4X2J1ZmZlcl9zaXplIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0KICAgICAgICAgaWYgbm90IHJlYWRlci5yZWFkYWJsZSgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignInJlYWRlciIgYXJndW1lbnQgbXVzdCBiZSByZWFkYWJsZS4nKQogCkBAIC0xMjMzLDE3ICsxMjI3LDE0IEBACiAgICAgZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4KICAgICAiIiIKIAotICAgIF93YXJuaW5nX3N0YWNrX29mZnNldCA9IDMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgcmF3Ll9jaGVja1NlZWthYmxlKCkKICAgICAgICAgQnVmZmVyZWRSZWFkZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSkKLSAgICAgICAgQnVmZmVyZWRXcml0ZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSwgbWF4X2J1ZmZlcl9zaXplKQorICAgICAgICBCdWZmZXJlZFdyaXRlci5fX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKQogCiAgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6Ci0gICAgICAgIGlmIG5vdCAoMCA8PSB3aGVuY2UgPD0gMik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSIpCisgICAgICAgIGlmIHdoZW5jZSBub3QgaW4gdmFsaWRfc2Vla19mbGFnczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIGlmIHNlbGYuX3JlYWRfYnVmOgogICAgICAgICAgICAgIyBVbmRvIHJlYWQgYWhlYWQuCkBAIC0xNDU1LDcgKzE0NDYsNyBAQAogICAgIHIiIiJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLgogCiAgICAgZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlCi0gICAgZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZy4KKyAgICBkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKS4KIAogICAgIGVycm9ycyBkZXRlcm1pbmVzIHRoZSBzdHJpY3RuZXNzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc2VlIHRoZQogICAgIGNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvICJzdHJpY3QiLgpAQCAtMTQ3Niw2ICsxNDY3LDkgQEAKIAogICAgIF9DSFVOS19TSVpFID0gMjA0OAogCisgICAgIyBUaGUgd3JpdGVfdGhyb3VnaCBhcmd1bWVudCBoYXMgbm8gZWZmZWN0IGhlcmUgc2luY2UgdGhpcworICAgICMgaW1wbGVtZW50YXRpb24gYWx3YXlzIHdyaXRlcyB0aHJvdWdoLiAgVGhlIGFyZ3VtZW50IGlzIHByZXNlbnQgb25seQorICAgICMgc28gdGhhdCB0aGUgc2lnbmF0dXJlIGNhbiBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBDIHZlcnNpb24uCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwKICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9RmFsc2UsIHdyaXRlX3Rocm91Z2g9RmFsc2UpOgogICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuZXdsaW5lLCBzdHIpOgpAQCAtMTQ5NCw3ICsxNDg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBJbXBvcnRpbmcgbG9jYWxlIG1heSBmYWlsIGlmIFB5dGhvbiBpcyBiZWluZyBidWlsdAogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJhc2NpaSIKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQogCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVuY29kaW5nLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBlbmNvZGluZzogJXIiICUgZW5jb2RpbmcpCkBAIC0xNTIxLDYgKzE1MTUsNyBAQAogICAgICAgICBzZWxmLl9zbmFwc2hvdCA9IE5vbmUgICMgaW5mbyBmb3IgcmVjb25zdHJ1Y3RpbmcgZGVjb2RlciBzdGF0ZQogICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IHNlbGYuX3RlbGxpbmcgPSBzZWxmLmJ1ZmZlci5zZWVrYWJsZSgpCiAgICAgICAgIHNlbGYuX2hhc19yZWFkMSA9IGhhc2F0dHIoc2VsZi5idWZmZXIsICdyZWFkMScpCisgICAgICAgIHNlbGYuX2IyY3JhdGlvID0gMC4wCiAKICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGUgYW5kIHNlbGYud3JpdGFibGUoKToKICAgICAgICAgICAgIHBvc2l0aW9uID0gc2VsZi5idWZmZXIudGVsbCgpCkBAIC0xNjkzLDcgKzE2ODgsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlucHV0X2NodW5rID0gc2VsZi5idWZmZXIucmVhZChzZWxmLl9DSFVOS19TSVpFKQogICAgICAgICBlb2YgPSBub3QgaW5wdXRfY2h1bmsKLSAgICAgICAgc2VsZi5fc2V0X2RlY29kZWRfY2hhcnMoc2VsZi5fZGVjb2Rlci5kZWNvZGUoaW5wdXRfY2h1bmssIGVvZikpCisgICAgICAgIGRlY29kZWRfY2hhcnMgPSBzZWxmLl9kZWNvZGVyLmRlY29kZShpbnB1dF9jaHVuaywgZW9mKQorICAgICAgICBzZWxmLl9zZXRfZGVjb2RlZF9jaGFycyhkZWNvZGVkX2NoYXJzKQorICAgICAgICBpZiBkZWNvZGVkX2NoYXJzOgorICAgICAgICAgICAgc2VsZi5fYjJjcmF0aW8gPSBsZW4oaW5wdXRfY2h1bmspIC8gbGVuKHNlbGYuX2RlY29kZWRfY2hhcnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IDAuMAogCiAgICAgICAgIGlmIHNlbGYuX3RlbGxpbmc6CiAgICAgICAgICAgICAjIEF0IHRoZSBzbmFwc2hvdCBwb2ludCwgbGVuKGRlY19idWZmZXIpIGJ5dGVzIGJlZm9yZSB0aGUgcmVhZCwKQEAgLTE3NDcsMjAgKzE3NDcsNTYgQEAKICAgICAgICAgIyBmb3J3YXJkIHVudGlsIGl0IGdpdmVzIHVzIGVub3VnaCBkZWNvZGVkIGNoYXJhY3RlcnMuCiAgICAgICAgIHNhdmVkX3N0YXRlID0gZGVjb2Rlci5nZXRzdGF0ZSgpCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRmFzdCBzZWFyY2ggZm9yIGFuIGFjY2VwdGFibGUgc3RhcnQgcG9pbnQsIGNsb3NlIHRvIG91cgorICAgICAgICAgICAgIyBjdXJyZW50IHBvcy4KKyAgICAgICAgICAgICMgUmF0aW9uYWxlOiBjYWxsaW5nIGRlY29kZXIuZGVjb2RlKCkgaGFzIGEgbGFyZ2Ugb3ZlcmhlYWQKKyAgICAgICAgICAgICMgcmVnYXJkbGVzcyBvZiBjaHVuayBzaXplOyB3ZSB3YW50IHRoZSBudW1iZXIgb2Ygc3VjaCBjYWxscyB0bworICAgICAgICAgICAgIyBiZSBPKDEpIGluIG1vc3Qgc2l0dWF0aW9ucyAoY29tbW9uIGRlY29kZXJzLCBub24tY3JhenkgaW5wdXQpLgorICAgICAgICAgICAgIyBBY3R1YWxseSwgaXQgd2lsbCBiZSBleGFjdGx5IDEgZm9yIGZpeGVkLXNpemUgY29kZWNzIChhbGwKKyAgICAgICAgICAgICMgOC1iaXQgY29kZWNzLCBhbHNvIFVURi0xNiBhbmQgVVRGLTMyKS4KKyAgICAgICAgICAgIHNraXBfYnl0ZXMgPSBpbnQoc2VsZi5fYjJjcmF0aW8gKiBjaGFyc190b19za2lwKQorICAgICAgICAgICAgc2tpcF9iYWNrID0gMQorICAgICAgICAgICAgYXNzZXJ0IHNraXBfYnl0ZXMgPD0gbGVuKG5leHRfaW5wdXQpCisgICAgICAgICAgICB3aGlsZSBza2lwX2J5dGVzID4gMDoKKyAgICAgICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKChiJycsIGRlY19mbGFncykpCisgICAgICAgICAgICAgICAgIyBEZWNvZGUgdXAgdG8gdGVtcHRhdGl2ZSBzdGFydCBwb2ludAorICAgICAgICAgICAgICAgIG4gPSBsZW4oZGVjb2Rlci5kZWNvZGUobmV4dF9pbnB1dFs6c2tpcF9ieXRlc10pKQorICAgICAgICAgICAgICAgIGlmIG4gPD0gY2hhcnNfdG9fc2tpcDoKKyAgICAgICAgICAgICAgICAgICAgYiwgZCA9IGRlY29kZXIuZ2V0c3RhdGUoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQmVmb3JlIHBvcyBhbmQgbm8gYnl0ZXMgYnVmZmVyZWQgaW4gZGVjb2RlciA9PiBPSworICAgICAgICAgICAgICAgICAgICAgICAgZGVjX2ZsYWdzID0gZAorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNfdG9fc2tpcCAtPSBuCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAjIFNraXAgYmFjayBieSBidWZmZXJlZCBhbW91bnQgYW5kIHJlc2V0IGhldXJpc3RpYworICAgICAgICAgICAgICAgICAgICBza2lwX2J5dGVzIC09IGxlbihiKQorICAgICAgICAgICAgICAgICAgICBza2lwX2JhY2sgPSAxCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSdyZSB0b28gZmFyIGFoZWFkLCBza2lwIGJhY2sgYSBiaXQKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBza2lwX2JhY2sKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9iYWNrID0gc2tpcF9iYWNrICogMgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBza2lwX2J5dGVzID0gMAorICAgICAgICAgICAgICAgIGRlY29kZXIuc2V0c3RhdGUoKGInJywgZGVjX2ZsYWdzKSkKKwogICAgICAgICAgICAgIyBOb3RlIG91ciBpbml0aWFsIHN0YXJ0IHBvaW50LgotICAgICAgICAgICAgZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQotICAgICAgICAgICAgc3RhcnRfcG9zID0gcG9zaXRpb24KLSAgICAgICAgICAgIHN0YXJ0X2ZsYWdzLCBieXRlc19mZWQsIGNoYXJzX2RlY29kZWQgPSBkZWNfZmxhZ3MsIDAsIDAKLSAgICAgICAgICAgIG5lZWRfZW9mID0gMAorICAgICAgICAgICAgc3RhcnRfcG9zID0gcG9zaXRpb24gKyBza2lwX2J5dGVzCisgICAgICAgICAgICBzdGFydF9mbGFncyA9IGRlY19mbGFncworICAgICAgICAgICAgaWYgY2hhcnNfdG9fc2tpcCA9PSAwOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZW4ndCBtb3ZlZCBmcm9tIHRoZSBzdGFydCBwb2ludC4KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFja19jb29raWUoc3RhcnRfcG9zLCBzdGFydF9mbGFncykKIAogICAgICAgICAgICAgIyBGZWVkIHRoZSBkZWNvZGVyIG9uZSBieXRlIGF0IGEgdGltZS4gIEFzIHdlIGdvLCBub3RlIHRoZQogICAgICAgICAgICAgIyBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQgbG9jYXRpb24KICAgICAgICAgICAgICMgKGEgcG9pbnQgd2hlcmUgdGhlIGRlY29kZXIgaGFzIG5vdGhpbmcgYnVmZmVyZWQsIHNvIHNlZWsoKQogICAgICAgICAgICAgIyBjYW4gc2FmZWx5IHN0YXJ0IGZyb20gdGhlcmUgYW5kIGFkdmFuY2UgdG8gdGhpcyBsb2NhdGlvbikuCi0gICAgICAgICAgICBuZXh0X2J5dGUgPSBieXRlYXJyYXkoMSkKLSAgICAgICAgICAgIGZvciBuZXh0X2J5dGVbMF0gaW4gbmV4dF9pbnB1dDoKKyAgICAgICAgICAgIGJ5dGVzX2ZlZCA9IDAKKyAgICAgICAgICAgIG5lZWRfZW9mID0gMAorICAgICAgICAgICAgIyBDaGFycyBkZWNvZGVkIHNpbmNlIGBzdGFydF9wb3NgCisgICAgICAgICAgICBjaGFyc19kZWNvZGVkID0gMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2tpcF9ieXRlcywgbGVuKG5leHRfaW5wdXQpKToKICAgICAgICAgICAgICAgICBieXRlc19mZWQgKz0gMQotICAgICAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgKz0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfYnl0ZSkpCisgICAgICAgICAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBsZW4oZGVjb2Rlci5kZWNvZGUobmV4dF9pbnB1dFtpOmkrMV0pKQogICAgICAgICAgICAgICAgIGRlY19idWZmZXIsIGRlY19mbGFncyA9IGRlY29kZXIuZ2V0c3RhdGUoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkZWNfYnVmZmVyIGFuZCBjaGFyc19kZWNvZGVkIDw9IGNoYXJzX3RvX3NraXA6CiAgICAgICAgICAgICAgICAgICAgICMgRGVjb2RlciBidWZmZXIgaXMgZW1wdHksIHNvIHRoaXMgaXMgYSBzYWZlIHN0YXJ0IHBvaW50LgpAQCAtMTgxOSw4ICsxODU1LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9kZWNvZGVyLnJlc2V0KCkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbgogICAgICAgICBpZiB3aGVuY2UgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlICglciwgc2hvdWxkIGJlIDAsIDEgb3IgMikiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW5jZSwpKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgd2hlbmNlICglcikiICUgKHdoZW5jZSwpKQogICAgICAgICBpZiBjb29raWUgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmVnYXRpdmUgc2VlayBwb3NpdGlvbiAlciIgJSAoY29va2llLCkpCiAgICAgICAgIHNlbGYuZmx1c2goKQpkaWZmIC0tZ2l0IGEvTGliL19zdHJwdGltZS5weSBiL0xpYi9fc3RycHRpbWUucHkKaW5kZXggZmEwNjM3Ni4uYjBjZDNkNiAxMDA2NDQKLS0tIGEvTGliL19zdHJwdGltZS5weQorKysgYi9MaWIvX3N0cnB0aW1lLnB5CkBAIC00ODYsMTkgKzQ4NiwxOSBAQAogCiAgICAgcmV0dXJuICh5ZWFyLCBtb250aCwgZGF5LAogICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsCi0gICAgICAgICAgICB3ZWVrZGF5LCBqdWxpYW4sIHR6LCBnbXRvZmYsIHR6bmFtZSksIGZyYWN0aW9uCisgICAgICAgICAgICB3ZWVrZGF5LCBqdWxpYW4sIHR6LCB0em5hbWUsIGdtdG9mZiksIGZyYWN0aW9uCiAKIGRlZiBfc3RycHRpbWVfdGltZShkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgICIiIlJldHVybiBhIHRpbWUgc3RydWN0IGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQogICAgIGZvcm1hdCBzdHJpbmcuIiIiCiAgICAgdHQgPSBfc3RycHRpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdClbMF0KLSAgICByZXR1cm4gdGltZS5zdHJ1Y3RfdGltZSh0dFs6OV0pCisgICAgcmV0dXJuIHRpbWUuc3RydWN0X3RpbWUodHRbOnRpbWUuX1NUUlVDVF9UTV9JVEVNU10pCiAKIGRlZiBfc3RycHRpbWVfZGF0ZXRpbWUoY2xzLCBkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgICIiIlJldHVybiBhIGNsYXNzIGNscyBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKICAgICBmb3JtYXQgc3RyaW5nLiIiIgogICAgIHR0LCBmcmFjdGlvbiA9IF9zdHJwdGltZShkYXRhX3N0cmluZywgZm9ybWF0KQotICAgIGdtdG9mZiwgdHpuYW1lID0gdHRbLTI6XQorICAgIHR6bmFtZSwgZ210b2ZmID0gdHRbLTI6XQogICAgIGFyZ3MgPSB0dFs6Nl0gKyAoZnJhY3Rpb24sKQogICAgIGlmIGdtdG9mZiBpcyBub3QgTm9uZToKICAgICAgICAgdHpkZWx0YSA9IGRhdGV0aW1lX3RpbWVkZWx0YShzZWNvbmRzPWdtdG9mZikKZGlmZiAtLWdpdCBhL0xpYi9hYmMucHkgYi9MaWIvYWJjLnB5CmluZGV4IGE2YzJkYzQuLjA5Nzc4ZTggMTAwNjQ0Ci0tLSBhL0xpYi9hYmMucHkKKysrIGIvTGliL2FiYy5weQpAQCAtMjYsNyArMjYsOCBAQAogCiAKIGNsYXNzIGFic3RyYWN0Y2xhc3NtZXRob2QoY2xhc3NtZXRob2QpOgotICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgY2xhc3NtZXRob2RzLgorICAgICIiIgorICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgY2xhc3NtZXRob2RzLgogCiAgICAgU2ltaWxhciB0byBhYnN0cmFjdG1ldGhvZC4KIApAQCAtMzYsNiArMzcsOSBAQAogICAgICAgICAgICAgQGFic3RyYWN0Y2xhc3NtZXRob2QKICAgICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9jbGFzc21ldGhvZChjbHMsIC4uLik6CiAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAnYWJzdHJhY3RjbGFzc21ldGhvZCcgaXMgZGVwcmVjYXRlZC4gVXNlICdjbGFzc21ldGhvZCcgd2l0aAorICAgICdhYnN0cmFjdG1ldGhvZCcgaW5zdGVhZC4KICAgICAiIiIKIAogICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQpAQCAtNDYsNyArNTAsOCBAQAogCiAKIGNsYXNzIGFic3RyYWN0c3RhdGljbWV0aG9kKHN0YXRpY21ldGhvZCk6Ci0gICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBzdGF0aWNtZXRob2RzLgorICAgICIiIgorICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3Qgc3RhdGljbWV0aG9kcy4KIAogICAgIFNpbWlsYXIgdG8gYWJzdHJhY3RtZXRob2QuCiAKQEAgLTU2LDYgKzYxLDkgQEAKICAgICAgICAgICAgIEBhYnN0cmFjdHN0YXRpY21ldGhvZAogICAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3N0YXRpY21ldGhvZCguLi4pOgogICAgICAgICAgICAgICAgIC4uLgorCisgICAgJ2Fic3RyYWN0c3RhdGljbWV0aG9kJyBpcyBkZXByZWNhdGVkLiBVc2UgJ3N0YXRpY21ldGhvZCcgd2l0aAorICAgICdhYnN0cmFjdG1ldGhvZCcgaW5zdGVhZC4KICAgICAiIiIKIAogICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQpAQCAtNjYsNyArNzQsOCBAQAogCiAKIGNsYXNzIGFic3RyYWN0cHJvcGVydHkocHJvcGVydHkpOgotICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgcHJvcGVydGllcy4KKyAgICAiIiIKKyAgICBBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHByb3BlcnRpZXMuCiAKICAgICBSZXF1aXJlcyB0aGF0IHRoZSBtZXRhY2xhc3MgaXMgQUJDTWV0YSBvciBkZXJpdmVkIGZyb20gaXQuICBBCiAgICAgY2xhc3MgdGhhdCBoYXMgYSBtZXRhY2xhc3MgZGVyaXZlZCBmcm9tIEFCQ01ldGEgY2Fubm90IGJlCkBAIC04OCw3ICs5NywxMSBAQAogICAgICAgICAgICAgZGVmIGdldHgoc2VsZik6IC4uLgogICAgICAgICAgICAgZGVmIHNldHgoc2VsZiwgdmFsdWUpOiAuLi4KICAgICAgICAgICAgIHggPSBhYnN0cmFjdHByb3BlcnR5KGdldHgsIHNldHgpCisKKyAgICAnYWJzdHJhY3Rwcm9wZXJ0eScgaXMgZGVwcmVjYXRlZC4gVXNlICdwcm9wZXJ0eScgd2l0aCAnYWJzdHJhY3RtZXRob2QnCisgICAgaW5zdGVhZC4KICAgICAiIiIKKwogICAgIF9faXNhYnN0cmFjdG1ldGhvZF9fID0gVHJ1ZQogCiAKQEAgLTEzMywxMSArMTQ2LDE0IEBACiAgICAgICAgIHJldHVybiBjbHMKIAogICAgIGRlZiByZWdpc3RlcihjbHMsIHN1YmNsYXNzKToKLSAgICAgICAgIiIiUmVnaXN0ZXIgYSB2aXJ0dWFsIHN1YmNsYXNzIG9mIGFuIEFCQy4iIiIKKyAgICAgICAgIiIiUmVnaXN0ZXIgYSB2aXJ0dWFsIHN1YmNsYXNzIG9mIGFuIEFCQy4KKworICAgICAgICBSZXR1cm5zIHRoZSBzdWJjbGFzcywgdG8gYWxsb3cgdXNhZ2UgYXMgYSBjbGFzcyBkZWNvcmF0b3IuCisgICAgICAgICIiIgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdWJjbGFzcywgdHlwZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbiBvbmx5IHJlZ2lzdGVyIGNsYXNzZXMiKQogICAgICAgICBpZiBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbHMpOgotICAgICAgICAgICAgcmV0dXJuICAjIEFscmVhZHkgYSBzdWJjbGFzcworICAgICAgICAgICAgcmV0dXJuIHN1YmNsYXNzICAjIEFscmVhZHkgYSBzdWJjbGFzcwogICAgICAgICAjIFN1YnRsZTogdGVzdCBmb3IgY3ljbGVzICphZnRlciogdGVzdGluZyBmb3IgImFscmVhZHkgYSBzdWJjbGFzcyI7CiAgICAgICAgICMgdGhpcyBtZWFucyB3ZSBhbGxvdyBYLnJlZ2lzdGVyKFgpIGFuZCBpbnRlcnByZXQgaXQgYXMgYSBuby1vcC4KICAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIHN1YmNsYXNzKToKQEAgLTE0NSw2ICsxNjEsNyBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJSZWZ1c2luZyB0byBjcmVhdGUgYW4gaW5oZXJpdGFuY2UgY3ljbGUiKQogICAgICAgICBjbHMuX2FiY19yZWdpc3RyeS5hZGQoc3ViY2xhc3MpCiAgICAgICAgIEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlciArPSAxICAjIEludmFsaWRhdGUgbmVnYXRpdmUgY2FjaGUKKyAgICAgICAgcmV0dXJuIHN1YmNsYXNzCiAKICAgICBkZWYgX2R1bXBfcmVnaXN0cnkoY2xzLCBmaWxlPU5vbmUpOgogICAgICAgICAiIiJEZWJ1ZyBoZWxwZXIgdG8gcHJpbnQgdGhlIEFCQyByZWdpc3RyeS4iIiIKZGlmZiAtLWdpdCBhL0xpYi9haWZjLnB5IGIvTGliL2FpZmMucHkKaW5kZXggNzc1ZjM5Yy4uZWM0ZjgyMiAxMDA2NDQKLS0tIGEvTGliL2FpZmMucHkKKysrIGIvTGliL2FpZmMucHkKQEAgLTEzNiw2ICsxMzYsNyBAQAogCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCB3YXJuaW5ncwogCiBfX2FsbF9fID0gWyJFcnJvciIsICJvcGVuIiwgIm9wZW5mcCJdCiAKQEAgLTQ0MCw3ICs0NDEsNyBAQAogICAgICAgICAgICAga2x1ZGdlID0gMAogICAgICAgICAgICAgaWYgY2h1bmsuY2h1bmtzaXplID09IDE4OgogICAgICAgICAgICAgICAgIGtsdWRnZSA9IDEKLSAgICAgICAgICAgICAgICBwcmludCgnV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZScpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZScpCiAgICAgICAgICAgICAgICAgY2h1bmsuY2h1bmtzaXplID0gMjMKICAgICAgICAgICAgICNERUJVRyBlbmQKICAgICAgICAgICAgIHNlbGYuX2NvbXB0eXBlID0gY2h1bmsucmVhZCg0KQpAQCAtNDg0LDExICs0ODUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIyBhIHBvc2l0aW9uIDAgYW5kIG5hbWUgJycKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFya2Vycy5hcHBlbmQoKGlkLCBwb3MsIG5hbWUpKQogICAgICAgICBleGNlcHQgRU9GRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgnV2FybmluZzogTUFSSyBjaHVuayBjb250YWlucyBvbmx5JywgZW5kPScgJykKLSAgICAgICAgICAgIHByaW50KGxlbihzZWxmLl9tYXJrZXJzKSwgZW5kPScgJykKLSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9tYXJrZXJzKSA9PSAxOiBwcmludCgnbWFya2VyJywgZW5kPScgJykKLSAgICAgICAgICAgIGVsc2U6IHByaW50KCdtYXJrZXJzJywgZW5kPScgJykKLSAgICAgICAgICAgIHByaW50KCdpbnN0ZWFkIG9mJywgbm1hcmtlcnMpCisgICAgICAgICAgICB3ID0gKCdXYXJuaW5nOiBNQVJLIGNodW5rIGNvbnRhaW5zIG9ubHkgJXMgbWFya2VyJXMgaW5zdGVhZCBvZiAlcycgJQorICAgICAgICAgICAgICAgICAobGVuKHNlbGYuX21hcmtlcnMpLCAnJyBpZiBsZW4oc2VsZi5fbWFya2VycykgPT0gMSBlbHNlICdzJywKKyAgICAgICAgICAgICAgICAgIG5tYXJrZXJzKSkKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4odykKIAogY2xhc3MgQWlmY193cml0ZToKICAgICAjIFZhcmlhYmxlcyB1c2VkIGluIHRoaXMgY2xhc3M6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggZWI4OTRjYS4uZjI1YjFiNiAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtNzEsNiArNzEsNyBAQAogICAgICdBcmd1bWVudERlZmF1bHRzSGVscEZvcm1hdHRlcicsCiAgICAgJ1Jhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcicsCiAgICAgJ1Jhd1RleHRIZWxwRm9ybWF0dGVyJywKKyAgICAnTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyJywKICAgICAnTmFtZXNwYWNlJywKICAgICAnQWN0aW9uJywKICAgICAnT05FX09SX01PUkUnLApAQCAtNDE5LDcgKzQyMCw4IEBACiAKICAgICAgICAgICAgICMgcHJvZHVjZSBhbGwgYXJnIHN0cmluZ3MKICAgICAgICAgICAgIGVsaWYgbm90IGFjdGlvbi5vcHRpb25fc3RyaW5nczoKLSAgICAgICAgICAgICAgICBwYXJ0ID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBhY3Rpb24uZGVzdCkKKyAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChhY3Rpb24pCisgICAgICAgICAgICAgICAgcGFydCA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKIAogICAgICAgICAgICAgICAgICMgaWYgaXQncyBpbiBhIGdyb3VwLCBzdHJpcCB0aGUgb3V0ZXIgW10KICAgICAgICAgICAgICAgICBpZiBhY3Rpb24gaW4gZ3JvdXBfYWN0aW9uczoKQEAgLTQ0MSw3ICs0NDMsNyBAQAogICAgICAgICAgICAgICAgICMgaWYgdGhlIE9wdGlvbmFsIHRha2VzIGEgdmFsdWUsIGZvcm1hdCBpczoKICAgICAgICAgICAgICAgICAjICAgIC1zIEFSR1Mgb3IgLS1sb25nIEFSR1MKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gYWN0aW9uLmRlc3QudXBwZXIoKQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoYWN0aW9uKQogICAgICAgICAgICAgICAgICAgICBhcmdzX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICAgcGFydCA9ICclcyAlcycgJSAob3B0aW9uX3N0cmluZywgYXJnc19zdHJpbmcpCiAKQEAgLTUyNyw3ICs1MjksOCBAQAogCiAgICAgZGVmIF9mb3JtYXRfYWN0aW9uX2ludm9jYXRpb24oc2VsZiwgYWN0aW9uKToKICAgICAgICAgaWYgbm90IGFjdGlvbi5vcHRpb25fc3RyaW5nczoKLSAgICAgICAgICAgIG1ldGF2YXIsID0gc2VsZi5fbWV0YXZhcl9mb3JtYXR0ZXIoYWN0aW9uLCBhY3Rpb24uZGVzdCkoMSkKKyAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKGFjdGlvbikKKyAgICAgICAgICAgIG1ldGF2YXIsID0gc2VsZi5fbWV0YXZhcl9mb3JtYXR0ZXIoYWN0aW9uLCBkZWZhdWx0KSgxKQogICAgICAgICAgICAgcmV0dXJuIG1ldGF2YXIKIAogICAgICAgICBlbHNlOgpAQCAtNTQxLDcgKzU0NCw3IEBACiAgICAgICAgICAgICAjIGlmIHRoZSBPcHRpb25hbCB0YWtlcyBhIHZhbHVlLCBmb3JtYXQgaXM6CiAgICAgICAgICAgICAjICAgIC1zIEFSR1MsIC0tbG9uZyBBUkdTCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBhY3Rpb24uZGVzdC51cHBlcigpCisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKGFjdGlvbikKICAgICAgICAgICAgICAgICBhcmdzX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgZGVmYXVsdCkKICAgICAgICAgICAgICAgICBmb3Igb3B0aW9uX3N0cmluZyBpbiBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6CiAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXMgJXMnICUgKG9wdGlvbl9zdHJpbmcsIGFyZ3Nfc3RyaW5nKSkKQEAgLTYxOSw2ICs2MjIsMTIgQEAKICAgICBkZWYgX2dldF9oZWxwX3N0cmluZyhzZWxmLCBhY3Rpb24pOgogICAgICAgICByZXR1cm4gYWN0aW9uLmhlbHAKIAorICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi5kZXN0LnVwcGVyKCkKKworICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLmRlc3QKKwogCiBjbGFzcyBSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIoSGVscEZvcm1hdHRlcik6CiAgICAgIiIiSGVscCBtZXNzYWdlIGZvcm1hdHRlciB3aGljaCByZXRhaW5zIGFueSBmb3JtYXR0aW5nIGluIGRlc2NyaXB0aW9ucy4KQEAgLTYyOCw3ICs2MzcsNyBAQAogICAgICIiIgogCiAgICAgZGVmIF9maWxsX3RleHQoc2VsZiwgdGV4dCwgd2lkdGgsIGluZGVudCk6Ci0gICAgICAgIHJldHVybiAnJy5qb2luKFtpbmRlbnQgKyBsaW5lIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhUcnVlKV0pCisgICAgICAgIHJldHVybiAnJy5qb2luKGluZGVudCArIGxpbmUgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogCiAKIGNsYXNzIFJhd1RleHRIZWxwRm9ybWF0dGVyKFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcik6CkBAIC02NTksNiArNjY4LDIyIEBACiAgICAgICAgIHJldHVybiBoZWxwCiAKIAorY2xhc3MgTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyKEhlbHBGb3JtYXR0ZXIpOgorICAgICIiIkhlbHAgbWVzc2FnZSBmb3JtYXR0ZXIgd2hpY2ggdXNlcyB0aGUgYXJndW1lbnQgJ3R5cGUnIGFzIHRoZSBkZWZhdWx0CisgICAgbWV0YXZhciB2YWx1ZSAoaW5zdGVhZCBvZiB0aGUgYXJndW1lbnQgJ2Rlc3QnKQorCisgICAgT25seSB0aGUgbmFtZSBvZiB0aGlzIGNsYXNzIGlzIGNvbnNpZGVyZWQgYSBwdWJsaWMgQVBJLiBBbGwgdGhlIG1ldGhvZHMKKyAgICBwcm92aWRlZCBieSB0aGUgY2xhc3MgYXJlIGNvbnNpZGVyZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgorICAgICIiIgorCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUuX19uYW1lX18KKworICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUuX19uYW1lX18KKworCisKICMgPT09PT09PT09PT09PT09PT09PT09CiAjIE9wdGlvbnMgYW5kIEFyZ3VtZW50cwogIyA9PT09PT09PT09PT09PT09PT09PT0KQEAgLTE1NTQsNyArMTU3OSw2IEBACiAgICAgICAgICAgICAgICAgIHVzYWdlPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgIGVwaWxvZz1Ob25lLAotICAgICAgICAgICAgICAgICB2ZXJzaW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgIHBhcmVudHM9W10sCiAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1IZWxwRm9ybWF0dGVyLAogICAgICAgICAgICAgICAgICBwcmVmaXhfY2hhcnM9Jy0nLApAQCAtMTU2MywxNCArMTU4Nyw2IEBACiAgICAgICAgICAgICAgICAgIGNvbmZsaWN0X2hhbmRsZXI9J2Vycm9yJywKICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSk6CiAKLSAgICAgICAgaWYgdmVyc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAgICAiIiJUaGUgInZlcnNpb24iIGFyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIGRlcHJlY2F0ZWQuICIiIgotICAgICAgICAgICAgICAgICIiIlBsZWFzZSB1c2UgIiIiCi0gICAgICAgICAgICAgICAgIiIiImFkZF9hcmd1bWVudCguLi4sIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249Ik4iLCAuLi4pIiAiIiIKLSAgICAgICAgICAgICAgICAiIiJpbnN0ZWFkIiIiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KICAgICAgICAgc3VwZXJpbml0ID0gc3VwZXIoQXJndW1lbnRQYXJzZXIsIHNlbGYpLl9faW5pdF9fCiAgICAgICAgIHN1cGVyaW5pdChkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgIHByZWZpeF9jaGFycz1wcmVmaXhfY2hhcnMsCkBAIC0xNTg0LDcgKzE2MDAsNiBAQAogICAgICAgICBzZWxmLnByb2cgPSBwcm9nCiAgICAgICAgIHNlbGYudXNhZ2UgPSB1c2FnZQogICAgICAgICBzZWxmLmVwaWxvZyA9IGVwaWxvZwotICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCiAgICAgICAgIHNlbGYuZm9ybWF0dGVyX2NsYXNzID0gZm9ybWF0dGVyX2NsYXNzCiAgICAgICAgIHNlbGYuZnJvbWZpbGVfcHJlZml4X2NoYXJzID0gZnJvbWZpbGVfcHJlZml4X2NoYXJzCiAgICAgICAgIHNlbGYuYWRkX2hlbHAgPSBhZGRfaGVscApAQCAtMTU5OSw3ICsxNjE0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBzdHJpbmcKICAgICAgICAgc2VsZi5yZWdpc3RlcigndHlwZScsIE5vbmUsIGlkZW50aXR5KQogCi0gICAgICAgICMgYWRkIGhlbHAgYW5kIHZlcnNpb24gYXJndW1lbnRzIGlmIG5lY2Vzc2FyeQorICAgICAgICAjIGFkZCBoZWxwIGFyZ3VtZW50IGlmIG5lY2Vzc2FyeQogICAgICAgICAjICh1c2luZyBleHBsaWNpdCBkZWZhdWx0IHRvIG92ZXJyaWRlIGdsb2JhbCBhcmd1bWVudF9kZWZhdWx0KQogICAgICAgICBkZWZhdWx0X3ByZWZpeCA9ICctJyBpZiAnLScgaW4gcHJlZml4X2NoYXJzIGVsc2UgcHJlZml4X2NoYXJzWzBdCiAgICAgICAgIGlmIHNlbGYuYWRkX2hlbHA6CkBAIC0xNjA3LDEyICsxNjIyLDYgQEAKICAgICAgICAgICAgICAgICBkZWZhdWx0X3ByZWZpeCsnaCcsIGRlZmF1bHRfcHJlZml4KjIrJ2hlbHAnLAogICAgICAgICAgICAgICAgIGFjdGlvbj0naGVscCcsIGRlZmF1bHQ9U1VQUFJFU1MsCiAgICAgICAgICAgICAgICAgaGVscD1fKCdzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0JykpCi0gICAgICAgIGlmIHNlbGYudmVyc2lvbjoKLSAgICAgICAgICAgIHNlbGYuYWRkX2FyZ3VtZW50KAotICAgICAgICAgICAgICAgIGRlZmF1bHRfcHJlZml4Kyd2JywgZGVmYXVsdF9wcmVmaXgqMisndmVyc2lvbicsCi0gICAgICAgICAgICAgICAgYWN0aW9uPSd2ZXJzaW9uJywgZGVmYXVsdD1TVVBQUkVTUywKLSAgICAgICAgICAgICAgICB2ZXJzaW9uPXNlbGYudmVyc2lvbiwKLSAgICAgICAgICAgICAgICBoZWxwPV8oInNob3cgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0IikpCiAKICAgICAgICAgIyBhZGQgcGFyZW50IGFyZ3VtZW50cyBhbmQgZGVmYXVsdHMKICAgICAgICAgZm9yIHBhcmVudCBpbiBwYXJlbnRzOgpAQCAtMTYzMiw3ICsxNjQxLDYgQEAKICAgICAgICAgICAgICdwcm9nJywKICAgICAgICAgICAgICd1c2FnZScsCiAgICAgICAgICAgICAnZGVzY3JpcHRpb24nLAotICAgICAgICAgICAgJ3ZlcnNpb24nLAogICAgICAgICAgICAgJ2Zvcm1hdHRlcl9jbGFzcycsCiAgICAgICAgICAgICAnY29uZmxpY3RfaGFuZGxlcicsCiAgICAgICAgICAgICAnYWRkX2hlbHAnLApAQCAtMTk0MCwyOSArMTk0OCwyOSBAQAogICAgICAgICAjIGlmIHdlIGRpZG4ndCBjb25zdW1lIGFsbCB0aGUgYXJndW1lbnQgc3RyaW5ncywgdGhlcmUgd2VyZSBleHRyYXMKICAgICAgICAgZXh0cmFzLmV4dGVuZChhcmdfc3RyaW5nc1tzdG9wX2luZGV4Ol0pCiAKLSAgICAgICAgIyBpZiB3ZSBkaWRuJ3QgdXNlIGFsbCB0aGUgUG9zaXRpb25hbCBvYmplY3RzLCB0aGVyZSB3ZXJlIHRvbyBmZXcKLSAgICAgICAgIyBhcmcgc3RyaW5ncyBzdXBwbGllZC4KLSAgICAgICAgaWYgcG9zaXRpb25hbHM6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKF8oJ3RvbyBmZXcgYXJndW1lbnRzJykpCi0KLSAgICAgICAgIyBtYWtlIHN1cmUgYWxsIHJlcXVpcmVkIGFjdGlvbnMgd2VyZSBwcmVzZW50LCBhbmQgY29udmVydCBkZWZhdWx0cy4KKyAgICAgICAgIyBtYWtlIHN1cmUgYWxsIHJlcXVpcmVkIGFjdGlvbnMgd2VyZSBwcmVzZW50IGFuZCBhbHNvIGNvbnZlcnQKKyAgICAgICAgIyBhY3Rpb24gZGVmYXVsdHMgd2hpY2ggd2VyZSBub3QgZ2l2ZW4gYXMgYXJndW1lbnRzCisgICAgICAgIHJlcXVpcmVkX2FjdGlvbnMgPSBbXQogICAgICAgICBmb3IgYWN0aW9uIGluIHNlbGYuX2FjdGlvbnM6CiAgICAgICAgICAgICBpZiBhY3Rpb24gbm90IGluIHNlZW5fYWN0aW9uczoKICAgICAgICAgICAgICAgICBpZiBhY3Rpb24ucmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfZ2V0X2FjdGlvbl9uYW1lKGFjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCdhcmd1bWVudCAlcyBpcyByZXF1aXJlZCcpICUgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRfYWN0aW9ucy5hcHBlbmQoX2dldF9hY3Rpb25fbmFtZShhY3Rpb24pKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgQ29udmVydCBhY3Rpb24gZGVmYXVsdCBub3cgaW5zdGVhZCBvZiBkb2luZyBpdCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgIyBwYXJzaW5nIGFyZ3VtZW50cyB0byBhdm9pZCBjYWxsaW5nIGNvbnZlcnQgZnVuY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgICMgdHdpY2UgKHdoaWNoIG1heSBmYWlsKSBpZiB0aGUgYXJndW1lbnQgd2FzIGdpdmVuLCBidXQKICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IGlmIGl0IHdhcyBkZWZpbmVkIGFscmVhZHkgaW4gdGhlIG5hbWVzcGFjZQogICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLmRlZmF1bHQgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShhY3Rpb24uZGVmYXVsdCwgc3RyKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kZWZhdWx0IGlzIGdldGF0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShhY3Rpb24uZGVmYXVsdCwgc3RyKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZGVmYXVsdCBpcyBnZXRhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpKToKICAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3ZhbHVlKGFjdGlvbiwgYWN0aW9uLmRlZmF1bHQpKQogCisgICAgICAgIGlmIHJlcXVpcmVkX2FjdGlvbnM6CisgICAgICAgICAgICBzZWxmLmVycm9yKF8oJ3RoZSBmb2xsb3dpbmcgYXJndW1lbnRzIGFyZSByZXF1aXJlZDogJXMnKSAlCisgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihyZXF1aXJlZF9hY3Rpb25zKSkKKwogICAgICAgICAjIG1ha2Ugc3VyZSBhbGwgcmVxdWlyZWQgZ3JvdXBzIGhhZCBvbmUgb3B0aW9uIHByZXNlbnQKICAgICAgICAgZm9yIGdyb3VwIGluIHNlbGYuX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cHM6CiAgICAgICAgICAgICBpZiBncm91cC5yZXF1aXJlZDoKQEAgLTIzMTQsMTYgKzIzMjIsNiBAQAogICAgICAgICAjIGRldGVybWluZSBoZWxwIGZyb20gZm9ybWF0IGFib3ZlCiAgICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0X2hlbHAoKQogCi0gICAgZGVmIGZvcm1hdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICdUaGUgZm9ybWF0X3ZlcnNpb24gbWV0aG9kIGlzIGRlcHJlY2F0ZWQgLS0gdGhlICJ2ZXJzaW9uIiAnCi0gICAgICAgICAgICAnYXJndW1lbnQgdG8gQXJndW1lbnRQYXJzZXIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4nLAotICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBmb3JtYXR0ZXIgPSBzZWxmLl9nZXRfZm9ybWF0dGVyKCkKLSAgICAgICAgZm9ybWF0dGVyLmFkZF90ZXh0KHNlbGYudmVyc2lvbikKLSAgICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXRfaGVscCgpCi0KICAgICBkZWYgX2dldF9mb3JtYXR0ZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmZvcm1hdHRlcl9jbGFzcyhwcm9nPXNlbGYucHJvZykKIApAQCAtMjM0MCwxNCArMjMzOCw2IEBACiAgICAgICAgICAgICBmaWxlID0gX3N5cy5zdGRvdXQKICAgICAgICAgc2VsZi5fcHJpbnRfbWVzc2FnZShzZWxmLmZvcm1hdF9oZWxwKCksIGZpbGUpCiAKLSAgICBkZWYgcHJpbnRfdmVyc2lvbihzZWxmLCBmaWxlPU5vbmUpOgotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICdUaGUgcHJpbnRfdmVyc2lvbiBtZXRob2QgaXMgZGVwcmVjYXRlZCAtLSB0aGUgInZlcnNpb24iICcKLSAgICAgICAgICAgICdhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBubyBsb25nZXIgc3VwcG9ydGVkLicsCi0gICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHNlbGYuX3ByaW50X21lc3NhZ2Uoc2VsZi5mb3JtYXRfdmVyc2lvbigpLCBmaWxlKQotCiAgICAgZGVmIF9wcmludF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGZpbGU9Tm9uZSk6CiAgICAgICAgIGlmIG1lc3NhZ2U6CiAgICAgICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvYXN0LnB5IGIvTGliL2FzdC5weQppbmRleCBmYjVhZGFjLi4xM2Y1OWY5IDEwMDY0NAotLS0gYS9MaWIvYXN0LnB5CisrKyBiL0xpYi9hc3QucHkKQEAgLTI1LDcgKzI1LDYgQEAKICAgICA6bGljZW5zZTogUHl0aG9uIExpY2Vuc2UuCiAiIiIKIGZyb20gX2FzdCBpbXBvcnQgKgotZnJvbSBfYXN0IGltcG9ydCBfX3ZlcnNpb25fXwogCiAKIGRlZiBwYXJzZShzb3VyY2UsIGZpbGVuYW1lPSc8dW5rbm93bj4nLCBtb2RlPSdleGVjJyk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNoYXQucHkgYi9MaWIvYXN5bmNoYXQucHkKaW5kZXggNjU1ODUxMi4uNGUyNmJiNSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaGF0LnB5CisrKyBiL0xpYi9hc3luY2hhdC5weQpAQCAtNDksMTggKzQ5LDYgQEAKIGltcG9ydCBhc3luY29yZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIAotZGVmIGJ1ZmZlcihvYmosIHN0YXJ0PU5vbmUsIHN0b3A9Tm9uZSk6Ci0gICAgIyBpZiBtZW1vcnl2aWV3IG9iamVjdHMgZ2FpbiBzbGljaW5nIHNlbWFudGljcywKLSAgICAjIHRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgZm9yIHRoZSBiZXR0ZXIKLSAgICAjIG1lbW9yeXZpZXcgdXNlZCBmb3IgdGhlIFR5cGVFcnJvcgotICAgIG1lbW9yeXZpZXcob2JqKQotICAgIGlmIHN0YXJ0ID09IE5vbmU6Ci0gICAgICAgIHN0YXJ0ID0gMAotICAgIGlmIHN0b3AgPT0gTm9uZToKLSAgICAgICAgc3RvcCA9IGxlbihvYmopCi0gICAgeCA9IG9ialtzdGFydDpzdG9wXQotICAgICMjIHByaW50KCJidWZmZXIgdHlwZSBpczogJXMiJSh0eXBlKHgpLCkpCi0gICAgcmV0dXJuIHgKIAogY2xhc3MgYXN5bmNfY2hhdCAoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAgICAgIiIiVGhpcyBpcyBhbiBhYnN0cmFjdCBjbGFzcy4gIFlvdSBtdXN0IGRlcml2ZSBmcm9tIHRoaXMgY2xhc3MsIGFuZCBhZGQKQEAgLTc1LDcgKzYzLDcgQEAKICAgICAjIHNpZ24gb2YgYW4gYXBwbGljYXRpb24gYnVnIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBwYXNzIHNpbGVudGx5CiAKICAgICB1c2VfZW5jb2RpbmcgICAgICAgICAgICA9IDAKLSAgICBlbmNvZGluZyAgICAgICAgICAgICAgICA9ICdsYXRpbjEnCisgICAgZW5jb2RpbmcgICAgICAgICAgICAgICAgPSAnbGF0aW4tMScKIAogICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgc29jaz1Ob25lLCBtYXA9Tm9uZSk6CiAgICAgICAgICMgZm9yIHN0cmluZyB0ZXJtaW5hdG9yIG1hdGNoaW5nCkBAIC0yNDAsNyArMjI4LDcgQEAKICAgICAgICAgICAgICMgaGFuZGxlIGNsYXNzaWMgcHJvZHVjZXIgYmVoYXZpb3IKICAgICAgICAgICAgIG9icyA9IHNlbGYuYWNfb3V0X2J1ZmZlcl9zaXplCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGJ1ZmZlcihmaXJzdCwgMCwgb2JzKQorICAgICAgICAgICAgICAgIGRhdGEgPSBmaXJzdFs6b2JzXQogICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICBkYXRhID0gZmlyc3QubW9yZSgpCiAgICAgICAgICAgICAgICAgaWYgZGF0YToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY29yZS5weSBiL0xpYi9hc3luY29yZS5weQppbmRleCBiMDYwNzdmLi4yY2FjODhiIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNvcmUucHkKKysrIGIvTGliL2FzeW5jb3JlLnB5CkBAIC01NCw3ICs1NCw3IEBACiAKIGltcG9ydCBvcwogZnJvbSBlcnJubyBpbXBvcnQgRUFMUkVBRFksIEVJTlBST0dSRVNTLCBFV09VTERCTE9DSywgRUNPTk5SRVNFVCwgRUlOVkFMLCBcCi0gICAgIEVOT1RDT05OLCBFU0hVVERPV04sIEVJTlRSLCBFSVNDT05OLCBFQkFERiwgRUNPTk5BQk9SVEVELCBFUElQRSwgRUFHQUlOLCBcCisgICAgIEVOT1RDT05OLCBFU0hVVERPV04sIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKICAgICAgZXJyb3Jjb2RlCiAKIF9ESVNDT05ORUNURUQgPSBmcm96ZW5zZXQoKEVDT05OUkVTRVQsIEVOT1RDT05OLCBFU0hVVERPV04sIEVDT05OQUJPUlRFRCwgRVBJUEUsCkBAIC0xNDMsMTEgKzE0Myw4IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKLSAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuYXJnc1swXSAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBmb3IgZmQgaW4gcjoKICAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCkBAIC0xODQsMTUgKzE4MSwxMCBAQAogICAgICAgICAgICAgaWYgb2JqLndyaXRhYmxlKCkgYW5kIG5vdCBvYmouYWNjZXB0aW5nOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IHNlbGVjdC5QT0xMT1VUCiAgICAgICAgICAgICBpZiBmbGFnczoKLSAgICAgICAgICAgICAgICAjIE9ubHkgY2hlY2sgZm9yIGV4Y2VwdGlvbnMgaWYgb2JqZWN0IHdhcyBlaXRoZXIgcmVhZGFibGUKLSAgICAgICAgICAgICAgICAjIG9yIHdyaXRhYmxlLgotICAgICAgICAgICAgICAgIGZsYWdzIHw9IHNlbGVjdC5QT0xMRVJSIHwgc2VsZWN0LlBPTExIVVAgfCBzZWxlY3QuUE9MTE5WQUwKICAgICAgICAgICAgICAgICBwb2xsc3Rlci5yZWdpc3RlcihmZCwgZmxhZ3MpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHIgPSBwb2xsc3Rlci5wb2xsKHRpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICByID0gW10KICAgICAgICAgZm9yIGZkLCBmbGFncyBpbiByOgogICAgICAgICAgICAgb2JqID0gbWFwLmdldChmZCkKQEAgLTI5Miw3ICsyODQsNyBAQAogICAgICAgICAgICAgZGVsIG1hcFtmZF0KICAgICAgICAgc2VsZi5fZmlsZW5vID0gTm9uZQogCi0gICAgZGVmIGNyZWF0ZV9zb2NrZXQoc2VsZiwgZmFtaWx5LCB0eXBlKToKKyAgICBkZWYgY3JlYXRlX3NvY2tldChzZWxmLCBmYW1pbHk9c29ja2V0LkFGX0lORVQsIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKToKICAgICAgICAgc2VsZi5mYW1pbHlfYW5kX3R5cGUgPSBmYW1pbHksIHR5cGUKICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlKQogICAgICAgICBzb2NrLnNldGJsb2NraW5nKDApCmRpZmYgLS1naXQgYS9MaWIvYmFzZTY0LnB5IGIvTGliL2Jhc2U2NC5weQppbmRleCA4OTVkODEzLi40MDQyZjAwIDEwMDc1NQotLS0gYS9MaWIvYmFzZTY0LnB5CisrKyBiL0xpYi9iYXNlNjQucHkKQEAgLTI5LDE0ICsyOSwxNiBAQAogCiBieXRlc190eXBlcyA9IChieXRlcywgYnl0ZWFycmF5KSAgIyBUeXBlcyBhY2NlcHRhYmxlIGFzIGJpbmFyeSBkYXRhCiAKLQotZGVmIF90cmFuc2xhdGUocywgYWx0Y2hhcnMpOgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQotICAgIHRyYW5zbGF0aW9uID0gYnl0ZWFycmF5KHJhbmdlKDI1NikpCi0gICAgZm9yIGssIHYgaW4gYWx0Y2hhcnMuaXRlbXMoKToKLSAgICAgICAgdHJhbnNsYXRpb25bb3JkKGspXSA9IHZbMF0KLSAgICByZXR1cm4gcy50cmFuc2xhdGUodHJhbnNsYXRpb24pCitkZWYgX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocyk6CisgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gcy5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3N0cmluZyBhcmd1bWVudCBzaG91bGQgY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMnKQorICAgIGVsaWYgaXNpbnN0YW5jZShzLCBieXRlc190eXBlcyk6CisgICAgICAgIHJldHVybiBzCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYnl0ZXMgb3IgQVNDSUkgc3RyaW5nLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCiAKIAogCkBAIC02MSw3ICs2Myw3IEBACiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhbHRjaGFycy5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCi0gICAgICAgIHJldHVybiBfdHJhbnNsYXRlKGVuY29kZWQsIHsnKyc6IGFsdGNoYXJzWzA6MV0sICcvJzogYWx0Y2hhcnNbMToyXX0pCisgICAgICAgIHJldHVybiBlbmNvZGVkLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYicrLycsIGFsdGNoYXJzKSkKICAgICByZXR1cm4gZW5jb2RlZAogCiAKQEAgLTc5LDE0ICs4MSwxMSBAQAogICAgIGRpc2NhcmRlZCBwcmlvciB0byB0aGUgcGFkZGluZyBjaGVjay4gIElmIHZhbGlkYXRlIGlzIFRydWUsCiAgICAgbm9uLWJhc2U2NC1hbHBoYWJldCBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dCByZXN1bHQgaW4gYSBiaW5hc2NpaS5FcnJvci4KICAgICAiIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBieXRlc190eXBlcyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICBzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocykKICAgICBpZiBhbHRjaGFycyBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYWx0Y2hhcnMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFsdGNoYXJzLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAgICAgYWx0Y2hhcnMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShhbHRjaGFycykKICAgICAgICAgYXNzZXJ0IGxlbihhbHRjaGFycykgPT0gMiwgcmVwcihhbHRjaGFycykKLSAgICAgICAgcyA9IF90cmFuc2xhdGUocywge2NocihhbHRjaGFyc1swXSk6IGInKycsIGNocihhbHRjaGFyc1sxXSk6IGInLyd9KQorICAgICAgICBzID0gcy50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGFsdGNoYXJzLCBiJysvJykpCiAgICAgaWYgdmFsaWRhdGUgYW5kIG5vdCByZS5tYXRjaChiJ15bQS1aYS16MC05Ky9dKj17MCwyfSQnLCBzKToKICAgICAgICAgcmFpc2UgYmluYXNjaWkuRXJyb3IoJ05vbi1iYXNlNjQgZGlnaXQgZm91bmQnKQogICAgIHJldHVybiBiaW5hc2NpaS5hMmJfYmFzZTY0KHMpCkBAIC0xMDksNiArMTA4LDEwIEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGI2NGRlY29kZShzKQogCisKK191cmxzYWZlX2VuY29kZV90cmFuc2xhdGlvbiA9IGJ5dGVzLm1ha2V0cmFucyhiJysvJywgYictXycpCitfdXJsc2FmZV9kZWNvZGVfdHJhbnNsYXRpb24gPSBieXRlcy5tYWtldHJhbnMoYictXycsIGInKy8nKQorCiBkZWYgdXJsc2FmZV9iNjRlbmNvZGUocyk6CiAgICAgIiIiRW5jb2RlIGEgYnl0ZSBzdHJpbmcgdXNpbmcgYSB1cmwtc2FmZSBCYXNlNjQgYWxwaGFiZXQuCiAKQEAgLTExNiw3ICsxMTksNyBAQAogICAgIHJldHVybmVkLiAgVGhlIGFscGhhYmV0IHVzZXMgJy0nIGluc3RlYWQgb2YgJysnIGFuZCAnXycgaW5zdGVhZCBvZgogICAgICcvJy4KICAgICAiIiIKLSAgICByZXR1cm4gYjY0ZW5jb2RlKHMsIGInLV8nKQorICAgIHJldHVybiBiNjRlbmNvZGUocykudHJhbnNsYXRlKF91cmxzYWZlX2VuY29kZV90cmFuc2xhdGlvbikKIAogZGVmIHVybHNhZmVfYjY0ZGVjb2RlKHMpOgogICAgICIiIkRlY29kZSBhIGJ5dGUgc3RyaW5nIGVuY29kZWQgd2l0aCB0aGUgc3RhbmRhcmQgQmFzZTY0IGFscGhhYmV0LgpAQCAtMTI4LDcgKzEzMSw5IEBACiAKICAgICBUaGUgYWxwaGFiZXQgdXNlcyAnLScgaW5zdGVhZCBvZiAnKycgYW5kICdfJyBpbnN0ZWFkIG9mICcvJy4KICAgICAiIiIKLSAgICByZXR1cm4gYjY0ZGVjb2RlKHMsIGInLV8nKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQorICAgIHMgPSBzLnRyYW5zbGF0ZShfdXJsc2FmZV9kZWNvZGVfdHJhbnNsYXRpb24pCisgICAgcmV0dXJuIGI2NGRlY29kZShzKQogCiAKIApAQCAtMjExLDggKzIxNiw3IEBACiAgICAgdGhlIGlucHV0IGlzIGluY29ycmVjdGx5IHBhZGRlZCBvciBpZiB0aGVyZSBhcmUgbm9uLWFscGhhYmV0CiAgICAgY2hhcmFjdGVycyBwcmVzZW50IGluIHRoZSBpbnB1dC4KICAgICAiIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBieXRlc190eXBlcyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICBzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocykKICAgICBxdWFudGEsIGxlZnRvdmVyID0gZGl2bW9kKGxlbihzKSwgOCkKICAgICBpZiBsZWZ0b3ZlcjoKICAgICAgICAgcmFpc2UgYmluYXNjaWkuRXJyb3IoJ0luY29ycmVjdCBwYWRkaW5nJykKQEAgLTIyMCwxMCArMjI0LDkgQEAKICAgICAjIEZhbHNlLCBvciB0aGUgY2hhcmFjdGVyIHRvIG1hcCB0aGUgZGlnaXQgMSAob25lKSB0by4gIEl0IHNob3VsZCBiZQogICAgICMgZWl0aGVyIEwgKGVsKSBvciBJIChleWUpLgogICAgIGlmIG1hcDAxIGlzIG5vdCBOb25lOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtYXAwMSwgYnl0ZXNfdHlwZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIG1hcDAxLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAgICAgbWFwMDEgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShtYXAwMSkKICAgICAgICAgYXNzZXJ0IGxlbihtYXAwMSkgPT0gMSwgcmVwcihtYXAwMSkKLSAgICAgICAgcyA9IF90cmFuc2xhdGUocywge2InMCc6IGInTycsIGInMSc6IG1hcDAxfSkKKyAgICAgICAgcyA9IHMudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhiJzAxJywgYidPJyArIG1hcDAxKSkKICAgICBpZiBjYXNlZm9sZDoKICAgICAgICAgcyA9IHMudXBwZXIoKQogICAgICMgU3RyaXAgb2ZmIHBhZCBjaGFyYWN0ZXJzIGZyb20gdGhlIHJpZ2h0LiAgV2UgbmVlZCB0byBjb3VudCB0aGUgcGFkCkBAIC0yOTIsOCArMjk1LDcgQEAKICAgICBzIHdlcmUgaW5jb3JyZWN0bHkgcGFkZGVkIG9yIGlmIHRoZXJlIGFyZSBub24tYWxwaGFiZXQgY2hhcmFjdGVycwogICAgIHByZXNlbnQgaW4gdGhlIHN0cmluZy4KICAgICAiIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBieXRlc190eXBlcyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICBzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocykKICAgICBpZiBjYXNlZm9sZDoKICAgICAgICAgcyA9IHMudXBwZXIoKQogICAgIGlmIHJlLnNlYXJjaChiJ1teMC05QS1GXScsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL2JpbmhleC5weSBiL0xpYi9iaW5oZXgucHkKaW5kZXggOTk5YTY3NS4uN2JmOTI3OCAxMDA2NDQKLS0tIGEvTGliL2JpbmhleC5weQorKysgYi9MaWIvYmluaGV4LnB5CkBAIC0yMyw3ICsyMyw2IEBACiAjCiBpbXBvcnQgaW8KIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IGJpbmFzY2lpCiAKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMDc1MDcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvYnoyLnB5CkBAIC0wLDAgKzEsNTA0IEBACisiIiJJbnRlcmZhY2UgdG8gdGhlIGxpYmJ6aXAyIGNvbXByZXNzaW9uIGxpYnJhcnkuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZmlsZSBpbnRlcmZhY2UsIGNsYXNzZXMgZm9yIGluY3JlbWVudGFsCisoZGUpY29tcHJlc3Npb24sIGFuZCBmdW5jdGlvbnMgZm9yIG9uZS1zaG90IChkZSljb21wcmVzc2lvbi4KKyIiIgorCitfX2FsbF9fID0gWyJCWjJGaWxlIiwgIkJaMkNvbXByZXNzb3IiLCAiQloyRGVjb21wcmVzc29yIiwKKyAgICAgICAgICAgIm9wZW4iLCAiY29tcHJlc3MiLCAiZGVjb21wcmVzcyJdCisKK19fYXV0aG9yX18gPSAiTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPiIKKworaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgaW8KK2ltcG9ydCB3YXJuaW5ncworCit0cnk6CisgICAgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFJMb2NrCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBkdW1teV90aHJlYWRpbmcgaW1wb3J0IFJMb2NrCisKK2Zyb20gX2J6MiBpbXBvcnQgQloyQ29tcHJlc3NvciwgQloyRGVjb21wcmVzc29yCisKKworX01PREVfQ0xPU0VEICAgPSAwCitfTU9ERV9SRUFEICAgICA9IDEKK19NT0RFX1JFQURfRU9GID0gMgorX01PREVfV1JJVEUgICAgPSAzCisKK19CVUZGRVJfU0laRSA9IDgxOTIKKworCitjbGFzcyBCWjJGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKworICAgICIiIkEgZmlsZSBvYmplY3QgcHJvdmlkaW5nIHRyYW5zcGFyZW50IGJ6aXAyIChkZSljb21wcmVzc2lvbi4KKworICAgIEEgQloyRmlsZSBjYW4gYWN0IGFzIGEgd3JhcHBlciBmb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIG9yIHJlZmVyCisgICAgZGlyZWN0bHkgdG8gYSBuYW1lZCBmaWxlIG9uIGRpc2suCisKKyAgICBOb3RlIHRoYXQgQloyRmlsZSBwcm92aWRlcyBhICpiaW5hcnkqIGZpbGUgaW50ZXJmYWNlIC0gZGF0YSByZWFkIGlzCisgICAgcmV0dXJuZWQgYXMgYnl0ZXMsIGFuZCBkYXRhIHRvIGJlIHdyaXR0ZW4gc2hvdWxkIGJlIGdpdmVuIGFzIGJ5dGVzLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSJyIiwgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSk6CisgICAgICAgICIiIk9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUuCisKKyAgICAgICAgSWYgZmlsZW5hbWUgaXMgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBpcyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0bworICAgICAgICBiZSBvcGVuZWQuIE90aGVyd2lzZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBvYmplY3QsIHdoaWNoIHdpbGwgYmUgdXNlZCB0bworICAgICAgICByZWFkIG9yIHdyaXRlIHRoZSBjb21wcmVzc2VkIGRhdGEuCisKKyAgICAgICAgbW9kZSBjYW4gYmUgJ3InIGZvciByZWFkaW5nIChkZWZhdWx0KSwgJ3cnIGZvciAob3Zlcil3cml0aW5nLCBvciAnYScgZm9yCisgICAgICAgIGFwcGVuZGluZy4gVGhlc2UgY2FuIGVxdWl2YWxlbnRseSBiZSBnaXZlbiBhcyAncmInLCAnd2InLCBhbmQgJ2FiJy4KKworICAgICAgICBidWZmZXJpbmcgaXMgaWdub3JlZC4gSXRzIHVzZSBpcyBkZXByZWNhdGVkLgorCisgICAgICAgIElmIG1vZGUgaXMgJ3cnIG9yICdhJywgY29tcHJlc3NsZXZlbCBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiAxCisgICAgICAgIGFuZCA5IHNwZWNpZnlpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOiAxIHByb2R1Y2VzIHRoZSBsZWFzdAorICAgICAgICBjb21wcmVzc2lvbiwgYW5kIDkgKGRlZmF1bHQpIHByb2R1Y2VzIHRoZSBtb3N0IGNvbXByZXNzaW9uLgorCisgICAgICAgIElmIG1vZGUgaXMgJ3InLCB0aGUgaW5wdXQgZmlsZSBtYXkgYmUgdGhlIGNvbmNhdGVuYXRpb24gb2YKKyAgICAgICAgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLgorICAgICAgICAiIiIKKyAgICAgICAgIyBUaGlzIGxvY2sgbXVzdCBiZSByZWN1cnNpdmUsIHNvIHRoYXQgQnVmZmVyZWRJT0Jhc2UncworICAgICAgICAjIHJlYWRsaW5lKCksIHJlYWRsaW5lcygpIGFuZCB3cml0ZWxpbmVzKCkgZG9uJ3QgZGVhZGxvY2suCisgICAgICAgIHNlbGYuX2xvY2sgPSBSTG9jaygpCisgICAgICAgIHNlbGYuX2ZwID0gTm9uZQorICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKKyAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX3NpemUgPSAtMQorCisgICAgICAgIGlmIGJ1ZmZlcmluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlVzZSBvZiAnYnVmZmVyaW5nJyBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorCisgICAgICAgIGlmIG5vdCAoMSA8PSBjb21wcmVzc2xldmVsIDw9IDkpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpCisKKyAgICAgICAgaWYgbW9kZSBpbiAoIiIsICJyIiwgInJiIik6CisgICAgICAgICAgICBtb2RlID0gInJiIgorICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAorICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKyAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIpOgorICAgICAgICAgICAgbW9kZSA9ICJ3YiIKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsKQorICAgICAgICBlbGlmIG1vZGUgaW4gKCJhIiwgImFiIik6CisgICAgICAgICAgICBtb2RlID0gImFiIgorICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKKworICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgc2VsZi5fZnAgPSBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgorICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgorCisgICAgICAgIE1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4gT25jZSB0aGUgZmlsZSBpcworICAgICAgICBjbG9zZWQsIGFueSBvdGhlciBvcGVyYXRpb24gb24gaXQgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZwOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAuY2xvc2UoKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhpcyBmaWxlIGlzIGNsb3NlZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VECisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIHVuZGVybHlpbmcgZmlsZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9mcC5maWxlbm8oKQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBzdXBwb3J0cyBzZWVraW5nLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9mcC5zZWVrYWJsZSgpCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQorCisgICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9XUklURToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQorICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKKworICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCisgICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90CisgICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCisgICAgICAgIHdoaWxlIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKSkKKworICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisKKyAgICAgICAgICAgICMgQ29udGludWUgdG8gbmV4dCBzdHJlYW0uCisgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgICMgUmVhZCBkYXRhIHVudGlsIEVPRi4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9hbGwoc2VsZiwgcmV0dXJuX2RhdGE9VHJ1ZSk6CisgICAgICAgICMgVGhlIGxvb3AgYXNzdW1lcyB0aGF0IF9idWZmZXJfb2Zmc2V0IGlzIDAuIEVuc3VyZSB0aGF0IHRoaXMgaXMgdHJ1ZS4KKyAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIHdoaWxlIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oc2VsZi5fYnVmZmVyKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGJsb2NrcykKKworICAgICMgUmVhZCBhIGJsb2NrIG9mIHVwIHRvIG4gYnl0ZXMuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYmxvY2soc2VsZiwgbiwgcmV0dXJuX2RhdGE9VHJ1ZSk6CisgICAgICAgICMgSWYgd2UgaGF2ZSBlbm91Z2ggZGF0YSBidWZmZXJlZCwgcmV0dXJuIGltbWVkaWF0ZWx5LgorICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgbgorICAgICAgICBpZiBlbmQgPD0gbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQgOiBlbmRdCisgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICByZXR1cm4gZGF0YSBpZiByZXR1cm5fZGF0YSBlbHNlIE5vbmUKKworICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKworICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBuID4gMCBhbmQgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIGlmIG4gPCBsZW4oc2VsZi5fYnVmZmVyKToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyWzpuXQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIG4gLT0gbGVuKGRhdGEpCisgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGJsb2NrcykKKworICAgIGRlZiBwZWVrKHNlbGYsIG49MCk6CisgICAgICAgICIiIlJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIEFsd2F5cyByZXR1cm5zIGF0IGxlYXN0IG9uZSBieXRlIG9mIGRhdGEsIHVubGVzcyBhdCBFT0YuCisgICAgICAgIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMgcmV0dXJuZWQgaXMgdW5zcGVjaWZpZWQuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KKworICAgICAgICBJZiBzaXplIGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuCisgICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgIGVsaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKworICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcywgd2hpbGUgdHJ5aW5nIHRvIGF2b2lkCisgICAgICAgIG1ha2luZyBtdWx0aXBsZSByZWFkcyBmcm9tIHRoZSB1bmRlcmx5aW5nIHN0cmVhbS4KKworICAgICAgICBSZXR1cm5zIGInJyBpZiB0aGUgZmlsZSBpcyBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICAjIFVzdWFsbHksIHJlYWQxKCkgY2FsbHMgX2ZwLnJlYWQoKSBhdCBtb3N0IG9uY2UuIEhvd2V2ZXIsIHNvbWV0aW1lcworICAgICAgICAjIHRoaXMgZG9lcyBub3QgZ2l2ZSBlbm91Z2ggZGF0YSBmb3IgdGhlIGRlY29tcHJlc3NvciB0byBtYWtlIHByb2dyZXNzLgorICAgICAgICAjIEluIHRoaXMgY2FzZSB3ZSBtYWtlIG11bHRpcGxlIHJlYWRzLCB0byBhdm9pZCByZXR1cm5pbmcgYiIiLgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgICAgICBpZiAoc2l6ZSA9PSAwIG9yCisgICAgICAgICAgICAgICAgIyBPbmx5IGNhbGwgX2ZpbGxfYnVmZmVyKCkgaWYgdGhlIGJ1ZmZlciBpcyBhY3R1YWxseSBlbXB0eS4KKyAgICAgICAgICAgICAgICAjIFRoaXMgZ2l2ZXMgYSBzaWduaWZpY2FudCBzcGVlZHVwIGlmICpzaXplKiBpcyBzbWFsbC4KKyAgICAgICAgICAgICAgICAoc2VsZi5fYnVmZmVyX29mZnNldCA9PSBsZW4oc2VsZi5fYnVmZmVyKSBhbmQgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCkpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgICAgICBpZiBzaXplID4gMDoKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCArIHNpemVdCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBiLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkICgwIGZvciBFT0YpLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRpbnRvKHNlbGYsIGIpCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgYSBsaW5lIG9mIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIFRoZSB0ZXJtaW5hdGluZyBuZXdsaW5lIChpZiBwcmVzZW50KSBpcyByZXRhaW5lZC4gSWYgc2l6ZSBpcworICAgICAgICBub24tbmVnYXRpdmUsIG5vIG1vcmUgdGhhbiBzaXplIGJ5dGVzIHdpbGwgYmUgcmVhZCAoaW4gd2hpY2gKKyAgICAgICAgY2FzZSB0aGUgbGluZSBtYXkgYmUgaW5jb21wbGV0ZSkuIFJldHVybnMgYicnIGlmIGFscmVhZHkgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNpemUsICJfX2luZGV4X18iKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQorICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgIyBTaG9ydGN1dCBmb3IgdGhlIGNvbW1vbiBjYXNlIC0gdGhlIHdob2xlIGxpbmUgaXMgaW4gdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlci5maW5kKGIiXG4iLCBzZWxmLl9idWZmZXJfb2Zmc2V0KSArIDEKKyAgICAgICAgICAgICAgICBpZiBlbmQgPiAwOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQgOiBlbmRdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihsaW5lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQorICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIHNpemUpCisKKyAgICBkZWYgcmVhZGxpbmVzKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIGEgbGlzdCBvZiBsaW5lcyBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KKworICAgICAgICBzaXplIGNhbiBiZSBzcGVjaWZpZWQgdG8gY29udHJvbCB0aGUgbnVtYmVyIG9mIGxpbmVzIHJlYWQ6IG5vCisgICAgICAgIGZ1cnRoZXIgbGluZXMgd2lsbCBiZSByZWFkIG9uY2UgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGxpbmVzIHJlYWQKKyAgICAgICAgc28gZmFyIGVxdWFscyBvciBleGNlZWRzIHNpemUuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2l6ZSwgIl9faW5kZXhfXyIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiSW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCIpCisgICAgICAgICAgICBzaXplID0gc2l6ZS5fX2luZGV4X18oKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmVzKHNlbGYsIHNpemUpCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIGEgYnl0ZSBzdHJpbmcgdG8gdGhlIGZpbGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuLCB3aGljaCBpcworICAgICAgICBhbHdheXMgbGVuKGRhdGEpLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywgdGhlIGZpbGUgb24gZGlzaworICAgICAgICBtYXkgbm90IHJlZmxlY3QgdGhlIGRhdGEgd3JpdHRlbiB1bnRpbCBjbG9zZSgpIGlzIGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl93cml0ZSgpCisgICAgICAgICAgICBjb21wcmVzc2VkID0gc2VsZi5fY29tcHJlc3Nvci5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBsZW4oZGF0YSkKKworICAgIGRlZiB3cml0ZWxpbmVzKHNlbGYsIHNlcSk6CisgICAgICAgICIiIldyaXRlIGEgc2VxdWVuY2Ugb2YgYnl0ZSBzdHJpbmdzIHRvIHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbi4KKyAgICAgICAgc2VxIGNhbiBiZSBhbnkgaXRlcmFibGUgeWllbGRpbmcgYnl0ZSBzdHJpbmdzLgorCisgICAgICAgIExpbmUgc2VwYXJhdG9ycyBhcmUgbm90IGFkZGVkIGJldHdlZW4gdGhlIHdyaXR0ZW4gYnl0ZSBzdHJpbmdzLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLndyaXRlbGluZXMoc2VsZiwgc2VxKQorCisgICAgIyBSZXdpbmQgdGhlIGZpbGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YSBzdHJlYW0uCisgICAgZGVmIF9yZXdpbmQoc2VsZik6CisgICAgICAgIHNlbGYuX2ZwLnNlZWsoMCwgMCkKKyAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQUQKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBCWjJEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKworICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgorICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZS4gVmFsdWVzIGZvciB3aGVuY2UgYXJlOgorCisgICAgICAgICAgICAwOiBzdGFydCBvZiBzdHJlYW0gKGRlZmF1bHQpOyBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUKKyAgICAgICAgICAgIDE6IGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uCisgICAgICAgICAgICAyOiBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgbXVzdCBub3QgYmUgcG9zaXRpdmUKKworICAgICAgICBSZXR1cm5zIHRoZSBuZXcgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc28gZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAorICAgICAgICB0aGlzIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCisKKyAgICAgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCisgICAgICAgICAgICBpZiB3aGVuY2UgPT0gMDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAxOgorICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAorICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKKyAgICAgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6IHt9Ii5mb3JtYXQod2hlbmNlKSkKKworICAgICAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgorICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgorICAgICAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKKworICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCisgICAgICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCisKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKworZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD05LAorICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CisgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgorCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzIG9iamVjdCksIG9yCisgICAgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiwgInciLCAid2IiLCAiYSIgb3IgImFiIiBmb3IgYmluYXJ5IG1vZGUsCisgICAgb3IgInJ0IiwgInd0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IG1vZGUgaXMgInJiIiwgYW5kIHRoZQorICAgIGRlZmF1bHQgY29tcHJlc3NsZXZlbCBpcyA5LgorCisgICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIEJaMkZpbGUgY29uc3RydWN0b3I6CisgICAgQloyRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbCkuIEluIHRoaXMgY2FzZSwgdGhlIGVuY29kaW5nLCBlcnJvcnMKKyAgICBhbmQgbmV3bGluZSBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgICBGb3IgdGV4dCBtb2RlLCBhIEJaMkZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yIGhhbmRsaW5nCisgICAgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworICAgICIiIgorICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICBpZiAiYiIgaW4gbW9kZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKKyAgICBlbHNlOgorICAgICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlbmNvZGluZycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlcnJvcnMnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorCisgICAgYnpfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQorICAgIGJpbmFyeV9maWxlID0gQloyRmlsZShmaWxlbmFtZSwgYnpfbW9kZSwgY29tcHJlc3NsZXZlbD1jb21wcmVzc2xldmVsKQorCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIHJldHVybiBpby5UZXh0SU9XcmFwcGVyKGJpbmFyeV9maWxlLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBiaW5hcnlfZmlsZQorCisKK2RlZiBjb21wcmVzcyhkYXRhLCBjb21wcmVzc2xldmVsPTkpOgorICAgICIiIkNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIGNvbXByZXNzbGV2ZWwsIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS4KKworICAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGEgQloyQ29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICAiIiIKKyAgICBjb21wID0gQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsKQorICAgIHJldHVybiBjb21wLmNvbXByZXNzKGRhdGEpICsgY29tcC5mbHVzaCgpCisKKworZGVmIGRlY29tcHJlc3MoZGF0YSk6CisgICAgIiIiRGVjb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBGb3IgaW5jcmVtZW50YWwgZGVjb21wcmVzc2lvbiwgdXNlIGEgQloyRGVjb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIGlmIGxlbihkYXRhKSA9PSAwOgorICAgICAgICByZXR1cm4gYiIiCisKKyAgICByZXN1bHRzID0gW10KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBkZWNvbXAgPSBCWjJEZWNvbXByZXNzb3IoKQorICAgICAgICByZXN1bHRzLmFwcGVuZChkZWNvbXAuZGVjb21wcmVzcyhkYXRhKSkKKyAgICAgICAgaWYgbm90IGRlY29tcC5lb2Y6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb21wcmVzc2VkIGRhdGEgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisgICAgICAgIGlmIG5vdCBkZWNvbXAudW51c2VkX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4ocmVzdWx0cykKKyAgICAgICAgIyBUaGVyZSBpcyB1bnVzZWQgZGF0YSBsZWZ0IG92ZXIuIFByb2NlZWQgdG8gbmV4dCBzdHJlYW0uCisgICAgICAgIGRhdGEgPSBkZWNvbXAudW51c2VkX2RhdGEKZGlmZiAtLWdpdCBhL0xpYi9jZ2kucHkgYi9MaWIvY2dpLnB5CmluZGV4IDkwYTMzNDUuLmU5NjRmMGMgMTAwNzU1Ci0tLSBhL0xpYi9jZ2kucHkKKysrIGIvTGliL2NnaS5weQpAQCAtNzYsNyArNzYsNyBAQAogICAgIHNlbmQgYW4gZXJyb3IgbWVzc2FnZSkuCiAKICAgICAiIiIKLSAgICBnbG9iYWwgbG9nZnAsIGxvZworICAgIGdsb2JhbCBsb2csIGxvZ2ZpbGUsIGxvZ2ZwCiAgICAgaWYgbG9nZmlsZSBhbmQgbm90IGxvZ2ZwOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2dmcCA9IG9wZW4obG9nZmlsZSwgImEiKQpAQCAtOTYsNiArOTYsMTUgQEAKICAgICAiIiJEdW1teSBmdW5jdGlvbiwgYXNzaWduZWQgdG8gbG9nIHdoZW4gbG9nZ2luZyBpcyBkaXNhYmxlZC4iIiIKICAgICBwYXNzCiAKK2RlZiBjbG9zZWxvZygpOgorICAgICIiIkNsb3NlIHRoZSBsb2cgZmlsZS4iIiIKKyAgICBnbG9iYWwgbG9nLCBsb2dmaWxlLCBsb2dmcAorICAgIGxvZ2ZpbGUgPSAnJworICAgIGlmIGxvZ2ZwOgorICAgICAgICBsb2dmcC5jbG9zZSgpCisgICAgICAgIGxvZ2ZwID0gTm9uZQorICAgIGxvZyA9IGluaXRsb2cKKwogbG9nID0gaW5pdGxvZyAgICAgICAgICAgIyBUaGUgY3VycmVudCBsb2dnaW5nIGZ1bmN0aW9uCiAKIApAQCAtMTAwMyw3ICsxMDEyLDcgQEAKIGRlZiBlc2NhcGUocywgcXVvdGU9Tm9uZSk6CiAgICAgIiIiRGVwcmVjYXRlZCBBUEkuIiIiCiAgICAgd2FybigiY2dpLmVzY2FwZSBpcyBkZXByZWNhdGVkLCB1c2UgaHRtbC5lc2NhcGUgaW5zdGVhZCIsCi0gICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBzID0gcy5yZXBsYWNlKCImIiwgIiZhbXA7IikgIyBNdXN0IGJlIGRvbmUgZmlyc3QhCiAgICAgcyA9IHMucmVwbGFjZSgiPCIsICImbHQ7IikKICAgICBzID0gcy5yZXBsYWNlKCI+IiwgIiZndDsiKQpkaWZmIC0tZ2l0IGEvTGliL2NnaXRiLnB5IGIvTGliL2NnaXRiLnB5CmluZGV4IDZkYTQwZTguLjZlYjUyZTcgMTAwNjQ0Ci0tLSBhL0xpYi9jZ2l0Yi5weQorKysgYi9MaWIvY2dpdGIucHkKQEAgLTMxLDcgKzMxLDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdG9rZW5pemUKIGltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB0eXBlcwogCiBkZWYgcmVzZXQoKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgdGhhdCByZXNldHMgdGhlIENHSSBhbmQgYnJvd3NlciB0byBhIGtub3duIHN0YXRlLiIiIgpkaWZmIC0tZ2l0IGEvTGliL2NvZGUucHkgYi9MaWIvY29kZS5weQppbmRleCA2MDVhZWRlLi45MDIwYWFiIDEwMDY0NAotLS0gYS9MaWIvY29kZS5weQorKysgYi9MaWIvY29kZS5weQpAQCAtMTA1LDkgKzEwNSwxMCBAQAogICAgICAgICBUaGUgb3V0cHV0IGlzIHdyaXR0ZW4gYnkgc2VsZi53cml0ZSgpLCBiZWxvdy4KIAogICAgICAgICAiIiIKLSAgICAgICAgdHlwZSwgdmFsdWUsIHN5cy5sYXN0X3RyYWNlYmFjayA9IHN5cy5leGNfaW5mbygpCisgICAgICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXBlCiAgICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsdWUKKyAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gdGIKICAgICAgICAgaWYgZmlsZW5hbWUgYW5kIHR5cGUgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIFdvcmsgaGFyZCB0byBzdHVmZiB0aGUgY29ycmVjdCBmaWxlbmFtZSBpbiB0aGUgZXhjZXB0aW9uCiAgICAgICAgICAgICB0cnk6CkBAIC0xMTksOCArMTIwLDEzIEBACiAgICAgICAgICAgICAgICAgIyBTdHVmZiBpbiB0aGUgcmlnaHQgZmlsZW5hbWUKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFN5bnRheEVycm9yKG1zZywgKGZpbGVuYW1lLCBsaW5lbm8sIG9mZnNldCwgbGluZSkpCiAgICAgICAgICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgICAgICBsaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSwgdmFsdWUpCi0gICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKKyAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXBlLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIElmIHNvbWVvbmUgaGFzIHNldCBzeXMuZXhjZXB0aG9vaywgd2UgbGV0IHRoYXQgdGFrZSBwcmVjZWRlbmNlCisgICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQorICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2sodHlwZSwgdmFsdWUsIHRiKQogCiAgICAgZGVmIHNob3d0cmFjZWJhY2soc2VsZik6CiAgICAgICAgICIiIkRpc3BsYXkgdGhlIGV4Y2VwdGlvbiB0aGF0IGp1c3Qgb2NjdXJyZWQuCkBAIC0xNDMsNyArMTQ5LDEyIEBACiAgICAgICAgICAgICBsaW5lcy5leHRlbmQodHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXBlLCB2YWx1ZSkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0Ymxpc3QgPSB0YiA9IE5vbmUKLSAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgc29tZW9uZSBoYXMgc2V0IHN5cy5leGNlcHRob29rLCB3ZSBsZXQgdGhhdCB0YWtlIHByZWNlZGVuY2UKKyAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICBzeXMuZXhjZXB0aG9vayh0eXBlLCB2YWx1ZSwgdGIpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgICIiIldyaXRlIGEgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvTGliL2NvZGVjcy5weSBiL0xpYi9jb2RlY3MucHkKaW5kZXggYjE1MGQ2NC4uNDhkNGM5YyAxMDA2NDQKLS0tIGEvTGliL2NvZGVjcy5weQorKysgYi9MaWIvY29kZWNzLnB5CkBAIC00NjEsNyArNDYxLDcgQEAKIAogICAgICAgICAjIHJlYWQgdW50aWwgd2UgZ2V0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoaWYgYXZhaWxhYmxlKQogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyBjYW4gdGhlIHJlcXVlc3QgY2FuIGJlIHNhdGlzZmllZCBmcm9tIHRoZSBjaGFyYWN0ZXIgYnVmZmVyPworICAgICAgICAgICAgIyBjYW4gdGhlIHJlcXVlc3QgYmUgc2F0aXNmaWVkIGZyb20gdGhlIGNoYXJhY3RlciBidWZmZXI/CiAgICAgICAgICAgICBpZiBjaGFycyA8IDA6CiAgICAgICAgICAgICAgICAgaWYgc2l6ZSA8IDA6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY2hhcmJ1ZmZlcjoKQEAgLTQ4NCw3ICs0ODQsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZpcnN0bGluZToKICAgICAgICAgICAgICAgICAgICAgbmV3Y2hhcnMsIGRlY29kZWRieXRlcyA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlKGRhdGFbOmV4Yy5zdGFydF0sIHNlbGYuZXJyb3JzKQotICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IG5ld2NoYXJzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBuZXdjaGFycy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lcyk8PTE6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC01MjYsNyArNTI2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLmxpbmVidWZmZXJbMF0KICAgICAgICAgICAgICAgICBzZWxmLmxpbmVidWZmZXIgPSBOb25lCiAgICAgICAgICAgICBpZiBub3Qga2VlcGVuZHM6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgcmV0dXJuIGxpbmUKIAogICAgICAgICByZWFkc2l6ZSA9IHNpemUgb3IgNzIKQEAgLTU0Myw3ICs1NDMsNyBAQAogICAgICAgICAgICAgICAgICAgICBkYXRhICs9IHNlbGYucmVhZChzaXplPTEsIGNoYXJzPTEpCiAKICAgICAgICAgICAgIGxpbmUgKz0gZGF0YQotICAgICAgICAgICAgbGluZXMgPSBsaW5lLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIGxpbmVzID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICBpZiBsaW5lczoKICAgICAgICAgICAgICAgICBpZiBsZW4obGluZXMpID4gMToKICAgICAgICAgICAgICAgICAgICAgIyBNb3JlIHRoYW4gb25lIGxpbmUgcmVzdWx0OyB0aGUgZmlyc3QgbGluZSBpcyBhIGZ1bGwgbGluZQpAQCAtNTU5LDEwICs1NTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBvbmUgcmVtYWluaW5nIGxpbmUsIHB1dCBpdCBiYWNrIGludG8gY2hhcmJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gbGluZXNbMF0gKyBzZWxmLmNoYXJidWZmZXIKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGtlZXBlbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgbGluZTB3aXRoZW5kID0gbGluZXNbMF0KLSAgICAgICAgICAgICAgICBsaW5lMHdpdGhvdXRlbmQgPSBsaW5lc1swXS5zcGxpdGxpbmVzKEZhbHNlKVswXQorICAgICAgICAgICAgICAgIGxpbmUwd2l0aG91dGVuZCA9IGxpbmVzWzBdLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgaWYgbGluZTB3aXRoZW5kICE9IGxpbmUwd2l0aG91dGVuZDogIyBXZSByZWFsbHkgaGF2ZSBhIGxpbmUgZW5kCiAgICAgICAgICAgICAgICAgICAgICMgUHV0IHRoZSByZXN0IGJhY2sgdG9nZXRoZXIgYW5kIGtlZXAgaXQgdW50aWwgdGhlIG5leHQgY2FsbAogICAgICAgICAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLl9lbXB0eV9jaGFyYnVmZmVyLmpvaW4obGluZXNbMTpdKSArIFwKQEAgLTU3NSw3ICs1NzUsNyBAQAogICAgICAgICAgICAgIyB3ZSBkaWRuJ3QgZ2V0IGFueXRoaW5nIG9yIHRoaXMgd2FzIG91ciBvbmx5IHRyeQogICAgICAgICAgICAgaWYgbm90IGRhdGEgb3Igc2l6ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3Qga2VlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIHJlYWRzaXplIDwgODAwMDoKICAgICAgICAgICAgICAgICByZWFkc2l6ZSAqPSAyCkBAIC04MDMsNyArODAzLDcgQEAKIAogICAgICAgICBkYXRhID0gc2VsZi5yZWFkZXIucmVhZCgpCiAgICAgICAgIGRhdGEsIGJ5dGVzZW5jb2RlZCA9IHNlbGYuZW5jb2RlKGRhdGEsIHNlbGYuZXJyb3JzKQotICAgICAgICByZXR1cm4gZGF0YS5zcGxpdGxpbmVzKDEpCisgICAgICAgIHJldHVybiBkYXRhLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKIAogICAgIGRlZiBfX25leHRfXyhzZWxmKToKIApAQCAtMTA0MiwxMCArMTA0Miw3IEBACiAgICAgICAgIG1hcHBlZCB0byB0aGVtc2VsdmVzLgogCiAgICAgIiIiCi0gICAgcmVzID0ge30KLSAgICBmb3IgaSBpbiBybmc6Ci0gICAgICAgIHJlc1tpXT1pCi0gICAgcmV0dXJuIHJlcworICAgIHJldHVybiB7aTppIGZvciBpIGluIHJuZ30KIAogZGVmIG1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCk6CiAKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvY29sbGVjdGlvbnMucHkKcmVuYW1lIHRvIExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBlYjIwMjQzLi5lNWY5NTk5IDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0xLDEzICsxLDE0IEBACiBfX2FsbF9fID0gWydkZXF1ZScsICdkZWZhdWx0ZGljdCcsICduYW1lZHR1cGxlJywgJ1VzZXJEaWN0JywgJ1VzZXJMaXN0JywKLSAgICAgICAgICAgICdVc2VyU3RyaW5nJywgJ0NvdW50ZXInLCAnT3JkZXJlZERpY3QnXQotIyBGb3IgYm9vdHN0cmFwcGluZyByZWFzb25zLCB0aGUgY29sbGVjdGlvbiBBQkNzIGFyZSBkZWZpbmVkIGluIF9hYmNvbGwucHkuCi0jIFRoZXkgc2hvdWxkIGhvd2V2ZXIgYmUgY29uc2lkZXJlZCBhbiBpbnRlZ3JhbCBwYXJ0IG9mIGNvbGxlY3Rpb25zLnB5LgotZnJvbSBfYWJjb2xsIGltcG9ydCAqCi1pbXBvcnQgX2FiY29sbAotX19hbGxfXyArPSBfYWJjb2xsLl9fYWxsX18KKyAgICAgICAgICAgICdVc2VyU3RyaW5nJywgJ0NvdW50ZXInLCAnT3JkZXJlZERpY3QnLCAnQ2hhaW5NYXAnXQorCisjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgY29udGludWUgdG8gbWFrZSB0aGUgY29sbGVjdGlvbnMgQUJDcworIyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgY29sbGVjdGlvbnMgbW9kdWxlLgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0ICoKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK19fYWxsX18gKz0gY29sbGVjdGlvbnMuYWJjLl9fYWxsX18KIAogZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBkZWZhdWx0ZGljdAotZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlcgorZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlciwgZXEgYXMgX2VxCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBoZWFwcSBhcyBfaGVhcHEKQEAgLTIyOCw3ICsyMjksNyBAQAogICAgICAgICAnJycKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgT3JkZXJlZERpY3QpOgogICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmKT09bGVuKG90aGVyKSBhbmQgXAotICAgICAgICAgICAgICAgICAgIGFsbChwPT1xIGZvciBwLCBxIGluIHppcChzZWxmLml0ZW1zKCksIG90aGVyLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICAgIGFsbChtYXAoX2VxLCBzZWxmLml0ZW1zKCksIG90aGVyLml0ZW1zKCkpKQogICAgICAgICByZXR1cm4gZGljdC5fX2VxX18oc2VsZiwgb3RoZXIpCiAKIApAQCAtMzE0LDEwICszMTUsMTAgQEAKIAogICAgICIiIgogCi0gICAgIyBQYXJzZSBhbmQgdmFsaWRhdGUgdGhlIGZpZWxkIG5hbWVzLiAgVmFsaWRhdGlvbiBzZXJ2ZXMgdHdvIHB1cnBvc2VzLAotICAgICMgZ2VuZXJhdGluZyBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyBhbmQgcHJldmVudGluZyB0ZW1wbGF0ZSBpbmplY3Rpb24gYXR0YWNrcy4KKyAgICAjIFZhbGlkYXRlIHRoZSBmaWVsZCBuYW1lcy4gIEF0IHRoZSB1c2VyJ3Mgb3B0aW9uLCBlaXRoZXIgZ2VuZXJhdGUgYW4gZXJyb3IKKyAgICAjIG1lc3NhZ2Ugb3IgYXV0b21hdGljYWxseSByZXBsYWNlIHRoZSBmaWVsZCBuYW1lIHdpdGggYSB2YWxpZCBuYW1lLgogICAgIGlmIGlzaW5zdGFuY2UoZmllbGRfbmFtZXMsIHN0cik6Ci0gICAgICAgIGZpZWxkX25hbWVzID0gZmllbGRfbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKSAjIG5hbWVzIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIGFuZC9vciBjb21tYXMKKyAgICAgICAgZmllbGRfbmFtZXMgPSBmaWVsZF9uYW1lcy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAgICAgZmllbGRfbmFtZXMgPSBsaXN0KG1hcChzdHIsIGZpZWxkX25hbWVzKSkKICAgICBpZiByZW5hbWU6CiAgICAgICAgIHNlZW4gPSBzZXQoKQpAQCAtMzMyLDE1ICszMzMsMTkgQEAKICAgICAgICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgZm9yIG5hbWUgaW4gW3R5cGVuYW1lXSArIGZpZWxkX25hbWVzOgogICAgICAgICBpZiBub3QgYWxsKGMuaXNhbG51bSgpIG9yIGM9PSdfJyBmb3IgYyBpbiBuYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2FuIG9ubHkgY29udGFpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdW5kZXJzY29yZXM6ICVyJyAlIG5hbWUpCiAgICAgICAgIGlmIF9pc2tleXdvcmQobmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3QgYmUgYSBrZXl3b3JkOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2Fubm90IGJlIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2V5d29yZDogJXInICUgbmFtZSkKICAgICAgICAgaWYgbmFtZVswXS5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhIG51bWJlcjogJXInICUgbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EgbnVtYmVyOiAlcicgJSBuYW1lKQogICAgIHNlZW4gPSBzZXQoKQogICAgIGZvciBuYW1lIGluIGZpZWxkX25hbWVzOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKSBhbmQgbm90IHJlbmFtZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmU6ICVyJyAlIG5hbWUpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcicgJSBuYW1lKQogICAgICAgICBpZiBuYW1lIGluIHNlZW46CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbmNvdW50ZXJlZCBkdXBsaWNhdGUgZmllbGQgbmFtZTogJXInICUgbmFtZSkKICAgICAgICAgc2Vlbi5hZGQobmFtZSkKQEAgLTM1MSwyMSArMzU2LDIzIEBACiAgICAgICAgIGZpZWxkX25hbWVzID0gdHVwbGUoZmllbGRfbmFtZXMpLAogICAgICAgICBudW1fZmllbGRzID0gbGVuKGZpZWxkX25hbWVzKSwKICAgICAgICAgYXJnX2xpc3QgPSByZXByKHR1cGxlKGZpZWxkX25hbWVzKSkucmVwbGFjZSgiJyIsICIiKVsxOi0xXSwKLSAgICAgICAgcmVwcl9mbXQgPSAnLCAnLmpvaW4oX3JlcHJfdGVtcGxhdGUuZm9ybWF0KG5hbWU9bmFtZSkgZm9yIG5hbWUgaW4gZmllbGRfbmFtZXMpLAorICAgICAgICByZXByX2ZtdCA9ICcsICcuam9pbihfcmVwcl90ZW1wbGF0ZS5mb3JtYXQobmFtZT1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWVsZF9uYW1lcyksCiAgICAgICAgIGZpZWxkX2RlZnMgPSAnXG4nLmpvaW4oX2ZpZWxkX3RlbXBsYXRlLmZvcm1hdChpbmRleD1pbmRleCwgbmFtZT1uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUoZmllbGRfbmFtZXMpKQogICAgICkKIAotICAgICMgRXhlY3V0ZSB0aGUgdGVtcGxhdGUgc3RyaW5nIGluIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBhbmQKLSAgICAjIHN1cHBvcnQgdHJhY2luZyB1dGlsaXRpZXMgYnkgc2V0dGluZyBhIHZhbHVlIGZvciBmcmFtZS5mX2dsb2JhbHNbJ19fbmFtZV9fJ10KKyAgICAjIEV4ZWN1dGUgdGhlIHRlbXBsYXRlIHN0cmluZyBpbiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgYW5kIHN1cHBvcnQKKyAgICAjIHRyYWNpbmcgdXRpbGl0aWVzIGJ5IHNldHRpbmcgYSB2YWx1ZSBmb3IgZnJhbWUuZl9nbG9iYWxzWydfX25hbWVfXyddCiAgICAgbmFtZXNwYWNlID0gZGljdChfX25hbWVfXz0nbmFtZWR0dXBsZV8lcycgJSB0eXBlbmFtZSkKICAgICB0cnk6CiAgICAgICAgIGV4ZWMoY2xhc3NfZGVmaW5pdGlvbiwgbmFtZXNwYWNlKQogICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlOgogICAgICAgICByYWlzZSBTeW50YXhFcnJvcihlLm1zZyArICc6XG5cbicgKyBjbGFzc19kZWZpbml0aW9uKQogICAgIHJlc3VsdCA9IG5hbWVzcGFjZVt0eXBlbmFtZV0KKyAgICByZXN1bHQuX3NvdXJjZSA9IGNsYXNzX2RlZmluaXRpb24KICAgICBpZiB2ZXJib3NlOgotICAgICAgICBwcmludChjbGFzc19kZWZpbml0aW9uKQorICAgICAgICBwcmludChyZXN1bHQuX3NvdXJjZSkKIAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9tZW50cyB3aGVyZQpAQCAtNjc0LDEyICs2ODEsODYgQEAKICAgICAgICAgICAgICAgICByZXN1bHRbZWxlbV0gPSBuZXdjb3VudAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgX19wb3NfXyhzZWxmKToKKyAgICAgICAgJ0FkZHMgYW4gZW1wdHkgY291bnRlciwgZWZmZWN0aXZlbHkgc3RyaXBwaW5nIG5lZ2F0aXZlIGFuZCB6ZXJvIGNvdW50cycKKyAgICAgICAgcmV0dXJuIHNlbGYgKyBDb3VudGVyKCkKKworICAgIGRlZiBfX25lZ19fKHNlbGYpOgorICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKKyAgICAgICAgYW5kIGZsaXBzIHRoZSBzaWduIG9uIG5lZ2F0aXZlIGNvdW50cy4KKworICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIENvdW50ZXIoKSAtIHNlbGYKKworICAgIGRlZiBfa2VlcF9wb3NpdGl2ZShzZWxmKToKKyAgICAgICAgJycnSW50ZXJuYWwgbWV0aG9kIHRvIHN0cmlwIGVsZW1lbnRzIHdpdGggYSBuZWdhdGl2ZSBvciB6ZXJvIGNvdW50JycnCisgICAgICAgIG5vbnBvc2l0aXZlID0gW2VsZW0gZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKSBpZiBub3QgY291bnQgPiAwXQorICAgICAgICBmb3IgZWxlbSBpbiBub25wb3NpdGl2ZToKKyAgICAgICAgICAgIGRlbCBzZWxmW2VsZW1dCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19pYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIGFkZCBmcm9tIGFub3RoZXIgY291bnRlciwga2VlcGluZyBvbmx5IHBvc2l0aXZlIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQorICAgICAgICA+Pj4gYyArPSBDb3VudGVyKCdiY2MnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDQsICdjJzogMiwgJ2EnOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW2VsZW1dICs9IGNvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKworICAgIGRlZiBfX2lzdWJfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICcnJ0lucGxhY2Ugc3VidHJhY3QgY291bnRlciwgYnV0IGtlZXAgb25seSByZXN1bHRzIHdpdGggcG9zaXRpdmUgY291bnRzLgorCisgICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYmMnKQorICAgICAgICA+Pj4gYyAtPSBDb3VudGVyKCdiY2NkJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAyLCAnYSc6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGZbZWxlbV0gLT0gY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCisgICAgZGVmIF9faW9yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIHVuaW9uIGlzIHRoZSBtYXhpbXVtIG9mIHZhbHVlIGZyb20gZWl0aGVyIGNvdW50ZXIuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKKyAgICAgICAgPj4+IGMgfD0gQ291bnRlcignYmNjJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAzLCAnYyc6IDIsICdhJzogMX0pCisKKyAgICAgICAgJycnCisgICAgICAgIGZvciBlbGVtLCBvdGhlcl9jb3VudCBpbiBvdGhlci5pdGVtcygpOgorICAgICAgICAgICAgY291bnQgPSBzZWxmW2VsZW1dCisgICAgICAgICAgICBpZiBvdGhlcl9jb3VudCA+IGNvdW50OgorICAgICAgICAgICAgICAgIHNlbGZbZWxlbV0gPSBvdGhlcl9jb3VudAorICAgICAgICByZXR1cm4gc2VsZi5fa2VlcF9wb3NpdGl2ZSgpCisKKyAgICBkZWYgX19pYW5kX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIGludGVyc2VjdGlvbiBpcyB0aGUgbWluaW11bSBvZiBjb3JyZXNwb25kaW5nIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQorICAgICAgICA+Pj4gYyAmPSBDb3VudGVyKCdiY2MnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgb3RoZXJfY291bnQgPSBvdGhlcltlbGVtXQorICAgICAgICAgICAgaWYgb3RoZXJfY291bnQgPCBjb3VudDoKKyAgICAgICAgICAgICAgICBzZWxmW2VsZW1dID0gb3RoZXJfY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIpCisjIyMgIENoYWluTWFwIChoZWxwZXIgZm9yIGNvbmZpZ3BhcnNlciBhbmQgc3RyaW5nLlRlbXBsYXRlKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWNsYXNzIF9DaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CitjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CiAgICAgJycnIEEgQ2hhaW5NYXAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIChvciBvdGhlciBtYXBwaW5ncykgdG9nZXRoZXIKICAgICB0byBjcmVhdGUgYSBzaW5nbGUsIHVwZGF0ZWFibGUgdmlldy4KIApAQCAtODkwLDYgKzk3MSw4IEBACiAgICAgZGVmIGluc2VydChzZWxmLCBpLCBpdGVtKTogc2VsZi5kYXRhLmluc2VydChpLCBpdGVtKQogICAgIGRlZiBwb3Aoc2VsZiwgaT0tMSk6IHJldHVybiBzZWxmLmRhdGEucG9wKGkpCiAgICAgZGVmIHJlbW92ZShzZWxmLCBpdGVtKTogc2VsZi5kYXRhLnJlbW92ZShpdGVtKQorICAgIGRlZiBjbGVhcihzZWxmKTogc2VsZi5kYXRhLmNsZWFyKCkKKyAgICBkZWYgY29weShzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYpCiAgICAgZGVmIGNvdW50KHNlbGYsIGl0ZW0pOiByZXR1cm4gc2VsZi5kYXRhLmNvdW50KGl0ZW0pCiAgICAgZGVmIGluZGV4KHNlbGYsIGl0ZW0sICphcmdzKTogcmV0dXJuIHNlbGYuZGF0YS5pbmRleChpdGVtLCAqYXJncykKICAgICBkZWYgcmV2ZXJzZShzZWxmKTogc2VsZi5kYXRhLnJldmVyc2UoKQpAQCAtMTAzNCw3ICsxMTE3LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5zcGxpdChzZXAsIG1heHNwbGl0KQogICAgIGRlZiByc3BsaXQoc2VsZiwgc2VwPU5vbmUsIG1heHNwbGl0PS0xKToKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5yc3BsaXQoc2VwLCBtYXhzcGxpdCkKLSAgICBkZWYgc3BsaXRsaW5lcyhzZWxmLCBrZWVwZW5kcz0wKTogcmV0dXJuIHNlbGYuZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzKQorICAgIGRlZiBzcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzPUZhbHNlKTogcmV0dXJuIHNlbGYuZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzKQogICAgIGRlZiBzdGFydHN3aXRoKHNlbGYsIHByZWZpeCwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuc3RhcnRzd2l0aChwcmVmaXgsIHN0YXJ0LCBlbmQpCiAgICAgZGVmIHN0cmlwKHNlbGYsIGNoYXJzPU5vbmUpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnN0cmlwKGNoYXJzKSkKQEAgLTEwNDQsNDQgKzExMjcsMyBAQAogICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnRyYW5zbGF0ZSgqYXJncykpCiAgICAgZGVmIHVwcGVyKHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnVwcGVyKCkpCiAgICAgZGVmIHpmaWxsKHNlbGYsIHdpZHRoKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS56ZmlsbCh3aWR0aCkpCi0KLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIFNpbXBsZSB0ZXN0cwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAjIHZlcmlmeSB0aGF0IGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZAotICAgIGZyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKLSAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotICAgIHAgPSBQb2ludCh4PTEwLCB5PTIwKQotICAgIGFzc2VydCBwID09IGxvYWRzKGR1bXBzKHApKQotCi0gICAgIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLSAgICBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgICAgIF9fc2xvdHNfXyA9ICgpCi0gICAgICAgIEBwcm9wZXJ0eQotICAgICAgICBkZWYgaHlwb3Qoc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQotICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKLQotICAgIGZvciBwIGluIFBvaW50KDMsIDQpLCBQb2ludCgxNCwgNS83Lik6Ci0gICAgICAgIHByaW50IChwKQotCi0gICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICAnUG9pbnQgY2xhc3Mgd2l0aCBvcHRpbWl6ZWQgX21ha2UoKSBhbmQgX3JlcGxhY2UoKSB3aXRob3V0IGVycm9yLWNoZWNraW5nJwotICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgICAgICBfbWFrZSA9IGNsYXNzbWV0aG9kKHR1cGxlLl9fbmV3X18pCi0gICAgICAgIGRlZiBfcmVwbGFjZShzZWxmLCBfbWFwPW1hcCwgKiprd2RzKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi0gICAgcHJpbnQoUG9pbnQoMTEsIDIyKS5fcmVwbGFjZSh4PTEwMCkpCi0KLSAgICBQb2ludDNEID0gbmFtZWR0dXBsZSgnUG9pbnQzRCcsIFBvaW50Ll9maWVsZHMgKyAoJ3onLCkpCi0gICAgcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi0gICAgaW1wb3J0IGRvY3Rlc3QKLSAgICBUZXN0UmVzdWx0cyA9IG5hbWVkdHVwbGUoJ1Rlc3RSZXN1bHRzJywgJ2ZhaWxlZCBhdHRlbXB0ZWQnKQotICAgIHByaW50KFRlc3RSZXN1bHRzKCpkb2N0ZXN0LnRlc3Rtb2QoKSkpCmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzZTM4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weQpAQCAtMCwwICsxLDM4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIFNpbXBsZSB0ZXN0cworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyB2ZXJpZnkgdGhhdCBpbnN0YW5jZXMgY2FuIGJlIHBpY2tsZWQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKK1BvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCwgeScsIFRydWUpCitwID0gUG9pbnQoeD0xMCwgeT0yMCkKK2Fzc2VydCBwID09IGxvYWRzKGR1bXBzKHApKQorCisjIHRlc3QgYW5kIGRlbW9uc3RyYXRlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgbWV0aG9kcworY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgorICAgIF9fc2xvdHNfXyA9ICgpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGh5cG90KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCisKK2ZvciBwIGluIFBvaW50KDMsIDQpLCBQb2ludCgxNCwgNS83Lik6CisgICAgcHJpbnQgKHApCisKK2NsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKKyAgICAnUG9pbnQgY2xhc3Mgd2l0aCBvcHRpbWl6ZWQgX21ha2UoKSBhbmQgX3JlcGxhY2UoKSB3aXRob3V0IGVycm9yLWNoZWNraW5nJworICAgIF9fc2xvdHNfXyA9ICgpCisgICAgX21ha2UgPSBjbGFzc21ldGhvZCh0dXBsZS5fX25ld19fKQorICAgIGRlZiBfcmVwbGFjZShzZWxmLCBfbWFwPW1hcCwgKiprd2RzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21ha2UoX21hcChrd2RzLmdldCwgKCd4JywgJ3knKSwgc2VsZikpCisKK3ByaW50KFBvaW50KDExLCAyMikuX3JlcGxhY2UoeD0xMDApKQorCitQb2ludDNEID0gbmFtZWR0dXBsZSgnUG9pbnQzRCcsIFBvaW50Ll9maWVsZHMgKyAoJ3onLCkpCitwcmludChQb2ludDNELl9fZG9jX18pCisKK2ltcG9ydCBkb2N0ZXN0LCBjb2xsZWN0aW9ucworVGVzdFJlc3VsdHMgPSBuYW1lZHR1cGxlKCdUZXN0UmVzdWx0cycsICdmYWlsZWQgYXR0ZW1wdGVkJykKK3ByaW50KFRlc3RSZXN1bHRzKCpkb2N0ZXN0LnRlc3Rtb2QoY29sbGVjdGlvbnMpKSkKZGlmZiAtLWdpdCBhL0xpYi9fYWJjb2xsLnB5IGIvTGliL2NvbGxlY3Rpb25zL2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvX2FiY29sbC5weQpyZW5hbWUgdG8gTGliL2NvbGxlY3Rpb25zL2FiYy5weQppbmRleCAyNDE3ZDE4Li5kMTdjZmRjIDEwMDY0NAotLS0gYS9MaWIvX2FiY29sbC5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvYWJjLnB5CkBAIC0zLDkgKzMsNyBAQAogCiAiIiJBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGZvciBjb2xsZWN0aW9ucywgYWNjb3JkaW5nIHRvIFBFUCAzMTE5LgogCi1ET04nVCBVU0UgVEhJUyBNT0RVTEUgRElSRUNUTFkhICBUaGUgY2xhc3NlcyBoZXJlIHNob3VsZCBiZSBpbXBvcnRlZAotdmlhIGNvbGxlY3Rpb25zOyB0aGV5IGFyZSBkZWZpbmVkIGhlcmUgb25seSB0byBhbGxldmlhdGUgY2VydGFpbgotYm9vdHN0cmFwcGluZyBpc3N1ZXMuICBVbml0IHRlc3RzIGFyZSBpbiB0ZXN0X2NvbGxlY3Rpb25zLgorVW5pdCB0ZXN0cyBhcmUgaW4gdGVzdF9jb2xsZWN0aW9ucy4KICIiIgogCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKQEAgLTIwLDkgKzE4LDEzIEBACiAgICAgICAgICAgICJCeXRlU3RyaW5nIiwKICAgICAgICAgICAgXQogCi0KLSMjIyBjb2xsZWN0aW9uIHJlbGF0ZWQgdHlwZXMgd2hpY2ggYXJlIG5vdCBleHBvc2VkIHRocm91Z2ggYnVpbHRpbiAjIyMKLSMjIGl0ZXJhdG9ycyAjIworIyBQcml2YXRlIGxpc3Qgb2YgdHlwZXMgdGhhdCB3ZSB3YW50IHRvIHJlZ2lzdGVyIHdpdGggdGhlIHZhcmlvdXMgQUJDcworIyBzbyB0aGF0IHRoZXkgd2lsbCBwYXNzIHRlc3RzIGxpa2U6CisjICAgICAgIGl0ID0gaXRlcihzb21lYnl0ZWFycmF5KQorIyAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgSXRlcmFibGUpCisjIE5vdGU6ICBpbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMsIHRoZXNlIHR5cGVzIG1hbnkgbm90IGJlIGRpc3RpbmN0CisjIGFuZCB0aGV5IG1ha2UgaGF2ZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHlwZXMgdGhhdAorIyBhcmUgbm90IGluY2x1ZGVkIG9uIHRoaXMgbGlzdC4KIGJ5dGVzX2l0ZXJhdG9yID0gdHlwZShpdGVyKGInJykpCiBieXRlYXJyYXlfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoYnl0ZWFycmF5KCkpKQogI2NhbGxhYmxlX2l0ZXJhdG9yID0gPz8/CkBAIC00MSwxMyArNDMsMTUgQEAKIGRpY3RfdmFsdWVzID0gdHlwZSh7fS52YWx1ZXMoKSkKIGRpY3RfaXRlbXMgPSB0eXBlKHt9Lml0ZW1zKCkpCiAjIyBtaXNjICMjCi1kaWN0X3Byb3h5ID0gdHlwZSh0eXBlLl9fZGljdF9fKQorbWFwcGluZ3Byb3h5ID0gdHlwZSh0eXBlLl9fZGljdF9fKQogCiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwogCiBjbGFzcyBIYXNoYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gMApAQCAtNjUsNiArNjksOCBAQAogCiBjbGFzcyBJdGVyYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICB3aGlsZSBGYWxzZToKQEAgLTgwLDYgKzg2LDggQEAKIAogY2xhc3MgSXRlcmF0b3IoSXRlcmFibGUpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX25leHRfXyhzZWxmKToKICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgpAQCAtMTExLDYgKzExOSw4IEBACiAKIGNsYXNzIFNpemVkKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAgcmV0dXJuIDAKQEAgLTEyNSw2ICsxMzUsOCBAQAogCiBjbGFzcyBDb250YWluZXIobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTM5LDYgKzE1MSw4IEBACiAKIGNsYXNzIENhbGxhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTY2LDYgKzE4MCw4IEBACiAgICAgdGhlbiB0aGUgb3RoZXIgb3BlcmF0aW9ucyB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93IHN1aXQuCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTZXQpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCkBAIC0yNzcsNiArMjkzLDggQEAKIAogY2xhc3MgTXV0YWJsZVNldChTZXQpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBhZGQoc2VsZiwgdmFsdWUpOgogICAgICAgICAiIiJBZGQgYW4gZWxlbWVudC4iIiIKQEAgLTM1MCw2ICszNjgsOCBAQAogCiBjbGFzcyBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICAgcmFpc2UgS2V5RXJyb3IKQEAgLTM4NSw2ICs0MDUsOCBAQAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQogCitNYXBwaW5nLnJlZ2lzdGVyKG1hcHBpbmdwcm94eSkKKwogCiBjbGFzcyBNYXBwaW5nVmlldyhTaXplZCk6CiAKQEAgLTQ1Myw2ICs0NzUsOCBAQAogCiBjbGFzcyBNdXRhYmxlTWFwcGluZyhNYXBwaW5nKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIEtleUVycm9yCkBAIC01MzIsNiArNTU2LDggQEAKICAgICBfX2dldGl0ZW1fXywgYW5kIF9fbGVuX18uCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgpAQCAtNTc3LDEyICs2MDMsMTYgQEAKICAgICBYWFggU2hvdWxkIGFkZCBhbGwgdGhlaXIgbWV0aG9kcy4KICAgICAiIiIKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKIEJ5dGVTdHJpbmcucmVnaXN0ZXIoYnl0ZXMpCiBCeXRlU3RyaW5nLnJlZ2lzdGVyKGJ5dGVhcnJheSkKIAogCiBjbGFzcyBNdXRhYmxlU2VxdWVuY2UoU2VxdWVuY2UpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgdmFsdWUpOgogICAgICAgICByYWlzZSBJbmRleEVycm9yCkBAIC01OTgsNiArNjI4LDEzIEBACiAgICAgZGVmIGFwcGVuZChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHNlbGYuaW5zZXJ0KGxlbihzZWxmKSwgdmFsdWUpCiAKKyAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5wb3AoKQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiByZXZlcnNlKHNlbGYpOgogICAgICAgICBuID0gbGVuKHNlbGYpCiAgICAgICAgIGZvciBpIGluIHJhbmdlKG4vLzIpOgpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKaW5kZXggOWYxMWY2OS4uMWUwOThiZSAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CkBAIC00LDcgKzQsNiBAQAogX19hdXRob3JfXyA9ICdCcmlhbiBRdWlubGFuIChicmlhbkBzd2VldGFwcC5jb20pJwogCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQpAQCAtNDcxLDggKzQ3MCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgTE9HR0VSLmNyaXRpY2FsKCdGdXR1cmUgJXMgaW4gdW5leHBlY3RlZCBzdGF0ZTogJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmLmZ1dHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnV0dXJlLl9zdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlKQogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRnV0dXJlIGluIHVuZXhwZWN0ZWQgc3RhdGUnKQogCiAgICAgZGVmIHNldF9yZXN1bHQoc2VsZiwgcmVzdWx0KToKQEAgLTUzOCwxNSArNTM3LDE5IEBACiAKICAgICAgICAgZnMgPSBbc2VsZi5zdWJtaXQoZm4sICphcmdzKSBmb3IgYXJncyBpbiB6aXAoKml0ZXJhYmxlcyldCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKLSAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoZW5kX3RpbWUgLSB0aW1lLnRpbWUoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6Ci0gICAgICAgICAgICAgICAgZnV0dXJlLmNhbmNlbCgpCisgICAgICAgICMgWWllbGQgbXVzdCBiZSBoaWRkZW4gaW4gY2xvc3VyZSBzbyB0aGF0IHRoZSBmdXR1cmVzIGFyZSBzdWJtaXR0ZWQKKyAgICAgICAgIyBiZWZvcmUgdGhlIGZpcnN0IGl0ZXJhdG9yIHZhbHVlIGlzIHJlcXVpcmVkLgorICAgICAgICBkZWYgcmVzdWx0X2l0ZXJhdG9yKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnV0dXJlLnJlc3VsdCgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KGVuZF90aW1lIC0gdGltZS50aW1lKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6CisgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS5jYW5jZWwoKQorICAgICAgICByZXR1cm4gcmVzdWx0X2l0ZXJhdG9yKCkKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCB3YWl0PVRydWUpOgogICAgICAgICAiIiJDbGVhbi11cCB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgRXhlY3V0b3IuCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKaW5kZXggZDNiYmUyYy4uMDQyMzhhNyAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQpAQCAtNDYsOSArNDYsMTIgQEAKIF9fYXV0aG9yX18gPSAnQnJpYW4gUXVpbmxhbiAoYnJpYW5Ac3dlZXRhcHAuY29tKScKIAogaW1wb3J0IGF0ZXhpdAoraW1wb3J0IG9zCiBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgX2Jhc2UKIGltcG9ydCBxdWV1ZQogaW1wb3J0IG11bHRpcHJvY2Vzc2luZworZnJvbSBtdWx0aXByb2Nlc3NpbmcucXVldWVzIGltcG9ydCBTaW1wbGVRdWV1ZSwgRnVsbAorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHdlYWtyZWYKIApAQCAtMTIxLDcgKzEyNCw3IEBACiAgICAgICAgIGNhbGxfaXRlbSA9IGNhbGxfcXVldWUuZ2V0KGJsb2NrPVRydWUpCiAgICAgICAgIGlmIGNhbGxfaXRlbSBpcyBOb25lOgogICAgICAgICAgICAgIyBXYWtlIHVwIHF1ZXVlIG1hbmFnZW1lbnQgdGhyZWFkCi0gICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KE5vbmUpCisgICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KG9zLmdldHBpZCgpKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHIgPSBjYWxsX2l0ZW0uZm4oKmNhbGxfaXRlbS5hcmdzLCAqKmNhbGxfaXRlbS5rd2FyZ3MpCkBAIC0xOTMsNDYgKzE5Niw5MiBAQAogICAgICAgICByZXN1bHRfcXVldWU6IEEgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIG9mIF9SZXN1bHRJdGVtcyBnZW5lcmF0ZWQgYnkgdGhlCiAgICAgICAgICAgICBwcm9jZXNzIHdvcmtlcnMuCiAgICAgIiIiCi0gICAgbmJfc2h1dGRvd25fcHJvY2Vzc2VzID0gMAotICAgIGRlZiBzaHV0ZG93bl9vbmVfcHJvY2VzcygpOgotICAgICAgICAiIiJUZWxsIGEgd29ya2VyIHRvIHRlcm1pbmF0ZSwgd2hpY2ggd2lsbCBpbiB0dXJuIHdha2UgdXMgYWdhaW4iIiIKLSAgICAgICAgbm9ubG9jYWwgbmJfc2h1dGRvd25fcHJvY2Vzc2VzCi0gICAgICAgIGNhbGxfcXVldWUucHV0KE5vbmUpCi0gICAgICAgIG5iX3NodXRkb3duX3Byb2Nlc3NlcyArPSAxCisgICAgZXhlY3V0b3IgPSBOb25lCisKKyAgICBkZWYgc2h1dHRpbmdfZG93bigpOgorICAgICAgICByZXR1cm4gX3NodXRkb3duIG9yIGV4ZWN1dG9yIGlzIE5vbmUgb3IgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZAorCisgICAgZGVmIHNodXRkb3duX3dvcmtlcigpOgorICAgICAgICAjIFRoaXMgaXMgYW4gdXBwZXIgYm91bmQKKyAgICAgICAgbmJfY2hpbGRyZW5fYWxpdmUgPSBzdW0ocC5pc19hbGl2ZSgpIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbmJfY2hpbGRyZW5fYWxpdmUpOgorICAgICAgICAgICAgY2FsbF9xdWV1ZS5wdXRfbm93YWl0KE5vbmUpCisgICAgICAgICMgUmVsZWFzZSB0aGUgcXVldWUncyByZXNvdXJjZXMgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICAgICAgY2FsbF9xdWV1ZS5jbG9zZSgpCisgICAgICAgICMgSWYgLmpvaW4oKSBpcyBub3QgY2FsbGVkIG9uIHRoZSBjcmVhdGVkIHByb2Nlc3NlcyB0aGVuCisgICAgICAgICMgc29tZSBtdWx0aXByb2Nlc3NpbmcuUXVldWUgbWV0aG9kcyBtYXkgZGVhZGxvY2sgb24gTWFjIE9TIFguCisgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHAuam9pbigpCisKKyAgICByZWFkZXIgPSByZXN1bHRfcXVldWUuX3JlYWRlcgorCiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgX2FkZF9jYWxsX2l0ZW1fdG9fcXVldWUocGVuZGluZ193b3JrX2l0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2lkc19xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9xdWV1ZSkKIAotICAgICAgICByZXN1bHRfaXRlbSA9IHJlc3VsdF9xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSkKLSAgICAgICAgaWYgcmVzdWx0X2l0ZW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3b3JrX2l0ZW0gPSBwZW5kaW5nX3dvcmtfaXRlbXNbcmVzdWx0X2l0ZW0ud29ya19pZF0KLSAgICAgICAgICAgIGRlbCBwZW5kaW5nX3dvcmtfaXRlbXNbcmVzdWx0X2l0ZW0ud29ya19pZF0KLQotICAgICAgICAgICAgaWYgcmVzdWx0X2l0ZW0uZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbihyZXN1bHRfaXRlbS5leGNlcHRpb24pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X3Jlc3VsdChyZXN1bHRfaXRlbS5yZXN1bHQpCisgICAgICAgIHNlbnRpbmVscyA9IFtwLnNlbnRpbmVsIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKV0KKyAgICAgICAgYXNzZXJ0IHNlbnRpbmVscworICAgICAgICByZWFkeSA9IHdhaXQoW3JlYWRlcl0gKyBzZW50aW5lbHMpCisgICAgICAgIGlmIHJlYWRlciBpbiByZWFkeToKKyAgICAgICAgICAgIHJlc3VsdF9pdGVtID0gcmVhZGVyLnJlY3YoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBNYXJrIHRoZSBwcm9jZXNzIHBvb2wgYnJva2VuIHNvIHRoYXQgc3VibWl0cyBmYWlsIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfcmVmZXJlbmNlKCkKKyAgICAgICAgICAgIGlmIGV4ZWN1dG9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGV4ZWN1dG9yLl9icm9rZW4gPSBUcnVlCisgICAgICAgICAgICAgICAgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZCA9IFRydWUKKyAgICAgICAgICAgICAgICBleGVjdXRvciA9IE5vbmUKKyAgICAgICAgICAgICMgQWxsIGZ1dHVyZXMgaW4gZmxpZ2h0IG11c3QgYmUgbWFya2VkIGZhaWxlZAorICAgICAgICAgICAgZm9yIHdvcmtfaWQsIHdvcmtfaXRlbSBpbiBwZW5kaW5nX3dvcmtfaXRlbXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9leGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgIEJyb2tlblByb2Nlc3NQb29sKAorICAgICAgICAgICAgICAgICAgICAgICAgIkEgcHJvY2VzcyBpbiB0aGUgcHJvY2VzcyBwb29sIHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGVybWluYXRlZCBhYnJ1cHRseSB3aGlsZSB0aGUgZnV0dXJlIHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAicnVubmluZyBvciBwZW5kaW5nLiIKKyAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHBlbmRpbmdfd29ya19pdGVtcy5jbGVhcigpCisgICAgICAgICAgICAjIFRlcm1pbmF0ZSByZW1haW5pbmcgd29ya2VycyBmb3JjaWJseTogdGhlIHF1ZXVlcyBvciB0aGVpcgorICAgICAgICAgICAgIyBsb2NrcyBtYXkgYmUgaW4gYSBkaXJ0eSBzdGF0ZSBhbmQgYmxvY2sgZm9yZXZlci4KKyAgICAgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBwLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0X2l0ZW0sIGludCk6CisgICAgICAgICAgICAjIENsZWFuIHNodXRkb3duIG9mIGEgd29ya2VyIHVzaW5nIGl0cyBQSUQKKyAgICAgICAgICAgICMgKGF2b2lkcyBtYXJraW5nIHRoZSBleGVjdXRvciBicm9rZW4pCisgICAgICAgICAgICBhc3NlcnQgc2h1dHRpbmdfZG93bigpCisgICAgICAgICAgICBwID0gcHJvY2Vzc2VzLnBvcChyZXN1bHRfaXRlbSkKKyAgICAgICAgICAgIHAuam9pbigpCisgICAgICAgICAgICBpZiBub3QgcHJvY2Vzc2VzOgorICAgICAgICAgICAgICAgIHNodXRkb3duX3dvcmtlcigpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsaWYgcmVzdWx0X2l0ZW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3b3JrX2l0ZW0gPSBwZW5kaW5nX3dvcmtfaXRlbXMucG9wKHJlc3VsdF9pdGVtLndvcmtfaWQsIE5vbmUpCisgICAgICAgICAgICAjIHdvcmtfaXRlbSBjYW4gYmUgTm9uZSBpZiBhbm90aGVyIHByb2Nlc3MgdGVybWluYXRlZCAoc2VlIGFib3ZlKQorICAgICAgICAgICAgaWYgd29ya19pdGVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9pdGVtLmV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKHJlc3VsdF9pdGVtLmV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9yZXN1bHQocmVzdWx0X2l0ZW0ucmVzdWx0KQogICAgICAgICAjIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIHN0YXJ0IHNodXR0aW5nIGRvd24uCiAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfcmVmZXJlbmNlKCkKICAgICAgICAgIyBObyBtb3JlIHdvcmsgaXRlbXMgY2FuIGJlIGFkZGVkIGlmOgogICAgICAgICAjICAgLSBUaGUgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93biBPUgogICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoaXMgd29ya2VyIGhhcyBiZWVuIGNvbGxlY3RlZCBPUgogICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoaXMgd29ya2VyIGhhcyBiZWVuIHNodXRkb3duLgotICAgICAgICBpZiBfc2h1dGRvd24gb3IgZXhlY3V0b3IgaXMgTm9uZSBvciBleGVjdXRvci5fc2h1dGRvd25fdGhyZWFkOgotICAgICAgICAgICAgIyBTaW5jZSBubyBuZXcgd29yayBpdGVtcyBjYW4gYmUgYWRkZWQsIGl0IGlzIHNhZmUgdG8gc2h1dGRvd24KLSAgICAgICAgICAgICMgdGhpcyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd29yayBpdGVtcy4KLSAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nX3dvcmtfaXRlbXM6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbmJfc2h1dGRvd25fcHJvY2Vzc2VzIDwgbGVuKHByb2Nlc3Nlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRkb3duX29uZV9wcm9jZXNzKCkKLSAgICAgICAgICAgICAgICAjIElmIC5qb2luKCkgaXMgbm90IGNhbGxlZCBvbiB0aGUgY3JlYXRlZCBwcm9jZXNzZXMgdGhlbgotICAgICAgICAgICAgICAgICMgc29tZSBtdWx0aXByb2Nlc3NpbmcuUXVldWUgbWV0aG9kcyBtYXkgZGVhZGxvY2sgb24gTWFjIE9TCi0gICAgICAgICAgICAgICAgIyBYLgotICAgICAgICAgICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKLSAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKLSAgICAgICAgICAgICAgICBjYWxsX3F1ZXVlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZGVsIGV4ZWN1dG9yCisgICAgICAgIGlmIHNodXR0aW5nX2Rvd24oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFNpbmNlIG5vIG5ldyB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCwgaXQgaXMgc2FmZSB0byBzaHV0ZG93bgorICAgICAgICAgICAgICAgICMgdGhpcyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd29yayBpdGVtcy4KKyAgICAgICAgICAgICAgICBpZiBub3QgcGVuZGluZ193b3JrX2l0ZW1zOgorICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGV4Y2VwdCBGdWxsOgorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBub3QgYSBwcm9ibGVtOiB3ZSB3aWxsIGV2ZW50dWFsbHkgYmUgd29rZW4gdXAgKGluCisgICAgICAgICAgICAgICAgIyByZXN1bHRfcXVldWUuZ2V0KCkpIGFuZCBiZSBhYmxlIHRvIHNlbmQgYSBzZW50aW5lbCBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGV4ZWN1dG9yID0gTm9uZQogCiBfc3lzdGVtX2xpbWl0c19jaGVja2VkID0gRmFsc2UKIF9zeXN0ZW1fbGltaXRlZCA9IE5vbmUKQEAgLTI0Myw3ICsyOTIsNiBAQAogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihfc3lzdGVtX2xpbWl0ZWQpCiAgICAgX3N5c3RlbV9saW1pdHNfY2hlY2tlZCA9IFRydWUKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBvcwogICAgICAgICBuc2Vtc19tYXggPSBvcy5zeXNjb25mKCJTQ19TRU1fTlNFTVNfTUFYIikKICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgIyBzeXNjb25mIG5vdCBhdmFpbGFibGUgb3Igc2V0dGluZyBub3QgYXZhaWxhYmxlCkBAIC0yNTksNiArMzA3LDE0IEBACiAgICAgX3N5c3RlbV9saW1pdGVkID0gInN5c3RlbSBwcm92aWRlcyB0b28gZmV3IHNlbWFwaG9yZXMgKCVkIGF2YWlsYWJsZSwgMjU2IG5lY2Vzc2FyeSkiICUgbnNlbXNfbWF4CiAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihfc3lzdGVtX2xpbWl0ZWQpCiAKKworY2xhc3MgQnJva2VuUHJvY2Vzc1Bvb2woUnVudGltZUVycm9yKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhIHByb2Nlc3MgaW4gYSBQcm9jZXNzUG9vbEV4ZWN1dG9yIHRlcm1pbmF0ZWQgYWJydXB0bHkKKyAgICB3aGlsZSBhIGZ1dHVyZSB3YXMgaW4gdGhlIHJ1bm5pbmcgc3RhdGUuCisgICAgIiIiCisKKwogY2xhc3MgUHJvY2Vzc1Bvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplcyBhIG5ldyBQcm9jZXNzUG9vbEV4ZWN1dG9yIGluc3RhbmNlLgpAQCAtMjgwLDE0ICszMzYsMjAgQEAKICAgICAgICAgIyBiZWNhdXNlIGZ1dHVyZXMgaW4gdGhlIGNhbGwgcXVldWUgY2Fubm90IGJlIGNhbmNlbGxlZC4KICAgICAgICAgc2VsZi5fY2FsbF9xdWV1ZSA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZShzZWxmLl9tYXhfd29ya2VycyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUUkFfUVVFVUVEX0NBTExTKQotICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICAjIEtpbGxlZCB3b3JrZXIgcHJvY2Vzc2VzIGNhbiBwcm9kdWNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIKKyAgICAgICAgIyB0cmFjZWJhY2tzIGluIHRoZSBxdWV1ZSdzIG93biB3b3JrZXIgdGhyZWFkLiBCdXQgd2UgZGV0ZWN0IGtpbGxlZAorICAgICAgICAjIHByb2Nlc3NlcyBhbnl3YXksIHNvIHNpbGVuY2UgdGhlIHRyYWNlYmFja3MuCisgICAgICAgIHNlbGYuX2NhbGxfcXVldWUuX2lnbm9yZV9lcGlwZSA9IFRydWUKKyAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gU2ltcGxlUXVldWUoKQogICAgICAgICBzZWxmLl93b3JrX2lkcyA9IHF1ZXVlLlF1ZXVlKCkKICAgICAgICAgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NlcyA9IHNldCgpCisgICAgICAgICMgTWFwIG9mIHBpZHMgdG8gcHJvY2Vzc2VzCisgICAgICAgIHNlbGYuX3Byb2Nlc3NlcyA9IHt9CiAKICAgICAgICAgIyBTaHV0ZG93biBpcyBhIHR3by1zdGVwIHByb2Nlc3MuCiAgICAgICAgIHNlbGYuX3NodXRkb3duX3RocmVhZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX2Jyb2tlbiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3F1ZXVlX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9wZW5kaW5nX3dvcmtfaXRlbXMgPSB7fQogCkBAIC0yOTcsNiArMzU5LDggQEAKICAgICAgICAgZGVmIHdlYWtyZWZfY2IoXywgcT1zZWxmLl9yZXN1bHRfcXVldWUpOgogICAgICAgICAgICAgcS5wdXQoTm9uZSkKICAgICAgICAgaWYgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgaXMgTm9uZToKKyAgICAgICAgICAgICMgU3RhcnQgdGhlIHByb2Nlc3NlcyBzbyB0aGF0IHRoZWlyIHNlbnRpbmVscyBhcmUga25vd24uCisgICAgICAgICAgICBzZWxmLl9hZGp1c3RfcHJvY2Vzc19jb3VudCgpCiAgICAgICAgICAgICBzZWxmLl9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQoCiAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1fcXVldWVfbWFuYWdlbWVudF93b3JrZXIsCiAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHdlYWtyZWYucmVmKHNlbGYsIHdlYWtyZWZfY2IpLApAQCAtMzE2LDEwICszODAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5fY2FsbF9xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlKSkKICAgICAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc2VzLmFkZChwKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc2VzW3AucGlkXSA9IHAKIAogICAgIGRlZiBzdWJtaXQoc2VsZiwgZm4sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHdpdGggc2VsZi5fc2h1dGRvd25fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX2Jyb2tlbjoKKyAgICAgICAgICAgICAgICByYWlzZSBCcm9rZW5Qcm9jZXNzUG9vbCgnQSBjaGlsZCBwcm9jZXNzIHRlcm1pbmF0ZWQgJworICAgICAgICAgICAgICAgICAgICAnYWJydXB0bHksIHRoZSBwcm9jZXNzIHBvb2wgaXMgbm90IHVzYWJsZSBhbnltb3JlJykKICAgICAgICAgICAgIGlmIHNlbGYuX3NodXRkb3duX3RocmVhZDoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2Nhbm5vdCBzY2hlZHVsZSBuZXcgZnV0dXJlcyBhZnRlciBzaHV0ZG93bicpCiAKQEAgLTMzMyw3ICs0MDAsNiBAQAogICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlLnB1dChOb25lKQogCiAgICAgICAgICAgICBzZWxmLl9zdGFydF9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCgpCi0gICAgICAgICAgICBzZWxmLl9hZGp1c3RfcHJvY2Vzc19jb3VudCgpCiAgICAgICAgICAgICByZXR1cm4gZgogICAgIHN1Ym1pdC5fX2RvY19fID0gX2Jhc2UuRXhlY3V0b3Iuc3VibWl0Ll9fZG9jX18KIApkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQppbmRleCBmYmFjMDg4Li45NWJiNjgyIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQpAQCAtNzQsNyArNzQsNyBAQAogICAgICAgICAgICAgICAgIHdvcmtfcXVldWUucHV0KE5vbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBkZWwgZXhlY3V0b3IKLSAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiB3b3JrZXInLCBleGNfaW5mbz1UcnVlKQogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgpkaWZmIC0tZ2l0IGEvTGliL2NvbmZpZ3BhcnNlci5weSBiL0xpYi9jb25maWdwYXJzZXIucHkKaW5kZXggZDE0OGI4OC4uOWQ1Zjc3OSAxMDA2NDQKLS0tIGEvTGliL2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvY29uZmlncGFyc2VyLnB5CkBAIC0xMTksNyArMTE5LDggQEAKICAgICAgICAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMgYXJlIHN1cnJvdW5kZWQgYnkgc3BhY2VzLgogIiIiCiAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5nLCBPcmRlcmVkRGljdCBhcyBfZGVmYXVsdF9kaWN0LCBfQ2hhaW5NYXAKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QgYXMgX2RlZmF1bHRfZGljdCwgQ2hhaW5NYXAgYXMgX0NoYWluTWFwCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KIGltcG9ydCBpdGVydG9vbHMKQEAgLTk5MiwxOCArOTkzLDI2IEBACiAgICAgICAgIGluZGVudF9sZXZlbCA9IDAKICAgICAgICAgZSA9IE5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vbmUsIG9yIGFuIGV4Y2VwdGlvbgogICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShmcCwgc3RhcnQ9MSk6Ci0gICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gTm9uZQorICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IHN5cy5tYXhzaXplCiAgICAgICAgICAgICAjIHN0cmlwIGlubGluZSBjb21tZW50cwotICAgICAgICAgICAgZm9yIHByZWZpeCBpbiBzZWxmLl9pbmxpbmVfY29tbWVudF9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICBpbmRleCA9IGxpbmUuZmluZChwcmVmaXgpCi0gICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gMCBvciAoaW5kZXggPiAwIGFuZCBsaW5lW2luZGV4LTFdLmlzc3BhY2UoKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBpbmRleAotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaW5saW5lX3ByZWZpeGVzID0ge3A6IC0xIGZvciBwIGluIHNlbGYuX2lubGluZV9jb21tZW50X3ByZWZpeGVzfQorICAgICAgICAgICAgd2hpbGUgY29tbWVudF9zdGFydCA9PSBzeXMubWF4c2l6ZSBhbmQgaW5saW5lX3ByZWZpeGVzOgorICAgICAgICAgICAgICAgIG5leHRfcHJlZml4ZXMgPSB7fQorICAgICAgICAgICAgICAgIGZvciBwcmVmaXgsIGluZGV4IGluIGlubGluZV9wcmVmaXhlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGxpbmUuZmluZChwcmVmaXgsIGluZGV4KzEpCisgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IC0xOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9wcmVmaXhlc1twcmVmaXhdID0gaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gMCBvciAoaW5kZXggPiAwIGFuZCBsaW5lW2luZGV4LTFdLmlzc3BhY2UoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gbWluKGNvbW1lbnRfc3RhcnQsIGluZGV4KQorICAgICAgICAgICAgICAgIGlubGluZV9wcmVmaXhlcyA9IG5leHRfcHJlZml4ZXMKICAgICAgICAgICAgICMgc3RyaXAgZnVsbCBsaW5lIGNvbW1lbnRzCiAgICAgICAgICAgICBmb3IgcHJlZml4IGluIHNlbGYuX2NvbW1lbnRfcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgaWYgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgocHJlZml4KToKICAgICAgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IDAKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNvbW1lbnRfc3RhcnQgPT0gc3lzLm1heHNpemU6CisgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IE5vbmUKICAgICAgICAgICAgIHZhbHVlID0gbGluZVs6Y29tbWVudF9zdGFydF0uc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2VtcHR5X2xpbmVzX2luX3ZhbHVlczoKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggNWViYmJjNi4uYmRlMmZlYiAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTEsMTAgKzEsMTAgQEAKICIiIlV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQgY29udGV4dHMuICBTZWUgUEVQIDM0My4iIiIKIAogaW1wb3J0IHN5cworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiXQorX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJDb250ZXh0RGVjb3JhdG9yIiwgIkV4aXRTdGFjayJdCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtMTMsMTIgKzEzLDEyIEBACiAgICAgZGVmIF9yZWNyZWF0ZV9jbShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgcmVjcmVhdGVkIGluc3RhbmNlIG9mIHNlbGYuCiAKLSAgICAgICAgQWxsb3dzIG90aGVyd2lzZSBvbmUtc2hvdCBjb250ZXh0IG1hbmFnZXJzIGxpa2UKKyAgICAgICAgQWxsb3dzIGFuIG90aGVyd2lzZSBvbmUtc2hvdCBjb250ZXh0IG1hbmFnZXIgbGlrZQogICAgICAgICBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIgdG8gc3VwcG9ydCB1c2UgYXMKLSAgICAgICAgZGVjb3JhdG9ycyB2aWEgaW1wbGljaXQgcmVjcmVhdGlvbi4KKyAgICAgICAgYSBkZWNvcmF0b3IgdmlhIGltcGxpY2l0IHJlY3JlYXRpb24uCiAKLSAgICAgICAgTm90ZTogdGhpcyBpcyBhIHByaXZhdGUgaW50ZXJmYWNlIGp1c3QgZm9yIF9HQ00gaW4gMy4yIGJ1dCB3aWxsIGJlCi0gICAgICAgIHJlbmFtZWQgYW5kIGRvY3VtZW50ZWQgZm9yIHRoaXJkIHBhcnR5IHVzZSBpbiAzLjMKKyAgICAgICAgVGhpcyBpcyBhIHByaXZhdGUgaW50ZXJmYWNlIGp1c3QgZm9yIF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlci4KKyAgICAgICAgU2VlIGlzc3VlICMxMTY0NyBmb3IgZGV0YWlscy4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmCiAKQEAgLTEzOSwzICsxMzksMTE3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CiAgICAgICAgIHNlbGYudGhpbmcuY2xvc2UoKQorCisKKyMgSW5zcGlyZWQgYnkgZGlzY3Vzc2lvbnMgb24gaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNTg1CitjbGFzcyBFeGl0U3RhY2sob2JqZWN0KToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBhIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzCisKKyAgICBGb3IgZXhhbXBsZToKKworICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgZmlsZXMgPSBbc3RhY2suZW50ZXJfY29udGV4dChvcGVuKGZuYW1lKSkgZm9yIGZuYW1lIGluIGZpbGVuYW1lc10KKyAgICAgICAgICAgICMgQWxsIG9wZW5lZCBmaWxlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY2xvc2VkIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAgICMgaW4gdGhlIGxpc3QgdGhyb3cgYW4gZXhjZXB0aW9uCisKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzID0gZGVxdWUoKQorCisgICAgZGVmIHBvcF9hbGwoc2VsZik6CisgICAgICAgICIiIlByZXNlcnZlIHRoZSBjb250ZXh0IHN0YWNrIGJ5IHRyYW5zZmVycmluZyBpdCB0byBhIG5ldyBpbnN0YW5jZSIiIgorICAgICAgICBuZXdfc3RhY2sgPSB0eXBlKHNlbGYpKCkKKyAgICAgICAgbmV3X3N0YWNrLl9leGl0X2NhbGxiYWNrcyA9IHNlbGYuX2V4aXRfY2FsbGJhY2tzCisgICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzID0gZGVxdWUoKQorICAgICAgICByZXR1cm4gbmV3X3N0YWNrCisKKyAgICBkZWYgX3B1c2hfY21fZXhpdChzZWxmLCBjbSwgY21fZXhpdCk6CisgICAgICAgICIiIkhlbHBlciB0byBjb3JyZWN0bHkgcmVnaXN0ZXIgY2FsbGJhY2tzIHRvIF9fZXhpdF9fIG1ldGhvZHMiIiIKKyAgICAgICAgZGVmIF9leGl0X3dyYXBwZXIoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIHJldHVybiBjbV9leGl0KGNtLCAqZXhjX2RldGFpbHMpCisgICAgICAgIF9leGl0X3dyYXBwZXIuX19zZWxmX18gPSBjbQorICAgICAgICBzZWxmLnB1c2goX2V4aXRfd3JhcHBlcikKKworICAgIGRlZiBwdXNoKHNlbGYsIGV4aXQpOgorICAgICAgICAiIiJSZWdpc3RlcnMgYSBjYWxsYmFjayB3aXRoIHRoZSBzdGFuZGFyZCBfX2V4aXRfXyBtZXRob2Qgc2lnbmF0dXJlCisKKyAgICAgICAgQ2FuIHN1cHByZXNzIGV4Y2VwdGlvbnMgdGhlIHNhbWUgd2F5IF9fZXhpdF9fIG1ldGhvZHMgY2FuLgorCisgICAgICAgIEFsc28gYWNjZXB0cyBhbnkgb2JqZWN0IHdpdGggYW4gX19leGl0X18gbWV0aG9kIChyZWdpc3RlcmluZyBhIGNhbGwKKyAgICAgICAgdG8gdGhlIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgaXRzZWxmKQorICAgICAgICAiIiIKKyAgICAgICAgIyBXZSB1c2UgYW4gdW5ib3VuZCBtZXRob2QgcmF0aGVyIHRoYW4gYSBib3VuZCBtZXRob2QgdG8gZm9sbG93CisgICAgICAgICMgdGhlIHN0YW5kYXJkIGxvb2t1cCBiZWhhdmlvdXIgZm9yIHNwZWNpYWwgbWV0aG9kcworICAgICAgICBfY2JfdHlwZSA9IHR5cGUoZXhpdCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXhpdF9tZXRob2QgPSBfY2JfdHlwZS5fX2V4aXRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIE5vdCBhIGNvbnRleHQgbWFuYWdlciwgc28gYXNzdW1lIGl0cyBhIGNhbGxhYmxlCisgICAgICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcy5hcHBlbmQoZXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfY21fZXhpdChleGl0LCBleGl0X21ldGhvZCkKKyAgICAgICAgcmV0dXJuIGV4aXQgIyBBbGxvdyB1c2UgYXMgYSBkZWNvcmF0b3IKKworICAgIGRlZiBjYWxsYmFjayhzZWxmLCBjYWxsYmFjaywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICIiIlJlZ2lzdGVycyBhbiBhcmJpdHJhcnkgY2FsbGJhY2sgYW5kIGFyZ3VtZW50cy4KKworICAgICAgICBDYW5ub3Qgc3VwcHJlc3MgZXhjZXB0aW9ucy4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBfZXhpdF93cmFwcGVyKGV4Y190eXBlLCBleGMsIHRiKToKKyAgICAgICAgICAgIGNhbGxiYWNrKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICMgV2UgY2hhbmdlZCB0aGUgc2lnbmF0dXJlLCBzbyB1c2luZyBAd3JhcHMgaXMgbm90IGFwcHJvcHJpYXRlLCBidXQKKyAgICAgICAgIyBzZXR0aW5nIF9fd3JhcHBlZF9fIG1heSBzdGlsbCBoZWxwIHdpdGggaW50cm9zcGVjdGlvbgorICAgICAgICBfZXhpdF93cmFwcGVyLl9fd3JhcHBlZF9fID0gY2FsbGJhY2sKKyAgICAgICAgc2VsZi5wdXNoKF9leGl0X3dyYXBwZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFjayAjIEFsbG93IHVzZSBhcyBhIGRlY29yYXRvcgorCisgICAgZGVmIGVudGVyX2NvbnRleHQoc2VsZiwgY20pOgorICAgICAgICAiIiJFbnRlcnMgdGhlIHN1cHBsaWVkIGNvbnRleHQgbWFuYWdlcgorCisgICAgICAgIElmIHN1Y2Nlc3NmdWwsIGFsc28gcHVzaGVzIGl0cyBfX2V4aXRfXyBtZXRob2QgYXMgYSBjYWxsYmFjayBhbmQKKyAgICAgICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBfX2VudGVyX18gbWV0aG9kLgorICAgICAgICAiIiIKKyAgICAgICAgIyBXZSBsb29rIHVwIHRoZSBzcGVjaWFsIG1ldGhvZHMgb24gdGhlIHR5cGUgdG8gbWF0Y2ggdGhlIHdpdGggc3RhdGVtZW50CisgICAgICAgIF9jbV90eXBlID0gdHlwZShjbSkKKyAgICAgICAgX2V4aXQgPSBfY21fdHlwZS5fX2V4aXRfXworICAgICAgICByZXN1bHQgPSBfY21fdHlwZS5fX2VudGVyX18oY20pCisgICAgICAgIHNlbGYuX3B1c2hfY21fZXhpdChjbSwgX2V4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiSW1tZWRpYXRlbHkgdW53aW5kIHRoZSBjb250ZXh0IHN0YWNrIiIiCisgICAgICAgIHNlbGYuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgIyBXZSBtYW5pcHVsYXRlIHRoZSBleGNlcHRpb24gc3RhdGUgc28gaXQgYmVoYXZlcyBhcyB0aG91Z2gKKyAgICAgICAgIyB3ZSB3ZXJlIGFjdHVhbGx5IG5lc3RpbmcgbXVsdGlwbGUgd2l0aCBzdGF0ZW1lbnRzCisgICAgICAgIGZyYW1lX2V4YyA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICAgIGRlZiBfZml4X2V4Y2VwdGlvbl9jb250ZXh0KG5ld19leGMsIG9sZF9leGMpOgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBleGNfY29udGV4dCA9IG5ld19leGMuX19jb250ZXh0X18KKyAgICAgICAgICAgICAgICBpZiBleGNfY29udGV4dCBpbiAoTm9uZSwgZnJhbWVfZXhjKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBuZXdfZXhjID0gZXhjX2NvbnRleHQKKyAgICAgICAgICAgIG5ld19leGMuX19jb250ZXh0X18gPSBvbGRfZXhjCisKKyAgICAgICAgIyBDYWxsYmFja3MgYXJlIGludm9rZWQgaW4gTElGTyBvcmRlciB0byBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mCisgICAgICAgICMgbmVzdGVkIGNvbnRleHQgbWFuYWdlcnMKKyAgICAgICAgc3VwcHJlc3NlZF9leGMgPSBGYWxzZQorICAgICAgICB3aGlsZSBzZWxmLl9leGl0X2NhbGxiYWNrczoKKyAgICAgICAgICAgIGNiID0gc2VsZi5fZXhpdF9jYWxsYmFja3MucG9wKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBjYigqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc2VkX2V4YyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZXhjX2RldGFpbHMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBuZXdfZXhjX2RldGFpbHMgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICMgc2ltdWxhdGUgdGhlIHN0YWNrIG9mIGV4Y2VwdGlvbnMgYnkgc2V0dGluZyB0aGUgY29udGV4dAorICAgICAgICAgICAgICAgIF9maXhfZXhjZXB0aW9uX2NvbnRleHQobmV3X2V4Y19kZXRhaWxzWzFdLCBleGNfZGV0YWlsc1sxXSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjX2RldGFpbHMgPSBuZXdfZXhjX2RldGFpbHMKKyAgICAgICAgcmV0dXJuIHN1cHByZXNzZWRfZXhjCmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IDA4OWQxMDEuLmQ5NjIwMWUgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC0xNzMsOCArMTczLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bihkZWVwKWNvcHlhYmxlIG9iamVjdCBvZiB0eXBlICVzIiAlIGNscykKICAgICAgICAgICAgICAgICB5ID0gX3JlY29uc3RydWN0KHgsIHJ2LCAxLCBtZW1vKQogCi0gICAgbWVtb1tkXSA9IHkKLSAgICBfa2VlcF9hbGl2ZSh4LCBtZW1vKSAjIE1ha2Ugc3VyZSB4IGxpdmVzIGF0IGxlYXN0IGFzIGxvbmcgYXMgZAorICAgICMgSWYgaXMgaXRzIG93biBjb3B5LCBkb24ndCBtZW1vaXplLgorICAgIGlmIHkgaXMgbm90IHg6CisgICAgICAgIG1lbW9bZF0gPSB5CisgICAgICAgIF9rZWVwX2FsaXZlKHgsIG1lbW8pICMgTWFrZSBzdXJlIHggbGl2ZXMgYXQgbGVhc3QgYXMgbG9uZyBhcyBkCiAgICAgcmV0dXJuIHkKIAogX2RlZXBjb3B5X2Rpc3BhdGNoID0gZCA9IHt9CkBAIC0yMTQsOSArMjE2LDEwIEBACiAgICAgeSA9IFtdCiAgICAgZm9yIGEgaW4geDoKICAgICAgICAgeS5hcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCi0gICAgZCA9IGlkKHgpCisgICAgIyBXZSdyZSBub3QgZ29pbmcgdG8gcHV0IHRoZSB0dXBsZSBpbiB0aGUgbWVtbywgYnV0IGl0J3Mgc3RpbGwgaW1wb3J0YW50IHdlCisgICAgIyBjaGVjayBmb3IgaXQsIGluIGNhc2UgdGhlIHR1cGxlIGNvbnRhaW5zIHJlY3Vyc2l2ZSBtdXRhYmxlIHN0cnVjdHVyZXMuCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gbWVtb1tkXQorICAgICAgICByZXR1cm4gbWVtb1tpZCh4KV0KICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBmb3IgaSBpbiByYW5nZShsZW4oeCkpOgpAQCAtMjI1LDcgKzIyOCw2IEBACiAgICAgICAgICAgICBicmVhawogICAgIGVsc2U6CiAgICAgICAgIHkgPSB4Ci0gICAgbWVtb1tkXSA9IHkKICAgICByZXR1cm4geQogZFt0dXBsZV0gPSBfZGVlcGNvcHlfdHVwbGUKIApAQCAtMzIxLDY4ICszMjMsMyBAQAogIyBIZWxwZXIgZm9yIGluc3RhbmNlIGNyZWF0aW9uIHdpdGhvdXQgY2FsbGluZyBfX2luaXRfXwogY2xhc3MgX0VtcHR5Q2xhc3M6CiAgICAgcGFzcwotCi1kZWYgX3Rlc3QoKToKLSAgICBsID0gW05vbmUsIDEsIDIsIDMuMTQsICd4eXp6eScsICgxLCAyKSwgWzMuMTQsICdhYmMnXSwKLSAgICAgICAgIHsnYWJjJzogJ0FCQyd9LCAoKSwgW10sIHt9XQotICAgIGwxID0gY29weShsKQotICAgIHByaW50KGwxPT1sKQotICAgIGwxID0gbWFwKGNvcHksIGwpCi0gICAgcHJpbnQobDE9PWwpCi0gICAgbDEgPSBkZWVwY29weShsKQotICAgIHByaW50KGwxPT1sKQotICAgIGNsYXNzIEM6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmc9Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLmEgPSAxCi0gICAgICAgICAgICBzZWxmLmFyZyA9IGFyZwotICAgICAgICAgICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICAgICAgZmlsZSA9IHN5cy5hcmd2WzBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBfX2ZpbGVfXwotICAgICAgICAgICAgc2VsZi5mcCA9IG9wZW4oZmlsZSkKLSAgICAgICAgICAgIHNlbGYuZnAuY2xvc2UoKQotICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIHsnYSc6IHNlbGYuYSwgJ2FyZyc6IHNlbGYuYXJnfQotICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHN0YXRlLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrZXksIHZhbHVlKQotICAgICAgICBkZWYgX19kZWVwY29weV9fKHNlbGYsIG1lbW89Tm9uZSk6Ci0gICAgICAgICAgICBuZXcgPSBzZWxmLl9fY2xhc3NfXyhkZWVwY29weShzZWxmLmFyZywgbWVtbykpCi0gICAgICAgICAgICBuZXcuYSA9IHNlbGYuYQotICAgICAgICAgICAgcmV0dXJuIG5ldwotICAgIGMgPSBDKCdhcmd1bWVudCBza2V0Y2gnKQotICAgIGwuYXBwZW5kKGMpCi0gICAgbDIgPSBjb3B5KGwpCi0gICAgcHJpbnQobCA9PSBsMikKLSAgICBwcmludChsKQotICAgIHByaW50KGwyKQotICAgIGwyID0gZGVlcGNvcHkobCkKLSAgICBwcmludChsID09IGwyKQotICAgIHByaW50KGwpCi0gICAgcHJpbnQobDIpCi0gICAgbC5hcHBlbmQoe2xbMV06IGwsICd4eXonOiBsWzJdfSkKLSAgICBsMyA9IGNvcHkobCkKLSAgICBpbXBvcnQgcmVwcmxpYgotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwxKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMikpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDMpKQotICAgIGwzID0gZGVlcGNvcHkobCkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMSkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDIpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwzKSkKLSAgICBjbGFzcyBvZGljdChkaWN0KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQgPSB7fSk6Ci0gICAgICAgICAgICBzZWxmLmEgPSA5OQotICAgICAgICAgICAgZGljdC5fX2luaXRfXyhzZWxmLCBkKQotICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgaSk6Ci0gICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGssIGkpCi0gICAgICAgICAgICBzZWxmLmEKLSAgICBvID0gb2RpY3QoeyJBIiA6ICJCIn0pCi0gICAgeCA9IGRlZXBjb3B5KG8pCi0gICAgcHJpbnQobywgeCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIvY3J5cHQucHkgYi9MaWIvY3J5cHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwYzgxYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9jcnlwdC5weQpAQCAtMCwwICsxLDYyIEBACisiIiJXcmFwcGVyIHRvIHRoZSBQT1NJWCBjcnlwdCBsaWJyYXJ5IGNhbGwgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25hbGl0eS4iIiIKKworaW1wb3J0IF9jcnlwdAoraW1wb3J0IHN0cmluZyBhcyBfc3RyaW5nCitmcm9tIHJhbmRvbSBpbXBvcnQgU3lzdGVtUmFuZG9tIGFzIF9TeXN0ZW1SYW5kb20KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUgYXMgX25hbWVkdHVwbGUKKworCitfc2FsdGNoYXJzID0gX3N0cmluZy5hc2NpaV9sZXR0ZXJzICsgX3N0cmluZy5kaWdpdHMgKyAnLi8nCitfc3IgPSBfU3lzdGVtUmFuZG9tKCkKKworCitjbGFzcyBfTWV0aG9kKF9uYW1lZHR1cGxlKCdfTWV0aG9kJywgJ25hbWUgaWRlbnQgc2FsdF9jaGFycyB0b3RhbF9zaXplJykpOgorCisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGEgc2FsdCBtZXRob2QgcGVyIHRoZSBNb2R1bGFyIENyeXB0IEZvcm1hdCBvciB0aGUKKyAgICBsZWdhY3kgMi1jaGFyYWN0ZXIgY3J5cHQgbWV0aG9kLiIiIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxjcnlwdC5NRVRIT0Rfe30+Jy5mb3JtYXQoc2VsZi5uYW1lKQorCisKK2RlZiBta3NhbHQobWV0aG9kPU5vbmUpOgorICAgICIiIkdlbmVyYXRlIGEgc2FsdCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuCisKKyAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgc3Ryb25nZXN0IGF2YWlsYWJsZSBtZXRob2Qgd2lsbCBiZSB1c2VkLgorCisgICAgIiIiCisgICAgaWYgbWV0aG9kIGlzIE5vbmU6CisgICAgICAgIG1ldGhvZCA9IG1ldGhvZHNbMF0KKyAgICBzID0gJyR7fSQnLmZvcm1hdChtZXRob2QuaWRlbnQpIGlmIG1ldGhvZC5pZGVudCBlbHNlICcnCisgICAgcyArPSAnJy5qb2luKF9zci5zYW1wbGUoX3NhbHRjaGFycywgbWV0aG9kLnNhbHRfY2hhcnMpKQorICAgIHJldHVybiBzCisKKworZGVmIGNyeXB0KHdvcmQsIHNhbHQ9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb25lLXdheSBoYXNoIG9mIGEgcGFzc3dvcmQsIHdpdGggYSBzYWx0CisgICAgcHJlcGVuZGVkLgorCisgICAgSWYgYGBzYWx0YGAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgdGhlIHN0cm9uZ2VzdAorICAgIGF2YWlsYWJsZSBtZXRob2Qgd2lsbCBiZSBzZWxlY3RlZCBhbmQgYSBzYWx0IGdlbmVyYXRlZC4gIE90aGVyd2lzZSwKKyAgICBgYHNhbHRgYCBtYXkgYmUgb25lIG9mIHRoZSBgYGNyeXB0Lk1FVEhPRF8qYGAgdmFsdWVzLCBvciBhIHN0cmluZyBhcworICAgIHJldHVybmVkIGJ5IGBgY3J5cHQubWtzYWx0KClgYC4KKworICAgICIiIgorICAgIGlmIHNhbHQgaXMgTm9uZSBvciBpc2luc3RhbmNlKHNhbHQsIF9NZXRob2QpOgorICAgICAgICBzYWx0ID0gbWtzYWx0KHNhbHQpCisgICAgcmV0dXJuIF9jcnlwdC5jcnlwdCh3b3JkLCBzYWx0KQorCisKKyMgIGF2YWlsYWJsZSBzYWx0aW5nL2NyeXB0byBtZXRob2RzCitNRVRIT0RfQ1JZUFQgPSBfTWV0aG9kKCdDUllQVCcsIE5vbmUsIDIsIDEzKQorTUVUSE9EX01ENSA9IF9NZXRob2QoJ01ENScsICcxJywgOCwgMzQpCitNRVRIT0RfU0hBMjU2ID0gX01ldGhvZCgnU0hBMjU2JywgJzUnLCAxNiwgNjMpCitNRVRIT0RfU0hBNTEyID0gX01ldGhvZCgnU0hBNTEyJywgJzYnLCAxNiwgMTA2KQorCittZXRob2RzID0gW10KK2ZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1KToKKyAgICBfcmVzdWx0ID0gY3J5cHQoJycsIF9tZXRob2QpCisgICAgaWYgX3Jlc3VsdCBhbmQgbGVuKF9yZXN1bHQpID09IF9tZXRob2QudG90YWxfc2l6ZToKKyAgICAgICAgbWV0aG9kcy5hcHBlbmQoX21ldGhvZCkKK21ldGhvZHMuYXBwZW5kKE1FVEhPRF9DUllQVCkKK2RlbCBfcmVzdWx0LCBfbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5IGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQppbmRleCAxMTEyMDlhLi5jOTJlMTMwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAjIGxpYnJhcmllcy4gIE9TIFggMTAuMyBpcyBEYXJ3aW4gNywgc28gd2UgY2hlY2sgZm9yCiAgICAgIyB0aGF0LgogCi0gICAgaWYgaW50KF9vcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pIDwgODoKKyAgICBpZiBpbnQoX29zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA8IDg6CiAgICAgICAgIERFRkFVTFRfTU9ERSA9IFJUTERfR0xPQkFMCiAKIGZyb20gX2N0eXBlcyBpbXBvcnQgRlVOQ0ZMQUdfQ0RFQ0wgYXMgX0ZVTkNGTEFHX0NERUNMLCBcCkBAIC00NTYsNyArNDU2LDcgQEAKICAgICAgICAgICAgIGNvZGUgPSBHZXRMYXN0RXJyb3IoKQogICAgICAgICBpZiBkZXNjciBpcyBOb25lOgogICAgICAgICAgICAgZGVzY3IgPSBGb3JtYXRFcnJvcihjb2RlKS5zdHJpcCgpCi0gICAgICAgIHJldHVybiBXaW5kb3dzRXJyb3IoY29kZSwgZGVzY3IpCisgICAgICAgIHJldHVybiBXaW5kb3dzRXJyb3IoTm9uZSwgZGVzY3IsIE5vbmUsIGNvZGUpCiAKIGlmIHNpemVvZihjX3VpbnQpID09IHNpemVvZihjX3ZvaWRfcCk6CiAgICAgY19zaXplX3QgPSBjX3VpbnQKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weQppbmRleCBjNzIwN2VhLi41NjAwYjQzIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5CkBAIC0xNDAsNyArMTQwLDcgQEAKICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICBDRlVOQ1RZUEUoTm9uZSkobGFtYmRhIHg9TmFzdHkoKTogTm9uZSkKLSAgICAgICAgCisKIAogdHJ5OgogICAgIFdJTkZVTkNUWVBFCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tZW1mdW5jdGlvbnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tZW1mdW5jdGlvbnMucHkKaW5kZXggYWEyMTEzYi4uYWVjNGFhYSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21lbWZ1bmN0aW9ucy5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCkBAIC00OSw2ICs1MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FzdChhLCBQT0lOVEVSKGNfYnl0ZSkpWzo3OjddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbOTddKQogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X3N0cmluZ19hdChzZWxmKToKICAgICAgICAgcyA9IHN0cmluZ19hdChiImZvbyBiYXIiKQogICAgICAgICAjIFhYWCBUaGUgZm9sbG93aW5nIG1heSBiZSB3cm9uZywgZGVwZW5kaW5nIG9uIGhvdyBQeXRob24KZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CmluZGV4IGU4M2ZkOWEuLjk3NjJmYjkgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQpAQCAtNzMsMTMgKzczLDEwIEBACiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICMjICAgICAgICAgICAgcHJpbnQgIihObyBjX3djaGFyX3ApIgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHMgPSAiMTIzIgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjX3djaGFyX3AuZnJvbV9wYXJhbShzKS5fb2JqIGlzIHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNfd2NoYXJfcC5mcm9tX3BhcmFtLCA0MikKIAotICAgICAgICAgICAgIyBuZXcgaW4gMC45LjE6IGNvbnZlcnQgKGRlY29kZSkgYXNjaWkgdG8gdW5pY29kZQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikuX29iaiwgIjEyMyIpCisgICAgICAgIGNfd2NoYXJfcC5mcm9tX3BhcmFtKCIxMjMiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY193Y2hhcl9wLmZyb21fcGFyYW0sIDQyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNfd2NoYXJfcC5mcm9tX3BhcmFtLCBiIjEyM1wzNzciKQogCiAgICAgICAgIHBhID0gY193Y2hhcl9wLmZyb21fcGFyYW0oY193Y2hhcl9wKCIxMjMiKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CmluZGV4IGZhNjQ2MWYuLmFkMTNiMDEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQpAQCAtMjUsMTQgKzI1LDE3IEBACiAgICAgICAgICAgICB2ID0gbWVtb3J5dmlldyhvYikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZSh2LmZvcm1hdCksIG5vcm1hbGl6ZShmbXQpKQotICAgICAgICAgICAgICAgIGlmIHNoYXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNoYXBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgc2hhcGVbMF0pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odikgKiBzaXplb2YoaXRlbXRwKSwgc2l6ZW9mKG9iKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuaXRlbXNpemUsIHNpemVvZihpdGVtdHApKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zaGFwZSwgc2hhcGUpCi0gICAgICAgICAgICAgICAgIyBjdHlwZXMgb2JqZWN0IGFsd2F5cyBoYXZlIGEgbm9uLXN0cmlkZWQgbWVtb3J5IGJsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnN0cmlkZXMsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBYWFggSXNzdWUgIzEyODUxOiBQeUNEYXRhX05ld0dldEJ1ZmZlcigpIG11c3QgcHJvdmlkZSBzdHJpZGVzCisgICAgICAgICAgICAgICAgIyAgICAgaWYgcmVxdWVzdGVkLiBtZW1vcnl2aWV3IGN1cnJlbnRseSByZWNvbnN0cnVjdHMgbWlzc2luZworICAgICAgICAgICAgICAgICMgICAgIHN0cmlkZSBpbmZvcm1hdGlvbiwgc28gdGhpcyBhc3NlcnQgd2lsbCBmYWlsLgorICAgICAgICAgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbCh2LnN0cmlkZXMsICgpKQorCiAgICAgICAgICAgICAgICAgIyB0aGV5IGFyZSBhbHdheXMgcmVhZC93cml0ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uodi5yZWFkb25seSkKIApAQCAtNTIsMTQgKzU1LDE1IEBACiAgICAgICAgICAgICB2ID0gbWVtb3J5dmlldyhvYikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuZm9ybWF0LCBmbXQpCi0gICAgICAgICAgICAgICAgaWYgc2hhcGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgc2hhcGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpLCBzaGFwZVswXSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSAqIHNpemVvZihpdGVtdHApLCBzaXplb2Yob2IpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5pdGVtc2l6ZSwgc2l6ZW9mKGl0ZW10cCkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnNoYXBlLCBzaGFwZSkKLSAgICAgICAgICAgICAgICAjIGN0eXBlcyBvYmplY3QgYWx3YXlzIGhhdmUgYSBub24tc3RyaWRlZCBtZW1vcnkgYmxvY2sKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuc3RyaWRlcywgTm9uZSkKKyAgICAgICAgICAgICAgICAjIFhYWCBJc3N1ZSAjMTI4NTEKKyAgICAgICAgICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCAoKSkKKwogICAgICAgICAgICAgICAgICMgdGhleSBhcmUgYWx3YXlzIHJlYWQvd3JpdGUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYucmVhZG9ubHkpCiAKQEAgLTExMCwzNCArMTE0LDM0IEBACiAKICAgICAjIyBzaW1wbGUgdHlwZXMKIAotICAgIChjX2NoYXIsICAgICAgICAgICAgICAgICAgICAiPGMiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19jaGFyKSwKLSAgICAoY19ieXRlLCAgICAgICAgICAgICAgICAgICAgIjxiIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfYnl0ZSksCi0gICAgKGNfdWJ5dGUsICAgICAgICAgICAgICAgICAgICI8QiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3VieXRlKSwKLSAgICAoY19zaG9ydCwgICAgICAgICAgICAgICAgICAgIjxoIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfc2hvcnQpLAotICAgIChjX3VzaG9ydCwgICAgICAgICAgICAgICAgICAiPEgiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191c2hvcnQpLAorICAgIChjX2NoYXIsICAgICAgICAgICAgICAgICAgICAiPGMiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfY2hhciksCisgICAgKGNfYnl0ZSwgICAgICAgICAgICAgICAgICAgICI8YiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19ieXRlKSwKKyAgICAoY191Ynl0ZSwgICAgICAgICAgICAgICAgICAgIjxCIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX3VieXRlKSwKKyAgICAoY19zaG9ydCwgICAgICAgICAgICAgICAgICAgIjxoIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX3Nob3J0KSwKKyAgICAoY191c2hvcnQsICAgICAgICAgICAgICAgICAgIjxIIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX3VzaG9ydCksCiAKICAgICAjIGNfaW50IGFuZCBjX3VpbnQgbWF5IGJlIGFsaWFzZXMgdG8gY19sb25nCi0gICAgIyhjX2ludCwgICAgICAgICAgICAgICAgICAgICAiPGkiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19pbnQpLAotICAgICMoY191aW50LCAgICAgICAgICAgICAgICAgICAgIjxJIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdWludCksCisgICAgIyhjX2ludCwgICAgICAgICAgICAgICAgICAgICAiPGkiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfaW50KSwKKyAgICAjKGNfdWludCwgICAgICAgICAgICAgICAgICAgICI8SSIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191aW50KSwKIAotICAgIChjX2xvbmcsICAgICAgICAgICAgICAgICAgICAiPGwiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nKSwKLSAgICAoY191bG9uZywgICAgICAgICAgICAgICAgICAgIjxMIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdWxvbmcpLAorICAgIChjX2xvbmcsICAgICAgICAgICAgICAgICAgICAiPGwiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfbG9uZyksCisgICAgKGNfdWxvbmcsICAgICAgICAgICAgICAgICAgICI8TCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191bG9uZyksCiAKICAgICAjIGNfbG9uZ2xvbmcgYW5kIGNfdWxvbmdsb25nIGFyZSBhbGlhc2VzIG9uIDY0LWJpdCBwbGF0Zm9ybXMKICAgICAjKGNfbG9uZ2xvbmcsICAgICAgICAgICAgICAgICI8cSIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2xvbmdsb25nKSwKICAgICAjKGNfdWxvbmdsb25nLCAgICAgICAgICAgICAgICI8USIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Vsb25nbG9uZyksCiAKLSAgICAoY19mbG9hdCwgICAgICAgICAgICAgICAgICAgIjxmIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfZmxvYXQpLAotICAgIChjX2RvdWJsZSwgICAgICAgICAgICAgICAgICAiPGQiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19kb3VibGUpLAorICAgIChjX2Zsb2F0LCAgICAgICAgICAgICAgICAgICAiPGYiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfZmxvYXQpLAorICAgIChjX2RvdWJsZSwgICAgICAgICAgICAgICAgICAiPGQiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfZG91YmxlKSwKICAgICAjIGNfbG9uZ2RvdWJsZSBtYXkgYmUgYW4gYWxpYXMgdG8gY19kb3VibGUKIAotICAgIChjX2Jvb2wsICAgICAgICAgICAgICAgICAgICAiPD8iLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19ib29sKSwKLSAgICAocHlfb2JqZWN0LCAgICAgICAgICAgICAgICAgIjxPIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIHB5X29iamVjdCksCisgICAgKGNfYm9vbCwgICAgICAgICAgICAgICAgICAgICI8PyIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19ib29sKSwKKyAgICAocHlfb2JqZWN0LCAgICAgICAgICAgICAgICAgIjxPIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBweV9vYmplY3QpLAogCiAgICAgIyMgcG9pbnRlcnMKIAotICAgIChQT0lOVEVSKGNfYnl0ZSksICAgICAgICAgICAiJjxiIiwgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihjX2J5dGUpKSwKLSAgICAoUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpLCAgIiYmPGwiLCAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSksCisgICAgKFBPSU5URVIoY19ieXRlKSwgICAgICAgICAgICImPGIiLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihjX2J5dGUpKSwKKyAgICAoUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpLCAgIiYmPGwiLCAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKFBPSU5URVIoY19sb25nKSkpLAogCiAgICAgIyMgYXJyYXlzIGFuZCBwb2ludGVycwogCkBAIC0xNDUsMzIgKzE0OSwzMiBAQAogICAgIChjX2Zsb2F0ICogNCAqIDMgKiAyLCAgICAgICAiKDIsMyw0KTxmIiwgICAgICAgICAgICAoMiwzLDQpLCAgICAgICAgY19mbG9hdCksCiAgICAgKFBPSU5URVIoY19zaG9ydCkgKiAyLCAgICAgICIoMikmPGgiLCAgICAgICAgICAgICAgICgyLCksICAgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKICAgICAoUE9JTlRFUihjX3Nob3J0KSAqIDIgKiAzLCAgIigzLDIpJjxoIiwgICAgICAgICAgICAgKDMsMiwpLCAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAotICAgIChQT0lOVEVSKGNfc2hvcnQgKiAyKSwgICAgICAiJigyKTxoIiwgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCisgICAgKFBPSU5URVIoY19zaG9ydCAqIDIpLCAgICAgICImKDIpPGgiLCAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCiAKICAgICAjIyBzdHJ1Y3R1cmVzIGFuZCB1bmlvbnMKIAotICAgIChQb2ludCwgICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICBOb25lLCAgICAgICAgICAgUG9pbnQpLAorICAgIChQb2ludCwgICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICAoKSwgICAgICAgICAgIFBvaW50KSwKICAgICAjIHBhY2tlZCBzdHJ1Y3R1cmVzIGRvIG5vdCBpbXBsZW1lbnQgdGhlIHBlcAotICAgIChQYWNrZWRQb2ludCwgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUGFja2VkUG9pbnQpLAotICAgIChQb2ludDIsICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICBOb25lLCAgICAgICAgICAgUG9pbnQyKSwKLSAgICAoRW1wdHlTdHJ1Y3QsICAgICAgICAgICAgICAgIlR7fSIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIEVtcHR5U3RydWN0KSwKKyAgICAoUGFja2VkUG9pbnQsICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQYWNrZWRQb2ludCksCisgICAgKFBvaW50MiwgICAgICAgICAgICAgICAgICAgICJUezxsOng6PGw6eTp9IiwgICAgICAgICgpLCAgICAgICAgICAgUG9pbnQyKSwKKyAgICAoRW1wdHlTdHJ1Y3QsICAgICAgICAgICAgICAgIlR7fSIsICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBFbXB0eVN0cnVjdCksCiAgICAgIyB0aGUgcGVwIGRvZXMndCBzdXBwb3J0IHVuaW9ucwotICAgIChhVW5pb24sICAgICAgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgYVVuaW9uKSwKKyAgICAoYVVuaW9uLCAgICAgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBhVW5pb24pLAogCiAgICAgIyMgcG9pbnRlciB0byBpbmNvbXBsZXRlIHN0cnVjdHVyZQotICAgIChJbmNvbXBsZXRlLCAgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgSW5jb21wbGV0ZSksCi0gICAgKFBPSU5URVIoSW5jb21wbGV0ZSksICAgICAgICImQiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKEluY29tcGxldGUpKSwKKyAgICAoSW5jb21wbGV0ZSwgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBJbmNvbXBsZXRlKSwKKyAgICAoUE9JTlRFUihJbmNvbXBsZXRlKSwgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKEluY29tcGxldGUpKSwKIAogICAgICMgJ0NvbXBsZXRlJyBpcyBhIHN0cnVjdHVyZSB0aGF0IHN0YXJ0cyBpbmNvbXBsZXRlLCBidXQgaXMgY29tcGxldGVkIGFmdGVyIHRoZQogICAgICMgcG9pbnRlciB0eXBlIHRvIGl0IGhhcyBiZWVuIGNyZWF0ZWQuCi0gICAgKENvbXBsZXRlLCAgICAgICAgICAgICAgICAgICJUezxsOmE6fSIsICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBDb21wbGV0ZSksCisgICAgKENvbXBsZXRlLCAgICAgICAgICAgICAgICAgICJUezxsOmE6fSIsICAgICAgICAgICAgICgpLCAgICAgICAgICAgQ29tcGxldGUpLAogICAgICMgVW5mb3J0dW5hdGVseSB0aGUgcG9pbnRlciBmb3JtYXQgc3RyaW5nIGlzIG5vdCBmaXhlZC4uLgotICAgIChQT0lOVEVSKENvbXBsZXRlKSwgICAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihDb21wbGV0ZSkpLAorICAgIChQT0lOVEVSKENvbXBsZXRlKSwgICAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoQ29tcGxldGUpKSwKIAogICAgICMjIG90aGVyCiAKICAgICAjIGZ1bmN0aW9uIHNpZ25hdHVyZXMgYXJlIG5vdCBpbXBsZW1lbnRlZAotICAgIChDRlVOQ1RZUEUoTm9uZSksICAgICAgICAgICAiWHt9IiwgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKSwKKyAgICAoQ0ZVTkNUWVBFKE5vbmUpLCAgICAgICAgICAgIlh7fSIsICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBDRlVOQ1RZUEUoTm9uZSkpLAogCiAgICAgXQogCkBAIC0xODYsMTAgKzE5MCwxMCBAQAogIyBhbmQgbGl0dGxlIGVuZGlhbiBtYWNoaW5lcy4KICMKIGVuZGlhbl90eXBlcyA9IFsKLSAgICAoQkVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7Pmw6eDo+bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIEJFUG9pbnQpLAotICAgIChMRVBvaW50LCAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICBOb25lLCAgICAgICAgICAgTEVQb2ludCksCi0gICAgKFBPSU5URVIoQkVQb2ludCksICAgICAgICAgICImVHs+bDp4Oj5sOnk6fSIsICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKEJFUG9pbnQpKSwKLSAgICAoUE9JTlRFUihMRVBvaW50KSwgICAgICAgICAgIiZUezxsOng6PGw6eTp9IiwgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoTEVQb2ludCkpLAorICAgIChCRVBvaW50LCAgICAgICAgICAgICAgICAgICAiVHs+bDp4Oj5sOnk6fSIsICAgICAgICAoKSwgICAgICAgICAgIEJFUG9pbnQpLAorICAgIChMRVBvaW50LCAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICAoKSwgICAgICAgICAgIExFUG9pbnQpLAorICAgIChQT0lOVEVSKEJFUG9pbnQpLCAgICAgICAgICAiJlR7Pmw6eDo+bDp5On0iLCAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoQkVQb2ludCkpLAorICAgIChQT0lOVEVSKExFUG9pbnQpLCAgICAgICAgICAiJlR7PGw6eDo8bDp5On0iLCAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoTEVQb2ludCkpLAogICAgIF0KIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3B5dGhvbl9hcGkucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5CmluZGV4IDFmNGM2MDMuLjlkZTM5ODAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3B5dGhvbl9hcGkucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHl0aG9uX2FwaS5weQpAQCAtMSw1ICsxLDYgQEAKIGZyb20gY3R5cGVzIGltcG9ydCAqCiBpbXBvcnQgdW5pdHRlc3QsIHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGN0eXBlcy50ZXN0IGltcG9ydCBpc19yZXNvdXJjZV9lbmFibGVkCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTI1LDYgKzI2LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYiJhYmNkZWZnaGkiLCAzKSwgYiJhYmMiKQogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X1B5U3RyaW5nX0Zyb21TdHJpbmcoc2VsZik6CiAgICAgICAgIHB5dGhvbmFwaS5QeUJ5dGVzX0Zyb21TdHJpbmcucmVzdHlwZSA9IHB5X29iamVjdAogICAgICAgICBweXRob25hcGkuUHlCeXRlc19Gcm9tU3RyaW5nLmFyZ3R5cGVzID0gKGNfY2hhcl9wLCkKQEAgLTU2LDYgKzU4LDcgQEAKICAgICAgICAgICAgIGRlbCByZXMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JjKDQyKSwgcmVmNDIpCiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfUHlPYmpfRnJvbVB0cihzZWxmKToKICAgICAgICAgcyA9ICJhYmMgZGVmIGdoaSBqa2wiCiAgICAgICAgIHJlZiA9IGdyYyhzKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmVmY291bnRzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmVmY291bnRzLnB5CmluZGV4IDM1YTgxYWEuLjU2MTNlN2EgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZWZjb3VudHMucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGN0eXBlcwogaW1wb3J0IGdjCiAKQEAgLTEwLDYgKzExLDcgQEAKIAogY2xhc3MgUmVmY291bnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfMShzZWxmKToKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IGdldHJlZmNvdW50IGFzIGdyYwogCkBAIC0zNCw2ICszNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JjKGNhbGxiYWNrKSwgMikKIAogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X3JlZmNvdW50KHNlbGYpOgogICAgICAgICBmcm9tIHN5cyBpbXBvcnQgZ2V0cmVmY291bnQgYXMgZ3JjCiAgICAgICAgIGRlZiBmdW5jKCphcmdzKToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cmluZ3B0ci5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cmluZ3B0ci5weQppbmRleCAzZDI1ZmE1Li45NWNkMTYxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RyaW5ncHRyLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKIGltcG9ydCBfY3R5cGVzX3Rlc3QKQEAgLTcsNiArOCw3IEBACiAKIGNsYXNzIFN0cmluZ1B0clRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9fUE9JTlRFUl9jX2NoYXIoc2VsZik6CiAgICAgICAgIGNsYXNzIFgoU3RydWN0dXJlKToKICAgICAgICAgICAgIF9maWVsZHNfID0gWygic3RyIiwgUE9JTlRFUihjX2NoYXIpKV0KZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfd2luMzIucHkKaW5kZXggMjUzNGE3NC4uMTI4OTE0ZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfd2luMzIucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfd2luMzIucHkKQEAgLTY3LDYgKzY3LDI4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LnRleHQsICJ0ZXh0IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguZGV0YWlscywgKCJkZXRhaWxzIiwpKQogCisgICAgY2xhc3MgVGVzdFdpbkVycm9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgZGVmIHRlc3Rfd2luZXJyb3Ioc2VsZik6CisgICAgICAgICAgICAjIHNlZSBJc3N1ZSAxNjE2OQorICAgICAgICAgICAgaW1wb3J0IGVycm5vCisgICAgICAgICAgICBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUiA9IDg3CisgICAgICAgICAgICBtc2cgPSBGb3JtYXRFcnJvcihFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikuc3RyaXAoKQorICAgICAgICAgICAgYXJncyA9IChlcnJuby5FSU5WQUwsIG1zZywgTm9uZSwgRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpCisKKyAgICAgICAgICAgIGUgPSBXaW5FcnJvcihFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCBhcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCBlcnJuby5FSU5WQUwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUud2luZXJyb3IsIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKQorCisgICAgICAgICAgICB3aW5kbGwua2VybmVsMzIuU2V0TGFzdEVycm9yKEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFdpbkVycm9yKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBlID0gZXhjCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgZXJybm8uRUlOVkFMKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikKKwogY2xhc3MgU3RydWN0dXJlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9zdHJ1Y3RfYnlfdmFsdWUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3V0aWwucHkgYi9MaWIvY3R5cGVzL3V0aWwucHkKaW5kZXggMWJiN2QxZC4uNTU1NWIyZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy91dGlsLnB5CisrKyBiL0xpYi9jdHlwZXMvdXRpbC5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCBzeXMsIG9zCiBpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHN1YnByb2Nlc3MKIAogIyBmaW5kX2xpYnJhcnkobmFtZSkgcmV0dXJucyB0aGUgcGF0aG5hbWUgb2YgYSBsaWJyYXJ5LCBvciBOb25lLgogaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtMzksOCArNDAsOCBAQAogICAgICAgICAgICAgY2xpYm5hbWUgPSAnbXN2Y3IlZCcgJSAodmVyc2lvbiAqIDEwKQogCiAgICAgICAgICMgSWYgcHl0aG9uIHdhcyBidWlsdCB3aXRoIGluIGRlYnVnIG1vZGUKLSAgICAgICAgaW1wb3J0IGltcAotICAgICAgICBpZiBpbXAuZ2V0X3N1ZmZpeGVzKClbMF1bMF0gPT0gJ19kLnB5ZCc6CisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgICAgICAgIGlmICdfZC5weWQnIGluIGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgogICAgICAgICAgICAgY2xpYm5hbWUgKz0gJ2QnCiAgICAgICAgIHJldHVybiBjbGlibmFtZSsnLmRsbCcKIApAQCAtMTM2LDE2ICsxMzcsMTIgQEAKICAgICAgICAgICAgIHJ2ID0gZi5jbG9zZSgpCiAgICAgICAgICAgICBpZiBydiA9PSAxMDoKICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdvYmpkdW1wIGNvbW1hbmQgbm90IGZvdW5kJykKLSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKG9zLnBvcGVuKGNtZCkpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocidcc1NPTkFNRVxzKyhbXlxzXSspJywgZGF0YSkKKyAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChyJ1xzU09OQU1FXHMrKFteXHNdKyknLCBkdW1wKQogICAgICAgICAgICAgaWYgbm90IHJlczoKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHJlcy5ncm91cCgxKQogCi0gICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJmcmVlYnNkIikKLSAgICAgICAgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIm9wZW5ic2QiKQotICAgICAgICBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZHJhZ29uZmx5IikpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgiZnJlZWJzZCIsICJvcGVuYnNkIiwgImRyYWdvbmZseSIpKToKIAogICAgICAgICBkZWYgX251bV92ZXJzaW9uKGxpYm5hbWUpOgogICAgICAgICAgICAgIyAibGlieHl6LnNvLk1BSk9SLk1JTk9SIiA9PiBbIE1BSk9SLCBNSU5PUiBdCkBAIC0xNzQsOSArMTcxLDkgQEAKICAgICAgICAgZGVmIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpOgogICAgICAgICAgICAgaW1wb3J0IHN0cnVjdAogICAgICAgICAgICAgaWYgc3RydWN0LmNhbGNzaXplKCdsJykgPT0gNDoKLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XSArICctMzInCisgICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZSArICctMzInCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpWzRdICsgJy02NCcKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKS5tYWNoaW5lICsgJy02NCcKICAgICAgICAgICAgIG1hY2hfbWFwID0gewogICAgICAgICAgICAgICAgICd4ODZfNjQtNjQnOiAnbGliYzYseDg2LTY0JywKICAgICAgICAgICAgICAgICAncHBjNjQtNjQnOiAnbGliYzYsNjRiaXQnLApAQCAtMTg3LDEzICsxODQsMTkgQEAKICAgICAgICAgICAgIGFiaV90eXBlID0gbWFjaF9tYXAuZ2V0KG1hY2hpbmUsICdsaWJjNicpCiAKICAgICAgICAgICAgICMgWFhYIGFzc3VtaW5nIEdMSUJDJ3MgbGRjb25maWcgKHdpdGggb3B0aW9uIC1wKQotICAgICAgICAgICAgZXhwciA9IHInXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkKLSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKG9zLnBvcGVuKCdMQ19BTEw9QyBMQU5HPUMgL3NiaW4vbGRjb25maWcgLXAgMj4vZGV2L251bGwnKSkgYXMgZjoKLSAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChleHByLCBkYXRhKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgcmV0dXJuIHJlcy5ncm91cCgxKQorICAgICAgICAgICAgcmVnZXggPSBvcy5mc2VuY29kZSgKKyAgICAgICAgICAgICAgICAnXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKFsnL3NiaW4vbGRjb25maWcnLCAnLXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9eydMQ19BTEwnOiAnQycsICdMQU5HJzogJ0MnfSkgYXMgcDoKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKHJlZ2V4LCBwLnN0ZG91dC5yZWFkKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5mc2RlY29kZShyZXMuZ3JvdXAoMSkpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKICAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCmRpZmYgLS1naXQgYS9MaWIvY3Vyc2VzL19faW5pdF9fLnB5IGIvTGliL2N1cnNlcy9fX2luaXRfXy5weQppbmRleCBhM2U5ZGVmLi43YmZhNjY3IDEwMDY0NAotLS0gYS9MaWIvY3Vyc2VzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdXJzZXMvX19pbml0X18ucHkKQEAgLTExLDcgKzExLDYgQEAKICIiIgogCiBmcm9tIF9jdXJzZXMgaW1wb3J0ICoKLWZyb20gY3Vyc2VzLndyYXBwZXIgaW1wb3J0IHdyYXBwZXIKIGltcG9ydCBvcyBhcyBfb3MKIGltcG9ydCBzeXMgYXMgX3N5cwogCkBAIC01NSwzICs1NCw0OCBAQAogICAgIGhhc19rZXkKIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgZnJvbSAuaGFzX2tleSBpbXBvcnQgaGFzX2tleQorCisjIFdyYXBwZXIgZm9yIHRoZSBlbnRpcmUgY3Vyc2VzLWJhc2VkIGFwcGxpY2F0aW9uLiAgUnVucyBhIGZ1bmN0aW9uIHdoaWNoCisjIHNob3VsZCBiZSB0aGUgcmVzdCBvZiB5b3VyIGN1cnNlcy1iYXNlZCBhcHBsaWNhdGlvbi4gIElmIHRoZSBhcHBsaWNhdGlvbgorIyByYWlzZXMgYW4gZXhjZXB0aW9uLCB3cmFwcGVyKCkgd2lsbCByZXN0b3JlIHRoZSB0ZXJtaW5hbCB0byBhIHNhbmUgc3RhdGUgc28KKyMgeW91IGNhbiByZWFkIHRoZSByZXN1bHRpbmcgdHJhY2ViYWNrLgorCitkZWYgd3JhcHBlcihmdW5jLCAqYXJncywgKiprd2RzKToKKyAgICAiIiJXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgaW5pdGlhbGl6ZXMgY3Vyc2VzIGFuZCBjYWxscyBhbm90aGVyIGZ1bmN0aW9uLAorICAgIHJlc3RvcmluZyBub3JtYWwga2V5Ym9hcmQvc2NyZWVuIGJlaGF2aW9yIG9uIGVycm9yLgorICAgIFRoZSBjYWxsYWJsZSBvYmplY3QgJ2Z1bmMnIGlzIHRoZW4gcGFzc2VkIHRoZSBtYWluIHdpbmRvdyAnc3Rkc2NyJworICAgIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgZm9sbG93ZWQgYnkgYW55IG90aGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgICB3cmFwcGVyKCkuCisgICAgIiIiCisKKyAgICB0cnk6CisgICAgICAgICMgSW5pdGlhbGl6ZSBjdXJzZXMKKyAgICAgICAgc3Rkc2NyID0gaW5pdHNjcigpCisKKyAgICAgICAgIyBUdXJuIG9mZiBlY2hvaW5nIG9mIGtleXMsIGFuZCBlbnRlciBjYnJlYWsgbW9kZSwKKyAgICAgICAgIyB3aGVyZSBubyBidWZmZXJpbmcgaXMgcGVyZm9ybWVkIG9uIGtleWJvYXJkIGlucHV0CisgICAgICAgIG5vZWNobygpCisgICAgICAgIGNicmVhaygpCisKKyAgICAgICAgIyBJbiBrZXlwYWQgbW9kZSwgZXNjYXBlIHNlcXVlbmNlcyBmb3Igc3BlY2lhbCBrZXlzCisgICAgICAgICMgKGxpa2UgdGhlIGN1cnNvciBrZXlzKSB3aWxsIGJlIGludGVycHJldGVkIGFuZAorICAgICAgICAjIGEgc3BlY2lhbCB2YWx1ZSBsaWtlIGN1cnNlcy5LRVlfTEVGVCB3aWxsIGJlIHJldHVybmVkCisgICAgICAgIHN0ZHNjci5rZXlwYWQoMSkKKworICAgICAgICAjIFN0YXJ0IGNvbG9yLCB0b28uICBIYXJtbGVzcyBpZiB0aGUgdGVybWluYWwgZG9lc24ndCBoYXZlCisgICAgICAgICMgY29sb3I7IHVzZXIgY2FuIHRlc3Qgd2l0aCBoYXNfY29sb3IoKSBsYXRlciBvbi4gIFRoZSB0cnkvY2F0Y2gKKyAgICAgICAgIyB3b3JrcyBhcm91bmQgYSBtaW5vciBiaXQgb2Ygb3Zlci1jb25zY2llbnRpb3VzbmVzcyBpbiB0aGUgY3Vyc2VzCisgICAgICAgICMgbW9kdWxlIC0tIHRoZSBlcnJvciByZXR1cm4gZnJvbSBDIHN0YXJ0X2NvbG9yKCkgaXMgaWdub3JhYmxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdGFydF9jb2xvcigpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXR1cm4gZnVuYyhzdGRzY3IsICphcmdzLCAqKmt3ZHMpCisgICAgZmluYWxseToKKyAgICAgICAgIyBTZXQgZXZlcnl0aGluZyBiYWNrIHRvIG5vcm1hbAorICAgICAgICBpZiAnc3Rkc2NyJyBpbiBsb2NhbHMoKToKKyAgICAgICAgICAgIHN0ZHNjci5rZXlwYWQoMCkKKyAgICAgICAgICAgIGVjaG8oKQorICAgICAgICAgICAgbm9jYnJlYWsoKQorICAgICAgICAgICAgZW5kd2luKCkKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvd3JhcHBlci5weSBiL0xpYi9jdXJzZXMvd3JhcHBlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE4M2NlNy4uMDAwMDAwMAotLS0gYS9MaWIvY3Vyc2VzL3dyYXBwZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0iIiJjdXJzZXMud3JhcHBlcgotCi1Db250YWlucyBvbmUgZnVuY3Rpb24sIHdyYXBwZXIoKSwgd2hpY2ggcnVucyBhbm90aGVyIGZ1bmN0aW9uIHdoaWNoCi1zaG91bGQgYmUgdGhlIHJlc3Qgb2YgeW91ciBjdXJzZXMtYmFzZWQgYXBwbGljYXRpb24uICBJZiB0aGUKLWFwcGxpY2F0aW9uIHJhaXNlcyBhbiBleGNlcHRpb24sIHdyYXBwZXIoKSB3aWxsIHJlc3RvcmUgdGhlIHRlcm1pbmFsCi10byBhIHNhbmUgc3RhdGUgc28geW91IGNhbiByZWFkIHRoZSByZXN1bHRpbmcgdHJhY2ViYWNrLgotCi0iIiIKLQotaW1wb3J0IGN1cnNlcwotCi1kZWYgd3JhcHBlcihmdW5jLCAqYXJncywgKiprd2RzKToKLSAgICAiIiJXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgaW5pdGlhbGl6ZXMgY3Vyc2VzIGFuZCBjYWxscyBhbm90aGVyIGZ1bmN0aW9uLAotICAgIHJlc3RvcmluZyBub3JtYWwga2V5Ym9hcmQvc2NyZWVuIGJlaGF2aW9yIG9uIGVycm9yLgotICAgIFRoZSBjYWxsYWJsZSBvYmplY3QgJ2Z1bmMnIGlzIHRoZW4gcGFzc2VkIHRoZSBtYWluIHdpbmRvdyAnc3Rkc2NyJwotICAgIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgZm9sbG93ZWQgYnkgYW55IG90aGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8KLSAgICB3cmFwcGVyKCkuCi0gICAgIiIiCi0KLSAgICB0cnk6Ci0gICAgICAgICMgSW5pdGlhbGl6ZSBjdXJzZXMKLSAgICAgICAgc3Rkc2NyID0gY3Vyc2VzLmluaXRzY3IoKQotCi0gICAgICAgICMgVHVybiBvZmYgZWNob2luZyBvZiBrZXlzLCBhbmQgZW50ZXIgY2JyZWFrIG1vZGUsCi0gICAgICAgICMgd2hlcmUgbm8gYnVmZmVyaW5nIGlzIHBlcmZvcm1lZCBvbiBrZXlib2FyZCBpbnB1dAotICAgICAgICBjdXJzZXMubm9lY2hvKCkKLSAgICAgICAgY3Vyc2VzLmNicmVhaygpCi0KLSAgICAgICAgIyBJbiBrZXlwYWQgbW9kZSwgZXNjYXBlIHNlcXVlbmNlcyBmb3Igc3BlY2lhbCBrZXlzCi0gICAgICAgICMgKGxpa2UgdGhlIGN1cnNvciBrZXlzKSB3aWxsIGJlIGludGVycHJldGVkIGFuZAotICAgICAgICAjIGEgc3BlY2lhbCB2YWx1ZSBsaWtlIGN1cnNlcy5LRVlfTEVGVCB3aWxsIGJlIHJldHVybmVkCi0gICAgICAgIHN0ZHNjci5rZXlwYWQoMSkKLQotICAgICAgICAjIFN0YXJ0IGNvbG9yLCB0b28uICBIYXJtbGVzcyBpZiB0aGUgdGVybWluYWwgZG9lc24ndCBoYXZlCi0gICAgICAgICMgY29sb3I7IHVzZXIgY2FuIHRlc3Qgd2l0aCBoYXNfY29sb3IoKSBsYXRlciBvbi4gIFRoZSB0cnkvY2F0Y2gKLSAgICAgICAgIyB3b3JrcyBhcm91bmQgYSBtaW5vciBiaXQgb2Ygb3Zlci1jb25zY2llbnRpb3VzbmVzcyBpbiB0aGUgY3Vyc2VzCi0gICAgICAgICMgbW9kdWxlIC0tIHRoZSBlcnJvciByZXR1cm4gZnJvbSBDIHN0YXJ0X2NvbG9yKCkgaXMgaWdub3JhYmxlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjdXJzZXMuc3RhcnRfY29sb3IoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmV0dXJuIGZ1bmMoc3Rkc2NyLCAqYXJncywgKiprd2RzKQotICAgIGZpbmFsbHk6Ci0gICAgICAgICMgU2V0IGV2ZXJ5dGhpbmcgYmFjayB0byBub3JtYWwKLSAgICAgICAgaWYgJ3N0ZHNjcicgaW4gbG9jYWxzKCk6Ci0gICAgICAgICAgICBzdGRzY3Iua2V5cGFkKDApCi0gICAgICAgICAgICBjdXJzZXMuZWNobygpCi0gICAgICAgICAgICBjdXJzZXMubm9jYnJlYWsoKQotICAgICAgICAgICAgY3Vyc2VzLmVuZHdpbigpCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggYmYyM2U1MC4uZjUwNmU5YSAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTcyLDEwICsxNzIsNiBAQAogCiAjIENvcnJlY3RseSBzdWJzdGl0dXRlIGZvciAleiBhbmQgJVogZXNjYXBlcyBpbiBzdHJmdGltZSBmb3JtYXRzLgogZGVmIF93cmFwX3N0cmZ0aW1lKG9iamVjdCwgZm9ybWF0LCB0aW1ldHVwbGUpOgotICAgIHllYXIgPSB0aW1ldHVwbGVbMF0KLSAgICBpZiB5ZWFyIDwgMTAwMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigieWVhcj0lZCBpcyBiZWZvcmUgMTAwMDsgdGhlIGRhdGV0aW1lIHN0cmZ0aW1lKCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RzIHJlcXVpcmUgeWVhciA+PSAxMDAwIiAlIHllYXIpCiAgICAgIyBEb24ndCBjYWxsIHV0Y29mZnNldCgpIG9yIHR6bmFtZSgpIHVubGVzcyBhY3R1YWxseSBuZWVkZWQuCiAgICAgZnJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVmCiAgICAgenJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICV6CkBAIC0xMDY5LDEzICsxMDY1LDEzIEBACiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSA9PSAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpICE9IDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTExMDMsNyArMTA5OSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfY21wZXJyb3Ioc2VsZiwgb3RoZXIpCiAKLSAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6CisgICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIsIGFsbG93X21peGVkPUZhbHNlKToKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpCiAgICAgICAgIG15dHogPSBzZWxmLl90emluZm8KICAgICAgICAgb3R0eiA9IG90aGVyLl90emluZm8KQEAgLTExMjIsNyArMTExOCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSB0aW1lcyIpCisgICAgICAgICAgICBpZiBhbGxvd19taXhlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMiAjIGFyYml0cmFyeSBub24temVybyB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSB0aW1lcyIpCiAgICAgICAgIG15aGhtbSA9IHNlbGYuX2hvdXIgKiA2MCArIHNlbGYuX21pbnV0ZSAtIG15b2ZmLy90aW1lZGVsdGEobWludXRlcz0xKQogICAgICAgICBvdGhobW0gPSBvdGhlci5faG91ciAqIDYwICsgb3RoZXIuX21pbnV0ZSAtIG90b2ZmLy90aW1lZGVsdGEobWludXRlcz0xKQogICAgICAgICByZXR1cm4gX2NtcCgobXloaG1tLCBzZWxmLl9zZWNvbmQsIHNlbGYuX21pY3Jvc2Vjb25kKSwKQEAgLTEzNjQsNyArMTM2Myw3IEBACiAgICAgICAgIGNvbnZlcnRlciA9IF90aW1lLmxvY2FsdGltZSBpZiB0eiBpcyBOb25lIGVsc2UgX3RpbWUuZ210aW1lCiAKICAgICAgICAgdCwgZnJhYyA9IGRpdm1vZCh0LCAxLjApCi0gICAgICAgIHVzID0gcm91bmQoZnJhYyAqIDFlNikKKyAgICAgICAgdXMgPSBpbnQoZnJhYyAqIDFlNikKIAogICAgICAgICAjIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCiAgICAgICAgICMgZnVsbCBzZWNvbmQsIHVzIGNhbiBiZSByb3VuZGVkIHVwIHRvIDEwMDAwMDAuICBJbiB0aGlzIGNhc2UsCkBAIC0xMzg0LDcgKzEzODMsNyBAQAogICAgIGRlZiB1dGNmcm9tdGltZXN0YW1wKGNscywgdCk6CiAgICAgICAgICJDb25zdHJ1Y3QgYSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuIgogICAgICAgICB0LCBmcmFjID0gZGl2bW9kKHQsIDEuMCkKLSAgICAgICAgdXMgPSByb3VuZChmcmFjICogMWU2KQorICAgICAgICB1cyA9IGludChmcmFjICogMWU2KQogCiAgICAgICAgICMgSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKICAgICAgICAgIyBmdWxsIHNlY29uZCwgdXMgY2FuIGJlIHJvdW5kZWQgdXAgdG8gMTAwMDAwMC4gIEluIHRoaXMgY2FzZSwKQEAgLTE0MzgsNiArMTQzNywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCkKIAorICAgIGRlZiB0aW1lc3RhbXAoc2VsZik6CisgICAgICAgICJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0IgorICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfdGltZS5ta3RpbWUoKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEpKSArIHNlbGYubWljcm9zZWNvbmQgLyAxZTYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZiAtIF9FUE9DSCkudG90YWxfc2Vjb25kcygpCisKICAgICBkZWYgdXRjdGltZXR1cGxlKHNlbGYpOgogICAgICAgICAiUmV0dXJuIFVUQyB0aW1lIHR1cGxlIGNvbXBhdGlibGUgd2l0aCB0aW1lLmdtdGltZSgpLiIKICAgICAgICAgb2Zmc2V0ID0gc2VsZi51dGNvZmZzZXQoKQpAQCAtMTQ4NSw4ICsxNDkzLDMyIEBACiAgICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQsIHR6aW5mbykKIAotICAgIGRlZiBhc3RpbWV6b25lKHNlbGYsIHR6KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CisgICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHo9Tm9uZSk6CisgICAgICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCisgICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQorICAgICAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKKyAgICAgICAgICAgIGxvY2FsID0gZGF0ZXRpbWUoKmxvY2FsdG1bOjZdKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIGdtdG9mZiA9IGxvY2FsdG0udG1fZ210b2ZmCisgICAgICAgICAgICAgICAgem9uZSA9IGxvY2FsdG0udG1fem9uZQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgQ29tcHV0ZSBVVEMgb2Zmc2V0IGFuZCBjb21wYXJlIHdpdGggdGhlIHZhbHVlIGltcGxpZWQKKyAgICAgICAgICAgICAgICAjIGJ5IHRtX2lzZHN0LiAgSWYgdGhlIHZhbHVlcyBtYXRjaCwgdXNlIHRoZSB6b25lIG5hbWUKKyAgICAgICAgICAgICAgICAjIGltcGxpZWQgYnkgdG1faXNkc3QuCisgICAgICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKKyAgICAgICAgICAgICAgICBkc3QgPSBfdGltZS5kYXlsaWdodCBhbmQgbG9jYWx0bS50bV9pc2RzdCA+IDAKKyAgICAgICAgICAgICAgICBnbXRvZmYgPSAtKF90aW1lLmFsdHpvbmUgaWYgZHN0IGVsc2UgX3RpbWUudGltZXpvbmUpCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgPT0gdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKKyAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgX3RpbWUudHpuYW1lW2RzdF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZSh0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpLCB6b25lKQorCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdHppbmZvIikKIAogICAgICAgICBteXR6ID0gc2VsZi50emluZm8KQEAgLTE2MTAsNyArMTY0Miw3IEBACiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgPT0gMAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICBlbHNlOgpAQCAtMTYxOCw3ICsxNjUwLDcgQEAKIAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIGVsc2U6CkBAIC0xNjU2LDcgKzE2ODgsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX2NtcGVycm9yKHNlbGYsIG90aGVyKQogCi0gICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgorICAgIGRlZiBfY21wKHNlbGYsIG90aGVyLCBhbGxvd19taXhlZD1GYWxzZSk6CiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSkKICAgICAgICAgbXl0eiA9IHNlbGYuX3R6aW5mbwogICAgICAgICBvdHR6ID0gb3RoZXIuX3R6aW5mbwpAQCAtMTY2NSwxMCArMTY5Nyw4IEBACiAgICAgICAgIGlmIG15dHogaXMgb3R0ejoKICAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG15dHogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCi0gICAgICAgICAgICBpZiBvdHR6IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG90b2ZmID0gb3RoZXIudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQogICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gbXlvZmYgPT0gb3RvZmYKIAogICAgICAgICBpZiBiYXNlX2NvbXBhcmU6CkBAIC0xNjc5LDcgKzE3MDksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgZGF0ZXRpbWVzIikKKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAyICMgYXJiaXRyYXJ5IG5vbi16ZXJvIHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIGRhdGV0aW1lcyIpCiAgICAgICAgICMgWFhYIFdoYXQgZm9sbG93cyBjb3VsZCBiZSBkb25lIG1vcmUgZWZmaWNpZW50bHkuLi4KICAgICAgICAgZGlmZiA9IHNlbGYgLSBvdGhlciAgICAgIyB0aGlzIHdpbGwgdGFrZSBvZmZzZXRzIGludG8gYWNjb3VudAogICAgICAgICBpZiBkaWZmLmRheXMgPCAwOgpAQCAtMTg5NSw3ICsxOTI4LDcgQEAKIHRpbWV6b25lLnV0YyA9IHRpbWV6b25lLl9jcmVhdGUodGltZWRlbHRhKDApKQogdGltZXpvbmUubWluID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lem9uZS5fbWlub2Zmc2V0KQogdGltZXpvbmUubWF4ID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lem9uZS5fbWF4b2Zmc2V0KQotCitfRVBPQ0ggPSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKQogIiIiCiBTb21lIHRpbWUgem9uZSBhbGdlYnJhLiAgRm9yIGEgZGF0ZXRpbWUgeCwgbGV0CiAgICAgeC5uID0geCBzdHJpcHBlZCBvZiBpdHMgdGltZXpvbmUgLS0gaXRzIG5haXZlIHRpbWUuCmRpZmYgLS1naXQgYS9MaWIvZGVjaW1hbC5weSBiL0xpYi9kZWNpbWFsLnB5CmluZGV4IDQ5ZGU1MzUuLmI3NGFiMDEgMTAwNjQ0Ci0tLSBhL0xpYi9kZWNpbWFsLnB5CisrKyBiL0xpYi9kZWNpbWFsLnB5CkBAIC00Niw4ICs0Niw4IEBACiBEZWNpbWFsKCctMC4wMTIzJykKID4+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+IHByaW50KCcnLmpvaW4ocmVzdG9yZShkaWZmLCAxKSksIGVuZD0iIikKICAgICBvbmUKZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IGY2NGJhZTYuLjU0M2ZkYzcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMTkwLDYgKzE5MCw5IEBACiAgICAgICAgICAgICAgICAgaWYgZnJlZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBmcmVlID0gY28uY29fY2VsbHZhcnMgKyBjby5jb19mcmVldmFycwogICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGZyZWVbb3BhcmddICsgJyknLCBlbmQ9JyAnKQorICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKKyAgICAgICAgICAgICAgICBwcmludCgnKCVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciknCisgICAgICAgICAgICAgICAgICAgICAgJSAoY29kZVtpLTJdLCBjb2RlW2ktMV0pLCBlbmQ9JyAnKQogICAgICAgICBwcmludCgpCiAKIGRlZiBfZGlzYXNzZW1ibGVfYnl0ZXMoY29kZSwgbGFzdGk9LTEsIHZhcm5hbWVzPU5vbmUsIG5hbWVzPU5vbmUsCkBAIC0yMjksNiArMjMyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyglZCknICUgb3BhcmcsIGVuZD0nICcpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2NvbXBhcmU6CiAgICAgICAgICAgICAgICAgcHJpbnQoJygnICsgY21wX29wW29wYXJnXSArICcpJywgZW5kPScgJykKKyAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFyZ3M6CisgICAgICAgICAgICAgICAgcHJpbnQoJyglZCBwb3NpdGlvbmFsLCAlZCBrZXl3b3JkIHBhaXIpJworICAgICAgICAgICAgICAgICAgICAgICUgKGNvZGVbaS0yXSwgY29kZVtpLTFdKSwgZW5kPScgJykKICAgICAgICAgcHJpbnQoKQogCiBkZWYgX2Rpc2Fzc2VtYmxlX3N0cihzb3VyY2UpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weSBiL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkKaW5kZXggYjUyYTlmZS4uMzQ1YWM0ZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weQorKysgYi9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5CkBAIC0xMyw1ICsxMyw1IEBACiAjIFVwZGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgUHl0aG9uIHJlbGVhc2UgcHJvY2Vzcy4KICMKICMtLXN0YXJ0IGNvbnN0YW50cy0tCi1fX3ZlcnNpb25fXyA9ICIzLjIuMyIKK19fdmVyc2lvbl9fID0gIjMuMy4wIgogIy0tZW5kIGNvbnN0YW50cy0tCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IGUzZWQzYWQuLjk1OWE4YmYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0yNjUsMTEgKzI2NSwxMSBAQAogICAgICAgICBjZmdkYXRhID0gY2ZnZGF0YSArIGIiXDAiCiAgICAgICAgIGlmIHNlbGYucHJlX2luc3RhbGxfc2NyaXB0OgogICAgICAgICAgICAgIyBXZSBuZWVkIHRvIG5vcm1hbGl6ZSBuZXdsaW5lcywgc28gd2Ugb3BlbiBpbiB0ZXh0IG1vZGUgYW5kCi0gICAgICAgICAgICAjIGNvbnZlcnQgYmFjayB0byBieXRlcy4gImxhdGluMSIgc2ltcGx5IGF2b2lkcyBhbnkgcG9zc2libGUKKyAgICAgICAgICAgICMgY29udmVydCBiYWNrIHRvIGJ5dGVzLiAibGF0aW4tMSIgc2ltcGx5IGF2b2lkcyBhbnkgcG9zc2libGUKICAgICAgICAgICAgICMgZmFpbHVyZXMuCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5wcmVfaW5zdGFsbF9zY3JpcHQsICJyIiwKLSAgICAgICAgICAgICAgICBlbmNvZGluZz0ibGF0aW4xIikgYXMgc2NyaXB0OgotICAgICAgICAgICAgICAgIHNjcmlwdF9kYXRhID0gc2NyaXB0LnJlYWQoKS5lbmNvZGUoImxhdGluMSIpCisgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImxhdGluLTEiKSBhcyBzY3JpcHQ6CisgICAgICAgICAgICAgICAgc2NyaXB0X2RhdGEgPSBzY3JpcHQucmVhZCgpLmVuY29kZSgibGF0aW4tMSIpCiAgICAgICAgICAgICBjZmdkYXRhID0gY2ZnZGF0YSArIHNjcmlwdF9kYXRhICsgYiJcblwwIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBlbXB0eSBwcmUtaW5zdGFsbCBzY3JpcHQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IDM0YjYxYmQuLmIxZDk1MWUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtOCw2ICs4LDcgQEAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IENvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgKgogZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBjdXN0b21pemVfY29tcGlsZXIsIGdldF9weXRob25fdmVyc2lvbgorZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX2hfZmlsZW5hbWUKIGZyb20gZGlzdHV0aWxzLmRlcF91dGlsIGltcG9ydCBuZXdlcl9ncm91cAogZnJvbSBkaXN0dXRpbHMuZXh0ZW5zaW9uIGltcG9ydCBFeHRlbnNpb24KIGZyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQpAQCAtMTU5LDYgKzE2MCwxMSBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuaW5jbHVkZV9kaXJzLCBzdHIpOgogICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMgPSBzZWxmLmluY2x1ZGVfZGlycy5zcGxpdChvcy5wYXRoc2VwKQogCisgICAgICAgICMgSWYgaW4gYSB2aXJ0dWFsZW52LCBhZGQgaXRzIGluY2x1ZGUgZGlyZWN0b3J5CisgICAgICAgICMgSXNzdWUgMTYxMTYKKyAgICAgICAgaWYgc3lzLmV4ZWNfcHJlZml4ICE9IHN5cy5iYXNlX2V4ZWNfcHJlZml4OgorICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdpbmNsdWRlJykpCisKICAgICAgICAgIyBQdXQgdGhlIFB5dGhvbiAic3lzdGVtIiBpbmNsdWRlIGRpciBhdCB0aGUgZW5kLCBzbyB0aGF0CiAgICAgICAgICMgYW55IGxvY2FsIGluY2x1ZGUgZGlycyB0YWtlIHByZWNlZGVuY2UuCiAgICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzLmFwcGVuZChweV9pbmNsdWRlKQpAQCAtMTg5LDYgKzE5NSw4IEBACiAgICAgICAgICAgICAjIG11c3QgYmUgdGhlICpuYXRpdmUqIHBsYXRmb3JtLiAgQnV0IHdlIGRvbid0IHJlYWxseSBzdXBwb3J0CiAgICAgICAgICAgICAjIGNyb3NzLWNvbXBpbGluZyB2aWEgYSBiaW5hcnkgaW5zdGFsbCBhbnl3YXksIHNvIHdlIGxldCBpdCBnby4KICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAnbGlicycpKQorICAgICAgICAgICAgaWYgc3lzLmJhc2VfZXhlY19wcmVmaXggIT0gc3lzLnByZWZpeDogICMgSXNzdWUgMTYxMTYKKyAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAnbGlicycpKQogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkX3RlbXAgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAiRGVidWciKQogICAgICAgICAgICAgZWxzZToKQEAgLTE5Niw4ICsyMDQsMTEgQEAKIAogICAgICAgICAgICAgIyBBcHBlbmQgdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3RvcmllcywKICAgICAgICAgICAgICMgdGhpcyBhbGxvd3MgZGlzdHV0aWxzIG9uIHdpbmRvd3MgdG8gd29yayBpbiB0aGUgc291cmNlIHRyZWUKLSAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAnUEMnKSkKLSAgICAgICAgICAgIGlmIE1TVkNfVkVSU0lPTiA9PSA5OgorICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLnBhdGguZGlybmFtZShnZXRfY29uZmlnX2hfZmlsZW5hbWUoKSkpCisgICAgICAgICAgICBfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKKyAgICAgICAgICAgIGlmIF9zeXNfaG9tZToKKyAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQoX3N5c19ob21lKQorICAgICAgICAgICAgaWYgTVNWQ19WRVJTSU9OID49IDk6CiAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIC5saWIgZmlsZXMgZm9yIHRoZSBjb3JyZWN0IGFyY2hpdGVjdHVyZQogICAgICAgICAgICAgICAgIGlmIHNlbGYucGxhdF9uYW1lID09ICd3aW4zMic6CiAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICcnCkBAIC0yMzksOCArMjUwLDcgQEAKICAgICAgICAgIyBmb3IgZXh0ZW5zaW9ucyB1bmRlciBMaW51eCBvciBTb2xhcmlzIHdpdGggYSBzaGFyZWQgUHl0aG9uIGxpYnJhcnksCiAgICAgICAgICMgUHl0aG9uJ3MgbGlicmFyeSBkaXJlY3RvcnkgbXVzdCBiZSBhcHBlbmRlZCB0byBsaWJyYXJ5X2RpcnMKICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQeV9FTkFCTEVfU0hBUkVEJykKLSAgICAgICAgaWYgKChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZ251JykKLSAgICAgICAgICAgICBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnc3Vub3MnKSkKKyAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnLCAnZ251JywgJ3N1bm9zJykpCiAgICAgICAgICAgICBhbmQgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQeV9FTkFCTEVfU0hBUkVEJykpOgogICAgICAgICAgICAgaWYgc3lzLmV4ZWN1dGFibGUuc3RhcnRzd2l0aChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAiYmluIikpOgogICAgICAgICAgICAgICAgICMgYnVpbGRpbmcgdGhpcmQgcGFydHkgZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQppbmRleCBlYzQzNDc3Li40YjViMjJlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQpAQCAtMTI2LDEwICsxMjYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc2hlYmFuZyAoeyFyfSkgaXMgbm90IGRlY29kYWJsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyb20gdGhlIHNjcmlwdCBlbmNvZGluZyAoe30pIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2hlYmFuZywgZW5jb2RpbmcpKQotICAgICAgICAgICAgICAgICAgICBvdXRmID0gb3BlbihvdXRmaWxlLCAid2IiKQotICAgICAgICAgICAgICAgICAgICBvdXRmLndyaXRlKHNoZWJhbmcpCi0gICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGVsaW5lcyhmLnJlYWRsaW5lcygpKQotICAgICAgICAgICAgICAgICAgICBvdXRmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG91dGZpbGUsICJ3YiIpIGFzIG91dGY6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRmLndyaXRlKHNoZWJhbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRmLndyaXRlbGluZXMoZi5yZWFkbGluZXMoKSkKICAgICAgICAgICAgICAgICBpZiBmOgogICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xMC4wLWFtZDY0LmV4ZSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYTBkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xMC4wLWFtZDY0LmV4ZQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xMC4wLmV4ZSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYzNiYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xMC4wLmV4ZQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CmluZGV4IDgxOWUxYTkuLjBiZGQ1MzkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CkBAIC03OCw2ICs3OCw5IEBACiAgICAgICAgIGVsaWYgbXNjX3ZlciA9PSAnMTUwMCc6CiAgICAgICAgICAgICAjIFZTMjAwOCAvIE1TVkMgOS4wCiAgICAgICAgICAgICByZXR1cm4gWydtc3ZjcjkwJ10KKyAgICAgICAgZWxpZiBtc2NfdmVyID09ICcxNjAwJzoKKyAgICAgICAgICAgICMgVlMyMDEwIC8gTVNWQyAxMC4wCisgICAgICAgICAgICByZXR1cm4gWydtc3ZjcjEwMCddCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmtub3duIE1TIENvbXBpbGVyIHZlcnNpb24gJXMgIiAlIG1zY192ZXIpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKaW5kZXggMTY5MDJjYS4uMzE3NjQwYyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKQEAgLTE4LDYgKzE4LDggQEAKICMgVGhlc2UgYXJlIG5lZWRlZCBpbiBhIGNvdXBsZSBvZiBzcG90cywgc28ganVzdCBjb21wdXRlIHRoZW0gb25jZS4KIFBSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKIEVYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpCitCQVNFX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KQorQkFTRV9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfZXhlY19wcmVmaXgpCiAKICMgUGF0aCB0byB0aGUgYmFzZSBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuIE9uIFdpbmRvd3MgdGhlIGJpbmFyeSBtYXkKICMgbGl2ZSBpbiBwcm9qZWN0L1BDQnVpbGQ5LiAgSWYgd2UncmUgZGVhbGluZyB3aXRoIGFuIHg2NCBXaW5kb3dzIGJ1aWxkLApAQCAtMzksMTEgKzQxLDIxIEBACiAjIGRpZmZlcmVudCAoaGFyZC13aXJlZCkgZGlyZWN0b3JpZXMuCiAjIFNldHVwLmxvY2FsIGlzIGF2YWlsYWJsZSBmb3IgTWFrZWZpbGUgYnVpbGRzIGluY2x1ZGluZyBWUEFUSCBidWlsZHMsCiAjIFNldHVwLmRpc3QgaXMgYXZhaWxhYmxlIG9uIFdpbmRvd3MKLWRlZiBfcHl0aG9uX2J1aWxkKCk6CitkZWYgX2lzX3B5dGhvbl9zb3VyY2VfZGlyKGQpOgogICAgIGZvciBmbiBpbiAoIlNldHVwLmRpc3QiLCAiU2V0dXAubG9jYWwiKToKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgIk1vZHVsZXMiLCBmbikpOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZCwgIk1vZHVsZXMiLCBmbikpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKK19zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQoraWYgX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kIFwKKyAgICBfc3lzX2hvbWUubG93ZXIoKS5lbmRzd2l0aCgoJ3BjYnVpbGQnLCAncGNidWlsZFxcYW1kNjQnKSk6CisgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKKyAgICBpZiBfc3lzX2hvbWUuZW5kc3dpdGgoJ3BjYnVpbGQnKTogICAjIG11c3QgYmUgYW1kNjQKKyAgICAgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKK2RlZiBfcHl0aG9uX2J1aWxkKCk6CisgICAgaWYgX3N5c19ob21lOgorICAgICAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9zeXNfaG9tZSkKKyAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKHByb2plY3RfYmFzZSkKIHB5dGhvbl9idWlsZCA9IF9weXRob25fYnVpbGQoKQogCiAjIENhbGN1bGF0ZSB0aGUgYnVpbGQgcXVhbGlmaWVyIGZsYWdzIGlmIHRoZXkgYXJlIGRlZmluZWQuICBBZGRpbmcgdGhlIGZsYWdzCkBAIC03NCwxMSArODYsMTEgQEAKICAgICBvdGhlcndpc2UsIHRoaXMgaXMgdGhlIHBhdGggdG8gcGxhdGZvcm0tc3BlY2lmaWMgaGVhZGVyIGZpbGVzCiAgICAgKG5hbWVseSBweWNvbmZpZy5oKS4KIAotICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMucHJlZml4IG9yCi0gICAgc3lzLmV4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCisgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5iYXNlX3ByZWZpeCBvcgorICAgIHN5cy5iYXNlX2V4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCiAgICAgIiIiCiAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0gICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAorICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBCQVNFX0VYRUNfUFJFRklYIG9yIEJBU0VfUFJFRklYCiAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgICAgICBpZiBweXRob25fYnVpbGQ6CiAgICAgICAgICAgICAjIEFzc3VtZSB0aGUgZXhlY3V0YWJsZSBpcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgVGhlCkBAIC04NiwxMiArOTgsMTQgQEAKICAgICAgICAgICAgICMgdGhlIGJ1aWxkIGRpcmVjdG9yeSBtYXkgbm90IGJlIHRoZSBzb3VyY2UgZGlyZWN0b3J5LCB3ZQogICAgICAgICAgICAgIyBtdXN0IHVzZSAic3JjZGlyIiBmcm9tIHRoZSBtYWtlZmlsZSB0byBmaW5kIHRoZSAiSW5jbHVkZSIKICAgICAgICAgICAgICMgZGlyZWN0b3J5LgotICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQorICAgICAgICAgICAgYmFzZSA9IF9zeXNfaG9tZSBvciBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHN5cy5leGVjdXRhYmxlKSkKICAgICAgICAgICAgIGlmIHBsYXRfc3BlY2lmaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2UKKyAgICAgICAgICAgIGlmIF9zeXNfaG9tZToKKyAgICAgICAgICAgICAgICBpbmNkaXIgPSBvcy5wYXRoLmpvaW4oX3N5c19ob21lLCBnZXRfY29uZmlnX3ZhcignQVNUX0hfRElSJykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGluY2RpciA9IG9zLnBhdGguam9pbihnZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdJbmNsdWRlJykKLSAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChpbmNkaXIpCisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChpbmNkaXIpCiAgICAgICAgIHB5dGhvbl9kaXIgPSAncHl0aG9uJyArIGdldF9weXRob25fdmVyc2lvbigpICsgYnVpbGRfZmxhZ3MKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihwcmVmaXgsICJpbmNsdWRlIiwgcHl0aG9uX2RpcikKICAgICBlbGlmIG9zLm5hbWUgPT0gIm50IjoKQEAgLTExNSwxMSArMTI5LDE0IEBACiAgICAgY29udGFpbmluZyBzdGFuZGFyZCBQeXRob24gbGlicmFyeSBtb2R1bGVzOyBvdGhlcndpc2UsIHJldHVybiB0aGUKICAgICBkaXJlY3RvcnkgZm9yIHNpdGUtc3BlY2lmaWMgbW9kdWxlcy4KIAotICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMucHJlZml4IG9yCi0gICAgc3lzLmV4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCisgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5iYXNlX3ByZWZpeCBvcgorICAgIHN5cy5iYXNlX2V4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCiAgICAgIiIiCiAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0gICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAorICAgICAgICBpZiBzdGFuZGFyZF9saWI6CisgICAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBCQVNFX0VYRUNfUFJFRklYIG9yIEJBU0VfUFJFRklYCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKIAogICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKICAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKQEAgLTE0Niw3ICsxNjMsNyBAQAogICAgICAgICAgICAgIkkgZG9uJ3Qga25vdyB3aGVyZSBQeXRob24gaW5zdGFsbHMgaXRzIGxpYnJhcnkgIgogICAgICAgICAgICAgIm9uIHBsYXRmb3JtICclcyciICUgb3MubmFtZSkKIAotX1VTRV9DTEFORyA9IE5vbmUKKwogCiBkZWYgY3VzdG9taXplX2NvbXBpbGVyKGNvbXBpbGVyKToKICAgICAiIiJEbyBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY3VzdG9taXphdGlvbiBvZiBhIENDb21waWxlciBpbnN0YW5jZS4KQEAgLTE1NSw0MiArMTcyLDI4IEBACiAgICAgdmFyaWVzIGFjcm9zcyBVbmljZXMgYW5kIGlzIHN0b3JlZCBpbiBQeXRob24ncyBNYWtlZmlsZS4KICAgICAiIiIKICAgICBpZiBjb21waWxlci5jb21waWxlcl90eXBlID09ICJ1bml4IjoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgorICAgICAgICAgICAgIyBQZXJmb3JtIGZpcnN0LXRpbWUgY3VzdG9taXphdGlvbiBvZiBjb21waWxlci1yZWxhdGVkCisgICAgICAgICAgICAjIGNvbmZpZyB2YXJzIG9uIE9TIFggbm93IHRoYXQgd2Uga25vdyB3ZSBuZWVkIGEgY29tcGlsZXIuCisgICAgICAgICAgICAjIFRoaXMgaXMgcHJpbWFyaWx5IHRvIHN1cHBvcnQgUHl0aG9ucyBmcm9tIGJpbmFyeQorICAgICAgICAgICAgIyBpbnN0YWxsZXJzLiAgVGhlIGtpbmQgYW5kIHBhdGhzIHRvIGJ1aWxkIHRvb2xzIG9uCisgICAgICAgICAgICAjIHRoZSB1c2VyIHN5c3RlbSBtYXkgdmFyeSBzaWduaWZpY2FudGx5IGZyb20gdGhlIHN5c3RlbQorICAgICAgICAgICAgIyB0aGF0IFB5dGhvbiBpdHNlbGYgd2FzIGJ1aWx0IG9uLiAgQWxzbyB0aGUgdXNlciBPUworICAgICAgICAgICAgIyB2ZXJzaW9uIGFuZCBidWlsZCB0b29scyBtYXkgbm90IHN1cHBvcnQgdGhlIHNhbWUgc2V0CisgICAgICAgICAgICAjIG9mIENQVSBhcmNoaXRlY3R1cmVzIGZvciB1bml2ZXJzYWwgYnVpbGRzLgorICAgICAgICAgICAgZ2xvYmFsIF9jb25maWdfdmFycworICAgICAgICAgICAgaWYgbm90IF9jb25maWdfdmFycy5nZXQoJ0NVU1RPTUlaRURfT1NYX0NPTVBJTEVSJywgJycpOgorICAgICAgICAgICAgICAgIGltcG9ydCBfb3N4X3N1cHBvcnQKKyAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuY3VzdG9taXplX2NvbXBpbGVyKF9jb25maWdfdmFycykKKyAgICAgICAgICAgICAgICBfY29uZmlnX3ZhcnNbJ0NVU1RPTUlaRURfT1NYX0NPTVBJTEVSJ10gPSAnVHJ1ZScKKwogICAgICAgICAoY2MsIGN4eCwgb3B0LCBjZmxhZ3MsIGNjc2hhcmVkLCBsZHNoYXJlZCwgc29fZXh0LCBhciwgYXJfZmxhZ3MpID0gXAogICAgICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKCdDQycsICdDWFgnLCAnT1BUJywgJ0NGTEFHUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NDU0hBUkVEJywgJ0xEU0hBUkVEJywgJ1NPJywgJ0FSJywgJ0FSRkxBR1MnKQogCiAgICAgICAgIG5ld2NjID0gTm9uZQogICAgICAgICBpZiAnQ0MnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICBuZXdjYyA9IG9zLmVudmlyb25bJ0NDJ10KLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGNjID09ICdnY2MtNC4yJzoKLSAgICAgICAgICAgICMgSXNzdWUgIzEzNTkwOgotICAgICAgICAgICAgIyAgICAgICBTaW5jZSBBcHBsZSByZW1vdmVkIGdjYy00LjIgaW4gWGNvZGUgNC4yLCB3ZSBjYW4gbm8KLSAgICAgICAgICAgICMgICAgICAgbG9uZ2VyIGFzc3VtZSBpdCBpcyBhdmFpbGFibGUgZm9yIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzLgotICAgICAgICAgICAgIyAgICAgICBJZiBQeXRob24gd2FzIGJ1aWx0IHdpdGggZ2NjLTQuMiwgY2hlY2sgZmlyc3QgdG8gc2VlIGlmCi0gICAgICAgICAgICAjICAgICAgIGl0IGlzIGF2YWlsYWJsZSBvbiB0aGlzIHN5c3RlbTsgaWYgbm90LCB0cnkgdG8gdXNlIGNsYW5nCi0gICAgICAgICAgICAjICAgICAgIGluc3RlYWQgdW5sZXNzIHRoZSBjYWxsZXIgZXhwbGljaXRseSBzZXQgQ0MuCi0gICAgICAgICAgICBnbG9iYWwgX1VTRV9DTEFORwotICAgICAgICAgICAgaWYgX1VTRV9DTEFORyBpcyBOb25lOgotICAgICAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKLSAgICAgICAgICAgICAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IFBvcGVuLCBQSVBFCi0gICAgICAgICAgICAgICAgcCA9IFBvcGVuKCIhIHR5cGUgZ2NjLTQuMiAmJiB0eXBlIGNsYW5nICYmIGV4aXQgMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKLSAgICAgICAgICAgICAgICBwLndhaXQoKQotICAgICAgICAgICAgICAgIGlmIHAucmV0dXJuY29kZSA9PSAyOgotICAgICAgICAgICAgICAgICAgICBfVVNFX0NMQU5HID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBsb2cud2FybigiZ2NjLTQuMiBub3QgZm91bmQsIHVzaW5nIGNsYW5nIGluc3RlYWQiKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIF9VU0VfQ0xBTkcgPSBGYWxzZQotICAgICAgICAgICAgaWYgX1VTRV9DTEFORzoKLSAgICAgICAgICAgICAgICBuZXdjYyA9ICdjbGFuZycKLSAgICAgICAgaWYgbmV3Y2M6Ci0gICAgICAgICAgICAjIE9uIE9TIFgsIGlmIENDIGlzIG92ZXJyaWRkZW4sIHVzZSB0aGF0IGFzIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAjICAgICAgIGNvbW1hbmQgZm9yIExEU0hBUkVEIGFzIHdlbGwKLSAgICAgICAgICAgIGlmIChzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicKLSAgICAgICAgICAgICAgICAgICAgYW5kICdMRFNIQVJFRCcgbm90IGluIG9zLmVudmlyb24KLSAgICAgICAgICAgICAgICAgICAgYW5kIGxkc2hhcmVkLnN0YXJ0c3dpdGgoY2MpKToKLSAgICAgICAgICAgICAgICBsZHNoYXJlZCA9IG5ld2NjICsgbGRzaGFyZWRbbGVuKGNjKTpdCi0gICAgICAgICAgICBjYyA9IG5ld2NjCisgICAgICAgICAgICBjYyA9IG9zLmVudmlyb25bJ0NDJ10KICAgICAgICAgaWYgJ0NYWCcgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgIGN4eCA9IG9zLmVudmlyb25bJ0NYWCddCiAgICAgICAgIGlmICdMRFNIQVJFRCcgaW4gb3MuZW52aXJvbjoKQEAgLTIzMiw5ICsyMzUsOSBAQAogICAgICIiIlJldHVybiBmdWxsIHBhdGhuYW1lIG9mIGluc3RhbGxlZCBweWNvbmZpZy5oIGZpbGUuIiIiCiAgICAgaWYgcHl0aG9uX2J1aWxkOgogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICAgICBpbmNfZGlyID0gb3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgIlBDIikKKyAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIHByb2plY3RfYmFzZSwgIlBDIikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGluY19kaXIgPSBwcm9qZWN0X2Jhc2UKKyAgICAgICAgICAgIGluY19kaXIgPSBfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlCiAgICAgZWxzZToKICAgICAgICAgaW5jX2RpciA9IGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MSkKICAgICBpZiBnZXRfcHl0aG9uX3ZlcnNpb24oKSA8ICcyLjInOgpAQCAtMjQ4LDcgKzI1MSw4IEBACiBkZWYgZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCk6CiAgICAgIiIiUmV0dXJuIGZ1bGwgcGF0aG5hbWUgb2YgaW5zdGFsbGVkIE1ha2VmaWxlIGZyb20gdGhlIFB5dGhvbiBidWlsZC4iIiIKICAgICBpZiBweXRob25fYnVpbGQ6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgIk1ha2VmaWxlIikKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3Igb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWtlZmlsZSIpCiAgICAgbGliX2RpciA9IGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTEpCiAgICAgY29uZmlnX2ZpbGUgPSAnY29uZmlnLXt9e30nLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSwgYnVpbGRfZmxhZ3MpCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihsaWJfZGlyLCBjb25maWdfZmlsZSwgJ01ha2VmaWxlJykKQEAgLTUxMCw3ICs1MTQsNyBAQAogICAgIHZhcmlhYmxlcyByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uICBHZW5lcmFsbHkgdGhpcyBpbmNsdWRlcwogICAgIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGJ1aWxkIGV4dGVuc2lvbnMgYW5kIGluc3RhbGwgYm90aCBwdXJlIG1vZHVsZXMgYW5kCiAgICAgZXh0ZW5zaW9ucy4gIE9uIFVuaXgsIHRoaXMgbWVhbnMgZXZlcnkgdmFyaWFibGUgZGVmaW5lZCBpbiBQeXRob24ncwotICAgIGluc3RhbGxlZCBNYWtlZmlsZTsgb24gV2luZG93cyBhbmQgTWFjIE9TIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgorICAgIGluc3RhbGxlZCBNYWtlZmlsZTsgb24gV2luZG93cyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KIAogICAgIFdpdGggYXJndW1lbnRzLCByZXR1cm4gYSBsaXN0IG9mIHZhbHVlcyB0aGF0IHJlc3VsdCBmcm9tIGxvb2tpbmcgdXAKICAgICBlYWNoIGFyZ3VtZW50IGluIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGRpY3Rpb25hcnkuCkBAIC01MjksNiArNTMzLDIzIEBACiAgICAgICAgIF9jb25maWdfdmFyc1sncHJlZml4J10gPSBQUkVGSVgKICAgICAgICAgX2NvbmZpZ192YXJzWydleGVjX3ByZWZpeCddID0gRVhFQ19QUkVGSVgKIAorICAgICAgICAjIEFsd2F5cyBjb252ZXJ0IHNyY2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCisgICAgICAgIHNyY2RpciA9IF9jb25maWdfdmFycy5nZXQoJ3NyY2RpcicsIHByb2plY3RfYmFzZSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgaWYgcHl0aG9uX2J1aWxkOgorICAgICAgICAgICAgICAgICMgSWYgc3JjZGlyIGlzIGEgcmVsYXRpdmUgcGF0aCAodHlwaWNhbGx5ICcuJyBvciAnLi4nKQorICAgICAgICAgICAgICAgICMgdGhlbiBpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICMgY29udGFpbmluZyBNYWtlZmlsZS4KKyAgICAgICAgICAgICAgICBiYXNlID0gb3MucGF0aC5kaXJuYW1lKGdldF9tYWtlZmlsZV9maWxlbmFtZSgpKQorICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihiYXNlLCBzcmNkaXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIG5vdCBtZWFuaW5nZnVsIHNpbmNlIHRoZSBpbnN0YWxsYXRpb24gaXMKKyAgICAgICAgICAgICAgICAjIHNwcmVhZCBhYm91dCB0aGUgZmlsZXN5c3RlbS4gIFdlIGNob29zZSB0aGUKKyAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBNYWtlZmlsZSBzaW5jZSB3ZSBrbm93IGl0CisgICAgICAgICAgICAgICAgIyBleGlzdHMuCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5kaXJuYW1lKGdldF9tYWtlZmlsZV9maWxlbmFtZSgpKQorICAgICAgICBfY29uZmlnX3ZhcnNbJ3NyY2RpciddID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgoc3JjZGlyKSkKKwogICAgICAgICAjIENvbnZlcnQgc3JjZGlyIGludG8gYW4gYWJzb2x1dGUgcGF0aCBpZiBpdCBhcHBlYXJzIG5lY2Vzc2FyeS4KICAgICAgICAgIyBOb3JtYWxseSBpdCBpcyByZWxhdGl2ZSB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgSG93ZXZlciwgZHVyaW5nCiAgICAgICAgICMgdGVzdGluZywgZm9yIGV4YW1wbGUsIHdlIG1pZ2h0IGJlIHJ1bm5pbmcgYSBub24taW5zdGFsbGVkIHB5dGhvbgpAQCAtNTQzLDQzICs1NjQsMTEgQEAKICAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgX2NvbmZpZ192YXJzWydzcmNkaXInXSkKICAgICAgICAgICAgICAgICBfY29uZmlnX3ZhcnNbJ3NyY2RpciddID0gb3MucGF0aC5ub3JtcGF0aChzcmNkaXIpCiAKKyAgICAgICAgIyBPUyBYIHBsYXRmb3JtcyByZXF1aXJlIHNwZWNpYWwgY3VzdG9taXphdGlvbiB0byBoYW5kbGUKKyAgICAgICAgIyBtdWx0aS1hcmNoaXRlY3R1cmUsIG11bHRpLW9zLXZlcnNpb24gaW5zdGFsbGVycwogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICBrZXJuZWxfdmVyc2lvbiA9IG9zLnVuYW1lKClbMl0gIyBLZXJuZWwgdmVyc2lvbiAoOC40LjMpCi0gICAgICAgICAgICBtYWpvcl92ZXJzaW9uID0gaW50KGtlcm5lbF92ZXJzaW9uLnNwbGl0KCcuJylbMF0pCi0KLSAgICAgICAgICAgIGlmIG1ham9yX3ZlcnNpb24gPCA4OgotICAgICAgICAgICAgICAgICMgT24gTWFjIE9TIFggYmVmb3JlIDEwLjQsIGNoZWNrIGlmIC1hcmNoIGFuZCAtaXN5c3Jvb3QKLSAgICAgICAgICAgICAgICAjIGFyZSBpbiBDRkxBR1Mgb3IgTERGTEFHUyBhbmQgcmVtb3ZlIHRoZW0gaWYgdGhleSBhcmUuCi0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGV4dGVuc2lvbnMgb24gYSAxMC4zIHN5c3RlbQotICAgICAgICAgICAgICAgICMgdXNpbmcgYSB1bml2ZXJzYWwgYnVpbGQgb2YgcHl0aG9uLgotICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gKCdMREZMQUdTJywgJ0JBU0VDRkxBR1MnLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBvZiBkZXJpdmVkIHZhcmlhYmxlcy4gVGhlc2UgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaGVkIHVwIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ0ZMQUdTJywgJ1BZX0NGTEFHUycsICdCTERTSEFSRUQnKToKLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNba2V5XQotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MsIHJlLkFTQ0lJKQotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICBfY29uZmlnX3ZhcnNba2V5XSA9IGZsYWdzCi0KLSAgICAgICAgICAgIGVsc2U6Ci0KLSAgICAgICAgICAgICAgICAjIEFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBhcmNoaXRlY3R1cmUgZmxhZ3MgdXNpbmcKLSAgICAgICAgICAgICAgICAjIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICMgTk9URTogVGhpcyBuYW1lIHdhcyBpbnRyb2R1Y2VkIGJ5IEFwcGxlIGluIE9TWCAxMC41IGFuZAotICAgICAgICAgICAgICAgICMgaXMgdXNlZCBieSBzZXZlcmFsIHNjcmlwdGluZyBsYW5ndWFnZXMgZGlzdHJpYnV0ZWQgd2l0aAotICAgICAgICAgICAgICAgICMgdGhhdCBPUyByZWxlYXNlLgotCi0gICAgICAgICAgICAgICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgICAgICAgICAgYXJjaCA9IG9zLmVudmlyb25bJ0FSQ0hGTEFHUyddCi0gICAgICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gKCdMREZMQUdTJywgJ0JBU0VDRkxBR1MnLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBvZiBkZXJpdmVkIHZhcmlhYmxlcy4gVGhlc2UgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaGVkIHVwIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ0ZMQUdTJywgJ1BZX0NGTEFHUycsICdCTERTSEFSRUQnKToKLQotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNba2V5XQotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyArICcgJyArIGFyY2gKLSAgICAgICAgICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1trZXldID0gZmxhZ3MKKyAgICAgICAgICAgIGltcG9ydCBfb3N4X3N1cHBvcnQKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5jdXN0b21pemVfY29uZmlnX3ZhcnMoX2NvbmZpZ192YXJzKQogCiAgICAgaWYgYXJnczoKICAgICAgICAgdmFscyA9IFtdCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQppbmRleCA4ZWRmYWI0Li4xYWZkZDQ2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKQEAgLTEsNiArMSw4IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5hcmNoaXZlX3V0aWwuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1wb3J0IHRhcmZpbGUKIGZyb20gb3MucGF0aCBpbXBvcnQgc3BsaXRkcml2ZQogaW1wb3J0IHdhcm5pbmdzCkBAIC0yNSw2ICsyNywxOCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIFpMSUJfU1VQUE9SVCA9IEZhbHNlCiAKK2RlZiBjYW5fZnNfZW5jb2RlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZW5hbWUgY2FuIGJlIHNhdmVkIGluIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAiIiIKKyAgICBpZiBvcy5wYXRoLnN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCiAKIGNsYXNzIEFyY2hpdmVVdGlsVGVzdENhc2Uoc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5Mb2dnaW5nU2lsZW5jZXIsCkBAIC0zMiw2ICs0NiwyOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKICAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGwoc2VsZik6CisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnYXJjaGl2ZScpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9mc19lbmNvZGUoJ8OlcmNoaXYnKSwKKyAgICAgICAgJ0ZpbGUgc3lzdGVtIGNhbm5vdCBoYW5kbGUgdGhpcyBmaWxlbmFtZScpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2xhdGluMShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE1pcnJvciB0ZXN0X21ha2VfdGFyYmFsbCwgZXhjZXB0IGZpbGVuYW1lIGNvbnRhaW5zIGxhdGluIGNoYXJhY3RlcnMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ8OlcmNoaXYnKSAjIG5vdGUgdGhpcyBpc24ndCBhIHJlYWwgd29yZAorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fZnNfZW5jb2RlKCfjga7jgqLjg7zjgqvjgqTjg5YnKSwKKyAgICAgICAgJ0ZpbGUgc3lzdGVtIGNhbm5vdCBoYW5kbGUgdGhpcyBmaWxlbmFtZScpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2V4dGVuZGVkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgZXh0ZW5kZWQKKyAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBsYXRpbiBjaGFyc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCfjga7jgqLjg7zjgqvjgqTjg5YnKSAjIGphcGFuZXNlIGZvciBhcmNoaXZlCisKKyAgICBkZWYgX21ha2VfdGFyYmFsbChzZWxmLCB0YXJnZXRfbmFtZSk6CiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHRhcgogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUxJ10sICd4eHgnKQpAQCAtNDMsNyArNzksNyBAQAogICAgICAgICB1bml0dGVzdC5za2lwVW5sZXNzKHNwbGl0ZHJpdmUodG1wZGlyKVswXSA9PSBzcGxpdGRyaXZlKHRtcGRpcjIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3VyY2UgYW5kIHRhcmdldCBzaG91bGQgYmUgb24gc2FtZSBkcml2ZSIpCiAKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsIHRhcmdldF9uYW1lKQogCiAgICAgICAgICMgd29ya2luZyB3aXRoIHJlbGF0aXZlIHBhdGhzIHRvIGF2b2lkIHRhciB3YXJuaW5ncwogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKQEAgLTU4LDcgKzk0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQogCiAgICAgICAgICMgdHJ5aW5nIGFuIHVuY29tcHJlc3NlZCBvbmUKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsIHRhcmdldF9uYW1lKQogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgb3MuY2hkaXIodG1wZGlyKQogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQppbmRleCBhYjdhMWJmLi5iMDkwYjc5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKQEAgLTI4LDYgKzI4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUuZW5jb2RlKCJVVEYtOCIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic3lzLmV4ZWN1dGFibGUgaXMgbm90IGVuY29kYWJsZSB0byBVVEYtOCIpCisKICAgICAgICAgc3VwZXIoQnVpbGRScG1UZXN0Q2FzZSwgc2VsZikuc2V0VXAoKQogICAgICAgICBzZWxmLm9sZF9sb2NhdGlvbiA9IG9zLmdldGN3ZCgpCiAgICAgICAgIHNlbGYub2xkX3N5c19hcmd2ID0gc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCkBAIC00Miw3ICs0Nyw3IEBACiAKICAgICAgICAgIyBYWFggSSBhbSB1bmFibGUgeWV0IHRvIG1ha2UgdGhpcyB0ZXN0IHdvcmsgd2l0aG91dAogICAgICAgICAjIHNwdXJpb3VzIHNkdG91dC9zdGRlcnIgb3V0cHV0IHVuZGVyIE1hYyBPUyBYCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnbGludXgyJzoKKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyB0aGlzIHRlc3Qgd2lsbCBydW4gb25seSBpZiB0aGUgcnBtIGNvbW1hbmRzIGFyZSBmb3VuZApAQCAtODYsNyArOTEsNyBAQAogCiAgICAgICAgICMgWFhYIEkgYW0gdW5hYmxlIHlldCB0byBtYWtlIHRoaXMgdGVzdCB3b3JrIHdpdGhvdXQKICAgICAgICAgIyBzcHVyaW91cyBzZHRvdXQvc3RkZXJyIG91dHB1dCB1bmRlciBNYWMgT1MgWAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2xpbnV4Mic6CisgICAgICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE1MzMxNjQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IGZiZTI2YmYuLjgyNmVhNDIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQpAQCAtNTMsNiArNTMsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoY3ZhcnMsIGRpY3QpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3ZhcnMpCiAKKyAgICBkZWYgdGVzdF9zcmNkaXIoc2VsZik6CisgICAgICAgICMgU2VlIElzc3VlcyAjMTUzMjIsICMxNTM2NC4KKyAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKHNyY2RpciksIHNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoc3JjZGlyKSwgc3JjZGlyKQorCisgICAgICAgIGlmIHN5c2NvbmZpZy5weXRob25fYnVpbGQ6CisgICAgICAgICAgICAjIFRoZSBweXRob24gZXhlY3V0YWJsZSBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHNvIHNyY2RpcgorICAgICAgICAgICAgIyBzaG91bGQgYmUgYSBmdWxsIHNvdXJjZSBjaGVja291dC4KKyAgICAgICAgICAgIFB5dGhvbl9oID0gb3MucGF0aC5qb2luKHNyY2RpciwgJ0luY2x1ZGUnLCAnUHl0aG9uLmgnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKFB5dGhvbl9oKSwgUHl0aG9uX2gpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzY29uZmlnLl9pc19weXRob25fc291cmNlX2RpcihzcmNkaXIpKQorICAgICAgICBlbGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5kaXJuYW1lKHN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNkaXIpCisKKyAgICBkZWYgdGVzdF9zcmNkaXJfaW5kZXBlbmRlbnRfb2ZfY3dkKHNlbGYpOgorICAgICAgICAjIHNyY2RpciBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKCcuLicpCisgICAgICAgICAgICBzcmNkaXIyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIoY3dkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY2Rpciwgc3JjZGlyMikKKwogICAgIGRlZiB0ZXN0X2N1c3RvbWl6ZV9jb21waWxlcihzZWxmKToKIAogICAgICAgICAjIG5vdCB0ZXN0aW5nIGlmIGRlZmF1bHQgY29tcGlsZXIgaXMgbm90IHVuaXgKQEAgLTEwMiw3ICsxMzEsMjcgQEAKICAgICAgICAgaW1wb3J0IHN5c2NvbmZpZyBhcyBnbG9iYWxfc3lzY29uZmlnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ0ZMQUdTJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ0ZMQUdTJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERGTEFHUycpLCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xERkxBR1MnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMRFNIQVJFRCcpLHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERTSEFSRUQnKSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDVVNUT01JWkVEX09TWF9DT01QSUxFUicpLCdjb21waWxlciBmbGFncyBjdXN0b21pemVkJykKKyAgICBkZWYgdGVzdF9zeXNjb25maWdfY29tcGlsZXJfdmFycyhzZWxmKToKKyAgICAgICAgIyBPbiBPUyBYLCBiaW5hcnkgaW5zdGFsbGVycyBzdXBwb3J0IGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRpbmcgb24KKyAgICAgICAgIyB2YXJpb3VzIGxldmVscyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3aXRoIGRpZmZlcmluZyBYY29kZQorICAgICAgICAjIGNvbmZpZ3VyYXRpb25zLiAgVGhpcyByZXF1aXJlcyBjdXN0b21pemF0aW9uIG9mIHNvbWUgb2YgdGhlCisgICAgICAgICMgY29tcGlsZXIgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIHRvIHN1aXQgdGhlIGVudmlyb25tZW50IG9uCisgICAgICAgICMgdGhlIGluc3RhbGxlZCBtYWNoaW5lLiAgU29tZSBvZiB0aGVzZSBjdXN0b21pemF0aW9ucyBtYXkgcmVxdWlyZQorICAgICAgICAjIHJ1bm5pbmcgZXh0ZXJuYWwgcHJvZ3JhbXMgYW5kLCBzbywgYXJlIGRlZmVycmVkIHVudGlsIG5lZWRlZCBieQorICAgICAgICAjIHRoZSBmaXJzdCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkLiAgV2l0aCBQeXRob24gMy4zLCBvbmx5CisgICAgICAgICMgdGhlIERpc3R1dGlscyB2ZXJzaW9uIG9mIHN5c2NvbmZpZyBpcyB1c2VkIGZvciBleHRlbnNpb24gbW9kdWxlCisgICAgICAgICMgYnVpbGRzLCB3aGljaCBoYXBwZW5zIGVhcmxpZXIgaW4gdGhlIERpc3R1dGlscyB0ZXN0cy4gIFRoaXMgbWF5CisgICAgICAgICMgY2F1c2UgdGhlIGZvbGxvd2luZyB0ZXN0cyB0byBmYWlsIHNpbmNlIG5vIHRlc3RzIGhhdmUgY2F1c2VkCisgICAgICAgICMgdGhlIGdsb2JhbCB2ZXJzaW9uIG9mIHN5c2NvbmZpZyB0byBjYWxsIHRoZSBjdXN0b21pemF0aW9uIHlldC4KKyAgICAgICAgIyBUaGUgc29sdXRpb24gZm9yIG5vdyBpcyB0byBzaW1wbHkgc2tpcCB0aGlzIHRlc3QgaW4gdGhpcyBjYXNlLgorICAgICAgICAjIFRoZSBsb25nZXItdGVybSBzb2x1dGlvbiBpcyB0byBvbmx5IGhhdmUgb25lIHZlcnNpb24gb2Ygc3lzY29uZmlnLgorCisgICAgICAgIGltcG9ydCBzeXNjb25maWcgYXMgZ2xvYmFsX3N5c2NvbmZpZworICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NVU1RPTUlaRURfT1NYX0NPTVBJTEVSJyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMRFNIQVJFRCcpLCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ0MnKSwgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkKaW5kZXggMWEwNmQ0Yy4uZWFjOWI1MSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkKQEAgLTEzLDYgKzEzLDcgQEAKIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXJzCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IF9vc3hfc3VwcG9ydAogCiBjbGFzcyBVdGlsVGVzdENhc2Uoc3VwcG9ydC5FbnZpcm9uR3VhcmQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtOTIsNiArOTMsNyBAQAogICAgICAgICAgICAgICAgICAgICgnRGFyd2luIEtlcm5lbCBWZXJzaW9uIDguMTEuMTogJwogICAgICAgICAgICAgICAgICAgICAnV2VkIE9jdCAxMCAxODoyMzoyOCBQRFQgMjAwNzsgJwogICAgICAgICAgICAgICAgICAgICAncm9vdDp4bnUtNzkyLjI1LjIwfjEvUkVMRUFTRV9JMzg2JyksICdpMzg2JykpCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCddID0gJzEwLjMnCiAKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctZm5vLXN0cmljdC1hbGlhc2luZyAtRE5ERUJVRyAtZyAnCkBAIC0xMDUsNiArMTA3LDcgQEAKICAgICAgICAgICAgIHN5cy5tYXhzaXplID0gY3Vyc2l6ZQogCiAgICAgICAgICMgbWFjYm9vayB3aXRoIGZhdCBiaW5hcmllcyAoZmF0LCB1bml2ZXJzYWwgb3IgZmF0NjQpCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCddID0gJzEwLjQnCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCkBAIC0xMTMsMTAgKzExNiwxMiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgb3MuZW52aXJvblsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdCcpCiAKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwpAQCAtMTI0LDE4ICsxMjksMjEgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtaW50ZWwnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQzJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggcHBjNjQgLWFyY2ggeDg2XzY0IC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtdW5pdmVyc2FsJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIHBwYzY0IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKQEAgLTE0NCw2ICsxNTIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0NjQnKQogCiAgICAgICAgIGZvciBhcmNoIGluICgncHBjJywgJ2kzODYnLCAneDg2XzY0JywgJ3BwYzY0Jyk6CisgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoICVzIC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CmluZGV4IGM3MGEzY2MuLjA5NGEyZjAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKQEAgLTIzLDYgKzIzLDkgQEAKICAgICAgRGlzdHV0aWxzRXhlY0Vycm9yLCBDb21waWxlRXJyb3IsIExpYkVycm9yLCBMaW5rRXJyb3IKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKIAoraWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGltcG9ydCBfb3N4X3N1cHBvcnQKKwogIyBYWFggVGhpbmdzIG5vdCBjdXJyZW50bHkgaGFuZGxlZDoKICMgICAqIG9wdGltaXphdGlvbi9kZWJ1Zy93YXJuaW5nIGZsYWdzOyB3ZSBqdXN0IHVzZSB3aGF0ZXZlcidzIGluIFB5dGhvbidzCiAjICAgICBNYWtlZmlsZSBhbmQgbGl2ZSB3aXRoIGl0LiAgSXMgdGhpcyBhZGVxdWF0ZT8gIElmIG5vdCwgd2UgbWlnaHQKQEAgLTM4LDY4ICs0MSw2IEBACiAjICAgICBzaG91bGQganVzdCBoYXBwaWx5IHN0dWZmIHRoZW0gaW50byB0aGUgcHJlcHJvY2Vzc29yL2NvbXBpbGVyL2xpbmtlcgogIyAgICAgb3B0aW9ucyBhbmQgY2Fycnkgb24uCiAKLWRlZiBfZGFyd2luX2NvbXBpbGVyX2ZpeHVwKGNvbXBpbGVyX3NvLCBjY19hcmdzKToKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc3RyaXAgJy1pc3lzcm9vdCBQQVRIJyBhbmQgJy1hcmNoIEFSQ0gnIGZyb20gdGhlCi0gICAgY29tcGlsZSBmbGFncyBpZiB0aGUgdXNlciBoYXMgc3BlY2lmaWVkIG9uZSB0aGVtIGluIGV4dHJhX2NvbXBpbGVfZmxhZ3MuCi0KLSAgICBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlICctYXJjaCBBUkNIJyBhZGRzIGFub3RoZXIgYXJjaGl0ZWN0dXJlIHRvIHRoZQotICAgIGJ1aWxkLCB3aXRob3V0IGEgd2F5IHRvIHJlbW92ZSBhbiBhcmNoaXRlY3R1cmUuIEZ1cnRoZXJtb3JlIEdDQyB3aWxsCi0gICAgYmFyZiBpZiBtdWx0aXBsZSAnLWlzeXNyb290JyBhcmd1bWVudHMgYXJlIHByZXNlbnQuCi0gICAgIiIiCi0gICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gRmFsc2UKLQotICAgIGNvbXBpbGVyX3NvID0gbGlzdChjb21waWxlcl9zbykKLSAgICBrZXJuZWxfdmVyc2lvbiA9IG9zLnVuYW1lKClbMl0gIyA4LjQuMwotICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoa2VybmVsX3ZlcnNpb24uc3BsaXQoJy4nKVswXSkKLQotICAgIGlmIG1ham9yX3ZlcnNpb24gPCA4OgotICAgICAgICAjIE9TWCBiZWZvcmUgMTAuNC4wLCB0aGVzZSBkb24ndCBzdXBwb3J0IC1hcmNoIGFuZCAtaXN5c3Jvb3QgYXQKLSAgICAgICAgIyBhbGwuCi0gICAgICAgIHN0cmlwQXJjaCA9IHN0cmlwU3lzcm9vdCA9IFRydWUKLSAgICBlbHNlOgotICAgICAgICBzdHJpcEFyY2ggPSAnLWFyY2gnIGluIGNjX2FyZ3MKLSAgICAgICAgc3RyaXBTeXNyb290ID0gJy1pc3lzcm9vdCcgaW4gY2NfYXJncwotCi0gICAgaWYgc3RyaXBBcmNoIG9yICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb246Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBjb21waWxlcl9zby5pbmRleCgnLWFyY2gnKQotICAgICAgICAgICAgICAgICMgU3RyaXAgdGhpcyBhcmd1bWVudCBhbmQgdGhlIG5leHQgb25lOgotICAgICAgICAgICAgICAgIGRlbCBjb21waWxlcl9zb1tpbmRleDppbmRleCsyXQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgIGlmICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb24gYW5kIG5vdCBzdHJpcEFyY2g6Ci0gICAgICAgICMgVXNlciBzcGVjaWZpZWQgZGlmZmVyZW50IC1hcmNoIGZsYWdzIGluIHRoZSBlbnZpcm9uLAotICAgICAgICAjIHNlZSBhbHNvIGRpc3R1dGlscy5zeXNjb25maWcKLSAgICAgICAgY29tcGlsZXJfc28gPSBjb21waWxlcl9zbyArIG9zLmVudmlyb25bJ0FSQ0hGTEFHUyddLnNwbGl0KCkKLQotICAgIGlmIHN0cmlwU3lzcm9vdDoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5kZXggPSBjb21waWxlcl9zby5pbmRleCgnLWlzeXNyb290JykKLSAgICAgICAgICAgICMgU3RyaXAgdGhpcyBhcmd1bWVudCBhbmQgdGhlIG5leHQgb25lOgotICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgIyBDaGVjayBpZiB0aGUgU0RLIHRoYXQgaXMgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24gYWN0dWFsbHkgZXhpc3RzLAotICAgICMgdGhlIHVuaXZlcnNhbCBidWlsZCByZXF1aXJlcyB0aGUgdXNhZ2Ugb2YgYSB1bml2ZXJzYWwgU0RLIGFuZCBub3QgYWxsCi0gICAgIyB1c2VycyBoYXZlIHRoYXQgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCi0gICAgc3lzcm9vdCA9IE5vbmUKLSAgICBpZiAnLWlzeXNyb290JyBpbiBjY19hcmdzOgotICAgICAgICBpZHggPSBjY19hcmdzLmluZGV4KCctaXN5c3Jvb3QnKQotICAgICAgICBzeXNyb290ID0gY2NfYXJnc1tpZHgrMV0KLSAgICBlbGlmICctaXN5c3Jvb3QnIGluIGNvbXBpbGVyX3NvOgotICAgICAgICBpZHggPSBjb21waWxlcl9zby5pbmRleCgnLWlzeXNyb290JykKLSAgICAgICAgc3lzcm9vdCA9IGNvbXBpbGVyX3NvW2lkeCsxXQotCi0gICAgaWYgc3lzcm9vdCBhbmQgbm90IG9zLnBhdGguaXNkaXIoc3lzcm9vdCk6Ci0gICAgICAgIGxvZy53YXJuKCJDb21waWxpbmcgd2l0aCBhbiBTREsgdGhhdCBkb2Vzbid0IHNlZW0gdG8gZXhpc3Q6ICVzIiwKLSAgICAgICAgICAgICAgICBzeXNyb290KQotICAgICAgICBsb2cud2FybigiUGxlYXNlIGNoZWNrIHlvdXIgWGNvZGUgaW5zdGFsbGF0aW9uIikKLQotICAgIHJldHVybiBjb21waWxlcl9zbwogCiBjbGFzcyBVbml4Q0NvbXBpbGVyKENDb21waWxlcik6CiAKQEAgLTE2OCw3ICsxMDksOCBAQAogICAgIGRlZiBfY29tcGlsZShzZWxmLCBvYmosIHNyYywgZXh0LCBjY19hcmdzLCBleHRyYV9wb3N0YXJncywgcHBfb3B0cyk6CiAgICAgICAgIGNvbXBpbGVyX3NvID0gc2VsZi5jb21waWxlcl9zbwogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICBjb21waWxlcl9zbyA9IF9kYXJ3aW5fY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sIGNjX2FyZ3MgKyBleHRyYV9wb3N0YXJncykKKyAgICAgICAgICAgIGNvbXBpbGVyX3NvID0gX29zeF9zdXBwb3J0LmNvbXBpbGVyX2ZpeHVwKGNvbXBpbGVyX3NvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjX2FyZ3MgKyBleHRyYV9wb3N0YXJncykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zcGF3bihjb21waWxlcl9zbyArIGNjX2FyZ3MgKyBbc3JjLCAnLW8nLCBvYmpdICsKICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcG9zdGFyZ3MpCkBAIC0yNDcsNyArMTg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbGlua2VyW2ldID0gc2VsZi5jb21waWxlcl9jeHhbaV0KIAogICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgICAgICAgICAgbGlua2VyID0gX2Rhcndpbl9jb21waWxlcl9maXh1cChsaW5rZXIsIGxkX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIGxpbmtlciA9IF9vc3hfc3VwcG9ydC5jb21waWxlcl9maXh1cChsaW5rZXIsIGxkX2FyZ3MpCiAKICAgICAgICAgICAgICAgICBzZWxmLnNwYXduKGxpbmtlciArIGxkX2FyZ3MpCiAgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQppbmRleCBiY2U4NDAyLi42N2Q4MTY2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CkBAIC01Myw2ICs1MywxMCBAQAogICAgICAgICAgICAgcmV0dXJuICd3aW4taWE2NCcKICAgICAgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQogCisgICAgIyBTZXQgZm9yIGNyb3NzIGJ1aWxkcyBleHBsaWNpdGx5CisgICAgaWYgIl9QWVRIT05fSE9TVF9QTEFURk9STSIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bIl9QWVRIT05fSE9TVF9QTEFURk9STSJdCisKICAgICBpZiBvcy5uYW1lICE9ICJwb3NpeCIgb3Igbm90IGhhc2F0dHIob3MsICd1bmFtZScpOgogICAgICAgICAjIFhYWCB3aGF0IGFib3V0IHRoZSBhcmNoaXRlY3R1cmU/IE5UIGlzIEludGVsIG9yIEFscGhhLAogICAgICAgICAjIE1hYyBPUyBpcyBNNjhrIG9yIFBQQywgZXRjLgpAQCAtOTQsOTQgKzk4LDEwIEBACiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICByZWxlYXNlID0gbS5ncm91cCgpCiAgICAgZWxpZiBvc25hbWVbOjZdID09ICJkYXJ3aW4iOgotICAgICAgICAjCi0gICAgICAgICMgRm9yIG91ciBwdXJwb3Nlcywgd2UnbGwgYXNzdW1lIHRoYXQgdGhlIHN5c3RlbSB2ZXJzaW9uIGZyb20KLSAgICAgICAgIyBkaXN0dXRpbHMnIHBlcnNwZWN0aXZlIGlzIHdoYXQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGlzIHNldAotICAgICAgICAjIHRvLiBUaGlzIG1ha2VzIHRoZSBjb21wYXRpYmlsaXR5IHN0b3J5IGEgYml0IG1vcmUgc2FuZSBiZWNhdXNlIHRoZQotICAgICAgICAjIG1hY2hpbmUgaXMgZ29pbmcgdG8gY29tcGlsZSBhbmQgbGluayBhcyBpZiBpdCB3ZXJlCi0gICAgICAgICMgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULgotICAgICAgICBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFycwotICAgICAgICBjZmd2YXJzID0gZ2V0X2NvbmZpZ192YXJzKCkKLQotICAgICAgICBtYWN2ZXIgPSBjZmd2YXJzLmdldCgnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJykKLQotICAgICAgICBpZiAxOgotICAgICAgICAgICAgIyBBbHdheXMgY2FsY3VsYXRlIHRoZSByZWxlYXNlIG9mIHRoZSBydW5uaW5nIG1hY2hpbmUsCi0gICAgICAgICAgICAjIG5lZWRlZCB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGJ1aWxkIGZhdCBiaW5hcmllcyBvciBub3QuCi0KLSAgICAgICAgICAgIG1hY3JlbGVhc2UgPSBtYWN2ZXIKLSAgICAgICAgICAgICMgR2V0IHRoZSBzeXN0ZW0gdmVyc2lvbi4gUmVhZGluZyB0aGlzIHBsaXN0IGlzIGEgZG9jdW1lbnRlZAotICAgICAgICAgICAgIyB3YXkgdG8gZ2V0IHRoZSBzeXN0ZW0gdmVyc2lvbiAoc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgotICAgICAgICAgICAgIyB0aGUgR2VzdGFsdCBNYW5hZ2VyKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGYgPSBvcGVuKCcvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1N5c3RlbVZlcnNpb24ucGxpc3QnKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBXZSdyZSBvbiBhIHBsYWluIGRhcndpbiBib3gsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgICMgYmVoYXZpb3VyLgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPGtleT5Qcm9kdWN0VXNlclZpc2libGVWZXJzaW9uPC9rZXk+XHMqJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8c3RyaW5nPiguKj8pPC9zdHJpbmc+JywgZi5yZWFkKCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYWNyZWxlYXNlID0gJy4nLmpvaW4obS5ncm91cCgxKS5zcGxpdCgnLicpWzoyXSkKLSAgICAgICAgICAgICAgICAgICAgIyBlbHNlOiBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3VyCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0KLSAgICAgICAgaWYgbm90IG1hY3ZlcjoKLSAgICAgICAgICAgIG1hY3ZlciA9IG1hY3JlbGVhc2UKLQotICAgICAgICBpZiBtYWN2ZXI6Ci0gICAgICAgICAgICBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFycwotICAgICAgICAgICAgcmVsZWFzZSA9IG1hY3ZlcgotICAgICAgICAgICAgb3NuYW1lID0gIm1hY29zeCIKLQotICAgICAgICAgICAgaWYgKG1hY3JlbGVhc2UgKyAnLicpID49ICcxMC40LicgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgJy1hcmNoJyBpbiBnZXRfY29uZmlnX3ZhcnMoKS5nZXQoJ0NGTEFHUycsICcnKS5zdHJpcCgpOgotICAgICAgICAgICAgICAgICMgVGhlIHVuaXZlcnNhbCBidWlsZCB3aWxsIGJ1aWxkIGZhdCBiaW5hcmllcywgYnV0IG5vdCBvbgotICAgICAgICAgICAgICAgICMgc3lzdGVtcyBiZWZvcmUgMTAuNAotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFRyeSB0byBkZXRlY3QgNC13YXkgdW5pdmVyc2FsIGJ1aWxkcywgdGhvc2UgaGF2ZSBtYWNoaW5lLXR5cGUKLSAgICAgICAgICAgICAgICAjICd1bml2ZXJzYWwnIGluc3RlYWQgb2YgJ2ZhdCcuCi0KLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKLSAgICAgICAgICAgICAgICBjZmxhZ3MgPSBnZXRfY29uZmlnX3ZhcnMoKS5nZXQoJ0NGTEFHUycpCi0KLSAgICAgICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCi0gICAgICAgICAgICAgICAgYXJjaHMgPSB0dXBsZShzb3J0ZWQoc2V0KGFyY2hzKSkpCi0KLSAgICAgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBhcmNoc1swXQotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdpbnRlbCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0MycKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0NjQnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJywgJ3BwYzY0JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3VuaXZlcnNhbCcKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBtYWNoaW5lIHZhbHVlIGZvciBhcmNocz0lciIlKGFyY2hzLCkpCi0KLSAgICAgICAgICAgIGVsaWYgbWFjaGluZSA9PSAnaTM4Nic6Ci0gICAgICAgICAgICAgICAgIyBPbiBPU1ggdGhlIG1hY2hpbmUgdHlwZSByZXR1cm5lZCBieSB1bmFtZSBpcyBhbHdheXMgdGhlCi0gICAgICAgICAgICAgICAgIyAzMi1iaXQgdmFyaWFudCwgZXZlbiBpZiB0aGUgZXhlY3V0YWJsZSBhcmNoaXRlY3R1cmUgaXMKLSAgICAgICAgICAgICAgICAjIHRoZSA2NC1iaXQgdmFyaWFudAotICAgICAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3g4Nl82NCcKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lIGluICgnUG93ZXJQQycsICdQb3dlcl9NYWNpbnRvc2gnKToKLSAgICAgICAgICAgICAgICAjIFBpY2sgYSBzYW5lIG5hbWUgZm9yIHRoZSBQUEMgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjJwotCi0gICAgICAgICAgICAgICAgIyBTZWUgJ2kzODYnIGNhc2UKLSAgICAgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGM2NCcKKyAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydCwgZGlzdHV0aWxzLnN5c2NvbmZpZworICAgICAgICBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUgPSBfb3N4X3N1cHBvcnQuZ2V0X3BsYXRmb3JtX29zeCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9jb25maWdfdmFycygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSkKIAogICAgIHJldHVybiAiJXMtJXMtJXMiICUgKG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSkKIApkaWZmIC0tZ2l0IGEvTGliL2RvY3Rlc3QucHkgYi9MaWIvZG9jdGVzdC5weQppbmRleCBlMTg5YzhmLi4zYWYwNWZiIDEwMDY0NAotLS0gYS9MaWIvZG9jdGVzdC5weQorKysgYi9MaWIvZG9jdGVzdC5weQpAQCAtNDU4LDcgKzQ1OCw2IEBACiAgICAgICAgIHJldHVybiBoYXNoKChzZWxmLnNvdXJjZSwgc2VsZi53YW50LCBzZWxmLmxpbmVubywgc2VsZi5pbmRlbnQsCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4Y19tc2cpKQogCi0KIGNsYXNzIERvY1Rlc3Q6CiAgICAgIiIiCiAgICAgQSBjb2xsZWN0aW9uIG9mIGRvY3Rlc3QgZXhhbXBsZXMgdGhhdCBzaG91bGQgYmUgcnVuIGluIGEgc2luZ2xlCkBAIC0xMzY3LDcgKzEzNjYsNyBAQAogICAgICAgICBtID0gc2VsZi5fX0xJTkVDQUNIRV9GSUxFTkFNRV9SRS5tYXRjaChmaWxlbmFtZSkKICAgICAgICAgaWYgbSBhbmQgbS5ncm91cCgnbmFtZScpID09IHNlbGYudGVzdC5uYW1lOgogICAgICAgICAgICAgZXhhbXBsZSA9IHNlbGYudGVzdC5leGFtcGxlc1tpbnQobS5ncm91cCgnZXhhbXBsZW51bScpKV0KLSAgICAgICAgICAgIHJldHVybiBleGFtcGxlLnNvdXJjZS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICByZXR1cm4gZXhhbXBsZS5zb3VyY2Uuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2F2ZV9saW5lY2FjaGVfZ2V0bGluZXMoZmlsZW5hbWUsIG1vZHVsZV9nbG9iYWxzKQogCkBAIC0xNDEzLDYgKzE0MTIsNyBAQAogICAgICAgICAjIE5vdGUgdGhhdCB0aGUgaW50ZXJhY3RpdmUgb3V0cHV0IHdpbGwgZ28gdG8gKm91cioKICAgICAgICAgIyBzYXZlX3N0ZG91dCwgZXZlbiBpZiB0aGF0J3Mgbm90IHRoZSByZWFsIHN5cy5zdGRvdXQ7IHRoaXMKICAgICAgICAgIyBhbGxvd3MgdXMgdG8gd3JpdGUgdGVzdCBjYXNlcyBmb3IgdGhlIHNldF90cmFjZSBiZWhhdmlvci4KKyAgICAgICAgc2F2ZV90cmFjZSA9IHN5cy5nZXR0cmFjZSgpCiAgICAgICAgIHNhdmVfc2V0X3RyYWNlID0gcGRiLnNldF90cmFjZQogICAgICAgICBzZWxmLmRlYnVnZ2VyID0gX091dHB1dFJlZGlyZWN0aW5nUGRiKHNhdmVfc3Rkb3V0KQogICAgICAgICBzZWxmLmRlYnVnZ2VyLnJlc2V0KCkKQEAgLTE0MzIsNiArMTQzMiw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZV9zdGRvdXQKICAgICAgICAgICAgIHBkYi5zZXRfdHJhY2UgPSBzYXZlX3NldF90cmFjZQorICAgICAgICAgICAgc3lzLnNldHRyYWNlKHNhdmVfdHJhY2UpCiAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMgPSBzZWxmLnNhdmVfbGluZWNhY2hlX2dldGxpbmVzCiAgICAgICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBzYXZlX2Rpc3BsYXlob29rCiAgICAgICAgICAgICBpZiBjbGVhcl9nbG9iczoKQEAgLTE2MjgsOCArMTYyOSw4IEBACiAgICAgICAgICMgQ2hlY2sgaWYgd2Ugc2hvdWxkIHVzZSBkaWZmLgogICAgICAgICBpZiBzZWxmLl9kb19hX2ZhbmN5X2RpZmYod2FudCwgZ290LCBvcHRpb25mbGFncyk6CiAgICAgICAgICAgICAjIFNwbGl0IHdhbnQgJiBnb3QgaW50byBsaW5lcy4KLSAgICAgICAgICAgIHdhbnRfbGluZXMgPSB3YW50LnNwbGl0bGluZXMoVHJ1ZSkgICMgVHJ1ZSA9PSBrZWVwIGxpbmUgZW5kcwotICAgICAgICAgICAgZ290X2xpbmVzID0gZ290LnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIHdhbnRfbGluZXMgPSB3YW50LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKKyAgICAgICAgICAgIGdvdF9saW5lcyA9IGdvdC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICAjIFVzZSBkaWZmbGliIHRvIGZpbmQgdGhlaXIgZGlmZmVyZW5jZXMuCiAgICAgICAgICAgICBpZiBvcHRpb25mbGFncyAmIFJFUE9SVF9VRElGRjoKICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYod2FudF9saW5lcywgZ290X2xpbmVzLCBuPTIpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX2VuY29kZWRfd29yZHMucHkgYi9MaWIvZW1haWwvX2VuY29kZWRfd29yZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmNmUyMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9fZW5jb2RlZF93b3Jkcy5weQpAQCAtMCwwICsxLDIyMSBAQAorIiIiIFJvdXRpbmVzIGZvciBtYW5pcHVsYXRpbmcgUkZDMjA0NyBlbmNvZGVkIHdvcmRzLgorCitUaGlzIGlzIGN1cnJlbnRseSBhIHBhY2thZ2UtcHJpdmF0ZSBBUEksIGJ1dCB3aWxsIGJlIGNvbnNpZGVyZWQgZm9yIHByb21vdGlvbgordG8gYSBwdWJsaWMgQVBJIGlmIHRoZXJlIGlzIGRlbWFuZC4KKworIiIiCisKKyMgQW4gZWNvZGVkIHdvcmQgbG9va3MgbGlrZSB0aGlzOgorIworIyAgICAgICAgPT9jaGFyc2V0WypsYW5nXT9jdGU/ZW5jb2RlZF9zdHJpbmc/PQorIworIyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjaGFyc2V0IHNlZSB0aGUgY2hhcnNldCBtb2R1bGUuICBIZXJlIGl0IGlzIG9uZQorIyBvZiB0aGUgcHJlZmVycmVkIE1JTUUgY2hhcnNldCBuYW1lcyAoaG9wZWZ1bGx5OyB5b3UgbmV2ZXIga25vdyB3aGVuIHBhcnNpbmcpLgorIyBjdGUgKENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcpIGlzIGVpdGhlciAncScgb3IgJ2InIChpZ25vcmluZyBjYXNlKS4gIEluCisjIHRoZW9yeSBvdGhlciBsZXR0ZXJzIGNvdWxkIGJlIHVzZWQgZm9yIG90aGVyIGVuY29kaW5ncywgYnV0IGluIHByYWN0aWNlIHRoaXMKKyMgKGFsbW9zdD8pIG5ldmVyIGhhcHBlbnMuICBUaGVyZSBjb3VsZCBiZSBhIHB1YmxpYyBBUEkgZm9yIGFkZGluZyBlbnRyaWVzCisjIHRvIHRvIHRoZSBDVEUgdGFibGVzLCBidXQgWUFHTkkgZm9yIG5vdy4gICdxJyBpcyBRdW90ZWQgUHJpbnRhYmxlLCAnYicgaXMKKyMgQmFzZTY0LiAgVGhlIG1lYW5pbmcgb2YgZW5jb2RlZF9zdHJpbmcgc2hvdWxkIGJlIG9idmlvdXMuICAnbGFuZycgaXMgb3B0aW9uYWwKKyMgYXMgaW5kaWNhdGVkIGJ5IHRoZSBicmFja2V0cyAodGhleSBhcmUgbm90IHBhcnQgb2YgdGhlIHN5bnRheCkgYnV0IGlzIGFsbW9zdAorIyBuZXZlciBlbmNvdW50ZXJlZCBpbiBwcmFjdGljZS4KKyMKKyMgVGhlIGdlbmVyYWwgaW50ZXJmYWNlIGZvciBhIENURSBkZWNvZGVyIGlzIHRoYXQgaXQgdGFrZXMgdGhlIGVuY29kZWRfc3RyaW5nCisjIGFzIGl0cyBhcmd1bWVudCwgYW5kIHJldHVybnMgYSB0dXBsZSAoY3RlX2RlY29kZWRfc3RyaW5nLCBkZWZlY3RzKS4gIFRoZQorIyBjdGVfZGVjb2RlZF9zdHJpbmcgaXMgdGhlIG9yaWdpbmFsIGJpbmFyeSB0aGF0IHdhcyBlbmNvZGVkIHVzaW5nIHRoZQorIyBzcGVjaWZpZWQgY3RlLiAgJ2RlZmVjdHMnIGlzIGEgbGlzdCBvZiBNZXNzYWdlRGVmZWN0IGluc3RhbmNlcyBpbmRpY2F0aW5nIGFueQorIyBwcm9ibGVtcyBlbmNvdW50ZXJlZCBkdXJpbmcgY29udmVyc2lvbi4gICdjaGFyc2V0JyBhbmQgJ2xhbmcnIGFyZSB0aGUKKyMgY29ycmVzcG9uZGluZyBzdHJpbmdzIGV4dHJhY3RlZCBmcm9tIHRoZSBFVywgY2FzZSBwcmVzZXJ2ZWQuCisjCisjIFRoZSBnZW5lcmFsIGludGVyZmFjZSBmb3IgYSBDVEUgZW5jb2RlciBpcyB0aGF0IGl0IHRha2VzIGEgYmluYXJ5IHNlcXVlbmNlCisjIGFzIGlucHV0IGFuZCByZXR1cm5zIHRoZSBjdGVfZW5jb2RlZF9zdHJpbmcsIHdoaWNoIGlzIGFuIGFzY2lpLW9ubHkgc3RyaW5nLgorIworIyBFYWNoIGRlY29kZXIgbXVzdCBhbHNvIHN1cHBseSBhIGxlbmd0aCBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBiaW5hcnkKKyMgc2VxdWVuY2UgYXMgaXRzIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdGluZyBlbmNvZGVkCisjIHN0cmluZy4KKyMKKyMgVGhlIG1haW4gQVBJIGZ1bmN0aW9ucyBmb3IgdGhlIG1vZHVsZSBhcmUgZGVjb2RlLCB3aGljaCBjYWxscyB0aGUgZGVjb2RlcgorIyByZWZlcmVuY2VkIGJ5IHRoZSBjdGUgc3BlY2lmaWVyLCBhbmQgZW5jb2RlLCB3aGljaCBhZGRzIHRoZSBhcHByb3ByaWF0ZQorIyBSRkMgMjA0NyAiY2hyb21lIiB0byB0aGUgZW5jb2RlZCBzdHJpbmcsIGFuZCBjYW4gb3B0aW9uYWxseSBhdXRvbWF0aWNhbGx5CisjIHNlbGVjdCB0aGUgc2hvcnRlc3QgcG9zc2libGUgZW5jb2RpbmcuICBTZWUgdGhlaXIgZG9jc3RyaW5ncyBiZWxvdyBmb3IKKyMgZGV0YWlscy4KKworaW1wb3J0IHJlCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBmdW5jdG9vbHMKK2Zyb20gc3RyaW5nIGltcG9ydCBhc2NpaV9sZXR0ZXJzLCBkaWdpdHMKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworCitfX2FsbF9fID0gWydkZWNvZGVfcScsCisgICAgICAgICAgICdlbmNvZGVfcScsCisgICAgICAgICAgICdkZWNvZGVfYicsCisgICAgICAgICAgICdlbmNvZGVfYicsCisgICAgICAgICAgICdsZW5fcScsCisgICAgICAgICAgICdsZW5fYicsCisgICAgICAgICAgICdkZWNvZGUnLAorICAgICAgICAgICAnZW5jb2RlJywKKyAgICAgICAgICAgXQorCisjCisjIFF1b3RlZCBQcmludGFibGUKKyMKKworIyByZWdleCBiYXNlZCBkZWNvZGVyLgorX3FfYnl0ZV9zdWJiZXIgPSBmdW5jdG9vbHMucGFydGlhbChyZS5jb21waWxlKGJyJz0oW2EtZkEtRjAtOV17Mn0pJykuc3ViLAorICAgICAgICBsYW1iZGEgbTogYnl0ZXMoW2ludChtLmdyb3VwKDEpLCAxNildKSkKKworZGVmIGRlY29kZV9xKGVuY29kZWQpOgorICAgIGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoYidfJywgYicgJykKKyAgICByZXR1cm4gX3FfYnl0ZV9zdWJiZXIoZW5jb2RlZCksIFtdCisKKworIyBkaWN0IG1hcHBpbmcgYnl0ZXMgdG8gdGhlaXIgZW5jb2RlZCBmb3JtCitjbGFzcyBfUUJ5dGVNYXAoZGljdCk6CisKKyAgICBzYWZlID0gYictISorLycgKyBhc2NpaV9sZXR0ZXJzLmVuY29kZSgnYXNjaWknKSArIGRpZ2l0cy5lbmNvZGUoJ2FzY2lpJykKKworICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOgorICAgICAgICBpZiBrZXkgaW4gc2VsZi5zYWZlOgorICAgICAgICAgICAgc2VsZltrZXldID0gY2hyKGtleSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGZba2V5XSA9ICI9ezowMlh9Ii5mb3JtYXQoa2V5KQorICAgICAgICByZXR1cm4gc2VsZltrZXldCisKK19xX2J5dGVfbWFwID0gX1FCeXRlTWFwKCkKKworIyBJbiBoZWFkZXJzIHNwYWNlcyBhcmUgbWFwcGVkIHRvICdfJy4KK19xX2J5dGVfbWFwW29yZCgnICcpXSA9ICdfJworCitkZWYgZW5jb2RlX3EoYnN0cmluZyk6CisgICAgcmV0dXJuICcnLmpvaW4oX3FfYnl0ZV9tYXBbeF0gZm9yIHggaW4gYnN0cmluZykKKworZGVmIGxlbl9xKGJzdHJpbmcpOgorICAgIHJldHVybiBzdW0obGVuKF9xX2J5dGVfbWFwW3hdKSBmb3IgeCBpbiBic3RyaW5nKQorCisKKyMKKyMgQmFzZTY0CisjCisKK2RlZiBkZWNvZGVfYihlbmNvZGVkKToKKyAgICBkZWZlY3RzID0gW10KKyAgICBwYWRfZXJyID0gbGVuKGVuY29kZWQpICUgNAorICAgIGlmIHBhZF9lcnI6CisgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCgpKQorICAgICAgICBwYWRkZWRfZW5jb2RlZCA9IGVuY29kZWQgKyBiJz09PSdbOjQtcGFkX2Vycl0KKyAgICBlbHNlOgorICAgICAgICBwYWRkZWRfZW5jb2RlZCA9IGVuY29kZWQKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBiYXNlNjQuYjY0ZGVjb2RlKHBhZGRlZF9lbmNvZGVkLCB2YWxpZGF0ZT1UcnVlKSwgZGVmZWN0cworICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvcjoKKyAgICAgICAgIyBTaW5jZSB3ZSBoYWQgY29ycmVjdCBwYWRkaW5nLCB0aGlzIG11c3QgYW4gaW52YWxpZCBjaGFyIGVycm9yLgorICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCgpXQorICAgICAgICAjIFRoZSBub24tYWxwaGFiZXQgY2hhcmFjdGVycyBhcmUgaWdub3JlZCBhcyBmYXIgYXMgcGFkZGluZworICAgICAgICAjIGdvZXMsIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyBtYW55IHRoZXJlIGFyZS4gIFNvIHdlJ2xsIGp1c3QKKyAgICAgICAgIyB0cnkgdmFyaW91cyBwYWRkaW5nIGxlbmd0aHMgdW50aWwgc29tZXRoaW5nIHdvcmtzLgorICAgICAgICBmb3IgaSBpbiAwLCAxLCAyLCAzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBiYXNlNjQuYjY0ZGVjb2RlKGVuY29kZWQrYic9JyppLCB2YWxpZGF0ZT1GYWxzZSksIGRlZmVjdHMKKyAgICAgICAgICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBpPT0wOgorICAgICAgICAgICAgICAgICAgICBkZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3QoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuZXhwZWN0ZWQgYmluYXNjaWkuRXJyb3IiKQorCitkZWYgZW5jb2RlX2IoYnN0cmluZyk6CisgICAgcmV0dXJuIGJhc2U2NC5iNjRlbmNvZGUoYnN0cmluZykuZGVjb2RlKCdhc2NpaScpCisKK2RlZiBsZW5fYihic3RyaW5nKToKKyAgICBncm91cHNfb2ZfMywgbGVmdG92ZXIgPSBkaXZtb2QobGVuKGJzdHJpbmcpLCAzKQorICAgICMgNCBieXRlcyBvdXQgZm9yIGVhY2ggMyBieXRlcyAob3Igbm9uemVybyBmcmFjdGlvbiB0aGVyZW9mKSBpbi4KKyAgICByZXR1cm4gZ3JvdXBzX29mXzMgKiA0ICsgKDQgaWYgbGVmdG92ZXIgZWxzZSAwKQorCisKK19jdGVfZGVjb2RlcnMgPSB7CisgICAgJ3EnOiBkZWNvZGVfcSwKKyAgICAnYic6IGRlY29kZV9iLAorICAgIH0KKworZGVmIGRlY29kZShldyk6CisgICAgIiIiRGVjb2RlIGVuY29kZWQgd29yZCBhbmQgcmV0dXJuIChzdHJpbmcsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMpIHR1cGxlLgorCisgICAgQW4gUkZDIDIwNDcvMjI0MyBlbmNvZGVkIHdvcmQgaGFzIHRoZSBmb3JtOgorCisgICAgICAgID0/Y2hhcnNldCpsYW5nP2N0ZT9lbmNvZGVkX3N0cmluZz89CisKKyAgICB3aGVyZSAnKmxhbmcnIG1heSBiZSBvbWl0dGVkIGJ1dCB0aGUgb3RoZXIgcGFydHMgbWF5IG5vdCBiZS4KKworICAgIFRoaXMgZnVuY3Rpb24gZXhwZWN0cyBleGFjdGx5IHN1Y2ggYSBzdHJpbmcgKHRoYXQgaXMsIGl0IGRvZXMgbm90IGNoZWNrIHRoZQorICAgIHN5bnRheCBhbmQgbWF5IHJhaXNlIGVycm9ycyBpZiB0aGUgc3RyaW5nIGlzIG5vdCB3ZWxsIGZvcm1lZCksIGFuZCByZXR1cm5zCisgICAgdGhlIGVuY29kZWRfc3RyaW5nIGRlY29kZWQgZmlyc3QgZnJvbSBpdHMgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyBhbmQKKyAgICB0aGVuIGZyb20gdGhlIHJlc3VsdGluZyBieXRlcyBpbnRvIHVuaWNvZGUgdXNpbmcgdGhlIHNwZWNpZmllZCBjaGFyc2V0LiAgSWYKKyAgICB0aGUgY3RlLWRlY29kZWQgc3RyaW5nIGRvZXMgbm90IHN1Y2Nlc3NmdWxseSBkZWNvZGUgdXNpbmcgdGhlIHNwZWNpZmllZAorICAgIGNoYXJhY3RlciBzZXQsIGEgZGVmZWN0IGlzIGFkZGVkIHRvIHRoZSBkZWZlY3RzIGxpc3QgYW5kIHRoZSB1bmtub3duIG9jdGV0cworICAgIGFyZSByZXBsYWNlZCBieSB0aGUgdW5pY29kZSAndW5rbm93bicgY2hhcmFjdGVyIFx1RkRGRi4KKworICAgIFRoZSBzcGVjaWZpZWQgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgYXJlIHJldHVybmVkLiAgVGhlIGRlZmF1bHQgZm9yIGxhbmd1YWdlLAorICAgIHdoaWNoIGlzIHJhcmVseSBpZiBldmVyIGVuY291bnRlcmVkLCBpcyB0aGUgZW1wdHkgc3RyaW5nLgorCisgICAgIiIiCisgICAgXywgY2hhcnNldCwgY3RlLCBjdGVfc3RyaW5nLCBfID0gZXcuc3BsaXQoJz8nKQorICAgIGNoYXJzZXQsIF8sIGxhbmcgPSBjaGFyc2V0LnBhcnRpdGlvbignKicpCisgICAgY3RlID0gY3RlLmxvd2VyKCkKKyAgICAjIFJlY292ZXIgdGhlIG9yaWdpbmFsIGJ5dGVzIGFuZCBkbyBDVEUgZGVjb2RpbmcuCisgICAgYnN0cmluZyA9IGN0ZV9zdHJpbmcuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgIGJzdHJpbmcsIGRlZmVjdHMgPSBfY3RlX2RlY29kZXJzW2N0ZV0oYnN0cmluZykKKyAgICAjIFR1cm4gdGhlIENURSBkZWNvZGVkIGJ5dGVzIGludG8gdW5pY29kZS4KKyAgICB0cnk6CisgICAgICAgIHN0cmluZyA9IGJzdHJpbmcuZGVjb2RlKGNoYXJzZXQpCisgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKKyAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoIkVuY29kZWQgd29yZCAiCisgICAgICAgICAgICAiY29udGFpbnMgYnl0ZXMgbm90IGRlY29kYWJsZSB1c2luZyB7fSBjaGFyc2V0Ii5mb3JtYXQoY2hhcnNldCkpKQorICAgICAgICBzdHJpbmcgPSBic3RyaW5nLmRlY29kZShjaGFyc2V0LCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICBleGNlcHQgTG9va3VwRXJyb3I6CisgICAgICAgIHN0cmluZyA9IGJzdHJpbmcuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICBpZiBjaGFyc2V0Lmxvd2VyKCkgIT0gJ3Vua25vd24tOGJpdCc6CisgICAgICAgICAgICBkZWZlY3RzLmFwcGVuZChlcnJvcnMuQ2hhcnNldEVycm9yKCJVbmtub3duIGNoYXJzZXQge30gIgorICAgICAgICAgICAgICAgICJpbiBlbmNvZGVkIHdvcmQ7IGRlY29kZWQgYXMgdW5rbm93biBieXRlcyIuZm9ybWF0KGNoYXJzZXQpKSkKKyAgICByZXR1cm4gc3RyaW5nLCBjaGFyc2V0LCBsYW5nLCBkZWZlY3RzCisKKworX2N0ZV9lbmNvZGVycyA9IHsKKyAgICAncSc6IGVuY29kZV9xLAorICAgICdiJzogZW5jb2RlX2IsCisgICAgfQorCitfY3RlX2VuY29kZV9sZW5ndGggPSB7CisgICAgJ3EnOiBsZW5fcSwKKyAgICAnYic6IGxlbl9iLAorICAgIH0KKworZGVmIGVuY29kZShzdHJpbmcsIGNoYXJzZXQ9J3V0Zi04JywgZW5jb2Rpbmc9Tm9uZSwgbGFuZz0nJyk6CisgICAgIiIiRW5jb2RlIHN0cmluZyB1c2luZyB0aGUgQ1RFIGVuY29kaW5nIHRoYXQgcHJvZHVjZXMgdGhlIHNob3J0ZXIgcmVzdWx0LgorCisgICAgUHJvZHVjZXMgYW4gUkZDIDIwNDcvMjI0MyBlbmNvZGVkIHdvcmQgb2YgdGhlIGZvcm06CisKKyAgICAgICAgPT9jaGFyc2V0Kmxhbmc/Y3RlP2VuY29kZWRfc3RyaW5nPz0KKworICAgIHdoZXJlICcqbGFuZycgaXMgb21pdHRlZCB1bmxlc3MgdGhlICdsYW5nJyBwYXJhbWV0ZXIgaXMgZ2l2ZW4gYSB2YWx1ZS4KKyAgICBPcHRpb25hbCBhcmd1bWVudCBjaGFyc2V0IChkZWZhdWx0cyB0byB1dGYtOCkgc3BlY2lmaWVzIHRoZSBjaGFyc2V0IHRvIHVzZQorICAgIHRvIGVuY29kZSB0aGUgc3RyaW5nIHRvIGJpbmFyeSBiZWZvcmUgQ1RFIGVuY29kaW5nIGl0LiAgT3B0aW9uYWwgYXJndW1lbnQKKyAgICAnZW5jb2RpbmcnIGlzIHRoZSBjdGUgc3BlY2lmaWVyIGZvciB0aGUgZW5jb2RpbmcgdGhhdCBzaG91bGQgYmUgdXNlZCAoJ3EnCisgICAgb3IgJ2InKTsgaWYgaXQgaXMgTm9uZSAodGhlIGRlZmF1bHQpIHRoZSBlbmNvZGluZyB3aGljaCBwcm9kdWNlcyB0aGUKKyAgICBzaG9ydGVzdCBlbmNvZGVkIHNlcXVlbmNlIGlzIHVzZWQsIGV4Y2VwdCB0aGF0ICdxJyBpcyBwcmVmZXJyZWQgaWYgaXQgaXMgdXAKKyAgICB0byBmaXZlIGNoYXJhY3RlcnMgbG9uZ2VyLiAgT3B0aW9uYWwgYXJndW1lbnQgJ2xhbmcnIChkZWZhdWx0ICcnKSBnaXZlcyB0aGUKKyAgICBSRkMgMjI0MyBsYW5ndWFnZSBzdHJpbmcgdG8gc3BlY2lmeSBpbiB0aGUgZW5jb2RlZCB3b3JkLgorCisgICAgIiIiCisgICAgaWYgY2hhcnNldCA9PSAndW5rbm93bi04Yml0JzoKKyAgICAgICAgYnN0cmluZyA9IHN0cmluZy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgZWxzZToKKyAgICAgICAgYnN0cmluZyA9IHN0cmluZy5lbmNvZGUoY2hhcnNldCkKKyAgICBpZiBlbmNvZGluZyBpcyBOb25lOgorICAgICAgICBxbGVuID0gX2N0ZV9lbmNvZGVfbGVuZ3RoWydxJ10oYnN0cmluZykKKyAgICAgICAgYmxlbiA9IF9jdGVfZW5jb2RlX2xlbmd0aFsnYiddKGJzdHJpbmcpCisgICAgICAgICMgQmlhcyB0b3dhcmQgcS4gIDUgaXMgYXJiaXRyYXJ5LgorICAgICAgICBlbmNvZGluZyA9ICdxJyBpZiBxbGVuIC0gYmxlbiA8IDUgZWxzZSAnYicKKyAgICBlbmNvZGVkID0gX2N0ZV9lbmNvZGVyc1tlbmNvZGluZ10oYnN0cmluZykKKyAgICBpZiBsYW5nOgorICAgICAgICBsYW5nID0gJyonICsgbGFuZworICAgIHJldHVybiAiPT97fXt9P3t9P3t9Pz0iLmZvcm1hdChjaGFyc2V0LCBsYW5nLCBlbmNvZGluZywgZW5jb2RlZCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weSBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTI0ZWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CkBAIC0wLDAgKzEsMjk1MyBAQAorIiIiSGVhZGVyIHZhbHVlIHBhcnNlciBpbXBsZW1lbnRpbmcgdmFyaW91cyBlbWFpbC1yZWxhdGVkIFJGQyBwYXJzaW5nIHJ1bGVzLgorCitUaGUgcGFyc2luZyBtZXRob2RzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgaW1wbGVtZW50IHZhcmlvdXMgZW1haWwgcmVsYXRlZAorcGFyc2luZyBydWxlcy4gIFByaW5jaXBhbCBhbW9uZyB0aGVtIGlzIFJGQyA1MzIyLCB3aGljaCBpcyB0aGUgZm9sbG93b24KK3RvIFJGQyAyODIyIGFuZCBwcmltYXJpbHkgYSBjbGFyaWZpY2F0aW9uIG9mIHRoZSBmb3JtZXIuICBJdCBhbHNvIGltcGxlbWVudHMKK1JGQyAyMDQ3IGVuY29kZWQgd29yZCBkZWNvZGluZy4KKworUkZDIDUzMjIgZ29lcyB0byBjb25zaWRlcmFibGUgdHJvdWJsZSB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKK1JGQyA4MjIgaW4gdGhlIHBhcnNlIHBoYXNlLCB3aGlsZSBjbGVhbmluZyB1cCB0aGUgc3RydWN0dXJlIG9uIHRoZSBnZW5lcmF0aW9uCitwaGFzZS4gIFRoaXMgcGFyc2VyIHN1cHBvcnRzIGNvcnJlY3QgUkZDIDUzMjIgZ2VuZXJhdGlvbiBieSB0YWdnaW5nIHdoaXRlIHNwYWNlCithcyBmb2xkaW5nIHdoaXRlIHNwYWNlIG9ubHkgd2hlbiBmb2xkaW5nIGlzIGFsbG93ZWQgaW4gdGhlIG5vbi1vYnNvbGV0ZSBydWxlCitzZXRzLiAgQWN0dWFsbHksIHRoZSBwYXJzZXIgaXMgZXZlbiBtb3JlIGdlbmVyb3VzIHdoZW4gYWNjZXB0aW5nIGlucHV0IHRoYW4gUkZDCis1MzIyIG1hbmRhdGVzLCBmb2xsb3dpbmcgdGhlIHNwaXJpdCBvZiBQb3N0ZWwncyBMYXcsIHdoaWNoIFJGQyA1MzIyIGVuY291cmFnZXMuCitXaGVyZSBwb3NzaWJsZSBkZXZpYXRpb25zIGZyb20gdGhlIHN0YW5kYXJkIGFyZSBhbm5vdGF0ZWQgb24gdGhlICdkZWZlY3RzJworYXR0cmlidXRlIG9mIHRva2VucyB0aGF0IGRldmlhdGUuCisKK1RoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiB0aGUgcGFyc2VyIGZvbGxvd3MgUkZDIDUzMjIsIGFuZCB1c2VzIGl0cyB0ZXJtaW5vbG9neQord2hlcmUgdGhlcmUgaXMgYSBkaXJlY3QgY29ycmVzcG9uZGVuY2UuICBXaGVyZSB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgYQorc29tZXdoYXQgZGlmZmVyZW50IHN0cnVjdHVyZSB0aGFuIHRoYXQgdXNlZCBieSB0aGUgZm9ybWFsIGdyYW1tYXIsIG5ldyB0ZXJtcwordGhhdCBtaW1pYyB0aGUgY2xvc2VzdCBleGlzdGluZyB0ZXJtcyBhcmUgdXNlZC4gIFRodXMsIGl0IHJlYWxseSBoZWxwcyB0byBoYXZlCithIGNvcHkgb2YgUkZDIDUzMjIgaGFuZHkgd2hlbiBzdHVkeWluZyB0aGlzIGNvZGUuCisKK0lucHV0IHRvIHRoZSBwYXJzZXIgaXMgYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVuZm9sZGVkIGFjY29yZGluZyB0bworUkZDIDUzMjIgcnVsZXMuICBBY2NvcmRpbmcgdG8gdGhlIFJGQyB0aGlzIHVuZm9sZGluZyBpcyB0aGUgdmVyeSBmaXJzdCBzdGVwLCBhbmQKK3RoaXMgcGFyc2VyIGxlYXZlcyB0aGUgdW5mb2xkaW5nIHN0ZXAgdG8gYSBoaWdoZXIgbGV2ZWwgbWVzc2FnZSBwYXJzZXIsIHdoaWNoCit3aWxsIGhhdmUgYWxyZWFkeSBkZXRlY3RlZCB0aGUgbGluZSBicmVha3MgdGhhdCBuZWVkIHVuZm9sZGluZyB3aGlsZQorZGV0ZXJtaW5pbmcgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGVhY2ggaGVhZGVyLgorCitUaGUgb3V0cHV0IG9mIHRoZSBwYXJzZXIgaXMgYSBUb2tlbkxpc3Qgb2JqZWN0LCB3aGljaCBpcyBhIGxpc3Qgc3ViY2xhc3MuICBBCitUb2tlbkxpc3QgaXMgYSByZWN1cnNpdmUgZGF0YSBzdHJ1Y3R1cmUuICBUaGUgdGVybWluYWwgbm9kZXMgb2YgdGhlIHN0cnVjdHVyZQorYXJlIFRlcm1pbmFsIG9iamVjdHMsIHdoaWNoIGFyZSBzdWJjbGFzc2VzIG9mIHN0ci4gIFRoZXNlIGRvIG5vdCBjb3JyZXNwb25kCitkaXJlY3RseSB0byB0ZXJtaW5hbCBvYmplY3RzIGluIHRoZSBmb3JtYWwgZ3JhbW1hciwgYnV0IGFyZSBpbnN0ZWFkIG1vcmUKK3ByYWN0aWNhbCBoaWdoZXIgbGV2ZWwgY29tYmluYXRpb25zIG9mIHRydWUgdGVybWluYWxzLgorCitBbGwgVG9rZW5MaXN0IGFuZCBUZXJtaW5hbCBvYmplY3RzIGhhdmUgYSAndmFsdWUnIGF0dHJpYnV0ZSwgd2hpY2ggcHJvZHVjZXMgdGhlCitzZW1hbnRpY2FsbHkgbWVhbmluZ2Z1bCB2YWx1ZSBvZiB0aGF0IHBhcnQgb2YgdGhlIHBhcnNlIHN1YnRyZWUuICBUaGUgdmFsdWUgb2YKK2FsbCB3aGl0ZXNwYWNlIHRva2VucyAobm8gbWF0dGVyIGhvdyBtYW55IHN1Yi10b2tlbnMgdGhleSBtYXkgY29udGFpbikgaXMgYQorc2luZ2xlIHNwYWNlLCBhcyBwZXIgdGhlIFJGQyBydWxlcy4gIFRoaXMgaW5jbHVkZXMgJ0NGV1MnLCB3aGljaCBpcyBoZXJlaW4KK2luY2x1ZGVkIGluIHRoZSBnZW5lcmFsIGNsYXNzIG9mIHdoaXRlc3BhY2UgdG9rZW5zLiAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbiB0bwordGhlIHJ1bGUgdGhhdCB3aGl0ZXNwYWNlIHRva2VucyBhcmUgY29sbGFwc2VkIGludG8gc2luZ2xlIHNwYWNlcyBpbiB2YWx1ZXM6IGluCit0aGUgdmFsdWUgb2YgYSAnYmFyZS1xdW90ZWQtc3RyaW5nJyAoYSBxdW90ZWQtc3RyaW5nIHdpdGggbm8gbGVhZGluZyBvcgordHJhaWxpbmcgd2hpdGVzcGFjZSksIGFueSB3aGl0ZXNwYWNlIHRoYXQgYXBwZWFyZWQgYmV0d2VlbiB0aGUgcXVvdGF0aW9uIG1hcmtzCitpcyBwcmVzZXJ2ZWQgaW4gdGhlIHJldHVybmVkIHZhbHVlLiAgTm90ZSB0aGF0IGluIGFsbCBUZXJtaW5hbCBzdHJpbmdzIHF1b3RlZAorcGFpcnMgYXJlIHR1cm5lZCBpbnRvIHRoZWlyIHVucXVvdGVkIHZhbHVlcy4KKworQWxsIFRva2VuTGlzdCBhbmQgVGVybWluYWwgb2JqZWN0cyBhbHNvIGhhdmUgYSBzdHJpbmcgdmFsdWUsIHdoaWNoIGF0dGVtcHRzIHRvCitiZSBhICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBSRkMtY29tcGxpYW50IGZvcm0gb2YgdGhlIHN1YnN0cmluZyB0aGF0Citwcm9kdWNlZCB0aGUgcGFyc2VkIHN1YnRyZWUsIGluY2x1ZGluZyBtaW5pbWFsIHVzZSBvZiBxdW90ZWQgcGFpciBxdW90aW5nLgorV2hpdGVzcGFjZSBydW5zIGFyZSBub3QgY29sbGFwc2VkLgorCitDb21tZW50IHRva2VucyBhbHNvIGhhdmUgYSAnY29udGVudCcgYXR0cmlidXRlIHByb3ZpZGluZyB0aGUgc3RyaW5nIGZvdW5kCitiZXR3ZWVuIHRoZSBwYXJlbnMgKGluY2x1ZGluZyBhbnkgbmVzdGVkIGNvbW1lbnRzKSB3aXRoIHdoaXRlc3BhY2UgcHJlc2VydmVkLgorCitBbGwgVG9rZW5MaXN0IGFuZCBUZXJtaW5hbCBvYmplY3RzIGhhdmUgYSAnZGVmZWN0cycgYXR0cmlidXRlIHdoaWNoIGlzIGEKK3Bvc3NpYmx5IGVtcHR5IGxpc3QgYWxsIG9mIHRoZSBkZWZlY3RzIGZvdW5kIHdoaWxlIGNyZWF0aW5nIHRoZSB0b2tlbi4gIERlZmVjdHMKK21heSBhcHBlYXIgb24gYW55IHRva2VuIGluIHRoZSB0cmVlLCBhbmQgYSBjb21wb3NpdGUgbGlzdCBvZiBhbGwgZGVmZWN0cyBpbiB0aGUKK3N1YnRyZWUgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlICdhbGxfZGVmZWN0cycgYXR0cmlidXRlIG9mIGFueSBub2RlLiAgKEZvcgorVGVybWluYWwgbm90ZXMgeC5kZWZlY3RzID09IHguYWxsX2RlZmVjdHMuKQorCitFYWNoIG9iamVjdCBpbiBhIHBhcnNlIHRyZWUgaXMgY2FsbGVkIGEgJ3Rva2VuJywgYW5kIGVhY2ggaGFzIGEgJ3Rva2VuX3R5cGUnCithdHRyaWJ1dGUgdGhhdCBnaXZlcyB0aGUgbmFtZSBmcm9tIHRoZSBSRkMgNTMyMiBncmFtbWFyIHRoYXQgaXQgcmVwcmVzZW50cy4KK05vdCBhbGwgUkZDIDUzMjIgbm9kZXMgYXJlIHByb2R1Y2VkLCBhbmQgdGhlcmUgaXMgb25lIG5vbi1SRkMgNTMyMiBub2RlIHRoYXQKK21heSBiZSBwcm9kdWNlZDogJ3B0ZXh0Jy4gIEEgJ3B0ZXh0JyBpcyBhIHN0cmluZyBvZiBwcmludGFibGUgYXNjaWkgY2hhcmFjdGVycy4KK0l0IGlzIHJldHVybmVkIGluIHBsYWNlIG9mIGxpc3RzIG9mIChjdGV4dC9xdW90ZWQtcGFpcikgYW5kCisocXRleHQvcXVvdGVkLXBhaXIpLgorCitYWFg6IHByb3ZpZGUgY29tcGxldGUgbGlzdCBvZiB0b2tlbiB0eXBlcy4KKyIiIgorCitpbXBvcnQgcmUKK2ltcG9ydCB1cmxsaWIgICAjIEZvciB1cmxsaWIucGFyc2UudW5xdW90ZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgT3JkZXJlZERpY3QKK2Zyb20gZW1haWwgaW1wb3J0IF9lbmNvZGVkX3dvcmRzIGFzIF9ldworZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCB1dGlscworCisjCisjIFVzZWZ1bCBjb25zdGFudHMgYW5kIGZ1bmN0aW9ucworIworCitXU1AgPSBzZXQoJyBcdCcpCitDRldTX0xFQURFUiA9IFdTUCB8IHNldCgnKCcpCitTUEVDSUFMUyA9IHNldChyJygpPD5ALDo7LlwiW10nKQorQVRPTV9FTkRTID0gU1BFQ0lBTFMgfCBXU1AKK0RPVF9BVE9NX0VORFMgPSBBVE9NX0VORFMgLSBzZXQoJy4nKQorIyAnLicsICciJywgYW5kICcoJyBkbyBub3QgZW5kIHBocmFzZXMgaW4gb3JkZXIgdG8gc3VwcG9ydCBvYnMtcGhyYXNlCitQSFJBU0VfRU5EUyA9IFNQRUNJQUxTIC0gc2V0KCcuIignKQorVFNQRUNJQUxTID0gKFNQRUNJQUxTIHwgc2V0KCcvPz0nKSkgLSBzZXQoJy4nKQorVE9LRU5fRU5EUyA9IFRTUEVDSUFMUyB8IFdTUAorQVNQRUNJQUxTID0gVFNQRUNJQUxTIHwgc2V0KCIqJyUiKQorQVRUUklCVVRFX0VORFMgPSBBU1BFQ0lBTFMgfCBXU1AKK0VYVEVOREVEX0FUVFJJQlVURV9FTkRTID0gQVRUUklCVVRFX0VORFMgLSBzZXQoJyUnKQorCitkZWYgcXVvdGVfc3RyaW5nKHZhbHVlKToKKyAgICByZXR1cm4gJyInK3N0cih2YWx1ZSkucmVwbGFjZSgnXFwnLCAnXFxcXCcpLnJlcGxhY2UoJyInLCByJ1wiJykrJyInCisKKyMKKyMgQWNjdW11bGF0b3IgZm9yIGhlYWRlciBmb2xkaW5nCisjCisKK2NsYXNzIF9Gb2xkZWQ6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4bGVuLCBwb2xpY3kpOgorICAgICAgICBzZWxmLm1heGxlbiA9IG1heGxlbgorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQorICAgICAgICBzZWxmLmxhc3RsZW4gPSAwCisgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gVHJ1ZQorICAgICAgICBzZWxmLmRvbmUgPSBbXQorICAgICAgICBzZWxmLmN1cnJlbnQgPSBbXQorCisgICAgZGVmIG5ld2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYuZG9uZS5leHRlbmQoc2VsZi5jdXJyZW50KQorICAgICAgICBzZWxmLmRvbmUuYXBwZW5kKHNlbGYucG9saWN5LmxpbmVzZXApCisgICAgICAgIHNlbGYuY3VycmVudC5jbGVhcigpCisgICAgICAgIHNlbGYubGFzdGxlbiA9IDAKKworICAgIGRlZiBmaW5hbGl6ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jdXJyZW50OgorICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzZWxmLmRvbmUpCisKKyAgICBkZWYgYXBwZW5kKHNlbGYsIHN0b2tlbik6CisgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorCisgICAgZGVmIGFwcGVuZF9pZl9maXRzKHNlbGYsIHRva2VuLCBzdG9rZW49Tm9uZSk6CisgICAgICAgIGlmIHN0b2tlbiBpcyBOb25lOgorICAgICAgICAgICAgc3Rva2VuID0gc3RyKHRva2VuKQorICAgICAgICBsID0gbGVuKHN0b2tlbikKKyAgICAgICAgaWYgc2VsZi5zdGlja3lzcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN0aWNreXNwYWNlX2xlbiA9IGxlbihzZWxmLnN0aWNreXNwYWNlKQorICAgICAgICAgICAgaWYgc2VsZi5sYXN0bGVuICsgc3RpY2t5c3BhY2VfbGVuICsgbCA8PSBzZWxmLm1heGxlbjoKKyAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5sYXN0bGVuICs9IHN0aWNreXNwYWNlX2xlbgorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgICAgIHNlbGYubGFzdGxlbiArPSBsCisgICAgICAgICAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmZpcnN0bGluZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIHRva2VuLmhhc19md3M6CisgICAgICAgICAgICAgICAgd3MgPSB0b2tlbi5wb3BfbGVhZGluZ19md3MoKQorICAgICAgICAgICAgICAgIGlmIHdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlICs9IHN0cih3cykKKyAgICAgICAgICAgICAgICAgICAgc3RpY2t5c3BhY2VfbGVuICs9IGxlbih3cykKKyAgICAgICAgICAgICAgICB0b2tlbi5fZm9sZChzZWxmKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiBzdGlja3lzcGFjZV9sZW4gYW5kIGwgKyAxIDw9IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgICAgIG1hcmdpbiA9IHNlbGYubWF4bGVuIC0gbAorICAgICAgICAgICAgICAgIGlmIDAgPCBtYXJnaW4gPCBzdGlja3lzcGFjZV9sZW46CisgICAgICAgICAgICAgICAgICAgIHRyaW0gPSBzdGlja3lzcGFjZV9sZW4gLSBtYXJnaW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzZWxmLnN0aWNreXNwYWNlWzp0cmltXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IHNlbGYuc3RpY2t5c3BhY2VbdHJpbTpdCisgICAgICAgICAgICAgICAgICAgIHN0aWNreXNwYWNlX2xlbiA9IHRyaW0KKyAgICAgICAgICAgICAgICBzZWxmLm5ld2xpbmUoKQorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RsZW4gPSBsICsgc3RpY2t5c3BhY2VfbGVuCisgICAgICAgICAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmZpcnN0bGluZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmZpcnN0bGluZToKKyAgICAgICAgICAgICAgICBzZWxmLm5ld2xpbmUoKQorICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzZWxmLnN0aWNreXNwYWNlKQorICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5sYXN0bGVuICsgbCA8PSBzZWxmLm1heGxlbjoKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgc2VsZi5sYXN0bGVuICs9IGwKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGwgPCBzZWxmLm1heGxlbjoKKyAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgIHNlbGYubGFzdGxlbiA9IGwKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisjCisjIFRva2VuTGlzdCBhbmQgaXRzIHN1YmNsYXNzZXMKKyMKKworY2xhc3MgVG9rZW5MaXN0KGxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAne30oe30pJy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyKCkuX19yZXByX18oKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oeC52YWx1ZSBmb3IgeCBpbiBzZWxmIGlmIHgudmFsdWUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWxsX2RlZmVjdHMoc2VsZik6CisgICAgICAgIHJldHVybiBzdW0oKHguYWxsX2RlZmVjdHMgZm9yIHggaW4gc2VsZiksIHNlbGYuZGVmZWN0cykKKworICAgICMKKyAgICAjIEZvbGRpbmcgQVBJCisgICAgIworICAgICMgcGFydHMoKToKKyAgICAjCisgICAgIyByZXR1cm4gYSBsaXN0IG9mIG9iamVjdHMgdGhhdCBjb25zdGl0dXRlIHRoZSAiaGlnaGVyIGxldmVsIHN5bnRhY3RpYworICAgICMgb2JqZWN0cyIgc3BlY2lmaWVkIGJ5IHRoZSBSRkMgYXMgdGhlIGJlc3QgcGxhY2VzIHRvIGZvbGQgYSBoZWFkZXIgbGluZS4KKyAgICAjIFRoZSByZXR1cm5lZCBvYmplY3RzIG11c3QgaW5jbHVkZSBsZWFkaW5nIGZvbGRpbmcgd2hpdGUgc3BhY2UsIGV2ZW4gaWYKKyAgICAjIHRoaXMgbWVhbnMgbXV0YXRpbmcgdGhlIHVuZGVybHlpbmcgcGFyc2UgdHJlZSBvZiB0aGUgb2JqZWN0LiAgRWFjaCBvYmplY3QKKyAgICAjIGlzIG9ubHkgcmVzcG9uc2libGUgZm9yIHJldHVybmluZyAqaXRzKiBwYXJ0cywgYW5kIHNob3VsZCBub3QgZHJpbGwgZG93bgorICAgICMgdG8gYW55IGxvd2VyIGxldmVsIGV4Y2VwdCBhcyByZXF1aXJlZCB0byBtZWV0IHRoZSBsZWFkaW5nIGZvbGRpbmcgd2hpdGUKKyAgICAjIHNwYWNlIGNvbnN0cmFpbnQuCisgICAgIworICAgICMgX2ZvbGQoZm9sZGVkKToKKyAgICAjCisgICAgIyAgIGZvbGRlZDogdGhlIHJlc3VsdCBhY2N1bXVsYXRvci4gIFRoaXMgaXMgYW4gaW5zdGFuY2Ugb2YgX0ZvbGRlZC4KKyAgICAjICAgICAgIChYWFg6IEkgaGF2ZW4ndCBmaW5pc2hlZCBmYWN0b3JpbmcgdGhpcyBvdXQgeWV0LCB0aGUgZm9sZGluZyBjb2RlCisgICAgIyAgICAgICBwcmV0dHkgbXVjaCB1c2VzIHRoaXMgYXMgYSBzdGF0ZSBvYmplY3QuKSBXaGVuIHRoZSBmb2xkZWQuY3VycmVudAorICAgICMgICAgICAgY29udGFpbnMgYXMgbXVjaCB0ZXh0IGFzIHdpbGwgZml0LCB0aGUgX2ZvbGQgbWV0aG9kIHNob3VsZCBjYWxsCisgICAgIyAgICAgICBmb2xkZWQubmV3bGluZS4KKyAgICAjICBmb2xkZWQubGFzdGxlbjogdGhlIGN1cnJlbnQgbGVuZ3RoIG9mIHRoZSB0ZXN0IHN0b3JlZCBpbiBmb2xkZWQuY3VycmVudC4KKyAgICAjICBmb2xkZWQubWF4bGVuOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IG1heSBhcHBlYXIgb24gYQorICAgICMgICAgICAgZm9sZGVkIGxpbmUuICBEaWZmZXJzIGZyb20gdGhlIHBvbGljeSBzZXR0aW5nIGluIHRoYXQgIm5vIGxpbWl0IiBpcworICAgICMgICAgICAgcmVwcmVzZW50ZWQgYnkgK2luZiwgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIHRyaXZpYWxseQorICAgICMgICAgICAgbG9naWNhbCBmYXNoaW9uIGluIGNvbXBhcmlzb25zLgorICAgICMKKyAgICAjIEN1cnJlbnRseSBubyBzdWJjbGFzc2VzIGltcGxlbWVudCBwYXJ0cywgYW5kIEkgdGhpbmsgdGhpcyB3aWxsIHJlbWFpbgorICAgICMgdHJ1ZS4gIEEgc3ViY2xhc3Mgb25seSBuZWVkcyB0byBpbXBsZW1lbnQgX2ZvbGQgd2hlbiB0aGUgZ2VuZXJpYyB2ZXJzaW9uCisgICAgIyBpc24ndCBzdWZmaWNpZW50LiAgX2ZvbGQgd2lsbCBuZWVkIHRvIGJlIGltcGxlbWVudGVkIHByaW1hcmlseSB3aGVuIGl0IGlzCisgICAgIyBwb3NzaWJsZSBmb3IgZW5jb2RlZCB3b3JkcyB0byBhcHBlYXIgaW4gdGhlIHNwZWNpYWxpemVkIHRva2VuLWxpc3QsIHNpbmNlCisgICAgIyB0aGVyZSBpcyBubyBnZW5lcmljIGFsZ29yaXRobSB0aGF0IGNhbiBrbm93IHdoZXJlIGV4YWN0bHkgdGhlIGVuY29kZWQKKyAgICAjIHdvcmRzIGFyZSBhbGxvd2VkLiAgQSBfZm9sZCBpbXBsZW1lbnRhdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZmlsbGluZworICAgICMgbGluZXMgaW4gdGhlIHNhbWUgZ2VuZXJhbCB3YXkgdGhhdCB0aGUgdG9wIGxldmVsIF9mb2xkIGRvZXMuIEl0IG1heSwgYW5kCisgICAgIyBzaG91bGQsIGNhbGwgdGhlIF9mb2xkIG1ldGhvZCBvZiBzdWItb2JqZWN0cyBpbiBhIHNpbWlsYXIgZmFzaGlvbiB0byB0aGF0CisgICAgIyBvZiB0aGUgdG9wIGxldmVsIF9mb2xkLgorICAgICMKKyAgICAjIFhYWDogSSdtIGhvcGluZyBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvIGZhY3RvciB0aGUgZXhpc3RpbmcgY29kZSBmdXJ0aGVyCisgICAgIyB0byByZWR1Y2UgcmVkdW5kYW5jeSBhbmQgbWFrZSB0aGUgbG9naWMgY2xlYXJlci4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJ0cyhzZWxmKToKKyAgICAgICAga2xhc3MgPSBzZWxmLl9fY2xhc3NfXworICAgICAgICB0aGlzID0gW10KKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi5zdGFydHN3aXRoX2Z3cygpOgorICAgICAgICAgICAgICAgIGlmIHRoaXM6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoaXNbMF0gaWYgbGVuKHRoaXMpPT0xIGVsc2Uga2xhc3ModGhpcykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpCisgICAgICAgICAgICBlbmRfd3MgPSB0b2tlbi5wb3BfdHJhaWxpbmdfd3MoKQorICAgICAgICAgICAgdGhpcy5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBpZiBlbmRfd3M6CisgICAgICAgICAgICAgICAgeWllbGQga2xhc3ModGhpcykKKyAgICAgICAgICAgICAgICB0aGlzID0gW2VuZF93c10KKyAgICAgICAgaWYgdGhpczoKKyAgICAgICAgICAgIHlpZWxkIHRoaXNbMF0gaWYgbGVuKHRoaXMpPT0xIGVsc2Uga2xhc3ModGhpcykKKworICAgIGRlZiBzdGFydHN3aXRoX2Z3cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uc3RhcnRzd2l0aF9md3MoKQorCisgICAgZGVmIHBvcF9sZWFkaW5nX2Z3cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdmd3MnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9wKDApCisgICAgICAgIHJldHVybiBzZWxmWzBdLnBvcF9sZWFkaW5nX2Z3cygpCisKKyAgICBkZWYgcG9wX3RyYWlsaW5nX3dzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWy0xXS50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBvcCgtMSkKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLnBvcF90cmFpbGluZ193cygpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaGFzX2Z3cyhzZWxmKToKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHBhcnQuaGFzX2Z3czoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBoYXNfbGVhZGluZ19jb21tZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5oYXNfbGVhZGluZ19jb21tZW50KCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgY29tbWVudHMgPSBbXQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGNvbW1lbnRzLmV4dGVuZCh0b2tlbi5jb21tZW50cykKKyAgICAgICAgcmV0dXJuIGNvbW1lbnRzCisKKyAgICBkZWYgZm9sZChzZWxmLCAqLCBwb2xpY3kpOgorICAgICAgICAjIG1heF9saW5lX2xlbmd0aCAwL05vbmUgbWVhbnMgbm8gbGltaXQsIGllOiBpbmZpbml0ZWx5IGxvbmcuCisgICAgICAgIG1heGxlbiA9IHBvbGljeS5tYXhfbGluZV9sZW5ndGggb3IgZmxvYXQoIitpbmYiKQorICAgICAgICBmb2xkZWQgPSBfRm9sZGVkKG1heGxlbiwgcG9saWN5KQorICAgICAgICBzZWxmLl9mb2xkKGZvbGRlZCkKKyAgICAgICAgZm9sZGVkLmZpbmFsaXplKCkKKyAgICAgICAgcmV0dXJuIHN0cihmb2xkZWQpCisKKyAgICBkZWYgYXNfZW5jb2RlZF93b3JkKHNlbGYsIGNoYXJzZXQpOgorICAgICAgICAjIFRoaXMgd29ya3Mgb25seSBmb3IgdGhpbmdzIHJldHVybmVkIGJ5ICdwYXJ0cycsIHdoaWNoIGluY2x1ZGUKKyAgICAgICAgIyB0aGUgbGVhZGluZyBmd3MsIGlmIGFueSwgdGhhdCBzaG91bGQgYmUgdXNlZC4KKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgd3MgPSBzZWxmLnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgIGlmIHdzOgorICAgICAgICAgICAgcmVzLmFwcGVuZCh3cykKKyAgICAgICAgdHJhaWxlciA9IHNlbGYucG9wKC0xKSBpZiBzZWxmWy0xXS50b2tlbl90eXBlPT0nZndzJyBlbHNlICcnCisgICAgICAgIHJlcy5hcHBlbmQoX2V3LmVuY29kZShzdHIoc2VsZiksIGNoYXJzZXQpKQorICAgICAgICByZXMuYXBwZW5kKHRyYWlsZXIpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICByZXMuYXBwZW5kKHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBwb2xpY3kpKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKKyAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKKyAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFydC5hbGxfZGVmZWN0cyk6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgWFhYOiB0aGlzIHNob3VsZCBiZSBhIHBvbGljeSBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCisgICAgICAgICAgICAgICAgdHN0ciA9IHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBmb2xkZWQucG9saWN5KQorICAgICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKKyAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0LCB0c3RyKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBQZWVsIG9mZiB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIGlmIGFueSBhbmQgbWFrZSBpdCBzdGlja3ksIHRvCisgICAgICAgICAgICAjIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgICAgICAgIHdzID0gcGFydC5wb3BfbGVhZGluZ19md3MoKQorICAgICAgICAgICAgaWYgd3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBQZWVsIG9mZiB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBtYWtlIGl0IHN0aWNreSwgdG8KKyAgICAgICAgICAgICAgICAjIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgICAgICAgICAgICBmb2xkZWQuc3RpY2t5c3BhY2UgPSBzdHIocGFydC5wb3AoMCkpCisgICAgICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgcGFydC5oYXNfZndzOgorICAgICAgICAgICAgICAgIHBhcnQuX2ZvbGQoZm9sZGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFRoZXJlIGFyZSBubyBmb2xkIHBvaW50cyBpbiB0aGlzIG9uZTsgaXQgaXMgdG9vIGxvbmcgZm9yIGEgc2luZ2xlCisgICAgICAgICAgICAjIGxpbmUgYW5kIGNhbid0IGJlIHNwbGl0Li4ud2UganVzdCBoYXZlIHRvIHB1dCBpdCBvbiBpdHMgb3duIGxpbmUuCisgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHRzdHIpCisgICAgICAgICAgICBmb2xkZWQubmV3bGluZSgpCisKKyAgICBkZWYgcHByaW50KHNlbGYsIGluZGVudD0nJyk6CisgICAgICAgIHByaW50KCdcbicuam9pbihzZWxmLl9wcChpbmRlbnQ9JycpKSkKKworICAgIGRlZiBwcHN0cihzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuX3BwKGluZGVudD0nJykpCisKKyAgICBkZWYgX3BwKHNlbGYsIGluZGVudD0nJyk6CisgICAgICAgIHlpZWxkICd7fXt9L3t9KCcuZm9ybWF0KAorICAgICAgICAgICAgaW5kZW50LAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICBzZWxmLnRva2VuX3R5cGUpCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIodG9rZW4sICdfcHAnKToKKyAgICAgICAgICAgICAgICB5aWVsZCAoaW5kZW50ICsgJyAgICAhISBpbnZhbGlkIGVsZW1lbnQgaW4gdG9rZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaXN0OiB7IXJ9Jy5mb3JtYXQodG9rZW4pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB0b2tlbi5fcHAoaW5kZW50KycgICAgJyk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUKKyAgICAgICAgaWYgc2VsZi5kZWZlY3RzOgorICAgICAgICAgICAgZXh0cmEgPSAnIERlZmVjdHM6IHt9Jy5mb3JtYXQoc2VsZi5kZWZlY3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXh0cmEgPSAnJworICAgICAgICB5aWVsZCAne30pe30nLmZvcm1hdChpbmRlbnQsIGV4dHJhKQorCisKK2NsYXNzIFdoaXRlU3BhY2VUb2tlbkxpc3QoVG9rZW5MaXN0KToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcgJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3guY29udGVudCBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2NvbW1lbnQnXQorCisKK2NsYXNzIFVuc3RydWN0dXJlZFRva2VuTGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICd1bnN0cnVjdHVyZWQnCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKKyAgICAgICAgaWYgYW55KHgudG9rZW5fdHlwZT09J2VuY29kZWQtd29yZCcgZm9yIHggaW4gc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZm9sZF9lbmNvZGVkKGZvbGRlZCkKKyAgICAgICAgIyBIZXJlIHdlIGNhbiBoYXZlIGVpdGhlciBhIHB1cmUgQVNDSUkgc3RyaW5nIHRoYXQgbWF5IG9yIG1heSBub3QKKyAgICAgICAgIyBoYXZlIHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGVkIGJ5dGVzLCBvciBhIHVuaWNvZGUgc3RyaW5nLgorICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgorICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQorICAgICAgICAgICAgaXNfZXcgPSBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3V0Zi04JworICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgV2UndmUgYWxyZWFkeSBkb25lIGFuIEVXLCBjb21iaW5lIHRoaXMgb25lIHdpdGggaXQKKyAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGVyZSdzIHJvb20uCisgICAgICAgICAgICAgICAgICAgIGNodW5rID0gZ2V0X3Vuc3RydWN0dXJlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICcnLmpvaW4oZm9sZGVkLmN1cnJlbnRbbGFzdF9ldzpdK1t0c3RyXSkpLmFzX2VuY29kZWRfd29yZChjaGFyc2V0KQorICAgICAgICAgICAgICAgICAgICBvbGRsYXN0bGVuID0gc3VtKGxlbih4KSBmb3IgeCBpbiBmb2xkZWQuY3VycmVudFs6bGFzdF9ld10pCisgICAgICAgICAgICAgICAgICAgIHNjaHVuayA9IHN0cihjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgbGNodW5rID0gbGVuKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgaWYgb2xkbGFzdGxlbiArIGxjaHVuayA8PSBmb2xkZWQubWF4bGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVkLmFwcGVuZChzY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQubGFzdGxlbiA9IG9sZGxhc3RsZW4gKyBsY2h1bmsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgdHN0ciA9IHBhcnQuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgaXNfZXcgPSBUcnVlCisgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCwgdHN0cik6CisgICAgICAgICAgICAgICAgaWYgaXNfZXc6CisgICAgICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBsZW4oZm9sZGVkLmN1cnJlbnQpIC0gMQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc19ldyBvciBsYXN0X2V3OgorICAgICAgICAgICAgICAgICMgSXQncyB0b28gYmlnIHRvIGZpdCBvbiB0aGUgbGluZSwgYnV0IHNpbmNlIHdlJ3ZlCisgICAgICAgICAgICAgICAgIyBnb3QgZW5jb2RlZCB3b3JkcyB3ZSBjYW4gdXNlIGVuY29kZWQgd29yZCBmb2xkaW5nLgorICAgICAgICAgICAgICAgIHBhcnQuX2ZvbGRfYXNfZXcoZm9sZGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFBlZWwgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgaWYgYW55IGFuZCBtYWtlIGl0IHN0aWNreSwgdG8KKyAgICAgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgd3MgPSBwYXJ0LnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgICAgICBpZiB3cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBmb2xkZWQuc3RpY2t5c3BhY2UgPSBzdHIod3MpCisgICAgICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgcGFydC5oYXNfZndzOgorICAgICAgICAgICAgICAgIHBhcnQuZm9sZChmb2xkZWQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgSXQgY2FuJ3QgYmUgc3BsaXQuLi53ZSBqdXN0IGhhdmUgdG8gcHV0IGl0IG9uIGl0cyBvd24gbGluZS4KKyAgICAgICAgICAgIGZvbGRlZC5hcHBlbmQodHN0cikKKyAgICAgICAgICAgIGZvbGRlZC5uZXdsaW5lKCkKKyAgICAgICAgICAgIGxhc3RfZXcgPSBOb25lCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBmb3IgcGFydCBpbiBzZWxmOgorICAgICAgICAgICAgc3BhcnQgPSBzdHIocGFydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzcGFydC5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHNwYXJ0KQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2V3IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQocGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIHBvbGljeSkpCisgICAgICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBsZW4ocmVzKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRsID0gZ2V0X3Vuc3RydWN0dXJlZCgnJy5qb2luKHJlc1tsYXN0X2V3Ol0gKyBbc3BhcnRdKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh0bC5hc19lbmNvZGVkX3dvcmQoKSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisKK2NsYXNzIFBocmFzZShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdwaHJhc2UnCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKKyAgICAgICAgIyBBcyB3aXRoIFVuc3RydWN0dXJlZCwgd2UgY2FuIGhhdmUgcHVyZSBBU0NJSSB3aXRoIG9yIHdpdGhvdXQKKyAgICAgICAgIyBzdXJyb2dhdGVlc2NhcGUgZW5jb2RlZCBieXRlcywgb3Igd2UgY291bGQgaGF2ZSB1bmljb2RlLiAgQnV0IHRoaXMKKyAgICAgICAgIyBjYXNlIGlzIG1vcmUgY29tcGxpY2F0ZWQsIHNpbmNlIHdlIGhhdmUgdG8gZGVhbCB3aXRoIHRoZSB2YXJpb3VzCisgICAgICAgICMgc3ViLXRva2VuIHR5cGVzIGFuZCBob3cgdGhleSBjYW4gYmUgY29tcG9zZWQgaW4gdGhlIGZhY2Ugb2YKKyAgICAgICAgIyB1bmljb2RlLXRoYXQtbmVlZHMtQ1RFLWVuY29kaW5nLCBhbmQgdGhlIGZhY3QgdGhhdCBpZiBhIHRva2VuIGEKKyAgICAgICAgIyBjb21tZW50IHRoYXQgYmVjb21lcyBhIGJhcnJpZXIgYWNyb3NzIHdoaWNoIHdlIGNhbid0IGNvbXBvc2UgZW5jb2RlZAorICAgICAgICAjIHdvcmRzLgorICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgorICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgaGFzX2V3ID0gRmFsc2UKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFydC5hbGxfZGVmZWN0cyk6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBub3QgTm9uZSBhbmQgbm90IHBhcnQuaGFzX2xlYWRpbmdfY29tbWVudCgpOgorICAgICAgICAgICAgICAgICAgICAjIFdlJ3ZlIGFscmVhZHkgZG9uZSBhbiBFVywgbGV0J3Mgc2VlIGlmIHdlIGNhbiBjb21iaW5lCisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBvbmUgd2l0aCBpdC4gIFRoZSBsYXN0X2V3IGxvZ2ljIGVuc3VyZXMgdGhhdCBhbGwgd2UKKyAgICAgICAgICAgICAgICAgICAgIyBoYXZlIGF0IHRoaXMgcG9pbnQgaXMgYXRvbXMsIG5vIGNvbW1lbnRzIG9yIHF1b3RlZAorICAgICAgICAgICAgICAgICAgICAjIHN0cmluZ3MuICBTbyB3ZSBjYW4gdHJlYXQgdGhlIHRleHQgYmV0d2VlbiB0aGUgbGFzdAorICAgICAgICAgICAgICAgICAgICAjIGVuY29kZWQgd29yZCBhbmQgdGhlIGNvbnRlbnQgb2YgdGhpcyB0b2tlbiBhcworICAgICAgICAgICAgICAgICAgICAjIHVuc3RydWN0dXJlZCB0ZXh0LCBhbmQgdGhpbmdzIHdpbGwgd29yayBjb3JyZWN0bHkuICBCdXQKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIHN0cmlwIG9mZiBhbnkgdHJhaWxpbmcgY29tbWVudCBvbiB0aGlzIHRva2VuCisgICAgICAgICAgICAgICAgICAgICMgZmlyc3QsIGFuZCBpZiBpdCBpcyBhIHF1b3RlZCBzdHJpbmcgd2UgaGF2ZSB0byBwdWxsIG91dAorICAgICAgICAgICAgICAgICAgICAjIHRoZSBjb250ZW50ICh3ZSdyZSBlbmNvZGluZyBpdCwgc28gaXQgbm8gbG9uZ2VyIG5lZWRzIHRvCisgICAgICAgICAgICAgICAgICAgICMgYmUgcXVvdGVkKS4KKyAgICAgICAgICAgICAgICAgICAgaWYgcGFydFstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cycgYW5kIHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXIgPSBwYXJ0LnBvcCgtMSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9ICcnCisgICAgICAgICAgICAgICAgICAgIGZvciBpLCB0b2tlbiBpbiBlbnVtZXJhdGUocGFydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRbaV0gPSBVbnN0cnVjdHVyZWRUb2tlbkxpc3QodG9rZW5bOl0pCisgICAgICAgICAgICAgICAgICAgIGNodW5rID0gZ2V0X3Vuc3RydWN0dXJlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICcnLmpvaW4oZm9sZGVkLmN1cnJlbnRbbGFzdF9ldzpdK1t0c3RyXSkpLmFzX2VuY29kZWRfd29yZChjaGFyc2V0KQorICAgICAgICAgICAgICAgICAgICBzY2h1bmsgPSBzdHIoY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGxjaHVuayA9IGxlbihzY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgKyBsY2h1bmsgPD0gZm9sZGVkLm1heGxlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5hcHBlbmQoc2NodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVkLmxhc3RsZW4gPSBzdW0obGVuKHgpIGZvciB4IGluIGZvbGRlZC5jdXJyZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB0c3RyID0gcGFydC5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICAgICAgaGFzX2V3ID0gVHJ1ZQorICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQsIHRzdHIpOgorICAgICAgICAgICAgICAgIGlmIGhhc19ldyBhbmQgbm90IHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBsZW4oZm9sZGVkLmN1cnJlbnQpIC0gMQorICAgICAgICAgICAgICAgIGVsaWYgcGFydC5jb21tZW50cyBvciBwYXJ0LnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICAjIElmIGEgY29tbWVudCBpcyBpbnZvbHZlZCB3ZSBjYW4ndCBjb21iaW5lIEVXcy4gIEFuZCBpZiBhCisgICAgICAgICAgICAgICAgICAgICMgcXVvdGVkIHN0cmluZyBpcyBpbnZvbHZlZCwgaXQncyBub3Qgd29ydGggdGhlIGVmZm9ydCB0bworICAgICAgICAgICAgICAgICAgICAjIHRyeSB0byBjb21iaW5lIHRoZW0uCisgICAgICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHBhcnQuX2ZvbGQoZm9sZGVkKQorCisgICAgZGVmIGN0ZV9lbmNvZGUoc2VsZiwgY2hhcnNldCwgcG9saWN5KToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgaXNfZXcgPSBGYWxzZQorICAgICAgICBmb3IgcGFydCBpbiBzZWxmOgorICAgICAgICAgICAgc3BhcnQgPSBzdHIocGFydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzcGFydC5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHNwYXJ0KQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpc19ldyA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2V3IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJ0LmNvbW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihyZXMpCisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQocGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIHBvbGljeSkpCisgICAgICAgICAgICAgICAgZWxpZiBub3QgcGFydC5oYXNfbGVhZGluZ19jb21tZW50KCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnIGFuZCBwYXJ0LmNvbW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gcGFydC5wb3AoLTEpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXIgPSAnJworICAgICAgICAgICAgICAgICAgICBmb3IgaSwgdG9rZW4gaW4gZW51bWVyYXRlKHBhcnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0W2ldID0gVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KHRva2VuWzpdKQorICAgICAgICAgICAgICAgICAgICB0bCA9IGdldF91bnN0cnVjdHVyZWQoJycuam9pbihyZXNbbGFzdF9ldzpdICsgW3NwYXJ0XSkpCisgICAgICAgICAgICAgICAgICAgIHJlc1tsYXN0X2V3Ol0gPSBbdGwuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpXQorICAgICAgICAgICAgaWYgcGFydC5jb21tZW50cyBvciAobm90IGlzX2V3IGFuZCBwYXJ0LnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnKToKKyAgICAgICAgICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKK2NsYXNzIFdvcmQoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnd29yZCcKKworCitjbGFzcyBDRldTTGlzdChXaGl0ZVNwYWNlVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnY2Z3cycKKworICAgIGRlZiBoYXNfbGVhZGluZ19jb21tZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLmNvbW1lbnRzKQorCisKK2NsYXNzIEF0b20oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYXRvbScKKworCitjbGFzcyBUb2tlbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICd0b2tlbicKKworCitjbGFzcyBFbmNvZGVkV29yZChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdlbmNvZGVkLXdvcmQnCisgICAgY3RlID0gTm9uZQorICAgIGNoYXJzZXQgPSBOb25lCisgICAgbGFuZyA9IE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmNvZGVkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmN0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmN0ZQorICAgICAgICBfZXcuZW5jb2RlKHN0cihzZWxmKSwgc2VsZi5jaGFyc2V0KQorCisKKworY2xhc3MgUXVvdGVkU3RyaW5nKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3F1b3RlZC1zdHJpbmcnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudChzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHF1b3RlZF92YWx1ZShzZWxmKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHN0cih4KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh4LnZhbHVlKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RyaXBwZWRfdmFsdWUoc2VsZik6CisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4udmFsdWUKKworCitjbGFzcyBCYXJlUXVvdGVkU3RyaW5nKFF1b3RlZFN0cmluZyk6CisKKyAgICB0b2tlbl90eXBlID0gJ2JhcmUtcXVvdGVkLXN0cmluZycKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gcXVvdGVfc3RyaW5nKCcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikKKworCitjbGFzcyBDb21tZW50KFdoaXRlU3BhY2VUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjb21tZW50JworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN1bShbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyIoIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYucXVvdGUoeCkgZm9yIHggaW4gc2VsZl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyIpIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgW10pKQorCisgICAgZGVmIHF1b3RlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgdmFsdWUudG9rZW5fdHlwZSA9PSAnY29tbWVudCc6CisgICAgICAgICAgICByZXR1cm4gc3RyKHZhbHVlKQorICAgICAgICByZXR1cm4gc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCcsICdcKCcpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknLCAnXCknKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnQoc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3NlbGYuY29udGVudF0KKworY2xhc3MgQWRkcmVzc0xpc3QoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYWRkcmVzcy1saXN0JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nYWRkcmVzcyddCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VtKCh4Lm1haWxib3hlcworICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2FkZHJlc3MnKSwgW10pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1bSgoeC5hbGxfbWFpbGJveGVzCisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nYWRkcmVzcycpLCBbXSkKKworCitjbGFzcyBBZGRyZXNzKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FkZHJlc3MnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2dyb3VwJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdtYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbc2VsZlswXV0KKyAgICAgICAgZWxpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2ludmFsaWQtbWFpbGJveCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ubWFpbGJveGVzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdtYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbc2VsZlswXV0KKyAgICAgICAgZWxpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2ludmFsaWQtbWFpbGJveCc6CisgICAgICAgICAgICByZXR1cm4gW3NlbGZbMF1dCisgICAgICAgIHJldHVybiBzZWxmWzBdLmFsbF9tYWlsYm94ZXMKKworY2xhc3MgTWFpbGJveExpc3QoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWFpbGJveC1saXN0JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nbWFpbGJveCddCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFt4IGZvciB4IGluIHNlbGYKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSBpbiAoJ21haWxib3gnLCAnaW52YWxpZC1tYWlsYm94JyldCisKKworY2xhc3MgR3JvdXBMaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2dyb3VwLWxpc3QnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZiBvciBzZWxmWzBdLnRva2VuX3R5cGUgIT0gJ21haWxib3gtbGlzdCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ubWFpbGJveGVzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYgb3Igc2VsZlswXS50b2tlbl90eXBlICE9ICdtYWlsYm94LWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzBdLmFsbF9tYWlsYm94ZXMKKworCitjbGFzcyBHcm91cChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICJncm91cCIKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMl0udG9rZW5fdHlwZSAhPSAnZ3JvdXAtbGlzdCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMl0ubWFpbGJveGVzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWxsX21haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlsyXS50b2tlbl90eXBlICE9ICdncm91cC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlsyXS5hbGxfbWFpbGJveGVzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5kaXNwbGF5X25hbWUKKworCitjbGFzcyBOYW1lQWRkcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICduYW1lLWFkZHInCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZikgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWy0xXS5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0uZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcm91dGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWy0xXS5yb3V0ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmFkZHJfc3BlYworCisKK2NsYXNzIEFuZ2xlQWRkcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhbmdsZS1hZGRyJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2FkZHItc3BlYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgubG9jYWxfcGFydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYWRkci1zcGVjJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC5kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByb3V0ZShzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnb2JzLXJvdXRlJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC5kb21haW5zCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdhZGRyLXNwZWMnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmFkZHJfc3BlYworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICc8PicKKworCitjbGFzcyBPYnNSb3V0ZShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdvYnMtcm91dGUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWlucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFt4LmRvbWFpbiBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZSA9PSAnZG9tYWluJ10KKworCitjbGFzcyBNYWlsYm94KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ21haWxib3gnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ25hbWUtYWRkcic6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByb3V0ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICduYW1lLWFkZHInOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0ucm91dGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmFkZHJfc3BlYworCisKK2NsYXNzIEludmFsaWRNYWlsYm94KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBsb2NhbF9wYXJ0ID0gZG9tYWluID0gcm91dGUgPSBhZGRyX3NwZWMgPSBkaXNwbGF5X25hbWUKKworCitjbGFzcyBEb21haW4oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZG9tYWluJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3VwZXIoKS52YWx1ZS5zcGxpdCgpKQorCisKK2NsYXNzIERvdEF0b20oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZG90LWF0b20nCisKKworY2xhc3MgRG90QXRvbVRleHQoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZG90LWF0b20tdGV4dCcKKworCitjbGFzcyBBZGRyU3BlYyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhZGRyLXNwZWMnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ubG9jYWxfcGFydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYpIDwgMzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmWy0xXS5kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYpIDwgMzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnZhbHVlCisgICAgICAgIHJldHVybiBzZWxmWzBdLnZhbHVlLnJzdHJpcCgpK3NlbGZbMV0udmFsdWUrc2VsZlsyXS52YWx1ZS5sc3RyaXAoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgbmFtZXNldCA9IHNldChzZWxmLmxvY2FsX3BhcnQpCisgICAgICAgIGlmIGxlbihuYW1lc2V0KSA+IGxlbihuYW1lc2V0LURPVF9BVE9NX0VORFMpOgorICAgICAgICAgICAgbHAgPSBxdW90ZV9zdHJpbmcoc2VsZi5sb2NhbF9wYXJ0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbHAgPSBzZWxmLmxvY2FsX3BhcnQKKyAgICAgICAgaWYgc2VsZi5kb21haW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gbHAgKyAnQCcgKyBzZWxmLmRvbWFpbgorICAgICAgICByZXR1cm4gbHAKKworCitjbGFzcyBPYnNMb2NhbFBhcnQoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnb2JzLWxvY2FsLXBhcnQnCisKKworY2xhc3MgRGlzcGxheU5hbWUoUGhyYXNlKToKKworICAgIHRva2VuX3R5cGUgPSAnZGlzcGxheS1uYW1lJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmVzID0gVG9rZW5MaXN0KHNlbGYpCisgICAgICAgIGlmIHJlc1swXS50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgIHJlcy5wb3AoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJlc1swXVswXS50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgICAgICByZXNbMF0gPSBUb2tlbkxpc3QocmVzWzBdWzE6XSkKKyAgICAgICAgaWYgcmVzWy0xXS50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgIHJlcy5wb3AoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgcmVzWy0xXVstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICAgICAgcmVzWy0xXSA9IFRva2VuTGlzdChyZXNbLTFdWzotMV0pCisgICAgICAgIHJldHVybiByZXMudmFsdWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcXVvdGUgPSBGYWxzZQorICAgICAgICBpZiBzZWxmLmRlZmVjdHM6CisgICAgICAgICAgICBxdW90ZSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSBUcnVlCisgICAgICAgIGlmIHF1b3RlOgorICAgICAgICAgICAgcHJlID0gcG9zdCA9ICcnCisgICAgICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGU9PSdjZndzJyBvciBzZWxmWzBdWzBdLnRva2VuX3R5cGU9PSdjZndzJzoKKyAgICAgICAgICAgICAgICBwcmUgPSAnICcKKyAgICAgICAgICAgIGlmIHNlbGZbLTFdLnRva2VuX3R5cGU9PSdjZndzJyBvciBzZWxmWy0xXVstMV0udG9rZW5fdHlwZT09J2Nmd3MnOgorICAgICAgICAgICAgICAgIHBvc3QgPSAnICcKKyAgICAgICAgICAgIHJldHVybiBwcmUrcXVvdGVfc3RyaW5nKHNlbGYuZGlzcGxheV9uYW1lKStwb3N0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS52YWx1ZQorCisKK2NsYXNzIExvY2FsUGFydChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdsb2NhbC1wYXJ0JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gInF1b3RlZC1zdHJpbmciOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0ucXVvdGVkX3ZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS52YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgICMgU3RyaXAgd2hpdGVzcGFjZSBmcm9tIGZyb250LCBiYWNrLCBhbmQgYXJvdW5kIGRvdHMuCisgICAgICAgIHJlcyA9IFtET1RdCisgICAgICAgIGxhc3QgPSBET1QKKyAgICAgICAgbGFzdF9pc190bCA9IEZhbHNlCisgICAgICAgIGZvciB0b2sgaW4gc2VsZlswXSArIFtET1RdOgorICAgICAgICAgICAgaWYgdG9rLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiAobGFzdF9pc190bCBhbmQgdG9rLnRva2VuX3R5cGUgPT0gJ2RvdCcgYW5kCisgICAgICAgICAgICAgICAgICAgIGxhc3RbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnKToKKyAgICAgICAgICAgICAgICByZXNbLTFdID0gVG9rZW5MaXN0KGxhc3RbOi0xXSkKKyAgICAgICAgICAgIGlzX3RsID0gaXNpbnN0YW5jZSh0b2ssIFRva2VuTGlzdCkKKyAgICAgICAgICAgIGlmIChpc190bCBhbmQgbGFzdC50b2tlbl90eXBlID09ICdkb3QnIGFuZAorICAgICAgICAgICAgICAgICAgICB0b2tbMF0udG9rZW5fdHlwZSA9PSAnY2Z3cycpOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoVG9rZW5MaXN0KHRva1sxOl0pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHRvaykKKyAgICAgICAgICAgIGxhc3QgPSByZXNbLTFdCisgICAgICAgICAgICBsYXN0X2lzX3RsID0gaXNfdGwKKyAgICAgICAgcmVzID0gVG9rZW5MaXN0KHJlc1sxOi0xXSkKKyAgICAgICAgcmV0dXJuIHJlcy52YWx1ZQorCisKK2NsYXNzIERvbWFpbkxpdGVyYWwoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZG9tYWluLWxpdGVyYWwnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdXBlcigpLnZhbHVlLnNwbGl0KCkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXAoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ3B0ZXh0JzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZQorCisKK2NsYXNzIE1JTUVWZXJzaW9uKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ21pbWUtdmVyc2lvbicKKyAgICBtYWpvciA9IE5vbmUKKyAgICBtaW5vciA9IE5vbmUKKworCitjbGFzcyBQYXJhbWV0ZXIoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAncGFyYW1ldGVyJworICAgIHNlY3Rpb25lZCA9IEZhbHNlCisgICAgZXh0ZW5kZWQgPSBGYWxzZQorICAgIGNoYXJzZXQgPSAndXMtYXNjaWknCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2VjdGlvbl9udW1iZXIoc2VsZik6CisgICAgICAgICMgQmVjYXVzZSB0aGUgZmlyc3QgdG9rZW4sIHRoZSBhdHRyaWJ1dGUgKG5hbWUpIGVhdHMgQ0ZXUywgdGhlIHNlY29uZAorICAgICAgICAjIHRva2VuIGlzIGFsd2F5cyB0aGUgc2VjdGlvbiBpZiB0aGVyZSBpcyBvbmUuCisgICAgICAgIHJldHVybiBzZWxmWzFdLm51bWJlciBpZiBzZWxmLnNlY3Rpb25lZCBlbHNlIDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJhbV92YWx1ZShzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzIHBhcnQgb2YgdGhlICJoYW5kbGUgcXVvdGVkIGV4dGVuZGVkIHBhcmFtZXRlcnMiIGhhY2suCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAndmFsdWUnOgorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5zdHJpcHBlZF92YWx1ZQorICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgZm9yIHRva2VuIGluIHRva2VuOgorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRva2VuIGluIHRva2VuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ3ZhbHVlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgIHJldHVybiAnJworCisKK2NsYXNzIEludmFsaWRQYXJhbWV0ZXIoUGFyYW1ldGVyKToKKworICAgIHRva2VuX3R5cGUgPSAnaW52YWxpZC1wYXJhbWV0ZXInCisKKworY2xhc3MgQXR0cmlidXRlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2F0dHJpYnV0ZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdHJpcHBlZF92YWx1ZShzZWxmKToKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlLmVuZHN3aXRoKCdhdHRydGV4dCcpOgorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi52YWx1ZQorCitjbGFzcyBTZWN0aW9uKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3NlY3Rpb24nCisgICAgbnVtYmVyID0gTm9uZQorCisKK2NsYXNzIFZhbHVlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3ZhbHVlJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0cmlwcGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICB0b2tlbiA9IHNlbGZbMF0KKyAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICB0b2tlbiA9IHNlbGZbMV0KKyAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZS5lbmRzd2l0aCgKKyAgICAgICAgICAgICAgICAoJ3F1b3RlZC1zdHJpbmcnLCAnYXR0cmlidXRlJywgJ2V4dGVuZGVkLWF0dHJpYnV0ZScpKToKKyAgICAgICAgICAgIHJldHVybiB0b2tlbi5zdHJpcHBlZF92YWx1ZQorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorCisKK2NsYXNzIE1pbWVQYXJhbWV0ZXJzKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ21pbWUtcGFyYW1ldGVycycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJhbXMoc2VsZik6CisgICAgICAgICMgVGhlIFJGQyBzcGVjaWZpY2FsbHkgc3RhdGVzIHRoYXQgdGhlIG9yZGVyaW5nIG9mIHBhcmFtZXRlcnMgaXMgbm90CisgICAgICAgICMgZ3VhcmFudGVlZCBhbmQgbWF5IGJlIHJlb3JkZXJlZCBieSB0aGUgdHJhbnNwb3J0IGxheWVyLiAgU28gd2UgaGF2ZQorICAgICAgICAjIHRvIGFzc3VtZSB0aGUgUkZDIDIyMzEgcGllY2VzIGNhbiBjb21lIGluIGFueSBvcmRlci4gIEhvd2V2ZXIsIHdlCisgICAgICAgICMgb3V0cHV0IHRoZW0gaW4gdGhlIG9yZGVyIHRoYXQgd2UgZmlyc3Qgc2VlIGEgZ2l2ZW4gbmFtZSwgd2hpY2ggZ2l2ZXMKKyAgICAgICAgIyB1cyBhIHN0YWJsZSBfX3N0cl9fLgorICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgbm90IHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoJ3BhcmFtZXRlcicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiB0b2tlblswXS50b2tlbl90eXBlICE9ICdhdHRyaWJ1dGUnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBuYW1lID0gdG9rZW5bMF0udmFsdWUuc3RyaXAoKQorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgIHBhcmFtc1tuYW1lXSA9IFtdCisgICAgICAgICAgICBwYXJhbXNbbmFtZV0uYXBwZW5kKCh0b2tlbi5zZWN0aW9uX251bWJlciwgdG9rZW4pKQorICAgICAgICBmb3IgbmFtZSwgcGFydHMgaW4gcGFyYW1zLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJ0cyA9IHNvcnRlZChwYXJ0cykKKyAgICAgICAgICAgICMgWFhYOiB0aGVyZSBtaWdodCBiZSBtb3JlIHJlY292ZXJ5IHdlIGNvdWxkIGRvIGhlcmUgaWYsIGZvcgorICAgICAgICAgICAgIyBleGFtcGxlLCB0aGlzIGlzIHJlYWxseSBhIGNhc2Ugb2YgYSBkdXBsaWNhdGUgYXR0cmlidXRlIG5hbWUuCisgICAgICAgICAgICB2YWx1ZV9wYXJ0cyA9IFtdCisgICAgICAgICAgICBjaGFyc2V0ID0gcGFydHNbMF1bMV0uY2hhcnNldAorICAgICAgICAgICAgZm9yIGksIChzZWN0aW9uX251bWJlciwgcGFyYW0pIGluIGVudW1lcmF0ZShwYXJ0cyk6CisgICAgICAgICAgICAgICAgaWYgc2VjdGlvbl9udW1iZXIgIT0gaToKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb25zaXN0ZW50IG11bHRpcGFydCBwYXJhbWV0ZXIgbnVtYmVyaW5nIikpCisgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJhbS5wYXJhbV92YWx1ZQorICAgICAgICAgICAgICAgIGlmIHBhcmFtLmV4dGVuZGVkOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHVybGxpYi5wYXJzZS51bnF1b3RlX3RvX2J5dGVzKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBzb3VyY2UgaGFkIHN1cnJvZ2F0ZSBlc2NhcGVkIGJ5dGVzLiAgV2hhdCB3ZSBkbyBub3cKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgYSBiaXQgb2YgYW4gb3BlbiBxdWVzdGlvbi4gIEknbSBub3Qgc3VyZSB0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBiZXN0IGNob2ljZSwgYnV0IGl0IGlzIHdoYXQgdGhlIG9sZCBhbGdvcml0aG0gZGlkCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHZhbHVlLCBlbmNvZGluZz0nbGF0aW4tMScpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoY2hhcnNldCwgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoZXJlIHNob3VsZCByZWFsbHkgYmUgYSBjdXN0b20gZGVmZWN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5rbm93biBjaGFyYWN0ZXIgc2V0IHRvIG1ha2UgaXQgZWFzeSB0byBmaW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBvdGhlcndpc2UgdW5rbm93biBjaGFyc2V0IGlzIGEgc2lsZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmYWlsdXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1cy1hc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCgpKQorICAgICAgICAgICAgICAgIHZhbHVlX3BhcnRzLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0gJycuam9pbih2YWx1ZV9wYXJ0cykKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIHZhbHVlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcGFyYW1zID0gW10KKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYucGFyYW1zOgorICAgICAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgne309e30nLmZvcm1hdChuYW1lLCBxdW90ZV9zdHJpbmcodmFsdWUpKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChuYW1lKQorICAgICAgICBwYXJhbXMgPSAnOyAnLmpvaW4ocGFyYW1zKQorICAgICAgICByZXR1cm4gJyAnICsgcGFyYW1zIGlmIHBhcmFtcyBlbHNlICcnCisKKworY2xhc3MgUGFyYW1ldGVyaXplZEhlYWRlclZhbHVlKFRva2VuTGlzdCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1zKHNlbGYpOgorICAgICAgICBmb3IgdG9rZW4gaW4gcmV2ZXJzZWQoc2VsZik6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdtaW1lLXBhcmFtZXRlcnMnOgorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5wYXJhbXMKKyAgICAgICAgcmV0dXJuIHt9CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFydHMoc2VsZik6CisgICAgICAgIGlmIHNlbGYgYW5kIHNlbGZbLTFdLnRva2VuX3R5cGUgPT0gJ21pbWUtcGFyYW1ldGVycyc6CisgICAgICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gc3RhcnQgYSBuZXcgbGluZSBpZiBhbGwgb2YgdGhlIHBhcmFtcyBkb24ndCBmaXQKKyAgICAgICAgICAgICMgYWZ0ZXIgdGhlIHZhbHVlLCBzbyB1bndyYXAgdGhlIHBhcmFtZXRlciBsaXN0LgorICAgICAgICAgICAgcmV0dXJuIFRva2VuTGlzdChzZWxmWzotMV0gKyBzZWxmWy0xXSkKKyAgICAgICAgcmV0dXJuIFRva2VuTGlzdChzZWxmKS5wYXJ0cworCisKK2NsYXNzIENvbnRlbnRUeXBlKFBhcmFtZXRlcml6ZWRIZWFkZXJWYWx1ZSk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbnRlbnQtdHlwZScKKyAgICBtYWludHlwZSA9ICd0ZXh0JworICAgIHN1YnR5cGUgPSAncGxhaW4nCisKKworY2xhc3MgQ29udGVudERpc3Bvc2l0aW9uKFBhcmFtZXRlcml6ZWRIZWFkZXJWYWx1ZSk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbnRlbnQtZGlzcG9zaXRpb24nCisgICAgY29udGVudF9kaXNwb3NpdGlvbiA9IE5vbmUKKworCitjbGFzcyBDb250ZW50VHJhbnNmZXJFbmNvZGluZyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJworICAgIGN0ZSA9ICc3Yml0JworCisKK2NsYXNzIEhlYWRlckxhYmVsKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2hlYWRlci1sYWJlbCcKKworCitjbGFzcyBIZWFkZXIoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnaGVhZGVyJworCisgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CisgICAgICAgIGZvbGRlZC5hcHBlbmQoc3RyKHNlbGYucG9wKDApKSkKKyAgICAgICAgZm9sZGVkLmxhc3RsZW4gPSBsZW4oZm9sZGVkLmN1cnJlbnRbMF0pCisgICAgICAgICMgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGhlYWRlciBpcyBkaWZmZXJlbnQgZnJvbSBhbGwgb3RoZXJzOiB3ZSBkb24ndAorICAgICAgICAjIHdhbnQgdG8gc3RhcnQgYSBuZXcgb2JqZWN0IG9uIGEgbmV3IGxpbmUgaWYgaXQgaGFzIGFueSBmb2xkIHBvaW50cyBpbgorICAgICAgICAjIGl0IHRoYXQgd291bGQgYWxsb3cgcGFydCBvZiBpdCB0byBiZSBvbiB0aGUgZmlyc3QgaGVhZGVyIGxpbmUuCisgICAgICAgICMgRnVydGhlciwgaWYgdGhlIGZpcnN0IGZvbGQgcG9pbnQgd291bGQgZml0IG9uIHRoZSBuZXcgbGluZSwgd2Ugd2FudAorICAgICAgICAjIHRvIGRvIHRoYXQsIGJ1dCBpZiBpdCBkb2Vzbid0IHdlIHdhbnQgdG8gcHV0IGl0IG9uIHRoZSBmaXJzdCBsaW5lLgorICAgICAgICAjIEZvbGRlZCBzdXBwb3J0cyB0aGlzIHZpYSB0aGUgc3RpY2t5c3BhY2UgYXR0cmlidXRlLiAgSWYgdGhpcworICAgICAgICAjIGF0dHJpYnV0ZSBpcyBub3QgTm9uZSwgaXQgZG9lcyB0aGUgc3BlY2lhbCBoYW5kbGluZy4KKyAgICAgICAgZm9sZGVkLnN0aWNreXNwYWNlID0gc3RyKHNlbGYucG9wKDApKSBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnIGVsc2UgJycKKyAgICAgICAgcmVzdCA9IHNlbGYucG9wKDApCisgICAgICAgIGlmIHNlbGY6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNYWxmb3JtZWQgSGVhZGVyIHRva2VuIGxpc3QiKQorICAgICAgICByZXN0Ll9mb2xkKGZvbGRlZCkKKworCisjCisjIFRlcm1pbmFsIGNsYXNzZXMgYW5kIGluc3RhbmNlcworIworCitjbGFzcyBUZXJtaW5hbChzdHIpOgorCisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSwgdG9rZW5fdHlwZSk6CisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgc2VsZi50b2tlbl90eXBlID0gdG9rZW5fdHlwZQorICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9KHt9KSIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdXBlcigpLl9fcmVwcl9fKCkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWxsX2RlZmVjdHMoc2VsZik6CisgICAgICAgIHJldHVybiBsaXN0KHNlbGYuZGVmZWN0cykKKworICAgIGRlZiBfcHAoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgcmV0dXJuIFsie317fS97fSh7fSl7fSIuZm9ybWF0KAorICAgICAgICAgICAgaW5kZW50LAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICBzZWxmLnRva2VuX3R5cGUsCisgICAgICAgICAgICBzdXBlcigpLl9fcmVwcl9fKCksCisgICAgICAgICAgICAnJyBpZiBub3Qgc2VsZi5kZWZlY3RzIGVsc2UgJyB7fScuZm9ybWF0KHNlbGYuZGVmZWN0cyksCisgICAgICAgICAgICApXQorCisgICAgZGVmIGN0ZV9lbmNvZGUoc2VsZiwgY2hhcnNldCwgcG9saWN5KToKKyAgICAgICAgdmFsdWUgPSBzdHIoc2VsZikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdmFsdWUuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBfZXcuZW5jb2RlKHZhbHVlLCBjaGFyc2V0KQorCisgICAgZGVmIHBvcF90cmFpbGluZ193cyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlcm1pbmF0ZXMgdGhlIHJlY3Vyc2lvbi4KKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBwb3BfbGVhZGluZ19md3Moc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXJtaW5hdGVzIHRoZSByZWN1cnNpb24uCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIGhhc19sZWFkaW5nX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgorICAgICAgICByZXR1cm4oc3RyKHNlbGYpLCBzZWxmLnRva2VuX3R5cGUpCisKKworY2xhc3MgV2hpdGVTcGFjZVRlcm1pbmFsKFRlcm1pbmFsKToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcgJworCisgICAgZGVmIHN0YXJ0c3dpdGhfZndzKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgaGFzX2Z3cyA9IFRydWUKKworCitjbGFzcyBWYWx1ZVRlcm1pbmFsKFRlcm1pbmFsKToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBzdGFydHN3aXRoX2Z3cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBoYXNfZndzID0gRmFsc2UKKworICAgIGRlZiBhc19lbmNvZGVkX3dvcmQoc2VsZiwgY2hhcnNldCk6CisgICAgICAgIHJldHVybiBfZXcuZW5jb2RlKHN0cihzZWxmKSwgY2hhcnNldCkKKworCitjbGFzcyBFV1doaXRlU3BhY2VUZXJtaW5hbChXaGl0ZVNwYWNlVGVybWluYWwpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmNvZGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZls6XQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJworCisgICAgaGFzX2Z3cyA9IFRydWUKKworCisjIFhYWCB0aGVzZSBuZWVkIHRvIGJlY29tZSBjbGFzc2VzIGFuZCB1c2VkIGFzIGluc3RhbmNlcyBzbworIyB0aGF0IGEgcHJvZ3JhbSBjYW4ndCBjaGFuZ2UgdGhlbSBpbiBhIHBhcnNlIHRyZWUgYW5kIHNjcmV3CisjIHVwIG90aGVyIHBhcnNlIHRyZWVzLiAgTWF5YmUgc2hvdWxkIGhhdmUgIHRlc3RzIGZvciB0aGF0LCB0b28uCitET1QgPSBWYWx1ZVRlcm1pbmFsKCcuJywgJ2RvdCcpCitMaXN0U2VwYXJhdG9yID0gVmFsdWVUZXJtaW5hbCgnLCcsICdsaXN0LXNlcGFyYXRvcicpCitSb3V0ZUNvbXBvbmVudE1hcmtlciA9IFZhbHVlVGVybWluYWwoJ0AnLCAncm91dGUtY29tcG9uZW50LW1hcmtlcicpCisKKyMKKyMgUGFyc2VyCisjCisKKyIiIlBhcnNlIHN0cmluZ3MgYWNjb3JkaW5nIHRvIFJGQzgyMi8yMDQ3LzI4MjIvNTMyMiBydWxlcy4KKworVGhpcyBpcyBhIHN0YXRlbGVzcyBwYXJzZXIuICBFYWNoIGdldF9YWFggZnVuY3Rpb24gYWNjZXB0cyBhIHN0cmluZyBhbmQKK3JldHVybnMgZWl0aGVyIGEgVGVybWluYWwgb3IgYSBUb2tlbkxpc3QgcmVwcmVzZW50aW5nIHRoZSBSRkMgb2JqZWN0IG5hbWVkCitieSB0aGUgbWV0aG9kIGFuZCBhIHN0cmluZyBjb250YWluaW5nIHRoZSByZW1haW5pbmcgdW5wYXJzZWQgY2hhcmFjdGVycworZnJvbSB0aGUgaW5wdXQuICBUaHVzIGEgcGFyc2VyIG1ldGhvZCBjb25zdW1lcyB0aGUgbmV4dCBzeW50YWN0aWMgY29uc3RydWN0CitvZiBhIGdpdmVuIHR5cGUgYW5kIHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGNvbnN0cnVjdCBwbHVzIHRoZQordW5wYXJzZWQgcmVtYWluZGVyIG9mIHRoZSBpbnB1dCBzdHJpbmcuCisKK0ZvciBleGFtcGxlLCBpZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBhIHN0cnVjdHVyZWQgaGVhZGVyIGlzIGEgJ3BocmFzZScsCit0aGVuOgorCisgICAgcGhyYXNlLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisKK3JldHVybnMgdGhlIGNvbXBsZXRlIHBocmFzZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nIHZhbHVlLCBwbHVzIGFueQorY2hhcmFjdGVycyBsZWZ0IGluIHRoZSBzdHJpbmcgYWZ0ZXIgdGhlIHBocmFzZSBpcyByZW1vdmVkLgorCisiIiIKKworX3dzcF9zcGxpdHRlciA9IHJlLmNvbXBpbGUocicoW3t9XSspJy5mb3JtYXQoJycuam9pbihXU1ApKSkuc3BsaXQKK19ub25fYXRvbV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKKyAgICAnJy5qb2luKEFUT01fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorX25vbl9wcmludGFibGVfZmluZGVyID0gcmUuY29tcGlsZShyIltceDAwLVx4MjBceDdGXSIpLmZpbmRhbGwKK19ub25fdG9rZW5fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCisgICAgJycuam9pbihUT0tFTl9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCitfbm9uX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKKyAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCitfbm9uX2V4dGVuZGVkX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKKyAgICAnJy5qb2luKEVYVEVOREVEX0FUVFJJQlVURV9FTkRTKS5yZXBsYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKworZGVmIF92YWxpZGF0ZV94dGV4dCh4dGV4dCk6CisgICAgIiIiSWYgaW5wdXQgdG9rZW4gY29udGFpbnMgQVNDSUkgbm9uLXByaW50YWJsZXMsIHJlZ2lzdGVyIGEgZGVmZWN0LiIiIgorCisgICAgbm9uX3ByaW50YWJsZXMgPSBfbm9uX3ByaW50YWJsZV9maW5kZXIoeHRleHQpCisgICAgaWYgbm9uX3ByaW50YWJsZXM6CisgICAgICAgIHh0ZXh0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5Ob25QcmludGFibGVEZWZlY3Qobm9uX3ByaW50YWJsZXMpKQorICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyh4dGV4dCk6CisgICAgICAgIHh0ZXh0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KAorICAgICAgICAgICAgIk5vbi1BU0NJSSBjaGFyYWN0ZXJzIGZvdW5kIGluIGhlYWRlciB0b2tlbiIpKQorCitkZWYgX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgZW5kY2hhcnMpOgorICAgICIiIlNjYW4gcHJpbnRhYmxlcy9xdW90ZWQtcGFpcnMgdW50aWwgZW5kY2hhcnMgYW5kIHJldHVybiB1bnF1b3RlZCBwdGV4dC4KKworICAgIFRoaXMgZnVuY3Rpb24gdHVybnMgYSBydW4gb2YgcWNvbnRlbnQsIGNjb250ZW50LXdpdGhvdXQtY29tbWVudHMsIG9yCisgICAgZHRleHQtd2l0aC1xdW90ZWQtcHJpbnRhYmxlcyBpbnRvIGEgc2luZ2xlIHN0cmluZyBieSB1bnF1b3RpbmcgYW55CisgICAgcXVvdGVkIHByaW50YWJsZXMuICBJdCByZXR1cm5zIHRoZSBzdHJpbmcsIHRoZSByZW1haW5pbmcgdmFsdWUsIGFuZAorICAgIGEgZmxhZyB0aGF0IGlzIFRydWUgaWZmIHRoZXJlIHdlcmUgYW55IHF1b3RlZCBwcmludGFibGVzIGRlY29kZWQuCisKKyAgICAiIiIKKyAgICBmcmFnbWVudCwgKnJlbWFpbmRlciA9IF93c3Bfc3BsaXR0ZXIodmFsdWUsIDEpCisgICAgdmNoYXJzID0gW10KKyAgICBlc2NhcGUgPSBGYWxzZQorICAgIGhhZF9xcCA9IEZhbHNlCisgICAgZm9yIHBvcyBpbiByYW5nZShsZW4oZnJhZ21lbnQpKToKKyAgICAgICAgaWYgZnJhZ21lbnRbcG9zXSA9PSAnXFwnOgorICAgICAgICAgICAgaWYgZXNjYXBlOgorICAgICAgICAgICAgICAgIGVzY2FwZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgaGFkX3FwID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlc2NhcGUgPSBUcnVlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgZXNjYXBlOgorICAgICAgICAgICAgZXNjYXBlID0gRmFsc2UKKyAgICAgICAgZWxpZiBmcmFnbWVudFtwb3NdIGluIGVuZGNoYXJzOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgdmNoYXJzLmFwcGVuZChmcmFnbWVudFtwb3NdKQorICAgIGVsc2U6CisgICAgICAgIHBvcyA9IHBvcyArIDEKKyAgICByZXR1cm4gJycuam9pbih2Y2hhcnMpLCAnJy5qb2luKFtmcmFnbWVudFtwb3M6XV0gKyByZW1haW5kZXIpLCBoYWRfcXAKKworZGVmIF9kZWNvZGVfZXdfcnVuKHZhbHVlKToKKyAgICAiIiIgRGVjb2RlIGEgcnVuIG9mIFJGQzIwNDcgZW5jb2RlZCB3b3Jkcy4KKworICAgICAgICBfZGVjb2RlX2V3X3J1bih2YWx1ZSkgLT4gKHRleHQsIHZhbHVlLCBkZWZlY3RzKQorCisgICAgU2NhbnMgdGhlIHN1cHBsaWVkIHZhbHVlIGZvciBhIHJ1biBvZiB0b2tlbnMgdGhhdCBsb29rIGxpa2UgdGhleSBhcmUgUkZDCisgICAgMjA0NyBlbmNvZGVkIHdvcmRzLCBkZWNvZGVzIHRob3NlIHdvcmRzIGludG8gdGV4dCBhY2NvcmRpbmcgdG8gUkZDIDIwNDcKKyAgICBydWxlcyAod2hpdGVzcGFjZSBiZXR3ZWVuIGVuY29kZWQgd29yZHMgaXMgZGlzY2FyZGVkKSwgYW5kIHJldHVybnMgdGhlIHRleHQKKyAgICBhbmQgdGhlIHJlbWFpbmluZyB2YWx1ZSAoaW5jbHVkaW5nIGFueSBsZWFkaW5nIHdoaXRlc3BhY2Ugb24gdGhlIHJlbWFpbmluZworICAgIHZhbHVlKSwgYXMgd2VsbCBhcyBhIGxpc3Qgb2YgYW55IGRlZmVjdHMgZW5jb3VudGVyZWQgd2hpbGUgZGVjb2RpbmcuICBUaGUKKyAgICBpbnB1dCB2YWx1ZSBtYXkgbm90IGhhdmUgYW55IGxlYWRpbmcgd2hpdGVzcGFjZS4KKworICAgICIiIgorICAgIHJlcyA9IFtdCisgICAgZGVmZWN0cyA9IFtdCisgICAgbGFzdF93cyA9ICcnCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRvaywgd3MsIHZhbHVlID0gX3dzcF9zcGxpdHRlcih2YWx1ZSwgMSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICB0b2ssIHdzLCB2YWx1ZSA9IHZhbHVlLCAnJywgJycKKyAgICAgICAgaWYgbm90ICh0b2suc3RhcnRzd2l0aCgnPT8nKSBhbmQgdG9rLmVuZHN3aXRoKCc/PScpKToKKyAgICAgICAgICAgIHJldHVybiAnJy5qb2luKHJlcyksIGxhc3Rfd3MgKyB0b2sgKyB3cyArIHZhbHVlLCBkZWZlY3RzCisgICAgICAgIHRleHQsIGNoYXJzZXQsIGxhbmcsIG5ld19kZWZlY3RzID0gX2V3LmRlY29kZSh0b2spCisgICAgICAgIHJlcy5hcHBlbmQodGV4dCkKKyAgICAgICAgZGVmZWN0cy5leHRlbmQobmV3X2RlZmVjdHMpCisgICAgICAgIGxhc3Rfd3MgPSB3cworICAgIHJldHVybiAnJy5qb2luKHJlcyksIGxhc3Rfd3MsIGRlZmVjdHMKKworZGVmIGdldF9md3ModmFsdWUpOgorICAgICIiIkZXUyA9IDEqV1NQCisKKyAgICBUaGlzIGlzbid0IHRoZSBSRkMgZGVmaW5pdGlvbi4gIFdlJ3JlIHVzaW5nIGZ3cyB0byByZXByZXNlbnQgdG9rZW5zIHdoZXJlCisgICAgZm9sZGluZyBjYW4gYmUgZG9uZSwgYnV0IHdoZW4gd2UgYXJlIHBhcnNpbmcgdGhlICp1bipmb2xkaW5nIGhhcyBhbHJlYWR5CisgICAgYmVlbiBkb25lIHNvIHdlIGRvbid0IG5lZWQgdG8gd2F0Y2ggb3V0IGZvciBDUkxGLgorCisgICAgIiIiCisgICAgbmV3dmFsdWUgPSB2YWx1ZS5sc3RyaXAoKQorICAgIGZ3cyA9IFdoaXRlU3BhY2VUZXJtaW5hbCh2YWx1ZVs6bGVuKHZhbHVlKS1sZW4obmV3dmFsdWUpXSwgJ2Z3cycpCisgICAgcmV0dXJuIGZ3cywgbmV3dmFsdWUKKworZGVmIGdldF9lbmNvZGVkX3dvcmQodmFsdWUpOgorICAgICIiIiBlbmNvZGVkLXdvcmQgPSAiPT8iIGNoYXJzZXQgIj8iIGVuY29kaW5nICI/IiBlbmNvZGVkLXRleHQgIj89IgorCisgICAgIiIiCisgICAgZXcgPSBFbmNvZGVkV29yZCgpCisgICAgaWYgbm90IHZhbHVlLnN0YXJ0c3dpdGgoJz0/Jyk6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGVuY29kZWQgd29yZCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rLCAqcmVtYWluZGVyID0gdmFsdWVbMjpdLnNwbGl0KCc/PScsIDEpCisgICAgaWYgdG9rID09IHZhbHVlWzI6XToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgZW5jb2RlZCB3b3JkIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICByZW1zdHIgPSAnJy5qb2luKHJlbWFpbmRlcikKKyAgICBpZiByZW1zdHJbOjJdLmlzZGlnaXQoKToKKyAgICAgICAgcmVzdCwgKnJlbWFpbmRlciA9IHJlbXN0ci5zcGxpdCgnPz0nLCAxKQorICAgICAgICB0b2sgPSB0b2sgKyAnPz0nICsgcmVzdAorICAgIGlmIGxlbih0b2suc3BsaXQoKSkgPiAxOgorICAgICAgICBldy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJ3aGl0ZXNwYWNlIGluc2lkZSBlbmNvZGVkIHdvcmQiKSkKKyAgICBldy5jdGUgPSB2YWx1ZQorICAgIHZhbHVlID0gJycuam9pbihyZW1haW5kZXIpCisgICAgdHJ5OgorICAgICAgICB0ZXh0LCBjaGFyc2V0LCBsYW5nLCBkZWZlY3RzID0gX2V3LmRlY29kZSgnPT8nICsgdG9rICsgJz89JykKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZW5jb2RlZCB3b3JkIGZvcm1hdCBpbnZhbGlkOiAne30nIi5mb3JtYXQoZXcuY3RlKSkKKyAgICBldy5jaGFyc2V0ID0gY2hhcnNldAorICAgIGV3LmxhbmcgPSBsYW5nCisgICAgZXcuZGVmZWN0cy5leHRlbmQoZGVmZWN0cykKKyAgICB3aGlsZSB0ZXh0OgorICAgICAgICBpZiB0ZXh0WzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB0ZXh0ID0gZ2V0X2Z3cyh0ZXh0KQorICAgICAgICAgICAgZXcuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgY2hhcnMsICpyZW1haW5kZXIgPSBfd3NwX3NwbGl0dGVyKHRleHQsIDEpCisgICAgICAgIHZ0ZXh0ID0gVmFsdWVUZXJtaW5hbChjaGFycywgJ3Z0ZXh0JykKKyAgICAgICAgX3ZhbGlkYXRlX3h0ZXh0KHZ0ZXh0KQorICAgICAgICBldy5hcHBlbmQodnRleHQpCisgICAgICAgIHRleHQgPSAnJy5qb2luKHJlbWFpbmRlcikKKyAgICByZXR1cm4gZXcsIHZhbHVlCisKK2RlZiBnZXRfdW5zdHJ1Y3R1cmVkKHZhbHVlKToKKyAgICAiIiJ1bnN0cnVjdHVyZWQgPSAoKihbRldTXSB2Y2hhcikgKldTUCkgLyBvYnMtdW5zdHJ1Y3QKKyAgICAgICBvYnMtdW5zdHJ1Y3QgPSAqKCgqTEYgKkNSICoob2JzLXV0ZXh0KSAqTEYgKkNSKSkgLyBGV1MpCisgICAgICAgb2JzLXV0ZXh0ID0gJWQwIC8gb2JzLU5PLVdTLUNUTCAvIExGIC8gQ1IKKworICAgICAgIG9icy1OTy1XUy1DVEwgaXMgY29udHJvbCBjaGFyYWN0ZXJzIGV4Y2VwdCBXU1AvQ1IvTEYuCisKKyAgICBTbywgYmFzaWNhbGx5LCB3ZSBoYXZlIHByaW50YWJsZSBydW5zLCBwbHVzIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxscyBpbgorICAgIHRoZSBvYnNvbGV0ZSBzeW50YXgsIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLiAgU2luY2UgUkZDIDIwNDcgdXNlcyB0aGUKKyAgICBvYnNvbGV0ZSBzeW50YXggaW4gaXRzIHNwZWNpZmljYXRpb24sIGJ1dCByZXF1aXJlcyB3aGl0ZXNwYWNlIG9uIGVpdGhlcgorICAgIHNpZGUgb2YgdGhlIGVuY29kZWQgd29yZHMsIEkgY2FuIHNlZSBubyByZWFzb24gdG8gbmVlZCB0byBzZXBhcmF0ZSB0aGUKKyAgICBub24tcHJpbnRhYmxlLW5vbi13aGl0ZXNwYWNlIGZyb20gdGhlIHByaW50YWJsZSBydW5zIGlmIHRoZXkgb2NjdXIsIHNvIHdlCisgICAgcGFyc2UgdGhpcyBpbnRvIHh0ZXh0IHRva2VucyBzZXBhcmF0ZWQgYnkgV1NQIHRva2Vucy4KKworICAgIEJlY2F1c2UgYW4gJ3Vuc3RydWN0dXJlZCcgdmFsdWUgbXVzdCBieSBkZWZpbml0aW9uIGNvbnN0aXR1dGUgdGhlIGVudGlyZQorICAgIHZhbHVlLCB0aGlzICdnZXQnIHJvdXRpbmUgZG9lcyBub3QgcmV0dXJuIGEgcmVtYWluaW5nIHZhbHVlLCBvbmx5IHRoZQorICAgIHBhcnNlZCBUb2tlbkxpc3QuCisKKyAgICAiIiIKKyAgICAjIFhYWDogYnV0IHdoYXQgYWJvdXQgYmFyZSBDUiBhbmQgTEY/ICBUaGV5IG1pZ2h0IHNpZ25hbCB0aGUgc3RhcnQgb3IKKyAgICAjIGVuZCBvZiBhbiBlbmNvZGVkIHdvcmQuICBZQUdOSSBmb3Igbm93LCBzaW5jZSBvdXQgY3VycmVudCBwYXJzZXJzCisgICAgIyB3aWxsIG5ldmVyIHNlbmQgdXMgc3RyaW5ncyB3aXRoIGJhcmQgQ1Igb3IgTEYuCisKKyAgICB1bnN0cnVjdHVyZWQgPSBVbnN0cnVjdHVyZWRUb2tlbkxpc3QoKQorICAgIHdoaWxlIHZhbHVlOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHZhbHVlLnN0YXJ0c3dpdGgoJz0/Jyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2VuY29kZWRfd29yZCh2YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhhdmVfd3MgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgbGVuKHVuc3RydWN0dXJlZCkgPiAwOgorICAgICAgICAgICAgICAgICAgICBpZiB1bnN0cnVjdHVyZWRbLTFdLnRva2VuX3R5cGUgIT0gJ2Z3cyc6CisgICAgICAgICAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pc3Npbmcgd2hpdGVzcGFjZSBiZWZvcmUgZW5jb2RlZCB3b3JkIikpCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX3dzID0gRmFsc2UKKyAgICAgICAgICAgICAgICBpZiBoYXZlX3dzIGFuZCBsZW4odW5zdHJ1Y3R1cmVkKSA+IDE6CisgICAgICAgICAgICAgICAgICAgIGlmIHVuc3RydWN0dXJlZFstMl0udG9rZW5fdHlwZSA9PSAnZW5jb2RlZC13b3JkJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZFstMV0gPSBFV1doaXRlU3BhY2VUZXJtaW5hbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWRbLTFdLCAnZndzJykKKyAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWQuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRvaywgKnJlbWFpbmRlciA9IF93c3Bfc3BsaXR0ZXIodmFsdWUsIDEpCisgICAgICAgIHZ0ZXh0ID0gVmFsdWVUZXJtaW5hbCh0b2ssICd2dGV4dCcpCisgICAgICAgIF92YWxpZGF0ZV94dGV4dCh2dGV4dCkKKyAgICAgICAgdW5zdHJ1Y3R1cmVkLmFwcGVuZCh2dGV4dCkKKyAgICAgICAgdmFsdWUgPSAnJy5qb2luKHJlbWFpbmRlcikKKyAgICByZXR1cm4gdW5zdHJ1Y3R1cmVkCisKK2RlZiBnZXRfcXBfY3RleHQodmFsdWUpOgorICAgICIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CisKKyAgICBUaGlzIGlzIG5vdCB0aGUgUkZDIGN0ZXh0LCBzaW5jZSB3ZSBhcmUgaGFuZGxpbmcgbmVzdGVkIGNvbW1lbnRzIGluIGNvbW1lbnQKKyAgICBhbmQgdW5xdW90aW5nIHF1b3RlZC1wYWlycyBoZXJlLiAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSAnKCknCisgICAgY2hhcmFjdGVycywgYnV0IGlmIHdlIGZpbmQgYW55IEFTQ0lJIG90aGVyIHRoYW4gdGhlIFJGQyBkZWZpbmVkIHByaW50YWJsZQorICAgIEFTQ0lJIGFuIE5vblByaW50YWJsZURlZmVjdCBpcyBhZGRlZCB0byB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QuICBTaW5jZQorICAgIHF1b3RlZCBwYWlycyBhcmUgY29udmVydGVkIHRvIHRoZWlyIHVucXVvdGVkIHZhbHVlcywgd2hhdCBpcyByZXR1cm5lZCBpcworICAgIGEgJ3B0ZXh0JyB0b2tlbi4gIEluIHRoaXMgY2FzZSBpdCBpcyBhIFdoaXRlU3BhY2VUZXJtaW5hbCwgc28gaXQncyB2YWx1ZQorICAgIGlzICcgJy4KKworICAgICIiIgorICAgIHB0ZXh0LCB2YWx1ZSwgXyA9IF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsICcoKScpCisgICAgcHRleHQgPSBXaGl0ZVNwYWNlVGVybWluYWwocHRleHQsICdwdGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KHB0ZXh0KQorICAgIHJldHVybiBwdGV4dCwgdmFsdWUKKworZGVmIGdldF9xY29udGVudCh2YWx1ZSk6CisgICAgIiIicWNvbnRlbnQgPSBxdGV4dCAvIHF1b3RlZC1wYWlyCisKKyAgICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlIERRVU9URSBjaGFyYWN0ZXIsIGJ1dCBpZiB3ZSBmaW5kIGFueSBBU0NJSQorICAgIG90aGVyIHRoYW4gdGhlIFJGQyBkZWZpbmVkIHByaW50YWJsZSBBU0NJSSBhbiBOb25QcmludGFibGVEZWZlY3QgaXMKKyAgICBhZGRlZCB0byB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QuICBBbnkgcXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIKKyAgICB1bnF1b3RlZCB2YWx1ZXMsIHNvIHdoYXQgaXMgcmV0dXJuZWQgaXMgYSAncHRleHQnIHRva2VuLiAgSW4gdGhpcyBjYXNlIGl0CisgICAgaXMgYSBWYWx1ZVRlcm1pbmFsLgorCisgICAgIiIiCisgICAgcHRleHQsIHZhbHVlLCBfID0gX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgJyInKQorICAgIHB0ZXh0ID0gVmFsdWVUZXJtaW5hbChwdGV4dCwgJ3B0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQocHRleHQpCisgICAgcmV0dXJuIHB0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X2F0ZXh0KHZhbHVlKToKKyAgICAiIiJhdGV4dCA9IDxtYXRjaGVzIF9hdGV4dF9tYXRjaGVyPgorCisgICAgV2UgYWxsb3cgYW55IG5vbi1BVE9NX0VORFMgaW4gYXRleHQsIGJ1dCBhZGQgYW4gSW52YWxpZEFUZXh0RGVmZWN0IHRvCisgICAgdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0IGlmIHdlIGZpbmQgbm9uLWF0ZXh0IGNoYXJhY3RlcnMuCisgICAgIiIiCisgICAgbSA9IF9ub25fYXRvbV9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYXRleHQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgYXRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbihhdGV4dCk6XQorICAgIGF0ZXh0ID0gVmFsdWVUZXJtaW5hbChhdGV4dCwgJ2F0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQoYXRleHQpCisgICAgcmV0dXJuIGF0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X2JhcmVfcXVvdGVkX3N0cmluZyh2YWx1ZSk6CisgICAgIiIiYmFyZS1xdW90ZWQtc3RyaW5nID0gRFFVT1RFICooW0ZXU10gcWNvbnRlbnQpIFtGV1NdIERRVU9URQorCisgICAgQSBxdW90ZWQtc3RyaW5nIHdpdGhvdXQgdGhlIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGUgc3BhY2UuICBJdHMKKyAgICB2YWx1ZSBpcyB0aGUgdGV4dCBiZXR3ZWVuIHRoZSBxdW90ZSBtYXJrcywgd2l0aCB3aGl0ZXNwYWNlCisgICAgcHJlc2VydmVkIGFuZCBxdW90ZWQgcGFpcnMgZGVjb2RlZC4KKyAgICAiIiIKKyAgICBpZiB2YWx1ZVswXSAhPSAnIic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkICdcIicgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgYmFyZV9xdW90ZWRfc3RyaW5nID0gQmFyZVF1b3RlZFN0cmluZygpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJyInOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Fjb250ZW50KHZhbHVlKQorICAgICAgICBiYXJlX3F1b3RlZF9zdHJpbmcuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgYmFyZV9xdW90ZWRfc3RyaW5nLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgaW5zaWRlIHF1b3RlZCBzdHJpbmciKSkKKyAgICAgICAgcmV0dXJuIGJhcmVfcXVvdGVkX3N0cmluZywgdmFsdWUKKyAgICByZXR1cm4gYmFyZV9xdW90ZWRfc3RyaW5nLCB2YWx1ZVsxOl0KKworZGVmIGdldF9jb21tZW50KHZhbHVlKToKKyAgICAiIiJjb21tZW50ID0gIigiICooW0ZXU10gY2NvbnRlbnQpIFtGV1NdICIpIgorICAgICAgIGNjb250ZW50ID0gY3RleHQgLyBxdW90ZWQtcGFpciAvIGNvbW1lbnQKKworICAgIFdlIGhhbmRsZSBuZXN0ZWQgY29tbWVudHMgaGVyZSwgYW5kIHF1b3RlZC1wYWlyIGluIG91ciBxcC1jdGV4dCByb3V0aW5lLgorICAgICIiIgorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnKCc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkICcoJyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBjb21tZW50ID0gQ29tbWVudCgpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gIikiOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcoJzoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jb21tZW50KHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3FwX2N0ZXh0KHZhbHVlKQorICAgICAgICBjb21tZW50LmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGNvbW1lbnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbnNpZGUgY29tbWVudCIpKQorICAgICAgICByZXR1cm4gY29tbWVudCwgdmFsdWUKKyAgICByZXR1cm4gY29tbWVudCwgdmFsdWVbMTpdCisKK2RlZiBnZXRfY2Z3cyh2YWx1ZSk6CisgICAgIiIiQ0ZXUyA9ICgxKihbRldTXSBjb21tZW50KSBbRldTXSkgLyBGV1MKKworICAgICIiIgorICAgIGNmd3MgPSBDRldTTGlzdCgpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2NvbW1lbnQodmFsdWUpCisgICAgICAgIGNmd3MuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBjZndzLCB2YWx1ZQorCitkZWYgZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpOgorICAgICIiInF1b3RlZC1zdHJpbmcgPSBbQ0ZXU10gPGJhcmUtcXVvdGVkLXN0cmluZz4gW0NGV1NdCisKKyAgICAnYmFyZS1xdW90ZWQtc3RyaW5nJyBpcyBhbiBpbnRlcm1lZGlhdGUgY2xhc3MgZGVmaW5lZCBieSB0aGlzCisgICAgcGFyc2VyIGFuZCBub3QgYnkgdGhlIFJGQyBncmFtbWFyLiAgSXQgaXMgdGhlIHF1b3RlZCBzdHJpbmcKKyAgICB3aXRob3V0IGFueSBhdHRhY2hlZCBDRldTLgorICAgICIiIgorICAgIHF1b3RlZF9zdHJpbmcgPSBRdW90ZWRTdHJpbmcoKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIHF1b3RlZF9zdHJpbmcuYXBwZW5kKHRva2VuKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9iYXJlX3F1b3RlZF9zdHJpbmcodmFsdWUpCisgICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIHF1b3RlZF9zdHJpbmcsIHZhbHVlCisKK2RlZiBnZXRfYXRvbSh2YWx1ZSk6CisgICAgIiIiYXRvbSA9IFtDRldTXSAxKmF0ZXh0IFtDRldTXQorCisgICAgIiIiCisgICAgYXRvbSA9IEF0b20oKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0b20uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBBVE9NX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGF0b20gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0ZXh0KHZhbHVlKQorICAgIGF0b20uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0b20uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhdG9tLCB2YWx1ZQorCitkZWYgZ2V0X2RvdF9hdG9tX3RleHQodmFsdWUpOgorICAgICIiIiBkb3QtdGV4dCA9IDEqYXRleHQgKigiLiIgMSphdGV4dCkKKworICAgICIiIgorICAgIGRvdF9hdG9tX3RleHQgPSBEb3RBdG9tVGV4dCgpCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdIGluIEFUT01fRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkIGF0b20gYXQgYSBzdGFydCBvZiAiCisgICAgICAgICAgICAiZG90LWF0b20tdGV4dCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIEFUT01fRU5EUzoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0ZXh0KHZhbHVlKQorICAgICAgICBkb3RfYXRvbV90ZXh0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICcuJzoKKyAgICAgICAgICAgIGRvdF9hdG9tX3RleHQuYXBwZW5kKERPVCkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgZG90X2F0b21fdGV4dFstMV0gaXMgRE9UOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgYXRvbSBhdCBlbmQgb2YgZG90LWF0b20tdGV4dCAiCisgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCgnLicrdmFsdWUpKQorICAgIHJldHVybiBkb3RfYXRvbV90ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X2RvdF9hdG9tKHZhbHVlKToKKyAgICAiIiIgZG90LWF0b20gPSBbQ0ZXU10gZG90LWF0b20tdGV4dCBbQ0ZXU10KKworICAgICIiIgorICAgIGRvdF9hdG9tID0gRG90QXRvbSgpCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBkb3RfYXRvbS5hcHBlbmQodG9rZW4pCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvdF9hdG9tX3RleHQodmFsdWUpCisgICAgZG90X2F0b20uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gZG90X2F0b20sIHZhbHVlCisKK2RlZiBnZXRfd29yZCh2YWx1ZSk6CisgICAgIiIid29yZCA9IGF0b20gLyBxdW90ZWQtc3RyaW5nCisKKyAgICBFaXRoZXIgYXRvbSBvciBxdW90ZWQtc3RyaW5nIG1heSBzdGFydCB3aXRoIENGV1MuICBXZSBoYXZlIHRvIHBlZWwgb2ZmIHRoaXMKKyAgICBDRldTIGZpcnN0IHRvIGRldGVybWluZSB3aGljaCB0eXBlIG9mIHdvcmQgdG8gcGFyc2UuICBBZnRlcndhcmQgd2Ugc3BsaWNlCisgICAgdGhlIGxlYWRpbmcgQ0ZXUywgaWYgYW55LCBpbnRvIHRoZSBwYXJzZWQgc3ViLXRva2VuLgorCisgICAgSWYgbmVpdGhlciBhbiBhdG9tIG9yIGEgcXVvdGVkLXN0cmluZyBpcyBmb3VuZCBiZWZvcmUgdGhlIG5leHQgc3BlY2lhbCwgYQorICAgIEhlYWRlclBhcnNlRXJyb3IgaXMgcmFpc2VkLgorCisgICAgVGhlIHRva2VuIHJldHVybmVkIGlzIGVpdGhlciBhbiBBdG9tIG9yIGEgUXVvdGVkU3RyaW5nLCBhcyBhcHByb3ByaWF0ZS4KKyAgICBUaGlzIG1lYW5zIHRoZSAnd29yZCcgbGV2ZWwgb2YgdGhlIGZvcm1hbCBncmFtbWFyIGlzIG5vdCByZXByZXNlbnRlZCBpbiB0aGUKKyAgICBwYXJzZSB0cmVlOyB0aGlzIGlzIGJlY2F1c2UgaGF2aW5nIHRoYXQgZXh0cmEgbGF5ZXIgd2hlbiBtYW5pcHVsYXRpbmcgdGhlCisgICAgcGFyc2UgdHJlZSBpcyBtb3JlIGNvbmZ1c2luZyB0aGFuIGl0IGlzIGhlbHBmdWwuCisKKyAgICAiIiIKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGVsc2U6CisgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXT09JyInOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICBlbGlmIHZhbHVlWzBdIGluIFNQRUNJQUxTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgJ2F0b20nIG9yICdxdW90ZWQtc3RyaW5nJyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBlbHNlOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRvbSh2YWx1ZSkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgcmV0dXJuIHRva2VuLCB2YWx1ZQorCitkZWYgZ2V0X3BocmFzZSh2YWx1ZSk6CisgICAgIiIiIHBocmFzZSA9IDEqd29yZCAvIG9icy1waHJhc2UKKyAgICAgICAgb2JzLXBocmFzZSA9IHdvcmQgKih3b3JkIC8gIi4iIC8gQ0ZXUykKKworICAgIFRoaXMgbWVhbnMgYSBwaHJhc2UgY2FuIGJlIGEgc2VxdWVuY2Ugb2Ygd29yZHMsIHBlcmlvZHMsIGFuZCBDRldTIGluIGFueQorICAgIG9yZGVyIGFzIGxvbmcgYXMgaXQgc3RhcnRzIHdpdGggYXQgbGVhc3Qgb25lIHdvcmQuICBJZiBhbnl0aGluZyBvdGhlciB0aGFuCisgICAgd29yZHMgaXMgZGV0ZWN0ZWQsIGFuIE9ic29sZXRlSGVhZGVyRGVmZWN0IGlzIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdAorICAgIGxpc3QuICBXZSBhbHNvIGFjY2VwdCBhIHBocmFzZSB0aGF0IHN0YXJ0cyB3aXRoIENGV1MgZm9sbG93ZWQgYnkgYSBkb3Q7CisgICAgdGhpcyBpcyByZWdpc3RlcmVkIGFzIGFuIEludmFsaWRIZWFkZXJEZWZlY3QsIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkKKyAgICBldmVuIHRoZSBvYnNvbGV0ZSBncmFtbWFyLgorCisgICAgIiIiCisgICAgcGhyYXNlID0gUGhyYXNlKCkKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQorICAgICAgICBwaHJhc2UuYXBwZW5kKHRva2VuKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgInBocmFzZSBkb2VzIG5vdCBzdGFydCB3aXRoIHdvcmQiKSkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIFBIUkFTRV9FTkRTOgorICAgICAgICBpZiB2YWx1ZVswXT09Jy4nOgorICAgICAgICAgICAgcGhyYXNlLmFwcGVuZChET1QpCisgICAgICAgICAgICBwaHJhc2UuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJwZXJpb2QgaW4gJ3BocmFzZSciKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBwaHJhc2UuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lbnQgZm91bmQgd2l0aG91dCBhdG9tIikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHBocmFzZS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIHBocmFzZSwgdmFsdWUKKworZGVmIGdldF9sb2NhbF9wYXJ0KHZhbHVlKToKKyAgICAiIiIgbG9jYWwtcGFydCA9IGRvdC1hdG9tIC8gcXVvdGVkLXN0cmluZyAvIG9icy1sb2NhbC1wYXJ0CisKKyAgICAiIiIKKyAgICBsb2NhbF9wYXJ0ID0gTG9jYWxQYXJ0KCkKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGxvY2FsLXBhcnQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG90X2F0b20odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgaWYgdmFsdWVbMF0gIT0gJ1xcJyBhbmQgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHRva2VuID0gVG9rZW5MaXN0KCkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgbG9jYWxfcGFydC5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kICh2YWx1ZVswXT09J1xcJyBvciB2YWx1ZVswXSBub3QgaW4gUEhSQVNFX0VORFMpOgorICAgICAgICBvYnNfbG9jYWxfcGFydCwgdmFsdWUgPSBnZXRfb2JzX2xvY2FsX3BhcnQoc3RyKGxvY2FsX3BhcnQpICsgdmFsdWUpCisgICAgICAgIGlmIG9ic19sb2NhbF9wYXJ0LnRva2VuX3R5cGUgPT0gJ2ludmFsaWQtb2JzLWxvY2FsLXBhcnQnOgorICAgICAgICAgICAgbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAibG9jYWwtcGFydCBpcyBub3QgZG90LWF0b20sIHF1b3RlZC1zdHJpbmcsIG9yIG9icy1sb2NhbC1wYXJ0IikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAibG9jYWwtcGFydCBpcyBub3QgYSBkb3QtYXRvbSAoY29udGFpbnMgQ0ZXUykiKSkKKyAgICAgICAgbG9jYWxfcGFydFswXSA9IG9ic19sb2NhbF9wYXJ0CisgICAgdHJ5OgorICAgICAgICBsb2NhbF9wYXJ0LnZhbHVlLmVuY29kZSgnYXNjaWknKQorICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgIGxvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk5vbkFTQ0lJTG9jYWxQYXJ0RGVmZWN0KAorICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzKSIpKQorICAgIHJldHVybiBsb2NhbF9wYXJ0LCB2YWx1ZQorCitkZWYgZ2V0X29ic19sb2NhbF9wYXJ0KHZhbHVlKToKKyAgICAiIiIgb2JzLWxvY2FsLXBhcnQgPSB3b3JkICooIi4iIHdvcmQpCisgICAgIiIiCisgICAgb2JzX2xvY2FsX3BhcnQgPSBPYnNMb2NhbFBhcnQoKQorICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBGYWxzZQorICAgIHdoaWxlIHZhbHVlIGFuZCAodmFsdWVbMF09PSdcXCcgb3IgdmFsdWVbMF0gbm90IGluIFBIUkFTRV9FTkRTKToKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICAgICAgaWYgbGFzdF9ub25fd3Nfd2FzX2RvdDoKKyAgICAgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgcmVwZWF0ZWQgJy4nIikpCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5hcHBlbmQoRE9UKQorICAgICAgICAgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IFRydWUKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbGlmIHZhbHVlWzBdPT0nXFwnOgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzcGxhY2VkLXNwZWNpYWwnKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiJ1xcJyBjaGFyYWN0ZXIgb3V0c2lkZSBvZiBxdW90ZWQtc3RyaW5nL2Njb250ZW50IikpCisgICAgICAgICAgICBsYXN0X25vbl93c193YXNfZG90ID0gRmFsc2UKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG9ic19sb2NhbF9wYXJ0IGFuZCBvYnNfbG9jYWxfcGFydFstMV0udG9rZW5fdHlwZSAhPSAnZG90JzoKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJtaXNzaW5nICcuJyBiZXR3ZWVuIHdvcmRzIikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQorICAgICAgICAgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIG5vdCBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG9ic19sb2NhbF9wYXJ0LmFwcGVuZCh0b2tlbikKKyAgICBpZiAob2JzX2xvY2FsX3BhcnRbMF0udG9rZW5fdHlwZSA9PSAnZG90JyBvcgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnRbMF0udG9rZW5fdHlwZT09J2Nmd3MnIGFuZAorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnRbMV0udG9rZW5fdHlwZT09J2RvdCcpOgorICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJJbnZhbGlkIGxlYWRpbmcgJy4nIGluIGxvY2FsIHBhcnQiKSkKKyAgICBpZiAob2JzX2xvY2FsX3BhcnRbLTFdLnRva2VuX3R5cGUgPT0gJ2RvdCcgb3IKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlPT0nY2Z3cycgYW5kCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFstMl0udG9rZW5fdHlwZT09J2RvdCcpOgorICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJJbnZhbGlkIHRyYWlsaW5nICcuJyBpbiBsb2NhbCBwYXJ0IikpCisgICAgaWYgb2JzX2xvY2FsX3BhcnQuZGVmZWN0czoKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW9icy1sb2NhbC1wYXJ0JworICAgIHJldHVybiBvYnNfbG9jYWxfcGFydCwgdmFsdWUKKworZGVmIGdldF9kdGV4dCh2YWx1ZSk6CisgICAgIiIiIGR0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCBbIF0+IC8gb2JzLWR0ZXh0CisgICAgICAgIG9icy1kdGV4dCA9IG9icy1OTy1XUy1DVEwgLyBxdW90ZWQtcGFpcgorCisgICAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSBleGNsdWRlZCBjaGFyYWN0ZXJzLCBidXQgYnV0IGlmIHdlIGZpbmQgYW55CisgICAgQVNDSUkgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlIEFTQ0lJIGFuIE5vblByaW50YWJsZURlZmVjdCBpcworICAgIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIFF1b3RlZCBwYWlycyBhcmUgY29udmVydGVkIHRvIHRoZWlyCisgICAgdW5xdW90ZWQgdmFsdWVzLCBzbyB3aGF0IGlzIHJldHVybmVkIGlzIGEgcHRleHQgdG9rZW4sIGluIHRoaXMgY2FzZSBhCisgICAgVmFsdWVUZXJtaW5hbC4gIElmIHRoZXJlIHdlcmUgcXVvdGVkLXByaW50YWJsZXMsIGFuIE9ic29sZXRlSGVhZGVyRGVmZWN0IGlzCisgICAgYWRkZWQgdG8gdGhlIHJldHVybmVkIHRva2VuJ3MgZGVmZWN0IGxpc3QuCisKKyAgICAiIiIKKyAgICBwdGV4dCwgdmFsdWUsIGhhZF9xcCA9IF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsICdbXScpCisgICAgcHRleHQgPSBWYWx1ZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQorICAgIGlmIGhhZF9xcDoKKyAgICAgICAgcHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgInF1b3RlZCBwcmludGFibGUgZm91bmQgaW4gZG9tYWluLWxpdGVyYWwiKSkKKyAgICBfdmFsaWRhdGVfeHRleHQocHRleHQpCisgICAgcmV0dXJuIHB0ZXh0LCB2YWx1ZQorCitkZWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKKyAgICBpZiB2YWx1ZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAiZW5kIG9mIGlucHV0IGluc2lkZSBkb21haW4tbGl0ZXJhbCIpKQorICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCddJywgJ2RvbWFpbi1saXRlcmFsLWVuZCcpKQorICAgIHJldHVybiBUcnVlCisKK2RlZiBnZXRfZG9tYWluX2xpdGVyYWwodmFsdWUpOgorICAgICIiIiBkb21haW4tbGl0ZXJhbCA9IFtDRldTXSAiWyIgKihbRldTXSBkdGV4dCkgW0ZXU10gIl0iIFtDRldTXQorCisgICAgIiIiCisgICAgZG9tYWluX2xpdGVyYWwgPSBEb21haW5MaXRlcmFsKCkKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBkb21haW4tbGl0ZXJhbCIpCisgICAgaWYgdmFsdWVbMF0gIT0gJ1snOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgJ1snIGF0IHN0YXJ0IG9mIGRvbWFpbi1saXRlcmFsICIKKyAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgICAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ1snLCAnZG9tYWluLWxpdGVyYWwtc3RhcnQnKSkKKyAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZHRleHQodmFsdWUpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICBpZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgICAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCisgICAgaWYgdmFsdWVbMF0gIT0gJ10nOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgJ10nIGF0IGVuZCBvZiBkb21haW4tbGl0ZXJhbCAiCisgICAgICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCddJywgJ2RvbWFpbi1saXRlcmFsLWVuZCcpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKworZGVmIGdldF9kb21haW4odmFsdWUpOgorICAgICIiIiBkb21haW4gPSBkb3QtYXRvbSAvIGRvbWFpbi1saXRlcmFsIC8gb2JzLWRvbWFpbgorICAgICAgICBvYnMtZG9tYWluID0gYXRvbSAqKCIuIiBhdG9tKSkKKworICAgICIiIgorICAgIGRvbWFpbiA9IERvbWFpbigpCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBkb21haW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgaWYgdmFsdWVbMF0gPT0gJ1snOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluX2xpdGVyYWwodmFsdWUpCisgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgIGRvbWFpbi5hcHBlbmQodG9rZW4pCisgICAgICAgIHJldHVybiBkb21haW4sIHZhbHVlCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG90X2F0b20odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRvbSh2YWx1ZSkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgZG9tYWluLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICBkb21haW4uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImRvbWFpbiBpcyBub3QgYSBkb3QtYXRvbSAoY29udGFpbnMgQ0ZXUykiKSkKKyAgICAgICAgaWYgZG9tYWluWzBdLnRva2VuX3R5cGUgPT0gJ2RvdC1hdG9tJzoKKyAgICAgICAgICAgIGRvbWFpbls6XSA9IGRvbWFpblswXQorICAgICAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICAgICAgZG9tYWluLmFwcGVuZChET1QpCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRvbSh2YWx1ZVsxOl0pCisgICAgICAgICAgICBkb21haW4uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBkb21haW4sIHZhbHVlCisKK2RlZiBnZXRfYWRkcl9zcGVjKHZhbHVlKToKKyAgICAiIiIgYWRkci1zcGVjID0gbG9jYWwtcGFydCAiQCIgZG9tYWluCisKKyAgICAiIiIKKyAgICBhZGRyX3NwZWMgPSBBZGRyU3BlYygpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2xvY2FsX3BhcnQodmFsdWUpCisgICAgYWRkcl9zcGVjLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJ0AnOgorICAgICAgICBhZGRyX3NwZWMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiYWRkLXNwZWMgbG9jYWwgcGFydCB3aXRoIG5vIGRvbWFpbiIpKQorICAgICAgICByZXR1cm4gYWRkcl9zcGVjLCB2YWx1ZQorICAgIGFkZHJfc3BlYy5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnQCcsICdhZGRyZXNzLWF0LXN5bWJvbCcpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQorICAgIGFkZHJfc3BlYy5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGFkZHJfc3BlYywgdmFsdWUKKworZGVmIGdldF9vYnNfcm91dGUodmFsdWUpOgorICAgICIiIiBvYnMtcm91dGUgPSBvYnMtZG9tYWluLWxpc3QgIjoiCisgICAgICAgIG9icy1kb21haW4tbGlzdCA9ICooQ0ZXUyAvICIsIikgIkAiIGRvbWFpbiAqKCIsIiBbQ0ZXU10gWyJAIiBkb21haW5dKQorCisgICAgICAgIFJldHVybnMgYW4gb2JzLXJvdXRlIHRva2VuIHdpdGggdGhlIGFwcHJvcHJpYXRlIHN1Yi10b2tlbnMgKHRoYXQgaXMsCisgICAgICAgIHRoZXJlIGlzIG5vIG9icy1kb21haW4tbGlzdCBpbiB0aGUgcGFyc2UgdHJlZSkuCisgICAgIiIiCisgICAgb2JzX3JvdXRlID0gT2JzUm91dGUoKQorICAgIHdoaWxlIHZhbHVlIGFuZCAodmFsdWVbMF09PScsJyBvciB2YWx1ZVswXSBpbiBDRldTX0xFQURFUik6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICBvYnNfcm91dGUuYXBwZW5kKHRva2VuKQorICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQoTGlzdFNlcGFyYXRvcikKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICdAJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgb2JzLXJvdXRlIGRvbWFpbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBvYnNfcm91dGUuYXBwZW5kKFJvdXRlQ29tcG9uZW50TWFya2VyKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQorICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdPT0nLCc6CisgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQoTGlzdFNlcGFyYXRvcikKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIHZhbHVlWzBdID09ICdAJzoKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQoUm91dGVDb21wb25lbnRNYXJrZXIpCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluKHZhbHVlWzE6XSkKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZW5kIG9mIGhlYWRlciB3aGlsZSBwYXJzaW5nIG9icy1yb3V0ZSIpCisgICAgaWYgdmFsdWVbMF0gIT0gJzonOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciggImV4cGVjdGVkICc6JyBtYXJraW5nIGVuZCBvZiAiCisgICAgICAgICAgICAib2JzLXJvdXRlIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIG9ic19yb3V0ZS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOicsICdlbmQtb2Ytb2JzLXJvdXRlLW1hcmtlcicpKQorICAgIHJldHVybiBvYnNfcm91dGUsIHZhbHVlWzE6XQorCitkZWYgZ2V0X2FuZ2xlX2FkZHIodmFsdWUpOgorICAgICIiIiBhbmdsZS1hZGRyID0gW0NGV1NdICI8IiBhZGRyLXNwZWMgIj4iIFtDRldTXSAvIG9icy1hbmdsZS1hZGRyCisgICAgICAgIG9icy1hbmdsZS1hZGRyID0gW0NGV1NdICI8IiBvYnMtcm91dGUgYWRkci1zcGVjICI+IiBbQ0ZXU10KKworICAgICIiIgorICAgIGFuZ2xlX2FkZHIgPSBBbmdsZUFkZHIoKQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICc8JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYW5nbGUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc8JywgJ2FuZ2xlLWFkZHItc3RhcnQnKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICMgQWx0aG91Z2ggaXQgaXMgbm90IGxlZ2FsIHBlciBSRkM1MzIyLCBTTVRQIHVzZXMgJzw+JyBpbiBjZXJ0YWluCisgICAgIyBjaXJjdW1zdGFuY2VzLgorICAgIGlmIHZhbHVlWzBdID09ICc+JzoKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPicsICdhbmdsZS1hZGRyLWVuZCcpKQorICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIm51bGwgYWRkci1zcGVjIGluIGFuZ2xlLWFkZHIiKSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgcmV0dXJuIGFuZ2xlX2FkZHIsIHZhbHVlCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcl9zcGVjKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X29ic19yb3V0ZSh2YWx1ZSkKKyAgICAgICAgICAgIGFuZ2xlX2FkZHIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJvYnNvbGV0ZSByb3V0ZSBzcGVjaWZpY2F0aW9uIGluIGFuZ2xlLWFkZHIiKSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFkZHItc3BlYyBvciBvYnMtcm91dGUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcl9zcGVjKHZhbHVlKQorICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnPic6CisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgZWxzZToKKyAgICAgICAgYW5nbGVfYWRkci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJtaXNzaW5nIHRyYWlsaW5nICc+JyBvbiBhbmdsZS1hZGRyIikpCisgICAgYW5nbGVfYWRkci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPicsICdhbmdsZS1hZGRyLWVuZCcpKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhbmdsZV9hZGRyLCB2YWx1ZQorCitkZWYgZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSk6CisgICAgIiIiIGRpc3BsYXktbmFtZSA9IHBocmFzZQorCisgICAgQmVjYXVzZSB0aGlzIGlzIHNpbXBseSBhIG5hbWUtcnVsZSwgd2UgZG9uJ3QgcmV0dXJuIGEgZGlzcGxheS1uYW1lCisgICAgdG9rZW4gY29udGFpbmluZyBhIHBocmFzZSwgYnV0IHJhdGhlciBhIGRpc3BsYXktbmFtZSB0b2tlbiB3aXRoCisgICAgdGhlIGNvbnRlbnQgb2YgdGhlIHBocmFzZS4KKworICAgICIiIgorICAgIGRpc3BsYXlfbmFtZSA9IERpc3BsYXlOYW1lKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorICAgIGRpc3BsYXlfbmFtZS5leHRlbmQodG9rZW5bOl0pCisgICAgZGlzcGxheV9uYW1lLmRlZmVjdHMgPSB0b2tlbi5kZWZlY3RzWzpdCisgICAgcmV0dXJuIGRpc3BsYXlfbmFtZSwgdmFsdWUKKworCitkZWYgZ2V0X25hbWVfYWRkcih2YWx1ZSk6CisgICAgIiIiIG5hbWUtYWRkciA9IFtkaXNwbGF5LW5hbWVdIGFuZ2xlLWFkZHIKKworICAgICIiIgorICAgIG5hbWVfYWRkciA9IE5hbWVBZGRyKCkKKyAgICAjIEJvdGggdGhlIG9wdGlvbmFsIGRpc3BsYXkgbmFtZSBhbmQgdGhlIGFuZ2xlLWFkZHIgY2FuIHN0YXJ0IHdpdGggY2Z3cy4KKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KGxlYWRlcikpCisgICAgaWYgdmFsdWVbMF0gIT0gJzwnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBuYW1lLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kaXNwbGF5X25hbWUodmFsdWUpCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBuYW1lLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh0b2tlbikpCisgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRva2VuWzBdWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgICAgIG5hbWVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FuZ2xlX2FkZHIodmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIG5hbWVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIG5hbWVfYWRkciwgdmFsdWUKKworZGVmIGdldF9tYWlsYm94KHZhbHVlKToKKyAgICAiIiIgbWFpbGJveCA9IG5hbWUtYWRkciAvIGFkZHItc3BlYworCisgICAgIiIiCisgICAgIyBUaGUgb25seSB3YXkgdG8gZmlndXJlIG91dCBpZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgbmFtZS1hZGRyIG9yIGFuCisgICAgIyBhZGRyLXNwZWMgaXMgdG8gdHJ5IHBhcnNpbmcgZWFjaCBvbmUuCisgICAgbWFpbGJveCA9IE1haWxib3goKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X25hbWVfYWRkcih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBtYWlsYm94IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiB0b2tlbi5hbGxfZGVmZWN0cyk6CisgICAgICAgIG1haWxib3gudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisgICAgbWFpbGJveC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIG1haWxib3gsIHZhbHVlCisKK2RlZiBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCBlbmRjaGFycyk6CisgICAgIiIiIFJlYWQgZXZlcnl0aGluZyB1cCB0byBvbmUgb2YgdGhlIGNoYXJzIGluIGVuZGNoYXJzLgorCisgICAgVGhpcyBpcyBvdXRzaWRlIHRoZSBmb3JtYWwgZ3JhbW1hci4gIFRoZSBJbnZhbGlkTWFpbGJveCBUb2tlbkxpc3QgdGhhdCBpcworICAgIHJldHVybmVkIGFjdHMgbGlrZSBhIE1haWxib3gsIGJ1dCB0aGUgZGF0YSBhdHRyaWJ1dGVzIGFyZSBOb25lLgorCisgICAgIiIiCisgICAgaW52YWxpZF9tYWlsYm94ID0gSW52YWxpZE1haWxib3goKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gZW5kY2hhcnM6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgaW52YWxpZF9tYWlsYm94LmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICBpbnZhbGlkX21haWxib3guYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBpbnZhbGlkX21haWxib3gsIHZhbHVlCisKK2RlZiBnZXRfbWFpbGJveF9saXN0KHZhbHVlKToKKyAgICAiIiIgbWFpbGJveC1saXN0ID0gKG1haWxib3ggKigiLCIgbWFpbGJveCkpIC8gb2JzLW1ib3gtbGlzdAorICAgICAgICBvYnMtbWJveC1saXN0ID0gKihbQ0ZXU10gIiwiKSBtYWlsYm94ICooIiwiIFttYWlsYm94IC8gQ0ZXU10pCisKKyAgICBGb3IgdGhpcyByb3V0aW5lIHdlIGdvIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyIGluIG9yZGVyIHRvIGltcHJvdmUgZXJyb3IKKyAgICBoYW5kbGluZy4gIFdlIHJlY29nbml6ZSB0aGUgZW5kIG9mIHRoZSBtYWlsYm94IGxpc3Qgb25seSBhdCB0aGUgZW5kIG9mIHRoZQorICAgIHZhbHVlIG9yIGF0IGEgJzsnICh0aGUgZ3JvdXAgdGVybWluYXRvcikuICBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIHR1cm4KKyAgICBpbnZhbGlkIG1haWxib3hlcyBpbnRvIEludmFsaWRNYWlsYm94IHRva2VucyBhbmQgY29udGludWUgcGFyc2luZyBhbnkKKyAgICByZW1haW5pbmcgdmFsaWQgbWFpbGJveGVzLiAgV2UgYWxzbyBhbGxvdyBhbGwgbWFpbGJveCBlbnRyaWVzIHRvIGJlIG51bGwsCisgICAgYW5kIHRoaXMgY29uZGl0aW9uIGlzIGhhbmRsZWQgYXBwcm9wcmlhdGVseSBhdCBhIGhpZ2hlciBsZXZlbC4KKworICAgICIiIgorICAgIG1haWxib3hfbGlzdCA9IE1haWxib3hMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbWFpbGJveCh2YWx1ZSkKKyAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gaW4gJyw7JzoKKyAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLDsnKQorICAgICAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtYWlsYm94IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgImVtcHR5IGVsZW1lbnQgaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtYWlsYm94IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluICcsOyc6CisgICAgICAgICAgICAjIENyYXAgYWZ0ZXIgbWFpbGJveDsgdHJlYXQgaXQgYXMgYW4gaW52YWxpZCBtYWlsYm94LgorICAgICAgICAgICAgIyBUaGUgbWFpbGJveCBpbmZvIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgbWFpbGJveCA9IG1haWxib3hfbGlzdFstMV0KKyAgICAgICAgICAgIG1haWxib3gudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLDsnKQorICAgICAgICAgICAgbWFpbGJveC5leHRlbmQodG9rZW4pCisgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImludmFsaWQgbWFpbGJveCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQoTGlzdFNlcGFyYXRvcikKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgcmV0dXJuIG1haWxib3hfbGlzdCwgdmFsdWUKKworCitkZWYgZ2V0X2dyb3VwX2xpc3QodmFsdWUpOgorICAgICIiIiBncm91cC1saXN0ID0gbWFpbGJveC1saXN0IC8gQ0ZXUyAvIG9icy1ncm91cC1saXN0CisgICAgICAgIG9icy1ncm91cC1saXN0ID0gMSooW0NGV1NdICIsIikgW0NGV1NdCisKKyAgICAiIiIKKyAgICBncm91cF9saXN0ID0gR3JvdXBMaXN0KCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGdyb3VwX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBiZWZvcmUgZ3JvdXAtbGlzdCIpKQorICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIGVtYWlsIHBhcnNpbmcsIHNpbmNlIENGV1Mtb25seSBpcyBhCisgICAgICAgICAgICAjIGxlZ2FsIGFsdGVybmF0aXZlIHRvIGdyb3VwLWxpc3QgaW4gYSBncm91cCwgd2hpY2ggaXMgdGhlIG9ubHkKKyAgICAgICAgICAgICMgcGxhY2UgZ3JvdXAtbGlzdCBhcHBlYXJzLgorICAgICAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbiBncm91cC1saXN0IikpCisgICAgICAgICAgICBncm91cF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICAgICAgZ3JvdXBfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X21haWxib3hfbGlzdCh2YWx1ZSkKKyAgICBpZiBsZW4odG9rZW4uYWxsX21haWxib3hlcyk9PTA6CisgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgZ3JvdXBfbGlzdC5leHRlbmQodG9rZW4pCisgICAgICAgIGdyb3VwX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImdyb3VwLWxpc3Qgd2l0aCBlbXB0eSBlbnRyaWVzIikpCisgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBncm91cF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKworZGVmIGdldF9ncm91cCh2YWx1ZSk6CisgICAgIiIiIGdyb3VwID0gZGlzcGxheS1uYW1lICI6IiBbZ3JvdXAtbGlzdF0gIjsiIFtDRldTXQorCisgICAgIiIiCisgICAgZ3JvdXAgPSBHcm91cCgpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJzonOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgJzonIGF0IGVuZCBvZiBncm91cCAiCisgICAgICAgICAgICAiZGlzcGxheSBuYW1lIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGdyb3VwLmFwcGVuZCh0b2tlbikKKyAgICBncm91cC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOicsICdncm91cC1kaXNwbGF5LW5hbWUtdGVybWluYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICc7JzoKKyAgICAgICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAnZ3JvdXAtdGVybWluYXRvcicpKQorICAgICAgICByZXR1cm4gZ3JvdXAsIHZhbHVlWzE6XQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9ncm91cF9saXN0KHZhbHVlKQorICAgIGdyb3VwLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGdyb3VwLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgaW4gZ3JvdXAiKSkKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkICc7JyBhdCBlbmQgb2YgZ3JvdXAgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIGdyb3VwLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ2dyb3VwLXRlcm1pbmF0b3InKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGdyb3VwLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gZ3JvdXAsIHZhbHVlCisKK2RlZiBnZXRfYWRkcmVzcyh2YWx1ZSk6CisgICAgIiIiIGFkZHJlc3MgPSBtYWlsYm94IC8gZ3JvdXAKKworICAgIE5vdGUgdGhhdCBjb3VudGVyLWludHVpdGl2ZWx5LCBhbiBhZGRyZXNzIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgYWRkcmVzcyBvcgorICAgIGEgbGlzdCBvZiBhZGRyZXNzZXMgKGEgZ3JvdXApLiAgVGhpcyBpcyB3aHkgdGhlIHJldHVybmVkIEFkZHJlc3Mgb2JqZWN0IGhhcworICAgIGEgJ21haWxib3hlcycgYXR0cmlidXRlIHdoaWNoIHRyZWF0cyBhIHNpbmdsZSBhZGRyZXNzIGFzIGEgbGlzdCBvZiBsZW5ndGgKKyAgICBvbmUuICBXaGVuIHlvdSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0byB0d28gY2FzZXMsIGV4dHJhY3QgdGhlIHNpbmdsZQorICAgIGVsZW1lbnQsIHdoaWNoIGlzIGVpdGhlciBhIG1haWxib3ggb3IgYSBncm91cCB0b2tlbi4KKworICAgICIiIgorICAgICMgVGhlIGZvcm1hbCBncmFtbWFyIGlzbid0IHZlcnkgaGVscGZ1bCB3aGVuIHBhcnNpbmcgYW4gYWRkcmVzcy4gIG1haWxib3gKKyAgICAjIGFuZCBncm91cCwgZXNwZWNpYWxseSB3aGVuIGFsbG93aW5nIGZvciBvYnNvbGV0ZSBmb3Jtcywgc3RhcnQgb2ZmIHZlcnkKKyAgICAjIHNpbWlsYXJseS4gIEl0IGlzIG9ubHkgd2hlbiB5b3UgcmVhY2ggb25lIG9mIEAsIDwsIG9yIDogdGhhdCB5b3Uga25vdworICAgICMgd2hhdCB5b3UndmUgZ290LiAgU28sIHdlIHRyeSBlYWNoIG9uZSBpbiB0dXJuLCBzdGFydGluZyB3aXRoIHRoZSBtb3JlCisgICAgIyBsaWtlbHkgb2YgdGhlIHR3by4gIFdlIGNvdWxkIHBlcmhhcHMgbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50IGJ5IGxvb2tpbmcKKyAgICAjIGZvciBhIHBocmFzZSBhbmQgdGhlbiBicmFuY2hpbmcgYmFzZWQgb24gdGhlIG5leHQgY2hhcmFjdGVyLCBidXQgdGhhdAorICAgICMgd291bGQgYmUgYSBwcmVtYXR1cmUgb3B0aW1pemF0aW9uLgorICAgIGFkZHJlc3MgPSBBZGRyZXNzKCkKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9ncm91cCh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tYWlsYm94KHZhbHVlKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWRkcmVzcyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBhZGRyZXNzLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYWRkcmVzcywgdmFsdWUKKworZGVmIGdldF9hZGRyZXNzX2xpc3QodmFsdWUpOgorICAgICIiIiBhZGRyZXNzX2xpc3QgPSAoYWRkcmVzcyAqKCIsIiBhZGRyZXNzKSkgLyBvYnMtYWRkci1saXN0CisgICAgICAgIG9icy1hZGRyLWxpc3QgPSAqKFtDRldTXSAiLCIpIGFkZHJlc3MgKigiLCIgW2FkZHJlc3MgLyBDRldTXSkKKworICAgIFdlIGRlcGFydCBmcm9tIHRoZSBmb3JtYWwgZ3JhbW1hciBoZXJlIGJ5IGNvbnRpbnVpbmcgdG8gcGFyc2UgdW50aWwgdGhlIGVuZAorICAgIG9mIHRoZSBpbnB1dCwgYXNzdW1pbmcgdGhlIGlucHV0IHRvIGJlIGVudGlyZWx5IGNvbXBvc2VkIG9mIGFuCisgICAgYWRkcmVzcy1saXN0LiAgVGhpcyBpcyBhbHdheXMgdHJ1ZSBpbiBlbWFpbCBwYXJzaW5nLCBhbmQgYWxsb3dzIHVzCisgICAgdG8gc2tpcCBpbnZhbGlkIGFkZHJlc3NlcyB0byBwYXJzZSBhZGRpdGlvbmFsIHZhbGlkIG9uZXMuCisKKyAgICAiIiIKKyAgICBhZGRyZXNzX2xpc3QgPSBBZGRyZXNzTGlzdCgpCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyZXNzKHZhbHVlKQorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJhZGRyZXNzLWxpc3QgZW50cnkgd2l0aCBubyBjb250ZW50IikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJywnKQorICAgICAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKEFkZHJlc3MoW3Rva2VuXSkpCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCisgICAgICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJywnKQorICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKEFkZHJlc3MoW3Rva2VuXSkpCisgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBhZGRyZXNzIGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJywnOgorICAgICAgICAgICAgIyBDcmFwIGFmdGVyIGFkZHJlc3M7IHRyZWF0IGl0IGFzIGFuIGludmFsaWQgbWFpbGJveC4KKyAgICAgICAgICAgICMgVGhlIG1haWxib3ggaW5mbyB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgIG1haWxib3ggPSBhZGRyZXNzX2xpc3RbLTFdWzBdCisgICAgICAgICAgICBtYWlsYm94LnRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JworICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJywnKQorICAgICAgICAgICAgbWFpbGJveC5leHRlbmQodG9rZW4pCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImludmFsaWQgYWRkcmVzcyBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgaWYgdmFsdWU6ICAjIE11c3QgYmUgYSAsIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwoJywnLCAnbGlzdC1zZXBhcmF0b3InKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgcmV0dXJuIGFkZHJlc3NfbGlzdCwgdmFsdWUKKworIworIyBYWFg6IEFzIEkgYmVnaW4gdG8gYWRkIGFkZGl0aW9uYWwgaGVhZGVyIHBhcnNlcnMsIEknbSByZWFsaXppbmcgd2UgcHJvYmFibHkKKyMgaGF2ZSB0d28gbGV2ZWwgb2YgcGFyc2VyIHJvdXRpbmVzOiB0aGUgZ2V0X1hYWCBtZXRob2RzIHRoYXQgZ2V0IGEgdG9rZW4gaW4KKyMgdGhlIGdyYW1tYXIsIGFuZCBwYXJzZV9YWFggbWV0aG9kcyB0aGF0IHBhcnNlIGFuIGVudGlyZSBmaWVsZCB2YWx1ZS4gIFNvCisjIGdldF9hZGRyZXNzX2xpc3QgYWJvdmUgc2hvdWxkIHJlYWxseSBiZSBhIHBhcnNlXyBtZXRob2QsIGFzIHByb2JhYmx5IHNob3VsZAorIyBiZSBnZXRfdW5zdHJ1Y3R1cmVkLgorIworCitkZWYgcGFyc2VfbWltZV92ZXJzaW9uKHZhbHVlKToKKyAgICAiIiIgbWltZS12ZXJzaW9uID0gW0NGV1NdIDEqZGlnaXQgW0NGV1NdICIuIiBbQ0ZXU10gMSpkaWdpdCBbQ0ZXU10KKworICAgICIiIgorICAgICMgVGhlIFtDRldTXSBpcyBpbXBsaWNpdCBpbiB0aGUgUkZDIDIwNDUgQk5GLgorICAgICMgWFhYOiBUaGlzIHJvdXRpbmUgaXMgYSBiaXQgdmVyYm9zZSwgc2hvdWxkIGZhY3RvciBvdXQgYSBnZXRfaW50IG1ldGhvZC4KKyAgICBtaW1lX3ZlcnNpb24gPSBNSU1FVmVyc2lvbigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgTUlNRSB2ZXJzaW9uIG51bWJlciAoZWc6IDEuMCkiKSkKKyAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKKyAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgTUlNRSB2ZXJzaW9uIG51bWJlciBidXQgZm91bmQgb25seSBDRldTIikpCisgICAgZGlnaXRzID0gJycKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJy4nIGFuZCB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIG5vdCBkaWdpdHMuaXNkaWdpdCgpOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgTUlNRSBtYWpvciB2ZXJzaW9uIG51bWJlciBidXQgZm91bmQgeyFyfSIuZm9ybWF0KGRpZ2l0cykpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAneHRleHQnKSkKKyAgICBlbHNlOgorICAgICAgICBtaW1lX3ZlcnNpb24ubWFqb3IgPSBpbnQoZGlnaXRzKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJy4nOgorICAgICAgICBpZiBtaW1lX3ZlcnNpb24ubWFqb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIkluY29tcGxldGUgTUlNRSB2ZXJzaW9uOyBmb3VuZCBvbmx5IG1ham9yIG51bWJlciIpKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZSwgJ3h0ZXh0JykpCisgICAgICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKyAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoJy4nLCAndmVyc2lvbi1zZXBhcmF0b3InKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBpZiBtaW1lX3ZlcnNpb24ubWFqb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIkluY29tcGxldGUgTUlNRSB2ZXJzaW9uOyBmb3VuZCBvbmx5IG1ham9yIG51bWJlciIpKQorICAgICAgICByZXR1cm4gbWltZV92ZXJzaW9uCisgICAgZGlnaXRzID0gJycKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIENGV1NfTEVBREVSOgorICAgICAgICBkaWdpdHMgKz0gdmFsdWVbMF0KKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgZGlnaXRzLmlzZGlnaXQoKToKKyAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIE1JTUUgbWlub3IgdmVyc2lvbiBudW1iZXIgYnV0IGZvdW5kIHshcn0iLmZvcm1hdChkaWdpdHMpKSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ3h0ZXh0JykpCisgICAgZWxzZToKKyAgICAgICAgbWltZV92ZXJzaW9uLm1pbm9yID0gaW50KGRpZ2l0cykKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ2RpZ2l0cycpKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWU6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeGNlc3Mgbm9uLUNGV1MgdGV4dCBhZnRlciBNSU1FIHZlcnNpb24iKSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlLCAneHRleHQnKSkKKyAgICByZXR1cm4gbWltZV92ZXJzaW9uCisKK2RlZiBnZXRfaW52YWxpZF9wYXJhbWV0ZXIodmFsdWUpOgorICAgICIiIiBSZWFkIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIG5leHQgJzsnLgorCisgICAgVGhpcyBpcyBvdXRzaWRlIHRoZSBmb3JtYWwgZ3JhbW1hci4gIFRoZSBJbnZhbGlkUGFyYW1ldGVyIFRva2VuTGlzdCB0aGF0IGlzCisgICAgcmV0dXJuZWQgYWN0cyBsaWtlIGEgUGFyYW1ldGVyLCBidXQgdGhlIGRhdGEgYXR0cmlidXRlcyBhcmUgTm9uZS4KKworICAgICIiIgorICAgIGludmFsaWRfcGFyYW1ldGVyID0gSW52YWxpZFBhcmFtZXRlcigpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICBpbnZhbGlkX3BhcmFtZXRlci5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICBpbnZhbGlkX3BhcmFtZXRlci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGludmFsaWRfcGFyYW1ldGVyLCB2YWx1ZQorCitkZWYgZ2V0X3R0ZXh0KHZhbHVlKToKKyAgICAiIiJ0dGV4dCA9IDxtYXRjaGVzIF90dGV4dF9tYXRjaGVyPgorCisgICAgV2UgYWxsb3cgYW55IG5vbi1UT0tFTl9FTkRTIGluIHR0ZXh0LCBidXQgYWRkIGRlZmVjdHMgdG8gdGhlIHRva2VuJ3MKKyAgICBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tdHRleHQgY2hhcmFjdGVycy4gIFdlIGFsc28gcmVnaXN0ZXIgZGVmZWN0cyBmb3IKKyAgICAqYW55KiBub24tcHJpbnRhYmxlcyBldmVuIHRob3VnaCB0aGUgUkZDIGRvZXNuJ3QgZXhjbHVkZSBhbGwgb2YgdGhlbSwKKyAgICBiZWNhdXNlIHdlIGZvbGxvdyB0aGUgc3Bpcml0IG9mIFJGQyA1MzIyLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fdG9rZW5fZW5kX21hdGNoZXIodmFsdWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHR0ZXh0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHR0ZXh0ID0gbS5ncm91cCgpCisgICAgdmFsdWUgPSB2YWx1ZVtsZW4odHRleHQpOl0KKyAgICB0dGV4dCA9IFZhbHVlVGVybWluYWwodHRleHQsICd0dGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KHR0ZXh0KQorICAgIHJldHVybiB0dGV4dCwgdmFsdWUKKworZGVmIGdldF90b2tlbih2YWx1ZSk6CisgICAgIiIidG9rZW4gPSBbQ0ZXU10gMSp0dGV4dCBbQ0ZXU10KKworICAgIFRoZSBSRkMgZXF1aXZhbGVudCBvZiB0dGV4dCBpcyBhbnkgVVMtQVNDSUkgY2hhcnMgZXhjZXB0IHNwYWNlLCBjdGxzLCBvcgorICAgIHRzcGVjaWFscy4gIFdlIGFsc28gZXhjbHVkZSB0YWJzIGV2ZW4gdGhvdWdoIHRoZSBSRkMgZG9lc24ndC4KKworICAgIFRoZSBSRkMgaW1wbGllcyB0aGUgQ0ZXUyBidXQgaXMgbm90IGV4cGxpY2l0IGFib3V0IGl0IGluIHRoZSBCTkYuCisKKyAgICAiIiIKKyAgICBtdG9rZW4gPSBUb2tlbigpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gVE9LRU5fRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3R0ZXh0KHZhbHVlKQorICAgIG10b2tlbi5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbXRva2VuLCB2YWx1ZQorCitkZWYgZ2V0X2F0dHJ0ZXh0KHZhbHVlKToKKyAgICAiIiJhdHRydGV4dCA9IDEqKGFueSBub24tQVRUUklCVVRFX0VORFMgY2hhcmFjdGVyKQorCisgICAgV2UgYWxsb3cgYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBpbiBhdHRydGV4dCwgYnV0IGFkZCBkZWZlY3RzIHRvIHRoZQorICAgIHRva2VuJ3MgZGVmZWN0cyBsaXN0IGlmIHdlIGZpbmQgbm9uLWF0dHJ0ZXh0IGNoYXJhY3RlcnMuICBXZSBhbHNvIHJlZ2lzdGVyCisgICAgZGVmZWN0cyBmb3IgKmFueSogbm9uLXByaW50YWJsZXMgZXZlbiB0aG91Z2ggdGhlIFJGQyBkb2Vzbid0IGV4Y2x1ZGUgYWxsIG9mCisgICAgdGhlbSwgYmVjYXVzZSB3ZSBmb2xsb3cgdGhlIHNwaXJpdCBvZiBSRkMgNTMyMi4KKworICAgICIiIgorICAgIG0gPSBfbm9uX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYXR0cnRleHQgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCisgICAgYXR0cnRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbihhdHRydGV4dCk6XQorICAgIGF0dHJ0ZXh0ID0gVmFsdWVUZXJtaW5hbChhdHRydGV4dCwgJ2F0dHJ0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQoYXR0cnRleHQpCisgICAgcmV0dXJuIGF0dHJ0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X2F0dHJpYnV0ZSh2YWx1ZSk6CisgICAgIiIiIFtDRldTXSAxKmF0dHJ0ZXh0IFtDRldTXQorCisgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBCTkYgbWFrZXMgdGhlIENGV1MgZXhwbGljaXQsIGFuZCBhcyB1c3VhbCB3ZSB1c2UgYQorICAgIHZhbHVlIHRlcm1pbmFsIGZvciB0aGUgYWN0dWFsIHJ1biBvZiBjaGFyYWN0ZXJzLiAgVGhlIFJGQyBlcXVpdmFsZW50IG9mCisgICAgYXR0cnRleHQgaXMgdGhlIHRva2VuIGNoYXJhY3RlcnMsIHdpdGggdGhlIHN1YnRyYWN0aW9uIG9mICcqJywgIiciLCBhbmQgJyUnLgorICAgIFdlIGluY2x1ZGUgdGFiIGluIHRoZSBleGNsdWRlZCBzZXQganVzdCBhcyB3ZSBkbyBmb3IgdG9rZW4uCisKKyAgICAiIiIKKyAgICBhdHRyaWJ1dGUgPSBBdHRyaWJ1dGUoKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEFUVFJJQlVURV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cnRleHQodmFsdWUpCisgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhdHRyaWJ1dGUsIHZhbHVlCisKK2RlZiBnZXRfZXh0ZW5kZWRfYXR0cnRleHQodmFsdWUpOgorICAgICIiImF0dHJ0ZXh0ID0gMSooYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBjaGFyYWN0ZXIgcGx1cyAnJScpCisKKyAgICBUaGlzIGlzIGEgc3BlY2lhbCBwYXJzaW5nIHJvdXRpbmUgc28gdGhhdCB3ZSBnZXQgYSB2YWx1ZSB0aGF0CisgICAgaW5jbHVkZXMgJSBlc2NhcGVzIGFzIGEgc2luZ2xlIHN0cmluZyAod2hpY2ggd2UgZGVjb2RlIGFzIGEgc2luZ2xlCisgICAgc3RyaW5nIGxhdGVyKS4KKworICAgICIiIgorICAgIG0gPSBfbm9uX2V4dGVuZGVkX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgZXh0ZW5kZWQgYXR0cnRleHQgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCisgICAgYXR0cnRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbihhdHRydGV4dCk6XQorICAgIGF0dHJ0ZXh0ID0gVmFsdWVUZXJtaW5hbChhdHRydGV4dCwgJ2V4dGVuZGVkLWF0dHJ0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQoYXR0cnRleHQpCisgICAgcmV0dXJuIGF0dHJ0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X2V4dGVuZGVkX2F0dHJpYnV0ZSh2YWx1ZSk6CisgICAgIiIiIFtDRldTXSAxKmV4dGVuZGVkX2F0dHJ0ZXh0IFtDRldTXQorCisgICAgVGhpcyBpcyBsaWtlIHRoZSBub24tZXh0ZW5kZWQgdmVyc2lvbiBleGNlcHQgd2UgYWxsb3cgJSBjaGFyYWN0ZXJzLCBzbyB0aGF0CisgICAgd2UgY2FuIHBpY2sgdXAgYW4gZW5jb2RlZCB2YWx1ZSBhcyBhIHNpbmdsZSBzdHJpbmcuCisKKyAgICAiIiIKKyAgICAjIFhYWDogc2hvdWxkIHdlIGhhdmUgYW4gRXh0ZW5kZWRBdHRyaWJ1dGUgVG9rZW5MaXN0PworICAgIGF0dHJpYnV0ZSA9IEF0dHJpYnV0ZSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gRVhURU5ERURfQVRUUklCVVRFX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHRva2VuIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9leHRlbmRlZF9hdHRydGV4dCh2YWx1ZSkKKyAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0dHJpYnV0ZSwgdmFsdWUKKworZGVmIGdldF9zZWN0aW9uKHZhbHVlKToKKyAgICAiIiIgJyonIGRpZ2l0cworCisgICAgVGhlIGZvcm1hbCBCTkYgaXMgbW9yZSBjb21wbGljYXRlZCBiZWNhdXNlIGxlYWRpbmcgMHMgYXJlIG5vdCBhbGxvd2VkLiAgV2UKKyAgICBjaGVjayBmb3IgdGhhdCBhbmQgYWRkIGEgZGVmZWN0LiAgV2UgYWxzbyBhc3N1bWUgbm8gQ0ZXUyBpcyBhbGxvd2VkIGJldHdlZW4KKyAgICB0aGUgJyonIGFuZCB0aGUgZGlnaXRzLCB0aG91Z2ggdGhlIFJGQyBpcyBub3QgY3J5c3RhbCBjbGVhciBvbiB0aGF0LgorICAgIFRoZSBjYWxsZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBkZWFsdCB3aXRoIGxlYWRpbmcgQ0ZXUy4KKworICAgICIiIgorICAgIHNlY3Rpb24gPSBTZWN0aW9uKCkKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJyonOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgc2VjdGlvbiBidXQgZm91bmQge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkpCisgICAgc2VjdGlvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnKicsICdzZWN0aW9uLW1hcmtlcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IHZhbHVlIG9yIG5vdCB2YWx1ZVswXS5pc2RpZ2l0KCk6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBzZWN0aW9uIG51bWJlciBidXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgZGlnaXRzID0gJycKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0uaXNkaWdpdCgpOgorICAgICAgICBkaWdpdHMgKz0gdmFsdWVbMF0KKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBkaWdpdHNbMF0gPT0gJzAnIGFuZCBkaWdpdHMgIT0gJzAnOgorICAgICAgICBzZWN0aW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRXJyb3IoInNlY3Rpb24gbnVtYmVyIgorICAgICAgICAgICAgImhhcyBhbiBpbnZhbGlkIGxlYWRpbmcgMCIpKQorICAgIHNlY3Rpb24ubnVtYmVyID0gaW50KGRpZ2l0cykKKyAgICBzZWN0aW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ2RpZ2l0cycpKQorICAgIHJldHVybiBzZWN0aW9uLCB2YWx1ZQorCisKK2RlZiBnZXRfdmFsdWUodmFsdWUpOgorICAgICIiIiBxdW90ZWQtc3RyaW5nIC8gYXR0cmlidXRlCisKKyAgICAiIiIKKyAgICB2ID0gVmFsdWUoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHZhbHVlIGJ1dCBmb3VuZCBlbmQgb2Ygc3RyaW5nIikKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCB2YWx1ZSBidXQgZm91bmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSB7fSIuZm9ybWF0KGxlYWRlcikpCisgICAgaWYgdmFsdWVbMF0gPT0gJyInOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZXh0ZW5kZWRfYXR0cmlidXRlKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICB2LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gdiwgdmFsdWUKKworZGVmIGdldF9wYXJhbWV0ZXIodmFsdWUpOgorICAgICIiIiBhdHRyaWJ1dGUgW3NlY3Rpb25dIFsiKiJdIFtDRldTXSAiPSIgdmFsdWUKKworICAgIFRoZSBDRldTIGlzIGltcGxpZWQgYnkgdGhlIFJGQyBidXQgbm90IG1hZGUgZXhwbGljaXQgaW4gdGhlIEJORi4gIFRoaXMKKyAgICBzaW1wbGlmaWVkIGZvcm0gb2YgdGhlIEJORiBmcm9tIHRoZSBSRkMgaXMgbWFkZSB0byBjb25mb3JtIHdpdGggdGhlIFJGQyBCTkYKKyAgICB0aHJvdWdoIHNvbWUgZXh0cmEgY2hlY2tzLiAgV2UgZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSBpdCBtYWtlcyBib3RoIGVycm9yCisgICAgcmVjb3ZlcnkgYW5kIHdvcmtpbmcgd2l0aCB0aGUgcmVzdWx0aW5nIHBhcnNlIHRyZWUgZWFzaWVyLgorICAgICIiIgorICAgICMgSXQgaXMgcG9zc2libGUgQ0ZXUyB3b3VsZCBhbHNvIGJlIGltcGxpY2l0bHkgYWxsb3dlZCBiZXR3ZWVuIHRoZSBzZWN0aW9uCisgICAgIyBhbmQgdGhlICdleHRlbmRlZC1hdHRyaWJ1dGUnIG1hcmtlciAodGhlICcqJykgLCBidXQgd2UndmUgbmV2ZXIgc2VlbiB0aGF0CisgICAgIyBpbiB0aGUgd2lsZCBhbmQgd2Ugd2lsbCB0aGVyZWZvcmUgaWdub3JlIHRoZSBwb3NzaWJpbGl0eS4KKyAgICBwYXJhbSA9IFBhcmFtZXRlcigpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0dHJpYnV0ZSh2YWx1ZSkKKyAgICBwYXJhbS5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdID09ICc7JzoKKyAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoIlBhcmFtZXRlciBjb250YWlucyAiCisgICAgICAgICAgICAibmFtZSAoe30pIGJ1dCBubyB2YWx1ZSIuZm9ybWF0KHRva2VuKSkpCisgICAgICAgIHJldHVybiBwYXJhbSwgdmFsdWUKKyAgICBpZiB2YWx1ZVswXSA9PSAnKic6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9zZWN0aW9uKHZhbHVlKQorICAgICAgICAgICAgcGFyYW0uc2VjdGlvbmVkID0gVHJ1ZQorICAgICAgICAgICAgcGFyYW0uYXBwZW5kKHRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJJbmNvbXBsZXRlIHBhcmFtZXRlciIpCisgICAgICAgIGlmIHZhbHVlWzBdID09ICcqJzoKKyAgICAgICAgICAgIHBhcmFtLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcqJywgJ2V4dGVuZGVkLXBhcmFtZXRlci1tYXJrZXInKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgICAgICBwYXJhbS5leHRlbmRlZCA9IFRydWUKKyAgICBpZiB2YWx1ZVswXSAhPSAnPSc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJQYXJhbWV0ZXIgbm90IGZvbGxvd2VkIGJ5ICc9JyIpCisgICAgcGFyYW0uYXBwZW5kKFZhbHVlVGVybWluYWwoJz0nLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIHBhcmFtLmFwcGVuZCh0b2tlbikKKyAgICByZW1haW5kZXIgPSBOb25lCisgICAgYXBwZW5kdG8gPSBwYXJhbQorICAgIGlmIHBhcmFtLmV4dGVuZGVkIGFuZCB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJyInOgorICAgICAgICAjIE5vdyBmb3Igc29tZSBzZXJpb3VzIGhhY2tlcnkgdG8gaGFuZGxlIHRoZSBjb21tb24gaW52YWxpZCBjYXNlIG9mCisgICAgICAgICMgZG91YmxlIHF1b3RlcyBhcm91bmQgYW4gZXh0ZW5kZWQgdmFsdWUuICBXZSBhbHNvIGFjY2VwdCAod2l0aCBkZWZlY3QpCisgICAgICAgICMgYSB2YWx1ZSBtYXJrZWQgYXMgZW5jb2RlZCB0aGF0IGlzbid0IHJlYWxseS4KKyAgICAgICAgcXN0cmluZywgcmVtYWluZGVyID0gZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpCisgICAgICAgIGlubmVyX3ZhbHVlID0gcXN0cmluZy5zdHJpcHBlZF92YWx1ZQorICAgICAgICBzZW1pX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgaWYgcGFyYW0uc2VjdGlvbl9udW1iZXIgPT0gMDoKKyAgICAgICAgICAgIGlmIGlubmVyX3ZhbHVlIGFuZCBpbm5lcl92YWx1ZVswXSA9PSAiJyI6CisgICAgICAgICAgICAgICAgc2VtaV92YWxpZCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHJlc3QgPSBnZXRfYXR0cnRleHQoaW5uZXJfdmFsdWUpCisgICAgICAgICAgICAgICAgaWYgcmVzdCBhbmQgcmVzdFswXSA9PSAiJyI6CisgICAgICAgICAgICAgICAgICAgIHNlbWlfdmFsaWQgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdG9rZW4sIHJlc3QgPSBnZXRfZXh0ZW5kZWRfYXR0cnRleHQoaW5uZXJfdmFsdWUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdDoKKyAgICAgICAgICAgICAgICAgICAgc2VtaV92YWxpZCA9IFRydWUKKyAgICAgICAgaWYgc2VtaV92YWxpZDoKKyAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJRdW90ZWQgc3RyaW5nIHZhbHVlIGZvciBleHRlbmRlZCBwYXJhbWV0ZXIgaXMgaW52YWxpZCIpKQorICAgICAgICAgICAgcGFyYW0uYXBwZW5kKHFzdHJpbmcpCisgICAgICAgICAgICBmb3IgdCBpbiBxc3RyaW5nOgorICAgICAgICAgICAgICAgIGlmIHQudG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgdFs6XSA9IFtdCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZHRvID0gdAorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdmFsdWUgPSBpbm5lcl92YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVtYWluZGVyID0gTm9uZQorICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIlBhcmFtZXRlciBtYXJrZWQgYXMgZXh0ZW5kZWQgYnV0IGFwcGVhcnMgdG8gaGF2ZSBhICIKKyAgICAgICAgICAgICAgICAicXVvdGVkIHN0cmluZyB2YWx1ZSB0aGF0IGlzIG5vbi1lbmNvZGVkIikpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICInIjoKKyAgICAgICAgdG9rZW4gPSBOb25lCisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3ZhbHVlKHZhbHVlKQorICAgIGlmIG5vdCBwYXJhbS5leHRlbmRlZCBvciBwYXJhbS5zZWN0aW9uX251bWJlciA+IDA6CisgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBpZiByZW1haW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB2YWx1ZSwgdmFsdWUKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlbWFpbmRlcgorICAgICAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJBcHBhcmVudCBpbml0aWFsLWV4dGVuZGVkLXZhbHVlIGJ1dCBhdHRyaWJ1dGUgIgorICAgICAgICAgICAgIndhcyBub3QgbWFya2VkIGFzIGV4dGVuZGVkIG9yIHdhcyBub3QgaW5pdGlhbCBzZWN0aW9uIikpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAjIEFzc3VtZSB0aGUgY2hhcnNldC9sYW5nIGlzIG1pc3NpbmcgYW5kIHRoZSB0b2tlbiBpcyB0aGUgdmFsdWUuCisgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk1pc3NpbmcgcmVxdWlyZWQgY2hhcnNldC9sYW5nIGRlbGltaXRlcnMiKSkKKyAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQorICAgICAgICBpZiByZW1haW5kZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBwYXJhbSwgdmFsdWUKKyAgICBlbHNlOgorICAgICAgICBpZiB0b2tlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciB0IGluIHRva2VuOgorICAgICAgICAgICAgICAgIGlmIHQudG9rZW5fdHlwZSA9PSAnZXh0ZW5kZWQtYXR0cnRleHQnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdC50b2tlbl90eXBlID09ICdhdHRydGV4dCcKKyAgICAgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0KQorICAgICAgICAgICAgcGFyYW0uY2hhcnNldCA9IHQudmFsdWUKKyAgICAgICAgaWYgdmFsdWVbMF0gIT0gIiciOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIFJGQzIyMzEgY2hhci9sYW5nIGVuY29kaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxpbWl0ZXIsIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKQorICAgICAgICBhcHBlbmR0by5hcHBlbmQoVmFsdWVUZXJtaW5hbCgiJyIsICdSRkMyMjMxIGRlbGltaXRlcicpKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gIiciOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0dHJ0ZXh0KHZhbHVlKQorICAgICAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgcGFyYW0ubGFuZyA9IHRva2VuLnZhbHVlCisgICAgICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gIiciOgorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBSRkMyMjMxIGNoYXIvbGFuZyBlbmNvZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGltaXRlciwgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgICAgICBhcHBlbmR0by5hcHBlbmQoVmFsdWVUZXJtaW5hbCgiJyIsICdSRkMyMjMxIGRlbGltaXRlcicpKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHJlbWFpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgIyBUcmVhdCB0aGUgcmVzdCBvZiB2YWx1ZSBhcyBiYXJlIHF1b3RlZCBzdHJpbmcgY29udGVudC4KKyAgICAgICAgdiA9IFZhbHVlKCkKKyAgICAgICAgd2hpbGUgdmFsdWU6CisgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Fjb250ZW50KHZhbHVlKQorICAgICAgICAgICAgdi5hcHBlbmQodG9rZW4pCisgICAgICAgIHRva2VuID0gdgorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF92YWx1ZSh2YWx1ZSkKKyAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgaWYgcmVtYWluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICBhc3NlcnQgbm90IHZhbHVlLCB2YWx1ZQorICAgICAgICB2YWx1ZSA9IHJlbWFpbmRlcgorICAgIHJldHVybiBwYXJhbSwgdmFsdWUKKworZGVmIHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZSk6CisgICAgIiIiIHBhcmFtZXRlciAqKCAiOyIgcGFyYW1ldGVyICkKKworICAgIFRoYXQgQk5GIGlzIG1lYW50IHRvIGluZGljYXRlIHRoaXMgcm91dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIKKyAgICBmaW5kaW5nIGFuZCBoYW5kbGluZyB0aGUgbGVhZGluZyAnOycuICBUaGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIHJ1bGUgaW4KKyAgICB0aGUgZm9ybWFsIFJGQyBncmFtbWFyLCBidXQgaXQgaXMgbW9yZSBjb252ZW5pZW50IGZvciB1cyBmb3IgdGhlIHNldCBvZgorICAgIHBhcmFtZXRlcnMgdG8gYmUgdHJlYXRlZCBhcyBpdHMgb3duIFRva2VuTGlzdC4KKworICAgIFRoaXMgaXMgJ3BhcnNlJyByb3V0aW5lIGJlY2F1c2UgaXQgY29uc3VtZXMgdGhlIHJlbWluYWluZyB2YWx1ZSwgYnV0IGl0CisgICAgd291bGQgbmV2ZXIgYmUgY2FsbGVkIHRvIHBhcnNlIGEgZnVsbCBoZWFkZXIuICBJbnN0ZWFkIGl0IGlzIGNhbGxlZCB0bworICAgIHBhcnNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIG5vbi1wYXJhbWV0ZXIgdmFsdWUgb2YgYSBzcGVjaWZpYyBNSU1FIGhlYWRlci4KKworICAgICIiIgorICAgIG1pbWVfcGFyYW1ldGVycyA9IE1pbWVQYXJhbWV0ZXJzKCkKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BhcmFtZXRlcih2YWx1ZSkKKyAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVfcGFyYW1ldGVycworICAgICAgICAgICAgaWYgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIGVudHJ5IHdpdGggbm8gY29udGVudCIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9wYXJhbWV0ZXIodmFsdWUpCisgICAgICAgICAgICAgICAgaWYgbGVhZGVyOgorICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwYXJhbWV0ZXIgeyFyfSIuZm9ybWF0KHRva2VuKSkpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgICAgICAjIEp1bmsgYWZ0ZXIgdGhlIG90aGVyd2lzZSB2YWxpZCBwYXJhbWV0ZXIuICBNYXJrIGl0IGFzCisgICAgICAgICAgICAjIGludmFsaWQsIGJ1dCBpdCB3aWxsIGhhdmUgYSB2YWx1ZS4KKyAgICAgICAgICAgIHBhcmFtID0gbWltZV9wYXJhbWV0ZXJzWy0xXQorICAgICAgICAgICAgcGFyYW0udG9rZW5fdHlwZSA9ICdpbnZhbGlkLXBhcmFtZXRlcicKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSkKKyAgICAgICAgICAgIHBhcmFtLmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVyIHdpdGggaW52YWxpZCB0cmFpbGluZyB0ZXh0IHshcn0iLmZvcm1hdCh0b2tlbikpKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICMgTXVzdCBiZSBhICc7JyBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgcmV0dXJuIG1pbWVfcGFyYW1ldGVycworCitkZWYgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKHRva2VubGlzdCwgdmFsdWUpOgorICAgICIiIkRvIG91ciBiZXN0IHRvIGZpbmQgdGhlIHBhcmFtZXRlcnMgaW4gYW4gaW52YWxpZCBNSU1FIGhlYWRlcgorCisgICAgIiIiCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICB0b2tlbmxpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICB0b2tlbmxpc3QuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmV0dXJuCisgICAgdG9rZW5saXN0LmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICB0b2tlbmxpc3QuYXBwZW5kKHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZVsxOl0pKQorCitkZWYgcGFyc2VfY29udGVudF90eXBlX2hlYWRlcih2YWx1ZSk6CisgICAgIiIiIG1haW50eXBlICIvIiBzdWJ0eXBlICooICI7IiBwYXJhbWV0ZXIgKQorCisgICAgVGhlIG1haW50eXBlIGFuZCBzdWJzdHlwZSBhcmUgdG9rZW5zLiAgVGhlb3JldGljYWxseSB0aGV5IGNvdWxkCisgICAgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBJQU5BIGxpc3QgKyB4LXRva2VuLCBidXQgd2UKKyAgICBkb24ndCBkbyB0aGF0LgorICAgICIiIgorICAgIGN0eXBlID0gQ29udGVudFR5cGUoKQorICAgIHJlY292ZXIgPSBGYWxzZQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgY29udGVudCB0eXBlIHNwZWNpZmljYXRpb24iKSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IG1haW50eXBlIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgY3R5cGUuYXBwZW5kKHRva2VuKQorICAgICMgWFhYOiBJZiB3ZSByZWFsbHkgd2FudCB0byBmb2xsb3cgdGhlIGZvcm1hbCBncmFtbWVyIHdlIHNob3VsZCBtYWtlCisgICAgIyBtYW50eXBlIGFuZCBzdWJ0eXBlIHNwZWNpYWxpemVkIFRva2VuTGlzdHMgaGVyZS4gIFByb2JhYmx5IG5vdCB3b3J0aCBpdC4KKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJy8nOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJJbnZhbGlkIGNvbnRlbnQgdHlwZSIpKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLm1haW50eXBlID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgY3R5cGUuYXBwZW5kKFZhbHVlVGVybWluYWwoJy8nLCAnY29udGVudC10eXBlLXNlcGFyYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IHN1YnR5cGUgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5hcHBlbmQodG9rZW4pCisgICAgY3R5cGUuc3VidHlwZSA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgaWYgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJPbmx5IHBhcmFtZXRlcnMgYXJlIHZhbGlkIGFmdGVyIGNvbnRlbnQgdHlwZSwgYnV0ICIKKyAgICAgICAgICAgICJmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgIyBUaGUgUkZDIHJlcXVpcmVzIHRoYXQgYSBzeW50YWN0aWNhbGx5IGludmFsaWQgY29udGVudC10eXBlIGJlIHRyZWF0ZWQKKyAgICAgICAgIyBhcyB0ZXh0L3BsYWluLiAgUGVyaGFwcyB3ZSBzaG91bGQgcG9zdGVsIHRoaXMsIGJ1dCB3ZSBzaG91bGQgcHJvYmFibHkKKyAgICAgICAgIyBvbmx5IGRvIHRoYXQgaWYgd2Ugd2VyZSBjaGVja2luZyB0aGUgc3VidHlwZSB2YWx1ZSBhZ2FpbnN0IElBTkEuCisgICAgICAgIGRlbCBjdHlwZS5tYWludHlwZSwgY3R5cGUuc3VidHlwZQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgY3R5cGUuYXBwZW5kKHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZVsxOl0pKQorICAgIHJldHVybiBjdHlwZQorCitkZWYgcGFyc2VfY29udGVudF9kaXNwb3NpdGlvbl9oZWFkZXIodmFsdWUpOgorICAgICIiIiBkaXNwb3NpdGlvbi10eXBlICooICI7IiBwYXJhbWV0ZXIgKQorCisgICAgIiIiCisgICAgZGlzcF9oZWFkZXIgPSBDb250ZW50RGlzcG9zaXRpb24oKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZGlzcF9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgY29udGVudCBkaXNwb3NpdGlvbiIpKQorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgZGlzcG9zaXRpb24gYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoZGlzcF9oZWFkZXIsIHZhbHVlKQorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICBkaXNwX2hlYWRlci5hcHBlbmQodG9rZW4pCisgICAgZGlzcF9oZWFkZXIuY29udGVudF9kaXNwb3NpdGlvbiA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisgICAgaWYgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBkaXNwX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJPbmx5IHBhcmFtZXRlcnMgYXJlIHZhbGlkIGFmdGVyIGNvbnRlbnQgZGlzcG9zaXRpb24sIGJ1dCAiCisgICAgICAgICAgICAiZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhkaXNwX2hlYWRlciwgdmFsdWUpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIGRpc3BfaGVhZGVyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICBkaXNwX2hlYWRlci5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisKK2RlZiBwYXJzZV9jb250ZW50X3RyYW5zZmVyX2VuY29kaW5nX2hlYWRlcih2YWx1ZSk6CisgICAgIiIiIG1lY2hhbmlzbQorCisgICAgIiIiCisgICAgIyBXZSBzaG91bGQgcHJvYmFibHkgdmFsaWRhdGUgdGhlIHZhbHVlcywgc2luY2UgdGhlIGxpc3QgaXMgZml4ZWQuCisgICAgY3RlX2hlYWRlciA9IENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGN0ZV9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyIpKQorICAgICAgICByZXR1cm4gY3RlX2hlYWRlcgorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCB0cm5hc2ZlciBlbmNvZGluZyBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgZWxzZToKKyAgICAgICAgY3RlX2hlYWRlci5hcHBlbmQodG9rZW4pCisgICAgICAgIGN0ZV9oZWFkZXIuY3RlID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gY3RlX2hlYWRlcgorICAgIHdoaWxlIHZhbHVlOgorICAgICAgICBjdGVfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4dHJhIHRleHQgYWZ0ZXIgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyIpKQorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICBjdGVfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gY3RlX2hlYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19wYXJzZWFkZHIucHkgYi9MaWIvZW1haWwvX3BhcnNlYWRkci5weQppbmRleCA3OTU3M2M2Li5jZGZhMzcyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX3BhcnNlYWRkci5weQorKysgYi9MaWIvZW1haWwvX3BhcnNlYWRkci5weQpAQCAtNDcsNiArNDcsMjUgQEAKIAogICAgIEFjY291bnRzIGZvciBtaWxpdGFyeSB0aW1lem9uZXMuCiAgICAgIiIiCisgICAgcmVzID0gX3BhcnNlZGF0ZV90eihkYXRhKQorICAgIGlmIG5vdCByZXM6CisgICAgICAgIHJldHVybgorICAgIGlmIHJlc1s5XSBpcyBOb25lOgorICAgICAgICByZXNbOV0gPSAwCisgICAgcmV0dXJuIHR1cGxlKHJlcykKKworZGVmIF9wYXJzZWRhdGVfdHooZGF0YSk6CisgICAgIiIiQ29udmVydCBkYXRlIHRvIGV4dGVuZGVkIHRpbWUgdHVwbGUuCisKKyAgICBUaGUgbGFzdCAoYWRkaXRpb25hbCkgZWxlbWVudCBpcyB0aGUgdGltZSB6b25lIG9mZnNldCBpbiBzZWNvbmRzLCBleGNlcHQgaWYKKyAgICB0aGUgdGltZXpvbmUgd2FzIHNwZWNpZmllZCBhcyAtMDAwMC4gIEluIHRoYXQgY2FzZSB0aGUgbGFzdCBlbGVtZW50IGlzCisgICAgTm9uZS4gIFRoaXMgaW5kaWNhdGVzIGEgVVRDIHRpbWVzdGFtcCB0aGF0IGV4cGxpY2l0bHkgZGVjbGFpbXMga25vd2xlZGdlIG9mCisgICAgdGhlIHNvdXJjZSB0aW1lem9uZSwgYXMgb3Bwb3NlZCB0byBhICswMDAwIHRpbWVzdGFtcCB0aGF0IGluZGljYXRlcyB0aGUKKyAgICBzb3VyY2UgdGltZXpvbmUgcmVhbGx5IHdhcyBVVEMuCisKKyAgICAiIiIKKyAgICBpZiBub3QgZGF0YToKKyAgICAgICAgcmV0dXJuCiAgICAgZGF0YSA9IGRhdGEuc3BsaXQoKQogICAgICMgVGhlIEZXUyBhZnRlciB0aGUgY29tbWEgYWZ0ZXIgdGhlIGRheS1vZi13ZWVrIGlzIG9wdGlvbmFsLCBzbyBzZWFyY2ggYW5kCiAgICAgIyBhZGp1c3QgZm9yIHRoaXMuCkBAIC05OSw2ICsxMTgsMTQgQEAKICAgICAgICAgdHNzID0gJzAnCiAgICAgZWxpZiBsZW4odG0pID09IDM6CiAgICAgICAgIFt0aGgsIHRtbSwgdHNzXSA9IHRtCisgICAgZWxpZiBsZW4odG0pID09IDEgYW5kICcuJyBpbiB0bVswXToKKyAgICAgICAgIyBTb21lIG5vbi1jb21wbGlhbnQgTVVBcyB1c2UgJy4nIHRvIHNlcGFyYXRlIHRpbWUgZWxlbWVudHMuCisgICAgICAgIHRtID0gdG1bMF0uc3BsaXQoJy4nKQorICAgICAgICBpZiBsZW4odG0pID09IDI6CisgICAgICAgICAgICBbdGhoLCB0bW1dID0gdG0KKyAgICAgICAgICAgIHRzcyA9IDAKKyAgICAgICAgZWxpZiBsZW4odG0pID09IDM6CisgICAgICAgICAgICBbdGhoLCB0bW0sIHRzc10gPSB0bQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgdHJ5OgpAQCAtMTMwLDYgKzE1Nyw4IEBACiAgICAgICAgICAgICB0em9mZnNldCA9IGludCh0eikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIHR6b2Zmc2V0PT0wIGFuZCB0ei5zdGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICB0em9mZnNldCA9IE5vbmUKICAgICAjIENvbnZlcnQgYSB0aW1lem9uZSBvZmZzZXQgaW50byBzZWNvbmRzIDsgLTA1MDAgLT4gLTE4MDAwCiAgICAgaWYgdHpvZmZzZXQ6CiAgICAgICAgIGlmIHR6b2Zmc2V0IDwgMDoKQEAgLTEzOSw3ICsxNjgsNyBAQAogICAgICAgICAgICAgdHpzaWduID0gMQogICAgICAgICB0em9mZnNldCA9IHR6c2lnbiAqICggKHR6b2Zmc2V0Ly8xMDApKjM2MDAgKyAodHpvZmZzZXQgJSAxMDApKjYwKQogICAgICMgRGF5bGlnaHQgU2F2aW5nIFRpbWUgZmxhZyBpcyBzZXQgdG8gLTEsIHNpbmNlIERTVCBpcyB1bmtub3duLgotICAgIHJldHVybiB5eSwgbW0sIGRkLCB0aGgsIHRtbSwgdHNzLCAwLCAxLCAtMSwgdHpvZmZzZXQKKyAgICByZXR1cm4gW3l5LCBtbSwgZGQsIHRoaCwgdG1tLCB0c3MsIDAsIDEsIC0xLCB0em9mZnNldF0KIAogCiBkZWYgcGFyc2VkYXRlKGRhdGEpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5IGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMDYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKQEAgLTAsMCArMSwzNTggQEAKKyIiIlBvbGljeSBmcmFtZXdvcmsgZm9yIHRoZSBlbWFpbCBwYWNrYWdlLgorCitBbGxvd3MgZmluZSBncmFpbmVkIGZlYXR1cmUgY29udHJvbCBvZiBob3cgdGhlIHBhY2thZ2UgcGFyc2VzIGFuZCBlbWl0cyBkYXRhLgorIiIiCisKK2ltcG9ydCBhYmMKK2Zyb20gZW1haWwgaW1wb3J0IGhlYWRlcgorZnJvbSBlbWFpbCBpbXBvcnQgY2hhcnNldCBhcyBfY2hhcnNldAorZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCisKK19fYWxsX18gPSBbCisgICAgJ1BvbGljeScsCisgICAgJ0NvbXBhdDMyJywKKyAgICAnY29tcGF0MzInLAorICAgIF0KKworCitjbGFzcyBfUG9saWN5QmFzZToKKworICAgICIiIlBvbGljeSBPYmplY3QgYmFzaWMgZnJhbWV3b3JrLgorCisgICAgVGhpcyBjbGFzcyBpcyB1c2VsZXNzIHVubGVzcyBzdWJjbGFzc2VkLiAgQSBzdWJjbGFzcyBzaG91bGQgZGVmaW5lCisgICAgY2xhc3MgYXR0cmlidXRlcyB3aXRoIGRlZmF1bHRzIGZvciBhbnkgdmFsdWVzIHRoYXQgYXJlIHRvIGJlCisgICAgbWFuYWdlZCBieSB0aGUgUG9saWN5IG9iamVjdC4gIFRoZSBjb25zdHJ1Y3RvciB3aWxsIHRoZW4gYWxsb3cKKyAgICBub24tZGVmYXVsdCB2YWx1ZXMgdG8gYmUgc2V0IGZvciB0aGVzZSBhdHRyaWJ1dGVzIGF0IGluc3RhbmNlCisgICAgY3JlYXRpb24gdGltZS4gIFRoZSBpbnN0YW5jZSB3aWxsIGJlIGNhbGxhYmxlLCB0YWtpbmcgdGhlc2Ugc2FtZQorICAgIGF0dHJpYnV0ZXMga2V5d29yZCBhcmd1bWVudHMsIGFuZCByZXR1cm5pbmcgYSBuZXcgaW5zdGFuY2UKKyAgICBpZGVudGljYWwgdG8gdGhlIGNhbGxlZCBpbnN0YW5jZSBleGNlcHQgZm9yIHRob3NlIHZhbHVlcyBjaGFuZ2VkCisgICAgYnkgdGhlIGtleXdvcmQgYXJndW1lbnRzLiAgSW5zdGFuY2VzIG1heSBiZSBhZGRlZCwgeWllbGRpbmcgbmV3CisgICAgaW5zdGFuY2VzIHdpdGggYW55IG5vbi1kZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSByaWdodCBoYW5kCisgICAgb3BlcmFuZCBvdmVycmlkaW5nIHRob3NlIGluIHRoZSBsZWZ0IGhhbmQgb3BlcmFuZC4gIFRoYXQgaXMsCisKKyAgICAgICAgQSArIEIgPT0gQSg8bm9uLWRlZmF1bHQgdmFsdWVzIG9mIEI+KQorCisgICAgVGhlIHJlcHIgb2YgYW4gaW5zdGFuY2UgY2FuIGJlIHVzZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIG9iamVjdAorICAgIGlmIGFuZCBvbmx5IGlmIHRoZSByZXByIG9mIHRoZSB2YWx1ZXMgY2FuIGJlIHVzZWQgdG8gcmVjb25zdHJ1Y3QKKyAgICB0aG9zZSB2YWx1ZXMuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToKKyAgICAgICAgIiIiQ3JlYXRlIG5ldyBQb2xpY3ksIHBvc3NpYmx5IG92ZXJyaWRpbmcgc29tZSBkZWZhdWx0cy4KKworICAgICAgICBTZWUgY2xhc3MgZG9jc3RyaW5nIGZvciBhIGxpc3Qgb2Ygb3ZlcnJpZGFibGUgYXR0cmlidXRlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGt3Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHN1cGVyKF9Qb2xpY3lCYXNlLHNlbGYpLl9fc2V0YXR0cl9fKG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJ7IXJ9IGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3Ige30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXJncyA9IFsgInt9PXshcn0iLmZvcm1hdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBdCisgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcsICcuam9pbihhcmdzKSkKKworICAgIGRlZiBjbG9uZShzZWxmLCAqKmt3KToKKyAgICAgICAgIiIiUmV0dXJuIGEgbmV3IGluc3RhbmNlIHdpdGggc3BlY2lmaWVkIGF0dHJpYnV0ZXMgY2hhbmdlZC4KKworICAgICAgICBUaGUgbmV3IGluc3RhbmNlIGhhcyB0aGUgc2FtZSBhdHRyaWJ1dGUgdmFsdWVzIGFzIHRoZSBjdXJyZW50IG9iamVjdCwKKyAgICAgICAgZXhjZXB0IGZvciB0aGUgY2hhbmdlcyBwYXNzZWQgaW4gYXMga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG5ld3BvbGljeSA9IHNlbGYuX19jbGFzc19fLl9fbmV3X18oc2VsZi5fX2NsYXNzX18pCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBzZWxmLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18obmV3cG9saWN5LCBhdHRyLCB2YWx1ZSkKKyAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGt3Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCBhdHRyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJ7IXJ9IGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3Ige30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKSkKKyAgICAgICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhuZXdwb2xpY3ksIGF0dHIsIHZhbHVlKQorICAgICAgICByZXR1cm4gbmV3cG9saWN5CisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgbXNnID0gInshcn0gb2JqZWN0IGF0dHJpYnV0ZSB7IXJ9IGlzIHJlYWQtb25seSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICJ7IXJ9IG9iamVjdCBoYXMgbm8gYXR0cmlidXRlIHshcn0iCisgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG1zZy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpKQorCisgICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJOb24tZGVmYXVsdCB2YWx1ZXMgZnJvbSByaWdodCBvcGVyYW5kIG92ZXJyaWRlIHRob3NlIGZyb20gbGVmdC4KKworICAgICAgICBUaGUgb2JqZWN0IHJldHVybmVkIGlzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBzdWJjbGFzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xvbmUoKipvdGhlci5fX2RpY3RfXykKKworCitkZWYgX2FwcGVuZF9kb2MoZG9jLCBhZGRlZF9kb2MpOgorICAgIGRvYyA9IGRvYy5yc3BsaXQoJ1xuJywgMSlbMF0KKyAgICBhZGRlZF9kb2MgPSBhZGRlZF9kb2Muc3BsaXQoJ1xuJywgMSlbMV0KKyAgICByZXR1cm4gZG9jICsgJ1xuJyArIGFkZGVkX2RvYworCitkZWYgX2V4dGVuZF9kb2NzdHJpbmdzKGNscyk6CisgICAgaWYgY2xzLl9fZG9jX18gYW5kIGNscy5fX2RvY19fLnN0YXJ0c3dpdGgoJysnKToKKyAgICAgICAgY2xzLl9fZG9jX18gPSBfYXBwZW5kX2RvYyhjbHMuX19iYXNlc19fWzBdLl9fZG9jX18sIGNscy5fX2RvY19fKQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBpZiBhdHRyLl9fZG9jX18gYW5kIGF0dHIuX19kb2NfXy5zdGFydHN3aXRoKCcrJyk6CisgICAgICAgICAgICBmb3IgYyBpbiAoYyBmb3IgYmFzZSBpbiBjbHMuX19iYXNlc19fIGZvciBjIGluIGJhc2UubXJvKCkpOgorICAgICAgICAgICAgICAgIGRvYyA9IGdldGF0dHIoZ2V0YXR0cihjLCBuYW1lKSwgJ19fZG9jX18nKQorICAgICAgICAgICAgICAgIGlmIGRvYzoKKyAgICAgICAgICAgICAgICAgICAgYXR0ci5fX2RvY19fID0gX2FwcGVuZF9kb2MoZG9jLCBhdHRyLl9fZG9jX18pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGNscworCisKK2NsYXNzIFBvbGljeShfUG9saWN5QmFzZSwgbWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKworICAgIHIiIiJDb250cm9scyBmb3IgaG93IG1lc3NhZ2VzIGFyZSBpbnRlcnByZXRlZCBhbmQgZm9ybWF0dGVkLgorCisgICAgTW9zdCBvZiB0aGUgY2xhc3NlcyBhbmQgbWFueSBvZiB0aGUgbWV0aG9kcyBpbiB0aGUgZW1haWwgcGFja2FnZSBhY2NlcHQKKyAgICBQb2xpY3kgb2JqZWN0cyBhcyBwYXJhbWV0ZXJzLiAgQSBQb2xpY3kgb2JqZWN0IGNvbnRhaW5zIGEgc2V0IG9mIHZhbHVlcyBhbmQKKyAgICBmdW5jdGlvbnMgdGhhdCBjb250cm9sIGhvdyBpbnB1dCBpcyBpbnRlcnByZXRlZCBhbmQgaG93IG91dHB1dCBpcyByZW5kZXJlZC4KKyAgICBGb3IgZXhhbXBsZSwgdGhlIHBhcmFtZXRlciAncmFpc2Vfb25fZGVmZWN0JyBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBhbiBSRkMKKyAgICB2aW9sYXRpb24gcmVzdWx0cyBpbiBhbiBlcnJvciBiZWluZyByYWlzZWQgb3Igbm90LCB3aGlsZSAnbWF4X2xpbmVfbGVuZ3RoJworICAgIGNvbnRyb2xzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBvdXRwdXQgbGluZXMgd2hlbiBhIE1lc3NhZ2UgaXMgc2VyaWFsaXplZC4KKworICAgIEFueSB2YWxpZCBhdHRyaWJ1dGUgbWF5IGJlIG92ZXJyaWRkZW4gd2hlbiBhIFBvbGljeSBpcyBjcmVhdGVkIGJ5IHBhc3NpbmcKKyAgICBpdCBhcyBhIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLiAgUG9saWN5IG9iamVjdHMgYXJlIGltbXV0YWJsZSwKKyAgICBidXQgYSBuZXcgUG9saWN5IG9iamVjdCBjYW4gYmUgY3JlYXRlZCB3aXRoIG9ubHkgY2VydGFpbiB2YWx1ZXMgY2hhbmdlZCBieQorICAgIGNhbGxpbmcgdGhlIFBvbGljeSBpbnN0YW5jZSB3aXRoIGtleXdvcmQgYXJndW1lbnRzLiAgUG9saWN5IG9iamVjdHMgY2FuCisgICAgYWxzbyBiZSBhZGRlZCwgcHJvZHVjaW5nIGEgbmV3IFBvbGljeSBvYmplY3QgaW4gd2hpY2ggdGhlIG5vbi1kZWZhdWx0CisgICAgYXR0cmlidXRlcyBzZXQgaW4gdGhlIHJpZ2h0IGhhbmQgb3BlcmFuZCBvdmVyd3JpdGUgdGhvc2Ugc3BlY2lmaWVkIGluIHRoZQorICAgIGxlZnQgb3BlcmFuZC4KKworICAgIFNldHRhYmxlIGF0dHJpYnV0ZXM6CisKKyAgICByYWlzZV9vbl9kZWZlY3QgICAgIC0tIElmIHRydWUsIHRoZW4gZGVmZWN0cyBzaG91bGQgYmUgcmFpc2VkIGFzIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IEZhbHNlLgorCisgICAgbGluZXNlcCAgICAgICAgICAgICAtLSBzdHJpbmcgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gdXNlIGFzIHNlcGFyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gb3V0cHV0IGxpbmVzLiAgRGVmYXVsdCAnXG4nLgorCisgICAgY3RlX3R5cGUgICAgICAgICAgICAtLSBUeXBlIG9mIGFsbG93ZWQgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZ3MKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgN2JpdCAgLS0gQVNDSUkgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOGJpdCAgLS0gQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCBpcyBhbGxvd2VkCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IDhiaXQuICBBbHNvIGNvbnRyb2xzIHRoZSBkaXNwb3NpdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpbiBoZWFkZXJzOyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBiaW5hcnlfZm9sZCBtZXRob2QuCisKKyAgICBtYXhfbGluZV9sZW5ndGggICAgIC0tIG1heGltdW0gbGVuZ3RoIG9mIGxpbmVzLCBleGNsdWRpbmcgJ2xpbmVzZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHNlcmlhbGl6YXRpb24uICBOb25lIG9yIDAgbWVhbnMgbm8gbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBpbmcgaXMgZG9uZS4gIERlZmF1bHQgaXMgNzguCisKKyAgICAiIiIKKworICAgIHJhaXNlX29uX2RlZmVjdCA9IEZhbHNlCisgICAgbGluZXNlcCA9ICdcbicKKyAgICBjdGVfdHlwZSA9ICc4Yml0JworICAgIG1heF9saW5lX2xlbmd0aCA9IDc4CisKKyAgICBkZWYgaGFuZGxlX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICIiIkJhc2VkIG9uIHBvbGljeSwgZWl0aGVyIHJhaXNlIGRlZmVjdCBvciBjYWxsIHJlZ2lzdGVyX2RlZmVjdC4KKworICAgICAgICAgICAgaGFuZGxlX2RlZmVjdChvYmosIGRlZmVjdCkKKworICAgICAgICBkZWZlY3Qgc2hvdWxkIGJlIGEgRGVmZWN0IHN1YmNsYXNzLCBidXQgaW4gYW55IGNhc2UgbXVzdCBiZSBhbgorICAgICAgICBFeGNlcHRpb24gc3ViY2xhc3MuICBvYmogaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgZGVmZWN0IHNob3VsZCBiZQorICAgICAgICByZWdpc3RlcmVkIGlmIGl0IGlzIG5vdCByYWlzZWQuICBJZiB0aGUgcmFpc2Vfb25fZGVmZWN0IGlzIFRydWUsIHRoZQorICAgICAgICBkZWZlY3QgaXMgcmFpc2VkIGFzIGFuIGVycm9yLCBvdGhlcndpc2UgdGhlIG9iamVjdCBhbmQgdGhlIGRlZmVjdCBhcmUKKyAgICAgICAgcGFzc2VkIHRvIHJlZ2lzdGVyX2RlZmVjdC4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgcGFyc2VycyB0aGF0IGRpc2NvdmVyIGRlZmVjdHMuCisgICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIHBhcnNlcnMgYWx3YXlzIGNhbGwgaXQgd2l0aCBEZWZlY3QgaW5zdGFuY2VzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2RlZmVjdDoKKyAgICAgICAgICAgIHJhaXNlIGRlZmVjdAorICAgICAgICBzZWxmLnJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdCkKKworICAgIGRlZiByZWdpc3Rlcl9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgorICAgICAgICAiIiJSZWNvcmQgJ2RlZmVjdCcgb24gJ29iaicuCisKKyAgICAgICAgQ2FsbGVkIGJ5IGhhbmRsZV9kZWZlY3QgaWYgcmFpc2Vfb25fZGVmZWN0IGlzIEZhbHNlLiAgVGhpcyBtZXRob2QgaXMKKyAgICAgICAgcGFydCBvZiB0aGUgUG9saWN5IEFQSSBzbyB0aGF0IFBvbGljeSBzdWJjbGFzc2VzIGNhbiBpbXBsZW1lbnQgY3VzdG9tCisgICAgICAgIGRlZmVjdCBoYW5kbGluZy4gIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSBhcHBlbmQgbWV0aG9kIG9mCisgICAgICAgIHRoZSBkZWZlY3RzIGF0dHJpYnV0ZSBvZiBvYmouICBUaGUgb2JqZWN0cyB1c2VkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGJ5CisgICAgICAgIGRlZmF1bHQgdGhhdCBnZXQgcGFzc2VkIHRvIHRoaXMgbWV0aG9kIHdpbGwgYWx3YXlzIGhhdmUgYSBkZWZlY3RzCisgICAgICAgIGF0dHJpYnV0ZSB3aXRoIGFuIGFwcGVuZCBtZXRob2QuCisKKyAgICAgICAgIiIiCisgICAgICAgIG9iai5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgaGVhZGVyX21heF9jb3VudChzZWxmLCBuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIGhlYWRlcnMgbmFtZWQgJ25hbWUnLgorCisgICAgICAgIENhbGxlZCB3aGVuIGEgaGVhZGVyIGlzIGFkZGVkIHRvIGEgTWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQKKyAgICAgICAgdmFsdWUgaXMgbm90IDAgb3IgTm9uZSwgYW5kIHRoZXJlIGFyZSBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aAorICAgICAgICB0aGUgbmFtZSAnbmFtZScgZXF1YWwgdG8gdGhlIHZhbHVlIHJldHVybmVkLCBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgorCisgICAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgTWVzc2FnZSdzIF9fc2V0aXRlbV9fIGlzIHRvIGFwcGVuZCB0aGUKKyAgICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKKyAgICAgICAgd2l0aG91dCByZWFsaXppbmcgaXQuICBUaGlzIG1ldGhvZCBhbGxvd3MgY2VydGFpbiBoZWFkZXJzIHRvIGJlIGxpbWl0ZWQKKyAgICAgICAgaW4gdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgb2YgdGhhdCBoZWFkZXIgdGhhdCBtYXkgYmUgYWRkZWQgdG8gYQorICAgICAgICBNZXNzYWdlIHByb2dyYW1tYXRpY2FsbHkuICAoVGhlIGxpbWl0IGlzIG5vdCBvYnNlcnZlZCBieSB0aGUgcGFyc2VyLAorICAgICAgICB3aGljaCB3aWxsIGZhaXRoZnVsbHkgcHJvZHVjZSBhcyBtYW55IGhlYWRlcnMgYXMgZXhpc3QgaW4gdGhlIG1lc3NhZ2UKKyAgICAgICAgYmVpbmcgcGFyc2VkLikKKworICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIE5vbmUgZm9yIGFsbCBoZWFkZXIgbmFtZXMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBoZWFkZXJfc291cmNlX3BhcnNlKHNlbGYsIHNvdXJjZWxpbmVzKToKKyAgICAgICAgIiIiR2l2ZW4gYSBsaXN0IG9mIGxpbmVzZXAgdGVybWluYXRlZCBzdHJpbmdzIGNvbnN0aXR1dGluZyB0aGUgbGluZXMgb2YKKyAgICAgICAgYSBzaW5nbGUgaGVhZGVyLCByZXR1cm4gdGhlIChuYW1lLCB2YWx1ZSkgdHVwbGUgdGhhdCBzaG91bGQgYmUgc3RvcmVkCisgICAgICAgIGluIHRoZSBtb2RlbC4gIFRoZSBpbnB1dCBsaW5lcyBzaG91bGQgcmV0YWluIHRoZWlyIHRlcm1pbmF0aW5nIGxpbmVzZXAKKyAgICAgICAgY2hhcmFjdGVycy4gIFRoZSBsaW5lcyBwYXNzZWQgaW4gYnkgdGhlIGVtYWlsIHBhY2thZ2UgbWF5IGNvbnRhaW4KKyAgICAgICAgc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgIHByb2dyYW0sIHJldHVybiB0aGUgKG5hbWUsIHZhbHVlKSB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaW4gdGhlIG1vZGVsLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBoZWFkZXJfZmV0Y2hfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCwgcmV0dXJuIHRoZSB2YWx1ZQorICAgICAgICB0byBiZSByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IGlzIHJlcXVlc3RpbmcgdGhhdAorICAgICAgICBoZWFkZXIuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIG1heSBjb250YWluCisgICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaWYgdGhlIGxpbmVzIHdlcmUgcGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIuCisgICAgICAgIFRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHN1cnJvZ2F0ZWVzY2FwZWQgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmb2xkKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kZWwsIHJldHVybiBhIHN0cmluZworICAgICAgICBjb250YWluaW5nIGxpbmVzZXAgY2hhcmFjdGVycyB0aGF0IGltcGxlbWVudCB0aGUgZm9sZGluZyBvZiB0aGUgaGVhZGVyCisgICAgICAgIGFjY29yZGluZyB0byB0aGUgcG9saWN5IGNvbnRyb2xzLiAgVGhlIHZhbHVlIHBhc3NlZCBpbiBieSB0aGUgZW1haWwKKyAgICAgICAgcGFja2FnZSBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGlmIHRoZSBsaW5lcyB3ZXJlCisgICAgICAgIHBhcnNlZCBieSBhIEJ5dGVzUGFyc2VyLiAgVGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBub3QgY29udGFpbiBhbnkKKyAgICAgICAgc3Vycm9nYXRlZXNjYXBlZCBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZvbGRfYmluYXJ5KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kZWwsIHJldHVybiBiaW5hcnkKKyAgICAgICAgZGF0YSBjb250YWluaW5nIGxpbmVzZXAgY2hhcmFjdGVycyB0aGF0IGltcGxlbWVudCB0aGUgZm9sZGluZyBvZiB0aGUKKyAgICAgICAgaGVhZGVyIGFjY29yZGluZyB0byB0aGUgcG9saWN5IGNvbnRyb2xzLiAgVGhlIHZhbHVlIHBhc3NlZCBpbiBieSB0aGUKKyAgICAgICAgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKworQF9leHRlbmRfZG9jc3RyaW5ncworY2xhc3MgQ29tcGF0MzIoUG9saWN5KToKKworICAgICIiIisKKyAgICBUaGlzIHBhcnRpY3VsYXIgcG9saWN5IGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IFBvbGljeS4gIEl0CisgICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgdmVyc2lvbiA1LjEuCisgICAgIiIiCisKKyAgICBkZWYgX3Nhbml0aXplX2hlYWRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICMgSWYgdGhlIGhlYWRlciB2YWx1ZSBjb250YWlucyBzdXJyb2dhdGVzLCByZXR1cm4gYSBIZWFkZXIgdXNpbmcKKyAgICAgICAgIyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQgdG8gZW5jb2RlIHRoZSBieXRlcyBhcyBlbmNvZGVkIHdvcmRzLgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICMgQXNzdW1lIGl0IGlzIGFscmVhZHkgYSBoZWFkZXIgb2JqZWN0CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKKyAgICAgICAgICAgIHJldHVybiBoZWFkZXIuSGVhZGVyKHZhbHVlLCBjaGFyc2V0PV9jaGFyc2V0LlVOS05PV044QklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9bmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorCisgICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnOicgYW5kIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmIHRoZQorICAgICAgICByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsIGFuZAorICAgICAgICBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBuYW1lLCB2YWx1ZSA9IHNvdXJjZWxpbmVzWzBdLnNwbGl0KCc6JywgMSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5sc3RyaXAoJyBcdCcpICsgJycuam9pbihzb3VyY2VsaW5lc1sxOl0pCisgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUucnN0cmlwKCdcclxuJykpCisKKyAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlKQorCisgICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhIEhlYWRlciBvYmplY3QKKyAgICAgICAgdXNpbmcgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0LiAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc2FuaXRpemVfaGVhZGVyKG5hbWUsIHZhbHVlKQorCisgICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgSGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMKKyAgICAgICAgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUKKyAgICAgICAgbWF4X2xpbmVfbGVuZ3RoLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZSBDVEUgZW5jb2RlZCB1c2luZyB0aGUKKyAgICAgICAgdW5rbm93bi04Yml0IGNoYXJzZXQuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCBzYW5pdGl6ZT1UcnVlKQorCisgICAgZGVmIGZvbGRfYmluYXJ5KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIEhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzCisgICAgICAgIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlCisgICAgICAgIG1heF9saW5lX2xlbmd0aC4gIElmIGN0ZV90eXBlIGlzIDdiaXQsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUKKyAgICAgICAgZW5jb2RlZCB1c2luZyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZQorICAgICAgICBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcgbGluZSBicmVha3MgYW5kL29yIGJpbmFyeSBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICBmb2xkZWQgPSBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCBzYW5pdGl6ZT1zZWxmLmN0ZV90eXBlPT0nN2JpdCcpCisgICAgICAgIHJldHVybiBmb2xkZWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIF9mb2xkKHNlbGYsIG5hbWUsIHZhbHVlLCBzYW5pdGl6ZSk6CisgICAgICAgIHBhcnRzID0gW10KKyAgICAgICAgcGFydHMuYXBwZW5kKCclczogJyAlIG5hbWUpCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgICAgIGlmIHNhbml0aXplOgorICAgICAgICAgICAgICAgICAgICBoID0gaGVhZGVyLkhlYWRlcih2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1fY2hhcnNldC5VTktOT1dOOEJJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9bmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgcmF3IDhiaXQgZGF0YSBpbiBhIGJ5dGUgc3RyaW5nLCB3ZSBoYXZlIG5vIGlkZWEKKyAgICAgICAgICAgICAgICAgICAgIyB3aGF0IHRoZSBlbmNvZGluZyBpcy4gIFRoZXJlIGlzIG5vIHNhZmUgd2F5IHRvIHNwbGl0IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmcuICBJZiBpdCdzIGFzY2lpLXN1YnNldCwgdGhlbiB3ZSBjb3VsZCBkbyBhIG5vcm1hbAorICAgICAgICAgICAgICAgICAgICAjIGFzY2lpIHNwbGl0LCBidXQgaWYgaXQncyBtdWx0aWJ5dGUgdGhlbiB3ZSBjb3VsZCBicmVhayB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmcuICBUaGVyZSdzIG5vIHdheSB0byBrbm93IHNvIHRoZSBsZWFzdCBoYXJtIHNlZW1zIHRvCisgICAgICAgICAgICAgICAgICAgICMgYmUgdG8gbm90IHNwbGl0IHRoZSBzdHJpbmcgYW5kIHJpc2sgaXQgYmVpbmcgdG9vIGxvbmcuCisgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgaCA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaCA9IGhlYWRlci5IZWFkZXIodmFsdWUsIGhlYWRlcl9uYW1lPW5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFzc3VtZSBpdCBpcyBhIEhlYWRlci1saWtlIG9iamVjdC4KKyAgICAgICAgICAgIGggPSB2YWx1ZQorICAgICAgICBpZiBoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKGguZW5jb2RlKGxpbmVzZXA9c2VsZi5saW5lc2VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxpbmVsZW49c2VsZi5tYXhfbGluZV9sZW5ndGgpKQorICAgICAgICBwYXJ0cy5hcHBlbmQoc2VsZi5saW5lc2VwKQorICAgICAgICByZXR1cm4gJycuam9pbihwYXJ0cykKKworCitjb21wYXQzMiA9IENvbXBhdDMyKCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9hcmNoaXRlY3R1cmUucnN0IGIvTGliL2VtYWlsL2FyY2hpdGVjdHVyZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBkMjRmZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9hcmNoaXRlY3R1cmUucnN0CkBAIC0wLDAgKzEsMjE2IEBACis6bW9kOmBlbWFpbGAgUGFja2FnZSBBcmNoaXRlY3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPdmVydmlldworLS0tLS0tLS0KKworVGhlIGVtYWlsIHBhY2thZ2UgY29uc2lzdHMgb2YgdGhyZWUgbWFqb3IgY29tcG9uZW50czoKKworICAgIE1vZGVsCisgICAgICAgIEFuIG9iamVjdCBzdHJ1Y3R1cmUgdGhhdCByZXByZXNlbnRzIGFuIGVtYWlsIG1lc3NhZ2UsIGFuZCBwcm92aWRlcyBhbgorICAgICAgICBBUEkgZm9yIGNyZWF0aW5nLCBxdWVyeWluZywgYW5kIG1vZGlmeWluZyBhIG1lc3NhZ2UuCisKKyAgICBQYXJzZXIKKyAgICAgICAgVGFrZXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG9yIGJ5dGVzIGFuZCBwcm9kdWNlcyBhIG1vZGVsIG9mIHRoZQorICAgICAgICBlbWFpbCBtZXNzYWdlIHJlcHJlc2VudGVkIGJ5IHRob3NlIGNoYXJhY3RlcnMgb3IgYnl0ZXMuCisKKyAgICBHZW5lcmF0b3IKKyAgICAgICAgVGFrZXMgYSBtb2RlbCBhbmQgdHVybnMgaXQgaW50byBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgb3IgYnl0ZXMuICBUaGUKKyAgICAgICAgc2VxdWVuY2UgY2FuIGVpdGhlciBiZSBpbnRlbmRlZCBmb3IgaHVtYW4gY29uc3VtcHRpb24gKGEgcHJpbnRhYmxlCisgICAgICAgIHVuaWNvZGUgc3RyaW5nKSBvciBieXRlcyBzdWl0YWJsZSBmb3IgdHJhbnNtaXNzaW9uIG92ZXIgdGhlIHdpcmUuICBJbgorICAgICAgICB0aGUgbGF0dGVyIGNhc2UgYWxsIGRhdGEgaXMgcHJvcGVybHkgZW5jb2RlZCB1c2luZyB0aGUgY29udGVudCB0cmFuc2ZlcgorICAgICAgICBlbmNvZGluZ3Mgc3BlY2lmaWVkIGJ5IHRoZSByZWxldmFudCBSRkNzLgorCitDb25jZXB0dWFsbHkgdGhlIHBhY2thZ2UgaXMgb3JnYW5pemVkIGFyb3VuZCB0aGUgbW9kZWwuICBUaGUgbW9kZWwgcHJvdmlkZXMgYm90aAorImV4dGVybmFsIiBBUElzIGludGVuZGVkIGZvciB1c2UgYnkgYXBwbGljYXRpb24gcHJvZ3JhbXMgdXNpbmcgdGhlIGxpYnJhcnksCithbmQgImludGVybmFsIiBBUElzIGludGVuZGVkIGZvciB1c2UgYnkgdGhlIFBhcnNlciBhbmQgR2VuZXJhdG9yIGNvbXBvbmVudHMuCitUaGlzIGRpdmlzaW9uIGlzIGludGVudGlvbmFsbHkgYSBiaXQgZnV6eTsgdGhlIEFQSSBkZXNjcmliZWQgYnkgdGhpcyBkb2N1bWVudGF0aW9uCitpcyBhbGwgYSBwdWJsaWMsIHN0YWJsZSBBUEkuICBUaGlzIGFsbG93cyBmb3IgYW4gYXBwbGljYXRpb24gd2l0aCBzcGVjaWFsIG5lZWRzCit0byBpbXBsZW1lbnQgaXRzIG93biBwYXJzZXIgYW5kL29yIGdlbmVyYXRvci4KKworSW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIG1ham9yIGZ1bmN0aW9uYWwgY29tcG9uZW50cywgdGhlcmUgaXMgYSB0aGlyZCBrZXkKK2NvbXBvbmVudCB0byB0aGUgYXJjaGl0ZWN0dXJlOgorCisgICAgUG9saWN5CisgICAgICAgIEFuIG9iamVjdCB0aGF0IHNwZWNpZmllcyB2YXJpb3VzIGJlaGF2aW9yYWwgc2V0dGluZ3MgYW5kIGNhcnJpZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIHZhcmlvdXMgYmVoYXZpb3ItY29udHJvbGxpbmcgbWV0aG9kcy4KKworVGhlIFBvbGljeSBmcmFtZXdvcmsgcHJvdmlkZXMgYSBzaW1wbGUgYW5kIGNvbnZlbmllbnQgd2F5IHRvIGNvbnRyb2wgdGhlCitiZWhhdmlvciBvZiB0aGUgbGlicmFyeSwgbWFraW5nIGl0IHBvc3NpYmxlIGZvciB0aGUgbGlicmFyeSB0byBiZSB1c2VkIGluIGEKK3ZlcnkgZmxleGlibGUgZmFzaGlvbiB3aGlsZSBsZXZlcmFnaW5nIHRoZSBjb21tb24gY29kZSByZXF1aXJlZCB0byBwYXJzZSwKK3JlcHJlc2VudCwgYW5kIGdlbmVyYXRlIG1lc3NhZ2UtbGlrZSBvYmplY3RzLiAgRm9yIGV4YW1wbGUsIGluIGFkZGl0aW9uIHRvIHRoZQorZGVmYXVsdCA6cmZjOmA1MzIyYCBlbWFpbCBtZXNzYWdlIHBvbGljeSwgd2UgYWxzbyBoYXZlIGEgcG9saWN5IHRoYXQgbWFuYWdlcworSFRUUCBoZWFkZXJzIGluIGEgZmFzaGlvbiBjb21wbGlhbnQgd2l0aCA6cmZjOmAyNjE2YC4gIEluZGl2aWR1YWwgcG9saWN5Citjb250cm9scywgc3VjaCBhcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aCBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yLCBjYW4gYWxzbworYmUgY29udHJvbGxlZCBpbmRpdmlkdWFsbHkgdG8gbWVldCBzcGVjaWFsaXplZCBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuCisKKworVGhlIE1vZGVsCistLS0tLS0tLS0KKworVGhlIG1lc3NhZ2UgbW9kZWwgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCitUaGUgbW9kZWwgZGl2aWRlcyBhIG1lc3NhZ2UgaW50byB0aGUgdHdvIGZ1bmRhbWVudGFsIHBhcnRzIGRpc2N1c3NlZCBieSB0aGUKK1JGQzogdGhlIGhlYWRlciBzZWN0aW9uIGFuZCB0aGUgYm9keS4gIFRoZSBgTWVzc2FnZWAgb2JqZWN0IGFjdHMgYXMgYQorcHNldWRvLWRpY3Rpb25hcnkgb2YgbmFtZWQgaGVhZGVycy4gIEl0cyBkaWN0aW9uYXJ5IGludGVyZmFjZSBwcm92aWRlcworY29udmVuaWVudCBhY2Nlc3MgdG8gaW5kaXZpZHVhbCBoZWFkZXJzIGJ5IG5hbWUuICBIb3dldmVyLCBhbGwgaGVhZGVycyBhcmUga2VwdAoraW50ZXJuYWxseSBpbiBhbiBvcmRlcmVkIGxpc3QsIHNvIHRoYXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcmRlciBvZiB0aGUKK2hlYWRlcnMgaW4gdGhlIG9yaWdpbmFsIG1lc3NhZ2UgaXMgcHJlc2VydmVkLgorCitUaGUgYE1lc3NhZ2VgIG9iamVjdCBhbHNvIGhhcyBhIGBwYXlsb2FkYCB0aGF0IGhvbGRzIHRoZSBib2R5LiAgQSBgcGF5bG9hZGAgY2FuCitiZSBvbmUgb2YgdHdvIHRoaW5nczogZGF0YSwgb3IgYSBsaXN0IG9mIGBNZXNzYWdlYCBvYmplY3RzLiAgVGhlIGxhdHRlciBpcyB1c2VkCit0byByZXByZXNlbnQgYSBtdWx0aXBhcnQgTUlNRSBtZXNzYWdlLiAgTGlzdHMgY2FuIGJlIG5lc3RlZCBhcmJpdHJhcmlseSBkZWVwbHkKK2luIG9yZGVyIHRvIHJlcHJlc2VudCB0aGUgbWVzc2FnZSwgd2l0aCBhbGwgdGVybWluYWwgbGVhdmVzIGhhdmluZyBub24tbGlzdAorZGF0YSBwYXlsb2Fkcy4KKworCitNZXNzYWdlIExpZmVjeWNsZQorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGdlbmVyYWwgbGlmZWN5bGUgb2YgYSBtZXNzYWdlIGlzOgorCisgICAgQ3JlYXRpb24KKyAgICAgICAgQSBgTWVzc2FnZWAgb2JqZWN0IGNhbiBiZSBjcmVhdGVkIGJ5IGEgUGFyc2VyLCBvciBpdCBjYW4gYmUKKyAgICAgICAgaW5zdGFudGlhdGVkIGFzIGFuIGVtcHR5IG1lc3NhZ2UgYnkgYW4gYXBwbGljYXRpb24uCisKKyAgICBNYW5pcHVsYXRpb24KKyAgICAgICAgVGhlIGFwcGxpY2F0aW9uIG1heSBleGFtaW5lIG9uZSBvciBtb3JlIGhlYWRlcnMsIGFuZC9vciB0aGUKKyAgICAgICAgcGF5bG9hZCwgYW5kIGl0IG1heSBtb2RpZnkgb25lIG9yIG1vcmUgaGVhZGVycyBhbmQvb3IKKyAgICAgICAgdGhlIHBheWxvYWQuICBUaGlzIG1heSBiZSBkb25lIG9uIHRoZSB0b3AgbGV2ZWwgYE1lc3NhZ2VgCisgICAgICAgIG9iamVjdCwgb3Igb24gYW55IHN1Yi1vYmplY3QuCisKKyAgICBGaW5hbGl6YXRpb24KKyAgICAgICAgVGhlIE1vZGVsIGlzIGNvbnZlcnRlZCBpbnRvIGEgdW5pY29kZSBvciBiaW5hcnkgc3RyZWFtLAorICAgICAgICBvciB0aGUgbW9kZWwgaXMgZGlzY2FyZGVkLgorCisKKworSGVhZGVyIFBvbGljeSBDb250cm9sIER1cmluZyBMaWZlY3ljbGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uZSBvZiB0aGUgbWFqb3IgY29udHJvbHMgZXhlcnRlZCBieSB0aGUgUG9saWN5IGlzIHRoZSBtYW5hZ2VtZW50IG9mIGhlYWRlcnMKK2R1cmluZyB0aGUgYE1lc3NhZ2VgIGxpZmVjeWNsZS4gIE1vc3QgYXBwbGljYXRpb25zIGRvbid0IG5lZWQgdG8gYmUgYXdhcmUgb2YKK3RoaXMuCisKK0EgaGVhZGVyIGVudGVycyB0aGUgbW9kZWwgaW4gb25lIG9mIHR3byB3YXlzOiB2aWEgYSBQYXJzZXIsIG9yIGJ5IGJlaW5nIHNldCB0bworYSBzcGVjaWZpYyB2YWx1ZSBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIGFmdGVyIHRoZSBNb2RlbCBhbHJlYWR5IGV4aXN0cy4KK1NpbWlsYXJseSwgYSBoZWFkZXIgZXhpdHMgdGhlIG1vZGVsIGluIG9uZSBvZiB0d28gd2F5czogYnkgYmVpbmcgc2VyaWFsaXplZCBieQorYSBHZW5lcmF0b3IsIG9yIGJ5IGJlaW5nIHJldHJpZXZlZCBmcm9tIGEgTW9kZWwgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbS4gIFRoZQorUG9saWN5IG9iamVjdCBwcm92aWRlcyBob29rcyBmb3IgYWxsIGZvdXIgb2YgdGhlc2UgcGF0aHdheXMuCisKK1RoZSBtb2RlbCBzdG9yYWdlIGZvciBoZWFkZXJzIGlzIGEgbGlzdCBvZiAobmFtZSwgdmFsdWUpIHR1cGxlcy4KKworVGhlIFBhcnNlciBpZGVudGlmaWVzIGhlYWRlcnMgZHVyaW5nIHBhcnNpbmcsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5oZWFkZXJfc291cmNlX3BhcnNlYCBtZXRob2Qgb2YgdGhlIFBvbGljeS4gIFRoZQorcmVzdWx0IG9mIHRoYXQgbWV0aG9kIGlzIHRoZSAobmFtZSwgdmFsdWUpIHR1cGxlIHRvIGJlIHN0b3JlZCBpbiB0aGUgbW9kZWwuCisKK1doZW4gYW4gYXBwbGljYXRpb24gcHJvZ3JhbSBzdXBwbGllcyBhIGhlYWRlciB2YWx1ZSAoZm9yIGV4YW1wbGUsIHRocm91Z2ggdGhlCitgTWVzc2FnZWAgb2JqZWN0IGBfX3NldGl0ZW1fX2AgaW50ZXJmYWNlKSwgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSBhcmUgcGFzc2VkIHRvCit0aGUgOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmhlYWRlcl9zdG9yZV9wYXJzZWAgbWV0aG9kIG9mIHRoZSBQb2xpY3ksIHdoaWNoCityZXR1cm5zIHRoZSAobmFtZSwgdmFsdWUpIHR1cGxlIHRvIGJlIHN0b3JlZCBpbiB0aGUgbW9kZWwuCisKK1doZW4gYW4gYXBwbGljYXRpb24gcHJvZ3JhbSByZXRyaWV2ZXMgYSBoZWFkZXIgKHRocm91Z2ggYW55IG9mIHRoZSBkaWN0IG9yIGxpc3QKK2ludGVyZmFjZXMgb2YgYE1lc3NhZ2VgKSwgdGhlIG5hbWUgYW5kIHZhbHVlIGFyZSBwYXNzZWQgdG8gdGhlCis6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlYCBtZXRob2Qgb2YgdGhlIFBvbGljeSB0bworb2J0YWluIHRoZSB2YWx1ZSByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24uCisKK1doZW4gYSBHZW5lcmF0b3IgcmVxdWVzdHMgYSBoZWFkZXIgZHVyaW5nIHNlcmlhbGl6YXRpb24sIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUKK3Bhc3NlZCB0byB0aGUgOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmZvbGRgIG1ldGhvZCBvZiB0aGUgUG9saWN5LCB3aGljaAorcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIGxpbmUgYnJlYWtzIGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZXMuICBUaGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgUG9saWN5IGNvbnRyb2wgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yCitub3QgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyBpcyBwZXJmb3JtZWQgb24gdGhlIGRhdGEgaW4gdGhlIGhlYWRlci4gIFRoZXJlIGlzCithbHNvIGEgOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmJpbmFyeV9mb2xkYCBtZXRob2QgZm9yIHVzZSBieSBnZW5lcmF0b3JzCit0aGF0IHByb2R1Y2UgYmluYXJ5IG91dHB1dCwgd2hpY2ggcmV0dXJucyB0aGUgZm9sZGVkIGhlYWRlciBhcyBiaW5hcnkgZGF0YSwKK3Bvc3NpYmx5IGZvbGRlZCBhdCBkaWZmZXJlbnQgcGxhY2VzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgc3RyaW5nIHdvdWxkIGJlLgorCisKK0hhbmRsaW5nIEJpbmFyeSBEYXRhCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBhbiBpZGVhbCB3b3JsZCBhbGwgbWVzc2FnZSBkYXRhIHdvdWxkIGNvbmZvcm0gdG8gdGhlIFJGQ3MsIG1lYW5pbmcgdGhhdCB0aGUKK3BhcnNlciBjb3VsZCBkZWNvZGUgdGhlIG1lc3NhZ2UgaW50byB0aGUgaWRlYWxpemVkIHVuaWNvZGUgbWVzc2FnZSB0aGF0IHRoZQorc2VuZGVyIG9yaWdpbmFsbHkgd3JvdGUuICBJbiB0aGUgcmVhbCB3b3JsZCwgdGhlIGVtYWlsIHBhY2thZ2UgbXVzdCBhbHNvIGJlCithYmxlIHRvIGRlYWwgd2l0aCBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMsIGluY2x1ZGluZyBtZXNzYWdlcyBjb250YWluaW5nCitub24tQVNDSUkgY2hhcmFjdGVycyB0aGF0IGVpdGhlciBoYXZlIG5vIGluZGljYXRlZCBjaGFyYWN0ZXIgc2V0IG9yIGFyZSBub3QKK3ZhbGlkIGNoYXJhY3RlcnMgaW4gdGhlIGluZGljYXRlZCBjaGFyYWN0ZXIgc2V0LgorCitTaW5jZSBlbWFpbCBtZXNzYWdlcyBhcmUgKnByaW1hcmlseSogdGV4dCBkYXRhLCBhbmQgb3BlcmF0aW9ucyBvbiBtZXNzYWdlIGRhdGEKK2FyZSBwcmltYXJpbHkgdGV4dCBvcGVyYXRpb25zIChleGNlcHQgZm9yIGJpbmFyeSBwYXlsb2FkcyBvZiBjb3Vyc2UpLCB0aGUgbW9kZWwKK3N0b3JlcyBhbGwgdGV4dCBkYXRhIGFzIHVuaWNvZGUgc3RyaW5ncy4gIFVuLWRlY29kYWJsZSBiaW5hcnkgaW5zaWRlIHRleHQKK2RhdGEgaXMgaGFuZGxlZCBieSB1c2luZyB0aGUgYHN1cnJvZ2F0ZWVzY2FwZWAgZXJyb3IgaGFuZGxlciBvZiB0aGUgQVNDSUkKK2NvZGVjLiAgQXMgd2l0aCB0aGUgYmluYXJ5IGZpbGVuYW1lcyB0aGUgZXJyb3IgaGFuZGxlciB3YXMgaW50cm9kdWNlZCB0bworaGFuZGxlLCB0aGlzIGFsbG93cyB0aGUgZW1haWwgcGFja2FnZSB0byAiY2FycnkiIHRoZSBiaW5hcnkgZGF0YSByZWNlaXZlZAorZHVyaW5nIHBhcnNpbmcgYWxvbmcgdW50aWwgdGhlIG91dHB1dCBzdGFnZSwgYXQgd2hpY2ggdGltZSBpdCBpcyByZWdlbmVyYXRlZAoraW4gaXRzIG9yaWdpbmFsIGZvcm0uCisKK1RoaXMgY2FycmllZCBiaW5hcnkgZGF0YSBpcyBhbG1vc3QgZW50aXJlbHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVGhlIG9uZQorcGxhY2Ugd2hlcmUgaXQgaXMgdmlzaWJsZSBpbiB0aGUgQVBJIGlzIGluIHRoZSAiaW50ZXJuYWwiIEFQSS4gIEEgUGFyc2VyIG11c3QKK2RvIHRoZSBgc3Vycm9nYXRlZXNjYXBlYCBlbmNvZGluZyBvZiBiaW5hcnkgaW5wdXQgZGF0YSwgYW5kIHBhc3MgdGhhdCBkYXRhIHRvCit0aGUgYXBwcm9wcmlhdGUgUG9saWN5IG1ldGhvZC4gIFRoZSAiaW50ZXJuYWwiIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBHZW5lcmF0b3IKK3RvIGFjY2VzcyBoZWFkZXIgdmFsdWVzIHByZXNlcnZlcyB0aGUgYHN1cnJvZ2F0ZWVzY2FwZWRgIGJ5dGVzLiAgQWxsIG90aGVyCitpbnRlcmZhY2VzIGNvbnZlcnQgdGhlIGJpbmFyeSBkYXRhIGVpdGhlciBiYWNrIGludG8gYnl0ZXMgb3IgaW50byBhIHNhZmUgZm9ybQorKGxvc2luZyBpbmZvcm1hdGlvbiBpbiBzb21lIGNhc2VzKS4KKworCitCYWNrd2FyZCBDb21wYXRpYmlsaXR5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuUG9saWN5LkNvbXBhdDMyYCBQb2xpY3kgcHJvdmlkZXMgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgd2l0aCB2ZXJzaW9uIDUuMSBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEl0IGRvZXMgdGhpcyB2aWEgdGhlCitmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZvdXIrMSBQb2xpY3kgbWV0aG9kcyBkZXNjcmliZWQgYWJvdmU6CisKK2hlYWRlcl9zb3VyY2VfcGFyc2UKKyAgICBTcGxpdHMgdGhlIGZpcnN0IGxpbmUgb24gdGhlIGNvbG9uIHRvIG9idGFpbiB0aGUgbmFtZSwgZGlzY2FyZHMgYW55IHNwYWNlcworICAgIGFmdGVyIHRoZSBjb2xvbiwgYW5kIGpvaW5zIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUgd2l0aCBhbGwgb2YgdGhlCisgICAgcmVtYWluaW5nIGxpbmVzLCBwcmVzZXJ2aW5nIHRoZSBsaW5lc2VwIGNoYXJhY3RlcnMgdG8gb2J0YWluIHRoZSB2YWx1ZS4KKyAgICBUcmFpbGluZyBjYXJyaWFnZSByZXR1cm4gYW5kL29yIGxpbmVmZWVkIGNoYXJhY3RlcnMgYXJlIHN0cmlwcGVkIGZyb20gdGhlCisgICAgcmVzdWx0aW5nIHZhbHVlIHN0cmluZy4KKworaGVhZGVyX3N0b3JlX3BhcnNlCisgICAgUmV0dXJucyB0aGUgbmFtZSBhbmQgdmFsdWUgZXhhY3RseSBhcyByZWNlaXZlZCBmcm9tIHRoZSBhcHBsaWNhdGlvbi4KKworaGVhZGVyX2ZldGNoX3BhcnNlCisgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGFueSBgc3Vycm9nYXRlZXNjYXBlZGAgYmluYXJ5IGRhdGEsIHJldHVybiB0aGUgdmFsdWUKKyAgICBhcyBhIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdCwgdXNpbmcgdGhlIGNoYXJhY3RlciBzZXQKKyAgICBgdW5rbm93bi04Yml0YC4gIE90aGVyd2lzZSBqdXN0IHJldHVybnMgdGhlIHZhbHVlLgorCitmb2xkCisgICAgVXNlcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCdzIGZvbGRpbmcgdG8gZm9sZCBoZWFkZXJzIGluIHRoZQorICAgIHNhbWUgd2F5IHRoZSBlbWFpbDUuMSBnZW5lcmF0b3IgZGlkLgorCitiaW5hcnlfZm9sZAorICAgIFNhbWUgYXMgZm9sZCwgYnV0IGVuY29kZXMgdG8gJ2FzY2lpJy4KKworCitOZXcgQWxnb3JpdGhtCistLS0tLS0tLS0tLS0tCisKK2hlYWRlcl9zb3VyY2VfcGFyc2UKKyAgICBTYW1lIGFzIGxlZ2FjeSBiZWhhdmlvci4KKworaGVhZGVyX3N0b3JlX3BhcnNlCisgICAgU2FtZSBhcyBsZWdhY3kgYmVoYXZpb3IuCisKK2hlYWRlcl9mZXRjaF9wYXJzZQorICAgIElmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IGEgaGVhZGVyIG9iamVjdCwgcmV0dXJucyBpdC4gIE90aGVyd2lzZSwgcGFyc2VzIHRoZQorICAgIHZhbHVlIHVzaW5nIHRoZSBuZXcgcGFyc2VyLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIG9iamVjdCBhcyB0aGUgdmFsdWUuCisgICAgYHN1cnJvZ2F0ZWVzY2FwZWRgIGJ5dGVzIGdldCB0dXJuZWQgaW50byB1bmljb2RlIHVua25vd24gY2hhcmFjdGVyIGNvZGUKKyAgICBwb2ludHMuCisKK2ZvbGQKKyAgICBVc2VzIHRoZSBuZXcgaGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCByZXNwZWN0aW5nIHRoZSBwb2xpY3kgc2V0dGluZ3MuCisgICAgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBhcmUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0IGZvcgorICAgIGBgY3RlX3R5cGU9N2JpdGBgIG9yIGBgOGJpdGBgLiAgUmV0dXJucyBhIHN0cmluZy4KKworICAgIEF0IHNvbWUgcG9pbnQgdGhlcmUgd2lsbCBhbHNvIGJlIGEgYGBjdGVfdHlwZT11bmljb2RlYGAsIGFuZCBmb3IgdGhhdAorICAgIHBvbGljeSBmb2xkIHdpbGwgc2VyaWFsaXplIHRoZSBpZGVhbGl6ZWQgdW5pY29kZSBtZXNzYWdlIHdpdGggUkZDLWxpa2UKKyAgICBmb2xkaW5nLCBjb252ZXJ0aW5nIGFueSBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGludG8gdGhlIHVuaWNvZGUKKyAgICB1bmtub3duIGNoYXJhY3RlciBnbHlwaC4KKworYmluYXJ5X2ZvbGQKKyAgICBVc2VzIHRoZSBuZXcgaGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCByZXNwZWN0aW5nIHRoZSBwb2xpY3kgc2V0dGluZ3MuCisgICAgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBhcmUgZW5jb2RlZCB1c2luZyB0aGUgYHVua25vd24tOGJpdGAgY2hhcnNldCBmb3IKKyAgICBgYGN0ZV90eXBlPTdiaXRgYCwgYW5kIGdldCB0dXJuZWQgYmFjayBpbnRvIGJ5dGVzIGZvciBgYGN0ZV90eXBlPThiaXRgYC4KKyAgICBSZXR1cm5zIGJ5dGVzLgorCisgICAgQXQgc29tZSBwb2ludCB0aGVyZSB3aWxsIGFsc28gYmUgYSBgYGN0ZV90eXBlPXVuaWNvZGVgYCwgYW5kIGZvciB0aGF0CisgICAgcG9saWN5IGJpbmFyeV9mb2xkIHdpbGwgc2VyaWFsaXplIHRoZSBtZXNzYWdlIGFjY29yZGluZyB0byA6cmZjOmBgNTMzNWBgLgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2Vycm9ycy5weSBiL0xpYi9lbWFpbC9lcnJvcnMucHkKaW5kZXggZDUyYTYyNC4uNzkxMjM5ZiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2Vycm9ycy5weQorKysgYi9MaWIvZW1haWwvZXJyb3JzLnB5CkBAIC01LDcgKzUsNiBAQAogIiIiZW1haWwgcGFja2FnZSBleGNlcHRpb24gY2xhc3Nlcy4iIiIKIAogCi0MCiBjbGFzcyBNZXNzYWdlRXJyb3IoRXhjZXB0aW9uKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBlcnJvcnMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuIiIiCiAKQEAgLTMwLDEyICsyOSwxMyBAQAogICAgICIiIkFuIGlsbGVnYWwgY2hhcnNldCB3YXMgZ2l2ZW4uIiIiCiAKIAotDAogIyBUaGVzZSBhcmUgcGFyc2luZyBkZWZlY3RzIHdoaWNoIHRoZSBwYXJzZXIgd2FzIGFibGUgdG8gd29yayBhcm91bmQuCi1jbGFzcyBNZXNzYWdlRGVmZWN0OgorY2xhc3MgTWVzc2FnZURlZmVjdChWYWx1ZUVycm9yKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBhIG1lc3NhZ2UgZGVmZWN0LiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmU9Tm9uZSk6CisgICAgICAgIGlmIGxpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKGxpbmUpCiAgICAgICAgIHNlbGYubGluZSA9IGxpbmUKIAogY2xhc3MgTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgpAQCAtNDQsMTQgKzQ0LDY0IEBACiBjbGFzcyBTdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiVGhlIGNsYWltZWQgc3RhcnQgYm91bmRhcnkgd2FzIG5ldmVyIGZvdW5kLiIiIgogCitjbGFzcyBDbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiQSBzdGFydCBib3VuZGFyeSB3YXMgZm91bmQsIGJ1dCBub3QgdGhlIGNvcnJlc3BvbmRpbmcgY2xvc2UgYm91bmRhcnkuIiIiCisKIGNsYXNzIEZpcnN0SGVhZGVyTGluZUlzQ29udGludWF0aW9uRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIkEgbWVzc2FnZSBoYWQgYSBjb250aW51YXRpb24gbGluZSBhcyBpdHMgZmlyc3QgaGVhZGVyIGxpbmUuIiIiCiAKIGNsYXNzIE1pc3BsYWNlZEVudmVsb3BlSGVhZGVyRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIkEgJ1VuaXgtZnJvbScgaGVhZGVyIHdhcyBmb3VuZCBpbiB0aGUgbWlkZGxlIG9mIGEgaGVhZGVyIGJsb2NrLiIiIgogCi1jbGFzcyBNYWxmb3JtZWRIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6Ci0gICAgIiIiRm91bmQgYSBoZWFkZXIgdGhhdCB3YXMgbWlzc2luZyBhIGNvbG9uLCBvciB3YXMgb3RoZXJ3aXNlIG1hbGZvcm1lZC4iIiIKK2NsYXNzIE1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkZvdW5kIGxpbmUgd2l0aCBubyBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIG5vIGNvbG9uIGJlZm9yZSBibGFuayBsaW5lLiIiIgorIyBYWFg6IGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGp1c3QgaW4gY2FzZSAoaXQgd2FzIG5ldmVyIGVtaXR0ZWQpLgorTWFsZm9ybWVkSGVhZGVyRGVmZWN0ID0gTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QKIAogY2xhc3MgTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIkEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEgbXVsdGlwYXJ0IGJ1dCBubyBzdWJwYXJ0cyB3ZXJlIGZvdW5kLiIiIgorCitjbGFzcyBJbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiQW4gaW52YWxpZCBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHdhcyBzZXQgb24gdGhlIG11bHRpcGFydCBpdHNlbGYuIiIiCisKK2NsYXNzIFVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiSGVhZGVyIGNvbnRhaW5lZCBieXRlcyB0aGF0IGNvdWxkIG5vdCBiZSBkZWNvZGVkIiIiCisKK2NsYXNzIEludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiImJhc2U2NCBlbmNvZGVkIHNlcXVlbmNlIGhhZCBhbiBpbmNvcnJlY3QgbGVuZ3RoIiIiCisKK2NsYXNzIEludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiImJhc2U2NCBlbmNvZGVkIHNlcXVlbmNlIGhhZCBjaGFyYWN0ZXJzIG5vdCBpbiBiYXNlNjQgYWxwaGFiZXQiIiIKKworIyBUaGVzZSBlcnJvcnMgYXJlIHNwZWNpZmljIHRvIGhlYWRlciBwYXJzaW5nLgorCitjbGFzcyBIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgYSBoZWFkZXIgZGVmZWN0LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprdykKKworY2xhc3MgSW52YWxpZEhlYWRlckRlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiIkhlYWRlciBpcyBub3QgdmFsaWQsIG1lc3NhZ2UgZ2l2ZXMgZGV0YWlscy4iIiIKKworY2xhc3MgSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJBIGhlYWRlciB0aGF0IG11c3QgaGF2ZSBhIHZhbHVlIGhhZCBub25lIiIiCisKK2NsYXNzIE5vblByaW50YWJsZURlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiIkFTQ0lJIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYXNjaWktcHJpbnRhYmxlIHJhbmdlIGZvdW5kIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbm9uX3ByaW50YWJsZXMpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5vbl9wcmludGFibGVzKQorICAgICAgICBzZWxmLm5vbl9wcmludGFibGVzID0gbm9uX3ByaW50YWJsZXMKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCJ0aGUgZm9sbG93aW5nIEFTQ0lJIG5vbi1wcmludGFibGVzIGZvdW5kIGluIGhlYWRlcjogIgorICAgICAgICAgICAgInt9Ii5mb3JtYXQoc2VsZi5ub25fcHJpbnRhYmxlcykpCisKK2NsYXNzIE9ic29sZXRlSGVhZGVyRGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIiSGVhZGVyIHVzZXMgc3ludGF4IGRlY2xhcmVkIG9ic29sZXRlIGJ5IFJGQyA1MzIyIiIiCisKK2NsYXNzIE5vbkFTQ0lJTG9jYWxQYXJ0RGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIibG9jYWxfcGFydCBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycyIiIgorICAgICMgVGhpcyBkZWZlY3Qgb25seSBvY2N1cnMgZHVyaW5nIHVuaWNvZGUgcGFyc2luZywgbm90IHdoZW4KKyAgICAjIHBhcnNpbmcgbWVzc2FnZXMgZGVjb2RlZCBmcm9tIGJpbmFyeS4KZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5IGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKaW5kZXggYWE4YTJmZi4uNTZmNTBkZiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKQEAgLTI1LDYgKzI1LDcgQEAKIAogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogCiBOTENSRSA9IHJlLmNvbXBpbGUoJ1xyXG58XHJ8XG4nKQogTkxDUkVfYm9sID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pJykKQEAgLTEyMCw5ICsxMjEsNiBAQAogICAgICAgICAjIFJldmVyc2UgYW5kIGluc2VydCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpbmVzLgogICAgICAgICBzZWxmLl9saW5lc1s6MF0gPSBsaW5lc1s6Oi0xXQogCi0gICAgZGVmIGlzX2Nsb3NlZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlZAotCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC0xMzcsOSArMTM1LDIyIEBACiBjbGFzcyBGZWVkUGFyc2VyOgogICAgICIiIkEgZmVlZC1zdHlsZSBwYXJzZXIgb2YgZW1haWwuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgX2ZhY3Rvcnk9bWVzc2FnZS5NZXNzYWdlKToKLSAgICAgICAgIiIiX2ZhY3RvcnkgaXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIHRvIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iaiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfZmFjdG9yeT1tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1jb21wYXQzMik6CisgICAgICAgICIiIl9mYWN0b3J5IGlzIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyB0byBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmoKKworICAgICAgICBUaGUgcG9saWN5IGtleXdvcmQgc3BlY2lmaWVzIGEgcG9saWN5IG9iamVjdCB0aGF0IGNvbnRyb2xzIGEgbnVtYmVyIG9mCisgICAgICAgIGFzcGVjdHMgb2YgdGhlIHBhcnNlcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeSBtYWludGFpbnMKKyAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IF9mYWN0b3J5CisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9mYWN0b3J5KHBvbGljeT1zZWxmLnBvbGljeSkKKyAgICAgICAgICAgIHNlbGYuX2ZhY3Rvcnlfa3dkcyA9IGxhbWJkYTogeydwb2xpY3knOiBzZWxmLnBvbGljeX0KKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICMgQXNzdW1lIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGZhY3RvcnkKKyAgICAgICAgICAgIHNlbGYuX2ZhY3Rvcnlfa3dkcyA9IGxhbWJkYToge30KICAgICAgICAgc2VsZi5faW5wdXQgPSBCdWZmZXJlZFN1YkZpbGUoKQogICAgICAgICBzZWxmLl9tc2dzdGFjayA9IFtdCiAgICAgICAgIHNlbGYuX3BhcnNlID0gc2VsZi5fcGFyc2VnZW4oKS5fX25leHRfXwpAQCAtMTcxLDExICsxODIsMTIgQEAKICAgICAgICAgIyBMb29rIGZvciBmaW5hbCBzZXQgb2YgZGVmZWN0cwogICAgICAgICBpZiByb290LmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCcgXAogICAgICAgICAgICAgICAgYW5kIG5vdCByb290LmlzX211bHRpcGFydCgpOgotICAgICAgICAgICAgcm9vdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KCkpCisgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KCkKKyAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qocm9vdCwgZGVmZWN0KQogICAgICAgICByZXR1cm4gcm9vdAogCiAgICAgZGVmIF9uZXdfbWVzc2FnZShzZWxmKToKLSAgICAgICAgbXNnID0gc2VsZi5fZmFjdG9yeSgpCisgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoKipzZWxmLl9mYWN0b3J5X2t3ZHMoKSkKICAgICAgICAgaWYgc2VsZi5fY3VyIGFuZCBzZWxmLl9jdXIuZ2V0X2NvbnRlbnRfdHlwZSgpID09ICdtdWx0aXBhcnQvZGlnZXN0JzoKICAgICAgICAgICAgIG1zZy5zZXRfZGVmYXVsdF90eXBlKCdtZXNzYWdlL3JmYzgyMicpCiAgICAgICAgIGlmIHNlbGYuX21zZ3N0YWNrOgpAQCAtMjA3LDYgKzIxOSw4IEBACiAgICAgICAgICAgICAgICAgIyAoaS5lLiBuZXdsaW5lKSwganVzdCB0aHJvdyBpdCBhd2F5LiBPdGhlcndpc2UgdGhlIGxpbmUgaXMKICAgICAgICAgICAgICAgICAjIHBhcnQgb2YgdGhlIGJvZHkgc28gcHVzaCBpdCBiYWNrLgogICAgICAgICAgICAgICAgIGlmIG5vdCBOTENSRS5tYXRjaChsaW5lKToKKyAgICAgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQudW5yZWFkbGluZShsaW5lKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChsaW5lKQpAQCAtMjg0LDcgKzI5OCw4IEBACiAgICAgICAgICAgICAgICAgIyBkZWZpbmVkIGEgYm91bmRhcnkuICBUaGF0J3MgYSBwcm9ibGVtIHdoaWNoIHdlJ2xsIGhhbmRsZSBieQogICAgICAgICAgICAgICAgICMgcmVhZGluZyBldmVyeXRoaW5nIHVudGlsIHRoZSBFT0YgYW5kIG1hcmtpbmcgdGhlIG1lc3NhZ2UgYXMKICAgICAgICAgICAgICAgICAjIGRlZmVjdGl2ZS4KLSAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCgpKQorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2lucHV0OgogICAgICAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKQEAgLTI5Myw2ICszMDgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9wYXlsb2FkKEVNUFRZU1RSSU5HLmpvaW4obGluZXMpKQogICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgYSB2YWxpZCBjb250ZW50IHR5cGUgd2FzIHNwZWNpZmllZCBwZXIgUkZDIDIwNDU6Ni40LgorICAgICAgICAgICAgaWYgKHNlbGYuX2N1ci5nZXQoJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnLCAnOGJpdCcpLmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgbm90IGluICgnN2JpdCcsICc4Yml0JywgJ2JpbmFyeScpKToKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuSW52YWxpZE11bHRpcGFydENvbnRlbnRUcmFuc2ZlckVuY29kaW5nRGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgIyBDcmVhdGUgYSBsaW5lIG1hdGNoIHByZWRpY2F0ZSB3aGljaCBtYXRjaGVzIHRoZSBpbnRlci1wYXJ0CiAgICAgICAgICAgICAjIGJvdW5kYXJ5IGFzIHdlbGwgYXMgdGhlIGVuZC1vZi1tdWx0aXBhcnQgYm91bmRhcnkuICBEb24ndCBwdXNoCiAgICAgICAgICAgICAjIHRoaXMgb250byB0aGUgaW5wdXQgc3RyZWFtIHVudGlsIHdlJ3ZlIHNjYW5uZWQgcGFzdCB0aGUKQEAgLTMwNCw2ICszMjQsNyBAQAogICAgICAgICAgICAgY2FwdHVyaW5nX3ByZWFtYmxlID0gVHJ1ZQogICAgICAgICAgICAgcHJlYW1ibGUgPSBbXQogICAgICAgICAgICAgbGluZXNlcCA9IEZhbHNlCisgICAgICAgICAgICBjbG9zZV9ib3VuZGFyeV9zZWVuID0gRmFsc2UKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2lucHV0LnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKQEAgLTMxOCw2ICszMzksNyBAQAogICAgICAgICAgICAgICAgICAgICAjIHRoZSBjbG9zaW5nIGJvdW5kYXJ5LCB0aGVuIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBlcGlsb2d1ZSB3aXRoIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSBiZWxvdykuCiAgICAgICAgICAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdlbmQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2JvdW5kYXJ5X3NlZW4gPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2VwID0gbW8uZ3JvdXAoJ2xpbmVzZXAnKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgIyBXZSBzYXcgYW4gaW50ZXItcGFydCBib3VuZGFyeS4gIFdlcmUgd2UgaW4gdGhlIHByZWFtYmxlPwpAQCAtMzg2LDkgKzQwOCw5IEBACiAgICAgICAgICAgICAjIFdlJ3ZlIHNlZW4gZWl0aGVyIHRoZSBFT0Ygb3IgdGhlIGVuZCBib3VuZGFyeS4gIElmIHdlJ3JlIHN0aWxsCiAgICAgICAgICAgICAjIGNhcHR1cmluZyB0aGUgcHJlYW1ibGUsIHdlIG5ldmVyIHNhdyB0aGUgc3RhcnQgYm91bmRhcnkuICBOb3RlCiAgICAgICAgICAgICAjIHRoYXQgYXMgYSBkZWZlY3QgYW5kIHN0b3JlIHRoZSBjYXB0dXJlZCB0ZXh0IGFzIHRoZSBwYXlsb2FkLgotICAgICAgICAgICAgIyBFdmVyeXRoaW5nIGZyb20gaGVyZSB0byB0aGUgRU9GIGlzIGVwaWxvZ3VlLgogICAgICAgICAgICAgaWYgY2FwdHVyaW5nX3ByZWFtYmxlOgotICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KCkpCisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3BheWxvYWQoRU1QVFlTVFJJTkcuam9pbihwcmVhbWJsZSkpCiAgICAgICAgICAgICAgICAgZXBpbG9ndWUgPSBbXQogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2lucHV0OgpAQCAtMzk3LDggKzQxOSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZXBpbG9ndWUgPSBFTVBUWVNUUklORy5qb2luKGVwaWxvZ3VlKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgIyBJZiB0aGUgZW5kIGJvdW5kYXJ5IGVuZGVkIGluIGEgbmV3bGluZSwgd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUKLSAgICAgICAgICAgICMgdGhlIGVwaWxvZ3VlIGlzbid0IE5vbmUKKyAgICAgICAgICAgICMgSWYgd2UncmUgbm90IHByb2Nlc3NpbmcgdGhlIHByZWFtYmxlLCB0aGVuIHdlIG1pZ2h0IGhhdmUgc2VlbgorICAgICAgICAgICAgIyBFT0Ygd2l0aG91dCBzZWVpbmcgdGhhdCBlbmQgYm91bmRhcnkuLi50aGF0IGlzIGFsc28gYSBkZWZlY3QuCisgICAgICAgICAgICBpZiBub3QgY2xvc2VfYm91bmRhcnlfc2VlbjoKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuQ2xvc2VCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgIyBFdmVyeXRoaW5nIGZyb20gaGVyZSB0byB0aGUgRU9GIGlzIGVwaWxvZ3VlLiAgSWYgdGhlIGVuZCBib3VuZGFyeQorICAgICAgICAgICAgIyBlbmRlZCBpbiBhIG5ld2xpbmUsIHdlJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBlcGlsb2d1ZSBpc24ndAorICAgICAgICAgICAgIyBOb25lCiAgICAgICAgICAgICBpZiBsaW5lc2VwOgogICAgICAgICAgICAgICAgIGVwaWxvZ3VlID0gWycnXQogICAgICAgICAgICAgZWxzZToKQEAgLTQ0MCwxNCArNDY5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICMgaXMgaWxsZWdhbCwgc28gbGV0J3Mgbm90ZSB0aGUgZGVmZWN0LCBzdG9yZSB0aGUgaWxsZWdhbAogICAgICAgICAgICAgICAgICAgICAjIGxpbmUsIGFuZCBpZ25vcmUgaXQgZm9yIHB1cnBvc2VzIG9mIGhlYWRlcnMuCiAgICAgICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdChsaW5lKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGxhc3R2YWx1ZS5hcHBlbmQobGluZSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgbGFzdGhlYWRlcjoKLSAgICAgICAgICAgICAgICAjIFhYWCByZWNvbnNpZGVyIHRoZSBqb2luaW5nIG9mIGZvbGRlZCBsaW5lcwotICAgICAgICAgICAgICAgIGxoZHIgPSBFTVBUWVNUUklORy5qb2luKGxhc3R2YWx1ZSlbOi0xXS5yc3RyaXAoJ1xyXG4nKQotICAgICAgICAgICAgICAgIHNlbGYuX2N1cltsYXN0aGVhZGVyXSA9IGxoZHIKKyAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3Jhdygqc2VsZi5wb2xpY3kuaGVhZGVyX3NvdXJjZV9wYXJzZShsYXN0dmFsdWUpKQogICAgICAgICAgICAgICAgIGxhc3RoZWFkZXIsIGxhc3R2YWx1ZSA9ICcnLCBbXQogICAgICAgICAgICAgIyBDaGVjayBmb3IgZW52ZWxvcGUgaGVhZGVyLCBpLmUuIHVuaXgtZnJvbQogICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdGcm9tICcpOgpAQCAtNDcxLDE5ICs0OTgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICMgU3BsaXQgdGhlIGxpbmUgb24gdGhlIGNvbG9uIHNlcGFyYXRpbmcgZmllbGQgbmFtZSBmcm9tIHZhbHVlLgorICAgICAgICAgICAgIyBUaGVyZSB3aWxsIGFsd2F5cyBiZSBhIGNvbG9uLCBiZWNhdXNlIGlmIHRoZXJlIHdhc24ndCB0aGUgcGFydCBvZgorICAgICAgICAgICAgIyB0aGUgcGFyc2VyIHRoYXQgY2FsbHMgdXMgd291bGQgaGF2ZSBzdGFydGVkIHBhcnNpbmcgdGhlIGJvZHkuCiAgICAgICAgICAgICBpID0gbGluZS5maW5kKCc6JykKLSAgICAgICAgICAgIGlmIGkgPCAwOgotICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NYWxmb3JtZWRIZWFkZXJEZWZlY3QobGluZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBhc3NlcnQgaT4wLCAiX3BhcnNlX2hlYWRlcnMgZmVkIGxpbmUgd2l0aCBubyA6IGFuZCBubyBsZWFkaW5nIFdTIgogICAgICAgICAgICAgbGFzdGhlYWRlciA9IGxpbmVbOmldCi0gICAgICAgICAgICBsYXN0dmFsdWUgPSBbbGluZVtpKzE6XS5sc3RyaXAoKV0KKyAgICAgICAgICAgIGxhc3R2YWx1ZSA9IFtsaW5lXQogICAgICAgICAjIERvbmUgd2l0aCBhbGwgdGhlIGxpbmVzLCBzbyBoYW5kbGUgdGhlIGxhc3QgaGVhZGVyLgogICAgICAgICBpZiBsYXN0aGVhZGVyOgotICAgICAgICAgICAgIyBYWFggcmVjb25zaWRlciB0aGUgam9pbmluZyBvZiBmb2xkZWQgbGluZXMKLSAgICAgICAgICAgIHNlbGYuX2N1cltsYXN0aGVhZGVyXSA9IEVNUFRZU1RSSU5HLmpvaW4obGFzdHZhbHVlKS5yc3RyaXAoJ1xyXG4nKQorICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9yYXcoKnNlbGYucG9saWN5LmhlYWRlcl9zb3VyY2VfcGFyc2UobGFzdHZhbHVlKSkKIAotDAorCiBjbGFzcyBCeXRlc0ZlZWRQYXJzZXIoRmVlZFBhcnNlcik6CiAgICAgIiIiTGlrZSBGZWVkUGFyc2VyLCBidXQgZmVlZCBhY2NlcHRzIGJ5dGVzLiIiIgogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5IGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQppbmRleCBjNmJmYjcwLi44OTlhZGJjIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CisrKyBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKQEAgLTEzLDggKzEzLDEwIEBACiBpbXBvcnQgd2FybmluZ3MKIAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8KK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGVtYWlsLmhlYWRlciBpbXBvcnQgSGVhZGVyCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCitpbXBvcnQgZW1haWwuY2hhcnNldCBhcyBfY2hhcnNldAogCiBVTkRFUlNDT1JFID0gJ18nCiBOTCA9ICdcbicgICMgWFhYOiBubyBsb25nZXIgdXNlZCBieSB0aGUgY29kZSBiZWxvdy4KQEAgLTMzLDcgKzM1LDggQEAKICAgICAjIFB1YmxpYyBpbnRlcmZhY2UKICAgICAjCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLAorICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSB0aGUgZ2VuZXJhdG9yIGZvciBtZXNzYWdlIGZsYXR0ZW5pbmcuCiAKICAgICAgICAgb3V0ZnAgaXMgdGhlIG91dHB1dCBmaWxlLWxpa2Ugb2JqZWN0IGZvciB3cml0aW5nIHRoZSBtZXNzYWdlIHRvLiAgSXQKQEAgLTQ5LDE2ICs1MiwyMiBAQAogICAgICAgICBkZWZpbmVkIGluIHRoZSBIZWFkZXIgY2xhc3MuICBTZXQgbWF4aGVhZGVybGVuIHRvIHplcm8gdG8gZGlzYWJsZQogICAgICAgICBoZWFkZXIgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpCiAgICAgICAgIGJ5IFJGQyAyODIyLgorCisgICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKKyAgICAgICAgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9mcCA9IG91dGZwCiAgICAgICAgIHNlbGYuX21hbmdsZV9mcm9tXyA9IG1hbmdsZV9mcm9tXwotICAgICAgICBzZWxmLl9tYXhoZWFkZXJsZW4gPSBtYXhoZWFkZXJsZW4KKyAgICAgICAgc2VsZi5tYXhoZWFkZXJsZW4gPSBtYXhoZWFkZXJsZW4KKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzKToKICAgICAgICAgIyBKdXN0IGRlbGVnYXRlIHRvIHRoZSBmaWxlIG9iamVjdAogICAgICAgICBzZWxmLl9mcC53cml0ZShzKQogCi0gICAgZGVmIGZsYXR0ZW4oc2VsZiwgbXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD0nXG4nKToKKyAgICBkZWYgZmxhdHRlbihzZWxmLCBtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpOgogICAgICAgICByIiIiUHJpbnQgdGhlIG1lc3NhZ2Ugb2JqZWN0IHRyZWUgcm9vdGVkIGF0IG1zZyB0byB0aGUgb3V0cHV0IGZpbGUKICAgICAgICAgc3BlY2lmaWVkIHdoZW4gdGhlIEdlbmVyYXRvciBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KIApAQCAtNzAsMjkgKzc5LDQ3IEBACiAgICAgICAgIE5vdGUgdGhhdCBmb3Igc3Vib2JqZWN0cywgbm8gRnJvbV8gbGluZSBpcyBwcmludGVkLgogCiAgICAgICAgIGxpbmVzZXAgc3BlY2lmaWVzIHRoZSBjaGFyYWN0ZXJzIHVzZWQgdG8gaW5kaWNhdGUgYSBuZXcgbGluZSBpbgotICAgICAgICB0aGUgb3V0cHV0LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIG1vc3QgdXNlZnVsIGZvciB0eXBpY2FsCi0gICAgICAgIFB5dGhvbiBhcHBsaWNhdGlvbnMsIGJ1dCBpdCBjYW4gYmUgc2V0IHRvIFxyXG4gdG8gcHJvZHVjZSBSRkMtY29tcGxpYW50Ci0gICAgICAgIGxpbmUgc2VwYXJhdG9ycyB3aGVuIG5lZWRlZC4KKyAgICAgICAgdGhlIG91dHB1dC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGRldGVybWluZWQgYnkgdGhlIHBvbGljeS4KIAogICAgICAgICAiIiIKICAgICAgICAgIyBXZSB1c2UgdGhlIF9YWFggY29uc3RhbnRzIGZvciBvcGVyYXRpbmcgb24gZGF0YSB0aGF0IGNvbWVzIGRpcmVjdGx5CiAgICAgICAgICMgZnJvbSB0aGUgbXNnLCBhbmQgX2VuY29kZWRfWFhYIGNvbnN0YW50cyBmb3Igb3BlcmF0aW5nIG9uIGRhdGEgdGhhdAogICAgICAgICAjIGhhcyBhbHJlYWR5IGJlZW4gY29udmVydGVkICh0byBieXRlcyBpbiB0aGUgQnl0ZXNHZW5lcmF0b3IpIGFuZAogICAgICAgICAjIGluc2VydGVkIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLgotICAgICAgICBzZWxmLl9OTCA9IGxpbmVzZXAKLSAgICAgICAgc2VsZi5fZW5jb2RlZF9OTCA9IHNlbGYuX2VuY29kZShsaW5lc2VwKQorICAgICAgICBwb2xpY3kgPSBtc2cucG9saWN5IGlmIHNlbGYucG9saWN5IGlzIE5vbmUgZWxzZSBzZWxmLnBvbGljeQorICAgICAgICBpZiBsaW5lc2VwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5LmNsb25lKGxpbmVzZXA9bGluZXNlcCkKKyAgICAgICAgaWYgc2VsZi5tYXhoZWFkZXJsZW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwb2xpY3kgPSBwb2xpY3kuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPXNlbGYubWF4aGVhZGVybGVuKQorICAgICAgICBzZWxmLl9OTCA9IHBvbGljeS5saW5lc2VwCisgICAgICAgIHNlbGYuX2VuY29kZWRfTkwgPSBzZWxmLl9lbmNvZGUoc2VsZi5fTkwpCiAgICAgICAgIHNlbGYuX0VNUFRZID0gJycKICAgICAgICAgc2VsZi5fZW5jb2RlZF9FTVRQWSA9IHNlbGYuX2VuY29kZSgnJykKLSAgICAgICAgaWYgdW5peGZyb206Ci0gICAgICAgICAgICB1ZnJvbSA9IG1zZy5nZXRfdW5peGZyb20oKQotICAgICAgICAgICAgaWYgbm90IHVmcm9tOgotICAgICAgICAgICAgICAgIHVmcm9tID0gJ0Zyb20gbm9ib2R5ICcgKyB0aW1lLmN0aW1lKHRpbWUudGltZSgpKQotICAgICAgICAgICAgc2VsZi53cml0ZSh1ZnJvbSArIHNlbGYuX05MKQotICAgICAgICBzZWxmLl93cml0ZShtc2cpCisgICAgICAgICMgQmVjYXVzZSB3ZSB1c2UgY2xvbmUgKGJlbG93KSB3aGVuIHdlIHJlY3Vyc2l2ZWx5IHByb2Nlc3MgbWVzc2FnZQorICAgICAgICAjIHN1YnBhcnRzLCBhbmQgYmVjYXVzZSBjbG9uZSB1c2VzIHRoZSBjb21wdXRlZCBwb2xpY3kgKG5vdCBOb25lKSwKKyAgICAgICAgIyBzdWJtZXNzYWdlcyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IHNldCB0byB0aGUgY29tcHV0ZWQgcG9saWN5IHdoZW4KKyAgICAgICAgIyB0aGV5IGFyZSBwcm9jZXNzZWQgYnkgdGhpcyBjb2RlLgorICAgICAgICBvbGRfZ2VuX3BvbGljeSA9IHNlbGYucG9saWN5CisgICAgICAgIG9sZF9tc2dfcG9saWN5ID0gbXNnLnBvbGljeQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgbXNnLnBvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgaWYgdW5peGZyb206CisgICAgICAgICAgICAgICAgdWZyb20gPSBtc2cuZ2V0X3VuaXhmcm9tKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgdWZyb206CisgICAgICAgICAgICAgICAgICAgIHVmcm9tID0gJ0Zyb20gbm9ib2R5ICcgKyB0aW1lLmN0aW1lKHRpbWUudGltZSgpKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUodWZyb20gKyBzZWxmLl9OTCkKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlKG1zZykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYucG9saWN5ID0gb2xkX2dlbl9wb2xpY3kKKyAgICAgICAgICAgIG1zZy5wb2xpY3kgPSBvbGRfbXNnX3BvbGljeQogCiAgICAgZGVmIGNsb25lKHNlbGYsIGZwKToKICAgICAgICAgIiIiQ2xvbmUgdGhpcyBnZW5lcmF0b3Igd2l0aCB0aGUgZXhhY3Qgc2FtZSBvcHRpb25zLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oZnAsIHNlbGYuX21hbmdsZV9mcm9tXywgc2VsZi5fbWF4aGVhZGVybGVuKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oZnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCAjIFVzZSBwb2xpY3kgc2V0dGluZywgd2hpY2ggd2UndmUgYWRqdXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLnBvbGljeSkKIAogICAgICMKICAgICAjIFByb3RlY3RlZCBpbnRlcmZhY2UgLSB1bmRvY3VtZW50ZWQgOy8KQEAgLTE2NywxNiArMTk0LDggQEAKICAgICAjCiAKICAgICBkZWYgX3dyaXRlX2hlYWRlcnMoc2VsZiwgbXNnKToKLSAgICAgICAgZm9yIGgsIHYgaW4gbXNnLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKCclczogJyAlIGgpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIEhlYWRlcik6Ci0gICAgICAgICAgICAgICAgc2VsZi53cml0ZSh2LmVuY29kZSgKLSAgICAgICAgICAgICAgICAgICAgbWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4sIGxpbmVzZXA9c2VsZi5fTkwpK3NlbGYuX05MKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEhlYWRlcidzIGdvdCBsb3RzIG9mIHNtYXJ0cywgc28gdXNlIGl0LgotICAgICAgICAgICAgICAgIGhlYWRlciA9IEhlYWRlcih2LCBtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9aCkKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGhlYWRlci5lbmNvZGUobGluZXNlcD1zZWxmLl9OTCkrc2VsZi5fTkwpCisgICAgICAgIGZvciBoLCB2IGluIG1zZy5yYXdfaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5wb2xpY3kuZm9sZChoLCB2KSkKICAgICAgICAgIyBBIGJsYW5rIGxpbmUgYWx3YXlzIHNlcGFyYXRlcyBoZWFkZXJzIGZyb20gYm9keQogICAgICAgICBzZWxmLndyaXRlKHNlbGYuX05MKQogCkBAIC0yNjUsMTIgKzI4NCwxMiBAQAogICAgICAgICAjIFRoZSBjb250ZW50cyBvZiBzaWduZWQgcGFydHMgaGFzIHRvIHN0YXkgdW5tb2RpZmllZCBpbiBvcmRlciB0byBrZWVwCiAgICAgICAgICMgdGhlIHNpZ25hdHVyZSBpbnRhY3QgcGVyIFJGQzE4NDcgMi4xLCBzbyB3ZSBkaXNhYmxlIGhlYWRlciB3cmFwcGluZy4KICAgICAgICAgIyBSRE06IFRoaXMgaXNuJ3QgZW5vdWdoIHRvIGNvbXBsZXRlbHkgcHJlc2VydmUgdGhlIHBhcnQsIGJ1dCBpdCBoZWxwcy4KLSAgICAgICAgb2xkX21heGhlYWRlcmxlbiA9IHNlbGYuX21heGhlYWRlcmxlbgorICAgICAgICBwID0gc2VsZi5wb2xpY3kKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwLmNsb25lKG1heF9saW5lX2xlbmd0aD0wKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9tYXhoZWFkZXJsZW4gPSAwCiAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfbXVsdGlwYXJ0KG1zZykKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX21heGhlYWRlcmxlbiA9IG9sZF9tYXhoZWFkZXJsZW4KKyAgICAgICAgICAgIHNlbGYucG9saWN5ID0gcAogCiAgICAgZGVmIF9oYW5kbGVfbWVzc2FnZV9kZWxpdmVyeV9zdGF0dXMoc2VsZiwgbXNnKToKICAgICAgICAgIyBXZSBjYW4ndCBqdXN0IHdyaXRlIHRoZSBoZWFkZXJzIGRpcmVjdGx5IHRvIHNlbGYncyBmaWxlIG9iamVjdApAQCAtMzA1LDEwICszMjQsMTIgQEAKICAgICAgICAgIyBtZXNzYWdlL3JmYzgyMi4gIFN1Y2ggbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBieSwgZm9yIGV4YW1wbGUsCiAgICAgICAgICMgR3JvdXB3aXNlIHdoZW4gZm9yd2FyZGluZyB1bmFkb3JuZWQgbWVzc2FnZXMuICAoSXNzdWUgNzk3MC4pICBTbwogICAgICAgICAjIGluIHRoYXQgY2FzZSB3ZSBqdXN0IGVtaXQgdGhlIHN0cmluZyBib2R5LgotICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKCkKKyAgICAgICAgcGF5bG9hZCA9IG1zZy5fcGF5bG9hZAogICAgICAgICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIGxpc3QpOgogICAgICAgICAgICAgZy5mbGF0dGVuKG1zZy5nZXRfcGF5bG9hZCgwKSwgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9c2VsZi5fTkwpCiAgICAgICAgICAgICBwYXlsb2FkID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fZW5jb2RlKHBheWxvYWQpCiAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHBheWxvYWQpCiAKICAgICAjIFRoaXMgdXNlZCB0byBiZSBhIG1vZHVsZSBsZXZlbCBmdW5jdGlvbjsgd2UgdXNlIGEgY2xhc3NtZXRob2QgZm9yIHRoaXMKQEAgLTM0NCw3ICszNjUsMTAgQEAKIAogICAgIEZ1bmN0aW9uYWxseSBpZGVudGljYWwgdG8gdGhlIGJhc2UgR2VuZXJhdG9yIGV4Y2VwdCB0aGF0IHRoZSBvdXRwdXQgaXMKICAgICBieXRlcyBhbmQgbm90IHN0cmluZy4gIFdoZW4gc3Vycm9nYXRlcyB3ZXJlIHVzZWQgaW4gdGhlIGlucHV0IHRvIGVuY29kZQotICAgIGJ5dGVzLCB0aGVzZSBhcmUgZGVjb2RlZCBiYWNrIHRvIGJ5dGVzIGZvciBvdXRwdXQuCisgICAgYnl0ZXMsIHRoZXNlIGFyZSBkZWNvZGVkIGJhY2sgdG8gYnl0ZXMgZm9yIG91dHB1dC4gIElmIHRoZSBwb2xpY3kgaGFzCisgICAgY3RlX3R5cGUgc2V0IHRvIDdiaXQsIHRoZW4gdGhlIG1lc3NhZ2UgaXMgdHJhbnNmb3JtZWQgc3VjaCB0aGF0IHRoZQorICAgIG5vbi1BU0NJSSBieXRlcyBhcmUgcHJvcGVybHkgY29udGVudCB0cmFuc2ZlciBlbmNvZGVkLCB1c2luZyB0aGUgY2hhcnNldAorICAgIHVua25vd24tOGJpdC4KIAogICAgIFRoZSBvdXRmcCBvYmplY3QgbXVzdCBhY2NlcHQgYnl0ZXMgaW4gaXRzIHdyaXRlIG1ldGhvZC4KICAgICAiIiIKQEAgLTM2NSwyMyArMzg5LDggQEAKICAgICBkZWYgX3dyaXRlX2hlYWRlcnMoc2VsZiwgbXNnKToKICAgICAgICAgIyBUaGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIHZlcnNpb24sIGV4Y2VwdCBmb3IgaGFuZGxpbmcKICAgICAgICAgIyBzdHJpbmdzIHdpdGggOGJpdCBieXRlcy4KLSAgICAgICAgZm9yIGgsIHYgaW4gbXNnLl9oZWFkZXJzOgotICAgICAgICAgICAgc2VsZi53cml0ZSgnJXM6ICcgJSBoKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBIZWFkZXIpOgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUodi5lbmNvZGUobWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4pK3NlbGYuX05MKQotICAgICAgICAgICAgZWxpZiBfaGFzX3N1cnJvZ2F0ZXModik6Ci0gICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIHJhdyA4Yml0IGRhdGEgaW4gYSBieXRlIHN0cmluZywgd2UgaGF2ZSBubyBpZGVhCi0gICAgICAgICAgICAgICAgIyB3aGF0IHRoZSBlbmNvZGluZyBpcy4gIFRoZXJlIGlzIG5vIHNhZmUgd2F5IHRvIHNwbGl0IHRoaXMKLSAgICAgICAgICAgICAgICAjIHN0cmluZy4gIElmIGl0J3MgYXNjaWktc3Vic2V0LCB0aGVuIHdlIGNvdWxkIGRvIGEgbm9ybWFsCi0gICAgICAgICAgICAgICAgIyBhc2NpaSBzcGxpdCwgYnV0IGlmIGl0J3MgbXVsdGlieXRlIHRoZW4gd2UgY291bGQgYnJlYWsgdGhlCi0gICAgICAgICAgICAgICAgIyBzdHJpbmcuICBUaGVyZSdzIG5vIHdheSB0byBrbm93IHNvIHRoZSBsZWFzdCBoYXJtIHNlZW1zIHRvCi0gICAgICAgICAgICAgICAgIyBiZSB0byBub3Qgc3BsaXQgdGhlIHN0cmluZyBhbmQgcmlzayBpdCBiZWluZyB0b28gbG9uZy4KLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHYrTkwpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgSGVhZGVyJ3MgZ290IGxvdHMgb2Ygc21hcnRzIGFuZCB0aGlzIHN0cmluZyBpcyBzYWZlLi4uCi0gICAgICAgICAgICAgICAgaGVhZGVyID0gSGVhZGVyKHYsIG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1oKQotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoaGVhZGVyLmVuY29kZShsaW5lc2VwPXNlbGYuX05MKStzZWxmLl9OTCkKKyAgICAgICAgZm9yIGgsIHYgaW4gbXNnLnJhd19pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc2VsZi5wb2xpY3kuZm9sZF9iaW5hcnkoaCwgdikpCiAgICAgICAgICMgQSBibGFuayBsaW5lIGFsd2F5cyBzZXBhcmF0ZXMgaGVhZGVycyBmcm9tIGJvZHkKICAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCkKIApAQCAtMzkwLDcgKzM5OSw3IEBACiAgICAgICAgICMganVzdCB3cml0ZSBpdCBiYWNrIG91dC4KICAgICAgICAgaWYgbXNnLl9wYXlsb2FkIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKG1zZy5fcGF5bG9hZCk6CisgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyhtc2cuX3BheWxvYWQpIGFuZCBub3Qgc2VsZi5wb2xpY3kuY3RlX3R5cGU9PSc3Yml0JzoKICAgICAgICAgICAgIGlmIHNlbGYuX21hbmdsZV9mcm9tXzoKICAgICAgICAgICAgICAgICBtc2cuX3BheWxvYWQgPSBmY3JlLnN1YigiPkZyb20gIiwgbXNnLl9wYXlsb2FkKQogICAgICAgICAgICAgc2VsZi53cml0ZShtc2cuX3BheWxvYWQpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVyLnB5IGIvTGliL2VtYWlsL2hlYWRlci5weQppbmRleCAzMjUwZDM2Li5hODkyMTlkIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVyLnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXIucHkKQEAgLTQwLDcgKzQwLDYgQEAKICAgXD8gICAgICAgICAgICAgICAgICAgICMgbGl0ZXJhbCA/CiAgICg/UDxlbmNvZGVkPi4qPykgICAgICAjIG5vbi1ncmVlZHkgdXAgdG8gdGhlIG5leHQgPz0gaXMgdGhlIGVuY29kZWQgc3RyaW5nCiAgIFw/PSAgICAgICAgICAgICAgICAgICAjIGxpdGVyYWwgPz0KLSAgKD89WyBcdF18JCkgICAgICAgICAgICMgd2hpdGVzcGFjZSBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKICAgJycnLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSB8IHJlLk1VTFRJTElORSkKIAogIyBGaWVsZCBuYW1lIHJlZ2V4cCwgaW5jbHVkaW5nIHRyYWlsaW5nIGNvbG9uLCBidXQgbm90IHNlcGFyYXRpbmcgd2hpdGVzcGFjZSwKQEAgLTg2LDggKzg1LDEyIEBACiAgICAgd29yZHMgPSBbXQogICAgIGZvciBsaW5lIGluIGhlYWRlci5zcGxpdGxpbmVzKCk6CiAgICAgICAgIHBhcnRzID0gZWNyZS5zcGxpdChsaW5lKQorICAgICAgICBmaXJzdCA9IFRydWUKICAgICAgICAgd2hpbGUgcGFydHM6Ci0gICAgICAgICAgICB1bmVuY29kZWQgPSBwYXJ0cy5wb3AoMCkuc3RyaXAoKQorICAgICAgICAgICAgdW5lbmNvZGVkID0gcGFydHMucG9wKDApCisgICAgICAgICAgICBpZiBmaXJzdDoKKyAgICAgICAgICAgICAgICB1bmVuY29kZWQgPSB1bmVuY29kZWQubHN0cmlwKCkKKyAgICAgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCiAgICAgICAgICAgICBpZiB1bmVuY29kZWQ6CiAgICAgICAgICAgICAgICAgd29yZHMuYXBwZW5kKCh1bmVuY29kZWQsIE5vbmUsIE5vbmUpKQogICAgICAgICAgICAgaWYgcGFydHM6CkBAIC05NSw2ICs5OCwxNiBAQAogICAgICAgICAgICAgICAgIGVuY29kaW5nID0gcGFydHMucG9wKDApLmxvd2VyKCkKICAgICAgICAgICAgICAgICBlbmNvZGVkID0gcGFydHMucG9wKDApCiAgICAgICAgICAgICAgICAgd29yZHMuYXBwZW5kKChlbmNvZGVkLCBlbmNvZGluZywgY2hhcnNldCkpCisgICAgIyBOb3cgbG9vcCBvdmVyIHdvcmRzIGFuZCByZW1vdmUgd29yZHMgdGhhdCBjb25zaXN0IG9mIHdoaXRlc3BhY2UKKyAgICAjIGJldHdlZW4gdHdvIGVuY29kZWQgc3RyaW5ncy4KKyAgICBpbXBvcnQgc3lzCisgICAgZHJvcGxpc3QgPSBbXQorICAgIGZvciBuLCB3IGluIGVudW1lcmF0ZSh3b3Jkcyk6CisgICAgICAgIGlmIG4+MSBhbmQgd1sxXSBhbmQgd29yZHNbbi0yXVsxXSBhbmQgd29yZHNbbi0xXVswXS5pc3NwYWNlKCk6CisgICAgICAgICAgICBkcm9wbGlzdC5hcHBlbmQobi0xKQorICAgIGZvciBkIGluIHJldmVyc2VkKGRyb3BsaXN0KToKKyAgICAgICAgZGVsIHdvcmRzW2RdCisKICAgICAjIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZGVjb2RlIGVhY2ggZW5jb2RlZCB3b3JkIGJ5IGFwcGx5aW5nIHRoZSByZXZlcnNlCiAgICAgIyBiYXNlNjQgb3IgcXVvcHJpIHRyYW5zZm9ybWF0aW9uLiAgZGVjb2RlZF93b3JkcyBpcyBub3cgYSBsaXN0IG9mIHRoZQogICAgICMgZm9ybSAoZGVjb2RlZF93b3JkLCBjaGFyc2V0KS4KQEAgLTIxNywyMiArMjMwLDI3IEBACiAgICAgICAgIHNlbGYuX25vcm1hbGl6ZSgpCiAgICAgICAgIHVjaHVua3MgPSBbXQogICAgICAgICBsYXN0Y3MgPSBOb25lCisgICAgICAgIGxhc3RzcGFjZSA9IE5vbmUKICAgICAgICAgZm9yIHN0cmluZywgY2hhcnNldCBpbiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgICAjIFdlIG11c3QgcHJlc2VydmUgc3BhY2VzIGJldHdlZW4gZW5jb2RlZCBhbmQgbm9uLWVuY29kZWQgd29yZAogICAgICAgICAgICAgIyBib3VuZGFyaWVzLCB3aGljaCBtZWFucyBmb3IgdXMgd2UgbmVlZCB0byBhZGQgYSBzcGFjZSB3aGVuIHdlIGdvCiAgICAgICAgICAgICAjIGZyb20gYSBjaGFyc2V0IHRvIE5vbmUvdXMtYXNjaWksIG9yIGZyb20gTm9uZS91cy1hc2NpaSB0byBhCiAgICAgICAgICAgICAjIGNoYXJzZXQuICBPbmx5IGRvIHRoaXMgZm9yIHRoZSBzZWNvbmQgYW5kIHN1YnNlcXVlbnQgY2h1bmtzLgorICAgICAgICAgICAgIyBEb24ndCBhZGQgYSBzcGFjZSBpZiB0aGUgTm9uZS91cy1hc2NpaSBzdHJpbmcgYWxyZWFkeSBoYXMKKyAgICAgICAgICAgICMgYSBzcGFjZSAodHJhaWxpbmcgb3IgbGVhZGluZyBkZXBlbmRpbmcgb24gdHJhbnNpdGlvbikKICAgICAgICAgICAgIG5leHRjcyA9IGNoYXJzZXQKICAgICAgICAgICAgIGlmIG5leHRjcyA9PSBfY2hhcnNldC5VTktOT1dOOEJJVDoKICAgICAgICAgICAgICAgICBvcmlnaW5hbF9ieXRlcyA9IHN0cmluZy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICAgICAgc3RyaW5nID0gb3JpZ2luYWxfYnl0ZXMuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKICAgICAgICAgICAgIGlmIHVjaHVua3M6CisgICAgICAgICAgICAgICAgaGFzc3BhY2UgPSBzdHJpbmcgYW5kIHNlbGYuX25vbmN0ZXh0KHN0cmluZ1swXSkKICAgICAgICAgICAgICAgICBpZiBsYXN0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNzIGluIChOb25lLCAndXMtYXNjaWknKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNzIGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGhhc3NwYWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgdWNodW5rcy5hcHBlbmQoU1BBQ0UpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y3MgPSBOb25lCi0gICAgICAgICAgICAgICAgZWxpZiBuZXh0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKToKKyAgICAgICAgICAgICAgICBlbGlmIG5leHRjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpIGFuZCBub3QgbGFzdHNwYWNlOgogICAgICAgICAgICAgICAgICAgICB1Y2h1bmtzLmFwcGVuZChTUEFDRSkKKyAgICAgICAgICAgIGxhc3RzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWy0xXSkKICAgICAgICAgICAgIGxhc3RjcyA9IG5leHRjcwogICAgICAgICAgICAgdWNodW5rcy5hcHBlbmQoc3RyaW5nKQogICAgICAgICByZXR1cm4gRU1QVFlTVFJJTkcuam9pbih1Y2h1bmtzKQpAQCAtMjkxLDYgKzMwOSwxMSBAQAogICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBVVEY4CiAgICAgICAgIHNlbGYuX2NodW5rcy5hcHBlbmQoKHMsIGNoYXJzZXQpKQogCisgICAgZGVmIF9ub25jdGV4dChzZWxmLCBzKToKKyAgICAgICAgIiIiVHJ1ZSBpZiBzdHJpbmcgcyBpcyBub3QgYSBjdGV4dCBjaGFyYWN0ZXIgb2YgUkZDODIyLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHMuaXNzcGFjZSgpIG9yIHMgaW4gKCcoJywgJyknLCAnXFwnKQorCiAgICAgZGVmIGVuY29kZShzZWxmLCBzcGxpdGNoYXJzPSc7LCBcdCcsIG1heGxpbmVsZW49Tm9uZSwgbGluZXNlcD0nXG4nKToKICAgICAgICAgciIiIkVuY29kZSBhIG1lc3NhZ2UgaGVhZGVyIGludG8gYW4gUkZDLWNvbXBsaWFudCBmb3JtYXQuCiAKQEAgLTMzNCw3ICszNTcsMjAgQEAKICAgICAgICAgICAgIG1heGxpbmVsZW4gPSAxMDAwMDAwCiAgICAgICAgIGZvcm1hdHRlciA9IF9WYWx1ZUZvcm1hdHRlcihzZWxmLl9oZWFkZXJsZW4sIG1heGxpbmVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb250aW51YXRpb25fd3MsIHNwbGl0Y2hhcnMpCisgICAgICAgIGxhc3RjcyA9IE5vbmUKKyAgICAgICAgaGFzc3BhY2UgPSBsYXN0c3BhY2UgPSBOb25lCiAgICAgICAgIGZvciBzdHJpbmcsIGNoYXJzZXQgaW4gc2VsZi5fY2h1bmtzOgorICAgICAgICAgICAgaWYgaGFzc3BhY2UgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaGFzc3BhY2UgPSBzdHJpbmcgYW5kIHNlbGYuX25vbmN0ZXh0KHN0cmluZ1swXSkKKyAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgaWYgbGFzdGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNzcGFjZSBvciBjaGFyc2V0IG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQorICAgICAgICAgICAgICAgIGVsaWYgY2hhcnNldCBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpIGFuZCBub3QgbGFzdHNwYWNlOgorICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQorICAgICAgICAgICAgbGFzdHNwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbLTFdKQorICAgICAgICAgICAgbGFzdGNzID0gY2hhcnNldAorICAgICAgICAgICAgaGFzc3BhY2UgPSBGYWxzZQogICAgICAgICAgICAgbGluZXMgPSBzdHJpbmcuc3BsaXRsaW5lcygpCiAgICAgICAgICAgICBpZiBsaW5lczoKICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZmVlZCgnJywgbGluZXNbMF0sIGNoYXJzZXQpCkBAIC0zNTEsNiArMzg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZlZWQoZndzLCBzbGluZSwgY2hhcnNldCkKICAgICAgICAgICAgIGlmIGxlbihsaW5lcykgPiAxOgogICAgICAgICAgICAgICAgIGZvcm1hdHRlci5uZXdsaW5lKCkKKyAgICAgICAgaWYgc2VsZi5fY2h1bmtzOgogICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKICAgICAgICAgdmFsdWUgPSBmb3JtYXR0ZXIuX3N0cihsaW5lc2VwKQogICAgICAgICBpZiBfZW1iZWRlZF9oZWFkZXIuc2VhcmNoKHZhbHVlKToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmFlOTUwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC0wLDAgKzEsNTgzIEBACisiIiJSZXByZXNlbnRpbmcgYW5kIG1hbmlwdWxhdGluZyBlbWFpbCBoZWFkZXJzIHZpYSBjdXN0b20gb2JqZWN0cy4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIEhlYWRlclJlZ2lzdHJ5IEFQSS4KK1RoZSBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpZ25lZCB0byBmbGV4aWJseSBmb2xsb3cgUkZDNTMyMiBydWxlcy4KKworRXZlbnR1YWxseSBIZWFkZXJSZWdpc3RyeSB3aWxsIGJlIGEgcHVibGljIEFQSSwgYnV0IGl0IGlzbid0IHlldCwKK2FuZCB3aWxsIHByb2JhYmx5IGNoYW5nZSBzb21lIGJlZm9yZSB0aGF0IGhhcHBlbnMuCisKKyIiIgorCitmcm9tIGVtYWlsIGltcG9ydCB1dGlscworZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBfaGVhZGVyX3ZhbHVlX3BhcnNlciBhcyBwYXJzZXIKKworY2xhc3MgQWRkcmVzczoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXNwbGF5X25hbWU9JycsIHVzZXJuYW1lPScnLCBkb21haW49JycsIGFkZHJfc3BlYz1Ob25lKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIG9iamVjdCByZXByZXNldGluZyBhIGZ1bGwgZW1haWwgYWRkcmVzcy4KKworICAgICAgICBBbiBhZGRyZXNzIGNhbiBoYXZlIGEgJ2Rpc3BsYXlfbmFtZScsIGEgJ3VzZXJuYW1lJywgYW5kIGEgJ2RvbWFpbicuICBJbgorICAgICAgICBhZGRpdGlvbiB0byBzcGVjaWZ5aW5nIHRoZSB1c2VybmFtZSBhbmQgZG9tYWluIHNlcGFyYXRlbHksIHRoZXkgbWF5IGJlCisgICAgICAgIHNwZWNpZmllZCB0b2dldGhlciBieSB1c2luZyB0aGUgYWRkcl9zcGVjIGtleXdvcmQgKmluc3RlYWQgb2YqIHRoZQorICAgICAgICB1c2VybmFtZSBhbmQgZG9tYWluIGtleXdvcmRzLiAgSWYgYW4gYWRkcl9zcGVjIHN0cmluZyBpcyBzcGVjaWZpZWQgaXQKKyAgICAgICAgbXVzdCBiZSBwcm9wZXJseSBxdW90ZWQgYWNjb3JkaW5nIHRvIFJGQyA1MzIyIHJ1bGVzOyBhbiBlcnJvciB3aWxsIGJlCisgICAgICAgIHJhaXNlZCBpZiBpdCBpcyBub3QuCisKKyAgICAgICAgQW4gQWRkcmVzcyBvYmplY3QgaGFzIGRpc3BsYXlfbmFtZSwgdXNlcm5hbWUsIGRvbWFpbiwgYW5kIGFkZHJfc3BlYworICAgICAgICBhdHRyaWJ1dGVzLCBhbGwgb2Ygd2hpY2ggYXJlIHJlYWQtb25seS4gIFRoZSBhZGRyX3NwZWMgYW5kIHRoZSBzdHJpbmcKKyAgICAgICAgdmFsdWUgb2YgdGhlIG9iamVjdCBhcmUgYm90aCBxdW90ZWQgYWNjb3JkaW5nIHRvIFJGQzUzMjIgcnVsZXMsIGJ1dAorICAgICAgICB3aXRob3V0IGFueSBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nLgorCisgICAgICAgICIiIgorICAgICAgICAjIFRoaXMgY2xhdXNlIHdpdGggaXRzIHBvdGVudGlhbCAncmFpc2UnIG1heSBvbmx5IGhhcHBlbiB3aGVuIGFuCisgICAgICAgICMgYXBwbGljYXRpb24gcHJvZ3JhbSBjcmVhdGVzIGFuIEFkZHJlc3Mgb2JqZWN0IHVzaW5nIGFuIGFkZHJfc3BlYworICAgICAgICAjIGtleXdvcmQuICBUaGUgZW1haWwgbGlicmFyeSBjb2RlIGl0c2VsZiBtdXN0IGFsd2F5cyBzdXBwbHkgdXNlcm5hbWUKKyAgICAgICAgIyBhbmQgZG9tYWluLgorICAgICAgICBpZiBhZGRyX3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiB1c2VybmFtZSBvciBkb21haW46CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhZGRyc3BlYyBzcGVjaWZpZWQgd2hlbiB1c2VybmFtZSBhbmQvb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9tYWluIGFsc28gc3BlY2lmaWVkIikKKyAgICAgICAgICAgIGFfcywgcmVzdCA9IHBhcnNlci5nZXRfYWRkcl9zcGVjKGFkZHJfc3BlYykKKyAgICAgICAgICAgIGlmIHJlc3Q6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBhZGRyX3NwZWM7IG9ubHkgJ3t9JyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgYmUgcGFyc2VkIGZyb20gJ3t9JyIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9zLCBhZGRyX3NwZWMpKQorICAgICAgICAgICAgaWYgYV9zLmFsbF9kZWZlY3RzOgorICAgICAgICAgICAgICAgIHJhaXNlIGFfcy5hbGxfZGVmZWN0c1swXQorICAgICAgICAgICAgdXNlcm5hbWUgPSBhX3MubG9jYWxfcGFydAorICAgICAgICAgICAgZG9tYWluID0gYV9zLmRvbWFpbgorICAgICAgICBzZWxmLl9kaXNwbGF5X25hbWUgPSBkaXNwbGF5X25hbWUKKyAgICAgICAgc2VsZi5fdXNlcm5hbWUgPSB1c2VybmFtZQorICAgICAgICBzZWxmLl9kb21haW4gPSBkb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB1c2VybmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3VzZXJuYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICAiIiJUaGUgYWRkcl9zcGVjICh1c2VybmFtZUBkb21haW4pIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MsIHF1b3RlZAorICAgICAgICBhY2NvcmRpbmcgdG8gUkZDIDUzMjIgcnVsZXMsIGJ1dCB3aXRoIG5vIENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcuCisgICAgICAgICIiIgorICAgICAgICBuYW1lc2V0ID0gc2V0KHNlbGYudXNlcm5hbWUpCisgICAgICAgIGlmIGxlbihuYW1lc2V0KSA+IGxlbihuYW1lc2V0LXBhcnNlci5ET1RfQVRPTV9FTkRTKToKKyAgICAgICAgICAgIGxwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhzZWxmLnVzZXJuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbHAgPSBzZWxmLnVzZXJuYW1lCisgICAgICAgIGlmIHNlbGYuZG9tYWluOgorICAgICAgICAgICAgcmV0dXJuIGxwICsgJ0AnICsgc2VsZi5kb21haW4KKyAgICAgICAgaWYgbm90IGxwOgorICAgICAgICAgICAgcmV0dXJuICc8PicKKyAgICAgICAgcmV0dXJuIGxwCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiQWRkcmVzcyhkaXNwbGF5X25hbWU9eyFyfSwgdXNlcm5hbWU9eyFyfSwgZG9tYWluPXshcn0pIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc3BsYXlfbmFtZSwgc2VsZi51c2VybmFtZSwgc2VsZi5kb21haW4pCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgbmFtZXNldCA9IHNldChzZWxmLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtcGFyc2VyLlNQRUNJQUxTKToKKyAgICAgICAgICAgIGRpc3AgPSBwYXJzZXIucXVvdGVfc3RyaW5nKHNlbGYuZGlzcGxheV9uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlzcCA9IHNlbGYuZGlzcGxheV9uYW1lCisgICAgICAgIGlmIGRpc3A6CisgICAgICAgICAgICBhZGRyX3NwZWMgPSAnJyBpZiBzZWxmLmFkZHJfc3BlYz09Jzw+JyBlbHNlIHNlbGYuYWRkcl9zcGVjCisgICAgICAgICAgICByZXR1cm4gInt9IDx7fT4iLmZvcm1hdChkaXNwLCBhZGRyX3NwZWMpCisgICAgICAgIHJldHVybiBzZWxmLmFkZHJfc3BlYworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHR5cGUob3RoZXIpICE9IHR5cGUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIChzZWxmLmRpc3BsYXlfbmFtZSA9PSBvdGhlci5kaXNwbGF5X25hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi51c2VybmFtZSA9PSBvdGhlci51c2VybmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmRvbWFpbiA9PSBvdGhlci5kb21haW4pCisKKworY2xhc3MgR3JvdXA6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGlzcGxheV9uYW1lPU5vbmUsIGFkZHJlc3Nlcz1Ob25lKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIG9iamVjdCByZXByZXNlbnRpbmcgYW4gYWRkcmVzcyBncm91cC4KKworICAgICAgICBBbiBhZGRyZXNzIGdyb3VwIGNvbnNpc3RzIG9mIGEgZGlzcGxheV9uYW1lIGZvbGxvd2VkIGJ5IGNvbG9uIGFuZCBhbgorICAgICAgICBsaXN0IG9mIGFkZHJlc3NlcyAoc2VlIEFkZHJlc3MpIHRlcm1pbmF0ZWQgYnkgYSBzZW1pLWNvbG9uLiAgVGhlIEdyb3VwCisgICAgICAgIGlzIGNyZWF0ZWQgYnkgc3BlY2lmeWluZyBhIGRpc3BsYXlfbmFtZSBhbmQgYSBwb3NzaWJseSBlbXB0eSBsaXN0IG9mCisgICAgICAgIEFkZHJlc3Mgb2JqZWN0cy4gIEEgR3JvdXAgY2FuIGFsc28gYmUgdXNlZCB0byByZXByZXNlbnQgYSBzaW5nbGUKKyAgICAgICAgYWRkcmVzcyB0aGF0IGlzIG5vdCBpbiBhIGdyb3VwLCB3aGljaCBpcyBjb252ZW5pZW50IHdoZW4gbWFuaXB1bGF0aW5nCisgICAgICAgIGxpc3RzIHRoYXQgYXJlIGEgY29tYmluYXRpb24gb2YgR3JvdXBzIGFuZCBpbmRpdmlkdWFsIEFkZHJlc3Nlcy4gIEluCisgICAgICAgIHRoaXMgY2FzZSB0aGUgZGlzcGxheV9uYW1lIHNob3VsZCBiZSBzZXQgdG8gTm9uZS4gIEluIHBhcnRpY3VsYXIsIHRoZQorICAgICAgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBHcm91cCB3aG9zZSBkaXNwbGF5X25hbWUgaXMgTm9uZSBpcyB0aGUgc2FtZQorICAgICAgICBhcyB0aGUgQWRkcmVzcyBvYmplY3QsIGlmIHRoZXJlIGlzIG9uZSBhbmQgb25seSBvbmUgQWRkcmVzcyBvYmplY3QgaW4KKyAgICAgICAgdGhlIGFkZHJlc3NlcyBsaXN0LgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9kaXNwbGF5X25hbWUgPSBkaXNwbGF5X25hbWUKKyAgICAgICAgc2VsZi5fYWRkcmVzc2VzID0gdHVwbGUoYWRkcmVzc2VzKSBpZiBhZGRyZXNzZXMgZWxzZSB0dXBsZSgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc2VzCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiR3JvdXAoZGlzcGxheV9uYW1lPXshcn0sIGFkZHJlc3Nlcz17IXJ9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgIHNlbGYuZGlzcGxheV9uYW1lLCBzZWxmLmFkZHJlc3NlcykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmRpc3BsYXlfbmFtZSBpcyBOb25lIGFuZCBsZW4oc2VsZi5hZGRyZXNzZXMpPT0xOgorICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmFkZHJlc3Nlc1swXSkKKyAgICAgICAgZGlzcCA9IHNlbGYuZGlzcGxheV9uYW1lCisgICAgICAgIGlmIGRpc3AgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBuYW1lc2V0ID0gc2V0KGRpc3ApCisgICAgICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1wYXJzZXIuU1BFQ0lBTFMpOgorICAgICAgICAgICAgICAgIGRpc3AgPSBwYXJzZXIucXVvdGVfc3RyaW5nKGRpc3ApCisgICAgICAgIGFkcnN0ciA9ICIsICIuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZi5hZGRyZXNzZXMpCisgICAgICAgIGFkcnN0ciA9ICcgJyArIGFkcnN0ciBpZiBhZHJzdHIgZWxzZSBhZHJzdHIKKyAgICAgICAgcmV0dXJuICJ7fTp7fTsiLmZvcm1hdChkaXNwLCBhZHJzdHIpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgdHlwZShvdGhlcikgIT0gdHlwZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gKHNlbGYuZGlzcGxheV9uYW1lID09IG90aGVyLmRpc3BsYXlfbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3NlcyA9PSBvdGhlci5hZGRyZXNzZXMpCisKKworIyBIZWFkZXIgQ2xhc3NlcyAjCisKK2NsYXNzIEJhc2VIZWFkZXIoc3RyKToKKworICAgICIiIkJhc2UgY2xhc3MgZm9yIG1lc3NhZ2UgaGVhZGVycy4KKworICAgIEltcGxlbWVudHMgZ2VuZXJpYyBiZWhhdmlvciBhbmQgcHJvdmlkZXMgdG9vbHMgZm9yIHN1YmNsYXNzZXMuCisKKyAgICBBIHN1YmNsYXNzIG11c3QgZGVmaW5lIGEgY2xhc3NtZXRob2QgbmFtZWQgJ3BhcnNlJyB0aGF0IHRha2VzIGFuIHVuZm9sZGVkCisgICAgdmFsdWUgc3RyaW5nIGFuZCBhIGRpY3Rpb25hcnkgYXMgaXRzIGFyZ3VtZW50cy4gIFRoZSBkaWN0aW9uYXJ5IHdpbGwKKyAgICBjb250YWluIG9uZSBrZXksICdkZWZlY3RzJywgaW5pdGlhbGl6ZWQgdG8gYW4gZW1wdHkgbGlzdC4gIEFmdGVyIHRoZSBjYWxsCisgICAgdGhlIGRpY3Rpb25hcnkgbXVzdCBjb250YWluIHR3byBhZGRpdGlvbmFsIGtleXM6IHBhcnNlX3RyZWUsIHNldCB0byB0aGUKKyAgICBwYXJzZSB0cmVlIG9idGFpbmVkIGZyb20gcGFyc2luZyB0aGUgaGVhZGVyLCBhbmQgJ2RlY29kZWQnLCBzZXQgdG8gdGhlCisgICAgc3RyaW5nIHZhbHVlIG9mIHRoZSBpZGVhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGEgZnJvbSB0aGUgdmFsdWUuCisgICAgKFRoYXQgaXMsIGVuY29kZWQgd29yZHMgYXJlIGRlY29kZWQsIGFuZCB2YWx1ZXMgdGhhdCBoYXZlIGNhbm9uaWNhbAorICAgIHJlcHJlc2VudGF0aW9ucyBhcmUgc28gcmVwcmVzZW50ZWQuKQorCisgICAgVGhlIGRlZmVjdHMga2V5IGlzIGludGVuZGVkIHRvIGNvbGxlY3QgcGFyc2luZyBkZWZlY3RzLCB3aGljaCB0aGUgbWVzc2FnZQorICAgIHBhcnNlciB3aWxsIHN1YnNlcXVlbnRseSBkaXNwb3NlIG9mIGFzIGFwcHJvcHJpYXRlLiAgVGhlIHBhcnNlciBzaG91bGQgbm90LAorICAgIGluc29mYXIgYXMgcHJhY3RpY2FsLCByYWlzZSBhbnkgZXJyb3JzLiAgRGVmZWN0cyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlCisgICAgbGlzdCBpbnN0ZWFkLiAgVGhlIHN0YW5kYXJkIGhlYWRlciBwYXJzZXJzIHJlZ2lzdGVyIGRlZmVjdHMgZm9yIFJGQworICAgIGNvbXBsaWFuY2UgaXNzdWVzLCBmb3Igb2Jzb2xldGUgUkZDIHN5bnRheCwgYW5kIGZvciB1bnJlY292ZXJhYmxlIHBhcnNpbmcKKyAgICBlcnJvcnMuCisKKyAgICBUaGUgcGFyc2UgbWV0aG9kIG1heSBhZGQgYWRkaXRpb25hbCBrZXlzIHRvIHRoZSBkaWN0aW9uYXJ5LiAgSW4gdGhpcyBjYXNlCisgICAgdGhlIHN1YmNsYXNzIG11c3QgZGVmaW5lIGFuICdpbml0JyBtZXRob2QsIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRoZQorICAgIGRpY3Rpb25hcnkgYXMgaXRzIGtleXdvcmQgYXJndW1lbnRzLiAgVGhlIG1ldGhvZCBzaG91bGQgdXNlICh1c3VhbGx5IGJ5CisgICAgc2V0dGluZyB0aGVtIGFzIHRoZSB2YWx1ZSBvZiBzaW1pbGFybHkgbmFtZWQgYXR0cmlidXRlcykgYW5kIHJlbW92ZSBhbGwgdGhlCisgICAgZXh0cmEga2V5cyBhZGRlZCBieSBpdHMgcGFyc2UgbWV0aG9kLCBhbmQgdGhlbiB1c2Ugc3VwZXIgdG8gY2FsbCBpdHMgcGFyZW50CisgICAgY2xhc3Mgd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhbmQga2V5d29yZHMuCisKKyAgICBUaGUgc3ViY2xhc3Mgc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRoYXQgYSAnbWF4X2NvdW50JyBhdHRyaWJ1dGUgaXMgZGVmaW5lZAorICAgIHRoYXQgaXMgZWl0aGVyIE5vbmUgb3IgMS4gWFhYOiBuZWVkIHRvIGJldHRlciBkZWZpbmUgdGhpcyBBUEkuCisKKyAgICAiIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgdmFsdWUpOgorICAgICAgICBrd2RzID0geydkZWZlY3RzJzogW119CisgICAgICAgIGNscy5wYXJzZSh2YWx1ZSwga3dkcykKKyAgICAgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKGt3ZHNbJ2RlY29kZWQnXSk6CisgICAgICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSB1dGlscy5fc2FuaXRpemUoa3dkc1snZGVjb2RlZCddKQorICAgICAgICBzZWxmID0gc3RyLl9fbmV3X18oY2xzLCBrd2RzWydkZWNvZGVkJ10pCisgICAgICAgIGRlbCBrd2RzWydkZWNvZGVkJ10KKyAgICAgICAgc2VsZi5pbml0KG5hbWUsICoqa3dkcykKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBpbml0KHNlbGYsIG5hbWUsICosIHBhcnNlX3RyZWUsIGRlZmVjdHMpOgorICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQorICAgICAgICBzZWxmLl9wYXJzZV90cmVlID0gcGFyc2VfdHJlZQorICAgICAgICBzZWxmLl9kZWZlY3RzID0gZGVmZWN0cworCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGVmZWN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYuX2RlZmVjdHMpCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIF9yZWNvbnN0cnVjdF9oZWFkZXIsCisgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19iYXNlc19fLAorICAgICAgICAgICAgICAgIHN0cihzZWxmKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBzZWxmLl9fZGljdF9fKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZWNvbnN0cnVjdChjbHMsIHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHN0ci5fX25ld19fKGNscywgdmFsdWUpCisKKyAgICBkZWYgZm9sZChzZWxmLCAqLCBwb2xpY3kpOgorICAgICAgICAiIiJGb2xkIGhlYWRlciBhY2NvcmRpbmcgdG8gcG9saWN5LgorCisgICAgICAgIFRoZSBwYXJzZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGhlYWRlciBpcyBmb2xkZWQgYWNjb3JkaW5nIHRvCisgICAgICAgIFJGQzUzMjIgcnVsZXMsIGFzIG1vZGlmaWVkIGJ5IHRoZSBwb2xpY3kuICBJZiB0aGUgcGFyc2UgdHJlZQorICAgICAgICBjb250YWlucyBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzLCB0aGUgYnl0ZXMgYXJlIENURSBlbmNvZGVkIHVzaW5nCisgICAgICAgIHRoZSBjaGFyc2V0ICd1bmtub3duLThiaXQiLgorCisgICAgICAgIEFueSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgcGFyc2UgdHJlZSBhcmUgQ1RFIGVuY29kZWQgdXNpbmcKKyAgICAgICAgY2hhcnNldCB1dGYtOC4gWFhYOiBtYWtlIHRoaXMgYSBwb2xpY3kgc2V0dGluZy4KKworICAgICAgICBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYW4gQVNDSUktb25seSBzdHJpbmcgcG9zc2libHkgY29udGFpbmluZyBsaW5lc2VwCisgICAgICAgIGNoYXJhY3RlcnMsIGFuZCBlbmRpbmcgd2l0aCBhIGxpbmVzZXAgY2hhcmFjdGVyLiAgVGhlIHN0cmluZyBpbmNsdWRlcworICAgICAgICB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSAnOiAnIHNlcGFyYXRvci4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBBdCBzb21lIHBvaW50IHdlIG5lZWQgdG8gb25seSBwdXQgZndzIGhlcmUgaWYgaXQgd2FzIGluIHRoZSBzb3VyY2UuCisgICAgICAgIGhlYWRlciA9IHBhcnNlci5IZWFkZXIoWworICAgICAgICAgICAgcGFyc2VyLkhlYWRlckxhYmVsKFsKKyAgICAgICAgICAgICAgICBwYXJzZXIuVmFsdWVUZXJtaW5hbChzZWxmLm5hbWUsICdoZWFkZXItbmFtZScpLAorICAgICAgICAgICAgICAgIHBhcnNlci5WYWx1ZVRlcm1pbmFsKCc6JywgJ2hlYWRlci1zZXAnKV0pLAorICAgICAgICAgICAgcGFyc2VyLkNGV1NMaXN0KFtwYXJzZXIuV2hpdGVTcGFjZVRlcm1pbmFsKCcgJywgJ2Z3cycpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX3RyZWVdKQorICAgICAgICByZXR1cm4gaGVhZGVyLmZvbGQocG9saWN5PXBvbGljeSkKKworCitkZWYgX3JlY29uc3RydWN0X2hlYWRlcihjbHNfbmFtZSwgYmFzZXMsIHZhbHVlKToKKyAgICByZXR1cm4gdHlwZShjbHNfbmFtZSwgYmFzZXMsIHt9KS5fcmVjb25zdHJ1Y3QodmFsdWUpCisKKworY2xhc3MgVW5zdHJ1Y3R1cmVkSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gTm9uZQorICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKGt3ZHNbJ3BhcnNlX3RyZWUnXSkKKworCitjbGFzcyBVbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIoVW5zdHJ1Y3R1cmVkSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBEYXRlSGVhZGVyOgorCisgICAgIiIiSGVhZGVyIHdob3NlIHZhbHVlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHRpbWVzdGFtcC4KKworICAgIFByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgYXR0cmlidXRlLCBkYXRldGltZSwgd2hpY2ggaXMgZWl0aGVyIGFuIGF3YXJlCisgICAgZGF0ZXRpbWUgdXNpbmcgYSB0aW1lem9uZSwgb3IgYSBuYWl2ZSBkYXRldGltZSBpZiB0aGUgdGltZXpvbmUKKyAgICBpbiB0aGUgaW5wdXQgc3RyaW5nIGlzIC0wMDAwLiAgQWxzbyBhY2NlcHRzIGEgZGF0ZXRpbWUgYXMgaW5wdXQuCisgICAgVGhlICd2YWx1ZScgYXR0cmlidXRlIGlzIHRoZSBub3JtYWxpemVkIGZvcm0gb2YgdGhlIHRpbWVzdGFtcCwKKyAgICB3aGljaCBtZWFucyBpdCBpcyB0aGUgb3V0cHV0IG9mIGZvcm1hdF9kYXRldGltZSBvbiB0aGUgZGF0ZXRpbWUuCisgICAgIiIiCisKKyAgICBtYXhfY291bnQgPSBOb25lCisKKyAgICAjIFRoaXMgaXMgdXNlZCBvbmx5IGZvciBmb2xkaW5nLCBub3QgZm9yIGNyZWF0aW5nICdkZWNvZGVkJy4KKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKCkpCisgICAgICAgICAgICBrd2RzWydkYXRldGltZSddID0gTm9uZQorICAgICAgICAgICAga3dkc1snZGVjb2RlZCddID0gJycKKyAgICAgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlci5Ub2tlbkxpc3QoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICB2YWx1ZSA9IHV0aWxzLnBhcnNlZGF0ZV90b19kYXRldGltZSh2YWx1ZSkKKyAgICAgICAga3dkc1snZGF0ZXRpbWUnXSA9IHZhbHVlCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHV0aWxzLmZvcm1hdF9kYXRldGltZShrd2RzWydkYXRldGltZSddKQorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKGt3ZHNbJ2RlY29kZWQnXSkKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fZGF0ZXRpbWUgPSBrdy5wb3AoJ2RhdGV0aW1lJykKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRhdGV0aW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGF0ZXRpbWUKKworCitjbGFzcyBVbmlxdWVEYXRlSGVhZGVyKERhdGVIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIEFkZHJlc3NIZWFkZXI6CisKKyAgICBtYXhfY291bnQgPSBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHZhbHVlX3BhcnNlcih2YWx1ZSk6CisgICAgICAgIGFkZHJlc3NfbGlzdCwgdmFsdWUgPSBwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCh2YWx1ZSkKKyAgICAgICAgYXNzZXJ0IG5vdCB2YWx1ZSwgJ3RoaXMgc2hvdWxkIG5vdCBoYXBwZW4nCisgICAgICAgIHJldHVybiBhZGRyZXNzX2xpc3QKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICMgV2UgYXJlIHRyYW5zbGF0aW5nIGhlcmUgZnJvbSB0aGUgUkZDIGxhbmd1YWdlIChhZGRyZXNzL21haWxib3gpCisgICAgICAgICAgICAjIHRvIG91ciBBUEkgbGFuZ3VhZ2UgKGdyb3VwL2FkZHJlc3MpLgorICAgICAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gYWRkcmVzc19saXN0ID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAgICAgIGdyb3VwcyA9IFtdCisgICAgICAgICAgICBmb3IgYWRkciBpbiBhZGRyZXNzX2xpc3QuYWRkcmVzc2VzOgorICAgICAgICAgICAgICAgIGdyb3Vwcy5hcHBlbmQoR3JvdXAoYWRkci5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQWRkcmVzcyhtYi5kaXNwbGF5X25hbWUgb3IgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYi5sb2NhbF9wYXJ0IG9yICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWIuZG9tYWluIG9yICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtYiBpbiBhZGRyLmFsbF9tYWlsYm94ZXNdKSkKKyAgICAgICAgICAgIGRlZmVjdHMgPSBsaXN0KGFkZHJlc3NfbGlzdC5hbGxfZGVmZWN0cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQXNzdW1lIGl0IGlzIEFkZHJlc3MvR3JvdXAgc3R1ZmYKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHZhbHVlLCAnX19pdGVyX18nKToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KKyAgICAgICAgICAgIGdyb3VwcyA9IFtHcm91cChOb25lLCBbaXRlbV0pIGlmIG5vdCBoYXNhdHRyKGl0ZW0sICdhZGRyZXNzZXMnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiB2YWx1ZV0KKyAgICAgICAgICAgIGRlZmVjdHMgPSBbXQorICAgICAgICBrd2RzWydncm91cHMnXSA9IGdyb3VwcworICAgICAgICBrd2RzWydkZWZlY3RzJ10gPSBkZWZlY3RzCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9ICcsICcuam9pbihbc3RyKGl0ZW0pIGZvciBpdGVtIGluIGdyb3Vwc10pCisgICAgICAgIGlmICdwYXJzZV90cmVlJyBub3QgaW4ga3dkczoKKyAgICAgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGNscy52YWx1ZV9wYXJzZXIoa3dkc1snZGVjb2RlZCddKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzZWxmLl9ncm91cHMgPSB0dXBsZShrdy5wb3AoJ2dyb3VwcycpKQorICAgICAgICBzZWxmLl9hZGRyZXNzZXMgPSBOb25lCisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBncm91cHMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ncm91cHMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyZXNzZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2FkZHJlc3NlcyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fYWRkcmVzc2VzID0gdHVwbGUoW2FkZHJlc3MgZm9yIGdyb3VwIGluIHNlbGYuX2dyb3VwcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFkZHJlc3MgaW4gZ3JvdXAuYWRkcmVzc2VzXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcworCisKK2NsYXNzIFVuaXF1ZUFkZHJlc3NIZWFkZXIoQWRkcmVzc0hlYWRlcik6CisKKyAgICBtYXhfY291bnQgPSAxCisKKworY2xhc3MgU2luZ2xlQWRkcmVzc0hlYWRlcihBZGRyZXNzSGVhZGVyKToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyZXNzKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZi5hZGRyZXNzZXMpIT0xOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigoInZhbHVlIG9mIHNpbmdsZSBhZGRyZXNzIGhlYWRlciB7fSBpcyBub3QgIgorICAgICAgICAgICAgICAgICJhIHNpbmdsZSBhZGRyZXNzIikuZm9ybWF0KHNlbGYubmFtZSkpCisgICAgICAgIHJldHVybiBzZWxmLmFkZHJlc3Nlc1swXQorCisKK2NsYXNzIFVuaXF1ZVNpbmdsZUFkZHJlc3NIZWFkZXIoU2luZ2xlQWRkcmVzc0hlYWRlcik6CisKKyAgICBtYXhfY291bnQgPSAxCisKKworY2xhc3MgTUlNRVZlcnNpb25IZWFkZXI6CisKKyAgICBtYXhfY291bnQgPSAxCisKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX21pbWVfdmVyc2lvbikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gcGFyc2VfdHJlZSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihwYXJzZV90cmVlKQorICAgICAgICBrd2RzWydkZWZlY3RzJ10uZXh0ZW5kKHBhcnNlX3RyZWUuYWxsX2RlZmVjdHMpCisgICAgICAgIGt3ZHNbJ21ham9yJ10gPSBOb25lIGlmIHBhcnNlX3RyZWUubWlub3IgaXMgTm9uZSBlbHNlIHBhcnNlX3RyZWUubWFqb3IKKyAgICAgICAga3dkc1snbWlub3InXSA9IHBhcnNlX3RyZWUubWlub3IKKyAgICAgICAgaWYgcGFyc2VfdHJlZS5taW5vciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGt3ZHNbJ3ZlcnNpb24nXSA9ICd7fS57fScuZm9ybWF0KGt3ZHNbJ21ham9yJ10sIGt3ZHNbJ21pbm9yJ10pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBrd2RzWyd2ZXJzaW9uJ10gPSBOb25lCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBrdy5wb3AoJ3ZlcnNpb24nKQorICAgICAgICBzZWxmLl9tYWpvciA9IGt3LnBvcCgnbWFqb3InKQorICAgICAgICBzZWxmLl9taW5vciA9IGt3LnBvcCgnbWlub3InKQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFqb3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tYWpvcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1pbm9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWlub3IKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisKK2NsYXNzIFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyOgorCisgICAgIyBNaXhpbiB0aGF0IGhhbmRsZXMgdGhlIHBhcmFtcyBkaWN0LiAgTXVzdCBiZSBzdWJjbGFzc2VkIGFuZAorICAgICMgYSBwcm9wZXJ0eSB2YWx1ZV9wYXJzZXIgZm9yIHRoZSBzcGVjaWZpYyBoZWFkZXIgcHJvdmlkZWQuCisKKyAgICBtYXhfY291bnQgPSAxCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKKyAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQorICAgICAgICBpZiBwYXJzZV90cmVlLnBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAga3dkc1sncGFyYW1zJ10gPSB7fQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUaGUgTUlNRSBSRkNzIHNwZWNpZnkgdGhhdCBwYXJhbWV0ZXIgb3JkZXJpbmcgaXMgYXJiaXRyYXJ5LgorICAgICAgICAgICAga3dkc1sncGFyYW1zJ10gPSB7dXRpbHMuX3Nhbml0aXplKG5hbWUpLmxvd2VyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5fc2FuaXRpemUodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHBhcnNlX3RyZWUucGFyYW1zfQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzZWxmLl9wYXJhbXMgPSBrdy5wb3AoJ3BhcmFtcycpCisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJhbXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wYXJhbXMuY29weSgpCisKKworY2xhc3MgQ29udGVudFR5cGVIZWFkZXIoUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIpOgorCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5wYXJzZV9jb250ZW50X3R5cGVfaGVhZGVyKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuX21haW50eXBlID0gdXRpbHMuX3Nhbml0aXplKHNlbGYuX3BhcnNlX3RyZWUubWFpbnR5cGUpCisgICAgICAgIHNlbGYuX3N1YnR5cGUgPSB1dGlscy5fc2FuaXRpemUoc2VsZi5fcGFyc2VfdHJlZS5zdWJ0eXBlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haW50eXBlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWFpbnR5cGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdWJ0eXBlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc3VidHlwZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnRfdHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWFpbnR5cGUgKyAnLycgKyBzZWxmLnN1YnR5cGUKKworCitjbGFzcyBDb250ZW50RGlzcG9zaXRpb25IZWFkZXIoUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIpOgorCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5wYXJzZV9jb250ZW50X2Rpc3Bvc2l0aW9uX2hlYWRlcikKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorICAgICAgICBjZCA9IHNlbGYuX3BhcnNlX3RyZWUuY29udGVudF9kaXNwb3NpdGlvbgorICAgICAgICBzZWxmLl9jb250ZW50X2Rpc3Bvc2l0aW9uID0gY2QgaWYgY2QgaXMgTm9uZSBlbHNlIHV0aWxzLl9zYW5pdGl6ZShjZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50X2Rpc3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY29udGVudF9kaXNwb3NpdGlvbgorCisKK2NsYXNzIENvbnRlbnRUcmFuc2ZlckVuY29kaW5nSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gMQorCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5wYXJzZV9jb250ZW50X3RyYW5zZmVyX2VuY29kaW5nX2hlYWRlcikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gcGFyc2VfdHJlZSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihwYXJzZV90cmVlKQorICAgICAgICBrd2RzWydkZWZlY3RzJ10uZXh0ZW5kKHBhcnNlX3RyZWUuYWxsX2RlZmVjdHMpCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5fY3RlID0gdXRpbHMuX3Nhbml0aXplKHNlbGYuX3BhcnNlX3RyZWUuY3RlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGN0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2N0ZQorCisKKyMgVGhlIGhlYWRlciBmYWN0b3J5ICMKKworX2RlZmF1bHRfaGVhZGVyX21hcCA9IHsKKyAgICAnc3ViamVjdCc6ICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlciwKKyAgICAnZGF0ZSc6ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZURhdGVIZWFkZXIsCisgICAgJ3Jlc2VudC1kYXRlJzogICAgICAgICAgICAgICAgICBEYXRlSGVhZGVyLAorICAgICdvcmlnLWRhdGUnOiAgICAgICAgICAgICAgICAgICAgVW5pcXVlRGF0ZUhlYWRlciwKKyAgICAnc2VuZGVyJzogICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZVNpbmdsZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC1zZW5kZXInOiAgICAgICAgICAgICAgICBTaW5nbGVBZGRyZXNzSGVhZGVyLAorICAgICd0byc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LXRvJzogICAgICAgICAgICAgICAgICAgIEFkZHJlc3NIZWFkZXIsCisgICAgJ2NjJzogICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtY2MnOiAgICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAnYmNjJzogICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC1iY2MnOiAgICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdmcm9tJzogICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LWZyb20nOiAgICAgICAgICAgICAgICAgIEFkZHJlc3NIZWFkZXIsCisgICAgJ3JlcGx5LXRvJzogICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdtaW1lLXZlcnNpb24nOiAgICAgICAgICAgICAgICAgTUlNRVZlcnNpb25IZWFkZXIsCisgICAgJ2NvbnRlbnQtdHlwZSc6ICAgICAgICAgICAgICAgICBDb250ZW50VHlwZUhlYWRlciwKKyAgICAnY29udGVudC1kaXNwb3NpdGlvbic6ICAgICAgICAgIENvbnRlbnREaXNwb3NpdGlvbkhlYWRlciwKKyAgICAnY29udGVudC10cmFuc2Zlci1lbmNvZGluZyc6ICAgIENvbnRlbnRUcmFuc2ZlckVuY29kaW5nSGVhZGVyLAorICAgIH0KKworY2xhc3MgSGVhZGVyUmVnaXN0cnk6CisKKyAgICAiIiJBIGhlYWRlcl9mYWN0b3J5IGFuZCBoZWFkZXIgcmVnaXN0cnkuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYmFzZV9jbGFzcz1CYXNlSGVhZGVyLCBkZWZhdWx0X2NsYXNzPVVuc3RydWN0dXJlZEhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgdXNlX2RlZmF1bHRfbWFwPVRydWUpOgorICAgICAgICAiIiJDcmVhdGUgYSBoZWFkZXJfZmFjdG9yeSB0aGF0IHdvcmtzIHdpdGggdGhlIFBvbGljeSBBUEkuCisKKyAgICAgICAgYmFzZV9jbGFzcyBpcyB0aGUgY2xhc3MgdGhhdCB3aWxsIGJlIHRoZSBsYXN0IGNsYXNzIGluIHRoZSBjcmVhdGVkCisgICAgICAgIGhlYWRlciBjbGFzcydzIF9fYmFzZXNfXyBsaXN0LiAgZGVmYXVsdF9jbGFzcyBpcyB0aGUgY2xhc3MgdGhhdCB3aWxsIGJlCisgICAgICAgIHVzZWQgaWYgIm5hbWUiIChzZWUgX19jYWxsX18pIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgcmVnaXN0cnkuCisgICAgICAgIHVzZV9kZWZhdWx0X21hcCBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgZGVmYXVsdCBtYXBwaW5nIG9mIG5hbWVzIHRvCisgICAgICAgIHNwZWNpYWxpemVkIGNsYXNzZXMgaXMgY29waWVkIGluIHRvIHRoZSByZWdpc3RyeSB3aGVuIHRoZSBmYWN0b3J5IGlzCisgICAgICAgIGNyZWF0ZWQuICBUaGUgZGVmYXVsdCBpcyBUcnVlLgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJlZ2lzdHJ5ID0ge30KKyAgICAgICAgc2VsZi5iYXNlX2NsYXNzID0gYmFzZV9jbGFzcworICAgICAgICBzZWxmLmRlZmF1bHRfY2xhc3MgPSBkZWZhdWx0X2NsYXNzCisgICAgICAgIGlmIHVzZV9kZWZhdWx0X21hcDoKKyAgICAgICAgICAgIHNlbGYucmVnaXN0cnkudXBkYXRlKF9kZWZhdWx0X2hlYWRlcl9tYXApCisKKyAgICBkZWYgbWFwX3RvX3R5cGUoc2VsZiwgbmFtZSwgY2xzKToKKyAgICAgICAgIiIiUmVnaXN0ZXIgY2xzIGFzIHRoZSBzcGVjaWFsaXplZCBjbGFzcyBmb3IgaGFuZGxpbmcgIm5hbWUiIGhlYWRlcnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYucmVnaXN0cnlbbmFtZS5sb3dlcigpXSA9IGNscworCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG5hbWUpOgorICAgICAgICBjbHMgPSBzZWxmLnJlZ2lzdHJ5LmdldChuYW1lLmxvd2VyKCksIHNlbGYuZGVmYXVsdF9jbGFzcykKKyAgICAgICAgcmV0dXJuIHR5cGUoJ18nK2Nscy5fX25hbWVfXywgKGNscywgc2VsZi5iYXNlX2NsYXNzKSwge30pCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJDcmVhdGUgYSBoZWFkZXIgaW5zdGFuY2UgZm9yIGhlYWRlciAnbmFtZScgZnJvbSAndmFsdWUnLgorCisgICAgICAgIENyZWF0ZXMgYSBoZWFkZXIgaW5zdGFuY2UgYnkgY3JlYXRpbmcgYSBzcGVjaWFsaXplZCBjbGFzcyBmb3IgcGFyc2luZworICAgICAgICBhbmQgcmVwcmVzZW50aW5nIHRoZSBzcGVjaWZpZWQgaGVhZGVyIGJ5IGNvbWJpbmluZyB0aGUgZmFjdG9yeQorICAgICAgICBiYXNlX2NsYXNzIHdpdGggYSBzcGVjaWFsaXplZCBjbGFzcyBmcm9tIHRoZSByZWdpc3RyeSBvciB0aGUKKyAgICAgICAgZGVmYXVsdF9jbGFzcywgYW5kIHBhc3NpbmcgdGhlIG5hbWUgYW5kIHZhbHVlIHRvIHRoZSBjb25zdHJ1Y3RlZAorICAgICAgICBjbGFzcydzIGNvbnN0cnVjdG9yLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZltuYW1lXShuYW1lLCB2YWx1ZSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5IGIvTGliL2VtYWlsL21lc3NhZ2UucHkKaW5kZXggZjFmZmNkYi4uM2ZlYWI1MiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21lc3NhZ2UucHkKQEAgLTEwLDE0ICsxMCwxNCBAQAogaW1wb3J0IHV1CiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgYmluYXNjaWkKLWltcG9ydCB3YXJuaW5ncwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIAogIyBJbnRyYXBhY2thZ2UgaW1wb3J0cwogZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwotZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVyCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogZnJvbSBlbWFpbCBpbXBvcnQgY2hhcnNldCBhcyBfY2hhcnNldAorZnJvbSBlbWFpbC5fZW5jb2RlZF93b3JkcyBpbXBvcnQgZGVjb2RlX2IKIENoYXJzZXQgPSBfY2hhcnNldC5DaGFyc2V0CiAKIFNFTUlTUEFDRSA9ICc7ICcKQEAgLTI2LDI0ICsyNiw2IEBACiAjIGV4aXN0ZW5jZSBvZiB3aGljaCBmb3JjZSBxdW90aW5nIG9mIHRoZSBwYXJhbWV0ZXIgdmFsdWUuCiB0c3BlY2lhbHMgPSByZS5jb21waWxlKHInWyBcKFwpPD5ALDs6XFwiL1xbXF1cPz1dJykKIAotIyBIb3cgdG8gZmlndXJlIG91dCBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBzdHJpbmdzIHRoYXQgY29tZSBmcm9tIGEgYnl0ZQotIyBzb3VyY2Ugd2l0aCB1bmRlY29kYWJsZSBjaGFyYWN0ZXJzLgotX2hhc19zdXJyb2dhdGVzID0gcmUuY29tcGlsZSgKLSAgICAnKFteXHVkODAwLVx1ZGJmZl18XEEpW1x1ZGMwMC1cdWRmZmZdKFteXHVkYzAwLVx1ZGZmZl18XFopJykuc2VhcmNoCi0KLQotIyBIZWxwZXIgZnVuY3Rpb25zCi1kZWYgX3Nhbml0aXplX2hlYWRlcihuYW1lLCB2YWx1ZSk6Ci0gICAgIyBJZiB0aGUgaGVhZGVyIHZhbHVlIGNvbnRhaW5zIHN1cnJvZ2F0ZXMsIHJldHVybiBhIEhlYWRlciB1c2luZwotICAgICMgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0IHRvIGVuY29kZSB0aGUgYnl0ZXMgYXMgZW5jb2RlZCB3b3Jkcy4KLSAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgIyBBc3N1bWUgaXQgaXMgYWxyZWFkeSBhIGhlYWRlciBvYmplY3QKLSAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgaWYgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKLSAgICAgICAgcmV0dXJuIGhlYWRlci5IZWFkZXIodmFsdWUsIGNoYXJzZXQ9X2NoYXJzZXQuVU5LTk9XTjhCSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPW5hbWUpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHZhbHVlCiAKIGRlZiBfc3BsaXRwYXJhbShwYXJhbSk6CiAgICAgIyBTcGxpdCBoZWFkZXIgcGFyYW1ldGVycy4gIEJBVzogdGhpcyBtYXkgYmUgdG9vIHNpbXBsZS4gIEl0IGlzbid0CkBAIC0xMzYsNyArMTE4LDggQEAKICAgICB5b3UgbXVzdCB1c2UgdGhlIGV4cGxpY2l0IEFQSSB0byBzZXQgb3IgZ2V0IGFsbCB0aGUgaGVhZGVycy4gIE5vdCBhbGwgb2YKICAgICB0aGUgbWFwcGluZyBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZC4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvbGljeT1jb21wYXQzMik6CisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAgICAgICAgIHNlbGYuX2hlYWRlcnMgPSBbXQogICAgICAgICBzZWxmLl91bml4ZnJvbSA9IE5vbmUKICAgICAgICAgc2VsZi5fcGF5bG9hZCA9IE5vbmUKQEAgLTI0Niw3ICsyMjksNyBAQAogICAgICAgICBjdGUgPSBzdHIoc2VsZi5nZXQoJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnLCAnJykpLmxvd2VyKCkKICAgICAgICAgIyBwYXlsb2FkIG1heSBiZSBieXRlcyBoZXJlLgogICAgICAgICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIHN0cik6Ci0gICAgICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXMocGF5bG9hZCk6CisgICAgICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMocGF5bG9hZCk6CiAgICAgICAgICAgICAgICAgYnBheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgICAgICAgICBpZiBub3QgZGVjb2RlOgogICAgICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yNjcsMTEgKzI1MCwxMiBAQAogICAgICAgICBpZiBjdGUgPT0gJ3F1b3RlZC1wcmludGFibGUnOgogICAgICAgICAgICAgcmV0dXJuIHV0aWxzLl9xZGVjb2RlKGJwYXlsb2FkKQogICAgICAgICBlbGlmIGN0ZSA9PSAnYmFzZTY0JzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0LmI2NGRlY29kZShicGF5bG9hZCkKLSAgICAgICAgICAgIGV4Y2VwdCBiaW5hc2NpaS5FcnJvcjoKLSAgICAgICAgICAgICAgICAjIEluY29ycmVjdCBwYWRkaW5nCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJwYXlsb2FkCisgICAgICAgICAgICAjIFhYWDogdGhpcyBpcyBhIGJpdCBvZiBhIGhhY2s7IGRlY29kZV9iIHNob3VsZCBwcm9iYWJseSBiZSBmYWN0b3JlZAorICAgICAgICAgICAgIyBvdXQgc29tZXdoZXJlLCBidXQgSSBoYXZlbid0IGZpZ3VyZWQgb3V0IHdoZXJlIHlldC4KKyAgICAgICAgICAgIHZhbHVlLCBkZWZlY3RzID0gZGVjb2RlX2IoYicnLmpvaW4oYnBheWxvYWQuc3BsaXRsaW5lcygpKSkKKyAgICAgICAgICAgIGZvciBkZWZlY3QgaW4gZGVmZWN0czoKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYsIGRlZmVjdCkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgICBlbGlmIGN0ZSBpbiAoJ3gtdXVlbmNvZGUnLCAndXVlbmNvZGUnLCAndXVlJywgJ3gtdXVlJyk6CiAgICAgICAgICAgICBpbl9maWxlID0gQnl0ZXNJTyhicGF5bG9hZCkKICAgICAgICAgICAgIG91dF9maWxlID0gQnl0ZXNJTygpCkBAIC0zNjIsNyArMzQ2LDE3IEBACiAgICAgICAgIE5vdGU6IHRoaXMgZG9lcyBub3Qgb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGhlYWRlciB3aXRoIHRoZSBzYW1lIGZpZWxkCiAgICAgICAgIG5hbWUuICBVc2UgX19kZWxpdGVtX18oKSBmaXJzdCB0byBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlcnMuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZCgobmFtZSwgdmFsKSkKKyAgICAgICAgbWF4X2NvdW50ID0gc2VsZi5wb2xpY3kuaGVhZGVyX21heF9jb3VudChuYW1lKQorICAgICAgICBpZiBtYXhfY291bnQ6CisgICAgICAgICAgICBsbmFtZSA9IG5hbWUubG93ZXIoKQorICAgICAgICAgICAgZm91bmQgPSAwCisgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzOgorICAgICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBsbmFtZToKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgKz0gMQorICAgICAgICAgICAgICAgICAgICBpZiBmb3VuZCA+PSBtYXhfY291bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGVyZSBtYXkgYmUgYXQgbW9zdCB7fSB7fSBoZWFkZXJzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGEgbWVzc2FnZSIuZm9ybWF0KG1heF9jb3VudCwgbmFtZSkpCisgICAgICAgIHNlbGYuX2hlYWRlcnMuYXBwZW5kKHNlbGYucG9saWN5LmhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWwpKQogCiAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIG5hbWUpOgogICAgICAgICAiIiJEZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mIGEgaGVhZGVyLCBpZiBwcmVzZW50LgpAQCAtNDAxLDcgKzM5NSw4IEBACiAgICAgICAgIEFueSBmaWVsZHMgZGVsZXRlZCBhbmQgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyCiAgICAgICAgIGxpc3QuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gW19zYW5pdGl6ZV9oZWFkZXIoaywgdikgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KKyAgICAgICAgcmV0dXJuIFtzZWxmLnBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2UoaywgdikKKyAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzXQogCiAgICAgZGVmIGl0ZW1zKHNlbGYpOgogICAgICAgICAiIiJHZXQgYWxsIHRoZSBtZXNzYWdlJ3MgaGVhZGVyIGZpZWxkcyBhbmQgdmFsdWVzLgpAQCAtNDExLDcgKzQwNiw4IEBACiAgICAgICAgIEFueSBmaWVsZHMgZGVsZXRlZCBhbmQgcmUtaW5zZXJ0ZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgaGVhZGVyCiAgICAgICAgIGxpc3QuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gWyhrLCBfc2FuaXRpemVfaGVhZGVyKGssIHYpKSBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzXQorICAgICAgICByZXR1cm4gWyhrLCBzZWxmLnBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2UoaywgdikpCisgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KIAogICAgIGRlZiBnZXQoc2VsZiwgbmFtZSwgZmFpbG9iaj1Ob25lKToKICAgICAgICAgIiIiR2V0IGEgaGVhZGVyIHZhbHVlLgpAQCAtNDIyLDEwICs0MTgsMjkgQEAKICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQogICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICAgaWYgay5sb3dlcigpID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9zYW5pdGl6ZV9oZWFkZXIoaywgdikKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpCiAgICAgICAgIHJldHVybiBmYWlsb2JqCiAKICAgICAjCisgICAgIyAiSW50ZXJuYWwiIG1ldGhvZHMgKHB1YmxpYyBBUEksIGJ1dCBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgYSBwYXJzZXIKKyAgICAjIG9yIGdlbmVyYXRvciwgbm90IG5vcm1hbCBhcHBsaWNhdGlvbiBjb2RlLgorICAgICMKKworICAgIGRlZiBzZXRfcmF3KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiU3RvcmUgbmFtZSBhbmQgdmFsdWUgaW4gdGhlIG1vZGVsIHdpdGhvdXQgbW9kaWZpY2F0aW9uLgorCisgICAgICAgIFRoaXMgaXMgYW4gImludGVybmFsIiBBUEksIGludGVuZGVkIG9ubHkgZm9yIHVzZSBieSBhIHBhcnNlci4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2hlYWRlcnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCisKKyAgICBkZWYgcmF3X2l0ZW1zKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIChuYW1lLCB2YWx1ZSkgaGVhZGVyIHBhaXJzIHdpdGhvdXQgbW9kaWZpY2F0aW9uLgorCisgICAgICAgIFRoaXMgaXMgYW4gImludGVybmFsIiBBUEksIGludGVuZGVkIG9ubHkgZm9yIHVzZSBieSBhIGdlbmVyYXRvci4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2hlYWRlcnMuY29weSgpKQorCisgICAgIwogICAgICMgQWRkaXRpb25hbCB1c2VmdWwgc3R1ZmYKICAgICAjCiAKQEAgLTQ0Miw3ICs0NTcsNyBAQAogICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCiAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnM6CiAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbmFtZToKLSAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKF9zYW5pdGl6ZV9oZWFkZXIoaywgdikpCisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChzZWxmLnBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2UoaywgdikpCiAgICAgICAgIGlmIG5vdCB2YWx1ZXM6CiAgICAgICAgICAgICByZXR1cm4gZmFpbG9iagogICAgICAgICByZXR1cm4gdmFsdWVzCkBAIC00NzUsNyArNDkwLDcgQEAKICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoX2Zvcm1hdHBhcmFtKGsucmVwbGFjZSgnXycsICctJyksIHYpKQogICAgICAgICBpZiBfdmFsdWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBwYXJ0cy5pbnNlcnQoMCwgX3ZhbHVlKQotICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZCgoX25hbWUsIFNFTUlTUEFDRS5qb2luKHBhcnRzKSkpCisgICAgICAgIHNlbGZbX25hbWVdID0gU0VNSVNQQUNFLmpvaW4ocGFydHMpCiAKICAgICBkZWYgcmVwbGFjZV9oZWFkZXIoc2VsZiwgX25hbWUsIF92YWx1ZSk6CiAgICAgICAgICIiIlJlcGxhY2UgYSBoZWFkZXIuCkBAIC00ODcsNyArNTAyLDcgQEAKICAgICAgICAgX25hbWUgPSBfbmFtZS5sb3dlcigpCiAgICAgICAgIGZvciBpLCAoaywgdikgaW4gemlwKHJhbmdlKGxlbihzZWxmLl9oZWFkZXJzKSksIHNlbGYuX2hlYWRlcnMpOgogICAgICAgICAgICAgaWYgay5sb3dlcigpID09IF9uYW1lOgotICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNbaV0gPSAoaywgX3ZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNbaV0gPSBzZWxmLnBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2UoaywgX3ZhbHVlKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihfbmFtZSkKQEAgLTgwMyw3ICs4MTgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKGspCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzPSVzJyAlIChrLCB2KSkKLSAgICAgICAgICAgICAgICBuZXdoZWFkZXJzLmFwcGVuZCgoaCwgU0VNSVNQQUNFLmpvaW4ocGFydHMpKSkKKyAgICAgICAgICAgICAgICB2YWwgPSBTRU1JU1BBQ0Uuam9pbihwYXJ0cykKKyAgICAgICAgICAgICAgICBuZXdoZWFkZXJzLmFwcGVuZChzZWxmLnBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2UoaCwgdmFsKSkKIAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdoZWFkZXJzLmFwcGVuZCgoaCwgdikpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5IGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQppbmRleCA1NzQ3ZGI1Li44MGZmOTUwIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKQEAgLTE0LDcgKzE0LDcgQEAKIGNsYXNzIE1JTUVUZXh0KE1JTUVOb25NdWx0aXBhcnQpOgogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD0ndXMtYXNjaWknKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgYSB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF90ZXh0IGlzIHRoZSBzdHJpbmcgZm9yIHRoaXMgbWVzc2FnZSBvYmplY3QuCkBAIC0yNSw2ICsyNSwxOCBAQAogICAgICAgICBoZWFkZXIuICBUaGlzIGRlZmF1bHRzIHRvICJ1cy1hc2NpaSIuICBOb3RlIHRoYXQgYXMgYSBzaWRlLWVmZmVjdCwgdGhlCiAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcgaGVhZGVyIHdpbGwgYWxzbyBiZSBzZXQuCiAgICAgICAgICIiIgorCisgICAgICAgICMgSWYgbm8gX2NoYXJzZXQgd2FzIHNwZWNpZmllZCwgY2hlY2sgdG8gc2VlIHNlZSBpZiB0aGVyZSBhcmUgbm9uLWFzY2lpCisgICAgICAgICMgY2hhcmFjdGVycyBwcmVzZW50LiBJZiBub3QsIHVzZSAndXMtYXNjaWknLCBvdGhlcndpc2UgdXNlIHV0Zi04LgorICAgICAgICAjIFhYWDogVGhpcyBjYW4gYmUgcmVtb3ZlZCBvbmNlICM3MzA0IGlzIGZpeGVkLgorICAgICAgICBpZiBfY2hhcnNldCBpcyBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF90ZXh0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIF9jaGFyc2V0ID0gJ3VzLWFzY2lpJworICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1dGYtOCcKKwogICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKip7J2NoYXJzZXQnOiBfY2hhcnNldH0pCisKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfdGV4dCwgX2NoYXJzZXQpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvcGFyc2VyLnB5IGIvTGliL2VtYWlsL3BhcnNlci5weQppbmRleCAxYzkzMWVhLi4xYWFiMDEyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9wYXJzZXIucHkKQEAgLTQsMTggKzQsMTkgQEAKIAogIiIiQSBwYXJzZXIgb2YgUkZDIDI4MjIgYW5kIE1JTUUgZW1haWwgbWVzc2FnZXMuIiIiCiAKLV9fYWxsX18gPSBbJ1BhcnNlcicsICdIZWFkZXJQYXJzZXInLCAnQnl0ZXNQYXJzZXInXQorX19hbGxfXyA9IFsnUGFyc2VyJywgJ0hlYWRlclBhcnNlcicsICdCeXRlc1BhcnNlcicsICdCeXRlc0hlYWRlclBhcnNlciddCiAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIFRleHRJT1dyYXBwZXIKIAogZnJvbSBlbWFpbC5mZWVkcGFyc2VyIGltcG9ydCBGZWVkUGFyc2VyCiBmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiAKIAogDAogY2xhc3MgUGFyc2VyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd3MpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfY2xhc3M9TWVzc2FnZSwgKiwgcG9saWN5PWNvbXBhdDMyKToKICAgICAgICAgIiIiUGFyc2VyIG9mIFJGQyAyODIyIGFuZCBNSU1FIGVtYWlsIG1lc3NhZ2VzLgogCiAgICAgICAgIENyZWF0ZXMgYW4gaW4tbWVtb3J5IG9iamVjdCB0cmVlIHJlcHJlc2VudGluZyB0aGUgZW1haWwgbWVzc2FnZSwgd2hpY2gKQEAgLTMwLDI4ICszMSwxNCBAQAogICAgICAgICBfY2xhc3MgaXMgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlIGZvciBuZXcgbWVzc2FnZSBvYmplY3RzIHdoZW4gdGhleQogICAgICAgICBtdXN0IGJlIGNyZWF0ZWQuICBUaGlzIGNsYXNzIG11c3QgaGF2ZSBhIGNvbnN0cnVjdG9yIHRoYXQgY2FuIHRha2UKICAgICAgICAgemVybyBhcmd1bWVudHMuICBEZWZhdWx0IGlzIE1lc3NhZ2UuTWVzc2FnZS4KKworICAgICAgICBUaGUgcG9saWN5IGtleXdvcmQgc3BlY2lmaWVzIGEgcG9saWN5IG9iamVjdCB0aGF0IGNvbnRyb2xzIGEgbnVtYmVyIG9mCisgICAgICAgIGFzcGVjdHMgb2YgdGhlIHBhcnNlcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeSBtYWludGFpbnMKKyAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKwogICAgICAgICAiIiIKLSAgICAgICAgaWYgbGVuKGFyZ3MpID49IDE6Ci0gICAgICAgICAgICBpZiAnX2NsYXNzJyBpbiBrd3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJNdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJnICdfY2xhc3MnIikKLSAgICAgICAgICAgIGt3c1snX2NsYXNzJ10gPSBhcmdzWzBdCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAyOgotICAgICAgICAgICAgaWYgJ3N0cmljdCcgaW4ga3dzOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZyAnc3RyaWN0JyIpCi0gICAgICAgICAgICBrd3NbJ3N0cmljdCddID0gYXJnc1sxXQotICAgICAgICBpZiBsZW4oYXJncykgPiAyOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUb28gbWFueSBhcmd1bWVudHMnKQotICAgICAgICBpZiAnX2NsYXNzJyBpbiBrd3M6Ci0gICAgICAgICAgICBzZWxmLl9jbGFzcyA9IGt3c1snX2NsYXNzJ10KLSAgICAgICAgICAgIGRlbCBrd3NbJ19jbGFzcyddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9jbGFzcyA9IE1lc3NhZ2UKLSAgICAgICAgaWYgJ3N0cmljdCcgaW4ga3dzOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiJ3N0cmljdCcgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCAoYW5kIGlnbm9yZWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICAgICAgZGVsIGt3c1snc3RyaWN0J10KLSAgICAgICAgaWYga3dzOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVbmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnRzJykKKyAgICAgICAgc2VsZi5fY2xhc3MgPSBfY2xhc3MKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKIAogICAgIGRlZiBwYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9RmFsc2UpOgogICAgICAgICAiIiJDcmVhdGUgYSBtZXNzYWdlIHN0cnVjdHVyZSBmcm9tIHRoZSBkYXRhIGluIGEgZmlsZS4KQEAgLTYxLDcgKzQ4LDcgQEAKICAgICAgICAgcGFyc2luZyBhZnRlciByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIEZhbHNlLAogICAgICAgICBtZWFuaW5nIGl0IHBhcnNlcyB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgogICAgICAgICAiIiIKLSAgICAgICAgZmVlZHBhcnNlciA9IEZlZWRQYXJzZXIoc2VsZi5fY2xhc3MpCisgICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKHNlbGYuX2NsYXNzLCBwb2xpY3k9c2VsZi5wb2xpY3kpCiAgICAgICAgIGlmIGhlYWRlcnNvbmx5OgogICAgICAgICAgICAgZmVlZHBhcnNlci5fc2V0X2hlYWRlcnNvbmx5KCkKICAgICAgICAgd2hpbGUgVHJ1ZToKQEAgLTEzNCwzICsxMjEsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSB0ZXh0LmRlY29kZSgnQVNDSUknLCBlcnJvcnM9J3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlci5wYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seSkKKworCitjbGFzcyBCeXRlc0hlYWRlclBhcnNlcihCeXRlc1BhcnNlcik6CisgICAgZGVmIHBhcnNlKHNlbGYsIGZwLCBoZWFkZXJzb25seT1UcnVlKToKKyAgICAgICAgcmV0dXJuIEJ5dGVzUGFyc2VyLnBhcnNlKHNlbGYsIGZwLCBoZWFkZXJzb25seT1UcnVlKQorCisgICAgZGVmIHBhcnNlYnl0ZXMoc2VsZiwgdGV4dCwgaGVhZGVyc29ubHk9VHJ1ZSk6CisgICAgICAgIHJldHVybiBCeXRlc1BhcnNlci5wYXJzZWJ5dGVzKHNlbGYsIHRleHQsIGhlYWRlcnNvbmx5PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvcG9saWN5LnB5IGIvTGliL2VtYWlsL3BvbGljeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmNhZDBkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL3BvbGljeS5weQpAQCAtMCwwICsxLDE4OCBAQAorIiIiVGhpcyB3aWxsIGJlIHRoZSBob21lIGZvciB0aGUgcG9saWN5IHRoYXQgaG9va3MgaW4gdGhlIG5ldworY29kZSB0aGF0IGFkZHMgYWxsIHRoZSBlbWFpbDYgZmVhdHVyZXMuCisiIiIKKworZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgUG9saWN5LCBDb21wYXQzMiwgY29tcGF0MzIsIF9leHRlbmRfZG9jc3RyaW5ncworZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCitmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeSBhcyBIZWFkZXJSZWdpc3RyeQorCitfX2FsbF9fID0gWworICAgICdDb21wYXQzMicsCisgICAgJ2NvbXBhdDMyJywKKyAgICAnUG9saWN5JywKKyAgICAnRW1haWxQb2xpY3knLAorICAgICdkZWZhdWx0JywKKyAgICAnc3RyaWN0JywKKyAgICAnU01UUCcsCisgICAgJ0hUVFAnLAorICAgIF0KKworQF9leHRlbmRfZG9jc3RyaW5ncworY2xhc3MgRW1haWxQb2xpY3koUG9saWN5KToKKworICAgICIiIisKKyAgICBQUk9WSVNJT05BTAorCisgICAgVGhlIEFQSSBleHRlbnNpb25zIGVuYWJsZWQgYnkgdGhpcyB0aGlzIHBvbGljeSBhcmUgY3VycmVudGx5IHByb3Zpc2lvbmFsLgorICAgIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorCisgICAgVGhpcyBwb2xpY3kgYWRkcyBuZXcgaGVhZGVyIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtcy4gIEluc3RlYWQgb2YKKyAgICBzaW1wbGUgc3RyaW5ncywgaGVhZGVycyBhcmUgY3VzdG9tIG9iamVjdHMgd2l0aCBjdXN0b20gYXR0cmlidXRlcworICAgIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGUgZmllbGQuICBUaGUgZm9sZGluZyBhbGdvcml0aG0gZnVsbHkKKyAgICBpbXBsZW1lbnRzIFJGQ3MgMjA0NyBhbmQgNTMyMi4KKworICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzZXR0YWJsZSBhdHRyaWJ1dGVzIGxpc3RlZCBhYm92ZSB0aGF0IGFwcGx5IHRvCisgICAgYWxsIFBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisgICAgcmVmb2xkX3NvdXJjZSAgICAgICAtLSBpZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBNZXNzYWdlIG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZSBmcm9tIHRoZSBwYXJzaW5nIG9mIHNvbWUgc291cmNlLCB0aGlzIGF0dHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZXJhdG9yIHNob3VsZCByZWZvbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdmFsdWUgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gZm9ybS4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lICAtLSBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAgLS0gc291cmNlIHZhbHVlcyB0aGF0IGhhdmUgYW55IGxpbmUgdGhhdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2VyIHRoYW4gbWF4X2xpbmVfbGVuZ3RoIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZm9sZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGwgIC0tIGFsbCB2YWx1ZXMgYXJlIHJlZm9sZGVkLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyAnbG9uZycuCisKKyAgICBoZWFkZXJfZmFjdG9yeSAgICAgIC0tIGEgY2FsbGFibGUgdGhhdCB0YWtlcyB0d28gYXJndW1lbnRzLCAnbmFtZScgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnLCB3aGVyZSAnbmFtZScgaXMgYSBoZWFkZXIgZmllbGQgbmFtZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZScgaXMgYW4gdW5mb2xkZWQgaGVhZGVyIGZpZWxkIHZhbHVlLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnMgYSBzdHJpbmctbGlrZSBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci4gIEEgZGVmYXVsdCBoZWFkZXJfZmFjdG9yeSBpcyBwcm92aWRlZCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcnN0YW5kcyBzb21lIG9mIHRoZSBSRkM1MzIyIGhlYWRlciBmaWVsZCB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChDdXJyZW50bHkgYWRkcmVzcyBmaWVsZHMgYW5kIGRhdGUgZmllbGRzIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIgZmllbGRzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlYXRlZCBhcyB1bnN0cnVjdHVyZWQuICBUaGlzIGxpc3Qgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkIGJlZm9yZSB0aGUgZXh0ZW5zaW9uIGlzIG1hcmtlZCBzdGFibGUuKQorICAgICIiIgorCisgICAgcmVmb2xkX3NvdXJjZSA9ICdsb25nJworICAgIGhlYWRlcl9mYWN0b3J5ID0gSGVhZGVyUmVnaXN0cnkoKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3cpOgorICAgICAgICAjIEVuc3VyZSB0aGF0IGVhY2ggbmV3IGluc3RhbmNlIGdldHMgYSB1bmlxdWUgaGVhZGVyIGZhY3RvcnkKKyAgICAgICAgIyAoYXMgb3Bwb3NlZCB0byBjbG9uZXMsIHdoaWNoIHNoYXJlIHRoZSBmYWN0b3J5KS4KKyAgICAgICAgaWYgJ2hlYWRlcl9mYWN0b3J5JyBub3QgaW4ga3c6CisgICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgJ2hlYWRlcl9mYWN0b3J5JywgSGVhZGVyUmVnaXN0cnkoKSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3KQorCisgICAgZGVmIGhlYWRlcl9tYXhfY291bnQoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHJldHVybnMgdGhlIG1heF9jb3VudCBhdHRyaWJ1dGUgZnJvbQorICAgICAgICB0aGUgc3BlY2lhbGl6ZWQgaGVhZGVyIGNsYXNzIHRoYXQgd291bGQgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBoZWFkZXIKKyAgICAgICAgb2YgdHlwZSAnbmFtZScuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJfZmFjdG9yeVtuYW1lXS5tYXhfY291bnQKKworICAgICMgVGhlIGxvZ2ljIG9mIHRoZSBuZXh0IHRocmVlIG1ldGhvZHMgaXMgY2hvc2VuIHN1Y2ggdGhhdCBpdCBpcyBwb3NzaWJsZSB0bworICAgICMgc3dpdGNoIGEgTWVzc2FnZSBvYmplY3QgYmV0d2VlbiBhIENvbXBhdDMyIHBvbGljeSBhbmQgYSBwb2xpY3kgZGVyaXZlZAorICAgICMgZnJvbSB0aGlzIGNsYXNzIGFuZCBoYXZlIHRoZSByZXN1bHRzIHN0YXkgY29uc2lzdGVudC4gIFRoaXMgYWxsb3dzIGEKKyAgICAjIE1lc3NhZ2Ugb2JqZWN0IGNvbnN0cnVjdGVkIHdpdGggdGhpcyBwb2xpY3kgdG8gYmUgcGFzc2VkIHRvIGEgbGlicmFyeQorICAgICMgdGhhdCBvbmx5IGhhbmRsZXMgQ29tcGF0MzIgb2JqZWN0cywgb3IgdG8gcmVjZWl2ZSBzdWNoIGFuIG9iamVjdCBhbmQKKyAgICAjIGNvbnZlcnQgaXQgdG8gdXNlIHRoZSBuZXdlciBzdHlsZSBieSBqdXN0IGNoYW5naW5nIGl0cyBwb2xpY3kuICBJdCBpcworICAgICMgYWxzbyBjaG9zZW4gYmVjYXVzZSBpdCBwb3N0cG9uZXMgdGhlIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGZ1bGwgcmZjNTMyMgorICAgICMgcGFyc2UgdW50aWwgYXMgbGF0ZSBhcyBwb3NzaWJsZSB3aGVuIHBhcnNpbmcgZnJvbSBzb3VyY2UsIHNpbmNlIGluIG1hbnkKKyAgICAjIGFwcGxpY2F0aW9ucyBvbmx5IGEgZmV3IGhlYWRlcnMgd2lsbCBhY3R1YWxseSBiZSBpbnNwZWN0ZWQuCisKKyAgICBkZWYgaGVhZGVyX3NvdXJjZV9wYXJzZShzZWxmLCBzb3VyY2VsaW5lcyk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICc6JyBhbmQgcmV0dXJuZWQgdW5tb2RpZmllZC4KKyAgICAgICAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYgdGhlCisgICAgICAgIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwgYW5kCisgICAgICAgIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuICAoVGhpcworICAgICAgICBpcyB0aGUgc2FtZSBhcyBDb21wYXQzMikuCisKKyAgICAgICAgIiIiCisgICAgICAgIG5hbWUsIHZhbHVlID0gc291cmNlbGluZXNbMF0uc3BsaXQoJzonLCAxKQorICAgICAgICB2YWx1ZSA9IHZhbHVlLmxzdHJpcCgnIFx0JykgKyAnJy5qb2luKHNvdXJjZWxpbmVzWzE6XSkKKyAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZS5yc3RyaXAoJ1xyXG4nKSkKKworICAgIGRlZiBoZWFkZXJfc3RvcmVfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4gIElmIHRoZSBpbnB1dCB2YWx1ZSBoYXMgYSAnbmFtZScKKyAgICAgICAgYXR0cmlidXRlIGFuZCBpdCBtYXRjaGVzIHRoZSBuYW1lIGlnbm9yaW5nIGNhc2UsIHRoZSB2YWx1ZSBpcyByZXR1cm5lZAorICAgICAgICB1bmNoYW5nZWQuICBPdGhlcndpc2UgdGhlIG5hbWUgYW5kIHZhbHVlIGFyZSBwYXNzZWQgdG8gaGVhZGVyX2ZhY3RvcnkKKyAgICAgICAgbWV0aG9kLCBhbmQgdGhlIHJlc3VsdGluZyBjdXN0b20gaGVhZGVyIG9iamVjdCBpcyByZXR1cm5lZCBhcyB0aGUKKyAgICAgICAgdmFsdWUuICBJbiB0aGlzIGNhc2UgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQgdmFsdWUgY29udGFpbnMKKyAgICAgICAgQ1Igb3IgTEYgY2hhcmFjdGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaGFzYXR0cih2YWx1ZSwgJ25hbWUnKSBhbmQgdmFsdWUubmFtZS5sb3dlcigpID09IG5hbWUubG93ZXIoKToKKyAgICAgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUpCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cikgYW5kIGxlbih2YWx1ZS5zcGxpdGxpbmVzKCkpPjE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJIZWFkZXIgdmFsdWVzIG1heSBub3QgY29udGFpbiBsaW5lZmVlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvciBjYXJyaWFnZSByZXR1cm4gY2hhcmFjdGVycyIpCisgICAgICAgIHJldHVybiAobmFtZSwgc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCB2YWx1ZSkpCisKKyAgICBkZWYgaGVhZGVyX2ZldGNoX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBJZiB0aGUgdmFsdWUgaGFzIGEgJ25hbWUnIGF0dHJpYnV0ZSwgaXQgaXMgcmV0dXJuZWQgdG8gdW5tb2RpZmllZC4KKyAgICAgICAgT3RoZXJ3aXNlIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgd2l0aCBhbnkgbGluZXNlcCBjaGFyYWN0ZXJzIHJlbW92ZWQKKyAgICAgICAgYXJlIHBhc3NlZCB0byB0aGUgaGVhZGVyX2ZhY3RvcnkgbWV0aG9kLCBhbmQgdGhlIHJlc3VsdGluZyBjdXN0b20KKyAgICAgICAgaGVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gIEFueSBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGdldCB0dXJuZWQKKyAgICAgICAgaW50byB0aGUgdW5pY29kZSB1bmtub3duLWNoYXJhY3RlciBnbHlwaC4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaGFzYXR0cih2YWx1ZSwgJ25hbWUnKToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCAnJy5qb2luKHZhbHVlLnNwbGl0bGluZXMoKSkpCisKKyAgICBkZWYgZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSGVhZGVyIGZvbGRpbmcgaXMgY29udHJvbGxlZCBieSB0aGUgcmVmb2xkX3NvdXJjZSBwb2xpY3kgc2V0dGluZy4gIEEKKyAgICAgICAgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSBhICdzb3VyY2UgdmFsdWUnIGlmIGFuZCBvbmx5IGlmIGl0IGRvZXMgbm90CisgICAgICAgIGhhdmUgYSAnbmFtZScgYXR0cmlidXRlIChoYXZpbmcgYSAnbmFtZScgYXR0cmlidXRlIG1lYW5zIGl0IGlzIGEgaGVhZGVyCisgICAgICAgIG9iamVjdCBvZiBzb21lIHNvcnQpLiAgSWYgYSBzb3VyY2UgdmFsdWUgbmVlZHMgdG8gYmUgcmVmb2xkZWQgYWNjb3JkaW5nCisgICAgICAgIHRvIHRoZSBwb2xpY3ksIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgYnkgcGFzc2luZworICAgICAgICB0aGUgbmFtZSBhbmQgdGhlIHZhbHVlIHdpdGggYW55IGxpbmVzZXAgY2hhcmFjdGVycyByZW1vdmVkIHRvIHRoZQorICAgICAgICBoZWFkZXJfZmFjdG9yeSBtZXRob2QuICBGb2xkaW5nIG9mIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgZG9uZSBieQorICAgICAgICBjYWxsaW5nIGl0cyBmb2xkIG1ldGhvZCB3aXRoIHRoZSBjdXJyZW50IHBvbGljeS4KKworICAgICAgICBTb3VyY2UgdmFsdWVzIGFyZSBzcGxpdCBpbnRvIGxpbmVzIHVzaW5nIHNwbGl0bGluZXMuICBJZiB0aGUgdmFsdWUgaXMKKyAgICAgICAgbm90IHRvIGJlIHJlZm9sZGVkLCB0aGUgbGluZXMgYXJlIHJlam9pbmVkIHVzaW5nIHRoZSBsaW5lc2VwIGZyb20gdGhlCisgICAgICAgIHBvbGljeSBhbmQgcmV0dXJuZWQuICBUaGUgZXhjZXB0aW9uIGlzIGxpbmVzIGNvbnRhaW5pbmcgbm9uLWFzY2lpCisgICAgICAgIGJpbmFyeSBkYXRhLiAgSW4gdGhhdCBjYXNlIHRoZSB2YWx1ZSBpcyByZWZvbGRlZCByZWdhcmRsZXNzIG9mIHRoZQorICAgICAgICByZWZvbGRfc291cmNlIHNldHRpbmcsIHdoaWNoIGNhdXNlcyB0aGUgYmluYXJ5IGRhdGEgdG8gYmUgQ1RFIGVuY29kZWQKKyAgICAgICAgdXNpbmcgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0LgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1UcnVlKQorCisgICAgZGVmIGZvbGRfYmluYXJ5KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgc2FtZSBhcyBmb2xkIGlmIGN0ZV90eXBlIGlzIDdiaXQsIGV4Y2VwdCB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZSBpcworICAgICAgICBieXRlcy4KKworICAgICAgICBJZiBjdGVfdHlwZSBpcyA4Yml0LCBub24tQVNDSUkgYmluYXJ5IGRhdGEgaXMgY29udmVydGVkIGJhY2sgaW50bworICAgICAgICBieXRlcy4gIEhlYWRlcnMgd2l0aCBiaW5hcnkgZGF0YSBhcmUgbm90IHJlZm9sZGVkLCByZWdhcmRsZXNzIG9mIHRoZQorICAgICAgICByZWZvbGRfaGVhZGVyIHNldHRpbmcsIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZXRoZXIgdGhlIGJpbmFyeQorICAgICAgICBkYXRhIGNvbnNpc3RzIG9mIHNpbmdsZSBieXRlIGNoYXJhY3RlcnMgb3IgbXVsdGlieXRlIGNoYXJhY3RlcnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZvbGRlZCA9IHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9c2VsZi5jdGVfdHlwZT09JzdiaXQnKQorICAgICAgICByZXR1cm4gZm9sZGVkLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiBfZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1GYWxzZSk6CisgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUuZm9sZChwb2xpY3k9c2VsZikKKyAgICAgICAgbWF4bGVuID0gc2VsZi5tYXhfbGluZV9sZW5ndGggaWYgc2VsZi5tYXhfbGluZV9sZW5ndGggZWxzZSBmbG9hdCgnaW5mJykKKyAgICAgICAgbGluZXMgPSB2YWx1ZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgcmVmb2xkID0gKHNlbGYucmVmb2xkX3NvdXJjZSA9PSAnYWxsJyBvcgorICAgICAgICAgICAgICAgICAgc2VsZi5yZWZvbGRfc291cmNlID09ICdsb25nJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgKGxlbihsaW5lc1swXSkrbGVuKG5hbWUpKzIgPiBtYXhsZW4gb3IKKyAgICAgICAgICAgICAgICAgICAgIGFueShsZW4oeCkgPiBtYXhsZW4gZm9yIHggaW4gbGluZXNbMTpdKSkpCisgICAgICAgIGlmIHJlZm9sZCBvciByZWZvbGRfYmluYXJ5IGFuZCBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgJycuam9pbihsaW5lcykpLmZvbGQocG9saWN5PXNlbGYpCisgICAgICAgIHJldHVybiBuYW1lICsgJzogJyArIHNlbGYubGluZXNlcC5qb2luKGxpbmVzKSArIHNlbGYubGluZXNlcAorCisKK2RlZmF1bHQgPSBFbWFpbFBvbGljeSgpCisjIE1ha2UgdGhlIGRlZmF1bHQgcG9saWN5IHVzZSB0aGUgY2xhc3MgZGVmYXVsdCBoZWFkZXJfZmFjdG9yeQorZGVsIGRlZmF1bHQuaGVhZGVyX2ZhY3RvcnkKK3N0cmljdCA9IGRlZmF1bHQuY2xvbmUocmFpc2Vfb25fZGVmZWN0PVRydWUpCitTTVRQID0gZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdcclxuJykKK0hUVFAgPSBkZWZhdWx0LmNsb25lKGxpbmVzZXA9J1xyXG4nLCBtYXhfbGluZV9sZW5ndGg9Tm9uZSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC91dGlscy5weSBiL0xpYi9lbWFpbC91dGlscy5weQppbmRleCBhYzRkYTM3Li42YjZkN2Y0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdXRpbHMucHkKKysrIGIvTGliL2VtYWlsL3V0aWxzLnB5CkBAIC0xMSwxMiArMTEsMTQgQEAKICAgICAnZW5jb2RlX3JmYzIyMzEnLAogICAgICdmb3JtYXRhZGRyJywKICAgICAnZm9ybWF0ZGF0ZScsCisgICAgJ2Zvcm1hdF9kYXRldGltZScsCiAgICAgJ2dldGFkZHJlc3NlcycsCiAgICAgJ21ha2VfbXNnaWQnLAogICAgICdta3RpbWVfdHonLAogICAgICdwYXJzZWFkZHInLAogICAgICdwYXJzZWRhdGUnLAogICAgICdwYXJzZWRhdGVfdHonLAorICAgICdwYXJzZWRhdGVfdG9fZGF0ZXRpbWUnLAogICAgICd1bnF1b3RlJywKICAgICBdCiAKQEAgLTI2LDYgKzI4LDcgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCByYW5kb20KIGltcG9ydCBzb2NrZXQKK2ltcG9ydCBkYXRldGltZQogaW1wb3J0IHVybGxpYi5wYXJzZQogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwpAQCAtMzQsMTQgKzM3LDEzIEBACiBmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IEFkZHJlc3NMaXN0IGFzIF9BZGRyZXNzTGlzdAogZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBta3RpbWVfdHoKIAotIyBXZSBuZWVkIHdvcm1hcm91bmRzIGZvciBidWdzIGluIHRoZXNlIG1ldGhvZHMgaW4gb2xkZXIgUHl0aG9ucyAoc2VlIGJlbG93KQotZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBwYXJzZWRhdGUgYXMgX3BhcnNlZGF0ZQotZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBwYXJzZWRhdGVfdHogYXMgX3BhcnNlZGF0ZV90egorZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBwYXJzZWRhdGUsIHBhcnNlZGF0ZV90eiwgX3BhcnNlZGF0ZV90egogCiBmcm9tIHF1b3ByaSBpbXBvcnQgZGVjb2Rlc3RyaW5nIGFzIF9xZGVjb2RlCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwuZW5jb2RlcnMgaW1wb3J0IF9iZW5jb2RlLCBfcWVuY29kZQorZnJvbSBlbWFpbC5jaGFyc2V0IGltcG9ydCBDaGFyc2V0CiAKIENPTU1BU1BBQ0UgPSAnLCAnCiBFTVBUWVNUUklORyA9ICcnCkBAIC01MCwyNyArNTIsNTMgQEAKIFRJQ0sgPSAiJyIKIAogc3BlY2lhbHNyZSA9IHJlLmNvbXBpbGUocidbXVtcXCgpPD5ALDo7Ii5dJykKLWVzY2FwZXNyZSA9IHJlLmNvbXBpbGUocidbXVtcXCgpIl0nKQorZXNjYXBlc3JlID0gcmUuY29tcGlsZShyJ1tcXCJdJykKIAorIyBIb3cgdG8gZmlndXJlIG91dCBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBzdHJpbmdzIHRoYXQgY29tZSBmcm9tIGEgYnl0ZQorIyBzb3VyY2Ugd2l0aCB1bmRlY29kYWJsZSBjaGFyYWN0ZXJzLgorX2hhc19zdXJyb2dhdGVzID0gcmUuY29tcGlsZSgKKyAgICAnKFteXHVkODAwLVx1ZGJmZl18XEEpW1x1ZGMwMC1cdWRmZmZdKFteXHVkYzAwLVx1ZGZmZl18XFopJykuc2VhcmNoCisKKyMgSG93IHRvIGRlYWwgd2l0aCBhIHN0cmluZyBjb250YWluaW5nIGJ5dGVzIGJlZm9yZSBoYW5kaW5nIGl0IHRvIHRoZQorIyBhcHBsaWNhdGlvbiB0aHJvdWdoIHRoZSAnbm9ybWFsJyBpbnRlcmZhY2UuCitkZWYgX3Nhbml0aXplKHN0cmluZyk6CisgICAgIyBUdXJuIGFueSBlc2NhcGVkIGJ5dGVzIGludG8gdW5pY29kZSAndW5rbm93bicgY2hhci4KKyAgICBvcmlnaW5hbF9ieXRlcyA9IHN0cmluZy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgcmV0dXJuIG9yaWdpbmFsX2J5dGVzLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCiAKIAogIyBIZWxwZXJzCiAKLWRlZiBmb3JtYXRhZGRyKHBhaXIpOgorZGVmIGZvcm1hdGFkZHIocGFpciwgY2hhcnNldD0ndXRmLTgnKToKICAgICAiIiJUaGUgaW52ZXJzZSBvZiBwYXJzZWFkZHIoKSwgdGhpcyB0YWtlcyBhIDItdHVwbGUgb2YgdGhlIGZvcm0KICAgICAocmVhbG5hbWUsIGVtYWlsX2FkZHJlc3MpIGFuZCByZXR1cm5zIHRoZSBzdHJpbmcgdmFsdWUgc3VpdGFibGUKICAgICBmb3IgYW4gUkZDIDI4MjIgRnJvbSwgVG8gb3IgQ2MgaGVhZGVyLgogCiAgICAgSWYgdGhlIGZpcnN0IGVsZW1lbnQgb2YgcGFpciBpcyBmYWxzZSwgdGhlbiB0aGUgc2Vjb25kIGVsZW1lbnQgaXMKICAgICByZXR1cm5lZCB1bm1vZGlmaWVkLgorCisgICAgT3B0aW9uYWwgY2hhcnNldCBpZiBnaXZlbiBpcyB0aGUgY2hhcmFjdGVyIHNldCB0aGF0IGlzIHVzZWQgdG8gZW5jb2RlCisgICAgcmVhbG5hbWUgaW4gY2FzZSByZWFsbmFtZSBpcyBub3QgQVNDSUkgc2FmZS4gIENhbiBiZSBhbiBpbnN0YW5jZSBvZiBzdHIgb3IKKyAgICBhIENoYXJzZXQtbGlrZSBvYmplY3Qgd2hpY2ggaGFzIGEgaGVhZGVyX2VuY29kZSBtZXRob2QuICBEZWZhdWx0IGlzCisgICAgJ3V0Zi04Jy4KICAgICAiIiIKICAgICBuYW1lLCBhZGRyZXNzID0gcGFpcgorICAgICMgVGhlIGFkZHJlc3MgTVVTVCAocGVyIFJGQykgYmUgYXNjaWksIHNvIHRocm93IGEgVW5pY29kZUVycm9yIGlmIGl0IGlzbid0LgorICAgIGFkZHJlc3MuZW5jb2RlKCdhc2NpaScpCiAgICAgaWYgbmFtZToKLSAgICAgICAgcXVvdGVzID0gJycKLSAgICAgICAgaWYgc3BlY2lhbHNyZS5zZWFyY2gobmFtZSk6Ci0gICAgICAgICAgICBxdW90ZXMgPSAnIicKLSAgICAgICAgbmFtZSA9IGVzY2FwZXNyZS5zdWIocidcXFxnPDA+JywgbmFtZSkKLSAgICAgICAgcmV0dXJuICclcyVzJXMgPCVzPicgJSAocXVvdGVzLCBuYW1lLCBxdW90ZXMsIGFkZHJlc3MpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWUuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoYXJzZXQsIHN0cik6CisgICAgICAgICAgICAgICAgY2hhcnNldCA9IENoYXJzZXQoY2hhcnNldCkKKyAgICAgICAgICAgIGVuY29kZWRfbmFtZSA9IGNoYXJzZXQuaGVhZGVyX2VuY29kZShuYW1lKQorICAgICAgICAgICAgcmV0dXJuICIlcyA8JXM+IiAlIChlbmNvZGVkX25hbWUsIGFkZHJlc3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBxdW90ZXMgPSAnJworICAgICAgICAgICAgaWYgc3BlY2lhbHNyZS5zZWFyY2gobmFtZSk6CisgICAgICAgICAgICAgICAgcXVvdGVzID0gJyInCisgICAgICAgICAgICBuYW1lID0gZXNjYXBlc3JlLnN1YihyJ1xcXGc8MD4nLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuICclcyVzJXMgPCVzPicgJSAocXVvdGVzLCBuYW1lLCBxdW90ZXMsIGFkZHJlc3MpCiAgICAgcmV0dXJuIGFkZHJlc3MKIAogCkBAIC05NCw2ICsxMjIsMTQgQEAKICAgJycnLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkKIAogCitkZWYgX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUodGltZXR1cGxlLCB6b25lKToKKyAgICByZXR1cm4gJyVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgJXMnICUgKAorICAgICAgICBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddW3RpbWV0dXBsZVs2XV0sCisgICAgICAgIHRpbWV0dXBsZVsyXSwKKyAgICAgICAgWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsCisgICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVt0aW1ldHVwbGVbMV0gLSAxXSwKKyAgICAgICAgdGltZXR1cGxlWzBdLCB0aW1ldHVwbGVbM10sIHRpbWV0dXBsZVs0XSwgdGltZXR1cGxlWzVdLAorICAgICAgICB6b25lKQogCiBkZWYgZm9ybWF0ZGF0ZSh0aW1ldmFsPU5vbmUsIGxvY2FsdGltZT1GYWxzZSwgdXNlZ210PUZhbHNlKToKICAgICAiIiJSZXR1cm5zIGEgZGF0ZSBzdHJpbmcgYXMgc3BlY2lmaWVkIGJ5IFJGQyAyODIyLCBlLmcuOgpAQCAtMTM4LDE0ICsxNzQsMjUgQEAKICAgICAgICAgICAgIHpvbmUgPSAnR01UJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgem9uZSA9ICctMDAwMCcKLSAgICByZXR1cm4gJyVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgJXMnICUgKAotICAgICAgICBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddW25vd1s2XV0sCi0gICAgICAgIG5vd1syXSwKLSAgICAgICAgWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsCi0gICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVtub3dbMV0gLSAxXSwKLSAgICAgICAgbm93WzBdLCBub3dbM10sIG5vd1s0XSwgbm93WzVdLAotICAgICAgICB6b25lKQorICAgIHJldHVybiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZShub3csIHpvbmUpCiAKK2RlZiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSk6CisgICAgIiIiVHVybiBhIGRhdGV0aW1lIGludG8gYSBkYXRlIHN0cmluZyBhcyBzcGVjaWZpZWQgaW4gUkZDIDI4MjIuCisKKyAgICBJZiB1c2VnbXQgaXMgVHJ1ZSwgZHQgbXVzdCBiZSBhbiBhd2FyZSBkYXRldGltZSB3aXRoIGFuIG9mZnNldCBvZiB6ZXJvLiAgSW4KKyAgICB0aGlzIGNhc2UgJ0dNVCcgd2lsbCBiZSByZW5kZXJlZCBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgKzAwMDAgcmVxdWlyZWQgYnkKKyAgICBSRkMyODIyLiAgVGhpcyBpcyB0byBzdXBwb3J0IEhUVFAgaGVhZGVycyBpbnZvbHZpbmcgZGF0ZSBzdGFtcHMuCisgICAgIiIiCisgICAgbm93ID0gZHQudGltZXR1cGxlKCkKKyAgICBpZiB1c2VnbXQ6CisgICAgICAgIGlmIGR0LnR6aW5mbyBpcyBOb25lIG9yIGR0LnR6aW5mbyAhPSBkYXRldGltZS50aW1lem9uZS51dGM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1c2VnbXQgb3B0aW9uIHJlcXVpcmVzIGEgVVRDIGRhdGV0aW1lIikKKyAgICAgICAgem9uZSA9ICdHTVQnCisgICAgZWxpZiBkdC50emluZm8gaXMgTm9uZToKKyAgICAgICAgem9uZSA9ICctMDAwMCcKKyAgICBlbHNlOgorICAgICAgICB6b25lID0gZHQuc3RyZnRpbWUoIiV6IikKKyAgICByZXR1cm4gX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUobm93LCB6b25lKQogCiAKIGRlZiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKToKQEAgLTE3MiwyMCArMjE5LDEyIEBACiAgICAgcmV0dXJuIG1zZ2lkCiAKIAotCi0jIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIHN0YW5kYWxvbmUgbWltZWxpYiB2ZXJzaW9uIG9ubHkgYmVjYXVzZSB0aGV5J3ZlCi0jIHN1YnNlcXVlbnRseSBiZWVuIGZpeGVkIGluIHRoZSBsYXRlc3QgUHl0aG9uIHZlcnNpb25zLiAgV2UgdXNlIHRoaXMgdG8gd29ybQotIyBhcm91bmQgYnJva2VuIG9sZGVyIFB5dGhvbnMuCi1kZWYgcGFyc2VkYXRlKGRhdGEpOgotICAgIGlmIG5vdCBkYXRhOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBfcGFyc2VkYXRlKGRhdGEpCi0KLQotZGVmIHBhcnNlZGF0ZV90eihkYXRhKToKLSAgICBpZiBub3QgZGF0YToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gX3BhcnNlZGF0ZV90eihkYXRhKQorZGVmIHBhcnNlZGF0ZV90b19kYXRldGltZShkYXRhKToKKyAgICAqZHR1cGxlLCB0eiA9IF9wYXJzZWRhdGVfdHooZGF0YSkKKyAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKmR0dXBsZVs6Nl0pCisgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lKCpkdHVwbGVbOjZdLAorICAgICAgICAgICAgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPXR6KSkpCiAKIAogZGVmIHBhcnNlYWRkcihhZGRyKToKQEAgLTMwNCwzICszNDMsNDkgQEAKICAgICBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgICAgICMgY2hhcnNldCBpcyBub3QgYSBrbm93biBjb2RlYy4KICAgICAgICAgcmV0dXJuIHVucXVvdGUodGV4dCkKKworCisjCisjIGRhdGV0aW1lIGRvZXNuJ3QgcHJvdmlkZSBhIGxvY2FsdGltZSBmdW5jdGlvbiB5ZXQsIHNvIHByb3ZpZGUgb25lLiAgQ29kZQorIyBhZGFwdGVkIGZyb20gdGhlIHBhdGNoIGluIGlzc3VlIDk1MjcuICBUaGlzIG1heSBub3QgYmUgcGVyZmVjdCwgYnV0IGl0IGlzCisjIGJldHRlciB0aGFuIG5vdCBoYXZpbmcgaXQuCisjCisKK2RlZiBsb2NhbHRpbWUoZHQ9Tm9uZSwgaXNkc3Q9LTEpOgorICAgICIiIlJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4KKworICAgIElmIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqCisgICAgYXJndW1lbnQgc2hvdWxkIGJlIGEgZGF0ZXRpbWUgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlCisgICAgbG9jYWwgdGltZSB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMKKyAgICBuYWl2ZSAodGhhdCBpcywgZHQudHppbmZvIGlzIE5vbmUpLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuCisgICAgSW4gdGhpcyBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGxvY2FsdGltZSB0bworICAgIHByZXN1bWUgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkKKyAgICBpcyBvciBpcyBub3QgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBCisgICAgbmVnYXRpdmUgdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIHRoZSBsb2NhbHRpbWUoKSBmdW5jdGlvbiB0byBhdHRlbXB0CisgICAgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAiIiIKKyAgICBpZiBkdCBpcyBOb25lOgorICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykuYXN0aW1lem9uZSgpCisgICAgaWYgZHQudHppbmZvIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZHQuYXN0aW1lem9uZSgpCisgICAgIyBXZSBoYXZlIGEgbmFpdmUgZGF0ZXRpbWUuICBDb252ZXJ0IHRvIGEgKGxvY2FsdGltZSkgdGltZXR1cGxlIGFuZCBwYXNzIHRvCisgICAgIyBzeXN0ZW0gbWt0aW1lIHRvZ2V0aGVyIHdpdGggdGhlIGlzZHN0IGhpbnQuICBTeXN0ZW0gbWt0aW1lIHdpbGwgcmV0dXJuCisgICAgIyBzZWNvbmRzIHNpbmNlIGVwb2NoLgorICAgIHRtID0gZHQudGltZXR1cGxlKClbOi0xXSArIChpc2RzdCwpCisgICAgc2Vjb25kcyA9IHRpbWUubWt0aW1lKHRtKQorICAgIGxvY2FsdG0gPSB0aW1lLmxvY2FsdGltZShzZWNvbmRzKQorICAgIHRyeToKKyAgICAgICAgZGVsdGEgPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1sb2NhbHRtLnRtX2dtdG9mZikKKyAgICAgICAgdHogPSBkYXRldGltZS50aW1lem9uZShkZWx0YSwgbG9jYWx0bS50bV96b25lKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZCBieSB0bV9pc2RzdC4KKyAgICAgICAgIyBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZSBpbXBsaWVkIGJ5IHRtX2lzZHN0LgorICAgICAgICBkZWx0YSA9IGR0IC0gZGF0ZXRpbWUuZGF0ZXRpbWUoKnRpbWUuZ210aW1lKHNlY29uZHMpWzo2XSkKKyAgICAgICAgZHN0ID0gdGltZS5kYXlsaWdodCBhbmQgbG9jYWx0bS50bV9pc2RzdCA+IDAKKyAgICAgICAgZ210b2ZmID0gLSh0aW1lLmFsdHpvbmUgaWYgZHN0IGVsc2UgdGltZS50aW1lem9uZSkKKyAgICAgICAgaWYgZGVsdGEgPT0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKKyAgICAgICAgICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUoZGVsdGEsIHRpbWUudHpuYW1lW2RzdF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKGRlbHRhKQorICAgIHJldHVybiBkdC5yZXBsYWNlKHR6aW5mbz10eikKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkgYi9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5CmluZGV4IDRlZGQ3MDguLmJmZTJjMWUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkKKysrIGIvTGliL2VuY29kaW5ncy9jcDAzNy5weQpAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgICdceGRhJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAorICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9jcDUwMC5weSBiL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkKaW5kZXggNWY2MTUzNS4uYTk3NWJlNyAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9jcDUwMC5weQorKysgYi9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5CkBAIC0zMDEsNiArMzAxLDcgQEAKICAgICAnXHhkOScgICAgICMgIDB4RkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAgJ1x4ZGEnICAgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgICdceDlmJyAgICAgIyAgMHhGRiAtPiBDT05UUk9MCisgICAgJ1x1ZmZmZScgICAjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24KICkKIAogIyMjIEVuY29kaW5nIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3ZWI4NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weQpAQCAtMCwwICsxLDQwIEBACisiIiIKK0NvZGUgcGFnZSA2NTAwMTogV2luZG93cyBVVEYtOCAoQ1BfVVRGOCkuCisiIiIKKworaW1wb3J0IGNvZGVjcworaW1wb3J0IGZ1bmN0b29scworCitpZiBub3QgaGFzYXR0cihjb2RlY3MsICdjb2RlX3BhZ2VfZW5jb2RlJyk6CisgICAgcmFpc2UgTG9va3VwRXJyb3IoImNwNjUwMDEgZW5jb2RpbmcgaXMgb25seSBhdmFpbGFibGUgb24gV2luZG93cyIpCisKKyMjIyBDb2RlYyBBUElzCisKK2VuY29kZSA9IGZ1bmN0b29scy5wYXJ0aWFsKGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCA2NTAwMSkKK2RlY29kZSA9IGZ1bmN0b29scy5wYXJ0aWFsKGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA2NTAwMSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCisKK2NsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgorICAgIF9idWZmZXJfZGVjb2RlID0gZGVjb2RlCisKK2NsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBlbmNvZGUgPSBlbmNvZGUKKworY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIGRlY29kZSA9IGRlY29kZQorCisjIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKKworZGVmIGdldHJlZ2VudHJ5KCk6CisgICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCisgICAgICAgIG5hbWU9J2NwNjUwMDEnLAorICAgICAgICBlbmNvZGU9ZW5jb2RlLAorICAgICAgICBkZWNvZGU9ZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5IGIvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKaW5kZXggZGJhYWE3Mi4uMjMzNDIwOCAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKKysrIGIvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKQEAgLTE0LDE4ICsxNCwxOCBAQAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKIAogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQ2LDEwNyArNDYsMjY3IEBACiAgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwYTE6IDB4MDBjMCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGEyOiAweDAwYzIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGEzOiAweDAwYzgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBhNDogMHgwMGNhLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhNTogMHgwMGNiLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGE2OiAweDAwY2UsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGE3OiAweDAwY2YsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwYTg6IDB4MDBiNCwgIyAgICAgICBBQ1VURSBBQ0NFTlQKLSAgICAgICAgMHgwMGE5OiAweDAyY2IsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIEdSQVZFIEFDQ0VOVCAoTWFuZGFyaW4gQ2hpbmVzZSBmb3VydGggdG9uZSkKLSAgICAgICAgMHgwMGFhOiAweDAyYzYsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCi0gICAgICAgIDB4MDBhYjogMHgwMGE4LCAjICAgICAgIERJQUVSRVNJUwotICAgICAgICAweDAwYWM6IDB4MDJkYywgIyAgICAgICBTTUFMTCBUSUxERQotICAgICAgICAweDAwYWQ6IDB4MDBkOSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGFlOiAweDAwZGIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGFmOiAweDIwYTQsICMgICAgICAgTElSQSBTSUdOCi0gICAgICAgIDB4MDBiMDogMHgwMGFmLCAjICAgICAgIE1BQ1JPTgotICAgICAgICAweDAwYjE6IDB4MDBkZCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGIyOiAweDAwZmQsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQotICAgICAgICAweDAwYjM6IDB4MDBiMCwgIyAgICAgICBERUdSRUUgU0lHTgotICAgICAgICAweDAwYjQ6IDB4MDBjNywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYjU6IDB4MDBlNywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGI2OiAweDAwZDEsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBiNzogMHgwMGYxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKLSAgICAgICAgMHgwMGI4OiAweDAwYTEsICMgICAgICAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwotICAgICAgICAweDAwYjk6IDB4MDBiZiwgIyAgICAgICBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCi0gICAgICAgIDB4MDBiYTogMHgwMGE0LCAjICAgICAgIENVUlJFTkNZIFNJR04KLSAgICAgICAgMHgwMGJiOiAweDAwYTMsICMgICAgICAgUE9VTkQgU0lHTgotICAgICAgICAweDAwYmM6IDB4MDBhNSwgIyAgICAgICBZRU4gU0lHTgotICAgICAgICAweDAwYmQ6IDB4MDBhNywgIyAgICAgICBTRUNUSU9OIFNJR04KLSAgICAgICAgMHgwMGJlOiAweDAxOTIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCi0gICAgICAgIDB4MDBiZjogMHgwMGEyLCAjICAgICAgIENFTlQgU0lHTgotICAgICAgICAweDAwYzA6IDB4MDBlMiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGMxOiAweDAwZWEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjMjogMHgwMGY0LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYzM6IDB4MDBmYiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGM0OiAweDAwZTEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzU6IDB4MDBlOSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjNjogMHgwMGYzLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM3OiAweDAwZmEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzg6IDB4MDBlMCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjOTogMHgwMGU4LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGNhOiAweDAwZjIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQotICAgICAgICAweDAwY2I6IDB4MDBmOSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjYzogMHgwMGU0LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZDogMHgwMGViLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZTogMHgwMGY2LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZjogMHgwMGZjLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkMDogMHgwMGM1LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCi0gICAgICAgIDB4MDBkMTogMHgwMGVlLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwZDI6IDB4MDBkOCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBkMzogMHgwMGM2LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEFFCi0gICAgICAgIDB4MDBkNDogMHgwMGU1LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZDU6IDB4MDBlZCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkNjogMHgwMGY4LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBkNzogMHgwMGU2LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBRQotICAgICAgICAweDAwZDg6IDB4MDBjNCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkOTogMHgwMGVjLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGRhOiAweDAwZDYsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGI6IDB4MDBkYywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkYzogMHgwMGM5LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZGQ6IDB4MDBlZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGU6IDB4MDBkZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQotICAgICAgICAweDAwZGY6IDB4MDBkNCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwZTA6IDB4MDBjMSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGUxOiAweDAwYzMsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlMjogMHgwMGUzLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKLSAgICAgICAgMHgwMGUzOiAweDAwZDAsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBlNDogMHgwMGYwLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKLSAgICAgICAgMHgwMGU1OiAweDAwY2QsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlNjogMHgwMGNjLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQotICAgICAgICAweDAwZTc6IDB4MDBkMywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU4OiAweDAwZDIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBlOTogMHgwMGQ1LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwZWE6IDB4MDBmNSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlYjogMHgwMTYwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWM6IDB4MDE2MSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlZDogMHgwMGRhLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZWU6IDB4MDE3OCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBlZjogMHgwMGZmLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBmMDogMHgwMGRlLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBmMTogMHgwMGZlLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQotICAgICAgICAweDAwZjI6IDB4MDBiNywgIyAgICAgICBNSURETEUgRE9UCi0gICAgICAgIDB4MDBmMzogMHgwMGI1LCAjICAgICAgIE1JQ1JPIFNJR04KLSAgICAgICAgMHgwMGY0OiAweDAwYjYsICMgICAgICAgUElMQ1JPVyBTSUdOCi0gICAgICAgIDB4MDBmNTogMHgwMGJlLCAjICAgICAgIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwotICAgICAgICAweDAwZjY6IDB4MjAxNCwgIyAgICAgICBFTSBEQVNICi0gICAgICAgIDB4MDBmNzogMHgwMGJjLCAjICAgICAgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgotICAgICAgICAweDAwZjg6IDB4MDBiZCwgIyAgICAgICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKLSAgICAgICAgMHgwMGY5OiAweDAwYWEsICMgICAgICAgRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKLSAgICAgICAgMHgwMGZhOiAweDAwYmEsICMgICAgICAgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCi0gICAgICAgIDB4MDBmYjogMHgwMGFiLCAjICAgICAgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBmYzogMHgyNWEwLCAjICAgICAgIEJMQUNLIFNRVUFSRQotICAgICAgICAweDAwZmQ6IDB4MDBiYiwgIyAgICAgICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGZlOiAweDAwYjEsICMgICAgICAgUExVUy1NSU5VUyBTSUdOCi0gICAgICAgIDB4MDBmZjogTm9uZSwKLX0pCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyMjIEVuY29kaW5nIE1hcAorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+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+IERFTEVURQorICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KKyAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgorICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KKyAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgorICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KKyAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgorICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KKyAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgorICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KKyAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgorICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KKyAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgorICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KKyAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgorICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KKyAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgorICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KKyAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgorICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KKyAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgorICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KKyAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CisgICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x4YzAnICAgICAjICAweEExIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQorICAgICdceGMyJyAgICAgIyAgMHhBMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGM4JyAgICAgIyAgMHhBMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhjYScgICAgICMgIDB4QTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjYicgICAgICMgIDB4QTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGNlJyAgICAgIyAgMHhBNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGNmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YjQnICAgICAjICAweEE4IC0+IEFDVVRFIEFDQ0VOVAorICAgICdcdTAyY2InICAgIyAgMHhBOSAtPiBNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UIChNQU5EQVJJTiBDSElORVNFIEZPVVJUSCBUT05FKQorICAgICdcdTAyYzYnICAgIyAgMHhBQSAtPiBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXHhhOCcgICAgICMgIDB4QUIgLT4gRElBRVJFU0lTCisgICAgJ1x1MDJkYycgICAjICAweEFDIC0+IFNNQUxMIFRJTERFCisgICAgJ1x4ZDknICAgICAjICAweEFEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQorICAgICdceGRiJyAgICAgIyAgMHhBRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdcdTIwYTQnICAgIyAgMHhBRiAtPiBMSVJBIFNJR04KKyAgICAnXHhhZicgICAgICMgIDB4QjAgLT4gTUFDUk9OCisgICAgJ1x4ZGQnICAgICAjICAweEIxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZkJyAgICAgIyAgMHhCMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4YjAnICAgICAjICAweEIzIC0+IERFR1JFRSBTSUdOCisgICAgJ1x4YzcnICAgICAjICAweEI0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4ZTcnICAgICAjICAweEI1IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGQxJyAgICAgIyAgMHhCNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhmMScgICAgICMgIDB4QjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGExJyAgICAgIyAgMHhCOCAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCisgICAgJ1x4YmYnICAgICAjICAweEI5IC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKKyAgICAnXHhhNCcgICAgICMgIDB4QkEgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdceGEzJyAgICAgIyAgMHhCQiAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTUnICAgICAjICAweEJDIC0+IFlFTiBTSUdOCisgICAgJ1x4YTcnICAgICAjICAweEJEIC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTAxOTInICAgIyAgMHhCRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKKyAgICAnXHhhMicgICAgICMgIDB4QkYgLT4gQ0VOVCBTSUdOCisgICAgJ1x4ZTInICAgICAjICAweEMwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGVhJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmNCcgICAgICMgIDB4QzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZmInICAgICAjICAweEMzIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGUxJyAgICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4ZTknICAgICAjICAweEM1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhmMycgICAgICMgIDB4QzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGZhJyAgICAgIyAgMHhDNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x4ZTAnICAgICAjICAweEM4IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhlOCcgICAgICMgIDB4QzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGYyJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZjknICAgICAjICAweENCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhlNCcgICAgICMgIDB4Q0MgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlYicgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmNicgICAgICMgIDB4Q0UgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmYycgICAgICMgIDB4Q0YgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjNScgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhlZScgICAgICMgIDB4RDEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZDgnICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhjNicgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKKyAgICAnXHhlNScgICAgICMgIDB4RDQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZWQnICAgICAjICAweEQ1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhmOCcgICAgICMgIDB4RDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhlNicgICAgICMgIDB4RDcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCisgICAgJ1x4YzQnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlYycgICAgICMgIDB4RDkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICdceGQ2JyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGMnICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjOScgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4ZWYnICAgICAjICAweEREIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGYnICAgICAjICAweERFIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHRVJNQU4pCisgICAgJ1x4ZDQnICAgICAjICAweERGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4YzEnICAgICAjICAweEUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGMzJyAgICAgIyAgMHhFMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhlMycgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGQwJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEggKElDRUxBTkRJQykKKyAgICAnXHhmMCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSUNFTEFORElDKQorICAgICdceGNkJyAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhjYycgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4ZDMnICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGQyJyAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhkNScgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x4ZjUnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHUwMTYwJyAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MDE2MScgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHhkYScgICAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3OCcgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkZScgICAgICMgIDB4RjAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKElDRUxBTkRJQykKKyAgICAnXHhmZScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCisgICAgJ1x4YjcnICAgICAjICAweEYyIC0+IE1JRERMRSBET1QKKyAgICAnXHhiNScgICAgICMgIDB4RjMgLT4gTUlDUk8gU0lHTgorICAgICdceGI2JyAgICAgIyAgMHhGNCAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhiZScgICAgICMgIDB4RjUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCisgICAgJ1x1MjAxNCcgICAjICAweEY2IC0+IEVNIERBU0gKKyAgICAnXHhiYycgICAgICMgIDB4RjcgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCisgICAgJ1x4YmQnICAgICAjICAweEY4IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgorICAgICdceGFhJyAgICAgIyAgMHhGOSAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGJhJyAgICAgIyAgMHhGQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhhYicgICAgICMgIDB4RkIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyNWEwJyAgICMgIDB4RkMgLT4gQkxBQ0sgU1FVQVJFCisgICAgJ1x4YmInICAgICAjICAweEZEIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGIxJyAgICAgIyAgMHhGRSAtPiBQTFVTLU1JTlVTIFNJR04KKyAgICAnXHVmZmZlJworKQogCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaWRuYS5weSBiL0xpYi9lbmNvZGluZ3MvaWRuYS5weQppbmRleCA1ODNiZGYxLi5lYTQwNTg1IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2lkbmEucHkKKysrIGIvTGliL2VuY29kaW5ncy9pZG5hLnB5CkBAIC0xNTMsNiArMTUzLDIwIEBACiAgICAgICAgIGlmIG5vdCBpbnB1dDoKICAgICAgICAgICAgIHJldHVybiBiJycsIDAKIAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBpbnB1dC5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQVNDSUkgbmFtZTogZmFzdCBwYXRoCisgICAgICAgICAgICBsYWJlbHMgPSByZXN1bHQuc3BsaXQoYicuJykKKyAgICAgICAgICAgIGZvciBsYWJlbCBpbiBsYWJlbHNbOi0xXToKKyAgICAgICAgICAgICAgICBpZiBub3QgKDAgPCBsZW4obGFiZWwpIDwgNjQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoImxhYmVsIGVtcHR5IG9yIHRvbyBsb25nIikKKyAgICAgICAgICAgIGlmIGxlbihsYWJlbHNbLTFdKSA+PSA2NDoKKyAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoImxhYmVsIHRvbyBsb25nIikKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQsIGxlbihpbnB1dCkKKwogICAgICAgICByZXN1bHQgPSBieXRlYXJyYXkoKQogICAgICAgICBsYWJlbHMgPSBkb3RzLnNwbGl0KGlucHV0KQogICAgICAgICBpZiBsYWJlbHMgYW5kIG5vdCBsYWJlbHNbLTFdOgpAQCAtMTc5LDYgKzE5MywxNCBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpbnB1dCwgYnl0ZXMpOgogICAgICAgICAgICAgIyBYWFggb2J2aW91c2x5IHdyb25nLCBzZWUgIzMyMzIKICAgICAgICAgICAgIGlucHV0ID0gYnl0ZXMoaW5wdXQpCisKKyAgICAgICAgaWYgYWNlX3ByZWZpeCBub3QgaW4gaW5wdXQ6CisgICAgICAgICAgICAjIEZhc3QgcGF0aAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dC5kZWNvZGUoJ2FzY2lpJyksIGxlbihpbnB1dCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGxhYmVscyA9IGlucHV0LnNwbGl0KGIiLiIpCiAKICAgICAgICAgaWYgbGFiZWxzIGFuZCBsZW4obGFiZWxzWy0xXSkgPT0gMDoKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5IGIvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKaW5kZXggOGNmYzAxZi4uZDljYzUxNiAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKKysrIGIvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKQEAgLTMwMSw2ICszMDEsNyBAQAogICAgICdceGZkJyAgICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAgJ1x4ZmUnICAgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQogICAgICdceGZmJyAgICAgIyAgMHhGRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5IGIvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5CmluZGV4IGUzMjJiZTIuLmRhOWQ0YjEgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weQorKysgYi9MaWIvZW5jb2RpbmdzL21hY19sYXRpbjIucHkKQEAgLTEsNCArMSw0IEBACi0iIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGdlbmVyYXRlZCBmcm9tICdMQVRJTjIuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgorIiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBtYWNfbGF0aW4yIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9NQUMvTEFUSU4yLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KIAogV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCiAKQEAgLTE0LDE4ICsxNCwxOCBAQAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKIAogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQ2LDEzOCArNDYsMjY3IEBACiAgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwODA6IDB4MDBjNCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4MTogMHgwMTAwLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDgyOiAweDAxMDEsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDgzOiAweDAwYzksICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4NDogMHgwMTA0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMDg1OiAweDAwZDYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwODY6IDB4MDBkYywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4NzogMHgwMGUxLCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDg4OiAweDAxMDUsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMDg5OiAweDAxMGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA4YTogMHgwMGU0LCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4YjogMHgwMTBkLCAjIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDhjOiAweDAxMDYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ZDogMHgwMTA3LCAjIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDhlOiAweDAwZTksICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwOGY6IDB4MDE3OSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDkwOiAweDAxN2EsICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQotICAgICAgICAweDAwOTE6IDB4MDEwZSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDkyOiAweDAwZWQsICMgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwOTM6IDB4MDEwZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5NDogMHgwMTEyLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDk1OiAweDAxMTMsICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDk2OiAweDAxMTYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwOTc6IDB4MDBmMywgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5ODogMHgwMTE3LCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCi0gICAgICAgIDB4MDA5OTogMHgwMGY0LCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwOWE6IDB4MDBmNiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwOWI6IDB4MDBmNSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDA5YzogMHgwMGZhLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDlkOiAweDAxMWEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5ZTogMHgwMTFiLCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDlmOiAweDAwZmMsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGEwOiAweDIwMjAsICMgREFHR0VSCi0gICAgICAgIDB4MDBhMTogMHgwMGIwLCAjIERFR1JFRSBTSUdOCi0gICAgICAgIDB4MDBhMjogMHgwMTE4LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGE0OiAweDAwYTcsICMgU0VDVElPTiBTSUdOCi0gICAgICAgIDB4MDBhNTogMHgyMDIyLCAjIEJVTExFVAotICAgICAgICAweDAwYTY6IDB4MDBiNiwgIyBQSUxDUk9XIFNJR04KLSAgICAgICAgMHgwMGE3OiAweDAwZGYsICMgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKLSAgICAgICAgMHgwMGE4OiAweDAwYWUsICMgUkVHSVNURVJFRCBTSUdOCi0gICAgICAgIDB4MDBhYTogMHgyMTIyLCAjIFRSQURFIE1BUksgU0lHTgotICAgICAgICAweDAwYWI6IDB4MDExOSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYWM6IDB4MDBhOCwgIyBESUFFUkVTSVMKLSAgICAgICAgMHgwMGFkOiAweDIyNjAsICMgTk9UIEVRVUFMIFRPCi0gICAgICAgIDB4MDBhZTogMHgwMTIzLCAjIExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYWY6IDB4MDEyZSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBiMDogMHgwMTJmLCAjIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBiMTogMHgwMTJhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGIyOiAweDIyNjQsICMgTEVTUy1USEFOIE9SIEVRVUFMIFRPCi0gICAgICAgIDB4MDBiMzogMHgyMjY1LCAjIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwotICAgICAgICAweDAwYjQ6IDB4MDEyYiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwYjU6IDB4MDEzNiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYjY6IDB4MjIwMiwgIyBQQVJUSUFMIERJRkZFUkVOVElBTAotICAgICAgICAweDAwYjc6IDB4MjIxMSwgIyBOLUFSWSBTVU1NQVRJT04KLSAgICAgICAgMHgwMGI4OiAweDAxNDIsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGI5OiAweDAxM2IsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGJhOiAweDAxM2MsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiYjogMHgwMTNkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTgotICAgICAgICAweDAwYmM6IDB4MDEzZSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBiZDogMHgwMTM5LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQotICAgICAgICAweDAwYmU6IDB4MDEzYSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBiZjogMHgwMTQ1LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBjMDogMHgwMTQ2LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYzE6IDB4MDE0MywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGMyOiAweDAwYWMsICMgTk9UIFNJR04KLSAgICAgICAgMHgwMGMzOiAweDIyMWEsICMgU1FVQVJFIFJPT1QKLSAgICAgICAgMHgwMGM0OiAweDAxNDQsICMgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQotICAgICAgICAweDAwYzU6IDB4MDE0NywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGM2OiAweDIyMDYsICMgSU5DUkVNRU5UCi0gICAgICAgIDB4MDBjNzogMHgwMGFiLCAjIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBjODogMHgwMGJiLCAjIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwYzk6IDB4MjAyNiwgIyBIT1JJWk9OVEFMIEVMTElQU0lTCi0gICAgICAgIDB4MDBjYTogMHgwMGEwLCAjIE5PLUJSRUFLIFNQQUNFCi0gICAgICAgIDB4MDBjYjogMHgwMTQ4LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGNjOiAweDAxNTAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwY2Q6IDB4MDBkNSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKLSAgICAgICAgMHgwMGNlOiAweDAxNTEsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKLSAgICAgICAgMHgwMGNmOiAweDAxNGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZDA6IDB4MjAxMywgIyBFTiBEQVNICi0gICAgICAgIDB4MDBkMTogMHgyMDE0LCAjIEVNIERBU0gKLSAgICAgICAgMHgwMGQyOiAweDIwMWMsICMgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGQzOiAweDIwMWQsICMgUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkNDogMHgyMDE4LCAjIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkNTogMHgyMDE5LCAjIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDY6IDB4MDBmNywgIyBESVZJU0lPTiBTSUdOCi0gICAgICAgIDB4MDBkNzogMHgyNWNhLCAjIExPWkVOR0UKLSAgICAgICAgMHgwMGQ4OiAweDAxNGQsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGQ5OiAweDAxNTQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkYTogMHgwMTU1LCAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGRiOiAweDAxNTgsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBkYzogMHgyMDM5LCAjIFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkZDogMHgyMDNhLCAjIFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZGU6IDB4MDE1OSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBkZjogMHgwMTU2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBlMDogMHgwMTU3LCAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZTE6IDB4MDE2MCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGUyOiAweDIwMWEsICMgU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBlMzogMHgyMDFlLCAjIERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZTQ6IDB4MDE2MSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlNTogMHgwMTVhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTY6IDB4MDE1YiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlNzogMHgwMGMxLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTg6IDB4MDE2NCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGU5OiAweDAxNjUsICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWE6IDB4MDBjZCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGViOiAweDAxN2QsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlYzogMHgwMTdlLCAjIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVkOiAweDAxNmEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZWU6IDB4MDBkMywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGVmOiAweDAwZDQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGYwOiAweDAxNmIsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGYxOiAweDAxNmUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGYyOiAweDAwZGEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmMzogMHgwMTZmLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZjQ6IDB4MDE3MCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBmNTogMHgwMTcxLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBmNjogMHgwMTcyLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGY3OiAweDAxNzMsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGY4OiAweDAwZGQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmOTogMHgwMGZkLCAjIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGZhOiAweDAxMzcsICMgTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBmYjogMHgwMTdiLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMGZjOiAweDAxNDEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQotICAgICAgICAweDAwZmQ6IDB4MDE3YywgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwZmU6IDB4MDEyMiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZmY6IDB4MDJjNywgIyBDQVJPTgotfSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIyMgRW5jb2RpbmcgTWFwCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+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+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCisgICAgJ1x4YzQnICAgICAjICAweDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUwMTAwJyAgICMgIDB4ODEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMDEnICAgIyAgMHg4MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgorICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHUwMTA0JyAgICMgIDB4ODQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSworICAgICdceGQ2JyAgICAgIyAgMHg4NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGMnICAgICAjICAweDg2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlMScgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdcdTAxMDUnICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSworICAgICdcdTAxMGMnICAgIyAgMHg4OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KKyAgICAnXHhlNCcgICAgICMgIDB4OEEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUwMTBkJyAgICMgIDB4OEIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgorICAgICdcdTAxMDYnICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKKyAgICAnXHUwMTA3JyAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQorICAgICdceGU5JyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3OScgICAjICAweDhGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQorICAgICdcdTAxN2EnICAgIyAgMHg5MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCisgICAgJ1x1MDEwZScgICAjICAweDkxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgorICAgICdceGVkJyAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x1MDEwZicgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST04KKyAgICAnXHUwMTEyJyAgICMgIDB4OTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMTMnICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMTYnICAgIyAgMHg5NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x4ZjMnICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHUwMTE3JyAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKKyAgICAnXHhmNCcgICAgICMgIDB4OTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZjYnICAgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjUnICAgICAjICAweDlCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhmYScgICAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxMWEnICAgIyAgMHg5RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST04KKyAgICAnXHUwMTFiJyAgICMgIDB4OUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTgorICAgICdceGZjJyAgICAgIyAgMHg5RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdcdTIwMjAnICAgIyAgMHhBMCAtPiBEQUdHRVIKKyAgICAnXHhiMCcgICAgICMgIDB4QTEgLT4gREVHUkVFIFNJR04KKyAgICAnXHUwMTE4JyAgICMgIDB4QTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSworICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTcnICAgICAjICAweEE0IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTIwMjInICAgIyAgMHhBNSAtPiBCVUxMRVQKKyAgICAnXHhiNicgICAgICMgIDB4QTYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4ZGYnICAgICAjICAweEE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCisgICAgJ1x4YWUnICAgICAjICAweEE4IC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgorICAgICdcdTIxMjInICAgIyAgMHhBQSAtPiBUUkFERSBNQVJLIFNJR04KKyAgICAnXHUwMTE5JyAgICMgIDB4QUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKKyAgICAnXHhhOCcgICAgICMgIDB4QUMgLT4gRElBRVJFU0lTCisgICAgJ1x1MjI2MCcgICAjICAweEFEIC0+IE5PVCBFUVVBTCBUTworICAgICdcdTAxMjMnICAgIyAgMHhBRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEEKKyAgICAnXHUwMTJlJyAgICMgIDB4QUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSworICAgICdcdTAxMmYnICAgIyAgMHhCMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSworICAgICdcdTAxMmEnICAgIyAgMHhCMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MjI2NCcgICAjICAweEIyIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTworICAgICdcdTIyNjUnICAgIyAgMHhCMyAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KKyAgICAnXHUwMTJiJyAgICMgIDB4QjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHUwMTM2JyAgICMgIDB4QjUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENFRElMTEEKKyAgICAnXHUyMjAyJyAgICMgIDB4QjYgLT4gUEFSVElBTCBESUZGRVJFTlRJQUwKKyAgICAnXHUyMjExJyAgICMgIDB4QjcgLT4gTi1BUlkgU1VNTUFUSU9OCisgICAgJ1x1MDE0MicgICAjICAweEI4IC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCisgICAgJ1x1MDEzYicgICAjICAweEI5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCisgICAgJ1x1MDEzYycgICAjICAweEJBIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorICAgICdcdTAxM2QnICAgIyAgMHhCQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KKyAgICAnXHUwMTNlJyAgICMgIDB4QkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTgorICAgICdcdTAxMzknICAgIyAgMHhCRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEUKKyAgICAnXHUwMTNhJyAgICMgIDB4QkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBBQ1VURQorICAgICdcdTAxNDUnICAgIyAgMHhCRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQQorICAgICdcdTAxNDYnICAgIyAgMHhDMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTQzJyAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCisgICAgJ1x4YWMnICAgICAjICAweEMyIC0+IE5PVCBTSUdOCisgICAgJ1x1MjIxYScgICAjICAweEMzIC0+IFNRVUFSRSBST09UCisgICAgJ1x1MDE0NCcgICAjICAweEM0IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKKyAgICAnXHUwMTQ3JyAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCisgICAgJ1x1MjIwNicgICAjICAweEM2IC0+IElOQ1JFTUVOVAorICAgICdceGFiJyAgICAgIyAgMHhDNyAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGJiJyAgICAgIyAgMHhDOCAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICMgIDB4QzkgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdceGEwJyAgICAgIyAgMHhDQSAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTAxNDgnICAgIyAgMHhDQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCisgICAgJ1x1MDE1MCcgICAjICAweENDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHhkNScgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x1MDE1MScgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCisgICAgJ1x1MDE0YycgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KKyAgICAnXHUyMDEzJyAgICMgIDB4RDAgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHhEMSAtPiBFTSBEQVNICisgICAgJ1x1MjAxYycgICAjICAweEQyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweEQzIC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTgnICAgIyAgMHhENCAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHhENSAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhmNycgICAgICMgIDB4RDYgLT4gRElWSVNJT04gU0lHTgorICAgICdcdTI1Y2EnICAgIyAgMHhENyAtPiBMT1pFTkdFCisgICAgJ1x1MDE0ZCcgICAjICAweEQ4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OCisgICAgJ1x1MDE1NCcgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQorICAgICdcdTAxNTUnICAgIyAgMHhEQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFCisgICAgJ1x1MDE1OCcgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgorICAgICdcdTIwMzknICAgIyAgMHhEQyAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwM2EnICAgIyAgMHhERCAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTU5JyAgICMgIDB4REUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTgorICAgICdcdTAxNTYnICAgIyAgMHhERiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQorICAgICdcdTAxNTcnICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTYwJyAgICMgIDB4RTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MjAxYScgICAjICAweEUyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWUnICAgIyAgMHhFMyAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTYxJyAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTAxNWEnICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKKyAgICAnXHUwMTViJyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQorICAgICdceGMxJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHUwMTY0JyAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCisgICAgJ1x1MDE2NScgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KKyAgICAnXHhjZCcgICAgICMgIDB4RUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3ZCcgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgorICAgICdcdTAxN2UnICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCisgICAgJ1x1MDE2YScgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHhkMycgICAgICMgIDB4RUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZDQnICAgICAjICAweEVGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x1MDE2YicgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x1MDE2ZScgICAjICAweEYxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZGEnICAgICAjICAweEYyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxNmYnICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHUwMTcwJyAgICMgIDB4RjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNzEnICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNzInICAgIyAgMHhGNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCisgICAgJ1x1MDE3MycgICAjICAweEY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLCisgICAgJ1x4ZGQnICAgICAjICAweEY4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZkJyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x1MDEzNycgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQorICAgICdcdTAxN2InICAgIyAgMHhGQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x1MDE0MScgICAjICAweEZDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKKyAgICAnXHUwMTdjJyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKyAgICAnXHUwMTIyJyAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKKyAgICAnXHUwMmM3JyAgICMgIDB4RkYgLT4gQ0FST04KKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weSBiL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CmluZGV4IDRiNzdlMmIuLmM1MDZkNjUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CkBAIC0xMCwxOCArMTAsMTggQEAKIAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00Miw0MiArNDIsMjY3IEBACiAgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIFRoZSBQYWxtT1MgY2hhcmFjdGVyIHNldCBpcyBtb3N0bHkgaXNvLTg4NTktMSB3aXRoIHNvbWUgZGlmZmVyZW5jZXMuCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDIwYWMsICMgICAgICAgRVVSTyBTSUdOCi0gICAgICAgIDB4MDA4MjogMHgyMDFhLCAjICAgICAgIFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwODM6IDB4MDE5MiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKLSAgICAgICAgMHgwMDg0OiAweDIwMWUsICMgICAgICAgRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA4NTogMHgyMDI2LCAjICAgICAgIEhPUklaT05UQUwgRUxMSVBTSVMKLSAgICAgICAgMHgwMDg2OiAweDIwMjAsICMgICAgICAgREFHR0VSCi0gICAgICAgIDB4MDA4NzogMHgyMDIxLCAjICAgICAgIERPVUJMRSBEQUdHRVIKLSAgICAgICAgMHgwMDg4OiAweDAyYzYsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCi0gICAgICAgIDB4MDA4OTogMHgyMDMwLCAjICAgICAgIFBFUiBNSUxMRSBTSUdOCi0gICAgICAgIDB4MDA4YTogMHgwMTYwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOGI6IDB4MjAzOSwgIyAgICAgICBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOGM6IDB4MDE1MiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCi0gICAgICAgIDB4MDA4ZDogMHgyNjY2LCAjICAgICAgIEJMQUNLIERJQU1PTkQgU1VJVAotICAgICAgICAweDAwOGU6IDB4MjY2MywgIyAgICAgICBCTEFDSyBDTFVCIFNVSVQKLSAgICAgICAgMHgwMDhmOiAweDI2NjUsICMgICAgICAgQkxBQ0sgSEVBUlQgU1VJVAotICAgICAgICAweDAwOTA6IDB4MjY2MCwgIyAgICAgICBCTEFDSyBTUEFERSBTVUlUCi0gICAgICAgIDB4MDA5MTogMHgyMDE4LCAjICAgICAgIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5MjogMHgyMDE5LCAjICAgICAgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTM6IDB4MjAxYywgIyAgICAgICBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTQ6IDB4MjAxZCwgIyAgICAgICBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk1OiAweDIwMjIsICMgICAgICAgQlVMTEVUCi0gICAgICAgIDB4MDA5NjogMHgyMDEzLCAjICAgICAgIEVOIERBU0gKLSAgICAgICAgMHgwMDk3OiAweDIwMTQsICMgICAgICAgRU0gREFTSAotICAgICAgICAweDAwOTg6IDB4MDJkYywgIyAgICAgICBTTUFMTCBUSUxERQotICAgICAgICAweDAwOTk6IDB4MjEyMiwgIyAgICAgICBUUkFERSBNQVJLIFNJR04KLSAgICAgICAgMHgwMDlhOiAweDAxNjEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOWM6IDB4MDE1MywgIyAgICAgICBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQotICAgICAgICAweDAwOWY6IDB4MDE3OCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi19KQorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+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+IERFTEVURQorICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KKyAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CisgICAgJ1x1MjAxYScgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKKyAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCisgICAgJ1x1MjAyMScgICAjICAweDg3IC0+IERPVUJMRSBEQUdHRVIKKyAgICAnXHUwMmM2JyAgICMgIDB4ODggLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCisgICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCisgICAgJ1x1MDE2MCcgICAjICAweDhBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTIwMzknICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxNTInICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCisgICAgJ1x1MjY2NicgICAjICAweDhEIC0+IEJMQUNLIERJQU1PTkQgU1VJVAorICAgICdcdTI2NjMnICAgIyAgMHg4RSAtPiBCTEFDSyBDTFVCIFNVSVQKKyAgICAnXHUyNjY1JyAgICMgIDB4OEYgLT4gQkxBQ0sgSEVBUlQgU1VJVAorICAgICdcdTI2NjAnICAgIyAgMHg5MCAtPiBCTEFDSyBTUEFERSBTVUlUCisgICAgJ1x1MjAxOCcgICAjICAweDkxIC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgIyAgMHg5NCAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCisgICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICMgIDB4OTcgLT4gRU0gREFTSAorICAgICdcdTAyZGMnICAgIyAgMHg5OCAtPiBTTUFMTCBUSUxERQorICAgICdcdTIxMjInICAgIyAgMHg5OSAtPiBUUkFERSBNQVJLIFNJR04KKyAgICAnXHUwMTYxJyAgICMgIDB4OUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KKyAgICAnXHUwMTUzJyAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKKyAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgorICAgICdcdTAxNzgnICAgIyAgMHg5RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x4YTEnICAgICAjICAweEExIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnXHhhMicgICAgICMgIDB4QTIgLT4gQ0VOVCBTSUdOCisgICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KKyAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdceGE1JyAgICAgIyAgMHhBNSAtPiBZRU4gU0lHTgorICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCisgICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdceGE4JyAgICAgIyAgMHhBOCAtPiBESUFFUkVTSVMKKyAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHhhYScgICAgICMgIDB4QUEgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KKyAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KKyAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x4YWYnICAgICAjICAweEFGIC0+IE1BQ1JPTgorICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KKyAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCisgICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCisgICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAorICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCisgICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKKyAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCisgICAgJ1x4YmEnICAgICAjICAweEJBIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhiYycgICAgICMgIDB4QkMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCisgICAgJ1x4YmQnICAgICAjICAweEJEIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgorICAgICdceGJlJyAgICAgIyAgMHhCRSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKKyAgICAnXHhiZicgICAgICMgIDB4QkYgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSworICAgICdceGMwJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhjMScgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4YzMnICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YzUnICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4YzYnICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCisgICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4YzgnICAgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGM5JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjYicgICAgICMgIDB4Q0IgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGNjJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4Y2UnICAgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2YnICAgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkMCcgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCisgICAgJ1x4ZDEnICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGQyJyAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZDUnICAgICAjICAweEQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZDcnICAgICAjICAweEQ3IC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KKyAgICAnXHhkOCcgICAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorICAgICdceGQ5JyAgICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x4ZGInICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkZCcgICAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4ZGUnICAgICAjICAweERFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCisgICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHZXJtYW4pCisgICAgJ1x4ZTAnICAgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhlMScgICAgICMgIDB4RTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlMycgICAgICMgIDB4RTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGU0JyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhlNicgICAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCisgICAgJ1x4ZTcnICAgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCisgICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhlYScgICAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZWMnICAgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhlZCcgICAgICMgIDB4RUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmMCcgICAgICMgIDB4RjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQorICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCisgICAgJ1x4ZjInICAgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhmMycgICAgICMgIDB4RjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmNScgICAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCisgICAgJ1x4ZjgnICAgICAjICAweEY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4ZjknICAgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdceGZiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZlJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKKyAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKykKIAotIyMjIEVuY29kaW5nIE1hcAotCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weSBiL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weQppbmRleCBhZWY4OTc1Li42NTZiNzlkIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkKKysrIGIvTGliL2VuY29kaW5ncy9wdGNwMTU0LnB5CkBAIC0xNCwxOCArMTQsMTggQEAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00NiwxMzAgKzQ2LDI2NyBAQAogICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDA0OTYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwODE6IDB4MDQ5MiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDA4MjogMHgwNGVlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4MzogMHgwNDkzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDA4NDogMHgyMDFlLCAjICAgICAgICBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDg1OiAweDIwMjYsICMgICAgICAgIEhPUklaT05UQUwgRUxMSVBTSVMKLSAgICAgICAgMHgwMDg2OiAweDA0YjYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwODc6IDB4MDRhZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVQotICAgICAgICAweDAwODg6IDB4MDRiMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDg5OiAweDA0YWYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCi0gICAgICAgIDB4MDA4YTogMHgwNGEwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBCi0gICAgICAgIDB4MDA4YjogMHgwNGUyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4YzogMHgwNGEyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOGQ6IDB4MDQ5YSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDhlOiAweDA0YmEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKLSAgICAgICAgMHgwMDhmOiAweDA0YjgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwOTA6IDB4MDQ5NywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOTE6IDB4MjAxOCwgIyAgICAgICAgTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkyOiAweDIwMTksICMgICAgICAgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTM6IDB4MjAxYywgIyAgICAgICAgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk0OiAweDIwMWQsICMgICAgICAgIFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTU6IDB4MjAyMiwgIyAgICAgICAgQlVMTEVUCi0gICAgICAgIDB4MDA5NjogMHgyMDEzLCAjICAgICAgICBFTiBEQVNICi0gICAgICAgIDB4MDA5NzogMHgyMDE0LCAjICAgICAgICBFTSBEQVNICi0gICAgICAgIDB4MDA5ODogMHgwNGIzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDk5OiAweDA0YjcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDlhOiAweDA0YTEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBCi0gICAgICAgIDB4MDA5YjogMHgwNGUzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwOWM6IDB4MDRhMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5ZDogMHgwNDliLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDllOiAweDA0YmIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCi0gICAgICAgIDB4MDA5ZjogMHgwNGI5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBhMTogMHgwNDBlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCi0gICAgICAgIDB4MDBhMjogMHgwNDVlLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQotICAgICAgICAweDAwYTM6IDB4MDQwOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKLSAgICAgICAgMHgwMGE0OiAweDA0ZTgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPCi0gICAgICAgIDB4MDBhNTogMHgwNDk4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYTY6IDB4MDRiMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwYTg6IDB4MDQwMSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KLSAgICAgICAgMHgwMGFhOiAweDA0ZDgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCi0gICAgICAgIDB4MDBhZDogMHgwNGVmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwYWY6IDB4MDQ5YywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKLSAgICAgICAgMHgwMGIxOiAweDA0YjEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBiMjogMHgwNDA2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKLSAgICAgICAgMHgwMGIzOiAweDA0NTYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKLSAgICAgICAgMHgwMGI0OiAweDA0OTksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYjU6IDB4MDRlOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPCi0gICAgICAgIDB4MDBiODogMHgwNDUxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KLSAgICAgICAgMHgwMGI5OiAweDIxMTYsICMgICAgICAgIE5VTUVSTyBTSUdOCi0gICAgICAgIDB4MDBiYTogMHgwNGQ5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKLSAgICAgICAgMHgwMGJjOiAweDA0NTgsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBKRQotICAgICAgICAweDAwYmQ6IDB4MDRhYSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGJlOiAweDA0YWIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYmY6IDB4MDQ5ZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBjMDogMHgwNDEwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCi0gICAgICAgIDB4MDBjMTogMHgwNDExLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQotICAgICAgICAweDAwYzI6IDB4MDQxMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKLSAgICAgICAgMHgwMGMzOiAweDA0MTMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQotICAgICAgICAweDAwYzQ6IDB4MDQxNCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKLSAgICAgICAgMHgwMGM1OiAweDA0MTUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCi0gICAgICAgIDB4MDBjNjogMHgwNDE2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKLSAgICAgICAgMHgwMGM3OiAweDA0MTcsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCi0gICAgICAgIDB4MDBjODogMHgwNDE4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCi0gICAgICAgIDB4MDBjOTogMHgwNDE5LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDBjYTogMHgwNDFhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQotICAgICAgICAweDAwY2I6IDB4MDQxYiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKLSAgICAgICAgMHgwMGNjOiAweDA0MWMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDBjZDogMHgwNDFkLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgotICAgICAgICAweDAwY2U6IDB4MDQxZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwotICAgICAgICAweDAwY2Y6IDB4MDQxZiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKLSAgICAgICAgMHgwMGQwOiAweDA0MjAsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDBkMTogMHgwNDIxLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwotICAgICAgICAweDAwZDI6IDB4MDQyMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKLSAgICAgICAgMHgwMGQzOiAweDA0MjMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKLSAgICAgICAgMHgwMGQ0OiAweDA0MjQsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCi0gICAgICAgIDB4MDBkNTogMHgwNDI1LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQotICAgICAgICAweDAwZDY6IDB4MDQyNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCi0gICAgICAgIDB4MDBkNzogMHgwNDI3LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKLSAgICAgICAgMHgwMGQ4OiAweDA0MjgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQotICAgICAgICAweDAwZDk6IDB4MDQyOSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKLSAgICAgICAgMHgwMGRhOiAweDA0MmEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgotICAgICAgICAweDAwZGI6IDB4MDQyYiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQotICAgICAgICAweDAwZGM6IDB4MDQyYywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCi0gICAgICAgIDB4MDBkZDogMHgwNDJkLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCi0gICAgICAgIDB4MDBkZTogMHgwNDJlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQotICAgICAgICAweDAwZGY6IDB4MDQyZiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKLSAgICAgICAgMHgwMGUwOiAweDA0MzAsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDBlMTogMHgwNDMxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwMGUyOiAweDA0MzIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQotICAgICAgICAweDAwZTM6IDB4MDQzMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQotICAgICAgICAweDAwZTQ6IDB4MDQzNCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAgICAgIDB4MDBlNTogMHgwNDM1LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwMGU2OiAweDA0MzYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKLSAgICAgICAgMHgwMGU3OiAweDA0MzcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQotICAgICAgICAweDAwZTg6IDB4MDQzOCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKLSAgICAgICAgMHgwMGU5OiAweDA0MzksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDBlYTogMHgwNDNhLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwMGViOiAweDA0M2IsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAotICAgICAgICAweDAwZWM6IDB4MDQzYywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDBlZDogMHgwNDNkLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICAgICAgMHgwMGVlOiAweDA0M2UsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDBlZjogMHgwNDNmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKLSAgICAgICAgMHgwMGYwOiAweDA0NDAsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDAwZjE6IDB4MDQ0MSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDBmMjogMHgwNDQyLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKLSAgICAgICAgMHgwMGYzOiAweDA0NDMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDBmNDogMHgwNDQ0LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKLSAgICAgICAgMHgwMGY1OiAweDA0NDUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQQotICAgICAgICAweDAwZjY6IDB4MDQ0NiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQotICAgICAgICAweDAwZjc6IDB4MDQ0NywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQotICAgICAgICAweDAwZjg6IDB4MDQ0OCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQotICAgICAgICAweDAwZjk6IDB4MDQ0OSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCi0gICAgICAgIDB4MDBmYTogMHgwNDRhLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCi0gICAgICAgIDB4MDBmYjogMHgwNDRiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQotICAgICAgICAweDAwZmM6IDB4MDQ0YywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgotICAgICAgICAweDAwZmQ6IDB4MDQ0ZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKLSAgICAgICAgMHgwMGZlOiAweDA0NGUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBZVQotICAgICAgICAweDAwZmY6IDB4MDQ0ZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCi19KQorIyMjIERlY29kaW5nIFRhYmxlCiAKLSMjIyBFbmNvZGluZyBNYXAKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+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+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUgKERFTCkKKyAgICAnXHUwNDk2JyAgICMgIDB4ODAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5MicgICAjICAweDgxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdcdTA0ZWUnICAgIyAgMHg4MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x1MDQ5MycgICAjICAweDgzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUwNGI2JyAgICMgIDB4ODYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhZScgICAjICAweDg3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNGIyJyAgICMgIDB4ODggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGFmJyAgICMgIDB4ODkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNGEwJyAgICMgIDB4OEEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQQorICAgICdcdTA0ZTInICAgIyAgMHg4QiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDRhMicgICAjICAweDhDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5YScgICAjICAweDhEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiYScgICAjICAweDhFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKKyAgICAnXHUwNGI4JyAgICMgIDB4OEYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x1MDQ5NycgICAjICAweDkwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjInICAgIyAgMHg5NSAtPiBCVUxMRVQKKyAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICisgICAgJ1x1MDRiMycgICAjICAweDk4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YjcnICAgIyAgMHg5OSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhMScgICAjICAweDlBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBCisgICAgJ1x1MDRlMycgICAjICAweDlCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDRhMycgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OWInICAgIyAgMHg5RCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGJiJyAgICMgIDB4OUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEEKKyAgICAnXHUwNGI5JyAgICMgIDB4OUYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTA0MGUnICAgIyAgMHhBMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCisgICAgJ1x1MDQ1ZScgICAjICAweEEyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCisgICAgJ1x1MDQwOCcgICAjICAweEEzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCisgICAgJ1x1MDRlOCcgICAjICAweEE0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPCisgICAgJ1x1MDQ5OCcgICAjICAweEE1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiMCcgICAjICAweEE2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x1MDQwMScgICAjICAweEE4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCisgICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x1MDRkOCcgICAjICAweEFBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCisgICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCisgICAgJ1x1MDRlZicgICAjICAweEFEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdcdTA0OWMnICAgIyAgMHhBRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdcdTA0YjEnICAgIyAgMHhCMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorICAgICdcdTA0MDYnICAgIyAgMHhCMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNDU2JyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQorICAgICdcdTA0OTknICAgIyAgMHhCNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGU5JyAgICMgIDB4QjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPCisgICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x1MDQ1MScgICAjICAweEI4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTworICAgICdcdTIxMTYnICAgIyAgMHhCOSAtPiBOVU1FUk8gU0lHTgorICAgICdcdTA0ZDknICAgIyAgMHhCQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKKyAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQ1OCcgICAjICAweEJDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBKRQorICAgICdcdTA0YWEnICAgIyAgMHhCRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWInICAgIyAgMHhCRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNDlkJyAgICMgIDB4QkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x1MDQxMCcgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyAgICAnXHUwNDExJyAgICMgIDB4QzEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKKyAgICAnXHUwNDEyJyAgICMgIDB4QzIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKyAgICAnXHUwNDEzJyAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgJ1x1MDQxNCcgICAjICAweEM0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCisgICAgJ1x1MDQxNScgICAjICAweEM1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCisgICAgJ1x1MDQxNicgICAjICAweEM2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorICAgICdcdTA0MTcnICAgIyAgMHhDNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQorICAgICdcdTA0MTgnICAgIyAgMHhDOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCisgICAgJ1x1MDQxOScgICAjICAweEM5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDFhJyAgICMgIDB4Q0EgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKKyAgICAnXHUwNDFiJyAgICMgIDB4Q0IgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKKyAgICAnXHUwNDFjJyAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KKyAgICAnXHUwNDFkJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KKyAgICAnXHUwNDFlJyAgICMgIDB4Q0UgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTworICAgICdcdTA0MWYnICAgIyAgMHhDRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorICAgICdcdTA0MjAnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgorICAgICdcdTA0MjEnICAgIyAgMHhEMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUworICAgICdcdTA0MjInICAgIyAgMHhEMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQorICAgICdcdTA0MjMnICAgIyAgMHhEMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1x1MDQyNCcgICAjICAweEQ0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCisgICAgJ1x1MDQyNScgICAjICAweEQ1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgJ1x1MDQyNicgICAjICAweEQ2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQorICAgICdcdTA0MjcnICAgIyAgMHhENyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKKyAgICAnXHUwNDI4JyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgJ1x1MDQyOScgICAjICAweEQ5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQyYScgICAjICAweERBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0MmInICAgIyAgMHhEQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQyYycgICAjICAweERDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgorICAgICdcdTA0MmQnICAgIyAgMHhERCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCisgICAgJ1x1MDQyZScgICAjICAweERFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCisgICAgJ1x1MDQyZicgICAjICAweERGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCisgICAgJ1x1MDQzMCcgICAjICAweEUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgJ1x1MDQzMScgICAjICAweEUxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgICdcdTA0MzInICAgIyAgMHhFMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKKyAgICAnXHUwNDMzJyAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQorICAgICdcdTA0MzQnICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICAnXHUwNDM1JyAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAgJ1x1MDQzNicgICAjICAweEU2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyAgICAnXHUwNDM3JyAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgJ1x1MDQzOCcgICAjICAweEU4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJCisgICAgJ1x1MDQzOScgICAjICAweEU5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQzYScgICAjICAweEVBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICdcdTA0M2InICAgIyAgMHhFQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICAnXHUwNDNjJyAgICMgIDB4RUMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgJ1x1MDQzZCcgICAjICAweEVEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICdcdTA0M2UnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICdcdTA0M2YnICAgIyAgMHhFRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKKyAgICAnXHUwNDQwJyAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgJ1x1MDQ0MScgICAjICAweEYxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICdcdTA0NDInICAgIyAgMHhGMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKKyAgICAnXHUwNDQzJyAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICAnXHUwNDQ0JyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCisgICAgJ1x1MDQ0NScgICAjICAweEY1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQorICAgICdcdTA0NDYnICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgJ1x1MDQ0NycgICAjICAweEY3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKKyAgICAnXHUwNDQ4JyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQorICAgICdcdTA0NDknICAgIyAgMHhGOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDRhJyAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0NGInICAgIyAgMHhGQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQorICAgICdcdTA0NGMnICAgIyAgMHhGQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQ0ZCcgICAjICAweEZEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCisgICAgJ1x1MDQ0ZScgICAjICAweEZFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQorICAgICdcdTA0NGYnICAgIyAgMHhGRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZmlsZWlucHV0LnB5IGIvTGliL2ZpbGVpbnB1dC5weQppbmRleCA1NTRiZWIyLi5kYmJiYjIxIDEwMDY0NAotLS0gYS9MaWIvZmlsZWlucHV0LnB5CisrKyBiL0xpYi9maWxlaW5wdXQucHkKQEAgLTM5OCw5ICszOTgsOCBAQAogCiAKIGRlZiBob29rX2VuY29kZWQoZW5jb2RpbmcpOgotICAgIGltcG9ydCBjb2RlY3MKICAgICBkZWYgb3Blbmhvb2soZmlsZW5hbWUsIG1vZGUpOgotICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nKQorICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgcmV0dXJuIG9wZW5ob29rCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ZubWF0Y2gucHkgYi9MaWIvZm5tYXRjaC5weQppbmRleCA3MjZmYmU1Li5mNDQ2NzY5IDEwMDY0NAotLS0gYS9MaWIvZm5tYXRjaC5weQorKysgYi9MaWIvZm5tYXRjaC5weQpAQCAtMzUsOSArMzUsOSBAQAogICAgIHBhdCA9IG9zLnBhdGgubm9ybWNhc2UocGF0KQogICAgIHJldHVybiBmbm1hdGNoY2FzZShuYW1lLCBwYXQpCiAKLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MjUwKQotZGVmIF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc19ieXRlcz1GYWxzZSk6Ci0gICAgaWYgaXNfYnl0ZXM6CitAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPTI1MCwgdHlwZWQ9VHJ1ZSkKK2RlZiBfY29tcGlsZV9wYXR0ZXJuKHBhdCk6CisgICAgaWYgaXNpbnN0YW5jZShwYXQsIGJ5dGVzKToKICAgICAgICAgcGF0X3N0ciA9IHN0cihwYXQsICdJU08tODg1OS0xJykKICAgICAgICAgcmVzX3N0ciA9IHRyYW5zbGF0ZShwYXRfc3RyKQogICAgICAgICByZXMgPSBieXRlcyhyZXNfc3RyLCAnSVNPLTg4NTktMScpCkBAIC00OSw3ICs0OSw3IEBACiAgICAgIiIiUmV0dXJuIHRoZSBzdWJzZXQgb2YgdGhlIGxpc3QgTkFNRVMgdGhhdCBtYXRjaCBQQVQuIiIiCiAgICAgcmVzdWx0ID0gW10KICAgICBwYXQgPSBvcy5wYXRoLm5vcm1jYXNlKHBhdCkKLSAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc2luc3RhbmNlKHBhdCwgYnl0ZXMpKQorICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQpCiAgICAgaWYgb3MucGF0aCBpcyBwb3NpeHBhdGg6CiAgICAgICAgICMgbm9ybWNhc2Ugb24gcG9zaXggaXMgTk9QLiBPcHRpbWl6ZSBpdCBhd2F5IGZyb20gdGhlIGxvb3AuCiAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpAQCAtNjcsNyArNjcsNyBAQAogICAgIFRoaXMgaXMgYSB2ZXJzaW9uIG9mIGZubWF0Y2goKSB3aGljaCBkb2Vzbid0IGNhc2Utbm9ybWFsaXplCiAgICAgaXRzIGFyZ3VtZW50cy4KICAgICAiIiIKLSAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc2luc3RhbmNlKHBhdCwgYnl0ZXMpKQorICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQpCiAgICAgcmV0dXJuIG1hdGNoKG5hbWUpIGlzIG5vdCBOb25lCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggOGU1MzAyMy4uMTg4ODdhNiAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC0xMDAsMTQgKzEwMCwxNSBAQAogICAgIGZpbGUgPSBOb25lCiAgICAgd2VsY29tZSA9IE5vbmUKICAgICBwYXNzaXZlc2VydmVyID0gMQotICAgIGVuY29kaW5nID0gImxhdGluMSIKKyAgICBlbmNvZGluZyA9ICJsYXRpbi0xIgogCiAgICAgIyBJbml0aWFsaXphdGlvbiBtZXRob2QgKGNhbGxlZCBieSBjbGFzcyBpbnN0YW50aWF0aW9uKS4KICAgICAjIEluaXRpYWxpemUgaG9zdCB0byBsb2NhbGhvc3QsIHBvcnQgdG8gc3RhbmRhcmQgZnRwIHBvcnQKICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgaG9zdCAoZm9yIGNvbm5lY3QoKSksCiAgICAgIyBhbmQgdXNlciwgcGFzc3dkLCBhY2N0IChmb3IgbG9naW4oKSkKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKKyAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CisgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcwogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgICBzZWxmLmNvbm5lY3QoaG9zdCkKQEAgLTEyOCwxMCArMTI5LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgdGltZW91dD0tOTk5KToKKyAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PScnLCBwb3J0PTAsIHRpbWVvdXQ9LTk5OSwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICcnJ0Nvbm5lY3QgdG8gaG9zdC4gIEFyZ3VtZW50cyBhcmU6CiAgICAgICAgICAtIGhvc3Q6IGhvc3RuYW1lIHRvIGNvbm5lY3QgdG8gKHN0cmluZywgZGVmYXVsdCBwcmV2aW91cyBob3N0KQogICAgICAgICAgLSBwb3J0OiBwb3J0IHRvIGNvbm5lY3QgdG8gKGludGVnZXIsIGRlZmF1bHQgcHJldmlvdXMgcG9ydCkKKyAgICAgICAgIC0gc291cmNlX2FkZHJlc3M6IGEgMi10dXBsZSAoaG9zdCwgcG9ydCkgZm9yIHRoZSBzb2NrZXQgdG8gYmluZAorICAgICAgICAgICB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuCiAgICAgICAgICcnJwogICAgICAgICBpZiBob3N0ICE9ICcnOgogICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdApAQCAtMTM5LDcgKzE0MiwxMCBAQAogICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgICBpZiB0aW1lb3V0ICE9IC05OTk6CiAgICAgICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0Ci0gICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LCBzZWxmLnBvcnQpLCBzZWxmLnRpbWVvdXQpCisgICAgICAgIGlmIHNvdXJjZV9hZGRyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCisgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LCBzZWxmLnBvcnQpLCBzZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICBzZWxmLmFmID0gc2VsZi5zb2NrLmZhbWlseQogICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUoJ3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQogICAgICAgICBzZWxmLndlbGNvbWUgPSBzZWxmLmdldHJlc3AoKQpAQCAtMTY5LDEwICsxNzUsOCBAQAogCiAgICAgIyBJbnRlcm5hbDogInNhbml0aXplIiBhIHN0cmluZyBmb3IgcHJpbnRpbmcKICAgICBkZWYgc2FuaXRpemUoc2VsZiwgcyk6Ci0gICAgICAgIGlmIHNbOjVdID09ICdwYXNzICcgb3Igc1s6NV0gPT0gJ1BBU1MgJzoKLSAgICAgICAgICAgIGkgPSBsZW4ocykKLSAgICAgICAgICAgIHdoaWxlIGkgPiA1IGFuZCBzW2ktMV0gaW4geydccicsICdcbid9OgotICAgICAgICAgICAgICAgIGkgPSBpLTEKKyAgICAgICAgaWYgc1s6NV0gaW4geydwYXNzICcsICdQQVNTICd9OgorICAgICAgICAgICAgaSA9IGxlbihzLnJzdHJpcCgnXHJcbicpKQogICAgICAgICAgICAgcyA9IHNbOjVdICsgJyonKihpLTUpICsgc1tpOl0KICAgICAgICAgcmV0dXJuIHJlcHIocykKIApAQCAtMzM1LDcgKzMzOSw4IEBACiAgICAgICAgIHNpemUgPSBOb25lCiAgICAgICAgIGlmIHNlbGYucGFzc2l2ZXNlcnZlcjoKICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLm1ha2VwYXN2KCkKLSAgICAgICAgICAgIGNvbm4gPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCBzZWxmLnRpbWVvdXQpCisgICAgICAgICAgICBjb25uID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgc2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiUkVTVCAlcyIgJSByZXN0KQpAQCAtMzU0LDggKzM1OSw3IEBACiAgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNvY2sgPSBzZWxmLm1ha2Vwb3J0KCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5tYWtlcG9ydCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kY21kKCJSRVNUICVzIiAlIHJlc3QpCiAgICAgICAgICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZChjbWQpCkBAIC0zNjcsOCArMzcxLDYgQEAKICAgICAgICAgICAgICAgICBjb25uLCBzb2NrYWRkciA9IHNvY2suYWNjZXB0KCkKICAgICAgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUOgogICAgICAgICAgICAgICAgICAgICBjb25uLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgaWYgcmVzcFs6M10gPT0gJzE1MCc6CiAgICAgICAgICAgICAjIHRoaXMgaXMgY29uZGl0aW9uYWwgaW4gY2FzZSB3ZSByZWNlaXZlZCBhIDEyNQogICAgICAgICAgICAgc2l6ZSA9IHBhcnNlMTUwKHJlc3ApCkBAIC00MjYsNyArNDI4LDcgQEAKICAgICAgICAgIiIiUmV0cmlldmUgZGF0YSBpbiBsaW5lIG1vZGUuICBBIG5ldyBwb3J0IGlzIGNyZWF0ZWQgZm9yIHlvdS4KIAogICAgICAgICBBcmdzOgotICAgICAgICAgIGNtZDogQSBSRVRSLCBMSVNULCBOTFNULCBvciBNTFNEIGNvbW1hbmQuCisgICAgICAgICAgY21kOiBBIFJFVFIsIExJU1QsIG9yIE5MU1QgY29tbWFuZC4KICAgICAgICAgICBjYWxsYmFjazogQW4gb3B0aW9uYWwgc2luZ2xlIHBhcmFtZXRlciBjYWxsYWJsZSB0aGF0IGlzIGNhbGxlZAogICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuCiAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0OiBwcmludF9saW5lKCldCkBAIC01MjcsNiArNTI5LDM0IEBACiAgICAgICAgICAgICAgICAgY21kID0gY21kICsgKCcgJyArIGFyZykKICAgICAgICAgc2VsZi5yZXRybGluZXMoY21kLCBmdW5jKQogCisgICAgZGVmIG1sc2Qoc2VsZiwgcGF0aD0iIiwgZmFjdHM9W10pOgorICAgICAgICAnJydMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBNTFNECisgICAgICAgIGNvbW1hbmQgKFJGQy0zNjU5KS4gSWYgcGF0aCBpcyBvbWl0dGVkIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorICAgICAgICBpcyBhc3N1bWVkLiAiZmFjdHMiIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHlwZQorICAgICAgICBvZiBpbmZvcm1hdGlvbiBkZXNpcmVkIChlLmcuIFsidHlwZSIsICJzaXplIiwgInBlcm0iXSkuCisKKyAgICAgICAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cworICAgICAgICBmb3IgZXZlcnkgZmlsZSBmb3VuZCBpbiBwYXRoLgorICAgICAgICBGaXJzdCBlbGVtZW50IGlzIHRoZSBmaWxlIG5hbWUsIHRoZSBzZWNvbmQgb25lIGlzIGEgZGljdGlvbmFyeQorICAgICAgICBpbmNsdWRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgImZhY3RzIiBkZXBlbmRpbmcgb24gdGhlIHNlcnZlcgorICAgICAgICBhbmQgd2hldGhlciAiZmFjdHMiIGFyZ3VtZW50IGhhcyBiZWVuIHByb3ZpZGVkLgorICAgICAgICAnJycKKyAgICAgICAgaWYgZmFjdHM6CisgICAgICAgICAgICBzZWxmLnNlbmRjbWQoIk9QVFMgTUxTVCAiICsgIjsiLmpvaW4oZmFjdHMpICsgIjsiKQorICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgY21kID0gIk1MU0QgJXMiICUgcGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY21kID0gIk1MU0QiCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgc2VsZi5yZXRybGluZXMoY21kLCBsaW5lcy5hcHBlbmQpCisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgZmFjdHNfZm91bmQsIF8sIG5hbWUgPSBsaW5lLnJzdHJpcChDUkxGKS5wYXJ0aXRpb24oJyAnKQorICAgICAgICAgICAgZW50cnkgPSB7fQorICAgICAgICAgICAgZm9yIGZhY3QgaW4gZmFjdHNfZm91bmRbOi0xXS5zcGxpdCgiOyIpOgorICAgICAgICAgICAgICAgIGtleSwgXywgdmFsdWUgPSBmYWN0LnBhcnRpdGlvbigiPSIpCisgICAgICAgICAgICAgICAgZW50cnlba2V5Lmxvd2VyKCldID0gdmFsdWUKKyAgICAgICAgICAgIHlpZWxkIChuYW1lLCBlbnRyeSkKKwogICAgIGRlZiByZW5hbWUoc2VsZiwgZnJvbW5hbWUsIHRvbmFtZSk6CiAgICAgICAgICcnJ1JlbmFtZSBhIGZpbGUuJycnCiAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1JORlIgJyArIGZyb21uYW1lKQpAQCAtNTYxLDEwICs1OTEsNyBAQAogICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdTSVpFICcgKyBmaWxlbmFtZSkKICAgICAgICAgaWYgcmVzcFs6M10gPT0gJzIxMyc6CiAgICAgICAgICAgICBzID0gcmVzcFszOl0uc3RyaXAoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocykKLSAgICAgICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludChzKQorICAgICAgICAgICAgcmV0dXJuIGludChzKQogCiAgICAgZGVmIG1rZChzZWxmLCBkaXJuYW1lKToKICAgICAgICAgJycnTWFrZSBhIGRpcmVjdG9yeSwgcmV0dXJuIGl0cyBmdWxsIHBhdGhuYW1lLicnJwpAQCAtNTk2LDExICs2MjMsMTEgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgJycnQ2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aG91dCBhc3N1bWluZyBhbnl0aGluZyBhYm91dCBpdC4nJycKLSAgICAgICAgaWYgc2VsZi5maWxlOgorICAgICAgICBpZiBzZWxmLmZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQorICAgICAgICBpZiBzZWxmLnNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrID0gTm9uZQotCisgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKIAogdHJ5OgogICAgIGltcG9ydCBzc2wKQEAgLTY0NCw3ICs2NzEsNyBAQAogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIGtleWZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKQEAgLTY1NSw3ICs2ODIsNyBAQAogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgICAgICBzZWxmLl9wcm90X3AgPSBGYWxzZQotICAgICAgICAgICAgRlRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHVzZXIsIHBhc3N3ZCwgYWNjdCwgdGltZW91dCkKKyAgICAgICAgICAgIEZUUC5fX2luaXRfXyhzZWxmLCBob3N0LCB1c2VyLCBwYXNzd2QsIGFjY3QsIHRpbWVvdXQsIHNvdXJjZV9hZGRyZXNzKQogCiAgICAgICAgIGRlZiBsb2dpbihzZWxmLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIHNlY3VyZT1UcnVlKToKICAgICAgICAgICAgIGlmIHNlY3VyZSBhbmQgbm90IGlzaW5zdGFuY2Uoc2VsZi5zb2NrLCBzc2wuU1NMU29ja2V0KToKQEAgLTY3OSw2ICs3MDYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZShtb2RlPSdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKICAgICAgICAgICAgIHJldHVybiByZXNwCiAKKyAgICAgICAgZGVmIGNjYyhzZWxmKToKKyAgICAgICAgICAgICcnJ1N3aXRjaCBiYWNrIHRvIGEgY2xlYXItdGV4dCBjb250cm9sIGNvbm5lY3Rpb24uJycnCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLnNvY2ssIHNzbC5TU0xTb2NrZXQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCB1c2luZyBUTFMiKQorICAgICAgICAgICAgcmVzcCA9IHNlbGYudm9pZGNtZCgnQ0NDJykKKyAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuc29jay51bndyYXAoKQorICAgICAgICAgICAgcmV0dXJuIHJlc3AKKwogICAgICAgICBkZWYgcHJvdF9wKHNlbGYpOgogICAgICAgICAgICAgJycnU2V0IHVwIHNlY3VyZSBkYXRhIGNvbm5lY3Rpb24uJycnCiAgICAgICAgICAgICAjIFBST1QgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgZGF0YSBjaGFubmVsIGlzIHRvIGJlIHByb3RlY3RlZC4KQEAgLTcxNSw4ICs3NTAsNyBAQAogCiAgICAgICAgIGRlZiByZXRyYmluYXJ5KHNlbGYsIGNtZCwgY2FsbGJhY2ssIGJsb2Nrc2l6ZT04MTkyLCByZXN0PU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CkBAIC03MjUsOCArNzU5LDYgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICAgICAgZGVmIHJldHJsaW5lcyhzZWxmLCBjbWQsIGNhbGxiYWNrID0gTm9uZSk6CkBAIC03MzQsNyArNzY2LDcgQEAKICAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1RZUEUgQScpCiAgICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCiAgICAgICAgICAgICBmcCA9IGNvbm4ubWFrZWZpbGUoJ3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBmcCwgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDI6IHByaW50KCcqcmV0cionLCByZXByKGxpbmUpKQpAQCAtNzQ4LDE1ICs3ODAsMTEgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiBzdG9yYmluYXJ5KHNlbGYsIGNtZCwgZnAsIGJsb2Nrc2l6ZT04MTkyLCBjYWxsYmFjaz1Ob25lLCByZXN0PU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKQEAgLTc2NSwxNCArNzkzLDExIEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiBzdG9ybGluZXMoc2VsZiwgY21kLCBmcCwgY2FsbGJhY2s9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLnZvaWRjbWQoJ1RZUEUgQScpCi0gICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kKSBhcyBjb25uOgogICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKQEAgLTc4NCw4ICs4MDksNiBAQAogICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgYWJvcnQoc2VsZik6CkBAIC04MTgsMTEgKzg0MSw3IEBACiAgICAgbSA9IF8xNTBfcmUubWF0Y2gocmVzcCkKICAgICBpZiBub3QgbToKICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBzID0gbS5ncm91cCgxKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGludChzKQotICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgIHJldHVybiBpbnQocykKKyAgICByZXR1cm4gaW50KG0uZ3JvdXAoMSkpCiAKIAogXzIyN19yZSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9mdW5jdG9vbHMucHkgYi9MaWIvZnVuY3Rvb2xzLnB5CmluZGV4IDg1ZWEyNTcuLjIyNmE0NmUgMTAwNjQ0Ci0tLSBhL0xpYi9mdW5jdG9vbHMucHkKKysrIGIvTGliL2Z1bmN0b29scy5weQpAQCAtMTIsMTYgKzEyLDIyIEBACiAgICAgICAgICAgICd0b3RhbF9vcmRlcmluZycsICdjbXBfdG9fa2V5JywgJ2xydV9jYWNoZScsICdyZWR1Y2UnLCAncGFydGlhbCddCiAKIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcGFydGlhbCwgcmVkdWNlCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCwgbmFtZWR0dXBsZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCiBleGNlcHQ6CiAgICAgZnJvbSBfZHVtbXlfdGhyZWFkIGltcG9ydCBhbGxvY2F0ZV9sb2NrIGFzIExvY2sKIAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIHVwZGF0ZV93cmFwcGVyKCkgYW5kIHdyYXBzKCkgZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiAjIHVwZGF0ZV93cmFwcGVyKCkgYW5kIHdyYXBzKCkgYXJlIHRvb2xzIHRvIGhlbHAgd3JpdGUKICMgd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjYW4gaGFuZGxlIG5haXZlIGludHJvc3BlY3Rpb24KIAotV1JBUFBFUl9BU1NJR05NRU5UUyA9ICgnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX2RvY19fJywgJ19fYW5ub3RhdGlvbnNfXycpCitXUkFQUEVSX0FTU0lHTk1FTlRTID0gKCdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcXVhbG5hbWVfXycsICdfX2RvY19fJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ19fYW5ub3RhdGlvbnNfXycpCiBXUkFQUEVSX1VQREFURVMgPSAoJ19fZGljdF9fJywpCiBkZWYgdXBkYXRlX3dyYXBwZXIod3JhcHBlciwKICAgICAgICAgICAgICAgICAgICB3cmFwcGVkLApAQCAtNjUsNiArNzEsMTEgQEAKICAgICByZXR1cm4gcGFydGlhbCh1cGRhdGVfd3JhcHBlciwgd3JhcHBlZD13cmFwcGVkLAogICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkPWFzc2lnbmVkLCB1cGRhdGVkPXVwZGF0ZWQpCiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyB0b3RhbF9vcmRlcmluZyBjbGFzcyBkZWNvcmF0b3IKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKIGRlZiB0b3RhbF9vcmRlcmluZyhjbHMpOgogICAgICIiIkNsYXNzIGRlY29yYXRvciB0aGF0IGZpbGxzIGluIG1pc3Npbmcgb3JkZXJpbmcgbWV0aG9kcyIiIgogICAgIGNvbnZlcnQgPSB7CkBAIC05Myw2ICsxMDQsMTEgQEAKICAgICAgICAgICAgIHNldGF0dHIoY2xzLCBvcG5hbWUsIG9wZnVuYykKICAgICByZXR1cm4gY2xzCiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBjbXBfdG9fa2V5KCkgZnVuY3Rpb24gY29udmVydGVyCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiBkZWYgY21wX3RvX2tleShteWNtcCk6CiAgICAgIiIiQ29udmVydCBhIGNtcD0gZnVuY3Rpb24gaW50byBhIGtleT0gZnVuY3Rpb24iIiIKICAgICBjbGFzcyBLKG9iamVjdCk6CkBAIC0xMTQsOTUgKzEzMCwxNzQgQEAKICAgICAgICAgX19oYXNoX18gPSBOb25lCiAgICAgcmV0dXJuIEsKIAotX0NhY2hlSW5mbyA9IG5hbWVkdHVwbGUoIkNhY2hlSW5mbyIsICJoaXRzIG1pc3NlcyBtYXhzaXplIGN1cnJzaXplIikKK3RyeToKKyAgICBmcm9tIF9mdW5jdG9vbHMgaW1wb3J0IGNtcF90b19rZXkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCiAKLWRlZiBscnVfY2FjaGUobWF4c2l6ZT0xMDApOgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIExSVSBDYWNoZSBmdW5jdGlvbiBkZWNvcmF0b3IKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK19DYWNoZUluZm8gPSBuYW1lZHR1cGxlKCJDYWNoZUluZm8iLCBbImhpdHMiLCAibWlzc2VzIiwgIm1heHNpemUiLCAiY3VycnNpemUiXSkKKworY2xhc3MgX0hhc2hlZFNlcShsaXN0KToKKyAgICBfX3Nsb3RzX18gPSAnaGFzaHZhbHVlJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR1cCwgaGFzaD1oYXNoKToKKyAgICAgICAgc2VsZls6XSA9IHR1cAorICAgICAgICBzZWxmLmhhc2h2YWx1ZSA9IGhhc2godHVwKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5oYXNodmFsdWUKKworZGVmIF9tYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCwKKyAgICAgICAgICAgICBrd2RfbWFyayA9IChvYmplY3QoKSwpLAorICAgICAgICAgICAgIGZhc3R0eXBlcyA9IHtpbnQsIHN0ciwgZnJvemVuc2V0LCB0eXBlKE5vbmUpfSwKKyAgICAgICAgICAgICBzb3J0ZWQ9c29ydGVkLCB0dXBsZT10dXBsZSwgdHlwZT10eXBlLCBsZW49bGVuKToKKyAgICAnTWFrZSBhIGNhY2hlIGtleSBmcm9tIG9wdGlvbmFsbHkgdHlwZWQgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMnCisgICAga2V5ID0gYXJncworICAgIGlmIGt3ZHM6CisgICAgICAgIHNvcnRlZF9pdGVtcyA9IHNvcnRlZChrd2RzLml0ZW1zKCkpCisgICAgICAgIGtleSArPSBrd2RfbWFyaworICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWRfaXRlbXM6CisgICAgICAgICAgICBrZXkgKz0gaXRlbQorICAgIGlmIHR5cGVkOgorICAgICAgICBrZXkgKz0gdHVwbGUodHlwZSh2KSBmb3IgdiBpbiBhcmdzKQorICAgICAgICBpZiBrd2RzOgorICAgICAgICAgICAga2V5ICs9IHR1cGxlKHR5cGUodikgZm9yIGssIHYgaW4gc29ydGVkX2l0ZW1zKQorICAgIGVsaWYgbGVuKGtleSkgPT0gMSBhbmQgdHlwZShrZXlbMF0pIGluIGZhc3R0eXBlczoKKyAgICAgICAgcmV0dXJuIGtleVswXQorICAgIHJldHVybiBfSGFzaGVkU2VxKGtleSkKKworZGVmIGxydV9jYWNoZShtYXhzaXplPTEyOCwgdHlwZWQ9RmFsc2UpOgogICAgICIiIkxlYXN0LXJlY2VudGx5LXVzZWQgY2FjaGUgZGVjb3JhdG9yLgogCiAgICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmVzIGFyZSBkaXNhYmxlZCBhbmQgdGhlIGNhY2hlCiAgICAgY2FuIGdyb3cgd2l0aG91dCBib3VuZC4KIAorICAgIElmICp0eXBlZCogaXMgVHJ1ZSwgYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcyB3aWxsIGJlIGNhY2hlZCBzZXBhcmF0ZWx5LgorICAgIEZvciBleGFtcGxlLCBmKDMuMCkgYW5kIGYoMykgd2lsbCBiZSB0cmVhdGVkIGFzIGRpc3RpbmN0IGNhbGxzIHdpdGgKKyAgICBkaXN0aW5jdCByZXN1bHRzLgorCiAgICAgQXJndW1lbnRzIHRvIHRoZSBjYWNoZWQgZnVuY3Rpb24gbXVzdCBiZSBoYXNoYWJsZS4KIAotICAgIFZpZXcgdGhlIGNhY2hlIHN0YXRpc3RpY3MgbmFtZWQgdHVwbGUgKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUpIHdpdGgKLSAgICBmLmNhY2hlX2luZm8oKS4gIENsZWFyIHRoZSBjYWNoZSBhbmQgc3RhdGlzdGljcyB3aXRoIGYuY2FjaGVfY2xlYXIoKS4KKyAgICBWaWV3IHRoZSBjYWNoZSBzdGF0aXN0aWNzIG5hbWVkIHR1cGxlIChoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplKQorICAgIHdpdGggZi5jYWNoZV9pbmZvKCkuICBDbGVhciB0aGUgY2FjaGUgYW5kIHN0YXRpc3RpY3Mgd2l0aCBmLmNhY2hlX2NsZWFyKCkuCiAgICAgQWNjZXNzIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIHdpdGggZi5fX3dyYXBwZWRfXy4KIAogICAgIFNlZTogIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FjaGVfYWxnb3JpdGhtcyNMZWFzdF9SZWNlbnRseV9Vc2VkCiAKICAgICAiIiIKKwogICAgICMgVXNlcnMgc2hvdWxkIG9ubHkgYWNjZXNzIHRoZSBscnVfY2FjaGUgdGhyb3VnaCBpdHMgcHVibGljIEFQSToKICAgICAjICAgICAgIGNhY2hlX2luZm8sIGNhY2hlX2NsZWFyLCBhbmQgZi5fX3dyYXBwZWRfXwogICAgICMgVGhlIGludGVybmFscyBvZiB0aGUgbHJ1X2NhY2hlIGFyZSBlbmNhcHN1bGF0ZWQgZm9yIHRocmVhZCBzYWZldHkgYW5kCiAgICAgIyB0byBhbGxvdyB0aGUgaW1wbGVtZW50YXRpb24gdG8gY2hhbmdlIChpbmNsdWRpbmcgYSBwb3NzaWJsZSBDIHZlcnNpb24pLgogCi0gICAgZGVmIGRlY29yYXRpbmdfZnVuY3Rpb24odXNlcl9mdW5jdGlvbiwKLSAgICAgICAgICAgICAgICB0dXBsZT10dXBsZSwgc29ydGVkPXNvcnRlZCwgbGVuPWxlbiwgS2V5RXJyb3I9S2V5RXJyb3IpOgorICAgICMgQ29uc3RhbnRzIHNoYXJlZCBieSBhbGwgbHJ1IGNhY2hlIGluc3RhbmNlczoKKyAgICBzZW50aW5lbCA9IG9iamVjdCgpICAgICAgICAgICMgdW5pcXVlIG9iamVjdCB1c2VkIHRvIHNpZ25hbCBjYWNoZSBtaXNzZXMKKyAgICBtYWtlX2tleSA9IF9tYWtlX2tleSAgICAgICAgICMgYnVpbGQgYSBrZXkgZnJvbSB0aGUgZnVuY3Rpb24gYXJndW1lbnRzCisgICAgUFJFViwgTkVYVCwgS0VZLCBSRVNVTFQgPSAwLCAxLCAyLCAzICAgIyBuYW1lcyBmb3IgdGhlIGxpbmsgZmllbGRzCiAKLSAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKLSAgICAgICAga3dkX21hcmsgPSAob2JqZWN0KCksKSAgICAgICAgICAjIHNlcGFyYXRlcyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKLSAgICAgICAgbG9jayA9IExvY2soKSAgICAgICAgICAgICAgICAgICAjIG5lZWRlZCBiZWNhdXNlIE9yZGVyZWREaWN0IGlzbid0IHRocmVhZHNhZmUKKyAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uKToKIAotICAgICAgICBpZiBtYXhzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBjYWNoZSA9IGRpY3QoKSAgICAgICAgICAgICAgIyBzaW1wbGUgY2FjaGUgd2l0aG91dCBvcmRlcmluZyBvciBzaXplIGxpbWl0CisgICAgICAgIGNhY2hlID0ge30KKyAgICAgICAgaGl0cyA9IG1pc3NlcyA9IGN1cnJzaXplID0gMAorICAgICAgICBmdWxsID0gRmFsc2UKKyAgICAgICAgY2FjaGVfZ2V0ID0gY2FjaGUuZ2V0ICAgICMgYm91bmQgbWV0aG9kIHRvIGxvb2t1cCBhIGtleSBvciByZXR1cm4gTm9uZQorICAgICAgICBsb2NrID0gTG9jaygpICAgICAgICAgICAgIyBiZWNhdXNlIGxpbmtlZGxpc3QgdXBkYXRlcyBhcmVuJ3QgdGhyZWFkc2FmZQorICAgICAgICByb290ID0gW10gICAgICAgICAgICAgICAgIyByb290IG9mIHRoZSBjaXJjdWxhciBkb3VibHkgbGlua2VkIGxpc3QKKyAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXSAgICAgIyBpbml0aWFsaXplIGJ5IHBvaW50aW5nIHRvIHNlbGYKIAotICAgICAgICAgICAgQHdyYXBzKHVzZXJfZnVuY3Rpb24pCisgICAgICAgIGlmIG1heHNpemUgPT0gMDoKKwogICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCi0gICAgICAgICAgICAgICAga2V5ID0gYXJncwotICAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgIGtleSArPSBrd2RfbWFyayArIHR1cGxlKHNvcnRlZChrd2RzLml0ZW1zKCkpKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVba2V5XQorICAgICAgICAgICAgICAgICMgbm8gY2FjaGluZywganVzdCBhIHN0YXRpc3RpY3MgdXBkYXRlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsCisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbWlzc2VzCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgIGVsaWYgbWF4c2l6ZSBpcyBOb25lOgorCisgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICAjIHNpbXBsZSBjYWNoaW5nIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAorICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcywgY3VycnNpemUKKyAgICAgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZV9nZXQoa2V5LCBzZW50aW5lbCkKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IHNlbnRpbmVsOgogICAgICAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gcmVzdWx0CiAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgICAgICAgICBjdXJyc2l6ZSArPSAxCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2FjaGUgPSBPcmRlcmVkRGljdCgpICAgICAgICAgICAjIG9yZGVyZWQgbGVhc3QgcmVjZW50IHRvIG1vc3QgcmVjZW50Ci0gICAgICAgICAgICBjYWNoZV9wb3BpdGVtID0gY2FjaGUucG9waXRlbQotICAgICAgICAgICAgY2FjaGVfcmVuZXcgPSBjYWNoZS5tb3ZlX3RvX2VuZAogCi0gICAgICAgICAgICBAd3JhcHModXNlcl9mdW5jdGlvbikKKyAgICAgICAgZWxzZToKKwogICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCi0gICAgICAgICAgICAgICAga2V5ID0gYXJncwotICAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgIGtleSArPSBrd2RfbWFyayArIHR1cGxlKHNvcnRlZChrd2RzLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICMgc2l6ZSBsaW1pdGVkIGNhY2hpbmcgdGhhdCB0cmFja3MgYWNjZXNzZXMgYnkgcmVjZW5jeQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJvb3QsIGhpdHMsIG1pc3NlcywgY3VycnNpemUsIGZ1bGwKKyAgICAgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKICAgICAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3JlbmV3KGtleSkgICAgIyByZWNvcmQgcmVjZW50IHVzZSBvZiB0aGlzIGtleQorICAgICAgICAgICAgICAgICAgICBsaW5rID0gY2FjaGVfZ2V0KGtleSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbW92ZSB0aGUgbGluayB0byB0aGUgZnJvbnQgb2YgdGhlIGNpcmN1bGFyIHF1ZXVlCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXYsIGxpbmtfbmV4dCwga2V5LCByZXN1bHQgPSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXZbTkVYVF0gPSBsaW5rX25leHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfbmV4dFtQUkVWXSA9IGxpbmtfcHJldgorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gbGluaworICAgICAgICAgICAgICAgICAgICAgICAgbGlua1tQUkVWXSA9IGxhc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbTkVYVF0gPSByb290CiAgICAgICAgICAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByZXN1bHQgICAgICMgcmVjb3JkIHJlY2VudCB1c2Ugb2YgdGhpcyBrZXkKKyAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGNhY2hlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXR0aW5nIGhlcmUgbWVhbnMgdGhhdCB0aGlzIHNhbWUga2V5IHdhcyBhZGRlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgd2hpbGUgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLiAgc2luY2UgdGhlIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlzIGFscmVhZHkgZG9uZSwgd2UgbmVlZCBvbmx5IHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY29tcHV0ZWQgcmVzdWx0IGFuZCB1cGRhdGUgdGhlIGNvdW50IG9mIG1pc3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBmdWxsOgorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2Ugcm9vdCB0byBzdG9yZSB0aGUgbmV3IGtleSBhbmQgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICByb290W0tFWV0gPSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbUkVTVUxUXSA9IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZW1wdHkgdGhlIG9sZGVzdCBsaW5rIGFuZCBtYWtlIGl0IHRoZSBuZXcgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCA9IHJvb3RbTkVYVF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtyb290W0tFWV1dCisgICAgICAgICAgICAgICAgICAgICAgICByb290W0tFWV0gPSByb290W1JFU1VMVF0gPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcm9vdFtQUkVWXQorICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IFtsYXN0LCByb290LCBrZXksIHJlc3VsdF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJzaXplICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgPSAoY3VycnNpemUgPT0gbWF4c2l6ZSkKICAgICAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGNhY2hlKSA+IG1heHNpemU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9wb3BpdGVtKDApICAgICMgcHVyZ2UgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgICAgICBkZWYgY2FjaGVfaW5mbygpOgogICAgICAgICAgICAgIiIiUmVwb3J0IGNhY2hlIHN0YXRpc3RpY3MiIiIKICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICByZXR1cm4gX0NhY2hlSW5mbyhoaXRzLCBtaXNzZXMsIG1heHNpemUsIGxlbihjYWNoZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9DYWNoZUluZm8oaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSkKIAogICAgICAgICBkZWYgY2FjaGVfY2xlYXIoKToKICAgICAgICAgICAgICIiIkNsZWFyIHRoZSBjYWNoZSBhbmQgY2FjaGUgc3RhdGlzdGljcyIiIgotICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCisgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGN1cnJzaXplLCBmdWxsCiAgICAgICAgICAgICB3aXRoIGxvY2s6CiAgICAgICAgICAgICAgICAgY2FjaGUuY2xlYXIoKQotICAgICAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCisgICAgICAgICAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXQorICAgICAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSBjdXJyc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICBmdWxsID0gRmFsc2UKIAogICAgICAgICB3cmFwcGVyLmNhY2hlX2luZm8gPSBjYWNoZV9pbmZvCiAgICAgICAgIHdyYXBwZXIuY2FjaGVfY2xlYXIgPSBjYWNoZV9jbGVhcgotICAgICAgICByZXR1cm4gd3JhcHBlcgorICAgICAgICByZXR1cm4gdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgdXNlcl9mdW5jdGlvbikKIAogICAgIHJldHVybiBkZWNvcmF0aW5nX2Z1bmN0aW9uCmRpZmYgLS1naXQgYS9MaWIvZ2V0b3B0LnB5IGIvTGliL2dldG9wdC5weQppbmRleCA5ODA4NjFkLi4zZDZlY2JkIDEwMDY0NAotLS0gYS9MaWIvZ2V0b3B0LnB5CisrKyBiL0xpYi9nZXRvcHQucHkKQEAgLTE5LDcgKzE5LDcgQEAKICMgR2Vycml0IEhvbGwgPGdlcnJpdEBubC5saW51eC5vcmc+IG1vdmVkIHRoZSBzdHJpbmctYmFzZWQgZXhjZXB0aW9ucwogIyB0byBjbGFzcy1iYXNlZCBleGNlcHRpb25zLgogIwotIyBQZXRlciDDg8KFc3RyYW5kIDxhc3RyYW5kQGx5c2F0b3IubGl1LnNlPiBhZGRlZCBnbnVfZ2V0b3B0KCkuCisjIFBldGVyIMOFc3RyYW5kIDxhc3RyYW5kQGx5c2F0b3IubGl1LnNlPiBhZGRlZCBnbnVfZ2V0b3B0KCkuCiAjCiAjIFRPRE8gZm9yIGdudV9nZXRvcHQoKToKICMKQEAgLTM0LDYgKzM0LDExIEBACiBfX2FsbF9fID0gWyJHZXRvcHRFcnJvciIsImVycm9yIiwiZ2V0b3B0IiwiZ251X2dldG9wdCJdCiAKIGltcG9ydCBvcwordHJ5OgorICAgIGZyb20gZ2V0dGV4dCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBCb290c3RyYXBwaW5nIFB5dGhvbjogZ2V0dGV4dCdzIGRlcGVuZGVuY2llcyBub3QgYnVpbHQgeWV0CisgICAgZGVmIF8ocyk6IHJldHVybiBzCiAKIGNsYXNzIEdldG9wdEVycm9yKEV4Y2VwdGlvbik6CiAgICAgb3B0ID0gJycKQEAgLTE1MywxMCArMTU4LDEwIEBACiAgICAgaWYgaGFzX2FyZzoKICAgICAgICAgaWYgb3B0YXJnIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0tJXMgcmVxdWlyZXMgYXJndW1lbnQnICUgb3B0LCBvcHQpCisgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0tJXMgcmVxdWlyZXMgYXJndW1lbnQnKSAlIG9wdCwgb3B0KQogICAgICAgICAgICAgb3B0YXJnLCBhcmdzID0gYXJnc1swXSwgYXJnc1sxOl0KICAgICBlbGlmIG9wdGFyZyBpcyBub3QgTm9uZToKLSAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIG11c3Qgbm90IGhhdmUgYW4gYXJndW1lbnQnICUgb3B0LCBvcHQpCisgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG11c3Qgbm90IGhhdmUgYW4gYXJndW1lbnQnKSAlIG9wdCwgb3B0KQogICAgIG9wdHMuYXBwZW5kKCgnLS0nICsgb3B0LCBvcHRhcmcgb3IgJycpKQogICAgIHJldHVybiBvcHRzLCBhcmdzCiAKQEAgLTE2Niw3ICsxNzEsNyBAQAogZGVmIGxvbmdfaGFzX2FyZ3Mob3B0LCBsb25nb3B0cyk6CiAgICAgcG9zc2liaWxpdGllcyA9IFtvIGZvciBvIGluIGxvbmdvcHRzIGlmIG8uc3RhcnRzd2l0aChvcHQpXQogICAgIGlmIG5vdCBwb3NzaWJpbGl0aWVzOgotICAgICAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0tJXMgbm90IHJlY29nbml6ZWQnICUgb3B0LCBvcHQpCisgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG5vdCByZWNvZ25pemVkJykgJSBvcHQsIG9wdCkKICAgICAjIElzIHRoZXJlIGFuIGV4YWN0IG1hdGNoPwogICAgIGlmIG9wdCBpbiBwb3NzaWJpbGl0aWVzOgogICAgICAgICByZXR1cm4gRmFsc2UsIG9wdApAQCAtMTc2LDcgKzE4MSw3IEBACiAgICAgaWYgbGVuKHBvc3NpYmlsaXRpZXMpID4gMToKICAgICAgICAgIyBYWFggc2luY2UgcG9zc2liaWxpdGllcyBjb250YWlucyBhbGwgdmFsaWQgY29udGludWF0aW9ucywgbWlnaHQgYmUKICAgICAgICAgIyBuaWNlIHRvIHdvcmsgdGhlbSBpbnRvIHRoZSBlcnJvciBtc2cKLSAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIG5vdCBhIHVuaXF1ZSBwcmVmaXgnICUgb3B0LCBvcHQpCisgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG5vdCBhIHVuaXF1ZSBwcmVmaXgnKSAlIG9wdCwgb3B0KQogICAgIGFzc2VydCBsZW4ocG9zc2liaWxpdGllcykgPT0gMQogICAgIHVuaXF1ZV9tYXRjaCA9IHBvc3NpYmlsaXRpZXNbMF0KICAgICBoYXNfYXJnID0gdW5pcXVlX21hdGNoLmVuZHN3aXRoKCc9JykKQEAgLTE5MCw3ICsxOTUsNyBAQAogICAgICAgICBpZiBzaG9ydF9oYXNfYXJnKG9wdCwgc2hvcnRvcHRzKToKICAgICAgICAgICAgIGlmIG9wdHN0cmluZyA9PSAnJzoKICAgICAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtJXMgcmVxdWlyZXMgYXJndW1lbnQnICUgb3B0LAorICAgICAgICAgICAgICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLSVzIHJlcXVpcmVzIGFyZ3VtZW50JykgJSBvcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdCkKICAgICAgICAgICAgICAgICBvcHRzdHJpbmcsIGFyZ3MgPSBhcmdzWzBdLCBhcmdzWzE6XQogICAgICAgICAgICAgb3B0YXJnLCBvcHRzdHJpbmcgPSBvcHRzdHJpbmcsICcnCkBAIC0yMDMsNyArMjA4LDcgQEAKICAgICBmb3IgaSBpbiByYW5nZShsZW4oc2hvcnRvcHRzKSk6CiAgICAgICAgIGlmIG9wdCA9PSBzaG9ydG9wdHNbaV0gIT0gJzonOgogICAgICAgICAgICAgcmV0dXJuIHNob3J0b3B0cy5zdGFydHN3aXRoKCc6JywgaSsxKQotICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLSVzIG5vdCByZWNvZ25pemVkJyAlIG9wdCwgb3B0KQorICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtJXMgbm90IHJlY29nbml6ZWQnKSAlIG9wdCwgb3B0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi9nZXRwYXNzLnB5IGIvTGliL2dldHBhc3MucHkKaW5kZXggZGMwMmJkMS4uMDA0NDc0MiAxMDA2NDQKLS0tIGEvTGliL2dldHBhc3MucHkKKysrIGIvTGliL2dldHBhc3MucHkKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRjc2V0YXR0cl9mbGFncywgb2xkKQogICAgICAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpICAjIGlzc3VlNzIwOAotICAgICAgICBleGNlcHQgdGVybWlvcy5lcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgdGVybWlvcy5lcnJvcjoKICAgICAgICAgICAgIGlmIHBhc3N3ZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAjIF9yYXdfaW5wdXQgc3VjY2VlZGVkLiAgVGhlIGZpbmFsIHRjc2V0YXR0ciBmYWlsZWQuICBSZXJhaXNlCiAgICAgICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIHRlcm1pbmFsIGluIGFuIHVua25vd24gc3RhdGUuCkBAIC0xNDUsOCArMTQ1LDYgQEAKIAogICAgICIiIgogCi0gICAgaW1wb3J0IG9zCi0KICAgICBmb3IgbmFtZSBpbiAoJ0xPR05BTUUnLCAnVVNFUicsICdMTkFNRScsICdVU0VSTkFNRScpOgogICAgICAgICB1c2VyID0gb3MuZW52aXJvbi5nZXQobmFtZSkKICAgICAgICAgaWYgdXNlcjoKZGlmZiAtLWdpdCBhL0xpYi9nZXR0ZXh0LnB5IGIvTGliL2dldHRleHQucHkKaW5kZXggMjU2ZTMzMS4uZTQzZjA0NCAxMDA2NDQKLS0tIGEvTGliL2dldHRleHQucHkKKysrIGIvTGliL2dldHRleHQucHkKQEAgLTU1LDcgKzU1LDcgQEAKICAgICAgICAgICAgJ2RnZXR0ZXh0JywgJ2RuZ2V0dGV4dCcsICdnZXR0ZXh0JywgJ25nZXR0ZXh0JywKICAgICAgICAgICAgXQogCi1fZGVmYXVsdF9sb2NhbGVkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ3NoYXJlJywgJ2xvY2FsZScpCitfZGVmYXVsdF9sb2NhbGVkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAnc2hhcmUnLCAnbG9jYWxlJykKIAogCiBkZWYgYzJweShwbHVyYWwpOgpkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCBlMWI0M2E1Li5kOGFiZmZkIDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtMTYsMTcgKzE2LDQ5IEBACiAKIFJFQUQsIFdSSVRFID0gMSwgMgogCi1kZWYgVTMyKGkpOgotICAgICIiIlJldHVybiBpIGFzIGFuIHVuc2lnbmVkIGludGVnZXIsIGFzc3VtaW5nIGl0IGZpdHMgaW4gMzIgYml0cy4KLSAgICBJZiBpdCdzID49IDJHQiB3aGVuIHZpZXdlZCBhcyBhIDMyLWJpdCB1bnNpZ25lZCBpbnQsIHJldHVybiBhIGxvbmcuCi0gICAgIiIiCi0gICAgaWYgaSA8IDA6Ci0gICAgICAgIGkgKz0gMSA8PCAzMgotICAgIHJldHVybiBpCitkZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBjb21wcmVzc2xldmVsPTksCisgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAiIiJPcGVuIGEgZ3ppcC1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KIAotZGVmIExPV1UzMihpKToKLSAgICAiIiJSZXR1cm4gdGhlIGxvdy1vcmRlciAzMiBiaXRzLCBhcyBhIG5vbi1uZWdhdGl2ZSBpbnQiIiIKLSAgICByZXR1cm4gaSAmIDB4RkZGRkZGRkYKKyAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwgb3IKKyAgICBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJhIiBvciAiYWIiIGZvciBiaW5hcnkgbW9kZSwKKyAgICBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgbW9kZSBpcyAicmIiLCBhbmQgdGhlCisgICAgZGVmYXVsdCBjb21wcmVzc2xldmVsIGlzIDkuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgR3ppcEZpbGUgY29uc3RydWN0b3I6CisgICAgR3ppcEZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzCisgICAgYW5kIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICAgRm9yIHRleHQgbW9kZSwgYSBHemlwRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IgaGFuZGxpbmcKKyAgICBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAgIiIiCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIGlmICJiIiBpbiBtb2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQorICAgIGVsc2U6CisgICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2VuY29kaW5nJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisKKyAgICBnel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCisgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShmaWxlbmFtZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCkKKyAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CisgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoTm9uZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCwgZmlsZW5hbWUpCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKworICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihiaW5hcnlfZmlsZSwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKIAogZGVmIHdyaXRlMzJ1KG91dHB1dCwgdmFsdWUpOgogICAgICMgVGhlIEwgZm9ybWF0IHdyaXRlcyB0aGUgYml0IHBhdHRlcm4gY29ycmVjdGx5IHdoZXRoZXIgc2lnbmVkCkBAIC0zNiwxNSArNjgsNiBAQAogZGVmIHJlYWQzMihpbnB1dCk6CiAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soIjxJIiwgaW5wdXQucmVhZCg0KSlbMF0KIAotZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD05KToKLSAgICAiIiJTaG9ydGhhbmQgZm9yIEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4KLQotICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZDsgbW9kZSBkZWZhdWx0cyB0byAncmInCi0gICAgYW5kIGNvbXByZXNzbGV2ZWwgZGVmYXVsdHMgdG8gOS4KLQotICAgICIiIgotICAgIHJldHVybiBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbCkKLQogY2xhc3MgX1BhZGRlZEZpbGU6CiAgICAgIiIiTWluaW1hbCByZWFkLW9ubHkgZmlsZSBvYmplY3QgdGhhdCBwcmVwZW5kcyBhIHN0cmluZyB0byB0aGUgY29udGVudHMKICAgICBvZiBhbiBhY3R1YWwgZmlsZS4gU2hvdWxkbid0IGJlIHVzZWQgb3V0c2lkZSBvZiBnemlwLnB5LCBhcyBpdCBsYWNrcwpAQCAtMTA2LDcgKzEyOSw3IEBACiAgICAgdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcmVhZGludG8oKSBhbmQgdHJ1bmNhdGUoKSBtZXRob2RzLgogCiAgICAgVGhpcyBjbGFzcyBvbmx5IHN1cHBvcnRzIG9wZW5pbmcgZmlsZXMgaW4gYmluYXJ5IG1vZGUuIElmIHlvdSBuZWVkIHRvIG9wZW4gYQotICAgIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHdyYXAgeW91ciBHemlwRmlsZSB3aXRoIGFuIGlvLlRleHRJT1dyYXBwZXIuCisgICAgY29tcHJlc3NlZCBmaWxlIGluIHRleHQgbW9kZSwgdXNlIHRoZSBnemlwLm9wZW4oKSBmdW5jdGlvbi4KIAogICAgICIiIgogCkBAIC0xNTMsNyArMTc2LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbW9kZSBhbmQgKCd0JyBpbiBtb2RlIG9yICdVJyBpbiBtb2RlKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIk1vZGUgIiArIG1vZGUgKyAiIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAgICAgICAgIGlmIG1vZGUgYW5kICdiJyBub3QgaW4gbW9kZToKICAgICAgICAgICAgIG1vZGUgKz0gJ2InCiAgICAgICAgIGlmIGZpbGVvYmogaXMgTm9uZToKQEAgLTE2MywxMCArMTg2LDkgQEAKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gJycKICAgICAgICAgaWYgbW9kZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgaGFzYXR0cihmaWxlb2JqLCAnbW9kZScpOiBtb2RlID0gZmlsZW9iai5tb2RlCi0gICAgICAgICAgICBlbHNlOiBtb2RlID0gJ3JiJworICAgICAgICAgICAgbW9kZSA9IGdldGF0dHIoZmlsZW9iaiwgJ21vZGUnLCAncmInKQogCi0gICAgICAgIGlmIG1vZGVbMDoxXSA9PSAncic6CisgICAgICAgIGlmIG1vZGUuc3RhcnRzd2l0aCgncicpOgogICAgICAgICAgICAgc2VsZi5tb2RlID0gUkVBRAogICAgICAgICAgICAgIyBTZXQgZmxhZyBpbmRpY2F0aW5nIHN0YXJ0IG9mIGEgbmV3IG1lbWJlcgogICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKQEAgLTE4MSw3ICsyMDMsNyBAQAogICAgICAgICAgICAgc2VsZi5taW5fcmVhZHNpemUgPSAxMDAKICAgICAgICAgICAgIGZpbGVvYmogPSBfUGFkZGVkRmlsZShmaWxlb2JqKQogCi0gICAgICAgIGVsaWYgbW9kZVswOjFdID09ICd3JyBvciBtb2RlWzA6MV0gPT0gJ2EnOgorICAgICAgICBlbGlmIG1vZGUuc3RhcnRzd2l0aCgoJ3cnLCAnYScpKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFdSSVRFCiAgICAgICAgICAgICBzZWxmLl9pbml0X3dyaXRlKGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5jb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooY29tcHJlc3NsZXZlbCwKQEAgLTE5MCw3ICsyMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZfTUVNX0xFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIk1vZGUgIiArIG1vZGUgKyAiIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKICAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagogICAgICAgICBzZWxmLm9mZnNldCA9IDAKQEAgLTM1Myw2ICszNzUsMzEgQEAKICAgICAgICAgc2VsZi5vZmZzZXQgKz0gc2l6ZQogICAgICAgICByZXR1cm4gY2h1bmsKIAorICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CisgICAgICAgICAgICBpbXBvcnQgZXJybm8KKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUJBREYsICJyZWFkMSgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKKworICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA8PSAwIGFuZCBzZWxmLmZpbGVvYmogaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZvciBjZXJ0YWluIGlucHV0IGRhdGEsIGEgc2luZ2xlIGNhbGwgdG8gX3JlYWQoKSBtYXkgbm90IHJldHVybgorICAgICAgICAgICAgIyBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZSBkYXRhIG9yIHJlYWNoIEVPRi4KKyAgICAgICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZCgpCisgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgc2l6ZSA8IDAgb3Igc2l6ZSA+IHNlbGYuZXh0cmFzaXplOgorICAgICAgICAgICAgc2l6ZSA9IHNlbGYuZXh0cmFzaXplCisKKyAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKKyAgICAgICAgY2h1bmsgPSBzZWxmLmV4dHJhYnVmW29mZnNldDogb2Zmc2V0ICsgc2l6ZV0KKyAgICAgICAgc2VsZi5leHRyYXNpemUgLT0gc2l6ZQorICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCisgICAgICAgIHJldHVybiBjaHVuaworCiAgICAgZGVmIHBlZWsoc2VsZiwgbik6CiAgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCkBAIC0zNjYsOCArNDEzLDEwIEBACiAgICAgICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gYicnCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyAxMDI0IGlzIHRoZSBzYW1lIGJ1ZmZlcmluZyBoZXVyaXN0aWMgdXNlZCBpbiByZWFkKCkKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkKG1heChuLCAxMDI0KSkKKyAgICAgICAgICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGRvbid0IHJldHVybiBiIiIgaWYgd2UgaGF2ZW4ndCByZWFjaGVkIEVPRi4KKyAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLmV4dHJhc2l6ZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAjIDEwMjQgaXMgdGhlIHNhbWUgYnVmZmVyaW5nIGhldXJpc3RpYyB1c2VkIGluIHJlYWQoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkKG1heChuLCAxMDI0KSkKICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0CmRpZmYgLS1naXQgYS9MaWIvaG1hYy5weSBiL0xpYi9obWFjLnB5CmluZGV4IDk1NmZjNjUuLjQyOTdhNzEgMTAwNjQ0Ci0tLSBhL0xpYi9obWFjLnB5CisrKyBiL0xpYi9obWFjLnB5CkBAIC00LDYgKzQsNyBAQAogIiIiCiAKIGltcG9ydCB3YXJuaW5ncyBhcyBfd2FybmluZ3MKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IF9jb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2RpZ2VzdAogCiB0cmFuc181QyA9IGJ5dGVzKCh4IF4gMHg1QykgZm9yIHggaW4gcmFuZ2UoMjU2KSkKIHRyYW5zXzM2ID0gYnl0ZXMoKHggXiAweDM2KSBmb3IgeCBpbiByYW5nZSgyNTYpKQpAQCAtMTMsNiArMTQsNyBAQAogZGlnZXN0X3NpemUgPSBOb25lCiAKIAorCiBjbGFzcyBITUFDOgogICAgICIiIlJGQyAyMTA0IEhNQUMgY2xhc3MuICBBbHNvIGNvbXBsaWVzIHdpdGggUkZDIDQyMzEuCiAKQEAgLTMzLDcgKzM1LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBidXQgZ290ICVyIiAlIHR5cGUoa2V5KS5fX25hbWVfXykKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5OiBleHBlY3RlZCBieXRlcywgYnV0IGdvdCAlciIgJSB0eXBlKGtleSkuX19uYW1lX18pCiAKICAgICAgICAgaWYgZGlnZXN0bW9kIGlzIE5vbmU6CiAgICAgICAgICAgICBpbXBvcnQgaGFzaGxpYgpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvZW50aXRpZXMucHkgYi9MaWIvaHRtbC9lbnRpdGllcy5weQppbmRleCBlMmI3YmYxLi5lODkxYWQ2IDEwMDY0NAotLS0gYS9MaWIvaHRtbC9lbnRpdGllcy5weQorKysgYi9MaWIvaHRtbC9lbnRpdGllcy5weQpAQCAtMjU2LDYgKzI1NiwyMjQyIEBACiAgICAgJ3p3bmonOiAgICAgMHgyMDBjLCAjIHplcm8gd2lkdGggbm9uLWpvaW5lciwgVSsyMDBDIE5FVyBSRkMgMjA3MAogfQogCisKKyMgbWFwcyB0aGUgSFRNTDUgbmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgdG8gdGhlIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocykKK2h0bWw1ID0geworICAgICdBYWN1dGUnOiAnXHhjMScsCisgICAgJ2FhY3V0ZSc6ICdceGUxJywKKyAgICAnQWFjdXRlOyc6ICdceGMxJywKKyAgICAnYWFjdXRlOyc6ICdceGUxJywKKyAgICAnQWJyZXZlOyc6ICdcdTAxMDInLAorICAgICdhYnJldmU7JzogJ1x1MDEwMycsCisgICAgJ2FjOyc6ICdcdTIyM2UnLAorICAgICdhY2Q7JzogJ1x1MjIzZicsCisgICAgJ2FjRTsnOiAnXHUyMjNlXHUwMzMzJywKKyAgICAnQWNpcmMnOiAnXHhjMicsCisgICAgJ2FjaXJjJzogJ1x4ZTInLAorICAgICdBY2lyYzsnOiAnXHhjMicsCisgICAgJ2FjaXJjOyc6ICdceGUyJywKKyAgICAnYWN1dGUnOiAnXHhiNCcsCisgICAgJ2FjdXRlOyc6ICdceGI0JywKKyAgICAnQWN5Oyc6ICdcdTA0MTAnLAorICAgICdhY3k7JzogJ1x1MDQzMCcsCisgICAgJ0FFbGlnJzogJ1x4YzYnLAorICAgICdhZWxpZyc6ICdceGU2JywKKyAgICAnQUVsaWc7JzogJ1x4YzYnLAorICAgICdhZWxpZzsnOiAnXHhlNicsCisgICAgJ2FmOyc6ICdcdTIwNjEnLAorICAgICdBZnI7JzogJ1xVMDAwMWQ1MDQnLAorICAgICdhZnI7JzogJ1xVMDAwMWQ1MWUnLAorICAgICdBZ3JhdmUnOiAnXHhjMCcsCisgICAgJ2FncmF2ZSc6ICdceGUwJywKKyAgICAnQWdyYXZlOyc6ICdceGMwJywKKyAgICAnYWdyYXZlOyc6ICdceGUwJywKKyAgICAnYWxlZnN5bTsnOiAnXHUyMTM1JywKKyAgICAnYWxlcGg7JzogJ1x1MjEzNScsCisgICAgJ0FscGhhOyc6ICdcdTAzOTEnLAorICAgICdhbHBoYTsnOiAnXHUwM2IxJywKKyAgICAnQW1hY3I7JzogJ1x1MDEwMCcsCisgICAgJ2FtYWNyOyc6ICdcdTAxMDEnLAorICAgICdhbWFsZzsnOiAnXHUyYTNmJywKKyAgICAnQU1QJzogJyYnLAorICAgICdhbXAnOiAnJicsCisgICAgJ0FNUDsnOiAnJicsCisgICAgJ2FtcDsnOiAnJicsCisgICAgJ0FuZDsnOiAnXHUyYTUzJywKKyAgICAnYW5kOyc6ICdcdTIyMjcnLAorICAgICdhbmRhbmQ7JzogJ1x1MmE1NScsCisgICAgJ2FuZGQ7JzogJ1x1MmE1YycsCisgICAgJ2FuZHNsb3BlOyc6ICdcdTJhNTgnLAorICAgICdhbmR2Oyc6ICdcdTJhNWEnLAorICAgICdhbmc7JzogJ1x1MjIyMCcsCisgICAgJ2FuZ2U7JzogJ1x1MjlhNCcsCisgICAgJ2FuZ2xlOyc6ICdcdTIyMjAnLAorICAgICdhbmdtc2Q7JzogJ1x1MjIyMScsCisgICAgJ2FuZ21zZGFhOyc6ICdcdTI5YTgnLAorICAgICdhbmdtc2RhYjsnOiAnXHUyOWE5JywKKyAgICAnYW5nbXNkYWM7JzogJ1x1MjlhYScsCisgICAgJ2FuZ21zZGFkOyc6ICdcdTI5YWInLAorICAgICdhbmdtc2RhZTsnOiAnXHUyOWFjJywKKyAgICAnYW5nbXNkYWY7JzogJ1x1MjlhZCcsCisgICAgJ2FuZ21zZGFnOyc6ICdcdTI5YWUnLAorICAgICdhbmdtc2RhaDsnOiAnXHUyOWFmJywKKyAgICAnYW5ncnQ7JzogJ1x1MjIxZicsCisgICAgJ2FuZ3J0dmI7JzogJ1x1MjJiZScsCisgICAgJ2FuZ3J0dmJkOyc6ICdcdTI5OWQnLAorICAgICdhbmdzcGg7JzogJ1x1MjIyMicsCisgICAgJ2FuZ3N0Oyc6ICdceGM1JywKKyAgICAnYW5nemFycjsnOiAnXHUyMzdjJywKKyAgICAnQW9nb247JzogJ1x1MDEwNCcsCisgICAgJ2FvZ29uOyc6ICdcdTAxMDUnLAorICAgICdBb3BmOyc6ICdcVTAwMDFkNTM4JywKKyAgICAnYW9wZjsnOiAnXFUwMDAxZDU1MicsCisgICAgJ2FwOyc6ICdcdTIyNDgnLAorICAgICdhcGFjaXI7JzogJ1x1MmE2ZicsCisgICAgJ2FwRTsnOiAnXHUyYTcwJywKKyAgICAnYXBlOyc6ICdcdTIyNGEnLAorICAgICdhcGlkOyc6ICdcdTIyNGInLAorICAgICdhcG9zOyc6ICInIiwKKyAgICAnQXBwbHlGdW5jdGlvbjsnOiAnXHUyMDYxJywKKyAgICAnYXBwcm94Oyc6ICdcdTIyNDgnLAorICAgICdhcHByb3hlcTsnOiAnXHUyMjRhJywKKyAgICAnQXJpbmcnOiAnXHhjNScsCisgICAgJ2FyaW5nJzogJ1x4ZTUnLAorICAgICdBcmluZzsnOiAnXHhjNScsCisgICAgJ2FyaW5nOyc6ICdceGU1JywKKyAgICAnQXNjcjsnOiAnXFUwMDAxZDQ5YycsCisgICAgJ2FzY3I7JzogJ1xVMDAwMWQ0YjYnLAorICAgICdBc3NpZ247JzogJ1x1MjI1NCcsCisgICAgJ2FzdDsnOiAnKicsCisgICAgJ2FzeW1wOyc6ICdcdTIyNDgnLAorICAgICdhc3ltcGVxOyc6ICdcdTIyNGQnLAorICAgICdBdGlsZGUnOiAnXHhjMycsCisgICAgJ2F0aWxkZSc6ICdceGUzJywKKyAgICAnQXRpbGRlOyc6ICdceGMzJywKKyAgICAnYXRpbGRlOyc6ICdceGUzJywKKyAgICAnQXVtbCc6ICdceGM0JywKKyAgICAnYXVtbCc6ICdceGU0JywKKyAgICAnQXVtbDsnOiAnXHhjNCcsCisgICAgJ2F1bWw7JzogJ1x4ZTQnLAorICAgICdhd2NvbmludDsnOiAnXHUyMjMzJywKKyAgICAnYXdpbnQ7JzogJ1x1MmExMScsCisgICAgJ2JhY2tjb25nOyc6ICdcdTIyNGMnLAorICAgICdiYWNrZXBzaWxvbjsnOiAnXHUwM2Y2JywKKyAgICAnYmFja3ByaW1lOyc6ICdcdTIwMzUnLAorICAgICdiYWNrc2ltOyc6ICdcdTIyM2QnLAorICAgICdiYWNrc2ltZXE7JzogJ1x1MjJjZCcsCisgICAgJ0JhY2tzbGFzaDsnOiAnXHUyMjE2JywKKyAgICAnQmFydjsnOiAnXHUyYWU3JywKKyAgICAnYmFydmVlOyc6ICdcdTIyYmQnLAorICAgICdCYXJ3ZWQ7JzogJ1x1MjMwNicsCisgICAgJ2JhcndlZDsnOiAnXHUyMzA1JywKKyAgICAnYmFyd2VkZ2U7JzogJ1x1MjMwNScsCisgICAgJ2Jicms7JzogJ1x1MjNiNScsCisgICAgJ2Jicmt0YnJrOyc6ICdcdTIzYjYnLAorICAgICdiY29uZzsnOiAnXHUyMjRjJywKKyAgICAnQmN5Oyc6ICdcdTA0MTEnLAorICAgICdiY3k7JzogJ1x1MDQzMScsCisgICAgJ2JkcXVvOyc6ICdcdTIwMWUnLAorICAgICdiZWNhdXM7JzogJ1x1MjIzNScsCisgICAgJ0JlY2F1c2U7JzogJ1x1MjIzNScsCisgICAgJ2JlY2F1c2U7JzogJ1x1MjIzNScsCisgICAgJ2JlbXB0eXY7JzogJ1x1MjliMCcsCisgICAgJ2JlcHNpOyc6ICdcdTAzZjYnLAorICAgICdiZXJub3U7JzogJ1x1MjEyYycsCisgICAgJ0Jlcm5vdWxsaXM7JzogJ1x1MjEyYycsCisgICAgJ0JldGE7JzogJ1x1MDM5MicsCisgICAgJ2JldGE7JzogJ1x1MDNiMicsCisgICAgJ2JldGg7JzogJ1x1MjEzNicsCisgICAgJ2JldHdlZW47JzogJ1x1MjI2YycsCisgICAgJ0JmcjsnOiAnXFUwMDAxZDUwNScsCisgICAgJ2JmcjsnOiAnXFUwMDAxZDUxZicsCisgICAgJ2JpZ2NhcDsnOiAnXHUyMmMyJywKKyAgICAnYmlnY2lyYzsnOiAnXHUyNWVmJywKKyAgICAnYmlnY3VwOyc6ICdcdTIyYzMnLAorICAgICdiaWdvZG90Oyc6ICdcdTJhMDAnLAorICAgICdiaWdvcGx1czsnOiAnXHUyYTAxJywKKyAgICAnYmlnb3RpbWVzOyc6ICdcdTJhMDInLAorICAgICdiaWdzcWN1cDsnOiAnXHUyYTA2JywKKyAgICAnYmlnc3RhcjsnOiAnXHUyNjA1JywKKyAgICAnYmlndHJpYW5nbGVkb3duOyc6ICdcdTI1YmQnLAorICAgICdiaWd0cmlhbmdsZXVwOyc6ICdcdTI1YjMnLAorICAgICdiaWd1cGx1czsnOiAnXHUyYTA0JywKKyAgICAnYmlndmVlOyc6ICdcdTIyYzEnLAorICAgICdiaWd3ZWRnZTsnOiAnXHUyMmMwJywKKyAgICAnYmthcm93Oyc6ICdcdTI5MGQnLAorICAgICdibGFja2xvemVuZ2U7JzogJ1x1MjllYicsCisgICAgJ2JsYWNrc3F1YXJlOyc6ICdcdTI1YWEnLAorICAgICdibGFja3RyaWFuZ2xlOyc6ICdcdTI1YjQnLAorICAgICdibGFja3RyaWFuZ2xlZG93bjsnOiAnXHUyNWJlJywKKyAgICAnYmxhY2t0cmlhbmdsZWxlZnQ7JzogJ1x1MjVjMicsCisgICAgJ2JsYWNrdHJpYW5nbGVyaWdodDsnOiAnXHUyNWI4JywKKyAgICAnYmxhbms7JzogJ1x1MjQyMycsCisgICAgJ2JsazEyOyc6ICdcdTI1OTInLAorICAgICdibGsxNDsnOiAnXHUyNTkxJywKKyAgICAnYmxrMzQ7JzogJ1x1MjU5MycsCisgICAgJ2Jsb2NrOyc6ICdcdTI1ODgnLAorICAgICdibmU7JzogJz1cdTIwZTUnLAorICAgICdibmVxdWl2Oyc6ICdcdTIyNjFcdTIwZTUnLAorICAgICdiTm90Oyc6ICdcdTJhZWQnLAorICAgICdibm90Oyc6ICdcdTIzMTAnLAorICAgICdCb3BmOyc6ICdcVTAwMDFkNTM5JywKKyAgICAnYm9wZjsnOiAnXFUwMDAxZDU1MycsCisgICAgJ2JvdDsnOiAnXHUyMmE1JywKKyAgICAnYm90dG9tOyc6ICdcdTIyYTUnLAorICAgICdib3d0aWU7JzogJ1x1MjJjOCcsCisgICAgJ2JveGJveDsnOiAnXHUyOWM5JywKKyAgICAnYm94REw7JzogJ1x1MjU1NycsCisgICAgJ2JveERsOyc6ICdcdTI1NTYnLAorICAgICdib3hkTDsnOiAnXHUyNTU1JywKKyAgICAnYm94ZGw7JzogJ1x1MjUxMCcsCisgICAgJ2JveERSOyc6ICdcdTI1NTQnLAorICAgICdib3hEcjsnOiAnXHUyNTUzJywKKyAgICAnYm94ZFI7JzogJ1x1MjU1MicsCisgICAgJ2JveGRyOyc6ICdcdTI1MGMnLAorICAgICdib3hIOyc6ICdcdTI1NTAnLAorICAgICdib3hoOyc6ICdcdTI1MDAnLAorICAgICdib3hIRDsnOiAnXHUyNTY2JywKKyAgICAnYm94SGQ7JzogJ1x1MjU2NCcsCisgICAgJ2JveGhEOyc6ICdcdTI1NjUnLAorICAgICdib3hoZDsnOiAnXHUyNTJjJywKKyAgICAnYm94SFU7JzogJ1x1MjU2OScsCisgICAgJ2JveEh1Oyc6ICdcdTI1NjcnLAorICAgICdib3hoVTsnOiAnXHUyNTY4JywKKyAgICAnYm94aHU7JzogJ1x1MjUzNCcsCisgICAgJ2JveG1pbnVzOyc6ICdcdTIyOWYnLAorICAgICdib3hwbHVzOyc6ICdcdTIyOWUnLAorICAgICdib3h0aW1lczsnOiAnXHUyMmEwJywKKyAgICAnYm94VUw7JzogJ1x1MjU1ZCcsCisgICAgJ2JveFVsOyc6ICdcdTI1NWMnLAorICAgICdib3h1TDsnOiAnXHUyNTViJywKKyAgICAnYm94dWw7JzogJ1x1MjUxOCcsCisgICAgJ2JveFVSOyc6ICdcdTI1NWEnLAorICAgICdib3hVcjsnOiAnXHUyNTU5JywKKyAgICAnYm94dVI7JzogJ1x1MjU1OCcsCisgICAgJ2JveHVyOyc6ICdcdTI1MTQnLAorICAgICdib3hWOyc6ICdcdTI1NTEnLAorICAgICdib3h2Oyc6ICdcdTI1MDInLAorICAgICdib3hWSDsnOiAnXHUyNTZjJywKKyAgICAnYm94Vmg7JzogJ1x1MjU2YicsCisgICAgJ2JveHZIOyc6ICdcdTI1NmEnLAorICAgICdib3h2aDsnOiAnXHUyNTNjJywKKyAgICAnYm94Vkw7JzogJ1x1MjU2MycsCisgICAgJ2JveFZsOyc6ICdcdTI1NjInLAorICAgICdib3h2TDsnOiAnXHUyNTYxJywKKyAgICAnYm94dmw7JzogJ1x1MjUyNCcsCisgICAgJ2JveFZSOyc6ICdcdTI1NjAnLAorICAgICdib3hWcjsnOiAnXHUyNTVmJywKKyAgICAnYm94dlI7JzogJ1x1MjU1ZScsCisgICAgJ2JveHZyOyc6ICdcdTI1MWMnLAorICAgICdicHJpbWU7JzogJ1x1MjAzNScsCisgICAgJ0JyZXZlOyc6ICdcdTAyZDgnLAorICAgICdicmV2ZTsnOiAnXHUwMmQ4JywKKyAgICAnYnJ2YmFyJzogJ1x4YTYnLAorICAgICdicnZiYXI7JzogJ1x4YTYnLAorICAgICdCc2NyOyc6ICdcdTIxMmMnLAorICAgICdic2NyOyc6ICdcVTAwMDFkNGI3JywKKyAgICAnYnNlbWk7JzogJ1x1MjA0ZicsCisgICAgJ2JzaW07JzogJ1x1MjIzZCcsCisgICAgJ2JzaW1lOyc6ICdcdTIyY2QnLAorICAgICdic29sOyc6ICdcXCcsCisgICAgJ2Jzb2xiOyc6ICdcdTI5YzUnLAorICAgICdic29saHN1YjsnOiAnXHUyN2M4JywKKyAgICAnYnVsbDsnOiAnXHUyMDIyJywKKyAgICAnYnVsbGV0Oyc6ICdcdTIwMjInLAorICAgICdidW1wOyc6ICdcdTIyNGUnLAorICAgICdidW1wRTsnOiAnXHUyYWFlJywKKyAgICAnYnVtcGU7JzogJ1x1MjI0ZicsCisgICAgJ0J1bXBlcTsnOiAnXHUyMjRlJywKKyAgICAnYnVtcGVxOyc6ICdcdTIyNGYnLAorICAgICdDYWN1dGU7JzogJ1x1MDEwNicsCisgICAgJ2NhY3V0ZTsnOiAnXHUwMTA3JywKKyAgICAnQ2FwOyc6ICdcdTIyZDInLAorICAgICdjYXA7JzogJ1x1MjIyOScsCisgICAgJ2NhcGFuZDsnOiAnXHUyYTQ0JywKKyAgICAnY2FwYnJjdXA7JzogJ1x1MmE0OScsCisgICAgJ2NhcGNhcDsnOiAnXHUyYTRiJywKKyAgICAnY2FwY3VwOyc6ICdcdTJhNDcnLAorICAgICdjYXBkb3Q7JzogJ1x1MmE0MCcsCisgICAgJ0NhcGl0YWxEaWZmZXJlbnRpYWxEOyc6ICdcdTIxNDUnLAorICAgICdjYXBzOyc6ICdcdTIyMjlcdWZlMDAnLAorICAgICdjYXJldDsnOiAnXHUyMDQxJywKKyAgICAnY2Fyb247JzogJ1x1MDJjNycsCisgICAgJ0NheWxleXM7JzogJ1x1MjEyZCcsCisgICAgJ2NjYXBzOyc6ICdcdTJhNGQnLAorICAgICdDY2Fyb247JzogJ1x1MDEwYycsCisgICAgJ2NjYXJvbjsnOiAnXHUwMTBkJywKKyAgICAnQ2NlZGlsJzogJ1x4YzcnLAorICAgICdjY2VkaWwnOiAnXHhlNycsCisgICAgJ0NjZWRpbDsnOiAnXHhjNycsCisgICAgJ2NjZWRpbDsnOiAnXHhlNycsCisgICAgJ0NjaXJjOyc6ICdcdTAxMDgnLAorICAgICdjY2lyYzsnOiAnXHUwMTA5JywKKyAgICAnQ2NvbmludDsnOiAnXHUyMjMwJywKKyAgICAnY2N1cHM7JzogJ1x1MmE0YycsCisgICAgJ2NjdXBzc207JzogJ1x1MmE1MCcsCisgICAgJ0Nkb3Q7JzogJ1x1MDEwYScsCisgICAgJ2Nkb3Q7JzogJ1x1MDEwYicsCisgICAgJ2NlZGlsJzogJ1x4YjgnLAorICAgICdjZWRpbDsnOiAnXHhiOCcsCisgICAgJ0NlZGlsbGE7JzogJ1x4YjgnLAorICAgICdjZW1wdHl2Oyc6ICdcdTI5YjInLAorICAgICdjZW50JzogJ1x4YTInLAorICAgICdjZW50Oyc6ICdceGEyJywKKyAgICAnQ2VudGVyRG90Oyc6ICdceGI3JywKKyAgICAnY2VudGVyZG90Oyc6ICdceGI3JywKKyAgICAnQ2ZyOyc6ICdcdTIxMmQnLAorICAgICdjZnI7JzogJ1xVMDAwMWQ1MjAnLAorICAgICdDSGN5Oyc6ICdcdTA0MjcnLAorICAgICdjaGN5Oyc6ICdcdTA0NDcnLAorICAgICdjaGVjazsnOiAnXHUyNzEzJywKKyAgICAnY2hlY2ttYXJrOyc6ICdcdTI3MTMnLAorICAgICdDaGk7JzogJ1x1MDNhNycsCisgICAgJ2NoaTsnOiAnXHUwM2M3JywKKyAgICAnY2lyOyc6ICdcdTI1Y2InLAorICAgICdjaXJjOyc6ICdcdTAyYzYnLAorICAgICdjaXJjZXE7JzogJ1x1MjI1NycsCisgICAgJ2NpcmNsZWFycm93bGVmdDsnOiAnXHUyMWJhJywKKyAgICAnY2lyY2xlYXJyb3dyaWdodDsnOiAnXHUyMWJiJywKKyAgICAnY2lyY2xlZGFzdDsnOiAnXHUyMjliJywKKyAgICAnY2lyY2xlZGNpcmM7JzogJ1x1MjI5YScsCisgICAgJ2NpcmNsZWRkYXNoOyc6ICdcdTIyOWQnLAorICAgICdDaXJjbGVEb3Q7JzogJ1x1MjI5OScsCisgICAgJ2NpcmNsZWRSOyc6ICdceGFlJywKKyAgICAnY2lyY2xlZFM7JzogJ1x1MjRjOCcsCisgICAgJ0NpcmNsZU1pbnVzOyc6ICdcdTIyOTYnLAorICAgICdDaXJjbGVQbHVzOyc6ICdcdTIyOTUnLAorICAgICdDaXJjbGVUaW1lczsnOiAnXHUyMjk3JywKKyAgICAnY2lyRTsnOiAnXHUyOWMzJywKKyAgICAnY2lyZTsnOiAnXHUyMjU3JywKKyAgICAnY2lyZm5pbnQ7JzogJ1x1MmExMCcsCisgICAgJ2Npcm1pZDsnOiAnXHUyYWVmJywKKyAgICAnY2lyc2NpcjsnOiAnXHUyOWMyJywKKyAgICAnQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyc6ICdcdTIyMzInLAorICAgICdDbG9zZUN1cmx5RG91YmxlUXVvdGU7JzogJ1x1MjAxZCcsCisgICAgJ0Nsb3NlQ3VybHlRdW90ZTsnOiAnXHUyMDE5JywKKyAgICAnY2x1YnM7JzogJ1x1MjY2MycsCisgICAgJ2NsdWJzdWl0Oyc6ICdcdTI2NjMnLAorICAgICdDb2xvbjsnOiAnXHUyMjM3JywKKyAgICAnY29sb247JzogJzonLAorICAgICdDb2xvbmU7JzogJ1x1MmE3NCcsCisgICAgJ2NvbG9uZTsnOiAnXHUyMjU0JywKKyAgICAnY29sb25lcTsnOiAnXHUyMjU0JywKKyAgICAnY29tbWE7JzogJywnLAorICAgICdjb21tYXQ7JzogJ0AnLAorICAgICdjb21wOyc6ICdcdTIyMDEnLAorICAgICdjb21wZm47JzogJ1x1MjIxOCcsCisgICAgJ2NvbXBsZW1lbnQ7JzogJ1x1MjIwMScsCisgICAgJ2NvbXBsZXhlczsnOiAnXHUyMTAyJywKKyAgICAnY29uZzsnOiAnXHUyMjQ1JywKKyAgICAnY29uZ2RvdDsnOiAnXHUyYTZkJywKKyAgICAnQ29uZ3J1ZW50Oyc6ICdcdTIyNjEnLAorICAgICdDb25pbnQ7JzogJ1x1MjIyZicsCisgICAgJ2NvbmludDsnOiAnXHUyMjJlJywKKyAgICAnQ29udG91ckludGVncmFsOyc6ICdcdTIyMmUnLAorICAgICdDb3BmOyc6ICdcdTIxMDInLAorICAgICdjb3BmOyc6ICdcVTAwMDFkNTU0JywKKyAgICAnY29wcm9kOyc6ICdcdTIyMTAnLAorICAgICdDb3Byb2R1Y3Q7JzogJ1x1MjIxMCcsCisgICAgJ0NPUFknOiAnXHhhOScsCisgICAgJ2NvcHknOiAnXHhhOScsCisgICAgJ0NPUFk7JzogJ1x4YTknLAorICAgICdjb3B5Oyc6ICdceGE5JywKKyAgICAnY29weXNyOyc6ICdcdTIxMTcnLAorICAgICdDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyc6ICdcdTIyMzMnLAorICAgICdjcmFycjsnOiAnXHUyMWI1JywKKyAgICAnQ3Jvc3M7JzogJ1x1MmEyZicsCisgICAgJ2Nyb3NzOyc6ICdcdTI3MTcnLAorICAgICdDc2NyOyc6ICdcVTAwMDFkNDllJywKKyAgICAnY3NjcjsnOiAnXFUwMDAxZDRiOCcsCisgICAgJ2NzdWI7JzogJ1x1MmFjZicsCisgICAgJ2NzdWJlOyc6ICdcdTJhZDEnLAorICAgICdjc3VwOyc6ICdcdTJhZDAnLAorICAgICdjc3VwZTsnOiAnXHUyYWQyJywKKyAgICAnY3Rkb3Q7JzogJ1x1MjJlZicsCisgICAgJ2N1ZGFycmw7JzogJ1x1MjkzOCcsCisgICAgJ2N1ZGFycnI7JzogJ1x1MjkzNScsCisgICAgJ2N1ZXByOyc6ICdcdTIyZGUnLAorICAgICdjdWVzYzsnOiAnXHUyMmRmJywKKyAgICAnY3VsYXJyOyc6ICdcdTIxYjYnLAorICAgICdjdWxhcnJwOyc6ICdcdTI5M2QnLAorICAgICdDdXA7JzogJ1x1MjJkMycsCisgICAgJ2N1cDsnOiAnXHUyMjJhJywKKyAgICAnY3VwYnJjYXA7JzogJ1x1MmE0OCcsCisgICAgJ0N1cENhcDsnOiAnXHUyMjRkJywKKyAgICAnY3VwY2FwOyc6ICdcdTJhNDYnLAorICAgICdjdXBjdXA7JzogJ1x1MmE0YScsCisgICAgJ2N1cGRvdDsnOiAnXHUyMjhkJywKKyAgICAnY3Vwb3I7JzogJ1x1MmE0NScsCisgICAgJ2N1cHM7JzogJ1x1MjIyYVx1ZmUwMCcsCisgICAgJ2N1cmFycjsnOiAnXHUyMWI3JywKKyAgICAnY3VyYXJybTsnOiAnXHUyOTNjJywKKyAgICAnY3VybHllcXByZWM7JzogJ1x1MjJkZScsCisgICAgJ2N1cmx5ZXFzdWNjOyc6ICdcdTIyZGYnLAorICAgICdjdXJseXZlZTsnOiAnXHUyMmNlJywKKyAgICAnY3VybHl3ZWRnZTsnOiAnXHUyMmNmJywKKyAgICAnY3VycmVuJzogJ1x4YTQnLAorICAgICdjdXJyZW47JzogJ1x4YTQnLAorICAgICdjdXJ2ZWFycm93bGVmdDsnOiAnXHUyMWI2JywKKyAgICAnY3VydmVhcnJvd3JpZ2h0Oyc6ICdcdTIxYjcnLAorICAgICdjdXZlZTsnOiAnXHUyMmNlJywKKyAgICAnY3V3ZWQ7JzogJ1x1MjJjZicsCisgICAgJ2N3Y29uaW50Oyc6ICdcdTIyMzInLAorICAgICdjd2ludDsnOiAnXHUyMjMxJywKKyAgICAnY3lsY3R5Oyc6ICdcdTIzMmQnLAorICAgICdEYWdnZXI7JzogJ1x1MjAyMScsCisgICAgJ2RhZ2dlcjsnOiAnXHUyMDIwJywKKyAgICAnZGFsZXRoOyc6ICdcdTIxMzgnLAorICAgICdEYXJyOyc6ICdcdTIxYTEnLAorICAgICdkQXJyOyc6ICdcdTIxZDMnLAorICAgICdkYXJyOyc6ICdcdTIxOTMnLAorICAgICdkYXNoOyc6ICdcdTIwMTAnLAorICAgICdEYXNodjsnOiAnXHUyYWU0JywKKyAgICAnZGFzaHY7JzogJ1x1MjJhMycsCisgICAgJ2Ria2Fyb3c7JzogJ1x1MjkwZicsCisgICAgJ2RibGFjOyc6ICdcdTAyZGQnLAorICAgICdEY2Fyb247JzogJ1x1MDEwZScsCisgICAgJ2RjYXJvbjsnOiAnXHUwMTBmJywKKyAgICAnRGN5Oyc6ICdcdTA0MTQnLAorICAgICdkY3k7JzogJ1x1MDQzNCcsCisgICAgJ0REOyc6ICdcdTIxNDUnLAorICAgICdkZDsnOiAnXHUyMTQ2JywKKyAgICAnZGRhZ2dlcjsnOiAnXHUyMDIxJywKKyAgICAnZGRhcnI7JzogJ1x1MjFjYScsCisgICAgJ0REb3RyYWhkOyc6ICdcdTI5MTEnLAorICAgICdkZG90c2VxOyc6ICdcdTJhNzcnLAorICAgICdkZWcnOiAnXHhiMCcsCisgICAgJ2RlZzsnOiAnXHhiMCcsCisgICAgJ0RlbDsnOiAnXHUyMjA3JywKKyAgICAnRGVsdGE7JzogJ1x1MDM5NCcsCisgICAgJ2RlbHRhOyc6ICdcdTAzYjQnLAorICAgICdkZW1wdHl2Oyc6ICdcdTI5YjEnLAorICAgICdkZmlzaHQ7JzogJ1x1Mjk3ZicsCisgICAgJ0RmcjsnOiAnXFUwMDAxZDUwNycsCisgICAgJ2RmcjsnOiAnXFUwMDAxZDUyMScsCisgICAgJ2RIYXI7JzogJ1x1Mjk2NScsCisgICAgJ2RoYXJsOyc6ICdcdTIxYzMnLAorICAgICdkaGFycjsnOiAnXHUyMWMyJywKKyAgICAnRGlhY3JpdGljYWxBY3V0ZTsnOiAnXHhiNCcsCisgICAgJ0RpYWNyaXRpY2FsRG90Oyc6ICdcdTAyZDknLAorICAgICdEaWFjcml0aWNhbERvdWJsZUFjdXRlOyc6ICdcdTAyZGQnLAorICAgICdEaWFjcml0aWNhbEdyYXZlOyc6ICdgJywKKyAgICAnRGlhY3JpdGljYWxUaWxkZTsnOiAnXHUwMmRjJywKKyAgICAnZGlhbTsnOiAnXHUyMmM0JywKKyAgICAnRGlhbW9uZDsnOiAnXHUyMmM0JywKKyAgICAnZGlhbW9uZDsnOiAnXHUyMmM0JywKKyAgICAnZGlhbW9uZHN1aXQ7JzogJ1x1MjY2NicsCisgICAgJ2RpYW1zOyc6ICdcdTI2NjYnLAorICAgICdkaWU7JzogJ1x4YTgnLAorICAgICdEaWZmZXJlbnRpYWxEOyc6ICdcdTIxNDYnLAorICAgICdkaWdhbW1hOyc6ICdcdTAzZGQnLAorICAgICdkaXNpbjsnOiAnXHUyMmYyJywKKyAgICAnZGl2Oyc6ICdceGY3JywKKyAgICAnZGl2aWRlJzogJ1x4ZjcnLAorICAgICdkaXZpZGU7JzogJ1x4ZjcnLAorICAgICdkaXZpZGVvbnRpbWVzOyc6ICdcdTIyYzcnLAorICAgICdkaXZvbng7JzogJ1x1MjJjNycsCisgICAgJ0RKY3k7JzogJ1x1MDQwMicsCisgICAgJ2RqY3k7JzogJ1x1MDQ1MicsCisgICAgJ2RsY29ybjsnOiAnXHUyMzFlJywKKyAgICAnZGxjcm9wOyc6ICdcdTIzMGQnLAorICAgICdkb2xsYXI7JzogJyQnLAorICAgICdEb3BmOyc6ICdcVTAwMDFkNTNiJywKKyAgICAnZG9wZjsnOiAnXFUwMDAxZDU1NScsCisgICAgJ0RvdDsnOiAnXHhhOCcsCisgICAgJ2RvdDsnOiAnXHUwMmQ5JywKKyAgICAnRG90RG90Oyc6ICdcdTIwZGMnLAorICAgICdkb3RlcTsnOiAnXHUyMjUwJywKKyAgICAnZG90ZXFkb3Q7JzogJ1x1MjI1MScsCisgICAgJ0RvdEVxdWFsOyc6ICdcdTIyNTAnLAorICAgICdkb3RtaW51czsnOiAnXHUyMjM4JywKKyAgICAnZG90cGx1czsnOiAnXHUyMjE0JywKKyAgICAnZG90c3F1YXJlOyc6ICdcdTIyYTEnLAorICAgICdkb3VibGViYXJ3ZWRnZTsnOiAnXHUyMzA2JywKKyAgICAnRG91YmxlQ29udG91ckludGVncmFsOyc6ICdcdTIyMmYnLAorICAgICdEb3VibGVEb3Q7JzogJ1x4YTgnLAorICAgICdEb3VibGVEb3duQXJyb3c7JzogJ1x1MjFkMycsCisgICAgJ0RvdWJsZUxlZnRBcnJvdzsnOiAnXHUyMWQwJywKKyAgICAnRG91YmxlTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjFkNCcsCisgICAgJ0RvdWJsZUxlZnRUZWU7JzogJ1x1MmFlNCcsCisgICAgJ0RvdWJsZUxvbmdMZWZ0QXJyb3c7JzogJ1x1MjdmOCcsCisgICAgJ0RvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyN2ZhJywKKyAgICAnRG91YmxlTG9uZ1JpZ2h0QXJyb3c7JzogJ1x1MjdmOScsCisgICAgJ0RvdWJsZVJpZ2h0QXJyb3c7JzogJ1x1MjFkMicsCisgICAgJ0RvdWJsZVJpZ2h0VGVlOyc6ICdcdTIyYTgnLAorICAgICdEb3VibGVVcEFycm93Oyc6ICdcdTIxZDEnLAorICAgICdEb3VibGVVcERvd25BcnJvdzsnOiAnXHUyMWQ1JywKKyAgICAnRG91YmxlVmVydGljYWxCYXI7JzogJ1x1MjIyNScsCisgICAgJ0Rvd25BcnJvdzsnOiAnXHUyMTkzJywKKyAgICAnRG93bmFycm93Oyc6ICdcdTIxZDMnLAorICAgICdkb3duYXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ0Rvd25BcnJvd0JhcjsnOiAnXHUyOTEzJywKKyAgICAnRG93bkFycm93VXBBcnJvdzsnOiAnXHUyMWY1JywKKyAgICAnRG93bkJyZXZlOyc6ICdcdTAzMTEnLAorICAgICdkb3duZG93bmFycm93czsnOiAnXHUyMWNhJywKKyAgICAnZG93bmhhcnBvb25sZWZ0Oyc6ICdcdTIxYzMnLAorICAgICdkb3duaGFycG9vbnJpZ2h0Oyc6ICdcdTIxYzInLAorICAgICdEb3duTGVmdFJpZ2h0VmVjdG9yOyc6ICdcdTI5NTAnLAorICAgICdEb3duTGVmdFRlZVZlY3RvcjsnOiAnXHUyOTVlJywKKyAgICAnRG93bkxlZnRWZWN0b3I7JzogJ1x1MjFiZCcsCisgICAgJ0Rvd25MZWZ0VmVjdG9yQmFyOyc6ICdcdTI5NTYnLAorICAgICdEb3duUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1ZicsCisgICAgJ0Rvd25SaWdodFZlY3RvcjsnOiAnXHUyMWMxJywKKyAgICAnRG93blJpZ2h0VmVjdG9yQmFyOyc6ICdcdTI5NTcnLAorICAgICdEb3duVGVlOyc6ICdcdTIyYTQnLAorICAgICdEb3duVGVlQXJyb3c7JzogJ1x1MjFhNycsCisgICAgJ2RyYmthcm93Oyc6ICdcdTI5MTAnLAorICAgICdkcmNvcm47JzogJ1x1MjMxZicsCisgICAgJ2RyY3JvcDsnOiAnXHUyMzBjJywKKyAgICAnRHNjcjsnOiAnXFUwMDAxZDQ5ZicsCisgICAgJ2RzY3I7JzogJ1xVMDAwMWQ0YjknLAorICAgICdEU2N5Oyc6ICdcdTA0MDUnLAorICAgICdkc2N5Oyc6ICdcdTA0NTUnLAorICAgICdkc29sOyc6ICdcdTI5ZjYnLAorICAgICdEc3Ryb2s7JzogJ1x1MDExMCcsCisgICAgJ2RzdHJvazsnOiAnXHUwMTExJywKKyAgICAnZHRkb3Q7JzogJ1x1MjJmMScsCisgICAgJ2R0cmk7JzogJ1x1MjViZicsCisgICAgJ2R0cmlmOyc6ICdcdTI1YmUnLAorICAgICdkdWFycjsnOiAnXHUyMWY1JywKKyAgICAnZHVoYXI7JzogJ1x1Mjk2ZicsCisgICAgJ2R3YW5nbGU7JzogJ1x1MjlhNicsCisgICAgJ0RaY3k7JzogJ1x1MDQwZicsCisgICAgJ2R6Y3k7JzogJ1x1MDQ1ZicsCisgICAgJ2R6aWdyYXJyOyc6ICdcdTI3ZmYnLAorICAgICdFYWN1dGUnOiAnXHhjOScsCisgICAgJ2VhY3V0ZSc6ICdceGU5JywKKyAgICAnRWFjdXRlOyc6ICdceGM5JywKKyAgICAnZWFjdXRlOyc6ICdceGU5JywKKyAgICAnZWFzdGVyOyc6ICdcdTJhNmUnLAorICAgICdFY2Fyb247JzogJ1x1MDExYScsCisgICAgJ2VjYXJvbjsnOiAnXHUwMTFiJywKKyAgICAnZWNpcjsnOiAnXHUyMjU2JywKKyAgICAnRWNpcmMnOiAnXHhjYScsCisgICAgJ2VjaXJjJzogJ1x4ZWEnLAorICAgICdFY2lyYzsnOiAnXHhjYScsCisgICAgJ2VjaXJjOyc6ICdceGVhJywKKyAgICAnZWNvbG9uOyc6ICdcdTIyNTUnLAorICAgICdFY3k7JzogJ1x1MDQyZCcsCisgICAgJ2VjeTsnOiAnXHUwNDRkJywKKyAgICAnZUREb3Q7JzogJ1x1MmE3NycsCisgICAgJ0Vkb3Q7JzogJ1x1MDExNicsCisgICAgJ2VEb3Q7JzogJ1x1MjI1MScsCisgICAgJ2Vkb3Q7JzogJ1x1MDExNycsCisgICAgJ2VlOyc6ICdcdTIxNDcnLAorICAgICdlZkRvdDsnOiAnXHUyMjUyJywKKyAgICAnRWZyOyc6ICdcVTAwMDFkNTA4JywKKyAgICAnZWZyOyc6ICdcVTAwMDFkNTIyJywKKyAgICAnZWc7JzogJ1x1MmE5YScsCisgICAgJ0VncmF2ZSc6ICdceGM4JywKKyAgICAnZWdyYXZlJzogJ1x4ZTgnLAorICAgICdFZ3JhdmU7JzogJ1x4YzgnLAorICAgICdlZ3JhdmU7JzogJ1x4ZTgnLAorICAgICdlZ3M7JzogJ1x1MmE5NicsCisgICAgJ2Vnc2RvdDsnOiAnXHUyYTk4JywKKyAgICAnZWw7JzogJ1x1MmE5OScsCisgICAgJ0VsZW1lbnQ7JzogJ1x1MjIwOCcsCisgICAgJ2VsaW50ZXJzOyc6ICdcdTIzZTcnLAorICAgICdlbGw7JzogJ1x1MjExMycsCisgICAgJ2VsczsnOiAnXHUyYTk1JywKKyAgICAnZWxzZG90Oyc6ICdcdTJhOTcnLAorICAgICdFbWFjcjsnOiAnXHUwMTEyJywKKyAgICAnZW1hY3I7JzogJ1x1MDExMycsCisgICAgJ2VtcHR5Oyc6ICdcdTIyMDUnLAorICAgICdlbXB0eXNldDsnOiAnXHUyMjA1JywKKyAgICAnRW1wdHlTbWFsbFNxdWFyZTsnOiAnXHUyNWZiJywKKyAgICAnZW1wdHl2Oyc6ICdcdTIyMDUnLAorICAgICdFbXB0eVZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFiJywKKyAgICAnZW1zcDEzOyc6ICdcdTIwMDQnLAorICAgICdlbXNwMTQ7JzogJ1x1MjAwNScsCisgICAgJ2Vtc3A7JzogJ1x1MjAwMycsCisgICAgJ0VORzsnOiAnXHUwMTRhJywKKyAgICAnZW5nOyc6ICdcdTAxNGInLAorICAgICdlbnNwOyc6ICdcdTIwMDInLAorICAgICdFb2dvbjsnOiAnXHUwMTE4JywKKyAgICAnZW9nb247JzogJ1x1MDExOScsCisgICAgJ0VvcGY7JzogJ1xVMDAwMWQ1M2MnLAorICAgICdlb3BmOyc6ICdcVTAwMDFkNTU2JywKKyAgICAnZXBhcjsnOiAnXHUyMmQ1JywKKyAgICAnZXBhcnNsOyc6ICdcdTI5ZTMnLAorICAgICdlcGx1czsnOiAnXHUyYTcxJywKKyAgICAnZXBzaTsnOiAnXHUwM2I1JywKKyAgICAnRXBzaWxvbjsnOiAnXHUwMzk1JywKKyAgICAnZXBzaWxvbjsnOiAnXHUwM2I1JywKKyAgICAnZXBzaXY7JzogJ1x1MDNmNScsCisgICAgJ2VxY2lyYzsnOiAnXHUyMjU2JywKKyAgICAnZXFjb2xvbjsnOiAnXHUyMjU1JywKKyAgICAnZXFzaW07JzogJ1x1MjI0MicsCisgICAgJ2Vxc2xhbnRndHI7JzogJ1x1MmE5NicsCisgICAgJ2Vxc2xhbnRsZXNzOyc6ICdcdTJhOTUnLAorICAgICdFcXVhbDsnOiAnXHUyYTc1JywKKyAgICAnZXF1YWxzOyc6ICc9JywKKyAgICAnRXF1YWxUaWxkZTsnOiAnXHUyMjQyJywKKyAgICAnZXF1ZXN0Oyc6ICdcdTIyNWYnLAorICAgICdFcXVpbGlicml1bTsnOiAnXHUyMWNjJywKKyAgICAnZXF1aXY7JzogJ1x1MjI2MScsCisgICAgJ2VxdWl2REQ7JzogJ1x1MmE3OCcsCisgICAgJ2VxdnBhcnNsOyc6ICdcdTI5ZTUnLAorICAgICdlcmFycjsnOiAnXHUyOTcxJywKKyAgICAnZXJEb3Q7JzogJ1x1MjI1MycsCisgICAgJ0VzY3I7JzogJ1x1MjEzMCcsCisgICAgJ2VzY3I7JzogJ1x1MjEyZicsCisgICAgJ2VzZG90Oyc6ICdcdTIyNTAnLAorICAgICdFc2ltOyc6ICdcdTJhNzMnLAorICAgICdlc2ltOyc6ICdcdTIyNDInLAorICAgICdFdGE7JzogJ1x1MDM5NycsCisgICAgJ2V0YTsnOiAnXHUwM2I3JywKKyAgICAnRVRIJzogJ1x4ZDAnLAorICAgICdldGgnOiAnXHhmMCcsCisgICAgJ0VUSDsnOiAnXHhkMCcsCisgICAgJ2V0aDsnOiAnXHhmMCcsCisgICAgJ0V1bWwnOiAnXHhjYicsCisgICAgJ2V1bWwnOiAnXHhlYicsCisgICAgJ0V1bWw7JzogJ1x4Y2InLAorICAgICdldW1sOyc6ICdceGViJywKKyAgICAnZXVybzsnOiAnXHUyMGFjJywKKyAgICAnZXhjbDsnOiAnIScsCisgICAgJ2V4aXN0Oyc6ICdcdTIyMDMnLAorICAgICdFeGlzdHM7JzogJ1x1MjIwMycsCisgICAgJ2V4cGVjdGF0aW9uOyc6ICdcdTIxMzAnLAorICAgICdFeHBvbmVudGlhbEU7JzogJ1x1MjE0NycsCisgICAgJ2V4cG9uZW50aWFsZTsnOiAnXHUyMTQ3JywKKyAgICAnZmFsbGluZ2RvdHNlcTsnOiAnXHUyMjUyJywKKyAgICAnRmN5Oyc6ICdcdTA0MjQnLAorICAgICdmY3k7JzogJ1x1MDQ0NCcsCisgICAgJ2ZlbWFsZTsnOiAnXHUyNjQwJywKKyAgICAnZmZpbGlnOyc6ICdcdWZiMDMnLAorICAgICdmZmxpZzsnOiAnXHVmYjAwJywKKyAgICAnZmZsbGlnOyc6ICdcdWZiMDQnLAorICAgICdGZnI7JzogJ1xVMDAwMWQ1MDknLAorICAgICdmZnI7JzogJ1xVMDAwMWQ1MjMnLAorICAgICdmaWxpZzsnOiAnXHVmYjAxJywKKyAgICAnRmlsbGVkU21hbGxTcXVhcmU7JzogJ1x1MjVmYycsCisgICAgJ0ZpbGxlZFZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFhJywKKyAgICAnZmpsaWc7JzogJ2ZqJywKKyAgICAnZmxhdDsnOiAnXHUyNjZkJywKKyAgICAnZmxsaWc7JzogJ1x1ZmIwMicsCisgICAgJ2ZsdG5zOyc6ICdcdTI1YjEnLAorICAgICdmbm9mOyc6ICdcdTAxOTInLAorICAgICdGb3BmOyc6ICdcVTAwMDFkNTNkJywKKyAgICAnZm9wZjsnOiAnXFUwMDAxZDU1NycsCisgICAgJ0ZvckFsbDsnOiAnXHUyMjAwJywKKyAgICAnZm9yYWxsOyc6ICdcdTIyMDAnLAorICAgICdmb3JrOyc6ICdcdTIyZDQnLAorICAgICdmb3JrdjsnOiAnXHUyYWQ5JywKKyAgICAnRm91cmllcnRyZjsnOiAnXHUyMTMxJywKKyAgICAnZnBhcnRpbnQ7JzogJ1x1MmEwZCcsCisgICAgJ2ZyYWMxMic6ICdceGJkJywKKyAgICAnZnJhYzEyOyc6ICdceGJkJywKKyAgICAnZnJhYzEzOyc6ICdcdTIxNTMnLAorICAgICdmcmFjMTQnOiAnXHhiYycsCisgICAgJ2ZyYWMxNDsnOiAnXHhiYycsCisgICAgJ2ZyYWMxNTsnOiAnXHUyMTU1JywKKyAgICAnZnJhYzE2Oyc6ICdcdTIxNTknLAorICAgICdmcmFjMTg7JzogJ1x1MjE1YicsCisgICAgJ2ZyYWMyMzsnOiAnXHUyMTU0JywKKyAgICAnZnJhYzI1Oyc6ICdcdTIxNTYnLAorICAgICdmcmFjMzQnOiAnXHhiZScsCisgICAgJ2ZyYWMzNDsnOiAnXHhiZScsCisgICAgJ2ZyYWMzNTsnOiAnXHUyMTU3JywKKyAgICAnZnJhYzM4Oyc6ICdcdTIxNWMnLAorICAgICdmcmFjNDU7JzogJ1x1MjE1OCcsCisgICAgJ2ZyYWM1NjsnOiAnXHUyMTVhJywKKyAgICAnZnJhYzU4Oyc6ICdcdTIxNWQnLAorICAgICdmcmFjNzg7JzogJ1x1MjE1ZScsCisgICAgJ2ZyYXNsOyc6ICdcdTIwNDQnLAorICAgICdmcm93bjsnOiAnXHUyMzIyJywKKyAgICAnRnNjcjsnOiAnXHUyMTMxJywKKyAgICAnZnNjcjsnOiAnXFUwMDAxZDRiYicsCisgICAgJ2dhY3V0ZTsnOiAnXHUwMWY1JywKKyAgICAnR2FtbWE7JzogJ1x1MDM5MycsCisgICAgJ2dhbW1hOyc6ICdcdTAzYjMnLAorICAgICdHYW1tYWQ7JzogJ1x1MDNkYycsCisgICAgJ2dhbW1hZDsnOiAnXHUwM2RkJywKKyAgICAnZ2FwOyc6ICdcdTJhODYnLAorICAgICdHYnJldmU7JzogJ1x1MDExZScsCisgICAgJ2dicmV2ZTsnOiAnXHUwMTFmJywKKyAgICAnR2NlZGlsOyc6ICdcdTAxMjInLAorICAgICdHY2lyYzsnOiAnXHUwMTFjJywKKyAgICAnZ2NpcmM7JzogJ1x1MDExZCcsCisgICAgJ0djeTsnOiAnXHUwNDEzJywKKyAgICAnZ2N5Oyc6ICdcdTA0MzMnLAorICAgICdHZG90Oyc6ICdcdTAxMjAnLAorICAgICdnZG90Oyc6ICdcdTAxMjEnLAorICAgICdnRTsnOiAnXHUyMjY3JywKKyAgICAnZ2U7JzogJ1x1MjI2NScsCisgICAgJ2dFbDsnOiAnXHUyYThjJywKKyAgICAnZ2VsOyc6ICdcdTIyZGInLAorICAgICdnZXE7JzogJ1x1MjI2NScsCisgICAgJ2dlcXE7JzogJ1x1MjI2NycsCisgICAgJ2dlcXNsYW50Oyc6ICdcdTJhN2UnLAorICAgICdnZXM7JzogJ1x1MmE3ZScsCisgICAgJ2dlc2NjOyc6ICdcdTJhYTknLAorICAgICdnZXNkb3Q7JzogJ1x1MmE4MCcsCisgICAgJ2dlc2RvdG87JzogJ1x1MmE4MicsCisgICAgJ2dlc2RvdG9sOyc6ICdcdTJhODQnLAorICAgICdnZXNsOyc6ICdcdTIyZGJcdWZlMDAnLAorICAgICdnZXNsZXM7JzogJ1x1MmE5NCcsCisgICAgJ0dmcjsnOiAnXFUwMDAxZDUwYScsCisgICAgJ2dmcjsnOiAnXFUwMDAxZDUyNCcsCisgICAgJ0dnOyc6ICdcdTIyZDknLAorICAgICdnZzsnOiAnXHUyMjZiJywKKyAgICAnZ2dnOyc6ICdcdTIyZDknLAorICAgICdnaW1lbDsnOiAnXHUyMTM3JywKKyAgICAnR0pjeTsnOiAnXHUwNDAzJywKKyAgICAnZ2pjeTsnOiAnXHUwNDUzJywKKyAgICAnZ2w7JzogJ1x1MjI3NycsCisgICAgJ2dsYTsnOiAnXHUyYWE1JywKKyAgICAnZ2xFOyc6ICdcdTJhOTInLAorICAgICdnbGo7JzogJ1x1MmFhNCcsCisgICAgJ2duYXA7JzogJ1x1MmE4YScsCisgICAgJ2duYXBwcm94Oyc6ICdcdTJhOGEnLAorICAgICdnbkU7JzogJ1x1MjI2OScsCisgICAgJ2duZTsnOiAnXHUyYTg4JywKKyAgICAnZ25lcTsnOiAnXHUyYTg4JywKKyAgICAnZ25lcXE7JzogJ1x1MjI2OScsCisgICAgJ2duc2ltOyc6ICdcdTIyZTcnLAorICAgICdHb3BmOyc6ICdcVTAwMDFkNTNlJywKKyAgICAnZ29wZjsnOiAnXFUwMDAxZDU1OCcsCisgICAgJ2dyYXZlOyc6ICdgJywKKyAgICAnR3JlYXRlckVxdWFsOyc6ICdcdTIyNjUnLAorICAgICdHcmVhdGVyRXF1YWxMZXNzOyc6ICdcdTIyZGInLAorICAgICdHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjcnLAorICAgICdHcmVhdGVyR3JlYXRlcjsnOiAnXHUyYWEyJywKKyAgICAnR3JlYXRlckxlc3M7JzogJ1x1MjI3NycsCisgICAgJ0dyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2UnLAorICAgICdHcmVhdGVyVGlsZGU7JzogJ1x1MjI3MycsCisgICAgJ0dzY3I7JzogJ1xVMDAwMWQ0YTInLAorICAgICdnc2NyOyc6ICdcdTIxMGEnLAorICAgICdnc2ltOyc6ICdcdTIyNzMnLAorICAgICdnc2ltZTsnOiAnXHUyYThlJywKKyAgICAnZ3NpbWw7JzogJ1x1MmE5MCcsCisgICAgJ0dUJzogJz4nLAorICAgICdndCc6ICc+JywKKyAgICAnR1Q7JzogJz4nLAorICAgICdHdDsnOiAnXHUyMjZiJywKKyAgICAnZ3Q7JzogJz4nLAorICAgICdndGNjOyc6ICdcdTJhYTcnLAorICAgICdndGNpcjsnOiAnXHUyYTdhJywKKyAgICAnZ3Rkb3Q7JzogJ1x1MjJkNycsCisgICAgJ2d0bFBhcjsnOiAnXHUyOTk1JywKKyAgICAnZ3RxdWVzdDsnOiAnXHUyYTdjJywKKyAgICAnZ3RyYXBwcm94Oyc6ICdcdTJhODYnLAorICAgICdndHJhcnI7JzogJ1x1Mjk3OCcsCisgICAgJ2d0cmRvdDsnOiAnXHUyMmQ3JywKKyAgICAnZ3RyZXFsZXNzOyc6ICdcdTIyZGInLAorICAgICdndHJlcXFsZXNzOyc6ICdcdTJhOGMnLAorICAgICdndHJsZXNzOyc6ICdcdTIyNzcnLAorICAgICdndHJzaW07JzogJ1x1MjI3MycsCisgICAgJ2d2ZXJ0bmVxcTsnOiAnXHUyMjY5XHVmZTAwJywKKyAgICAnZ3ZuRTsnOiAnXHUyMjY5XHVmZTAwJywKKyAgICAnSGFjZWs7JzogJ1x1MDJjNycsCisgICAgJ2hhaXJzcDsnOiAnXHUyMDBhJywKKyAgICAnaGFsZjsnOiAnXHhiZCcsCisgICAgJ2hhbWlsdDsnOiAnXHUyMTBiJywKKyAgICAnSEFSRGN5Oyc6ICdcdTA0MmEnLAorICAgICdoYXJkY3k7JzogJ1x1MDQ0YScsCisgICAgJ2hBcnI7JzogJ1x1MjFkNCcsCisgICAgJ2hhcnI7JzogJ1x1MjE5NCcsCisgICAgJ2hhcnJjaXI7JzogJ1x1Mjk0OCcsCisgICAgJ2hhcnJ3Oyc6ICdcdTIxYWQnLAorICAgICdIYXQ7JzogJ14nLAorICAgICdoYmFyOyc6ICdcdTIxMGYnLAorICAgICdIY2lyYzsnOiAnXHUwMTI0JywKKyAgICAnaGNpcmM7JzogJ1x1MDEyNScsCisgICAgJ2hlYXJ0czsnOiAnXHUyNjY1JywKKyAgICAnaGVhcnRzdWl0Oyc6ICdcdTI2NjUnLAorICAgICdoZWxsaXA7JzogJ1x1MjAyNicsCisgICAgJ2hlcmNvbjsnOiAnXHUyMmI5JywKKyAgICAnSGZyOyc6ICdcdTIxMGMnLAorICAgICdoZnI7JzogJ1xVMDAwMWQ1MjUnLAorICAgICdIaWxiZXJ0U3BhY2U7JzogJ1x1MjEwYicsCisgICAgJ2hrc2Vhcm93Oyc6ICdcdTI5MjUnLAorICAgICdoa3N3YXJvdzsnOiAnXHUyOTI2JywKKyAgICAnaG9hcnI7JzogJ1x1MjFmZicsCisgICAgJ2hvbXRodDsnOiAnXHUyMjNiJywKKyAgICAnaG9va2xlZnRhcnJvdzsnOiAnXHUyMWE5JywKKyAgICAnaG9va3JpZ2h0YXJyb3c7JzogJ1x1MjFhYScsCisgICAgJ0hvcGY7JzogJ1x1MjEwZCcsCisgICAgJ2hvcGY7JzogJ1xVMDAwMWQ1NTknLAorICAgICdob3JiYXI7JzogJ1x1MjAxNScsCisgICAgJ0hvcml6b250YWxMaW5lOyc6ICdcdTI1MDAnLAorICAgICdIc2NyOyc6ICdcdTIxMGInLAorICAgICdoc2NyOyc6ICdcVTAwMDFkNGJkJywKKyAgICAnaHNsYXNoOyc6ICdcdTIxMGYnLAorICAgICdIc3Ryb2s7JzogJ1x1MDEyNicsCisgICAgJ2hzdHJvazsnOiAnXHUwMTI3JywKKyAgICAnSHVtcERvd25IdW1wOyc6ICdcdTIyNGUnLAorICAgICdIdW1wRXF1YWw7JzogJ1x1MjI0ZicsCisgICAgJ2h5YnVsbDsnOiAnXHUyMDQzJywKKyAgICAnaHlwaGVuOyc6ICdcdTIwMTAnLAorICAgICdJYWN1dGUnOiAnXHhjZCcsCisgICAgJ2lhY3V0ZSc6ICdceGVkJywKKyAgICAnSWFjdXRlOyc6ICdceGNkJywKKyAgICAnaWFjdXRlOyc6ICdceGVkJywKKyAgICAnaWM7JzogJ1x1MjA2MycsCisgICAgJ0ljaXJjJzogJ1x4Y2UnLAorICAgICdpY2lyYyc6ICdceGVlJywKKyAgICAnSWNpcmM7JzogJ1x4Y2UnLAorICAgICdpY2lyYzsnOiAnXHhlZScsCisgICAgJ0ljeTsnOiAnXHUwNDE4JywKKyAgICAnaWN5Oyc6ICdcdTA0MzgnLAorICAgICdJZG90Oyc6ICdcdTAxMzAnLAorICAgICdJRWN5Oyc6ICdcdTA0MTUnLAorICAgICdpZWN5Oyc6ICdcdTA0MzUnLAorICAgICdpZXhjbCc6ICdceGExJywKKyAgICAnaWV4Y2w7JzogJ1x4YTEnLAorICAgICdpZmY7JzogJ1x1MjFkNCcsCisgICAgJ0lmcjsnOiAnXHUyMTExJywKKyAgICAnaWZyOyc6ICdcVTAwMDFkNTI2JywKKyAgICAnSWdyYXZlJzogJ1x4Y2MnLAorICAgICdpZ3JhdmUnOiAnXHhlYycsCisgICAgJ0lncmF2ZTsnOiAnXHhjYycsCisgICAgJ2lncmF2ZTsnOiAnXHhlYycsCisgICAgJ2lpOyc6ICdcdTIxNDgnLAorICAgICdpaWlpbnQ7JzogJ1x1MmEwYycsCisgICAgJ2lpaW50Oyc6ICdcdTIyMmQnLAorICAgICdpaW5maW47JzogJ1x1MjlkYycsCisgICAgJ2lpb3RhOyc6ICdcdTIxMjknLAorICAgICdJSmxpZzsnOiAnXHUwMTMyJywKKyAgICAnaWpsaWc7JzogJ1x1MDEzMycsCisgICAgJ0ltOyc6ICdcdTIxMTEnLAorICAgICdJbWFjcjsnOiAnXHUwMTJhJywKKyAgICAnaW1hY3I7JzogJ1x1MDEyYicsCisgICAgJ2ltYWdlOyc6ICdcdTIxMTEnLAorICAgICdJbWFnaW5hcnlJOyc6ICdcdTIxNDgnLAorICAgICdpbWFnbGluZTsnOiAnXHUyMTEwJywKKyAgICAnaW1hZ3BhcnQ7JzogJ1x1MjExMScsCisgICAgJ2ltYXRoOyc6ICdcdTAxMzEnLAorICAgICdpbW9mOyc6ICdcdTIyYjcnLAorICAgICdpbXBlZDsnOiAnXHUwMWI1JywKKyAgICAnSW1wbGllczsnOiAnXHUyMWQyJywKKyAgICAnaW47JzogJ1x1MjIwOCcsCisgICAgJ2luY2FyZTsnOiAnXHUyMTA1JywKKyAgICAnaW5maW47JzogJ1x1MjIxZScsCisgICAgJ2luZmludGllOyc6ICdcdTI5ZGQnLAorICAgICdpbm9kb3Q7JzogJ1x1MDEzMScsCisgICAgJ0ludDsnOiAnXHUyMjJjJywKKyAgICAnaW50Oyc6ICdcdTIyMmInLAorICAgICdpbnRjYWw7JzogJ1x1MjJiYScsCisgICAgJ2ludGVnZXJzOyc6ICdcdTIxMjQnLAorICAgICdJbnRlZ3JhbDsnOiAnXHUyMjJiJywKKyAgICAnaW50ZXJjYWw7JzogJ1x1MjJiYScsCisgICAgJ0ludGVyc2VjdGlvbjsnOiAnXHUyMmMyJywKKyAgICAnaW50bGFyaGs7JzogJ1x1MmExNycsCisgICAgJ2ludHByb2Q7JzogJ1x1MmEzYycsCisgICAgJ0ludmlzaWJsZUNvbW1hOyc6ICdcdTIwNjMnLAorICAgICdJbnZpc2libGVUaW1lczsnOiAnXHUyMDYyJywKKyAgICAnSU9jeTsnOiAnXHUwNDAxJywKKyAgICAnaW9jeTsnOiAnXHUwNDUxJywKKyAgICAnSW9nb247JzogJ1x1MDEyZScsCisgICAgJ2lvZ29uOyc6ICdcdTAxMmYnLAorICAgICdJb3BmOyc6ICdcVTAwMDFkNTQwJywKKyAgICAnaW9wZjsnOiAnXFUwMDAxZDU1YScsCisgICAgJ0lvdGE7JzogJ1x1MDM5OScsCisgICAgJ2lvdGE7JzogJ1x1MDNiOScsCisgICAgJ2lwcm9kOyc6ICdcdTJhM2MnLAorICAgICdpcXVlc3QnOiAnXHhiZicsCisgICAgJ2lxdWVzdDsnOiAnXHhiZicsCisgICAgJ0lzY3I7JzogJ1x1MjExMCcsCisgICAgJ2lzY3I7JzogJ1xVMDAwMWQ0YmUnLAorICAgICdpc2luOyc6ICdcdTIyMDgnLAorICAgICdpc2luZG90Oyc6ICdcdTIyZjUnLAorICAgICdpc2luRTsnOiAnXHUyMmY5JywKKyAgICAnaXNpbnM7JzogJ1x1MjJmNCcsCisgICAgJ2lzaW5zdjsnOiAnXHUyMmYzJywKKyAgICAnaXNpbnY7JzogJ1x1MjIwOCcsCisgICAgJ2l0Oyc6ICdcdTIwNjInLAorICAgICdJdGlsZGU7JzogJ1x1MDEyOCcsCisgICAgJ2l0aWxkZTsnOiAnXHUwMTI5JywKKyAgICAnSXVrY3k7JzogJ1x1MDQwNicsCisgICAgJ2l1a2N5Oyc6ICdcdTA0NTYnLAorICAgICdJdW1sJzogJ1x4Y2YnLAorICAgICdpdW1sJzogJ1x4ZWYnLAorICAgICdJdW1sOyc6ICdceGNmJywKKyAgICAnaXVtbDsnOiAnXHhlZicsCisgICAgJ0pjaXJjOyc6ICdcdTAxMzQnLAorICAgICdqY2lyYzsnOiAnXHUwMTM1JywKKyAgICAnSmN5Oyc6ICdcdTA0MTknLAorICAgICdqY3k7JzogJ1x1MDQzOScsCisgICAgJ0pmcjsnOiAnXFUwMDAxZDUwZCcsCisgICAgJ2pmcjsnOiAnXFUwMDAxZDUyNycsCisgICAgJ2ptYXRoOyc6ICdcdTAyMzcnLAorICAgICdKb3BmOyc6ICdcVTAwMDFkNTQxJywKKyAgICAnam9wZjsnOiAnXFUwMDAxZDU1YicsCisgICAgJ0pzY3I7JzogJ1xVMDAwMWQ0YTUnLAorICAgICdqc2NyOyc6ICdcVTAwMDFkNGJmJywKKyAgICAnSnNlcmN5Oyc6ICdcdTA0MDgnLAorICAgICdqc2VyY3k7JzogJ1x1MDQ1OCcsCisgICAgJ0p1a2N5Oyc6ICdcdTA0MDQnLAorICAgICdqdWtjeTsnOiAnXHUwNDU0JywKKyAgICAnS2FwcGE7JzogJ1x1MDM5YScsCisgICAgJ2thcHBhOyc6ICdcdTAzYmEnLAorICAgICdrYXBwYXY7JzogJ1x1MDNmMCcsCisgICAgJ0tjZWRpbDsnOiAnXHUwMTM2JywKKyAgICAna2NlZGlsOyc6ICdcdTAxMzcnLAorICAgICdLY3k7JzogJ1x1MDQxYScsCisgICAgJ2tjeTsnOiAnXHUwNDNhJywKKyAgICAnS2ZyOyc6ICdcVTAwMDFkNTBlJywKKyAgICAna2ZyOyc6ICdcVTAwMDFkNTI4JywKKyAgICAna2dyZWVuOyc6ICdcdTAxMzgnLAorICAgICdLSGN5Oyc6ICdcdTA0MjUnLAorICAgICdraGN5Oyc6ICdcdTA0NDUnLAorICAgICdLSmN5Oyc6ICdcdTA0MGMnLAorICAgICdramN5Oyc6ICdcdTA0NWMnLAorICAgICdLb3BmOyc6ICdcVTAwMDFkNTQyJywKKyAgICAna29wZjsnOiAnXFUwMDAxZDU1YycsCisgICAgJ0tzY3I7JzogJ1xVMDAwMWQ0YTYnLAorICAgICdrc2NyOyc6ICdcVTAwMDFkNGMwJywKKyAgICAnbEFhcnI7JzogJ1x1MjFkYScsCisgICAgJ0xhY3V0ZTsnOiAnXHUwMTM5JywKKyAgICAnbGFjdXRlOyc6ICdcdTAxM2EnLAorICAgICdsYWVtcHR5djsnOiAnXHUyOWI0JywKKyAgICAnbGFncmFuOyc6ICdcdTIxMTInLAorICAgICdMYW1iZGE7JzogJ1x1MDM5YicsCisgICAgJ2xhbWJkYTsnOiAnXHUwM2JiJywKKyAgICAnTGFuZzsnOiAnXHUyN2VhJywKKyAgICAnbGFuZzsnOiAnXHUyN2U4JywKKyAgICAnbGFuZ2Q7JzogJ1x1Mjk5MScsCisgICAgJ2xhbmdsZTsnOiAnXHUyN2U4JywKKyAgICAnbGFwOyc6ICdcdTJhODUnLAorICAgICdMYXBsYWNldHJmOyc6ICdcdTIxMTInLAorICAgICdsYXF1byc6ICdceGFiJywKKyAgICAnbGFxdW87JzogJ1x4YWInLAorICAgICdMYXJyOyc6ICdcdTIxOWUnLAorICAgICdsQXJyOyc6ICdcdTIxZDAnLAorICAgICdsYXJyOyc6ICdcdTIxOTAnLAorICAgICdsYXJyYjsnOiAnXHUyMWU0JywKKyAgICAnbGFycmJmczsnOiAnXHUyOTFmJywKKyAgICAnbGFycmZzOyc6ICdcdTI5MWQnLAorICAgICdsYXJyaGs7JzogJ1x1MjFhOScsCisgICAgJ2xhcnJscDsnOiAnXHUyMWFiJywKKyAgICAnbGFycnBsOyc6ICdcdTI5MzknLAorICAgICdsYXJyc2ltOyc6ICdcdTI5NzMnLAorICAgICdsYXJydGw7JzogJ1x1MjFhMicsCisgICAgJ2xhdDsnOiAnXHUyYWFiJywKKyAgICAnbEF0YWlsOyc6ICdcdTI5MWInLAorICAgICdsYXRhaWw7JzogJ1x1MjkxOScsCisgICAgJ2xhdGU7JzogJ1x1MmFhZCcsCisgICAgJ2xhdGVzOyc6ICdcdTJhYWRcdWZlMDAnLAorICAgICdsQmFycjsnOiAnXHUyOTBlJywKKyAgICAnbGJhcnI7JzogJ1x1MjkwYycsCisgICAgJ2xiYnJrOyc6ICdcdTI3NzInLAorICAgICdsYnJhY2U7JzogJ3snLAorICAgICdsYnJhY2s7JzogJ1snLAorICAgICdsYnJrZTsnOiAnXHUyOThiJywKKyAgICAnbGJya3NsZDsnOiAnXHUyOThmJywKKyAgICAnbGJya3NsdTsnOiAnXHUyOThkJywKKyAgICAnTGNhcm9uOyc6ICdcdTAxM2QnLAorICAgICdsY2Fyb247JzogJ1x1MDEzZScsCisgICAgJ0xjZWRpbDsnOiAnXHUwMTNiJywKKyAgICAnbGNlZGlsOyc6ICdcdTAxM2MnLAorICAgICdsY2VpbDsnOiAnXHUyMzA4JywKKyAgICAnbGN1YjsnOiAneycsCisgICAgJ0xjeTsnOiAnXHUwNDFiJywKKyAgICAnbGN5Oyc6ICdcdTA0M2InLAorICAgICdsZGNhOyc6ICdcdTI5MzYnLAorICAgICdsZHF1bzsnOiAnXHUyMDFjJywKKyAgICAnbGRxdW9yOyc6ICdcdTIwMWUnLAorICAgICdsZHJkaGFyOyc6ICdcdTI5NjcnLAorICAgICdsZHJ1c2hhcjsnOiAnXHUyOTRiJywKKyAgICAnbGRzaDsnOiAnXHUyMWIyJywKKyAgICAnbEU7JzogJ1x1MjI2NicsCisgICAgJ2xlOyc6ICdcdTIyNjQnLAorICAgICdMZWZ0QW5nbGVCcmFja2V0Oyc6ICdcdTI3ZTgnLAorICAgICdMZWZ0QXJyb3c7JzogJ1x1MjE5MCcsCisgICAgJ0xlZnRhcnJvdzsnOiAnXHUyMWQwJywKKyAgICAnbGVmdGFycm93Oyc6ICdcdTIxOTAnLAorICAgICdMZWZ0QXJyb3dCYXI7JzogJ1x1MjFlNCcsCisgICAgJ0xlZnRBcnJvd1JpZ2h0QXJyb3c7JzogJ1x1MjFjNicsCisgICAgJ2xlZnRhcnJvd3RhaWw7JzogJ1x1MjFhMicsCisgICAgJ0xlZnRDZWlsaW5nOyc6ICdcdTIzMDgnLAorICAgICdMZWZ0RG91YmxlQnJhY2tldDsnOiAnXHUyN2U2JywKKyAgICAnTGVmdERvd25UZWVWZWN0b3I7JzogJ1x1Mjk2MScsCisgICAgJ0xlZnREb3duVmVjdG9yOyc6ICdcdTIxYzMnLAorICAgICdMZWZ0RG93blZlY3RvckJhcjsnOiAnXHUyOTU5JywKKyAgICAnTGVmdEZsb29yOyc6ICdcdTIzMGEnLAorICAgICdsZWZ0aGFycG9vbmRvd247JzogJ1x1MjFiZCcsCisgICAgJ2xlZnRoYXJwb29udXA7JzogJ1x1MjFiYycsCisgICAgJ2xlZnRsZWZ0YXJyb3dzOyc6ICdcdTIxYzcnLAorICAgICdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyMTk0JywKKyAgICAnTGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjFkNCcsCisgICAgJ2xlZnRyaWdodGFycm93Oyc6ICdcdTIxOTQnLAorICAgICdsZWZ0cmlnaHRhcnJvd3M7JzogJ1x1MjFjNicsCisgICAgJ2xlZnRyaWdodGhhcnBvb25zOyc6ICdcdTIxY2InLAorICAgICdsZWZ0cmlnaHRzcXVpZ2Fycm93Oyc6ICdcdTIxYWQnLAorICAgICdMZWZ0UmlnaHRWZWN0b3I7JzogJ1x1Mjk0ZScsCisgICAgJ0xlZnRUZWU7JzogJ1x1MjJhMycsCisgICAgJ0xlZnRUZWVBcnJvdzsnOiAnXHUyMWE0JywKKyAgICAnTGVmdFRlZVZlY3RvcjsnOiAnXHUyOTVhJywKKyAgICAnbGVmdHRocmVldGltZXM7JzogJ1x1MjJjYicsCisgICAgJ0xlZnRUcmlhbmdsZTsnOiAnXHUyMmIyJywKKyAgICAnTGVmdFRyaWFuZ2xlQmFyOyc6ICdcdTI5Y2YnLAorICAgICdMZWZ0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmI0JywKKyAgICAnTGVmdFVwRG93blZlY3RvcjsnOiAnXHUyOTUxJywKKyAgICAnTGVmdFVwVGVlVmVjdG9yOyc6ICdcdTI5NjAnLAorICAgICdMZWZ0VXBWZWN0b3I7JzogJ1x1MjFiZicsCisgICAgJ0xlZnRVcFZlY3RvckJhcjsnOiAnXHUyOTU4JywKKyAgICAnTGVmdFZlY3RvcjsnOiAnXHUyMWJjJywKKyAgICAnTGVmdFZlY3RvckJhcjsnOiAnXHUyOTUyJywKKyAgICAnbEVnOyc6ICdcdTJhOGInLAorICAgICdsZWc7JzogJ1x1MjJkYScsCisgICAgJ2xlcTsnOiAnXHUyMjY0JywKKyAgICAnbGVxcTsnOiAnXHUyMjY2JywKKyAgICAnbGVxc2xhbnQ7JzogJ1x1MmE3ZCcsCisgICAgJ2xlczsnOiAnXHUyYTdkJywKKyAgICAnbGVzY2M7JzogJ1x1MmFhOCcsCisgICAgJ2xlc2RvdDsnOiAnXHUyYTdmJywKKyAgICAnbGVzZG90bzsnOiAnXHUyYTgxJywKKyAgICAnbGVzZG90b3I7JzogJ1x1MmE4MycsCisgICAgJ2xlc2c7JzogJ1x1MjJkYVx1ZmUwMCcsCisgICAgJ2xlc2dlczsnOiAnXHUyYTkzJywKKyAgICAnbGVzc2FwcHJveDsnOiAnXHUyYTg1JywKKyAgICAnbGVzc2RvdDsnOiAnXHUyMmQ2JywKKyAgICAnbGVzc2VxZ3RyOyc6ICdcdTIyZGEnLAorICAgICdsZXNzZXFxZ3RyOyc6ICdcdTJhOGInLAorICAgICdMZXNzRXF1YWxHcmVhdGVyOyc6ICdcdTIyZGEnLAorICAgICdMZXNzRnVsbEVxdWFsOyc6ICdcdTIyNjYnLAorICAgICdMZXNzR3JlYXRlcjsnOiAnXHUyMjc2JywKKyAgICAnbGVzc2d0cjsnOiAnXHUyMjc2JywKKyAgICAnTGVzc0xlc3M7JzogJ1x1MmFhMScsCisgICAgJ2xlc3NzaW07JzogJ1x1MjI3MicsCisgICAgJ0xlc3NTbGFudEVxdWFsOyc6ICdcdTJhN2QnLAorICAgICdMZXNzVGlsZGU7JzogJ1x1MjI3MicsCisgICAgJ2xmaXNodDsnOiAnXHUyOTdjJywKKyAgICAnbGZsb29yOyc6ICdcdTIzMGEnLAorICAgICdMZnI7JzogJ1xVMDAwMWQ1MGYnLAorICAgICdsZnI7JzogJ1xVMDAwMWQ1MjknLAorICAgICdsZzsnOiAnXHUyMjc2JywKKyAgICAnbGdFOyc6ICdcdTJhOTEnLAorICAgICdsSGFyOyc6ICdcdTI5NjInLAorICAgICdsaGFyZDsnOiAnXHUyMWJkJywKKyAgICAnbGhhcnU7JzogJ1x1MjFiYycsCisgICAgJ2xoYXJ1bDsnOiAnXHUyOTZhJywKKyAgICAnbGhibGs7JzogJ1x1MjU4NCcsCisgICAgJ0xKY3k7JzogJ1x1MDQwOScsCisgICAgJ2xqY3k7JzogJ1x1MDQ1OScsCisgICAgJ0xsOyc6ICdcdTIyZDgnLAorICAgICdsbDsnOiAnXHUyMjZhJywKKyAgICAnbGxhcnI7JzogJ1x1MjFjNycsCisgICAgJ2xsY29ybmVyOyc6ICdcdTIzMWUnLAorICAgICdMbGVmdGFycm93Oyc6ICdcdTIxZGEnLAorICAgICdsbGhhcmQ7JzogJ1x1Mjk2YicsCisgICAgJ2xsdHJpOyc6ICdcdTI1ZmEnLAorICAgICdMbWlkb3Q7JzogJ1x1MDEzZicsCisgICAgJ2xtaWRvdDsnOiAnXHUwMTQwJywKKyAgICAnbG1vdXN0Oyc6ICdcdTIzYjAnLAorICAgICdsbW91c3RhY2hlOyc6ICdcdTIzYjAnLAorICAgICdsbmFwOyc6ICdcdTJhODknLAorICAgICdsbmFwcHJveDsnOiAnXHUyYTg5JywKKyAgICAnbG5FOyc6ICdcdTIyNjgnLAorICAgICdsbmU7JzogJ1x1MmE4NycsCisgICAgJ2xuZXE7JzogJ1x1MmE4NycsCisgICAgJ2xuZXFxOyc6ICdcdTIyNjgnLAorICAgICdsbnNpbTsnOiAnXHUyMmU2JywKKyAgICAnbG9hbmc7JzogJ1x1MjdlYycsCisgICAgJ2xvYXJyOyc6ICdcdTIxZmQnLAorICAgICdsb2JyazsnOiAnXHUyN2U2JywKKyAgICAnTG9uZ0xlZnRBcnJvdzsnOiAnXHUyN2Y1JywKKyAgICAnTG9uZ2xlZnRhcnJvdzsnOiAnXHUyN2Y4JywKKyAgICAnbG9uZ2xlZnRhcnJvdzsnOiAnXHUyN2Y1JywKKyAgICAnTG9uZ0xlZnRSaWdodEFycm93Oyc6ICdcdTI3ZjcnLAorICAgICdMb25nbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjdmYScsCisgICAgJ2xvbmdsZWZ0cmlnaHRhcnJvdzsnOiAnXHUyN2Y3JywKKyAgICAnbG9uZ21hcHN0bzsnOiAnXHUyN2ZjJywKKyAgICAnTG9uZ1JpZ2h0QXJyb3c7JzogJ1x1MjdmNicsCisgICAgJ0xvbmdyaWdodGFycm93Oyc6ICdcdTI3ZjknLAorICAgICdsb25ncmlnaHRhcnJvdzsnOiAnXHUyN2Y2JywKKyAgICAnbG9vcGFycm93bGVmdDsnOiAnXHUyMWFiJywKKyAgICAnbG9vcGFycm93cmlnaHQ7JzogJ1x1MjFhYycsCisgICAgJ2xvcGFyOyc6ICdcdTI5ODUnLAorICAgICdMb3BmOyc6ICdcVTAwMDFkNTQzJywKKyAgICAnbG9wZjsnOiAnXFUwMDAxZDU1ZCcsCisgICAgJ2xvcGx1czsnOiAnXHUyYTJkJywKKyAgICAnbG90aW1lczsnOiAnXHUyYTM0JywKKyAgICAnbG93YXN0Oyc6ICdcdTIyMTcnLAorICAgICdsb3diYXI7JzogJ18nLAorICAgICdMb3dlckxlZnRBcnJvdzsnOiAnXHUyMTk5JywKKyAgICAnTG93ZXJSaWdodEFycm93Oyc6ICdcdTIxOTgnLAorICAgICdsb3o7JzogJ1x1MjVjYScsCisgICAgJ2xvemVuZ2U7JzogJ1x1MjVjYScsCisgICAgJ2xvemY7JzogJ1x1MjllYicsCisgICAgJ2xwYXI7JzogJygnLAorICAgICdscGFybHQ7JzogJ1x1Mjk5MycsCisgICAgJ2xyYXJyOyc6ICdcdTIxYzYnLAorICAgICdscmNvcm5lcjsnOiAnXHUyMzFmJywKKyAgICAnbHJoYXI7JzogJ1x1MjFjYicsCisgICAgJ2xyaGFyZDsnOiAnXHUyOTZkJywKKyAgICAnbHJtOyc6ICdcdTIwMGUnLAorICAgICdscnRyaTsnOiAnXHUyMmJmJywKKyAgICAnbHNhcXVvOyc6ICdcdTIwMzknLAorICAgICdMc2NyOyc6ICdcdTIxMTInLAorICAgICdsc2NyOyc6ICdcVTAwMDFkNGMxJywKKyAgICAnTHNoOyc6ICdcdTIxYjAnLAorICAgICdsc2g7JzogJ1x1MjFiMCcsCisgICAgJ2xzaW07JzogJ1x1MjI3MicsCisgICAgJ2xzaW1lOyc6ICdcdTJhOGQnLAorICAgICdsc2ltZzsnOiAnXHUyYThmJywKKyAgICAnbHNxYjsnOiAnWycsCisgICAgJ2xzcXVvOyc6ICdcdTIwMTgnLAorICAgICdsc3F1b3I7JzogJ1x1MjAxYScsCisgICAgJ0xzdHJvazsnOiAnXHUwMTQxJywKKyAgICAnbHN0cm9rOyc6ICdcdTAxNDInLAorICAgICdMVCc6ICc8JywKKyAgICAnbHQnOiAnPCcsCisgICAgJ0xUOyc6ICc8JywKKyAgICAnTHQ7JzogJ1x1MjI2YScsCisgICAgJ2x0Oyc6ICc8JywKKyAgICAnbHRjYzsnOiAnXHUyYWE2JywKKyAgICAnbHRjaXI7JzogJ1x1MmE3OScsCisgICAgJ2x0ZG90Oyc6ICdcdTIyZDYnLAorICAgICdsdGhyZWU7JzogJ1x1MjJjYicsCisgICAgJ2x0aW1lczsnOiAnXHUyMmM5JywKKyAgICAnbHRsYXJyOyc6ICdcdTI5NzYnLAorICAgICdsdHF1ZXN0Oyc6ICdcdTJhN2InLAorICAgICdsdHJpOyc6ICdcdTI1YzMnLAorICAgICdsdHJpZTsnOiAnXHUyMmI0JywKKyAgICAnbHRyaWY7JzogJ1x1MjVjMicsCisgICAgJ2x0clBhcjsnOiAnXHUyOTk2JywKKyAgICAnbHVyZHNoYXI7JzogJ1x1Mjk0YScsCisgICAgJ2x1cnVoYXI7JzogJ1x1Mjk2NicsCisgICAgJ2x2ZXJ0bmVxcTsnOiAnXHUyMjY4XHVmZTAwJywKKyAgICAnbHZuRTsnOiAnXHUyMjY4XHVmZTAwJywKKyAgICAnbWFjcic6ICdceGFmJywKKyAgICAnbWFjcjsnOiAnXHhhZicsCisgICAgJ21hbGU7JzogJ1x1MjY0MicsCisgICAgJ21hbHQ7JzogJ1x1MjcyMCcsCisgICAgJ21hbHRlc2U7JzogJ1x1MjcyMCcsCisgICAgJ01hcDsnOiAnXHUyOTA1JywKKyAgICAnbWFwOyc6ICdcdTIxYTYnLAorICAgICdtYXBzdG87JzogJ1x1MjFhNicsCisgICAgJ21hcHN0b2Rvd247JzogJ1x1MjFhNycsCisgICAgJ21hcHN0b2xlZnQ7JzogJ1x1MjFhNCcsCisgICAgJ21hcHN0b3VwOyc6ICdcdTIxYTUnLAorICAgICdtYXJrZXI7JzogJ1x1MjVhZScsCisgICAgJ21jb21tYTsnOiAnXHUyYTI5JywKKyAgICAnTWN5Oyc6ICdcdTA0MWMnLAorICAgICdtY3k7JzogJ1x1MDQzYycsCisgICAgJ21kYXNoOyc6ICdcdTIwMTQnLAorICAgICdtRERvdDsnOiAnXHUyMjNhJywKKyAgICAnbWVhc3VyZWRhbmdsZTsnOiAnXHUyMjIxJywKKyAgICAnTWVkaXVtU3BhY2U7JzogJ1x1MjA1ZicsCisgICAgJ01lbGxpbnRyZjsnOiAnXHUyMTMzJywKKyAgICAnTWZyOyc6ICdcVTAwMDFkNTEwJywKKyAgICAnbWZyOyc6ICdcVTAwMDFkNTJhJywKKyAgICAnbWhvOyc6ICdcdTIxMjcnLAorICAgICdtaWNybyc6ICdceGI1JywKKyAgICAnbWljcm87JzogJ1x4YjUnLAorICAgICdtaWQ7JzogJ1x1MjIyMycsCisgICAgJ21pZGFzdDsnOiAnKicsCisgICAgJ21pZGNpcjsnOiAnXHUyYWYwJywKKyAgICAnbWlkZG90JzogJ1x4YjcnLAorICAgICdtaWRkb3Q7JzogJ1x4YjcnLAorICAgICdtaW51czsnOiAnXHUyMjEyJywKKyAgICAnbWludXNiOyc6ICdcdTIyOWYnLAorICAgICdtaW51c2Q7JzogJ1x1MjIzOCcsCisgICAgJ21pbnVzZHU7JzogJ1x1MmEyYScsCisgICAgJ01pbnVzUGx1czsnOiAnXHUyMjEzJywKKyAgICAnbWxjcDsnOiAnXHUyYWRiJywKKyAgICAnbWxkcjsnOiAnXHUyMDI2JywKKyAgICAnbW5wbHVzOyc6ICdcdTIyMTMnLAorICAgICdtb2RlbHM7JzogJ1x1MjJhNycsCisgICAgJ01vcGY7JzogJ1xVMDAwMWQ1NDQnLAorICAgICdtb3BmOyc6ICdcVTAwMDFkNTVlJywKKyAgICAnbXA7JzogJ1x1MjIxMycsCisgICAgJ01zY3I7JzogJ1x1MjEzMycsCisgICAgJ21zY3I7JzogJ1xVMDAwMWQ0YzInLAorICAgICdtc3Rwb3M7JzogJ1x1MjIzZScsCisgICAgJ011Oyc6ICdcdTAzOWMnLAorICAgICdtdTsnOiAnXHUwM2JjJywKKyAgICAnbXVsdGltYXA7JzogJ1x1MjJiOCcsCisgICAgJ211bWFwOyc6ICdcdTIyYjgnLAorICAgICduYWJsYTsnOiAnXHUyMjA3JywKKyAgICAnTmFjdXRlOyc6ICdcdTAxNDMnLAorICAgICduYWN1dGU7JzogJ1x1MDE0NCcsCisgICAgJ25hbmc7JzogJ1x1MjIyMFx1MjBkMicsCisgICAgJ25hcDsnOiAnXHUyMjQ5JywKKyAgICAnbmFwRTsnOiAnXHUyYTcwXHUwMzM4JywKKyAgICAnbmFwaWQ7JzogJ1x1MjI0Ylx1MDMzOCcsCisgICAgJ25hcG9zOyc6ICdcdTAxNDknLAorICAgICduYXBwcm94Oyc6ICdcdTIyNDknLAorICAgICduYXR1cjsnOiAnXHUyNjZlJywKKyAgICAnbmF0dXJhbDsnOiAnXHUyNjZlJywKKyAgICAnbmF0dXJhbHM7JzogJ1x1MjExNScsCisgICAgJ25ic3AnOiAnXHhhMCcsCisgICAgJ25ic3A7JzogJ1x4YTAnLAorICAgICduYnVtcDsnOiAnXHUyMjRlXHUwMzM4JywKKyAgICAnbmJ1bXBlOyc6ICdcdTIyNGZcdTAzMzgnLAorICAgICduY2FwOyc6ICdcdTJhNDMnLAorICAgICdOY2Fyb247JzogJ1x1MDE0NycsCisgICAgJ25jYXJvbjsnOiAnXHUwMTQ4JywKKyAgICAnTmNlZGlsOyc6ICdcdTAxNDUnLAorICAgICduY2VkaWw7JzogJ1x1MDE0NicsCisgICAgJ25jb25nOyc6ICdcdTIyNDcnLAorICAgICduY29uZ2RvdDsnOiAnXHUyYTZkXHUwMzM4JywKKyAgICAnbmN1cDsnOiAnXHUyYTQyJywKKyAgICAnTmN5Oyc6ICdcdTA0MWQnLAorICAgICduY3k7JzogJ1x1MDQzZCcsCisgICAgJ25kYXNoOyc6ICdcdTIwMTMnLAorICAgICduZTsnOiAnXHUyMjYwJywKKyAgICAnbmVhcmhrOyc6ICdcdTI5MjQnLAorICAgICduZUFycjsnOiAnXHUyMWQ3JywKKyAgICAnbmVhcnI7JzogJ1x1MjE5NycsCisgICAgJ25lYXJyb3c7JzogJ1x1MjE5NycsCisgICAgJ25lZG90Oyc6ICdcdTIyNTBcdTAzMzgnLAorICAgICdOZWdhdGl2ZU1lZGl1bVNwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVRoaWNrU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ05lZ2F0aXZlVGhpblNwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVZlcnlUaGluU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ25lcXVpdjsnOiAnXHUyMjYyJywKKyAgICAnbmVzZWFyOyc6ICdcdTI5MjgnLAorICAgICduZXNpbTsnOiAnXHUyMjQyXHUwMzM4JywKKyAgICAnTmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MjI2YicsCisgICAgJ05lc3RlZExlc3NMZXNzOyc6ICdcdTIyNmEnLAorICAgICdOZXdMaW5lOyc6ICdcbicsCisgICAgJ25leGlzdDsnOiAnXHUyMjA0JywKKyAgICAnbmV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTmZyOyc6ICdcVTAwMDFkNTExJywKKyAgICAnbmZyOyc6ICdcVTAwMDFkNTJiJywKKyAgICAnbmdFOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2U7JzogJ1x1MjI3MScsCisgICAgJ25nZXE7JzogJ1x1MjI3MScsCisgICAgJ25nZXFxOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2Vxc2xhbnQ7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25nZXM7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25HZzsnOiAnXHUyMmQ5XHUwMzM4JywKKyAgICAnbmdzaW07JzogJ1x1MjI3NScsCisgICAgJ25HdDsnOiAnXHUyMjZiXHUyMGQyJywKKyAgICAnbmd0Oyc6ICdcdTIyNmYnLAorICAgICduZ3RyOyc6ICdcdTIyNmYnLAorICAgICduR3R2Oyc6ICdcdTIyNmJcdTAzMzgnLAorICAgICduaEFycjsnOiAnXHUyMWNlJywKKyAgICAnbmhhcnI7JzogJ1x1MjFhZScsCisgICAgJ25ocGFyOyc6ICdcdTJhZjInLAorICAgICduaTsnOiAnXHUyMjBiJywKKyAgICAnbmlzOyc6ICdcdTIyZmMnLAorICAgICduaXNkOyc6ICdcdTIyZmEnLAorICAgICduaXY7JzogJ1x1MjIwYicsCisgICAgJ05KY3k7JzogJ1x1MDQwYScsCisgICAgJ25qY3k7JzogJ1x1MDQ1YScsCisgICAgJ25sQXJyOyc6ICdcdTIxY2QnLAorICAgICdubGFycjsnOiAnXHUyMTlhJywKKyAgICAnbmxkcjsnOiAnXHUyMDI1JywKKyAgICAnbmxFOyc6ICdcdTIyNjZcdTAzMzgnLAorICAgICdubGU7JzogJ1x1MjI3MCcsCisgICAgJ25MZWZ0YXJyb3c7JzogJ1x1MjFjZCcsCisgICAgJ25sZWZ0YXJyb3c7JzogJ1x1MjE5YScsCisgICAgJ25MZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMWNlJywKKyAgICAnbmxlZnRyaWdodGFycm93Oyc6ICdcdTIxYWUnLAorICAgICdubGVxOyc6ICdcdTIyNzAnLAorICAgICdubGVxcTsnOiAnXHUyMjY2XHUwMzM4JywKKyAgICAnbmxlcXNsYW50Oyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzOyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzczsnOiAnXHUyMjZlJywKKyAgICAnbkxsOyc6ICdcdTIyZDhcdTAzMzgnLAorICAgICdubHNpbTsnOiAnXHUyMjc0JywKKyAgICAnbkx0Oyc6ICdcdTIyNmFcdTIwZDInLAorICAgICdubHQ7JzogJ1x1MjI2ZScsCisgICAgJ25sdHJpOyc6ICdcdTIyZWEnLAorICAgICdubHRyaWU7JzogJ1x1MjJlYycsCisgICAgJ25MdHY7JzogJ1x1MjI2YVx1MDMzOCcsCisgICAgJ25taWQ7JzogJ1x1MjIyNCcsCisgICAgJ05vQnJlYWs7JzogJ1x1MjA2MCcsCisgICAgJ05vbkJyZWFraW5nU3BhY2U7JzogJ1x4YTAnLAorICAgICdOb3BmOyc6ICdcdTIxMTUnLAorICAgICdub3BmOyc6ICdcVTAwMDFkNTVmJywKKyAgICAnbm90JzogJ1x4YWMnLAorICAgICdOb3Q7JzogJ1x1MmFlYycsCisgICAgJ25vdDsnOiAnXHhhYycsCisgICAgJ05vdENvbmdydWVudDsnOiAnXHUyMjYyJywKKyAgICAnTm90Q3VwQ2FwOyc6ICdcdTIyNmQnLAorICAgICdOb3REb3VibGVWZXJ0aWNhbEJhcjsnOiAnXHUyMjI2JywKKyAgICAnTm90RWxlbWVudDsnOiAnXHUyMjA5JywKKyAgICAnTm90RXF1YWw7JzogJ1x1MjI2MCcsCisgICAgJ05vdEVxdWFsVGlsZGU7JzogJ1x1MjI0Mlx1MDMzOCcsCisgICAgJ05vdEV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTm90R3JlYXRlcjsnOiAnXHUyMjZmJywKKyAgICAnTm90R3JlYXRlckVxdWFsOyc6ICdcdTIyNzEnLAorICAgICdOb3RHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyR3JlYXRlcjsnOiAnXHUyMjZiXHUwMzM4JywKKyAgICAnTm90R3JlYXRlckxlc3M7JzogJ1x1MjI3OScsCisgICAgJ05vdEdyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2VcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyVGlsZGU7JzogJ1x1MjI3NScsCisgICAgJ05vdEh1bXBEb3duSHVtcDsnOiAnXHUyMjRlXHUwMzM4JywKKyAgICAnTm90SHVtcEVxdWFsOyc6ICdcdTIyNGZcdTAzMzgnLAorICAgICdub3RpbjsnOiAnXHUyMjA5JywKKyAgICAnbm90aW5kb3Q7JzogJ1x1MjJmNVx1MDMzOCcsCisgICAgJ25vdGluRTsnOiAnXHUyMmY5XHUwMzM4JywKKyAgICAnbm90aW52YTsnOiAnXHUyMjA5JywKKyAgICAnbm90aW52YjsnOiAnXHUyMmY3JywKKyAgICAnbm90aW52YzsnOiAnXHUyMmY2JywKKyAgICAnTm90TGVmdFRyaWFuZ2xlOyc6ICdcdTIyZWEnLAorICAgICdOb3RMZWZ0VHJpYW5nbGVCYXI7JzogJ1x1MjljZlx1MDMzOCcsCisgICAgJ05vdExlZnRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyZWMnLAorICAgICdOb3RMZXNzOyc6ICdcdTIyNmUnLAorICAgICdOb3RMZXNzRXF1YWw7JzogJ1x1MjI3MCcsCisgICAgJ05vdExlc3NHcmVhdGVyOyc6ICdcdTIyNzgnLAorICAgICdOb3RMZXNzTGVzczsnOiAnXHUyMjZhXHUwMzM4JywKKyAgICAnTm90TGVzc1NsYW50RXF1YWw7JzogJ1x1MmE3ZFx1MDMzOCcsCisgICAgJ05vdExlc3NUaWxkZTsnOiAnXHUyMjc0JywKKyAgICAnTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MmFhMlx1MDMzOCcsCisgICAgJ05vdE5lc3RlZExlc3NMZXNzOyc6ICdcdTJhYTFcdTAzMzgnLAorICAgICdub3RuaTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YjsnOiAnXHUyMmZlJywKKyAgICAnbm90bml2YzsnOiAnXHUyMmZkJywKKyAgICAnTm90UHJlY2VkZXM7JzogJ1x1MjI4MCcsCisgICAgJ05vdFByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZlx1MDMzOCcsCisgICAgJ05vdFByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMmUwJywKKyAgICAnTm90UmV2ZXJzZUVsZW1lbnQ7JzogJ1x1MjIwYycsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGU7JzogJ1x1MjJlYicsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVCYXI7JzogJ1x1MjlkMFx1MDMzOCcsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmVkJywKKyAgICAnTm90U3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGZcdTAzMzgnLAorICAgICdOb3RTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMmUyJywKKyAgICAnTm90U3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MFx1MDMzOCcsCisgICAgJ05vdFNxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjJlMycsCisgICAgJ05vdFN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnTm90U3Vic2V0RXF1YWw7JzogJ1x1MjI4OCcsCisgICAgJ05vdFN1Y2NlZWRzOyc6ICdcdTIyODEnLAorICAgICdOb3RTdWNjZWVkc0VxdWFsOyc6ICdcdTJhYjBcdTAzMzgnLAorICAgICdOb3RTdWNjZWVkc1NsYW50RXF1YWw7JzogJ1x1MjJlMScsCisgICAgJ05vdFN1Y2NlZWRzVGlsZGU7JzogJ1x1MjI3Zlx1MDMzOCcsCisgICAgJ05vdFN1cGVyc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICdOb3RTdXBlcnNldEVxdWFsOyc6ICdcdTIyODknLAorICAgICdOb3RUaWxkZTsnOiAnXHUyMjQxJywKKyAgICAnTm90VGlsZGVFcXVhbDsnOiAnXHUyMjQ0JywKKyAgICAnTm90VGlsZGVGdWxsRXF1YWw7JzogJ1x1MjI0NycsCisgICAgJ05vdFRpbGRlVGlsZGU7JzogJ1x1MjI0OScsCisgICAgJ05vdFZlcnRpY2FsQmFyOyc6ICdcdTIyMjQnLAorICAgICducGFyOyc6ICdcdTIyMjYnLAorICAgICducGFyYWxsZWw7JzogJ1x1MjIyNicsCisgICAgJ25wYXJzbDsnOiAnXHUyYWZkXHUyMGU1JywKKyAgICAnbnBhcnQ7JzogJ1x1MjIwMlx1MDMzOCcsCisgICAgJ25wb2xpbnQ7JzogJ1x1MmExNCcsCisgICAgJ25wcjsnOiAnXHUyMjgwJywKKyAgICAnbnByY3VlOyc6ICdcdTIyZTAnLAorICAgICducHJlOyc6ICdcdTJhYWZcdTAzMzgnLAorICAgICducHJlYzsnOiAnXHUyMjgwJywKKyAgICAnbnByZWNlcTsnOiAnXHUyYWFmXHUwMzM4JywKKyAgICAnbnJBcnI7JzogJ1x1MjFjZicsCisgICAgJ25yYXJyOyc6ICdcdTIxOWInLAorICAgICducmFycmM7JzogJ1x1MjkzM1x1MDMzOCcsCisgICAgJ25yYXJydzsnOiAnXHUyMTlkXHUwMzM4JywKKyAgICAnblJpZ2h0YXJyb3c7JzogJ1x1MjFjZicsCisgICAgJ25yaWdodGFycm93Oyc6ICdcdTIxOWInLAorICAgICducnRyaTsnOiAnXHUyMmViJywKKyAgICAnbnJ0cmllOyc6ICdcdTIyZWQnLAorICAgICduc2M7JzogJ1x1MjI4MScsCisgICAgJ25zY2N1ZTsnOiAnXHUyMmUxJywKKyAgICAnbnNjZTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnTnNjcjsnOiAnXFUwMDAxZDRhOScsCisgICAgJ25zY3I7JzogJ1xVMDAwMWQ0YzMnLAorICAgICduc2hvcnRtaWQ7JzogJ1x1MjIyNCcsCisgICAgJ25zaG9ydHBhcmFsbGVsOyc6ICdcdTIyMjYnLAorICAgICduc2ltOyc6ICdcdTIyNDEnLAorICAgICduc2ltZTsnOiAnXHUyMjQ0JywKKyAgICAnbnNpbWVxOyc6ICdcdTIyNDQnLAorICAgICduc21pZDsnOiAnXHUyMjI0JywKKyAgICAnbnNwYXI7JzogJ1x1MjIyNicsCisgICAgJ25zcXN1YmU7JzogJ1x1MjJlMicsCisgICAgJ25zcXN1cGU7JzogJ1x1MjJlMycsCisgICAgJ25zdWI7JzogJ1x1MjI4NCcsCisgICAgJ25zdWJFOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3ViZTsnOiAnXHUyMjg4JywKKyAgICAnbnN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnbnN1YnNldGVxOyc6ICdcdTIyODgnLAorICAgICduc3Vic2V0ZXFxOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3VjYzsnOiAnXHUyMjgxJywKKyAgICAnbnN1Y2NlcTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnbnN1cDsnOiAnXHUyMjg1JywKKyAgICAnbnN1cEU7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ25zdXBlOyc6ICdcdTIyODknLAorICAgICduc3Vwc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICduc3Vwc2V0ZXE7JzogJ1x1MjI4OScsCisgICAgJ25zdXBzZXRlcXE7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ250Z2w7JzogJ1x1MjI3OScsCisgICAgJ050aWxkZSc6ICdceGQxJywKKyAgICAnbnRpbGRlJzogJ1x4ZjEnLAorICAgICdOdGlsZGU7JzogJ1x4ZDEnLAorICAgICdudGlsZGU7JzogJ1x4ZjEnLAorICAgICdudGxnOyc6ICdcdTIyNzgnLAorICAgICdudHJpYW5nbGVsZWZ0Oyc6ICdcdTIyZWEnLAorICAgICdudHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJlYycsCisgICAgJ250cmlhbmdsZXJpZ2h0Oyc6ICdcdTIyZWInLAorICAgICdudHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyZWQnLAorICAgICdOdTsnOiAnXHUwMzlkJywKKyAgICAnbnU7JzogJ1x1MDNiZCcsCisgICAgJ251bTsnOiAnIycsCisgICAgJ251bWVybzsnOiAnXHUyMTE2JywKKyAgICAnbnVtc3A7JzogJ1x1MjAwNycsCisgICAgJ252YXA7JzogJ1x1MjI0ZFx1MjBkMicsCisgICAgJ25WRGFzaDsnOiAnXHUyMmFmJywKKyAgICAnblZkYXNoOyc6ICdcdTIyYWUnLAorICAgICdudkRhc2g7JzogJ1x1MjJhZCcsCisgICAgJ252ZGFzaDsnOiAnXHUyMmFjJywKKyAgICAnbnZnZTsnOiAnXHUyMjY1XHUyMGQyJywKKyAgICAnbnZndDsnOiAnPlx1MjBkMicsCisgICAgJ252SGFycjsnOiAnXHUyOTA0JywKKyAgICAnbnZpbmZpbjsnOiAnXHUyOWRlJywKKyAgICAnbnZsQXJyOyc6ICdcdTI5MDInLAorICAgICdudmxlOyc6ICdcdTIyNjRcdTIwZDInLAorICAgICdudmx0Oyc6ICc8XHUyMGQyJywKKyAgICAnbnZsdHJpZTsnOiAnXHUyMmI0XHUyMGQyJywKKyAgICAnbnZyQXJyOyc6ICdcdTI5MDMnLAorICAgICdudnJ0cmllOyc6ICdcdTIyYjVcdTIwZDInLAorICAgICdudnNpbTsnOiAnXHUyMjNjXHUyMGQyJywKKyAgICAnbndhcmhrOyc6ICdcdTI5MjMnLAorICAgICdud0FycjsnOiAnXHUyMWQ2JywKKyAgICAnbndhcnI7JzogJ1x1MjE5NicsCisgICAgJ253YXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ253bmVhcjsnOiAnXHUyOTI3JywKKyAgICAnT2FjdXRlJzogJ1x4ZDMnLAorICAgICdvYWN1dGUnOiAnXHhmMycsCisgICAgJ09hY3V0ZTsnOiAnXHhkMycsCisgICAgJ29hY3V0ZTsnOiAnXHhmMycsCisgICAgJ29hc3Q7JzogJ1x1MjI5YicsCisgICAgJ29jaXI7JzogJ1x1MjI5YScsCisgICAgJ09jaXJjJzogJ1x4ZDQnLAorICAgICdvY2lyYyc6ICdceGY0JywKKyAgICAnT2NpcmM7JzogJ1x4ZDQnLAorICAgICdvY2lyYzsnOiAnXHhmNCcsCisgICAgJ09jeTsnOiAnXHUwNDFlJywKKyAgICAnb2N5Oyc6ICdcdTA0M2UnLAorICAgICdvZGFzaDsnOiAnXHUyMjlkJywKKyAgICAnT2RibGFjOyc6ICdcdTAxNTAnLAorICAgICdvZGJsYWM7JzogJ1x1MDE1MScsCisgICAgJ29kaXY7JzogJ1x1MmEzOCcsCisgICAgJ29kb3Q7JzogJ1x1MjI5OScsCisgICAgJ29kc29sZDsnOiAnXHUyOWJjJywKKyAgICAnT0VsaWc7JzogJ1x1MDE1MicsCisgICAgJ29lbGlnOyc6ICdcdTAxNTMnLAorICAgICdvZmNpcjsnOiAnXHUyOWJmJywKKyAgICAnT2ZyOyc6ICdcVTAwMDFkNTEyJywKKyAgICAnb2ZyOyc6ICdcVTAwMDFkNTJjJywKKyAgICAnb2dvbjsnOiAnXHUwMmRiJywKKyAgICAnT2dyYXZlJzogJ1x4ZDInLAorICAgICdvZ3JhdmUnOiAnXHhmMicsCisgICAgJ09ncmF2ZTsnOiAnXHhkMicsCisgICAgJ29ncmF2ZTsnOiAnXHhmMicsCisgICAgJ29ndDsnOiAnXHUyOWMxJywKKyAgICAnb2hiYXI7JzogJ1x1MjliNScsCisgICAgJ29obTsnOiAnXHUwM2E5JywKKyAgICAnb2ludDsnOiAnXHUyMjJlJywKKyAgICAnb2xhcnI7JzogJ1x1MjFiYScsCisgICAgJ29sY2lyOyc6ICdcdTI5YmUnLAorICAgICdvbGNyb3NzOyc6ICdcdTI5YmInLAorICAgICdvbGluZTsnOiAnXHUyMDNlJywKKyAgICAnb2x0Oyc6ICdcdTI5YzAnLAorICAgICdPbWFjcjsnOiAnXHUwMTRjJywKKyAgICAnb21hY3I7JzogJ1x1MDE0ZCcsCisgICAgJ09tZWdhOyc6ICdcdTAzYTknLAorICAgICdvbWVnYTsnOiAnXHUwM2M5JywKKyAgICAnT21pY3JvbjsnOiAnXHUwMzlmJywKKyAgICAnb21pY3JvbjsnOiAnXHUwM2JmJywKKyAgICAnb21pZDsnOiAnXHUyOWI2JywKKyAgICAnb21pbnVzOyc6ICdcdTIyOTYnLAorICAgICdPb3BmOyc6ICdcVTAwMDFkNTQ2JywKKyAgICAnb29wZjsnOiAnXFUwMDAxZDU2MCcsCisgICAgJ29wYXI7JzogJ1x1MjliNycsCisgICAgJ09wZW5DdXJseURvdWJsZVF1b3RlOyc6ICdcdTIwMWMnLAorICAgICdPcGVuQ3VybHlRdW90ZTsnOiAnXHUyMDE4JywKKyAgICAnb3BlcnA7JzogJ1x1MjliOScsCisgICAgJ29wbHVzOyc6ICdcdTIyOTUnLAorICAgICdPcjsnOiAnXHUyYTU0JywKKyAgICAnb3I7JzogJ1x1MjIyOCcsCisgICAgJ29yYXJyOyc6ICdcdTIxYmInLAorICAgICdvcmQ7JzogJ1x1MmE1ZCcsCisgICAgJ29yZGVyOyc6ICdcdTIxMzQnLAorICAgICdvcmRlcm9mOyc6ICdcdTIxMzQnLAorICAgICdvcmRmJzogJ1x4YWEnLAorICAgICdvcmRmOyc6ICdceGFhJywKKyAgICAnb3JkbSc6ICdceGJhJywKKyAgICAnb3JkbTsnOiAnXHhiYScsCisgICAgJ29yaWdvZjsnOiAnXHUyMmI2JywKKyAgICAnb3JvcjsnOiAnXHUyYTU2JywKKyAgICAnb3JzbG9wZTsnOiAnXHUyYTU3JywKKyAgICAnb3J2Oyc6ICdcdTJhNWInLAorICAgICdvUzsnOiAnXHUyNGM4JywKKyAgICAnT3NjcjsnOiAnXFUwMDAxZDRhYScsCisgICAgJ29zY3I7JzogJ1x1MjEzNCcsCisgICAgJ09zbGFzaCc6ICdceGQ4JywKKyAgICAnb3NsYXNoJzogJ1x4ZjgnLAorICAgICdPc2xhc2g7JzogJ1x4ZDgnLAorICAgICdvc2xhc2g7JzogJ1x4ZjgnLAorICAgICdvc29sOyc6ICdcdTIyOTgnLAorICAgICdPdGlsZGUnOiAnXHhkNScsCisgICAgJ290aWxkZSc6ICdceGY1JywKKyAgICAnT3RpbGRlOyc6ICdceGQ1JywKKyAgICAnb3RpbGRlOyc6ICdceGY1JywKKyAgICAnT3RpbWVzOyc6ICdcdTJhMzcnLAorICAgICdvdGltZXM7JzogJ1x1MjI5NycsCisgICAgJ290aW1lc2FzOyc6ICdcdTJhMzYnLAorICAgICdPdW1sJzogJ1x4ZDYnLAorICAgICdvdW1sJzogJ1x4ZjYnLAorICAgICdPdW1sOyc6ICdceGQ2JywKKyAgICAnb3VtbDsnOiAnXHhmNicsCisgICAgJ292YmFyOyc6ICdcdTIzM2QnLAorICAgICdPdmVyQmFyOyc6ICdcdTIwM2UnLAorICAgICdPdmVyQnJhY2U7JzogJ1x1MjNkZScsCisgICAgJ092ZXJCcmFja2V0Oyc6ICdcdTIzYjQnLAorICAgICdPdmVyUGFyZW50aGVzaXM7JzogJ1x1MjNkYycsCisgICAgJ3BhcjsnOiAnXHUyMjI1JywKKyAgICAncGFyYSc6ICdceGI2JywKKyAgICAncGFyYTsnOiAnXHhiNicsCisgICAgJ3BhcmFsbGVsOyc6ICdcdTIyMjUnLAorICAgICdwYXJzaW07JzogJ1x1MmFmMycsCisgICAgJ3BhcnNsOyc6ICdcdTJhZmQnLAorICAgICdwYXJ0Oyc6ICdcdTIyMDInLAorICAgICdQYXJ0aWFsRDsnOiAnXHUyMjAyJywKKyAgICAnUGN5Oyc6ICdcdTA0MWYnLAorICAgICdwY3k7JzogJ1x1MDQzZicsCisgICAgJ3BlcmNudDsnOiAnJScsCisgICAgJ3BlcmlvZDsnOiAnLicsCisgICAgJ3Blcm1pbDsnOiAnXHUyMDMwJywKKyAgICAncGVycDsnOiAnXHUyMmE1JywKKyAgICAncGVydGVuazsnOiAnXHUyMDMxJywKKyAgICAnUGZyOyc6ICdcVTAwMDFkNTEzJywKKyAgICAncGZyOyc6ICdcVTAwMDFkNTJkJywKKyAgICAnUGhpOyc6ICdcdTAzYTYnLAorICAgICdwaGk7JzogJ1x1MDNjNicsCisgICAgJ3BoaXY7JzogJ1x1MDNkNScsCisgICAgJ3BobW1hdDsnOiAnXHUyMTMzJywKKyAgICAncGhvbmU7JzogJ1x1MjYwZScsCisgICAgJ1BpOyc6ICdcdTAzYTAnLAorICAgICdwaTsnOiAnXHUwM2MwJywKKyAgICAncGl0Y2hmb3JrOyc6ICdcdTIyZDQnLAorICAgICdwaXY7JzogJ1x1MDNkNicsCisgICAgJ3BsYW5jazsnOiAnXHUyMTBmJywKKyAgICAncGxhbmNraDsnOiAnXHUyMTBlJywKKyAgICAncGxhbmt2Oyc6ICdcdTIxMGYnLAorICAgICdwbHVzOyc6ICcrJywKKyAgICAncGx1c2FjaXI7JzogJ1x1MmEyMycsCisgICAgJ3BsdXNiOyc6ICdcdTIyOWUnLAorICAgICdwbHVzY2lyOyc6ICdcdTJhMjInLAorICAgICdwbHVzZG87JzogJ1x1MjIxNCcsCisgICAgJ3BsdXNkdTsnOiAnXHUyYTI1JywKKyAgICAncGx1c2U7JzogJ1x1MmE3MicsCisgICAgJ1BsdXNNaW51czsnOiAnXHhiMScsCisgICAgJ3BsdXNtbic6ICdceGIxJywKKyAgICAncGx1c21uOyc6ICdceGIxJywKKyAgICAncGx1c3NpbTsnOiAnXHUyYTI2JywKKyAgICAncGx1c3R3bzsnOiAnXHUyYTI3JywKKyAgICAncG07JzogJ1x4YjEnLAorICAgICdQb2luY2FyZXBsYW5lOyc6ICdcdTIxMGMnLAorICAgICdwb2ludGludDsnOiAnXHUyYTE1JywKKyAgICAnUG9wZjsnOiAnXHUyMTE5JywKKyAgICAncG9wZjsnOiAnXFUwMDAxZDU2MScsCisgICAgJ3BvdW5kJzogJ1x4YTMnLAorICAgICdwb3VuZDsnOiAnXHhhMycsCisgICAgJ1ByOyc6ICdcdTJhYmInLAorICAgICdwcjsnOiAnXHUyMjdhJywKKyAgICAncHJhcDsnOiAnXHUyYWI3JywKKyAgICAncHJjdWU7JzogJ1x1MjI3YycsCisgICAgJ3ByRTsnOiAnXHUyYWIzJywKKyAgICAncHJlOyc6ICdcdTJhYWYnLAorICAgICdwcmVjOyc6ICdcdTIyN2EnLAorICAgICdwcmVjYXBwcm94Oyc6ICdcdTJhYjcnLAorICAgICdwcmVjY3VybHllcTsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXM7JzogJ1x1MjI3YScsCisgICAgJ1ByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZicsCisgICAgJ1ByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXNUaWxkZTsnOiAnXHUyMjdlJywKKyAgICAncHJlY2VxOyc6ICdcdTJhYWYnLAorICAgICdwcmVjbmFwcHJveDsnOiAnXHUyYWI5JywKKyAgICAncHJlY25lcXE7JzogJ1x1MmFiNScsCisgICAgJ3ByZWNuc2ltOyc6ICdcdTIyZTgnLAorICAgICdwcmVjc2ltOyc6ICdcdTIyN2UnLAorICAgICdQcmltZTsnOiAnXHUyMDMzJywKKyAgICAncHJpbWU7JzogJ1x1MjAzMicsCisgICAgJ3ByaW1lczsnOiAnXHUyMTE5JywKKyAgICAncHJuYXA7JzogJ1x1MmFiOScsCisgICAgJ3BybkU7JzogJ1x1MmFiNScsCisgICAgJ3BybnNpbTsnOiAnXHUyMmU4JywKKyAgICAncHJvZDsnOiAnXHUyMjBmJywKKyAgICAnUHJvZHVjdDsnOiAnXHUyMjBmJywKKyAgICAncHJvZmFsYXI7JzogJ1x1MjMyZScsCisgICAgJ3Byb2ZsaW5lOyc6ICdcdTIzMTInLAorICAgICdwcm9mc3VyZjsnOiAnXHUyMzEzJywKKyAgICAncHJvcDsnOiAnXHUyMjFkJywKKyAgICAnUHJvcG9ydGlvbjsnOiAnXHUyMjM3JywKKyAgICAnUHJvcG9ydGlvbmFsOyc6ICdcdTIyMWQnLAorICAgICdwcm9wdG87JzogJ1x1MjIxZCcsCisgICAgJ3Byc2ltOyc6ICdcdTIyN2UnLAorICAgICdwcnVyZWw7JzogJ1x1MjJiMCcsCisgICAgJ1BzY3I7JzogJ1xVMDAwMWQ0YWInLAorICAgICdwc2NyOyc6ICdcVTAwMDFkNGM1JywKKyAgICAnUHNpOyc6ICdcdTAzYTgnLAorICAgICdwc2k7JzogJ1x1MDNjOCcsCisgICAgJ3B1bmNzcDsnOiAnXHUyMDA4JywKKyAgICAnUWZyOyc6ICdcVTAwMDFkNTE0JywKKyAgICAncWZyOyc6ICdcVTAwMDFkNTJlJywKKyAgICAncWludDsnOiAnXHUyYTBjJywKKyAgICAnUW9wZjsnOiAnXHUyMTFhJywKKyAgICAncW9wZjsnOiAnXFUwMDAxZDU2MicsCisgICAgJ3FwcmltZTsnOiAnXHUyMDU3JywKKyAgICAnUXNjcjsnOiAnXFUwMDAxZDRhYycsCisgICAgJ3FzY3I7JzogJ1xVMDAwMWQ0YzYnLAorICAgICdxdWF0ZXJuaW9uczsnOiAnXHUyMTBkJywKKyAgICAncXVhdGludDsnOiAnXHUyYTE2JywKKyAgICAncXVlc3Q7JzogJz8nLAorICAgICdxdWVzdGVxOyc6ICdcdTIyNWYnLAorICAgICdRVU9UJzogJyInLAorICAgICdxdW90JzogJyInLAorICAgICdRVU9UOyc6ICciJywKKyAgICAncXVvdDsnOiAnIicsCisgICAgJ3JBYXJyOyc6ICdcdTIxZGInLAorICAgICdyYWNlOyc6ICdcdTIyM2RcdTAzMzEnLAorICAgICdSYWN1dGU7JzogJ1x1MDE1NCcsCisgICAgJ3JhY3V0ZTsnOiAnXHUwMTU1JywKKyAgICAncmFkaWM7JzogJ1x1MjIxYScsCisgICAgJ3JhZW1wdHl2Oyc6ICdcdTI5YjMnLAorICAgICdSYW5nOyc6ICdcdTI3ZWInLAorICAgICdyYW5nOyc6ICdcdTI3ZTknLAorICAgICdyYW5nZDsnOiAnXHUyOTkyJywKKyAgICAncmFuZ2U7JzogJ1x1MjlhNScsCisgICAgJ3JhbmdsZTsnOiAnXHUyN2U5JywKKyAgICAncmFxdW8nOiAnXHhiYicsCisgICAgJ3JhcXVvOyc6ICdceGJiJywKKyAgICAnUmFycjsnOiAnXHUyMWEwJywKKyAgICAnckFycjsnOiAnXHUyMWQyJywKKyAgICAncmFycjsnOiAnXHUyMTkyJywKKyAgICAncmFycmFwOyc6ICdcdTI5NzUnLAorICAgICdyYXJyYjsnOiAnXHUyMWU1JywKKyAgICAncmFycmJmczsnOiAnXHUyOTIwJywKKyAgICAncmFycmM7JzogJ1x1MjkzMycsCisgICAgJ3JhcnJmczsnOiAnXHUyOTFlJywKKyAgICAncmFycmhrOyc6ICdcdTIxYWEnLAorICAgICdyYXJybHA7JzogJ1x1MjFhYycsCisgICAgJ3JhcnJwbDsnOiAnXHUyOTQ1JywKKyAgICAncmFycnNpbTsnOiAnXHUyOTc0JywKKyAgICAnUmFycnRsOyc6ICdcdTI5MTYnLAorICAgICdyYXJydGw7JzogJ1x1MjFhMycsCisgICAgJ3JhcnJ3Oyc6ICdcdTIxOWQnLAorICAgICdyQXRhaWw7JzogJ1x1MjkxYycsCisgICAgJ3JhdGFpbDsnOiAnXHUyOTFhJywKKyAgICAncmF0aW87JzogJ1x1MjIzNicsCisgICAgJ3JhdGlvbmFsczsnOiAnXHUyMTFhJywKKyAgICAnUkJhcnI7JzogJ1x1MjkxMCcsCisgICAgJ3JCYXJyOyc6ICdcdTI5MGYnLAorICAgICdyYmFycjsnOiAnXHUyOTBkJywKKyAgICAncmJicms7JzogJ1x1Mjc3MycsCisgICAgJ3JicmFjZTsnOiAnfScsCisgICAgJ3JicmFjazsnOiAnXScsCisgICAgJ3JicmtlOyc6ICdcdTI5OGMnLAorICAgICdyYnJrc2xkOyc6ICdcdTI5OGUnLAorICAgICdyYnJrc2x1Oyc6ICdcdTI5OTAnLAorICAgICdSY2Fyb247JzogJ1x1MDE1OCcsCisgICAgJ3JjYXJvbjsnOiAnXHUwMTU5JywKKyAgICAnUmNlZGlsOyc6ICdcdTAxNTYnLAorICAgICdyY2VkaWw7JzogJ1x1MDE1NycsCisgICAgJ3JjZWlsOyc6ICdcdTIzMDknLAorICAgICdyY3ViOyc6ICd9JywKKyAgICAnUmN5Oyc6ICdcdTA0MjAnLAorICAgICdyY3k7JzogJ1x1MDQ0MCcsCisgICAgJ3JkY2E7JzogJ1x1MjkzNycsCisgICAgJ3JkbGRoYXI7JzogJ1x1Mjk2OScsCisgICAgJ3JkcXVvOyc6ICdcdTIwMWQnLAorICAgICdyZHF1b3I7JzogJ1x1MjAxZCcsCisgICAgJ3Jkc2g7JzogJ1x1MjFiMycsCisgICAgJ1JlOyc6ICdcdTIxMWMnLAorICAgICdyZWFsOyc6ICdcdTIxMWMnLAorICAgICdyZWFsaW5lOyc6ICdcdTIxMWInLAorICAgICdyZWFscGFydDsnOiAnXHUyMTFjJywKKyAgICAncmVhbHM7JzogJ1x1MjExZCcsCisgICAgJ3JlY3Q7JzogJ1x1MjVhZCcsCisgICAgJ1JFRyc6ICdceGFlJywKKyAgICAncmVnJzogJ1x4YWUnLAorICAgICdSRUc7JzogJ1x4YWUnLAorICAgICdyZWc7JzogJ1x4YWUnLAorICAgICdSZXZlcnNlRWxlbWVudDsnOiAnXHUyMjBiJywKKyAgICAnUmV2ZXJzZUVxdWlsaWJyaXVtOyc6ICdcdTIxY2InLAorICAgICdSZXZlcnNlVXBFcXVpbGlicml1bTsnOiAnXHUyOTZmJywKKyAgICAncmZpc2h0Oyc6ICdcdTI5N2QnLAorICAgICdyZmxvb3I7JzogJ1x1MjMwYicsCisgICAgJ1JmcjsnOiAnXHUyMTFjJywKKyAgICAncmZyOyc6ICdcVTAwMDFkNTJmJywKKyAgICAnckhhcjsnOiAnXHUyOTY0JywKKyAgICAncmhhcmQ7JzogJ1x1MjFjMScsCisgICAgJ3JoYXJ1Oyc6ICdcdTIxYzAnLAorICAgICdyaGFydWw7JzogJ1x1Mjk2YycsCisgICAgJ1JobzsnOiAnXHUwM2ExJywKKyAgICAncmhvOyc6ICdcdTAzYzEnLAorICAgICdyaG92Oyc6ICdcdTAzZjEnLAorICAgICdSaWdodEFuZ2xlQnJhY2tldDsnOiAnXHUyN2U5JywKKyAgICAnUmlnaHRBcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRhcnJvdzsnOiAnXHUyMWQyJywKKyAgICAncmlnaHRhcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRBcnJvd0JhcjsnOiAnXHUyMWU1JywKKyAgICAnUmlnaHRBcnJvd0xlZnRBcnJvdzsnOiAnXHUyMWM0JywKKyAgICAncmlnaHRhcnJvd3RhaWw7JzogJ1x1MjFhMycsCisgICAgJ1JpZ2h0Q2VpbGluZzsnOiAnXHUyMzA5JywKKyAgICAnUmlnaHREb3VibGVCcmFja2V0Oyc6ICdcdTI3ZTcnLAorICAgICdSaWdodERvd25UZWVWZWN0b3I7JzogJ1x1Mjk1ZCcsCisgICAgJ1JpZ2h0RG93blZlY3RvcjsnOiAnXHUyMWMyJywKKyAgICAnUmlnaHREb3duVmVjdG9yQmFyOyc6ICdcdTI5NTUnLAorICAgICdSaWdodEZsb29yOyc6ICdcdTIzMGInLAorICAgICdyaWdodGhhcnBvb25kb3duOyc6ICdcdTIxYzEnLAorICAgICdyaWdodGhhcnBvb251cDsnOiAnXHUyMWMwJywKKyAgICAncmlnaHRsZWZ0YXJyb3dzOyc6ICdcdTIxYzQnLAorICAgICdyaWdodGxlZnRoYXJwb29uczsnOiAnXHUyMWNjJywKKyAgICAncmlnaHRyaWdodGFycm93czsnOiAnXHUyMWM5JywKKyAgICAncmlnaHRzcXVpZ2Fycm93Oyc6ICdcdTIxOWQnLAorICAgICdSaWdodFRlZTsnOiAnXHUyMmEyJywKKyAgICAnUmlnaHRUZWVBcnJvdzsnOiAnXHUyMWE2JywKKyAgICAnUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1YicsCisgICAgJ3JpZ2h0dGhyZWV0aW1lczsnOiAnXHUyMmNjJywKKyAgICAnUmlnaHRUcmlhbmdsZTsnOiAnXHUyMmIzJywKKyAgICAnUmlnaHRUcmlhbmdsZUJhcjsnOiAnXHUyOWQwJywKKyAgICAnUmlnaHRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyYjUnLAorICAgICdSaWdodFVwRG93blZlY3RvcjsnOiAnXHUyOTRmJywKKyAgICAnUmlnaHRVcFRlZVZlY3RvcjsnOiAnXHUyOTVjJywKKyAgICAnUmlnaHRVcFZlY3RvcjsnOiAnXHUyMWJlJywKKyAgICAnUmlnaHRVcFZlY3RvckJhcjsnOiAnXHUyOTU0JywKKyAgICAnUmlnaHRWZWN0b3I7JzogJ1x1MjFjMCcsCisgICAgJ1JpZ2h0VmVjdG9yQmFyOyc6ICdcdTI5NTMnLAorICAgICdyaW5nOyc6ICdcdTAyZGEnLAorICAgICdyaXNpbmdkb3RzZXE7JzogJ1x1MjI1MycsCisgICAgJ3JsYXJyOyc6ICdcdTIxYzQnLAorICAgICdybGhhcjsnOiAnXHUyMWNjJywKKyAgICAncmxtOyc6ICdcdTIwMGYnLAorICAgICdybW91c3Q7JzogJ1x1MjNiMScsCisgICAgJ3Jtb3VzdGFjaGU7JzogJ1x1MjNiMScsCisgICAgJ3JubWlkOyc6ICdcdTJhZWUnLAorICAgICdyb2FuZzsnOiAnXHUyN2VkJywKKyAgICAncm9hcnI7JzogJ1x1MjFmZScsCisgICAgJ3JvYnJrOyc6ICdcdTI3ZTcnLAorICAgICdyb3BhcjsnOiAnXHUyOTg2JywKKyAgICAnUm9wZjsnOiAnXHUyMTFkJywKKyAgICAncm9wZjsnOiAnXFUwMDAxZDU2MycsCisgICAgJ3JvcGx1czsnOiAnXHUyYTJlJywKKyAgICAncm90aW1lczsnOiAnXHUyYTM1JywKKyAgICAnUm91bmRJbXBsaWVzOyc6ICdcdTI5NzAnLAorICAgICdycGFyOyc6ICcpJywKKyAgICAncnBhcmd0Oyc6ICdcdTI5OTQnLAorICAgICdycHBvbGludDsnOiAnXHUyYTEyJywKKyAgICAncnJhcnI7JzogJ1x1MjFjOScsCisgICAgJ1JyaWdodGFycm93Oyc6ICdcdTIxZGInLAorICAgICdyc2FxdW87JzogJ1x1MjAzYScsCisgICAgJ1JzY3I7JzogJ1x1MjExYicsCisgICAgJ3JzY3I7JzogJ1xVMDAwMWQ0YzcnLAorICAgICdSc2g7JzogJ1x1MjFiMScsCisgICAgJ3JzaDsnOiAnXHUyMWIxJywKKyAgICAncnNxYjsnOiAnXScsCisgICAgJ3JzcXVvOyc6ICdcdTIwMTknLAorICAgICdyc3F1b3I7JzogJ1x1MjAxOScsCisgICAgJ3J0aHJlZTsnOiAnXHUyMmNjJywKKyAgICAncnRpbWVzOyc6ICdcdTIyY2EnLAorICAgICdydHJpOyc6ICdcdTI1YjknLAorICAgICdydHJpZTsnOiAnXHUyMmI1JywKKyAgICAncnRyaWY7JzogJ1x1MjViOCcsCisgICAgJ3J0cmlsdHJpOyc6ICdcdTI5Y2UnLAorICAgICdSdWxlRGVsYXllZDsnOiAnXHUyOWY0JywKKyAgICAncnVsdWhhcjsnOiAnXHUyOTY4JywKKyAgICAncng7JzogJ1x1MjExZScsCisgICAgJ1NhY3V0ZTsnOiAnXHUwMTVhJywKKyAgICAnc2FjdXRlOyc6ICdcdTAxNWInLAorICAgICdzYnF1bzsnOiAnXHUyMDFhJywKKyAgICAnU2M7JzogJ1x1MmFiYycsCisgICAgJ3NjOyc6ICdcdTIyN2InLAorICAgICdzY2FwOyc6ICdcdTJhYjgnLAorICAgICdTY2Fyb247JzogJ1x1MDE2MCcsCisgICAgJ3NjYXJvbjsnOiAnXHUwMTYxJywKKyAgICAnc2NjdWU7JzogJ1x1MjI3ZCcsCisgICAgJ3NjRTsnOiAnXHUyYWI0JywKKyAgICAnc2NlOyc6ICdcdTJhYjAnLAorICAgICdTY2VkaWw7JzogJ1x1MDE1ZScsCisgICAgJ3NjZWRpbDsnOiAnXHUwMTVmJywKKyAgICAnU2NpcmM7JzogJ1x1MDE1YycsCisgICAgJ3NjaXJjOyc6ICdcdTAxNWQnLAorICAgICdzY25hcDsnOiAnXHUyYWJhJywKKyAgICAnc2NuRTsnOiAnXHUyYWI2JywKKyAgICAnc2Nuc2ltOyc6ICdcdTIyZTknLAorICAgICdzY3BvbGludDsnOiAnXHUyYTEzJywKKyAgICAnc2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1NjeTsnOiAnXHUwNDIxJywKKyAgICAnc2N5Oyc6ICdcdTA0NDEnLAorICAgICdzZG90Oyc6ICdcdTIyYzUnLAorICAgICdzZG90YjsnOiAnXHUyMmExJywKKyAgICAnc2RvdGU7JzogJ1x1MmE2NicsCisgICAgJ3NlYXJoazsnOiAnXHUyOTI1JywKKyAgICAnc2VBcnI7JzogJ1x1MjFkOCcsCisgICAgJ3NlYXJyOyc6ICdcdTIxOTgnLAorICAgICdzZWFycm93Oyc6ICdcdTIxOTgnLAorICAgICdzZWN0JzogJ1x4YTcnLAorICAgICdzZWN0Oyc6ICdceGE3JywKKyAgICAnc2VtaTsnOiAnOycsCisgICAgJ3Nlc3dhcjsnOiAnXHUyOTI5JywKKyAgICAnc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NldG1uOyc6ICdcdTIyMTYnLAorICAgICdzZXh0Oyc6ICdcdTI3MzYnLAorICAgICdTZnI7JzogJ1xVMDAwMWQ1MTYnLAorICAgICdzZnI7JzogJ1xVMDAwMWQ1MzAnLAorICAgICdzZnJvd247JzogJ1x1MjMyMicsCisgICAgJ3NoYXJwOyc6ICdcdTI2NmYnLAorICAgICdTSENIY3k7JzogJ1x1MDQyOScsCisgICAgJ3NoY2hjeTsnOiAnXHUwNDQ5JywKKyAgICAnU0hjeTsnOiAnXHUwNDI4JywKKyAgICAnc2hjeTsnOiAnXHUwNDQ4JywKKyAgICAnU2hvcnREb3duQXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ1Nob3J0TGVmdEFycm93Oyc6ICdcdTIxOTAnLAorICAgICdzaG9ydG1pZDsnOiAnXHUyMjIzJywKKyAgICAnc2hvcnRwYXJhbGxlbDsnOiAnXHUyMjI1JywKKyAgICAnU2hvcnRSaWdodEFycm93Oyc6ICdcdTIxOTInLAorICAgICdTaG9ydFVwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ3NoeSc6ICdceGFkJywKKyAgICAnc2h5Oyc6ICdceGFkJywKKyAgICAnU2lnbWE7JzogJ1x1MDNhMycsCisgICAgJ3NpZ21hOyc6ICdcdTAzYzMnLAorICAgICdzaWdtYWY7JzogJ1x1MDNjMicsCisgICAgJ3NpZ21hdjsnOiAnXHUwM2MyJywKKyAgICAnc2ltOyc6ICdcdTIyM2MnLAorICAgICdzaW1kb3Q7JzogJ1x1MmE2YScsCisgICAgJ3NpbWU7JzogJ1x1MjI0MycsCisgICAgJ3NpbWVxOyc6ICdcdTIyNDMnLAorICAgICdzaW1nOyc6ICdcdTJhOWUnLAorICAgICdzaW1nRTsnOiAnXHUyYWEwJywKKyAgICAnc2ltbDsnOiAnXHUyYTlkJywKKyAgICAnc2ltbEU7JzogJ1x1MmE5ZicsCisgICAgJ3NpbW5lOyc6ICdcdTIyNDYnLAorICAgICdzaW1wbHVzOyc6ICdcdTJhMjQnLAorICAgICdzaW1yYXJyOyc6ICdcdTI5NzInLAorICAgICdzbGFycjsnOiAnXHUyMTkwJywKKyAgICAnU21hbGxDaXJjbGU7JzogJ1x1MjIxOCcsCisgICAgJ3NtYWxsc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NtYXNocDsnOiAnXHUyYTMzJywKKyAgICAnc21lcGFyc2w7JzogJ1x1MjllNCcsCisgICAgJ3NtaWQ7JzogJ1x1MjIyMycsCisgICAgJ3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzbXQ7JzogJ1x1MmFhYScsCisgICAgJ3NtdGU7JzogJ1x1MmFhYycsCisgICAgJ3NtdGVzOyc6ICdcdTJhYWNcdWZlMDAnLAorICAgICdTT0ZUY3k7JzogJ1x1MDQyYycsCisgICAgJ3NvZnRjeTsnOiAnXHUwNDRjJywKKyAgICAnc29sOyc6ICcvJywKKyAgICAnc29sYjsnOiAnXHUyOWM0JywKKyAgICAnc29sYmFyOyc6ICdcdTIzM2YnLAorICAgICdTb3BmOyc6ICdcVTAwMDFkNTRhJywKKyAgICAnc29wZjsnOiAnXFUwMDAxZDU2NCcsCisgICAgJ3NwYWRlczsnOiAnXHUyNjYwJywKKyAgICAnc3BhZGVzdWl0Oyc6ICdcdTI2NjAnLAorICAgICdzcGFyOyc6ICdcdTIyMjUnLAorICAgICdzcWNhcDsnOiAnXHUyMjkzJywKKyAgICAnc3FjYXBzOyc6ICdcdTIyOTNcdWZlMDAnLAorICAgICdzcWN1cDsnOiAnXHUyMjk0JywKKyAgICAnc3FjdXBzOyc6ICdcdTIyOTRcdWZlMDAnLAorICAgICdTcXJ0Oyc6ICdcdTIyMWEnLAorICAgICdzcXN1YjsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJlOyc6ICdcdTIyOTEnLAorICAgICdzcXN1YnNldDsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJzZXRlcTsnOiAnXHUyMjkxJywKKyAgICAnc3FzdXA7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3VwZTsnOiAnXHUyMjkyJywKKyAgICAnc3FzdXBzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3Vwc2V0ZXE7JzogJ1x1MjI5MicsCisgICAgJ3NxdTsnOiAnXHUyNWExJywKKyAgICAnU3F1YXJlOyc6ICdcdTI1YTEnLAorICAgICdzcXVhcmU7JzogJ1x1MjVhMScsCisgICAgJ1NxdWFyZUludGVyc2VjdGlvbjsnOiAnXHUyMjkzJywKKyAgICAnU3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGYnLAorICAgICdTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMjkxJywKKyAgICAnU3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ1NxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjI5MicsCisgICAgJ1NxdWFyZVVuaW9uOyc6ICdcdTIyOTQnLAorICAgICdzcXVhcmY7JzogJ1x1MjVhYScsCisgICAgJ3NxdWY7JzogJ1x1MjVhYScsCisgICAgJ3NyYXJyOyc6ICdcdTIxOTInLAorICAgICdTc2NyOyc6ICdcVTAwMDFkNGFlJywKKyAgICAnc3NjcjsnOiAnXFUwMDAxZDRjOCcsCisgICAgJ3NzZXRtbjsnOiAnXHUyMjE2JywKKyAgICAnc3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzc3RhcmY7JzogJ1x1MjJjNicsCisgICAgJ1N0YXI7JzogJ1x1MjJjNicsCisgICAgJ3N0YXI7JzogJ1x1MjYwNicsCisgICAgJ3N0YXJmOyc6ICdcdTI2MDUnLAorICAgICdzdHJhaWdodGVwc2lsb247JzogJ1x1MDNmNScsCisgICAgJ3N0cmFpZ2h0cGhpOyc6ICdcdTAzZDUnLAorICAgICdzdHJuczsnOiAnXHhhZicsCisgICAgJ1N1YjsnOiAnXHUyMmQwJywKKyAgICAnc3ViOyc6ICdcdTIyODInLAorICAgICdzdWJkb3Q7JzogJ1x1MmFiZCcsCisgICAgJ3N1YkU7JzogJ1x1MmFjNScsCisgICAgJ3N1YmU7JzogJ1x1MjI4NicsCisgICAgJ3N1YmVkb3Q7JzogJ1x1MmFjMycsCisgICAgJ3N1Ym11bHQ7JzogJ1x1MmFjMScsCisgICAgJ3N1Ym5FOyc6ICdcdTJhY2InLAorICAgICdzdWJuZTsnOiAnXHUyMjhhJywKKyAgICAnc3VicGx1czsnOiAnXHUyYWJmJywKKyAgICAnc3VicmFycjsnOiAnXHUyOTc5JywKKyAgICAnU3Vic2V0Oyc6ICdcdTIyZDAnLAorICAgICdzdWJzZXQ7JzogJ1x1MjI4MicsCisgICAgJ3N1YnNldGVxOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRlcXE7JzogJ1x1MmFjNScsCisgICAgJ1N1YnNldEVxdWFsOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRuZXE7JzogJ1x1MjI4YScsCisgICAgJ3N1YnNldG5lcXE7JzogJ1x1MmFjYicsCisgICAgJ3N1YnNpbTsnOiAnXHUyYWM3JywKKyAgICAnc3Vic3ViOyc6ICdcdTJhZDUnLAorICAgICdzdWJzdXA7JzogJ1x1MmFkMycsCisgICAgJ3N1Y2M7JzogJ1x1MjI3YicsCisgICAgJ3N1Y2NhcHByb3g7JzogJ1x1MmFiOCcsCisgICAgJ3N1Y2NjdXJseWVxOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkczsnOiAnXHUyMjdiJywKKyAgICAnU3VjY2VlZHNFcXVhbDsnOiAnXHUyYWIwJywKKyAgICAnU3VjY2VlZHNTbGFudEVxdWFsOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkc1RpbGRlOyc6ICdcdTIyN2YnLAorICAgICdzdWNjZXE7JzogJ1x1MmFiMCcsCisgICAgJ3N1Y2NuYXBwcm94Oyc6ICdcdTJhYmEnLAorICAgICdzdWNjbmVxcTsnOiAnXHUyYWI2JywKKyAgICAnc3VjY25zaW07JzogJ1x1MjJlOScsCisgICAgJ3N1Y2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1N1Y2hUaGF0Oyc6ICdcdTIyMGInLAorICAgICdTdW07JzogJ1x1MjIxMScsCisgICAgJ3N1bTsnOiAnXHUyMjExJywKKyAgICAnc3VuZzsnOiAnXHUyNjZhJywKKyAgICAnc3VwMSc6ICdceGI5JywKKyAgICAnc3VwMTsnOiAnXHhiOScsCisgICAgJ3N1cDInOiAnXHhiMicsCisgICAgJ3N1cDI7JzogJ1x4YjInLAorICAgICdzdXAzJzogJ1x4YjMnLAorICAgICdzdXAzOyc6ICdceGIzJywKKyAgICAnU3VwOyc6ICdcdTIyZDEnLAorICAgICdzdXA7JzogJ1x1MjI4MycsCisgICAgJ3N1cGRvdDsnOiAnXHUyYWJlJywKKyAgICAnc3VwZHN1YjsnOiAnXHUyYWQ4JywKKyAgICAnc3VwRTsnOiAnXHUyYWM2JywKKyAgICAnc3VwZTsnOiAnXHUyMjg3JywKKyAgICAnc3VwZWRvdDsnOiAnXHUyYWM0JywKKyAgICAnU3VwZXJzZXQ7JzogJ1x1MjI4MycsCisgICAgJ1N1cGVyc2V0RXF1YWw7JzogJ1x1MjI4NycsCisgICAgJ3N1cGhzb2w7JzogJ1x1MjdjOScsCisgICAgJ3N1cGhzdWI7JzogJ1x1MmFkNycsCisgICAgJ3N1cGxhcnI7JzogJ1x1Mjk3YicsCisgICAgJ3N1cG11bHQ7JzogJ1x1MmFjMicsCisgICAgJ3N1cG5FOyc6ICdcdTJhY2MnLAorICAgICdzdXBuZTsnOiAnXHUyMjhiJywKKyAgICAnc3VwcGx1czsnOiAnXHUyYWMwJywKKyAgICAnU3Vwc2V0Oyc6ICdcdTIyZDEnLAorICAgICdzdXBzZXQ7JzogJ1x1MjI4MycsCisgICAgJ3N1cHNldGVxOyc6ICdcdTIyODcnLAorICAgICdzdXBzZXRlcXE7JzogJ1x1MmFjNicsCisgICAgJ3N1cHNldG5lcTsnOiAnXHUyMjhiJywKKyAgICAnc3Vwc2V0bmVxcTsnOiAnXHUyYWNjJywKKyAgICAnc3Vwc2ltOyc6ICdcdTJhYzgnLAorICAgICdzdXBzdWI7JzogJ1x1MmFkNCcsCisgICAgJ3N1cHN1cDsnOiAnXHUyYWQ2JywKKyAgICAnc3dhcmhrOyc6ICdcdTI5MjYnLAorICAgICdzd0FycjsnOiAnXHUyMWQ5JywKKyAgICAnc3dhcnI7JzogJ1x1MjE5OScsCisgICAgJ3N3YXJyb3c7JzogJ1x1MjE5OScsCisgICAgJ3N3bndhcjsnOiAnXHUyOTJhJywKKyAgICAnc3psaWcnOiAnXHhkZicsCisgICAgJ3N6bGlnOyc6ICdceGRmJywKKyAgICAnVGFiOyc6ICdcdCcsCisgICAgJ3RhcmdldDsnOiAnXHUyMzE2JywKKyAgICAnVGF1Oyc6ICdcdTAzYTQnLAorICAgICd0YXU7JzogJ1x1MDNjNCcsCisgICAgJ3Ricms7JzogJ1x1MjNiNCcsCisgICAgJ1RjYXJvbjsnOiAnXHUwMTY0JywKKyAgICAndGNhcm9uOyc6ICdcdTAxNjUnLAorICAgICdUY2VkaWw7JzogJ1x1MDE2MicsCisgICAgJ3RjZWRpbDsnOiAnXHUwMTYzJywKKyAgICAnVGN5Oyc6ICdcdTA0MjInLAorICAgICd0Y3k7JzogJ1x1MDQ0MicsCisgICAgJ3Rkb3Q7JzogJ1x1MjBkYicsCisgICAgJ3RlbHJlYzsnOiAnXHUyMzE1JywKKyAgICAnVGZyOyc6ICdcVTAwMDFkNTE3JywKKyAgICAndGZyOyc6ICdcVTAwMDFkNTMxJywKKyAgICAndGhlcmU0Oyc6ICdcdTIyMzQnLAorICAgICdUaGVyZWZvcmU7JzogJ1x1MjIzNCcsCisgICAgJ3RoZXJlZm9yZTsnOiAnXHUyMjM0JywKKyAgICAnVGhldGE7JzogJ1x1MDM5OCcsCisgICAgJ3RoZXRhOyc6ICdcdTAzYjgnLAorICAgICd0aGV0YXN5bTsnOiAnXHUwM2QxJywKKyAgICAndGhldGF2Oyc6ICdcdTAzZDEnLAorICAgICd0aGlja2FwcHJveDsnOiAnXHUyMjQ4JywKKyAgICAndGhpY2tzaW07JzogJ1x1MjIzYycsCisgICAgJ1RoaWNrU3BhY2U7JzogJ1x1MjA1Zlx1MjAwYScsCisgICAgJ3RoaW5zcDsnOiAnXHUyMDA5JywKKyAgICAnVGhpblNwYWNlOyc6ICdcdTIwMDknLAorICAgICd0aGthcDsnOiAnXHUyMjQ4JywKKyAgICAndGhrc2ltOyc6ICdcdTIyM2MnLAorICAgICdUSE9STic6ICdceGRlJywKKyAgICAndGhvcm4nOiAnXHhmZScsCisgICAgJ1RIT1JOOyc6ICdceGRlJywKKyAgICAndGhvcm47JzogJ1x4ZmUnLAorICAgICdUaWxkZTsnOiAnXHUyMjNjJywKKyAgICAndGlsZGU7JzogJ1x1MDJkYycsCisgICAgJ1RpbGRlRXF1YWw7JzogJ1x1MjI0MycsCisgICAgJ1RpbGRlRnVsbEVxdWFsOyc6ICdcdTIyNDUnLAorICAgICdUaWxkZVRpbGRlOyc6ICdcdTIyNDgnLAorICAgICd0aW1lcyc6ICdceGQ3JywKKyAgICAndGltZXM7JzogJ1x4ZDcnLAorICAgICd0aW1lc2I7JzogJ1x1MjJhMCcsCisgICAgJ3RpbWVzYmFyOyc6ICdcdTJhMzEnLAorICAgICd0aW1lc2Q7JzogJ1x1MmEzMCcsCisgICAgJ3RpbnQ7JzogJ1x1MjIyZCcsCisgICAgJ3RvZWE7JzogJ1x1MjkyOCcsCisgICAgJ3RvcDsnOiAnXHUyMmE0JywKKyAgICAndG9wYm90Oyc6ICdcdTIzMzYnLAorICAgICd0b3BjaXI7JzogJ1x1MmFmMScsCisgICAgJ1RvcGY7JzogJ1xVMDAwMWQ1NGInLAorICAgICd0b3BmOyc6ICdcVTAwMDFkNTY1JywKKyAgICAndG9wZm9yazsnOiAnXHUyYWRhJywKKyAgICAndG9zYTsnOiAnXHUyOTI5JywKKyAgICAndHByaW1lOyc6ICdcdTIwMzQnLAorICAgICdUUkFERTsnOiAnXHUyMTIyJywKKyAgICAndHJhZGU7JzogJ1x1MjEyMicsCisgICAgJ3RyaWFuZ2xlOyc6ICdcdTI1YjUnLAorICAgICd0cmlhbmdsZWRvd247JzogJ1x1MjViZicsCisgICAgJ3RyaWFuZ2xlbGVmdDsnOiAnXHUyNWMzJywKKyAgICAndHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJiNCcsCisgICAgJ3RyaWFuZ2xlcTsnOiAnXHUyMjVjJywKKyAgICAndHJpYW5nbGVyaWdodDsnOiAnXHUyNWI5JywKKyAgICAndHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyYjUnLAorICAgICd0cmlkb3Q7JzogJ1x1MjVlYycsCisgICAgJ3RyaWU7JzogJ1x1MjI1YycsCisgICAgJ3RyaW1pbnVzOyc6ICdcdTJhM2EnLAorICAgICdUcmlwbGVEb3Q7JzogJ1x1MjBkYicsCisgICAgJ3RyaXBsdXM7JzogJ1x1MmEzOScsCisgICAgJ3RyaXNiOyc6ICdcdTI5Y2QnLAorICAgICd0cml0aW1lOyc6ICdcdTJhM2InLAorICAgICd0cnBleml1bTsnOiAnXHUyM2UyJywKKyAgICAnVHNjcjsnOiAnXFUwMDAxZDRhZicsCisgICAgJ3RzY3I7JzogJ1xVMDAwMWQ0YzknLAorICAgICdUU2N5Oyc6ICdcdTA0MjYnLAorICAgICd0c2N5Oyc6ICdcdTA0NDYnLAorICAgICdUU0hjeTsnOiAnXHUwNDBiJywKKyAgICAndHNoY3k7JzogJ1x1MDQ1YicsCisgICAgJ1RzdHJvazsnOiAnXHUwMTY2JywKKyAgICAndHN0cm9rOyc6ICdcdTAxNjcnLAorICAgICd0d2l4dDsnOiAnXHUyMjZjJywKKyAgICAndHdvaGVhZGxlZnRhcnJvdzsnOiAnXHUyMTllJywKKyAgICAndHdvaGVhZHJpZ2h0YXJyb3c7JzogJ1x1MjFhMCcsCisgICAgJ1VhY3V0ZSc6ICdceGRhJywKKyAgICAndWFjdXRlJzogJ1x4ZmEnLAorICAgICdVYWN1dGU7JzogJ1x4ZGEnLAorICAgICd1YWN1dGU7JzogJ1x4ZmEnLAorICAgICdVYXJyOyc6ICdcdTIxOWYnLAorICAgICd1QXJyOyc6ICdcdTIxZDEnLAorICAgICd1YXJyOyc6ICdcdTIxOTEnLAorICAgICdVYXJyb2NpcjsnOiAnXHUyOTQ5JywKKyAgICAnVWJyY3k7JzogJ1x1MDQwZScsCisgICAgJ3VicmN5Oyc6ICdcdTA0NWUnLAorICAgICdVYnJldmU7JzogJ1x1MDE2YycsCisgICAgJ3VicmV2ZTsnOiAnXHUwMTZkJywKKyAgICAnVWNpcmMnOiAnXHhkYicsCisgICAgJ3VjaXJjJzogJ1x4ZmInLAorICAgICdVY2lyYzsnOiAnXHhkYicsCisgICAgJ3VjaXJjOyc6ICdceGZiJywKKyAgICAnVWN5Oyc6ICdcdTA0MjMnLAorICAgICd1Y3k7JzogJ1x1MDQ0MycsCisgICAgJ3VkYXJyOyc6ICdcdTIxYzUnLAorICAgICdVZGJsYWM7JzogJ1x1MDE3MCcsCisgICAgJ3VkYmxhYzsnOiAnXHUwMTcxJywKKyAgICAndWRoYXI7JzogJ1x1Mjk2ZScsCisgICAgJ3VmaXNodDsnOiAnXHUyOTdlJywKKyAgICAnVWZyOyc6ICdcVTAwMDFkNTE4JywKKyAgICAndWZyOyc6ICdcVTAwMDFkNTMyJywKKyAgICAnVWdyYXZlJzogJ1x4ZDknLAorICAgICd1Z3JhdmUnOiAnXHhmOScsCisgICAgJ1VncmF2ZTsnOiAnXHhkOScsCisgICAgJ3VncmF2ZTsnOiAnXHhmOScsCisgICAgJ3VIYXI7JzogJ1x1Mjk2MycsCisgICAgJ3VoYXJsOyc6ICdcdTIxYmYnLAorICAgICd1aGFycjsnOiAnXHUyMWJlJywKKyAgICAndWhibGs7JzogJ1x1MjU4MCcsCisgICAgJ3VsY29ybjsnOiAnXHUyMzFjJywKKyAgICAndWxjb3JuZXI7JzogJ1x1MjMxYycsCisgICAgJ3VsY3JvcDsnOiAnXHUyMzBmJywKKyAgICAndWx0cmk7JzogJ1x1MjVmOCcsCisgICAgJ1VtYWNyOyc6ICdcdTAxNmEnLAorICAgICd1bWFjcjsnOiAnXHUwMTZiJywKKyAgICAndW1sJzogJ1x4YTgnLAorICAgICd1bWw7JzogJ1x4YTgnLAorICAgICdVbmRlckJhcjsnOiAnXycsCisgICAgJ1VuZGVyQnJhY2U7JzogJ1x1MjNkZicsCisgICAgJ1VuZGVyQnJhY2tldDsnOiAnXHUyM2I1JywKKyAgICAnVW5kZXJQYXJlbnRoZXNpczsnOiAnXHUyM2RkJywKKyAgICAnVW5pb247JzogJ1x1MjJjMycsCisgICAgJ1VuaW9uUGx1czsnOiAnXHUyMjhlJywKKyAgICAnVW9nb247JzogJ1x1MDE3MicsCisgICAgJ3VvZ29uOyc6ICdcdTAxNzMnLAorICAgICdVb3BmOyc6ICdcVTAwMDFkNTRjJywKKyAgICAndW9wZjsnOiAnXFUwMDAxZDU2NicsCisgICAgJ1VwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwYXJyb3c7JzogJ1x1MjFkMScsCisgICAgJ3VwYXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwQXJyb3dCYXI7JzogJ1x1MjkxMicsCisgICAgJ1VwQXJyb3dEb3duQXJyb3c7JzogJ1x1MjFjNScsCisgICAgJ1VwRG93bkFycm93Oyc6ICdcdTIxOTUnLAorICAgICdVcGRvd25hcnJvdzsnOiAnXHUyMWQ1JywKKyAgICAndXBkb3duYXJyb3c7JzogJ1x1MjE5NScsCisgICAgJ1VwRXF1aWxpYnJpdW07JzogJ1x1Mjk2ZScsCisgICAgJ3VwaGFycG9vbmxlZnQ7JzogJ1x1MjFiZicsCisgICAgJ3VwaGFycG9vbnJpZ2h0Oyc6ICdcdTIxYmUnLAorICAgICd1cGx1czsnOiAnXHUyMjhlJywKKyAgICAnVXBwZXJMZWZ0QXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ1VwcGVyUmlnaHRBcnJvdzsnOiAnXHUyMTk3JywKKyAgICAnVXBzaTsnOiAnXHUwM2QyJywKKyAgICAndXBzaTsnOiAnXHUwM2M1JywKKyAgICAndXBzaWg7JzogJ1x1MDNkMicsCisgICAgJ1Vwc2lsb247JzogJ1x1MDNhNScsCisgICAgJ3Vwc2lsb247JzogJ1x1MDNjNScsCisgICAgJ1VwVGVlOyc6ICdcdTIyYTUnLAorICAgICdVcFRlZUFycm93Oyc6ICdcdTIxYTUnLAorICAgICd1cHVwYXJyb3dzOyc6ICdcdTIxYzgnLAorICAgICd1cmNvcm47JzogJ1x1MjMxZCcsCisgICAgJ3VyY29ybmVyOyc6ICdcdTIzMWQnLAorICAgICd1cmNyb3A7JzogJ1x1MjMwZScsCisgICAgJ1VyaW5nOyc6ICdcdTAxNmUnLAorICAgICd1cmluZzsnOiAnXHUwMTZmJywKKyAgICAndXJ0cmk7JzogJ1x1MjVmOScsCisgICAgJ1VzY3I7JzogJ1xVMDAwMWQ0YjAnLAorICAgICd1c2NyOyc6ICdcVTAwMDFkNGNhJywKKyAgICAndXRkb3Q7JzogJ1x1MjJmMCcsCisgICAgJ1V0aWxkZTsnOiAnXHUwMTY4JywKKyAgICAndXRpbGRlOyc6ICdcdTAxNjknLAorICAgICd1dHJpOyc6ICdcdTI1YjUnLAorICAgICd1dHJpZjsnOiAnXHUyNWI0JywKKyAgICAndXVhcnI7JzogJ1x1MjFjOCcsCisgICAgJ1V1bWwnOiAnXHhkYycsCisgICAgJ3V1bWwnOiAnXHhmYycsCisgICAgJ1V1bWw7JzogJ1x4ZGMnLAorICAgICd1dW1sOyc6ICdceGZjJywKKyAgICAndXdhbmdsZTsnOiAnXHUyOWE3JywKKyAgICAndmFuZ3J0Oyc6ICdcdTI5OWMnLAorICAgICd2YXJlcHNpbG9uOyc6ICdcdTAzZjUnLAorICAgICd2YXJrYXBwYTsnOiAnXHUwM2YwJywKKyAgICAndmFybm90aGluZzsnOiAnXHUyMjA1JywKKyAgICAndmFycGhpOyc6ICdcdTAzZDUnLAorICAgICd2YXJwaTsnOiAnXHUwM2Q2JywKKyAgICAndmFycHJvcHRvOyc6ICdcdTIyMWQnLAorICAgICd2QXJyOyc6ICdcdTIxZDUnLAorICAgICd2YXJyOyc6ICdcdTIxOTUnLAorICAgICd2YXJyaG87JzogJ1x1MDNmMScsCisgICAgJ3ZhcnNpZ21hOyc6ICdcdTAzYzInLAorICAgICd2YXJzdWJzZXRuZXE7JzogJ1x1MjI4YVx1ZmUwMCcsCisgICAgJ3ZhcnN1YnNldG5lcXE7JzogJ1x1MmFjYlx1ZmUwMCcsCisgICAgJ3ZhcnN1cHNldG5lcTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAndmFyc3Vwc2V0bmVxcTsnOiAnXHUyYWNjXHVmZTAwJywKKyAgICAndmFydGhldGE7JzogJ1x1MDNkMScsCisgICAgJ3ZhcnRyaWFuZ2xlbGVmdDsnOiAnXHUyMmIyJywKKyAgICAndmFydHJpYW5nbGVyaWdodDsnOiAnXHUyMmIzJywKKyAgICAnVmJhcjsnOiAnXHUyYWViJywKKyAgICAndkJhcjsnOiAnXHUyYWU4JywKKyAgICAndkJhcnY7JzogJ1x1MmFlOScsCisgICAgJ1ZjeTsnOiAnXHUwNDEyJywKKyAgICAndmN5Oyc6ICdcdTA0MzInLAorICAgICdWRGFzaDsnOiAnXHUyMmFiJywKKyAgICAnVmRhc2g7JzogJ1x1MjJhOScsCisgICAgJ3ZEYXNoOyc6ICdcdTIyYTgnLAorICAgICd2ZGFzaDsnOiAnXHUyMmEyJywKKyAgICAnVmRhc2hsOyc6ICdcdTJhZTYnLAorICAgICdWZWU7JzogJ1x1MjJjMScsCisgICAgJ3ZlZTsnOiAnXHUyMjI4JywKKyAgICAndmVlYmFyOyc6ICdcdTIyYmInLAorICAgICd2ZWVlcTsnOiAnXHUyMjVhJywKKyAgICAndmVsbGlwOyc6ICdcdTIyZWUnLAorICAgICdWZXJiYXI7JzogJ1x1MjAxNicsCisgICAgJ3ZlcmJhcjsnOiAnfCcsCisgICAgJ1ZlcnQ7JzogJ1x1MjAxNicsCisgICAgJ3ZlcnQ7JzogJ3wnLAorICAgICdWZXJ0aWNhbEJhcjsnOiAnXHUyMjIzJywKKyAgICAnVmVydGljYWxMaW5lOyc6ICd8JywKKyAgICAnVmVydGljYWxTZXBhcmF0b3I7JzogJ1x1Mjc1OCcsCisgICAgJ1ZlcnRpY2FsVGlsZGU7JzogJ1x1MjI0MCcsCisgICAgJ1ZlcnlUaGluU3BhY2U7JzogJ1x1MjAwYScsCisgICAgJ1ZmcjsnOiAnXFUwMDAxZDUxOScsCisgICAgJ3ZmcjsnOiAnXFUwMDAxZDUzMycsCisgICAgJ3ZsdHJpOyc6ICdcdTIyYjInLAorICAgICd2bnN1YjsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAndm5zdXA7JzogJ1x1MjI4M1x1MjBkMicsCisgICAgJ1ZvcGY7JzogJ1xVMDAwMWQ1NGQnLAorICAgICd2b3BmOyc6ICdcVTAwMDFkNTY3JywKKyAgICAndnByb3A7JzogJ1x1MjIxZCcsCisgICAgJ3ZydHJpOyc6ICdcdTIyYjMnLAorICAgICdWc2NyOyc6ICdcVTAwMDFkNGIxJywKKyAgICAndnNjcjsnOiAnXFUwMDAxZDRjYicsCisgICAgJ3ZzdWJuRTsnOiAnXHUyYWNiXHVmZTAwJywKKyAgICAndnN1Ym5lOyc6ICdcdTIyOGFcdWZlMDAnLAorICAgICd2c3VwbkU7JzogJ1x1MmFjY1x1ZmUwMCcsCisgICAgJ3ZzdXBuZTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAnVnZkYXNoOyc6ICdcdTIyYWEnLAorICAgICd2emlnemFnOyc6ICdcdTI5OWEnLAorICAgICdXY2lyYzsnOiAnXHUwMTc0JywKKyAgICAnd2NpcmM7JzogJ1x1MDE3NScsCisgICAgJ3dlZGJhcjsnOiAnXHUyYTVmJywKKyAgICAnV2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ3dlZGdlOyc6ICdcdTIyMjcnLAorICAgICd3ZWRnZXE7JzogJ1x1MjI1OScsCisgICAgJ3dlaWVycDsnOiAnXHUyMTE4JywKKyAgICAnV2ZyOyc6ICdcVTAwMDFkNTFhJywKKyAgICAnd2ZyOyc6ICdcVTAwMDFkNTM0JywKKyAgICAnV29wZjsnOiAnXFUwMDAxZDU0ZScsCisgICAgJ3dvcGY7JzogJ1xVMDAwMWQ1NjgnLAorICAgICd3cDsnOiAnXHUyMTE4JywKKyAgICAnd3I7JzogJ1x1MjI0MCcsCisgICAgJ3dyZWF0aDsnOiAnXHUyMjQwJywKKyAgICAnV3NjcjsnOiAnXFUwMDAxZDRiMicsCisgICAgJ3dzY3I7JzogJ1xVMDAwMWQ0Y2MnLAorICAgICd4Y2FwOyc6ICdcdTIyYzInLAorICAgICd4Y2lyYzsnOiAnXHUyNWVmJywKKyAgICAneGN1cDsnOiAnXHUyMmMzJywKKyAgICAneGR0cmk7JzogJ1x1MjViZCcsCisgICAgJ1hmcjsnOiAnXFUwMDAxZDUxYicsCisgICAgJ3hmcjsnOiAnXFUwMDAxZDUzNScsCisgICAgJ3hoQXJyOyc6ICdcdTI3ZmEnLAorICAgICd4aGFycjsnOiAnXHUyN2Y3JywKKyAgICAnWGk7JzogJ1x1MDM5ZScsCisgICAgJ3hpOyc6ICdcdTAzYmUnLAorICAgICd4bEFycjsnOiAnXHUyN2Y4JywKKyAgICAneGxhcnI7JzogJ1x1MjdmNScsCisgICAgJ3htYXA7JzogJ1x1MjdmYycsCisgICAgJ3huaXM7JzogJ1x1MjJmYicsCisgICAgJ3hvZG90Oyc6ICdcdTJhMDAnLAorICAgICdYb3BmOyc6ICdcVTAwMDFkNTRmJywKKyAgICAneG9wZjsnOiAnXFUwMDAxZDU2OScsCisgICAgJ3hvcGx1czsnOiAnXHUyYTAxJywKKyAgICAneG90aW1lOyc6ICdcdTJhMDInLAorICAgICd4ckFycjsnOiAnXHUyN2Y5JywKKyAgICAneHJhcnI7JzogJ1x1MjdmNicsCisgICAgJ1hzY3I7JzogJ1xVMDAwMWQ0YjMnLAorICAgICd4c2NyOyc6ICdcVTAwMDFkNGNkJywKKyAgICAneHNxY3VwOyc6ICdcdTJhMDYnLAorICAgICd4dXBsdXM7JzogJ1x1MmEwNCcsCisgICAgJ3h1dHJpOyc6ICdcdTI1YjMnLAorICAgICd4dmVlOyc6ICdcdTIyYzEnLAorICAgICd4d2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ1lhY3V0ZSc6ICdceGRkJywKKyAgICAneWFjdXRlJzogJ1x4ZmQnLAorICAgICdZYWN1dGU7JzogJ1x4ZGQnLAorICAgICd5YWN1dGU7JzogJ1x4ZmQnLAorICAgICdZQWN5Oyc6ICdcdTA0MmYnLAorICAgICd5YWN5Oyc6ICdcdTA0NGYnLAorICAgICdZY2lyYzsnOiAnXHUwMTc2JywKKyAgICAneWNpcmM7JzogJ1x1MDE3NycsCisgICAgJ1ljeTsnOiAnXHUwNDJiJywKKyAgICAneWN5Oyc6ICdcdTA0NGInLAorICAgICd5ZW4nOiAnXHhhNScsCisgICAgJ3llbjsnOiAnXHhhNScsCisgICAgJ1lmcjsnOiAnXFUwMDAxZDUxYycsCisgICAgJ3lmcjsnOiAnXFUwMDAxZDUzNicsCisgICAgJ1lJY3k7JzogJ1x1MDQwNycsCisgICAgJ3lpY3k7JzogJ1x1MDQ1NycsCisgICAgJ1lvcGY7JzogJ1xVMDAwMWQ1NTAnLAorICAgICd5b3BmOyc6ICdcVTAwMDFkNTZhJywKKyAgICAnWXNjcjsnOiAnXFUwMDAxZDRiNCcsCisgICAgJ3lzY3I7JzogJ1xVMDAwMWQ0Y2UnLAorICAgICdZVWN5Oyc6ICdcdTA0MmUnLAorICAgICd5dWN5Oyc6ICdcdTA0NGUnLAorICAgICd5dW1sJzogJ1x4ZmYnLAorICAgICdZdW1sOyc6ICdcdTAxNzgnLAorICAgICd5dW1sOyc6ICdceGZmJywKKyAgICAnWmFjdXRlOyc6ICdcdTAxNzknLAorICAgICd6YWN1dGU7JzogJ1x1MDE3YScsCisgICAgJ1pjYXJvbjsnOiAnXHUwMTdkJywKKyAgICAnemNhcm9uOyc6ICdcdTAxN2UnLAorICAgICdaY3k7JzogJ1x1MDQxNycsCisgICAgJ3pjeTsnOiAnXHUwNDM3JywKKyAgICAnWmRvdDsnOiAnXHUwMTdiJywKKyAgICAnemRvdDsnOiAnXHUwMTdjJywKKyAgICAnemVldHJmOyc6ICdcdTIxMjgnLAorICAgICdaZXJvV2lkdGhTcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnWmV0YTsnOiAnXHUwMzk2JywKKyAgICAnemV0YTsnOiAnXHUwM2I2JywKKyAgICAnWmZyOyc6ICdcdTIxMjgnLAorICAgICd6ZnI7JzogJ1xVMDAwMWQ1MzcnLAorICAgICdaSGN5Oyc6ICdcdTA0MTYnLAorICAgICd6aGN5Oyc6ICdcdTA0MzYnLAorICAgICd6aWdyYXJyOyc6ICdcdTIxZGQnLAorICAgICdab3BmOyc6ICdcdTIxMjQnLAorICAgICd6b3BmOyc6ICdcVTAwMDFkNTZiJywKKyAgICAnWnNjcjsnOiAnXFUwMDAxZDRiNScsCisgICAgJ3pzY3I7JzogJ1xVMDAwMWQ0Y2YnLAorICAgICd6d2o7JzogJ1x1MjAwZCcsCisgICAgJ3p3bmo7JzogJ1x1MjAwYycsCit9CisKICMgbWFwcyB0aGUgVW5pY29kZSBjb2RlcG9pbnQgdG8gdGhlIEhUTUwgZW50aXR5IG5hbWUKIGNvZGVwb2ludDJuYW1lID0ge30KIApkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGRlNTA0YWIuLmY4YWM4MjggMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTEwLDYgKzEwLDcgQEAKIAogaW1wb3J0IF9tYXJrdXBiYXNlCiBpbXBvcnQgcmUKK2ltcG9ydCB3YXJuaW5ncwogCiAjIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCBmb3IgcGFyc2luZwogCkBAIC0xMTMsMTQgKzExNCwxNiBAQAogCiAgICAgQ0RBVEFfQ09OVEVOVF9FTEVNRU5UUyA9ICgic2NyaXB0IiwgInN0eWxlIikKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpY3Q9VHJ1ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW5kIHJlc2V0IHRoaXMgaW5zdGFuY2UuCiAKLSAgICAgICAgSWYgc3RyaWN0IGlzIHNldCB0byBUcnVlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgcmFpc2VkIHdoZW4gaW52YWxpZAotICAgICAgICBIVE1MIGlzIGVuY291bnRlcmVkLiAgSWYgc2V0IHRvIEZhbHNlLCBhbiBhdHRlbXB0IGlzIGluc3RlYWQgbWFkZSB0bwotICAgICAgICBjb250aW51ZSBwYXJzaW5nLCBtYWtpbmcgImJlc3QgZ3Vlc3NlcyIgYWJvdXQgdGhlIGludGVuZGVkIG1lYW5pbmcsIGluCi0gICAgICAgIGEgZmFzaGlvbiBzaW1pbGFyIHRvIHdoYXQgYnJvd3NlcnMgdHlwaWNhbGx5IGRvLgorICAgICAgICBJZiBzdHJpY3QgaXMgc2V0IHRvIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlIHBhcnNlciB3aWxsIHBhcnNlIGludmFsaWQKKyAgICAgICAgbWFya3VwLCBvdGhlcndpc2UgaXQgd2lsbCByYWlzZSBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGUgc3RyaWN0IG1vZGUKKyAgICAgICAgaXMgZGVwcmVjYXRlZC4KICAgICAgICAgIiIiCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBzdHJpY3QgbW9kZSBpcyBkZXByZWNhdGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBzZWxmLnN0cmljdCA9IHN0cmljdAogICAgICAgICBzZWxmLnJlc2V0KCkKIApAQCAtMjcxLDggKzI3NCw4IEBACiAgICAgIyBTZWUgYWxzbyBwYXJzZV9kZWNsYXJhdGlvbiBpbiBfbWFya3VwYmFzZQogICAgIGRlZiBwYXJzZV9odG1sX2RlY2xhcmF0aW9uKHNlbGYsIGkpOgogICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCi0gICAgICAgIGlmIHJhd2RhdGFbaTppKzJdICE9ICc8ISc6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKCd1bmV4cGVjdGVkIGNhbGwgdG8gcGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKKyAgICAgICAgYXNzZXJ0IHJhd2RhdGFbaTppKzJdID09ICc8IScsICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKICAgICAgICAgaWYgcmF3ZGF0YVtpOmkrNF0gPT0gJzwhLS0nOgogICAgICAgICAgICAgIyB0aGlzIGNhc2UgaXMgYWN0dWFsbHkgYWxyZWFkeSBoYW5kbGVkIGluIGdvYWhlYWQoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VfY29tbWVudChpKQpAQCAtMjkyLDggKzI5NSw4IEBACiAgICAgIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjYm9ndXMtY29tbWVudC1zdGF0ZQogICAgIGRlZiBwYXJzZV9ib2d1c19jb21tZW50KHNlbGYsIGksIHJlcG9ydD0xKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiByYXdkYXRhW2k6aSsyXSBub3QgaW4gKCc8IScsICc8LycpOgotICAgICAgICAgICAgc2VsZi5lcnJvcigndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX2NvbW1lbnQoKScpCisgICAgICAgIGFzc2VydCByYXdkYXRhW2k6aSsyXSBpbiAoJzwhJywgJzwvJyksICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJzZV9jb21tZW50KCknKQogICAgICAgICBwb3MgPSByYXdkYXRhLmZpbmQoJz4nLCBpKzIpCiAgICAgICAgIGlmIHBvcyA9PSAtMToKICAgICAgICAgICAgIHJldHVybiAtMQpAQCAtNDk3LDcgKzUwMCw2IEBACiAgICAgICAgICAgICBzZWxmLmVycm9yKCJ1bmtub3duIGRlY2xhcmF0aW9uOiAlciIgJSAoZGF0YSwpKQogCiAgICAgIyBJbnRlcm5hbCAtLSBoZWxwZXIgdG8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVyIHF1b3RpbmcKLSAgICBlbnRpdHlkZWZzID0gTm9uZQogICAgIGRlZiB1bmVzY2FwZShzZWxmLCBzKToKICAgICAgICAgaWYgJyYnIG5vdCBpbiBzOgogICAgICAgICAgICAgcmV0dXJuIHMKQEAgLTUwNywyNCArNTA5LDIzIEBACiAgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAiIyI6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzWzE6XQogICAgICAgICAgICAgICAgICAgICBpZiBzWzBdIGluIFsneCcsJ1gnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoc1sxOl0sIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludChzWzE6XS5yc3RyaXAoJzsnKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMucnN0cmlwKCc7JykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHIoYykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiAnJiMnKyBzICsnOycKKyAgICAgICAgICAgICAgICByZXR1cm4gJyYjJyArIHMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBDYW5ub3QgdXNlIG5hbWUyY29kZXBvaW50IGRpcmVjdGx5LCBiZWNhdXNlIEhUTUxQYXJzZXIKLSAgICAgICAgICAgICAgICAjIHN1cHBvcnRzIGFwb3MsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIEhUTUwgNAotICAgICAgICAgICAgICAgIGltcG9ydCBodG1sLmVudGl0aWVzCi0gICAgICAgICAgICAgICAgaWYgSFRNTFBhcnNlci5lbnRpdHlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGVudGl0eWRlZnMgPSBIVE1MUGFyc2VyLmVudGl0eWRlZnMgPSB7J2Fwb3MnOiInIn0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaHRtbC5lbnRpdGllcy5uYW1lMmNvZGVwb2ludC5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5ZGVmc1trXSA9IGNocih2KQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW50aXR5ZGVmc1tzXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJytzKyc7JworICAgICAgICAgICAgICAgIGZyb20gaHRtbC5lbnRpdGllcyBpbXBvcnQgaHRtbDUKKyAgICAgICAgICAgICAgICBpZiBzIGluIGh0bWw1OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDVbc10KKyAgICAgICAgICAgICAgICBlbGlmIHMuZW5kc3dpdGgoJzsnKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJyArIHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgyLCBsZW4ocykpOgorICAgICAgICAgICAgICAgICAgICBpZiBzWzp4XSBpbiBodG1sNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBodG1sNVtzWzp4XV0gKyBzW3g6XQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJicgKyBzCiAKLSAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdK3xcd3sxLDh9KSk7IiwKKyAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdKzt8XHd7MSwzMn07PykpIiwKICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlRW50aXRpZXMsIHMsIGZsYWdzPXJlLkFTQ0lJKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDk3YTcxNTUuLjliMDE3MDQgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTE0MSw2ICsxNDEsOSBAQAogTE9DS0VEID0gNDIzCiBGQUlMRURfREVQRU5ERU5DWSA9IDQyNAogVVBHUkFERV9SRVFVSVJFRCA9IDQyNgorUFJFQ09ORElUSU9OX1JFUVVJUkVEID0gNDI4CitUT09fTUFOWV9SRVFVRVNUUyA9IDQyOQorUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSA9IDQzMQogCiAjIHNlcnZlciBlcnJvcgogSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gNTAwCkBAIC0xNTEsNiArMTU0LDcgQEAKIEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEID0gNTA1CiBJTlNVRkZJQ0lFTlRfU1RPUkFHRSA9IDUwNwogTk9UX0VYVEVOREVEID0gNTEwCitORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gNTExCiAKICMgTWFwcGluZyBzdGF0dXMgY29kZXMgdG8gb2ZmaWNpYWwgVzNDIG5hbWVzCiByZXNwb25zZXMgPSB7CkBAIC0xOTIsNiArMTk2LDkgQEAKICAgICA0MTU6ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywKICAgICA0MTY6ICdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKICAgICA0MTc6ICdFeHBlY3RhdGlvbiBGYWlsZWQnLAorICAgIDQyODogJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCisgICAgNDI5OiAnVG9vIE1hbnkgUmVxdWVzdHMnLAorICAgIDQzMTogJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLAogCiAgICAgNTAwOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yJywKICAgICA1MDE6ICdOb3QgSW1wbGVtZW50ZWQnLApAQCAtMTk5LDYgKzIwNiw3IEBACiAgICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JywKICAgICA1MDU6ICdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsCisgICAgNTExOiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCiB9CiAKICMgbWF4aW1hbCBhbW91bnQgb2YgZGF0YSB0byByZWFkIGF0IG9uZSB0aW1lIGluIF9zYWZlX3JlYWQKQEAgLTQ4NSwxMSArNDkzLDE3IEBACiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBiIiIKIAotICAgICAgICBpZiBzZWxmLmNodW5rZWQ6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9jaHVua2VkKGFtdCkKKyAgICAgICAgaWYgYW10IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBBbW91bnQgaXMgZ2l2ZW4sIHNvIGNhbGwgYmFzZSBjbGFzcyB2ZXJzaW9uCisgICAgICAgICAgICAjICh3aGljaCBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBzZWxmLnJlYWRpbnRvKQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKEhUVFBSZXNwb25zZSwgc2VsZikucmVhZChhbXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFtb3VudCBpcyBub3QgZ2l2ZW4gKHVuYm91bmRlZCByZWFkKSBzbyB3ZSBtdXN0IGNoZWNrIHNlbGYubGVuZ3RoCisgICAgICAgICAgICAjIGFuZCBzZWxmLmNodW5rZWQKIAotICAgICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgICMgdW5ib3VuZGVkIHJlYWQKKyAgICAgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFsbF9jaHVua2VkKCkKKwogICAgICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgTm9uZToKICAgICAgICAgICAgICAgICBzID0gc2VsZi5mcC5yZWFkKCkKICAgICAgICAgICAgIGVsc2U6CkBAIC00OTgsNjEgKzUxMiw0OSBAQAogICAgICAgICAgICAgc2VsZi5jbG9zZSgpICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZwogICAgICAgICAgICAgcmV0dXJuIHMKIAorICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBpZiBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50b19jaHVua2VkKGIpCisKICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBhbXQgPiBzZWxmLmxlbmd0aDoKKyAgICAgICAgICAgIGlmIGxlbihiKSA+IHNlbGYubGVuZ3RoOgogICAgICAgICAgICAgICAgICMgY2xpcCB0aGUgcmVhZCB0byB0aGUgImVuZCBvZiByZXNwb25zZSIKLSAgICAgICAgICAgICAgICBhbXQgPSBzZWxmLmxlbmd0aAorICAgICAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KGIpWzA6c2VsZi5sZW5ndGhdCiAKICAgICAgICAgIyB3ZSBkbyBub3QgdXNlIF9zYWZlX3JlYWQoKSBoZXJlIGJlY2F1c2UgdGhpcyBtYXkgYmUgYSAud2lsbF9jbG9zZQogICAgICAgICAjIGNvbm5lY3Rpb24sIGFuZCB0aGUgdXNlciBpcyByZWFkaW5nIG1vcmUgYnl0ZXMgdGhhbiB3aWxsIGJlIHByb3ZpZGVkCiAgICAgICAgICMgKGZvciBleGFtcGxlLCByZWFkaW5nIGluIDFrIGNodW5rcykKLSAgICAgICAgcyA9IHNlbGYuZnAucmVhZChhbXQpCisgICAgICAgIG4gPSBzZWxmLmZwLnJlYWRpbnRvKGIpCiAgICAgICAgIGlmIHNlbGYubGVuZ3RoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5sZW5ndGggLT0gbGVuKHMpCisgICAgICAgICAgICBzZWxmLmxlbmd0aCAtPSBuCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5sZW5ndGg6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgIHJldHVybiBzCisgICAgICAgIHJldHVybiBuCiAKLSAgICBkZWYgX3JlYWRfY2h1bmtlZChzZWxmLCBhbXQpOgotICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCi0gICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKLSAgICAgICAgdmFsdWUgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLmZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKLSAgICAgICAgICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoImNodW5rIHNpemUiKQotICAgICAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoYiI7IikKLSAgICAgICAgICAgICAgICBpZiBpID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzppXSAjIHN0cmlwIGNodW5rLWV4dGVuc2lvbnMKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBpbnQobGluZSwgMTYpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYXMgcHJvdG9jb2wgc3luY2hyb25pc2F0aW9uIGlzCi0gICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgbG9zdAotICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQotICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIGFtdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCi0gICAgICAgICAgICBlbGlmIGFtdCA8IGNodW5rX2xlZnQ6Ci0gICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChhbXQpKQotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBhbXQKLSAgICAgICAgICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCi0gICAgICAgICAgICBlbGlmIGFtdCA9PSBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoYW10KSkKLSAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCi0gICAgICAgICAgICAgICAgYW10IC09IGNodW5rX2xlZnQKKyAgICBkZWYgX3JlYWRfbmV4dF9jaHVua19zaXplKHNlbGYpOgorICAgICAgICAjIFJlYWQgdGhlIG5leHQgY2h1bmsgc2l6ZSBmcm9tIHRoZSBmaWxlCisgICAgICAgIGxpbmUgPSBzZWxmLmZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKKyAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CisgICAgICAgICAgICByYWlzZSBMaW5lVG9vTG9uZygiY2h1bmsgc2l6ZSIpCisgICAgICAgIGkgPSBsaW5lLmZpbmQoYiI7IikKKyAgICAgICAgaWYgaSA+PSAwOgorICAgICAgICAgICAgbGluZSA9IGxpbmVbOmldICMgc3RyaXAgY2h1bmstZXh0ZW5zaW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gaW50KGxpbmUsIDE2KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYXMgcHJvdG9jb2wgc3luY2hyb25pc2F0aW9uIGlzCisgICAgICAgICAgICAjIHByb2JhYmx5IGxvc3QKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKLSAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKLQorICAgIGRlZiBfcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKHNlbGYpOgogICAgICAgICAjIHJlYWQgYW5kIGRpc2NhcmQgdHJhaWxlciB1cCB0byB0aGUgQ1JMRiB0ZXJtaW5hdG9yCiAgICAgICAgICMjIyBub3RlOiB3ZSBzaG91bGRuJ3QgaGF2ZSBhbnkgdHJhaWxlcnMhCiAgICAgICAgIHdoaWxlIFRydWU6CkBAIC01NjYsMTEgKzU2OCw3MiBAQAogICAgICAgICAgICAgaWYgbGluZSBpbiAoYidcclxuJywgYidcbicsIGInJyk6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgIGRlZiBfcmVhZGFsbF9jaHVua2VkKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCisgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKKyAgICAgICAgdmFsdWUgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQorICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChjaHVua19sZWZ0KSkKKworICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKKyAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKKworICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQorCiAgICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCiAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgICAgIHJldHVybiBiJycuam9pbih2YWx1ZSkKIAorICAgIGRlZiBfcmVhZGludG9fY2h1bmtlZChzZWxmLCBiKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CisKKyAgICAgICAgdG90YWxfYnl0ZXMgPSAwCisgICAgICAgIG12YiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGJ5dGVzKGJbMDp0b3RhbF9ieXRlc10pKQorCisgICAgICAgICAgICBpZiBsZW4obXZiKSA8IGNodW5rX2xlZnQ6CisgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQorICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgorICAgICAgICAgICAgZWxpZiBsZW4obXZiKSA9PSBjaHVua19sZWZ0OgorICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKKyAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMgKyBuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6Y2h1bmtfbGVmdF0KKyAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byh0ZW1wX212YikKKyAgICAgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCisgICAgICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgorCisgICAgICAgICAgICAjIHdlIHJlYWQgdGhlIHdob2xlIGNodW5rLCBnZXQgYW5vdGhlcgorICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAgICAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCisgICAgICAgICAgICBjaHVua19sZWZ0ID0gTm9uZQorCisgICAgICAgIHNlbGYuX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcigpCisKKyAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzCisKICAgICBkZWYgX3NhZmVfcmVhZChzZWxmLCBhbXQpOgogICAgICAgICAiIiJSZWFkIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkLCBjb21wZW5zYXRpbmcgZm9yIHBhcnRpYWwgcmVhZHMuCiAKQEAgLTU5NCw2ICs2NTcsMjIgQEAKICAgICAgICAgICAgIGFtdCAtPSBsZW4oY2h1bmspCiAgICAgICAgIHJldHVybiBiIiIuam9pbihzKQogCisgICAgZGVmIF9zYWZlX3JlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJTYW1lIGFzIF9zYWZlX3JlYWQsIGJ1dCBmb3IgcmVhZGluZyBpbnRvIGEgYnVmZmVyLiIiIgorICAgICAgICB0b3RhbF9ieXRlcyA9IDAKKyAgICAgICAgbXZiID0gbWVtb3J5dmlldyhiKQorICAgICAgICB3aGlsZSB0b3RhbF9ieXRlcyA8IGxlbihiKToKKyAgICAgICAgICAgIGlmIE1BWEFNT1VOVCA8IGxlbihtdmIpOgorICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6TUFYQU1PVU5UXQorICAgICAgICAgICAgICAgIG4gPSBzZWxmLmZwLnJlYWRpbnRvKHRlbXBfbXZiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuID0gc2VsZi5mcC5yZWFkaW50byhtdmIpCisgICAgICAgICAgICBpZiBub3QgbjoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhtdmJbMDp0b3RhbF9ieXRlc10pLCBsZW4oYikpCisgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCisgICAgICAgICAgICB0b3RhbF9ieXRlcyArPSBuCisgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcworCiAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZnAuZmlsZW5vKCkKIApAQCAtNzAwLDcgKzc3OSw3IEBACiAgICAgICAgIHNlbGYuc2VuZChjb25uZWN0X2J5dGVzKQogICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBzZWxmLl90dW5uZWxfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgaGVhZGVyX3N0ciA9ICIlczogJXNcclxuIiAlIChoZWFkZXIsIHZhbHVlKQotICAgICAgICAgICAgaGVhZGVyX2J5dGVzID0gaGVhZGVyX3N0ci5lbmNvZGUoImxhdGluMSIpCisgICAgICAgICAgICBoZWFkZXJfYnl0ZXMgPSBoZWFkZXJfc3RyLmVuY29kZSgibGF0aW4tMSIpCiAgICAgICAgICAgICBzZWxmLnNlbmQoaGVhZGVyX2J5dGVzKQogICAgICAgICBzZWxmLnNlbmQoYidcclxuJykKIApAQCAtOTQzLDcgKzEwMjIsNyBAQAogICAgICAgICB2YWx1ZXMgPSBsaXN0KHZhbHVlcykKICAgICAgICAgZm9yIGksIG9uZV92YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVzKToKICAgICAgICAgICAgIGlmIGhhc2F0dHIob25lX3ZhbHVlLCAnZW5jb2RlJyk6Ci0gICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gb25lX3ZhbHVlLmVuY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0gPSBvbmVfdmFsdWUuZW5jb2RlKCdsYXRpbi0xJykKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvbmVfdmFsdWUsIGludCk6CiAgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RyKG9uZV92YWx1ZSkuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgIHZhbHVlID0gYidcclxuXHQnLmpvaW4odmFsdWVzKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llamFyLnB5IGIvTGliL2h0dHAvY29va2llamFyLnB5CmluZGV4IGI2Y2ZjMzUuLjkwMWU3NjIgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZWphci5weQorKysgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKQEAgLTYyNSw3ICs2MjUsNyBAQAogICAgIHJldHVybiBwYXRoCiAKIGRlZiByZXF1ZXN0X3BvcnQocmVxdWVzdCk6Ci0gICAgaG9zdCA9IHJlcXVlc3QuZ2V0X2hvc3QoKQorICAgIGhvc3QgPSByZXF1ZXN0Lmhvc3QKICAgICBpID0gaG9zdC5maW5kKCc6JykKICAgICBpZiBpID49IDA6CiAgICAgICAgIHBvcnQgPSBob3N0W2krMTpdCkBAIC05NDksNyArOTQ5LDcgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBzZXRfb2tfdmVyaWZpYWJpbGl0eShzZWxmLCBjb29raWUsIHJlcXVlc3QpOgotICAgICAgICBpZiByZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSgpIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKKyAgICAgICAgaWYgcmVxdWVzdC51bnZlcmlmaWFibGUgYW5kIGlzX3RoaXJkX3BhcnR5KHJlcXVlc3QpOgogICAgICAgICAgICAgaWYgY29va2llLnZlcnNpb24gPiAwIGFuZCBzZWxmLnN0cmljdF9yZmMyOTY1X3VudmVyaWZpYWJsZToKICAgICAgICAgICAgICAgICBfZGVidWcoIiAgIHRoaXJkLXBhcnR5IFJGQyAyOTY1IGNvb2tpZSBkdXJpbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW52ZXJpZmlhYmxlIHRyYW5zYWN0aW9uIikKQEAgLTEwODgsNyArMTA4OCw3IEBACiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgcmV0dXJuX29rX3ZlcmlmaWFiaWxpdHkoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgcmVxdWVzdC5pc191bnZlcmlmaWFibGUoKSBhbmQgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CisgICAgICAgIGlmIHJlcXVlc3QudW52ZXJpZmlhYmxlIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKICAgICAgICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID4gMCBhbmQgc2VsZi5zdHJpY3RfcmZjMjk2NV91bnZlcmlmaWFibGU6CiAgICAgICAgICAgICAgICAgX2RlYnVnKCIgICB0aGlyZC1wYXJ0eSBSRkMgMjk2NSBjb29raWUgZHVyaW5nIHVudmVyaWZpYWJsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2FjdGlvbiIpCkBAIC0xMTAwLDcgKzExMDAsNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHJldHVybl9va19zZWN1cmUoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgY29va2llLnNlY3VyZSBhbmQgcmVxdWVzdC5nZXRfdHlwZSgpICE9ICJodHRwcyI6CisgICAgICAgIGlmIGNvb2tpZS5zZWN1cmUgYW5kIHJlcXVlc3QudHlwZSAhPSAiaHR0cHMiOgogICAgICAgICAgICAgX2RlYnVnKCIgICBzZWN1cmUgY29va2llIHdpdGggbm9uLXNlY3VyZSByZXF1ZXN0IikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llcy5weSBiL0xpYi9odHRwL2Nvb2tpZXMucHkKaW5kZXggZGRiY2JmOC4uZDI5MTY3OCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llcy5weQorKysgYi9MaWIvaHR0cC9jb29raWVzLnB5CkBAIC0xNTksNyArMTU5LDcgQEAKICMgICAgICAgX0xlZ2FsQ2hhcnMgICAgICAgaXMgdGhlIGxpc3Qgb2YgY2hhcnMgd2hpY2ggZG9uJ3QgcmVxdWlyZSAiJ3MKICMgICAgICAgX1RyYW5zbGF0b3IgICAgICAgaGFzaC10YWJsZSBmb3IgZmFzdCBxdW90aW5nCiAjCi1fTGVnYWxDaGFycyAgICAgICA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH4iCitfTGVnYWxDaGFycyAgICAgICA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH46IgogX1RyYW5zbGF0b3IgICAgICAgPSB7CiAgICAgJ1wwMDAnIDogJ1xcMDAwJywgICdcMDAxJyA6ICdcXDAwMScsICAnXDAwMicgOiAnXFwwMDInLAogICAgICdcMDAzJyA6ICdcXDAwMycsICAnXDAwNCcgOiAnXFwwMDQnLCAgJ1wwMDUnIDogJ1xcMDA1JywKZGlmZiAtLWdpdCBhL0xpYi9odHRwL3NlcnZlci5weSBiL0xpYi9odHRwL3NlcnZlci5weQppbmRleCA1NTY5MDM3Li5jNGFjNzAzIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9zZXJ2ZXIucHkKKysrIGIvTGliL2h0dHAvc2VydmVyLnB5CkBAIC0xMDAsMTEgKzEwMCwxNCBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxsaWIucGFyc2UKIGltcG9ydCBjb3B5CitpbXBvcnQgYXJncGFyc2UKKwogCiAjIERlZmF1bHQgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZQogREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gIiIiXAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+CiAgICAgICAgIDx0aXRsZT5FcnJvciByZXNwb25zZTwvdGl0bGU+CkBAIC0zNTIsNiArMzU1LDcgQEAKIAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlX29ubHkoMTAwKQorICAgICAgICBzZWxmLmZsdXNoX2hlYWRlcnMoKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIGhhbmRsZV9vbmVfcmVxdWVzdChzZWxmKToKQEAgLTQyOSw3ICs0MzMsOCBAQAogICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShjb250ZW50LmVuY29kZSgnVVRGLTgnLCAncmVwbGFjZScpKQogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Uoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKLSAgICAgICAgIiIiU2VuZCB0aGUgcmVzcG9uc2UgaGVhZGVyIGFuZCBsb2cgdGhlIHJlc3BvbnNlIGNvZGUuCisgICAgICAgICIiIkFkZCB0aGUgcmVzcG9uc2UgaGVhZGVyIHRvIHRoZSBoZWFkZXJzIGJ1ZmZlciBhbmQgbG9nIHRoZQorICAgICAgICByZXNwb25zZSBjb2RlLgogCiAgICAgICAgIEFsc28gc2VuZCB0d28gc3RhbmRhcmQgaGVhZGVycyB3aXRoIHRoZSBzZXJ2ZXIgc29mdHdhcmUKICAgICAgICAgdmVyc2lvbiBhbmQgdGhlIGN1cnJlbnQgZGF0ZS4KQEAgLTQ0OCwxNiArNDUzLDE5IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgotICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgoIiVzICVkICVzXHJcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYucHJvdG9jb2xfdmVyc2lvbiwgY29kZSwgbWVzc2FnZSkpLmVuY29kZSgnbGF0aW4xJywgJ3N0cmljdCcpKQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgorICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KKyAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgoIiVzICVkICVzXHJcbiIgJQorICAgICAgICAgICAgICAgICAgICAoc2VsZi5wcm90b2NvbF92ZXJzaW9uLCBjb2RlLCBtZXNzYWdlKSkuZW5jb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGluLTEnLCAnc3RyaWN0JykpCiAKICAgICBkZWYgc2VuZF9oZWFkZXIoc2VsZiwga2V5d29yZCwgdmFsdWUpOgotICAgICAgICAiIiJTZW5kIGEgTUlNRSBoZWFkZXIuIiIiCisgICAgICAgICIiIlNlbmQgYSBNSU1FIGhlYWRlciB0byB0aGUgaGVhZGVycyBidWZmZXIuIiIiCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIgPSBbXQogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICgiJXM6ICVzXHJcbiIgJSAoa2V5d29yZCwgdmFsdWUpKS5lbmNvZGUoJ2xhdGluMScsICdzdHJpY3QnKSkKKyAgICAgICAgICAgICAgICAoIiVzOiAlc1xyXG4iICUgKGtleXdvcmQsIHZhbHVlKSkuZW5jb2RlKCdsYXRpbi0xJywgJ3N0cmljdCcpKQogCiAgICAgICAgIGlmIGtleXdvcmQubG93ZXIoKSA9PSAnY29ubmVjdGlvbic6CiAgICAgICAgICAgICBpZiB2YWx1ZS5sb3dlcigpID09ICdjbG9zZSc6CkBAIC00NjksNiArNDc3LDEwIEBACiAgICAgICAgICIiIlNlbmQgdGhlIGJsYW5rIGxpbmUgZW5kaW5nIHRoZSBNSU1FIGhlYWRlcnMuIiIiCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CiAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlci5hcHBlbmQoYiJcclxuIikKKyAgICAgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCisKKyAgICBkZWYgZmx1c2hfaGVhZGVycyhzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGIiIi5qb2luKHNlbGYuX2hlYWRlcnNfYnVmZmVyKSkKICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KIApAQCAtNTE0LDcgKzUyNiw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzIC0gLSBbJXNdICVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5jbGllbnRfYWRkcmVzc1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5hZGRyZXNzX3N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ19kYXRlX3RpbWVfc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCVhcmdzKSkKIApAQCAtNTQ4LDE1ICs1NjAsOSBAQAogICAgICAgICAgICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXQogCiAgICAgZGVmIGFkZHJlc3Nfc3RyaW5nKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNsaWVudCBhZGRyZXNzIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4KKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjbGllbnQgYWRkcmVzcy4iIiIKIAotICAgICAgICBUaGlzIHZlcnNpb24gbG9va3MgdXAgdGhlIGZ1bGwgaG9zdG5hbWUgdXNpbmcgZ2V0aG9zdGJ5YWRkcigpLAotICAgICAgICBhbmQgdHJpZXMgdG8gZmluZCBhIG5hbWUgdGhhdCBjb250YWlucyBhdCBsZWFzdCBvbmUgZG90LgotCi0gICAgICAgICIiIgotCi0gICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLmNsaWVudF9hZGRyZXNzWzoyXQotICAgICAgICByZXR1cm4gc29ja2V0LmdldGZxZG4oaG9zdCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpZW50X2FkZHJlc3NbMF0KIAogICAgICMgRXNzZW50aWFsbHkgc3RhdGljIGNsYXNzIHZhcmlhYmxlcwogCkBAIC01NjksNyArNTc1LDcgQEAKIAogICAgICMgVGFibGUgbWFwcGluZyByZXNwb25zZSBjb2RlcyB0byBtZXNzYWdlczsgZW50cmllcyBoYXZlIHRoZQogICAgICMgZm9ybSB7Y29kZTogKHNob3J0bWVzc2FnZSwgbG9uZ21lc3NhZ2UpfS4KLSAgICAjIFNlZSBSRkMgMjYxNi4KKyAgICAjIFNlZSBSRkMgMjYxNiBhbmQgNjU4NS4KICAgICByZXNwb25zZXMgPSB7CiAgICAgICAgIDEwMDogKCdDb250aW51ZScsICdSZXF1ZXN0IHJlY2VpdmVkLCBwbGVhc2UgY29udGludWUnKSwKICAgICAgICAgMTAxOiAoJ1N3aXRjaGluZyBQcm90b2NvbHMnLApAQCAtNjI0LDYgKzYzMCwxMiBAQAogICAgICAgICAgICAgICAnQ2Fubm90IHNhdGlzZnkgcmVxdWVzdCByYW5nZS4nKSwKICAgICAgICAgNDE3OiAoJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCiAgICAgICAgICAgICAgICdFeHBlY3QgY29uZGl0aW9uIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuJyksCisgICAgICAgIDQyODogKCdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAorICAgICAgICAgICAgICAnVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwuJyksCisgICAgICAgIDQyOTogKCdUb28gTWFueSBSZXF1ZXN0cycsICdUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyAnCisgICAgICAgICAgICAgICdpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lICgicmF0ZSBsaW1pdGluZyIpLicpLAorICAgICAgICA0MzE6ICgnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsICdUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byAnCisgICAgICAgICAgICAgICdwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4nKSwKIAogICAgICAgICA1MDA6ICgnSW50ZXJuYWwgU2VydmVyIEVycm9yJywgJ1NlcnZlciBnb3QgaXRzZWxmIGluIHRyb3VibGUnKSwKICAgICAgICAgNTAxOiAoJ05vdCBJbXBsZW1lbnRlZCcsCkBAIC02MzQsNiArNjQ2LDggQEAKICAgICAgICAgNTA0OiAoJ0dhdGV3YXkgVGltZW91dCcsCiAgICAgICAgICAgICAgICdUaGUgZ2F0ZXdheSBzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIGEgdGltZWx5IHJlc3BvbnNlJyksCiAgICAgICAgIDUwNTogKCdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsICdDYW5ub3QgZnVsZmlsbCByZXF1ZXN0LicpLAorICAgICAgICA1MTE6ICgnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCisgICAgICAgICAgICAgICdUaGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzLicpLAogICAgICAgICB9CiAKIApAQCAtNzIyLDEwICs3MzYsMTYgQEAKICAgICAgICAgbGlzdC5zb3J0KGtleT1sYW1iZGEgYTogYS5sb3dlcigpKQogICAgICAgICByID0gW10KICAgICAgICAgZGlzcGxheXBhdGggPSBodG1sLmVzY2FwZSh1cmxsaWIucGFyc2UudW5xdW90ZShzZWxmLnBhdGgpKQotICAgICAgICByLmFwcGVuZCgnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPicpCi0gICAgICAgIHIuYXBwZW5kKCI8aHRtbD5cbjx0aXRsZT5EaXJlY3RvcnkgbGlzdGluZyBmb3IgJXM8L3RpdGxlPlxuIiAlIGRpc3BsYXlwYXRoKQotICAgICAgICByLmFwcGVuZCgiPGJvZHk+XG48aDI+RGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzPC9oMj5cbiIgJSBkaXNwbGF5cGF0aCkKLSAgICAgICAgci5hcHBlbmQoIjxocj5cbjx1bD5cbiIpCisgICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQorICAgICAgICB0aXRsZSA9ICdEaXJlY3RvcnkgbGlzdGluZyBmb3IgJXMnICUgZGlzcGxheXBhdGgKKyAgICAgICAgci5hcHBlbmQoJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgJworICAgICAgICAgICAgICAgICAnImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPicpCisgICAgICAgIHIuYXBwZW5kKCc8aHRtbD5cbjxoZWFkPicpCisgICAgICAgIHIuYXBwZW5kKCc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lcyI+JyAlIGVuYykKKyAgICAgICAgci5hcHBlbmQoJzx0aXRsZT4lczwvdGl0bGU+XG48L2hlYWQ+JyAlIHRpdGxlKQorICAgICAgICByLmFwcGVuZCgnPGJvZHk+XG48aDE+JXM8L2gxPicgJSB0aXRsZSkKKyAgICAgICAgci5hcHBlbmQoJzxocj5cbjx1bD4nKQogICAgICAgICBmb3IgbmFtZSBpbiBsaXN0OgogICAgICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKICAgICAgICAgICAgIGRpc3BsYXluYW1lID0gbGlua25hbWUgPSBuYW1lCkBAIC03MzYsMTEgKzc1NiwxMCBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZnVsbG5hbWUpOgogICAgICAgICAgICAgICAgIGRpc3BsYXluYW1lID0gbmFtZSArICJAIgogICAgICAgICAgICAgICAgICMgTm90ZTogYSBsaW5rIHRvIGEgZGlyZWN0b3J5IGRpc3BsYXlzIHdpdGggQCBhbmQgbGlua3Mgd2l0aCAvCi0gICAgICAgICAgICByLmFwcGVuZCgnPGxpPjxhIGhyZWY9IiVzIj4lczwvYT5cbicKKyAgICAgICAgICAgIHIuYXBwZW5kKCc8bGk+PGEgaHJlZj0iJXMiPiVzPC9hPjwvbGk+JwogICAgICAgICAgICAgICAgICAgICAlICh1cmxsaWIucGFyc2UucXVvdGUobGlua25hbWUpLCBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSkpKQotICAgICAgICByLmFwcGVuZCgiPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbiIpCi0gICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQotICAgICAgICBlbmNvZGVkID0gJycuam9pbihyKS5lbmNvZGUoZW5jKQorICAgICAgICByLmFwcGVuZCgnPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbicpCisgICAgICAgIGVuY29kZWQgPSAnXG4nLmpvaW4ocikuZW5jb2RlKGVuYykKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgICBmLndyaXRlKGVuY29kZWQpCiAgICAgICAgIGYuc2VlaygwKQpAQCAtODg4LDExICs5MDcsNyBAQAogCiBkZWYgZXhlY3V0YWJsZShwYXRoKToKICAgICAiIiJUZXN0IGZvciBleGVjdXRhYmxlIGZpbGUuIiIiCi0gICAgdHJ5OgotICAgICAgICBzdCA9IG9zLnN0YXQocGF0aCkKLSAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBzdC5zdF9tb2RlICYgMG8xMTEgIT0gMAorICAgIHJldHVybiBvcy5hY2Nlc3MocGF0aCwgb3MuWF9PSykKIAogCiBjbGFzcyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIoU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTEwMDgsNyArMTAyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bmFtZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpc3B5ID0gc2VsZi5pc19weXRob24oc2NyaXB0bmFtZSkKLSAgICAgICAgaWYgbm90IGlzcHk6CisgICAgICAgIGlmIHNlbGYuaGF2ZV9mb3JrIG9yIG5vdCBpc3B5OgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfZXhlY3V0YWJsZShzY3JpcHRmaWxlKToKICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAzLCAiQ0dJIHNjcmlwdCBpcyBub3QgZXhlY3V0YWJsZSAoJXIpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCkBAIC0xMDI5LDkgKzEwNDQsNiBAQAogICAgICAgICBlbnZbJ1NDUklQVF9OQU1FJ10gPSBzY3JpcHRuYW1lCiAgICAgICAgIGlmIHF1ZXJ5OgogICAgICAgICAgICAgZW52WydRVUVSWV9TVFJJTkcnXSA9IHF1ZXJ5Ci0gICAgICAgIGhvc3QgPSBzZWxmLmFkZHJlc3Nfc3RyaW5nKCkKLSAgICAgICAgaWYgaG9zdCAhPSBzZWxmLmNsaWVudF9hZGRyZXNzWzBdOgotICAgICAgICAgICAgZW52WydSRU1PVEVfSE9TVCddID0gaG9zdAogICAgICAgICBlbnZbJ1JFTU9URV9BRERSJ10gPSBzZWxmLmNsaWVudF9hZGRyZXNzWzBdCiAgICAgICAgIGF1dGhvcml6YXRpb24gPSBzZWxmLmhlYWRlcnMuZ2V0KCJhdXRob3JpemF0aW9uIikKICAgICAgICAgaWYgYXV0aG9yaXphdGlvbjoKQEAgLTEwODMsNiArMTA5NSw3IEBACiAgICAgICAgICAgICBlbnYuc2V0ZGVmYXVsdChrLCAiIikKIAogICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAiU2NyaXB0IG91dHB1dCBmb2xsb3dzIikKKyAgICAgICAgc2VsZi5mbHVzaF9oZWFkZXJzKCkKIAogICAgICAgICBkZWNvZGVkX3F1ZXJ5ID0gcXVlcnkucmVwbGFjZSgnKycsICcgJykKIApAQCAtMTE2MiwxOCArMTE3NSwxMyBAQAogCiAKIGRlZiB0ZXN0KEhhbmRsZXJDbGFzcyA9IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICBTZXJ2ZXJDbGFzcyA9IEhUVFBTZXJ2ZXIsIHByb3RvY29sPSJIVFRQLzEuMCIpOgorICAgICAgICAgU2VydmVyQ2xhc3MgPSBIVFRQU2VydmVyLCBwcm90b2NvbD0iSFRUUC8xLjAiLCBwb3J0PTgwMDApOgogICAgICIiIlRlc3QgdGhlIEhUVFAgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLgogCiAgICAgVGhpcyBydW5zIGFuIEhUVFAgc2VydmVyIG9uIHBvcnQgODAwMCAob3IgdGhlIGZpcnN0IGNvbW1hbmQgbGluZQogICAgIGFyZ3VtZW50KS4KIAogICAgICIiIgotCi0gICAgaWYgc3lzLmFyZ3ZbMTpdOgotICAgICAgICBwb3J0ID0gaW50KHN5cy5hcmd2WzFdKQotICAgIGVsc2U6Ci0gICAgICAgIHBvcnQgPSA4MDAwCiAgICAgc2VydmVyX2FkZHJlc3MgPSAoJycsIHBvcnQpCiAKICAgICBIYW5kbGVyQ2xhc3MucHJvdG9jb2xfdmVyc2lvbiA9IHByb3RvY29sCkBAIC0xMTg5LDQgKzExOTcsMTUgQEAKICAgICAgICAgc3lzLmV4aXQoMCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0KEhhbmRsZXJDbGFzcz1TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2dpJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUnVuIGFzIENHSSBTZXJ2ZXInKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3BvcnQnLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ODAwMCwgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXJncz0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZ5IGFsdGVybmF0ZSBwb3J0IFtkZWZhdWx0OiA4MDAwXScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBhcmdzLmNnaToKKyAgICAgICAgdGVzdChIYW5kbGVyQ2xhc3M9Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLCBwb3J0PWFyZ3MucG9ydCkKKyAgICBlbHNlOgorICAgICAgICB0ZXN0KEhhbmRsZXJDbGFzcz1TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIsIHBvcnQ9YXJncy5wb3J0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CmluZGV4IGU0YzFhZmYuLjkyOWQzNTggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKQEAgLTksOSArOSw2IEBACiAKIGZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgogCi0jIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhIGZpbGUgbmFtZSAod2l0aG91dCBhIHBhdGgKLSMgc2VwYXJhdG9yKQotRklMRU5BTUVfQ0hBUlMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyBvcy5jdXJkaXIgKyAiLl9+IyQ6LSIKICMgVGhpcyBzdHJpbmcgaW5jbHVkZXMgYWxsIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIKIElEX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKaW5kZXggZTE4ODE5Mi4uZTRjY2I0MiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKQEAgLTIxLDEwICsyMSwxMSBAQAogICAgICMgMXN0ICdmaWxlJyBjb2xvcml6ZWQgbm9ybWFsLCAybmQgYXMgYnVpbHRpbiwgM3JkIGFzIHN0cmluZwogICAgIGJ1aWx0aW4gPSByIihbXi4nXCJcXCNdXGJ8XikiICsgYW55KCJCVUlMVElOIiwgYnVpbHRpbmxpc3QpICsgciJcYiIKICAgICBjb21tZW50ID0gYW55KCJDT01NRU5UIiwgW3IiI1teXG5dKiJdKQotICAgIHNxc3RyaW5nID0gciIoXGJbclJiQl0pPydbXidcXFxuXSooXFwuW14nXFxcbl0qKSonPyIKLSAgICBkcXN0cmluZyA9IHInKFxiW3JSYkJdKT8iW14iXFxcbl0qKFxcLlteIlxcXG5dKikqIj8nCi0gICAgc3Ezc3RyaW5nID0gciIoXGJbclJiQl0pPycnJ1teJ1xcXSooKFxcLnwnKD8hJycpKVteJ1xcXSopKignJycpPyIKLSAgICBkcTNzdHJpbmcgPSByJyhcYltyUmJCXSk/IiIiW14iXFxdKigoXFwufCIoPyEiIikpW14iXFxdKikqKCIiIik/JworICAgIHN0cmluZ3ByZWZpeCA9IHIiKFxicnx1fHVyfFJ8VXxVUnxVcnx1UnxifEJ8YnJ8QnJ8YlJ8QlJ8cmJ8ckJ8UmJ8UkIpPyIKKyAgICBzcXN0cmluZyA9IHN0cmluZ3ByZWZpeCArIHIiJ1teJ1xcXG5dKihcXC5bXidcXFxuXSopKic/IgorICAgIGRxc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciciW14iXFxcbl0qKFxcLlteIlxcXG5dKikqIj8nCisgICAgc3Ezc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciInJydbXidcXF0qKChcXC58Jyg/IScnKSlbXidcXF0qKSooJycnKT8iCisgICAgZHEzc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciciIiJbXiJcXF0qKChcXC58Iig/ISIiKSlbXiJcXF0qKSooIiIiKT8nCiAgICAgc3RyaW5nID0gYW55KCJTVFJJTkciLCBbc3Ezc3RyaW5nLCBkcTNzdHJpbmcsIHNxc3RyaW5nLCBkcXN0cmluZ10pCiAgICAgcmV0dXJuIGt3ICsgInwiICsgYnVpbHRpbiArICJ8IiArIGNvbW1lbnQgKyAifCIgKyBzdHJpbmcgK1wKICAgICAgICAgICAgInwiICsgYW55KCJTWU5DIiwgW3IiXG4iXSkKQEAgLTE0OSw5ICsxNTAsOSBAQAogICAgICAgICAgICAgc2VsZi5zdG9wX2NvbG9yaXppbmcgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5jb2xvcml6aW5nID0gVHJ1ZQogICAgICAgICAgICAgaWYgREVCVUc6IHByaW50KCJjb2xvcml6aW5nLi4uIikKLSAgICAgICAgICAgIHQwID0gdGltZS5jbG9jaygpCisgICAgICAgICAgICB0MCA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgICAgIHNlbGYucmVjb2xvcml6ZV9tYWluKCkKLSAgICAgICAgICAgIHQxID0gdGltZS5jbG9jaygpCisgICAgICAgICAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgICAgIGlmIERFQlVHOiBwcmludCgiJS4zZiBzZWNvbmRzIiAlICh0MS10MCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLmNvbG9yaXppbmcgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CmluZGV4IGJlYzIxOTEuLjZiZGNlY2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKQEAgLTEsOCArMSw5IEBACi1pbXBvcnQgc3lzCitpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwotaW1wb3J0IGltcAoraW1wb3J0IHN5cwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CkBAIC0yNyw4ICsyOCw3IEBACiAgICAgIkZvcm1hdCBzeXMudmVyc2lvbl9pbmZvIHRvIHByb2R1Y2UgdGhlIFNwaGlueCB2ZXJzaW9uIHN0cmluZyB1c2VkIHRvIGluc3RhbGwgdGhlIGNobSBkb2NzIgogICAgIG1ham9yLCBtaW5vciwgbWljcm8sIGxldmVsLCBzZXJpYWwgPSBzeXMudmVyc2lvbl9pbmZvCiAgICAgcmVsZWFzZSA9ICclcyVzJyAlIChtYWpvciwgbWlub3IpCi0gICAgaWYgbWljcm86Ci0gICAgICAgIHJlbGVhc2UgKz0gJyVzJyAlIChtaWNybywpCisgICAgcmVsZWFzZSArPSAnJXMnICUgKG1pY3JvLCkKICAgICBpZiBsZXZlbCA9PSAnY2FuZGlkYXRlJzoKICAgICAgICAgcmVsZWFzZSArPSAncmMlcycgJSAoc2VyaWFsLCkKICAgICBlbGlmIGxldmVsICE9ICdmaW5hbCc6CkBAIC0xMjAsNyArMTIwLDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgaWYgRWRpdG9yV2luZG93LmhlbHBfdXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICBkb2Nob21lID0gIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnRG9jJywgJ2luZGV4Lmh0bWwnKQorICAgICAgICAgICAgZG9jaG9tZSA9ICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAnRG9jJywgJ2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLmNvdW50KCdsaW51eCcpOgogICAgICAgICAgICAgICAgICMgbG9vayBmb3IgaHRtbCBkb2NzIGluIGEgY291cGxlIG9mIHN0YW5kYXJkIHBsYWNlcwogICAgICAgICAgICAgICAgIHB5dmVyID0gJ3B5dGhvbi1kb2NzLScgKyAnJXMuJXMuJXMnICUgc3lzLnZlcnNpb25faW5mb1s6M10KQEAgLTEzMSwxMyArMTMxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsIHB5dmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEb2MnLCAnaW5kZXguaHRtbCcpCiAgICAgICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6Ci0gICAgICAgICAgICAgICAgY2htZmlsZSA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnRG9jJywKKyAgICAgICAgICAgICAgICBjaG1maWxlID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ0RvYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uJXMuY2htJyAlIF9zcGhpbnhfdmVyc2lvbigpKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNobWZpbGUpOgogICAgICAgICAgICAgICAgICAgICBkb2Nob21lID0gY2htZmlsZQogICAgICAgICAgICAgZWxpZiBtYWNvc3hTdXBwb3J0LnJ1bm5pbmdBc09TWEFwcCgpOgogICAgICAgICAgICAgICAgICMgZG9jdW1lbnRhdGlvbiBpcyBzdG9yZWQgaW5zaWRlIHRoZSBweXRob24gZnJhbWV3b3JrCi0gICAgICAgICAgICAgICAgZG9jaG9tZSA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LAorICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgJ1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qL0RvY3VtZW50YXRpb24vaW5kZXguaHRtbCcpCiAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5ub3JtcGF0aChkb2Nob21lKQogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZG9jaG9tZSk6CkBAIC0xMDA1LDcgKzEwMDUsMTAgQEAKIAogICAgIGRlZiBsb2FkX2V4dGVuc2lvbihzZWxmLCBuYW1lKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbXSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHByaW50KCJcbkZhaWxlZCB0byBpbXBvcnQgZXh0ZW5zaW9uOiAiLCBuYW1lKQogICAgICAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weSBiL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQppbmRleCA5NTI4YzlhLi5lYzUwZWIyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CkBAIC00ODUsNiArNDg1LDggQEAKICAgICAgICAgKCJBbGwgZmlsZXMiLCAiKiIpLAogICAgICAgICBdCiAKKyAgICBkZWZhdWx0ZXh0ZW5zaW9uID0gJy5weScgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGVsc2UgJycKKwogICAgIGRlZiBhc2tvcGVuZmlsZShzZWxmKToKICAgICAgICAgZGlyLCBiYXNlID0gc2VsZi5kZWZhdWx0ZmlsZW5hbWUoIm9wZW4iKQogICAgICAgICBpZiBub3Qgc2VsZi5vcGVuZGlhbG9nOgpAQCAtNTA4LDggKzUxMCwxMCBAQAogICAgIGRlZiBhc2tzYXZlZmlsZShzZWxmKToKICAgICAgICAgZGlyLCBiYXNlID0gc2VsZi5kZWZhdWx0ZmlsZW5hbWUoInNhdmUiKQogICAgICAgICBpZiBub3Qgc2VsZi5zYXZlZGlhbG9nOgotICAgICAgICAgICAgc2VsZi5zYXZlZGlhbG9nID0gdGtGaWxlRGlhbG9nLlNhdmVBcyhtYXN0ZXI9c2VsZi50ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxldHlwZXM9c2VsZi5maWxldHlwZXMpCisgICAgICAgICAgICBzZWxmLnNhdmVkaWFsb2cgPSB0a0ZpbGVEaWFsb2cuU2F2ZUFzKAorICAgICAgICAgICAgICAgICAgICBtYXN0ZXI9c2VsZi50ZXh0LAorICAgICAgICAgICAgICAgICAgICBmaWxldHlwZXM9c2VsZi5maWxldHlwZXMsCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRleHRlbnNpb249c2VsZi5kZWZhdWx0ZXh0ZW5zaW9uKQogICAgICAgICBmaWxlbmFtZSA9IHNlbGYuc2F2ZWRpYWxvZy5zaG93KGluaXRpYWxkaXI9ZGlyLCBpbml0aWFsZmlsZT1iYXNlKQogICAgICAgICByZXR1cm4gZmlsZW5hbWUKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTkVXUy50eHQgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dAppbmRleCBmMjM0YjY0Li5mNmU4OTE3ZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTkVXUy50eHQKKysrIGIvTGliL2lkbGVsaWIvTkVXUy50eHQKQEAgLTEsMTAgKzEsMjMgQEAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjIuND8KK1doYXQncyBOZXcgaW4gSURMRSAzLjMuMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworLSBJc3N1ZSAjMTYyMjY6IEZpeCBJRExFIFBhdGggQnJvd3NlciBjcmFzaC4KKyAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQorCistIElzc3VlICMxNTg1MzogUHJldmVudCBJRExFIGNyYXNoIG9uIE9TIFggd2hlbiBvcGVuaW5nIFByZWZlcmVuY2VzIG1lbnUKKyAgd2l0aCBjZXJ0YWluIHZlcnNpb25zIG9mIFRrIDguNS4gIEluaXRpYWwgcGF0Y2ggYnkgS2V2aW4gV2FsemVyLgorCisKK1doYXQncyBOZXcgaW4gSURMRSAzLjMuMD8KID09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLSBJc3N1ZSAjNzE2MzogUHJvcGFnYXRlIHJldHVybiB2YWx1ZSBvZiBzeXMuc3Rkb3V0LndyaXRlLgogCiAtIElzc3VlICMxNTMxODogUHJldmVudCB3cml0aW5nIHRvIHN5cy5zdGRpbi4KIAorLSBJc3N1ZSAjNDgzMjogTW9kaWZ5IElETEUgdG8gc2F2ZSBmaWxlcyB3aXRoIC5weSBleHRlbnNpb24gYnkKKyAgZGVmYXVsdCBvbiBXaW5kb3dzIGFuZCBPUyBYIChUayA4LjUpIGFzIGl0IGFscmVhZHkgZG9lcyB3aXRoIFgxMSBUay4KKwogLSBJc3N1ZSAjMTM1MzIsICMxNTMxOTogQ2hlY2sgdGhhdCBhcmd1bWVudHMgdG8gc3lzLnN0ZG91dC53cml0ZSBhcmUgc3RyaW5ncy4KIAogLSBJc3N1ZSAjIDEyNTEwOiBBdHRlbXB0IHRvIGdldCBjZXJ0YWluIHRvb2wgdGlwcyBubyBsb25nZXIgY3Jhc2hlcyBJRExFLgpAQCAtMTgsMTUgKzMxLDEwIEBACiAtIElzc3VlICMxNDkzNzogUGVyZm9ybSBhdXRvLWNvbXBsZXRpb24gb2YgZmlsZW5hbWVzIGluIHN0cmluZ3MgZXZlbiBmb3IKICAgbm9uLUFTQ0lJIGZpbGVuYW1lcy4gTGlrZXdpc2UgZm9yIGlkZW50aWZpZXJzLgogCi0tIElzc3VlICMxNDAxODogVXBkYXRlIGNoZWNrcyBmb3IgdW5zdGFibGUgc3lzdGVtIFRjbC9UayB2ZXJzaW9ucyBvbiBPUyBYCi0gIHRvIGluY2x1ZGUgdmVyc2lvbnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNyBhbmQgMTAuOCBpbiBhZGRpdGlvbiB0byAxMC42LgorLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KKyAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KIAotLSBJc3N1ZSAjMTU4NTM6IFByZXZlbnQgSURMRSBjcmFzaCBvbiBPUyBYIHdoZW4gb3BlbmluZyBQcmVmZXJlbmNlcyBtZW51Ci0gIHdpdGggY2VydGFpbiB2ZXJzaW9ucyBvZiBUayA4LjUuICBJbml0aWFsIHBhdGNoIGJ5IEtldmluIFdhbHplci4KLQotCi1XaGF0J3MgTmV3IGluIElETEUgMy4yLjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09CistIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIGBweXRob24gLW0gaWRsZWxpYmAKIAogLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKICAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZApAQCAtMzYsNiArNDQsOSBAQAogLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwogICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKS4KIAorLSBJc3N1ZSAjMTQwMTg6IFVwZGF0ZSBjaGVja3MgZm9yIHVuc3RhYmxlIHN5c3RlbSBUY2wvVGsgdmVyc2lvbnMgb24gT1MgWAorICB0byBpbmNsdWRlIHZlcnNpb25zIHNoaXBwZWQgd2l0aCBPUyBYIDEwLjcgYW5kIDEwLjggaW4gYWRkaXRpb24gdG8gMTAuNi4KKwogCiBXaGF0J3MgTmV3IGluIElETEUgMy4yLjE/CiA9PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CmluZGV4IGQ4OGE0OGUuLjU1YmYxYWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogCiBmcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZUl0ZW0KIGZyb20gaWRsZWxpYi5DbGFzc0Jyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCkBAIC03MCw5ICs3MSwxMSBAQAogCiAgICAgZGVmIGxpc3Rtb2R1bGVzKHNlbGYsIGFsbG5hbWVzKToKICAgICAgICAgbW9kdWxlcyA9IHt9Ci0gICAgICAgIHN1ZmZpeGVzID0gaW1wLmdldF9zdWZmaXhlcygpCisgICAgICAgIHN1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XQogICAgICAgICBzb3J0ZWQgPSBbXQotICAgICAgICBmb3Igc3VmZiwgbW9kZSwgZmxhZyBpbiBzdWZmaXhlczoKKyAgICAgICAgZm9yIHN1ZmYgaW4gc3VmZml4ZXM6CiAgICAgICAgICAgICBpID0gLWxlbihzdWZmKQogICAgICAgICAgICAgZm9yIG5hbWUgaW4gYWxsbmFtZXNbOl06CiAgICAgICAgICAgICAgICAgbm9ybWVkX25hbWUgPSBvcy5wYXRoLm5vcm1jYXNlKG5hbWUpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5IGIvTGliL2lkbGVsaWIvUHlTaGVsbC5weQppbmRleCA4OGMwMzkwLi41MGQ2MTgyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKQEAgLTQ3Nyw2ICs0NzcsMTAgQEAKIAogICAgIGRlZiBraWxsX3N1YnByb2Nlc3Moc2VsZik6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucnBjY2x0Lmxpc3RlbmluZ19zb2NrLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBubyBzb2NrZXQKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5ycGNjbHQuY2xvc2UoKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIG5vIHNvY2tldAogICAgICAgICAgICAgcGFzcwpAQCAtMTAwNSw2ICsxMDA5LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5vc3ViID0gIj09PT0gTm8gU3VicHJvY2VzcyA9PT09IgorICAgICAgICAgICAgc3lzLmRpc3BsYXlob29rID0gcnBjLmRpc3BsYXlob29rCisKICAgICAgICAgc2VsZi53cml0ZSgiUHl0aG9uICVzIG9uICVzXG4lc1xuJXMiICUKICAgICAgICAgICAgICAgICAgICAoc3lzLnZlcnNpb24sIHN5cy5wbGF0Zm9ybSwgc2VsZi5DT1BZUklHSFQsIG5vc3ViKSkKICAgICAgICAgc2VsZi5zaG93cHJvbXB0KCkKQEAgLTEyMjcsNiArMTIzMywxNiBAQAogICAgICAgICBzZWxmLnNldF9saW5lX2FuZF9jb2x1bW4oKQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMsIHRhZ3M9KCkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHN0cikgYW5kIGxlbihzKSBhbmQgbWF4KHMpID4gJ1x1ZmZmZic6CisgICAgICAgICAgICAjIFRrIGRvZXNuJ3Qgc3VwcG9ydCBvdXRwdXR0aW5nIG5vbi1CTVAgY2hhcmFjdGVycworICAgICAgICAgICAgIyBMZXQncyBhc3N1bWUgd2hhdCBwcmludGVkIHN0cmluZyBpcyBub3QgdmVyeSBsb25nLAorICAgICAgICAgICAgIyBmaW5kIGZpcnN0IG5vbi1CTVAgY2hhcmFjdGVyIGFuZCBjb25zdHJ1Y3QgaW5mb3JtYXRpdmUKKyAgICAgICAgICAgICMgVW5pY29kZUVuY29kZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIGZvciBzdGFydCwgY2hhciBpbiBlbnVtZXJhdGUocyk6CisgICAgICAgICAgICAgICAgaWYgY2hhciA+ICdcdWZmZmYnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVuY29kZUVycm9yKCJVQ1MtMiIsIGNoYXIsIHN0YXJ0LCBzdGFydCsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOb24tQk1QIGNoYXJhY3RlciBub3Qgc3VwcG9ydGVkIGluIFRrJykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi50ZXh0Lm1hcmtfZ3Jhdml0eSgiaW9tYXJrIiwgInJpZ2h0IikKICAgICAgICAgICAgIGNvdW50ID0gT3V0cHV0V2luZG93LndyaXRlKHNlbGYsIHMsIHRhZ3MsICJpb21hcmsiKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weSBiL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKaW5kZXggMThjZTk2NS4uNTI4YWRmNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CkBAIC0xNTAsMTYgKzE1MCwxNiBAQAogICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBUb28gb2Z0ZW4gdGhpcyBkaXNjYXJkcyBhcmd1bWVudHMgdGhlIHVzZXIganVzdCBzZXQuLi4KICAgICAgICAgaW50ZXJwLnJ1bmNvbW1hbmQoIiIiaWYgMToKLSAgICAgICAgICAgIF9maWxlbmFtZSA9ICVyCisgICAgICAgICAgICBfX2ZpbGVfXyA9IHtmaWxlbmFtZSFyfQogICAgICAgICAgICAgaW1wb3J0IHN5cyBhcyBfc3lzCiAgICAgICAgICAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGJhc2VuYW1lIGFzIF9iYXNlbmFtZQogICAgICAgICAgICAgaWYgKG5vdCBfc3lzLmFyZ3Ygb3IKLSAgICAgICAgICAgICAgICBfYmFzZW5hbWUoX3N5cy5hcmd2WzBdKSAhPSBfYmFzZW5hbWUoX2ZpbGVuYW1lKSk6Ci0gICAgICAgICAgICAgICAgX3N5cy5hcmd2ID0gW19maWxlbmFtZV0KKyAgICAgICAgICAgICAgICBfYmFzZW5hbWUoX3N5cy5hcmd2WzBdKSAhPSBfYmFzZW5hbWUoX19maWxlX18pKToKKyAgICAgICAgICAgICAgICBfc3lzLmFyZ3YgPSBbX19maWxlX19dCiAgICAgICAgICAgICBpbXBvcnQgb3MgYXMgX29zCi0gICAgICAgICAgICBfb3MuY2hkaXIoJXIpCi0gICAgICAgICAgICBkZWwgX2ZpbGVuYW1lLCBfc3lzLCBfYmFzZW5hbWUsIF9vcwotICAgICAgICAgICAgXG4iIiIgJSAoZmlsZW5hbWUsIGRpcm5hbWUpKQorICAgICAgICAgICAgX29zLmNoZGlyKHtkaXJuYW1lIXJ9KQorICAgICAgICAgICAgZGVsIF9zeXMsIF9iYXNlbmFtZSwgX29zCisgICAgICAgICAgICBcbiIiIi5mb3JtYXQoZmlsZW5hbWU9ZmlsZW5hbWUsIGRpcm5hbWU9ZGlybmFtZSkpCiAgICAgICAgIGludGVycC5wcmVwZW5kX3N5c3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICMgWFhYIEtCSyAwM0p1bDA0IFdoZW4gcnVuIHcvbyBzdWJwcm9jZXNzLCBydW50aW1lIHdhcm5pbmdzIHN0aWxsCiAgICAgICAgICMgICAgICAgICBnbyB0byBfX3N0ZGVycl9fLiAgV2l0aCBzdWJwcm9jZXNzLCB0aGV5IGdvIHRvIHRoZSBzaGVsbC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5IGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2NmYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsOSBAQAorIiIiCitJRExFIG1haW4gZW50cnkgcG9pbnQKKworUnVuIElETEUgYXMgcHl0aG9uIC1tIGlkbGVsaWIKKyIiIgorCisKK2ltcG9ydCBpZGxlbGliLlB5U2hlbGwKK2lkbGVsaWIuUHlTaGVsbC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkgYi9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CmluZGV4IGRhOTI3MjYuLjQwNDkwMDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQpAQCAtMTQ1LDcgKzE0NSw4IEBACiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCiAgICAgICAgICAgICAgICAgY2ZnRmlsZSA9IG9wZW4oZm5hbWUsICd3JykKLSAgICAgICAgICAgIHNlbGYud3JpdGUoY2ZnRmlsZSkKKyAgICAgICAgICAgIHdpdGggY2ZnRmlsZToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGNmZ0ZpbGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLlJlbW92ZUZpbGUoKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQppbmRleCAxNzQ1NWRiLi44ZDgzMTdkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKQEAgLTEgKzEgQEAKLUlETEVfVkVSU0lPTiA9ICIzLjIuMyIKK0lETEVfVkVSU0lPTiA9ICIzLjMuMCIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkgYi9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CmluZGV4IDk2OTA0NDIuLjY3MDY5ZmEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKKysrIGIvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQpAQCAtMTIsMTIgKzEyLDIyIEBACiBkZWYgcnVubmluZ0FzT1NYQXBwKCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIFB5dGhvbiBpcyBydW5uaW5nIGZyb20gd2l0aGluIGFuIGFwcCBvbiBPU1guCi0gICAgSWYgc28sIGFzc3VtZSB0aGF0IFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBBcXVhIFRjbC9UayByYXRoZXIgdGhhbgotICAgIFgxMSBUY2wvVGsuCisgICAgSWYgc28sIHRoZSB2YXJpb3VzIE9TIFggY3VzdG9taXphdGlvbnMgd2lsbCBiZSB0cmlnZ2VyZWQgbGF0ZXIgKG1lbnUKKyAgICBmaXh1cCwgZXQgYWwpLiAgKE9yaWdpbmFsbHksIHRoaXMgdGVzdCB3YXMgc3VwcG9zZWQgdG8gY29uZGl0aW9uCisgICAgYmVoYXZpb3Igb24gd2hldGhlciBJRExFIHdhcyBydW5uaW5nIHVuZGVyIEFxdWEgVGsgcmF0aGVyIHRoYW4KKyAgICB1bmRlciBYMTEgVGsgYnV0IHRoYXQgZG9lcyBub3Qgd29yayBzaW5jZSBhIGZyYW1ld29yayBidWlsZAorICAgIGNvdWxkIGJlIGxpbmtlZCB3aXRoIFgxMS4gIEZvciBzZXZlcmFsIHJlbGVhc2VzLCB0aGlzIHRlc3QgYWN0dWFsbHkKKyAgICBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHdoZXRoZXIgSURMRSBpcyBydW5uaW5nIGZyb20gYSBmcmFtZXdvcmsgb3IKKyAgICBub3QuICBBcyBhIGZ1dHVyZSBlbmhhbmNlbWVudCwgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgd2hldGhlciB0aGVyZQorICAgIHNob3VsZCBiZSBhIGRpZmZlcmVuY2UgYmFzZWQgb24gZnJhbWV3b3JrIGFuZCBhbnkgbmVlZGVkIFgxMSBhZGFwdGlvbnMKKyAgICBzaG91bGQgYmUgbWFkZSBkZXBlbmRlbnQgb24gYSBuZXcgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSB0ZXN0cyBmb3IgWDExLikKICAgICAiIiIKICAgICBnbG9iYWwgX2FwcGJ1bmRsZQogICAgIGlmIF9hcHBidW5kbGUgaXMgTm9uZToKLSAgICAgICAgX2FwcGJ1bmRsZSA9IChzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICcuYXBwJyBpbiBzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgX2FwcGJ1bmRsZSA9IHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJworICAgICAgICBpZiBfYXBwYnVuZGxlOgorICAgICAgICAgICAgaW1wb3J0IHN5c2NvbmZpZworICAgICAgICAgICAgX2FwcGJ1bmRsZSA9IGJvb2woc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKSkKICAgICByZXR1cm4gX2FwcGJ1bmRsZQogCiBfY2FyYm9uYXF1YXRrID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnBjLnB5IGIvTGliL2lkbGVsaWIvcnBjLnB5CmluZGV4IGRlZjQzOTQuLjc3Y2IzYWMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3JwYy5weQorKysgYi9MaWIvaWRsZWxpYi9ycGMucHkKQEAgLTQwLDYgKzQwLDcgQEAKIGltcG9ydCBjb3B5cmVnCiBpbXBvcnQgdHlwZXMKIGltcG9ydCBtYXJzaGFsCitpbXBvcnQgYnVpbHRpbnMKIAogCiBkZWYgdW5waWNrbGVfY29kZShtcyk6CkBAIC0xOTYsOCArMTk3LDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICgiRVJST1IiLCAiVW5zdXBwb3J0ZWQgbWVzc2FnZSB0eXBlOiAlcyIgJSBob3cpCiAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgogICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICByZXR1cm4gKCJDQUxMRVhDIiwgZXgpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIG1zZyA9ICIqKiogSW50ZXJuYWwgRXJyb3I6IHJwYy5weTpTb2NrZXRJTy5sb2NhbGNhbGwoKVxuXG4iXAogICAgICAgICAgICAgICAgICAgIiBPYmplY3Q6ICVzIFxuIE1ldGhvZDogJXMgXG4gQXJnczogJXNcbiIKQEAgLTI1Nyw2ICsyNjIsOSBAQAogICAgICAgICBpZiBob3cgPT0gIkVSUk9SIjoKICAgICAgICAgICAgIHNlbGYuZGVidWcoImRlY29kZXJlc3BvbnNlOiBJbnRlcm5hbCBFUlJPUjoiLCB3aGF0KQogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKHdoYXQpCisgICAgICAgIGlmIGhvdyA9PSAiQ0FMTEVYQyI6CisgICAgICAgICAgICBzZWxmLmRlYnVnKCJkZWNvZGVyZXNwb25zZTogQ2FsbCBFeGNlcHRpb246Iiwgd2hhdCkKKyAgICAgICAgICAgIHJhaXNlIHdoYXQKICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoaG93LCB3aGF0KQogCiAgICAgZGVmIGRlY29kZV9pbnRlcnJ1cHRob29rKHNlbGYpOgpAQCAtNTk2LDMgKzYwNCwyMSBAQAogCiAjIFhYWCBLQksgMDlTZXAwMyAgV2UgbmVlZCBhIHByb3BlciB1bml0IHRlc3QgZm9yIHRoaXMgbW9kdWxlLiAgUHJldmlvdXNseQogIyAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIHRlc3QgY29kZSB3YXMgcmVtb3ZlZCBhdCBSZXYgMS4yNyAocjM0MDk4KS4KKworZGVmIGRpc3BsYXlob29rKHZhbHVlKToKKyAgICAiIiJPdmVycmlkZSBzdGFuZGFyZCBkaXNwbGF5IGhvb2sgdG8gdXNlIG5vbi1sb2NhbGUgZW5jb2RpbmciIiIKKyAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICByZXR1cm4KKyAgICAjIFNldCAnXycgdG8gTm9uZSB0byBhdm9pZCByZWN1cnNpb24KKyAgICBidWlsdGlucy5fID0gTm9uZQorICAgIHRleHQgPSByZXByKHZhbHVlKQorICAgIHRyeToKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZSh0ZXh0KQorICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICMgbGV0J3MgdXNlIGFzY2lpIHdoaWxlIHV0ZjgtYm1wIGNvZGVjIGRvZXNuJ3QgcHJlc2VudAorICAgICAgICBlbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgYnl0ZXMgPSB0ZXh0LmVuY29kZShlbmNvZGluZywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICB0ZXh0ID0gYnl0ZXMuZGVjb2RlKGVuY29kaW5nLCAnc3RyaWN0JykKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZSh0ZXh0KQorICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKKyAgICBidWlsdGlucy5fID0gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3J1bi5weSBiL0xpYi9pZGxlbGliL3J1bi5weQppbmRleCA1MzY1NjgwLi45ODcyYWY0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ydW4ucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuLnB5CkBAIC03LDYgKzcsNyBAQAogaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgcXVldWUKK2ltcG9ydCB0a2ludGVyCiAKIGZyb20gaWRsZWxpYiBpbXBvcnQgQ2FsbFRpcHMKIGZyb20gaWRsZWxpYiBpbXBvcnQgQXV0b0NvbXBsZXRlCkBAIC0zOSw2ICs0MCwxNyBAQAogICAgICAgICByZXR1cm4gcwogICAgIHdhcm5pbmdzLmZvcm1hdHdhcm5pbmcgPSBpZGxlX2Zvcm1hdHdhcm5pbmdfc3VicHJvYwogCisKK3RjbCA9IHRraW50ZXIuVGNsKCkKKworCitkZWYgaGFuZGxlX3RrX2V2ZW50cyh0Y2w9dGNsKToKKyAgICAiIiJQcm9jZXNzIGFueSB0ayBldmVudHMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgZGlzcGF0Y2hlZCBpZiB0a2ludGVyCisgICAgaGFzIGJlZW4gaW1wb3J0ZWQsIGEgdGNsIGludGVycHJldGVyIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHRrIGhhcyBiZWVuCisgICAgbG9hZGVkLiIiIgorICAgIHRjbC5ldmFsKCJ1cGRhdGUiKQorCisKICMgVGhyZWFkIHNoYXJlZCBnbG9iYWxzOiBFc3RhYmxpc2ggYSBxdWV1ZSBiZXR3ZWVuIGEgc3VidGhyZWFkICh3aGljaCBoYW5kbGVzCiAjIHRoZSBzb2NrZXQpIGFuZCB0aGUgbWFpbiB0aHJlYWQgKHdoaWNoIHJ1bnMgdXNlciBjb2RlKSwgcGx1cyBnbG9iYWwKICMgY29tcGxldGlvbiwgZXhpdCBhbmQgaW50ZXJydXB0YWJsZSAodGhlIG1haW4gdGhyZWFkKSBmbGFnczoKQEAgLTk0LDYgKzEwNiw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VxLCByZXF1ZXN0ID0gcnBjLnJlcXVlc3RfcXVldWUuZ2V0KGJsb2NrPVRydWUsIHRpbWVvdXQ9MC4wNSkKICAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBoYW5kbGVfdGtfZXZlbnRzKCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgbWV0aG9kLCBhcmdzLCBrd2FyZ3MgPSByZXF1ZXN0CiAgICAgICAgICAgICByZXQgPSBtZXRob2QoKmFyZ3MsICoqa3dhcmdzKQpAQCAtMjk1LDYgKzMwOCw3IEBACiAgICAgICAgIHN5cy5zdGRpbiA9IF9SUENJbnB1dEZpbGUoc2VsZi5jb25zb2xlKQogICAgICAgICBzeXMuc3Rkb3V0ID0gX1JQQ091dHB1dEZpbGUoc2VsZi5nZXRfcmVtb3RlX3Byb3h5KCJzdGRvdXQiKSkKICAgICAgICAgc3lzLnN0ZGVyciA9IF9SUENPdXRwdXRGaWxlKHNlbGYuZ2V0X3JlbW90ZV9wcm94eSgic3RkZXJyIikpCisgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vawogICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCiAgICAgICAgIGltcG9ydCBweWRvYyAjIGltcG9ydCBtdXN0IGJlIGRvbmUgaGVyZSB0byBjYXB0dXJlIGkvbyBiaW5kaW5nCiAgICAgICAgIHB5ZG9jLnBhZ2VyID0gcHlkb2MucGxhaW5wYWdlcgpkaWZmIC0tZ2l0IGEvTGliL2ltYXBsaWIucHkgYi9MaWIvaW1hcGxpYi5weQppbmRleCBjMDMzNGQ4Li5lMTZmYjk1IDEwMDY0NAotLS0gYS9MaWIvaW1hcGxpYi5weQorKysgYi9MaWIvaW1hcGxpYi5weQpAQCAtMjMsNyArMjMsNyBAQAogX192ZXJzaW9uX18gPSAiMi41OCIKIAogaW1wb3J0IGJpbmFzY2lpLCBlcnJubywgcmFuZG9tLCByZSwgc29ja2V0LCBzdWJwcm9jZXNzLCBzeXMsIHRpbWUsIGNhbGVuZGFyCi0KK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZSwgdGltZWRlbHRhCiB0cnk6CiAgICAgaW1wb3J0IHNzbAogICAgIEhBVkVfU1NMID0gVHJ1ZQpAQCAtMjQ5LDE1ICsyNDksNyBAQAogCiAgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZSk6CiAgICAgICAgICIiIlJlYWQgJ3NpemUnIGJ5dGVzIGZyb20gcmVtb3RlLiIiIgotICAgICAgICBjaHVua3MgPSBbXQotICAgICAgICByZWFkID0gMAotICAgICAgICB3aGlsZSByZWFkIDwgc2l6ZToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmZpbGUucmVhZChtaW4oc2l6ZS1yZWFkLCA0MDk2KSkKLSAgICAgICAgICAgIGlmIG5vdCBkYXRhOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICByZWFkICs9IGxlbihkYXRhKQotICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChkYXRhKQotICAgICAgICByZXR1cm4gYicnLmpvaW4oY2h1bmtzKQorICAgICAgICByZXR1cm4gc2VsZi5maWxlLnJlYWQoc2l6ZSkKIAogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgpAQCAtMTE3NywyNSArMTE2OSw0MCBAQAogCiAgICAgICAgICIiIklNQVA0IGNsaWVudCBjbGFzcyBvdmVyIFNTTCBjb25uZWN0aW9uCiAKLSAgICAgICAgSW5zdGFudGlhdGUgd2l0aDogSU1BUDRfU1NMKFtob3N0WywgcG9ydFssIGtleWZpbGVbLCBjZXJ0ZmlsZV1dXV0pCisgICAgICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X1NTTChbaG9zdFssIHBvcnRbLCBrZXlmaWxlWywgY2VydGZpbGVbLCBzc2xfY29udGV4dF1dXV1dKQogCiAgICAgICAgICAgICAgICAgaG9zdCAtIGhvc3QncyBuYW1lIChkZWZhdWx0OiBsb2NhbGhvc3QpOwotICAgICAgICAgICAgICAgIHBvcnQgLSBwb3J0IG51bWJlciAoZGVmYXVsdDogc3RhbmRhcmQgSU1BUDQgU1NMIHBvcnQpLgorICAgICAgICAgICAgICAgIHBvcnQgLSBwb3J0IG51bWJlciAoZGVmYXVsdDogc3RhbmRhcmQgSU1BUDQgU1NMIHBvcnQpOwogICAgICAgICAgICAgICAgIGtleWZpbGUgLSBQRU0gZm9ybWF0dGVkIGZpbGUgdGhhdCBjb250YWlucyB5b3VyIHByaXZhdGUga2V5IChkZWZhdWx0OiBOb25lKTsKICAgICAgICAgICAgICAgICBjZXJ0ZmlsZSAtIFBFTSBmb3JtYXR0ZWQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSAoZGVmYXVsdDogTm9uZSk7CisgICAgICAgICAgICAgICAgc3NsX2NvbnRleHQgLSBhIFNTTENvbnRleHQgb2JqZWN0IHRoYXQgY29udGFpbnMgeW91ciBjZXJ0aWZpY2F0ZSBjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHByaXZhdGUga2V5IChkZWZhdWx0OiBOb25lKQorICAgICAgICAgICAgICAgIE5vdGU6IGlmIHNzbF9jb250ZXh0IGlzIHByb3ZpZGVkLCB0aGVuIHBhcmFtZXRlcnMga2V5ZmlsZSBvcgorICAgICAgICAgICAgICAgIGNlcnRmaWxlIHNob3VsZCBub3QgYmUgc2V0IG90aGVyd2lzZSBWYWx1ZUVycm9yIGlzIHRocm93bi4KIAogICAgICAgICBmb3IgbW9yZSBkb2N1bWVudGF0aW9uIHNlZSB0aGUgZG9jc3RyaW5nIG9mIHRoZSBwYXJlbnQgY2xhc3MgSU1BUDQuCiAgICAgICAgICIiIgogCiAKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QgPSAnJywgcG9ydCA9IElNQVA0X1NTTF9QT1JULCBrZXlmaWxlID0gTm9uZSwgY2VydGZpbGUgPSBOb25lKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNzbF9jb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKKyAgICAgICAgICAgIHNlbGYuc3NsX2NvbnRleHQgPSBzc2xfY29udGV4dAogICAgICAgICAgICAgSU1BUDQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCkKIAogICAgICAgICBkZWYgX2NyZWF0ZV9zb2NrZXQoc2VsZik6CiAgICAgICAgICAgICBzb2NrID0gSU1BUDQuX2NyZWF0ZV9zb2NrZXQoc2VsZikKLSAgICAgICAgICAgIHJldHVybiBzc2wud3JhcF9zb2NrZXQoc29jaywgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQorICAgICAgICAgICAgaWYgc2VsZi5zc2xfY29udGV4dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zc2xfY29udGV4dC53cmFwX3NvY2tldChzb2NrKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKIAogICAgICAgICBkZWYgb3BlbihzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JUKToKICAgICAgICAgICAgICIiIlNldHVwIGNvbm5lY3Rpb24gdG8gcmVtb3RlIHNlcnZlciBvbiAiaG9zdDpwb3J0Ii4KQEAgLTEzMDYsMTAgKzEzMTMsOCBAQAogICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgIHJldHVybiBiaW5hc2NpaS5hMmJfYmFzZTY0KGlucCkKIAotCi0KLU1vbjJudW0gPSB7YidKYW4nOiAxLCBiJ0ZlYic6IDIsIGInTWFyJzogMywgYidBcHInOiA0LCBiJ01heSc6IDUsIGInSnVuJzogNiwKLSAgICAgICAgICAgYidKdWwnOiA3LCBiJ0F1Zyc6IDgsIGInU2VwJzogOSwgYidPY3QnOiAxMCwgYidOb3YnOiAxMSwgYidEZWMnOiAxMn0KK01vbnRocyA9ICcgSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMnLnNwbGl0KCcgJykKK01vbjJudW0gPSB7cy5lbmNvZGUoKTpuKzEgZm9yIG4sIHMgaW4gZW51bWVyYXRlKE1vbnRoc1sxOl0pfQogCiBkZWYgSW50ZXJuYWxkYXRlMnR1cGxlKHJlc3ApOgogICAgICIiIlBhcnNlIGFuIElNQVA0IElOVEVSTkFMREFURSBzdHJpbmcuCkBAIC0xMzc3LDI4ICsxMzgyLDM3IEBACiAgICAgUmV0dXJuIHN0cmluZyBpbiBmb3JtOiAnIkRELU1tbS1ZWVlZIEhIOk1NOlNTICtISE1NIicuICBUaGUKICAgICBkYXRlX3RpbWUgYXJndW1lbnQgY2FuIGJlIGEgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZwogICAgIHNlY29uZHMgc2luY2UgZXBvY2ggKGFzIHJldHVybmVkIGJ5IHRpbWUudGltZSgpKSwgYSA5LXR1cGxlCi0gICAgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUgKGFzIHJldHVybmVkIGJ5IHRpbWUubG9jYWx0aW1lKCkpLCBvciBhCisgICAgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUsIGFuIGluc3RhbmNlIG9mIHRpbWUuc3RydWN0X3RpbWUgKGFzCisgICAgcmV0dXJuZWQgYnkgdGltZS5sb2NhbHRpbWUoKSksIGFuIGF3YXJlIGRhdGV0aW1lIGluc3RhbmNlIG9yIGEKICAgICBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0IGNhc2UsIGl0IGlzIGFzc3VtZWQgdG8gYWxyZWFkeQogICAgIGJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdC4KICAgICAiIiIKLQogICAgIGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCAoaW50LCBmbG9hdCkpOgotICAgICAgICB0dCA9IHRpbWUubG9jYWx0aW1lKGRhdGVfdGltZSkKLSAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCAodHVwbGUsIHRpbWUuc3RydWN0X3RpbWUpKToKLSAgICAgICAgdHQgPSBkYXRlX3RpbWUKKyAgICAgICAgZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKGRhdGVfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lLnV0YykuYXN0aW1lem9uZSgpCisgICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgdHVwbGUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBnbXRvZmYgPSBkYXRlX3RpbWUudG1fZ210b2ZmCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGlmIHRpbWUuZGF5bGlnaHQ6CisgICAgICAgICAgICAgICAgZHN0ID0gZGF0ZV90aW1lWzhdCisgICAgICAgICAgICAgICAgaWYgZHN0ID09IC0xOgorICAgICAgICAgICAgICAgICAgICBkc3QgPSB0aW1lLmxvY2FsdGltZSh0aW1lLm1rdGltZShkYXRlX3RpbWUpKVs4XQorICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0odGltZS50aW1lem9uZSwgdGltZS5hbHR6b25lKVtkc3RdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGdtdG9mZiA9IC10aW1lLnRpbWV6b25lCisgICAgICAgIGRlbHRhID0gdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKQorICAgICAgICBkdCA9IGRhdGV0aW1lKCpkYXRlX3RpbWVbOjZdLCB0emluZm89dGltZXpvbmUoZGVsdGEpKQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIGRhdGV0aW1lKToKKyAgICAgICAgaWYgZGF0ZV90aW1lLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGF0ZV90aW1lIG11c3QgYmUgYXdhcmUiKQorICAgICAgICBkdCA9IGRhdGVfdGltZQogICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIHN0cikgYW5kIChkYXRlX3RpbWVbMF0sZGF0ZV90aW1lWy0xXSkgPT0gKCciJywnIicpOgogICAgICAgICByZXR1cm4gZGF0ZV90aW1lICAgICAgICAjIEFzc3VtZSBpbiBjb3JyZWN0IGZvcm1hdAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRhdGVfdGltZSBub3Qgb2YgYSBrbm93biB0eXBlIikKLQotICAgIGR0ID0gdGltZS5zdHJmdGltZSgiJWQtJWItJVkgJUg6JU06JVMiLCB0dCkKLSAgICBpZiBkdFswXSA9PSAnMCc6Ci0gICAgICAgIGR0ID0gJyAnICsgZHRbMTpdCi0gICAgaWYgdGltZS5kYXlsaWdodCBhbmQgdHRbLTFdOgotICAgICAgICB6b25lID0gLXRpbWUuYWx0em9uZQotICAgIGVsc2U6Ci0gICAgICAgIHpvbmUgPSAtdGltZS50aW1lem9uZQotICAgIHJldHVybiAnIicgKyBkdCArICIgJSswM2QlMDJkIiAlIGRpdm1vZCh6b25lLy82MCwgNjApICsgJyInCisgICAgZm10ID0gJyIlZC17fS0lWSAlSDolTTolUyAleiInLmZvcm1hdChNb250aHNbZHQubW9udGhdKQorICAgIHJldHVybiBkdC5zdHJmdGltZShmbXQpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTljODRlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ltcC5weQpAQCAtMCwwICsxLDI1NyBAQAorIiIiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHlvdXIgb3duIF9faW1wb3J0X18KK2Z1bmN0aW9uLiAgVW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBhcmUgb2Jzb2xldGUuCisKK0luIG1vc3QgY2FzZXMgaXQgaXMgcHJlZmVycmVkIHlvdSBjb25zaWRlciB1c2luZyB0aGUgaW1wb3J0bGliIG1vZHVsZSdzCitmdW5jdGlvbmFsaXR5IG92ZXIgdGhpcyBtb2R1bGUuCisKKyIiIgorIyAoUHJvYmFibHkpIG5lZWQgdG8gc3RheSBpbiBfaW1wCitmcm9tIF9pbXAgaW1wb3J0IChsb2NrX2hlbGQsIGFjcXVpcmVfbG9jaywgcmVsZWFzZV9sb2NrLAorICAgICAgICAgICAgICAgICAgbG9hZF9keW5hbWljLCBnZXRfZnJvemVuX29iamVjdCwgaXNfZnJvemVuX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICBpbml0X2J1aWx0aW4sIGluaXRfZnJvemVuLCBpc19idWlsdGluLCBpc19mcm96ZW4sCisgICAgICAgICAgICAgICAgICBfZml4X2NvX2ZpbGVuYW1lKQorCisjIERpcmVjdGx5IGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IG5ld19tb2R1bGUKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IGNhY2hlX2Zyb21fc291cmNlLCBzb3VyY2VfZnJvbV9jYWNoZQorCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0b2tlbml6ZQoraW1wb3J0IHdhcm5pbmdzCisKKworIyBERVBSRUNBVEVECitTRUFSQ0hfRVJST1IgPSAwCitQWV9TT1VSQ0UgPSAxCitQWV9DT01QSUxFRCA9IDIKK0NfRVhURU5TSU9OID0gMworUFlfUkVTT1VSQ0UgPSA0CitQS0dfRElSRUNUT1JZID0gNQorQ19CVUlMVElOID0gNgorUFlfRlJPWkVOID0gNworUFlfQ09ERVJFU09VUkNFID0gOAorSU1QX0hPT0sgPSA5CisKKworZGVmIGdldF9tYWdpYygpOgorICAgICIiIlJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuIiIiCisgICAgcmV0dXJuIF9ib290c3RyYXAuX01BR0lDX0JZVEVTCisKKworZGVmIGdldF90YWcoKToKKyAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIiIgorICAgIHJldHVybiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCisKKworZGVmIGdldF9zdWZmaXhlcygpOgorICAgIHdhcm5pbmdzLndhcm4oJ2ltcC5nZXRfc3VmZml4ZXMoKSBpcyBkZXByZWNhdGVkOyB1c2UgdGhlIGNvbnN0YW50cyAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lZCBvbiBpbXBvcnRsaWIubWFjaGluZXJ5IGluc3RlYWQnLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIGV4dGVuc2lvbnMgPSBbKHMsICdyYicsIENfRVhURU5TSU9OKSBmb3IgcyBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTXQorICAgIHNvdXJjZSA9IFsocywgJ1UnLCBQWV9TT1VSQ0UpIGZvciBzIGluIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNdCisgICAgYnl0ZWNvZGUgPSBbKHMsICdyYicsIFBZX0NPTVBJTEVEKSBmb3IgcyBpbiBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNdCisKKyAgICByZXR1cm4gZXh0ZW5zaW9ucyArIHNvdXJjZSArIGJ5dGVjb2RlCisKKworY2xhc3MgTnVsbEltcG9ydGVyOgorCisgICAgIiIiTnVsbCBpbXBvcnQgb2JqZWN0LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoID09ICcnOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2VtcHR5IHBhdGhuYW1lJywgcGF0aD0nJykKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2V4aXN0aW5nIGRpcmVjdG9yeScsIHBhdGg9cGF0aCkKKworICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkFsd2F5cyByZXR1cm5zIE5vbmUuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3MgX0hhY2tlZEdldERhdGE6CisKKyAgICAiIiJDb21wYXRpYmlpbHR5IHN1cHBvcnQgZm9yICdmaWxlJyBhcmd1bWVudHMgb2YgdmFyaW91cyBsb2FkXyooKQorICAgIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCwgZmlsZT1Ob25lKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgc2VsZi5maWxlID0gZmlsZQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJHcm9zcyBoYWNrIHRvIGNvbnRvcnQgbG9hZGVyIHRvIGRlYWwgdy8gbG9hZF8qKCkncyBiYWQgQVBJLiIiIgorICAgICAgICBpZiBzZWxmLmZpbGUgYW5kIHBhdGggPT0gc2VsZi5wYXRoOgorICAgICAgICAgICAgd2l0aCBzZWxmLmZpbGU6CisgICAgICAgICAgICAgICAgIyBUZWNobmljYWxseSBzaG91bGQgYmUgcmV0dXJuaW5nIGJ5dGVzLCBidXQKKyAgICAgICAgICAgICAgICAjIFNvdXJjZUxvYWRlci5nZXRfY29kZSgpIGp1c3QgcGFzc2VkIHdoYXQgaXMgcmV0dXJuZWQgdG8KKyAgICAgICAgICAgICAgICAjIGNvbXBpbGUoKSB3aGljaCBjYW4gaGFuZGxlIHN0ci4gQW5kIGNvbnZlcnRpbmcgdG8gYnl0ZXMgd291bGQKKyAgICAgICAgICAgICAgICAjIHJlcXVpcmUgZmlndXJpbmcgb3V0IHRoZSBlbmNvZGluZyB0byBkZWNvZGUgdG8gYW5kCisgICAgICAgICAgICAgICAgIyB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBvbmx5IGFjY2VwdHMgYnl0ZXMuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5yZWFkKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9kYXRhKHBhdGgpCisKKworY2xhc3MgX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KF9IYWNrZWRHZXREYXRhLCBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIpOgorCisgICAgIiIiQ29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgbG9hZF9zb3VyY2UoKS4iIiIKKworCitkZWYgbG9hZF9zb3VyY2UobmFtZSwgcGF0aG5hbWUsIGZpbGU9Tm9uZSk6CisgICAgbXNnID0gKCdpbXAubG9hZF9zb3VyY2UoKSBpcyBkZXByZWNhdGVkOyB1c2UgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKS5sb2FkX21vZHVsZSgpJworICAgICAgICAgICAnIGluc3RlYWQnKQorICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgcmV0dXJuIF9Mb2FkU291cmNlQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkubG9hZF9tb2R1bGUobmFtZSkKKworCitjbGFzcyBfTG9hZENvbXBpbGVkQ29tcGF0aWJpbGl0eShfSGFja2VkR2V0RGF0YSwKKyAgICAgICAgX2Jvb3RzdHJhcC5Tb3VyY2VsZXNzRmlsZUxvYWRlcik6CisKKyAgICAiIiJDb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBsb2FkX2NvbXBpbGVkKCkuIiIiCisKKworZGVmIGxvYWRfY29tcGlsZWQobmFtZSwgcGF0aG5hbWUsIGZpbGU9Tm9uZSk6CisgICAgbXNnID0gKCdpbXAubG9hZF9jb21waWxlZCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKS4nCisgICAgICAgICAgICdsb2FkX21vZHVsZSgpIGluc3RlYWQgJykKKyAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIHJldHVybiBfTG9hZENvbXBpbGVkQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkubG9hZF9tb2R1bGUobmFtZSkKKworCitkZWYgbG9hZF9wYWNrYWdlKG5hbWUsIHBhdGgpOgorICAgIG1zZyA9ICgnaW1wLmxvYWRfcGFja2FnZSgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBlaXRoZXIgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCkgb3IgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcigpIGluc3RlYWQnKQorICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgZXh0ZW5zaW9ucyA9IChtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzpdICsKKyAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0pCisgICAgICAgIGZvciBleHRlbnNpb24gaW4gZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ19faW5pdF9fJytleHRlbnNpb24pCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSBwYWNrYWdlJy5mb3JtYXQocGF0aCkpCisgICAgcmV0dXJuIF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKS5sb2FkX21vZHVsZShuYW1lKQorCisKK2RlZiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZGV0YWlscyk6CisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIExvYWQgYSBtb2R1bGUsIGdpdmVuIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IGZpbmRfbW9kdWxlKCkuCisKKyAgICBUaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LgorCisgICAgIiIiCisgICAgc3VmZml4LCBtb2RlLCB0eXBlXyA9IGRldGFpbHMKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgaWYgbW9kZSBhbmQgKG5vdCBtb2RlLnN0YXJ0c3dpdGgoKCdyJywgJ1UnKSkgb3IgJysnIGluIG1vZGUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBmaWxlIG9wZW4gbW9kZSB7IXJ9Jy5mb3JtYXQobW9kZSkpCisgICAgICAgIGVsaWYgZmlsZSBpcyBOb25lIGFuZCB0eXBlXyBpbiB7UFlfU09VUkNFLCBQWV9DT01QSUxFRCwgQ19FWFRFTlNJT059OgorICAgICAgICAgICAgbXNnID0gJ2ZpbGUgb2JqZWN0IHJlcXVpcmVkIGZvciBpbXBvcnQgKHR5cGUgY29kZSB7fSknLmZvcm1hdCh0eXBlXykKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICBlbGlmIHR5cGVfID09IFBZX1NPVVJDRToKKyAgICAgICAgICAgIHJldHVybiBsb2FkX3NvdXJjZShuYW1lLCBmaWxlbmFtZSwgZmlsZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQWV9DT01QSUxFRDoKKyAgICAgICAgICAgIHJldHVybiBsb2FkX2NvbXBpbGVkKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgICAgICBlbGlmIHR5cGVfID09IENfRVhURU5TSU9OOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfZHluYW1pYyhuYW1lLCBmaWxlbmFtZSwgZmlsZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQS0dfRElSRUNUT1JZOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfcGFja2FnZShuYW1lLCBmaWxlbmFtZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBDX0JVSUxUSU46CisgICAgICAgICAgICByZXR1cm4gaW5pdF9idWlsdGluKG5hbWUpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gUFlfRlJPWkVOOgorICAgICAgICAgICAgcmV0dXJuIGluaXRfZnJvemVuKG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAgIkRvbid0IGtub3cgaG93IHRvIGltcG9ydCB7fSAodHlwZSBjb2RlIHt9KSIuZm9ybWF0KG5hbWUsIHR5cGVfKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpCisKKworZGVmIGZpbmRfbW9kdWxlKG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIFNlYXJjaCBmb3IgYSBtb2R1bGUuCisKKyAgICBJZiBwYXRoIGlzIG9taXR0ZWQgb3IgTm9uZSwgc2VhcmNoIGZvciBhIGJ1aWx0LWluLCBmcm96ZW4gb3Igc3BlY2lhbAorICAgIG1vZHVsZSBhbmQgY29udGludWUgc2VhcmNoIGluIHN5cy5wYXRoLiBUaGUgbW9kdWxlIG5hbWUgY2Fubm90CisgICAgY29udGFpbiAnLic7IHRvIHNlYXJjaCBmb3IgYSBzdWJtb2R1bGUgb2YgYSBwYWNrYWdlLCBwYXNzIHRoZQorICAgIHN1Ym1vZHVsZSBuYW1lIGFuZCB0aGUgcGFja2FnZSdzIF9fcGF0aF9fLgorCisgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCInbmFtZScgbXVzdCBiZSBhIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShwYXRoLCAodHlwZShOb25lKSwgbGlzdCkpOgorICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiJ2xpc3QnIG11c3QgYmUgTm9uZSBvciBhIGxpc3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3Qge30iLmZvcm1hdCh0eXBlKG5hbWUpKSkKKworICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgaWYgaXNfYnVpbHRpbihuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCAoJycsICcnLCBDX0JVSUxUSU4pCisgICAgICAgIGVsaWYgaXNfZnJvemVuKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsICgnJywgJycsIFBZX0ZST1pFTikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAorCisgICAgZm9yIGVudHJ5IGluIHBhdGg6CisgICAgICAgIHBhY2thZ2VfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKGVudHJ5LCBuYW1lKQorICAgICAgICBmb3Igc3VmZml4IGluIFsnLnB5JywgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzBdXToKKyAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9uYW1lID0gJ19faW5pdF9fJyArIHN1ZmZpeAorICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKHBhY2thZ2VfZGlyZWN0b3J5LCBwYWNrYWdlX2ZpbGVfbmFtZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHBhY2thZ2VfZGlyZWN0b3J5LCAoJycsICcnLCBQS0dfRElSRUNUT1JZKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCB0eXBlXyBpbiBnZXRfc3VmZml4ZXMoKToKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBuYW1lICsgc3VmZml4CisgICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGVudHJ5LCBmaWxlX25hbWUpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGJyZWFrICAjIEJyZWFrIG91dCBvZiBvdXRlciBsb29wIHdoZW4gYnJlYWtpbmcgb3V0IG9mIGlubmVyIGxvb3AuCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoX2Jvb3RzdHJhcC5fRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKworICAgIGVuY29kaW5nID0gTm9uZQorICAgIGlmIG1vZGUgPT0gJ1UnOgorICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoZmlsZS5yZWFkbGluZSlbMF0KKyAgICBmaWxlID0gb3BlbihmaWxlX3BhdGgsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQorICAgIHJldHVybiBmaWxlLCBmaWxlX3BhdGgsIChzdWZmaXgsIG1vZGUsIHR5cGVfKQorCisKK19SRUxPQURJTkcgPSB7fQorCitkZWYgcmVsb2FkKG1vZHVsZSk6CisgICAgIiIiUmVsb2FkIHRoZSBtb2R1bGUgYW5kIHJldHVybiBpdC4KKworICAgIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGJlZm9yZS4KKworICAgICIiIgorICAgIGlmIG5vdCBtb2R1bGUgb3IgdHlwZShtb2R1bGUpICE9IHR5cGUoc3lzKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJyZWxvYWQoKSBhcmd1bWVudCBtdXN0IGJlIG1vZHVsZSIpCisgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXworICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICBtc2cgPSAibW9kdWxlIHt9IG5vdCBpbiBzeXMubW9kdWxlcyIKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorICAgIGlmIG5hbWUgaW4gX1JFTE9BRElORzoKKyAgICAgICAgcmV0dXJuIF9SRUxPQURJTkdbbmFtZV0KKyAgICBfUkVMT0FESU5HW25hbWVdID0gbW9kdWxlCisgICAgdHJ5OgorICAgICAgICBwYXJlbnRfbmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGlmIHBhcmVudF9uYW1lIGFuZCBwYXJlbnRfbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBtc2cgPSAicGFyZW50IHshcn0gbm90IGluIHN5cy5tb2R1bGVzIgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChwYXJlbnRuYW1lKSwgbmFtZT1wYXJlbnRfbmFtZSkKKyAgICAgICAgcmV0dXJuIG1vZHVsZS5fX2xvYWRlcl9fLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIF9SRUxPQURJTkdbbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKaW5kZXggMmJhYWY5My4uNmY0MGRhYyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CkBAIC0xLDExMCArMSw3NCBAQAotIiIiQSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuCi0KLVJlZmVyZW5jZXMgb24gaW1wb3J0OgotCi0gICAgKiBMYW5ndWFnZSByZWZlcmVuY2UKLSAgICAgICAgICBodHRwOi8vZG9jcy5weXRob24ub3JnL3JlZi9pbXBvcnQuaHRtbAotICAgICogX19pbXBvcnRfXyBmdW5jdGlvbgotICAgICAgICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGliL2J1aWx0LWluLWZ1bmNzLmh0bWwKLSAgICAqIFBhY2thZ2VzCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbAotICAgICogUEVQIDIzNTogSW1wb3J0IG9uIENhc2UtSW5zZW5zaXRpdmUgUGxhdGZvcm1zCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjM1Ci0gICAgKiBQRVAgMjc1OiBJbXBvcnQgTW9kdWxlcyBmcm9tIFppcCBBcmNoaXZlcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDI3MwotICAgICogUEVQIDMwMjogTmV3IEltcG9ydCBIb29rcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDMwMi8KLSAgICAqIFBFUCAzMjg6IEltcG9ydHM6IE11bHRpLWxpbmUgYW5kIEFic29sdXRlL1JlbGF0aXZlCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzI4Ci0KLSIiIgotX19hbGxfXyA9IFsnX19pbXBvcnRfXycsICdpbXBvcnRfbW9kdWxlJ10KLQotZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgdG9rZW5pemUKKyIiIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorX19hbGxfXyA9IFsnX19pbXBvcnRfXycsICdpbXBvcnRfbW9kdWxlJywgJ2ludmFsaWRhdGVfY2FjaGVzJ10KIAogIyBCb290c3RyYXAgaGVscCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1kZWYgX2Nhc2Vfb2soZGlyZWN0b3J5LCBjaGVjayk6Ci0gICAgIiIiQ2hlY2sgaWYgdGhlIGRpcmVjdG9yeSBjb250YWlucyBzb21ldGhpbmcgbWF0Y2hpbmcgJ2NoZWNrJy4KKyMgVW50aWwgYm9vdHN0cmFwcGluZyBpcyBjb21wbGV0ZSwgRE8gTk9UIGltcG9ydCBhbnkgbW9kdWxlcyB0aGF0IGF0dGVtcHQKKyMgdG8gaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KS4gU2luY2UgdGhpcworIyBwYXJ0aWFsbHkgaW5pdGlhbGlzZWQgcGFja2FnZSB3b3VsZCBiZSBwcmVzZW50IGluIHN5cy5tb2R1bGVzLCB0aG9zZQorIyBtb2R1bGVzIHdvdWxkIGdldCBhbiB1bmluaXRpYWxpc2VkIGNvcHkgb2YgdGhlIHNvdXJjZSB2ZXJzaW9uLCBpbnN0ZWFkCisjIG9mIGEgZnVsbHkgaW5pdGlhbGlzZWQgdmVyc2lvbiAoZWl0aGVyIHRoZSBmcm96ZW4gb25lIG9yIHRoZSBvbmUKKyMgaW5pdGlhbGlzZWQgYmVsb3cgaWYgdGhlIGZyb3plbiBvbmUgaXMgbm90IGF2YWlsYWJsZSkuCitpbXBvcnQgX2ltcCAgIyBKdXN0IHRoZSBidWlsdGluIGNvbXBvbmVudCwgTk9UIHRoZSBmdWxsIFB5dGhvbiBtb2R1bGUKK2ltcG9ydCBzeXMKIAotICAgIE5vIGNoZWNrIGlzIGRvbmUgaWYgdGhlIGZpbGUvZGlyZWN0b3J5IGV4aXN0cyBvciBub3QuCi0KLSAgICAiIiIKLSAgICBpZiAnUFlUSE9OQ0FTRU9LJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGVsaWYgY2hlY2sgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkgaWYgZGlyZWN0b3J5IGVsc2Ugb3MuZ2V0Y3dkKCkpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfd19sb25nKHgpOgotICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLgotCi0gICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCi0KLSAgICAiIiIKLSAgICB4ID0gaW50KHgpCi0gICAgaW50X2J5dGVzID0gW10KLSAgICBpbnRfYnl0ZXMuYXBwZW5kKHggJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gOCkgJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMTYpICYgMHhGRikKLSAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDI0KSAmIDB4RkYpCi0gICAgcmV0dXJuIGJ5dGVhcnJheShpbnRfYnl0ZXMpCi0KLQotZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKLSAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLgotCi0gICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbiBhcmUgZXhwb3NlZC4KLQotICAgICIiIgotICAgIHggPSBpbnRfYnl0ZXNbMF0KLSAgICB4IHw9IGludF9ieXRlc1sxXSA8PCA4Ci0gICAgeCB8PSBpbnRfYnl0ZXNbMl0gPDwgMTYKLSAgICB4IHw9IGludF9ieXRlc1szXSA8PCAyNAotICAgIHJldHVybiB4Ci0KLQotIyBSZXF1aXJlZCBidWlsdC1pbiBtb2R1bGVzLgogdHJ5OgotICAgIGltcG9ydCBwb3NpeCBhcyBfb3MKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIgYXMgX2Jvb3RzdHJhcAogZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IG50IGFzIF9vcwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IG9zMiBhcyBfb3MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3Bvc2l4LCBudCwgb3Igb3MyIG1vZHVsZSByZXF1aXJlZCBmb3IgaW1wb3J0bGliJykKLV9ib290c3RyYXAuX29zID0gX29zCi1pbXBvcnQgaW1wLCBzeXMsIG1hcnNoYWwsIGVycm5vLCBfaW8KLV9ib290c3RyYXAuaW1wID0gaW1wCi1fYm9vdHN0cmFwLnN5cyA9IHN5cwotX2Jvb3RzdHJhcC5tYXJzaGFsID0gbWFyc2hhbAotX2Jvb3RzdHJhcC5lcnJubyA9IGVycm5vCi1fYm9vdHN0cmFwLl9pbyA9IF9pbwotaW1wb3J0IF93YXJuaW5ncwotX2Jvb3RzdHJhcC5fd2FybmluZ3MgPSBfd2FybmluZ3MKKyAgICBmcm9tIC4gaW1wb3J0IF9ib290c3RyYXAKKyAgICBfYm9vdHN0cmFwLl9zZXR1cChzeXMsIF9pbXApCitlbHNlOgorICAgICMgaW1wb3J0bGliLl9ib290c3RyYXAgaXMgdGhlIGJ1aWx0LWluIGltcG9ydCwgZW5zdXJlIHdlIGRvbid0IGNyZWF0ZQorICAgICMgYSBzZWNvbmQgY29weSBvZiB0aGUgbW9kdWxlLgorICAgIF9ib290c3RyYXAuX19uYW1lX18gPSAnaW1wb3J0bGliLl9ib290c3RyYXAnCisgICAgX2Jvb3RzdHJhcC5fX3BhY2thZ2VfXyA9ICdpbXBvcnRsaWInCisgICAgX2Jvb3RzdHJhcC5fX2ZpbGVfXyA9IF9fZmlsZV9fLnJlcGxhY2UoJ19faW5pdF9fLnB5JywgJ19ib290c3RyYXAucHknKQorICAgIHN5cy5tb2R1bGVzWydpbXBvcnRsaWIuX2Jvb3RzdHJhcCddID0gX2Jvb3RzdHJhcAogCisjIFRvIHNpbXBsaWZ5IGltcG9ydHMgaW4gdGVzdCBjb2RlCitfd19sb25nID0gX2Jvb3RzdHJhcC5fd19sb25nCitfcl9sb25nID0gX2Jvb3RzdHJhcC5fcl9sb25nCiAKLWZyb20gb3MgaW1wb3J0IHNlcAotIyBGb3Igb3MucGF0aC5qb2luIHJlcGxhY2VtZW50OyBwdWxsIGZyb20gSW5jbHVkZS9vc2RlZnMuaDpTRVAgLgotX2Jvb3RzdHJhcC5wYXRoX3NlcCA9IHNlcAotCi1fYm9vdHN0cmFwLl9jYXNlX29rID0gX2Nhc2Vfb2sKLW1hcnNoYWwuX3dfbG9uZyA9IF93X2xvbmcKLW1hcnNoYWwuX3JfbG9uZyA9IF9yX2xvbmcKLQorIyBGdWxseSBib290c3RyYXBwZWQgYXQgdGhpcyBwb2ludCwgaW1wb3J0IHdoYXRldmVyIHlvdSBsaWtlLCBjaXJjdWxhcgorIyBkZXBlbmRlbmNpZXMgYW5kIHN0YXJ0dXAgb3ZlcmhlYWQgbWluaW1pc2F0aW9uIHBlcm1pdHRpbmcgOikKIAogIyBQdWJsaWMgQVBJICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBfX2ltcG9ydF9fCiAKIAorZGVmIGludmFsaWRhdGVfY2FjaGVzKCk6CisgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIG1ldGEgcGF0aCBmaW5kZXJzIHN0b3JlZCBpbgorICAgIHN5cy5tZXRhX3BhdGggKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKKyAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKKyAgICAgICAgICAgIGZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpCisKKworZGVmIGZpbmRfbG9hZGVyKG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgIiIiRmluZCB0aGUgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4KKworICAgIEZpcnN0LCBzeXMubW9kdWxlcyBpcyBjaGVja2VkIHRvIHNlZSBpZiB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5IGltcG9ydGVkLiBJZgorICAgIHNvLCB0aGVuIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18gaXMgcmV0dXJuZWQuIElmIHRoYXQgaGFwcGVucyB0byBiZQorICAgIHNldCB0byBOb25lLCB0aGVuIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiBJZiB0aGUgbW9kdWxlIGlzIG5vdCBpbgorICAgIHN5cy5tb2R1bGVzLCB0aGVuIHN5cy5tZXRhX3BhdGggaXMgc2VhcmNoZWQgZm9yIGEgc3VpdGFibGUgbG9hZGVyIHdpdGggdGhlCisgICAgdmFsdWUgb2YgJ3BhdGgnIGdpdmVuIHRvIHRoZSBmaW5kZXJzLiBOb25lIGlzIHJldHVybmVkIGlmIG5vIGxvYWRlciBjb3VsZAorICAgIGJlIGZvdW5kLgorCisgICAgRG90dGVkIG5hbWVzIGRvIG5vdCBoYXZlIHRoZWlyIHBhcmVudCBwYWNrYWdlcyBpbXBsaWNpdGx5IGltcG9ydGVkLgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBsb2FkZXIgPSBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fCisgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19sb2FkZXJfXyBpcyBOb25lJy5mb3JtYXQobmFtZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gbG9hZGVyCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgcmV0dXJuIF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCisKKwogZGVmIGltcG9ydF9tb2R1bGUobmFtZSwgcGFja2FnZT1Ob25lKToKICAgICAiIiJJbXBvcnQgYSBtb2R1bGUuCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQppbmRleCA5MGViMWE3Li4yNmQ5MjUwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CkBAIC02LDMzICs2LDkzIEBACiB3b3JrLiBPbmUgc2hvdWxkIHVzZSBpbXBvcnRsaWIgYXMgdGhlIHB1YmxpYy1mYWNpbmcgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZS4KIAogIiIiCi0KLSMgSW5qZWN0ZWQgbW9kdWxlcyBhcmUgJ193YXJuaW5ncycsICdpbXAnLCAnc3lzJywgJ21hcnNoYWwnLCAnZXJybm8nLCAnX2lvJywKLSMgYW5kICdfb3MnIChhLmsuYS4gJ3Bvc2l4JywgJ250JyBvciAnb3MyJykuCi0jIEluamVjdGVkIGF0dHJpYnV0ZSBpcyBwYXRoX3NlcC4KICMKKyMgSU1QT1JUQU5UOiBXaGVuZXZlciBtYWtpbmcgY2hhbmdlcyB0byB0aGlzIG1vZHVsZSwgYmUgc3VyZSB0byBydW4KKyMgYSB0b3AtbGV2ZWwgbWFrZSBpbiBvcmRlciB0byBnZXQgdGhlIGZyb3plbiB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUKKyMgdXBkYXRlLiBOb3QgZG9pbmcgc28sIHdpbGwgcmVzdWx0IGluIHRoZSBNYWtlZmlsZSB0byBmYWlsIGZvcgorIyBhbGwgb3RoZXJzIHdobyBkb24ndCBoYXZlIGEgLi9weXRob24gYXJvdW5kIHRvIGZyZWV6ZSB0aGUgbW9kdWxlCisjIGluIHRoZSBlYXJseSBzdGFnZXMgb2YgY29tcGlsYXRpb24uCisjCisKKyMgU2VlIGltcG9ydGxpYi5fc2V0dXAoKSBmb3Igd2hhdCBpcyBpbmplY3RlZCBpbnRvIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorCiAjIFdoZW4gZWRpdGluZyB0aGlzIGNvZGUgYmUgYXdhcmUgdGhhdCBjb2RlIGV4ZWN1dGVkIGF0IGltcG9ydCB0aW1lIENBTk5PVAogIyByZWZlcmVuY2UgYW55IGluamVjdGVkIG9iamVjdHMhIFRoaXMgaW5jbHVkZXMgbm90IG9ubHkgZ2xvYmFsIGNvZGUgYnV0IGFsc28KICMgYW55dGhpbmcgc3BlY2lmaWVkIGF0IHRoZSBjbGFzcyBsZXZlbC4KIAorIyBYWFggTWFrZSBzdXJlIGFsbCBwdWJsaWMgbmFtZXMgaGF2ZSBubyBzaW5nbGUgbGVhZGluZyB1bmRlcnNjb3JlIGFuZCBhbGwKKyMgICAgIG90aGVycyBkby4KKwogCiAjIEJvb3RzdHJhcC1yZWxhdGVkIGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLSMgWFhYIENvdWxkIGFsc28gZXhwb3NlIE1vZHVsZXMvZ2V0cGF0aC5jOmpvaW5wYXRoKCkKLWRlZiBfcGF0aF9qb2luKCphcmdzKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5qb2luLiIiIgotICAgIHJldHVybiBwYXRoX3NlcC5qb2luKHhbOi1sZW4ocGF0aF9zZXApXSBpZiB4LmVuZHN3aXRoKHBhdGhfc2VwKSBlbHNlIHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBhcmdzIGlmIHgpCitfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMgPSAnd2luJywgJ2N5Z3dpbicsICdkYXJ3aW4nCiAKIAotZGVmIF9wYXRoX2V4aXN0cyhwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5leGlzdHMuIiIiCi0gICAgdHJ5OgotICAgICAgICBfb3Muc3RhdChwYXRoKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByZXR1cm4gRmFsc2UKK2RlZiBfbWFrZV9yZWxheF9jYXNlKCk6CisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TKToKKyAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgorICAgICAgICAgICAgcmV0dXJuIGInUFlUSE9OQ0FTRU9LJyBpbiBfb3MuZW52aXJvbgogICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBfcmVsYXhfY2FzZQorCisKKyMgVE9ETzogRXhwb3NlIGZyb20gbWFyc2hhbAorZGVmIF93X2xvbmcoeCk6CisgICAgIiIiQ29udmVydCBhIDMyLWJpdCBpbnRlZ2VyIHRvIGxpdHRsZS1lbmRpYW4uCisKKyAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9ucyBhcmUgZXhwb3NlZC4KKworICAgICIiIgorICAgIHggPSBpbnQoeCkKKyAgICBpbnRfYnl0ZXMgPSBbXQorICAgIGludF9ieXRlcy5hcHBlbmQoeCAmIDB4RkYpCisgICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiA4KSAmIDB4RkYpCisgICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiAxNikgJiAweEZGKQorICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMjQpICYgMHhGRikKKyAgICByZXR1cm4gYnl0ZWFycmF5KGludF9ieXRlcykKKworCisjIFRPRE86IEV4cG9zZSBmcm9tIG1hcnNoYWwKK2RlZiBfcl9sb25nKGludF9ieXRlcyk6CisgICAgIiIiQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4KKworICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb24gYXJlIGV4cG9zZWQuCisKKyAgICAiIiIKKyAgICB4ID0gaW50X2J5dGVzWzBdCisgICAgeCB8PSBpbnRfYnl0ZXNbMV0gPDwgOAorICAgIHggfD0gaW50X2J5dGVzWzJdIDw8IDE2CisgICAgeCB8PSBpbnRfYnl0ZXNbM10gPDwgMjQKKyAgICByZXR1cm4geAorCisKK2RlZiBfcGF0aF9qb2luKCpwYXRoX3BhcnRzKToKKyAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5qb2luKCkuIiIiCisgICAgbmV3X3BhcnRzID0gW10KKyAgICBmb3IgcGFydCBpbiBwYXRoX3BhcnRzOgorICAgICAgICBpZiBub3QgcGFydDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIG5ld19wYXJ0cy5hcHBlbmQocGFydCkKKyAgICAgICAgaWYgcGFydFstMV0gbm90IGluIHBhdGhfc2VwYXJhdG9yczoKKyAgICAgICAgICAgIG5ld19wYXJ0cy5hcHBlbmQocGF0aF9zZXApCisgICAgcmV0dXJuICcnLmpvaW4obmV3X3BhcnRzWzotMV0pICAjIERyb3Agc3VwZXJmbHVvdXMgcGF0aCBzZXBhcmF0b3IuCisKKworZGVmIF9wYXRoX3NwbGl0KHBhdGgpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0KCkuIiIiCisgICAgZm9yIHggaW4gcmV2ZXJzZWQocGF0aCk6CisgICAgICAgIGlmIHggaW4gcGF0aF9zZXBhcmF0b3JzOgorICAgICAgICAgICAgc2VwID0geAorICAgICAgICAgICAgYnJlYWsKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSBwYXRoX3NlcAorICAgIGZyb250LCBfLCB0YWlsID0gcGF0aC5ycGFydGl0aW9uKHNlcCkKKyAgICByZXR1cm4gZnJvbnQsIHRhaWwKIAogCiBkZWYgX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIG1vZGUpOgpAQCAtNTgsNjEgKzExOCw0MDEgQEAKICAgICByZXR1cm4gX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIDBvMDQwMDAwKQogCiAKLWRlZiBfcGF0aF93aXRob3V0X2V4dChwYXRoLCBleHRfdHlwZSk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguc3BsaXRleHQoKVswXS4iIiIKLSAgICBmb3Igc3VmZml4IGluIF9zdWZmaXhfbGlzdChleHRfdHlwZSk6Ci0gICAgICAgIGlmIHBhdGguZW5kc3dpdGgoc3VmZml4KToKLSAgICAgICAgICAgIHJldHVybiBwYXRoWzotbGVuKHN1ZmZpeCldCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicGF0aCBpcyBub3Qgb2YgdGhlIHNwZWNpZmllZCB0eXBlIikKLQotCi1kZWYgX3BhdGhfYWJzb2x1dGUocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguYWJzcGF0aC4iIiIKLSAgICBpZiBub3QgcGF0aDoKLSAgICAgICAgcGF0aCA9IF9vcy5nZXRjd2QoKQorZGVmIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgbW9kZT0wbzY2Nik6CisgICAgIiIiQmVzdC1lZmZvcnQgZnVuY3Rpb24gdG8gd3JpdGUgZGF0YSB0byBhIHBhdGggYXRvbWljYWxseS4KKyAgICBCZSBwcmVwYXJlZCB0byBoYW5kbGUgYSBGaWxlRXhpc3RzRXJyb3IgaWYgY29uY3VycmVudCB3cml0aW5nIG9mIHRoZQorICAgIHRlbXBvcmFyeSBmaWxlIGlzIGF0dGVtcHRlZC4iIiIKKyAgICAjIGlkKCkgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIHBzZXVkby1yYW5kb20gZmlsZW5hbWUuCisgICAgcGF0aF90bXAgPSAne30ue30nLmZvcm1hdChwYXRoLCBpZChwYXRoKSkKKyAgICBmZCA9IF9vcy5vcGVuKHBhdGhfdG1wLAorICAgICAgICAgICAgICAgICAgX29zLk9fRVhDTCB8IF9vcy5PX0NSRUFUIHwgX29zLk9fV1JPTkxZLCBtb2RlICYgMG82NjYpCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gX29zLl9nZXRmdWxscGF0aG5hbWUocGF0aCkKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgnLycpOgotICAgICAgICAgICAgcmV0dXJuIHBhdGgKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBfcGF0aF9qb2luKF9vcy5nZXRjd2QoKSwgcGF0aCkKKyAgICAgICAgIyBXZSBmaXJzdCB3cml0ZSBkYXRhIHRvIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCB0aGVuIHVzZSBvcy5yZXBsYWNlKCkgdG8KKyAgICAgICAgIyBwZXJmb3JtIGFuIGF0b21pYyByZW5hbWUuCisgICAgICAgIHdpdGggX2lvLkZpbGVJTyhmZCwgJ3diJykgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKKyAgICAgICAgX29zLnJlcGxhY2UocGF0aF90bXAsIHBhdGgpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9vcy51bmxpbmsocGF0aF90bXApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICByYWlzZQogCiAKIGRlZiBfd3JhcChuZXcsIG9sZCk6Ci0gICAgIiIiU2ltcGxlIHN1YnN0aXR1dGUgZm9yIGZ1bmN0b29scy53cmFwcy4iIiIKLSAgICBmb3IgcmVwbGFjZSBpbiBbJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19kb2NfXyddOgotICAgICAgICBzZXRhdHRyKG5ldywgcmVwbGFjZSwgZ2V0YXR0cihvbGQsIHJlcGxhY2UpKQorICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuIiIiCisgICAgZm9yIHJlcGxhY2UgaW4gWydfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcXVhbG5hbWVfXycsICdfX2RvY19fJ106CisgICAgICAgIGlmIGhhc2F0dHIob2xkLCByZXBsYWNlKToKKyAgICAgICAgICAgIHNldGF0dHIobmV3LCByZXBsYWNlLCBnZXRhdHRyKG9sZCwgcmVwbGFjZSkpCiAgICAgbmV3Ll9fZGljdF9fLnVwZGF0ZShvbGQuX19kaWN0X18pCiAKIAotY29kZV90eXBlID0gdHlwZShfd3JhcC5fX2NvZGVfXykKK19jb2RlX3R5cGUgPSB0eXBlKF93cmFwLl9fY29kZV9fKQogCi0jIEZpbmRlci9sb2FkZXIgdXRpbGl0eSBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBuZXdfbW9kdWxlKG5hbWUpOgorICAgICIiIkNyZWF0ZSBhIG5ldyBtb2R1bGUuCisKKyAgICBUaGUgbW9kdWxlIGlzIG5vdCBlbnRlcmVkIGludG8gc3lzLm1vZHVsZXMuCisKKyAgICAiIiIKKyAgICByZXR1cm4gdHlwZShfaW8pKG5hbWUpCisKKworIyBNb2R1bGUtbGV2ZWwgbG9ja2luZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEEgZGljdCBtYXBwaW5nIG1vZHVsZSBuYW1lcyB0byB3ZWFrcmVmcyBvZiBfTW9kdWxlTG9jayBpbnN0YW5jZXMKK19tb2R1bGVfbG9ja3MgPSB7fQorIyBBIGRpY3QgbWFwcGluZyB0aHJlYWQgaWRzIHRvIF9Nb2R1bGVMb2NrIGluc3RhbmNlcworX2Jsb2NraW5nX29uID0ge30KKworCitjbGFzcyBfRGVhZGxvY2tFcnJvcihSdW50aW1lRXJyb3IpOgorICAgIHBhc3MKKworCitjbGFzcyBfTW9kdWxlTG9jazoKKyAgICAiIiJBIHJlY3Vyc2l2ZSBsb2NrIGltcGxlbWVudGF0aW9uIHdoaWNoIGlzIGFibGUgdG8gZGV0ZWN0IGRlYWRsb2NrcworICAgIChlLmcuIHRocmVhZCAxIHRyeWluZyB0byB0YWtlIGxvY2tzIEEgdGhlbiBCLCBhbmQgdGhyZWFkIDIgdHJ5aW5nIHRvCisgICAgdGFrZSBsb2NrcyBCIHRoZW4gQSkuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYubG9jayA9IF90aHJlYWQuYWxsb2NhdGVfbG9jaygpCisgICAgICAgIHNlbGYud2FrZXVwID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrKCkKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLm93bmVyID0gTm9uZQorICAgICAgICBzZWxmLmNvdW50ID0gMAorICAgICAgICBzZWxmLndhaXRlcnMgPSAwCisKKyAgICBkZWYgaGFzX2RlYWRsb2NrKHNlbGYpOgorICAgICAgICAjIERlYWRsb2NrIGF2b2lkYW5jZSBmb3IgY29uY3VycmVudCBjaXJjdWxhciBpbXBvcnRzLgorICAgICAgICBtZSA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgdGlkID0gc2VsZi5vd25lcgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbG9jayA9IF9ibG9ja2luZ19vbi5nZXQodGlkKQorICAgICAgICAgICAgaWYgbG9jayBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgdGlkID0gbG9jay5vd25lcgorICAgICAgICAgICAgaWYgdGlkID09IG1lOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgYWNxdWlyZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEFjcXVpcmUgdGhlIG1vZHVsZSBsb2NrLiAgSWYgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQsCisgICAgICAgIGEgX0RlYWRsb2NrRXJyb3IgaXMgcmFpc2VkLgorICAgICAgICBPdGhlcndpc2UsIHRoZSBsb2NrIGlzIGFsd2F5cyBhY3F1aXJlZCBhbmQgVHJ1ZSBpcyByZXR1cm5lZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRpZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgX2Jsb2NraW5nX29uW3RpZF0gPSBzZWxmCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmxvY2s6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY291bnQgPT0gMCBvciBzZWxmLm93bmVyID09IHRpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSB0aWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5oYXNfZGVhZGxvY2soKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIF9EZWFkbG9ja0Vycm9yKCJkZWFkbG9jayBkZXRlY3RlZCBieSAlciIgJSBzZWxmKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndha2V1cC5hY3F1aXJlKEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2FpdGVycyArPSAxCisgICAgICAgICAgICAgICAgIyBXYWl0IGZvciBhIHJlbGVhc2UoKSBjYWxsCisgICAgICAgICAgICAgICAgc2VsZi53YWtldXAuYWNxdWlyZSgpCisgICAgICAgICAgICAgICAgc2VsZi53YWtldXAucmVsZWFzZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgX2Jsb2NraW5nX29uW3RpZF0KKworICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHdpdGggc2VsZi5sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5vd25lciAhPSB0aWQ6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKKyAgICAgICAgICAgIGFzc2VydCBzZWxmLmNvdW50ID4gMAorICAgICAgICAgICAgc2VsZi5jb3VudCAtPSAxCisgICAgICAgICAgICBpZiBzZWxmLmNvdW50ID09IDA6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLndhaXRlcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYud2FpdGVycyAtPSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLnJlbGVhc2UoKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIl9Nb2R1bGVMb2NrKCVyKSBhdCAlZCIgJSAoc2VsZi5uYW1lLCBpZChzZWxmKSkKKworCitjbGFzcyBfRHVtbXlNb2R1bGVMb2NrOgorICAgICIiIkEgc2ltcGxlIF9Nb2R1bGVMb2NrIGVxdWl2YWxlbnQgZm9yIFB5dGhvbiBidWlsZHMgd2l0aG91dAorICAgIG11bHRpLXRocmVhZGluZyBzdXBwb3J0LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuY291bnQgPSAwCisKKyAgICBkZWYgYWNxdWlyZShzZWxmKToKKyAgICAgICAgc2VsZi5jb3VudCArPSAxCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKKyAgICAgICAgc2VsZi5jb3VudCAtPSAxCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX0R1bW15TW9kdWxlTG9jayglcikgYXQgJWQiICUgKHNlbGYubmFtZSwgaWQoc2VsZikpCisKKworIyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIGZvciBjb25zdW1wdGlvbiBieSBQeXRob24vaW1wb3J0LmMuCisKK2RlZiBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpOgorICAgICIiIkdldCBvciBjcmVhdGUgdGhlIG1vZHVsZSBsb2NrIGZvciBhIGdpdmVuIG1vZHVsZSBuYW1lLgorCisgICAgU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggdGhlIGltcG9ydCBsb2NrIHRha2VuLiIiIgorICAgIGxvY2sgPSBOb25lCisgICAgdHJ5OgorICAgICAgICBsb2NrID0gX21vZHVsZV9sb2Nrc1tuYW1lXSgpCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgaWYgbG9jayBpcyBOb25lOgorICAgICAgICBpZiBfdGhyZWFkIGlzIE5vbmU6CisgICAgICAgICAgICBsb2NrID0gX0R1bW15TW9kdWxlTG9jayhuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9jayA9IF9Nb2R1bGVMb2NrKG5hbWUpCisgICAgICAgIGRlZiBjYihfKToKKyAgICAgICAgICAgIGRlbCBfbW9kdWxlX2xvY2tzW25hbWVdCisgICAgICAgIF9tb2R1bGVfbG9ja3NbbmFtZV0gPSBfd2Vha3JlZi5yZWYobG9jaywgY2IpCisgICAgcmV0dXJuIGxvY2sKKworZGVmIF9sb2NrX3VubG9ja19tb2R1bGUobmFtZSk6CisgICAgIiIiUmVsZWFzZSB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrLCBhbmQgYWNxdWlyZXMgdGhlbiByZWxlYXNlIHRoZQorICAgIG1vZHVsZSBsb2NrIGZvciBhIGdpdmVuIG1vZHVsZSBuYW1lLgorICAgIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgYSBtb2R1bGUgaXMgY29tcGxldGVseSBpbml0aWFsaXplZCwgaW4gdGhlCisgICAgZXZlbnQgaXQgaXMgYmVpbmcgaW1wb3J0ZWQgYnkgYW5vdGhlciB0aHJlYWQuCisKKyAgICBTaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCB0aGUgaW1wb3J0IGxvY2sgdGFrZW4uIiIiCisgICAgbG9jayA9IF9nZXRfbW9kdWxlX2xvY2sobmFtZSkKKyAgICBfaW1wLnJlbGVhc2VfbG9jaygpCisgICAgdHJ5OgorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgIGV4Y2VwdCBfRGVhZGxvY2tFcnJvcjoKKyAgICAgICAgIyBDb25jdXJyZW50IGNpcmN1bGFyIGltcG9ydCwgd2UnbGwgYWNjZXB0IGEgcGFydGlhbGx5IGluaXRpYWxpemVkCisgICAgICAgICMgbW9kdWxlIG9iamVjdC4KKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGxvY2sucmVsZWFzZSgpCisKKyMgRnJhbWUgc3RyaXBwaW5nIG1hZ2ljICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGYsICphcmdzLCAqKmt3ZHMpOgorICAgICIiInJlbW92ZV9pbXBvcnRsaWJfZnJhbWVzIGluIGltcG9ydC5jIHdpbGwgYWx3YXlzIHJlbW92ZSBzZXF1ZW5jZXMKKyAgICBvZiBpbXBvcnRsaWIgZnJhbWVzIHRoYXQgZW5kIHdpdGggYSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24KKworICAgIFVzZSBpdCBpbnN0ZWFkIG9mIGEgbm9ybWFsIGNhbGwgaW4gcGxhY2VzIHdoZXJlIGluY2x1ZGluZyB0aGUgaW1wb3J0bGliCisgICAgZnJhbWVzIGludHJvZHVjZXMgdW53YW50ZWQgbm9pc2UgaW50byB0aGUgdHJhY2ViYWNrIChlLmcuIHdoZW4gZXhlY3V0aW5nCisgICAgbW9kdWxlIGNvZGUpCisgICAgIiIiCisgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dkcykKKworCisjIEZpbmRlci9sb2FkZXIgdXRpbGl0eSBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIk1hZ2ljIHdvcmQgdG8gcmVqZWN0IC5weWMgZmlsZXMgZ2VuZXJhdGVkIGJ5IG90aGVyIFB5dGhvbiB2ZXJzaW9ucy4KK0l0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCisKK1RoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKK2EgLnB5YyBmaWxlIGluIHRleHQgbW9kZSB0aGUgbWFnaWMgbnVtYmVyIHdpbGwgYmUgd3Jvbmc7IGFsc28sIHRoZQorQXBwbGUgTVBXIGNvbXBpbGVyIHN3YXBzIHRoZWlyIHZhbHVlcywgYm90Y2hpbmcgc3RyaW5nIGNvbnN0YW50cy4KKworVGhlIG1hZ2ljIG51bWJlcnMgbXVzdCBiZSBzcGFjZWQgYXBhcnQgYXQgbGVhc3QgMiB2YWx1ZXMsIGFzIHRoZQorLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgorb2RkIG51bWJlcnMgZm9yIHNvbWUgdGltZSBub3cuCisKK1RoZXJlIHdlcmUgYSB2YXJpZXR5IG9mIG9sZCBzY2hlbWVzIGZvciBzZXR0aW5nIHRoZSBtYWdpYyBudW1iZXIuCitUaGUgY3VycmVudCB3b3JraW5nIHNjaGVtZSBpcyB0byBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIHZhbHVlIGJ5CisxMC4KKworU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYworbnVtYmVyIGFsc28gaW5jbHVkZXMgYSBuZXcgIm1hZ2ljIHRhZyIsIGkuZS4gYSBodW1hbiByZWFkYWJsZSBzdHJpbmcgdXNlZAordG8gcmVwcmVzZW50IHRoZSBtYWdpYyBudW1iZXIgaW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMuICBXaGVuIHlvdSBjaGFuZ2UKK3RoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcworY2FuIGJlIG5hbWVkIGFmdGVyIHRoZSBQeXRob24gbWFqb3IgdmVyc2lvbiBvZiB0aGUgbWFnaWMgbnVtYmVyIGJ1bXAsIGJ1dAoraXQgY2FuIHJlYWxseSBiZSBhbnl0aGluZywgYXMgbG9uZyBhcyBpdCdzIGRpZmZlcmVudCB0aGFuIGFueXRoaW5nIGVsc2UKK3RoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZword2l0aCBQeXRob24gMy4yYTAuCisKK0tub3duIHZhbHVlczoKKyBQeXRob24gMS41OiAgIDIwMTIxCisgUHl0aG9uIDEuNS4xOiAyMDEyMQorICAgIFB5dGhvbiAxLjUuMjogMjAxMjEKKyAgICBQeXRob24gMS42OiAgIDUwNDI4CisgICAgUHl0aG9uIDIuMDogICA1MDgyMworICAgIFB5dGhvbiAyLjAuMTogNTA4MjMKKyAgICBQeXRob24gMi4xOiAgIDYwMjAyCisgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgorICAgIFB5dGhvbiAyLjEuMjogNjAyMDIKKyAgICBQeXRob24gMi4yOiAgIDYwNzE3CisgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQorICAgIFB5dGhvbiAyLjNhMDogNjIwMjEKKyAgICBQeXRob24gMi4zYTA6IDYyMDExICghKQorICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKKyAgICBQeXRob24gMi40YTM6IDYyMDUxCisgICAgUHl0aG9uIDIuNGIxOiA2MjA2MQorICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKKyAgICBQeXRob24gMi41YTA6IDYyMDgxIChhc3QtYnJhbmNoKQorICAgIFB5dGhvbiAyLjVhMDogNjIwOTEgKHdpdGgpCisgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQorICAgIFB5dGhvbiAyLjViMzogNjIxMDEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uKQorICAgIFB5dGhvbiAyLjViMzogNjIxMTEgKGZpeCB3cm9uZyBjb2RlOiB4ICs9IHlpZWxkKQorICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmluZyBjb25zdGFudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQpCisgICAgUHl0aG9uIDIuNWMyOiA2MjEzMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4gaW4gbGlzdGNvbXAvZ2VuZXhwKQorICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCisgICAgUHl0aG9uIDIuNmExOiA2MjE2MSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikKKyAgICBQeXRob24gMzAwMDogICAzMDAwCisgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQorICAgICAgICAgICAgICAgICAgIDMwMjAgKGFkZGVkIEJVSUxEX1NFVCkKKyAgICAgICAgICAgICAgICAgICAzMDMwIChhZGRlZCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCisgICAgICAgICAgICAgICAgICAgMzA1MCAocHJpbnQgYmVjb21lcyBhIGZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgIDMwNjAgKFBFUCAzMTE1IG1ldGFjbGFzcyBzeW50YXgpCisgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQorICAgICAgICAgICAgICAgICAgIDMwNzEgKFBFUCAzMTA5IHJhaXNlIGNoYW5nZXMpCisgICAgICAgICAgICAgICAgICAgMzA4MSAoUEVQIDMxMzcgbWFrZSBfX2ZpbGVfXyBhbmQgX19uYW1lX18gdW5pY29kZSkKKyAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQorICAgICAgICAgICAgICAgICAgIDMxMDEgKG1lcmdlIGZyb20gMi42YTAsIHNlZSA2MjE1MSkKKyAgICAgICAgICAgICAgICAgICAzMTAzIChfX2ZpbGVfXyBwb2ludHMgdG8gc291cmNlIGZpbGUpCisgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KKyAgICBQeXRob24gMy4wYTU6IDMxMzEgKGxleGljYWwgZXhjZXB0aW9uIHN0YWNraW5nLCBpbmNsdWRpbmcgUE9QX0VYQ0VQVCkKKyAgICBQeXRob24gMy4xYTA6IDMxNDEgKG9wdGltaXplIGxpc3QsIHNldCBhbmQgZGljdCBjb21wcmVoZW5zaW9uczoKKyAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCisgICAgUHl0aG9uIDMuMWEwOiAzMTUxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKKyAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKKyAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQorICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCisgICAgUHl0aG9uIDMuMmExOiAzMTcwIChhZGQgRFVQX1RPUF9UV08sIHJlbW92ZSBEVVBfVE9QWCBhbmQgUk9UX0ZPVVIpCisgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyAgICBQeXRob24gMy4yYTIgIDMxODAgKGFkZCBERUxFVEVfREVSRUYpCisgICAgUHl0aG9uIDMuM2EwICAzMTkwIF9fY2xhc3NfXyBzdXBlciBjbG9zdXJlIGNoYW5nZWQKKyAgICBQeXRob24gMy4zYTAgIDMyMDAgKF9fcXVhbG5hbWVfXyBhZGRlZCkKKyAgICAgICAgICAgICAgICAgICAgIDMyMTAgKGFkZGVkIHNpemUgbW9kdWxvIDIqKjMyIHRvIHRoZSBweWMgaGVhZGVyKQorICAgIFB5dGhvbiAzLjNhMSAgMzIyMCAoY2hhbmdlZCBQRVAgMzgwIGltcGxlbWVudGF0aW9uKQorICAgIFB5dGhvbiAzLjNhNCAgMzIzMCAocmV2ZXJ0IGNoYW5nZXMgdG8gaW1wbGljaXQgX19jbGFzc19fIGNsb3N1cmUpCisKK01BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KK2xvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5CitkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKS4KKworIiIiCitfUkFXX01BR0lDX05VTUJFUiA9IDMyMzAgfCBvcmQoJ1xyJykgPDwgMTYgfCBvcmQoJ1xuJykgPDwgMjQKK19NQUdJQ19CWVRFUyA9IGJ5dGVzKF9SQVdfTUFHSUNfTlVNQkVSID4+IG4gJiAweGZmIGZvciBuIGluIHJhbmdlKDAsIDI1LCA4KSkKKworX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCisKK1NPVVJDRV9TVUZGSVhFUyA9IFsnLnB5J10gICMgX3NldHVwKCkgYWRkcyAucHl3IGFzIG5lZWRlZC4KKworREVCVUdfQllURUNPREVfU1VGRklYRVMgPSBbJy5weWMnXQorT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHlvJ10KKworZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUpOgorICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuCisKKyAgICBUaGUgLnB5IGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0byB0aGUKKyAgICAucHljLy5weW8gZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLiAgVGhlIGV4dGVuc2lvbgorICAgIHdpbGwgYmUgLnB5YyB1bmxlc3Mgc3lzLmZsYWdzLm9wdGltaXplIGlzIG5vbi16ZXJvLCB0aGVuIGl0IHdpbGwgYmUgLnB5by4KKworICAgIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCB0aGVuIGl0IG11c3QgYmUgYSBib29sZWFuIGFuZCBpcyB1c2VkIGluCisgICAgcGxhY2Ugb2Ygc3lzLmZsYWdzLm9wdGltaXplLgorCisgICAgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBkZWJ1ZyA9IG5vdCBzeXMuZmxhZ3Mub3B0aW1pemUgaWYgZGVidWdfb3ZlcnJpZGUgaXMgTm9uZSBlbHNlIGRlYnVnX292ZXJyaWRlCisgICAgaWYgZGVidWc6CisgICAgICAgIHN1ZmZpeGVzID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKKyAgICBlbHNlOgorICAgICAgICBzdWZmaXhlcyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUworICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQorICAgIGJhc2VfZmlsZW5hbWUsIHNlcCwgXyA9IHRhaWwucGFydGl0aW9uKCcuJykKKyAgICB0YWcgPSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCisgICAgaWYgdGFnIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgZmlsZW5hbWUgPSAnJy5qb2luKFtiYXNlX2ZpbGVuYW1lLCBzZXAsIHRhZywgc3VmZml4ZXNbMF1dKQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIF9QWUNBQ0hFLCBmaWxlbmFtZSkKKworCitkZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6CisgICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuCisKKyAgICBUaGUgLnB5Yy8ucHlvIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bworICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMvLnB5byBmaWxlLiAgSWYgcGF0aCBkb2VzCisgICAgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiBJZgorICAgIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgorCisgICAgIiIiCisgICAgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQorICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQorICAgIGhlYWQsIHB5Y2FjaGUgPSBfcGF0aF9zcGxpdChoZWFkKQorICAgIGlmIHB5Y2FjaGUgIT0gX1BZQ0FDSEU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IG5vdCBib3R0b20tbGV2ZWwgZGlyZWN0b3J5IGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KF9QWUNBQ0hFLCBwYXRoKSkKKyAgICBpZiBweWNhY2hlX2ZpbGVuYW1lLmNvdW50KCcuJykgIT0gMjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZXhwZWN0ZWQgb25seSAyIGRvdHMgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQocHljYWNoZV9maWxlbmFtZSkpCisgICAgYmFzZV9maWxlbmFtZSA9IHB5Y2FjaGVfZmlsZW5hbWUucGFydGl0aW9uKCcuJylbMF0KKyAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBiYXNlX2ZpbGVuYW1lICsgU09VUkNFX1NVRkZJWEVTWzBdKQorCisKK2RlZiBfZ2V0X3NvdXJjZWZpbGUoYnl0ZWNvZGVfcGF0aCk6CisgICAgIiIiQ29udmVydCBhIGJ5dGVjb2RlIGZpbGUgcGF0aCB0byBhIHNvdXJjZSBwYXRoIChpZiBwb3NzaWJsZSkuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBwdXJlbHkgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGZvcgorICAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aEZpbGVuYW1lcygpIGluIHRoZSBDIEFQSS4KKworICAgICIiIgorICAgIGlmIGxlbihieXRlY29kZV9wYXRoKSA9PSAwOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJlc3QsIF8sIGV4dGVuc2lvbiA9IGJ5dGVjb2RlX3BhdGgucnBhcml0aW9uKCcuJykKKyAgICBpZiBub3QgcmVzdCBvciBleHRlbnNpb24ubG93ZXIoKVstMzotMV0gIT0gJy5weSc6CisgICAgICAgIHJldHVybiBieXRlY29kZV9wYXRoCisKKyAgICB0cnk6CisgICAgICAgIHNvdXJjZV9wYXRoID0gc291cmNlX2Zyb21fY2FjaGUoYnl0ZWNvZGVfcGF0aCkKKyAgICBleGNlcHQgKE5vdEltcGxlbWVudGVkRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBzb3VyY2VfcGF0aCA9IGJ5dGNvZGVfcGF0aFstMTpdCisKKyAgICByZXR1cm4gc291cmNlX3BhdGggaWYgX3BhdGhfaXNmaWxlKHNvdXJjZV9zdGF0cykgZWxzZSBieXRlY29kZV9wYXRoCisKKworZGVmIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSwgKmFyZ3MpOgorICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKKyAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKKyAgICAgICAgaWYgbm90IG1lc3NhZ2Uuc3RhcnRzd2l0aCgoJyMnLCAnaW1wb3J0ICcpKToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnIyAnICsgbWVzc2FnZQorICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKKwogCiBkZWYgc2V0X3BhY2thZ2UoZnhuKToKICAgICAiIiJTZXQgX19wYWNrYWdlX18gb24gdGhlIHJldHVybmVkIG1vZHVsZS4iIiIKLSAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBzZXRfcGFja2FnZV93cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIG1vZHVsZSA9IGZ4bigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykgb3IgbW9kdWxlLl9fcGFja2FnZV9fIGlzIE5vbmU6CisgICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgogICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fbmFtZV9fCiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgogICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgIF93cmFwKHdyYXBwZXIsIGZ4bikKLSAgICByZXR1cm4gd3JhcHBlcgorICAgIF93cmFwKHNldF9wYWNrYWdlX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gc2V0X3BhY2thZ2Vfd3JhcHBlcgogCiAKIGRlZiBzZXRfbG9hZGVyKGZ4bik6CiAgICAgIiIiU2V0IF9fbG9hZGVyX18gb24gdGhlIHJldHVybmVkIG1vZHVsZS4iIiIKLSAgICBkZWYgd3JhcHBlcihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBzZXRfbG9hZGVyX3dyYXBwZXIoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgbW9kdWxlID0gZnhuKHNlbGYsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpOgogICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCiAgICAgICAgIHJldHVybiBtb2R1bGUKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChzZXRfbG9hZGVyX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gc2V0X2xvYWRlcl93cmFwcGVyCiAKIAogZGVmIG1vZHVsZV9mb3JfbG9hZGVyKGZ4bik6CkBAIC0xMjAsMzEgKzUyMCw1NCBAQAogCiAgICAgVGhlIGRlY29yYXRlZCBmdW5jdGlvbiBpcyBwYXNzZWQgdGhlIG1vZHVsZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgbW9kdWxlCiAgICAgbmFtZS4gVGhlIG1vZHVsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uIGlzIGVpdGhlciBmcm9tIHN5cy5tb2R1bGVzIGlmCi0gICAgaXQgYWxyZWFkeSBleGlzdHMgb3IgaXMgYSBuZXcgbW9kdWxlIHdoaWNoIGhhcyBfX25hbWVfXyBzZXQgYW5kIGlzIGluc2VydGVkCi0gICAgaW50byBzeXMubW9kdWxlcy4gSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlIGRlY29yYXRvciBjcmVhdGVkIHRoZQotICAgIG1vZHVsZSBpdCBpcyBzdWJzZXF1ZW50bHkgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzLgorICAgIGl0IGFscmVhZHkgZXhpc3RzIG9yIGlzIGEgbmV3IG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBpcyBuZXcsIHRoZW4gX19uYW1lX18KKyAgICBpcyBzZXQgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBtZXRob2QsIF9fbG9hZGVyX18gaXMgc2V0IHRvIHNlbGYsIGFuZAorICAgIF9fcGFja2FnZV9fIGlzIHNldCBhY2NvcmRpbmdseSAoaWYgc2VsZi5pc19wYWNrYWdlKCkgaXMgZGVmaW5lZCkgd2lsbCBiZSBzZXQKKyAgICBiZWZvcmUgaXQgaXMgcGFzc2VkIHRvIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gKGlmIHNlbGYuaXNfcGFja2FnZSgpIGRvZXMKKyAgICBub3Qgd29yayBmb3IgdGhlIG1vZHVsZSBpdCB3aWxsIGJlIHNldCBwb3N0LWxvYWQpLgorCisgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlIGRlY29yYXRvciBjcmVhdGVkIHRoZSBtb2R1bGUgaXQgaXMKKyAgICBzdWJzZXF1ZW50bHkgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzLgogCiAgICAgVGhlIGRlY29yYXRvciBhc3N1bWVzIHRoYXQgdGhlIGRlY29yYXRlZCBmdW5jdGlvbiB0YWtlcyB0aGUgbW9kdWxlIG5hbWUgYXMKICAgICB0aGUgc2Vjb25kIGFyZ3VtZW50LgogCiAgICAgIiIiCi0gICAgZGVmIGRlY29yYXRlZChzZWxmLCBmdWxsbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcihzZWxmLCBmdWxsbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXMuZ2V0KGZ1bGxuYW1lKQotICAgICAgICBpc19yZWxvYWQgPSBib29sKG1vZHVsZSkKKyAgICAgICAgaXNfcmVsb2FkID0gbW9kdWxlIGlzIG5vdCBOb25lCiAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQ6CiAgICAgICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBvcGVuKCkgaXMgY2FsbGVkIGFzIHRoZSAnaW8nIG1vZHVsZQogICAgICAgICAgICAgIyBpbXBsaWNpdGx5IGltcG9ydHMgJ2xvY2FsZScgYW5kIHdvdWxkIG90aGVyd2lzZSB0cmlnZ2VyIGFuCiAgICAgICAgICAgICAjIGluZmluaXRlIGxvb3AuCi0gICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IG5ld19tb2R1bGUoZnVsbG5hbWUpCisgICAgICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBwdXR0aW5nIHRoZSBtb2R1bGUgaW4gc3lzLm1vZHVsZXMKKyAgICAgICAgICAgICMgKG90aGVyd2lzZSBhbiBvcHRpbWl6YXRpb24gc2hvcnRjdXQgaW4gaW1wb3J0LmMgYmVjb21lcyB3cm9uZykKKyAgICAgICAgICAgIG1vZHVsZS5fX2luaXRpYWxpemluZ19fID0gVHJ1ZQogICAgICAgICAgICAgc3lzLm1vZHVsZXNbZnVsbG5hbWVdID0gbW9kdWxlCisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpc19wYWNrYWdlID0gc2VsZi5pc19wYWNrYWdlKGZ1bGxuYW1lKQorICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgaXNfcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gZnVsbG5hbWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1vZHVsZS5fX2luaXRpYWxpemluZ19fID0gVHJ1ZQogICAgICAgICB0cnk6CisgICAgICAgICAgICAjIElmIF9fcGFja2FnZV9fIHdhcyBub3Qgc2V0IGFib3ZlLCBfX2ltcG9ydF9fKCkgd2lsbCBkbyBpdCBsYXRlci4KICAgICAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgbW9kdWxlLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQ6CiAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQogICAgICAgICAgICAgcmFpc2UKLSAgICBfd3JhcChkZWNvcmF0ZWQsIGZ4bikKLSAgICByZXR1cm4gZGVjb3JhdGVkCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IEZhbHNlCisgICAgX3dyYXAobW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyCiAKIAogZGVmIF9jaGVja19uYW1lKG1ldGhvZCk6CkBAIC0xNTUsMzggKzU3OCw1MSBAQAogICAgIGNvbXBhcmVkIGFnYWluc3QuIElmIHRoZSBjb21wYXJpc29uIGZhaWxzIHRoZW4gSW1wb3J0RXJyb3IgaXMgcmFpc2VkLgogCiAgICAgIiIiCi0gICAgZGVmIGlubmVyKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIHNlbGYuX25hbWUgIT0gbmFtZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJsb2FkZXIgY2Fubm90IGhhbmRsZSAlcyIgJSBuYW1lKQorICAgIGRlZiBfY2hlY2tfbmFtZV93cmFwcGVyKHNlbGYsIG5hbWU9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQorICAgICAgICBlbGlmIHNlbGYubmFtZSAhPSBuYW1lOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImxvYWRlciBjYW5ub3QgaGFuZGxlICVzIiAlIG5hbWUsIG5hbWU9bmFtZSkKICAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCi0gICAgX3dyYXAoaW5uZXIsIG1ldGhvZCkKLSAgICByZXR1cm4gaW5uZXIKKyAgICBfd3JhcChfY2hlY2tfbmFtZV93cmFwcGVyLCBtZXRob2QpCisgICAgcmV0dXJuIF9jaGVja19uYW1lX3dyYXBwZXIKIAogCiBkZWYgX3JlcXVpcmVzX2J1aWx0aW4oZnhuKToKICAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoZSBuYW1lZCBtb2R1bGUgaXMgYnVpbHQtaW4uIiIiCi0gICAgZGVmIHdyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgIGRlZiBfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgaWYgZnVsbG5hbWUgbm90IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJ7MH0gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlIi5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInt9IGlzIG5vdCBhIGJ1aWx0LWluIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgZnVsbG5hbWUpCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoX3JlcXVpcmVzX2J1aWx0aW5fd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyCiAKIAogZGVmIF9yZXF1aXJlc19mcm96ZW4oZnhuKToKICAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoZSBuYW1lZCBtb2R1bGUgaXMgZnJvemVuLiIiIgotICAgIGRlZiB3cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgaWYgbm90IGltcC5pc19mcm96ZW4oZnVsbG5hbWUpOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInswfSBpcyBub3QgYSBmcm96ZW4gbW9kdWxlIi5mb3JtYXQoZnVsbG5hbWUpKQorICAgIGRlZiBfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICBpZiBub3QgX2ltcC5pc19mcm96ZW4oZnVsbG5hbWUpOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInt9IGlzIG5vdCBhIGZyb3plbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICByZXR1cm4gZnhuKHNlbGYsIGZ1bGxuYW1lKQotICAgIF93cmFwKHdyYXBwZXIsIGZ4bikKLSAgICByZXR1cm4gd3JhcHBlcgorICAgIF93cmFwKF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIKIAogCi1kZWYgX3N1ZmZpeF9saXN0KHN1ZmZpeF90eXBlKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgYmFzZWQgb24gdGhlIGltcCBmaWxlIHR5cGUuIiIiCi0gICAgcmV0dXJuIFtzdWZmaXhbMF0gZm9yIHN1ZmZpeCBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCkKLSAgICAgICAgICAgIGlmIHN1ZmZpeFsyXSA9PSBzdWZmaXhfdHlwZV0KK2RlZiBfZmluZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSk6CisgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGJ5IGRlbGVnYXRpbmcgdG8KKyAgICBzZWxmLmZpbmRfbG9hZGVyKCkuIiIiCisgICAgIyBDYWxsIGZpbmRfbG9hZGVyKCkuIElmIGl0IHJldHVybnMgYSBzdHJpbmcgKGluZGljYXRpbmcgdGhpcworICAgICMgaXMgYSBuYW1lc3BhY2UgcGFja2FnZSBwb3J0aW9uKSwgZ2VuZXJhdGUgYSB3YXJuaW5nIGFuZAorICAgICMgcmV0dXJuIE5vbmUuCisgICAgbG9hZGVyLCBwb3J0aW9ucyA9IHNlbGYuZmluZF9sb2FkZXIoZnVsbG5hbWUpCisgICAgaWYgbG9hZGVyIGlzIE5vbmUgYW5kIGxlbihwb3J0aW9ucyk6CisgICAgICAgIG1zZyA9ICJOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSB7fTogbWlzc2luZyBfX2luaXRfXyIKKyAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLmZvcm1hdChwb3J0aW9uc1swXSksIEltcG9ydFdhcm5pbmcpCisgICAgcmV0dXJuIGxvYWRlcgorCisKIAogCiAjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0yMDEsNiArNjM3LDEwIEBACiAgICAgIiIiCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtb2R1bGUpOgorICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAoYnVpbHQtaW4pPiIuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIHRoZSBidWlsdC1pbiBtb2R1bGUuCiAKQEAgLTIwOSw3ICs2NDksNyBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBjbHMgaWYgaW1wLmlzX2J1aWx0aW4oZnVsbG5hbWUpIGVsc2UgTm9uZQorICAgICAgICByZXR1cm4gY2xzIGlmIF9pbXAuaXNfYnVpbHRpbihmdWxsbmFtZSkgZWxzZSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAc2V0X3BhY2thZ2UKQEAgLTIxOSw3ICs2NTksNyBAQAogICAgICAgICAiIiJMb2FkIGEgYnVpbHQtaW4gbW9kdWxlLiIiIgogICAgICAgICBpc19yZWxvYWQgPSBmdWxsbmFtZSBpbiBzeXMubW9kdWxlcwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW1wLmluaXRfYnVpbHRpbihmdWxsbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuaW5pdF9idWlsdGluLCBmdWxsbmFtZSkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZCBhbmQgZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQpAQCAtMjQwLDcgKzY4MCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19idWlsdGluCiAgICAgZGVmIGlzX3BhY2thZ2UoY2xzLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIGJ1aWx0LWluIG1vZHVsZSBhcmUgbmV2ZXIgcGFja2FnZXMuIiIiCisgICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBidWlsdC1pbiBtb2R1bGVzIGFyZSBuZXZlciBwYWNrYWdlcy4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIApAQCAtMjU0LDkgKzY5NCwxMyBAQAogICAgICIiIgogCiAgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChmcm96ZW4pPiIuZm9ybWF0KG0uX19uYW1lX18pCisKKyAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAgIiIiRmluZCBhIGZyb3plbiBtb2R1bGUuIiIiCi0gICAgICAgIHJldHVybiBjbHMgaWYgaW1wLmlzX2Zyb3plbihmdWxsbmFtZSkgZWxzZSBOb25lCisgICAgICAgIHJldHVybiBjbHMgaWYgX2ltcC5pc19mcm96ZW4oZnVsbG5hbWUpIGVsc2UgTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQHNldF9wYWNrYWdlCkBAIC0yNjYsNyArNzEwLDEwIEBACiAgICAgICAgICIiIkxvYWQgYSBmcm96ZW4gbW9kdWxlLiIiIgogICAgICAgICBpc19yZWxvYWQgPSBmdWxsbmFtZSBpbiBzeXMubW9kdWxlcwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW1wLmluaXRfZnJvemVuKGZ1bGxuYW1lKQorICAgICAgICAgICAgbSA9IF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5pbml0X2Zyb3plbiwgZnVsbG5hbWUpCisgICAgICAgICAgICAjIExldCBvdXIgb3duIG1vZHVsZV9yZXByKCkgbWV0aG9kIHByb2R1Y2UgYSBzdWl0YWJsZSByZXByLgorICAgICAgICAgICAgZGVsIG0uX19maWxlX18KKyAgICAgICAgICAgIHJldHVybiBtCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KQEAgLTI3Niw3ICs3MjMsNyBAQAogICAgIEBfcmVxdWlyZXNfZnJvemVuCiAgICAgZGVmIGdldF9jb2RlKGNscywgZnVsbG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGZvciB0aGUgZnJvemVuIG1vZHVsZS4iIiIKLSAgICAgICAgcmV0dXJuIGltcC5nZXRfZnJvemVuX29iamVjdChmdWxsbmFtZSkKKyAgICAgICAgcmV0dXJuIF9pbXAuZ2V0X2Zyb3plbl9vYmplY3QoZnVsbG5hbWUpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2Zyb3plbgpAQCAtMjg3LDQwICs3MzQsMTE3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19mcm96ZW4KICAgICBkZWYgaXNfcGFja2FnZShjbHMsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIGlmIHRoZSBmcm96ZW4gbW9kdWxlIGlzIGEgcGFja2FnZS4iIiIKLSAgICAgICAgcmV0dXJuIGltcC5pc19mcm96ZW5fcGFja2FnZShmdWxsbmFtZSkKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGZyb3plbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgorICAgICAgICByZXR1cm4gX2ltcC5pc19mcm96ZW5fcGFja2FnZShmdWxsbmFtZSkKKworCitjbGFzcyBXaW5kb3dzUmVnaXN0cnlGaW5kZXI6CisKKyAgICAiIiJNZXRhIHBhdGggZmluZGVyIGZvciBtb2R1bGVzIGRlY2xhcmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LgorICAgICIiIgorCisgICAgUkVHSVNUUllfS0VZID0gKAorICAgICAgICAiU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3N5c192ZXJzaW9ufSIKKyAgICAgICAgIlxcTW9kdWxlc1xce2Z1bGxuYW1lfSIpCisgICAgUkVHSVNUUllfS0VZX0RFQlVHID0gKAorICAgICAgICAiU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3N5c192ZXJzaW9ufSIKKyAgICAgICAgIlxcTW9kdWxlc1xce2Z1bGxuYW1lfVxcRGVidWciKQorICAgIERFQlVHX0JVSUxEID0gRmFsc2UgICMgQ2hhbmdlZCBpbiBfc2V0dXAoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9vcGVuX3JlZ2lzdHJ5KGNscywga2V5KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCisgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9MT0NBTF9NQUNISU5FLCBrZXkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NlYXJjaF9yZWdpc3RyeShjbHMsIGZ1bGxuYW1lKToKKyAgICAgICAgaWYgY2xzLkRFQlVHX0JVSUxEOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWV9ERUJVRworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWQorICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgorICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gX3dpbnJlZy5RdWVyeVZhbHVlKGhrZXksICIiKQorICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGZpbGVwYXRoCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgIiIiRmluZCBtb2R1bGUgbmFtZWQgaW4gdGhlIHJlZ2lzdHJ5LiIiIgorICAgICAgICBmaWxlcGF0aCA9IGNscy5fc2VhcmNoX3JlZ2lzdHJ5KGZ1bGxuYW1lKQorICAgICAgICBpZiBmaWxlcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX29zLnN0YXQoZmlsZXBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMsIF8gaW4gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6CisgICAgICAgICAgICBpZiBmaWxlcGF0aC5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgorICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIoZnVsbG5hbWUsIGZpbGVwYXRoKQogCiAKIGNsYXNzIF9Mb2FkZXJCYXNpY3M6CiAKICAgICAiIiJCYXNlIGNsYXNzIG9mIGNvbW1vbiBjb2RlIG5lZWRlZCBieSBib3RoIFNvdXJjZUxvYWRlciBhbmQKLSAgICBfU291cmNlbGVzc0ZpbGVMb2FkZXIuIiIiCisgICAgU291cmNlbGVzc0ZpbGVMb2FkZXIuIiIiCiAKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuaXNfcGFja2FnZSBieSBjaGVja2luZyBpZgogICAgICAgICB0aGUgcGF0aCByZXR1cm5lZCBieSBnZXRfZmlsZW5hbWUgaGFzIGEgZmlsZW5hbWUgb2YgJ19faW5pdF9fLnB5Jy4iIiIKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkucnBhcnRpdGlvbihwYXRoX3NlcClbMl0KLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnJzcGxpdCgnLicsIDEpWzBdID09ICdfX2luaXRfXycKKyAgICAgICAgZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkpWzFdCisgICAgICAgIGZpbGVuYW1lX2Jhc2UgPSBmaWxlbmFtZS5yc3BsaXQoJy4nLCAxKVswXQorICAgICAgICB0YWlsX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KKyAgICAgICAgcmV0dXJuIGZpbGVuYW1lX2Jhc2UgPT0gJ19faW5pdF9fJyBhbmQgdGFpbF9uYW1lICE9ICdfX2luaXRfXycKIAotICAgIGRlZiBfYnl0ZXNfZnJvbV9ieXRlY29kZShzZWxmLCBmdWxsbmFtZSwgZGF0YSwgc291cmNlX210aW1lKToKKyAgICBkZWYgX2J5dGVzX2Zyb21fYnl0ZWNvZGUoc2VsZiwgZnVsbG5hbWUsIGRhdGEsIGJ5dGVjb2RlX3BhdGgsIHNvdXJjZV9zdGF0cyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbWFyc2hhbGxlZCBieXRlcyBmcm9tIGJ5dGVjb2RlLCB2ZXJpZnlpbmcgdGhlIG1hZ2ljCi0gICAgICAgIG51bWJlciBhbmQgdGltZXN0YW1wIGFsb25nIHRoZSB3YXkuCisgICAgICAgIG51bWJlciwgdGltZXN0YW1wIGFuZCBzb3VyY2Ugc2l6ZSBhbG9uZyB0aGUgd2F5LgogCi0gICAgICAgIElmIHNvdXJjZV9tdGltZSBpcyBOb25lIHRoZW4gc2tpcCB0aGUgdGltZXN0YW1wIGNoZWNrLgorICAgICAgICBJZiBzb3VyY2Vfc3RhdHMgaXMgTm9uZSB0aGVuIHNraXAgdGhlIHRpbWVzdGFtcCBjaGVjay4KIAogICAgICAgICAiIiIKICAgICAgICAgbWFnaWMgPSBkYXRhWzo0XQogICAgICAgICByYXdfdGltZXN0YW1wID0gZGF0YVs0OjhdCi0gICAgICAgIGlmIGxlbihtYWdpYykgIT0gNCBvciBtYWdpYyAhPSBpbXAuZ2V0X21hZ2ljKCk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYmFkIG1hZ2ljIG51bWJlciBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgcmF3X3NpemUgPSBkYXRhWzg6MTJdCisgICAgICAgIGlmIG1hZ2ljICE9IF9NQUdJQ19CWVRFUzoKKyAgICAgICAgICAgIG1zZyA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChmdWxsbmFtZSwgbWFnaWMpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9ZnVsbG5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKICAgICAgICAgZWxpZiBsZW4ocmF3X3RpbWVzdGFtcCkgIT0gNDoKLSAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJiYWQgdGltZXN0YW1wIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQotICAgICAgICBlbGlmIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIG1hcnNoYWwuX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJ5dGVjb2RlIGlzIHN0YWxlIGZvciB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIHRpbWVzdGFtcCBpbiB7fScuZm9ybWF0KGZ1bGxuYW1lKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICAgICAgZWxpZiBsZW4ocmF3X3NpemUpICE9IDQ6CisgICAgICAgICAgICBtZXNzYWdlID0gJ2JhZCBzaXplIGluIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQorICAgICAgICBpZiBzb3VyY2Vfc3RhdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHNvdXJjZV9zdGF0c1snbXRpbWUnXSkKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3RpbWVzdGFtcCkgIT0gc291cmNlX210aW1lOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7fScuZm9ybWF0KGZ1bGxuYW1lKQorICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9ZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb3VyY2Vfc2l6ZSA9IHNvdXJjZV9zdGF0c1snc2l6ZSddICYgMHhGRkZGRkZGRgorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfc2l6ZSkgIT0gc291cmNlX3NpemU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVjb2RlIGlzIHN0YWxlIGZvciB7fSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKICAgICAgICAgIyBDYW4ndCByZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGFzIGVycm9ycyBmcm9tIG1hcnNoYWwgbG9hZGluZyBuZWVkIHRvCiAgICAgICAgICMgcHJvcGFnYXRlIGV2ZW4gd2hlbiBzb3VyY2UgaXMgYXZhaWxhYmxlLgotICAgICAgICByZXR1cm4gZGF0YVs4Ol0KKyAgICAgICAgcmV0dXJuIGRhdGFbMTI6XQogCiAgICAgQG1vZHVsZV9mb3JfbG9hZGVyCiAgICAgZGVmIF9sb2FkX21vZHVsZShzZWxmLCBtb2R1bGUsICosIHNvdXJjZWxlc3M9RmFsc2UpOgpAQCAtMzMwLDE2ICs4NTQsMTkgQEAKICAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmdldF9jb2RlKG5hbWUpCiAgICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IHNlbGYuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgIGlmIG5vdCBzb3VyY2VsZXNzOgotICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKQorICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBtb2R1bGUuX19maWxlX18KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gbW9kdWxlLl9fZmlsZV9fCiAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG5hbWUKICAgICAgICAgaWYgc2VsZi5pc19wYWNrYWdlKG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW21vZHVsZS5fX2ZpbGVfXy5yc3BsaXQocGF0aF9zZXAsIDEpWzBdXQorICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KG1vZHVsZS5fX2ZpbGVfXylbMF1dCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgotICAgICAgICBleGVjKGNvZGVfb2JqZWN0LCBtb2R1bGUuX19kaWN0X18pCisgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZXhlYywgY29kZV9vYmplY3QsIG1vZHVsZS5fX2RpY3RfXykKICAgICAgICAgcmV0dXJuIG1vZHVsZQogCiAKQEAgLTM0OCwxMiArODc1LDMxIEBACiAgICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIChhbiBpbnQpIGZvciB0aGUKICAgICAgICAgc3BlY2lmaWVkIHBhdGgsIHdoZXJlIHBhdGggaXMgYSBzdHIuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCi0KICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAorICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgcmV0dXJuaW5nIGEgbWV0YWRhdGEgZGljdCBmb3IgdGhlIHNwZWNpZmllZCBwYXRoCisgICAgICAgIHRvIGJ5IHRoZSBwYXRoIChzdHIpLgorICAgICAgICBQb3NzaWJsZSBrZXlzOgorICAgICAgICAtICdtdGltZScgKG1hbmRhdG9yeSkgaXMgdGhlIG51bWVyaWMgdGltZXN0YW1wIG9mIGxhc3Qgc291cmNlCisgICAgICAgICAgY29kZSBtb2RpZmljYXRpb247CisgICAgICAgIC0gJ3NpemUnIChvcHRpb25hbCkgaXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNvdXJjZSBjb2RlLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgdGhlIGxvYWRlciB0byByZWFkIGJ5dGVjb2RlIGZpbGVzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnBhdGhfbXRpbWUocGF0aCl9CisKKyAgICBkZWYgX2NhY2hlX2J5dGVjb2RlKHNlbGYsIHNvdXJjZV9wYXRoLCBjYWNoZV9wYXRoLCBkYXRhKToKKyAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHdoaWNoIHdyaXRlcyBkYXRhIChieXRlcykgdG8gYSBmaWxlIHBhdGggKGEgc3RyKS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIGZvciB0aGUgd3JpdGluZyBvZiBieXRlY29kZSBmaWxlcy4KKworICAgICAgICBUaGUgc291cmNlIHBhdGggaXMgbmVlZGVkIGluIG9yZGVyIHRvIGNvcnJlY3RseSB0cmFuc2ZlciBwZXJtaXNzaW9ucworICAgICAgICAiIiIKKyAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGRlbGVnYXRlIHRvIHNldF9kYXRhKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2RhdGEoY2FjaGVfcGF0aCwgZGF0YSkKKwogICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKICAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHdoaWNoIHdyaXRlcyBkYXRhIChieXRlcykgdG8gYSBmaWxlIHBhdGggKGEgc3RyKS4KIApAQCAtMzY5LDI4ICs5MTUsNDIgQEAKICAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHBhdGgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInNvdXJjZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZ2V0X2RhdGEoKSIpCi0gICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKF9pby5CeXRlc0lPKHNvdXJjZV9ieXRlcykucmVhZGxpbmUpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJzb3VyY2Ugbm90IGF2YWlsYWJsZSB0aHJvdWdoIGdldF9kYXRhKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKKyAgICAgICAgcmVhZHNvdXJjZSA9IF9pby5CeXRlc0lPKHNvdXJjZV9ieXRlcykucmVhZGxpbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcocmVhZHNvdXJjZSkKKyAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJGYWlsZWQgdG8gZGV0ZWN0IGVuY29kaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCiAgICAgICAgIG5ld2xpbmVfZGVjb2RlciA9IF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpCi0gICAgICAgIHJldHVybiBuZXdsaW5lX2RlY29kZXIuZGVjb2RlKHNvdXJjZV9ieXRlcy5kZWNvZGUoZW5jb2RpbmdbMF0pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gbmV3bGluZV9kZWNvZGVyLmRlY29kZShzb3VyY2VfYnl0ZXMuZGVjb2RlKGVuY29kaW5nWzBdKSkKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiRmFpbGVkIHRvIGRlY29kZSBzb3VyY2UgZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YwogCiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgSW5zcGVjdExvYWRlci5nZXRfY29kZS4KIAotICAgICAgICBSZWFkaW5nIG9mIGJ5dGVjb2RlIHJlcXVpcmVzIHBhdGhfbXRpbWUgdG8gYmUgaW1wbGVtZW50ZWQuIFRvIHdyaXRlCisgICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKICAgICAgICAgYnl0ZWNvZGUsIHNldF9kYXRhIG11c3QgYWxzbyBiZSBpbXBsZW1lbnRlZC4KIAogICAgICAgICAiIiIKICAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKLSAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2VfcGF0aCkKICAgICAgICAgc291cmNlX210aW1lID0gTm9uZQotICAgICAgICBpZiBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IE5vbmUKKyAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBzZWxmLnBhdGhfbXRpbWUoc291cmNlX3BhdGgpCisgICAgICAgICAgICAgICAgc3QgPSBzZWxmLnBhdGhfc3RhdHMoc291cmNlX3BhdGgpCiAgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IGludChzdFsnbXRpbWUnXSkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmdldF9kYXRhKGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CkBAIC0zOTgsMjkgKzk1OCwzNyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBzZWxmLl9ieXRlc19mcm9tX2J5dGVjb2RlKGZ1bGxuYW1lLCBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX210aW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0KQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gbWFyc2hhbC5sb2FkcyhieXRlc19kYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmb3VuZCwgY29kZV90eXBlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZm91bmQsIF9jb2RlX3R5cGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbXAuX2ZpeF9jb19maWxlbmFtZShmb3VuZCwgc291cmNlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJOb24tY29kZSBvYmplY3QgaW4ge30iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChieXRlY29kZV9wYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKLSAgICAgICAgY29kZV9vYmplY3QgPSBjb21waWxlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgsICdleGVjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCisgICAgICAgIGNvZGVfb2JqZWN0ID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChjb21waWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYnl0ZXMsIHNvdXJjZV9wYXRoLCAnZXhlYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9Jywgc291cmNlX3BhdGgpCiAgICAgICAgIGlmIChub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgYW5kIGJ5dGVjb2RlX3BhdGggaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgc291cmNlX210aW1lIGlzIG5vdCBOb25lKToKLSAgICAgICAgICAgICMgSWYgZS5nLiBKeXRob24gZXZlciBpbXBsZW1lbnRzIGltcC5jYWNoZV9mcm9tX3NvdXJjZSB0byBoYXZlCi0gICAgICAgICAgICAjIHRoZWlyIG93biBjYWNoZWQgZmlsZSBmb3JtYXQsIHRoaXMgYmxvY2sgb2YgY29kZSB3aWxsIG1vc3QgbGlrZWx5Ci0gICAgICAgICAgICAjIHRocm93IGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgICAgIGRhdGEgPSBieXRlYXJyYXkoaW1wLmdldF9tYWdpYygpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNvdXJjZV9tdGltZSkpCisgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShfTUFHSUNfQllURVMpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChfd19sb25nKHNvdXJjZV9tdGltZSkpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChfd19sb25nKGxlbihzb3VyY2VfYnl0ZXMpKSkKICAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuc2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCwgZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9ieXRlY29kZShzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSkKKyAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd3cm90ZSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIGNvZGVfb2JqZWN0CkBAIC00MzYsNyArMTAwNCw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkX21vZHVsZShmdWxsbmFtZSkKIAogCi1jbGFzcyBfRmlsZUxvYWRlcjoKK2NsYXNzIEZpbGVMb2FkZXI6CiAKICAgICAiIiJCYXNlIGZpbGUgbG9hZGVyIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIGxvYWRlciBwcm90b2NvbCBtZXRob2RzIHRoYXQKICAgICByZXF1aXJlIGZpbGUgc3lzdGVtIHVzYWdlLiIiIgpAQCAtNDQ0LDEzICsxMDEyLDIwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKICAgICAgICAgIiIiQ2FjaGUgdGhlIG1vZHVsZSBuYW1lIGFuZCB0aGUgcGF0aCB0byB0aGUgZmlsZSBmb3VuZCBieSB0aGUKICAgICAgICAgZmluZGVyLiIiIgotICAgICAgICBzZWxmLl9uYW1lID0gZnVsbG5hbWUKLSAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKKyAgICAgICAgc2VsZi5uYW1lID0gZnVsbG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgQF9jaGVja19uYW1lCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiTG9hZCBhIG1vZHVsZSBmcm9tIGEgZmlsZS4iIiIKKyAgICAgICAgIyBJc3N1ZSAjMTQ4NTc6IEF2b2lkIHRoZSB6ZXJvLWFyZ3VtZW50IGZvcm0gc28gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgICMgb2YgdGhhdCBmb3JtIGNhbiBiZSB1cGRhdGVkIHdpdGhvdXQgYnJlYWtpbmcgdGhlIGZyb3plbiBtb2R1bGUKKyAgICAgICAgcmV0dXJuIHN1cGVyKEZpbGVMb2FkZXIsIHNlbGYpLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQogCiAgICAgQF9jaGVja19uYW1lCiAgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aAogCiAgICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGRhdGEgZnJvbSBwYXRoIGFzIHJhdyBieXRlcy4iIiIKQEAgLTQ1OCw1MiArMTAzMyw1NiBAQAogICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCiAKIAotY2xhc3MgX1NvdXJjZUZpbGVMb2FkZXIoX0ZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6CitjbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6CiAKICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VMb2FkZXIgdXNpbmcgdGhlIGZpbGUgc3lzdGVtLiIiIgogCi0gICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBwYXRoLiIiIgotICAgICAgICByZXR1cm4gaW50KF9vcy5zdGF0KHBhdGgpLnN0X210aW1lKQorICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG1ldGFkYXRhIGZvciB0aGUgcGF0aC4iIiIKKyAgICAgICAgc3QgPSBfb3Muc3RhdChwYXRoKQorICAgICAgICByZXR1cm4geydtdGltZSc6IHN0LnN0X210aW1lLCAnc2l6ZSc6IHN0LnN0X3NpemV9CiAKLSAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CisgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6CisgICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kZSA9IF9vcy5zdGF0KHNvdXJjZV9wYXRoKS5zdF9tb2RlCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgbW9kZSA9IDBvNjY2CisgICAgICAgICMgV2UgYWx3YXlzIGVuc3VyZSB3cml0ZSBhY2Nlc3Mgc28gd2UgY2FuIHVwZGF0ZSBjYWNoZWQgZmlsZXMKKyAgICAgICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQorICAgICAgICBtb2RlIHw9IDBvMjAwCisgICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCisKKyAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSwgKiwgX21vZGU9MG82NjYpOgogICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKLSAgICAgICAgcGFyZW50LCBfLCBmaWxlbmFtZSA9IHBhdGgucnBhcnRpdGlvbihwYXRoX3NlcCkKKyAgICAgICAgcGFyZW50LCBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCiAgICAgICAgIHBhdGhfcGFydHMgPSBbXQogICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KICAgICAgICAgd2hpbGUgcGFyZW50IGFuZCBub3QgX3BhdGhfaXNkaXIocGFyZW50KToKLSAgICAgICAgICAgIHBhcmVudCwgXywgcGFydCA9IHBhcmVudC5ycGFydGl0aW9uKHBhdGhfc2VwKQorICAgICAgICAgICAgcGFyZW50LCBwYXJ0ID0gX3BhdGhfc3BsaXQocGFyZW50KQogICAgICAgICAgICAgcGF0aF9wYXJ0cy5hcHBlbmQocGFydCkKICAgICAgICAgIyBDcmVhdGUgbmVlZGVkIGRpcmVjdG9yaWVzLgogICAgICAgICBmb3IgcGFydCBpbiByZXZlcnNlZChwYXRoX3BhcnRzKToKICAgICAgICAgICAgIHBhcmVudCA9IF9wYXRoX2pvaW4ocGFyZW50LCBwYXJ0KQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIF9vcy5ta2RpcihwYXJlbnQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgICMgUHJvYmFibHkgYW5vdGhlciBQeXRob24gcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQgdGhlIGRpci4KLSAgICAgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAgICAgIyBJZiBjYW4ndCBnZXQgcHJvcGVyIGFjY2VzcywgdGhlbiBqdXN0IGZvcmdldCBhYm91dCB3cml0aW5nCi0gICAgICAgICAgICAgICAgIyB0aGUgZGF0YS4KLSAgICAgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIF9pby5GaWxlSU8ocGF0aCwgJ3diJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICMgRG9uJ3Qgd29ycnkgaWYgeW91IGNhbid0IHdyaXRlIGJ5dGVjb2RlLgotICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVBQ0NFUzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICMgQ291bGQgYmUgYSBwZXJtaXNzaW9uIGVycm9yLCByZWFkLW9ubHkgZmlsZXN5c3RlbToganVzdCBmb3JnZXQKKyAgICAgICAgICAgICAgICAjIGFib3V0IHdyaXRpbmcgdGhlIGRhdGEuCisgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGFyZW50LCBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgX21vZGUpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAjIFNhbWUgYXMgYWJvdmU6IGp1c3QgZG9uJ3Qgd3JpdGUgdGhlIGJ5dGVjb2RlLgorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwgZXhjKQogCiAKLWNsYXNzIF9Tb3VyY2VsZXNzRmlsZUxvYWRlcihfRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CitjbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKIAogICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgogCkBAIC01MTMsMTkgKzEwOTIsMjUgQEAKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAgICAgICAgIGRhdGEgPSBzZWxmLmdldF9kYXRhKHBhdGgpCi0gICAgICAgIGJ5dGVzX2RhdGEgPSBzZWxmLl9ieXRlc19mcm9tX2J5dGVjb2RlKGZ1bGxuYW1lLCBkYXRhLCBOb25lKQorICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwgcGF0aCwgTm9uZSkKICAgICAgICAgZm91bmQgPSBtYXJzaGFsLmxvYWRzKGJ5dGVzX2RhdGEpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZm91bmQsIGNvZGVfdHlwZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZm91bmQsIF9jb2RlX3R5cGUpOgorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgcGF0aCkKICAgICAgICAgICAgIHJldHVybiBmb3VuZAogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIk5vbi1jb2RlIG9iamVjdCBpbiB7fSIuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIk5vbi1jb2RlIG9iamVjdCBpbiB7fSIuZm9ybWF0KHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1wYXRoKQogCiAgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyB0aGVyZSBpcyBubyBzb3VyY2UgY29kZS4iIiIKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCi1jbGFzcyBfRXh0ZW5zaW9uRmlsZUxvYWRlcjoKKyMgRmlsbGVkIGluIGJ5IF9zZXR1cCgpLgorRVhURU5TSU9OX1NVRkZJWEVTID0gW10KKworCitjbGFzcyBFeHRlbnNpb25GaWxlTG9hZGVyOgogCiAgICAgIiIiTG9hZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4KIApAQCAtNTM0LDE0ICsxMTE5LDggQEAKICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbG9hZGVyLgotCi0gICAgICAgIElmIGlzX3BrZyBpcyBUcnVlIHRoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhcyBleHRlbnNpb24gbW9kdWxlcwotICAgICAgICBjYW5ub3QgYmUgdGhlIF9faW5pdF9fIG1vZHVsZSBmb3IgYW4gZXh0ZW5zaW9uIG1vZHVsZS4KLQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCiAKICAgICBAX2NoZWNrX25hbWUKICAgICBAc2V0X3BhY2thZ2UKQEAgLTU1MCwyOTcgKzExMjksNTI1IEBACiAgICAgICAgICIiIkxvYWQgYW4gZXh0ZW5zaW9uIG1vZHVsZS4iIiIKICAgICAgICAgaXNfcmVsb2FkID0gZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXMKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGltcC5sb2FkX2R5bmFtaWMoZnVsbG5hbWUsIHNlbGYuX3BhdGgpCisgICAgICAgICAgICBtb2R1bGUgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAubG9hZF9keW5hbWljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgc2VsZi5wYXRoKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSBsb2FkZWQgZnJvbSB7IXJ9Jywgc2VsZi5wYXRoKQorICAgICAgICAgICAgaWYgc2VsZi5pc19wYWNrYWdlKGZ1bGxuYW1lKSBhbmQgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbX3BhdGhfc3BsaXQoc2VsZi5wYXRoKVswXV0KKyAgICAgICAgICAgIHJldHVybiBtb2R1bGUKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZCBhbmQgZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQogICAgICAgICAgICAgcmFpc2UKIAotICAgIEBfY2hlY2tfbmFtZQogICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIEZhbHNlIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2FuIG5ldmVyIGJlIGEgcGFja2FnZS4iIiIKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBleHRlbnNpb24gbW9kdWxlIGlzIGEgcGFja2FnZS4iIiIKKyAgICAgICAgZmlsZV9uYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5wYXRoKVsxXQorICAgICAgICByZXR1cm4gYW55KGZpbGVfbmFtZSA9PSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBFWFRFTlNJT05fU1VGRklYRVMpCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBhbiBleHRlbnNpb24gbW9kdWxlIGNhbm5vdCBjcmVhdGUgYSBjb2RlIG9iamVjdC4iIiIKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIEBfY2hlY2tfbmFtZQogICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgZXh0ZW5zaW9uIG1vZHVsZXMgaGF2ZSBubyBzb3VyY2UgY29kZS4iIiIKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCitjbGFzcyBfTmFtZXNwYWNlUGF0aDoKKyAgICAiIiJSZXByZXNlbnRzIGEgbmFtZXNwYWNlIHBhY2thZ2UncyBwYXRoLiAgSXQgdXNlcyB0aGUgbW9kdWxlIG5hbWUKKyAgICB0byBmaW5kIGl0cyBwYXJlbnQgbW9kdWxlLCBhbmQgZnJvbSB0aGVyZSBpdCBsb29rcyB1cCB0aGUgcGFyZW50J3MKKyAgICBfX3BhdGhfXy4gIFdoZW4gdGhpcyBjaGFuZ2VzLCB0aGUgbW9kdWxlJ3Mgb3duIHBhdGggaXMgcmVjb21wdXRlZCwKKyAgICB1c2luZyBwYXRoX2ZpbmRlci4gIEZvciB0b3AtbGV2ZSBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKKyAgICBpcyBzeXMucGF0aC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKKyAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgorCisgICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgorICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICBpZiBkb3QgPT0gJyc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCisgICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJworICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCisgICAgICAgICMgIHBhcmVudCBwYXRoLgorICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCisKKyAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKKyAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKKworICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6CisgICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCisgICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKKyAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKKyAgICAgICAgICAgIGxvYWRlciwgbmV3X3BhdGggPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQorICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAorICAgICAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCA9IG5ld19wYXRoCisgICAgICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gcGFyZW50X3BhdGggICAgICMgU2F2ZSB0aGUgY29weQorICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfTmFtZXNwYWNlUGF0aCh7IXJ9KSIuZm9ybWF0KHNlbGYuX3BhdGgpCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICByZXR1cm4gaXRlbSBpbiBzZWxmLl9yZWNhbGN1bGF0ZSgpCisKKyAgICBkZWYgYXBwZW5kKHNlbGYsIGl0ZW0pOgorICAgICAgICBzZWxmLl9wYXRoLmFwcGVuZChpdGVtKQorCisKK2NsYXNzIE5hbWVzcGFjZUxvYWRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpOgorICAgICAgICBzZWxmLl9wYXRoID0gX05hbWVzcGFjZVBhdGgobmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtb2R1bGUpOgorICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAobmFtZXNwYWNlKT4iLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisKKyAgICBAbW9kdWxlX2Zvcl9sb2FkZXIKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiTG9hZCBhIG5hbWVzcGFjZSBtb2R1bGUuIiIiCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9Jywgc2VsZi5fcGF0aCkKKyAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gc2VsZi5fcGF0aAorICAgICAgICByZXR1cm4gbW9kdWxlCisKKwogIyBGaW5kZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGFzcyBQYXRoRmluZGVyOgogCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLihwYXRofHBhdGhfaG9va3N8cGF0aF9pbXBvcnRlcl9jYWNoZSkuIiIiCisgICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLnBhdGggYW5kIHBhY2thZ2UgX19wYXRoX18gYXR0cmlidXRlcy4iIiIKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgsIGhvb2tzPU5vbmUpOgorICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhjbHMpOgorICAgICAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgcGF0aCBlbnRyeSBmaW5kZXJzCisgICAgICAgIHN0b3JlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZXMgKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKKyAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKKyAgICAgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6CiAgICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KIAogICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgogCiAgICAgICAgICIiIgotICAgICAgICBpZiBub3QgaG9va3M6Ci0gICAgICAgICAgICBob29rcyA9IHN5cy5wYXRoX2hvb2tzCi0gICAgICAgIGZvciBob29rIGluIGhvb2tzOgorICAgICAgICBpZiBub3Qgc3lzLnBhdGhfaG9va3M6CisgICAgICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLnBhdGhfaG9va3MgaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQorICAgICAgICBmb3IgaG9vayBpbiBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gaG9vayhwYXRoKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gcGF0aCBob29rIGZvdW5kIGZvciB7MH0iLmZvcm1hdChwYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoLCBkZWZhdWx0PU5vbmUpOgotICAgICAgICAiIiJHZXQgdGhlIGZpbmRlciBmb3IgdGhlIHBhdGggZnJvbSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKyAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoKToKKyAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCiAKLSAgICAgICAgSWYgdGhlIHBhdGggaXMgbm90IGluIHRoZSBjYWNoZSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgZmluZGVyIGFuZCBjYWNoZQotICAgICAgICBpdC4gSWYgTm9uZSBpcyBjYWNoZWQsIGdldCB0aGUgZGVmYXVsdCBmaW5kZXIgYW5kIGNhY2hlIHRoYXQKLSAgICAgICAgKGlmIGFwcGxpY2FibGUpLgotCi0gICAgICAgIEJlY2F1c2Ugb2YgTnVsbEltcG9ydGVyLCBzb21lIGZpbmRlciBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSBvbmx5Ci0gICAgICAgIGV4cGxpY2l0IGZhaWwgY2FzZSBpcyBpZiBOb25lIGlzIGNhY2hlZCBidXQgdGhlIHBhdGggY2Fubm90IGJlIHVzZWQgZm9yCi0gICAgICAgIHRoZSBkZWZhdWx0IGhvb2ssIGZvciB3aGljaCBJbXBvcnRFcnJvciBpcyByYWlzZWQuCisgICAgICAgIElmIHRoZSBwYXRoIGVudHJ5IGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlcgorICAgICAgICBhbmQgY2FjaGUgaXQuIElmIG5vIGZpbmRlciBpcyBhdmFpbGFibGUsIHN0b3JlIE5vbmUuCiAKICAgICAgICAgIiIiCisgICAgICAgIGlmIHBhdGggPT0gJyc6CisgICAgICAgICAgICBwYXRoID0gJy4nCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZpbmRlciA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9ob29rcyhwYXRoKQogICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGZpbmRlciBpcyBOb25lIGFuZCBkZWZhdWx0OgotICAgICAgICAgICAgICAgICMgUmFpc2VzIEltcG9ydEVycm9yIG9uIGZhaWx1cmUuCi0gICAgICAgICAgICAgICAgZmluZGVyID0gZGVmYXVsdChwYXRoKQotICAgICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCiAgICAgICAgIHJldHVybiBmaW5kZXIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X2xvYWRlcihjbHMsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgIiIiRmluZCB0aGUgbG9hZGVyIG9yIG5hbWVzcGFjZV9wYXRoIGZvciB0aGlzIG1vZHVsZS9wYWNrYWdlIG5hbWUuIiIiCisgICAgICAgICMgSWYgdGhpcyBlbmRzIHVwIGJlaW5nIGEgbmFtZXNwYWNlIHBhY2thZ2UsIG5hbWVzcGFjZV9wYXRoIGlzCisgICAgICAgICMgIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2lsbCBiZWNvbWUgaXRzIF9fcGF0aF9fCisgICAgICAgIG5hbWVzcGFjZV9wYXRoID0gW10KKyAgICAgICAgZm9yIGVudHJ5IGluIHBhdGg6CisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCisgICAgICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIsIHBvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQorICAgICAgICAgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBmb3VuZCBhIGxvYWRlcjogcmV0dXJuIGl0IGltbWVkaWF0ZWx5LgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLCBuYW1lc3BhY2VfcGF0aAorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBwYXJ0IG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgIyAgUmVtZW1iZXIgdGhlc2UgcGF0aCBlbnRyaWVzIChpZiBhbnkpIGZvciB3aGVuIHdlCisgICAgICAgICAgICAgICAgIyAgY3JlYXRlIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFuZCBjb250aW51ZSBpdGVyYXRpbmcKKyAgICAgICAgICAgICAgICAjICBvbiBwYXRoLgorICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoLmV4dGVuZChwb3J0aW9ucykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBuYW1lc3BhY2VfcGF0aAorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCiAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgotICAgICAgICBpZiBub3QgcGF0aDoKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCi0gICAgICAgIGZvciBlbnRyeSBpbiBwYXRoOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9pbXBvcnRlcl9jYWNoZShlbnRyeSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZmluZGVyOgotICAgICAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBsb2FkZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICAgICAgbG9hZGVyLCBuYW1lc3BhY2VfcGF0aCA9IGNscy5fZ2V0X2xvYWRlcihmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIG5hbWVzcGFjZV9wYXRoOgorICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYXQgbGVhc3Qgb25lIG5hbWVzcGFjZSBwYXRoLiAgUmV0dXJuIGEKKyAgICAgICAgICAgICAgICAjICBsb2FkZXIgd2hpY2ggY2FuIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgcmV0dXJuIE5hbWVzcGFjZUxvYWRlcihmdWxsbmFtZSwgbmFtZXNwYWNlX3BhdGgsIGNscy5fZ2V0X2xvYWRlcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogCi1jbGFzcyBfRmlsZUZpbmRlcjoKK2NsYXNzIEZpbGVGaW5kZXI6CiAKICAgICAiIiJGaWxlLWJhc2VkIGZpbmRlci4KIAotICAgIENvbnN0cnVjdG9yIHRha2VzIGEgbGlzdCBvZiBvYmplY3RzIGRldGFpbGluZyB3aGF0IGZpbGUgZXh0ZW5zaW9ucyB0aGVpcgotICAgIGxvYWRlciBzdXBwb3J0cyBhbG9uZyB3aXRoIHdoZXRoZXIgaXQgY2FuIGJlIHVzZWQgZm9yIGEgcGFja2FnZS4KKyAgICBJbnRlcmFjdGlvbnMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UsIGJlaW5nCisgICAgcmVmcmVzaGVkIHdoZW4gdGhlIGRpcmVjdG9yeSB0aGUgZmluZGVyIGlzIGhhbmRsaW5nIGhhcyBiZWVuIG1vZGlmaWVkLgogCiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgKmRldGFpbHMpOgotICAgICAgICAiIiJJbml0aWFsaXplIHdpdGggZmluZGVyIGRldGFpbHMuIiIiCi0gICAgICAgIHBhY2thZ2VzID0gW10KLSAgICAgICAgbW9kdWxlcyA9IFtdCi0gICAgICAgIGZvciBkZXRhaWwgaW4gZGV0YWlsczoKLSAgICAgICAgICAgIG1vZHVsZXMuZXh0ZW5kKChzdWZmaXgsIGRldGFpbC5sb2FkZXIpIGZvciBzdWZmaXggaW4gZGV0YWlsLnN1ZmZpeGVzKQotICAgICAgICAgICAgaWYgZGV0YWlsLnN1cHBvcnRzX3BhY2thZ2VzOgotICAgICAgICAgICAgICAgIHBhY2thZ2VzLmV4dGVuZCgoc3VmZml4LCBkZXRhaWwubG9hZGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIGRldGFpbC5zdWZmaXhlcykKLSAgICAgICAgc2VsZi5wYWNrYWdlcyA9IHBhY2thZ2VzCi0gICAgICAgIHNlbGYubW9kdWxlcyA9IG1vZHVsZXMKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICAiIiJJbml0aWFsaXplIHdpdGggdGhlIHBhdGggdG8gc2VhcmNoIG9uIGFuZCBhIHZhcmlhYmxlIG51bWJlciBvZgorICAgICAgICAzLXR1cGxlcyBjb250YWluaW5nIHRoZSBsb2FkZXIsIGZpbGUgc3VmZml4ZXMgdGhlIGxvYWRlciByZWNvZ25pemVzLAorICAgICAgICBhbmQgYSBib29sZWFuIG9mIHdoZXRoZXIgdGhlIGxvYWRlciBoYW5kbGVzIHBhY2thZ2VzLiIiIgorICAgICAgICBsb2FkZXJzID0gW10KKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMgaW4gZGV0YWlsczoKKyAgICAgICAgICAgIGxvYWRlcnMuZXh0ZW5kKChzdWZmaXgsIGxvYWRlcikgZm9yIHN1ZmZpeCBpbiBzdWZmaXhlcykKKyAgICAgICAgc2VsZi5fbG9hZGVycyA9IGxvYWRlcnMKKyAgICAgICAgIyBCYXNlIChkaXJlY3RvcnkpIHBhdGgKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aCBvciAnLicKKyAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCisgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoKQorICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSBzZXQoKQogCi0gICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLiIiIgorICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiSW52YWxpZGF0ZSB0aGUgZGlyZWN0b3J5IG10aW1lLiIiIgorICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gLTEKKworICAgIGZpbmRfbW9kdWxlID0gX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSwgb3IgdGhlIG5hbWVzcGFjZQorICAgICAgICBwYWNrYWdlIHBvcnRpb25zLiBSZXR1cm5zIChsb2FkZXIsIGxpc3Qtb2YtcG9ydGlvbnMpLiIiIgorICAgICAgICBpc19uYW1lc3BhY2UgPSBGYWxzZQogICAgICAgICB0YWlsX21vZHVsZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQotICAgICAgICBiYXNlX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUpCi0gICAgICAgIGlmIF9wYXRoX2lzZGlyKGJhc2VfcGF0aCkgYW5kIF9jYXNlX29rKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUpOgotICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYucGFja2FnZXM6Ci0gICAgICAgICAgICAgICAgaW5pdF9maWxlbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKLSAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKGJhc2VfcGF0aCwgaW5pdF9maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBpZiAoX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBfY2FzZV9vayhiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlcihmdWxsbmFtZSwgZnVsbF9wYXRoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtc2cgPSAiTm90IGltcG9ydGluZyBkaXJlY3Rvcnkge306IG1pc3NpbmcgX19pbml0X18iCi0gICAgICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLmZvcm1hdChiYXNlX3BhdGgpLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXIgaW4gc2VsZi5tb2R1bGVzOgotICAgICAgICAgICAgbW9kX2ZpbGVuYW1lID0gdGFpbF9tb2R1bGUgKyBzdWZmaXgKLSAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCBtb2RfZmlsZW5hbWUpCi0gICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKSBhbmQgX2Nhc2Vfb2soc2VsZi5wYXRoLCBtb2RfZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIoZnVsbG5hbWUsIGZ1bGxfcGF0aCkKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbXRpbWUgPSBfb3Muc3RhdChzZWxmLnBhdGgpLnN0X210aW1lCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgbXRpbWUgPSAtMQorICAgICAgICBpZiBtdGltZSAhPSBzZWxmLl9wYXRoX210aW1lOgorICAgICAgICAgICAgc2VsZi5fZmlsbF9jYWNoZSgpCisgICAgICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gbXRpbWUKKyAgICAgICAgIyB0YWlsX21vZHVsZSBrZWVwcyB0aGUgb3JpZ2luYWwgY2FzaW5nLCBmb3IgX19maWxlX18gYW5kIGZyaWVuZHMKKyAgICAgICAgaWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgIGNhY2hlID0gc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZS5sb3dlcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKKyAgICAgICAgICAgIGNhY2hlX21vZHVsZSA9IHRhaWxfbW9kdWxlCisgICAgICAgICMgQ2hlY2sgaWYgdGhlIG1vZHVsZSBpcyB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSAoYW5kIHRodXMgYSBwYWNrYWdlKS4KKyAgICAgICAgaWYgY2FjaGVfbW9kdWxlIGluIGNhY2hlOgorICAgICAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQorICAgICAgICAgICAgaWYgX3BhdGhfaXNkaXIoYmFzZV9wYXRoKToKKyAgICAgICAgICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXIgaW4gc2VsZi5fbG9hZGVyczoKKyAgICAgICAgICAgICAgICAgICAgaW5pdF9maWxlbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsb2FkZXIoZnVsbG5hbWUsIGZ1bGxfcGF0aCksIFtiYXNlX3BhdGhdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgQSBuYW1lc3BhY2UgcGFja2FnZSwgcmV0dXJuIHRoZSBwYXRoIGlmIHdlIGRvbid0IGFsc28KKyAgICAgICAgICAgICAgICAgICAgIyAgZmluZCBhIG1vZHVsZSBpbiB0aGUgbmV4dCBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBpc19uYW1lc3BhY2UgPSBUcnVlCisgICAgICAgICMgQ2hlY2sgZm9yIGEgZmlsZSB3LyBhIHByb3BlciBzdWZmaXggZXhpc3RzLgorICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXIgaW4gc2VsZi5fbG9hZGVyczoKKyAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUgKyBzdWZmaXgpCisgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpLCBbXSkKKyAgICAgICAgaWYgaXNfbmFtZXNwYWNlOgorICAgICAgICAgICAgcmV0dXJuIChOb25lLCBbYmFzZV9wYXRoXSkKKyAgICAgICAgcmV0dXJuIChOb25lLCBbXSkKIAotY2xhc3MgX1NvdXJjZUZpbmRlckRldGFpbHM6CisgICAgZGVmIF9maWxsX2NhY2hlKHNlbGYpOgorICAgICAgICAiIiJGaWxsIHRoZSBjYWNoZSBvZiBwb3RlbnRpYWwgbW9kdWxlcyBhbmQgcGFja2FnZXMgZm9yIHRoaXMgZGlyZWN0b3J5LiIiIgorICAgICAgICBwYXRoID0gc2VsZi5wYXRoCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gX29zLmxpc3RkaXIocGF0aCkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgIyBEaXJlY3RvcnkgaGFzIGJlZW4gcmVtb3ZlZCBzaW5jZSBsYXN0IGltcG9ydAorICAgICAgICAgICAgY29udGVudHMgPSBbXQorICAgICAgICAjIFdlIHN0b3JlIHR3byBjYWNoZWQgdmVyc2lvbnMsIHRvIGhhbmRsZSBydW50aW1lIGNoYW5nZXMgb2YgdGhlCisgICAgICAgICMgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IHNldChjb250ZW50cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgV2luZG93cyB1c2VycyBjYW4gaW1wb3J0IG1vZHVsZXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGUKKyAgICAgICAgICAgICMgc3VmZml4ZXMgKGZvciBsZWdhY3kgcmVhc29ucykuIE1ha2UgdGhlIHN1ZmZpeCBsb3dlcmNhc2UgaGVyZQorICAgICAgICAgICAgIyBzbyBpdCdzIGRvbmUgb25jZSBpbnN0ZWFkIG9mIGZvciBldmVyeSBpbXBvcnQuIFRoaXMgaXMgc2FmZSBhcworICAgICAgICAgICAgIyB0aGUgc3BlY2lmaWVkIHN1ZmZpeGVzIHRvIGNoZWNrIGFnYWluc3QgYXJlIGFsd2F5cyBzcGVjaWZpZWQgaW4gYQorICAgICAgICAgICAgIyBjYXNlLXNlbnNpdGl2ZSBtYW5uZXIuCisgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMgPSBzZXQoKQorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gY29udGVudHM6CisgICAgICAgICAgICAgICAgbmFtZSwgZG90LCBzdWZmaXggPSBpdGVtLnBhcnRpdGlvbignLicpCisgICAgICAgICAgICAgICAgaWYgZG90OgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9ICd7fS57fScuZm9ybWF0KG5hbWUsIHN1ZmZpeC5sb3dlcigpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5ld19uYW1lID0gbmFtZQorICAgICAgICAgICAgICAgIGxvd2VyX3N1ZmZpeF9jb250ZW50cy5hZGQobmV3X25hbWUpCisgICAgICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gbG93ZXJfc3VmZml4X2NvbnRlbnRzCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSBzZXQoZm4ubG93ZXIoKSBmb3IgZm4gaW4gY29udGVudHMpCiAKLSAgICBsb2FkZXIgPSBfU291cmNlRmlsZUxvYWRlcgotICAgIHN1cHBvcnRzX3BhY2thZ2VzID0gVHJ1ZQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXRoX2hvb2soY2xzLCAqbG9hZGVyX2RldGFpbHMpOgorICAgICAgICAiIiJBIGNsYXNzIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgY2xvc3VyZSB0byB1c2Ugb24gc3lzLnBhdGhfaG9vaworICAgICAgICB3aGljaCB3aWxsIHJldHVybiBhbiBpbnN0YW5jZSB1c2luZyB0aGUgc3BlY2lmaWVkIGxvYWRlcnMgYW5kIHRoZSBwYXRoCisgICAgICAgIGNhbGxlZCBvbiB0aGUgY2xvc3VyZS4KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuUFlfU09VUkNFKQorICAgICAgICBJZiB0aGUgcGF0aCBjYWxsZWQgb24gdGhlIGNsb3N1cmUgaXMgbm90IGEgZGlyZWN0b3J5LCBJbXBvcnRFcnJvciBpcworICAgICAgICByYWlzZWQuCiAKLWNsYXNzIF9Tb3VyY2VsZXNzRmluZGVyRGV0YWlsczoKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIocGF0aCk6CisgICAgICAgICAgICAiIiJQYXRoIGhvb2sgZm9yIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci4iIiIKKyAgICAgICAgICAgIGlmIG5vdCBfcGF0aF9pc2RpcihwYXRoKToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigib25seSBkaXJlY3RvcmllcyBhcmUgc3VwcG9ydGVkIiwgcGF0aD1wYXRoKQorICAgICAgICAgICAgcmV0dXJuIGNscyhwYXRoLCAqbG9hZGVyX2RldGFpbHMpCiAKLSAgICBsb2FkZXIgPSBfU291cmNlbGVzc0ZpbGVMb2FkZXIKLSAgICBzdXBwb3J0c19wYWNrYWdlcyA9IFRydWUKKyAgICAgICAgcmV0dXJuIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN1ZmZpeGVzID0gX3N1ZmZpeF9saXN0KGltcC5QWV9DT01QSUxFRCkKLQotCi1jbGFzcyBfRXh0ZW5zaW9uRmluZGVyRGV0YWlsczoKLQotICAgIGxvYWRlciA9IF9FeHRlbnNpb25GaWxlTG9hZGVyCi0gICAgc3VwcG9ydHNfcGFja2FnZXMgPSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN1ZmZpeGVzID0gX3N1ZmZpeF9saXN0KGltcC5DX0VYVEVOU0lPTikKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiRmlsZUZpbmRlciglcikiICUgKHNlbGYucGF0aCwpCiAKIAogIyBJbXBvcnQgaXRzZWxmICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1kZWYgX2ZpbGVfcGF0aF9ob29rKHBhdGgpOgotICAgICIiIklmIHRoZSBwYXRoIGlzIGEgZGlyZWN0b3J5LCByZXR1cm4gYSBmaWxlLWJhc2VkIGZpbmRlci4iIiIKLSAgICBpZiBfcGF0aF9pc2RpcihwYXRoKToKLSAgICAgICAgcmV0dXJuIF9GaWxlRmluZGVyKHBhdGgsIF9FeHRlbnNpb25GaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfU291cmNlRmluZGVyRGV0YWlscygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NvdXJjZWxlc3NGaW5kZXJEZXRhaWxzKCkpCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm9ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCIpCi0KLQotX0RFRkFVTFRfUEFUSF9IT09LID0gX2ZpbGVfcGF0aF9ob29rCi0KLWNsYXNzIF9EZWZhdWx0UGF0aEZpbmRlcihQYXRoRmluZGVyKToKLQotICAgICIiIlN1YmNsYXNzIG9mIFBhdGhGaW5kZXIgdGhhdCBpbXBsZW1lbnRzIGltcGxpY2l0IHNlbWFudGljcyBmb3IKLSAgICBfX2ltcG9ydF9fLiIiIgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6Ci0gICAgICAgICIiIlNlYXJjaCBzeXMucGF0aF9ob29rcyBhcyB3ZWxsIGFzIGltcGxpY2l0IHBhdGggaG9va3MuIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9wYXRoX2hvb2tzKHBhdGgpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIGltcGxpY2l0X2hvb2tzID0gW19ERUZBVUxUX1BBVEhfSE9PSywgaW1wLk51bGxJbXBvcnRlcl0KLSAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9wYXRoX2hvb2tzKHBhdGgsIGltcGxpY2l0X2hvb2tzKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCk6Ci0gICAgICAgICIiIlVzZSB0aGUgZGVmYXVsdCBwYXRoIGhvb2sgd2hlbiBOb25lIGlzIHN0b3JlZCBpbgotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKLSAgICAgICAgcmV0dXJuIHN1cGVyKCkuX3BhdGhfaW1wb3J0ZXJfY2FjaGUocGF0aCwgX0RFRkFVTFRfUEFUSF9IT09LKQotCi0KIGNsYXNzIF9JbXBvcnRMb2NrQ29udGV4dDoKIAogICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgdGhlIGltcG9ydCBsb2NrLiIiIgogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgIiIiQWNxdWlyZSB0aGUgaW1wb3J0IGxvY2suIiIiCi0gICAgICAgIGltcC5hY3F1aXJlX2xvY2soKQorICAgICAgICBfaW1wLmFjcXVpcmVfbG9jaygpCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjayk6CiAgICAgICAgICIiIlJlbGVhc2UgdGhlIGltcG9ydCBsb2NrIHJlZ2FyZGxlc3Mgb2YgYW55IHJhaXNlZCBleGNlcHRpb25zLiIiIgotICAgICAgICBpbXAucmVsZWFzZV9sb2NrKCkKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQogCiAKLV9JTVBMSUNJVF9NRVRBX1BBVEggPSBbQnVpbHRpbkltcG9ydGVyLCBGcm96ZW5JbXBvcnRlciwgX0RlZmF1bHRQYXRoRmluZGVyXQorZGVmIF9yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSwgbGV2ZWwpOgorICAgICIiIlJlc29sdmUgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSB0byBhbiBhYnNvbHV0ZSBvbmUuIiIiCisgICAgYml0cyA9IHBhY2thZ2UucnNwbGl0KCcuJywgbGV2ZWwgLSAxKQorICAgIGlmIGxlbihiaXRzKSA8IGxldmVsOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgcGFja2FnZScpCisgICAgYmFzZSA9IGJpdHNbMF0KKyAgICByZXR1cm4gJ3t9Lnt9Jy5mb3JtYXQoYmFzZSwgbmFtZSkgaWYgbmFtZSBlbHNlIGJhc2UKIAotX0VSUl9NU0cgPSAnTm8gbW9kdWxlIG5hbWVkIHt9JworCitkZWYgX2ZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpOgorICAgICIiIkZpbmQgYSBtb2R1bGUncyBsb2FkZXIuIiIiCisgICAgaWYgbm90IHN5cy5tZXRhX3BhdGg6CisgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMubWV0YV9wYXRoIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKKyAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6CisgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKyAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBUaGUgcGFyZW50IGltcG9ydCBtYXkgaGF2ZSBhbHJlYWR5IGltcG9ydGVkIHRoaXMgbW9kdWxlLgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKworZGVmIF9zYW5pdHlfY2hlY2sobmFtZSwgcGFja2FnZSwgbGV2ZWwpOgorICAgICIiIlZlcmlmeSBhcmd1bWVudHMgYXJlICJzYW5lIi4iIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm1vZHVsZSBuYW1lIG11c3QgYmUgc3RyLCBub3Qge30iLmZvcm1hdCh0eXBlKG5hbWUpKSkKKyAgICBpZiBsZXZlbCA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xldmVsIG11c3QgYmUgPj0gMCcpCisgICAgaWYgcGFja2FnZToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFja2FnZSwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiX19wYWNrYWdlX18gbm90IHNldCB0byBhIHN0cmluZyIpCisgICAgICAgIGVsaWYgcGFja2FnZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBtc2cgPSAoIlBhcmVudCBtb2R1bGUgeyFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCisgICAgICAgICAgICAgICAgICAgImltcG9ydCIpCisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihtc2cuZm9ybWF0KHBhY2thZ2UpKQorICAgIGlmIG5vdCBuYW1lIGFuZCBsZXZlbCA9PSAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBtb2R1bGUgbmFtZSIpCisKKworX0VSUl9NU0cgPSAnTm8gbW9kdWxlIG5hbWVkIHshcn0nCisKK2RlZiBfZmluZF9hbmRfbG9hZF91bmxvY2tlZChuYW1lLCBpbXBvcnRfKToKKyAgICBwYXRoID0gTm9uZQorICAgIHBhcmVudCA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgaWYgcGFyZW50OgorICAgICAgICBpZiBwYXJlbnQgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChpbXBvcnRfLCBwYXJlbnQpCisgICAgICAgICMgQ3Jhenkgc2lkZS1lZmZlY3RzIQorICAgICAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCisgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHk7IGJlIG5pY2VyIHRvIHNraXAgdGhlIGRpY3QgbG9va3VwLgorICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7fSBpcyBub3QgYSBwYWNrYWdlJykuZm9ybWF0KG5hbWUsIHBhcmVudCkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKQorICAgIGxvYWRlciA9IF9maW5kX21vZHVsZShuYW1lLCBwYXRoKQorICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICBleGMgPSBJbXBvcnRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKyAgICAgICAgIyBUT0RPKGJyZXR0KTogc3dpdGNoIHRvIGEgcHJvcGVyIE1vZHVsZU5vdEZvdW5kIGV4Y2VwdGlvbiBpbiBQeXRob24KKyAgICAgICAgIyAzLjQuCisgICAgICAgIGV4Yy5fbm90X2ZvdW5kID0gVHJ1ZQorICAgICAgICByYWlzZSBleGMKKyAgICBlbGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAjIFRoZSBwYXJlbnQgaW1wb3J0IG1heSBoYXZlIGFscmVhZHkgaW1wb3J0ZWQgdGhpcyBtb2R1bGUuCisgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdpbXBvcnQgeyFyfSAjIHshcn0nLCBuYW1lLCBsb2FkZXIpCisgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBpZiBwYXJlbnQ6CisgICAgICAgICMgU2V0IHRoZSBtb2R1bGUgYXMgYW4gYXR0cmlidXRlIG9uIGl0cyBwYXJlbnQuCisgICAgICAgIHBhcmVudF9tb2R1bGUgPSBzeXMubW9kdWxlc1twYXJlbnRdCisgICAgICAgIHNldGF0dHIocGFyZW50X21vZHVsZSwgbmFtZS5ycGFydGl0aW9uKCcuJylbMl0sIG1vZHVsZSkKKyAgICAjIFNldCBfX3BhY2thZ2VfXyBpZiB0aGUgbG9hZGVyIGRpZCBub3QuCisgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXworICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAjIFNldCBsb2FkZXIgaWYgbmVlZCBiZS4KKyAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICByZXR1cm4gbW9kdWxlCisKKworZGVmIF9maW5kX2FuZF9sb2FkKG5hbWUsIGltcG9ydF8pOgorICAgICIiIkZpbmQgYW5kIGxvYWQgdGhlIG1vZHVsZSwgYW5kIHJlbGVhc2UgdGhlIGltcG9ydCBsb2NrLiIiIgorICAgIHRyeToKKyAgICAgICAgbG9jayA9IF9nZXRfbW9kdWxlX2xvY2sobmFtZSkKKyAgICBmaW5hbGx5OgorICAgICAgICBfaW1wLnJlbGVhc2VfbG9jaygpCisgICAgbG9jay5hY3F1aXJlKCkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBfZmluZF9hbmRfbG9hZF91bmxvY2tlZChuYW1lLCBpbXBvcnRfKQorICAgIGZpbmFsbHk6CisgICAgICAgIGxvY2sucmVsZWFzZSgpCisKIAogZGVmIF9nY2RfaW1wb3J0KG5hbWUsIHBhY2thZ2U9Tm9uZSwgbGV2ZWw9MCk6CiAgICAgIiIiSW1wb3J0IGFuZCByZXR1cm4gdGhlIG1vZHVsZSBiYXNlZCBvbiBpdHMgbmFtZSwgdGhlIHBhY2thZ2UgdGhlIGNhbGwgaXMKICAgICBiZWluZyBtYWRlIGZyb20sIGFuZCB0aGUgbGV2ZWwgYWRqdXN0bWVudC4KIAogICAgIFRoaXMgZnVuY3Rpb24gcmVwcmVzZW50cyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRlbm9taW5hdG9yIG9mIGZ1bmN0aW9uYWxpdHkKLSAgICBiZXR3ZWVuIGltcG9ydF9tb2R1bGUgYW5kIF9faW1wb3J0X18uIFRoaXMgaW5jbHVkZXMgc2V0dHRpbmcgX19wYWNrYWdlX18gaWYKKyAgICBiZXR3ZWVuIGltcG9ydF9tb2R1bGUgYW5kIF9faW1wb3J0X18uIFRoaXMgaW5jbHVkZXMgc2V0dGluZyBfX3BhY2thZ2VfXyBpZgogICAgIHRoZSBsb2FkZXIgZGlkIG5vdC4KIAogICAgICIiIgotICAgIGlmIHBhY2thZ2U6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHBhY2thZ2UsICdyaW5kZXgnKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIl9fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmciKQotICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgbXNnID0gKCJQYXJlbnQgbW9kdWxlIHswIXJ9IG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKLSAgICAgICAgICAgICAgICAgICAiaW1wb3J0IikKLSAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKG1zZy5mb3JtYXQocGFja2FnZSkpCi0gICAgaWYgbm90IG5hbWUgYW5kIGxldmVsID09IDA6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkVtcHR5IG1vZHVsZSBuYW1lIikKKyAgICBfc2FuaXR5X2NoZWNrKG5hbWUsIHBhY2thZ2UsIGxldmVsKQogICAgIGlmIGxldmVsID4gMDoKLSAgICAgICAgZG90ID0gbGVuKHBhY2thZ2UpCi0gICAgICAgIGZvciB4IGluIHJhbmdlKGxldmVsLCAxLCAtMSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZG90ID0gcGFja2FnZS5yaW5kZXgoJy4nLCAwLCBkb3QpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9wLWxldmVsIHBhY2thZ2UiKQotICAgICAgICBpZiBuYW1lOgotICAgICAgICAgICAgbmFtZSA9ICJ7MH0uezF9Ii5mb3JtYXQocGFja2FnZVs6ZG90XSwgbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5hbWUgPSBwYWNrYWdlWzpkb3RdCi0gICAgd2l0aCBfSW1wb3J0TG9ja0NvbnRleHQoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KLSAgICAgICAgICAgIGlmIG1vZHVsZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAoImltcG9ydCBvZiB7fSBoYWx0ZWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBpbiBzeXMubW9kdWxlcyIuZm9ybWF0KG5hbWUpKQotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UpCi0gICAgICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcGFyZW50ID0gbmFtZS5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgcGF0aCA9IE5vbmUKLSAgICAgICAgaWYgcGFyZW50OgotICAgICAgICAgICAgaWYgcGFyZW50IG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICBfZ2NkX2ltcG9ydChwYXJlbnQpCi0gICAgICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OyBiZSBuaWNlciB0byBza2lwIHRoZSBkaWN0IGxvb2t1cC4KLSAgICAgICAgICAgIHBhcmVudF9tb2R1bGUgPSBzeXMubW9kdWxlc1twYXJlbnRdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7fSBpcyBub3QgYSBwYWNrYWdlJykuZm9ybWF0KG5hbWUsIHBhcmVudCkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cpCi0gICAgICAgIG1ldGFfcGF0aCA9IHN5cy5tZXRhX3BhdGggKyBfSU1QTElDSVRfTUVUQV9QQVRICi0gICAgICAgIGZvciBmaW5kZXIgaW4gbWV0YV9wYXRoOgotICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCi0gICAgICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgIyBUaGUgcGFyZW50IGltcG9ydCBtYXkgaGF2ZSBhbHJlYWR5IGltcG9ydGVkIHRoaXMgbW9kdWxlLgotICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpKQotICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OyBiZSBuaWNlciB0byBza2lwIHRoZSBkaWN0IGxvb2t1cC4KLSAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KLSAgICAgICAgaWYgcGFyZW50OgotICAgICAgICAgICAgIyBTZXQgdGhlIG1vZHVsZSBhcyBhbiBhdHRyaWJ1dGUgb24gaXRzIHBhcmVudC4KLSAgICAgICAgICAgIHNldGF0dHIocGFyZW50X21vZHVsZSwgbmFtZS5ycGFydGl0aW9uKCcuJylbMl0sIG1vZHVsZSkKLSAgICAgICAgIyBTZXQgX19wYWNrYWdlX18gaWYgdGhlIGxvYWRlciBkaWQgbm90LgotICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpIG9yIG1vZHVsZS5fX3BhY2thZ2VfXyBpcyBOb25lOgotICAgICAgICAgICAgIyBXYXRjaCBvdXQgZm9yIHdoYXQgY29tZXMgb3V0IG9mIHN5cy5tb2R1bGVzIHRvIG5vdCBiZSBhIG1vZHVsZSwKLSAgICAgICAgICAgICMgZS5nLiBhbiBpbnQuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fbmFtZV9fCi0gICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgICAgICBuYW1lID0gX3Jlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlLCBsZXZlbCkKKyAgICBfaW1wLmFjcXVpcmVfbG9jaygpCisgICAgaWYgbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgIHJldHVybiBfZmluZF9hbmRfbG9hZChuYW1lLCBfZ2NkX2ltcG9ydCkKKyAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tuYW1lXQorICAgIGlmIG1vZHVsZSBpcyBOb25lOgorICAgICAgICBfaW1wLnJlbGVhc2VfbG9jaygpCisgICAgICAgIG1lc3NhZ2UgPSAoImltcG9ydCBvZiB7fSBoYWx0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1uYW1lKQorICAgIF9sb2NrX3VubG9ja19tb2R1bGUobmFtZSkKKyAgICByZXR1cm4gbW9kdWxlCisKK2RlZiBfaGFuZGxlX2Zyb21saXN0KG1vZHVsZSwgZnJvbWxpc3QsIGltcG9ydF8pOgorICAgICIiIkZpZ3VyZSBvdXQgd2hhdCBfX2ltcG9ydF9fIHNob3VsZCByZXR1cm4uCisKKyAgICBUaGUgaW1wb3J0XyBwYXJhbWV0ZXIgaXMgYSBjYWxsYWJsZSB3aGljaCB0YWtlcyB0aGUgbmFtZSBvZiBtb2R1bGUgdG8KKyAgICBpbXBvcnQuIEl0IGlzIHJlcXVpcmVkIHRvIGRlY291cGxlIHRoZSBmdW5jdGlvbiBmcm9tIGFzc3VtaW5nIGltcG9ydGxpYidzCisgICAgaW1wb3J0IGltcGxlbWVudGF0aW9uIGlzIGRlc2lyZWQuCisKKyAgICAiIiIKKyAgICAjIFRoZSBoZWxsIHRoYXQgaXMgZnJvbWxpc3QgLi4uCisgICAgIyBJZiBhIHBhY2thZ2Ugd2FzIGltcG9ydGVkLCB0cnkgdG8gaW1wb3J0IHN0dWZmIGZyb20gZnJvbWxpc3QuCisgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICBpZiAnKicgaW4gZnJvbWxpc3Q6CisgICAgICAgICAgICBmcm9tbGlzdCA9IGxpc3QoZnJvbWxpc3QpCisgICAgICAgICAgICBmcm9tbGlzdC5yZW1vdmUoJyonKQorICAgICAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX2FsbF9fJyk6CisgICAgICAgICAgICAgICAgZnJvbWxpc3QuZXh0ZW5kKG1vZHVsZS5fX2FsbF9fKQorICAgICAgICBmb3IgeCBpbiBmcm9tbGlzdDoKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgeCk6CisgICAgICAgICAgICAgICAgZnJvbV9uYW1lID0gJ3t9Lnt9Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fLCB4KQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChpbXBvcnRfLCBmcm9tX25hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBkaWN0YXRlcyB3ZSBpZ25vcmUgZmFpbGVkCisgICAgICAgICAgICAgICAgICAgICMgaW1wb3J0cyB0cmlnZ2VyZWQgYnkgZnJvbWxpc3QgZm9yIG1vZHVsZXMgdGhhdCBkb24ndAorICAgICAgICAgICAgICAgICAgICAjIGV4aXN0LgorICAgICAgICAgICAgICAgICAgICAjIFRPRE8oYnJldHQpOiBJbiBQeXRob24gMy40LCBoYXZlIGltcG9ydCByYWlzZQorICAgICAgICAgICAgICAgICAgICAjICAgTW9kdWxlTm90Rm91bmQgYW5kIGNhdGNoIHRoYXQuCisgICAgICAgICAgICAgICAgICAgIGlmIGdldGF0dHIoZXhjLCAnX25vdF9mb3VuZCcsIEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09IGZyb21fbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgIHJldHVybiBtb2R1bGUKIAogCi1kZWYgX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0wKToKK2RlZiBfY2FsY19fX3BhY2thZ2VfXyhnbG9iYWxzKToKKyAgICAiIiJDYWxjdWxhdGUgd2hhdCBfX3BhY2thZ2VfXyBzaG91bGQgYmUuCisKKyAgICBfX3BhY2thZ2VfXyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkIG9yIGNvdWxkIGJlIHNldCB0byBOb25lCisgICAgdG8gcmVwcmVzZW50IHRoYXQgaXRzIHByb3BlciB2YWx1ZSBpcyB1bmtub3duLgorCisgICAgIiIiCisgICAgcGFja2FnZSA9IGdsb2JhbHMuZ2V0KCdfX3BhY2thZ2VfXycpCisgICAgaWYgcGFja2FnZSBpcyBOb25lOgorICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQorICAgICAgICBpZiAnX19wYXRoX18nIG5vdCBpbiBnbG9iYWxzOgorICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCisgICAgcmV0dXJuIHBhY2thZ2UKKworCitkZWYgX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6CisgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgZmlsZS1iYXNlZCBtb2R1bGUgbG9hZGVycy4KKworICAgIEVhY2ggaXRlbSBpcyBhIHR1cGxlIChsb2FkZXIsIHN1ZmZpeGVzLCBhbGxvd19wYWNrYWdlcykuCisgICAgIiIiCisgICAgZXh0ZW5zaW9ucyA9IEV4dGVuc2lvbkZpbGVMb2FkZXIsIF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkKKyAgICBzb3VyY2UgPSBTb3VyY2VGaWxlTG9hZGVyLCBTT1VSQ0VfU1VGRklYRVMKKyAgICBieXRlY29kZSA9IFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIHJldHVybiBbZXh0ZW5zaW9ucywgc291cmNlLCBieXRlY29kZV0KKworCitkZWYgX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlLgogCiAgICAgVGhlICdnbG9iYWxzJyBhcmd1bWVudCBpcyB1c2VkIHRvIGluZmVyIHdoZXJlIHRoZSBpbXBvcnQgaXMgb2NjdXJpbmcgZnJvbQpAQCAtODUxLDQwICsxNjU4LDExMiBAQAogICAgIGltcG9ydCAoZS5nLiBgYGZyb20gLi5wa2cgaW1wb3J0IG1vZGBgIHdvdWxkIGhhdmUgYSAnbGV2ZWwnIG9mIDIpLgogCiAgICAgIiIiCi0gICAgaWYgbm90IGhhc2F0dHIobmFtZSwgJ3JwYXJ0aXRpb24nKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCiAgICAgaWYgbGV2ZWwgPT0gMDoKICAgICAgICAgbW9kdWxlID0gX2djZF9pbXBvcnQobmFtZSkKICAgICBlbHNlOgotICAgICAgICAjIF9fcGFja2FnZV9fIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlZmluZWQgb3IgY291bGQgYmUgc2V0IHRvIE5vbmUKLSAgICAgICAgIyB0byByZXByZXNlbnQgdGhhdCBpdCdzIHByb3BlciB2YWx1ZSBpcyB1bmtub3duCi0gICAgICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQotICAgICAgICBpZiBwYWNrYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQotICAgICAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKLSAgICAgICAgICAgICAgICBwYWNrYWdlID0gcGFja2FnZS5ycGFydGl0aW9uKCcuJylbMF0KKyAgICAgICAgZ2xvYmFsc18gPSBnbG9iYWxzIGlmIGdsb2JhbHMgaXMgbm90IE5vbmUgZWxzZSB7fQorICAgICAgICBwYWNrYWdlID0gX2NhbGNfX19wYWNrYWdlX18oZ2xvYmFsc18pCiAgICAgICAgIG1vZHVsZSA9IF9nY2RfaW1wb3J0KG5hbWUsIHBhY2thZ2UsIGxldmVsKQotICAgICMgVGhlIGhlbGwgdGhhdCBpcyBmcm9tbGlzdCAuLi4KICAgICBpZiBub3QgZnJvbWxpc3Q6CiAgICAgICAgICMgUmV0dXJuIHVwIHRvIHRoZSBmaXJzdCBkb3QgaW4gJ25hbWUnLiBUaGlzIGlzIGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0CiAgICAgICAgICMgdGhhdCAnbmFtZScgbWF5IGJlIHJlbGF0aXZlLgogICAgICAgICBpZiBsZXZlbCA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWUucGFydGl0aW9uKCcuJylbMF1dCisgICAgICAgICAgICByZXR1cm4gX2djZF9pbXBvcnQobmFtZS5wYXJ0aXRpb24oJy4nKVswXSkKICAgICAgICAgZWxpZiBub3QgbmFtZToKICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRmlndXJlIG91dCB3aGVyZSB0byBzbGljZSB0aGUgbW9kdWxlJ3MgbmFtZSB1cCB0byB0aGUgZmlyc3QgZG90CisgICAgICAgICAgICAjIGluICduYW1lJy4KICAgICAgICAgICAgIGN1dF9vZmYgPSBsZW4obmFtZSkgLSBsZW4obmFtZS5wYXJ0aXRpb24oJy4nKVswXSkKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1ttb2R1bGUuX19uYW1lX19bOi1jdXRfb2ZmXV0KKyAgICAgICAgICAgICMgU2xpY2UgZW5kIG5lZWRzIHRvIGJlIHBvc2l0aXZlIHRvIGFsbGV2aWF0ZSBuZWVkIHRvIHNwZWNpYWwtY2FzZQorICAgICAgICAgICAgIyB3aGVuIGBgJy4nIG5vdCBpbiBuYW1lYGAuCisgICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fWzpsZW4obW9kdWxlLl9fbmFtZV9fKS1jdXRfb2ZmXV0KICAgICBlbHNlOgotICAgICAgICAjIElmIGEgcGFja2FnZSB3YXMgaW1wb3J0ZWQsIHRyeSB0byBpbXBvcnQgc3R1ZmYgZnJvbSBmcm9tbGlzdC4KLSAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICAgICAgaWYgJyonIGluIGZyb21saXN0IGFuZCBoYXNhdHRyKG1vZHVsZSwgJ19fYWxsX18nKToKLSAgICAgICAgICAgICAgICBmcm9tbGlzdCA9IGxpc3QoZnJvbWxpc3QpCi0gICAgICAgICAgICAgICAgZnJvbWxpc3QucmVtb3ZlKCcqJykKLSAgICAgICAgICAgICAgICBmcm9tbGlzdC5leHRlbmQobW9kdWxlLl9fYWxsX18pCi0gICAgICAgICAgICBmb3IgeCBpbiAoeSBmb3IgeSBpbiBmcm9tbGlzdCBpZiBub3QgaGFzYXR0cihtb2R1bGUseSkpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX2djZF9pbXBvcnQoJ3swfS57MX0nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIHJldHVybiBfaGFuZGxlX2Zyb21saXN0KG1vZHVsZSwgZnJvbWxpc3QsIF9nY2RfaW1wb3J0KQorCisKKworZGVmIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CisgICAgIiIiU2V0dXAgaW1wb3J0bGliIGJ5IGltcG9ydGluZyBuZWVkZWQgYnVpbHQtaW4gbW9kdWxlcyBhbmQgaW5qZWN0aW5nIHRoZW0KKyAgICBpbnRvIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorCisgICAgQXMgc3lzIGlzIG5lZWRlZCBmb3Igc3lzLm1vZHVsZXMgYWNjZXNzIGFuZCBfaW1wIGlzIG5lZWRlZCB0byBsb2FkIGJ1aWx0LWluCisgICAgbW9kdWxlcywgdGhvc2UgdHdvIG1vZHVsZXMgbXVzdCBiZSBleHBsaWNpdGx5IHBhc3NlZCBpbi4KKworICAgICIiIgorICAgIGdsb2JhbCBfaW1wLCBzeXMsIEJZVEVDT0RFX1NVRkZJWEVTCisgICAgX2ltcCA9IF9pbXBfbW9kdWxlCisgICAgc3lzID0gc3lzX21vZHVsZQorCisgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgorICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUworICAgIGVsc2U6CisgICAgICAgIEJZVEVDT0RFX1NVRkZJWEVTID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKKworICAgIGZvciBtb2R1bGUgaW4gKF9pbXAsIHN5cyk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gQnVpbHRpbkltcG9ydGVyCisKKyAgICBzZWxmX21vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgIGZvciBidWlsdGluX25hbWUgaW4gKCdfaW8nLCAnX3dhcm5pbmdzJywgJ2J1aWx0aW5zJywgJ21hcnNoYWwnKToKKyAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQorCisgICAgb3NfZGV0YWlscyA9ICgncG9zaXgnLCBbJy8nXSksICgnbnQnLCBbJ1xcJywgJy8nXSksICgnb3MyJywgWydcXCcsICcvJ10pCisgICAgZm9yIGJ1aWx0aW5fb3MsIHBhdGhfc2VwYXJhdG9ycyBpbiBvc19kZXRhaWxzOgorICAgICAgICAjIEFzc3VtcHRpb24gbWFkZSBpbiBfcGF0aF9qb2luKCkKKyAgICAgICAgYXNzZXJ0IGFsbChsZW4oc2VwKSA9PSAxIGZvciBzZXAgaW4gcGF0aF9zZXBhcmF0b3JzKQorICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1swXQorICAgICAgICBpZiBidWlsdGluX29zIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgb3NfbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9vc10KKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3NfbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fb3MpCisgICAgICAgICAgICAgICAgIyBUT0RPOiByaXAgb3V0IG9zMiBjb2RlIGFmdGVyIDMuMyBpcyByZWxlYXNlZCBhcyBwZXIgUEVQIDExCisgICAgICAgICAgICAgICAgaWYgYnVpbHRpbl9vcyA9PSAnb3MyJyBhbmQgJ0VNWCBHQ0MnIGluIHN5cy52ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1sxXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignaW1wb3J0bGliIHJlcXVpcmVzIHBvc2l4IG9yIG50JykKKworICAgIHRyeToKKyAgICAgICAgdGhyZWFkX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX3RocmVhZCcpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAjIFB5dGhvbiB3YXMgYnVpbHQgd2l0aG91dCB0aHJlYWRzCisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBOb25lCisgICAgd2Vha3JlZl9tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ193ZWFrcmVmJykKKworICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgd2lucmVnX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnd2lucmVnJykKKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193aW5yZWcnLCB3aW5yZWdfbW9kdWxlKQorCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19vcycsIG9zX21vZHVsZSkKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3RocmVhZCcsIHRocmVhZF9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsIHNldChwYXRoX3NlcGFyYXRvcnMpKQorICAgICMgQ29uc3RhbnRzCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19yZWxheF9jYXNlJywgX21ha2VfcmVsYXhfY2FzZSgpKQorICAgIEVYVEVOU0lPTl9TVUZGSVhFUy5leHRlbmQoX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKSkKKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIFNPVVJDRV9TVUZGSVhFUy5hcHBlbmQoJy5weXcnKQorICAgICAgICBpZiAnX2QucHlkJyBpbiBFWFRFTlNJT05fU1VGRklYRVM6CisgICAgICAgICAgICBXaW5kb3dzUmVnaXN0cnlGaW5kZXIuREVCVUdfQlVJTEQgPSBUcnVlCisKKworZGVmIF9pbnN0YWxsKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKKyAgICAiIiJJbnN0YWxsIGltcG9ydGxpYiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorICAgIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSkKKyAgICBzdXBwb3J0ZWRfbG9hZGVycyA9IF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpCisgICAgc3lzLnBhdGhfaG9va3MuZXh0ZW5kKFtGaWxlRmluZGVyLnBhdGhfaG9vaygqc3VwcG9ydGVkX2xvYWRlcnMpXSkKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChCdWlsdGluSW1wb3J0ZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoRnJvemVuSW1wb3J0ZXIpCisgICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCBmYTM0M2Y4Li4zODc1NjdhIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtMSwxOCArMSw5NCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0LiIiIgogZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4gaW1wb3J0IG1hY2hpbmVyeQotZnJvbSAuIGltcG9ydCB1dGlsCit0cnk6CisgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliCitleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgIGlmIGV4Yy5uYW1lICE9ICdfZnJvemVuX2ltcG9ydGxpYic6CisgICAgICAgIHJhaXNlCisgICAgX2Zyb3plbl9pbXBvcnRsaWIgPSBOb25lCiBpbXBvcnQgYWJjCiBpbXBvcnQgaW1wCi1pbXBvcnQgaW8KIGltcG9ydCBtYXJzaGFsCi1pbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCiAKK2RlZiBfcmVnaXN0ZXIoYWJzdHJhY3RfY2xzLCAqY2xhc3Nlcyk6CisgICAgZm9yIGNscyBpbiBjbGFzc2VzOgorICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoY2xzKQorICAgICAgICBpZiBfZnJvemVuX2ltcG9ydGxpYiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoZnJvemVuX2NscykKKworCitjbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKworICAgICIiIkxlZ2FjeSBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycy4KKworICAgIEl0IG1heSBiZSBzdWJjbGFzc2VkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IHRoaXJkIHBhcnR5CisgICAgcmVpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGltcG9ydCBzeXN0ZW0uICBPdGhlcndpc2UsIGZpbmRlcgorICAgIGltcGxlbWVudGF0aW9ucyBzaG91bGQgZGVyaXZlIGZyb20gdGhlIG1vcmUgc3BlY2lmaWMgTWV0YVBhdGhGaW5kZXIKKyAgICBvciBQYXRoRW50cnlGaW5kZXIgQUJDcy4KKyAgICAiIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IHNob3VsZCBmaW5kIGEgbW9kdWxlLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBvcHRpb25hbCBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK2NsYXNzIE1ldGFQYXRoRmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycyBvbiBzeXMubWV0YV9wYXRoLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KKyAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKE1ldGFQYXRoRmluZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXIsIG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisKKworY2xhc3MgUGF0aEVudHJ5RmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBwYXRoIGVudHJ5IGZpbmRlcnMgdXNlZCBieSBQYXRoRmluZGVyLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgcmV0dXJucyBhIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4gIFJldHVybnMgYSAyLXR1cGxlIG9mIChMb2FkZXIsIHBvcnRpb24pIHdoZXJlCisgICAgICAgIHBvcnRpb24gaXMgYSBzZXF1ZW5jZSBvZiBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgY29udHJpYnV0aW5nIHRvIHBhcnQgb2YKKyAgICAgICAgYSBuYW1lc3BhY2UgcGFja2FnZS4gIFRoZSBzZXF1ZW5jZSBtYXkgYmUgZW1wdHkgYW5kIHRoZSBsb2FkZXIgbWF5IGJlCisgICAgICAgIE5vbmUuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiQW4gb3B0aW9uYWwgbWV0aG9kIGZvciBjbGVhcmluZyB0aGUgZmluZGVyJ3MgY2FjaGUsIGlmIGFueS4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCBieSBQYXRoRmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKFBhdGhFbnRyeUZpbmRlciwgbWFjaGluZXJ5LkZpbGVGaW5kZXIpCisKKwogY2xhc3MgTG9hZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgbG9hZGVycy4iIiIKQEAgLTIzLDIzICs5OSwxMiBAQAogICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotCi1jbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKLQotICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcG9ydCBmaW5kZXJzLiIiIgotCiAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCi0gICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIG9wdGlvbmFsIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KLSAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCi0gICAgICAgICIiIgorICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZQorICAgICAgICBnaXZlbiBtb2R1bGUncyByZXByLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyKQotRmluZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuUGF0aEZpbmRlcikKLQogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgogCkBAIC04NCw4ICsxNDksOCBAQAogICAgICAgICBtb2R1bGUuICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgc3RyLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKQorX3JlZ2lzdGVyKEluc3BlY3RMb2FkZXIsIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQogCiAKIGNsYXNzIEV4ZWN1dGlvbkxvYWRlcihJbnNwZWN0TG9hZGVyKToKQEAgLTEwNCw2ICsxNjksMTUgQEAKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKK2NsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcGFydGlhbGx5IGltcGxlbWVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgYW5kCisgICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCisKK19yZWdpc3RlcihGaWxlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKKworCiBjbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgbG9hZGluZyBzb3VyY2UgY29kZSAoYW5kIG9wdGlvbmFsbHkgYW55CkBAIC0xMjMsNyArMTk3LDIwIEBACiAKICAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSAoaW50KSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBhdGggKHN0cikuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgaWYgc2VsZi5wYXRoX3N0YXRzLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX3N0YXRzOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4gaW50KHNlbGYucGF0aF9zdGF0cyhwYXRoKVsnbXRpbWUnXSkKKworICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc291cmNlIHBvaW50ZWQgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnBhdGhfbXRpbWUuX19mdW5jX18gaXMgU291cmNlTG9hZGVyLnBhdGhfbXRpbWU6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSB0aGUgYnl0ZXMgdG8gdGhlIHBhdGggKGlmIHBvc3NpYmxlKS4KQEAgLTEzNyw2ICsyMjQsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCitfcmVnaXN0ZXIoU291cmNlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogY2xhc3MgUHlMb2FkZXIoU291cmNlTG9hZGVyKToKIApAQCAtMTk1LDEwICsyODMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZSB0aGUgaW1wb3J0bGliIGRvY3VtZW50YXRpb24gb24gaG93IHRvIGJlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgb253YXJkcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihuYW1lPWZ1bGxuYW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKIApAQCAtMjI2LDcgKzMxNCw3IEBACiAgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIHBhdGggYXZhaWxhYmxlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSwgbmFtZT1mdWxsbmFtZSkKIAogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkdldCBhIGNvZGUgb2JqZWN0IGZyb20gc291cmNlIG9yIGJ5dGVjb2RlLiIiIgpAQCAtMjM0LDcgKzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbW92YWwgaW4gUHl0aG9uIDMuNDsgdXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIFB5dGhvbiAzLjEgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgc2VlIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhdGVzdCBkb2N1bWVudGF0aW9uIGZvciBQeUxvYWRlci4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgc291cmNlX3RpbWVzdGFtcCA9IHNlbGYuc291cmNlX210aW1lKGZ1bGxuYW1lKQogICAgICAgICAjIFRyeSB0byB1c2UgYnl0ZWNvZGUgaWYgaXQgaXMgYXZhaWxhYmxlLgogICAgICAgICBieXRlY29kZV9wYXRoID0gc2VsZi5ieXRlY29kZV9wYXRoKGZ1bGxuYW1lKQpAQCAtMjQzLDIwICszMzEsMzAgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICAgICAgICAgICAgICAgaWYgbGVuKG1hZ2ljKSA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KICAgICAgICAgICAgICAgICBpZiBsZW4ocmF3X3RpbWVzdGFtcCkgPCA0OgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiYmFkIHRpbWVzdGFtcCBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKLSAgICAgICAgICAgICAgICBweWNfdGltZXN0YW1wID0gbWFyc2hhbC5fcl9sb25nKHJhd190aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgYnl0ZWNvZGUgPSBkYXRhWzg6XQorICAgICAgICAgICAgICAgIHB5Y190aW1lc3RhbXAgPSBfYm9vdHN0cmFwLl9yX2xvbmcocmF3X3RpbWVzdGFtcCkKKyAgICAgICAgICAgICAgICByYXdfc291cmNlX3NpemUgPSBkYXRhWzg6MTJdCisgICAgICAgICAgICAgICAgaWYgbGVuKHJhd19zb3VyY2Vfc2l6ZSkgIT0gNDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCBmaWxlIHNpemUgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgIyBTb3VyY2Ugc2l6ZSBpcyB1bnVzZWQgYXMgdGhlIEFCQyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvCisgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHNpemUgb2YgdGhlIHNvdXJjZSBhaGVhZCBvZiByZWFkaW5nIGl0LgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlID0gZGF0YVsxMjpdCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGlzIHZhbGlkLgogICAgICAgICAgICAgICAgIGlmIGltcC5nZXRfbWFnaWMoKSAhPSBtYWdpYzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgYnl0ZWNvZGUgaXMgbm90IHN0YWxlIChvbmx5IG1hdHRlcnMgd2hlbgogICAgICAgICAgICAgICAgICMgdGhlcmUgaXMgc291cmNlIHRvIGZhbGwgYmFjayBvbi4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wOgogICAgICAgICAgICAgICAgICAgICBpZiBweWNfdGltZXN0YW1wIDwgc291cmNlX3RpbWVzdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJieXRlY29kZSBpcyBzdGFsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUiLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICMgSWYgc291cmNlIGlzIGF2YWlsYWJsZSBnaXZlIGl0IGEgc2hvdC4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wIGlzIG5vdCBOb25lOgpAQCAtMjY4LDE4ICszNjYsMjAgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbWFyc2hhbC5sb2FkcyhieXRlY29kZSkKICAgICAgICAgZWxpZiBzb3VyY2VfdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIGF2YWlsYWJsZSB0byBjcmVhdGUgY29kZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgZm9yIHswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBmb3IgezAhcn0iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICAjIFVzZSB0aGUgc291cmNlLgogICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBtZXNzYWdlID0gImEgc291cmNlIHBhdGggbXVzdCBleGlzdCB0byBsb2FkIHswfSIuZm9ybWF0KGZ1bGxuYW1lKQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgIGNvZGVfb2JqZWN0ID0gY29tcGlsZShzb3VyY2UsIHNvdXJjZV9wYXRoLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQogICAgICAgICAjIEdlbmVyYXRlIGJ5dGVjb2RlIGFuZCB3cml0ZSBpdCBvdXQuCiAgICAgICAgIGlmIG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKICAgICAgICAgICAgIGRhdGEgPSBieXRlYXJyYXkoaW1wLmdldF9tYWdpYygpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKGxlbihzb3VyY2UpICYgMHhGRkZGRkZGRikpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYud3JpdGVfYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEpCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQppbmRleCA1MTk3NzQ0Li5mZjgyNmU0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQorKysgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQpAQCAtMSw1ICsxLDIwIEBACiAiIiJUaGUgbWFjaGluZXJ5IG9mIGltcG9ydGxpYjogZmluZGVycywgbG9hZGVycywgaG9va3MsIGV0Yy4iIiIKIAoraW1wb3J0IF9pbXAKKworZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgKFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICBFWFRFTlNJT05fU1VGRklYRVMpCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IEZyb3plbkltcG9ydGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IFBhdGhGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IEZpbGVGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZUZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBFeHRlbnNpb25GaWxlTG9hZGVyCisKKworZGVmIGFsbF9zdWZmaXhlcygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGFsbCByZWNvZ25pemVkIG1vZHVsZSBzdWZmaXhlcyBmb3IgdGhpcyBwcm9jZXNzIiIiCisgICAgcmV0dXJuIFNPVVJDRV9TVUZGSVhFUyArIEJZVEVDT0RFX1NVRkZJWEVTICsgRVhURU5TSU9OX1NVRkZJWEVTCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVjYzUzZC4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0iIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KLQotU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCi1idWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotZnJvbSBpbXBvcnRsaWIudGVzdC5pbXBvcnRfIGltcG9ydCB1dGlsCi1pbXBvcnQgb3MucGF0aAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGlmICdfX3B5Y2FjaGVfXycgaW4gX19maWxlX186Ci0gICAgICAgIHBhcnRzID0gX19maWxlX18uc3BsaXQob3MucGF0aC5zZXApCi0gICAgICAgIHN0YXJ0X2RpciA9IHNlcC5qb2luKHBhcnRzWzotMl0pCi0gICAgZWxzZToKLSAgICAgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCi0gICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICBpZiAnLS1idWlsdGluJyBpbiBzeXMuYXJndjoKLSAgICAgICAgdXRpbC51c2luZ19fX2ltcG9ydF9fID0gVHJ1ZQotICAgIHJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGU2YzYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0iIiJCZW5jaG1hcmsgc29tZSBiYXNpYyBpbXBvcnQgdXNlLWNhc2VzLgotCi1UaGUgYXNzdW1wdGlvbiBpcyBtYWRlIHRoYXQgdGhpcyBiZW5jaG1hcmsgaXMgcnVuIGluIGEgZnJlc2ggaW50ZXJwcmV0ZXIgYW5kCi10aHVzIGhhcyBubyBleHRlcm5hbCBjaGFuZ2VzIG1hZGUgdG8gaW1wb3J0LXJlbGF0ZWQgYXR0cmlidXRlcyBpbiBzeXMuCi0KLSIiIgotZnJvbSAuIGltcG9ydCB1dGlsCi1mcm9tIC5zb3VyY2UgaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCBkZWNpbWFsCi1pbXBvcnQgaW1wCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgb3MKLWltcG9ydCBweV9jb21waWxlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZWl0Ci0KLQotZGVmIGJlbmNoKG5hbWUsIGNsZWFudXA9bGFtYmRhOiBOb25lLCAqLCBzZWNvbmRzPTEsIHJlcGVhdD0zKToKLSAgICAiIiJCZW5jaCB0aGUgZ2l2ZW4gc3RhdGVtZW50IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5IHVudGlsIHRvdGFsCi0gICAgZXhlY3V0aW9ucyB0YWtlIG9uZSBzZWNvbmQuIiIiCi0gICAgc3RtdCA9ICJfX2ltcG9ydF9fKHshcn0pIi5mb3JtYXQobmFtZSkKLSAgICB0aW1lciA9IHRpbWVpdC5UaW1lcihzdG10KQotICAgIGZvciB4IGluIHJhbmdlKHJlcGVhdCk6Ci0gICAgICAgIHRvdGFsX3RpbWUgPSAwCi0gICAgICAgIGNvdW50ID0gMAotICAgICAgICB3aGlsZSB0b3RhbF90aW1lIDwgc2Vjb25kczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0b3RhbF90aW1lICs9IHRpbWVyLnRpbWVpdCgxKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGVhbnVwKCkKLSAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgT25lIGV4ZWN1dGlvbiB0b28gZmFyCi0gICAgICAgICAgICBpZiB0b3RhbF90aW1lID4gc2Vjb25kczoKLSAgICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAgIHlpZWxkIGNvdW50IC8vIHNlY29uZHMKLQotZGVmIGZyb21fY2FjaGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJzeXMubW9kdWxlcyIiIgotICAgIG5hbWUgPSAnPGJlbmNobWFyayBpbXBvcnQ+JwotICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgbW9kdWxlLl9fZmlsZV9fID0gJzx0ZXN0PicKLSAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJwotICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgYnVpbHRpbl9tb2Qoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJCdWlsdC1pbiBtb2R1bGUiIiIKLSAgICBuYW1lID0gJ2Vycm5vJwotICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQotICAgICMgUmVseWluZyBvbiBidWlsdC1pbiBpbXBvcnRlciBiZWluZyBpbXBsaWNpdC4KLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHNpbXBsZSIiIgotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgICAgICAjIENsZWFycyBvdXQgc3lzLm1vZHVsZXMgYW5kIHB1dHMgYW4gZW50cnkgYXQgdGhlIGZyb250IG9mIHN5cy5wYXRoLgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBkZWNpbWFsX3dvX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHcvbyBieXRlY29kZTogZGVjaW1hbCIiIgotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBkZWNpbWFsX2J5dGVjb2RlID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pCi0gICAgaWYgb3MucGF0aC5leGlzdHMoZGVjaW1hbF9ieXRlY29kZSk6Ci0gICAgICAgIG9zLnVubGluayhkZWNpbWFsX2J5dGVjb2RlKQotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBzaW1wbGUiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgZGVmIGNsZWFudXAoKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IGRlY2ltYWwiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICBvcy51bmxpbmsoaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV91c2luZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIkJ5dGVjb2RlIHcvIHNvdXJjZTogc2ltcGxlIiIiCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCi0gICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiQnl0ZWNvZGUgdy8gc291cmNlOiBkZWNpbWFsIiIiCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIHB5X2NvbXBpbGUuY29tcGlsZShkZWNpbWFsLl9fZmlsZV9fKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgbWFpbihpbXBvcnRfKToKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydF8KLSAgICBiZW5jaG1hcmtzID0gKGZyb21fY2FjaGUsIGJ1aWx0aW5fbW9kLAotICAgICAgICAgICAgICAgICAgc291cmNlX3VzaW5nX2J5dGVjb2RlLCBzb3VyY2Vfd29fYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdXNpbmdfYnl0ZWNvZGUsIGRlY2ltYWxfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfd29fYnl0ZWNvZGUsKQotICAgIHNlY29uZHMgPSAxCi0gICAgc2Vjb25kc19wbHVyYWwgPSAncycgaWYgc2Vjb25kcyA+IDEgZWxzZSAnJwotICAgIHJlcGVhdCA9IDMKLSAgICBoZWFkZXIgPSAiTWVhc3VyaW5nIGltcG9ydHMvc2Vjb25kIG92ZXIge30gc2Vjb25ke30sIGJlc3Qgb3V0IG9mIHt9XG4iCi0gICAgcHJpbnQoaGVhZGVyLmZvcm1hdChzZWNvbmRzLCBzZWNvbmRzX3BsdXJhbCwgcmVwZWF0KSkKLSAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6Ci0gICAgICAgIHByaW50KGJlbmNobWFyay5fX2RvY19fLCAiWyIsIGVuZD0nICcpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaG1hcmsoc2Vjb25kcz1zZWNvbmRzLCByZXBlYXQ9cmVwZWF0KToKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgICAgIHByaW50KHJlc3VsdCwgZW5kPScgJykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgICAgIHByaW50KCJdIiwgImJlc3QgaXMiLCBmb3JtYXQobWF4KHJlc3VsdHMpLCAnLGQnKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBvcHRwYXJzZQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWInLCAnLS1idWlsdGluJywgZGVzdD0nYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJ1c2UgdGhlIGJ1aWx0LWluIF9faW1wb3J0X18iKQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgaWYgYXJnczoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ1bnJlY29nbml6ZWQgYXJnczoge30iLmZvcm1hdChhcmdzKSkKLSAgICBpbXBvcnRfID0gX19pbXBvcnRfXwotICAgIGlmIG5vdCBvcHRpb25zLmJ1aWx0aW46Ci0gICAgICAgIGltcG9ydF8gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotCi0gICAgbWFpbihpbXBvcnRfKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYzU4NDAuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5leHRlbnNpb24nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTc4M2RiLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGV4dF91dGlsCi1mcm9tIC4uIGltcG9ydCBhYmMKLWZyb20gLi4gaW1wb3J0IHV0aWwKLQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKLQotICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaWxlTG9hZGVyKGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKLSAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4dF91dGlsLk5BTUUgaW4gc3lzLm1vZHVsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbGVMb2FkZXIpKQotCi0gICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb25zIGFyZSBub3QgZm91bmQgaW4gcGFja2FnZXMuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgotICAgICAgICAjIEV4dGVuc2lvbnMgYXJlIG5vdCBmb3VuZCBpbiBwYWNrYWdlcy4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKLQotICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgICMgTm8gZWFzeSB3YXkgdG8gdHJpZ2dlciBhIGZhaWx1cmUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGltcG9ydC4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdhc2RmamtsOycpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NDVlZWIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5mcm96ZW4nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjc2NjEuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuaW1wb3J0XycsIGRpcmVjdG9yeSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QodGVzdF9zdWl0ZSgpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA3NWQ0Mi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0Ci0gICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCi0KLSAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKLSAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoQVBJVGVzdCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhZGMzMi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKLQotCi1jbGFzcyBQYXJlbnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJJbXBvcnRpbmcgYSBzdWJtb2R1bGUgc2hvdWxkIGltcG9ydCB0aGUgcGFyZW50IG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgdGVzdF9pbXBvcnRfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncGtnJyBpbiBzeXMubW9kdWxlcykKLQotICAgIGRlZiB0ZXN0X2JhZF9wYXJlbnQoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVHJ5IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSBmcm9tIGEgbm9uLXBhY2thZ2Ugc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgotICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAnX19wYXRoX18nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KFBhcmVudE1vZHVsZVRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhYTIzMS4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0eXBlcyBpbXBvcnQgTWV0aG9kVHlwZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkgaXMgTm9uZSkKLQotICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCi0gICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGgoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0ICdwYXRoJyBpcyB1c2VkIHdoZW4gc2V0LgotICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyB1c2VkLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCi0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGggaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBoYXMgTm9uZSB0aGF0IE5vbmUgaXMgcmV0dXJuZWQuCi0gICAgICAgIGNsZWFyX2NhY2hlID0ge3BhdGg6IE5vbmUgZm9yIHBhdGggaW4gc3lzLnBhdGh9Ci0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT1jbGVhcl9jYWNoZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiAoJ2FzeW5jaGF0JywgJ3N5cycsICc8dGVzdCBtb2R1bGU+Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG5hbWUpIGlzIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lX2NvbnRpbnVlcyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgaGF2aW5nIE5vbmUgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgY2F1c2VzIHRoZSBzZWFyY2ggdG8KLSAgICAgICAgIyBjb250aW51ZS4KLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9WycxJywgJzInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2ltcG9ydGVyX2NhY2hlPXsnMSc6IE5vbmUsICcyJzogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLQotCi1jbGFzcyBEZWZhdWx0UGF0aEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLl9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLiIiIgotCi0gICAgZGVmIHRlc3RfaW1wbGljaXRfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBpbXBsaWNpdCBwYXRoIGhvb2tzIGFyZSB1c2VkLgotICAgICAgICBiYWRfcGF0aCA9ICc8cGF0aD4nCi0gICAgICAgIG1vZHVsZSA9ICc8bW9kdWxlPicKLSAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhiYWRfcGF0aCkKLSAgICAgICAgZXhpc3RpbmdfcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICAgICAgbm90aGluZyA9IF9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bZXhpc3RpbmdfcGF0aF0pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdGhpbmcgaXMgTm9uZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhpc3RpbmdfcGF0aCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2V4aXN0aW5nX3BhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wLk51bGxJbXBvcnRlcikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3VsdCkKLSAgICAgICAgICAgICAgICBub3RoaW5nID0gX2Jvb3RzdHJhcC5fRGVmYXVsdFBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bYmFkX3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhZF9wYXRoIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2JhZF9wYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAuTnVsbEltcG9ydGVyKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJtZGlyKGV4aXN0aW5nX3BhdGgpCi0KLQotICAgIGRlZiB0ZXN0X3BhdGhfaW1wb3J0ZXJfY2FjaGVfaGFzX05vbmUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBkZWZhdWx0IGhvb2sgaXMgdXNlZCB3aGVuIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCi0gICAgICAgICMgY29udGFpbnMgTm9uZSBmb3IgYSBwYXRoLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgICMgWFhYIE5vdCBibGFja2JveC4KLSAgICAgICAgb3JpZ2luYWxfaG9vayA9IF9ib290c3RyYXAuX0RFRkFVTFRfUEFUSF9IT09LCi0gICAgICAgIG1vY2tfaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQotICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG1vY2tfaG9vawotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IE5vbmV9KToKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG9yaWdpbmFsX2hvb2sKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChGaW5kZXJUZXN0cywgRGVmYXVsdFBhdGhGaW5kZXJUZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTAzYWU3Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSIiIlJ1biBQeXRob24ncyBzdGFuZGFyZCB0ZXN0IHN1aXRlIHVzaW5nIGltcG9ydGxpYi5fX2ltcG9ydF9fLgotCi1UZXN0cyBrbm93biB0byBmYWlsIGJlY2F1c2Ugb2YgYXNzdW1wdGlvbnMgdGhhdCBpbXBvcnRsaWIgKHByb3Blcmx5KQotaW52YWxpZGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgc2tpcHBlZCBpZiB0aGUgZW50aXJlIHRlc3Qgc3VpdGUgaXMgcnVuLgotT3RoZXJ3aXNlIGFsbCBjb21tYW5kLWxpbmUgb3B0aW9ucyB2YWxpZCBmb3IgdGVzdC5yZWdydGVzdCBhcmUgYWxzbyB2YWxpZCBmb3IKLXRoaXMgc2NyaXB0LgotCi1YWFggRkFJTElORwotICAqIHRlc3RfaW1wb3J0Ci0gICAgLSB0ZXN0X2luY29ycmVjdF9jb2RlX25hbWUKLSAgICAgICAgZmlsZSBuYW1lIGRpZmZlcmluZyBiZXR3ZWVuIF9fZmlsZV9fIGFuZCBjb19maWxlbmFtZSAocjY4MzYwIG9uIHRydW5rKQotICAgIC0gdGVzdF9pbXBvcnRfYnlfZmlsZW5hbWUKLSAgICAgICAgZXhjZXB0aW9uIGZvciB0cnlpbmcgdG8gaW1wb3J0IGJ5IGZpbGUgbmFtZSBkb2VzIG5vdCBtYXRjaAotCi0iIiIKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCi0KLSAgICBleGNsdWRlID0gWyctLWV4Y2x1ZGUnLAotICAgICAgICAgICAgICAgICd0ZXN0X2Zyb3plbicsICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcGtnJywgICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcHlkb2MnLCAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICBdCi0KLSAgICAjIFN3aXRjaGluZyBvbiAtLWV4Y2x1ZGUgaW1wbGllcyBydW5uaW5nIGFsbCB0ZXN0IGJ1dCB0aGUgb25lcyBsaXN0ZWQsIHNvCi0gICAgIyBvbmx5IHVzZSBpdCB3aGVuIG9uZSBpcyBub3QgcnVubmluZyBhbiBleHBsaWNpdCB0ZXN0Ci0gICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgotICAgICAgICAjIE5vIHByb2dyYW1tYXRpYyB3YXkgdG8gc3BlY2lmeSB0ZXN0cyB0byBleGNsdWRlCi0gICAgICAgIHN5cy5hcmd2LmV4dGVuZChleGNsdWRlKQotCi0gICAgcmVncnRlc3QubWFpbihxdWlldD1UcnVlLCB2ZXJib3NlMj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NGY3YjYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIFBhdGhIb29rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHRoZSBwYXRoIGhvb2sgZm9yIHNvdXJjZS4iIiIKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKG1hcHBpbmdbJy5yb290J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfbW9kdWxlJykpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6Ci0gICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoUGF0aEhvb2tUZXN0KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE1MTYyNi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEltcG9ydE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygndG9wX2xldmVsJykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd0b3BfbGV2ZWwnKQotCi0gICAgZGVmIHRlc3RfYWJzb2x1dGVfcGFja2FnZV9pbXBvcnQoc2VsZik6Ci0gICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2Ugd2l0aCBhbiBhYnNvbHV0ZSBuYW1lLgotICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCi0gICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9zaGFsbG93X3JlbGF0aXZlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHRocm91Z2ggYSByZWxhdGl2ZSBpbXBvcnQuCi0gICAgICAgIHBrZ19uYW1lID0gJ3BrZycKLSAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgbW9kdWxlX25hbWUgPSAnbW9kJwotICAgICAgICBhYnNvbHV0ZV9uYW1lID0gJ3swfS57MX0nLmZvcm1hdChwa2dfbmFtZSwgbW9kdWxlX25hbWUpCi0gICAgICAgIHJlbGF0aXZlX25hbWUgPSAnLnswfScuZm9ybWF0KG1vZHVsZV9uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIGFic29sdXRlX25hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHJlbGF0aXZlX25hbWUsIHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBhYnNvbHV0ZV9uYW1lKQotCi0gICAgZGVmIHRlc3RfZGVlcF9yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKLSAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmIuX19pbml0X18nLCAnYS5jJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EnKQotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuLmMnLCAnYS5iJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ2EuYycpCi0KLSAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRfd2l0aF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZSB3aXRoCi0gICAgICAgICMgdGhlICdwYWNrYWdlJyBhcmd1bWVudCBnaXZlbi4KLSAgICAgICAgcGtnX25hbWUgPSAncGtnJwotICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKLQotICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF93b19wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFJlbGF0aXZlIGltcG9ydHMgY2Fubm90IGhhcHBlbiB3aXRob3V0IHRoZSAncGFja2FnZScgYXJndW1lbnQgYmVpbmcKLSAgICAgICAgIyBzZXQuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuc3VwcG9ydCcpCi0KLQotICAgIGRlZiB0ZXN0X2xvYWRlZF9vbmNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMzU5MTogTW9kdWxlcyBzaG91bGQgb25seSBiZSBsb2FkZWQgb25jZSB3aGVuCi0gICAgICAgICMgaW5pdGlhbGl6aW5nIHRoZSBwYXJlbnQgcGFja2FnZSBhdHRlbXB0cyB0byBpbXBvcnQgdGhlCi0gICAgICAgICMgbW9kdWxlIGN1cnJlbnRseSBiZWluZyBpbXBvcnRlZC4KLSAgICAgICAgYl9sb2FkX2NvdW50ID0gMAotICAgICAgICBkZWYgbG9hZF9hKCk6Ci0gICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgZGVmIGxvYWRfYigpOgotICAgICAgICAgICAgbm9ubG9jYWwgYl9sb2FkX2NvdW50Ci0gICAgICAgICAgICBiX2xvYWRfY291bnQgKz0gMQotICAgICAgICBjb2RlID0geydhJzogbG9hZF9hLCAnYS5iJzogbG9hZF9ifQotICAgICAgICBtb2R1bGVzID0gWydhLl9faW5pdF9fJywgJ2EuYiddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMsIG1vZHVsZV9jb2RlPWNvZGUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJfbG9hZF9jb3VudCwgMSkKLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoSW1wb3J0TW9kdWxlVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMjQ0N2YuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBNb2R1bGVGb3JMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIuIiIiCi0KLSAgICBkZWYgcmV0dXJuX21vZHVsZShzZWxmLCBuYW1lKToKLSAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihsYW1iZGEgc2VsZiwgbW9kdWxlOiBtb2R1bGUpCi0gICAgICAgIHJldHVybiBmeG4oc2VsZiwgbmFtZSkKLQotICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgbmFtZSk6Ci0gICAgICAgIGRlZiB0b193cmFwKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICBmeG4gPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKHRvX3dyYXApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ4bihzZWxmLCBuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9uZXdfbW9kdWxlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB3aGVuIG5vIG1vZHVsZSBleGlzdHMgaW4gc3lzLm1vZHVsZXMgYSBuZXcgbW9kdWxlIGlzCi0gICAgICAgICMgY3JlYXRlZC4KLSAgICAgICAgbW9kdWxlX25hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG1vZHVsZV9uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlX25hbWUpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWQoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJldXNlZCBpZiBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLgotICAgICAgICBuYW1lID0gJ2EuYi5jJwotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKLSAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR1cm5lZF9tb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0gICAgZGVmIHRlc3RfbmV3X21vZHVsZV9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCi0gICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBub3QgaW4gc3lzLm1vZHVsZXMpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0KLWNsYXNzIFNldFBhY2thZ2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLQotICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIudXRpbC5zZXRfcGFja2FnZS4iIiIKLQotICAgIGRlZiB2ZXJpZnkoc2VsZiwgbW9kdWxlLCBleHBlY3QpOgotICAgICAgICAiIiJWZXJpZnkgdGhlIG1vZHVsZSBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBfX3BhY2thZ2VfXyBhZnRlcgotICAgICAgICBwYXNzaW5nIHRocm91Z2ggc2V0X3BhY2thZ2UuIiIiCi0gICAgICAgIGZ4biA9IGxhbWJkYTogbW9kdWxlCi0gICAgICAgIHdyYXBwZWQgPSB1dGlsLnNldF9wYWNrYWdlKGZ4bikKLSAgICAgICAgd3JhcHBlZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBtb2R1bGUuX19wYWNrYWdlX18pCi0KLSAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6Ci0gICAgICAgICMgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHdoZW4gcGFja2FnZSBpcyBzZXQgdG8gTm9uZS4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZHVsZScpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVGVzdCBzZXR0aW5nIF9fcGFja2FnZV9fIGZvciBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cnKQotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbJzxwYXRoPiddCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKLQotICAgIGRlZiB0ZXN0X3N1Ym1vZHVsZShzZWxmKToKLSAgICAgICAgIyBUZXN0IF9fcGFja2FnZV9fIGZvciBhIG1vZHVsZSBpbiBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cubW9kJykKLSAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQotCi0gICAgZGVmIHRlc3Rfc2V0dGluZ19pZl9taXNzaW5nKHNlbGYpOgotICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgbWlzc2luZy4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKToKLSAgICAgICAgICAgIGRlbGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQotCi0gICAgZGVmIHRlc3RfbGVhdmluZ19hbG9uZShzZWxmKToKLSAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpcyBzZXQgYW5kIG5vdCBOb25lIHRoZW4gbGVhdmUgaXQgYWxvbmUuCi0gICAgICAgIGZvciB2YWx1ZSBpbiAoVHJ1ZSwgRmFsc2UpOgotICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSB2YWx1ZQotICAgICAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCB2YWx1ZSkKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlRm9yTG9hZGVyVGVzdHMsIFNldFBhY2thZ2VUZXN0cykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggN2I0NGZhMS4uMTMxNjQzNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMywzICszLDE5IEBACiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBtb2R1bGVfZm9yX2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X3BhY2thZ2UKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKKworCitkZWYgcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpOgorICAgICIiIlJlc29sdmUgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSB0byBhbiBhYnNvbHV0ZSBvbmUuIiIiCisgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICByZXR1cm4gbmFtZQorICAgIGVsaWYgbm90IHBhY2thZ2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcmVsYXRpdmUgbmFtZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhubyBsZWFkaW5nIGRvdCknLmZvcm1hdChuYW1lKSkKKyAgICBsZXZlbCA9IDAKKyAgICBmb3IgY2hhcmFjdGVyIGluIG5hbWU6CisgICAgICAgIGlmIGNoYXJhY3RlciAhPSAnLic6CisgICAgICAgICAgICBicmVhaworICAgICAgICBsZXZlbCArPSAxCisgICAgcmV0dXJuIF9yZXNvbHZlX25hbWUobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggMjAzMTc1NS4uODhmMGVlMiAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTIyLDI0ICsyMiwyOSBAQAogICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKICAgICBjdXJyZW50ZnJhbWUoKSAtIGdldCB0aGUgY3VycmVudCBzdGFjayBmcmFtZQogICAgIHN0YWNrKCksIHRyYWNlKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMgb24gdGhlIHN0YWNrIG9yIGluIGEgdHJhY2ViYWNrCisKKyAgICBzaWduYXR1cmUoKSAtIGdldCBhIFNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBjYWxsYWJsZQogIiIiCiAKICMgVGhpcyBtb2R1bGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4uICBObyB3YXJyYW50aWVzLgogCi1fX2F1dGhvcl9fID0gJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JwotX19kYXRlX18gPSAnMSBKYW4gMjAwMScKK19fYXV0aG9yX18gPSAoJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JywKKyAgICAgICAgICAgICAgJ1l1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPicpCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgcmUKIGltcG9ydCBpbXAKLWltcG9ydCB0b2tlbml6ZQoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB0eXBlcworaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgYnVpbHRpbnMKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGF0dHJnZXR0ZXIKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0CiAKICMgQ3JlYXRlIGNvbnN0YW50cyBmb3IgdGhlIGNvbXBpbGVyIGZsYWdzIGluIEluY2x1ZGUvY29kZS5oCiAjIFdlIHRyeSB0byBnZXQgdGhlbSBmcm9tIGRpcyB0byBhdm9pZCBkdXBsaWNhdGlvbiwgYnV0IGZhbGwKQEAgLTQzMyw2ICs0MzgsOCBAQAogCiBkZWYgZ2V0bW9kdWxlaW5mbyhwYXRoKToKICAgICAiIiJHZXQgdGhlIG1vZHVsZSBuYW1lLCBzdWZmaXgsIG1vZGUsIGFuZCBtb2R1bGUgdHlwZSBmb3IgYSBnaXZlbiBmaWxlLiIiIgorICAgIHdhcm5pbmdzLndhcm4oJ2luc3BlY3QuZ2V0bW9kdWxlaW5mbygpIGlzIGRlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAyKQogICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCiAgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KQEAgLTQ0MywyMCArNDUwLDI5IEBACiAKIGRlZiBnZXRtb2R1bGVuYW1lKHBhdGgpOgogICAgICIiIlJldHVybiB0aGUgbW9kdWxlIG5hbWUgZm9yIGEgZ2l2ZW4gZmlsZSwgb3IgTm9uZS4iIiIKLSAgICBpbmZvID0gZ2V0bW9kdWxlaW5mbyhwYXRoKQotICAgIGlmIGluZm86IHJldHVybiBpbmZvWzBdCisgICAgZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCisgICAgIyBDaGVjayBmb3IgcGF0aHMgdGhhdCBsb29rIGxpa2UgYW4gYWN0dWFsIG1vZHVsZSBmaWxlCisgICAgc3VmZml4ZXMgPSBbKC1sZW4oc3VmZml4KSwgc3VmZml4KQorICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKCldCisgICAgc3VmZml4ZXMuc29ydCgpICMgdHJ5IGxvbmdlc3Qgc3VmZml4ZXMgZmlyc3QsIGluIGNhc2UgdGhleSBvdmVybGFwCisgICAgZm9yIG5lZ2xlbiwgc3VmZml4IGluIHN1ZmZpeGVzOgorICAgICAgICBpZiBmbmFtZS5lbmRzd2l0aChzdWZmaXgpOgorICAgICAgICAgICAgcmV0dXJuIGZuYW1lWzpuZWdsZW5dCisgICAgcmV0dXJuIE5vbmUKIAogZGVmIGdldHNvdXJjZWZpbGUob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIHRoYXQgY2FuIGJlIHVzZWQgdG8gbG9jYXRlIGFuIG9iamVjdCdzIHNvdXJjZS4KICAgICBSZXR1cm4gTm9uZSBpZiBubyB3YXkgY2FuIGJlIGlkZW50aWZpZWQgdG8gZ2V0IHRoZSBzb3VyY2UuCiAgICAgIiIiCiAgICAgZmlsZW5hbWUgPSBnZXRmaWxlKG9iamVjdCkKLSAgICBpZiBmaWxlbmFtZVstNDpdLmxvd2VyKCkgaW4gKCcucHljJywgJy5weW8nKToKLSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTRdICsgJy5weScKLSAgICBmb3Igc3VmZml4LCBtb2RlLCBraW5kIGluIGltcC5nZXRfc3VmZml4ZXMoKToKLSAgICAgICAgaWYgJ2InIGluIG1vZGUgYW5kIGZpbGVuYW1lWy1sZW4oc3VmZml4KTpdLmxvd2VyKCkgPT0gc3VmZml4OgotICAgICAgICAgICAgIyBMb29rcyBsaWtlIGEgYmluYXJ5IGZpbGUuICBXZSB3YW50IHRvIG9ubHkgcmV0dXJuIGEgdGV4dCBmaWxlLgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBhbGxfYnl0ZWNvZGVfc3VmZml4ZXMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkRFQlVHX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgYWxsX2J5dGVjb2RlX3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHMpIGZvciBzIGluIGFsbF9ieXRlY29kZV9zdWZmaXhlcyk6CisgICAgICAgIGZpbGVuYW1lID0gKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbMF0pCisgICAgZWxpZiBhbnkoZmlsZW5hbWUuZW5kc3dpdGgocykgZm9yIHMgaW4KKyAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpOgorICAgICAgICByZXR1cm4gTm9uZQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgIyBvbmx5IHJldHVybiBhIG5vbi1leGlzdGVudCBmaWxlbmFtZSBpZiB0aGUgbW9kdWxlIGhhcyBhIFBFUCAzMDIgbG9hZGVyCkBAIC05MzEsNiArOTQ3LDQzIEBACiAgICAgICAgIHNwZWNzLmFwcGVuZChmb3JtYXR2YXJrdyh2YXJrdykgKyBmb3JtYXR2YWx1ZShsb2NhbHNbdmFya3ddKSkKICAgICByZXR1cm4gJygnICsgJywgJy5qb2luKHNwZWNzKSArICcpJwogCitkZWYgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwgYXJnbmFtZXMsIHBvcywgdmFsdWVzKToKKyAgICBuYW1lcyA9IFtyZXByKG5hbWUpIGZvciBuYW1lIGluIGFyZ25hbWVzIGlmIG5hbWUgbm90IGluIHZhbHVlc10KKyAgICBtaXNzaW5nID0gbGVuKG5hbWVzKQorICAgIGlmIG1pc3NpbmcgPT0gMToKKyAgICAgICAgcyA9IG5hbWVzWzBdCisgICAgZWxpZiBtaXNzaW5nID09IDI6CisgICAgICAgIHMgPSAie30gYW5kIHt9Ii5mb3JtYXQoKm5hbWVzKQorICAgIGVsc2U6CisgICAgICAgIHRhaWwgPSAiLCB7fSBhbmQge30iLmZvcm1hdChuYW1lc1stMjpdKQorICAgICAgICBkZWwgbmFtZXNbLTI6XQorICAgICAgICBzID0gIiwgIi5qb2luKG5hbWVzKSArIHRhaWwKKyAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgbWlzc2luZyAlaSByZXF1aXJlZCAlcyBhcmd1bWVudCVzOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBtaXNzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIiBpZiBwb3MgZWxzZSAia2V5d29yZC1vbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAiIiBpZiBtaXNzaW5nID09IDEgZWxzZSAicyIsIHMpKQorCitkZWYgX3Rvb19tYW55KGZfbmFtZSwgYXJncywga3dvbmx5LCB2YXJhcmdzLCBkZWZjb3VudCwgZ2l2ZW4sIHZhbHVlcyk6CisgICAgYXRsZWFzdCA9IGxlbihhcmdzKSAtIGRlZmNvdW50CisgICAga3dvbmx5X2dpdmVuID0gbGVuKFthcmcgZm9yIGFyZyBpbiBrd29ubHkgaWYgYXJnIGluIHZhbHVlc10pCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgcGx1cmFsID0gYXRsZWFzdCAhPSAxCisgICAgICAgIHNpZyA9ICJhdCBsZWFzdCAlZCIgJSAoYXRsZWFzdCwpCisgICAgZWxpZiBkZWZjb3VudDoKKyAgICAgICAgcGx1cmFsID0gVHJ1ZQorICAgICAgICBzaWcgPSAiZnJvbSAlZCB0byAlZCIgJSAoYXRsZWFzdCwgbGVuKGFyZ3MpKQorICAgIGVsc2U6CisgICAgICAgIHBsdXJhbCA9IGxlbihhcmdzKSAhPSAxCisgICAgICAgIHNpZyA9IHN0cihsZW4oYXJncykpCisgICAga3dvbmx5X3NpZyA9ICIiCisgICAgaWYga3dvbmx5X2dpdmVuOgorICAgICAgICBtc2cgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICVkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSIKKyAgICAgICAga3dvbmx5X3NpZyA9IChtc2cgJSAoInMiIGlmIGdpdmVuICE9IDEgZWxzZSAiIiwga3dvbmx5X2dpdmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgaWYga3dvbmx5X2dpdmVuICE9IDEgZWxzZSAiIikpCisgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIHRha2VzICVzIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJWQlcyAlcyBnaXZlbiIgJQorICAgICAgICAgICAgKGZfbmFtZSwgc2lnLCAicyIgaWYgcGx1cmFsIGVsc2UgIiIsIGdpdmVuLCBrd29ubHlfc2lnLAorICAgICAgICAgICAgICJ3YXMiIGlmIGdpdmVuID09IDEgYW5kIG5vdCBrd29ubHlfZ2l2ZW4gZWxzZSAid2VyZSIpKQorCiBkZWYgZ2V0Y2FsbGFyZ3MoZnVuYywgKnBvc2l0aW9uYWwsICoqbmFtZWQpOgogICAgICIiIkdldCB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMgdG8gdmFsdWVzLgogCkBAIC05NDIsNjYgKzk5NSwxMDggQEAKICAgICBmX25hbWUgPSBmdW5jLl9fbmFtZV9fCiAgICAgYXJnMnZhbHVlID0ge30KIAorCiAgICAgaWYgaXNtZXRob2QoZnVuYykgYW5kIGZ1bmMuX19zZWxmX18gaXMgbm90IE5vbmU6CiAgICAgICAgICMgaW1wbGljaXQgJ3NlbGYnIChvciAnY2xzJyBmb3IgY2xhc3NtZXRob2RzKSBhcmd1bWVudAogICAgICAgICBwb3NpdGlvbmFsID0gKGZ1bmMuX19zZWxmX18sKSArIHBvc2l0aW9uYWwKICAgICBudW1fcG9zID0gbGVuKHBvc2l0aW9uYWwpCi0gICAgbnVtX3RvdGFsID0gbnVtX3BvcyArIGxlbihuYW1lZCkKICAgICBudW1fYXJncyA9IGxlbihhcmdzKQogICAgIG51bV9kZWZhdWx0cyA9IGxlbihkZWZhdWx0cykgaWYgZGVmYXVsdHMgZWxzZSAwCi0gICAgZm9yIGFyZywgdmFsdWUgaW4gemlwKGFyZ3MsIHBvc2l0aW9uYWwpOgotICAgICAgICBhcmcydmFsdWVbYXJnXSA9IHZhbHVlCi0gICAgaWYgdmFyYXJnczoKLSAgICAgICAgaWYgbnVtX3BvcyA+IG51bV9hcmdzOgotICAgICAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gcG9zaXRpb25hbFstKG51bV9wb3MtbnVtX2FyZ3MpOl0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9ICgpCi0gICAgZWxpZiAwIDwgbnVtX2FyZ3MgPCBudW1fcG9zOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgJXMgJWQgcG9zaXRpb25hbCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IG1vc3QnIGlmIGRlZmF1bHRzIGVsc2UgJ2V4YWN0bHknLCBudW1fYXJncywKLSAgICAgICAgICAgICdhcmd1bWVudHMnIGlmIG51bV9hcmdzID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCi0gICAgZWxpZiBudW1fYXJncyA9PSAwIGFuZCBudW1fdG90YWw6Ci0gICAgICAgIGlmIHZhcmt3IG9yIGt3b25seWFyZ3M6Ci0gICAgICAgICAgICBpZiBudW1fcG9zOgotICAgICAgICAgICAgICAgICMgWFhYOiBXZSBzaG91bGQgdXNlIG51bV9wb3MsIGJ1dCBQeXRob24gYWxzbyB1c2VzIG51bV90b3RhbDoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgZXhhY3RseSAwIHBvc2l0aW9uYWwgYXJndW1lbnRzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyglZCBnaXZlbiknICUgKGZfbmFtZSwgbnVtX3RvdGFsKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIG51bV90b3RhbCkpCiAKLSAgICBmb3IgYXJnIGluIGl0ZXJ0b29scy5jaGFpbihhcmdzLCBrd29ubHlhcmdzKToKLSAgICAgICAgaWYgYXJnIGluIG5hbWVkOgotICAgICAgICAgICAgaWYgYXJnIGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnJXMnIiAlIChmX25hbWUsIGFyZykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gbmFtZWQucG9wKGFyZykKLSAgICBmb3Iga3dvbmx5YXJnIGluIGt3b25seWFyZ3M6Ci0gICAgICAgIGlmIGt3b25seWFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVtrd29ubHlhcmddID0ga3dvbmx5ZGVmYXVsdHNba3dvbmx5YXJnXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSBuZWVkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3dvbmx5YXJnKSkKLSAgICBpZiBkZWZhdWx0czogICAgIyBmaWxsIGluIGFueSBtaXNzaW5nIHZhbHVlcyB3aXRoIHRoZSBkZWZhdWx0cwotICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiB6aXAoYXJnc1stbnVtX2RlZmF1bHRzOl0sIGRlZmF1bHRzKToKLSAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gdmFsdWUKKyAgICBuID0gbWluKG51bV9wb3MsIG51bV9hcmdzKQorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICBhcmcydmFsdWVbYXJnc1tpXV0gPSBwb3NpdGlvbmFsW2ldCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gdHVwbGUocG9zaXRpb25hbFtuOl0pCisgICAgcG9zc2libGVfa3dhcmdzID0gc2V0KGFyZ3MgKyBrd29ubHlhcmdzKQogICAgIGlmIHZhcmt3OgotICAgICAgICBhcmcydmFsdWVbdmFya3ddID0gbmFtZWQKLSAgICBlbGlmIG5hbWVkOgotICAgICAgICB1bmV4cGVjdGVkID0gbmV4dChpdGVyKG5hbWVkKSkKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVzJyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwgdW5leHBlY3RlZCkpCi0gICAgdW5hc3NpZ25lZCA9IG51bV9hcmdzIC0gbGVuKFthcmcgZm9yIGFyZyBpbiBhcmdzIGlmIGFyZyBpbiBhcmcydmFsdWVdKQotICAgIGlmIHVuYXNzaWduZWQ6Ci0gICAgICAgIG51bV9yZXF1aXJlZCA9IG51bV9hcmdzIC0gbnVtX2RlZmF1bHRzCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyAlcyAlZCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IGxlYXN0JyBpZiBkZWZhdWx0cyBlbHNlICdleGFjdGx5JywgbnVtX3JlcXVpcmVkLAotICAgICAgICAgICAgJ2FyZ3VtZW50cycgaWYgbnVtX3JlcXVpcmVkID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCisgICAgICAgIGFyZzJ2YWx1ZVt2YXJrd10gPSB7fQorICAgIGZvciBrdywgdmFsdWUgaW4gbmFtZWQuaXRlbXMoKToKKyAgICAgICAgaWYga3cgbm90IGluIHBvc3NpYmxlX2t3YXJnczoKKyAgICAgICAgICAgIGlmIG5vdCB2YXJrdzoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgICAgICBhcmcydmFsdWVbdmFya3ddW2t3XSA9IHZhbHVlCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBrdyBpbiBhcmcydmFsdWU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgIGFyZzJ2YWx1ZVtrd10gPSB2YWx1ZQorICAgIGlmIG51bV9wb3MgPiBudW1fYXJncyBhbmQgbm90IHZhcmFyZ3M6CisgICAgICAgIF90b29fbWFueShmX25hbWUsIGFyZ3MsIGt3b25seWFyZ3MsIHZhcmFyZ3MsIG51bV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICBudW1fcG9zLCBhcmcydmFsdWUpCisgICAgaWYgbnVtX3BvcyA8IG51bV9hcmdzOgorICAgICAgICByZXEgPSBhcmdzWzpudW1fYXJncyAtIG51bV9kZWZhdWx0c10KKyAgICAgICAgZm9yIGFyZyBpbiByZXE6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCByZXEsIFRydWUsIGFyZzJ2YWx1ZSkKKyAgICAgICAgZm9yIGksIGFyZyBpbiBlbnVtZXJhdGUoYXJnc1tudW1fYXJncyAtIG51bV9kZWZhdWx0czpdKToKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gZGVmYXVsdHNbaV0KKyAgICBtaXNzaW5nID0gMAorICAgIGZvciBrd2FyZyBpbiBrd29ubHlhcmdzOgorICAgICAgICBpZiBrd2FyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgaWYga3dhcmcgaW4ga3dvbmx5ZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgYXJnMnZhbHVlW2t3YXJnXSA9IGt3b25seWRlZmF1bHRzW2t3YXJnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtaXNzaW5nICs9IDEKKyAgICBpZiBtaXNzaW5nOgorICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCBrd29ubHlhcmdzLCBGYWxzZSwgYXJnMnZhbHVlKQogICAgIHJldHVybiBhcmcydmFsdWUKIAorQ2xvc3VyZVZhcnMgPSBuYW1lZHR1cGxlKCdDbG9zdXJlVmFycycsICdub25sb2NhbHMgZ2xvYmFscyBidWlsdGlucyB1bmJvdW5kJykKKworZGVmIGdldGNsb3N1cmV2YXJzKGZ1bmMpOgorICAgICIiIgorICAgIEdldCB0aGUgbWFwcGluZyBvZiBmcmVlIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIFJldHVybnMgYSBuYW1lZCB0dXBsZSBvZiBkaWN0cyBtYXBwaW5nIHRoZSBjdXJyZW50IG5vbmxvY2FsLCBnbG9iYWwKKyAgICBhbmQgYnVpbHRpbiByZWZlcmVuY2VzIGFzIHNlZW4gYnkgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiBBIGZpbmFsCisgICAgc2V0IG9mIHVuYm91bmQgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgaXMgYWxzbyBwcm92aWRlZC4KKyAgICAiIiIKKworICAgIGlmIGlzbWV0aG9kKGZ1bmMpOgorICAgICAgICBmdW5jID0gZnVuYy5fX2Z1bmNfXworCisgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3shcn0nIGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbiIuZm9ybWF0KGZ1bmMpKQorCisgICAgY29kZSA9IGZ1bmMuX19jb2RlX18KKyAgICAjIE5vbmxvY2FsIHJlZmVyZW5jZXMgYXJlIG5hbWVkIGluIGNvX2ZyZWV2YXJzIGFuZCByZXNvbHZlZAorICAgICMgYnkgbG9va2luZyB0aGVtIHVwIGluIF9fY2xvc3VyZV9fIGJ5IHBvc2l0aW9uYWwgaW5kZXgKKyAgICBpZiBmdW5jLl9fY2xvc3VyZV9fIGlzIE5vbmU6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7fQorICAgIGVsc2U6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7CisgICAgICAgICAgICB2YXIgOiBjZWxsLmNlbGxfY29udGVudHMKKyAgICAgICAgICAgIGZvciB2YXIsIGNlbGwgaW4gemlwKGNvZGUuY29fZnJlZXZhcnMsIGZ1bmMuX19jbG9zdXJlX18pCisgICAgICAgfQorCisgICAgIyBHbG9iYWwgYW5kIGJ1aWx0aW4gcmVmZXJlbmNlcyBhcmUgbmFtZWQgaW4gY29fbmFtZXMgYW5kIHJlc29sdmVkCisgICAgIyBieSBsb29raW5nIHRoZW0gdXAgaW4gX19nbG9iYWxzX18gb3IgX19idWlsdGluc19fCisgICAgZ2xvYmFsX25zID0gZnVuYy5fX2dsb2JhbHNfXworICAgIGJ1aWx0aW5fbnMgPSBnbG9iYWxfbnMuZ2V0KCJfX2J1aWx0aW5zX18iLCBidWlsdGlucy5fX2RpY3RfXykKKyAgICBpZiBpc21vZHVsZShidWlsdGluX25zKToKKyAgICAgICAgYnVpbHRpbl9ucyA9IGJ1aWx0aW5fbnMuX19kaWN0X18KKyAgICBnbG9iYWxfdmFycyA9IHt9CisgICAgYnVpbHRpbl92YXJzID0ge30KKyAgICB1bmJvdW5kX25hbWVzID0gc2V0KCkKKyAgICBmb3IgbmFtZSBpbiBjb2RlLmNvX25hbWVzOgorICAgICAgICBpZiBuYW1lIGluICgiTm9uZSIsICJUcnVlIiwgIkZhbHNlIik6CisgICAgICAgICAgICAjIEJlY2F1c2UgdGhlc2UgdXNlZCB0byBiZSBidWlsdGlucyBpbnN0ZWFkIG9mIGtleXdvcmRzLCB0aGV5CisgICAgICAgICAgICAjIG1heSBzdGlsbCBzaG93IHVwIGFzIG5hbWUgcmVmZXJlbmNlcy4gV2UgaWdub3JlIHRoZW0uCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnbG9iYWxfdmFyc1tuYW1lXSA9IGdsb2JhbF9uc1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzW25hbWVdID0gYnVpbHRpbl9uc1tuYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHVuYm91bmRfbmFtZXMuYWRkKG5hbWUpCisKKyAgICByZXR1cm4gQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGFjayBmcmFtZSBleHRyYWN0aW9uCiAKIFRyYWNlYmFjayA9IG5hbWVkdHVwbGUoJ1RyYWNlYmFjaycsICdmaWxlbmFtZSBsaW5lbm8gZnVuY3Rpb24gY29kZV9jb250ZXh0IGluZGV4JykKQEAgLTExNzEsNiArMTI2Niw4IEBACiAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKIAogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBnZW5lcmF0b3IgaW50cm9zcGVjdGlvbgorCiBHRU5fQ1JFQVRFRCA9ICdHRU5fQ1JFQVRFRCcKIEdFTl9SVU5OSU5HID0gJ0dFTl9SVU5OSU5HJwogR0VOX1NVU1BFTkRFRCA9ICdHRU5fU1VTUEVOREVEJwpAQCAtMTE5MiwzICsxMjg5LDc4NSBAQAogICAgIGlmIGdlbmVyYXRvci5naV9mcmFtZS5mX2xhc3RpID09IC0xOgogICAgICAgICByZXR1cm4gR0VOX0NSRUFURUQKICAgICByZXR1cm4gR0VOX1NVU1BFTkRFRAorCisKK2RlZiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIG1hcHBpbmcgb2YgZ2VuZXJhdG9yIGxvY2FsIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIEEgZGljdCBpcyByZXR1cm5lZCwgd2l0aCB0aGUga2V5cyB0aGUgbG9jYWwgdmFyaWFibGUgbmFtZXMgYW5kIHZhbHVlcyB0aGUKKyAgICBib3VuZCB2YWx1ZXMuIiIiCisKKyAgICBpZiBub3QgaXNnZW5lcmF0b3IoZ2VuZXJhdG9yKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIneyFyfScgaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciIuZm9ybWF0KGdlbmVyYXRvcikpCisKKyAgICBmcmFtZSA9IGdldGF0dHIoZ2VuZXJhdG9yLCAiZ2lfZnJhbWUiLCBOb25lKQorICAgIGlmIGZyYW1lIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmdpX2ZyYW1lLmZfbG9jYWxzCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHt9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0IChQRVAgMzYyKQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK19XcmFwcGVyRGVzY3JpcHRvciA9IHR5cGUodHlwZS5fX2NhbGxfXykKK19NZXRob2RXcmFwcGVyID0gdHlwZShhbGwuX19jYWxsX18pCisKK19Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyA9IChfV3JhcHBlckRlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01ldGhvZFdyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSkKKworCitkZWYgX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKGNscywgbWV0aG9kX25hbWUpOgorICAgIHRyeToKKyAgICAgICAgbWV0aCA9IGdldGF0dHIoY2xzLCBtZXRob2RfbmFtZSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHJldHVybgorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1ldGgsIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CisgICAgICAgICAgICAjIE9uY2UgJ19fc2lnbmF0dXJlX18nIHdpbGwgYmUgYWRkZWQgdG8gJ0MnLWxldmVsCisgICAgICAgICAgICAjIGNhbGxhYmxlcywgdGhpcyBjaGVjayB3b24ndCBiZSBuZWNlc3NhcnkKKyAgICAgICAgICAgIHJldHVybiBtZXRoCisKKworZGVmIHNpZ25hdHVyZShvYmopOgorICAgICcnJ0dldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuJycnCisKKyAgICBpZiBub3QgY2FsbGFibGUob2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcuZm9ybWF0KG9iaikpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZworICAgICAgICAjIGZ1bmN0aW9uICh1c3VhbGx5IGBzZWxmYCBvciBgY2xzYCkuCisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouX19mdW5jX18pCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCisKKyAgICB0cnk6CisgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgaWYgc2lnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNpZworCisgICAgdHJ5OgorICAgICAgICAjIFdhcyB0aGlzIGZ1bmN0aW9uIHdyYXBwZWQgYnkgYSBkZWNvcmF0b3I/CisgICAgICAgIHdyYXBwZWQgPSBvYmouX193cmFwcGVkX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gc2lnbmF0dXJlKHdyYXBwZWQpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKG9iaikKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBmdW5jdG9vbHMucGFydGlhbCk6CisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouZnVuYykKKworICAgICAgICBuZXdfcGFyYW1zID0gT3JkZXJlZERpY3Qoc2lnLnBhcmFtZXRlcnMuaXRlbXMoKSkKKworICAgICAgICBwYXJ0aWFsX2FyZ3MgPSBvYmouYXJncyBvciAoKQorICAgICAgICBwYXJ0aWFsX2tleXdvcmRzID0gb2JqLmtleXdvcmRzIG9yIHt9CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhID0gc2lnLmJpbmRfcGFydGlhbCgqcGFydGlhbF9hcmdzLCAqKnBhcnRpYWxfa2V5d29yZHMpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBtc2cgPSAncGFydGlhbCBvYmplY3QgeyFyfSBoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cycuZm9ybWF0KG9iaikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKSBmcm9tIGV4CisKKyAgICAgICAgZm9yIGFyZ19uYW1lLCBhcmdfdmFsdWUgaW4gYmEuYXJndW1lbnRzLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbSA9IG5ld19wYXJhbXNbYXJnX25hbWVdCisgICAgICAgICAgICBpZiBhcmdfbmFtZSBpbiBwYXJ0aWFsX2tleXdvcmRzOgorICAgICAgICAgICAgICAgICMgV2Ugc2V0IGEgbmV3IGRlZmF1bHQgdmFsdWUsIGJlY2F1c2UgdGhlIGZvbGxvd2luZyBjb2RlCisgICAgICAgICAgICAgICAgIyBpcyBjb3JyZWN0OgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgPj4+IGRlZiBmb28oYSk6IHByaW50KGEpCisgICAgICAgICAgICAgICAgIyAgID4+PiBwcmludChwYXJ0aWFsKHBhcnRpYWwoZm9vLCBhPTEwKSwgYT0yMCkoKSkKKyAgICAgICAgICAgICAgICAjICAgMjAKKyAgICAgICAgICAgICAgICAjICAgPj4+IHByaW50KHBhcnRpYWwocGFydGlhbChmb28sIGE9MTApLCBhPTIwKShhPTMwKSkKKyAgICAgICAgICAgICAgICAjICAgMzAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBTbywgd2l0aCAncGFydGlhbCcgb2JqZWN0cywgcGFzc2luZyBhIGtleXdvcmQgYXJndW1lbnQgaXMKKyAgICAgICAgICAgICAgICAjIGxpa2Ugc2V0dGluZyBhIG5ldyBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgV2UgYWxzbyBtYXJrIHRoaXMgcGFyYW1ldGVyIHdpdGggJ19wYXJ0aWFsX2t3YXJnJworICAgICAgICAgICAgICAgICMgZmxhZy4gIExhdGVyLCBpbiAnX2JpbmQnLCB0aGUgJ2RlZmF1bHQnIHZhbHVlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlciB3aWxsIGJlIGFkZGVkIHRvICdrd2FyZ3MnLCB0byBzaW11bGF0ZQorICAgICAgICAgICAgICAgICMgdGhlICdmdW5jdG9vbHMucGFydGlhbCcgcmVhbCBjYWxsLgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXNbYXJnX25hbWVdID0gcGFyYW0ucmVwbGFjZShkZWZhdWx0PWFyZ192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9VHJ1ZSkKKworICAgICAgICAgICAgZWxpZiAocGFyYW0ua2luZCBub3QgaW4gKF9WQVJfS0VZV09SRCwgX1ZBUl9QT1NJVElPTkFMKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXMucG9wKGFyZ19uYW1lKQorCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMudmFsdWVzKCkpCisKKyAgICBzaWcgPSBOb25lCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAjIG9iaiBpcyBhIGNsYXNzIG9yIGEgbWV0YWNsYXNzCisKKyAgICAgICAgIyBGaXJzdCwgbGV0J3Mgc2VlIGlmIGl0IGhhcyBhbiBvdmVybG9hZGVkIF9fY2FsbF9fIGRlZmluZWQKKyAgICAgICAgIyBpbiBpdHMgbWV0YWNsYXNzCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdyB3ZSBjaGVjayBpZiB0aGUgJ29iaicgY2xhc3MgaGFzIGEgJ19fbmV3X18nIG1ldGhvZAorICAgICAgICAgICAgbmV3ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19fbmV3X18nKQorICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShuZXcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgRmluYWxseSwgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgX19pbml0X18gaW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICBpbml0ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19faW5pdF9fJykKKyAgICAgICAgICAgICAgICBpZiBpbml0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzaWcgPSBzaWduYXR1cmUoaW5pdCkKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgX05vblVzZXJEZWZpbmVkQ2FsbGFibGVzKToKKyAgICAgICAgIyBBbiBvYmplY3Qgd2l0aCBfX2NhbGxfXworICAgICAgICAjIFdlIGFsc28gY2hlY2sgdGhhdCB0aGUgJ29iaicgaXMgbm90IGFuIGluc3RhbmNlIG9mCisgICAgICAgICMgX1dyYXBwZXJEZXNjcmlwdG9yIG9yIF9NZXRob2RXcmFwcGVyIHRvIGF2b2lkCisgICAgICAgICMgaW5maW5pdGUgcmVjdXJzaW9uIChhbmQgZXZlbiBwb3RlbnRpYWwgc2VnZmF1bHQpCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisKKyAgICBpZiBzaWcgaXMgbm90IE5vbmU6CisgICAgICAgICMgRm9yIGNsYXNzZXMgYW5kIG9iamVjdHMgd2Ugc2tpcCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZWlyCisgICAgICAgICMgX19jYWxsX18sIF9fbmV3X18sIG9yIF9faW5pdF9fIG1ldGhvZHMKKyAgICAgICAgcmV0dXJuIHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9dHVwbGUoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzE6XSkKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlKToKKyAgICAgICAgIyBSYWlzZSBhIG5pY2VyIGVycm9yIG1lc3NhZ2UgZm9yIGJ1aWx0aW5zCisgICAgICAgIG1zZyA9ICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gZnVuY3Rpb24geyFyfScuZm9ybWF0KG9iaikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCdjYWxsYWJsZSB7IXJ9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJy5mb3JtYXQob2JqKSkKKworCitjbGFzcyBfdm9pZDoKKyAgICAnJydBIHByaXZhdGUgbWFya2VyIC0gdXNlZCBpbiBQYXJhbWV0ZXIgJiBTaWduYXR1cmUnJycKKworCitjbGFzcyBfZW1wdHk6CisgICAgcGFzcworCisKK2NsYXNzIF9QYXJhbWV0ZXJLaW5kKGludCk6CisgICAgZGVmIF9fbmV3X18oc2VsZiwgKmFyZ3MsIG5hbWUpOgorICAgICAgICBvYmogPSBpbnQuX19uZXdfXyhzZWxmLCAqYXJncykKKyAgICAgICAgb2JqLl9uYW1lID0gbmFtZQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8X1BhcmFtZXRlcktpbmQ6IHshcn0+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKKworCitfUE9TSVRJT05BTF9PTkxZICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDAsIG5hbWU9J1BPU0lUSU9OQUxfT05MWScpCitfUE9TSVRJT05BTF9PUl9LRVlXT1JEICA9IF9QYXJhbWV0ZXJLaW5kKDEsIG5hbWU9J1BPU0lUSU9OQUxfT1JfS0VZV09SRCcpCitfVkFSX1BPU0lUSU9OQUwgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDIsIG5hbWU9J1ZBUl9QT1NJVElPTkFMJykKK19LRVlXT1JEX09OTFkgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoMywgbmFtZT0nS0VZV09SRF9PTkxZJykKK19WQVJfS0VZV09SRCAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoNCwgbmFtZT0nVkFSX0tFWVdPUkQnKQorCisKK2NsYXNzIFBhcmFtZXRlcjoKKyAgICAnJydSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIG5hbWUgOiBzdHIKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4KKyAgICAqIGRlZmF1bHQgOiBvYmplY3QKKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdCB2YWx1ZSwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGFubm90YXRpb24KKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gYW5ub3RhdGlvbiwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGtpbmQgOiBzdHIKKyAgICAgICAgRGVzY3JpYmVzIGhvdyBhcmd1bWVudCB2YWx1ZXMgYXJlIGJvdW5kIHRvIHRoZSBwYXJhbWV0ZXIuCisgICAgICAgIFBvc3NpYmxlIHZhbHVlczogYFBhcmFtZXRlci5QT1NJVElPTkFMX09OTFlgLAorICAgICAgICBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRGAsIGBQYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUxgLAorICAgICAgICBgUGFyYW1ldGVyLktFWVdPUkRfT05MWWAsIGBQYXJhbWV0ZXIuVkFSX0tFWVdPUkRgLgorICAgICcnJworCisgICAgX19zbG90c19fID0gKCdfbmFtZScsICdfa2luZCcsICdfZGVmYXVsdCcsICdfYW5ub3RhdGlvbicsICdfcGFydGlhbF9rd2FyZycpCisKKyAgICBQT1NJVElPTkFMX09OTFkgICAgICAgICA9IF9QT1NJVElPTkFMX09OTFkKKyAgICBQT1NJVElPTkFMX09SX0tFWVdPUkQgICA9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQKKyAgICBWQVJfUE9TSVRJT05BTCAgICAgICAgICA9IF9WQVJfUE9TSVRJT05BTAorICAgIEtFWVdPUkRfT05MWSAgICAgICAgICAgID0gX0tFWVdPUkRfT05MWQorICAgIFZBUl9LRVlXT1JEICAgICAgICAgICAgID0gX1ZBUl9LRVlXT1JECisKKyAgICBlbXB0eSA9IF9lbXB0eQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGtpbmQsICosIGRlZmF1bHQ9X2VtcHR5LCBhbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9RmFsc2UpOgorCisgICAgICAgIGlmIGtpbmQgbm90IGluIChfUE9TSVRJT05BTF9PTkxZLCBfUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgX1ZBUl9QT1NJVElPTkFMLCBfS0VZV09SRF9PTkxZLCBfVkFSX0tFWVdPUkQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgJ1BhcmFtZXRlci5raW5kJyBhdHRyaWJ1dGUiKQorICAgICAgICBzZWxmLl9raW5kID0ga2luZAorCisgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGlmIGtpbmQgaW4gKF9WQVJfUE9TSVRJT05BTCwgX1ZBUl9LRVlXT1JEKToKKyAgICAgICAgICAgICAgICBtc2cgPSAne30gcGFyYW1ldGVycyBjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycuZm9ybWF0KGtpbmQpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgIHNlbGYuX2RlZmF1bHQgPSBkZWZhdWx0CisgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uCisKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgaWYga2luZCAhPSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vbmUgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXIiKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUgPSBzdHIobmFtZSkKKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT05MWSBhbmQgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgICAgICAgICAgbXNnID0gJ3shcn0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnLmZvcm1hdChuYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKworICAgICAgICBzZWxmLl9wYXJ0aWFsX2t3YXJnID0gX3BhcnRpYWxfa3dhcmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlZmF1bHQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Fubm90YXRpb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBraW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fa2luZAorCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgbmFtZT1fdm9pZCwga2luZD1fdm9pZCwgYW5ub3RhdGlvbj1fdm9pZCwKKyAgICAgICAgICAgICAgICBkZWZhdWx0PV92b2lkLCBfcGFydGlhbF9rd2FyZz1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFBhcmFtZXRlci4nJycKKworICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWUKKworICAgICAgICBpZiBraW5kIGlzIF92b2lkOgorICAgICAgICAgICAga2luZCA9IHNlbGYuX2tpbmQKKworICAgICAgICBpZiBhbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IHNlbGYuX2Fubm90YXRpb24KKworICAgICAgICBpZiBkZWZhdWx0IGlzIF92b2lkOgorICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2RlZmF1bHQKKworICAgICAgICBpZiBfcGFydGlhbF9rd2FyZyBpcyBfdm9pZDoKKyAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnID0gc2VsZi5fcGFydGlhbF9rd2FyZworCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKG5hbWUsIGtpbmQsIGRlZmF1bHQ9ZGVmYXVsdCwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGlhbF9rd2FyZz1fcGFydGlhbF9rd2FyZykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBraW5kID0gc2VsZi5raW5kCisKKyAgICAgICAgZm9ybWF0dGVkID0gc2VsZi5fbmFtZQorICAgICAgICBpZiBraW5kID09IF9QT1NJVElPTkFMX09OTFk6CisgICAgICAgICAgICBpZiBmb3JtYXR0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgPSAnJworICAgICAgICAgICAgZm9ybWF0dGVkID0gJzx7fT4nLmZvcm1hdChmb3JtYXR0ZWQpCisKKyAgICAgICAgIyBBZGQgYW5ub3RhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZQorICAgICAgICBpZiBzZWxmLl9hbm5vdGF0aW9uIGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAne306e30nLmZvcm1hdChmb3JtYXR0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uKHNlbGYuX2Fubm90YXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuX2RlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICd7fT17fScuZm9ybWF0KGZvcm1hdHRlZCwgcmVwcihzZWxmLl9kZWZhdWx0KSkKKworICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICcqJyArIGZvcm1hdHRlZAorICAgICAgICBlbGlmIGtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gJyoqJyArIGZvcm1hdHRlZAorCisgICAgICAgIHJldHVybiBmb3JtYXR0ZWQKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8e30gYXQgezojeH0geyFyfT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwgc2VsZi5uYW1lKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIFBhcmFtZXRlcikgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSA9PSBvdGhlci5fbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9raW5kID09IG90aGVyLl9raW5kIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHQgPT0gb3RoZXIuX2RlZmF1bHQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9PSBvdGhlci5fYW5ub3RhdGlvbikKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKK2NsYXNzIEJvdW5kQXJndW1lbnRzOgorICAgICcnJ1Jlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKKyAgICB0byB0aGUgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIGFyZ3VtZW50cyA6IE9yZGVyZWREaWN0CisgICAgICAgIEFuIG9yZGVyZWQgbXV0YWJsZSBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIGFyZ3VtZW50cycgdmFsdWVzLgorICAgICAgICBEb2VzIG5vdCBjb250YWluIGFyZ3VtZW50cycgZGVmYXVsdCB2YWx1ZXMuCisgICAgKiBzaWduYXR1cmUgOiBTaWduYXR1cmUKKyAgICAgICAgVGhlIFNpZ25hdHVyZSBvYmplY3QgdGhhdCBjcmVhdGVkIHRoaXMgaW5zdGFuY2UuCisgICAgKiBhcmdzIDogdHVwbGUKKyAgICAgICAgVHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLgorICAgICoga3dhcmdzIDogZGljdAorICAgICAgICBEaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4KKyAgICAnJycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaWduYXR1cmUsIGFyZ3VtZW50cyk6CisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gYXJndW1lbnRzCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZSA9IHNpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNpZ25hdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW0gaW4gc2VsZi5fc2lnbmF0dXJlLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgICMgS2V5d29yZCBhcmd1bWVudHMgbWFwcGVkIGJ5ICdmdW5jdG9vbHMucGFydGlhbCcKKyAgICAgICAgICAgICAgICAjIChQYXJhbWV0ZXIuX3BhcnRpYWxfa3dhcmcgaXMgVHJ1ZSkgYXJlIG1hcHBlZAorICAgICAgICAgICAgICAgICMgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycsIGFsb25nIHdpdGggVkFSX0tFWVdPUkQgJgorICAgICAgICAgICAgICAgICMgS0VZV09SRF9PTkxZCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgIyBXZSdyZSBkb25lIGhlcmUuIE90aGVyIGFyZ3VtZW50cworICAgICAgICAgICAgICAgICMgd2lsbCBiZSBtYXBwZWQgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgIyAqYXJncworICAgICAgICAgICAgICAgICAgICBhcmdzLmV4dGVuZChhcmcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBwbGFpbiBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChhcmcpCisKKyAgICAgICAgcmV0dXJuIHR1cGxlKGFyZ3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga3dhcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IEZhbHNlCisgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGt3YXJnc19zdGFydGVkOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5fcGFydGlhbF9rd2FyZyk6CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc19zdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgbm90IGluIHNlbGYuYXJndW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzX3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBub3Qga3dhcmdzX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAgICAgIyAqKmt3YXJncworICAgICAgICAgICAgICAgICAgICBrd2FyZ3MudXBkYXRlKGFyZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHBsYWluIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gYXJnCisKKyAgICAgICAgcmV0dXJuIGt3YXJncworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIEJvdW5kQXJndW1lbnRzKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLnNpZ25hdHVyZSA9PSBvdGhlci5zaWduYXR1cmUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVudHMgPT0gb3RoZXIuYXJndW1lbnRzKQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKworY2xhc3MgU2lnbmF0dXJlOgorICAgICcnJ0EgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBvdmVyYWxsIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uLgorICAgIEl0IHN0b3JlcyBhIFBhcmFtZXRlciBvYmplY3QgZm9yIGVhY2ggcGFyYW1ldGVyIGFjY2VwdGVkIGJ5IHRoZQorICAgIGZ1bmN0aW9uLCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisKKyAgICBBIFNpZ25hdHVyZSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHM6CisKKyAgICAqIHBhcmFtZXRlcnMgOiBPcmRlcmVkRGljdAorICAgICAgICBBbiBvcmRlcmVkIG1hcHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgUGFyYW1ldGVyIG9iamVjdHMgKGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIGluIHRoZSBzYW1lIG9yZGVyCisgICAgICAgIGFzIGxpc3RlZCBpbiBgY29kZS5jb192YXJuYW1lc2ApLgorICAgICogcmV0dXJuX2Fubm90YXRpb24gOiBvYmplY3QKKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gaWYgc3BlY2lmaWVkLgorICAgICAgICBJZiB0aGUgZnVuY3Rpb24gaGFzIG5vIGFubm90YXRpb24gZm9yIGl0cyByZXR1cm4gdHlwZSwgdGhpcworICAgICAgICBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGJpbmQoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvCisgICAgICAgIHBhcmFtZXRlcnMuCisgICAgKiBiaW5kX3BhcnRpYWwoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgcGFydGlhbCBtYXBwaW5nIGZyb20gcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgdG8gcGFyYW1ldGVycyAoc2ltdWxhdGluZyAnZnVuY3Rvb2xzLnBhcnRpYWwnIGJlaGF2aW9yLikKKyAgICAnJycKKworICAgIF9fc2xvdHNfXyA9ICgnX3JldHVybl9hbm5vdGF0aW9uJywgJ19wYXJhbWV0ZXJzJykKKworICAgIF9wYXJhbWV0ZXJfY2xzID0gUGFyYW1ldGVyCisgICAgX2JvdW5kX2FyZ3VtZW50c19jbHMgPSBCb3VuZEFyZ3VtZW50cworCisgICAgZW1wdHkgPSBfZW1wdHkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJhbWV0ZXJzPU5vbmUsICosIHJldHVybl9hbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189VHJ1ZSk6CisgICAgICAgICcnJ0NvbnN0cnVjdHMgU2lnbmF0dXJlIGZyb20gdGhlIGdpdmVuIGxpc3Qgb2YgUGFyYW1ldGVyCisgICAgICAgIG9iamVjdHMgYW5kICdyZXR1cm5fYW5ub3RhdGlvbicuICBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICAgICAgICAgIHRvcF9raW5kID0gX1BPU0lUSU9OQUxfT05MWQorCisgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAorICAgICAgICAgICAgICAgICAgICBpZiBraW5kIDwgdG9wX2tpbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyOiB7fSBiZWZvcmUge30nCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KHRvcF9raW5kLCBwYXJhbS5raW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0b3Bfa2luZCA9IGtpbmQKKworICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGFyYW0ubmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc3RyKGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gcGFyYW0ucmVwbGFjZShuYW1lPW5hbWUpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lOiB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgICAgICBwYXJhbXNbbmFtZV0gPSBwYXJhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgoKHBhcmFtLm5hbWUsIHBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFtZXRlcnMpKQorCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnMgPSB0eXBlcy5NYXBwaW5nUHJveHlUeXBlKHBhcmFtcykKKyAgICAgICAgc2VsZi5fcmV0dXJuX2Fubm90YXRpb24gPSByZXR1cm5fYW5ub3RhdGlvbgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKKyAgICAgICAgJycnQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24nJycKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmdW5jLCB0eXBlcy5GdW5jdGlvblR5cGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQorCisgICAgICAgIFBhcmFtZXRlciA9IGNscy5fcGFyYW1ldGVyX2NscworCisgICAgICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgorICAgICAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAorICAgICAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKKyAgICAgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKKyAgICAgICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50CisgICAgICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCisgICAgICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KKyAgICAgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXworICAgICAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisgICAgICAgIGlmIGRlZmF1bHRzOgorICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSBsZW4oZGVmYXVsdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKKworICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCisgICAgICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKKyAgICAgICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCkpCisKKyAgICAgICAgIyAuLi4gdy8gZGVmYXVsdHMuCisgICAgICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6CisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdHNbb2Zmc2V0XSkpCisKKyAgICAgICAgIyAqYXJncworICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiAweDA0OgorICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1twb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnRdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX1BPU0lUSU9OQUwpKQorCisgICAgICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCisgICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKKyAgICAgICAgICAgIGRlZmF1bHQgPSBfZW1wdHkKKyAgICAgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKKworICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQorICAgICAgICAjICoqa3dhcmdzCisgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIDB4MDg6CisgICAgICAgICAgICBpbmRleCA9IHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudAorICAgICAgICAgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgMHgwNDoKKyAgICAgICAgICAgICAgICBpbmRleCArPSAxCisKKyAgICAgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbaW5kZXhdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX0tFWVdPUkQpKQorCisgICAgICAgIHJldHVybiBjbHMocGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCisgICAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189RmFsc2UpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZXR1cm5fYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uCisKKyAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBwYXJhbWV0ZXJzPV92b2lkLCByZXR1cm5fYW5ub3RhdGlvbj1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFNpZ25hdHVyZS4KKyAgICAgICAgUGFzcyAncGFyYW1ldGVycycgYW5kL29yICdyZXR1cm5fYW5ub3RhdGlvbicgYXJndW1lbnRzCisgICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgorICAgICAgICAnJycKKworICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIF92b2lkOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQorCisgICAgICAgIGlmIHJldHVybl9hbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uPXJldHVybl9hbm5vdGF0aW9uKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIChub3QgaXNzdWJjbGFzcyh0eXBlKG90aGVyKSwgU2lnbmF0dXJlKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybl9hbm5vdGF0aW9uICE9IG90aGVyLnJldHVybl9hbm5vdGF0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLnBhcmFtZXRlcnMpICE9IGxlbihvdGhlci5wYXJhbWV0ZXJzKSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBvdGhlcl9wb3NpdGlvbnMgPSB7cGFyYW06IGlkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKG90aGVyLnBhcmFtZXRlcnMua2V5cygpKX0KKworICAgICAgICBmb3IgaWR4LCAocGFyYW1fbmFtZSwgcGFyYW0pIGluIGVudW1lcmF0ZShzZWxmLnBhcmFtZXRlcnMuaXRlbXMoKSk6CisgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9LRVlXT1JEX09OTFk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9wYXJhbSA9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtICE9IG90aGVyX3BhcmFtOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfaWR4ID0gb3RoZXJfcG9zaXRpb25zW3BhcmFtX25hbWVdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IG90aGVyX2lkeCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0gIT0gb3RoZXIucGFyYW1ldGVyc1twYXJhbV9uYW1lXSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKyAgICBkZWYgX2JpbmQoc2VsZiwgYXJncywga3dhcmdzLCAqLCBwYXJ0aWFsPUZhbHNlKToKKyAgICAgICAgJycnUHJpdmF0ZSBtZXRob2QuICBEb24ndCB1c2UgZGlyZWN0bHkuJycnCisKKyAgICAgICAgYXJndW1lbnRzID0gT3JkZXJlZERpY3QoKQorCisgICAgICAgIHBhcmFtZXRlcnMgPSBpdGVyKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgcGFyYW1ldGVyc19leCA9ICgpCisgICAgICAgIGFyZ192YWxzID0gaXRlcihhcmdzKQorCisgICAgICAgIGlmIHBhcnRpYWw6CisgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGJpbmRpbmcgYXJndW1lbnRzIHRvICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0cy4KKyAgICAgICAgICAgICMgU2VlICdmdW5jdG9vbHMucGFydGlhbCcgY2FzZSBpbiAnc2lnbmF0dXJlKCknIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAjIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5fcGFydGlhbF9rd2FyZyBhbmQgcGFyYW1fbmFtZSBub3QgaW4ga3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgIyBTaW11bGF0aW5nICdmdW5jdG9vbHMucGFydGlhbCcgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gcGFyYW0uZGVmYXVsdAorCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIExldCdzIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYW5kIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICMgcGFyYW1ldGVycworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZ192YWwgPSBuZXh0KGFyZ192YWxzKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IG5leHQocGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBhcmFtZXRlcnMuIFRoYXQncyBpdC4gSnVzdCBuZWVkIHRvIGNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIG5vIGBrd2FyZ3NgIGFmdGVyIHRoaXMgd2hpbGUgbG9vcAorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgT0ssIGp1c3QgZW1wdHkgKmFyZ3MuICBMZXQncyBzdGFydCBwYXJzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAjIGt3YXJncworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5uYW1lIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IHdhcyBwYXNzZWQgYXMgYSBrZXl3b3JkJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsaWYgKHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0IGlzIG5vdCBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgZmluZSB0b28gLSB3ZSBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIuICBTbywgbGV0cyBzdGFydCBwYXJzaW5nIGBrd2FyZ3NgLCBzdGFydGluZworICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHRoZSBjdXJyZW50IHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFydGlhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhIHBvc2l0aW9uYWwgYXJndW1lbnQgdG8gcHJvY2VzcworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBuZXh0KHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBMb29rcyBsaWtlIHdlIGhhdmUgbm8gcGFyYW1ldGVyIGZvciB0aGlzIHBvc2l0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGFuICcqYXJncyctbGlrZSBhcmd1bWVudCwgbGV0J3MgZmlsbCBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBwb3NpdGlvbmFsIGFyZ3VtZW50cyB3ZSBoYXZlIGxlZnQgYW5kIG1vdmUgb24gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5leHQgcGhhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFthcmdfdmFsXQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmV4dGVuZChhcmdfdmFscykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHR1cGxlKHZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ubmFtZSBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7YXJnIXJ9Jy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpKQorCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IGFyZ192YWwKKworICAgICAgICAjIE5vdywgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSByZW1haW5pbmcgcGFyYW1ldGVycyB0byBwcm9jZXNzCisgICAgICAgICMga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAga3dhcmdzX3BhcmFtID0gTm9uZQorICAgICAgICBmb3IgcGFyYW0gaW4gaXRlcnRvb2xzLmNoYWluKHBhcmFtZXRlcnNfZXgsIHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIGNhc2Ugb2YgYSBwcm9wZXJseSBidWlsdAorICAgICAgICAgICAgICAgICMgU2lnbmF0dXJlIG9iamVjdCAoYnV0IGxldCdzIGhhdmUgdGhpcyBjaGVjayBoZXJlCisgICAgICAgICAgICAgICAgIyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIganVzdCBpbiBjYXNlKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidXQgd2FzIHBhc3NlZCBhcyBhIGtleXdvcmQnLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW0ubmFtZSkpCisKKyAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgICMgTWVtb3JpemUgdGhhdCB3ZSBoYXZlIGEgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGt3YXJnc19wYXJhbSA9IHBhcmFtCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGFyYW1fbmFtZSA9IHBhcmFtLm5hbWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmdfdmFsID0ga3dhcmdzLnBvcChwYXJhbV9uYW1lKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBubyB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuICBJdCdzIGZpbmUgdGhvdWdoLAorICAgICAgICAgICAgICAgICMgaWYgaXQgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgb3IgaXQgaXMgYW4gJyphcmdzJy1saWtlCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIsIGxlZnQgYWxvbmUgYnkgdGhlIHByb2Nlc3Npbmcgb2YgcG9zaXRpb25hbAorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgIGlmIChub3QgcGFydGlhbCBhbmQgcGFyYW0ua2luZCAhPSBfVkFSX1BPU0lUSU9OQUwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW1fbmFtZSkpIGZyb20gTm9uZQorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbV9uYW1lXSA9IGFyZ192YWwKKworICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBpZiBrd2FyZ3NfcGFyYW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBQcm9jZXNzIG91ciAnKiprd2FyZ3MnLWxpa2UgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2t3YXJnc19wYXJhbS5uYW1lXSA9IGt3YXJncworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJykKKworICAgICAgICByZXR1cm4gc2VsZi5fYm91bmRfYXJndW1lbnRzX2NscyhzZWxmLCBhcmd1bWVudHMpCisKKyAgICBkZWYgYmluZChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAnJydHZXQgYSBCb3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgbWFwcyB0aGUgcGFzc2VkIGBhcmdzYAorICAgICAgICBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiAgUmFpc2VzIGBUeXBlRXJyb3JgCisgICAgICAgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQuCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MpCisKKyAgICBkZWYgYmluZF9wYXJ0aWFsKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKKyAgICAgICAgcGFzc2VkIGBhcmdzYCBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLgorICAgICAgICBSYWlzZXMgYFR5cGVFcnJvcmAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9iaW5kKGFyZ3MsIGt3YXJncywgcGFydGlhbD1UcnVlKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IFRydWUKKyAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSBzdHIocGFyYW0pCisKKyAgICAgICAgICAgIGtpbmQgPSBwYXJhbS5raW5kCisgICAgICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAjIE9LLCB3ZSBoYXZlIGFuICcqYXJncyctbGlrZSBwYXJhbWV0ZXIsIHNvIHdlIHdvbid0IG5lZWQKKyAgICAgICAgICAgICAgICAjIGEgJyonIHRvIHNlcGFyYXRlIGtleXdvcmQtb25seSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICByZW5kZXJfa3dfb25seV9zZXBhcmF0b3IgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBraW5kID09IF9LRVlXT1JEX09OTFkgYW5kIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvcjoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyIHRvIHJlbmRlciBhbmQgd2UgaGF2ZW4ndAorICAgICAgICAgICAgICAgICMgcmVuZGVyZWQgYW4gJyphcmdzJy1saWtlIHBhcmFtZXRlciBiZWZvcmUsIHNvIGFkZCBhICcqJworICAgICAgICAgICAgICAgICMgc2VwYXJhdG9yIHRvIHRoZSBwYXJhbWV0ZXJzIGxpc3QgKCJmb28oYXJnMSwgKiwgYXJnMikiIGNhc2UpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKicpCisgICAgICAgICAgICAgICAgIyBUaGlzIGNvbmRpdGlvbiBzaG91bGQgYmUgb25seSB0cmlnZ2VyZWQgb25jZSwgc28KKyAgICAgICAgICAgICAgICAjIHJlc2V0IHRoZSBmbGFnCisgICAgICAgICAgICAgICAgcmVuZGVyX2t3X29ubHlfc2VwYXJhdG9yID0gRmFsc2UKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmb3JtYXR0ZWQpCisKKyAgICAgICAgcmVuZGVyZWQgPSAnKHt9KScuZm9ybWF0KCcsICcuam9pbihyZXN1bHQpKQorCisgICAgICAgIGlmIHNlbGYucmV0dXJuX2Fubm90YXRpb24gaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGFubm8gPSBmb3JtYXRhbm5vdGF0aW9uKHNlbGYucmV0dXJuX2Fubm90YXRpb24pCisgICAgICAgICAgICByZW5kZXJlZCArPSAnIC0+IHt9Jy5mb3JtYXQoYW5ubykKKworICAgICAgICByZXR1cm4gcmVuZGVyZWQKZGlmZiAtLWdpdCBhL0xpYi9pby5weSBiL0xpYi9pby5weQppbmRleCBhNTlhNzVhLi5jZmI3MGFjIDEwMDY0NAotLS0gYS9MaWIvaW8ucHkKKysrIGIvTGliL2lvLnB5CkBAIC01OCw2ICs1OCw5IEBACiAKIE9wZW5XcmFwcGVyID0gX2lvLm9wZW4gIyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIF9weWlvCiAKKyMgUHJldGVuZCB0aGlzIGV4Y2VwdGlvbiB3YXMgY3JlYXRlZCBoZXJlLgorVW5zdXBwb3J0ZWRPcGVyYXRpb24uX19tb2R1bGVfXyA9ICJpbyIKKwogIyBmb3Igc2VlaygpCiBTRUVLX1NFVCA9IDAKIFNFRUtfQ1VSID0gMQpkaWZmIC0tZ2l0IGEvTGliL2lwYWRkcmVzcy5weSBiL0xpYi9pcGFkZHJlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMyZTQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pcGFkZHJlc3MucHkKQEAgLTAsMCArMSwyMDk0IEBACisjIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuCisjICBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisKKyIiIkEgZmFzdCwgbGlnaHR3ZWlnaHQgSVB2NC9JUHY2IG1hbmlwdWxhdGlvbiBsaWJyYXJ5IGluIFB5dGhvbi4KKworVGhpcyBsaWJyYXJ5IGlzIHVzZWQgdG8gY3JlYXRlL3Bva2UvbWFuaXB1bGF0ZSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcworYW5kIG5ldHdvcmtzLgorCisiIiIKKworX192ZXJzaW9uX18gPSAnMS4wJworCisKK2ltcG9ydCBmdW5jdG9vbHMKKworSVBWNExFTkdUSCA9IDMyCitJUFY2TEVOR1RIID0gMTI4CisKK2NsYXNzIEFkZHJlc3NWYWx1ZUVycm9yKFZhbHVlRXJyb3IpOgorICAgICIiIkEgVmFsdWUgRXJyb3IgcmVsYXRlZCB0byB0aGUgYWRkcmVzcy4iIiIKKworCitjbGFzcyBOZXRtYXNrVmFsdWVFcnJvcihWYWx1ZUVycm9yKToKKyAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIG5ldG1hc2suIiIiCisKKworZGVmIGlwX2FkZHJlc3MoYWRkcmVzcyk6CisgICAgIiIiVGFrZSBhbiBJUCBzdHJpbmcvaW50IGFuZCByZXR1cm4gYW4gb2JqZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yCisgICAgICAgICAgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3Mgb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgKmFkZHJlc3MqIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcworCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3MoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjZBZGRyZXNzKGFkZHJlc3MpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIGlwX25ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpOgorICAgICIiIlRha2UgYW4gSVAgc3RyaW5nL2ludCBhbmQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciwgdGhlIElQIG5ldHdvcmsuICBFaXRoZXIgSVB2NCBvcgorICAgICAgICAgIElQdjYgbmV0d29ya3MgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcy4gT3IgaWYgdGhlIG5ldHdvcmsgaGFzIGhvc3QgYml0cyBzZXQuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3QpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3QpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IG5ldHdvcmsnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIGlwX2ludGVyZmFjZShhZGRyZXNzKToKKyAgICAiIiJUYWtlIGFuIElQIHN0cmluZy9pbnQgYW5kIHJldHVybiBhbiBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZS4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLiAgRWl0aGVyIElQdjQgb3IKKyAgICAgICAgICBJUHY2IGFkZHJlc3NlcyBtYXkgYmUgc3VwcGxpZWQ7IGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsCisgICAgICAgICAgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBbiBJUHY0SW50ZXJmYWNlIG9yIElQdjZJbnRlcmZhY2Ugb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcy4KKworICAgIE5vdGVzOgorICAgICAgICBUaGUgSVB2P0ludGVyZmFjZSBjbGFzc2VzIGRlc2NyaWJlIGFuIEFkZHJlc3Mgb24gYSBwYXJ0aWN1bGFyCisgICAgICAgIE5ldHdvcmssIHNvIHRoZXkncmUgYmFzaWNhbGx5IGEgY29tYmluYXRpb24gb2YgYm90aCB0aGUgQWRkcmVzcworICAgICAgICBhbmQgTmV0d29yayBjbGFzc2VzLgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NEludGVyZmFjZShhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NkludGVyZmFjZShhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBpbnRlcmZhY2UnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIHY0X2ludF90b19wYWNrZWQoYWRkcmVzcyk6CisgICAgIiIiUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgNCBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgSVAgYWRkcmVzcy4KKworICAgIFJldHVybnM6CisgICAgICAgIFRoZSBpbnRlZ2VyIGFkZHJlc3MgcGFja2VkIGFzIDQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICBSYWlzZXM6CisgICAgICAgIFZhbHVlRXJyb3I6IElmIHRoZSBpbnRlZ2VyIGlzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSB0byBiZSBhbgorICAgICAgICAgIElQdjQgSVAgYWRkcmVzcy4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoNCwgJ2JpZycpCisgICAgZXhjZXB0OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBZGRyZXNzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSBmb3IgSVB2NCIpCisKKworZGVmIHY2X2ludF90b19wYWNrZWQoYWRkcmVzcyk6CisgICAgIiIiUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgMTYgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IElQIGFkZHJlc3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgaW50ZWdlciBhZGRyZXNzIHBhY2tlZCBhcyAxNiBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoMTYsICdiaWcnKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWRkcmVzcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgZm9yIElQdjYiKQorCisKK2RlZiBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKToKKyAgICAiIiJIZWxwZXIgdG8gc3BsaXQgdGhlIG5ldG1hc2sgYW5kIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yIGlmIG5lZWRlZCIiIgorICAgIGFkZHIgPSBzdHIoYWRkcmVzcykuc3BsaXQoJy8nKQorICAgIGlmIGxlbihhZGRyKSA+IDI6CisgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJPbmx5IG9uZSAnLycgcGVybWl0dGVkIGluICVyIiAlIGFkZHJlc3MpCisgICAgcmV0dXJuIGFkZHIKKworCitkZWYgX2ZpbmRfYWRkcmVzc19yYW5nZShhZGRyZXNzZXMpOgorICAgICIiIkZpbmQgYSBzZXF1ZW5jZSBvZiBJUHYjQWRkcmVzcy4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3NlczogYSBsaXN0IG9mIElQdiNBZGRyZXNzIG9iamVjdHMuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3NlcyBpbiB0aGUgc2VxdWVuY2UuCisKKyAgICAiIiIKKyAgICBmaXJzdCA9IGxhc3QgPSBhZGRyZXNzZXNbMF0KKyAgICBmb3IgaXAgaW4gYWRkcmVzc2VzWzE6XToKKyAgICAgICAgaWYgaXAuX2lwID09IGxhc3QuX2lwICsgMToKKyAgICAgICAgICAgIGxhc3QgPSBpcAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1cm4gKGZpcnN0LCBsYXN0KQorCisKK2RlZiBfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhudW1iZXIsIGJpdHMpOgorICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2YgemVybyBiaXRzIG9uIHRoZSByaWdodCBoYW5kIHNpZGUuCisKKyAgICBBcmdzOgorICAgICAgICBudW1iZXI6IGFuIGludGVnZXIuCisgICAgICAgIGJpdHM6IG1heGltdW0gbnVtYmVyIG9mIGJpdHMgdG8gY291bnQuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSBudW1iZXIuCisKKyAgICAiIiIKKyAgICBpZiBudW1iZXIgPT0gMDoKKyAgICAgICAgcmV0dXJuIGJpdHMKKyAgICBmb3IgaSBpbiByYW5nZShiaXRzKToKKyAgICAgICAgaWYgKG51bWJlciA+PiBpKSAmIDE6CisgICAgICAgICAgICByZXR1cm4gaQorICAgICMgQWxsIGJpdHMgb2YgaW50ZXJlc3Qgd2VyZSB6ZXJvLCBldmVuIGlmIHRoZXJlIGFyZSBtb3JlIGluIHRoZSBudW1iZXIKKyAgICByZXR1cm4gYml0cworCisKK2RlZiBzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCk6CisgICAgIiIiU3VtbWFyaXplIGEgbmV0d29yayByYW5nZSBnaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QgSVAgYWRkcmVzc2VzLgorCisgICAgRXhhbXBsZToKKyAgICAgICAgPj4+IGxpc3Qoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpLAorICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xMzAnKSkpCisgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMzEnKSwKKyAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjEzMC8zMicpXQorCisgICAgQXJnczoKKyAgICAgICAgZmlyc3Q6IHRoZSBmaXJzdCBJUHY0QWRkcmVzcyBvciBJUHY2QWRkcmVzcyBpbiB0aGUgcmFuZ2UuCisgICAgICAgIGxhc3Q6IHRoZSBsYXN0IElQdjRBZGRyZXNzIG9yIElQdjZBZGRyZXNzIGluIHRoZSByYW5nZS4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIGl0ZXJhdG9yIG9mIHRoZSBzdW1tYXJpemVkIElQdig0fDYpIG5ldHdvcmsgb2JqZWN0cy4KKworICAgIFJhaXNlOgorICAgICAgICBUeXBlRXJyb3I6CisgICAgICAgICAgICBJZiB0aGUgZmlyc3QgYW5kIGxhc3Qgb2JqZWN0cyBhcmUgbm90IElQIGFkZHJlc3Nlcy4KKyAgICAgICAgICAgIElmIHRoZSBmaXJzdCBhbmQgbGFzdCBvYmplY3RzIGFyZSBub3QgdGhlIHNhbWUgdmVyc2lvbi4KKyAgICAgICAgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIElmIHRoZSBsYXN0IG9iamVjdCBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBmaXJzdC4KKyAgICAgICAgICAgIElmIHRoZSB2ZXJzaW9uIG9mIHRoZSBmaXJzdCBhZGRyZXNzIGlzIG5vdCA0IG9yIDYuCisKKyAgICAiIiIKKyAgICBpZiAobm90IChpc2luc3RhbmNlKGZpcnN0LCBfQmFzZUFkZHJlc3MpIGFuZAorICAgICAgICAgICAgIGlzaW5zdGFuY2UobGFzdCwgX0Jhc2VBZGRyZXNzKSkpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ZpcnN0IGFuZCBsYXN0IG11c3QgYmUgSVAgYWRkcmVzc2VzLCBub3QgbmV0d29ya3MnKQorICAgIGlmIGZpcnN0LnZlcnNpb24gIT0gbGFzdC52ZXJzaW9uOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0KSkKKyAgICBpZiBmaXJzdCA+IGxhc3Q6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xhc3QgSVAgYWRkcmVzcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBmaXJzdCcpCisKKyAgICBpZiBmaXJzdC52ZXJzaW9uID09IDQ6CisgICAgICAgIGlwID0gSVB2NE5ldHdvcmsKKyAgICBlbGlmIGZpcnN0LnZlcnNpb24gPT0gNjoKKyAgICAgICAgaXAgPSBJUHY2TmV0d29yaworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Vua25vd24gSVAgdmVyc2lvbicpCisKKyAgICBpcF9iaXRzID0gZmlyc3QuX21heF9wcmVmaXhsZW4KKyAgICBmaXJzdF9pbnQgPSBmaXJzdC5faXAKKyAgICBsYXN0X2ludCA9IGxhc3QuX2lwCisgICAgd2hpbGUgZmlyc3RfaW50IDw9IGxhc3RfaW50OgorICAgICAgICBuYml0cyA9IG1pbihfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhmaXJzdF9pbnQsIGlwX2JpdHMpLAorICAgICAgICAgICAgICAgICAgICAobGFzdF9pbnQgLSBmaXJzdF9pbnQgKyAxKS5iaXRfbGVuZ3RoKCkgLSAxKQorICAgICAgICBuZXQgPSBpcCgnJXMvJWQnICUgKGZpcnN0LCBpcF9iaXRzIC0gbmJpdHMpKQorICAgICAgICB5aWVsZCBuZXQKKyAgICAgICAgZmlyc3RfaW50ICs9IDEgPDwgbmJpdHMKKyAgICAgICAgaWYgZmlyc3RfaW50IC0gMSA9PSBpcC5fQUxMX09ORVM6CisgICAgICAgICAgICBicmVhaworICAgICAgICBmaXJzdCA9IGZpcnN0Ll9fY2xhc3NfXyhmaXJzdF9pbnQpCisKKworZGVmIF9jb2xsYXBzZV9hZGRyZXNzZXNfcmVjdXJzaXZlKGFkZHJlc3Nlcyk6CisgICAgIiIiTG9vcHMgdGhyb3VnaCB0aGUgYWRkcmVzc2VzLCBjb2xsYXBzaW5nIGNvbmN1cnJlbnQgbmV0YmxvY2tzLgorCisgICAgRXhhbXBsZToKKworICAgICAgICBpcDEgPSBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI2JykKKyAgICAgICAgaXAyID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNjQvMjYnKQorICAgICAgICBpcDMgPSBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjYnKQorICAgICAgICBpcDQgPSBJUHY0TmV0d29yaygnMTkyLjAuMi4xOTIvMjYnKQorCisgICAgICAgIF9jb2xsYXBzZV9hZGRyZXNzZXNfcmVjdXJzaXZlKFtpcDEsIGlwMiwgaXAzLCBpcDRdKSAtPgorICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCisKKyAgICAgICAgVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIGRpcmVjdGx5OyBpdCBpcyBjYWxsZWQgdmlhCisgICAgICAgICAgY29sbGFwc2VfYWRkcmVzc2VzKFtdKS4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3NlczogQSBsaXN0IG9mIElQdjROZXR3b3JrJ3Mgb3IgSVB2Nk5ldHdvcmsncworCisgICAgUmV0dXJuczoKKyAgICAgICAgQSBsaXN0IG9mIElQdjROZXR3b3JrJ3Mgb3IgSVB2Nk5ldHdvcmsncyBkZXBlbmRpbmcgb24gd2hhdCB3ZSB3ZXJlCisgICAgICAgIHBhc3NlZC4KKworICAgICIiIgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxhc3RfYWRkciA9IE5vbmUKKyAgICAgICAgcmV0X2FycmF5ID0gW10KKyAgICAgICAgb3B0aW1pemVkID0gRmFsc2UKKworICAgICAgICBmb3IgY3VyX2FkZHIgaW4gYWRkcmVzc2VzOgorICAgICAgICAgICAgaWYgbm90IHJldF9hcnJheToKKyAgICAgICAgICAgICAgICBsYXN0X2FkZHIgPSBjdXJfYWRkcgorICAgICAgICAgICAgICAgIHJldF9hcnJheS5hcHBlbmQoY3VyX2FkZHIpCisgICAgICAgICAgICBlbGlmIChjdXJfYWRkci5uZXR3b3JrX2FkZHJlc3MgPj0gbGFzdF9hZGRyLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICBjdXJfYWRkci5icm9hZGNhc3RfYWRkcmVzcyA8PSBsYXN0X2FkZHIuYnJvYWRjYXN0X2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIG9wdGltaXplZCA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgY3VyX2FkZHIgPT0gbGlzdChsYXN0X2FkZHIuc3VwZXJuZXQoKS5zdWJuZXRzKCkpWzFdOgorICAgICAgICAgICAgICAgIHJldF9hcnJheVstMV0gPSBsYXN0X2FkZHIgPSBsYXN0X2FkZHIuc3VwZXJuZXQoKQorICAgICAgICAgICAgICAgIG9wdGltaXplZCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGFzdF9hZGRyID0gY3VyX2FkZHIKKyAgICAgICAgICAgICAgICByZXRfYXJyYXkuYXBwZW5kKGN1cl9hZGRyKQorCisgICAgICAgIGFkZHJlc3NlcyA9IHJldF9hcnJheQorICAgICAgICBpZiBub3Qgb3B0aW1pemVkOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NlcworCisKK2RlZiBjb2xsYXBzZV9hZGRyZXNzZXMoYWRkcmVzc2VzKToKKyAgICAiIiJDb2xsYXBzZSBhIGxpc3Qgb2YgSVAgb2JqZWN0cy4KKworICAgIEV4YW1wbGU6CisgICAgICAgIGNvbGxhcHNlX2FkZHJlc3NlcyhbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpXSkgLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzZXM6IEFuIGl0ZXJhdG9yIG9mIElQdjROZXR3b3JrIG9yIElQdjZOZXR3b3JrIG9iamVjdHMuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgY29sbGFwc2VkIElQdig0fDYpTmV0d29yayBvYmplY3RzLgorCisgICAgUmFpc2VzOgorICAgICAgICBUeXBlRXJyb3I6IElmIHBhc3NlZCBhIGxpc3Qgb2YgbWl4ZWQgdmVyc2lvbiBvYmplY3RzLgorCisgICAgIiIiCisgICAgaSA9IDAKKyAgICBhZGRycyA9IFtdCisgICAgaXBzID0gW10KKyAgICBuZXRzID0gW10KKworICAgICMgc3BsaXQgSVAgYWRkcmVzc2VzIGFuZCBuZXR3b3JrcworICAgIGZvciBpcCBpbiBhZGRyZXNzZXM6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoaXAsIF9CYXNlQWRkcmVzcyk6CisgICAgICAgICAgICBpZiBpcHMgYW5kIGlwc1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLCBpcHNbLTFdKSkKKyAgICAgICAgICAgIGlwcy5hcHBlbmQoaXApCisgICAgICAgIGVsaWYgaXAuX3ByZWZpeGxlbiA9PSBpcC5fbWF4X3ByZWZpeGxlbjoKKyAgICAgICAgICAgIGlmIGlwcyBhbmQgaXBzWy0xXS5fdmVyc2lvbiAhPSBpcC5fdmVyc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAsIGlwc1stMV0pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlwcy5hcHBlbmQoaXAuaXApCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgaXBzLmFwcGVuZChpcC5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBuZXRzIGFuZCBuZXRzWy0xXS5fdmVyc2lvbiAhPSBpcC5fdmVyc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAsIG5ldHNbLTFdKSkKKyAgICAgICAgICAgIG5ldHMuYXBwZW5kKGlwKQorCisgICAgIyBzb3J0IGFuZCBkZWR1cAorICAgIGlwcyA9IHNvcnRlZChzZXQoaXBzKSkKKyAgICBuZXRzID0gc29ydGVkKHNldChuZXRzKSkKKworICAgIHdoaWxlIGkgPCBsZW4oaXBzKToKKyAgICAgICAgKGZpcnN0LCBsYXN0KSA9IF9maW5kX2FkZHJlc3NfcmFuZ2UoaXBzW2k6XSkKKyAgICAgICAgaSA9IGlwcy5pbmRleChsYXN0KSArIDEKKyAgICAgICAgYWRkcnMuZXh0ZW5kKHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKGZpcnN0LCBsYXN0KSkKKworICAgIHJldHVybiBpdGVyKF9jb2xsYXBzZV9hZGRyZXNzZXNfcmVjdXJzaXZlKHNvcnRlZCgKKyAgICAgICAgYWRkcnMgKyBuZXRzLCBrZXk9X0Jhc2VOZXR3b3JrLl9nZXRfbmV0d29ya3Nfa2V5KSkpCisKKworZGVmIGdldF9taXhlZF90eXBlX2tleShvYmopOgorICAgICIiIlJldHVybiBhIGtleSBzdWl0YWJsZSBmb3Igc29ydGluZyBiZXR3ZWVuIG5ldHdvcmtzIGFuZCBhZGRyZXNzZXMuCisKKyAgICBBZGRyZXNzIGFuZCBOZXR3b3JrIG9iamVjdHMgYXJlIG5vdCBzb3J0YWJsZSBieSBkZWZhdWx0OyB0aGV5J3JlCisgICAgZnVuZGFtZW50YWxseSBkaWZmZXJlbnQgc28gdGhlIGV4cHJlc3Npb24KKworICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykgPD0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKKyAgICBkb2Vzbid0IG1ha2UgYW55IHNlbnNlLiAgVGhlcmUgYXJlIHNvbWUgdGltZXMgaG93ZXZlciwgd2hlcmUgeW91IG1heSB3aXNoCisgICAgdG8gaGF2ZSBpcGFkZHJlc3Mgc29ydCB0aGVzZSBmb3IgeW91IGFueXdheS4gSWYgeW91IG5lZWQgdG8gZG8gdGhpcywgeW91CisgICAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBrZXk9IGFyZ3VtZW50IHRvIHNvcnRlZCgpLgorCisgICAgQXJnczoKKyAgICAgIG9iajogZWl0aGVyIGEgTmV0d29yayBvciBBZGRyZXNzIG9iamVjdC4KKyAgICBSZXR1cm5zOgorICAgICAgYXBwcm9wcmlhdGUga2V5LgorCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShvYmosIF9CYXNlTmV0d29yayk6CisgICAgICAgIHJldHVybiBvYmouX2dldF9uZXR3b3Jrc19rZXkoKQorICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIF9CYXNlQWRkcmVzcyk6CisgICAgICAgIHJldHVybiBvYmouX2dldF9hZGRyZXNzX2tleSgpCisgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworY2xhc3MgX1RvdGFsT3JkZXJpbmdNaXhpbjoKKyAgICAjIEhlbHBlciB0aGF0IGRlcml2ZXMgdGhlIG90aGVyIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBmcm9tCisgICAgIyBfX2x0X18gYW5kIF9fZXFfXworICAgICMgV2UgYXZvaWQgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nIGJlY2F1c2UgaXQgZG9lc24ndCBoYW5kbGUKKyAgICAjIE5vdEltcGxlbWVudGVkIGNvcnJlY3RseSB5ZXQgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMDA0MikKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBlcXVhbCA9IHNlbGYuX19lcV9fKG90aGVyKQorICAgICAgICBpZiBlcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gbm90IGVxdWFsCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgbGVzcyA9IHNlbGYuX19sdF9fKG90aGVyKQorICAgICAgICBpZiBsZXNzIGlzIE5vdEltcGxlbWVudGVkIG9yIG5vdCBsZXNzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19lcV9fKG90aGVyKQorICAgICAgICByZXR1cm4gbGVzcworICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBsZXNzID0gc2VsZi5fX2x0X18ob3RoZXIpCisgICAgICAgIGlmIGxlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgZXF1YWwgPSBzZWxmLl9fZXFfXyhvdGhlcikKKyAgICAgICAgaWYgZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG5vdCAobGVzcyBvciBlcXVhbCkKKyAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgbGVzcyA9IHNlbGYuX19sdF9fKG90aGVyKQorICAgICAgICBpZiBsZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBub3QgbGVzcworCitjbGFzcyBfSVBBZGRyZXNzQmFzZShfVG90YWxPcmRlcmluZ01peGluKToKKworICAgICIiIlRoZSBtb3RoZXIgY2xhc3MuIiIiCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZXhwbG9kZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbG9uZ2hhbmQgdmVyc2lvbiBvZiB0aGUgSVAgYWRkcmVzcyBhcyBhIHN0cmluZy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZygpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tcHJlc3NlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBzaG9ydGhhbmQgdmVyc2lvbiBvZiB0aGUgSVAgYWRkcmVzcyBhcyBhIHN0cmluZy4iIiIKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgIG1zZyA9ICclMjAwcyBoYXMgbm8gdmVyc2lvbiBzcGVjaWZpZWQnICUgKHR5cGUoc2VsZiksKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKG1zZykKKworICAgIGRlZiBfY2hlY2tfaW50X2FkZHJlc3Moc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIGlmIGFkZHJlc3MgPCAwOgorICAgICAgICAgICAgbXNnID0gIiVkICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBzZWxmLl92ZXJzaW9uKSkKKyAgICAgICAgaWYgYWRkcmVzcyA+IHNlbGYuX0FMTF9PTkVTOgorICAgICAgICAgICAgbXNnID0gIiVkICg+PSAyKiolZCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHYlZCBhZGRyZXNzIgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIHNlbGYuX21heF9wcmVmaXhsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdmVyc2lvbikpCisKKyAgICBkZWYgX2NoZWNrX3BhY2tlZF9hZGRyZXNzKHNlbGYsIGFkZHJlc3MsIGV4cGVjdGVkX2xlbik6CisgICAgICAgIGFkZHJlc3NfbGVuID0gbGVuKGFkZHJlc3MpCisgICAgICAgIGlmIGFkZHJlc3NfbGVuICE9IGV4cGVjdGVkX2xlbjoKKyAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9ICVkKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdiVkIGFkZHJlc3MiCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoYWRkcmVzcywgYWRkcmVzc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGVuLCBzZWxmLl92ZXJzaW9uKSkKKworICAgIGRlZiBfaXBfaW50X2Zyb21fcHJlZml4KHNlbGYsIHByZWZpeGxlbj1Ob25lKToKKyAgICAgICAgIiIiVHVybiB0aGUgcHJlZml4IGxlbmd0aCBuZXRtYXNrIGludG8gYSBpbnQgZm9yIGNvbXBhcmlzb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbjogQW4gaW50ZWdlciwgdGhlIHByZWZpeCBsZW5ndGguCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGludGVnZXIuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHByZWZpeGxlbiBpcyBOb25lOgorICAgICAgICAgICAgcHJlZml4bGVuID0gc2VsZi5fcHJlZml4bGVuCisgICAgICAgIHJldHVybiBzZWxmLl9BTExfT05FUyBeIChzZWxmLl9BTExfT05FUyA+PiBwcmVmaXhsZW4pCisKKyAgICBkZWYgX3ByZWZpeF9mcm9tX2lwX2ludChzZWxmLCBpcF9pbnQsIG1hc2s9MzIpOgorICAgICAgICAiIiJSZXR1cm4gcHJlZml4IGxlbmd0aCBmcm9tIHRoZSBkZWNpbWFsIG5ldG1hc2suCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX2ludDogQW4gaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuCisgICAgICAgICAgICBtYXNrOiBUaGUgbmV0bWFzay4gIERlZmF1bHRzIHRvIDMyLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpbnRlZ2VyLCB0aGUgcHJlZml4IGxlbmd0aC4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1hc2sgLSBfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhpcF9pbnQsIG1hc2spCisKKyAgICBkZWYgX2lwX3N0cmluZ19mcm9tX3ByZWZpeChzZWxmLCBwcmVmaXhsZW49Tm9uZSk6CisgICAgICAgICIiIlR1cm4gYSBwcmVmaXggbGVuZ3RoIGludG8gYSBkb3R0ZWQgZGVjaW1hbCBzdHJpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbjogQW4gaW50ZWdlciwgdGhlIG5ldG1hc2sgcHJlZml4IGxlbmd0aC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBzdHJpbmcsIHRoZSBkb3R0ZWQgZGVjaW1hbCBuZXRtYXNrIHN0cmluZy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHByZWZpeGxlbjoKKyAgICAgICAgICAgIHByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeGxlbgorICAgICAgICByZXR1cm4gc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeChwcmVmaXhsZW4pKQorCisKK2NsYXNzIF9CYXNlQWRkcmVzcyhfSVBBZGRyZXNzQmFzZSk6CisKKyAgICAiIiJBIGdlbmVyaWMgSVAgb2JqZWN0LgorCisgICAgVGhpcyBJUCBjbGFzcyBjb250YWlucyB0aGUgdmVyc2lvbiBpbmRlcGVuZGVudCBtZXRob2RzIHdoaWNoIGFyZQorICAgIHVzZWQgYnkgc2luZ2xlIElQIGFkZHJlc3Nlcy4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiAobm90IGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpCisgICAgICAgICAgICBhbmQgJy8nIGluIHN0cihhZGRyZXNzKSk6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiICUgYWRkcmVzcykKKworICAgIGRlZiBfX2ludF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYuX2lwID09IG90aGVyLl9pcAorICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fdmVyc2lvbiA9PSBvdGhlci5fdmVyc2lvbikKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiAhPSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlQWRkcmVzcyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHR5cGUnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIHNlbGYuX2lwICE9IG90aGVyLl9pcDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pcCA8IG90aGVyLl9pcAorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICMgU2hvcnRoYW5kIGZvciBJbnRlZ2VyIGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbi4gVGhpcyBpcyBub3QKKyAgICAjIG1lYW50IHRvIGV2ZXIgc3VwcG9ydCBhZGRpdGlvbi9zdWJ0cmFjdGlvbiBvZiBhZGRyZXNzZXMuCisgICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgaW50KToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW50KHNlbGYpICsgb3RoZXIpCisKKyAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBpbnQpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhpbnQoc2VsZikgLSBvdGhlcikKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcyglciknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoc2VsZikpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChoZXgoaW50KHNlbGYuX2lwKSkpCisKKyAgICBkZWYgX2dldF9hZGRyZXNzX2tleShzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl92ZXJzaW9uLCBzZWxmKQorCisKK2NsYXNzIF9CYXNlTmV0d29yayhfSVBBZGRyZXNzQmFzZSk6CisKKyAgICAiIiJBIGdlbmVyaWMgSVAgbmV0d29yayBvYmplY3QuCisKKyAgICBUaGlzIElQIGNsYXNzIGNvbnRhaW5zIHRoZSB2ZXJzaW9uIGluZGVwZW5kZW50IG1ldGhvZHMgd2hpY2ggYXJlCisgICAgdXNlZCBieSBuZXR3b3Jrcy4KKworICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgc2VsZi5fY2FjaGUgPSB7fQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzKCVyKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmKSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVkJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5wcmVmaXhsZW4pCisKKyAgICBkZWYgaG9zdHMoc2VsZik6CisgICAgICAgICIiIkdlbmVyYXRlIEl0ZXJhdG9yIG92ZXIgdXNhYmxlIGhvc3RzIGluIGEgbmV0d29yay4KKworICAgICAgICBUaGlzIGlzIGxpa2UgX19pdGVyX18gZXhjZXB0IGl0IGRvZXNuJ3QgcmV0dXJuIHRoZSBuZXR3b3JrCisgICAgICAgIG9yIGJyb2FkY2FzdCBhZGRyZXNzZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG5ldHdvcmsgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBmb3IgeCBpbiByYW5nZShuZXR3b3JrICsgMSwgYnJvYWRjYXN0KToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuX2FkZHJlc3NfY2xhc3MoeCkKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgbmV0d29yayA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIGZvciB4IGluIHJhbmdlKG5ldHdvcmssIGJyb2FkY2FzdCArIDEpOgorICAgICAgICAgICAgeWllbGQgc2VsZi5fYWRkcmVzc19jbGFzcyh4KQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG4pOgorICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKKyAgICAgICAgaWYgbiA+PSAwOgorICAgICAgICAgICAgaWYgbmV0d29yayArIG4gPiBicm9hZGNhc3Q6CisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MobmV0d29yayArIG4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuICs9IDEKKyAgICAgICAgICAgIGlmIGJyb2FkY2FzdCArIG4gPCBuZXR3b3JrOgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKGJyb2FkY2FzdCArIG4pCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiAhPSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlTmV0d29yayk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHR5cGUnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIHNlbGYubmV0d29ya19hZGRyZXNzICE9IG90aGVyLm5ldHdvcmtfYWRkcmVzczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmtfYWRkcmVzcyA8IG90aGVyLm5ldHdvcmtfYWRkcmVzcworICAgICAgICBpZiBzZWxmLm5ldG1hc2sgIT0gb3RoZXIubmV0bWFzazoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldG1hc2sgPCBvdGhlci5uZXRtYXNrCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiA9PSBvdGhlci5fdmVyc2lvbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPT0gb3RoZXIubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSA9PSBpbnQob3RoZXIubmV0bWFzaykpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpIF4gaW50KHNlbGYubmV0bWFzaykpCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyBhbHdheXMgZmFsc2UgaWYgb25lIGlzIHY0IGFuZCB0aGUgb3RoZXIgaXMgdjYuCisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBkZWFsaW5nIHdpdGggYW5vdGhlciBuZXR3b3JrLgorICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgZGVhbGluZyB3aXRoIGFub3RoZXIgYWRkcmVzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4gKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgPD0gaW50KG90aGVyLl9pcCkgPD0KKyAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpKQorCisgICAgZGVmIG92ZXJsYXBzKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiVGVsbCBpZiBzZWxmIGlzIHBhcnRseSBjb250YWluZWQgaW4gb3RoZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmtfYWRkcmVzcyBpbiBvdGhlciBvciAoCisgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzIGluIG90aGVyIG9yICgKKyAgICAgICAgICAgICAgICBvdGhlci5uZXR3b3JrX2FkZHJlc3MgaW4gc2VsZiBvciAoCisgICAgICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIGluIHNlbGYpKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBicm9hZGNhc3RfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgeCA9IHNlbGYuX2NhY2hlLmdldCgnYnJvYWRjYXN0X2FkZHJlc3MnKQorICAgICAgICBpZiB4IGlzIE5vbmU6CisgICAgICAgICAgICB4ID0gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmhvc3RtYXNrKSkKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlWydicm9hZGNhc3RfYWRkcmVzcyddID0geAorICAgICAgICByZXR1cm4geAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGhvc3RtYXNrKHNlbGYpOgorICAgICAgICB4ID0gc2VsZi5fY2FjaGUuZ2V0KCdob3N0bWFzaycpCisgICAgICAgIGlmIHggaXMgTm9uZToKKyAgICAgICAgICAgIHggPSBzZWxmLl9hZGRyZXNzX2NsYXNzKGludChzZWxmLm5ldG1hc2spIF4gc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICBzZWxmLl9jYWNoZVsnaG9zdG1hc2snXSA9IHgKKyAgICAgICAgcmV0dXJuIHgKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYuX3ByZWZpeGxlbikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX25ldG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLm5ldG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9ob3N0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYuaG9zdG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbnVtX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgIiIiTnVtYmVyIG9mIGhvc3RzIGluIHRoZSBjdXJyZW50IHN1Ym5ldC4iIiIKKyAgICAgICAgcmV0dXJuIGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKSAtIGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgKyAxCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX2FkZHJlc3NfY2xhc3Moc2VsZik6CisgICAgICAgICMgUmV0dXJuaW5nIGJhcmUgYWRkcmVzcyBvYmplY3RzIChyYXRoZXIgdGhhbiBpbnRlcmZhY2VzKSBhbGxvd3MgZm9yCisgICAgICAgICMgbW9yZSBjb25zaXN0ZW50IGJlaGF2aW91ciBhY3Jvc3MgdGhlIG5ldHdvcmsgYWRkcmVzcywgYnJvYWRjYXN0CisgICAgICAgICMgYWRkcmVzcyBhbmQgaW5kaXZpZHVhbCBob3N0IGFkZHJlc3Nlcy4KKyAgICAgICAgbXNnID0gJyUyMDBzIGhhcyBubyBhc3NvY2lhdGVkIGFkZHJlc3MgY2xhc3MnICUgKHR5cGUoc2VsZiksKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKG1zZykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXhsZW4KKworICAgIGRlZiBhZGRyZXNzX2V4Y2x1ZGUoc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJSZW1vdmUgYW4gYWRkcmVzcyBmcm9tIGEgbGFyZ2VyIGJsb2NrLgorCisgICAgICAgIEZvciBleGFtcGxlOgorCisgICAgICAgICAgICBhZGRyMSA9IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpCisgICAgICAgICAgICBhZGRyMiA9IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpCisgICAgICAgICAgICBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjIpID0KKyAgICAgICAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8zMicpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4yLzMxJyksCisgICAgICAgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNC8zMCcpLCBJUHY0TmV0d29yaygnMTkyLjAuMi44LzI5JyldCisKKyAgICAgICAgb3IgSVB2NjoKKworICAgICAgICAgICAgYWRkcjEgPSBpcF9uZXR3b3JrKCcyMDAxOmRiODo6MS8zMicpCisgICAgICAgICAgICBhZGRyMiA9IGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzEyOCcpCisgICAgICAgICAgICBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjIpID0KKyAgICAgICAgICAgICAgICBbaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvMTI4JyksCisgICAgICAgICAgICAgICAgaXBfbmV0d29yaygnMjAwMTpkYjg6OjIvMTI3JyksCisgICAgICAgICAgICAgICAgaXBfbmV0d29yaygnMjAwMTpkYjg6OjQvMTI2JyksCisgICAgICAgICAgICAgICAgaXBfbmV0d29yaygnMjAwMTpkYjg6OjgvMTI1JyksCisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgaXBfbmV0d29yaygnMjAwMTpkYjg6ODAwMDo6LzMzJyldCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG90aGVyOiBBbiBJUHY0TmV0d29yayBvciBJUHY2TmV0d29yayBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaXRlcmF0b3Igb2YgdGhlIHRoZSBJUHYoNHw2KU5ldHdvcmsgb2JqZWN0cyB3aGljaCBpcyBzZWxmCisgICAgICAgICAgICBtaW51cyBvdGhlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBUeXBlRXJyb3I6IElmIHNlbGYgYW5kIG90aGVyIGFyZSBvZiBkaWZmZmVyaW5nIGFkZHJlc3MKKyAgICAgICAgICAgICAgdmVyc2lvbnMsIG9yIGlmIG90aGVyIGlzIG5vdCBhIG5ldHdvcmsgb2JqZWN0LgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgb3RoZXIgaXMgbm90IGNvbXBsZXRlbHkgY29udGFpbmVkIGJ5IHNlbGYuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBpcyBub3QgYSBuZXR3b3JrIG9iamVjdCIgJSBvdGhlcikKKworICAgICAgICBpZiBub3QgKG90aGVyLm5ldHdvcmtfYWRkcmVzcyA+PSBzZWxmLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIG5vdCBjb250YWluZWQgaW4gJXMnICUgKG90aGVyLCBzZWxmKSkKKyAgICAgICAgaWYgb3RoZXIgPT0gc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSdyZSBjb21wYXJpbmcgdGhlIG5ldHdvcmsgb2Ygb3RoZXIuCisgICAgICAgIG90aGVyID0gb3RoZXIuX19jbGFzc19fKCclcy8lcycgJSAob3RoZXIubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnByZWZpeGxlbikpCisKKyAgICAgICAgczEsIHMyID0gc2VsZi5zdWJuZXRzKCkKKyAgICAgICAgd2hpbGUgczEgIT0gb3RoZXIgYW5kIHMyICE9IG90aGVyOgorICAgICAgICAgICAgaWYgKG90aGVyLm5ldHdvcmtfYWRkcmVzcyA+PSBzMS5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gczEuYnJvYWRjYXN0X2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHlpZWxkIHMyCisgICAgICAgICAgICAgICAgczEsIHMyID0gczEuc3VibmV0cygpCisgICAgICAgICAgICBlbGlmIChvdGhlci5uZXR3b3JrX2FkZHJlc3MgPj0gczIubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gczIuYnJvYWRjYXN0X2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHlpZWxkIHMxCisgICAgICAgICAgICAgICAgczEsIHMyID0gczIuc3VibmV0cygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWYgd2UgZ290IGhlcmUsIHRoZXJlJ3MgYSBidWcgc29tZXdoZXJlLgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFcnJvciBwZXJmb3JtaW5nIGV4Y2x1c2lvbjogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzMTogJXMgczI6ICVzIG90aGVyOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzMSwgczIsIG90aGVyKSkKKyAgICAgICAgaWYgczEgPT0gb3RoZXI6CisgICAgICAgICAgICB5aWVsZCBzMgorICAgICAgICBlbGlmIHMyID09IG90aGVyOgorICAgICAgICAgICAgeWllbGQgczEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgd2UgZ290IGhlcmUsIHRoZXJlJ3MgYSBidWcgc29tZXdoZXJlLgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0Vycm9yIHBlcmZvcm1pbmcgZXhjbHVzaW9uOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnczE6ICVzIHMyOiAlcyBvdGhlcjogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzMSwgczIsIG90aGVyKSkKKworICAgIGRlZiBjb21wYXJlX25ldHdvcmtzKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiQ29tcGFyZSB0d28gSVAgb2JqZWN0cy4KKworICAgICAgICBUaGlzIGlzIG9ubHkgY29uY2VybmVkIGFib3V0IHRoZSBjb21wYXJpc29uIG9mIHRoZSBpbnRlZ2VyCisgICAgICAgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrIGFkZHJlc3Nlcy4gIFRoaXMgbWVhbnMgdGhhdCB0aGUKKyAgICAgICAgaG9zdCBiaXRzIGFyZW4ndCBjb25zaWRlcmVkIGF0IGFsbCBpbiB0aGlzIG1ldGhvZC4gIElmIHlvdSB3YW50CisgICAgICAgIHRvIGNvbXBhcmUgaG9zdCBiaXRzLCB5b3UgY2FuIGVhc2lseSBlbm91Z2ggZG8gYQorICAgICAgICAnSG9zdEEuX2lwIDwgSG9zdEIuX2lwJworCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvdGhlcjogQW4gSVAgb2JqZWN0LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBJZiB0aGUgSVAgdmVyc2lvbnMgb2Ygc2VsZiBhbmQgb3RoZXIgYXJlIHRoZSBzYW1lLCByZXR1cm5zOgorCisgICAgICAgICAgICAtMSBpZiBzZWxmIDwgb3RoZXI6CisgICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JykgPCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKQorICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykgPAorICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoyMDAwLzEyNCcpCisgICAgICAgICAgICAwIGlmIHNlbGYgPT0gb3RoZXIKKyAgICAgICAgICAgICAgZWc6IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKSA9PSBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpID09CisgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykKKyAgICAgICAgICAgIDEgaWYgc2VsZiA+IG90aGVyCisgICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKSA+IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKQorICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoyMDAwLzEyNCcpID4KKyAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykKKworICAgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgICAgVHlwZUVycm9yIGlmIHRoZSBJUCB2ZXJzaW9ucyBhcmUgZGlmZmVyZW50LgorCisgICAgICAgICIiIgorICAgICAgICAjIGRvZXMgdGhpcyBuZWVkIHRvIHJhaXNlIGEgVmFsdWVFcnJvcj8KKyAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiAhPSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdHlwZScgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgIyBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uIGJlbG93IGhlcmU6CisgICAgICAgIGlmIHNlbGYubmV0d29ya19hZGRyZXNzIDwgb3RoZXIubmV0d29ya19hZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGlmIHNlbGYubmV0d29ya19hZGRyZXNzID4gb3RoZXIubmV0d29ya19hZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgIyBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9PSBvdGhlci5uZXR3b3JrX2FkZHJlc3MgYmVsb3cgaGVyZToKKyAgICAgICAgaWYgc2VsZi5uZXRtYXNrIDwgb3RoZXIubmV0bWFzazoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBzZWxmLm5ldG1hc2sgPiBvdGhlci5uZXRtYXNrOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfZ2V0X25ldHdvcmtzX2tleShzZWxmKToKKyAgICAgICAgIiIiTmV0d29yay1vbmx5IGtleSBmdW5jdGlvbi4KKworICAgICAgICBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGlkZW50aWZpZXMgdGhpcyBhZGRyZXNzJyBuZXR3b3JrIGFuZAorICAgICAgICBuZXRtYXNrLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc3VpdGFibGUgImtleSIgYXJndW1lbnQgZm9yIHNvcnRlZCgpCisgICAgICAgIGFuZCBsaXN0LnNvcnQoKS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLl92ZXJzaW9uLCBzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5uZXRtYXNrKQorCisgICAgZGVmIHN1Ym5ldHMoc2VsZiwgcHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKToKKyAgICAgICAgIiIiVGhlIHN1Ym5ldHMgd2hpY2ggam9pbiB0byBtYWtlIHRoZSBjdXJyZW50IHN1Ym5ldC4KKworICAgICAgICBJbiB0aGUgY2FzZSB0aGF0IHNlbGYgY29udGFpbnMgb25seSBvbmUgSVAKKyAgICAgICAgKHNlbGYuX3ByZWZpeGxlbiA9PSAzMiBmb3IgSVB2NCBvciBzZWxmLl9wcmVmaXhsZW4gPT0gMTI4CisgICAgICAgIGZvciBJUHY2KSwgeWllbGQgYW4gaXRlcmF0b3Igd2l0aCBqdXN0IG91cnNlbGYuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmOiBBbiBpbnRlZ2VyLCB0aGUgYW1vdW50IHRoZSBwcmVmaXggbGVuZ3RoCisgICAgICAgICAgICAgIHNob3VsZCBiZSBpbmNyZWFzZWQgYnkuIFRoaXMgc2hvdWxkIG5vdCBiZSBzZXQgaWYKKyAgICAgICAgICAgICAgbmV3X3ByZWZpeCBpcyBhbHNvIHNldC4KKyAgICAgICAgICAgIG5ld19wcmVmaXg6IFRoZSBkZXNpcmVkIG5ldyBwcmVmaXggbGVuZ3RoLiBUaGlzIG11c3QgYmUgYQorICAgICAgICAgICAgICBsYXJnZXIgbnVtYmVyIChzbWFsbGVyIHByZWZpeCkgdGhhbiB0aGUgZXhpc3RpbmcgcHJlZml4LgorICAgICAgICAgICAgICBUaGlzIHNob3VsZCBub3QgYmUgc2V0IGlmIHByZWZpeGxlbl9kaWZmIGlzIGFsc28gc2V0LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpdGVyYXRvciBvZiBJUHYoNHw2KSBvYmplY3RzLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IFRoZSBwcmVmaXhsZW5fZGlmZiBpcyB0b28gc21hbGwgb3IgdG9vIGxhcmdlLgorICAgICAgICAgICAgICAgIE9SCisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCBhcmUgYm90aCBzZXQgb3IgbmV3X3ByZWZpeAorICAgICAgICAgICAgICBpcyBhIHNtYWxsZXIgbnVtYmVyIHRoYW4gdGhlIGN1cnJlbnQgcHJlZml4IChzbWFsbGVyCisgICAgICAgICAgICAgIG51bWJlciBtZWFucyBhIGxhcmdlciBuZXR3b3JrKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gc2VsZi5fbWF4X3ByZWZpeGxlbjoKKyAgICAgICAgICAgIHlpZWxkIHNlbGYKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG5ld19wcmVmaXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuZXdfcHJlZml4IDwgc2VsZi5fcHJlZml4bGVuOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBsb25nZXInKQorICAgICAgICAgICAgaWYgcHJlZml4bGVuX2RpZmYgIT0gMToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc2V0IHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4JykKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmID0gbmV3X3ByZWZpeCAtIHNlbGYuX3ByZWZpeGxlbgorCisgICAgICAgIGlmIHByZWZpeGxlbl9kaWZmIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ByZWZpeCBsZW5ndGggZGlmZiBtdXN0IGJlID4gMCcpCisgICAgICAgIG5ld19wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhsZW4gKyBwcmVmaXhsZW5fZGlmZgorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc192YWxpZF9uZXRtYXNrKHN0cihuZXdfcHJlZml4bGVuKSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICdwcmVmaXggbGVuZ3RoIGRpZmYgJWQgaXMgaW52YWxpZCBmb3IgbmV0YmxvY2sgJXMnICUgKAorICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuLCBzZWxmKSkKKworICAgICAgICBmaXJzdCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiArIHByZWZpeGxlbl9kaWZmKSkKKworICAgICAgICB5aWVsZCBmaXJzdAorICAgICAgICBjdXJyZW50ID0gZmlyc3QKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGJyb2FkY2FzdCA9IGN1cnJlbnQuYnJvYWRjYXN0X2FkZHJlc3MKKyAgICAgICAgICAgIGlmIGJyb2FkY2FzdCA9PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgbmV3X2FkZHIgPSBzZWxmLl9hZGRyZXNzX2NsYXNzKGludChicm9hZGNhc3QpICsgMSkKKyAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJXMnICUgKG5ld19hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeGxlbikpCisKKyAgICAgICAgICAgIHlpZWxkIGN1cnJlbnQKKworICAgIGRlZiBzdXBlcm5ldChzZWxmLCBwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpOgorICAgICAgICAiIiJUaGUgc3VwZXJuZXQgY29udGFpbmluZyB0aGUgY3VycmVudCBuZXR3b3JrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZjogQW4gaW50ZWdlciwgdGhlIGFtb3VudCB0aGUgcHJlZml4IGxlbmd0aCBvZgorICAgICAgICAgICAgICB0aGUgbmV0d29yayBzaG91bGQgYmUgZGVjcmVhc2VkIGJ5LiAgRm9yIGV4YW1wbGUsIGdpdmVuIGEKKyAgICAgICAgICAgICAgLzI0IG5ldHdvcmsgYW5kIGEgcHJlZml4bGVuX2RpZmYgb2YgMywgYSBzdXBlcm5ldCB3aXRoIGEKKyAgICAgICAgICAgICAgLzIxIG5ldG1hc2sgaXMgcmV0dXJuZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIElQdjQgbmV0d29yayBvYmplY3QuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiA8IDAuIEkuZS4sIHlvdSBoYXZlCisgICAgICAgICAgICAgIGEgbmVnYXRpdmUgcHJlZml4IGxlbmd0aC4KKyAgICAgICAgICAgICAgICBPUgorICAgICAgICAgICAgSWYgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXggYXJlIGJvdGggc2V0IG9yIG5ld19wcmVmaXggaXMgYQorICAgICAgICAgICAgICBsYXJnZXIgbnVtYmVyIHRoYW4gdGhlIGN1cnJlbnQgcHJlZml4IChsYXJnZXIgbnVtYmVyIG1lYW5zIGEKKyAgICAgICAgICAgICAgc21hbGxlciBuZXR3b3JrKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgaWYgbmV3X3ByZWZpeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5ld19wcmVmaXggPiBzZWxmLl9wcmVmaXhsZW46CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbmV3IHByZWZpeCBtdXN0IGJlIHNob3J0ZXInKQorICAgICAgICAgICAgaWYgcHJlZml4bGVuX2RpZmYgIT0gMToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc2V0IHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4JykKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmID0gc2VsZi5fcHJlZml4bGVuIC0gbmV3X3ByZWZpeAorCisgICAgICAgIGlmIHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAnY3VycmVudCBwcmVmaXhsZW4gaXMgJWQsIGNhbm5vdCBoYXZlIGEgcHJlZml4bGVuX2RpZmYgb2YgJWQnICUKKyAgICAgICAgICAgICAgICAoc2VsZi5wcmVmaXhsZW4sIHByZWZpeGxlbl9kaWZmKSkKKyAgICAgICAgIyBUT0RPIChwbW9vZHkpOiBvcHRpbWl6ZSB0aGlzLgorICAgICAgICB0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVkJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKQorICAgICAgICByZXR1cm4gdC5fX2NsYXNzX18oJyVzLyVkJyAlICh0Lm5ldHdvcmtfYWRkcmVzcywgdC5wcmVmaXhsZW4pKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbXVsdGljYXN0IGFkZHJlc3MuCisgICAgICAgICAgICBTZWUgUkZDIDIzNzMgMi43IGZvciBkZXRhaWxzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX211bHRpY2FzdCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX211bHRpY2FzdCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICByZXNlcnZlZCBJUHY2IE5ldHdvcmsgcmFuZ2VzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3Jlc2VydmVkIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfcmVzZXJ2ZWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDI5MS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19saW5rX2xvY2FsIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfbGlua19sb2NhbCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19wcml2YXRlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQxOTMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfcHJpdmF0ZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3ByaXZhdGUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIGlzIHRoZSB1bnNwZWNpZmllZCBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4yLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3Vuc3BlY2lmaWVkIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfdW5zcGVjaWZpZWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4zLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX2xvb3BiYWNrIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfbG9vcGJhY2spCisKKworY2xhc3MgX0Jhc2VWNDoKKworICAgICIiIkJhc2UgSVB2NCBvYmplY3QuCisKKyAgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgYnkgSVB2NCBvYmplY3RzIGluIGJvdGggc2luZ2xlIElQCisgICAgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KKworICAgICIiIgorCisgICAgIyBFcXVpdmFsZW50IHRvIDI1NS4yNTUuMjU1LjI1NSBvciAzMiBiaXRzIG9mIDEncy4KKyAgICBfQUxMX09ORVMgPSAoMioqSVBWNExFTkdUSCkgLSAxCisgICAgX0RFQ0lNQUxfRElHSVRTID0gZnJvemVuc2V0KCcwMTIzNDU2Nzg5JykKKworICAgICMgdGhlIHZhbGlkIG9jdGV0cyBmb3IgaG9zdCBhbmQgbmV0bWFza3MuIG9ubHkgdXNlZnVsIGZvciBJUHY0LgorICAgIF92YWxpZF9tYXNrX29jdGV0cyA9IGZyb3plbnNldCgoMjU1LCAyNTQsIDI1MiwgMjQ4LCAyNDAsIDIyNCwgMTkyLCAxMjgsIDApKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBzZWxmLl92ZXJzaW9uID0gNAorICAgICAgICBzZWxmLl9tYXhfcHJlZml4bGVuID0gSVBWNExFTkdUSAorCisgICAgZGVmIF9leHBsb2RlX3Nob3J0aGFuZF9pcF9zdHJpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKworICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKHNlbGYsIGlwX3N0cik6CisgICAgICAgICIiIlR1cm4gdGhlIGdpdmVuIElQIHN0cmluZyBpbnRvIGFuIGludGVnZXIgZm9yIGNvbXBhcmlzb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBJUCBpcF9zdHIuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBJUCBpcF9zdHIgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogaWYgaXBfc3RyIGlzbid0IGEgdmFsaWQgSVB2NCBBZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXBfc3RyOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoJ0FkZHJlc3MgY2Fubm90IGJlIGVtcHR5JykKKworICAgICAgICBvY3RldHMgPSBpcF9zdHIuc3BsaXQoJy4nKQorICAgICAgICBpZiBsZW4ob2N0ZXRzKSAhPSA0OgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIkV4cGVjdGVkIDQgb2N0ZXRzIGluICVyIiAlIGlwX3N0cikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMobWFwKHNlbGYuX3BhcnNlX29jdGV0LCBvY3RldHMpLCAnYmlnJykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQorCisgICAgZGVmIF9wYXJzZV9vY3RldChzZWxmLCBvY3RldF9zdHIpOgorICAgICAgICAiIiJDb252ZXJ0IGEgZGVjaW1hbCBvY3RldCBpbnRvIGFuIGludGVnZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG9jdGV0X3N0cjogQSBzdHJpbmcsIHRoZSBudW1iZXIgdG8gcGFyc2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBvY3RldCBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IGlmIHRoZSBvY3RldCBpc24ndCBzdHJpY3RseSBhIGRlY2ltYWwgZnJvbSBbMC4uMjU1XS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IG9jdGV0X3N0cjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkVtcHR5IG9jdGV0IG5vdCBwZXJtaXR0ZWQiKQorICAgICAgICAjIFdoaXRlbGlzdCB0aGUgY2hhcmFjdGVycywgc2luY2UgaW50KCkgYWxsb3dzIGEgbG90IG9mIGJpemFycmUgc3R1ZmYuCisgICAgICAgIGlmIG5vdCBzZWxmLl9ERUNJTUFMX0RJR0lUUy5pc3N1cGVyc2V0KG9jdGV0X3N0cik6CisgICAgICAgICAgICBtc2cgPSAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKKyAgICAgICAgIyBXZSBkbyB0aGUgbGVuZ3RoIGNoZWNrIHNlY29uZCwgc2luY2UgdGhlIGludmFsaWQgY2hhcmFjdGVyIGVycm9yCisgICAgICAgICMgaXMgbGlrZWx5IHRvIGJlIG1vcmUgaW5mb3JtYXRpdmUgZm9yIHRoZSB1c2VyCisgICAgICAgIGlmIGxlbihvY3RldF9zdHIpID4gMzoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDMgY2hhcmFjdGVycyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKKyAgICAgICAgIyBDb252ZXJ0IHRvIGludGVnZXIgKHdlIGtub3cgZGlnaXRzIGFyZSBsZWdhbCkKKyAgICAgICAgb2N0ZXRfaW50ID0gaW50KG9jdGV0X3N0ciwgMTApCisgICAgICAgICMgQW55IG9jdGV0cyB0aGF0IGxvb2sgbGlrZSB0aGV5ICptaWdodCogYmUgd3JpdHRlbiBpbiBvY3RhbCwKKyAgICAgICAgIyBhbmQgd2hpY2ggZG9uJ3QgbG9vayBleGFjdGx5IHRoZSBzYW1lIGluIGJvdGggb2N0YWwgYW5kCisgICAgICAgICMgZGVjaW1hbCBhcmUgcmVqZWN0ZWQgYXMgYW1iaWd1b3VzCisgICAgICAgIGlmIG9jdGV0X2ludCA+IDcgYW5kIG9jdGV0X3N0clswXSA9PSAnMCc6CisgICAgICAgICAgICBtc2cgPSAiQW1iaWd1b3VzIChvY3RhbC9kZWNpbWFsKSB2YWx1ZSBpbiAlciBub3QgcGVybWl0dGVkIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCisgICAgICAgIGlmIG9jdGV0X2ludCA+IDI1NToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9jdGV0ICVkICg+IDI1NSkgbm90IHBlcm1pdHRlZCIgJSBvY3RldF9pbnQpCisgICAgICAgIHJldHVybiBvY3RldF9pbnQKKworICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCk6CisgICAgICAgICIiIlR1cm5zIGEgMzItYml0IGludGVnZXIgaW50byBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfaW50OiBBbiBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcgaW4gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAnLicuam9pbihtYXAoc3RyLCBpcF9pbnQudG9fYnl0ZXMoNCwgJ2JpZycpKSkKKworICAgIGRlZiBfaXNfdmFsaWRfbmV0bWFzayhzZWxmLCBuZXRtYXNrKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIG5ldG1hc2sgaXMgdmFsaWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG5ldG1hc2s6IEEgc3RyaW5nLCBlaXRoZXIgYSBwcmVmaXggb3IgZG90dGVkIGRlY2ltYWwKKyAgICAgICAgICAgICAgbmV0bWFzay4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBwcmVmaXggcmVwcmVzZW50cyBhIHZhbGlkIElQdjQKKyAgICAgICAgICAgIG5ldG1hc2suCisKKyAgICAgICAgIiIiCisgICAgICAgIG1hc2sgPSBuZXRtYXNrLnNwbGl0KCcuJykKKyAgICAgICAgaWYgbGVuKG1hc2spID09IDQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHggaW4gbWFzazoKKyAgICAgICAgICAgICAgICAgICAgaWYgaW50KHgpIG5vdCBpbiBzZWxmLl92YWxpZF9tYXNrX29jdGV0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBGb3VuZCBzb21ldGhpbmcgdGhhdCBpc24ndCBhbiBpbnRlZ2VyIG9yIGlzbid0IHZhbGlkCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBmb3IgaWR4LCB5IGluIGVudW1lcmF0ZShtYXNrKToKKyAgICAgICAgICAgICAgICBpZiBpZHggPiAwIGFuZCB5ID4gbWFza1tpZHggLSAxXToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXRtYXNrID0gaW50KG5ldG1hc2spCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAwIDw9IG5ldG1hc2sgPD0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgZGVmIF9pc19ob3N0bWFzayhzZWxmLCBpcF9zdHIpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBJUCBzdHJpbmcgaXMgYSBob3N0bWFzayAocmF0aGVyIHRoYW4gYSBuZXRtYXNrKS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIHBvdGVudGlhbCBob3N0bWFzay4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBJUCBzdHJpbmcgaXMgYSBob3N0bWFzay4KKworICAgICAgICAiIiIKKyAgICAgICAgYml0cyA9IGlwX3N0ci5zcGxpdCgnLicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhcnRzID0gW3ggZm9yIHggaW4gbWFwKGludCwgYml0cykgaWYgeCBpbiBzZWxmLl92YWxpZF9tYXNrX29jdGV0c10KKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSBsZW4oYml0cyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgcGFydHNbMF0gPCBwYXJ0c1stMV06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKworY2xhc3MgSVB2NEFkZHJlc3MoX0Jhc2VWNCwgX0Jhc2VBZGRyZXNzKToKKworICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NCBBZGRyZXNzZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisKKyAgICAgICAgIiIiCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVAKKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpID09IElQdjRBZGRyZXNzKDMyMjEyMjU5ODUpLgorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoaW50KElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKSkpID09CisgICAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGlwYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjQgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGFkZHJlc3MKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3BhY2tlZF9hZGRyZXNzKGFkZHJlc3MsIDQpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGludC5mcm9tX2J5dGVzKGFkZHJlc3MsICdiaWcnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHN0cmluZy4KKyAgICAgICAgYWRkcl9zdHIgPSBzdHIoYWRkcmVzcykKKyAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFja2VkKHNlbGYpOgorICAgICAgICAiIiJUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgYWRkcmVzcy4iIiIKKyAgICAgICAgcmV0dXJuIHY0X2ludF90b19wYWNrZWQoc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICByZXNlcnZlZCBJUHY0IE5ldHdvcmsgcmFuZ2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJlc2VydmVkX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiByZXNlcnZlZF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAxOTE4LgorCisgICAgICAgICIiIgorICAgICAgICBwcml2YXRlXzEwID0gSVB2NE5ldHdvcmsoJzEwLjAuMC4wLzgnKQorICAgICAgICBwcml2YXRlXzE3MiA9IElQdjROZXR3b3JrKCcxNzIuMTYuMC4wLzEyJykKKyAgICAgICAgcHJpdmF0ZV8xOTIgPSBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMTYnKQorICAgICAgICByZXR1cm4gKHNlbGYgaW4gcHJpdmF0ZV8xMCBvcgorICAgICAgICAgICAgICAgIHNlbGYgaW4gcHJpdmF0ZV8xNzIgb3IKKyAgICAgICAgICAgICAgICBzZWxmIGluIHByaXZhdGVfMTkyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIG11bHRpY2FzdC4KKyAgICAgICAgICAgIFNlZSBSRkMgMzE3MSBmb3IgZGV0YWlscy4KKworICAgICAgICAiIiIKKyAgICAgICAgbXVsdGljYXN0X25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjI0LjAuMC4wLzQnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBtdWx0aWNhc3RfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBpcyB0aGUgdW5zcGVjaWZpZWQgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgNTczNSAzLgorCisgICAgICAgICIiIgorICAgICAgICB1bnNwZWNpZmllZF9hZGRyZXNzID0gSVB2NEFkZHJlc3MoJzAuMC4wLjAnKQorICAgICAgICByZXR1cm4gc2VsZiA9PSB1bnNwZWNpZmllZF9hZGRyZXNzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBwZXIgUkZDIDMzMzAuCisKKyAgICAgICAgIiIiCisgICAgICAgIGxvb3BiYWNrX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBsb29wYmFja19uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGxpbmstbG9jYWwgcGVyIFJGQyAzOTI3LgorCisgICAgICAgICIiIgorICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpCisgICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisKKworY2xhc3MgSVB2NEludGVyZmFjZShJUHY0QWRkcmVzcyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGJ5dGVzLCBpbnQpKToKKyAgICAgICAgICAgIElQdjRBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY0TmV0d29yayhzZWxmLl9pcCkKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQorCisgICAgICAgIHNlbGYubmV0d29yayA9IElQdjROZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1GYWxzZSkKKyAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5uZXR3b3JrLl9wcmVmaXhsZW4KKworICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICBzZWxmLmhvc3RtYXNrID0gc2VsZi5uZXR3b3JrLmhvc3RtYXNrCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrLnByZWZpeGxlbikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2VxdWFsID0gSVB2NEFkZHJlc3MuX19lcV9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBub3QgYWRkcmVzc19lcXVhbCBvciBhZGRyZXNzX2VxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NfZXF1YWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA9PSBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgQW4gaW50ZXJmYWNlIHdpdGggYW4gYXNzb2NpYXRlZCBuZXR3b3JrIGlzIE5PVCB0aGUKKyAgICAgICAgICAgICMgc2FtZSBhcyBhbiB1bmFzc29jaWF0ZWQgYWRkcmVzcy4gVGhhdCdzIHdoeSB0aGUgaGFzaAorICAgICAgICAgICAgIyB0YWtlcyB0aGUgZXh0cmEgaW5mbyBpbnRvIGFjY291bnQuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2xlc3MgPSBJUHY0QWRkcmVzcy5fX2x0X18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIGFkZHJlc3NfbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrIDwgb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIFdlICpkbyogYWxsb3cgYWRkcmVzc2VzIGFuZCBpbnRlcmZhY2VzIHRvIGJlIHNvcnRlZC4gVGhlCisgICAgICAgICAgICAjIHVuYXNzb2NpYXRlZCBhZGRyZXNzIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuIGFsbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCBeIHNlbGYuX3ByZWZpeGxlbiBeIGludChzZWxmLm5ldHdvcmsubmV0d29ya19hZGRyZXNzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwKHNlbGYpOgorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3Moc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX25ldG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX2hvc3RtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RtYXNrKQorCisKK2NsYXNzIElQdjROZXR3b3JrKF9CYXNlVjQsIF9CYXNlTmV0d29yayk6CisKKyAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYW5kIG1hbmlwdWxhdGVzIDMyLWJpdCBJUHY0IG5ldHdvcmsgKyBhZGRyZXNzZXMuLgorCisgICAgQXR0cmlidXRlczogW2V4YW1wbGVzIGZvciBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI3JyldCisgICAgICAgIC5uZXR3b3JrX2FkZHJlc3M6IElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKQorICAgICAgICAuaG9zdG1hc2s6IElQdjRBZGRyZXNzKCcwLjAuMC4zMScpCisgICAgICAgIC5icm9hZGNhc3RfYWRkcmVzczogSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMzInKQorICAgICAgICAubmV0bWFzazogSVB2NEFkZHJlc3MoJzI1NS4yNTUuMjU1LjIyNCcpCisgICAgICAgIC5wcmVmaXhsZW46IDI3CisKKyAgICAiIiIKKyAgICAjIENsYXNzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGFkZHJlc3Mgb2JqZWN0cworICAgIF9hZGRyZXNzX2NsYXNzID0gSVB2NEFkZHJlc3MKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSk6CisKKyAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NCBuZXR3b3JrIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQIFsmIG5ldHdvcmtdLgorICAgICAgICAgICAgICAnMTkyLjAuMi4wLzI0JworICAgICAgICAgICAgICAnMTkyLjAuMi4wLzI1NS4yNTUuMjU1LjAnCisgICAgICAgICAgICAgICcxOTIuMC4wLjIvMC4wLjAuMjU1JworICAgICAgICAgICAgICBhcmUgYWxsIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBpbiBJUHY0LiBTaW1pbGFybHksCisgICAgICAgICAgICAgICcxOTIuMC4yLjEnCisgICAgICAgICAgICAgICcxOTIuMC4yLjEvMjU1LjI1NS4yNTUuMjU1JworICAgICAgICAgICAgICAnMTkyLjAuMi4xLzMyJworICAgICAgICAgICAgICBhcmUgYWxzbyBmdW5jdGlvbmFseSBlcXVpdmFsZW50LiBUaGF0IGlzIHRvIHNheSwgZmFpbGluZyB0bworICAgICAgICAgICAgICBwcm92aWRlIGEgc3VibmV0bWFzayB3aWxsIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIG1hc2sgb2YgLzMyLgorCisgICAgICAgICAgICAgIElmIHRoZSBtYXNrIChwb3J0aW9uIGFmdGVyIHRoZSAvIGluIHRoZSBhcmd1bWVudCkgaXMgZ2l2ZW4gaW4KKyAgICAgICAgICAgICAgZG90dGVkIHF1YWQgZm9ybSwgaXQgaXMgdHJlYXRlZCBhcyBhIG5ldG1hc2sgaWYgaXQgc3RhcnRzIHdpdGggYQorICAgICAgICAgICAgICBub24temVybyBmaWVsZCAoZS5nLiAvMjU1LjAuMC4wID09IC84KSBhbmQgYXMgYSBob3N0bWFzayBpZiBpdAorICAgICAgICAgICAgICBzdGFydHMgd2l0aCBhIHplcm8gZmllbGQgKGUuZy4gMC4yNTUuMjU1LjI1NSA9PSAvOCksIHdpdGggdGhlCisgICAgICAgICAgICAgIHNpbmdsZSBleGNlcHRpb24gb2YgYW4gYWxsLXplcm8gbWFzayB3aGljaCBpcyB0cmVhdGVkIGFzIGEKKyAgICAgICAgICAgICAgbmV0bWFzayA9PSAvMC4gSWYgbm8gbWFzayBpcyBnaXZlbiwgYSBkZWZhdWx0IG9mIC8zMiBpcyB1c2VkLgorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xJykgPT0gSVB2NE5ldHdvcmsoMzIyMTIyNTk4NSkKKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjRJbnRlcmZhY2UoaW50KElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMScpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEnKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBpcGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MuCisgICAgICAgICAgICBOZXRtYXNrVmFsdWVFcnJvcjogSWYgdGhlIG5ldG1hc2sgaXNuJ3QgdmFsaWQgZm9yCisgICAgICAgICAgICAgIGFuIElQdjQgYWRkcmVzcy4KKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHN0cmljdCBpcyBUcnVlIGFuZCBhIG5ldHdvcmsgYWRkcmVzcyBpcyBub3QKKyAgICAgICAgICAgICAgc3VwcGxpZWQuCisKKyAgICAgICAgIiIiCisKKyAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZS4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBwcmVmaXggc3RyaW5nLgorICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclswXSkpCisKKyAgICAgICAgaWYgbGVuKGFkZHIpID09IDI6CisgICAgICAgICAgICBtYXNrID0gYWRkclsxXS5zcGxpdCgnLicpCisKKyAgICAgICAgICAgIGlmIGxlbihtYXNrKSA9PSA0OgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBkb3R0ZWQgZGVjaW1hbCBuZXRtYXNrLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyWzFdKSkKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX2lzX2hvc3RtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzFdKSBeIHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yKCclciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFkZHJbMV0pCisKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9pcF9pbnQoaW50KHNlbGYubmV0bWFzaykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtLgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc192YWxpZF9uZXRtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcignJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhZGRyWzFdKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IGludChhZGRyWzFdKQorICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeCgKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pKQorCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIGlmIChJUHY0QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgaW50KHNlbGYubmV0bWFzaykpICE9CisgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGhhcyBob3N0IGJpdHMgc2V0JyAlIHNlbGYpCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykpCisKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IChzZWxmLl9tYXhfcHJlZml4bGVuIC0gMSk6CisgICAgICAgICAgICBzZWxmLmhvc3RzID0gc2VsZi5fX2l0ZXJfXworCisKK2NsYXNzIF9CYXNlVjY6CisKKyAgICAiIiJCYXNlIElQdjYgb2JqZWN0LgorCisgICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIGJ5IElQdjYgb2JqZWN0cyBpbiBib3RoIHNpbmdsZSBJUAorICAgIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MuCisKKyAgICAiIiIKKworICAgIF9BTExfT05FUyA9ICgyKipJUFY2TEVOR1RIKSAtIDEKKyAgICBfSEVYVEVUX0NPVU5UID0gOAorICAgIF9IRVhfRElHSVRTID0gZnJvemVuc2V0KCcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDYKKyAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjZMRU5HVEgKKworICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKHNlbGYsIGlwX3N0cik6CisgICAgICAgICIiIlR1cm4gYW4gSVB2NiBpcF9zdHIgaW50byBhbiBpbnRlZ2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgSVB2NiBpcF9zdHIuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGludCwgdGhlIElQdjYgYWRkcmVzcworCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBpZiBpcF9zdHIgaXNuJ3QgYSB2YWxpZCBJUHY2IEFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpcF9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcignQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHknKQorCisgICAgICAgIHBhcnRzID0gaXBfc3RyLnNwbGl0KCc6JykKKworICAgICAgICAjIEFuIElQdjYgYWRkcmVzcyBuZWVkcyBhdCBsZWFzdCAyIGNvbG9ucyAoMyBwYXJ0cykuCisgICAgICAgIF9taW5fcGFydHMgPSAzCisgICAgICAgIGlmIGxlbihwYXJ0cykgPCBfbWluX3BhcnRzOgorICAgICAgICAgICAgbXNnID0gIkF0IGxlYXN0ICVkIHBhcnRzIGV4cGVjdGVkIGluICVyIiAlIChfbWluX3BhcnRzLCBpcF9zdHIpCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCisKKyAgICAgICAgIyBJZiB0aGUgYWRkcmVzcyBoYXMgYW4gSVB2NC1zdHlsZSBzdWZmaXgsIGNvbnZlcnQgaXQgdG8gaGV4YWRlY2ltYWwuCisgICAgICAgIGlmICcuJyBpbiBwYXJ0c1stMV06CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXB2NF9pbnQgPSBJUHY0QWRkcmVzcyhwYXJ0cy5wb3AoKSkuX2lwCisgICAgICAgICAgICBleGNlcHQgQWRkcmVzc1ZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXgnICUgKChpcHY0X2ludCA+PiAxNikgJiAweEZGRkYpKQorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCcleCcgJSAoaXB2NF9pbnQgJiAweEZGRkYpKQorCisgICAgICAgICMgQW4gSVB2NiBhZGRyZXNzIGNhbid0IGhhdmUgbW9yZSB0aGFuIDggY29sb25zICg5IHBhcnRzKS4KKyAgICAgICAgIyBUaGUgZXh0cmEgY29sb24gY29tZXMgZnJvbSB1c2luZyB0aGUgIjo6IiBub3RhdGlvbiBmb3IgYSBzaW5nbGUKKyAgICAgICAgIyBsZWFkaW5nIG9yIHRyYWlsaW5nIHplcm8gcGFydC4KKyAgICAgICAgX21heF9wYXJ0cyA9IHNlbGYuX0hFWFRFVF9DT1VOVCArIDEKKyAgICAgICAgaWYgbGVuKHBhcnRzKSA+IF9tYXhfcGFydHM6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAlZCBjb2xvbnMgcGVybWl0dGVkIGluICVyIiAlIChfbWF4X3BhcnRzLTEsIGlwX3N0cikKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKKworICAgICAgICAjIERpc3JlZ2FyZGluZyB0aGUgZW5kcG9pbnRzLCBmaW5kICc6Oicgd2l0aCBub3RoaW5nIGluIGJldHdlZW4uCisgICAgICAgICMgVGhpcyBpbmRpY2F0ZXMgdGhhdCBhIHJ1biBvZiB6ZXJvZXMgaGFzIGJlZW4gc2tpcHBlZC4KKyAgICAgICAgc2tpcF9pbmRleCA9IE5vbmUKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKHBhcnRzKSAtIDEpOgorICAgICAgICAgICAgaWYgbm90IHBhcnRzW2ldOgorICAgICAgICAgICAgICAgIGlmIHNraXBfaW5kZXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgQ2FuJ3QgaGF2ZSBtb3JlIHRoYW4gb25lICc6OicKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gIkF0IG1vc3Qgb25lICc6OicgcGVybWl0dGVkIGluICVyIiAlIGlwX3N0cgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgc2tpcF9pbmRleCA9IGkKKworICAgICAgICAjIHBhcnRzX2hpIGlzIHRoZSBudW1iZXIgb2YgcGFydHMgdG8gY29weSBmcm9tIGFib3ZlL2JlZm9yZSB0aGUgJzo6JworICAgICAgICAjIHBhcnRzX2xvIGlzIHRoZSBudW1iZXIgb2YgcGFydHMgdG8gY29weSBmcm9tIGJlbG93L2FmdGVyIHRoZSAnOjonCisgICAgICAgIGlmIHNraXBfaW5kZXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIElmIHdlIGZvdW5kIGEgJzo6JywgdGhlbiBjaGVjayBpZiBpdCBhbHNvIGNvdmVycyB0aGUgZW5kcG9pbnRzLgorICAgICAgICAgICAgcGFydHNfaGkgPSBza2lwX2luZGV4CisgICAgICAgICAgICBwYXJ0c19sbyA9IGxlbihwYXJ0cykgLSBza2lwX2luZGV4IC0gMQorICAgICAgICAgICAgaWYgbm90IHBhcnRzWzBdOgorICAgICAgICAgICAgICAgIHBhcnRzX2hpIC09IDEKKyAgICAgICAgICAgICAgICBpZiBwYXJ0c19oaToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyBeOiByZXF1aXJlcyBeOjoKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1stMV06CisgICAgICAgICAgICAgICAgcGFydHNfbG8gLT0gMQorICAgICAgICAgICAgICAgIGlmIHBhcnRzX2xvOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAiVHJhaWxpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyA6JCByZXF1aXJlcyA6OiQKKyAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSBzZWxmLl9IRVhURVRfQ09VTlQgLSAocGFydHNfaGkgKyBwYXJ0c19sbykKKyAgICAgICAgICAgIGlmIHBhcnRzX3NraXBwZWQgPCAxOgorICAgICAgICAgICAgICAgIG1zZyA9ICJFeHBlY3RlZCBhdCBtb3N0ICVkIG90aGVyIHBhcnRzIHdpdGggJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULTEsIGlwX3N0cikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE90aGVyd2lzZSwgYWxsb2NhdGUgdGhlIGVudGlyZSBhZGRyZXNzIHRvIHBhcnRzX2hpLiAgVGhlCisgICAgICAgICAgICAjIGVuZHBvaW50cyBjb3VsZCBzdGlsbCBiZSBlbXB0eSwgYnV0IF9wYXJzZV9oZXh0ZXQoKSB3aWxsIGNoZWNrCisgICAgICAgICAgICAjIGZvciB0aGF0LgorICAgICAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSBzZWxmLl9IRVhURVRfQ09VTlQ6CisgICAgICAgICAgICAgICAgbXNnID0gIkV4YWN0bHkgJWQgcGFydHMgZXhwZWN0ZWQgd2l0aG91dCAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQsIGlwX3N0cikpCisgICAgICAgICAgICBpZiBub3QgcGFydHNbMF06CisgICAgICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIF46IHJlcXVpcmVzIF46OgorICAgICAgICAgICAgaWYgbm90IHBhcnRzWy0xXToKKyAgICAgICAgICAgICAgICBtc2cgPSAiVHJhaWxpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIDokIHJlcXVpcmVzIDo6JAorICAgICAgICAgICAgcGFydHNfaGkgPSBsZW4ocGFydHMpCisgICAgICAgICAgICBwYXJ0c19sbyA9IDAKKyAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSAwCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBOb3csIHBhcnNlIHRoZSBoZXh0ZXRzIGludG8gYSAxMjgtYml0IGludGVnZXIuCisgICAgICAgICAgICBpcF9pbnQgPSAwCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwYXJ0c19oaSk6CisgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgorICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICBpcF9pbnQgPDw9IDE2ICogcGFydHNfc2tpcHBlZAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLXBhcnRzX2xvLCAwKToKKyAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2CisgICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgIHJldHVybiBpcF9pbnQKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQorCisgICAgZGVmIF9wYXJzZV9oZXh0ZXQoc2VsZiwgaGV4dGV0X3N0cik6CisgICAgICAgICIiIkNvbnZlcnQgYW4gSVB2NiBoZXh0ZXQgc3RyaW5nIGludG8gYW4gaW50ZWdlci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaGV4dGV0X3N0cjogQSBzdHJpbmcsIHRoZSBudW1iZXIgdG8gcGFyc2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBoZXh0ZXQgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgaW5wdXQgaXNuJ3Qgc3RyaWN0bHkgYSBoZXggbnVtYmVyIGZyb20KKyAgICAgICAgICAgICAgWzAuLkZGRkZdLgorCisgICAgICAgICIiIgorICAgICAgICAjIFdoaXRlbGlzdCB0aGUgY2hhcmFjdGVycywgc2luY2UgaW50KCkgYWxsb3dzIGEgbG90IG9mIGJpemFycmUgc3R1ZmYuCisgICAgICAgIGlmIG5vdCBzZWxmLl9IRVhfRElHSVRTLmlzc3VwZXJzZXQoaGV4dGV0X3N0cik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIiAlIGhleHRldF9zdHIpCisgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgorICAgICAgICAjIGlzIGxpa2VseSB0byBiZSBtb3JlIGluZm9ybWF0aXZlIGZvciB0aGUgdXNlcgorICAgICAgICBpZiBsZW4oaGV4dGV0X3N0cikgPiA0OgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgNCBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgaGV4dGV0X3N0cikKKyAgICAgICAgIyBMZW5ndGggY2hlY2sgbWVhbnMgd2UgY2FuIHNraXAgY2hlY2tpbmcgdGhlIGludGVnZXIgdmFsdWUKKyAgICAgICAgcmV0dXJuIGludChoZXh0ZXRfc3RyLCAxNikKKworICAgIGRlZiBfY29tcHJlc3NfaGV4dGV0cyhzZWxmLCBoZXh0ZXRzKToKKyAgICAgICAgIiIiQ29tcHJlc3NlcyBhIGxpc3Qgb2YgaGV4dGV0cy4KKworICAgICAgICBDb21wcmVzc2VzIGEgbGlzdCBvZiBzdHJpbmdzLCByZXBsYWNpbmcgdGhlIGxvbmdlc3QgY29udGludW91cworICAgICAgICBzZXF1ZW5jZSBvZiAiMCIgaW4gdGhlIGxpc3Qgd2l0aCAiIiBhbmQgYWRkaW5nIGVtcHR5IHN0cmluZ3MgYXQKKyAgICAgICAgdGhlIGJlZ2lubmluZyBvciBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3VjaCB0aGF0IHN1YnNlcXVlbnRseQorICAgICAgICBjYWxsaW5nICI6Ii5qb2luKGhleHRldHMpIHdpbGwgcHJvZHVjZSB0aGUgY29tcHJlc3NlZCB2ZXJzaW9uIG9mCisgICAgICAgIHRoZSBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGhleHRldHM6IEEgbGlzdCBvZiBzdHJpbmdzLCB0aGUgaGV4dGV0cyB0byBjb21wcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBsaXN0IG9mIHN0cmluZ3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGJlc3RfZG91YmxlY29sb25fc3RhcnQgPSAtMQorICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2xlbiA9IDAKKyAgICAgICAgZG91YmxlY29sb25fc3RhcnQgPSAtMQorICAgICAgICBkb3VibGVjb2xvbl9sZW4gPSAwCisgICAgICAgIGZvciBpbmRleCwgaGV4dGV0IGluIGVudW1lcmF0ZShoZXh0ZXRzKToKKyAgICAgICAgICAgIGlmIGhleHRldCA9PSAnMCc6CisgICAgICAgICAgICAgICAgZG91YmxlY29sb25fbGVuICs9IDEKKyAgICAgICAgICAgICAgICBpZiBkb3VibGVjb2xvbl9zdGFydCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBvZiBhIHNlcXVlbmNlIG9mIHplcm9zLgorICAgICAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IGluZGV4CisgICAgICAgICAgICAgICAgaWYgZG91YmxlY29sb25fbGVuID4gYmVzdF9kb3VibGVjb2xvbl9sZW46CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSBvZiB6ZXJvcyBzbyBmYXIuCisgICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuID0gZG91YmxlY29sb25fbGVuCisgICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fc3RhcnQgPSBkb3VibGVjb2xvbl9zdGFydAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9sZW4gPSAwCisgICAgICAgICAgICAgICAgZG91YmxlY29sb25fc3RhcnQgPSAtMQorCisgICAgICAgIGlmIGJlc3RfZG91YmxlY29sb25fbGVuID4gMToKKyAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fZW5kID0gKGJlc3RfZG91YmxlY29sb25fc3RhcnQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9sZW4pCisgICAgICAgICAgICAjIEZvciB6ZXJvcyBhdCB0aGUgZW5kIG9mIHRoZSBhZGRyZXNzLgorICAgICAgICAgICAgaWYgYmVzdF9kb3VibGVjb2xvbl9lbmQgPT0gbGVuKGhleHRldHMpOgorICAgICAgICAgICAgICAgIGhleHRldHMgKz0gWycnXQorICAgICAgICAgICAgaGV4dGV0c1tiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0OmJlc3RfZG91YmxlY29sb25fZW5kXSA9IFsnJ10KKyAgICAgICAgICAgICMgRm9yIHplcm9zIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFkZHJlc3MuCisgICAgICAgICAgICBpZiBiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ID09IDA6CisgICAgICAgICAgICAgICAgaGV4dGV0cyA9IFsnJ10gKyBoZXh0ZXRzCisKKyAgICAgICAgcmV0dXJuIGhleHRldHMKKworICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludD1Ob25lKToKKyAgICAgICAgIiIiVHVybnMgYSAxMjgtYml0IGludGVnZXIgaW50byBoZXhhZGVjaW1hbCBub3RhdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfaW50OiBBbiBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBzdHJpbmcsIHRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWRkcmVzcy4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBUaGUgYWRkcmVzcyBpcyBiaWdnZXIgdGhhbiAxMjggYml0cyBvZiBhbGwgb25lcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaXBfaW50IGlzIE5vbmU6CisgICAgICAgICAgICBpcF9pbnQgPSBpbnQoc2VsZi5faXApCisKKyAgICAgICAgaWYgaXBfaW50ID4gc2VsZi5fQUxMX09ORVM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJUHY2IGFkZHJlc3MgaXMgdG9vIGxhcmdlJykKKworICAgICAgICBoZXhfc3RyID0gJyUwMzJ4JyAlIGlwX2ludAorICAgICAgICBoZXh0ZXRzID0gWycleCcgJSBpbnQoaGV4X3N0clt4OngrNF0sIDE2KSBmb3IgeCBpbiByYW5nZSgwLCAzMiwgNCldCisKKyAgICAgICAgaGV4dGV0cyA9IHNlbGYuX2NvbXByZXNzX2hleHRldHMoaGV4dGV0cykKKyAgICAgICAgcmV0dXJuICc6Jy5qb2luKGhleHRldHMpCisKKyAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKKyAgICAgICAgIiIiRXhwYW5kIGEgc2hvcnRlbmVkIElQdjYgYWRkcmVzcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQdjYgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBzdHJpbmcsIHRoZSBleHBhbmRlZCBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZiwgSVB2Nk5ldHdvcmspOgorICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZiwgSVB2NkludGVyZmFjZSk6CisgICAgICAgICAgICBpcF9zdHIgPSBzdHIoc2VsZi5pcCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlwX3N0ciA9IHN0cihzZWxmKQorCisgICAgICAgIGlwX2ludCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhpcF9zdHIpCisgICAgICAgIGhleF9zdHIgPSAnJTAzMngnICUgaXBfaW50CisgICAgICAgIHBhcnRzID0gW2hleF9zdHJbeDp4KzRdIGZvciB4IGluIHJhbmdlKDAsIDMyLCA0KV0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCAoX0Jhc2VOZXR3b3JrLCBJUHY2SW50ZXJmYWNlKSk6CisgICAgICAgICAgICByZXR1cm4gJyVzLyVkJyAlICgnOicuam9pbihwYXJ0cyksIHNlbGYuX3ByZWZpeGxlbikKKyAgICAgICAgcmV0dXJuICc6Jy5qb2luKHBhcnRzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworCitjbGFzcyBJUHY2QWRkcmVzcyhfQmFzZVY2LCBfQmFzZUFkZHJlc3MpOgorCisgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY2IEFkZHJlc3Nlcy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NiBhZGRyZXNzIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykgPT0KKyAgICAgICAgICAgICAgICBJUHY2QWRkcmVzcyg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjZBZGRyZXNzKGludChJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIF9CYXNlQWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZVY2Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19pbnRfYWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5faXAgPSBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19wYWNrZWRfYWRkcmVzcyhhZGRyZXNzLCAxNikKKyAgICAgICAgICAgIHNlbGYuX2lwID0gaW50LmZyb21fYnl0ZXMoYWRkcmVzcywgJ2JpZycpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgorICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYWNrZWQoc2VsZik6CisgICAgICAgICIiIlRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhZGRyZXNzLiIiIgorICAgICAgICByZXR1cm4gdjZfaW50X3RvX3BhY2tlZChzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIG11bHRpY2FzdCBhZGRyZXNzLgorICAgICAgICAgICAgU2VlIFJGQyAyMzczIDIuNyBmb3IgZGV0YWlscy4KKworICAgICAgICAiIiIKKyAgICAgICAgbXVsdGljYXN0X25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmYwMDo6LzgnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBtdWx0aWNhc3RfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIG9uZSBvZiB0aGUKKyAgICAgICAgICAgIHJlc2VydmVkIElQdjYgTmV0d29yayByYW5nZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJlc2VydmVkX25ldHdvcmtzID0gW0lQdjZOZXR3b3JrKCc6Oi84JyksIElQdjZOZXR3b3JrKCcxMDA6Oi84JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDA6Oi83JyksIElQdjZOZXR3b3JrKCc0MDA6Oi82JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc4MDA6Oi81JyksIElQdjZOZXR3b3JrKCcxMDAwOjovNCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnNDAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJzYwMDA6Oi8zJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc4MDAwOjovMycpLCBJUHY2TmV0d29yaygnQTAwMDo6LzMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0MwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdFMDAwOjovNCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnRjAwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJ0Y4MDA6Oi82JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdGRTAwOjovOScpXQorCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiB4IGZvciB4IGluIHJlc2VydmVkX25ldHdvcmtzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQyOTEuCisKKyAgICAgICAgIiIiCisgICAgICAgIGxpbmtsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfc2l0ZV9sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3Igc2l0ZS1sb2NhbC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHNpdGUtbG9jYWwgYWRkcmVzcyBzcGFjZSBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IFJGQyAzODc5LgorICAgICAgICBVc2UgaXNfcHJpdmF0ZSB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUgc3BhY2Ugb2YgdW5pcXVlIGxvY2FsCisgICAgICAgIGFkZHJlc3NlcyBhcyBkZWZpbmVkIGJ5IFJGQyA0MTkzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAzNTEzIDIuNS42LgorCisgICAgICAgICIiIgorICAgICAgICBzaXRlbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZWMwOjovMTAnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBzaXRlbG9jYWxfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3ByaXZhdGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHJpdmF0ZSBuZXR3b3Jrcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDE5My4KKworICAgICAgICAiIiIKKyAgICAgICAgcHJpdmF0ZV9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZjMDA6Oi83JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gcHJpdmF0ZV9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIGlzIHRoZSB1bnNwZWNpZmllZCBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4yLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDEKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcHY0X21hcHBlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBJUHY0IG1hcHBlZCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBJZiB0aGUgSVB2NiBhZGRyZXNzIGlzIGEgdjQgbWFwcGVkIGFkZHJlc3MsIHJldHVybiB0aGUKKyAgICAgICAgICAgIElQdjQgbWFwcGVkIGFkZHJlc3MuIFJldHVybiBOb25lIG90aGVyd2lzZS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgKHNlbGYuX2lwID4+IDMyKSAhPSAweEZGRkY6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3Moc2VsZi5faXAgJiAweEZGRkZGRkZGKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHRlcmVkbyhzZWxmKToKKyAgICAgICAgIiIiVHVwbGUgb2YgZW1iZWRkZWQgdGVyZWRvIElQcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVHVwbGUgb2YgdGhlIChzZXJ2ZXIsIGNsaWVudCkgSVBzIG9yIE5vbmUgaWYgdGhlIGFkZHJlc3MKKyAgICAgICAgICAgIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgdGVyZWRvIGFkZHJlc3MgKGRvZXNuJ3Qgc3RhcnQgd2l0aAorICAgICAgICAgICAgMjAwMTo6LzMyKQorCisgICAgICAgICIiIgorICAgICAgICBpZiAoc2VsZi5faXAgPj4gOTYpICE9IDB4MjAwMTAwMDA6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gKElQdjRBZGRyZXNzKChzZWxmLl9pcCA+PiA2NCkgJiAweEZGRkZGRkZGKSwKKyAgICAgICAgICAgICAgICBJUHY0QWRkcmVzcyh+c2VsZi5faXAgJiAweEZGRkZGRkZGKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzaXh0b2ZvdXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgSVB2NCA2dG80IGVtYmVkZGVkIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBJUHY0IDZ0bzQtZW1iZWRkZWQgYWRkcmVzcyBpZiBwcmVzZW50IG9yIE5vbmUgaWYgdGhlCisgICAgICAgICAgICBhZGRyZXNzIGRvZXNuJ3QgYXBwZWFyIHRvIGNvbnRhaW4gYSA2dG80IGVtYmVkZGVkIGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChzZWxmLl9pcCA+PiAxMTIpICE9IDB4MjAwMjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcygoc2VsZi5faXAgPj4gODApICYgMHhGRkZGRkZGRikKKworCitjbGFzcyBJUHY2SW50ZXJmYWNlKElQdjZBZGRyZXNzKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCAoYnl0ZXMsIGludCkpOgorICAgICAgICAgICAgSVB2NkFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYubmV0d29yayA9IElQdjZOZXR3b3JrKHNlbGYuX2lwKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCisgICAgICAgIHNlbGYubmV0d29yayA9IElQdjZOZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1GYWxzZSkKKyAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5uZXR3b3JrLl9wcmVmaXhsZW4KKyAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29yay5wcmVmaXhsZW4pCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19lcXVhbCA9IElQdjZBZGRyZXNzLl9fZXFfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgbm90IGFkZHJlc3NfZXF1YWwgb3IgYWRkcmVzc19lcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzX2VxdWFsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPT0gb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIEFuIGludGVyZmFjZSB3aXRoIGFuIGFzc29jaWF0ZWQgbmV0d29yayBpcyBOT1QgdGhlCisgICAgICAgICAgICAjIHNhbWUgYXMgYW4gdW5hc3NvY2lhdGVkIGFkZHJlc3MuIFRoYXQncyB3aHkgdGhlIGhhc2gKKyAgICAgICAgICAgICMgdGFrZXMgdGhlIGV4dHJhIGluZm8gaW50byBhY2NvdW50LgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19sZXNzID0gSVB2NkFkZHJlc3MuX19sdF9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBhZGRyZXNzX2xlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA8IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBXZSAqZG8qIGFsbG93IGFkZHJlc3NlcyBhbmQgaW50ZXJmYWNlcyB0byBiZSBzb3J0ZWQuIFRoZQorICAgICAgICAgICAgIyB1bmFzc29jaWF0ZWQgYWRkcmVzcyBpcyBjb25zaWRlcmVkIGxlc3MgdGhhbiBhbGwgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgXiBzZWxmLl9wcmVmaXhsZW4gXiBpbnQoc2VsZi5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcChzZWxmKToKKyAgICAgICAgcmV0dXJuIElQdjZBZGRyZXNzKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9ob3N0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDAgYW5kIHNlbGYubmV0d29yay5pc191bnNwZWNpZmllZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMSBhbmQgc2VsZi5uZXR3b3JrLmlzX2xvb3BiYWNrCisKKworY2xhc3MgSVB2Nk5ldHdvcmsoX0Jhc2VWNiwgX0Jhc2VOZXR3b3JrKToKKworICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbmQgbWFuaXB1bGF0ZXMgMTI4LWJpdCBJUHY2IG5ldHdvcmtzLgorCisgICAgQXR0cmlidXRlczogW2V4YW1wbGVzIGZvciBJUHY2KCcyMDAxOmRiODo6MTAwMC8xMjQnKV0KKyAgICAgICAgLm5ldHdvcmtfYWRkcmVzczogSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKKyAgICAgICAgLmhvc3RtYXNrOiBJUHY2QWRkcmVzcygnOjpmJykKKyAgICAgICAgLmJyb2FkY2FzdF9hZGRyZXNzOiBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMGYnKQorICAgICAgICAubmV0bWFzazogSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmMCcpCisgICAgICAgIC5wcmVmaXhsZW46IDEyNAorCisgICAgIiIiCisKKyAgICAjIENsYXNzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGFkZHJlc3Mgb2JqZWN0cworICAgIF9hZGRyZXNzX2NsYXNzID0gSVB2NkFkZHJlc3MKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSk6CisgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgTmV0d29yayBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUHY2IG5ldHdvcmsgb3IgdGhlCisgICAgICAgICAgICAgIElQIGFuZCBwcmVmaXgvbmV0bWFzay4KKyAgICAgICAgICAgICAgJzIwMDE6ZGI4OjovMTI4JworICAgICAgICAgICAgICAnMjAwMTpkYjg6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAvMTI4JworICAgICAgICAgICAgICAnMjAwMTpkYjg6OicKKyAgICAgICAgICAgICAgYXJlIGFsbCBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgaW4gSVB2Ni4gIFRoYXQgaXMgdG8gc2F5LAorICAgICAgICAgICAgICBmYWlsaW5nIHRvIHByb3ZpZGUgYSBzdWJuZXRtYXNrIHdpbGwgY3JlYXRlIGFuIG9iamVjdCB3aXRoCisgICAgICAgICAgICAgIGEgbWFzayBvZiAvMTI4LgorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OicpID09CisgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjApCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY2TmV0d29yayhpbnQoSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjonKSkpID09CisgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjonKQorCisgICAgICAgICAgICBzdHJpY3Q6IEEgYm9vbGVhbi4gSWYgdHJ1ZSwgZW5zdXJlIHRoYXQgd2UgaGF2ZSBiZWVuIHBhc3NlZAorICAgICAgICAgICAgICBBIHRydWUgbmV0d29yayBhZGRyZXNzLCBlZywgMjAwMTpkYjg6OjEwMDAvMTI0IGFuZCBub3QgYW4KKyAgICAgICAgICAgICAgSVAgYWRkcmVzcyBvbiBhIG5ldHdvcmssIGVnLCAyMDAxOmRiODo6MS8xMjQuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCisgICAgICAgICAgICBOZXRtYXNrVmFsdWVFcnJvcjogSWYgdGhlIG5ldG1hc2sgaXNuJ3QgdmFsaWQgZm9yCisgICAgICAgICAgICAgIGFuIElQdjYgYWRkcmVzcy4KKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHN0cmljdCB3YXMgVHJ1ZSBhbmQgYSBuZXR3b3JrIGFkZHJlc3Mgd2FzIG5vdAorICAgICAgICAgICAgICBzdXBwbGllZC4KKworICAgICAgICAiIiIKKyAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgcHJlZml4IHN0cmluZy4KKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclswXSkpCisKKyAgICAgICAgaWYgbGVuKGFkZHIpID09IDI6CisgICAgICAgICAgICBpZiBzZWxmLl9pc192YWxpZF9uZXRtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IGludChhZGRyWzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcignJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhZGRyWzFdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLl9wcmVmaXhsZW4pKQorICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICBpZiAoSVB2NkFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIGludChzZWxmLm5ldG1hc2spKSAhPQorICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spKQorCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSAoc2VsZi5fbWF4X3ByZWZpeGxlbiAtIDEpOgorICAgICAgICAgICAgc2VsZi5ob3N0cyA9IHNlbGYuX19pdGVyX18KKworICAgIGRlZiBfaXNfdmFsaWRfbmV0bWFzayhzZWxmLCBwcmVmaXhsZW4pOgorICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgbmV0bWFzay9wcmVmaXhsZW4gaXMgdmFsaWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbjogQSBzdHJpbmcsIHRoZSBuZXRtYXNrIGluIHByZWZpeCBsZW5ndGggZm9ybWF0LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIHByZWZpeCByZXByZXNlbnRzIGEgdmFsaWQgSVB2NgorICAgICAgICAgICAgbmV0bWFzay4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJlZml4bGVuID0gaW50KHByZWZpeGxlbikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIDAgPD0gcHJlZml4bGVuIDw9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19zaXRlX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBzaXRlLWxvY2FsLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgUkZDIDM4NzkuCisgICAgICAgIFVzZSBpc19wcml2YXRlIHRvIHRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGluIHRoZSBzcGFjZSBvZiB1bmlxdWUgbG9jYWwKKyAgICAgICAgYWRkcmVzc2VzIGFzIGRlZmluZWQgYnkgUkZDIDQxOTMuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDM1MTMgMi41LjYuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3NpdGVfbG9jYWwpCmRpZmYgLS1naXQgYS9MaWIvanNvbi9kZWNvZGVyLnB5IGIvTGliL2pzb24vZGVjb2Rlci5weQppbmRleCBkYzExNTViLi4wN2ZkNjk2IDEwMDY0NAotLS0gYS9MaWIvanNvbi9kZWNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2RlY29kZXIucHkKQEAgLTEyMSw4ICsxMjEsNyBAQAogICAgICAgICAgICAgICAgIG1zZyA9ICJJbnZhbGlkIFxcdVhYWFggZXNjYXBlIgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKICAgICAgICAgICAgIHVuaSA9IGludChlc2MsIDE2KQotICAgICAgICAgICAgIyBDaGVjayBmb3Igc3Vycm9nYXRlIHBhaXIgb24gVUNTLTQgc3lzdGVtcwotICAgICAgICAgICAgaWYgMHhkODAwIDw9IHVuaSA8PSAweGRiZmYgYW5kIHN5cy5tYXh1bmljb2RlID4gNjU1MzU6CisgICAgICAgICAgICBpZiAweGQ4MDAgPD0gdW5pIDw9IDB4ZGJmZjoKICAgICAgICAgICAgICAgICBtc2cgPSAiSW52YWxpZCBcXHVYWFhYXFx1WFhYWCBzdXJyb2dhdGUgcGFpciIKICAgICAgICAgICAgICAgICBpZiBub3Qgc1tlbmQgKyA1OmVuZCArIDddID09ICdcXHUnOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIGVuZCkpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9fX21haW5fXy5weSBiL0xpYi9saWIydG8zL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNjg4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvbGliMnRvMy9fX21haW5fXy5weQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBzeXMKK2Zyb20gLm1haW4gaW1wb3J0IG1haW4KKworc3lzLmV4aXQobWFpbigibGliMnRvMy5maXhlcyIpKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weSBiL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkKaW5kZXggYWZjMDQ2Ny4uYjE3NjA1NiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5CkBAIC0yNyw3ICsyNyw2IEBACiAgICAgcGF0dGVybl90cmVlID0gTm9uZSAjIFRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdHRlcm4KICAgICBvcHRpb25zID0gTm9uZSAgIyBPcHRpb25zIG9iamVjdCBwYXNzZWQgdG8gaW5pdGlhbGl6ZXIKICAgICBmaWxlbmFtZSA9IE5vbmUgIyBUaGUgZmlsZW5hbWUgKHNldCBieSBzZXRfZmlsZW5hbWUpCi0gICAgbG9nZ2VyID0gTm9uZSAgICMgQSBsb2dnZXIgKHNldCBieSBzZXRfZmlsZW5hbWUpCiAgICAgbnVtYmVycyA9IGl0ZXJ0b29scy5jb3VudCgxKSAjIEZvciBuZXdfbmFtZSgpCiAgICAgdXNlZF9uYW1lcyA9IHNldCgpICMgQSBzZXQgb2YgYWxsIHVzZWQgTkFNRXMKICAgICBvcmRlciA9ICJwb3N0IiAjIERvZXMgdGhlIGZpeGVyIHByZWZlciBwcmUtIG9yIHBvc3Qtb3JkZXIgdHJhdmVyc2FsCkBAIC03MCwxMiArNjksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF90cmVlPVRydWUpCiAKICAgICBkZWYgc2V0X2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgIiIiU2V0IHRoZSBmaWxlbmFtZSwgYW5kIGEgbG9nZ2VyIGRlcml2ZWQgZnJvbSBpdC4KKyAgICAgICAgIiIiU2V0IHRoZSBmaWxlbmFtZS4KIAogICAgICAgICBUaGUgbWFpbiByZWZhY3RvcmluZyB0b29sIHNob3VsZCBjYWxsIHRoaXMuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihmaWxlbmFtZSkKIAogICAgIGRlZiBtYXRjaChzZWxmLCBub2RlKToKICAgICAgICAgIiIiUmV0dXJucyBtYXRjaCBmb3IgYSBnaXZlbiBwYXJzZSB0cmVlIG5vZGUuCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9weXRyZWUucHkgYi9MaWIvbGliMnRvMy9weXRyZWUucHkKaW5kZXggZmE0OTQyZjMuLjE3Y2JmMGEgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3B5dHJlZS5weQorKysgYi9MaWIvbGliMnRvMy9weXRyZWUucHkKQEAgLTEwOSwyNiArMTA5LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBzZXRfcHJlZml4KHNlbGYsIHByZWZpeCk6Ci0gICAgICAgICIiIgotICAgICAgICBTZXQgdGhlIHByZWZpeCBmb3IgdGhlIG5vZGUgKHNlZSBMZWFmIGNsYXNzKS4KLQotICAgICAgICBERVBSRUNBVEVEOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSBkaXJlY3RseS4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmdzLndhcm4oInNldF9wcmVmaXgoKSBpcyBkZXByZWNhdGVkOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHNlbGYucHJlZml4ID0gcHJlZml4Ci0KLSAgICBkZWYgZ2V0X3ByZWZpeChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0aGUgcHJlZml4IGZvciB0aGUgbm9kZSAoc2VlIExlYWYgY2xhc3MpLgotCi0gICAgICAgIERFUFJFQ0FURUQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IGRpcmVjdGx5LgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZ3Mud2FybigiZ2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgcmV0dXJuIHNlbGYucHJlZml4Ci0KICAgICBkZWYgcmVwbGFjZShzZWxmLCBuZXcpOgogICAgICAgICAiIiJSZXBsYWNlIHRoaXMgbm9kZSB3aXRoIGEgbmV3IG9uZSBpbiB0aGUgcGFyZW50LiIiIgogICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmUsIHN0cihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQppbmRleCAzOGZiOGVkLi4yMDFlMTkzIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQorKysgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQpAQCAtNTY2LDcgKzU2Niw3IEBACiAgICAgICAgIGJsb2NrX2xpbmVubyA9IE5vbmUKICAgICAgICAgaW5kZW50ID0gTm9uZQogICAgICAgICBsaW5lbm8gPSAwCi0gICAgICAgIGZvciBsaW5lIGluIGlucHV0LnNwbGl0bGluZXMoVHJ1ZSk6CisgICAgICAgIGZvciBsaW5lIGluIGlucHV0LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSk6CiAgICAgICAgICAgICBsaW5lbm8gKz0gMQogICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKHNlbGYuUFMxKToKICAgICAgICAgICAgICAgICBpZiBibG9jayBpcyBub3QgTm9uZToKQEAgLTYxMCw3ICs2MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgZXJyLl9fY2xhc3NfXy5fX25hbWVfXywgZXJyKQogICAgICAgICAgICAgcmV0dXJuIGJsb2NrCiAgICAgICAgIGlmIHNlbGYucmVmYWN0b3JfdHJlZSh0cmVlLCBmaWxlbmFtZSk6Ci0gICAgICAgICAgICBuZXcgPSBzdHIodHJlZSkuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgbmV3ID0gc3RyKHRyZWUpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgICMgVW5kbyB0aGUgYWRqdXN0bWVudCBvZiB0aGUgbGluZSBudW1iZXJzIGluIHdyYXBfdG9rcygpIGJlbG93LgogICAgICAgICAgICAgY2xpcHBlZCwgbmV3ID0gbmV3WzpsaW5lbm8tMV0sIG5ld1tsaW5lbm8tMTpdCiAgICAgICAgICAgICBhc3NlcnQgY2xpcHBlZCA9PSBbIlxuIl0gKiAobGluZW5vLTEpLCBjbGlwcGVkCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CmluZGV4IGFjN2Q5MDAuLmEyYWIxZjMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CkBAIC0zMSwyMyArMzEsNiBAQAogCiAgICAgIiIiVW5pdCB0ZXN0cyBmb3Igbm9kZXMgKEJhc2UsIExlYWYsIE5vZGUpLiIiIgogCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMiw2KToKLSAgICAgICAgIyB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyBpcyBuZXcgaW4gMi42LgotICAgICAgICBkZWYgdGVzdF9kZXByZWNhdGVkX3ByZWZpeF9tZXRob2RzKHNlbGYpOgotICAgICAgICAgICAgbCA9IHB5dHJlZS5MZWFmKDEwMCwgImZvbyIpCi0gICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobC5nZXRfcHJlZml4KCksICIiKQotICAgICAgICAgICAgICAgIGwuc2V0X3ByZWZpeCgiaGkiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLnByZWZpeCwgImhpIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAyKQotICAgICAgICAgICAgZm9yIHdhcm5pbmcgaW4gdzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FybmluZy5jYXRlZ29yeSBpcyBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3WzBdLm1lc3NhZ2UpLCAiZ2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7ICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSB0aGUgcHJlZml4IHByb3BlcnR5IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdbMV0ubWVzc2FnZSksICJzZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHRoZSBwcmVmaXggcHJvcGVydHkiKQotCiAgICAgZGVmIHRlc3RfaW5zdGFudGlhdGVfYmFzZShzZWxmKToKICAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICAgIyBUZXN0IHRoYXQgaW5zdGFudGlhdGluZyBCYXNlKCkgcmFpc2VzIGFuIEFzc2VydGlvbkVycm9yCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDQxOTFiMjIuLmU3OTAxOGYgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0zNiwxNSArMzYsOSBAQAogICAgICAgICAgICAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywgJ2xhc3RSZXNvcnQnXQogCiB0cnk6Ci0gICAgaW1wb3J0IGNvZGVjcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNvZGVjcyA9IE5vbmUKLQotdHJ5OgotICAgIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0aHJlYWQgPSBOb25lCitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCisgICAgdGhyZWFkaW5nID0gTm9uZQogCiBfX2F1dGhvcl9fICA9ICJWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAcmVkLWRvdmUuY29tPiIKIF9fc3RhdHVzX18gID0gInByb2R1Y3Rpb24iCkBAIC02NSwxNiArNTksMTYgQEAKICAgICBfc3JjZmlsZSA9IF9fZmlsZV9fCiBfc3JjZmlsZSA9IG9zLnBhdGgubm9ybWNhc2UoX3NyY2ZpbGUpCiAKLSMgbmV4dCBiaXQgZmlsY2hlZCBmcm9tIDEuNS4yJ3MgaW5zcGVjdC5weQotZGVmIGN1cnJlbnRmcmFtZSgpOgotICAgICIiIlJldHVybiB0aGUgZnJhbWUgb2JqZWN0IGZvciB0aGUgY2FsbGVyJ3Mgc3RhY2sgZnJhbWUuIiIiCi0gICAgdHJ5OgotICAgICAgICByYWlzZSBFeGNlcHRpb24KLSAgICBleGNlcHQ6Ci0gICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKIAotaWYgaGFzYXR0cihzeXMsICdfZ2V0ZnJhbWUnKTogY3VycmVudGZyYW1lID0gbGFtYmRhOiBzeXMuX2dldGZyYW1lKDMpCi0jIGRvbmUgZmlsY2hpbmcKK2lmIGhhc2F0dHIoc3lzLCAnX2dldGZyYW1lJyk6CisgICAgY3VycmVudGZyYW1lID0gbGFtYmRhOiBzeXMuX2dldGZyYW1lKDMpCitlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgorICAgIGRlZiBjdXJyZW50ZnJhbWUoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmcmFtZSBvYmplY3QgZm9yIHRoZSBjYWxsZXIncyBzdGFjayBmcmFtZS4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKIAogIyBfc3JjZmlsZSBpcyBvbmx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBzeXMuX2dldGZyYW1lKCkuCiAjIFRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiwgc2V0IF9zcmNmaWxlCkBAIC05MiwyMiArODYsMjIgQEAKICNyYWlzZUV4Y2VwdGlvbnMgaXMgdXNlZCB0byBzZWUgaWYgZXhjZXB0aW9ucyBkdXJpbmcgaGFuZGxpbmcgc2hvdWxkIGJlCiAjcHJvcGFnYXRlZAogIwotcmFpc2VFeGNlcHRpb25zID0gMQorcmFpc2VFeGNlcHRpb25zID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IHRocmVhZGluZyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiAjCi1sb2dUaHJlYWRzID0gMQorbG9nVGhyZWFkcyA9IFRydWUKIAogIwogIyBJZiB5b3UgZG9uJ3Qgd2FudCBtdWx0aXByb2Nlc3NpbmcgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwogIwotbG9nTXVsdGlwcm9jZXNzaW5nID0gMQorbG9nTXVsdGlwcm9jZXNzaW5nID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IHByb2Nlc3MgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwogIwotbG9nUHJvY2Vzc2VzID0gMQorbG9nUHJvY2Vzc2VzID0gVHJ1ZQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjICAgTGV2ZWwgcmVsYXRlZCBzdHVmZgpAQCAtMTk3LDkgKzE5MSw5IEBACiAjdGhlIGxvY2sgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWNxdWlyZWQgLSBzbyB3ZSBuZWVkIGFuIFJMb2NrLgogI1RoZSBzYW1lIGFyZ3VtZW50IGFwcGxpZXMgdG8gTG9nZ2VycyBhbmQgTWFuYWdlci5sb2dnZXJEaWN0LgogIwotaWYgdGhyZWFkOgoraWYgdGhyZWFkaW5nOgogICAgIF9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKLWVsc2U6CitlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgIF9sb2NrID0gTm9uZQogCiAKQEAgLTI1Miw3ICsyNDYsNyBAQAogICAgICAgICAjIGR1cmluZyBmb3JtYXR0aW5nLCB3ZSB0ZXN0IHRvIHNlZSBpZiB0aGUgYXJnIGlzIHByZXNlbnQgdXNpbmcKICAgICAgICAgIyAnaWYgc2VsZi5hcmdzOicuIElmIHRoZSBldmVudCBiZWluZyBsb2dnZWQgaXMgZS5nLiAnVmFsdWUgaXMgJWQnCiAgICAgICAgICMgYW5kIGlmIHRoZSBwYXNzZWQgYXJnIGZhaWxzICdpZiBzZWxmLmFyZ3M6JyB0aGVuIG5vIGZvcm1hdHRpbmcKLSAgICAgICAgIyBpcyBkb25lLiBGb3IgZXhhbXBsZSwgbG9nZ2VyLndhcm4oJ1ZhbHVlIGlzICVkJywgMCkgd291bGQgbG9nCisgICAgICAgICMgaXMgZG9uZS4gRm9yIGV4YW1wbGUsIGxvZ2dlci53YXJuaW5nKCdWYWx1ZSBpcyAlZCcsIDApIHdvdWxkIGxvZwogICAgICAgICAjICdWYWx1ZSBpcyAlZCcgaW5zdGVhZCBvZiAnVmFsdWUgaXMgMCcuCiAgICAgICAgICMgRm9yIHRoZSB1c2UgY2FzZSBvZiBwYXNzaW5nIGEgZGljdGlvbmFyeSwgdGhpcyBzaG91bGQgbm90IGJlIGEKICAgICAgICAgIyBwcm9ibGVtLgpAQCAtMjc2LDEzICsyNzAsMTMgQEAKICAgICAgICAgc2VsZi5jcmVhdGVkID0gY3QKICAgICAgICAgc2VsZi5tc2VjcyA9IChjdCAtIGludChjdCkpICogMTAwMAogICAgICAgICBzZWxmLnJlbGF0aXZlQ3JlYXRlZCA9IChzZWxmLmNyZWF0ZWQgLSBfc3RhcnRUaW1lKSAqIDEwMDAKLSAgICAgICAgaWYgbG9nVGhyZWFkcyBhbmQgdGhyZWFkOgotICAgICAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgaWYgbG9nVGhyZWFkcyBhbmQgdGhyZWFkaW5nOgorICAgICAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgIHNlbGYudGhyZWFkTmFtZSA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKICAgICAgICAgICAgIHNlbGYudGhyZWFkTmFtZSA9IE5vbmUKLSAgICAgICAgaWYgbm90IGxvZ011bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgaWYgbm90IGxvZ011bHRpcHJvY2Vzc2luZzogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5wcm9jZXNzTmFtZSA9ICdNYWluUHJvY2VzcycKQEAgLTI5NCw3ICsyODgsNyBAQAogICAgICAgICAgICAgICAgICMgZm9yIGFuIGV4YW1wbGUKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc05hbWUgPSBtcC5jdXJyZW50X3Byb2Nlc3MoKS5uYW1lCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGlmIGxvZ1Byb2Nlc3NlcyBhbmQgaGFzYXR0cihvcywgJ2dldHBpZCcpOgogICAgICAgICAgICAgc2VsZi5wcm9jZXNzID0gb3MuZ2V0cGlkKCkKQEAgLTQ2Niw2ICs0NjAsOSBAQAogICAgICAgICBzZWxmLl9mbXQgPSBzZWxmLl9zdHlsZS5fZm10CiAgICAgICAgIHNlbGYuZGF0ZWZtdCA9IGRhdGVmbXQKIAorICAgIGRlZmF1bHRfdGltZV9mb3JtYXQgPSAnJVktJW0tJWQgJUg6JU06JVMnCisgICAgZGVmYXVsdF9tc2VjX2Zvcm1hdCA9ICclcywlMDNkJworCiAgICAgZGVmIGZvcm1hdFRpbWUoc2VsZiwgcmVjb3JkLCBkYXRlZm10PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgTG9nUmVjb3JkIGFzIGZvcm1hdHRlZCB0ZXh0LgpAQCAtNDg4LDggKzQ4NSw4IEBACiAgICAgICAgIGlmIGRhdGVmbXQ6CiAgICAgICAgICAgICBzID0gdGltZS5zdHJmdGltZShkYXRlZm10LCBjdCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsIGN0KQotICAgICAgICAgICAgcyA9ICIlcywlMDNkIiAlICh0LCByZWNvcmQubXNlY3MpICMgdGhlIHVzZSBvZiAlIGhlcmUgaXMgaW50ZXJuYWwKKyAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKHNlbGYuZGVmYXVsdF90aW1lX2Zvcm1hdCwgY3QpCisgICAgICAgICAgICBzID0gc2VsZi5kZWZhdWx0X21zZWNfZm9ybWF0ICUgKHQsIHJlY29yZC5tc2VjcykKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBmb3JtYXRFeGNlcHRpb24oc2VsZiwgZWkpOgpAQCAtNjQyLDExICs2MzksMTEgQEAKICAgICAgICAgeWVzLiBJZiBkZWVtZWQgYXBwcm9wcmlhdGUsIHRoZSByZWNvcmQgbWF5IGJlIG1vZGlmaWVkIGluLXBsYWNlLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5ubGVuID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiBzZWxmLm5hbWUgPT0gcmVjb3JkLm5hbWU6Ci0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiByZWNvcmQubmFtZS5maW5kKHNlbGYubmFtZSwgMCwgc2VsZi5ubGVuKSAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gKHJlY29yZC5uYW1lW3NlbGYubmxlbl0gPT0gIi4iKQogCiBjbGFzcyBGaWx0ZXJlcihvYmplY3QpOgpAQCAtNjg2LDE0ICs2ODMsMTQgQEAKIAogICAgICAgICAgICBBbGxvdyBmaWx0ZXJzIHRvIGJlIGp1c3QgY2FsbGFibGVzLgogICAgICAgICAiIiIKLSAgICAgICAgcnYgPSAxCisgICAgICAgIHJ2ID0gVHJ1ZQogICAgICAgICBmb3IgZiBpbiBzZWxmLmZpbHRlcnM6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKGYsICdmaWx0ZXInKToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmLmZpbHRlcihyZWNvcmQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYocmVjb3JkKSAjIGFzc3VtZSBjYWxsYWJsZSAtIHdpbGwgcmFpc2UgaWYgbm90CiAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAgIHJ2ID0gMAorICAgICAgICAgICAgICAgIHJ2ID0gRmFsc2UKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICByZXR1cm4gcnYKIApAQCAtNzcxLDkgKzc2OCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBBY3F1aXJlIGEgdGhyZWFkIGxvY2sgZm9yIHNlcmlhbGl6aW5nIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBJL08uCiAgICAgICAgICIiIgotICAgICAgICBpZiB0aHJlYWQ6CisgICAgICAgIGlmIHRocmVhZGluZzoKICAgICAgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5STG9jaygpCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLmxvY2sgPSBOb25lCiAKICAgICBkZWYgYWNxdWlyZShzZWxmKToKQEAgLTc5Miw3ICs3ODksNyBAQAogCiAgICAgZGVmIHNldExldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuCisgICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuICBsZXZlbCBtdXN0IGJlIGFuIGludCBvciBhIHN0ci4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKIApAQCAtODg4LDcgKzg4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBzeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0xvZ2dlZCBmcm9tIGZpbGUgJXMsIGxpbmUgJXNcbicgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuZmlsZW5hbWUsIHJlY29yZC5saW5lbm8pKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBwYXNzICAgICMgc2VlIGlzc3VlIDU5NzEKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZGVsIGVpCkBAIC05NDEsNyArOTM4LDcgQEAKICAgICAgICAgICAgIHN0cmVhbS53cml0ZShtc2cpCiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoc2VsZi50ZXJtaW5hdG9yKQogICAgICAgICAgICAgc2VsZi5mbHVzaCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtOTUwLDE0ICs5NDcsMTIgQEAKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGZvcm1hdHRlZCBsb2dnaW5nIHJlY29yZHMgdG8gZGlzayBmaWxlcy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAgICAgICAgICIiIgogICAgICAgICAja2VlcCB0aGUgYWJzb2x1dGUgcGF0aCwgb3RoZXJ3aXNlIGRlcml2ZWQgY2xhc3NlcyB3aGljaCB1c2UgdGhpcwogICAgICAgICAjbWF5IGNvbWUgYSBjcm9wcGVyIHdoZW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNoYW5nZXMKLSAgICAgICAgaWYgY29kZWNzIGlzIE5vbmU6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICAgc2VsZi5iYXNlRmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCkBAIC05ODksMTEgKzk4NCw3IEBACiAgICAgICAgIE9wZW4gdGhlIGN1cnJlbnQgYmFzZSBmaWxlIHdpdGggdGhlIChvcmlnaW5hbCkgbW9kZSBhbmQgZW5jb2RpbmcuCiAgICAgICAgIFJldHVybiB0aGUgcmVzdWx0aW5nIHN0cmVhbS4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHN0cmVhbSA9IG9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cmVhbSA9IGNvZGVjcy5vcGVuKHNlbGYuYmFzZUZpbGVuYW1lLCBzZWxmLm1vZGUsIHNlbGYuZW5jb2RpbmcpCi0gICAgICAgIHJldHVybiBzdHJlYW0KKyAgICAgICAgcmV0dXJuIG9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSwgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtMTIwNSwxMyArMTE5NiwxMyBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKICAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0gICAgICAgIHNlbGYucHJvcGFnYXRlID0gMQorICAgICAgICBzZWxmLnByb3BhZ2F0ZSA9IFRydWUKICAgICAgICAgc2VsZi5oYW5kbGVycyA9IFtdCi0gICAgICAgIHNlbGYuZGlzYWJsZWQgPSAwCisgICAgICAgIHNlbGYuZGlzYWJsZWQgPSBGYWxzZQogCiAgICAgZGVmIHNldExldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGxvZ2dlci4KKyAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgbG9nZ2VyLiAgbGV2ZWwgbXVzdCBiZSBhbiBpbnQgb3IgYSBzdHIuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxldmVsID0gX2NoZWNrTGV2ZWwobGV2ZWwpCiAKQEAgLTEyNTEsNyArMTI0MiwxMCBAQAogICAgICAgICBpZiBzZWxmLmlzRW5hYmxlZEZvcihXQVJOSU5HKToKICAgICAgICAgICAgIHNlbGYuX2xvZyhXQVJOSU5HLCBtc2csIGFyZ3MsICoqa3dhcmdzKQogCi0gICAgd2FybiA9IHdhcm5pbmcKKyAgICBkZWYgd2FybihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgIHNlbGYud2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTM2MCw5ICsxMzU0LDkgQEAKICAgICAgICAgICAgICNJcm9uUHl0aG9uIGNhbiB1c2UgbG9nZ2luZy4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jLCBzaW5mbyA9IHNlbGYuZmluZENhbGxlcihzdGFja19pbmZvKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCiAgICAgICAgIGlmIGV4Y19pbmZvOgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjX2luZm8sIHR1cGxlKToKQEAgLTE0NzQsNyArMTQ2OCw3IEBACiAgICAgICAgIElzIHRoaXMgbG9nZ2VyIGVuYWJsZWQgZm9yIGxldmVsICdsZXZlbCc/CiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLm1hbmFnZXIuZGlzYWJsZSA+PSBsZXZlbDoKLSAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIGxldmVsID49IHNlbGYuZ2V0RWZmZWN0aXZlTGV2ZWwoKQogCiAgICAgZGVmIGdldENoaWxkKHNlbGYsIHN1ZmZpeCk6CkBAIC0xNTY0LDcgKzE1NTgsMTAgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubG9nKFdBUk5JTkcsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi0gICAgd2FybiA9IHdhcm5pbmcKKyAgICBkZWYgd2FybihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgIHNlbGYud2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTU3Niw3ICsxNTczLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIERlbGVnYXRlIGFuIGV4Y2VwdGlvbiBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIGxvZ2dlci4KICAgICAgICAgIiIiCi0gICAgICAgIGt3YXJnc1siZXhjX2luZm8iXSA9IDEKKyAgICAgICAga3dhcmdzWyJleGNfaW5mbyJdID0gVHJ1ZQogICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgY3JpdGljYWwoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtMTY1OSw2ICsxNjU2LDEwIEBACiAgICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgIHRoYXQgdGhpcyBhcmd1bWVudCBpcyBpbmNvbXBhdGlibGUgd2l0aCAnZmlsZW5hbWUnIC0gaWYgYm90aAogICAgICAgICAgICAgICBhcmUgcHJlc2VudCwgJ3N0cmVhbScgaXMgaWdub3JlZC4KKyAgICBoYW5kbGVycyAgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgICAgaGFuZGxlcnMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJvb3QgaGFuZGxlci4gQW55IGhhbmRsZXIKKyAgICAgICAgICAgICAgaW4gdGhlIGxpc3Qgd2hpY2ggZG9lcyBub3QgaGF2ZSBhIGZvcm1hdHRlciBhc3NpZ25lZCB3aWxsIGJlCisgICAgICAgICAgICAgIGFzc2lnbmVkIHRoZSBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgogCiAgICAgTm90ZSB0aGF0IHlvdSBjb3VsZCBzcGVjaWZ5IGEgc3RyZWFtIGNyZWF0ZWQgdXNpbmcgb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgICByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZSBmaWxlbmFtZSBhbmQgbW9kZSBpbi4gSG93ZXZlciwgaXQgc2hvdWxkIGJlCkBAIC0xNjY2LDI3ICsxNjY3LDQ3IEBACiAgICAgdXNpbmcgc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyKSwgd2hlcmVhcyBGaWxlSGFuZGxlciBjbG9zZXMgaXRzIHN0cmVhbQogICAgIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgogCi0gICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuMgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAgQWRkZWQgdGhlIGBgc3R5bGVgYCBwYXJhbWV0ZXIuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgIEFkZGVkIHRoZSBgYGhhbmRsZXJzYGAgcGFyYW1ldGVyLiBBIGBgVmFsdWVFcnJvcmBgIGlzIG5vdyB0aHJvd24gZm9yCisgICAgICAgaW5jb21wYXRpYmxlIGFyZ3VtZW50cyAoZS5nLiBgYGhhbmRsZXJzYGAgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGgKKyAgICAgICBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgLCBvciBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgIHNwZWNpZmllZAorICAgICAgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCwgb3IgYGBoYW5kbGVyc2BgIHNwZWNpZmllZCB0b2dldGhlciB3aXRoCisgICAgICAgYGBzdHJlYW1gYC4KICAgICAiIiIKICAgICAjIEFkZCB0aHJlYWQgc2FmZXR5IGluIGNhc2Ugc29tZW9uZSBtaXN0YWtlbmx5IGNhbGxzCiAgICAgIyBiYXNpY0NvbmZpZygpIGZyb20gbXVsdGlwbGUgdGhyZWFkcwogICAgIF9hY3F1aXJlTG9jaygpCiAgICAgdHJ5OgogICAgICAgICBpZiBsZW4ocm9vdC5oYW5kbGVycykgPT0gMDoKLSAgICAgICAgICAgIGZpbGVuYW1lID0ga3dhcmdzLmdldCgiZmlsZW5hbWUiKQotICAgICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgbW9kZSA9IGt3YXJncy5nZXQoImZpbGVtb2RlIiwgJ2EnKQotICAgICAgICAgICAgICAgIGhkbHIgPSBGaWxlSGFuZGxlcihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgIGhhbmRsZXJzID0ga3dhcmdzLmdldCgiaGFuZGxlcnMiKQorICAgICAgICAgICAgaWYgaGFuZGxlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiAic3RyZWFtIiBpbiBrd2FyZ3MgYW5kICJmaWxlbmFtZSIgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCInc3RyZWFtJyBhbmQgJ2ZpbGVuYW1lJyBzaG91bGQgbm90IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVkIHRvZ2V0aGVyIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RyZWFtID0ga3dhcmdzLmdldCgic3RyZWFtIikKLSAgICAgICAgICAgICAgICBoZGxyID0gU3RyZWFtSGFuZGxlcihzdHJlYW0pCisgICAgICAgICAgICAgICAgaWYgInN0cmVhbSIgaW4ga3dhcmdzIG9yICJmaWxlbmFtZSIgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCInc3RyZWFtJyBvciAnZmlsZW5hbWUnIHNob3VsZCBub3QgYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCAnaGFuZGxlcnMnIikKKyAgICAgICAgICAgIGlmIGhhbmRsZXJzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBrd2FyZ3MuZ2V0KCJmaWxlbmFtZSIpCisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBrd2FyZ3MuZ2V0KCJmaWxlbW9kZSIsICdhJykKKyAgICAgICAgICAgICAgICAgICAgaCA9IEZpbGVIYW5kbGVyKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IGt3YXJncy5nZXQoInN0cmVhbSIpCisgICAgICAgICAgICAgICAgICAgIGggPSBTdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgICAgICAgICBoYW5kbGVycyA9IFtoXQogICAgICAgICAgICAgZnMgPSBrd2FyZ3MuZ2V0KCJmb3JtYXQiLCBCQVNJQ19GT1JNQVQpCiAgICAgICAgICAgICBkZnMgPSBrd2FyZ3MuZ2V0KCJkYXRlZm10IiwgTm9uZSkKICAgICAgICAgICAgIHN0eWxlID0ga3dhcmdzLmdldCgic3R5bGUiLCAnJScpCiAgICAgICAgICAgICBmbXQgPSBGb3JtYXR0ZXIoZnMsIGRmcywgc3R5bGUpCi0gICAgICAgICAgICBoZGxyLnNldEZvcm1hdHRlcihmbXQpCi0gICAgICAgICAgICByb290LmFkZEhhbmRsZXIoaGRscikKKyAgICAgICAgICAgIGZvciBoIGluIGhhbmRsZXJzOgorICAgICAgICAgICAgICAgIGlmIGguZm9ybWF0dGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGZtdCkKKyAgICAgICAgICAgICAgICByb290LmFkZEhhbmRsZXIoaCkKICAgICAgICAgICAgIGxldmVsID0ga3dhcmdzLmdldCgibGV2ZWwiKQogICAgICAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcm9vdC5zZXRMZXZlbChsZXZlbCkKQEAgLTE3NTAsNyArMTc3MSwxMCBAQAogICAgICAgICBiYXNpY0NvbmZpZygpCiAgICAgcm9vdC53YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi13YXJuID0gd2FybmluZworZGVmIHdhcm4obXNnLCAqYXJncywgKiprd2FyZ3MpOgorICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgIgorICAgICAgICAidXNlICd3YXJuaW5nJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIHdhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKIGRlZiBpbmZvKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAiIiIKQEAgLTE4MzUsMTAgKzE4NTksMTAgQEAKICAgICBwYWNrYWdlLgogICAgICIiIgogICAgIGRlZiBoYW5kbGUoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgcGFzcworICAgICAgICAiIiJTdHViLiIiIgogCiAgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgcGFzcworICAgICAgICAiIiJTdHViLiIiIgogCiAgICAgZGVmIGNyZWF0ZUxvY2soc2VsZik6CiAgICAgICAgIHNlbGYubG9jayA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weSBiL0xpYi9sb2dnaW5nL2NvbmZpZy5weQppbmRleCAzNzNkYTJiLi41ZWY1YzkxIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9jb25maWcucHkKKysrIGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CkBAIC0yNCwxMyArMjQsMTMgQEAKIFRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZycgYW5kIGxvZyBhd2F5IQogIiIiCiAKLWltcG9ydCBzeXMsIGxvZ2dpbmcsIGxvZ2dpbmcuaGFuZGxlcnMsIHNvY2tldCwgc3RydWN0LCBvcywgdHJhY2ViYWNrLCByZQotaW1wb3J0IHR5cGVzLCBpbworaW1wb3J0IHN5cywgbG9nZ2luZywgbG9nZ2luZy5oYW5kbGVycywgc29ja2V0LCBzdHJ1Y3QsIHRyYWNlYmFjaywgcmUKK2ltcG9ydCBpbwogCiB0cnk6CiAgICAgaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCiAgICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgorZXhjZXB0IEltcG9ydEVycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgIHRocmVhZCA9IE5vbmUKIAogZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIKQEAgLTk4LDkgKzk4LDYgQEAKIGRlZiBfc3RyaXBfc3BhY2VzKGFsaXN0KToKICAgICByZXR1cm4gbWFwKGxhbWJkYSB4OiB4LnN0cmlwKCksIGFsaXN0KQogCi1kZWYgX2VuY29kZWQocyk6Ci0gICAgcmV0dXJuIHMgaWYgaXNpbnN0YW5jZShzLCBzdHIpIGVsc2Ugcy5lbmNvZGUoJ3V0Zi04JykKLQogZGVmIF9jcmVhdGVfZm9ybWF0dGVycyhjcCk6CiAgICAgIiIiQ3JlYXRlIGFuZCByZXR1cm4gZm9ybWF0dGVycyIiIgogICAgIGZsaXN0ID0gY3BbImZvcm1hdHRlcnMiXVsia2V5cyJdCkBAIC0yMTUsNyArMjEyLDcgQEAKICAgICAjYXZvaWQgZGlzYWJsaW5nIGNoaWxkIGxvZ2dlcnMgb2YgZXhwbGljaXRseQogICAgICNuYW1lZCBsb2dnZXJzLiBXaXRoIGEgc29ydGVkIGxpc3QgaXQgaXMgZWFzaWVyCiAgICAgI3RvIGZpbmQgdGhlIGNoaWxkIGxvZ2dlcnMuCi0gICAgZXhpc3Rpbmcuc29ydChrZXk9X2VuY29kZWQpCisgICAgZXhpc3Rpbmcuc29ydCgpCiAgICAgI1dlJ2xsIGtlZXAgdGhlIGxpc3Qgb2YgZXhpc3RpbmcgbG9nZ2VycwogICAgICN3aGljaCBhcmUgY2hpbGRyZW4gb2YgbmFtZWQgbG9nZ2VycyBoZXJlLi4uCiAgICAgY2hpbGRfbG9nZ2VycyA9IFtdCkBAIC01ODgsNyArNTg1LDcgQEAKICAgICAgICAgICAgICAgICAjYXZvaWQgZGlzYWJsaW5nIGNoaWxkIGxvZ2dlcnMgb2YgZXhwbGljaXRseQogICAgICAgICAgICAgICAgICNuYW1lZCBsb2dnZXJzLiBXaXRoIGEgc29ydGVkIGxpc3QgaXQgaXMgZWFzaWVyCiAgICAgICAgICAgICAgICAgI3RvIGZpbmQgdGhlIGNoaWxkIGxvZ2dlcnMuCi0gICAgICAgICAgICAgICAgZXhpc3Rpbmcuc29ydChrZXk9X2VuY29kZWQpCisgICAgICAgICAgICAgICAgZXhpc3Rpbmcuc29ydCgpCiAgICAgICAgICAgICAgICAgI1dlJ2xsIGtlZXAgdGhlIGxpc3Qgb2YgZXhpc3RpbmcgbG9nZ2VycwogICAgICAgICAgICAgICAgICN3aGljaCBhcmUgY2hpbGRyZW4gb2YgbmFtZWQgbG9nZ2VycyBoZXJlLi4uCiAgICAgICAgICAgICAgICAgY2hpbGRfbG9nZ2VycyA9IFtdCkBAIC03ODYsNyArNzgzLDcgQEAKICAgICBhbmQgd2hpY2ggeW91IGNhbiBqb2luKCkgd2hlbiBhcHByb3ByaWF0ZS4gVG8gc3RvcCB0aGUgc2VydmVyLCBjYWxsCiAgICAgc3RvcExpc3RlbmluZygpLgogICAgICIiIgotICAgIGlmIG5vdCB0aHJlYWQ6CisgICAgaWYgbm90IHRocmVhZDogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigibGlzdGVuKCkgbmVlZHMgdGhyZWFkaW5nIHRvIHdvcmsiKQogCiAgICAgY2xhc3MgQ29uZmlnU3RyZWFtSGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6CkBAIC04MDQsNyArODAxLDYgQEAKICAgICAgICAgICAgIHN0cnVjdC5wYWNrKCI+TCIsIG4pLCBmb2xsb3dlZCBieSB0aGUgY29uZmlnIGZpbGUuCiAgICAgICAgICAgICBVc2VzIGZpbGVDb25maWcoKSB0byBkbyB0aGUgZ3J1bnQgd29yay4KICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaW1wb3J0IHRlbXBmaWxlCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgY29ubiA9IHNlbGYuY29ubmVjdGlvbgogICAgICAgICAgICAgICAgIGNodW5rID0gY29ubi5yZWN2KDQpCkBAIC04MjUsNyArODIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTyhjaHVuaykKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlQ29uZmlnKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weSBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CmluZGV4IDgzNDlkM2EuLmYyODZjZDYgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CisrKyBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CkBAIC0yNCwxOCArMjQsMTQgQEAKICIiIgogCiBpbXBvcnQgZXJybm8sIGxvZ2dpbmcsIHNvY2tldCwgb3MsIHBpY2tsZSwgc3RydWN0LCB0aW1lLCByZQorZnJvbSBjb2RlY3MgaW1wb3J0IEJPTV9VVEY4CiBmcm9tIHN0YXQgaW1wb3J0IFNUX0RFViwgU1RfSU5PLCBTVF9NVElNRQogaW1wb3J0IHF1ZXVlCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgorZXhjZXB0IEltcG9ydEVycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgIHRocmVhZGluZyA9IE5vbmUKIAotdHJ5OgotICAgIGltcG9ydCBjb2RlY3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBjb2RlY3MgPSBOb25lCi0KICMKICMgU29tZSBjb25zdGFudHMuLi4KICMKQEAgLTU1LDE1ICs1MSwxNSBAQAogICAgIE5vdCBtZWFudCB0byBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuICBJbnN0ZWFkLCB1c2UgUm90YXRpbmdGaWxlSGFuZGxlcgogICAgIG9yIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlci4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPU5vbmUsIGRlbGF5PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgVXNlIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUgZm9yIHN0cmVhbWVkIGxvZ2dpbmcKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGNvZGVjcyBpcyBOb25lOgotICAgICAgICAgICAgZW5jb2RpbmcgPSBOb25lCiAgICAgICAgIGxvZ2dpbmcuRmlsZUhhbmRsZXIuX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nLCBkZWxheSkKICAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgc2VsZi5uYW1lciA9IE5vbmUKKyAgICAgICAgc2VsZi5yb3RhdG9yID0gTm9uZQogCiAgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAgIiIiCkBAIC03NiwxNyArNzIsNTUgQEAKICAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkUm9sbG92ZXIocmVjb3JkKToKICAgICAgICAgICAgICAgICBzZWxmLmRvUm9sbG92ZXIoKQogICAgICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5lbWl0KHNlbGYsIHJlY29yZCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKKyAgICBkZWYgcm90YXRpb25fZmlsZW5hbWUoc2VsZiwgZGVmYXVsdF9uYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIE1vZGlmeSB0aGUgZmlsZW5hbWUgb2YgYSBsb2cgZmlsZSB3aGVuIHJvdGF0aW5nLgorCisgICAgICAgIFRoaXMgaXMgcHJvdmlkZWQgc28gdGhhdCBhIGN1c3RvbSBmaWxlbmFtZSBjYW4gYmUgcHJvdmlkZWQuCisKKyAgICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgdGhlICduYW1lcicgYXR0cmlidXRlIG9mIHRoZQorICAgICAgICBoYW5kbGVyLCBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBkZWZhdWx0IG5hbWUgdG8KKyAgICAgICAgaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIE5vbmUpLCB0aGUgbmFtZQorICAgICAgICBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCisKKyAgICAgICAgOnBhcmFtIGRlZmF1bHRfbmFtZTogVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIGxvZyBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGNhbGxhYmxlKHNlbGYubmFtZXIpOgorICAgICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdF9uYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLm5hbWVyKGRlZmF1bHRfbmFtZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHJvdGF0ZShzZWxmLCBzb3VyY2UsIGRlc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgV2hlbiByb3RhdGluZywgcm90YXRlIHRoZSBjdXJyZW50IGxvZy4KKworICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ3JvdGF0b3InIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgICAgaGFuZGxlciwgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgc291cmNlIGFuZCBkZXN0IGFyZ3VtZW50cyB0bworICAgICAgICBpdC4gSWYgdGhlIGF0dHJpYnV0ZSBpc24ndCBjYWxsYWJsZSAodGhlIGRlZmF1bHQgaXMgTm9uZSksIHRoZSBzb3VyY2UKKyAgICAgICAgaXMgc2ltcGx5IHJlbmFtZWQgdG8gdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICAgIDpwYXJhbSBzb3VyY2U6IFRoZSBzb3VyY2UgZmlsZW5hbWUuIFRoaXMgaXMgbm9ybWFsbHkgdGhlIGJhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGUuZy4gJ3Rlc3QubG9nJworICAgICAgICA6cGFyYW0gZGVzdDogICBUaGUgZGVzdGluYXRpb24gZmlsZW5hbWUuIFRoaXMgaXMgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgd2hhdCB0aGUgc291cmNlIGlzIHJvdGF0ZWQgdG8sIGUuZy4gJ3Rlc3QubG9nLjEnLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGNhbGxhYmxlKHNlbGYucm90YXRvcik6CisgICAgICAgICAgICBvcy5yZW5hbWUoc291cmNlLCBkZXN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5yb3RhdG9yKHNvdXJjZSwgZGVzdCkKKwogY2xhc3MgUm90YXRpbmdGaWxlSGFuZGxlcihCYXNlUm90YXRpbmdIYW5kbGVyKToKICAgICAiIiIKICAgICBIYW5kbGVyIGZvciBsb2dnaW5nIHRvIGEgc2V0IG9mIGZpbGVzLCB3aGljaCBzd2l0Y2hlcyBmcm9tIG9uZSBmaWxlCiAgICAgdG8gdGhlIG5leHQgd2hlbiB0aGUgY3VycmVudCBmaWxlIHJlYWNoZXMgYSBjZXJ0YWluIHNpemUuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgbWF4Qnl0ZXM9MCwgYmFja3VwQ291bnQ9MCwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgbWF4Qnl0ZXM9MCwgYmFja3VwQ291bnQ9MCwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgT3BlbiB0aGUgc3BlY2lmaWVkIGZpbGUgYW5kIHVzZSBpdCBhcyB0aGUgc3RyZWFtIGZvciBsb2dnaW5nLgogCkBAIC0xMjcsMTYgKzE2MSwxNyBAQAogICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBOb25lCiAgICAgICAgIGlmIHNlbGYuYmFja3VwQ291bnQgPiAwOgogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5iYWNrdXBDb3VudCAtIDEsIDAsIC0xKToKLSAgICAgICAgICAgICAgICBzZm4gPSAiJXMuJWQiICUgKHNlbGYuYmFzZUZpbGVuYW1lLCBpKQotICAgICAgICAgICAgICAgIGRmbiA9ICIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsIGkgKyAxKQorICAgICAgICAgICAgICAgIHNmbiA9IHNlbGYucm90YXRpb25fZmlsZW5hbWUoIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwgaSkpCisgICAgICAgICAgICAgICAgZGZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZSgiJXMuJWQiICUgKHNlbGYuYmFzZUZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICsgMSkpCiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2ZuKToKICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGZuKToKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkZm4pCiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbmFtZShzZm4sIGRmbikKLSAgICAgICAgICAgIGRmbiA9IHNlbGYuYmFzZUZpbGVuYW1lICsgIi4xIgorICAgICAgICAgICAgZGZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSArICIuMSIpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkZm4pCi0gICAgICAgICAgICBvcy5yZW5hbWUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKKyAgICAgICAgICAgIHNlbGYucm90YXRlKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCiAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAKICAgICBkZWYgc2hvdWxkUm9sbG92ZXIoc2VsZiwgcmVjb3JkKToKQEAgLTE4MywxOSArMjE4LDE5IEBACiAgICAgICAgIGlmIHNlbGYud2hlbiA9PSAnUyc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gMSAjIG9uZSBzZWNvbmQKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkXyVILSVNLSVTIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9LVxkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4gPT0gJ00nOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICMgb25lIG1pbnV0ZQogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgtJU0iCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnSCc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgKiA2MCAjIG9uZSBob3VyCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZF8lSCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuID09ICdEJyBvciBzZWxmLndoZW4gPT0gJ01JRE5JR0hUJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICogMjQgIyBvbmUgZGF5CiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuLnN0YXJ0c3dpdGgoJ1cnKToKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICogMjQgKiA3ICMgb25lIHdlZWsKICAgICAgICAgICAgIGlmIGxlbihzZWxmLndoZW4pICE9IDI6CkBAIC0yMDQsNyArMjM5LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGRheSBzcGVjaWZpZWQgZm9yIHdlZWtseSByb2xsb3ZlcjogJXMiICUgc2VsZi53aGVuKQogICAgICAgICAgICAgc2VsZi5kYXlPZldlZWsgPSBpbnQoc2VsZi53aGVuWzFdKQogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWQiCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCByb2xsb3ZlciBpbnRlcnZhbCBzcGVjaWZpZWQ6ICVzIiAlIHNlbGYud2hlbikKIApAQCAtMzM3LDEwICszNzIsMTEgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBhZGRlbmQgPSAtMzYwMAogICAgICAgICAgICAgICAgIHRpbWVUdXBsZSA9IHRpbWUubG9jYWx0aW1lKHQgKyBhZGRlbmQpCi0gICAgICAgIGRmbiA9IHNlbGYuYmFzZUZpbGVuYW1lICsgIi4iICsgdGltZS5zdHJmdGltZShzZWxmLnN1ZmZpeCwgdGltZVR1cGxlKQorICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lICsgIi4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKHNlbGYuc3VmZml4LCB0aW1lVHVwbGUpKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKLSAgICAgICAgb3MucmVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCisgICAgICAgIHNlbGYucm90YXRlKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCiAgICAgICAgIGlmIHNlbGYuYmFja3VwQ291bnQgPiAwOgogICAgICAgICAgICAgZm9yIHMgaW4gc2VsZi5nZXRGaWxlc1RvRGVsZXRlKCk6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHMpCkBAIC0zNzksNyArNDE1LDcgQEAKICAgICBUaGlzIGhhbmRsZXIgaXMgYmFzZWQgb24gYSBzdWdnZXN0aW9uIGFuZCBwYXRjaCBieSBDaGFkIEouCiAgICAgU2Nocm9lZGVyLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKToKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcsIGRlbGF5KQogICAgICAgICBzZWxmLmRldiwgc2VsZi5pbm8gPSAtMSwgLTEKICAgICAgICAgc2VsZi5fc3RhdHN0cmVhbSgpCkBAIC00MzgsMTUgKzQ3NCwxNSBAQAogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGhhbmRsZXIgd2l0aCBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyBhbmQgcG9ydC4KIAotICAgICAgICBUaGUgYXR0cmlidXRlICdjbG9zZU9uRXJyb3InIGlzIHNldCB0byAxIC0gd2hpY2ggbWVhbnMgdGhhdCBpZgotICAgICAgICBhIHNvY2tldCBlcnJvciBvY2N1cnMsIHRoZSBzb2NrZXQgaXMgc2lsZW50bHkgY2xvc2VkIGFuZCB0aGVuCi0gICAgICAgIHJlb3BlbmVkIG9uIHRoZSBuZXh0IGxvZ2dpbmcgY2FsbC4KKyAgICAgICAgV2hlbiB0aGUgYXR0cmlidXRlICpjbG9zZU9uRXJyb3IqIGlzIHNldCB0byBUcnVlIC0gaWYgYSBzb2NrZXQgZXJyb3IKKyAgICAgICAgb2NjdXJzLCB0aGUgc29ja2V0IGlzIHNpbGVudGx5IGNsb3NlZCBhbmQgdGhlbiByZW9wZW5lZCBvbiB0aGUgbmV4dAorICAgICAgICBsb2dnaW5nIGNhbGwuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuc29jayA9IE5vbmUKLSAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSAwCisgICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gRmFsc2UKICAgICAgICAgc2VsZi5yZXRyeVRpbWUgPSBOb25lCiAgICAgICAgICMKICAgICAgICAgIyBFeHBvbmVudGlhbCBiYWNrb2ZmIHBhcmFtZXRlcnMuCkBAIC00NjMsOCArNDk5LDEyIEBACiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIGlmIGhhc2F0dHIocywgJ3NldHRpbWVvdXQnKToKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICBzLmNvbm5lY3QoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKLSAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5jb25uZWN0KChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCisgICAgICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIGNyZWF0ZVNvY2tldChzZWxmKToKICAgICAgICAgIiIiCkBAIC00NzcsNyArNTE3LDcgQEAKICAgICAgICAgIyBpcyB0aGUgZmlyc3QgdGltZSBiYWNrIGFmdGVyIGEgZGlzY29ubmVjdCwgb3IKICAgICAgICAgIyB3ZSd2ZSB3YWl0ZWQgbG9uZyBlbm91Z2guCiAgICAgICAgIGlmIHNlbGYucmV0cnlUaW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBhdHRlbXB0ID0gMQorICAgICAgICAgICAgYXR0ZW1wdCA9IFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dGVtcHQgPSAobm93ID49IHNlbGYucmV0cnlUaW1lKQogICAgICAgICBpZiBhdHRlbXB0OgpAQCAtNTEwLDE0ICs1NTAsMTQgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuc29jaywgInNlbmRhbGwiKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwocykKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgIHNlbnRzb2ZhciA9IDAKICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxlbihzKQogICAgICAgICAgICAgICAgICAgICB3aGlsZSBsZWZ0ID4gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNvY2suc2VuZChzW3NlbnRzb2ZhcjpdKQogICAgICAgICAgICAgICAgICAgICAgICAgc2VudHNvZmFyID0gc2VudHNvZmFyICsgc2VudAogICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxlZnQgLSBzZW50Ci0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IE5vbmUgICMgc28gd2UgY2FuIGNhbGwgY3JlYXRlU29ja2V0IG5leHQgdGltZQogCkBAIC01NjcsNyArNjA3LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcyA9IHNlbGYubWFrZVBpY2tsZShyZWNvcmQpCiAgICAgICAgICAgICBzZWxmLnNlbmQocykKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC02MDEsNyArNjQxLDcgQEAKICAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGhhbmRsZXIgd2l0aCBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyBhbmQgcG9ydC4KICAgICAgICAgIiIiCiAgICAgICAgIFNvY2tldEhhbmRsZXIuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCkKLSAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSAwCisgICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gRmFsc2UKIAogICAgIGRlZiBtYWtlU29ja2V0KHNlbGYpOgogICAgICAgICAiIiIKQEAgLTc0MiwxMCArNzgyLDEwIEBACiAgICAgICAgIHNlbGYuc29ja3R5cGUgPSBzb2NrdHlwZQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgc3RyKToKLSAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IDEKKyAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3RfdW5peHNvY2tldChhZGRyZXNzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gMAorICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja3R5cGUpCiAgICAgICAgICAgICBpZiBzb2NrdHlwZSA9PSBzb2NrZXQuU09DS19TVFJFQU06CiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY29ubmVjdChhZGRyZXNzKQpAQCAtNzc4LDggKzgxOCw3IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLnVuaXhzb2NrZXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQogICAgICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLmNsb3NlKHNlbGYpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQpAQCAtNzk0LDYgKzgzMyw3IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5wcmlvcml0eV9tYXAuZ2V0KGxldmVsTmFtZSwgIndhcm5pbmciKQogCisgICAgaWRlbnQgPSAnJyAgICAgICAgICAjIHByZXBlbmRlZCB0byBhbGwgbWVzc2FnZXMKICAgICBhcHBlbmRfbnVsID0gVHJ1ZSAgICMgc29tZSBvbGQgc3lzbG9nIGRhZW1vbnMgZXhwZWN0IGEgTlVMIHRlcm1pbmF0b3IKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CkBAIC04MDQsNiArODQ0LDggQEAKICAgICAgICAgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIHByZXNlbnQsIGl0IGlzIE5PVCBzZW50IHRvIHRoZSBzZXJ2ZXIuCiAgICAgICAgICIiIgogICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCisgICAgICAgIGlmIHNlbGYuaWRlbnQ6CisgICAgICAgICAgICBtc2cgPSBzZWxmLmlkZW50ICsgbXNnCiAgICAgICAgIGlmIHNlbGYuYXBwZW5kX251bDoKICAgICAgICAgICAgIG1zZyArPSAnXDAwMCcKICAgICAgICAgIiIiCkBAIC04MjcsNyArODY5LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kdG8obXNnLCBzZWxmLmFkZHJlc3MpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmRhbGwobXNnKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTgzNyw3ICs4NzksNyBAQAogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCBzZW5kcyBhbiBTTVRQIGVtYWlsIGZvciBlYWNoIGxvZ2dpbmcgZXZlbnQuCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1haWxob3N0LCBmcm9tYWRkciwgdG9hZGRycywgc3ViamVjdCwKLSAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHM9Tm9uZSwgc2VjdXJlPU5vbmUpOgorICAgICAgICAgICAgICAgICBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSwgdGltZW91dD01LjApOgogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlci4KIApAQCAtODUxLDYgKzg5Myw4IEBACiAgICAgICAgIHdpbGwgYmUgZWl0aGVyIGFuIGVtcHR5IHR1cGxlLCBvciBhIHNpbmdsZS12YWx1ZSB0dXBsZSB3aXRoIHRoZSBuYW1lCiAgICAgICAgIG9mIGEga2V5ZmlsZSwgb3IgYSAyLXZhbHVlIHR1cGxlIHdpdGggdGhlIG5hbWVzIG9mIHRoZSBrZXlmaWxlIGFuZAogICAgICAgICBjZXJ0aWZpY2F0ZSBmaWxlLiAoVGhpcyB0dXBsZSBpcyBwYXNzZWQgdG8gdGhlIGBzdGFydHRsc2AgbWV0aG9kKS4KKyAgICAgICAgQSB0aW1lb3V0IGluIHNlY29uZHMgY2FuIGJlIHNwZWNpZmllZCBmb3IgdGhlIFNNVFAgY29ubmVjdGlvbiAodGhlCisgICAgICAgIGRlZmF1bHQgaXMgb25lIHNlY29uZCkuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICAgaWYgaXNpbnN0YW5jZShtYWlsaG9zdCwgdHVwbGUpOgpAQCAtODY3LDcgKzkxMSw3IEBACiAgICAgICAgIHNlbGYudG9hZGRycyA9IHRvYWRkcnMKICAgICAgICAgc2VsZi5zdWJqZWN0ID0gc3ViamVjdAogICAgICAgICBzZWxmLnNlY3VyZSA9IHNlY3VyZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gNS4wCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKIAogICAgIGRlZiBnZXRTdWJqZWN0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtODkwLDcgKzkzNCw3IEBACiAgICAgICAgICAgICBwb3J0ID0gc2VsZi5tYWlscG9ydAogICAgICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICAgICAgcG9ydCA9IHNtdHBsaWIuU01UUF9QT1JUCi0gICAgICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKHNlbGYubWFpbGhvc3QsIHBvcnQsIHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKKyAgICAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoc2VsZi5tYWlsaG9zdCwgcG9ydCwgdGltZW91dD1zZWxmLnRpbWVvdXQpCiAgICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgICBtc2cgPSAiRnJvbTogJXNcclxuVG86ICVzXHJcblN1YmplY3Q6ICVzXHJcbkRhdGU6ICVzXHJcblxyXG4lcyIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcm9tYWRkciwKQEAgLTkwNSw3ICs5NDksNyBAQAogICAgICAgICAgICAgICAgIHNtdHAubG9naW4oc2VsZi51c2VybmFtZSwgc2VsZi5wYXNzd29yZCkKICAgICAgICAgICAgIHNtdHAuc2VuZG1haWwoc2VsZi5mcm9tYWRkciwgc2VsZi50b2FkZHJzLCBtc2cpCiAgICAgICAgICAgICBzbXRwLnF1aXQoKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTk5Miw3ICsxMDM2LDcgQEAKICAgICAgICAgICAgICAgICB0eXBlID0gc2VsZi5nZXRFdmVudFR5cGUocmVjb3JkKQogICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuZm9ybWF0KHJlY29yZCkKICAgICAgICAgICAgICAgICBzZWxmLl93ZWx1LlJlcG9ydEV2ZW50KHNlbGYuYXBwbmFtZSwgaWQsIGNhdCwgdHlwZSwgW21zZ10pCi0gICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC0xMDc1LDkgKzExMTksMTEgQEAKICAgICAgICAgICAgICAgICBzID0gKCd1JXM6JXMnICUgc2VsZi5jcmVkZW50aWFscykuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgICAgICAgICAgcyA9ICdCYXNpYyAnICsgYmFzZTY0LmI2NGVuY29kZShzKS5zdHJpcCgpCiAgICAgICAgICAgICAgICAgaC5wdXRoZWFkZXIoJ0F1dGhvcml6YXRpb24nLCBzKQotICAgICAgICAgICAgaC5lbmRoZWFkZXJzKGRhdGEgaWYgc2VsZi5tZXRob2QgPT0gIlBPU1QiIGVsc2UgTm9uZSkKKyAgICAgICAgICAgIGguZW5kaGVhZGVycygpCisgICAgICAgICAgICBpZiBzZWxmLm1ldGhvZCA9PSAiUE9TVCI6CisgICAgICAgICAgICAgICAgaC5zZW5kKGRhdGEuZW5jb2RlKCd1dGYtOCcpKQogICAgICAgICAgICAgaC5nZXRyZXNwb25zZSgpICAgICNjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoZSByZXN1bHQKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC0xMjU5LDcgKzEzMDUsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5lbnF1ZXVlKHNlbGYucHJlcGFyZShyZWNvcmQpKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTEzNTYsNiArMTQwMiwxNiBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgICAgICBkZWYgZW5xdWV1ZV9zZW50aW5lbChzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgVGhpcyBpcyB1c2VkIHRvIGVucXVldWUgdGhlIHNlbnRpbmVsIHJlY29yZC4KKworICAgICAgICAgICAgVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gdXNlcyBwdXRfbm93YWl0LiBZb3UgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcworICAgICAgICAgICAgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHVzZSB0aW1lb3V0cyBvciB3b3JrIHdpdGggY3VzdG9tIHF1ZXVlCisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdChzZWxmLl9zZW50aW5lbCkKKwogICAgICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgU3RvcCB0aGUgbGlzdGVuZXIuCkBAIC0xMzY1LDYgKzE0MjEsNiBAQAogICAgICAgICAgICAgbWF5IGJlIHNvbWUgcmVjb3JkcyBzdGlsbCBsZWZ0IG9uIHRoZSBxdWV1ZSwgd2hpY2ggd29uJ3QgYmUgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBzZWxmLl9zdG9wLnNldCgpCi0gICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoc2VsZi5fc2VudGluZWwpCisgICAgICAgICAgICBzZWxmLmVucXVldWVfc2VudGluZWwoKQogICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4oKQogICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2x6bWEucHkgYi9MaWIvbHptYS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTFiMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2x6bWEucHkKQEAgLTAsMCArMSw0NTQgQEAKKyIiIkludGVyZmFjZSB0byB0aGUgbGlibHptYSBjb21wcmVzc2lvbiBsaWJyYXJ5LgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNsYXNzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGNvbXByZXNzZWQgZmlsZXMsCitjbGFzc2VzIGZvciBpbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24sIGFuZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yCitvbmUtc2hvdCAoZGUpY29tcHJlc3Npb24uCisKK1RoZXNlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBzdXBwb3J0IGJvdGggdGhlIFhaIGFuZCBsZWdhY3kgTFpNQQorY29udGFpbmVyIGZvcm1hdHMsIGFzIHdlbGwgYXMgcmF3IGNvbXByZXNzZWQgZGF0YSBzdHJlYW1zLgorIiIiCisKK19fYWxsX18gPSBbCisgICAgIkNIRUNLX05PTkUiLCAiQ0hFQ0tfQ1JDMzIiLCAiQ0hFQ0tfQ1JDNjQiLCAiQ0hFQ0tfU0hBMjU2IiwKKyAgICAiQ0hFQ0tfSURfTUFYIiwgIkNIRUNLX1VOS05PV04iLAorICAgICJGSUxURVJfTFpNQTEiLCAiRklMVEVSX0xaTUEyIiwgIkZJTFRFUl9ERUxUQSIsICJGSUxURVJfWDg2IiwgIkZJTFRFUl9JQTY0IiwKKyAgICAiRklMVEVSX0FSTSIsICJGSUxURVJfQVJNVEhVTUIiLCAiRklMVEVSX1BPV0VSUEMiLCAiRklMVEVSX1NQQVJDIiwKKyAgICAiRk9STUFUX0FVVE8iLCAiRk9STUFUX1haIiwgIkZPUk1BVF9BTE9ORSIsICJGT1JNQVRfUkFXIiwKKyAgICAiTUZfSEMzIiwgIk1GX0hDNCIsICJNRl9CVDIiLCAiTUZfQlQzIiwgIk1GX0JUNCIsCisgICAgIk1PREVfRkFTVCIsICJNT0RFX05PUk1BTCIsICJQUkVTRVRfREVGQVVMVCIsICJQUkVTRVRfRVhUUkVNRSIsCisKKyAgICAiTFpNQUNvbXByZXNzb3IiLCAiTFpNQURlY29tcHJlc3NvciIsICJMWk1BRmlsZSIsICJMWk1BRXJyb3IiLAorICAgICJvcGVuIiwgImNvbXByZXNzIiwgImRlY29tcHJlc3MiLCAiaXNfY2hlY2tfc3VwcG9ydGVkIiwKK10KKworaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgaW8KK2Zyb20gX2x6bWEgaW1wb3J0ICoKK2Zyb20gX2x6bWEgaW1wb3J0IF9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMKKworCitfTU9ERV9DTE9TRUQgICA9IDAKK19NT0RFX1JFQUQgICAgID0gMQorX01PREVfUkVBRF9FT0YgPSAyCitfTU9ERV9XUklURSAgICA9IDMKKworX0JVRkZFUl9TSVpFID0gODE5MgorCisKK2NsYXNzIExaTUFGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKworICAgICIiIkEgZmlsZSBvYmplY3QgcHJvdmlkaW5nIHRyYW5zcGFyZW50IExaTUEgKGRlKWNvbXByZXNzaW9uLgorCisgICAgQW4gTFpNQUZpbGUgY2FuIGFjdCBhcyBhIHdyYXBwZXIgZm9yIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCBvcgorICAgIHJlZmVyIGRpcmVjdGx5IHRvIGEgbmFtZWQgZmlsZSBvbiBkaXNrLgorCisgICAgTm90ZSB0aGF0IExaTUFGaWxlIHByb3ZpZGVzIGEgKmJpbmFyeSogZmlsZSBpbnRlcmZhY2UgLSBkYXRhIHJlYWQKKyAgICBpcyByZXR1cm5lZCBhcyBieXRlcywgYW5kIGRhdGEgdG8gYmUgd3JpdHRlbiBtdXN0IGJlIGdpdmVuIGFzIGJ5dGVzLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPU5vbmUsIG1vZGU9InIiLCAqLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgorICAgICAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgorCisgICAgICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IKKyAgICAgICAgYnl0ZXMgb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbgorICAgICAgICBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgICAgICAgbW9kZSBjYW4gYmUgInIiIGZvciByZWFkaW5nIChkZWZhdWx0KSwgInciIGZvciAob3Zlcil3cml0aW5nLCBvcgorICAgICAgICAiYSIgZm9yIGFwcGVuZGluZy4gVGhlc2UgY2FuIGVxdWl2YWxlbnRseSBiZSBnaXZlbiBhcyAicmIiLCAid2IiLAorICAgICAgICBhbmQgImFiIiByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCB0byB1c2UgZm9yIHRoZSBmaWxlLgorICAgICAgICBJZiBtb2RlIGlzICJyIiwgdGhpcyBkZWZhdWx0cyB0byBGT1JNQVRfQVVUTy4gT3RoZXJ3aXNlLCB0aGUKKyAgICAgICAgZGVmYXVsdCBpcyBGT1JNQVRfWFouCisKKyAgICAgICAgY2hlY2sgc3BlY2lmaWVzIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdG8gdXNlLiBUaGlzIGFyZ3VtZW50IGNhbgorICAgICAgICBvbmx5IGJlIHVzZWQgd2hlbiBvcGVuaW5nIGEgZmlsZSBmb3Igd3JpdGluZy4gRm9yIEZPUk1BVF9YWiwKKyAgICAgICAgdGhlIGRlZmF1bHQgaXMgQ0hFQ0tfQ1JDNjQuIEZPUk1BVF9BTE9ORSBhbmQgRk9STUFUX1JBVyBkbyBub3QKKyAgICAgICAgc3VwcG9ydCBpbnRlZ3JpdHkgY2hlY2tzIC0gZm9yIHRoZXNlIGZvcm1hdHMsIGNoZWNrIG11c3QgYmUKKyAgICAgICAgb21pdHRlZCwgb3IgYmUgQ0hFQ0tfTk9ORS4KKworICAgICAgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nLCB0aGUgKnByZXNldCogYXJndW1lbnQgaXMgbm90CisgICAgICAgIG1lYW5pbmdmdWwsIGFuZCBzaG91bGQgYmUgb21pdHRlZC4gVGhlICpmaWx0ZXJzKiBhcmd1bWVudCBzaG91bGQKKyAgICAgICAgYWxzbyBiZSBvbWl0dGVkLCBleGNlcHQgd2hlbiBmb3JtYXQgaXMgRk9STUFUX1JBVyAoaW4gd2hpY2ggY2FzZQorICAgICAgICBpdCBpcyByZXF1aXJlZCkuCisKKyAgICAgICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3Igd3JpdGluZywgdGhlIHNldHRpbmdzIHVzZWQgYnkgdGhlCisgICAgICAgIGNvbXByZXNzb3IgY2FuIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBwcmVzZXQgY29tcHJlc3Npb24KKyAgICAgICAgbGV2ZWwgKHdpdGggdGhlICpwcmVzZXQqIGFyZ3VtZW50KSwgb3IgaW4gZGV0YWlsIGFzIGEgY3VzdG9tCisgICAgICAgIGZpbHRlciBjaGFpbiAod2l0aCB0aGUgKmZpbHRlcnMqIGFyZ3VtZW50KS4gRm9yIEZPUk1BVF9YWiBhbmQKKyAgICAgICAgRk9STUFUX0FMT05FLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIFBSRVNFVF9ERUZBVUxUIHByZXNldAorICAgICAgICBsZXZlbC4gRm9yIEZPUk1BVF9SQVcsIHRoZSBjYWxsZXIgbXVzdCBhbHdheXMgc3BlY2lmeSBhIGZpbHRlcgorICAgICAgICBjaGFpbjsgdGhlIHJhdyBjb21wcmVzc29yIGRvZXMgbm90IHN1cHBvcnQgcHJlc2V0IGNvbXByZXNzaW9uCisgICAgICAgIGxldmVscy4KKworICAgICAgICBwcmVzZXQgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgMC05LAorICAgICAgICBvcHRpb25hbGx5IE9SLWVkIHdpdGggdGhlIGNvbnN0YW50IFBSRVNFVF9FWFRSRU1FLgorCisgICAgICAgIGZpbHRlcnMgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvZiBkaWN0cy4gRWFjaCBkaWN0CisgICAgICAgIHNob3VsZCBoYXZlIGFuIGVudHJ5IGZvciAiaWQiIGluZGljYXRpbmcgSUQgb2YgdGhlIGZpbHRlciwgcGx1cworICAgICAgICBhZGRpdGlvbmFsIGVudHJpZXMgZm9yIG9wdGlvbnMgdG8gdGhlIGZpbHRlci4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2ZwID0gTm9uZQorICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKKyAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX3NpemUgPSAtMQorCisgICAgICAgIGlmIG1vZGUgaW4gKCJyIiwgInJiIik6CisgICAgICAgICAgICBpZiBjaGVjayAhPSAtMToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc3BlY2lmeSBhbiBpbnRlZ3JpdHkgY2hlY2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmciKQorICAgICAgICAgICAgaWYgcHJlc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGEgcHJlc2V0IGNvbXByZXNzaW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCB3aGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nIikKKyAgICAgICAgICAgIGlmIGZvcm1hdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZPUk1BVF9BVVRPCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9SRUFECisgICAgICAgICAgICAjIFNhdmUgdGhlIGFyZ3MgdG8gcGFzcyB0byB0aGUgTFpNQURlY29tcHJlc3NvciBpbml0aWFsaXplci4KKyAgICAgICAgICAgICMgSWYgdGhlIGZpbGUgY29udGFpbnMgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBlYWNoCisgICAgICAgICAgICAjIHN0cmVhbSB3aWxsIG5lZWQgYSBzZXBhcmF0ZSBkZWNvbXByZXNzb3Igb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5faW5pdF9hcmdzID0geyJmb3JtYXQiOmZvcm1hdCwgImZpbHRlcnMiOmZpbHRlcnN9CisgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICBlbGlmIG1vZGUgaW4gKCJ3IiwgIndiIiwgImEiLCAiYWIiKToKKyAgICAgICAgICAgIGlmIGZvcm1hdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZPUk1BVF9YWgorICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBMWk1BQ29tcHJlc3Nvcihmb3JtYXQ9Zm9ybWF0LCBjaGVjaz1jaGVjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQ9cHJlc2V0LCBmaWx0ZXJzPWZpbHRlcnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKKworICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgorICAgICAgICAgICAgICAgIG1vZGUgKz0gImIiCisgICAgICAgICAgICBzZWxmLl9mcCA9IGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CisgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIGZpbGUuCisKKyAgICAgICAgTWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiBPbmNlIHRoZSBmaWxlIGlzCisgICAgICAgIGNsb3NlZCwgYW55IG90aGVyIG9wZXJhdGlvbiBvbiBpdCB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICAgICAgZWxpZiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTm9uZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlZnA6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLmNsb3NlKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsb3NlZChzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGlzIGZpbGUgaXMgY2xvc2VkLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgdW5kZXJseWluZyBmaWxlLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZwLmZpbGVubygpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHN1cHBvcnRzIHNlZWtpbmcuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlYWRhYmxlKCkgYW5kIHNlbGYuX2ZwLnNlZWthYmxlKCkKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3IgcmVhZGluZy4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRikKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFCisKKyAgICAjIE1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4KKworICAgIGRlZiBfY2hlY2tfbm90X2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYud3JpdGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCisgICAgICAgIGlmIG5vdCBzZWxmLl9mcC5zZWVrYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmciKQorCisgICAgIyBGaWxsIHRoZSByZWFkYWhlYWQgYnVmZmVyIGlmIGl0IGlzIGVtcHR5LiBSZXR1cm5zIEZhbHNlIG9uIEVPRi4KKyAgICBkZWYgX2ZpbGxfYnVmZmVyKHNlbGYpOgorICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90CisgICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBzZWxmLl9idWZmZXI6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhOgorICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gc2VsZi5fZnAucmVhZChfQlVGRkVSX1NJWkUpCisKKyAgICAgICAgICAgIGlmIG5vdCByYXdibG9jazoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorCisgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQorCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKKworICAgICMgUmVhZCBkYXRhIHVudGlsIEVPRi4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9hbGwoc2VsZiwgcmV0dXJuX2RhdGE9VHJ1ZSk6CisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIHdoaWxlIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oc2VsZi5fYnVmZmVyKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgorICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCisgICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBuID4gMCBhbmQgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIGlmIG4gPCBsZW4oc2VsZi5fYnVmZmVyKToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyWzpuXQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltuOl0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIG4gLT0gbGVuKGRhdGEpCisgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGJsb2NrcykKKworICAgIGRlZiBwZWVrKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBBbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBkYXRhLCB1bmxlc3MgYXQgRU9GLgorICAgICAgICBUaGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIElmIHNpemUgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBiIiIgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Ygb3Igc2l6ZSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBlbGlmIHNpemUgPCAwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2Jsb2NrKHNpemUpCisKKyAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHdoaWxlIHRyeWluZyB0byBhdm9pZAorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uCisKKyAgICAgICAgUmV0dXJucyBiIiIgaWYgdGhlIGZpbGUgaXMgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgIyBVc3VhbGx5LCByZWFkMSgpIGNhbGxzIF9mcC5yZWFkKCkgYXQgbW9zdCBvbmNlLiBIb3dldmVyLCBzb21ldGltZXMKKyAgICAgICAgIyB0aGlzIGRvZXMgbm90IGdpdmUgZW5vdWdoIGRhdGEgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gbWFrZSBwcm9ncmVzcy4KKyAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2UgbWFrZSBtdWx0aXBsZSByZWFkcywgdG8gYXZvaWQgcmV0dXJuaW5nIGIiIi4KKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICBpZiAoc2l6ZSA9PSAwIG9yIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Ygb3IKKyAgICAgICAgICAgIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpKToKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgaWYgMCA8IHNpemUgPCBsZW4oc2VsZi5fYnVmZmVyKToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbOnNpemVdCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2l6ZTpdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgYSBieXRlcyBvYmplY3QgdG8gdGhlIGZpbGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuLCB3aGljaCBpcworICAgICAgICBhbHdheXMgbGVuKGRhdGEpLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywgdGhlIGZpbGUgb24gZGlzaworICAgICAgICBtYXkgbm90IHJlZmxlY3QgdGhlIGRhdGEgd3JpdHRlbiB1bnRpbCBjbG9zZSgpIGlzIGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl93cml0ZSgpCisgICAgICAgIGNvbXByZXNzZWQgPSBzZWxmLl9jb21wcmVzc29yLmNvbXByZXNzKGRhdGEpCisgICAgICAgIHNlbGYuX2ZwLndyaXRlKGNvbXByZXNzZWQpCisgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgcmV0dXJuIGxlbihkYXRhKQorCisgICAgIyBSZXdpbmQgdGhlIGZpbGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YSBzdHJlYW0uCisgICAgZGVmIF9yZXdpbmQoc2VsZik6CisgICAgICAgIHNlbGYuX2ZwLnNlZWsoMCwgMCkKKyAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQUQKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQorICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKKyAgICAgICAgIiIiQ2hhbmdlIHRoZSBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIFRoZSBuZXcgcG9zaXRpb24gaXMgc3BlY2lmaWVkIGJ5IG9mZnNldCwgcmVsYXRpdmUgdG8gdGhlCisgICAgICAgIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2UuIFBvc3NpYmxlIHZhbHVlcyBmb3Igd2hlbmNlIGFyZToKKworICAgICAgICAgICAgMDogc3RhcnQgb2Ygc3RyZWFtIChkZWZhdWx0KTogb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCisgICAgICAgICAgICAxOiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbgorICAgICAgICAgICAgMjogZW5kIG9mIHN0cmVhbTsgb2Zmc2V0IG11c3Qgbm90IGJlIHBvc2l0aXZlCisKKyAgICAgICAgUmV0dXJucyB0aGUgbmV3IGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgTm90ZSB0aGF0IHNlZWtpbmcgaXMgZW11bGF0ZWQsIHNwIGRlcGVuZGluZyBvbiB0aGUgcGFyYW1ldGVycywKKyAgICAgICAgdGhpcyBvcGVyYXRpb24gbWF5IGJlIGV4dHJlbWVseSBzbG93LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3NlZWsoKQorCisgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCisgICAgICAgIGlmIHdoZW5jZSA9PSAwOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbGlmIHdoZW5jZSA9PSAxOgorICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fcG9zICsgb2Zmc2V0CisgICAgICAgIGVsaWYgd2hlbmNlID09IDI6CisgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KKyAgICAgICAgICAgIGlmIHNlbGYuX3NpemUgPCAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYWxsKHJldHVybl9kYXRhPUZhbHNlKQorICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igd2hlbmNlOiB7fSIuZm9ybWF0KHdoZW5jZSkpCisKKyAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgorICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLl9wb3M6CisgICAgICAgICAgICBzZWxmLl9yZXdpbmQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb2Zmc2V0IC09IHNlbGYuX3BvcworCisgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBkYXRhIHVudGlsIHdlIHJlYWNoIHRoZSBkZXNpcmVkIHBvc2l0aW9uLgorICAgICAgICBpZiBzZWxmLl9tb2RlICE9IF9NT0RFX1JFQURfRU9GOgorICAgICAgICAgICAgc2VsZi5fcmVhZF9ibG9jayhvZmZzZXQsIHJldHVybl9kYXRhPUZhbHNlKQorCisgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKworCitkZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCAqLAorICAgICAgICAgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lLAorICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CisgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgorCisgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvciBieXRlcyBvYmplY3QpLAorICAgIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QKKyAgICB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiIChkZWZhdWx0KSwgInciLCAid2IiLCAiYSIsIG9yICJhYiIgZm9yCisgICAgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLgorCisgICAgVGhlIGZvcm1hdCwgY2hlY2ssIHByZXNldCBhbmQgZmlsdGVycyBhcmd1bWVudHMgc3BlY2lmeSB0aGUgY29tcHJlc3Npb24KKyAgICBzZXR0aW5ncywgYXMgZm9yIExaTUFDb21wcmVzc29yLCBMWk1BRGVjb21wcmVzc29yIGFuZCBMWk1BRmlsZS4KKworICAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBMWk1BRmlsZSBjb25zdHJ1Y3RvcjoKKyAgICBMWk1BRmlsZShmaWxlbmFtZSwgbW9kZSwgLi4uKS4gSW4gdGhpcyBjYXNlLCB0aGUgZW5jb2RpbmcsIGVycm9ycyBhbmQKKyAgICBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgIEZvciB0ZXh0IG1vZGUsIGEgTFpNQUZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yIGhhbmRsaW5nCisgICAgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworICAgICIiIgorICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICBpZiAiYiIgaW4gbW9kZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKKyAgICBlbHNlOgorICAgICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlbmNvZGluZycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlcnJvcnMnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorCisgICAgbHpfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQorICAgIGJpbmFyeV9maWxlID0gTFpNQUZpbGUoZmlsZW5hbWUsIGx6X21vZGUsIGZvcm1hdD1mb3JtYXQsIGNoZWNrPWNoZWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2V0PXByZXNldCwgZmlsdGVycz1maWx0ZXJzKQorCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIHJldHVybiBpby5UZXh0SU9XcmFwcGVyKGJpbmFyeV9maWxlLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBiaW5hcnlfZmlsZQorCisKK2RlZiBjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CisgICAgIiIiQ29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgUmVmZXIgdG8gTFpNQUNvbXByZXNzb3IncyBkb2NzdHJpbmcgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCisgICAgb3B0aW9uYWwgYXJndW1lbnRzICpmb3JtYXQqLCAqY2hlY2sqLCAqcHJlc2V0KiBhbmQgKmZpbHRlcnMqLgorCisgICAgRm9yIGluY3JlbWVudGFsIGNvbXByZXNzaW9uLCB1c2UgYW4gTFpNQUNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgY29tcCA9IExaTUFDb21wcmVzc29yKGZvcm1hdCwgY2hlY2ssIHByZXNldCwgZmlsdGVycykKKyAgICByZXR1cm4gY29tcC5jb21wcmVzcyhkYXRhKSArIGNvbXAuZmx1c2goKQorCisKK2RlZiBkZWNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfQVVUTywgbWVtbGltaXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKKyAgICAiIiJEZWNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIFJlZmVyIHRvIExaTUFEZWNvbXByZXNzb3IncyBkb2NzdHJpbmcgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCisgICAgb3B0aW9uYWwgYXJndW1lbnRzICpmb3JtYXQqLCAqY2hlY2sqIGFuZCAqZmlsdGVycyouCisKKyAgICBGb3IgaW5jcmVtZW50YWwgZGVjb21wcmVzc2lvbiwgdXNlIGEgTFpNQURlY29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICAiIiIKKyAgICByZXN1bHRzID0gW10KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBkZWNvbXAgPSBMWk1BRGVjb21wcmVzc29yKGZvcm1hdCwgbWVtbGltaXQsIGZpbHRlcnMpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKGRlY29tcC5kZWNvbXByZXNzKGRhdGEpKQorICAgICAgICBpZiBub3QgZGVjb21wLmVvZjoKKyAgICAgICAgICAgIHJhaXNlIExaTUFFcnJvcigiQ29tcHJlc3NlZCBkYXRhIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisgICAgICAgIGlmIG5vdCBkZWNvbXAudW51c2VkX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4ocmVzdWx0cykKKyAgICAgICAgIyBUaGVyZSBpcyB1bnVzZWQgZGF0YSBsZWZ0IG92ZXIuIFByb2NlZWQgdG8gbmV4dCBzdHJlYW0uCisgICAgICAgIGRhdGEgPSBkZWNvbXAudW51c2VkX2RhdGEKZGlmZiAtLWdpdCBhL0xpYi9tYWlsYm94LnB5IGIvTGliL21haWxib3gucHkKaW5kZXggYzczZmI5NS4uZDNiZjNmZCAxMDA2NDQKLS0tIGEvTGliL21haWxib3gucHkKKysrIGIvTGliL21haWxib3gucHkKQEAgLTExNTcsOCArMTE1Nyw3IEBACiAgICAgZGVmIGdldF9zZXF1ZW5jZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIG5hbWUtdG8ta2V5LWxpc3QgZGljdGlvbmFyeSB0byBkZWZpbmUgZWFjaCBzZXF1ZW5jZS4iIiIKICAgICAgICAgcmVzdWx0cyA9IHt9Ci0gICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnLm1oX3NlcXVlbmNlcycpLCAncicpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnLm1oX3NlcXVlbmNlcycpLCAncicsIGVuY29kaW5nPSdBU0NJSScpIGFzIGY6CiAgICAgICAgICAgICBhbGxfa2V5cyA9IHNldChzZWxmLmtleXMoKSkKICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMTE3NywxMyArMTE3NiwxMSBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBGb3JtYXRFcnJvcignSW52YWxpZCBzZXF1ZW5jZSBzcGVjaWZpY2F0aW9uOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLnJzdHJpcCgpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiByZXN1bHRzCiAKICAgICBkZWYgc2V0X3NlcXVlbmNlcyhzZWxmLCBzZXF1ZW5jZXMpOgogICAgICAgICAiIiJTZXQgc2VxdWVuY2VzIHVzaW5nIHRoZSBnaXZlbiBuYW1lLXRvLWtleS1saXN0IGRpY3Rpb25hcnkuIiIiCi0gICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnLm1oX3NlcXVlbmNlcycpLCAncisnKQorICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3IrJywgZW5jb2Rpbmc9J0FTQ0lJJykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MuY2xvc2Uob3Mub3BlbihmLm5hbWUsIG9zLk9fV1JPTkxZIHwgb3MuT19UUlVOQykpCiAgICAgICAgICAgICBmb3IgbmFtZSwga2V5cyBpbiBzZXF1ZW5jZXMuaXRlbXMoKToKQEAgLTE1MjMsOSArMTUyMCwxMCBAQAogCiAgICAgZGVmIF9iZWNvbWVfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgIiIiQXNzdW1lIHRoZSBub24tZm9ybWF0LXNwZWNpZmljIHN0YXRlIG9mIG1lc3NhZ2UuIiIiCi0gICAgICAgIGZvciBuYW1lIGluICgnX2hlYWRlcnMnLCAnX3VuaXhmcm9tJywgJ19wYXlsb2FkJywgJ19jaGFyc2V0JywKLSAgICAgICAgICAgICAgICAgICAgICdwcmVhbWJsZScsICdlcGlsb2d1ZScsICdkZWZlY3RzJywgJ19kZWZhdWx0X3R5cGUnKToKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bbmFtZV0gPSBtZXNzYWdlLl9fZGljdF9fW25hbWVdCisgICAgICAgIHR5cGVfc3BlY2lmaWMgPSBnZXRhdHRyKG1lc3NhZ2UsICdfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzJywgW10pCisgICAgICAgIGZvciBuYW1lIGluIG1lc3NhZ2UuX19kaWN0X186CisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiB0eXBlX3NwZWNpZmljOgorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X19bbmFtZV0gPSBtZXNzYWdlLl9fZGljdF9fW25hbWVdCiAKICAgICBkZWYgX2V4cGxhaW5fdG8oc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgICIiIkNvcHkgZm9ybWF0LXNwZWNpZmljIHN0YXRlIHRvIG1lc3NhZ2UgaW5zb2ZhciBhcyBwb3NzaWJsZS4iIiIKQEAgLTE1MzgsNiArMTUzNiw4IEBACiBjbGFzcyBNYWlsZGlyTWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggTWFpbGRpci1zcGVjaWZpYyBwcm9wZXJ0aWVzLiIiIgogCisgICAgX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcyA9IFsnX3N1YmRpcicsICdfaW5mbycsICdfZGF0ZSddCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIE1haWxkaXJNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLl9zdWJkaXIgPSAnbmV3JwpAQCAtMTY0NSw2ICsxNjQ1LDggQEAKIGNsYXNzIF9tYm94TU1ERk1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIG1ib3gtIG9yIE1NREYtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19mcm9tJ10KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIG1ib3hNTURGTWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5zZXRfZnJvbSgnTUFJTEVSLURBRU1PTicsIFRydWUpCkBAIC0xNzYwLDYgKzE3NjIsOCBAQAogY2xhc3MgTUhNZXNzYWdlKE1lc3NhZ2UpOgogICAgICIiIk1lc3NhZ2Ugd2l0aCBNSC1zcGVjaWZpYyBwcm9wZXJ0aWVzLiIiIgogCisgICAgX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcyA9IFsnX3NlcXVlbmNlcyddCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBNSE1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgIHNlbGYuX3NlcXVlbmNlcyA9IFtdCkBAIC0xODMwLDYgKzE4MzQsOCBAQAogY2xhc3MgQmFieWxNZXNzYWdlKE1lc3NhZ2UpOgogICAgICIiIk1lc3NhZ2Ugd2l0aCBCYWJ5bC1zcGVjaWZpYyBwcm9wZXJ0aWVzLiIiIgogCisgICAgX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcyA9IFsnX2xhYmVscycsICdfdmlzaWJsZSddCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBCYWJ5bE1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgIHNlbGYuX2xhYmVscyA9IFtdCmRpZmYgLS1naXQgYS9MaWIvbWFpbGNhcC5weSBiL0xpYi9tYWlsY2FwLnB5CmluZGV4IDRhZTEzZDcuLjk5ZjQ5NTggMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsY2FwLnB5CisrKyBiL0xpYi9tYWlsY2FwLnB5CkBAIC0zMywxMCArMzMsMTAgQEAKIAogZGVmIGxpc3RtYWlsY2FwZmlsZXMoKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBtYWlsY2FwIGZpbGVzIGZvdW5kIG9uIHRoZSBzeXN0ZW0uIiIiCi0gICAgIyBYWFggQWN0dWFsbHksIHRoaXMgaXMgVW5peC1zcGVjaWZpYworICAgICMgVGhpcyBpcyBtb3N0bHkgYSBVbml4IHRoaW5nLCBidXQgd2UgdXNlIHRoZSBPUyBwYXRoIHNlcGFyYXRvciBhbnl3YXkKICAgICBpZiAnTUFJTENBUFMnIGluIG9zLmVudmlyb246Ci0gICAgICAgIHN0ciA9IG9zLmVudmlyb25bJ01BSUxDQVBTJ10KLSAgICAgICAgbWFpbGNhcHMgPSBzdHIuc3BsaXQoJzonKQorICAgICAgICBwYXRoc3RyID0gb3MuZW52aXJvblsnTUFJTENBUFMnXQorICAgICAgICBtYWlsY2FwcyA9IHBhdGhzdHIuc3BsaXQob3MucGF0aHNlcCkKICAgICBlbHNlOgogICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgIGhvbWUgPSBvcy5lbnZpcm9uWydIT01FJ10KZGlmZiAtLWdpdCBhL0xpYi9taW1ldHlwZXMucHkgYi9MaWIvbWltZXR5cGVzLnB5CmluZGV4IDhjZTAyZjkuLjNmMGJkMGUgMTAwNjQ0Ci0tLSBhL0xpYi9taW1ldHlwZXMucHkKKysrIGIvTGliL21pbWV0eXBlcy5weQpAQCAtMjQ5LDcgKzI0OSw2IEBACiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGN0eXBlCiAgICAgICAgICAgICAgICAgaSArPSAxCiAKLSAgICAgICAgZGVmYXVsdF9lbmNvZGluZyA9IHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQogICAgICAgICB3aXRoIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfQ0xBU1NFU19ST09ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ01JTUVcRGF0YWJhc2VcQ29udGVudCBUeXBlJykgYXMgbWltZWRiOgogICAgICAgICAgICAgZm9yIGN0eXBlIGluIGVudW1fdHlwZXMobWltZWRiKToKQEAgLTQzNCw2ICs0MzMsOCBAQAogICAgICAgICAnLmtzaCcgICAgOiAndGV4dC9wbGFpbicsCiAgICAgICAgICcubGF0ZXgnICA6ICdhcHBsaWNhdGlvbi94LWxhdGV4JywKICAgICAgICAgJy5tMXYnICAgIDogJ3ZpZGVvL21wZWcnLAorICAgICAgICAnLm0zdScgICAgOiAnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwnLAorICAgICAgICAnLm0zdTgnICAgOiAnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwnLAogICAgICAgICAnLm1hbicgICAgOiAnYXBwbGljYXRpb24veC10cm9mZi1tYW4nLAogICAgICAgICAnLm1lJyAgICAgOiAnYXBwbGljYXRpb24veC10cm9mZi1tZScsCiAgICAgICAgICcubWh0JyAgICA6ICdtZXNzYWdlL3JmYzgyMicsCmRpZmYgLS1naXQgYS9MaWIvbW9kdWxlZmluZGVyLnB5IGIvTGliL21vZHVsZWZpbmRlci5weQppbmRleCBmMDMzYmE5Li42ODNlMzA1IDEwMDY0NAotLS0gYS9MaWIvbW9kdWxlZmluZGVyLnB5CisrKyBiL0xpYi9tb2R1bGVmaW5kZXIucHkKQEAgLTEsNiArMSw1IEBACiAiIiJGaW5kIG1vZHVsZXMgdXNlZCBieSBhIHNjcmlwdCwgdXNpbmcgaW50cm9zcGVjdGlvbi4iIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3JzCiBpbXBvcnQgZGlzCiBpbXBvcnQgaW1wCiBpbXBvcnQgbWFyc2hhbApAQCAtOSw4ICs4LDYgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IHN0cnVjdAogCi1SRUFEX01PREUgPSAiclUiCi0KICMgWFhYIENsZWFuIHVwIG9uY2Ugc3RyOCdzIGNzdG9yIG1hdGNoZXMgYnl0ZXMuCiBMT0FEX0NPTlNUID0gYnl0ZXMoW2Rpcy5vcG5hbWUuaW5kZXgoJ0xPQURfQ09OU1QnKV0pCiBJTVBPUlRfTkFNRSA9IGJ5dGVzKFtkaXMub3BuYW1lLmluZGV4KCdJTVBPUlRfTkFNRScpXSkKQEAgLTI5LDkgKzI2LDcgQEAKIAogIyBBIFB1YmxpYyBpbnRlcmZhY2UKIGRlZiBBZGRQYWNrYWdlUGF0aChwYWNrYWdlbmFtZSwgcGF0aCk6Ci0gICAgcGF0aHMgPSBwYWNrYWdlUGF0aE1hcC5nZXQocGFja2FnZW5hbWUsIFtdKQotICAgIHBhdGhzLmFwcGVuZChwYXRoKQotICAgIHBhY2thZ2VQYXRoTWFwW3BhY2thZ2VuYW1lXSA9IHBhdGhzCisgICAgcGFja2FnZVBhdGhNYXAuc2V0ZGVmYXVsdChwYWNrYWdlbmFtZSwgW10pLmFwcGVuZChwYXRoKQogCiByZXBsYWNlUGFja2FnZU1hcCA9IHt9CiAKQEAgLTEwNiwxNCArMTAxLDE0IEBACiAKICAgICBkZWYgcnVuX3NjcmlwdChzZWxmLCBwYXRobmFtZSk6CiAgICAgICAgIHNlbGYubXNnKDIsICJydW5fc2NyaXB0IiwgcGF0aG5hbWUpCi0gICAgICAgIHdpdGggb3BlbihwYXRobmFtZSwgUkVBRF9NT0RFKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lKSBhcyBmcDoKICAgICAgICAgICAgIHN0dWZmID0gKCIiLCAiciIsIGltcC5QWV9TT1VSQ0UpCiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdfX21haW5fXycsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAKICAgICBkZWYgbG9hZF9maWxlKHNlbGYsIHBhdGhuYW1lKToKICAgICAgICAgZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsIFJFQURfTU9ERSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihwYXRobmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBzdHVmZiA9IChleHQsICJyIiwgaW1wLlBZX1NPVVJDRSkKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSwgZnAsIHBhdGhuYW1lLCBzdHVmZikKIApAQCAtMjI3LDggKzIyMiw5IEBACiAgICAgICAgICMgQnV0IHdlIG11c3QgYWxzbyBjb2xsZWN0IFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcyAtIGFsdGhvdWdoCiAgICAgICAgICMgd2UgY2Fubm90IHNlcGFyYXRlIG5vcm1hbCBkbGxzIGZyb20gUHl0aG9uIGV4dGVuc2lvbnMuCiAgICAgICAgIHN1ZmZpeGVzID0gW10KLSAgICAgICAgZm9yIHRyaXBsZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCk6Ci0gICAgICAgICAgICBzdWZmaXhlcy5hcHBlbmQodHJpcGxlWzBdKQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdCiAgICAgICAgIGZvciBkaXIgaW4gbS5fX3BhdGhfXzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQpAQCAtMjcwLDcgKzI2Niw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG0gPSBzZWxmLmxvYWRfbW9kdWxlKGZxbmFtZSwgZnAsIHBhdGhuYW1lLCBzdHVmZikKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIGZwOiBmcC5jbG9zZSgpCisgICAgICAgICAgICBpZiBmcDoKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgIGlmIHBhcmVudDoKICAgICAgICAgICAgIHNldGF0dHIocGFyZW50LCBwYXJ0bmFtZSwgbSkKICAgICAgICAgc2VsZi5tc2dvdXQoMywgImltcG9ydF9tb2R1bGUgLT4iLCBtKQpAQCAtNjYyLDQgKzY1OSw0IEBACiAgICAgdHJ5OgogICAgICAgICBtZiA9IHRlc3QoKQogICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuW2ludGVycnVwdF0iKQorICAgICAgICBwcmludCgiXG5baW50ZXJydXB0ZWRdIikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5CmluZGV4IGU2ZTE2YzguLjFmM2U2N2MgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQpAQCAtMTMsMzIgKzEzLDcgQEAKICMKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX3ZlcnNpb25fXyA9ICcwLjcwYTEnCkBAIC00OCw4ICsyMyw4IEBACiAgICAgJ01hbmFnZXInLCAnUGlwZScsICdjcHVfY291bnQnLCAnbG9nX3RvX3N0ZGVycicsICdnZXRfbG9nZ2VyJywKICAgICAnYWxsb3dfY29ubmVjdGlvbl9waWNrbGluZycsICdCdWZmZXJUb29TaG9ydCcsICdUaW1lb3V0RXJyb3InLAogICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ0NvbmRpdGlvbicsCi0gICAgJ0V2ZW50JywgJ1F1ZXVlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcsICdWYWx1ZScsICdBcnJheScsCi0gICAgJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1NVQkRFQlVHJywgJ1NVQldBUk5JTkcnLAorICAgICdFdmVudCcsICdCYXJyaWVyJywgJ1F1ZXVlJywgJ1NpbXBsZVF1ZXVlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcsCisgICAgJ1ZhbHVlJywgJ0FycmF5JywgJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1NVQkRFQlVHJywgJ1NVQldBUk5JTkcnLAogICAgIF0KIAogX19hdXRob3JfXyA9ICdSLiBPdWRrZXJrIChyLm0ub3Vka2Vya0BnbWFpbC5jb20pJwpAQCAtMTYxLDcgKzEzNiw5IEBACiAgICAgJycnCiAgICAgSW5zdGFsbCBzdXBwb3J0IGZvciBzZW5kaW5nIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIGJldHdlZW4gcHJvY2Vzc2VzCiAgICAgJycnCi0gICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHJlZHVjdGlvbgorICAgICMgVGhpcyBpcyB1bmRvY3VtZW50ZWQuICBJbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBtdWx0aXByb2Nlc3NpbmcKKyAgICAjIGl0cyBvbmx5IGVmZmVjdCB3YXMgdG8gbWFrZSBzb2NrZXQgb2JqZWN0cyBpbmhlcml0YWJsZSBvbiBXaW5kb3dzLgorICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbgogCiAjCiAjIERlZmluaXRpb25zIGRlcGVuZGluZyBvbiBuYXRpdmUgc2VtYXBob3JlcwpAQCAtMjA5LDYgKzE4NiwxMyBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBFdmVudAogICAgIHJldHVybiBFdmVudCgpCiAKK2RlZiBCYXJyaWVyKHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgorICAgICcnJworICAgIFJldHVybnMgYSBiYXJyaWVyIG9iamVjdAorICAgICcnJworICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBCYXJyaWVyCisgICAgcmV0dXJuIEJhcnJpZXIocGFydGllcywgYWN0aW9uLCB0aW1lb3V0KQorCiBkZWYgUXVldWUobWF4c2l6ZT0wKToKICAgICAnJycKICAgICBSZXR1cm5zIGEgcXVldWUgb2JqZWN0CkBAIC0yMjMsNiArMjA3LDEzIEBACiAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcucXVldWVzIGltcG9ydCBKb2luYWJsZVF1ZXVlCiAgICAgcmV0dXJuIEpvaW5hYmxlUXVldWUobWF4c2l6ZSkKIAorZGVmIFNpbXBsZVF1ZXVlKCk6CisgICAgJycnCisgICAgUmV0dXJucyBhIHF1ZXVlIG9iamVjdAorICAgICcnJworICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgU2ltcGxlUXVldWUKKyAgICByZXR1cm4gU2ltcGxlUXVldWUoKQorCiBkZWYgUG9vbChwcm9jZXNzZXM9Tm9uZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCksIG1heHRhc2tzcGVyY2hpbGQ9Tm9uZSk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHByb2Nlc3MgcG9vbCBvYmplY3QKQEAgLTI0NCwxOSArMjM1LDE5IEBACiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBSYXdBcnJheQogICAgIHJldHVybiBSYXdBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyKQogCi1kZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsICoqa3dkcyk6CitkZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHN5bmNocm9uaXplZCBzaGFyZWQgb2JqZWN0CiAgICAgJycnCiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBWYWx1ZQotICAgIHJldHVybiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgKiprd2RzKQorICAgIHJldHVybiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1sb2NrKQogCi1kZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiprd2RzKToKK2RlZiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBzeW5jaHJvbml6ZWQgc2hhcmVkIGFycmF5CiAgICAgJycnCiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBBcnJheQotICAgIHJldHVybiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqKmt3ZHMpCisgICAgcmV0dXJuIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsIGxvY2s9bG9jaykKIAogIwogIwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IDRmYTZmNzAuLmZiYmQ1ZDkgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTQsNDkgKzQsMzQgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCi1fX2FsbF9fID0gWyAnQ2xpZW50JywgJ0xpc3RlbmVyJywgJ1BpcGUnIF0KK19fYWxsX18gPSBbICdDbGllbnQnLCAnTGlzdGVuZXInLCAnUGlwZScsICd3YWl0JyBdCiAKK2ltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgcGlja2xlCitpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0CitpbXBvcnQgc3RydWN0CiBpbXBvcnQgZXJybm8KIGltcG9ydCB0aW1lCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBpdGVydG9vbHMKIAogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIEF1dGhlbnRpY2F0aW9uRXJyb3IKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIEF1dGhlbnRpY2F0aW9uRXJyb3IsIEJ1ZmZlclRvb1Nob3J0CiBmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBnZXRfdGVtcF9kaXIsIEZpbmFsaXplLCBzdWJfZGVidWcsIGRlYnVnCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBkdXBsaWNhdGUsIGNsb3NlCi0KK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IEZvcmtpbmdQaWNrbGVyCit0cnk6CisgICAgaW1wb3J0IF93aW5hcGkKKyAgICBmcm9tIF93aW5hcGkgaW1wb3J0IFdBSVRfT0JKRUNUXzAsIFdBSVRfVElNRU9VVCwgSU5GSU5JVEUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgcmFpc2UKKyAgICBfd2luYXBpID0gTm9uZQogCiAjCiAjCkBAIC0xMjIsNiArMTA3LDMwOSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdhZGRyZXNzIHR5cGUgb2YgJXIgdW5yZWNvZ25pemVkJyAlIGFkZHJlc3MpCiAKICMKKyMgQ29ubmVjdGlvbiBjbGFzc2VzCisjCisKK2NsYXNzIF9Db25uZWN0aW9uQmFzZToKKyAgICBfaGFuZGxlID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZSwgcmVhZGFibGU9VHJ1ZSwgd3JpdGFibGU9VHJ1ZSk6CisgICAgICAgIGhhbmRsZSA9IGhhbmRsZS5fX2luZGV4X18oKQorICAgICAgICBpZiBoYW5kbGUgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBoYW5kbGUiKQorICAgICAgICBpZiBub3QgcmVhZGFibGUgYW5kIG5vdCB3cml0YWJsZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImF0IGxlYXN0IG9uZSBvZiBgcmVhZGFibGVgIGFuZCBgd3JpdGFibGVgIG11c3QgYmUgVHJ1ZSIpCisgICAgICAgIHNlbGYuX2hhbmRsZSA9IGhhbmRsZQorICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IHJlYWRhYmxlCisgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gd3JpdGFibGUKKworICAgICMgWFhYIHNob3VsZCB3ZSB1c2UgdXRpbC5GaW5hbGl6ZSBpbnN0ZWFkIG9mIGEgX19kZWxfXz8KKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisKKyAgICBkZWYgX2NoZWNrX2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGFuZGxlIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJoYW5kbGUgaXMgY2xvc2VkIikKKworICAgIGRlZiBfY2hlY2tfcmVhZGFibGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImNvbm5lY3Rpb24gaXMgd3JpdGUtb25seSIpCisKKyAgICBkZWYgX2NoZWNrX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJjb25uZWN0aW9uIGlzIHJlYWQtb25seSIpCisKKyAgICBkZWYgX2JhZF9tZXNzYWdlX2xlbmd0aChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgcmFpc2UgSU9FcnJvcigiYmFkIG1lc3NhZ2UgbGVuZ3RoIikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGUgaXMgTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHJlYWRhYmxlIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkYWJsZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHdyaXRhYmxlIiIiCisgICAgICAgIHJldHVybiBzZWxmLl93cml0YWJsZQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiRmlsZSBkZXNjcmlwdG9yIG9yIGhhbmRsZSBvZiB0aGUgY29ubmVjdGlvbiIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIiIiCisgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IE5vbmUKKworICAgIGRlZiBzZW5kX2J5dGVzKHNlbGYsIGJ1Ziwgb2Zmc2V0PTAsIHNpemU9Tm9uZSk6CisgICAgICAgICIiIlNlbmQgdGhlIGJ5dGVzIGRhdGEgZnJvbSBhIGJ5dGVzLWxpa2Ugb2JqZWN0IiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3dyaXRhYmxlKCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAjIEhBQ0sgZm9yIGJ5dGUtaW5kZXhpbmcgb2Ygbm9uLWJ5dGV3aXNlIGJ1ZmZlcnMgKGUuZy4gYXJyYXkuYXJyYXkpCisgICAgICAgIGlmIG0uaXRlbXNpemUgPiAxOgorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZXMobSkpCisgICAgICAgIG4gPSBsZW4obSkKKyAgICAgICAgaWYgb2Zmc2V0IDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBpcyBuZWdhdGl2ZSIpCisgICAgICAgIGlmIG4gPCBvZmZzZXQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJidWZmZXIgbGVuZ3RoIDwgb2Zmc2V0IikKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2l6ZSA9IG4gLSBvZmZzZXQKKyAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNpemUgaXMgbmVnYXRpdmUiKQorICAgICAgICBlbGlmIG9mZnNldCArIHNpemUgPiBuOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCArIHNpemUiKQorICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKG1bb2Zmc2V0Om9mZnNldCArIHNpemVdKQorCisgICAgZGVmIHNlbmQoc2VsZiwgb2JqKToKKyAgICAgICAgIiIiU2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBGb3JraW5nUGlja2xlcihidWYsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MKS5kdW1wKG9iaikKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhidWYuZ2V0YnVmZmVyKCkpCisKKyAgICBkZWYgcmVjdl9ieXRlcyhzZWxmLCBtYXhsZW5ndGg9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIGJ5dGVzIGRhdGEgYXMgYSBieXRlcyBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIGlmIG1heGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbWF4bGVuZ3RoIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIG1heGxlbmd0aCIpCisgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMobWF4bGVuZ3RoKQorICAgICAgICBpZiBidWYgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCisgICAgICAgIHJldHVybiBidWYuZ2V0dmFsdWUoKQorCisgICAgZGVmIHJlY3ZfYnl0ZXNfaW50byhzZWxmLCBidWYsIG9mZnNldD0wKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlY2VpdmUgYnl0ZXMgZGF0YSBpbnRvIGEgd3JpdGVhYmxlIGJ1ZmZlci1saWtlIG9iamVjdC4KKyAgICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGJ1ZikgYXMgbToKKyAgICAgICAgICAgICMgR2V0IGJ5dGVzaXplIG9mIGFyYml0cmFyeSBidWZmZXIKKyAgICAgICAgICAgIGl0ZW1zaXplID0gbS5pdGVtc2l6ZQorICAgICAgICAgICAgYnl0ZXNpemUgPSBpdGVtc2l6ZSAqIGxlbihtKQorICAgICAgICAgICAgaWYgb2Zmc2V0IDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBvZmZzZXQiKQorICAgICAgICAgICAgZWxpZiBvZmZzZXQgPiBieXRlc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgdG9vIGxhcmdlIikKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQorICAgICAgICAgICAgc2l6ZSA9IHJlc3VsdC50ZWxsKCkKKyAgICAgICAgICAgIGlmIGJ5dGVzaXplIDwgb2Zmc2V0ICsgc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBCdWZmZXJUb29TaG9ydChyZXN1bHQuZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgICMgTWVzc2FnZSBjYW4gZml0IGluIGRlc3QKKyAgICAgICAgICAgIHJlc3VsdC5zZWVrKDApCisgICAgICAgICAgICByZXN1bHQucmVhZGludG8obVtvZmZzZXQgLy8gaXRlbXNpemUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mZnNldCArIHNpemUpIC8vIGl0ZW1zaXplXSkKKyAgICAgICAgICAgIHJldHVybiBzaXplCisKKyAgICBkZWYgcmVjdihzZWxmKToKKyAgICAgICAgIiIiUmVjZWl2ZSBhIChwaWNrbGFibGUpIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQorICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKKworICAgIGRlZiBwb2xsKHNlbGYsIHRpbWVvdXQ9MC4wKToKKyAgICAgICAgIiIiV2hldGhlciB0aGVyZSBpcyBhbnkgaW5wdXQgYXZhaWxhYmxlIHRvIGJlIHJlYWQiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9sbCh0aW1lb3V0KQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKworCitpZiBfd2luYXBpOgorCisgICAgY2xhc3MgUGlwZUNvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbm5lY3Rpb24gY2xhc3MgYmFzZWQgb24gYSBXaW5kb3dzIG5hbWVkIHBpcGUuCisgICAgICAgIE92ZXJsYXBwZWQgSS9PIGlzIHVzZWQsIHNvIHRoZSBoYW5kbGVzIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQKKyAgICAgICAgd2l0aCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRC4KKyAgICAgICAgIiIiCisgICAgICAgIF9nb3RfZW1wdHlfbWVzc2FnZSA9IEZhbHNlCisKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfQ2xvc2VIYW5kbGU9X3dpbmFwaS5DbG9zZUhhbmRsZSk6CisgICAgICAgICAgICBfQ2xvc2VIYW5kbGUoc2VsZi5faGFuZGxlKQorCisgICAgICAgIGRlZiBfc2VuZF9ieXRlcyhzZWxmLCBidWYpOgorICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuV3JpdGVGaWxlKHNlbGYuX2hhbmRsZSwgYnVmLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgd2FpdHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cygKKyAgICAgICAgICAgICAgICAgICAgICAgIFtvdi5ldmVudF0sIEZhbHNlLCBJTkZJTklURSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHdhaXRyZXMgPT0gV0FJVF9PQkpFQ1RfMAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIG92LmNhbmNlbCgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgbndyaXR0ZW4sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgIGFzc2VydCBlcnIgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG53cml0dGVuID09IGxlbihidWYpCisKKyAgICAgICAgZGVmIF9yZWN2X2J5dGVzKHNlbGYsIG1heHNpemU9Tm9uZSk6CisgICAgICAgICAgICBpZiBzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZToKKyAgICAgICAgICAgICAgICBzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBic2l6ZSA9IDEyOCBpZiBtYXhzaXplIGlzIE5vbmUgZWxzZSBtaW4obWF4c2l6ZSwgMTI4KQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoc2VsZi5faGFuZGxlLCBic2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0cmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHdhaXRyZXMgPT0gV0FJVF9PQkpFQ1RfMAorICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShvdi5nZXRidWZmZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIgPT0gX3dpbmFwaS5FUlJPUl9NT1JFX0RBVEE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9tb3JlX2RhdGEob3YsIG1heHNpemUpCisgICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciA9PSBfd2luYXBpLkVSUk9SX0JST0tFTl9QSVBFOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNob3VsZG4ndCBnZXQgaGVyZTsgZXhwZWN0ZWQgS2V5Ym9hcmRJbnRlcnJ1cHQiKQorCisgICAgICAgIGRlZiBfcG9sbChzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgICAgIGlmIChzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5QZWVrTmFtZWRQaXBlKHNlbGYuX2hhbmRsZSlbMF0gIT0gMCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBib29sKHdhaXQoW3NlbGZdLCB0aW1lb3V0KSkKKworICAgICAgICBkZWYgX2dldF9tb3JlX2RhdGEoc2VsZiwgb3YsIG1heHNpemUpOgorICAgICAgICAgICAgYnVmID0gb3YuZ2V0YnVmZmVyKCkKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIGYud3JpdGUoYnVmKQorICAgICAgICAgICAgbGVmdCA9IF93aW5hcGkuUGVla05hbWVkUGlwZShzZWxmLl9oYW5kbGUpWzFdCisgICAgICAgICAgICBhc3NlcnQgbGVmdCA+IDAKKyAgICAgICAgICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIGxlbihidWYpICsgbGVmdCA+IG1heHNpemU6CisgICAgICAgICAgICAgICAgc2VsZi5fYmFkX21lc3NhZ2VfbGVuZ3RoKCkKKyAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLlJlYWRGaWxlKHNlbGYuX2hhbmRsZSwgbGVmdCwgb3ZlcmxhcHBlZD1UcnVlKQorICAgICAgICAgICAgcmJ5dGVzLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIGFzc2VydCByYnl0ZXMgPT0gbGVmdAorICAgICAgICAgICAgZi53cml0ZShvdi5nZXRidWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmCisKKworY2xhc3MgQ29ubmVjdGlvbihfQ29ubmVjdGlvbkJhc2UpOgorICAgICIiIgorICAgIENvbm5lY3Rpb24gY2xhc3MgYmFzZWQgb24gYW4gYXJiaXRyYXJ5IGZpbGUgZGVzY3JpcHRvciAoVW5peCBvbmx5KSwgb3IKKyAgICBhIHNvY2tldCBoYW5kbGUgKFdpbmRvd3MpLgorICAgICIiIgorCisgICAgaWYgX3dpbmFwaToKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9X211bHRpcHJvY2Vzc2luZy5jbG9zZXNvY2tldCk6CisgICAgICAgICAgICBfY2xvc2Uoc2VsZi5faGFuZGxlKQorICAgICAgICBfd3JpdGUgPSBfbXVsdGlwcm9jZXNzaW5nLnNlbmQKKyAgICAgICAgX3JlYWQgPSBfbXVsdGlwcm9jZXNzaW5nLnJlY3YKKyAgICBlbHNlOgorICAgICAgICBkZWYgX2Nsb3NlKHNlbGYsIF9jbG9zZT1vcy5jbG9zZSk6CisgICAgICAgICAgICBfY2xvc2Uoc2VsZi5faGFuZGxlKQorICAgICAgICBfd3JpdGUgPSBvcy53cml0ZQorICAgICAgICBfcmVhZCA9IG9zLnJlYWQKKworICAgIGRlZiBfc2VuZChzZWxmLCBidWYsIHdyaXRlPV93cml0ZSk6CisgICAgICAgIHJlbWFpbmluZyA9IGxlbihidWYpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBuID0gd3JpdGUoc2VsZi5faGFuZGxlLCBidWYpCisgICAgICAgICAgICByZW1haW5pbmcgLT0gbgorICAgICAgICAgICAgaWYgcmVtYWluaW5nID09IDA6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGJ1ZiA9IGJ1ZltuOl0KKworICAgIGRlZiBfcmVjdihzZWxmLCBzaXplLCByZWFkPV9yZWFkKToKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZSA9IHNlbGYuX2hhbmRsZQorICAgICAgICByZW1haW5pbmcgPSBzaXplCisgICAgICAgIHdoaWxlIHJlbWFpbmluZyA+IDA6CisgICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCisgICAgICAgICAgICBuID0gbGVuKGNodW5rKQorICAgICAgICAgICAgaWYgbiA9PSAwOgorICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSBzaXplOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImdvdCBlbmQgb2YgZmlsZSBkdXJpbmcgbWVzc2FnZSIpCisgICAgICAgICAgICBidWYud3JpdGUoY2h1bmspCisgICAgICAgICAgICByZW1haW5pbmcgLT0gbgorICAgICAgICByZXR1cm4gYnVmCisKKyAgICBkZWYgX3NlbmRfYnl0ZXMoc2VsZiwgYnVmKToKKyAgICAgICAgIyBGb3Igd2lyZSBjb21wYXRpYmlsaXR5IHdpdGggMy4yIGFuZCBsb3dlcgorICAgICAgICBuID0gbGVuKGJ1ZikKKyAgICAgICAgc2VsZi5fc2VuZChzdHJ1Y3QucGFjaygiIWkiLCBuKSkKKyAgICAgICAgIyBUaGUgY29uZGl0aW9uIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycworICAgICAgICAjIHdoZW4gc2VuZGluZyBhIDAtbGVuZ3RoIGJ1ZmZlciBpZiB0aGUgb3RoZXIgZW5kIGNsb3NlZCB0aGUgcGlwZS4KKyAgICAgICAgaWYgbiA+IDA6CisgICAgICAgICAgICBzZWxmLl9zZW5kKGJ1ZikKKworICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgorICAgICAgICBidWYgPSBzZWxmLl9yZWN2KDQpCisgICAgICAgIHNpemUsID0gc3RydWN0LnVucGFjaygiIWkiLCBidWYuZ2V0dmFsdWUoKSkKKyAgICAgICAgaWYgbWF4c2l6ZSBpcyBub3QgTm9uZSBhbmQgc2l6ZSA+IG1heHNpemU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fcmVjdihzaXplKQorCisgICAgZGVmIF9wb2xsKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICByID0gd2FpdChbc2VsZi5faGFuZGxlXSwgdGltZW91dCkKKyAgICAgICAgcmV0dXJuIGJvb2wocikKKworCisjCiAjIFB1YmxpYyBmdW5jdGlvbnMKICMKIApAQCAtMTU0LDYgKzQ0Miw4IEBACiAKICAgICAgICAgUmV0dXJucyBhIGBDb25uZWN0aW9uYCBvYmplY3QuCiAgICAgICAgICcnJworICAgICAgICBpZiBzZWxmLl9saXN0ZW5lciBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignbGlzdGVuZXIgaXMgY2xvc2VkJykKICAgICAgICAgYyA9IHNlbGYuX2xpc3RlbmVyLmFjY2VwdCgpCiAgICAgICAgIGlmIHNlbGYuX2F1dGhrZXk6CiAgICAgICAgICAgICBkZWxpdmVyX2NoYWxsZW5nZShjLCBzZWxmLl9hdXRoa2V5KQpAQCAtMTY0LDExICs0NTQsMTkgQEAKICAgICAgICAgJycnCiAgICAgICAgIENsb3NlIHRoZSBib3VuZCBzb2NrZXQgb3IgbmFtZWQgcGlwZSBvZiBgc2VsZmAuCiAgICAgICAgICcnJwotICAgICAgICByZXR1cm4gc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQorICAgICAgICBpZiBzZWxmLl9saXN0ZW5lciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQogCiAgICAgYWRkcmVzcyA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9saXN0ZW5lci5fYWRkcmVzcykKICAgICBsYXN0X2FjY2VwdGVkID0gcHJvcGVydHkobGFtYmRhIHNlbGY6IHNlbGYuX2xpc3RlbmVyLl9sYXN0X2FjY2VwdGVkKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogCiBkZWYgQ2xpZW50KGFkZHJlc3MsIGZhbWlseT1Ob25lLCBhdXRoa2V5PU5vbmUpOgogICAgICcnJwpAQCAtMjAxLDU2ICs0OTksNTIgQEAKICAgICAgICAgICAgIHMxLCBzMiA9IHNvY2tldC5zb2NrZXRwYWlyKCkKICAgICAgICAgICAgIHMxLnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgICAgICBzMi5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICAgICAgYzEgPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24ob3MuZHVwKHMxLmZpbGVubygpKSkKLSAgICAgICAgICAgIGMyID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKG9zLmR1cChzMi5maWxlbm8oKSkpCi0gICAgICAgICAgICBzMS5jbG9zZSgpCi0gICAgICAgICAgICBzMi5jbG9zZSgpCisgICAgICAgICAgICBjMSA9IENvbm5lY3Rpb24oczEuZGV0YWNoKCkpCisgICAgICAgICAgICBjMiA9IENvbm5lY3Rpb24oczIuZGV0YWNoKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmZDEsIGZkMiA9IG9zLnBpcGUoKQotICAgICAgICAgICAgYzEgPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oZmQxLCB3cml0YWJsZT1GYWxzZSkKLSAgICAgICAgICAgIGMyID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkMiwgcmVhZGFibGU9RmFsc2UpCisgICAgICAgICAgICBjMSA9IENvbm5lY3Rpb24oZmQxLCB3cml0YWJsZT1GYWxzZSkKKyAgICAgICAgICAgIGMyID0gQ29ubmVjdGlvbihmZDIsIHJlYWRhYmxlPUZhbHNlKQogCiAgICAgICAgIHJldHVybiBjMSwgYzIKIAogZWxzZToKIAotICAgIGZyb20gX211bHRpcHJvY2Vzc2luZyBpbXBvcnQgd2luMzIKLQogICAgIGRlZiBQaXBlKGR1cGxleD1UcnVlKToKICAgICAgICAgJycnCiAgICAgICAgIFJldHVybnMgcGFpciBvZiBjb25uZWN0aW9uIG9iamVjdHMgYXQgZWl0aGVyIGVuZCBvZiBhIHBpcGUKICAgICAgICAgJycnCiAgICAgICAgIGFkZHJlc3MgPSBhcmJpdHJhcnlfYWRkcmVzcygnQUZfUElQRScpCiAgICAgICAgIGlmIGR1cGxleDoKLSAgICAgICAgICAgIG9wZW5tb2RlID0gd2luMzIuUElQRV9BQ0NFU1NfRFVQTEVYCi0gICAgICAgICAgICBhY2Nlc3MgPSB3aW4zMi5HRU5FUklDX1JFQUQgfCB3aW4zMi5HRU5FUklDX1dSSVRFCisgICAgICAgICAgICBvcGVubW9kZSA9IF93aW5hcGkuUElQRV9BQ0NFU1NfRFVQTEVYCisgICAgICAgICAgICBhY2Nlc3MgPSBfd2luYXBpLkdFTkVSSUNfUkVBRCB8IF93aW5hcGkuR0VORVJJQ19XUklURQogICAgICAgICAgICAgb2JzaXplLCBpYnNpemUgPSBCVUZTSVpFLCBCVUZTSVpFCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGVubW9kZSA9IHdpbjMyLlBJUEVfQUNDRVNTX0lOQk9VTkQKLSAgICAgICAgICAgIGFjY2VzcyA9IHdpbjMyLkdFTkVSSUNfV1JJVEUKKyAgICAgICAgICAgIG9wZW5tb2RlID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19JTkJPVU5ECisgICAgICAgICAgICBhY2Nlc3MgPSBfd2luYXBpLkdFTkVSSUNfV1JJVEUKICAgICAgICAgICAgIG9ic2l6ZSwgaWJzaXplID0gMCwgQlVGU0laRQogCi0gICAgICAgIGgxID0gd2luMzIuQ3JlYXRlTmFtZWRQaXBlKAotICAgICAgICAgICAgYWRkcmVzcywgb3Blbm1vZGUsCi0gICAgICAgICAgICB3aW4zMi5QSVBFX1RZUEVfTUVTU0FHRSB8IHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8Ci0gICAgICAgICAgICB3aW4zMi5QSVBFX1dBSVQsCi0gICAgICAgICAgICAxLCBvYnNpemUsIGlic2l6ZSwgd2luMzIuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIHdpbjMyLk5VTEwKKyAgICAgICAgaDEgPSBfd2luYXBpLkNyZWF0ZU5hbWVkUGlwZSgKKyAgICAgICAgICAgIGFkZHJlc3MsIG9wZW5tb2RlIHwgX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRCB8CisgICAgICAgICAgICBfd2luYXBpLkZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFLAorICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1RZUEVfTUVTU0FHRSB8IF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFIHwKKyAgICAgICAgICAgIF93aW5hcGkuUElQRV9XQUlULAorICAgICAgICAgICAgMSwgb2JzaXplLCBpYnNpemUsIF93aW5hcGkuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgKQotICAgICAgICBoMiA9IHdpbjMyLkNyZWF0ZUZpbGUoCi0gICAgICAgICAgICBhZGRyZXNzLCBhY2Nlc3MsIDAsIHdpbjMyLk5VTEwsIHdpbjMyLk9QRU5fRVhJU1RJTkcsIDAsIHdpbjMyLk5VTEwKKyAgICAgICAgaDIgPSBfd2luYXBpLkNyZWF0ZUZpbGUoCisgICAgICAgICAgICBhZGRyZXNzLCBhY2Nlc3MsIDAsIF93aW5hcGkuTlVMTCwgX3dpbmFwaS5PUEVOX0VYSVNUSU5HLAorICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgX3dpbmFwaS5OVUxMCiAgICAgICAgICAgICApCi0gICAgICAgIHdpbjMyLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAotICAgICAgICAgICAgaDIsIHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQorICAgICAgICBfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAorICAgICAgICAgICAgaDIsIF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFLCBOb25lLCBOb25lCiAgICAgICAgICAgICApCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2luMzIuQ29ubmVjdE5hbWVkUGlwZShoMSwgd2luMzIuTlVMTCkKLSAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5hcmdzWzBdICE9IHdpbjMyLkVSUk9SX1BJUEVfQ09OTkVDVEVEOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIG92ZXJsYXBwZWQgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaDEsIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgXywgZXJyID0gb3ZlcmxhcHBlZC5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgIGFzc2VydCBlcnIgPT0gMAogCi0gICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbihoMSwgd3JpdGFibGU9ZHVwbGV4KQotICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaDIsIHJlYWRhYmxlPWR1cGxleCkKKyAgICAgICAgYzEgPSBQaXBlQ29ubmVjdGlvbihoMSwgd3JpdGFibGU9ZHVwbGV4KQorICAgICAgICBjMiA9IFBpcGVDb25uZWN0aW9uKGgyLCByZWFkYWJsZT1kdXBsZXgpCiAKICAgICAgICAgcmV0dXJuIGMxLCBjMgogCkBAIC0yNjUsMTIgKzU1OSwxNSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzLCBmYW1pbHksIGJhY2tsb2c9MSk6CiAgICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldC5zb2NrZXQoZ2V0YXR0cihzb2NrZXQsIGZhbWlseSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQorICAgICAgICAgICAgIyBTT19SRVVTRUFERFIgaGFzIGRpZmZlcmVudCBzZW1hbnRpY3Mgb24gV2luZG93cyAoaXNzdWUgIzI1NTApLgorICAgICAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT19SRVVTRUFERFIsIDEpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0YmxvY2tpbmcoVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX3NvY2tldC5iaW5kKGFkZHJlc3MpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQubGlzdGVuKGJhY2tsb2cpCiAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gc2VsZi5fc29ja2V0LmdldHNvY2tuYW1lKCkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgc2VsZi5fZmFtaWx5ID0gZmFtaWx5CkBAIC0yODYsMTAgKzU4Myw3IEBACiAgICAgZGVmIGFjY2VwdChzZWxmKToKICAgICAgICAgcywgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IHNlbGYuX3NvY2tldC5hY2NlcHQoKQogICAgICAgICBzLnNldGJsb2NraW5nKFRydWUpCi0gICAgICAgIGZkID0gZHVwbGljYXRlKHMuZmlsZW5vKCkpCi0gICAgICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oZmQpCi0gICAgICAgIHMuY2xvc2UoKQotICAgICAgICByZXR1cm4gY29ubgorICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihzLmRldGFjaCgpKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQpAQCAtMzA0LDI0ICs1OTgsOCBAQAogICAgIGZhbWlseSA9IGFkZHJlc3NfdHlwZShhZGRyZXNzKQogICAgIHdpdGggc29ja2V0LnNvY2tldCggZ2V0YXR0cihzb2NrZXQsIGZhbWlseSkgKSBhcyBzOgogICAgICAgICBzLnNldGJsb2NraW5nKFRydWUpCi0gICAgICAgIHQgPSBfaW5pdF90aW1lb3V0KCkKLQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChhZGRyZXNzKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSBlcnJuby5FQ09OTlJFRlVTRUQgb3IgX2NoZWNrX3RpbWVvdXQodCk6Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKCdmYWlsZWQgdG8gY29ubmVjdCB0byBhZGRyZXNzICVzJywgYWRkcmVzcykKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgIGZkID0gZHVwbGljYXRlKHMuZmlsZW5vKCkpCi0gICAgY29ubiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihmZCkKLSAgICByZXR1cm4gY29ubgorICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIAogIwogIyBEZWZpbml0aW9ucyBmb3IgY29ubmVjdGlvbnMgYmFzZWQgb24gbmFtZWQgcGlwZXMKQEAgLTMzNSw0OCArNjEzLDU1IEBACiAgICAgICAgICcnJwogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgYmFja2xvZz1Ob25lKToKICAgICAgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBhZGRyZXNzCi0gICAgICAgICAgICBoYW5kbGUgPSB3aW4zMi5DcmVhdGVOYW1lZFBpcGUoCi0gICAgICAgICAgICAgICAgYWRkcmVzcywgd2luMzIuUElQRV9BQ0NFU1NfRFVQTEVYLAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfVFlQRV9NRVNTQUdFIHwgd2luMzIuUElQRV9SRUFETU9ERV9NRVNTQUdFIHwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1dBSVQsCi0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9VTkxJTUlURURfSU5TVEFOQ0VTLCBCVUZTSVpFLCBCVUZTSVpFLAotICAgICAgICAgICAgICAgIHdpbjMyLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCB3aW4zMi5OVUxMCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5faGFuZGxlX3F1ZXVlID0gW2hhbmRsZV0KKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZSA9IFtzZWxmLl9uZXdfaGFuZGxlKGZpcnN0PVRydWUpXQorCiAgICAgICAgICAgICBzZWxmLl9sYXN0X2FjY2VwdGVkID0gTm9uZQotCiAgICAgICAgICAgICBzdWJfZGVidWcoJ2xpc3RlbmVyIGNyZWF0ZWQgd2l0aCBhZGRyZXNzPSVyJywgc2VsZi5fYWRkcmVzcykKLQogICAgICAgICAgICAgc2VsZi5jbG9zZSA9IEZpbmFsaXplKAogICAgICAgICAgICAgICAgIHNlbGYsIFBpcGVMaXN0ZW5lci5fZmluYWxpemVfcGlwZV9saXN0ZW5lciwKICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLl9oYW5kbGVfcXVldWUsIHNlbGYuX2FkZHJlc3MpLCBleGl0cHJpb3JpdHk9MAogICAgICAgICAgICAgICAgICkKIAotICAgICAgICBkZWYgYWNjZXB0KHNlbGYpOgotICAgICAgICAgICAgbmV3aGFuZGxlID0gd2luMzIuQ3JlYXRlTmFtZWRQaXBlKAotICAgICAgICAgICAgICAgIHNlbGYuX2FkZHJlc3MsIHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1RZUEVfTUVTU0FHRSB8IHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8Ci0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKLSAgICAgICAgICAgICAgICB3aW4zMi5OTVBXQUlUX1dBSVRfRk9SRVZFUiwgd2luMzIuTlVMTAorICAgICAgICBkZWYgX25ld19oYW5kbGUoc2VsZiwgZmlyc3Q9RmFsc2UpOgorICAgICAgICAgICAgZmxhZ3MgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWCB8IF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQKKyAgICAgICAgICAgIGlmIGZpcnN0OgorICAgICAgICAgICAgICAgIGZsYWdzIHw9IF93aW5hcGkuRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UKKyAgICAgICAgICAgIHJldHVybiBfd2luYXBpLkNyZWF0ZU5hbWVkUGlwZSgKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzLCBmbGFncywKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVFlQRV9NRVNTQUdFIHwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAorICAgICAgICAgICAgICAgIF93aW5hcGkuUElQRV9XQUlULAorICAgICAgICAgICAgICAgIF93aW5hcGkuUElQRV9VTkxJTUlURURfSU5TVEFOQ0VTLCBCVUZTSVpFLCBCVUZTSVpFLAorICAgICAgICAgICAgICAgIF93aW5hcGkuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZS5hcHBlbmQobmV3aGFuZGxlKQorCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZik6CisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUuYXBwZW5kKHNlbGYuX25ld19oYW5kbGUoKSkKICAgICAgICAgICAgIGhhbmRsZSA9IHNlbGYuX2hhbmRsZV9xdWV1ZS5wb3AoMCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aW4zMi5Db25uZWN0TmFtZWRQaXBlKGhhbmRsZSwgd2luMzIuTlVMTCkKLSAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBvdiA9IF93aW5hcGkuQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciAhPSBfd2luYXBpLkVSUk9SX05PX0RBVEE6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgIyBFUlJPUl9OT19EQVRBIGNhbiBvY2N1ciBpZiBhIGNsaWVudCBoYXMgYWxyZWFkeSBjb25uZWN0ZWQsCiAgICAgICAgICAgICAgICAgIyB3cml0dGVuIGRhdGEgYW5kIHRoZW4gZGlzY29ubmVjdGVkIC0tIHNlZSBJc3N1ZSAxNDcyNS4KLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gbm90IGluICh3aW4zMi5FUlJPUl9QSVBFX0NPTk5FQ1RFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW4zMi5FUlJPUl9OT19EQVRBKToKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXMgPSBfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMoCisgICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGhhbmRsZSkKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIHJldHVybiBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKGhhbmRsZSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBfLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBlcnIgPT0gMAorICAgICAgICAgICAgcmV0dXJuIFBpcGVDb25uZWN0aW9uKGhhbmRsZSkKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBfZmluYWxpemVfcGlwZV9saXN0ZW5lcihxdWV1ZSwgYWRkcmVzcyk6CiAgICAgICAgICAgICBzdWJfZGVidWcoJ2Nsb3NpbmcgbGlzdGVuZXIgd2l0aCBhZGRyZXNzPSVyJywgYWRkcmVzcykKICAgICAgICAgICAgIGZvciBoYW5kbGUgaW4gcXVldWU6Ci0gICAgICAgICAgICAgICAgY2xvc2UoaGFuZGxlKQorICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaGFuZGxlKQogCiAgICAgZGVmIFBpcGVDbGllbnQoYWRkcmVzcyk6CiAgICAgICAgICcnJwpAQCAtMzg1LDI0ICs2NzAsMjUgQEAKICAgICAgICAgdCA9IF9pbml0X3RpbWVvdXQoKQogICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpbjMyLldhaXROYW1lZFBpcGUoYWRkcmVzcywgMTAwMCkKLSAgICAgICAgICAgICAgICBoID0gd2luMzIuQ3JlYXRlRmlsZSgKLSAgICAgICAgICAgICAgICAgICAgYWRkcmVzcywgd2luMzIuR0VORVJJQ19SRUFEIHwgd2luMzIuR0VORVJJQ19XUklURSwKLSAgICAgICAgICAgICAgICAgICAgMCwgd2luMzIuTlVMTCwgd2luMzIuT1BFTl9FWElTVElORywgMCwgd2luMzIuTlVMTAorICAgICAgICAgICAgICAgIF93aW5hcGkuV2FpdE5hbWVkUGlwZShhZGRyZXNzLCAxMDAwKQorICAgICAgICAgICAgICAgIGggPSBfd2luYXBpLkNyZWF0ZUZpbGUoCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIF93aW5hcGkuR0VORVJJQ19SRUFEIHwgX3dpbmFwaS5HRU5FUklDX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgX3dpbmFwaS5OVUxMCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gbm90IGluICh3aW4zMi5FUlJPUl9TRU1fVElNRU9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW4zMi5FUlJPUl9QSVBFX0JVU1kpIG9yIF9jaGVja190aW1lb3V0KHQpOgorICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3Igbm90IGluIChfd2luYXBpLkVSUk9SX1NFTV9USU1FT1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkVSUk9SX1BJUEVfQlVTWSkgb3IgX2NoZWNrX3RpbWVvdXQodCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZQogCi0gICAgICAgIHdpbjMyLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAotICAgICAgICAgICAgaCwgd2luMzIuUElQRV9SRUFETU9ERV9NRVNTQUdFLCBOb25lLCBOb25lCisgICAgICAgIF93aW5hcGkuU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoCisgICAgICAgICAgICBoLCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbihoKQorICAgICAgICByZXR1cm4gUGlwZUNvbm5lY3Rpb24oaCkKIAogIwogIyBBdXRoZW50aWNhdGlvbiBzdHVmZgpAQCAtNDU5LDEwICs3NDUsMTAgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2xvYWRzKHMpCiAKIGRlZiBfeG1sX2R1bXBzKG9iaik6Ci0gICAgcmV0dXJuIHhtbHJwY2xpYi5kdW1wcygob2JqLCksIE5vbmUsIE5vbmUsIE5vbmUsIDEpLmVuY29kZSgndXRmOCcpCisgICAgcmV0dXJuIHhtbHJwY2xpYi5kdW1wcygob2JqLCksIE5vbmUsIE5vbmUsIE5vbmUsIDEpLmVuY29kZSgndXRmLTgnKQogCiBkZWYgX3htbF9sb2FkcyhzKToKLSAgICAob2JqLCksIG1ldGhvZCA9IHhtbHJwY2xpYi5sb2FkcyhzLmRlY29kZSgndXRmOCcpKQorICAgIChvYmosKSwgbWV0aG9kID0geG1scnBjbGliLmxvYWRzKHMuZGVjb2RlKCd1dGYtOCcpKQogICAgIHJldHVybiBvYmoKIAogY2xhc3MgWG1sTGlzdGVuZXIoTGlzdGVuZXIpOgpAQCAtNDc2LDMgKzc2MiwxNDAgQEAKICAgICBnbG9iYWwgeG1scnBjbGliCiAgICAgaW1wb3J0IHhtbHJwYy5jbGllbnQgYXMgeG1scnBjbGliCiAgICAgcmV0dXJuIENvbm5lY3Rpb25XcmFwcGVyKENsaWVudCgqYXJncywgKiprd2RzKSwgX3htbF9kdW1wcywgX3htbF9sb2FkcykKKworIworIyBXYWl0CisjCisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorCisgICAgZGVmIF9leGhhdXN0aXZlX3dhaXQoaGFuZGxlcywgdGltZW91dCk6CisgICAgICAgICMgUmV0dXJuIEFMTCBoYW5kbGVzIHdoaWNoIGFyZSBjdXJyZW50bHkgc2lnbmFsbGVkLiAgKE9ubHkKKyAgICAgICAgIyByZXR1cm5pbmcgdGhlIGZpcnN0IHNpZ25hbGxlZCBtaWdodCBjcmVhdGUgc3RhcnZhdGlvbiBpc3N1ZXMuKQorICAgICAgICBMID0gbGlzdChoYW5kbGVzKQorICAgICAgICByZWFkeSA9IFtdCisgICAgICAgIHdoaWxlIEw6CisgICAgICAgICAgICByZXMgPSBfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMoTCwgRmFsc2UsIHRpbWVvdXQpCisgICAgICAgICAgICBpZiByZXMgPT0gV0FJVF9USU1FT1VUOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIFdBSVRfT0JKRUNUXzAgPD0gcmVzIDwgV0FJVF9PQkpFQ1RfMCArIGxlbihMKToKKyAgICAgICAgICAgICAgICByZXMgLT0gV0FJVF9PQkpFQ1RfMAorICAgICAgICAgICAgZWxpZiBXQUlUX0FCQU5ET05FRF8wIDw9IHJlcyA8IFdBSVRfQUJBTkRPTkVEXzAgKyBsZW4oTCk6CisgICAgICAgICAgICAgICAgcmVzIC09IFdBSVRfQUJBTkRPTkVEXzAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdTaG91bGQgbm90IGdldCBoZXJlJykKKyAgICAgICAgICAgIHJlYWR5LmFwcGVuZChMW3Jlc10pCisgICAgICAgICAgICBMID0gTFtyZXMrMTpdCisgICAgICAgICAgICB0aW1lb3V0ID0gMAorICAgICAgICByZXR1cm4gcmVhZHkKKworICAgIF9yZWFkeV9lcnJvcnMgPSB7X3dpbmFwaS5FUlJPUl9CUk9LRU5fUElQRSwgX3dpbmFwaS5FUlJPUl9ORVROQU1FX0RFTEVURUR9CisKKyAgICBkZWYgd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIFdhaXQgdGlsbCBhbiBvYmplY3QgaW4gb2JqZWN0X2xpc3QgaXMgcmVhZHkvcmVhZGFibGUuCisKKyAgICAgICAgUmV0dXJucyBsaXN0IG9mIHRob3NlIG9iamVjdHMgaW4gb2JqZWN0X2xpc3Qgd2hpY2ggYXJlIHJlYWR5L3JlYWRhYmxlLgorICAgICAgICAnJycKKyAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgdGltZW91dCA9IElORklOSVRFCisgICAgICAgIGVsaWYgdGltZW91dCA8IDA6CisgICAgICAgICAgICB0aW1lb3V0ID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGltZW91dCA9IGludCh0aW1lb3V0ICogMTAwMCArIDAuNSkKKworICAgICAgICBvYmplY3RfbGlzdCA9IGxpc3Qob2JqZWN0X2xpc3QpCisgICAgICAgIHdhaXRoYW5kbGVfdG9fb2JqID0ge30KKyAgICAgICAgb3ZfbGlzdCA9IFtdCisgICAgICAgIHJlYWR5X29iamVjdHMgPSBzZXQoKQorICAgICAgICByZWFkeV9oYW5kbGVzID0gc2V0KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgbyBpbiBvYmplY3RfbGlzdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZpbGVubyA9IGdldGF0dHIobywgJ2ZpbGVubycpCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICB3YWl0aGFuZGxlX3RvX29ialtvLl9faW5kZXhfXygpXSA9IG8KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0IGFuIG92ZXJsYXBwZWQgcmVhZCBvZiBsZW5ndGggemVybworICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBvdiwgZXJyID0gX3dpbmFwaS5SZWFkRmlsZShmaWxlbm8oKSwgMCwgVHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IGUud2luZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyciBub3QgaW4gX3JlYWR5X2Vycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICBpZiBlcnIgPT0gX3dpbmFwaS5FUlJPUl9JT19QRU5ESU5HOgorICAgICAgICAgICAgICAgICAgICAgICAgb3ZfbGlzdC5hcHBlbmQob3YpCisgICAgICAgICAgICAgICAgICAgICAgICB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0gPSBvCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIG8uZmlsZW5vKCkgaXMgYW4gb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZXJyID09IDAgdGhlbiB0aGVyZSBpcyBhIHplcm8gbGVuZ3RoIG1lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIHBpcGUsIGJ1dCBpdCBIQVMgTk9UIGJlZW4gY29uc3VtZWQuCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkeV9vYmplY3RzLmFkZChvKQorICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IDAKKworICAgICAgICAgICAgcmVhZHlfaGFuZGxlcyA9IF9leGhhdXN0aXZlX3dhaXQod2FpdGhhbmRsZV90b19vYmoua2V5cygpLCB0aW1lb3V0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyByZXF1ZXN0IHRoYXQgb3ZlcmxhcHBlZCByZWFkcyBzdG9wCisgICAgICAgICAgICBmb3Igb3YgaW4gb3ZfbGlzdDoKKyAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorCisgICAgICAgICAgICAjIHdhaXQgZm9yIGFsbCBvdmVybGFwcGVkIHJlYWRzIHRvIHN0b3AKKyAgICAgICAgICAgIGZvciBvdiBpbiBvdl9saXN0OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGVyciA9IGUud2luZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyIG5vdCBpbiBfcmVhZHlfZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBpZiBlcnIgIT0gX3dpbmFwaS5FUlJPUl9PUEVSQVRJT05fQUJPUlRFRDoKKyAgICAgICAgICAgICAgICAgICAgbyA9IHdhaXRoYW5kbGVfdG9fb2JqW292LmV2ZW50XQorICAgICAgICAgICAgICAgICAgICByZWFkeV9vYmplY3RzLmFkZChvKQorICAgICAgICAgICAgICAgICAgICBpZiBlcnIgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgby5maWxlbm8oKSBpcyBhbiBvdmVybGFwcGVkIHBpcGUgaGFuZGxlIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgYSB6ZXJvIGxlbmd0aCBtZXNzYWdlIEhBUyBiZWVuIGNvbnN1bWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihvLCAnX2dvdF9lbXB0eV9tZXNzYWdlJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5fZ290X2VtcHR5X21lc3NhZ2UgPSBUcnVlCisKKyAgICAgICAgcmVhZHlfb2JqZWN0cy51cGRhdGUod2FpdGhhbmRsZV90b19vYmpbaF0gZm9yIGggaW4gcmVhZHlfaGFuZGxlcykKKyAgICAgICAgcmV0dXJuIFtvIGZvciBvIGluIG9iamVjdF9saXN0IGlmIG8gaW4gcmVhZHlfb2JqZWN0c10KKworZWxzZToKKworICAgIGRlZiB3YWl0KG9iamVjdF9saXN0LCB0aW1lb3V0PU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgV2FpdCB0aWxsIGFuIG9iamVjdCBpbiBvYmplY3RfbGlzdCBpcyByZWFkeS9yZWFkYWJsZS4KKworICAgICAgICBSZXR1cm5zIGxpc3Qgb2YgdGhvc2Ugb2JqZWN0cyBpbiBvYmplY3RfbGlzdCB3aGljaCBhcmUgcmVhZHkvcmVhZGFibGUuCisgICAgICAgICcnJworICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgdGltZW91dCA8PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Quc2VsZWN0KG9iamVjdF9saXN0LCBbXSwgW10sIDApWzBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyB0aW1lb3V0CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdC5zZWxlY3Qob2JqZWN0X2xpc3QsIFtdLCBbXSwgdGltZW91dClbMF0KKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKKworIworIyBNYWtlIGNvbm5lY3Rpb24gYW5kIHNvY2tldCBvYmplY3RzIHNoYXJhYmxlIGlmIHBvc3NpYmxlCisjCisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCisgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgcmVkdWN0aW9uLnJlZHVjZV9zb2NrZXQpCisgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9jb25uZWN0aW9uKQorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKFBpcGVDb25uZWN0aW9uLCByZWR1Y3Rpb24ucmVkdWNlX3BpcGVfY29ubmVjdGlvbikKK2Vsc2U6CisgICAgdHJ5OgorICAgICAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjdGlvbi5yZWR1Y2Vfc29ja2V0KQorICAgICAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihDb25uZWN0aW9uLCByZWR1Y3Rpb24ucmVkdWNlX2Nvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQppbmRleCAxMDFjM2NiLi5lMzFmYzYxIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKQEAgLTM1LDcgKzM1LDcgQEAKIF9fYWxsX18gPSBbCiAgICAgJ1Byb2Nlc3MnLCAnY3VycmVudF9wcm9jZXNzJywgJ2FjdGl2ZV9jaGlsZHJlbicsICdmcmVlemVfc3VwcG9ydCcsCiAgICAgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnQ29uZGl0aW9uJywKLSAgICAnRXZlbnQnLCAnUXVldWUnLCAnTWFuYWdlcicsICdQaXBlJywgJ1Bvb2wnLCAnSm9pbmFibGVRdWV1ZScKKyAgICAnRXZlbnQnLCAnQmFycmllcicsICdRdWV1ZScsICdNYW5hZ2VyJywgJ1BpcGUnLCAnUG9vbCcsICdKb2luYWJsZVF1ZXVlJwogICAgIF0KIAogIwpAQCAtNDYsMTIgKzQ2LDEwIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgd2Vha3JlZgogaW1wb3J0IGFycmF5Ci1pbXBvcnQgaXRlcnRvb2xzCiAKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBUaW1lb3V0RXJyb3IsIGNwdV9jb3VudAogZnJvbSBtdWx0aXByb2Nlc3NpbmcuZHVtbXkuY29ubmVjdGlvbiBpbXBvcnQgUGlwZQogZnJvbSB0aHJlYWRpbmcgaW1wb3J0IExvY2ssIFJMb2NrLCBTZW1hcGhvcmUsIEJvdW5kZWRTZW1hcGhvcmUKLWZyb20gdGhyZWFkaW5nIGltcG9ydCBFdmVudAorZnJvbSB0aHJlYWRpbmcgaW1wb3J0IEV2ZW50LCBDb25kaXRpb24sIEJhcnJpZXIKIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiAKICMKQEAgLTg1LDE3ICs4Myw2IEBACiAjCiAjCiAKLWNsYXNzIENvbmRpdGlvbih0aHJlYWRpbmcuX0NvbmRpdGlvbik6Ci0gICAgIyBYWFgKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApOgotICAgICAgICBub3RpZnlfYWxsID0gdGhyZWFkaW5nLl9Db25kaXRpb24ubm90aWZ5X2FsbC5fX2Z1bmNfXwotICAgIGVsc2U6Ci0gICAgICAgIG5vdGlmeV9hbGwgPSB0aHJlYWRpbmcuX0NvbmRpdGlvbi5ub3RpZnlfYWxsCi0KLSMKLSMKLSMKLQogUHJvY2VzcyA9IER1bW15UHJvY2VzcwogY3VycmVudF9wcm9jZXNzID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkCiBjdXJyZW50X3Byb2Nlc3MoKS5fY2hpbGRyZW4gPSB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5KCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQppbmRleCBhZjEwNTc5Li44NzRlYzhlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CkBAIC01Myw2ICs1MywxMiBAQAogCiAgICAgYWRkcmVzcyA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9iYWNrbG9nX3F1ZXVlKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogCiBkZWYgQ2xpZW50KGFkZHJlc3MpOgogICAgIF9pbiwgX291dCA9IFF1ZXVlKCksIFF1ZXVlKCkKQEAgLTg1LDMgKzkxLDkgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgcGFzcworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQppbmRleCBiYzhhYzQ0Li5hZjY1ODBkIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBpbXBvcnQgb3MKQEAgLTM4LDcgKzEzLDcgQEAKIAogZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHV0aWwsIHByb2Nlc3MKIAotX19hbGxfXyA9IFsnUG9wZW4nLCAnYXNzZXJ0X3NwYXduaW5nJywgJ2V4aXQnLCAnZHVwbGljYXRlJywgJ2Nsb3NlJywgJ0ZvcmtpbmdQaWNrbGVyJ10KK19fYWxsX18gPSBbJ1BvcGVuJywgJ2Fzc2VydF9zcGF3bmluZycsICdkdXBsaWNhdGUnLCAnY2xvc2UnLCAnRm9ya2luZ1BpY2tsZXInXQogCiAjCiAjIENoZWNrIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHNwYXduaW5nIGEgY2hpbGQgcHJvY2VzcwpAQCAtNTUsMTggKzMwLDE4IEBACiAjIFRyeSBtYWtpbmcgc29tZSBjYWxsYWJsZSB0eXBlcyBwaWNrbGFibGUKICMKIAotZnJvbSBwaWNrbGUgaW1wb3J0IF9QaWNrbGVyIGFzIFBpY2tsZXIKK2Zyb20gcGlja2xlIGltcG9ydCBQaWNrbGVyCitmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCisKIGNsYXNzIEZvcmtpbmdQaWNrbGVyKFBpY2tsZXIpOgotICAgIGRpc3BhdGNoID0gUGlja2xlci5kaXNwYXRjaC5jb3B5KCkKKyAgICBfZXh0cmFfcmVkdWNlcnMgPSB7fQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIFBpY2tsZXIuX19pbml0X18oc2VsZiwgKmFyZ3MpCisgICAgICAgIHNlbGYuZGlzcGF0Y2hfdGFibGUgPSBkaXNwYXRjaF90YWJsZS5jb3B5KCkKKyAgICAgICAgc2VsZi5kaXNwYXRjaF90YWJsZS51cGRhdGUoc2VsZi5fZXh0cmFfcmVkdWNlcnMpCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHJlZ2lzdGVyKGNscywgdHlwZSwgcmVkdWNlKToKLSAgICAgICAgZGVmIGRpc3BhdGNoZXIoc2VsZiwgb2JqKToKLSAgICAgICAgICAgIHJ2ID0gcmVkdWNlKG9iaikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6Ci0gICAgICAgICAgICAgICAgc2VsZi5zYXZlX2dsb2JhbChvYmosIHJ2KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKG9iaj1vYmosICpydikKLSAgICAgICAgY2xzLmRpc3BhdGNoW3R5cGVdID0gZGlzcGF0Y2hlcgorICAgICAgICBjbHMuX2V4dHJhX3JlZHVjZXJzW3R5cGVdID0gcmVkdWNlCiAKIGRlZiBfcmVkdWNlX21ldGhvZChtKToKICAgICBpZiBtLl9fc2VsZl9fIGlzIE5vbmU6CkBAIC0xMDAsOSArNzUsNiBAQAogIwogCiBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKLSAgICBpbXBvcnQgdGltZQotCi0gICAgZXhpdCA9IG9zLl9leGl0CiAgICAgZHVwbGljYXRlID0gb3MuZHVwCiAgICAgY2xvc2UgPSBvcy5jbG9zZQogCkBAIC0xMTgsMTQgKzkwLDIzIEBACiAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKIAorICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICAgICAgc2VsZi5zZW50aW5lbCA9IHIKKwogICAgICAgICAgICAgc2VsZi5waWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgIGlmIHNlbGYucGlkID09IDA6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UocikKICAgICAgICAgICAgICAgICBpZiAncmFuZG9tJyBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHJhbmRvbQogICAgICAgICAgICAgICAgICAgICByYW5kb20uc2VlZCgpCiAgICAgICAgICAgICAgICAgY29kZSA9IHByb2Nlc3Nfb2JqLl9ib290c3RyYXAoKQogICAgICAgICAgICAgICAgIG9zLl9leGl0KGNvZGUpCiAKKyAgICAgICAgICAgICMgYHdgIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGNoaWxkIGV4aXRzLCBhdCB3aGljaCBwb2ludCBgcmAKKyAgICAgICAgICAgICMgd2lsbCBiZWNvbWUgcmVhZHkgZm9yIHJlYWRpbmcgKHVzaW5nIGUuZy4gc2VsZWN0KCkpLgorICAgICAgICAgICAgb3MuY2xvc2UodykKKyAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChyLCkpCisKICAgICAgICAgZGVmIHBvbGwoc2VsZiwgZmxhZz1vcy5XTk9IQU5HKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTE0MywyNiArMTI0LDIwIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKICAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKLSAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wb2xsKDApCi0gICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAotICAgICAgICAgICAgZGVsYXkgPSAwLjAwMDUKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgcmVzID0gc2VsZi5wb2xsKCkKLSAgICAgICAgICAgICAgICBpZiByZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA8PSAwOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGRlbGF5ID0gbWluKGRlbGF5ICogMiwgcmVtYWluaW5nLCAwLjA1KQotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoZGVsYXkpCi0gICAgICAgICAgICByZXR1cm4gcmVzCisgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB3YWl0KFtzZWxmLnNlbnRpbmVsXSwgdGltZW91dCk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGRuJ3QgYmxvY2sgaWYgd2FpdCgpIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wb2xsKG9zLldOT0hBTkcgaWYgdGltZW91dCA9PSAwLjAgZWxzZSAwKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAgICAgICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG9zLmtpbGwoc2VsZi5waWQsIHNpZ25hbC5TSUdURVJNKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTAuMSkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTE3NywxMiArMTUyLDkgQEAKIGVsc2U6CiAgICAgaW1wb3J0IF90aHJlYWQKICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgaW1wb3J0IF9zdWJwcm9jZXNzCi0gICAgaW1wb3J0IHRpbWUKKyAgICBpbXBvcnQgX3dpbmFwaQogCi0gICAgZnJvbSBwaWNrbGUgaW1wb3J0IGR1bXAsIGxvYWQsIEhJR0hFU1RfUFJPVE9DT0wKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyLCBDb25uZWN0aW9uLCBQaXBlQ29ubmVjdGlvbgotICAgIGZyb20gLnV0aWwgaW1wb3J0IEZpbmFsaXplCisgICAgZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWQsIEhJR0hFU1RfUFJPVE9DT0wKIAogICAgIGRlZiBkdW1wKG9iaiwgZmlsZSwgcHJvdG9jb2w9Tm9uZSk6CiAgICAgICAgIEZvcmtpbmdQaWNrbGVyKGZpbGUsIHByb3RvY29sKS5kdW1wKG9iaikKQEAgLTE5NSw4ICsxNjcsNyBAQAogICAgIFdJTkVYRSA9IChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBhbmQgZ2V0YXR0cihzeXMsICdmcm96ZW4nLCBGYWxzZSkpCiAgICAgV0lOU0VSVklDRSA9IHN5cy5leGVjdXRhYmxlLmxvd2VyKCkuZW5kc3dpdGgoInB5dGhvbnNlcnZpY2UuZXhlIikKIAotICAgIGV4aXQgPSB3aW4zMi5FeGl0UHJvY2VzcwotICAgIGNsb3NlID0gd2luMzIuQ2xvc2VIYW5kbGUKKyAgICBjbG9zZSA9IF93aW5hcGkuQ2xvc2VIYW5kbGUKIAogICAgICMKICAgICAjIF9weXRob25fZXhlIGlzIHRoZSBhc3N1bWVkIHBhdGggdG8gdGhlIHB5dGhvbiBleGVjdXRhYmxlLgpAQCAtMjE4LDExICsxODksMTEgQEAKIAogICAgIGRlZiBkdXBsaWNhdGUoaGFuZGxlLCB0YXJnZXRfcHJvY2Vzcz1Ob25lLCBpbmhlcml0YWJsZT1GYWxzZSk6CiAgICAgICAgIGlmIHRhcmdldF9wcm9jZXNzIGlzIE5vbmU6Ci0gICAgICAgICAgICB0YXJnZXRfcHJvY2VzcyA9IF9zdWJwcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCkKLSAgICAgICAgcmV0dXJuIF9zdWJwcm9jZXNzLkR1cGxpY2F0ZUhhbmRsZSgKLSAgICAgICAgICAgIF9zdWJwcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCksIGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3MsCi0gICAgICAgICAgICAwLCBpbmhlcml0YWJsZSwgX3N1YnByb2Nlc3MuRFVQTElDQVRFX1NBTUVfQUNDRVNTCi0gICAgICAgICAgICApLkRldGFjaCgpCisgICAgICAgICAgICB0YXJnZXRfcHJvY2VzcyA9IF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKQorICAgICAgICByZXR1cm4gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksIGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3MsCisgICAgICAgICAgICAwLCBpbmhlcml0YWJsZSwgX3dpbmFwaS5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MKKyAgICAgICAgICAgICkKIAogICAgICMKICAgICAjIFdlIGRlZmluZSBhIFBvcGVuIGNsYXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmcm9tIHN1YnByb2Nlc3MsIGJ1dApAQCAtMjM2LDYgKzIwNyw5IEBACiAgICAgICAgIF90bHMgPSBfdGhyZWFkLl9sb2NhbCgpCiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2Nlc3Nfb2JqKToKKyAgICAgICAgICAgIGNtZCA9ICcgJy5qb2luKCciJXMiJyAlIHggZm9yIHggaW4gZ2V0X2NvbW1hbmRfbGluZSgpKQorICAgICAgICAgICAgcHJlcF9kYXRhID0gZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCisKICAgICAgICAgICAgICMgY3JlYXRlIHBpcGUgZm9yIGNvbW11bmljYXRpb24gd2l0aCBjaGlsZAogICAgICAgICAgICAgcmZkLCB3ZmQgPSBvcy5waXBlKCkKIApAQCAtMjQzLDMwICsyMTcsMzAgQEAKICAgICAgICAgICAgIHJoYW5kbGUgPSBkdXBsaWNhdGUobXN2Y3J0LmdldF9vc2ZoYW5kbGUocmZkKSwgaW5oZXJpdGFibGU9VHJ1ZSkKICAgICAgICAgICAgIG9zLmNsb3NlKHJmZCkKIAotICAgICAgICAgICAgIyBzdGFydCBwcm9jZXNzCi0gICAgICAgICAgICBjbWQgPSBnZXRfY29tbWFuZF9saW5lKCkgKyBbcmhhbmRsZV0KLSAgICAgICAgICAgIGNtZCA9ICcgJy5qb2luKCciJXMiJyAlIHggZm9yIHggaW4gY21kKQotICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF9zdWJwcm9jZXNzLkNyZWF0ZVByb2Nlc3MoCi0gICAgICAgICAgICAgICAgX3B5dGhvbl9leGUsIGNtZCwgTm9uZSwgTm9uZSwgMSwgMCwgTm9uZSwgTm9uZSwgTm9uZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGh0LkNsb3NlKCkKLSAgICAgICAgICAgIGNsb3NlKHJoYW5kbGUpCisgICAgICAgICAgICB3aXRoIG9wZW4od2ZkLCAnd2InLCBjbG9zZWZkPVRydWUpIGFzIHRvX2NoaWxkOgorICAgICAgICAgICAgICAgICMgc3RhcnQgcHJvY2VzcworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF93aW5hcGkuQ3JlYXRlUHJvY2VzcygKKyAgICAgICAgICAgICAgICAgICAgICAgIF9weXRob25fZXhlLCBjbWQgKyAoJyAlcycgJSByaGFuZGxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIDEsIDAsIE5vbmUsIE5vbmUsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShodCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBjbG9zZShyaGFuZGxlKQogCi0gICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGVzIG9mIHNlbGYKLSAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCi0gICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZXMgb2Ygc2VsZgorICAgICAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCisgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IGhwCisgICAgICAgICAgICAgICAgc2VsZi5zZW50aW5lbCA9IGludChocCkKIAotICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCi0gICAgICAgICAgICBwcmVwX2RhdGEgPSBnZXRfcHJlcGFyYXRpb25fZGF0YShwcm9jZXNzX29iai5fbmFtZSkKLSAgICAgICAgICAgIHRvX2NoaWxkID0gb3MuZmRvcGVuKHdmZCwgJ3diJykKLSAgICAgICAgICAgIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUgPSBpbnQoaHApCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZHVtcChwcmVwX2RhdGEsIHRvX2NoaWxkLCBISUdIRVNUX1BST1RPQ09MKQotICAgICAgICAgICAgICAgIGR1bXAocHJvY2Vzc19vYmosIHRvX2NoaWxkLCBISUdIRVNUX1BST1RPQ09MKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBkZWwgUG9wZW4uX3Rscy5wcm9jZXNzX2hhbmRsZQotICAgICAgICAgICAgICAgIHRvX2NoaWxkLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAjIHNlbmQgaW5mb3JtYXRpb24gdG8gY2hpbGQKKyAgICAgICAgICAgICAgICBQb3Blbi5fdGxzLnByb2Nlc3NfaGFuZGxlID0gaW50KGhwKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZHVtcChwcmVwX2RhdGEsIHRvX2NoaWxkLCBISUdIRVNUX1BST1RPQ09MKQorICAgICAgICAgICAgICAgICAgICBkdW1wKHByb2Nlc3Nfb2JqLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBkZWwgUG9wZW4uX3Rscy5wcm9jZXNzX2hhbmRsZQogCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIHRocmVhZF9pc19zcGF3bmluZygpOgpAQCAtMjc5LDEzICsyNTMsMTMgQEAKICAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBfc3VicHJvY2Vzcy5JTkZJTklURQorICAgICAgICAgICAgICAgICAgICBtc2VjcyA9IF93aW5hcGkuSU5GSU5JVEUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBtc2VjcyA9IG1heCgwLCBpbnQodGltZW91dCAqIDEwMDAgKyAwLjUpKQogCi0gICAgICAgICAgICAgICAgcmVzID0gX3N1YnByb2Nlc3MuV2FpdEZvclNpbmdsZU9iamVjdChpbnQoc2VsZi5faGFuZGxlKSwgbXNlY3MpCi0gICAgICAgICAgICAgICAgaWYgcmVzID09IF9zdWJwcm9jZXNzLldBSVRfT0JKRUNUXzA6Ci0gICAgICAgICAgICAgICAgICAgIGNvZGUgPSBfc3VicHJvY2Vzcy5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQorICAgICAgICAgICAgICAgIHJlcyA9IF93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdChpbnQoc2VsZi5faGFuZGxlKSwgbXNlY3MpCisgICAgICAgICAgICAgICAgaWYgcmVzID09IF93aW5hcGkuV0FJVF9PQkpFQ1RfMDoKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IF93aW5hcGkuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKICAgICAgICAgICAgICAgICAgICAgaWYgY29kZSA9PSBURVJNSU5BVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gLXNpZ25hbC5TSUdURVJNCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IGNvZGUKQEAgLTI5OCw5ICsyNzIsOSBAQAogICAgICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5UZXJtaW5hdGVQcm9jZXNzKGludChzZWxmLl9oYW5kbGUpLCBURVJNSU5BVEUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi53YWl0KHRpbWVvdXQ9MC4xKSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLlRlcm1pbmF0ZVByb2Nlc3MoaW50KHNlbGYuX2hhbmRsZSksIFRFUk1JTkFURSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi53YWl0KHRpbWVvdXQ9MS4wKSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICMKQEAgLTM1MCw3ICszMjQsOCBAQAogICAgICAgICAgICAgcmV0dXJuIFtzeXMuZXhlY3V0YWJsZSwgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHJvZyA9ICdmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBtYWluOyBtYWluKCknCi0gICAgICAgICAgICByZXR1cm4gW19weXRob25fZXhlLCAnLWMnLCBwcm9nLCAnLS1tdWx0aXByb2Nlc3NpbmctZm9yayddCisgICAgICAgICAgICBvcHRzID0gdXRpbC5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKKyAgICAgICAgICAgIHJldHVybiBbX3B5dGhvbl9leGVdICsgb3B0cyArIFsnLWMnLCBwcm9nLCAnLS1tdWx0aXByb2Nlc3NpbmctZm9yayddCiAKIAogICAgIGRlZiBtYWluKCk6CkBAIC0zNzIsNyArMzQ3LDcgQEAKICAgICAgICAgZnJvbV9wYXJlbnQuY2xvc2UoKQogCiAgICAgICAgIGV4aXRjb2RlID0gc2VsZi5fYm9vdHN0cmFwKCkKLSAgICAgICAgZXhpdChleGl0Y29kZSkKKyAgICAgICAgc3lzLmV4aXQoZXhpdGNvZGUpCiAKIAogICAgIGRlZiBnZXRfcHJlcGFyYXRpb25fZGF0YShuYW1lKToKQEAgLTQwNSwyMiArMzgwLDYgQEAKIAogICAgICAgICByZXR1cm4gZAogCi0gICAgIwotICAgICMgTWFrZSAoUGlwZSlDb25uZWN0aW9uIHBpY2tsYWJsZQotICAgICMKLQotICAgIGRlZiByZWR1Y2VfY29ubmVjdGlvbihjb25uKToKLSAgICAgICAgaWYgbm90IFBvcGVuLnRocmVhZF9pc19zcGF3bmluZygpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICdCeSBkZWZhdWx0ICVzIG9iamVjdHMgY2FuIG9ubHkgYmUgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzXG4nCi0gICAgICAgICAgICAgICAgJ3VzaW5nIGluaGVyaXRhbmNlJyAlIHR5cGUoY29ubikuX19uYW1lX18KLSAgICAgICAgICAgICAgICApCi0gICAgICAgIHJldHVybiB0eXBlKGNvbm4pLCAoUG9wZW4uZHVwbGljYXRlX2Zvcl9jaGlsZChjb25uLmZpbGVubygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQotCi0gICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWNlX2Nvbm5lY3Rpb24pCi0gICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoUGlwZUNvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQotCiAjCiAjIFByZXBhcmUgY3VycmVudCBwcm9jZXNzCiAjCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKaW5kZXggMGEyNWVmMC4uNGU5M2MxMiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQpAQCAtNCwzNyArNCwxMSBAQAogIyBtdWx0aXByb2Nlc3NpbmcvaGVhcC5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIGltcG9ydCBiaXNlY3QKIGltcG9ydCBtbWFwCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwpAQCAtNTIsNyArMjYsNyBAQAogCiBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKIAotICAgIGZyb20gX211bHRpcHJvY2Vzc2luZyBpbXBvcnQgd2luMzIKKyAgICBpbXBvcnQgX3dpbmFwaQogCiAgICAgY2xhc3MgQXJlbmEob2JqZWN0KToKIApAQCAtNjIsNyArMzYsNyBAQAogICAgICAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAgICAgICAgc2VsZi5uYW1lID0gJ3B5bS0lZC0lZCcgJSAob3MuZ2V0cGlkKCksIG5leHQoQXJlbmEuX2NvdW50ZXIpKQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoLTEsIHNlbGYuc2l6ZSwgdGFnbmFtZT1zZWxmLm5hbWUpCi0gICAgICAgICAgICBhc3NlcnQgd2luMzIuR2V0TGFzdEVycm9yKCkgPT0gMCwgJ3RhZ25hbWUgYWxyZWFkeSBpbiB1c2UnCisgICAgICAgICAgICBhc3NlcnQgX3dpbmFwaS5HZXRMYXN0RXJyb3IoKSA9PSAwLCAndGFnbmFtZSBhbHJlYWR5IGluIHVzZScKICAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gKHNlbGYuc2l6ZSwgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CkBAIC03Miw3ICs0Niw3IEBACiAgICAgICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgICAgICAgc2VsZi5zaXplLCBzZWxmLm5hbWUgPSBzZWxmLl9zdGF0ZSA9IHN0YXRlCiAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IG1tYXAubW1hcCgtMSwgc2VsZi5zaXplLCB0YWduYW1lPXNlbGYubmFtZSkKLSAgICAgICAgICAgIGFzc2VydCB3aW4zMi5HZXRMYXN0RXJyb3IoKSA9PSB3aW4zMi5FUlJPUl9BTFJFQURZX0VYSVNUUworICAgICAgICAgICAgYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gX3dpbmFwaS5FUlJPUl9BTFJFQURZX0VYSVNUUwogCiBlbHNlOgogCkBAIC0yMzEsNyArMjA1LDcgQEAKICAgICAgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCiAKICMKLSMgQ2xhc3MgcmVwcmVzZW50aW5nIGEgY2h1bmsgb2YgYW4gbW1hcCAtLSBjYW4gYmUgaW5oZXJpdGVkCisjIENsYXNzIHJlcHJlc2VudGluZyBhIGNodW5rIG9mIGFuIG1tYXAgLS0gY2FuIGJlIGluaGVyaXRlZCBieSBjaGlsZCBwcm9jZXNzCiAjCiAKIGNsYXNzIEJ1ZmZlcldyYXBwZXIob2JqZWN0KToKQEAgLTI0NCwxMSArMjE4LDYgQEAKICAgICAgICAgc2VsZi5fc3RhdGUgPSAoYmxvY2ssIHNpemUpCiAgICAgICAgIEZpbmFsaXplKHNlbGYsIEJ1ZmZlcldyYXBwZXIuX2hlYXAuZnJlZSwgYXJncz0oYmxvY2ssKSkKIAotICAgIGRlZiBnZXRfYWRkcmVzcyhzZWxmKToKKyAgICBkZWYgY3JlYXRlX21lbW9yeXZpZXcoc2VsZik6CiAgICAgICAgIChhcmVuYSwgc3RhcnQsIHN0b3ApLCBzaXplID0gc2VsZi5fc3RhdGUKLSAgICAgICAgYWRkcmVzcywgbGVuZ3RoID0gX211bHRpcHJvY2Vzc2luZy5hZGRyZXNzX29mX2J1ZmZlcihhcmVuYS5idWZmZXIpCi0gICAgICAgIGFzc2VydCBzaXplIDw9IGxlbmd0aAotICAgICAgICByZXR1cm4gYWRkcmVzcyArIHN0YXJ0Ci0KLSAgICBkZWYgZ2V0X3NpemUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZVsxXQorICAgICAgICByZXR1cm4gbWVtb3J5dmlldyhhcmVuYS5idWZmZXIpW3N0YXJ0OnN0YXJ0K3NpemVdCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQppbmRleCA1NTg4ZWFkLi4xYWIxNDdlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKQEAgLTUsMzIgKzUsNyBAQAogIyBtdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWyAnQmFzZU1hbmFnZXInLCAnU3luY01hbmFnZXInLCAnQmFzZVByb3h5JywgJ1Rva2VuJyBdCkBAIC0zOSwxOSArMTQsMTYgQEAKICMgSW1wb3J0cwogIwogCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgYXJyYXkKIGltcG9ydCBxdWV1ZQogCiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YwotZnJvbSBwaWNrbGUgaW1wb3J0IFBpY2tsaW5nRXJyb3IKIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzLCBjdXJyZW50X3Byb2Nlc3MsIGFjdGl2ZV9jaGlsZHJlbiwgUG9vbCwgdXRpbCwgY29ubmVjdGlvbgogZnJvbSBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcyBpbXBvcnQgQXV0aGVudGljYXRpb25TdHJpbmcKLWZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IGV4aXQsIFBvcGVuLCBhc3NlcnRfc3Bhd25pbmcsIEZvcmtpbmdQaWNrbGVyCi1mcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBGaW5hbGl6ZSwgaW5mbworZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgUG9wZW4sIEZvcmtpbmdQaWNrbGVyCitmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogIwogIyBSZWdpc3RlciBzb21lIHRoaW5ncyBmb3IgcGlja2xpbmcKQEAgLTE2OCwyOCArMTQwLDM4IEBACiAgICAgICAgIHNlbGYuaWRfdG9fb2JqID0geycwJzogKE5vbmUsICgpKX0KICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudCA9IHt9CiAgICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuUkxvY2soKQotICAgICAgICBzZWxmLnN0b3AgPSAwCiAKICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmKToKICAgICAgICAgJycnCiAgICAgICAgIFJ1biB0aGUgc2VydmVyIGZvcmV2ZXIKICAgICAgICAgJycnCisgICAgICAgIHNlbGYuc3RvcF9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIGN1cnJlbnRfcHJvY2VzcygpLl9tYW5hZ2VyX3NlcnZlciA9IHNlbGYKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWNjZXB0ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLmFjY2VwdGVyKQorICAgICAgICAgICAgYWNjZXB0ZXIuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgYWNjZXB0ZXIuc3RhcnQoKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzZWxmLmxpc3RlbmVyLmFjY2VwdCgpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5oYW5kbGVfcmVxdWVzdCwgYXJncz0oYywpKQotICAgICAgICAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuc3RvcF9ldmVudC5pc19zZXQoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdG9wX2V2ZW50LndhaXQoMSkKICAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuc3RvcCA9IDk5OQotICAgICAgICAgICAgc2VsZi5saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICBpZiBzeXMuc3Rkb3V0ICE9IHN5cy5fX3N0ZG91dF9fOgorICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Jlc2V0dGluZyBzdGRvdXQsIHN0ZGVycicpCisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN5cy5fX3N0ZG91dF9fCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCisgICAgICAgICAgICBzeXMuZXhpdCgwKQorCisgICAgZGVmIGFjY2VwdGVyKHNlbGYpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGMgPSBzZWxmLmxpc3RlbmVyLmFjY2VwdCgpCisgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5oYW5kbGVfcmVxdWVzdCwgYXJncz0oYywpKQorICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICB0LnN0YXJ0KCkKIAogICAgIGRlZiBoYW5kbGVfcmVxdWVzdChzZWxmLCBjKToKICAgICAgICAgJycnCkBAIC0yMzYsNyArMjE4LDcgQEAKICAgICAgICAgc2VuZCA9IGNvbm4uc2VuZAogICAgICAgICBpZF90b19vYmogPSBzZWxmLmlkX3RvX29iagogCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLnN0b3A6CisgICAgICAgIHdoaWxlIG5vdCBzZWxmLnN0b3BfZXZlbnQuaXNfc2V0KCk6CiAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtZXRob2RuYW1lID0gb2JqID0gTm9uZQpAQCAtMzQ2LDMyICszMjgsMTMgQEAKICAgICAgICAgU2h1dGRvd24gdGhpcyBwcm9jZXNzCiAgICAgICAgICcnJwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnbWFuYWdlciByZWNlaXZlZCBzaHV0ZG93biBtZXNzYWdlJykKLSAgICAgICAgICAgICAgICBjLnNlbmQoKCcjUkVUVVJOJywgTm9uZSkpCi0KLSAgICAgICAgICAgICAgICBpZiBzeXMuc3Rkb3V0ICE9IHN5cy5fX3N0ZG91dF9fOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXNldHRpbmcgc3Rkb3V0LCBzdGRlcnInKQotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc3lzLl9fc3Rkb3V0X18KLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCi0KLSAgICAgICAgICAgICAgICB1dGlsLl9ydW5fZmluYWxpemVycygwKQotCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gYWN0aXZlX2NoaWxkcmVuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Rlcm1pbmF0aW5nIGEgY2hpbGQgcHJvY2VzcyBvZiBtYW5hZ2VyJykKLSAgICAgICAgICAgICAgICAgICAgcC50ZXJtaW5hdGUoKQotCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gYWN0aXZlX2NoaWxkcmVuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Rlcm1pbmF0aW5nIGEgY2hpbGQgcHJvY2VzcyBvZiBtYW5hZ2VyJykKLSAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKLQotICAgICAgICAgICAgICAgIHV0aWwuX3J1bl9maW5hbGl6ZXJzKCkKLSAgICAgICAgICAgICAgICB1dGlsLmluZm8oJ21hbmFnZXIgZXhpdGluZyB3aXRoIGV4aXRjb2RlIDAnKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ21hbmFnZXIgcmVjZWl2ZWQgc2h1dGRvd24gbWVzc2FnZScpCisgICAgICAgICAgICBjLnNlbmQoKCcjUkVUVVJOJywgTm9uZSkpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKKyAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZXhpdCgwKQorICAgICAgICAgICAgc2VsZi5zdG9wX2V2ZW50LnNldCgpCiAKICAgICBkZWYgY3JlYXRlKHNlbGYsIGMsIHR5cGVpZCwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgICcnJwpAQCAtNDgzLDEwICs0NDYsNiBAQAogICAgICAgICBzZWxmLl9zZXJpYWxpemVyID0gc2VyaWFsaXplcgogICAgICAgICBzZWxmLl9MaXN0ZW5lciwgc2VsZi5fQ2xpZW50ID0gbGlzdGVuZXJfY2xpZW50W3NlcmlhbGl6ZXJdCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikuZnJvbV9hZGRyZXNzLCBcCi0gICAgICAgICAgICAgICAoc2VsZi5fYWRkcmVzcywgc2VsZi5fYXV0aGtleSwgc2VsZi5fc2VyaWFsaXplcikKLQogICAgIGRlZiBnZXRfc2VydmVyKHNlbGYpOgogICAgICAgICAnJycKICAgICAgICAgUmV0dXJuIHNlcnZlciBvYmplY3Qgd2l0aCBzZXJ2ZV9mb3JldmVyKCkgbWV0aG9kIGFuZCBhZGRyZXNzIGF0dHJpYnV0ZQpAQCAtNTc2LDcgKzUzNSwxMCBAQAogICAgICAgICAnJycKICAgICAgICAgSm9pbiB0aGUgbWFuYWdlciBwcm9jZXNzIChpZiBpdCBoYXMgYmVlbiBzcGF3bmVkKQogICAgICAgICAnJycKLSAgICAgICAgc2VsZi5fcHJvY2Vzcy5qb2luKHRpbWVvdXQpCisgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzLmpvaW4odGltZW91dCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jZXNzLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5vbmUKIAogICAgIGRlZiBfZGVidWdfaW5mbyhzZWxmKToKICAgICAgICAgJycnCkBAIC01OTksNiArNTYxLDkgQEAKICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUudmFsdWUgPT0gU3RhdGUuSU5JVElBTDoKKyAgICAgICAgICAgIHNlbGYuc3RhcnQoKQorICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUudmFsdWUgPT0gU3RhdGUuU1RBUlRFRAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgpAQCAtNjIwLDcgKzU4NSw3IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgcHJvY2Vzcy5qb2luKHRpbWVvdXQ9MC4yKQorICAgICAgICAgICAgcHJvY2Vzcy5qb2luKHRpbWVvdXQ9MS4wKQogICAgICAgICAgICAgaWYgcHJvY2Vzcy5pc19hbGl2ZSgpOgogICAgICAgICAgICAgICAgIHV0aWwuaW5mbygnbWFuYWdlciBzdGlsbCBhbGl2ZScpCiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihwcm9jZXNzLCAndGVybWluYXRlJyk6CkBAIC05ODIsOCArOTQ3LDkgQEAKIAogY2xhc3MgQWNxdWlyZXJQcm94eShCYXNlUHJveHkpOgogICAgIF9leHBvc2VkXyA9ICgnYWNxdWlyZScsICdyZWxlYXNlJykKLSAgICBkZWYgYWNxdWlyZShzZWxmLCBibG9ja2luZz1UcnVlKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2FjcXVpcmUnLCAoYmxvY2tpbmcsKSkKKyAgICBkZWYgYWNxdWlyZShzZWxmLCBibG9ja2luZz1UcnVlLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICBhcmdzID0gKGJsb2NraW5nLCkgaWYgdGltZW91dCBpcyBOb25lIGVsc2UgKGJsb2NraW5nLCB0aW1lb3V0KQorICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnYWNxdWlyZScsIGFyZ3MpCiAgICAgZGVmIHJlbGVhc2Uoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZWxlYXNlJykKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpAQCAtMTAwMCw2ICs5NjYsMjQgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ25vdGlmeScpCiAgICAgZGVmIG5vdGlmeV9hbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdub3RpZnlfYWxsJykKKyAgICBkZWYgd2FpdF9mb3Ioc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQorICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuZHRpbWUgPSBOb25lCisgICAgICAgICAgICB3YWl0dGltZSA9IE5vbmUKKyAgICAgICAgd2hpbGUgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2FpdHRpbWUgPSBlbmR0aW1lIC0gX3RpbWUoKQorICAgICAgICAgICAgICAgIGlmIHdhaXR0aW1lIDw9IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzZWxmLndhaXQod2FpdHRpbWUpCisgICAgICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKIAogY2xhc3MgRXZlbnRQcm94eShCYXNlUHJveHkpOgogICAgIF9leHBvc2VkXyA9ICgnaXNfc2V0JywgJ3NldCcsICdjbGVhcicsICd3YWl0JykKQEAgLTEwMTIsNiArOTk2LDI2IEBACiAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ3dhaXQnLCAodGltZW91dCwpKQogCisKK2NsYXNzIEJhcnJpZXJQcm94eShCYXNlUHJveHkpOgorICAgIF9leHBvc2VkXyA9ICgnX19nZXRhdHRyaWJ1dGVfXycsICd3YWl0JywgJ2Fib3J0JywgJ3Jlc2V0JykKKyAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnd2FpdCcsICh0aW1lb3V0LCkpCisgICAgZGVmIGFib3J0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnYWJvcnQnKQorICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ3Jlc2V0JykKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFydGllcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoJ3BhcnRpZXMnLCkpCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5fd2FpdGluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoJ25fd2FpdGluZycsKSkKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYnJva2VuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnX19nZXRhdHRyaWJ1dGVfXycsICgnYnJva2VuJywpKQorCisKIGNsYXNzIE5hbWVzcGFjZVByb3h5KEJhc2VQcm94eSk6CiAgICAgX2V4cG9zZWRfID0gKCdfX2dldGF0dHJpYnV0ZV9fJywgJ19fc2V0YXR0cl9fJywgJ19fZGVsYXR0cl9fJykKICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwga2V5KToKQEAgLTEwNDEsMTIgKzEwNDUsMTEgQEAKIAogCiBCYXNlTGlzdFByb3h5ID0gTWFrZVByb3h5VHlwZSgnQmFzZUxpc3RQcm94eScsICgKLSAgICAnX19hZGRfXycsICdfX2NvbnRhaW5zX18nLCAnX19kZWxpdGVtX18nLCAnX19kZWxzbGljZV9fJywKLSAgICAnX19nZXRpdGVtX18nLCAnX19nZXRzbGljZV9fJywgJ19fbGVuX18nLCAnX19tdWxfXycsCi0gICAgJ19fcmV2ZXJzZWRfXycsICdfX3JtdWxfXycsICdfX3NldGl0ZW1fXycsICdfX3NldHNsaWNlX18nLAorICAgICdfX2FkZF9fJywgJ19fY29udGFpbnNfXycsICdfX2RlbGl0ZW1fXycsICdfX2dldGl0ZW1fXycsICdfX2xlbl9fJywKKyAgICAnX19tdWxfXycsICdfX3JldmVyc2VkX18nLCAnX19ybXVsX18nLCAnX19zZXRpdGVtX18nLAogICAgICdhcHBlbmQnLCAnY291bnQnLCAnZXh0ZW5kJywgJ2luZGV4JywgJ2luc2VydCcsICdwb3AnLCAncmVtb3ZlJywKICAgICAncmV2ZXJzZScsICdzb3J0JywgJ19faW11bF9fJwotICAgICkpICAgICAgICAgICAgICAgICAgIyBYWFggX19nZXRzbGljZV9fIGFuZCBfX3NldHNsaWNlX18gdW5uZWVkZWQgaW4gUHkzLjAKKyAgICApKQogY2xhc3MgTGlzdFByb3h5KEJhc2VMaXN0UHJveHkpOgogICAgIGRlZiBfX2lhZGRfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHNlbGYuX2NhbGxtZXRob2QoJ2V4dGVuZCcsICh2YWx1ZSwpKQpAQCAtMTA2NCwxNyArMTA2NywxOCBAQAogCiAKIEFycmF5UHJveHkgPSBNYWtlUHJveHlUeXBlKCdBcnJheVByb3h5JywgKAotICAgICdfX2xlbl9fJywgJ19fZ2V0aXRlbV9fJywgJ19fc2V0aXRlbV9fJywgJ19fZ2V0c2xpY2VfXycsICdfX3NldHNsaWNlX18nCi0gICAgKSkgICAgICAgICAgICAgICAgICAjIFhYWCBfX2dldHNsaWNlX18gYW5kIF9fc2V0c2xpY2VfXyB1bm5lZWRlZCBpbiBQeTMuMAorICAgICdfX2xlbl9fJywgJ19fZ2V0aXRlbV9fJywgJ19fc2V0aXRlbV9fJworICAgICkpCiAKIAogUG9vbFByb3h5ID0gTWFrZVByb3h5VHlwZSgnUG9vbFByb3h5JywgKAogICAgICdhcHBseScsICdhcHBseV9hc3luYycsICdjbG9zZScsICdpbWFwJywgJ2ltYXBfdW5vcmRlcmVkJywgJ2pvaW4nLAotICAgICdtYXAnLCAnbWFwX2FzeW5jJywgJ3Rlcm1pbmF0ZScKKyAgICAnbWFwJywgJ21hcF9hc3luYycsICdzdGFybWFwJywgJ3N0YXJtYXBfYXN5bmMnLCAndGVybWluYXRlJwogICAgICkpCiBQb29sUHJveHkuX21ldGhvZF90b190eXBlaWRfID0gewogICAgICdhcHBseV9hc3luYyc6ICdBc3luY1Jlc3VsdCcsCiAgICAgJ21hcF9hc3luYyc6ICdBc3luY1Jlc3VsdCcsCisgICAgJ3N0YXJtYXBfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAogICAgICdpbWFwJzogJ0l0ZXJhdG9yJywKICAgICAnaW1hcF91bm9yZGVyZWQnOiAnSXRlcmF0b3InCiAgICAgfQpAQCAtMTEwMyw2ICsxMTA3LDcgQEAKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdCb3VuZGVkU2VtYXBob3JlJywgdGhyZWFkaW5nLkJvdW5kZWRTZW1hcGhvcmUsCiAgICAgICAgICAgICAgICAgICAgICBBY3F1aXJlclByb3h5KQogU3luY01hbmFnZXIucmVnaXN0ZXIoJ0NvbmRpdGlvbicsIHRocmVhZGluZy5Db25kaXRpb24sIENvbmRpdGlvblByb3h5KQorU3luY01hbmFnZXIucmVnaXN0ZXIoJ0JhcnJpZXInLCB0aHJlYWRpbmcuQmFycmllciwgQmFycmllclByb3h5KQogU3luY01hbmFnZXIucmVnaXN0ZXIoJ1Bvb2wnLCBQb29sLCBQb29sUHJveHkpCiBTeW5jTWFuYWdlci5yZWdpc3RlcignbGlzdCcsIGxpc3QsIExpc3RQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdkaWN0JywgZGljdCwgRGljdFByb3h5KQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CmluZGV4IDc1MDJmZjguLjdmNzNiNDQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKQEAgLTQsMzIgKzQsNyBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcG9vbC5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbJ1Bvb2wnXQpAQCAtNjQsNiArMzksOSBAQAogZGVmIG1hcHN0YXIoYXJncyk6CiAgICAgcmV0dXJuIGxpc3QobWFwKCphcmdzKSkKIAorZGVmIHN0YXJtYXBzdGFyKGFyZ3MpOgorICAgIHJldHVybiBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKGFyZ3NbMF0sIGFyZ3NbMV0pKQorCiAjCiAjIENvZGUgcnVuIGJ5IHdvcmtlciBwcm9jZXNzZXMKICMKQEAgLTI0NywxNCArMjI1LDMwIEBACiAgICAgICAgIEFwcGx5IGBmdW5jYCB0byBlYWNoIGVsZW1lbnQgaW4gYGl0ZXJhYmxlYCwgY29sbGVjdGluZyB0aGUgcmVzdWx0cwogICAgICAgICBpbiBhIGxpc3QgdGhhdCBpcyByZXR1cm5lZC4KICAgICAgICAgJycnCi0gICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZSA9PSBSVU4KLSAgICAgICAgcmV0dXJuIHNlbGYubWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemUpLmdldCgpCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIG1hcHN0YXIsIGNodW5rc2l6ZSkuZ2V0KCkKKworICAgIGRlZiBzdGFybWFwKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBMaWtlIGBtYXAoKWAgbWV0aG9kIGJ1dCB0aGUgZWxlbWVudHMgb2YgdGhlIGBpdGVyYWJsZWAgYXJlIGV4cGVjdGVkIHRvCisgICAgICAgIGJlIGl0ZXJhYmxlcyBhcyB3ZWxsIGFuZCB3aWxsIGJlIHVucGFja2VkIGFzIGFyZ3VtZW50cy4gSGVuY2UKKyAgICAgICAgYGZ1bmNgIGFuZCAoYSwgYikgYmVjb21lcyBmdW5jKGEsIGIpLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgc3Rhcm1hcHN0YXIsIGNodW5rc2l6ZSkuZ2V0KCkKKworICAgIGRlZiBzdGFybWFwX2FzeW5jKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9Tm9uZSwgY2FsbGJhY2s9Tm9uZSwKKyAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgQXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYHN0YXJtYXAoKWAgbWV0aG9kLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgc3Rhcm1hcHN0YXIsIGNodW5rc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywgZXJyb3JfY2FsbGJhY2spCiAKICAgICBkZWYgaW1hcChzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPTEpOgogICAgICAgICAnJycKICAgICAgICAgRXF1aXZhbGVudCBvZiBgbWFwKClgIC0tIGNhbiBiZSBNVUNIIHNsb3dlciB0aGFuIGBQb29sLm1hcCgpYC4KICAgICAgICAgJycnCi0gICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZSA9PSBSVU4KKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gUlVOOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9vbCBub3QgcnVubmluZyIpCiAgICAgICAgIGlmIGNodW5rc2l6ZSA9PSAxOgogICAgICAgICAgICAgcmVzdWx0ID0gSU1hcEl0ZXJhdG9yKHNlbGYuX2NhY2hlKQogICAgICAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoKChyZXN1bHQuX2pvYiwgaSwgZnVuYywgKHgsKSwge30pCkBAIC0yNzIsNyArMjY2LDggQEAKICAgICAgICAgJycnCiAgICAgICAgIExpa2UgYGltYXAoKWAgbWV0aG9kIGJ1dCBvcmRlcmluZyBvZiByZXN1bHRzIGlzIGFyYml0cmFyeS4KICAgICAgICAgJycnCi0gICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZSA9PSBSVU4KKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gUlVOOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9vbCBub3QgcnVubmluZyIpCiAgICAgICAgIGlmIGNodW5rc2l6ZSA9PSAxOgogICAgICAgICAgICAgcmVzdWx0ID0gSU1hcFVub3JkZXJlZEl0ZXJhdG9yKHNlbGYuX2NhY2hlKQogICAgICAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoKChyZXN1bHQuX2pvYiwgaSwgZnVuYywgKHgsKSwge30pCkBAIC0yOTEsNyArMjg2LDggQEAKICAgICAgICAgJycnCiAgICAgICAgIEFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBhcHBseSgpYCBtZXRob2QuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICByZXN1bHQgPSBBcHBseVJlc3VsdChzZWxmLl9jYWNoZSwgY2FsbGJhY2ssIGVycm9yX2NhbGxiYWNrKQogICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KChbKHJlc3VsdC5fam9iLCBOb25lLCBmdW5jLCBhcmdzLCBrd2RzKV0sIE5vbmUpKQogICAgICAgICByZXR1cm4gcmVzdWx0CkBAIC0zMDEsNyArMjk3LDE2IEBACiAgICAgICAgICcnJwogICAgICAgICBBc3luY2hyb25vdXMgdmVyc2lvbiBvZiBgbWFwKClgIG1ldGhvZC4KICAgICAgICAgJycnCi0gICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZSA9PSBSVU4KKyAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgbWFwc3RhciwgY2h1bmtzaXplLCBjYWxsYmFjaywKKyAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrKQorCisgICAgZGVmIF9tYXBfYXN5bmMoc2VsZiwgZnVuYywgaXRlcmFibGUsIG1hcHBlciwgY2h1bmtzaXplPU5vbmUsIGNhbGxiYWNrPU5vbmUsCisgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIEhlbHBlciBmdW5jdGlvbiB0byBpbXBsZW1lbnQgbWFwLCBzdGFybWFwIGFuZCB0aGVpciBhc3luYyBjb3VudGVycGFydHMuCisgICAgICAgICcnJworICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBSVU46CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb29sIG5vdCBydW5uaW5nIikKICAgICAgICAgaWYgbm90IGhhc2F0dHIoaXRlcmFibGUsICdfX2xlbl9fJyk6CiAgICAgICAgICAgICBpdGVyYWJsZSA9IGxpc3QoaXRlcmFibGUpCiAKQEAgLTMxNSw3ICszMjAsNyBAQAogICAgICAgICB0YXNrX2JhdGNoZXMgPSBQb29sLl9nZXRfdGFza3MoZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZSkKICAgICAgICAgcmVzdWx0ID0gTWFwUmVzdWx0KHNlbGYuX2NhY2hlLCBjaHVua3NpemUsIGxlbihpdGVyYWJsZSksIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9ZXJyb3JfY2FsbGJhY2spCi0gICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIG1hcHN0YXIsICh4LCksIHt9KQorICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KCgoKHJlc3VsdC5fam9iLCBpLCBtYXBwZXIsICh4LCksIHt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKHRhc2tfYmF0Y2hlcykpLCBOb25lKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC01MTksNiArNTI0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCdjbGVhbmluZyB1cCB3b3JrZXIgJWQnICUgcC5waWQpCiAgICAgICAgICAgICAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgorICAgICAgICBzZWxmLnRlcm1pbmF0ZSgpCisKICMKICMgQ2xhc3Mgd2hvc2UgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBieSBgUG9vbC5hcHBseV9hc3luYygpYAogIwpAQCAtNTI2LDMyICs1MzcsMjYgQEAKIGNsYXNzIEFwcGx5UmVzdWx0KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgY2FjaGUsIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjayk6Ci0gICAgICAgIHNlbGYuX2NvbmQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHRocmVhZGluZy5Mb2NrKCkpCisgICAgICAgIHNlbGYuX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgc2VsZi5fam9iID0gbmV4dChqb2JfY291bnRlcikKICAgICAgICAgc2VsZi5fY2FjaGUgPSBjYWNoZQotICAgICAgICBzZWxmLl9yZWFkeSA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2NhbGxiYWNrID0gY2FsbGJhY2sKICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2sgPSBlcnJvcl9jYWxsYmFjawogICAgICAgICBjYWNoZVtzZWxmLl9qb2JdID0gc2VsZgogCiAgICAgZGVmIHJlYWR5KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V2ZW50LmlzX3NldCgpCiAKICAgICBkZWYgc3VjY2Vzc2Z1bChzZWxmKToKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3JlYWR5CisgICAgICAgIGFzc2VydCBzZWxmLnJlYWR5KCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3N1Y2Nlc3MKIAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkeToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLndhaXQodGltZW91dCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgIHNlbGYuX2V2ZW50LndhaXQodGltZW91dCkKIAogICAgIGRlZiBnZXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAgc2VsZi53YWl0KHRpbWVvdXQpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkeToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZHkoKToKICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcgogICAgICAgICBpZiBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlCkBAIC01NjQsMTIgKzU2OSw3IEBACiAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2sgYW5kIG5vdCBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCi0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KIAogIwpAQCAtNTg2LDcgKzU4Niw3IEBACiAgICAgICAgIHNlbGYuX2NodW5rc2l6ZSA9IGNodW5rc2l6ZQogICAgICAgICBpZiBjaHVua3NpemUgPD0gMDoKICAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0ID0gMAotICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICAgICAgZGVsIGNhY2hlW3NlbGYuX2pvYl0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0ID0gbGVuZ3RoLy9jaHVua3NpemUgKyBib29sKGxlbmd0aCAlIGNodW5rc2l6ZSkKQEAgLTYwMCwyNCArNjAwLDE0IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHJlc3VsdAogICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcCgpYApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CmluZGV4IDMyNjJiNTAuLjg5MzUwN2IgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKQEAgLTQsMzIgKzQsNyBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbJ1Byb2Nlc3MnLCAnY3VycmVudF9wcm9jZXNzJywgJ2FjdGl2ZV9jaGlsZHJlbiddCkBAIC05MiwxMiArNjcsMTYgQEAKICAgICAnJycKICAgICBfUG9wZW4gPSBOb25lCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9LAorICAgICAgICAgICAgICAgICAqLCBkYWVtb249Tm9uZSk6CiAgICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lLCAnZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3cnCiAgICAgICAgIGNvdW50ID0gbmV4dChfY3VycmVudF9wcm9jZXNzLl9jb3VudGVyKQogICAgICAgICBzZWxmLl9pZGVudGl0eSA9IF9jdXJyZW50X3Byb2Nlc3MuX2lkZW50aXR5ICsgKGNvdW50LCkKICAgICAgICAgc2VsZi5fYXV0aGtleSA9IF9jdXJyZW50X3Byb2Nlc3MuX2F1dGhrZXkKLSAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBfY3VycmVudF9wcm9jZXNzLl9kYWVtb25pYworICAgICAgICBpZiBkYWVtb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9kYWVtb25pYyA9IGRhZW1vbgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBfY3VycmVudF9wcm9jZXNzLl9kYWVtb25pYwogICAgICAgICBzZWxmLl90ZW1wZGlyID0gX2N1cnJlbnRfcHJvY2Vzcy5fdGVtcGRpcgogICAgICAgICBzZWxmLl9wYXJlbnRfcGlkID0gb3MuZ2V0cGlkKCkKICAgICAgICAgc2VsZi5fcG9wZW4gPSBOb25lCkBAIC0xMzAsNiArMTA5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZyb20gLmZvcmtpbmcgaW1wb3J0IFBvcGVuCiAgICAgICAgIHNlbGYuX3BvcGVuID0gUG9wZW4oc2VsZikKKyAgICAgICAgc2VsZi5fc2VudGluZWwgPSBzZWxmLl9wb3Blbi5zZW50aW5lbAogICAgICAgICBfY3VycmVudF9wcm9jZXNzLl9jaGlsZHJlbi5hZGQoc2VsZikKIAogICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6CkBAIC0yMTYsNiArMTk2LDE3IEBACiAKICAgICBwaWQgPSBpZGVudAogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlbnRpbmVsKHNlbGYpOgorICAgICAgICAnJycKKyAgICAgICAgUmV0dXJuIGEgZmlsZSBkZXNjcmlwdG9yIChVbml4KSBvciBoYW5kbGUgKFdpbmRvd3MpIHN1aXRhYmxlIGZvcgorICAgICAgICB3YWl0aW5nIGZvciBwcm9jZXNzIHRlcm1pbmF0aW9uLgorICAgICAgICAnJycKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbnRpbmVsCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByb2Nlc3Mgbm90IHN0YXJ0ZWQiKQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmIGlzIF9jdXJyZW50X3Byb2Nlc3M6CiAgICAgICAgICAgICBzdGF0dXMgPSAnc3RhcnRlZCcKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKaW5kZXggNTFkOTkxMi4uMzcyNzFmYiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKQEAgLTQsMzIgKzQsNyBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsnUXVldWUnLCAnU2ltcGxlUXVldWUnLCAnSm9pbmFibGVRdWV1ZSddCkBAIC0zOSwxMiArMTQsMTIgQEAKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHRpbWUKLWltcG9ydCBhdGV4aXQKIGltcG9ydCB3ZWFrcmVmCitpbXBvcnQgZXJybm8KIAogZnJvbSBxdWV1ZSBpbXBvcnQgRW1wdHksIEZ1bGwKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUGlwZQorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgUGlwZQogZnJvbSBtdWx0aXByb2Nlc3Npbmcuc3luY2hyb25pemUgaW1wb3J0IExvY2ssIEJvdW5kZWRTZW1hcGhvcmUsIFNlbWFwaG9yZSwgQ29uZGl0aW9uCiBmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBkZWJ1ZywgaW5mbywgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmsKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IGFzc2VydF9zcGF3bmluZwpAQCAtNjcsNiArNDIsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fd2xvY2sgPSBMb2NrKCkKICAgICAgICAgc2VsZi5fc2VtID0gQm91bmRlZFNlbWFwaG9yZShtYXhzaXplKQorICAgICAgICAjIEZvciB1c2UgYnkgY29uY3VycmVudC5mdXR1cmVzCisgICAgICAgIHNlbGYuX2lnbm9yZV9lcGlwZSA9IEZhbHNlCiAKICAgICAgICAgc2VsZi5fYWZ0ZXJfZm9yaygpCiAKQEAgLTc1LDExICs1MiwxMSBAQAogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCi0gICAgICAgIHJldHVybiAoc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCisgICAgICAgIHJldHVybiAoc2VsZi5faWdub3JlX2VwaXBlLCBzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKICAgICAgICAgICAgICAgICBzZWxmLl9ybG9jaywgc2VsZi5fd2xvY2ssIHNlbGYuX3NlbSwgc2VsZi5fb3BpZCkKIAogICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgotICAgICAgICAoc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCisgICAgICAgIChzZWxmLl9pZ25vcmVfZXBpcGUsIHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAogICAgICAgICAgc2VsZi5fcmxvY2ssIHNlbGYuX3dsb2NrLCBzZWxmLl9zZW0sIHNlbGYuX29waWQpID0gc3RhdGUKICAgICAgICAgc2VsZi5fYWZ0ZXJfZm9yaygpCiAKQEAgLTE4Miw3ICsxNTksNyBAQAogICAgICAgICBzZWxmLl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKAogICAgICAgICAgICAgdGFyZ2V0PVF1ZXVlLl9mZWVkLAogICAgICAgICAgICAgYXJncz0oc2VsZi5fYnVmZmVyLCBzZWxmLl9ub3RlbXB0eSwgc2VsZi5fc2VuZCwKLSAgICAgICAgICAgICAgICAgIHNlbGYuX3dsb2NrLCBzZWxmLl93cml0ZXIuY2xvc2UpLAorICAgICAgICAgICAgICAgICAgc2VsZi5fd2xvY2ssIHNlbGYuX3dyaXRlci5jbG9zZSwgc2VsZi5faWdub3JlX2VwaXBlKSwKICAgICAgICAgICAgIG5hbWU9J1F1ZXVlRmVlZGVyVGhyZWFkJwogICAgICAgICAgICAgKQogICAgICAgICBzZWxmLl90aHJlYWQuZGFlbW9uID0gVHJ1ZQpAQCAtMjMzLDcgKzIxMCw3IEBACiAgICAgICAgICAgICBub3RlbXB0eS5yZWxlYXNlKCkKIAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2ZlZWQoYnVmZmVyLCBub3RlbXB0eSwgc2VuZCwgd3JpdGVsb2NrLCBjbG9zZSk6CisgICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmQsIHdyaXRlbG9jaywgY2xvc2UsIGlnbm9yZV9lcGlwZSk6CiAgICAgICAgIGRlYnVnKCdzdGFydGluZyB0aHJlYWQgdG8gZmVlZCBkYXRhIHRvIHBpcGUnKQogICAgICAgICBmcm9tIC51dGlsIGltcG9ydCBpc19leGl0aW5nCiAKQEAgLTI3NSw2ICsyNTIsOCBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGlmIGlnbm9yZV9lcGlwZSBhbmQgZ2V0YXR0cihlLCAnZXJybm8nLCAwKSA9PSBlcnJuby5FUElQRToKKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICMgU2luY2UgdGhpcyBydW5zIGluIGEgZGFlbW9uIHRocmVhZCB0aGUgcmVzb3VyY2VzIGl0IHVzZXMKICAgICAgICAgICAgICMgbWF5IGJlIGJlY29tZSB1bnVzYWJsZSB3aGlsZSB0aGUgcHJvY2VzcyBpcyBjbGVhbmluZyB1cC4KICAgICAgICAgICAgICMgV2UgaWdub3JlIGVycm9ycyB3aGljaCBoYXBwZW4gYWZ0ZXIgdGhlIHByb2Nlc3MgaGFzCkBAIC0zNTYsNiArMzM1LDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyID0gUGlwZShkdXBsZXg9RmFsc2UpCiAgICAgICAgIHNlbGYuX3Jsb2NrID0gTG9jaygpCisgICAgICAgIHNlbGYuX3BvbGwgPSBzZWxmLl9yZWFkZXIucG9sbAogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gTm9uZQogICAgICAgICBlbHNlOgpAQCAtMzYzLDcgKzM0Myw3IEBACiAgICAgICAgIHNlbGYuX21ha2VfbWV0aG9kcygpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fcmVhZGVyLnBvbGwoKQorICAgICAgICByZXR1cm4gbm90IHNlbGYuX3BvbGwoKQogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CmluZGV4IDZlNWU1YmMuLjY1NmZhOGYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CkBAIC01LDUzICs1LDI5IEBACiAjIG11bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCi1fX2FsbF9fID0gW10KK19fYWxsX18gPSBbJ3JlZHVjZV9zb2NrZXQnLCAncmVkdWNlX2Nvbm5lY3Rpb24nLCAnc2VuZF9oYW5kbGUnLCAncmVjdl9oYW5kbGUnXQogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzb2NrZXQKIGltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzaWduYWwKIAotaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MKLWZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IFBvcGVuLCBkdXBsaWNhdGUsIGNsb3NlLCBGb3JraW5nUGlja2xlcgogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgZGVidWcsIHN1Yl9kZWJ1ZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50LCBMaXN0ZW5lcgorZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgaXNfZXhpdGluZywgc3ViX3dhcm5pbmcKIAogCiAjCiAjCiAjCiAKLWlmIG5vdChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBvciBoYXNhdHRyKF9tdWx0aXByb2Nlc3NpbmcsICdyZWN2ZmQnKSk6CitpZiBub3Qoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IgKGhhc2F0dHIoc29ja2V0LCAnQ01TR19MRU4nKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihzb2NrZXQsICdTQ01fUklHSFRTJykpKToKICAgICByYWlzZSBJbXBvcnRFcnJvcigncGlja2xpbmcgb2YgY29ubmVjdGlvbnMgbm90IHN1cHBvcnRlZCcpCiAKICMKQEAgLTU5LDE1NyArMzUsMjQ2IEBACiAjCiAKIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIGltcG9ydCBfc3VicHJvY2VzcwotICAgIGZyb20gX211bHRpcHJvY2Vzc2luZyBpbXBvcnQgd2luMzIKKyAgICAjIFdpbmRvd3MKKyAgICBfX2FsbF9fICs9IFsncmVkdWNlX3BpcGVfY29ubmVjdGlvbiddCisgICAgaW1wb3J0IF93aW5hcGkKIAogICAgIGRlZiBzZW5kX2hhbmRsZShjb25uLCBoYW5kbGUsIGRlc3RpbmF0aW9uX3BpZCk6Ci0gICAgICAgIHByb2Nlc3NfaGFuZGxlID0gd2luMzIuT3BlblByb2Nlc3MoCi0gICAgICAgICAgICB3aW4zMi5QUk9DRVNTX0FMTF9BQ0NFU1MsIEZhbHNlLCBkZXN0aW5hdGlvbl9waWQKLSAgICAgICAgICAgICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmV3X2hhbmRsZSA9IGR1cGxpY2F0ZShoYW5kbGUsIHByb2Nlc3NfaGFuZGxlKQotICAgICAgICAgICAgY29ubi5zZW5kKG5ld19oYW5kbGUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjbG9zZShwcm9jZXNzX2hhbmRsZSkKKyAgICAgICAgZGggPSBEdXBIYW5kbGUoaGFuZGxlLCBfd2luYXBpLkRVUExJQ0FURV9TQU1FX0FDQ0VTUywgZGVzdGluYXRpb25fcGlkKQorICAgICAgICBjb25uLnNlbmQoZGgpCiAKICAgICBkZWYgcmVjdl9oYW5kbGUoY29ubik6Ci0gICAgICAgIHJldHVybiBjb25uLnJlY3YoKQorICAgICAgICByZXR1cm4gY29ubi5yZWN2KCkuZGV0YWNoKCkKIAotZWxzZToKLSAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgotICAgICAgICBfbXVsdGlwcm9jZXNzaW5nLnNlbmRmZChjb25uLmZpbGVubygpLCBoYW5kbGUpCisgICAgY2xhc3MgRHVwSGFuZGxlKG9iamVjdCk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGUsIGFjY2VzcywgcGlkPU5vbmUpOgorICAgICAgICAgICAgIyBkdXBsaWNhdGUgaGFuZGxlIGZvciBwcm9jZXNzIHdpdGggZ2l2ZW4gcGlkCisgICAgICAgICAgICBpZiBwaWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgICAgICAgICAgcHJvYyA9IF93aW5hcGkuT3BlblByb2Nlc3MoX3dpbmFwaS5QUk9DRVNTX0RVUF9IQU5ETEUsIEZhbHNlLCBwaWQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLCBwcm9jLCBhY2Nlc3MsIEZhbHNlLCAwKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHByb2MpCisgICAgICAgICAgICBzZWxmLl9hY2Nlc3MgPSBhY2Nlc3MKKyAgICAgICAgICAgIHNlbGYuX3BpZCA9IHBpZAogCi0gICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgotICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoY29ubi5maWxlbm8oKSkKKyAgICAgICAgZGVmIGRldGFjaChzZWxmKToKKyAgICAgICAgICAgICMgcmV0cmlldmUgaGFuZGxlIGZyb20gcHJvY2VzcyB3aGljaCBjdXJyZW50bHkgb3ducyBpdAorICAgICAgICAgICAgaWYgc2VsZi5fcGlkID09IG9zLmdldHBpZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGUKKyAgICAgICAgICAgIHByb2MgPSBfd2luYXBpLk9wZW5Qcm9jZXNzKF93aW5hcGkuUFJPQ0VTU19EVVBfSEFORExFLCBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BpZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICAgICAgICAgIHByb2MsIHNlbGYuX2hhbmRsZSwgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hY2Nlc3MsIEZhbHNlLCBfd2luYXBpLkRVUExJQ0FURV9DTE9TRV9TT1VSQ0UpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUocHJvYykKIAotIwotIyBTdXBwb3J0IGZvciBhIHBlci1wcm9jZXNzIHNlcnZlciB0aHJlYWQgd2hpY2ggY2FjaGVzIHBpY2tsZWQgaGFuZGxlcwotIworICAgIGNsYXNzIER1cFNvY2tldChvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc29jayk6CisgICAgICAgICAgICBuZXdfc29jayA9IHNvY2suZHVwKCkKKyAgICAgICAgICAgIGRlZiBzZW5kKGNvbm4sIHBpZCk6CisgICAgICAgICAgICAgICAgc2hhcmUgPSBuZXdfc29jay5zaGFyZShwaWQpCisgICAgICAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKHNoYXJlKQorICAgICAgICAgICAgc2VsZi5faWQgPSByZXNvdXJjZV9zaGFyZXIucmVnaXN0ZXIoc2VuZCwgbmV3X3NvY2suY2xvc2UpCiAKLV9jYWNoZSA9IHNldCgpCisgICAgICAgIGRlZiBkZXRhY2goc2VsZik6CisgICAgICAgICAgICBjb25uID0gcmVzb3VyY2Vfc2hhcmVyLmdldF9jb25uZWN0aW9uKHNlbGYuX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNoYXJlID0gY29ubi5yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc29ja2V0LmZyb21zaGFyZShzaGFyZSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAKLWRlZiBfcmVzZXQob2JqKToKLSAgICBnbG9iYWwgX2xvY2ssIF9saXN0ZW5lciwgX2NhY2hlCi0gICAgZm9yIGggaW4gX2NhY2hlOgotICAgICAgICBjbG9zZShoKQotICAgIF9jYWNoZS5jbGVhcigpCi0gICAgX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCi0gICAgX2xpc3RlbmVyID0gTm9uZQorICAgIGRlZiByZWR1Y2Vfc29ja2V0KHMpOgorICAgICAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChEdXBTb2NrZXQocyksKQogCi1fcmVzZXQoTm9uZSkKLXJlZ2lzdGVyX2FmdGVyX2ZvcmsoX3Jlc2V0LCBfcmVzZXQpCisgICAgZGVmIHJlYnVpbGRfc29ja2V0KGRzKToKKyAgICAgICAgcmV0dXJuIGRzLmRldGFjaCgpCiAKLWRlZiBfZ2V0X2xpc3RlbmVyKCk6Ci0gICAgZ2xvYmFsIF9saXN0ZW5lcgorICAgIGRlZiByZWR1Y2VfY29ubmVjdGlvbihjb25uKToKKyAgICAgICAgaGFuZGxlID0gY29ubi5maWxlbm8oKQorICAgICAgICB3aXRoIHNvY2tldC5mcm9tZmQoaGFuZGxlLCBzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgZHMgPSBEdXBTb2NrZXQocykKKyAgICAgICAgICAgIHJldHVybiByZWJ1aWxkX2Nvbm5lY3Rpb24sIChkcywgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKIAotICAgIGlmIF9saXN0ZW5lciBpcyBOb25lOgotICAgICAgICBfbG9jay5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgX2xpc3RlbmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVidWcoJ3N0YXJ0aW5nIGxpc3RlbmVyIGFuZCB0aHJlYWQgZm9yIHNlbmRpbmcgaGFuZGxlcycpCi0gICAgICAgICAgICAgICAgX2xpc3RlbmVyID0gTGlzdGVuZXIoYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQotICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1fc2VydmUpCi0gICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfbG9jay5yZWxlYXNlKCkKLQotICAgIHJldHVybiBfbGlzdGVuZXIKLQotZGVmIF9zZXJ2ZSgpOgotICAgIGZyb20gLnV0aWwgaW1wb3J0IGlzX2V4aXRpbmcsIHN1Yl93YXJuaW5nCi0KLSAgICB3aGlsZSAxOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb25uID0gX2xpc3RlbmVyLmFjY2VwdCgpCi0gICAgICAgICAgICBoYW5kbGVfd2FudGVkLCBkZXN0aW5hdGlvbl9waWQgPSBjb25uLnJlY3YoKQotICAgICAgICAgICAgX2NhY2hlLnJlbW92ZShoYW5kbGVfd2FudGVkKQotICAgICAgICAgICAgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlX3dhbnRlZCwgZGVzdGluYXRpb25fcGlkKQotICAgICAgICAgICAgY2xvc2UoaGFuZGxlX3dhbnRlZCkKLSAgICAgICAgICAgIGNvbm4uY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiBub3QgaXNfZXhpdGluZygpOgotICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgICAgICAgICBzdWJfd2FybmluZygKLSAgICAgICAgICAgICAgICAgICAgJ3RocmVhZCBmb3Igc2hhcmluZyBoYW5kbGVzIHJhaXNlZCBleGNlcHRpb24gOlxuJyArCi0gICAgICAgICAgICAgICAgICAgICctJyo3OSArICdcbicgKyB0cmFjZWJhY2suZm9ybWF0X2V4YygpICsgJy0nKjc5Ci0gICAgICAgICAgICAgICAgICAgICkKLQotIwotIyBGdW5jdGlvbnMgdG8gYmUgdXNlZCBmb3IgcGlja2xpbmcvdW5waWNrbGluZyBvYmplY3RzIHdpdGggaGFuZGxlcwotIwotCi1kZWYgcmVkdWNlX2hhbmRsZShoYW5kbGUpOgotICAgIGlmIFBvcGVuLnRocmVhZF9pc19zcGF3bmluZygpOgotICAgICAgICByZXR1cm4gKE5vbmUsIFBvcGVuLmR1cGxpY2F0ZV9mb3JfY2hpbGQoaGFuZGxlKSwgVHJ1ZSkKLSAgICBkdXBfaGFuZGxlID0gZHVwbGljYXRlKGhhbmRsZSkKLSAgICBfY2FjaGUuYWRkKGR1cF9oYW5kbGUpCi0gICAgc3ViX2RlYnVnKCdyZWR1Y2luZyBoYW5kbGUgJWQnLCBoYW5kbGUpCi0gICAgcmV0dXJuIChfZ2V0X2xpc3RlbmVyKCkuYWRkcmVzcywgZHVwX2hhbmRsZSwgRmFsc2UpCi0KLWRlZiByZWJ1aWxkX2hhbmRsZShwaWNrbGVkX2RhdGEpOgotICAgIGFkZHJlc3MsIGhhbmRsZSwgaW5oZXJpdGVkID0gcGlja2xlZF9kYXRhCi0gICAgaWYgaW5oZXJpdGVkOgotICAgICAgICByZXR1cm4gaGFuZGxlCi0gICAgc3ViX2RlYnVnKCdyZWJ1aWxkaW5nIGhhbmRsZSAlZCcsIGhhbmRsZSkKLSAgICBjb25uID0gQ2xpZW50KGFkZHJlc3MsIGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKLSAgICBjb25uLnNlbmQoKGhhbmRsZSwgb3MuZ2V0cGlkKCkpKQotICAgIG5ld19oYW5kbGUgPSByZWN2X2hhbmRsZShjb25uKQotICAgIGNvbm4uY2xvc2UoKQotICAgIHJldHVybiBuZXdfaGFuZGxlCi0KLSMKLSMgUmVnaXN0ZXIgYF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbmAgd2l0aCBgRm9ya2luZ1BpY2tsZXJgCi0jCi0KLWRlZiByZWR1Y2VfY29ubmVjdGlvbihjb25uKToKLSAgICByaCA9IHJlZHVjZV9oYW5kbGUoY29ubi5maWxlbm8oKSkKLSAgICByZXR1cm4gcmVidWlsZF9jb25uZWN0aW9uLCAocmgsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCi0KLWRlZiByZWJ1aWxkX2Nvbm5lY3Rpb24ocmVkdWNlZF9oYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSk6Ci0gICAgaGFuZGxlID0gcmVidWlsZF9oYW5kbGUocmVkdWNlZF9oYW5kbGUpCi0gICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigKLSAgICAgICAgaGFuZGxlLCByZWFkYWJsZT1yZWFkYWJsZSwgd3JpdGFibGU9d3JpdGFibGUKLSAgICAgICAgKQotCi1Gb3JraW5nUGlja2xlci5yZWdpc3RlcihfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQotCi0jCi0jIFJlZ2lzdGVyIGBzb2NrZXQuc29ja2V0YCB3aXRoIGBGb3JraW5nUGlja2xlcmAKLSMKLQotZGVmIGZyb21mZChmZCwgZmFtaWx5LCB0eXBlXywgcHJvdG89MCk6Ci0gICAgcyA9IHNvY2tldC5mcm9tZmQoZmQsIGZhbWlseSwgdHlwZV8sIHByb3RvKQotICAgIGlmIHMuX19jbGFzc19fIGlzIG5vdCBzb2NrZXQuc29ja2V0OgotICAgICAgICBzID0gc29ja2V0LnNvY2tldChfc29jaz1zKQotICAgIHJldHVybiBzCi0KLWRlZiByZWR1Y2Vfc29ja2V0KHMpOgotICAgIHJlZHVjZWRfaGFuZGxlID0gcmVkdWNlX2hhbmRsZShzLmZpbGVubygpKQotICAgIHJldHVybiByZWJ1aWxkX3NvY2tldCwgKHJlZHVjZWRfaGFuZGxlLCBzLmZhbWlseSwgcy50eXBlLCBzLnByb3RvKQotCi1kZWYgcmVidWlsZF9zb2NrZXQocmVkdWNlZF9oYW5kbGUsIGZhbWlseSwgdHlwZV8sIHByb3RvKToKLSAgICBmZCA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgIF9zb2NrID0gZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVfLCBwcm90bykKLSAgICBjbG9zZShmZCkKLSAgICByZXR1cm4gX3NvY2sKLQotRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgcmVkdWNlX3NvY2tldCkKLQotIwotIyBSZWdpc3RlciBgX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbmAgd2l0aCBgRm9ya2luZ1BpY2tsZXJgCi0jCi0KLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIGRlZiByZWJ1aWxkX2Nvbm5lY3Rpb24oZHMsIHJlYWRhYmxlLCB3cml0YWJsZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENvbm5lY3Rpb24KKyAgICAgICAgc29jayA9IGRzLmRldGFjaCgpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHNvY2suZGV0YWNoKCksIHJlYWRhYmxlLCB3cml0YWJsZSkKIAogICAgIGRlZiByZWR1Y2VfcGlwZV9jb25uZWN0aW9uKGNvbm4pOgotICAgICAgICByaCA9IHJlZHVjZV9oYW5kbGUoY29ubi5maWxlbm8oKSkKLSAgICAgICAgcmV0dXJuIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uLCAocmgsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCisgICAgICAgIGFjY2VzcyA9ICgoX3dpbmFwaS5GSUxFX0dFTkVSSUNfUkVBRCBpZiBjb25uLnJlYWRhYmxlIGVsc2UgMCkgfAorICAgICAgICAgICAgICAgICAgKF93aW5hcGkuRklMRV9HRU5FUklDX1dSSVRFIGlmIGNvbm4ud3JpdGFibGUgZWxzZSAwKSkKKyAgICAgICAgZGggPSBEdXBIYW5kbGUoY29ubi5maWxlbm8oKSwgYWNjZXNzKQorICAgICAgICByZXR1cm4gcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24sIChkaCwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKIAotICAgIGRlZiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbihyZWR1Y2VkX2hhbmRsZSwgcmVhZGFibGUsIHdyaXRhYmxlKToKLSAgICAgICAgaGFuZGxlID0gcmVidWlsZF9oYW5kbGUocmVkdWNlZF9oYW5kbGUpCi0gICAgICAgIHJldHVybiBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKAotICAgICAgICAgICAgaGFuZGxlLCByZWFkYWJsZT1yZWFkYWJsZSwgd3JpdGFibGU9d3JpdGFibGUKLSAgICAgICAgICAgICkKKyAgICBkZWYgcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24oZGgsIHJlYWRhYmxlLCB3cml0YWJsZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IFBpcGVDb25uZWN0aW9uCisgICAgICAgIGhhbmRsZSA9IGRoLmRldGFjaCgpCisgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSkKIAotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24sIHJlZHVjZV9waXBlX2Nvbm5lY3Rpb24pCitlbHNlOgorICAgICMgVW5peAorCisgICAgIyBPbiBNYWNPU1ggd2Ugc2hvdWxkIGFja25vd2xlZGdlIHJlY2VpcHQgb2YgZmRzIC0tIHNlZSBJc3N1ZTE0NjY5CisgICAgQUNLTk9XTEVER0UgPSBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicKKworICAgIGRlZiBzZW5kX2hhbmRsZShjb25uLCBoYW5kbGUsIGRlc3RpbmF0aW9uX3BpZCk6CisgICAgICAgIHdpdGggc29ja2V0LmZyb21mZChjb25uLmZpbGVubygpLCBzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgcy5zZW5kbXNnKFtiJ3gnXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrKCJAaSIsIGhhbmRsZSkpXSkKKyAgICAgICAgaWYgQUNLTk9XTEVER0UgYW5kIGNvbm4ucmVjdl9ieXRlcygpICE9IGInQUNLJzoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignZGlkIG5vdCByZWNlaXZlIGFja25vd2xlZGdlbWVudCBvZiBmZCcpCisKKyAgICBkZWYgcmVjdl9oYW5kbGUoY29ubik6CisgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoIkBpIikKKyAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGNvbm4uZmlsZW5vKCksIHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CisgICAgICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcy5yZWN2bXNnKDEsIHNvY2tldC5DTVNHX0xFTihzaXplKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBBQ0tOT1dMRURHRToKKyAgICAgICAgICAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGInQUNLJykKKyAgICAgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgICAgICAgICBpZiAoY21zZ19sZXZlbCA9PSBzb2NrZXQuU09MX1NPQ0tFVCBhbmQKKyAgICAgICAgICAgICAgICAgICAgY21zZ190eXBlID09IHNvY2tldC5TQ01fUklHSFRTKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soIkBpIiwgY21zZ19kYXRhWzpzaXplXSlbMF0KKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvciwgc3RydWN0LmVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ludmFsaWQgZGF0YSByZWNlaXZlZCcpCisKKyAgICBjbGFzcyBEdXBGZChvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmQpOgorICAgICAgICAgICAgbmV3X2ZkID0gb3MuZHVwKGZkKQorICAgICAgICAgICAgZGVmIHNlbmQoY29ubiwgcGlkKToKKyAgICAgICAgICAgICAgICBzZW5kX2hhbmRsZShjb25uLCBuZXdfZmQsIHBpZCkKKyAgICAgICAgICAgIGRlZiBjbG9zZSgpOgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKG5ld19mZCkKKyAgICAgICAgICAgIHNlbGYuX2lkID0gcmVzb3VyY2Vfc2hhcmVyLnJlZ2lzdGVyKHNlbmQsIGNsb3NlKQorCisgICAgICAgIGRlZiBkZXRhY2goc2VsZik6CisgICAgICAgICAgICBjb25uID0gcmVzb3VyY2Vfc2hhcmVyLmdldF9jb25uZWN0aW9uKHNlbGYuX2lkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiByZWN2X2hhbmRsZShjb25uKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKKworICAgIGRlZiByZWR1Y2Vfc29ja2V0KHMpOgorICAgICAgICBkZiA9IER1cEZkKHMuZmlsZW5vKCkpCisgICAgICAgIHJldHVybiByZWJ1aWxkX3NvY2tldCwgKGRmLCBzLmZhbWlseSwgcy50eXBlLCBzLnByb3RvKQorCisgICAgZGVmIHJlYnVpbGRfc29ja2V0KGRmLCBmYW1pbHksIHR5cGUsIHByb3RvKToKKyAgICAgICAgZmQgPSBkZi5kZXRhY2goKQorICAgICAgICBzID0gc29ja2V0LmZyb21mZChmZCwgZmFtaWx5LCB0eXBlLCBwcm90bykKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIHJldHVybiBzCisKKyAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6CisgICAgICAgIGRmID0gRHVwRmQoY29ubi5maWxlbm8oKSkKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfY29ubmVjdGlvbiwgKGRmLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQorCisgICAgZGVmIHJlYnVpbGRfY29ubmVjdGlvbihkZiwgcmVhZGFibGUsIHdyaXRhYmxlKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ29ubmVjdGlvbgorICAgICAgICBmZCA9IGRmLmRldGFjaCgpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKGZkLCByZWFkYWJsZSwgd3JpdGFibGUpCisKKyMKKyMgU2VydmVyIHdoaWNoIHNoYXJlcyByZWdpc3RlcmVkIHJlc291cmNlcyB3aXRoIGNsaWVudHMKKyMKKworY2xhc3MgUmVzb3VyY2VTaGFyZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2tleSA9IDAKKyAgICAgICAgc2VsZi5fY2FjaGUgPSB7fQorICAgICAgICBzZWxmLl9vbGRfbG9ja3MgPSBbXQorICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKKyAgICAgICAgc2VsZi5fYWRkcmVzcyA9IE5vbmUKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICByZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIFJlc291cmNlU2hhcmVyLl9hZnRlcmZvcmspCisKKyAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgc2VuZCwgY2xvc2UpOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9hZGRyZXNzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnQoKQorICAgICAgICAgICAgc2VsZi5fa2V5ICs9IDEKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlW3NlbGYuX2tleV0gPSAoc2VuZCwgY2xvc2UpCisgICAgICAgICAgICByZXR1cm4gKHNlbGYuX2FkZHJlc3MsIHNlbGYuX2tleSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X2Nvbm5lY3Rpb24oaWRlbnQpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDbGllbnQKKyAgICAgICAgYWRkcmVzcywga2V5ID0gaWRlbnQKKyAgICAgICAgYyA9IENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCisgICAgICAgIGMuc2VuZCgoa2V5LCBvcy5nZXRwaWQoKSkpCisgICAgICAgIHJldHVybiBjCisKKyAgICBkZWYgc3RvcChzZWxmLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDbGllbnQKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjID0gQ2xpZW50KHNlbGYuX2FkZHJlc3MsIGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKKyAgICAgICAgICAgICAgICBjLnNlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICBjLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbih0aW1lb3V0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICBzdWJfd2FybignUmVzb3VyY2VTaGFyZXIgdGhyZWFkIGRpZCBub3Qgc3RvcCB3aGVuIGFza2VkJykKKyAgICAgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCisgICAgICAgICAgICAgICAgZm9yIGtleSwgKHNlbmQsIGNsb3NlKSBpbiBzZWxmLl9jYWNoZS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBjbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGUuY2xlYXIoKQorCisgICAgZGVmIF9hZnRlcmZvcmsoc2VsZik6CisgICAgICAgIGZvciBrZXksIChzZW5kLCBjbG9zZSkgaW4gc2VsZi5fY2FjaGUuaXRlbXMoKToKKyAgICAgICAgICAgIGNsb3NlKCkKKyAgICAgICAgc2VsZi5fY2FjaGUuY2xlYXIoKQorICAgICAgICAjIElmIHNlbGYuX2xvY2sgd2FzIGxvY2tlZCBhdCB0aGUgdGltZSBvZiB0aGUgZm9yaywgaXQgbWF5IGJlIGJyb2tlbgorICAgICAgICAjIC0tIHNlZSBpc3N1ZSA2NzIxLiAgUmVwbGFjZSBpdCB3aXRob3V0IGxldHRpbmcgaXQgYmUgZ2MnZWQuCisgICAgICAgIHNlbGYuX29sZF9sb2Nrcy5hcHBlbmQoc2VsZi5fbG9jaykKKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQorICAgICAgICBzZWxmLl9hZGRyZXNzID0gTm9uZQorICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisKKyAgICBkZWYgX3N0YXJ0KHNlbGYpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBMaXN0ZW5lcgorICAgICAgICBhc3NlcnQgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZQorICAgICAgICBkZWJ1Zygnc3RhcnRpbmcgbGlzdGVuZXIgYW5kIHRocmVhZCBmb3Igc2VuZGluZyBoYW5kbGVzJykKKyAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBMaXN0ZW5lcihhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCisgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBzZWxmLl9saXN0ZW5lci5hZGRyZXNzCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9zZXJ2ZSkKKyAgICAgICAgdC5kYWVtb24gPSBUcnVlCisgICAgICAgIHQuc3RhcnQoKQorICAgICAgICBzZWxmLl90aHJlYWQgPSB0CisKKyAgICBkZWYgX3NlcnZlKHNlbGYpOgorICAgICAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpOgorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCByYW5nZSgxLCBzaWduYWwuTlNJRykpCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29ubiA9IHNlbGYuX2xpc3RlbmVyLmFjY2VwdCgpCisgICAgICAgICAgICAgICAgbXNnID0gY29ubi5yZWN2KCkKKyAgICAgICAgICAgICAgICBpZiBtc2cgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBrZXksIGRlc3RpbmF0aW9uX3BpZCA9IG1zZworICAgICAgICAgICAgICAgIHNlbmQsIGNsb3NlID0gc2VsZi5fY2FjaGUucG9wKGtleSkKKyAgICAgICAgICAgICAgICBzZW5kKGNvbm4sIGRlc3RpbmF0aW9uX3BpZCkKKyAgICAgICAgICAgICAgICBjbG9zZSgpCisgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX2V4aXRpbmcoKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworICAgICAgICAgICAgICAgICAgICBzdWJfd2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aHJlYWQgZm9yIHNoYXJpbmcgaGFuZGxlcyByYWlzZWQgZXhjZXB0aW9uIDpcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgJy0nKjc5ICsgJ1xuJyArIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkgKyAnLScqNzkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworcmVzb3VyY2Vfc2hhcmVyID0gUmVzb3VyY2VTaGFyZXIoKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQppbmRleCAxZTY5NGRhLi5hMzU4ZWQ0IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQpAQCAtNCwzNSArNCw5IEBACiAjIG11bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCi1pbXBvcnQgc3lzCiBpbXBvcnQgY3R5cGVzCiBpbXBvcnQgd2Vha3JlZgogCkBAIC04OSw3ICs2Myw3IEBACiAgICAgICAgIHJlc3VsdC5fX2luaXRfXygqc2l6ZV9vcl9pbml0aWFsaXplcikKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi1kZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9Tm9uZSk6CitkZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJuIGEgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgZm9yIGEgVmFsdWUKICAgICAnJycKQEAgLTEwMiwxMyArNzYsMTAgQEAKICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiclcicgaGFzIG5vIG1ldGhvZCAnYWNxdWlyZSciICUgbG9jaykKICAgICByZXR1cm4gc3luY2hyb25pemVkKG9iaiwgbG9jaykKIAotZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICoqa3dkcyk6CitkZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKToKICAgICAnJycKICAgICBSZXR1cm4gYSBzeW5jaHJvbml6YXRpb24gd3JhcHBlciBmb3IgYSBSYXdBcnJheQogICAgICcnJwotICAgIGxvY2sgPSBrd2RzLnBvcCgnbG9jaycsIE5vbmUpCi0gICAgaWYga3dkczoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndW5yZWNvZ25pemVkIGtleXdvcmQgYXJndW1lbnQocyk6ICVzJyAlIGxpc3Qoa3dkcy5rZXlzKCkpKQogICAgIG9iaiA9IFJhd0FycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIpCiAgICAgaWYgbG9jayBpcyBGYWxzZToKICAgICAgICAgcmV0dXJuIG9iagpAQCAtMTU4LDcgKzEyOSw4IEBACiAgICAgaWYgbGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICB0eXBlXyA9IHR5cGVfICogbGVuZ3RoCiAgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKLSAgICBvYmogPSB0eXBlXy5mcm9tX2FkZHJlc3Mod3JhcHBlci5nZXRfYWRkcmVzcygpKQorICAgIGJ1ZiA9IHdyYXBwZXIuY3JlYXRlX21lbW9yeXZpZXcoKQorICAgIG9iaiA9IHR5cGVfLmZyb21fYnVmZmVyKGJ1ZikKICAgICBvYmouX3dyYXBwZXIgPSB3cmFwcGVyCiAgICAgcmV0dXJuIG9iagogCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQppbmRleCA3MGFlODI1Li4yMmVhYmU1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKQEAgLTQsMzIgKzQsNyBAQAogIyBtdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWwpAQCAtMzcsMTUgKzEyLDEzIEBACiAgICAgXQogCiBpbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lLCBzbGVlcCBhcyBfc2xlZXAKLQogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MgaW1wb3J0IGN1cnJlbnRfcHJvY2VzcwotZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGRlYnVnCitmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBkZWJ1ZwogZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgYXNzZXJ0X3NwYXduaW5nLCBQb3BlbgorZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKICMgVHJ5IHRvIGltcG9ydCB0aGUgbXAuc3luY2hyb25pemUgbW9kdWxlIGNsZWFubHksIGlmIGl0IGZhaWxzCiAjIHJhaXNlIEltcG9ydEVycm9yIGZvciBwbGF0Zm9ybXMgbGFja2luZyBhIHdvcmtpbmcgc2VtX29wZW4gaW1wbGVtZW50YXRpb24uCkBAIC0yNDMsNyArMjE2LDcgQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHdhaXQgZm9yIG5vdGlmaWNhdGlvbiBvciB0aW1lb3V0Ci0gICAgICAgICAgICByZXQgPSBzZWxmLl93YWl0X3NlbWFwaG9yZS5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgIyBpbmRpY2F0ZSB0aGF0IHRoaXMgdGhyZWFkIGhhcyB3b2tlbgogICAgICAgICAgICAgc2VsZi5fd29rZW5fY291bnQucmVsZWFzZSgpCkBAIC0yNTEsNyArMjI0LDYgQEAKICAgICAgICAgICAgICMgcmVhY3F1aXJlIGxvY2sKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKICAgICAgICAgICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKQotICAgICAgICAgICAgcmV0dXJuIHJldAogCiAgICAgZGVmIG5vdGlmeShzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuX2xvY2suX3NlbWxvY2suX2lzX21pbmUoKSwgJ2xvY2sgaXMgbm90IG93bmVkJwpAQCAtMjkzLDYgKzI2NSwyNCBAQAogICAgICAgICAgICAgd2hpbGUgc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQorICAgICAgICAgICAgd2FpdHRpbWUgPSBOb25lCisgICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi53YWl0KHdhaXR0aW1lKQorICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAjCiAjIEV2ZW50CiAjCkBAIC0zNDMsMyArMzMzLDQzIEBACiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisKKyMKKyMgQmFycmllcgorIworCitjbGFzcyBCYXJyaWVyKHRocmVhZGluZy5CYXJyaWVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgaW1wb3J0IHN0cnVjdAorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5oZWFwIGltcG9ydCBCdWZmZXJXcmFwcGVyCisgICAgICAgIHdyYXBwZXIgPSBCdWZmZXJXcmFwcGVyKHN0cnVjdC5jYWxjc2l6ZSgnaScpICogMikKKyAgICAgICAgY29uZCA9IENvbmRpdGlvbigpCisgICAgICAgIHNlbGYuX19zZXRzdGF0ZV9fKChwYXJ0aWVzLCBhY3Rpb24sIHRpbWVvdXQsIGNvbmQsIHdyYXBwZXIpKQorICAgICAgICBzZWxmLl9zdGF0ZSA9IDAKKyAgICAgICAgc2VsZi5fY291bnQgPSAwCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgKHNlbGYuX3BhcnRpZXMsIHNlbGYuX2FjdGlvbiwgc2VsZi5fdGltZW91dCwKKyAgICAgICAgIHNlbGYuX2NvbmQsIHNlbGYuX3dyYXBwZXIpID0gc3RhdGUKKyAgICAgICAgc2VsZi5fYXJyYXkgPSBzZWxmLl93cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkuY2FzdCgnaScpCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX3BhcnRpZXMsIHNlbGYuX2FjdGlvbiwgc2VsZi5fdGltZW91dCwKKyAgICAgICAgICAgICAgICBzZWxmLl9jb25kLCBzZWxmLl93cmFwcGVyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9zdGF0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FycmF5WzBdCisKKyAgICBAX3N0YXRlLnNldHRlcgorICAgIGRlZiBfc3RhdGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9hcnJheVswXSA9IHZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX2NvdW50KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYXJyYXlbMV0KKworICAgIEBfY291bnQuc2V0dGVyCisgICAgZGVmIF9jb3VudChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2FycmF5WzFdID0gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQppbmRleCAyMGJiYTM3Li43NDk1ODEzIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CkBAIC00LDM5ICs0LDE4IEBACiAjIG11bHRpcHJvY2Vzc2luZy91dGlsLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAoraW1wb3J0IHN5cworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IG9zCiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgd2Vha3JlZgogaW1wb3J0IGF0ZXhpdAogaW1wb3J0IHRocmVhZGluZyAgICAgICAgIyB3ZSB3YW50IHRocmVhZGluZyB0byBpbnN0YWxsIGl0J3MKICAgICAgICAgICAgICAgICAgICAgICAgICMgY2xlYW51cCBmdW5jdGlvbiBiZWZvcmUgbXVsdGlwcm9jZXNzaW5nIGRvZXMKK2Zyb20gc3VicHJvY2VzcyBpbXBvcnQgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncwogCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIGFjdGl2ZV9jaGlsZHJlbgogCkBAIC04NCw3ICs2Myw3IEBACiAgICAgUmV0dXJucyBsb2dnZXIgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcKICAgICAnJycKICAgICBnbG9iYWwgX2xvZ2dlcgotICAgIGltcG9ydCBsb2dnaW5nLCBhdGV4aXQKKyAgICBpbXBvcnQgbG9nZ2luZwogCiAgICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgIHRyeToKQEAgLTE4MywxMCArMTYyLDE1IEBACiAgICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYuX2t3YXJncyA9IGt3YXJncyBvciB7fQogICAgICAgICBzZWxmLl9rZXkgPSAoZXhpdHByaW9yaXR5LCBuZXh0KF9maW5hbGl6ZXJfY291bnRlcikpCisgICAgICAgIHNlbGYuX3BpZCA9IG9zLmdldHBpZCgpCiAKICAgICAgICAgX2ZpbmFsaXplcl9yZWdpc3RyeVtzZWxmLl9rZXldID0gc2VsZgogCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHdyPU5vbmUpOgorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB3cj1Ob25lLAorICAgICAgICAgICAgICAgICAjIE5lZWQgdG8gYmluZCB0aGVzZSBsb2NhbGx5IGJlY2F1c2UgdGhlIGdsb2JhbHMgY2FuIGhhdmUKKyAgICAgICAgICAgICAgICAgIyBiZWVuIGNsZWFyZWQgYXQgc2h1dGRvd24KKyAgICAgICAgICAgICAgICAgX2ZpbmFsaXplcl9yZWdpc3RyeT1fZmluYWxpemVyX3JlZ2lzdHJ5LAorICAgICAgICAgICAgICAgICBzdWJfZGVidWc9c3ViX2RlYnVnLCBnZXRwaWQ9b3MuZ2V0cGlkKToKICAgICAgICAgJycnCiAgICAgICAgIFJ1biB0aGUgY2FsbGJhY2sgdW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIG9yIGNhbmNlbGxlZAogICAgICAgICAnJycKQEAgLTE5NSw5ICsxNzksMTMgQEAKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgbm8gbG9uZ2VyIHJlZ2lzdGVyZWQnKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgY2FsbGluZyAlcyB3aXRoIGFyZ3MgJXMgYW5kIGt3YXJncyAlcycsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjaywgc2VsZi5fYXJncywgc2VsZi5fa3dhcmdzKQotICAgICAgICAgICAgcmVzID0gc2VsZi5fY2FsbGJhY2soKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQorICAgICAgICAgICAgaWYgc2VsZi5fcGlkICE9IGdldHBpZCgpOgorICAgICAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIGlnbm9yZWQgYmVjYXVzZSBkaWZmZXJlbnQgcHJvY2VzcycpCisgICAgICAgICAgICAgICAgcmVzID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBjYWxsaW5nICVzIHdpdGggYXJncyAlcyBhbmQga3dhcmdzICVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2ssIHNlbGYuX2FyZ3MsIHNlbGYuX2t3YXJncykKKyAgICAgICAgICAgICAgICByZXMgPSBzZWxmLl9jYWxsYmFjaygqc2VsZi5fYXJncywgKipzZWxmLl9rd2FyZ3MpCiAgICAgICAgICAgICBzZWxmLl93ZWFrcmVmID0gc2VsZi5fY2FsbGJhY2sgPSBzZWxmLl9hcmdzID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2t3YXJncyA9IHNlbGYuX2tleSA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiByZXMKQEAgLTI5OSwxNiArMjg3LDIxIEBACiAgICAgICAgIGluZm8oJ3Byb2Nlc3Mgc2h1dHRpbmcgZG93bicpCiAgICAgICAgIGRlYnVnKCdydW5uaW5nIGFsbCAiYXRleGl0IiBmaW5hbGl6ZXJzIHdpdGggcHJpb3JpdHkgPj0gMCcpCiAgICAgICAgIF9ydW5fZmluYWxpemVycygwKQorCiAgICAgICAgIGlmIGN1cnJlbnRfcHJvY2VzcygpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgIyBXZSBjaGVjayBpZiB0aGUgY3VycmVudCBwcm9jZXNzIGlzIE5vbmUgaGVyZSBiZWNhdXNlIGlmCi0gICAgICAgICAgICAjIGl0J3MgTm9uZSwgYW55IGNhbGwgdG8gYGBhY3RpdmVfY2hpbGRyZW4oKWBgIHdpbGwgdGhyb3cgYW4KLSAgICAgICAgICAgICMgQXR0cmlidXRlRXJyb3IgKGFjdGl2ZV9jaGlsZHJlbiB3aW5kcyB1cCB0cnlpbmcgdG8gZ2V0Ci0gICAgICAgICAgICAjIGF0dHJpYnV0ZXMgZnJvbSB1dGlsLl9jdXJyZW50X3Byb2Nlc3MpLiAgVGhpcyBoYXBwZW5zIGluIGEKLSAgICAgICAgICAgICMgdmFyaWV0eSBvZiBzaHV0ZG93biBjaXJjdW1zdGFuY2VzIHRoYXQgYXJlIG5vdCB3ZWxsLXVuZGVyc3Rvb2QKLSAgICAgICAgICAgICMgYmVjYXVzZSBtb2R1bGUtc2NvcGUgdmFyaWFibGVzIGFyZSBub3QgYXBwYXJlbnRseSBzdXBwb3NlZCB0bwotICAgICAgICAgICAgIyBiZSBkZXN0cm95ZWQgdW50aWwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuICBIb3dldmVyLAotICAgICAgICAgICAgIyB0aGV5IGFyZSBpbmRlZWQgZGVzdHJveWVkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gIFNlZQotICAgICAgICAgICAgIyBpc3N1ZXMgIzk3NzUgYW5kICMxNTg4MS4gIEFsc28gcmVsYXRlZDogIzQxMDYsICM5MjA1LCBhbmQgIzkyMDcuCisgICAgICAgICAgICAjIGl0J3MgTm9uZSwgYW55IGNhbGwgdG8gYGBhY3RpdmVfY2hpbGRyZW4oKWBgIHdpbGwgdGhyb3cKKyAgICAgICAgICAgICMgYW4gQXR0cmlidXRlRXJyb3IgKGFjdGl2ZV9jaGlsZHJlbiB3aW5kcyB1cCB0cnlpbmcgdG8KKyAgICAgICAgICAgICMgZ2V0IGF0dHJpYnV0ZXMgZnJvbSB1dGlsLl9jdXJyZW50X3Byb2Nlc3MpLiAgT25lCisgICAgICAgICAgICAjIHNpdHVhdGlvbiB3aGVyZSB0aGlzIGNhbiBoYXBwZW4gaXMgaWYgc29tZW9uZSBoYXMKKyAgICAgICAgICAgICMgbWFuaXB1bGF0ZWQgc3lzLm1vZHVsZXMsIGNhdXNpbmcgdGhpcyBtb2R1bGUgdG8gYmUKKyAgICAgICAgICAgICMgZ2FyYmFnZSBjb2xsZWN0ZWQuICBUaGUgZGVzdHJ1Y3RvciBmb3IgdGhlIG1vZHVsZSB0eXBlCisgICAgICAgICAgICAjIHRoZW4gcmVwbGFjZXMgYWxsIHZhbHVlcyBpbiB0aGUgbW9kdWxlIGRpY3Qgd2l0aCBOb25lLgorICAgICAgICAgICAgIyBGb3IgaW5zdGFuY2UsIGFmdGVyIHNldHVwdG9vbHMgcnVucyBhIHRlc3QgaXQgcmVwbGFjZXMKKyAgICAgICAgICAgICMgc3lzLm1vZHVsZXMgd2l0aCBhIGNvcHkgY3JlYXRlZCBlYXJsaWVyLiAgU2VlIGlzc3VlcworICAgICAgICAgICAgIyAjOTc3NSBhbmQgIzE1ODgxLiAgQWxzbyByZWxhdGVkOiAjNDEwNiwgIzkyMDUsIGFuZAorICAgICAgICAgICAgIyAjOTIwNy4KKwogICAgICAgICAgICAgZm9yIHAgaW4gYWN0aXZlX2NoaWxkcmVuKCk6CiAgICAgICAgICAgICAgICAgaWYgcC5fZGFlbW9uaWM6CiAgICAgICAgICAgICAgICAgICAgIGluZm8oJ2NhbGxpbmcgdGVybWluYXRlKCkgZm9yIGRhZW1vbiAlcycsIHAubmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9ubnRwbGliLnB5IGIvTGliL25udHBsaWIucHkKaW5kZXggMzJiZmZkOC4uMmRlNmViZCAxMDA2NDQKLS0tIGEvTGliL25udHBsaWIucHkKKysrIGIvTGliL25udHBsaWIucHkKQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAgICAgICAgcGFydHMuYXBwZW5kKHYuZGVjb2RlKGVuYyBvciAnYXNjaWknKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2KQotICAgIHJldHVybiAnICcuam9pbihwYXJ0cykKKyAgICByZXR1cm4gJycuam9pbihwYXJ0cykKIAogZGVmIF9wYXJzZV9vdmVydmlld19mbXQobGluZXMpOgogICAgICIiIlBhcnNlIGEgbGlzdCBvZiBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSByZXNwb25zZSB0byBMSVNUIE9WRVJWSUVXLkZNVApAQCAtMzUxLDYgKzM1MSwyMCBAQAogICAgICAgICAjIExvZyBpbiBhbmQgZW5jcnlwdGlvbiBzZXR1cCBvcmRlciBpcyBsZWZ0IHRvIHN1YmNsYXNzZXMuCiAgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IEZhbHNlCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgaXNfY29ubmVjdGVkID0gbGFtYmRhOiBoYXNhdHRyKHNlbGYsICJmaWxlIikKKyAgICAgICAgaWYgaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5xdWl0KCkKKyAgICAgICAgICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiBpc19jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQorCiAgICAgZGVmIGdldHdlbGNvbWUoc2VsZik6CiAgICAgICAgICIiIkdldCB0aGUgd2VsY29tZSBtZXNzYWdlIGZyb20gdGhlIHNlcnZlcgogICAgICAgICAodGhpcyBpcyByZWFkIGFuZCBzcXVpcnJlbGVkIGF3YXkgYnkgX19pbml0X18oKSkuCkBAIC04MTksNyArODMzLDcgQEAKICAgICAgICAgLSBsaXN0OiBsaXN0IG9mIChuYW1lLHRpdGxlKSBzdHJpbmdzIiIiCiAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBYR1RJVExFIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZCwgIgogICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZGVzY3JpcHRpb25zKCkgaW5zdGVhZCIsCi0gICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIGxpbmVfcGF0ID0gcmUuY29tcGlsZSgnXihbXiBcdF0rKVsgXHRdKyguKikkJykKICAgICAgICAgcmVzcCwgcmF3X2xpbmVzID0gc2VsZi5fbG9uZ2NtZHN0cmluZygnWEdUSVRMRSAnICsgZ3JvdXAsIGZpbGUpCiAgICAgICAgIGxpbmVzID0gW10KQEAgLTgzNyw3ICs4NTEsNyBAQAogICAgICAgICBwYXRoOiBkaXJlY3RvcnkgcGF0aCB0byBhcnRpY2xlCiAgICAgICAgICIiIgogICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgWFBBVEggZXh0ZW5zaW9uIGlzIG5vdCBhY3RpdmVseSB1c2VkIiwKLSAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKIAogICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1hQQVRIIHswfScuZm9ybWF0KGlkKSkKICAgICAgICAgaWYgbm90IHJlc3Auc3RhcnRzd2l0aCgnMjIzJyk6CmRpZmYgLS1naXQgYS9MaWIvbnVtYmVycy5weSBiL0xpYi9udW1iZXJzLnB5CmluZGV4IGVjZmFkN2MuLmIyMDY0NTcgMTAwNjQ0Ci0tLSBhL0xpYi9udW1iZXJzLnB5CisrKyBiL0xpYi9udW1iZXJzLnB5CkBAIC01LDcgKzUsNyBAQAogCiBUT0RPOiBGaWxsIG91dCBtb3JlIGRldGFpbGVkIGRvY3VtZW50YXRpb24gb24gdGhlIG9wZXJhdG9ycy4iIiIKIAotZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kLCBhYnN0cmFjdHByb3BlcnR5Citmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIAogX19hbGxfXyA9IFsiTnVtYmVyIiwgIkNvbXBsZXgiLCAiUmVhbCIsICJSYXRpb25hbCIsICJJbnRlZ3JhbCJdCiAKQEAgLTUwLDcgKzUwLDggQEAKICAgICAgICAgIiIiVHJ1ZSBpZiBzZWxmICE9IDAuIENhbGxlZCBmb3IgYm9vbChzZWxmKS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYgIT0gMAogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgcmVhbChzZWxmKToKICAgICAgICAgIiIiUmV0cmlldmUgdGhlIHJlYWwgY29tcG9uZW50IG9mIHRoaXMgbnVtYmVyLgogCkBAIC01OCw3ICs1OSw4IEBACiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIEBwcm9wZXJ0eQorICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBpbWFnKHNlbGYpOgogICAgICAgICAiIiJSZXRyaWV2ZSB0aGUgaW1hZ2luYXJ5IGNvbXBvbmVudCBvZiB0aGlzIG51bWJlci4KIApAQCAtMjcyLDExICsyNzQsMTMgQEAKIAogICAgIF9fc2xvdHNfXyA9ICgpCiAKLSAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIEBwcm9wZXJ0eQorICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBudW1lcmF0b3Ioc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGRlbm9taW5hdG9yKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKZGlmZiAtLWdpdCBhL0xpYi9vcGNvZGUucHkgYi9MaWIvb3Bjb2RlLnB5CmluZGV4IDhlMTVkMTMuLmE2MzlmZTMgMTAwNjQ0Ci0tLSBhL0xpYi9vcGNvZGUucHkKKysrIGIvTGliL29wY29kZS5weQpAQCAtNiw3ICs2LDcgQEAKIAogX19hbGxfXyA9IFsiY21wX29wIiwgImhhc2NvbnN0IiwgImhhc25hbWUiLCAiaGFzanJlbCIsICJoYXNqYWJzIiwKICAgICAgICAgICAgImhhc2xvY2FsIiwgImhhc2NvbXBhcmUiLCAiaGFzZnJlZSIsICJvcG5hbWUiLCAib3BtYXAiLAotICAgICAgICAgICAiSEFWRV9BUkdVTUVOVCIsICJFWFRFTkRFRF9BUkciXQorICAgICAgICAgICAiSEFWRV9BUkdVTUVOVCIsICJFWFRFTkRFRF9BUkciLCAiaGFzbmFyZ3MiXQogCiBjbXBfb3AgPSAoJzwnLCAnPD0nLCAnPT0nLCAnIT0nLCAnPicsICc+PScsICdpbicsICdub3QgaW4nLCAnaXMnLAogICAgICAgICAnaXMgbm90JywgJ2V4Y2VwdGlvbiBtYXRjaCcsICdCQUQnKQpAQCAtMTgsNiArMTgsNyBAQAogaGFzbG9jYWwgPSBbXQogaGFzY29tcGFyZSA9IFtdCiBoYXNmcmVlID0gW10KK2hhc25hcmdzID0gW10KIAogb3BtYXAgPSB7fQogb3BuYW1lID0gWycnXSAqIDI1NgpAQCAtNDMsNyArNDQsNiBAQAogIyBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlCiAjIEJsYW5rIGxpbmVzIGNvcnJlc3BvbmQgdG8gYXZhaWxhYmxlIG9wY29kZXMKIAotZGVmX29wKCdTVE9QX0NPREUnLCAwKQogZGVmX29wKCdQT1BfVE9QJywgMSkKIGRlZl9vcCgnUk9UX1RXTycsIDIpCiBkZWZfb3AoJ1JPVF9USFJFRScsIDMpCkBAIC04OCw2ICs4OCw3IEBACiAKIGRlZl9vcCgnUFJJTlRfRVhQUicsIDcwKQogZGVmX29wKCdMT0FEX0JVSUxEX0NMQVNTJywgNzEpCitkZWZfb3AoJ1lJRUxEX0ZST00nLCA3MikKIAogZGVmX29wKCdJTlBMQUNFX0xTSElGVCcsIDc1KQogZGVmX29wKCdJTlBMQUNFX1JTSElGVCcsIDc2KQpAQCAtMTUyLDYgKzE1Myw3IEBACiAKIGRlZl9vcCgnUkFJU0VfVkFSQVJHUycsIDEzMCkgICAgIyBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyLCBvciAzKQogZGVmX29wKCdDQUxMX0ZVTkNUSU9OJywgMTMxKSAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKK2hhc25hcmdzLmFwcGVuZCgxMzEpCiBkZWZfb3AoJ01BS0VfRlVOQ1RJT04nLCAxMzIpICAgICMgTnVtYmVyIG9mIGFyZ3Mgd2l0aCBkZWZhdWx0IHZhbHVlcwogZGVmX29wKCdCVUlMRF9TTElDRScsIDEzMykgICAgICAjIE51bWJlciBvZiBpdGVtcwogZGVmX29wKCdNQUtFX0NMT1NVUkUnLCAxMzQpCkBAIC0xNjUsOCArMTY3LDExIEBACiBoYXNmcmVlLmFwcGVuZCgxMzgpCiAKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVInLCAxNDApICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKK2hhc25hcmdzLmFwcGVuZCgxNDApCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT05fS1cnLCAxNDEpICAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTQxKQogZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUl9LVycsIDE0MikgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDE0MikKIAoganJlbF9vcCgnU0VUVVBfV0lUSCcsIDE0MykKIApkaWZmIC0tZ2l0IGEvTGliL29wdHBhcnNlLnB5IGIvTGliL29wdHBhcnNlLnB5CmluZGV4IGQ5N2ExZjcuLjM3NzY0ZDMgMTAwNjQ0Ci0tLSBhL0xpYi9vcHRwYXJzZS5weQorKysgYi9MaWIvb3B0cGFyc2UucHkKQEAgLTg2LDEwICs4NiwxNiBAQAogIyAgIElkOiBlcnJvcnMucHkgNTA5IDIwMDYtMDQtMjAgMDA6NTg6MjRaIGd3YXJkCiAKIHRyeToKLSAgICBmcm9tIGdldHRleHQgaW1wb3J0IGdldHRleHQKKyAgICBmcm9tIGdldHRleHQgaW1wb3J0IGdldHRleHQsIG5nZXR0ZXh0CiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZGVmIGdldHRleHQobWVzc2FnZSk6CiAgICAgICAgIHJldHVybiBtZXNzYWdlCisKKyAgICBkZWYgbmdldHRleHQoc2luZ3VsYXIsIHBsdXJhbCwgbik6CisgICAgICAgIGlmIG4gPT0gMToKKyAgICAgICAgICAgIHJldHVybiBzaW5ndWxhcgorICAgICAgICByZXR1cm4gcGx1cmFsCisKIF8gPSBnZXR0ZXh0CiAKIApAQCAtNDExLDExICs0MTcsOCBAQAogZGVmIF9wYXJzZV9pbnQodmFsKToKICAgICByZXR1cm4gX3BhcnNlX251bSh2YWwsIGludCkKIAotZGVmIF9wYXJzZV9sb25nKHZhbCk6Ci0gICAgcmV0dXJuIF9wYXJzZV9udW0odmFsLCBpbnQpCi0KIF9idWlsdGluX2N2dCA9IHsgImludCIgOiAoX3BhcnNlX2ludCwgXygiaW50ZWdlciIpKSwKLSAgICAgICAgICAgICAgICAgImxvbmciIDogKF9wYXJzZV9sb25nLCBfKCJsb25nIGludGVnZXIiKSksCisgICAgICAgICAgICAgICAgICJsb25nIiA6IChfcGFyc2VfaW50LCBfKCJpbnRlZ2VyIikpLAogICAgICAgICAgICAgICAgICAiZmxvYXQiIDogKGZsb2F0LCBfKCJmbG9hdGluZy1wb2ludCIpKSwKICAgICAgICAgICAgICAgICAgImNvbXBsZXgiIDogKGNvbXBsZXgsIF8oImNvbXBsZXgiKSkgfQogCkBAIC0xNDgzLDExICsxNDg2LDEwIEBACiAgICAgICAgIGlmIG9wdGlvbi50YWtlc192YWx1ZSgpOgogICAgICAgICAgICAgbmFyZ3MgPSBvcHRpb24ubmFyZ3MKICAgICAgICAgICAgIGlmIGxlbihyYXJncykgPCBuYXJnczoKLSAgICAgICAgICAgICAgICBpZiBuYXJncyA9PSAxOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIpICUgb3B0KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygiJXMgb3B0aW9uIHJlcXVpcmVzICVkIGFyZ3VtZW50cyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAob3B0LCBuYXJncykpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihuZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgIiUob3B0aW9uKXMgb3B0aW9uIHJlcXVpcmVzICUobnVtYmVyKWQgYXJndW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICBuYXJncykgJSB7Im9wdGlvbiI6IG9wdCwgIm51bWJlciI6IG5hcmdzfSkKICAgICAgICAgICAgIGVsaWYgbmFyZ3MgPT0gMToKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJhcmdzLnBvcCgwKQogICAgICAgICAgICAgZWxzZToKQEAgLTE1MjIsMTEgKzE1MjQsMTAgQEAKIAogICAgICAgICAgICAgICAgIG5hcmdzID0gb3B0aW9uLm5hcmdzCiAgICAgICAgICAgICAgICAgaWYgbGVuKHJhcmdzKSA8IG5hcmdzOgotICAgICAgICAgICAgICAgICAgICBpZiBuYXJncyA9PSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKSAlIG9wdCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygiJXMgb3B0aW9uIHJlcXVpcmVzICVkIGFyZ3VtZW50cyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG9wdCwgbmFyZ3MpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG5nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgIiUob3B0aW9uKXMgb3B0aW9uIHJlcXVpcmVzICUobnVtYmVyKWQgYXJndW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiUob3B0aW9uKXMgb3B0aW9uIHJlcXVpcmVzICUobnVtYmVyKWQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hcmdzKSAlIHsib3B0aW9uIjogb3B0LCAibnVtYmVyIjogbmFyZ3N9KQogICAgICAgICAgICAgICAgIGVsaWYgbmFyZ3MgPT0gMToKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByYXJncy5wb3AoMCkKICAgICAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL29zLnB5IGIvTGliL29zLnB5CmluZGV4IGQxMTAxYTIuLjg0ZWVhZWIgMTAwNjQ0Ci0tLSBhL0xpYi9vcy5weQorKysgYi9MaWIvb3MucHkKQEAgLTI0LDEzICsyNCwxOCBAQAogIycKIAogaW1wb3J0IHN5cywgZXJybm8KK2ltcG9ydCBzdGF0IGFzIHN0CiAKIF9uYW1lcyA9IHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwogCiAjIE5vdGU6ICBtb3JlIG5hbWVzIGFyZSBhZGRlZCB0byBfX2FsbF9fIGxhdGVyLgogX19hbGxfXyA9IFsiYWx0c2VwIiwgImN1cmRpciIsICJwYXJkaXIiLCAic2VwIiwgInBhdGhzZXAiLCAibGluZXNlcCIsCi0gICAgICAgICAgICJkZWZwYXRoIiwgIm5hbWUiLCAicGF0aCIsICJkZXZudWxsIiwKLSAgICAgICAgICAgIlNFRUtfU0VUIiwgIlNFRUtfQ1VSIiwgIlNFRUtfRU5EIl0KKyAgICAgICAgICAgImRlZnBhdGgiLCAibmFtZSIsICJwYXRoIiwgImRldm51bGwiLCAiU0VFS19TRVQiLCAiU0VFS19DVVIiLAorICAgICAgICAgICAiU0VFS19FTkQiLCAiZnNlbmNvZGUiLCAiZnNkZWNvZGUiLCAiZ2V0X2V4ZWNfcGF0aCIsICJmZG9wZW4iLAorICAgICAgICAgICAicG9wZW4iLCAiZXh0c2VwIl0KKworZGVmIF9leGlzdHMobmFtZSk6CisgICAgcmV0dXJuIG5hbWUgaW4gZ2xvYmFscygpCiAKIGRlZiBfZ2V0X2V4cG9ydHNfbGlzdChtb2R1bGUpOgogICAgIHRyeToKQEAgLTM4LDE5ICs0MywyMyBAQAogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgcmV0dXJuIFtuIGZvciBuIGluIGRpcihtb2R1bGUpIGlmIG5bMF0gIT0gJ18nXQogCisjIEFueSBuZXcgZGVwZW5kZW5jaWVzIG9mIHRoZSBvcyBtb2R1bGUgYW5kL29yIGNoYW5nZXMgaW4gcGF0aCBzZXBhcmF0b3IKKyMgcmVxdWlyZXMgdXBkYXRpbmcgaW1wb3J0bGliIGFzIHdlbGwuCiBpZiAncG9zaXgnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ3Bvc2l4JwogICAgIGxpbmVzZXAgPSAnXG4nCiAgICAgZnJvbSBwb3NpeCBpbXBvcnQgKgogICAgIHRyeToKICAgICAgICAgZnJvbSBwb3NpeCBpbXBvcnQgX2V4aXQKKyAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBpbXBvcnQgcG9zaXhwYXRoIGFzIHBhdGgKIAotICAgIGltcG9ydCBwb3NpeAotICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KHBvc2l4KSkKLSAgICBkZWwgcG9zaXgKKyAgICB0cnk6CisgICAgICAgIGZyb20gcG9zaXggaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcwogCiBlbGlmICdudCcgaW4gX25hbWVzOgogICAgIG5hbWUgPSAnbnQnCkBAIC01OCw2ICs2Nyw3IEBACiAgICAgZnJvbSBudCBpbXBvcnQgKgogICAgIHRyeToKICAgICAgICAgZnJvbSBudCBpbXBvcnQgX2V4aXQKKyAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBpbXBvcnQgbnRwYXRoIGFzIHBhdGgKQEAgLTY2LDEyICs3NiwxOCBAQAogICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KG50KSkKICAgICBkZWwgbnQKIAorICAgIHRyeToKKyAgICAgICAgZnJvbSBudCBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCisKIGVsaWYgJ29zMicgaW4gX25hbWVzOgogICAgIG5hbWUgPSAnb3MyJwogICAgIGxpbmVzZXAgPSAnXHJcbicKICAgICBmcm9tIG9zMiBpbXBvcnQgKgogICAgIHRyeToKICAgICAgICAgZnJvbSBvczIgaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgaWYgc3lzLnZlcnNpb24uZmluZCgnRU1YIEdDQycpID09IC0xOgpAQCAtODQsMTIgKzEwMCwxOCBAQAogICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KG9zMikpCiAgICAgZGVsIG9zMgogCisgICAgdHJ5OgorICAgICAgICBmcm9tIG9zMiBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCisKIGVsaWYgJ2NlJyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdjZScKICAgICBsaW5lc2VwID0gJ1xyXG4nCiAgICAgZnJvbSBjZSBpbXBvcnQgKgogICAgIHRyeToKICAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2V4aXQKKyAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICAjIFdlIGNhbiB1c2UgdGhlIHN0YW5kYXJkIFdpbmRvd3MgcGF0aC4KQEAgLTk5LDYgKzEyMSwxMSBAQAogICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KGNlKSkKICAgICBkZWwgY2UKIAorICAgIHRyeToKKyAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCisKIGVsc2U6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ25vIG9zIHNwZWNpZmljIG1vZHVsZSBmb3VuZCcpCiAKQEAgLTEwOCw4ICsxMzUsOTcgQEAKIAogZGVsIF9uYW1lcwogCisKK2lmIF9leGlzdHMoIl9oYXZlX2Z1bmN0aW9ucyIpOgorICAgIF9nbG9iYWxzID0gZ2xvYmFscygpCisgICAgZGVmIF9hZGQoc3RyLCBmbik6CisgICAgICAgIGlmIChmbiBpbiBfZ2xvYmFscykgYW5kIChzdHIgaW4gX2hhdmVfZnVuY3Rpb25zKToKKyAgICAgICAgICAgIF9zZXQuYWRkKF9nbG9iYWxzW2ZuXSkKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkFDQ0VTU0FUIiwgICJhY2Nlc3MiKQorICAgIF9hZGQoIkhBVkVfRkNITU9EQVQiLCAgICJjaG1vZCIpCisgICAgX2FkZCgiSEFWRV9GQ0hPV05BVCIsICAgImNob3duIikKKyAgICBfYWRkKCJIQVZFX0ZTVEFUQVQiLCAgICAic3RhdCIpCisgICAgX2FkZCgiSEFWRV9GVVRJTUVTQVQiLCAgInV0aW1lIikKKyAgICBfYWRkKCJIQVZFX0xJTktBVCIsICAgICAibGluayIpCisgICAgX2FkZCgiSEFWRV9NS0RJUkFUIiwgICAgIm1rZGlyIikKKyAgICBfYWRkKCJIQVZFX01LRklGT0FUIiwgICAibWtmaWZvIikKKyAgICBfYWRkKCJIQVZFX01LTk9EQVQiLCAgICAibWtub2QiKQorICAgIF9hZGQoIkhBVkVfT1BFTkFUIiwgICAgICJvcGVuIikKKyAgICBfYWRkKCJIQVZFX1JFQURMSU5LQVQiLCAicmVhZGxpbmsiKQorICAgIF9hZGQoIkhBVkVfUkVOQU1FQVQiLCAgICJyZW5hbWUiKQorICAgIF9hZGQoIkhBVkVfU1lNTElOS0FUIiwgICJzeW1saW5rIikKKyAgICBfYWRkKCJIQVZFX1VOTElOS0FUIiwgICAidW5saW5rIikKKyAgICBfYWRkKCJIQVZFX1VOTElOS0FUIiwgICAicm1kaXIiKQorICAgIF9hZGQoIkhBVkVfVVRJTUVOU0FUIiwgICJ1dGltZSIpCisgICAgc3VwcG9ydHNfZGlyX2ZkID0gX3NldAorCisgICAgX3NldCA9IHNldCgpCisgICAgX2FkZCgiSEFWRV9GQUNDRVNTQVQiLCAgImFjY2VzcyIpCisgICAgc3VwcG9ydHNfZWZmZWN0aXZlX2lkcyA9IF9zZXQKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkNIRElSIiwgICAgICJjaGRpciIpCisgICAgX2FkZCgiSEFWRV9GQ0hNT0QiLCAgICAgImNobW9kIikKKyAgICBfYWRkKCJIQVZFX0ZDSE9XTiIsICAgICAiY2hvd24iKQorICAgIF9hZGQoIkhBVkVfRkRPUEVORElSIiwgICJsaXN0ZGlyIikKKyAgICBfYWRkKCJIQVZFX0ZFWEVDVkUiLCAgICAiZXhlY3ZlIikKKyAgICBfc2V0LmFkZChzdGF0KSAjIGZzdGF0IGFsd2F5cyB3b3JrcworICAgIF9hZGQoIkhBVkVfRlRSVU5DQVRFIiwgICJ0cnVuY2F0ZSIpCisgICAgX2FkZCgiSEFWRV9GVVRJTUVOUyIsICAgInV0aW1lIikKKyAgICBfYWRkKCJIQVZFX0ZVVElNRVMiLCAgICAidXRpbWUiKQorICAgIF9hZGQoIkhBVkVfRlBBVEhDT05GIiwgICJwYXRoY29uZiIpCisgICAgaWYgX2V4aXN0cygic3RhdHZmcyIpIGFuZCBfZXhpc3RzKCJmc3RhdHZmcyIpOiAjIG1hYyBvcyB4MTAuMworICAgICAgICBfYWRkKCJIQVZFX0ZTVEFUVkZTIiwgInN0YXR2ZnMiKQorICAgIHN1cHBvcnRzX2ZkID0gX3NldAorCisgICAgX3NldCA9IHNldCgpCisgICAgX2FkZCgiSEFWRV9GQUNDRVNTQVQiLCAgImFjY2VzcyIpCisgICAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCBzdXBwb3J0IGxjaG1vZCgpLiAgT2Z0ZW4gdGhlIGZ1bmN0aW9uIGV4aXN0cworICAgICMgYW55d2F5LCBhcyBhIHN0dWIgdGhhdCBhbHdheXMgcmV0dXJucyBFTk9TVVAgb3IgcGVyaGFwcyBFT1BOT1RTVVBQLgorICAgICMgKE5vLCBJIGRvbid0IGtub3cgd2h5IHRoYXQncyBhIGdvb2QgZGVzaWduLikgIC4vY29uZmlndXJlIHdpbGwgZGV0ZWN0CisgICAgIyB0aGlzIGFuZCByZWplY3QgaXQtLXNvIEhBVkVfTENITU9EIHN0aWxsIHdvbid0IGJlIGRlZmluZWQgb24gc3VjaAorICAgICMgcGxhdGZvcm1zLiAgVGhpcyBpcyBWZXJ5IEhlbHBmdWwuCisgICAgIworICAgICMgSG93ZXZlciwgc29tZXRpbWVzIHBsYXRmb3JtcyB3aXRob3V0IGEgd29ya2luZyBsY2htb2QoKSAqZG8qIGhhdmUKKyAgICAjIGZjaG1vZGF0KCkuICAoRXhhbXBsZXM6IExpbnV4IGtlcm5lbCAzLjIgd2l0aCBnbGliYyAyLjE1LAorICAgICMgT3BlbkluZGlhbmEgMy54LikgIEFuZCBmY2htb2RhdCgpIGhhcyBhIGZsYWcgdGhhdCB0aGVvcmV0aWNhbGx5IG1ha2VzCisgICAgIyBpdCBiZWhhdmUgbGlrZSBsY2htb2QoKS4gIFNvIGluIHRoZW9yeSBpdCB3b3VsZCBiZSBhIHN1aXRhYmxlCisgICAgIyByZXBsYWNlbWVudCBmb3IgbGNobW9kKCkuICBCdXQgd2hlbiBsY2htb2QoKSBkb2Vzbid0IHdvcmssIGZjaG1vZGF0KCkncworICAgICMgZmxhZyBkb2Vzbid0IHdvcmsgKmVpdGhlciouICBTYWRseSAuL2NvbmZpZ3VyZSBpc24ndCBzb3BoaXN0aWNhdGVkCisgICAgIyBlbm91Z2ggdG8gZGV0ZWN0IHRoaXMgY29uZGl0aW9uLS1pdCBvbmx5IGRldGVybWluZXMgd2hldGhlciBvciBub3QKKyAgICAjIGZjaG1vZGF0KCkgbWluaW1hbGx5IHdvcmtzLgorICAgICMKKyAgICAjIFRoZXJlZm9yZSB3ZSBzaW1wbHkgaWdub3JlIGZjaG1vZGF0KCkgd2hlbiBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdAorICAgICMgb3MuY2htb2Qgc3VwcG9ydHMgZm9sbG93X3N5bWxpbmtzLiAgSnVzdCBjaGVja2luZyBsY2htb2QoKSBpcworICAgICMgc3VmZmljaWVudC4gIEFmdGVyIGFsbC0taWYgeW91IGhhdmUgYSB3b3JraW5nIGZjaG1vZGF0KCksIHlvdXIKKyAgICAjIGxjaG1vZCgpIGFsbW9zdCBjZXJ0YWlubHkgd29ya3MgdG9vLgorICAgICMKKyAgICAjIF9hZGQoIkhBVkVfRkNITU9EQVQiLCAgICJjaG1vZCIpCisgICAgX2FkZCgiSEFWRV9GQ0hPV05BVCIsICAgImNob3duIikKKyAgICBfYWRkKCJIQVZFX0ZTVEFUQVQiLCAgICAic3RhdCIpCisgICAgX2FkZCgiSEFWRV9MQ0hGTEFHUyIsICAgImNoZmxhZ3MiKQorICAgIF9hZGQoIkhBVkVfTENITU9EIiwgICAgICJjaG1vZCIpCisgICAgaWYgX2V4aXN0cygibGNob3duIik6ICMgbWFjIG9zIHgxMC4zCisgICAgICAgIF9hZGQoIkhBVkVfTENIT1dOIiwgImNob3duIikKKyAgICBfYWRkKCJIQVZFX0xJTktBVCIsICAgICAibGluayIpCisgICAgX2FkZCgiSEFWRV9MVVRJTUVTIiwgICAgInV0aW1lIikKKyAgICBfYWRkKCJIQVZFX0xTVEFUIiwgICAgICAic3RhdCIpCisgICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfVVRJTUVOU0FUIiwgICJ1dGltZSIpCisgICAgX2FkZCgiTVNfV0lORE9XUyIsICAgICAgInN0YXQiKQorICAgIHN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcyA9IF9zZXQKKworICAgIGRlbCBfc2V0CisgICAgZGVsIF9oYXZlX2Z1bmN0aW9ucworICAgIGRlbCBfZ2xvYmFscworICAgIGRlbCBfYWRkCisKKwogIyBQeXRob24gdXNlcyBmaXhlZCB2YWx1ZXMgZm9yIHRoZSBTRUVLXyBjb25zdGFudHM7IHRoZXkgYXJlIG1hcHBlZAogIyB0byBuYXRpdmUgY29uc3RhbnRzIGlmIG5lY2Vzc2FyeSBpbiBwb3NpeG1vZHVsZS5jCisjIE90aGVyIHBvc3NpYmxlIFNFRUsgdmFsdWVzIGFyZSBkaXJlY3RseSBpbXBvcnRlZCBmcm9tIHBvc2l4bW9kdWxlLmMKIFNFRUtfU0VUID0gMAogU0VFS19DVVIgPSAxCiBTRUVLX0VORCA9IDIKQEAgLTEyMCw4ICsyMzYsNiBAQAogICAgIHVtYXNrKG1hc2spCiAgICAgcmV0dXJuIG1vZGUgJiB+bWFzawogCi0jJwotCiAjIFN1cGVyIGRpcmVjdG9yeSB1dGlsaXRpZXMuCiAjIChJbnNwaXJlZCBieSBFcmljIFJheW1vbmQ7IHRoZSBkb2Mgc3RyaW5ncyBhcmUgbW9zdGx5IGhpcykKIApAQCAtMTUxLDcgKzI2NSw2IEBACiAgICAgdHJ5OgogICAgICAgICBta2RpcihuYW1lLCBtb2RlKQogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgIGltcG9ydCBzdGF0IGFzIHN0CiAgICAgICAgIGRpcl9leGlzdHMgPSBwYXRoLmlzZGlyKG5hbWUpCiAgICAgICAgIGV4cGVjdGVkX21vZGUgPSBfZ2V0X21hc2tlZF9tb2RlKG1vZGUpCiAgICAgICAgIGlmIGRpcl9leGlzdHM6CkBAIC0xNjMsNiArMjc2LDkgQEAKICAgICAgICAgICAgIGFjdHVhbF9tb2RlID0gLTEKICAgICAgICAgaWYgbm90IChlLmVycm5vID09IGVycm5vLkVFWElTVCBhbmQgZXhpc3Rfb2sgYW5kIGRpcl9leGlzdHMgYW5kCiAgICAgICAgICAgICAgICAgYWN0dWFsX21vZGUgPT0gZXhwZWN0ZWRfbW9kZSk6CisgICAgICAgICAgICBpZiBkaXJfZXhpc3RzIGFuZCBhY3R1YWxfbW9kZSAhPSBleHBlY3RlZF9tb2RlOgorICAgICAgICAgICAgICAgIGUuc3RyZXJyb3IgKz0gJyAobW9kZSAlbyAhPSBleHBlY3RlZCBtb2RlICVvKScgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfbW9kZSwgZXhwZWN0ZWRfbW9kZSkKICAgICAgICAgICAgIHJhaXNlCiAKIGRlZiByZW1vdmVkaXJzKG5hbWUpOgpAQCAtMzAwLDEzICs0MTYsMTA3IEBACiAgICAgZm9yIG5hbWUgaW4gZGlyczoKICAgICAgICAgbmV3X3BhdGggPSBqb2luKHRvcCwgbmFtZSkKICAgICAgICAgaWYgZm9sbG93bGlua3Mgb3Igbm90IGlzbGluayhuZXdfcGF0aCk6Ci0gICAgICAgICAgICBmb3IgeCBpbiB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgeAorICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgICBpZiBub3QgdG9wZG93bjoKICAgICAgICAgeWllbGQgdG9wLCBkaXJzLCBub25kaXJzCiAKIF9fYWxsX18uYXBwZW5kKCJ3YWxrIikKIAoraWYge29wZW4sIHN0YXR9IDw9IHN1cHBvcnRzX2Rpcl9mZCBhbmQge2xpc3RkaXIsIHN0YXR9IDw9IHN1cHBvcnRzX2ZkOgorCisgICAgZGVmIGZ3YWxrKHRvcD0iLiIsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKToKKyAgICAgICAgIiIiRGlyZWN0b3J5IHRyZWUgZ2VuZXJhdG9yLgorCisgICAgICAgIFRoaXMgYmVoYXZlcyBleGFjdGx5IGxpa2Ugd2FsaygpLCBleGNlcHQgdGhhdCBpdCB5aWVsZHMgYSA0LXR1cGxlCisKKyAgICAgICAgICAgIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMsIGRpcmZkCisKKyAgICAgICAgYGRpcnBhdGhgLCBgZGlybmFtZXNgIGFuZCBgZmlsZW5hbWVzYCBhcmUgaWRlbnRpY2FsIHRvIHdhbGsoKSBvdXRwdXQsCisgICAgICAgIGFuZCBgZGlyZmRgIGlzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byB0aGUgZGlyZWN0b3J5IGBkaXJwYXRoYC4KKworICAgICAgICBUaGUgYWR2YW50YWdlIG9mIGZ3YWxrKCkgb3ZlciB3YWxrKCkgaXMgdGhhdCBpdCdzIHNhZmUgYWdhaW5zdCBzeW1saW5rCisgICAgICAgIHJhY2VzICh3aGVuIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSkuCisKKyAgICAgICAgSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgICAgICAgICBhbmQgdG9wIHNob3VsZCBiZSByZWxhdGl2ZTsgdG9wIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KKyAgICAgICAgICAoZGlyX2ZkIGlzIGFsd2F5cyBzdXBwb3J0ZWQgZm9yIGZ3YWxrLikKKworICAgICAgICBDYXV0aW9uOgorICAgICAgICBTaW5jZSBmd2FsaygpIHlpZWxkcyBmaWxlIGRlc2NyaXB0b3JzLCB0aG9zZSBhcmUgb25seSB2YWxpZCB1bnRpbCB0aGUKKyAgICAgICAgbmV4dCBpdGVyYXRpb24gc3RlcCwgc28geW91IHNob3VsZCBkdXAoKSB0aGVtIGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlbQorICAgICAgICBmb3IgYSBsb25nZXIgcGVyaW9kLgorCisgICAgICAgIEV4YW1wbGU6CisKKyAgICAgICAgaW1wb3J0IG9zCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCdweXRob24vTGliL2VtYWlsJyk6CisgICAgICAgICAgICBwcmludChyb290LCAiY29uc3VtZXMiLCBlbmQ9IiIpCisgICAgICAgICAgICBwcmludChzdW0oW29zLnN0YXQobmFtZSwgZGlyX2ZkPXJvb3RmZCkuc3Rfc2l6ZSBmb3IgbmFtZSBpbiBmaWxlc10pLAorICAgICAgICAgICAgICAgICAgZW5kPSIiKQorICAgICAgICAgICAgcHJpbnQoImJ5dGVzIGluIiwgbGVuKGZpbGVzKSwgIm5vbi1kaXJlY3RvcnkgZmlsZXMiKQorICAgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCisgICAgICAgICIiIgorICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAorICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCisgICAgICAgIG9yaWdfc3QgPSBzdGF0KHRvcCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZGlyX2ZkKQorICAgICAgICB0b3BmZCA9IG9wZW4odG9wLCBPX1JET05MWSwgZGlyX2ZkPWRpcl9mZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgKGZvbGxvd19zeW1saW5rcyBvciAoc3QuU19JU0RJUihvcmlnX3N0LnN0X21vZGUpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5zYW1lc3RhdChvcmlnX3N0LCBzdGF0KHRvcGZkKSkpKToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIF9md2Fsayh0b3BmZCwgdG9wLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBjbG9zZSh0b3BmZCkKKworICAgIGRlZiBfZndhbGsodG9wZmQsIHRvcHBhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd19zeW1saW5rcyk6CisgICAgICAgICMgTm90ZTogVGhpcyB1c2VzIE8oZGVwdGggb2YgdGhlIGRpcmVjdG9yeSB0cmVlKSBmaWxlIGRlc2NyaXB0b3JzOiBpZgorICAgICAgICAjIG5lY2Vzc2FyeSwgaXQgY2FuIGJlIGFkYXB0ZWQgdG8gb25seSByZXF1aXJlIE8oMSkgRkRzLCBzZWUgaXNzdWUKKyAgICAgICAgIyAjMTM3MzQuCisKKyAgICAgICAgbmFtZXMgPSBsaXN0ZGlyKHRvcGZkKQorICAgICAgICBkaXJzLCBub25kaXJzID0gW10sIFtdCisgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgSGVyZSwgd2UgZG9uJ3QgdXNlIEFUX1NZTUxJTktfTk9GT0xMT1cgdG8gYmUgY29uc2lzdGVudCB3aXRoCisgICAgICAgICAgICAgICAgIyB3YWxrKCkgd2hpY2ggcmVwb3J0cyBzeW1saW5rcyB0byBkaXJlY3RvcmllcyBhcyBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAjIFdlIGRvIGhvd2V2ZXIgY2hlY2sgZm9yIHN5bWxpbmtzIGJlZm9yZSByZWN1cnNpbmcgaW50bworICAgICAgICAgICAgICAgICMgYSBzdWJkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgaWYgc3QuU19JU0RJUihzdGF0KG5hbWUsIGRpcl9mZD10b3BmZCkuc3RfbW9kZSk6CisgICAgICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgQWRkIGRhbmdsaW5nIHN5bWxpbmtzLCBpZ25vcmUgZGlzYXBwZWFyZWQgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgc3QuU19JU0xOSyhzdGF0KG5hbWUsIGRpcl9mZD10b3BmZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RfbW9kZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBub25kaXJzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiB0b3Bkb3duOgorICAgICAgICAgICAgeWllbGQgdG9wcGF0aCwgZGlycywgbm9uZGlycywgdG9wZmQKKworICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9yaWdfc3QgPSBzdGF0KG5hbWUsIGRpcl9mZD10b3BmZCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgICAgICBkaXJmZCA9IG9wZW4obmFtZSwgT19SRE9OTFksIGRpcl9mZD10b3BmZCkKKyAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihlcnIpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgZm9sbG93X3N5bWxpbmtzIG9yIHBhdGguc2FtZXN0YXQob3JpZ19zdCwgc3RhdChkaXJmZCkpOgorICAgICAgICAgICAgICAgICAgICBkaXJwYXRoID0gcGF0aC5qb2luKHRvcHBhdGgsIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2Z3YWxrKGRpcmZkLCBkaXJwYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsb3NlKGRpcmZkKQorCisgICAgICAgIGlmIG5vdCB0b3Bkb3duOgorICAgICAgICAgICAgeWllbGQgdG9wcGF0aCwgZGlycywgbm9uZGlycywgdG9wZmQKKworICAgIF9fYWxsX18uYXBwZW5kKCJmd2FsayIpCisKICMgTWFrZSBzdXJlIG9zLmVudmlyb24gZXhpc3RzLCBhdCBsZWFzdAogdHJ5OgogICAgIGVudmlyb24KQEAgLTQ0Myw3ICs2NTMsNyBAQAogCiAKICMgQ2hhbmdlIGVudmlyb24gdG8gYXV0b21hdGljYWxseSBjYWxsIHB1dGVudigpLCB1bnNldGVudiBpZiB0aGV5IGV4aXN0LgotZnJvbSBfYWJjb2xsIGltcG9ydCBNdXRhYmxlTWFwcGluZyAgIyBDYW4ndCB1c2UgY29sbGVjdGlvbnMgKGJvb3RzdHJhcCkKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZwogCiBjbGFzcyBfRW52aXJvbihNdXRhYmxlTWFwcGluZyk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEsIGVuY29kZWtleSwgZGVjb2Rla2V5LCBlbmNvZGV2YWx1ZSwgZGVjb2RldmFsdWUsIHB1dGVudiwgdW5zZXRlbnYpOgpAQCAtNjA3LDE1ICs4MTcsMTQgQEAKIGZzZW5jb2RlLCBmc2RlY29kZSA9IF9mc2NvZGVjKCkKIGRlbCBfZnNjb2RlYwogCi1kZWYgX2V4aXN0cyhuYW1lKToKLSAgICByZXR1cm4gbmFtZSBpbiBnbG9iYWxzKCkKLQogIyBTdXBwbHkgc3Bhd24qKCkgKHByb2JhYmx5IG9ubHkgZm9yIFVuaXgpCiBpZiBfZXhpc3RzKCJmb3JrIikgYW5kIG5vdCBfZXhpc3RzKCJzcGF3bnYiKSBhbmQgX2V4aXN0cygiZXhlY3YiKToKIAogICAgIFBfV0FJVCA9IDAKICAgICBQX05PV0FJVCA9IFBfTk9XQUlUTyA9IDEKIAorICAgIF9fYWxsX18uZXh0ZW5kKFsiUF9XQUlUIiwgIlBfTk9XQUlUIiwgIlBfTk9XQUlUTyJdKQorCiAgICAgIyBYWFggU2hvdWxkIHdlIHN1cHBvcnQgUF9ERVRBQ0g/ICBJIHN1cHBvc2UgaXQgY291bGQgZm9yaygpKioyCiAgICAgIyBhbmQgY2xvc2UgdGhlIHN0ZCBJL08gc3RyZWFtcy4gIEFsc28sIFBfT1ZFUkxBWSBpcyB0aGUgc2FtZQogICAgICMgYXMgZXhlY3YqKCk/CkBAIC03NzYsNyArOTg1LDcgQEAKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGNtZCB0eXBlICglcywgZXhwZWN0ZWQgc3RyaW5nKSIgJSB0eXBlKGNtZCkpCiAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBtb2RlICVyIiAlIG1vZGUpCi0gICAgaWYgYnVmZmVyaW5nID09IDAgb3IgYnVmZmVyaW5nID09IE5vbmU6CisgICAgaWYgYnVmZmVyaW5nID09IDAgb3IgYnVmZmVyaW5nIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBvcGVuKCkgZG9lcyBub3Qgc3VwcG9ydCB1bmJ1ZmZlcmVkIHN0cmVhbXMiKQogICAgIGltcG9ydCBzdWJwcm9jZXNzLCBpbwogICAgIGlmIG1vZGUgPT0gInIiOgpkaWZmIC0tZ2l0IGEvTGliL3BkYi5weSBiL0xpYi9wZGIucHkKaW5kZXggNjc3NmEzZi4uMzA0MzM5MSAxMDA3NTUKLS0tIGEvTGliL3BkYi5weQorKysgYi9MaWIvcGRiLnB5CkBAIC03Myw2ICs3Myw3IEBACiBpbXBvcnQgYmRiCiBpbXBvcnQgZGlzCiBpbXBvcnQgY29kZQoraW1wb3J0IGdsb2IKIGltcG9ydCBwcHJpbnQKIGltcG9ydCBzaWduYWwKIGltcG9ydCBpbnNwZWN0CkBAIC0xNTUsNiArMTU2LDggQEAKICAgICAgICAgIyBUcnkgdG8gbG9hZCByZWFkbGluZSBpZiBpdCBleGlzdHMKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHJlYWRsaW5lCisgICAgICAgICAgICAjIHJlbW92ZSBzb21lIGNvbW1vbiBmaWxlIG5hbWUgZGVsaW1pdGVycworICAgICAgICAgICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMoJyBcdFxuYEAjJCVeJiooKT0rW3tdfVxcfDs6XCciLDw+PycpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hbGxvd19rYmRpbnQgPSBGYWxzZQpAQCAtNDQ1LDYgKzQ0OCw2MSBAQAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2cpOgogICAgICAgICBwcmludCgnKioqJywgbXNnLCBmaWxlPXNlbGYuc3Rkb3V0KQogCisgICAgIyBHZW5lcmljIGNvbXBsZXRpb24gZnVuY3Rpb25zLiAgSW5kaXZpZHVhbCBjb21wbGV0ZV9mb28gbWV0aG9kcyBjYW4gYmUKKyAgICAjIGFzc2lnbmVkIGJlbG93IHRvIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMuCisKKyAgICBkZWYgX2NvbXBsZXRlX2xvY2F0aW9uKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhIGZpbGUvbW9kdWxlL2Z1bmN0aW9uIGxvY2F0aW9uIGZvciBicmVhay90YnJlYWsvY2xlYXIuCisgICAgICAgIGlmIGxpbmUuc3RyaXAoKS5lbmRzd2l0aCgoJzonLCAnLCcpKToKKyAgICAgICAgICAgICMgSGVyZSBjb21lcyBhIGxpbmUgbnVtYmVyIG9yIGEgY29uZGl0aW9uIHdoaWNoIHdlIGNhbid0IGNvbXBsZXRlLgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICMgRmlyc3QsIHRyeSB0byBmaW5kIG1hdGNoaW5nIGZ1bmN0aW9ucyAoaS5lLiBleHByZXNzaW9ucykuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldCA9IHNlbGYuX2NvbXBsZXRlX2V4cHJlc3Npb24odGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICByZXQgPSBbXQorICAgICAgICAjIFRoZW4sIHRyeSB0byBjb21wbGV0ZSBmaWxlIG5hbWVzIGFzIHdlbGwuCisgICAgICAgIGdsb2JzID0gZ2xvYi5nbG9iKHRleHQgKyAnKicpCisgICAgICAgIGZvciBmbiBpbiBnbG9iczoKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm4gKyAnLycpCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKGZuKSBhbmQgZm4ubG93ZXIoKS5lbmRzd2l0aCgoJy5weScsICcucHl3JykpOgorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm4gKyAnOicpCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBfY29tcGxldGVfYnBudW1iZXIoc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICAjIENvbXBsZXRlIGEgYnJlYWtwb2ludCBudW1iZXIuICAoVGhpcyB3b3VsZCBiZSBtb3JlIGhlbHBmdWwgaWYgd2UgY291bGQKKyAgICAgICAgIyBkaXNwbGF5IGFkZGl0aW9uYWwgaW5mbyBhbG9uZyB3aXRoIHRoZSBjb21wbGV0aW9ucywgc3VjaCBhcyBmaWxlL2xpbmUKKyAgICAgICAgIyBvZiB0aGUgYnJlYWtwb2ludC4pCisgICAgICAgIHJldHVybiBbc3RyKGkpIGZvciBpLCBicCBpbiBlbnVtZXJhdGUoYmRiLkJyZWFrcG9pbnQuYnBieW51bWJlcikKKyAgICAgICAgICAgICAgICBpZiBicCBpcyBub3QgTm9uZSBhbmQgc3RyKGkpLnN0YXJ0c3dpdGgodGV4dCldCisKKyAgICBkZWYgX2NvbXBsZXRlX2V4cHJlc3Npb24oc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICAjIENvbXBsZXRlIGFuIGFyYml0cmFyeSBleHByZXNzaW9uLgorICAgICAgICBpZiBub3Qgc2VsZi5jdXJmcmFtZToKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICAjIENvbGxlY3QgZ2xvYmFscyBhbmQgbG9jYWxzLiAgSXQgaXMgdXN1YWxseSBub3QgcmVhbGx5IHNlbnNpYmxlIHRvIGFsc28KKyAgICAgICAgIyBjb21wbGV0ZSBidWlsdGlucywgYW5kIHRoZXkgY2x1dHRlciB0aGUgbmFtZXNwYWNlIHF1aXRlIGhlYXZpbHksIHNvIHdlCisgICAgICAgICMgbGVhdmUgdGhlbSBvdXQuCisgICAgICAgIG5zID0gc2VsZi5jdXJmcmFtZS5mX2dsb2JhbHMuY29weSgpCisgICAgICAgIG5zLnVwZGF0ZShzZWxmLmN1cmZyYW1lX2xvY2FscykKKyAgICAgICAgaWYgJy4nIGluIHRleHQ6CisgICAgICAgICAgICAjIFdhbGsgYW4gYXR0cmlidXRlIGNoYWluIHVwIHRvIHRoZSBsYXN0IHBhcnQsIHNpbWlsYXIgdG8gd2hhdAorICAgICAgICAgICAgIyBybGNvbXBsZXRlciBkb2VzLiAgVGhpcyB3aWxsIGJhaWwgaWYgYW55IG9mIHRoZSBwYXJ0cyBhcmUgbm90CisgICAgICAgICAgICAjIHNpbXBsZSBhdHRyaWJ1dGUgYWNjZXNzLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCisgICAgICAgICAgICBkb3R0ZWQgPSB0ZXh0LnNwbGl0KCcuJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvYmogPSBuc1tkb3R0ZWRbMF1dCisgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gZG90dGVkWzE6LTFdOgorICAgICAgICAgICAgICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgICAgIHByZWZpeCA9ICcuJy5qb2luKGRvdHRlZFs6LTFdKSArICcuJworICAgICAgICAgICAgcmV0dXJuIFtwcmVmaXggKyBuIGZvciBuIGluIGRpcihvYmopIGlmIG4uc3RhcnRzd2l0aChkb3R0ZWRbLTFdKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQ29tcGxldGUgYSBzaW1wbGUgbmFtZS4KKyAgICAgICAgICAgIHJldHVybiBbbiBmb3IgbiBpbiBucy5rZXlzKCkgaWYgbi5zdGFydHN3aXRoKHRleHQpXQorCiAgICAgIyBDb21tYW5kIGRlZmluaXRpb25zLCBjYWxsZWQgYnkgY21kbG9vcCgpCiAgICAgIyBUaGUgYXJndW1lbnQgaXMgdGhlIHJlbWFpbmluZyBzdHJpbmcgb24gdGhlIGNvbW1hbmQgbGluZQogICAgICMgUmV0dXJuIHRydWUgdG8gZXhpdCBmcm9tIHRoZSBjb21tYW5kIGxvb3AKQEAgLTUyNiw2ICs1ODQsOCBAQAogICAgICAgICAgICAgc2VsZi5jb21tYW5kc19kZWZpbmluZyA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLnByb21wdCA9IHByb21wdF9iYWNrCiAKKyAgICBjb21wbGV0ZV9jb21tYW5kcyA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2JyZWFrKHNlbGYsIGFyZywgdGVtcG9yYXJ5ID0gMCk6CiAgICAgICAgICIiImIocmVhaykgWyAoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXSBdCiAgICAgICAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcy4KQEAgLTYyOCw2ICs2ODgsOSBAQAogCiAgICAgZG9fYiA9IGRvX2JyZWFrCiAKKyAgICBjb21wbGV0ZV9icmVhayA9IF9jb21wbGV0ZV9sb2NhdGlvbgorICAgIGNvbXBsZXRlX2IgPSBfY29tcGxldGVfbG9jYXRpb24KKwogICAgIGRlZiBkb190YnJlYWsoc2VsZiwgYXJnKToKICAgICAgICAgIiIidGJyZWFrIFsgKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl0gXQogICAgICAgICBTYW1lIGFyZ3VtZW50cyBhcyBicmVhaywgYnV0IHNldHMgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludDogaXQKQEAgLTYzNSw2ICs2OTgsOCBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5kb19icmVhayhhcmcsIDEpCiAKKyAgICBjb21wbGV0ZV90YnJlYWsgPSBfY29tcGxldGVfbG9jYXRpb24KKwogICAgIGRlZiBsaW5laW5mbyhzZWxmLCBpZGVudGlmaWVyKToKICAgICAgICAgZmFpbGVkID0gKE5vbmUsIE5vbmUsIE5vbmUpCiAgICAgICAgICMgSW5wdXQgaXMgaWRlbnRpZmllciwgbWF5IGJlIGluIHNpbmdsZSBxdW90ZXMKQEAgLTcwNCw2ICs3NjksOCBAQAogICAgICAgICAgICAgICAgIGJwLmVuYWJsZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdFbmFibGVkICVzJyAlIGJwKQogCisgICAgY29tcGxldGVfZW5hYmxlID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9fZGlzYWJsZShzZWxmLCBhcmcpOgogICAgICAgICAiIiJkaXNhYmxlIGJwbnVtYmVyIFticG51bWJlciAuLi5dCiAgICAgICAgIERpc2FibGVzIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mCkBAIC03MjIsNiArNzg5LDggQEAKICAgICAgICAgICAgICAgICBicC5kaXNhYmxlKCkKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0Rpc2FibGVkICVzJyAlIGJwKQogCisgICAgY29tcGxldGVfZGlzYWJsZSA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2NvbmRpdGlvbihzZWxmLCBhcmcpOgogICAgICAgICAiIiJjb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl0KICAgICAgICAgU2V0IGEgbmV3IGNvbmRpdGlvbiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2gKQEAgLTc0NSw2ICs4MTQsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ05ldyBjb25kaXRpb24gc2V0IGZvciBicmVha3BvaW50ICVkLicgJSBicC5udW1iZXIpCiAKKyAgICBjb21wbGV0ZV9jb25kaXRpb24gPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19pZ25vcmUoc2VsZiwgYXJnKToKICAgICAgICAgIiIiaWdub3JlIGJwbnVtYmVyIFtjb3VudF0KICAgICAgICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmCkBAIC03NzYsNiArODQ3LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ1dpbGwgc3RvcCBuZXh0IHRpbWUgYnJlYWtwb2ludCAlZCBpcyByZWFjaGVkLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBicC5udW1iZXIpCiAKKyAgICBjb21wbGV0ZV9pZ25vcmUgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19jbGVhcihzZWxmLCBhcmcpOgogICAgICAgICAiIiJjbChlYXIpIGZpbGVuYW1lOmxpbmVub1xuY2woZWFyKSBbYnBudW1iZXIgW2JwbnVtYmVyLi4uXV0KICAgICAgICAgV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXIKQEAgLTgyNCw2ICs4OTcsOSBAQAogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnRGVsZXRlZCAlcycgJSBicCkKICAgICBkb19jbCA9IGRvX2NsZWFyICMgJ2MnIGlzIGFscmVhZHkgYW4gYWJicmV2aWF0aW9uIGZvciAnY29udGludWUnCiAKKyAgICBjb21wbGV0ZV9jbGVhciA9IF9jb21wbGV0ZV9sb2NhdGlvbgorICAgIGNvbXBsZXRlX2NsID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgZG9fd2hlcmUoc2VsZiwgYXJnKToKICAgICAgICAgIiIidyhoZXJlKQogICAgICAgICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgYm90dG9tLgpAQCAtMTAwNyw2ICsxMDgzLDggQEAKICAgICAgICAgc3lzLnNldHRyYWNlKHNlbGYudHJhY2VfZGlzcGF0Y2gpCiAgICAgICAgIHNlbGYubGFzdGNtZCA9IHAubGFzdGNtZAogCisgICAgY29tcGxldGVfZGVidWcgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX3F1aXQoc2VsZiwgYXJnKToKICAgICAgICAgIiIicSh1aXQpXG5leGl0CiAgICAgICAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuCkBAIC0xMDkzLDYgKzExNzEsMTAgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcwogCisgICAgY29tcGxldGVfcHJpbnQgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorICAgIGNvbXBsZXRlX3AgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorICAgIGNvbXBsZXRlX3BwID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb19saXN0KHNlbGYsIGFyZyk6CiAgICAgICAgICIiImwoaXN0KSBbZmlyc3QgWyxsYXN0XSB8IC5dCiAKQEAgLTExNzMsNiArMTI1NSw4IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fcHJpbnRfbGluZXMobGluZXMsIGxpbmVubykKIAorICAgIGNvbXBsZXRlX3NvdXJjZSA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgX3ByaW50X2xpbmVzKHNlbGYsIGxpbmVzLCBzdGFydCwgYnJlYWtzPSgpLCBmcmFtZT1Ob25lKToKICAgICAgICAgIiIiUHJpbnQgYSByYW5nZSBvZiBsaW5lcy4iIiIKICAgICAgICAgaWYgZnJhbWU6CkBAIC0xMjI3LDYgKzEzMTEsOCBAQAogICAgICAgICAjIE5vbmUgb2YgdGhlIGFib3ZlLi4uCiAgICAgICAgIHNlbGYubWVzc2FnZSh0eXBlKHZhbHVlKSkKIAorICAgIGNvbXBsZXRlX3doYXRpcyA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgZG9fZGlzcGxheShzZWxmLCBhcmcpOgogICAgICAgICAiIiJkaXNwbGF5IFtleHByZXNzaW9uXQogCkBAIC0xMjQ0LDYgKzEzMzAsOCBAQAogICAgICAgICAgICAgc2VsZi5kaXNwbGF5aW5nLnNldGRlZmF1bHQoc2VsZi5jdXJmcmFtZSwge30pW2FyZ10gPSB2YWwKICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnZGlzcGxheSAlczogJXInICUgKGFyZywgdmFsKSkKIAorICAgIGNvbXBsZXRlX2Rpc3BsYXkgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX3VuZGlzcGxheShzZWxmLCBhcmcpOgogICAgICAgICAiIiJ1bmRpc3BsYXkgW2V4cHJlc3Npb25dCiAKQEAgLTEyNTksNiArMTM0NywxMCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5kaXNwbGF5aW5nLnBvcChzZWxmLmN1cmZyYW1lLCBOb25lKQogCisgICAgZGVmIGNvbXBsZXRlX3VuZGlzcGxheShzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgIHJldHVybiBbZSBmb3IgZSBpbiBzZWxmLmRpc3BsYXlpbmcuZ2V0KHNlbGYuY3VyZnJhbWUsIHt9KQorICAgICAgICAgICAgICAgIGlmIGUuc3RhcnRzd2l0aCh0ZXh0KV0KKwogICAgIGRlZiBkb19pbnRlcmFjdChzZWxmLCBhcmcpOgogICAgICAgICAiIiJpbnRlcmFjdAogCkBAIC0xMzEzLDYgKzE0MDUsOSBAQAogICAgICAgICBpZiBhcmdzWzBdIGluIHNlbGYuYWxpYXNlczoKICAgICAgICAgICAgIGRlbCBzZWxmLmFsaWFzZXNbYXJnc1swXV0KIAorICAgIGRlZiBjb21wbGV0ZV91bmFsaWFzKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgcmV0dXJuIFthIGZvciBhIGluIHNlbGYuYWxpYXNlcyBpZiBhLnN0YXJ0c3dpdGgodGV4dCldCisKICAgICAjIExpc3Qgb2YgYWxsIHRoZSBjb21tYW5kcyBtYWtpbmcgdGhlIHByb2dyYW0gcmVzdW1lIGV4ZWN1dGlvbi4KICAgICBjb21tYW5kc19yZXN1bWluZyA9IFsnZG9fY29udGludWUnLCAnZG9fc3RlcCcsICdkb19uZXh0JywgJ2RvX3JldHVybicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX3F1aXQnLCAnZG9fanVtcCddCmRpZmYgLS1naXQgYS9MaWIvcGlja2xlLnB5IGIvTGliL3BpY2tsZS5weQppbmRleCBkMTBhYzc3Ni4uOWU2NTM2OCAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yMyw4ICsyMyw2IEBACiAKICIiIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIiAgICAgICAjIENvZGUgdmVyc2lvbgotCiBmcm9tIHR5cGVzIGltcG9ydCBGdW5jdGlvblR5cGUsIEJ1aWx0aW5GdW5jdGlvblR5cGUKIGZyb20gY29weXJlZyBpbXBvcnQgZGlzcGF0Y2hfdGFibGUKIGZyb20gY29weXJlZyBpbXBvcnQgX2V4dGVuc2lvbl9yZWdpc3RyeSwgX2ludmVydGVkX3JlZ2lzdHJ5LCBfZXh0ZW5zaW9uX2NhY2hlCkBAIC0yOTksOCArMjk3LDggQEAKICAgICAgICAgICAgIGYoc2VsZiwgb2JqKSAjIENhbGwgdW5ib3VuZCBtZXRob2Qgd2l0aCBleHBsaWNpdCBzZWxmCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIENoZWNrIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUKLSAgICAgICAgcmVkdWNlID0gZGlzcGF0Y2hfdGFibGUuZ2V0KHQpCisgICAgICAgICMgQ2hlY2sgcHJpdmF0ZSBkaXNwYXRjaCB0YWJsZSBpZiBhbnksIG9yIGVsc2UgY29weXJlZy5kaXNwYXRjaF90YWJsZQorICAgICAgICByZWR1Y2UgPSBnZXRhdHRyKHNlbGYsICdkaXNwYXRjaF90YWJsZScsIGRpc3BhdGNoX3RhYmxlKS5nZXQodCkKICAgICAgICAgaWYgcmVkdWNlOgogICAgICAgICAgICAgcnYgPSByZWR1Y2Uob2JqKQogICAgICAgICBlbHNlOgpAQCAtMzc3LDcgKzM3NSw3IEBACiAgICAgICAgICAgICAjIGFsbG93aW5nIHByb3RvY29sIDAgYW5kIDEgdG8gd29yayBub3JtYWxseS4gIEZvciB0aGlzIHRvCiAgICAgICAgICAgICAjIHdvcmssIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBfX3JlZHVjZV9fIHNob3VsZCBiZQogICAgICAgICAgICAgIyBjYWxsZWQgX19uZXdvYmpfXywgYW5kIGl0cyBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgICAgICAgICAgIyBuZXctc3R5bGUgY2xhc3MuICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIF9fbmV3b2JqX18KKyAgICAgICAgICAgICMgY2xhc3MuICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIF9fbmV3b2JqX18KICAgICAgICAgICAgICMgc2hvdWxkIGJlIGFzIGZvbGxvd3MsIGFsdGhvdWdoIHBpY2tsZSBoYXMgbm8gd2F5IHRvCiAgICAgICAgICAgICAjIHZlcmlmeSB0aGlzOgogICAgICAgICAgICAgIwpAQCAtNDQwLDYgKzQzOCwxNCBAQAogICAgICAgICBzZWxmLndyaXRlKE5PTkUpCiAgICAgZGlzcGF0Y2hbdHlwZShOb25lKV0gPSBzYXZlX25vbmUKIAorICAgIGRlZiBzYXZlX2VsbGlwc2lzKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwoRWxsaXBzaXMsICdFbGxpcHNpcycpCisgICAgZGlzcGF0Y2hbdHlwZShFbGxpcHNpcyldID0gc2F2ZV9lbGxpcHNpcworCisgICAgZGVmIHNhdmVfbm90aW1wbGVtZW50ZWQoc2VsZiwgb2JqKToKKyAgICAgICAgc2VsZi5zYXZlX2dsb2JhbChOb3RJbXBsZW1lbnRlZCwgJ05vdEltcGxlbWVudGVkJykKKyAgICBkaXNwYXRjaFt0eXBlKE5vdEltcGxlbWVudGVkKV0gPSBzYXZlX25vdGltcGxlbWVudGVkCisKICAgICBkZWYgc2F2ZV9ib29sKHNlbGYsIG9iaik6CiAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gMjoKICAgICAgICAgICAgIHNlbGYud3JpdGUob2JqIGFuZCBORVdUUlVFIG9yIE5FV0ZBTFNFKQpAQCAtMTMzMiw3ICsxMzM4LDcgQEAKICAgICByZXR1cm4gZG9jdGVzdC50ZXN0bW9kKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgc3lzLCBhcmdwYXJzZQorICAgIGltcG9ydCBhcmdwYXJzZQogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAogICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBjb250ZW50cyBvZiB0aGUgcGlja2xlIGZpbGVzJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZXRvb2xzLnB5IGIvTGliL3BpY2tsZXRvb2xzLnB5CmluZGV4IGVjNmNjNTMuLjY2ZjRlZGQgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGV0b29scy5weQorKysgYi9MaWIvcGlja2xldG9vbHMucHkKQEAgLTUxMCwxMCArNTEwLDcgQEAKICAgICBlbGlmIHMgPT0gYiIwMSI6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBpbnQocykKLSAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgcmV0dXJuIGludChzKQorICAgIHJldHVybiBpbnQocykKIAogZGVmIHJlYWRfZGVjaW1hbG5sX2xvbmcoZik6CiAgICAgciIiIgpAQCAtMTY0Miw2ICsxNjM5LDggQEAKICAgICAgIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCiAKICAgICAgIE5PVEU6ICBjaGVja3MgZm9yIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIHdlbnQgYXdheSBpbiBQeXRob24gMi4zLgorICAgICAgTk9URTogIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNsYXNzZXMgZG9lcworICAgICAgICAgICAgIG5vdCBtYWtlIHNlbnNlIGluIFB5dGhvbiAzLgogICAgICAgIiIiKSwKIAogICAgIEkobmFtZT0nT0JKJywKZGlmZiAtLWdpdCBhL0xpYi9waXBlcy5weSBiL0xpYi9waXBlcy5weQppbmRleCA0Mjk3MDUzLi5mMWExNmY2IDEwMDY0NAotLS0gYS9MaWIvcGlwZXMucHkKKysrIGIvTGliL3BpcGVzLnB5CkBAIC02MCw3ICs2MCw5IEBACiBpbXBvcnQgcmUKIGltcG9ydCBvcwogaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc3RyaW5nCisjIHdlIGltcG9ydCB0aGUgcXVvdGUgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIG1vZHVsZSBmb3IgYmFja3dhcmQgY29tcGF0CisjIChxdW90ZSB1c2VkIHRvIGJlIGFuIHVuZG9jdW1lbnRlZCBidXQgdXNlZCBmdW5jdGlvbiBpbiBwaXBlcykKK2Zyb20gc2hsZXggaW1wb3J0IHF1b3RlCiAKIF9fYWxsX18gPSBbIlRlbXBsYXRlIl0KIApAQCAtMjQzLDIyICsyNDUsMyBAQAogICAgICAgICBjbWRsaXN0ID0gdHJhcGNtZCArICdcbicgKyBjbWRsaXN0ICsgJ1xuJyArIHJtY21kCiAgICAgIwogICAgIHJldHVybiBjbWRsaXN0Ci0KLQotIyBSZWxpYWJseSBxdW90ZSBhIHN0cmluZyBhcyBhIHNpbmdsZSBhcmd1bWVudCBmb3IgL2Jpbi9zaAotCi0jIFNhZmUgdW5xdW90ZWQKLV9zYWZlY2hhcnMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nKQotCi1kZWYgcXVvdGUoZmlsZSk6Ci0gICAgIiIiUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHN0cmluZy4iIiIKLSAgICBmb3IgYyBpbiBmaWxlOgotICAgICAgICBpZiBjIG5vdCBpbiBfc2FmZWNoYXJzOgotICAgICAgICAgICAgYnJlYWsKLSAgICBlbHNlOgotICAgICAgICBpZiBub3QgZmlsZToKLSAgICAgICAgICAgIHJldHVybiAiJyciCi0gICAgICAgIHJldHVybiBmaWxlCi0gICAgIyB1c2Ugc2luZ2xlIHF1b3RlcywgYW5kIHB1dCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlcwotICAgICMgdGhlIHN0cmluZyAkJ2IgaXMgdGhlbiBxdW90ZWQgYXMgJyQnIiciJ2InCi0gICAgcmV0dXJuICInIiArIGZpbGUucmVwbGFjZSgiJyIsICInXCInXCInIikgKyAiJyIKZGlmZiAtLWdpdCBhL0xpYi9wa2d1dGlsLnB5IGIvTGliL3BrZ3V0aWwucHkKaW5kZXggNTFkYTBiMS4uOGJkZWIzMiAxMDA2NDQKLS0tIGEvTGliL3BrZ3V0aWwucHkKKysrIGIvTGliL3BrZ3V0aWwucHkKQEAgLTIsOCArMiwxMCBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXAKIGltcG9ydCBvcy5wYXRoCitmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiBmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCiAKIF9fYWxsX18gPSBbCkBAIC0yMSw3ICsyMyw3IEBACiAgICAgaWYgbWFnaWMgIT0gaW1wLmdldF9tYWdpYygpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgc3RyZWFtLnJlYWQoNCkgIyBTa2lwIHRpbWVzdGFtcAorICAgIHN0cmVhbS5yZWFkKDgpICMgU2tpcCB0aW1lc3RhbXAgYW5kIHNpemUKICAgICByZXR1cm4gbWFyc2hhbC5sb2FkKHN0cmVhbSkKIAogCkBAIC0xNTUsNiArMTU3LDQ5IEBACiAKIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyA9IHNpbXBsZWdlbmVyaWMoaXRlcl9pbXBvcnRlcl9tb2R1bGVzKQogCisjIEltcGxlbWVudCBhIGZpbGUgd2Fsa2VyIGZvciB0aGUgbm9ybWFsIGltcG9ydGxpYiBwYXRoIGhvb2sKK2RlZiBfaXRlcl9maWxlX2ZpbmRlcl9tb2R1bGVzKGltcG9ydGVyLCBwcmVmaXg9JycpOgorICAgIGlmIGltcG9ydGVyLnBhdGggaXMgTm9uZSBvciBub3Qgb3MucGF0aC5pc2RpcihpbXBvcnRlci5wYXRoKToKKyAgICAgICAgcmV0dXJuCisKKyAgICB5aWVsZGVkID0ge30KKyAgICBpbXBvcnQgaW5zcGVjdAorICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWVzID0gb3MubGlzdGRpcihpbXBvcnRlci5wYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKKyAgICAgICAgZmlsZW5hbWVzID0gW10KKyAgICBmaWxlbmFtZXMuc29ydCgpICAjIGhhbmRsZSBwYWNrYWdlcyBiZWZvcmUgc2FtZS1uYW1lZCBtb2R1bGVzCisKKyAgICBmb3IgZm4gaW4gZmlsZW5hbWVzOgorICAgICAgICBtb2RuYW1lID0gaW5zcGVjdC5nZXRtb2R1bGVuYW1lKGZuKQorICAgICAgICBpZiBtb2RuYW1lPT0nX19pbml0X18nIG9yIG1vZG5hbWUgaW4geWllbGRlZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihpbXBvcnRlci5wYXRoLCBmbikKKyAgICAgICAgaXNwa2cgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBtb2RuYW1lIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpIGFuZCAnLicgbm90IGluIGZuOgorICAgICAgICAgICAgbW9kbmFtZSA9IGZuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGlyY29udGVudHMgPSBvcy5saXN0ZGlyKHBhdGgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKKyAgICAgICAgICAgICAgICBkaXJjb250ZW50cyA9IFtdCisgICAgICAgICAgICBmb3IgZm4gaW4gZGlyY29udGVudHM6CisgICAgICAgICAgICAgICAgc3VibmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKKyAgICAgICAgICAgICAgICBpZiBzdWJuYW1lPT0nX19pbml0X18nOgorICAgICAgICAgICAgICAgICAgICBpc3BrZyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUgICAgIyBub3QgYSBwYWNrYWdlCisKKyAgICAgICAgaWYgbW9kbmFtZSBhbmQgJy4nIG5vdCBpbiBtb2RuYW1lOgorICAgICAgICAgICAgeWllbGRlZFttb2RuYW1lXSA9IDEKKyAgICAgICAgICAgIHlpZWxkIHByZWZpeCArIG1vZG5hbWUsIGlzcGtnCisKK2l0ZXJfaW1wb3J0ZXJfbW9kdWxlcy5yZWdpc3RlcigKKyAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIsIF9pdGVyX2ZpbGVfZmluZGVyX21vZHVsZXMpCiAKIGNsYXNzIEltcEltcG9ydGVyOgogICAgICIiIlBFUCAzMDIgSW1wb3J0ZXIgdGhhdCB3cmFwcyBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IGFsZ29yaXRobQpAQCAtMTY4LDYgKzIxMyw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD1Ob25lKToKKyAgICAgICAgd2FybigiVGhpcyBlbXVsYXRpb24gaXMgZGVwcmVjYXRlZCwgdXNlICdpbXBvcnRsaWInIGluc3RlYWQiLAorICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgpAQCAtMjMyLDYgKzI3OSw4IEBACiAgICAgY29kZSA9IHNvdXJjZSA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0Yyk6CisgICAgICAgIHdhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHNlbGYuZnVsbG5hbWUgPSBmdWxsbmFtZQpAQCAtMjU2LDcgKzMwNSw3IEBACiAgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgc2VsZi5maWxlLmNsb3NlZDoKICAgICAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KICAgICAgICAgICAgIGlmIG1vZF90eXBlPT1pbXAuUFlfU09VUkNFOgotICAgICAgICAgICAgICAgIHNlbGYuZmlsZSA9IG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JVJykKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyJykKICAgICAgICAgICAgIGVsaWYgbW9kX3R5cGUgaW4gKGltcC5QWV9DT01QSUxFRCwgaW1wLkNfRVhURU5TSU9OKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpCiAKQEAgLTMwMSw3ICszNTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBtb2RfdHlwZT09aW1wLlBZX0NPTVBJTEVEOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZmlsZW5hbWVbOi0xXSk6Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWVbOi0xXSwgJ3JVJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5maWxlbmFtZVs6LTFdLCAncicpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gZi5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBlbGlmIG1vZF90eXBlPT1pbXAuUEtHX0RJUkVDVE9SWToKQEAgLTMxNSw5ICszNjQsOSBAQAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWU9Tm9uZSk6CiAgICAgICAgIGZ1bGxuYW1lID0gc2VsZi5fZml4X25hbWUoZnVsbG5hbWUpCiAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KLSAgICAgICAgaWYgc2VsZi5ldGNbMl09PWltcC5QS0dfRElSRUNUT1JZOgorICAgICAgICBpZiBtb2RfdHlwZT09aW1wLlBLR19ESVJFQ1RPUlk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2RlbGVnYXRlKCkuZ2V0X2ZpbGVuYW1lKCkKLSAgICAgICAgZWxpZiBzZWxmLmV0Y1syXSBpbiAoaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuQ19FWFRFTlNJT04pOgorICAgICAgICBlbGlmIG1vZF90eXBlIGluIChpbXAuUFlfU09VUkNFLCBpbXAuUFlfQ09NUElMRUQsIGltcC5DX0VYVEVOU0lPTik6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlbmFtZQogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNjYsMTAgKzQxNSw2IEBACiAgICAgVGhlIHJldHVybmVkIGltcG9ydGVyIGlzIGNhY2hlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQogICAgIGlmIGl0IHdhcyBuZXdseSBjcmVhdGVkIGJ5IGEgcGF0aCBob29rLgogCi0gICAgSWYgdGhlcmUgaXMgbm8gaW1wb3J0ZXIsIGEgd3JhcHBlciBhcm91bmQgdGhlIGJhc2ljIGltcG9ydAotICAgIG1hY2hpbmVyeSBpcyByZXR1cm5lZC4gVGhpcyB3cmFwcGVyIGlzIG5ldmVyIGluc2VydGVkIGludG8KLSAgICB0aGUgaW1wb3J0ZXIgY2FjaGUgKE5vbmUgaXMgaW5zZXJ0ZWQgaW5zdGVhZCkuCi0KICAgICBUaGUgY2FjaGUgKG9yIHBhcnQgb2YgaXQpIGNhbiBiZSBjbGVhcmVkIG1hbnVhbGx5IGlmIGEKICAgICByZXNjYW4gb2Ygc3lzLnBhdGhfaG9va3MgaXMgbmVjZXNzYXJ5LgogICAgICIiIgpAQCAtMzc5LDE4ICs0MjQsMTIgQEAKICAgICAgICAgZm9yIHBhdGhfaG9vayBpbiBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpbXBvcnRlciA9IHBhdGhfaG9vayhwYXRoX2l0ZW0pCisgICAgICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuc2V0ZGVmYXVsdChwYXRoX2l0ZW0sIGltcG9ydGVyKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaW1wb3J0ZXIgPSBOb25lCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnNldGRlZmF1bHQocGF0aF9pdGVtLCBpbXBvcnRlcikKLQotICAgIGlmIGltcG9ydGVyIGlzIE5vbmU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydGVyID0gSW1wSW1wb3J0ZXIocGF0aF9pdGVtKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBvcnRlciA9IE5vbmUKICAgICByZXR1cm4gaW1wb3J0ZXIKIAogCkBAIC0zOTgsNTUgKzQzNywzNyBAQAogICAgICIiIllpZWxkIFBFUCAzMDIgaW1wb3J0ZXJzIGZvciB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUKIAogICAgIElmIGZ1bGxuYW1lIGNvbnRhaW5zIGEgJy4nLCB0aGUgaW1wb3J0ZXJzIHdpbGwgYmUgZm9yIHRoZSBwYWNrYWdlCi0gICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBpbXBvcnRlcnMgZm9yIHN5cy5tZXRhX3BhdGgsCi0gICAgc3lzLnBhdGgsIGFuZCBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IG1hY2hpbmVyeSwgaW4gdGhhdCBvcmRlci4gIElmCi0gICAgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUKKyAgICBjb250YWluaW5nIGZ1bGxuYW1lLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbCByZWdpc3RlcmVkIHRvcCBsZXZlbAorICAgIGltcG9ydGVycyAoaS5lLiB0aG9zZSBvbiBib3RoIHN5cy5tZXRhX3BhdGggYW5kIHN5cy5wYXRoX2hvb2tzKS4KKworICAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCiAgICAgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCiAKLSAgICBOb24gUEVQIDMwMiBtZWNoYW5pc21zIChlLmcuIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5KSB1c2VkIGJ5IHRoZQotICAgIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkgdG8gZmluZCBmaWxlcyBpbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbnMKLSAgICBhcmUgcGFydGlhbGx5IHN1cHBvcnRlZCwgYnV0IGFyZSBzZWFyY2hlZCBBRlRFUiBzeXMucGF0aC4gTm9ybWFsbHksCi0gICAgdGhlc2UgbG9jYXRpb25zIGFyZSBzZWFyY2hlZCBCRUZPUkUgc3lzLnBhdGgsIHByZXZlbnRpbmcgc3lzLnBhdGgKLSAgICBlbnRyaWVzIGZyb20gc2hhZG93aW5nIHRoZW0uCi0KLSAgICBGb3IgdGhpcyB0byBjYXVzZSBhIHZpc2libGUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvdXIsIHRoZXJlIG11c3QKLSAgICBiZSBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSBib3RoIHN5cy5wYXRoCi0gICAgYW5kIG9uZSBvZiB0aGUgbm9uIFBFUCAzMDIgZmlsZSBzeXN0ZW0gbWVjaGFuaXNtcy4gSW4gdGhpcyBjYXNlLAotICAgIHRoZSBlbXVsYXRpb24gd2lsbCBmaW5kIHRoZSBmb3JtZXIgdmVyc2lvbiwgd2hpbGUgdGhlIGJ1aWx0aW4KLSAgICBpbXBvcnQgbWVjaGFuaXNtIHdpbGwgZmluZCB0aGUgbGF0dGVyLgotCi0gICAgSXRlbXMgb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBjYW4gYmUgYWZmZWN0ZWQgYnkgdGhpcyBkaXNjcmVwYW5jeToKLSAgICAgICAgaW1wLkNfRVhURU5TSU9OLCBpbXAuUFlfU09VUkNFLCBpbXAuUFlfQ09NUElMRUQsIGltcC5QS0dfRElSRUNUT1JZCisgICAgSWYgbm8gbW9kdWxlIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGwgdG9wIGxldmVsIGltcG9ydGVycyBhcmUgcHJvZHVjZWQuCiAgICAgIiIiCiAgICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiUmVsYXRpdmUgbW9kdWxlIG5hbWVzIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICBtc2cgPSAiUmVsYXRpdmUgbW9kdWxlIG5hbWUgeyFyfSBub3Qgc3VwcG9ydGVkIi5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZykKICAgICBpZiAnLicgaW4gZnVsbG5hbWU6CiAgICAgICAgICMgR2V0IHRoZSBjb250YWluaW5nIHBhY2thZ2UncyBfX3BhdGhfXwotICAgICAgICBwa2cgPSAnLicuam9pbihmdWxsbmFtZS5zcGxpdCgnLicpWzotMV0pCi0gICAgICAgIGlmIHBrZyBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICBfX2ltcG9ydF9fKHBrZykKLSAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbcGtnXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KKyAgICAgICAgcGtnX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KKyAgICAgICAgcGtnID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnKQorICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1twa2ddLCAnX19wYXRoX18nLCBOb25lKQorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KICAgICBlbHNlOgogICAgICAgICBmb3IgaW1wb3J0ZXIgaW4gc3lzLm1ldGFfcGF0aDoKICAgICAgICAgICAgIHlpZWxkIGltcG9ydGVyCiAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgIGZvciBpdGVtIGluIHBhdGg6CiAgICAgICAgIHlpZWxkIGdldF9pbXBvcnRlcihpdGVtKQotICAgIGlmICcuJyBub3QgaW4gZnVsbG5hbWU6Ci0gICAgICAgIHlpZWxkIEltcEltcG9ydGVyKCkKIAogZGVmIGdldF9sb2FkZXIobW9kdWxlX29yX25hbWUpOgogICAgICIiIkdldCBhIFBFUCAzMDIgImxvYWRlciIgb2JqZWN0IGZvciBtb2R1bGVfb3JfbmFtZQogCi0gICAgSWYgdGhlIG1vZHVsZSBvciBwYWNrYWdlIGlzIGFjY2Vzc2libGUgdmlhIHRoZSBub3JtYWwgaW1wb3J0Ci0gICAgbWVjaGFuaXNtLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSByZWxldmFudCBwYXJ0IG9mIHRoYXQgbWFjaGluZXJ5Ci0gICAgaXMgcmV0dXJuZWQuICBSZXR1cm5zIE5vbmUgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuCisgICAgUmV0dXJucyBOb25lIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIG9yIGltcG9ydGVkLgogICAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGFscmVhZHkgaW1wb3J0ZWQsIGl0cyBjb250YWluaW5nIHBhY2thZ2UKICAgICAoaWYgYW55KSBpcyBpbXBvcnRlZCwgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIHRoZSBwYWNrYWdlIF9fcGF0aF9fLgotCi0gICAgVGhpcyBmdW5jdGlvbiB1c2VzIGl0ZXJfaW1wb3J0ZXJzKCksIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUKLSAgICBsaW1pdGF0aW9ucyByZWdhcmRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2gKLSAgICBhcyB0aGUgV2luZG93cyByZWdpc3RyeS4KICAgICAiIiIKICAgICBpZiBtb2R1bGVfb3JfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgbW9kdWxlX29yX25hbWUgPSBzeXMubW9kdWxlc1ttb2R1bGVfb3JfbmFtZV0KQEAgLTQ2MCwyMCArNDgxLDMzIEBACiAgICAgICAgIGZ1bGxuYW1lID0gbW9kdWxlX29yX25hbWUKICAgICByZXR1cm4gZmluZF9sb2FkZXIoZnVsbG5hbWUpCiAKKwogZGVmIGZpbmRfbG9hZGVyKGZ1bGxuYW1lKToKICAgICAiIiJGaW5kIGEgUEVQIDMwMiAibG9hZGVyIiBvYmplY3QgZm9yIGZ1bGxuYW1lCiAKLSAgICBJZiBmdWxsbmFtZSBjb250YWlucyBkb3RzLCBwYXRoIG11c3QgYmUgdGhlIGNvbnRhaW5pbmcgcGFja2FnZSdzIF9fcGF0aF9fLgotICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4gVGhpcyBmdW5jdGlvbiB1c2VzCi0gICAgaXRlcl9pbXBvcnRlcnMoKSwgYW5kIGlzIHRodXMgc3ViamVjdCB0byB0aGUgc2FtZSBsaW1pdGF0aW9ucyByZWdhcmRpbmcKLSAgICBwbGF0Zm9ybS1zcGVjaWZpYyBzcGVjaWFsIGltcG9ydCBsb2NhdGlvbnMgc3VjaCBhcyB0aGUgV2luZG93cyByZWdpc3RyeS4KKyAgICBUaGlzIGlzIHMgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAgdGhhdAorICAgIHNldHMgdGhlICpwYXRoKiBhcmd1bWVudCBjb3JyZWN0bHkgd2hlbiBzZWFyY2hpbmcgZm9yIHN1Ym1vZHVsZXMsIGFuZAorICAgIGFsc28gZW5zdXJlcyBwYXJlbnQgcGFja2FnZXMgKGlmIGFueSkgYXJlIGltcG9ydGVkIGJlZm9yZSBzZWFyY2hpbmcgZm9yCisgICAgc3VibW9kdWxlcy4KICAgICAiIiIKLSAgICBmb3IgaW1wb3J0ZXIgaW4gaXRlcl9pbXBvcnRlcnMoZnVsbG5hbWUpOgotICAgICAgICBsb2FkZXIgPSBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKLSAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgotCi0gICAgcmV0dXJuIE5vbmUKKyAgICBpZiBmdWxsbmFtZS5zdGFydHN3aXRoKCcuJyk6CisgICAgICAgIG1zZyA9ICJSZWxhdGl2ZSBtb2R1bGUgbmFtZSB7IXJ9IG5vdCBzdXBwb3J0ZWQiLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQorICAgIHBhdGggPSBOb25lCisgICAgcGtnX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KKyAgICBpZiBwa2dfbmFtZToKKyAgICAgICAgcGtnID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgIHBhdGggPSBnZXRhdHRyKHBrZywgIl9fcGF0aF9fIiwgTm9uZSkKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbXBvcnRsaWIuZmluZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IsIFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZXg6CisgICAgICAgICMgVGhpcyBoYWNrIGZpeGVzIGFuIGltcGVkYW5jZSBtaXNtYXRjaCBiZXR3ZWVuIHBrZ3V0aWwgYW5kCisgICAgICAgICMgaW1wb3J0bGliLCB3aGVyZSB0aGUgbGF0dGVyIHRocm93cyBvdGhlciBlcnJvcnMgZm9yIGNhc2VzIHdoZXJlCisgICAgICAgICMgcGtndXRpbCBwcmV2aW91c2x5IHRocmV3IEltcG9ydEVycm9yCisgICAgICAgIG1zZyA9ICJFcnJvciB3aGlsZSBmaW5kaW5nIGxvYWRlciBmb3IgeyFyfSAoe306IHt9KSIKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChmdWxsbmFtZSwgdHlwZShleCksIGV4KSkgZnJvbSBleAogCiAKIGRlZiBleHRlbmRfcGF0aChwYXRoLCBuYW1lKToKQEAgLTUxNCwyMSArNTQ4LDQxIEBACiAgICAgICAgICMgZnJvemVuIHBhY2thZ2UuICBSZXR1cm4gdGhlIHBhdGggdW5jaGFuZ2VkIGluIHRoYXQgY2FzZS4KICAgICAgICAgcmV0dXJuIHBhdGgKIAotICAgIHBuYW1lID0gb3MucGF0aC5qb2luKCpuYW1lLnNwbGl0KCcuJykpICMgUmVjb25zdGl0dXRlIGFzIHJlbGF0aXZlIHBhdGgKICAgICBzbmFtZV9wa2cgPSBuYW1lICsgIi5wa2ciCi0gICAgaW5pdF9weSA9ICJfX2luaXRfXy5weSIKIAogICAgIHBhdGggPSBwYXRoWzpdICMgU3RhcnQgd2l0aCBhIGNvcHkgb2YgdGhlIGV4aXN0aW5nIHBhdGgKIAotICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRpciwgc3RyKSBvciBub3Qgb3MucGF0aC5pc2RpcihkaXIpOgorICAgIHBhcmVudF9wYWNrYWdlLCBfLCBmaW5hbF9uYW1lID0gbmFtZS5ycGFydGl0aW9uKCcuJykKKyAgICBpZiBwYXJlbnRfcGFja2FnZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VhcmNoX3BhdGggPSBzeXMubW9kdWxlc1twYXJlbnRfcGFja2FnZV0uX19wYXRoX18KKyAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgIyBXZSBjYW4ndCBkbyBhbnl0aGluZzogZmluZF9sb2FkZXIoKSByZXR1cm5zIE5vbmUgd2hlbgorICAgICAgICAgICAgIyBwYXNzZWQgYSBkb3R0ZWQgbmFtZS4KKyAgICAgICAgICAgIHJldHVybiBwYXRoCisgICAgZWxzZToKKyAgICAgICAgc2VhcmNoX3BhdGggPSBzeXMucGF0aAorCisgICAgZm9yIGRpciBpbiBzZWFyY2hfcGF0aDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGlyLCBzdHIpOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgc3ViZGlyID0gb3MucGF0aC5qb2luKGRpciwgcG5hbWUpCi0gICAgICAgICMgWFhYIFRoaXMgbWF5IHN0aWxsIGFkZCBkdXBsaWNhdGUgZW50cmllcyB0byBwYXRoIG9uCi0gICAgICAgICMgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcwotICAgICAgICBpbml0ZmlsZSA9IG9zLnBhdGguam9pbihzdWJkaXIsIGluaXRfcHkpCi0gICAgICAgIGlmIHN1YmRpciBub3QgaW4gcGF0aCBhbmQgb3MucGF0aC5pc2ZpbGUoaW5pdGZpbGUpOgotICAgICAgICAgICAgcGF0aC5hcHBlbmQoc3ViZGlyKQorCisgICAgICAgIGZpbmRlciA9IGdldF9pbXBvcnRlcihkaXIpCisgICAgICAgIGlmIGZpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgSXMgdGhpcyBmaW5kZXIgUEVQIDQyMCBjb21wbGlhbnQ/CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfbG9hZGVyJyk6CisgICAgICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmaW5hbF9uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE5vLCBubyBuZWVkIHRvIGNhbGwgaXQKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBOb25lCisgICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQorCisgICAgICAgICAgICBmb3IgcG9ydGlvbiBpbiBwb3J0aW9uczoKKyAgICAgICAgICAgICAgICAjIFhYWCBUaGlzIG1heSBzdGlsbCBhZGQgZHVwbGljYXRlIGVudHJpZXMgdG8gcGF0aCBvbgorICAgICAgICAgICAgICAgICMgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcworICAgICAgICAgICAgICAgIGlmIHBvcnRpb24gbm90IGluIHBhdGg6CisgICAgICAgICAgICAgICAgICAgIHBhdGguYXBwZW5kKHBvcnRpb24pCisKICAgICAgICAgIyBYWFggSXMgdGhpcyB0aGUgcmlnaHQgdGhpbmcgZm9yIHN1YnBhY2thZ2VzIGxpa2Ugem9wZS5hcHA/CiAgICAgICAgICMgSXQgbG9va3MgZm9yIGEgZmlsZSBuYW1lZCAiem9wZS5hcHAucGtnIgogICAgICAgICBwa2dmaWxlID0gb3MucGF0aC5qb2luKGRpciwgc25hbWVfcGtnKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL0NEUk9NLnB5IGIvTGliL3BsYXQtbGludXgvQ0RST00ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9DRFJPTS5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvQ0RST00ucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9ETEZDTi5weSBiL0xpYi9wbGF0LWxpbnV4L0RMRkNOLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvRExGQ04ucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L0RMRkNOLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvSU4ucHkgYi9MaWIvcGxhdC1saW51eC9JTi5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL0lOLnB5CnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9JTi5weQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL1RZUEVTLnB5IGIvTGliL3BsYXQtbGludXgvVFlQRVMucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9UWVBFUy5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvVFlQRVMucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9yZWdlbiBiL0xpYi9wbGF0LWxpbnV4L3JlZ2VuCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvcmVnZW4KcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L3JlZ2VuCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggNjg2YTA0NS4uMmI4YTI0YSAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTExLDYgKzExMSw3IEBACiAKIF9fdmVyc2lvbl9fID0gJzEuMC43JwogCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBzeXMsIG9zLCByZSwgc3VicHJvY2VzcwogCiAjIyMgR2xvYmFscyAmIENvbnN0YW50cwpAQCAtMTMwLDE1ICsxMzEsMTUgQEAKIAogIyMjIFBsYXRmb3JtIHNwZWNpZmljIEFQSXMKIAotX2xpYmNfc2VhcmNoID0gcmUuY29tcGlsZShyJyhfX2xpYmNfaW5pdCknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd8JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnKEdMSUJDXyhbMC05Ll0rKSknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd8JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnKGxpYmMoX1x3Kyk/XC5zbyg/OlwuKFxkWzAtOS5dKikpPyknLCByZS5BU0NJSSkKK19saWJjX3NlYXJjaCA9IHJlLmNvbXBpbGUoYicoX19saWJjX2luaXQpJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ3wnCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInKEdMSUJDXyhbMC05Ll0rKSknCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInfCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnInKGxpYmMoX1x3Kyk/XC5zbyg/OlwuKFxkWzAtOS5dKikpPyknLCByZS5BU0NJSSkKIAogZGVmIGxpYmNfdmVyKGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUsbGliPScnLHZlcnNpb249JycsCiAKLSAgICAgICAgICAgICBjaHVua3NpemU9MjA0OCk6CisgICAgICAgICAgICAgY2h1bmtzaXplPTE2Mzg0KToKIAogICAgICIiIiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIGxpYmMgdmVyc2lvbiB0aGF0IHRoZSBmaWxlIGV4ZWN1dGFibGUKICAgICAgICAgKHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIpIGlzIGxpbmtlZCBhZ2FpbnN0LgpAQCAtMTU5LDE3ICsxNjAsMjIgQEAKICAgICAgICAgIyBhYmxlIHRvIG9wZW4gc3ltbGlua3MgZm9yIHJlYWRpbmcKICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLnBhdGgucmVhbHBhdGgoZXhlY3V0YWJsZSkKICAgICBmID0gb3BlbihleGVjdXRhYmxlLCdyYicpCi0gICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkuZGVjb2RlKCdsYXRpbi0xJykKKyAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKQogICAgIHBvcyA9IDAKICAgICB3aGlsZSAxOgotICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnkscG9zKQorICAgICAgICBpZiBiJ2xpYmMnIGluIGJpbmFyeSBvciBiJ0dMSUJDJyBpbiBiaW5hcnk6CisgICAgICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnkscG9zKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbSA9IE5vbmUKICAgICAgICAgaWYgbm90IG06Ci0gICAgICAgICAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKS5kZWNvZGUoJ2xhdGluLTEnKQorICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKICAgICAgICAgICAgIGlmIG5vdCBiaW5hcnk6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHBvcyA9IDAKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGxpYmNpbml0LGdsaWJjLGdsaWJjdmVyc2lvbixzbyx0aHJlYWRzLHNvdmVyc2lvbiA9IG0uZ3JvdXBzKCkKKyAgICAgICAgbGliY2luaXQsZ2xpYmMsZ2xpYmN2ZXJzaW9uLHNvLHRocmVhZHMsc292ZXJzaW9uID0gWworICAgICAgICAgICAgcy5kZWNvZGUoJ2xhdGluMScpIGlmIHMgaXMgbm90IE5vbmUgZWxzZSBzCisgICAgICAgICAgICBmb3IgcyBpbiBtLmdyb3VwcygpXQogICAgICAgICBpZiBsaWJjaW5pdCBhbmQgbm90IGxpYjoKICAgICAgICAgICAgIGxpYiA9ICdsaWJjJwogICAgICAgICBlbGlmIGdsaWJjOgpAQCAtMjU1LDcgKzI2MSw3IEBACiBfc3VwcG9ydGVkX2Rpc3RzID0gKAogICAgICdTdVNFJywgJ2RlYmlhbicsICdmZWRvcmEnLCAncmVkaGF0JywgJ2NlbnRvcycsCiAgICAgJ21hbmRyYWtlJywgJ21hbmRyaXZhJywgJ3JvY2tzJywgJ3NsYWNrd2FyZScsICd5ZWxsb3dkb2cnLCAnZ2VudG9vJywKLSAgICAnVW5pdGVkTGludXgnLCAndHVyYm9saW51eCcpCisgICAgJ1VuaXRlZExpbnV4JywgJ3R1cmJvbGludXgnLCAnYXJjaCcsICdtYWdlaWEnKQogCiBkZWYgX3BhcnNlX3JlbGVhc2VfZmlsZShmaXJzdGxpbmUpOgogCkBAIC0zNTcsOTIgKzM2MywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2Rpc3RzPXN1cHBvcnRlZF9kaXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKIAotY2xhc3MgX3BvcGVuOgotCi0gICAgIiIiIEZhaXJseSBwb3J0YWJsZSAoYWx0ZXJuYXRpdmUpIHBvcGVuIGltcGxlbWVudGF0aW9uLgotCi0gICAgICAgIFRoaXMgaXMgbW9zdGx5IG5lZWRlZCBpbiBjYXNlIG9zLnBvcGVuKCkgaXMgbm90IGF2YWlsYWJsZSwgb3IKLSAgICAgICAgZG9lc24ndCB3b3JrIGFzIGFkdmVydGlzZWQsIGUuZy4gaW4gV2luOVggR1VJIHByb2dyYW1zIGxpa2UKLSAgICAgICAgUHl0aG9uV2luIG9yIElETEUuCi0KLSAgICAgICAgV3JpdGluZyB0byB0aGUgcGlwZSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KLQotICAgICIiIgotICAgIHRtcGZpbGUgPSAnJwotICAgIHBpcGUgPSBOb25lCi0gICAgYnVmc2l6ZSA9IE5vbmUKLSAgICBtb2RlID0gJ3InCi0KLSAgICBkZWYgX19pbml0X18oc2VsZixjbWQsbW9kZT0ncicsYnVmc2l6ZT1Ob25lKToKLQotICAgICAgICBpZiBtb2RlICE9ICdyJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3BvcGVuKCktZW11bGF0aW9uIG9ubHkgc3VwcG9ydHMgcmVhZCBtb2RlJykKLSAgICAgICAgaW1wb3J0IHRlbXBmaWxlCi0gICAgICAgIHNlbGYudG1wZmlsZSA9IHRtcGZpbGUgPSB0ZW1wZmlsZS5ta3RlbXAoKQotICAgICAgICBvcy5zeXN0ZW0oY21kICsgJyA+ICVzJyAlIHRtcGZpbGUpCi0gICAgICAgIHNlbGYucGlwZSA9IG9wZW4odG1wZmlsZSwncmInKQotICAgICAgICBzZWxmLmJ1ZnNpemUgPSBidWZzaXplCi0gICAgICAgIHNlbGYubW9kZSA9IG1vZGUKLQotICAgIGRlZiByZWFkKHNlbGYpOgotCi0gICAgICAgIHJldHVybiBzZWxmLnBpcGUucmVhZCgpCi0KLSAgICBkZWYgcmVhZGxpbmVzKHNlbGYpOgotCi0gICAgICAgIGlmIHNlbGYuYnVmc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBpcGUucmVhZGxpbmVzKCkKLQotICAgIGRlZiBjbG9zZShzZWxmLAotCi0gICAgICAgICAgICAgIHJlbW92ZT1vcy51bmxpbmssZXJyb3I9b3MuZXJyb3IpOgotCi0gICAgICAgIGlmIHNlbGYucGlwZToKLSAgICAgICAgICAgIHJjID0gc2VsZi5waXBlLmNsb3NlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJjID0gMjU1Ci0gICAgICAgIGlmIHNlbGYudG1wZmlsZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZW1vdmUoc2VsZi50bXBmaWxlKQotICAgICAgICAgICAgZXhjZXB0IGVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICAjIEFsaWFzCi0gICAgX19kZWxfXyA9IGNsb3NlCi0KIGRlZiBwb3BlbihjbWQsIG1vZGU9J3InLCBidWZzaXplPS0xKToKIAogICAgICIiIiBQb3J0YWJsZSBwb3BlbigpIGludGVyZmFjZS4KICAgICAiIiIKLSAgICAjIEZpbmQgYSB3b3JraW5nIHBvcGVuIGltcGxlbWVudGF0aW9uIHByZWZlcnJpbmcgd2luMzJwaXBlLnBvcGVuCi0gICAgIyBvdmVyIG9zLnBvcGVuIG92ZXIgX3BvcGVuCi0gICAgcG9wZW4gPSBOb25lCi0gICAgaWYgb3MuZW52aXJvbi5nZXQoJ09TJywnJykgPT0gJ1dpbmRvd3NfTlQnOgotICAgICAgICAjIE9uIE5UIHdpbjMycGlwZSBzaG91bGQgd29yazsgb24gV2luOXggaXQgaGFuZ3MgZHVlIHRvIGJ1Z3MKLSAgICAgICAgIyBpbiB0aGUgTVMgQyBsaWIgKHNlZSBNUyBLbm93bGVkZ2VCYXNlIGFydGljbGUgUTE1MDk1NikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IHdpbjMycGlwZQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3BlbiA9IHdpbjMycGlwZS5wb3BlbgotICAgIGlmIHBvcGVuIGlzIE5vbmU6Ci0gICAgICAgIGlmIGhhc2F0dHIob3MsJ3BvcGVuJyk6Ci0gICAgICAgICAgICBwb3BlbiA9IG9zLnBvcGVuCi0gICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgaXQgd29ya3MuLi4gaXQgZG9lc24ndCBpbiBHVUkgcHJvZ3JhbXMKLSAgICAgICAgICAgICMgb24gV2luZG93cyBwbGF0Zm9ybXMKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIFhYWCBPdGhlcnMgdG9vID8KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHBvcGVuKCcnKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcG9wZW4gPSBfcG9wZW4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBvcGVuID0gX3BvcGVuCi0gICAgaWYgYnVmc2l6ZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gcG9wZW4oY21kLG1vZGUpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHBvcGVuKGNtZCxtb2RlLGJ1ZnNpemUpCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybigndXNlIG9zLnBvcGVuIGluc3RlYWQnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICByZXR1cm4gb3MucG9wZW4oY21kLCBtb2RlLCBidWZzaXplKQogCiBkZWYgX25vcm1fdmVyc2lvbih2ZXJzaW9uLCBidWlsZD0nJyk6CiAKQEAgLTc3OSw3ICs3MDYsNyBAQAogICAgIHBsID0gcGxpc3RsaWIucmVhZFBsaXN0KGZuKQogICAgIHJlbGVhc2UgPSBwbFsnUHJvZHVjdFZlcnNpb24nXQogICAgIHZlcnNpb25pbmZvPSgnJywgJycsICcnKQotICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpWzRdCisgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZQogICAgIGlmIG1hY2hpbmUgaW4gKCdwcGMnLCAnUG93ZXIgTWFjaW50b3NoJyk6CiAgICAgICAgICMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgZ2VzdGFsdCBiYXNlZCBjb2RlCiAgICAgICAgIG1hY2hpbmUgPSAnUG93ZXJQQycKQEAgLTEwMDQsOSArOTMxLDEwIEBACiAgICAgdHJ5OgogICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2ZpbGUnLCB0YXJnZXRdLAogICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKwogICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3Isb3MuZXJyb3IpOgogICAgICAgICByZXR1cm4gZGVmYXVsdAotICAgIG91dHB1dCA9IHByb2MuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoImxhdGluLTEiKQorICAgIG91dHB1dCA9IHByb2MuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoJ2xhdGluLTEnKQogICAgIHJjID0gcHJvYy53YWl0KCkKICAgICBpZiBub3Qgb3V0cHV0IG9yIHJjOgogICAgICAgICByZXR1cm4gZGVmYXVsdApAQCAtMTEwNyw2ICsxMDM1LDkgQEAKIAogIyMjIFBvcnRhYmxlIHVuYW1lKCkgaW50ZXJmYWNlCiAKK3VuYW1lX3Jlc3VsdCA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoInVuYW1lX3Jlc3VsdCIsCisgICAgICAgICAgICAgICAgICAgICJzeXN0ZW0gbm9kZSByZWxlYXNlIHZlcnNpb24gbWFjaGluZSBwcm9jZXNzb3IiKQorCiBfdW5hbWVfY2FjaGUgPSBOb25lCiAKIGRlZiB1bmFtZSgpOgpAQCAtMTI0MSw3ICsxMTcyLDcgQEAKICAgICAgICAgc3lzdGVtID0gJ1dpbmRvd3MnCiAgICAgICAgIHJlbGVhc2UgPSAnVmlzdGEnCiAKLSAgICBfdW5hbWVfY2FjaGUgPSBzeXN0ZW0sbm9kZSxyZWxlYXNlLHZlcnNpb24sbWFjaGluZSxwcm9jZXNzb3IKKyAgICBfdW5hbWVfY2FjaGUgPSB1bmFtZV9yZXN1bHQoc3lzdGVtLG5vZGUscmVsZWFzZSx2ZXJzaW9uLG1hY2hpbmUscHJvY2Vzc29yKQogICAgIHJldHVybiBfdW5hbWVfY2FjaGUKIAogIyMjIERpcmVjdCBpbnRlcmZhY2VzIHRvIHNvbWUgb2YgdGhlIHVuYW1lKCkgcmV0dXJuIHZhbHVlcwpAQCAtMTI1Myw3ICsxMTg0LDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzBdCisgICAgcmV0dXJuIHVuYW1lKCkuc3lzdGVtCiAKIGRlZiBub2RlKCk6CiAKQEAgLTEyNjMsNyArMTE5NCw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVsxXQorICAgIHJldHVybiB1bmFtZSgpLm5vZGUKIAogZGVmIHJlbGVhc2UoKToKIApAQCAtMTI3Miw3ICsxMjAzLDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzJdCisgICAgcmV0dXJuIHVuYW1lKCkucmVsZWFzZQogCiBkZWYgdmVyc2lvbigpOgogCkBAIC0xMjgxLDcgKzEyMTIsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbM10KKyAgICByZXR1cm4gdW5hbWUoKS52ZXJzaW9uCiAKIGRlZiBtYWNoaW5lKCk6CiAKQEAgLTEyOTAsNyArMTIyMSw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVs0XQorICAgIHJldHVybiB1bmFtZSgpLm1hY2hpbmUKIAogZGVmIHByb2Nlc3NvcigpOgogCkBAIC0xMzAyLDcgKzEyMzMsNyBAQAogICAgICAgICBlLmcuICBOZXRCU0QgZG9lcyB0aGlzLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbNV0KKyAgICByZXR1cm4gdW5hbWUoKS5wcm9jZXNzb3IKIAogIyMjIFZhcmlvdXMgQVBJcyBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHN5cy52ZXJzaW9uCiAKZGlmZiAtLWdpdCBhL0xpYi9wbGlzdGxpYi5weSBiL0xpYi9wbGlzdGxpYi5weQppbmRleCAyZTdlNTEyLi40MWZkOGYyIDEwMDY0NAotLS0gYS9MaWIvcGxpc3RsaWIucHkKKysrIGIvTGliL3BsaXN0bGliLnB5CkBAIC0yMzcsMjAgKzIzNywyNiBAQAogICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRhdGEiKQogCiAgICAgZGVmIHdyaXRlRGljdChzZWxmLCBkKToKLSAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImRpY3QiKQotICAgICAgICBpdGVtcyA9IHNvcnRlZChkLml0ZW1zKCkpCi0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIGl0ZW1zOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5cyBtdXN0IGJlIHN0cmluZ3MiKQotICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJrZXkiLCBrZXkpCi0gICAgICAgICAgICBzZWxmLndyaXRlVmFsdWUodmFsdWUpCi0gICAgICAgIHNlbGYuZW5kRWxlbWVudCgiZGljdCIpCisgICAgICAgIGlmIGQ6CisgICAgICAgICAgICBzZWxmLmJlZ2luRWxlbWVudCgiZGljdCIpCisgICAgICAgICAgICBpdGVtcyA9IHNvcnRlZChkLml0ZW1zKCkpCisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShrZXksIHN0cik6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5cyBtdXN0IGJlIHN0cmluZ3MiKQorICAgICAgICAgICAgICAgIHNlbGYuc2ltcGxlRWxlbWVudCgia2V5Iiwga2V5KQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVWYWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuZW5kRWxlbWVudCgiZGljdCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNpbXBsZUVsZW1lbnQoImRpY3QiKQogCiAgICAgZGVmIHdyaXRlQXJyYXkoc2VsZiwgYXJyYXkpOgotICAgICAgICBzZWxmLmJlZ2luRWxlbWVudCgiYXJyYXkiKQotICAgICAgICBmb3IgdmFsdWUgaW4gYXJyYXk6Ci0gICAgICAgICAgICBzZWxmLndyaXRlVmFsdWUodmFsdWUpCi0gICAgICAgIHNlbGYuZW5kRWxlbWVudCgiYXJyYXkiKQorICAgICAgICBpZiBhcnJheToKKyAgICAgICAgICAgIHNlbGYuYmVnaW5FbGVtZW50KCJhcnJheSIpCisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gYXJyYXk6CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQorICAgICAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJhcnJheSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNpbXBsZUVsZW1lbnQoImFycmF5IikKIAogCiBjbGFzcyBfSW50ZXJuYWxEaWN0KGRpY3QpOgpAQCAtMjY2LDEzICsyNzIsMTMgQEAKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCiAgICAgICAgIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KICAgICAgICAgd2FybigiQXR0cmlidXRlIGFjY2VzcyBmcm9tIHBsaXN0IGRpY3RzIGlzIGRlcHJlY2F0ZWQsIHVzZSBkW2tleV0gIgotICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHZhbHVlCiAKICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgYXR0ciwgdmFsdWUpOgogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGZbYXR0cl0gPSB2YWx1ZQogCiAgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIGF0dHIpOgpAQCAtMjgyLDE0ICsyODgsMTQgQEAKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCiAgICAgICAgIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KICAgICAgICAgd2FybigiQXR0cmlidXRlIGFjY2VzcyBmcm9tIHBsaXN0IGRpY3RzIGlzIGRlcHJlY2F0ZWQsIHVzZSBkW2tleV0gIgotICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKIAogY2xhc3MgRGljdChfSW50ZXJuYWxEaWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KICAgICAgICAgd2FybigiVGhlIHBsaXN0bGliLkRpY3QgY2xhc3MgaXMgZGVwcmVjYXRlZCwgdXNlIGJ1aWx0aW4gZGljdCBpbnN0ZWFkIiwKLSAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKIAogCkBAIC0zMDIsNyArMzA4LDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIlRoZSBQbGlzdCBjbGFzcyBpcyBkZXByZWNhdGVkLCB1c2UgdGhlIHJlYWRQbGlzdCgpIGFuZCAiCi0gICAgICAgICAgICAgIndyaXRlUGxpc3QoKSBmdW5jdGlvbnMgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIndyaXRlUGxpc3QoKSBmdW5jdGlvbnMgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKIAogICAgIGRlZiBmcm9tRmlsZShjbHMsIHBhdGhPckZpbGUpOgpkaWZmIC0tZ2l0IGEvTGliL3BvcGxpYi5weSBiL0xpYi9wb3BsaWIucHkKaW5kZXggODRlYTg4ZC4uZDQyZDlkZCAxMDA2NDQKLS0tIGEvTGliL3BvcGxpYi5weQorKysgYi9MaWIvcG9wbGliLnB5CkBAIC0yNTAsMTUgKzI1MCwxOCBAQAogCiAgICAgZGVmIHF1aXQoc2VsZik6CiAgICAgICAgICIiIlNpZ25vZmY6IGNvbW1pdCBjaGFuZ2VzIG9uIHNlcnZlciwgdW5sb2NrIG1haWxib3gsIGNsb3NlIGNvbm5lY3Rpb24uIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3AgPSBzZWxmLl9zaG9ydGNtZCgnUVVJVCcpCi0gICAgICAgIGV4Y2VwdCBlcnJvcl9wcm90byBhcyB2YWw6Ci0gICAgICAgICAgICByZXNwID0gdmFsCi0gICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCi0gICAgICAgIHNlbGYuc29jay5jbG9zZSgpCi0gICAgICAgIGRlbCBzZWxmLmZpbGUsIHNlbGYuc29jaworICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1FVSVQnKQorICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgcmV0dXJuIHJlc3AKIAorICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiQ2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aG91dCBhc3N1bWluZyBhbnl0aGluZyBhYm91dCBpdC4iIiIKKyAgICAgICAgaWYgc2VsZi5maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrID0gTm9uZQorCiAgICAgI19fZGVsX18gPSBxdWl0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Bvc2l4cGF0aC5weSBiL0xpYi9wb3NpeHBhdGgucHkKaW5kZXggMmUzNjI1Yi4uY2I5Mzc5NiAxMDA2NDQKLS0tIGEvTGliL3Bvc2l4cGF0aC5weQorKysgYi9MaWIvcG9zaXhwYXRoLnB5CkBAIC04OCw3ICs4OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIChhLCApICsgcCkKICAgICAgICAgaWYgdmFsaWRfdHlwZXM6CiAgICAgICAgICAgICAjIE11c3QgaGF2ZSBhIG1peHR1cmUgb2YgdGV4dCBhbmQgYmluYXJ5IGRhdGEKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cy4iKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggc3RyaW5ncyBhbmQgYnl0ZXMgaW4gcGF0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvbmVudHMuIikgZnJvbSBOb25lCiAgICAgICAgIHJhaXNlCiAgICAgcmV0dXJuIHBhdGgKIApkaWZmIC0tZ2l0IGEvTGliL3Byb2ZpbGUucHkgYi9MaWIvcHJvZmlsZS5weQppbmRleCAyOTdlMzJkLi43NDNlNzdkIDEwMDc1NQotLS0gYS9MaWIvcHJvZmlsZS5weQorKysgYi9MaWIvcHJvZmlsZS5weQpAQCAtODMsMjYgKzgzLDYgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gcHJvZi5wcmludF9zdGF0cyhzb3J0KQogCi1pZiBoYXNhdHRyKG9zLCAidGltZXMiKToKLSAgICBkZWYgX2dldF90aW1lX3RpbWVzKHRpbWVyPW9zLnRpbWVzKToKLSAgICAgICAgdCA9IHRpbWVyKCkKLSAgICAgICAgcmV0dXJuIHRbMF0gKyB0WzFdCi0KLSMgVXNpbmcgZ2V0cnVzYWdlKDMpIGlzIGJldHRlciB0aGFuIGNsb2NrKDMpIGlmIGF2YWlsYWJsZToKLSMgb24gc29tZSBzeXN0ZW1zIChlLmcuIEZyZWVCU0QpLCBnZXRydXNhZ2UgaGFzIGEgaGlnaGVyIHJlc29sdXRpb24KLSMgRnVydGhlcm1vcmUsIG9uIGEgUE9TSVggc3lzdGVtLCByZXR1cm5zIG1pY3Jvc2Vjb25kcywgd2hpY2gKLSMgd3JhcCBhcm91bmQgYWZ0ZXIgMzZtaW4uCi1faGFzX3JlcyA9IDAKLXRyeToKLSAgICBpbXBvcnQgcmVzb3VyY2UKLSAgICByZXNnZXRydXNhZ2UgPSBsYW1iZGE6IHJlc291cmNlLmdldHJ1c2FnZShyZXNvdXJjZS5SVVNBR0VfU0VMRikKLSAgICBkZWYgX2dldF90aW1lX3Jlc291cmNlKHRpbWVyPXJlc2dldHJ1c2FnZSk6Ci0gICAgICAgIHQgPSB0aW1lcigpCi0gICAgICAgIHJldHVybiB0WzBdICsgdFsxXQotICAgIF9oYXNfcmVzID0gMQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQogY2xhc3MgUHJvZmlsZToKICAgICAiIiJQcm9maWxlciBjbGFzcy4KIApAQCAtMTU1LDIwICsxMzUsOCBAQAogICAgICAgICBzZWxmLmJpYXMgPSBiaWFzICAgICAjIE1hdGVyaWFsaXplIGluIGxvY2FsIGRpY3QgZm9yIGxvb2t1cCBzcGVlZC4KIAogICAgICAgICBpZiBub3QgdGltZXI6Ci0gICAgICAgICAgICBpZiBfaGFzX3JlczoKLSAgICAgICAgICAgICAgICBzZWxmLnRpbWVyID0gcmVzZ2V0cnVzYWdlCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaAotICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3RpbWUgPSBfZ2V0X3RpbWVfcmVzb3VyY2UKLSAgICAgICAgICAgIGVsaWYgaGFzYXR0cih0aW1lLCAnY2xvY2snKToKLSAgICAgICAgICAgICAgICBzZWxmLnRpbWVyID0gc2VsZi5nZXRfdGltZSA9IHRpbWUuY2xvY2sKLSAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoX2kKLSAgICAgICAgICAgIGVsaWYgaGFzYXR0cihvcywgJ3RpbWVzJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IG9zLnRpbWVzCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaAotICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3RpbWUgPSBfZ2V0X3RpbWVfdGltZXMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHNlbGYuZ2V0X3RpbWUgPSB0aW1lLnRpbWUKLSAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoX2kKKyAgICAgICAgICAgIHNlbGYudGltZXIgPSBzZWxmLmdldF90aW1lID0gdGltZS5wcm9jZXNzX3RpbWUKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2hfaQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi50aW1lciA9IHRpbWVyCiAgICAgICAgICAgICB0ID0gc2VsZi50aW1lcigpICMgdGVzdCBvdXQgdGltZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0xpYi9wc3RhdHMucHkgYi9MaWIvcHN0YXRzLnB5CmluZGV4IGJmYmFhNDEuLjZhNzc2MDUgMTAwNjQ0Ci0tLSBhL0xpYi9wc3RhdHMucHkKKysrIGIvTGliL3BzdGF0cy5weQpAQCAtNjc4LDEzICs2NzgsMTQgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcAogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGltcG9ydCBzeXMKICAgICBpZiBsZW4oc3lzLmFyZ3YpID4gMToKICAgICAgICAgaW5pdHByb2ZpbGUgPSBzeXMuYXJndlsxXQogICAgIGVsc2U6CiAgICAgICAgIGluaXRwcm9maWxlID0gTm9uZQogICAgIHRyeToKICAgICAgICAgYnJvd3NlciA9IFByb2ZpbGVCcm93c2VyKGluaXRwcm9maWxlKQorICAgICAgICBmb3IgcHJvZmlsZSBpbiBzeXMuYXJndlsyOl06CisgICAgICAgICAgICBicm93c2VyLmRvX2FkZChwcm9maWxlKQogICAgICAgICBwcmludCgiV2VsY29tZSB0byB0aGUgcHJvZmlsZSBzdGF0aXN0aWNzIGJyb3dzZXIuIiwgZmlsZT1icm93c2VyLnN0cmVhbSkKICAgICAgICAgYnJvd3Nlci5jbWRsb29wKCkKICAgICAgICAgcHJpbnQoIkdvb2RieWUuIiwgZmlsZT1icm93c2VyLnN0cmVhbSkKZGlmZiAtLWdpdCBhL0xpYi9weV9jb21waWxlLnB5IGIvTGliL3B5X2NvbXBpbGUucHkKaW5kZXggNWFkYjcwYS4uNjJkNjlhZCAxMDA2NDQKLS0tIGEvTGliL3B5X2NvbXBpbGUucHkKKysrIGIvTGliL3B5X2NvbXBpbGUucHkKQEAgLTExMCw5ICsxMTAsMTEgQEAKICAgICAiIiIKICAgICB3aXRoIHRva2VuaXplLm9wZW4oZmlsZSkgYXMgZjoKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KG9zLmZzdGF0KGYuZmlsZW5vKCkpLnN0X210aW1lKQorICAgICAgICAgICAgc3QgPSBvcy5mc3RhdChmLmZpbGVubygpKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICB0aW1lc3RhbXAgPSBpbnQob3Muc3RhdChmaWxlKS5zdF9tdGltZSkKKyAgICAgICAgICAgIHN0ID0gb3Muc3RhdChmaWxlKQorICAgICAgICB0aW1lc3RhbXAgPSBpbnQoc3Quc3RfbXRpbWUpCisgICAgICAgIHNpemUgPSBzdC5zdF9zaXplICYgMHhGRkZGRkZGRgogICAgICAgICBjb2Rlc3RyaW5nID0gZi5yZWFkKCkKICAgICB0cnk6CiAgICAgICAgIGNvZGVvYmplY3QgPSBidWlsdGlucy5jb21waWxlKGNvZGVzdHJpbmcsIGRmaWxlIG9yIGZpbGUsICdleGVjJywKQEAgLTEzOSw2ICsxNDEsNyBAQAogICAgIHdpdGggb3BlbihjZmlsZSwgJ3diJykgYXMgZmM6CiAgICAgICAgIGZjLndyaXRlKGInXDBcMFwwXDAnKQogICAgICAgICB3cl9sb25nKGZjLCB0aW1lc3RhbXApCisgICAgICAgIHdyX2xvbmcoZmMsIHNpemUpCiAgICAgICAgIG1hcnNoYWwuZHVtcChjb2Rlb2JqZWN0LCBmYykKICAgICAgICAgZmMuZmx1c2goKQogICAgICAgICBmYy5zZWVrKDAsIDApCmRpZmYgLS1naXQgYS9MaWIvcHljbGJyLnB5IGIvTGliL3B5Y2xici5weQppbmRleCA2NWU5ZmJlLi45ZWMwNWVlIDEwMDY0NAotLS0gYS9MaWIvcHljbGJyLnB5CisrKyBiL0xpYi9weWNsYnIucHkKQEAgLTM5LDggKzM5LDEwIEBACiAgICAgICAgIGxpbmVubyAtLSB0aGUgbGluZSBpbiB0aGUgZmlsZSBvbiB3aGljaCB0aGUgY2xhc3Mgc3RhdGVtZW50IG9jY3VycmVkCiAiIiIKIAoraW1wb3J0IGlvCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB0b2tlbml6ZQogZnJvbSB0b2tlbiBpbXBvcnQgTkFNRSwgREVERU5ULCBPUAogZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgpAQCAtMTM1LDE5ICsxMzcsMjQgQEAKICAgICAjIFNlYXJjaCB0aGUgcGF0aCBmb3IgdGhlIG1vZHVsZQogICAgIGYgPSBOb25lCiAgICAgaWYgaW5wYWNrYWdlIGlzIG5vdCBOb25lOgotICAgICAgICBmLCBmbmFtZSwgKF9zLCBfbSwgdHkpID0gaW1wLmZpbmRfbW9kdWxlKG1vZHVsZSwgcGF0aCkKKyAgICAgICAgc2VhcmNoX3BhdGggPSBwYXRoCiAgICAgZWxzZToKLSAgICAgICAgZiwgZm5hbWUsIChfcywgX20sIHR5KSA9IGltcC5maW5kX21vZHVsZShtb2R1bGUsIHBhdGggKyBzeXMucGF0aCkKLSAgICBpZiB0eSA9PSBpbXAuUEtHX0RJUkVDVE9SWToKLSAgICAgICAgZGljdFsnX19wYXRoX18nXSA9IFtmbmFtZV0KLSAgICAgICAgcGF0aCA9IFtmbmFtZV0gKyBwYXRoCi0gICAgICAgIGYsIGZuYW1lLCAoX3MsIF9tLCB0eSkgPSBpbXAuZmluZF9tb2R1bGUoJ19faW5pdF9fJywgW2ZuYW1lXSkKKyAgICAgICAgc2VhcmNoX3BhdGggPSBwYXRoICsgc3lzLnBhdGgKKyAgICBsb2FkZXIgPSBpbXBvcnRsaWIuZmluZF9sb2FkZXIoZnVsbG1vZHVsZSwgc2VhcmNoX3BhdGgpCisgICAgZm5hbWUgPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKGZ1bGxtb2R1bGUpCiAgICAgX21vZHVsZXNbZnVsbG1vZHVsZV0gPSBkaWN0Ci0gICAgaWYgdHkgIT0gaW1wLlBZX1NPVVJDRToKKyAgICBpZiBsb2FkZXIuaXNfcGFja2FnZShmdWxsbW9kdWxlKToKKyAgICAgICAgZGljdFsnX19wYXRoX18nXSA9IFtvcy5wYXRoLmRpcm5hbWUoZm5hbWUpXQorICAgIHRyeToKKyAgICAgICAgc291cmNlID0gbG9hZGVyLmdldF9zb3VyY2UoZnVsbG1vZHVsZSkKKyAgICAgICAgaWYgc291cmNlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gZGljdAorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIEltcG9ydEVycm9yKToKICAgICAgICAgIyBub3QgUHl0aG9uIHNvdXJjZSwgY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGlzIG1vZHVsZQotICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgcmV0dXJuIGRpY3QKIAorICAgIGYgPSBpby5TdHJpbmdJTyhzb3VyY2UpCisKICAgICBzdGFjayA9IFtdICMgc3RhY2sgb2YgKGNsYXNzLCBpbmRlbnQpIHBhaXJzCiAKICAgICBnID0gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKGYucmVhZGxpbmUpCmRpZmYgLS1naXQgYS9MaWIvcHlkb2MucHkgYi9MaWIvcHlkb2MucHkKaW5kZXggMzc2MTZmYi4uZmE1MzFlOSAxMDA3NTUKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtMSw3ICsxLDcgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICIiIkdlbmVyYXRlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGluIEhUTUwgb3IgdGV4dCBmb3IgaW50ZXJhY3RpdmUgdXNlLgogCi1JbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCBkbyAiZnJvbSBweWRvYyBpbXBvcnQgaGVscCIgdG8gcHJvdmlkZSBvbmxpbmUKK0luIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGRvICJmcm9tIHB5ZG9jIGltcG9ydCBoZWxwIiB0byBwcm92aWRlCiBoZWxwLiAgQ2FsbGluZyBoZWxwKHRoaW5nKSBvbiBhIFB5dGhvbiBvYmplY3QgZG9jdW1lbnRzIHRoZSBvYmplY3QuCiAKIE9yLCBhdCB0aGUgc2hlbGwgY29tbWFuZCBsaW5lIG91dHNpZGUgb2YgUHl0aG9uOgpAQCAtMjIsMTEgKzIyLDYgQEAKIG9wZW4gYSBXZWIgYnJvd3NlciB0byBpbnRlcmFjdGl2ZWx5IGJyb3dzZSBkb2N1bWVudGF0aW9uLiAgVGhlIC1wIG9wdGlvbgogY2FuIGJlIHVzZWQgd2l0aCB0aGUgLWIgb3B0aW9uIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgc2VydmVyIHBvcnQuCiAKLUZvciBwbGF0Zm9ybXMgd2l0aG91dCBhIGNvbW1hbmQgbGluZSwgInB5ZG9jIC1nIiBzdGFydHMgdGhlIEhUVFAgc2VydmVyCi1hbmQgYWxzbyBwb3BzIHVwIGEgbGl0dGxlIHdpbmRvdyBmb3IgY29udHJvbGxpbmcgaXQuICBUaGlzIG9wdGlvbiBpcwotZGVwcmVjYXRlZCwgc2luY2UgdGhlIHNlcnZlciBjYW4gbm93IGJlIGNvbnRyb2xsZWQgZGlyZWN0bHkgZnJvbSBIVFRQCi1jbGllbnRzLgotCiBSdW4gInB5ZG9jIC13IDxuYW1lPiIgdG8gd3JpdGUgb3V0IHRoZSBIVE1MIGRvY3VtZW50YXRpb24gZm9yIGEgbW9kdWxlCiB0byBhIGZpbGUgbmFtZWQgIjxuYW1lPi5odG1sIi4KIApAQCAtNDIsNyArMzcsNiBAQAogX19hdXRob3JfXyA9ICJLYS1QaW5nIFllZSA8cGluZ0BsZncub3JnPiIKIF9fZGF0ZV9fID0gIjI2IEZlYnJ1YXJ5IDIwMDEiCiAKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbiQiCiBfX2NyZWRpdHNfXyA9ICIiIkd1aWRvIHZhbiBSb3NzdW0sIGZvciBhbiBleGNlbGxlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuCiBUb21teSBCdXJuZXR0ZSwgdGhlIG9yaWdpbmFsIGNyZWF0b3Igb2YgbWFucHkuCiBQYXVsIFByZXNjb2QsIGZvciBhbGwgaGlzIHdvcmsgb24gb25saW5laGVscC4KQEAgLTU5LDYgKzUzLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBpbwogaW1wb3J0IG9zCkBAIC0xNjgsMTIgKzE2MywxMiBAQAogCiBkZWYgdmlzaWJsZW5hbWUobmFtZSwgYWxsPU5vbmUsIG9iaj1Ob25lKToKICAgICAiIiJEZWNpZGUgd2hldGhlciB0byBzaG93IGRvY3VtZW50YXRpb24gb24gYSB2YXJpYWJsZS4iIiIKLSAgICAjIENlcnRhaW4gc3BlY2lhbCBuYW1lcyBhcmUgcmVkdW5kYW50LgotICAgIF9oaWRkZW5fbmFtZXMgPSAoJ19fYnVpbHRpbnNfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fcGF0aF9fJywKLSAgICAgICAgICAgICAgICAgICAgICdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fc2xvdHNfXycsICdfX3BhY2thZ2VfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX19jYWNoZWRfXycsICdfX2F1dGhvcl9fJywgJ19fY3JlZGl0c19fJywgJ19fZGF0ZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICdfX3ZlcnNpb25fXycpCi0gICAgaWYgbmFtZSBpbiBfaGlkZGVuX25hbWVzOiByZXR1cm4gMAorICAgICMgQ2VydGFpbiBzcGVjaWFsIG5hbWVzIGFyZSByZWR1bmRhbnQgb3IgaW50ZXJuYWwuCisgICAgaWYgbmFtZSBpbiB7J19fYXV0aG9yX18nLCAnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19jcmVkaXRzX18nLAorICAgICAgICAgICAgICAgICdfX2RhdGVfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19faW5pdGlhbGl6aW5nX18nLAorICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJywgJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLAorICAgICAgICAgICAgICAgICdfX3BhdGhfXycsICdfX3F1YWxuYW1lX18nLCAnX19zbG90c19fJywgJ19fdmVyc2lvbl9fJ306CisgICAgICAgIHJldHVybiAwCiAgICAgIyBQcml2YXRlIG5hbWVzIGFyZSBoaWRkZW4sIGJ1dCBzcGVjaWFsIG5hbWVzIGFyZSBkaXNwbGF5ZWQuCiAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfXycpIGFuZCBuYW1lLmVuZHN3aXRoKCdfXycpOiByZXR1cm4gMQogICAgICMgTmFtZWR0dXBsZXMgaGF2ZSBwdWJsaWMgZmllbGRzIGFuZCBtZXRob2RzIHdpdGggYSBzaW5nbGUgbGVhZGluZyB1bmRlcnNjb3JlCkBAIC0yMjYsMjAgKzIyMSwzNCBAQAogICAgIG10aW1lID0gb3Muc3RhdChmaWxlbmFtZSkuc3RfbXRpbWUKICAgICBsYXN0dXBkYXRlLCByZXN1bHQgPSBjYWNoZS5nZXQoZmlsZW5hbWUsIChOb25lLCBOb25lKSkKICAgICBpZiBsYXN0dXBkYXRlIGlzIE5vbmUgb3IgbGFzdHVwZGF0ZSA8IG10aW1lOgotICAgICAgICBpbmZvID0gaW5zcGVjdC5nZXRtb2R1bGVpbmZvKGZpbGVuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmaWxlID0gdG9rZW5pemUub3BlbihmaWxlbmFtZSkKICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICAjIG1vZHVsZSBjYW4ndCBiZSBvcGVuZWQsIHNvIHNraXAgaXQKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIGluZm8gYW5kICdiJyBpbiBpbmZvWzJdOiAjIGJpbmFyeSBtb2R1bGVzIGhhdmUgdG8gYmUgaW1wb3J0ZWQKLSAgICAgICAgICAgIHRyeTogbW9kdWxlID0gaW1wLmxvYWRfbW9kdWxlKCdfX3RlbXBfXycsIGZpbGUsIGZpbGVuYW1lLCBpbmZvWzE6XSkKLSAgICAgICAgICAgIGV4Y2VwdDogcmV0dXJuIE5vbmUKKyAgICAgICAgYmluYXJ5X3N1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XQorICAgICAgICBiaW5hcnlfc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNbOl0KKyAgICAgICAgaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHgpIGZvciB4IGluIGJpbmFyeV9zdWZmaXhlcyk6CisgICAgICAgICAgICAjIGJpbmFyeSBtb2R1bGVzIGhhdmUgdG8gYmUgaW1wb3J0ZWQKKyAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHgpIGZvciB4IGluCisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpOgorICAgICAgICAgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIoJ19fdGVtcF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoJ19fdGVtcF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfX3RlbXBfXycpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIHJlc3VsdCA9IChtb2R1bGUuX19kb2NfXyBvciAnJykuc3BsaXRsaW5lcygpWzBdCiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ19fdGVtcF9fJ10KLSAgICAgICAgZWxzZTogIyB0ZXh0IG1vZHVsZXMgY2FuIGJlIGRpcmVjdGx5IGV4YW1pbmVkCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHRleHQgbW9kdWxlcyBjYW4gYmUgZGlyZWN0bHkgZXhhbWluZWQKICAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJjZV9zeW5vcHNpcyhmaWxlKQogICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisKICAgICAgICAgY2FjaGVbZmlsZW5hbWVdID0gKG10aW1lLCByZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC0zMDUsOSArMzE0LDggQEAKICAgICAgICAgZWxpZiBleGMgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHZhbHVlLmZpbGVuYW1lLCBpbmZvKQotICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgZXh0cmFjdF90Yih0YilbLTFdWzJdPT0nc2FmZWltcG9ydCc6Ci0gICAgICAgICAgICAjIFRoZSBpbXBvcnQgZXJyb3Igb2NjdXJyZWQgZGlyZWN0bHkgaW4gdGhpcyBmdW5jdGlvbiwKLSAgICAgICAgICAgICMgd2hpY2ggbWVhbnMgdGhlcmUgaXMgbm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCisgICAgICAgIGVsaWYgZXhjIGlzIEltcG9ydEVycm9yIGFuZCB2YWx1ZS5uYW1lID09IHBhdGg6CisgICAgICAgICAgICAjIE5vIHN1Y2ggbW9kdWxlIGluIHRoZSBwYXRoLgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIGltcG9ydGluZyBwcm9jZXNzLgpAQCAtMzYxLDcgKzM2OSw3IEBACiAKICAgICAgICAgZG9jbG9jID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTkRPQ1MiLCBzZWxmLlBZVEhPTkRPQ1MpCiAKLSAgICAgICAgYmFzZWRpciA9IG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAorICAgICAgICBiYXNlZGlyID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAibGliIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICBpZiAoaXNpbnN0YW5jZShvYmplY3QsIHR5cGUob3MpKSBhbmQKICAgICAgICAgICAgIChvYmplY3QuX19uYW1lX18gaW4gKCdlcnJubycsICdleGNlcHRpb25zJywgJ2djJywgJ2ltcCcsCkBAIC05NjMsNiArOTcxLDkgQEAKICAgICAgICAgbW9kcGtncyA9IFtdCiAgICAgICAgIGlmIHNoYWRvd2VkIGlzIE5vbmU6IHNoYWRvd2VkID0ge30KICAgICAgICAgZm9yIGltcG9ydGVyLCBuYW1lLCBpc3BrZyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbZGlyXSk6CisgICAgICAgICAgICBpZiBhbnkoKDB4RDgwMCA8PSBvcmQoY2gpIDw9IDB4REZGRikgZm9yIGNoIGluIG5hbWUpOgorICAgICAgICAgICAgICAgICMgaWdub3JlIGEgbW9kdWxlIGlmIGl0cyBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBtb2Rwa2dzLmFwcGVuZCgobmFtZSwgJycsIGlzcGtnLCBuYW1lIGluIHNoYWRvd2VkKSkKICAgICAgICAgICAgIHNoYWRvd2VkW25hbWVdID0gMQogCkBAIC0xODI3LDcgKzE4MzgsNyBAQAogCiAgICAgZGVmIGludHJvKHNlbGYpOgogICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnJycKLVdlbGNvbWUgdG8gUHl0aG9uICVzISAgVGhpcyBpcyB0aGUgb25saW5lIGhlbHAgdXRpbGl0eS4KK1dlbGNvbWUgdG8gUHl0aG9uICVzISAgVGhpcyBpcyB0aGUgaW50ZXJhY3RpdmUgaGVscCB1dGlsaXR5LgogCiBJZiB0aGlzIGlzIHlvdXIgZmlyc3QgdGltZSB1c2luZyBQeXRob24sIHlvdSBzaG91bGQgZGVmaW5pdGVseSBjaGVjayBvdXQKIHRoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8lcy90dXRvcmlhbC8uCkBAIC0yMDE4LDE0ICsyMDI5LDYgQEAKICAgICAgICAgICAgIGlmIHNlbGYucXVpdDoKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICAjIFhYWCBTa2lwcGluZyB0aGlzIGZpbGUgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZwotICAgICAgICAgICAgIyB0aGF0IGNhdXNlcyBweXRob24gdG8gY3Jhc2ggd2l0aCBhIHNlZ2ZhdWx0LgotICAgICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlOTMxOQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBUT0RPIFJlbW92ZSB0aGlzIG9uY2UgdGhlIGJ1ZyBpcyBmaXhlZC4KLSAgICAgICAgICAgIGlmIG1vZG5hbWUgaW4geyd0ZXN0LmJhZHN5bnRheF9wZXAzMTIwJywgJ2JhZHN5bnRheF9wZXAzMTIwJ306Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQogICAgICAgICAgICAgaWYga2V5IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soTm9uZSwgbW9kbmFtZSwgJycpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjAzNyw3ICsyMDQwLDcgQEAKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ2dldF9zb3VyY2UnKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbG9hZGVyLmdldF9zb3VyY2UobW9kbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9uZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lcnJvcihtb2RuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTIwNzQsMjcyICsyMDc3LDYgQEAKICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScpICMgaWdub3JlIHByb2JsZW1zIGR1cmluZyBpbXBvcnQKICAgICAgICAgTW9kdWxlU2Nhbm5lcigpLnJ1bihjYWxsYmFjaywga2V5LCBvbmVycm9yPW9uZXJyb3IpCiAKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdlYiBicm93c2VyIGludGVyZmFjZQotCi1kZWYgc2VydmUocG9ydCwgY2FsbGJhY2s9Tm9uZSwgY29tcGxldGVyPU5vbmUpOgotICAgIGltcG9ydCBodHRwLnNlcnZlciwgZW1haWwubWVzc2FnZSwgc2VsZWN0Ci0KLSAgICBtc2cgPSAndGhlIHB5ZG9jLnNlcnZlKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCcKLSAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0KLSAgICBjbGFzcyBEb2NIYW5kbGVyKGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgotICAgICAgICBkZWYgc2VuZF9kb2N1bWVudChzZWxmLCB0aXRsZSwgY29udGVudHMpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpCi0gICAgICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCi0gICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShodG1sLnBhZ2UodGl0bGUsIGNvbnRlbnRzKS5lbmNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjogcGFzcwotCi0gICAgICAgIGRlZiBkb19HRVQoc2VsZik6Ci0gICAgICAgICAgICBwYXRoID0gc2VsZi5wYXRoCi0gICAgICAgICAgICBpZiBwYXRoWy01Ol0gPT0gJy5odG1sJzogcGF0aCA9IHBhdGhbOi01XQotICAgICAgICAgICAgaWYgcGF0aFs6MV0gPT0gJy8nOiBwYXRoID0gcGF0aFsxOl0KLSAgICAgICAgICAgIGlmIHBhdGggYW5kIHBhdGggIT0gJy4nOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb2JqID0gbG9jYXRlKHBhdGgsIGZvcmNlbG9hZD0xKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFcnJvckR1cmluZ0ltcG9ydCBhcyB2YWx1ZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2RvY3VtZW50KHBhdGgsIGh0bWwuZXNjYXBlKHN0cih2YWx1ZSkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBvYmo6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChkZXNjcmliZShvYmopLCBodG1sLmRvY3VtZW50KG9iaiwgcGF0aCkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2RvY3VtZW50KHBhdGgsCi0nbm8gUHl0aG9uIGRvY3VtZW50YXRpb24gZm91bmQgZm9yICVzJyAlIHJlcHIocGF0aCkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGhlYWRpbmcgPSBodG1sLmhlYWRpbmcoCi0nPGJpZz48YmlnPjxzdHJvbmc+UHl0aG9uOiBJbmRleCBvZiBNb2R1bGVzPC9zdHJvbmc+PC9iaWc+PC9iaWc+JywKLScjZmZmZmZmJywgJyM3Nzk5ZWUnKQotICAgICAgICAgICAgICAgIGRlZiBibHRpbmxpbmsobmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPGEgaHJlZj0iJXMuaHRtbCI+JXM8L2E+JyAlIChuYW1lLCBuYW1lKQotICAgICAgICAgICAgICAgIG5hbWVzID0gW3ggZm9yIHggaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzIGlmIHggIT0gJ19fbWFpbl9fJ10KLSAgICAgICAgICAgICAgICBjb250ZW50cyA9IGh0bWwubXVsdGljb2x1bW4obmFtZXMsIGJsdGlubGluaykKLSAgICAgICAgICAgICAgICBpbmRpY2VzID0gWyc8cD4nICsgaHRtbC5iaWdzZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICAnQnVpbHQtaW4gTW9kdWxlcycsICcjZmZmZmZmJywgJyNlZTc3YWEnLCBjb250ZW50cyldCi0KLSAgICAgICAgICAgICAgICBzZWVuID0ge30KLSAgICAgICAgICAgICAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgotICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLmFwcGVuZChodG1sLmluZGV4KGRpciwgc2VlbikpCi0gICAgICAgICAgICAgICAgY29udGVudHMgPSBoZWFkaW5nICsgJyAnLmpvaW4oaW5kaWNlcykgKyAnJyc8cCBhbGlnbj1yaWdodD4KLTxmb250IGNvbG9yPSIjOTA5MDkwIiBmYWNlPSJoZWx2ZXRpY2EsIGFyaWFsIj48c3Ryb25nPgotcHlkb2M8L3N0cm9uZz4gYnkgS2EtUGluZyBZZWUgJmx0O3BpbmdAbGZ3Lm9yZyZndDs8L2ZvbnQ+JycnCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2RvY3VtZW50KCdJbmRleCBvZiBNb2R1bGVzJywgY29udGVudHMpCi0KLSAgICAgICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsICphcmdzKTogcGFzcwotCi0gICAgY2xhc3MgRG9jU2VydmVyKGh0dHAuc2VydmVyLkhUVFBTZXJ2ZXIpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgY2FsbGJhY2spOgotICAgICAgICAgICAgaG9zdCA9ICdsb2NhbGhvc3QnCi0gICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSAoaG9zdCwgcG9ydCkKLSAgICAgICAgICAgIHNlbGYudXJsID0gJ2h0dHA6Ly8lczolZC8nICUgKGhvc3QsIHBvcnQpCi0gICAgICAgICAgICBzZWxmLmNhbGxiYWNrID0gY2FsbGJhY2sKLSAgICAgICAgICAgIHNlbGYuYmFzZS5fX2luaXRfXyhzZWxmLCBzZWxmLmFkZHJlc3MsIHNlbGYuaGFuZGxlcikKLQotICAgICAgICBkZWYgc2VydmVfdW50aWxfcXVpdChzZWxmKToKLSAgICAgICAgICAgIGltcG9ydCBzZWxlY3QKLSAgICAgICAgICAgIHNlbGYucXVpdCA9IEZhbHNlCi0gICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5xdWl0OgotICAgICAgICAgICAgICAgIHJkLCB3ciwgZXggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNvY2tldC5maWxlbm8oKV0sIFtdLCBbXSwgMSkKLSAgICAgICAgICAgICAgICBpZiByZDogc2VsZi5oYW5kbGVfcmVxdWVzdCgpCi0gICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHNlcnZlcl9hY3RpdmF0ZShzZWxmKToKLSAgICAgICAgICAgIHNlbGYuYmFzZS5zZXJ2ZXJfYWN0aXZhdGUoc2VsZikKLSAgICAgICAgICAgIGlmIHNlbGYuY2FsbGJhY2s6IHNlbGYuY2FsbGJhY2soc2VsZikKLQotICAgIERvY1NlcnZlci5iYXNlID0gaHR0cC5zZXJ2ZXIuSFRUUFNlcnZlcgotICAgIERvY1NlcnZlci5oYW5kbGVyID0gRG9jSGFuZGxlcgotICAgIERvY0hhbmRsZXIuTWVzc2FnZUNsYXNzID0gZW1haWwubWVzc2FnZS5NZXNzYWdlCi0gICAgdHJ5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBEb2NTZXJ2ZXIocG9ydCwgY2FsbGJhY2spLnNlcnZlX3VudGlsX3F1aXQoKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBzZWxlY3QuZXJyb3IpOgotICAgICAgICAgICAgcGFzcwotICAgIGZpbmFsbHk6Ci0gICAgICAgIGlmIGNvbXBsZXRlcjogY29tcGxldGVyKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBncmFwaGljYWwgaW50ZXJmYWNlCi0KLWRlZiBndWkoKToKLSAgICAiIiJHcmFwaGljYWwgaW50ZXJmYWNlIChzdGFydHMgV2ViIHNlcnZlciBhbmQgcG9wcyB1cCBhIGNvbnRyb2wgd2luZG93KS4iIiIKLQotICAgIG1zZyA9ICgndGhlIHB5ZG9jLmd1aSgpIGZ1bmN0aW9uIGFuZCAicHlkb2MgLWciIG9wdGlvbiBhcmUgZGVwcmVjYXRlZFxuJywKLSAgICAgICAgICAgJ3VzZSAicHlkb2MuYnJvd3NlKCkgZnVuY3Rpb24gYW5kICJweWRvYyAtYiIgb3B0aW9uIGluc3RlYWQuJykKLSAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0KLSAgICBjbGFzcyBHVUk6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3csIHBvcnQ9NzQ2NCk6Ci0gICAgICAgICAgICBzZWxmLndpbmRvdyA9IHdpbmRvdwotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCi0gICAgICAgICAgICBzZWxmLnNjYW5uZXIgPSBOb25lCi0KLSAgICAgICAgICAgIGltcG9ydCB0a2ludGVyCi0gICAgICAgICAgICBzZWxmLnNlcnZlcl9mcm0gPSB0a2ludGVyLkZyYW1lKHdpbmRvdykKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsID0gdGtpbnRlci5MYWJlbChzZWxmLnNlcnZlcl9mcm0sCi0gICAgICAgICAgICAgICAgdGV4dD0nU3RhcnRpbmcgc2VydmVyLi4uXG4gJykKLSAgICAgICAgICAgIHNlbGYub3Blbl9idG4gPSB0a2ludGVyLkJ1dHRvbihzZWxmLnNlcnZlcl9mcm0sCi0gICAgICAgICAgICAgICAgdGV4dD0nb3BlbiBicm93c2VyJywgY29tbWFuZD1zZWxmLm9wZW4sIHN0YXRlPSdkaXNhYmxlZCcpCi0gICAgICAgICAgICBzZWxmLnF1aXRfYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J3F1aXQgc2VydmluZycsIGNvbW1hbmQ9c2VsZi5xdWl0LCBzdGF0ZT0nZGlzYWJsZWQnKQotCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9mcm0gPSB0a2ludGVyLkZyYW1lKHdpbmRvdykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibCA9IHRraW50ZXIuTGFiZWwoc2VsZi5zZWFyY2hfZnJtLCB0ZXh0PSdTZWFyY2ggZm9yJykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudCA9IHRraW50ZXIuRW50cnkoc2VsZi5zZWFyY2hfZnJtKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZW50LmJpbmQoJzxSZXR1cm4+Jywgc2VsZi5zZWFyY2gpCi0gICAgICAgICAgICBzZWxmLnN0b3BfYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5zZWFyY2hfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J3N0b3AnLCBwYWR5PTAsIGNvbW1hbmQ9c2VsZi5zdG9wLCBzdGF0ZT0nZGlzYWJsZWQnKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICAgICAgIyBUcnlpbmcgdG8gaGlkZSBhbmQgc2hvdyB0aGlzIGJ1dHRvbiBjcmFzaGVzIHVuZGVyIFdpbmRvd3MuCi0gICAgICAgICAgICAgICAgc2VsZi5zdG9wX2J0bi5wYWNrKHNpZGU9J3JpZ2h0JykKLQotICAgICAgICAgICAgc2VsZi53aW5kb3cudGl0bGUoJ3B5ZG9jJykKLSAgICAgICAgICAgIHNlbGYud2luZG93LnByb3RvY29sKCdXTV9ERUxFVEVfV0lORE9XJywgc2VsZi5xdWl0KQotICAgICAgICAgICAgc2VsZi50aXRsZV9sYmwucGFjayhzaWRlPSd0b3AnLCBmaWxsPSd4JykKLSAgICAgICAgICAgIHNlbGYub3Blbl9idG4ucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5xdWl0X2J0bi5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfZnJtLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0KLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5wYWNrKHNpZGU9J2xlZnQnKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZW50LnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd4JywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9mcm0ucGFjayhzaWRlPSd0b3AnLCBmaWxsPSd4JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5mb2N1c19zZXQoKQotCi0gICAgICAgICAgICBmb250ID0gKCdoZWx2ZXRpY2EnLCBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBhbmQgOCBvciAxMCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdCA9IHRraW50ZXIuTGlzdGJveCh3aW5kb3csIGZvbnQ9Zm9udCwgaGVpZ2h0PTYpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuYmluZCgnPEJ1dHRvbi0xPicsIHNlbGYuc2VsZWN0KQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmJpbmQoJzxEb3VibGUtQnV0dG9uLTE+Jywgc2VsZi5nb3RvKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfc2NyID0gdGtpbnRlci5TY3JvbGxiYXIod2luZG93LAotICAgICAgICAgICAgICAgIG9yaWVudD0ndmVydGljYWwnLCBjb21tYW5kPXNlbGYucmVzdWx0X2xzdC55dmlldykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5jb25maWcoeXNjcm9sbGNvbW1hbmQ9c2VsZi5yZXN1bHRfc2NyLnNldCkKLQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLmdvdG9fYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5yZXN1bHRfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J2dvIHRvIHNlbGVjdGVkJywgY29tbWFuZD1zZWxmLmdvdG8pCi0gICAgICAgICAgICBzZWxmLmhpZGVfYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5yZXN1bHRfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J2hpZGUgcmVzdWx0cycsIGNvbW1hbmQ9c2VsZi5oaWRlKQotICAgICAgICAgICAgc2VsZi5nb3RvX2J0bi5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSd4JywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLmhpZGVfYnRuLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd4JywgZXhwYW5kPTEpCi0KLSAgICAgICAgICAgIHNlbGYud2luZG93LnVwZGF0ZSgpCi0gICAgICAgICAgICBzZWxmLm1pbndpZHRoID0gc2VsZi53aW5kb3cud2luZm9fd2lkdGgoKQotICAgICAgICAgICAgc2VsZi5taW5oZWlnaHQgPSBzZWxmLndpbmRvdy53aW5mb19oZWlnaHQoKQotICAgICAgICAgICAgc2VsZi5iaWdtaW5oZWlnaHQgPSAoc2VsZi5zZXJ2ZXJfZnJtLndpbmZvX3JlcWhlaWdodCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VhcmNoX2ZybS53aW5mb19yZXFoZWlnaHQoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3Qud2luZm9fcmVxaGVpZ2h0KCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRfZnJtLndpbmZvX3JlcWhlaWdodCgpKQotICAgICAgICAgICAgc2VsZi5iaWd3aWR0aCwgc2VsZi5iaWdoZWlnaHQgPSBzZWxmLm1pbndpZHRoLCBzZWxmLmJpZ21pbmhlaWdodAotICAgICAgICAgICAgc2VsZi5leHBhbmRlZCA9IDAKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX2dlb21ldHJ5KCclZHglZCcgJSAoc2VsZi5taW53aWR0aCwgc2VsZi5taW5oZWlnaHQpKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fbWluc2l6ZShzZWxmLm1pbndpZHRoLCBzZWxmLm1pbmhlaWdodCkKLSAgICAgICAgICAgIHNlbGYud2luZG93LnRrLndpbGxkaXNwYXRjaCgpCi0KLSAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQoCi0gICAgICAgICAgICAgICAgdGFyZ2V0PXNlcnZlLCBhcmdzPShwb3J0LCBzZWxmLnJlYWR5LCBzZWxmLnF1aXQpKS5zdGFydCgpCi0KLSAgICAgICAgZGVmIHJlYWR5KHNlbGYsIHNlcnZlcik6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlcgotICAgICAgICAgICAgc2VsZi50aXRsZV9sYmwuY29uZmlnKAotICAgICAgICAgICAgICAgIHRleHQ9J1B5dGhvbiBkb2N1bWVudGF0aW9uIHNlcnZlciBhdFxuJyArIHNlcnZlci51cmwpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuLmNvbmZpZyhzdGF0ZT0nbm9ybWFsJykKLSAgICAgICAgICAgIHNlbGYucXVpdF9idG4uY29uZmlnKHN0YXRlPSdub3JtYWwnKQotCi0gICAgICAgIGRlZiBvcGVuKHNlbGYsIGV2ZW50PU5vbmUsIHVybD1Ob25lKToKLSAgICAgICAgICAgIHVybCA9IHVybCBvciBzZWxmLnNlcnZlci51cmwKLSAgICAgICAgICAgIGltcG9ydCB3ZWJicm93c2VyCi0gICAgICAgICAgICB3ZWJicm93c2VyLm9wZW4odXJsKQotCi0gICAgICAgIGRlZiBxdWl0KHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucXVpdCA9IDEKLSAgICAgICAgICAgIHNlbGYud2luZG93LnF1aXQoKQotCi0gICAgICAgIGRlZiBzZWFyY2goc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgICAgICBrZXkgPSBzZWxmLnNlYXJjaF9lbnQuZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc3RvcF9idG4ucGFjayhzaWRlPSdyaWdodCcpCi0gICAgICAgICAgICBzZWxmLnN0b3BfYnRuLmNvbmZpZyhzdGF0ZT0nbm9ybWFsJykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5jb25maWcodGV4dD0nU2VhcmNoaW5nIGZvciAiJXMiLi4uJyAlIGtleSkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfbGJsLnBhY2soc2lkZT0nbGVmdCcpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuZGVsZXRlKDAsICdlbmQnKQotICAgICAgICAgICAgc2VsZi5nb3RvX2J0bi5jb25maWcoc3RhdGU9J2Rpc2FibGVkJykKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kKCkKLQotICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZwotICAgICAgICAgICAgaWYgc2VsZi5zY2FubmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lci5xdWl0ID0gMQotICAgICAgICAgICAgc2VsZi5zY2FubmVyID0gTW9kdWxlU2Nhbm5lcigpCi0gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNjYW5uZXIucnVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnVwZGF0ZSwga2V5LCBzZWxmLmRvbmUpKS5zdGFydCgpCi0KLSAgICAgICAgZGVmIHVwZGF0ZShzZWxmLCBwYXRoLCBtb2RuYW1lLCBkZXNjKToKLSAgICAgICAgICAgIGlmIG1vZG5hbWVbLTk6XSA9PSAnLl9faW5pdF9fJzoKLSAgICAgICAgICAgICAgICBtb2RuYW1lID0gbW9kbmFtZVs6LTldICsgJyAocGFja2FnZSknCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuaW5zZXJ0KCdlbmQnLAotICAgICAgICAgICAgICAgIG1vZG5hbWUgKyAnIC0gJyArIChkZXNjIG9yICcobm8gZGVzY3JpcHRpb24pJykpCi0KLSAgICAgICAgZGVmIHN0b3Aoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgICAgICBpZiBzZWxmLnNjYW5uZXI6Ci0gICAgICAgICAgICAgICAgc2VsZi5zY2FubmVyLnF1aXQgPSAxCi0gICAgICAgICAgICAgICAgc2VsZi5zY2FubmVyID0gTm9uZQotCi0gICAgICAgIGRlZiBkb25lKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zY2FubmVyID0gTm9uZQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfbGJsLmNvbmZpZyh0ZXh0PSdTZWFyY2ggZm9yJykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5wYWNrKHNpZGU9J2xlZnQnKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZW50LnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd4JywgZXhwYW5kPTEpCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzogc2VsZi5zdG9wX2J0bi5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0bi5jb25maWcoc3RhdGU9J2Rpc2FibGVkJykKLQotICAgICAgICBkZWYgc2VsZWN0KHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZi5nb3RvX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0KLSAgICAgICAgZGVmIGdvdG8oc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgICAgICBzZWxlY3Rpb24gPSBzZWxmLnJlc3VsdF9sc3QuY3Vyc2VsZWN0aW9uKCkKLSAgICAgICAgICAgIGlmIHNlbGVjdGlvbjoKLSAgICAgICAgICAgICAgICBtb2RuYW1lID0gc2VsZi5yZXN1bHRfbHN0LmdldChzZWxlY3Rpb25bMF0pLnNwbGl0KClbMF0KLSAgICAgICAgICAgICAgICBzZWxmLm9wZW4odXJsPXNlbGYuc2VydmVyLnVybCArIG1vZG5hbWUgKyAnLmh0bWwnKQotCi0gICAgICAgIGRlZiBjb2xsYXBzZShzZWxmKToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmV4cGFuZGVkOiByZXR1cm4KLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybS5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfc2NyLmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuYmlnd2lkdGggPSBzZWxmLndpbmRvdy53aW5mb193aWR0aCgpCi0gICAgICAgICAgICBzZWxmLmJpZ2hlaWdodCA9IHNlbGYud2luZG93LndpbmZvX2hlaWdodCgpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5taW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkID0gMAotCi0gICAgICAgIGRlZiBleHBhbmQoc2VsZik6Ci0gICAgICAgICAgICBpZiBzZWxmLmV4cGFuZGVkOiByZXR1cm4KLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybS5wYWNrKHNpZGU9J2JvdHRvbScsIGZpbGw9J3gnKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfc2NyLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd5JykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5wYWNrKHNpZGU9J3RvcCcsIGZpbGw9J2JvdGgnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX2dlb21ldHJ5KCclZHglZCcgJSAoc2VsZi5iaWd3aWR0aCwgc2VsZi5iaWdoZWlnaHQpKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fbWluc2l6ZShzZWxmLm1pbndpZHRoLCBzZWxmLmJpZ21pbmhlaWdodCkKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWQgPSAxCi0KLSAgICAgICAgZGVmIGhpZGUoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgc2VsZi5jb2xsYXBzZSgpCi0KLSAgICBpbXBvcnQgdGtpbnRlcgotICAgIHRyeToKLSAgICAgICAgcm9vdCA9IHRraW50ZXIuVGsoKQotICAgICAgICAjIFRrIHdpbGwgY3Jhc2ggaWYgcHl0aG9udy5leGUgaGFzIGFuIFhQIC5tYW5pZmVzdAotICAgICAgICAjIGZpbGUgYW5kIHRoZSByb290IGhhcyBpcyBub3QgZGVzdHJveWVkIGV4cGxpY2l0bHkuCi0gICAgICAgICMgSWYgdGhlIHByb2JsZW0gaXMgZXZlciBmaXhlZCBpbiBUaywgdGhlIGV4cGxpY2l0Ci0gICAgICAgICMgZGVzdHJveSBjYW4gZ28uCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGd1aSA9IEdVSShyb290KQotICAgICAgICAgICAgcm9vdC5tYWlubG9vcCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICByb290LmRlc3Ryb3koKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcGFzcwotCi0KICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGVuaGFuY2VkIFdlYiBicm93c2VyIGludGVyZmFjZQogCiBkZWYgX3N0YXJ0X3NlcnZlcih1cmxoYW5kbGVyLCBwb3J0KToKQEAgLTI3OTYsMTUgKzI1MzMsMTIgQEAKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsICcuJykKIAogICAgIHRyeToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAnYmdrOnA6dycpCisgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2JrOnA6dycpCiAgICAgICAgIHdyaXRpbmcgPSBGYWxzZQogICAgICAgICBzdGFydF9zZXJ2ZXIgPSBGYWxzZQogICAgICAgICBvcGVuX2Jyb3dzZXIgPSBGYWxzZQogICAgICAgICBwb3J0ID0gTm9uZQogICAgICAgICBmb3Igb3B0LCB2YWwgaW4gb3B0czoKLSAgICAgICAgICAgIGlmIG9wdCA9PSAnLWcnOgotICAgICAgICAgICAgICAgIGd1aSgpCi0gICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBpZiBvcHQgPT0gJy1iJzoKICAgICAgICAgICAgICAgICBzdGFydF9zZXJ2ZXIgPSBUcnVlCiAgICAgICAgICAgICAgICAgb3Blbl9icm93c2VyID0gVHJ1ZQpAQCAtMjgxNyw4ICsyNTUxLDggQEAKICAgICAgICAgICAgIGlmIG9wdCA9PSAnLXcnOgogICAgICAgICAgICAgICAgIHdyaXRpbmcgPSBUcnVlCiAKLSAgICAgICAgaWYgc3RhcnRfc2VydmVyID09IFRydWU6Ci0gICAgICAgICAgICBpZiBwb3J0ID09IE5vbmU6CisgICAgICAgIGlmIHN0YXJ0X3NlcnZlcjoKKyAgICAgICAgICAgIGlmIHBvcnQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBwb3J0ID0gMAogICAgICAgICAgICAgYnJvd3NlKHBvcnQsIG9wZW5fYnJvd3Nlcj1vcGVuX2Jyb3dzZXIpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTI4NjUsOSArMjU5OSw2IEBACiAgICAgdG8gaW50ZXJhY3RpdmVseSBicm93c2UgZG9jdW1lbnRhdGlvbi4gIFRoZSAtcCBvcHRpb24gY2FuIGJlIHVzZWQgd2l0aAogICAgIHRoZSAtYiBvcHRpb24gdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzZXJ2ZXIgcG9ydC4KIAote2NtZH0gLWcKLSAgICBEZXByZWNhdGVkLgotCiB7Y21kfSAtdyA8bmFtZT4gLi4uCiAgICAgV3JpdGUgb3V0IHRoZSBIVE1MIGRvY3VtZW50YXRpb24gZm9yIGEgbW9kdWxlIHRvIGEgZmlsZSBpbiB0aGUgY3VycmVudAogICAgIGRpcmVjdG9yeS4gIElmIDxuYW1lPiBjb250YWlucyBhICd7c2VwfScsIGl0IGlzIHRyZWF0ZWQgYXMgYSBmaWxlbmFtZTsgaWYKZGlmZiAtLWdpdCBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weSBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQppbmRleCAwOGE5ZTdjLi42MmE1NGE5IDEwMDY0NAotLS0gYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKKysrIGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CkBAIC0xLDE2ICsxLDE3IEBACi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFRodSBGZWIgMjMgMTg6Mzc6NTQgMjAxMgorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU2F0IEF1ZyAyNSAxMjoxMjo0NSAyMDEyCiB0b3BpY3MgPSB7J2Fzc2VydCc6ICdcblRoZSBgYGFzc2VydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2VydCBzdGF0ZW1lbnRzIGFyZSBhIGNvbnZlbmllbnQgd2F5IHRvIGluc2VydCBkZWJ1Z2dpbmcgYXNzZXJ0aW9uc1xuaW50byBhIHByb2dyYW06XG5cbiAgIGFzc2VydF9zdG10IDo6PSAiYXNzZXJ0IiBleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbl1cblxuVGhlIHNpbXBsZSBmb3JtLCBgYGFzc2VydCBleHByZXNzaW9uYGAsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCBgYGFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjJgYCwgaXMgZXF1aXZhbGVudFxudG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgaWYgbm90IGV4cHJlc3Npb24xOiByYWlzZSBBc3NlcnRpb25FcnJvcihleHByZXNzaW9uMilcblxuVGhlc2UgZXF1aXZhbGVuY2VzIGFzc3VtZSB0aGF0IGBgX19kZWJ1Z19fYGAgYW5kIGBgQXNzZXJ0aW9uRXJyb3JgYFxucmVmZXIgdG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgYGBfX2RlYnVnX19gYCBpcyBgYFRydWVgYCB1bmRlclxubm9ybWFsIGNpcmN1bXN0YW5jZXMsIGBgRmFsc2VgYCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWRcbihjb21tYW5kIGxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGVcbmZvciBhbiBhc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlXG50aW1lLiAgTm90ZSB0aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGVcbmV4cHJlc3Npb24gdGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzXG5wYXJ0IG9mIHRoZSBzdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gYGBfX2RlYnVnX19gYCBhcmUgaWxsZWdhbC4gIFRoZSB2YWx1ZSBmb3IgdGhlIGJ1aWx0LWluXG52YXJpYWJsZSBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGludGVycHJldGVyIHN0YXJ0cy5cbicsCiAgJ2Fzc2lnbm1lbnQnOiAnXG5Bc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCB0b1xubW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuXG4gICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbiAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgICAgICAgICB8ICIoIiB0YXJnZXRfbGlzdCAiKSJcbiAgICAgICAgICAgICAgfCAiWyIgdGFyZ2V0X2xpc3QgIl0iXG4gICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4gICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4gICAgICAgICAgICAgIHwgc2xpY2luZ1xuICAgICAgICAgICAgICB8ICIqIiB0YXJnZXRcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0OiBUaGUgb2JqZWN0IGlzIGFzc2lnbmVkIHRvXG4gIHRoYXQgdGFyZ2V0LlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRhcmdldHM6IFRoZSBvYmplY3RcbiAgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBhcyB0aGVyZSBhcmVcbiAgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG9cbiAgcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiAgKiBJZiB0aGUgdGFyZ2V0IGxpc3QgY29udGFpbnMgb25lIHRhcmdldCBwcmVmaXhlZCB3aXRoIGFuIGFzdGVyaXNrLFxuICAgIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSBhIHNlcXVlbmNlIHdpdGggYXRcbiAgICBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgbWludXNcbiAgICBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvXG4gICAgcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZCB0YXJnZXQuICBUaGUgZmluYWwgaXRlbXNcbiAgICBvZiB0aGUgc2VxdWVuY2UgYXJlIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXRzIGFmdGVyIHRoZSBzdGFycmVkXG4gICAgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXMgaW4gdGhlIHNlcXVlbmNlIGlzIHRoZW5cbiAgICBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0IGNhbiBiZSBlbXB0eSkuXG5cbiAgKiBFbHNlOiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSBgYGdsb2JhbGBgIG9yIGBgbm9ubG9jYWxgYFxuICAgIHN0YXRlbWVudCBpbiB0aGUgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGVcbiAgICBvYmplY3QgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuXG4gICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlXG4gICAgb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5IGBgbm9ubG9jYWxgYCwgcmVzcGVjdGl2ZWx5LlxuXG4gIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSBjYXVzZSB0aGVcbiAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgdG8gcmVhY2hcbiAgemVybywgY2F1c2luZyB0aGUgb2JqZWN0IHRvIGJlIGRlYWxsb2NhdGVkIGFuZCBpdHMgZGVzdHJ1Y3RvciAoaWYgaXRcbiAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSB0YXJnZXQgbGlzdCBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcyBvciBpbiBzcXVhcmVcbiAgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCBpdHMgaXRlbXMgYXJlXG4gIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGBgVHlwZUVycm9yYGAgaXNcbiAgcmFpc2VkLiAgVGhhdCBvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0b1xuICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgcmFpc2VzXG4gIGFuIGV4Y2VwdGlvbiAodXN1YWxseSBidXQgbm90IG5lY2Vzc2FyaWx5IGBgQXR0cmlidXRlRXJyb3JgYCkuXG5cbiAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZVxuICBvY2N1cnMgb24gYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgdGhlIFJIUyBleHByZXNzaW9uLFxuICBgYGEueGBgIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCBgYGEueGBgIGlzXG4gIGFsd2F5cyBzZXQgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gIFRodXMsIHRoZSB0d28gb2NjdXJyZW5jZXMgb2YgYGBhLnhgYCBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlXG4gIHNhbWUgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLFxuICB0aGUgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoIGBgcHJvcGVydHkoKWBgLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzdWJzY3JpcHRpb246IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSBzZXF1ZW5jZVxuICBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSBvciBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSkuXG4gIE5leHQsIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgeWllbGQgYW4gaW50ZWdlci4gIElmIGl0IGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmVcbiAgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCwgYW5kIHRoZSBzZXF1ZW5jZSBpcyBhc2tlZFxuICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICBJZiB0aGVcbiAgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCBgYEluZGV4RXJyb3JgYCBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gYVxuICBzdWJzY3JpcHRlZCBzZXF1ZW5jZSBjYW5ub3QgYWRkIG5ldyBpdGVtcyB0byBhIGxpc3QpLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZ1wncyBrZXkgdHlwZSxcbiAgYW5kIHRoZSBtYXBwaW5nIGlzIHRoZW4gYXNrZWQgdG8gY3JlYXRlIGEga2V5L2RhdHVtIHBhaXIgd2hpY2ggbWFwc1xuICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgcmVwbGFjZSBhblxuICBleGlzdGluZyBrZXkvdmFsdWUgcGFpciB3aXRoIHRoZSBzYW1lIGtleSB2YWx1ZSwgb3IgaW5zZXJ0IGEgbmV3XG4gIGtleS92YWx1ZSBwYWlyIChpZiBubyBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZSBleGlzdGVkKS5cblxuICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSBgYF9fc2V0aXRlbV9fKClgYCBtZXRob2QgaXMgY2FsbGVkXG4gIHdpdGggYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZSByZWZlcmVuY2VcbiAgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYVxuICBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0IG9mIHRoZSBzYW1lXG4gIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQsXG4gIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWYgZWl0aGVyIGJvdW5kIGlzXG4gIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZ1xuICBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCxcbiAgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlIHRoZVxuICBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mIHRoZVxuICBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgb2JqZWN0XG4gIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5XQVJOSU5HOiBBbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwc1xuYmV0d2VlbiB0aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2FmZVwnIChmb3JcbmV4YW1wbGUgYGBhLCBiID0gYiwgYWBgIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIGFyZSBub3Qgc2FmZSEgIEZvciBpbnN0YW5jZSwgdGhlXG5mb2xsb3dpbmcgcHJvZ3JhbSBwcmludHMgYGBbMCwgMl1gYDpcblxuICAgeCA9IFswLCAxXVxuICAgaSA9IDBcbiAgIGksIHhbaV0gPSAxLCAyXG4gICBwcmludCh4KVxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEzMioqIC0gRXh0ZW5kZWQgSXRlcmFibGUgVW5wYWNraW5nXG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGBgKnRhcmdldGBgIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlIGBgeCArPSAxYGAgY2FuIGJlIHJld3JpdHRlbiBhc1xuYGB4ID0geCArIDFgYCB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW5cbnRoZSBhdWdtZW50ZWQgdmVyc2lvbiwgYGB4YGAgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlblxucG9zc2libGUsIHRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXRcbnJhdGhlciB0aGFuIGNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCxcbnRoZSBvbGQgb2JqZWN0IGlzIG1vZGlmaWVkIGluc3RlYWQuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAogICdhdG9tLWlkZW50aWZpZXJzJzogJ1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgYGBOYW1lRXJyb3JgYCBleGNlcHRpb24uXG5cbioqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0IHRleHR1YWxseSBvY2N1cnMgaW5cbmEgY2xhc3MgZGVmaW5pdGlvbiBiZWdpbnMgd2l0aCB0d28gb3IgbW9yZSB1bmRlcnNjb3JlIGNoYXJhY3RlcnMgYW5kXG5kb2VzIG5vdCBlbmQgaW4gdHdvIG9yIG1vcmUgdW5kZXJzY29yZXMsIGl0IGlzIGNvbnNpZGVyZWQgYSAqcHJpdmF0ZVxubmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSBsb25nZXIgZm9ybVxuYmVmb3JlIGNvZGUgaXMgZ2VuZXJhdGVkIGZvciB0aGVtLiAgVGhlIHRyYW5zZm9ybWF0aW9uIGluc2VydHMgdGhlXG5jbGFzcyBuYW1lIGluIGZyb250IG9mIHRoZSBuYW1lLCB3aXRoIGxlYWRpbmcgdW5kZXJzY29yZXMgcmVtb3ZlZCwgYW5kXG5hIHNpbmdsZSB1bmRlcnNjb3JlIGluc2VydGVkIGluIGZyb250IG9mIHRoZSBjbGFzcyBuYW1lLiAgRm9yIGV4YW1wbGUsXG50aGUgaWRlbnRpZmllciBgYF9fc3BhbWBgIG9jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkIGBgSGFtYGAgd2lsbCBiZVxudHJhbnNmb3JtZWQgdG8gYGBfSGFtX19zcGFtYGAuICBUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mXG50aGUgc3ludGFjdGljYWwgY29udGV4dCBpbiB3aGljaCB0aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlXG50cmFuc2Zvcm1lZCBuYW1lIGlzIGV4dHJlbWVseSBsb25nIChsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksXG5pbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHRydW5jYXRpb24gbWF5IGhhcHBlbi4gIElmIHRoZSBjbGFzcyBuYW1lXG5jb25zaXN0cyBvbmx5IG9mIHVuZGVyc2NvcmVzLCBubyB0cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKICAnYXRvbS1saXRlcmFscyc6ICJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlXG4gICByZXR1cm5lZC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAorICdhdHRyaWJ1dGUtYWNjZXNzJzogJ1xuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mIGBgeC5uYW1lYGApXG5mb3IgY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciBgYHNlbGZgYCkuICBgYG5hbWVgYCBpcyB0aGUgYXR0cmlidXRlIG5hbWUuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZVxuICAgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgIGBgX19nZXRhdHRyX18oKWBgIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gYGBfX2dldGF0dHJfXygpYGAgYW5kIGBgX19zZXRhdHRyX18oKWBgLikgVGhpcyBpcyBkb25lIGJvdGhcbiAgIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlIGBgX19nZXRhdHRyX18oKWBgXG4gICB3b3VsZCBoYXZlIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlXG4gICB0aGF0IGF0IGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5XG4gICBub3QgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXNcbiAgIGBgX19nZXRhdHRyX18oKWBgLCB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3NcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgZWl0aGVyIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZClcbiAgIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLiBJbiBvcmRlclxuICAgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb25cbiAgIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvXG4gICBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKWBgLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kc1xuICAgICBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheCBvclxuICAgICBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiBgYF9fc2V0YXR0cl9fKClgYCB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlgYC5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgYGBfX3NldGF0dHJfXygpYGAgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgYGBkZWwgb2JqLm5hbWVgYCBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gYGBkaXIoKWBgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiBgYGRpcigpYGAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnIGBgX19kaWN0X19gYC5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yIGBgTm9uZWBgIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCwgYW5kXG5gYF9fZGVsZXRlX18oKWBgLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LFxuaXQgaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCBgYGEueGBgIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCBgYGEuX19kaWN0X19bXCd4XCddYGAsIHRoZW5cbmBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ11gYCwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG5gYHR5cGUoYSlgYCBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsIGBgYS54YGAuXG5Ib3cgdGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gYGBhYGA6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgIGBgeC5fX2dldF9fKGEpYGAuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCBgYGEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiBgYHR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSlgYC5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCBgYEEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICBgYEEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSlgYC5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgYGBhYGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBzdXBlcmBgLCB0aGVuIHRoZSBiaW5kaW5nIGBgc3VwZXIoQixcbiAgIG9iaikubSgpYGAgc2VhcmNoZXMgYGBvYmouX19jbGFzc19fLl9fbXJvX19gYCBmb3IgdGhlIGJhc2UgY2xhc3NcbiAgIGBgQWBgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBgYEJgYCBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yXG4gICB3aXRoIHRoZSBjYWxsOiBgYEEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKWBgLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgIGFuZCBgYF9fZGVsZXRlX18oKWBgLlxuSWYgaXQgZG9lcyBub3QgZGVmaW5lIGBgX19nZXRfXygpYGAsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbFxucmV0dXJuIHRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlXG5vYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgYGBfX3NldF9fKClgYFxuYW5kL29yIGBgX19kZWxldGVfXygpYGAsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzXG5uZWl0aGVyLCBpdCBpcyBhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9yc1xuZGVmaW5lIGJvdGggYGBfX2dldF9fKClgYCBhbmQgYGBfX3NldF9fKClgYCwgd2hpbGUgbm9uLWRhdGFcbmRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGUgYGBfX2dldF9fKClgYCBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGhcbmBgX19zZXRfXygpYGAgYW5kIGBgX19nZXRfXygpYGAgZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb25cbmluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJbiBjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlXG5vdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyBgYHN0YXRpY21ldGhvZCgpYGAgYW5kIGBgY2xhc3NtZXRob2QoKWBgKVxuYXJlIGltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgYGBwcm9wZXJ0eSgpYGAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICBJZiBkZWZpbmVkIGluIGFcbiAgIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmRcbiAgIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3JcbiAgIGVhY2ggaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyBgYEF0dHJpYnV0ZUVycm9yYGAuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gIGBgXCdfX2RpY3RfX1wnYGAgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzIGRlZmluaW5nXG4gICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW5zdGFuY2VzLiBJZiB3ZWFrXG4gIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGQgYGBcJ19fd2Vha3JlZl9fXCdgYCB0byB0aGVcbiAgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZSBpbnN0YW5jZVxuICB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlIChleGNlcHQgYnlcbiAgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS4gVGhpc1xuICByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzIGBgaW50YGAsIGBgc3RyYGAgYW5kXG4gIGBgdHVwbGVgYC5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzIG1heVxuICBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCiAgJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogJ1xuQXR0cmlidXRlIHJlZmVyZW5jZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgcGVyaW9kIGFuZCBhIG5hbWU6XG5cbiAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvZiBhIHR5cGUgdGhhdCBzdXBwb3J0c1xuYXR0cmlidXRlIHJlZmVyZW5jZXMsIHdoaWNoIG1vc3Qgb2JqZWN0cyBkby4gIFRoaXMgb2JqZWN0IGlzIHRoZW5cbmFza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSBpZGVudGlmaWVyICh3aGljaCBjYW5cbmJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgYGBfX2dldGF0dHJfXygpYGAgbWV0aG9kKS4gIElmIHRoaXNcbmF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uIGBgQXR0cmlidXRlRXJyb3JgYCBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKICAnYXVnYXNzaWduJzogJ1xuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlIGBgeCArPSAxYGAgY2FuIGJlIHJld3JpdHRlbiBhc1xuYGB4ID0geCArIDFgYCB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW5cbnRoZSBhdWdtZW50ZWQgdmVyc2lvbiwgYGB4YGAgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlblxucG9zc2libGUsIHRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXRcbnJhdGhlciB0aGFuIGNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCxcbnRoZSBvbGQgb2JqZWN0IGlzIG1vZGlmaWVkIGluc3RlYWQuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiAnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiLy8iIHVfZXhwciB8IG1fZXhwciAiLyIgdV9leHByXG4gICAgICAgICAgICAgIHwgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgYGAqYGAgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50XG5tdXN0IGJlIGFuIGludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXJcbmNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkXG50b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGFcbm5lZ2F0aXZlIHJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlIGBgL2BgIChkaXZpc2lvbikgYW5kIGBgLy9gYCAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBJbnRlZ2VyIGRpdmlzaW9uIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSBgYFplcm9EaXZpc2lvbkVycm9yYGAgZXhjZXB0aW9uLlxuXG5UaGUgYGAlYGAgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCBgYDMuMTQlMC43YGAgZXF1YWxzIGBgMC4zNGBgIChzaW5jZSBgYDMuMTRgYCBlcXVhbHNcbmBgNCowLjcgKyAwLjM0YGAuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGhcbnRoZSBzYW1lIHNpZ24gYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mXG50aGUgcmVzdWx0IGlzIHN0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxub3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiBgYHggPT0gKHgvL3kpKnkgKyAoeCV5KWBgLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmVcbmFsc28gY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgZGl2bW9kKClgYDogYGBkaXZtb2QoeCwgeSlcbj09ICh4Ly95LCB4JXkpYGAuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgYGAlYGBcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtIG9sZC1zdHlsZVxuc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG5zZWN0aW9uICpPbGQgU3RyaW5nIEZvcm1hdHRpbmcgT3BlcmF0aW9ucyouXG5cblRoZSBmbG9vciBkaXZpc2lvbiBvcGVyYXRvciwgdGhlIG1vZHVsbyBvcGVyYXRvciwgYW5kIHRoZSBgYGRpdm1vZCgpYGBcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlIGBgYWJzKClgYCBmdW5jdGlvbiBpZiBhcHByb3ByaWF0ZS5cblxuVGhlIGBgK2BgIChhZGRpdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBzdW0gb2YgaXRzIGFyZ3VtZW50cy4gIFRoZVxuYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycyBvciBib3RoIHNlcXVlbmNlcyBvZiB0aGUgc2FtZVxudHlwZS4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIG51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlXG5hbmQgdGhlbiBhZGRlZCB0b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNlcXVlbmNlcyBhcmVcbmNvbmNhdGVuYXRlZC5cblxuVGhlIGBgLWBgIChzdWJ0cmFjdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBkaWZmZXJlbmNlIG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb25cbnR5cGUuXG4nLAorICdiaW5hcnknOiAnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiLy8iIHVfZXhwciB8IG1fZXhwciAiLyIgdV9leHByXG4gICAgICAgICAgICAgIHwgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgYGAqYGAgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50XG5tdXN0IGJlIGFuIGludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXJcbmNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkXG50b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGFcbm5lZ2F0aXZlIHJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlIGBgL2BgIChkaXZpc2lvbikgYW5kIGBgLy9gYCAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBJbnRlZ2VyIGRpdmlzaW9uIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSBgYFplcm9EaXZpc2lvbkVycm9yYGAgZXhjZXB0aW9uLlxuXG5UaGUgYGAlYGAgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCBgYDMuMTQlMC43YGAgZXF1YWxzIGBgMC4zNGBgIChzaW5jZSBgYDMuMTRgYCBlcXVhbHNcbmBgNCowLjcgKyAwLjM0YGAuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGhcbnRoZSBzYW1lIHNpZ24gYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mXG50aGUgcmVzdWx0IGlzIHN0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxub3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiBgYHggPT0gKHgvL3kpKnkgKyAoeCV5KWBgLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmVcbmFsc28gY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgZGl2bW9kKClgYDogYGBkaXZtb2QoeCwgeSlcbj09ICh4Ly95LCB4JXkpYGAuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgYGAlYGBcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtIG9sZC1zdHlsZVxuc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG5zZWN0aW9uICpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgYGBkaXZtb2QoKWBgXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSBgYGFicygpYGAgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSBgYCtgYCAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSBgYC1gYCAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHNcbmFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uXG50eXBlLlxuJywKICAnYml0d2lzZSc6ICdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgYGAmYGAgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIEFORCBvZiBpdHMgYXJndW1lbnRzLCB3aGljaCBtdXN0XG5iZSBpbnRlZ2Vycy5cblxuVGhlIGBgXmBgIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBYT1IgKGV4Y2x1c2l2ZSBPUikgb2YgaXRzXG5hcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG5cblRoZSBgYHxgYCBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAogICdibHRpbi1jb2RlLW9iamVjdHMnOiAnXG5Db2RlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5Db2RlIG9iamVjdHMgYXJlIHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHRvIHJlcHJlc2VudCAicHNldWRvLVxuY29tcGlsZWQiIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUgc3VjaCBhcyBhIGZ1bmN0aW9uIGJvZHkuIFRoZXkgZGlmZmVyXG5mcm9tIGZ1bmN0aW9uIG9iamVjdHMgYmVjYXVzZSB0aGV5IGRvblwndCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZWlyXG5nbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSByZXR1cm5lZCBieSB0aGUgYnVpbHQtXG5pbiBgYGNvbXBpbGUoKWBgIGZ1bmN0aW9uIGFuZCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gZnVuY3Rpb24gb2JqZWN0c1xudGhyb3VnaCB0aGVpciBgYF9fY29kZV9fYGAgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgYGBjb2RlYGAgbW9kdWxlLlxuXG5BIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyBpdCAoaW5zdGVhZCBvZiBhXG5zb3VyY2Ugc3RyaW5nKSB0byB0aGUgYGBleGVjKClgYCBvciBgYGV2YWwoKWBgICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcblRoZSBFbGxpcHNpcyBPYmplY3RcbioqKioqKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgKlNsaWNpbmdzKikuICBJdCBzdXBwb3J0c1xubm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgZWxsaXBzaXMgb2JqZWN0LCBuYW1lZFxuYGBFbGxpcHNpc2BgIChhIGJ1aWx0LWluIG5hbWUpLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgRWxsaXBzaXNgYCBvciBgYC4uLmBgLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiAiXG5UaGUgTnVsbCBPYmplY3RcbioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyByZXR1cm5lZCBieSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVybiBhXG52YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIG51bGxcbm9iamVjdCwgbmFtZWQgYGBOb25lYGAgKGEgYnVpbHQtaW4gbmFtZSkuXG5cbkl0IGlzIHdyaXR0ZW4gYXMgYGBOb25lYGAuXG4iLAorICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiAnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbmBgRWxsaXBzaXNgYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShFbGxpcHNpcykoKWBgIHByb2R1Y2VzIHRoZVxuYGBFbGxpcHNpc2BgIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYEVsbGlwc2lzYGAgb3IgYGAuLi5gYC5cbicsCisgJ2JsdGluLW51bGwtb2JqZWN0JzogIlxuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYVxudmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsXG5vYmplY3QsIG5hbWVkIGBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLiAgYGB0eXBlKE5vbmUpKClgYCBwcm9kdWNlc1xudGhlIHNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgTm9uZWBgLlxuIiwKICAnYmx0aW4tdHlwZS1vYmplY3RzJzogIlxuVHlwZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuVHlwZSBvYmplY3RzIHJlcHJlc2VudCB0aGUgdmFyaW91cyBvYmplY3QgdHlwZXMuICBBbiBvYmplY3QncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGB0eXBlKClgYC4gIFRoZXJlIGFyZSBubyBzcGVjaWFsXG5vcGVyYXRpb25zIG9uIHR5cGVzLiAgVGhlIHN0YW5kYXJkIG1vZHVsZSBgYHR5cGVzYGAgZGVmaW5lcyBuYW1lcyBmb3JcbmFsbCBzdGFuZGFyZCBidWlsdC1pbiB0eXBlcy5cblxuVHlwZXMgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiBgYDxjbGFzcyAnaW50Jz5gYC5cbiIsCiAgJ2Jvb2xlYW5zJzogJ1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiBgYEZhbHNlYGAsIGBgTm9uZWBgLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbnN0cmluZ3MgYW5kIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBzdHJpbmdzLCB0dXBsZXMsIGxpc3RzLFxuZGljdGlvbmFyaWVzLCBzZXRzIGFuZCBmcm96ZW5zZXRzKS4gIEFsbCBvdGhlciB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyB0cnVlLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIGN1c3RvbWl6ZSB0aGVpciB0cnV0aCB2YWx1ZSBieVxucHJvdmlkaW5nIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgYGBub3RgYCB5aWVsZHMgYGBUcnVlYGAgaWYgaXRzIGFyZ3VtZW50IGlzIGZhbHNlLFxuYGBGYWxzZWBgIG90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gYGB4IGFuZCB5YGAgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIGZhbHNlLCBpdHNcbnZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWVcbmlzIHJldHVybmVkLlxuXG5UaGUgZXhwcmVzc2lvbiBgYHggb3IgeWBgIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHNcbnZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWVcbmlzIHJldHVybmVkLlxuXG4oTm90ZSB0aGF0IG5laXRoZXIgYGBhbmRgYCBub3IgYGBvcmBgIHJlc3RyaWN0IHRoZSB2YWx1ZSBhbmQgdHlwZSB0aGV5XG5yZXR1cm4gdG8gYGBGYWxzZWBgIGFuZCBgYFRydWVgYCwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgYGBzYGAgaXMgYSBzdHJpbmcgdGhhdFxuc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgZGVmYXVsdCB2YWx1ZSBpZiBpdCBpcyBlbXB0eSwgdGhlIGV4cHJlc3Npb25cbmBgcyBvciBcJ2Zvb1wnYGAgeWllbGRzIHRoZSBkZXNpcmVkIHZhbHVlLiAgQmVjYXVzZSBgYG5vdGBgIGhhcyB0b1xuaW52ZW50IGEgdmFsdWUgYW55d2F5LCBpdCBkb2VzIG5vdCBib3RoZXIgdG8gcmV0dXJuIGEgdmFsdWUgb2YgdGhlXG5zYW1lIHR5cGUgYXMgaXRzIGFyZ3VtZW50LCBzbyBlLmcuLCBgYG5vdCBcJ2Zvb1wnYGAgeWllbGRzIGBgRmFsc2VgYCxcbm5vdCBgYFwnXCdgYC4pXG4nLAogICdicmVhayc6ICdcblRoZSBgYGJyZWFrYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBicmVha19zdG10IDo6PSAiYnJlYWsiXG5cbmBgYnJlYWtgYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGBgZm9yYGAgb3JcbmBgd2hpbGVgYCBsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb25cbndpdGhpbiB0aGF0IGxvb3AuXG5cbkl0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbFxuYGBlbHNlYGAgY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgYGBmb3JgYCBsb29wIGlzIHRlcm1pbmF0ZWQgYnkgYGBicmVha2BgLCB0aGUgbG9vcCBjb250cm9sIHRhcmdldFxua2VlcHMgaXRzIGN1cnJlbnQgdmFsdWUuXG5cbldoZW4gYGBicmVha2BgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5sZWF2aW5nIHRoZSBsb29wLlxuJywKQEAgLTE4LDEzICsxOSwxMyBAQAogICdjYWxscyc6ICdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgZnVuY3Rpb24pIHdpdGggYSBwb3NzaWJseVxuZW1wdHkgc2VyaWVzIG9mIGFyZ3VtZW50czpcblxuICAgY2FsbCAgICAgICAgICAgICAgICAgOjo9IHByaW1hcnkgIigiIFthcmd1bWVudF9saXN0IFsiLCJdIHwgY29tcHJlaGVuc2lvbl0gIikiXG4gICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiBrZXl3b3JkX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKiIgZXhwcmVzc2lvbl0gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmRfYXJndW1lbnRzIFsiLCIgIioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCAiKiIgZXhwcmVzc2lvbiBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBleHByZXNzaW9uXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gZXhwcmVzc2lvbiAoIiwiIGV4cHJlc3Npb24pKlxuICAga2V5d29yZF9hcmd1bWVudHMgICAgOjo9IGtleXdvcmRfaXRlbSAoIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3JkX2l0ZW0gICAgICAgICA6Oj0gaWRlbnRpZmllciAiPSIgZXhwcmVzc2lvblxuXG5BIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkXG5hcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbmZ1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG5vYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG5gYF9fY2FsbF9fKClgYCBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsIHBhcmFtZXRlciBsaXN0cy5cblxuSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xucG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzIGlzXG5jcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG5hcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG5rZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGZvcm1hbFxucGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCBpc1xuYWxyZWFkeSBmaWxsZWQsIGEgYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgYGBOb25lYGAsIGl0IGZpbGxzIHRoZSBzbG90KS4gIFdoZW4gYWxsIGFyZ3VtZW50cyBoYXZlXG5iZWVuIHByb2Nlc3NlZCwgdGhlIHNsb3RzIHRoYXQgYXJlIHN0aWxsIHVuZmlsbGVkIGFyZSBmaWxsZWQgd2l0aCB0aGVcbmNvcnJlc3BvbmRpbmcgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgKERlZmF1bHRcbnZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxubXV0YWJsZSBvYmplY3Qgc3VjaCBhcyBhIGxpc3Qgb3IgZGljdGlvbmFyeSB1c2VkIGFzIGRlZmF1bHQgdmFsdWUgd2lsbFxuYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvblwndCBzcGVjaWZ5IGFuIGFyZ3VtZW50IHZhbHVlIGZvciB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSBhbnlcbnVuZmlsbGVkIHNsb3RzIGZvciB3aGljaCBubyBkZWZhdWx0IHZhbHVlIGlzIHNwZWNpZmllZCwgYVxuYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWRcbnNsb3RzIGlzIHVzZWQgYXMgdGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG5idWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCBldmVuXG5pZiB0aGV5IGFyZSBcJ25hbWVkXCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxudGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgY2FzZVxuZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlIGBgUHlBcmdfUGFyc2VUdXBsZSgpYGAgdG9cbnBhcnNlIHRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgcGFyYW1ldGVyXG51c2luZyB0aGUgc3ludGF4IGBgKmlkZW50aWZpZXJgYCBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHNcbihvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG5cbklmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG5uYW1lLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCBgYCoqaWRlbnRpZmllcmBgIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdFxuZm9ybWFsIHBhcmFtZXRlciByZWNlaXZlcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgZXhjZXNzIGtleXdvcmRcbmFyZ3VtZW50cyAodXNpbmcgdGhlIGtleXdvcmRzIGFzIGtleXMgYW5kIHRoZSBhcmd1bWVudCB2YWx1ZXMgYXNcbmNvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgbm9cbmV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cy5cblxuSWYgdGhlIHN5bnRheCBgYCpleHByZXNzaW9uYGAgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbmBgZXhwcmVzc2lvbmBgIG11c3QgZXZhbHVhdGUgdG8gYW4gaXRlcmFibGUuICBFbGVtZW50cyBmcm9tIHRoaXNcbml0ZXJhYmxlIGFyZSB0cmVhdGVkIGFzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzO1xuaWYgdGhlcmUgYXJlIHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgYW5kIGBgZXhwcmVzc2lvbmBgXG5ldmFsdWF0ZXMgdG8gYSBzZXF1ZW5jZSAqeTEqLCAuLi4sICp5TSosIHRoaXMgaXMgZXF1aXZhbGVudCB0byBhIGNhbGxcbndpdGggTStOIHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgKnkxKiwgLi4uLCAqeU0qLlxuXG5BIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCBhbHRob3VnaCB0aGUgYGAqZXhwcmVzc2lvbmBgIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIHNvbWUga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKiB0aGVcbmtleXdvcmQgYXJndW1lbnRzIChhbmQgdGhlIGBgKipleHByZXNzaW9uYGAgYXJndW1lbnQsIGlmIGFueSAtLSBzZWVcbmJlbG93KS4gIFNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSBgYCpleHByZXNzaW9uYGBcbnN5bnRheCB0byBiZSB1c2VkIGluIHRoZSBzYW1lIGNhbGwsIHNvIGluIHByYWN0aWNlIHRoaXMgY29uZnVzaW9uIGRvZXNcbm5vdCBhcmlzZS5cblxuSWYgdGhlIHN5bnRheCBgYCoqZXhwcmVzc2lvbmBgIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG5gYGV4cHJlc3Npb25gYCBtdXN0IGV2YWx1YXRlIHRvIGEgbWFwcGluZywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZVxudHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSW4gdGhlIGNhc2Ugb2YgYSBrZXl3b3JkXG5hcHBlYXJpbmcgaW4gYm90aCBgYGV4cHJlc3Npb25gYCBhbmQgYXMgYW4gZXhwbGljaXQga2V5d29yZCBhcmd1bWVudCxcbmEgYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLlxuXG5Gb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4IGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgXG5jYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgYXJndW1lbnRcbm5hbWVzLlxuXG5BIGNhbGwgYWx3YXlzIHJldHVybnMgc29tZSB2YWx1ZSwgcG9zc2libHkgYGBOb25lYGAsIHVubGVzcyBpdCByYWlzZXNcbmFuIGV4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG5jYWxsYWJsZSBvYmplY3QuXG5cbklmIGl0IGlzLS0tXG5cbmEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbiAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kIHRoZVxuICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gc2VjdGlvblxuICAgKkZ1bmN0aW9uIGRlZmluaXRpb25zKi4gIFdoZW4gdGhlIGNvZGUgYmxvY2sgZXhlY3V0ZXMgYSBgYHJldHVybmBgXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhIGBgX19jYWxsX18oKWBgIG1ldGhvZDsgdGhlIGVmZmVjdCBpcyB0aGVuXG4gICB0aGUgc2FtZSBhcyBpZiB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkLlxuJywKICAnY2xhc3MnOiAnXG5DbGFzcyBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgYGBvYmplY3RgYDsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoIGBgc2VsZi5uYW1lID0gdmFsdWVgYC4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uXG4iYGBzZWxmLm5hbWVgYCIsIGFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGVcbndpdGggdGhlIHNhbWUgbmFtZSB3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmVcbnVzZWQgYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlc1xudGhlcmUgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0b1xuY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC0gQ2xhc3NcbiAgIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzIHRoZXJlXG4gICAgaXMgYSBgYGZpbmFsbHlgYCBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyIGV4Y2VwdGlvbi5cbiAgICBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYW5cbiAgICBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhIGBgcmV0dXJuYGAsIGBgY29udGludWVgYCwgb3JcbiAgICBgYGJyZWFrYGAgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzIGBgX19kb2NfX2BgIGF0dHJpYnV0ZSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyBgYF9fZG9jX19gYCBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAogICdjb21wYXJpc29ucyc6ICdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSBgYGEgPCBiIDwgY2BgIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6IGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sIGBgeCA8IHkgPD0gemBgIGlzXG5lcXVpdmFsZW50IHRvIGBgeCA8IHkgYW5kIHkgPD0gemBgLCBleGNlcHQgdGhhdCBgYHlgYCBpcyBldmFsdWF0ZWRcbm9ubHkgb25jZSAoYnV0IGluIGJvdGggY2FzZXMgYGB6YGAgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiBgYHggPFxueWBgIGlzIGZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiBgYGEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6YGAgaXMgZXF1aXZhbGVudCB0byBgYGEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6YGAsXG5leGNlcHQgdGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0IGBgYSBvcDEgYiBvcDIgY2BgIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb25cbmJldHdlZW4gKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sIGBgeCA8IHkgPiB6YGAgaXMgcGVyZmVjdGx5IGxlZ2FsXG4odGhvdWdoIHBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgYGA8YGAsIGBgPmBgLCBgYD09YGAsIGBgPj1gYCwgYGA8PWBgLCBhbmQgYGAhPWBgIGNvbXBhcmVcbnRoZSB2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuXG5JZiBib3RoIGFyZSBudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSxcbnRoZSBgYD09YGAgYW5kIGBgIT1gYCBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRvIGJlIHVuZXF1YWwsIHdoaWxlIHRoZSBgYDxgYCwgYGA+YGAsIGBgPj1gYCBhbmQgYGA8PWBgXG5vcGVyYXRvcnMgcmFpc2UgYSBgYFR5cGVFcnJvcmBgIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZlxudHlwZXMuICBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pblxudHlwZXMgYnkgZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSBgYF9fZ3RfXygpYGAsIGRlc2NyaWJlZFxuaW4gc2VjdGlvbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyBgYGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgRGVjaW1hbChcJ05hTlwnKWBgIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCBgYHggaXMgeGBgIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsIGBgeCAhPSB4YGAuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gYGBGYWxzZWBgLiAgRm9yIGV4YW1wbGUsIGJvdGggYGAzIDxcbiAgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBmbG9hdChcJ05hTlwnKSA8IDNgYCB3aWxsIHJldHVybiBgYEZhbHNlYGAuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzXG4gICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYG9yZCgpYGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuXG4gIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYFsxLDIseF0gPD0gWzEsMix5XWBgIGhhcyB0aGVcbiAgc2FtZSB2YWx1ZSBhcyBgYHggPD0geWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdFxuICBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPFxuICBbMSwyLDNdYGApLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lIGBgKGtleSwgdmFsdWUpYGAgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIGBgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpYGAgcmFpc2UgYGBUeXBlRXJyb3JgYC5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyBgYHsxLDJ9YGAgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgYGBtaW4oKWBgLCBgYG1heCgpYGAsIGFuZCBgYHNvcnRlZCgpYGAgcHJvZHVjZVxuICB1bmRlZmluZWQgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleSBhcmVcbiAgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkIHNtYWxsZXJcbiAgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXQgY29uc2lzdGVudGx5XG4gIHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlclxub2YgdGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0XG5udW1lcmljIHR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLCBidXQgY29tcGFyaXNvbnMgb2ZcbmBgZmxvYXRgYCBhbmQgYGBEZWNpbWFsYGAgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYXZvaWQgdGhlIGluZXZpdGFibGVcbmNvbmZ1c2lvbiBhcmlzaW5nIGZyb20gcmVwcmVzZW50YXRpb24gaXNzdWVzIHN1Y2ggYXMgYGBmbG9hdChcJzEuMVwnKWBgXG5iZWluZyBpbmV4YWN0bHkgcmVwcmVzZW50ZWQgYW5kIHRoZXJlZm9yZSBub3QgZXhhY3RseSBlcXVhbCB0b1xuYGBEZWNpbWFsKFwnMS4xXCcpYGAgd2hpY2ggaXMuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpcyBub3RcbnN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgVGhpcyBjYW5cbmNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygbm9uLXRyYW5zaXRpdml0eSBiZXR3ZWVuIHN1cHBvcnRlZCBjcm9zcy10eXBlXG5jb21wYXJpc29ucyBhbmQgdW5zdXBwb3J0ZWQgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDIpID09XG4yYGAgYW5kIGBgMiA9PSBmbG9hdCgyKWBgIGJ1dCBgYERlY2ltYWwoMikgIT0gZmxvYXQoMilgYC5cblxuVGhlIG9wZXJhdG9ycyBgYGluYGAgYW5kIGBgbm90IGluYGAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbiBzYGBcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICBgYHhcbm5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoIGBgaW5gYFxudGVzdHMgd2hldGhlciBhIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlc1xuc3VjaCBhcyBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gYGB4IGluIHlgYCBpcyBlcXVpdmFsZW50IHRvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpYGAuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuXG5FbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbnN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSBgYF9fY29udGFpbnNfXygpYGAgbWV0aG9kLFxuYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAgYnV0IGRvXG5kZWZpbmUgYGBfX2l0ZXJfXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4XG49PSB6YGAgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXNcbnJhaXNlZCBkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG5gYF9fZ2V0aXRlbV9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0IGBgeCA9PSB5W2ldYGAsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgYGBJbmRleEVycm9yYGAgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciBgYG5vdCBpbmBgIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG5gYGluYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpc2BgIGFuZCBgYGlzIG5vdGBgIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogYGB4IGlzXG55YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgYGB4IGlzXG5ub3QgeWBgIHlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAotICdjb21wb3VuZCc6ICdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSBgYGlmYGAsIGBgd2hpbGVgYCBhbmQgYGBmb3JgYCBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbFxuY29udHJvbCBmbG93IGNvbnN0cnVjdHMuICBgYHRyeWBgIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yXG5jbGVhbnVwIGNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhXG5ibG9jayBvZiBjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHlcbmNvbXBvdW5kIHN0YXRlbWVudHMuXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2Ygc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggYGBpZmBgIGNsYXVzZSBhIGZvbGxvd2luZyBgYGVsc2VgYCBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuYGBwcmludCgpYGAgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhIGBgTkVXTElORWBgIHBvc3NpYmx5IGZvbGxvd2VkIGJ5XG5hIGBgREVERU5UYGAuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXNcbmJlZ2luIHdpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nIGBgZWxzZWBgXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkIGBgaWZgYCBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiwgaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmRcbm9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIElmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgcmFpc2VzIGFub3RoZXJcbmV4Y2VwdGlvbiBvciBleGVjdXRlcyBhIGBgcmV0dXJuYGAgb3IgYGBicmVha2BgIHN0YXRlbWVudCwgdGhlIHNhdmVkXG5leGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiAgVGhlIGV4Y2VwdGlvblxuaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmcgZXhlY3V0aW9uIG9mIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5XaGVuIGEgYGByZXR1cm5gYCwgYGBicmVha2BgIG9yIGBgY29udGludWVgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW5cbnRoZSBgYHRyeWBgIHN1aXRlIG9mIGEgYGB0cnlgYC4uLmBgZmluYWxseWBgIHN0YXRlbWVudCwgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UgaXMgYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgaXMgaWxsZWdhbCBpbiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhXG5wcm9ibGVtIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlXG5saWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vblxuYGB0cnlgYC4uLmBgZXhjZXB0YGAuLi5gYGZpbmFsbHlgYCB1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWRcbmZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSBgYHdpdGhfaXRlbWBgKVxuICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cblxuMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZW50ZXJfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4gICB2YWx1ZSBmcm9tIGBgX19lbnRlcl9fKClgYCBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlIGBgX19lbnRlcl9fKClgYFxuICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuIGBgX19leGl0X18oKWBgIHdpbGwgYWx3YXlzXG4gICAgIGJlIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBgYF9fZXhpdF9fKClgYC4gT3RoZXJ3aXNlLFxuICAgdGhyZWUgYGBOb25lYGAgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlIGBgX19leGl0X18oKWBgIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXNcbiAgIHJlcmFpc2VkLiAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgc3VwcHJlc3NlZCwgYW5kIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZ1xuICAgdGhlIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gYGBfX2V4aXRfXygpYGAgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiBwcm9jZWVkc1xuICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cblxuV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbm11bHRpcGxlIGBgd2l0aGBgIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCisgJ2NvbXBvdW5kJzogJ1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlIGBgaWZgYCwgYGB3aGlsZWBgIGFuZCBgYGZvcmBgIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsXG5jb250cm9sIGZsb3cgY29uc3RydWN0cy4gIGBgdHJ5YGAgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3JcbmNsZWFudXAgY29kZSBmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzLCB3aGlsZSB0aGUgYGB3aXRoYGAgc3RhdGVtZW50XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGFcbmJsb2NrIG9mIGNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseVxuY29tcG91bmQgc3RhdGVtZW50cy5cblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb25zaXN0IG9mIG9uZSBvciBtb3JlIFwnY2xhdXNlcy5cJyAgQSBjbGF1c2VcbmNvbnNpc3RzIG9mIGEgaGVhZGVyIGFuZCBhIFwnc3VpdGUuXCcgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG5wYXJ0aWN1bGFyIGNvbXBvdW5kIHN0YXRlbWVudCBhcmUgYWxsIGF0IHRoZSBzYW1lIGluZGVudGF0aW9uIGxldmVsLlxuRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCBhbmQgZW5kc1xud2l0aCBhIGNvbG9uLiAgQSBzdWl0ZSBpcyBhIGdyb3VwIG9mIHN0YXRlbWVudHMgY29udHJvbGxlZCBieSBhXG5jbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuc3RhdGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBoZWFkZXIsIGZvbGxvd2luZyB0aGUgaGVhZGVyXCdzXG5jb2xvbiwgb3IgaXQgY2FuIGJlIG9uZSBvciBtb3JlIGluZGVudGVkIHN0YXRlbWVudHMgb24gc3Vic2VxdWVudFxubGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCBgYGlmYGAgY2xhdXNlIGEgZm9sbG93aW5nIGBgZWxzZWBgIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG5gYHByaW50KClgYCBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgYGBORVdMSU5FYGAgcG9zc2libHkgZm9sbG93ZWQgYnlcbmEgYGBERURFTlRgYC4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5c1xuYmVnaW4gd2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgYGBlbHNlYGBcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgYGBpZmBgIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuXG5UaGUgZm9ybWF0dGluZyBvZiB0aGUgZ3JhbW1hciBydWxlcyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIHBsYWNlc1xuZWFjaCBjbGF1c2Ugb24gYSBzZXBhcmF0ZSBsaW5lIGZvciBjbGFyaXR5LlxuXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpc1xuZXhlY3V0ZWQgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmdvZXMgYmFjayB0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuXG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYVxuc2VxdWVuY2UgKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG5gYGV4cHJlc3Npb25fbGlzdGBgLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciBvZiBhc2NlbmRpbmcgaW5kaWNlcy4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgYGBTdG9wSXRlcmF0aW9uYGBcbmV4Y2VwdGlvbiksIHRoZSBzdWl0ZSBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCxcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5jb250aW51ZXMgd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSBgYGVsc2VgYCBjbGF1c2UgaWYgdGhlcmUgd2FzXG5ubyBuZXh0IGl0ZW0uXG5cblRoZSBzdWl0ZSBtYXkgYXNzaWduIHRvIHRoZSB2YXJpYWJsZShzKSBpbiB0aGUgdGFyZ2V0IGxpc3Q7IHRoaXMgZG9lc1xubm90IGFmZmVjdCB0aGUgbmV4dCBpdGVtIGFzc2lnbmVkIHRvIGl0LlxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsXG5ieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYHJhbmdlKClgYCByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzIGBgZm9yXG5pIDo9IGEgdG8gYiBkb2BgOyBlLmcuLCBgYGxpc3QocmFuZ2UoMykpYGAgcmV0dXJucyB0aGUgbGlzdCBgYFswLCAxLFxuMl1gYC5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGUgbG9vcFxuICAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSBgYGV4Y2VwdGBgIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlblxubm8gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIHN1aXRlLCBhIHNlYXJjaCBmb3JcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0XG5jbGF1c2VzIGluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW5cbmV4cHJlc3Npb24tbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXNcbmFueSBleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXRcbmV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlXG5yZXN1bHRpbmcgb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXNcbmNvbXBhdGlibGUgd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGVcbmV4Y2VwdGlvbiBvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZVxuZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlIGBgdHJ5YGAgc3RhdGVtZW50XG5yYWlzZWQgdGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgYGBhc2BgIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLFxuaWYgcHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyBgYGFzIHRhcmdldGBgLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBgYHN5c2BgIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2VzcyB2aWFcbmBgc3lzLmV4Y19pbmZvKClgYC4gYGBzeXMuZXhjX2luZm8oKWBgIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2ZcbnRoZSBleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdFxuKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW5cbnRoZSBwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICBgYHN5cy5leGNfaW5mbygpYGAgdmFsdWVzXG5hcmUgcmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsIGBgZWxzZWBgIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgYGB0cnlgYCBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSBgYGVsc2VgYCBjbGF1c2VcbmFyZSBub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nIGBgZXhjZXB0YGAgY2xhdXNlcy5cblxuSWYgYGBmaW5hbGx5YGAgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZVxuYGB0cnlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgYGBleGNlcHRgYCBhbmQgYGBlbHNlYGBcbmNsYXVzZXMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90XG5oYW5kbGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgYGBmaW5hbGx5YGAgY2xhdXNlIGlzXG5leGVjdXRlZC4gIElmIHRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIGl0IGlzXG5yZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGBcbmNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24gdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlXG5jb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uOyBpZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIGV4ZWN1dGVzIGFcbmBgcmV0dXJuYGAgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIGRpc2NhcmRlZDpcblxuICAgZGVmIGYoKTpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIDEvMFxuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIHJldHVybiA0MlxuXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4gICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzIGBgb2JqZWN0YGA7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCBgYHNlbGYubmFtZSA9IHZhbHVlYGAuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvblxuImBgc2VsZi5uYW1lYGAiLCBhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlXG53aXRoIHRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlXG51c2VkIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXNcbnRoZXJlIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG9cbmNyZWF0ZSBpbnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtIENsYXNzXG4gICBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcyB0aGVyZVxuICAgIGlzIGEgYGBmaW5hbGx5YGAgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlciBleGNlcHRpb24uXG4gICAgVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGFuXG4gICAgZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSBgYHJldHVybmBgLCBgYGNvbnRpbnVlYGAsIG9yXG4gICAgYGBicmVha2BgIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyBgYF9fZG9jX19gYCBhdHRyaWJ1dGUgYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgYGBfX2RvY19fYGAgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKICAnY29udGV4dC1tYW5hZ2Vycyc6ICdcbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgYGB3aXRoYGAgc3RhdGVtZW50LiBUaGUgY29udGV4dFxubWFuYWdlciBoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZVxuY29udGV4dCBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlXG5ub3JtYWxseSBpbnZva2VkIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4qVGhlIHdpdGggc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyXG5tZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBgYHdpdGhgYFxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgYGBOb25lYGAuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0IGBgX19leGl0X18oKWBgIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cbicsCiAgJ2NvbnRpbnVlJzogJ1xuVGhlIGBgY29udGludWVgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGNvbnRpbnVlX3N0bXQgOjo9ICJjb250aW51ZSJcblxuYGBjb250aW51ZWBgIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgYGBmb3JgYCBvclxuYGB3aGlsZWBgIGxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvclxuYGBmaW5hbGx5YGAgY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZVxub2YgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG5cbldoZW4gYGBjb250aW51ZWBgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKICAnY29udmVyc2lvbnMnOiAnXG5Bcml0aG1ldGljIGNvbnZlcnNpb25zXG4qKioqKioqKioqKioqKioqKioqKioqXG5cbldoZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlIHBocmFzZVxuInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzIG1lYW5zXG50aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgdGhhdCB3YXk6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlIG90aGVyXG4gIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGxlZnRcbmFyZ3VtZW50IHRvIHRoZSBcJyVcJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lIHRoZWlyIG93blxuY29udmVyc2lvbiBiZWhhdmlvci5cbicsCi0gJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBTZWUgYWxzbyB0aGUgKi1SKiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuJywKLSAnZGVidWdnZXInOiAnXG5gYHBkYmBgIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBtb2R1bGUgYGBwZGJgYCBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG5gYFBkYmBgLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5XG5yZWFkaW5nIHRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzIGBgYmRiYGBcbmFuZCBgYGNtZGBgLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzIGBgKFBkYilgYC4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtXG51bmRlciBjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbmBgcGRiLnB5YGAgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLlxuRm9yIGV4YW1wbGU6XG5cbiAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciBwb3N0LVxubW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgd2lsbFxucmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGJcJ3Mgc3RhdGUgKHN1Y2hcbmFzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nIHRoZVxuZGVidWdnZXIgdXBvbiBwcm9ncmFtXCdzIGV4aXQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMjogYGBwZGIucHlgYCBub3cgYWNjZXB0cyBhIGBgLWNgYCBvcHRpb24gdGhhdFxuZXhlY3V0ZXMgY29tbWFuZHMgYXMgaWYgZ2l2ZW4gaW4gYSBgYC5wZGJyY2BgIGZpbGUsIHNlZSAqRGVidWdnZXJcbkNvbW1hbmRzKi5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgZnJvbSBhIHJ1bm5pbmcgcHJvZ3JhbSBpc1xudG8gaW5zZXJ0XG5cbiAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuXG5hdCB0aGUgbG9jYXRpb24geW91IHdhbnQgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIuICBZb3UgY2FuIHRoZW5cbnN0ZXAgdGhyb3VnaCB0aGUgY29kZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZW1lbnQsIGFuZCBjb250aW51ZSBydW5uaW5nXG53aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgYGBjb250aW51ZWBgIGNvbW1hbmQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gbXltb2R1bGUudGVzdCgpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuICAgICAgIHRlc3QyKClcbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbiAgICAgICBwcmludChzcGFtKVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50KHNwYW0pXG4gICAoUGRiKVxuXG5UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSBkZWJ1Z2dlclxuaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuXG5wZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpIHVuZGVyXG4gICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpc1xuICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlIGBgY29udGludWVgYCwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgYGBzdGVwYGAgb3IgYGBuZXh0YGAgKGFsbCB0aGVzZVxuICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKlxuICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzIGV4ZWN1dGVkOyBieVxuICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlIGBgX19tYWluX19gYCBpcyB1c2VkLiAgKFNlZVxuICAgdGhlIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiBgYGV4ZWMoKWBgIG9yIGBgZXZhbCgpYGBcbiAgIGZ1bmN0aW9ucy4pXG5cbnBkYi5ydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpXG4gICB1bmRlciBkZWJ1Z2dlciBjb250cm9sLiAgV2hlbiBgYHJ1bmV2YWwoKWBgIHJldHVybnMsIGl0IHJldHVybnMgdGhlXG4gICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG9cbiAgIGBgcnVuKClgYC5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiBgYHJ1bmNhbGwoKWBgIHJldHVybnMsIGl0IHJldHVybnNcbiAgIHdoYXRldmVyIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybmVkLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzXG4gICBhcyBzb29uIGFzIHRoZSBmdW5jdGlvbiBpcyBlbnRlcmVkLlxuXG5wZGIuc2V0X3RyYWNlKClcblxuICAgRW50ZXIgdGhlIGRlYnVnZ2VyIGF0IHRoZSBjYWxsaW5nIHN0YWNrIGZyYW1lLiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgIGhhcmQtY29kZSBhIGJyZWFrcG9pbnQgYXQgYSBnaXZlbiBwb2ludCBpbiBhIHByb2dyYW0sIGV2ZW4gaWYgdGhlXG4gICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbiAgIGZhaWxzKS5cblxucGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIGdpdmVuICp0cmFjZWJhY2sqIG9iamVjdC4gIElmIG5vXG4gICAqdHJhY2ViYWNrKiBpcyBnaXZlbiwgaXQgdXNlcyB0aGUgb25lIG9mIHRoZSBleGNlcHRpb24gdGhhdCBpc1xuICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgaWYgdGhlXG4gICBkZWZhdWx0IGlzIHRvIGJlIHVzZWQpLlxuXG5wZGIucG0oKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC5cblxuVGhlIGBgcnVuKmBgIGZ1bmN0aW9ucyBhbmQgYGBzZXRfdHJhY2UoKWBgIGFyZSBhbGlhc2VzIGZvclxuaW5zdGFudGlhdGluZyB0aGUgYGBQZGJgYCBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lXG5uYW1lLiAgSWYgeW91IHdhbnQgdG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXNcbnlvdXJzZWxmOlxuXG5jbGFzcyBjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PVwndGFiXCcsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlKVxuXG4gICBgYFBkYmBgIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cblxuICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZVxuICAgdW5kZXJseWluZyBgYGNtZC5DbWRgYCBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBDdHJsLUMgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgYVxuICAgYGBjb250aW51ZWBgIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlclxuICAgYWdhaW4gYnkgcHJlc3NpbmcgQ3RybC1DLiAgSWYgeW91IHdhbnQgUGRiIG5vdCB0byB0b3VjaCB0aGUgU0lHSU5UXG4gICBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0b3QgdHJ1ZS5cblxuICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuXG4gICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9W1wnZGphbmdvLipcJ10pLnNldF90cmFjZSgpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgKm5vc2lnaW50KiBhcmd1bWVudC4gIFByZXZpb3VzbHksIGEgU0lHSU5UXG4gICBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkgUGRiLlxuXG4gICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcbiAgIHNldF90cmFjZSgpXG5cbiAgICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZ1bmN0aW9ucyBleHBsYWluZWQgYWJvdmUuXG5cblxuRGVidWdnZXIgQ29tbWFuZHNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBjb21tYW5kcyByZWNvZ25pemVkIGJ5IHRoZSBkZWJ1Z2dlciBhcmUgbGlzdGVkIGJlbG93LiAgTW9zdFxuY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7IGUuZy5cbmBgaChlbHApYGAgbWVhbnMgdGhhdCBlaXRoZXIgYGBoYGAgb3IgYGBoZWxwYGAgY2FuIGJlIHVzZWQgdG8gZW50ZXJcbnRoZSBoZWxwIGNvbW1hbmQgKGJ1dCBub3QgYGBoZWBgIG9yIGBgaGVsYGAsIG5vciBgYEhgYCBvciBgYEhlbHBgYCBvclxuYGBIRUxQYGApLiAgQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2VcbihzcGFjZXMgb3IgdGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0c1xuKGBgW11gYCkgaW4gdGhlIGNvbW1hbmQgc3ludGF4OyB0aGUgc3F1YXJlIGJyYWNrZXRzIG11c3Qgbm90IGJlIHR5cGVkLlxuQWx0ZXJuYXRpdmVzIGluIHRoZSBjb21tYW5kIHN5bnRheCBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgYmFyXG4oYGB8YGApLlxuXG5FbnRlcmluZyBhIGJsYW5rIGxpbmUgcmVwZWF0cyB0aGUgbGFzdCBjb21tYW5kIGVudGVyZWQuICBFeGNlcHRpb246IGlmXG50aGUgbGFzdCBjb21tYW5kIHdhcyBhIGBgbGlzdGBgIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoYGAhYGApLiAgVGhpcyBpcyBhIHBvd2VyZnVsIHdheSB0byBpbnNwZWN0IHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZDsgaXQgaXMgZXZlbiBwb3NzaWJsZSB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvciBjYWxsIGEgZnVuY3Rpb24uXG5XaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lIGlzXG5wcmludGVkIGJ1dCB0aGUgZGVidWdnZXJcJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG5cblRoZSBkZWJ1Z2dlciBzdXBwb3J0cyAqYWxpYXNlcyouICBBbGlhc2VzIGNhbiBoYXZlIHBhcmFtZXRlcnMgd2hpY2hcbmFsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuZXhhbWluYXRpb24uXG5cbk11bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieVxuYGA7O2BgLiAgKEEgc2luZ2xlIGBgO2BgIGlzIG5vdCB1c2VkIGFzIGl0IGlzIHRoZSBzZXBhcmF0b3IgZm9yXG5tdWx0aXBsZSBjb21tYW5kcyBpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm9cbmludGVsbGlnZW5jZSBpcyBhcHBsaWVkIHRvIHNlcGFyYXRpbmcgdGhlIGNvbW1hbmRzOyB0aGUgaW5wdXQgaXMgc3BsaXRcbmF0IHRoZSBmaXJzdCBgYDs7YGAgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkXG5zdHJpbmcuXG5cbklmIGEgZmlsZSBgYC5wZGJyY2BgIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBgYC5wZGJyY2BgIGNhbiBub3cgY29udGFpbiBjb21tYW5kcyB0aGF0XG5jb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgYGBjb250aW51ZWBgIG9yIGBgbmV4dGBgLiAgUHJldmlvdXNseSxcbnRoZXNlIGNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgYGBoZWxwIHBkYmBgXG4gICBkaXNwbGF5cyB0aGUgZnVsbCBkb2N1bWVudGF0aW9uICh0aGUgZG9jc3RyaW5nIG9mIHRoZSBgYHBkYmBgXG4gICBtb2R1bGUpLiAgU2luY2UgdGhlICpjb21tYW5kKiBhcmd1bWVudCBtdXN0IGJlIGFuIGlkZW50aWZpZXIsXG4gICBgYGhlbHAgZXhlY2BgIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgYGAhYGAgY29tbWFuZC5cblxudyhoZXJlKVxuXG4gICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgYm90dG9tLiAgQW5cbiAgIGFycm93IGluZGljYXRlcyB0aGUgY3VycmVudCBmcmFtZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29udGV4dCBvZlxuICAgbW9zdCBjb21tYW5kcy5cblxuZChvd24pIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIGRvd24gaW4gdGhlXG4gICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG5cbnUocCkgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgdXAgaW4gdGhlIHN0YWNrXG4gICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuXG5iKHJlYWspIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgV2l0aCBhICpsaW5lbm8qIGFyZ3VtZW50LCBzZXQgYSBicmVhayB0aGVyZSBpbiB0aGUgY3VycmVudCBmaWxlLlxuICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCBleGVjdXRhYmxlXG4gICBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uICBUaGUgbGluZSBudW1iZXIgbWF5IGJlIHByZWZpeGVkXG4gICB3aXRoIGEgZmlsZW5hbWUgYW5kIGEgY29sb24sIHRvIHNwZWNpZnkgYSBicmVha3BvaW50IGluIGFub3RoZXJcbiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc25cJ3QgYmVlbiBsb2FkZWQgeWV0KS4gIFRoZSBmaWxlIGlzXG4gICBzZWFyY2hlZCBvbiBgYHN5cy5wYXRoYGAuICBOb3RlIHRoYXQgZWFjaCBicmVha3BvaW50IGlzIGFzc2lnbmVkIGFcbiAgIG51bWJlciB0byB3aGljaCBhbGwgdGhlIG90aGVyIGJyZWFrcG9pbnQgY29tbWFuZHMgcmVmZXIuXG5cbiAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC5cblxuICAgV2l0aG91dCBhcmd1bWVudCwgbGlzdCBhbGwgYnJlYWtzLCBpbmNsdWRpbmcgZm9yIGVhY2ggYnJlYWtwb2ludCxcbiAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlIGN1cnJlbnRcbiAgIGlnbm9yZSBjb3VudCwgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBpZiBhbnkuXG5cbnRicmVhayBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCBpc1xuICAgZmlyc3QgaGl0LiBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYGBicmVha2BgLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgYGBlbmRgYCB0byB0ZXJtaW5hdGUgdGhlIGNvbW1hbmRzLiBBbiBleGFtcGxlOlxuXG4gICAgICAoUGRiKSBjb21tYW5kcyAxXG4gICAgICAoY29tKSBwcmludCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCBgYGVuZGBgOyB0aGF0IGlzLCBnaXZlIG5vIGNvbW1hbmRzLlxuXG4gICBXaXRoIG5vICpicG51bWJlciogYXJndW1lbnQsIGNvbW1hbmRzIHJlZmVycyB0byB0aGUgbGFzdCBicmVha3BvaW50XG4gICBzZXQuXG5cbiAgIFlvdSBjYW4gdXNlIGJyZWFrcG9pbnQgY29tbWFuZHMgdG8gc3RhcnQgeW91ciBwcm9ncmFtIHVwIGFnYWluLlxuICAgU2ltcGx5IHVzZSB0aGUgY29udGludWUgY29tbWFuZCwgb3Igc3RlcCwgb3IgYW55IG90aGVyIGNvbW1hbmQgdGhhdFxuICAgcmVzdW1lcyBleGVjdXRpb24uXG5cbiAgIFNwZWNpZnlpbmcgYW55IGNvbW1hbmQgcmVzdW1pbmcgZXhlY3V0aW9uIChjdXJyZW50bHkgY29udGludWUsXG4gICBzdGVwLCBuZXh0LCByZXR1cm4sIGp1bXAsIHF1aXQgYW5kIHRoZWlyIGFiYnJldmlhdGlvbnMpIHRlcm1pbmF0ZXNcbiAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnlcbiAgIGVuZCkuIFRoaXMgaXMgYmVjYXVzZSBhbnkgdGltZSB5b3UgcmVzdW1lIGV4ZWN1dGlvbiAoZXZlbiB3aXRoIGFcbiAgIHNpbXBsZSBuZXh0IG9yIHN0ZXApLCB5b3UgbWF5IGVuY291bnRlciBhbm90aGVyIGJyZWFrcG9pbnQtLXdoaWNoXG4gICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0IHdoaWNoXG4gICBsaXN0IHRvIGV4ZWN1dGUuXG5cbiAgIElmIHlvdSB1c2UgdGhlIFwnc2lsZW50XCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgdXN1YWxcbiAgIG1lc3NhZ2UgYWJvdXQgc3RvcHBpbmcgYXQgYSBicmVha3BvaW50IGlzIG5vdCBwcmludGVkLiAgVGhpcyBtYXkgYmVcbiAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyBtZXNzYWdlIGFuZFxuICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCB5b3VcbiAgIHNlZSBubyBzaWduIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHJlYWNoZWQuXG5cbnModGVwKVxuXG4gICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlIG9jY2FzaW9uXG4gICAoZWl0aGVyIGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb3Igb24gdGhlIG5leHQgbGluZSBpbiB0aGVcbiAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuXG5uKGV4dClcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaXNcbiAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBgbmV4dGBgIGFuZFxuICAgYGBzdGVwYGAgaXMgdGhhdCBgYHN0ZXBgYCBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlXG4gICBgYG5leHRgYCBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHlcbiAgIHN0b3BwaW5nIGF0IHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24uKVxuXG51bnQoaWwpIFtsaW5lbm9dXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lIGlzIHJlYWNoZWQuXG5cbiAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gc3RvcCB3aGVuXG4gICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSBudW1iZXIuXG5cbnIoZXR1cm4pXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuXG5jKG9udChpbnVlKSlcblxuICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgZW5jb3VudGVyZWQuXG5cbmoodW1wKSBsaW5lbm9cblxuICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gdGhlXG4gICBib3R0b20tbW9zdCBmcmFtZS4gIFRoaXMgbGV0cyB5b3UganVtcCBiYWNrIGFuZCBleGVjdXRlIGNvZGUgYWdhaW4sXG4gICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvblwndCB3YW50IHRvIHJ1bi5cblxuICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgaW5zdGFuY2VcbiAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhIGBgZm9yYGAgbG9vcCBvciBvdXRcbiAgIG9mIGEgYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5sKGlzdCkgW2ZpcnN0WywgbGFzdF1dXG5cbiAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgbGlzdCAxMVxuICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzIGxpc3RpbmcuXG4gICBXaXRoIGBgLmBgIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLlxuICAgV2l0aCBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSBgYC0+YGAuICBJZlxuICAgYW4gZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUgZXhjZXB0aW9uIHdhc1xuICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgYGA+PmBgLCBpZiBpdFxuICAgZGlmZmVycyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlIGBgPj5gYCBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgYGBsaXN0YGAuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYShyZ3MpXG5cbiAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuXG5wKHJpbnQpIGV4cHJlc3Npb25cblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiBpbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwcmludCBpdHNcbiAgIHZhbHVlLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlIGBgcHJpbnRgYCBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzXG4gICBwcmV0dHktcHJpbnRlZCB1c2luZyB0aGUgYGBwcHJpbnRgYCBtb2R1bGUuXG5cbndoYXRpcyBleHByZXNzaW9uXG5cbiAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSAqZXhwcmVzc2lvbiouXG5cbnNvdXJjZSBleHByZXNzaW9uXG5cbiAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4gICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnVuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRG8gbm90IGRpc3BsYXkgdGhlIGV4cHJlc3Npb24gYW55IG1vcmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuaW50ZXJhY3RcblxuICAgU3RhcnQgYW4gaW50ZXJhdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlIGBgY29kZWBgIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5IGBgJTFgYCwgYGAlMmBgLCBhbmQgc28gb24sIHdoaWxlIGBgJSpgYCBpcyByZXBsYWNlZCBieVxuICAgYWxsIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlIGBgLnBkYnJjYGAgZmlsZSk6XG5cbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbiAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogcHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4gICAgICBhbGlhcyBwcyBwaSBzZWxmXG5cbnVuYWxpYXMgbmFtZVxuXG4gICBEZWxldGUgdGhlIHNwZWNpZmllZCBhbGlhcy5cblxuISBzdGF0ZW1lbnRcblxuICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudFxuICAgc3RhY2sgZnJhbWUuIFRoZSBleGNsYW1hdGlvbiBwb2ludCBjYW4gYmUgb21pdHRlZCB1bmxlc3MgdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCBhXG4gICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCBhXG4gICBgYGdsb2JhbGBgIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuXG4gICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbXCctbFwnXVxuICAgICAgKFBkYilcblxucnVuIFthcmdzIC4uLl1cbnJlc3RhcnQgW2FyZ3MgLi4uXVxuXG4gICBSZXN0YXJ0IHRoZSBkZWJ1Z2dlZCBQeXRob24gcHJvZ3JhbS4gIElmIGFuIGFyZ3VtZW50IGlzIHN1cHBsaWVkLFxuICAgaXQgaXMgc3BsaXQgd2l0aCBgYHNobGV4YGAgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICBgYHN5cy5hcmd2YGAuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciBvcHRpb25zXG4gICBhcmUgcHJlc2VydmVkLiBgYHJlc3RhcnRgYCBpcyBhbiBhbGlhcyBmb3IgYGBydW5gYC5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlIGlzXG4gICAgZGV0ZXJtaW5lZCBieSB0aGUgYGBfX25hbWVfX2BgIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKLSAnZGVsJzogJ1xuVGhlIGBgZGVsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG5cbkRlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCBpc1xuZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuaGludHMuXG5cbkRlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG50byByaWdodC5cblxuRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGZyb20gdGhlIGxvY2FsIG9yXG5nbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSBgYGdsb2JhbGBgXG5zdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbmBgTmFtZUVycm9yYGAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yLlxuJywKKyAnY3VzdG9taXphdGlvbic6ICdcbkJhc2ljIGN1c3RvbWl6YXRpb25cbioqKioqKioqKioqKioqKioqKipcblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gIGBgX19uZXdfXygpYGAgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgYGBfX25ld19fKClgYCBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHlcbiAgIGFuIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgdXNpbmdcbiAgIGBgc3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSlgYCB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgYGBfX25ld19fKClgYCByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgYGBfX2luaXRfXyhzZWxmWywgLi4uXSlgYCwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYC5cblxuICAgSWYgYGBfX25ld19fKClgYCBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgIGBgX19uZXdfXygpYGAgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgYGBfX2luaXRfXygpYGAgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9faW5pdF9fKClgYCBtZXRob2QsXG4gICBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2ZcbiAgIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgIGBgQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSlgYC4gIEFzIGEgc3BlY2lhbCBjb25zdHJhaW50XG4gICBvbiBjb25zdHJ1Y3RvcnMsIG5vIHZhbHVlIG1heSBiZSByZXR1cm5lZDsgZG9pbmcgc28gd2lsbCBjYXVzZSBhXG4gICBgYFR5cGVFcnJvcmBgIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhIGBgX19kZWxfXygpYGAgbWV0aG9kLFxuICAgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2RlbF9fKClgYCBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5XG4gICBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGVcbiAgIGluc3RhbmNlLiAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yXG4gICB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6IGBgZGVsIHhgYCBkb2VzblwndCBkaXJlY3RseSBjYWxsIGBgeC5fX2RlbF9fKClgYCAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGBgeGBgIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXJcbiAgICAgaXMgb25seSBjYWxsZWQgd2hlbiBgYHhgYFwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZVxuICAgICBjb21tb24gc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW5cbiAgICAgb2JqZWN0IGZyb20gZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW5cbiAgICAgb2JqZWN0cyAoZS5nLiwgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGhcbiAgICAgcGFyZW50IGFuZCBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlXG4gICAgIHN0YWNrIGZyYW1lIG9mIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrXG4gICAgIHN0b3JlZCBpbiBgYHN5cy5leGNfaW5mbygpWzJdYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3JcbiAgICAgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW5cbiAgICAgdW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIGxhdHRlciB0d28gc2l0dWF0aW9ucyBjYW4gYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyBgYE5vbmVgYCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLiBDaXJjdWxhciByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZVxuICAgICBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgZGV0ZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnlcbiAgICAgZGVmYXVsdCksIGJ1dCBjYW4gb25seSBiZSBjbGVhbmVkIHVwIGlmIHRoZXJlIGFyZSBubyBQeXRob24tXG4gICAgIGxldmVsIGBgX19kZWxfXygpYGAgbWV0aG9kcyBpbnZvbHZlZC4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25cbiAgICAgZm9yIHRoZSBgYGdjYGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvd1xuICAgICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgYGdhcmJhZ2VgYCB2YWx1ZS5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvblxuICAgICBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvIGBgc3lzLnN0ZGVycmBgIGluc3RlYWQuXG4gICAgIEFsc28sIHdoZW4gYGBfX2RlbF9fKClgYCBpcyBpbnZva2VkIGluIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nXG4gICAgIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlclxuICAgICBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmVcbiAgICAgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHRvcm4gZG93biAoZS5nLiB0aGVcbiAgICAgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzIHJlYXNvbiwgYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWQgdG8gbWFpbnRhaW5cbiAgICAgZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsIFB5dGhvblxuICAgICBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGByZXByKClgYCBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZVxuICAgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLFxuICAgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkXG4gICB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgYGA8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+YGAgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzIGBgX19yZXByX18oKWBgXG4gICBidXQgbm90IGBgX19zdHJfXygpYGAsIHRoZW4gYGBfX3JlcHJfXygpYGAgaXMgYWxzbyB1c2VkIHdoZW4gYW5cbiAgICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzXG4gICByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgc3RyKClgYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlIGBgcHJpbnQoKWBgXG4gICBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gYGBfX3JlcHJfXygpYGAgaW4gdGhhdCBpdCBkb2VzIG5vdCBoYXZlXG4gICB0byBiZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlXG4gICByZXByZXNlbnRhdGlvbiBtYXkgYmUgdXNlZCBpbnN0ZWFkLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYGBieXRlcygpYGAgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhIGBgYnl0ZXNgYCBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgZm9ybWF0KClgYCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICBgYGZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0IGBgeCA9PSB5YGAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09XG4gICBoYXNoKHkpYGAuXG5cbiAgIENsYXNzZXMgd2hpY2ggaW5oZXJpdCBhIGBgX19oYXNoX18oKWBgIG1ldGhvZCBmcm9tIGEgcGFyZW50IGNsYXNzXG4gICBidXQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIGBgX19lcV9fKClgYCBzdWNoIHRoYXQgdGhlIGhhc2ggdmFsdWVcbiAgIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYSB2YWx1ZS1cbiAgIGJhc2VkIGNvbmNlcHQgb2YgZXF1YWxpdHkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpZGVudGl0eSBiYXNlZFxuICAgZXF1YWxpdHkpIGNhbiBleHBsaWNpdGx5IGZsYWcgdGhlbXNlbHZlcyBhcyBiZWluZyB1bmhhc2hhYmxlIGJ5XG4gICBzZXR0aW5nIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvIG1lYW5zXG4gICB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhbiBhcHByb3ByaWF0ZVxuICAgYGBUeXBlRXJyb3JgYCB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0byByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLFxuICAgYnV0IHRoZXkgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIHVuaGFzaGFibGUgd2hlblxuICAgY2hlY2tpbmcgYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgKHVubGlrZSBjbGFzc2VzXG4gICB3aGljaCBkZWZpbmUgdGhlaXIgb3duIGBgX19oYXNoX18oKWBgIHRvIGV4cGxpY2l0bHkgcmFpc2VcbiAgIGBgVHlwZUVycm9yYGApLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBgX19lcV9fKClgYCBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBgYF9faGFzaF9fKClgYCBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGVcbiAgIGludGVycHJldGVyIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyBgYF9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX19gYC4gT3RoZXJ3aXNlIHRoZSBpbmhlcml0YW5jZSBvZlxuICAgYGBfX2hhc2hfXygpYGAgd2lsbCBiZSBibG9ja2VkLCBqdXN0IGFzIGlmIGBgX19oYXNoX19gYCBoYWQgYmVlblxuICAgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSBgYF9faGFzaF9fKClgYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWVcbiAgICAgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyBgYFBZVEhPTkhBU0hTRUVEYGAuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgIGBgYm9vbCgpYGA7IHNob3VsZCByZXR1cm4gYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgV2hlbiB0aGlzIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIGBgX19sZW5fXygpYGAgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlXG4gICBvYmplY3QgaXMgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3NcbiAgIGRlZmluZXMgbmVpdGhlciBgYF9fbGVuX18oKWBgIG5vciBgYF9fYm9vbF9fKClgYCwgYWxsIGl0cyBpbnN0YW5jZXNcbiAgIGFyZSBjb25zaWRlcmVkIHRydWUuXG4nLAorICdkZWJ1Z2dlcic6ICdcbmBgcGRiYGAgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG1vZHVsZSBgYHBkYmBgIGRlZmluZXMgYW4gaW50ZXJhY3RpdmUgc291cmNlIGNvZGUgZGVidWdnZXIgZm9yXG5QeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgYnJlYWtwb2ludHMgYW5kXG5zaW5nbGUgc3RlcHBpbmcgYXQgdGhlIHNvdXJjZSBsaW5lIGxldmVsLCBpbnNwZWN0aW9uIG9mIHN0YWNrIGZyYW1lcyxcbnNvdXJjZSBjb2RlIGxpc3RpbmcsIGFuZCBldmFsdWF0aW9uIG9mIGFyYml0cmFyeSBQeXRob24gY29kZSBpbiB0aGVcbmNvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmdcbmFuZCBjYW4gYmUgY2FsbGVkIHVuZGVyIHByb2dyYW0gY29udHJvbC5cblxuVGhlIGRlYnVnZ2VyIGlzIGV4dGVuc2libGUgLS0gaXQgaXMgYWN0dWFsbHkgZGVmaW5lZCBhcyB0aGUgY2xhc3NcbmBgUGRiYGAuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnlcbnJlYWRpbmcgdGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgYGBiZGJgYFxuYW5kIGBgY21kYGAuXG5cblRoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgYGAoUGRiKWBgLiBUeXBpY2FsIHVzYWdlIHRvIHJ1biBhIHByb2dyYW1cbnVuZGVyIGNvbnRyb2wgb2YgdGhlIGRlYnVnZ2VyIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IHBkYi5ydW4oXCdteW1vZHVsZS50ZXN0KClcJylcbiAgID4gPHN0cmluZz4oMCk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgTmFtZUVycm9yOiBcJ3NwYW1cJ1xuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYilcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSBgYHJlYWRsaW5lYGAgbW9kdWxlIGlzXG5hdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWxcbmFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlIGBgcHJpbnRgYCBjb21tYW5kLlxuXG5gYHBkYi5weWBgIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy5cbkZvciBleGFtcGxlOlxuXG4gICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuXG5XaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgcG9zdC1tb3J0ZW1cbmRlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgcG9zdC1cbm1vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiIHdpbGxcbnJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAzLjI6IGBgcGRiLnB5YGAgbm93IGFjY2VwdHMgYSBgYC1jYGAgb3B0aW9uIHRoYXRcbmV4ZWN1dGVzIGNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgYGAucGRicmNgYCBmaWxlLCBzZWUgKkRlYnVnZ2VyXG5Db21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlIGBgY29udGludWVgYCBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQoc3BhbSlcbiAgIE5hbWVFcnJvcjogc3BhbVxuICAgPj4+IHBkYi5wbSgpXG4gICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4gICAtPiBwcmludChzcGFtKVxuICAgKFBkYilcblxuVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgZGVidWdnZXJcbmluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcblxucGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSB1bmRlclxuICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55IGNvZGUgaXNcbiAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSBgYGNvbnRpbnVlYGAsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nIGBgc3RlcGBgIG9yIGBgbmV4dGBgIChhbGwgdGhlc2VcbiAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgKmxvY2FscypcbiAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnlcbiAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSBgYF9fbWFpbl9fYGAgaXMgdXNlZC4gIChTZWVcbiAgIHRoZSBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBvciBgYGV2YWwoKWBgXG4gICBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gYGBydW5ldmFsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zIHRoZVxuICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvXG4gICBgYHJ1bigpYGAuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gYGBydW5jYWxsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cblRoZSBgYHJ1bipgYCBmdW5jdGlvbnMgYW5kIGBgc2V0X3RyYWNlKClgYCBhcmUgYWxpYXNlcyBmb3Jcbmluc3RhbnRpYXRpbmcgdGhlIGBgUGRiYGAgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZVxubmFtZS4gIElmIHlvdSB3YW50IHRvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzXG55b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgYGBQZGJgYCBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG5cbiAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGVcbiAgIHVuZGVybHlpbmcgYGBjbWQuQ21kYGAgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgIGBgY29udGludWVgYCBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVFxuICAgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG5gYGgoZWxwKWBgIG1lYW5zIHRoYXQgZWl0aGVyIGBgaGBgIG9yIGBgaGVscGBgIGNhbiBiZSB1c2VkIHRvIGVudGVyXG50aGUgaGVscCBjb21tYW5kIChidXQgbm90IGBgaGVgYCBvciBgYGhlbGBgLCBub3IgYGBIYGAgb3IgYGBIZWxwYGAgb3JcbmBgSEVMUGBgKS4gIEFyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlXG4oc3BhY2VzIG9yIHRhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHNcbihgYFtdYGApIGluIHRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKGBgfGBgKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSBgYGxpc3RgYCBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgbGlzdGVkLlxuXG5Db21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2VzblwndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgUHl0aG9uXG5zdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiBleGNsYW1hdGlvblxucG9pbnQgKGBgIWBgKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnlcbmBgOztgYC4gIChBIHNpbmdsZSBgYDtgYCBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvclxubXVsdGlwbGUgY29tbWFuZHMgaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vXG5pbnRlbGxpZ2VuY2UgaXMgYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0XG5hdCB0aGUgZmlyc3QgYGA7O2BgIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZFxuc3RyaW5nLlxuXG5JZiBhIGZpbGUgYGAucGRicmNgYCBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlXG5jdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWRcbmF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZlxuYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmRcbmFsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogYGAucGRicmNgYCBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzIGBgY29udGludWVgYCBvciBgYG5leHRgYC4gIFByZXZpb3VzbHksXG50aGVzZSBjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuXG5oKGVscCkgW2NvbW1hbmRdXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggYVxuICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gIGBgaGVscCBwZGJgYFxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgYGBwZGJgYFxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLFxuICAgYGBoZWxwIGV4ZWNgYCBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlIGBgIWBgIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gYGBzeXMucGF0aGBgLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIGBgYnJlYWtgYC5cblxuY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyBhdFxuICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhclxuICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCBmaXJzdFxuICAgYXNrIGNvbmZpcm1hdGlvbikuXG5cbmRpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4gICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCBjYXVzZVxuICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSBicmVha3BvaW50LCBpdFxuICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cblxuZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG5cbmlnbm9yZSBicG51bWJlciBbY291bnRdXG5cbiAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiBjb3VudCBpc1xuICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzIGFjdGl2ZVxuICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbiAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG5cbmNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuXG4gICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAqY29uZGl0aW9uKlxuICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSBicmVha3BvaW50XG4gICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG5cbmNvbW1hbmRzIFticG51bWJlcl1cblxuICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICBUaGVcbiAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgbGluZVxuICAgY29udGFpbmluZyBqdXN0IGBgZW5kYGAgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcHJpbnQgc29tZV92YXJpYWJsZVxuICAgICAgKGNvbSkgZW5kXG4gICAgICAoUGRiKVxuXG4gICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCBmb2xsb3dcbiAgIGl0IGltbWVkaWF0ZWx5IHdpdGggYGBlbmRgYDsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgYG5leHRgYCBhbmRcbiAgIGBgc3RlcGBgIGlzIHRoYXQgYGBzdGVwYGAgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZVxuICAgYGBuZXh0YGAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5XG4gICBzdG9wcGluZyBhdCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSBgYGZvcmBgIGxvb3Agb3Igb3V0XG4gICBvZiBhIGBgZmluYWxseWBgIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCBgYC5gYCBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS5cbiAgIFdpdGggb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgYGAtPmBgLiAgSWZcbiAgIGFuIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5IGBgPj5gYCwgaWYgaXRcbiAgIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSBgYD4+YGAgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yIGBgbGlzdGBgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucChyaW50KSBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSBgYHByaW50YGAgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpc1xuICAgcHJldHR5LXByaW50ZWQgdXNpbmcgdGhlIGBgcHByaW50YGAgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSBgYGNvZGVgYCBtb2R1bGUpIHdob3NlXG4gICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluXG4gICB0aGUgY3VycmVudCBzY29wZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hbGlhcyBbbmFtZSBbY29tbWFuZF1dXG5cbiAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlIGNvbW1hbmRcbiAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gYmVcbiAgIGluZGljYXRlZCBieSBgYCUxYGAsIGBgJTJgYCwgYW5kIHNvIG9uLCB3aGlsZSBgYCUqYGAgaXMgcmVwbGFjZWQgYnlcbiAgIGFsbCB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgZm9yXG4gICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSBsaXN0ZWQuXG5cbiAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgbGVnYWxseVxuICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICpjYW4qIGJlXG4gICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCB0aGVcbiAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlIGxlZnRcbiAgIGFsb25lLlxuXG4gICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiBwbGFjZWRcbiAgIGluIHRoZSBgYC5wZGJyY2BgIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggYGBzaGxleGBgIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuICAgYGBzeXMuYXJndmBgLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9uc1xuICAgYXJlIHByZXNlcnZlZC4gYGByZXN0YXJ0YGAgaXMgYW4gYWxpYXMgZm9yIGBgcnVuYGAuXG5cbnEodWl0KVxuXG4gICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluIG1vZHVsZSBpc1xuICAgIGRldGVybWluZWQgYnkgdGhlIGBgX19uYW1lX19gYCBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCisgJ2RlbCc6ICdcblRoZSBgYGRlbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgYGBnbG9iYWxgYFxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG5gYE5hbWVFcnJvcmBgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cblxuRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzIHBhc3NlZFxudG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgZXZlblxudGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lXG5mcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhIG5lc3RlZFxuYmxvY2suXG4nLAogICdkaWN0JzogJ1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvblxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxubmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4iZm9yIiBhbmQgImlmIiBjbGF1c2VzLiBXaGVuIHRoZSBjb21wcmVoZW5zaW9uIGlzIHJ1biwgdGhlIHJlc3VsdGluZ1xua2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSBvcmRlclxudGhleSBhcmUgcHJvZHVjZWQuXG5cblJlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZXMgb2YgdGhlIGtleSB2YWx1ZXMgYXJlIGxpc3RlZCBlYXJsaWVyIGluXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqLiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG5zaG91bGQgYmUgKmhhc2hhYmxlKiwgd2hpY2ggZXhjbHVkZXMgYWxsIG11dGFibGUgb2JqZWN0cy4pICBDbGFzaGVzXG5iZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbnJpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCiAgJ2R5bmFtaWMtZmVhdHVyZXMnOiAnXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5JZiB0aGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIHVzZWQgaW4gYVxuZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbnZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSBgYFN5bnRheEVycm9yYGAuXG5cblRoZSBgYGV2YWwoKWBgIGFuZCBgYGV4ZWMoKWBgIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlIGBgZXhlYygpYGAgYW5kIGBgZXZhbCgpYGAgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCiAgJ2Vsc2UnOiAnXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKQEAgLTMzLDE0ICszNCwxNCBAQAogICdleHBybGlzdHMnOiAnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG5cbkFuIGV4cHJlc3Npb24gbGlzdCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZVxubGVuZ3RoIG9mIHRoZSB0dXBsZSBpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlXG5leHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cblxuVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlIChhLmsuYS4gYVxuKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSBleHByZXNzaW9uXG53aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc25cJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgeWllbGRzIHRoZVxudmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gZW1wdHkgcGFpclxub2YgcGFyZW50aGVzZXM6IGBgKClgYC4pXG4nLAogICdmbG9hdGluZyc6ICdcbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5GbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuZGVmaW5pdGlvbnM6XG5cbiAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4gICBwb2ludGZsb2F0ICAgIDo6PSBbaW50cGFydF0gZnJhY3Rpb24gfCBpbnRwYXJ0ICIuIlxuICAgZXhwb25lbnRmbG9hdCA6Oj0gKGludHBhcnQgfCBwb2ludGZsb2F0KSBleHBvbmVudFxuICAgaW50cGFydCAgICAgICA6Oj0gZGlnaXQrXG4gICBmcmFjdGlvbiAgICAgIDo6PSAiLiIgZGlnaXQrXG4gICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdCtcblxuTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nXG5yYWRpeCAxMC4gRm9yIGV4YW1wbGUsIGBgMDc3ZTAxMGBgIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZVxubnVtYmVyIGFzIGBgNzdlMTBgYC4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlIGBgLTFgYFxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgYGAtYGAgYW5kIHRoZVxubGl0ZXJhbCBgYDFgYC5cbicsCiAgJ2Zvcic6ICdcblRoZSBgYGZvcmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYVxuc2VxdWVuY2UgKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG5gYGV4cHJlc3Npb25fbGlzdGBgLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciBvZiBhc2NlbmRpbmcgaW5kaWNlcy4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgYGBTdG9wSXRlcmF0aW9uYGBcbmV4Y2VwdGlvbiksIHRoZSBzdWl0ZSBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCxcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5jb250aW51ZXMgd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSBgYGVsc2VgYCBjbGF1c2UgaWYgdGhlcmUgd2FzXG5ubyBuZXh0IGl0ZW0uXG5cblRoZSBzdWl0ZSBtYXkgYXNzaWduIHRvIHRoZSB2YXJpYWJsZShzKSBpbiB0aGUgdGFyZ2V0IGxpc3Q7IHRoaXMgZG9lc1xubm90IGFmZmVjdCB0aGUgbmV4dCBpdGVtIGFzc2lnbmVkIHRvIGl0LlxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsXG5ieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYHJhbmdlKClgYCByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzIGBgZm9yXG5pIDo9IGEgdG8gYiBkb2BgOyBlLmcuLCBgYGxpc3QocmFuZ2UoMykpYGAgcmV0dXJucyB0aGUgbGlzdCBgYFswLCAxLFxuMl1gYC5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGUgbG9vcFxuICAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogJ1xuRm9ybWF0IFN0cmluZyBTeW50YXhcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHN0ci5mb3JtYXQoKWBgIG1ldGhvZCBhbmQgdGhlIGBgRm9ybWF0dGVyYGAgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mIGBgRm9ybWF0dGVyYGAsXG5zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cblxuRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlc1xuYGB7fWBgLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbFxudGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgdG8gaW5jbHVkZVxuYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgZG91Ymxpbmc6XG5gYHt7YGAgYW5kIGBgfX1gYC5cblxuVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcblxuICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiBjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbiAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbiAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4gICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbiAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJdIj4gK1xuICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIiB8ICJhIlxuICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbj5cblxuSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCBhXG4qZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byBiZSBmb3JtYXR0ZWRcbmFuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgZmllbGQuIFRoZVxuKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qIGZpZWxkLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgYGBcJyFcJ2BgLCBhbmQgYSAqZm9ybWF0X3NwZWMqLCB3aGljaFxuaXMgcHJlY2VkZWQgYnkgYSBjb2xvbiBgYFwnOlwnYGAuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0XG5mb3IgdGhlIHJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgYGBcJzEwXCdgYCBvclxuYGBcJzotXVwnYGApIHdpdGhpbiBhIGZvcm1hdCBzdHJpbmcuIFRoZSAqYXJnX25hbWUqIGNhbiBiZSBmb2xsb3dlZCBieVxuYW55IG51bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgdGhlXG5mb3JtIGBgXCcubmFtZVwnYGAgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nIGBgZ2V0YXR0cigpYGAsXG53aGlsZSBhbiBleHByZXNzaW9uIG9mIHRoZSBmb3JtIGBgXCdbaW5kZXhdXCdgYCBkb2VzIGFuIGluZGV4IGxvb2t1cFxudXNpbmcgYGBfX2dldGl0ZW1fXygpYGAuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyBgYFwne30ge31cJ2BgIGlzIGVxdWl2YWxlbnQgdG8gYGBcJ3swfSB7MX1cJ2BgLlxuXG5Tb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuXG4gICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5IHJlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gezF9IlxuICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICMgXCd3ZWlnaHRcJyBhdHRyaWJ1dGUgb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbiAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICMgRmlyc3QgZWxlbWVudCBvZiBrZXl3b3JkIGFyZ3VtZW50IFwncGxheWVyc1wnLlxuXG5UaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlIGZvcm1hdHRpbmcuXG5Ob3JtYWxseSwgdGhlIGpvYiBvZiBmb3JtYXR0aW5nIGEgdmFsdWUgaXMgZG9uZSBieSB0aGVcbmBgX19mb3JtYXRfXygpYGAgbWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzXG5pdCBpcyBkZXNpcmFibGUgdG8gZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZyxcbm92ZXJyaWRpbmcgaXRzIG93biBkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZVxudG8gYSBzdHJpbmcgYmVmb3JlIGNhbGxpbmcgYGBfX2Zvcm1hdF9fKClgYCwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nXG5sb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogYGBcJyFzXCdgYCB3aGljaCBjYWxsc1xuYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZSwgYGBcJyFyXCdgYCB3aGljaCBjYWxscyBgYHJlcHIoKWBgIGFuZCBgYFwnIWFcJ2BgXG53aGljaCBjYWxscyBgYGFzY2lpKClgYC5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBjYW4gY29udGFpbiBvbmx5IGEgZmllbGRcbm5hbWU7IGNvbnZlcnNpb24gZmxhZ3MgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQuICBUaGVcbnJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZSBzdWJzdGl0dXRlZCBiZWZvcmUgdGhlXG4qZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpcyBhbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYVxudmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluIGBgZm9ybWF0KClgYCBmdW5jdGlvbi4gIEVhY2ggZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvd1xudGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIHRvIGJlIGludGVycHJldGVkLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yIGZvcm1hdFxuc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgb25seVxuc3VwcG9ydGVkIGJ5IHRoZSBudW1lcmljIHR5cGVzLlxuXG5BIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKGBgIiJgYCkgcHJvZHVjZXNcbnRoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCBgYHN0cigpYGAgb24gdGhlIHZhbHVlLiBBIG5vbi1cbmVtcHR5IGZvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG5cblRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG5cbiAgIGZvcm1hdF9zcGVjIDo6PSBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxuICAgZmlsbCAgICAgICAgOjo9IDxhIGNoYXJhY3RlciBvdGhlciB0aGFuIFwnfVwnPlxuICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuICAgc2lnbiAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuICAgd2lkdGggICAgICAgOjo9IGludGVnZXJcbiAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4gICB0eXBlICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiXG5cblRoZSAqZmlsbCogY2hhcmFjdGVyIGNhbiBiZSBhbnkgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCcuICBUaGVcbnByZXNlbmNlIG9mIGEgZmlsbCBjaGFyYWN0ZXIgaXMgc2lnbmFsZWQgYnkgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmdcbml0LCB3aGljaCBtdXN0IGJlIG9uZSBvZiB0aGUgYWxpZ25tZW50IG9wdGlvbnMuICBJZiB0aGUgc2Vjb25kXG5jaGFyYWN0ZXIgb2YgKmZvcm1hdF9zcGVjKiBpcyBub3QgYSB2YWxpZCBhbGlnbm1lbnQgb3B0aW9uLCB0aGVuIGl0IGlzXG5hc3N1bWVkIHRoYXQgYm90aCB0aGUgZmlsbCBjaGFyYWN0ZXIgYW5kIHRoZSBhbGlnbm1lbnQgb3B0aW9uIGFyZVxuYWJzZW50LlxuXG5UaGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBhbGlnbm1lbnQgb3B0aW9ucyBpcyBhcyBmb2xsb3dzOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCc8XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBtb3N0IG9iamVjdHMpLiAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz5cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG51bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPVwnYGAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgdGhlIHNpZ24gKGlmIGFueSkgICAgfFxuICAgfCAgICAgICAgICAgfCBidXQgYmVmb3JlIHRoZSBkaWdpdHMuICBUaGlzIGlzIHVzZWQgZm9yIHByaW50aW5nIGZpZWxkcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gXCcrMDAwMDAwMTIwXCcuIFRoaXMgYWxpZ25tZW50IG9wdGlvbiBpcyBvbmx5ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnXlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgY2VudGVyZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSBmaWVsZCB3aWR0aFxud2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyB0aGF0IHRoZVxuYWxpZ25tZW50IG9wdGlvbiBoYXMgbm8gbWVhbmluZyBpbiB0aGlzIGNhc2UuXG5cblRoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiBiZSBvbmUgb2ZcbnRoZSBmb2xsb3dpbmc6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJytcJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yIGJvdGggcG9zaXRpdmUgYXMgIHxcbiAgIHwgICAgICAgICAgIHwgd2VsbCBhcyBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnLVwnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzICh0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgdXNlZCBvbiBwb3NpdGl2ZSAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzLCBhbmQgYSBtaW51cyBzaWduIG9uIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBgYFwnI1wnYGAgb3B0aW9uIGNhdXNlcyB0aGUgImFsdGVybmF0ZSBmb3JtIiB0byBiZSB1c2VkIGZvciB0aGVcbmNvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgZGlmZmVyZW50XG50eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCBjb21wbGV4IGFuZFxuRGVjaW1hbCB0eXBlcy4gRm9yIGludGVnZXJzLCB3aGVuIGJpbmFyeSwgb2N0YWwsIG9yIGhleGFkZWNpbWFsIG91dHB1dFxuaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgYGBcJzBiXCdgYCwgYGBcJzBvXCdgYCwgb3JcbmBgXCcweFwnYGAgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgRGVjaW1hbCB0aGVcbmFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IG9mIHRoZSBjb252ZXJzaW9uIHRvIGFsd2F5cyBjb250YWluIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuIE5vcm1hbGx5LCBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgY29udmVyc2lvbnNcbm9ubHkgaWYgYSBkaWdpdCBmb2xsb3dzIGl0LiBJbiBhZGRpdGlvbiwgZm9yIGBgXCdnXCdgYCBhbmQgYGBcJ0dcJ2BgXG5jb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC5cblxuVGhlIGBgXCcsXCdgYCBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgdGhvdXNhbmRzXG5zZXBhcmF0b3IuIEZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgYGBcJ25cJ2BgIGludGVnZXJcbnByZXNlbnRhdGlvbiB0eXBlIGluc3RlYWQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSBgYFwnLFwnYGAgb3B0aW9uIChzZWUgYWxzbyAqKlBFUFxuMzc4KiopLlxuXG4qd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90XG5zcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC5cblxuSWYgdGhlICp3aWR0aCogZmllbGQgaXMgcHJlY2VkZWQgYnkgYSB6ZXJvIChgYFwnMFwnYGApIGNoYXJhY3RlciwgdGhpc1xuZW5hYmxlcyB6ZXJvLXBhZGRpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYW4gKmFsaWdubWVudCogdHlwZSBvZlxuYGBcJz1cJ2BgIGFuZCBhICpmaWxsKiBjaGFyYWN0ZXIgb2YgYGBcJzBcJ2BgLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggYGBcJ2ZcJ2BgIGFuZCBgYFwnRlwnYGAsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWxcbnBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoIGBgXCdnXCdgYCBvciBgYFwnR1wnYGAuXG5Gb3Igbm9uLW51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpblxub3RoZXIgd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuXG5UaGUgKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ3NcJ2BgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnc1wnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2JcJ2BgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdjXCdgYCAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2RcJ2BgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdvXCdgYCAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwneFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdYXCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnZFwnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0XG5gYFwnblwnYGAgYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCBgYGZsb2F0KClgYCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlXG5pbnRlZ2VyIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdFXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgYGBcJ2VcJ2BgIGV4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdmXCdgYCAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRlwnYGAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzIGBgXCdmXCdgYCwgYnV0IGNvbnZlcnRzIGBgbmFuYGAgdG8gICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgTkFOYGAgYW5kIGBgaW5mYGAgdG8gYGBJTkZgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiBgYHAgPj0gMWBgLCB0aGlzICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gYGBwYGAgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAgd291bGQgaGF2ZSBleHBvbmVudCBgYGV4cGBgLiAgVGhlbiBpZiBgYC00IDw9IGV4cCAgfFxuICAgfCAgICAgICAgICAgfCA8IHBgYCwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBcJ2ZcJ2BgIGFuZCBwcmVjaXNpb24gYGBwLTEtZXhwYGAuIE90aGVyd2lzZSwgdGhlIG51bWJlciAgIHxcbiAgIHwgICAgICAgICAgIHwgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYC4gSW4gYm90aCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAgICB8XG4gICB8ICAgICAgICAgICB8IHJlbW92ZWQgZnJvbSB0aGUgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyAgICAgfFxuICAgfCAgICAgICAgICAgfCBhbHNvIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nICAgIHxcbiAgIHwgICAgICAgICAgIHwgaXQuICBQb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB8XG4gICB8ICAgICAgICAgICB8IHplcm8sIGFuZCBuYW5zLCBhcmUgZm9ybWF0dGVkIGFzIGBgaW5mYGAsIGBgLWluZmBgLCBgYDBgYCwgfFxuICAgfCAgICAgICAgICAgfCBgYC0wYGAgYW5kIGBgbmFuYGAgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgYGAwYGAgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50ICB8XG4gICB8ICAgICAgICAgICB8IHRvIGEgcHJlY2lzaW9uIG9mIGBgMWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyBgYFwnZ1wnYGAgZXhjZXB0IHN3aXRjaGVzIHRvIGBgXCdFXCdgYCB8XG4gICB8ICAgICAgICAgICB8IGlmIHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBpbmZpbml0eSBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdnXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJyVcJ2BgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKGBgXCdmXCdgYCkgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gYGBcJ2dcJ2BgLCBleGNlcHQgd2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBkZWNpbWFsIHBvaW50IGFuZCBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBUaGlzIGlzICAgfFxuICAgfCAgICAgICAgICAgfCBpbnRlbmRlZCB0byBtYXRjaCBgYHN0cigpYGAsIGV4Y2VwdCB5b3UgY2FuIGFkZCB0aGUgb3RoZXIgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggYW5kIGNvbXBhcmlzb25cbndpdGggdGhlIG9sZCBgYCVgYC1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZFxuYGAlYGAtZm9ybWF0dGluZywgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGBge31gYCBhbmQgd2l0aCBgYDpgYCB1c2VkXG5pbnN0ZWFkIG9mIGBgJWBgLiBGb3IgZXhhbXBsZSwgYGBcJyUwMy4yZlwnYGAgY2FuIGJlIHRyYW5zbGF0ZWQgdG9cbmBgXCd7OjAzLjJmfVwnYGAuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+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+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTpcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiAnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuJywKKyAnZm9ybWF0c3RyaW5ncyc6ICdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBzdHIuZm9ybWF0KClgYCBtZXRob2QgYW5kIHRoZSBgYEZvcm1hdHRlcmBgIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiBgYEZvcm1hdHRlcmBgLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbmBge31gYC4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuYGB7e2BgIGFuZCBgYH19YGAuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgXCchXCdgYCwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2hcbmlzIHByZWNlZGVkIGJ5IGEgY29sb24gYGBcJzpcJ2BgLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdFxuZm9yIHRoZSByZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzIGBgXCcxMFwnYGAgb3JcbmBgXCc6LV1cJ2BgKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnlcbmFueSBudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZVxuZm9ybSBgYFwnLm5hbWVcJ2BgIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyBgYGdldGF0dHIoKWBgLFxud2hpbGUgYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgYFwnW2luZGV4XVwnYGAgZG9lcyBhbiBpbmRleCBsb29rdXBcbnVzaW5nIGBgX19nZXRpdGVtX18oKWBgLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gYGBcJ3t9IHt9XCdgYCBpcyBlcXVpdmFsZW50IHRvIGBgXCd7MH0gezF9XCdgYC5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgIyBSZWZlcmVuY2VzIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkIGFyZ3VtZW50IFwnbmFtZVwnXG4gICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlXG5gYF9fZm9ybWF0X18oKWBgIG1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlc1xuaXQgaXMgZGVzaXJhYmxlIHRvIGZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsXG5vdmVycmlkaW5nIGl0cyBvd24gZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWVcbnRvIGEgc3RyaW5nIGJlZm9yZSBjYWxsaW5nIGBgX19mb3JtYXRfXygpYGAsIHRoZSBub3JtYWwgZm9ybWF0dGluZ1xubG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6IGBgXCchc1wnYGAgd2hpY2ggY2FsbHNcbmBgc3RyKClgYCBvbiB0aGUgdmFsdWUsIGBgXCchclwnYGAgd2hpY2ggY2FsbHMgYGByZXByKClgYCBhbmQgYGBcJyFhXCdgYFxud2hpY2ggY2FsbHMgYGBhc2NpaSgpYGAuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgY2FuIGNvbnRhaW4gb25seSBhIGZpZWxkXG5uYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiAgVGhlXG5yZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZVxuKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXMgYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGFcbnZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiBgYGZvcm1hdCgpYGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nIChgYCIiYGApIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZS4gQSBub24tXG5lbXB0eSBmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ3tcJyBvciBcJ31cJz5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5UaGUgKmZpbGwqIGNoYXJhY3RlciBjYW4gYmUgYW55IGNoYXJhY3RlciBvdGhlciB0aGFuIFwne1wnIG9yIFwnfVwnLiAgVGhlXG5wcmVzZW5jZSBvZiBhIGZpbGwgY2hhcmFjdGVyIGlzIHNpZ25hbGVkIGJ5IHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nXG5pdCwgd2hpY2ggbXVzdCBiZSBvbmUgb2YgdGhlIGFsaWdubWVudCBvcHRpb25zLiAgSWYgdGhlIHNlY29uZFxuY2hhcmFjdGVyIG9mICpmb3JtYXRfc3BlYyogaXMgbm90IGEgdmFsaWQgYWxpZ25tZW50IG9wdGlvbiwgdGhlbiBpdCBpc1xuYXNzdW1lZCB0aGF0IGJvdGggdGhlIGZpbGwgY2hhcmFjdGVyIGFuZCB0aGUgYWxpZ25tZW50IG9wdGlvbiBhcmVcbmFic2VudC5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnPFwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc+XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz1cJ2BgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ15cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCcrXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJy1cJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYGBcJyNcJ2BgIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlIGBgXCcwYlwnYGAsIGBgXCcwb1wnYGAsIG9yXG5gYFwnMHhcJ2BgIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciBgYFwnZ1wnYGAgYW5kIGBgXCdHXCdgYFxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSBgYFwnLFwnYGAgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kc1xuc2VwYXJhdG9yLiBGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlIGBgXCduXCdgYCBpbnRlZ2VyXG5wcmVzZW50YXRpb24gdHlwZSBpbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgYGBcJyxcJ2BgIG9wdGlvbiAoc2VlIGFsc28gKipQRVBcbjM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cblByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhIHplcm8gKGBgXCcwXCdgYCkgY2hhcmFjdGVyIGVuYWJsZXNcbnNpZ24tYXdhcmUgemVyby1wYWRkaW5nIGZvciBudW1lcmljIHR5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGFcbipmaWxsKiBjaGFyYWN0ZXIgb2YgYGBcJzBcJ2BgIHdpdGggYW4gKmFsaWdubWVudCogdHlwZSBvZiBgYFwnPVwnYGAuXG5cblRoZSAqcHJlY2lzaW9uKiBpcyBhIGRlY2ltYWwgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgZGlnaXRzIHNob3VsZFxuYmUgZGlzcGxheWVkIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlXG5mb3JtYXR0ZWQgd2l0aCBgYFwnZlwnYGAgYW5kIGBgXCdGXCdgYCwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjaW1hbFxucG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggYGBcJ2dcJ2BgIG9yIGBgXCdHXCdgYC5cbkZvciBub24tbnVtYmVyIHR5cGVzIHRoZSBmaWVsZCBpbmRpY2F0ZXMgdGhlIG1heGltdW0gZmllbGQgc2l6ZSAtIGluXG5vdGhlciB3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgY29udGVudC5cblRoZSAqcHJlY2lzaW9uKiBpcyBub3QgYWxsb3dlZCBmb3IgaW50ZWdlciB2YWx1ZXMuXG5cbkZpbmFsbHksIHRoZSAqdHlwZSogZGV0ZXJtaW5lcyBob3cgdGhlIGRhdGEgc2hvdWxkIGJlIHByZXNlbnRlZC5cblxuVGhlIGF2YWlsYWJsZSBzdHJpbmcgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnc1wnYGAgICB8IFN0cmluZyBmb3JtYXQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgdHlwZSBmb3Igc3RyaW5ncyBhbmQgICAgfFxuICAgfCAgICAgICAgICAgfCBtYXkgYmUgb21pdHRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzIGBgXCdzXCdgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnYlwnYGAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDIuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2NcJ2BgICAgfCBDaGFyYWN0ZXIuIENvbnZlcnRzIHRoZSBpbnRlZ2VyIHRvIHRoZSBjb3JyZXNwb25kaW5nICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlIHByaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZFwnYGAgICB8IERlY2ltYWwgSW50ZWdlci4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTAuICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ29cJ2BgICAgfCBPY3RhbCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDguICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCd4XCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIGxvd2VyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ1hcJ2BgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgdXBwZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnblwnYGAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyBgYFwnZFwnYGAsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzIGBgXCdkXCdgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5JbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcHJlc2VudGF0aW9uIHR5cGVzLCBpbnRlZ2VycyBjYW4gYmUgZm9ybWF0dGVkXG53aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93IChleGNlcHRcbmBgXCduXCdgYCBhbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sIGBgZmxvYXQoKWBgIGlzIHVzZWQgdG8gY29udmVydCB0aGVcbmludGVnZXIgdG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnZVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gU2FtZSBhcyBgYFwnZVwnYGAgZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIFwnRVwnIGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2ZcJ2BgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhIGZpeGVkLXBvaW50IG51bWJlci4gIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdGXCdgYCAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgYGBcJ2ZcJ2BgLCBidXQgY29udmVydHMgYGBuYW5gYCB0byAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBOQU5gYCBhbmQgYGBpbmZgYCB0byBgYElORmBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZ1wnYGAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uIGBgcCA+PSAxYGAsIHRoaXMgICAgfFxuICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byBgYHBgYCBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0cyB0aGUgcmVzdWx0IGluIGVpdGhlciBmaXhlZC1wb2ludCBmb3JtYXQgb3IgaW4gICAgICB8XG4gICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLiAgVGhlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgdGhlIHJlc3VsdCAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYCB3b3VsZCBoYXZlIGV4cG9uZW50IGBgZXhwYGAuICBUaGVuIGlmIGBgLTQgPD0gZXhwICB8XG4gICB8ICAgICAgICAgICB8IDwgcGBgLCB0aGUgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYFwnZlwnYGAgYW5kIHByZWNpc2lvbiBgYHAtMS1leHBgYC4gT3RoZXJ3aXNlLCB0aGUgbnVtYmVyICAgfFxuICAgfCAgICAgICAgICAgfCBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgLiBJbiBib3RoIGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVtb3ZlZCBmcm9tIHRoZSBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzICAgICB8XG4gICB8ICAgICAgICAgICB8IGFsc28gcmVtb3ZlZCBpZiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgICAgfFxuICAgfCAgICAgICAgICAgfCBpdC4gIFBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHxcbiAgIHwgICAgICAgICAgIHwgemVybywgYW5kIG5hbnMsIGFyZSBmb3JtYXR0ZWQgYXMgYGBpbmZgYCwgYGAtaW5mYGAsIGBgMGBgLCB8XG4gICB8ICAgICAgICAgICB8IGBgLTBgYCBhbmQgYGBuYW5gYCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiBgYDBgYCBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgIHxcbiAgIHwgICAgICAgICAgIHwgdG8gYSBwcmVjaXNpb24gb2YgYGAxYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnR1wnYGAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzIGBgXCdnXCdgYCBleGNlcHQgc3dpdGNoZXMgdG8gYGBcJ0VcJ2BgIHxcbiAgIHwgICAgICAgICAgIHwgaWYgdGhlIG51bWJlciBnZXRzIHRvbyBsYXJnZS4gVGhlIHJlcHJlc2VudGF0aW9ucyBvZiAgICAgICB8XG4gICB8ICAgICAgICAgICB8IGluZmluaXR5IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsIHRvby4gICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2dcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnJVwnYGAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgYW5kIGRpc3BsYXlzIGluICAgfFxuICAgfCAgICAgICAgICAgfCBmaXhlZCAoYGBcJ2ZcJ2BgKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byBgYFwnZ1wnYGAsIGV4Y2VwdCB3aXRoIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGRlY2ltYWwgcG9pbnQgYW5kIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgMTIuIFRoaXMgaXMgICB8XG4gICB8ICAgICAgICAgICB8IGludGVuZGVkIHRvIG1hdGNoIGBgc3RyKClgYCwgZXhjZXB0IHlvdSBjYW4gYWRkIHRoZSBvdGhlciAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXQgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblxuRm9ybWF0IGV4YW1wbGVzXG49PT09PT09PT09PT09PT1cblxuVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGV4YW1wbGVzIG9mIHRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbmQgY29tcGFyaXNvblxud2l0aCB0aGUgb2xkIGBgJWBgLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkXG5gYCVgYC1mb3JtYXR0aW5nLCB3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGB7fWBgIGFuZCB3aXRoIGBgOmBgIHVzZWRcbmluc3RlYWQgb2YgYGAlYGAuIEZvciBleGFtcGxlLCBgYFwnJTAzLjJmXCdgYCBjYW4gYmUgdHJhbnNsYXRlZCB0b1xuYGBcJ3s6MDMuMmZ9XCdgYC5cblxuVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgb3B0aW9ucywgc2hvd25cbmluIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgcG9zaXRpb246XG5cbiAgID4+PiBcJ3swfSwgezF9LCB7Mn1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7fSwge30sIHt9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpICAjIDMuMSsgb25seVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KCpcJ2FiY1wnKSAgICAgICMgdW5wYWNraW5nIGFyZ3VtZW50IHNlcXVlbmNlXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezB9ezF9ezB9XCcuZm9ybWF0KFwnYWJyYVwnLCBcJ2NhZFwnKSAgICMgYXJndW1lbnRzXCcgaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbiAgIFwnYWJyYWNhZGFicmFcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IG5hbWU6XG5cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdChsYXRpdHVkZT1cJzM3LjI0TlwnLCBsb25naXR1ZGU9XCctMTE1LjgxV1wnKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG4gICA+Pj4gY29vcmQgPSB7XCdsYXRpdHVkZVwnOiBcJzM3LjI0TlwnLCBcJ2xvbmdpdHVkZVwnOiBcJy0xMTUuODFXXCd9XG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQoKipjb29yZClcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgYXR0cmlidXRlczpcblxuICAgPj4+IGMgPSAzLTVqXG4gICA+Pj4gKFwnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IHswLnJlYWx9IFwnXG4gICAuLi4gIFwnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS5cJykuZm9ybWF0KGMpXG4gICBcJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLlwnXG4gICA+Pj4gY2xhc3MgUG9pbnQ6XG4gICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KTpcbiAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ1BvaW50KHtzZWxmLnh9LCB7c2VsZi55fSlcJy5mb3JtYXQoc2VsZj1zZWxmKVxuICAgLi4uXG4gICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuICAgXCdQb2ludCg0LCAyKVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBpdGVtczpcblxuICAgPj4+IGNvb3JkID0gKDMsIDUpXG4gICA+Pj4gXCdYOiB7MFswXX07ICBZOiB7MFsxXX1cJy5mb3JtYXQoY29vcmQpXG4gICBcJ1g6IDM7ICBZOiA1XCdcblxuUmVwbGFjaW5nIGBgJXNgYCBhbmQgYGAlcmBgOlxuXG4gICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiB7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4gICAicmVwcigpIHNob3dzIHF1b3RlczogXCd0ZXN0MVwnOyBzdHIoKSBkb2VzblwndDogdGVzdDIiXG5cbkFsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG5cbiAgID4+PiBcJ3s6PDMwfVwnLmZvcm1hdChcJ2xlZnQgYWxpZ25lZFwnKVxuICAgXCdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICBcJ1xuICAgPj4+IFwnezo+MzB9XCcuZm9ybWF0KFwncmlnaHQgYWxpZ25lZFwnKVxuICAgXCcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWRcJ1xuICAgPj4+IFwnezpeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJylcbiAgIFwnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6Kl4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKSAgIyB1c2UgXCcqXCcgYXMgYSBmaWxsIGNoYXJcbiAgIFwnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqXCdcblxuUmVwbGFjaW5nIGBgJStmYGAsIGBgJS1mYGAsIGFuZCBgYCUgZmBgIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcblxuICAgPj4+IFwnezorZn07IHs6K2Z9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0IGFsd2F5c1xuICAgXCcrMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7OiBmfTsgezogZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSBmb3IgcG9zaXRpdmUgbnVtYmVyc1xuICAgXCcgMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7Oi1mfTsgezotZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgbWludXMgLS0gc2FtZSBhcyBcJ3s6Zn07IHs6Zn1cJ1xuICAgXCczLjE0MDAwMDsgLTMuMTQwMDAwXCdcblxuUmVwbGFjaW5nIGBgJXhgYCBhbmQgYGAlb2BgIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnRcbmJhc2VzOlxuXG4gICA+Pj4gIyBmb3JtYXQgYWxzbyBzdXBwb3J0cyBiaW5hcnkgbnVtYmVyc1xuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDp4fTsgIG9jdDogezA6b307ICBiaW46IHswOmJ9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwXCdcbiAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOiN4fTsgIG9jdDogezA6I299OyAgYmluOiB7MDojYn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMHgyYTsgIG9jdDogMG81MjsgIGJpbjogMGIxMDEwMTBcJ1xuXG5Vc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuXG4gICA+Pj4gXCd7Oix9XCcuZm9ybWF0KDEyMzQ1Njc4OTApXG4gICBcJzEsMjM0LDU2Nyw4OTBcJ1xuXG5FeHByZXNzaW5nIGEgcGVyY2VudGFnZTpcblxuICAgPj4+IHBvaW50cyA9IDE5XG4gICA+Pj4gdG90YWwgPSAyMlxuICAgPj4+IFwnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX1cJy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuICAgXCdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JVwnXG5cblVzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcblxuICAgPj4+IGltcG9ydCBkYXRldGltZVxuICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuICAgPj4+IFwnezolWS0lbS0lZCAlSDolTTolU31cJy5mb3JtYXQoZClcbiAgIFwnMjAxMC0wNy0wNCAxMjoxNTo1OFwnXG5cbk5lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG5cbiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKFwnPF4+XCcsIFtcJ2xlZnRcJywgXCdjZW50ZXJcJywgXCdyaWdodFwnXSk6XG4gICAuLi4gICAgIFwnezA6e2ZpbGx9e2FsaWdufTE2fVwnLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCBhbGlnbj1hbGlnbilcbiAgIC4uLlxuICAgXCdsZWZ0PDw8PDw8PDw8PDw8XCdcbiAgIFwnXl5eXl5jZW50ZXJeXl5eXlwnXG4gICBcJz4+Pj4+Pj4+Pj4+cmlnaHRcJ1xuICAgPj4+XG4gICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuICAgPj4+IFwnezowMlh9ezowMlh9ezowMlh9ezowMlh9XCcuZm9ybWF0KCpvY3RldHMpXG4gICBcJ0MwQTgwMDAxXCdcbiAgID4+PiBpbnQoXywgMTYpXG4gICAzMjMyMjM1NTIxXG4gICA+Pj5cbiAgID4+PiB3aWR0aCA9IDVcbiAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOlxuICAgLi4uICAgICBmb3IgYmFzZSBpbiBcJ2RYb2JcJzpcbiAgIC4uLiAgICAgICAgIHByaW50KFwnezA6e3dpZHRofXtiYXNlfX1cJy5mb3JtYXQobnVtLCBiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSwgZW5kPVwnIFwnKVxuICAgLi4uICAgICBwcmludCgpXG4gICAuLi5cbiAgICAgICA1ICAgICA1ICAgICA1ICAgMTAxXG4gICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuICAgICAgIDcgICAgIDcgICAgIDcgICAxMTFcbiAgICAgICA4ICAgICA4ICAgIDEwICAxMDAwXG4gICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuICAgICAgMTAgICAgIEEgICAgMTIgIDEwMTBcbiAgICAgIDExICAgICBCICAgIDEzICAxMDExXG4nLAorICdmdW5jdGlvbic6ICdcbkZ1bmN0aW9uIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSpcbiAgICAgICAgICAgICAgICAgICAgICBbLCAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgcGFyYW1ldGVycyBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgImBgKmBgIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tXG50aGlzIGlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW5cbnRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpc1xudXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYVxuZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OlxuaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYVxubGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyBnZW5lcmFsbHkgbm90XG53aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYCBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZ1xuYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWZcbnRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICJgYDogZXhwcmVzc2lvbmBgIlxuZm9sbG93aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvblxuZXZlbiB0aG9zZSBvZiB0aGUgZm9ybSBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYC4gIEZ1bmN0aW9uc1xubWF5IGhhdmUgInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiYGAtPiBleHByZXNzaW9uYGAiIGFmdGVyIHRoZVxucGFyYW1ldGVyIGxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uXG5hbmQgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLlxuQW5ub3RhdGlvbnMgbWF5IGJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluXG50aGUgc291cmNlIGNvZGUuICBUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZVxuc2VtYW50aWNzIG9mIGEgZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhc1xudmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZVxuYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhIGZvcm1zLFxuZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGEgZm9ybSBpcyBtZXJlbHkgYVxuc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjsgYSBmdW5jdGlvbiBkZWZpbmVkIGluXG5hICJgYGRlZmBgIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3IgYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lXG5qdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhIGZvcm0uICBUaGUgImBgZGVmYGAiIGZvcm0gaXNcbmFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXQgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGVcbnN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICJgYGRlZmBgIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuICAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJywKICAnZ2xvYmFsJzogJ1xuVGhlIGBgZ2xvYmFsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlIGBgZ2xvYmFsYGAgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSBlbnRpcmVcbmN1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gYmVcbmludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhIGdsb2JhbFxudmFyaWFibGUgd2l0aG91dCBgYGdsb2JhbGBgLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhIGBgZ2xvYmFsYGAgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWVcbmNvZGUgYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0IGBgZ2xvYmFsYGAgc3RhdGVtZW50LlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhIGBgZm9yYGAgbG9vcCBjb250cm9sIHRhcmdldCwgYGBjbGFzc2BgIGRlZmluaXRpb24sXG5mdW5jdGlvbiBkZWZpbml0aW9uLCBvciBgYGltcG9ydGBgIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgbGF0dGVyIHR3byByZXN0cmljdGlvbnMsIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlXG50aGlzIGZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseVxuY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgYGBnbG9iYWxgYCBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgcGFyc2VyLlxuSXQgYXBwbGllcyBvbmx5IHRvIGNvZGUgcGFyc2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIGBgZ2xvYmFsYGBcbnN0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSBzdHJpbmdcbm9yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiBgYGV4ZWMoKWBgIGZ1bmN0aW9uIGRvZXMgbm90XG5hZmZlY3QgdGhlIGNvZGUgYmxvY2sgKmNvbnRhaW5pbmcqIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgY29kZVxuY29udGFpbmVkIGluIHN1Y2ggYSBzdHJpbmcgaXMgdW5hZmZlY3RlZCBieSBgYGdsb2JhbGBgIHN0YXRlbWVudHMgaW5cbnRoZSBjb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZVxuYGBldmFsKClgYCBhbmQgYGBjb21waWxlKClgYCBmdW5jdGlvbnMuXG4nLAogICdpZC1jbGFzc2VzJzogJ1xuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG5gYF8qYGBcbiAgIE5vdCBpbXBvcnRlZCBieSBgYGZyb20gbW9kdWxlIGltcG9ydCAqYGAuICBUaGUgc3BlY2lhbCBpZGVudGlmaWVyXG4gICBgYF9gYCBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mXG4gICB0aGUgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlIGBgYnVpbHRpbnNgYCBtb2R1bGUuICBXaGVuXG4gICBub3QgaW4gaW50ZXJhY3RpdmUgbW9kZSwgYGBfYGAgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90XG4gICBkZWZpbmVkLiBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuXG4gICBOb3RlOiBUaGUgbmFtZSBgYF9gYCBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgYGBnZXR0ZXh0YGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuYGBfXypfX2BgXG4gICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlIGludGVycHJldGVyXG4gICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgQ3VycmVudFxuICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogc2VjdGlvblxuICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2ZcbiAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiBgYF9fKl9fYGAgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXNcbiAgIG5vdCBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZVxuICAgd2l0aG91dCB3YXJuaW5nLlxuXG5gYF9fKmBgXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKICAnaWRlbnRpZmllcnMnOiAnXG5JZGVudGlmaWVycyBhbmQga2V5d29yZHNcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5JZGVudGlmaWVycyAoYWxzbyByZWZlcnJlZCB0byBhcyAqbmFtZXMqKSBhcmUgZGVzY3JpYmVkIGJ5IHRoZVxuZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG5cblRoZSBzeW50YXggb2YgaWRlbnRpZmllcnMgaW4gUHl0aG9uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIHN0YW5kYXJkXG5hbm5leCBVQVgtMzEsIHdpdGggZWxhYm9yYXRpb24gYW5kIGNoYW5nZXMgYXMgZGVmaW5lZCBiZWxvdzsgc2VlIGFsc29cbioqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuXG5XaXRoaW4gdGhlIEFTQ0lJIHJhbmdlIChVKzAwMDEuLlUrMDA3RiksIHRoZSB2YWxpZCBjaGFyYWN0ZXJzIGZvclxuaWRlbnRpZmllcnMgYXJlIHRoZSBzYW1lIGFzIGluIFB5dGhvbiAyLng6IHRoZSB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZVxubGV0dGVycyBgYEFgYCB0aHJvdWdoIGBgWmBgLCB0aGUgdW5kZXJzY29yZSBgYF9gYCBhbmQsIGV4Y2VwdCBmb3IgdGhlXG5maXJzdCBjaGFyYWN0ZXIsIHRoZSBkaWdpdHMgYGAwYGAgdGhyb3VnaCBgYDlgYC5cblxuUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlIEFTQ0lJXG5yYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlIGNsYXNzaWZpY2F0aW9uXG51c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyBpbmNsdWRlZCBpbiB0aGVcbmBgdW5pY29kZWRhdGFgYCBtb2R1bGUuXG5cbklkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cblxuICAgaWRlbnRpZmllciAgIDo6PSB4aWRfc3RhcnQgeGlkX2NvbnRpbnVlKlxuICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCBMbCwgTHQsIExtLCBMbywgTmwsIHRoZSB1bmRlcnNjb3JlLCBhbmQgY2hhcmFjdGVycyB3aXRoIHRoZSBPdGhlcl9JRF9TdGFydCBwcm9wZXJ0eT5cbiAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzIGNoYXJhY3RlcnMgaW4gdGhlIGNhdGVnb3JpZXMgTW4sIE1jLCBOZCwgUGMgYW5kIG90aGVycyB3aXRoIHRoZSBPdGhlcl9JRF9Db250aW51ZSBwcm9wZXJ0eT5cbiAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfc3RhcnQgeGlkX2NvbnRpbnVlKiI+XG4gICB4aWRfY29udGludWUgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9jb250aW51ZSB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG5cblRoZSBVbmljb2RlIGNhdGVnb3J5IGNvZGVzIG1lbnRpb25lZCBhYm92ZSBzdGFuZCBmb3I6XG5cbiogKkx1KiAtIHVwcGVyY2FzZSBsZXR0ZXJzXG5cbiogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG5cbiogKkx0KiAtIHRpdGxlY2FzZSBsZXR0ZXJzXG5cbiogKkxtKiAtIG1vZGlmaWVyIGxldHRlcnNcblxuKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuXG4qICpObCogLSBsZXR0ZXIgbnVtYmVyc1xuXG4qICpNbiogLSBub25zcGFjaW5nIG1hcmtzXG5cbiogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG5cbiogKk5kKiAtIGRlY2ltYWwgbnVtYmVyc1xuXG4qICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zXG5cbiogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiBQcm9wTGlzdC50eHQgdG9cbiAgc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG4qICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZVxuXG5BbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlIHBhcnNpbmc7XG5jb21wYXJpc29uIG9mIGlkZW50aWZpZXJzIGlzIGJhc2VkIG9uIE5GS0MuXG5cbkEgbm9uLW5vcm1hdGl2ZSBIVE1MIGZpbGUgbGlzdGluZyBhbGwgdmFsaWQgaWRlbnRpZmllciBjaGFyYWN0ZXJzIGZvclxuVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHA6Ly93d3cuZGNsLmhwaS51bmktXG5wb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cblxuXG5LZXl3b3Jkc1xuPT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgKmtleXdvcmRzKiBvZlxudGhlIGxhbmd1YWdlLCBhbmQgY2Fubm90IGJlIHVzZWQgYXMgb3JkaW5hcnkgaWRlbnRpZmllcnMuICBUaGV5IG11c3RcbmJlIHNwZWxsZWQgZXhhY3RseSBhcyB3cml0dGVuIGhlcmU6XG5cbiAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4gICBOb25lICAgICAgIGNvbnRpbnVlICAgZm9yICAgICAgICBsYW1iZGEgICAgIHRyeVxuICAgVHJ1ZSAgICAgICBkZWYgICAgICAgIGZyb20gICAgICAgbm9ubG9jYWwgICB3aGlsZVxuICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4gICBhcyAgICAgICAgIGVsaWYgICAgICAgaWYgICAgICAgICBvciAgICAgICAgIHlpZWxkXG4gICBhc3NlcnQgICAgIGVsc2UgICAgICAgaW1wb3J0ICAgICBwYXNzXG4gICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuXG5cblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuYGBfKmBgXG4gICBOb3QgaW1wb3J0ZWQgYnkgYGBmcm9tIG1vZHVsZSBpbXBvcnQgKmBgLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllclxuICAgYGBfYGAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZlxuICAgdGhlIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSBgYGJ1aWx0aW5zYGAgbW9kdWxlLiAgV2hlblxuICAgbm90IGluIGludGVyYWN0aXZlIG1vZGUsIGBgX2BgIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdFxuICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgYGBfYGAgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgIGBgZ2V0dGV4dGBgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbmBgX18qX19gYFxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgYGBfXypfX2BgIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzXG4gICBub3QgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2VcbiAgIHdpdGhvdXQgd2FybmluZy5cblxuYGBfXypgYFxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCiAgJ2lmJzogJ1xuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCiAgJ2ltYWdpbmFyeSc6ICdcbkltYWdpbmFyeSBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqXG5cbkltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgaW50cGFydCkgKCJqIiB8ICJKIilcblxuQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuXG5Db21wbGV4IG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzXG5hbmQgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgb24gdGhlaXIgcmFuZ2UuICBUbyBjcmVhdGUgYSBjb21wbGV4XG5udW1iZXIgd2l0aCBhIG5vbnplcm8gcmVhbCBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsXG5lLmcuLCBgYCgzKzRqKWBgLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG5cbiAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAzLjE0ZS0xMGpcbicsCi0gJ2ltcG9ydCc6ICdcblRoZSBgYGltcG9ydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkltcG9ydCBzdGF0ZW1lbnRzIGFyZSBleGVjdXRlZCBpbiB0d28gc3RlcHM6ICgxKSBmaW5kIGEgbW9kdWxlLCBhbmRcbmluaXRpYWxpemUgaXQgaWYgbmVjZXNzYXJ5OyAoMikgZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWxcbm5hbWVzcGFjZSAob2YgdGhlIHNjb3BlIHdoZXJlIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMpLiBUaGVcbnN0YXRlbWVudCBjb21lcyBpbiB0d28gZm9ybXMgZGlmZmVyaW5nIG9uIHdoZXRoZXIgaXQgdXNlcyB0aGUgYGBmcm9tYGBcbmtleXdvcmQuIFRoZSBmaXJzdCBmb3JtICh3aXRob3V0IGBgZnJvbWBgKSByZXBlYXRzIHRoZXNlIHN0ZXBzIGZvclxuZWFjaCBpZGVudGlmaWVyIGluIHRoZSBsaXN0LiBUaGUgZm9ybSB3aXRoIGBgZnJvbWBgIHBlcmZvcm1zIHN0ZXAgKDEpXG5vbmNlLCBhbmQgdGhlbiBwZXJmb3JtcyBzdGVwICgyKSByZXBlYXRlZGx5LiBGb3IgYSByZWZlcmVuY2VcbmltcGxlbWVudGF0aW9uIG9mIHN0ZXAgKDEpLCBzZWUgdGhlIGBgaW1wb3J0bGliYGAgbW9kdWxlLlxuXG5UbyB1bmRlcnN0YW5kIGhvdyBzdGVwICgxKSBvY2N1cnMsIG9uZSBtdXN0IGZpcnN0IHVuZGVyc3RhbmQgaG93XG5QeXRob24gaGFuZGxlcyBoaWVyYXJjaGljYWwgbmFtaW5nIG9mIG1vZHVsZXMuIFRvIGhlbHAgb3JnYW5pemVcbm1vZHVsZXMgYW5kIHByb3ZpZGUgYSBoaWVyYXJjaHkgaW4gbmFtaW5nLCBQeXRob24gaGFzIGEgY29uY2VwdCBvZlxucGFja2FnZXMuIEEgcGFja2FnZSBjYW4gY29udGFpbiBvdGhlciBwYWNrYWdlcyBhbmQgbW9kdWxlcyB3aGlsZVxubW9kdWxlcyBjYW5ub3QgY29udGFpbiBvdGhlciBtb2R1bGVzIG9yIHBhY2thZ2VzLiBGcm9tIGEgZmlsZSBzeXN0ZW1cbnBlcnNwZWN0aXZlLCBwYWNrYWdlcyBhcmUgZGlyZWN0b3JpZXMgYW5kIG1vZHVsZXMgYXJlIGZpbGVzLiBUaGVcbm9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzIGlzIHN0aWxsIGF2YWlsYWJsZSB0byByZWFkLFxuYWx0aG91Z2ggbWlub3IgZGV0YWlscyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHdyaXRpbmcgb2YgdGhhdFxuZG9jdW1lbnQuXG5cbk9uY2UgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBpcyBrbm93biAodW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIHRoZVxudGVybSAibW9kdWxlIiB3aWxsIHJlZmVyIHRvIGJvdGggcGFja2FnZXMgYW5kIG1vZHVsZXMpLCBzZWFyY2hpbmcgZm9yXG50aGUgbW9kdWxlIG9yIHBhY2thZ2UgY2FuIGJlZ2luLiBUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBpc1xuYGBzeXMubW9kdWxlc2BgLCB0aGUgY2FjaGUgb2YgYWxsIG1vZHVsZXMgdGhhdCBoYXZlIGJlZW4gaW1wb3J0ZWRcbnByZXZpb3VzbHkuIElmIHRoZSBtb2R1bGUgaXMgZm91bmQgdGhlcmUgdGhlbiBpdCBpcyB1c2VkIGluIHN0ZXAgKDIpXG5vZiBpbXBvcnQgdW5sZXNzIGBgTm9uZWBgIGlzIGZvdW5kIGluIGBgc3lzLm1vZHVsZXNgYCwgaW4gd2hpY2ggY2FzZVxuYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC5cblxuSWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gdGhlIGNhY2hlLCB0aGVuIGBgc3lzLm1ldGFfcGF0aGBgIGlzXG5zZWFyY2hlZCAodGhlIHNwZWNpZmljYXRpb24gZm9yIGBgc3lzLm1ldGFfcGF0aGBgIGNhbiBiZSBmb3VuZCBpblxuKipQRVAgMzAyKiopLiBUaGUgb2JqZWN0IGlzIGEgbGlzdCBvZiAqZmluZGVyKiBvYmplY3RzIHdoaWNoIGFyZVxucXVlcmllZCBpbiBvcmRlciBhcyB0byB3aGV0aGVyIHRoZXkga25vdyBob3cgdG8gbG9hZCB0aGUgbW9kdWxlIGJ5XG5jYWxsaW5nIHRoZWlyIGBgZmluZF9tb2R1bGUoKWBgIG1ldGhvZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIElmXG50aGUgbW9kdWxlIGhhcHBlbnMgdG8gYmUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UgKGFzIGRlbm90ZWQgYnkgdGhlXG5leGlzdGVuY2Ugb2YgYSBkb3QgaW4gdGhlIG5hbWUpLCB0aGVuIGEgc2Vjb25kIGFyZ3VtZW50IHRvXG5gYGZpbmRfbW9kdWxlKClgYCBpcyBnaXZlbiBhcyB0aGUgdmFsdWUgb2YgdGhlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGVcbmZyb20gdGhlIHBhcmVudCBwYWNrYWdlIChldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0IGRvdCBpbiB0aGUgbmFtZSBvZlxudGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCkuIElmIGEgZmluZGVyIGNhbiBmaW5kIHRoZSBtb2R1bGUgaXQgcmV0dXJuc1xuYSAqbG9hZGVyKiAoZGlzY3Vzc2VkIGxhdGVyKSBvciByZXR1cm5zIGBgTm9uZWBgLlxuXG5JZiBub25lIG9mIHRoZSBmaW5kZXJzIG9uIGBgc3lzLm1ldGFfcGF0aGBgIGFyZSBhYmxlIHRvIGZpbmQgdGhlXG5tb2R1bGUgdGhlbiBzb21lIGltcGxpY2l0bHkgZGVmaW5lZCBmaW5kZXJzIGFyZSBxdWVyaWVkLlxuSW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbiB2YXJ5IGluIHdoYXQgaW1wbGljaXQgbWV0YSBwYXRoIGZpbmRlcnMgYXJlXG5kZWZpbmVkLiBUaGUgb25lIHRoZXkgYWxsIGRvIGRlZmluZSwgdGhvdWdoLCBpcyBvbmUgdGhhdCBoYW5kbGVzXG5gYHN5cy5wYXRoX2hvb2tzYGAsIGBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCwgYW5kIGBgc3lzLnBhdGhgYC5cblxuVGhlIGltcGxpY2l0IGZpbmRlciBzZWFyY2hlcyBmb3IgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaW4gdGhlICJwYXRocyJcbnNwZWNpZmllZCBpbiBvbmUgb2YgdHdvIHBsYWNlcyAoInBhdGhzIiBkbyBub3QgaGF2ZSB0byBiZSBmaWxlIHN5c3RlbVxucGF0aHMpLiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIHN1cHBvc2VkIHRvIGJlIGNvbnRhaW5lZFxud2l0aGluIGEgcGFja2FnZSB0aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQgcGFzc2VkIHRvIGBgZmluZF9tb2R1bGUoKWBgLFxuYGBfX3BhdGhfX2BgIG9uIHRoZSBwYXJlbnQgcGFja2FnZSwgaXMgdXNlZCBhcyB0aGUgc291cmNlIG9mIHBhdGhzLiBJZlxudGhlIG1vZHVsZSBpcyBub3QgY29udGFpbmVkIGluIGEgcGFja2FnZSB0aGVuIGBgc3lzLnBhdGhgYCBpcyB1c2VkIGFzXG50aGUgc291cmNlIG9mIHBhdGhzLlxuXG5PbmNlIHRoZSBzb3VyY2Ugb2YgcGF0aHMgaXMgY2hvc2VuIGl0IGlzIGl0ZXJhdGVkIG92ZXIgdG8gZmluZCBhXG5maW5kZXIgdGhhdCBjYW4gaGFuZGxlIHRoYXQgcGF0aC4gVGhlIGRpY3QgYXRcbmBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCBjYWNoZXMgZmluZGVycyBmb3IgcGF0aHMgYW5kIGlzIGNoZWNrZWRcbmZvciBhIGZpbmRlci4gSWYgdGhlIHBhdGggZG9lcyBub3QgaGF2ZSBhIGZpbmRlciBjYWNoZWQgdGhlblxuYGBzeXMucGF0aF9ob29rc2BgIGlzIHNlYXJjaGVkIGJ5IGNhbGxpbmcgZWFjaCBvYmplY3QgaW4gdGhlIGxpc3Qgd2l0aFxuYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlIHBhdGgsIHJldHVybmluZyBhIGZpbmRlciBvciByYWlzZXNcbmBgSW1wb3J0RXJyb3JgYC4gSWYgYSBmaW5kZXIgaXMgcmV0dXJuZWQgdGhlbiBpdCBpcyBjYWNoZWQgaW5cbmBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCBhbmQgdGhlbiB1c2VkIGZvciB0aGF0IHBhdGggZW50cnkuIElmIG5vXG5maW5kZXIgY2FuIGJlIGZvdW5kIGJ1dCB0aGUgcGF0aCBleGlzdHMgdGhlbiBhIHZhbHVlIG9mIGBgTm9uZWBgIGlzXG5zdG9yZWQgaW4gYGBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWBgIHRvIHNpZ25pZnkgdGhhdCBhbiBpbXBsaWNpdCxcbmZpbGUtYmFzZWQgZmluZGVyIHRoYXQgaGFuZGxlcyBtb2R1bGVzIHN0b3JlZCBhcyBpbmRpdmlkdWFsIGZpbGVzXG5zaG91bGQgYmUgdXNlZCBmb3IgdGhhdCBwYXRoLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBleGlzdCB0aGVuIGEgZmluZGVyXG53aGljaCBhbHdheXMgcmV0dXJucyBgYE5vbmVgYCBpcyBwbGFjZWQgaW4gdGhlIGNhY2hlIGZvciB0aGUgcGF0aC5cblxuSWYgbm8gZmluZGVyIGNhbiBmaW5kIHRoZSBtb2R1bGUgdGhlbiBgYEltcG9ydEVycm9yYGAgaXMgcmFpc2VkLlxuT3RoZXJ3aXNlIHNvbWUgZmluZGVyIHJldHVybmVkIGEgbG9hZGVyIHdob3NlIGBgbG9hZF9tb2R1bGUoKWBgIG1ldGhvZFxuaXMgY2FsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIChzZWUgKipQRVAgMzAyKiogZm9yIHRoZVxub3JpZ2luYWwgZGVmaW5pdGlvbiBvZiBsb2FkZXJzKS4gQSBsb2FkZXIgaGFzIHNldmVyYWwgcmVzcG9uc2liaWxpdGllc1xudG8gcGVyZm9ybSBvbiBhIG1vZHVsZSBpdCBsb2Fkcy4gRmlyc3QsIGlmIHRoZSBtb2R1bGUgYWxyZWFkeSBleGlzdHNcbmluIGBgc3lzLm1vZHVsZXNgYCAoYSBwb3NzaWJpbGl0eSBpZiB0aGUgbG9hZGVyIGlzIGNhbGxlZCBvdXRzaWRlIG9mXG50aGUgaW1wb3J0IG1hY2hpbmVyeSkgdGhlbiBpdCBpcyB0byB1c2UgdGhhdCBtb2R1bGUgZm9yIGluaXRpYWxpemF0aW9uXG5hbmQgbm90IGEgbmV3IG1vZHVsZS4gQnV0IGlmIHRoZSBtb2R1bGUgZG9lcyBub3QgZXhpc3QgaW5cbmBgc3lzLm1vZHVsZXNgYCB0aGVuIGl0IGlzIHRvIGJlIGFkZGVkIHRvIHRoYXQgZGljdCBiZWZvcmVcbmluaXRpYWxpemF0aW9uIGJlZ2lucy4gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIG9mIHRoZSBtb2R1bGVcbmFuZCBpdCB3YXMgYWRkZWQgdG8gYGBzeXMubW9kdWxlc2BgIGl0IGlzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGljdC5cbklmIGFuIGVycm9yIG9jY3VycyBidXQgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeSBpbiBgYHN5cy5tb2R1bGVzYGAgaXQgaXNcbmxlZnQgaW4gdGhlIGRpY3QuXG5cblRoZSBsb2FkZXIgbXVzdCBzZXQgc2V2ZXJhbCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2R1bGUuIGBgX19uYW1lX19gYCBpc1xudG8gYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIGBgX19maWxlX19gYCBpcyB0byBiZSB0aGUgInBhdGgiXG50byB0aGUgZmlsZSB1bmxlc3MgdGhlIG1vZHVsZSBpcyBidWlsdC1pbiAoYW5kIHRodXMgbGlzdGVkIGluXG5gYHN5cy5idWlsdGluX21vZHVsZV9uYW1lc2BgKSBpbiB3aGljaCBjYXNlIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNldC5cbklmIHdoYXQgaXMgYmVpbmcgaW1wb3J0ZWQgaXMgYSBwYWNrYWdlIHRoZW4gYGBfX3BhdGhfX2BgIGlzIHRvIGJlIHNldFxudG8gYSBsaXN0IG9mIHBhdGhzIHRvIGJlIHNlYXJjaGVkIHdoZW4gbG9va2luZyBmb3IgbW9kdWxlcyBhbmRcbnBhY2thZ2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQuIGBgX19wYWNrYWdlX19gYFxuaXMgb3B0aW9uYWwgYnV0IHNob3VsZCBiZSBzZXQgdG8gdGhlIG5hbWUgb2YgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZVxubW9kdWxlIG9yIHBhY2thZ2UgKHRoZSBlbXB0eSBzdHJpbmcgaXMgdXNlZCBmb3IgbW9kdWxlIG5vdCBjb250YWluZWRcbmluIGEgcGFja2FnZSkuIGBgX19sb2FkZXJfX2BgIGlzIGFsc28gb3B0aW9uYWwgYnV0IHNob3VsZCBiZSBzZXQgdG9cbnRoZSBsb2FkZXIgb2JqZWN0IHRoYXQgaXMgbG9hZGluZyB0aGUgbW9kdWxlLlxuXG5JZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGxvYWRpbmcgdGhlbiB0aGUgbG9hZGVyIHJhaXNlc1xuYGBJbXBvcnRFcnJvcmBgIGlmIHNvbWUgb3RoZXIgZXhjZXB0aW9uIGlzIG5vdCBhbHJlYWR5IGJlaW5nXG5wcm9wYWdhdGVkLiBPdGhlcndpc2UgdGhlIGxvYWRlciByZXR1cm5zIHRoZSBtb2R1bGUgdGhhdCB3YXMgbG9hZGVkXG5hbmQgaW5pdGlhbGl6ZWQuXG5cbldoZW4gc3RlcCAoMSkgZmluaXNoZXMgd2l0aG91dCByYWlzaW5nIGFuIGV4Y2VwdGlvbiwgc3RlcCAoMikgY2FuXG5iZWdpbi5cblxuVGhlIGZpcnN0IGZvcm0gb2YgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgYmluZHMgdGhlIG1vZHVsZSBuYW1lIGluIHRoZVxubG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LCBhbmQgdGhlbiBnb2VzIG9uIHRvIGltcG9ydCB0aGVcbm5leHQgaWRlbnRpZmllciwgaWYgYW55LiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IGBgYXNgYCxcbnRoZSBuYW1lIGZvbGxvd2luZyBgYGFzYGAgaXMgdXNlZCBhcyB0aGUgbG9jYWwgbmFtZSBmb3IgdGhlIG1vZHVsZS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gZG9lcyBub3QgYmluZCB0aGUgbW9kdWxlIG5hbWU6IGl0IGdvZXMgdGhyb3VnaCB0aGVcbmxpc3Qgb2YgaWRlbnRpZmllcnMsIGxvb2tzIGVhY2ggb25lIG9mIHRoZW0gdXAgaW4gdGhlIG1vZHVsZSBmb3VuZCBpblxuc3RlcCAoMSksIGFuZCBiaW5kcyB0aGUgbmFtZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBvYmplY3QgdGh1c1xuZm91bmQuICBBcyB3aXRoIHRoZSBmaXJzdCBmb3JtIG9mIGBgaW1wb3J0YGAsIGFuIGFsdGVybmF0ZSBsb2NhbCBuYW1lXG5jYW4gYmUgc3VwcGxpZWQgYnkgc3BlY2lmeWluZyAiYGBhc2BgIGxvY2FsbmFtZSIuICBJZiBhIG5hbWUgaXMgbm90XG5mb3VuZCwgYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC4gIElmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzXG5yZXBsYWNlZCBieSBhIHN0YXIgKGBgXCcqXCdgYCksIGFsbCBwdWJsaWMgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlXG5hcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBvZiB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiBgYF9fYWxsX19gYFxuc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZFxuYWNjaWRlbnRhbGx5IGV4cG9ydGluZyBpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzXG5saWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZSBpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuXG5cblRoZSBgYGZyb21gYCBmb3JtIHdpdGggYGAqYGAgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuICBUaGVcbndpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyBvbmx5IGFsbG93ZWQgYXQgdGhlXG5tb2R1bGUgbGV2ZWwuIEF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zXG53aWxsIHJhaXNlIGEgYGBTeW50YXhFcnJvcmBgLlxuXG5XaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5IHRoZVxuYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgY29udGFpbmVkXG53aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgd2l0aGluXG50aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuIEJ5XG51c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciBgYGZyb21gYFxueW91IGNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbmBgZnJvbSAuIGltcG9ydCBtb2RgYCBmcm9tIGEgbW9kdWxlIGluIHRoZSBgYHBrZ2BgIHBhY2thZ2UgdGhlbiB5b3VcbndpbGwgZW5kIHVwIGltcG9ydGluZyBgYHBrZy5tb2RgYC4gSWYgeW91IGV4ZWN1dGUgYGBmcm9tIC4uc3VicGtnMlxuaW1wb3J0IG1vZGBgIGZyb20gd2l0aGluIGBgcGtnLnN1YnBrZzFgYCB5b3Ugd2lsbCBpbXBvcnRcbmBgcGtnLnN1YnBrZzIubW9kYGAuIFRoZSBzcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzXG5jb250YWluZWQgd2l0aGluICoqUEVQIDMyOCoqLlxuXG5gYGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKClgYCBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgd2hpY2ggbW9kdWxlcyBuZWVkIHRvIGJlIGxvYWRlZCBkeW5hbWljYWxseS5cblxuXG5GdXR1cmUgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT1cblxuQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSBwYXJ0aWN1bGFyXG5tb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG5hdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uLiAgVGhlIGZ1dHVyZVxuc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob25cbnRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0IGFsbG93cyB1c2Ugb2ZcbnRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGUgcmVsZWFzZSBpbiB3aGljaCB0aGVcbmZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlIGBgYWJzb2x1dGVfaW1wb3J0YGAsXG5gYGRpdmlzaW9uYGAsIGBgZ2VuZXJhdG9yc2BgLCBgYHVuaWNvZGVfbGl0ZXJhbHNgYCxcbmBgcHJpbnRfZnVuY3Rpb25gYCwgYGBuZXN0ZWRfc2NvcGVzYGAgYW5kIGBgd2l0aF9zdGF0ZW1lbnRgYC4gIFRoZXlcbmFyZSBhbGwgcmVkdW5kYW50IGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzIGVuYWJsZWQsIGFuZCBvbmx5IGtlcHQgZm9yXG5iYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblxuQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbnRpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG5pbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlIGNhc2VcbnRoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgbmV3XG5yZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG5tb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxucnVudGltZS5cblxuRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyBoYXZlXG5iZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgc3RhdGVtZW50XG5jb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuXG5UaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCBzdGF0ZW1lbnQ6XG50aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSBgYF9fZnV0dXJlX19gYCwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXRcbndpbGwgYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuZXhlY3V0ZWQuXG5cblRoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbmVuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG5cbk5vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcblxuICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG5cblRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXRcJ3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCB3aXRoXG5ubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuXG5Db2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYGBleGVjKClgYCBhbmRcbmBgY29tcGlsZSgpYGAgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSBgYE1gYCBjb250YWluaW5nIGEgZnV0dXJlXG5zdGF0ZW1lbnQgd2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkXG53aXRoIHRoZSBmdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbFxuYXJndW1lbnRzIHRvIGBgY29tcGlsZSgpYGAgLS0tIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uXG5mb3IgZGV0YWlscy5cblxuQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCB3aWxsXG50YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAqLWkqIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0IG5hbWVcbnRvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSBpblxuZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuZXhlY3V0ZWQuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbiAgICAgIFRoZSBvcmlnaW5hbCBwcm9wb3NhbCBmb3IgdGhlIF9fZnV0dXJlX18gbWVjaGFuaXNtLlxuJywKKyAnaW1wb3J0JzogJ1xuVGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vIGBgZnJvbWBgIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG5zdGVwczpcblxuMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuXG4yLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZSB3aGVyZVxuICAgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50IG9jY3Vycy5cblxuV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieSBjb21tYXMpIHRoZVxudHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdCBhcyB0aG91Z2hcbnRoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkaXVhbCBpbXBvcnQgc3RhdGVtZW50cy5cblxuVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBpc1xuZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSAqaW1wb3J0IHN5c3RlbSosXG53aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0XG5jYW4gYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvXG5jdXN0b21pemUgdGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5XG5pbmRpY2F0ZSBlaXRoZXIgdGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW5cbmVycm9yIG9jY3VycmVkIHdoaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb25cbm9mIHRoZSBtb2R1bGVcJ3MgY29kZS5cblxuSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlXG5hdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czpcblxuKiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgYGBhc2BgLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICBgYGFzYGAgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cblxuKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgYVxuICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlXCdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZVxuICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG5cbiogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gdGhlXG4gIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCBpblxuICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gVGhlXG4gIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4gIHJhdGhlciB0aGFuIGRpcmVjdGx5XG5cblRoZSBgYGZyb21gYCBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcblxuMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgYGBmcm9tYGAgY2xhdXNlIGxvYWRpbmcgYW5kXG4gICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuXG4yLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSBgYGltcG9ydGBgIGNsYXVzZXM6XG5cbiAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWVcblxuICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgdGhlblxuICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcblxuICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsIGBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBib3VuZCBpbiB0aGUgbG9jYWxcbiAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlIGBgYXNgYCBjbGF1c2UgaWYgaXQgaXMgcHJlc2VudCxcbiAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcblxuRXhhbXBsZXM6XG5cbiAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgZmJiXG4gICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBiYXpcbiAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyBhdHRyXG5cbklmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoYGBcJypcJ2BgKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiAgYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLlxuQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhXG5gYFN5bnRheEVycm9yYGAuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiAgYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlXG53aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZVxubW9kdWxlIGxldmVsLiBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uc1xud2lsbCByYWlzZSBhIGBgU3ludGF4RXJyb3JgYC5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgYGBmcm9tYGBcbnlvdSBjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG5gYGZyb20gLiBpbXBvcnQgbW9kYGAgZnJvbSBhIG1vZHVsZSBpbiB0aGUgYGBwa2dgYCBwYWNrYWdlIHRoZW4geW91XG53aWxsIGVuZCB1cCBpbXBvcnRpbmcgYGBwa2cubW9kYGAuIElmIHlvdSBleGVjdXRlIGBgZnJvbSAuLnN1YnBrZzJcbmltcG9ydCBtb2RgYCBmcm9tIHdpdGhpbiBgYHBrZy5zdWJwa2cxYGAgeW91IHdpbGwgaW1wb3J0XG5gYHBrZy5zdWJwa2cyLm1vZGBgLiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpc1xuY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgbmVlZCB0byBiZSBsb2FkZWQgZHluYW1pY2FsbHkuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbi4gIFRoZSBmdXR1cmVcbnN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uXG50aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdCBhbGxvd3MgdXNlIG9mXG50aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gd2hpY2ggdGhlXG5mZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSBgYGFic29sdXRlX2ltcG9ydGBgLFxuYGBkaXZpc2lvbmBgLCBgYGdlbmVyYXRvcnNgYCwgYGB1bmljb2RlX2xpdGVyYWxzYGAsXG5gYHByaW50X2Z1bmN0aW9uYGAsIGBgbmVzdGVkX3Njb3Blc2BgIGFuZCBgYHdpdGhfc3RhdGVtZW50YGAuICBUaGV5XG5hcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvclxuYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgYGBfX2Z1dHVyZV9fYGAsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0XG53aWxsIGJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZXhlYygpYGAgYW5kXG5gYGNvbXBpbGUoKWBgIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgYGBNYGAgY29udGFpbmluZyBhIGZ1dHVyZVxuc3RhdGVtZW50IHdpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZFxud2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWxcbmFyZ3VtZW50cyB0byBgYGNvbXBpbGUoKWBgIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvblxuZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4gICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCiAgJ2luJzogJ1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlIGBgYSA8IGIgPCBjYGAgaGF2ZSB0aGVcbmludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuXG4gICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4gICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4gICAgICAgICAgICAgICAgICAgICB8ICJpcyIgWyJub3QiXSB8IFsibm90Il0gImluIlxuXG5Db21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogYGBUcnVlYGAgb3IgYGBGYWxzZWBgLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgYGB4IDwgeSA8PSB6YGAgaXNcbmVxdWl2YWxlbnQgdG8gYGB4IDwgeSBhbmQgeSA8PSB6YGAsIGV4Y2VwdCB0aGF0IGBgeWBgIGlzIGV2YWx1YXRlZFxub25seSBvbmNlIChidXQgaW4gYm90aCBjYXNlcyBgYHpgYCBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuIGBgeCA8XG55YGAgaXMgZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuIGBgYSBvcDEgYiBvcDIgYyAuLi4geVxub3BOIHpgYCBpcyBlcXVpdmFsZW50IHRvIGBgYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHpgYCxcbmV4Y2VwdCB0aGF0IGVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYXQgbW9zdCBvbmNlLlxuXG5Ob3RlIHRoYXQgYGBhIG9wMSBiIG9wMiBjYGAgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvblxuYmV0d2VlbiAqYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgYGB4IDwgeSA+IHpgYCBpcyBwZXJmZWN0bHkgbGVnYWxcbih0aG91Z2ggcGVyaGFwcyBub3QgcHJldHR5KS5cblxuVGhlIG9wZXJhdG9ycyBgYDxgYCwgYGA+YGAsIGBgPT1gYCwgYGA+PWBgLCBgYDw9YGAsIGFuZCBgYCE9YGAgY29tcGFyZVxudGhlIHZhbHVlcyBvZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS5cbklmIGJvdGggYXJlIG51bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLFxudGhlIGBgPT1gYCBhbmQgYGAhPWBgIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudFxudHlwZXMgdG8gYmUgdW5lcXVhbCwgd2hpbGUgdGhlIGBgPGBgLCBgYD5gYCwgYGA+PWBgIGFuZCBgYDw9YGBcbm9wZXJhdG9ycyByYWlzZSBhIGBgVHlwZUVycm9yYGAgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRoYXQgZG8gbm90IGltcGxlbWVudCB0aGVzZSBvcGVyYXRvcnMgZm9yIHRoZSBnaXZlbiBwYWlyIG9mXG50eXBlcy4gIFlvdSBjYW4gY29udHJvbCBjb21wYXJpc29uIGJlaGF2aW9yIG9mIG9iamVjdHMgb2Ygbm9uLWJ1aWx0LWluXG50eXBlcyBieSBkZWZpbmluZyByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBsaWtlIGBgX19ndF9fKClgYCwgZGVzY3JpYmVkXG5pbiBzZWN0aW9uICpCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBUaGUgdmFsdWVzIGBgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBEZWNpbWFsKFwnTmFOXCcpYGAgYXJlIHNwZWNpYWwuIFRoZVxuICBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMsIGBgeCBpcyB4YGAgYnV0IGFyZSBub3QgZXF1YWwgdG9cbiAgdGhlbXNlbHZlcywgYGB4ICE9IHhgYC4gIEFkZGl0aW9uYWxseSwgY29tcGFyaW5nIGFueSB2YWx1ZSB0byBhXG4gIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiBgYEZhbHNlYGAuICBGb3IgZXhhbXBsZSwgYm90aCBgYDMgPFxuICBmbG9hdChcJ05hTlwnKWBgIGFuZCBgYGZsb2F0KFwnTmFOXCcpIDwgM2BgIHdpbGwgcmV0dXJuIGBgRmFsc2VgYC5cblxuKiBCeXRlcyBvYmplY3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICB2YWx1ZXMgb2YgdGhlaXIgZWxlbWVudHMuXG5cbiogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgZXF1aXZhbGVudHNcbiAgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgb3JkKClgYCkgb2YgdGhlaXIgY2hhcmFjdGVycy5cbiAgWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhblwndCBiZSBjb21wYXJlZCFcblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uIG9mXG4gIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsIGBgWzEsMix4XSA8PSBbMSwyLHldYGAgaGFzIHRoZVxuICBzYW1lIHZhbHVlIGFzIGBgeCA8PSB5YGAuICBJZiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXMgbm90XG4gIGV4aXN0LCB0aGUgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgYGBbMSwyXSA8XG4gIFsxLDIsM11gYCkuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlXG4gIHNhbWUgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgYGAoXCc8XCcsIFwnPD1cJywgXCc+PVwnLFxuICBcJz5cJylgYCByYWlzZSBgYFR5cGVFcnJvcmBgLlxuXG4qIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZFxuICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAodGhlXG4gIHR3byBzZXRzIGBgezEsMn1gYCBhbmQgezIsM30gYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgb2Ygb25lXG4gIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgYXJlIG5vdFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgb3JkZXJpbmcuXG4gIEZvciBleGFtcGxlLCBgYG1pbigpYGAsIGBgbWF4KClgYCwgYW5kIGBgc29ydGVkKClgYCBwcm9kdWNlXG4gIHVuZGVmaW5lZCByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cy5cblxuKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyB0aGV5IGFyZVxuICB0aGUgc2FtZSBvYmplY3Q7IHRoZSBjaG9pY2Ugd2hldGhlciBvbmUgb2JqZWN0IGlzIGNvbnNpZGVyZWQgc21hbGxlclxuICBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dCBjb25zaXN0ZW50bHlcbiAgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgZWl0aGVyXG5vZiB0aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3Rcbm51bWVyaWMgdHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIsIGJ1dCBjb21wYXJpc29ucyBvZlxuYGBmbG9hdGBgIGFuZCBgYERlY2ltYWxgYCBhcmUgbm90IHN1cHBvcnRlZCB0byBhdm9pZCB0aGUgaW5ldml0YWJsZVxuY29uZnVzaW9uIGFyaXNpbmcgZnJvbSByZXByZXNlbnRhdGlvbiBpc3N1ZXMgc3VjaCBhcyBgYGZsb2F0KFwnMS4xXCcpYGBcbmJlaW5nIGluZXhhY3RseSByZXByZXNlbnRlZCBhbmQgdGhlcmVmb3JlIG5vdCBleGFjdGx5IGVxdWFsIHRvXG5gYERlY2ltYWwoXCcxLjFcJylgYCB3aGljaCBpcy4gIFdoZW4gY3Jvc3MtdHlwZSBjb21wYXJpc29uIGlzIG5vdFxuc3VwcG9ydGVkLCB0aGUgY29tcGFyaXNvbiBtZXRob2QgcmV0dXJucyBgYE5vdEltcGxlbWVudGVkYGAuICBUaGlzIGNhblxuY3JlYXRlIHRoZSBpbGx1c2lvbiBvZiBub24tdHJhbnNpdGl2aXR5IGJldHdlZW4gc3VwcG9ydGVkIGNyb3NzLXR5cGVcbmNvbXBhcmlzb25zIGFuZCB1bnN1cHBvcnRlZCBjb21wYXJpc29ucy4gIEZvciBleGFtcGxlLCBgYERlY2ltYWwoMikgPT1cbjJgYCBhbmQgYGAyID09IGZsb2F0KDIpYGAgYnV0IGBgRGVjaW1hbCgyKSAhPSBmbG9hdCgyKWBgLlxuXG5UaGUgb3BlcmF0b3JzIGBgaW5gYCBhbmQgYGBub3QgaW5gYCB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgYGB4IGluIHNgYFxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gIGBgeFxubm90IGluIHNgYCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiBgYHggaW4gc2BgLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggYGBpbmBgXG50ZXN0cyB3aGV0aGVyIGEgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzXG5zdWNoIGFzIGxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuZXhwcmVzc2lvbiBgYHggaW4geWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxueSlgYC5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCBgYHggaW4geWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqXG5pcyBhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgYGB5LmZpbmQoeCkgIT0gLTFgYC5cbkVtcHR5IHN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlclxuc3RyaW5nLCBzbyBgYCIiIGluICJhYmMiYGAgd2lsbCByZXR1cm4gYGBUcnVlYGAuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlIGBgX19jb250YWluc19fKClgYCBtZXRob2QsXG5gYHggaW4geWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgYGB5Ll9fY29udGFpbnNfXyh4KWBgIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCBidXQgZG9cbmRlZmluZSBgYF9faXRlcl9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgYGB6YGAgd2l0aCBgYHhcbj09IHpgYCBpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciBgYHlgYC4gIElmIGFuIGV4Y2VwdGlvbiBpc1xucmFpc2VkIGR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiBgYGluYGAgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbmBgX19nZXRpdGVtX18oKWBgLCBgYHggaW4geWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgYGB4ID09IHlbaV1gYCwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSBgYEluZGV4RXJyb3JgYCBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiBgYGluYGAgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yIGBgbm90IGluYGAgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbmBgaW5gYC5cblxuVGhlIG9wZXJhdG9ycyBgYGlzYGAgYW5kIGBgaXMgbm90YGAgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiBgYHggaXNcbnlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICBgYHggaXNcbm5vdCB5YGAgeWllbGRzIHRoZSBpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCiAgJ2ludGVnZXJzJzogJ1xuSW50ZWdlciBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciB8IGJpbmludGVnZXJcbiAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiK1xuICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCtcbiAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4gICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuICAgb2N0ZGlnaXQgICAgICAgOjo9ICIwIi4uLiI3IlxuICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4gICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG5cblRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0XG5jYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cbk5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLlxuVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob25cbnVzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuXG5Tb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG5cbiAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4MTAwMDAwMDAwXG4gICAgICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgICAgICAgICAgMHhkZWFkYmVlZlxuJywKICAnbGFtYmRhJzogJ1xuTGFtYmRhc1xuKioqKioqKlxuXG4gICBsYW1iZGFfZm9ybSAgICAgICAgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25cbiAgIGxhbWJkYV9mb3JtX25vY29uZCA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvbl9ub2NvbmRcblxuTGFtYmRhIGZvcm1zIChsYW1iZGEgZXhwcmVzc2lvbnMpIGhhdmUgdGhlIHNhbWUgc3ludGFjdGljIHBvc2l0aW9uIGFzXG5leHByZXNzaW9ucy4gIFRoZXkgYXJlIGEgc2hvcnRoYW5kIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zOyB0aGVcbmV4cHJlc3Npb24gYGBsYW1iZGEgYXJndW1lbnRzOiBleHByZXNzaW9uYGAgeWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LlxuVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGZ1bmN0aW9uIG9iamVjdCBkZWZpbmVkIHdpdGhcblxuICAgZGVmIDxsYW1iZGE+KGFyZ3VtZW50cyk6XG4gICAgICAgcmV0dXJuIGV4cHJlc3Npb25cblxuU2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgbGlzdHMuXG5Ob3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZm9ybXMgY2Fubm90IGNvbnRhaW5cbnN0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLApAQCAtNDksMzAgKzUwLDMwIEBACiAgJ25vbmxvY2FsJzogJ1xuVGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgYGBub25sb2NhbGBgIHN0YXRlbWVudCBjYXVzZXMgdGhlIGxpc3RlZCBpZGVudGlmaWVycyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlLiAgVGhpcyBpc1xuaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGJpbmRpbmcgaXMgdG8gc2VhcmNoIHRoZVxubG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3MgZW5jYXBzdWxhdGVkIGNvZGUgdG9cbnJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGUgYmVzaWRlcyB0aGUgZ2xvYmFsXG4obW9kdWxlKSBzY29wZS5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBub25sb2NhbGBgIHN0YXRlbWVudCwgdW5saWtlIHRvIHRob3NlIGxpc3RlZCBpbiBhXG5gYGdsb2JhbGBgIHN0YXRlbWVudCwgbXVzdCByZWZlciB0byBwcmUtZXhpc3RpbmcgYmluZGluZ3MgaW4gYW5cbmVuY2xvc2luZyBzY29wZSAodGhlIHNjb3BlIGluIHdoaWNoIGEgbmV3IGJpbmRpbmcgc2hvdWxkIGJlIGNyZWF0ZWRcbmNhbm5vdCBiZSBkZXRlcm1pbmVkIHVuYW1iaWd1b3VzbHkpLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCBwcmUtXG5leGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQuXG4nLAogICdudW1iZXJzJzogIlxuTnVtZXJpYyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGBcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICdgYC1gYCcgYW5kXG50aGUgbGl0ZXJhbCBgYDFgYC5cbiIsCiAgJ251bWVyaWMtdHlwZXMnOiAiXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kJ3NcbiAgICAgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZCBmb3IgdGhlXG4gICAgIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0IG9wZXJhbmQnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGAvPWBgLCBgYC8vPWBgLCBgYCU9YGAsXG4gICBgYCoqPWBgLCBgYDw8PWBgLCBgYD4+PWBgLCBgYCY9YGAsIGBgXj1gYCwgYGB8PWBgKS4gIFRoZXNlIG1ldGhvZHNcbiAgIHNob3VsZCBhdHRlbXB0IHRvIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZFxuICAgcmV0dXJuIHRoZSByZXN1bHQgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSxcbiAgICpzZWxmKikuICBJZiBhIHNwZWNpZmljIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZSBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgdG9cbiAgIGV4ZWN1dGUgdGhlIHN0YXRlbWVudCBgYHggKz0geWBgLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19pYWRkX18oeSlgYCBpc1xuICAgY2FsbGVkLiAgSWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBkZWZpbmUgYVxuICAgYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19hZGRfXyh5KWBgIGFuZCBgYHkuX19yYWRkX18oeClgYCBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGB4ICsgeWBgLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKGBgLWBgLCBgYCtgYCxcbiAgIGBgYWJzKClgYCBhbmQgYGB+YGApLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgY29tcGxleCgpYGAsXG4gICBgYGludCgpYGAsIGBgZmxvYXQoKWBgIGFuZCBgYHJvdW5kKClgYC4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZlxuICAgdGhlIGFwcHJvcHJpYXRlIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBgYG9wZXJhdG9yLmluZGV4KClgYC4gIEFsc28gY2FsbGVkIHdoZW5ldmVyXG4gICBQeXRob24gbmVlZHMgYW4gaW50ZWdlciBvYmplY3QgKHN1Y2ggYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlXG4gICBidWlsdC1pbiBgYGJpbigpYGAsIGBgaGV4KClgYCBhbmQgYGBvY3QoKWBgIGZ1bmN0aW9ucykuIE11c3QgcmV0dXJuXG4gICBhbiBpbnRlZ2VyLlxuIiwKLSAnb2JqZWN0cyc6ICdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnYGBpc2BgXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlIGBgaWQoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eSAoY3VycmVudGx5IGltcGxlbWVudGVkIGFzIGl0cyBhZGRyZXNzKS4gQW5cbm9iamVjdFwncyAqdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXSBBbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzXG50aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHMgKGUuZy4sICJkb2VzIGl0IGhhdmUgYVxubGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3Igb2JqZWN0cyBvZiB0aGF0XG50eXBlLiAgVGhlIGBgdHlwZSgpYGAgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcJ3MgdHlwZSAod2hpY2ggaXMgYW5cbm9iamVjdCBpdHNlbGYpLiAgVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzXG53aG9zZSB2YWx1ZSBjYW4gY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZVxuaXMgdW5jaGFuZ2VhYmxlIG9uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlXG52YWx1ZSBvZiBhbiBpbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGFcbm11dGFibGUgb2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyXCdzIHZhbHVlIGlzIGNoYW5nZWQ7IGhvd2V2ZXJcbnRoZSBjb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gb2Zcbm9iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSBzdWJ0bGUuKVxuQW4gb2JqZWN0XCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yIGluc3RhbmNlLFxubnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyBhbmRcbmxpc3RzIGFyZSBtdXRhYmxlLlxuXG5PYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSBpdCBpc1xuYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5pbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbnJlYWNoYWJsZS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgcmVmZXJlbmNlLVxuY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5IGxpbmtlZFxuZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbmNpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGBgZ2NgYCBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKGV4OlxuYWx3YXlzIGNsb3NlIGZpbGVzKS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCdgYHRyeWBgLi4uYGBleGNlcHRgYFwnXG5zdGF0ZW1lbnQgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZS5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzIG9wZW5cbmZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSBmcmVlZFxud2hlbiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UtY29sbGVjdGVkLCBidXQgc2luY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5ub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgd2F5IHRvXG5yZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhIGBgY2xvc2UoKWBgIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCdgYHRyeWBgLi4uYGBmaW5hbGx5YGBcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJ2Bgd2l0aGBgXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgYGBhID0gMTsgYiA9XG4xYGAsIGBgYWBgIGFuZCBgYGJgYCBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGVcbnZhbHVlIG9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyIGBgYyA9IFtdOyBkID1cbltdYGAsIGBgY2BgIGFuZCBgYGRgYCBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LFxudW5pcXVlLCBuZXdseSBjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0IGBgYyA9IGQgPSBbXWBgIGFzc2lnbnNcbnRoZSBzYW1lIG9iamVjdCB0byBib3RoIGBgY2BgIGFuZCBgYGRgYC4pXG4nLAorICdvYmplY3RzJzogJ1xuT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4qT2JqZWN0cyogYXJlIFB5dGhvblwncyBhYnN0cmFjdGlvbiBmb3IgZGF0YS4gIEFsbCBkYXRhIGluIGEgUHl0aG9uXG5wcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gb2JqZWN0cy4gKEluXG5hIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG5wcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuXG5FdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3RcJ3NcbippZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXRcbmFzIHRoZSBvYmplY3RcJ3MgYWRkcmVzcyBpbiBtZW1vcnkuICBUaGUgXCdgYGlzYGBcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgYGBpZCgpYGAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG5yZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCBgYGlkKHgpYGAgaXMgdGhlXG5tZW1vcnkgYWRkcmVzcyB3aGVyZSBgYHhgYCBpcyBzdG9yZWQuXG5cbkFuIG9iamVjdFwncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzXG4oZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXNcbmZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSBgYHR5cGUoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzXG50eXBlICh3aGljaCBpcyBhbiBvYmplY3QgaXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiBvYmplY3RcJ3Ncbip0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG5cblRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW5cbmNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlXG5vbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhblxuaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGVcbm9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyIHRoZVxuY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBgYGdjYGAgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChleDpcbmFsd2F5cyBjbG9zZSBmaWxlcykuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnYGB0cnlgYC4uLmBgZXhjZXB0YGBcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSBgYGNsb3NlKClgYCBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnYGB0cnlgYC4uLmBgZmluYWxseWBgXCcgc3RhdGVtZW50IGFuZCB0aGUgXCdgYHdpdGhgYFwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyIGBgYSA9IDE7IGIgPVxuMWBgLCBgYGFgYCBhbmQgYGBiYGAgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlXG52YWx1ZSBvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciBgYGMgPSBbXTsgZCA9XG5bXWBgLCBgYGNgYCBhbmQgYGBkYGAgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCxcbnVuaXF1ZSwgbmV3bHkgY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCBgYGMgPSBkID0gW11gYCBhc3NpZ25zXG50aGUgc2FtZSBvYmplY3QgdG8gYm90aCBgYGNgYCBhbmQgYGBkYGAuKVxuJywKICAnb3BlcmF0b3Itc3VtbWFyeSc6ICdcblN1bW1hcnlcbioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlcyBpbiBQeXRob24sXG5mcm9tIGxvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgKG1vc3RcbmJpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UuICBVbmxlc3NcbnRoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICBPcGVyYXRvcnMgaW5cbnRoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yIGNvbXBhcmlzb25zLCBpbmNsdWRpbmdcbnRlc3RzLCB3aGljaCBhbGwgaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBjaGFpbiBmcm9tIGxlZnQgdG8gcmlnaHRcbi0tLSBzZWUgc2VjdGlvbiAqQ29tcGFyaXNvbnMqIC0tLSBhbmQgZXhwb25lbnRpYXRpb24sIHdoaWNoIGdyb3Vwc1xuZnJvbSByaWdodCB0byBsZWZ0KS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYGxhbWJkYWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGlmYGAgLS0gYGBlbHNlYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYG9yYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGFuZGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYG5vdGBgICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGluYGAsIGBgbm90YGAgYGBpbmBgLCBgYGlzYGAsIGBgaXMgbm90YGAsICAgICB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCBgYDxgYCwgYGA8PWBgLCBgYD5gYCwgYGA+PWBgLCBgYCE9YGAsIGBgPT1gYCAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cywgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHxgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYF5gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCZgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYDw8YGAsIGBgPj5gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCtgYCwgYGAtYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwgcmVtYWluZGVyICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFs1XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCt4YGAsIGBgLXhgYCwgYGB+eGBgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCoqYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHhbaW5kZXhdYGAsIGBgeFtpbmRleDppbmRleF1gYCwgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCBgYHgoYXJndW1lbnRzLi4uKWBgLCBgYHguYXR0cmlidXRlYGAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYChleHByZXNzaW9ucy4uLilgYCwgYGBbZXhwcmVzc2lvbnMuLi5dYGAsICAgICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCBgYHtrZXk6ZGF0dW0uLi59YGAsIGBge2V4cHJlc3Npb25zLi4ufWBgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlIGBgYWJzKHgleSkgPCBhYnMoeSlgYCBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCBmb3IgZmxvYXRzIGl0XG4gICAgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciBleGFtcGxlLCBhbmRcbiAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuIElFRUUgNzU0IGRvdWJsZS1cbiAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0IGBgLTFlLTEwMCAlIDFlMTAwYGAgaGF2ZSB0aGUgc2FtZVxuICAgIHNpZ24gYXMgYGAxZTEwMGBgLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzIGBgLTFlLTEwMCArIDFlMTAwYGAsXG4gICAgd2hpY2ggaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byBgYDFlMTAwYGAuICBUaGUgZnVuY3Rpb25cbiAgICBgYG1hdGguZm1vZCgpYGAgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2ZcbiAgICB0aGUgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgYGAtMWUtMTAwYGAgaW4gdGhpc1xuICAgIGNhc2UuIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGVcbiAgICBhcHBsaWNhdGlvbi5cblxuWzJdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mIHksIGl0XCdzXG4gICAgcG9zc2libGUgZm9yIGBgeC8veWBgIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiBgYCh4LXgleSkvL3lgYCBkdWUgdG9cbiAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSBsYXR0ZXIgcmVzdWx0LCBpblxuICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgYGBkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeWBgIGJlIHZlcnlcbiAgICBjbG9zZSB0byBgYHhgYC5cblxuWzNdIFdoaWxlIGNvbXBhcmlzb25zIGJldHdlZW4gc3RyaW5ncyBtYWtlIHNlbnNlIGF0IHRoZSBieXRlIGxldmVsLFxuICAgIHRoZXkgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlIHRvIHVzZXJzLiAgRm9yIGV4YW1wbGUsIHRoZSBzdHJpbmdzXG4gICAgYGAiXFx1MDBDNyJgYCBhbmQgYGAiXFx1MDMyN1xcdTAwNDMiYGAgY29tcGFyZSBkaWZmZXJlbnRseSwgZXZlblxuICAgIHRob3VnaCB0aGV5IGJvdGggcmVwcmVzZW50IHRoZSBzYW1lIHVuaWNvZGUgY2hhcmFjdGVyIChMQVRJTlxuICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBKS4gIFRvIGNvbXBhcmUgc3RyaW5ncyBpbiBhIGh1bWFuXG4gICAgcmVjb2duaXphYmxlIHdheSwgY29tcGFyZSB1c2luZyBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpYGAuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZSBkeW5hbWljXG4gICAgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbCBiZWhhdmlvdXJcbiAgICBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlIGBgaXNgYCBvcGVyYXRvciwgbGlrZSB0aG9zZSBpbnZvbHZpbmdcbiAgICBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yIGNvbnN0YW50cy4gIENoZWNrIHRoZWlyXG4gICAgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlIGBgJWBgIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7IHRoZSBzYW1lXG4gICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuXG5bNl0gVGhlIHBvd2VyIG9wZXJhdG9yIGBgKipgYCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiBhcml0aG1ldGljIG9yXG4gICAgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsIGBgMioqLTFgYCBpc1xuICAgIGBgMC41YGAuXG4nLAogICdwYXNzJzogJ1xuVGhlIGBgcGFzc2BgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBwYXNzX3N0bXQgOjo9ICJwYXNzIlxuXG5gYHBhc3NgYCBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKICAncG93ZXInOiAnXG5UaGUgcG93ZXIgb3BlcmF0b3JcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0c1xubGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gIFRoZVxuc3ludGF4IGlzOlxuXG4gICBwb3dlciA6Oj0gcHJpbWFyeSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiBgYC0xKioyYGAgcmVzdWx0cyBpbiBgYC0xYGAuXG5cblRoZSBwb3dlciBvcGVyYXRvciBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBidWlsdC1pbiBgYHBvdygpYGBcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbmBgMTAqKjJgYCByZXR1cm5zIGBgMTAwYGAsIGJ1dCBgYDEwKiotMmBgIHJldHVybnMgYGAwLjAxYGAuXG5cblJhaXNpbmcgYGAwLjBgYCB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYVxuYGBaZXJvRGl2aXNpb25FcnJvcmBgLiBSYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlclxucmVzdWx0cyBpbiBhIGBgY29tcGxleGBgIG51bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGFcbmBgVmFsdWVFcnJvcmBgLilcbicsCiAgJ3JhaXNlJzogJ1xuVGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cblxuSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsIGBgcmFpc2VgYCByZS1yYWlzZXMgdGhlIGxhc3QgZXhjZXB0aW9uXG50aGF0IHdhcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBubyBleGNlcHRpb24gaXMgYWN0aXZlIGluXG50aGUgY3VycmVudCBzY29wZSwgYSBgYFJ1bnRpbWVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsIGBgcmFpc2VgYCBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxub2JqZWN0LiAgSXQgbXVzdCBiZSBlaXRoZXIgYSBzdWJjbGFzcyBvciBhbiBpbnN0YW5jZSBvZlxuYGBCYXNlRXhjZXB0aW9uYGAuIElmIGl0IGlzIGEgY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBiZVxub2J0YWluZWQgd2hlbiBuZWVkZWQgYnkgaW5zdGFudGlhdGluZyB0aGUgY2xhc3Mgd2l0aCBubyBhcmd1bWVudHMuXG5cblRoZSAqdHlwZSogb2YgdGhlIGV4Y2VwdGlvbiBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlXCdzIGNsYXNzLCB0aGVcbip2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cblxuQSB0cmFjZWJhY2sgb2JqZWN0IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGFuIGV4Y2VwdGlvblxuaXMgcmFpc2VkIGFuZCBhdHRhY2hlZCB0byBpdCBhcyB0aGUgYGBfX3RyYWNlYmFja19fYGAgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlIGBgd2l0aF90cmFjZWJhY2soKWBgIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoXG5yZXR1cm5zIHRoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHNcbmFyZ3VtZW50KSwgbGlrZSBzbzpcblxuICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG5cblRoZSBgYGZyb21gYCBjbGF1c2UgaXMgdXNlZCBmb3IgZXhjZXB0aW9uIGNoYWluaW5nOiBpZiBnaXZlbiwgdGhlXG5zZWNvbmQgKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoXG53aWxsIHRoZW4gYmUgYXR0YWNoZWQgdG8gdGhlIHJhaXNlZCBleGNlcHRpb24gYXMgdGhlIGBgX19jYXVzZV9fYGBcbmF0dHJpYnV0ZSAod2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90XG5oYW5kbGVkLCBib3RoIGV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlcjogdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiBpcyB0aGVuIGF0dGFjaGVkIGFzIHRoZVxubmV3IGV4Y2VwdGlvblwncyBgYF9fY29udGV4dF9fYGAgYXR0cmlidXRlOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQ6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluIHNlY3Rpb25cbipUaGUgdHJ5IHN0YXRlbWVudCouXG4nLAotICdyZXR1cm4nOiAnXG5UaGUgYGByZXR1cm5gYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByZXR1cm5fc3RtdCA6Oj0gInJldHVybiIgW2V4cHJlc3Npb25fbGlzdF1cblxuYGByZXR1cm5gYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uXG5kZWZpbml0aW9uLCBub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgYGBOb25lYGAgaXNcbnN1YnN0aXR1dGVkLlxuXG5gYHJldHVybmBgIGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGV4cHJlc3Npb24gbGlzdFxuKG9yIGBgTm9uZWBgKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gYGByZXR1cm5gYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxubGVhdmluZyB0aGUgZnVuY3Rpb24uXG5cbkluIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgYGByZXR1cm5gYCBzdGF0ZW1lbnQgaXMgbm90IGFsbG93ZWQgdG9cbmluY2x1ZGUgYW4gYGBleHByZXNzaW9uX2xpc3RgYC4gIEluIHRoYXQgY29udGV4dCwgYSBiYXJlIGBgcmV0dXJuYGBcbmluZGljYXRlcyB0aGF0IHRoZSBnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSBgYFN0b3BJdGVyYXRpb25gYFxudG8gYmUgcmFpc2VkLlxuJywKKyAncmV0dXJuJzogJ1xuVGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbmBgcmV0dXJuYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvblxuZGVmaW5pdGlvbiwgbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlIGBgTm9uZWBgIGlzXG5zdWJzdGl0dXRlZC5cblxuYGByZXR1cm5gYCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3RcbihvciBgYE5vbmVgYCkgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuIGBgcmV0dXJuYGAgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBhXG5gYGZpbmFsbHlgYCBjbGF1c2UsIHRoYXQgYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbmxlYXZpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0IHRoZVxuZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgYGBTdG9wSXRlcmF0aW9uYGAgdG8gYmUgcmFpc2VkLiBUaGVcbnJldHVybmVkIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0XG5gYFN0b3BJdGVyYXRpb25gYCBhbmQgYmVjb21lcyB0aGUgYGBTdG9wSXRlcmF0aW9uLnZhbHVlYGAgYXR0cmlidXRlLlxuJywKICAnc2VxdWVuY2UtdHlwZXMnOiAiXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoIGBgMCA8PSBrIDwgTmBgXG53aGVyZSAqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoXG5kZWZpbmUgYSByYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlXG50aGUgbWV0aG9kcyBgYGtleXMoKWBgLCBgYHZhbHVlcygpYGAsIGBgaXRlbXMoKWBgLCBgYGdldCgpYGAsXG5gYGNsZWFyKClgYCwgYGBzZXRkZWZhdWx0KClgYCwgYGBwb3AoKWBgLCBgYHBvcGl0ZW0oKWBgLCBgYGNvcHkoKWBgLFxuYW5kIGBgdXBkYXRlKClgYCBiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob24ncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuJ3QgZGVmaW5lIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kIGFuZCB3aG9zZSBgYF9fbGVuX18oKWBgXG4gICBtZXRob2QgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy4gIEFcbiAgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGhcbiAgYGBOb25lYGAuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiBgYHNlbGZba2V5XWBgLiBGb3Igc2VxdWVuY2VcbiAgIHR5cGVzLCB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlXG4gICBjbGFzcyB3aXNoZXMgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZVxuICAgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLiBJZiAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsXG4gICBgYFR5cGVFcnJvcmBgIG1heSBiZSByYWlzZWQ7IGlmIG9mIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mXG4gICBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mXG4gICBuZWdhdGl2ZSB2YWx1ZXMpLCBgYEluZGV4RXJyb3JgYCBzaG91bGQgYmUgcmFpc2VkLiBGb3IgbWFwcGluZ1xuICAgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGUgY29udGFpbmVyKSwgYGBLZXlFcnJvcmBgXG4gICBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiBgYGZvcmBgIGxvb3BzIGV4cGVjdCB0aGF0IGFuIGBgSW5kZXhFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgYGBfX2dldGl0ZW1fXygpYGBcbiAgIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyBiZSBtYWRlXG4gICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCBgYGtleXMoKWBgLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgYGBfX3JldmVyc2VkX18oKWBgIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZVxuICAgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlXG4gICBwcm90b2NvbCAoYGBfX2xlbl9fKClgYCBhbmQgYGBfX2dldGl0ZW1fXygpYGApLiAgT2JqZWN0cyB0aGF0XG4gICBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbCBzaG91bGQgb25seSBwcm92aWRlXG4gICBgYF9fcmV2ZXJzZWRfXygpYGAgaWYgdGhleSBjYW4gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzXG4gICBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnkgYGByZXZlcnNlZCgpYGAuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzIChgYGluYGAgYW5kIGBgbm90IGluYGApIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4iLAogICdzaGlmdGluZyc6ICdcblNoaWZ0aW5nIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBhcml0aG1ldGljXG5vcGVyYXRpb25zOlxuXG4gICBzaGlmdF9leHByIDo6PSBhX2V4cHIgfCBzaGlmdF9leHByICggIjw8IiB8ICI+PiIgKSBhX2V4cHJcblxuVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSBmaXJzdFxuYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5IHRoZVxuc2Vjb25kIGFyZ3VtZW50LlxuXG5BIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZGl2aXNpb24gYnkgYGBwb3coMixuKWBgLiAgQVxubGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggYGBwb3coMixuKWBgLlxuXG5Ob3RlOiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpcyByZXF1aXJlZCB0b1xuICBiZSBhdCBtb3N0IGBgc3lzLm1heHNpemVgYC4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXMgbGFyZ2VyXG4gIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFuIGBgT3ZlcmZsb3dFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAogICdzbGljaW5ncyc6ICdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciBgYGRlbGBgIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhXG5zbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZVxudG8gYSBtYXBwaW5nIG9iamVjdCwgYW5kIGl0IGlzIGluZGV4ZWQgKHVzaW5nIHRoZSBzYW1lXG5gYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhIGtleSB0aGF0IGlzXG5jb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbmBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nIGBgTm9uZWBgIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKLSAnc3BlY2lhbGF0dHJzJzogJ1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgYGBkaXIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiBgYF9fbXJvX19gYC5cblxuY2xhc3MuX19zdWJjbGFzc2VzX18oKVxuXG4gICBFYWNoIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGltbWVkaWF0ZVxuICAgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aG9zZSByZWZlcmVuY2VzXG4gICBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcblxuICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4gICAgICBbPGNsYXNzIFwnYm9vbFwnPl1cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgZm91bmQgaW5cbiAgICB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKCpCYXNpYyBjdXN0b21pemF0aW9uKikuXG5cblsyXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCBgYFsxLCAyXWBgIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICBgYFsxLjAsIDIuMF1gYCwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuXG5bM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW5cJ3QgdGVsbCB0aGUgdHlwZSBvZiB0aGVcbiAgICBvcGVyYW5kcy5cblxuWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eSBiZWluZ1xuICAgIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgbG93ZXJjYXNlKSwgb3IgIkx0IlxuICAgIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbls1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYSBzaW5nbGV0b25cbiAgICB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlIGZvcm1hdHRlZC5cbicsCi0gJ3NwZWNpYWxuYW1lcyc6ICdcblNwZWNpYWwgbWV0aG9kIG5hbWVzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGNhbiBpbXBsZW1lbnQgY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgYXJlIGludm9rZWQgYnkgc3BlY2lhbFxuc3ludGF4IChzdWNoIGFzIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvciBzdWJzY3JpcHRpbmcgYW5kIHNsaWNpbmcpIGJ5XG5kZWZpbmluZyBtZXRob2RzIHdpdGggc3BlY2lhbCBuYW1lcy4gVGhpcyBpcyBQeXRob25cJ3MgYXBwcm9hY2ggdG9cbipvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biBiZWhhdmlvclxud2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSBjbGFzcyBkZWZpbmVzXG5hIG1ldGhvZCBuYW1lZCBgYF9fZ2V0aXRlbV9fKClgYCwgYW5kIGBgeGBgIGlzIGFuIGluc3RhbmNlIG9mIHRoaXNcbmNsYXNzLCB0aGVuIGBgeFtpXWBgIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBgYHR5cGUoeCkuX19nZXRpdGVtX18oeCxcbmkpYGAuICBFeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiByYWlzZVxuYW4gZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuYGBBdHRyaWJ1dGVFcnJvcmBgIG9yIGBgVHlwZUVycm9yYGApLlxuXG5XaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzXG5pbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0XG5tYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lXG5zZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLCBidXRcbmV4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGVcbmBgTm9kZUxpc3RgYCBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuXG5cbkJhc2ljIGN1c3RvbWl6YXRpb25cbj09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gIGBgX19uZXdfXygpYGAgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgYGBfX25ld19fKClgYCBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHlcbiAgIGFuIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgdXNpbmdcbiAgIGBgc3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSlgYCB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgYGBfX25ld19fKClgYCByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgYGBfX2luaXRfXyhzZWxmWywgLi4uXSlgYCwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYC5cblxuICAgSWYgYGBfX25ld19fKClgYCBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgIGBgX19uZXdfXygpYGAgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgYGBfX2luaXRfXygpYGAgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9faW5pdF9fKClgYCBtZXRob2QsXG4gICBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2ZcbiAgIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgIGBgQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSlgYC4gIEFzIGEgc3BlY2lhbCBjb25zdHJhaW50XG4gICBvbiBjb25zdHJ1Y3RvcnMsIG5vIHZhbHVlIG1heSBiZSByZXR1cm5lZDsgZG9pbmcgc28gd2lsbCBjYXVzZSBhXG4gICBgYFR5cGVFcnJvcmBgIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhIGBgX19kZWxfXygpYGAgbWV0aG9kLFxuICAgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2RlbF9fKClgYCBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5XG4gICBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGVcbiAgIGluc3RhbmNlLiAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yXG4gICB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6IGBgZGVsIHhgYCBkb2VzblwndCBkaXJlY3RseSBjYWxsIGBgeC5fX2RlbF9fKClgYCAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGBgeGBgIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXJcbiAgICAgaXMgb25seSBjYWxsZWQgd2hlbiBgYHhgYFwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZVxuICAgICBjb21tb24gc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW5cbiAgICAgb2JqZWN0IGZyb20gZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW5cbiAgICAgb2JqZWN0cyAoZS5nLiwgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGhcbiAgICAgcGFyZW50IGFuZCBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlXG4gICAgIHN0YWNrIGZyYW1lIG9mIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrXG4gICAgIHN0b3JlZCBpbiBgYHN5cy5leGNfaW5mbygpWzJdYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3JcbiAgICAgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW5cbiAgICAgdW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIGxhdHRlciB0d28gc2l0dWF0aW9ucyBjYW4gYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyBgYE5vbmVgYCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLiBDaXJjdWxhciByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZVxuICAgICBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgZGV0ZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnlcbiAgICAgZGVmYXVsdCksIGJ1dCBjYW4gb25seSBiZSBjbGVhbmVkIHVwIGlmIHRoZXJlIGFyZSBubyBQeXRob24tXG4gICAgIGxldmVsIGBgX19kZWxfXygpYGAgbWV0aG9kcyBpbnZvbHZlZC4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25cbiAgICAgZm9yIHRoZSBgYGdjYGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvd1xuICAgICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgYGdhcmJhZ2VgYCB2YWx1ZS5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvblxuICAgICBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvIGBgc3lzLnN0ZGVycmBgIGluc3RlYWQuXG4gICAgIEFsc28sIHdoZW4gYGBfX2RlbF9fKClgYCBpcyBpbnZva2VkIGluIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nXG4gICAgIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlclxuICAgICBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmVcbiAgICAgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHRvcm4gZG93biAoZS5nLiB0aGVcbiAgICAgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzIHJlYXNvbiwgYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWQgdG8gbWFpbnRhaW5cbiAgICAgZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsIFB5dGhvblxuICAgICBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGByZXByKClgYCBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZVxuICAgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLFxuICAgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkXG4gICB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgYGA8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+YGAgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzIGBgX19yZXByX18oKWBgXG4gICBidXQgbm90IGBgX19zdHJfXygpYGAsIHRoZW4gYGBfX3JlcHJfXygpYGAgaXMgYWxzbyB1c2VkIHdoZW4gYW5cbiAgICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzXG4gICByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgc3RyKClgYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlIGBgcHJpbnQoKWBgXG4gICBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gYGBfX3JlcHJfXygpYGAgaW4gdGhhdCBpdCBkb2VzIG5vdCBoYXZlXG4gICB0byBiZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlXG4gICByZXByZXNlbnRhdGlvbiBtYXkgYmUgdXNlZCBpbnN0ZWFkLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYGBieXRlcygpYGAgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhIGBgYnl0ZXNgYCBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgZm9ybWF0KClgYCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICBgYGZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBgYGlkKHgpYGAuXG5cbiAgIENsYXNzZXMgd2hpY2ggaW5oZXJpdCBhIGBgX19oYXNoX18oKWBgIG1ldGhvZCBmcm9tIGEgcGFyZW50IGNsYXNzXG4gICBidXQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIGBgX19lcV9fKClgYCBzdWNoIHRoYXQgdGhlIGhhc2ggdmFsdWVcbiAgIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYSB2YWx1ZS1cbiAgIGJhc2VkIGNvbmNlcHQgb2YgZXF1YWxpdHkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpZGVudGl0eSBiYXNlZFxuICAgZXF1YWxpdHkpIGNhbiBleHBsaWNpdGx5IGZsYWcgdGhlbXNlbHZlcyBhcyBiZWluZyB1bmhhc2hhYmxlIGJ5XG4gICBzZXR0aW5nIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvIG1lYW5zXG4gICB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhbiBhcHByb3ByaWF0ZVxuICAgYGBUeXBlRXJyb3JgYCB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0byByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLFxuICAgYnV0IHRoZXkgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIHVuaGFzaGFibGUgd2hlblxuICAgY2hlY2tpbmcgYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgKHVubGlrZSBjbGFzc2VzXG4gICB3aGljaCBkZWZpbmUgdGhlaXIgb3duIGBgX19oYXNoX18oKWBgIHRvIGV4cGxpY2l0bHkgcmFpc2VcbiAgIGBgVHlwZUVycm9yYGApLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBgX19lcV9fKClgYCBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBgYF9faGFzaF9fKClgYCBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGVcbiAgIGludGVycHJldGVyIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyBgYF9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX19gYC4gT3RoZXJ3aXNlIHRoZSBpbmhlcml0YW5jZSBvZlxuICAgYGBfX2hhc2hfXygpYGAgd2lsbCBiZSBibG9ja2VkLCBqdXN0IGFzIGlmIGBgX19oYXNoX19gYCBoYWQgYmVlblxuICAgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAuXG5cbiAgIFNlZSBhbHNvIHRoZSAqLVIqIGNvbW1hbmQtbGluZSBvcHRpb24uXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgIGBgYm9vbCgpYGA7IHNob3VsZCByZXR1cm4gYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgV2hlbiB0aGlzIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIGBgX19sZW5fXygpYGAgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlXG4gICBvYmplY3QgaXMgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3NcbiAgIGRlZmluZXMgbmVpdGhlciBgYF9fbGVuX18oKWBgIG5vciBgYF9fYm9vbF9fKClgYCwgYWxsIGl0cyBpbnN0YW5jZXNcbiAgIGFyZSBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mIGBgeC5uYW1lYGApXG5mb3IgY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciBgYHNlbGZgYCkuICBgYG5hbWVgYCBpcyB0aGUgYXR0cmlidXRlIG5hbWUuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZVxuICAgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgIGBgX19nZXRhdHRyX18oKWBgIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gYGBfX2dldGF0dHJfXygpYGAgYW5kIGBgX19zZXRhdHRyX18oKWBgLikgVGhpcyBpcyBkb25lIGJvdGhcbiAgIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlIGBgX19nZXRhdHRyX18oKWBgXG4gICB3b3VsZCBoYXZlIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlXG4gICB0aGF0IGF0IGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5XG4gICBub3QgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXNcbiAgIGBgX19nZXRhdHRyX18oKWBgLCB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3NcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgZWl0aGVyIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZClcbiAgIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLiBJbiBvcmRlclxuICAgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb25cbiAgIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvXG4gICBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKWBgLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kc1xuICAgICBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheCBvclxuICAgICBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiBgYF9fc2V0YXR0cl9fKClgYCB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlgYC5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgYGBfX3NldGF0dHJfXygpYGAgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgYGBkZWwgb2JqLm5hbWVgYCBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gYGBkaXIoKWBgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiAgQSBsaXN0IG11c3QgYmVcbiAgIHJldHVybmVkLlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnIGBgX19kaWN0X19gYC5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yIGBgTm9uZWBgIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCwgYW5kXG5gYF9fZGVsZXRlX18oKWBgLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LFxuaXQgaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCBgYGEueGBgIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCBgYGEuX19kaWN0X19bXCd4XCddYGAsIHRoZW5cbmBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ11gYCwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG5gYHR5cGUoYSlgYCBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsIGBgYS54YGAuXG5Ib3cgdGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gYGBhYGA6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgIGBgeC5fX2dldF9fKGEpYGAuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCBgYGEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiBgYHR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSlgYC5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCBgYEEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICBgYEEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSlgYC5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgYGBhYGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBzdXBlcmBgLCB0aGVuIHRoZSBiaW5kaW5nIGBgc3VwZXIoQixcbiAgIG9iaikubSgpYGAgc2VhcmNoZXMgYGBvYmouX19jbGFzc19fLl9fbXJvX19gYCBmb3IgdGhlIGJhc2UgY2xhc3NcbiAgIGBgQWBgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBgYEJgYCBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yXG4gICB3aXRoIHRoZSBjYWxsOiBgYEEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKWBgLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgIGFuZCBgYF9fZGVsZXRlX18oKWBgLlxuSWYgaXQgZG9lcyBub3QgZGVmaW5lIGBgX19nZXRfXygpYGAsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbFxucmV0dXJuIHRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlXG5vYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgYGBfX3NldF9fKClgYFxuYW5kL29yIGBgX19kZWxldGVfXygpYGAsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzXG5uZWl0aGVyLCBpdCBpcyBhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9yc1xuZGVmaW5lIGJvdGggYGBfX2dldF9fKClgYCBhbmQgYGBfX3NldF9fKClgYCwgd2hpbGUgbm9uLWRhdGFcbmRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGUgYGBfX2dldF9fKClgYCBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGhcbmBgX19zZXRfXygpYGAgYW5kIGBgX19nZXRfXygpYGAgZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb25cbmluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJbiBjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlXG5vdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyBgYHN0YXRpY21ldGhvZCgpYGAgYW5kIGBgY2xhc3NtZXRob2QoKWBgKVxuYXJlIGltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgYGBwcm9wZXJ0eSgpYGAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICBJZiBkZWZpbmVkIGluIGFcbiAgIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmRcbiAgIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3JcbiAgIGVhY2ggaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyBgYEF0dHJpYnV0ZUVycm9yYGAuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gIGBgXCdfX2RpY3RfX1wnYGAgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzIGRlZmluaW5nXG4gICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW5zdGFuY2VzLiBJZiB3ZWFrXG4gIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGQgYGBcJ19fd2Vha3JlZl9fXCdgYCB0byB0aGVcbiAgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZSBpbnN0YW5jZVxuICB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlIChleGNlcHQgYnlcbiAgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS4gVGhpc1xuICByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzIGBgaW50YGAsIGBgc3RyYGAgYW5kXG4gIGBgdHVwbGVgYC5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzIG1heVxuICBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgYGB0eXBlKClgYC4gQSBjbGFzc1xuZGVmaW5pdGlvbiBpcyByZWFkIGludG8gYSBzZXBhcmF0ZSBuYW1lc3BhY2UgYW5kIHRoZSB2YWx1ZSBvZiBjbGFzc1xubmFtZSBpcyBib3VuZCB0byB0aGUgcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgZGljdClgYC5cblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyByZWFkLCBpZiBhIGNhbGxhYmxlIGBgbWV0YWNsYXNzYGAga2V5d29yZFxuYXJndW1lbnQgaXMgcGFzc2VkIGFmdGVyIHRoZSBiYXNlcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiwgdGhlXG5jYWxsYWJsZSBnaXZlbiB3aWxsIGJlIGNhbGxlZCBpbnN0ZWFkIG9mIGBgdHlwZSgpYGAuICBJZiBvdGhlciBrZXl3b3JkXG5hcmd1bWVudHMgYXJlIHBhc3NlZCwgdGhleSB3aWxsIGFsc28gYmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3MuICBUaGlzXG5hbGxvd3MgY2xhc3NlcyBvciBmdW5jdGlvbnMgdG8gYmUgd3JpdHRlbiB3aGljaCBtb25pdG9yIG9yIGFsdGVyIHRoZVxuY2xhc3MgY3JlYXRpb24gcHJvY2VzczpcblxuKiBNb2RpZnlpbmcgdGhlIGNsYXNzIGRpY3Rpb25hcnkgcHJpb3IgdG8gdGhlIGNsYXNzIGJlaW5nIGNyZWF0ZWQuXG5cbiogUmV0dXJuaW5nIGFuIGluc3RhbmNlIG9mIGFub3RoZXIgY2xhc3MgLS0gZXNzZW50aWFsbHkgcGVyZm9ybWluZyB0aGVcbiAgcm9sZSBvZiBhIGZhY3RvcnkgZnVuY3Rpb24uXG5cblRoZXNlIHN0ZXBzIHdpbGwgaGF2ZSB0byBiZSBwZXJmb3JtZWQgaW4gdGhlIG1ldGFjbGFzc1wncyBgYF9fbmV3X18oKWBgXG5tZXRob2QgLS0gYGB0eXBlLl9fbmV3X18oKWBgIGNhbiB0aGVuIGJlIGNhbGxlZCBmcm9tIHRoaXMgbWV0aG9kIHRvXG5jcmVhdGUgYSBjbGFzcyB3aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgVGhpcyBleGFtcGxlIGFkZHMgYSBuZXdcbmVsZW1lbnQgdG8gdGhlIGNsYXNzIGRpY3Rpb25hcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSBjbGFzczpcblxuICAgY2xhc3MgbWV0YWNscyh0eXBlKTpcbiAgICAgICBkZWYgX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkaWN0KTpcbiAgICAgICAgICAgZGljdFtcJ2Zvb1wnXSA9IFwnbWV0YWNscyB3YXMgaGVyZVwnXG4gICAgICAgICAgIHJldHVybiB0eXBlLl9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdClcblxuWW91IGNhbiBvZiBjb3Vyc2UgYWxzbyBvdmVycmlkZSBvdGhlciBjbGFzcyBtZXRob2RzIChvciBhZGQgbmV3XG5tZXRob2RzKTsgZm9yIGV4YW1wbGUgZGVmaW5pbmcgYSBjdXN0b20gYGBfX2NhbGxfXygpYGAgbWV0aG9kIGluIHRoZVxubWV0YWNsYXNzIGFsbG93cyBjdXN0b20gYmVoYXZpb3Igd2hlbiB0aGUgY2xhc3MgaXMgY2FsbGVkLCBlLmcuIG5vdFxuYWx3YXlzIGNyZWF0aW5nIGEgbmV3IGluc3RhbmNlLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX18oKWBgIGF0dHJpYnV0ZSAodXN1YWxseVxuaW1wbGVtZW50ZWQgYXMgYSBjbGFzcyBvciBzdGF0aWMgbWV0aG9kKSwgaXQgaXMgY2FsbGVkIGJlZm9yZSB0aGVcbmNsYXNzIGJvZHkgaXMgZXZhbHVhdGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGFuZCBhIHR1cGxlIG9mIGl0c1xuYmFzZXMgZm9yIGFyZ3VtZW50cy4gIEl0IHNob3VsZCByZXR1cm4gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlXG5tYXBwaW5nIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBzdG9yZSB0aGUgbmFtZXNwYWNlIG9mIHRoZVxuY2xhc3MuICBUaGUgZGVmYXVsdCBpcyBhIHBsYWluIGRpY3Rpb25hcnkuICBUaGlzIGNvdWxkIGJlIHVzZWQsIGZvclxuZXhhbXBsZSwgdG8ga2VlcCB0cmFjayBvZiB0aGUgb3JkZXIgdGhhdCBjbGFzcyBhdHRyaWJ1dGVzIGFyZSBkZWNsYXJlZFxuaW4gYnkgcmV0dXJuaW5nIGFuIG9yZGVyZWQgZGljdGlvbmFyeS5cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHJlY2VkZW5jZVxucnVsZXM6XG5cbiogSWYgdGhlIGBgbWV0YWNsYXNzYGAga2V5d29yZCBhcmd1bWVudCBpcyBwYXNzZWQgd2l0aCB0aGUgYmFzZXMsIGl0XG4gIGlzIHVzZWQuXG5cbiogT3RoZXJ3aXNlLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYmFzZSBjbGFzcywgaXRzIG1ldGFjbGFzcyBpc1xuICB1c2VkLlxuXG4qIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgbWV0YWNsYXNzIChgYHR5cGVgYCkgaXMgdXNlZC5cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRpbmcgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWNcbmRlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kXG5hdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG5cbkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbmBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYCB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyBtZW1iZXJzXG53ZXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGNsYXNzZGljdCk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KGNsYXNzZGljdCkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUoY2xhc3NkaWN0KVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzIGBgX19wcmVwYXJlX18oKWBgIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSBgYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgbWV0aG9kc1xuYW5kIGF0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBjbGFzc1xuc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgZGljdGlvbmFyeVxuaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgYGBtZW1iZXJzYGAuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG5gYGlzaW5zdGFuY2UoKWBgIGFuZCBgYGlzc3ViY2xhc3MoKWBgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyBgYGFiYy5BQkNNZXRhYGAgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzXG5pbiBvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKWBgLlxuXG5jbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcblxuICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcylgYC5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuICAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nIGBgaXNpbnN0YW5jZSgpYGAgYW5kXG4gICAgICBgYGlzc3ViY2xhc3MoKWBgIGJlaGF2aW9yIHRocm91Z2ggYGBfX2luc3RhbmNlY2hlY2tfXygpYGAgYW5kXG4gICAgICBgYF9fc3ViY2xhc3NjaGVja19fKClgYCwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGluIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgYGBhYmNgYFxuICAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG5cblxuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgYGB4KGFyZzEsIGFyZzIsIC4uLilgYCBpcyBhIHNob3J0aGFuZCBmb3JcbiAgIGBgeC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pYGAuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkXG5kaWN0aW9uYXJ5IG9iamVjdHMuICBUaGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZSBwcm92aWRlcyBhXG5gYE11dGFibGVNYXBwaW5nYGAgYWJzdHJhY3QgYmFzZSBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzXG5mcm9tIGEgYmFzZSBzZXQgb2YgYGBfX2dldGl0ZW1fXygpYGAsIGBgX19zZXRpdGVtX18oKWBgLFxuYGBfX2RlbGl0ZW1fXygpYGAsIGFuZCBgYGtleXMoKWBgLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyBgYGFwcGVuZCgpYGAsIGBgY291bnQoKWBgLCBgYGluZGV4KClgYCwgYGBleHRlbmQoKWBgLFxuYGBpbnNlcnQoKWBgLCBgYHBvcCgpYGAsIGBgcmVtb3ZlKClgYCwgYGByZXZlcnNlKClgYCBhbmQgYGBzb3J0KClgYCxcbmxpa2UgUHl0aG9uIHN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZFxuaW1wbGVtZW50IGFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgYGBfX2FkZF9fKClgYCwgYGBfX3JhZGRfXygpYGAsXG5gYF9faWFkZF9fKClgYCwgYGBfX211bF9fKClgYCwgYGBfX3JtdWxfXygpYGAgYW5kIGBgX19pbXVsX18oKWBgXG5kZXNjcmliZWQgYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0XG5pcyByZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9fY29udGFpbnNfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlIGBgaW5gYFxub3BlcmF0b3I7IGZvciBtYXBwaW5ncywgYGBpbmBgIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuXCd0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgLCB0aGUgbWVtYmVyc2hpcFxuICAgdGVzdCBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhIGBgX19pdGVyX18oKWBgLCB0aGVuIHRoZSBvbGRcbiAgIHNlcXVlbmNlIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgYGBfX2dldGl0ZW1fXygpYGAsIHNlZSAqdGhpc1xuICAgc2VjdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kIGZvciB0aGVcbiAgICAgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzIGBgX19oYXNoX18oKWBgIGFuZCBgYF9fcmVwcl9fKClgYCB0aGF0IGFyZSBpbXBsZW1lbnRlZFxuYnkgYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2ZcbnRoZXNlIG1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWxcbndoZW4gaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb25cbnByb3ZpZGVzIHNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGVcbmludGVycHJldGVyLCBhdCB0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZlxuc3BlY2lhbCBtZXRob2RzICh0aGUgc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0XG5pdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLCB1bmRlclxuICAgIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZCBpZGVhXG4gICAgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXNcbiAgICBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgYGBfX2FkZF9fKClgYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpc1xuICAgIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLlxuJywKLSAnc3RyaW5nLW1ldGhvZHMnOiAnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5nIG9iamVjdHMgc3VwcG9ydCB0aGUgbWV0aG9kcyBsaXN0ZWQgYmVsb3cuXG5cbkluIGFkZGl0aW9uLCBQeXRob25cJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIGJ5dGVzLCBieXRlYXJyYXksIGxpc3QsXG50dXBsZSwgcmFuZ2UqIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSAqU3RyaW5nXG5Gb3JtYXR0aW5nKiBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIGBgcmVgYCBtb2R1bGUgZm9yIHN0cmluZyBmdW5jdGlvbnNcbmJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgIFwnc3BhY2lvdXMgICBcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBzdHIudHJhbnNsYXRlKClgYC5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgcmZpbmQoKWBgIGJ1dCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqXG4gICBpcyBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBsaW1pdFxuICAgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMSwsMlwnLnNwbGl0KFwnLFwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnXCcsIFwnMlwnXWBgKS4gIFRoZSAqc2VwKlxuICAgYXJndW1lbnQgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGApLiBTcGxpdHRpbmdcbiAgIGFuIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zIGBgW1wnXCddYGAuXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhIGBgTm9uZWBgIHNlcGFyYXRvciByZXR1cm5zXG4gICBgYFtdYGAuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnIDEgIDIgICAzICBcJy5zcGxpdCgpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgLFxuICAgYW5kIGBgXCcgIDEgIDIgICAzICBcJy5zcGxpdChOb25lLCAxKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMiAgIDMgIFwnXWBgLlxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlXG4gICByZXR1cm4gYGBGYWxzZWBgLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2tcbiAgIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGVcbiAgICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHNcbiAgIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgXCdzcGFjaW91c1wnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG4nLAotICdzdHJpbmdzJzogJ1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAiUiJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIlxuICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydGJ5dGVzaXRlbSogXCciXCdcbiAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuXG5PbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgdGhhdFxud2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSBgYHN0cmluZ3ByZWZpeGBgIG9yXG5gYGJ5dGVzcHJlZml4YGAgYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXRcbmlzIGRlZmluZWQgYnkgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZ1xuZGVjbGFyYXRpb24gaXMgZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiAqRW5jb2RpbmdcbmRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzIChgYFwnYGApIG9yIGRvdWJsZSBxdW90ZXMgKGBgImBgKS4gIFRoZXkgY2FuIGFsc28gYmVcbmVuY2xvc2VkIGluIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2VcbmFyZSBnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlIGJhY2tzbGFzaFxuKGBgXFxgYCkgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCBgYFwnYlwnYGAgb3IgYGBcJ0JcJ2BgOyB0aGV5XG5wcm9kdWNlIGFuIGluc3RhbmNlIG9mIHRoZSBgYGJ5dGVzYGAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBgYHN0cmBgIHR5cGUuXG5UaGV5IG1heSBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2ZcbjEyOCBvciBncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyIGBgXCdyXCdgYCBvciBgYFwnUlwnYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kXG50cmVhdCBiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nXG5saXRlcmFscywgYGBcJ1xcVVwnYGAgYW5kIGBgXCdcXHVcJ2BgIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkXG5zcGVjaWFsbHkuXG5cbkluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBzdHJpbmcuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxuc3RyaW5nLCBpLmUuIGVpdGhlciBgYFwnYGAgb3IgYGAiYGAuKVxuXG5Vbmxlc3MgYW4gYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYCBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxuZXdsaW5lYGAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXFxgYCAgICAgICAgICAgIHwgQmFja3NsYXNoIChgYFxcYGApICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXCdgYCAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlIChgYFwnYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcImBgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKGBgImBgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGFgYCAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxiYGAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcZmBgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG5gYCAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxyYGAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdGBgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHZgYCAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxvb29gYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxceGhoYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcTntuYW1lfWBgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHV4eHh4YGAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDQpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxVeHh4eHh4eHhgYCAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGUgYnl0ZVxuICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXMgZGVub3RlIGFcbiAgIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGNhbiBiZVxuICAgZW5jb2RlZCB1c2luZyB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZVxuICAgcmVxdWlyZWQuXG5cbjUuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheSwgYnV0IGNoYXJhY3RlcnNcbiAgIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKSB3aWxsIGJlIGVuY29kZWQgdXNpbmcgYVxuICAgc3Vycm9nYXRlIHBhaXIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHRvIHVzZSAxNi1iaXQgY29kZSB1bml0cyAodGhlXG4gICBkZWZhdWx0KS4gIEV4YWN0bHkgZWlnaHQgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cblVubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gdGhlXG5zdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSBzdHJpbmcqLiAgKFRoaXNcbmJlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIG1pc3R5cGVkLFxudGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgYWxzb1xuaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nXG5saXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlc1xubGl0ZXJhbHMuXG5cbkV2ZW4gaW4gYSByYXcgc3RyaW5nLCBzdHJpbmcgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsXG5idXQgdGhlIGJhY2tzbGFzaCByZW1haW5zIGluIHRoZSBzdHJpbmc7IGZvciBleGFtcGxlLCBgYHIiXFwiImBgIGlzIGFcbnZhbGlkIHN0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhXG5kb3VibGUgcXVvdGU7IGBgciJcXCJgYCBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhd1xuc3RyaW5nIGNhbm5vdCBlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphXG5yYXcgc3RyaW5nIGNhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaFxud291bGQgZXNjYXBlIHRoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlXG5iYWNrc2xhc2ggZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzXG5hcyBwYXJ0IG9mIHRoZSBzdHJpbmcsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAorICdzcGVjaWFsYXR0cnMnOiAnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSBgYGRpcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24uXG5cbm9iamVjdC5fX2RpY3RfX1xuXG4gICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiBvYmplY3RcJ3NcbiAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cblxuaW5zdGFuY2UuX19jbGFzc19fXG5cbiAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG5cbmNsYXNzLl9fYmFzZXNfX1xuXG4gICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuXG5jbGFzcy5fX25hbWVfX1xuXG4gICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuY2xhc3MuX19xdWFsbmFtZV9fXG5cbiAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiBgYF9fbXJvX19gYC5cblxuY2xhc3MuX19zdWJjbGFzc2VzX18oKVxuXG4gICBFYWNoIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGltbWVkaWF0ZVxuICAgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aG9zZSByZWZlcmVuY2VzXG4gICBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcblxuICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4gICAgICBbPGNsYXNzIFwnYm9vbFwnPl1cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgZm91bmQgaW5cbiAgICB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKCpCYXNpYyBjdXN0b21pemF0aW9uKikuXG5cblsyXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCBgYFsxLCAyXWBgIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICBgYFsxLjAsIDIuMF1gYCwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuXG5bM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW5cJ3QgdGVsbCB0aGUgdHlwZSBvZiB0aGVcbiAgICBvcGVyYW5kcy5cblxuWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eSBiZWluZ1xuICAgIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgbG93ZXJjYXNlKSwgb3IgIkx0IlxuICAgIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbls1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYSBzaW5nbGV0b25cbiAgICB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlIGZvcm1hdHRlZC5cbicsCisgJ3NwZWNpYWxuYW1lcyc6ICdcblNwZWNpYWwgbWV0aG9kIG5hbWVzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGNhbiBpbXBsZW1lbnQgY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgYXJlIGludm9rZWQgYnkgc3BlY2lhbFxuc3ludGF4IChzdWNoIGFzIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvciBzdWJzY3JpcHRpbmcgYW5kIHNsaWNpbmcpIGJ5XG5kZWZpbmluZyBtZXRob2RzIHdpdGggc3BlY2lhbCBuYW1lcy4gVGhpcyBpcyBQeXRob25cJ3MgYXBwcm9hY2ggdG9cbipvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biBiZWhhdmlvclxud2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSBjbGFzcyBkZWZpbmVzXG5hIG1ldGhvZCBuYW1lZCBgYF9fZ2V0aXRlbV9fKClgYCwgYW5kIGBgeGBgIGlzIGFuIGluc3RhbmNlIG9mIHRoaXNcbmNsYXNzLCB0aGVuIGBgeFtpXWBgIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBgYHR5cGUoeCkuX19nZXRpdGVtX18oeCxcbmkpYGAuICBFeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiByYWlzZVxuYW4gZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuYGBBdHRyaWJ1dGVFcnJvcmBgIG9yIGBgVHlwZUVycm9yYGApLlxuXG5XaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzXG5pbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0XG5tYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lXG5zZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLCBidXRcbmV4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGVcbmBgTm9kZUxpc3RgYCBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuXG5cbkJhc2ljIGN1c3RvbWl6YXRpb25cbj09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gIGBgX19uZXdfXygpYGAgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgYGBfX25ld19fKClgYCBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHlcbiAgIGFuIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgdXNpbmdcbiAgIGBgc3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSlgYCB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgYGBfX25ld19fKClgYCByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgYGBfX2luaXRfXyhzZWxmWywgLi4uXSlgYCwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYC5cblxuICAgSWYgYGBfX25ld19fKClgYCBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgIGBgX19uZXdfXygpYGAgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgYGBfX2luaXRfXygpYGAgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9faW5pdF9fKClgYCBtZXRob2QsXG4gICBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2ZcbiAgIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgIGBgQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSlgYC4gIEFzIGEgc3BlY2lhbCBjb25zdHJhaW50XG4gICBvbiBjb25zdHJ1Y3RvcnMsIG5vIHZhbHVlIG1heSBiZSByZXR1cm5lZDsgZG9pbmcgc28gd2lsbCBjYXVzZSBhXG4gICBgYFR5cGVFcnJvcmBgIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhIGBgX19kZWxfXygpYGAgbWV0aG9kLFxuICAgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2RlbF9fKClgYCBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5XG4gICBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGVcbiAgIGluc3RhbmNlLiAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yXG4gICB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6IGBgZGVsIHhgYCBkb2VzblwndCBkaXJlY3RseSBjYWxsIGBgeC5fX2RlbF9fKClgYCAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGBgeGBgIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXJcbiAgICAgaXMgb25seSBjYWxsZWQgd2hlbiBgYHhgYFwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZVxuICAgICBjb21tb24gc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW5cbiAgICAgb2JqZWN0IGZyb20gZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW5cbiAgICAgb2JqZWN0cyAoZS5nLiwgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGhcbiAgICAgcGFyZW50IGFuZCBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlXG4gICAgIHN0YWNrIGZyYW1lIG9mIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrXG4gICAgIHN0b3JlZCBpbiBgYHN5cy5leGNfaW5mbygpWzJdYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3JcbiAgICAgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW5cbiAgICAgdW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIGxhdHRlciB0d28gc2l0dWF0aW9ucyBjYW4gYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyBgYE5vbmVgYCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLiBDaXJjdWxhciByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZVxuICAgICBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgZGV0ZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnlcbiAgICAgZGVmYXVsdCksIGJ1dCBjYW4gb25seSBiZSBjbGVhbmVkIHVwIGlmIHRoZXJlIGFyZSBubyBQeXRob24tXG4gICAgIGxldmVsIGBgX19kZWxfXygpYGAgbWV0aG9kcyBpbnZvbHZlZC4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25cbiAgICAgZm9yIHRoZSBgYGdjYGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvd1xuICAgICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgYGdhcmJhZ2VgYCB2YWx1ZS5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvblxuICAgICBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvIGBgc3lzLnN0ZGVycmBgIGluc3RlYWQuXG4gICAgIEFsc28sIHdoZW4gYGBfX2RlbF9fKClgYCBpcyBpbnZva2VkIGluIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nXG4gICAgIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlclxuICAgICBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmVcbiAgICAgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHRvcm4gZG93biAoZS5nLiB0aGVcbiAgICAgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzIHJlYXNvbiwgYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWQgdG8gbWFpbnRhaW5cbiAgICAgZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsIFB5dGhvblxuICAgICBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGByZXByKClgYCBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZVxuICAgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLFxuICAgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkXG4gICB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgYGA8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+YGAgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzIGBgX19yZXByX18oKWBgXG4gICBidXQgbm90IGBgX19zdHJfXygpYGAsIHRoZW4gYGBfX3JlcHJfXygpYGAgaXMgYWxzbyB1c2VkIHdoZW4gYW5cbiAgICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzXG4gICByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgc3RyKClgYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlIGBgcHJpbnQoKWBgXG4gICBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gYGBfX3JlcHJfXygpYGAgaW4gdGhhdCBpdCBkb2VzIG5vdCBoYXZlXG4gICB0byBiZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlXG4gICByZXByZXNlbnRhdGlvbiBtYXkgYmUgdXNlZCBpbnN0ZWFkLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYGBieXRlcygpYGAgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhIGBgYnl0ZXNgYCBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgZm9ybWF0KClgYCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICBgYGZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0IGBgeCA9PSB5YGAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09XG4gICBoYXNoKHkpYGAuXG5cbiAgIENsYXNzZXMgd2hpY2ggaW5oZXJpdCBhIGBgX19oYXNoX18oKWBgIG1ldGhvZCBmcm9tIGEgcGFyZW50IGNsYXNzXG4gICBidXQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIGBgX19lcV9fKClgYCBzdWNoIHRoYXQgdGhlIGhhc2ggdmFsdWVcbiAgIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYSB2YWx1ZS1cbiAgIGJhc2VkIGNvbmNlcHQgb2YgZXF1YWxpdHkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpZGVudGl0eSBiYXNlZFxuICAgZXF1YWxpdHkpIGNhbiBleHBsaWNpdGx5IGZsYWcgdGhlbXNlbHZlcyBhcyBiZWluZyB1bmhhc2hhYmxlIGJ5XG4gICBzZXR0aW5nIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvIG1lYW5zXG4gICB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhbiBhcHByb3ByaWF0ZVxuICAgYGBUeXBlRXJyb3JgYCB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0byByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLFxuICAgYnV0IHRoZXkgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIHVuaGFzaGFibGUgd2hlblxuICAgY2hlY2tpbmcgYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgKHVubGlrZSBjbGFzc2VzXG4gICB3aGljaCBkZWZpbmUgdGhlaXIgb3duIGBgX19oYXNoX18oKWBgIHRvIGV4cGxpY2l0bHkgcmFpc2VcbiAgIGBgVHlwZUVycm9yYGApLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBgX19lcV9fKClgYCBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBgYF9faGFzaF9fKClgYCBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGVcbiAgIGludGVycHJldGVyIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyBgYF9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX19gYC4gT3RoZXJ3aXNlIHRoZSBpbmhlcml0YW5jZSBvZlxuICAgYGBfX2hhc2hfXygpYGAgd2lsbCBiZSBibG9ja2VkLCBqdXN0IGFzIGlmIGBgX19oYXNoX19gYCBoYWQgYmVlblxuICAgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSBgYF9faGFzaF9fKClgYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWVcbiAgICAgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyBgYFBZVEhPTkhBU0hTRUVEYGAuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgIGBgYm9vbCgpYGA7IHNob3VsZCByZXR1cm4gYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgV2hlbiB0aGlzIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIGBgX19sZW5fXygpYGAgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlXG4gICBvYmplY3QgaXMgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3NcbiAgIGRlZmluZXMgbmVpdGhlciBgYF9fbGVuX18oKWBgIG5vciBgYF9fYm9vbF9fKClgYCwgYWxsIGl0cyBpbnN0YW5jZXNcbiAgIGFyZSBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mIGBgeC5uYW1lYGApXG5mb3IgY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciBgYHNlbGZgYCkuICBgYG5hbWVgYCBpcyB0aGUgYXR0cmlidXRlIG5hbWUuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZVxuICAgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgIGBgX19nZXRhdHRyX18oKWBgIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gYGBfX2dldGF0dHJfXygpYGAgYW5kIGBgX19zZXRhdHRyX18oKWBgLikgVGhpcyBpcyBkb25lIGJvdGhcbiAgIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlIGBgX19nZXRhdHRyX18oKWBgXG4gICB3b3VsZCBoYXZlIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlXG4gICB0aGF0IGF0IGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5XG4gICBub3QgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXNcbiAgIGBgX19nZXRhdHRyX18oKWBgLCB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3NcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgZWl0aGVyIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZClcbiAgIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLiBJbiBvcmRlclxuICAgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb25cbiAgIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvXG4gICBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKWBgLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kc1xuICAgICBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheCBvclxuICAgICBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiBgYF9fc2V0YXR0cl9fKClgYCB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlgYC5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgYGBfX3NldGF0dHJfXygpYGAgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgYGBkZWwgb2JqLm5hbWVgYCBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gYGBkaXIoKWBgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiBgYGRpcigpYGAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnIGBgX19kaWN0X19gYC5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yIGBgTm9uZWBgIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCwgYW5kXG5gYF9fZGVsZXRlX18oKWBgLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LFxuaXQgaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCBgYGEueGBgIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCBgYGEuX19kaWN0X19bXCd4XCddYGAsIHRoZW5cbmBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ11gYCwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG5gYHR5cGUoYSlgYCBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsIGBgYS54YGAuXG5Ib3cgdGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gYGBhYGA6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgIGBgeC5fX2dldF9fKGEpYGAuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCBgYGEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiBgYHR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSlgYC5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCBgYEEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICBgYEEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSlgYC5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgYGBhYGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBzdXBlcmBgLCB0aGVuIHRoZSBiaW5kaW5nIGBgc3VwZXIoQixcbiAgIG9iaikubSgpYGAgc2VhcmNoZXMgYGBvYmouX19jbGFzc19fLl9fbXJvX19gYCBmb3IgdGhlIGJhc2UgY2xhc3NcbiAgIGBgQWBgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBgYEJgYCBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yXG4gICB3aXRoIHRoZSBjYWxsOiBgYEEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKWBgLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgIGFuZCBgYF9fZGVsZXRlX18oKWBgLlxuSWYgaXQgZG9lcyBub3QgZGVmaW5lIGBgX19nZXRfXygpYGAsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbFxucmV0dXJuIHRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlXG5vYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgYGBfX3NldF9fKClgYFxuYW5kL29yIGBgX19kZWxldGVfXygpYGAsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzXG5uZWl0aGVyLCBpdCBpcyBhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9yc1xuZGVmaW5lIGJvdGggYGBfX2dldF9fKClgYCBhbmQgYGBfX3NldF9fKClgYCwgd2hpbGUgbm9uLWRhdGFcbmRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGUgYGBfX2dldF9fKClgYCBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGhcbmBgX19zZXRfXygpYGAgYW5kIGBgX19nZXRfXygpYGAgZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb25cbmluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJbiBjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlXG5vdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyBgYHN0YXRpY21ldGhvZCgpYGAgYW5kIGBgY2xhc3NtZXRob2QoKWBgKVxuYXJlIGltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgYGBwcm9wZXJ0eSgpYGAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICBJZiBkZWZpbmVkIGluIGFcbiAgIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmRcbiAgIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3JcbiAgIGVhY2ggaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyBgYEF0dHJpYnV0ZUVycm9yYGAuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gIGBgXCdfX2RpY3RfX1wnYGAgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzIGRlZmluaW5nXG4gICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW5zdGFuY2VzLiBJZiB3ZWFrXG4gIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGQgYGBcJ19fd2Vha3JlZl9fXCdgYCB0byB0aGVcbiAgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZSBpbnN0YW5jZVxuICB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlIChleGNlcHQgYnlcbiAgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS4gVGhpc1xuICByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzIGBgaW50YGAsIGBgc3RyYGAgYW5kXG4gIGBgdHVwbGVgYC5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzIG1heVxuICBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgYGB0eXBlKClgYC4gVGhlIGNsYXNzIGJvZHlcbmlzIGV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0b1xudGhlIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSlgYC5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbmBgbWV0YWNsYXNzYGAga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieVxuaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW5cbnRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCBgYE15Q2xhc3NgYCBhbmQgYGBNeVN1YmNsYXNzYGAgYXJlXG5pbnN0YW5jZXMgb2YgYGBNZXRhYGA6XG5cbiAgIGNsYXNzIE1ldGEodHlwZSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4gICAgICAgcGFzc1xuXG5Bbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uXG5hcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy5cblxuV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG5cbiogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG5cbiogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuXG4qIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG5cbiogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG5cblxuRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhc1xuZm9sbG93czpcblxuKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiBgYHR5cGUoKWBgIGlzXG4gIHVzZWRcblxuKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mXG4gIGBgdHlwZSgpYGAsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgYGB0eXBlKClgYCBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvclxuICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkXG5cblRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkXG5tZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiBgYHR5cGUoY2xzKWBgKSBvZiBhbGxcbnNwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhXG5zdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGVcbmNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxud2lsbCBmYWlsIHdpdGggYGBUeXBlRXJyb3JgYC5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgYGBfX3ByZXBhcmVfX2BgXG5hdHRyaWJ1dGUsIGl0IGlzIGNhbGxlZCBhcyBgYG5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLFxuYmFzZXMsICoqa3dkcylgYCAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZVxuZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuXG5cbklmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgYGBkaWN0KClgYCBpbnN0YW5jZS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG4gICAgICBJbnRyb2R1Y2VkIHRoZSBgYF9fcHJlcGFyZV9fYGAgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgYGBleGVjKGJvZHksIGdsb2JhbHMoKSxcbm5hbWVzcGFjZSlgYC4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byBgYGV4ZWMoKWBgIGlzXG50aGF0IGxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgbWV0aG9kcykgdG9cbnJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgY2xhc3NcbmRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuXG5Ib3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sXG5tZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlXG5jbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3RcbnBhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbFxuZnJvbSBzdGF0aWMgbWV0aG9kcy5cblxuXG5DcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzc1xuYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYGBtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG5uYW1lc3BhY2UsICoqa3dkcylgYCAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gYGBfX3ByZXBhcmVfX2BgKS5cblxuVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1cbmFyZ3VtZW50IGZvcm0gb2YgYGBzdXBlcigpYGAuIGBgX19jbGFzc19fYGAgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyIGBgX19jbGFzc19fYGAgb3IgYGBzdXBlcmBgLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudFxuZm9ybSBvZiBgYHN1cGVyKClgYCB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWRcbmJhc2VkIG9uIGxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG9cbm1ha2UgdGhlIGN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWRcbnRvIHRoZSBtZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbiAgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgYGBfX2NsYXNzX19gYCBjbG9zdXJlIHJlZmVyZW5jZVxuXG5cbk1ldGFjbGFzcyBleGFtcGxlXG4tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlXG5iZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWNcbmRlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kXG5hdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG5cbkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbmBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYCB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyBtZW1iZXJzXG53ZXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX3ByZXBhcmVfXygpYGAgbWV0aG9kIHdoaWNoIHJldHVybnMgYW5cbmVtcHR5IGBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYC4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzXG5hbmQgYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCBgYG1lbWJlcnNgYC5cblxuXG5DdXN0b21pemluZyBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGVcbmBgaXNpbnN0YW5jZSgpYGAgYW5kIGBgaXNzdWJjbGFzcygpYGAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzIGBgYWJjLkFCQ01ldGFgYCBpbXBsZW1lbnRzIHRoZXNlIG1ldGhvZHNcbmluIG9yZGVyIHRvIGFsbG93IHRoZSBhZGRpdGlvbiBvZiBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGFzXG4idmlydHVhbCBiYXNlIGNsYXNzZXMiIHRvIGFueSBjbGFzcyBvciB0eXBlIChpbmNsdWRpbmcgYnVpbHQtaW5cbnR5cGVzKSwgaW5jbHVkaW5nIG90aGVyIEFCQ3MuXG5cbmNsYXNzLl9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqaW5zdGFuY2UqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIGluc3RhbmNlIG9mICpjbGFzcyouIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzc3ViY2xhc3Moc3ViY2xhc3MsIGNsYXNzKWBgLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4gICAgICBJbmNsdWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY3VzdG9taXppbmcgYGBpc2luc3RhbmNlKClgYCBhbmRcbiAgICAgIGBgaXNzdWJjbGFzcygpYGAgYmVoYXZpb3IgdGhyb3VnaCBgYF9faW5zdGFuY2VjaGVja19fKClgYCBhbmRcbiAgICAgIGBgX19zdWJjbGFzc2NoZWNrX18oKWBgLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eVxuICAgICAgaW4gdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSBgYGFiY2BgXG4gICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCBgYHgoYXJnMSwgYXJnMiwgLi4uKWBgIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgYGB4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLilgYC5cblxuXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoIGBgMCA8PSBrIDwgTmBgXG53aGVyZSAqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoXG5kZWZpbmUgYSByYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlXG50aGUgbWV0aG9kcyBgYGtleXMoKWBgLCBgYHZhbHVlcygpYGAsIGBgaXRlbXMoKWBgLCBgYGdldCgpYGAsXG5gYGNsZWFyKClgYCwgYGBzZXRkZWZhdWx0KClgYCwgYGBwb3AoKWBgLCBgYHBvcGl0ZW0oKWBgLCBgYGNvcHkoKWBgLFxuYW5kIGBgdXBkYXRlKClgYCBiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmRcbmRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZSBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlIHByb3ZpZGVzIGFcbmBgTXV0YWJsZU1hcHBpbmdgYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHNcbmZyb20gYSBiYXNlIHNldCBvZiBgYF9fZ2V0aXRlbV9fKClgYCwgYGBfX3NldGl0ZW1fXygpYGAsXG5gYF9fZGVsaXRlbV9fKClgYCwgYW5kIGBga2V5cygpYGAuIE11dGFibGUgc2VxdWVuY2VzIHNob3VsZCBwcm92aWRlXG5tZXRob2RzIGBgYXBwZW5kKClgYCwgYGBjb3VudCgpYGAsIGBgaW5kZXgoKWBgLCBgYGV4dGVuZCgpYGAsXG5gYGluc2VydCgpYGAsIGBgcG9wKClgYCwgYGByZW1vdmUoKWBgLCBgYHJldmVyc2UoKWBgIGFuZCBgYHNvcnQoKWBgLFxubGlrZSBQeXRob24gc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkXG5pbXBsZW1lbnQgYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyBgYF9fYWRkX18oKWBgLCBgYF9fcmFkZF9fKClgYCxcbmBgX19pYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLCBgYF9fcm11bF9fKClgYCBhbmQgYGBfX2ltdWxfXygpYGBcbmRlc2NyaWJlZCBiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXRcbmlzIHJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19jb250YWluc19fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgYGBpbmBgXG5vcGVyYXRvcjsgZm9yIG1hcHBpbmdzLCBgYGluYGAgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3JcbnNlcXVlbmNlcywgaXQgc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9faXRlcl9fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZVxuY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsIGBgX19pdGVyX18oKWBgIHNob3VsZCBiZSB0aGUgc2FtZSBhc1xuYGBrZXlzKClgYDsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFsdWVzLlxuXG5vYmplY3QuX19sZW5fXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGAuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgYGA+PWBgIDAuICBBbHNvLCBhbiBvYmplY3RcbiAgIHRoYXQgZG9lc25cJ3QgZGVmaW5lIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kIGFuZCB3aG9zZSBgYF9fbGVuX18oKWBgXG4gICBtZXRob2QgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy4gIEFcbiAgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGhcbiAgYGBOb25lYGAuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiBgYHNlbGZba2V5XWBgLiBGb3Igc2VxdWVuY2VcbiAgIHR5cGVzLCB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlXG4gICBjbGFzcyB3aXNoZXMgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZVxuICAgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLiBJZiAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsXG4gICBgYFR5cGVFcnJvcmBgIG1heSBiZSByYWlzZWQ7IGlmIG9mIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mXG4gICBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mXG4gICBuZWdhdGl2ZSB2YWx1ZXMpLCBgYEluZGV4RXJyb3JgYCBzaG91bGQgYmUgcmFpc2VkLiBGb3IgbWFwcGluZ1xuICAgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGUgY29udGFpbmVyKSwgYGBLZXlFcnJvcmBgXG4gICBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiBgYGZvcmBgIGxvb3BzIGV4cGVjdCB0aGF0IGFuIGBgSW5kZXhFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgYGBfX2dldGl0ZW1fXygpYGBcbiAgIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyBiZSBtYWRlXG4gICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCBgYGtleXMoKWBgLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgYGBfX3JldmVyc2VkX18oKWBgIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZVxuICAgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlXG4gICBwcm90b2NvbCAoYGBfX2xlbl9fKClgYCBhbmQgYGBfX2dldGl0ZW1fXygpYGApLiAgT2JqZWN0cyB0aGF0XG4gICBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbCBzaG91bGQgb25seSBwcm92aWRlXG4gICBgYF9fcmV2ZXJzZWRfXygpYGAgaWYgdGhleSBjYW4gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzXG4gICBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnkgYGByZXZlcnNlZCgpYGAuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzIChgYGluYGAgYW5kIGBgbm90IGluYGApIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAsIHRoZSBtZW1iZXJzaGlwXG4gICB0ZXN0IGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgYGBfX2l0ZXJfXygpYGAsIHRoZW4gdGhlIG9sZFxuICAgc2VxdWVuY2UgaXRlcmF0aW9uIHByb3RvY29sIHZpYSBgYF9fZ2V0aXRlbV9fKClgYCwgc2VlICp0aGlzXG4gICBzZWN0aW9uIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UqLlxuXG5cbkVtdWxhdGluZyBudW1lcmljIHR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljIG9iamVjdHMuXG5NZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZVxucGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSBvcGVyYXRpb25zIGZvclxubm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cblxub2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCArIHlgYCwgd2hlcmVcbiAgICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19hZGRfXygpYGAgbWV0aG9kLFxuICAgYGB4Ll9fYWRkX18oeSlgYCBpcyBjYWxsZWQuICBUaGUgYGBfX2Rpdm1vZF9fKClgYCBtZXRob2Qgc2hvdWxkIGJlXG4gICB0aGUgZXF1aXZhbGVudCB0byB1c2luZyBgYF9fZmxvb3JkaXZfXygpYGAgYW5kIGBgX19tb2RfXygpYGA7IGl0XG4gICBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gYGBfX3RydWVkaXZfXygpYGAuICBOb3RlIHRoYXRcbiAgIGBgX19wb3dfXygpYGAgc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0IGFuIG9wdGlvbmFsIHRoaXJkXG4gICBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pbiBgYHBvdygpYGAgZnVuY3Rpb25cbiAgIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgb3BlcmFuZHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seVxuICAgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZ1xuICAgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcy4gWzJdICBGb3JcbiAgIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggLSB5YGAsIHdoZXJlICp5KiBpcyBhblxuICAgaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fcnN1Yl9fKClgYCBtZXRob2QsXG4gICBgYHkuX19yc3ViX18oeClgYCBpcyBjYWxsZWQgaWYgYGB4Ll9fc3ViX18oeSlgYCByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSBgYHBvdygpYGAgd2lsbCBub3QgdHJ5IGNhbGxpbmcgYGBfX3Jwb3dfXygpYGBcbiAgICh0aGUgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzXG4gICAgIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2QgZm9yIHRoZVxuICAgICBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdCBvcGVyYW5kXCdzXG4gICAgIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3NlcyB0b1xuICAgICBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGAvPWBgLCBgYC8vPWBgLCBgYCU9YGAsXG4gICBgYCoqPWBgLCBgYDw8PWBgLCBgYD4+PWBgLCBgYCY9YGAsIGBgXj1gYCwgYGB8PWBgKS4gIFRoZXNlIG1ldGhvZHNcbiAgIHNob3VsZCBhdHRlbXB0IHRvIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZFxuICAgcmV0dXJuIHRoZSByZXN1bHQgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSxcbiAgICpzZWxmKikuICBJZiBhIHNwZWNpZmljIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZSBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgdG9cbiAgIGV4ZWN1dGUgdGhlIHN0YXRlbWVudCBgYHggKz0geWBgLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19pYWRkX18oeSlgYCBpc1xuICAgY2FsbGVkLiAgSWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBkZWZpbmUgYVxuICAgYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19hZGRfXyh5KWBgIGFuZCBgYHkuX19yYWRkX18oeClgYCBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGB4ICsgeWBgLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKGBgLWBgLCBgYCtgYCxcbiAgIGBgYWJzKClgYCBhbmQgYGB+YGApLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgY29tcGxleCgpYGAsXG4gICBgYGludCgpYGAsIGBgZmxvYXQoKWBgIGFuZCBgYHJvdW5kKClgYC4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZlxuICAgdGhlIGFwcHJvcHJpYXRlIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBgYG9wZXJhdG9yLmluZGV4KClgYC4gIEFsc28gY2FsbGVkIHdoZW5ldmVyXG4gICBQeXRob24gbmVlZHMgYW4gaW50ZWdlciBvYmplY3QgKHN1Y2ggYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlXG4gICBidWlsdC1pbiBgYGJpbigpYGAsIGBgaGV4KClgYCBhbmQgYGBvY3QoKWBgIGZ1bmN0aW9ucykuIE11c3QgcmV0dXJuXG4gICBhbiBpbnRlZ2VyLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgYGB3aXRoYGAgc3RhdGVtZW50LiBUaGUgY29udGV4dFxubWFuYWdlciBoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZVxuY29udGV4dCBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlXG5ub3JtYWxseSBpbnZva2VkIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4qVGhlIHdpdGggc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyXG5tZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBgYHdpdGhgYFxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgYGBOb25lYGAuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0IGBgX19leGl0X18oKWBgIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuXG5TcGVjaWFsIG1ldGhvZCBsb29rdXBcbj09PT09PT09PT09PT09PT09PT09PVxuXG5Gb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyBhcmUgb25seVxuZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdFwncyB0eXBlLCBub3QgaW5cbnRoZSBvYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSByZWFzb24gd2h5XG50aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbiAgID4+PiBsZW4oYylcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgXCdDXCcgaGFzIG5vIGxlbigpXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYmVoYXZpb3VyIGxpZXMgd2l0aCBhIG51bWJlciBvZiBzcGVjaWFsXG5tZXRob2RzIHN1Y2ggYXMgYGBfX2hhc2hfXygpYGAgYW5kIGBgX19yZXByX18oKWBgIHRoYXQgYXJlIGltcGxlbWVudGVkXG5ieSBhbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZlxudGhlc2UgbWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbFxud2hlbiBpbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBldmVuIG9mIHRoZSBvYmplY3RcJ3MgbWV0YWNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgTWV0YSh0eXBlKTpcbiAgIC4uLiAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgcHJpbnQoIk1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4gICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSBpbnN0YW5jZVxuICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSB0eXBlXG4gICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4gICAxMFxuXG5CeXBhc3NpbmcgdGhlIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWFjaGluZXJ5IGluIHRoaXMgZmFzaGlvblxucHJvdmlkZXMgc2lnbmlmaWNhbnQgc2NvcGUgZm9yIHNwZWVkIG9wdGltaXNhdGlvbnMgd2l0aGluIHRoZVxuaW50ZXJwcmV0ZXIsIGF0IHRoZSBjb3N0IG9mIHNvbWUgZmxleGliaWxpdHkgaW4gdGhlIGhhbmRsaW5nIG9mXG5zcGVjaWFsIG1ldGhvZHMgKHRoZSBzcGVjaWFsIG1ldGhvZCAqbXVzdCogYmUgc2V0IG9uIHRoZSBjbGFzcyBvYmplY3Rcbml0c2VsZiBpbiBvcmRlciB0byBiZSBjb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEl0ICppcyogcG9zc2libGUgaW4gc29tZSBjYXNlcyB0byBjaGFuZ2UgYW4gb2JqZWN0XCdzIHR5cGUsIHVuZGVyXG4gICAgY2VydGFpbiBjb250cm9sbGVkIGNvbmRpdGlvbnMuIEl0IGdlbmVyYWxseSBpc25cJ3QgYSBnb29kIGlkZWFcbiAgICB0aG91Z2gsIHNpbmNlIGl0IGNhbiBsZWFkIHRvIHNvbWUgdmVyeSBzdHJhbmdlIGJlaGF2aW91ciBpZiBpdCBpc1xuICAgIGhhbmRsZWQgaW5jb3JyZWN0bHkuXG5cblsyXSBGb3Igb3BlcmFuZHMgb2YgdGhlIHNhbWUgdHlwZSwgaXQgaXMgYXNzdW1lZCB0aGF0IGlmIHRoZSBub24tXG4gICAgcmVmbGVjdGVkIG1ldGhvZCAoc3VjaCBhcyBgYF9fYWRkX18oKWBgKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzXG4gICAgbm90IHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZSByZWZsZWN0ZWQgbWV0aG9kIGlzIG5vdCBjYWxsZWQuXG4nLAorICdzdHJpbmctbWV0aG9kcyc6ICdcblN0cmluZyBNZXRob2RzXG4qKioqKioqKioqKioqKlxuXG5TdHJpbmdzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMsIGFsb25nIHdpdGhcbnRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuXG5TdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgcHJvdmlkaW5nIGFcbmxhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlIGBgc3RyLmZvcm1hdCgpYGAsXG4qRm9ybWF0IFN0cmluZyBTeW50YXgqIGFuZCAqU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlIG90aGVyIGJhc2VkIG9uXG5DIGBgcHJpbnRmYGAgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciByYW5nZSBvZiB0eXBlc1xuYW5kIGlzIHNsaWdodGx5IGhhcmRlciB0byB1c2UgY29ycmVjdGx5LCBidXQgaXMgb2Z0ZW4gZmFzdGVyIGZvciB0aGVcbmNhc2VzIGl0IGNhbiBoYW5kbGUgKCpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqKS5cblxuVGhlICpUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMqIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgY292ZXJzXG5hIG51bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCB1dGlsaXRpZXNcbihpbmNsdWRpbmcgcmVndWxhciBleHByZXNzaW9uIHN1cHBvcnQgaW4gdGhlIGBgcmVgYCBtb2R1bGUpLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2FzZWZvbGQoKVxuXG4gICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZVxuICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG5cbiAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlXG4gICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3JcbiAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciBgYFwnXHhjM1x4OWZcJ2BgIGlzIGVxdWl2YWxlbnQgdG9cbiAgIGBgInNzImBgLiBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgYGBsb3dlcigpYGAgd291bGQgZG9cbiAgIG5vdGhpbmcgdG8gYGBcJ1x4YzNceDlmXCdgYDsgYGBjYXNlZm9sZCgpYGAgY29udmVydHMgaXQgdG8gYGAic3MiYGAuXG5cbiAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhIHNwYWNlKS5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzIGBgXCd1dGYtOFwnYGAuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnRcbiAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuIE90aGVyXG4gICBwb3NzaWJsZSB2YWx1ZXMgYXJlIGBgXCdpZ25vcmVcJ2BgLCBgYFwncmVwbGFjZVwnYGAsXG4gICBgYFwneG1sY2hhcnJlZnJlcGxhY2VcJ2BgLCBgYFwnYmFja3NsYXNocmVwbGFjZVwnYGAgYW5kIGFueSBvdGhlciBuYW1lXG4gICByZWdpc3RlcmVkIHZpYSBgYGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpYGAsIHNlZSBzZWN0aW9uICpDb2RlYyBCYXNlXG4gICBDbGFzc2VzKi4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZFxuICAgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZlxuICAgc3VmZml4ZXMgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0XG4gICB0aGF0IHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5leHBhbmR0YWJzKFt0YWJzaXplXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IHplcm8gb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUaGUgY29sdW1uIG51bWJlciBpcyByZXNldCB0byB6ZXJvIGFmdGVyIGVhY2hcbiAgIG5ld2xpbmUgb2NjdXJyaW5nIGluIHRoZSBzdHJpbmcuIElmICp0YWJzaXplKiBpcyBub3QgZ2l2ZW4sIGEgdGFiXG4gICBzaXplIG9mIGBgOGBgIGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4gIFRoaXMgZG9lc25cJ3QgdW5kZXJzdGFuZCBvdGhlclxuICAgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgb3IgZXNjYXBlIHNlcXVlbmNlcy5cblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIGluIHRoZSBzbGljZSBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIGlmICpzdWIqIGlzIG5vdCBmb3VuZC5cblxuICAgTm90ZTogVGhlIGBgZmluZCgpYGAgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vdyB0aGVcbiAgICAgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsIHVzZVxuICAgICB0aGUgYGBpbmBgIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgYGB7fWBgLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyBlaXRoZXJcbiAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgb2YgYVxuICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZVxuICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cblxuICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbiAgIFwnVGhlIHN1bSBvZiAxICsgMiBpcyAzXCdcblxuICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXNcbiAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG5cbnN0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG5cbiAgIFNpbWlsYXIgdG8gYGBzdHIuZm9ybWF0KCoqbWFwcGluZylgYCwgZXhjZXB0IHRoYXQgYGBtYXBwaW5nYGAgaXNcbiAgIHVzZWQgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSBgYGRpY3RgYCAuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3JcbiAgIGV4YW1wbGUgYGBtYXBwaW5nYGAgaXMgYSBkaWN0IHN1YmNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbiAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4gICAuLi5cbiAgID4+PiBcJ3tuYW1lfSB3YXMgYm9ybiBpbiB7Y291bnRyeX1cJy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT1cJ0d1aWRvXCcpKVxuICAgXCdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5XCdcblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5zdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYGZpbmQoKWBgLCBidXQgcmFpc2UgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXJcbiAgIGBgY2BgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zIGBgVHJ1ZWBgOlxuICAgYGBjLmlzYWxwaGEoKWBgLCBgYGMuaXNkZWNpbWFsKClgYCwgYGBjLmlzZGlnaXQoKWBgLCBvclxuICAgYGBjLmlzbnVtZXJpYygpYGAuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuIGBgcmVwcigpYGAgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byBgYHN5cy5zdGRvdXRgYCBvciBgYHN5cy5zdGRlcnJgYC4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgYGBUeXBlRXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgYGBieXRlc2BgIG9iamVjdHMuXG4gICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgdGhpcyBtZXRob2QuXG5cbnN0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgc3RyLnRyYW5zbGF0ZSgpYGAuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYHJmaW5kKClgYCBidXQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKlxuICAgaXMgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICBgYE5vbmVgYCwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvclxuICAgc3BsaXR0aW5nIGZyb20gdGhlIHJpZ2h0LCBgYHJzcGxpdCgpYGAgYmVoYXZlcyBsaWtlIGBgc3BsaXQoKWBgXG4gICB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG5zdHIucnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICBcJyAgIHNwYWNpb3VzXCdcbiAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciBgYC0xYGAsIHRoZW4gdGhlcmUgaXNcbiAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgYGBcJzEsLDJcJy5zcGxpdChcJyxcJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJ1wnLCBcJzJcJ11gYCkuICBUaGUgKnNlcCpcbiAgIGFyZ3VtZW50IG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgYGBcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgKS4gU3BsaXR0aW5nXG4gICBhbiBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyBgYFtcJ1wnXWBgLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIGBgTm9uZWBgLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSBgYE5vbmVgYCBzZXBhcmF0b3IgcmV0dXJuc1xuICAgYGBbXWBgLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJyAxICAyICAgMyAgXCcuc3BsaXQoKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCxcbiAgIGFuZCBgYFwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSlgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzIgICAzICBcJ11gYC5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gVGhpcyBtZXRob2QgdXNlcyB0aGUgKnVuaXZlcnNhbCBuZXdsaW5lcyogYXBwcm9hY2ggdG9cbiAgIHNwbGl0dGluZyBsaW5lcy4gTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcygpYGAgcmV0dXJuc1xuICAgYGBbXCdhYiBjXCcsIFwnXCcsIFwnZGUgZmdcJywgXCdrbFwnXWBgLCB3aGlsZSB0aGUgc2FtZSBjYWxsIHdpdGhcbiAgIGBgc3BsaXRsaW5lcyhUcnVlKWBgIHJldHVybnMgYGBbXCdhYiBjXFxuXCcsIFwnXFxuXCcsIFwnZGUgZmdcXHJcJyxcbiAgIFwna2xcXHJcXG5cJ11gYC5cblxuICAgVW5saWtlIGBgc3BsaXQoKWBgIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzIGdpdmVuLCB0aGlzXG4gICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgYSB0ZXJtaW5hbFxuICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZS5cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZVxuICAgcmV0dXJuIGBgRmFsc2VgYC4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rXG4gICBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzXG4gICB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgIFwnc3BhY2lvdXNcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZVwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgdGhhdFxuICAgYGBzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzYGAuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIuemZpbGwod2lkdGgpXG5cbiAgIFJldHVybiB0aGUgbnVtZXJpYyBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCB6ZXJvcyBpbiBhIHN0cmluZyBvZlxuICAgbGVuZ3RoICp3aWR0aCouICBBIHNpZ24gcHJlZml4IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAgVGhlIG9yaWdpbmFsXG4gICBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYGBsZW4ocylgYC5cbicsCisgJ3N0cmluZ3MnOiAnXG5TdHJpbmcgYW5kIEJ5dGVzIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblN0cmluZyBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgc3RyaW5nbGl0ZXJhbCAgIDo6PSBbc3RyaW5ncHJlZml4XShzaG9ydHN0cmluZyB8IGxvbmdzdHJpbmcpXG4gICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIlxuICAgc2hvcnRzdHJpbmcgICAgIDo6PSAiXCciIHNob3J0c3RyaW5naXRlbSogIlwnIiB8IFwnIlwnIHNob3J0c3RyaW5naXRlbSogXCciXCdcbiAgIGxvbmdzdHJpbmcgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ3N0cmluZ2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nc3RyaW5naXRlbSogXCciIiJcJ1xuICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIGxvbmdzdHJpbmdpdGVtICA6Oj0gbG9uZ3N0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIHNob3J0c3RyaW5nY2hhciA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ3N0cmluZ2NoYXIgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBzdHJpbmdlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBzb3VyY2UgY2hhcmFjdGVyPlxuXG4gICBieXRlc2xpdGVyYWwgICA6Oj0gYnl0ZXNwcmVmaXgoc2hvcnRieXRlcyB8IGxvbmdieXRlcylcbiAgIGJ5dGVzcHJlZml4ICAgIDo6PSAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydGJ5dGVzaXRlbSogXCciXCdcbiAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuXG5PbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgdGhhdFxud2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSBgYHN0cmluZ3ByZWZpeGBgIG9yXG5gYGJ5dGVzcHJlZml4YGAgYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXRcbmlzIGRlZmluZWQgYnkgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZ1xuZGVjbGFyYXRpb24gaXMgZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiAqRW5jb2RpbmdcbmRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzIChgYFwnYGApIG9yIGRvdWJsZSBxdW90ZXMgKGBgImBgKS4gIFRoZXkgY2FuIGFsc28gYmVcbmVuY2xvc2VkIGluIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2VcbmFyZSBnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlIGJhY2tzbGFzaFxuKGBgXFxgYCkgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCBgYFwnYlwnYGAgb3IgYGBcJ0JcJ2BgOyB0aGV5XG5wcm9kdWNlIGFuIGluc3RhbmNlIG9mIHRoZSBgYGJ5dGVzYGAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBgYHN0cmBgIHR5cGUuXG5UaGV5IG1heSBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2ZcbjEyOCBvciBncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cblxuQXMgb2YgUHl0aG9uIDMuMyBpdCBpcyBwb3NzaWJsZSBhZ2FpbiB0byBwcmVmaXggdW5pY29kZSBzdHJpbmdzIHdpdGggYVxuYGB1YGAgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYDsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgKnJhdyBzdHJpbmdzKiBhbmRcbnRyZWF0IGJhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmdcbmxpdGVyYWxzLCBgYFwnXFxVXCdgYCBhbmQgYGBcJ1xcdVwnYGAgZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWRcbnNwZWNpYWxseS4gR2l2ZW4gdGhhdCBQeXRob24gMi54XCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZVxuZGlmZmVyZW50bHkgdGhhbiBQeXRob24gMy54XCdzIHRoZSBgYFwndXJcJ2BgIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSBgYFwncmJcJ2BgIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzXG4gICBiZWVuIGFkZGVkIGFzIGEgc3lub255bSBvZiBgYFwnYnJcJ2BgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsXG4gICAoYGB1XCd2YWx1ZVwnYGApIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mIGR1YWxcbiAgIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuSW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIHN0cmluZy4gIChBICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gdGhlXG5zdHJpbmcsIGkuZS4gZWl0aGVyIGBgXCdgYCBvciBgYCJgYC4pXG5cblVubGVzcyBhbiBgYFwnclwnYGAgb3IgYGBcJ1JcJ2BgIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluXG5zdHJpbmdzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZSB1c2VkIGJ5XG5TdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcXG5ld2xpbmVgYCAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxcXGBgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKGBgXFxgYCkgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxcJ2BgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKGBgXCdgYCkgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFwiYGAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoYGAiYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcYWBgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGJgYCAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxmYGAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcbmBgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHJgYCAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx0YGAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdmBgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG9vb2BgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx4aGhgYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxOe25hbWV9YGAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdXh4eHhgYCAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFV4eHh4eHh4eGBgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZSBieXRlXG4gICB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlcyBkZW5vdGUgYVxuICAgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGNhbiBiZVxuICAgZW5jb2RlZCB1c2luZyB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZVxuICAgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheSwgYnV0IGNoYXJhY3RlcnNcbiAgIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKSB3aWxsIGJlIGVuY29kZWQgdXNpbmcgYVxuICAgc3Vycm9nYXRlIHBhaXIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHRvIHVzZSAxNi1iaXQgY29kZSB1bml0cyAodGhlXG4gICBkZWZhdWx0KS4gIEV4YWN0bHkgZWlnaHQgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cblVubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gdGhlXG5zdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSBzdHJpbmcqLiAgKFRoaXNcbmJlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIG1pc3R5cGVkLFxudGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgYWxzb1xuaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nXG5saXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlc1xubGl0ZXJhbHMuXG5cbkV2ZW4gaW4gYSByYXcgc3RyaW5nLCBzdHJpbmcgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsXG5idXQgdGhlIGJhY2tzbGFzaCByZW1haW5zIGluIHRoZSBzdHJpbmc7IGZvciBleGFtcGxlLCBgYHIiXFwiImBgIGlzIGFcbnZhbGlkIHN0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhXG5kb3VibGUgcXVvdGU7IGBgciJcXCJgYCBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhd1xuc3RyaW5nIGNhbm5vdCBlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphXG5yYXcgc3RyaW5nIGNhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaFxud291bGQgZXNjYXBlIHRoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlXG5iYWNrc2xhc2ggZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzXG5hcyBwYXJ0IG9mIHRoZSBzdHJpbmcsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAogICdzdWJzY3JpcHRpb25zJzogJ1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb24sXG5lLmcuIGEgbGlzdCBvciBkaWN0aW9uYXJ5LiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxuRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0IHN1cHBvcnRcbnN1YnNjcmlwdGlvbjpcblxuSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nLCB0aGUgZXhwcmVzc2lvbiBsaXN0IG11c3QgZXZhbHVhdGUgdG8gYW5cbm9iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCB0aGVcbnN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoYXRcbmtleS4gIChUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGEgdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyBleGFjdGx5IG9uZVxuaXRlbS4pXG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0IGV2YWx1YXRlIHRvXG5hbiBpbnRlZ2VyIG9yIGEgc2xpY2UgKGFzIGRpc2N1c3NlZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLlxuXG5UaGUgZm9ybWFsIHN5bnRheCBtYWtlcyBubyBzcGVjaWFsIHByb3Zpc2lvbiBmb3IgbmVnYXRpdmUgaW5kaWNlcyBpblxuc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSBgYF9fZ2V0aXRlbV9fKClgYFxubWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgbGVuZ3RoIG9mIHRoZVxuc2VxdWVuY2UgdG8gdGhlIGluZGV4IChzbyB0aGF0IGBgeFstMV1gYCBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2ZcbmBgeGBgKS4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuXG50aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGVcbml0ZW0gd2hvc2UgaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnRcbmZvciBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzXG5gYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QsIHN1YmNsYXNzZXMgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZCB3aWxsIG5lZWRcbnRvIGV4cGxpY2l0bHkgYWRkIHRoYXQgc3VwcG9ydC5cblxuQSBzdHJpbmdcJ3MgaXRlbXMgYXJlIGNoYXJhY3RlcnMuICBBIGNoYXJhY3RlciBpcyBub3QgYSBzZXBhcmF0ZSBkYXRhXG50eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAogICd0cnV0aCc6ICJcblRydXRoIFZhbHVlIFRlc3RpbmdcbioqKioqKioqKioqKioqKioqKipcblxuQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiBgYGlmYGAgb3JcbmBgd2hpbGVgYCBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiBUaGVcbmZvbGxvd2luZyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgZmFsc2U6XG5cbiogYGBOb25lYGBcblxuKiBgYEZhbHNlYGBcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCBgYDBgYCwgYGAwLjBgYCwgYGAwamBgLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsIGBgJydgYCwgYGAoKWBgLCBgYFtdYGAuXG5cbiogYW55IGVtcHR5IG1hcHBpbmcsIGZvciBleGFtcGxlLCBgYHt9YGAuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gIGBgX19ib29sX18oKWBgIG9yIGBgX19sZW5fXygpYGAgbWV0aG9kLCB3aGVuIHRoYXQgbWV0aG9kIHJldHVybnMgdGhlXG4gIGludGVnZXIgemVybyBvciBgYGJvb2xgYCB2YWx1ZSBgYEZhbHNlYGAuIFsxXVxuXG5BbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyBhcmVcbmFsd2F5cyB0cnVlLlxuXG5PcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgYWx3YXlzXG5yZXR1cm4gYGAwYGAgb3IgYGBGYWxzZWBgIGZvciBmYWxzZSBhbmQgYGAxYGAgb3IgYGBUcnVlYGAgZm9yIHRydWUsXG51bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnNcbmBgb3JgYCBhbmQgYGBhbmRgYCBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4iLAotICd0cnknOiAnXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kXG5vZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHJhaXNlcyBhbm90aGVyXG5leGNlcHRpb24gb3IgZXhlY3V0ZXMgYSBgYHJldHVybmBgIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gIFRoZSBleGNlcHRpb25cbmluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGVcbmBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogJ1xuVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gIEV4dGVuc2lvblxubW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbmltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcblB5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgbnVtYmVycyxcbmVmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLCBhbHRob3VnaCBzdWNoIGFkZGl0aW9uc1xud2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cblxuU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG5cJ3NwZWNpYWwgYXR0cmlidXRlcy5cJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byB0aGVcbmltcGxlbWVudGF0aW9uIGFuZCBhcmUgbm90IGludGVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFRoZWlyIGRlZmluaXRpb25cbm1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxuTm9uZVxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lIGBgTm9uZWBgLlxuICAgSXQgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLFxuICAgZS5nLiwgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb25cJ3QgZXhwbGljaXRseSByZXR1cm5cbiAgIGFueXRoaW5nLiBJdHMgdHJ1dGggdmFsdWUgaXMgZmFsc2UuXG5cbk5vdEltcGxlbWVudGVkXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbiAgIGBgTm90SW1wbGVtZW50ZWRgYC4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBtYXlcbiAgIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciB0aGVcbiAgIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZSByZWZsZWN0ZWRcbiAgIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvci4pICBJdHNcbiAgIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgYGAuLi5gYCBvciB0aGVcbiAgIGJ1aWx0LWluIG5hbWUgYGBFbGxpcHNpc2BgLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbmBgbnVtYmVycy5OdW1iZXJgYFxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgIGBgbnVtYmVycy5JbnRlZ3JhbGBgXG4gICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiBpbnRlZ2Vyc1xuICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG5cbiAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG5cbiAgICAgIEludGVnZXJzIChgYGludGBgKVxuXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgdG9cbiAgICAgICAgIGF2YWlsYWJsZSAodmlydHVhbCkgbWVtb3J5IG9ubHkuICBGb3IgdGhlIHB1cnBvc2Ugb2Ygc2hpZnRcbiAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsIGFuZFxuICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDJcJ3NcbiAgICAgICAgIGNvbXBsZW1lbnQgd2hpY2ggZ2l2ZXMgdGhlIGlsbHVzaW9uIG9mIGFuIGluZmluaXRlIHN0cmluZyBvZlxuICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cblxuICAgICAgQm9vbGVhbnMgKGBgYm9vbGBgKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzIEZhbHNlIGFuZCBUcnVlIGFyZSB0aGUgb25seVxuICAgICAgICAgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGUgaW50ZWdlclxuICAgICAgICAgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCBhbmQgMSxcbiAgICAgICAgIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiBiZWluZ1xuICAgICAgICAgdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHN0cmluZywgdGhlIHN0cmluZ3MgYGAiRmFsc2UiYGAgb3JcbiAgICAgICAgIGBgIlRydWUiYGAgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgIGBgbnVtYmVycy5SZWFsYGAgKGBgZmxvYXRgYClcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnRcbiAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbiAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSBhY2NlcHRlZFxuICAgICAgcmFuZ2UgYW5kIGhhbmRsaW5nIG9mIG92ZXJmbG93LiBQeXRob24gZG9lcyBub3Qgc3VwcG9ydCBzaW5nbGUtXG4gICAgICBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlIHNhdmluZ3MgaW4gcHJvY2Vzc29yIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgaXNcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICBgYG51bWJlcnMuQ29tcGxleGBgIChgYGNvbXBsZXhgYClcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBjb21wbGV4IG51bWJlcnMgYXMgYSBwYWlyIG9mIG1hY2hpbmUtbGV2ZWxcbiAgICAgIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gIFRoZSBzYW1lIGNhdmVhdHMgYXBwbHlcbiAgICAgIGFzIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBUaGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIGFcbiAgICAgIGNvbXBsZXggbnVtYmVyIGBgemBgIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzIGBgei5yZWFsYGAgYW5kIGBgei5pbWFnYGAuXG5cblNlcXVlbmNlc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBvcmRlcmVkIHNldHMgaW5kZXhlZCBieSBub24tbmVnYXRpdmVcbiAgIG51bWJlcnMuIFRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mXG4gICBpdGVtcyBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZVxuICAgaW5kZXggc2V0IGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZlxuICAgc2VxdWVuY2UgKmEqIGlzIHNlbGVjdGVkIGJ5IGBgYVtpXWBgLlxuXG4gICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6IGBgYVtpOmpdYGAgc2VsZWN0cyBhbGwgaXRlbXMgd2l0aFxuICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogYGA8PWBgICprKiBgYDxgYCAqaiouICBXaGVuIHVzZWQgYXMgYW5cbiAgIGV4cHJlc3Npb24sIGEgc2xpY2UgaXMgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyBpbXBsaWVzXG4gICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuXG4gICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAic3RlcCJcbiAgIHBhcmFtZXRlcjogYGBhW2k6ajprXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KlxuICAgd2hlcmUgYGB4ID0gaSArIG4qa2BgLCAqbiogYGA+PWBgIGBgMGBgIGFuZCAqaSogYGA8PWBgICp4KiBgYDxgYFxuICAgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgc3RyaW5nIG9iamVjdCBhcmUgVW5pY29kZSBjb2RlIHVuaXRzLiAgQVxuICAgICAgICAgVW5pY29kZSBjb2RlIHVuaXQgaXMgcmVwcmVzZW50ZWQgYnkgYSBzdHJpbmcgb2JqZWN0IG9mIG9uZVxuICAgICAgICAgaXRlbSBhbmQgY2FuIGhvbGQgZWl0aGVyIGEgMTYtYml0IG9yIDMyLWJpdCB2YWx1ZVxuICAgICAgICAgcmVwcmVzZW50aW5nIGEgVW5pY29kZSBvcmRpbmFsICh0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlXG4gICAgICAgICBvcmRpbmFsIGlzIGdpdmVuIGluIGBgc3lzLm1heHVuaWNvZGVgYCwgYW5kIGRlcGVuZHMgb24gaG93XG4gICAgICAgICBQeXRob24gaXMgY29uZmlndXJlZCBhdCBjb21waWxlIHRpbWUpLiAgU3Vycm9nYXRlIHBhaXJzIG1heVxuICAgICAgICAgYmUgcHJlc2VudCBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZCB3aWxsIGJlIHJlcG9ydGVkIGFzIHR3b1xuICAgICAgICAgc2VwYXJhdGUgaXRlbXMuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgY2hyKClgYCBhbmRcbiAgICAgICAgIGBgb3JkKClgYCBjb252ZXJ0IGJldHdlZW4gY29kZSB1bml0cyBhbmQgbm9ubmVnYXRpdmUgaW50ZWdlcnNcbiAgICAgICAgIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZSBvcmRpbmFscyBhcyBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICAgICAgICBTdGFuZGFyZCAzLjAuIENvbnZlcnNpb24gZnJvbSBhbmQgdG8gb3RoZXIgZW5jb2RpbmdzIGFyZVxuICAgICAgICAgcG9zc2libGUgdGhyb3VnaCB0aGUgc3RyaW5nIG1ldGhvZCBgYGVuY29kZSgpYGAuXG5cbiAgICAgIFR1cGxlc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzIG9mXG4gICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhIFwnc2luZ2xldG9uXCcpIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiBieVxuICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4gICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG5cbiAgICAgIEJ5dGVzXG4gICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlIDgtYml0XG4gICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbiAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlIGBgYlwnYWJjXCdgYCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICBgYGJ5dGVzKClgYCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4gICAgICAgICBieXRlcyBvYmplY3RzIGNhbiBiZSBkZWNvZGVkIHRvIHN0cmluZ3MgdmlhIHRoZSBgYGRlY29kZSgpYGBcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgYGBkZWxgYCAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuXG4gICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcblxuICAgICAgTGlzdHNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzIGFyZVxuICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpblxuICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzIG5lZWRlZFxuICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcblxuICAgICAgQnl0ZSBBcnJheXNcbiAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgYnlcbiAgICAgICAgIHRoZSBidWlsdC1pbiBgYGJ5dGVhcnJheSgpYGAgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4gICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSBwcm92aWRlXG4gICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4gICAgICAgICBvYmplY3RzLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSBgYGFycmF5YGAgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mXG4gICAgICBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZS5cblxuU2V0IHR5cGVzXG4gICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiBIb3dldmVyLFxuICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGBcbiAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlIGZhc3RcbiAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbiAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cblxuICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yXG4gICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgYGAxLjBgYCksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cblxuICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcblxuICAgU2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHNldCgpYGAgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5IHNldmVyYWxcbiAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgYGBhZGQoKWBgLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gYGBmcm96ZW5zZXQoKWBgIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXNcbiAgICAgIGltbXV0YWJsZSBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZlxuICAgICAgYW5vdGhlciBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG5cbk1hcHBpbmdzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSBpbmRleFxuICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiBgYGFba11gYCBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnlcbiAgIGBga2BgIGZyb20gdGhlIG1hcHBpbmcgYGBhYGA7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kXG4gICBhcyB0aGUgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yIGBgZGVsYGAgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluXG4gICBmdW5jdGlvbiBgYGxlbigpYGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgYGAxYGAgYW5kXG4gICAgICBgYDEuMGBgKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4gICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuXG4gICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlIGBgey4uLn1gYFxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyBgYGRibS5uZGJtYGAgYW5kIGBgZGJtLmdudWBgIHByb3ZpZGVcbiAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGVcbiAgICAgIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8IGBgX19kb2NfX2BgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgYGBOb25lYGAgaWYgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX25hbWVfX2BgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBuYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX21vZHVsZV9fYGAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19kZWZhdWx0c19fYGAgICAgICAgICAgfCBBIHR1cGxlIGNvbnRhaW5pbmcgZGVmYXVsdCAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvciBgYE5vbmVgYCBpZiBubyBhcmd1bWVudHMgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19jb2RlX19gYCAgICAgICAgICAgICAgfCBUaGUgY29kZSBvYmplY3QgcmVwcmVzZW50aW5nICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19nbG9iYWxzX19gYCAgICAgICAgICAgfCBBIHJlZmVyZW5jZSB0byB0aGUgZGljdGlvbmFyeSAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb25cJ3MgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgZ2xvYmFsIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZC4gfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGljdF9fYGAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyYml0cmFyeSBmdW5jdGlvbiBhdHRyaWJ1dGVzLiAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY2xvc3VyZV9fYGAgICAgICAgICAgIHwgYGBOb25lYGAgb3IgYSB0dXBsZSBvZiBjZWxscyAgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvblwncyBmcmVlIHZhcmlhYmxlcy4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19hbm5vdGF0aW9uc19fYGAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2YgcGFyYW1ldGVycy4gIFRoZSBrZXlzIG9mIHRoZSB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgbmFtZXMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvciBgYFwncmV0dXJuXCdgYCBmb3IgdGhlIHJldHVybiAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbm5vdGF0aW9uLCBpZiBwcm92aWRlZC4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2t3ZGVmYXVsdHNfX2BgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcblxuICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mIHRoZVxuICAgICAgYXNzaWduZWQgdmFsdWUuXG5cbiAgICAgIEZ1bmN0aW9uIG9iamVjdHMgYWxzbyBzdXBwb3J0IGdldHRpbmcgYW5kIHNldHRpbmcgYXJiaXRyYXJ5XG4gICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCBtZXRhZGF0YVxuICAgICAgdG8gZnVuY3Rpb25zLiAgUmVndWxhciBhdHRyaWJ1dGUgZG90LW5vdGF0aW9uIGlzIHVzZWQgdG8gZ2V0IGFuZFxuICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5XG4gICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuIEZ1bmN0aW9uXG4gICAgICBhdHRyaWJ1dGVzIG9uIGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGluIHRoZVxuICAgICAgZnV0dXJlLipcblxuICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZ1bmN0aW9uXCdzIGRlZmluaXRpb24gY2FuIGJlXG4gICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgaW50ZXJuYWxcbiAgICAgIHR5cGVzIGJlbG93LlxuXG4gICBJbnN0YW5jZSBtZXRob2RzXG4gICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgYW5kXG4gICAgICBhbnkgY2FsbGFibGUgb2JqZWN0IChub3JtYWxseSBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbikuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgX19zZWxmX19gYCBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgYGBfX2Z1bmNfX2BgIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7IGBgX19kb2NfX2BgIGlzIHRoZVxuICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX2RvY19fYGApO1xuICAgICAgYGBfX25hbWVfX2BgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyBgYF9fZnVuY19fLl9fbmFtZV9fYGApO1xuICAgICAgYGBfX21vZHVsZV9fYGAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkXG4gICAgICBpbiwgb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuXG5cbiAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgYXJiaXRyYXJ5XG4gICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgVXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3RzIG1heSBiZSBjcmVhdGVkIHdoZW4gZ2V0dGluZyBhblxuICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCBpZlxuICAgICAgdGhhdCBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IG9yIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSB1c2VyLVxuICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzIGluc3RhbmNlcyxcbiAgICAgIGl0cyBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBtZXRob2RcbiAgICAgIG9iamVjdCBpcyBzYWlkIHRvIGJlIGJvdW5kLiAgVGhlIG5ldyBtZXRob2RcJ3MgYGBfX2Z1bmNfX2BgXG4gICAgICBhdHRyaWJ1dGUgaXMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgYGBfX2Z1bmNfX2BgXG4gICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCBvYmplY3RcbiAgICAgIGJ1dCBpdHMgYGBfX2Z1bmNfX2BgIGF0dHJpYnV0ZS5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgaXRzIGBgX19zZWxmX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgYGBfX2Z1bmNfX2BgIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIGZ1bmN0aW9uIG9iamVjdCB1bmRlcmx5aW5nIHRoZSBjbGFzcyBtZXRob2QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4gICAgICBmdW5jdGlvbiAoYGBfX2Z1bmNfX2BgKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIChgYF9fc2VsZl9fYGApIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLFxuICAgICAgd2hlbiBgYENgYCBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvblxuICAgICAgYGBmKClgYCwgYW5kIGBgeGBgIGlzIGFuIGluc3RhbmNlIG9mIGBgQ2BgLCBjYWxsaW5nIGBgeC5mKDEpYGBcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBgYEMuZih4LCAxKWBgLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiBgYF9fc2VsZl9fYGAgd2lsbFxuICAgICAgYWN0dWFsbHkgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciBgYHguZigxKWBgXG4gICAgICBvciBgYEMuZigxKWBgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBgYGYoQywxKWBgIHdoZXJlIGBgZmBgIGlzXG4gICAgICB0aGUgdW5kZXJseWluZyBmdW5jdGlvbi5cblxuICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byBpbnN0YW5jZVxuICAgICAgbWV0aG9kIG9iamVjdCBoYXBwZW5zIGVhY2ggdGltZSB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZCBmcm9tXG4gICAgICB0aGUgaW5zdGFuY2UuICBJbiBzb21lIGNhc2VzLCBhIGZydWl0ZnVsIG9wdGltaXphdGlvbiBpcyB0b1xuICAgICAgYXNzaWduIHRoZSBhdHRyaWJ1dGUgdG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2FsbCB0aGF0IGxvY2FsXG4gICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyBmb3JcbiAgICAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbnM7IG90aGVyIGNhbGxhYmxlIG9iamVjdHMgKGFuZCBhbGwgbm9uLVxuICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgaXNcbiAgICAgIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIHdoaWNoIGFyZVxuICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4gICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuIGF0dHJpYnV0ZVxuICAgICAgb2YgdGhlIGNsYXNzLlxuXG4gICBHZW5lcmF0b3IgZnVuY3Rpb25zXG4gICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgYGBfX25leHRfXygpYGAgbWV0aG9kIHdpbGwgY2F1c2UgdGhlIGZ1bmN0aW9uIHRvXG4gICAgICBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQuXG4gICAgICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhIGBgcmV0dXJuYGAgc3RhdGVtZW50IG9yIGZhbGxzIG9mZlxuICAgICAgdGhlIGVuZCwgYSBgYFN0b3BJdGVyYXRpb25gYCBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGVcbiAgICAgIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gYmVcbiAgICAgIHJldHVybmVkLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSBgYGxlbigpYGAgYW5kIGBgbWF0aC5zaW4oKWBgXG4gICAgICAoYGBtYXRoYGAgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6IGBgX19kb2NfX2BgIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4gICAgICBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlOyBgYF9fbmFtZV9fYGAgaXMgdGhlXG4gICAgICBmdW5jdGlvblwncyBuYW1lOyBgYF9fc2VsZl9fYGAgaXMgc2V0IHRvIGBgTm9uZWBgIChidXQgc2VlIHRoZVxuICAgICAgbmV4dCBpdGVtKTsgYGBfX21vZHVsZV9fYGAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGVcbiAgICAgIGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICBCdWlsdC1pbiBtZXRob2RzXG4gICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCB0aGlzXG4gICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4gICAgICBgYGFsaXN0LmFwcGVuZCgpYGAsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuICAgICAgY2FzZSwgdGhlIHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZSBgYF9fc2VsZl9fYGAgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgYGBfX25ld19fKClgYC4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4gICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYCBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4gICAgICBgYF9faW5pdF9fKClgYCB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhIGBgX19jYWxsX18oKWBgIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cblxuTW9kdWxlc1xuICAgTW9kdWxlcyBhcmUgaW1wb3J0ZWQgYnkgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50IChzZWUgc2VjdGlvbiAqVGhlXG4gICBpbXBvcnQgc3RhdGVtZW50KikuIEEgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnlcbiAgIGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGVcbiAgIF9fZ2xvYmFsc19fIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS5cbiAgIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnhgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdYGAuIEEgbW9kdWxlIG9iamVjdFxuICAgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZSBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGVcbiAgIChzaW5jZSBpdCBpc25cJ3QgbmVlZGVkIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksXG4gICBlLmcuLCBgYG0ueCA9IDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLlxuXG4gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IGBgX19kaWN0X19gYCBpcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZVxuICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBCZWNhdXNlIG9mIHRoZSB3YXkgQ1B5dGhvblxuICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlIGNsZWFyZWRcbiAgIHdoZW4gdGhlIG1vZHVsZSBmYWxscyBvdXQgb2Ygc2NvcGUgZXZlbiBpZiB0aGUgZGljdGlvbmFyeSBzdGlsbCBoYXNcbiAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCB0aGVcbiAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiBgYF9fbmFtZV9fYGAgaXMgdGhlIG1vZHVsZVwnc1xuICAgbmFtZTsgYGBfX2RvY19fYGAgaXMgdGhlIG1vZHVsZVwncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGBcbiAgIGlmIHVuYXZhaWxhYmxlOyBgYF9fZmlsZV9fYGAgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2hcbiAgIHRoZSBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlXG4gICBgYF9fZmlsZV9fYGAgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50IGZvciBDIG1vZHVsZXMgdGhhdCBhcmVcbiAgIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXNcbiAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGVcbiAgIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYEMueGBgIGlzIHRyYW5zbGF0ZWQgdG9cbiAgIGBgQy5fX2RpY3RfX1sieCJdYGAgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaFxuICAgYWxsb3cgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGVcbiAgIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgYGBDYGAsIHNheSkgd291bGQgeWllbGRcbiAgIGEgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlcyBpcyBgYENgYC4gIFdoZW4gaXQgd291bGQgeWllbGRcbiAgIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkXG4gICBieSB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyBgYF9fZGljdF9fYGAuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBjbGFzcyBuYW1lOyBgYF9fbW9kdWxlX19gYFxuICAgaXMgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgYGBfX2RpY3RfX2BgIGlzXG4gICB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7IGBgX19iYXNlc19fYGAgaXMgYVxuICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsXG4gICBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0O1xuICAgYGBfX2RvY19fYGAgaXMgdGhlIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmXG4gICB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzXG4gICBgYF9fZGljdF9fYGAuICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzXG4gICBjbGFzcyBoYXMgYSBgYF9fZ2V0YXR0cl9fKClgYCBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlXG4gICBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgYGBfX3NldGF0dHJfXygpYGAgb3IgYGBfX2RlbGF0dHJfXygpYGAgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX2RpY3RfX2BgIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgIGBgX19jbGFzc19fYGAgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgYGBvcGVuKClgYCBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvIGBgb3MucG9wZW4oKWBgLCBgYG9zLmZkb3BlbigpYGAsIGFuZCB0aGUgYGBtYWtlZmlsZSgpYGBcbiAgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgYGBzeXMuc3RkaW5gYCwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgIGBgaW8uVGV4dElPQmFzZWBgIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBjb19uYW1lYGAgZ2l2ZXMgdGhlIGZ1bmN0aW9uXG4gICAgICBuYW1lOyBgYGNvX2FyZ2NvdW50YGAgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAgKGluY2x1ZGluZyBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7IGBgY29fbmxvY2Fsc2BgIGlzIHRoZVxuICAgICAgbnVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMpOyBgYGNvX3Zhcm5hbWVzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZlxuICAgICAgdGhlIGxvY2FsIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpO1xuICAgICAgYGBjb19jZWxsdmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7XG4gICAgICBgYGNvX2ZyZWV2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlXG4gICAgICB2YXJpYWJsZXM7IGBgY29fY29kZWBgIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2ZcbiAgICAgIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgYGBjb19jb25zdHNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG4gICAgICBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19uYW1lc2BgIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX2ZpbGVuYW1lYGAgaXNcbiAgICAgIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgIGBgY29fZmlyc3RsaW5lbm9gYCBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgYGBjb19sbm90YWJgYCBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgYGBjb19zdGFja3NpemVgYCBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyBgYGNvX2ZsYWdzYGAgaXMgYW4gaW50ZWdlciBlbmNvZGluZ1xuICAgICAgYSBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yIGBgY29fZmxhZ3NgYDogYml0XG4gICAgICBgYDB4MDRgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKmFyZ3VtZW50c2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdFxuICAgICAgYGAweDA4YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCoqa2V5d29yZHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHM7IGJpdCBgYDB4MjBgYCBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiBpcyBhIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zIChgYGZyb20gX19mdXR1cmVfXyBpbXBvcnRcbiAgICAgIGRpdmlzaW9uYGApIGFsc28gdXNlIGJpdHMgaW4gYGBjb19mbGFnc2BgIHRvIGluZGljYXRlIHdoZXRoZXIgYVxuICAgICAgY29kZSBvYmplY3Qgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0XG4gICAgICBgYDB4MjAwMGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlXG4gICAgICBkaXZpc2lvbiBlbmFibGVkOyBiaXRzIGBgMHgxMGBgIGFuZCBgYDB4MTAwMGBgIHdlcmUgdXNlZCBpblxuICAgICAgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gYGBjb19mbGFnc2BgIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgIGBgY29fY29uc3RzYGAgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBmX2JhY2tgYCBpcyB0byB0aGUgcHJldmlvdXNcbiAgICAgIHN0YWNrIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciBgYE5vbmVgYCBpZiB0aGlzIGlzIHRoZVxuICAgICAgYm90dG9tIHN0YWNrIGZyYW1lOyBgYGZfY29kZWBgIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZFxuICAgICAgaW4gdGhpcyBmcmFtZTsgYGBmX2xvY2Fsc2BgIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cFxuICAgICAgbG9jYWwgdmFyaWFibGVzOyBgYGZfZ2xvYmFsc2BgIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICBgYGZfYnVpbHRpbnNgYCBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lcztcbiAgICAgIGBgZl9sYXN0aWBgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG9cbiAgICAgIHRoZSBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiBgYGZfdHJhY2VgYCwgaWYgbm90IGBgTm9uZWBgLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyBgYGZfbGluZW5vYGAgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgIG9mIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb25cbiAgICAgIGp1bXBzIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQVxuICAgICAgZGVidWdnZXIgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudClcbiAgICAgIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgYGBzeXMuZXhjX2luZm8oKWBgLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zXG4gICAgICBubyBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5XG4gICAgICBmb3JtYXR0ZWQpIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpc1xuICAgICAgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXNcbiAgICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgdGJfbmV4dGBgIGlzIHRoZSBuZXh0IGxldmVsIGluXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkKSwgb3IgYGBOb25lYGAgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgYGB0Yl9mcmFtZWBgXG4gICAgICBwb2ludHMgdG8gdGhlIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDtcbiAgICAgIGBgdGJfbGluZW5vYGAgZ2l2ZXMgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkOyBgYHRiX2xhc3RpYGAgaW5kaWNhdGVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlXG4gICAgICBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXJcbiAgICAgIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZSBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQgaW4gYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIG5vIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2VcbiAgICAgIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciBgYF9fZ2V0aXRlbV9fKClgYFxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gYGBzbGljZSgpYGBcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHN0YXJ0YGAgaXMgdGhlIGxvd2VyIGJvdW5kO1xuICAgICAgYGBzdG9wYGAgaXMgdGhlIHVwcGVyIGJvdW5kOyBgYHN0ZXBgYCBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpc1xuICAgICAgYGBOb25lYGAgaWYgb21pdHRlZC4gVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgIGBgc3RhdGljbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiBgYGNsYXNzbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cbicsCisgJ3RyeSc6ICdcblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCBpdCBpc1xucmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgXG5jbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgc2V0IGFzIHRoZVxuY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbjsgaWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSBleGVjdXRlcyBhXG5gYHJldHVybmBgIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQ6XG5cbiAgIGRlZiBmKCk6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICAxLzBcbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICByZXR1cm4gNDJcblxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAorICd0eXBlcyc6ICdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSBgYE5vbmVgYC5cbiAgIEl0IGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucyxcbiAgIGUuZy4sIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICBgYE5vdEltcGxlbWVudGVkYGAuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbWF5XG4gICByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgdGhlXG4gICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgcmVmbGVjdGVkXG4gICBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IuKSAgSXRzXG4gICB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsIGBgLi4uYGAgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lIGBgRWxsaXBzaXNgYC4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5gYG51bWJlcnMuTnVtYmVyYGBcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICBgYG51bWJlcnMuSW50ZWdyYWxgYFxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoYGBpbnRgYClcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zIChgYGJvb2xgYClcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZSBhcmUgdGhlIG9ubHlcbiAgICAgICAgIEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlIGludGVnZXJcbiAgICAgICAgIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kIDEsXG4gICAgICAgICByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGBgIkZhbHNlImBgIG9yXG4gICAgICAgICBgYCJUcnVlImBgIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICBgYG51bWJlcnMuUmVhbGBgIChgYGZsb2F0YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGlzXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgYGBudW1iZXJzLkNvbXBsZXhgYCAoYGBjb21wbGV4YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciBgYHpgYCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyBgYHoucmVhbGBgIGFuZCBgYHouaW1hZ2BgLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZlxuICAgaXRlbXMgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGVcbiAgIGluZGV4IHNldCBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2ZcbiAgIHNlcXVlbmNlICphKiBpcyBzZWxlY3RlZCBieSBgYGFbaV1gYC5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiBgYGFbaTpqXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqIGBgPD1gYCAqayogYGA8YGAgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6IGBgYVtpOmo6a11gYCBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCpcbiAgIHdoZXJlIGBgeCA9IGkgKyBuKmtgYCwgKm4qIGBgPj1gYCBgYDBgYCBhbmQgKmkqIGBgPD1gYCAqeCogYGA8YGBcbiAgICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGVcbiAgICAgICAgIGNvZGVwb2ludHMuIEFsbCB0aGUgY29kZXBvaW50cyBpbiByYW5nZSBgYFUrMDAwMCAtIFUrMTBGRkZGYGBcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGFcbiAgICAgICAgIGBgY2hyYGAgdHlwZSwgYW5kIGV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIGlzXG4gICAgICAgICByZXByZXNlbnRlZCBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggYGAxYGAuICBUaGUgYnVpbHQtXG4gICAgICAgICBpbiBmdW5jdGlvbiBgYG9yZCgpYGAgY29udmVydHMgYSBjaGFyYWN0ZXIgdG8gaXRzIGNvZGVwb2ludFxuICAgICAgICAgKGFzIGFuIGludGVnZXIpOyBgYGNocigpYGAgY29udmVydHMgYW4gaW50ZWdlciBpbiByYW5nZSBgYDAgLVxuICAgICAgICAgMTBGRkZGYGAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiBgYHN0ci5lbmNvZGUoKWBgIGNhblxuICAgICAgICAgYmUgdXNlZCB0byBjb252ZXJ0IGEgYGBzdHJgYCB0byBgYGJ5dGVzYGAgdXNpbmcgdGhlIGdpdmVuXG4gICAgICAgICBlbmNvZGluZywgYW5kIGBgYnl0ZXMuZGVjb2RlKClgYCBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZVxuICAgICAgICAgb3Bwb3NpdGUuXG5cbiAgICAgIFR1cGxlc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzIG9mXG4gICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhIFwnc2luZ2xldG9uXCcpIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiBieVxuICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4gICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG5cbiAgICAgIEJ5dGVzXG4gICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlIDgtYml0XG4gICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbiAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlIGBgYlwnYWJjXCdgYCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICBgYGJ5dGVzKClgYCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4gICAgICAgICBieXRlcyBvYmplY3RzIGNhbiBiZSBkZWNvZGVkIHRvIHN0cmluZ3MgdmlhIHRoZSBgYGRlY29kZSgpYGBcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgYGBkZWxgYCAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuXG4gICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcblxuICAgICAgTGlzdHNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzIGFyZVxuICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpblxuICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzIG5lZWRlZFxuICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcblxuICAgICAgQnl0ZSBBcnJheXNcbiAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgYnlcbiAgICAgICAgIHRoZSBidWlsdC1pbiBgYGJ5dGVhcnJheSgpYGAgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4gICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSBwcm92aWRlXG4gICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4gICAgICAgICBvYmplY3RzLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSBgYGFycmF5YGAgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mXG4gICAgICBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZS5cblxuU2V0IHR5cGVzXG4gICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiBIb3dldmVyLFxuICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGBcbiAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlIGZhc3RcbiAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbiAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cblxuICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yXG4gICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgYGAxLjBgYCksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cblxuICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcblxuICAgU2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHNldCgpYGAgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5IHNldmVyYWxcbiAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgYGBhZGQoKWBgLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gYGBmcm96ZW5zZXQoKWBgIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXNcbiAgICAgIGltbXV0YWJsZSBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZlxuICAgICAgYW5vdGhlciBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG5cbk1hcHBpbmdzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSBpbmRleFxuICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiBgYGFba11gYCBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnlcbiAgIGBga2BgIGZyb20gdGhlIG1hcHBpbmcgYGBhYGA7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kXG4gICBhcyB0aGUgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yIGBgZGVsYGAgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluXG4gICBmdW5jdGlvbiBgYGxlbigpYGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgYGAxYGAgYW5kXG4gICAgICBgYDEuMGBgKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4gICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuXG4gICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlIGBgey4uLn1gYFxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyBgYGRibS5uZGJtYGAgYW5kIGBgZGJtLmdudWBgIHByb3ZpZGVcbiAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGVcbiAgICAgIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8IGBgX19kb2NfX2BgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgYGBOb25lYGAgaWYgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX25hbWVfX2BgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBuYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX3F1YWxuYW1lX19gYCAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkIG5hbWUqIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19tb2R1bGVfX2BgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGVmYXVsdHNfX2BgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgbm8gYXJndW1lbnRzICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhhdmUgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY29kZV9fYGAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZ2xvYmFsc19fYGAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RpY3RfX2BgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Nsb3N1cmVfX2BgICAgICAgICAgICB8IGBgTm9uZWBgIG9yIGEgdHVwbGUgb2YgY2VsbHMgICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fYW5ub3RhdGlvbnNfX2BgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBcJ3JldHVyblwnYGAgZm9yIHRoZSByZXR1cm4gIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19rd2RlZmF1bHRzX19gYCAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYF9fc2VsZl9fYGAgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsIGBgX19mdW5jX19gYCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyBgYF9fZG9jX19gYCBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzIGBgX19mdW5jX18uX19kb2NfX2BgKTtcbiAgICAgIGBgX19uYW1lX19gYCBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX25hbWVfX2BgKTtcbiAgICAgIGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZFxuICAgICAgaW4sIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kXG4gICAgICBvYmplY3QgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyBgYF9fc2VsZl9fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKGBgX19mdW5jX19gYCkgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoYGBfX3NlbGZfX2BgKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSxcbiAgICAgIHdoZW4gYGBDYGAgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb25cbiAgICAgIGBgZigpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYENgYCwgY2FsbGluZyBgYHguZigxKWBgXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBDLmYoeCwgMSlgYC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gYGBfX3NlbGZfX2BgIHdpbGxcbiAgICAgIGFjdHVhbGx5IGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgYGB4LmYoMSlgYFxuICAgICAgb3IgYGBDLmYoMSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBmKEMsMSlgYCB3aGVyZSBgYGZgYCBpc1xuICAgICAgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzIGBgX19uZXh0X18oKWBgIG1ldGhvZCB3aWxsIGNhdXNlIHRoZSBmdW5jdGlvbiB0b1xuICAgICAgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50LlxuICAgICAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSBgYHJldHVybmBgIHN0YXRlbWVudCBvciBmYWxscyBvZmZcbiAgICAgIHRoZSBlbmQsIGEgYGBTdG9wSXRlcmF0aW9uYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgYGBsZW4oKWBgIGFuZCBgYG1hdGguc2luKClgYFxuICAgICAgKGBgbWF0aGBgIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiBgYF9fZG9jX19gYCBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZTsgYGBfX25hbWVfX2BgIGlzIHRoZVxuICAgICAgZnVuY3Rpb25cJ3MgbmFtZTsgYGBfX3NlbGZfX2BgIGlzIHNldCB0byBgYE5vbmVgYCAoYnV0IHNlZSB0aGVcbiAgICAgIG5leHQgaXRlbSk7IGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlXG4gICAgICBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgYGBhbGlzdC5hcHBlbmQoKWBgLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgYGBfX3NlbGZfX2BgIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlIGBgX19uZXdfXygpYGAuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgYGBfX2luaXRfXygpYGAgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSBgYF9fY2FsbF9fKClgYCBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSBgYGltcG9ydGBgXG4gICBzdGF0ZW1lbnQgKHNlZSBgYGltcG9ydGBgKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuICAgYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgYW5kIGJ1aWx0LWluIGBgX19pbXBvcnRfXygpYGAuICBBXG4gICBtb2R1bGUgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0XG4gICAodGhpcyBpcyB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZ2xvYmFsc19fYGAgYXR0cmlidXRlXG4gICBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnhgYCBpc1xuICAgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpblxuICAgdGhlIGNvZGUgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc25cJ3RcbiAgIG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiBgYF9fZGljdF9fYGAgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBtb2R1bGVcJ3NcbiAgIG5hbWU7IGBgX19kb2NfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgXG4gICBpZiB1bmF2YWlsYWJsZTsgYGBfX2ZpbGVfX2BgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoXG4gICB0aGUgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZVxuICAgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLFxuICAgc3VjaCBhcyBDIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7XG4gICBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXRcbiAgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgQy54YGAgaXMgdHJhbnNsYXRlZCB0b1xuICAgYGBDLl9fZGljdF9fWyJ4Il1gYCAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoXG4gICBhbGxvdyBmb3Igb3RoZXIgbWVhbnMgb2YgbG9jYXRpbmcgYXR0cmlidXRlcykuIFdoZW4gdGhlIGF0dHJpYnV0ZVxuICAgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuICAgY2xhc3Nlcy4gVGhpcyBzZWFyY2ggb2YgdGhlIGJhc2UgY2xhc3NlcyB1c2VzIHRoZSBDMyBtZXRob2RcbiAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2ZcbiAgIFwnZGlhbW9uZFwnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4gICBpbmhlcml0YW5jZSBwYXRocyBsZWFkaW5nIGJhY2sgdG8gYSBjb21tb24gYW5jZXN0b3IuIEFkZGl0aW9uYWxcbiAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4gICBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbiAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyBgYENgYCwgc2F5KSB3b3VsZCB5aWVsZFxuICAgYSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuICAgb2JqZWN0IHdob3NlIGBgX19zZWxmX19gYCBhdHRyaWJ1dGVzIGlzIGBgQ2BgLiAgV2hlbiBpdCB3b3VsZCB5aWVsZFxuICAgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWRcbiAgIGJ5IHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzIGBgX19kaWN0X19gYC5cblxuICAgQ2xhc3MgYXR0cmlidXRlIGFzc2lnbm1lbnRzIHVwZGF0ZSB0aGUgY2xhc3NcJ3MgZGljdGlvbmFyeSwgbmV2ZXJcbiAgIHRoZSBkaWN0aW9uYXJ5IG9mIGEgYmFzZSBjbGFzcy5cblxuICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzIGluc3RhbmNlXG4gICAoc2VlIGJlbG93KS5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiBgYF9fbmFtZV9fYGAgaXMgdGhlIGNsYXNzIG5hbWU7IGBgX19tb2R1bGVfX2BgXG4gICBpcyB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyBgYF9fZGljdF9fYGAgaXNcbiAgIHRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgYGBfX2Jhc2VzX19gYCBpcyBhXG4gICB0dXBsZSAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcyxcbiAgIGluIHRoZSBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7XG4gICBgYF9fZG9jX19gYCBpcyB0aGUgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWZcbiAgIHVuZGVmaW5lZC5cblxuQ2xhc3MgaW5zdGFuY2VzXG4gICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlIGFib3ZlKS5cbiAgIEEgY2xhc3MgaW5zdGFuY2UgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGFzIGEgZGljdGlvbmFyeSB3aGljaFxuICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbiAgIFdoZW4gYW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZCB0aGVyZSwgYW5kIHRoZSBpbnN0YW5jZVwncyBjbGFzcyBoYXNcbiAgIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUsIHRoZSBzZWFyY2ggY29udGludWVzIHdpdGggdGhlIGNsYXNzXG4gICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhIHVzZXItZGVmaW5lZFxuICAgZnVuY3Rpb24gb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3RcbiAgIHdob3NlIGBgX19zZWxmX19gYCBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3NcbiAgIGBgX19kaWN0X19gYC4gIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3NcbiAgIGNsYXNzIGhhcyBhIGBgX19nZXRhdHRyX18oKWBgIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGVcbiAgIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICBgYF9fc2V0YXR0cl9fKClgYCBvciBgYF9fZGVsYXR0cl9fKClgYCBtZXRob2QsIHRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHVwZGF0aW5nIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciBtYXBwaW5nc1xuICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuICAgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKi5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiBgYF9fZGljdF9fYGAgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgYGBfX2NsYXNzX19gYCBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG5cbkkvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbiAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSBgYG9wZW4oKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLFxuICAgYW5kIGFsc28gYGBvcy5wb3BlbigpYGAsIGBgb3MuZmRvcGVuKClgYCwgYW5kIHRoZSBgYG1ha2VmaWxlKClgYFxuICAgbWV0aG9kIG9mIHNvY2tldCBvYmplY3RzIChhbmQgcGVyaGFwcyBieSBvdGhlciBmdW5jdGlvbnMgb3IgbWV0aG9kc1xuICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuXG4gICBUaGUgb2JqZWN0cyBgYHN5cy5zdGRpbmBgLCBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAgYXJlXG4gICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXJcJ3NcbiAgIHN0YW5kYXJkIGlucHV0LCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXM7IHRoZXkgYXJlIGFsbCBvcGVuIGluIHRleHRcbiAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuICAgYGBpby5UZXh0SU9CYXNlYGAgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYGNvX25hbWVgYCBnaXZlcyB0aGUgZnVuY3Rpb25cbiAgICAgIG5hbWU7IGBgY29fYXJnY291bnRgYCBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzXG4gICAgICAoaW5jbHVkaW5nIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgYGBjb19ubG9jYWxzYGAgaXMgdGhlXG4gICAgICBudW1iZXIgb2YgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmdcbiAgICAgIGFyZ3VtZW50cyk7IGBgY29fdmFybmFtZXNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mXG4gICAgICB0aGUgbG9jYWwgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7XG4gICAgICBgYGNvX2NlbGx2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbFxuICAgICAgdmFyaWFibGVzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgbmVzdGVkIGZ1bmN0aW9ucztcbiAgICAgIGBgY29fZnJlZXZhcnNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWVcbiAgICAgIHZhcmlhYmxlczsgYGBjb19jb2RlYGAgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZlxuICAgICAgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyBgYGNvX2NvbnN0c2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGVcbiAgICAgIGxpdGVyYWxzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX25hbWVzYGAgaXMgYSB0dXBsZVxuICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7IGBgY29fZmlsZW5hbWVgYCBpc1xuICAgICAgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgYGBjb19maXJzdGxpbmVub2BgIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4gICAgICBgYGNvX2xub3RhYmBgIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbiAgICAgIG9mZnNldHMgdG8gbGluZSBudW1iZXJzIChmb3IgZGV0YWlscyBzZWUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZVxuICAgICAgaW50ZXJwcmV0ZXIpOyBgYGNvX3N0YWNrc2l6ZWBgIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7IGBgY29fZmxhZ3NgYCBpcyBhbiBpbnRlZ2VyIGVuY29kaW5nXG4gICAgICBhIG51bWJlciBvZiBmbGFncyBmb3IgdGhlIGludGVycHJldGVyLlxuXG4gICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgYGBjb19mbGFnc2BgOiBiaXRcbiAgICAgIGBgMHgwNGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYGAqYXJndW1lbnRzYGAgc3ludGF4XG4gICAgICB0byBhY2NlcHQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50czsgYml0XG4gICAgICBgYDB4MDhgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKiprZXl3b3Jkc2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50czsgYml0IGBgMHgyMGBgIGlzIHNldCBpZlxuICAgICAgdGhlIGZ1bmN0aW9uIGlzIGEgZ2VuZXJhdG9yLlxuXG4gICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKGBgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydFxuICAgICAgZGl2aXNpb25gYCkgYWxzbyB1c2UgYml0cyBpbiBgYGNvX2ZsYWdzYGAgdG8gaW5kaWNhdGUgd2hldGhlciBhXG4gICAgICBjb2RlIG9iamVjdCB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXRcbiAgICAgIGBgMHgyMDAwYGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmVcbiAgICAgIGRpdmlzaW9uIGVuYWJsZWQ7IGJpdHMgYGAweDEwYGAgYW5kIGBgMHgxMDAwYGAgd2VyZSB1c2VkIGluXG4gICAgICBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiBgYGNvX2ZsYWdzYGAgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuXG5cbiAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuICAgICAgYGBjb19jb25zdHNgYCBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuICAgICAgYGBOb25lYGAgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYGZfYmFja2BgIGlzIHRvIHRoZSBwcmV2aW91c1xuICAgICAgc3RhY2sgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yIGBgTm9uZWBgIGlmIHRoaXMgaXMgdGhlXG4gICAgICBib3R0b20gc3RhY2sgZnJhbWU7IGBgZl9jb2RlYGAgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkXG4gICAgICBpbiB0aGlzIGZyYW1lOyBgYGZfbG9jYWxzYGAgaXMgdGhlIGRpY3Rpb25hcnkgdXNlZCB0byBsb29rIHVwXG4gICAgICBsb2NhbCB2YXJpYWJsZXM7IGBgZl9nbG9iYWxzYGAgaXMgdXNlZCBmb3IgZ2xvYmFsIHZhcmlhYmxlcztcbiAgICAgIGBgZl9idWlsdGluc2BgIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzO1xuICAgICAgYGBmX2xhc3RpYGAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50b1xuICAgICAgdGhlIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuXG4gICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6IGBgZl90cmFjZWBgLCBpZiBub3QgYGBOb25lYGAsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7IGBgZl9saW5lbm9gYCBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlclxuICAgICAgb2YgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvblxuICAgICAganVtcHMgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBXG4gICAgICBkZWJ1Z2dlciBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KVxuICAgICAgYnkgd3JpdGluZyB0byBmX2xpbmVuby5cblxuICAgVHJhY2ViYWNrIG9iamVjdHNcbiAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gIEFcbiAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuIHRoZVxuICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssIGF0XG4gICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250IG9mXG4gICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIGVudGVyZWQsXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgc2VjdGlvblxuICAgICAgKlRoZSB0cnkgc3RhdGVtZW50Ki4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgdGhlXG4gICAgICB0dXBsZSByZXR1cm5lZCBieSBgYHN5cy5leGNfaW5mbygpYGAuIFdoZW4gdGhlIHByb2dyYW0gY29udGFpbnNcbiAgICAgIG5vIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHlcbiAgICAgIGZvcm1hdHRlZCkgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzXG4gICAgICBpbnRlcmFjdGl2ZSwgaXQgaXMgYWxzbyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgdXNlciBhc1xuICAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGB0Yl9uZXh0YGAgaXMgdGhlIG5leHQgbGV2ZWwgaW5cbiAgICAgIHRoZSBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQpLCBvciBgYE5vbmVgYCBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyBgYHRiX2ZyYW1lYGBcbiAgICAgIHBvaW50cyB0byB0aGUgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsO1xuICAgICAgYGB0Yl9saW5lbm9gYCBnaXZlcyB0aGUgbGluZSBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQ7IGBgdGJfbGFzdGlgYCBpbmRpY2F0ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGVcbiAgICAgIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlclxuICAgICAgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZCBpbiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggbm8gbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZVxuICAgICAgb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuXG4gICBTbGljZSBvYmplY3RzXG4gICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yIGBgX19nZXRpdGVtX18oKWBgXG4gICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiBgYHNsaWNlKClgYFxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgc3RhcnRgYCBpcyB0aGUgbG93ZXIgYm91bmQ7XG4gICAgICBgYHN0b3BgYCBpcyB0aGUgdXBwZXIgYm91bmQ7IGBgc3RlcGBgIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzXG4gICAgICBgYE5vbmVgYCBpZiBvbWl0dGVkLiBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuXG4gICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcblxuICAgICAgc2xpY2UuaW5kaWNlcyhzZWxmLCBsZW5ndGgpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4gICAgICAgICBjb21wdXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2xpY2UgdGhhdCB0aGUgc2xpY2Ugb2JqZWN0XG4gICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogaXRlbXMuXG4gICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSBhcmVcbiAgICAgICAgIHRoZSAqc3RhcnQqIGFuZCAqc3RvcCogaW5kaWNlcyBhbmQgdGhlICpzdGVwKiBvciBzdHJpZGVcbiAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuICAgICAgICAgaGFuZGxlZCBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMuXG5cbiAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyBkZXNjcmliZWRcbiAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4gICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhIHN0YXRpY1xuICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsIHRoZVxuICAgICAgb2JqZWN0IGFjdHVhbGx5IHJldHVybmVkIGlzIHRoZSB3cmFwcGVkIG9iamVjdCwgd2hpY2ggaXMgbm90XG4gICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlXG4gICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwIHVzdWFsbHlcbiAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzdGF0aWNtZXRob2QoKWBgIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluIGBgY2xhc3NtZXRob2QoKWBgIGNvbnN0cnVjdG9yLlxuJywKICAndHlwZXNmdW5jdGlvbnMnOiAnXG5GdW5jdGlvbnNcbioqKioqKioqKlxuXG5GdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlIG9ubHlcbm9wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiBgYGZ1bmMoYXJndW1lbnQtbGlzdClgYC5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21hcHBpbmcnOiAnXG5NYXBwaW5nIFR5cGVzIC0tLSBgYGRpY3RgYFxuKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdFxuaW4gYGBsaXN0YGAsIGBgc2V0YGAsIGFuZCBgYHR1cGxlYGAgY2xhc3NlcywgYW5kIHRoZSBgYGNvbGxlY3Rpb25zYGBcbm1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyBgYDFgYCBhbmQgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0b1xuaW5kZXggdGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzXG5zdG9yZSBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvXG51c2UgdGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mXG5gYGtleTogdmFsdWVgYCBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogYGB7XCdqYWNrXCc6IDQwOTgsXG5cJ3Nqb2VyZFwnOiA0MTI3fWBgIG9yIGBgezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfWBgLCBvciBieSB0aGVcbmBgZGljdGBgIGNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KFthcmddKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IG9yIGZyb20gYSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuICBJZiBubyBhcmd1bWVudHMgYXJlXG4gICBnaXZlbiwgcmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuICBJZiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgKmFyZyogaXMgYSBtYXBwaW5nIG9iamVjdCwgcmV0dXJuIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSBzYW1lXG4gICBrZXlzIHRvIHRoZSBzYW1lIHZhbHVlcyBhcyBkb2VzIHRoZSBtYXBwaW5nIG9iamVjdC4gIE90aGVyd2lzZSB0aGVcbiAgIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzXG4gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIFRoZSBlbGVtZW50cyBvZiB0aGUgYXJndW1lbnRcbiAgIG11c3QgZWFjaCBhbHNvIGJlIG9mIG9uZSBvZiB0aG9zZSBraW5kcywgYW5kIGVhY2ggbXVzdCBpbiB0dXJuXG4gICBjb250YWluIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3QgaXMgdXNlZCBhcyBhIGtleSBpbiB0aGUgbmV3XG4gICBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBhcyB0aGUga2V5XCdzIHZhbHVlLiAgSWYgYSBnaXZlbiBrZXkgaXNcbiAgIHNlZW4gbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyByZXRhaW5lZFxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHdpdGggdGhlaXJcbiAgIGFzc29jaWF0ZWQgdmFsdWVzIGFyZSBhZGRlZCBhcyBpdGVtcyB0byB0aGUgZGljdGlvbmFyeS4gIElmIGEga2V5XG4gICBpcyBzcGVjaWZpZWQgYm90aCBpbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgYXMgYSBrZXl3b3JkXG4gICBhcmd1bWVudCwgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5d29yZCBpcyByZXRhaW5lZCBpbiB0aGVcbiAgIGRpY3Rpb25hcnkuICBGb3IgZXhhbXBsZSwgdGhlc2UgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWwgdG9cbiAgIGBgeyJvbmUiOiAxLCAidHdvIjogMn1gYDpcblxuICAgKiBgYGRpY3Qob25lPTEsIHR3bz0yKWBgXG5cbiAgICogYGBkaWN0KHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlgYFxuXG4gICAqIGBgZGljdCh6aXAoKFwnb25lXCcsIFwndHdvXCcpLCAoMSwgMikpKWBgXG5cbiAgICogYGBkaWN0KFtbXCd0d29cJywgMl0sIFtcJ29uZVwnLCAxXV0pYGBcblxuICAgVGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3Iga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob25cbiAgIGlkZW50aWZpZXJzOyB0aGUgb3RoZXJzIHdvcmsgd2l0aCBhbnkgdmFsaWQga2V5cy5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kIGBgX19taXNzaW5nX18oKWBgLCBpZiB0aGVcbiAgICAgIGtleSAqa2V5KiBpcyBub3QgcHJlc2VudCwgdGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uIGNhbGxzIHRoYXRcbiAgICAgIG1ldGhvZCB3aXRoIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgYGBkW2tleV1gYCBvcGVyYXRpb25cbiAgICAgIHRoZW4gcmV0dXJucyBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgYGBfX21pc3NpbmdfXyhrZXkpYGAgY2FsbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LiBObyBvdGhlclxuICAgICAgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZSBgYF9fbWlzc2luZ19fKClgYC4gSWZcbiAgICAgIGBgX19taXNzaW5nX18oKWBgIGlzIG5vdCBkZWZpbmVkLCBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuIGluc3RhbmNlXG4gICAgICB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgU2VlIGBgY29sbGVjdGlvbnMuQ291bnRlcmBgIGZvciBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uXG4gICAgICBpbmNsdWRpbmcgb3RoZXIgbWV0aG9kcyBoZWxwZnVsIGZvciBhY2N1bXVsYXRpbmcgYW5kIG1hbmFnaW5nXG4gICAgICB0YWxsaWVzLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgYGBkW2tleV1gYCB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSBgYGRba2V5XWBgIGZyb20gKmQqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgYGBGYWxzZWBgLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byBgYG5vdCBrZXkgaW4gZGBgLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKGQua2V5cygpKWBgLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgYGBmcm9ta2V5cygpYGAgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLFxuICAgICAgc28gdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGBcbiAgICAgIHBhaXJzKS4gIFNlZSBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG5cbiAgIGtleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIGJlbG93IGZvclxuICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSBgYChrZXksIHZhbHVlKWBgIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgIGBgcG9waXRlbSgpYGAgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgYGBwb3BpdGVtKClgYCByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuIGBgTm9uZWBgLlxuXG4gICAgICBgYHVwZGF0ZSgpYGAgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6IGBgZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpYGAuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSBiZWxvdyBmb3JcbiAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG5cbkRpY3Rpb25hcnkgdmlldyBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb2JqZWN0cyByZXR1cm5lZCBieSBgYGRpY3Qua2V5cygpYGAsIGBgZGljdC52YWx1ZXMoKWBgIGFuZFxuYGBkaWN0Lml0ZW1zKClgYCBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljIHZpZXcgb25cbnRoZSBkaWN0aW9uYXJ5XCdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeVxuY2hhbmdlcywgdGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cblxuRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciByZXNwZWN0aXZlIGRhdGEsXG5hbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuXG5sZW4oZGljdHZpZXcpXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbml0ZXIoZGljdHZpZXcpXG5cbiAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgKHJlcHJlc2VudGVkIGFzXG4gICB0dXBsZXMgb2YgYGAoa2V5LCB2YWx1ZSlgYCkgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBgYCh2YWx1ZSwga2V5KWBgIHBhaXJzXG4gICB1c2luZyBgYHppcCgpYGA6IGBgcGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpYGAuICBBbm90aGVyXG4gICB3YXkgdG8gY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgYGBwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpblxuICAgZC5pdGVtcygpXWBgLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhIGBgUnVudGltZUVycm9yYGAgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMuXG5cbnggaW4gZGljdHZpZXdcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzIGtleXMsXG4gICB2YWx1ZXMgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhIGBgKGtleSxcbiAgIHZhbHVlKWBgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0IGBgKGtleSwgdmFsdWUpYGAgcGFpcnMgYXJlIHVuaXF1ZVxuYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZVxubm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLilcbkZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdFxuYmFzZSBjbGFzcyBgYGNvbGxlY3Rpb25zLlNldGBgIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCBgYD09YGAsXG5gYDxgYCwgb3IgYGBeYGApLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKKyAndHlwZXNtYXBwaW5nJzogJ1xuTWFwcGluZyBUeXBlcyAtLS0gYGBkaWN0YGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQtXG5pbiBgYGxpc3RgYCwgYGBzZXRgYCwgYW5kIGBgdHVwbGVgYCBjbGFzc2VzLCBhbmQgdGhlIGBgY29sbGVjdGlvbnNgYFxubW9kdWxlLilcblxuQSBkaWN0aW9uYXJ5XCdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgdGhhdCBhcmVcbm5vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgZGljdGlvbmFyaWVzIG9yXG5vdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbmlkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5XG50aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWxcbihzdWNoIGFzIGBgMWBgIGFuZCBgYDEuMGBgKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvXG5pbmRleCB0aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSBjb21wdXRlcnNcbnN0b3JlIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSB1bndpc2UgdG9cbnVzZSB0aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG5cbkRpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2ZcbmBga2V5OiB2YWx1ZWBgIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiBgYHtcJ2phY2tcJzogNDA5OCxcblwnc2pvZXJkXCc6IDQxMjd9YGAgb3IgYGB7NDA5ODogXCdqYWNrXCcsIDQxMjc6IFwnc2pvZXJkXCd9YGAsIG9yIGJ5IHRoZVxuYGBkaWN0YGAgY29uc3RydWN0b3IuXG5cbmNsYXNzIGNsYXNzIGRpY3QoW2FyZ10pXG5cbiAgIFJldHVybiBhIG5ldyBkaWN0aW9uYXJ5IGluaXRpYWxpemVkIGZyb20gYW4gb3B0aW9uYWwgcG9zaXRpb25hbFxuICAgYXJndW1lbnQgb3IgZnJvbSBhIHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIG5vIGFyZ3VtZW50cyBhcmVcbiAgIGdpdmVuLCByZXR1cm4gYSBuZXcgZW1wdHkgZGljdGlvbmFyeS4gIElmIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAqYXJnKiBpcyBhIG1hcHBpbmcgb2JqZWN0LCByZXR1cm4gYSBkaWN0aW9uYXJ5IG1hcHBpbmcgdGhlIHNhbWVcbiAgIGtleXMgdG8gdGhlIHNhbWUgdmFsdWVzIGFzIGRvZXMgdGhlIG1hcHBpbmcgb2JqZWN0LiAgT3RoZXJ3aXNlIHRoZVxuICAgcG9zaXRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGEgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHNcbiAgIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3Igb2JqZWN0LiAgVGhlIGVsZW1lbnRzIG9mIHRoZSBhcmd1bWVudFxuICAgbXVzdCBlYWNoIGFsc28gYmUgb2Ygb25lIG9mIHRob3NlIGtpbmRzLCBhbmQgZWFjaCBtdXN0IGluIHR1cm5cbiAgIGNvbnRhaW4gZXhhY3RseSB0d28gb2JqZWN0cy4gIFRoZSBmaXJzdCBpcyB1c2VkIGFzIGEga2V5IGluIHRoZSBuZXdcbiAgIGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIGFzIHRoZSBrZXlcJ3MgdmFsdWUuICBJZiBhIGdpdmVuIGtleSBpc1xuICAgc2VlbiBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3QgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0IGlzIHJldGFpbmVkXG4gICBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG5cbiAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmRzIHRoZW1zZWx2ZXMgd2l0aCB0aGVpclxuICAgYXNzb2NpYXRlZCB2YWx1ZXMgYXJlIGFkZGVkIGFzIGl0ZW1zIHRvIHRoZSBkaWN0aW9uYXJ5LiAgSWYgYSBrZXlcbiAgIGlzIHNwZWNpZmllZCBib3RoIGluIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IGFuZCBhcyBhIGtleXdvcmRcbiAgIGFyZ3VtZW50LCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXl3b3JkIGlzIHJldGFpbmVkIGluIHRoZVxuICAgZGljdGlvbmFyeS4gIEZvciBleGFtcGxlLCB0aGVzZSBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbCB0b1xuICAgYGB7Im9uZSI6IDEsICJ0d28iOiAyfWBgOlxuXG4gICAqIGBgZGljdChvbmU9MSwgdHdvPTIpYGBcblxuICAgKiBgYGRpY3Qoe1wnb25lXCc6IDEsIFwndHdvXCc6IDJ9KWBgXG5cbiAgICogYGBkaWN0KHppcCgoXCdvbmVcJywgXCd0d29cJyksICgxLCAyKSkpYGBcblxuICAgKiBgYGRpY3QoW1tcJ3R3b1wnLCAyXSwgW1wnb25lXCcsIDFdXSlgYFxuXG4gICBUaGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvciBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvblxuICAgaWRlbnRpZmllcnM7IHRoZSBvdGhlcnMgd29yayB3aXRoIGFueSB2YWxpZCBrZXlzLlxuXG4gICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kIHRoZXJlZm9yZSxcbiAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG5cbiAgIGxlbihkKVxuXG4gICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG5cbiAgIGRba2V5XVxuXG4gICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmXG4gICAgICAqa2V5KiBpcyBub3QgaW4gdGhlIG1hcC5cblxuICAgICAgSWYgYSBzdWJjbGFzcyBvZiBkaWN0IGRlZmluZXMgYSBtZXRob2QgYGBfX21pc3NpbmdfXygpYGAsIGlmIHRoZVxuICAgICAga2V5ICprZXkqIGlzIG5vdCBwcmVzZW50LCB0aGUgYGBkW2tleV1gYCBvcGVyYXRpb24gY2FsbHMgdGhhdFxuICAgICAgbWV0aG9kIHdpdGggdGhlIGtleSAqa2V5KiBhcyBhcmd1bWVudC4gIFRoZSBgYGRba2V5XWBgIG9wZXJhdGlvblxuICAgICAgdGhlbiByZXR1cm5zIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICBgYF9fbWlzc2luZ19fKGtleSlgYCBjYWxsIGlmIHRoZSBrZXkgaXMgbm90IHByZXNlbnQuIE5vIG90aGVyXG4gICAgICBvcGVyYXRpb25zIG9yIG1ldGhvZHMgaW52b2tlIGBgX19taXNzaW5nX18oKWBgLiBJZlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgaXMgbm90IGRlZmluZWQsIGBgS2V5RXJyb3JgYCBpcyByYWlzZWQuXG4gICAgICBgYF9fbWlzc2luZ19fKClgYCBtdXN0IGJlIGEgbWV0aG9kOyBpdCBjYW5ub3QgYmUgYW4gaW5zdGFuY2VcbiAgICAgIHZhcmlhYmxlOlxuXG4gICAgICAgICA+Pj4gY2xhc3MgQ291bnRlcihkaWN0KTpcbiAgICAgICAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAgICAgICAuLi4gICAgICAgICByZXR1cm4gMFxuICAgICAgICAgPj4+IGMgPSBDb3VudGVyKClcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAwXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXSArPSAxXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMVxuXG4gICAgICBTZWUgYGBjb2xsZWN0aW9ucy5Db3VudGVyYGAgZm9yIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb25cbiAgICAgIGluY2x1ZGluZyBvdGhlciBtZXRob2RzIGhlbHBmdWwgZm9yIGFjY3VtdWxhdGluZyBhbmQgbWFuYWdpbmdcbiAgICAgIHRhbGxpZXMuXG5cbiAgIGRba2V5XSA9IHZhbHVlXG5cbiAgICAgIFNldCBgYGRba2V5XWBgIHRvICp2YWx1ZSouXG5cbiAgIGRlbCBkW2tleV1cblxuICAgICAgUmVtb3ZlIGBgZFtrZXldYGAgZnJvbSAqZCouICBSYWlzZXMgYSBgYEtleUVycm9yYGAgaWYgKmtleSogaXNcbiAgICAgIG5vdCBpbiB0aGUgbWFwLlxuXG4gICBrZXkgaW4gZFxuXG4gICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKmQqIGhhcyBhIGtleSAqa2V5KiwgZWxzZSBgYEZhbHNlYGAuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvIGBgbm90IGtleSBpbiBkYGAuXG5cbiAgIGl0ZXIoZClcblxuICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICBUaGlzIGlzIGFcbiAgICAgIHNob3J0Y3V0IGZvciBgYGl0ZXIoZC5rZXlzKCkpYGAuXG5cbiAgIGNsZWFyKClcblxuICAgICAgUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjb3B5KClcblxuICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjbGFzc21ldGhvZCBmcm9ta2V5cyhzZXFbLCB2YWx1ZV0pXG5cbiAgICAgIENyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHdpdGgga2V5cyBmcm9tICpzZXEqIGFuZCB2YWx1ZXMgc2V0IHRvXG4gICAgICAqdmFsdWUqLlxuXG4gICAgICBgYGZyb21rZXlzKClgYCBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gYGBOb25lYGAuXG5cbiAgIGdldChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIGVsc2VcbiAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsXG4gICAgICBzbyB0aGF0IHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhIGBgS2V5RXJyb3JgYC5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYFxuICAgICAgcGFpcnMpLiBTZWUgdGhlICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIGtleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAgcG9wKGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlLFxuICAgICAgZWxzZSByZXR1cm4gKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiBhbmQgKmtleSogaXNcbiAgICAgIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYSBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICBwb3BpdGVtKClcblxuICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5IGBgKGtleSwgdmFsdWUpYGAgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgYGBwb3BpdGVtKClgYCBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgYVxuICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyBlbXB0eSwgY2FsbGluZyBgYHBvcGl0ZW0oKWBgIHJhaXNlcyBhIGBgS2V5RXJyb3JgYC5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gYGBOb25lYGAuXG5cbiAgIHVwZGF0ZShbb3RoZXJdKVxuXG4gICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gKm90aGVyKixcbiAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gYGBOb25lYGAuXG5cbiAgICAgIGBgdXBkYXRlKClgYCBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogYGBkLnVwZGF0ZShyZWQ9MSxcbiAgICAgIGJsdWU9MilgYC5cblxuICAgdmFsdWVzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgdmFsdWVzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuU2VlIGFsc286XG5cbiAgIGBgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZWBgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlYWQtb25seSB2aWV3XG4gICBvZiBhIGBgZGljdGBgLlxuXG5cbkRpY3Rpb25hcnkgdmlldyBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb2JqZWN0cyByZXR1cm5lZCBieSBgYGRpY3Qua2V5cygpYGAsIGBgZGljdC52YWx1ZXMoKWBgIGFuZFxuYGBkaWN0Lml0ZW1zKClgYCBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljIHZpZXcgb25cbnRoZSBkaWN0aW9uYXJ5XCdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeVxuY2hhbmdlcywgdGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cblxuRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciByZXNwZWN0aXZlIGRhdGEsXG5hbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuXG5sZW4oZGljdHZpZXcpXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbml0ZXIoZGljdHZpZXcpXG5cbiAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgKHJlcHJlc2VudGVkIGFzXG4gICB0dXBsZXMgb2YgYGAoa2V5LCB2YWx1ZSlgYCkgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBgYCh2YWx1ZSwga2V5KWBgIHBhaXJzXG4gICB1c2luZyBgYHppcCgpYGA6IGBgcGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpYGAuICBBbm90aGVyXG4gICB3YXkgdG8gY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgYGBwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpblxuICAgZC5pdGVtcygpXWBgLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhIGBgUnVudGltZUVycm9yYGAgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMuXG5cbnggaW4gZGljdHZpZXdcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzIGtleXMsXG4gICB2YWx1ZXMgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhIGBgKGtleSxcbiAgIHZhbHVlKWBgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0IGBgKGtleSwgdmFsdWUpYGAgcGFpcnMgYXJlIHVuaXF1ZVxuYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZVxubm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLilcbkZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdFxuYmFzZSBjbGFzcyBgYGNvbGxlY3Rpb25zLmFiYy5TZXRgYCBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLFxuYGA8YGAsIG9yIGBgXmBgKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCiAgJ3R5cGVzbWV0aG9kcyc6ICJcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzIGBgYXBwZW5kKClgYCBvblxubGlzdHMpIGFuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkXG53aXRoIHRoZSB0eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cblxuSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgbmFtZXNwYWNlKVxudGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCBtZXRob2QqIChhbHNvXG5jYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkIHRoZVxuYGBzZWxmYGAgYXJndW1lbnQgdG8gdGhlIGFyZ3VtZW50IGxpc3QuICBCb3VuZCBtZXRob2RzIGhhdmUgdHdvXG5zcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYG0uX19zZWxmX19gYCBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoXG50aGUgbWV0aG9kIG9wZXJhdGVzLCBhbmQgYGBtLl9fZnVuY19fYGAgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZ1xudGhlIG1ldGhvZC4gIENhbGxpbmcgYGBtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbilgYCBpcyBjb21wbGV0ZWx5XG5lcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLFxuYXJnLW4pYGAuXG5cbkxpa2UgZnVuY3Rpb24gb2JqZWN0cywgYm91bmQgbWV0aG9kIG9iamVjdHMgc3VwcG9ydCBnZXR0aW5nIGFyYml0cmFyeVxuYXR0cmlidXRlcy4gIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSBzdG9yZWQgb25cbnRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoYGBtZXRoLl9fZnVuY19fYGApLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhIG1ldGhvZFxuYXR0cmlidXRlIHJlc3VsdHMgaW4gYSBgYFR5cGVFcnJvcmBgIGJlaW5nIHJhaXNlZC4gIEluIG9yZGVyIHRvIHNldCBhXG5tZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCBpdCBvbiB0aGUgdW5kZXJseWluZ1xuZnVuY3Rpb24gb2JqZWN0OlxuXG4gICBjbGFzcyBDOlxuICAgICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAgICAgICAgIHBhc3NcblxuICAgYyA9IEMoKVxuICAgYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gJ215IG5hbWUgaXMgYydcblxuU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKICAndHlwZXNtb2R1bGVzJzogIlxuTW9kdWxlc1xuKioqKioqKlxuXG5UaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOlxuYGBtLm5hbWVgYCwgd2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWRcbmluICptKidzIHN5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGVcbnRoYXQgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50IGlzIG5vdCwgc3RyaWN0bHkgc3BlYWtpbmcsIGFuIG9wZXJhdGlvblxub24gYSBtb2R1bGUgb2JqZWN0OyBgYGltcG9ydCBmb29gYCBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdFxubmFtZWQgKmZvbyogdG8gZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKlxuZm9yIGEgbW9kdWxlIG5hbWVkICpmb28qIHNvbWV3aGVyZS4pXG5cbkEgc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzIGBgX19kaWN0X19gYC4gVGhpcyBpcyB0aGVcbmRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgdGhpc1xuZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLCBidXQgZGlyZWN0XG5hc3NpZ25tZW50IHRvIHRoZSBgYF9fZGljdF9fYGAgYXR0cmlidXRlIGlzIG5vdCBwb3NzaWJsZSAoeW91IGNhblxud3JpdGUgYGBtLl9fZGljdF9fWydhJ10gPSAxYGAsIHdoaWNoIGRlZmluZXMgYGBtLmFgYCB0byBiZSBgYDFgYCwgYnV0XG55b3UgY2FuJ3Qgd3JpdGUgYGBtLl9fZGljdF9fID0ge31gYCkuICBNb2RpZnlpbmcgYGBfX2RpY3RfX2BgIGRpcmVjdGx5XG5pcyBub3QgcmVjb21tZW5kZWQuXG5cbk1vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiBgYDxtb2R1bGVcbidzeXMnIChidWlsdC1pbik+YGAuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlIHdyaXR0ZW4gYXNcbmBgPG1vZHVsZSAnb3MnIGZyb20gJy91c3IvbG9jYWwvbGliL3B5dGhvblguWS9vcy5weWMnPmBgLlxuIiwKLSAndHlwZXNzZXEnOiAnXG5TZXF1ZW5jZSBUeXBlcyAtLS0gYGBzdHJgYCwgYGBieXRlc2BgLCBgYGJ5dGVhcnJheWBgLCBgYGxpc3RgYCwgYGB0dXBsZWBgLCBgYHJhbmdlYGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgc2l4IHNlcXVlbmNlIHR5cGVzOiBzdHJpbmdzLCBieXRlIHNlcXVlbmNlcyAoYGBieXRlc2BgXG5vYmplY3RzKSwgYnl0ZSBhcnJheXMgKGBgYnl0ZWFycmF5YGAgb2JqZWN0cyksIGxpc3RzLCB0dXBsZXMsIGFuZFxucmFuZ2Ugb2JqZWN0cy4gIEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gYGBkaWN0YGAgYW5kXG5gYHNldGBgIGNsYXNzZXMsIGFuZCB0aGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZS5cblxuU3RyaW5ncyBjb250YWluIFVuaWNvZGUgY2hhcmFjdGVycy4gIFRoZWlyIGxpdGVyYWxzIGFyZSB3cml0dGVuIGluXG5zaW5nbGUgb3IgZG91YmxlIHF1b3RlczogYGBcJ3h5enp5XCdgYCwgYGAiZnJvYm96eiJgYC4gIFNlZSAqU3RyaW5nIGFuZFxuQnl0ZXMgbGl0ZXJhbHMqIGZvciBtb3JlIGFib3V0IHN0cmluZyBsaXRlcmFscy4gIEluIGFkZGl0aW9uIHRvIHRoZVxuZnVuY3Rpb25hbGl0eSBkZXNjcmliZWQgaGVyZSwgdGhlcmUgYXJlIGFsc28gc3RyaW5nLXNwZWNpZmljIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlN0cmluZyBNZXRob2RzKiBzZWN0aW9uLlxuXG5CeXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgY29udGFpbiBzaW5nbGUgYnl0ZXMgLS0gdGhlIGZvcm1lciBpc1xuaW1tdXRhYmxlIHdoaWxlIHRoZSBsYXR0ZXIgaXMgYSBtdXRhYmxlIHNlcXVlbmNlLiAgQnl0ZXMgb2JqZWN0cyBjYW5cbmJlIGNvbnN0cnVjdGVkIHRoZSBjb25zdHJ1Y3RvciwgYGBieXRlcygpYGAsIGFuZCBmcm9tIGxpdGVyYWxzOyB1c2UgYVxuYGBiYGAgcHJlZml4IHdpdGggbm9ybWFsIHN0cmluZyBzeW50YXg6IGBgYlwneHl6enlcJ2BgLiAgVG8gY29uc3RydWN0XG5ieXRlIGFycmF5cywgdXNlIHRoZSBgYGJ5dGVhcnJheSgpYGAgZnVuY3Rpb24uXG5cbldoaWxlIHN0cmluZyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycyAocmVwcmVzZW50ZWQgYnlcbnN0cmluZ3Mgb2YgbGVuZ3RoIDEpLCBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZlxuKmludGVnZXJzKiAoYmV0d2VlbiAwIGFuZCAyNTUpLCByZXByZXNlbnRpbmcgdGhlIEFTQ0lJIHZhbHVlIG9mIHNpbmdsZVxuYnl0ZXMuICBUaGF0IG1lYW5zIHRoYXQgZm9yIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgXG53aWxsIGJlIGFuIGludGVnZXIsIHdoaWxlIGBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9yIGJ5dGVhcnJheVxub2JqZWN0IG9mIGxlbmd0aCAxLiAgVGhlIHJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGVcbmxpdGVyYWwgZm9ybWF0IChgYGJcJy4uLlwnYGApIHNpbmNlIGl0IGlzIGdlbmVyYWxseSBtb3JlIHVzZWZ1bCB0aGFuXG5lLmcuIGBgYnl0ZXMoWzUwLCAxOSwgMTAwXSlgYC4gIFlvdSBjYW4gYWx3YXlzIGNvbnZlcnQgYSBieXRlcyBvYmplY3RcbmludG8gYSBsaXN0IG9mIGludGVnZXJzIHVzaW5nIGBgbGlzdChiKWBgLlxuXG5BbHNvLCB3aGlsZSBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMsIGJ5dGUgc3RyaW5ncyBhbmQgVW5pY29kZVxuc3RyaW5ncyBjb3VsZCBiZSBleGNoYW5nZWQgZm9yIGVhY2ggb3RoZXIgcmF0aGVyIGZyZWVseSAoYmFycmluZ1xuZW5jb2RpbmcgaXNzdWVzKSwgc3RyaW5ncyBhbmQgYnl0ZXMgYXJlIG5vdyBjb21wbGV0ZWx5IHNlcGFyYXRlXG5jb25jZXB0cy4gIFRoZXJlXCdzIG5vIGltcGxpY2l0IGVuLS9kZWNvZGluZyBpZiB5b3UgcGFzcyBhbiBvYmplY3Qgb2ZcbnRoZSB3cm9uZyB0eXBlLiAgQSBzdHJpbmcgYWx3YXlzIGNvbXBhcmVzIHVuZXF1YWwgdG8gYSBieXRlcyBvclxuYnl0ZWFycmF5IG9iamVjdC5cblxuTGlzdHMgYXJlIGNvbnN0cnVjdGVkIHdpdGggc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGhcbmNvbW1hczogYGBbYSwgYiwgY11gYC4gIFR1cGxlcyBhcmUgY29uc3RydWN0ZWQgYnkgdGhlIGNvbW1hIG9wZXJhdG9yXG4obm90IHdpdGhpbiBzcXVhcmUgYnJhY2tldHMpLCB3aXRoIG9yIHdpdGhvdXQgZW5jbG9zaW5nIHBhcmVudGhlc2VzLFxuYnV0IGFuIGVtcHR5IHR1cGxlIG11c3QgaGF2ZSB0aGUgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBzdWNoIGFzIGBgYSxcbmIsIGNgYCBvciBgYCgpYGAuICBBIHNpbmdsZSBpdGVtIHR1cGxlIG11c3QgaGF2ZSBhIHRyYWlsaW5nIGNvbW1hLFxuc3VjaCBhcyBgYChkLClgYC5cblxuT2JqZWN0cyBvZiB0eXBlIHJhbmdlIGFyZSBjcmVhdGVkIHVzaW5nIHRoZSBgYHJhbmdlKClgYCBmdW5jdGlvbi5cblRoZXkgZG9uXCd0IHN1cHBvcnQgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLCBhbmQgdXNpbmcgYGBtaW4oKWBgIG9yXG5gYG1heCgpYGAgb24gdGhlbSBpcyBpbmVmZmljaWVudC5cblxuTW9zdCBzZXF1ZW5jZSB0eXBlcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy4gIFRoZSBgYGluYGAgYW5kXG5gYG5vdCBpbmBgIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZSBjb21wYXJpc29uXG5vcGVyYXRpb25zLiAgVGhlIGBgK2BgIGFuZCBgYCpgYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXNcbnRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4gWzNdIEFkZGl0aW9uYWwgbWV0aG9kcyBhcmVcbnByb3ZpZGVkIGZvciAqTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcyouXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eVxuKG9wZXJhdGlvbnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkpLiAgSW4gdGhlIHRhYmxlLFxuKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlOyAqbiosICppKiwgKmoqIGFuZCAqayogYXJlXG5pbnRlZ2Vycy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCBgYHggaW4gc2BgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBGYWxzZWBgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHggbm90IGluIHNgYCAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBUcnVlYGAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKyB0YGAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKiBuLCBuICogc2BgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgICB8ICgyKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaV1gYCAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXWBgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg0KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdYGAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYGxlbihzKWBgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1pbihzKWBgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1heChzKWBgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoaSlgYCAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCAqaSogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoaSlgYCAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJlbmNlcyBvZiAgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCAqaSogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZSB0eXBlcyBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLCB0dXBsZXMgYW5kXG5saXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nIGNvcnJlc3BvbmRpbmdcbmVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdFxuY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlIGFuZCBoYXZlXG50aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUgKkNvbXBhcmlzb25zKiBpbiB0aGUgbGFuZ3VhZ2VcbnJlZmVyZW5jZS4pXG5cbk5vdGVzOlxuXG4xLiBXaGVuICpzKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9uc1xuICAgYWN0IGxpa2UgYSBzdWJzdHJpbmcgdGVzdC5cblxuMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gYGAwYGAgYXJlIHRyZWF0ZWQgYXMgYGAwYGAgKHdoaWNoIHlpZWxkcyBhblxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSBhbHNvIHRoYXQgdGhlIGNvcGllc1xuICAgYXJlIHNoYWxsb3c7IG5lc3RlZCBzdHJ1Y3R1cmVzIGFyZSBub3QgY29waWVkLiAgVGhpcyBvZnRlbiBoYXVudHNcbiAgIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7IGNvbnNpZGVyOlxuXG4gICA+Pj4gbGlzdHMgPSBbW11dICogM1xuICAgPj4+IGxpc3RzXG4gICBbW10sIFtdLCBbXV1cbiAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgID4+PiBsaXN0c1xuICAgW1szXSwgWzNdLCBbM11dXG5cbiAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgYGBbW11dYGAgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiBgYFtbXV0gKiAzYGAgYXJlIChwb2ludGVyc1xuICAgdG8pIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuICAgYGBsaXN0c2BgIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuICAgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OlxuXG4gICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4gICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4gICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4gICA+Pj4gbGlzdHNcbiAgIFtbM10sIFs1XSwgWzddXVxuXG4zLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGVcbiAgIHN0cmluZzogYGBsZW4ocykgKyBpYGAgb3IgYGBsZW4ocykgKyBqYGAgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCBgYC0wYGAgaXMgc3RpbGwgYGAwYGAuXG5cbjQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlIG9mXG4gICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgYGBpIDw9IGsgPCBqYGAuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gYGBsZW4ocylgYCwgdXNlIGBgbGVuKHMpYGAuICBJZiAqaSogaXMgb21pdHRlZCBvclxuICAgYGBOb25lYGAsIHVzZSBgYDBgYC4gIElmICpqKiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCB1c2VcbiAgIGBgbGVuKHMpYGAuICBJZiAqaSogaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzXG4gICBlbXB0eS5cblxuNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzIHRoZVxuICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgYGB4ID0gaSArIG4qa2BgIHN1Y2ggdGhhdCBgYDAgPD0gbiA8XG4gICAoai1pKS9rYGAuICBJbiBvdGhlciB3b3JkcywgdGhlIGluZGljZXMgYXJlIGBgaWBgLCBgYGkra2BgLFxuICAgYGBpKzIqa2BgLCBgYGkrMyprYGAgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXRcbiAgIG5ldmVyIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gYGBsZW4ocylgYCxcbiAgIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhleSBiZWNvbWVcbiAgICJlbmQiIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKlxuICAgY2Fubm90IGJlIHplcm8uIElmICprKiBpcyBgYE5vbmVgYCwgaXQgaXMgdHJlYXRlZCBsaWtlIGBgMWBgLlxuXG42LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzdHJpbmdzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC5cbiAgIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHN0cmluZyBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uIHdpbGxcbiAgIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzdHJpbmcgbGVuZ3RoLiAgVG8gZ2V0IGFcbiAgIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlIGFsdGVybmF0aXZlc1xuICAgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHN0cmBgIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCB1c2VcbiAgICAgYGBzdHIuam9pbigpYGAgYXQgdGhlIGVuZDtcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgYnl0ZXNgYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgYGBieXRlcy5qb2luKClgYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZSBjb25jYXRlbmF0aW9uIHdpdGggYVxuICAgICBgYGJ5dGVhcnJheWBgIG9iamVjdC4gIGBgYnl0ZWFycmF5YGAgb2JqZWN0cyBhcmUgbXV0YWJsZSBhbmQgaGF2ZVxuICAgICBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtLlxuXG5cblN0cmluZyBNZXRob2RzXG49PT09PT09PT09PT09PVxuXG5TdHJpbmcgb2JqZWN0cyBzdXBwb3J0IHRoZSBtZXRob2RzIGxpc3RlZCBiZWxvdy5cblxuSW4gYWRkaXRpb24sIFB5dGhvblwncyBzdHJpbmdzIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHR5cGUgbWV0aG9kc1xuZGVzY3JpYmVkIGluIHRoZSAqU2VxdWVuY2UgVHlwZXMgLS0tIHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSwgbGlzdCxcbnR1cGxlLCByYW5nZSogc2VjdGlvbi4gVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLCBzZWUgdGhlICpTdHJpbmdcbkZvcm1hdHRpbmcqIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgYGByZWBgIG1vZHVsZSBmb3Igc3RyaW5nIGZ1bmN0aW9uc1xuYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhIHNwYWNlKS5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzIGBgXCd1dGYtOFwnYGAuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnRcbiAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuIE90aGVyXG4gICBwb3NzaWJsZSB2YWx1ZXMgYXJlIGBgXCdpZ25vcmVcJ2BgLCBgYFwncmVwbGFjZVwnYGAsXG4gICBgYFwneG1sY2hhcnJlZnJlcGxhY2VcJ2BgLCBgYFwnYmFja3NsYXNocmVwbGFjZVwnYGAgYW5kIGFueSBvdGhlciBuYW1lXG4gICByZWdpc3RlcmVkIHZpYSBgYGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpYGAsIHNlZSBzZWN0aW9uICpDb2RlYyBCYXNlXG4gICBDbGFzc2VzKi4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZFxuICAgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZlxuICAgc3VmZml4ZXMgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0XG4gICB0aGF0IHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5leHBhbmR0YWJzKFt0YWJzaXplXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IHplcm8gb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUaGUgY29sdW1uIG51bWJlciBpcyByZXNldCB0byB6ZXJvIGFmdGVyIGVhY2hcbiAgIG5ld2xpbmUgb2NjdXJyaW5nIGluIHRoZSBzdHJpbmcuIElmICp0YWJzaXplKiBpcyBub3QgZ2l2ZW4sIGEgdGFiXG4gICBzaXplIG9mIGBgOGBgIGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4gIFRoaXMgZG9lc25cJ3QgdW5kZXJzdGFuZCBvdGhlclxuICAgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgb3IgZXNjYXBlIHNlcXVlbmNlcy5cblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIGluIHRoZSBzbGljZSBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIGlmICpzdWIqIGlzIG5vdCBmb3VuZC5cblxuICAgTm90ZTogVGhlIGBgZmluZCgpYGAgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vdyB0aGVcbiAgICAgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsIHVzZVxuICAgICB0aGUgYGBpbmBgIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgYGB7fWBgLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyBlaXRoZXJcbiAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgb2YgYVxuICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZVxuICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cblxuICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbiAgIFwnVGhlIHN1bSBvZiAxICsgMiBpcyAzXCdcblxuICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXNcbiAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG5cbnN0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG5cbiAgIFNpbWlsYXIgdG8gYGBzdHIuZm9ybWF0KCoqbWFwcGluZylgYCwgZXhjZXB0IHRoYXQgYGBtYXBwaW5nYGAgaXNcbiAgIHVzZWQgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSBgYGRpY3RgYCAuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3JcbiAgIGV4YW1wbGUgYGBtYXBwaW5nYGAgaXMgYSBkaWN0IHN1YmNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbiAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4gICAuLi5cbiAgID4+PiBcJ3tuYW1lfSB3YXMgYm9ybiBpbiB7Y291bnRyeX1cJy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT1cJ0d1aWRvXCcpKVxuICAgXCdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5XCdcblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5zdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYGZpbmQoKWBgLCBidXQgcmFpc2UgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXJcbiAgIGBgY2BgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zIGBgVHJ1ZWBgOlxuICAgYGBjLmlzYWxwaGEoKWBgLCBgYGMuaXNkZWNpbWFsKClgYCwgYGBjLmlzZGlnaXQoKWBgLCBvclxuICAgYGBjLmlzbnVtZXJpYygpYGAuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuIGBgcmVwcigpYGAgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byBgYHN5cy5zdGRvdXRgYCBvciBgYHN5cy5zdGRlcnJgYC4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgYGBUeXBlRXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgYGBieXRlc2BgIG9iamVjdHMuXG4gICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgdGhpcyBtZXRob2QuXG5cbnN0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgXCdzcGFjaW91cyAgIFwnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICBgYHN0ci50cmFuc2xhdGUoKWBgLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGByZmluZCgpYGAgYnV0IHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YipcbiAgIGlzIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICBgYE5vbmVgYCwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvclxuICAgc3BsaXR0aW5nIGZyb20gdGhlIHJpZ2h0LCBgYHJzcGxpdCgpYGAgYmVoYXZlcyBsaWtlIGBgc3BsaXQoKWBgXG4gICB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG5zdHIucnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICBcJyAgIHNwYWNpb3VzXCdcbiAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCBgYG1heHNwbGl0KzFgYFxuICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGxpbWl0XG4gICBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxLCwyXCcuc3BsaXQoXCcsXCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCdcJywgXCcyXCddYGApLiAgVGhlICpzZXAqXG4gICBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCkuIFNwbGl0dGluZ1xuICAgYW4gZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgYGBbXCdcJ11gYC5cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgYGBOb25lYGAgc2VwYXJhdG9yIHJldHVybnNcbiAgIGBgW11gYC5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCcgMSAgMiAgIDMgIFwnLnNwbGl0KClgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGAsXG4gICBhbmQgYGBcJyAgMSAgMiAgIDMgIFwnLnNwbGl0KE5vbmUsIDEpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyICAgMyAgXCddYGAuXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuICBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2VcbiAgIHJldHVybiBgYEZhbHNlYGAuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9va1xuICAgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKlxuICAgYXJndW1lbnQgaXMgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0c1xuICAgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCBkZWZpbml0aW9uIG9mIGFcbiAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiB3b3JrcyBpblxuICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiBjb250cmFjdGlvbnMgYW5kXG4gICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgZGVzaXJlZFxuICAgcmVzdWx0OlxuXG4gICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcblxuICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgcmVndWxhclxuICAgZXhwcmVzc2lvbnM6XG5cbiAgICAgID4+PiBpbXBvcnQgcmVcbiAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuICAgICAgICAgICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzKVxuXG4gICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbiAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuXG5zdHIudHJhbnNsYXRlKG1hcClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgKnMqIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlICptYXAqIHdoaWNoIG11c3QgYmUgYSBkaWN0aW9uYXJ5IG9mIFVuaWNvZGUgb3JkaW5hbHNcbiAgIChpbnRlZ2VycykgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciBgYE5vbmVgYC4gIFVubWFwcGVkXG4gICBjaGFyYWN0ZXJzIGFyZSBsZWZ0IHVudG91Y2hlZC4gQ2hhcmFjdGVycyBtYXBwZWQgdG8gYGBOb25lYGAgYXJlXG4gICBkZWxldGVkLlxuXG4gICBZb3UgY2FuIHVzZSBgYHN0ci5tYWtldHJhbnMoKWBgIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uIG1hcCBmcm9tXG4gICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCBmb3JtYXRzLlxuXG4gICBOb3RlOiBBbiBldmVuIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tIGNoYXJhY3RlclxuICAgICBtYXBwaW5nIGNvZGVjIHVzaW5nIHRoZSBgYGNvZGVjc2BgIG1vZHVsZSAoc2VlXG4gICAgIGBgZW5jb2RpbmdzLmNwMTI1MWBgIGZvciBhbiBleGFtcGxlKS5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0XG4gICBiZSBgYEZhbHNlYGAgaWYgYGBzYGAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5zdHIuemZpbGwod2lkdGgpXG5cbiAgIFJldHVybiB0aGUgbnVtZXJpYyBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCB6ZXJvcyBpbiBhIHN0cmluZyBvZlxuICAgbGVuZ3RoICp3aWR0aCouICBBIHNpZ24gcHJlZml4IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAgVGhlIG9yaWdpbmFsXG4gICBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuXG5PbGQgU3RyaW5nIEZvcm1hdHRpbmcgT3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuTm90ZTogVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBhcmUgb2Jzb2xldGUgYW5kIG1heSBnb1xuICBhd2F5IGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24uICBVc2UgdGhlIG5ldyAqU3RyaW5nIEZvcm1hdHRpbmcqXG4gIGluIG5ldyBjb2RlLlxuXG5TdHJpbmcgb2JqZWN0cyBoYXZlIG9uZSB1bmlxdWUgYnVpbHQtaW4gb3BlcmF0aW9uOiB0aGUgYGAlYGAgb3BlcmF0b3Jcbihtb2R1bG8pLiBUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIHN0cmluZyAqZm9ybWF0dGluZyogb3JcbippbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4gR2l2ZW4gYGBmb3JtYXQgJSB2YWx1ZXNgYCAod2hlcmUgKmZvcm1hdCogaXNcbmEgc3RyaW5nKSwgYGAlYGAgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9ucyBpbiAqZm9ybWF0KiBhcmUgcmVwbGFjZWRcbndpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLiBUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gdGhlXG51c2luZyBgYHNwcmludGYoKWBgIGluIHRoZSBDIGxhbmd1YWdlLlxuXG5JZiAqZm9ybWF0KiByZXF1aXJlcyBhIHNpbmdsZSBhcmd1bWVudCwgKnZhbHVlcyogbWF5IGJlIGEgc2luZ2xlIG5vbi1cbnR1cGxlIG9iamVjdC4gWzVdICBPdGhlcndpc2UsICp2YWx1ZXMqIG11c3QgYmUgYSB0dXBsZSB3aXRoIGV4YWN0bHlcbnRoZSBudW1iZXIgb2YgaXRlbXMgc3BlY2lmaWVkIGJ5IHRoZSBmb3JtYXQgc3RyaW5nLCBvciBhIHNpbmdsZVxubWFwcGluZyBvYmplY3QgKGZvciBleGFtcGxlLCBhIGRpY3Rpb25hcnkpLlxuXG5BIGNvbnZlcnNpb24gc3BlY2lmaWVyIGNvbnRhaW5zIHR3byBvciBtb3JlIGNoYXJhY3RlcnMgYW5kIGhhcyB0aGVcbmZvbGxvd2luZyBjb21wb25lbnRzLCB3aGljaCBtdXN0IG9jY3VyIGluIHRoaXMgb3JkZXI6XG5cbjEuIFRoZSBgYFwnJVwnYGAgY2hhcmFjdGVyLCB3aGljaCBtYXJrcyB0aGUgc3RhcnQgb2YgdGhlIHNwZWNpZmllci5cblxuMi4gTWFwcGluZyBrZXkgKG9wdGlvbmFsKSwgY29uc2lzdGluZyBvZiBhIHBhcmVudGhlc2lzZWQgc2VxdWVuY2Ugb2ZcbiAgIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLCBgYChzb21lbmFtZSlgYCkuXG5cbjMuIENvbnZlcnNpb24gZmxhZ3MgKG9wdGlvbmFsKSwgd2hpY2ggYWZmZWN0IHRoZSByZXN1bHQgb2Ygc29tZVxuICAgY29udmVyc2lvbiB0eXBlcy5cblxuNC4gTWluaW11bSBmaWVsZCB3aWR0aCAob3B0aW9uYWwpLiAgSWYgc3BlY2lmaWVkIGFzIGFuIGBgXCcqXCdgYFxuICAgKGFzdGVyaXNrKSwgdGhlIGFjdHVhbCB3aWR0aCBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiB0aGVcbiAgIHR1cGxlIGluICp2YWx1ZXMqLCBhbmQgdGhlIG9iamVjdCB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZVxuICAgbWluaW11bSBmaWVsZCB3aWR0aCBhbmQgb3B0aW9uYWwgcHJlY2lzaW9uLlxuXG41LiBQcmVjaXNpb24gKG9wdGlvbmFsKSwgZ2l2ZW4gYXMgYSBgYFwnLlwnYGAgKGRvdCkgZm9sbG93ZWQgYnkgdGhlXG4gICBwcmVjaXNpb24uICBJZiBzcGVjaWZpZWQgYXMgYGBcJypcJ2BgIChhbiBhc3RlcmlzayksIHRoZSBhY3R1YWxcbiAgIHByZWNpc2lvbiBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgdHVwbGUgaW4gKnZhbHVlcyosXG4gICBhbmQgdGhlIHZhbHVlIHRvIGNvbnZlcnQgY29tZXMgYWZ0ZXIgdGhlIHByZWNpc2lvbi5cblxuNi4gTGVuZ3RoIG1vZGlmaWVyIChvcHRpb25hbCkuXG5cbjcuIENvbnZlcnNpb24gdHlwZS5cblxuV2hlbiB0aGUgcmlnaHQgYXJndW1lbnQgaXMgYSBkaWN0aW9uYXJ5IChvciBvdGhlciBtYXBwaW5nIHR5cGUpLCB0aGVuXG50aGUgZm9ybWF0cyBpbiB0aGUgc3RyaW5nICptdXN0KiBpbmNsdWRlIGEgcGFyZW50aGVzaXNlZCBtYXBwaW5nIGtleVxuaW50byB0aGF0IGRpY3Rpb25hcnkgaW5zZXJ0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGBgXCclXCdgYCBjaGFyYWN0ZXIuXG5UaGUgbWFwcGluZyBrZXkgc2VsZWN0cyB0aGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkIGZyb20gdGhlIG1hcHBpbmcuXG5Gb3IgZXhhbXBsZTpcblxuPj4+IHByaW50KFwnJShsYW5ndWFnZSlzIGhhcyAlKG51bWJlcikwM2QgcXVvdGUgdHlwZXMuXCcgJVxuLi4uICAgICAgIHtcJ2xhbmd1YWdlXCc6ICJQeXRob24iLCAibnVtYmVyIjogMn0pXG5QeXRob24gaGFzIDAwMiBxdW90ZSB0eXBlcy5cblxuSW4gdGhpcyBjYXNlIG5vIGBgKmBgIHNwZWNpZmllcnMgbWF5IG9jY3VyIGluIGEgZm9ybWF0IChzaW5jZSB0aGV5XG5yZXF1aXJlIGEgc2VxdWVudGlhbCBwYXJhbWV0ZXIgbGlzdCkuXG5cblRoZSBjb252ZXJzaW9uIGZsYWcgY2hhcmFjdGVycyBhcmU6XG5cbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgRmxhZyAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBcJyNcJ2BgICAgfCBUaGUgdmFsdWUgY29udmVyc2lvbiB3aWxsIHVzZSB0aGUgImFsdGVybmF0ZSBmb3JtIiAod2hlcmUgZGVmaW5lZCAgICAgfFxufCAgICAgICAgICAgfCBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnMFwnYGAgICB8IFRoZSBjb252ZXJzaW9uIHdpbGwgYmUgemVybyBwYWRkZWQgZm9yIG51bWVyaWMgdmFsdWVzLiAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgXCctXCdgYCAgIHwgVGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBsZWZ0IGFkanVzdGVkIChvdmVycmlkZXMgdGhlIGBgXCcwXCdgYCAgICAgICAgICAgfFxufCAgICAgICAgICAgfCBjb252ZXJzaW9uIGlmIGJvdGggYXJlIGdpdmVuKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnIFwnYGAgICB8IChhIHNwYWNlKSBBIGJsYW5rIHNob3VsZCBiZSBsZWZ0IGJlZm9yZSBhIHBvc2l0aXZlIG51bWJlciAob3IgZW1wdHkgICB8XG58ICAgICAgICAgICB8IHN0cmluZykgcHJvZHVjZWQgYnkgYSBzaWduZWQgY29udmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgXCcrXCdgYCAgIHwgQSBzaWduIGNoYXJhY3RlciAoYGBcJytcJ2BgIG9yIGBgXCctXCdgYCkgd2lsbCBwcmVjZWRlIHRoZSBjb252ZXJzaW9uICAgICB8XG58ICAgICAgICAgICB8IChvdmVycmlkZXMgYSAic3BhY2UiIGZsYWcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkEgbGVuZ3RoIG1vZGlmaWVyIChgYGhgYCwgYGBsYGAsIG9yIGBgTGBgKSBtYXkgYmUgcHJlc2VudCwgYnV0IGlzXG5pZ25vcmVkIGFzIGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIFB5dGhvbiAtLSBzbyBlLmcuIGBgJWxkYGAgaXNcbmlkZW50aWNhbCB0byBgYCVkYGAuXG5cblRoZSBjb252ZXJzaW9uIHR5cGVzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBDb252ZXJzaW9uICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFwnZFwnYGAgICAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdpXCdgYCAgICAgIHwgU2lnbmVkIGludGVnZXIgZGVjaW1hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ29cJ2BgICAgICAgfCBTaWduZWQgb2N0YWwgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgxKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwndVwnYGAgICAgICB8IE9ic29sZXRlIHR5cGUgLS0gaXQgaXMgaWRlbnRpY2FsIHRvIGBgXCdkXCdgYC4gICAgICAgICAgfCAoNykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3hcJ2BgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKGxvd2VyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnWFwnYGAgICAgICB8IFNpZ25lZCBoZXhhZGVjaW1hbCAodXBwZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICAgIHwgKDIpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdlXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0IChsb3dlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ0VcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBleHBvbmVudGlhbCBmb3JtYXQgKHVwcGVyY2FzZSkuICAgICAgICB8ICgzKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnZlwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdGXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZGVjaW1hbCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ2dcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgbG93ZXJjYXNlIGV4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnR1wnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyB1cHBlcmNhc2UgZXhwb25lbnRpYWwgICAgIHwgKDQpICAgICB8XG58ICAgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgdGhhbiAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IHByZWNpc2lvbiwgZGVjaW1hbCBmb3JtYXQgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdjXCdgYCAgICAgIHwgU2luZ2xlIGNoYXJhY3RlciAoYWNjZXB0cyBpbnRlZ2VyIG9yIHNpbmdsZSBjaGFyYWN0ZXIgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgIHwgc3RyaW5nKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3JcJ2BgICAgICAgfCBTdHJpbmcgKGNvbnZlcnRzIGFueSBQeXRob24gb2JqZWN0IHVzaW5nIGBgcmVwcigpYGApLiB8ICg1KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnc1wnYGAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgYGBzdHIoKWBgKS4gIHwgKDUpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdhXCdgYCAgICAgIHwgU3RyaW5nIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyAgICAgICAgICAgICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgIHwgYGBhc2NpaSgpYGApLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJyVcJ2BgICAgICAgfCBObyBhcmd1bWVudCBpcyBjb252ZXJ0ZWQsIHJlc3VsdHMgaW4gYSBgYFwnJVwnYGAgICAgICAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IGNoYXJhY3RlciBpbiB0aGUgcmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyB6ZXJvIChgYFwnMFwnYGApIHRvIGJlIGluc2VydGVkXG4gICBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZVxuICAgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uXG5cbjIuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgYSBsZWFkaW5nIGBgXCcweFwnYGAgb3IgYGBcJzBYXCdgYCAoZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZSBgYFwneFwnYGAgb3IgYGBcJ1hcJ2BgIGZvcm1hdCB3YXMgdXNlZCkgdG8gYmUgaW5zZXJ0ZWRcbiAgIGJldHdlZW4gbGVmdC1oYW5kIHBhZGRpbmcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlXG4gICBsZWFkaW5nIGNoYXJhY3RlciBvZiB0aGUgcmVzdWx0IGlzIG5vdCBhbHJlYWR5IGEgemVyby5cblxuMy4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbFxuICAgcG9pbnQsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC5cblxuICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsXG4gICBwb2ludCBhbmQgZGVmYXVsdHMgdG8gNi5cblxuNC4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbFxuICAgcG9pbnQsIGFuZCB0cmFpbGluZyB6ZXJvZXMgYXJlIG5vdCByZW1vdmVkIGFzIHRoZXkgd291bGQgb3RoZXJ3aXNlXG4gICBiZS5cblxuICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGJlZm9yZVxuICAgYW5kIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGFuZCBkZWZhdWx0cyB0byA2LlxuXG41LiBJZiBwcmVjaXNpb24gaXMgYGBOYGAsIHRoZSBvdXRwdXQgaXMgdHJ1bmNhdGVkIHRvIGBgTmBgIGNoYXJhY3RlcnMuXG5cbjEuIFNlZSAqKlBFUCAyMzcqKi5cblxuU2luY2UgUHl0aG9uIHN0cmluZ3MgaGF2ZSBhbiBleHBsaWNpdCBsZW5ndGgsIGBgJXNgYCBjb252ZXJzaW9ucyBkb1xubm90IGFzc3VtZSB0aGF0IGBgXCdcXDBcJ2BgIGlzIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogYGAlZmBgIGNvbnZlcnNpb25zIGZvciBudW1iZXJzIHdob3NlIGFic29sdXRlXG52YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vIGxvbmdlciByZXBsYWNlZCBieSBgYCVnYGAgY29udmVyc2lvbnMuXG5cbkFkZGl0aW9uYWwgc3RyaW5nIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQgaW4gc3RhbmRhcmQgbW9kdWxlc1xuYGBzdHJpbmdgYCBhbmQgYGByZWBgLlxuXG5cblJhbmdlIFR5cGVcbj09PT09PT09PT1cblxuVGhlIGBgcmFuZ2VgYCB0eXBlIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB3aGljaCBpcyBjb21tb25seSB1c2VkIGZvclxubG9vcGluZy4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhlIGBgcmFuZ2VgYCB0eXBlIGlzIHRoYXQgYW4gYGByYW5nZWBgXG5vYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSBhbW91bnQgb2YgbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemVcbm9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzLlxuXG5SYW5nZSBvYmplY3RzIGhhdmUgcmVsYXRpdmVseSBsaXR0bGUgYmVoYXZpb3I6IHRoZXkgc3VwcG9ydCBpbmRleGluZyxcbmNvbnRhaW5zLCBpdGVyYXRpb24sIHRoZSBgYGxlbigpYGAgZnVuY3Rpb24sIGFuZCB0aGUgZm9sbG93aW5nXG5tZXRob2RzOlxuXG5yYW5nZS5jb3VudCh4KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiAqaSpcJ3MgZm9yIHdoaWNoIGBgc1tpXSA9PSB4YGAuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxucmFuZ2UuaW5kZXgoeClcblxuICAgUmV0dXJuIHRoZSBzbWFsbGVzdCAqaSogc3VjaCB0aGF0IGBgc1tpXSA9PSB4YGAuICBSYWlzZXNcbiAgIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBpbiB0aGUgcmFuZ2UuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cbkxpc3QgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHN1cHBvcnQgYWRkaXRpb25hbCBvcGVyYXRpb25zIHRoYXQgYWxsb3dcbmluLXBsYWNlIG1vZGlmaWNhdGlvbiBvZiB0aGUgb2JqZWN0LiAgT3RoZXIgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlc1xuKHdoZW4gYWRkZWQgdG8gdGhlIGxhbmd1YWdlKSBzaG91bGQgYWxzbyBzdXBwb3J0IHRoZXNlIG9wZXJhdGlvbnMuXG5TdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczogc3VjaCBvYmplY3RzIGNhbm5vdFxuYmUgbW9kaWZpZWQgb25jZSBjcmVhdGVkLiBUaGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQgb25cbm11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZXJlICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0KS5cblxuTm90ZSB0aGF0IHdoaWxlIGxpc3RzIGFsbG93IHRoZWlyIGl0ZW1zIHRvIGJlIG9mIGFueSB0eXBlLCBieXRlYXJyYXlcbm9iamVjdCAiaXRlbXMiIGFyZSBhbGwgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt4XWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuZXh0ZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9IHhgYCB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvdW50KHgpYGAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIG51bWJlciBvZiAqaSpcJ3MgZm9yIHdoaWNoIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCAgICAgICB8IHJldHVybiBzbWFsbGVzdCAqayogc3VjaCB0aGF0ICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2tdID09IHhgYCBhbmQgYGBpIDw9IGsgPCBqYGAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5pbnNlcnQoaSwgeClgYCAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6aV0gPSBbeF1gYCAgICAgICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgeCA9IHNbaV07IGRlbCBzW2ldOyAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiB4YGAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgZGVsIHNbcy5pbmRleCh4KV1gYCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJldmVyc2UoKWBgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnNvcnQoW2tleVssIHJldmVyc2VdXSlgYCAgIHwgc29ydCB0aGUgaXRlbXMgb2YgKnMqIGluIHBsYWNlICAgfCAoNiksICg3KSwgKDgpICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiAqeCogY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuXG5cbjMuIFJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuIGEgbmVnYXRpdmVcbiAgIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgc2Vjb25kIG9yIHRoaXJkIHBhcmFtZXRlciB0byB0aGUgYGBpbmRleCgpYGBcbiAgIG1ldGhvZCwgdGhlIHNlcXVlbmNlIGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yIHNsaWNlIGluZGljZXMuICBJZiBpdFxuICAgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZCB0byB6ZXJvLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy5cblxuNC4gV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIHRoZVxuICAgYGBpbnNlcnQoKWBgIG1ldGhvZCwgdGhlIHNlcXVlbmNlIGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yIHNsaWNlXG4gICBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZCB0byB6ZXJvLCBhcyBmb3JcbiAgIHNsaWNlIGluZGljZXMuXG5cbjUuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gYGAtMWBgLCBzbyB0aGF0IGJ5IGRlZmF1bHRcbiAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG5cbjYuIFRoZSBgYHNvcnQoKWBgIGFuZCBgYHJldmVyc2UoKWBgIG1ldGhvZHMgbW9kaWZ5IHRoZSBzZXF1ZW5jZSBpblxuICAgcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiBzb3J0aW5nIG9yIHJldmVyc2luZyBhIGxhcmdlXG4gICBzZXF1ZW5jZS4gIFRvIHJlbWluZCB5b3UgdGhhdCB0aGV5IG9wZXJhdGUgYnkgc2lkZSBlZmZlY3QsIHRoZXlcbiAgIGRvblwndCByZXR1cm4gdGhlIHNvcnRlZCBvciByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNy4gVGhlIGBgc29ydCgpYGAgbWV0aG9kIHRha2VzIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgY29udHJvbGxpbmcgdGhlXG4gICBjb21wYXJpc29ucy4gIEVhY2ggbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LlxuXG4gICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3RcbiAgIGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudDogYGBrZXk9c3RyLmxvd2VyYGAuICBUaGVcbiAgIGRlZmF1bHQgdmFsdWUgaXMgYGBOb25lYGAuIFVzZSBgYGZ1bmN0b29scy5jbXBfdG9fa2V5KClgYCB0b1xuICAgY29udmVydCBhbiBvbGQtc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdFxuICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC5cblxuICAgVGhlIGBgc29ydCgpYGAgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0IGlzIHN0YWJsZVxuICAgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0XG4gICBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yIHNvcnRpbmcgaW4gbXVsdGlwbGUgcGFzc2VzXG4gICAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiBieSBzYWxhcnkgZ3JhZGUpLlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIGlmIGl0IGNhbiBkZXRlY3RcbiAgIHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG44LiBgYHNvcnQoKWBgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgYGBieXRlYXJyYXlgYCBvYmplY3RzLlxuXG5cbkJ5dGVzIGFuZCBCeXRlIEFycmF5IE1ldGhvZHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzLCBiZWluZyAic3RyaW5ncyBvZiBieXRlcyIsIGhhdmUgYWxsXG5tZXRob2RzIGZvdW5kIG9uIHN0cmluZ3MsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgYGVuY29kZSgpYGAsXG5gYGZvcm1hdCgpYGAgYW5kIGBgaXNpZGVudGlmaWVyKClgYCwgd2hpY2ggZG8gbm90IG1ha2Ugc2Vuc2Ugd2l0aFxudGhlc2UgdHlwZXMuICBGb3IgY29udmVydGluZyB0aGUgb2JqZWN0cyB0byBzdHJpbmdzLCB0aGV5IGhhdmUgYVxuYGBkZWNvZGUoKWBgIG1ldGhvZC5cblxuV2hlcmV2ZXIgb25lIG9mIHRoZXNlIG1ldGhvZHMgbmVlZHMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhc1xuY2hhcmFjdGVycyAoZS5nLiB0aGUgYGBpcy4uLigpYGAgbWV0aG9kcyksIHRoZSBBU0NJSSBjaGFyYWN0ZXIgc2V0IGlzXG5hc3N1bWVkLlxuXG5Ob3RlOiBUaGUgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgZG9uXCd0IGFjY2VwdCBzdHJpbmdzIGFzXG4gIHRoZWlyIGFyZ3VtZW50cywganVzdCBhcyB0aGUgbWV0aG9kcyBvbiBzdHJpbmdzIGRvblwndCBhY2NlcHQgYnl0ZXNcbiAgYXMgdGhlaXIgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIHlvdSBoYXZlIHRvIHdyaXRlXG5cbiAgICAgYSA9ICJhYmMiXG4gICAgIGIgPSBhLnJlcGxhY2UoImEiLCAiZiIpXG5cbiAgYW5kXG5cbiAgICAgYSA9IGIiYWJjIlxuICAgICBiID0gYS5yZXBsYWNlKGIiYSIsIGIiZiIpXG5cbmJ5dGVzLmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5ieXRlYXJyYXkuZGVjb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGEgc3RyaW5nIGRlY29kZWQgZnJvbSB0aGUgZ2l2ZW4gYnl0ZXMuICBEZWZhdWx0IGVuY29kaW5nIGlzXG4gICBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG4gICBoYW5kbGluZyBzY2hlbWUuICBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgYGBcJ3N0cmljdFwnYGAsIG1lYW5pbmdcbiAgIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgYGBVbmljb2RlRXJyb3JgYC4gIE90aGVyIHBvc3NpYmxlXG4gICB2YWx1ZXMgYXJlIGBgXCdpZ25vcmVcJ2BgLCBgYFwncmVwbGFjZVwnYGAgYW5kIGFueSBvdGhlciBuYW1lXG4gICByZWdpc3RlcmVkIHZpYSBgYGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpYGAsIHNlZSBzZWN0aW9uICpDb2RlYyBCYXNlXG4gICBDbGFzc2VzKi4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZFxuICAgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgc3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMuXG5cblRoZSBieXRlcyBhbmQgYnl0ZWFycmF5IHR5cGVzIGhhdmUgYW4gYWRkaXRpb25hbCBjbGFzcyBtZXRob2Q6XG5cbmNsYXNzbWV0aG9kIGJ5dGVzLmZyb21oZXgoc3RyaW5nKVxuY2xhc3NtZXRob2QgYnl0ZWFycmF5LmZyb21oZXgoc3RyaW5nKVxuXG4gICBUaGlzIGBgYnl0ZXNgYCBjbGFzcyBtZXRob2QgcmV0dXJucyBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QsXG4gICBkZWNvZGluZyB0aGUgZ2l2ZW4gc3RyaW5nIG9iamVjdC4gIFRoZSBzdHJpbmcgbXVzdCBjb250YWluIHR3b1xuICAgaGV4YWRlY2ltYWwgZGlnaXRzIHBlciBieXRlLCBzcGFjZXMgYXJlIGlnbm9yZWQuXG5cbiAgID4+PiBieXRlcy5mcm9taGV4KFwnZjAgZjFmMiAgXCcpXG4gICBiXCdcXHhmMFxceGYxXFx4ZjJcJ1xuXG5UaGUgbWFrZXRyYW5zIGFuZCB0cmFuc2xhdGUgbWV0aG9kcyBkaWZmZXIgaW4gc2VtYW50aWNzIGZyb20gdGhlXG52ZXJzaW9ucyBhdmFpbGFibGUgb24gc3RyaW5nczpcblxuYnl0ZXMudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSlcbmJ5dGVhcnJheS50cmFuc2xhdGUodGFibGVbLCBkZWxldGVdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0IHdoZXJlIGFsbCBieXRlc1xuICAgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlKiBhcmUgcmVtb3ZlZCwgYW5kIHRoZVxuICAgcmVtYWluaW5nIGJ5dGVzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb25cbiAgIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG5cbiAgIFlvdSBjYW4gdXNlIHRoZSBgYGJ5dGVzLm1ha2V0cmFucygpYGAgbWV0aG9kIHRvIGNyZWF0ZSBhXG4gICB0cmFuc2xhdGlvbiB0YWJsZS5cblxuICAgU2V0IHRoZSAqdGFibGUqIGFyZ3VtZW50IHRvIGBgTm9uZWBgIGZvciB0cmFuc2xhdGlvbnMgdGhhdCBvbmx5XG4gICBkZWxldGUgY2hhcmFjdGVyczpcblxuICAgICAgPj4+IGJcJ3JlYWQgdGhpcyBzaG9ydCB0ZXh0XCcudHJhbnNsYXRlKE5vbmUsIGJcJ2FlaW91XCcpXG4gICAgICBiXCdyZCB0aHMgc2hydCB0eHRcJ1xuXG5zdGF0aWMgYnl0ZXMubWFrZXRyYW5zKGZyb20sIHRvKVxuc3RhdGljIGJ5dGVhcnJheS5tYWtldHJhbnMoZnJvbSwgdG8pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBieXRlcy50cmFuc2xhdGUoKWBgIHRoYXQgd2lsbCBtYXAgZWFjaCBjaGFyYWN0ZXIgaW4gKmZyb20qIGludG9cbiAgIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4gKnRvKjsgKmZyb20qIGFuZCAqdG8qIG11c3QgYmVcbiAgIGJ5dGVzIG9iamVjdHMgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjEuXG4nLAotICd0eXBlc3NlcS1tdXRhYmxlJzogJ1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93XG5pbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXNcbih3aGVuIGFkZGVkIHRvIHRoZSBsYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLlxuU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3RcbmJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uXG5tdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCkuXG5cbk5vdGUgdGhhdCB3aGlsZSBsaXN0cyBhbGxvdyB0aGVpciBpdGVtcyB0byBiZSBvZiBhbnkgdHlwZSwgYnl0ZWFycmF5XG5vYmplY3QgIml0ZW1zIiBhcmUgYWxsIGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCBhcmUgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSB4YGAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgamBgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5zb3J0KFtrZXlbLCByZXZlcnNlXV0pYGAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSAgIHwgKDYpLCAoNyksICg4KSAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gKngqIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LlxuXG4zLiBSYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlXG4gICBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIGBgaW5kZXgoKWBgXG4gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXRcbiAgIGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuXG5cbjQuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGVcbiAgIGBgaW5zZXJ0KClgYCBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZVxuICAgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yXG4gICBzbGljZSBpbmRpY2VzLlxuXG41LiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG42LiBUaGUgYGBzb3J0KClgYCBhbmQgYGByZXZlcnNlKClgYCBtZXRob2RzIG1vZGlmeSB0aGUgc2VxdWVuY2UgaW5cbiAgIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSBsYXJnZVxuICAgc2VxdWVuY2UuICBUbyByZW1pbmQgeW91IHRoYXQgdGhleSBvcGVyYXRlIGJ5IHNpZGUgZWZmZWN0LCB0aGV5XG4gICBkb25cJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQgc2VxdWVuY2UuXG5cbjcuIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCB0YWtlcyBvcHRpb25hbCBhcmd1bWVudHMgZm9yIGNvbnRyb2xsaW5nIHRoZVxuICAgY29tcGFyaXNvbnMuICBFYWNoIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEga2V5d29yZCBhcmd1bWVudC5cblxuICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0XG4gICBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQ6IGBga2V5PXN0ci5sb3dlcmBgLiAgVGhlXG4gICBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLiBVc2UgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdG9cbiAgIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGVcbiAgIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdFxuICAgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3Nlc1xuICAgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCBpZiBpdCBjYW4gZGV0ZWN0XG4gICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuOC4gYGBzb3J0KClgYCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGBgYnl0ZWFycmF5YGAgb2JqZWN0cy5cbicsCisgJ3R5cGVzc2VxJzogJ1xuU2VxdWVuY2UgVHlwZXMgLS0tIGBgbGlzdGBgLCBgYHR1cGxlYGAsIGBgcmFuZ2VgYFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxub2JqZWN0cy4gQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZiAqYmluYXJ5XG5kYXRhKiBhbmQgKnRleHQgc3RyaW5ncyogYXJlIGRlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuXG5cblxuQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlXG50eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSBgYGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWBgXG5BQkMgaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZVxub3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eVxuKG9wZXJhdGlvbnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkpLiAgSW4gdGhlIHRhYmxlLFxuKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKiwgKmoqIGFuZCAqayogYXJlXG5pbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmQgdmFsdWVcbnJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cblxuVGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGVcbmNvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlIGBgK2BgIChjb25jYXRlbmF0aW9uKSBhbmQgYGAqYGBcbihyZXBldGl0aW9uKSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmdcbm51bWVyaWMgb3BlcmF0aW9ucy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCBgYHggaW4gc2BgICAgICAgICAgICAgICAgICB8IGBgVHJ1ZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHggbm90IGluIHNgYCAgICAgICAgICAgICB8IGBgRmFsc2VgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKyB0YGAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgKDYpKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICogbmBgIG9yIGBgbiAqIHNgYCAgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgICB8ICgyKSg3KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2ldYGAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYGxlbihzKWBgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtaW4ocylgYCAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbWF4KHMpYGAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgIHwgKDgpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG5cblNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsXG50dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbmNvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbnR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW5cbnRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hpbGUgdGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZVxuICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlc1xuICAgKHN1Y2ggYXMgYGBzdHJgYCwgYGBieXRlc2BgIGFuZCBgYGJ5dGVhcnJheWBgKSBhbHNvIHVzZSB0aGVtIGZvclxuICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcblxuICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4gICAgICBUcnVlXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1tdLCBbXSwgW11dXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlXG4gICBzdHJpbmc6IGBgbGVuKHMpICsgaWBgIG9yIGBgbGVuKHMpICsgamBgIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgYGAtMGBgIGlzIHN0aWxsIGBgMGBgLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0IGBgaSA8PSBrIDwgamBgLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3JcbiAgIGBgTm9uZWBgLCB1c2UgYGAwYGAuICBJZiAqaiogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdXNlXG4gICBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpc1xuICAgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPFxuICAgKGotaSkva2BgLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCxcbiAgIGBgaSsyKmtgYCwgYGBpKzMqa2BgIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0XG4gICBuZXZlciBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsXG4gICB1c2UgYGBsZW4ocylgYC4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lXG4gICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqaypcbiAgIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC5cbiAgIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkIGNvbmNhdGVuYXRpb25cbiAgIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsIHNlcXVlbmNlIGxlbmd0aC5cbiAgIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlXG4gICBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHN0cmBgIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCB1c2VcbiAgICAgYGBzdHIuam9pbigpYGAgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgYGBpby5TdHJpbmdJT2BgXG4gICAgIGluc3RhbmNlIGFuZCByZXRyaWV2ZSBpdHMgdmFsdWUgd2hlbiBjb21wbGV0ZVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBieXRlc2BgIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuICAgICBgYGJ5dGVzLmpvaW4oKWBgIG9yIGBgaW8uQnl0ZXNJT2BgLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlXG4gICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhIGBgYnl0ZWFycmF5YGAgb2JqZWN0LiAgYGBieXRlYXJyYXlgYCBvYmplY3RzXG4gICAgIGFyZSBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgdHVwbGVgYCBvYmplY3RzLCBleHRlbmQgYSBgYGxpc3RgYCBpbnN0ZWFkXG5cbiAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgZG9jdW1lbnRhdGlvblxuXG43LiBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzIGBgcmFuZ2VgYCkgb25seSBzdXBwb3J0IGl0ZW0gc2VxdWVuY2VzXG4gICB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0IHNlcXVlbmNlXG4gICBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguIGBgaW5kZXhgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlblxuICAgc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCBhbGxvd1xuICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgdGhlXG4gICBleHRyYSBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgc1tpOmpdLmluZGV4KHgpYGAsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlIGBgaGFzaCgpYGAgYnVpbHQtaW4uXG5cblRoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyBgYHR1cGxlYGAgaW5zdGFuY2VzLFxudG8gYmUgdXNlZCBhcyBgYGRpY3RgYCBrZXlzIGFuZCBzdG9yZWQgaW4gYGBzZXRgYCBhbmQgYGBmcm96ZW5zZXRgYFxuaW5zdGFuY2VzLlxuXG5BdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZVxudmFsdWVzIHdpbGwgcmVzdWx0IGluIGBgVHlwZUVycm9yYGAuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYGAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgYGBieXRlYXJyYXlgYCBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSBbeF1gYCkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSBgYHNgYCAgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYGRlbCBzWzpdYGApICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBgYHNgYCAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbOl1gYCkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ID0gdGBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6aV0gPSBbeF1gYCkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiBgYHJlbW92ZWBgIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgYGByZXZlcnNlKClgYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215XG4gICBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXRcbiAgIG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLlxuXG41LiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgYGBkaWN0YGAgYW5kIGBgc2V0YGApXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgbWV0aG9kcy5cblxuXG5MaXN0c1xuPT09PT1cblxuTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgdmFyeSBieVxuYXBwbGljYXRpb24pLlxuXG5jbGFzcyBjbGFzcyBsaXN0KFtpdGVyYWJsZV0pXG5cbiAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6IGBgW11gYFxuXG4gICAqIFVzaW5nIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBbYV1gYCxcbiAgICAgYGBbYSwgYiwgY11gYFxuXG4gICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiBgYFt4IGZvciB4IGluIGl0ZXJhYmxlXWBgXG5cbiAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6IGBgbGlzdCgpYGAgb3IgYGBsaXN0KGl0ZXJhYmxlKWBgXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4gICByZXR1cm5lZCwgc2ltaWxhciB0byBgYGl0ZXJhYmxlWzpdYGAuIEZvciBleGFtcGxlLCBgYGxpc3QoXCdhYmNcJylgYFxuICAgcmV0dXJucyBgYFtcJ2FcJywgXCdiXCcsIFwnY1wnXWBgIGFuZCBgYGxpc3QoICgxLCAyLCAzKSApYGAgcmV0dXJucyBgYFsxLFxuICAgMiwgM11gYC4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3XG4gICBlbXB0eSBsaXN0LCBgYFtdYGAuXG5cbiAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGVcbiAgIGBgc29ydGVkKClgYCBidWlsdC1pbi5cblxuICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogYW5kICptdXRhYmxlKiBzZXF1ZW5jZVxuICAgb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6XG5cbiAgIHNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSlcblxuICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgYGA8YGBcbiAgICAgIGNvbXBhcmlzb25zIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWZcbiAgICAgIGFueSBjb21wYXJpc29uIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsXG4gICAgICBmYWlsIChhbmQgdGhlIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZFxuICAgICAgc3RhdGUpLlxuXG4gICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvXG4gICAgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yIGV4YW1wbGUsXG4gICAgICBgYGtleT1zdHIubG93ZXJgYCkuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gdGhlXG4gICAgICBsaXN0IGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQgdGhlbiB1c2VkIGZvciB0aGUgZW50aXJlIHNvcnRpbmdcbiAgICAgIHByb2Nlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgTm9uZWBgIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmVcbiAgICAgIHNvcnRlZCBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gY29udmVydCBhXG4gICAgICAyLnggc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdFxuICAgICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC5cblxuICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlXG4gICAgICB3aGVuIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzXG4gICAgICBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgKHVzZVxuICAgICAgYGBzb3J0ZWQoKWBgIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpc1xuICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2ZcbiAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluXG4gICAgICBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5XG4gICAgICBncmFkZSkuXG5cbiAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgICAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgaWYgaXQgY2FuXG4gICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cblxuVHVwbGVzXG49PT09PT1cblxuVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGVcbmBgZW51bWVyYXRlKClgYCBidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhblxuaW1tdXRhYmxlIHNlcXVlbmNlIG9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nXG5zdG9yYWdlIGluIGEgYGBzZXRgYCBvciBgYGRpY3RgYCBpbnN0YW5jZSkuXG5cbmNsYXNzIGNsYXNzIHR1cGxlKFtpdGVyYWJsZV0pXG5cbiAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcblxuICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogYGAoKWBgXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6IGBgYSxgYCBvciBgYChhLClgYFxuXG4gICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgYSwgYiwgY2BgIG9yIGBgKGEsIGIsIGMpYGBcblxuICAgKiBVc2luZyB0aGUgYGB0dXBsZSgpYGAgYnVpbHQtaW46IGBgdHVwbGUoKWBgIG9yXG4gICAgIGBgdHVwbGUoaXRlcmFibGUpYGBcblxuICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4gICB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCBgYHR1cGxlKFwnYWJjXCcpYGAgcmV0dXJucyBgYChcJ2FcJywgXCdiXCcsXG4gICBcJ2NcJylgYCBhbmQgYGB0dXBsZSggWzEsIDIsIDNdIClgYCByZXR1cm5zIGBgKDEsIDIsIDMpYGAuIElmIG5vXG4gICBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsXG4gICBgYCgpYGAuXG5cbiAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90IHRoZVxuICAgcGFyZW50aGVzZXMuIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgZW1wdHlcbiAgIHR1cGxlIGNhc2UsIG9yIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyBhbWJpZ3VpdHkuXG4gICBGb3IgZXhhbXBsZSwgYGBmKGEsIGIsIGMpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWVcbiAgIGFyZ3VtZW50cywgd2hpbGUgYGBmKChhLCBiLCBjKSlgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGVcbiAgIGFzIHRoZSBzb2xlIGFyZ3VtZW50LlxuXG4gICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucy5cblxuRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyBjbGVhcmVyXG50aGFuIGFjY2VzcyBieSBpbmRleCwgYGBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKClgYCBtYXkgYmUgYSBtb3JlXG5hcHByb3ByaWF0ZSBjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuXG5cblxuUmFuZ2VzXG49PT09PT1cblxuVGhlIGBgcmFuZ2VgYCB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluIGBgZm9yYGAgbG9vcHMuXG5cbmNsYXNzIGNsYXNzIHJhbmdlKFtzdGFydF0sIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiBgYGludGBgIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBgYF9faW5kZXhfX2BgXG4gICBzcGVjaWFsIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvXG4gICBgYDFgYC4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAwYGAuIElmXG4gICAqc3RlcCogaXMgemVybywgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlIGBgcmBgIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSBgYHJbaV0gPSBzdGFydCArIHN0ZXAqaWBgIHdoZXJlIGBgaSA+PSAwYGAgYW5kXG4gICBgYHJbaV0gPCBzdG9wYGAuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCwgYnV0IHRoZVxuICAgY29uc3RyYWludHMgYXJlIGBgaSA+PSAwYGAgYW5kIGBgcltpXSA+IHN0b3BgYC5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiBgYHJbMF1gYCBkb2VzIG5vdCBtZWFudCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiBgYHN5cy5tYXhzaXplYGAgYXJlXG4gICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgYGBsZW4oKWBgKSBtYXkgcmFpc2VcbiAgIGBgT3ZlcmZsb3dFcnJvcmBgLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSBgYHJhbmdlYGAgdHlwZSBvdmVyIGEgcmVndWxhciBgYGxpc3RgYCBvclxuYGB0dXBsZWBgIGlzIHRoYXQgYSBgYHJhbmdlYGAgb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgKHNtYWxsKVxuYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdFxub25seSBzdG9yZXMgdGhlIGBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIHZhbHVlcywgY2FsY3VsYXRpbmdcbmluZGl2aWR1YWwgaXRlbXMgYW5kIHN1YnJhbmdlcyBhcyBuZWVkZWQpLlxuXG5SYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgYGBjb2xsZWN0aW9ucy5TZXF1ZW5jZWBgIEFCQywgYW5kIHByb3ZpZGVcbmZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLCBzbGljaW5nIGFuZFxuc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS0gbGlzdCwgdHVwbGUsXG5yYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCBgYD09YGAgYW5kIGBgIT1gYCBjb21wYXJlc1xudGhlbSBhcyBzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZlxudGhleSByZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2Vcbm9iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGBgc3RhcnRgYCwgYGBzdG9wYGBcbmFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSBgYHJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpYGAgb3JcbmBgcmFuZ2UoMCwgMywgMikgPT0gcmFuZ2UoMCwgNCwgMilgYC4pXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLiBTdXBwb3J0IHNsaWNpbmdcbmFuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0IGBgaW50YGAgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudFxudGltZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogRGVmaW5lIFwnPT1cJyBhbmQgXCchPVwnIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0c1xuYmFzZWQgb24gdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmdcbmJhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlIGBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIGF0dHJpYnV0ZXMuXG4nLAorICd0eXBlc3NlcS1tdXRhYmxlJzogIlxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYGAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgYGBieXRlYXJyYXlgYCBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSBbeF1gYCkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSBgYHNgYCAgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYGRlbCBzWzpdYGApICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBgYHNgYCAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbOl1gYCkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ID0gdGBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6aV0gPSBbeF1gYCkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiBgYHJlbW92ZWBgIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgYGByZXZlcnNlKClgYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215XG4gICBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXRcbiAgIG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLlxuXG41LiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc2xpY2luZ1xuICAgb3BlcmF0aW9ucyAoc3VjaCBhcyBgYGRpY3RgYCBhbmQgYGBzZXRgYClcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBtZXRob2RzLlxuIiwKICAndW5hcnknOiAnXG5VbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHk6XG5cbiAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcblxuVGhlIHVuYXJ5IGBgLWBgIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuYXJndW1lbnQuXG5cblRoZSB1bmFyeSBgYCtgYCAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5IGBgfmBgIChpbnZlcnQpIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBpbnZlcnNpb24gb2YgaXRzXG5pbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGBgeGBgIGlzIGRlZmluZWQgYXNcbmBgLSh4KzEpYGAuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbmBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCiAgJ3doaWxlJzogJ1xuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpc1xuZXhlY3V0ZWQgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmdvZXMgYmFjayB0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKICAnd2l0aCc6ICdcblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vblxuYGB0cnlgYC4uLmBgZXhjZXB0YGAuLi5gYGZpbmFsbHlgYCB1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWRcbmZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSBgYHdpdGhfaXRlbWBgKVxuICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cblxuMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZW50ZXJfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4gICB2YWx1ZSBmcm9tIGBgX19lbnRlcl9fKClgYCBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlIGBgX19lbnRlcl9fKClgYFxuICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuIGBgX19leGl0X18oKWBgIHdpbGwgYWx3YXlzXG4gICAgIGJlIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBgYF9fZXhpdF9fKClgYC4gT3RoZXJ3aXNlLFxuICAgdGhyZWUgYGBOb25lYGAgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlIGBgX19leGl0X18oKWBgIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXNcbiAgIHJlcmFpc2VkLiAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgc3VwcHJlc3NlZCwgYW5kIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZ1xuICAgdGhlIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gYGBfX2V4aXRfXygpYGAgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiBwcm9jZWVkc1xuICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cblxuV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbm11bHRpcGxlIGBgd2l0aGBgIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogJ1xuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYSBnZW5lcmF0b3JcbmZ1bmN0aW9uLCBhbmQgaXMgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uXG5Vc2luZyBhIGBgeWllbGRgYCBzdGF0ZW1lbnQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG9cbmNhdXNlIHRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhXG5ub3JtYWwgZnVuY3Rpb24uIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuXG5pdGVyYXRvciBrbm93biBhcyBhIGdlbmVyYXRvciBpdGVyYXRvciwgb3IgbW9yZSBjb21tb25seSwgYSBnZW5lcmF0b3IuXG5UaGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlXG5gYG5leHQoKWBgIGZ1bmN0aW9uIG9uIHRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW5cbmV4Y2VwdGlvbi5cblxuV2hlbiBhIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQsIHRoZSBzdGF0ZSBvZiB0aGUgZ2VuZXJhdG9yIGlzXG5mcm96ZW4gYW5kIHRoZSB2YWx1ZSBvZiBgYGV4cHJlc3Npb25fbGlzdGBgIGlzIHJldHVybmVkIHRvXG5gYG5leHQoKWBgXCdzIGNhbGxlci4gIEJ5ICJmcm96ZW4iIHdlIG1lYW4gdGhhdCBhbGwgbG9jYWwgc3RhdGUgaXNcbnJldGFpbmVkLCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgbG9jYWwgdmFyaWFibGVzLCB0aGVcbmluc3RydWN0aW9uIHBvaW50ZXIsIGFuZCB0aGUgaW50ZXJuYWwgZXZhbHVhdGlvbiBzdGFjazogZW5vdWdoXG5pbmZvcm1hdGlvbiBpcyBzYXZlZCBzbyB0aGF0IHRoZSBuZXh0IHRpbWUgYGBuZXh0KClgYCBpcyBpbnZva2VkLCB0aGVcbmZ1bmN0aW9uIGNhbiBwcm9jZWVkIGV4YWN0bHkgYXMgaWYgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgd2VyZSBqdXN0XG5hbm90aGVyIGV4dGVybmFsIGNhbGwuXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGFsbG93ZWQgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlIG9mIGEgYGB0cnlgYFxuLi4uICBgYGZpbmFsbHlgYCBjb25zdHJ1Y3QuICBJZiB0aGUgZ2VuZXJhdG9yIGlzIG5vdCByZXN1bWVkIGJlZm9yZSBpdFxuaXMgZmluYWxpemVkIChieSByZWFjaGluZyBhIHplcm8gcmVmZXJlbmNlIGNvdW50IG9yIGJ5IGJlaW5nIGdhcmJhZ2VcbmNvbGxlY3RlZCksIHRoZSBnZW5lcmF0b3ItaXRlcmF0b3JcJ3MgYGBjbG9zZSgpYGAgbWV0aG9kIHdpbGwgYmVcbmNhbGxlZCwgYWxsb3dpbmcgYW55IHBlbmRpbmcgYGBmaW5hbGx5YGAgY2xhdXNlcyB0byBleGVjdXRlLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDI1NSoqIC0gU2ltcGxlIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4gICAgICB0byBQeXRob24uXG5cbiAgICoqUEVQIDAzNDIqKiAtIENvcm91dGluZXMgdmlhIEVuaGFuY2VkIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCB0aGF0LCBhbW9uZyBvdGhlciBnZW5lcmF0b3IgZW5oYW5jZW1lbnRzLCBwcm9wb3NlZFxuICAgICAgYWxsb3dpbmcgYGB5aWVsZGBgIHRvIGFwcGVhciBpbnNpZGUgYSBgYHRyeWBgIC4uLiBgYGZpbmFsbHlgYFxuICAgICAgYmxvY2suXG4nfQorICd5aWVsZCc6ICdcblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yXG5mdW5jdGlvbiwgYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuVXNpbmcgYSBgYHlpZWxkYGAgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvXG5jYXVzZSB0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYVxubm9ybWFsIGZ1bmN0aW9uLlxuXG5XaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhbiBpdGVyYXRvciBrbm93biBhcyBhXG5nZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLiAgVGhlIGJvZHkgb2YgdGhlXG5nZW5lcmF0b3IgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYnkgY2FsbGluZyB0aGUgYGBuZXh0KClgYCBmdW5jdGlvbiBvblxudGhlIGdlbmVyYXRvciByZXBlYXRlZGx5IHVudGlsIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cbldoZW4gYSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkLCB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBpc1xuZnJvemVuIGFuZCB0aGUgdmFsdWUgb2YgYGBleHByZXNzaW9uX2xpc3RgYCBpcyByZXR1cm5lZCB0b1xuYGBuZXh0KClgYFwncyBjYWxsZXIuICBCeSAiZnJvemVuIiB3ZSBtZWFuIHRoYXQgYWxsIGxvY2FsIHN0YXRlIGlzXG5yZXRhaW5lZCwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIGxvY2FsIHZhcmlhYmxlcywgdGhlXG5pbnN0cnVjdGlvbiBwb2ludGVyLCBhbmQgdGhlIGludGVybmFsIGV2YWx1YXRpb24gc3RhY2s6IGVub3VnaFxuaW5mb3JtYXRpb24gaXMgc2F2ZWQgc28gdGhhdCB0aGUgbmV4dCB0aW1lIGBgbmV4dCgpYGAgaXMgaW52b2tlZCwgdGhlXG5mdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IHdlcmUganVzdFxuYW5vdGhlciBleHRlcm5hbCBjYWxsLlxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSBgYHRyeWBgIGNsYXVzZSBvZiBhIGBgdHJ5YGBcbi4uLiAgYGBmaW5hbGx5YGAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QgcmVzdW1lZCBiZWZvcmUgaXRcbmlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZyBnYXJiYWdlXG5jb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yXCdzIGBgY2xvc2UoKWBgIG1ldGhvZCB3aWxsIGJlXG5jYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIGBgZmluYWxseWBgIGNsYXVzZXMgdG8gZXhlY3V0ZS5cblxuV2hlbiBgYHlpZWxkIGZyb20gPGV4cHI+YGAgaXMgdXNlZCwgaXQgdHJlYXRzIHRoZSBzdXBwbGllZCBleHByZXNzaW9uXG5hcyBhIHN1Yml0ZXJhdG9yLCBwcm9kdWNpbmcgdmFsdWVzIGZyb20gaXQgdW50aWwgdGhlIHVuZGVybHlpbmdcbml0ZXJhdG9yIGlzIGV4aGF1c3RlZC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogQWRkZWQgYGB5aWVsZCBmcm9tIDxleHByPmBgIHRvIGRlbGVnYXRlXG4gICBjb250cm9sIGZsb3cgdG8gYSBzdWJpdGVyYXRvclxuXG5Gb3IgZnVsbCBkZXRhaWxzIG9mIGBgeWllbGRgYCBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDI1NSoqIC0gU2ltcGxlIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4gICAgICB0byBQeXRob24uXG5cbiAgICoqUEVQIDAzNDIqKiAtIENvcm91dGluZXMgdmlhIEVuaGFuY2VkIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCB0byBlbmhhbmNlIHRoZSBBUEkgYW5kIHN5bnRheCBvZiBnZW5lcmF0b3JzLCBtYWtpbmdcbiAgICAgIHRoZW0gdXNhYmxlIGFzIHNpbXBsZSBjb3JvdXRpbmVzLlxuXG4gICAqKlBFUCAwMzgwKiogLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3JcbiAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIGBgeWllbGRfZnJvbWBgIHN5bnRheCwgbWFraW5nXG4gICAgICBkZWxlZ2F0aW9uIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuXG4nfQpkaWZmIC0tZ2l0IGEvTGliL3F1ZXVlLnB5IGIvTGliL3F1ZXVlLnB5CmluZGV4IGJlZTdlZDQuLmMzMjk2ZmUgMTAwNjQ0Ci0tLSBhL0xpYi9xdWV1ZS5weQorKysgYi9MaWIvcXVldWUucHkKQEAgLTEsNDkgKzEsNTcgQEAKLSIiIkEgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIHF1ZXVlLiIiIgorJycnQSBtdWx0aS1wcm9kdWNlciwgbXVsdGktY29uc3VtZXIgcXVldWUuJycnCiAKLWZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcgYXMgX3RocmVhZGluZworICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIF90aHJlYWRpbmcKKyAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLWltcG9ydCBoZWFwcQorZnJvbSBoZWFwcSBpbXBvcnQgaGVhcHB1c2gsIGhlYXBwb3AKK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lCiAKIF9fYWxsX18gPSBbJ0VtcHR5JywgJ0Z1bGwnLCAnUXVldWUnLCAnUHJpb3JpdHlRdWV1ZScsICdMaWZvUXVldWUnXQogCiBjbGFzcyBFbXB0eShFeGNlcHRpb24pOgotICAgICJFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLmdldChibG9jaz0wKS9nZXRfbm93YWl0KCkuIgorICAgICdFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLmdldChibG9jaz0wKS9nZXRfbm93YWl0KCkuJwogICAgIHBhc3MKIAogY2xhc3MgRnVsbChFeGNlcHRpb24pOgotICAgICJFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLnB1dChibG9jaz0wKS9wdXRfbm93YWl0KCkuIgorICAgICdFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLnB1dChibG9jaz0wKS9wdXRfbm93YWl0KCkuJwogICAgIHBhc3MKIAogY2xhc3MgUXVldWU6Ci0gICAgIiIiQ3JlYXRlIGEgcXVldWUgb2JqZWN0IHdpdGggYSBnaXZlbiBtYXhpbXVtIHNpemUuCisgICAgJycnQ3JlYXRlIGEgcXVldWUgb2JqZWN0IHdpdGggYSBnaXZlbiBtYXhpbXVtIHNpemUuCiAKICAgICBJZiBtYXhzaXplIGlzIDw9IDAsIHRoZSBxdWV1ZSBzaXplIGlzIGluZmluaXRlLgotICAgICIiIgorICAgICcnJworCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heHNpemU9MCk6CiAgICAgICAgIHNlbGYubWF4c2l6ZSA9IG1heHNpemUKICAgICAgICAgc2VsZi5faW5pdChtYXhzaXplKQorCiAgICAgICAgICMgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW5ldmVyIHRoZSBxdWV1ZSBpcyBtdXRhdGluZy4gIEFsbCBtZXRob2RzCiAgICAgICAgICMgdGhhdCBhY3F1aXJlIG11dGV4IG11c3QgcmVsZWFzZSBpdCBiZWZvcmUgcmV0dXJuaW5nLiAgbXV0ZXgKICAgICAgICAgIyBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgdGhyZWUgY29uZGl0aW9ucywgc28gYWNxdWlyaW5nIGFuZAogICAgICAgICAjIHJlbGVhc2luZyB0aGUgY29uZGl0aW9ucyBhbHNvIGFjcXVpcmVzIGFuZCByZWxlYXNlcyBtdXRleC4KLSAgICAgICAgc2VsZi5tdXRleCA9IF90aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuTG9jaygpCisKICAgICAgICAgIyBOb3RpZnkgbm90X2VtcHR5IHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIHF1ZXVlOyBhCiAgICAgICAgICMgdGhyZWFkIHdhaXRpbmcgdG8gZ2V0IGlzIG5vdGlmaWVkIHRoZW4uCi0gICAgICAgIHNlbGYubm90X2VtcHR5ID0gX3RocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKyAgICAgICAgc2VsZi5ub3RfZW1wdHkgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisKICAgICAgICAgIyBOb3RpZnkgbm90X2Z1bGwgd2hlbmV2ZXIgYW4gaXRlbSBpcyByZW1vdmVkIGZyb20gdGhlIHF1ZXVlOwogICAgICAgICAjIGEgdGhyZWFkIHdhaXRpbmcgdG8gcHV0IGlzIG5vdGlmaWVkIHRoZW4uCi0gICAgICAgIHNlbGYubm90X2Z1bGwgPSBfdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorICAgICAgICBzZWxmLm5vdF9mdWxsID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorCiAgICAgICAgICMgTm90aWZ5IGFsbF90YXNrc19kb25lIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgdW5maW5pc2hlZCB0YXNrcwogICAgICAgICAjIGRyb3BzIHRvIHplcm87IHRocmVhZCB3YWl0aW5nIHRvIGpvaW4oKSBpcyBub3RpZmllZCB0byByZXN1bWUKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZSA9IF90aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCiAgICAgICAgIHNlbGYudW5maW5pc2hlZF90YXNrcyA9IDAKIAogICAgIGRlZiB0YXNrX2RvbmUoc2VsZik6Ci0gICAgICAgICIiIkluZGljYXRlIHRoYXQgYSBmb3JtZXJseSBlbnF1ZXVlZCB0YXNrIGlzIGNvbXBsZXRlLgorICAgICAgICAnJydJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4KIAogICAgICAgICBVc2VkIGJ5IFF1ZXVlIGNvbnN1bWVyIHRocmVhZHMuICBGb3IgZWFjaCBnZXQoKSB1c2VkIHRvIGZldGNoIGEgdGFzaywKICAgICAgICAgYSBzdWJzZXF1ZW50IGNhbGwgdG8gdGFza19kb25lKCkgdGVsbHMgdGhlIHF1ZXVlIHRoYXQgdGhlIHByb2Nlc3NpbmcKQEAgLTU1LDQzICs2MywzNSBAQAogCiAgICAgICAgIFJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgY2FsbGVkIG1vcmUgdGltZXMgdGhhbiB0aGVyZSB3ZXJlIGl0ZW1zCiAgICAgICAgIHBsYWNlZCBpbiB0aGUgcXVldWUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgICcnJworICAgICAgICB3aXRoIHNlbGYuYWxsX3Rhc2tzX2RvbmU6CiAgICAgICAgICAgICB1bmZpbmlzaGVkID0gc2VsZi51bmZpbmlzaGVkX3Rhc2tzIC0gMQogICAgICAgICAgICAgaWYgdW5maW5pc2hlZCA8PSAwOgogICAgICAgICAgICAgICAgIGlmIHVuZmluaXNoZWQgPCAwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0YXNrX2RvbmUoKSBjYWxsZWQgdG9vIG1hbnkgdGltZXMnKQogICAgICAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUubm90aWZ5X2FsbCgpCiAgICAgICAgICAgICBzZWxmLnVuZmluaXNoZWRfdGFza3MgPSB1bmZpbmlzaGVkCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLnJlbGVhc2UoKQogCiAgICAgZGVmIGpvaW4oc2VsZik6Ci0gICAgICAgICIiIkJsb2NrcyB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIFF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KKyAgICAgICAgJycnQmxvY2tzIHVudGlsIGFsbCBpdGVtcyBpbiB0aGUgUXVldWUgaGF2ZSBiZWVuIGdvdHRlbiBhbmQgcHJvY2Vzc2VkLgogCiAgICAgICAgIFRoZSBjb3VudCBvZiB1bmZpbmlzaGVkIHRhc2tzIGdvZXMgdXAgd2hlbmV2ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byB0aGUKICAgICAgICAgcXVldWUuIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciB0aHJlYWQgY2FsbHMgdGFza19kb25lKCkKICAgICAgICAgdG8gaW5kaWNhdGUgdGhlIGl0ZW0gd2FzIHJldHJpZXZlZCBhbmQgYWxsIHdvcmsgb24gaXQgaXMgY29tcGxldGUuCiAKICAgICAgICAgV2hlbiB0aGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBkcm9wcyB0byB6ZXJvLCBqb2luKCkgdW5ibG9ja3MuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgICcnJworICAgICAgICB3aXRoIHNlbGYuYWxsX3Rhc2tzX2RvbmU6CiAgICAgICAgICAgICB3aGlsZSBzZWxmLnVuZmluaXNoZWRfdGFza3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS53YWl0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUucmVsZWFzZSgpCiAKICAgICBkZWYgcXNpemUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgYXBwcm94aW1hdGUgc2l6ZSBvZiB0aGUgcXVldWUgKG5vdCByZWxpYWJsZSEpLiIiIgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICBuID0gc2VsZi5fcXNpemUoKQotICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQotICAgICAgICByZXR1cm4gbgorICAgICAgICAnJydSZXR1cm4gdGhlIGFwcHJveGltYXRlIHNpemUgb2YgdGhlIHF1ZXVlIChub3QgcmVsaWFibGUhKS4nJycKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3FzaXplKCkKIAogICAgIGRlZiBlbXB0eShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgorICAgICAgICAnJydSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZW1wdHksIEZhbHNlIG90aGVyd2lzZSAobm90IHJlbGlhYmxlISkuCiAKICAgICAgICAgVGhpcyBtZXRob2QgaXMgbGlrZWx5IHRvIGJlIHJlbW92ZWQgYXQgc29tZSBwb2ludC4gIFVzZSBxc2l6ZSgpID09IDAKICAgICAgICAgYXMgYSBkaXJlY3Qgc3Vic3RpdHV0ZSwgYnV0IGJlIGF3YXJlIHRoYXQgZWl0aGVyIGFwcHJvYWNoIHJpc2tzIGEgcmFjZQpAQCAtMTAwLDI5ICsxMDAsMjMgQEAKIAogICAgICAgICBUbyBjcmVhdGUgY29kZSB0aGF0IG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBxdWV1ZWQgdGFza3MgdG8gYmUKICAgICAgICAgY29tcGxldGVkLCB0aGUgcHJlZmVycmVkIHRlY2huaXF1ZSBpcyB0byB1c2UgdGhlIGpvaW4oKSBtZXRob2QuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIG4gPSBub3Qgc2VsZi5fcXNpemUoKQotICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQotICAgICAgICByZXR1cm4gbgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xc2l6ZSgpCiAKICAgICBkZWYgZnVsbChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGZ1bGwsIEZhbHNlIG90aGVyd2lzZSAobm90IHJlbGlhYmxlISkuCisgICAgICAgICcnJ1JldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGxpa2VseSB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQuICBVc2UgcXNpemUoKSA+PSBuCiAgICAgICAgIGFzIGEgZGlyZWN0IHN1YnN0aXR1dGUsIGJ1dCBiZSBhd2FyZSB0aGF0IGVpdGhlciBhcHByb2FjaCByaXNrcyBhIHJhY2UKICAgICAgICAgY29uZGl0aW9uIHdoZXJlIGEgcXVldWUgY2FuIHNocmluayBiZWZvcmUgdGhlIHJlc3VsdCBvZiBmdWxsKCkgb3IKICAgICAgICAgcXNpemUoKSBjYW4gYmUgdXNlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgbiA9IDAgPCBzZWxmLm1heHNpemUgPD0gc2VsZi5fcXNpemUoKQotICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQotICAgICAgICByZXR1cm4gbgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgcmV0dXJuIDAgPCBzZWxmLm1heHNpemUgPD0gc2VsZi5fcXNpemUoKQogCiAgICAgZGVmIHB1dChzZWxmLCBpdGVtLCBibG9jaz1UcnVlLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICAiIiJQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZS4KKyAgICAgICAgJycnUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUuCiAKICAgICAgICAgSWYgb3B0aW9uYWwgYXJncyAnYmxvY2snIGlzIHRydWUgYW5kICd0aW1lb3V0JyBpcyBOb25lICh0aGUgZGVmYXVsdCksCiAgICAgICAgIGJsb2NrIGlmIG5lY2Vzc2FyeSB1bnRpbCBhIGZyZWUgc2xvdCBpcyBhdmFpbGFibGUuIElmICd0aW1lb3V0JyBpcwpAQCAtMTMxLDkgKzEyNSw4IEBACiAgICAgICAgIE90aGVyd2lzZSAoJ2Jsb2NrJyBpcyBmYWxzZSksIHB1dCBhbiBpdGVtIG9uIHRoZSBxdWV1ZSBpZiBhIGZyZWUgc2xvdAogICAgICAgICBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsIGVsc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uICgndGltZW91dCcKICAgICAgICAgaXMgaWdub3JlZCBpbiB0aGF0IGNhc2UpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5ub3RfZnVsbC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm5vdF9mdWxsOgogICAgICAgICAgICAgaWYgc2VsZi5tYXhzaXplID4gMDoKICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3FzaXplKCkgPj0gc2VsZi5tYXhzaXplOgpAQCAtMTQ0LDI4ICsxMzcsMTggQEAKICAgICAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIndGltZW91dCcgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3FzaXplKCkgPj0gc2VsZi5tYXhzaXplOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSB0aW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA8PSAwLjA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ub3RfZnVsbC53YWl0KHJlbWFpbmluZykKICAgICAgICAgICAgIHNlbGYuX3B1dChpdGVtKQogICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzICs9IDEKICAgICAgICAgICAgIHNlbGYubm90X2VtcHR5Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm5vdF9mdWxsLnJlbGVhc2UoKQotCi0gICAgZGVmIHB1dF9ub3dhaXQoc2VsZiwgaXRlbSk6Ci0gICAgICAgICIiIlB1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlIHdpdGhvdXQgYmxvY2tpbmcuCi0KLSAgICAgICAgT25seSBlbnF1ZXVlIHRoZSBpdGVtIGlmIGEgZnJlZSBzbG90IGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KLSAgICAgICAgT3RoZXJ3aXNlIHJhaXNlIHRoZSBGdWxsIGV4Y2VwdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnB1dChpdGVtLCBGYWxzZSkKIAogICAgIGRlZiBnZXQoc2VsZiwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKLSAgICAgICAgIiIiUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS4KKyAgICAgICAgJycnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS4KIAogICAgICAgICBJZiBvcHRpb25hbCBhcmdzICdibG9jaycgaXMgdHJ1ZSBhbmQgJ3RpbWVvdXQnIGlzIE5vbmUgKHRoZSBkZWZhdWx0KSwKICAgICAgICAgYmxvY2sgaWYgbmVjZXNzYXJ5IHVudGlsIGFuIGl0ZW0gaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKQEAgLTE3NCw5ICsxNTcsOCBAQAogICAgICAgICBPdGhlcndpc2UgKCdibG9jaycgaXMgZmFsc2UpLCByZXR1cm4gYW4gaXRlbSBpZiBvbmUgaXMgaW1tZWRpYXRlbHkKICAgICAgICAgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24gKCd0aW1lb3V0JyBpcyBpZ25vcmVkCiAgICAgICAgIGluIHRoYXQgY2FzZSkuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLm5vdF9lbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm5vdF9lbXB0eToKICAgICAgICAgICAgIGlmIG5vdCBibG9jazoKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcXNpemUoKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKQEAgLTE4NiwyNSArMTY4LDMxIEBACiAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid0aW1lb3V0JyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgICAgICAgICAgZW5kdGltZSA9IHRpbWUoKSArIHRpbWVvdXQKICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fcXNpemUoKToKLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIHRpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMC4wOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkud2FpdChyZW1haW5pbmcpCiAgICAgICAgICAgICBpdGVtID0gc2VsZi5fZ2V0KCkKICAgICAgICAgICAgIHNlbGYubm90X2Z1bGwubm90aWZ5KCkKICAgICAgICAgICAgIHJldHVybiBpdGVtCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm5vdF9lbXB0eS5yZWxlYXNlKCkKKworICAgIGRlZiBwdXRfbm93YWl0KHNlbGYsIGl0ZW0pOgorICAgICAgICAnJydQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgorCisgICAgICAgIE9ubHkgZW5xdWV1ZSB0aGUgaXRlbSBpZiBhIGZyZWUgc2xvdCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCisgICAgICAgIE90aGVyd2lzZSByYWlzZSB0aGUgRnVsbCBleGNlcHRpb24uCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5wdXQoaXRlbSwgYmxvY2s9RmFsc2UpCiAKICAgICBkZWYgZ2V0X25vd2FpdChzZWxmKToKLSAgICAgICAgIiIiUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgorICAgICAgICAnJydSZW1vdmUgYW5kIHJldHVybiBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlIHdpdGhvdXQgYmxvY2tpbmcuCiAKICAgICAgICAgT25seSBnZXQgYW4gaXRlbSBpZiBvbmUgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLiBPdGhlcndpc2UKICAgICAgICAgcmFpc2UgdGhlIEVtcHR5IGV4Y2VwdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmdldChGYWxzZSkKKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLmdldChibG9jaz1GYWxzZSkKIAogICAgICMgT3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyB0byBpbXBsZW1lbnQgb3RoZXIgcXVldWUgb3JnYW5pemF0aW9ucwogICAgICMgKGUuZy4gc3RhY2sgb3IgcHJpb3JpdHkgcXVldWUpLgpAQCAtMjE0LDcgKzIwMiw3IEBACiAgICAgZGVmIF9pbml0KHNlbGYsIG1heHNpemUpOgogICAgICAgICBzZWxmLnF1ZXVlID0gZGVxdWUoKQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKICAgICAjIFB1dCBhIG5ldyBpdGVtIGluIHRoZSBxdWV1ZQpAQCAtMjM1LDEzICsyMjMsMTMgQEAKICAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgIHNlbGYucXVldWUgPSBbXQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKLSAgICBkZWYgX3B1dChzZWxmLCBpdGVtLCBoZWFwcHVzaD1oZWFwcS5oZWFwcHVzaCk6CisgICAgZGVmIF9wdXQoc2VsZiwgaXRlbSk6CiAgICAgICAgIGhlYXBwdXNoKHNlbGYucXVldWUsIGl0ZW0pCiAKLSAgICBkZWYgX2dldChzZWxmLCBoZWFwcG9wPWhlYXBxLmhlYXBwb3ApOgorICAgIGRlZiBfZ2V0KHNlbGYpOgogICAgICAgICByZXR1cm4gaGVhcHBvcChzZWxmLnF1ZXVlKQogCiAKQEAgLTI1MSw3ICsyMzksNyBAQAogICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICAgc2VsZi5xdWV1ZSA9IFtdCiAKLSAgICBkZWYgX3FzaXplKHNlbGYsIGxlbj1sZW4pOgorICAgIGRlZiBfcXNpemUoc2VsZik6CiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5xdWV1ZSkKIAogICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0pOgpkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggOWI2MTIwOC4uNjM4OGYyOSAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC00MSw3ICs0MSw3IEBACiBmcm9tIG1hdGggaW1wb3J0IGxvZyBhcyBfbG9nLCBleHAgYXMgX2V4cCwgcGkgYXMgX3BpLCBlIGFzIF9lLCBjZWlsIGFzIF9jZWlsCiBmcm9tIG1hdGggaW1wb3J0IHNxcnQgYXMgX3NxcnQsIGFjb3MgYXMgX2Fjb3MsIGNvcyBhcyBfY29zLCBzaW4gYXMgX3NpbgogZnJvbSBvcyBpbXBvcnQgdXJhbmRvbSBhcyBfdXJhbmRvbQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2V0IGFzIF9TZXQsIFNlcXVlbmNlIGFzIF9TZXF1ZW5jZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKIGZyb20gaGFzaGxpYiBpbXBvcnQgc2hhNTEyIGFzIF9zaGE1MTIKIAogX19hbGxfXyA9IFsiUmFuZG9tIiwic2VlZCIsInJhbmRvbSIsInVuaWZvcm0iLCJyYW5kaW50IiwiY2hvaWNlIiwic2FtcGxlIiwKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCA4NWM1YTU3Li45YWU1MTc0IDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0yMTUsNyArMjE1LDcgQEAKIAogZGVmIHB1cmdlKCk6CiAgICAgIkNsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGVzIgotICAgIF9jb21waWxlX3R5cGVkLmNhY2hlX2NsZWFyKCkKKyAgICBfY29tcGlsZS5jYWNoZV9jbGVhcigpCiAgICAgX2NvbXBpbGVfcmVwbC5jYWNoZV9jbGVhcigpCiAKIGRlZiB0ZW1wbGF0ZShwYXR0ZXJuLCBmbGFncz0wKToKQEAgLTIyMywxMiArMjIzLDE0IEBACiAgICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzfFQpCiAKIF9hbHBoYW51bV9zdHIgPSBmcm96ZW5zZXQoCi0gICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5MCIpCisgICAgIl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQogX2FscGhhbnVtX2J5dGVzID0gZnJvemVuc2V0KAotICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKKyAgICBiIl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQogCiBkZWYgZXNjYXBlKHBhdHRlcm4pOgotICAgICJFc2NhcGUgYWxsIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBpbiBwYXR0ZXJuLiIKKyAgICAiIiIKKyAgICBFc2NhcGUgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHBhdHRlcm4gZXhjZXB0IEFTQ0lJIGxldHRlcnMsIG51bWJlcnMgYW5kICdfJy4KKyAgICAiIiIKICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIHN0cik6CiAgICAgICAgIGFscGhhbnVtID0gX2FscGhhbnVtX3N0cgogICAgICAgICBzID0gbGlzdChwYXR0ZXJuKQpAQCAtMjU5LDExICsyNjEsOCBAQAogCiBfcGF0dGVybl90eXBlID0gdHlwZShzcmVfY29tcGlsZS5jb21waWxlKCIiLCAwKSkKIAorQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT01MDAsIHR5cGVkPVRydWUpCiBkZWYgX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpOgotICAgIHJldHVybiBfY29tcGlsZV90eXBlZCh0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFncykKLQotQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT01MDApCi1kZWYgX2NvbXBpbGVfdHlwZWQodGV4dF9ieXRlc190eXBlLCBwYXR0ZXJuLCBmbGFncyk6CiAgICAgIyBpbnRlcm5hbDogY29tcGlsZSBwYXR0ZXJuCiAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBfcGF0dGVybl90eXBlKToKICAgICAgICAgaWYgZmxhZ3M6CmRpZmYgLS1naXQgYS9MaWIvcnVucHkucHkgYi9MaWIvcnVucHkucHkKaW5kZXggN2NiNDY2OC4uMzljMGU5ZiAxMDA2NDQKLS0tIGEvTGliL3J1bnB5LnB5CisrKyBiL0xpYi9ydW5weS5weQpAQCAtOSwxMyArOSwxMiBAQAogIyBXcml0dGVuIGJ5IE5pY2sgQ29naGxhbiA8bmNvZ2hsYW4gYXQgZ21haWwuY29tPgogIyAgICB0byBpbXBsZW1lbnQgUEVQIDMzOCAoRXhlY3V0aW5nIE1vZHVsZXMgYXMgU2NyaXB0cykKIAorCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5ICMgaW1wb3J0bGliIGZpcnN0IHNvIHdlIGNhbiB0ZXN0ICMxNTM4NiB2aWEgLW0KIGltcG9ydCBpbXAKLWZyb20gcGtndXRpbCBpbXBvcnQgcmVhZF9jb2RlCi10cnk6Ci0gICAgZnJvbSBpbXAgaW1wb3J0IGdldF9sb2FkZXIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHBrZ3V0aWwgaW1wb3J0IGdldF9sb2FkZXIKK2Zyb20gcGtndXRpbCBpbXBvcnQgcmVhZF9jb2RlLCBnZXRfbG9hZGVyLCBnZXRfaW1wb3J0ZXIKIAogX19hbGxfXyA9IFsKICAgICAicnVuX21vZHVsZSIsICJydW5fcGF0aCIsCkBAIC05NSw3ICs5NCw3IEBACiAgICAgZm9yIGF0dHIgaW4gKCJnZXRfZmlsZW5hbWUiLCAiX2dldF9maWxlbmFtZSIpOgogICAgICAgICBtZXRoID0gZ2V0YXR0cihsb2FkZXIsIGF0dHIsIE5vbmUpCiAgICAgICAgIGlmIG1ldGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbWV0aChtb2RfbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgobWV0aChtb2RfbmFtZSkpCiAgICAgcmV0dXJuIE5vbmUKIAogIyBIZWxwZXIgdG8gZ2V0IHRoZSBsb2FkZXIsIGNvZGUgYW5kIGZpbGVuYW1lIGZvciBhIG1vZHVsZQpAQCAtMTgxLDQ3ICsxODAsMjMgQEAKIGRlZiBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKToKICAgICAjIEhlbHBlciB0aGF0IGdpdmVzIGEgbmljZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGF0dGVtcHRpbmcgdG8KICAgICAjIGV4ZWN1dGUgYSB6aXBmaWxlIG9yIGRpcmVjdG9yeSBieSBpbnZva2luZyBfX21haW5fXy5weQorICAgICMgQWxzbyBtb3ZlcyB0aGUgc3RhbmRhcmQgX19tYWluX18gb3V0IG9mIHRoZSB3YXkgc28gdGhhdCB0aGUKKyAgICAjIHByZWV4aXN0aW5nIF9fbG9hZGVyX18gZW50cnkgZG9lc24ndCBjYXVzZSBpc3N1ZXMKICAgICBtYWluX25hbWUgPSAiX19tYWluX18iCisgICAgc2F2ZWRfbWFpbiA9IHN5cy5tb2R1bGVzW21haW5fbmFtZV0KKyAgICBkZWwgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIF9nZXRfbW9kdWxlX2RldGFpbHMobWFpbl9uYW1lKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CiAgICAgICAgIGlmIG1haW5fbmFtZSBpbiBzdHIoZXhjKToKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJjYW4ndCBmaW5kICVyIG1vZHVsZSBpbiAlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5fbmFtZSwgc3lzLnBhdGhbMF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5fbmFtZSwgc3lzLnBhdGhbMF0pKSBmcm9tIGV4YwogICAgICAgICByYWlzZQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzW21haW5fbmFtZV0gPSBzYXZlZF9tYWluCiAKIAotIyBYWFggKG5jb2dobGFuKTogUGVyaGFwcyBleHBvc2UgdGhlIEMgQVBJIGZ1bmN0aW9uCi0jIGFzIGltcC5nZXRfaW1wb3J0ZXIgaW5zdGVhZCBvZiByZWltcGxlbWVudGluZyBpdCBpbiBQeXRob24/Ci1kZWYgX2dldF9pbXBvcnRlcihwYXRoX25hbWUpOgotICAgICIiIlB5dGhvbiB2ZXJzaW9uIG9mIFB5SW1wb3J0X0dldEltcG9ydGVyIEMgQVBJIGZ1bmN0aW9uIiIiCi0gICAgY2FjaGUgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0ZXIgPSBjYWNoZVtwYXRoX25hbWVdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAjIE5vdCB5ZXQgY2FjaGVkLiBGbGFnIGFzIHVzaW5nIHRoZQotICAgICAgICAjIHN0YW5kYXJkIG1hY2hpbmVyeSB1bnRpbCB3ZSBmaW5pc2gKLSAgICAgICAgIyBjaGVja2luZyB0aGUgaG9va3MKLSAgICAgICAgY2FjaGVbcGF0aF9uYW1lXSA9IE5vbmUKLSAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBob29rKHBhdGhfbmFtZSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBjaGVjayBsb29rcyBhIGJpdCBvZGQuIFRoZSB0cmljayBpcyB0aGF0Ci0gICAgICAgICAgICAjIE51bGxJbXBvcnRlciB0aHJvd3MgSW1wb3J0RXJyb3IgaWYgdGhlIHN1cHBsaWVkIHBhdGggaXMgYQotICAgICAgICAgICAgIyAqdmFsaWQqIGRpcmVjdG9yeSBlbnRyeSAoYW5kIGhlbmNlIGFibGUgdG8gYmUgaGFuZGxlZAotICAgICAgICAgICAgIyBieSB0aGUgc3RhbmRhcmQgaW1wb3J0IG1hY2hpbmVyeSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbXBvcnRlciA9IGltcC5OdWxsSW1wb3J0ZXIocGF0aF9uYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGNhY2hlW3BhdGhfbmFtZV0gPSBpbXBvcnRlcgotICAgIHJldHVybiBpbXBvcnRlcgotCi1kZWYgX2dldF9jb2RlX2Zyb21fZmlsZShmbmFtZSk6CitkZWYgX2dldF9jb2RlX2Zyb21fZmlsZShydW5fbmFtZSwgZm5hbWUpOgogICAgICMgQ2hlY2sgZm9yIGEgY29tcGlsZWQgZmlsZSBmaXJzdAogICAgIHdpdGggb3BlbihmbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgY29kZSA9IHJlYWRfY29kZShmKQpAQCAtMjI5LDcgKzIwNCwxMCBAQAogICAgICAgICAjIFRoYXQgZGlkbid0IHdvcmssIHNvIHRyeSBpdCBhcyBub3JtYWwgc291cmNlIGNvZGUKICAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZi5yZWFkKCksIGZuYW1lLCAnZXhlYycpCi0gICAgcmV0dXJuIGNvZGUKKyAgICAgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihydW5fbmFtZSwgZm5hbWUpCisgICAgZWxzZToKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcihydW5fbmFtZSwgZm5hbWUpCisgICAgcmV0dXJuIGNvZGUsIGxvYWRlcgogCiBkZWYgcnVuX3BhdGgocGF0aF9uYW1lLCBpbml0X2dsb2JhbHM9Tm9uZSwgcnVuX25hbWU9Tm9uZSk6CiAgICAgIiIiRXhlY3V0ZSBjb2RlIGxvY2F0ZWQgYXQgdGhlIHNwZWNpZmllZCBmaWxlc3lzdGVtIGxvY2F0aW9uCkBAIC0yNDQsMTMgKzIyMiwxMyBAQAogICAgIGlmIHJ1bl9uYW1lIGlzIE5vbmU6CiAgICAgICAgIHJ1bl9uYW1lID0gIjxydW5fcGF0aD4iCiAgICAgcGtnX25hbWUgPSBydW5fbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KLSAgICBpbXBvcnRlciA9IF9nZXRfaW1wb3J0ZXIocGF0aF9uYW1lKQotICAgIGlmIGlzaW5zdGFuY2UoaW1wb3J0ZXIsIGltcC5OdWxsSW1wb3J0ZXIpOgorICAgIGltcG9ydGVyID0gZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKKyAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCAodHlwZShOb25lKSwgaW1wLk51bGxJbXBvcnRlcikpOgogICAgICAgICAjIE5vdCBhIHZhbGlkIHN5cy5wYXRoIGVudHJ5LCBzbyBydW4gdGhlIGNvZGUgZGlyZWN0bHkKICAgICAgICAgIyBleGVjZmlsZSgpIGRvZXNuJ3QgaGVscCBhcyB3ZSB3YW50IHRvIGFsbG93IGNvbXBpbGVkIGZpbGVzCi0gICAgICAgIGNvZGUgPSBfZ2V0X2NvZGVfZnJvbV9maWxlKHBhdGhfbmFtZSkKKyAgICAgICAgY29kZSwgbW9kX2xvYWRlciA9IF9nZXRfY29kZV9mcm9tX2ZpbGUocnVuX25hbWUsIHBhdGhfbmFtZSkKICAgICAgICAgcmV0dXJuIF9ydW5fbW9kdWxlX2NvZGUoY29kZSwgaW5pdF9nbG9iYWxzLCBydW5fbmFtZSwgcGF0aF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfbmFtZT1wa2dfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX2xvYWRlciwgcGtnX25hbWUpCiAgICAgZWxzZToKICAgICAgICAgIyBJbXBvcnRlciBpcyBkZWZpbmVkIGZvciBwYXRoLCBzbyBhZGQgaXQgdG8KICAgICAgICAgIyB0aGUgc3RhcnQgb2Ygc3lzLnBhdGgKQEAgLTI2MiwxMyArMjQwLDcgQEAKICAgICAgICAgICAgICMgaGF2ZSBubyBjaG9pY2UgYW5kIHdlIGhhdmUgdG8gcmVtb3ZlIGl0IGV2ZW4gd2hpbGUgd2UgcmVhZCB0aGUKICAgICAgICAgICAgICMgY29kZS4gSWYgd2UgZG9uJ3QgZG8gdGhpcywgYSBfX2xvYWRlcl9fIGF0dHJpYnV0ZSBpbiB0aGUKICAgICAgICAgICAgICMgZXhpc3RpbmcgX19tYWluX18gbW9kdWxlIG1heSBwcmV2ZW50IGxvY2F0aW9uIG9mIHRoZSBuZXcgbW9kdWxlLgotICAgICAgICAgICAgbWFpbl9uYW1lID0gIl9fbWFpbl9fIgotICAgICAgICAgICAgc2F2ZWRfbWFpbiA9IHN5cy5tb2R1bGVzW21haW5fbmFtZV0KLSAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttYWluX25hbWVdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kX25hbWUsIGxvYWRlciwgY29kZSwgZm5hbWUgPSBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1ttYWluX25hbWVdID0gc2F2ZWRfbWFpbgorICAgICAgICAgICAgbW9kX25hbWUsIGxvYWRlciwgY29kZSwgZm5hbWUgPSBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKQogICAgICAgICAgICAgd2l0aCBfVGVtcE1vZHVsZShydW5fbmFtZSkgYXMgdGVtcF9tb2R1bGUsIFwKICAgICAgICAgICAgICAgICAgX01vZGlmaWVkQXJndjAocGF0aF9uYW1lKToKICAgICAgICAgICAgICAgICBtb2RfZ2xvYmFscyA9IHRlbXBfbW9kdWxlLm1vZHVsZS5fX2RpY3RfXwpkaWZmIC0tZ2l0IGEvTGliL3NjaGVkLnB5IGIvTGliL3NjaGVkLnB5CmluZGV4IGExMTk4OTIuLjU1NTFmNzEgMTAwNjQ0Ci0tLSBhL0xpYi9zY2hlZC5weQorKysgYi9MaWIvc2NoZWQucHkKQEAgLTI4LDEyICsyOCwyMSBAQAogIyBYWFggaW5zdGVhZCBvZiBoYXZpbmcgdG8gZGVmaW5lIGEgbW9kdWxlIG9yIGNsYXNzIGp1c3QgdG8gaG9sZAogIyBYWFggdGhlIGdsb2JhbCBzdGF0ZSBvZiB5b3VyIHBhcnRpY3VsYXIgdGltZSBhbmQgZGVsYXkgZnVuY3Rpb25zLgogCitpbXBvcnQgdGltZQogaW1wb3J0IGhlYXBxCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KIAotY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQnKSk6CitjbGFzcyBFdmVudChuYW1lZHR1cGxlKCdFdmVudCcsICd0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzJykpOgogICAgIGRlZiBfX2VxX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA9PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX25lX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSAhPSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2x0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8ICAoby50aW1lLCBvLnByaW9yaXR5KQpAQCAtNDIsMzIgKzUxLDM2IEBACiAgICAgZGVmIF9fZ2VfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID49IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAKIGNsYXNzIHNjaGVkdWxlcjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGltZWZ1bmMsIGRlbGF5ZnVuYyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGltZWZ1bmM9X3RpbWUsIGRlbGF5ZnVuYz10aW1lLnNsZWVwKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZSwgcGFzc2luZyB0aGUgdGltZSBhbmQgZGVsYXkKICAgICAgICAgZnVuY3Rpb25zIiIiCiAgICAgICAgIHNlbGYuX3F1ZXVlID0gW10KKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCiAgICAgICAgIHNlbGYudGltZWZ1bmMgPSB0aW1lZnVuYwogICAgICAgICBzZWxmLmRlbGF5ZnVuYyA9IGRlbGF5ZnVuYwogCi0gICAgZGVmIGVudGVyYWJzKHNlbGYsIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KToKKyAgICBkZWYgZW50ZXJhYnMoc2VsZiwgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9W10sIGt3YXJncz17fSk6CiAgICAgICAgICIiIkVudGVyIGEgbmV3IGV2ZW50IGluIHRoZSBxdWV1ZSBhdCBhbiBhYnNvbHV0ZSB0aW1lLgogCiAgICAgICAgIFJldHVybnMgYW4gSUQgZm9yIHRoZSBldmVudCB3aGljaCBjYW4gYmUgdXNlZCB0byByZW1vdmUgaXQsCiAgICAgICAgIGlmIG5lY2Vzc2FyeS4KIAogICAgICAgICAiIiIKLSAgICAgICAgZXZlbnQgPSBFdmVudCh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKLSAgICAgICAgaGVhcHEuaGVhcHB1c2goc2VsZi5fcXVldWUsIGV2ZW50KQotICAgICAgICByZXR1cm4gZXZlbnQgIyBUaGUgSUQKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgZXZlbnQgPSBFdmVudCh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKQorICAgICAgICAgICAgaGVhcHEuaGVhcHB1c2goc2VsZi5fcXVldWUsIGV2ZW50KQorICAgICAgICAgICAgcmV0dXJuIGV2ZW50ICMgVGhlIElECiAKLSAgICBkZWYgZW50ZXIoc2VsZiwgZGVsYXksIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KToKKyAgICBkZWYgZW50ZXIoc2VsZiwgZGVsYXksIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50PVtdLCBrd2FyZ3M9e30pOgogICAgICAgICAiIiJBIHZhcmlhbnQgdGhhdCBzcGVjaWZpZXMgdGhlIHRpbWUgYXMgYSByZWxhdGl2ZSB0aW1lLgogCiAgICAgICAgIFRoaXMgaXMgYWN0dWFsbHkgdGhlIG1vcmUgY29tbW9ubHkgdXNlZCBpbnRlcmZhY2UuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHRpbWUgPSBzZWxmLnRpbWVmdW5jKCkgKyBkZWxheQotICAgICAgICByZXR1cm4gc2VsZi5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgdGltZSA9IHNlbGYudGltZWZ1bmMoKSArIGRlbGF5CisgICAgICAgICAgICByZXR1cm4gc2VsZi5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKQogCiAgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudCk6CiAgICAgICAgICIiIlJlbW92ZSBhbiBldmVudCBmcm9tIHRoZSBxdWV1ZS4KQEAgLTc2LDE1ICs4OSwyMCBAQAogICAgICAgICBJZiB0aGUgZXZlbnQgaXMgbm90IGluIHRoZSBxdWV1ZSwgdGhpcyByYWlzZXMgVmFsdWVFcnJvci4KIAogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcXVldWUucmVtb3ZlKGV2ZW50KQotICAgICAgICBoZWFwcS5oZWFwaWZ5KHNlbGYuX3F1ZXVlKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9xdWV1ZS5yZW1vdmUoZXZlbnQpCisgICAgICAgICAgICBoZWFwcS5oZWFwaWZ5KHNlbGYuX3F1ZXVlKQogCiAgICAgZGVmIGVtcHR5KHNlbGYpOgogICAgICAgICAiIiJDaGVjayB3aGV0aGVyIHRoZSBxdWV1ZSBpcyBlbXB0eS4iIiIKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xdWV1ZQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gbm90IHNlbGYuX3F1ZXVlCiAKLSAgICBkZWYgcnVuKHNlbGYpOgorICAgIGRlZiBydW4oc2VsZiwgYmxvY2tpbmc9VHJ1ZSk6CiAgICAgICAgICIiIkV4ZWN1dGUgZXZlbnRzIHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAgICAgICAgSWYgYmxvY2tpbmcgaXMgRmFsc2UgZXhlY3V0ZXMgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvCisgICAgICAgIGV4cGlyZSBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybiB0aGUgZGVhZGxpbmUgb2YgdGhlCisgICAgICAgIG5leHQgc2NoZWR1bGVkIGNhbGwgaW4gdGhlIHNjaGVkdWxlci4KIAogICAgICAgICBXaGVuIHRoZXJlIGlzIGEgcG9zaXRpdmUgZGVsYXkgdW50aWwgdGhlIGZpcnN0IGV2ZW50LCB0aGUKICAgICAgICAgZGVsYXkgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB0aGUgZXZlbnQgaXMgbGVmdCBpbiB0aGUgcXVldWU7CkBAIC0xMDYsMjQgKzEyNCwyNyBAQAogICAgICAgICAiIiIKICAgICAgICAgIyBsb2NhbGl6ZSB2YXJpYWJsZSBhY2Nlc3MgdG8gbWluaW1pemUgb3ZlcmhlYWQKICAgICAgICAgIyBhbmQgdG8gaW1wcm92ZSB0aHJlYWQgc2FmZXR5Ci0gICAgICAgIHEgPSBzZWxmLl9xdWV1ZQotICAgICAgICBkZWxheWZ1bmMgPSBzZWxmLmRlbGF5ZnVuYwotICAgICAgICB0aW1lZnVuYyA9IHNlbGYudGltZWZ1bmMKLSAgICAgICAgcG9wID0gaGVhcHEuaGVhcHBvcAotICAgICAgICB3aGlsZSBxOgotICAgICAgICAgICAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQgPSBjaGVja2VkX2V2ZW50ID0gcVswXQotICAgICAgICAgICAgbm93ID0gdGltZWZ1bmMoKQotICAgICAgICAgICAgaWYgbm93IDwgdGltZToKLSAgICAgICAgICAgICAgICBkZWxheWZ1bmModGltZSAtIG5vdykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBwb3AocSkKLSAgICAgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBldmVudCB3YXMgbm90IHJlbW92ZWQgb3IgYWx0ZXJlZAotICAgICAgICAgICAgICAgICMgYnkgYW5vdGhlciB0aHJlYWQgYWZ0ZXIgd2UgbGFzdCBsb29rZWQgYXQgcVswXS4KLSAgICAgICAgICAgICAgICBpZiBldmVudCBpcyBjaGVja2VkX2V2ZW50OgotICAgICAgICAgICAgICAgICAgICBhY3Rpb24oKmFyZ3VtZW50KQotICAgICAgICAgICAgICAgICAgICBkZWxheWZ1bmMoMCkgICAjIExldCBvdGhlciB0aHJlYWRzIHJ1bgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBxID0gc2VsZi5fcXVldWUKKyAgICAgICAgICAgIGRlbGF5ZnVuYyA9IHNlbGYuZGVsYXlmdW5jCisgICAgICAgICAgICB0aW1lZnVuYyA9IHNlbGYudGltZWZ1bmMKKyAgICAgICAgICAgIHBvcCA9IGhlYXBxLmhlYXBwb3AKKyAgICAgICAgICAgIHdoaWxlIHE6CisgICAgICAgICAgICAgICAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncyA9IGNoZWNrZWRfZXZlbnQgPSBxWzBdCisgICAgICAgICAgICAgICAgbm93ID0gdGltZWZ1bmMoKQorICAgICAgICAgICAgICAgIGlmIG5vdyA8IHRpbWU6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBibG9ja2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aW1lIC0gbm93CisgICAgICAgICAgICAgICAgICAgIGRlbGF5ZnVuYyh0aW1lIC0gbm93KQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhlYXBxLmhlYXBwdXNoKHEsIGV2ZW50KQorICAgICAgICAgICAgICAgICAgICBldmVudCA9IHBvcChxKQorICAgICAgICAgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBldmVudCB3YXMgbm90IHJlbW92ZWQgb3IgYWx0ZXJlZAorICAgICAgICAgICAgICAgICAgICAjIGJ5IGFub3RoZXIgdGhyZWFkIGFmdGVyIHdlIGxhc3QgbG9va2VkIGF0IHFbMF0uCisgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50IGlzIGNoZWNrZWRfZXZlbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5ZnVuYygwKSAgICMgTGV0IG90aGVyIHRocmVhZHMgcnVuCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFwcS5oZWFwcHVzaChxLCBldmVudCkKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBxdWV1ZShzZWxmKToKQEAgLTEzNiw1ICsxNTcsNiBAQAogICAgICAgICAjIFVzZSBoZWFwcSB0byBzb3J0IHRoZSBxdWV1ZSByYXRoZXIgdGhhbiB1c2luZyAnc29ydGVkKHNlbGYuX3F1ZXVlKScuCiAgICAgICAgICMgV2l0aCBoZWFwcSwgdHdvIGV2ZW50cyBzY2hlZHVsZWQgYXQgdGhlIHNhbWUgdGltZSB3aWxsIHNob3cgaW4KICAgICAgICAgIyB0aGUgYWN0dWFsIG9yZGVyIHRoZXkgd291bGQgYmUgcmV0cmlldmVkLgotICAgICAgICBldmVudHMgPSBzZWxmLl9xdWV1ZVs6XQotICAgICAgICByZXR1cm4gbWFwKGhlYXBxLmhlYXBwb3AsIFtldmVudHNdKmxlbihldmVudHMpKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBldmVudHMgPSBzZWxmLl9xdWV1ZVs6XQorICAgICAgICAgICAgcmV0dXJuIG1hcChoZWFwcS5oZWFwcG9wLCBbZXZlbnRzXSpsZW4oZXZlbnRzKSkKZGlmZiAtLWdpdCBhL0xpYi9zaGxleC5weSBiL0xpYi9zaGxleC5weQppbmRleCAzZWRkM2RiLi42OWYzYjQ1IDEwMDY0NAotLS0gYS9MaWIvc2hsZXgucHkKKysrIGIvTGliL3NobGV4LnB5CkBAIC02LDEzICs2LDE0IEBACiAjIFBvc2l4IGNvbXBsaWFuY2UsIHNwbGl0KCksIHN0cmluZyBhcmd1bWVudHMsIGFuZAogIyBpdGVyYXRvciBpbnRlcmZhY2UgYnkgR3VzdGF2byBOaWVtZXllciwgQXByaWwgMjAwMy4KIAotaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCi1fX2FsbF9fID0gWyJzaGxleCIsICJzcGxpdCJdCitfX2FsbF9fID0gWyJzaGxleCIsICJzcGxpdCIsICJxdW90ZSJdCiAKIGNsYXNzIHNobGV4OgogICAgICJBIGxleGljYWwgYW5hbHl6ZXIgY2xhc3MgZm9yIHNpbXBsZSBzaGVsbC1saWtlIHN5bnRheGVzLiIKQEAgLTI3NCw2ICsyNzUsMjEgQEAKICAgICAgICAgbGV4LmNvbW1lbnRlcnMgPSAnJwogICAgIHJldHVybiBsaXN0KGxleCkKIAorCitfZmluZF91bnNhZmUgPSByZS5jb21waWxlKHInW15cd0AlKz06LC4vLV0nLCByZS5BU0NJSSkuc2VhcmNoCisKK2RlZiBxdW90ZShzKToKKyAgICAiIiJSZXR1cm4gYSBzaGVsbC1lc2NhcGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyAqcyouIiIiCisgICAgaWYgbm90IHM6CisgICAgICAgIHJldHVybiAiJyciCisgICAgaWYgX2ZpbmRfdW5zYWZlKHMpIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBzCisKKyAgICAjIHVzZSBzaW5nbGUgcXVvdGVzLCBhbmQgcHV0IHNpbmdsZSBxdW90ZXMgaW50byBkb3VibGUgcXVvdGVzCisgICAgIyB0aGUgc3RyaW5nICQnYiBpcyB0aGVuIHF1b3RlZCBhcyAnJCciJyInYicKKyAgICByZXR1cm4gIiciICsgcy5yZXBsYWNlKCInIiwgIidcIidcIiciKSArICInIgorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgogICAgICAgICBsZXhlciA9IHNobGV4KCkKZGlmZiAtLWdpdCBhL0xpYi9zaHV0aWwucHkgYi9MaWIvc2h1dGlsLnB5CmluZGV4IGVmMjlhZTIuLjVkYzMxMWUgMTAwNjQ0Ci0tLSBhL0xpYi9zaHV0aWwucHkKKysrIGIvTGliL3NodXRpbC5weQpAQCAtMTUsNiArMTUsNyBAQAogCiB0cnk6CiAgICAgaW1wb3J0IGJ6MgorICAgIGRlbCBiejIKICAgICBfQloyX1NVUFBPUlRFRCA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfQloyX1NVUFBPUlRFRCA9IEZhbHNlCkBAIC0zNCw3ICszNSw5IEBACiAgICAgICAgICAgICJFeGVjRXJyb3IiLCAibWFrZV9hcmNoaXZlIiwgImdldF9hcmNoaXZlX2Zvcm1hdHMiLAogICAgICAgICAgICAicmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQiLCAidW5yZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdCIsCiAgICAgICAgICAgICJnZXRfdW5wYWNrX2Zvcm1hdHMiLCAicmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCIsCi0gICAgICAgICAgICJ1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQiLCAidW5wYWNrX2FyY2hpdmUiLCAiaWdub3JlX3BhdHRlcm5zIl0KKyAgICAgICAgICAgInVucmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCIsICJ1bnBhY2tfYXJjaGl2ZSIsCisgICAgICAgICAgICJpZ25vcmVfcGF0dGVybnMiLCAiY2hvd24iLCAid2hpY2giXQorICAgICAgICAgICAjIGRpc2tfdXNhZ2UgaXMgYWRkZWQgbGF0ZXIsIGlmIGF2YWlsYWJsZSBvbiB0aGUgcGxhdGZvcm0KIAogY2xhc3MgRXJyb3IoRW52aXJvbm1lbnRFcnJvcik6CiAgICAgcGFzcwpAQCAtNzksOCArODIsMTMgQEAKICAgICByZXR1cm4gKG9zLnBhdGgubm9ybWNhc2Uob3MucGF0aC5hYnNwYXRoKHNyYykpID09CiAgICAgICAgICAgICBvcy5wYXRoLm5vcm1jYXNlKG9zLnBhdGguYWJzcGF0aChkc3QpKSkKIAotZGVmIGNvcHlmaWxlKHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGRhdGEgZnJvbSBzcmMgdG8gZHN0IiIiCitkZWYgY29weWZpbGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGRhdGEgZnJvbSBzcmMgdG8gZHN0LgorCisgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIG5vdCBzZXQgYW5kIHNyYyBpcyBhIHN5bWJvbGljIGxpbmssIGEgbmV3CisgICAgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlIGl0IHBvaW50cyB0by4KKworICAgICIiIgogICAgIGlmIF9zYW1lZmlsZShzcmMsIGRzdCk6CiAgICAgICAgIHJhaXNlIEVycm9yKCJgJXNgIGFuZCBgJXNgIGFyZSB0aGUgc2FtZSBmaWxlIiAlIChzcmMsIGRzdCkpCiAKQEAgLTk1LDU2ICsxMDMsMTQwIEBACiAgICAgICAgICAgICBpZiBzdGF0LlNfSVNGSUZPKHN0LnN0X21vZGUpOgogICAgICAgICAgICAgICAgIHJhaXNlIFNwZWNpYWxGaWxlRXJyb3IoImAlc2AgaXMgYSBuYW1lZCBwaXBlIiAlIGZuKQogCi0gICAgd2l0aCBvcGVuKHNyYywgJ3JiJykgYXMgZnNyYzoKLSAgICAgICAgd2l0aCBvcGVuKGRzdCwgJ3diJykgYXMgZmRzdDoKLSAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZzcmMsIGZkc3QpCisgICAgaWYgbm90IGZvbGxvd19zeW1saW5rcyBhbmQgb3MucGF0aC5pc2xpbmsoc3JjKToKKyAgICAgICAgb3Muc3ltbGluayhvcy5yZWFkbGluayhzcmMpLCBkc3QpCisgICAgZWxzZToKKyAgICAgICAgd2l0aCBvcGVuKHNyYywgJ3JiJykgYXMgZnNyYzoKKyAgICAgICAgICAgIHdpdGggb3Blbihkc3QsICd3YicpIGFzIGZkc3Q6CisgICAgICAgICAgICAgICAgY29weWZpbGVvYmooZnNyYywgZmRzdCkKKyAgICByZXR1cm4gZHN0CiAKLWRlZiBjb3B5bW9kZShzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBtb2RlIGJpdHMgZnJvbSBzcmMgdG8gZHN0IiIiCi0gICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6Ci0gICAgICAgIHN0ID0gb3Muc3RhdChzcmMpCi0gICAgICAgIG1vZGUgPSBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkKLSAgICAgICAgb3MuY2htb2QoZHN0LCBtb2RlKQorZGVmIGNvcHltb2RlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBtb2RlIGJpdHMgZnJvbSBzcmMgdG8gZHN0LgogCi1kZWYgY29weXN0YXQoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgYWxsIHN0YXQgaW5mbyAobW9kZSBiaXRzLCBhdGltZSwgbXRpbWUsIGZsYWdzKSBmcm9tIHNyYyB0byBkc3QiIiIKLSAgICBzdCA9IG9zLnN0YXQoc3JjKQorICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBub3Qgc2V0LCBzeW1saW5rcyBhcmVuJ3QgZm9sbG93ZWQgaWYgYW5kIG9ubHkKKyAgICBpZiBib3RoIGBzcmNgIGFuZCBgZHN0YCBhcmUgc3ltbGlua3MuICBJZiBgbGNobW9kYCBpc24ndCBhdmFpbGFibGUKKyAgICAoZS5nLiBMaW51eCkgdGhpcyBtZXRob2QgZG9lcyBub3RoaW5nLgorCisgICAgIiIiCisgICAgaWYgbm90IGZvbGxvd19zeW1saW5rcyBhbmQgb3MucGF0aC5pc2xpbmsoc3JjKSBhbmQgb3MucGF0aC5pc2xpbmsoZHN0KToKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc3RhdF9mdW5jLCBjaG1vZF9mdW5jID0gb3MubHN0YXQsIG9zLmxjaG1vZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgZWxpZiBoYXNhdHRyKG9zLCAnY2htb2QnKToKKyAgICAgICAgc3RhdF9mdW5jLCBjaG1vZF9mdW5jID0gb3Muc3RhdCwgb3MuY2htb2QKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4KKworICAgIHN0ID0gc3RhdF9mdW5jKHNyYykKKyAgICBjaG1vZF9mdW5jKGRzdCwgc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpKQorCitpZiBoYXNhdHRyKG9zLCAnbGlzdHhhdHRyJyk6CisgICAgZGVmIF9jb3B5eGF0dHIoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAgICAgIiIiQ29weSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZXMgZnJvbSBgc3JjYCB0byBgZHN0YC4KKworICAgICAgICBPdmVyd3JpdGUgZXhpc3RpbmcgYXR0cmlidXRlcy4KKworICAgICAgICBJZiBgZm9sbG93X3N5bWxpbmtzYCBpcyBmYWxzZSwgc3ltbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQuCisKKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIG5hbWUgaW4gb3MubGlzdHhhdHRyKHNyYywgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBvcy5nZXR4YXR0cihzcmMsIG5hbWUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZHN0LCBuYW1lLCB2YWx1ZSwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBub3QgaW4gKGVycm5vLkVQRVJNLCBlcnJuby5FTk9UU1VQLCBlcnJuby5FTk9EQVRBKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKK2Vsc2U6CisgICAgZGVmIF9jb3B5eGF0dHIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcGFzcworCitkZWYgY29weXN0YXQoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGFsbCBzdGF0IGluZm8gKG1vZGUgYml0cywgYXRpbWUsIG10aW1lLCBmbGFncykgZnJvbSBzcmMgdG8gZHN0LgorCisgICAgSWYgdGhlIG9wdGlvbmFsIGZsYWcgYGZvbGxvd19zeW1saW5rc2AgaXMgbm90IHNldCwgc3ltbGlua3MgYXJlbid0IGZvbGxvd2VkIGlmIGFuZAorICAgIG9ubHkgaWYgYm90aCBgc3JjYCBhbmQgYGRzdGAgYXJlIHN5bWxpbmtzLgorCisgICAgIiIiCisgICAgZGVmIF9ub3AoKmFyZ3MsIG5zPU5vbmUsIGZvbGxvd19zeW1saW5rcz1Ob25lKToKKyAgICAgICAgcGFzcworCisgICAgIyBmb2xsb3cgc3ltbGlua3MgKGFrYSBkb24ndCBub3QgZm9sbG93IHN5bWxpbmtzKQorICAgIGZvbGxvdyA9IGZvbGxvd19zeW1saW5rcyBvciBub3QgKG9zLnBhdGguaXNsaW5rKHNyYykgYW5kIG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgaWYgZm9sbG93OgorICAgICAgICAjIHVzZSB0aGUgcmVhbCBmdW5jdGlvbiBpZiBpdCBleGlzdHMKKyAgICAgICAgZGVmIGxvb2t1cChuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG9zLCBuYW1lLCBfbm9wKQorICAgIGVsc2U6CisgICAgICAgICMgdXNlIHRoZSByZWFsIGZ1bmN0aW9uIG9ubHkgaWYgaXQgZXhpc3RzCisgICAgICAgICMgKmFuZCogaXQgc3VwcG9ydHMgZm9sbG93X3N5bWxpbmtzCisgICAgICAgIGRlZiBsb29rdXAobmFtZSk6CisgICAgICAgICAgICBmbiA9IGdldGF0dHIob3MsIG5hbWUsIF9ub3ApCisgICAgICAgICAgICBpZiBmbiBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZuCisgICAgICAgICAgICByZXR1cm4gX25vcAorCisgICAgc3QgPSBsb29rdXAoInN0YXQiKShzcmMsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAgICAgbW9kZSA9IHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKQotICAgIGlmIGhhc2F0dHIob3MsICd1dGltZScpOgotICAgICAgICBvcy51dGltZShkc3QsIChzdC5zdF9hdGltZSwgc3Quc3RfbXRpbWUpKQotICAgIGlmIGhhc2F0dHIob3MsICdjaG1vZCcpOgotICAgICAgICBvcy5jaG1vZChkc3QsIG1vZGUpCi0gICAgaWYgaGFzYXR0cihvcywgJ2NoZmxhZ3MnKSBhbmQgaGFzYXR0cihzdCwgJ3N0X2ZsYWdzJyk6CisgICAgbG9va3VwKCJ1dGltZSIpKGRzdCwgbnM9KHN0LnN0X2F0aW1lX25zLCBzdC5zdF9tdGltZV9ucyksCisgICAgICAgIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCisgICAgdHJ5OgorICAgICAgICBsb29rdXAoImNobW9kIikoZHN0LCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQorICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAjIGlmIHdlIGdvdCBhIE5vdEltcGxlbWVudGVkRXJyb3IsIGl0J3MgYmVjYXVzZQorICAgICAgICAjICAgKiBmb2xsb3dfc3ltbGlua3M9RmFsc2UsCisgICAgICAgICMgICAqIGxjaG93bigpIGlzIHVuYXZhaWxhYmxlLCBhbmQKKyAgICAgICAgIyAgICogZWl0aGVyCisgICAgICAgICMgICAgICAgKiBmY2hvd25hdCgpIGlzIHVudmFpbGFibGUgb3IKKyAgICAgICAgIyAgICAgICAqIGZjaG93bmF0KCkgZG9lc24ndCBpbXBsZW1lbnQgQVRfU1lNTElOS19OT0ZPTExPVy4KKyAgICAgICAgIyAgICAgICAgIChpdCByZXR1cm5lZCBFTk9TVVAuKQorICAgICAgICAjIHRoZXJlZm9yZSB3ZSdyZSBvdXQgb2Ygb3B0aW9ucy0td2Ugc2ltcGx5IGNhbm5vdCBjaG93biB0aGUKKyAgICAgICAgIyBzeW1saW5rLiAgZ2l2ZSB1cCwgc3VwcHJlc3MgdGhlIGVycm9yLgorICAgICAgICAjICh3aGljaCBpcyB3aGF0IHNodXRpbCBhbHdheXMgZGlkIGluIHRoaXMgY2lyY3Vtc3RhbmNlLikKKyAgICAgICAgcGFzcworICAgIGlmIGhhc2F0dHIoc3QsICdzdF9mbGFncycpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5jaGZsYWdzKGRzdCwgc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICBsb29rdXAoImNoZmxhZ3MiKShkc3QsIHN0LnN0X2ZsYWdzLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6CiAgICAgICAgICAgICBmb3IgZXJyIGluICdFT1BOT1RTVVBQJywgJ0VOT1RTVVAnOgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZXJybm8sIGVycikgYW5kIHdoeS5lcnJubyA9PSBnZXRhdHRyKGVycm5vLCBlcnIpOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZQorICAgIF9jb3B5eGF0dHIoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAKLWRlZiBjb3B5KHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGRhdGEgYW5kIG1vZGUgYml0cyAoImNwIHNyYyBkc3QiKS4KK2RlZiBjb3B5KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBkYXRhIGFuZCBtb2RlIGJpdHMgKCJjcCBzcmMgZHN0IikuIFJldHVybiB0aGUgZmlsZSdzIGRlc3RpbmF0aW9uLgogCiAgICAgVGhlIGRlc3RpbmF0aW9uIG1heSBiZSBhIGRpcmVjdG9yeS4KIAorICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBmYWxzZSwgc3ltbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQuIFRoaXMKKyAgICByZXNlbWJsZXMgR05VJ3MgImNwIC1QIHNyYyBkc3QiLgorCiAgICAgIiIiCiAgICAgaWYgb3MucGF0aC5pc2Rpcihkc3QpOgogICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oZHN0LCBvcy5wYXRoLmJhc2VuYW1lKHNyYykpCi0gICAgY29weWZpbGUoc3JjLCBkc3QpCi0gICAgY29weW1vZGUoc3JjLCBkc3QpCisgICAgY29weWZpbGUoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgY29weW1vZGUoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgcmV0dXJuIGRzdAogCi1kZWYgY29weTIoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgZGF0YSBhbmQgYWxsIHN0YXQgaW5mbyAoImNwIC1wIHNyYyBkc3QiKS4KK2RlZiBjb3B5MihzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgZGF0YSBhbmQgYWxsIHN0YXQgaW5mbyAoImNwIC1wIHNyYyBkc3QiKS4gUmV0dXJuIHRoZSBmaWxlJ3MKKyAgICBkZXN0aW5hdGlvbi4iCiAKICAgICBUaGUgZGVzdGluYXRpb24gbWF5IGJlIGEgZGlyZWN0b3J5LgogCisgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4gVGhpcworICAgIHJlc2VtYmxlcyBHTlUncyAiY3AgLVAgc3JjIGRzdCIuCisKICAgICAiIiIKICAgICBpZiBvcy5wYXRoLmlzZGlyKGRzdCk6CiAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihkc3QsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSkKLSAgICBjb3B5ZmlsZShzcmMsIGRzdCkKLSAgICBjb3B5c3RhdChzcmMsIGRzdCkKKyAgICBjb3B5ZmlsZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICBjb3B5c3RhdChzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICByZXR1cm4gZHN0CiAKIGRlZiBpZ25vcmVfcGF0dGVybnMoKnBhdHRlcm5zKToKICAgICAiIiJGdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGNvcHl0cmVlKCkgaWdub3JlIHBhcmFtZXRlci4KQEAgLTIxMSw3ICszMDMsMTEgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHNyY25hbWUpOgogICAgICAgICAgICAgICAgIGxpbmt0byA9IG9zLnJlYWRsaW5rKHNyY25hbWUpCiAgICAgICAgICAgICAgICAgaWYgc3ltbGlua3M6CisgICAgICAgICAgICAgICAgICAgICMgV2UgY2FuJ3QganVzdCBsZWF2ZSBpdCB0byBgY29weV9mdW5jdGlvbmAgYmVjYXVzZSBsZWdhY3kKKyAgICAgICAgICAgICAgICAgICAgIyBjb2RlIHdpdGggYSBjdXN0b20gYGNvcHlfZnVuY3Rpb25gIG1heSByZWx5IG9uIGNvcHl0cmVlCisgICAgICAgICAgICAgICAgICAgICMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLgogICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKGxpbmt0bywgZHN0bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgY29weXN0YXQoc3JjbmFtZSwgZHN0bmFtZSwgZm9sbG93X3N5bWxpbmtzPW5vdCBzeW1saW5rcykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIGlnbm9yZSBkYW5nbGluZyBzeW1saW5rIGlmIHRoZSBmbGFnIGlzIG9uCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaW5rdG8pIGFuZCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M6CkBAIC0yMzksMjQgKzMzNSwxMCBAQAogICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoc3JjLCBkc3QsIHN0cih3aHkpKSkKICAgICBpZiBlcnJvcnM6CiAgICAgICAgIHJhaXNlIEVycm9yKGVycm9ycykKKyAgICByZXR1cm4gZHN0CiAKLWRlZiBybXRyZWUocGF0aCwgaWdub3JlX2Vycm9ycz1GYWxzZSwgb25lcnJvcj1Ob25lKToKLSAgICAiIiJSZWN1cnNpdmVseSBkZWxldGUgYSBkaXJlY3RvcnkgdHJlZS4KLQotICAgIElmIGlnbm9yZV9lcnJvcnMgaXMgc2V0LCBlcnJvcnMgYXJlIGlnbm9yZWQ7IG90aGVyd2lzZSwgaWYgb25lcnJvcgotICAgIGlzIHNldCwgaXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGUgZXJyb3Igd2l0aCBhcmd1bWVudHMgKGZ1bmMsCi0gICAgcGF0aCwgZXhjX2luZm8pIHdoZXJlIGZ1bmMgaXMgb3MubGlzdGRpciwgb3MucmVtb3ZlLCBvciBvcy5ybWRpcjsKLSAgICBwYXRoIGlzIHRoZSBhcmd1bWVudCB0byB0aGF0IGZ1bmN0aW9uIHRoYXQgY2F1c2VkIGl0IHRvIGZhaWw7IGFuZAotICAgIGV4Y19pbmZvIGlzIGEgdHVwbGUgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkuICBJZiBpZ25vcmVfZXJyb3JzCi0gICAgaXMgZmFsc2UgYW5kIG9uZXJyb3IgaXMgTm9uZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KLQotICAgICIiIgotICAgIGlmIGlnbm9yZV9lcnJvcnM6Ci0gICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKLSAgICAgICAgICAgIHBhc3MKLSAgICBlbGlmIG9uZXJyb3IgaXMgTm9uZToKLSAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgotICAgICAgICAgICAgcmFpc2UKKyMgdmVyc2lvbiB2dWxuZXJhYmxlIHRvIHJhY2UgY29uZGl0aW9ucworZGVmIF9ybXRyZWVfdW5zYWZlKHBhdGgsIG9uZXJyb3IpOgogICAgIHRyeToKICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCk6CiAgICAgICAgICAgICAjIHN5bWxpbmtzIHRvIGRpcmVjdG9yaWVzIGFyZSBmb3JiaWRkZW4sIHNlZSBidWcgIzE2NjkKQEAgLTI2OCw3ICszNTAsNyBAQAogICAgIG5hbWVzID0gW10KICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihwYXRoKQotICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlcnI6CisgICAgZXhjZXB0IG9zLmVycm9yOgogICAgICAgICBvbmVycm9yKG9zLmxpc3RkaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQpAQCAtMjc3LDE3ICszNTksMTA5IEBACiAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKICAgICAgICAgICAgIG1vZGUgPSAwCiAgICAgICAgIGlmIHN0YXQuU19JU0RJUihtb2RlKToKLSAgICAgICAgICAgIHJtdHJlZShmdWxsbmFtZSwgaWdub3JlX2Vycm9ycywgb25lcnJvcikKKyAgICAgICAgICAgIF9ybXRyZWVfdW5zYWZlKGZ1bGxuYW1lLCBvbmVycm9yKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmdWxsbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgb25lcnJvcihvcy5yZW1vdmUsIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoZnVsbG5hbWUpCisgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgb25lcnJvcihvcy51bmxpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKICAgICB0cnk6CiAgICAgICAgIG9zLnJtZGlyKHBhdGgpCiAgICAgZXhjZXB0IG9zLmVycm9yOgogICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKIAorIyBWZXJzaW9uIHVzaW5nIGZkLWJhc2VkIEFQSXMgdG8gcHJvdGVjdCBhZ2FpbnN0IHJhY2VzCitkZWYgX3JtdHJlZV9zYWZlX2ZkKHRvcGZkLCBwYXRoLCBvbmVycm9yKToKKyAgICBuYW1lcyA9IFtdCisgICAgdHJ5OgorICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIodG9wZmQpCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBvbmVycm9yKG9zLmxpc3RkaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX3N0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgIG1vZGUgPSBvcmlnX3N0LnN0X21vZGUKKyAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgbW9kZSA9IDAKKyAgICAgICAgaWYgc3RhdC5TX0lTRElSKG1vZGUpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihuYW1lLCBvcy5PX1JET05MWSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mub3BlbiwgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguc2FtZXN0YXQob3JpZ19zdCwgb3MuZnN0YXQoZGlyZmQpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIF9ybXRyZWVfc2FmZV9mZChkaXJmZCwgZnVsbG5hbWUsIG9uZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIobmFtZSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MudW5saW5rLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisKK191c2VfZmRfZnVuY3Rpb25zID0gKHtvcy5vcGVuLCBvcy5zdGF0LCBvcy51bmxpbmssIG9zLnJtZGlyfSA8PQorICAgICAgICAgICAgICAgICAgICAgb3Muc3VwcG9ydHNfZGlyX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgb3MubGlzdGRpciBpbiBvcy5zdXBwb3J0c19mZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzKQorCitkZWYgcm10cmVlKHBhdGgsIGlnbm9yZV9lcnJvcnM9RmFsc2UsIG9uZXJyb3I9Tm9uZSk6CisgICAgIiIiUmVjdXJzaXZlbHkgZGVsZXRlIGEgZGlyZWN0b3J5IHRyZWUuCisKKyAgICBJZiBpZ25vcmVfZXJyb3JzIGlzIHNldCwgZXJyb3JzIGFyZSBpZ25vcmVkOyBvdGhlcndpc2UsIGlmIG9uZXJyb3IKKyAgICBpcyBzZXQsIGl0IGlzIGNhbGxlZCB0byBoYW5kbGUgdGhlIGVycm9yIHdpdGggYXJndW1lbnRzIChmdW5jLAorICAgIHBhdGgsIGV4Y19pbmZvKSB3aGVyZSBmdW5jIGlzIHBsYXRmb3JtIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQ7CisgICAgcGF0aCBpcyB0aGUgYXJndW1lbnQgdG8gdGhhdCBmdW5jdGlvbiB0aGF0IGNhdXNlZCBpdCB0byBmYWlsOyBhbmQKKyAgICBleGNfaW5mbyBpcyBhIHR1cGxlIHJldHVybmVkIGJ5IHN5cy5leGNfaW5mbygpLiAgSWYgaWdub3JlX2Vycm9ycworICAgIGlzIGZhbHNlIGFuZCBvbmVycm9yIGlzIE5vbmUsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBpZ25vcmVfZXJyb3JzOgorICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6CisgICAgICAgICAgICBwYXNzCisgICAgZWxpZiBvbmVycm9yIGlzIE5vbmU6CisgICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKKyAgICAgICAgICAgIHJhaXNlCisgICAgaWYgX3VzZV9mZF9mdW5jdGlvbnM6CisgICAgICAgICMgV2hpbGUgdGhlIHVuc2FmZSBybXRyZWUgd29ya3MgZmluZSBvbiBieXRlcywgdGhlIGZkIGJhc2VkIGRvZXMgbm90LgorICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgICAgIHBhdGggPSBvcy5mc2RlY29kZShwYXRoKQorICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAorICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdfc3QgPSBvcy5sc3RhdChwYXRoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgb25lcnJvcihvcy5sc3RhdCwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHBhdGgsIG9zLk9fUkRPTkxZKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgb25lcnJvcihvcy5sc3RhdCwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgKHN0YXQuU19JU0RJUihvcmlnX3N0LnN0X21vZGUpIGFuZAorICAgICAgICAgICAgICAgIG9zLnBhdGguc2FtZXN0YXQob3JpZ19zdCwgb3MuZnN0YXQoZmQpKSk6CisgICAgICAgICAgICAgICAgX3JtdHJlZV9zYWZlX2ZkKGZkLCBwYXRoLCBvbmVycm9yKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIocGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBOb3RBRGlyZWN0b3J5RXJyb3IoMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgYSBkaXJlY3Rvcnk6ICd7fSciLmZvcm1hdChwYXRoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBfcm10cmVlX3Vuc2FmZShwYXRoLCBvbmVycm9yKQorCisjIEFsbG93IGludHJvc3BlY3Rpb24gb2Ygd2hldGhlciBvciBub3QgdGhlIGhhcmRlbmluZyBhZ2FpbnN0IHN5bWxpbmsKKyMgYXR0YWNrcyBpcyBzdXBwb3J0ZWQgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0KK3JtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzID0gX3VzZV9mZF9mdW5jdGlvbnMKIAogZGVmIF9iYXNlbmFtZShwYXRoKToKICAgICAjIEEgYmFzZW5hbWUoKSB2YXJpYW50IHdoaWNoIGZpcnN0IHN0cmlwcyB0aGUgdHJhaWxpbmcgc2xhc2gsIGlmIHByZXNlbnQuCkBAIC0yOTYsNyArNDcwLDggQEAKIAogZGVmIG1vdmUoc3JjLCBkc3QpOgogICAgICIiIlJlY3Vyc2l2ZWx5IG1vdmUgYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGlzCi0gICAgc2ltaWxhciB0byB0aGUgVW5peCAibXYiIGNvbW1hbmQuCisgICAgc2ltaWxhciB0byB0aGUgVW5peCAibXYiIGNvbW1hbmQuIFJldHVybiB0aGUgZmlsZSBvciBkaXJlY3RvcnkncworICAgIGRlc3RpbmF0aW9uLgogCiAgICAgSWYgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5IG9yIGEgc3ltbGluayB0byBhIGRpcmVjdG9yeSwgdGhlIHNvdXJjZQogICAgIGlzIG1vdmVkIGluc2lkZSB0aGUgZGlyZWN0b3J5LiBUaGUgZGVzdGluYXRpb24gcGF0aCBtdXN0IG5vdCBhbHJlYWR5CkBAIC0zMDYsNyArNDgxLDEwIEBACiAgICAgb3ZlcndyaXR0ZW4gZGVwZW5kaW5nIG9uIG9zLnJlbmFtZSgpIHNlbWFudGljcy4KIAogICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiBvdXIgY3VycmVudCBmaWxlc3lzdGVtLCB0aGVuIHJlbmFtZSgpIGlzIHVzZWQuCi0gICAgT3RoZXJ3aXNlLCBzcmMgaXMgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBhbmQgdGhlbiByZW1vdmVkLgorICAgIE90aGVyd2lzZSwgc3JjIGlzIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gYW5kIHRoZW4gcmVtb3ZlZC4gU3ltbGlua3MgYXJlCisgICAgcmVjcmVhdGVkIHVuZGVyIHRoZSBuZXcgbmFtZSBpZiBvcy5yZW5hbWUoKSBmYWlscyBiZWNhdXNlIG9mIGNyb3NzCisgICAgZmlsZXN5c3RlbSByZW5hbWVzLgorCiAgICAgQSBsb3QgbW9yZSBjb3VsZCBiZSBkb25lIGhlcmUuLi4gIEEgbG9vayBhdCBhIG12LmMgc2hvd3MgYSBsb3Qgb2YKICAgICB0aGUgaXNzdWVzIHRoaXMgaW1wbGVtZW50YXRpb24gZ2xvc3NlcyBvdmVyLgogCkBAIC0zMjQsOCArNTAyLDEyIEBACiAgICAgICAgICAgICByYWlzZSBFcnJvcigiRGVzdGluYXRpb24gcGF0aCAnJXMnIGFscmVhZHkgZXhpc3RzIiAlIHJlYWxfZHN0KQogICAgIHRyeToKICAgICAgICAgb3MucmVuYW1lKHNyYywgcmVhbF9kc3QpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHNyYyk6CisgICAgICAgICAgICBsaW5rdG8gPSBvcy5yZWFkbGluayhzcmMpCisgICAgICAgICAgICBvcy5zeW1saW5rKGxpbmt0bywgcmVhbF9kc3QpCisgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoc3JjKToKICAgICAgICAgICAgIGlmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJDYW5ub3QgbW92ZSBhIGRpcmVjdG9yeSAnJXMnIGludG8gaXRzZWxmICclcycuIiAlIChzcmMsIGRzdCkpCiAgICAgICAgICAgICBjb3B5dHJlZShzcmMsIHJlYWxfZHN0LCBzeW1saW5rcz1UcnVlKQpAQCAtMzMzLDYgKzUxNSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb3B5MihzcmMsIHJlYWxfZHN0KQogICAgICAgICAgICAgb3MudW5saW5rKHNyYykKKyAgICByZXR1cm4gcmVhbF9kc3QKIAogZGVmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgogICAgIHNyYyA9IGFic3BhdGgoc3JjKQpAQCAtMzkxLDcgKzU3NCw3IEBACiAgICAgICAgIGNvbXByZXNzX2V4dFsnYnppcDInXSA9ICcuYnoyJwogCiAgICAgIyBmbGFncyBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSwgZWFjaCBlbGVtZW50IG9mIGxpc3Qgd2lsbCBiZSBhbiBhcmd1bWVudAotICAgIGlmIGNvbXByZXNzIGlzIG5vdCBOb25lIGFuZCBjb21wcmVzcyBub3QgaW4gY29tcHJlc3NfZXh0LmtleXMoKToKKyAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnLCBvciBjb21wcmVzc2lvbiBmb3JtYXQgbm90ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkIDogezB9Ii5mb3JtYXQoY29tcHJlc3MpKQogCkBAIC00OTYsNyArNjc5LDcgQEAKIF9BUkNISVZFX0ZPUk1BVFMgPSB7CiAgICAgJ2d6dGFyJzogKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2d6aXAnKV0sICJnemlwJ2VkIHRhci1maWxlIiksCiAgICAgJ3Rhcic6ICAgKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgTm9uZSldLCAidW5jb21wcmVzc2VkIHRhciBmaWxlIiksCi0gICAgJ3ppcCc6ICAgKF9tYWtlX3ppcGZpbGUsIFtdLCJaSVAgZmlsZSIpCisgICAgJ3ppcCc6ICAgKF9tYWtlX3ppcGZpbGUsIFtdLCAiWklQIGZpbGUiKQogICAgIH0KIAogaWYgX0JaMl9TVVBQT1JURUQ6CkBAIC01MjksNyArNzEyLDcgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShleHRyYV9hcmdzLCAodHVwbGUsIGxpc3QpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHRyYV9hcmdzIG5lZWRzIHRvIGJlIGEgc2VxdWVuY2UnKQogICAgIGZvciBlbGVtZW50IGluIGV4dHJhX2FyZ3M6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVsZW1lbnQsICh0dXBsZSwgbGlzdCkpIG9yIGxlbihlbGVtZW50KSAhPTIgOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbGVtZW50LCAodHVwbGUsIGxpc3QpKSBvciBsZW4oZWxlbWVudCkgIT0yOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHRyYV9hcmdzIGVsZW1lbnRzIGFyZSA6IChhcmdfbmFtZSwgdmFsdWUpJykKIAogICAgIF9BUkNISVZFX0ZPUk1BVFNbbmFtZV0gPSAoZnVuY3Rpb24sIGV4dHJhX2FyZ3MsIGRlc2NyaXB0aW9uKQpAQCAtNjgxLDcgKzg2NCw3IEBACiAgICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnLycpOgogICAgICAgICAgICAgICAgICMgZmlsZQogICAgICAgICAgICAgICAgIGRhdGEgPSB6aXAucmVhZChpbmZvLmZpbGVuYW1lKQotICAgICAgICAgICAgICAgIGYgPSBvcGVuKHRhcmdldCwnd2InKQorICAgICAgICAgICAgICAgIGYgPSBvcGVuKHRhcmdldCwgJ3diJykKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKICAgICAgICAgICAgICAgICBmaW5hbGx5OgpAQCAtNzU1LDMgKzkzOCwxNjUgQEAKICAgICAgICAgZnVuYyA9IF9VTlBBQ0tfRk9STUFUU1tmb3JtYXRdWzFdCiAgICAgICAgIGt3YXJncyA9IGRpY3QoX1VOUEFDS19GT1JNQVRTW2Zvcm1hdF1bMl0pCiAgICAgICAgIGZ1bmMoZmlsZW5hbWUsIGV4dHJhY3RfZGlyLCAqKmt3YXJncykKKworCitpZiBoYXNhdHRyKG9zLCAnc3RhdHZmcycpOgorCisgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQorICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKworICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgorCisgICAgICAgIFJldHVybmVkIHZhbHVlIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKKyAgICAgICAgJ2ZyZWUnLCB3aGljaCBhcmUgdGhlIGFtb3VudCBvZiB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisgICAgICAgICIiIgorICAgICAgICBzdCA9IG9zLnN0YXR2ZnMocGF0aCkKKyAgICAgICAgZnJlZSA9IHN0LmZfYmF2YWlsICogc3QuZl9mcnNpemUKKyAgICAgICAgdG90YWwgPSBzdC5mX2Jsb2NrcyAqIHN0LmZfZnJzaXplCisgICAgICAgIHVzZWQgPSAoc3QuZl9ibG9ja3MgLSBzdC5mX2JmcmVlKSAqIHN0LmZfZnJzaXplCisgICAgICAgIHJldHVybiBfbnR1cGxlX2Rpc2t1c2FnZSh0b3RhbCwgdXNlZCwgZnJlZSkKKworZWxpZiBvcy5uYW1lID09ICdudCc6CisKKyAgICBpbXBvcnQgbnQKKyAgICBfX2FsbF9fLmFwcGVuZCgnZGlza191c2FnZScpCisgICAgX250dXBsZV9kaXNrdXNhZ2UgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCd1c2FnZScsICd0b3RhbCB1c2VkIGZyZWUnKQorCisgICAgZGVmIGRpc2tfdXNhZ2UocGF0aCk6CisgICAgICAgICIiIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGguCisKKyAgICAgICAgUmV0dXJuZWQgdmFsdXMgaXMgYSBuYW1lZCB0dXBsZSB3aXRoIGF0dHJpYnV0ZXMgJ3RvdGFsJywgJ3VzZWQnIGFuZAorICAgICAgICAnZnJlZScsIHdoaWNoIGFyZSB0aGUgYW1vdW50IG9mIHRvdGFsLCB1c2VkIGFuZCBmcmVlIHNwYWNlLCBpbiBieXRlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHRvdGFsLCBmcmVlID0gbnQuX2dldGRpc2t1c2FnZShwYXRoKQorICAgICAgICB1c2VkID0gdG90YWwgLSBmcmVlCisgICAgICAgIHJldHVybiBfbnR1cGxlX2Rpc2t1c2FnZSh0b3RhbCwgdXNlZCwgZnJlZSkKKworCitkZWYgY2hvd24ocGF0aCwgdXNlcj1Ob25lLCBncm91cD1Ob25lKToKKyAgICAiIiJDaGFuZ2Ugb3duZXIgdXNlciBhbmQgZ3JvdXAgb2YgdGhlIGdpdmVuIHBhdGguCisKKyAgICB1c2VyIGFuZCBncm91cCBjYW4gYmUgdGhlIHVpZC9naWQgb3IgdGhlIHVzZXIvZ3JvdXAgbmFtZXMsIGFuZCBpbiB0aGF0IGNhc2UsCisgICAgdGhleSBhcmUgY29udmVydGVkIHRvIHRoZWlyIHJlc3BlY3RpdmUgdWlkL2dpZC4KKyAgICAiIiIKKworICAgIGlmIHVzZXIgaXMgTm9uZSBhbmQgZ3JvdXAgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidXNlciBhbmQvb3IgZ3JvdXAgbXVzdCBiZSBzZXQiKQorCisgICAgX3VzZXIgPSB1c2VyCisgICAgX2dyb3VwID0gZ3JvdXAKKworICAgICMgLTEgbWVhbnMgZG9uJ3QgY2hhbmdlIGl0CisgICAgaWYgdXNlciBpcyBOb25lOgorICAgICAgICBfdXNlciA9IC0xCisgICAgIyB1c2VyIGNhbiBlaXRoZXIgYmUgYW4gaW50ICh0aGUgdWlkKSBvciBhIHN0cmluZyAodGhlIHN5c3RlbSB1c2VybmFtZSkKKyAgICBlbGlmIGlzaW5zdGFuY2UodXNlciwgc3RyKToKKyAgICAgICAgX3VzZXIgPSBfZ2V0X3VpZCh1c2VyKQorICAgICAgICBpZiBfdXNlciBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IoIm5vIHN1Y2ggdXNlcjogeyFyfSIuZm9ybWF0KHVzZXIpKQorCisgICAgaWYgZ3JvdXAgaXMgTm9uZToKKyAgICAgICAgX2dyb3VwID0gLTEKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGdyb3VwLCBpbnQpOgorICAgICAgICBfZ3JvdXAgPSBfZ2V0X2dpZChncm91cCkKKyAgICAgICAgaWYgX2dyb3VwIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBMb29rdXBFcnJvcigibm8gc3VjaCBncm91cDogeyFyfSIuZm9ybWF0KGdyb3VwKSkKKworICAgIG9zLmNob3duKHBhdGgsIF91c2VyLCBfZ3JvdXApCisKK2RlZiBnZXRfdGVybWluYWxfc2l6ZShmYWxsYmFjaz0oODAsIDI0KSk6CisgICAgIiIiR2V0IHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cuCisKKyAgICBGb3IgZWFjaCBvZiB0aGUgdHdvIGRpbWVuc2lvbnMsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgQ09MVU1OUworICAgIGFuZCBMSU5FUyByZXNwZWN0aXZlbHksIGlzIGNoZWNrZWQuIElmIHRoZSB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZAorICAgIHRoZSB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGl0IGlzIHVzZWQuCisKKyAgICBXaGVuIENPTFVNTlMgb3IgTElORVMgaXMgbm90IGRlZmluZWQsIHdoaWNoIGlzIHRoZSBjb21tb24gY2FzZSwKKyAgICB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIHN5cy5fX3N0ZG91dF9fIGlzIHF1ZXJpZWQKKyAgICBieSBpbnZva2luZyBvcy5nZXRfdGVybWluYWxfc2l6ZS4KKworICAgIElmIHRoZSB0ZXJtaW5hbCBzaXplIGNhbm5vdCBiZSBzdWNjZXNzZnVsbHkgcXVlcmllZCwgZWl0aGVyIGJlY2F1c2UKKyAgICB0aGUgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCBxdWVyeWluZywgb3IgYmVjYXVzZSB3ZSBhcmUgbm90CisgICAgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIHRoZSB2YWx1ZSBnaXZlbiBpbiBmYWxsYmFjayBwYXJhbWV0ZXIKKyAgICBpcyB1c2VkLiBGYWxsYmFjayBkZWZhdWx0cyB0byAoODAsIDI0KSB3aGljaCBpcyB0aGUgZGVmYXVsdAorICAgIHNpemUgdXNlZCBieSBtYW55IHRlcm1pbmFsIGVtdWxhdG9ycy4KKworICAgIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIG5hbWVkIHR1cGxlIG9mIHR5cGUgb3MudGVybWluYWxfc2l6ZS4KKyAgICAiIiIKKyAgICAjIGNvbHVtbnMsIGxpbmVzIGFyZSB0aGUgd29ya2luZyB2YWx1ZXMKKyAgICB0cnk6CisgICAgICAgIGNvbHVtbnMgPSBpbnQob3MuZW52aXJvblsnQ09MVU1OUyddKQorICAgIGV4Y2VwdCAoS2V5RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBjb2x1bW5zID0gMAorCisgICAgdHJ5OgorICAgICAgICBsaW5lcyA9IGludChvcy5lbnZpcm9uWydMSU5FUyddKQorICAgIGV4Y2VwdCAoS2V5RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBsaW5lcyA9IDAKKworICAgICMgb25seSBxdWVyeSBpZiBuZWNlc3NhcnkKKyAgICBpZiBjb2x1bW5zIDw9IDAgb3IgbGluZXMgPD0gMDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IG9zLmdldF90ZXJtaW5hbF9zaXplKHN5cy5fX3N0ZG91dF9fLmZpbGVubygpKQorICAgICAgICBleGNlcHQgKE5hbWVFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICBzaXplID0gb3MudGVybWluYWxfc2l6ZShmYWxsYmFjaykKKyAgICAgICAgaWYgY29sdW1ucyA8PSAwOgorICAgICAgICAgICAgY29sdW1ucyA9IHNpemUuY29sdW1ucworICAgICAgICBpZiBsaW5lcyA8PSAwOgorICAgICAgICAgICAgbGluZXMgPSBzaXplLmxpbmVzCisKKyAgICByZXR1cm4gb3MudGVybWluYWxfc2l6ZSgoY29sdW1ucywgbGluZXMpKQorCitkZWYgd2hpY2goY21kLCBtb2RlPW9zLkZfT0sgfCBvcy5YX09LLCBwYXRoPU5vbmUpOgorICAgICIiIkdpdmVuIGEgY29tbWFuZCwgbW9kZSwgYW5kIGEgUEFUSCBzdHJpbmcsIHJldHVybiB0aGUgcGF0aCB3aGljaAorICAgIGNvbmZvcm1zIHRvIHRoZSBnaXZlbiBtb2RlIG9uIHRoZSBQQVRILCBvciBOb25lIGlmIHRoZXJlIGlzIG5vIHN1Y2gKKyAgICBmaWxlLgorCisgICAgYG1vZGVgIGRlZmF1bHRzIHRvIG9zLkZfT0sgfCBvcy5YX09LLiBgcGF0aGAgZGVmYXVsdHMgdG8gdGhlIHJlc3VsdAorICAgIG9mIG9zLmVudmlyb24uZ2V0KCJQQVRIIiksIG9yIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYSBjdXN0b20gc2VhcmNoCisgICAgcGF0aC4KKworICAgICIiIgorICAgICMgQ2hlY2sgdGhhdCBhIGdpdmVuIGZpbGUgY2FuIGJlIGFjY2Vzc2VkIHdpdGggdGhlIGNvcnJlY3QgbW9kZS4KKyAgICAjIEFkZGl0aW9uYWxseSBjaGVjayB0aGF0IGBmaWxlYCBpcyBub3QgYSBkaXJlY3RvcnksIGFzIG9uIFdpbmRvd3MKKyAgICAjIGRpcmVjdG9yaWVzIHBhc3MgdGhlIG9zLmFjY2VzcyBjaGVjay4KKyAgICBkZWYgX2FjY2Vzc19jaGVjayhmbiwgbW9kZSk6CisgICAgICAgIHJldHVybiAob3MucGF0aC5leGlzdHMoZm4pIGFuZCBvcy5hY2Nlc3MoZm4sIG1vZGUpCisgICAgICAgICAgICAgICAgYW5kIG5vdCBvcy5wYXRoLmlzZGlyKGZuKSkKKworICAgICMgU2hvcnQgY2lyY3VpdC4gSWYgd2UncmUgZ2l2ZW4gYSBmdWxsIHBhdGggd2hpY2ggbWF0Y2hlcyB0aGUgbW9kZQorICAgICMgYW5kIGl0IGV4aXN0cywgd2UncmUgZG9uZSBoZXJlLgorICAgIGlmIF9hY2Nlc3NfY2hlY2soY21kLCBtb2RlKToKKyAgICAgICAgcmV0dXJuIGNtZAorCisgICAgcGF0aCA9IChwYXRoIG9yIG9zLmVudmlyb24uZ2V0KCJQQVRIIiwgb3MuZGVmcGF0aCkpLnNwbGl0KG9zLnBhdGhzZXApCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgIyBUaGUgY3VycmVudCBkaXJlY3RvcnkgdGFrZXMgcHJlY2VkZW5jZSBvbiBXaW5kb3dzLgorICAgICAgICBpZiBub3Qgb3MuY3VyZGlyIGluIHBhdGg6CisgICAgICAgICAgICBwYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisKKyAgICAgICAgIyBQQVRIRVhUIGlzIG5lY2Vzc2FyeSB0byBjaGVjayBvbiBXaW5kb3dzLgorICAgICAgICBwYXRoZXh0ID0gb3MuZW52aXJvbi5nZXQoIlBBVEhFWFQiLCAiIikuc3BsaXQob3MucGF0aHNlcCkKKyAgICAgICAgIyBTZWUgaWYgdGhlIGdpdmVuIGZpbGUgbWF0Y2hlcyBhbnkgb2YgdGhlIGV4cGVjdGVkIHBhdGggZXh0ZW5zaW9ucy4KKyAgICAgICAgIyBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gc2hvcnQgY2lyY3VpdCB3aGVuIGdpdmVuICJweXRob24uZXhlIi4KKyAgICAgICAgbWF0Y2hlcyA9IFtjbWQgZm9yIGV4dCBpbiBwYXRoZXh0IGlmIGNtZC5sb3dlcigpLmVuZHN3aXRoKGV4dC5sb3dlcigpKV0KKyAgICAgICAgIyBJZiBpdCBkb2VzIG1hdGNoLCBvbmx5IHRlc3QgdGhhdCBvbmUsIG90aGVyd2lzZSB3ZSBoYXZlIHRvIHRyeQorICAgICAgICAjIG90aGVycy4KKyAgICAgICAgZmlsZXMgPSBbY21kXSBpZiBtYXRjaGVzIGVsc2UgW2NtZCArIGV4dC5sb3dlcigpIGZvciBleHQgaW4gcGF0aGV4dF0KKyAgICBlbHNlOgorICAgICAgICAjIE9uIG90aGVyIHBsYXRmb3JtcyB5b3UgZG9uJ3QgaGF2ZSB0aGluZ3MgbGlrZSBQQVRIRVhUIHRvIHRlbGwgeW91CisgICAgICAgICMgd2hhdCBmaWxlIHN1ZmZpeGVzIGFyZSBleGVjdXRhYmxlLCBzbyBqdXN0IHBhc3Mgb24gY21kIGFzLWlzLgorICAgICAgICBmaWxlcyA9IFtjbWRdCisKKyAgICBzZWVuID0gc2V0KCkKKyAgICBmb3IgZGlyIGluIHBhdGg6CisgICAgICAgIGRpciA9IG9zLnBhdGgubm9ybWNhc2UoZGlyKQorICAgICAgICBpZiBub3QgZGlyIGluIHNlZW46CisgICAgICAgICAgICBzZWVuLmFkZChkaXIpCisgICAgICAgICAgICBmb3IgdGhlZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKGRpciwgdGhlZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBfYWNjZXNzX2NoZWNrKG5hbWUsIG1vZGUpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IGEyYzBiZWMuLjBhYWY0NmIgMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC0xMyw2ICsxMywxOSBAQAogcmVzdWx0aW5nIGRpcmVjdG9yaWVzLCBpZiB0aGV5IGV4aXN0LCBhcmUgYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZAogYWxzbyBpbnNwZWN0ZWQgZm9yIHBhdGggY29uZmlndXJhdGlvbiBmaWxlcy4KIAorSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKK3N5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAorc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCitpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKK3RoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKyhjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKK3NlYXJjaGVkIGZvciBzaXRlLXBhY2thZ2VzOyBvdGhlcndpc2UgdGhleSB3b24ndC4KKworQWxsIG9mIHRoZSByZXN1bHRpbmcgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlCithcHBlbmRlZCB0byBzeXMucGF0aCwgYW5kIGFsc28gaW5zcGVjdGVkIGZvciBwYXRoIGNvbmZpZ3VyYXRpb24KK2ZpbGVzLgorCiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybQogPHBhY2thZ2U+LnB0aDsgaXRzIGNvbnRlbnRzIGFyZSBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzIChvbmUgcGVyIGxpbmUpCiB0byBiZSBhZGRlZCB0byBzeXMucGF0aC4gIE5vbi1leGlzdGluZyBkaXJlY3RvcmllcyAob3IKQEAgLTU0LDggKzY3LDggQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IHRyYWNlYmFjawogCiAjIFByZWZpeGVzIGZvciBzaXRlLXBhY2thZ2VzOyBhZGQgYWRkaXRpb25hbCBwcmVmaXhlcyBsaWtlIC91c3IvbG9jYWwgaGVyZQogUFJFRklYRVMgPSBbc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4XQpAQCAtODIsNyArOTUsOCBAQAogZGVmIGFic19wYXRocygpOgogICAgICIiIlNldCBhbGwgbW9kdWxlIF9fZmlsZV9fIGFuZCBfX2NhY2hlZF9fIGF0dHJpYnV0ZXMgdG8gYW4gYWJzb2x1dGUgcGF0aCIiIgogICAgIGZvciBtIGluIHNldChzeXMubW9kdWxlcy52YWx1ZXMoKSk6Ci0gICAgICAgIGlmIGhhc2F0dHIobSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgaWYgKGdldGF0dHIoZ2V0YXR0cihtLCAnX19sb2FkZXJfXycsIE5vbmUpLCAnX19tb2R1bGVfXycsIE5vbmUpICE9CisgICAgICAgICAgICAgICAgJ19mcm96ZW5faW1wb3J0bGliJyk6CiAgICAgICAgICAgICBjb250aW51ZSAgICMgZG9uJ3QgbWVzcyB3aXRoIGEgUEVQIDMwMi1zdXBwbGllZCBfX2ZpbGVfXwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG0uX19maWxlX18pCkBAIC0xMzgsNyArMTUyLDcgQEAKICAgICAgICAgcmVzZXQgPSAwCiAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4oc2l0ZWRpciwgbmFtZSkKICAgICB0cnk6Ci0gICAgICAgIGYgPSBvcGVuKGZ1bGxuYW1lLCAiclUiKQorICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInIiKQogICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICByZXR1cm4KICAgICB3aXRoIGY6CkBAIC0xNTQsOSArMTY4LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgbm90IGRpcmNhc2UgaW4ga25vd25fcGF0aHMgYW5kIG9zLnBhdGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChkaXIpCiAgICAgICAgICAgICAgICAgICAgIGtub3duX3BhdGhzLmFkZChkaXJjYXNlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHByaW50KCJFcnJvciBwcm9jZXNzaW5nIGxpbmUgezpkfSBvZiB7fTpcbiIuZm9ybWF0KG4rMSwgZnVsbG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgICAgICAgICAgZm9yIHJlY29yZCBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpOgogICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiByZWNvcmQuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyAgJytsaW5lLCBmaWxlPXN5cy5zdGRlcnIpCkBAIC0xNzgsNiArMTkzLDcgQEAKICAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICAgaWYgbm90IHNpdGVkaXJjYXNlIGluIGtub3duX3BhdGhzOgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2l0ZWRpcikgICAgICAgICMgQWRkIHBhdGggY29tcG9uZW50CisgICAgICAgIGtub3duX3BhdGhzLmFkZChzaXRlZGlyY2FzZSkKICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihzaXRlZGlyKQogICAgIGV4Y2VwdCBvcy5lcnJvcjoKQEAgLTI0MSw3ICsyNTcsNiBAQAogICAgICAgICByZXR1cm4gVVNFUl9TSVRFCiAKICAgICBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BhdGgKLSAgICBpbXBvcnQgb3MKIAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCkBAIC0yNjYsMTggKzI4MSwyMSBAQAogICAgICAgICBhZGRzaXRlZGlyKHVzZXJfc2l0ZSwga25vd25fcGF0aHMpCiAgICAgcmV0dXJuIGtub3duX3BhdGhzCiAKLWRlZiBnZXRzaXRlcGFja2FnZXMoKToKK2RlZiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXM9Tm9uZSk6CiAgICAgIiIiUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMKICAgICAoYW5kIHBvc3NpYmx5IHNpdGUtcHl0aG9uKS4KIAotICAgIEZvciBlYWNoIGRpcmVjdG9yeSBwcmVzZW50IGluIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgLCB0aGlzIGZ1bmN0aW9uCi0gICAgd2lsbCBmaW5kIGl0cyBgc2l0ZS1wYWNrYWdlc2Agc3ViZGlyZWN0b3J5IGRlcGVuZGluZyBvbiB0aGUgc3lzdGVtCi0gICAgZW52aXJvbm1lbnQsIGFuZCB3aWxsIHJldHVybiBhIGxpc3Qgb2YgZnVsbCBwYXRocy4KKyAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiBgYHByZWZpeGVzYGAgKG9yIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgKSwKKyAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlCisgICAgc3lzdGVtIGVudmlyb25tZW50LCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGZ1bGwgcGF0aHMuCiAgICAgIiIiCiAgICAgc2l0ZXBhY2thZ2VzID0gW10KICAgICBzZWVuID0gc2V0KCkKIAotICAgIGZvciBwcmVmaXggaW4gUFJFRklYRVM6CisgICAgaWYgcHJlZml4ZXMgaXMgTm9uZToKKyAgICAgICAgcHJlZml4ZXMgPSBQUkVGSVhFUworCisgICAgZm9yIHByZWZpeCBpbiBwcmVmaXhlczoKICAgICAgICAgaWYgbm90IHByZWZpeCBvciBwcmVmaXggaW4gc2VlbjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHNlZW4uYWRkKHByZWZpeCkKQEAgLTMwMyw5ICszMjEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwgInNpdGUtcGFja2FnZXMiKSkKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKLWRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgorZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6CiAgICAgIiIiQWRkIHNpdGUtcGFja2FnZXMgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikgdG8gc3lzLnBhdGgiIiIKLSAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMoKToKKyAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXMpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNpdGVkaXIpOgogICAgICAgICAgICAgYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocykKIApAQCAtMzg1LDcgKzQwMyw3IEBACiAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5fX2ZpbGVzOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGRpciwgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICJyVSIpCisgICAgICAgICAgICAgICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgInIiKQogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTQ3NSw2ICs0OTMsNjEgQEAKICAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKIAogCitDT05GSUdfTElORSA9IHJlLmNvbXBpbGUocideKD9QPGtleT4oXHd8Wy1fXSkrKVxzKj1ccyooP1A8dmFsdWU+LiopXHMqJCcpCisKK2RlZiB2ZW52KGtub3duX3BhdGhzKToKKyAgICBnbG9iYWwgUFJFRklYRVMsIEVOQUJMRV9VU0VSX1NJVEUKKworICAgIGVudiA9IG9zLmVudmlyb24KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CisgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICBlbHNlOgorICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICBleGVjdXRhYmxlX2RpciwgZXhlY3V0YWJsZV9uYW1lID0gb3MucGF0aC5zcGxpdChleGVjdXRhYmxlKQorICAgIHNpdGVfcHJlZml4ID0gb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGVfZGlyKQorICAgIHN5cy5faG9tZSA9IE5vbmUKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgZXhlY3V0YWJsZV9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChleGVjdXRhYmxlX25hbWUpWzBdCisgICAgY29uZl9iYXNlbmFtZSA9ICdweXZlbnYuY2ZnJworICAgIGNhbmRpZGF0ZV9jb25mcyA9IFsKKyAgICAgICAgY29uZmZpbGUgZm9yIGNvbmZmaWxlIGluICgKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihleGVjdXRhYmxlX2RpciwgY29uZl9iYXNlbmFtZSksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2l0ZV9wcmVmaXgsIGNvbmZfYmFzZW5hbWUpCisgICAgICAgICAgICApCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNvbmZmaWxlKQorICAgICAgICBdCisKKyAgICBpZiBjYW5kaWRhdGVfY29uZnM6CisgICAgICAgIHZpcnR1YWxfY29uZiA9IGNhbmRpZGF0ZV9jb25mc1swXQorICAgICAgICBzeXN0ZW1fc2l0ZSA9ICJ0cnVlIgorICAgICAgICB3aXRoIG9wZW4odmlydHVhbF9jb25mKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgbSA9IENPTkZJR19MSU5FLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZCA9IG0uZ3JvdXBkaWN0KCkKKyAgICAgICAgICAgICAgICAgICAga2V5LCB2YWx1ZSA9IGRbJ2tleSddLmxvd2VyKCksIGRbJ3ZhbHVlJ10KKyAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQorCisgICAgICAgIHN5cy5wcmVmaXggPSBzeXMuZXhlY19wcmVmaXggPSBzaXRlX3ByZWZpeAorCisgICAgICAgICMgRG9pbmcgdGhpcyBoZXJlIGVuc3VyZXMgdmVudiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdXNlci1zaXRlCisgICAgICAgIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgW3N5cy5wcmVmaXhdKQorCisgICAgICAgICMgYWRkc2l0ZXBhY2thZ2VzIHdpbGwgcHJvY2VzcyBzaXRlX3ByZWZpeCBhZ2FpbiBpZiBpdHMgaW4gUFJFRklYRVMsCisgICAgICAgICMgYnV0IHRoYXQncyBvazsga25vd25fcGF0aHMgd2lsbCBwcmV2ZW50IGFueXRoaW5nIGJlaW5nIGFkZGVkIHR3aWNlCisgICAgICAgIGlmIHN5c3RlbV9zaXRlID09ICJ0cnVlIjoKKyAgICAgICAgICAgIFBSRUZJWEVTLmluc2VydCgwLCBzeXMucHJlZml4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgUFJFRklYRVMgPSBbc3lzLnByZWZpeF0KKyAgICAgICAgICAgIEVOQUJMRV9VU0VSX1NJVEUgPSBGYWxzZQorCisgICAgcmV0dXJuIGtub3duX3BhdGhzCisKKwogZGVmIGV4ZWNzaXRlY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSBzaXRlIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6CkBAIC01MDgsMTAgKzU4MSwxNiBAQAogCiAKIGRlZiBtYWluKCk6CisgICAgIiIiQWRkIHN0YW5kYXJkIHNpdGUtc3BlY2lmaWMgZGlyZWN0b3JpZXMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKKyAgICB1bmxlc3MgdGhlIHB5dGhvbiBpbnRlcnByZXRlciB3YXMgc3RhcnRlZCB3aXRoIHRoZSAtUyBmbGFnLgorICAgICIiIgogICAgIGdsb2JhbCBFTkFCTEVfVVNFUl9TSVRFCiAKICAgICBhYnNfcGF0aHMoKQogICAgIGtub3duX3BhdGhzID0gcmVtb3ZlZHVwcGF0aHMoKQorICAgIGtub3duX3BhdGhzID0gdmVudihrbm93bl9wYXRocykKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFIGlzIE5vbmU6CiAgICAgICAgIEVOQUJMRV9VU0VSX1NJVEUgPSBjaGVja19lbmFibGV1c2Vyc2l0ZSgpCiAgICAga25vd25fcGF0aHMgPSBhZGR1c2Vyc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKQpAQCAtNTI2LDcgKzYwNSwxMCBAQAogICAgIGlmIEVOQUJMRV9VU0VSX1NJVEU6CiAgICAgICAgIGV4ZWN1c2VyY3VzdG9taXplKCkKIAotbWFpbigpCisjIFByZXZlbnQgZWRpdGlvbiBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAorIyBzaXRlIGlzIGltcG9ydGVkIGxhdGVyLgoraWYgbm90IHN5cy5mbGFncy5ub19zaXRlOgorICAgIG1haW4oKQogCiBkZWYgX3NjcmlwdCgpOgogICAgIGhlbHAgPSAiIiJcCmRpZmYgLS1naXQgYS9MaWIvc210cGQucHkgYi9MaWIvc210cGQucHkKaW5kZXggOGNkNDA1Yy4uNzc4ZDZkNiAxMDA3NTUKLS0tIGEvTGliL3NtdHBkLnB5CisrKyBiL0xpYi9zbXRwZC5weQpAQCAtMSw1ICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCi0iIiJBbiBSRkMgMjgyMSBzbXRwIHByb3h5LgorIiIiQW4gUkZDIDUzMjEgc210cCBwcm94eS4KIAogVXNhZ2U6ICUocHJvZ3JhbSlzIFtvcHRpb25zXSBbbG9jYWxob3N0OmxvY2FscG9ydCBbcmVtb3RlaG9zdDpyZW1vdGVwb3J0XV0KIApAQCAtMjAsNiArMjAsMTEgQEAKICAgICAgICAgVXNlIGBjbGFzc25hbWUnIGFzIHRoZSBjb25jcmV0ZSBTTVRQIHByb3h5IGNsYXNzLiAgVXNlcyBgUHVyZVByb3h5JyBieQogICAgICAgICBkZWZhdWx0LgogCisgICAgLS1zaXplIGxpbWl0CisgICAgLXMgbGltaXQKKyAgICAgICAgUmVzdHJpY3QgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGluY29taW5nIG1lc3NhZ2UgdG8gImxpbWl0IiBudW1iZXIgb2YKKyAgICAgICAgYnl0ZXMgdmlhIHRoZSBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4gIERlZmF1bHRzIHRvIDMzNTU0NDMyIGJ5dGVzLgorCiAgICAgLS1kZWJ1ZwogICAgIC1kCiAgICAgICAgIFR1cm4gb24gZGVidWdnaW5nIHByaW50cy4KQEAgLTM1LDEwICs0MCw5IEBACiBhbmQgaWYgcmVtb3RlcG9ydCBpcyBub3QgZ2l2ZW4sIHRoZW4gMjUgaXMgdXNlZC4KICIiIgogCi0MCiAjIE92ZXJ2aWV3OgogIwotIyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBTTVRQIHByb3RvY29sIGFzIGRlZmluZWQgaW4gUkZDIDgyMS4gIEl0CisjIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBtaW5pbWFsIFNNVFAgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiBSRkMgNTMyMS4gIEl0CiAjIGhhcyBhIGhpZXJhcmNoeSBvZiBjbGFzc2VzIHdoaWNoIGltcGxlbWVudCB0aGUgYmFja2VuZCBmdW5jdGlvbmFsaXR5IGZvciB0aGUKICMgc210cGQuICBBIG51bWJlciBvZiBjbGFzc2VzIGFyZSBwcm92aWRlZDoKICMKQEAgLTY2LDcgKzcwLDcgQEAKICMKICMgLSBzdXBwb3J0IG1haWxib3ggZGVsaXZlcnkKICMgLSBhbGlhcyBmaWxlcwotIyAtIEVTTVRQCisjIC0gSGFuZGxlIG1vcmUgRVNNVFAgZXh0ZW5zaW9ucwogIyAtIGhhbmRsZSBlcnJvciBjb2RlcyBmcm9tIHRoZSBiYWNrZW5kIHNtdHBkCiAKIGltcG9ydCBzeXMKQEAgLTc3LDEyICs4MSwxNCBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGFzeW5jb3JlCiBpbXBvcnQgYXN5bmNoYXQKK2ltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgorZnJvbSBlbWFpbC5faGVhZGVyX3ZhbHVlX3BhcnNlciBpbXBvcnQgZ2V0X2FkZHJfc3BlYywgZ2V0X2FuZ2xlX2FkZHIKIAogX19hbGxfXyA9IFsiU01UUFNlcnZlciIsIkRlYnVnZ2luZ1NlcnZlciIsIlB1cmVQcm94eSIsIk1haWxtYW5Qcm94eSJdCiAKIHByb2dyYW0gPSBzeXMuYXJndlswXQotX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjInCitfX3ZlcnNpb25fXyA9ICdQeXRob24gU01UUCBwcm94eSB2ZXJzaW9uIDAuMycKIAogCiBjbGFzcyBEZXZudWxsOgpAQCAtOTQsOSArMTAwLDkgQEAKIE5FV0xJTkUgPSAnXG4nCiBFTVBUWVNUUklORyA9ICcnCiBDT01NQVNQQUNFID0gJywgJworREFUQV9TSVpFX0RFRkFVTFQgPSAzMzU1NDQzMgogCiAKLQwKIGRlZiB1c2FnZShjb2RlLCBtc2c9JycpOgogICAgIHByaW50KF9fZG9jX18gJSBnbG9iYWxzKCksIGZpbGU9c3lzLnN0ZGVycikKICAgICBpZiBtc2c6CkBAIC0xMDQsMTkgKzExMCwyMyBAQAogICAgIHN5cy5leGl0KGNvZGUpCiAKIAotDAogY2xhc3MgU01UUENoYW5uZWwoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CiAgICAgQ09NTUFORCA9IDAKICAgICBEQVRBID0gMQogCi0gICAgZGF0YV9zaXplX2xpbWl0ID0gMzM1NTQ0MzIKICAgICBjb21tYW5kX3NpemVfbGltaXQgPSA1MTIKKyAgICBjb21tYW5kX3NpemVfbGltaXRzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhIHg9Y29tbWFuZF9zaXplX2xpbWl0OiB4KQorICAgIGNvbW1hbmRfc2l6ZV9saW1pdHMudXBkYXRlKHsKKyAgICAgICAgJ01BSUwnOiBjb21tYW5kX3NpemVfbGltaXQgKyAyNiwKKyAgICAgICAgfSkKKyAgICBtYXhfY29tbWFuZF9zaXplX2xpbWl0ID0gbWF4KGNvbW1hbmRfc2l6ZV9saW1pdHMudmFsdWVzKCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCisgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQogICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gJycKQEAgLTEzNywxMjcgKzE0NywxMjggQEAKICAgICAgICAgcHJpbnQoJ1BlZXI6JywgcmVwcihzZWxmLnBlZXIpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBfX3ZlcnNpb25fXykpCiAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKIAogICAgICMgcHJvcGVydGllcyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3NlcnZlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnNtdHBfc2VydmVyCiAgICAgQF9fc2VydmVyLnNldHRlcgogICAgIGRlZiBfX3NlcnZlcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19zZXJ2ZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2xpbmUoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2xpbmUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlZF9saW5lcwogICAgIEBfX2xpbmUuc2V0dGVyCiAgICAgZGVmIF9fbGluZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19saW5lIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19zdGF0ZShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fc3RhdGUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc210cF9zdGF0ZScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuc210cF9zdGF0ZQogICAgIEBfX3N0YXRlLnNldHRlcgogICAgIGRlZiBfX3N0YXRlKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3N0YXRlIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19ncmVldGluZyhzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZ3JlZXRpbmcgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc2Vlbl9ncmVldGluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuc2Vlbl9ncmVldGluZwogICAgIEBfX2dyZWV0aW5nLnNldHRlcgogICAgIGRlZiBfX2dyZWV0aW5nKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2dyZWV0aW5nIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19tYWlsZnJvbShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fbWFpbGZyb20gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ21haWxmcm9tJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ21haWxmcm9tJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5tYWlsZnJvbQogICAgIEBfX21haWxmcm9tLnNldHRlcgogICAgIGRlZiBfX21haWxmcm9tKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX21haWxmcm9tIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdtYWlsZnJvbScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdtYWlsZnJvbScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19yY3B0dG9zKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19yY3B0dG9zIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdyY3B0dG9zJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3JjcHR0b3MnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnJjcHR0b3MKICAgICBAX19yY3B0dG9zLnNldHRlcgogICAgIGRlZiBfX3JjcHR0b3Moc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fcmNwdHRvcyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncmNwdHRvcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdyY3B0dG9zJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnJjcHR0b3MgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fZGF0YShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZGF0YSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdyZWNlaXZlZF9kYXRhJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlZF9kYXRhCiAgICAgQF9fZGF0YS5zZXR0ZXIKICAgICBkZWYgX19kYXRhKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2RhdGEgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2ZxZG4oc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2ZxZG4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2ZxZG4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnZnFkbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuZnFkbgogICAgIEBfX2ZxZG4uc2V0dGVyCiAgICAgZGVmIF9fZnFkbihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19mcWRuIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdmcWRuJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2ZxZG4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuZnFkbiA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19wZWVyKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19wZWVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdwZWVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3BlZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnBlZXIKICAgICBAX19wZWVyLnNldHRlcgogICAgIGRlZiBfX3BlZXIoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fcGVlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncGVlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdwZWVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnBlZXIgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fY29ubihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fY29ubiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnY29ubicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdjb25uJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5jb25uCiAgICAgQF9fY29ubi5zZXR0ZXIKICAgICBkZWYgX19jb25uKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2Nvbm4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ2Nvbm4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnY29ubicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5jb25uID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2FkZHIoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2FkZHIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2FkZHInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnYWRkcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuYWRkcgogICAgIEBfX2FkZHIuc2V0dGVyCiAgICAgZGVmIF9fYWRkcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19hZGRyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdhZGRyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2FkZHInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuYWRkciA9IHZhbHVlCiAKICAgICAjIE92ZXJyaWRlcyBiYXNlIGNsYXNzIGZvciBjb252ZW5pZW5jZQpAQCAtMjY4LDE0ICsyNzksMTQgQEAKICAgICBkZWYgY29sbGVjdF9pbmNvbWluZ19kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBsaW1pdCA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKLSAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5jb21tYW5kX3NpemVfbGltaXQKKyAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5tYXhfY29tbWFuZF9zaXplX2xpbWl0CiAgICAgICAgIGVsaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuREFUQToKICAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5kYXRhX3NpemVfbGltaXQKICAgICAgICAgaWYgbGltaXQgYW5kIHNlbGYubnVtX2J5dGVzID4gbGltaXQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxpZiBsaW1pdDoKICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzICs9IGxlbihkYXRhKQotICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChzdHIoZGF0YSwgInV0ZjgiKSkKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICJ1dGYtOCIpKQogCiAgICAgIyBJbXBsZW1lbnRhdGlvbiBvZiBiYXNlIGNsYXNzIGFic3RyYWN0IG1ldGhvZAogICAgIGRlZiBmb3VuZF90ZXJtaW5hdG9yKHNlbGYpOgpAQCAtMjgzLDExICsyOTQsNyBAQAogICAgICAgICBwcmludCgnRGF0YTonLCByZXByKGxpbmUpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KICAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKLSAgICAgICAgICAgIGlmIHNlbGYubnVtX2J5dGVzID4gc2VsZi5jb21tYW5kX3NpemVfbGltaXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmcnKQotICAgICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCisgICAgICAgICAgICBzeiwgc2VsZi5udW1fYnl0ZXMgPSBzZWxmLm51bV9ieXRlcywgMAogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGJhZCBzeW50YXgnKQogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtMjk5LDkgKzMwNiwxNCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb21tYW5kID0gbGluZVs6aV0udXBwZXIoKQogICAgICAgICAgICAgICAgIGFyZyA9IGxpbmVbaSsxOl0uc3RyaXAoKQorICAgICAgICAgICAgbWF4X3N6ID0gKHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1tjb21tYW5kXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwIGVsc2Ugc2VsZi5jb21tYW5kX3NpemVfbGltaXQpCisgICAgICAgICAgICBpZiBzeiA+IG1heF9zejoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZycpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsICdzbXRwXycgKyBjb21tYW5kLCBOb25lKQogICAgICAgICAgICAgaWYgbm90IG1ldGhvZDoKLSAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMiBFcnJvcjogY29tbWFuZCAiJXMiIG5vdCBpbXBsZW1lbnRlZCcgJSBjb21tYW5kKQorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBjb21tYW5kICIlcyIgbm90IHJlY29nbml6ZWQnICUgY29tbWFuZCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIG1ldGhvZChhcmcpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMxMCwxMiArMzIyLDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc0NTEgSW50ZXJuYWwgY29uZnVzaW9uJykKICAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlmIHNlbGYubnVtX2J5dGVzID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICBpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdCBhbmQgc2VsZi5udW1fYnl0ZXMgPiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhJykKICAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICMgUmVtb3ZlIGV4dHJhbmVvdXMgY2FycmlhZ2UgcmV0dXJucyBhbmQgZGUtdHJhbnNwYXJlbmN5IGFjY29yZGluZwotICAgICAgICAgICAgIyB0byBSRkMgODIxLCBTZWN0aW9uIDQuNS4yLgorICAgICAgICAgICAgIyB0byBSRkMgNTMyMSwgU2VjdGlvbiA0LjUuMi4KICAgICAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICAgICAgZm9yIHRleHQgaW4gbGluZS5zcGxpdCgnXHJcbicpOgogICAgICAgICAgICAgICAgIGlmIHRleHQgYW5kIHRleHRbMF0gPT0gJy4nOgpAQCAtMzMzLDcgKzM0NSw3IEBACiAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN0YXR1cykKIApAQCAtMzQ2LDU4ICszNTgsMTg4IEBACiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZworICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwICVzJyAlIHNlbGYuZnFkbikKIAorICAgIGRlZiBzbXRwX0VITE8oc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IGFyZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZScpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKKyAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLSVzJyAlIHNlbGYuZnFkbikKKyAgICAgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNJWkUgJXMnICUgc2VsZi5kYXRhX3NpemVfbGltaXQpCisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBIRUxQJykKKwogICAgIGRlZiBzbXRwX05PT1Aoc2VsZiwgYXJnKToKICAgICAgICAgaWYgYXJnOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBOT09QJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX1FVSVQoc2VsZiwgYXJnKToKICAgICAgICAgIyBhcmdzIGlzIGlnbm9yZWQKICAgICAgICAgc2VsZi5wdXNoKCcyMjEgQnllJykKICAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogCi0gICAgIyBmYWN0b3JlZAotICAgIGRlZiBfX2dldGFkZHIoc2VsZiwga2V5d29yZCwgYXJnKToKLSAgICAgICAgYWRkcmVzcyA9IE5vbmUKKyAgICBkZWYgX3N0cmlwX2NvbW1hbmRfa2V5d29yZChzZWxmLCBrZXl3b3JkLCBhcmcpOgogICAgICAgICBrZXlsZW4gPSBsZW4oa2V5d29yZCkKICAgICAgICAgaWYgYXJnWzprZXlsZW5dLnVwcGVyKCkgPT0ga2V5d29yZDoKLSAgICAgICAgICAgIGFkZHJlc3MgPSBhcmdba2V5bGVuOl0uc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IGFkZHJlc3M6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBhZGRyZXNzWzBdID09ICc8JyBhbmQgYWRkcmVzc1stMV0gPT0gJz4nIGFuZCBhZGRyZXNzICE9ICc8Pic6Ci0gICAgICAgICAgICAgICAgIyBBZGRyZXNzZXMgY2FuIGJlIGluIHRoZSBmb3JtIDxwZXJzb25AZG9tLmNvbT4gYnV0IHdhdGNoIG91dAotICAgICAgICAgICAgICAgICMgZm9yIG51bGwgYWRkcmVzcywgZS5nLiA8PgotICAgICAgICAgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzWzE6LTFdCi0gICAgICAgIHJldHVybiBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4gYXJnW2tleWxlbjpdLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBkZWYgX2dldGFkZHIoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IGFyZzoKKyAgICAgICAgICAgIHJldHVybiAnJywgJycKKyAgICAgICAgaWYgYXJnLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJzwnKToKKyAgICAgICAgICAgIGFkZHJlc3MsIHJlc3QgPSBnZXRfYW5nbGVfYWRkcihhcmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhZGRyZXNzLCByZXN0ID0gZ2V0X2FkZHJfc3BlYyhhcmcpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3MsIHJlc3QKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MuYWRkcl9zcGVjLCByZXN0CisKKyAgICBkZWYgX2dldHBhcmFtcyhzZWxmLCBwYXJhbXMpOgorICAgICAgICAjIFJldHVybiBhbnkgcGFyYW1ldGVycyB0aGF0IGFwcGVhciB0byBiZSBzeW50YWN0aWNhbGx5IHZhbGlkIGFjY29yZGluZworICAgICAgICAjIHRvIFJGQyAxODY5LCBpZ25vcmUgYWxsIG90aGVycy4gIChQb3N0ZWwgcnVsZTogYWNjZXB0IHdoYXQgd2UgY2FuLikKKyAgICAgICAgcGFyYW1zID0gW3BhcmFtLnNwbGl0KCc9JywgMSkgZm9yIHBhcmFtIGluIHBhcmFtcy5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICc9JyBpbiBwYXJhbV0KKyAgICAgICAgcmV0dXJuIHtrOiB2IGZvciBrLCB2IGluIHBhcmFtcyBpZiBrLmlzYWxudW0oKX0KKworICAgIGRlZiBzbXRwX0hFTFAoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgYXJnOgorICAgICAgICAgICAgZXh0ZW5kZWQgPSAnIFtTUCA8bWFpbCBwYXJhbWV0ZXJzXScKKyAgICAgICAgICAgIGxjX2FyZyA9IGFyZy51cHBlcigpCisgICAgICAgICAgICBpZiBsY19hcmcgPT0gJ0VITE8nOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogRUhMTyBob3N0bmFtZScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnSEVMTyc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBIRUxPIGhvc3RuYW1lJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdNQUlMJzoKKyAgICAgICAgICAgICAgICBtc2cgPSAnMjUwIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4nCisgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gZXh0ZW5kZWQKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2gobXNnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1JDUFQnOgorICAgICAgICAgICAgICAgIG1zZyA9ICcyNTAgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4nCisgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gZXh0ZW5kZWQKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2gobXNnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ0RBVEEnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogREFUQScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnUlNFVCc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBSU0VUJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdOT09QJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IE5PT1AnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1FVSVQnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogUVVJVCcpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnVlJGWSc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBWUkZZIDxhZGRyZXNzPicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdEQVRBIFJTRVQgTk9PUCBRVUlUIFZSRlknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUIERBVEEgJworICAgICAgICAgICAgICAgICAgICAgICdSU0VUIE5PT1AgUVVJVCBWUkZZJykKKworICAgIGRlZiBzbXRwX1ZSRlkoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgYXJnOgorICAgICAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCisgICAgICAgICAgICBpZiBhZGRyZXNzOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUyIENhbm5vdCBWUkZZIHVzZXIsIGJ1dCB3aWxsIGFjY2VwdCBtZXNzYWdlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCBhdHRlbXB0IGRlbGl2ZXJ5JykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDIgQ291bGQgbm90IFZSRlkgJXMnICUgYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBWUkZZIDxhZGRyZXNzPicpCiAKICAgICBkZWYgc210cF9NQUlMKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0Jyk7CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJz09PT4gTUFJTCcsIGFyZywgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgYWRkcmVzcyA9IHNlbGYuX19nZXRhZGRyKCdGUk9NOicsIGFyZykgaWYgYXJnIGVsc2UgTm9uZQorICAgICAgICBzeW50YXhlcnIgPSAnNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4nCisgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgIHN5bnRheGVyciArPSAnIFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl0nCisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBhcmcgPSBzZWxmLl9zdHJpcF9jb21tYW5kX2tleXdvcmQoJ0ZST006JywgYXJnKQorICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKICAgICAgICAgaWYgbm90IGFkZHJlc3M6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IE1BSUwgRlJPTTo8YWRkcmVzcz4nKQorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5leHRlbmRlZF9zbXRwIGFuZCBwYXJhbXM6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLm1haWxmcm9tOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lc3RlZCBNQUlMIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhwYXJhbXMudXBwZXIoKSkKKyAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNpemUgPSBwYXJhbXMucG9wKCdTSVpFJywgTm9uZSkKKyAgICAgICAgaWYgc2l6ZToKKyAgICAgICAgICAgIGlmIG5vdCBzaXplLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdCBhbmQgaW50KHNpemUpID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTIgRXJyb3I6IG1lc3NhZ2Ugc2l6ZSBleGNlZWRzIGZpeGVkIG1heGltdW0gbWVzc2FnZSBzaXplJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbGVuKHBhcmFtcy5rZXlzKCkpID4gMDoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IGFkZHJlc3MKICAgICAgICAgcHJpbnQoJ3NlbmRlcjonLCBzZWxmLm1haWxmcm9tLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX1JDUFQoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBwcmludCgnPT09PiBSQ1BUJywgYXJnLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBpZiBub3Qgc2VsZi5tYWlsZnJvbToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBuZWVkIE1BSUwgY29tbWFuZCcpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgYWRkcmVzcyA9IHNlbGYuX19nZXRhZGRyKCdUTzonLCBhcmcpIGlmIGFyZyBlbHNlIE5vbmUKKyAgICAgICAgc3ludGF4ZXJyID0gJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicKKyAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgc3ludGF4ZXJyICs9ICcgW1NQIDxtYWlsLXBhcmFtZXRlcnM+XScKKyAgICAgICAgaWYgYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGFyZyA9IHNlbGYuX3N0cmlwX2NvbW1hbmRfa2V5d29yZCgnVE86JywgYXJnKQorICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKKyAgICAgICAgaWYgbm90IGFkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHBhcmFtczoKKyAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMocGFyYW1zLnVwcGVyKCkpCisgICAgICAgICAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgcGFyYW1zIGFuZCBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IGFkZHJlc3M6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5yY3B0dG9zLmFwcGVuZChhZGRyZXNzKQogICAgICAgICBwcmludCgncmVjaXBzOicsIHNlbGYucmNwdHRvcywgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9SU0VUKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIGFyZzoKQEAgLTQwOCw5ICs1NTAsMTIgQEAKICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECi0gICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfREFUQShzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3Qgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBzZWxmLnJjcHR0b3M6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVlZCBSQ1BUIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCkBAIC00MjEsMTUgKzU2NiwyMCBAQAogICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbi5cclxuJykKICAgICAgICAgc2VsZi5wdXNoKCczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPicpCiAKKyAgICAjIENvbW1hbmRzIHRoYXQgaGF2ZSBub3QgYmVlbiBpbXBsZW1lbnRlZAorICAgIGRlZiBzbXRwX0VYUE4oc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCc1MDIgRVhQTiBub3QgaW1wbGVtZW50ZWQnKQogCi0MCisKIGNsYXNzIFNNVFBTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAgICAgIyBTTVRQQ2hhbm5lbCBjbGFzcyB0byB1c2UgZm9yIG1hbmFnaW5nIGNsaWVudCBjb25uZWN0aW9ucwogICAgIGNoYW5uZWxfY2xhc3MgPSBTTVRQQ2hhbm5lbAogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKKyAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxUKToKICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gbG9jYWxhZGRyCiAgICAgICAgIHNlbGYuX3JlbW90ZWFkZHIgPSByZW1vdGVhZGRyCisgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCkBAIC00NDcsNyArNTk3LDcgQEAKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CiAgICAgICAgIHByaW50KCdJbmNvbWluZyBjb25uZWN0aW9uIGZyb20gJXMnICUgcmVwcihhZGRyKSwgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyKQorICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuZGF0YV9zaXplX2xpbWl0KQogCiAgICAgIyBBUEkgZm9yICJkb2luZyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIG1lc3NhZ2UiCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CkBAIC00NzUsNyArNjI1LDYgQEAKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKLQwKIGNsYXNzIERlYnVnZ2luZ1NlcnZlcihTTVRQU2VydmVyKToKICAgICAjIERvIHNvbWV0aGluZyB3aXRoIHRoZSBnYXRoZXJlZCBtZXNzYWdlCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CkBAIC00OTEsNyArNjQwLDYgQEAKICAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0nKQogCiAKLQwKIGNsYXNzIFB1cmVQcm94eShTTVRQU2VydmVyKToKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KCdcbicpCkBAIC01MzIsNyArNjgwLDYgQEAKICAgICAgICAgcmV0dXJuIHJlZnVzZWQKIAogCi0MCiBjbGFzcyBNYWlsbWFuUHJveHkoUHVyZVByb3h5KToKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KQEAgLTYxMSwxOSArNzU4LDE4IEBACiAgICAgICAgICAgICAgICAgbXNnLkVucXVldWUobWxpc3QsIHRvcmVxdWVzdD0xKQogCiAKLQwKIGNsYXNzIE9wdGlvbnM6CiAgICAgc2V0dWlkID0gMQogICAgIGNsYXNzbmFtZSA9ICdQdXJlUHJveHknCisgICAgc2l6ZV9saW1pdCA9IE5vbmUKIAogCi0MCiBkZWYgcGFyc2VhcmdzKCk6CiAgICAgZ2xvYmFsIERFQlVHU1RSRUFNCiAgICAgdHJ5OgogICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdCgKLSAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6ZCcsCi0gICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnZGVidWcnXSkKKyAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6czpkJywKKyAgICAgICAgICAgIFsnY2xhc3M9JywgJ25vc2V0dWlkJywgJ3ZlcnNpb24nLCAnaGVscCcsICdzaXplPScsICdkZWJ1ZyddKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgZToKICAgICAgICAgdXNhZ2UoMSwgZSkKIApAQCAtNjQwLDYgKzc4NiwxMyBAQAogICAgICAgICAgICAgb3B0aW9ucy5jbGFzc25hbWUgPSBhcmcKICAgICAgICAgZWxpZiBvcHQgaW4gKCctZCcsICctLWRlYnVnJyk6CiAgICAgICAgICAgICBERUJVR1NUUkVBTSA9IHN5cy5zdGRlcnIKKyAgICAgICAgZWxpZiBvcHQgaW4gKCctcycsICctLXNpemUnKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbnRfc2l6ZSA9IGludChhcmcpCisgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0ID0gaW50X3NpemUKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwcmludCgnSW52YWxpZCBzaXplOiAnICsgYXJnLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgICMgcGFyc2UgdGhlIHJlc3Qgb2YgdGhlIGFyZ3VtZW50cwogICAgIGlmIGxlbihhcmdzKSA8IDE6CkBAIC02NzQsNyArODI3LDYgQEAKICAgICByZXR1cm4gb3B0aW9ucwogCiAKLQwKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgb3B0aW9ucyA9IHBhcnNlYXJncygpCiAgICAgIyBCZWNvbWUgbm9ib2R5CkBAIC02ODcsNyArODM5LDggQEAKICAgICAgICAgaW1wb3J0IF9fbWFpbl9fIGFzIG1vZAogICAgIGNsYXNzXyA9IGdldGF0dHIobW9kLCBjbGFzc25hbWUpCiAgICAgcHJveHkgPSBjbGFzc18oKG9wdGlvbnMubG9jYWxob3N0LCBvcHRpb25zLmxvY2FscG9ydCksCi0gICAgICAgICAgICAgICAgICAgKG9wdGlvbnMucmVtb3RlaG9zdCwgb3B0aW9ucy5yZW1vdGVwb3J0KSkKKyAgICAgICAgICAgICAgICAgICAob3B0aW9ucy5yZW1vdGVob3N0LCBvcHRpb25zLnJlbW90ZXBvcnQpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCkKICAgICBpZiBvcHRpb25zLnNldHVpZDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHB3ZApkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCBmYmVmOTZlLi5kMzdiMGUyIDEwMDY0NAotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtMTMzLDI0ICsxMzMsMTggQEAKICAgICBjb21iaW5hdGlvbiBwcm92aWRlZC4KICAgICAiIiIKIAotZGVmIHF1b3RlYWRkcihhZGRyKToKK2RlZiBxdW90ZWFkZHIoYWRkcnN0cmluZyk6CiAgICAgIiIiUXVvdGUgYSBzdWJzZXQgb2YgdGhlIGVtYWlsIGFkZHJlc3NlcyBkZWZpbmVkIGJ5IFJGQyA4MjEuCiAKICAgICBTaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgYW55dGhpbmcgZW1haWwudXRpbHMucGFyc2VhZGRyIGNhbiBoYW5kbGUuCiAgICAgIiIiCi0gICAgbSA9IChOb25lLCBOb25lKQotICAgIHRyeToKLSAgICAgICAgbSA9IGVtYWlsLnV0aWxzLnBhcnNlYWRkcihhZGRyKVsxXQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGlmIG0gPT0gKE5vbmUsIE5vbmUpOiAgIyBJbmRpY2F0ZXMgcGFyc2UgZmFpbHVyZSBvciBBdHRyaWJ1dGVFcnJvcgotICAgICAgICAjIHNvbWV0aGluZyB3ZWlyZCBoZXJlLi4gcHVudCAtZGRtCi0gICAgICAgIHJldHVybiAiPCVzPiIgJSBhZGRyCi0gICAgZWxpZiBtIGlzIE5vbmU6Ci0gICAgICAgICMgdGhlIHNlbmRlciB3YW50cyBhbiBlbXB0eSByZXR1cm4gYWRkcmVzcwotICAgICAgICByZXR1cm4gIjw+IgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAiPCVzPiIgJSBtCisgICAgZGlzcGxheW5hbWUsIGFkZHIgPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcnN0cmluZykKKyAgICBpZiAoZGlzcGxheW5hbWUsIGFkZHIpID09ICgnJywgJycpOgorICAgICAgICAjIHBhcnNlYWRkciBjb3VsZG4ndCBwYXJzZSBpdCwgdXNlIGl0IGFzIGlzIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KKyAgICAgICAgaWYgYWRkcnN0cmluZy5zdHJpcCgpLnN0YXJ0c3dpdGgoJzwnKToKKyAgICAgICAgICAgIHJldHVybiBhZGRyc3RyaW5nCisgICAgICAgIHJldHVybiAiPCVzPiIgJSBhZGRyc3RyaW5nCisgICAgcmV0dXJuICI8JXM+IiAlIGFkZHIKIAogZGVmIF9hZGRyX29ubHkoYWRkcnN0cmluZyk6CiAgICAgZGlzcGxheW5hbWUsIGFkZHIgPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcnN0cmluZykKQEAgLTE4MCwyNyArMTc0LDYgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfaGF2ZV9zc2wgPSBGYWxzZQogZWxzZToKLSAgICBjbGFzcyBTU0xGYWtlRmlsZToKLSAgICAgICAgIiIiQSBmYWtlIGZpbGUgbGlrZSBvYmplY3QgdGhhdCByZWFsbHkgd3JhcHMgYSBTU0xPYmplY3QuCi0KLSAgICAgICAgSXQgb25seSBzdXBwb3J0cyB3aGF0IGlzIG5lZWRlZCBpbiBzbXRwbGliLgotICAgICAgICAiIiIKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNzbG9iaik6Ci0gICAgICAgICAgICBzZWxmLnNzbG9iaiA9IHNzbG9iagotCi0gICAgICAgIGRlZiByZWFkbGluZShzZWxmKToKLSAgICAgICAgICAgIHN0ciA9IGIiIgotICAgICAgICAgICAgY2hyID0gTm9uZQotICAgICAgICAgICAgd2hpbGUgY2hyICE9IGIiXG4iOgotICAgICAgICAgICAgICAgIGNociA9IHNlbGYuc3Nsb2JqLnJlYWQoMSkKLSAgICAgICAgICAgICAgICBpZiBub3QgY2hyOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHN0ciArPSBjaHIKLSAgICAgICAgICAgIHJldHVybiBzdHIKLQotICAgICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICAgICBwYXNzCi0KICAgICBfaGF2ZV9zc2wgPSBUcnVlCiAKIApAQCAtMjQyLDcgKzIxNSw4IEBACiAgICAgZGVmYXVsdF9wb3J0ID0gU01UUF9QT1JUCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAorICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZS4KIAogICAgICAgICBJZiBzcGVjaWZpZWQsIGBob3N0JyBpcyB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgdG8gd2hpY2ggdG8KQEAgLTI1MCwxMSArMjI0LDE2IEBACiAgICAgICAgIEJ5IGRlZmF1bHQsIHNtdHBsaWIuU01UUF9QT1JUIGlzIHVzZWQuICBBbiBTTVRQQ29ubmVjdEVycm9yIGlzIHJhaXNlZAogICAgICAgICBpZiB0aGUgc3BlY2lmaWVkIGBob3N0JyBkb2Vzbid0IHJlc3BvbmQgY29ycmVjdGx5LiAgSWYgc3BlY2lmaWVkLAogICAgICAgICBgbG9jYWxfaG9zdG5hbWVgIGlzIHVzZWQgYXMgdGhlIEZRRE4gb2YgdGhlIGxvY2FsIGhvc3QuICBCeSBkZWZhdWx0LAotICAgICAgICB0aGUgbG9jYWwgaG9zdG5hbWUgaXMgZm91bmQgdXNpbmcgc29ja2V0LmdldGZxZG4oKS4KKyAgICAgICAgdGhlIGxvY2FsIGhvc3RuYW1lIGlzIGZvdW5kIHVzaW5nIHNvY2tldC5nZXRmcWRuKCkuIFRoZQorICAgICAgICBgc291cmNlX2FkZHJlc3NgIHBhcmFtZXRlciB0YWtlcyBhIDItdHVwbGUgKGhvc3QsIHBvcnQpIGZvciB0aGUgc29ja2V0CisgICAgICAgIHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZiB0aGUgaG9zdCBpcyAnJworICAgICAgICBhbmQgcG9ydCBpcyAwLCB0aGUgT1MgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lc210cF9mZWF0dXJlcyA9IHt9CisgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworCiAgICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuY29ubmVjdChob3N0LCBwb3J0KQogICAgICAgICAgICAgaWYgY29kZSAhPSAyMjA6CkBAIC0yNzcsNiArMjU2LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2hvc3RuYW1lID0gJ1slc10nICUgYWRkcgogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGUsIG1lc3NhZ2UgPSBzZWxmLmRvY21kKCJRVUlUIikKKyAgICAgICAgICAgIGlmIGNvZGUgIT0gMjIxOgorICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBSZXNwb25zZUV4Y2VwdGlvbihjb2RlLCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgU01UUFNlcnZlckRpc2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgZGVmIHNldF9kZWJ1Z2xldmVsKHNlbGYsIGRlYnVnbGV2ZWwpOgogICAgICAgICAiIiJTZXQgdGhlIGRlYnVnIG91dHB1dCBsZXZlbC4KIApAQCAtMjkwLDEwICsyODIsMTIgQEAKICAgICAgICAgIyBUaGlzIG1ha2VzIGl0IHNpbXBsZXIgZm9yIFNNVFBfU1NMIHRvIHVzZSB0aGUgU01UUCBjb25uZWN0IGNvZGUKICAgICAgICAgIyBhbmQganVzdCBhbHRlciB0aGUgc29ja2V0IGNvbm5lY3Rpb24gYml0LgogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKLSAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQpCisgICAgICAgICAgICBwcmludCgnY29ubmVjdDogdG8nLCAoaG9zdCwgcG9ydCksIHNlbGYuc291cmNlX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKKyAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiQ29ubmVjdCB0byBhIGhvc3Qgb24gYSBnaXZlbiBwb3J0LgogCiAgICAgICAgIElmIHRoZSBob3N0bmFtZSBlbmRzIHdpdGggYSBjb2xvbiAoYDonKSBmb2xsb3dlZCBieSBhIG51bWJlciwgYW5kCkBAIC0zMDQsNiArMjk4LDEwIEBACiAgICAgICAgIHNwZWNpZmllZCBkdXJpbmcgaW5zdGFudGlhdGlvbi4KIAogICAgICAgICAiIiIKKworICAgICAgICBpZiBzb3VyY2VfYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworCiAgICAgICAgIGlmIG5vdCBwb3J0IGFuZCAoaG9zdC5maW5kKCc6JykgPT0gaG9zdC5yZmluZCgnOicpKToKICAgICAgICAgICAgIGkgPSBob3N0LnJmaW5kKCc6JykKICAgICAgICAgICAgIGlmIGkgPj0gMDoKQEAgLTMxNyw2ICszMTUsNyBAQAogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fZ2V0X3NvY2tldChob3N0LCBwb3J0LCBzZWxmLnRpbWVvdXQpCisgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgIHByaW50KCJjb25uZWN0OiIsIG1zZywgZmlsZT1zdGRlcnIpCkBAIC0zODgsNyArMzg3LDggQEAKIAogICAgICAgICBlcnJtc2cgPSBiIlxuIi5qb2luKHJlc3ApCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKICAgICAgICAgcmV0dXJuIGVycmNvZGUsIGVycm1zZwogCiAgICAgZGVmIGRvY21kKHNlbGYsIGNtZCwgYXJncz0iIik6CkBAIC02MzIsNyArNjMyLDcgQEAKICAgICAgICAgIyBXZSBjb3VsZCBub3QgbG9naW4gc3VjZXNzZnVsbHkuIFJldHVybiByZXN1bHQgb2YgbGFzdCBhdHRlbXB0LgogICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQogCi0gICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSk6CisgICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUHV0cyB0aGUgY29ubmVjdGlvbiB0byB0aGUgU01UUCBzZXJ2ZXIgaW50byBUTFMgbW9kZS4KIAogICAgICAgICBJZiB0aGVyZSBoYXMgYmVlbiBubyBwcmV2aW91cyBFSExPIG9yIEhFTE8gY29tbWFuZCB0aGlzIHNlc3Npb24sIHRoaXMKQEAgLTY1Niw4ICs2NTYsMTcgQEAKICAgICAgICAgaWYgcmVzcCA9PSAyMjA6CiAgICAgICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTm8gU1NMIHN1cHBvcnQgaW5jbHVkZWQgaW4gdGhpcyBQeXRob24iKQotICAgICAgICAgICAgc2VsZi5zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29jaywga2V5ZmlsZSwgY2VydGZpbGUpCi0gICAgICAgICAgICBzZWxmLmZpbGUgPSBTU0xGYWtlRmlsZShzZWxmLnNvY2spCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrLCBrZXlmaWxlLCBjZXJ0ZmlsZSkKKyAgICAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgICAgICMgUkZDIDMyMDc6CiAgICAgICAgICAgICAjIFRoZSBjbGllbnQgTVVTVCBkaXNjYXJkIGFueSBrbm93bGVkZ2Ugb2J0YWluZWQgZnJvbQogICAgICAgICAgICAgIyB0aGUgc2VydmVyLCBzdWNoIGFzIHRoZSBsaXN0IG9mIFNNVFAgc2VydmljZSBleHRlbnNpb25zLApAQCAtNzg2LDcgKzc5NSw4IEBACiAgICAgICAgICMgVE9ETyBpbXBsZW1lbnQgaGV1cmlzdGljcyB0byBndWVzcyB0aGUgY29ycmVjdCBSZXNlbnQtKiBibG9jayB3aXRoIGFuCiAgICAgICAgICMgb3B0aW9uIGFsbG93aW5nIHRoZSB1c2VyIHRvIGVuYWJsZSB0aGUgaGV1cmlzdGljcy4gIChJdCBzaG91bGQgYmUKICAgICAgICAgIyBwb3NzaWJsZSB0byBndWVzcyBjb3JyZWN0bHkgYWxtb3N0IGFsbCBvZiB0aGUgdGltZS4pCi0gICAgICAgIHJlc2VudCA9bXNnLmdldF9hbGwoJ1Jlc2VudC1EYXRlJykKKworICAgICAgICByZXNlbnQgPSBtc2cuZ2V0X2FsbCgnUmVzZW50LURhdGUnKQogICAgICAgICBpZiByZXNlbnQgaXMgTm9uZToKICAgICAgICAgICAgIGhlYWRlcl9wcmVmaXggPSAnJwogICAgICAgICBlbGlmIGxlbihyZXNlbnQpID09IDE6CkBAIC03OTUsMTMgKzgwNSwxMyBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWVzc2FnZSBoYXMgbW9yZSB0aGFuIG9uZSAnUmVzZW50LScgaGVhZGVyIGJsb2NrIikKICAgICAgICAgaWYgZnJvbV9hZGRyIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFByZWZlciB0aGUgc2VuZGVyIGZpZWxkIHBlciBSRkMgMjgyMjozLjYuMi4KLSAgICAgICAgICAgIGZyb21fYWRkciA9IChtc2dbaGVhZGVyX3ByZWZpeCsnU2VuZGVyJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfcHJlZml4KydTZW5kZXInKSBpbiBtc2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbXNnW2hlYWRlcl9wcmVmaXgrJ0Zyb20nXSkKKyAgICAgICAgICAgIGZyb21fYWRkciA9IChtc2dbaGVhZGVyX3ByZWZpeCArICdTZW5kZXInXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9wcmVmaXggKyAnU2VuZGVyJykgaW4gbXNnCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0Zyb20nXSkKICAgICAgICAgaWYgdG9fYWRkcnMgaXMgTm9uZToKLSAgICAgICAgICAgIGFkZHJfZmllbGRzID0gW2YgZm9yIGYgaW4gKG1zZ1toZWFkZXJfcHJlZml4KydUbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXgrJ0JjYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXgrJ0NjJ10pIGlmIGYgaXMgbm90IE5vbmVdCisgICAgICAgICAgICBhZGRyX2ZpZWxkcyA9IFtmIGZvciBmIGluIChtc2dbaGVhZGVyX3ByZWZpeCArICdUbyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQmNjJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdDYyddKSBpZiBmIGlzIG5vdCBOb25lXQogICAgICAgICAgICAgdG9fYWRkcnMgPSBbYVsxXSBmb3IgYSBpbiBlbWFpbC51dGlscy5nZXRhZGRyZXNzZXMoYWRkcl9maWVsZHMpXQogICAgICAgICAjIE1ha2UgYSBsb2NhbCBjb3B5IHNvIHdlIGNhbiBkZWxldGUgdGhlIGJjYyBoZWFkZXJzLgogICAgICAgICBtc2dfY29weSA9IGNvcHkuY29weShtc2cpCkBAIC04MzUsMjYgKzg0NSw0MSBAQAogICAgICAgICAiIiIgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSBTTVRQIHRoYXQgY29ubmVjdHMgb3ZlciBhbiBTU0wgZW5jcnlwdGVkCiAgICAgICAgIHNvY2tldCAodG8gdXNlIHRoaXMgY2xhc3MgeW91IG5lZWQgYSBzb2NrZXQgbW9kdWxlIHRoYXQgd2FzIGNvbXBpbGVkIHdpdGggU1NMCiAgICAgICAgIHN1cHBvcnQpLiBJZiBob3N0IGlzIG5vdCBzcGVjaWZpZWQsICcnICh0aGUgbG9jYWwgaG9zdCkgaXMgdXNlZC4gSWYgcG9ydCBpcwotICAgICAgICBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuIGtleWZpbGUgYW5kIGNlcnRmaWxlCisgICAgICAgIG9taXR0ZWQsIHRoZSBzdGFuZGFyZCBTTVRQLW92ZXItU1NMIHBvcnQgKDQ2NSkgaXMgdXNlZC4gVGhlIG9wdGlvbmFsCisgICAgICAgIHNvdXJjZV9hZGRyZXNzIHRha2VzIGEgdHdvLXR1cGxlIChob3N0LHBvcnQpIGZvciBzb2NrZXQgdG8gYmluZCB0by4ga2V5ZmlsZSBhbmQgY2VydGZpbGUKICAgICAgICAgYXJlIGFsc28gb3B0aW9uYWwgLSB0aGV5IGNhbiBjb250YWluIGEgUEVNIGZvcm1hdHRlZCBwcml2YXRlIGtleSBhbmQKLSAgICAgICAgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgorICAgICAgICBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uIGNvbnRleHQgYWxzbyBvcHRpb25hbCwgY2FuIGNvbnRhaW4KKyAgICAgICAgYSBTU0xDb250ZXh0LCBhbmQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8ga2V5ZmlsZSBhbmQgY2VydGZpbGU7IElmIGl0IGlzIHNwZWNpZmllZCBib3RoCisgICAgICAgIGtleWZpbGUgYW5kIGNlcnRmaWxlIG11c3QgYmUgTm9uZS4KICAgICAgICAgIiIiCiAKICAgICAgICAgZGVmYXVsdF9wb3J0ID0gU01UUF9TU0xfUE9SVAogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKLSAgICAgICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWUsIHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CisgICAgICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcykKIAogICAgICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCi0gICAgICAgICAgICBuZXdfc29ja2V0ID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCkKLSAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQobmV3X3NvY2tldCwgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQotICAgICAgICAgICAgc2VsZi5maWxlID0gU1NMRmFrZUZpbGUobmV3X3NvY2tldCkKKyAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzKQorICAgICAgICAgICAgaWYgc2VsZi5jb250ZXh0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzZWxmLmNvbnRleHQud3JhcF9zb2NrZXQobmV3X3NvY2tldCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNzbC53cmFwX3NvY2tldChuZXdfc29ja2V0LCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCiAgICAgICAgICAgICByZXR1cm4gbmV3X3NvY2tldAogCiAgICAgX19hbGxfXy5hcHBlbmQoIlNNVFBfU1NMIikKQEAgLTg3OSwxOCArOTA0LDIxIEBACiAKICAgICBlaGxvX21zZyA9ICJsaGxvIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsCisgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZS4iIiIKLSAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZSkKKyAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZT1sb2NhbF9ob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zb3VyY2VfYWRkcmVzcykKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiQ29ubmVjdCB0byB0aGUgTE1UUCBkYWVtb24sIG9uIGVpdGhlciBhIFVuaXggb3IgYSBUQ1Agc29ja2V0LiIiIgogICAgICAgICBpZiBob3N0WzBdICE9ICcvJzoKLSAgICAgICAgICAgIHJldHVybiBTTVRQLmNvbm5lY3Qoc2VsZiwgaG9zdCwgcG9ydCkKKyAgICAgICAgICAgIHJldHVybiBTTVRQLmNvbm5lY3Qoc2VsZiwgaG9zdCwgcG9ydCwgc291cmNlX2FkZHJlc3M9c291cmNlX2FkZHJlc3MpCiAKICAgICAgICAgIyBIYW5kbGUgVW5peC1kb21haW4gc29ja2V0cy4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3QoaG9zdCkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgpkaWZmIC0tZ2l0IGEvTGliL3NvY2tldC5weSBiL0xpYi9zb2NrZXQucHkKaW5kZXggZWE1NmE2Ny4uZDRmMWI2NSAxMDA2NDQKLS0tIGEvTGliL3NvY2tldC5weQorKysgYi9MaWIvc29ja2V0LnB5CkBAIC0xMiw2ICsxMiw3IEBACiBzb2NrZXQoKSAtLSBjcmVhdGUgYSBuZXcgc29ja2V0IG9iamVjdAogc29ja2V0cGFpcigpIC0tIGNyZWF0ZSBhIHBhaXIgb2YgbmV3IHNvY2tldCBvYmplY3RzIFsqXQogZnJvbWZkKCkgLS0gY3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIFsqXQorZnJvbXNoYXJlKCkgLS0gY3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGRhdGEgcmVjZWl2ZWQgZnJvbSBzb2NrZXQuc2hhcmUoKSBbKl0KIGdldGhvc3RuYW1lKCkgLS0gcmV0dXJuIHRoZSBjdXJyZW50IGhvc3RuYW1lCiBnZXRob3N0YnluYW1lKCkgLS0gbWFwIGEgaG9zdG5hbWUgdG8gaXRzIElQIG51bWJlcgogZ2V0aG9zdGJ5YWRkcigpIC0tIG1hcCBhbiBJUCBudW1iZXIgb3IgaG9zdG5hbWUgdG8gRE5TIGluZm8KQEAgLTUzLDcgKzU0LDYgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBlcnJubyA9IE5vbmUKIEVCQURGID0gZ2V0YXR0cihlcnJubywgJ0VCQURGJywgOSkKLUVJTlRSID0gZ2V0YXR0cihlcnJubywgJ0VJTlRSJywgNCkKIEVBR0FJTiA9IGdldGF0dHIoZXJybm8sICdFQUdBSU4nLCAxMSkKIEVXT1VMREJMT0NLID0gZ2V0YXR0cihlcnJubywgJ0VXT1VMREJMT0NLJywgMTEpCiAKQEAgLTExMiw2ICsxMTIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzWzc6XSkKICAgICAgICAgcmV0dXJuIHMKIAorICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IHNlcmlhbGl6ZSBzb2NrZXQgb2JqZWN0IikKKwogICAgIGRlZiBkdXAoc2VsZik6CiAgICAgICAgICIiImR1cCgpIC0+IHNvY2tldCBvYmplY3QKIApAQCAtMjA3LDcgKzIxMCw2IEBACiAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZGV0YWNoKCkKIAotCiBkZWYgZnJvbWZkKGZkLCBmYW1pbHksIHR5cGUsIHByb3RvPTApOgogICAgICIiIiBmcm9tZmQoZmQsIGZhbWlseSwgdHlwZVssIHByb3RvXSkgLT4gc29ja2V0IG9iamVjdAogCkBAIC0yMTcsNiArMjE5LDE0IEBACiAgICAgbmZkID0gZHVwKGZkKQogICAgIHJldHVybiBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgbmZkKQogCitpZiBoYXNhdHRyKF9zb2NrZXQuc29ja2V0LCAic2hhcmUiKToKKyAgICBkZWYgZnJvbXNoYXJlKGluZm8pOgorICAgICAgICAiIiIgZnJvbXNoYXJlKGluZm8pIC0+IHNvY2tldCBvYmplY3QKKworICAgICAgICBDcmVhdGUgYSBzb2NrZXQgb2JqZWN0IGZyb20gYSB0aGUgYnl0ZXMgb2JqZWN0IHJldHVybmVkIGJ5CisgICAgICAgIHNvY2tldC5zaGFyZShwaWQpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNvY2tldCgwLCAwLCAwLCBpbmZvKQogCiBpZiBoYXNhdHRyKF9zb2NrZXQsICJzb2NrZXRwYWlyIik6CiAKQEAgLTI4OCwxMSArMjk4LDEwIEBACiAgICAgICAgICAgICBleGNlcHQgdGltZW91dDoKICAgICAgICAgICAgICAgICBzZWxmLl90aW1lb3V0X29jY3VycmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgbiA9IGUuYXJnc1swXQotICAgICAgICAgICAgICAgIGlmIG4gPT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbiBpbiBfYmxvY2tpbmdfZXJybm9zOgorICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSBpbiBfYmxvY2tpbmdfZXJybm9zOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHJhaXNlCiAKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvc29ja2V0c2VydmVyLnB5CmluZGV4IGFkZjlmMzguLmEyMTMxOGQgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3NvY2tldHNlcnZlci5weQpAQCAtMTUzLDggKzE1Myw4IEBACiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgc2VsZWN0LmVycm9yKSBhcyBlOgotICAgICAgICAgICAgaWYgZS5hcmdzWzBdICE9IGVycm5vLkVJTlRSOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICByYWlzZQogCiBjbGFzcyBCYXNlU2VydmVyOgpAQCAtMTgwLDYgKzE4MCw3IEBACiAgICAgLSBwcm9jZXNzX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgLSBzaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgLSBjbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgLSBzZXJ2aWNlX2FjdGlvbnMoKQogICAgIC0gaGFuZGxlX2Vycm9yKCkKIAogICAgIE1ldGhvZHMgZm9yIGRlcml2ZWQgY2xhc3NlczoKQEAgLTIzNiw2ICsyMzcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9sbF9pbnRlcnZhbCkKICAgICAgICAgICAgICAgICBpZiBzZWxmIGluIHI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQorCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2aWNlX2FjdGlvbnMoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5fX2lzX3NodXRfZG93bi5zZXQoKQpAQCAtMjUwLDYgKzI1MywxNCBAQAogICAgICAgICBzZWxmLl9fc2h1dGRvd25fcmVxdWVzdCA9IFRydWUKICAgICAgICAgc2VsZi5fX2lzX3NodXRfZG93bi53YWl0KCkKIAorICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6CisgICAgICAgICIiIkNhbGxlZCBieSB0aGUgc2VydmVfZm9yZXZlcigpIGxvb3AuCisKKyAgICAgICAgTWF5IGJlIG92ZXJyaWRkZW4gYnkgYSBzdWJjbGFzcyAvIE1peGluIHRvIGltcGxlbWVudCBhbnkgY29kZSB0aGF0CisgICAgICAgIG5lZWRzIHRvIGJlIHJ1biBkdXJpbmcgdGhlIGxvb3AuCisgICAgICAgICIiIgorICAgICAgICBwYXNzCisKICAgICAjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGhhbmRsaW5nLCBnZXR0aW5nLCBwcm9jZXNzaW5nIGFuZAogICAgICMgZmluaXNoaW5nIGEgcmVxdWVzdCBpcyBmYWlybHkgYXJiaXRyYXJ5LiAgUmVtZW1iZXI6CiAgICAgIwpAQCAtNTUwLDkgKzU2MSwxNSBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKIAorICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6CisgICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4SW4uCisKKyAgICAgICAgc2VydmljZV9hY3Rpb25zIGlzIGNhbGxlZCBpbiB0aGUgQmFzZVNlcnZlcidzIHNlcnZlX2ZvcnZlciBsb29wLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKwogICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICAiIiJGb3JrIGEgbmV3IHN1YnByb2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdC4iIiIKLSAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKICAgICAgICAgcGlkID0gb3MuZm9yaygpCiAgICAgICAgIGlmIHBpZDoKICAgICAgICAgICAgICMgUGFyZW50IHByb2Nlc3MKQEAgLTU2MCw2ICs1NzcsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuID0gW10KICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmFwcGVuZChwaWQpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzLgogICAgICAgICAgICAgIyBUaGlzIG11c3QgbmV2ZXIgcmV0dXJuLCBoZW5jZSBvcy5fZXhpdCgpIQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKaW5kZXggMjAyYmQzOC4uYjdlYzFhZCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvZGJhcGkucHk6IHRlc3RzIGZvciBEQi1BUEkgY29tcGxpYW5jZQogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKaW5kZXggN2Y2ZjM0Ny4uOWU4MzNhZSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2ZhY3RvcnkucHk6IHRlc3RzIGZvciB0aGUgdmFyaW91cyBmYWN0b3JpZXMgaW4gcHlzcWxpdGUKICMKICMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpAQCAtMTc4LDYgKzE3OCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyb3dbMF0uZW5kc3dpdGgoInJlaWNoIiksICJjb2x1bW4gbXVzdCBjb250YWluIG9yaWdpbmFsIGRhdGEiKQogCiAgICAgZGVmIENoZWNrT3B0aW1pemVkVW5pY29kZShzZWxmKToKKyAgICAgICAgIyBJbiBweTNrLCBzdHIgb2JqZWN0cyBhcmUgYWx3YXlzIHJldHVybmVkIHdoZW4gdGV4dF9mYWN0b3J5CisgICAgICAgICMgaXMgT3B0aW1pemVkVW5pY29kZQogICAgICAgICBzZWxmLmNvbi50ZXh0X2ZhY3RvcnkgPSBzcWxpdGUuT3B0aW1pemVkVW5pY29kZQogICAgICAgICBhdXN0cmlhID0gItZzdGVycmVpY2giCiAgICAgICAgIGdlcm1hbnkgPSAiRGV1dGNobGFuZCIKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CmluZGV4IGE5MmU4MzguLjNkYzQ0ZjYgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2hvb2tzLnB5OiB0ZXN0cyBmb3IgdmFyaW91cyBTUUxpdGUtc3BlY2lmaWMgaG9va3MKICMKICMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpAQCAtMTc2LDEwICsxNzYsNjAgQEAKICAgICAgICAgY29uLmV4ZWN1dGUoInNlbGVjdCAxIHVuaW9uIHNlbGVjdCAyIHVuaW9uIHNlbGVjdCAzIikuZmV0Y2hhbGwoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdGlvbiwgMCwgInByb2dyZXNzIGhhbmRsZXIgd2FzIG5vdCBjbGVhcmVkIikKIAorY2xhc3MgVHJhY2VDYWxsYmFja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgQ2hlY2tUcmFjZUNhbGxiYWNrVXNlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgdHJhY2UgY2FsbGJhY2sgaXMgaW52b2tlZCBvbmNlIGl0IGlzIHNldC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIGZvbyhhLCBiKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0cmFjZWRfc3RhdGVtZW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueSgiY3JlYXRlIHRhYmxlIGZvbyIgaW4gc3RtdCBmb3Igc3RtdCBpbiB0cmFjZWRfc3RhdGVtZW50cykpCisKKyAgICBkZWYgQ2hlY2tDbGVhclRyYWNlQ2FsbGJhY2soc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgc2V0dGluZyB0aGUgdHJhY2UgY2FsbGJhY2sgdG8gTm9uZSBjbGVhcnMgdGhlIHByZXZpb3VzbHkgc2V0IGNhbGxiYWNrLgorICAgICAgICAiIiIKKyAgICAgICAgY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKyAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMgPSBbXQorICAgICAgICBkZWYgdHJhY2Uoc3RhdGVtZW50KToKKyAgICAgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzLmFwcGVuZChzdGF0ZW1lbnQpCisgICAgICAgIGNvbi5zZXRfdHJhY2VfY2FsbGJhY2sodHJhY2UpCisgICAgICAgIGNvbi5zZXRfdHJhY2VfY2FsbGJhY2soTm9uZSkKKyAgICAgICAgY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSBmb28oYSwgYikiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRyYWNlZF9zdGF0ZW1lbnRzLCAidHJhY2UgY2FsbGJhY2sgd2FzIG5vdCBjbGVhcmVkIikKKworICAgIGRlZiBDaGVja1VuaWNvZGVDb250ZW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBzdGF0ZW1lbnQgY2FuIGNvbnRhaW4gdW5pY29kZSBsaXRlcmFscy4KKyAgICAgICAgIiIiCisgICAgICAgIHVuaWNvZGVfdmFsdWUgPSAnXHhmNlx4ZTRceGZjXHhkNlx4YzRceGRjXHhkZlx1MjBhYycKKyAgICAgICAgY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKyAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMgPSBbXQorICAgICAgICBkZWYgdHJhY2Uoc3RhdGVtZW50KToKKyAgICAgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzLmFwcGVuZChzdGF0ZW1lbnQpCisgICAgICAgIGNvbi5zZXRfdHJhY2VfY2FsbGJhY2sodHJhY2UpCisgICAgICAgIGNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgZm9vKHgpIikKKyAgICAgICAgIyBDYW4ndCBleGVjdXRlIGJvdW5kIHBhcmFtZXRlcnMgYXMgdGhlaXIgdmFsdWVzIGRvbid0IGFwcGVhcgorICAgICAgICAjIGluIHRyYWNlZCBzdGF0ZW1lbnRzIGJlZm9yZSBTUUxpdGUgMy42LjIxCisgICAgICAgICMgKGNmLiBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvZHJhZnQvcmVsZWFzZWxvZy8zXzZfMjEuaHRtbCkKKyAgICAgICAgY29uLmV4ZWN1dGUoJ2luc2VydCBpbnRvIGZvbyh4KSB2YWx1ZXMgKCIlcyIpJyAlIHVuaWNvZGVfdmFsdWUpCisgICAgICAgIGNvbi5jb21taXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KHVuaWNvZGVfdmFsdWUgaW4gc3RtdCBmb3Igc3RtdCBpbiB0cmFjZWRfc3RhdGVtZW50cyksCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZSBkYXRhICVzIGdhcmJsZWQgaW4gdHJhY2UgY2FsbGJhY2s6ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXNjaWkodW5pY29kZV92YWx1ZSksICcsICcuam9pbihtYXAoYXNjaWksIHRyYWNlZF9zdGF0ZW1lbnRzKSkpKQorCisKKwogZGVmIHN1aXRlKCk6CiAgICAgY29sbGF0aW9uX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKENvbGxhdGlvblRlc3RzLCAiQ2hlY2siKQogICAgIHByb2dyZXNzX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFByb2dyZXNzVGVzdHMsICJDaGVjayIpCi0gICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoY29sbGF0aW9uX3N1aXRlLCBwcm9ncmVzc19zdWl0ZSkpCisgICAgdHJhY2Vfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoVHJhY2VDYWxsYmFja1Rlc3RzLCAiQ2hlY2siKQorICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGNvbGxhdGlvbl9zdWl0ZSwgcHJvZ3Jlc3Nfc3VpdGUsIHRyYWNlX3N1aXRlKSkKIAogZGVmIHRlc3QoKToKICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcigpCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkKaW5kZXggYzc1NTFlMy4uOWQ3YjI3NiAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3JlZ3Jlc3Npb24ucHk6IHB5c3FsaXRlIHJlZ3Jlc3Npb24gdGVzdHMKICMKICMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTAgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQppbmRleCA3MGU5NmExLi5mZWI0ZmExIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3RyYW5zYWN0aW9ucy5weTogdGVzdHMgdHJhbnNhY3Rpb25zCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CmluZGV4IDI5NDEzZTEuLjNiNGNiNmQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3R5cGVzLnB5OiB0ZXN0cyBmb3IgdHlwZSBjb252ZXJzaW9uIGFuZCBkZXRlY3Rpb24KICMKICMgQ29weXJpZ2h0IChDKSAyMDA1IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3ZhbCwgYnl0ZXMpOgogICAgICAgICAgICAgICAgICMgc3FsaXRlMyBhbHdheXMgY2FsbHMgX19pbml0X18gd2l0aCBhIGJ5dGVzIGNyZWF0ZWQgZnJvbSBhCiAgICAgICAgICAgICAgICAgIyBVVEYtOCBzdHJpbmcgd2hlbiBfX2NvbmZvcm1fXyB3YXMgdXNlZCB0byBzdG9yZSB0aGUgb2JqZWN0LgotICAgICAgICAgICAgICAgIF92YWwgPSBfdmFsLmRlY29kZSgndXRmOCcpCisgICAgICAgICAgICAgICAgX3ZhbCA9IF92YWwuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgICAgICBzZWxmLnZhbCA9IF92YWwKIAogICAgICAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkKaW5kZXggZTAxMzQxZS4uMTRmNmI2NSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3VzZXJmdW5jdGlvbnMucHk6IHRlc3RzIGZvciB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzLgogIwpkaWZmIC0tZ2l0IGEvTGliL3NyZV9jb21waWxlLnB5IGIvTGliL3NyZV9jb21waWxlLnB5CmluZGV4IGY1MmVhMDEuLjc1ZjNhMDkgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfY29tcGlsZS5weQorKysgYi9MaWIvc3JlX2NvbXBpbGUucHkKQEAgLTMxOCwxMSArMzE4LDEzIEBACiAgICAgICAgICAgICAgICAgIyBYWFg6IGNvdWxkIGV4cGFuZCBjYXRlZ29yeQogICAgICAgICAgICAgICAgIHJldHVybiBjaGFyc2V0ICMgY2Fubm90IGNvbXByZXNzCiAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICMgbm9uLUJNUCBjaGFyYWN0ZXJzCisgICAgICAgICMgbm9uLUJNUCBjaGFyYWN0ZXJzOyBYWFggbm93IHRoZXkgc2hvdWxkIHdvcmsKICAgICAgICAgcmV0dXJuIGNoYXJzZXQKICAgICBpZiBuZWdhdGU6CiAgICAgICAgIGlmIHN5cy5tYXh1bmljb2RlICE9IDY1NTM1OgogICAgICAgICAgICAgIyBYWFg6IG5lZ2F0aW9uIGRvZXMgbm90IHdvcmsgd2l0aCBiaWcgY2hhcnNldHMKKyAgICAgICAgICAgICMgWFhYMjogbm93IHRoZXkgc2hvdWxkIHdvcmssIGJ1dCByZW1vdmluZyB0aGlzIHdpbGwgbWFrZSB0aGUKKyAgICAgICAgICAgICMgY2hhcm1hcCAxNyB0aW1lcyBiaWdnZXIKICAgICAgICAgICAgIHJldHVybiBjaGFyc2V0CiAgICAgICAgIGZvciBpIGluIHJhbmdlKDY1NTM2KToKICAgICAgICAgICAgIGNoYXJtYXBbaV0gPSBub3QgY2hhcm1hcFtpXQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9wYXJzZS5weSBiL0xpYi9zcmVfcGFyc2UucHkKaW5kZXggMTM3MzdjYS4uZDM1ODY0NiAxMDA2NDQKLS0tIGEvTGliL3NyZV9wYXJzZS5weQorKysgYi9MaWIvc3JlX3BhcnNlLnB5CkBAIC0xNzcsNiArMTc3LDcgQEAKIAogY2xhc3MgVG9rZW5pemVyOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpbmcpOgorICAgICAgICBzZWxmLmlzdGV4dCA9IGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpCiAgICAgICAgIHNlbGYuc3RyaW5nID0gc3RyaW5nCiAgICAgICAgIHNlbGYuaW5kZXggPSAwCiAgICAgICAgIHNlbGYuX19uZXh0KCkKQEAgLTE4NywxNCArMTg4LDE0IEBACiAgICAgICAgIGNoYXIgPSBzZWxmLnN0cmluZ1tzZWxmLmluZGV4OnNlbGYuaW5kZXgrMV0KICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBzdHI4LCBzaW5jZSBpbmRleGluZyByZXR1cm5zIGEgaW50ZWdlcgogICAgICAgICAjIFhYWCBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciB0ZXN0X2J1Z185MjYwNzUgaW4gdGVzdF9yZS5weQotICAgICAgICBpZiBjaGFyIGFuZCBpc2luc3RhbmNlKGNoYXIsIGJ5dGVzKToKKyAgICAgICAgaWYgY2hhciBhbmQgbm90IHNlbGYuaXN0ZXh0OgogICAgICAgICAgICAgY2hhciA9IGNocihjaGFyWzBdKQogICAgICAgICBpZiBjaGFyID09ICJcXCI6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYyA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXggKyAxXQogICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZSAoZW5kIG9mIGxpbmUpIikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5zdHJpbmcsIGJ5dGVzKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzdGV4dDoKICAgICAgICAgICAgICAgICBjID0gY2hyKGMpCiAgICAgICAgICAgICBjaGFyID0gY2hhciArIGMKICAgICAgICAgc2VsZi5pbmRleCA9IHNlbGYuaW5kZXggKyBsZW4oY2hhcikKQEAgLTIwOSw2ICsyMTAsMTUgQEAKICAgICAgICAgdGhpcyA9IHNlbGYubmV4dAogICAgICAgICBzZWxmLl9fbmV4dCgpCiAgICAgICAgIHJldHVybiB0aGlzCisgICAgZGVmIGdldHdoaWxlKHNlbGYsIG4sIGNoYXJzZXQpOgorICAgICAgICByZXN1bHQgPSAnJworICAgICAgICBmb3IgXyBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGMgPSBzZWxmLm5leHQKKyAgICAgICAgICAgIGlmIGMgbm90IGluIGNoYXJzZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlc3VsdCArPSBjCisgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCisgICAgICAgIHJldHVybiByZXN1bHQKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXgsIHNlbGYubmV4dAogICAgIGRlZiBzZWVrKHNlbGYsIGluZGV4KToKQEAgLTI0MSwyMCArMjUxLDMwIEBACiAgICAgICAgIGMgPSBlc2NhcGVbMToyXQogICAgICAgICBpZiBjID09ICJ4IjoKICAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlIChleGFjdGx5IHR3byBkaWdpdHMpCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBIRVhESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKLSAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZVsyOl0KLSAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcigiXFwiICsgZXNjYXBlKSkKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlLCAxNikgJiAweGZmCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikgJiAweGZmCisgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGVpZ2h0IGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoOCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMjpdLCAxNikKKyAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGMKICAgICAgICAgZWxpZiBjIGluIE9DVERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICh1cCB0byB0aHJlZSBkaWdpdHMpCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBPQ1RESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKLSAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZVsxOl0KLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlLCA4KSAmIDB4ZmYKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKICAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoZXNjYXBlKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtMjczLDE1ICsyOTMsMjcgQEAKICAgICAgICAgYyA9IGVzY2FwZVsxOjJdCiAgICAgICAgIGlmIGMgPT0gIngiOgogICAgICAgICAgICAgIyBoZXhhZGVjaW1hbCBlc2NhcGUKLSAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIEhFWERJR0lUUyBhbmQgbGVuKGVzY2FwZSkgPCA0OgotICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICBlbGlmIGMgPT0gInUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBmb3VyIGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgICAgICBjaHIoYykgIyByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkIGNvZGUKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gT0NURElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIE9DVERJR0lUUykKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCiAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZSAqb3IqIGRlY2ltYWwgZ3JvdXAgcmVmZXJlbmNlIChzaWdoKQpAQCAtNzkxLDcgKzgyMyw3IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUaGUgdG9rZW5pemVyIGltcGxpY2l0bHkgZGVjb2RlcyBieXRlcyBvYmplY3RzIGFzIGxhdGluLTEsIHdlIG11c3QKICAgICAgICAgIyB0aGVyZWZvcmUgcmUtZW5jb2RlIHRoZSBmaW5hbCByZXByZXNlbnRhdGlvbi4KLSAgICAgICAgZW5jb2RlID0gbGFtYmRhIHg6IHguZW5jb2RlKCdsYXRpbjEnKQorICAgICAgICBlbmNvZGUgPSBsYW1iZGEgeDogeC5lbmNvZGUoJ2xhdGluLTEnKQogICAgIGZvciBjLCBzIGluIHA6CiAgICAgICAgIGlmIGMgaXMgTUFSSzoKICAgICAgICAgICAgIGdyb3Vwc2FwcGVuZCgoaSwgcykpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCA4MTM3MjMxLi4zMTYyZjU2IDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTYwLDEwICs2MCwyNSBAQAogaW1wb3J0IF9zc2wgICAgICAgICAgICAgIyBpZiB3ZSBjYW4ndCBpbXBvcnQgaXQsIGxldCB0aGUgZXJyb3IgcHJvcGFnYXRlCiAKIGZyb20gX3NzbCBpbXBvcnQgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiwgT1BFTlNTTF9WRVJTSU9OX0lORk8sIE9QRU5TU0xfVkVSU0lPTgotZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgU1NMRXJyb3IKK2Zyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQKK2Zyb20gX3NzbCBpbXBvcnQgKAorICAgIFNTTEVycm9yLCBTU0xaZXJvUmV0dXJuRXJyb3IsIFNTTFdhbnRSZWFkRXJyb3IsIFNTTFdhbnRXcml0ZUVycm9yLAorICAgIFNTTFN5c2NhbGxFcnJvciwgU1NMRU9GRXJyb3IsCisgICAgKQogZnJvbSBfc3NsIGltcG9ydCBDRVJUX05PTkUsIENFUlRfT1BUSU9OQUwsIENFUlRfUkVRVUlSRUQKLWZyb20gX3NzbCBpbXBvcnQgT1BfQUxMLCBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX1RMU3YxCi1mcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2VnZCwgUkFORF9hZGQKK2Zyb20gX3NzbCBpbXBvcnQgKAorICAgIE9QX0FMTCwgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19UTFN2MSwKKyAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UKKyAgICApCit0cnk6CisgICAgZnJvbSBfc3NsIGltcG9ydCBPUF9OT19DT01QUkVTU0lPTgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK3RyeToKKyAgICBmcm9tIF9zc2wgaW1wb3J0IE9QX1NJTkdMRV9FQ0RIX1VTRQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Zyb20gX3NzbCBpbXBvcnQgUkFORF9zdGF0dXMsIFJBTkRfZWdkLCBSQU5EX2FkZCwgUkFORF9ieXRlcywgUkFORF9wc2V1ZG9fYnl0ZXMKIGZyb20gX3NzbCBpbXBvcnQgKAogICAgIFNTTF9FUlJPUl9aRVJPX1JFVFVSTiwKICAgICBTU0xfRVJST1JfV0FOVF9SRUFELApAQCAtNzUsOCArOTAsOSBAQAogICAgIFNTTF9FUlJPUl9FT0YsCiAgICAgU1NMX0VSUk9SX0lOVkFMSURfRVJST1JfQ09ERSwKICAgICApCi1mcm9tIF9zc2wgaW1wb3J0IEhBU19TTkkKLWZyb20gX3NzbCBpbXBvcnQgUFJPVE9DT0xfU1NMdjMsIFBST1RPQ09MX1NTTHYyMywgUFJPVE9DT0xfVExTdjEKK2Zyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4KK2Zyb20gX3NzbCBpbXBvcnQgKFBST1RPQ09MX1NTTHYzLCBQUk9UT0NPTF9TU0x2MjMsCisgICAgICAgICAgICAgICAgICBQUk9UT0NPTF9UTFN2MSkKIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAogX1BST1RPQ09MX05BTUVTID0gewpAQCAtOTQsMTEgKzExMCwxNiBAQAogCiBmcm9tIHNvY2tldCBpbXBvcnQgZ2V0bmFtZWluZm8gYXMgX2dldG5hbWVpbmZvCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgc29ja2V0X2Vycm9yCi1mcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVULCBTT0NLX1NUUkVBTQorZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVCwgU09DS19TVFJFQU0sIGNyZWF0ZV9jb25uZWN0aW9uCiBpbXBvcnQgYmFzZTY0ICAgICAgICAjIGZvciBERVItdG8tUEVNIHRyYW5zbGF0aW9uCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgZXJybm8KIAoraWYgX3NzbC5IQVNfVExTX1VOSVFVRToKKyAgICBDSEFOTkVMX0JJTkRJTkdfVFlQRVMgPSBbJ3Rscy11bmlxdWUnXQorZWxzZToKKyAgICBDSEFOTkVMX0JJTkRJTkdfVFlQRVMgPSBbXQorCiAjIERpc2FibGUgd2VhayBvciBpbnNlY3VyZSBjaXBoZXJzIGJ5IGRlZmF1bHQKICMgKE9wZW5TU0wncyBkZWZhdWx0IHNldHRpbmcgaXMgJ0RFRkFVTFQ6IWFOVUxMOiFlTlVMTCcpCiBfREVGQVVMVF9DSVBIRVJTID0gJ0RFRkFVTFQ6IWFOVUxMOiFlTlVMTDohTE9XOiFFWFBPUlQ6IVNTTHYyJwpAQCAtMTg4LDYgKzIwOSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKIAorICAgIGRlZiBzZXRfbnBuX3Byb3RvY29scyhzZWxmLCBucG5fcHJvdG9jb2xzKToKKyAgICAgICAgcHJvdG9zID0gYnl0ZWFycmF5KCkKKyAgICAgICAgZm9yIHByb3RvY29sIGluIG5wbl9wcm90b2NvbHM6CisgICAgICAgICAgICBiID0gYnl0ZXMocHJvdG9jb2wsICdhc2NpaScpCisgICAgICAgICAgICBpZiBsZW4oYikgPT0gMCBvciBsZW4oYikgPiAyNTU6CisgICAgICAgICAgICAgICAgcmFpc2UgU1NMRXJyb3IoJ05QTiBwcm90b2NvbHMgbXVzdCBiZSAxIHRvIDI1NSBpbiBsZW5ndGgnKQorICAgICAgICAgICAgcHJvdG9zLmFwcGVuZChsZW4oYikpCisgICAgICAgICAgICBwcm90b3MuZXh0ZW5kKGIpCisKKyAgICAgICAgc2VsZi5fc2V0X25wbl9wcm90b2NvbHMocHJvdG9zKQorCiAKIGNsYXNzIFNTTFNvY2tldChzb2NrZXQpOgogICAgICIiIlRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHN1YnR5cGUgb2Ygc29ja2V0LnNvY2tldCB0aGF0IHdyYXBzCkBAIC0xOTksNyArMjMxLDcgQEAKICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249UFJPVE9DT0xfU1NMdjIzLCBjYV9jZXJ0cz1Ob25lLAogICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgICBmYW1pbHk9QUZfSU5FVCwgdHlwZT1TT0NLX1NUUkVBTSwgcHJvdG89MCwgZmlsZW5vPU5vbmUsCi0gICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIGNpcGhlcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lKToKIApAQCAtMjE5LDYgKzI1MSw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYV9jZXJ0cykKICAgICAgICAgICAgIGlmIGNlcnRmaWxlOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgICAgICAgICBpZiBucG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgaWYgY2lwaGVyczoKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKQEAgLTMxOSw2ICszNTMsMTMgQEAKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCiAKKyAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmogb3Igbm90IF9zc2wuSEFTX05QTjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKICAgICBkZWYgY2lwaGVyKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC0zMjYsNiArMzY3LDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNpcGhlcigpCiAKKyAgICBkZWYgY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNvbXByZXNzaW9uKCkKKwogICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEsIGZsYWdzPTApOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKQEAgLTM1OCw2ICs0MDYsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuc2VuZHRvKHNlbGYsIGRhdGEsIGZsYWdzX29yX2FkZHIsIGFkZHIpCiAKKyAgICBkZWYgc2VuZG1zZyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIEVuc3VyZSBwcm9ncmFtcyBkb24ndCBzZW5kIGRhdGEgdW5lbmNyeXB0ZWQgaWYgdGhleSB0cnkgdG8KKyAgICAgICAgIyB1c2UgdGhpcyBtZXRob2QuCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInNlbmRtc2cgbm90IGFsbG93ZWQgb24gaW5zdGFuY2VzIG9mICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18pCisKICAgICBkZWYgc2VuZGFsbChzZWxmLCBkYXRhLCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC00MTYsNiArNDcwLDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnJlY3Zmcm9tX2ludG8oc2VsZiwgYnVmZmVyLCBuYnl0ZXMsIGZsYWdzKQogCisgICAgZGVmIHJlY3Ztc2coc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigicmVjdm1zZyBub3QgYWxsb3dlZCBvbiBpbnN0YW5jZXMgb2YgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXykKKworICAgIGRlZiByZWN2bXNnX2ludG8oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigicmVjdm1zZ19pbnRvIG5vdCBhbGxvd2VkIG9uIGluc3RhbmNlcyBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiAlIHNlbGYuX19jbGFzc19fKQorCiAgICAgZGVmIHBlbmRpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqOgpAQCAtNTAyLDYgKzU2NCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb19oYW5kc2hha2Vfb25fY29ubmVjdCksCiAgICAgICAgICAgICAgICAgYWRkcikKIAorICAgIGRlZiBnZXRfY2hhbm5lbF9iaW5kaW5nKHNlbGYsIGNiX3R5cGU9InRscy11bmlxdWUiKToKKyAgICAgICAgIiIiR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24uICBSYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIHRoZSByZXF1ZXN0ZWQgYGNiX3R5cGVgIGlzIG5vdCBzdXBwb3J0ZWQuICBSZXR1cm4gYnl0ZXMgb2YgdGhlIGRhdGEKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgZGF0YSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIGJlZm9yZSB0aGUgaGFuZHNoYWtlKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNiX3R5cGUgbm90IGluIENIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIGNoYW5uZWwgYmluZGluZyB0eXBlIikKKyAgICAgICAgaWYgY2JfdHlwZSAhPSAidGxzLXVuaXF1ZSI6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0gY2hhbm5lbCBiaW5kaW5nIHR5cGUgbm90IGltcGxlbWVudGVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoY2JfdHlwZSkpCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai50bHNfdW5pcXVlX2NiKCkKKwogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAjIHN5cy5zdGRlcnIud3JpdGUoIl9fZGVsX18gb24gJXNcbiIgJSByZXByKHNlbGYpKQogICAgICAgICBzZWxmLl9yZWFsX2Nsb3NlKCkKQEAgLTUxMSw3ICs1ODgsOCBAQAogICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLCBjZXJ0X3JlcXM9Q0VSVF9OT05FLAogICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYyMywgY2FfY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAotICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIGNpcGhlcnM9Tm9uZSk6CisgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUpOgogCiAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIGtleWZpbGU9a2V5ZmlsZSwgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwgY2VydF9yZXFzPWNlcnRfcmVxcywKQEAgLTU2Niw5ICs2NDQsOSBAQAogICAgICAgICBjZXJ0X3JlcXMgPSBDRVJUX1JFUVVJUkVECiAgICAgZWxzZToKICAgICAgICAgY2VydF9yZXFzID0gQ0VSVF9OT05FCi0gICAgcyA9IHdyYXBfc29ja2V0KHNvY2tldCgpLCBzc2xfdmVyc2lvbj1zc2xfdmVyc2lvbiwKKyAgICBzID0gY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcikKKyAgICBzID0gd3JhcF9zb2NrZXQocywgc3NsX3ZlcnNpb249c3NsX3ZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1jZXJ0X3JlcXMsIGNhX2NlcnRzPWNhX2NlcnRzKQotICAgIHMuY29ubmVjdChhZGRyKQogICAgIGRlcmNlcnQgPSBzLmdldHBlZXJjZXJ0KFRydWUpCiAgICAgcy5jbG9zZSgpCiAgICAgcmV0dXJuIERFUl9jZXJ0X3RvX1BFTV9jZXJ0KGRlcmNlcnQpCmRpZmYgLS1naXQgYS9MaWIvc3RhdC5weSBiL0xpYi9zdGF0LnB5CmluZGV4IDc4Y2NkNWUuLjcwNGFkZmUgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0LnB5CisrKyBiL0xpYi9zdGF0LnB5CkBAIC0xOSw3OCArMTksMTMxIEBACiAjIEV4dHJhY3QgYml0cyBmcm9tIHRoZSBtb2RlCiAKIGRlZiBTX0lNT0RFKG1vZGUpOgorICAgICIiIlJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBjYW4gYmUgc2V0IGJ5CisgICAgb3MuY2htb2QoKS4KKyAgICAiIiIKICAgICByZXR1cm4gbW9kZSAmIDBvNzc3NwogCiBkZWYgU19JRk1UKG1vZGUpOgorICAgICIiIlJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBkZXNjcmliZXMgdGhlCisgICAgZmlsZSB0eXBlLgorICAgICIiIgogICAgIHJldHVybiBtb2RlICYgMG8xNzAwMDAKIAogIyBDb25zdGFudHMgdXNlZCBhcyBTX0lGTVQoKSBmb3IgdmFyaW91cyBmaWxlIHR5cGVzCiAjIChub3QgYWxsIGFyZSBpbXBsZW1lbnRlZCBvbiBhbGwgc3lzdGVtcykKIAotU19JRkRJUiAgPSAwbzA0MDAwMAotU19JRkNIUiAgPSAwbzAyMDAwMAotU19JRkJMSyAgPSAwbzA2MDAwMAotU19JRlJFRyAgPSAwbzEwMDAwMAotU19JRklGTyAgPSAwbzAxMDAwMAotU19JRkxOSyAgPSAwbzEyMDAwMAotU19JRlNPQ0sgPSAwbzE0MDAwMAorU19JRkRJUiAgPSAwbzA0MDAwMCAgIyBkaXJlY3RvcnkKK1NfSUZDSFIgID0gMG8wMjAwMDAgICMgY2hhcmFjdGVyIGRldmljZQorU19JRkJMSyAgPSAwbzA2MDAwMCAgIyBibG9jayBkZXZpY2UKK1NfSUZSRUcgID0gMG8xMDAwMDAgICMgcmVndWxhciBmaWxlCitTX0lGSUZPICA9IDBvMDEwMDAwICAjIGZpZm8gKG5hbWVkIHBpcGUpCitTX0lGTE5LICA9IDBvMTIwMDAwICAjIHN5bWJvbGljIGxpbmsKK1NfSUZTT0NLID0gMG8xNDAwMDAgICMgc29ja2V0IGZpbGUKIAogIyBGdW5jdGlvbnMgdG8gdGVzdCBmb3IgZWFjaCBmaWxlIHR5cGUKIAogZGVmIFNfSVNESVIobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZGlyZWN0b3J5LiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkRJUgogCiBkZWYgU19JU0NIUihtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBjaGFyYWN0ZXIgc3BlY2lhbCBkZXZpY2UgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZDSFIKIAogZGVmIFNfSVNCTEsobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZCTEsKIAogZGVmIFNfSVNSRUcobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgcmVndWxhciBmaWxlLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRlJFRwogCiBkZWYgU19JU0ZJRk8obW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgRklGTyAobmFtZWQgcGlwZSkuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGSUZPCiAKIGRlZiBTX0lTTE5LKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHN5bWJvbGljIGxpbmsuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGTE5LCiAKIGRlZiBTX0lTU09DSyhtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzb2NrZXQuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGU09DSwogCiAjIE5hbWVzIGZvciBwZXJtaXNzaW9uIGJpdHMKIAotU19JU1VJRCA9IDBvNDAwMAotU19JU0dJRCA9IDBvMjAwMAotU19FTkZNVCA9IFNfSVNHSUQKLVNfSVNWVFggPSAwbzEwMDAKLVNfSVJFQUQgPSAwbzA0MDAKLVNfSVdSSVRFID0gMG8wMjAwCi1TX0lFWEVDID0gMG8wMTAwCi1TX0lSV1hVID0gMG8wNzAwCi1TX0lSVVNSID0gMG8wNDAwCi1TX0lXVVNSID0gMG8wMjAwCi1TX0lYVVNSID0gMG8wMTAwCi1TX0lSV1hHID0gMG8wMDcwCi1TX0lSR1JQID0gMG8wMDQwCi1TX0lXR1JQID0gMG8wMDIwCi1TX0lYR1JQID0gMG8wMDEwCi1TX0lSV1hPID0gMG8wMDA3Ci1TX0lST1RIID0gMG8wMDA0Ci1TX0lXT1RIID0gMG8wMDAyCi1TX0lYT1RIID0gMG8wMDAxCitTX0lTVUlEID0gMG80MDAwICAjIHNldCBVSUQgYml0CitTX0lTR0lEID0gMG8yMDAwICAjIHNldCBHSUQgYml0CitTX0VORk1UID0gU19JU0dJRCAjIGZpbGUgbG9ja2luZyBlbmZvcmNlbWVudAorU19JU1ZUWCA9IDBvMTAwMCAgIyBzdGlja3kgYml0CitTX0lSRUFEID0gMG8wNDAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JUlVTUgorU19JV1JJVEUgPSAwbzAyMDAgIyBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVdVU1IKK1NfSUVYRUMgPSAwbzAxMDAgICMgVW5peCBWNyBzeW5vbnltIGZvciBTX0lYVVNSCitTX0lSV1hVID0gMG8wNzAwICAjIG1hc2sgZm9yIG93bmVyIHBlcm1pc3Npb25zCitTX0lSVVNSID0gMG8wNDAwICAjIHJlYWQgYnkgb3duZXIKK1NfSVdVU1IgPSAwbzAyMDAgICMgd3JpdGUgYnkgb3duZXIKK1NfSVhVU1IgPSAwbzAxMDAgICMgZXhlY3V0ZSBieSBvd25lcgorU19JUldYRyA9IDBvMDA3MCAgIyBtYXNrIGZvciBncm91cCBwZXJtaXNzaW9ucworU19JUkdSUCA9IDBvMDA0MCAgIyByZWFkIGJ5IGdyb3VwCitTX0lXR1JQID0gMG8wMDIwICAjIHdyaXRlIGJ5IGdyb3VwCitTX0lYR1JQID0gMG8wMDEwICAjIGV4ZWN1dGUgYnkgZ3JvdXAKK1NfSVJXWE8gPSAwbzAwMDcgICMgbWFzayBmb3Igb3RoZXJzIChub3QgaW4gZ3JvdXApIHBlcm1pc3Npb25zCitTX0lST1RIID0gMG8wMDA0ICAjIHJlYWQgYnkgb3RoZXJzCitTX0lXT1RIID0gMG8wMDAyICAjIHdyaXRlIGJ5IG90aGVycworU19JWE9USCA9IDBvMDAwMSAgIyBleGVjdXRlIGJ5IG90aGVycwogCiAjIE5hbWVzIGZvciBmaWxlIGZsYWdzCiAKLVVGX05PRFVNUCAgICA9IDB4MDAwMDAwMDEKLVVGX0lNTVVUQUJMRSA9IDB4MDAwMDAwMDIKLVVGX0FQUEVORCAgICA9IDB4MDAwMDAwMDQKLVVGX09QQVFVRSAgICA9IDB4MDAwMDAwMDgKLVVGX05PVU5MSU5LICA9IDB4MDAwMDAwMTAKLVVGX0NPTVBSRVNTRUQgPSAweDAwMDAwMDIwICAjIE9TIFg6IGZpbGUgaXMgaGZzLWNvbXByZXNzZWQKLVVGX0hJRERFTiAgICA9IDB4MDAwMDgwMDAgICAjIE9TIFg6IGZpbGUgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQKLVNGX0FSQ0hJVkVEICA9IDB4MDAwMTAwMDAKLVNGX0lNTVVUQUJMRSA9IDB4MDAwMjAwMDAKLVNGX0FQUEVORCAgICA9IDB4MDAwNDAwMDAKLVNGX05PVU5MSU5LICA9IDB4MDAxMDAwMDAKLVNGX1NOQVBTSE9UICA9IDB4MDAyMDAwMDAKK1VGX05PRFVNUCAgICA9IDB4MDAwMDAwMDEgICMgZG8gbm90IGR1bXAgZmlsZQorVUZfSU1NVVRBQkxFID0gMHgwMDAwMDAwMiAgIyBmaWxlIG1heSBub3QgYmUgY2hhbmdlZAorVUZfQVBQRU5EICAgID0gMHgwMDAwMDAwNCAgIyBmaWxlIG1heSBvbmx5IGJlIGFwcGVuZGVkIHRvCitVRl9PUEFRVUUgICAgPSAweDAwMDAwMDA4ICAjIGRpcmVjdG9yeSBpcyBvcGFxdWUgd2hlbiB2aWV3ZWQgdGhyb3VnaCBhIHVuaW9uIHN0YWNrCitVRl9OT1VOTElOSyAgPSAweDAwMDAwMDEwICAjIGZpbGUgbWF5IG5vdCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQKK1VGX0NPTVBSRVNTRUQgPSAweDAwMDAwMDIwICMgT1MgWDogZmlsZSBpcyBoZnMtY29tcHJlc3NlZAorVUZfSElEREVOICAgID0gMHgwMDAwODAwMCAgIyBPUyBYOiBmaWxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkCitTRl9BUkNISVZFRCAgPSAweDAwMDEwMDAwICAjIGZpbGUgbWF5IGJlIGFyY2hpdmVkCitTRl9JTU1VVEFCTEUgPSAweDAwMDIwMDAwICAjIGZpbGUgbWF5IG5vdCBiZSBjaGFuZ2VkCitTRl9BUFBFTkQgICAgPSAweDAwMDQwMDAwICAjIGZpbGUgbWF5IG9ubHkgYmUgYXBwZW5kZWQgdG8KK1NGX05PVU5MSU5LICA9IDB4MDAxMDAwMDAgICMgZmlsZSBtYXkgbm90IGJlIHJlbmFtZWQgb3IgZGVsZXRlZAorU0ZfU05BUFNIT1QgID0gMHgwMDIwMDAwMCAgIyBmaWxlIGlzIGEgc25hcHNob3QgZmlsZQorCisKK19maWxlbW9kZV90YWJsZSA9ICgKKyAgICAoKFNfSUZMTkssICAgICAgICAgImwiKSwKKyAgICAgKFNfSUZSRUcsICAgICAgICAgIi0iKSwKKyAgICAgKFNfSUZCTEssICAgICAgICAgImIiKSwKKyAgICAgKFNfSUZESVIsICAgICAgICAgImQiKSwKKyAgICAgKFNfSUZDSFIsICAgICAgICAgImMiKSwKKyAgICAgKFNfSUZJRk8sICAgICAgICAgInAiKSksCisKKyAgICAoKFNfSVJVU1IsICAgICAgICAgInIiKSwpLAorICAgICgoU19JV1VTUiwgICAgICAgICAidyIpLCksCisgICAgKChTX0lYVVNSfFNfSVNVSUQsICJzIiksCisgICAgIChTX0lTVUlELCAgICAgICAgICJTIiksCisgICAgIChTX0lYVVNSLCAgICAgICAgICJ4IikpLAorCisgICAgKChTX0lSR1JQLCAgICAgICAgICJyIiksKSwKKyAgICAoKFNfSVdHUlAsICAgICAgICAgInciKSwpLAorICAgICgoU19JWEdSUHxTX0lTR0lELCAicyIpLAorICAgICAoU19JU0dJRCwgICAgICAgICAiUyIpLAorICAgICAoU19JWEdSUCwgICAgICAgICAieCIpKSwKKworICAgICgoU19JUk9USCwgICAgICAgICAiciIpLCksCisgICAgKChTX0lXT1RILCAgICAgICAgICJ3IiksKSwKKyAgICAoKFNfSVhPVEh8U19JU1ZUWCwgInQiKSwKKyAgICAgKFNfSVNWVFgsICAgICAgICAgIlQiKSwKKyAgICAgKFNfSVhPVEgsICAgICAgICAgIngiKSkKKykKKworZGVmIGZpbGVtb2RlKG1vZGUpOgorICAgICIiIkNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybSAnLXJ3eHJ3eHJ3eCcuIiIiCisgICAgcGVybSA9IFtdCisgICAgZm9yIHRhYmxlIGluIF9maWxlbW9kZV90YWJsZToKKyAgICAgICAgZm9yIGJpdCwgY2hhciBpbiB0YWJsZToKKyAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgorICAgICAgICAgICAgICAgIHBlcm0uYXBwZW5kKGNoYXIpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKKyAgICByZXR1cm4gIiIuam9pbihwZXJtKQpkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggMGY0ZWRlMi4uYjU3Yzc5YiAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC00NiwyMyArNDYsNyBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogaW1wb3J0IHJlIGFzIF9yZQotCi1jbGFzcyBfbXVsdGltYXA6Ci0gICAgIiIiSGVscGVyIGNsYXNzIGZvciBjb21iaW5pbmcgbXVsdGlwbGUgbWFwcGluZ3MuCi0KLSAgICBVc2VkIGJ5IC57c2FmZV8sfXN1YnN0aXR1dGUoKSB0byBjb21iaW5lIHRoZSBtYXBwaW5nIGFuZCBrZXl3b3JkCi0gICAgYXJndW1lbnRzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmltYXJ5LCBzZWNvbmRhcnkpOgotICAgICAgICBzZWxmLl9wcmltYXJ5ID0gcHJpbWFyeQotICAgICAgICBzZWxmLl9zZWNvbmRhcnkgPSBzZWNvbmRhcnkKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJpbWFyeVtrZXldCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZWNvbmRhcnlba2V5XQotCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAogCiBjbGFzcyBfVGVtcGxhdGVNZXRhY2xhc3ModHlwZSk6CiAgICAgcGF0dGVybiA9IHIiIiIKQEAgLTEwMCw3ICs4NCw3IEBACiAKICAgICBkZWYgX2ludmFsaWQoc2VsZiwgbW8pOgogICAgICAgICBpID0gbW8uc3RhcnQoJ2ludmFsaWQnKQotICAgICAgICBsaW5lcyA9IHNlbGYudGVtcGxhdGVbOmldLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgbGluZXMgPSBzZWxmLnRlbXBsYXRlWzppXS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgIGlmIG5vdCBsaW5lczoKICAgICAgICAgICAgIGNvbG5vID0gMQogICAgICAgICAgICAgbGluZW5vID0gMQpAQCAtMTE2LDcgKzEwMCw3IEBACiAgICAgICAgIGlmIG5vdCBhcmdzOgogICAgICAgICAgICAgbWFwcGluZyA9IGt3cwogICAgICAgICBlbGlmIGt3czoKLSAgICAgICAgICAgIG1hcHBpbmcgPSBfbXVsdGltYXAoa3dzLCBhcmdzWzBdKQorICAgICAgICAgICAgbWFwcGluZyA9IENoYWluTWFwKGt3cywgYXJnc1swXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1hcHBpbmcgPSBhcmdzWzBdCiAgICAgICAgICMgSGVscGVyIGZ1bmN0aW9uIGZvciAuc3ViKCkKQEAgLTE0Miw3ICsxMjYsNyBAQAogICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgIG1hcHBpbmcgPSBrd3MKICAgICAgICAgZWxpZiBrd3M6Ci0gICAgICAgICAgICBtYXBwaW5nID0gX211bHRpbWFwKGt3cywgYXJnc1swXSkKKyAgICAgICAgICAgIG1hcHBpbmcgPSBDaGFpbk1hcChrd3MsIGFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtYXBwaW5nID0gYXJnc1swXQogICAgICAgICAjIEhlbHBlciBmdW5jdGlvbiBmb3IgLnN1YigpCmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IDgzYzc5ZWYuLjU3Y2MxYTQgMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0xOTEsOCArMTkxLDEwIEBACiAKIEEgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZCBpZiBQb3BlbiBpcyBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cy4KIAotY2hlY2tfY2FsbCgpIGFuZCBjaGVja19vdXRwdXQoKSB3aWxsIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvciwgaWYgdGhlCi1jYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuIGNvZGUuCitFeGNlcHRpb25zIGRlZmluZWQgd2l0aGluIHRoaXMgbW9kdWxlIGluaGVyaXQgZnJvbSBTdWJwcm9jZXNzRXJyb3IuCitjaGVja19jYWxsKCkgYW5kIGNoZWNrX291dHB1dCgpIHdpbGwgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yIGlmIHRoZQorY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLiAgVGltZW91dEV4cGlyZWQKK2JlIHJhaXNlZCBpZiBhIHRpbWVvdXQgd2FzIHNwZWNpZmllZCBhbmQgZXhwaXJlZC4KIAogCiBTZWN1cml0eQpAQCAtMzQwLDE1ICszNDIsMjMgQEAKIAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKK2ltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgZ2MKIGltcG9ydCBzaWduYWwKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZXJybm8KK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiAjIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCi1jbGFzcyBDYWxsZWRQcm9jZXNzRXJyb3IoRXhjZXB0aW9uKToKK2NsYXNzIFN1YnByb2Nlc3NFcnJvcihFeGNlcHRpb24pOiBwYXNzCisKKworY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKFN1YnByb2Nlc3NFcnJvcik6CiAgICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieSBjaGVja19jYWxsKCkgb3IKICAgICBjaGVja19vdXRwdXQoKSByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCiAgICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZTsKQEAgLTM2MiwxMCArMzcyLDI0IEBACiAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkIiAlIChzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQogCiAKK2NsYXNzIFRpbWVvdXRFeHBpcmVkKFN1YnByb2Nlc3NFcnJvcik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcyB3aGlsZSB3YWl0aW5nIGZvciBhCisgICAgY2hpbGQgcHJvY2Vzcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCB0aW1lb3V0LCBvdXRwdXQ9Tm9uZSk6CisgICAgICAgIHNlbGYuY21kID0gY21kCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCJDb21tYW5kICclcycgdGltZWQgb3V0IGFmdGVyICVzIHNlY29uZHMiICUKKyAgICAgICAgICAgICAgICAoc2VsZi5jbWQsIHNlbGYudGltZW91dCkpCisKKwogaWYgbXN3aW5kb3dzOgogICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgaW1wb3J0IF9zdWJwcm9jZXNzCisgICAgaW1wb3J0IF93aW5hcGkKICAgICBjbGFzcyBTVEFSVFVQSU5GTzoKICAgICAgICAgZHdGbGFncyA9IDAKICAgICAgICAgaFN0ZElucHV0ID0gTm9uZQpAQCAtMzc3LDUzICs0MDEsNDkgQEAKIGVsc2U6CiAgICAgaW1wb3J0IHNlbGVjdAogICAgIF9oYXNfcG9sbCA9IGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpCi0gICAgaW1wb3J0IGZjbnRsCi0gICAgaW1wb3J0IHBpY2tsZQotCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgX3Bvc2l4c3VicHJvY2VzcwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgX3Bvc2l4c3VicHJvY2VzcyA9IE5vbmUKLSAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIF9wb3NpeHN1YnByb2Nlc3MgbW9kdWxlIGlzIG5vdCBiZWluZyB1c2VkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgIkNoaWxkIHByb2Nlc3MgcmVsaWFiaWxpdHkgbWF5IHN1ZmZlciBpZiB5b3VyICIKLSAgICAgICAgICAgICAgICAgICAgICAicHJvZ3JhbSB1c2VzIHRocmVhZHMuIiwgUnVudGltZVdhcm5pbmcpCisgICAgaW1wb3J0IF9wb3NpeHN1YnByb2Nlc3MKKyAgICBfY3JlYXRlX3BpcGUgPSBfcG9zaXhzdWJwcm9jZXNzLmNsb2V4ZWNfcGlwZQogCiAgICAgIyBXaGVuIHNlbGVjdCBvciBwb2xsIGhhcyBpbmRpY2F0ZWQgdGhhdCB0aGUgZmlsZSBpcyB3cml0YWJsZSwKICAgICAjIHdlIGNhbiB3cml0ZSB1cCB0byBfUElQRV9CVUYgYnl0ZXMgd2l0aG91dCByaXNrIG9mIGJsb2NraW5nLgogICAgICMgUE9TSVggZGVmaW5lcyBQSVBFX0JVRiBhcyA+PSA1MTIuCiAgICAgX1BJUEVfQlVGID0gZ2V0YXR0cihzZWxlY3QsICdQSVBFX0JVRicsIDUxMikKIAotICAgIF9GRF9DTE9FWEVDID0gZ2V0YXR0cihmY250bCwgJ0ZEX0NMT0VYRUMnLCAxKQotCi0gICAgZGVmIF9zZXRfY2xvZXhlYyhmZCwgY2xvZXhlYyk6Ci0gICAgICAgIG9sZCA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZEKQotICAgICAgICBpZiBjbG9leGVjOgotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkQsIG9sZCB8IF9GRF9DTE9FWEVDKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkQsIG9sZCAmIH5fRkRfQ0xPRVhFQykKLQotICAgIGlmIF9wb3NpeHN1YnByb2Nlc3M6Ci0gICAgICAgIF9jcmVhdGVfcGlwZSA9IF9wb3NpeHN1YnByb2Nlc3MuY2xvZXhlY19waXBlCi0gICAgZWxzZToKLSAgICAgICAgZGVmIF9jcmVhdGVfcGlwZSgpOgotICAgICAgICAgICAgZmRzID0gb3MucGlwZSgpCi0gICAgICAgICAgICBfc2V0X2Nsb2V4ZWMoZmRzWzBdLCBUcnVlKQotICAgICAgICAgICAgX3NldF9jbG9leGVjKGZkc1sxXSwgVHJ1ZSkKLSAgICAgICAgICAgIHJldHVybiBmZHMKIAogX19hbGxfXyA9IFsiUG9wZW4iLCAiUElQRSIsICJTVERPVVQiLCAiY2FsbCIsICJjaGVja19jYWxsIiwgImdldHN0YXR1c291dHB1dCIsCi0gICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciJdCisgICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIl0KIAogaWYgbXN3aW5kb3dzOgotICAgIGZyb20gX3N1YnByb2Nlc3MgaW1wb3J0IChDUkVBVEVfTkVXX0NPTlNPTEUsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9FUlJPUl9IQU5ETEUsIFNXX0hJREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJURl9VU0VTVERIQU5ETEVTLCBTVEFSVEZfVVNFU0hPV1dJTkRPVykKKyAgICBmcm9tIF93aW5hcGkgaW1wb3J0IChDUkVBVEVfTkVXX0NPTlNPTEUsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVERfRVJST1JfSEFORExFLCBTV19ISURFLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJURl9VU0VTVERIQU5ETEVTLCBTVEFSVEZfVVNFU0hPV1dJTkRPVykKIAogICAgIF9fYWxsX18uZXh0ZW5kKFsiQ1JFQVRFX05FV19DT05TT0xFIiwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfSU5QVVRfSEFORExFIiwgIlNURF9PVVRQVVRfSEFORExFIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9FUlJPUl9IQU5ETEUiLCAiU1dfSElERSIsCiAgICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyJdKQorCisgICAgY2xhc3MgSGFuZGxlKGludCk6CisgICAgICAgIGNsb3NlZCA9IEZhbHNlCisKKyAgICAgICAgZGVmIENsb3NlKHNlbGYsIENsb3NlSGFuZGxlPV93aW5hcGkuQ2xvc2VIYW5kbGUpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKHNlbGYpCisKKyAgICAgICAgZGVmIERldGFjaChzZWxmKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhbHJlYWR5IGNsb3NlZCIpCisKKyAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuICJIYW5kbGUoJWQpIiAlIGludChzZWxmKQorCisgICAgICAgIF9fZGVsX18gPSBDbG9zZQorICAgICAgICBfX3N0cl9fID0gX19yZXByX18KKwogdHJ5OgogICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQogZXhjZXB0OgpAQCAtNDQ4LDI3ICs0NjgsNjMgQEAKIAogUElQRSA9IC0xCiBTVERPVVQgPSAtMgorREVWTlVMTCA9IC0zCiAKIAogZGVmIF9laW50cl9yZXRyeV9jYWxsKGZ1bmMsICphcmdzKToKICAgICB3aGlsZSBUcnVlOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncykKLSAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQogCiAKLWRlZiBjYWxsKCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKLSAgICAiIiJSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KLSAgICByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgorIyBYWFggVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIGFuZCB0aGUgdGVzdCBzdWl0ZSwKKyMgYnV0IGl0J3MgaGVyZSBzbyB0aGF0IGl0IGNhbiBiZSBpbXBvcnRlZCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0CisjIHRocmVhZHMuCisKK2RlZiBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CisgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCisgICAgZmxhZ19vcHRfbWFwID0geworICAgICAgICAnZGVidWcnOiAnZCcsCisgICAgICAgICMgJ2luc3BlY3QnOiAnaScsCisgICAgICAgICMgJ2ludGVyYWN0aXZlJzogJ2knLAorICAgICAgICAnb3B0aW1pemUnOiAnTycsCisgICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAorICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAorICAgICAgICAnbm9fc2l0ZSc6ICdTJywKKyAgICAgICAgJ2lnbm9yZV9lbnZpcm9ubWVudCc6ICdFJywKKyAgICAgICAgJ3ZlcmJvc2UnOiAndicsCisgICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAorICAgICAgICAncXVpZXQnOiAncScsCisgICAgICAgICdoYXNoX3JhbmRvbWl6YXRpb24nOiAnUicsCisgICAgfQorICAgIGFyZ3MgPSBbXQorICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6CisgICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKKyAgICAgICAgaWYgdiA+IDA6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyBvcHQgKiB2KQorICAgIGZvciBvcHQgaW4gc3lzLndhcm5vcHRpb25zOgorICAgICAgICBhcmdzLmFwcGVuZCgnLVcnICsgb3B0KQorICAgIHJldHVybiBhcmdzCisKKworZGVmIGNhbGwoKnBvcGVuYXJncywgdGltZW91dD1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlIG9yCisgICAgdGltZW91dCwgdGhlbiByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgogCiAgICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CiAKICAgICByZXRjb2RlID0gY2FsbChbImxzIiwgIi1sIl0pCiAgICAgIiIiCi0gICAgcmV0dXJuIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKS53YWl0KCkKKyAgICB3aXRoIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKSBhcyBwOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gcC53YWl0KHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcC5raWxsKCkKKyAgICAgICAgICAgIHAud2FpdCgpCisgICAgICAgICAgICByYWlzZQogCiAKIGRlZiBjaGVja19jYWxsKCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKQEAgLTQ3Nyw3ICs1MzMsNyBAQAogICAgIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZSBDYWxsZWRQcm9jZXNzRXJyb3Igb2JqZWN0IHdpbGwgaGF2ZSB0aGUKICAgICByZXR1cm4gY29kZSBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGUuCiAKLSAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLiAgRXhhbXBsZToKKyAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIGNhbGwgZnVuY3Rpb24uICBFeGFtcGxlOgogCiAgICAgY2hlY2tfY2FsbChbImxzIiwgIi1sIl0pCiAgICAgIiIiCkBAIC00OTAsNyArNTQ2LDcgQEAKICAgICByZXR1cm4gMAogCiAKLWRlZiBjaGVja19vdXRwdXQoKnBvcGVuYXJncywgKiprd2FyZ3MpOgorZGVmIGNoZWNrX291dHB1dCgqcG9wZW5hcmdzLCB0aW1lb3V0PU5vbmUsICoqa3dhcmdzKToKICAgICByIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0IGFzIGEgYnl0ZSBzdHJpbmcuCiAKICAgICBJZiB0aGUgZXhpdCBjb2RlIHdhcyBub24temVybyBpdCByYWlzZXMgYSBDYWxsZWRQcm9jZXNzRXJyb3IuICBUaGUKQEAgLTUxMiwxNCArNTY4LDIwIEBACiAgICAgIiIiCiAgICAgaWYgJ3N0ZG91dCcgaW4ga3dhcmdzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4nKQotICAgIHByb2Nlc3MgPSBQb3BlbigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgKiprd2FyZ3MpCi0gICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCi0gICAgaWYgcmV0Y29kZToKLSAgICAgICAgY21kID0ga3dhcmdzLmdldCgiYXJncyIpCi0gICAgICAgIGlmIGNtZCBpcyBOb25lOgotICAgICAgICAgICAgY21kID0gcG9wZW5hcmdzWzBdCi0gICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBjbWQsIG91dHB1dD1vdXRwdXQpCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgKiprd2FyZ3MpIGFzIHByb2Nlc3M6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUodGltZW91dD10aW1lb3V0KQorICAgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQorICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChwcm9jZXNzLmFyZ3MsIHRpbWVvdXQsIG91dHB1dD1vdXRwdXQpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCisgICAgICAgICAgICBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCisgICAgICAgIGlmIHJldGNvZGU6CisgICAgICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcHJvY2Vzcy5hcmdzLCBvdXRwdXQ9b3V0cHV0KQogICAgIHJldHVybiBvdXRwdXQKIAogCkBAIC02MTQsMTEgKzY3NiwxOSBAQAogICAgID4+PiBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dCgnL2Jpbi9qdW5rJykKICAgICAoMjU2LCAnc2g6IC9iaW4vanVuazogbm90IGZvdW5kJykKICAgICAiIiIKLSAgICBwaXBlID0gb3MucG9wZW4oJ3sgJyArIGNtZCArICc7IH0gMj4mMScsICdyJykKLSAgICB0ZXh0ID0gcGlwZS5yZWFkKCkKLSAgICBzdHMgPSBwaXBlLmNsb3NlKCkKLSAgICBpZiBzdHMgaXMgTm9uZTogc3RzID0gMAotICAgIGlmIHRleHRbLTE6XSA9PSAnXG4nOiB0ZXh0ID0gdGV4dFs6LTFdCisgICAgd2l0aCBvcy5wb3BlbigneyAnICsgY21kICsgJzsgfSAyPiYxJywgJ3InKSBhcyBwaXBlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXh0ID0gcGlwZS5yZWFkKCkKKyAgICAgICAgICAgIHN0cyA9IHBpcGUuY2xvc2UoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwcm9jZXNzID0gcGlwZS5fcHJvYworICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKKyAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICByYWlzZQorICAgIGlmIHN0cyBpcyBOb25lOgorICAgICAgICBzdHMgPSAwCisgICAgaWYgdGV4dFstMTpdID09ICdcbic6CisgICAgICAgIHRleHQgPSB0ZXh0WzotMV0KICAgICByZXR1cm4gc3RzLCB0ZXh0CiAKIApAQCAtNjUwLDYgKzcyMCw4IEBACiAgICAgICAgIF9jbGVhbnVwKCkKIAogICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5faW5wdXQgPSBOb25lCisgICAgICAgIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCA9IEZhbHNlCiAgICAgICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKICAgICAgICAgICAgIGJ1ZnNpemUgPSAwICAjIFJlc3RvcmUgZGVmYXVsdAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWZzaXplLCBpbnQpOgpAQCAtNjg0LDYgKzc1Niw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY3JlYXRpb25mbGFncyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybXMiKQogCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKICAgICAgICAgc2VsZi5zdGRpbiA9IE5vbmUKICAgICAgICAgc2VsZi5zdGRvdXQgPSBOb25lCiAgICAgICAgIHNlbGYuc3RkZXJyID0gTm9uZQpAQCAtNzI0LDcgKzc5Nyw3IEBACiAKICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6CiAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzOgorICAgICAgICAgICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzOgogICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSkKICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKICAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8ub3BlbihjMnByZWFkLCAncmInLCBidWZzaXplKQpAQCAtNzM3LDcgKzgxMCw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZV9jaGlsZChhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLApAQCAtNzg0LDE5ICs4NTcsMjggQEAKICAgICAgICAgICAgICMgQ2hpbGQgaXMgc3RpbGwgcnVubmluZywga2VlcCB1cyBhbGl2ZSB1bnRpbCB3ZSBjYW4gd2FpdCBvbiBpdC4KICAgICAgICAgICAgIF9hY3RpdmUuYXBwZW5kKHNlbGYpCiAKKyAgICBkZWYgX2dldF9kZXZudWxsKHNlbGYpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgIHNlbGYuX2Rldm51bGwgPSBvcy5vcGVuKG9zLmRldm51bGwsIG9zLk9fUkRXUikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rldm51bGwKIAotICAgIGRlZiBjb21tdW5pY2F0ZShzZWxmLCBpbnB1dD1Ob25lKToKKyAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbQogICAgICAgICBzdGRvdXQgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yCi0gICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhCi0gICAgICAgIHN0cmluZyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCisgICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZQorICAgICAgICBieXRlcyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCiAgICAgICAgIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KIAogICAgICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLiIiIgogCi0gICAgICAgICMgT3B0aW1pemF0aW9uOiBJZiB3ZSBhcmUgb25seSB1c2luZyBvbmUgcGlwZSwgb3Igbm8gcGlwZSBhdAotICAgICAgICAjIGFsbCwgdXNpbmcgc2VsZWN0KCkgb3IgdGhyZWFkcyBpcyB1bm5lY2Vzc2FyeS4KLSAgICAgICAgaWYgW3NlbGYuc3RkaW4sIHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycl0uY291bnQoTm9uZSkgPj0gMjoKKyAgICAgICAgaWYgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkIGFuZCBpbnB1dDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzZW5kIGlucHV0IGFmdGVyIHN0YXJ0aW5nIGNvbW11bmljYXRpb24iKQorCisgICAgICAgICMgT3B0aW1pemF0aW9uOiBJZiB3ZSBhcmUgbm90IHdvcnJpZWQgYWJvdXQgdGltZW91dHMsIHdlIGhhdmVuJ3QKKyAgICAgICAgIyBzdGFydGVkIGNvbW11bmljYXRpbmcsIGFuZCB3ZSBoYXZlIG9uZSBvciB6ZXJvIHBpcGVzLCB1c2luZyBzZWxlY3QoKQorICAgICAgICAjIG9yIHRocmVhZHMgaXMgdW5uZWNlc3NhcnkuCisgICAgICAgIGlmICh0aW1lb3V0IGlzIE5vbmUgYW5kIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgYW5kCisgICAgICAgICAgICBbc2VsZi5zdGRpbiwgc2VsZi5zdGRvdXQsIHNlbGYuc3RkZXJyXS5jb3VudChOb25lKSA+PSAyKToKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUKICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CkBAIC04MTQsMTUgKzg5Niw0MiBAQAogICAgICAgICAgICAgICAgIHN0ZGVyciA9IF9laW50cl9yZXRyeV9jYWxsKHNlbGYuc3RkZXJyLnJlYWQpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi53YWl0KCkKLSAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQogCi0gICAgICAgIHJldHVybiBzZWxmLl9jb21tdW5pY2F0ZShpbnB1dCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlKGlucHV0LCBlbmR0aW1lLCB0aW1lb3V0KQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBUcnVlCisKKyAgICAgICAgICAgIHN0cyA9IHNlbGYud2FpdCh0aW1lb3V0PXNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpKQorCisgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKIAogICAgIGRlZiBwb2xsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcG9sbCgpCiAKIAorICAgIGRlZiBfcmVtYWluaW5nX3RpbWUoc2VsZiwgZW5kdGltZSk6CisgICAgICAgICIiIkNvbnZlbmllbmNlIGZvciBfY29tbXVuaWNhdGUgd2hlbiBjb21wdXRpbmcgdGltZW91dHMuIiIiCisgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gZW5kdGltZSAtIF90aW1lKCkKKworCisgICAgZGVmIF9jaGVja190aW1lb3V0KHNlbGYsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICIiIkNvbnZlbmllbmNlIGZvciBjaGVja2luZyBpZiBhIHRpbWVvdXQgaGFzIGV4cGlyZWQuIiIiCisgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBfdGltZSgpID4gZW5kdGltZToKKyAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorCisKICAgICBpZiBtc3dpbmRvd3M6CiAgICAgICAgICMKICAgICAgICAgIyBXaW5kb3dzIG1ldGhvZHMKQEAgLTgzOSwxMSArOTQ4LDE2IEBACiAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IC0xLCAtMQogCiAgICAgICAgICAgICBpZiBzdGRpbiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX0lOUFVUX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBwMmNyZWFkID0gX3dpbmFwaS5HZXRTdGRIYW5kbGUoX3dpbmFwaS5TVERfSU5QVVRfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIHAyY3JlYWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgXyA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgXyA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBwMmNyZWFkID0gSGFuZGxlKHAyY3JlYWQpCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gUElQRToKLSAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gSGFuZGxlKHAyY3JlYWQpLCBIYW5kbGUocDJjd3JpdGUpCisgICAgICAgICAgICBlbGlmIHN0ZGluID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgcDJjcmVhZCA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYuX2dldF9kZXZudWxsKCkpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZGluKQogICAgICAgICAgICAgZWxzZToKQEAgLTg1MiwxMSArOTY2LDE2IEBACiAgICAgICAgICAgICBwMmNyZWFkID0gc2VsZi5fbWFrZV9pbmhlcml0YWJsZShwMmNyZWFkKQogCiAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IF9zdWJwcm9jZXNzLkdldFN0ZEhhbmRsZShfc3VicHJvY2Vzcy5TVERfT1VUUFVUX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX09VVFBVVF9IQU5ETEUpCiAgICAgICAgICAgICAgICAgaWYgYzJwd3JpdGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgXywgYzJwd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIF8sIGMycHdyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlID0gSGFuZGxlKGMycHdyaXRlKQorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKF8pCiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgotICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUgPSBIYW5kbGUoYzJwcmVhZCksIEhhbmRsZShjMnB3cml0ZSkKKyAgICAgICAgICAgIGVsaWYgc3Rkb3V0ID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZG91dCkKICAgICAgICAgICAgIGVsc2U6CkBAIC04NjUsMTMgKzk4NCwxOCBAQAogICAgICAgICAgICAgYzJwd3JpdGUgPSBzZWxmLl9tYWtlX2luaGVyaXRhYmxlKGMycHdyaXRlKQogCiAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkdldFN0ZEhhbmRsZShfc3VicHJvY2Vzcy5TVERfRVJST1JfSEFORExFKQorICAgICAgICAgICAgICAgIGVycndyaXRlID0gX3dpbmFwaS5HZXRTdGRIYW5kbGUoX3dpbmFwaS5TVERfRVJST1JfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIGVycndyaXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIF8sIGVycndyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBfLCBlcnJ3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IEhhbmRsZShlcnJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShfKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gUElQRToKLSAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlID0gSGFuZGxlKGVycnJlYWQpLCBIYW5kbGUoZXJyd3JpdGUpCiAgICAgICAgICAgICBlbGlmIHN0ZGVyciA9PSBTVERPVVQ6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBjMnB3cml0ZQorICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYuX2dldF9kZXZudWxsKCkpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc3RkZXJyKQogICAgICAgICAgICAgZWxzZToKQEAgLTg4NiwyMCArMTAxMCwyMiBAQAogCiAgICAgICAgIGRlZiBfbWFrZV9pbmhlcml0YWJsZShzZWxmLCBoYW5kbGUpOgogICAgICAgICAgICAgIiIiUmV0dXJuIGEgZHVwbGljYXRlIG9mIGhhbmRsZSwgd2hpY2ggaXMgaW5oZXJpdGFibGUiIiIKLSAgICAgICAgICAgIHJldHVybiBfc3VicHJvY2Vzcy5EdXBsaWNhdGVIYW5kbGUoX3N1YnByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLCBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLCAwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MpCisgICAgICAgICAgICBoID0gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCAwLCAxLAorICAgICAgICAgICAgICAgIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTKQorICAgICAgICAgICAgcmV0dXJuIEhhbmRsZShoKQogCiAKICAgICAgICAgZGVmIF9maW5kX3c5eHBvcGVuKHNlbGYpOgogICAgICAgICAgICAgIiIiRmluZCBhbmQgcmV0dXJuIGFic29sdXQgcGF0aCB0byB3OXhwb3Blbi5leGUiIiIKICAgICAgICAgICAgIHc5eHBvcGVuID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfc3VicHJvY2Vzcy5HZXRNb2R1bGVGaWxlTmFtZSgwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF93aW5hcGkuR2V0TW9kdWxlRmlsZU5hbWUoMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInc5eHBvcGVuLmV4ZSIpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModzl4cG9wZW4pOgogICAgICAgICAgICAgICAgICMgRWVlayAtIGZpbGUtbm90LWZvdW5kIC0gcG9zc2libHkgYW4gZW1iZWRkaW5nCiAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gLSBzZWUgaWYgd2UgY2FuIGxvY2F0ZSBpdCBpbiBzeXMuZXhlY19wcmVmaXgKLSAgICAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWNfcHJlZml4KSwKKyAgICAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmJhc2VfZXhlY19wcmVmaXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3OXhwb3Blbi5leGUiKQogICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh3OXhwb3Blbik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGxvY2F0ZSB3OXhwb3Blbi5leGUsIHdoaWNoIGlzICIKQEAgLTkwOSw3ICsxMDM1LDcgQEAKIAogCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCkBAIC05MjYsMTcgKzEwNTIsMTcgQEAKICAgICAgICAgICAgIGlmIHN0YXJ0dXBpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8gPSBTVEFSVFVQSU5GTygpCiAgICAgICAgICAgICBpZiAtMSBub3QgaW4gKHAyY3JlYWQsIGMycHdyaXRlLCBlcnJ3cml0ZSk6Ci0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfc3VicHJvY2Vzcy5TVEFSVEZfVVNFU1RESEFORExFUworICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3dpbmFwaS5TVEFSVEZfVVNFU1RESEFORExFUwogICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmhTdGRJbnB1dCA9IHAyY3JlYWQKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkT3V0cHV0ID0gYzJwd3JpdGUKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkRXJyb3IgPSBlcnJ3cml0ZQogCiAgICAgICAgICAgICBpZiBzaGVsbDoKLSAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5kd0ZsYWdzIHw9IF9zdWJwcm9jZXNzLlNUQVJURl9VU0VTSE9XV0lORE9XCi0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8ud1Nob3dXaW5kb3cgPSBfc3VicHJvY2Vzcy5TV19ISURFCisgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfd2luYXBpLlNUQVJURl9VU0VTSE9XV0lORE9XCisgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8ud1Nob3dXaW5kb3cgPSBfd2luYXBpLlNXX0hJREUKICAgICAgICAgICAgICAgICBjb21zcGVjID0gb3MuZW52aXJvbi5nZXQoIkNPTVNQRUMiLCAiY21kLmV4ZSIpCiAgICAgICAgICAgICAgICAgYXJncyA9ICd7fSAvYyAie30iJy5mb3JtYXQgKGNvbXNwZWMsIGFyZ3MpCi0gICAgICAgICAgICAgICAgaWYgKF9zdWJwcm9jZXNzLkdldFZlcnNpb24oKSA+PSAweDgwMDAwMDAwIG9yCisgICAgICAgICAgICAgICAgaWYgKF93aW5hcGkuR2V0VmVyc2lvbigpID49IDB4ODAwMDAwMDAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoY29tc3BlYykubG93ZXIoKSA9PSAiY29tbWFuZC5jb20iKToKICAgICAgICAgICAgICAgICAgICAgIyBXaW45eCwgb3IgdXNpbmcgY29tbWFuZC5jb20gb24gTlQuIFdlIG5lZWQgdG8KICAgICAgICAgICAgICAgICAgICAgIyB1c2UgdGhlIHc5eHBvcGVuIGludGVybWVkaWF0ZSBwcm9ncmFtLiBGb3IgbW9yZQpAQCAtOTUwLDExICsxMDc2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICMgdXNlIGF0IHh4eCIgYW5kIGEgaG9wZWZ1bCB3YXJuaW5nIGFib3V0IHRoZQogICAgICAgICAgICAgICAgICAgICAjIHN0YWJpbGl0eSBvZiB5b3VyIHN5c3RlbS4gIENvc3QgaXMgQ3RybCtDIHdvbid0CiAgICAgICAgICAgICAgICAgICAgICMga2lsbCBjaGlsZHJlbi4KLSAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25mbGFncyB8PSBfc3VicHJvY2Vzcy5DUkVBVEVfTkVXX0NPTlNPTEUKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25mbGFncyB8PSBfd2luYXBpLkNSRUFURV9ORVdfQ09OU09MRQogCiAgICAgICAgICAgICAjIFN0YXJ0IHRoZSBwcm9jZXNzCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF9zdWJwcm9jZXNzLkNyZWF0ZVByb2Nlc3MoZXhlY3V0YWJsZSwgYXJncywKKyAgICAgICAgICAgICAgICBocCwgaHQsIHBpZCwgdGlkID0gX3dpbmFwaS5DcmVhdGVQcm9jZXNzKGV4ZWN1dGFibGUsIGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gc3BlY2lhbCBzZWN1cml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQobm90IGNsb3NlX2ZkcyksCkBAIC05ODEsMTcgKzExMDcsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgYzJwd3JpdGUuQ2xvc2UoKQogICAgICAgICAgICAgICAgIGlmIGVycndyaXRlICE9IC0xOgogICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZS5DbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZGV2bnVsbCkKIAogICAgICAgICAgICAgIyBSZXRhaW4gdGhlIHByb2Nlc3MgaGFuZGxlLCBidXQgY2xvc2UgdGhlIHRocmVhZCBoYW5kbGUKICAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gSGFuZGxlKGhwKQogICAgICAgICAgICAgc2VsZi5waWQgPSBwaWQKLSAgICAgICAgICAgIGh0LkNsb3NlKCkKKyAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCiAKICAgICAgICAgZGVmIF9pbnRlcm5hbF9wb2xsKHNlbGYsIF9kZWFkc3RhdGU9Tm9uZSwKLSAgICAgICAgICAgICAgICBfV2FpdEZvclNpbmdsZU9iamVjdD1fc3VicHJvY2Vzcy5XYWl0Rm9yU2luZ2xlT2JqZWN0LAotICAgICAgICAgICAgICAgIF9XQUlUX09CSkVDVF8wPV9zdWJwcm9jZXNzLldBSVRfT0JKRUNUXzAsCi0gICAgICAgICAgICAgICAgX0dldEV4aXRDb2RlUHJvY2Vzcz1fc3VicHJvY2Vzcy5HZXRFeGl0Q29kZVByb2Nlc3MpOgorICAgICAgICAgICAgICAgIF9XYWl0Rm9yU2luZ2xlT2JqZWN0PV93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdCwKKyAgICAgICAgICAgICAgICBfV0FJVF9PQkpFQ1RfMD1fd2luYXBpLldBSVRfT0JKRUNUXzAsCisgICAgICAgICAgICAgICAgX0dldEV4aXRDb2RlUHJvY2Vzcz1fd2luYXBpLkdldEV4aXRDb2RlUHJvY2Vzcyk6CiAgICAgICAgICAgICAiIiJDaGVjayBpZiBjaGlsZCBwcm9jZXNzIGhhcyB0ZXJtaW5hdGVkLiAgUmV0dXJucyByZXR1cm5jb2RlCiAgICAgICAgICAgICBhdHRyaWJ1dGUuCiAKQEAgLTEwMDUsMTMgKzExMzMsMjEgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiB3YWl0KHNlbGYpOgorICAgICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUsIGVuZHRpbWU9Tm9uZSk6CiAgICAgICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLiIiIgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcyA9IF93aW5hcGkuSU5GSU5JVEUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMgPSBpbnQodGltZW91dCAqIDEwMDApCiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5XYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYuX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zdWJwcm9jZXNzLklORklOSVRFKQotICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IF9zdWJwcm9jZXNzLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gX3dpbmFwaS5XYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYuX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcykKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQgPT0gX3dpbmFwaS5XQUlUX1RJTUVPVVQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgdGltZW91dCkKKyAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIApAQCAtMTAyMCwyMiArMTE1NiwyMyBAQAogICAgICAgICAgICAgZmguY2xvc2UoKQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCk6Ci0gICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCi0gICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCi0KLSAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHN0ZG91dCA9IFtdCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZG91dCwgc3Rkb3V0KSkKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLnN0YXJ0KCkKLSAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHN0ZGVyciA9IFtdCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZGVyciwgc3RkZXJyKSkKLSAgICAgICAgICAgICAgICBzdGRlcnJfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICBzdGRlcnJfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgICMgU3RhcnQgcmVhZGVyIHRocmVhZHMgZmVlZGluZyBpbnRvIGEgbGlzdCBoYW5naW5nIG9mZiBvZiB0aGlzCisgICAgICAgICAgICAjIG9iamVjdCwgdW5sZXNzIHRoZXkndmUgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQuCisgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBhbmQgbm90IGhhc2F0dHIoc2VsZiwgIl9zdGRvdXRfYnVmZiIpOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuc3Rkb3V0LCBzZWxmLl9zdGRvdXRfYnVmZikpCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3RkZXJyX2J1ZmYiKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZGVyciwgc2VsZi5fc3RkZXJyX2J1ZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLnN0YXJ0KCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKICAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKQEAgLTEwNDYsMTAgKzExODMsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQogCisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSByZWFkZXIgdGhyZWFkcywgb3IgdGltZSBvdXQuICBJZiB3ZSB0aW1lIG91dCwgdGhlCisgICAgICAgICAgICAjIHRocmVhZHMgcmVtYWluIHJlYWRpbmcgYW5kIHRoZSBmZHMgbGVmdCBvcGVuIGluIGNhc2UgdGhlIHVzZXIKKyAgICAgICAgICAgICMgY2FsbHMgY29tbXVuaWNhdGUgYWdhaW4uCisgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQuam9pbihzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dF90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCisgICAgICAgICAgICBpZiBzZWxmLnN0ZGVyciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuam9pbihzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCisKKyAgICAgICAgICAgICMgQ29sbGVjdCB0aGUgb3V0cHV0IGZyb20gYW5kIGNsb3NlIGJvdGggcGlwZXMsIG5vdyB0aGF0IHdlIGtub3cKKyAgICAgICAgICAgICMgYm90aCBoYXZlIGJlZW4gcmVhZCBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICBzdGRvdXQgPSBOb25lCisgICAgICAgICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLmpvaW4oKQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3N0ZG91dF9idWZmCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5qb2luKCkKKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9zdGRlcnJfYnVmZgorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKIAogICAgICAgICAgICAgIyBBbGwgZGF0YSBleGNoYW5nZWQuICBUcmFuc2xhdGUgbGlzdHMgaW50byBzdHJpbmdzLgogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgpAQCAtMTA1Nyw3ICsxMjEyLDYgQEAKICAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzdGRlcnIgPSBzdGRlcnJbMF0KIAotICAgICAgICAgICAgc2VsZi53YWl0KCkKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKICAgICAgICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZyk6CkBAIC0xMDc2LDE0ICsxMjMwLDEyIEBACiAgICAgICAgICAgICAiIiJUZXJtaW5hdGVzIHRoZSBwcm9jZXNzCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5UZXJtaW5hdGVQcm9jZXNzKHNlbGYuX2hhbmRsZSwgMSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKHNlbGYuX2hhbmRsZSwgMSkKKyAgICAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBFUlJPUl9BQ0NFU1NfREVOSUVEICh3aW5lcnJvciA1KSBpcyByZWNlaXZlZCB3aGVuIHRoZQogICAgICAgICAgICAgICAgICMgcHJvY2VzcyBhbHJlYWR5IGRpZWQuCi0gICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciAhPSA1OgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIHJjID0gX3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKLSAgICAgICAgICAgICAgICBpZiByYyA9PSBfc3VicHJvY2Vzcy5TVElMTF9BQ1RJVkU6CisgICAgICAgICAgICAgICAgcmMgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCisgICAgICAgICAgICAgICAgaWYgcmMgPT0gX3dpbmFwaS5TVElMTF9BQ1RJVkU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gcmMKIApAQCAtMTEwNSw2ICsxMjU3LDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbGlmIHN0ZGluID09IFBJUEU6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQorICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IHN0ZGluCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTExNSw2ICsxMjY5LDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgogICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX2NyZWF0ZV9waXBlKCkKKyAgICAgICAgICAgIGVsaWYgc3Rkb3V0ID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3Rkb3V0LCBpbnQpOgogICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc3Rkb3V0CiAgICAgICAgICAgICBlbHNlOgpAQCAtMTEyNyw2ICsxMjgzLDggQEAKICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF9jcmVhdGVfcGlwZSgpCiAgICAgICAgICAgICBlbGlmIHN0ZGVyciA9PSBTVERPVVQ6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBjMnB3cml0ZQorICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IHNlbGYuX2dldF9kZXZudWxsKCkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRlcnIsIGludCk6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzdGRlcnIKICAgICAgICAgICAgIGVsc2U6CkBAIC0xMTQ5LDcgKzEzMDcsNyBAQAogCiAKICAgICAgICAgZGVmIF9leGVjdXRlX2NoaWxkKHNlbGYsIGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8sIGNyZWF0aW9uZmxhZ3MsIHNoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKQEAgLTExNTcsNyArMTMxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uKToKICAgICAgICAgICAgICIiIkV4ZWN1dGUgcHJvZ3JhbSAoUE9TSVggdmVyc2lvbikiIiIKIAotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCBzdHIpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGFyZ3MgPSBbYXJnc10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXJncyA9IGxpc3QoYXJncykKQEAgLTExNzcsMTUzICsxMzM1LDM0IEBACiAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBtdXN0IGF2b2lkIGNvbXBsZXggd29yayB0aGF0IGNvdWxkIGludm9sdmUKKyAgICAgICAgICAgICAgICAgICAgIyBtYWxsb2Mgb3IgZnJlZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICAjIHBvdGVudGlhbCBkZWFkbG9ja3MsIHRodXMgd2UgZG8gYWxsIHRoaXMgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgcGFzcyBpdCB0byBmb3JrX2V4ZWMoKQogCi0gICAgICAgICAgICAgICAgICAgIGlmIF9wb3NpeHN1YnByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdlIG11c3QgYXZvaWQgY29tcGxleCB3b3JrIHRoYXQgY291bGQgaW52b2x2ZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWxsb2Mgb3IgZnJlZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyB0byBhdm9pZAotICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgZGVhZGxvY2tzLCB0aHVzIHdlIGRvIGFsbCB0aGlzIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBwYXNzIGl0IHRvIGZvcmtfZXhlYygpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IFtvcy5mc2VuY29kZShrKSArIGInPScgKyBvcy5mc2VuY29kZSh2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGVudi5pdGVtcygpXQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IE5vbmUgICMgVXNlIGV4ZWN2IGluc3RlYWQgb2YgZXhlY3ZlLgotICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmZzZW5jb2RlKGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gKGV4ZWN1dGFibGUsKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygb3MuX2V4ZWN2cGUoKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX2xpc3QgPSB0dXBsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKGRpciksIGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gb3MuZ2V0X2V4ZWNfcGF0aChlbnYpKQotICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gX3Bvc2l4c3VicHJvY2Vzcy5mb3JrX2V4ZWMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGV4ZWN1dGFibGVfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzLCBzb3J0ZWQoZmRzX3RvX2tlZXApLCBjd2QsIGVudl9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwgYzJwcmVhZCwgYzJwd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscywgc3RhcnRfbmV3X3Nlc3Npb24sIHByZWV4ZWNfZm4pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IFtvcy5mc2VuY29kZShrKSArIGInPScgKyBvcy5mc2VuY29kZSh2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCldCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uOiBJdCBpcyBub3QgdGhyZWFkIHNhZmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaW1wbGVtZW50YXRpb24gbWF5IGRlYWRsb2NrIGluIHRoZSBjaGlsZCBpZiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhcmVudCBwcm9jZXNzIGhhcyBhbnkgb3RoZXIgdGhyZWFkcyBydW5uaW5nLgotCi0gICAgICAgICAgICAgICAgICAgICAgICBnY193YXNfZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIERpc2FibGUgZ2MgdG8gYXZvaWQgYnVnIHdoZXJlIGdjIC0+IGZpbGVfZGVhbGxvYyAtPgotICAgICAgICAgICAgICAgICAgICAgICAgIyB3cml0ZSB0byBzdGRlcnIgLT4gaGFuZy4gIFNlZSBpc3N1ZTEzMzYKLSAgICAgICAgICAgICAgICAgICAgICAgIGdjLmRpc2FibGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gb3MuZm9yaygpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZ2Nfd2FzX2VuYWJsZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnBpZCA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkX3ByZWV4ZWMgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnQncyBwaXBlIGVuZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShwMmN3cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGMycHJlYWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJyZWFkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJwaXBlX3JlYWQpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXaGVuIGR1cGluZyBmZHMsIGlmIHRoZXJlIGFyaXNlcyBhIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoZXJlIG9uZSBvZiB0aGUgZmRzIGlzIGVpdGhlciAwLCAxIG9yIDIsIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgcG9zc2libGUgdGhhdCBpdCBpcyBvdmVyd3JpdHRlbiAoIzEyNjA3KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYzJwd3JpdGUgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlID0gb3MuZHVwKGMycHdyaXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSA9PSAwIG9yIGVycndyaXRlID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG9zLmR1cChlcnJ3cml0ZSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIER1cCBmZHMgZm9yIGNoaWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBfZHVwMihhLCBiKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZHVwMigpIHJlbW92ZXMgdGhlIENMT0VYRUMgZmxhZyBidXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgbXVzdCBkbyBpdCBvdXJzZWx2ZXMgaWYgZHVwMigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdvdWxkIGJlIGEgbm8tb3AgKGlzc3VlICMxMDgwNikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhID09IGI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NldF9jbG9leGVjKGEsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBhICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmR1cDIoYSwgYikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2R1cDIocDJjcmVhZCwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2R1cDIoYzJwd3JpdGUsIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKGVycndyaXRlLCAyKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2UgcGlwZSBmZHMuICBNYWtlIHN1cmUgd2UgZG9uJ3QgY2xvc2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2FtZSBmZCBtb3JlIHRoYW4gb25jZSwgb3Igc3RhbmRhcmQgZmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWQgPSBzZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmQgaW4gW3AyY3JlYWQsIGMycHdyaXRlLCBlcnJ3cml0ZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmZCA+IDIgYW5kIGZkIG5vdCBpbiBjbG9zZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkLmFkZChmZCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIGFsbCBvdGhlciBmZHMsIGlmIGFza2VkIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbG9zZV9mZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcCA9IHNldChwYXNzX2ZkcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwLmFkZChlcnJwaXBlX3dyaXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZmRzKGZkc190b19rZWVwKQotCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3dkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2hkaXIoY3dkKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIGNvcHkgb2YgUHl0aG9uL3B5dGhvbnJ1bi5jCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgX1B5X1Jlc3RvcmVTaWduYWxzKCkuICBJZiB0aGF0IHdlcmUgZXhwb3NlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFzIGEgc3lzLl9weV9yZXN0b3Jlc2lnbmFscyBmdW5jIGl0IHdvdWxkIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmV0dGVyLi4gYnV0IHRoaXMgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpc24ndCBsaWtlbHkgdG8gYmUgdXNlZCBtdWNoIGFueW1vcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3RvcmVfc2lnbmFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbHMgPSAoJ1NJR1BJUEUnLCAnU0lHWEZaJywgJ1NJR1hGU1onKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHNpZyBpbiBzaWduYWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2lnbmFsLCBzaWcpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKGdldGF0dHIoc2lnbmFsLCBzaWcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5TSUdfREZMKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXJ0X25ld19zZXNzaW9uIGFuZCBoYXNhdHRyKG9zLCAnc2V0c2lkJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zZXRzaWQoKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRfcHJlZXhlYyA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJlZXhlY19mbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWV4ZWNfZm4oKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudiBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZXhlY3ZwKGV4ZWN1dGFibGUsIGFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5leGVjdnBlKGV4ZWN1dGFibGUsIGFyZ3MsIGVudikKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSA9IHN5cy5leGNfaW5mbygpWzoyXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfdmFsdWUsIE9TRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX251bSA9IGV4Y192YWx1ZS5lcnJubwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19udW0gPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhY2hlZF9wcmVleGVjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y192YWx1ZSA9ICJub2V4ZWMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJyVzOiV4OiVzJyAlIChleGNfdHlwZS5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX251bSwgZXhjX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKGVycm9ycz0ic3Vycm9nYXRlcGFzcyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZShlcnJwaXBlX3dyaXRlLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBNVVNUIG5vdCBhbGxvdyBhbnl0aGluZyBvZGQgaGFwcGVuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFib3ZlIHRvIHByZXZlbnQgdXMgZnJvbSBleGl0aW5nIGJlbG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGV4aXRjb2RlIHdvbid0IGJlIHJlcG9ydGVkIHRvIGFwcGxpY2F0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc28gaXQgcmVhbGx5IGRvZXNuJ3QgbWF0dGVyIHdoYXQgd2UgcmV0dXJuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDI1NSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBQYXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdjX3dhc19lbmFibGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IE5vbmUgICMgVXNlIGV4ZWN2IGluc3RlYWQgb2YgZXhlY3ZlLgorICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZnNlbmNvZGUoZXhlY3V0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gKGV4ZWN1dGFibGUsKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIG9zLl9leGVjdnBlKCkuCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX2xpc3QgPSB0dXBsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuZnNlbmNvZGUoZGlyKSwgZXhlY3V0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGlyIGluIG9zLmdldF9leGVjX3BhdGgoZW52KSkKKyAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCisgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwLmFkZChlcnJwaXBlX3dyaXRlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IF9wb3NpeHN1YnByb2Nlc3MuZm9ya19leGVjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGV4ZWN1dGFibGVfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHMsIHNvcnRlZChmZHNfdG9fa2VlcCksIGN3ZCwgZW52X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsIGMycHJlYWQsIGMycHdyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfcmVhZCwgZXJycGlwZV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uLCBwcmVleGVjX2ZuKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICMgYmUgc3VyZSB0aGUgRkQgaXMgY2xvc2VkIG5vIG1hdHRlciB3aGF0CiAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGVycnBpcGVfd3JpdGUpCkBAIC0xMzM0LDYgKzEzNzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShjMnB3cml0ZSkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSAhPSAtMSBhbmQgZXJycmVhZCAhPSAtMToKICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJyd3JpdGUpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZGV2bnVsbCkKIAogICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgZXhlYyB0byBmYWlsIG9yIHN1Y2NlZWQ7IHBvc3NpYmx5IHJhaXNpbmcgYW4KICAgICAgICAgICAgICAgICAjIGV4Y2VwdGlvbiAobGltaXRlZCBpbiBzaXplKQpAQCAtMTQyNSwyNSArMTQ2Niw1NyBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKLSAgICAgICAgZGVmIHdhaXQoc2VsZik6CisgICAgICAgIGRlZiBfdHJ5X3dhaXQoc2VsZiwgd2FpdF9mbGFncyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IF9laW50cl9yZXRyeV9jYWxsKG9zLndhaXRwaWQsIHNlbGYucGlkLCB3YWl0X2ZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDSElMRDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZworICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNlIGJlZW4gZGlzYWJsZWQgZm9yIG91cgorICAgICAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UgY2FuJ3QgZ2V0IHRoZSBzdGF0dXMuCisgICAgICAgICAgICAgICAgcGlkID0gc2VsZi5waWQKKyAgICAgICAgICAgICAgICBzdHMgPSAwCisgICAgICAgICAgICByZXR1cm4gKHBpZCwgc3RzKQorCisKKyAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lLCBlbmR0aW1lPU5vbmUpOgogICAgICAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgIGF0dHJpYnV0ZS4iIiIKLSAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBfZWludHJfcmV0cnlfY2FsbChvcy53YWl0cGlkLCBzZWxmLnBpZCwgMCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDSElMRDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCi0gICAgICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNlIGJlZW4gZGlzYWJsZWQgZm9yIG91cgotICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdldCB0aGUgc3RhdHVzLgotICAgICAgICAgICAgICAgICAgICBzdHMgPSAwCisgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQorCisgICAgICAgICAgICAjIGVuZHRpbWUgaXMgcHJlZmVycmVkIHRvIHRpbWVvdXQuICB0aW1lb3V0IGlzIG9ubHkgdXNlZCBmb3IKKyAgICAgICAgICAgICMgcHJpbnRpbmcuCisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lIG9yIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBFbnRlciBhIGJ1c3kgbG9vcCBpZiB3ZSBoYXZlIGEgdGltZW91dC4gIFRoaXMgYnVzeSBsb29wIHdhcworICAgICAgICAgICAgICAgICMgY3JpYmJlZCBmcm9tIExpYi90aHJlYWRpbmcucHkgaW4gVGhyZWFkLndhaXQoKSBhdCByNzEwNjUuCisgICAgICAgICAgICAgICAgZGVsYXkgPSAwLjAwMDUgIyA1MDAgdXMgLT4gaW5pdGlhbCBkZWxheSBvZiAxIG1zCisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IHNlbGYuX3RyeV93YWl0KG9zLldOT0hBTkcpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwaWQgPT0gc2VsZi5waWQgb3IgcGlkID09IDAKKyAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIHRpbWVvdXQpCisgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gbWluKGRlbGF5ICogMiwgcmVtYWluaW5nLCAuMDUpCisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoZGVsYXkpCisgICAgICAgICAgICBlbGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBzZWxmLl90cnlfd2FpdCgwKQogICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CiAgICAgICAgICAgICAgICAgIyBGbHVzaCBzdGRpbyBidWZmZXIuICBUaGlzIG1pZ2h0IGJsb2NrLCBpZiB0aGUgdXNlciBoYXMKICAgICAgICAgICAgICAgICAjIGJlZW4gd3JpdGluZyB0byAuc3RkaW4gaW4gYW4gdW5jb250cm9sbGVkIGZhc2hpb24uCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5mbHVzaCgpCkBAIC0xNDUxLDkgKzE1MjQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCiAKICAgICAgICAgICAgIGlmIF9oYXNfcG9sbDoKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfcG9sbChpbnB1dCkKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfcG9sbChpbnB1dCwgZW5kdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnX3RpbWVvdXQpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9zZWxlY3QoaW5wdXQpCisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChpbnB1dCwgZW5kdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdfdGltZW91dCkKKworICAgICAgICAgICAgc2VsZi53YWl0KHRpbWVvdXQ9c2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCiAKICAgICAgICAgICAgICMgQWxsIGRhdGEgZXhjaGFuZ2VkLiAgVHJhbnNsYXRlIGxpc3RzIGludG8gc3RyaW5ncy4KICAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKQEAgLTE0NzEsNjcgKzE1NDgsOTIgQEAKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nKQogCi0gICAgICAgICAgICBzZWxmLndhaXQoKQogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9wb2xsKHNlbGYsIGlucHV0KToKKyAgICAgICAgZGVmIF9zYXZlX2lucHV0KHNlbGYsIGlucHV0KToKKyAgICAgICAgICAgICMgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIF9jb21tdW5pY2F0ZV93aXRoXyooKSBtZXRob2RzCisgICAgICAgICAgICAjIHNvIHRoYXQgaWYgd2UgdGltZSBvdXQgd2hpbGUgY29tbXVuaWNhdGluZywgd2UgY2FuIGNvbnRpbnVlCisgICAgICAgICAgICAjIHNlbmRpbmcgaW5wdXQgaWYgd2UgcmV0cnkuCisgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBzZWxmLl9pbnB1dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IGlucHV0CisgICAgICAgICAgICAgICAgaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgYW5kIGlucHV0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IHNlbGYuX2lucHV0LmVuY29kZShzZWxmLnN0ZGluLmVuY29kaW5nKQorCisKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3BvbGwoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCi0gICAgICAgICAgICBmZDJmaWxlID0ge30KLSAgICAgICAgICAgIGZkMm91dHB1dCA9IHt9CisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZSA9IHt9CiAKICAgICAgICAgICAgIHBvbGxlciA9IHNlbGVjdC5wb2xsKCkKICAgICAgICAgICAgIGRlZiByZWdpc3Rlcl9hbmRfYXBwZW5kKGZpbGVfb2JqLCBldmVudG1hc2spOgogICAgICAgICAgICAgICAgIHBvbGxlci5yZWdpc3RlcihmaWxlX29iai5maWxlbm8oKSwgZXZlbnRtYXNrKQotICAgICAgICAgICAgICAgIGZkMmZpbGVbZmlsZV9vYmouZmlsZW5vKCldID0gZmlsZV9vYmoKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlW2ZpbGVfb2JqLmZpbGVubygpXSA9IGZpbGVfb2JqCiAKICAgICAgICAgICAgIGRlZiBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpOgogICAgICAgICAgICAgICAgIHBvbGxlci51bnJlZ2lzdGVyKGZkKQotICAgICAgICAgICAgICAgIGZkMmZpbGVbZmRdLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBmZDJmaWxlLnBvcChmZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlW2ZkXS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZS5wb3AoZmQpCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIGlucHV0OgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRpbiwgc2VsZWN0LlBPTExPVVQpCiAKKyAgICAgICAgICAgICMgT25seSBjcmVhdGUgdGhpcyBtYXBwaW5nIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0ID0ge30KKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3Rkb3V0LmZpbGVubygpXSA9IFtdCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZkMm91dHB1dFtzZWxmLnN0ZGVyci5maWxlbm8oKV0gPSBbXQorCiAgICAgICAgICAgICBzZWxlY3RfUE9MTElOX1BPTExQUkkgPSBzZWxlY3QuUE9MTElOIHwgc2VsZWN0LlBPTExQUkkKICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRvdXQsIHNlbGVjdF9QT0xMSU5fUE9MTFBSSSkKLSAgICAgICAgICAgICAgICBmZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldID0gc3Rkb3V0ID0gW10KKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKICAgICAgICAgICAgICAgICByZWdpc3Rlcl9hbmRfYXBwZW5kKHNlbGYuc3RkZXJyLCBzZWxlY3RfUE9MTElOX1BPTExQUkkpCi0gICAgICAgICAgICAgICAgZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXSA9IHN0ZGVyciA9IFtdCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXQogCi0gICAgICAgICAgICBpbnB1dF9vZmZzZXQgPSAwCi0gICAgICAgICAgICB3aGlsZSBmZDJmaWxlOgorICAgICAgICAgICAgc2VsZi5fc2F2ZV9pbnB1dChpbnB1dCkKKworICAgICAgICAgICAgd2hpbGUgc2VsZi5fZmQyZmlsZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZWFkeSA9IHBvbGxlci5wb2xsKCkKKyAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBwb2xsZXIucG9sbCh0aW1lb3V0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9jaGVja190aW1lb3V0KGVuZHRpbWUsIG9yaWdfdGltZW91dCkKIAogICAgICAgICAgICAgICAgICMgWFhYIFJld3JpdGUgdGhlc2UgdG8gdXNlIG5vbi1ibG9ja2luZyBJL08gb24gdGhlCiAgICAgICAgICAgICAgICAgIyBmaWxlIG9iamVjdHM7IHRoZXkgYXJlIG5vIGxvbmdlciB1c2luZyBDIHN0ZGlvIQogCiAgICAgICAgICAgICAgICAgZm9yIGZkLCBtb2RlIGluIHJlYWR5OgogICAgICAgICAgICAgICAgICAgICBpZiBtb2RlICYgc2VsZWN0LlBPTExPVVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGlucHV0W2lucHV0X29mZnNldCA6IGlucHV0X29mZnNldCArIF9QSVBFX0JVRl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5faW5wdXRbc2VsZi5faW5wdXRfb2Zmc2V0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X29mZnNldCArPSBvcy53cml0ZShmZCwgY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICs9IG9zLndyaXRlKGZkLCBjaHVuaykKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUElQRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlucHV0X29mZnNldCA+PSBsZW4oaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lucHV0X29mZnNldCA+PSBsZW4oc2VsZi5faW5wdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgbW9kZSAmIHNlbGVjdF9QT0xMSU5fUE9MTFBSSToKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKGZkLCA0MDk2KQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQotICAgICAgICAgICAgICAgICAgICAgICAgZmQyb3V0cHV0W2ZkXS5hcHBlbmQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZkMm91dHB1dFtmZF0uYXBwZW5kKGRhdGEpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBoYW5nIHVwIG9yIGVycm9ycy4KICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKQEAgLTE1MzksNjEgKzE2NDEsODMgQEAKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKIAotICAgICAgICBkZWYgX2NvbW11bmljYXRlX3dpdGhfc2VsZWN0KHNlbGYsIGlucHV0KToKLSAgICAgICAgICAgIHJlYWRfc2V0ID0gW10KLSAgICAgICAgICAgIHdyaXRlX3NldCA9IFtdCisgICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9zZWxlY3Qoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0ID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQgPSBbXQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIGlucHV0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQuYXBwZW5kKHNlbGYuc3RkaW4pCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZG91dCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3RkZXJyKQorCisgICAgICAgICAgICBzZWxmLl9zYXZlX2lucHV0KGlucHV0KQorCiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCiAKLSAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIGlucHV0OgotICAgICAgICAgICAgICAgIHdyaXRlX3NldC5hcHBlbmQoc2VsZi5zdGRpbikKICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHJlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZG91dCkKLSAgICAgICAgICAgICAgICBzdGRvdXQgPSBbXQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmID0gW10KKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9zdGRvdXRfYnVmZgogICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3RkZXJyKQotICAgICAgICAgICAgICAgIHN0ZGVyciA9IFtdCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmYgPSBbXQorICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3N0ZGVycl9idWZmCiAKLSAgICAgICAgICAgIGlucHV0X29mZnNldCA9IDAKLSAgICAgICAgICAgIHdoaWxlIHJlYWRfc2V0IG9yIHdyaXRlX3NldDoKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX3JlYWRfc2V0IG9yIHNlbGYuX3dyaXRlX3NldDoKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBybGlzdCwgd2xpc3QsIHhsaXN0ID0gc2VsZWN0LnNlbGVjdChyZWFkX3NldCwgd3JpdGVfc2V0LCBbXSkKKyAgICAgICAgICAgICAgICAgICAgKHJsaXN0LCB3bGlzdCwgeGxpc3QpID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChzZWxmLl9yZWFkX3NldCwgc2VsZi5fd3JpdGVfc2V0LCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCkKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSA9PSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKKyAgICAgICAgICAgICAgICAjIEFjY29yZGluZyB0byB0aGUgZG9jcywgcmV0dXJuaW5nIHRocmVlIGVtcHR5IGxpc3RzIGluZGljYXRlcworICAgICAgICAgICAgICAgICMgdGhhdCB0aGUgdGltZW91dCBleHBpcmVkLgorICAgICAgICAgICAgICAgIGlmIG5vdCAocmxpc3Qgb3Igd2xpc3Qgb3IgeGxpc3QpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKKyAgICAgICAgICAgICAgICAjIFdlIGFsc28gY2hlY2sgd2hhdCB0aW1lIGl0IGlzIG91cnNlbHZlcyBmb3IgZ29vZCBtZWFzdXJlLgorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3RpbWVvdXQoZW5kdGltZSwgb3JpZ190aW1lb3V0KQorCiAgICAgICAgICAgICAgICAgIyBYWFggUmV3cml0ZSB0aGVzZSB0byB1c2Ugbm9uLWJsb2NraW5nIEkvTyBvbiB0aGUKICAgICAgICAgICAgICAgICAjIGZpbGUgb2JqZWN0czsgdGhleSBhcmUgbm8gbG9uZ2VyIHVzaW5nIEMgc3RkaW8hCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGluIHdsaXN0OgotICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGlucHV0W2lucHV0X29mZnNldCA6IGlucHV0X29mZnNldCArIF9QSVBFX0JVRl0KKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLl9pbnB1dFtzZWxmLl9pbnB1dF9vZmZzZXQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArIF9QSVBFX0JVRl0KICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfd3JpdHRlbiA9IG9zLndyaXRlKHNlbGYuc3RkaW4uZmlsZW5vKCksIGNodW5rKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUElQRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2V0LnJlbW92ZShzZWxmLnN0ZGluKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ICs9IGJ5dGVzX3dyaXR0ZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlucHV0X29mZnNldCA+PSBsZW4oaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICs9IGJ5dGVzX3dyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lucHV0X29mZnNldCA+PSBsZW4oc2VsZi5faW5wdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBpbiBybGlzdDoKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQoc2VsZi5zdGRvdXQuZmlsZW5vKCksIDEwMjQpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3Rkb3V0KQogICAgICAgICAgICAgICAgICAgICBzdGRvdXQuYXBwZW5kKGRhdGEpCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVyciBpbiBybGlzdDoKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQoc2VsZi5zdGRlcnIuZmlsZW5vKCksIDEwMjQpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3RkZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQucmVtb3ZlKHNlbGYuc3RkZXJyKQogICAgICAgICAgICAgICAgICAgICBzdGRlcnIuYXBwZW5kKGRhdGEpCiAKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCkBAIC0xNjEzLDY4ICsxNzM3LDMgQEAKICAgICAgICAgICAgICIiIktpbGwgdGhlIHByb2Nlc3Mgd2l0aCBTSUdLSUxMCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHNlbGYuc2VuZF9zaWduYWwoc2lnbmFsLlNJR0tJTEwpCi0KLQotZGVmIF9kZW1vX3Bvc2l4KCk6Ci0gICAgIwotICAgICMgRXhhbXBsZSAxOiBTaW1wbGUgcmVkaXJlY3Rpb246IEdldCBwcm9jZXNzIGxpc3QKLSAgICAjCi0gICAgcGxpc3QgPSBQb3BlbihbInBzIl0sIHN0ZG91dD1QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCi0gICAgcHJpbnQoIlByb2Nlc3MgbGlzdDoiKQotICAgIHByaW50KHBsaXN0KQotCi0gICAgIwotICAgICMgRXhhbXBsZSAyOiBDaGFuZ2UgdWlkIGJlZm9yZSBleGVjdXRpbmcgY2hpbGQKLSAgICAjCi0gICAgaWYgb3MuZ2V0dWlkKCkgPT0gMDoKLSAgICAgICAgcCA9IFBvcGVuKFsiaWQiXSwgcHJlZXhlY19mbj1sYW1iZGE6IG9zLnNldHVpZCgxMDApKQotICAgICAgICBwLndhaXQoKQotCi0gICAgIwotICAgICMgRXhhbXBsZSAzOiBDb25uZWN0aW5nIHNldmVyYWwgc3VicHJvY2Vzc2VzCi0gICAgIwotICAgIHByaW50KCJMb29raW5nIGZvciAnaGRhJy4uLiIpCi0gICAgcDEgPSBQb3BlbihbImRtZXNnIl0sIHN0ZG91dD1QSVBFKQotICAgIHAyID0gUG9wZW4oWyJncmVwIiwgImhkYSJdLCBzdGRpbj1wMS5zdGRvdXQsIHN0ZG91dD1QSVBFKQotICAgIHByaW50KHJlcHIocDIuY29tbXVuaWNhdGUoKVswXSkpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDQ6IENhdGNoIGV4ZWN1dGlvbiBlcnJvcgotICAgICMKLSAgICBwcmludCgpCi0gICAgcHJpbnQoIlRyeWluZyBhIHdlaXJkIGZpbGUuLi4iKQotICAgIHRyeToKLSAgICAgICAgcHJpbnQoUG9wZW4oWyIvdGhpcy9wYXRoL2RvZXMvbm90L2V4aXN0Il0pLmNvbW11bmljYXRlKCkpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICBwcmludCgiVGhlIGZpbGUgZGlkbid0IGV4aXN0LiAgSSB0aG91Z2h0IHNvLi4uIikKLSAgICAgICAgICAgIHByaW50KCJDaGlsZCB0cmFjZWJhY2s6IikKLSAgICAgICAgICAgIHByaW50KGUuY2hpbGRfdHJhY2ViYWNrKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIkVycm9yIiwgZS5lcnJubykKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiR29zaC4gIE5vIGVycm9yLiIsIGZpbGU9c3lzLnN0ZGVycikKLQotCi1kZWYgX2RlbW9fd2luZG93cygpOgotICAgICMKLSAgICAjIEV4YW1wbGUgMTogQ29ubmVjdGluZyBzZXZlcmFsIHN1YnByb2Nlc3NlcwotICAgICMKLSAgICBwcmludCgiTG9va2luZyBmb3IgJ1BST01QVCcgaW4gc2V0IG91dHB1dC4uLiIpCi0gICAgcDEgPSBQb3Blbigic2V0Iiwgc3Rkb3V0PVBJUEUsIHNoZWxsPVRydWUpCi0gICAgcDIgPSBQb3BlbignZmluZCAiUFJPTVBUIicsIHN0ZGluPXAxLnN0ZG91dCwgc3Rkb3V0PVBJUEUpCi0gICAgcHJpbnQocmVwcihwMi5jb21tdW5pY2F0ZSgpWzBdKSkKLQotICAgICMKLSAgICAjIEV4YW1wbGUgMjogU2ltcGxlIGV4ZWN1dGlvbiBvZiBwcm9ncmFtCi0gICAgIwotICAgIHByaW50KCJFeGVjdXRpbmcgY2FsYy4uLiIpCi0gICAgcCA9IFBvcGVuKCJjYWxjIikKLSAgICBwLndhaXQoKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgaWYgbXN3aW5kb3dzOgotICAgICAgICBfZGVtb193aW5kb3dzKCkKLSAgICBlbHNlOgotICAgICAgICBfZGVtb19wb3NpeCgpCmRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQppbmRleCBiMjE4M2Q4Li43MWRhMWRiIDEwMDY0NAotLS0gYS9MaWIvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9zeXNjb25maWcucHkKQEAgLTEsOCArMSw4IEBACi0iIiJQcm92aWRlIGFjY2VzcyB0byBQeXRob24ncyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgorIiIiQWNjZXNzIHRvIFB5dGhvbidzIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uIiIiCiAKLSIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKIGZyb20gb3MucGF0aCBpbXBvcnQgcGFyZGlyLCByZWFscGF0aAogCiBfX2FsbF9fID0gWwpAQCAtMTcsNTAgKzE3LDUwIEBACiAgICAgJ2dldF9weXRob25fdmVyc2lvbicsCiAgICAgJ2dldF9zY2hlbWVfbmFtZXMnLAogICAgICdwYXJzZV9jb25maWdfaCcsCi0gICAgXQorXQogCiBfSU5TVEFMTF9TQ0hFTUVTID0gewogICAgICdwb3NpeF9wcmVmaXgnOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzoKLSAgICAgICAgICAgICd7YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKKyAgICAgICAgICAgICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCiAgICAgICAgICdwbGF0aW5jbHVkZSc6Ci0gICAgICAgICAgICAne3BsYXRiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAorICAgICAgICAgICAgJ3tpbnN0YWxsZWRfcGxhdGJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9iaW4nLAogICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdwb3NpeF9ob21lJzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L2xpYi9weXRob24nLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAotICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob24nLAotICAgICAgICAncGxhdGluY2x1ZGUnOiAne2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKKyAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCisgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3tiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ250JzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9MaWInLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vTGliJywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L0xpYicsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKLSAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9TY3JpcHRzJywKLSAgICAgICAgJ2RhdGEnICAgOiAne2Jhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAnb3MyJzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9MaWInLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vTGliJywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L0xpYicsCiAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9MaWIvc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKLSAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tiYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKKyAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9TY3JpcHRzJywKLSAgICAgICAgJ2RhdGEnICAgOiAne2Jhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAnb3MyX2hvbWUnOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ250X3VzZXInOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0nLApAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vSW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vU2NyaXB0cycsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAncG9zaXhfdXNlcic6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLApAQCAtODcsNyArODcsNyBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAnb3N4X2ZyYW1ld29ya191c2VyJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbicsCkBAIC05NiwyMCArOTYsMjYgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9uL3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICB9CiAKIF9TQ0hFTUVfS0VZUyA9ICgnc3RkbGliJywgJ3BsYXRzdGRsaWInLCAncHVyZWxpYicsICdwbGF0bGliJywgJ2luY2x1ZGUnLAogICAgICAgICAgICAgICAgICdzY3JpcHRzJywgJ2RhdGEnKQorCisgIyBGSVhNRSBkb24ndCByZWx5IG9uIHN5cy52ZXJzaW9uIGhlcmUsIGl0cyBmb3JtYXQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsCisgIyBvZiBDUHl0aG9uLCB1c2Ugc3lzLnZlcnNpb25faW5mbyBvciBzeXMuaGV4dmVyc2lvbgogX1BZX1ZFUlNJT04gPSBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCiBfUFlfVkVSU0lPTl9TSE9SVCA9IHN5cy52ZXJzaW9uWzozXQogX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQogX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKK19CQVNFX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KQogX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpCitfQkFTRV9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfZXhlY19wcmVmaXgpCiBfQ09ORklHX1ZBUlMgPSBOb25lCiBfVVNFUl9CQVNFID0gTm9uZQogCisKIGRlZiBfc2FmZV9yZWFscGF0aChwYXRoKToKICAgICB0cnk6CiAgICAgICAgIHJldHVybiByZWFscGF0aChwYXRoKQpAQCAtMTMyLDE5ICsxMzgsMzUgQEAKIGlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNidWlsZFxcYW1kNjQiIGluIF9QUk9KRUNUX0JBU0VbLTE0Ol0ubG93ZXIoKToKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKIAotZGVmIGlzX3B5dGhvbl9idWlsZCgpOgorIyBzZXQgZm9yIGNyb3NzIGJ1aWxkcworaWYgIl9QWVRIT05fUFJPSkVDVF9CQVNFIiBpbiBvcy5lbnZpcm9uOgorICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5lbnZpcm9uWyJfUFlUSE9OX1BST0pFQ1RfQkFTRSJdKQorCitkZWYgX2lzX3B5dGhvbl9zb3VyY2VfZGlyKGQpOgogICAgIGZvciBmbiBpbiAoIlNldHVwLmRpc3QiLCAiU2V0dXAubG9jYWwiKToKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsICJNb2R1bGVzIiwgZm4pKToKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGQsICJNb2R1bGVzIiwgZm4pKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCiAKLV9QWVRIT05fQlVJTEQgPSBpc19weXRob25fYnVpbGQoKQorX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCitpZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAorICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorZGVmIGlzX3B5dGhvbl9idWlsZChjaGVja19ob21lPUZhbHNlKToKKyAgICBpZiBjaGVja19ob21lIGFuZCBfc3lzX2hvbWU6CisgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQorICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX1BST0pFQ1RfQkFTRSkKKworX1BZVEhPTl9CVUlMRCA9IGlzX3B5dGhvbl9idWlsZChUcnVlKQogCiBpZiBfUFlUSE9OX0JVSUxEOgogICAgIGZvciBzY2hlbWUgaW4gKCdwb3NpeF9wcmVmaXgnLCAncG9zaXhfaG9tZScpOgogICAgICAgICBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV1bJ2luY2x1ZGUnXSA9ICd7c3JjZGlyfS9JbmNsdWRlJwogICAgICAgICBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV1bJ3BsYXRpbmNsdWRlJ10gPSAne3Byb2plY3RiYXNlfS8uJwogCisKIGRlZiBfc3Vic3RfdmFycyhzLCBsb2NhbF92YXJzKToKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBzLmZvcm1hdCgqKmxvY2FsX3ZhcnMpCkBAIC0xNjEsNiArMTgzLDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRhcmdldF9kaWN0W2tleV0gPSB2YWx1ZQogCisKIGRlZiBfZXhwYW5kX3ZhcnMoc2NoZW1lLCB2YXJzKToKICAgICByZXMgPSB7fQogICAgIGlmIHZhcnMgaXMgTm9uZToKQEAgLTE3MywyOSArMTk2LDQxIEBACiAgICAgICAgIHJlc1trZXldID0gb3MucGF0aC5ub3JtcGF0aChfc3Vic3RfdmFycyh2YWx1ZSwgdmFycykpCiAgICAgcmV0dXJuIHJlcwogCisKIGRlZiBfZ2V0X2RlZmF1bHRfc2NoZW1lKCk6CiAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgogICAgICAgICAjIHRoZSBkZWZhdWx0IHNjaGVtZSBmb3IgcG9zaXggaXMgcG9zaXhfcHJlZml4CiAgICAgICAgIHJldHVybiAncG9zaXhfcHJlZml4JwogICAgIHJldHVybiBvcy5uYW1lCiAKKwogZGVmIF9nZXR1c2VyYmFzZSgpOgogICAgIGVudl9iYXNlID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTlVTRVJCQVNFIiwgTm9uZSkKKwogICAgIGRlZiBqb2ludXNlcigqYXJncyk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5qb2luKCphcmdzKSkKIAogICAgICMgd2hhdCBhYm91dCAnb3MyZW14JywgJ3Jpc2NvcycgPwogICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgYmFzZSA9IG9zLmVudmlyb24uZ2V0KCJBUFBEQVRBIikgb3IgIn4iCi0gICAgICAgIHJldHVybiBlbnZfYmFzZSBpZiBlbnZfYmFzZSBlbHNlIGpvaW51c2VyKGJhc2UsICJQeXRob24iKQorICAgICAgICBpZiBlbnZfYmFzZToKKyAgICAgICAgICAgIHJldHVybiBlbnZfYmFzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGpvaW51c2VyKGJhc2UsICJQeXRob24iKQogCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgogICAgICAgICBmcmFtZXdvcmsgPSBnZXRfY29uZmlnX3ZhcigiUFlUSE9ORlJBTUVXT1JLIikKICAgICAgICAgaWYgZnJhbWV3b3JrOgotICAgICAgICAgICAgcmV0dXJuIGVudl9iYXNlIGlmIGVudl9iYXNlIGVsc2Ugam9pbnVzZXIoIn4iLCAiTGlicmFyeSIsIGZyYW1ld29yaywgIiVkLiVkIiUoCi0gICAgICAgICAgICAgICAgc3lzLnZlcnNpb25faW5mb1s6Ml0pKQorICAgICAgICAgICAgaWYgZW52X2Jhc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudl9iYXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBqb2ludXNlcigifiIsICJMaWJyYXJ5IiwgZnJhbWV3b3JrLCAiJWQuJWQiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKLSAgICByZXR1cm4gZW52X2Jhc2UgaWYgZW52X2Jhc2UgZWxzZSBqb2ludXNlcigifiIsICIubG9jYWwiKQorICAgIGlmIGVudl9iYXNlOgorICAgICAgICByZXR1cm4gZW52X2Jhc2UKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gam9pbnVzZXIoIn4iLCAiLmxvY2FsIikKIAogCiBkZWYgX3BhcnNlX21ha2VmaWxlKGZpbGVuYW1lLCB2YXJzPU5vbmUpOgpAQCAtMjA1LDcgKzI0MCw2IEBACiAgICAgb3B0aW9uYWwgZGljdGlvbmFyeSBpcyBwYXNzZWQgaW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgaXQgaXMKICAgICB1c2VkIGluc3RlYWQgb2YgYSBuZXcgZGljdGlvbmFyeS4KICAgICAiIiIKLSAgICBpbXBvcnQgcmUKICAgICAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICAgICAjIGxpa2Ugb2xkLXN0eWxlIFNldHVwIGZpbGVzKS4KICAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKQEAgLTI2Nyw3ICszMDEsOCBAQAogICAgICAgICAgICAgICAgICAgICBpdGVtID0gb3MuZW52aXJvbltuXQogCiAgICAgICAgICAgICAgICAgZWxpZiBuIGluIHJlbmFtZWRfdmFyaWFibGVzOgotICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1BZXycpIGFuZCBuYW1lWzM6XSBpbiByZW5hbWVkX3ZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc3RhcnRzd2l0aCgnUFlfJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lWzM6XSBpbiByZW5hbWVkX3ZhcmlhYmxlcyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID0gIiIKIAogICAgICAgICAgICAgICAgICAgICBlbGlmICdQWV8nICsgbiBpbiBub3Rkb25lOgpAQCAtMzAwLDcgKzMzNSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gZG9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZVtuYW1lXSA9IHZhbHVlCiAKLQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGJvZ3VzIHZhcmlhYmxlIHJlZmVyZW5jZSAoZS5nLiAicHJlZml4PSQvb3B0L3B5dGhvbiIpOwogICAgICAgICAgICAgICAgICMganVzdCBkcm9wIGl0IHNpbmNlIHdlIGNhbid0IGRlYWwKQEAgLTMyMCwxNCArMzU0LDE3IEBACiBkZWYgZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCk6CiAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIG9mIHRoZSBNYWtlZmlsZS4iIiIKICAgICBpZiBfUFlUSE9OX0JVSUxEOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsICJNYWtlZmlsZSIpCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbihnZXRfcGF0aCgnc3RkbGliJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlnLXt9e30nLmZvcm1hdChfUFlfVkVSU0lPTl9TSE9SVCwgc3lzLmFiaWZsYWdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdNYWtlZmlsZScpCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIF9QUk9KRUNUX0JBU0UsICJNYWtlZmlsZSIpCisgICAgaWYgaGFzYXR0cihzeXMsICdhYmlmbGFncycpOgorICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnLSVzJXMnICUgKF9QWV9WRVJTSU9OX1NIT1JULCBzeXMuYWJpZmxhZ3MpCisgICAgZWxzZToKKyAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZycKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKGdldF9wYXRoKCdzdGRsaWInKSwgY29uZmlnX2Rpcl9uYW1lLCAnTWFrZWZpbGUnKQogCi0KLWRlZiBfaW5pdF9wb3NpeCh2YXJzKToKLSAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCitkZWYgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKToKKyAgICAiIiJHZW5lcmF0ZSB0aGUgUHl0aG9uIG1vZHVsZSBjb250YWluaW5nIGJ1aWxkLXRpbWUgdmFyaWFibGVzLiIiIgorICAgIGltcG9ydCBwcHJpbnQKKyAgICB2YXJzID0ge30KICAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBNYWtlZmlsZToKICAgICBtYWtlZmlsZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCiAgICAgdHJ5OgpAQCAtMzUzLDYgKzM5MCw0NiBAQAogICAgIGlmIF9QWVRIT05fQlVJTEQ6CiAgICAgICAgIHZhcnNbJ0xEU0hBUkVEJ10gPSB2YXJzWydCTERTSEFSRUQnXQogCisgICAgIyBUaGVyZSdzIGEgY2hpY2tlbi1hbmQtZWdnIHNpdHVhdGlvbiBvbiBPUyBYIHdpdGggcmVnYXJkcyB0byB0aGUKKyAgICAjIF9zeXNjb25maWdkYXRhIG1vZHVsZSBhZnRlciB0aGUgY2hhbmdlcyBpbnRyb2R1Y2VkIGJ5ICMxNTI5ODoKKyAgICAjIGdldF9jb25maWdfdmFycygpIGlzIGNhbGxlZCBieSBnZXRfcGxhdGZvcm0oKSBhcyBwYXJ0IG9mIHRoZQorICAgICMgYG1ha2UgcHlidWlsZGRpci50eHRgIHRhcmdldCAtLSB3aGljaCBpcyBhIHByZWN1cnNvciB0byB0aGUKKyAgICAjIF9zeXNjb25maWdkYXRhLnB5IG1vZHVsZSBiZWluZyBjb25zdHJ1Y3RlZC4gIFVuZm9ydHVuYXRlbHksCisgICAgIyBnZXRfY29uZmlnX3ZhcnMoKSBldmVudHVhbGx5IGNhbGxzIF9pbml0X3Bvc2l4KCksIHdoaWNoIGF0dGVtcHRzCisgICAgIyB0byBpbXBvcnQgX3N5c2NvbmZpZ2RhdGEsIHdoaWNoIHdlIHdvbid0IGhhdmUgYnVpbHQgeWV0LiAgSW4gb3JkZXIKKyAgICAjIGZvciBfaW5pdF9wb3NpeCgpIHRvIHdvcmssIGlmIHdlJ3JlIG9uIERhcndpbiwganVzdCBtb2NrIHVwIHRoZQorICAgICMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIG1hbnVhbGx5IGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHRoZSBidWlsZCB2YXJzLgorICAgICMgVGhpcyBpcyBtb3JlIHRoYW4gc3VmZmljaWVudCBmb3IgZW5zdXJpbmcgdGhlIHN1YnNlcXVlbnQgY2FsbCB0bworICAgICMgZ2V0X3BsYXRmb3JtKCkgc3VjY2VlZHMuCisgICAgbmFtZSA9ICdfc3lzY29uZmlnZGF0YScKKyAgICBpZiAnZGFyd2luJyBpbiBzeXMucGxhdGZvcm06CisgICAgICAgIGltcG9ydCBpbXAKKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgbW9kdWxlLmJ1aWxkX3RpbWVfdmFycyA9IHZhcnMKKyAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKworICAgIHB5YnVpbGRkaXIgPSAnYnVpbGQvbGliLiVzLSVzJyAlIChnZXRfcGxhdGZvcm0oKSwgc3lzLnZlcnNpb25bOjNdKQorICAgIGlmIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgorICAgICAgICBweWJ1aWxkZGlyICs9ICctcHlkZWJ1ZycKKyAgICBvcy5tYWtlZGlycyhweWJ1aWxkZGlyLCBleGlzdF9vaz1UcnVlKQorICAgIGRlc3RmaWxlID0gb3MucGF0aC5qb2luKHB5YnVpbGRkaXIsIG5hbWUgKyAnLnB5JykKKworICAgIHdpdGggb3BlbihkZXN0ZmlsZSwgJ3cnLCBlbmNvZGluZz0ndXRmOCcpIGFzIGY6CisgICAgICAgIGYud3JpdGUoJyMgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZ2VuZXJhdGVkIGFuZCB1c2VkIGJ5JworICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCisgICAgICAgIGYud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCisgICAgICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWYpCisKKyAgICAjIENyZWF0ZSBmaWxlIHVzZWQgZm9yIHN5cy5wYXRoIGZpeHVwIC0tIHNlZSBNb2R1bGVzL2dldHBhdGguYworICAgIHdpdGggb3BlbigncHlidWlsZGRpci50eHQnLCAndycsIGVuY29kaW5nPSdhc2NpaScpIGFzIGY6CisgICAgICAgIGYud3JpdGUocHlidWlsZGRpcikKKworZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgorICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKKyAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgIGZyb20gX3N5c2NvbmZpZ2RhdGEgaW1wb3J0IGJ1aWxkX3RpbWVfdmFycworICAgIHZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKKwogZGVmIF9pbml0X25vbl9wb3NpeCh2YXJzKToKICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIE5UIiIiCiAgICAgIyBzZXQgYmFzaWMgaW5zdGFsbCBkaXJlY3RvcmllcwpAQCAtMzc2LDcgKzQ1Myw2IEBACiAgICAgb3B0aW9uYWwgZGljdGlvbmFyeSBpcyBwYXNzZWQgaW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgaXQgaXMKICAgICB1c2VkIGluc3RlYWQgb2YgYSBuZXcgZGljdGlvbmFyeS4KICAgICAiIiIKLSAgICBpbXBvcnQgcmUKICAgICBpZiB2YXJzIGlzIE5vbmU6CiAgICAgICAgIHZhcnMgPSB7fQogICAgIGRlZmluZV9yeCA9IHJlLmNvbXBpbGUoIiNkZWZpbmUgKFtBLVpdW0EtWmEtejAtOV9dKykgKC4qKVxuIikKQEAgLTM4OSw4ICs0NjUsMTAgQEAKICAgICAgICAgbSA9IGRlZmluZV9yeC5tYXRjaChsaW5lKQogICAgICAgICBpZiBtOgogICAgICAgICAgICAgbiwgdiA9IG0uZ3JvdXAoMSwgMikKLSAgICAgICAgICAgIHRyeTogdiA9IGludCh2KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6IHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2ID0gaW50KHYpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICB2YXJzW25dID0gdgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbSA9IHVuZGVmX3J4Lm1hdGNoKGxpbmUpCkBAIC0zOTgsMjcgKzQ3NiwyOSBAQAogICAgICAgICAgICAgICAgIHZhcnNbbS5ncm91cCgxKV0gPSAwCiAgICAgcmV0dXJuIHZhcnMKIAorCiBkZWYgZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCk6CiAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIG9mIHB5Y29uZmlnLmguIiIiCiAgICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgotICAgICAgICAgICAgaW5jX2RpciA9IG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCAiUEMiKQorICAgICAgICAgICAgaW5jX2RpciA9IG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgX1BST0pFQ1RfQkFTRSwgIlBDIikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGluY19kaXIgPSBfUFJPSkVDVF9CQVNFCisgICAgICAgICAgICBpbmNfZGlyID0gX3N5c19ob21lIG9yIF9QUk9KRUNUX0JBU0UKICAgICBlbHNlOgogICAgICAgICBpbmNfZGlyID0gZ2V0X3BhdGgoJ3BsYXRpbmNsdWRlJykKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGluY19kaXIsICdweWNvbmZpZy5oJykKIAorCiBkZWYgZ2V0X3NjaGVtZV9uYW1lcygpOgogICAgICIiIlJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHNjaGVtZXMgbmFtZXMuIiIiCi0gICAgc2NoZW1lcyA9IGxpc3QoX0lOU1RBTExfU0NIRU1FUy5rZXlzKCkpCi0gICAgc2NoZW1lcy5zb3J0KCkKLSAgICByZXR1cm4gdHVwbGUoc2NoZW1lcykKKyAgICByZXR1cm4gdHVwbGUoc29ydGVkKF9JTlNUQUxMX1NDSEVNRVMpKQorCiAKIGRlZiBnZXRfcGF0aF9uYW1lcygpOgogICAgICIiIlJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhdGhzIG5hbWVzLiIiIgogICAgIHJldHVybiBfU0NIRU1FX0tFWVMKIAorCiBkZWYgZ2V0X3BhdGhzKHNjaGVtZT1fZ2V0X2RlZmF1bHRfc2NoZW1lKCksIHZhcnM9Tm9uZSwgZXhwYW5kPVRydWUpOgogICAgICIiIlJldHVybiBhIG1hcHBpbmcgY29udGFpbmluZyBhbiBpbnN0YWxsIHNjaGVtZS4KIApAQCAtNDMwLDYgKzUxMCw3IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXQogCisKIGRlZiBnZXRfcGF0aChuYW1lLCBzY2hlbWU9X2dldF9kZWZhdWx0X3NjaGVtZSgpLCB2YXJzPU5vbmUsIGV4cGFuZD1UcnVlKToKICAgICAiIiJSZXR1cm4gYSBwYXRoIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNjaGVtZS4KIApAQCAtNDM3LDE3ICs1MTgsMTcgQEAKICAgICAiIiIKICAgICByZXR1cm4gZ2V0X3BhdGhzKHNjaGVtZSwgdmFycywgZXhwYW5kKVtuYW1lXQogCisKIGRlZiBnZXRfY29uZmlnX3ZhcnMoKmFyZ3MpOgogICAgICIiIldpdGggbm8gYXJndW1lbnRzLCByZXR1cm4gYSBkaWN0aW9uYXJ5IG9mIGFsbCBjb25maWd1cmF0aW9uCiAgICAgdmFyaWFibGVzIHJlbGV2YW50IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS4KIAogICAgIE9uIFVuaXgsIHRoaXMgbWVhbnMgZXZlcnkgdmFyaWFibGUgZGVmaW5lZCBpbiBQeXRob24ncyBpbnN0YWxsZWQgTWFrZWZpbGU7Ci0gICAgT24gV2luZG93cyBhbmQgTWFjIE9TIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgorICAgIE9uIFdpbmRvd3MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCiAKICAgICBXaXRoIGFyZ3VtZW50cywgcmV0dXJuIGEgbGlzdCBvZiB2YWx1ZXMgdGhhdCByZXN1bHQgZnJvbSBsb29raW5nIHVwCiAgICAgZWFjaCBhcmd1bWVudCBpbiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBkaWN0aW9uYXJ5LgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgIGdsb2JhbCBfQ09ORklHX1ZBUlMKICAgICBpZiBfQ09ORklHX1ZBUlMgaXMgTm9uZToKICAgICAgICAgX0NPTkZJR19WQVJTID0ge30KQEAgLTQ1OSw3ICs1NDAsOSBAQAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb24nXSA9IF9QWV9WRVJTSU9OCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9zaG9ydCddID0gX1BZX1ZFUlNJT05fU0hPUlQKICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX25vZG90J10gPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCisgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX2Jhc2UnXSA9IF9CQVNFX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2Jhc2UnXSA9IF9QUkVGSVgKKyAgICAgICAgX0NPTkZJR19WQVJTWydpbnN0YWxsZWRfcGxhdGJhc2UnXSA9IF9CQVNFX0VYRUNfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1sncGxhdGJhc2UnXSA9IF9FWEVDX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3Byb2plY3RiYXNlJ10gPSBfUFJPSkVDVF9CQVNFCiAgICAgICAgIHRyeToKQEAgLTQ3Nyw4OCArNTYwLDI4IEBACiAgICAgICAgICMgdGhlIGluaXQtZnVuY3Rpb24uCiAgICAgICAgIF9DT05GSUdfVkFSU1sndXNlcmJhc2UnXSA9IF9nZXR1c2VyYmFzZSgpCiAKLSAgICAgICAgaWYgJ3NyY2Rpcicgbm90IGluIF9DT05GSUdfVkFSUzoKLSAgICAgICAgICAgIF9DT05GSUdfVkFSU1snc3JjZGlyJ10gPSBfUFJPSkVDVF9CQVNFCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gX3NhZmVfcmVhbHBhdGgoX0NPTkZJR19WQVJTWydzcmNkaXInXSkKLQotCi0gICAgICAgICMgQ29udmVydCBzcmNkaXIgaW50byBhbiBhYnNvbHV0ZSBwYXRoIGlmIGl0IGFwcGVhcnMgbmVjZXNzYXJ5LgotICAgICAgICAjIE5vcm1hbGx5IGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBIb3dldmVyLCBkdXJpbmcKLSAgICAgICAgIyB0ZXN0aW5nLCBmb3IgZXhhbXBsZSwgd2UgbWlnaHQgYmUgcnVubmluZyBhIG5vbi1pbnN0YWxsZWQgcHl0aG9uCi0gICAgICAgICMgZnJvbSBhIGRpZmZlcmVudCBkaXJlY3RvcnkuCi0gICAgICAgIGlmIF9QWVRIT05fQlVJTEQgYW5kIG9zLm5hbWUgPT0gInBvc2l4IjoKLSAgICAgICAgICAgIGJhc2UgPSBfUFJPSkVDVF9CQVNFCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIGN3ZCA9IE5vbmUKLSAgICAgICAgICAgIGlmIChub3Qgb3MucGF0aC5pc2FicyhfQ09ORklHX1ZBUlNbJ3NyY2RpciddKSBhbmQKLSAgICAgICAgICAgICAgICBiYXNlICE9IGN3ZCk6Ci0gICAgICAgICAgICAgICAgIyBzcmNkaXIgaXMgcmVsYXRpdmUgYW5kIHdlIGFyZSBub3QgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgIyBhcyB0aGUgZXhlY3V0YWJsZS4gQXNzdW1lIGV4ZWN1dGFibGUgaXMgaW4gdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkgYW5kIG1ha2Ugc3JjZGlyIGFic29sdXRlLgotICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihiYXNlLCBfQ09ORklHX1ZBUlNbJ3NyY2RpciddKQotICAgICAgICAgICAgICAgIF9DT05GSUdfVkFSU1snc3JjZGlyJ10gPSBvcy5wYXRoLm5vcm1wYXRoKHNyY2RpcikKLQotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICBrZXJuZWxfdmVyc2lvbiA9IG9zLnVuYW1lKClbMl0gIyBLZXJuZWwgdmVyc2lvbiAoOC40LjMpCi0gICAgICAgICAgICBtYWpvcl92ZXJzaW9uID0gaW50KGtlcm5lbF92ZXJzaW9uLnNwbGl0KCcuJylbMF0pCi0KLSAgICAgICAgICAgIGlmIG1ham9yX3ZlcnNpb24gPCA4OgotICAgICAgICAgICAgICAgICMgT24gTWFjIE9TIFggYmVmb3JlIDEwLjQsIGNoZWNrIGlmIC1hcmNoIGFuZCAtaXN5c3Jvb3QKLSAgICAgICAgICAgICAgICAjIGFyZSBpbiBDRkxBR1Mgb3IgTERGTEFHUyBhbmQgcmVtb3ZlIHRoZW0gaWYgdGhleSBhcmUuCi0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGV4dGVuc2lvbnMgb24gYSAxMC4zIHN5c3RlbQotICAgICAgICAgICAgICAgICMgdXNpbmcgYSB1bml2ZXJzYWwgYnVpbGQgb2YgcHl0aG9uLgotICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gKCdMREZMQUdTJywgJ0JBU0VDRkxBR1MnLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBvZiBkZXJpdmVkIHZhcmlhYmxlcy4gVGhlc2UgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaGVkIHVwIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ0ZMQUdTJywgJ1BZX0NGTEFHUycsICdCTERTSEFSRUQnKToKLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfQ09ORklHX1ZBUlNba2V5XQotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgIF9DT05GSUdfVkFSU1trZXldID0gZmxhZ3MKKyAgICAgICAgIyBBbHdheXMgY29udmVydCBzcmNkaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAorICAgICAgICBzcmNkaXIgPSBfQ09ORklHX1ZBUlMuZ2V0KCdzcmNkaXInLCBfUFJPSkVDVF9CQVNFKQorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBpZiBfUFlUSE9OX0JVSUxEOgorICAgICAgICAgICAgICAgICMgSWYgc3JjZGlyIGlzIGEgcmVsYXRpdmUgcGF0aCAodHlwaWNhbGx5ICcuJyBvciAnLi4nKQorICAgICAgICAgICAgICAgICMgdGhlbiBpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICMgY29udGFpbmluZyBNYWtlZmlsZS4KKyAgICAgICAgICAgICAgICBiYXNlID0gb3MucGF0aC5kaXJuYW1lKGdldF9tYWtlZmlsZV9maWxlbmFtZSgpKQorICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihiYXNlLCBzcmNkaXIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgQWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGFyY2hpdGVjdHVyZSBmbGFncyB1c2luZwotICAgICAgICAgICAgICAgICMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgIyBOT1RFOiBUaGlzIG5hbWUgd2FzIGludHJvZHVjZWQgYnkgQXBwbGUgaW4gT1NYIDEwLjUgYW5kCi0gICAgICAgICAgICAgICAgIyBpcyB1c2VkIGJ5IHNldmVyYWwgc2NyaXB0aW5nIGxhbmd1YWdlcyBkaXN0cmlidXRlZCB3aXRoCi0gICAgICAgICAgICAgICAgIyB0aGF0IE9TIHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgICAgICAgICAgYXJjaCA9IG9zLmVudmlyb25bJ0FSQ0hGTEFHUyddCi0gICAgICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gKCdMREZMQUdTJywgJ0JBU0VDRkxBR1MnLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBvZiBkZXJpdmVkIHZhcmlhYmxlcy4gVGhlc2UgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaGVkIHVwIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ0ZMQUdTJywgJ1BZX0NGTEFHUycsICdCTERTSEFSRUQnKToKKyAgICAgICAgICAgICAgICAjIHNyY2RpciBpcyBub3QgbWVhbmluZ2Z1bCBzaW5jZSB0aGUgaW5zdGFsbGF0aW9uIGlzCisgICAgICAgICAgICAgICAgIyBzcHJlYWQgYWJvdXQgdGhlIGZpbGVzeXN0ZW0uICBXZSBjaG9vc2UgdGhlCisgICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgTWFrZWZpbGUgc2luY2Ugd2Uga25vdyBpdAorICAgICAgICAgICAgICAgICMgZXhpc3RzLgorICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguZGlybmFtZShnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSkKKyAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9zYWZlX3JlYWxwYXRoKHNyY2RpcikKIAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfQ09ORklHX1ZBUlNba2V5XQotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyArICcgJyArIGFyY2gKLSAgICAgICAgICAgICAgICAgICAgICAgIF9DT05GSUdfVkFSU1trZXldID0gZmxhZ3MKLQotICAgICAgICAgICAgICAgICMgSWYgd2UncmUgb24gT1NYIDEwLjUgb3IgbGF0ZXIgYW5kIHRoZSB1c2VyIHRyaWVzIHRvCi0gICAgICAgICAgICAgICAgIyBjb21waWxlcyBhbiBleHRlbnNpb24gdXNpbmcgYW4gU0RLIHRoYXQgaXMgbm90IHByZXNlbnQKLSAgICAgICAgICAgICAgICAjIG9uIHRoZSBjdXJyZW50IG1hY2hpbmUgaXQgaXMgYmV0dGVyIHRvIG5vdCB1c2UgYW4gU0RLCi0gICAgICAgICAgICAgICAgIyB0aGFuIHRvIGZhaWwuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVGhlIG1ham9yIHVzZWNhc2UgZm9yIHRoaXMgaXMgdXNlcnMgdXNpbmcgYSBQeXRob24ub3JnCi0gICAgICAgICAgICAgICAgIyBiaW5hcnkgaW5zdGFsbGVyICBvbiBPU1ggMTAuNjogdGhhdCBpbnN0YWxsZXIgdXNlcwotICAgICAgICAgICAgICAgICMgdGhlIDEwLjR1IFNESywgYnV0IHRoYXQgU0RLIGlzIG5vdCBpbnN0YWxsZWQgYnkgZGVmYXVsdAotICAgICAgICAgICAgICAgICMgd2hlbiB5b3UgaW5zdGFsbCBYY29kZS4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgQ0ZMQUdTID0gX0NPTkZJR19WQVJTLmdldCgnQ0ZMQUdTJywgJycpCi0gICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgnLWlzeXNyb290XHMrKFxTKyknLCBDRkxBR1MpCi0gICAgICAgICAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2RrID0gbS5ncm91cCgxKQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2RrKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gKCdMREZMQUdTJywgJ0JBU0VDRkxBR1MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCB1cCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfQ09ORklHX1ZBUlNba2V5XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3RccytcUysoXHN8JCknLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9DT05GSUdfVkFSU1trZXldID0gZmxhZ3MKKyAgICAgICAgIyBPUyBYIHBsYXRmb3JtcyByZXF1aXJlIHNwZWNpYWwgY3VzdG9taXphdGlvbiB0byBoYW5kbGUKKyAgICAgICAgIyBtdWx0aS1hcmNoaXRlY3R1cmUsIG11bHRpLW9zLXZlcnNpb24gaW5zdGFsbGVycworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0CisgICAgICAgICAgICBfb3N4X3N1cHBvcnQuY3VzdG9taXplX2NvbmZpZ192YXJzKF9DT05GSUdfVkFSUykKIAogICAgIGlmIGFyZ3M6CiAgICAgICAgIHZhbHMgPSBbXQpAQCAtNTY4LDYgKzU5MSw3IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIF9DT05GSUdfVkFSUwogCisKIGRlZiBnZXRfY29uZmlnX3ZhcihuYW1lKToKICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHZhcmlhYmxlIHVzaW5nIHRoZSBkaWN0aW9uYXJ5IHJldHVybmVkIGJ5CiAgICAgJ2dldF9jb25maWdfdmFycygpJy4KQEAgLTU3Niw2ICs2MDAsNyBAQAogICAgICIiIgogICAgIHJldHVybiBnZXRfY29uZmlnX3ZhcnMoKS5nZXQobmFtZSkKIAorCiBkZWYgZ2V0X3BsYXRmb3JtKCk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY3VycmVudCBwbGF0Zm9ybS4KIApAQCAtNjAxLDcgKzYyNiw2IEBACiAKICAgICBGb3Igb3RoZXIgbm9uLVBPU0lYIHBsYXRmb3JtcywgY3VycmVudGx5IGp1c3QgcmV0dXJucyAnc3lzLnBsYXRmb3JtJy4KICAgICAiIiIKLSAgICBpbXBvcnQgcmUKICAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICMgc25pZmYgc3lzLnZlcnNpb24gZm9yIGFyY2hpdGVjdHVyZS4KICAgICAgICAgcHJlZml4ID0gIiBiaXQgKCIKQEAgLTYxNywxMCArNjQxLDEzIEBACiAgICAgICAgIHJldHVybiBzeXMucGxhdGZvcm0KIAogICAgIGlmIG9zLm5hbWUgIT0gInBvc2l4IiBvciBub3QgaGFzYXR0cihvcywgJ3VuYW1lJyk6Ci0gICAgICAgICMgWFhYIHdoYXQgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZT8gTlQgaXMgSW50ZWwgb3IgQWxwaGEsCi0gICAgICAgICMgTWFjIE9TIGlzIE02OGsgb3IgUFBDLCBldGMuCisgICAgICAgICMgWFhYIHdoYXQgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZT8gTlQgaXMgSW50ZWwgb3IgQWxwaGEKICAgICAgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQogCisgICAgIyBTZXQgZm9yIGNyb3NzIGJ1aWxkcyBleHBsaWNpdGx5CisgICAgaWYgIl9QWVRIT05fSE9TVF9QTEFURk9STSIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bIl9QWVRIT05fSE9TVF9QTEFURk9STSJdCisKICAgICAjIFRyeSB0byBkaXN0aW5ndWlzaCB2YXJpb3VzIGZsYXZvdXJzIG9mIFVuaXgKICAgICBvc25hbWUsIGhvc3QsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUgPSBvcy51bmFtZSgpCiAKQEAgLTY1MSw5NyArNjc4LDE1IEBACiAgICAgICAgIHJldHVybiAiJXMtJXMuJXMiICUgKG9zbmFtZSwgdmVyc2lvbiwgcmVsZWFzZSkKICAgICBlbGlmIG9zbmFtZVs6Nl0gPT0gImN5Z3dpbiI6CiAgICAgICAgIG9zbmFtZSA9ICJjeWd3aW4iCi0gICAgICAgIHJlbF9yZSA9IHJlLmNvbXBpbGUgKHInW1xkLl0rJykKKyAgICAgICAgcmVsX3JlID0gcmUuY29tcGlsZShyJ1tcZC5dKycpCiAgICAgICAgIG0gPSByZWxfcmUubWF0Y2gocmVsZWFzZSkKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIHJlbGVhc2UgPSBtLmdyb3VwKCkKICAgICBlbGlmIG9zbmFtZVs6Nl0gPT0gImRhcndpbiI6Ci0gICAgICAgICMKLSAgICAgICAgIyBGb3Igb3VyIHB1cnBvc2VzLCB3ZSdsbCBhc3N1bWUgdGhhdCB0aGUgc3lzdGVtIHZlcnNpb24gZnJvbQotICAgICAgICAjIGRpc3R1dGlscycgcGVyc3BlY3RpdmUgaXMgd2hhdCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0Ci0gICAgICAgICMgdG8uIFRoaXMgbWFrZXMgdGhlIGNvbXBhdGliaWxpdHkgc3RvcnkgYSBiaXQgbW9yZSBzYW5lIGJlY2F1c2UgdGhlCi0gICAgICAgICMgbWFjaGluZSBpcyBnb2luZyB0byBjb21waWxlIGFuZCBsaW5rIGFzIGlmIGl0IHdlcmUKLSAgICAgICAgIyBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQuCi0gICAgICAgICMKLSAgICAgICAgY2ZndmFycyA9IGdldF9jb25maWdfdmFycygpCi0gICAgICAgIG1hY3ZlciA9IGNmZ3ZhcnMuZ2V0KCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnKQotCi0gICAgICAgIGlmIDE6Ci0gICAgICAgICAgICAjIEFsd2F5cyBjYWxjdWxhdGUgdGhlIHJlbGVhc2Ugb2YgdGhlIHJ1bm5pbmcgbWFjaGluZSwKLSAgICAgICAgICAgICMgbmVlZGVkIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gYnVpbGQgZmF0IGJpbmFyaWVzIG9yIG5vdC4KLQotICAgICAgICAgICAgbWFjcmVsZWFzZSA9IG1hY3ZlcgotICAgICAgICAgICAgIyBHZXQgdGhlIHN5c3RlbSB2ZXJzaW9uLiBSZWFkaW5nIHRoaXMgcGxpc3QgaXMgYSBkb2N1bWVudGVkCi0gICAgICAgICAgICAjIHdheSB0byBnZXQgdGhlIHN5c3RlbSB2ZXJzaW9uIChzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCi0gICAgICAgICAgICAjIHRoZSBHZXN0YWx0IE1hbmFnZXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IG9wZW4oJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgcGxhaW4gZGFyd2luIGJveCwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgIyBiZWhhdmlvdXIuCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2goCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8a2V5PlByb2R1Y3RVc2VyVmlzaWJsZVZlcnNpb248L2tleT5ccyonICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxzdHJpbmc+KC4qPyk8L3N0cmluZz4nLCBmLnJlYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JlbGVhc2UgPSAnLicuam9pbihtLmdyb3VwKDEpLnNwbGl0KCcuJylbOjJdKQotICAgICAgICAgICAgICAgICAgICAjIGVsc2U6IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBiZWhhdmlvdXIKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLQotICAgICAgICBpZiBub3QgbWFjdmVyOgotICAgICAgICAgICAgbWFjdmVyID0gbWFjcmVsZWFzZQotCi0gICAgICAgIGlmIG1hY3ZlcjoKLSAgICAgICAgICAgIHJlbGVhc2UgPSBtYWN2ZXIKLSAgICAgICAgICAgIG9zbmFtZSA9ICJtYWNvc3giCi0KLSAgICAgICAgICAgIGlmIChtYWNyZWxlYXNlICsgJy4nKSA+PSAnMTAuNC4nIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICctYXJjaCcgaW4gZ2V0X2NvbmZpZ192YXJzKCkuZ2V0KCdDRkxBR1MnLCAnJykuc3RyaXAoKToKLSAgICAgICAgICAgICAgICAjIFRoZSB1bml2ZXJzYWwgYnVpbGQgd2lsbCBidWlsZCBmYXQgYmluYXJpZXMsIGJ1dCBub3Qgb24KLSAgICAgICAgICAgICAgICAjIHN5c3RlbXMgYmVmb3JlIDEwLjQKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUcnkgdG8gZGV0ZWN0IDQtd2F5IHVuaXZlcnNhbCBidWlsZHMsIHRob3NlIGhhdmUgbWFjaGluZS10eXBlCi0gICAgICAgICAgICAgICAgIyAndW5pdmVyc2FsJyBpbnN0ZWFkIG9mICdmYXQnLgotCi0gICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCi0gICAgICAgICAgICAgICAgY2ZsYWdzID0gZ2V0X2NvbmZpZ192YXJzKCkuZ2V0KCdDRkxBR1MnKQotCi0gICAgICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcUyspJywgY2ZsYWdzKQotICAgICAgICAgICAgICAgIGFyY2hzID0gdHVwbGUoc29ydGVkKHNldChhcmNocykpKQotCi0gICAgICAgICAgICAgICAgaWYgbGVuKGFyY2hzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gYXJjaHNbMF0KLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnaW50ZWwnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdDMnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ3BwYzY0JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdDY0JwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICdwcGM2NCcsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICd1bml2ZXJzYWwnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3cgbWFjaGluZSB2YWx1ZSBmb3IgYXJjaHM9JXIiJShhcmNocywpKQotCi0gICAgICAgICAgICBlbGlmIG1hY2hpbmUgPT0gJ2kzODYnOgotICAgICAgICAgICAgICAgICMgT24gT1NYIHRoZSBtYWNoaW5lIHR5cGUgcmV0dXJuZWQgYnkgdW5hbWUgaXMgYWx3YXlzIHRoZQotICAgICAgICAgICAgICAgICMgMzItYml0IHZhcmlhbnQsIGV2ZW4gaWYgdGhlIGV4ZWN1dGFibGUgYXJjaGl0ZWN0dXJlIGlzCi0gICAgICAgICAgICAgICAgIyB0aGUgNjQtYml0IHZhcmlhbnQKLSAgICAgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICd4ODZfNjQnCi0KLSAgICAgICAgICAgIGVsaWYgbWFjaGluZSBpbiAoJ1Bvd2VyUEMnLCAnUG93ZXJfTWFjaW50b3NoJyk6Ci0gICAgICAgICAgICAgICAgIyBQaWNrIGEgc2FuZSBuYW1lIGZvciB0aGUgUFBDIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICAjIFNlZSAnaTM4NicgY2FzZQotICAgICAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYzY0JwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjJworICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0CisgICAgICAgIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSA9IF9vc3hfc3VwcG9ydC5nZXRfcGxhdGZvcm1fb3N4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCiAgICAgcmV0dXJuICIlcy0lcy0lcyIgJSAob3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCkBAIC03NDksMjEgKzY5NCwyNyBAQAogZGVmIGdldF9weXRob25fdmVyc2lvbigpOgogICAgIHJldHVybiBfUFlfVkVSU0lPTl9TSE9SVAogCisKIGRlZiBfcHJpbnRfZGljdCh0aXRsZSwgZGF0YSk6CiAgICAgZm9yIGluZGV4LCAoa2V5LCB2YWx1ZSkgaW4gZW51bWVyYXRlKHNvcnRlZChkYXRhLml0ZW1zKCkpKToKICAgICAgICAgaWYgaW5kZXggPT0gMDoKLSAgICAgICAgICAgIHByaW50KCd7MH06ICcuZm9ybWF0KHRpdGxlKSkKLSAgICAgICAgcHJpbnQoJ1x0ezB9ID0gInsxfSInLmZvcm1hdChrZXksIHZhbHVlKSkKKyAgICAgICAgICAgIHByaW50KCclczogJyAlICh0aXRsZSkpCisgICAgICAgIHByaW50KCdcdCVzID0gIiVzIicgJSAoa2V5LCB2YWx1ZSkpCisKIAogZGVmIF9tYWluKCk6CiAgICAgIiIiRGlzcGxheSBhbGwgaW5mb3JtYXRpb24gc3lzY29uZmlnIGRldGFpbnMuIiIiCi0gICAgcHJpbnQoJ1BsYXRmb3JtOiAiezB9IicuZm9ybWF0KGdldF9wbGF0Zm9ybSgpKSkKLSAgICBwcmludCgnUHl0aG9uIHZlcnNpb246ICJ7MH0iJy5mb3JtYXQoZ2V0X3B5dGhvbl92ZXJzaW9uKCkpKQotICAgIHByaW50KCdDdXJyZW50IGluc3RhbGxhdGlvbiBzY2hlbWU6ICJ7MH0iJy5mb3JtYXQoX2dldF9kZWZhdWx0X3NjaGVtZSgpKSkKLSAgICBwcmludCgnJykKKyAgICBpZiAnLS1nZW5lcmF0ZS1wb3NpeC12YXJzJyBpbiBzeXMuYXJndjoKKyAgICAgICAgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgICAgICByZXR1cm4KKyAgICBwcmludCgnUGxhdGZvcm06ICIlcyInICUgZ2V0X3BsYXRmb3JtKCkpCisgICAgcHJpbnQoJ1B5dGhvbiB2ZXJzaW9uOiAiJXMiJyAlIGdldF9weXRob25fdmVyc2lvbigpKQorICAgIHByaW50KCdDdXJyZW50IGluc3RhbGxhdGlvbiBzY2hlbWU6ICIlcyInICUgX2dldF9kZWZhdWx0X3NjaGVtZSgpKQorICAgIHByaW50KCkKICAgICBfcHJpbnRfZGljdCgnUGF0aHMnLCBnZXRfcGF0aHMoKSkKLSAgICBwcmludCgnJykKKyAgICBwcmludCgpCiAgICAgX3ByaW50X2RpY3QoJ1ZhcmlhYmxlcycsIGdldF9jb25maWdfdmFycygpKQogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgX21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3RhYm5hbm55LnB5IGIvTGliL3RhYm5hbm55LnB5CmluZGV4IDQ2ZjgxNjMuLjRhNTRmODkgMTAwNzU1Ci0tLSBhL0xpYi90YWJuYW5ueS5weQorKysgYi9MaWIvdGFibmFubnkucHkKQEAgLTEyNiw2ICsxMjYsOSBAQAogICAgICAgICAgICAgZWxzZTogcHJpbnQoZmlsZSwgYmFkbGluZSwgcmVwcihsaW5lKSkKICAgICAgICAgcmV0dXJuCiAKKyAgICBmaW5hbGx5OgorICAgICAgICBmLmNsb3NlKCkKKwogICAgIGlmIHZlcmJvc2U6CiAgICAgICAgIHByaW50KCIlcjogQ2xlYW4gYmlsbCBvZiBoZWFsdGguIiAlIChmaWxlLCkpCiAKZGlmZiAtLWdpdCBhL0xpYi90YXJmaWxlLnB5IGIvTGliL3RhcmZpbGUucHkKaW5kZXggZjI2OTUzZS4uN2I5ZjQwNyAxMDA2NDQKLS0tIGEvTGliL3RhcmZpbGUucHkKKysrIGIvTGliL3RhcmZpbGUucHkKQEAgLTI5LDggKzI5LDYgQEAKICIiIlJlYWQgZnJvbSBhbmQgd3JpdGUgdG8gdGFyIGZvcm1hdCBhcmNoaXZlcy4KICIiIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIgotCiB2ZXJzaW9uICAgICA9ICIwLjkuMCIKIF9fYXV0aG9yX18gID0gIkxhcnMgR3VzdFx1MDBlNGJlbCAobGFyc0BndXN0YWViZWwuZGUpIgogX19kYXRlX18gICAgPSAiJERhdGU6IDIwMTEtMDItMjUgMTc6NDI6MDEgKzAyMDAgKEZyaSwgMjUgRmViIDIwMTEpICQiCkBAIC00Miw5ICs0MCw5IEBACiAjLS0tLS0tLS0tCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKK2ltcG9ydCBpbwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0YXQKLWltcG9ydCBlcnJubwogaW1wb3J0IHRpbWUKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBjb3B5CkBAIC0yNDcsOCArMjQ1LDggQEAKICAgICAgICB0aGUgaGlnaCBiaXQgc2V0LiBTbyB3ZSBjYWxjdWxhdGUgdHdvIGNoZWNrc3VtcywgdW5zaWduZWQgYW5kCiAgICAgICAgc2lnbmVkLgogICAgICIiIgotICAgIHVuc2lnbmVkX2Noa3N1bSA9IDI1NiArIHN1bShzdHJ1Y3QudW5wYWNrKCIxNDhCIiwgYnVmWzoxNDhdKSArIHN0cnVjdC51bnBhY2soIjM1NkIiLCBidWZbMTU2OjUxMl0pKQotICAgIHNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFjaygiMTQ4YiIsIGJ1Zls6MTQ4XSkgKyBzdHJ1Y3QudW5wYWNrKCIzNTZiIiwgYnVmWzE1Njo1MTJdKSkKKyAgICB1bnNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFja19mcm9tKCIxNDhCOHgzNTZCIiwgYnVmKSkKKyAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Yjh4MzU2YiIsIGJ1ZikpCiAgICAgcmV0dXJuIHVuc2lnbmVkX2Noa3N1bSwgc2lnbmVkX2Noa3N1bQogCiBkZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lKToKQEAgLTI3Niw0NyArMjc0LDEzIEBACiAgICAgICAgIGRzdC53cml0ZShidWYpCiAgICAgcmV0dXJuCiAKLWZpbGVtb2RlX3RhYmxlID0gKAotICAgICgoU19JRkxOSywgICAgICAibCIpLAotICAgICAoU19JRlJFRywgICAgICAiLSIpLAotICAgICAoU19JRkJMSywgICAgICAiYiIpLAotICAgICAoU19JRkRJUiwgICAgICAiZCIpLAotICAgICAoU19JRkNIUiwgICAgICAiYyIpLAotICAgICAoU19JRklGTywgICAgICAicCIpKSwKLQotICAgICgoVFVSRUFELCAgICAgICAiciIpLCksCi0gICAgKChUVVdSSVRFLCAgICAgICJ3IiksKSwKLSAgICAoKFRVRVhFQ3xUU1VJRCwgInMiKSwKLSAgICAgKFRTVUlELCAgICAgICAgIlMiKSwKLSAgICAgKFRVRVhFQywgICAgICAgIngiKSksCi0KLSAgICAoKFRHUkVBRCwgICAgICAgInIiKSwpLAotICAgICgoVEdXUklURSwgICAgICAidyIpLCksCi0gICAgKChUR0VYRUN8VFNHSUQsICJzIiksCi0gICAgIChUU0dJRCwgICAgICAgICJTIiksCi0gICAgIChUR0VYRUMsICAgICAgICJ4IikpLAotCi0gICAgKChUT1JFQUQsICAgICAgICJyIiksKSwKLSAgICAoKFRPV1JJVEUsICAgICAgInciKSwpLAotICAgICgoVE9FWEVDfFRTVlRYLCAidCIpLAotICAgICAoVFNWVFgsICAgICAgICAiVCIpLAotICAgICAoVE9FWEVDLCAgICAgICAieCIpKQotKQotCiBkZWYgZmlsZW1vZGUobW9kZSk6Ci0gICAgIiIiQ29udmVydCBhIGZpbGUncyBtb2RlIHRvIGEgc3RyaW5nIG9mIHRoZSBmb3JtCi0gICAgICAgLXJ3eHJ3eHJ3eC4KLSAgICAgICBVc2VkIGJ5IFRhckZpbGUubGlzdCgpCi0gICAgIiIiCi0gICAgcGVybSA9IFtdCi0gICAgZm9yIHRhYmxlIGluIGZpbGVtb2RlX3RhYmxlOgotICAgICAgICBmb3IgYml0LCBjaGFyIGluIHRhYmxlOgotICAgICAgICAgICAgaWYgbW9kZSAmIGJpdCA9PSBiaXQ6Ci0gICAgICAgICAgICAgICAgcGVybS5hcHBlbmQoY2hhcikKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGVybS5hcHBlbmQoIi0iKQotICAgIHJldHVybiAiIi5qb2luKHBlcm0pCisgICAgIiIiRGVwcmVjYXRlZCBpbiB0aGlzIGxvY2F0aW9uOyB1c2Ugc3RhdC5maWxlbW9kZS4iIiIKKyAgICBpbXBvcnQgd2FybmluZ3MKKyAgICB3YXJuaW5ncy53YXJuKCJkZXByZWNhdGVkIGluIGZhdm9yIG9mIHN0YXQuZmlsZW1vZGUiLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIHJldHVybiBzdGF0LmZpbGVtb2RlKG1vZGUpCisKIAogY2xhc3MgVGFyRXJyb3IoRXhjZXB0aW9uKToKICAgICAiIiJCYXNlIGV4Y2VwdGlvbi4iIiIKQEAgLTQyMywxMCArMzg3LDExIEBACiAgICAgICAgICAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGIiIikKICAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5pdF9yZWFkX2d6KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSB6bGliLmVycm9yCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5pdF93cml0ZV9neigpCiAKLSAgICAgICAgICAgIGlmIGNvbXB0eXBlID09ICJiejIiOgorICAgICAgICAgICAgZWxpZiBjb21wdHlwZSA9PSAiYnoyIjoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBiejIKICAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC00MzQsOCArMzk5LDI1IEBACiAgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiciI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJ1ZiA9IGIiIgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNtcCA9IGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IElPRXJyb3IKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNtcCA9IGJ6Mi5CWjJDb21wcmVzc29yKCkKKworICAgICAgICAgICAgZWxpZiBjb21wdHlwZSA9PSAieHoiOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGx6bWEKKyAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImx6bWEgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKQorICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gInIiOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmRidWYgPSBiIiIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBsem1hLkxaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IGx6bWEuTFpNQUVycm9yCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBsem1hLkxaTUFDb21wcmVzc29yKCkKKworICAgICAgICAgICAgZWxpZiBjb21wdHlwZSAhPSAidGFyIjoKKyAgICAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJ1bmtub3duIGNvbXByZXNzaW9uIHR5cGUgJXIiICUgY29tcHR5cGUpCisKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4dGZpbGVvYmo6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKQEAgLTU4Nyw3ICs1NjksNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYnVmID0gc2VsZi5jbXAuZGVjb21wcmVzcyhidWYpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBzZWxmLmV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoImludmFsaWQgY29tcHJlc3NlZCBkYXRhIikKICAgICAgICAgICAgIHNlbGYuZGJ1ZiArPSBidWYKICAgICAgICAgICAgIGMgKz0gbGVuKGJ1ZikKQEAgLTYyNSw3NiArNjA3LDE5IEBACiAgICAgICAgIHJldHVybiBzZWxmLmJ1ZgogCiAgICAgZGVmIGdldGNvbXB0eXBlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmJ1Zi5zdGFydHN3aXRoKGIiXDAzN1wyMTNcMDEwIik6CisgICAgICAgIGlmIHNlbGYuYnVmLnN0YXJ0c3dpdGgoYiJceDFmXHg4Ylx4MDgiKToKICAgICAgICAgICAgIHJldHVybiAiZ3oiCi0gICAgICAgIGlmIHNlbGYuYnVmWzA6M10gPT0gYiJCWmgiIGFuZCBzZWxmLmJ1Zls0OjEwXSA9PSBiIjFBWSZTWSI6CisgICAgICAgIGVsaWYgc2VsZi5idWZbMDozXSA9PSBiIkJaaCIgYW5kIHNlbGYuYnVmWzQ6MTBdID09IGIiMUFZJlNZIjoKICAgICAgICAgICAgIHJldHVybiAiYnoyIgotICAgICAgICByZXR1cm4gInRhciIKKyAgICAgICAgZWxpZiBzZWxmLmJ1Zi5zdGFydHN3aXRoKChiIlx4NWRceDAwXHgwMFx4ODAiLCBiIlx4ZmQ3elhaIikpOgorICAgICAgICAgICAgcmV0dXJuICJ4eiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAidGFyIgogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBzZWxmLmZpbGVvYmouY2xvc2UoKQogIyBjbGFzcyBTdHJlYW1Qcm94eQogCi1jbGFzcyBfQloyUHJveHkob2JqZWN0KToKLSAgICAiIiJTbWFsbCBwcm94eSBjbGFzcyB0aGF0IGVuYWJsZXMgZXh0ZXJuYWwgZmlsZSBvYmplY3QKLSAgICAgICBzdXBwb3J0IGZvciAicjpiejIiIGFuZCAidzpiejIiIG1vZGVzLiBUaGlzIGlzIGFjdHVhbGx5Ci0gICAgICAgYSB3b3JrYXJvdW5kIGZvciBhIGxpbWl0YXRpb24gaW4gYnoyIG1vZHVsZSdzIEJaMkZpbGUKLSAgICAgICBjbGFzcyB3aGljaCAodW5saWtlIGd6aXAuR3ppcEZpbGUpIGhhcyBubyBzdXBwb3J0IGZvcgotICAgICAgIGEgZmlsZSBvYmplY3QgYXJndW1lbnQuCi0gICAgIiIiCi0KLSAgICBibG9ja3NpemUgPSAxNiAqIDEwMjQKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlb2JqLCBtb2RlKToKLSAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagotICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCi0gICAgICAgIHNlbGYubmFtZSA9IGdldGF0dHIoc2VsZi5maWxlb2JqLCAibmFtZSIsIE5vbmUpCi0gICAgICAgIHNlbGYuaW5pdCgpCi0KLSAgICBkZWYgaW5pdChzZWxmKToKLSAgICAgICAgaW1wb3J0IGJ6MgotICAgICAgICBzZWxmLnBvcyA9IDAKLSAgICAgICAgaWYgc2VsZi5tb2RlID09ICJyIjoKLSAgICAgICAgICAgIHNlbGYuYnoyb2JqID0gYnoyLkJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgICAgICBzZWxmLmZpbGVvYmouc2VlaygwKQotICAgICAgICAgICAgc2VsZi5idWYgPSBiIiIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYnoyb2JqID0gYnoyLkJaMkNvbXByZXNzb3IoKQotCi0gICAgZGVmIHJlYWQoc2VsZiwgc2l6ZSk6Ci0gICAgICAgIHggPSBsZW4oc2VsZi5idWYpCi0gICAgICAgIHdoaWxlIHggPCBzaXplOgotICAgICAgICAgICAgcmF3ID0gc2VsZi5maWxlb2JqLnJlYWQoc2VsZi5ibG9ja3NpemUpCi0gICAgICAgICAgICBpZiBub3QgcmF3OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5iejJvYmouZGVjb21wcmVzcyhyYXcpCi0gICAgICAgICAgICBzZWxmLmJ1ZiArPSBkYXRhCi0gICAgICAgICAgICB4ICs9IGxlbihkYXRhKQotCi0gICAgICAgIGJ1ZiA9IHNlbGYuYnVmWzpzaXplXQotICAgICAgICBzZWxmLmJ1ZiA9IHNlbGYuYnVmW3NpemU6XQotICAgICAgICBzZWxmLnBvcyArPSBsZW4oYnVmKQotICAgICAgICByZXR1cm4gYnVmCi0KLSAgICBkZWYgc2VlayhzZWxmLCBwb3MpOgotICAgICAgICBpZiBwb3MgPCBzZWxmLnBvczoKLSAgICAgICAgICAgIHNlbGYuaW5pdCgpCi0gICAgICAgIHNlbGYucmVhZChwb3MgLSBzZWxmLnBvcykKLQotICAgIGRlZiB0ZWxsKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wb3MKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgIHJhdyA9IHNlbGYuYnoyb2JqLmNvbXByZXNzKGRhdGEpCi0gICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShyYXcpCi0KLSAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubW9kZSA9PSAidyI6Ci0gICAgICAgICAgICByYXcgPSBzZWxmLmJ6Mm9iai5mbHVzaCgpCi0gICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUocmF3KQotIyBjbGFzcyBfQloyUHJveHkKLQogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFeHRyYWN0aW9uIGZpbGUgb2JqZWN0CiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03MDksNiArNjM0LDggQEAKICAgICAgICAgc2VsZi5vZmZzZXQgPSBvZmZzZXQKICAgICAgICAgc2VsZi5zaXplID0gc2l6ZQogICAgICAgICBzZWxmLnBvc2l0aW9uID0gMAorICAgICAgICBzZWxmLm5hbWUgPSBnZXRhdHRyKGZpbGVvYmosICJuYW1lIiwgTm9uZSkKKyAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQogCiAgICAgICAgIGlmIGJsb2NraW5mbyBpcyBOb25lOgogICAgICAgICAgICAgYmxvY2tpbmZvID0gWygwLCBzaXplKV0KQEAgLTcyNywxMCArNjU0LDE2IEBACiAgICAgICAgIGlmIGxhc3Rwb3MgPCBzZWxmLnNpemU6CiAgICAgICAgICAgICBzZWxmLm1hcC5hcHBlbmQoKEZhbHNlLCBsYXN0cG9zLCBzZWxmLnNpemUsIE5vbmUpKQogCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIHNlZWthYmxlKHNlbGYpOgotICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLmZpbGVvYmosICJzZWVrYWJsZSIpOgotICAgICAgICAgICAgIyBYWFggZ3ppcC5HemlwRmlsZSBhbmQgYnoyLkJaMkZpbGUKLSAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmouc2Vla2FibGUoKQogCiAgICAgZGVmIHRlbGwoc2VsZik6CkBAIC03MzgsMTAgKzY3MSwyMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KIAotICAgIGRlZiBzZWVrKHNlbGYsIHBvc2l0aW9uKToKKyAgICBkZWYgc2VlayhzZWxmLCBwb3NpdGlvbiwgd2hlbmNlPWlvLlNFRUtfU0VUKToKICAgICAgICAgIiIiU2VlayB0byBhIHBvc2l0aW9uIGluIHRoZSBmaWxlLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5wb3NpdGlvbiA9IHBvc2l0aW9uCisgICAgICAgIGlmIHdoZW5jZSA9PSBpby5TRUVLX1NFVDoKKyAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4obWF4KHBvc2l0aW9uLCAwKSwgc2VsZi5zaXplKQorICAgICAgICBlbGlmIHdoZW5jZSA9PSBpby5TRUVLX0NVUjoKKyAgICAgICAgICAgIGlmIHBvc2l0aW9uIDwgMDoKKyAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KHNlbGYucG9zaXRpb24gKyBwb3NpdGlvbiwgMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1pbihzZWxmLnBvc2l0aW9uICsgcG9zaXRpb24sIHNlbGYuc2l6ZSkKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19FTkQ6CisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KG1pbihzZWxmLnNpemUgKyBwb3NpdGlvbiwgc2VsZi5zaXplKSwgMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYXJndW1lbnQiKQorICAgICAgICByZXR1cm4gc2VsZi5wb3NpdGlvbgogCiAgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT1Ob25lKToKICAgICAgICAgIiIiUmVhZCBkYXRhIGZyb20gdGhlIGZpbGUuCkBAIC03NzAsMTQ1ICs3MTQsMjIgQEAKICAgICAgICAgICAgIHNpemUgLT0gbGVuZ3RoCiAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uICs9IGxlbmd0aAogICAgICAgICByZXR1cm4gYnVmCi0jY2xhc3MgX0ZpbGVJbkZpbGUKIAotCi1jbGFzcyBFeEZpbGVPYmplY3Qob2JqZWN0KToKLSAgICAiIiJGaWxlLWxpa2Ugb2JqZWN0IGZvciByZWFkaW5nIGFuIGFyY2hpdmUgbWVtYmVyLgotICAgICAgIElzIHJldHVybmVkIGJ5IFRhckZpbGUuZXh0cmFjdGZpbGUoKS4KLSAgICAiIiIKLSAgICBibG9ja3NpemUgPSAxMDI0Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSwgdGFyaW5mbyk6Ci0gICAgICAgIHNlbGYuZmlsZW9iaiA9IF9GaWxlSW5GaWxlKHRhcmZpbGUuZmlsZW9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyaW5mby5vZmZzZXRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyaW5mby5zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvLnNwYXJzZSkKLSAgICAgICAgc2VsZi5uYW1lID0gdGFyaW5mby5uYW1lCi0gICAgICAgIHNlbGYubW9kZSA9ICJyIgotICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuc2l6ZSA9IHRhcmluZm8uc2l6ZQotCi0gICAgICAgIHNlbGYucG9zaXRpb24gPSAwCi0gICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0KLSAgICBkZWYgcmVhZGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgd3JpdGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIHNlZWthYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqLnNlZWthYmxlKCkKLQotICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6Ci0gICAgICAgICIiIlJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzIGZyb20gdGhlIGZpbGUuIElmIHNpemUgaXMgbm90Ci0gICAgICAgICAgIHByZXNlbnQgb3IgTm9uZSwgcmVhZCBhbGwgZGF0YSB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICAgICAgYnVmID0gYiIiCi0gICAgICAgIGlmIHNlbGYuYnVmZmVyOgotICAgICAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBiIiIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnVmID0gc2VsZi5idWZmZXJbOnNpemVdCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBzZWxmLmJ1ZmZlcltzaXplOl0KLQotICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBidWYgKz0gc2VsZi5maWxlb2JqLnJlYWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnVmICs9IHNlbGYuZmlsZW9iai5yZWFkKHNpemUgLSBsZW4oYnVmKSkKLQotICAgICAgICBzZWxmLnBvc2l0aW9uICs9IGxlbihidWYpCi0gICAgICAgIHJldHVybiBidWYKLQotICAgICMgWFhYIFRleHRJT1dyYXBwZXIgdXNlcyB0aGUgcmVhZDEoKSBtZXRob2QuCi0gICAgcmVhZDEgPSByZWFkCi0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgICIiIlJlYWQgb25lIGVudGlyZSBsaW5lIGZyb20gdGhlIGZpbGUuIElmIHNpemUgaXMgcHJlc2VudAotICAgICAgICAgICBhbmQgbm9uLW5lZ2F0aXZlLCByZXR1cm4gYSBzdHJpbmcgd2l0aCBhdCBtb3N0IHRoYXQKLSAgICAgICAgICAgc2l6ZSwgd2hpY2ggbWF5IGJlIGFuIGluY29tcGxldGUgbGluZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICAgICAgcG9zID0gc2VsZi5idWZmZXIuZmluZChiIlxuIikgKyAxCi0gICAgICAgIGlmIHBvcyA9PSAwOgotICAgICAgICAgICAgIyBubyBuZXdsaW5lIGZvdW5kLgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmZpbGVvYmoucmVhZChzZWxmLmJsb2Nrc2l6ZSkKLSAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlciArPSBidWYKLSAgICAgICAgICAgICAgICBpZiBub3QgYnVmIG9yIGIiXG4iIGluIGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgcG9zID0gc2VsZi5idWZmZXIuZmluZChiIlxuIikgKyAxCi0gICAgICAgICAgICAgICAgICAgIGlmIHBvcyA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBubyBuZXdsaW5lIGZvdW5kLgotICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gbGVuKHNlbGYuYnVmZmVyKQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIHNpemUgIT0gLTE6Ci0gICAgICAgICAgICBwb3MgPSBtaW4oc2l6ZSwgcG9zKQotCi0gICAgICAgIGJ1ZiA9IHNlbGYuYnVmZmVyWzpwb3NdCi0gICAgICAgIHNlbGYuYnVmZmVyID0gc2VsZi5idWZmZXJbcG9zOl0KLSAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW4oYnVmKQotICAgICAgICByZXR1cm4gYnVmCi0KLSAgICBkZWYgcmVhZGxpbmVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IHdpdGggYWxsIHJlbWFpbmluZyBsaW5lcy4KLSAgICAgICAgIiIiCi0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobGluZSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHRlbGwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgICAgICByZXR1cm4gc2VsZi5wb3NpdGlvbgotCi0gICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9b3MuU0VFS19TRVQpOgotICAgICAgICAiIiJTZWVrIHRvIGEgcG9zaXRpb24gaW4gdGhlIGZpbGUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIGlmIHdoZW5jZSA9PSBvcy5TRUVLX1NFVDoKLSAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4obWF4KHBvcywgMCksIHNlbGYuc2l6ZSkKLSAgICAgICAgZWxpZiB3aGVuY2UgPT0gb3MuU0VFS19DVVI6Ci0gICAgICAgICAgICBpZiBwb3MgPCAwOgotICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtYXgoc2VsZi5wb3NpdGlvbiArIHBvcywgMCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1pbihzZWxmLnBvc2l0aW9uICsgcG9zLCBzZWxmLnNpemUpCi0gICAgICAgIGVsaWYgd2hlbmNlID09IG9zLlNFRUtfRU5EOgotICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChtaW4oc2VsZi5zaXplICsgcG9zLCBzZWxmLnNpemUpLCAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBhcmd1bWVudCIpCi0KLSAgICAgICAgc2VsZi5idWZmZXIgPSBiIiIKLSAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoc2VsZi5wb3NpdGlvbikKKyAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgIGJ1ZiA9IHNlbGYucmVhZChsZW4oYikpCisgICAgICAgIGJbOmxlbihidWYpXSA9IGJ1ZgorICAgICAgICByZXR1cm4gbGVuKGJ1ZikKIAogICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgIiIiQ2xvc2UgdGhlIGZpbGUgb2JqZWN0LgotICAgICAgICAiIiIKICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCisjY2xhc3MgX0ZpbGVJbkZpbGUKIAotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgIiIiR2V0IGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGZpbGUncyBsaW5lcy4KLSAgICAgICAgIiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgeWllbGQgbGluZQorY2xhc3MgRXhGaWxlT2JqZWN0KGlvLkJ1ZmZlcmVkUmVhZGVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJmaWxlLCB0YXJpbmZvKToKKyAgICAgICAgZmlsZW9iaiA9IF9GaWxlSW5GaWxlKHRhcmZpbGUuZmlsZW9iaiwgdGFyaW5mby5vZmZzZXRfZGF0YSwKKyAgICAgICAgICAgICAgICB0YXJpbmZvLnNpemUsIHRhcmluZm8uc3BhcnNlKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGZpbGVvYmopCiAjY2xhc3MgRXhGaWxlT2JqZWN0CiAKICMtLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwODcsNyArOTA4LDcgQEAKICAgICBkZWYgY3JlYXRlX3BheF9nbG9iYWxfaGVhZGVyKGNscywgcGF4X2hlYWRlcnMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG9iamVjdCBhcyBhIHBheCBnbG9iYWwgaGVhZGVyIGJsb2NrIHNlcXVlbmNlLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlX3BheF9nZW5lcmljX2hlYWRlcihwYXhfaGVhZGVycywgWEdMVFlQRSwgInV0ZjgiKQorICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGVfcGF4X2dlbmVyaWNfaGVhZGVyKHBheF9oZWFkZXJzLCBYR0xUWVBFLCAidXRmLTgiKQogCiAgICAgZGVmIF9wb3NpeF9zcGxpdF9uYW1lKHNlbGYsIG5hbWUpOgogICAgICAgICAiIiJTcGxpdCBhIG5hbWUgbG9uZ2VyIHRoYW4gMTAwIGNoYXJzIGludG8gYSBwcmVmaXgKQEAgLTExNzAsNyArOTkxLDcgQEAKICAgICAgICAgYmluYXJ5ID0gRmFsc2UKICAgICAgICAgZm9yIGtleXdvcmQsIHZhbHVlIGluIHBheF9oZWFkZXJzLml0ZW1zKCk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdmFsdWUuZW5jb2RlKCJ1dGY4IiwgInN0cmljdCIpCisgICAgICAgICAgICAgICAgdmFsdWUuZW5jb2RlKCJ1dGYtOCIsICJzdHJpY3QiKQogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBiaW5hcnkgPSBUcnVlCiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTExODEsMTMgKzEwMDIsMTMgQEAKICAgICAgICAgICAgIHJlY29yZHMgKz0gYiIyMSBoZHJjaGFyc2V0PUJJTkFSWVxuIgogCiAgICAgICAgIGZvciBrZXl3b3JkLCB2YWx1ZSBpbiBwYXhfaGVhZGVycy5pdGVtcygpOgotICAgICAgICAgICAga2V5d29yZCA9IGtleXdvcmQuZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgIGtleXdvcmQgPSBrZXl3b3JkLmVuY29kZSgidXRmLTgiKQogICAgICAgICAgICAgaWYgYmluYXJ5OgogICAgICAgICAgICAgICAgICMgVHJ5IHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJ5dGUgcmVwcmVzZW50YXRpb24gb2YgYHZhbHVlJy4KICAgICAgICAgICAgICAgICAjIE5lZWRsZXNzIHRvIHNheSwgdGhhdCB0aGUgZW5jb2RpbmcgbXVzdCBtYXRjaCB0aGUgc3RyaW5nLgogICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZW5jb2RlKGVuY29kaW5nLCAic3Vycm9nYXRlZXNjYXBlIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5lbmNvZGUoInV0ZjgiKQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZW5jb2RlKCJ1dGYtOCIpCiAKICAgICAgICAgICAgIGwgPSBsZW4oa2V5d29yZCkgKyBsZW4odmFsdWUpICsgMyAgICMgJyAnICsgJz0nICsgJ1xuJwogICAgICAgICAgICAgbiA9IHAgPSAwCkBAIC0xMzk2LDcgKzEyMTcsNyBAQAogICAgICAgICAjIHRoZSB0cmFuc2xhdGlvbiB0byBVVEYtOCBmYWlscy4KICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYnIiXGQrIGhkcmNoYXJzZXQ9KFteXG5dKylcbiIsIGJ1ZikKICAgICAgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwYXhfaGVhZGVyc1siaGRyY2hhcnNldCJdID0gbWF0Y2guZ3JvdXAoMSkuZGVjb2RlKCJ1dGY4IikKKyAgICAgICAgICAgIHBheF9oZWFkZXJzWyJoZHJjaGFyc2V0Il0gPSBtYXRjaC5ncm91cCgxKS5kZWNvZGUoInV0Zi04IikKIAogICAgICAgICAjIEZvciB0aGUgdGltZSBiZWluZywgd2UgZG9uJ3QgY2FyZSBhYm91dCBhbnl0aGluZyBvdGhlciB0aGFuICJCSU5BUlkiLgogICAgICAgICAjIFRoZSBvbmx5IG90aGVyIHZhbHVlIHRoYXQgaXMgY3VycmVudGx5IGFsbG93ZWQgYnkgdGhlIHN0YW5kYXJkIGlzCkBAIC0xNDA1LDcgKzEyMjYsNyBAQAogICAgICAgICBpZiBoZHJjaGFyc2V0ID09ICJCSU5BUlkiOgogICAgICAgICAgICAgZW5jb2RpbmcgPSB0YXJmaWxlLmVuY29kaW5nCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGY4IgorICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAKICAgICAgICAgIyBQYXJzZSBwYXggaGVhZGVyIGluZm9ybWF0aW9uLiBBIHJlY29yZCBsb29rcyBsaWtlIHRoYXQ6CiAgICAgICAgICMgIiVkICVzPSVzXG4iICUgKGxlbmd0aCwga2V5d29yZCwgdmFsdWUpLiBsZW5ndGggaXMgdGhlIHNpemUKQEAgLTE0MjIsMjAgKzEyNDMsMjAgQEAKICAgICAgICAgICAgIGxlbmd0aCA9IGludChsZW5ndGgpCiAgICAgICAgICAgICB2YWx1ZSA9IGJ1ZlttYXRjaC5lbmQoMikgKyAxOm1hdGNoLnN0YXJ0KDEpICsgbGVuZ3RoIC0gMV0KIAotICAgICAgICAgICAgIyBOb3JtYWxseSwgd2UgY291bGQganVzdCB1c2UgInV0ZjgiIGFzIHRoZSBlbmNvZGluZyBhbmQgInN0cmljdCIKKyAgICAgICAgICAgICMgTm9ybWFsbHksIHdlIGNvdWxkIGp1c3QgdXNlICJ1dGYtOCIgYXMgdGhlIGVuY29kaW5nIGFuZCAic3RyaWN0IgogICAgICAgICAgICAgIyBhcyB0aGUgZXJyb3IgaGFuZGxlciwgYnV0IHdlIGJldHRlciBub3QgdGFrZSB0aGUgcmlzay4gRm9yCiAgICAgICAgICAgICAjIGV4YW1wbGUsIEdOVSB0YXIgPD0gMS4yMyBpcyBrbm93biB0byBzdG9yZSBmaWxlbmFtZXMgaXQgY2Fubm90CiAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0byBVVEYtOCBhcyByYXcgc3RyaW5ncyAodW5mb3J0dW5hdGVseSB3aXRob3V0IGEKICAgICAgICAgICAgICMgaGRyY2hhcnNldD1CSU5BUlkgaGVhZGVyKS4KICAgICAgICAgICAgICMgV2UgZmlyc3QgdHJ5IHRoZSBzdHJpY3Qgc3RhbmRhcmQgZW5jb2RpbmcsIGFuZCBpZiB0aGF0IGZhaWxzIHdlCiAgICAgICAgICAgICAjIGZhbGwgYmFjayBvbiB0aGUgdXNlcidzIGVuY29kaW5nIGFuZCBlcnJvciBoYW5kbGVyLgotICAgICAgICAgICAga2V5d29yZCA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQoa2V5d29yZCwgInV0ZjgiLCAidXRmOCIsCisgICAgICAgICAgICBrZXl3b3JkID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZChrZXl3b3JkLCAidXRmLTgiLCAidXRmLTgiLAogICAgICAgICAgICAgICAgICAgICB0YXJmaWxlLmVycm9ycykKICAgICAgICAgICAgIGlmIGtleXdvcmQgaW4gUEFYX05BTUVfRklFTERTOgogICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZCh2YWx1ZSwgZW5jb2RpbmcsIHRhcmZpbGUuZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJmaWxlLmVycm9ycykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKHZhbHVlLCAidXRmOCIsICJ1dGY4IiwKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQodmFsdWUsICJ1dGYtOCIsICJ1dGYtOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJmaWxlLmVycm9ycykKIAogICAgICAgICAgICAgcGF4X2hlYWRlcnNba2V5d29yZF0gPSB2YWx1ZQpAQCAtMTU5NSw3ICsxNDE2LDcgQEAKIAogICAgIHRhcmluZm8gPSBUYXJJbmZvICAgICAgICAgICAjIFRoZSBkZWZhdWx0IFRhckluZm8gY2xhc3MgdG8gdXNlLgogCi0gICAgZmlsZW9iamVjdCA9IEV4RmlsZU9iamVjdCAgICMgVGhlIGRlZmF1bHQgRXhGaWxlT2JqZWN0IGNsYXNzIHRvIHVzZS4KKyAgICBmaWxlb2JqZWN0ID0gRXhGaWxlT2JqZWN0ICAgIyBUaGUgZmlsZS1vYmplY3QgZm9yIGV4dHJhY3RmaWxlKCkuCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZT1Ob25lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBmb3JtYXQ9Tm9uZSwKICAgICAgICAgICAgIHRhcmluZm89Tm9uZSwgZGVyZWZlcmVuY2U9Tm9uZSwgaWdub3JlX3plcm9zPU5vbmUsIGVuY29kaW5nPU5vbmUsCkBAIC0xNzE0LDE4ICsxNTM1LDIyIEBACiAgICAgICAgICAgICdyOicgICAgICAgICBvcGVuIGZvciByZWFkaW5nIGV4Y2x1c2l2ZWx5IHVuY29tcHJlc3NlZAogICAgICAgICAgICAncjpneicgICAgICAgb3BlbiBmb3IgcmVhZGluZyB3aXRoIGd6aXAgY29tcHJlc3Npb24KICAgICAgICAgICAgJ3I6YnoyJyAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBiemlwMiBjb21wcmVzc2lvbgorICAgICAgICAgICAncjp4eicgICAgICAgb3BlbiBmb3IgcmVhZGluZyB3aXRoIGx6bWEgY29tcHJlc3Npb24KICAgICAgICAgICAgJ2EnIG9yICdhOicgIG9wZW4gZm9yIGFwcGVuZGluZywgY3JlYXRpbmcgdGhlIGZpbGUgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICd3JyBvciAndzonICBvcGVuIGZvciB3cml0aW5nIHdpdGhvdXQgY29tcHJlc3Npb24KICAgICAgICAgICAgJ3c6Z3onICAgICAgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aCBnemlwIGNvbXByZXNzaW9uCiAgICAgICAgICAgICd3OmJ6MicgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KKyAgICAgICAgICAgJ3c6eHonICAgICAgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAKICAgICAgICAgICAgJ3J8KicgICAgICAgIG9wZW4gYSBzdHJlYW0gb2YgdGFyIGJsb2NrcyB3aXRoIHRyYW5zcGFyZW50IGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyfCcgICAgICAgICBvcGVuIGFuIHVuY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcyBmb3IgcmVhZGluZwogICAgICAgICAgICAncnxneicgICAgICAgb3BlbiBhIGd6aXAgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwogICAgICAgICAgICAncnxiejInICAgICAgb3BlbiBhIGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MKKyAgICAgICAgICAgJ3J8eHonICAgICAgIG9wZW4gYW4gbHptYSBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCiAgICAgICAgICAgICd3fCcgICAgICAgICBvcGVuIGFuIHVuY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKICAgICAgICAgICAgJ3d8Z3onICAgICAgIG9wZW4gYSBnemlwIGNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCiAgICAgICAgICAgICd3fGJ6MicgICAgICBvcGVuIGEgYnppcDIgY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKKyAgICAgICAgICAgJ3d8eHonICAgICAgIG9wZW4gYW4gbHptYSBjb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAiIiIKIAogICAgICAgICBpZiBub3QgbmFtZSBhbmQgbm90IGZpbGVvYmo6CkBAIC0xODMyLDEwICsxNjU3LDggQEAKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigiYnoyIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKIAotICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZmlsZW9iaiA9IF9CWjJQcm94eShmaWxlb2JqLCBtb2RlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmlsZW9iaiA9IGJ6Mi5CWjJGaWxlKG5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWw9Y29tcHJlc3NsZXZlbCkKKyAgICAgICAgZmlsZW9iaiA9IGJ6Mi5CWjJGaWxlKGZpbGVvYmogb3IgbmFtZSwgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzbGV2ZWw9Y29tcHJlc3NsZXZlbCkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0ID0gY2xzLnRhcm9wZW4obmFtZSwgbW9kZSwgZmlsZW9iaiwgKiprd2FyZ3MpCkBAIC0xODQ1LDExICsxNjY4LDM1IEBACiAgICAgICAgIHQuX2V4dGZpbGVvYmogPSBGYWxzZQogICAgICAgICByZXR1cm4gdAogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHh6b3BlbihjbHMsIG5hbWUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsIHByZXNldD1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICIiIk9wZW4gbHptYSBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KKyAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnIikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgbHptYQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJsem1hIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKKworICAgICAgICBmaWxlb2JqID0gbHptYS5MWk1BRmlsZShmaWxlb2JqIG9yIG5hbWUsIG1vZGUsIHByZXNldD1wcmVzZXQpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQorICAgICAgICBleGNlcHQgKGx6bWEuTFpNQUVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICBmaWxlb2JqLmNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcigibm90IGFuIGx6bWEgZmlsZSIpCisgICAgICAgIHQuX2V4dGZpbGVvYmogPSBGYWxzZQorICAgICAgICByZXR1cm4gdAorCiAgICAgIyBBbGwgKm9wZW4oKSBtZXRob2RzIGFyZSByZWdpc3RlcmVkIGhlcmUuCiAgICAgT1BFTl9NRVRIID0gewogICAgICAgICAidGFyIjogInRhcm9wZW4iLCAgICMgdW5jb21wcmVzc2VkIHRhcgogICAgICAgICAiZ3oiOiAgImd6b3BlbiIsICAgICMgZ3ppcCBjb21wcmVzc2VkIHRhcgotICAgICAgICAiYnoyIjogImJ6Mm9wZW4iICAgICMgYnppcDIgY29tcHJlc3NlZCB0YXIKKyAgICAgICAgImJ6MiI6ICJiejJvcGVuIiwgICAjIGJ6aXAyIGNvbXByZXNzZWQgdGFyCisgICAgICAgICJ4eiI6ICAieHpvcGVuIiAgICAgIyBsem1hIGNvbXByZXNzZWQgdGFyCiAgICAgfQogCiAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMDA5LDcgKzE4NTYsNyBAQAogCiAgICAgICAgIGZvciB0YXJpbmZvIGluIHNlbGY6CiAgICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KGZpbGVtb2RlKHRhcmluZm8ubW9kZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgcHJpbnQoc3RhdC5maWxlbW9kZSh0YXJpbmZvLm1vZGUpLCBlbmQ9JyAnKQogICAgICAgICAgICAgICAgIHByaW50KCIlcy8lcyIgJSAodGFyaW5mby51bmFtZSBvciB0YXJpbmZvLnVpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8uZ25hbWUgb3IgdGFyaW5mby5naWQpLCBlbmQ9JyAnKQogICAgICAgICAgICAgICAgIGlmIHRhcmluZm8uaXNjaHIoKSBvciB0YXJpbmZvLmlzYmxrKCk6CkBAIC0yMTkyLDEyICsyMDM5LDkgQEAKIAogICAgIGRlZiBleHRyYWN0ZmlsZShzZWxmLCBtZW1iZXIpOgogICAgICAgICAiIiJFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlIG9iamVjdC4gYG1lbWJlcicgbWF5IGJlCi0gICAgICAgICAgIGEgZmlsZW5hbWUgb3IgYSBUYXJJbmZvIG9iamVjdC4gSWYgYG1lbWJlcicgaXMgYSByZWd1bGFyIGZpbGUsIGEKLSAgICAgICAgICAgZmlsZS1saWtlIG9iamVjdCBpcyByZXR1cm5lZC4gSWYgYG1lbWJlcicgaXMgYSBsaW5rLCBhIGZpbGUtbGlrZQotICAgICAgICAgICBvYmplY3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgbGluaydzIHRhcmdldC4gSWYgYG1lbWJlcicgaXMgbm9uZSBvZgotICAgICAgICAgICB0aGUgYWJvdmUsIE5vbmUgaXMgcmV0dXJuZWQuCi0gICAgICAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJlYWQtb25seSBhbmQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZwotICAgICAgICAgICBtZXRob2RzOiByZWFkKCksIHJlYWRsaW5lKCksIHJlYWRsaW5lcygpLCBzZWVrKCkgYW5kIHRlbGwoKQorICAgICAgICAgICBhIGZpbGVuYW1lIG9yIGEgVGFySW5mbyBvYmplY3QuIElmIGBtZW1iZXInIGlzIGEgcmVndWxhciBmaWxlIG9yIGEKKyAgICAgICAgICAgbGluaywgYW4gaW8uQnVmZmVyZWRSZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkLiBPdGhlcndpc2UsIE5vbmUgaXMKKyAgICAgICAgICAgcmV0dXJuZWQuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9jaGVjaygiciIpCiAKQEAgLTIyMDYsMTIgKzIwNTAsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdGFyaW5mbyA9IG1lbWJlcgogCi0gICAgICAgIGlmIHRhcmluZm8uaXNyZWcoKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmplY3Qoc2VsZiwgdGFyaW5mbykKLQotICAgICAgICBlbGlmIHRhcmluZm8udHlwZSBub3QgaW4gU1VQUE9SVEVEX1RZUEVTOgotICAgICAgICAgICAgIyBJZiBhIG1lbWJlcidzIHR5cGUgaXMgdW5rbm93biwgaXQgaXMgdHJlYXRlZCBhcyBhCi0gICAgICAgICAgICAjIHJlZ3VsYXIgZmlsZS4KKyAgICAgICAgaWYgdGFyaW5mby5pc3JlZygpIG9yIHRhcmluZm8udHlwZSBub3QgaW4gU1VQUE9SVEVEX1RZUEVTOgorICAgICAgICAgICAgIyBNZW1iZXJzIHdpdGggdW5rbm93biB0eXBlcyBhcmUgdHJlYXRlZCBhcyByZWd1bGFyIGZpbGVzLgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iamVjdChzZWxmLCB0YXJpbmZvKQogCiAgICAgICAgIGVsaWYgdGFyaW5mby5pc2xuaygpIG9yIHRhcmluZm8uaXNzeW0oKToKQEAgLTIyODMsOSArMjEyMyw4IEBACiAgICAgICAgICAgICAjIFVzZSBhIHNhZmUgbW9kZSBmb3IgdGhlIGRpcmVjdG9yeSwgdGhlIHJlYWwgbW9kZSBpcyBzZXQKICAgICAgICAgICAgICMgbGF0ZXIgaW4gX2V4dHJhY3RfbWVtYmVyKCkuCiAgICAgICAgICAgICBvcy5ta2Rpcih0YXJnZXRwYXRoLCAwbzcwMCkKLSAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgbWFrZWZpbGUoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgICIiIk1ha2UgYSBmaWxlIGNhbGxlZCB0YXJnZXRwYXRoLgpkaWZmIC0tZ2l0IGEvTGliL3RlbXBmaWxlLnB5IGIvTGliL3RlbXBmaWxlLnB5CmluZGV4IDM0ZGZmMzAuLjM5ZWJmNWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVtcGZpbGUucHkKQEAgLTEwLDggKzEwLDYgQEAKIAogICBUTVBfTUFYICAtIG1heGltdW0gbnVtYmVyIG9mIG5hbWVzIHRoYXQgd2lsbCBiZSB0cmllZCBiZWZvcmUKICAgICAgICAgICAgICBnaXZpbmcgdXAuCi0gIHRlbXBsYXRlIC0gdGhlIGRlZmF1bHQgcHJlZml4IGZvciBhbGwgdGVtcG9yYXJ5IG5hbWVzLgotICAgICAgICAgICAgIFlvdSBtYXkgY2hhbmdlIHRoaXMgdG8gY29udHJvbCB0aGUgZGVmYXVsdCBwcmVmaXguCiAgIHRlbXBkaXIgIC0gSWYgdGhpcyBpcyBzZXQgdG8gYSBzdHJpbmcgYmVmb3JlIHRoZSBmaXJzdCB1c2Ugb2YKICAgICAgICAgICAgICBhbnkgcm91dGluZSBmcm9tIHRoaXMgbW9kdWxlLCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMKICAgICAgICAgICAgICBhbm90aGVyIGNhbmRpZGF0ZSBsb2NhdGlvbiB0byBzdG9yZSB0ZW1wb3JhcnkgZmlsZXMuCkBAIC0zMyw3ICszMSw2IEBACiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBpbyBhcyBfaW8KIGltcG9ydCBvcyBhcyBfb3MKLWltcG9ydCBlcnJubyBhcyBfZXJybm8KIGZyb20gcmFuZG9tIGltcG9ydCBSYW5kb20gYXMgX1JhbmRvbQogCiB0cnk6CkBAIC00NSw3ICs0Miw3IEBACiAgICAgZGVmIF9zZXRfY2xvZXhlYyhmZCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZsYWdzID0gX2ZjbnRsLmZjbnRsKGZkLCBfZmNudGwuRl9HRVRGRCwgMCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBmbGFncyByZWFkIHN1Y2Nlc3NmdWxseSwgbW9kaWZ5CkBAIC03NCw2ICs3MSw4IEBACiBlbHNlOgogICAgIFRNUF9NQVggPSAxMDAwMAogCisjIEFsdGhvdWdoIGl0IGRvZXMgbm90IGhhdmUgYW4gdW5kZXJzY29yZSBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGlzCisjIHZhcmlhYmxlIGlzIGFuIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbCAoc2VlIGlzc3VlIDEwMzU0KS4KIHRlbXBsYXRlID0gInRtcCIKIAogIyBJbnRlcm5hbCByb3V0aW5lcy4KQEAgLTg1LDE5ICs4NCwxNiBAQAogZWxpZiBoYXNhdHRyKF9vcywgInN0YXQiKToKICAgICBfc3RhdCA9IF9vcy5zdGF0CiBlbHNlOgotICAgICMgRmFsbGJhY2suICBBbGwgd2UgbmVlZCBpcyBzb21ldGhpbmcgdGhhdCByYWlzZXMgb3MuZXJyb3IgaWYgdGhlCisgICAgIyBGYWxsYmFjay4gIEFsbCB3ZSBuZWVkIGlzIHNvbWV0aGluZyB0aGF0IHJhaXNlcyBPU0Vycm9yIGlmIHRoZQogICAgICMgZmlsZSBkb2Vzbid0IGV4aXN0LgogICAgIGRlZiBfc3RhdChmbik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSBvcGVuKGZuKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIF9vcy5lcnJvcgorICAgICAgICBmID0gb3BlbihmbikKICAgICAgICAgZi5jbG9zZSgpCiAKIGRlZiBfZXhpc3RzKGZuKToKICAgICB0cnk6CiAgICAgICAgIF9zdGF0KGZuKQotICAgIGV4Y2VwdCBfb3MuZXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBGYWxzZQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0xNDksNyArMTQ1LDcgQEAKICAgICAjIEFzIGEgbGFzdCByZXNvcnQsIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgICB0cnk6CiAgICAgICAgIGRpcmxpc3QuYXBwZW5kKF9vcy5nZXRjd2QoKSkKLSAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBfb3MuZXJyb3IpOgorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgICBkaXJsaXN0LmFwcGVuZChfb3MuY3VyZGlyKQogCiAgICAgcmV0dXJuIGRpcmxpc3QKQEAgLTE4MSwxMiArMTc3LDExIEBACiAgICAgICAgICAgICAgICAgX29zLnVubGluayhmaWxlbmFtZSkKICAgICAgICAgICAgICAgICBkZWwgZnAsIGZkCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRpcgotICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSBfZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgICAgICBicmVhayAjIG5vIHBvaW50IHRyeWluZyBtb3JlIG5hbWVzIGluIHRoaXMgZGlyZWN0b3J5CisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICByYWlzZSBJT0Vycm9yKF9lcnJuby5FTk9FTlQsCi0gICAgICAgICAgICAgICAgICAiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm91bmQgaW4gJXMiICUgZGlybGlzdCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrICAgIyBubyBwb2ludCB0cnlpbmcgbW9yZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeQorICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKCJObyB1c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3VuZCBpbiAlcyIgJSBkaXJsaXN0KQogCiBfbmFtZV9zZXF1ZW5jZSA9IE5vbmUKIApAQCAtMjE2LDEyICsyMTEsMTAgQEAKICAgICAgICAgICAgIGZkID0gX29zLm9wZW4oZmlsZSwgZmxhZ3MsIDBvNjAwKQogICAgICAgICAgICAgX3NldF9jbG9leGVjKGZkKQogICAgICAgICAgICAgcmV0dXJuIChmZCwgX29zLnBhdGguYWJzcGF0aChmaWxlKSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gX2Vycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICBjb250aW51ZSAjIHRyeSBhZ2FpbgotICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlICAgICMgdHJ5IGFnYWluCiAKLSAgICByYWlzZSBJT0Vycm9yKF9lcnJuby5FRVhJU1QsICJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGUgbmFtZSBmb3VuZCIpCisgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKCJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGUgbmFtZSBmb3VuZCIpCiAKIAogIyBVc2VyIHZpc2libGUgaW50ZXJmYWNlcy4KQEAgLTMwNSwxMiArMjk4LDEwIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9vcy5ta2RpcihmaWxlLCAwbzcwMCkKICAgICAgICAgICAgIHJldHVybiBmaWxlCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vID09IF9lcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgY29udGludWUgIyB0cnkgYWdhaW4KLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCisgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKCJObyB1c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBuYW1lIGZvdW5kIikKIAogZGVmIG1rdGVtcChzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwgZGlyPU5vbmUpOgogICAgICIiIlVzZXItY2FsbGFibGUgZnVuY3Rpb24gdG8gcmV0dXJuIGEgdW5pcXVlIHRlbXBvcmFyeSBmaWxlIG5hbWUuICBUaGUKQEAgLTMzOSw3ICszMzAsNyBAQAogICAgICAgICBpZiBub3QgX2V4aXN0cyhmaWxlKToKICAgICAgICAgICAgIHJldHVybiBmaWxlCiAKLSAgICByYWlzZSBJT0Vycm9yKF9lcnJuby5FRVhJU1QsICJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGVuYW1lIGZvdW5kIikKKyAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZW5hbWUgZm91bmQiKQogCiAKIGNsYXNzIF9UZW1wb3JhcnlGaWxlV3JhcHBlcjoKQEAgLTU5Miw4ICs1ODMsMTMgQEAKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUudGVsbCgpCiAKLSAgICBkZWYgdHJ1bmNhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ZpbGUudHJ1bmNhdGUoKQorICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBzaXplPU5vbmUpOgorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHNpemUgPiBzZWxmLl9tYXhfc2l6ZToKKyAgICAgICAgICAgICAgICBzZWxmLnJvbGxvdmVyKCkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGUudHJ1bmNhdGUoc2l6ZSkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzKToKICAgICAgICAgZmlsZSA9IHNlbGYuX2ZpbGUKQEAgLTY2OSw3ICs2NjUsNyBAQAogICAgIF9pc2xpbmsgPSBzdGF0aWNtZXRob2QoX29zLnBhdGguaXNsaW5rKQogICAgIF9yZW1vdmUgPSBzdGF0aWNtZXRob2QoX29zLnJlbW92ZSkKICAgICBfcm1kaXIgPSBzdGF0aWNtZXRob2QoX29zLnJtZGlyKQotICAgIF9vc19lcnJvciA9IF9vcy5lcnJvcgorICAgIF9vc19lcnJvciA9IE9TRXJyb3IKICAgICBfd2FybiA9IF93YXJuaW5ncy53YXJuCiAKICAgICBkZWYgX3JtdHJlZShzZWxmLCBwYXRoKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2J1ZmZlcl90ZXN0cy5weSBiL0xpYi90ZXN0L2J1ZmZlcl90ZXN0cy5weQppbmRleCA2ZDIwZjdkLi5jZjU0YzI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvYnVmZmVyX3Rlc3RzLnB5CkBAIC0yMDAsNyArMjAwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYicnLCBiJ2FiYycsIGInZGVmJywgYidnaGknLCBiJyddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYicnLCBiJ2FiYycsIGInZGVmJywgYidnaGknLCBiJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoRmFsc2UpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJ1xuJywgYidhYmNcbicsIGInZGVmXHJcbicsIGInZ2hpXG4nLCBiJ1xyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcygxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJycsIGInYWJjJywgYidkZWYnLCBiJ2doaScsIGInJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InXG4nLCBiJ2FiY1xuJywgYidkZWZcclxuJywgYidnaGlcbicsIGInXHInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tYXJzaGFsKGInYWJjJykuc3BsaXRsaW5lcywgNDIsIDQyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvUkVBRE1FIGIvTGliL3Rlc3QvY3Jhc2hlcnMvUkVBRE1FCmluZGV4IDJhNzNlMWIuLjAyNTlhMDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRQorKysgYi9MaWIvdGVzdC9jcmFzaGVycy9SRUFETUUKQEAgLTE0LDMgKzE0LDcgQEAKIE9uY2UgdGhlIGNyYXNoIGlzIGZpeGVkLCB0aGUgdGVzdCBjYXNlIHNob3VsZCBiZSBtb3ZlZCBpbnRvIGFuIGFwcHJvcHJpYXRlIHRlc3QKIChldmVuIGlmIGl0IHdhcyBvcmlnaW5hbGx5IGZyb20gdGhlIHRlc3Qgc3VpdGUpLiAgVGhpcyBlbnN1cmVzIHRoZSByZWdyZXNzaW9uCiBkb2Vzbid0IGhhcHBlbiBhZ2Fpbi4gIEFuZCBpZiBpdCBkb2VzLCBpdCBzaG91bGQgYmUgZWFzaWVyIHRvIHRyYWNrIGRvd24uCisKK0Fsc28gc2VlIExpYi90ZXN0X2NyYXNoZXJzLnB5IHdoaWNoIGV4ZXJjaXNlcyB0aGUgY3Jhc2hlcnMgaW4gdGhpcyBkaXJlY3RvcnkuCitJbiBwYXJ0aWN1bGFyLCBtYWtlIHN1cmUgdG8gYWRkIGFueSBuZXcgaW5maW5pdGUgbG9vcCBjcmFzaGVycyB0byB0aGUgYmxhY2sKK2xpc3Qgc28gaXQgZG9lc24ndCB0cnkgdG8gcnVuIHRoZW0uCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL2JvcnJvd2VkX3JlZl8xLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODJmNDY0Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NyYXNoZXJzL2JvcnJvd2VkX3JlZl8xLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIiIiCi1fUHlUeXBlX0xvb2t1cCgpIHJldHVybnMgYSBib3Jyb3dlZCByZWZlcmVuY2UuCi1UaGlzIGF0dGFja3MgdGhlIGNhbGwgaW4gZGljdG9iamVjdC5jLgotIiIiCi0KLWNsYXNzIEEob2JqZWN0KToKLSAgICBwYXNzCi0KLWNsYXNzIEIob2JqZWN0KToKLSAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICAgICAgcHJpbnQoJ2hpJykKLSAgICAgICAgZGVsIEQuX19taXNzaW5nX18KLQotY2xhc3MgRChkaWN0KToKLSAgICBjbGFzcyBfX21pc3NpbmdfXzoKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgIHBhc3MKLQotCi1kID0gRCgpCi1hID0gQSgpCi1hLmN5Y2xlID0gYQotYS5vdGhlciA9IEIoKQotZGVsIGEKLQotcHJldiA9IE5vbmUKLXdoaWxlIDE6Ci0gICAgZFs1XQotICAgIHByZXYgPSAocHJldiwpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL2JvcnJvd2VkX3JlZl8yLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTQwM2ViLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NyYXNoZXJzL2JvcnJvd2VkX3JlZl8yLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIiIiCi1fUHlUeXBlX0xvb2t1cCgpIHJldHVybnMgYSBib3Jyb3dlZCByZWZlcmVuY2UuCi1UaGlzIGF0dGFja3MgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIoKS4KLQotTkIuIG9uIG15IG1hY2hpbmUgdGhpcyBjcmFzaGVzIGluIDIuNSBkZWJ1ZyBidXQgbm90IHJlbGVhc2UuCi0iIiIKLQotY2xhc3MgQShvYmplY3QpOgotICAgIHBhc3MKLQotY2xhc3MgQihvYmplY3QpOgotICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotICAgICAgICBwcmludCgiaGkiKQotICAgICAgICBkZWwgQy5kCi0KLWNsYXNzIEQob2JqZWN0KToKLSAgICBkZWYgX19zZXRfXyhzZWxmLCBvYmosIHZhbHVlKToKLSAgICAgICAgc2VsZi5oZWxsbyA9IDQyCi0KLWNsYXNzIEMob2JqZWN0KToKLSAgICBkID0gRCgpCi0KLSAgICBkZWYgZygpOgotICAgICAgICBwYXNzCi0KLQotYyA9IEMoKQotYSA9IEEoKQotYS5jeWNsZSA9IGEKLWEub3RoZXIgPSBCKCkKLQotbHN0ID0gW05vbmVdICogMTAwMDAwMAotaSA9IDAKLWRlbCBhCi13aGlsZSAxOgotICAgIGMuZCA9IDQyICAgICAgICAgIyBzZWdmYXVsdHMgaW4gUHlNZXRob2RfTmV3KF9fZnVuY19fPUQuX19zZXRfXywgX19zZWxmX189ZCkKLSAgICBsc3RbaV0gPSBjLmcgICAgICMgY29uc3VtZSB0aGUgZnJlZSBsaXN0IG9mIGluc3RhbmNlbWV0aG9kIG9iamVjdHMKLSAgICBpICs9IDEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL2NvbXBpbGVyX3JlY3Vyc2lvbi5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL2NvbXBpbGVyX3JlY3Vyc2lvbi5weQppbmRleCA0OTU0YmRkLi4zMWYyOGE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkKKysrIGIvTGliL3Rlc3QvY3Jhc2hlcnMvY29tcGlsZXJfcmVjdXJzaW9uLnB5CkBAIC0xLDUgKzEsMTMgQEAKICIiIgotVGhlIGNvbXBpbGVyICg+PSAyLjUpIHJlY3Vyc2VzIGhhcHBpbHkuCitUaGUgY29tcGlsZXIgKD49IDIuNSkgcmVjdXJzZXMgaGFwcGlseSB1bnRpbCBpdCBibG93cyB0aGUgc3RhY2suCisKK1JlY29yZGVkIG9uIHRoZSB0cmFja2VyIGFzIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMTM4MwogIiIiCiAKLWNvbXBpbGUoJygpJyo5Kio1LCAnPycsICdleGVjJykKKyMgVGhlIHZhcmlhbnQgYmVsb3cgYmxvd3MgdXAgaW4gY29tcGlsZXJfY2FsbCwgYnV0IHRoZXJlIGFyZSBhc3NvcnRlZAorIyBvdGhlciB2YXJpYXRpb25zIHRoYXQgYmxvdyB1cCBpbiBvdGhlciBmdW5jdGlvbnMKKyMgZS5nLiAnMSonKjEwKio1KycxJyB3aWxsIGRpZSBpbiBjb21waWxlcl92aXNpdF9leHByCisKKyMgVGhlIGV4YWN0IGxpbWl0IHRvIGRlc3Ryb3kgdGhlIHN0YWNrIHdpbGwgdmFyeSBieSBwbGF0Zm9ybQorIyBidXQgMTBNIHNob3VsZCBkbyB0aGUgdHJpY2sgZXZlbiB3aXRoIGh1Z2Ugc3RhY2sgYWxsb2NhdGlvbnMKK2NvbXBpbGUoJygpJyoxMCoqNywgJz8nLCAnZXhlYycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9sb29zaW5nX21yb19yZWYucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9sb29zaW5nX21yb19yZWYucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYmNkMzIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvbG9vc2luZ19tcm9fcmVmLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIiIiCi1UaGVyZSBpcyBhIHdheSB0byBwdXQga2V5cyBvZiBhbnkgdHlwZSBpbiBhIHR5cGUncyBkaWN0aW9uYXJ5LgotSSB0aGluayB0aGlzIGFsbG93cyB2YXJpb3VzIGtpbmRzIG9mIGNyYXNoZXMsIGJ1dCBzbyBmYXIgSSBoYXZlIG9ubHkKLWZvdW5kIGEgY29udm9sdXRlZCBhdHRhY2sgb2YgX1B5VHlwZV9Mb29rdXAoKSwgd2hpY2ggdXNlcyB0aGUgbXJvIG9mIHRoZQotdHlwZSB3aXRob3V0IGhvbGRpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIGl0LiAgUHJvYmFibHkgd29ya3Mgd2l0aAotc3VwZXIuX19nZXRhdHRyaWJ1dGVfXygpIHRvbywgd2hpY2ggdXNlcyB0aGUgc2FtZSBraW5kIG9mIGNvZGUuCi0iIiIKLQotY2xhc3MgTXlLZXkob2JqZWN0KToKLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBoYXNoKCdteWtleScpCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgIyB0aGUgZm9sbG93aW5nIGxpbmUgZGVjcmVmcyB0aGUgcHJldmlvdXMgWC5fX21yb19fCi0gICAgICAgIFguX19iYXNlc19fID0gKEJhc2UyLCkKLSAgICAgICAgIyB0cmFzaCBhbGwgdHVwbGVzIG9mIGxlbmd0aCAzLCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaXRlbXMgb2YKLSAgICAgICAgIyB0aGUgcHJldmlvdXMgWC5fX21yb19fIGFyZSByZWFsbHkgZ2FyYmFnZQotICAgICAgICB6ID0gW10KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6Ci0gICAgICAgICAgICB6LmFwcGVuZCgoaSwgTm9uZSwgTm9uZSkpCi0gICAgICAgIHJldHVybiAwCi0KLQotY2xhc3MgQmFzZShvYmplY3QpOgotICAgIG15a2V5ID0gJ2Zyb20gQmFzZScKLQotY2xhc3MgQmFzZTIob2JqZWN0KToKLSAgICBteWtleSA9ICdmcm9tIEJhc2UyJwotCi0jIHlvdSBjYW4ndCBhZGQgYSBub24tc3RyaW5nIGtleSB0byBYLl9fZGljdF9fLCBidXQgaXQgY2FuIGJlCi0jIHRoZXJlIGZyb20gdGhlIGJlZ2lubmluZyA6LSkKLVggPSB0eXBlKCdYJywgKEJhc2UsKSwge015S2V5KCk6IDV9KQotCi1wcmludChYLm15a2V5KQotIyBJIGdldCBhIHNlZ2ZhdWx0LCBvciBhIHNsaWdodGx5IHdyb25nIGFzc2VydGlvbiBlcnJvciBpbiBhIGRlYnVnIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvbmFzdHlfZXFfdnNfZGljdC5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL25hc3R5X2VxX3ZzX2RpY3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZjdjYWYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvbmFzdHlfZXFfdnNfZGljdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLSMgZnJvbSBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDEtSnVuZS8wMTUyMzkuaHRtbAotCi0jIGlmIHlvdSBrZWVwIGNoYW5naW5nIGEgZGljdGlvbmFyeSB3aGlsZSBsb29raW5nIHVwIGEga2V5LCB5b3UgY2FuCi0jIHByb3Zva2UgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGluIEMKLQotIyBBdCB0aGUgdGltZSBuZWl0aGVyIFRpbSBub3IgTWljaGFlbCBjb3VsZCBiZSBib3RoZXJlZCB0byB0aGluayBvZiBhCi0jIHdheSB0byBmaXggaXQuCi0KLWNsYXNzIFl1Y2s6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmkgPSAwCi0KLSAgICBkZWYgbWFrZV9kYW5nZXJvdXMoc2VsZik6Ci0gICAgICAgIHNlbGYuaSA9IDEKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgIyBkaXJlY3QgdG8gc2xvdCA0IGluIHRhYmxlIG9mIHNpemUgODsgc2xvdCAxMiB3aGVuIHNpemUgMTYKLSAgICAgICAgcmV0dXJuIDQgKyA4Ci0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgc2VsZi5pID09IDA6Ci0gICAgICAgICAgICAjIGxlYXZlIGRpY3QgYWxvbmUKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBzZWxmLmkgPT0gMToKLSAgICAgICAgICAgICMgZmlkZGxlIHRvIDE2IHNsb3RzCi0gICAgICAgICAgICBzZWxmLl9fZmlsbF9kaWN0KDYpCi0gICAgICAgICAgICBzZWxmLmkgPSAyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGZpZGRsZSB0byA4IHNsb3RzCi0gICAgICAgICAgICBzZWxmLl9fZmlsbF9kaWN0KDQpCi0gICAgICAgICAgICBzZWxmLmkgPSAxCi0KLSAgICAgICAgcmV0dXJuIDEKLQotICAgIGRlZiBfX2ZpbGxfZGljdChzZWxmLCBuKToKLSAgICAgICAgc2VsZi5pID0gMAotICAgICAgICBkaWN0LmNsZWFyKCkKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6Ci0gICAgICAgICAgICBkaWN0W2ldID0gaQotICAgICAgICBkaWN0W3NlbGZdID0gIk9LISIKLQoteSA9IFl1Y2soKQotZGljdCA9IHt5OiAiT0shIn0KLQoteiA9IFl1Y2soKQoteS5tYWtlX2Rhbmdlcm91cygpCi1wcmludChkaWN0W3pdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQppbmRleCBiYjE4NjMwLi45MzFlZjZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQpAQCAtOTc5LDcgKzk3OSw3IEBACiAgICAgICAgICMgZXhlbXB0IHN1Y2ggcGxhdGZvcm1zIChwcm92aWRlZCB0aGV5IHJldHVybiByZWFzb25hYmxlCiAgICAgICAgICMgcmVzdWx0cyEpLgogICAgICAgICBmb3IgaW5zYW5lIGluIC0xZTIwMCwgMWUyMDA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNhbmUpCiAKICAgICBkZWYgdGVzdF90b2RheShzZWxmKToKQEAgLTEyOTEsMTIgKzEyOTEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGhlY2xhc3MubWluKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50aGVjbGFzcy5tYXgpCiAKLSAgICBkZWYgdGVzdF9zdHJmdGltZV9vdXRfb2ZfcmFuZ2Uoc2VsZik6Ci0gICAgICAgICMgRm9yIG5hc3R5IHRlY2huaWNhbCByZWFzb25zLCB3ZSBjYW4ndCBoYW5kbGUgeWVhcnMgYmVmb3JlIDEwMDAuCi0gICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMoMTAwMCwgMSwgMSkuc3RyZnRpbWUoIiVZIiksICIxMDAwIikKLSAgICAgICAgZm9yIHkgaW4gMSwgNDksIDUxLCA5OSwgMTAwLCA5OTk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjbHMoeSwgMSwgMSkuc3RyZnRpbWUsICIlWSIpCisgICAgZGVmIHRlc3Rfc3RyZnRpbWVfeTJrKHNlbGYpOgorICAgICAgICBmb3IgeSBpbiAoMSwgNDksIDcwLCA5OSwgMTAwLCA5OTksIDEwMDAsIDE5NzApOgorICAgICAgICAgICAgZCA9IHNlbGYudGhlY2xhc3MoeSwgMSwgMSkKKyAgICAgICAgICAgICMgSXNzdWUgMTMzMDU6ICBGb3IgeWVhcnMgPCAxMDAwLCB0aGUgdmFsdWUgaXMgbm90IGFsd2F5cworICAgICAgICAgICAgIyBwYWRkZWQgdG8gNCBkaWdpdHMgYWNyb3NzIHBsYXRmb3Jtcy4gIFRoZSBDIHN0YW5kYXJkCisgICAgICAgICAgICAjIGFzc3VtZXMgeWVhciA+PSAxOTAwLCBzbyBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBudW1iZXIKKyAgICAgICAgICAgICMgb2YgZGlnaXRzLgorICAgICAgICAgICAgaWYgZC5zdHJmdGltZSgiJVkiKSAhPSAnJTA0ZCcgJSB5OgorICAgICAgICAgICAgICAgICMgWWVhciA0MiByZXR1cm5zICc0MicsIG5vdCBwYWRkZWQKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuc3RyZnRpbWUoIiVZIiksICclZCcgJSB5KQorICAgICAgICAgICAgICAgICMgJzAwNDInIGlzIG9idGFpbmVkIGFueXdheQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5zdHJmdGltZSgiJTRZIiksICclMDRkJyAlIHkpCiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCkBAIC0xNzMxLDEzICsxNzM3LDc0IEBACiAgICAgICAgIGdvdCA9IHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCh0cykKICAgICAgICAgc2VsZi52ZXJpZnlfZmllbGRfZXF1YWxpdHkoZXhwZWN0ZWQsIGdvdCkKIAorICAgICMgUnVuIHdpdGggVVMtc3R5bGUgRFNUIHJ1bGVzOiBEU1QgYmVnaW5zIDIgYS5tLiBvbiBzZWNvbmQgU3VuZGF5IGluCisgICAgIyBNYXJjaCAoTTMuMi4wKSBhbmQgZW5kcyAyIGEubS4gb24gZmlyc3QgU3VuZGF5IGluIE5vdmVtYmVyIChNMTEuMS4wKS4KKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfbmFpdmUoc2VsZik6CisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwgMTgwMDAuMCkKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSwgMSwgMiwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwLjAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCisgICAgICAgICMgTWlzc2luZyBob3VyIG1heSBwcm9kdWNlIHBsYXRmb3JtLWRlcGVuZGVudCByZXN1bHQKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMywgMTEsIDIsIDMwKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICBbdCAtIHRpbWVkZWx0YShob3Vycz0xKSwgdCArIHRpbWVkZWx0YShob3Vycz0xKV0pCisgICAgICAgICMgQW1iaWd1b3VzIGhvdXIgZGVmYXVsdHMgdG8gRFNUCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCAxLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksIHQpCisKKyAgICAgICAgIyBUaW1lc3RhbXAgbWF5IHJhaXNlIGFuIG92ZXJmbG93IGVycm9yIG9uIHNvbWUgcGxhdGZvcm1zCisgICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDEsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk5LDEyLDEyKV06CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcyA9IHQudGltZXN0YW1wKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAocyksIHQpCisKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfYXdhcmUoc2VsZik6CisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwgMC4wKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89dGltZXpvbmUodGltZWRlbHRhKGhvdXJzPS01KSwgJ0VTVCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCiAgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRfcm91bmRpbmcoc2VsZik6Ci0gICAgICAgICMgVGVzdCB3aGV0aGVyIGZyb210aW1lc3RhbXAgInJvdW5kcyB1cCIgZmxvYXRzIHRoYXQgYXJlIGxlc3MKLSAgICAgICAgIyB0aGFuIDEvMiBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYW4gaW50ZWdlci4KICAgICAgICAgZm9yIGZ0cyBpbiBbc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXBdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHMoMC45OTk5OTk5KSwgZnRzKDEpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHMoMC45OTk5OTk0OSkubWljcm9zZWNvbmQsIDk5OTk5OSkKKyAgICAgICAgICAgIHplcm8gPSBmdHMoMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemVyby5zZWNvbmQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHplcm8ubWljcm9zZWNvbmQsIDApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbWludXNfb25lID0gZnRzKC0xZS02KQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBsb2NhbHRpbWUoLTEpIGFuZCBnbXRpbWUoLTEpIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cworICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW51c19vbmUuc2Vjb25kLCA1OSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbnVzX29uZS5taWNyb3NlY29uZCwgOTk5OTk5KQorCisgICAgICAgICAgICAgICAgdCA9IGZ0cygtMWUtOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIG1pbnVzX29uZSkKKyAgICAgICAgICAgICAgICB0ID0gZnRzKC05ZS03KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgbWludXNfb25lKQorICAgICAgICAgICAgICAgIHQgPSBmdHMoLTFlLTcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCBtaW51c19vbmUpCisKKyAgICAgICAgICAgIHQgPSBmdHMoMWUtNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgemVybykKKyAgICAgICAgICAgIHQgPSBmdHMoOWUtNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgemVybykKKyAgICAgICAgICAgIHQgPSBmdHMoMC45OTk5OTk0OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5zZWNvbmQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubWljcm9zZWNvbmQsIDk5OTk5OSkKKyAgICAgICAgICAgIHQgPSBmdHMoMC45OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnNlY29uZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5taWNyb3NlY29uZCwgOTk5OTk5KQogCiAgICAgZGVmIHRlc3RfaW5zYW5lX2Zyb210aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICMgSXQncyBwb3NzaWJsZSB0aGF0IHNvbWUgcGxhdGZvcm0gbWFwcyB0aW1lX3QgdG8gZG91YmxlLApAQCAtMTc0NSw3ICsxODEyLDcgQEAKICAgICAgICAgIyBleGVtcHQgc3VjaCBwbGF0Zm9ybXMgKHByb3ZpZGVkIHRoZXkgcmV0dXJuIHJlYXNvbmFibGUKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKIAogICAgIGRlZiB0ZXN0X2luc2FuZV91dGNmcm9tdGltZXN0YW1wKHNlbGYpOgpAQCAtMTc1NCw3ICsxODIxLDcgQEAKICAgICAgICAgIyBleGVtcHQgc3VjaCBwbGF0Zm9ybXMgKHByb3ZpZGVkIHRoZXkgcmV0dXJuIHJlYXNvbmFibGUKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBkb2Vzbid0IGFjY2VwdCBuZWdhdGl2ZSB0aW1lc3RhbXBzIikKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9mbG9hdF9mcm9tdGltZXN0YW1wKHNlbGYpOgpAQCAtMTkwNyw3ICsxOTc0LDcgQEAKICAgICAgICAgIyBzaW1wbHkgY2FuJ3QgYmUgYXBwbGllZCB0byBhIG5haXZlIG9iamVjdC4KICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzLm5vdygpCiAgICAgICAgIGYgPSBGaXhlZE9mZnNldCg0NCwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSkgIyBub3QgZW5vdWdoIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHQuYXN0aW1lem9uZSkgIyBuYWl2ZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGYsIGYpICMgdG9vIG1hbnkgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGR0KSAjIGFyZyB3cm9uZyB0eXBlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGYpICMgbmFpdmUKQEAgLTI0NzksNyArMjU0Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MiwgdDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0NCA9PSB0NSkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodDQsIHQ1KSAjIG1peGVkIHR6LWF3YXJlICYgbmFpdmUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQ0IDwgdDUpICMgbWl4ZWQgdHotYXdhcmUgJiBuYWl2ZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDUgPCB0NCkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCiAKQEAgLTI2MzEsNyArMjY5OCw3IEBACiAgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm89Rml4ZWRPZmZzZXQoTm9uZSwgIiIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldCgwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAKICAgICAgICAgIyBJbiB0aW1lIHcvIGlkZW50aWNhbCB0emluZm8gb2JqZWN0cywgdXRjb2Zmc2V0IGlzIGlnbm9yZWQuCiAgICAgICAgIGNsYXNzIFZhcmllcyh0emluZm8pOgpAQCAtMjczNiwxNiArMjgwMywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQxID4gdDIpCiAKLSAgICAgICAgIyBNYWtlIHQyIG5haXZlIGFuZCBpdCBzaG91bGQgZmFpbC4KKyAgICAgICAgIyBNYWtlIHQyIG5haXZlIGFuZCBpdCBzaG91bGQgZGlmZmVyLgogICAgICAgICB0MiA9IHNlbGYudGhlY2xhc3MubWluCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDIsIHQyKQogCiAgICAgICAgICMgSXQncyBhbHNvIG5haXZlIGlmIGl0IGhhcyB0emluZm8gYnV0IHR6aW5mby51dGNvZmZzZXQoKSBpcyBOb25lLgogICAgICAgICBjbGFzcyBOYWl2ZSh0emluZm8pOgogICAgICAgICAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6IHJldHVybiBOb25lCiAgICAgICAgIHQyID0gc2VsZi50aGVjbGFzcyg1LCA2LCA3LCB0emluZm89TmFpdmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MiwgdDIpCiAKICAgICAgICAgIyBPVE9ILCBpdCdzIE9LIHRvIGNvbXBhcmUgdHdvIG9mIHRoZXNlIG1peGluZyB0aGUgdHdvIHdheXMgb2YgYmVpbmcKQEAgLTMxODgsOCArMzI1NSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkdC50emluZm8gaXMgZjQ0bSkKICAgICAgICAgIyBSZXBsYWNpbmcgd2l0aCBkZWdlbmVyYXRlIHR6aW5mbyByYWlzZXMgYW4gZXhjZXB0aW9uLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkdC5hc3RpbWV6b25lLCBmbm9uZSkKLSAgICAgICAgIyBEaXR0byB3aXRoIE5vbmUgdHouCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSwgTm9uZSkKICAgICAgICAgIyBSZXBsYWNpbmcgd2l0aCBzYW1lIHR6aW5mbyBtYWtlcyBubyBjaGFuZ2UuCiAgICAgICAgIHggPSBkdC5hc3RpbWV6b25lKGR0LnR6aW5mbykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHgudHppbmZvIGlzIGY0NG0pCkBAIC0zMjA5LDYgKzMyNzQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdvdC50emluZm8gaXMgZXhwZWN0ZWQudHppbmZvKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdCwgZXhwZWN0ZWQpCiAKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignVVRDJykKKyAgICBkZWYgdGVzdF9hc3RpbWV6b25lX2RlZmF1bHRfdXRjKHNlbGYpOgorICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3Mubm93KHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5hc3RpbWV6b25lKE5vbmUpLCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5hc3RpbWV6b25lKCksIGR0KQorCisgICAgIyBOb3RlIHRoYXQgb2Zmc2V0IGluIFRaIHZhcmlhYmxlIGhhcyB0aGUgb3Bwb3NpdGUgc2lnbiB0byB0aGF0CisgICAgIyBwcm9kdWNlZCBieSAleiBkaXJlY3RpdmUuCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZV9kZWZhdWx0X2Vhc3Rlcm4oc2VsZik6CisgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAxMSwgNCwgNiwgMzAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxvY2FsID0gZHQuYXN0aW1lem9uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGxvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLnN0cmZ0aW1lKCIleiAlWiIpLCAiLTA1MDAgRVNUIikKKyAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCA1LCAzMCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbG9jYWwgPSBkdC5hc3RpbWV6b25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWwuc3RyZnRpbWUoIiV6ICVaIiksICItMDQwMCBFRFQiKQorCiAgICAgZGVmIHRlc3RfYXdhcmVfc3VidHJhY3Qoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKIApAQCAtMzI2Miw3ICszMzQ2LDcgQEAKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldChOb25lLCAiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQogICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvPUZpeGVkT2Zmc2V0KDAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKIAogICAgICAgICAjIEluIGRhdGV0aW1lIHcvIGlkZW50aWNhbCB0emluZm8gb2JqZWN0cywgdXRjb2Zmc2V0IGlzIGlnbm9yZWQuCiAgICAgICAgIGNsYXNzIFZhcmllcyh0emluZm8pOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhL2V4dHJhLmRlY1Rlc3QgYi9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdAppbmRleCBmZThiNzdhLi5iNjMwZDhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdAorKysgYi9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdApAQCAtMjIyLDEyICsyMjIsMjUgQEAKIGV4dHIxNzAxIHBvd2VyIDEwMC4wIC01NTcuNzFlLTc0Mjg4ODg4OCAtPiAxLjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKIGV4dHIxNzAyIHBvd2VyIDEwIDFlLTEwMCAtPiAxLjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKIAorLS0gQW5vdGhlciBvbmUgKHNlZSBpc3N1ZSAjMTIwODApLiAgVGhhbmtzIGFnYWluIHRvIFN0ZWZhbiBLcmFoLgorZXh0cjE3MDMgcG93ZXIgNCAtMS4yZS05OTk5OTk5OTkgLT4gMS4wMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCisKIC0tIEEgY291cGxlIG9mIGludGVyZXN0aW5nIGV4YWN0IGNhc2VzIGZvciBwb3dlci4gIE5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbgogLS0gcmVxdWlyZXMgdGhlc2UgdG8gYmUgcmVwb3J0ZWQgYXMgSW5leGFjdC4KIGV4dHIxNzEwIHBvd2VyIDFlMzc1IDU2ZS0zIC0+IDEuMDAwMDAwMDAwMDAwMDAwRSsyMSBJbmV4YWN0IFJvdW5kZWQKIGV4dHIxNzExIHBvd2VyIDEwMDAwIDAuNzUgLT4gMTAwMC4wMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCiBleHRyMTcxMiBwb3dlciAxZS0yNCAwLjg3NSAtPiAxLjAwMDAwMDAwMDAwMDAwMEUtMjEgSW5leGFjdCBSb3VuZGVkCiAKKy0tIFNvbWUgbW9yZSBleGFjdCBjYXNlcywgZXhlcmNpc2luZyBwb3dlciB3aXRoIG5lZ2F0aXZlIHNlY29uZCBhcmd1bWVudC4KK2V4dHIxNzIwIHBvd2VyIDQwMCAtMC41IC0+IDAuMDUwMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCitleHRyMTcyMSBwb3dlciA0MDk2IC0wLjc1IC0+IDAuMDAxOTUzMTI1MDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAorZXh0cjE3MjIgcG93ZXIgNjI1ZTQgLTAuMjUgLT4gMC4wMjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKKworLS0gTm9uZXhhY3QgY2FzZXMsIHRvIGV4ZXJjaXNlIHNvbWUgb2YgdGhlIGVhcmx5IGV4aXQgY29uZGl0aW9ucyBmcm9tCistLSBfcG93ZXJfZXhhY3QuCitleHRyMTczMCBwb3dlciAyMDQ4IC0wLjc1IC0+IDAuMDAzMjg0NzUxNjIyMDg0ODIyIEluZXhhY3QgUm91bmRlZAorCisKIC0tIFRlc3RzIGZvciB0aGUgaXNfKiBib29sZWFuIG9wZXJhdGlvbnMKIHByZWNpc2lvbjogOQogbWF4RXhwb25lbnQ6IDk5OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGg1MTIucGVtIGIvTGliL3Rlc3QvZGg1MTIucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMGQxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kaDUxMi5wZW0KQEAgLTAsMCArMSw5IEBACistLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMtLS0tLQorTUVZQ1FRRDFLdjg4NGJFcFFCZ1JqWHlFcHdweTFvYkVBeG5JQnlsNnlwVU0yWmFmcTlBS1VKc0NSdE1JUFdhaworWFVHZm5IeTlpVXNpR1NhNnE2SmV3MVhwS2dWZkFnRUMKKy0tLS0tRU5EIERIIFBBUkFNRVRFUlMtLS0tLQorCitUaGVzZSBhcmUgdGhlIDUxMiBiaXQgREggcGFyYW1ldGVycyBmcm9tICJBc3NpZ25lZCBOdW1iZXIgZm9yIFNLSVAgUHJvdG9jb2xzIgorKGh0dHA6Ly93d3cuc2tpcC12cG4ub3JnL3NwZWMvbnVtYmVycy5odG1sKS4KK1NlZSB0aGVyZSBmb3IgaG93IHRoZXkgd2VyZSBnZW5lcmF0ZWQuCitOb3RlIHRoYXQgZyBpcyBub3QgYSBnZW5lcmF0b3IsIGJ1dCB0aGlzIGlzIG5vdCBhIHByb2JsZW0gc2luY2UgcCBpcyBhIHNhZmUgcHJpbWUuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dCBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CmluZGV4IDUwMzdiMzMuLjFjMWY2OWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CisrKyBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CkBAIC0xMSwxMSArMTEsNiBAQAogICAgICAgKy0tIEFzc2VydGlvbkVycm9yCiAgICAgICArLS0gQXR0cmlidXRlRXJyb3IKICAgICAgICstLSBCdWZmZXJFcnJvcgotICAgICAgKy0tIEVudmlyb25tZW50RXJyb3IKLSAgICAgIHwgICAgKy0tIElPRXJyb3IKLSAgICAgIHwgICAgKy0tIE9TRXJyb3IKLSAgICAgIHwgICAgICAgICArLS0gV2luZG93c0Vycm9yIChXaW5kb3dzKQotICAgICAgfCAgICAgICAgICstLSBWTVNFcnJvciAoVk1TKQogICAgICAgKy0tIEVPRkVycm9yCiAgICAgICArLS0gSW1wb3J0RXJyb3IKICAgICAgICstLSBMb29rdXBFcnJvcgpAQCAtMjQsNiArMTksMjIgQEAKICAgICAgICstLSBNZW1vcnlFcnJvcgogICAgICAgKy0tIE5hbWVFcnJvcgogICAgICAgfCAgICArLS0gVW5ib3VuZExvY2FsRXJyb3IKKyAgICAgICstLSBPU0Vycm9yCisgICAgICB8ICAgICstLSBCbG9ja2luZ0lPRXJyb3IKKyAgICAgIHwgICAgKy0tIENoaWxkUHJvY2Vzc0Vycm9yCisgICAgICB8ICAgICstLSBDb25uZWN0aW9uRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQnJva2VuUGlwZUVycm9yCisgICAgICB8ICAgIHwgICAgKy0tIENvbm5lY3Rpb25BYm9ydGVkRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorICAgICAgfCAgICB8ICAgICstLSBDb25uZWN0aW9uUmVzZXRFcnJvcgorICAgICAgfCAgICArLS0gRmlsZUV4aXN0c0Vycm9yCisgICAgICB8ICAgICstLSBGaWxlTm90Rm91bmRFcnJvcgorICAgICAgfCAgICArLS0gSW50ZXJydXB0ZWRFcnJvcgorICAgICAgfCAgICArLS0gSXNBRGlyZWN0b3J5RXJyb3IKKyAgICAgIHwgICAgKy0tIE5vdEFEaXJlY3RvcnlFcnJvcgorICAgICAgfCAgICArLS0gUGVybWlzc2lvbkVycm9yCisgICAgICB8ICAgICstLSBQcm9jZXNzTG9va3VwRXJyb3IKKyAgICAgIHwgICAgKy0tIFRpbWVvdXRFcnJvcgogICAgICAgKy0tIFJlZmVyZW5jZUVycm9yCiAgICAgICArLS0gUnVudGltZUVycm9yCiAgICAgICB8ICAgICstLSBOb3RJbXBsZW1lbnRlZEVycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9mb3JrX3dhaXQucHkgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKaW5kZXggMWNhYWIxYy4uODg1MjdkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZm9ya193YWl0LnB5CisrKyBiL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQpAQCAtNDMsNiArNDMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKIAorICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTV9USFJFQURTKToKICAgICAgICAgICAgIF90aHJlYWQuc3RhcnRfbmV3KHNlbGYuZiwgKGksKSkKQEAgLTY5LDcgKzcwLDggQEAKICAgICAgICAgICAgIG9zLl9leGl0KG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFBhcmVudAotICAgICAgICAgICAgc2VsZi53YWl0X2ltcGwoY3BpZCkKLSAgICAgICAgICAgICMgVGVsbCB0aHJlYWRzIHRvIGRpZQotICAgICAgICAgICAgc2VsZi5zdG9wID0gMQotICAgICAgICAgICAgdGltZS5zbGVlcCgyKlNIT1JUU0xFRVApICMgV2FpdCBmb3IgdGhyZWFkcyB0byBkaWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLndhaXRfaW1wbChjcGlkKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAjIFRlbGwgdGhyZWFkcyB0byBkaWUKKyAgICAgICAgICAgICAgICBzZWxmLnN0b3AgPSAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTEucHkgYi9MaWIvdGVzdC9mdXR1cmVfdGVzdDEucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfZnV0dXJlMS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvZnV0dXJlX3Rlc3QxLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTIucHkgYi9MaWIvdGVzdC9mdXR1cmVfdGVzdDIucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfZnV0dXJlMi5weQpyZW5hbWUgdG8gTGliL3Rlc3QvZnV0dXJlX3Rlc3QyLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3RfZHVtcC5weSBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CmluZGV4IDA4M2MxMWYuLjRiMzM4NmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CisrKyBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CkBAIC0xLDYgKzEsNyBAQAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVzdC5qc29uX3Rlc3RzIGltcG9ydCBQeVRlc3QsIENUZXN0CiAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfMUcKIAogY2xhc3MgVGVzdER1bXA6CiAgICAgZGVmIHRlc3RfZHVtcChzZWxmKToKQEAgLTIxLDQgKzIyLDIwIEBACiAKIAogY2xhc3MgVGVzdFB5RHVtcChUZXN0RHVtcCwgUHlUZXN0KTogcGFzcwotY2xhc3MgVGVzdENEdW1wKFRlc3REdW1wLCBDVGVzdCk6IHBhc3MKKworY2xhc3MgVGVzdENEdW1wKFRlc3REdW1wLCBDVGVzdCk6CisKKyAgICAjIFRoZSBzaXplIHJlcXVpcmVtZW50IGhlcmUgaXMgaG9wZWZ1bGx5IG92ZXItZXN0aW1hdGVkIChhY3R1YWwKKyAgICAjIG1lbW9yeSBjb25zdW1wdGlvbiBkZXBlbmRpbmcgb24gaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIGFsc28KKyAgICAjIHN5c3RlbSBtZW1vcnkgbWFuYWdlbWVudCwgc2luY2UgdGhpcyBtYXkgYWxsb2NhdGUgYSBsb3Qgb2YKKyAgICAjIHNtYWxsIG9iamVjdHMpLgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMUcsIG1lbXVzZT0xKQorICAgIGRlZiB0ZXN0X2xhcmdlX2xpc3Qoc2VsZiwgc2l6ZSk6CisgICAgICAgIE4gPSBpbnQoMzAgKiAxMDI0ICogMTAyNCAqIChzaXplIC8gXzFHKSkKKyAgICAgICAgbCA9IFsxXSAqIE4KKyAgICAgICAgZW5jb2RlZCA9IHNlbGYuZHVtcHMobCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW5jb2RlZCksIE4gKiAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbOjFdLCAiWyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFstMjpdLCAiMV0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbMTotMl0sICIxLCAiICogKE4gLSAxKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9zY2Fuc3RyaW5nLnB5IGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKaW5kZXggZjgyY2RlZS4uNDI2YzhkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKQEAgLTksMTQgKzksOSBAQAogICAgICAgICAgICAgc2NhbnN0cmluZygnInpcXHVkODM0XFx1ZGQyMHgiJywgMSwgVHJ1ZSksCiAgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDE2KSkKIAotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2NhbnN0cmluZygnInpcVTAwMDFkMTIweCInLCAxLCBUcnVlKSwKLSAgICAgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDYpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxVMDAwMWQxMjB4IicsIDEsIFRydWUpLAotICAgICAgICAgICAgICAgICgnelxVMDAwMWQxMjB4JywgNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxVMDAwMWQxMjB4IicsIDEsIFRydWUpLAorICAgICAgICAgICAgKCd6XFUwMDAxZDEyMHgnLCA1KSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2NhbnN0cmluZygnIlxcdTAwN2IiJywgMSwgVHJ1ZSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0gYi9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkwNTc0OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2tleWNlcnQucGFzc3dkLnBlbQpAQCAtMCwwICsxLDMzIEBACistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitQcm9jLVR5cGU6IDQsRU5DUllQVEVECitERUstSW5mbzogREVTLUVERTMtQ0JDLDFBOEQ5RDJBMDJFQzY5OEEKKwora0pZYmZaOEwwc2ZlOU90eTNndzBhbG9Oblk1RThmZWdSZlFMWmxOb3hUbDZqTnQwbkl3SThrREozNkNaZ1I5YwordTNGREptL0txcmZVb3o4dlcrcUVuV2hTRzdRUFgyd1dHUEhkNEs5NFl6L0ZnclJ6WjBEb0s3WHhYcTlnT3RWQQorQVZHUWhuejMycCs2V2hmR3NDcjlBclhFd1JaclRrL0Z2ekVQYVU1Zkhjb1Nrck5WQUdYOElwU1ZrU0R3RURRcgorR3YxNytjZms5OVVWMU9DemE2eUtIb0ZrVHRyQytQWlU3MUxvbUJhYml2UzJPYzRCOWhZdVNSMmhGMDF3VEhQKworWWxXTmFnWk9PVnROejRvS0s5eDllTlFwbWZRWFF2UFBUZnVzZXhLSWJLZlpyTXZKb3hjbTFnZmNaMEgvd0s2UAorNndtWFNHMzVxTU9PenRDWk50cGVyanMxd3pFQlh6bnlLOFFtTGNBSkJqa2ZhckFCSlg5dkJFelpWME9VS2h5Kworbm9PUkZ3SFRsbHBoYm15ZExodTZlaExVWk1IUGh6QVM1VU43c3J0cFNOODFlZXJETXkwUk1VQXdBNy9Qb2ZYMQorOTRNZTg1UThqUDBQQzlFVGRzSmNQcUx6QVBFVEVZdTBFTGV3S1JjcmR5V2krdGxMRnJwRTVLVC9zNWVjYmw5bAorN0I2MVU0S2ZkMVBJWGMvc2lJTmhVM0EzYllLKzg0NVl5VUFyVU9uS2Yxa0VveDdwMVJwRDd5RnFWVDA0bFJUbworY2liTktBVEJ1c1hTdUJycDJHNkdOdWhXRU9TYWZXQ0tKUUF6Z0NZSXA2WlRWMmtoaE1VR3BwYy8ySDNDRjZjTworelgwS3RsUFZaQzdoTGtCNkhUOFN4WVV3RjF6cVdZNysvWFBQZGMzN01lRVo4N1EzVXVad3FPUkxZK1owaHBndAorTDVKWEJDb2tsWmhDQWFOMkdxd0ZMWHRHaVJTUkZHWTd4WEloYkRUbEU2NVd2MVdHR2dETE1LR0UxZ096M3lBbworMmpqRzEreUFISlVkRTY5WFRGSFNxU2t2YWxvQTFXMDNMZE1YWjlWdVFKL3lTWENpZTZBQkFRPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNWRENDQWIyZ0F3SUJBZ0lKQU5mSE9Ca1pyOEpPTUEwR0NTcUdTSWIzRFFFQkJRVUFNRjh4Q3pBSkJnTlYKK0JBWVRBbGhaTVJjd0ZRWURWUVFIRXc1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDaE1hVUhsMGFHOXUKK0lGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkREFlRncweE1ERXcKK01EZ3lNekF4TlRaYUZ3MHlNREV3TURVeU16QXhOVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRFZRUUgKK0V3NURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2hNYVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWsKK1lYUnBiMjR4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXcKK2dZa0NnWUVBMjF2VDVpc3E3RjY4YW1ZdXVOcFNGbEtEUHJNVUNhNFlXWXFaUnQyT1orLzNOS2FaMnhBaVN3cjcKKzZNclFGNzB0NW5MYlNQcHFFNSs1VnJTNThTWStnL3NYTGlGZDZBcGxIMXdKWndoNzhEb2ZiRllYVWdna3RGTXQKK3BUeWlYOGp0UDY2YmtjUGtEQURBMDg5UkkxVFFSNkNhK243SEZhN2MxZmFiVlY2aTN6a0NBd0VBQWFNWU1CWXcKK0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBSFBjdFFCRVE0d2QKK0JKNitKY3BJcmFvcExuOEJHaGJqTldqNDBtbVJxV0IvTkFXRjZNNW5lN0twR0F1N3RMZUc0aGIxekxhbGRLOEcKK2x4eTJHUFNSRjZMRlM0OGRwRWoySGJNdjJudnY2eHhhbERNSjkrRGljV2dBS1RRNmJjWDJqM0dVa0NSMGcvVDEKK0NSbE5CQUFsdmhLek83Q2xwZjlsMFlLQkVmcmFKQnlYCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5IGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQppbmRleCBiZTA1NGVhLi40MmUxMThiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKQEAgLTQxOCw2ICs0MTgsNDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHUucmV2ZXJzZSwgNDIpCiAKKyAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsyLCAzLCA0XSkKKyAgICAgICAgdS5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgW10pCisKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFtdKQorICAgICAgICB1LmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbXSkKKworICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoW10pCisgICAgICAgIHUuYXBwZW5kKDEpCisgICAgICAgIHUuY2xlYXIoKQorICAgICAgICB1LmFwcGVuZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFsyXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHUuY2xlYXIsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzEsIDIsIDNdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBbMSwgMiwgM10pCisKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFtdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBbXSkKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGluZGVlZCBhIGNvcHkgYW5kIG5vdCBhIHJlZmVyZW5jZQorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWydhJywgJ2InXSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHYuYXBwZW5kKCdpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbJ2EnLCAnYiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHUgKyBbJ2knXSkKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGEgc2hhbGxvdywgbm90IGEgZGVlcCBjb3B5CisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbMSwgMiwgWzMsIDRdLCA1XSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh2WzNdLCB1WzNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdS5jb3B5LCBOb25lKQorCiAgICAgZGVmIHRlc3Rfc29ydChzZWxmKToKICAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAwXSkKICAgICAgICAgdS5zb3J0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CmluZGV4IDA5NGNjN2EuLmJmYmY0NGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQpAQCAtNCw3ICs0LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKLWZyb20gX3RocmVhZCBpbXBvcnQgc3RhcnRfbmV3X3RocmVhZCwgZ2V0X2lkZW50LCBUSU1FT1VUX01BWAorZnJvbSBfdGhyZWFkIGltcG9ydCBzdGFydF9uZXdfdGhyZWFkLCBUSU1FT1VUX01BWAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgc2VsZi5maW5pc2hlZCA9IFtdCiAgICAgICAgIHNlbGYuX2Nhbl9leGl0ID0gbm90IHdhaXRfYmVmb3JlX2V4aXQKICAgICAgICAgZGVmIHRhc2soKToKLSAgICAgICAgICAgIHRpZCA9IGdldF9pZGVudCgpCisgICAgICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgIHNlbGYuc3RhcnRlZC5hcHBlbmQodGlkKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGYoKQpAQCAtMjU1LDYgKzI1NSwxOCBAQAogICAgICAgICBsb2NrLnJlbGVhc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2sucmVsZWFzZSkKIAorICAgIGRlZiB0ZXN0X3JlbGVhc2Vfc2F2ZV91bmFjcXVpcmVkKHNlbGYpOgorICAgICAgICAjIENhbm5vdCBfcmVsZWFzZV9zYXZlIGFuIHVuYWNxdWlyZWQgbG9jaworICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbG9jay5fcmVsZWFzZV9zYXZlKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2suX3JlbGVhc2Vfc2F2ZSkKKwogICAgIGRlZiB0ZXN0X2RpZmZlcmVudF90aHJlYWQoc2VsZik6CiAgICAgICAgICMgQ2Fubm90IHJlbGVhc2UgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbWFpbGNhcC50eHQgYi9MaWIvdGVzdC9tYWlsY2FwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjExMzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbWFpbGNhcC50eHQKQEAgLTAsMCArMSwzOSBAQAorIyBNYWlsY2FwIGZpbGUgZm9yIHRlc3RfbWFpbGNhcDsgYmFzZWQgb24gUkZDIDE1MjQKKyMgUmVmZXJyZWQgdG8gYnkgdGVzdF9tYWlsY2FwLnB5CisKKyMKKyMgVGhpcyBpcyBhIGNvbW1lbnQuCisjCisKK2FwcGxpY2F0aW9uL2ZyYW1lOyBzaG93ZnJhbWUgJXM7IHByaW50PSJjYXQgJXMgfCBscCIKK2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQ7IHBzLXRvLXRlcm1pbmFsICVzO1wKKyAgICBuZWVkc3Rlcm1pbmFsCithcHBsaWNhdGlvbi9wb3N0c2NyaXB0OyBwcy10by10ZXJtaW5hbCAlczsgXAorICAgIGNvbXBvc2U9aWRyYXcgJXMKK2FwcGxpY2F0aW9uL3gtZHZpOyB4ZHZpICVzCithcHBsaWNhdGlvbi94LW1vdmllOyBtb3ZpZXBsYXllciAlczsgY29tcG9zZT1tb3ZpZW1ha2VyICVzOyBcCisgICAgICAgZGVzY3JpcHRpb249Ik1vdmllIjsgXAorICAgICAgIHgxMS1iaXRtYXA9Ii91c3IvbGliL1ptYWlsL2JpdG1hcHMvbW92aWUueGJtIgorYXBwbGljYXRpb24vKjsgZWNobyAiVGhpcyBpcyBcIiV0XCIgYnV0IFwKKyAgICAgICBpcyA1MCBcJSBHcmVlayB0byBtZSIgXDsgY2F0ICVzOyBjb3Bpb3Vzb3V0cHV0CisKK2F1ZGlvL2Jhc2ljOyBzaG93YXVkaW8gJXM7IGNvbXBvc2U9YXVkaW9jb21wb3NlICVzOyBlZGl0PWF1ZGlvY29tcG9zZSAlcztcCitkZXNjcmlwdGlvbj0iQW4gYXVkaW8gZnJhZ21lbnQiCithdWRpby8qIDsgL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvICV0CisKK2ltYWdlL3JnYjsgZGlzcGxheSAlcworI2ltYWdlL2dpZjsgZGlzcGxheSAlcworaW1hZ2UveC14d2luZG93ZHVtcDsgZGlzcGxheSAlcworCisjIFRoZSBjb250aW51YXRpb24gY2hhciBzaG91bGRuJ3QgXAorIyBtYWtlIGEgZGlmZmVyZW5jZSBpbiBhIGNvbW1lbnQuCisKK21lc3NhZ2UvZXh0ZXJuYWwtYm9keTsgc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSBcCisgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9OyBuZWVkc3Rlcm1pbmFsOyBjb21wb3NldHlwZWQgPSBleHRjb21wb3NlICVzOyBcCisgICAgZGVzY3JpcHRpb249IkEgcmVmZXJlbmNlIHRvIGRhdGEgc3RvcmVkIGluIGFuIGV4dGVybmFsIGxvY2F0aW9uIgorCit0ZXh0L3JpY2h0ZXh0OyBzaG93bm9uYXNjaWkgaXNvLTg4NTktOCAtZSByaWNodGV4dCAtcCAlczsgdGVzdD10ZXN0ICJgZWNobyBcCisgICAgJXtjaGFyc2V0fSB8IHRyICdbQS1aXScgJ1thLXpdJ2AiICA9IGlzby04ODU5LTg7IGNvcGlvdXNvdXRwdXQKKwordmlkZW8vbXBlZzsgbXBlZ19wbGF5ICVzCit2aWRlby8qOyBhbmltYXRlICVzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQgYi9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQKaW5kZXggNWUyNDMzNS4uOTU4NTE4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWF0aF90ZXN0Y2FzZXMudHh0CisrKyBiL0xpYi90ZXN0L21hdGhfdGVzdGNhc2VzLnR4dApAQCAtNTE3LDMgKzUxNywxMTcgQEAKIAogLS0gd2Vha2VyIHZlcnNpb24gb2YgZXhwbTEwMzAyCiBleHBtMTAzMDcgZXhwbTEgNzA5LjUgLT4gMS4zNTQ5ODYzMTkzMTQ2MzI4ZSszMDgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gbG9nMjogbG9nIHRvIGJhc2UgMiAtLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLSBzcGVjaWFsIHZhbHVlcworbG9nMjAwMDAgbG9nMiAwLjAgLT4gLWluZiAgICAgICAgICAgICAgIGRpdmlkZS1ieS16ZXJvCitsb2cyMDAwMSBsb2cyIC0wLjAgLT4gLWluZiAgICAgICAgICAgICAgZGl2aWRlLWJ5LXplcm8KK2xvZzIwMDAyIGxvZzIgaW5mIC0+IGluZgorbG9nMjAwMDMgbG9nMiAtaW5mIC0+IG5hbiAgICAgICAgICAgICAgIGludmFsaWQKK2xvZzIwMDA0IGxvZzIgbmFuIC0+IG5hbgorCistLSBleGFjdCB2YWx1ZSBhdCAxLjAKK2xvZzIwMDEwIGxvZzIgMS4wIC0+IDAuMAorCistLSBuZWdhdGl2ZXMKK2xvZzIwMDIwIGxvZzIgLTVlLTMyNCAtPiBuYW4gICAgICAgICAgICBpbnZhbGlkCitsb2cyMDAyMSBsb2cyIC0xLjAgLT4gbmFuICAgICAgICAgICAgICAgaW52YWxpZAorbG9nMjAwMjIgbG9nMiAtMS43ZS0zMDggLT4gbmFuICAgICAgICAgIGludmFsaWQKKworLS0gZXhhY3QgdmFsdWVzIGF0IHBvd2VycyBvZiAyCitsb2cyMDEwMCBsb2cyIDIuMCAtPiAxLjAKK2xvZzIwMTAxIGxvZzIgNC4wIC0+IDIuMAorbG9nMjAxMDIgbG9nMiA4LjAgLT4gMy4wCitsb2cyMDEwMyBsb2cyIDE2LjAgLT4gNC4wCitsb2cyMDEwNCBsb2cyIDMyLjAgLT4gNS4wCitsb2cyMDEwNSBsb2cyIDY0LjAgLT4gNi4wCitsb2cyMDEwNiBsb2cyIDEyOC4wIC0+IDcuMAorbG9nMjAxMDcgbG9nMiAyNTYuMCAtPiA4LjAKK2xvZzIwMTA4IGxvZzIgNTEyLjAgLT4gOS4wCitsb2cyMDEwOSBsb2cyIDEwMjQuMCAtPiAxMC4wCitsb2cyMDExMCBsb2cyIDIwNDguMCAtPiAxMS4wCisKK2xvZzIwMjAwIGxvZzIgMC41IC0+IC0xLjAKK2xvZzIwMjAxIGxvZzIgMC4yNSAtPiAtMi4wCitsb2cyMDIwMiBsb2cyIDAuMTI1IC0+IC0zLjAKK2xvZzIwMjAzIGxvZzIgMC4wNjI1IC0+IC00LjAKKworLS0gdmFsdWVzIGNsb3NlIHRvIDEuMAorbG9nMjAzMDAgbG9nMiAxLjAwMDAwMDAwMDAwMDAwMDIgLT4gMy4yMDM0MjY1MDM4MTQ5MTcxZS0xNgorbG9nMjAzMDEgbG9nMiAxLjAwMDAwMDAwMDEgLT4gMS40NDI2OTUxNjAxODU5NTE2ZS0xMAorbG9nMjAzMDIgbG9nMiAxLjAwMDAxIC0+IDEuNDQyNjg3ODI3NDcxMjk5N2UtNQorCitsb2cyMDMxMCBsb2cyIDAuOTk5OTk5OTk5OTk5OTk5OSAtPiAtMS42MDE3MTMyNTE5MDc0NTg4ZS0xNgorbG9nMjAzMTEgbG9nMiAwLjk5OTk5OTk5OTkgLT4gLTEuNDQyNjk1MTYwMzMwMjIxMGUtMTAKK2xvZzIwMzEyIGxvZzIgMC45OTk5OSAtPiAtMS40NDI3MDIyNTQ0MDU2OTIyZS01CisKKy0tIHRpbnkgdmFsdWVzCitsb2cyMDQwMCBsb2cyIDVlLTMyNCAtPiAtMTA3NC4wCitsb2cyMDQwMSBsb2cyIDFlLTMyMyAtPiAtMTA3My4wCitsb2cyMDQwMiBsb2cyIDEuNWUtMzIzIC0+IC0xMDcyLjQxNTAzNzQ5OTI3ODkKK2xvZzIwNDAzIGxvZzIgMmUtMzIzIC0+IC0xMDcyLjAKKworbG9nMjA0MTAgbG9nMiAxZS0zMDggLT4gLTEwMjMuMTUzODUzMjI1MzA3NgorbG9nMjA0MTEgbG9nMiAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCAtPiAtMTAyMi4wCitsb2cyMDQxMiBsb2cyIDQuNDUwMTQ3NzE3MDE0NDAyOGUtMzA4IC0+IC0xMDIxLjAKK2xvZzIwNDEzIGxvZzIgMWUtMzA3IC0+IC0xMDE5LjgzMTkyNTEzMDQyMDIKKworLS0gaHVnZSB2YWx1ZXMKK2xvZzIwNTAwIGxvZzIgMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggLT4gMTAyNC4wCitsb2cyMDUwMSBsb2cyIDEuN2UrMzA4IC0+IDEwMjMuOTE5Mzg3OTcxNjcwNgorbG9nMjA1MDIgbG9nMiA4Ljk4ODQ2NTY3NDMxMTU3OTVlKzMwNyAtPiAxMDIzLjAKKworLS0gc2VsZWN0aW9uIG9mIHJhbmRvbSB2YWx1ZXMKK2xvZzIwNjAwIGxvZzIgLTcuMjE3NDMyNDg0MTAzOTgzOGUrMjg5IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjAxIGxvZzIgLTIuODYxMzE5NzM0MDg5NjE3ZSsyNjUgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjAyIGxvZzIgLTQuMzUwNzY0Njg5NDAwODk2MmUrMjU3IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjAzIGxvZzIgLTYuNjcxNzI2NTMwNzUyMDIyNGUrMjM0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA0IGxvZzIgLTMuOTExODAyMzc4NjYxOTI5NGUrMjI5IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA1IGxvZzIgLTEuNTQ3ODIyMTMwMjUwNTE2MWUrMjA2IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA2IGxvZzIgLTEuNDM4MDQ4NTEzMTM2NDYwMmUrMjAwIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA3IGxvZzIgLTMuNzIzNTE5ODczMDM4MjY0NWUrMTg1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA4IGxvZzIgLTEuMDQ3MjI0MjIzNTA5NTcyNGUrMTg0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA5IGxvZzIgLTUuMDE0MTc4MTk1NjE2Mzg4NGUrMTYwIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjEwIGxvZzIgLTIuMTE1Nzk1ODAzMTE2MDMyNGUrMTI0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjExIGxvZzIgLTcuOTY3NzU1ODYxMjU2NzcxOGUrOTAgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjEyIGxvZzIgLTUuNTU1MzkwNjE5NDA2MzczMmUrNDUgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjEzIGxvZzIgLTE2NTczOTAwOTUyNjA3Ljk1MyAtPiBuYW4gICAgICAgIGludmFsaWQKK2xvZzIwNjE0IGxvZzIgLTM3MTk4MzcxMDE5Ljg4ODYxOCAtPiBuYW4gICAgICAgIGludmFsaWQKK2xvZzIwNjE1IGxvZzIgLTYuMDcyNzExNTEyMTQyMjY3NGUtMzIgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE2IGxvZzIgLTIuNTQwNjg0MTY1NjUyNjA1N2UtMzggLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE3IGxvZzIgLTQuOTA1Njc2NjcwMzI2NzY1N2UtNDMgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE4IGxvZzIgLTIuMTY0Njc4NjA3NTIyODMwNWUtNzEgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE5IGxvZzIgLTIuNDcwODI2NzkwNDg4NTczZS03OCAtPiBuYW4gICAgIGludmFsaWQKK2xvZzIwNjIwIGxvZzIgLTMuODY2MTcwOTMwMzQ4OTA2NGUtMTY1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIxIGxvZzIgLTEuMDUxNjQ5Njk3NjY0OTk4NmUtMTgyIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIyIGxvZzIgLTEuNTkzNTQ1ODYxNDMxNzk5NmUtMjU1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIzIGxvZzIgLTIuODc1MDk3NzI2NzMzNjY1NGUtMjkzIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjI0IGxvZzIgLTcuNjA3OTQ2Njc5NDczMjU4NWUtMjk2IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjI1IGxvZzIgMy4yMDczMjUzNTM5OTg4NTQ1ZS0zMDcgLT4gLTEwMTguMTUwNTU0NDIwOTIxMworbG9nMjA2MjYgbG9nMiAxLjY3NDkzNzg4NTQ3MjI0OWUtMjQ0IC0+IC04MDkuODA2MzQ3NTU3ODMxMjYKK2xvZzIwNjI3IGxvZzIgMS4wOTExMjU5MDQ0OTMxMjgzZS0yMTQgLT4gLTcxMC43NjY3OTQ3MjI3NDIxMworbG9nMjA2MjggbG9nMiAyLjAyNzUzNzI2MjQ4MDk3MDllLTE1NCAtPiAtNTEwLjU1NzE5ODE4MzgzMjcyCitsb2cyMDYyOSBsb2cyIDcuMzkyNjA4NzM2OTYzMTg0MWUtMTE1IC0+IC0zNzkuMTM1NjQ3MzUzMTIyOTIKK2xvZzIwNjMwIGxvZzIgMS4zNDgwMTk4MjA2MzQyNDIzZS04NiAtPiAtMjg1LjI1NDk3NDQ1MDk0NDM2Citsb2cyMDYzMSBsb2cyIDguOTkyNzM4NDY1NTcxOTk0N2UtODMgLT4gLTI3Mi41NTEyNzEzNjQwMTYzNworbG9nMjA2MzIgbG9nMiAzLjE0NTIzOTg3MTM1OTc0ODdlLTYwIC0+IC0xOTcuNjYyNTE1NjQ0OTY4NzUKK2xvZzIwNjMzIGxvZzIgNy4wNzA2NTczMjE1NDU3MzUxZS01NSAtPiAtMTc5Ljg4NDIwMDg3NzgyMjE3Citsb2cyMDYzNCBsb2cyIDMuMTI1ODI4NTM5MDczMTY2OWUtNDkgLT4gLTE2MS4xMzAyMzgwMDUwNTY1MworbG9nMjA2MzUgbG9nMiA4LjIyNTMwNDY2Mjc4Mjk5NDJlLTQxIC0+IC0xMzMuMTU4OTgyNzczNTU4NzkKK2xvZzIwNjM2IGxvZzIgNy44NjkxMzY3Mzk3NTE5ODk3ZSs0OSAtPiAxNjUuNzUwNjgyMDI3MzI0MTkKK2xvZzIwNjM3IGxvZzIgMi45OTIwNTYxOTgzOTI1MDEzZSs2NCAtPiAyMTQuMTg0NTM1MzQ1NzM3NTcKK2xvZzIwNjM4IGxvZzIgNC43ODI3MjU0NTUzOTQ2ODQxZSs3NyAtPiAyNTguMDQ2Mjk2Mjg0NDU2NzMKK2xvZzIwNjM5IGxvZzIgMy4xOTAzNTY2NDk2NDgxODY4ZSsxMDUgLT4gMzUwLjQ3NjE2NzY3NDkxMTY2Citsb2cyMDY0MCBsb2cyIDUuNjE5NTA4MjQ0OTUwMjQxOWUrMTEzIC0+IDM3Ny44NjgzMTg2MTAwODI1MAorbG9nMjA2NDEgbG9nMiA5Ljk2MjU2NTgyNTA2NTEwNDdlKzEyNSAtPiA0MTguNTU3NTI5MjEyMjg3NTMKK2xvZzIwNjQyIGxvZzIgMi43MzU4OTQ1MjIwOTYxNTMyZSsxNDUgLT4gNDgzLjEzMTU4NjM2OTIzNDEzCitsb2cyMDY0MyBsb2cyIDIuNzg1ODQyMzg3OTI2OTMxZSsxNzQgLT4gNTc5LjQ5MzYwMjE0ODYwMjgwCitsb2cyMDY0NCBsb2cyIDIuNDE2OTE3MjUwNzI1Mjc1MWUrMTkzIC0+IDY0Mi40MDUyOTAzOTI4OTY1MgorbG9nMjA2NDUgbG9nMiAzLjE2ODkwOTEyMDYzOTU2MzJlKzIwNSAtPiA2ODIuNjU5MjQ1NzM3OTgzOTUKK2xvZzIwNjQ2IGxvZzIgMi41MzU5OTU1OTIzNjUzOTFlKzIwOCAtPiA2OTIuMzAzNTk1OTc0NjA0NjAKK2xvZzIwNjQ3IGxvZzIgNi4yMDExMjM2NTY2MDg5OTE2ZSsyMzMgLT4gNzc2LjY0MTc3NTc2NzMwOTEzCitsb2cyMDY0OCBsb2cyIDIuMTg0MzI3NDgyMDY3NzYzMmUrMjUzIC0+IDg0MS41NzQ5OTcxNzI4OTY0NworbG9nMjA2NDkgbG9nMiA4Ljc0OTM5MzEwNjM0NzQ3OTFlKzI5NyAtPiA5ODkuNzQxODI3MTMwNzM5ODEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21lbW9yeV93YXRjaGRvZy5weSBiL0xpYi90ZXN0L21lbW9yeV93YXRjaGRvZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGNjYThkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbWVtb3J5X3dhdGNoZG9nLnB5CkBAIC0wLDAgKzEsMjggQEAKKyIiIk1lbW9yeSB3YXRjaGRvZzogcGVyaW9kaWNhbGx5IHJlYWQgdGhlIG1lbW9yeSB1c2FnZSBvZiB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MKK2FuZCBwcmludCBpdCBvdXQsIHVudGlsIHRlcm1pbmF0ZWQuIiIiCisjIHN0ZGluIHNob3VsZCByZWZlciB0byB0aGUgcHJvY2VzcycgL3Byb2MvPFBJRD4vc3RhdG06IHdlIGRvbid0IHBhc3MgdGhlCisjIHByb2Nlc3MnIFBJRCB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIGluIGNhc2Ugb2YgLSB1bmxpa2VseSAtIFBJRCByZWN5Y2xpbmcuCisjIElmIHRoZSBwcm9jZXNzIGNyYXNoZXMsIHJlYWRpbmcgZnJvbSB0aGUgL3Byb2MgZW50cnkgd2lsbCBmYWlsIHdpdGggRVNSQ0guCisKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCisKK3RyeToKKyAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFU0laRScpCitleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICB0cnk6CisgICAgICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VfU0laRScpCisgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgIHBhZ2Vfc2l6ZSA9IDQwOTYKKword2hpbGUgVHJ1ZToKKyAgICBzeXMuc3RkaW4uc2VlaygwKQorICAgIHN0YXRtID0gc3lzLnN0ZGluLnJlYWQoKQorICAgIGRhdGEgPSBpbnQoc3RhdG0uc3BsaXQoKVs1XSkKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCIgLi4uIHByb2Nlc3MgZGF0YSBzaXplOiB7ZGF0YTouMWZ9R1xuIgorICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChkYXRhPWRhdGEgKiBwYWdlX3NpemUgLyAoMTAyNCAqKiAzKSkpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgdGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQppbmRleCA4MDM2OTMyLi5kMDllNzhjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQorKysgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQpAQCAtMTA2LDcgKzEwNiw4IEBACiAgICAgcmV0dXJuIE1vY2tTb2NrZXQoKQogCiAKLWRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9c29ja2V0X21vZHVsZS5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICB0cnk6CiAgICAgICAgIGludF9wb3J0ID0gaW50KGFkZHJlc3NbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkgYi9MaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQppbmRleCBlZjYzYjY5Li5hMmM1N2VhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMKLSMgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CisjIG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKICMgICBDb21tb24gVW5pdHRlc3QgUm91dGluZXMgZm9yIENKSyBjb2RlY3MKICMKIApAQCAtMjY0LDIxICsyNjQsNiBAQAogCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvc3RyZWFtLmdldHZhbHVlKCksIHNlbGYudHN0cmluZ1swXSkKIAotaWYgbGVuKCdcVTAwMDEyMzQ1JykgPT0gMjogIyB1Y3MyIGJ1aWxkCi0gICAgX3VuaWNociA9IGNocgotICAgIGRlZiBjaHIodik6Ci0gICAgICAgIGlmIHYgPj0gMHgxMDAwMDoKLSAgICAgICAgICAgIHJldHVybiBfdW5pY2hyKDB4ZDgwMCArICgodiAtIDB4MTAwMDApID4+IDEwKSkgKyBcCi0gICAgICAgICAgICAgICAgICAgX3VuaWNocigweGRjMDAgKyAoKHYgLSAweDEwMDAwKSAmIDB4M2ZmKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBfdW5pY2hyKHYpCi0gICAgX29yZCA9IG9yZAotICAgIGRlZiBvcmQoYyk6Ci0gICAgICAgIGlmIGxlbihjKSA9PSAyOgotICAgICAgICAgICAgcmV0dXJuIDB4MTAwMDAgKyAoKF9vcmQoY1swXSkgLSAweGQ4MDApIDw8IDEwKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yZChjWzFdKSAtIDB4ZGMwMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBfb3JkKGMpCiAKIGNsYXNzIFRlc3RCYXNlX01hcHBpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHBhc3NfZW5jdGVzdCA9IFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby9vbmUucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA4MGY2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL29uZS5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ2JvdGhfcG9ydGlvbnMgZm9vIG9uZScKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL3R3by5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTMxZDNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vdHdvLnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAnYm90aF9wb3J0aW9ucyBmb28gdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbWlzc2luZ19kaXJlY3RvcnkuemlwIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbWlzc2luZ19kaXJlY3RvcnkuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNmE5MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9taXNzaW5nX2RpcmVjdG9yeS56aXAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2NiZWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdpbiBtb2R1bGUnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0L2VtcHR5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gTGliL2VtYWlsL3Rlc3QvX19pbml0X18ucHkKY29weSB0byBMaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC9lbXB0eQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbmVzdGVkX3BvcnRpb24xLnppcCBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25lc3RlZF9wb3J0aW9uMS56aXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyMjQwNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25lc3RlZF9wb3J0aW9uMS56aXAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvX19pbml0X18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cvZm9vL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9vbmUucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmNWM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cvZm9vL29uZS5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ3BvcnRpb24xIGZvbyBvbmUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMS9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vL29uZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGY1YzgzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vL29uZS5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ3BvcnRpb24xIGZvbyBvbmUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMi9mb28vdHdvLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vL3R3by5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDkyZTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vL3R3by5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ3BvcnRpb24yIGZvbyB0d28nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MS9wYXJlbnQvY2hpbGQvb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkL29uZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzc2ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkL29uZS5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ3BhcmVudCBjaGlsZCBvbmUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0Mi9wYXJlbnQvY2hpbGQvdHdvLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkL3R3by5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjAzN2JjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkL3R3by5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ3BhcmVudCBjaGlsZCB0d28nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQvdGhyZWUucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQvdGhyZWUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhYmZlMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzL3BhcmVudC9jaGlsZC90aHJlZS5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ3BhcmVudCBjaGlsZCB0aHJlZScKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3RvcF9sZXZlbF9wb3J0aW9uMS56aXAgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy90b3BfbGV2ZWxfcG9ydGlvbjEuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiODY2YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy90b3BfbGV2ZWxfcG9ydGlvbjEuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weSBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQppbmRleCA0ZDQ5MWIwLi5mYjA0ODMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CkBAIC00LDEwICs0LDExIEBACiBpbXBvcnQgcGlja2xldG9vbHMKIGltcG9ydCBzeXMKIGltcG9ydCBjb3B5cmVnCitpbXBvcnQgd2Vha3JlZgogZnJvbSBodHRwLmNvb2tpZXMgaW1wb3J0IFNpbXBsZUNvb2tpZQogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAotICAgIFRlc3RGYWlsZWQsIFRFU1RGTiwgcnVuX3dpdGhfbG9jYWxlLAorICAgIFRlc3RGYWlsZWQsIFRFU1RGTiwgcnVuX3dpdGhfbG9jYWxlLCBub190cmFjaW5nLAogICAgIF8yRywgXzRHLCBiaWdtZW10ZXN0LAogICAgICkKIApAQCAtMTgsNyArMTksNyBAQAogIyBraW5kIG9mIG91dGVyIGxvb3AuCiBwcm90b2NvbHMgPSByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpCiAKLWNoYXJhY3Rlcl9zaXplID0gNCBpZiBzeXMubWF4dW5pY29kZSA+IDB4RkZGRiBlbHNlIDIKK2FzY2lpX2NoYXJfc2l6ZSA9IDEKIAogCiAjIFJldHVybiBUcnVlIGlmIG9wY29kZSBjb2RlIGFwcGVhcnMgaW4gdGhlIHBpY2tsZSwgZWxzZSBGYWxzZS4KQEAgLTc0Nyw2ICs3NDgsMTggQEAKICAgICAgICAgICAgICAgICB1ID0gc2VsZi5sb2FkcyhzKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdSkKIAorICAgIGRlZiB0ZXN0X2VsbGlwc2lzKHNlbGYpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoLi4uLCBwcm90bykKKyAgICAgICAgICAgIHUgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC4uLiwgdSkKKworICAgIGRlZiB0ZXN0X25vdGltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoTm90SW1wbGVtZW50ZWQsIHByb3RvKQorICAgICAgICAgICAgdSA9IHNlbGYubG9hZHMocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm90SW1wbGVtZW50ZWQsIHUpCisKICAgICAjIFRlc3RzIGZvciBwcm90b2NvbCAyCiAKICAgICBkZWYgdGVzdF9wcm90byhzZWxmKToKQEAgLTg4MCw2ICs4OTMsMjUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIoeCksIEIoeSksIGRldGFpbCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19kaWN0X18sIHkuX19kaWN0X18sIGRldGFpbCkKIAorICAgIGRlZiB0ZXN0X25ld29ial9wcm94aWVzKHNlbGYpOgorICAgICAgICAjIE5FV09CSiBzaG91bGQgdXNlIHRoZSBfX2NsYXNzX18gcmF0aGVyIHRoYW4gdGhlIHJhdyB0eXBlCisgICAgICAgIGNsYXNzZXMgPSBteWNsYXNzZXNbOl0KKyAgICAgICAgIyBDYW5ub3QgY3JlYXRlIHdlYWtwcm94aWVzIHRvIHRoZXNlIGNsYXNzZXMKKyAgICAgICAgZm9yIGMgaW4gKE15SW50LCBNeVR1cGxlKToKKyAgICAgICAgICAgIGNsYXNzZXMucmVtb3ZlKGMpCisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICBmb3IgQyBpbiBjbGFzc2VzOgorICAgICAgICAgICAgICAgIEIgPSBDLl9fYmFzZV9fCisgICAgICAgICAgICAgICAgeCA9IEMoQy5zYW1wbGUpCisgICAgICAgICAgICAgICAgeC5mb28gPSA0MgorICAgICAgICAgICAgICAgIHAgPSB3ZWFrcmVmLnByb3h5KHgpCisgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMocCwgcHJvdG8pCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoeSksIHR5cGUoeCkpICAjIHJhdGhlciB0aGFuIHR5cGUocCkKKyAgICAgICAgICAgICAgICBkZXRhaWwgPSAocHJvdG8sIEMsIEIsIHgsIHksIHR5cGUoeSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCKHgpLCBCKHkpLCBkZXRhaWwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fLCB5Ll9fZGljdF9fLCBkZXRhaWwpCisKICAgICAjIFJlZ2lzdGVyIGEgdHlwZSB3aXRoIGNvcHlyZWcsIHdpdGggZXh0ZW5zaW9uIGNvZGUgZXh0Y29kZS4gIFBpY2tsZQogICAgICMgYW4gb2JqZWN0IG9mIHRoYXQgdHlwZS4gIENoZWNrIHRoYXQgdGhlIHJlc3VsdGluZyBwaWNrbGUgdXNlcyBvcGNvZGUKICAgICAjIChFWFRbMTI0XSkgdW5kZXIgcHJvdG8gMiwgYW5kIG5vdCBpbiBwcm90byAxLgpAQCAtMTA0MCwxMyArMTA3MiwxMyBAQAogICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5fcmVkdWNlX2NhbGxlZCwgMSkKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RfYmFkX2dldGF0dHIoc2VsZik6CiAgICAgICAgIHggPSBCYWRHZXRhdHRyKCkKICAgICAgICAgZm9yIHByb3RvIGluIDAsIDE6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYuZHVtcHMsIHgsIHByb3RvKQogICAgICAgICAjIHByb3RvY29sIDIgZG9uJ3QgcmFpc2UgYSBSdW50aW1lRXJyb3IuCiAgICAgICAgIGQgPSBzZWxmLmR1bXBzKHgsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2VsZi5sb2FkcywgZCkKIAogICAgIGRlZiB0ZXN0X3JlZHVjZV9iYWRfaXRlcmF0b3Ioc2VsZik6CiAgICAgICAgICMgSXNzdWU0MTc2OiBjcmFzaCB3aGVuIDR0aCBhbmQgNXRoIGl0ZW1zIG9mIF9fcmVkdWNlX18oKQpAQCAtMTEzNiw2ICsxMTY4LDE1IEBACiAgICAgICAgIGVtcHR5ID0gc2VsZi5sb2FkcyhiJ1x4ODBceDAzVVx4MDBxXHgwMC4nLCBlbmNvZGluZz0na29pOC1yJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbXB0eSwgJycpCiAKKyAgICBkZWYgdGVzdF9pbnRfcGlja2xpbmdfZWZmaWNpZW5jeShzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhY2l0eSBvZiBpbnQgcmVwcmVzZW50YXRpb24gKHNlZSBpc3N1ZSAjMTI3NDQpCisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICBzaXplcyA9IFtsZW4oc2VsZi5kdW1wcygyKipuLCBwcm90bykpIGZvciBuIGluIHJhbmdlKDcwKV0KKyAgICAgICAgICAgICMgdGhlIHNpemUgZnVuY3Rpb24gaXMgbW9ub3RvbmljCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChzaXplcyksIHNpemVzKQorICAgICAgICAgICAgaWYgcHJvdG8gPj0gMjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzaXplc1stMV0sIDE0KQorCiAgICAgZGVmIGNoZWNrX25lZ2F0aXZlXzMyYl9iaW5YWFgoc2VsZiwgZHVtcGVkKToKICAgICAgICAgaWYgc3lzLm1heHNpemUgPiAyKiozMjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRlc3QgaXMgb25seSBtZWFuaW5nZnVsIG9uIDMyLWJpdCBidWlsZHMiKQpAQCAtMTIxNyw3ICsxMjU4LDcgQEAKICAgICAjIEFsbCBwcm90b2NvbHMgdXNlIDEtYnl0ZSBwZXIgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3Rlcjsgd2UgYWRkIGFub3RoZXIKICAgICAjIGJ5dGUgYmVjYXVzZSB0aGUgZW5jb2RlZCBmb3JtIGhhcyB0byBiZSBjb3BpZWQgaW50byB0aGUgaW50ZXJuYWwgYnVmZmVyLgogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yICsgY2hhcmFjdGVyX3NpemUsIGRyeV9ydW49RmFsc2UpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yICsgYXNjaWlfY2hhcl9zaXplLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2h1Z2Vfc3RyXzMyYihzZWxmLCBzaXplKToKICAgICAgICAgZGF0YSA9ICJhYmNkIiAqIChzaXplIC8vIDQpCiAgICAgICAgIHRyeToKQEAgLTEyMzQsNyArMTI3NSw3IEBACiAgICAgIyBCSU5VTklDT0RFIChwcm90b2NvbHMgMSwgMiBhbmQgMykgY2Fubm90IGNhcnJ5IG1vcmUgdGhhbgogICAgICMgMioqMzIgLSAxIGJ5dGVzIG9mIHV0Zi04IGVuY29kZWQgdW5pY29kZS4KIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MSArIGNoYXJhY3Rlcl9zaXplLCBkcnlfcnVuPUZhbHNlKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MSArIGFzY2lpX2NoYXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9odWdlX3N0cl82NGIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGRhdGEgPSAiYSIgKiBzaXplCiAgICAgICAgIHRyeToKQEAgLTE1NzgsNiArMTYxOSwxMDUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVucGlja2xlci5sb2FkKCksIGRhdGEpCiAKIAorIyBUZXN0cyBmb3IgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlCisKK1JFRFVDRV9BID0gJ3JlZHVjZV9BJworCitjbGFzcyBBQUEob2JqZWN0KToKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0ciwgKFJFRFVDRV9BLCkKKworY2xhc3MgQkJCKG9iamVjdCk6CisgICAgcGFzcworCitjbGFzcyBBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIE5vIGRpc3BhdGNoX3RhYmxlIGF0dHJpYnV0ZSBieSBkZWZhdWx0CisgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgcCA9IHNlbGYucGlja2xlcl9jbGFzcyhmLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHAuZGlzcGF0Y2hfdGFibGUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHAsICdkaXNwYXRjaF90YWJsZScpKQorCisgICAgZGVmIHRlc3RfY2xhc3NfZGlzcGF0Y2hfdGFibGUoc2VsZik6CisgICAgICAgICMgQSBkaXNwYXRjaF90YWJsZSBhdHRyaWJ1dGUgY2FuIGJlIHNwZWNpZmllZCBjbGFzcy13aWRlCisgICAgICAgIGR0ID0gc2VsZi5nZXRfZGlzcGF0Y2hfdGFibGUoKQorCisgICAgICAgIGNsYXNzIE15UGlja2xlcihzZWxmLnBpY2tsZXJfY2xhc3MpOgorICAgICAgICAgICAgZGlzcGF0Y2hfdGFibGUgPSBkdAorCisgICAgICAgIGRlZiBkdW1wcyhvYmosIHByb3RvY29sPU5vbmUpOgorICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgcCA9IE15UGlja2xlcihmLCBwcm90b2NvbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5kaXNwYXRjaF90YWJsZSwgZHQpCisgICAgICAgICAgICBwLmR1bXAob2JqKQorICAgICAgICAgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQorCisgICAgICAgIHNlbGYuX3Rlc3RfZGlzcGF0Y2hfdGFibGUoZHVtcHMsIGR0KQorCisgICAgZGVmIHRlc3RfaW5zdGFuY2VfZGlzcGF0Y2hfdGFibGUoc2VsZik6CisgICAgICAgICMgQSBkaXNwYXRjaF90YWJsZSBhdHRyaWJ1dGUgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGluc3RhbmNlLXdpZGUKKyAgICAgICAgZHQgPSBzZWxmLmdldF9kaXNwYXRjaF90YWJsZSgpCisKKyAgICAgICAgZGVmIGR1bXBzKG9iaiwgcHJvdG9jb2w9Tm9uZSk6CisgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICBwID0gc2VsZi5waWNrbGVyX2NsYXNzKGYsIHByb3RvY29sKQorICAgICAgICAgICAgcC5kaXNwYXRjaF90YWJsZSA9IGR0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGlzcGF0Y2hfdGFibGUsIGR0KQorICAgICAgICAgICAgcC5kdW1wKG9iaikKKyAgICAgICAgICAgIHJldHVybiBmLmdldHZhbHVlKCkKKworICAgICAgICBzZWxmLl90ZXN0X2Rpc3BhdGNoX3RhYmxlKGR1bXBzLCBkdCkKKworICAgIGRlZiBfdGVzdF9kaXNwYXRjaF90YWJsZShzZWxmLCBkdW1wcywgZGlzcGF0Y2hfdGFibGUpOgorICAgICAgICBkZWYgY3VzdG9tX2xvYWRfZHVtcChvYmopOgorICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhkdW1wcyhvYmosIDApKQorCisgICAgICAgIGRlZiBkZWZhdWx0X2xvYWRfZHVtcChvYmopOgorICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2JqLCAwKSkKKworICAgICAgICAjIHBpY2tsaW5nIGNvbXBsZXggbnVtYmVycyB1c2luZyBwcm90b2NvbCAwIHJlbGllcyBvbiBjb3B5cmVnCisgICAgICAgICMgc28gY2hlY2sgcGlja2xpbmcgYSBjb21wbGV4IG51bWJlciBzdGlsbCB3b3JrcworICAgICAgICB6ID0gMSArIDJqCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcCh6KSwgeikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0X2xvYWRfZHVtcCh6KSwgeikKKworICAgICAgICAjIG1vZGlmeSBwaWNrbGluZyBvZiBjb21wbGV4CisgICAgICAgIFJFRFVDRV8xID0gJ3JlZHVjZV8xJworICAgICAgICBkZWYgcmVkdWNlXzEob2JqKToKKyAgICAgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfMSwpCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW2NvbXBsZXhdID0gcmVkdWNlXzEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXN0b21fbG9hZF9kdW1wKHopLCBSRURVQ0VfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0X2xvYWRfZHVtcCh6KSwgeikKKworICAgICAgICAjIGNoZWNrIHBpY2tsYWJpbGl0eSBvZiBBQUEgYW5kIEJCQgorICAgICAgICBhID0gQUFBKCkKKyAgICAgICAgYiA9IEJCQigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcChhKSwgUkVEVUNFX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjdXN0b21fbG9hZF9kdW1wKGIpLCBCQkIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVmYXVsdF9sb2FkX2R1bXAoYiksIEJCQikKKworICAgICAgICAjIG1vZGlmeSBwaWNrbGluZyBvZiBCQkIKKyAgICAgICAgZGlzcGF0Y2hfdGFibGVbQkJCXSA9IHJlZHVjZV8xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcChhKSwgUkVEVUNFX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcChiKSwgUkVEVUNFXzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVmYXVsdF9sb2FkX2R1bXAoYiksIEJCQikKKworICAgICAgICAjIHJldmVydCBwaWNrbGluZyBvZiBCQkIgYW5kIG1vZGlmeSBwaWNrbGluZyBvZiBBQUEKKyAgICAgICAgUkVEVUNFXzIgPSAncmVkdWNlXzInCisgICAgICAgIGRlZiByZWR1Y2VfMihvYmopOgorICAgICAgICAgICAgcmV0dXJuIHN0ciwgKFJFRFVDRV8yLCkKKyAgICAgICAgZGlzcGF0Y2hfdGFibGVbQUFBXSA9IHJlZHVjZV8yCisgICAgICAgIGRlbCBkaXNwYXRjaF90YWJsZVtCQkJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcChhKSwgUkVEVUNFXzIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjdXN0b21fbG9hZF9kdW1wKGIpLCBCQkIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVmYXVsdF9sb2FkX2R1bXAoYiksIEJCQikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICMgUHJpbnQgc29tZSBzdHVmZiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJld3JpdGUgREFUQXswLDEsMn0KICAgICBmcm9tIHBpY2tsZXRvb2xzIGltcG9ydCBkaXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvcmVncnRlc3QucHkKaW5kZXggZTA5ODUyMi4uOGYzYjY4OSAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVncnRlc3QucHkKKysrIGIvTGliL3Rlc3QvcmVncnRlc3QucHkKQEAgLTIwLDYgKzIwLDExIEBACiBPcHRpb25zOgogCiAtaC8tLWhlbHAgICAgICAgLS0gcHJpbnQgdGhpcyB0ZXh0IGFuZCBleGl0CistLXRpbWVvdXQgVElNRU9VVAorICAgICAgICAgICAgICAgIC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZQorICAgICAgICAgICAgICAgICAgIHRoYW4gVElNRU9VVCBzZWNvbmRzOyBkaXNhYmxlZCBpZiBUSU1FT1VUIGlzIG5lZ2F0aXZlCisgICAgICAgICAgICAgICAgICAgb3IgZXF1YWxzIHRvIHplcm8KKy0td2FpdCAgICAgICAgICAtLSB3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyIHRvIGJlIGF0dGFjaGVkCiAKIFZlcmJvc2l0eQogCkBAIC00NCw2ICs0OSw5IEBACiAgICAgICAgICAgICAgICAgLS0gc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyB0byBydW4KIC1NLy0tbWVtbGltaXQgTElNSVQKICAgICAgICAgICAgICAgICAtLSBydW4gdmVyeSBsYXJnZSBtZW1vcnktY29uc3VtaW5nIHRlc3RzCisgICAtLXRlc3RkaXIgRElSCisgICAgICAgICAgICAgICAgLS0gZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IChpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSkKIAogU3BlY2lhbCBydW5zCiAKQEAgLTEyNSw2ICsxMzMsOCBAQAogCiAgICAgYWxsIC0gICAgICAgRW5hYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcy4KIAorICAgIG5vbmUgLSAgICAgIERpc2FibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzICh0aGlzIGlzIHRoZSBkZWZhdWx0KS4KKwogICAgIGF1ZGlvIC0gICAgIFRlc3RzIHRoYXQgdXNlIHRoZSBhdWRpbyBkZXZpY2UuICAoVGhlcmUgYXJlIGtub3duCiAgICAgICAgICAgICAgICAgY2FzZXMgb2YgYnJva2VuIGF1ZGlvIGRyaXZlcnMgdGhhdCBjYW4gY3Jhc2ggUHl0aG9uIG9yCiAgICAgICAgICAgICAgICAgZXZlbiB0aGUgTGludXgga2VybmVsLikKQEAgLTE1NSw4ICsxNjUsMTEgQEAKIG9wdGlvbiAnLXVhbGwsLWd1aScuCiAiIiIKIAorIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgoraW1wb3J0IGltcG9ydGxpYgorCiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCBlcnJubworaW1wb3J0IGZhdWx0aGFuZGxlcgogaW1wb3J0IGdldG9wdAogaW1wb3J0IGlvCiBpbXBvcnQganNvbgpAQCAtMTY2LDYgKzE3OSw3IEBACiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZW1wZmlsZQpAQCAtMjI1LDYgKzIzOSw3IEBACiBTS0lQUEVEID0gLTIKIFJFU09VUkNFX0RFTklFRCA9IC0zCiBJTlRFUlJVUFRFRCA9IC00CitDSElMRF9FUlJPUiA9IC01ICAgIyBlcnJvciBpbiBhIGNoaWxkIHByb2Nlc3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTI2OCw2ICsyODMsMTggQEAKICAgICBvbiB0aGUgY29tbWFuZCBsaW5lLgogICAgICIiIgogCisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycyAoZS5nLiBzZWdmYXVsdCkKKyAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPVRydWUpCisKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gU0lHQUxSTSBvciBTSUdVU1IxIHNpZ25hbAorICAgIHNpZ25hbHMgPSBbXQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHQUxSTSkKKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR1VTUjEpCisgICAgZm9yIHNpZ251bSBpbiBzaWduYWxzOgorICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBjaGFpbj1UcnVlKQorCiAgICAgcmVwbGFjZV9zdGRvdXQoKQogCiAgICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCkBAIC0yNzgsNyArMzA1LDggQEAKICAgICAgICAgICAgICAndXNlPScsICd0aHJlc2hvbGQ9JywgJ2NvdmVyZGlyPScsICdub2NvdmVyZGlyJywKICAgICAgICAgICAgICAncnVubGVha3MnLCAnaHVudHJsZWFrcz0nLCAnbWVtbGltaXQ9JywgJ3JhbmRzZWVkPScsCiAgICAgICAgICAgICAgJ211bHRpcHJvY2Vzcz0nLCAnY292ZXJhZ2UnLCAnc2xhdmVhcmdzPScsICdmb3JldmVyJywgJ2RlYnVnJywKLSAgICAgICAgICAgICAnc3RhcnQ9JywgJ25vd2luZG93cycsICdoZWFkZXInLCAnZmFpbGZhc3QnLCAnbWF0Y2gnXSkKKyAgICAgICAgICAgICAnc3RhcnQ9JywgJ25vd2luZG93cycsICdoZWFkZXInLCAndGVzdGRpcj0nLCAndGltZW91dD0nLCAnd2FpdCcsCisgICAgICAgICAgICAgJ2ZhaWxmYXN0JywgJ21hdGNoJ10pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CiAgICAgICAgIHVzYWdlKG1zZykKIApAQCAtMjg5LDYgKzMxNyw3IEBACiAgICAgICAgIHVzZV9yZXNvdXJjZXMgPSBbXQogICAgIGRlYnVnID0gRmFsc2UKICAgICBzdGFydCA9IE5vbmUKKyAgICB0aW1lb3V0ID0gTm9uZQogICAgIGZvciBvLCBhIGluIG9wdHM6CiAgICAgICAgIGlmIG8gaW4gKCctaCcsICctLWhlbHAnKToKICAgICAgICAgICAgIHByaW50KF9fZG9jX18pCkBAIC0zMzIsNyArMzYxLDkgQEAKICAgICAgICAgZWxpZiBvIGluICgnLVQnLCAnLS1jb3ZlcmFnZScpOgogICAgICAgICAgICAgdHJhY2UgPSBUcnVlCiAgICAgICAgIGVsaWYgbyBpbiAoJy1EJywgJy0tY292ZXJkaXInKToKLSAgICAgICAgICAgIGNvdmVyZGlyID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBhKQorICAgICAgICAgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICAgICAgICAgIyBuZWVkICBqb2luIGl0IHdpdGggdGhlIHNhdmVkIENXRCBzbyBpdCBnb2VzIHdoZXJlIHRoZSB1c2VyIGV4cGVjdHMuCisgICAgICAgICAgICBjb3ZlcmRpciA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBhKQogICAgICAgICBlbGlmIG8gaW4gKCctTicsICctLW5vY292ZXJkaXInKToKICAgICAgICAgICAgIGNvdmVyZGlyID0gTm9uZQogICAgICAgICBlbGlmIG8gaW4gKCctUicsICctLWh1bnRybGVha3MnKToKQEAgLTM1MCw5ICszODEsOSBAQAogICAgICAgICAgICAgICAgIGh1bnRybGVha3NbMV0gPSBpbnQoaHVudHJsZWFrc1sxXSkKICAgICAgICAgICAgIGlmIGxlbihodW50cmxlYWtzKSA9PSAyIG9yIG5vdCBodW50cmxlYWtzWzJdOgogICAgICAgICAgICAgICAgIGh1bnRybGVha3NbMjpdID0gWyJyZWZsb2cudHh0Il0KLSAgICAgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB0aGUgY2hhcmFjdGVyIGNhY2hlIGluCi0gICAgICAgICAgICAjIHN0cmluZ29iamVjdC5jIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGEKLSAgICAgICAgICAgIHdhcm1fY2hhcl9jYWNoZSgpCisgICAgICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKKyAgICAgICAgICAgICMgZmlsbGluZyBzbG93bHkgd2l0aCByYW5kb20gZGF0YToKKyAgICAgICAgICAgIHdhcm1fY2FjaGVzKCkKICAgICAgICAgZWxpZiBvIGluICgnLU0nLCAnLS1tZW1saW1pdCcpOgogICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWVtbGltaXQoYSkKICAgICAgICAgZWxpZiBvIGluICgnLXUnLCAnLS11c2UnKToKQEAgLTM2MSw2ICszOTIsOSBAQAogICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6CiAgICAgICAgICAgICAgICAgICAgIHVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgICAgICAgICBkZWwgdXNlX3Jlc291cmNlc1s6XQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6CiAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKQEAgLTM5MSwxOCArNDI1LDQ1IEBACiAgICAgICAgICAgICBmb3JldmVyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gaW4gKCctaicsICctLW11bHRpcHJvY2VzcycpOgogICAgICAgICAgICAgdXNlX21wID0gaW50KGEpCisgICAgICAgICAgICBpZiB1c2VfbXAgPD0gMDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgIyBVc2UgYWxsIGNvcmVzICsgZXh0cmFzIGZvciB0ZXN0cyB0aGF0IGxpa2UgdG8gc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgdXNlX21wID0gMiArIG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB1c2VfbXAgPSAzCisgICAgICAgICAgICBpZiB1c2VfbXAgPT0gMToKKyAgICAgICAgICAgICAgICB1c2VfbXAgPSBOb25lCiAgICAgICAgIGVsaWYgbyA9PSAnLS1oZWFkZXInOgogICAgICAgICAgICAgaGVhZGVyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gPT0gJy0tc2xhdmVhcmdzJzoKICAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IGpzb24ubG9hZHMoYSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsIGUuX19jbGFzc19fLl9fbmFtZV9fCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKICAgICAgICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCisgICAgICAgIGVsaWYgbyA9PSAnLS10ZXN0ZGlyJzoKKyAgICAgICAgICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKKyAgICAgICAgICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgICAgICAgICAgdGVzdGRpciA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBhKQorICAgICAgICBlbGlmIG8gPT0gJy0tdGltZW91dCc6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrc19sYXRlcicpOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBmbG9hdChhKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IFRoZSB0aW1lb3V0IG9wdGlvbiByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja3NfbGF0ZXIiKQorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBOb25lCisgICAgICAgIGVsaWYgbyA9PSAnLS13YWl0JzoKKyAgICAgICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByaW50KCgiTm8gaGFuZGxlciBmb3Igb3B0aW9uIHt9LiAgUGxlYXNlIHJlcG9ydCB0aGlzIGFzIGEgYnVnICIKICAgICAgICAgICAgICAgICAgICAiYXQgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy4iKS5mb3JtYXQobyksIGZpbGU9c3lzLnN0ZGVycikKQEAgLTQ4MSw3ICs1NDIsMTMgQEAKICAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCiAKLSAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyh0ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCisgICAgIyBpZiB0ZXN0ZGlyIGlzIHNldCwgdGhlbiB3ZSBhcmUgbm90IHJ1bm5pbmcgdGhlIHB5dGhvbiB0ZXN0cyBzdWl0ZSwgc28KKyAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQorICAgIGlmIHRlc3RkaXI6CisgICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCisgICAgZWxzZToKKyAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHModGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQorCiAgICAgc2VsZWN0ZWQgPSB0ZXN0cyBvciBhcmdzIG9yIGFsbHRlc3RzCiAgICAgaWYgc2luZ2xlOgogICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkWzoxXQpAQCAtNTAxLDcgKzU2OCw3IEBACiAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGVjdGVkKQogICAgIGlmIHRyYWNlOgogICAgICAgICBpbXBvcnQgdHJhY2UsIHRlbXBmaWxlCi0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCwKKyAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcGRpcigpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCiAKQEAgLTU2Niw3ICs2MzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3QsIHZlcmJvc2UsIHF1aWV0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QoaHVudHJsZWFrcz1odW50cmxlYWtzLCB1c2VfcmVzb3VyY2VzPXVzZV9yZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnPWRlYnVnLCBvdXRwdXRfb25fZmFpbHVyZT12ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9ZmFpbGZhc3QsIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsIGZhaWxmYXN0PWZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAjIC1FIGlzIG5lZWRlZCBieSBzb21lIHRlc3RzLCBlLmcuIHRlc3RfaW1wb3J0CiAgICAgICAgICAgICAgICAgICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBlbnN1cmVzCkBAIC01NzgsMTAgKzY0NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQogICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQogICAgICAgICAgICAgICAgICAgICAjIFN0cmlwIGxhc3QgcmVmY291bnQgb3V0cHV0IGxpbmUgaWYgaXQgZXhpc3RzLCBzaW5jZSBpdAogICAgICAgICAgICAgICAgICAgICAjIGNvbWVzIGZyb20gdGhlIHNodXRkb3duIG9mIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgc3ViY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gZGVidWdfb3V0cHV0X3BhdC5zdWIoIiIsIHN0ZGVycikKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBfLCByZXN1bHQgPSBzdGRvdXQuc3RyaXAoKS5ycGFydGl0aW9uKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDSElMRF9FUlJPUiwgIkV4aXQgY29kZSAlcyIgJSByZXRjb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCkBAIC02MTQsOCArNjg3LDkgQEAKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gSU5URVJSVVBURUQ6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCByZXN1bHRbMV0gPT0gJ0tleWJvYXJkSW50ZXJydXB0JwotICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdCAgICMgV2hhdCBlbHNlPworICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pKQogICAgICAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKQEAgLTYzMiwxMyArNzA2LDE0IEBACiAgICAgICAgICAgICBpZiB0cmFjZToKICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHRyYWNpbmcgY29kZSBjb3ZlcmFnZSwgdGhlbiB3ZSBkb24ndCBleGl0IHdpdGggc3RhdHVzCiAgICAgICAgICAgICAgICAgIyBpZiBvbiBhIGZhbHNlIHJldHVybiB2YWx1ZSBmcm9tIG1haW4uCi0gICAgICAgICAgICAgICAgdHJhY2VyLnJ1bmN0eCgncnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCknLAorICAgICAgICAgICAgICAgIHRyYWNlci5ydW5jdHgoJ3J1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsIHRpbWVvdXQ9dGltZW91dCknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz12YXJzKCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9dmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9ZmFpbGZhc3QsIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwgZmFpbGZhc3Q9ZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bWF0Y2hfdGVzdHMpCiAgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQpAQCAtNzA5LDcgKzc4NCw3IEBACiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB2ZXJib3NlID0gVHJ1ZQotICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcpCisgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIHF1aWV0LCBodW50cmxlYWtzLCBkZWJ1ZywgdGltZW91dD10aW1lb3V0KQogICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIHNlcGFyYXRlIGZyb20gdGhlIF5DCiAgICAgICAgICAgICAgICAgcHJpbnQoKQpAQCAtNzM0LDYgKzgwOSw4IEBACiAgICAgc3lzLmV4aXQobGVuKGJhZCkgPiAwIG9yIGludGVycnVwdGVkKQogCiAKKyMgc21hbGwgc2V0IG9mIHRlc3RzIHRvIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgYmFzaWNhbGx5IGZ1bmN0aW9uaW5nIGludGVycHJldGVyCisjIChpLmUuIGlmIGFueSBvZiB0aGVzZSBmYWlsLCB0aGVuIGFueXRoaW5nIGVsc2UgaXMgbGlrZWx5IHRvIGZvbGxvdykKIFNURFRFU1RTID0gWwogICAgICd0ZXN0X2dyYW1tYXInLAogICAgICd0ZXN0X29wY29kZXMnLApAQCAtNzQ0LDEyICs4MjEsMTEgQEAKICAgICAndGVzdF91bml0dGVzdCcsCiAgICAgJ3Rlc3RfZG9jdGVzdCcsCiAgICAgJ3Rlc3RfZG9jdGVzdDInLAorICAgICd0ZXN0X3N1cHBvcnQnCiBdCiAKLU5PVFRFU1RTID0gewotICAgICd0ZXN0X2Z1dHVyZTEnLAotICAgICd0ZXN0X2Z1dHVyZTInLAotfQorIyBzZXQgb2YgdGVzdHMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNpbmcgcmVncnRlc3QKK05PVFRFU1RTID0gc2V0KCkKIAogZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCkBAIC03NTgsOSArODM0LDkgQEAKICAgICB0ZXN0cyA9IFtdCiAgICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIG1vZG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgbW9kbmFtZVs6NV0gPT0gInRlc3RfIiBhbmQgZXh0ID09ICIucHkiIGFuZCBtb2RuYW1lIG5vdCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kbmFtZSkKKyAgICAgICAgbW9kLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIG1vZFs6NV0gPT0gInRlc3RfIiBhbmQgZXh0IGluICgiLnB5IiwgIiIpIGFuZCBtb2Qgbm90IGluIG90aGVyczoKKyAgICAgICAgICAgIHRlc3RzLmFwcGVuZChtb2QpCiAgICAgcmV0dXJuIHN0ZHRlc3RzICsgc29ydGVkKHRlc3RzKQogCiAjIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCkBAIC03ODUsMTcgKzg2MSwxNCBAQAogZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6CiAgICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCiAgICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKLSAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICMgUmVwbGFjZSBzeXMuc3Rkb3V0IGJyZWFrcyB0aGUgc3Rkb3V0IG5ld2xpbmVzIG9uIFdpbmRvd3M6IGlzc3VlICM4NTMzCi0gICAgICAgIHJldHVybgotCiAgICAgaW1wb3J0IGF0ZXhpdAogCiAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAogICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCiAgICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCi0gICAgICAgIGNsb3NlZmQ9RmFsc2UpCisgICAgICAgIGNsb3NlZmQ9RmFsc2UsCisgICAgICAgIG5ld2xpbmU9J1xuJykKIAogICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgogICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKQEAgLTgwNCw3ICs4NzcsOCBAQAogCiBkZWYgcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwKICAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIGRlYnVnPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCi0gICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUpOgorICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLAorICAgICAgICAgICAgdGltZW91dD1Ob25lKToKICAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdC4KIAogICAgIHRlc3QgLS0gdGhlIG5hbWUgb2YgdGhlIHRlc3QKQEAgLTgxNCw2ICs4ODgsOCBAQAogICAgIGh1bnRybGVha3MgLS0gcnVuIG11bHRpcGxlIHRpbWVzIHRvIHRlc3QgZm9yIGxlYWtzOyByZXF1aXJlcyBhIGRlYnVnCiAgICAgICAgICAgICAgICAgICBidWlsZDsgYSB0cmlwbGUgY29ycmVzcG9uZGluZyB0byAtUidzIHRocmVlIGFyZ3VtZW50cwogICAgIG91dHB1dF9vbl9mYWlsdXJlIC0tIGlmIHRydWUsIGRpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZQorICAgIHRpbWVvdXQgLS0gZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyBtb3JlIHRoYW4KKyAgICAgICAgICAgICAgIHRpbWVvdXQgc2Vjb25kcwogCiAgICAgUmV0dXJucyBvbmUgb2YgdGhlIHRlc3QgcmVzdWx0IGNvbnN0YW50czoKICAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagpAQCAtODI2LDYgKzkwMiw5IEBACiAKICAgICBpZiB1c2VfcmVzb3VyY2VzIGlzIG5vdCBOb25lOgogICAgICAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSB1c2VfcmVzb3VyY2VzCisgICAgdXNlX3RpbWVvdXQgPSAodGltZW91dCBpcyBub3QgTm9uZSkKKyAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrc19sYXRlcih0aW1lb3V0LCBleGl0PVRydWUpCiAgICAgdHJ5OgogICAgICAgICBzdXBwb3J0Lm1hdGNoX3Rlc3RzID0gbWF0Y2hfdGVzdHMKICAgICAgICAgaWYgZmFpbGZhc3Q6CkBAIC04NjQsNiArOTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPW5vdCB2ZXJib3NlKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZmluYWxseToKKyAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpCiAgICAgICAgIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdCwgdmVyYm9zZSkKIHJ1bnRlc3Quc3RyaW5naW8gPSBOb25lCiAKQEAgLTkwOSwxMCArOTkwLDEwIEBACiAgICAgcmVzb3VyY2VzID0gKCdzeXMuYXJndicsICdjd2QnLCAnc3lzLnN0ZGluJywgJ3N5cy5zdGRvdXQnLCAnc3lzLnN0ZGVycicsCiAgICAgICAgICAgICAgICAgICdvcy5lbnZpcm9uJywgJ3N5cy5wYXRoJywgJ3N5cy5wYXRoX2hvb2tzJywgJ19faW1wb3J0X18nLAogICAgICAgICAgICAgICAgICAnd2FybmluZ3MuZmlsdGVycycsICdhc3luY29yZS5zb2NrZXRfbWFwJywKLSAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywKLSAgICAgICAgICAgICAgICAgJ3NodXRpbC5hcmNoaXZlX2Zvcm1hdHMnLCAnc2h1dGlsLnVucGFja19mb3JtYXRzJywKKyAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywgJ3N5cy5nZXR0cmFjZScsCiAgICAgICAgICAgICAgICAgICdzeXMud2Fybm9wdGlvbnMnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCiAgICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLAorICAgICAgICAgICAgICAgICAnc3lzY29uZmlnLl9DT05GSUdfVkFSUycsICdzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUycsCiAgICAgICAgICAgICAgICAgICdzdXBwb3J0LlRFU1RGTicsCiAgICAgICAgICAgICAgICAgKQogCkBAIC05NjEsNiArMTA0MiwxMSBAQAogICAgICAgICBzeXMucGF0aF9ob29rcyA9IHNhdmVkX2hvb2tzWzFdCiAgICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2F2ZWRfaG9va3NbMl0KIAorICAgIGRlZiBnZXRfc3lzX2dldHRyYWNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLmdldHRyYWNlKCkKKyAgICBkZWYgcmVzdG9yZV9zeXNfZ2V0dHJhY2Uoc2VsZiwgdHJhY2VfZnhuKToKKyAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlX2Z4bikKKwogICAgIGRlZiBnZXRfX19pbXBvcnRfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLl9faW1wb3J0X18KICAgICBkZWYgcmVzdG9yZV9fX2ltcG9ydF9fKHNlbGYsIGltcG9ydF8pOgpAQCAtMTA0NCw2ICsxMTMwLDI0IEBACiAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCiAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCiAKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCisgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKKyAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAorICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCisKICAgICBkZWYgZ2V0X3N1cHBvcnRfVEVTVEZOKHNlbGYpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzdXBwb3J0LlRFU1RGTik6CiAgICAgICAgICAgICByZXN1bHQgPSAnZicKQEAgLTExMDgsMTQgKzEyMTIsMTUgQEAKICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgdGhlX3BhY2thZ2UgPSBfX2ltcG9ydF9fKGFic3Rlc3QsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFtdKQogICAgICAgICAgICAgdGhlX21vZHVsZSA9IGdldGF0dHIodGhlX3BhY2thZ2UsIHRlc3QpCi0gICAgICAgICAgICAjIE9sZCB0ZXN0cyBydW4gdG8gY29tcGxldGlvbiBzaW1wbHkgYXMgYSBzaWRlLWVmZmVjdCBvZgotICAgICAgICAgICAgIyBiZWluZyBpbXBvcnRlZC4gIEZvciB0ZXN0cyBiYXNlZCBvbiB1bml0dGVzdCBvciBkb2N0ZXN0LAotICAgICAgICAgICAgIyBleHBsaWNpdGx5IGludm9rZSB0aGVpciB0ZXN0X21haW4oKSBmdW5jdGlvbiAoaWYgaXQgZXhpc3RzKS4KLSAgICAgICAgICAgIGluZGlyZWN0X3Rlc3QgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQotICAgICAgICAgICAgaWYgaW5kaXJlY3RfdGVzdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpbmRpcmVjdF90ZXN0KCkKKyAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCisgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCisgICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRlc3RzID0gdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhlX21vZHVsZSkKKyAgICAgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGxhbWJkYTogc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCisgICAgICAgICAgICB0ZXN0X3J1bm5lcigpCiAgICAgICAgICAgICBpZiBodW50cmxlYWtzOgotICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwKKyAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIHRlc3RfcnVubmVyLAogICAgICAgICAgICAgICAgICAgICBodW50cmxlYWtzKQogICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCiAgICAgZXhjZXB0IHN1cHBvcnQuUmVzb3VyY2VEZW5pZWQgYXMgbXNnOgpAQCAtMTE5OCw3ICsxMzAzLDggQEAKICAgICAgICAgRmFsc2UgaWYgdGhlIHRlc3QgZGlkbid0IGxlYWsgcmVmZXJlbmNlczsgVHJ1ZSBpZiB3ZSBkZXRlY3RlZCByZWZsZWFrcy4KICAgICAiIiIKICAgICAjIFRoaXMgY29kZSBpcyBoYWNraXNoIGFuZCBpbmVsZWdhbnQsIGJ1dCBpdCBzZWVtcyB0byBkbyB0aGUgam9iLgotICAgIGltcG9ydCBjb3B5cmVnLCBfYWJjb2xsCisgICAgaW1wb3J0IGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiAKICAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CiAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgpAQCAtMTIxNSw3ICsxMzIxLDcgQEAKICAgICBlbHNlOgogICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCiAgICAgYWJjcyA9IHt9Ci0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihfYWJjb2xsLCBhKSBmb3IgYSBpbiBfYWJjb2xsLl9fYWxsX19dOgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CiAgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CkBAIC0xMjYxLDcgKzEzNjcsNyBAQAogICAgIGltcG9ydCBnYywgY29weXJlZwogICAgIGltcG9ydCBfc3RycHRpbWUsIGxpbmVjYWNoZQogICAgIGltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0LCBtaW1ldHlwZXMsIGRvY3Rlc3QKLSAgICBpbXBvcnQgc3RydWN0LCBmaWxlY21wLCBfYWJjb2xsCisgICAgaW1wb3J0IHN0cnVjdCwgZmlsZWNtcCwgY29sbGVjdGlvbnMuYWJjCiAgICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IF9wYXRoX2NyZWF0ZWQKICAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKIApAQCAtMTI4OCw3ICsxMzk0LDcgQEAKICAgICBzeXMuX2NsZWFyX3R5cGVfY2FjaGUoKQogCiAgICAgIyBDbGVhciBBQkMgcmVnaXN0cmllcywgcmVzdG9yaW5nIHByZXZpb3VzbHkgc2F2ZWQgQUJDIHJlZ2lzdHJpZXMuCi0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihfYWJjb2xsLCBhKSBmb3IgYSBpbiBfYWJjb2xsLl9fYWxsX19dOgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CiAgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CkBAIC0xMzI0LDEwICsxNDMwLDE1IEBACiAgICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaC4KICAgICBnYy5jb2xsZWN0KCkKIAotZGVmIHdhcm1fY2hhcl9jYWNoZSgpOgorZGVmIHdhcm1fY2FjaGVzKCk6CisgICAgIyBjaGFyIGNhY2hlCiAgICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCiAgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKICAgICAgICAgc1tpOmkrMV0KKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICB4ID0gW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQorICAgICMgaW50IGNhY2hlCisgICAgeCA9IGxpc3QocmFuZ2UoLTUsIDI1NykpCiAKIGRlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgogICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyCkBAIC0xMzc0LDEzICsxNDg1LDE0IEBACiAjIFRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHNraXBwZWQgZXZlcnl3aGVyZSBleGNlcHQgb24gb25lIHBsYXRmb3JtCiAjIGFyZSBhbHNvIGhhbmRsZWQgc2VwYXJhdGVseS4KIAotX2V4cGVjdGF0aW9ucyA9IHsKLSAgICAnd2luMzInOgorX2V4cGVjdGF0aW9ucyA9ICgKKyAgICAoJ3dpbjMyJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfX2xvY2FsZQogICAgICAgICB0ZXN0X2NyeXB0CiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2ZjbnRsCiAgICAgICAgIHRlc3RfZm9yazEKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTQwMywxNSArMTUxNSwxNiBAQAogICAgICAgICB0ZXN0X3RocmVhZHNpZ25hbHMKICAgICAgICAgdGVzdF93YWl0MwogICAgICAgICB0ZXN0X3dhaXQ0Ci0gICAgICAgICIiIiwKLSAgICAnbGludXgyJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2xpbnV4JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2xhcmdlZmlsZQogICAgICAgICB0ZXN0X2txdWV1ZQogICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2Ci0gICAgICAgICIiIiwKLSAgICAndW5peHdhcmU3JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3VuaXh3YXJlJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9sYXJnZWZpbGUKQEAgLTE0MjEsOCArMTUzNCw4IEBACiAgICAgICAgIHRlc3RfcHlleHBhdAogICAgICAgICB0ZXN0X3NheAogICAgICAgICB0ZXN0X3N1bmRyeQotICAgICAgICAiIiIsCi0gICAgJ29wZW51bml4OCc6CisgICAgICAgICIiIiksCisgICAgKCdvcGVudW5peCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfbGFyZ2VmaWxlCkBAIC0xNDMyLDggKzE1NDUsOCBAQAogICAgICAgICB0ZXN0X3B5ZXhwYXQKICAgICAgICAgdGVzdF9zYXgKICAgICAgICAgdGVzdF9zdW5kcnkKLSAgICAgICAgIiIiLAotICAgICdzY29fc3YzJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3Njb19zdicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2FzeW5jaGF0CiAgICAgICAgIHRlc3RfZm9yazEKQEAgLTE0NTIsMTEgKzE1NjUsMTIgQEAKICAgICAgICAgdGVzdF90aHJlYWRlZF9pbXBvcnQKICAgICAgICAgdGVzdF90aHJlYWRlZHRlbXBmaWxlCiAgICAgICAgIHRlc3RfdGhyZWFkaW5nCi0gICAgICAgICIiIiwKLSAgICAnZGFyd2luJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2RhcndpbicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X19sb2NhbGUKICAgICAgICAgdGVzdF9jdXJzZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfZ2RiCkBAIC0xNDY1LDggKzE1NzksOCBAQAogICAgICAgICB0ZXN0X21pbmlkb20KICAgICAgICAgdGVzdF9vc3NhdWRpb2RldgogICAgICAgICB0ZXN0X3BvbGwKLSAgICAgICAgIiIiLAotICAgICdzdW5vczUnOgorICAgICAgICAiIiIpLAorICAgICgnc3Vub3MnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdXJzZXMKICAgICAgICAgdGVzdF9kYm0KQEAgLTE0NzcsOCArMTU5MSw4IEBACiAgICAgICAgIHRlc3Rfb3BlbnB0eQogICAgICAgICB0ZXN0X3ppcGZpbGUKICAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiwKLSAgICAnaHAtdXgxMSc6CisgICAgICAgICIiIiksCisgICAgKCdocC11eCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2Vwb2xsCkBAIC0xNDkzLDExICsxNjA3LDEyIEBACiAgICAgICAgIHRlc3Rfc2F4CiAgICAgICAgIHRlc3RfemlwZmlsZQogICAgICAgICB0ZXN0X3psaWIKLSAgICAgICAgIiIiLAotICAgICdjeWd3aW4nOgorICAgICAgICAiIiIpLAorICAgICgnY3lnd2luJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfaW9jdGwKICAgICAgICAgdGVzdF9rcXVldWUKQEAgLTE1MDUsOCArMTYyMCw4IEBACiAgICAgICAgIHRlc3RfbG9jYWxlCiAgICAgICAgIHRlc3Rfb3NzYXVkaW9kZXYKICAgICAgICAgdGVzdF9zb2NrZXRzZXJ2ZXIKLSAgICAgICAgIiIiLAotICAgICdvczJlbXgnOgorICAgICAgICAiIiIpLAorICAgICgnb3MyZW14JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfYXVkaW9vcAogICAgICAgICB0ZXN0X2N1cnNlcwpAQCAtMTUxOSw5ICsxNjM0LDEwIEBACiAgICAgICAgIHRlc3RfcHR5CiAgICAgICAgIHRlc3RfcmVzb3VyY2UKICAgICAgICAgdGVzdF9zaWduYWwKLSAgICAgICAgIiIiLAotICAgICdmcmVlYnNkNCc6CisgICAgICAgICIiIiksCisgICAgKCdmcmVlYnNkJywKICAgICAgICAgIiIiCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTUzNiw4ICsxNjUyLDggQEAKICAgICAgICAgdGVzdF90aW1lb3V0CiAgICAgICAgIHRlc3RfdXJsbGlibmV0CiAgICAgICAgIHRlc3RfbXVsdGlwcm9jZXNzaW5nCi0gICAgICAgICIiIiwKLSAgICAnYWl4NSc6CisgICAgICAgICIiIiksCisgICAgKCdhaXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9iejIKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTU1MSwxMCArMTY2NywxMSBAQAogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X3ppcGltcG9ydAogICAgICAgICB0ZXN0X3psaWIKLSAgICAgICAgIiIiLAotICAgICdvcGVuYnNkMyc6CisgICAgICAgICIiIiksCisgICAgKCdvcGVuYnNkJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3R5cGVzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTU2NiwxMSArMTY4MywxMiBAQAogICAgICAgICB0ZXN0X3R0a19ndWlvbmx5CiAgICAgICAgIHRlc3RfdHRrX3RleHRvbmx5CiAgICAgICAgIHRlc3RfbXVsdGlwcm9jZXNzaW5nCi0gICAgICAgICIiIiwKLSAgICAnbmV0YnNkMyc6CisgICAgICAgICIiIiksCisgICAgKCduZXRic2QnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdHlwZXMKICAgICAgICAgdGVzdF9jdXJzZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfbG9jYWxlCkBAIC0xNTgxLDEyICsxNjk5LDggQEAKICAgICAgICAgdGVzdF90dGtfZ3Vpb25seQogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X211bHRpcHJvY2Vzc2luZwotICAgICAgICAiIiIsCi19Ci1fZXhwZWN0YXRpb25zWydmcmVlYnNkNSddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDYnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KLV9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q3J10gPSBfZXhwZWN0YXRpb25zWydmcmVlYnNkNCddCi1fZXhwZWN0YXRpb25zWydmcmVlYnNkOCddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQorICAgICAgICAiIiIpLAorKQogCiBjbGFzcyBfRXhwZWN0ZWRTa2lwczoKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC0xNTk0LDkgKzE3MDgsMTMgQEAKICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3RpbWVvdXQKIAogICAgICAgICBzZWxmLnZhbGlkID0gRmFsc2UKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluIF9leHBlY3RhdGlvbnM6Ci0gICAgICAgICAgICBzID0gX2V4cGVjdGF0aW9uc1tzeXMucGxhdGZvcm1dCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkID0gc2V0KHMuc3BsaXQoKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBOb25lCisgICAgICAgIGZvciBpdGVtIGluIF9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChpdGVtWzBdKToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGl0ZW1bMV0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBzZXQoZXhwZWN0ZWQuc3BsaXQoKSkKIAogICAgICAgICAgICAgIyBUaGVzZSBhcmUgYnJva2VuIHRlc3RzLCBmb3Igbm93IHNraXBwZWQgb24gZXZlcnkgcGxhdGZvcm0uCiAgICAgICAgICAgICAjIFhYWCBGaXggdGhlc2UhCkBAIC0xNjU2LDkgKzE3NzQsOCBAQAogICAgICAgICBURU1QRElSID0gb3MucGF0aC5hYnNwYXRoKFRFTVBESVIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZwogICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlcGVyZi5weSBiL0xpYi90ZXN0L3JlcGVyZi5weQppbmRleCA3YzY4MjM0Li5lOTNiYWNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9yZXBlcmYucHkKKysrIGIvTGliL3Rlc3QvcmVwZXJmLnB5CkBAIC05LDEzICs5LDEzIEBACiAgICAgdGltZWZ1bmMoMTAsIHAuZmluZGFsbCwgcykKIAogZGVmIHRpbWVmdW5jKG4sIGZ1bmMsICphcmdzLCAqKmt3KToKLSAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgIHQwID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgIHRyeToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgICAgICByZXN1bHQgPSBmdW5jKCphcmdzLCAqKmt3KQogICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZmluYWxseToKLSAgICAgICAgdDEgPSB0aW1lLmNsb2NrKCkKKyAgICAgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgIGlmIG4gPiAxOgogICAgICAgICAgICAgcHJpbnQobiwgInRpbWVzIiwgZW5kPScgJykKICAgICAgICAgcHJpbnQoZnVuYy5fX25hbWVfXywgIiUuM2YiICUgKHQxLXQwKSwgIkNQVSBzZWNvbmRzIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CmluZGV4IGJhNDQ2Y2QuLmIwOWY0YmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQpAQCAtMSw2ICsxLDcgQEAKICMgQ29tbW9uIHV0aWxpdHkgZnVuY3Rpb25zIHVzZWQgYnkgdmFyaW91cyBzY3JpcHQgZXhlY3V0aW9uIHRlc3RzCiAjICBlLmcuIHRlc3RfY21kX2xpbmUsIHRlc3RfY21kX2xpbmVfc2NyaXB0IGFuZCB0ZXN0X3J1bnB5CiAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKQEAgLTU5LDExICs2MCwxMiBAQAogICAgICIiIgogICAgIHJldHVybiBfYXNzZXJ0X3B5dGhvbihGYWxzZSwgKmFyZ3MsICoqZW52X3ZhcnMpCiAKLWRlZiBzcGF3bl9weXRob24oKmFyZ3MpOgorZGVmIHNwYXduX3B5dGhvbigqYXJncywgKiprdyk6CiAgICAgY21kX2xpbmUgPSBbc3lzLmV4ZWN1dGFibGUsICctRSddCiAgICAgY21kX2xpbmUuZXh0ZW5kKGFyZ3MpCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oY21kX2xpbmUsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3cpCiAKIGRlZiBraWxsX3B5dGhvbihwKToKICAgICBwLnN0ZGluLmNsb3NlKCkKQEAgLTkyLDYgKzk0LDcgQEAKICAgICBzY3JpcHRfZmlsZSA9IG9wZW4oc2NyaXB0X25hbWUsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykKICAgICBzY3JpcHRfZmlsZS53cml0ZShzb3VyY2UpCiAgICAgc2NyaXB0X2ZpbGUuY2xvc2UoKQorICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgcmV0dXJuIHNjcmlwdF9uYW1lCiAKIGRlZiBtYWtlX3ppcF9zY3JpcHQoemlwX2RpciwgemlwX2Jhc2VuYW1lLCBzY3JpcHRfbmFtZSwgbmFtZV9pbl96aXA9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKaW5kZXggZjY1NWMyOS4uZjE4NWE4MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQpAQCAtNCw2ICs0LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgcGlja2xlCiAKICMgVmFyaW91cyBpdGVyYWJsZXMKICMgVGhpcyBpcyB1c2VkIGZvciBjaGVja2luZyB0aGUgY29uc3RydWN0b3IgKGhlcmUgYW5kIGluIHRlc3RfZGVxdWUucHkpCkBAIC0zODgsMyArMzg5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmluZGV4KDAsIC00KnN5cy5tYXhzaXplLCA0KnN5cy5tYXhzaXplKSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYS5pbmRleCwgMCwgNCpzeXMubWF4c2l6ZSwtNCpzeXMubWF4c2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYS5pbmRleCwgMiwgMCwgLTEwKQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBsc3QgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGxzdDIgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGxzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0MiwgbHN0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGxzdDIpLCBpZChsc3QpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc29ydHBlcmYucHkgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQppbmRleCAwY2U4OGRlLi5hZjdjMGI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zb3J0cGVyZi5weQorKysgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQpAQCAtNTcsOSArNTcsOSBAQAogICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiBkZWYgZG9pdChMKToKLSAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgIHQwID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgIEwuc29ydCgpCi0gICAgdDEgPSB0aW1lLmNsb2NrKCkKKyAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICBwcmludCgiJTYuMmYiICUgKHQxLXQwKSwgZW5kPScgJykKICAgICBmbHVzaCgpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbSBiL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTI0NjcyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc3NsX2tleS5wYXNzd2QucGVtCkBAIC0wLDAgKzEsMTggQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK1Byb2MtVHlwZTogNCxFTkNSWVBURUQKK0RFSy1JbmZvOiBERVMtRURFMy1DQkMsMUE4RDlEMkEwMkVDNjk4QQorCitrSlliZlo4TDBzZmU5T3R5M2d3MGFsb05uWTVFOGZlZ1JmUUxabE5veFRsNmpOdDBuSXdJOGtESjM2Q1pnUjljCit1M0ZESm0vS3FyZlVvejh2VytxRW5XaFNHN1FQWDJ3V0dQSGQ0Szk0WXovRmdyUnpaMERvSzdYeFhxOWdPdFZBCitBVkdRaG56MzJwKzZXaGZHc0NyOUFyWEV3UlpyVGsvRnZ6RVBhVTVmSGNvU2tyTlZBR1g4SXBTVmtTRHdFRFFyCitHdjE3K2Nmazk5VVYxT0N6YTZ5S0hvRmtUdHJDK1BaVTcxTG9tQmFiaXZTMk9jNEI5aFl1U1IyaEYwMXdUSFArCitZbFdOYWdaT09WdE56NG9LSzl4OWVOUXBtZlFYUXZQUFRmdXNleEtJYktmWnJNdkpveGNtMWdmY1owSC93SzZQCis2d21YU0czNXFNT096dENaTnRwZXJqczF3ekVCWHpueUs4UW1MY0FKQmprZmFyQUJKWDl2QkV6WlYwT1VLaHkrCitub09SRndIVGxscGhibXlkTGh1NmVoTFVaTUhQaHpBUzVVTjdzcnRwU044MWVlckRNeTBSTVVBd0E3L1BvZlgxCis5NE1lODVROGpQMFBDOUVUZHNKY1BxTHpBUEVURVl1MEVMZXdLUmNyZHlXaSt0bExGcnBFNUtUL3M1ZWNibDlsCis3QjYxVTRLZmQxUElYYy9zaUlOaFUzQTNiWUsrODQ1WXlVQXJVT25LZjFrRW94N3AxUnBEN3lGcVZUMDRsUlRvCitjaWJOS0FUQnVzWFN1QnJwMkc2R051aFdFT1NhZldDS0pRQXpnQ1lJcDZaVFYya2hoTVVHcHBjLzJIM0NGNmNPCit6WDBLdGxQVlpDN2hMa0I2SFQ4U3hZVXdGMXpxV1k3Ky9YUFBkYzM3TWVFWjg3UTNVdVp3cU9STFkrWjBocGd0CitMNUpYQkNva2xaaENBYU4yR3F3RkxYdEdpUlNSRkdZN3hYSWhiRFRsRTY1V3YxV0dHZ0RMTUtHRTFnT3ozeUFvCisyampHMSt5QUhKVWRFNjlYVEZIU3FTa3ZhbG9BMVcwM0xkTVhaOVZ1UUoveVNYQ2llNkFCQVE9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5IGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKaW5kZXggNzdjMDU0Mi4uODY4NjE1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKKysrIGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKQEAgLTk0LDcgKzk0LDEyIEBACiAgICAgICAgICIiIlNlcnZlIGEgR0VUIHJlcXVlc3QuIiIiCiAgICAgICAgIHNvY2sgPSBzZWxmLnJmaWxlLnJhdy5fc29jawogICAgICAgICBjb250ZXh0ID0gc29jay5jb250ZXh0Ci0gICAgICAgIGJvZHkgPSBwcHJpbnQucGZvcm1hdChjb250ZXh0LnNlc3Npb25fc3RhdHMoKSkKKyAgICAgICAgc3RhdHMgPSB7CisgICAgICAgICAgICAnc2Vzc2lvbl9jYWNoZSc6IGNvbnRleHQuc2Vzc2lvbl9zdGF0cygpLAorICAgICAgICAgICAgJ2NpcGhlcic6IHNvY2suY2lwaGVyKCksCisgICAgICAgICAgICAnY29tcHJlc3Npb24nOiBzb2NrLmNvbXByZXNzaW9uKCksCisgICAgICAgICAgICB9CisgICAgICAgIGJvZHkgPSBwcHJpbnQucGZvcm1hdChzdGF0cykKICAgICAgICAgYm9keSA9IGJvZHkuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtdHlwZSIsICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IikKQEAgLTE3Miw2ICsxNzcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBoZWxwPSdiZSBsZXNzIHZlcmJvc2UnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc3RhdHMnLCBkZXN0PSd1c2Vfc3RhdHNfaGFuZGxlcicsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdhbHdheXMgcmV0dXJuIHN0YXRzIHBhZ2UnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY3VydmUtbmFtZScsIGRlc3Q9J2N1cnZlX25hbWUnLCB0eXBlPXN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY3VydmUgbmFtZSBmb3IgRUMtYmFzZWQgRGlmZmllLUhlbGxtYW4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGgnLCBkZXN0PSdkaF9maWxlJywgdHlwZT1zdHIsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUEVNIGZpbGUgY29udGFpbmluZyBESCBwYXJhbWV0ZXJzJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc3VwcG9ydC52ZXJib3NlID0gYXJncy52ZXJib3NlCkBAIC0xODIsNiArMTkyLDEwIEBACiAgICAgICAgIGhhbmRsZXJfY2xhc3Mucm9vdCA9IG9zLmdldGN3ZCgpCiAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICBpZiBhcmdzLmN1cnZlX25hbWU6CisgICAgICAgIGNvbnRleHQuc2V0X2VjZGhfY3VydmUoYXJncy5jdXJ2ZV9uYW1lKQorICAgIGlmIGFyZ3MuZGhfZmlsZToKKyAgICAgICAgY29udGV4dC5sb2FkX2RoX3BhcmFtcyhhcmdzLmRoX2ZpbGUpCiAKICAgICBzZXJ2ZXIgPSBIVFRQU1NlcnZlcigoIiIsIGFyZ3MucG9ydCksIGhhbmRsZXJfY2xhc3MsIGNvbnRleHQpCiAgICAgaWYgYXJncy52ZXJib3NlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CmluZGV4IDQxM2Y5ZGQuLmU0Njg4ZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKQEAgLTI4LDYgKzI4LDExIEBACiAgICAgIyBDaGFuZ2UgaW4gc3ViY2xhc3NlcyB0byBjaGFuZ2UgdGhlIGJlaGF2aW91ciBvZiBmaXh0ZXN0dHlwZSgpCiAgICAgdHlwZTJ0ZXN0ID0gTm9uZQogCisgICAgIyBXaGV0aGVyIHRoZSAiY29udGFpbmVkIGl0ZW1zIiBvZiB0aGUgY29udGFpbmVyIGFyZSBpbnRlZ2VycyBpbgorICAgICMgcmFuZ2UoMCwgMjU2KSAoaS5lLiBieXRlcywgYnl0ZWFycmF5KSBvciBzdHJpbmdzIG9mIGxlbmd0aCAxCisgICAgIyAoc3RyKQorICAgIGNvbnRhaW5zX2J5dGVzID0gRmFsc2UKKwogICAgICMgQWxsIHRlc3RzIHBhc3MgdGhlaXIgYXJndW1lbnRzIHRvIHRoZSB0ZXN0aW5nIG1ldGhvZHMKICAgICAjIGFzIHN0ciBvYmplY3RzLiBmaXh0ZXN0dHlwZSgpIGNhbiBiZSB1c2VkIHRvIHByb3BhZ2F0ZQogICAgICMgdGhlc2UgYXJndW1lbnRzIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlCkBAIC00NywxMSArNTIsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBvYmoKIAogICAgICMgY2hlY2sgdGhhdCBvYmoubWV0aG9kKCphcmdzKSByZXR1cm5zIHJlc3VsdAotICAgIGRlZiBjaGVja2VxdWFsKHNlbGYsIHJlc3VsdCwgb2JqLCBtZXRob2RuYW1lLCAqYXJncyk6CisgICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmosIG1ldGhvZG5hbWUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYuZml4dHlwZShyZXN1bHQpCiAgICAgICAgIG9iaiA9IHNlbGYuZml4dHlwZShvYmopCiAgICAgICAgIGFyZ3MgPSBzZWxmLmZpeHR5cGUoYXJncykKLSAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqLCBtZXRob2RuYW1lKSgqYXJncykKKyAgICAgICAga3dhcmdzID0ge2s6IHNlbGYuZml4dHlwZSh2KSBmb3Igayx2IGluIGt3YXJncy5pdGVtcygpfQorICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmosIG1ldGhvZG5hbWUpKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHJlc3VsdCwKICAgICAgICAgICAgIHJlYWxyZXN1bHQKQEAgLTExNiw3ICsxMjIsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICcnLCAnY291bnQnLCAneHgnLCBzeXMubWF4c2l6ZSwgMCkKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2NvdW50JykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdjb3VudCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJ2hlbGxvJywgJ2NvdW50JywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2NvdW50JywgNDIpCiAKICAgICAgICAgIyBGb3IgYSB2YXJpZXR5IG9mIGNvbWJpbmF0aW9ucywKICAgICAgICAgIyAgICB2ZXJpZnkgdGhhdCBzdHIuY291bnQoKSBtYXRjaGVzIGFuIGVxdWl2YWxlbnQgZnVuY3Rpb24KQEAgLTE2Miw3ICsxNzIsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdmaW5kJywgJ2EnLCBOb25lLCA2KQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnZmluZCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnZmluZCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdoZWxsbycsICdmaW5kJywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2ZpbmQnLCA0MikKIAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJycsICdmaW5kJywgJycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJycsICdmaW5kJywgJycsIDEsIDEpCkBAIC0yMTYsNyArMjMwLDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCggMiwgJ3JyYXJycnJycnJycmEnLCAncmZpbmQnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyZmluZCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmZpbmQnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnaGVsbG8nLCAncmZpbmQnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmZpbmQnLCA0MikKIAogICAgICAgICAjIEZvciBhIHZhcmlldHkgb2YgY29tYmluYXRpb25zLAogICAgICAgICAjICAgIHZlcmlmeSB0aGF0IHN0ci5yZmluZCgpIG1hdGNoZXMgX19jb250YWluc19fCkBAIC0yNDQsNiArMjYyLDkgQEAKICAgICAgICAgIyBpc3N1ZSA3NDU4CiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2FiJywgJ3JmaW5kJywgJ3h4eCcsIHN5cy5tYXhzaXplICsgMSwgMCkKIAorICAgICAgICAjIGlzc3VlICMxNTUzNAorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJzwuLi4uLi5cdTA0M2MuLi4nLCAicmZpbmQiLCAiPCIpCisKICAgICBkZWYgdGVzdF9pbmRleChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICdhYmNkZWZnaGlhYmMnLCAnaW5kZXgnLCAnJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDMsICdhYmNkZWZnaGlhYmMnLCAnaW5kZXgnLCAnZGVmJykKQEAgLTI2Myw3ICsyODQsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdpbmRleCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdpbmRleCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICdoZWxsbycsICdpbmRleCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdpbmRleCcsIDQyKQogCiAgICAgZGVmIHRlc3RfcmluZGV4KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMTIsICdhYmNkZWZnaGlhYmMnLCAncmluZGV4JywgJycpCkBAIC0yODUsNyArMzEwLDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCggMiwgJ3JyYXJycnJycnJycmEnLCAncmluZGV4JywgJ2EnLCBOb25lLCA2KQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmluZGV4JykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnaGVsbG8nLCAncmluZGV4JywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcsIDQyKQogCiAgICAgZGVmIHRlc3RfbG93ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnaGVsbG8nLCAnSGVMTG8nLCAnbG93ZXInKQpAQCAtMzYzLDYgKzM5MiwxNyBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJ10qMTggKyBbJ2FCTEFIYSddLCAoJ2FCTEFIJyoyMClbOi00XSwKICAgICAgICAgICAgICAgICAgICAgICAgICdzcGxpdCcsICdCTEFIJywgMTgpCiAKKyAgICAgICAgIyB3aXRoIGtleXdvcmQgYXJncworICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2InLCAnYycsICdkJ10sICdhfGJ8Y3xkJywgJ3NwbGl0Jywgc2VwPSd8JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdifGN8ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAnc3BsaXQnLCAnfCcsIG1heHNwbGl0PTEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYnxjfGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3NwbGl0Jywgc2VwPSd8JywgbWF4c3BsaXQ9MSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdifGN8ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAnc3BsaXQnLCBtYXhzcGxpdD0xLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2IgYyBkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYSBiIGMgZCcsICdzcGxpdCcsIG1heHNwbGl0PTEpCisKICAgICAgICAgIyBhcmd1bWVudCB0eXBlCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnc3BsaXQnLCA0MiwgNDIsIDQyKQogCkBAIC00MjAsNiArNDYwLDE3IEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2FCTEFIYSddICsgWydhJ10qMTgsICgnYUJMQUgnKjIwKVs6LTRdLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3JzcGxpdCcsICdCTEFIJywgMTgpCiAKKyAgICAgICAgIyB3aXRoIGtleXdvcmQgYXJncworICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2InLCAnYycsICdkJ10sICdhfGJ8Y3xkJywgJ3JzcGxpdCcsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2F8YnxjJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3JzcGxpdCcsICd8JywgbWF4c3BsaXQ9MSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYXxifGMnLCAnZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAncnNwbGl0Jywgc2VwPSd8JywgbWF4c3BsaXQ9MSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYXxifGMnLCAnZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAncnNwbGl0JywgbWF4c3BsaXQ9MSwgc2VwPSd8JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYSBiIGMnLCAnZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2EgYiBjIGQnLCAncnNwbGl0JywgbWF4c3BsaXQ9MSkKKwogICAgICAgICAjIGFyZ3VtZW50IHR5cGUKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyc3BsaXQnLCA0MiwgNDIsIDQyKQogCkBAIC01NDksNiArNjAwLDggQEAKICAgICAgICAgRVEoIlJleUtLamF2aWsiLCAiUmV5a2phdmlrIiwgInJlcGxhY2UiLCAiayIsICJLSyIsIDEpCiAgICAgICAgIEVRKCJSZXlramF2aWsiLCAiUmV5a2phdmlrIiwgInJlcGxhY2UiLCAiayIsICJLSyIsIDApCiAgICAgICAgIEVRKCJBLS0tLUItLS0tQy0tLS0iLCAiQS5CLkMuIiwgInJlcGxhY2UiLCAiLiIsICItLS0tIikKKyAgICAgICAgIyBpc3N1ZSAjMTU1MzQKKyAgICAgICAgRVEoJy4uLlx1MDQzYy4uLi4uLiZsdDsnLCAnLi4uXHUwNDNjLi4uLi4uPCcsICJyZXBsYWNlIiwgIjwiLCAiJmx0OyIpCiAKICAgICAgICAgRVEoIlJleWtqYXZpayIsICJSZXlramF2aWsiLCAicmVwbGFjZSIsICJxIiwgIktLIikKIApAQCAtNjQzLDcgKzY5Niw3IEBACiAKICAgICAgICAgIyBjaGVjayB0aGF0IHRpdGxlY2FzZWQgY2hhcnMgYXJlIGxvd2VyZWQgY29ycmVjdGx5CiAgICAgICAgICMgXHUxZmZjIGlzIHRoZSB0aXRsZWNhc2VkIGNoYXIKLSAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdcdTFmZmNcdTFmZjNcdTFmZjNcdTFmZjMnLAorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoJ1x1MDNhOVx1MDM5OVx1MWZmM1x1MWZmM1x1MWZmMycsCiAgICAgICAgICAgICAgICAgICAgICAgICAnXHUxZmYzXHUxZmYzXHUxZmZjXHUxZmZjJywgJ2NhcGl0YWxpemUnKQogICAgICAgICAjIGNoZWNrIHdpdGggY2FzZWQgbm9uLWxldHRlciBjaGFycwogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoJ1x1MjRjNVx1MjRlOFx1MjRlM1x1MjRkN1x1MjRkZVx1MjRkZCcsCkBAIC05MDgsNyArOTYxLDE0IEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2FiYycsICdkZWYnLCAnZ2hpJ10sICJhYmNcbmRlZlxyXG5naGlcbiIsICdzcGxpdGxpbmVzJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYWJjJywgJ2RlZicsICdnaGknLCAnJ10sICJhYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWycnLCAnYWJjJywgJ2RlZicsICdnaGknLCAnJ10sICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycpCi0gICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ1xuJywgJ2FiY1xuJywgJ2RlZlxyXG4nLCAnZ2hpXG4nLCAnXHInXSwgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJywgMSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnJywgJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJywgRmFsc2UpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ1xuJywgJ2FiY1xuJywgJ2RlZlxyXG4nLCAnZ2hpXG4nLCAnXHInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJycsICdhYmMnLCAnZGVmJywgJ2doaScsICcnXSwgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsCisgICAgICAgICAgICAgICAgICAgICAgICAnc3BsaXRsaW5lcycsIGtlZXBlbmRzPUZhbHNlKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydcbicsICdhYmNcbicsICdkZWZcclxuJywgJ2doaVxuJywgJ1xyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCBrZWVwZW5kcz1UcnVlKQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnYWJjJywgJ3NwbGl0bGluZXMnLCA0MiwgNDIpCiAKQEAgLTExNDIsNiArMTIwMiwxMCBAQAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyUxMC4qZicsICdfX21vZF9fJywgKCdmb28nLCA0Mi4pKQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclMTAnLCAnX19tb2RfXycsICg0MiwpKQogCisgICAgICAgICMgT3V0cmFnZW91c2x5IGxhcmdlIHdpZHRoIG9yIHByZWNpc2lvbiBzaG91bGQgcmFpc2UgVmFsdWVFcnJvci4KKyAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnJSUlZGYnICUgKDIqKjY0KSwgJ19fbW9kX18nLCAoMy4yKSkKKyAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnJSUuJWRmJyAlICgyKio2NCksICdfX21vZF9fJywgKDMuMikpCisKICAgICAgICAgY2xhc3MgWChvYmplY3QpOiBwYXNzCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnYWJjJywgJ19fbW9kX18nLCBYKCkpCiAKQEAgLTEyNjAsNiArMTMyNCw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCByJ15lbmRzd2l0aFwoJywgcy5lbmRzd2l0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgTm9uZSwgTm9uZSwgTm9uZSkKIAorICAgICAgICAjIGlzc3VlICMxNTUzNAorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMTAsICIuLi5cdTA0M2MuLi4uLi48IiwgImZpbmQiLCAiPCIpCisKIAogY2xhc3MgTWl4aW5TdHJVbmljb2RlVGVzdDoKICAgICAjIEFkZGl0aW9uYWwgdGVzdHMgdGhhdCBvbmx5IHdvcmsgd2l0aCBzdHIgYW5kIHVuaWNvZGUuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0LnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC5weQppbmRleCBlMWVjOWUyLi5jNTY0MGUwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQucHkKQEAgLTE1LDcgKzE1LDcgQEAKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBpbXAKQEAgLTM3LDI2ICszNyw0MSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAordHJ5OgorICAgIGltcG9ydCB6bGliCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgemxpYiA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCiAKIF9fYWxsX18gPSBbCi0gICAgIkVycm9yIiwgIlRlc3RGYWlsZWQiLCAiUmVzb3VyY2VEZW5pZWQiLCAiaW1wb3J0X21vZHVsZSIsCi0gICAgInZlcmJvc2UiLCAidXNlX3Jlc291cmNlcyIsICJtYXhfbWVtdXNlIiwgInJlY29yZF9vcmlnaW5hbF9zdGRvdXQiLAorICAgICJFcnJvciIsICJUZXN0RmFpbGVkIiwgIlJlc291cmNlRGVuaWVkIiwgImltcG9ydF9tb2R1bGUiLCAidmVyYm9zZSIsCisgICAgInVzZV9yZXNvdXJjZXMiLCAibWF4X21lbXVzZSIsICJyZWNvcmRfb3JpZ2luYWxfc3Rkb3V0IiwKICAgICAiZ2V0X29yaWdpbmFsX3N0ZG91dCIsICJ1bmxvYWQiLCAidW5saW5rIiwgInJtdHJlZSIsICJmb3JnZXQiLAotICAgICJpc19yZXNvdXJjZV9lbmFibGVkIiwgInJlcXVpcmVzIiwgInJlcXVpcmVzX21hY192ZXIiLAotICAgICJmaW5kX3VudXNlZF9wb3J0IiwgImJpbmRfcG9ydCIsCi0gICAgImZjbXAiLCAiaXNfanl0aG9uIiwgIlRFU1RGTiIsICJIT1NUIiwgIkZVWloiLCAiU0FWRURDV0QiLCAidGVtcF9jd2QiLAotICAgICJmaW5kZmlsZSIsICJzb3J0ZGljdCIsICJjaGVja19zeW50YXhfZXJyb3IiLCAib3Blbl91cmxyZXNvdXJjZSIsCi0gICAgImNoZWNrX3dhcm5pbmdzIiwgIkNsZWFuSW1wb3J0IiwgIkVudmlyb25tZW50VmFyR3VhcmQiLAotICAgICJUcmFuc2llbnRSZXNvdXJjZSIsICJjYXB0dXJlZF9vdXRwdXQiLCAiY2FwdHVyZWRfc3Rkb3V0IiwKLSAgICAiY2FwdHVyZWRfc3RkaW4iLCAiY2FwdHVyZWRfc3RkZXJyIiwKLSAgICAidGltZV9vdXQiLCAic29ja2V0X3BlZXJfcmVzZXQiLCAiaW9lcnJvcl9wZWVyX3Jlc2V0IiwKLSAgICAicnVuX3dpdGhfbG9jYWxlIiwgJ3RlbXBfdW1hc2snLCAidHJhbnNpZW50X2ludGVybmV0IiwKLSAgICAic2V0X21lbWxpbWl0IiwgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsICJCYXNpY1Rlc3RSdW5uZXIiLAotICAgICJydW5fdW5pdHRlc3QiLCAicnVuX2RvY3Rlc3QiLCAidGhyZWFkaW5nX3NldHVwIiwgInRocmVhZGluZ19jbGVhbnVwIiwKLSAgICAicmVhcF9jaGlsZHJlbiIsICJjcHl0aG9uX29ubHkiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLCAiZ2V0X2F0dHJpYnV0ZSIsCi0gICAgInN3YXBfaXRlbSIsICJzd2FwX2F0dHIiLCAicmVxdWlyZXNfSUVFRV83NTQiLAorICAgICJpc19yZXNvdXJjZV9lbmFibGVkIiwgInJlcXVpcmVzIiwgInJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbiIsCisgICAgInJlcXVpcmVzX2xpbnV4X3ZlcnNpb24iLCAicmVxdWlyZXNfbWFjX3ZlciIsICJmaW5kX3VudXNlZF9wb3J0IiwKKyAgICAiYmluZF9wb3J0IiwgIklQVjZfRU5BQkxFRCIsICJpc19qeXRob24iLCAiVEVTVEZOIiwgIkhPU1QiLCAiU0FWRURDV0QiLAorICAgICJ0ZW1wX2N3ZCIsICJmaW5kZmlsZSIsICJjcmVhdGVfZW1wdHlfZmlsZSIsICJzb3J0ZGljdCIsCisgICAgImNoZWNrX3N5bnRheF9lcnJvciIsICJvcGVuX3VybHJlc291cmNlIiwgImNoZWNrX3dhcm5pbmdzIiwgIkNsZWFuSW1wb3J0IiwKKyAgICAiRW52aXJvbm1lbnRWYXJHdWFyZCIsICJUcmFuc2llbnRSZXNvdXJjZSIsICJjYXB0dXJlZF9zdGRvdXQiLAorICAgICJjYXB0dXJlZF9zdGRpbiIsICJjYXB0dXJlZF9zdGRlcnIiLCAidGltZV9vdXQiLCAic29ja2V0X3BlZXJfcmVzZXQiLAorICAgICJpb2Vycm9yX3BlZXJfcmVzZXQiLCAicnVuX3dpdGhfbG9jYWxlIiwgJ3RlbXBfdW1hc2snLAorICAgICJ0cmFuc2llbnRfaW50ZXJuZXQiLCAic2V0X21lbWxpbWl0IiwgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsCisgICAgIkJhc2ljVGVzdFJ1bm5lciIsICJydW5fdW5pdHRlc3QiLCAicnVuX2RvY3Rlc3QiLCAidGhyZWFkaW5nX3NldHVwIiwKKyAgICAidGhyZWFkaW5nX2NsZWFudXAiLCAicmVhcF9jaGlsZHJlbiIsICJjcHl0aG9uX29ubHkiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLAorICAgICJnZXRfYXR0cmlidXRlIiwgInN3YXBfaXRlbSIsICJzd2FwX2F0dHIiLCAicmVxdWlyZXNfSUVFRV83NTQiLAogICAgICJUZXN0SGFuZGxlciIsICJNYXRjaGVyIiwgImNhbl9zeW1saW5rIiwgInNraXBfdW5sZXNzX3N5bWxpbmsiLAotICAgICJpbXBvcnRfZnJlc2hfbW9kdWxlIiwgImZhaWxmYXN0IiwgInJ1bl93aXRoX3R6IgorICAgICJza2lwX3VubGVzc194YXR0ciIsICJpbXBvcnRfZnJlc2hfbW9kdWxlIiwgInJlcXVpcmVzX3psaWIiLAorICAgICJQSVBFX01BWF9TSVpFIiwgImZhaWxmYXN0IiwgImFudGljaXBhdGVfZmFpbHVyZSIsICJydW5fd2l0aF90eiIsCisgICAgInJlcXVpcmVzX2J6MiIsICJyZXF1aXJlc19sem1hIgogICAgIF0KIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKQEAgLTEyNyw2ICsxNDIsMTcgQEAKICAgICByZXR1cm4gc2F2ZWQKIAogCitkZWYgYW50aWNpcGF0ZV9mYWlsdXJlKGNvbmRpdGlvbik6CisgICAgIiIiRGVjb3JhdG9yIHRvIG1hcmsgYSB0ZXN0IHRoYXQgaXMga25vd24gdG8gYmUgYnJva2VuIGluIHNvbWUgY2FzZXMKKworICAgICAgIEFueSB1c2Ugb2YgdGhpcyBkZWNvcmF0b3Igc2hvdWxkIGhhdmUgYSBjb21tZW50IGlkZW50aWZ5aW5nIHRoZQorICAgICAgIGFzc29jaWF0ZWQgdHJhY2tlciBpc3N1ZS4KKyAgICAiIiIKKyAgICBpZiBjb25kaXRpb246CisgICAgICAgIHJldHVybiB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICByZXR1cm4gbGFtYmRhIGY6IGYKKworCiBkZWYgaW1wb3J0X2ZyZXNoX21vZHVsZShuYW1lLCBmcmVzaD0oKSwgYmxvY2tlZD0oKSwgZGVwcmVjYXRlZD1GYWxzZSk6CiAgICAgIiIiSW1wb3J0cyBhbmQgcmV0dXJucyBhIG1vZHVsZSwgZGVsaWJlcmF0ZWx5IGJ5cGFzc2luZyB0aGUgc3lzLm1vZHVsZXMgY2FjaGUKICAgICBhbmQgaW1wb3J0aW5nIGEgZnJlc2ggY29weSBvZiB0aGUgbW9kdWxlLiBPbmNlIHRoZSBpbXBvcnQgaXMgY29tcGxldGUsCkBAIC0xNzAsOCArMTk2LDcgQEAKICAgICB0cnk6CiAgICAgICAgIGF0dHJpYnV0ZSA9IGdldGF0dHIob2JqLCBuYW1lKQogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm1vZHVsZSAlcyBoYXMgbm8gYXR0cmlidXRlICVzIiAlICgKLSAgICAgICAgICAgIG9iai5fX25hbWVfXywgbmFtZSkpCisgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvYmplY3QgJXIgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSAob2JqLCBuYW1lKSkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gYXR0cmlidXRlCiAKQEAgLTI3Niw4ICszMDEsNyBAQAogICAgIHRyeToKICAgICAgICAgX3JtdHJlZShwYXRoKQogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgotICAgICAgICAjIFVuaXggcmV0dXJucyBFTk9FTlQsIFdpbmRvd3MgcmV0dXJucyBFU1JDSC4KLSAgICAgICAgaWYgZXJyb3IuZXJybm8gbm90IGluIChlcnJuby5FTk9FTlQsIGVycm5vLkVTUkNIKToKKyAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgcmFpc2UKIAogZGVmIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpOgpAQCAtMzYyLDkgKzM4Niw1MiBAQAogICAgICAgICByZXR1cm4KICAgICBpZiBub3QgaXNfcmVzb3VyY2VfZW5hYmxlZChyZXNvdXJjZSk6CiAgICAgICAgIGlmIG1zZyBpcyBOb25lOgotICAgICAgICAgICAgbXNnID0gIlVzZSBvZiB0aGUgYCVzJyByZXNvdXJjZSBub3QgZW5hYmxlZCIgJSByZXNvdXJjZQorICAgICAgICAgICAgbXNnID0gIlVzZSBvZiB0aGUgJXIgcmVzb3VyY2Ugbm90IGVuYWJsZWQiICUgcmVzb3VyY2UKICAgICAgICAgcmFpc2UgUmVzb3VyY2VEZW5pZWQobXNnKQogCitkZWYgX3JlcXVpcmVzX3VuaXhfdmVyc2lvbihzeXNuYW1lLCBtaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIGBzeXNuYW1lYCBhbmQgdGhlIHZlcnNpb24gaXMgbGVzcworICAgIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignRnJlZUJTRCcsICg3LCAyKSkgcmFpc2VzIFNraXBUZXN0IGlmCisgICAgdGhlIEZyZWVCU0QgdmVyc2lvbiBpcyBsZXNzIHRoYW4gNy4yLgorICAgICIiIgorICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gc3lzbmFtZToKKyAgICAgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLnJlbGVhc2UoKS5zcGxpdCgnLScsIDEpWzBdCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uIDwgbWluX3ZlcnNpb246CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbl90eHQgPSAnLicuam9pbihtYXAoc3RyLCBtaW5fdmVyc2lvbikpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgdmVyc2lvbiAlcyBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzeXNuYW1lLCBtaW5fdmVyc2lvbl90eHQsIHZlcnNpb25fdHh0KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICByZXR1cm4gZGVjb3JhdG9yCisKK2RlZiByZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oKm1pbl92ZXJzaW9uKToKKyAgICAiIiJEZWNvcmF0b3IgcmFpc2luZyBTa2lwVGVzdCBpZiB0aGUgT1MgaXMgRnJlZUJTRCBhbmQgdGhlIEZyZWVCU0QgdmVyc2lvbiBpcworICAgIGxlc3MgdGhhbiBgbWluX3ZlcnNpb25gLgorCisgICAgRm9yIGV4YW1wbGUsIEByZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oNywgMikgcmFpc2VzIFNraXBUZXN0IGlmIHRoZSBGcmVlQlNECisgICAgdmVyc2lvbiBpcyBsZXNzIHRoYW4gNy4yLgorICAgICIiIgorICAgIHJldHVybiBfcmVxdWlyZXNfdW5peF92ZXJzaW9uKCdGcmVlQlNEJywgbWluX3ZlcnNpb24pCisKK2RlZiByZXF1aXJlc19saW51eF92ZXJzaW9uKCptaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIExpbnV4IGFuZCB0aGUgTGludXggdmVyc2lvbiBpcworICAgIGxlc3MgdGhhbiBgbWluX3ZlcnNpb25gLgorCisgICAgRm9yIGV4YW1wbGUsIEByZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDMyKSByYWlzZXMgU2tpcFRlc3QgaWYgdGhlIExpbnV4CisgICAgdmVyc2lvbiBpcyBsZXNzIHRoYW4gMi42LjMyLgorICAgICIiIgorICAgIHJldHVybiBfcmVxdWlyZXNfdW5peF92ZXJzaW9uKCdMaW51eCcsIG1pbl92ZXJzaW9uKQorCiBkZWYgcmVxdWlyZXNfbWFjX3ZlcigqbWluX3ZlcnNpb24pOgogICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBNYWMgT1MgWCBhbmQgdGhlIE9TIFgKICAgICB2ZXJzaW9uIGlmIGxlc3MgdGhhbiBtaW5fdmVyc2lvbi4KQEAgLTM5Miw2ICs0NTksNyBAQAogICAgICAgICByZXR1cm4gd3JhcHBlcgogICAgIHJldHVybiBkZWNvcmF0b3IKIAorCiBIT1NUID0gJ2xvY2FsaG9zdCcKIAogZGVmIGZpbmRfdW51c2VkX3BvcnQoZmFtaWx5PXNvY2tldC5BRl9JTkVULCBzb2NrdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pOgpAQCAtNDg3LDI5ICs1NTUsNDEgQEAKICAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCiAgICAgcmV0dXJuIHBvcnQKIAotRlVaWiA9IDFlLTYKLQotZGVmIGZjbXAoeCwgeSk6ICMgZnV6enkgY29tcGFyaXNvbiBmdW5jdGlvbgotICAgIGlmIGlzaW5zdGFuY2UoeCwgZmxvYXQpIG9yIGlzaW5zdGFuY2UoeSwgZmxvYXQpOgorZGVmIF9pc19pcHY2X2VuYWJsZWQoKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIElQdjYgaXMgZW5hYmxlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgaWYgc29ja2V0Lmhhc19pcHY2OgorICAgICAgICBzb2NrID0gTm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmdXp6ID0gKGFicyh4KSArIGFicyh5KSkgKiBGVVpaCi0gICAgICAgICAgICBpZiBhYnMoeC15KSA8PSBmdXp6OgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc29jay5iaW5kKCgnOjoxJywgMCkpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgc29ja2V0LmdhaWVycm9yKToKICAgICAgICAgICAgIHBhc3MKLSAgICBlbGlmIHR5cGUoeCkgPT0gdHlwZSh5KSBhbmQgaXNpbnN0YW5jZSh4LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobWluKGxlbih4KSwgbGVuKHkpKSk6Ci0gICAgICAgICAgICBvdXRjb21lID0gZmNtcCh4W2ldLCB5W2ldKQotICAgICAgICAgICAgaWYgb3V0Y29tZSAhPSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBvdXRjb21lCi0gICAgICAgIHJldHVybiAobGVuKHgpID4gbGVuKHkpKSAtIChsZW4oeCkgPCBsZW4oeSkpCi0gICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBzb2NrOgorICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgIHJldHVybiBGYWxzZQorCitJUFY2X0VOQUJMRUQgPSBfaXNfaXB2Nl9lbmFibGVkKCkKKworCisjIEEgY29uc3RhbnQgbGlrZWx5IGxhcmdlciB0aGFuIHRoZSB1bmRlcmx5aW5nIE9TIHBpcGUgYnVmZmVyIHNpemUuCisjIFdpbmRvd3MgbGltaXQgc2VlbXMgdG8gYmUgYXJvdW5kIDUxMkIsIGFuZCBtb3N0IFVuaXgga2VybmVscyBoYXZlIGEgNjRLIHBpcGUKKyMgYnVmZmVyIHNpemU6IHRha2UgMU0gdG8gYmUgc3VyZS4KK1BJUEVfTUFYX1NJWkUgPSAxMDI0ICogMTAyNAorCiAKICMgZGVjb3JhdG9yIGZvciBza2lwcGluZyB0ZXN0cyBvbiBub24tSUVFRSA3NTQgcGxhdGZvcm1zCiByZXF1aXJlc19JRUVFXzc1NCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCiAgICAgZmxvYXQuX19nZXRmb3JtYXRfXygiZG91YmxlIikuc3RhcnRzd2l0aCgiSUVFRSIpLAogICAgICJ0ZXN0IHJlcXVpcmVzIElFRUUgNzU0IGRvdWJsZXMiKQogCityZXF1aXJlc196bGliID0gdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAncmVxdWlyZXMgemxpYicpCisKK3JlcXVpcmVzX2J6MiA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAncmVxdWlyZXMgYnoyJykKKworcmVxdWlyZXNfbHptYSA9IHVuaXR0ZXN0LnNraXBVbmxlc3MobHptYSwgJ3JlcXVpcmVzIGx6bWEnKQorCiBpc19qeXRob24gPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpCiAKICMgRmlsZW5hbWUgdXNlZCBmb3IgdGVzdGluZwpAQCAtNjEwLDE0ICs2OTAsMTUgQEAKICAgICAgICAgICAgIHJtdHJlZShuYW1lKQogCiAKLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgdGVtcF91bWFzayh1bWFzayk6Ci0gICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4iIiIKLSAgICBvbGRtYXNrID0gb3MudW1hc2sodW1hc2spCi0gICAgdHJ5OgotICAgICAgICB5aWVsZAotICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLnVtYXNrKG9sZG1hc2spCitpZiBoYXNhdHRyKG9zLCAidW1hc2siKToKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiB0ZW1wX3VtYXNrKHVtYXNrKToKKyAgICAgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4iIiIKKyAgICAgICAgb2xkbWFzayA9IG9zLnVtYXNrKHVtYXNrKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB5aWVsZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW1hc2sob2xkbWFzaykKIAogCiBkZWYgZmluZGZpbGUoZmlsZSwgaGVyZT1fX2ZpbGVfXywgc3ViZGlyPU5vbmUpOgpAQCAtNjM1LDYgKzcxNiwxMSBAQAogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6IHJldHVybiBmbgogICAgIHJldHVybiBmaWxlCiAKK2RlZiBjcmVhdGVfZW1wdHlfZmlsZShmaWxlbmFtZSk6CisgICAgIiIiQ3JlYXRlIGFuIGVtcHR5IGZpbGUuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLCB0cnVuY2F0ZSBpdC4iIiIKKyAgICBmZCA9IG9zLm9wZW4oZmlsZW5hbWUsIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCB8IG9zLk9fVFJVTkMpCisgICAgb3MuY2xvc2UoZmQpCisKIGRlZiBzb3J0ZGljdChkaWN0KToKICAgICAiTGlrZSByZXByKGRpY3QpLCBidXQgaW4gc29ydGVkIG9yZGVyLiIKICAgICBpdGVtcyA9IHNvcnRlZChkaWN0Lml0ZW1zKCkpCkBAIC02OTksNyArNzg1LDcgQEAKICAgICBmID0gY2hlY2tfdmFsaWRfZmlsZShmbikKICAgICBpZiBmIGlzIG5vdCBOb25lOgogICAgICAgICByZXR1cm4gZgotICAgIHJhaXNlIFRlc3RGYWlsZWQoJ2ludmFsaWQgcmVzb3VyY2UgIiVzIicgJSBmbikKKyAgICByYWlzZSBUZXN0RmFpbGVkKCdpbnZhbGlkIHJlc291cmNlICVyJyAlIGZuKQogCiAKIGNsYXNzIFdhcm5pbmdzUmVjb3JkZXIob2JqZWN0KToKQEAgLTgyMCw3ICs5MDYsNyBAQAogICAgICAgICBzeXMubW9kdWxlcy51cGRhdGUoc2VsZi5vcmlnaW5hbF9tb2R1bGVzKQogCiAKLWNsYXNzIEVudmlyb25tZW50VmFyR3VhcmQoY29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmcpOgorY2xhc3MgRW52aXJvbm1lbnRWYXJHdWFyZChjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmcpOgogCiAgICAgIiIiQ2xhc3MgdG8gaGVscCBwcm90ZWN0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBwcm9wZXJseS4gIENhbiBiZSB1c2VkIGFzCiAgICAgYSBjb250ZXh0IG1hbmFnZXIuIiIiCkBAIC05NTEsNyArMTAzNyw3IEBACiAgICAgICAgICgnV1NBTk9fREFUQScsIDExMDA0KSwKICAgICBdCiAKLSAgICBkZW5pZWQgPSBSZXNvdXJjZURlbmllZCgiUmVzb3VyY2UgJyVzJyBpcyBub3QgYXZhaWxhYmxlIiAlIHJlc291cmNlX25hbWUpCisgICAgZGVuaWVkID0gUmVzb3VyY2VEZW5pZWQoIlJlc291cmNlICVyIGlzIG5vdCBhdmFpbGFibGUiICUgcmVzb3VyY2VfbmFtZSkKICAgICBjYXB0dXJlZF9lcnJub3MgPSBlcnJub3MKICAgICBnYWlfZXJybm9zID0gW10KICAgICBpZiBub3QgY2FwdHVyZWRfZXJybm9zOgpAQCAtMTA0MCw2ICsxMTI2LDE2IEBACiAgICAgZ2MuY29sbGVjdCgpCiAgICAgZ2MuY29sbGVjdCgpCiAKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgZGlzYWJsZV9nYygpOgorICAgIGhhdmVfZ2MgPSBnYy5pc2VuYWJsZWQoKQorICAgIGdjLmRpc2FibGUoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBoYXZlX2djOgorICAgICAgICAgICAgZ2MuZW5hYmxlKCkKKwogCiBkZWYgcHl0aG9uX2lzX29wdGltaXplZCgpOgogICAgICIiIkZpbmQgaWYgUHl0aG9uIHdhcyBidWlsdCB3aXRoIG9wdGltaXphdGlvbnMuIiIiCkBAIC0xMDQ4LDE5ICsxMTQ0LDIxIEBACiAgICAgZm9yIG9wdCBpbiBjZmxhZ3Muc3BsaXQoKToKICAgICAgICAgaWYgb3B0LnN0YXJ0c3dpdGgoJy1PJyk6CiAgICAgICAgICAgICBmaW5hbF9vcHQgPSBvcHQKLSAgICByZXR1cm4gZmluYWxfb3B0IGFuZCBmaW5hbF9vcHQgIT0gJy1PMCcKKyAgICByZXR1cm4gZmluYWxfb3B0ICE9ICcnIGFuZCBmaW5hbF9vcHQgIT0gJy1PMCcKIAogCi1faGVhZGVyID0gJzJQJworX2hlYWRlciA9ICduUCcKK19hbGlnbiA9ICcwbicKIGlmIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgogICAgIF9oZWFkZXIgPSAnMlAnICsgX2hlYWRlcgotX3ZoZWFkZXIgPSBfaGVhZGVyICsgJ1AnCisgICAgX2FsaWduID0gJzBQJworX3ZoZWFkZXIgPSBfaGVhZGVyICsgJ24nCiAKIGRlZiBjYWxjb2Jqc2l6ZShmbXQpOgotICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX2hlYWRlciArIGZtdCArICcwUCcpCisgICAgcmV0dXJuIHN0cnVjdC5jYWxjc2l6ZShfaGVhZGVyICsgZm10ICsgX2FsaWduKQogCiBkZWYgY2FsY3ZvYmpzaXplKGZtdCk6Ci0gICAgcmV0dXJuIHN0cnVjdC5jYWxjc2l6ZShfdmhlYWRlciArIGZtdCArICcwUCcpCisgICAgcmV0dXJuIHN0cnVjdC5jYWxjc2l6ZShfdmhlYWRlciArIGZtdCArIF9hbGlnbikKIAogCiBfVFBGTEFHU19IQVZFX0dDID0gMTw8MTQKQEAgLTExMzQsNyArMTIzMiw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3JpZ190eiA9PSBOb25lOgorICAgICAgICAgICAgICAgIGlmIG9yaWdfdHogaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1RaJ10KICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydUWiddID0gb3JpZ190egpAQCAtMTE3OSw0MSArMTI3NywzNSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNZW1vcnkgbGltaXQgJXIgdG9vIGxvdyB0byBiZSB1c2VmdWwnICUgKGxpbWl0LCkpCiAgICAgbWF4X21lbXVzZSA9IG1lbWxpbWl0CiAKLWRlZiBfbWVtb3J5X3dhdGNoZG9nKHN0YXJ0X2V2dCwgZmluaXNoX2V2dCwgcGVyaW9kPTEwLjApOgotICAgICIiIkEgZnVuY3Rpb24gd2hpY2ggcGVyaW9kaWNhbGx5IHdhdGNoZXMgdGhlIHByb2Nlc3MnIG1lbW9yeSBjb25zdW1wdGlvbgorY2xhc3MgX01lbW9yeVdhdGNoZG9nOgorICAgICIiIkFuIG9iamVjdCB3aGljaCBwZXJpb2RpY2FsbHkgd2F0Y2hlcyB0aGUgcHJvY2VzcycgbWVtb3J5IGNvbnN1bXB0aW9uCiAgICAgYW5kIHByaW50cyBpdCBvdXQuCiAgICAgIiIiCi0gICAgIyBYWFg6IGJlY2F1c2Ugb2YgdGhlIEdJTCwgYW5kIGJlY2F1c2UgdGhlIHZlcnkgbG9uZyBvcGVyYXRpb25zIHRlc3RlZAotICAgICMgaW4gbW9zdCBiaWdtZW0gdGVzdHMgYXJlIHVuaW50ZXJydXB0aWJsZSwgdGhlIGxvb3AgYmVsb3cgZ2V0cyB3b2tlbiB1cAotICAgICMgbXVjaCBsZXNzIG9mdGVuIHRoYW4gZXhwZWN0ZWQuCi0gICAgIyBUaGUgcG9sbGluZyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gcmF3IEMsIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMLAotICAgICMgYW5kIHB1c2ggcmVzdWx0cyBvbnRvIGFuIGFub255bW91cyBwaXBlLgotICAgIHRyeToKLSAgICAgICAgcGFnZV9zaXplID0gb3Muc3lzY29uZignU0NfUEFHRVNJWkUnKQotICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnByb2NmaWxlID0gJy9wcm9jL3twaWR9L3N0YXRtJy5mb3JtYXQocGlkPW9zLmdldHBpZCgpKQorICAgICAgICBzZWxmLnN0YXJ0ZWQgPSBGYWxzZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFX1NJWkUnKQotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgIHBhZ2Vfc2l6ZSA9IDQwOTYKLSAgICBwcm9jZmlsZSA9ICcvcHJvYy97cGlkfS9zdGF0bScuZm9ybWF0KHBpZD1vcy5nZXRwaWQoKSkKLSAgICB0cnk6Ci0gICAgICAgIGYgPSBvcGVuKHByb2NmaWxlLCAncmInKQotICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgIHdhcm5pbmdzLndhcm4oJy9wcm9jIG5vdCBhdmFpbGFibGUgZm9yIHN0YXRzOiB7fScuZm9ybWF0KGUpLAotICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuCi0gICAgd2l0aCBmOgotICAgICAgICBzdGFydF9ldnQuc2V0KCkKLSAgICAgICAgb2xkX2RhdGEgPSAtMQotICAgICAgICB3aGlsZSBub3QgZmluaXNoX2V2dC53YWl0KHBlcmlvZCk6Ci0gICAgICAgICAgICBmLnNlZWsoMCkKLSAgICAgICAgICAgIHN0YXRtID0gZi5yZWFkKCkuZGVjb2RlKCdhc2NpaScpCi0gICAgICAgICAgICBkYXRhID0gaW50KHN0YXRtLnNwbGl0KClbNV0pCi0gICAgICAgICAgICBpZiBkYXRhICE9IG9sZF9kYXRhOgotICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gZGF0YQotICAgICAgICAgICAgICAgIHByaW50KCIgLi4uIHByb2Nlc3MgZGF0YSBzaXplOiB7ZGF0YTouMWZ9RyIKLSAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChkYXRhPWRhdGEgKiBwYWdlX3NpemUgLyAoMTAyNCAqKiAzKSkpCisgICAgICAgICAgICBmID0gb3BlbihzZWxmLnByb2NmaWxlLCAncicpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCcvcHJvYyBub3QgYXZhaWxhYmxlIGZvciBzdGF0czoge30nLmZvcm1hdChlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCisgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHdhdGNoZG9nX3NjcmlwdCA9IGZpbmRmaWxlKCJtZW1vcnlfd2F0Y2hkb2cucHkiKQorICAgICAgICBzZWxmLm1lbV93YXRjaGRvZyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCB3YXRjaGRvZ19zY3JpcHRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49Ziwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuc3RhcnRlZCA9IFRydWUKKworICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnN0YXJ0ZWQ6CisgICAgICAgICAgICBzZWxmLm1lbV93YXRjaGRvZy50ZXJtaW5hdGUoKQorICAgICAgICAgICAgc2VsZi5tZW1fd2F0Y2hkb2cud2FpdCgpCisKIAogZGVmIGJpZ21lbXRlc3Qoc2l6ZSwgbWVtdXNlLCBkcnlfcnVuPVRydWUpOgogICAgICIiIkRlY29yYXRvciBmb3IgYmlnbWVtIHRlc3RzLgpAQCAtMTI0MCwyNyArMTMzMiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCBtZW1vcnk6ICUuMWZHIG1pbmltdW0gbmVlZGVkIgogICAgICAgICAgICAgICAgICAgICAlIChzaXplICogbWVtdXNlIC8gKDEwMjQgKiogMykpKQogCi0gICAgICAgICAgICBpZiByZWFsX21heF9tZW11c2UgYW5kIHZlcmJvc2UgYW5kIHRocmVhZGluZzoKKyAgICAgICAgICAgIGlmIHJlYWxfbWF4X21lbXVzZSBhbmQgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgICAgcHJpbnQoIiAuLi4gZXhwZWN0ZWQgcGVhayBtZW1vcnkgdXNlOiB7cGVhazouMWZ9RyIKICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHBlYWs9c2l6ZSAqIG1lbXVzZSAvICgxMDI0ICoqIDMpKSkKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgICAgICBzdGFydF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICAgICAgICAgIGZpbmlzaF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1fbWVtb3J5X3dhdGNoZG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHN0YXJ0X2V2dCwgZmluaXNoX2V2dCwgMC41KSkKLSAgICAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgICAgICAgICBzdGFydF9ldnQuc2V0KCkKKyAgICAgICAgICAgICAgICB3YXRjaGRvZyA9IF9NZW1vcnlXYXRjaGRvZygpCisgICAgICAgICAgICAgICAgd2F0Y2hkb2cuc3RhcnQoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ID0gTm9uZQorICAgICAgICAgICAgICAgIHdhdGNoZG9nID0gTm9uZQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgbWF4c2l6ZSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgdDoKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoX2V2dC5zZXQoKQotICAgICAgICAgICAgICAgICAgICB0LmpvaW4oKQorICAgICAgICAgICAgICAgIGlmIHdhdGNoZG9nOgorICAgICAgICAgICAgICAgICAgICB3YXRjaGRvZy5zdG9wKCkKIAogICAgICAgICB3cmFwcGVyLnNpemUgPSBzaXplCiAgICAgICAgIHdyYXBwZXIubWVtdXNlID0gbWVtdXNlCkBAIC0xMzQyLDYgKzE0MjcsMzMgQEAKICAgICByZXR1cm4gZ3VhcmRzLmdldChwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKS5sb3dlcigpLCBkZWZhdWx0KQogCiAKK2RlZiBub190cmFjaW5nKGZ1bmMpOgorICAgICIiIkRlY29yYXRvciB0byB0ZW1wb3JhcmlseSB0dXJuIG9mZiB0cmFjaW5nIGZvciB0aGUgZHVyYXRpb24gb2YgYSB0ZXN0LiIiIgorICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJyk6CisgICAgICAgIHJldHVybiBmdW5jCisgICAgZWxzZToKKyAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgb3JpZ2luYWxfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3lzLnNldHRyYWNlKG9yaWdpbmFsX3RyYWNlKQorICAgICAgICByZXR1cm4gd3JhcHBlcgorCisKK2RlZiByZWZjb3VudF90ZXN0KHRlc3QpOgorICAgICIiIkRlY29yYXRvciBmb3IgdGVzdHMgd2hpY2ggaW52b2x2ZSByZWZlcmVuY2UgY291bnRpbmcuCisKKyAgICBUbyBzdGFydCwgdGhlIGRlY29yYXRvciBkb2VzIG5vdCBydW4gdGhlIHRlc3QgaWYgaXMgbm90IHJ1biBieSBDUHl0aG9uLgorICAgIEFmdGVyIHRoYXQsIGFueSB0cmFjZSBmdW5jdGlvbiBpcyB1bnNldCBkdXJpbmcgdGhlIHRlc3QgdG8gcHJldmVudAorICAgIHVuZXhwZWN0ZWQgcmVmY291bnRzIGNhdXNlZCBieSB0aGUgdHJhY2UgZnVuY3Rpb24uCisKKyAgICAiIiIKKyAgICByZXR1cm4gbm9fdHJhY2luZyhjcHl0aG9uX29ubHkodGVzdCkpCisKKwogZGVmIF9maWx0ZXJfc3VpdGUoc3VpdGUsIHByZWQpOgogICAgICIiIlJlY3Vyc2l2ZWx5IGZpbHRlciB0ZXN0IGNhc2VzIGluIGEgc3VpdGUgYmFzZWQgb24gYSBwcmVkaWNhdGUuIiIiCiAgICAgbmV3dGVzdHMgPSBbXQpAQCAtMTM1NCw3ICsxNDY2LDYgQEAKICAgICAgICAgICAgICAgICBuZXd0ZXN0cy5hcHBlbmQodGVzdCkKICAgICBzdWl0ZS5fdGVzdHMgPSBuZXd0ZXN0cwogCi0KIGRlZiBfcnVuX3N1aXRlKHN1aXRlKToKICAgICAiIiJSdW4gdGVzdHMgZnJvbSBhIHVuaXR0ZXN0LlRlc3RTdWl0ZS1kZXJpdmVkIGNsYXNzLiIiIgogICAgIGlmIHZlcmJvc2U6CkBAIC0xNDAzLDcgKzE1MTQsNyBAQAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIGRvY3Rlc3QgZHJpdmVyLgogCi1kZWYgcnVuX2RvY3Rlc3QobW9kdWxlLCB2ZXJib3NpdHk9Tm9uZSk6CitkZWYgcnVuX2RvY3Rlc3QobW9kdWxlLCB2ZXJib3NpdHk9Tm9uZSwgb3B0aW9uZmxhZ3M9MCk6CiAgICAgIiIiUnVuIGRvY3Rlc3Qgb24gdGhlIGdpdmVuIG1vZHVsZS4gIFJldHVybiAoI2ZhaWx1cmVzLCAjdGVzdHMpLgogCiAgICAgSWYgb3B0aW9uYWwgYXJndW1lbnQgdmVyYm9zaXR5IGlzIG5vdCBzcGVjaWZpZWQgKG9yIGlzIE5vbmUpLCBwYXNzCkBAIC0xNDE4LDcgKzE1MjksNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHZlcmJvc2l0eSA9IE5vbmUKIAotICAgIGYsIHQgPSBkb2N0ZXN0LnRlc3Rtb2QobW9kdWxlLCB2ZXJib3NlPXZlcmJvc2l0eSkKKyAgICBmLCB0ID0gZG9jdGVzdC50ZXN0bW9kKG1vZHVsZSwgdmVyYm9zZT12ZXJib3NpdHksIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdzKQogICAgIGlmIGY6CiAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoIiVkIG9mICVkIGRvY3Rlc3RzIGZhaWxlZCIgJSAoZiwgdCkpCiAgICAgaWYgdmVyYm9zZToKQEAgLTE1NzYsMjggKzE2ODcsMTMgQEAKICAgICBUaGlzIHdpbGwgdHlwaWNhbGx5IGJlIHJ1biBvbiB0aGUgcmVzdWx0IG9mIHRoZSBjb21tdW5pY2F0ZSgpIG1ldGhvZAogICAgIG9mIGEgc3VicHJvY2Vzcy5Qb3BlbiBvYmplY3QuCiAgICAgIiIiCi0gICAgc3RkZXJyID0gcmUuc3ViKGJyIlxbXGQrIHJlZnNcXVxyP1xuPyQiLCBiIiIsIHN0ZGVycikuc3RyaXAoKQorICAgIHN0ZGVyciA9IHJlLnN1YihiciJcW1xkKyByZWZzXF1ccj9cbj8iLCBiIiIsIHN0ZGVycikuc3RyaXAoKQogICAgIHJldHVybiBzdGRlcnIKIAogZGVmIGFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAotICAgIHNldHRpbmdzIGluIHN5cy5mbGFncy4iIiIKLSAgICBmbGFnX29wdF9tYXAgPSB7Ci0gICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAotICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKLSAgICAgICAgJ2hhc2hfcmFuZG9taXphdGlvbic6ICdSJywKLSAgICAgICAgJ2lnbm9yZV9lbnZpcm9ubWVudCc6ICdFJywKLSAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKLSAgICAgICAgJ25vX3NpdGUnOiAnUycsCi0gICAgICAgICdvcHRpbWl6ZSc6ICdPJywKLSAgICAgICAgJ3ZlcmJvc2UnOiAndicsCi0gICAgfQotICAgIGFyZ3MgPSBbXQotICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6Ci0gICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKLSAgICAgICAgaWYgdiA+IDA6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyBvcHQgKiB2KQotICAgIHJldHVybiBhcmdzCisgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCisgICAgcmV0dXJuIHN1YnByb2Nlc3MuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgU3VwcG9ydCBmb3IgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgpAQCAtMTY4Nyw2ICsxNzgzLDQwIEBACiAgICAgbXNnID0gIlJlcXVpcmVzIGZ1bmN0aW9uYWwgc3ltbGluayBpbXBsZW1lbnRhdGlvbiIKICAgICByZXR1cm4gdGVzdCBpZiBvayBlbHNlIHVuaXR0ZXN0LnNraXAobXNnKSh0ZXN0KQogCitfY2FuX3hhdHRyID0gTm9uZQorZGVmIGNhbl94YXR0cigpOgorICAgIGdsb2JhbCBfY2FuX3hhdHRyCisgICAgaWYgX2Nhbl94YXR0ciBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIF9jYW5feGF0dHIKKyAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CisgICAgICAgIGNhbiA9IEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgdG1wX2ZwLCB0bXBfbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgVEVTVEZOICYgdGVtcGZpbGUgbWF5IHVzZSBkaWZmZXJlbnQgZmlsZSBzeXN0ZW1zIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgIyBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzCisgICAgICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKHRtcF9mcCwgYiJ1c2VyLnRlc3QiLCBiIiIpCisgICAgICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKKyAgICAgICAgICAgICAgICAgICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICBjYW4gPSBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNhbiA9IEZhbHNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICAgICAgdW5saW5rKHRtcF9uYW1lKQorICAgIF9jYW5feGF0dHIgPSBjYW4KKyAgICByZXR1cm4gY2FuCisKK2RlZiBza2lwX3VubGVzc194YXR0cih0ZXN0KToKKyAgICAiIiJTa2lwIGRlY29yYXRvciBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGZ1bmN0aW9uYWwgZXh0ZW5kZWQgYXR0cmlidXRlcyIiIgorICAgIG9rID0gY2FuX3hhdHRyKCkKKyAgICBtc2cgPSAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIKKyAgICByZXR1cm4gdGVzdCBpZiBvayBlbHNlIHVuaXR0ZXN0LnNraXAobXNnKSh0ZXN0KQorCiBkZWYgcGF0Y2godGVzdF9pbnN0YW5jZSwgb2JqZWN0X3RvX3BhdGNoLCBhdHRyX25hbWUsIG5ld192YWx1ZSk6CiAgICAgIiIiT3ZlcnJpZGUgJ29iamVjdF90b19wYXRjaCcuJ2F0dHJfbmFtZScgd2l0aCAnbmV3X3ZhbHVlJy4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CmluZGV4IDNmYWRiNTcuLjQyMzFmMzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKQEAgLTEsMjMgKzEsMjUgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGZyb20gX2xvY2FsZSBpbXBvcnQgKHNldGxvY2FsZSwgTENfQUxMLCBMQ19DVFlQRSwgTENfTlVNRVJJQywgbG9jYWxlY29udiwgRXJyb3IpCiB0cnk6CiAgICAgZnJvbSBfbG9jYWxlIGltcG9ydCAoUkFESVhDSEFSLCBUSE9VU0VQLCBubF9sYW5naW5mbykKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBubF9sYW5naW5mbyA9IE5vbmUKIAotaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgY29kZWNzCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKIGZyb20gcGxhdGZvcm0gaW1wb3J0IHVuYW1lCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKLWlmIHVuYW1lKClbMF0gPT0gIkRhcndpbiI6Ci0gICAgbWFqLCBtaW4sIG1pYyA9IFtpbnQocGFydCkgZm9yIHBhcnQgaW4gdW5hbWUoKVsyXS5zcGxpdCgiLiIpXQoraWYgdW5hbWUoKS5zeXN0ZW0gPT0gIkRhcndpbiI6CisgICAgbWFqLCBtaW4sIG1pYyA9IFtpbnQocGFydCkgZm9yIHBhcnQgaW4gdW5hbWUoKS5yZWxlYXNlLnNwbGl0KCIuIildCiAgICAgaWYgKG1haiwgbWluLCBtaWMpIDwgKDgsIDAsIDApOgogICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgibG9jYWxlIHN1cHBvcnQgYnJva2VuIGZvciBPUyBYIDwgMTAuNCIpCiAKIGNhbmRpZGF0ZV9sb2NhbGVzID0gWydlc19VWScsICdmcl9GUicsICdmaV9GSScsICdlc19DTycsICdwdF9QVCcsICdpdF9JVCcsCiAgICAgJ2V0X0VFJywgJ2VzX1BZJywgJ25vX05PJywgJ25sX05MJywgJ2x2X0xWJywgJ2VsX0dSJywgJ2JlX0JZJywgJ2ZyX0JFJywKICAgICAncm9fUk8nLCAncnVfVUEnLCAncnVfUlUnLCAnZXNfVkUnLCAnY2FfRVMnLCAnc2VfTk8nLCAnZXNfRUMnLCAnaWRfSUQnLAotICAgICdrYV9HRScsICdlc19DTCcsICdodV9IVScsICd3YV9CRScsICdsdF9MVCcsICdzbF9TSScsICdocl9IUicsICdlc19BUicsCisgICAgJ2thX0dFJywgJ2VzX0NMJywgJ3dhX0JFJywgJ2h1X0hVJywgJ2x0X0xUJywgJ3NsX1NJJywgJ2hyX0hSJywgJ2VzX0FSJywKICAgICAnZXNfRVMnLCAnb2NfRlInLCAnZ2xfRVMnLCAnYmdfQkcnLCAnaXNfSVMnLCAnbWtfTUsnLCAnZGVfQVQnLCAncHRfQlInLAogICAgICdkYV9ESycsICdubl9OTycsICdjc19DWicsICdkZV9MVScsICdlc19CTycsICdzcV9BTCcsICdza19TSycsICdmcl9DSCcsCiAgICAgJ2RlX0RFJywgJ3NyX1lVJywgJ2JyX0ZSJywgJ25sX0JFJywgJ3N2X0ZJJywgJ3BsX1BMJywgJ2ZyX0NBJywgJ2ZvX0ZPJywKQEAgLTI1LDYgKzI3LDMxIEBACiAgICAgJ2V1X0VTJywgJ3ZpX1ZOJywgJ2FmX1pBJywgJ25iX05PJywgJ2VuX0RLJywgJ3RnX1RKJywgJ2VuX1VTJywKICAgICAnZXNfRVMuSVNPODg1OS0xJywgJ2ZyX0ZSLklTTzg4NTktMTUnLCAncnVfUlUuS09JOC1SJywgJ2tvX0tSLmV1Y0tSJ10KIAorIyBJc3N1ZSAjMTM0NDE6IFNraXAgc29tZSBsb2NhbGVzIChlLmcuIGNzX0NaIGFuZCBodV9IVSkgb24gU29sYXJpcyB0bworIyB3b3JrYXJvdW5kIGEgbWJzdG93Y3MoKSBidWcuIEZvciBleGFtcGxlLCBvbiBTb2xhcmlzLCB0aGUgaHVfSFUgbG9jYWxlIHVzZXMKKyMgdGhlIGxvY2FsZSBlbmNvZGluZyBJU08tODg1OS0yLCB0aGUgdGhvdXNhdWRzIHNlcGFyYXRvciBpcyBiJ1x4QTAnIGFuZCBpdCBpcworIyBkZWNvZGVkIGFzIFUrMzAwMDAwMjAgKGFuIGludmFsaWQgY2hhcmFjdGVyKSBieSBtYnN0b3djcygpLgoraWYgc3lzLnBsYXRmb3JtID09ICdzdW5vczUnOgorICAgIG9sZF9sb2NhbGUgPSBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwpCisgICAgdHJ5OgorICAgICAgICBsb2NhbGVzID0gW10KKyAgICAgICAgZm9yIGxvYyBpbiBjYW5kaWRhdGVfbG9jYWxlczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIGxvYykKKyAgICAgICAgICAgIGV4Y2VwdCBFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlY29udigpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICBwcmludCgiV0FSTklORzogU2tpcCBsb2NhbGUgJXMgKGVuY29kaW5nICVzKTogWyVzXSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAlIChsb2MsIGVuY29kaW5nLCB0eXBlKGVyciksIGVycikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvY2FsZXMuYXBwZW5kKGxvYykKKyAgICAgICAgY2FuZGlkYXRlX2xvY2FsZXMgPSBsb2NhbGVzCisgICAgZmluYWxseToKKyAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBvbGRfbG9jYWxlKQorCiAjIFdvcmthcm91bmQgZm9yIE1TVkM2KGRlYnVnKSBjcmFzaCBidWcKIGlmICJNU0Mgdi4xMjAwIiBpbiBzeXMudmVyc2lvbjoKICAgICBkZWYgYWNjZXB0KGxvYyk6CkBAIC04Niw5ICsxMTMsMTAgQEAKICAgICAgICAgICAgICAgICBzZXRsb2NhbGUoTENfQ1RZUEUsIGxvYykKICAgICAgICAgICAgIGV4Y2VwdCBFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9ybWF0dGluZyA9IGxvY2FsZWNvbnYoKQogICAgICAgICAgICAgZm9yIGxjIGluICgiZGVjaW1hbF9wb2ludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidGhvdXNhbmRzX3NlcCIpOgotICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY190ZXN0ZXIoJ2xvY2FsZWNvbnYnLCBsb2NhbGVjb252KClbbGNdLCBsYywgbG9jKQorICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY190ZXN0ZXIoJ2xvY2FsZWNvbnYnLCBmb3JtYXR0aW5nW2xjXSwgbGMsIGxvYykKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG5sX2xhbmdpbmZvLCAibmxfbGFuZ2luZm8gaXMgbm90IGF2YWlsYWJsZSIpCiAgICAgZGVmIHRlc3RfbGNfbnVtZXJpY19iYXNpYyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIxNTllYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CkBAIC0wLDAgKzEsMjc5IEBACisiIiIKK1Rlc3Qgc3VpdGUgZm9yIF9vc3hfc3VwcG9ydDogc2hhcmVkIE9TIFggc3VwcG9ydCBmdW5jdGlvbnMuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IHRlc3Quc3VwcG9ydAorCitpbXBvcnQgX29zeF9zdXBwb3J0CisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJkYXJ3aW4iKSwgInJlcXVpcmVzIE9TIFgiKQorY2xhc3MgVGVzdF9PU1hTdXBwb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLnByb2dfbmFtZSA9ICdib2d1c19wcm9ncmFtX3h4eHgnCisgICAgICAgIHNlbGYudGVtcF9wYXRoX2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5nZXRjd2QoKSkKKyAgICAgICAgc2VsZi5lbnYgPSB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmVudi5fX2V4aXRfXykKKyAgICAgICAgZm9yIGN2IGluICgnQ0ZMQUdTJywgJ0xERkxBR1MnLCAnQ1BQRkxBR1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQVNFQ0ZMQUdTJywgJ0JMRFNIQVJFRCcsICdMRFNIQVJFRCcsICdDQycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NYWCcsICdQWV9DRkxBR1MnLCAnUFlfTERGTEFHUycsICdQWV9DUFBGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BZX0NPUkVfQ0ZMQUdTJyk6CisgICAgICAgICAgICBpZiBjdiBpbiBzZWxmLmVudjoKKyAgICAgICAgICAgICAgICBzZWxmLmVudi51bnNldChjdikKKworICAgIGRlZiBhZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoc2VsZiwgY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpOgorICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBpbml0aWFsIHZhbHVlcyBmb3IgYWxsIG1vZGlmaWVkIGNvbmZpZyB2YXJzCisgICAgICAgICMgYXJlIGFsc28gc2F2ZWQgd2l0aCBtb2RpZmllZCBrZXlzLgorICAgICAgICBleHBlY3RlZF92YXJzLnVwZGF0ZSgoJ19PU1hfU1VQUE9SVF9JTklUSUFMXycrIGssCisgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnNba10pIGZvciBrIGluIGNvbmZpZ192YXJzCisgICAgICAgICAgICAgICAgICAgIGlmIGNvbmZpZ192YXJzW2tdICE9IGV4cGVjdGVkX3ZhcnNba10pCisKKyAgICBkZWYgdGVzdF9fZmluZF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmVudlsnUEFUSCddOgorICAgICAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IHNlbGYuZW52WydQQVRIJ10gKyAnOicKKyAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IHNlbGYuZW52WydQQVRIJ10gKyBvcy5wYXRoLmFic3BhdGgoc2VsZi50ZW1wX3BhdGhfZGlyKQorICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKHNlbGYucHJvZ19uYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShfb3N4X3N1cHBvcnQuX2ZpbmRfZXhlY3V0YWJsZShzZWxmLnByb2dfbmFtZSkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQudW5saW5rLCBzZWxmLnByb2dfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYucHJvZ19uYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIjIS9iaW4vc2hcbi9iaW4vZWNobyBPS1xuIikKKyAgICAgICAgb3MuY2htb2Qoc2VsZi5wcm9nX25hbWUsIHN0YXQuU19JUldYVSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2dfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX2ZpbmRfZXhlY3V0YWJsZShzZWxmLnByb2dfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9fcmVhZF9vdXRwdXQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZW52WydQQVRIJ106CisgICAgICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gc2VsZi5lbnZbJ1BBVEgnXSArICc6JworICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gc2VsZi5lbnZbJ1BBVEgnXSArIG9zLnBhdGguYWJzcGF0aChzZWxmLnRlbXBfcGF0aF9kaXIpCisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsoc2VsZi5wcm9nX25hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQudW5saW5rLCBzZWxmLnByb2dfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYucHJvZ19uYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIjIS9iaW4vc2hcbi9iaW4vZWNobyBFeHBlY3RlZE91dHB1dFxuIikKKyAgICAgICAgb3MuY2htb2Qoc2VsZi5wcm9nX25hbWUsIHN0YXQuU19JUldYVSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRXhwZWN0ZWRPdXRwdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVhZF9vdXRwdXQoc2VsZi5wcm9nX25hbWUpKQorCisgICAgZGVmIHRlc3RfX2ZpbmRfYnVpbGRfdG9vbChzZWxmKToKKyAgICAgICAgb3V0ID0gX29zeF9zdXBwb3J0Ll9maW5kX2J1aWxkX3Rvb2woJ2NjJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG91dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NjIG5vdCBmb3VuZCAtIGNoZWNrIHhjb2RlLXNlbGVjdCcpCisKKyAgICBkZWYgdGVzdF9fZ2V0X3N5c3RlbV92ZXJzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUocGxhdGZvcm0ubWFjX3ZlcigpWzBdLnN0YXJ0c3dpdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX2dldF9zeXN0ZW1fdmVyc2lvbigpKSkKKworICAgIGRlZiB0ZXN0X19yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2djYy10ZXN0IC1wdGhyZWFkcycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nIC1wdGhyZWFkcycsCisgICAgICAgIH0KKyAgICAgICAgY3YgPSAnQ0MnCisgICAgICAgIG5ld3ZhbHVlID0gJ2NsYW5nIC1wdGhyZWFkcycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9zYXZlX21vZGlmaWVkX3ZhbHVlKGNvbmZpZ192YXJzLCBjdiwgbmV3dmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhwZWN0ZWRfdmFycywgY29uZmlnX3ZhcnMpCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhjb25maWdfdmFycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLCBjb25maWdfdmFycykKKworICAgIGRlZiB0ZXN0X19zYXZlX21vZGlmaWVkX3ZhbHVlKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2djYy10ZXN0IC1wdGhyZWFkcycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nIC1wdGhyZWFkcycsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisgICAgICAgIGN2ID0gJ0NDJworICAgICAgICBuZXd2YWx1ZSA9ICdjbGFuZyAtcHRocmVhZHMnCisgICAgICAgIF9vc3hfc3VwcG9ydC5fc2F2ZV9tb2RpZmllZF92YWx1ZShjb25maWdfdmFycywgY3YsIG5ld3ZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsIGNvbmZpZ192YXJzKQorCisgICAgZGVmIHRlc3RfX3NhdmVfbW9kaWZpZWRfdmFsdWVfdW5jaGFuZ2VkKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2djYy10ZXN0IC1wdGhyZWFkcycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IGNvbmZpZ192YXJzLmNvcHkoKQorICAgICAgICBjdiA9ICdDQycKKyAgICAgICAgbmV3dmFsdWUgPSAnZ2NjLXRlc3QgLXB0aHJlYWRzJworICAgICAgICBfb3N4X3N1cHBvcnQuX3NhdmVfbW9kaWZpZWRfdmFsdWUoY29uZmlnX3ZhcnMsIGN2LCBuZXd2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLCBjb25maWdfdmFycykKKworICAgIGRlZiB0ZXN0X19zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgcGxhdGZvcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGF0Zm9ybS5tYWNfdmVyKClbMF0uc3BsaXQoJy4nKSA+PSBbJzEwJywgJzQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoKSkKKworICAgIGRlZiB0ZXN0X19maW5kX2FwcHJvcHJpYXRlX2NvbXBpbGVyKHNlbGYpOgorICAgICAgICBjb21waWxlcnMgPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAoJ2djYy10ZXN0JywgJ2k2ODYtYXBwbGUtZGFyd2luMTEtbGx2bS1nY2MtNC4yJyksCisgICAgICAgICAgICAgICAgICAgICAgICAoJ2NsYW5nJywgJ2NsYW5nIHZlcnNpb24gMy4xJyksCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdnY2MtdGVzdCAtcHRocmVhZHMnLAorICAgICAgICAnQ1hYJzogJ2NjKystdGVzdCcsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy10ZXN0IC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLXRlc3QgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZyAtcHRocmVhZHMnLAorICAgICAgICAnQ1hYJzogJ2NsYW5nKysnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdjbGFuZyAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2NsYW5nIC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKworICAgICAgICBzdWZmaXggPSAoJzonICsgc2VsZi5lbnZbJ1BBVEgnXSkgaWYgc2VsZi5lbnZbJ1BBVEgnXSBlbHNlICcnCisgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBvcy5wYXRoLmFic3BhdGgoc2VsZi50ZW1wX3BhdGhfZGlyKSArIHN1ZmZpeAorICAgICAgICBmb3IgY19uYW1lLCBjX291dHB1dCBpbiBjb21waWxlcnM6CisgICAgICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKGNfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQudW5saW5rLCBjX25hbWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oY19uYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSgiIyEvYmluL3NoXG4vYmluL2VjaG8gIiArIGNfb3V0cHV0KQorICAgICAgICAgICAgb3MuY2htb2QoY19uYW1lLCBzdGF0LlNfSVJXWFUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX2ZpbmRfYXBwcm9wcmlhdGVfY29tcGlsZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9fcmVtb3ZlX3VuaXZlcnNhbF9mbGFncyhzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAgICAnLAorICAgICAgICAnTERGTEFHUyc6ICcgICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuICAnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgICAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAgICAtZycsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX3VuaXZlcnNhbF9mbGFncygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X19yZW1vdmVfdW5zdXBwb3J0ZWRfYXJjaHMoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKworICAgICAgICBzdWZmaXggPSAoJzonICsgc2VsZi5lbnZbJ1BBVEgnXSkgaWYgc2VsZi5lbnZbJ1BBVEgnXSBlbHNlICcnCisgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBvcy5wYXRoLmFic3BhdGgoc2VsZi50ZW1wX3BhdGhfZGlyKSArIHN1ZmZpeAorICAgICAgICBjX25hbWUgPSAnY2xhbmcnCisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsoY19uYW1lKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgY19uYW1lKQorICAgICAgICAjIGV4aXQgc3RhdHVzIDI1NSBtZWFucyBubyBQUEMgc3VwcG9ydCBpbiB0aGlzIGNvbXBpbGVyIGNoYWluCisgICAgICAgIHdpdGggb3BlbihjX25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiMhL2Jpbi9zaFxuZXhpdCAyNTUiKQorICAgICAgICBvcy5jaG1vZChjX25hbWUsIHN0YXQuU19JUldYVSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX3Vuc3VwcG9ydGVkX2FyY2hzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfX292ZXJyaWRlX2FsbF9hcmNocyhzZWxmKToKKyAgICAgICAgc2VsZi5lbnZbJ0FSQ0hGTEFHUyddID0gJy1hcmNoIHg4Nl82NCcKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zICAgICAtYXJjaCB4ODZfNjQnLAorICAgICAgICAnTERGTEFHUyc6ICcgICAgLWcgLWFyY2ggeDg2XzY0JywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgIC1nIC1hcmNoIHg4Nl82NCcsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAtaXN5c3Jvb3QgJworICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcgLWFyY2ggeDg2XzY0JywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9vdmVycmlkZV9hbGxfYXJjaHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9fY2hlY2tfZm9yX3VuYXZhaWxhYmxlX3NkayhzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMS5zZGsnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJworICAgICAgICAgICAgICAgICAgICAgICAgJyAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAgJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJyAtZycsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fY2hlY2tfZm9yX3VuYXZhaWxhYmxlX3NkaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X2dldF9wbGF0Zm9ybV9vc3goc2VsZik6CisgICAgICAgICMgTm90ZSwgZ2V0X3BsYXRmb3JtX29zeCBpcyBjdXJyZW50bHkgdGVzdGVkIG1vcmUgZXh0ZW5zaXZlbHkKKyAgICAgICAgIyBpbmRpcmVjdGx5IGJ5IHRlc3Rfc3lzY29uZmlnIGFuZCB0ZXN0X2Rpc3R1dGlscworICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xLnNkaycsCisgICAgICAgICdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnOiAnMTAuNicsCisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goY29uZmlnX3ZhcnMsICcgJywgJyAnLCAnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdtYWNvc3gnLCAnMTAuNicsICdmYXQnKSwgcmVzdWx0KQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RfT1NYU3VwcG9ydCkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2FiYy5weQppbmRleCBkODZmOTdjLi42NTNjOTU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FiYy5weQpAQCAtMTAsMTQgKzEwLDcgQEAKIGZyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAogCiAKLWNsYXNzIFRlc3RBQkModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfYWJzdHJhY3RtZXRob2RfYmFzaWNzKHNlbGYpOgotICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCi0gICAgICAgIGRlZiBmb28oc2VsZik6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKLSAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcwotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iKSkKK2NsYXNzIFRlc3RMZWdhY3lBUEkodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYWJzdHJhY3Rwcm9wZXJ0eV9iYXNpY3Moc2VsZik6CiAgICAgICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQpAQCAtMjksMTAgKzIyLDEyIEBACiAgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICAgICAgICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQogICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQogICAgICAgICBjbGFzcyBEKEMpOgogICAgICAgICAgICAgQHByb3BlcnR5CiAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vLCAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoRC5mb28sICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKIAogICAgIGRlZiB0ZXN0X2Fic3RyYWN0Y2xhc3NtZXRob2RfYmFzaWNzKHNlbGYpOgogICAgICAgICBAYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QKQEAgLTQwLDcgKzM1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBiYXIoY2xzKTogcGFzcwotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQogCiAgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZApAQCAtNTgsNyArNTMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiBiYXIoKTogcGFzcwotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQogCiAgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2QKQEAgLTk4LDYgKzkzLDE2MyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGKSAgIyBiZWNhdXNlIGJhciBpcyBhYnN0cmFjdCBub3cKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2Fic3RyYWN0KEYpKQogCisKK2NsYXNzIFRlc3RBQkModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RtZXRob2RfYmFzaWNzKHNlbGYpOgorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oc2VsZik6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKyAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iKSkKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0cHJvcGVydHlfYmFzaWNzKHNlbGYpOgorICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQorCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgQEMuZm9vLmdldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIHN1cGVyKCkuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbywgMykKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0Y2xhc3NtZXRob2RfYmFzaWNzKHNlbGYpOgorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICBkZWYgZm9vKGNscyk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIGRlZiBiYXIoY2xzKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCisKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKGNscyk6IHJldHVybiBjbHMuX19uYW1lX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKGNscyk6IHJldHVybiBzdXBlcigpLmZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5mb28oKSwgJ0QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mb28oKSwgJ0QnKQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RzdGF0aWNtZXRob2RfYmFzaWNzKHNlbGYpOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGJhcigpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKKworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKCk6IHJldHVybiAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oKTogcmV0dXJuIDQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChELmZvbygpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mb28oKSwgNCkKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2ludGVncmF0aW9uKHNlbGYpOgorICAgICAgICBmb3IgYWJzdHJhY3R0aGluZyBpbiBbYWJjLmFic3RyYWN0bWV0aG9kLCBhYmMuYWJzdHJhY3Rwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kXToKKyAgICAgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgICAgICBAYWJzdHJhY3R0aGluZworICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHBhc3MgICMgYWJzdHJhY3QKKyAgICAgICAgICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzICAjIGNvbmNyZXRlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19hYnN0cmFjdG1ldGhvZHNfXywgeyJmb28ifSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykgICMgYmVjYXVzZSBmb28gaXMgYWJzdHJhY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2Fic3RyYWN0KEMpKQorICAgICAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzICAjIGNvbmNyZXRlIG92ZXJyaWRlIG9mIGNvbmNyZXRlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuX19hYnN0cmFjdG1ldGhvZHNfXywgeyJmb28ifSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCkgICMgYmVjYXVzZSBmb28gaXMgc3RpbGwgYWJzdHJhY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2Fic3RyYWN0KEQpKQorICAgICAgICAgICAgY2xhc3MgRShEKToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEUuX19hYnN0cmFjdG1ldGhvZHNfXywgc2V0KCkpCisgICAgICAgICAgICBFKCkgICMgbm93IGZvbyBpcyBjb25jcmV0ZSwgdG9vCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzYWJzdHJhY3QoRSkpCisgICAgICAgICAgICBjbGFzcyBGKEUpOgorICAgICAgICAgICAgICAgIEBhYnN0cmFjdHRoaW5nCisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcyAgIyBhYnN0cmFjdCBvdmVycmlkZSBvZiBjb25jcmV0ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGLl9fYWJzdHJhY3RtZXRob2RzX18sIHsiYmFyIn0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYpICAjIGJlY2F1c2UgYmFyIGlzIGFic3RyYWN0IG5vdworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzYWJzdHJhY3QoRikpCisKKyAgICBkZWYgdGVzdF9kZXNjcmlwdG9yc193aXRoX2Fic3RyYWN0bWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgICAgICBAZm9vLnNldHRlcgorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBDLmZvby5nZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQpCisgICAgICAgIGNsYXNzIEUoRCk6CisgICAgICAgICAgICBARC5mb28uc2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIHZhbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFKCkuZm9vLCAzKQorICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHByb3BlcnR5J3MgX19pc2Fic3RyYWN0bWV0aG9kX18gZGVzY3JpcHRvciBkb2VzIHRoZQorICAgICAgICAjIHJpZ2h0IHRoaW5nIHdoZW4gcHJlc2VudGVkIHdpdGggYSB2YWx1ZSB0aGF0IGZhaWxzIHRydXRoIHRlc3Rpbmc6CisgICAgICAgIGNsYXNzIE5vdEJvb2wob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkKKyAgICAgICAgICAgIF9fbGVuX18gPSBfX25vbnplcm9fXworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgRihDKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgYmFyLl9faXNhYnN0cmFjdG1ldGhvZF9fID0gTm90Qm9vbCgpCisgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoYmFyKQorCisKKyAgICBkZWYgdGVzdF9jdXN0b21kZXNjcmlwdG9yc193aXRoX2Fic3RyYWN0bWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZnZXQsIGZzZXQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fZmdldCA9IGZnZXQKKyAgICAgICAgICAgICAgICBzZWxmLl9mc2V0ID0gZnNldAorICAgICAgICAgICAgZGVmIGdldHRlcihzZWxmLCBjYWxsYWJsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlc2NyaXB0b3IoY2FsbGFibGUsIHNlbGYuX2ZnZXQpCisgICAgICAgICAgICBkZWYgc2V0dGVyKHNlbGYsIGNhbGxhYmxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVzY3JpcHRvcihzZWxmLl9mZ2V0LCBjYWxsYWJsZSkKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIF9faXNhYnN0cmFjdG1ldGhvZF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoZ2V0YXR0cihzZWxmLl9mZ2V0LCAnX19pc2Fic3RyYWN0bWV0aG9kX18nLCBGYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdldGF0dHIoc2VsZi5fZnNldCwgJ19faXNhYnN0cmFjdG1ldGhvZF9fJywgRmFsc2UpKQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBARGVzY3JpcHRvcgorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIDMKKyAgICAgICAgICAgIEBmb28uc2V0dGVyCisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIHZhbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgQEMuZm9vLmdldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIHN1cGVyKCkuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCkKKyAgICAgICAgY2xhc3MgRShEKToKKyAgICAgICAgICAgIEBELmZvby5zZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEUuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorCiAgICAgZGVmIHRlc3RfbWV0YWNsYXNzX2FiYyhzZWxmKToKICAgICAgICAgIyBNZXRhY2xhc3NlcyBjYW4gYmUgQUJDcywgdG9vLgogICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CkBAIC0xMjEsMTEgKzI3MywxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQiwgKEEsKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShiLCBBKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoYiwgKEEsKSkKLSAgICAgICAgQS5yZWdpc3RlcihCKQorICAgICAgICBCMSA9IEEucmVnaXN0ZXIoQikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQiwgQSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIChBLCkpKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYiwgQSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIChBLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQjEsIEIpCiAgICAgICAgIGNsYXNzIEMoQik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGMgPSBDKCkKQEAgLTEzNCw2ICsyODcsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCAoQSwpKQogCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfYXNfY2xhc3NfZGVjbyhzZWxmKToKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBAQS5yZWdpc3RlcgorICAgICAgICBjbGFzcyBCKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGIgPSBCKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQiwgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIChBLCkpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYiwgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIChBLCkpCisgICAgICAgIEBBLnJlZ2lzdGVyCisgICAgICAgIGNsYXNzIEMoQik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGMgPSBDKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIChBLCkpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIChBLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQywgQS5yZWdpc3RlcihDKSkKKwogICAgIGRlZiB0ZXN0X2lzaW5zdGFuY2VfaW52YWxpZGF0aW9uKHNlbGYpOgogICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Fic3RyYWN0X251bWJlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2Fic3RyYWN0X251bWJlcnMucHkKaW5kZXggMmEzOTZjZC4uMjUzZTZmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weQpAQCAtMTQsNiArMTQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGludCg3KS5yZWFsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGludCg3KS5pbWFnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGludCg3KS5jb25qdWdhdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtNywgaW50KC03KS5jb25qdWdhdGUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBpbnQoNykubnVtZXJhdG9yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGludCg3KS5kZW5vbWluYXRvcikKIApAQCAtMjQsNiArMjUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcuMywgZmxvYXQoNy4zKS5yZWFsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGZsb2F0KDcuMykuaW1hZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LjMsIGZsb2F0KDcuMykuY29uanVnYXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTcuMywgZmxvYXQoLTcuMykuY29uanVnYXRlKCkpCiAKICAgICBkZWYgdGVzdF9jb21wbGV4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoY29tcGxleCwgUmVhbCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKaW5kZXggZWU0YWQ2Yi4uYWQ2ZjYxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgcnVuX3VuaXR0ZXN0LCBURVNURk4sIGNhcHR1cmVkX3N0ZG91dCwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOLCB1bmxpbmsKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCiBpbXBvcnQgaW8KQEAgLTIwNywxMSArMjA3LDggQEAKICAgICAgICAgYiArPSBiJ0NPTU0nICsgc3RydWN0LnBhY2soJz5MaGxoaExMJywgMTgsIDAsIDAsIDAsIDAsIDAsIDApCiAgICAgICAgIGIgKz0gYidTU05EJyArIHN0cnVjdC5wYWNrKCc+TCcsIDgpICsgYidceDAwJyAqIDgKICAgICAgICAgYiArPSBiJ01BUksnICsgc3RydWN0LnBhY2soJz5MaEInLCAzLCAxLCAxKQotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CiAgICAgICAgICAgICBmID0gYWlmYy5vcGVuKGlvLkJ5dGVzSU8oYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzLmdldHZhbHVlKCksCi0gICAgICAgICAgICAnV2FybmluZzogTUFSSyBjaHVuayBjb250YWlucyBvbmx5IDAgbWFya2VycyBpbnN0ZWFkIG9mIDFcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXRtYXJrZXJzKCksIE5vbmUpCiAKICAgICBkZWYgdGVzdF9yZWFkX2NvbW1fa2x1ZGdlX2NvbXBuYW1lX2V2ZW4oc2VsZik6CkBAIC0yMTksOSArMjE2LDggQEAKICAgICAgICAgYiArPSBiJ0NPTU0nICsgc3RydWN0LnBhY2soJz5MaGxoaExMJywgMTgsIDAsIDAsIDAsIDAsIDAsIDApCiAgICAgICAgIGIgKz0gYidOT05FJyArIHN0cnVjdC5wYWNrKCdCJywgNCkgKyBiJ2V2ZW4nICsgYidceDAwJwogICAgICAgICBiICs9IGInU1NORCcgKyBzdHJ1Y3QucGFjaygnPkwnLCA4KSArIGInXHgwMCcgKiA4Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKToKICAgICAgICAgICAgIGYgPSBhaWZjLm9wZW4oaW8uQnl0ZXNJTyhiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0Y29tcG5hbWUoKSwgYidldmVuJykKIAogICAgIGRlZiB0ZXN0X3JlYWRfY29tbV9rbHVkZ2VfY29tcG5hbWVfb2RkKHNlbGYpOgpAQCAtMjI5LDkgKzIyNSw4IEBACiAgICAgICAgIGIgKz0gYidDT01NJyArIHN0cnVjdC5wYWNrKCc+TGhsaGhMTCcsIDE4LCAwLCAwLCAwLCAwLCAwLCAwKQogICAgICAgICBiICs9IGInTk9ORScgKyBzdHJ1Y3QucGFjaygnQicsIDMpICsgYidvZGQnCiAgICAgICAgIGIgKz0gYidTU05EJyArIHN0cnVjdC5wYWNrKCc+TCcsIDgpICsgYidceDAwJyAqIDgKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpOgogICAgICAgICAgICAgZiA9IGFpZmMub3Blbihpby5CeXRlc0lPKGIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgJ1dhcm5pbmc6IGJhZCBDT01NIGNodW5rIHNpemVcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXRjb21wbmFtZSgpLCBiJ29kZCcpCiAKICAgICBkZWYgdGVzdF93cml0ZV9wYXJhbXNfcmFpc2VzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKaW5kZXggMjJjMjZjYy4uYzA2Yzk0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CkBAIC0xMzIzLDIwICsxMzIzLDIxIEBACiBjbGFzcyBUZXN0UGFyc2VyRGVmYXVsdDQyKFBhcnNlclRlc3RDYXNlKToKICAgICAiIiJUZXN0IGFjdGlvbnMgd2l0aCBhIHBhcnNlci1sZXZlbCBkZWZhdWx0IG9mIDQyIiIiCiAKLSAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKGFyZ3VtZW50X2RlZmF1bHQ9NDIsIHZlcnNpb249JzEuMCcpCisgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhhcmd1bWVudF9kZWZhdWx0PTQyKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJyksCiAgICAgICAgIFNpZygnZm9vJywgbmFyZ3M9Jz8nKSwKICAgICAgICAgU2lnKCdiYXInLCBuYXJncz0nKicpLAogICAgICAgICBTaWcoJy0tYmF6JywgYWN0aW9uPSdzdG9yZV90cnVlJyksCiAgICAgXQogICAgIGZhaWx1cmVzID0gWycteCddCiAgICAgc3VjY2Vzc2VzID0gWwotICAgICAgICAoJycsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9NDIpKSwKLSAgICAgICAgKCdhJywgTlMoZm9vPSdhJywgYmFyPTQyLCBiYXo9NDIpKSwKLSAgICAgICAgKCdhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej00MikpLAotICAgICAgICAoJy0tYmF6JywgTlMoZm9vPTQyLCBiYXI9NDIsIGJhej1UcnVlKSksCi0gICAgICAgICgnYSAtLWJheicsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PVRydWUpKSwKLSAgICAgICAgKCctLWJheiBhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej1UcnVlKSksCisgICAgICAgICgnJywgTlMoZm9vPTQyLCBiYXI9NDIsIGJhej00MiwgdmVyc2lvbj00MikpLAorICAgICAgICAoJ2EnLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej00MiwgdmVyc2lvbj00MikpLAorICAgICAgICAoJ2EgYicsIE5TKGZvbz0nYScsIGJhcj1bJ2InXSwgYmF6PTQyLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnLS1iYXonLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PVRydWUsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCdhIC0tYmF6JywgTlMoZm9vPSdhJywgYmFyPTQyLCBiYXo9VHJ1ZSwgdmVyc2lvbj00MikpLAorICAgICAgICAoJy0tYmF6IGEgYicsIE5TKGZvbz0nYScsIGJhcj1bJ2InXSwgYmF6PVRydWUsIHZlcnNpb249NDIpKSwKICAgICBdCiAKIApAQCAtMjkyNywxMCArMjkyOCw5IEBACiAgICAgICAgICAgICAgICAgcGFyc2VyX3RleHQgPSBzZmlsZS5nZXR2YWx1ZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdCh0ZXN0ZXIsIHBhcnNlcl90ZXh0KQogCi0gICAgICAgICMgYWRkIHRlc3RzIGZvciB7Zm9ybWF0LHByaW50fV97dXNhZ2UsaGVscCx2ZXJzaW9ufQorICAgICAgICAjIGFkZCB0ZXN0cyBmb3Ige2Zvcm1hdCxwcmludH1fe3VzYWdlLGhlbHB9CiAgICAgICAgIGZvciBmdW5jX3N1ZmZpeCwgc3RkX25hbWUgaW4gWygndXNhZ2UnLCAnc3Rkb3V0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaGVscCcsICdzdGRvdXQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd2ZXJzaW9uJywgJ3N0ZGVycicpXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWxwJywgJ3N0ZG91dCcpXToKICAgICAgICAgICAgIEFkZFRlc3RzKGNscywgZnVuY19zdWZmaXgsIHN0ZF9uYW1lKQogCiBiYXNlcyA9IFRlc3RDYXNlLApAQCAtMjk0MSw4ICsyOTQxLDkgQEAKICAgICAiIiJNYWtlIHN1cmUgdGhhdCBhcmd1bWVudCBoZWxwIGFsaWducyB3aGVuIG9wdGlvbnMgYXJlIGxvbmdlciIiIgogCiAgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgZGVzY3JpcHRpb249J0RFU0NSSVBUSU9OJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nRVBJTE9HJywgdmVyc2lvbj0nMC4xJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nRVBJTE9HJykKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpLAogICAgICAgICBTaWcoJy14JywgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nWCBIRUxQJyksCiAgICAgICAgIFNpZygnLS15JywgaGVscD0nWSBIRUxQJyksCiAgICAgICAgIFNpZygnZm9vJywgaGVscD0nRk9PIEhFTFAnKSwKQEAgLTI5NzcsOCArMjk3OCw5IEBACiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgYXJndW1lbnQgaGVscCBhbGlnbnMgd2hlbiBvcHRpb25zIGFyZSBsb25nZXIiIiIKIAogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsIGRlc2NyaXB0aW9uPSdERVNDUklQVElPTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycsIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycpCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScwLjEnKSwKICAgICAgICAgU2lnKCcteCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J1ggSEVMUCcpLAogICAgICAgICBTaWcoJy0teScsIGhlbHA9J1kgSEVMUCcpLAogICAgICAgICBTaWcoJ2ZvbycsIGhlbHA9J0ZPTyBIRUxQJyksCkBAIC0zMTQ1LDkgKzMxNDcsOSBAQAogY2xhc3MgVGVzdEhlbHBXcmFwcGluZ0xvbmdOYW1lcyhIZWxwVGVzdENhc2UpOgogICAgICIiIk1ha2Ugc3VyZSB0aGF0IHRleHQgYWZ0ZXIgbG9uZyBuYW1lcyBzdGFydHMgb24gdGhlIG5leHQgbGluZSIiIgogCi0gICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyh1c2FnZT0nVVNBR0UnLCBkZXNjcmlwdGlvbj0gJ0QgRCcgKiAzMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249J1YgVicqMzApCisgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyh1c2FnZT0nVVNBR0UnLCBkZXNjcmlwdGlvbj0gJ0QgRCcgKiAzMCkKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249J1YgVicgKiAzMCksCiAgICAgICAgIFNpZygnLXgnLCBtZXRhdmFyPSdYJyAqIDI1LCBoZWxwPSdYSCBYSCcgKiAyMCksCiAgICAgICAgIFNpZygneScsIG1ldGF2YXI9J3knICogMjUsIGhlbHA9J1lIIFlIJyAqIDIwKSwKICAgICBdCkBAIC0zNzUwLDggKzM3NTIsOSBAQAogY2xhc3MgVGVzdEhlbHBWZXJzaW9uT3B0aW9uYWwoSGVscFRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoYXQgdGhlIC0tdmVyc2lvbiBhcmd1bWVudCBjYW4gYmUgc3VwcHJlc3NlZCBoZWxwIG1lc3NhZ2VzIiIiCiAKLSAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCB2ZXJzaW9uPScxLjAnKQorICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycpCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKSwKICAgICAgICAgU2lnKCctLWZvbycsIGhlbHA9J2ZvbyBoZWxwJyksCiAgICAgICAgIFNpZygnc3BhbScsIGhlbHA9J3NwYW0gaGVscCcpLAogICAgIF0KQEAgLTM5ODQsOCArMzk4Nyw4IEBACiBjbGFzcyBUZXN0SGVscFN1YnBhcnNlcnNPcmRlcmluZyhIZWxwVGVzdENhc2UpOgogICAgICIiIlRlc3Qgb3JkZXJpbmcgb2Ygc3ViY29tbWFuZHMgaW4gaGVscCBtYXRjaGVzIHRoZSBjb2RlIiIiCiAgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdkaXNwbGF5IHNvbWUgc3ViY29tbWFuZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj0nMC4xJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdkaXNwbGF5IHNvbWUgc3ViY29tbWFuZHMnKQorICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScwLjEnKV0KIAogICAgIHN1YnBhcnNlcnNfc2lnbmF0dXJlcyA9IFtTaWcobmFtZT1uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiAoJ2EnLCAnYicsICdjJywgJ2QnLCAnZScpXQpAQCAtNDAxMyw4ICs0MDE2LDggQEAKIGNsYXNzIFRlc3RIZWxwU3VicGFyc2Vyc1dpdGhIZWxwT3JkZXJpbmcoSGVscFRlc3RDYXNlKToKICAgICAiIiJUZXN0IG9yZGVyaW5nIG9mIHN1YmNvbW1hbmRzIGluIGhlbHAgbWF0Y2hlcyB0aGUgY29kZSIiIgogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJykKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gW1NpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyldCiAKICAgICBzdWJjb21tYW5kX2RhdGEgPSAoKCdhJywgJ2Egc3ViY29tbWFuZCBoZWxwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICgnYicsICdiIHN1YmNvbW1hbmQgaGVscCcpLApAQCAtNDA1Miw2ICs0MDU1LDM3IEBACiAgICAgICAgICcnJwogCiAKKworY2xhc3MgVGVzdEhlbHBNZXRhdmFyVHlwZUZvcm1hdHRlcihIZWxwVGVzdENhc2UpOgorICAgICIiIiIiIgorCisgICAgZGVmIGN1c3RvbV90eXBlKHN0cmluZyk6CisgICAgICAgIHJldHVybiBzdHJpbmcKKworICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsIGRlc2NyaXB0aW9uPSdkZXNjcmlwdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyKQorICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbU2lnKCdhJywgdHlwZT1pbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnKCctYicsIHR5cGU9Y3VzdG9tX3R5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnKCctYycsIHR5cGU9ZmxvYXQsIG1ldGF2YXI9J1NPTUUgRkxPQVQnKV0KKyAgICBhcmd1bWVudF9ncm91cF9zaWduYXR1cmVzID0gW10KKyAgICB1c2FnZSA9ICcnJ1wKKyAgICAgICAgdXNhZ2U6IFBST0cgWy1oXSBbLWIgY3VzdG9tX3R5cGVdIFstYyBTT01FIEZMT0FUXSBpbnQKKyAgICAgICAgJycnCisgICAgaGVscCA9IHVzYWdlICsgJycnXAorCisgICAgICAgIGRlc2NyaXB0aW9uCisKKyAgICAgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6CisgICAgICAgICAgaW50CisKKyAgICAgICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAgICAgIC1oLCAtLWhlbHAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAgICAgLWIgY3VzdG9tX3R5cGUKKyAgICAgICAgICAtYyBTT01FIEZMT0FUCisgICAgICAgICcnJworICAgIHZlcnNpb24gPSAnJworCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBPcHRpb25hbC9Qb3NpdGlvbmFsIGNvbnN0cnVjdG9yIHRlc3RzCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQyODAsMzIgKzQzMTQsMjggQEAKICAgICAgICAgICAgIHBhcnNlci5mb3JtYXRfaGVscCgpLAogICAgICAgICAgICAgc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzX3N0ci5zcGxpdCgpKS5zdGRvdXQpCiAKLSAgICBkZWYgYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChzZWxmLCBwYXJzZXIsIGFyZ3Nfc3RyKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHBhcnNlci5mb3JtYXRfdmVyc2lvbigpLAotICAgICAgICAgICAgc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzX3N0ci5zcGxpdCgpKS5zdGRlcnIpCi0KICAgICBkZWYgYXNzZXJ0QXJndW1lbnRQYXJzZXJFcnJvcihzZWxmLCBwYXJzZXIsICphcmdzKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvciwgcGFyc2VyLnBhcnNlX2FyZ3MsIGFyZ3MpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcih2ZXJzaW9uPScxLjAnKQorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcigpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRIZWxwRXhpdChwYXJzZXIsICctaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRIZWxwRXhpdChwYXJzZXIsICctLWhlbHAnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLXYnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLS12ZXJzaW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHBhcnNlciwgJ2Zvcm1hdF92ZXJzaW9uJykKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fZm9ybWF0KHNlbGYpOgotICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUFAnLCB2ZXJzaW9uPSclKHByb2cpcyAzLjUnKQorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUFAnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSclKHByb2cpcyAzLjUnKQogICAgICAgICBtc2cgPSBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIFsnLXYnXSkuc3RkZXJyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BQUCAzLjVcbicsIG1zZykKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fbm9faGVscChzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoYWRkX2hlbHA9RmFsc2UsIHZlcnNpb249JzEuMCcpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLWgnKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLS1oZWxwJykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy12JykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy0tdmVyc2lvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2FjdGlvbihzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nWFhYJykKQEAgLTQzMjUsMTIgKzQzNTUsMTMgQEAKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXgnLCBhY3Rpb249J2hlbHAnKQogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCcteScsIGFjdGlvbj0ndmVyc2lvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRIZWxwRXhpdChwYXJzZXIsICcteCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICcteScpCiAgICAgICAgIHNlbGYuYXNzZXJ0QXJndW1lbnRQYXJzZXJFcnJvcihwYXJzZXIsICctdicpCiAgICAgICAgIHNlbGYuYXNzZXJ0QXJndW1lbnRQYXJzZXJFcnJvcihwYXJzZXIsICctLXZlcnNpb24nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAgICAgZGVmIHRlc3RfaGVscF92ZXJzaW9uX2V4dHJhX2FyZ3VtZW50cyhzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIodmVyc2lvbj0nMS4wJykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKQogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCcteCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3knKQogCkBAIC00MzQyLDggKzQzNzMsNyBAQAogICAgICAgICAgICAgICAgIGZvcm1hdCA9ICclcyAlJXMgJXMnICUgKHByZWZpeCwgc3VmZml4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgZm9ybWF0ICUgJy1oJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRIZWxwRXhpdChwYXJzZXIsIGZvcm1hdCAlICctLWhlbHAnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgZm9ybWF0ICUgJy12JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsIGZvcm1hdCAlICctLXZlcnNpb24nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHBhcnNlciwgJ2Zvcm1hdF92ZXJzaW9uJykKIAogCiAjID09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQzOTgsNyArNDQyOCw3IEBACiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnKQogICAgICAgICBzdHJpbmcgPSAoCiAgICAgICAgICAgICAiQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUsICIKLSAgICAgICAgICAgICJ2ZXJzaW9uPU5vbmUsIGZvcm1hdHRlcl9jbGFzcz0lciwgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLCAiCisgICAgICAgICAgICAiZm9ybWF0dGVyX2NsYXNzPSVyLCBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsICIKICAgICAgICAgICAgICJhZGRfaGVscD1UcnVlKSIgJSBhcmdwYXJzZS5IZWxwRm9ybWF0dGVyKQogICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKHBhcnNlciwgc3RyaW5nKQogCkBAIC00NDQyLDcgKzQ0NzIsNyBAQAogICAgIGRlZiBfdGVzdF9tb2R1bGVfZW5jb2Rpbmcoc2VsZiwgcGF0aCk6CiAgICAgICAgIHBhdGgsIF8gPSBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpCiAgICAgICAgIHBhdGggKz0gIi5weSIKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1dGY4JykgYXMgZjoKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1dGYtOCcpIGFzIGY6CiAgICAgICAgICAgICBmLnJlYWQoKQogCiAgICAgZGVmIHRlc3RfYXJncGFyc2VfbW9kdWxlX2VuY29kaW5nKHNlbGYpOgpAQCAtNDQ4NCw2ICs0NTE0LDY3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoKQogCisjID09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgTWVzc2FnZUNvbnRlbnRFcnJvciB0ZXN0cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NsYXNzIFRlc3RNZXNzYWdlQ29udGVudEVycm9yKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfYXJndW1lbnRfbmFtZV9pbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgdXNhZ2U9JycpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JlcV9wb3MnLCB0eXBlPXN0cikKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXJlcV9vcHQnLCB0eXBlPWludCwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnbmVlZF9vbmUnLCB0eXBlPXN0ciwgbmFyZ3M9JysnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICduZWVkX29uZScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJ215WGFyZ3VtZW50J10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX29wdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAnbmVlZF9vbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWydteVhhcmd1bWVudCcsICctcmVxX29wdD0xJ10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAncmVxX29wdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAnbmVlZF9vbmUnKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWxfb3B0aW9uYWxfbm90X2luX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT0nJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncmVxX3BvcycsIHR5cGU9c3RyKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlcV9vcHQnLCB0eXBlPWludCwgcmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vcHRfb3B0JywgdHlwZT1ib29sLCBuYXJncz0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoW10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX29wdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAnb3B0X29wdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJy0tcmVxX29wdD0xJ10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAncmVxX29wdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAnb3B0X29wdCcpCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9wb3NpdGlvbmFsX25vdF9pbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgdXNhZ2U9JycpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JlcV9wb3MnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdvcHRpb25hbF9wb3NpdGlvbmFsJywgbmFyZ3M9Jz8nLCBkZWZhdWx0PSdlZ2dzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ29wdGlvbmFsX3Bvc2l0aW9uYWwnKQorCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIENoZWNrIHRoYXQgdGhlIHR5cGUgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgb25jZQogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQ3ODIsMTMgKzQ4NzMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChpdGVtcyksIHNvcnRlZChhcmdwYXJzZS5fX2FsbF9fKSkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgICMgc2lsZW5jZSB3YXJuaW5ncyBhYm91dCB2ZXJzaW9uIGFyZ3VtZW50IC0gdGhlc2UgYXJlIGV4cGVjdGVkCi0gICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKAotICAgICAgICAgICAgKCdUaGUgInZlcnNpb24iIGFyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIGRlcHJlY2F0ZWQuJywKLSAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpLAotICAgICAgICAgICAgKCdUaGUgKGZvcm1hdHxwcmludClfdmVyc2lvbiBtZXRob2QgaXMgZGVwcmVjYXRlZCcsCi0gICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogICAgICMgUmVtb3ZlIGdsb2JhbCByZWZlcmVuY2VzIHRvIGF2b2lkIGxvb2tpbmcgbGlrZSB3ZSBoYXZlIHJlZmxlYWtzLgogICAgIFJGaWxlLnNlZW4gPSB7fQogICAgIFdGaWxlLnNlZW4gPSBzZXQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKaW5kZXggZTI2ZTlhZC4uNTQ0YzJjZSAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CkBAIC0xNiw2ICsxNiwxMyBAQAogaW1wb3J0IGFycmF5CiBmcm9tIGFycmF5IGltcG9ydCBfYXJyYXlfcmVjb25zdHJ1Y3RvciBhcyBhcnJheV9yZWNvbnN0cnVjdG9yCiAKK3RyeToKKyAgICAjIFRyeSB0byBkZXRlcm1pbmUgYXZhaWxhYmlsaXR5IG9mIGxvbmcgbG9uZyBpbmRlcGVuZGVudGx5CisgICAgIyBvZiB0aGUgYXJyYXkgbW9kdWxlIHVuZGVyIHRlc3QKKyAgICBzdHJ1Y3QuY2FsY3NpemUoJ0BxJykKKyAgICBoYXZlX2xvbmdfbG9uZyA9IFRydWUKK2V4Y2VwdCBzdHJ1Y3QuZXJyb3I6CisgICAgaGF2ZV9sb25nX2xvbmcgPSBGYWxzZQogCiBjbGFzcyBBcnJheVN1YmNsYXNzKGFycmF5LmFycmF5KToKICAgICBwYXNzCkBAIC0yNiw2ICszMyw4IEBACiAKIHRlc3RzID0gW10gIyBsaXN0IHRvIGFjY3VtdWxhdGUgYWxsIHRlc3RzCiB0eXBlY29kZXMgPSAidWJCaEhpSWxMZmQiCitpZiBoYXZlX2xvbmdfbG9uZzoKKyAgICB0eXBlY29kZXMgKz0gJ3FRJwogCiBjbGFzcyBCYWRDb25zdHJ1Y3RvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yMDksMTAgKzIxOCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpWzFdLCBsZW4oYSkpCiAKICAgICBkZWYgdGVzdF9ieXRlc3dhcChzZWxmKToKLSAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgaWYgc2VsZi50eXBlY29kZSA9PSAndSc6CisgICAgICAgICAgICBleGFtcGxlID0gJ1xVMDAxMDAxMDAnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGFtcGxlID0gc2VsZi5leGFtcGxlCisgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBleGFtcGxlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuYnl0ZXN3YXAsIDQyKQogICAgICAgICBpZiBhLml0ZW1zaXplIGluICgxLCAyLCA0LCA4KToKLSAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgICAgICBiID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgZXhhbXBsZSkKICAgICAgICAgICAgIGIuYnl0ZXN3YXAoKQogICAgICAgICAgICAgaWYgYS5pdGVtc2l6ZT09MToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCkBAIC0yNzIsNiArMjg1LDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEueCwgYi54KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGEpLCB0eXBlKGIpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICBkYXRhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICBvcmdpdCA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhvcmdpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKG9yZ2l0KSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSkpCisKKyAgICAgICAgaWYgbGVuKGRhdGEpOgorICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKVsxOl0pCisKICAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CiAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCiAgICAgICAgIGEuaW5zZXJ0KDAsIHNlbGYuZXhhbXBsZVswXSkKQEAgLTk5MSwxNCArMTAxOCwxNCBAQAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZl93aXRoX2J1ZmZlcihzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnNFBpJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnUG4yUGknKQogICAgICAgICBidWZmZXJfc2l6ZSA9IGEuYnVmZmVyX2luZm8oKVsxXSAqIGEuaXRlbXNpemUKICAgICAgICAgc3VwcG9ydC5jaGVja19zaXplb2Yoc2VsZiwgYSwgYmFzZXNpemUgKyBidWZmZXJfc2l6ZSkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZl93aXRob3V0X2J1ZmZlcihzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUpCi0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUoJzRQaScpCisgICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUoJ1BuMlBpJykKICAgICAgICAgc3VwcG9ydC5jaGVja19zaXplb2Yoc2VsZiwgYSwgYmFzZXNpemUpCiAKIApAQCAtMTAxOCw2ICsxMDQ1LDE2IEBACiAgICAgbWluaXRlbXNpemUgPSAyCiAKICAgICBkZWYgdGVzdF91bmljb2RlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgY3R5cGVzCisgICAgICAgICAgICBzaXplb2Zfd2NoYXIgPSBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX3djaGFyKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzaXplb2Zfd2NoYXIgPSAyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNpemVvZl93Y2hhciA9IDQKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFycmF5LmFycmF5LCAnYicsICdmb28nKQogCiAgICAgICAgIGEgPSBhcnJheS5hcnJheSgndScsICdceGEwXHhjMlx1MTIzNCcpCkBAIC0xMDI3LDYgKzEwNjQsNyBAQAogICAgICAgICBhLmZyb211bmljb2RlKCdceDExYWJjXHhmZlx1MTIzNCcpCiAgICAgICAgIHMgPSBhLnRvdW5pY29kZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgJ1x4YTBceGMyXHUxMjM0IFx4MTFhYmNceGZmXHUxMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLml0ZW1zaXplLCBzaXplb2Zfd2NoYXIpCiAKICAgICAgICAgcyA9ICdceDAwPSJcJ2FcXGJceDgwXHhmZlx1MDAwMFx1MDAwMVx1MTIzNCcKICAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgcykKQEAgLTEyMTgsNiArMTI1NiwxOCBAQAogICAgIG1pbml0ZW1zaXplID0gNAogdGVzdHMuYXBwZW5kKFVuc2lnbmVkTG9uZ1Rlc3QpCiAKK0B1bml0dGVzdC5za2lwSWYobm90IGhhdmVfbG9uZ19sb25nLCAnbmVlZCBsb25nIGxvbmcgc3VwcG9ydCcpCitjbGFzcyBMb25nTG9uZ1Rlc3QoU2lnbmVkTnVtYmVyVGVzdCk6CisgICAgdHlwZWNvZGUgPSAncScKKyAgICBtaW5pdGVtc2l6ZSA9IDgKK3Rlc3RzLmFwcGVuZChMb25nTG9uZ1Rlc3QpCisKK0B1bml0dGVzdC5za2lwSWYobm90IGhhdmVfbG9uZ19sb25nLCAnbmVlZCBsb25nIGxvbmcgc3VwcG9ydCcpCitjbGFzcyBVbnNpZ25lZExvbmdMb25nVGVzdChVbnNpZ25lZE51bWJlclRlc3QpOgorICAgIHR5cGVjb2RlID0gJ1EnCisgICAgbWluaXRlbXNpemUgPSA4Cit0ZXN0cy5hcHBlbmQoVW5zaWduZWRMb25nTG9uZ1Rlc3QpCisKIGNsYXNzIEZQVGVzdChOdW1iZXJUZXN0KToKICAgICBleGFtcGxlID0gWy00Mi4wLCAwLCA0MiwgMWU1LCAtMWUxMF0KICAgICBzbWFsbGVyZXhhbXBsZSA9IFstNDIuMCwgMCwgNDIsIDFlNSwgLTJlMTBdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CmluZGV4IDI4ODcwOTIuLmE4ODUzYzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CkBAIC0xLDYgKzEsMTAgQEAKLWltcG9ydCBzeXMsIHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYXN0CitpbXBvcnQgd2Vha3JlZgorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZGVmIHRvX3R1cGxlKHQpOgogICAgIGlmIHQgaXMgTm9uZSBvciBpc2luc3RhbmNlKHQsIChzdHIsIGludCwgY29tcGxleCkpOgpAQCAtNTIsNiArNTYsOSBAQAogICAgICJ3aGlsZSB2OnBhc3MiLAogICAgICMgSWYKICAgICAiaWYgdjpwYXNzIiwKKyAgICAjIFdpdGgKKyAgICAid2l0aCB4IGFzIHk6IHBhc3MiLAorICAgICJ3aXRoIHggYXMgeSwgeiBhcyBxOiBwYXNzIiwKICAgICAjIFJhaXNlCiAgICAgInJhaXNlIEV4Y2VwdGlvbignc3RyaW5nJykiLAogICAgICMgVHJ5RXhjZXB0CkBAIC0xOTEsNiArMTk4LDkgQEAKICAgICBkZWYgdGVzdF9BU1Rfb2JqZWN0cyhzZWxmKToKICAgICAgICAgeCA9IGFzdC5BU1QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX2ZpZWxkcywgKCkpCisgICAgICAgIHguZm9vYmFyID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZvb2JhciwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfX1siZm9vYmFyIl0sIDQyKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICAgeC52YXJhcmcKQEAgLTE5OSw2ICsyMDksMTcgQEAKICAgICAgICAgICAgICMgIl9hc3QuQVNUIGNvbnN0cnVjdG9yIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMiCiAgICAgICAgICAgICBhc3QuQVNUKDIpCiAKKyAgICBkZWYgdGVzdF9BU1RfZ2FyYmFnZV9jb2xsZWN0aW9uKHNlbGYpOgorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgcGFzcworICAgICAgICBhID0gYXN0LkFTVCgpCisgICAgICAgIGEueCA9IFgoKQorICAgICAgICBhLnguYSA9IGEKKyAgICAgICAgcmVmID0gd2Vha3JlZi5yZWYoYS54KQorICAgICAgICBkZWwgYQorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZWYoKSkKKwogICAgIGRlZiB0ZXN0X3NuaXBwZXRzKHNlbGYpOgogICAgICAgICBmb3IgaW5wdXQsIG91dHB1dCwga2luZCBpbiAoKGV4ZWNfdGVzdHMsIGV4ZWNfcmVzdWx0cywgImV4ZWMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaW5nbGVfdGVzdHMsIHNpbmdsZV9yZXN1bHRzLCAic2luZ2xlIiksCkBAIC0zOTAsNyArNDExLDkgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgMS8wCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgYXN0LnBhcnNlLCByIidcVSciKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBhc3QubGl0ZXJhbF9ldmFsKHIiJ1xVJyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlLmV4Y2VwdGlvbi5fX2NvbnRleHRfXykKIAogICAgIGRlZiB0ZXN0X2R1bXAoc2VsZik6CiAgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoJ3NwYW0oZWdncywgImFuZCBjaGVlc2UiKScpCkBAIC01MDQsOCArNTI3LDQxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCJpbnZhbGlkIGludGVnZXIgdmFsdWU6IE5vbmUiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAogCitjbGFzcyBBU1RWYWxpZGF0b3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgbW9kKHNlbGYsIG1vZCwgbXNnPU5vbmUsIG1vZGU9ImV4ZWMiLCAqLCBleGM9VmFsdWVFcnJvcik6CisgICAgICAgIG1vZC5saW5lbm8gPSBtb2QuY29sX29mZnNldCA9IDAKKyAgICAgICAgYXN0LmZpeF9taXNzaW5nX2xvY2F0aW9ucyhtb2QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXhjKSBhcyBjbToKKyAgICAgICAgICAgIGNvbXBpbGUobW9kLCAiPHRlc3Q+IiwgbW9kZSkKKyAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtc2csIHN0cihjbS5leGNlcHRpb24pKQorCisgICAgZGVmIGV4cHIoc2VsZiwgbm9kZSwgbXNnPU5vbmUsICosIGV4Yz1WYWx1ZUVycm9yKToKKyAgICAgICAgbW9kID0gYXN0Lk1vZHVsZShbYXN0LkV4cHIobm9kZSldKQorICAgICAgICBzZWxmLm1vZChtb2QsIG1zZywgZXhjPWV4YykKKworICAgIGRlZiBzdG10KHNlbGYsIHN0bXQsIG1zZz1Ob25lKToKKyAgICAgICAgbW9kID0gYXN0Lk1vZHVsZShbc3RtdF0pCisgICAgICAgIHNlbGYubW9kKG1vZCwgbXNnKQorCisgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBtID0gYXN0LkludGVyYWN0aXZlKFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKQorICAgICAgICBzZWxmLm1vZChtLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIsICJzaW5nbGUiKQorICAgICAgICBtID0gYXN0LkV4cHJlc3Npb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYubW9kKG0sICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IiwgImV2YWwiKQorCisgICAgZGVmIF9jaGVja19hcmd1bWVudHMoc2VsZiwgZmFjLCBjaGVjayk6CisgICAgICAgIGRlZiBhcmd1bWVudHMoYXJncz1Ob25lLCB2YXJhcmc9Tm9uZSwgdmFyYXJnYW5ub3RhdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGt3b25seWFyZ3M9Tm9uZSwga3dhcmc9Tm9uZSwga3dhcmdhbm5vdGF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHM9Tm9uZSwga3dfZGVmYXVsdHM9Tm9uZSk6CisgICAgICAgICAgICBpZiBhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYXJncyA9IFtdCisgICAgICAgICAgICBpZiBrd29ubHlhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAga3dvbmx5YXJncyA9IFtdCisgICAgICAgICAgICBpZiBkZWZhdWx0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlZmF1bHRzID0gW10KKyAgICAgICAgICAgIGlmIGt3X2RlZmF1bHRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAga3dfZGVmYXVsdHMgPSBbXQorICAgICAgICAgICAgYXJncyA9IGFzdC5hcmd1bWVudHMoYXJncywgdmFyYXJnLCB2YXJhcmdhbm5vdGF0aW9uLCBrd29ubHlhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmcsIGt3YXJnYW5ub3RhdGlvbiwgZGVmYXVsdHMsIGt3X2RlZmF1bHRzKQorICAgICAgICAgICAgcmV0dXJuIGZhYyhhcmdzKQorICAgICAgICBhcmdzID0gW2FzdC5hcmcoIngiLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhhcmdzPWFyZ3MpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyh2YXJhcmdhbm5vdGF0aW9uPWFzdC5OdW0oMykpLAorICAgICAgICAgICAgICAidmFyYXJnYW5ub3RhdGlvbiBidXQgbm8gdmFyYXJnIikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKHZhcmFyZ2Fubm90YXRpb249YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIHZhcmFyZz0ieCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3b25seWFyZ3M9YXJncyksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3YXJnYW5ub3RhdGlvbj1hc3QuTnVtKDQyKSksCisgICAgICAgICAgICAgICAgICAgICAgICJrd2FyZ2Fubm90YXRpb24gYnV0IG5vIGt3YXJnIikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3YXJnYW5ub3RhdGlvbj1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmc9IngiKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoZGVmYXVsdHM9W2FzdC5OdW0oMyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1vcmUgcG9zaXRpb25hbCBkZWZhdWx0cyB0aGFuIGFyZ3MiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dfZGVmYXVsdHM9W2FzdC5OdW0oNCldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCBvZiBrd29ubHlhcmdzIGlzIG5vdCB0aGUgc2FtZSBhcyBrd19kZWZhdWx0cyIpCisgICAgICAgIGFyZ3MgPSBbYXN0LmFyZygieCIsIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpXQorICAgICAgICBjaGVjayhhcmd1bWVudHMoYXJncz1hcmdzLCBkZWZhdWx0cz1bYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBhcmdzID0gW2FzdC5hcmcoImEiLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKSwKKyAgICAgICAgICAgICAgICBhc3QuYXJnKCJiIiwgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSldCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd29ubHlhcmdzPWFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGt3X2RlZmF1bHRzPVtOb25lLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9mdW5jZGVmKHNlbGYpOgorICAgICAgICBhID0gYXN0LmFyZ3VtZW50cyhbXSwgTm9uZSwgTm9uZSwgW10sIE5vbmUsIE5vbmUsIFtdLCBbXSkKKyAgICAgICAgZiA9IGFzdC5GdW5jdGlvbkRlZigieCIsIGEsIFtdLCBbXSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGYsICJlbXB0eSBib2R5IG9uIEZ1bmN0aW9uRGVmIikKKyAgICAgICAgZiA9IGFzdC5GdW5jdGlvbkRlZigieCIsIGEsIFthc3QuUGFzcygpXSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorICAgICAgICBzZWxmLnN0bXQoZiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW2FzdC5QYXNzKCldLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGYsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIGZhYyhhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhc3QuRnVuY3Rpb25EZWYoIngiLCBhcmdzLCBbYXN0LlBhc3MoKV0sIFtdLCBOb25lKQorICAgICAgICBzZWxmLl9jaGVja19hcmd1bWVudHMoZmFjLCBzZWxmLnN0bXQpCisKKyAgICBkZWYgdGVzdF9jbGFzc2RlZihzZWxmKToKKyAgICAgICAgZGVmIGNscyhiYXNlcz1Ob25lLCBrZXl3b3Jkcz1Ob25lLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwKKyAgICAgICAgICAgICAgICBib2R5PU5vbmUsIGRlY29yYXRvcl9saXN0PU5vbmUpOgorICAgICAgICAgICAgaWYgYmFzZXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBiYXNlcyA9IFtdCisgICAgICAgICAgICBpZiBrZXl3b3JkcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGtleXdvcmRzID0gW10KKyAgICAgICAgICAgIGlmIGJvZHkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBib2R5ID0gW2FzdC5QYXNzKCldCisgICAgICAgICAgICBpZiBkZWNvcmF0b3JfbGlzdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlY29yYXRvcl9saXN0ID0gW10KKyAgICAgICAgICAgIHJldHVybiBhc3QuQ2xhc3NEZWYoIm15Y2xhc3MiLCBiYXNlcywga2V5d29yZHMsIHN0YXJhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsIGJvZHksIGRlY29yYXRvcl9saXN0KQorICAgICAgICBzZWxmLnN0bXQoY2xzKGJhc2VzPVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGtleXdvcmRzPVthc3Qua2V5d29yZCgieCIsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKHN0YXJhcmdzPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhrd2FyZ3M9YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGJvZHk9W10pLCAiZW1wdHkgYm9keSBvbiBDbGFzc0RlZiIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoYm9keT1bTm9uZV0pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5zdG10KGNscyhkZWNvcmF0b3JfbGlzdD1bYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2RlbGV0ZShzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5EZWxldGUoW10pLCAiZW1wdHkgdGFyZ2V0cyBvbiBEZWxldGUiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkRlbGV0ZShbTm9uZV0pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5EZWxldGUoW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgRGVsIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYXNzaWduKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbXSwgYXN0Lk51bSgzKSksICJlbXB0eSB0YXJnZXRzIG9uIEFzc2lnbiIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFtOb25lXSwgYXN0Lk51bSgzKSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0sIGFzdC5OdW0oMykpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYXVnYXNzaWduKHNlbGYpOgorICAgICAgICBhdWcgPSBhc3QuQXVnQXNzaWduKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIGFzdC5BZGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXVnLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBhdWcgPSBhc3QuQXVnQXNzaWduKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhc3QuQWRkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChhdWcsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2ZvcihzZWxmKToKKyAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIHkgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHAgPSBhc3QuUGFzcygpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIHksIFtdLCBbXSksICJlbXB0eSBib2R5IG9uIEZvciIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIHksIFtwXSwgW10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksIFtwXSwgW10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBlID0gYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIHksIFtlXSwgW10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIHksIFtwXSwgW2VdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfd2hpbGUoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuV2hpbGUoYXN0Lk51bSgzKSwgW10sIFtdKSwgImVtcHR5IGJvZHkgb24gV2hpbGUiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldoaWxlKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbYXN0LlBhc3MoKV0sIFtdKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaGlsZShhc3QuTnVtKDMpLCBbYXN0LlBhc3MoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfaWYoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuSWYoYXN0Lk51bSgzKSwgW10sIFtdKSwgImVtcHR5IGJvZHkgb24gSWYiKQorICAgICAgICBpID0gYXN0LklmKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbYXN0LlBhc3MoKV0sIFtdKQorICAgICAgICBzZWxmLnN0bXQoaSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBpID0gYXN0LklmKGFzdC5OdW0oMyksIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KGksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgaSA9IGFzdC5JZihhc3QuTnVtKDMpLCBbYXN0LlBhc3MoKV0sCisgICAgICAgICAgICAgICAgICAgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pCisgICAgICAgIHNlbGYuc3RtdChpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF93aXRoKHNlbGYpOgorICAgICAgICBwID0gYXN0LlBhc3MoKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW10sIFtwXSksICJlbXB0eSBpdGVtcyBvbiBXaXRoIikKKyAgICAgICAgaSA9IGFzdC53aXRoaXRlbShhc3QuTnVtKDMpLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW2ldLCBbXSksICJlbXB0eSBib2R5IG9uIFdpdGgiKQorICAgICAgICBpID0gYXN0LndpdGhpdGVtKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW2ldLCBbcF0pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGkgPSBhc3Qud2l0aGl0ZW0oYXN0Lk51bSgzKSwgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtpXSwgW3BdKSwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3JhaXNlKHNlbGYpOgorICAgICAgICByID0gYXN0LlJhaXNlKE5vbmUsIGFzdC5OdW0oMykpCisgICAgICAgIHNlbGYuc3RtdChyLCAiUmFpc2Ugd2l0aCBjYXVzZSBidXQgbm8gZXhjZXB0aW9uIikKKyAgICAgICAgciA9IGFzdC5SYWlzZShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KHIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgciA9IGFzdC5SYWlzZShhc3QuTnVtKDQpLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KHIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3RyeShzZWxmKToKKyAgICAgICAgcCA9IGFzdC5QYXNzKCkKKyAgICAgICAgdCA9IGFzdC5UcnkoW10sIFtdLCBbXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgImVtcHR5IGJvZHkgb24gVHJ5IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0sIFtdLCBbXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIFtdLCBbXSwgW10pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiVHJ5IGhhcyBuZWl0aGVyIGV4Y2VwdCBoYW5kbGVycyBub3IgZmluYWxib2R5IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBbXSwgW3BdLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiVHJ5IGhhcyBvcmVsc2UgYnV0IG5vIGV4Y2VwdCBoYW5kbGVycyIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgW2FzdC5FeGNlcHRIYW5kbGVyKE5vbmUsICJ4IiwgW10pXSwgW10sIFtdKQorICAgICAgICBzZWxmLnN0bXQodCwgImVtcHR5IGJvZHkgb24gRXhjZXB0SGFuZGxlciIpCisgICAgICAgIGUgPSBbYXN0LkV4Y2VwdEhhbmRsZXIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksICJ5IiwgW3BdKV0KKyAgICAgICAgc2VsZi5zdG10KGFzdC5UcnkoW3BdLCBlLCBbXSwgW10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGUgPSBbYXN0LkV4Y2VwdEhhbmRsZXIoTm9uZSwgIngiLCBbcF0pXQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIGUsIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgZSwgW3BdLCBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Fzc2VydChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NlcnQoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIE5vbmUpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBhc3NydCA9IGFzdC5Bc3NlcnQoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXNzcnQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2ltcG9ydChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5JbXBvcnQoW10pLCAiZW1wdHkgbmFtZXMgb24gSW1wb3J0IikKKworICAgIGRlZiB0ZXN0X2ltcG9ydGZyb20oc2VsZik6CisgICAgICAgIGltcCA9IGFzdC5JbXBvcnRGcm9tKE5vbmUsIFthc3QuYWxpYXMoIngiLCBOb25lKV0sIC00MikKKyAgICAgICAgc2VsZi5zdG10KGltcCwgImxldmVsIGxlc3MgdGhhbiAtMSIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuSW1wb3J0RnJvbShOb25lLCBbXSwgMCksICJlbXB0eSBuYW1lcyBvbiBJbXBvcnRGcm9tIikKKworICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5HbG9iYWwoW10pLCAiZW1wdHkgbmFtZXMgb24gR2xvYmFsIikKKworICAgIGRlZiB0ZXN0X25vbmxvY2FsKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0Lk5vbmxvY2FsKFtdKSwgImVtcHR5IG5hbWVzIG9uIE5vbmxvY2FsIikKKworICAgIGRlZiB0ZXN0X2V4cHIoc2VsZik6CisgICAgICAgIGUgPSBhc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGUsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Jvb2xvcChzZWxmKToKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJsZXNzIHRoYW4gMiB2YWx1ZXMiKQorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFthc3QuTnVtKDMpXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJsZXNzIHRoYW4gMiB2YWx1ZXMiKQorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFthc3QuTnVtKDQpLCBOb25lXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFthc3QuTnVtKDQpLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIHNlbGYuZXhwcihiLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF91bmFyeW9wKHNlbGYpOgorICAgICAgICB1ID0gYXN0LlVuYXJ5T3AoYXN0Lk5vdCgpLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5leHByKHUsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2xhbWJkYShzZWxmKToKKyAgICAgICAgYSA9IGFzdC5hcmd1bWVudHMoW10sIE5vbmUsIE5vbmUsIFtdLCBOb25lLCBOb25lLCBbXSwgW10pCisgICAgICAgIHNlbGYuZXhwcihhc3QuTGFtYmRhKGEsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIGZhYyhhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhc3QuTGFtYmRhKGFyZ3MsIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpCisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3VtZW50cyhmYWMsIHNlbGYuZXhwcikKKworICAgIGRlZiB0ZXN0X2lmZXhwKHNlbGYpOgorICAgICAgICBsID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBzID0gYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgZm9yIGFyZ3MgaW4gKHMsIGwsIGwpLCAobCwgcywgbCksIChsLCBsLCBzKToKKyAgICAgICAgICAgIHNlbGYuZXhwcihhc3QuSWZFeHAoKmFyZ3MpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgorICAgICAgICBkID0gYXN0LkRpY3QoW10sIFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGQsICJzYW1lIG51bWJlciBvZiBrZXlzIGFzIHZhbHVlcyIpCisgICAgICAgIGQgPSBhc3QuRGljdChbTm9uZV0sIFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGQsICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBkID0gYXN0LkRpY3QoW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldLCBbTm9uZV0pCisgICAgICAgIHNlbGYuZXhwcihkLCAiTm9uZSBkaXNhbGxvd2VkIikKKworICAgIGRlZiB0ZXN0X3NldChzZWxmKToKKyAgICAgICAgc2VsZi5leHByKGFzdC5TZXQoW05vbmVdKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHMgPSBhc3QuU2V0KFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIHNlbGYuZXhwcihzLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgX2NoZWNrX2NvbXByZWhlbnNpb24oc2VsZiwgZmFjKToKKyAgICAgICAgc2VsZi5leHByKGZhYyhbXSksICJjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycyIpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIHkgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbTm9uZV0pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiBfc2ltcGxlX2NvbXAoc2VsZiwgZmFjKToKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihmYWMoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtnXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiB3cmFwKGdlbnMpOgorICAgICAgICAgICAgcmV0dXJuIGZhYyhhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgZ2VucykKKyAgICAgICAgc2VsZi5fY2hlY2tfY29tcHJlaGVuc2lvbih3cmFwKQorCisgICAgZGVmIHRlc3RfbGlzdGNvbXAoc2VsZik6CisgICAgICAgIHNlbGYuX3NpbXBsZV9jb21wKGFzdC5MaXN0Q29tcCkKKworICAgIGRlZiB0ZXN0X3NldGNvbXAoc2VsZik6CisgICAgICAgIHNlbGYuX3NpbXBsZV9jb21wKGFzdC5TZXRDb21wKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yZXhwKHNlbGYpOgorICAgICAgICBzZWxmLl9zaW1wbGVfY29tcChhc3QuR2VuZXJhdG9yRXhwKQorCisgICAgZGVmIHRlc3RfZGljdGNvbXAoc2VsZik6CisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICBjID0gYXN0LkRpY3RDb21wKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSksIFtnXSkKKyAgICAgICAgc2VsZi5leHByKGMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgYyA9IGFzdC5EaWN0Q29tcChhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLCBbZ10pCisgICAgICAgIHNlbGYuZXhwcihjLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiBmYWN0b3J5KGNvbXBzKToKKyAgICAgICAgICAgIGsgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgICAgICB2ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQorICAgICAgICAgICAgcmV0dXJuIGFzdC5EaWN0Q29tcChrLCB2LCBjb21wcykKKyAgICAgICAgc2VsZi5fY2hlY2tfY29tcHJlaGVuc2lvbihmYWN0b3J5KQorCisgICAgZGVmIHRlc3RfeWllbGQoc2VsZik6CisgICAgICAgIHNlbGYuZXhwcihhc3QuWWllbGQoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLCAibXVzdCBoYXZlIExvYWQiKQorICAgICAgICBzZWxmLmV4cHIoYXN0LllpZWxkRnJvbShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksICJtdXN0IGhhdmUgTG9hZCIpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgorICAgICAgICBsZWZ0ID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUobGVmdCwgW2FzdC5JbigpXSwgW10pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAibm8gY29tcGFyYXRvcnMiKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUobGVmdCwgW2FzdC5JbigpXSwgW2FzdC5OdW0oNCksIGFzdC5OdW0oNSldKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgImRpZmZlcmVudCBudW1iZXIgb2YgY29tcGFyYXRvcnMgYW5kIG9wZXJhbmRzIikKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGFzdC5OdW0oImJsYWgiKSwgW2FzdC5JbigpXSwgW2xlZnRdKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgIm5vbi1udW1lcmljIiwgZXhjPVR5cGVFcnJvcikKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGxlZnQsIFthc3QuSW4oKV0sIFthc3QuTnVtKCJibGFoIildKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgIm5vbi1udW1lcmljIiwgZXhjPVR5cGVFcnJvcikKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIGZ1bmMgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGFyZ3MgPSBbYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKV0KKyAgICAgICAga2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5Mb2FkKCkpKV0KKyAgICAgICAgc3RhcmFyZyA9IGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSkKKyAgICAgICAga3dhcmcgPSBhc3QuTmFtZSgicSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIFtOb25lXSwga2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGJhZF9rZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpKV0KKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGJhZF9rZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3JkcywgYXN0Lk5hbWUoInoiLCBhc3QuU3RvcmUoKSksIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgidyIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X251bShzZWxmKToKKyAgICAgICAgY2xhc3Mgc3ViaW50KGludCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIHN1YmZsb2F0KGZsb2F0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3Mgc3ViY29tcGxleChjb21wbGV4KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIG9iaiBpbiAiMCIsICJoZWxsbyIsIHN1YmludCgpLCBzdWJmbG9hdCgpLCBzdWJjb21wbGV4KCk6CisgICAgICAgICAgICBzZWxmLmV4cHIoYXN0Lk51bShvYmopLCAibm9uLW51bWVyaWMiLCBleGM9VHlwZUVycm9yKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBhdHRyID0gYXN0LkF0dHJpYnV0ZShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgInkiLCBhc3QuTG9hZCgpKQorICAgICAgICBzZWxmLmV4cHIoYXR0ciwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfc3Vic2NyaXB0KHNlbGYpOgorICAgICAgICBzdWIgPSBhc3QuU3Vic2NyaXB0KGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhc3QuSW5kZXgoYXN0Lk51bSgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LkxvYWQoKSkKKyAgICAgICAgc2VsZi5leHByKHN1YiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBzdWIgPSBhc3QuU3Vic2NyaXB0KHgsIGFzdC5JbmRleChhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LkxvYWQoKSkKKyAgICAgICAgc2VsZi5leHByKHN1YiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgZm9yIGFyZ3MgaW4gKHMsIE5vbmUsIE5vbmUpLCAoTm9uZSwgcywgTm9uZSksIChOb25lLCBOb25lLCBzKToKKyAgICAgICAgICAgIHNsID0gYXN0LlNsaWNlKCphcmdzKQorICAgICAgICAgICAgc2VsZi5leHByKGFzdC5TdWJzY3JpcHQoeCwgc2wsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2wgPSBhc3QuRXh0U2xpY2UoW10pCisgICAgICAgIHNlbGYuZXhwcihhc3QuU3Vic2NyaXB0KHgsIHNsLCBhc3QuTG9hZCgpKSwgImVtcHR5IGRpbXMgb24gRXh0U2xpY2UiKQorICAgICAgICBzbCA9IGFzdC5FeHRTbGljZShbYXN0LkluZGV4KHMpXSkKKyAgICAgICAgc2VsZi5leHByKGFzdC5TdWJzY3JpcHQoeCwgc2wsIGFzdC5Mb2FkKCkpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9zdGFycmVkKHNlbGYpOgorICAgICAgICBsZWZ0ID0gYXN0Lkxpc3QoW2FzdC5TdGFycmVkKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIGFzdC5TdG9yZSgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhc3QuU3RvcmUoKSkKKyAgICAgICAgYXNzaWduID0gYXN0LkFzc2lnbihbbGVmdF0sIGFzdC5OdW0oNCkpCisgICAgICAgIHNlbGYuc3RtdChhc3NpZ24sICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisKKyAgICBkZWYgX3NlcXVlbmNlKHNlbGYsIGZhYyk6CisgICAgICAgIHNlbGYuZXhwcihmYWMoW05vbmVdLCBhc3QuTG9hZCgpKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9saXN0KHNlbGYpOgorICAgICAgICBzZWxmLl9zZXF1ZW5jZShhc3QuTGlzdCkKKworICAgIGRlZiB0ZXN0X3R1cGxlKHNlbGYpOgorICAgICAgICBzZWxmLl9zZXF1ZW5jZShhc3QuVHVwbGUpCisKKyAgICBkZWYgdGVzdF9zdGRsaWJfdmFsaWRhdGVzKHNlbGYpOgorICAgICAgICBzdGRsaWIgPSBvcy5wYXRoLmRpcm5hbWUoYXN0Ll9fZmlsZV9fKQorICAgICAgICB0ZXN0cyA9IFtmbiBmb3IgZm4gaW4gb3MubGlzdGRpcihzdGRsaWIpIGlmIGZuLmVuZHN3aXRoKCIucHkiKV0KKyAgICAgICAgdGVzdHMuZXh0ZW5kKFsidGVzdC90ZXN0X2dyYW1tYXIucHkiLCAidGVzdC90ZXN0X3VucGFja19leC5weSJdKQorICAgICAgICBmb3IgbW9kdWxlIGluIHRlc3RzOgorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oc3RkbGliLCBtb2R1bGUpCisgICAgICAgICAgICB3aXRoIG9wZW4oZm4sICJyIiwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZnA6CisgICAgICAgICAgICAgICAgc291cmNlID0gZnAucmVhZCgpCisgICAgICAgICAgICBtb2QgPSBhc3QucGFyc2Uoc291cmNlKQorICAgICAgICAgICAgY29tcGlsZShtb2QsIGZuLCAiZXhlYyIpCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEFTVF9UZXN0cywgQVNUSGVscGVyc19UZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEFTVF9UZXN0cywgQVNUSGVscGVyc19UZXN0LCBBU1RWYWxpZGF0b3JUZXN0cykKIAogZGVmIG1haW4oKToKICAgICBpZiBfX25hbWVfXyAhPSAnX19tYWluX18nOgpAQCAtNTM5LDkgKzk2NywxMSBAQAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgMTEpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdXaGlsZScsICgxLCAwKSwgKCdOYW1lJywgKDEsIDYpLCAndicsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgOCkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0lmJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMyksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCA1KSldLCBbXSldKSwKKygnTW9kdWxlJywgWygnV2l0aCcsICgxLCAwKSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgNSksICd4JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDEwKSwgJ3knLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDEzKSldKV0pLAorKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKSwgKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCAxMyksICd6JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3EnLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDIxKSldKV0pLAogKCdNb2R1bGUnLCBbKCdSYWlzZScsICgxLCAwKSwgKCdDYWxsJywgKDEsIDYpLCAoJ05hbWUnLCAoMSwgNiksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBbKCdTdHInLCAoMSwgMTYpLCAnc3RyaW5nJyldLCBbXSwgTm9uZSwgTm9uZSksIE5vbmUpXSksCi0oJ01vZHVsZScsIFsoJ1RyeUV4Y2VwdCcsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbKCdFeGNlcHRIYW5kbGVyJywgKDMsIDApLCAoJ05hbWUnLCAoMywgNyksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBOb25lLCBbKCdQYXNzJywgKDQsIDIpKV0pXSwgW10pXSksCi0oJ01vZHVsZScsIFsoJ1RyeUZpbmFsbHknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnUGFzcycsICg0LCAyKSldKV0pLAorKCdNb2R1bGUnLCBbKCdUcnknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnRXhjZXB0SGFuZGxlcicsICgzLCAwKSwgKCdOYW1lJywgKDMsIDcpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgTm9uZSwgWygnUGFzcycsICg0LCAyKSldKV0sIFtdLCBbXSldKSwKKygnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFtdLCBbXSwgWygnUGFzcycsICg0LCAyKSldKV0pLAogKCdNb2R1bGUnLCBbKCdBc3NlcnQnLCAoMSwgMCksICgnTmFtZScsICgxLCA3KSwgJ3YnLCAoJ0xvYWQnLCkpLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdJbXBvcnQnLCAoMSwgMCksIFsoJ2FsaWFzJywgJ3N5cycsIE5vbmUpXSldKSwKICgnTW9kdWxlJywgWygnSW1wb3J0RnJvbScsICgxLCAwKSwgJ3N5cycsIFsoJ2FsaWFzJywgJ3YnLCBOb25lKV0sIDApXSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQppbmRleCA1ZjU1ZGY4Li40MmEyNTI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKQEAgLTIxLDYgKzIxLDggQEAKIAogSE9TVCA9IHN1cHBvcnQuSE9TVAogCitIQVNfVU5JWF9TT0NLRVRTID0gaGFzYXR0cihzb2NrZXQsICdBRl9VTklYJykKKwogY2xhc3MgZHVtbXlzb2NrZXQ6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCkBAIC03MiwxNSArNzQsMTYgQEAKICAgICAgICAgcGFzcwogICAgIGVsc2U6CiAgICAgICAgIG4gPSAyMDAKLSAgICAgICAgd2hpbGUgbiA+IDA6Ci0gICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdChbY29ubl0sIFtdLCBbXSkKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICB3aGlsZSBuID4gMCBhbmQgdGltZS50aW1lKCkgLSBzdGFydCA8IDMuMDoKKyAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KFtjb25uXSwgW10sIFtdLCAwLjEpCiAgICAgICAgICAgICBpZiByOgorICAgICAgICAgICAgICAgIG4gLT0gMQogICAgICAgICAgICAgICAgIGRhdGEgPSBjb25uLnJlY3YoMTApCiAgICAgICAgICAgICAgICAgIyBrZWVwIGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciB0aGUgbmV3bGluZSB0ZXJtaW5hdG9yCiAgICAgICAgICAgICAgICAgYnVmLndyaXRlKGRhdGEucmVwbGFjZShiJ1xuJywgYicnKSkKICAgICAgICAgICAgICAgICBpZiBiJ1xuJyBpbiBkYXRhOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgbiAtPSAxCiAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCiAKICAgICAgICAgY29ubi5jbG9zZSgpCkBAIC04OCw2ICs5MSwxMyBAQAogICAgICAgICBzZXJ2LmNsb3NlKCkKICAgICAgICAgZXZ0LnNldCgpCiAKK2RlZiBiaW5kX2FmX2F3YXJlKHNvY2ssIGFkZHIpOgorICAgICIiIkhlbHBlciBmdW5jdGlvbiB0byBiaW5kIGEgc29ja2V0IGFjY29yZGluZyB0byBpdHMgZmFtaWx5LiIiIgorICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNvY2suZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgcGF0aCBkb2Vzbid0IGV4aXN0LgorICAgICAgICB1bmxpbmsoYWRkcikKKyAgICBzb2NrLmJpbmQoYWRkcikKKwogCiBjbGFzcyBIZWxwZXJGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZWFkd3JpdGVleGMoc2VsZik6CkBAIC0zNTMsNyArMzYzLDcgQEAKICAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgogICAgICAgICBldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNvY2suc2V0dGltZW91dCgzKQogICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc29jaykKIApAQCAtMzY4LDcgKzM3OCw3IEBACiAKICAgICAgICAgICAgIGRhdGEgPSBiIlN1cHBvc2UgdGhlcmUgaXNuJ3QgYSAxNi10b24gd2VpZ2h0PyIKICAgICAgICAgICAgIGQgPSBkaXNwYXRjaGVyd2l0aHNlbmRfbm9yZWFkKCkKLSAgICAgICAgICAgIGQuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgZC5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgICAgIGQuY29ubmVjdCgoSE9TVCwgcG9ydCkpCiAKICAgICAgICAgICAgICMgZ2l2ZSB0aW1lIGZvciBzb2NrZXQgdG8gY29ubmVjdApAQCAtNDY4LDIyICs0NzgsMjIgQEAKICAgICAgICAgcmFpc2UKIAogCi1jbGFzcyBUQ1BTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CitjbGFzcyBCYXNlU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogICAgICIiIkEgc2VydmVyIHdoaWNoIGxpc3RlbnMgb24gYW4gYWRkcmVzcyBhbmQgZGlzcGF0Y2hlcyB0aGUKICAgICBjb25uZWN0aW9uIHRvIGEgaGFuZGxlci4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVyPUJhc2VUZXN0SGFuZGxlciwgaG9zdD1IT1NULCBwb3J0PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHIsIGhhbmRsZXI9QmFzZVRlc3RIYW5kbGVyKToKICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGZhbWlseSkKICAgICAgICAgc2VsZi5zZXRfcmV1c2VfYWRkcigpCi0gICAgICAgIHNlbGYuYmluZCgoaG9zdCwgcG9ydCkpCisgICAgICAgIGJpbmRfYWZfYXdhcmUoc2VsZi5zb2NrZXQsIGFkZHIpCiAgICAgICAgIHNlbGYubGlzdGVuKDUpCiAgICAgICAgIHNlbGYuaGFuZGxlciA9IGhhbmRsZXIKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBhZGRyZXNzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgcmV0dXJuIHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKCkKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgc29jaywgYWRkcik6CiAgICAgICAgIHNlbGYuaGFuZGxlcihzb2NrKQpAQCAtNDk0LDkgKzUwNCw5IEBACiAKIGNsYXNzIEJhc2VDbGllbnQoQmFzZVRlc3RIYW5kbGVyKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyZXNzKToKICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZmFtaWx5KQogICAgICAgICBzZWxmLmNvbm5lY3QoYWRkcmVzcykKIAogICAgIGRlZiBoYW5kbGVfY29ubmVjdChzZWxmKToKQEAgLTUyNiw4ICs1MzYsOCBAQAogICAgICAgICAgICAgZGVmIGhhbmRsZV9jb25uZWN0KHNlbGYpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfYWNjZXB0KHNlbGYpOgpAQCAtNTM1LDE4ICs1NDUsMTggQEAKIAogICAgICAgICBjbGFzcyBUZXN0TGlzdGVuZXIoQmFzZVRlc3RIYW5kbGVyKToKIAotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseSwgYWRkcik6CiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgICAgICAgICAgc2VsZi5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZmFtaWx5KQorICAgICAgICAgICAgICAgIGJpbmRfYWZfYXdhcmUoc2VsZi5zb2NrZXQsIGFkZHIpCiAgICAgICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKLSAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKCkKIAogICAgICAgICAgICAgZGVmIGhhbmRsZV9hY2NlcHQoc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRlc3RMaXN0ZW5lcigpCi0gICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IFRlc3RMaXN0ZW5lcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoc2VydmVyKQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX2FjY2VwdGVkKHNlbGYpOgpAQCAtNTU0LDEyICs1NjQsMTIgQEAKIAogICAgICAgICBjbGFzcyBUZXN0TGlzdGVuZXIoQmFzZVRlc3RIYW5kbGVyKToKIAotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseSwgYWRkcik6CiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgICAgICAgICAgc2VsZi5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZmFtaWx5KQorICAgICAgICAgICAgICAgIGJpbmRfYWZfYXdhcmUoc2VsZi5zb2NrZXQsIGFkZHIpCiAgICAgICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKLSAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKCkKIAogICAgICAgICAgICAgZGVmIGhhbmRsZV9hY2NlcHQoc2VsZik6CiAgICAgICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5oYW5kbGVfYWNjZXB0KHNlbGYpCkBAIC01NjgsOCArNTc4LDggQEAKICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKLSAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKCkKLSAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhzZXJ2ZXIpCiAKIApAQCAtNTg1LDggKzU5NSw4IEBACiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGIneCcgKiAxMDI0KQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcihUZXN0SGFuZGxlcikKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyLCBUZXN0SGFuZGxlcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV93cml0ZShzZWxmKToKQEAgLTU5Niw4ICs2MDYsOCBAQAogICAgICAgICAgICAgZGVmIGhhbmRsZV93cml0ZShzZWxmKToKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX2Nsb3NlKHNlbGYpOgpAQCAtNjIwLDggKzYzMCw0MCBAQAogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcihUZXN0SGFuZGxlcikKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyLCBUZXN0SGFuZGxlcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKKworICAgIGRlZiB0ZXN0X2hhbmRsZV9jbG9zZV9hZnRlcl9jb25uX2Jyb2tlbihzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IEVDT05OUkVTRVQvRVBJUEUgaXMgY29ycmVjdGx5IGhhbmRsZWQgKGlzc3VlcyAjNTY2MSBhbmQKKyAgICAgICAgIyAjMTEyNjUpLgorCisgICAgICAgIGRhdGEgPSBiJ1wwJyAqIDEyOAorCisgICAgICAgIGNsYXNzIFRlc3RDbGllbnQoQmFzZUNsaWVudCk6CisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVfd3JpdGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGRhdGEpCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVfY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2V4cHQoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCisgICAgICAgIGNsYXNzIFRlc3RIYW5kbGVyKEJhc2VUZXN0SGFuZGxlcik6CisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVfcmVhZChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlY3YobGVuKGRhdGEpKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCisgICAgICAgICAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyLCBUZXN0SGFuZGxlcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoInN1bm9zIiksCkBAIC02MzAsOSArNjcyLDEyIEBACiAgICAgICAgICMgTWFrZSBzdXJlIGhhbmRsZV9leHB0IGlzIGNhbGxlZCBvbiBPT0IgZGF0YSByZWNlaXZlZC4KICAgICAgICAgIyBOb3RlOiB0aGlzIG1pZ2h0IGZhaWwgb24gc29tZSBwbGF0Zm9ybXMgYXMgT09CIGRhdGEgaXMKICAgICAgICAgIyB0ZW51b3VzbHkgc3VwcG9ydGVkIGFuZCByYXJlbHkgdXNlZC4KKyAgICAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc2VsZi5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJOb3QgYXBwbGljYWJsZSB0byBBRl9VTklYIHNvY2tldHMuIikKIAogICAgICAgICBjbGFzcyBUZXN0Q2xpZW50KEJhc2VDbGllbnQpOgogICAgICAgICAgICAgZGVmIGhhbmRsZV9leHB0KHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnJlY3YoMTAyNCwgc29ja2V0Lk1TR19PT0IpCiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCiAgICAgICAgIGNsYXNzIFRlc3RIYW5kbGVyKEJhc2VUZXN0SGFuZGxlcik6CkBAIC02NDAsOCArNjg1LDggQEAKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kKGJ5dGVzKGNocigyNDQpLCAnbGF0aW4tMScpLCBzb2NrZXQuTVNHX09PQikKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoVGVzdEhhbmRsZXIpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkciwgVGVzdEhhbmRsZXIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfZXJyb3Ioc2VsZik6CkBAIC02NTgsMTMgKzcwMywxMyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXhjZXB0aW9uIG5vdCByYWlzZWQiKQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Rpb25fYXR0cmlidXRlcyhzZWxmKToKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKIAogICAgICAgICAjIHdlIHN0YXJ0IGRpc2Nvbm5lY3RlZAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5jb25uZWN0ZWQpCkBAIC02OTQsMjUgKzczOSwyOSBAQAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3NvY2tldChzZWxmKToKICAgICAgICAgcyA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoKQotICAgICAgICBzLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zb2NrZXQuZmFtaWx5LCBzZWxmLmZhbWlseSkKICAgICAgICAgU09DS19OT05CTE9DSyA9IGdldGF0dHIoc29ja2V0LCAnU09DS19OT05CTE9DSycsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zb2NrZXQudHlwZSwgc29ja2V0LlNPQ0tfU1RSRUFNIHwgU09DS19OT05CTE9DSykKIAogICAgIGRlZiB0ZXN0X2JpbmQoc2VsZik6CisgICAgICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNlbGYuZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm90IGFwcGxpY2FibGUgdG8gQUZfVU5JWCBzb2NrZXRzLiIpCiAgICAgICAgIHMxID0gYXN5bmNvcmUuZGlzcGF0Y2hlcigpCi0gICAgICAgIHMxLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgczEuYmluZCgoSE9TVCwgMCkpCisgICAgICAgIHMxLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCisgICAgICAgIHMxLmJpbmQoc2VsZi5hZGRyKQogICAgICAgICBzMS5saXN0ZW4oNSkKICAgICAgICAgcG9ydCA9IHMxLnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCiAKICAgICAgICAgczIgPSBhc3luY29yZS5kaXNwYXRjaGVyKCkKLSAgICAgICAgczIuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzMi5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQogICAgICAgICAjIEVBRERSSU5VU0UgaW5kaWNhdGVzIHRoZSBzb2NrZXQgd2FzIGNvcnJlY3RseSBib3VuZAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHMyLmJpbmQsIChIT1NULCBwb3J0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzMi5iaW5kLCAoc2VsZi5hZGRyWzBdLCBwb3J0KSkKIAogICAgIGRlZiB0ZXN0X3NldF9yZXVzZV9hZGRyKHNlbGYpOgotICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNlbGYuZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm90IGFwcGxpY2FibGUgdG8gQUZfVU5JWCBzb2NrZXRzLiIpCisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNlbGYuZmFtaWx5KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIsIDEpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CkBAIC03MjAsMTEgKzc2OSwxMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBpZiBTT19SRVVTRUFERFIgc3VjY2VlZGVkIGZvciBzb2NrIHdlIGV4cGVjdCBhc3luY29yZQogICAgICAgICAgICAgIyB0byBkbyB0aGUgc2FtZQotICAgICAgICAgICAgcyA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoc29ja2V0LnNvY2tldCgpKQorICAgICAgICAgICAgcyA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoc29ja2V0LnNvY2tldChzZWxmLmZhbWlseSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc29ja2V0LmdldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPX1JFVVNFQUREUikpCiAgICAgICAgICAgICBzLnNvY2tldC5jbG9zZSgpCi0gICAgICAgICAgICBzLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHMuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKICAgICAgICAgICAgIHMuc2V0X3JldXNlX2FkZHIoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc29ja2V0LmdldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPX1JFVVNFQUREUikpCkBAIC03MzUsMTIgKzc4NCwxNCBAQAogICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X3F1aWNrX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgICMgc2VlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTAzNDAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMSwgY291bnQ9NTAwKSkKLSAgICAgICAgdC5zdGFydCgpCisgICAgICAgIGlmIHNlbGYuZmFtaWx5IGluIChzb2NrZXQuQUZfSU5FVCwgZ2V0YXR0cihzb2NrZXQsICJBRl9JTkVUNiIsIG9iamVjdCgpKSk6CisgICAgICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bGFtYmRhOiBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudD01MDApKQorICAgICAgICAgICAgdC5zdGFydCgpCiAKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoMjApOgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc2VsZi5mYW1pbHksIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgICAgIHMuc2V0dGltZW91dCguMikKICAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX0xJTkdFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaygnaWknLCAxLCAwKSkKQEAgLTc1MSwxOCArODAyLDUyIEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogCi1jbGFzcyBUZXN0QVBJX1VzZVNlbGVjdChCYXNlVGVzdEFQSSk6CitjbGFzcyBUZXN0QVBJX1VzZUlQdjRTb2NrZXRzKEJhc2VUZXN0QVBJKToKKyAgICBmYW1pbHkgPSBzb2NrZXQuQUZfSU5FVAorICAgIGFkZHIgPSAoSE9TVCwgMCkKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHN1cHBvcnQgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VJUHY2U29ja2V0cyhCYXNlVGVzdEFQSSk6CisgICAgZmFtaWx5ID0gc29ja2V0LkFGX0lORVQ2CisgICAgYWRkciA9ICgnOjoxJywgMCkKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1VOSVhfU09DS0VUUywgJ1VuaXggc29ja2V0cyByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzKEJhc2VUZXN0QVBJKToKKyAgICBpZiBIQVNfVU5JWF9TT0NLRVRTOgorICAgICAgICBmYW1pbHkgPSBzb2NrZXQuQUZfVU5JWAorICAgIGFkZHIgPSBzdXBwb3J0LlRFU1RGTgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICB1bmxpbmsoc2VsZi5hZGRyKQorICAgICAgICBCYXNlVGVzdEFQSS50ZWFyRG93bihzZWxmKQorCitjbGFzcyBUZXN0QVBJX1VzZUlQdjRTZWxlY3QoVGVzdEFQSV9Vc2VJUHY0U29ja2V0cyk6CiAgICAgdXNlX3BvbGwgPSBGYWxzZQogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKSwgJ3NlbGVjdC5wb2xsIHJlcXVpcmVkJykKLWNsYXNzIFRlc3RBUElfVXNlUG9sbChCYXNlVGVzdEFQSSk6CitjbGFzcyBUZXN0QVBJX1VzZUlQdjRQb2xsKFRlc3RBUElfVXNlSVB2NFNvY2tldHMpOgogICAgIHVzZV9wb2xsID0gVHJ1ZQogCitjbGFzcyBUZXN0QVBJX1VzZUlQdjZTZWxlY3QoVGVzdEFQSV9Vc2VJUHY2U29ja2V0cyk6CisgICAgdXNlX3BvbGwgPSBGYWxzZQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKSwgJ3NlbGVjdC5wb2xsIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RBUElfVXNlSVB2NlBvbGwoVGVzdEFQSV9Vc2VJUHY2U29ja2V0cyk6CisgICAgdXNlX3BvbGwgPSBUcnVlCisKK2NsYXNzIFRlc3RBUElfVXNlVW5peFNvY2tldHNTZWxlY3QoVGVzdEFQSV9Vc2VVbml4U29ja2V0cyk6CisgICAgdXNlX3BvbGwgPSBGYWxzZQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKSwgJ3NlbGVjdC5wb2xsIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RBUElfVXNlVW5peFNvY2tldHNQb2xsKFRlc3RBUElfVXNlVW5peFNvY2tldHMpOgorICAgIHVzZV9wb2xsID0gVHJ1ZQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbSGVscGVyRnVuY3Rpb25UZXN0cywgRGlzcGF0Y2hlclRlc3RzLCBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cywKLSAgICAgICAgICAgICBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0c19Vc2VQb2xsLCBUZXN0QVBJX1VzZVNlbGVjdCwKLSAgICAgICAgICAgICBUZXN0QVBJX1VzZVBvbGwsIEZpbGVXcmFwcGVyVGVzdF0KKyAgICAgICAgICAgIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzX1VzZVBvbGwsIEZpbGVXcmFwcGVyVGVzdCwKKyAgICAgICAgICAgIFRlc3RBUElfVXNlSVB2NFNlbGVjdCwgVGVzdEFQSV9Vc2VJUHY0UG9sbCwgVGVzdEFQSV9Vc2VJUHY2U2VsZWN0LAorICAgICAgICAgICAgVGVzdEFQSV9Vc2VJUHY2UG9sbCwgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1NlbGVjdCwKKyAgICAgICAgICAgIFRlc3RBUElfVXNlVW5peFNvY2tldHNQb2xsXQogICAgIHJ1bl91bml0dGVzdCgqdGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weSBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CmluZGV4IGNhOTQ1MDQuLjI1Njk0NzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CkBAIC0xMDMsNDQgKzEwMyw1MyBAQAogCiAgICAgZGVmIHRlc3RfYjY0ZGVjb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiImQzZDNMbkI1ZEdodmJpNXZjbWM9IiksIGIid3d3LnB5dGhvbi5vcmciKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGInQUE9PScpLCBiJ1x4MDAnKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiWVE9PSIpLCBiImEiKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiWVdJPSIpLCBiImFiIikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiIllXSmoiKSwgYiJhYmMiKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHBCUWtORSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlJVWkhTRWxLUzB4TlRrOVFVVkpUVkZWV1YxaFpXakF4TWpNMFxuTlQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJZM09Ea2hRQ013WGlZcUtDazdPancrTEM0Z1cxMTdmUT09IiksCi0gICAgICAgICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCi0gICAgICAgICAgIGIiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCi0gICAgICAgICAgIGIiMDEyMzQ1Njc4OSFAIzBeJiooKTs6PD4sLiBbXXt9IikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiJycpLCBiJycpCisKKyAgICAgICAgdGVzdHMgPSB7YiJkM2QzTG5CNWRHaHZiaTV2Y21jPSI6IGIid3d3LnB5dGhvbi5vcmciLAorICAgICAgICAgICAgICAgICBiJ0FBPT0nOiBiJ1x4MDAnLAorICAgICAgICAgICAgICAgICBiIllRPT0iOiBiImEiLAorICAgICAgICAgICAgICAgICBiIllXST0iOiBiImFiIiwKKyAgICAgICAgICAgICAgICAgYiJZV0pqIjogYiJhYmMiLAorICAgICAgICAgICAgICAgICBiIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwQlFrTkUiCisgICAgICAgICAgICAgICAgIGIiUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldqQXhNak0wXG5OVCIKKyAgICAgICAgICAgICAgICAgYiJZM09Ea2hRQ013WGlZcUtDazdPancrTEM0Z1cxMTdmUT09IjoKKworICAgICAgICAgICAgICAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgorICAgICAgICAgICAgICAgICBiIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgorICAgICAgICAgICAgICAgICBiIjAxMjM0NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fSIsCisgICAgICAgICAgICAgICAgIGInJzogYicnLAorICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCisKICAgICAgICAgIyBUZXN0IHdpdGggYXJiaXRyYXJ5IGFsdGVybmF0aXZlIGNoYXJhY3RlcnMKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiJzAxYSpiJGNkJywgYWx0Y2hhcnM9YicqJCcpLCBiJ1x4ZDNWXHhiZW9ceGY3XHgxZCcpCi0gICAgICAgICMgQ2hlY2sgaWYgcGFzc2luZyBhIHN0ciBvYmplY3QgcmFpc2VzIGFuIGVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmI2NGRlY29kZSwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmI2NGRlY29kZSwgYiIiLCBhbHRjaGFycz0iIikKKyAgICAgICAgdGVzdHNfYWx0Y2hhcnMgPSB7KGInMDFhKmIkY2QnLCBiJyokJyk6IGInXHhkM1ZceGJlb1x4ZjdceDFkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgKGRhdGEsIGFsdGNoYXJzKSwgcmVzIGluIHRlc3RzX2FsdGNoYXJzLml0ZW1zKCk6CisgICAgICAgICAgICBkYXRhX3N0ciA9IGRhdGEuZGVjb2RlKCdhc2NpaScpCisgICAgICAgICAgICBhbHRjaGFyc19zdHIgPSBhbHRjaGFycy5kZWNvZGUoJ2FzY2lpJykKKworICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhLCBhbHRjaGFycz1hbHRjaGFycyksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YV9zdHIsIGFsdGNoYXJzPWFsdGNoYXJzKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhLCBhbHRjaGFycz1hbHRjaGFyc19zdHIpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGFfc3RyLCBhbHRjaGFycz1hbHRjaGFyc19zdHIpLCByZXMpCisKICAgICAgICAgIyBUZXN0IHN0YW5kYXJkIGFscGhhYmV0Ci0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiJkM2QzTG5CNWRHaHZiaTV2Y21jPSIpLCBiInd3dy5weXRob24ub3JnIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllRPT0iKSwgYiJhIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllXST0iKSwgYiJhYiIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiJZV0pqIiksIGIiYWJjIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIiIpLCBiIiIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYcEJRa05FIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldqQXhNak0wTlQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJZM09Ea2hRQ013WGlZcUtDazdPancrTEM0Z1cxMTdmUT09IiksCi0gICAgICAgICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCi0gICAgICAgICAgIGIiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCi0gICAgICAgICAgIGIiMDEyMzQ1Njc4OSFAIzBeJiooKTs6PD4sLiBbXXt9IikKLSAgICAgICAgIyBDaGVjayBpZiBwYXNzaW5nIGEgc3RyIG9iamVjdCByYWlzZXMgYW4gZXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlLCBiIiIsIGFsdGNoYXJzPSIiKQorICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGRhdGEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQorCiAgICAgICAgICMgVGVzdCB3aXRoICdVUkwgc2FmZScgYWx0ZXJuYXRpdmUgY2hhcmFjdGVycwotICAgICAgICBlcShiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUoYicwMWEtYl9jZCcpLCBiJ1x4ZDNWXHhiZW9ceGY3XHgxZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlLCAiIikKKyAgICAgICAgdGVzdHNfdXJsc2FmZSA9IHtiJzAxYS1iX2NkJzogYidceGQzVlx4YmVvXHhmN1x4MWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJzogYicnLAorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0c191cmxzYWZlLml0ZW1zKCk6CisgICAgICAgICAgICBlcShiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKIAogICAgIGRlZiB0ZXN0X2I2NGRlY29kZV9wYWRkaW5nX2Vycm9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmI2NGRlY29kZSwgYidhYmMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmI2NGRlY29kZSwgJ2FiYycpCiAKICAgICBkZWYgdGVzdF9iNjRkZWNvZGVfaW52YWxpZF9jaGFycyhzZWxmKToKICAgICAgICAgIyBpc3N1ZSAxNDY2MDY1OiBUZXN0IHNvbWUgaW52YWxpZCBjaGFyYWN0ZXJzLgpAQCAtMTU1LDggKzE2NCwxMSBAQAogICAgICAgICAgICAgICAgICAoYidZV0pqXG5ZV0k9JywgYidhYmNhYicpKQogICAgICAgICBmb3IgYnN0ciwgcmVzIGluIHRlc3RzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlNjQuYjY0ZGVjb2RlKGJzdHIpLCByZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2U2NC5iNjRkZWNvZGUoYnN0ci5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKICAgICAgICAgICAgICAgICBiYXNlNjQuYjY0ZGVjb2RlKGJzdHIsIHZhbGlkYXRlPVRydWUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKKyAgICAgICAgICAgICAgICBiYXNlNjQuYjY0ZGVjb2RlKGJzdHIuZGVjb2RlKCdhc2NpaScpLCB2YWxpZGF0ZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfYjMyZW5jb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKQEAgLTE3MSw0MCArMTgzLDYzIEBACiAKICAgICBkZWYgdGVzdF9iMzJkZWNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInJyksIGInJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ0FBPT09PT09JyksIGInXHgwMCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRT09PT09PScpLCBiJ2EnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSQT09PT0nKSwgYidhYicpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHRz09PScpLCBiJ2FiYycpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pBPScpLCBiJ2FiY2QnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0daREYnKSwgYidhYmNkZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgIiIpCisgICAgICAgIHRlc3RzID0ge2InJzogYicnLAorICAgICAgICAgICAgICAgICBiJ0FBPT09PT09JzogYidceDAwJywKKyAgICAgICAgICAgICAgICAgYidNRT09PT09PSc6IGInYScsCisgICAgICAgICAgICAgICAgIGInTUZSQT09PT0nOiBiJ2FiJywKKyAgICAgICAgICAgICAgICAgYidNRlJHRz09PSc6IGInYWJjJywKKyAgICAgICAgICAgICAgICAgYidNRlJHR1pBPSc6IGInYWJjZCcsCisgICAgICAgICAgICAgICAgIGInTUZSR0daREYnOiBiJ2FiY2RlJywKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQogCiAgICAgZGVmIHRlc3RfYjMyZGVjb2RlX2Nhc2Vmb2xkKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJycsIFRydWUpLCBiJycpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRT09PT09PScsIFRydWUpLCBiJ2EnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSQT09PT0nLCBUcnVlKSwgYidhYicpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHRz09PScsIFRydWUpLCBiJ2FiYycpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pBPScsIFRydWUpLCBiJ2FiY2QnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0daREYnLCBUcnVlKSwgYidhYmNkZScpCi0gICAgICAgICMgTG93ZXIgY2FzZXMKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21lPT09PT09JywgVHJ1ZSksIGInYScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZnJhPT09PScsIFRydWUpLCBiJ2FiJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmdnPT09JywgVHJ1ZSksIGInYWJjJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmdnemE9JywgVHJ1ZSksIGInYWJjZCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZnJnZ3pkZicsIFRydWUpLCBiJ2FiY2RlJykKLSAgICAgICAgIyBFeHBlY3RlZCBleGNlcHRpb25zCisgICAgICAgIHRlc3RzID0ge2InJzogYicnLAorICAgICAgICAgICAgICAgICBiJ01FPT09PT09JzogYidhJywKKyAgICAgICAgICAgICAgICAgYidNRlJBPT09PSc6IGInYWInLAorICAgICAgICAgICAgICAgICBiJ01GUkdHPT09JzogYidhYmMnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkE9JzogYidhYmNkJywKKyAgICAgICAgICAgICAgICAgYidNRlJHR1pERic6IGInYWJjZGUnLAorICAgICAgICAgICAgICAgICAjIExvd2VyIGNhc2VzCisgICAgICAgICAgICAgICAgIGInbWU9PT09PT0nOiBiJ2EnLAorICAgICAgICAgICAgICAgICBiJ21mcmE9PT09JzogYidhYicsCisgICAgICAgICAgICAgICAgIGInbWZyZ2c9PT0nOiBiJ2FiYycsCisgICAgICAgICAgICAgICAgIGInbWZyZ2d6YT0nOiBiJ2FiY2QnLAorICAgICAgICAgICAgICAgICBiJ21mcmdnemRmJzogYidhYmNkZScsCisgICAgICAgICAgICAgICAgIH0KKworICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEsIFRydWUpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpLCBUcnVlKSwgcmVzKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgYidtZT09PT09PScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgJ21lPT09PT09JykKKwogICAgICAgICAjIE1hcHBpbmcgemVybyBhbmQgb25lCiAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNTE8yMzQ1NicpLCBiJ2JceGRkXHhhZFx4ZjNceGJlJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ00xMDIzNDU2JywgbWFwMDE9YidMJyksIGInYlx4ZGRceGFkXHhmM1x4YmUnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTTEwMjM0NTYnLCBtYXAwMT1iJ0knKSwgYidiXHgxZFx4YWRceGYzXHhiZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgYiIiLCBtYXAwMT0iIikKKyAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZSgnTUxPMjM0NTYnKSwgYidiXHhkZFx4YWRceGYzXHhiZScpCisKKyAgICAgICAgbWFwX3Rlc3RzID0geyhiJ00xMDIzNDU2JywgYidMJyk6IGInYlx4ZGRceGFkXHhmM1x4YmUnLAorICAgICAgICAgICAgICAgICAgICAgKGInTTEwMjM0NTYnLCBiJ0knKTogYidiXHgxZFx4YWRceGYzXHhiZScsCisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciAoZGF0YSwgbWFwMDEpLCByZXMgaW4gbWFwX3Rlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBkYXRhX3N0ciA9IGRhdGEuZGVjb2RlKCdhc2NpaScpCisgICAgICAgICAgICBtYXAwMV9zdHIgPSBtYXAwMS5kZWNvZGUoJ2FzY2lpJykKKworICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLCBtYXAwMT1tYXAwMSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YV9zdHIsIG1hcDAxPW1hcDAxKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLCBtYXAwMT1tYXAwMV9zdHIpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGFfc3RyLCBtYXAwMT1tYXAwMV9zdHIpLCByZXMpCiAKICAgICBkZWYgdGVzdF9iMzJkZWNvZGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiJ2FiYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiJ0FCQ0RFRj09JykKKyAgICAgICAgZm9yIGRhdGEgaW4gW2InYWJjJywgYidBQkNERUY9PSddOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvcik6CisgICAgICAgICAgICAgICAgYmFzZTY0LmIzMmRlY29kZShkYXRhKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvcik6CisgICAgICAgICAgICAgICAgYmFzZTY0LmIzMmRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSkKIAogICAgIGRlZiB0ZXN0X2IxNmVuY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCkBAIC0yMTUsMTIgKzI1MCwyNCBAQAogICAgIGRlZiB0ZXN0X2IxNmRlY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoYicwMTAyQUJDREVGJyksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQorICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKCcwMTAyQUJDREVGJyksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQogICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKGInMDAnKSwgYidceDAwJykKKyAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZSgnMDAnKSwgYidceDAwJykKICAgICAgICAgIyBMb3dlciBjYXNlIGlzIG5vdCBhbGxvd2VkIHdpdGhvdXQgYSBmbGFnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjE2ZGVjb2RlLCBiJzAxMDJhYmNkZWYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmIxNmRlY29kZSwgJzAxMDJhYmNkZWYnKQogICAgICAgICAjIENhc2UgZm9sZAogICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKGInMDEwMmFiY2RlZicsIFRydWUpLCBiJ1x4MDFceDAyXHhhYlx4Y2RceGVmJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjE2ZGVjb2RlLCAiIikKKyAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZSgnMDEwMmFiY2RlZicsIFRydWUpLCBiJ1x4MDFceDAyXHhhYlx4Y2RceGVmJykKKworICAgIGRlZiB0ZXN0X2RlY29kZV9ub25hc2NpaV9zdHIoc2VsZik6CisgICAgICAgIGRlY29kZV9mdW5jcyA9IChiYXNlNjQuYjY0ZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NC5iMzJkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQuYjE2ZGVjb2RlKQorICAgICAgICBmb3IgZiBpbiBkZWNvZGVfZnVuY3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLCAnd2l0aCBub24tYXNjaWkgXHhjYicpCiAKICAgICBkZWYgdGVzdF9FcnJvckhlcml0YWdlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhiaW5hc2NpaS5FcnJvciwgVmFsdWVFcnJvcikpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weSBiL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CmluZGV4IGYzYzZlYmIuLjBlNTQ1OTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CkBAIC0xLDMgKzEsMTMgQEAKKyIiIkJpZ21lbSB0ZXN0cyAtIHRlc3RzIGZvciB0aGUgMzItYml0IGJvdW5kYXJ5IGluIGNvbnRhaW5lcnMuCisKK1RoZXNlIHRlc3RzIHRyeSB0byBleGVyY2lzZSB0aGUgMzItYml0IGJvdW5kYXJ5IHRoYXQgaXMgc29tZXRpbWVzLCBpZgorcmFyZWx5LCBleGNlZWRlZCBpbiBwcmFjdGljZSwgYnV0IGFsbW9zdCBuZXZlciB0ZXN0ZWQuICBUaGV5IGFyZSByZWFsbHkgb25seQorbWVhbmluZ2Z1bCBvbiA2NC1iaXQgYnVpbGRzIG9uIG1hY2hpbmVzIHdpdGggYSAqbG90KiBvZiBtZW1vcnksIGJ1dCB0aGUKK3Rlc3RzIGFyZSBhbHdheXMgcnVuLCB1c3VhbGx5IHdpdGggdmVyeSBsb3cgbWVtb3J5IGxpbWl0cyB0byBtYWtlIHN1cmUgdGhlCit0ZXN0cyB0aGVtc2VsdmVzIGRvbid0IHN1ZmZlciBmcm9tIGJpdHJvdC4gIFRvIHJ1biB0aGVtIGZvciByZWFsLCBwYXNzIGEKK2hpZ2ggbWVtb3J5IGxpbWl0IHRvIHJlZ3J0ZXN0LCB3aXRoIHRoZSAtTSBvcHRpb24uCisiIiIKKwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgYmlnbWVtdGVzdCwgXzFHLCBfMkcsIF80RwogCkBAIC02LDIwICsxNiwzNSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGZ1bmN0b29scwogCisjIFRoZXNlIHRlc3RzIGFsbCB1c2Ugb25lIG9mIHRoZSBiaWdtZW10ZXN0IGRlY29yYXRvcnMgdG8gaW5kaWNhdGUgaG93IG11Y2gKKyMgbWVtb3J5IHRoZXkgdXNlIGFuZCBob3cgbXVjaCBtZW1vcnkgdGhleSBuZWVkIHRvIGJlIGV2ZW4gbWVhbmluZ2Z1bC4gIFRoZQorIyBkZWNvcmF0b3JzIHRha2UgdHdvIGFyZ3VtZW50czogYSAnbWVtdXNlJyBpbmRpY2F0b3IgZGVjbGFyaW5nCisjIChhcHByb3hpbWF0ZSkgYnl0ZXMgcGVyIHNpemUtdW5pdCB0aGUgdGVzdCB3aWxsIHVzZSAoYXQgcGVhayB1c2FnZSksIGFuZCBhCisjICdtaW5zaXplJyBpbmRpY2F0b3IgZGVjbGFyaW5nIGEgbWluaW11bSAqdXNlZnVsKiBzaXplLiAgQSB0ZXN0IHRoYXQKKyMgYWxsb2NhdGVzIGEgYnl0ZXN0cmluZyB0byB0ZXN0IHZhcmlvdXMgb3BlcmF0aW9ucyBuZWFyIHRoZSBlbmQgd2lsbCBoYXZlIGEKKyMgbWluc2l6ZSBvZiBhdCBsZWFzdCAyR2IgKG9yIGl0IHdvdWxkbid0IHJlYWNoIHRoZSAzMi1iaXQgbGltaXQsIHNvIHRoZQorIyB0ZXN0IHdvdWxkbid0IGJlIHZlcnkgdXNlZnVsKSBhbmQgYSBtZW11c2Ugb2YgMSAob25lIGJ5dGUgcGVyIHNpemUtdW5pdCwKKyMgaWYgaXQgYWxsb2NhdGVzIG9ubHkgb25lIGJpZyBzdHJpbmcgYXQgYSB0aW1lLikKKyMKKyMgV2hlbiBydW4gd2l0aCBhIG1lbW9yeSBsaW1pdCBzZXQsIGJvdGggZGVjb3JhdG9ycyBza2lwIHRlc3RzIHRoYXQgbmVlZAorIyBtb3JlIG1lbW9yeSB0aGFuIGF2YWlsYWJsZSB0byBiZSBtZWFuaW5nZnVsLiAgVGhlIHByZWNpc2lvbmJpZ21lbXRlc3Qgd2lsbAorIyBhbHdheXMgcGFzcyBtaW5zaXplIGFzIHNpemUsIGV2ZW4gaWYgdGhlcmUgaXMgbXVjaCBtb3JlIG1lbW9yeSBhdmFpbGFibGUuCisjIFRoZSBiaWdtZW10ZXN0IGRlY29yYXRvciB3aWxsIHNjYWxlIHNpemUgdXB3YXJkIHRvIGZpbGwgYXZhaWxhYmxlIG1lbW9yeS4KKyMKICMgQmlnbWVtIHRlc3RpbmcgaG91c2VydWxlczoKICMKICMgIC0gVHJ5IG5vdCB0byBhbGxvY2F0ZSB0b28gbWFueSBsYXJnZSBvYmplY3RzLiBJdCdzIG9rYXkgdG8gcmVseSBvbgotIyAgICByZWZjb3VudGluZyBzZW1hbnRpY3MsIGJ1dCBkb24ndCBmb3JnZXQgdGhhdCAncyA9IGNyZWF0ZV9sYXJnZXN0cmluZygpJworIyAgICByZWZjb3VudGluZyBzZW1hbnRpY3MsIGFuZCBkb24ndCBmb3JnZXQgdGhhdCAncyA9IGNyZWF0ZV9sYXJnZXN0cmluZygpJwogIyAgICBkb2Vzbid0IHJlbGVhc2UgdGhlIG9sZCAncycgKGlmIGl0IGV4aXN0cykgdW50aWwgd2VsbCBhZnRlciBpdHMgbmV3CiAjICAgIHZhbHVlIGhhcyBiZWVuIGNyZWF0ZWQuIFVzZSAnZGVsIHMnIGJlZm9yZSB0aGUgY3JlYXRlX2xhcmdlc3RyaW5nIGNhbGwuCiAjCi0jICAtIERvICpub3QqIGNvbXBhcmUgbGFyZ2Ugb2JqZWN0cyB1c2luZyBhc3NlcnRFcXVhbCBvciBzaW1pbGFyLiBJdCdzIGEKLSMgICAgbGVuZ3RoeSBvcGVyYXRpb24gYW5kIHRoZSBlcnJvcm1lc3NhZ2Ugd2lsbCBiZSB1dHRlcmx5IHVzZWxlc3MgZHVlIHRvCi0jICAgIGl0cyBzaXplLiBUbyBtYWtlIHN1cmUgd2hldGhlciBhIHJlc3VsdCBoYXMgdGhlIHJpZ2h0IGNvbnRlbnRzLCBiZXR0ZXIKLSMgICAgdG8gdXNlIHRoZSBzdHJpcCBvciBjb3VudCBtZXRob2RzLCBvciBjb21wYXJlIG1lYW5pbmdmdWwgc2xpY2VzLgorIyAgLSBEbyAqbm90KiBjb21wYXJlIGxhcmdlIG9iamVjdHMgdXNpbmcgYXNzZXJ0RXF1YWwsIGFzc2VydEluIG9yIHNpbWlsYXIuCisjICAgIEl0J3MgYSBsZW5ndGh5IG9wZXJhdGlvbiBhbmQgdGhlIGVycm9ybWVzc2FnZSB3aWxsIGJlIHV0dGVybHkgdXNlbGVzcworIyAgICBkdWUgdG8gaXRzIHNpemUuICBUbyBtYWtlIHN1cmUgd2hldGhlciBhIHJlc3VsdCBoYXMgdGhlIHJpZ2h0IGNvbnRlbnRzLAorIyAgICBiZXR0ZXIgdG8gdXNlIHRoZSBzdHJpcCBvciBjb3VudCBtZXRob2RzLCBvciBjb21wYXJlIG1lYW5pbmdmdWwgc2xpY2VzLgogIwogIyAgLSBEb24ndCBmb3JnZXQgdG8gdGVzdCBmb3IgbGFyZ2UgaW5kaWNlcywgb2Zmc2V0cyBhbmQgcmVzdWx0cyBhbmQgc3VjaCwKLSMgICAgaW4gYWRkaXRpb24gdG8gbGFyZ2Ugc2l6ZXMuCisjICAgIGluIGFkZGl0aW9uIHRvIGxhcmdlIHNpemVzLiBBbnl0aGluZyB0aGF0IHByb2JlcyB0aGUgMzItYml0IGJvdW5kYXJ5LgogIwogIyAgLSBXaGVuIHJlcGVhdGluZyBhbiBvYmplY3QgKHNheSwgYSBzdWJzdHJpbmcsIG9yIGEgc21hbGwgbGlzdCkgdG8gY3JlYXRlCiAjICAgIGEgbGFyZ2Ugb2JqZWN0LCBtYWtlIHRoZSBzdWJvYmplY3Qgb2YgYSBsZW5ndGggdGhhdCBpcyBub3QgYSBwb3dlciBvZgpAQCAtMzcsMTMgKzYyLDE0IEBACiAjIGZhaWwgYXMgd2VsbC4gSSBkbyBub3Qga25vdyB3aGV0aGVyIGl0IGlzIGR1ZSB0byBtZW1vcnkgZnJhZ21lbnRhdGlvbgogIyBpc3N1ZXMsIG9yIG90aGVyIHNwZWNpZmljcyBvZiB0aGUgcGxhdGZvcm0gbWFsbG9jKCkgcm91dGluZS4KIAotY2hhcmFjdGVyX3NpemUgPSA0IGlmIHN5cy5tYXh1bmljb2RlID4gMHhGRkZGIGVsc2UgMgorYXNjaWlfY2hhcl9zaXplID0gMQordWNzMl9jaGFyX3NpemUgPSAyCit1Y3M0X2NoYXJfc2l6ZSA9IDQKIAogCiBjbGFzcyBCYXNlU3RyVGVzdDoKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKLSAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgIGRlZiBfdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBzZWxmLmZyb21fbGF0aW4xKCcgYWJjIGRlZiBnaGknKQogICAgICAgICBzID0gXygnLScpICogc2l6ZSArIFNVQlNUUgpAQCAtOTIsNyArMTE4LDcgQEAKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgcyA9IF8oJy0nKSAqIHNpemUKICAgICAgICAgdGFic2l6ZSA9IDgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmV4cGFuZHRhYnMoKSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZXhwYW5kdGFicygpID09IHMpCiAgICAgICAgIGRlbCBzCiAgICAgICAgIHNsZW4sIHJlbWFpbmRlciA9IGRpdm1vZChzaXplLCB0YWJzaXplKQogICAgICAgICBzID0gXygnICAgICAgIFx0JykgKiBzbGVuCkBAIC0zNDcsNyArMzczLDcgQEAKICAgICAjIHN1ZmZlciBmb3IgdGhlIGxpc3Qgc2l6ZS4gKE90aGVyd2lzZSwgaXQnZCBjb3N0IGFub3RoZXIgNDggdGltZXMKICAgICAjIHNpemUgaW4gYnl0ZXMhKSBOZXZlcnRoZWxlc3MsIGEgbGlzdCBvZiBzaXplIHRha2VzCiAgICAgIyA4KnNpemUgYnl0ZXMuCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyA1LCBtZW11c2U9MTApCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyA1LCBtZW11c2U9MiAqIGFzY2lpX2NoYXJfc2l6ZSArIDgpCiAgICAgZGVmIHRlc3Rfc3BsaXRfbGFyZ2Uoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIHMgPSBfKCcgYScpICogc2l6ZSArIF8oJyAnKQpAQCAtMzY2LDkgKzM5Miw5IEBACiAgICAgICAgICMgdGFrZSB1cCBhbiBpbm9yZGluYXRlIGFtb3VudCBvZiBtZW1vcnkKICAgICAgICAgY2h1bmtzaXplID0gaW50KHNpemUgKiogMC41ICsgMikgLy8gMgogICAgICAgICBTVUJTVFIgPSBfKCcgJykgKiBjaHVua3NpemUgKyBfKCdcbicpICsgXygnICcpICogY2h1bmtzaXplICsgXygnXHJcbicpCi0gICAgICAgIHMgPSBTVUJTVFIgKiBjaHVua3NpemUKKyAgICAgICAgcyA9IFNVQlNUUiAqIChjaHVua3NpemUgKiAyKQogICAgICAgICBsID0gcy5zcGxpdGxpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obCksIGNodW5rc2l6ZSAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGwpLCBjaHVua3NpemUgKiA0KQogICAgICAgICBleHBlY3RlZCA9IF8oJyAnKSAqIGNodW5rc2l6ZQogICAgICAgICBmb3IgaXRlbSBpbiBsOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtLCBleHBlY3RlZCkKQEAgLTM5NCw4ICs0MjAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgc2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnN0cmlwKCksIFNVQlNUUi5zdHJpcCgpKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQotICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgorICAgIGRlZiBfdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgU1VCU1RSID0gXygiYUJjRGVGRzEyLidceGE5XHgwMCIpCiAgICAgICAgIHN1YmxlbiA9IGxlbihTVUJTVFIpCkBAIC00MDYsOCArNDMxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzpzdWJsZW4gKiAzXSwgU1VCU1RSLnN3YXBjYXNlKCkgKiAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLXN1YmxlbiAqIDM6XSwgU1VCU1RSLnN3YXBjYXNlKCkgKiAzKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQotICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgorICAgIGRlZiBfdGVzdF90aXRsZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgU1VCU1RSID0gXygnU3BhYUhBYWFBYWhhbScpCiAgICAgICAgIHMgPSBTVUJTVFIgKiAoc2l6ZSAvLyBsZW4oU1VCU1RSKSArIDIpCkBAIC00MTksMTQgKzQ0Myw3IEBACiAgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBfKCdhWnouei5BYXouJykKLSAgICAgICAgaWYgaXNpbnN0YW5jZShTVUJTVFIsIHN0cik6Ci0gICAgICAgICAgICB0cmFucyA9IHsKLSAgICAgICAgICAgICAgICBvcmQoXygnLicpKTogXygnLScpLAotICAgICAgICAgICAgICAgIG9yZChfKCdhJykpOiBfKCchJyksCi0gICAgICAgICAgICAgICAgb3JkKF8oJ1onKSk6IF8oJyQnKSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyYW5zID0gYnl0ZXMubWFrZXRyYW5zKGInLmFaJywgYictISQnKQorICAgICAgICB0cmFucyA9IGJ5dGVzLm1ha2V0cmFucyhiJy5hWicsIGInLSEkJykKICAgICAgICAgc3VibGVuID0gbGVuKFNVQlNUUikKICAgICAgICAgcmVwZWF0cyA9IHNpemUgLy8gc3VibGVuICsgMgogICAgICAgICBzID0gU1VCU1RSICogcmVwZWF0cwpAQCAtNTE5LDE5ICs1MzYsMTkgQEAKICAgICAgICAgZWRnZSA9IF8oJy0nKSAqIChzaXplIC8vIDIpCiAgICAgICAgIHMgPSBfKCcnKS5qb2luKFtlZGdlLCBTVUJTVFIsIGVkZ2VdKQogICAgICAgICBkZWwgZWRnZQotICAgICAgICBzZWxmLmFzc2VydEluKFNVQlNUUiwgcykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihTVUJTVFIgKiAyLCBzKQotICAgICAgICBzZWxmLmFzc2VydEluKF8oJy0nKSwgcykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihfKCdhJyksIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShTVUJTVFIgaW4gcykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShTVUJTVFIgKiAyIGluIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfKCctJykgaW4gcykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfKCdhJykgaW4gcykKICAgICAgICAgcyArPSBfKCdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihfKCdhJyksIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfKCdhJykgaW4gcykKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT0yKQogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIHMxID0gXygnLScpICogc2l6ZQogICAgICAgICBzMiA9IF8oJy0nKSAqIHNpemUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzMSA9PSBzMikKICAgICAgICAgZGVsIHMyCiAgICAgICAgIHMyID0gczEgKyBfKCdhJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMSA9PSBzMikKQEAgLTU1Miw3ICs1NjksNyBAQAogICAgICAgICBoMSA9IGhhc2gocykKICAgICAgICAgZGVsIHMKICAgICAgICAgcyA9IF8oJ1x4MDAnKSAqIChzaXplICsgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoMSA9PSBoYXNoKHMpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGgxLCBoYXNoKHMpKQogCiAKIGNsYXNzIFN0clRlc3QodW5pdHRlc3QuVGVzdENhc2UsIEJhc2VTdHJUZXN0KToKQEAgLTU2Myw3ICs1ODAsNiBAQAogICAgIGRlZiBiYXNpY19lbmNvZGVfdGVzdChzZWxmLCBzaXplLCBlbmMsIGM9Jy4nLCBleHBlY3RlZHNpemU9Tm9uZSk6CiAgICAgICAgIGlmIGV4cGVjdGVkc2l6ZSBpcyBOb25lOgogICAgICAgICAgICAgZXhwZWN0ZWRzaXplID0gc2l6ZQotCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHMgPSBjICogc2l6ZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocy5lbmNvZGUoZW5jKSksIGV4cGVjdGVkc2l6ZSkKQEAgLTU4Miw0OCArNTk4LDY0IEBACiAgICAgICAgICAgICAgICAgbWVtdXNlID0gbWV0aC5tZW11c2UKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbWV0aC5tZW11c2UgPSBjaGFyYWN0ZXJfc2l6ZSAqIG1lbXVzZQorICAgICAgICAgICAgbWV0aC5tZW11c2UgPSBhc2NpaV9jaGFyX3NpemUgKiBtZW11c2UKICAgICAgICAgICAgIHNlbGYuX2FkanVzdGVkW25hbWVdID0gbWVtdXNlCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGZvciBuYW1lLCBtZW11c2UgaW4gc2VsZi5fYWRqdXN0ZWQuaXRlbXMoKToKICAgICAgICAgICAgIGdldGF0dHIodHlwZShzZWxmKSwgbmFtZSkubWVtdXNlID0gbWVtdXNlCiAKLSAgICAjIHRoZSB1dGY4IGVuY29kZXIgcHJlYWxsb2NhdGVzIGJpZyB0aW1lICg0eCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMpCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKyA0KQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9dWNzNF9jaGFyX3NpemUgKiAzKQorICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfY2FwaXRhbGl6ZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDMpCisgICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfdGl0bGUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9dWNzNF9jaGFyX3NpemUgKiAzKQorICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3N3YXBjYXNlKHNpemUpCisKKyAgICAjIE1hbnkgY29kZWNzIGNvbnZlcnQgdG8gdGhlIGxlZ2FjeSByZXByZXNlbnRhdGlvbiBmaXJzdCwgZXhwbGFpbmluZworICAgICMgd2h5IHdlIGFkZCAndWNzNF9jaGFyX3NpemUnIHRvIHRoZSAnbWVtdXNlJyBiZWxvdy4KKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIDEpCiAgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmLTgnKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNiArIDIsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNiArIDIsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyB1Y3M0X2NoYXJfc2l6ZSArIDEpCiAgICAgZGVmIHRlc3RfZW5jb2RlX3Jhd191bmljb2RlX2VzY2FwZShzZWxmLCBzaXplKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ3Jhd191bmljb2RlX2VzY2FwZScpCiAgICAgICAgIGV4Y2VwdCBNZW1vcnlFcnJvcjoKICAgICAgICAgICAgIHBhc3MgIyBhY2NlcHRhYmxlIG9uIDMyLWJpdAogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNSArIDcwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKyAxKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDUgKyA3MCwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIHVjczRfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGVfdXRmNyhzZWxmLCBzaXplKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ3V0ZjcnKQogICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CiAgICAgICAgICAgICBwYXNzICMgYWNjZXB0YWJsZSBvbiAzMi1iaXQKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDQgKyA1LCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKyA0KQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDQgKyA1LCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgdWNzNF9jaGFyX3NpemUgKyA0KQogICAgIGRlZiB0ZXN0X2VuY29kZV91dGYzMihzZWxmLCBzaXplKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ3V0ZjMyJywgZXhwZWN0ZWRzaXplPTQqc2l6ZSs0KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ3V0ZjMyJywgZXhwZWN0ZWRzaXplPTQgKiBzaXplICsgNCkKICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgogICAgICAgICAgICAgcGFzcyAjIGFjY2VwdGFibGUgb24gMzItYml0CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAtIDEsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLSAxLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGVfYXNjaWkoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICdhc2NpaScsIGM9J0EnKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogMikKKyAgICAjIHN0ciAlICguLi4pIHVzZXMgYSBQeV9VQ1M0IGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSAqIDIgKyB1Y3M0X2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSAnLScgKiBzaXplCiAgICAgICAgIHNmID0gJyVzJyAlIChzLCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzZikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMgPT0gc2YpCiAgICAgICAgIGRlbCBzZgogICAgICAgICBzZiA9ICcuLiVzLi4nICUgKHMsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZiksIGxlbihzKSArIDQpCkBAIC02NDAsNyArNjcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcuJyksIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnLScpLCBzaXplICogMikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSAqIDIpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSAqIDIpCiAgICAgZGVmIHRlc3RfcmVwcl9zbWFsbChzZWxmLCBzaXplKToKICAgICAgICAgcyA9ICctJyAqIHNpemUKICAgICAgICAgcyA9IHJlcHIocykKQEAgLTY2MSw3ICs2OTMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJ1xcJyksIHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnMCcpLCBzaXplICogMikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSAqIDUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSAqIDUpCiAgICAgZGVmIHRlc3RfcmVwcl9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgcyA9ICdceDAwJyAqIHNpemUKICAgICAgICAgcyA9IHJlcHIocykKQEAgLTY3MSw3ICs3MDMsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCdcXCcpLCBzaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJzAnKSwgc2l6ZSAqIDIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogNykKKyAgICAjIGFzY2lpKCkgY2FsbHMgZW5jb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJyksIHdoaWNoIGl0c2VsZgorICAgICMgY3JlYXRlcyBhIHRlbXBvcmFyeSBQeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uIGluIGFkZGl0aW9uIHRvIHRoZQorICAgICMgb3JpZ2luYWwgKFB5X1VDUzIpIG9uZQorICAgICMgVGhlcmUncyBhbHNvIHNvbWUgb3ZlcmFsbG9jYXRpb24gd2hlbiByZXNpemluZyB0aGUgYXNjaWkoKSByZXN1bHQKKyAgICAjIHRoYXQgaXNuJ3QgdGFrZW4gaW50byBhY2NvdW50IGhlcmUuCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gNSArIDEsIG1lbXVzZT11Y3MyX2NoYXJfc2l6ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y3M0X2NoYXJfc2l6ZSArIGFzY2lpX2NoYXJfc2l6ZSAqIDYpCiAgICAgZGVmIHRlc3RfdW5pY29kZV9yZXByKHNlbGYsIHNpemUpOgogICAgICAgICAjIFVzZSBhbiBhc3NpZ25lZCwgYnV0IG5vdCBwcmludGFibGUgY29kZSBwb2ludC4KICAgICAgICAgIyBJdCBpcyBpbiB0aGUgcmFuZ2Ugb2YgdGhlIGxvdyBzdXJyb2dhdGVzIFx1REMwMC1cdURGRkYuCkBAIC02ODYsOSArNzI0LDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHIgPSBzID0gTm9uZQogCi0gICAgIyBUaGUgY2hhcmFjdGVyIHRha2VzIDQgYnl0ZXMgZXZlbiBpbiBVQ1MtMiBidWlsZHMgYmVjYXVzZSBpdCB3aWxsCi0gICAgIyBiZSBkZWNvbXBvc2VkIGludG8gc3Vycm9nYXRlcy4KLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPTQgKyBjaGFyYWN0ZXJfc2l6ZSAqIDkpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gNSArIDEsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDIgKyBhc2NpaV9jaGFyX3NpemUgKiAxMCkKICAgICBkZWYgdGVzdF91bmljb2RlX3JlcHJfd2lkZShzZWxmLCBzaXplKToKICAgICAgICAgY2hhciA9ICJcVTAwMDFEQ0JBIgogICAgICAgICBzID0gY2hhciAqIHNpemUKQEAgLTcwMSwzOSArNzM3LDc2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByID0gcyA9IE5vbmUKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDUsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSAqICg2ICsgMSkpCi0gICAgZGVmIF90ZXN0X3VuaWNvZGVfcmVwcl9vdmVyZmxvdyhzZWxmLCBzaXplKToKLSAgICAgICAgIyBYWFggbm90IHN1cmUgd2hhdCB0aGlzIHRlc3QgaXMgYWJvdXQKLSAgICAgICAgY2hhciA9ICJcdURDQkEiCi0gICAgICAgIHMgPSBjaGFyICogc2l6ZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByID0gcmVwcihzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMgPT0gZXZhbChyKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHIgPSBzID0gTm9uZQorICAgICMgVGhlIG9yaWdpbmFsIHRlc3RfdHJhbnNsYXRlIGlzIG92ZXJyaWRlbiBoZXJlLCBzbyBhcyB0byBnZXQgdGhlCisgICAgIyBjb3JyZWN0IHNpemUgZXN0aW1hdGU6IHN0ci50cmFuc2xhdGUoKSB1c2VzIGFuIGludGVybWVkaWF0ZSBQeV9VQ1M0CisgICAgIyByZXByZXNlbnRhdGlvbi4KKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogMiArIHVjczRfY2hhcl9zaXplKQorICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmLCBzaXplKToKKyAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKKyAgICAgICAgU1VCU1RSID0gXygnYVp6LnouQWF6LicpCisgICAgICAgIHRyYW5zID0geworICAgICAgICAgICAgb3JkKF8oJy4nKSk6IF8oJy0nKSwKKyAgICAgICAgICAgIG9yZChfKCdhJykpOiBfKCchJyksCisgICAgICAgICAgICBvcmQoXygnWicpKTogXygnJCcpLAorICAgICAgICB9CisgICAgICAgIHN1YmxlbiA9IGxlbihTVUJTVFIpCisgICAgICAgIHJlcGVhdHMgPSBzaXplIC8vIHN1YmxlbiArIDIKKyAgICAgICAgcyA9IFNVQlNUUiAqIHJlcGVhdHMKKyAgICAgICAgcyA9IHMudHJhbnNsYXRlKHRyYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgcmVwZWF0cyAqIHN1YmxlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzpzdWJsZW5dLCBTVUJTVFIudHJhbnNsYXRlKHRyYW5zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWy1zdWJsZW46XSwgU1VCU1RSLnRyYW5zbGF0ZSh0cmFucykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudChfKCcuJykpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoXygnIScpKSwgcmVwZWF0cyAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudChfKCd6JykpLCByZXBlYXRzICogMykKIAogCiBjbGFzcyBCeXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UsIEJhc2VTdHJUZXN0KToKIAogICAgIGRlZiBmcm9tX2xhdGluMShzZWxmLCBzKToKLSAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCJsYXRpbjEiKQorICAgICAgICByZXR1cm4gcy5lbmNvZGUoImxhdGluLTEiKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gc2VsZi5mcm9tX2xhdGluMSgnLicpICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLmRlY29kZSgndXRmLTgnKSksIHNpemUpCiAKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9jYXBpdGFsaXplKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfdGl0bGUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9zd2FwY2FzZShzaXplKQorCiAKIGNsYXNzIEJ5dGVhcnJheVRlc3QodW5pdHRlc3QuVGVzdENhc2UsIEJhc2VTdHJUZXN0KToKIAogICAgIGRlZiBmcm9tX2xhdGluMShzZWxmLCBzKToKLSAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShzLmVuY29kZSgibGF0aW4xIikpCisgICAgICAgIHJldHVybiBieXRlYXJyYXkocy5lbmNvZGUoImxhdGluLTEiKSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTEgKyBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmLCBzaXplKToKICAgICAgICAgcyA9IHNlbGYuZnJvbV9sYXRpbjEoJy4nKSAqIHNpemUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocy5kZWNvZGUoJ3V0Zi04JykpLCBzaXplKQogCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfY2FwaXRhbGl6ZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3RpdGxlKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3Rfc3dhcGNhc2Uoc2l6ZSkKKwogICAgIHRlc3RfaGFzaCA9IE5vbmUKICAgICB0ZXN0X3NwbGl0X2xhcmdlID0gTm9uZQogCkBAIC03NTIsNyArODI1LDcgQEAKICAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYsIHNpemUpOgogICAgICAgICB0MSA9ICgnJywpICogc2l6ZQogICAgICAgICB0MiA9ICgnJywpICogc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQxID09IHQyKQogICAgICAgICBkZWwgdDIKICAgICAgICAgdDIgPSAoJycsKSAqIChzaXplICsgMSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0MSA9PSB0MikKQEAgLTc4Myw5ICs4NTYsOSBAQAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYsIHNpemUpOgogICAgICAgICB0ID0gKDEsIDIsIDMsIDQsIDUpICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0KSwgc2l6ZSAqIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oNSwgdCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigoMSwgMiwgMywgNCwgNSksIHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMCwgdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDUgaW4gdCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMSwgMiwgMywgNCwgNSkgaW4gdCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIHQpCiAKICAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9OCkKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYsIHNpemUpOgpAQCAtODY5LDExICs5NDIsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWy01Ol0sICcwLCAwKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnMCcpLCBzaXplKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDMgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9zbWFsbChzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT04ICsgMyAqIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X3JlcHJfbGFyZ2Uoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX3Rlc3RfcmVwcihzaXplKQogCkBAIC04ODgsNyArOTYxLDcgQEAKICAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYsIHNpemUpOgogICAgICAgICBsMSA9IFsnJ10gKiBzaXplCiAgICAgICAgIGwyID0gWycnXSAqIHNpemUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsMSwgbDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsMSA9PSBsMikKICAgICAgICAgZGVsIGwyCiAgICAgICAgIGwyID0gWycnXSAqIChzaXplICsgMSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsMSA9PSBsMikKQEAgLTkzNCw5ICsxMDA3LDkgQEAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmLCBzaXplKToKICAgICAgICAgbCA9IFsxLCAyLCAzLCA0LCA1XSAqIHNpemUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obCksIHNpemUgKiA1KQotICAgICAgICBzZWxmLmFzc2VydEluKDUsIGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oWzEsIDIsIDMsIDQsIDVdLCBsKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKDAsIGwpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg1IGluIGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoWzEsIDIsIDMsIDQsIDVdIGluIGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBsKQogCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPTgpCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmLCBzaXplKToKQEAgLTEwNDQsMTEgKzExMTcsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWy01Ol0sICcwLCAwXScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnMCcpLCBzaXplKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDMgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9zbWFsbChzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT04ICsgMyAqIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X3JlcHJfbGFyZ2Uoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX3Rlc3RfcmVwcihzaXplKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQppbmRleCAxZTllODg4Li4wNGQ4ZjlkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKQEAgLTIwOCw5ICsyMDgsOSBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fSh7IXJ9KSByYWlzZXMgeyFyfSIuZm9ybWF0KGZ1bmMsIGVtcHR5LCBlcnIpKQogCi0gICAgZGVmIHRlc3RfdW5pY29kZV9zdHJpbmdzKHNlbGYpOgotICAgICAgICAjIFVuaWNvZGUgc3RyaW5ncyBhcmUgbm90IGFjY2VwdGVkLgotICAgICAgICBmb3IgZnVuYyBpbiBhbGxfZnVuY3Rpb25zOgorICAgIGRlZiB0ZXN0X3VuaWNvZGVfYjJhKHNlbGYpOgorICAgICAgICAjIFVuaWNvZGUgc3RyaW5ncyBhcmUgbm90IGFjY2VwdGVkIGJ5IGIyYV8qIGZ1bmN0aW9ucy4KKyAgICAgICAgZm9yIGZ1bmMgaW4gc2V0KGFsbF9mdW5jdGlvbnMpIC0gc2V0KGEyYl9mdW5jdGlvbnMpIHwgeydybGVkZWNvZGVfaHF4J306CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhdHRyKGJpbmFzY2lpLCBmdW5jKSwgInRlc3QiKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CkBAIC0yMTgsNiArMjE4LDM0IEBACiAgICAgICAgICMgY3JjX2hxeCBuZWVkcyAyIGFyZ3VtZW50cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpbmFzY2lpLmNyY19ocXgsICJ0ZXN0IiwgMCkKIAorICAgIGRlZiB0ZXN0X3VuaWNvZGVfYTJiKHNlbGYpOgorICAgICAgICAjIFVuaWNvZGUgc3RyaW5ncyBhcmUgYWNjZXB0ZWQgYnkgYTJiXyogZnVuY3Rpb25zLgorICAgICAgICBNQVhfQUxMID0gNDUKKyAgICAgICAgcmF3ID0gc2VsZi5yYXdkYXRhWzpNQVhfQUxMXQorICAgICAgICBmb3IgZmEsIGZiIGluIHppcChhMmJfZnVuY3Rpb25zLCBiMmFfZnVuY3Rpb25zKToKKyAgICAgICAgICAgIGlmIGZhID09ICdybGVkZWNvZGVfaHF4JzoKKyAgICAgICAgICAgICAgICAjIFRha2VzIG5vbi1BU0NJSSBkYXRhCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGEyYiA9IGdldGF0dHIoYmluYXNjaWksIGZhKQorICAgICAgICAgICAgYjJhID0gZ2V0YXR0cihiaW5hc2NpaSwgZmIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYSA9IGIyYShzZWxmLnR5cGUydGVzdChyYXcpKQorICAgICAgICAgICAgICAgIGJpbmFyeV9yZXMgPSBhMmIoYSkKKyAgICAgICAgICAgICAgICBhID0gYS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgICAgICByZXMgPSBhMmIoYSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgie30ve30gY29udmVyc2lvbiByYWlzZXMgeyFyfSIuZm9ybWF0KGZiLCBmYSwgZXJyKSkKKyAgICAgICAgICAgIGlmIGZiID09ICdiMmFfaHF4JzoKKyAgICAgICAgICAgICAgICAjIGIyYV9ocXggcmV0dXJucyBhIHR1cGxlCisgICAgICAgICAgICAgICAgcmVzLCBfID0gcmVzCisgICAgICAgICAgICAgICAgYmluYXJ5X3JlcywgXyA9IGJpbmFyeV9yZXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCByYXcsICJ7fS97fSBjb252ZXJzaW9uOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7IXJ9ICE9IHshcn0iLmZvcm1hdChmYiwgZmEsIHJlcywgcmF3KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBiaW5hcnlfcmVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlcywgYnl0ZXMpCisgICAgICAgICAgICAjIG5vbi1BU0NJSSBzdHJpbmcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEyYiwgIlx4ODAiKQorCiAKIGNsYXNzIEFycmF5QmluQVNDSUlUZXN0KEJpbkFTQ0lJVGVzdCk6CiAgICAgZGVmIHR5cGUydGVzdChzZWxmLCBzKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weSBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQppbmRleCBiMjk2ODcwLi40YmFiMjhiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CkBAIC0zMzAsNiArMzMwLDE2IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IChFeGNlcHRpb24pIGFzIGVfbGVuOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlX2Jvb2wpLCBzdHIoZV9sZW4pKQogCisgICAgZGVmIHRlc3RfcmVhbF9hbmRfaW1hZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLnJlYWwsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5pbWFnLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoVHJ1ZS5yZWFsKSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoVHJ1ZS5pbWFnKSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLnJlYWwsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UuaW1hZywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZhbHNlLnJlYWwpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGYWxzZS5pbWFnKSwgaW50KQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQm9vbFRlc3QpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZjZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CkBAIC0wLDAgKzEsNDI3MyBAQAorIworIyBUaGUgbmRhcnJheSBvYmplY3QgZnJvbSBfdGVzdGJ1ZmZlci5jIGlzIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YKKyMgYSBQRVAtMzExOCBidWZmZXIgcHJvdmlkZXIuIEl0IGlzIGluZGVwZW5kZW50IGZyb20gTnVtUHkncyBuZGFycmF5CisjIGFuZCB0aGUgdGVzdHMgZG9uJ3QgcmVxdWlyZSBOdW1QeS4KKyMKKyMgSWYgTnVtUHkgaXMgcHJlc2VudCwgc29tZSB0ZXN0cyBjaGVjayBib3RoIG5kYXJyYXkgaW1wbGVtZW50YXRpb25zCisjIGFnYWluc3QgZWFjaCBvdGhlci4KKyMKKyMgTW9zdCBuZGFycmF5IHRlc3RzIGFsc28gY2hlY2sgdGhhdCBtZW1vcnl2aWV3KG5kYXJyYXkpIGJlaGF2ZXMgaW4KKyMgdGhlIHNhbWUgd2F5IGFzIHRoZSBvcmlnaW5hbC4gVGh1cywgYSBzdWJzdGFudGlhbCBwYXJ0IG9mIHRoZQorIyBtZW1vcnl2aWV3IHRlc3RzIGlzIG5vdyBpbiB0aGlzIG1vZHVsZS4KKyMKKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMsIHByb2R1Y3QKK2Zyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNhbXBsZSwgY2hvaWNlCitmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKK2ltcG9ydCB3YXJuaW5ncworaW1wb3J0IHN5cywgYXJyYXksIGlvCitmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKK2Zyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgorCit0cnk6CisgICAgZnJvbSBfdGVzdGJ1ZmZlciBpbXBvcnQgKgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG5kYXJyYXkgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgc3RydWN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgc3RydWN0ID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGN0eXBlcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGN0eXBlcyA9IE5vbmUKKwordHJ5OgorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgZnJvbSBudW1weSBpbXBvcnQgbmRhcnJheSBhcyBudW1weV9hcnJheQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG51bXB5X2FycmF5ID0gTm9uZQorCisKK1NIT1JUX1RFU1QgPSBUcnVlCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICBSYW5kb20gbGlzdHMgYnkgZm9ybWF0IHNwZWNpZmllcgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgTmF0aXZlIGZvcm1hdCBjaGFycyBhbmQgdGhlaXIgcmFuZ2VzLgorTkFUSVZFID0geworICAgICc/JzowLCAnYyc6MCwgJ2InOjAsICdCJzowLAorICAgICdoJzowLCAnSCc6MCwgJ2knOjAsICdJJzowLAorICAgICdsJzowLCAnTCc6MCwgJ24nOjAsICdOJzowLAorICAgICdmJzowLCAnZCc6MCwgJ1AnOjAKK30KKworIyBOdW1QeSBkb2VzIG5vdCBoYXZlICduJyBvciAnTic6CitpZiBudW1weV9hcnJheToKKyAgICBkZWwgTkFUSVZFWyduJ10KKyAgICBkZWwgTkFUSVZFWydOJ10KKworaWYgc3RydWN0OgorICAgIHRyeToKKyAgICAgICAgIyBBZGQgInFRIiBpZiBwcmVzZW50IGluIG5hdGl2ZSBtb2RlLgorICAgICAgICBzdHJ1Y3QucGFjaygnUScsIDIqKjY0LTEpCisgICAgICAgIE5BVElWRVsncSddID0gMAorICAgICAgICBOQVRJVkVbJ1EnXSA9IDAKKyAgICBleGNlcHQgc3RydWN0LmVycm9yOgorICAgICAgICBwYXNzCisKKyMgU3RhbmRhcmQgZm9ybWF0IGNoYXJzIGFuZCB0aGVpciByYW5nZXMuCitTVEFOREFSRCA9IHsKKyAgICAnPyc6KDAsIDIpLCAgICAgICAgICAgICdjJzooMCwgMTw8OCksCisgICAgJ2InOigtKDE8PDcpLCAxPDw3KSwgICAnQic6KDAsIDE8PDgpLAorICAgICdoJzooLSgxPDwxNSksIDE8PDE1KSwgJ0gnOigwLCAxPDwxNiksCisgICAgJ2knOigtKDE8PDMxKSwgMTw8MzEpLCAnSSc6KDAsIDE8PDMyKSwKKyAgICAnbCc6KC0oMTw8MzEpLCAxPDwzMSksICdMJzooMCwgMTw8MzIpLAorICAgICdxJzooLSgxPDw2MyksIDE8PDYzKSwgJ1EnOigwLCAxPDw2NCksCisgICAgJ2YnOigtKDE8PDYzKSwgMTw8NjMpLCAnZCc6KC0oMTw8MTAyMyksIDE8PDEwMjMpCit9CisKK2RlZiBuYXRpdmVfdHlwZV9yYW5nZShmbXQpOgorICAgICIiIlJldHVybiByYW5nZSBvZiBhIG5hdGl2ZSB0eXBlLiIiIgorICAgIGlmIGZtdCA9PSAnYyc6CisgICAgICAgIGxoID0gKDAsIDI1NikKKyAgICBlbGlmIGZtdCA9PSAnPyc6CisgICAgICAgIGxoID0gKDAsIDIpCisgICAgZWxpZiBmbXQgPT0gJ2YnOgorICAgICAgICBsaCA9ICgtKDE8PDYzKSwgMTw8NjMpCisgICAgZWxpZiBmbXQgPT0gJ2QnOgorICAgICAgICBsaCA9ICgtKDE8PDEwMjMpLCAxPDwxMDIzKQorICAgIGVsc2U6CisgICAgICAgIGZvciBleHAgaW4gKDEyOCwgMTI3LCA2NCwgNjMsIDMyLCAzMSwgMTYsIDE1LCA4LCA3KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjayhmbXQsICgxPDxleHApLTEpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBsaCA9ICgtKDE8PGV4cCksIDE8PGV4cCkgaWYgZXhwICYgMSBlbHNlICgwLCAxPDxleHApCisgICAgcmV0dXJuIGxoCisKK2ZtdGRpY3QgPSB7CisgICAgJyc6TkFUSVZFLAorICAgICdAJzpOQVRJVkUsCisgICAgJzwnOlNUQU5EQVJELAorICAgICc+JzpTVEFOREFSRCwKKyAgICAnPSc6U1RBTkRBUkQsCisgICAgJyEnOlNUQU5EQVJECit9CisKK2lmIHN0cnVjdDoKKyAgICBmb3IgZm10IGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgZm10ZGljdFsnQCddW2ZtdF0gPSBuYXRpdmVfdHlwZV9yYW5nZShmbXQpCisKK01FTU9SWVZJRVcgPSBOQVRJVkUuY29weSgpCitBUlJBWSA9IE5BVElWRS5jb3B5KCkKK2ZvciBrIGluIE5BVElWRToKKyAgICBpZiBub3QgayBpbiAiYkJoSGlJbExmZCI6CisgICAgICAgIGRlbCBBUlJBWVtrXQorCitCWVRFRk1UID0gTkFUSVZFLmNvcHkoKQorZm9yIGsgaW4gTkFUSVZFOgorICAgIGlmIG5vdCBrIGluICJCYmMiOgorICAgICAgICBkZWwgQllURUZNVFtrXQorCitmbXRkaWN0WydtJ10gID0gTUVNT1JZVklFVworZm10ZGljdFsnQG0nXSA9IE1FTU9SWVZJRVcKK2ZtdGRpY3RbJ2EnXSAgPSBBUlJBWQorZm10ZGljdFsnYiddICA9IEJZVEVGTVQKK2ZtdGRpY3RbJ0BiJ10gID0gQllURUZNVAorCisjIENhcGFiaWxpdGllcyBvZiB0aGUgdGVzdCBvYmplY3RzOgorTU9ERSA9IDAKK01VTFQgPSAxCitjYXAgPSB7ICAgICAgICAgIyBmb3JtYXQgY2hhcnMgICAgICAgICAgICAgICAgICAjIG11bHRpcGxpZXIKKyAgJ25kYXJyYXknOiAgICAoWycnLCAnQCcsICc8JywgJz4nLCAnPScsICchJ10sIFsnJywgJzEnLCAnMicsICczJ10pLAorICAnYXJyYXknOiAgICAgIChbJ2EnXSwgICAgICAgICAgICAgICAgICAgICAgICAgWycnXSksCisgICdudW1weSc6ICAgICAgKFsnJ10sICAgICAgICAgICAgICAgICAgICAgICAgICBbJyddKSwKKyAgJ21lbW9yeXZpZXcnOiAoWydAbScsICdtJ10sICAgICAgICAgICAgICAgICAgIFsnJ10pLAorICAnYnl0ZWZtdCc6ICAgIChbJ0BiJywgJ2InXSwgICAgICAgICAgICAgICAgICAgWycnXSksCit9CisKK2RlZiByYW5kcmFuZ2VfZm10KG1vZGUsIGNoYXIsIG9iaik6CisgICAgIiIiUmV0dXJuIHJhbmRvbSBpdGVtIGZvciBhIHR5cGUgc3BlY2lmaWVkIGJ5IGEgbW9kZSBhbmQgYSBzaW5nbGUKKyAgICAgICBmb3JtYXQgY2hhcmFjdGVyLiIiIgorICAgIHggPSByYW5kcmFuZ2UoKmZtdGRpY3RbbW9kZV1bY2hhcl0pCisgICAgaWYgY2hhciA9PSAnYyc6CisgICAgICAgIHggPSBieXRlcyhjaHIoeCksICdsYXRpbjEnKQorICAgIGlmIGNoYXIgPT0gJz8nOgorICAgICAgICB4ID0gYm9vbCh4KQorICAgIGlmIGNoYXIgPT0gJ2YnIG9yIGNoYXIgPT0gJ2QnOgorICAgICAgICB4ID0gc3RydWN0LnBhY2soY2hhciwgeCkKKyAgICAgICAgeCA9IHN0cnVjdC51bnBhY2soY2hhciwgeClbMF0KKyAgICBpZiBvYmogPT0gJ251bXB5JyBhbmQgeCA9PSBiJ1x4MDAnOgorICAgICAgICAjIGh0dHA6Ly9wcm9qZWN0cy5zY2lweS5vcmcvbnVtcHkvdGlja2V0LzE5MjUKKyAgICAgICAgeCA9IGInXHgwMScKKyAgICByZXR1cm4geAorCitkZWYgZ2VuX2l0ZW0oZm10LCBvYmopOgorICAgICIiIlJldHVybiBzaW5nbGUgcmFuZG9tIGl0ZW0uIiIiCisgICAgbW9kZSwgY2hhcnMgPSBmbXQuc3BsaXQoJyMnKQorICAgIHggPSBbXQorICAgIGZvciBjIGluIGNoYXJzOgorICAgICAgICB4LmFwcGVuZChyYW5kcmFuZ2VfZm10KG1vZGUsIGMsIG9iaikpCisgICAgcmV0dXJuIHhbMF0gaWYgbGVuKHgpID09IDEgZWxzZSB0dXBsZSh4KQorCitkZWYgZ2VuX2l0ZW1zKG4sIGZtdCwgb2JqKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHJhbmRvbSBpdGVtcyAob3IgYSBzY2FsYXIpLiIiIgorICAgIGlmIG4gPT0gMDoKKyAgICAgICAgcmV0dXJuIGdlbl9pdGVtKGZtdCwgb2JqKQorICAgIGxzdCA9IFswXSAqIG4KKyAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgbHN0W2ldID0gZ2VuX2l0ZW0oZm10LCBvYmopCisgICAgcmV0dXJuIGxzdAorCitkZWYgc3RydWN0X2l0ZW1zKG4sIG9iaik6CisgICAgbW9kZSA9IGNob2ljZShjYXBbb2JqXVtNT0RFXSkKKyAgICB4Zm10ID0gbW9kZSArICcjJworICAgIGZtdCA9IG1vZGUuc3RyaXAoJ2FtYicpCisgICAgbm1lbWIgPSByYW5kcmFuZ2UoMiwgMTApICMgbnVtYmVyIG9mIHN0cnVjdCBtZW1iZXJzCisgICAgZm9yIF8gaW4gcmFuZ2Uobm1lbWIpOgorICAgICAgICBjaGFyID0gY2hvaWNlKHR1cGxlKGZtdGRpY3RbbW9kZV0pKQorICAgICAgICBtdWx0aXBsaWVyID0gY2hvaWNlKGNhcFtvYmpdW01VTFRdKQorICAgICAgICB4Zm10ICs9IChjaGFyICogaW50KG11bHRpcGxpZXIgaWYgbXVsdGlwbGllciBlbHNlIDEpKQorICAgICAgICBmbXQgKz0gKG11bHRpcGxpZXIgKyBjaGFyKQorICAgIGl0ZW1zID0gZ2VuX2l0ZW1zKG4sIHhmbXQsIG9iaikKKyAgICBpdGVtID0gZ2VuX2l0ZW0oeGZtdCwgb2JqKQorICAgIHJldHVybiBmbXQsIGl0ZW1zLCBpdGVtCisKK2RlZiByYW5kaXRlbXMobiwgb2JqPSduZGFycmF5JywgbW9kZT1Ob25lLCBjaGFyPU5vbmUpOgorICAgICIiIlJldHVybiByYW5kb20gZm9ybWF0LCBpdGVtcywgaXRlbS4iIiIKKyAgICBpZiBtb2RlIGlzIE5vbmU6CisgICAgICAgIG1vZGUgPSBjaG9pY2UoY2FwW29ial1bTU9ERV0pCisgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICBjaGFyID0gY2hvaWNlKHR1cGxlKGZtdGRpY3RbbW9kZV0pKQorICAgIG11bHRpcGxpZXIgPSBjaG9pY2UoY2FwW29ial1bTVVMVF0pCisgICAgZm10ID0gbW9kZSArICcjJyArIGNoYXIgKiBpbnQobXVsdGlwbGllciBpZiBtdWx0aXBsaWVyIGVsc2UgMSkKKyAgICBpdGVtcyA9IGdlbl9pdGVtcyhuLCBmbXQsIG9iaikKKyAgICBpdGVtID0gZ2VuX2l0ZW0oZm10LCBvYmopCisgICAgZm10ID0gbW9kZS5zdHJpcCgnYW1iJykgKyBtdWx0aXBsaWVyICsgY2hhcgorICAgIHJldHVybiBmbXQsIGl0ZW1zLCBpdGVtCisKK2RlZiBpdGVyX21vZGUobiwgb2JqPSduZGFycmF5Jyk6CisgICAgIiIiSXRlcmF0ZSB0aHJvdWdoIHN1cHBvcnRlZCBtb2RlL2NoYXIgY29tYmluYXRpb25zLiIiIgorICAgIGZvciBtb2RlIGluIGNhcFtvYmpdW01PREVdOgorICAgICAgICBmb3IgY2hhciBpbiBmbXRkaWN0W21vZGVdOgorICAgICAgICAgICAgeWllbGQgcmFuZGl0ZW1zKG4sIG9iaiwgbW9kZSwgY2hhcikKKworZGVmIGl0ZXJfZm9ybWF0KG5pdGVtcywgdGVzdG9iaj0nbmRhcnJheScpOgorICAgICIiIllpZWxkIChmb3JtYXQsIGl0ZW1zLCBpdGVtKSBmb3IgYWxsIHBvc3NpYmxlIG1vZGVzIGFuZCBmb3JtYXQKKyAgICAgICBjaGFyYWN0ZXJzIHBsdXMgb25lIHJhbmRvbSBjb21wb3VuZCBmb3JtYXQgc3RyaW5nLiIiIgorICAgIGZvciB0IGluIGl0ZXJfbW9kZShuaXRlbXMsIHRlc3RvYmopOgorICAgICAgICB5aWVsZCB0CisgICAgaWYgdGVzdG9iaiAhPSAnbmRhcnJheSc6CisgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICB5aWVsZCBzdHJ1Y3RfaXRlbXMobml0ZW1zLCB0ZXN0b2JqKQorCisKK2RlZiBpc19ieXRlX2Zvcm1hdChmbXQpOgorICAgIHJldHVybiAnYycgaW4gZm10IG9yICdiJyBpbiBmbXQgb3IgJ0InIGluIGZtdAorCitkZWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAiIiJmb3JtYXQgc3VpdGFibGUgZm9yIG1lbW9yeXZpZXciIiIKKyAgICB4ID0gbGVuKGZtdCkKKyAgICByZXR1cm4gKCh4ID09IDEgb3IgKHggPT0gMiBhbmQgZm10WzBdID09ICdAJykpIGFuZAorICAgICAgICAgICAgZm10W3gtMV0gaW4gTUVNT1JZVklFVykKKworTk9OX0JZVEVfRk9STUFUID0gW2MgZm9yIGMgaW4gZm10ZGljdFsnQCddIGlmIG5vdCBpc19ieXRlX2Zvcm1hdChjKV0KKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgTXVsdGktZGltZW5zaW9uYWwgdG9saXN0KCksIHNsaWNpbmcgYW5kIHNsaWNlIGFzc2lnbm1lbnRzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIGF0b21wKGxzdCk6CisgICAgIiIiVHVwbGUgaXRlbXMgKHJlcHJlc2VudGluZyBzdHJ1Y3RzKSBhcmUgcmVnYXJkZWQgYXMgYXRvbXMuIiIiCisgICAgcmV0dXJuIG5vdCBpc2luc3RhbmNlKGxzdCwgbGlzdCkKKworZGVmIGxpc3RwKGxzdCk6CisgICAgcmV0dXJuIGlzaW5zdGFuY2UobHN0LCBsaXN0KQorCitkZWYgcHJvZChsc3QpOgorICAgICIiIlByb2R1Y3Qgb2YgbGlzdCBlbGVtZW50cy4iIiIKKyAgICBpZiBsZW4obHN0KSA9PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIHggPSBsc3RbMF0KKyAgICBmb3IgdiBpbiBsc3RbMTpdOgorICAgICAgICB4ICo9IHYKKyAgICByZXR1cm4geAorCitkZWYgc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCBpdGVtc2l6ZSwgbGF5b3V0KToKKyAgICAiIiJDYWxjdWxhdGUgc3RyaWRlcyBvZiBhIGNvbnRpZ3VvdXMgYXJyYXkuIExheW91dCBpcyAnQycgb3IKKyAgICAgICAnRicgKEZvcnRyYW4pLiIiIgorICAgIGlmIG5kaW0gPT0gMDoKKyAgICAgICAgcmV0dXJuICgpCisgICAgaWYgbGF5b3V0ID09ICdDJzoKKyAgICAgICAgc3RyaWRlcyA9IGxpc3Qoc2hhcGVbMTpdKSArIFtpdGVtc2l6ZV0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobmRpbS0yLCAtMSwgLTEpOgorICAgICAgICAgICAgc3RyaWRlc1tpXSAqPSBzdHJpZGVzW2krMV0KKyAgICBlbHNlOgorICAgICAgICBzdHJpZGVzID0gW2l0ZW1zaXplXSArIGxpc3Qoc2hhcGVbOi0xXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbmRpbSk6CisgICAgICAgICAgICBzdHJpZGVzW2ldICo9IHN0cmlkZXNbaS0xXQorICAgIHJldHVybiBzdHJpZGVzCisKK2RlZiBfY2EoaXRlbXMsIHMpOgorICAgICIiIkNvbnZlcnQgZmxhdCBpdGVtIGxpc3QgdG8gdGhlIG5lc3RlZCBsaXN0IHJlcHJlc2VudGF0aW9uIG9mIGEKKyAgICAgICBtdWx0aWRpbWVuc2lvbmFsIEMgYXJyYXkgd2l0aCBzaGFwZSAncycuIiIiCisgICAgaWYgYXRvbXAoaXRlbXMpOgorICAgICAgICByZXR1cm4gaXRlbXMKKyAgICBpZiBsZW4ocykgPT0gMDoKKyAgICAgICAgcmV0dXJuIGl0ZW1zWzBdCisgICAgbHN0ID0gWzBdICogc1swXQorICAgIHN0cmlkZSA9IGxlbihpdGVtcykgLy8gc1swXSBpZiBzWzBdIGVsc2UgMAorICAgIGZvciBpIGluIHJhbmdlKHNbMF0pOgorICAgICAgICBzdGFydCA9IGkqc3RyaWRlCisgICAgICAgIGxzdFtpXSA9IF9jYShpdGVtc1tzdGFydDpzdGFydCtzdHJpZGVdLCBzWzE6XSkKKyAgICByZXR1cm4gbHN0CisKK2RlZiBfZmEoaXRlbXMsIHMpOgorICAgICIiIkNvbnZlcnQgZmxhdCBpdGVtIGxpc3QgdG8gdGhlIG5lc3RlZCBsaXN0IHJlcHJlc2VudGF0aW9uIG9mIGEKKyAgICAgICBtdWx0aWRpbWVuc2lvbmFsIEZvcnRyYW4gYXJyYXkgd2l0aCBzaGFwZSAncycuIiIiCisgICAgaWYgYXRvbXAoaXRlbXMpOgorICAgICAgICByZXR1cm4gaXRlbXMKKyAgICBpZiBsZW4ocykgPT0gMDoKKyAgICAgICAgcmV0dXJuIGl0ZW1zWzBdCisgICAgbHN0ID0gWzBdICogc1swXQorICAgIHN0cmlkZSA9IHNbMF0KKyAgICBmb3IgaSBpbiByYW5nZShzWzBdKToKKyAgICAgICAgbHN0W2ldID0gX2ZhKGl0ZW1zW2k6OnN0cmlkZV0sIHNbMTpdKQorICAgIHJldHVybiBsc3QKKworZGVmIGNhcnJheShpdGVtcywgc2hhcGUpOgorICAgIGlmIGxpc3RwKGl0ZW1zKSBhbmQgbm90IDAgaW4gc2hhcGUgYW5kIHByb2Qoc2hhcGUpICE9IGxlbihpdGVtcyk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByb2Qoc2hhcGUpICE9IGxlbihpdGVtcykiKQorICAgIHJldHVybiBfY2EoaXRlbXMsIHNoYXBlKQorCitkZWYgZmFycmF5KGl0ZW1zLCBzaGFwZSk6CisgICAgaWYgbGlzdHAoaXRlbXMpIGFuZCBub3QgMCBpbiBzaGFwZSBhbmQgcHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKSIpCisgICAgcmV0dXJuIF9mYShpdGVtcywgc2hhcGUpCisKK2RlZiBpbmRpY2VzKHNoYXBlKToKKyAgICAiIiJHZW5lcmF0ZSBhbGwgcG9zc2libGUgdHVwbGVzIG9mIGluZGljZXMuIiIiCisgICAgaXRlcmFibGVzID0gW3JhbmdlKHYpIGZvciB2IGluIHNoYXBlXQorICAgIHJldHVybiBwcm9kdWN0KCppdGVyYWJsZXMpCisKK2RlZiBnZXRpbmRleChuZGltLCBpbmQsIHN0cmlkZXMpOgorICAgICIiIkNvbnZlcnQgbXVsdGktZGltZW5zaW9uYWwgaW5kZXggdG8gdGhlIHBvc2l0aW9uIGluIHRoZSBmbGF0IGxpc3QuIiIiCisgICAgcmV0ID0gMAorICAgIGZvciBpIGluIHJhbmdlKG5kaW0pOgorICAgICAgICByZXQgKz0gc3RyaWRlc1tpXSAqIGluZFtpXQorICAgIHJldHVybiByZXQKKworZGVmIHRyYW5zcG9zZShzcmMsIHNoYXBlKToKKyAgICAiIiJUcmFuc3Bvc2UgZmxhdCBpdGVtIGxpc3QgdGhhdCBpcyByZWdhcmRlZCBhcyBhIG11bHRpLWRpbWVuc2lvbmFsCisgICAgICAgbWF0cml4IGRlZmluZWQgYnkgc2hhcGU6IGRlc3QuLi5ba11bal1baV0gPSBzcmNbaV1bal1ba10uLi4gICIiIgorICAgIGlmIG5vdCBzaGFwZToKKyAgICAgICAgcmV0dXJuIHNyYworICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgc3N0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIDEsICdDJykKKyAgICBkc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZVs6Oi0xXSwgMSwgJ0MnKQorICAgIGRlc3QgPSBbMF0gKiBsZW4oc3JjKQorICAgIGZvciBpbmQgaW4gaW5kaWNlcyhzaGFwZSk6CisgICAgICAgIGZyID0gZ2V0aW5kZXgobmRpbSwgaW5kLCBzc3RyaWRlcykKKyAgICAgICAgdG8gPSBnZXRpbmRleChuZGltLCBpbmRbOjotMV0sIGRzdHJpZGVzKQorICAgICAgICBkZXN0W3RvXSA9IHNyY1tmcl0KKyAgICByZXR1cm4gZGVzdAorCitkZWYgX2ZsYXR0ZW4obHN0KToKKyAgICAiIiJmbGF0dGVuIGxpc3QiIiIKKyAgICBpZiBsc3QgPT0gW106CisgICAgICAgIHJldHVybiBsc3QKKyAgICBpZiBhdG9tcChsc3QpOgorICAgICAgICByZXR1cm4gW2xzdF0KKyAgICByZXR1cm4gX2ZsYXR0ZW4obHN0WzBdKSArIF9mbGF0dGVuKGxzdFsxOl0pCisKK2RlZiBmbGF0dGVuKGxzdCk6CisgICAgIiIiZmxhdHRlbiBsaXN0IG9yIHJldHVybiBzY2FsYXIiIiIKKyAgICBpZiBhdG9tcChsc3QpOiAjIHNjYWxhcgorICAgICAgICByZXR1cm4gbHN0CisgICAgcmV0dXJuIF9mbGF0dGVuKGxzdCkKKworZGVmIHNsaWNlX3NoYXBlKGxzdCwgc2xpY2VzKToKKyAgICAiIiJHZXQgdGhlIHNoYXBlIG9mIGxzdCBhZnRlciBzbGljaW5nOiBzbGljZXMgaXMgYSBsaXN0IG9mIHNsaWNlCisgICAgICAgb2JqZWN0cy4iIiIKKyAgICBpZiBhdG9tcChsc3QpOgorICAgICAgICByZXR1cm4gW10KKyAgICByZXR1cm4gW2xlbihsc3Rbc2xpY2VzWzBdXSldICsgc2xpY2Vfc2hhcGUobHN0WzBdLCBzbGljZXNbMTpdKQorCitkZWYgbXVsdGlzbGljZShsc3QsIHNsaWNlcyk6CisgICAgIiIiTXVsdGktZGltZW5zaW9uYWwgc2xpY2luZzogc2xpY2VzIGlzIGEgbGlzdCBvZiBzbGljZSBvYmplY3RzLiIiIgorICAgIGlmIGF0b21wKGxzdCk6CisgICAgICAgIHJldHVybiBsc3QKKyAgICByZXR1cm4gW211bHRpc2xpY2Uoc3VibHN0LCBzbGljZXNbMTpdKSBmb3Igc3VibHN0IGluIGxzdFtzbGljZXNbMF1dXQorCitkZWYgbV9hc3NpZ24obGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcyk6CisgICAgIiIiTXVsdGktZGltZW5zaW9uYWwgc2xpY2UgYXNzaWdubWVudDogbGxzdCBhbmQgcmxzdCBhcmUgdGhlIG9wZXJhbmRzLAorICAgICAgIGxzbGljZXMgYW5kIHJzbGljZXMgYXJlIGxpc3RzIG9mIHNsaWNlIG9iamVjdHMuIGxsc3QgYW5kIHJsc3QgbXVzdAorICAgICAgIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlLgorCisgICAgICAgRm9yIGEgdHdvLWRpbWVuc2lvbmFsIGV4YW1wbGUsIHRoaXMgaXMgbm90IGltcGxlbWVudGVkIGluIFB5dGhvbjoKKworICAgICAgICAgbGxzdFswOjM6MiwgMDozOjJdID0gcmxzdFsxOjM6MSwgMTozOjFdCisKKyAgICAgICBJbnN0ZWFkIHdlIHdyaXRlOgorCisgICAgICAgICBsc2xpY2VzID0gW3NsaWNlKDAsMywyKSwgc2xpY2UoMCwzLDIpXQorICAgICAgICAgcnNsaWNlcyA9IFtzbGljZSgxLDMsMSksIHNsaWNlKDEsMywxKV0KKyAgICAgICAgIG11bHRpc2xpY2VfYXNzaWduKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpCisgICAgIiIiCisgICAgaWYgYXRvbXAocmxzdCk6CisgICAgICAgIHJldHVybiBybHN0CisgICAgcmxzdCA9IFttX2Fzc2lnbihsLCByLCBsc2xpY2VzWzE6XSwgcnNsaWNlc1sxOl0pCisgICAgICAgICAgICBmb3IgbCwgciBpbiB6aXAobGxzdFtsc2xpY2VzWzBdXSwgcmxzdFtyc2xpY2VzWzBdXSldCisgICAgbGxzdFtsc2xpY2VzWzBdXSA9IHJsc3QKKyAgICByZXR1cm4gbGxzdAorCitkZWYgY21wX3N0cnVjdHVyZShsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKToKKyAgICAiIiJDb21wYXJlIHRoZSBzdHJ1Y3R1cmUgb2YgbGxzdFtsc2xpY2VzXSBhbmQgcmxzdFtyc2xpY2VzXS4iIiIKKyAgICBsc2hhcGUgPSBzbGljZV9zaGFwZShsbHN0LCBsc2xpY2VzKQorICAgIHJzaGFwZSA9IHNsaWNlX3NoYXBlKHJsc3QsIHJzbGljZXMpCisgICAgaWYgKGxlbihsc2hhcGUpICE9IGxlbihyc2hhcGUpKToKKyAgICAgICAgcmV0dXJuIC0xCisgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGxzaGFwZSkpOgorICAgICAgICBpZiBsc2hhcGVbaV0gIT0gcnNoYXBlW2ldOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGlmIGxzaGFwZVtpXSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICByZXR1cm4gMAorCitkZWYgbXVsdGlzbGljZV9hc3NpZ24obGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcyk6CisgICAgIiIiUmV0dXJuIGxsc3QgYWZ0ZXIgYXNzaWduaW5nOiBsbHN0W2xzbGljZXNdID0gcmxzdFtyc2xpY2VzXSIiIgorICAgIGlmIGNtcF9zdHJ1Y3R1cmUobGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcykgPCAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzIikKKyAgICByZXR1cm4gbV9hc3NpZ24obGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcykKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbSBzdHJ1Y3R1cmVzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIworIyBQRVAtMzExOCBpcyB2ZXJ5IHBlcm1pc3NpdmUgd2l0aCByZXNwZWN0IHRvIHRoZSBjb250ZW50cyBvZiBhCisjIFB5X2J1ZmZlci4gSW4gcGFydGljdWxhcjoKKyMKKyMgICAtIHNoYXBlIGNhbiBiZSB6ZXJvCisjICAgLSBzdHJpZGVzIGNhbiBiZSBhbnkgaW50ZWdlciwgaW5jbHVkaW5nIHplcm8KKyMgICAtIG9mZnNldCBjYW4gcG9pbnQgdG8gYW55IGxvY2F0aW9uIGluIHRoZSB1bmRlcmx5aW5nCisjICAgICBtZW1vcnkgYmxvY2ssIHByb3ZpZGVkIHRoYXQgaXQgaXMgYSBtdWx0aXBsZSBvZgorIyAgICAgaXRlbXNpemUuCisjCisjIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIHRlc3QgYW5kIHZlcmlmeSByYW5kb20gc3RydWN0dXJlcworIyBpbiBmdWxsIGdlbmVyYWxpdHkuIEEgc3RydWN0dXJlIGlzIHZhbGlkIGlmZiBpdCBmaXRzIGluIHRoZQorIyB1bmRlcmx5aW5nIG1lbW9yeSBibG9jay4KKyMKKyMgVGhlIHN0cnVjdHVyZSAndCcgKHNob3J0IGZvciAndHVwbGUnKSBpcyBmdWxseSBkZWZpbmVkIGJ5OgorIworIyAgIHQgPSAobWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCkKKyMKKworZGVmIHZlcmlmeV9zdHJ1Y3R1cmUobWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCk6CisgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgcmVwcmVzZW50IGEgdmFsaWQgYXJyYXkgd2l0aGluCisgICAgICAgdGhlIGJvdW5kcyBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeToKKyAgICAgICAgICAgY2hhciAqbWVtOiBzdGFydCBvZiB0aGUgcGh5c2ljYWwgbWVtb3J5IGJsb2NrCisgICAgICAgICAgIG1lbWxlbjogbGVuZ3RoIG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgYmxvY2sKKyAgICAgICAgICAgb2Zmc2V0OiAoY2hhciAqKWJ1ZiAtIG1lbQorICAgICIiIgorICAgIGlmIG9mZnNldCAlIGl0ZW1zaXplOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBvZmZzZXQgPCAwIG9yIG9mZnNldCtpdGVtc2l6ZSA+IG1lbWxlbjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgYW55KHYgJSBpdGVtc2l6ZSBmb3IgdiBpbiBzdHJpZGVzKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBpZiBuZGltIDw9IDA6CisgICAgICAgIHJldHVybiBuZGltID09IDAgYW5kIG5vdCBzaGFwZSBhbmQgbm90IHN0cmlkZXMKKyAgICBpZiAwIGluIHNoYXBlOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgaW1pbiA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA8PSAwKQorICAgIGltYXggPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPiAwKQorCisgICAgcmV0dXJuIDAgPD0gb2Zmc2V0K2ltaW4gYW5kIG9mZnNldCtpbWF4K2l0ZW1zaXplIDw9IG1lbWxlbgorCitkZWYgZ2V0X2l0ZW0obHN0LCBpbmRpY2VzKToKKyAgICBmb3IgaSBpbiBpbmRpY2VzOgorICAgICAgICBsc3QgPSBsc3RbaV0KKyAgICByZXR1cm4gbHN0CisKK2RlZiBtZW1vcnlfaW5kZXgoaW5kaWNlcywgdCk6CisgICAgIiIiTG9jYXRpb24gb2YgYW4gaXRlbSBpbiB0aGUgdW5kZXJseWluZyBtZW1vcnkuIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICBwID0gb2Zmc2V0CisgICAgZm9yIGkgaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIHAgKz0gc3RyaWRlc1tpXSppbmRpY2VzW2ldCisgICAgcmV0dXJuIHAKKworZGVmIGlzX292ZXJsYXBwaW5nKHQpOgorICAgICIiIlRoZSBzdHJ1Y3R1cmUgJ3QnIGlzIG92ZXJsYXBwaW5nIGlmIGF0IGxlYXN0IG9uZSBtZW1vcnkgbG9jYXRpb24KKyAgICAgICBpcyB2aXNpdGVkIHR3aWNlIHdoaWxlIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBwb3NzaWJsZSB0dXBsZXMgb2YKKyAgICAgICBpbmRpY2VzLiIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgPSB0CisgICAgdmlzaXRlZCA9IDE8PG1lbWxlbgorICAgIGZvciBpbmQgaW4gaW5kaWNlcyhzaGFwZSk6CisgICAgICAgIGkgPSBtZW1vcnlfaW5kZXgoaW5kLCB0KQorICAgICAgICBiaXQgPSAxPDxpCisgICAgICAgIGlmIHZpc2l0ZWQgJiBiaXQ6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICB2aXNpdGVkIHw9IGJpdAorICAgIHJldHVybiBGYWxzZQorCitkZWYgcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIHZhbGlkLCBtYXhkaW09NSwgbWF4c2hhcGU9MTYsIHNoYXBlPSgpKToKKyAgICAiIiJSZXR1cm4gcmFuZG9tIHN0cnVjdHVyZToKKyAgICAgICAgICAgKG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQpCisgICAgICAgSWYgJ3ZhbGlkJyBpcyB0cnVlLCB0aGUgcmV0dXJuZWQgc3RydWN0dXJlIGlzIHZhbGlkLCBvdGhlcndpc2UgaW52YWxpZC4KKyAgICAgICBJZiAnc2hhcGUnIGlzIGdpdmVuLCB1c2UgdGhhdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgcmFuZG9tIHNoYXBlLgorICAgICIiIgorICAgIGlmIG5vdCBzaGFwZToKKyAgICAgICAgbmRpbSA9IHJhbmRyYW5nZShtYXhkaW0rMSkKKyAgICAgICAgaWYgKG5kaW0gPT0gMCk6CisgICAgICAgICAgICBpZiB2YWxpZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXNpemUsIGl0ZW1zaXplLCBuZGltLCAoKSwgKCksIDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbml0ZW1zID0gcmFuZHJhbmdlKDEsIDE2KzEpCisgICAgICAgICAgICAgICAgbWVtbGVuID0gbml0ZW1zICogaXRlbXNpemUKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSAtaXRlbXNpemUgaWYgcmFuZHJhbmdlKDIpID09IDAgZWxzZSBtZW1sZW4KKyAgICAgICAgICAgICAgICByZXR1cm4gbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgKCksICgpLCBvZmZzZXQKKworICAgICAgICBtaW5zaGFwZSA9IDIKKyAgICAgICAgbiA9IHJhbmRyYW5nZSgxMDApCisgICAgICAgIGlmIG4gPj0gOTUgYW5kIHZhbGlkOgorICAgICAgICAgICAgbWluc2hhcGUgPSAwCisgICAgICAgIGVsaWYgbiA+PSA5MDoKKyAgICAgICAgICAgIG1pbnNoYXBlID0gMQorICAgICAgICBzaGFwZSA9IFswXSAqIG5kaW0KKworICAgICAgICBmb3IgaSBpbiByYW5nZShuZGltKToKKyAgICAgICAgICAgIHNoYXBlW2ldID0gcmFuZHJhbmdlKG1pbnNoYXBlLCBtYXhzaGFwZSsxKQorICAgIGVsc2U6CisgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisKKyAgICBtYXhzdHJpZGUgPSA1CisgICAgbiA9IHJhbmRyYW5nZSgxMDApCisgICAgemVyb19zdHJpZGUgPSBUcnVlIGlmIG4gPj0gOTUgYW5kIG4gJiAxIGVsc2UgRmFsc2UKKworICAgIHN0cmlkZXMgPSBbMF0gKiBuZGltCisgICAgc3RyaWRlc1tuZGltLTFdID0gaXRlbXNpemUgKiByYW5kcmFuZ2UoLW1heHN0cmlkZSwgbWF4c3RyaWRlKzEpCisgICAgaWYgbm90IHplcm9fc3RyaWRlIGFuZCBzdHJpZGVzW25kaW0tMV0gPT0gMDoKKyAgICAgICAgc3RyaWRlc1tuZGltLTFdID0gaXRlbXNpemUKKworICAgIGZvciBpIGluIHJhbmdlKG5kaW0tMiwgLTEsIC0xKToKKyAgICAgICAgbWF4c3RyaWRlICo9IHNoYXBlW2krMV0gaWYgc2hhcGVbaSsxXSBlbHNlIDEKKyAgICAgICAgaWYgemVyb19zdHJpZGU6CisgICAgICAgICAgICBzdHJpZGVzW2ldID0gaXRlbXNpemUgKiByYW5kcmFuZ2UoLW1heHN0cmlkZSwgbWF4c3RyaWRlKzEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdHJpZGVzW2ldID0gKCgxLC0xKVtyYW5kcmFuZ2UoMildICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemUgKiByYW5kcmFuZ2UoMSwgbWF4c3RyaWRlKzEpKQorCisgICAgaW1pbiA9IGltYXggPSAwCisgICAgaWYgbm90IDAgaW4gc2hhcGU6CisgICAgICAgIGltaW4gPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdIDw9IDApCisgICAgICAgIGltYXggPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdID4gMCkKKworICAgIG5pdGVtcyA9IGltYXggLSBpbWluCisgICAgaWYgdmFsaWQ6CisgICAgICAgIG9mZnNldCA9IC1pbWluICogaXRlbXNpemUKKyAgICAgICAgbWVtbGVuID0gb2Zmc2V0ICsgKGltYXgrMSkgKiBpdGVtc2l6ZQorICAgIGVsc2U6CisgICAgICAgIG1lbWxlbiA9ICgtaW1pbiArIGltYXgpICogaXRlbXNpemUKKyAgICAgICAgb2Zmc2V0ID0gLWltaW4taXRlbXNpemUgaWYgcmFuZHJhbmdlKDIpID09IDAgZWxzZSBtZW1sZW4KKyAgICByZXR1cm4gbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldAorCitkZWYgcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIGxpc3RsZW4pOgorICAgICIiIkNyZWF0ZSBhIHJhbmRvbSBzbGljZSBvZiBsZW4gc2xpY2VsZW4gdGhhdCBmaXRzIGludG8gbGlzdGxlbi4iIiIKKyAgICBtYXhzdGFydCA9IGxpc3RsZW4gLSBzbGljZWxlbgorICAgIHN0YXJ0ID0gcmFuZHJhbmdlKG1heHN0YXJ0KzEpCisgICAgbWF4c3RlcCA9IChsaXN0bGVuIC0gc3RhcnQpIC8vIHNsaWNlbGVuIGlmIHNsaWNlbGVuIGVsc2UgMQorICAgIHN0ZXAgPSByYW5kcmFuZ2UoMSwgbWF4c3RlcCsxKQorICAgIHN0b3AgPSBzdGFydCArIHNsaWNlbGVuICogc3RlcAorICAgIHMgPSBzbGljZShzdGFydCwgc3RvcCwgc3RlcCkKKyAgICBfLCBfLCBfLCBjb250cm9sID0gc2xpY2VfaW5kaWNlcyhzLCBsaXN0bGVuKQorICAgIGlmIGNvbnRyb2wgIT0gc2xpY2VsZW46CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgIHJldHVybiBzCisKK2RlZiByYW5kc2xpY2VfZnJvbV9zaGFwZShuZGltLCBzaGFwZSk6CisgICAgIiIiQ3JlYXRlIHR3byBzZXRzIG9mIHNsaWNlcyBmb3IgYW4gYXJyYXkgeCB3aXRoIHNoYXBlICdzaGFwZScKKyAgICAgICBzdWNoIHRoYXQgc2hhcGVvZih4W2xzbGljZXNdKSA9PSBzaGFwZW9mKHhbcnNsaWNlc10pLiIiIgorICAgIGxzbGljZXMgPSBbMF0gKiBuZGltCisgICAgcnNsaWNlcyA9IFswXSAqIG5kaW0KKyAgICBmb3IgbiBpbiByYW5nZShuZGltKToKKyAgICAgICAgbCA9IHNoYXBlW25dCisgICAgICAgIHNsaWNlbGVuID0gcmFuZHJhbmdlKDEsIGwrMSkgaWYgbCA+IDAgZWxzZSAwCisgICAgICAgIGxzbGljZXNbbl0gPSByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbCkKKyAgICAgICAgcnNsaWNlc1tuXSA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBsKQorICAgIHJldHVybiB0dXBsZShsc2xpY2VzKSwgdHVwbGUocnNsaWNlcykKKworZGVmIHJhbmRfYWxpZ25lZF9zbGljZXMobWF4ZGltPTUsIG1heHNoYXBlPTE2KToKKyAgICAiIiJDcmVhdGUgKGxzaGFwZSwgcnNoYXBlLCB0dXBsZShsc2xpY2VzKSwgdHVwbGUocnNsaWNlcykpIHN1Y2ggdGhhdAorICAgICAgIHNoYXBlb2YoeFtsc2xpY2VzXSkgPT0gc2hhcGVvZih5W3JzbGljZXNdKSwgd2hlcmUgeCBpcyBhbiBhcnJheQorICAgICAgIHdpdGggc2hhcGUgJ2xzaGFwZScgYW5kIHkgaXMgYW4gYXJyYXkgd2l0aCBzaGFwZSAncnNoYXBlJy4iIiIKKyAgICBuZGltID0gcmFuZHJhbmdlKDEsIG1heGRpbSsxKQorICAgIG1pbnNoYXBlID0gMgorICAgIG4gPSByYW5kcmFuZ2UoMTAwKQorICAgIGlmIG4gPj0gOTU6CisgICAgICAgIG1pbnNoYXBlID0gMAorICAgIGVsaWYgbiA+PSA5MDoKKyAgICAgICAgbWluc2hhcGUgPSAxCisgICAgYWxsX3JhbmRvbSA9IFRydWUgaWYgcmFuZHJhbmdlKDEwMCkgPj0gODAgZWxzZSBGYWxzZQorICAgIGxzaGFwZSA9IFswXSpuZGltOyByc2hhcGUgPSBbMF0qbmRpbQorICAgIGxzbGljZXMgPSBbMF0qbmRpbTsgcnNsaWNlcyA9IFswXSpuZGltCisKKyAgICBmb3IgbiBpbiByYW5nZShuZGltKToKKyAgICAgICAgc21hbGwgPSByYW5kcmFuZ2UobWluc2hhcGUsIG1heHNoYXBlKzEpCisgICAgICAgIGJpZyA9IHJhbmRyYW5nZShtaW5zaGFwZSwgbWF4c2hhcGUrMSkKKyAgICAgICAgaWYgYmlnIDwgc21hbGw6CisgICAgICAgICAgICBiaWcsIHNtYWxsID0gc21hbGwsIGJpZworCisgICAgICAgICMgQ3JlYXRlIGEgc2xpY2UgdGhhdCBmaXRzIHRoZSBzbWFsbGVyIHZhbHVlLgorICAgICAgICBpZiBhbGxfcmFuZG9tOgorICAgICAgICAgICAgc3RhcnQgPSByYW5kcmFuZ2UoLXNtYWxsLCBzbWFsbCsxKQorICAgICAgICAgICAgc3RvcCA9IHJhbmRyYW5nZSgtc21hbGwsIHNtYWxsKzEpCisgICAgICAgICAgICBzdGVwID0gKDEsLTEpW3JhbmRyYW5nZSgyKV0gKiByYW5kcmFuZ2UoMSwgc21hbGwrMikKKyAgICAgICAgICAgIHNfc21hbGwgPSBzbGljZShzdGFydCwgc3RvcCwgc3RlcCkKKyAgICAgICAgICAgIF8sIF8sIF8sIHNsaWNlbGVuID0gc2xpY2VfaW5kaWNlcyhzX3NtYWxsLCBzbWFsbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNsaWNlbGVuID0gcmFuZHJhbmdlKDEsIHNtYWxsKzEpIGlmIHNtYWxsID4gMCBlbHNlIDAKKyAgICAgICAgICAgIHNfc21hbGwgPSByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgc21hbGwpCisKKyAgICAgICAgIyBDcmVhdGUgYSBzbGljZSBvZiB0aGUgc2FtZSBsZW5ndGggZm9yIHRoZSBiaWdnZXIgdmFsdWUuCisgICAgICAgIHNfYmlnID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIGJpZykKKyAgICAgICAgaWYgcmFuZHJhbmdlKDIpID09IDA6CisgICAgICAgICAgICByc2hhcGVbbl0sIGxzaGFwZVtuXSA9IGJpZywgc21hbGwKKyAgICAgICAgICAgIHJzbGljZXNbbl0sIGxzbGljZXNbbl0gPSBzX2JpZywgc19zbWFsbAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcnNoYXBlW25dLCBsc2hhcGVbbl0gPSBzbWFsbCwgYmlnCisgICAgICAgICAgICByc2xpY2VzW25dLCBsc2xpY2VzW25dID0gc19zbWFsbCwgc19iaWcKKworICAgIHJldHVybiBsc2hhcGUsIHJzaGFwZSwgdHVwbGUobHNsaWNlcyksIHR1cGxlKHJzbGljZXMpCisKK2RlZiByYW5kaXRlbXNfZnJvbV9zdHJ1Y3R1cmUoZm10LCB0KToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHJhbmRvbSBpdGVtcyBmb3Igc3RydWN0dXJlICd0JyB3aXRoIGZvcm1hdAorICAgICAgICdmbXRjaGFyJy4iIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBfLCBfLCBfLCBfID0gdAorICAgIHJldHVybiBnZW5faXRlbXMobWVtbGVuLy9pdGVtc2l6ZSwgJyMnK2ZtdCwgJ251bXB5JykKKworZGVmIG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCwgZmxhZ3M9MCk6CisgICAgIiIiUmV0dXJuIG5kYXJyYXkgZnJvbSB0aGUgdHVwbGUgcmV0dXJuZWQgYnkgcmFuZF9zdHJ1Y3R1cmUoKSIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgPSB0CisgICAgcmV0dXJuIG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgb2Zmc2V0PW9mZnNldCwgZmxhZ3M9TkRfV1JJVEFCTEV8ZmxhZ3MpCisKK2RlZiBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0KToKKyAgICAiIiJSZXR1cm4gbnVtcHlfYXJyYXkgZnJvbSB0aGUgdHVwbGUgcmV0dXJuZWQgYnkgcmFuZF9zdHJ1Y3R1cmUoKSIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgPSB0CisgICAgYnVmID0gYnl0ZWFycmF5KG1lbWxlbikKKyAgICBmb3IgaiwgdiBpbiBlbnVtZXJhdGUoaXRlbXMpOgorICAgICAgICBzdHJ1Y3QucGFja19pbnRvKGZtdCwgYnVmLCBqKml0ZW1zaXplLCB2KQorICAgIHJldHVybiBudW1weV9hcnJheShidWZmZXI9YnVmLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1mbXQsIG9mZnNldD1vZmZzZXQpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3IGNhc3RzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIGNhc3RfaXRlbXMoZXhwb3J0ZXIsIGZtdCwgaXRlbXNpemUsIHNoYXBlPU5vbmUpOgorICAgICIiIkludGVycHJldCB0aGUgcmF3IG1lbW9yeSBvZiAnZXhwb3J0ZXInIGFzIGEgbGlzdCBvZiBpdGVtcyB3aXRoCisgICAgICAgc2l6ZSAnaXRlbXNpemUnLiBJZiBzaGFwZT1Ob25lLCB0aGUgbmV3IHN0cnVjdHVyZSBpcyBhc3N1bWVkIHRvCisgICAgICAgYmUgMS1EIHdpdGggbiAqIGl0ZW1zaXplID0gYnl0ZWxlbi4gSWYgc2hhcGUgaXMgZ2l2ZW4sIHRoZSB1c3VhbAorICAgICAgIGNvbnN0cmFpbnQgZm9yIGNvbnRpZ3VvdXMgYXJyYXlzIHByb2Qoc2hhcGUpICogaXRlbXNpemUgPSBieXRlbGVuCisgICAgICAgYXBwbGllcy4gT24gc3VjY2VzcywgcmV0dXJuIChpdGVtcywgc2hhcGUpLiBJZiB0aGUgY29uc3RyYWludHMKKyAgICAgICBjYW5ub3QgYmUgbWV0LCByZXR1cm4gKE5vbmUsIE5vbmUpLiBJZiBhIGNodW5rIG9mIGJ5dGVzIGlzIGludGVycHJldGVkCisgICAgICAgYXMgTmFOIGFzIGEgcmVzdWx0IG9mIGZsb2F0IGNvbnZlcnNpb24sIHJldHVybiAoJ25hbicsIE5vbmUpLiIiIgorICAgIGJ5dGVsZW4gPSBleHBvcnRlci5uYnl0ZXMKKyAgICBpZiBzaGFwZToKKyAgICAgICAgaWYgcHJvZChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBieXRlbGVuOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHNoYXBlCisgICAgZWxpZiBzaGFwZSA9PSBbXToKKyAgICAgICAgaWYgZXhwb3J0ZXIubmRpbSA9PSAwIG9yIGl0ZW1zaXplICE9IGJ5dGVsZW46CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgc2hhcGUKKyAgICBlbHNlOgorICAgICAgICBuLCByID0gZGl2bW9kKGJ5dGVsZW4sIGl0ZW1zaXplKQorICAgICAgICBzaGFwZSA9IFtuXQorICAgICAgICBpZiByICE9IDA6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgc2hhcGUKKworICAgIG1lbSA9IGV4cG9ydGVyLnRvYnl0ZXMoKQorICAgIGJ5dGVpdGVtcyA9IFttZW1baTppK2l0ZW1zaXplXSBmb3IgaSBpbiByYW5nZSgwLCBsZW4obWVtKSwgaXRlbXNpemUpXQorCisgICAgaXRlbXMgPSBbXQorICAgIGZvciB2IGluIGJ5dGVpdGVtczoKKyAgICAgICAgaXRlbSA9IHN0cnVjdC51bnBhY2soZm10LCB2KVswXQorICAgICAgICBpZiBpdGVtICE9IGl0ZW06CisgICAgICAgICAgICByZXR1cm4gJ25hbicsIHNoYXBlCisgICAgICAgIGl0ZW1zLmFwcGVuZChpdGVtKQorCisgICAgcmV0dXJuIChpdGVtcywgc2hhcGUpIGlmIHNoYXBlICE9IFtdIGVsc2UgKGl0ZW1zWzBdLCBzaGFwZSkKKworZGVmIGdlbmNhc3RzaGFwZXMoKToKKyAgICAiIiJHZW5lcmF0ZSBzaGFwZXMgdG8gdGVzdCBjYXN0aW5nLiIiIgorICAgIGZvciBuIGluIHJhbmdlKDMyKToKKyAgICAgICAgeWllbGQgW25dCisgICAgbmRpbSA9IHJhbmRyYW5nZSg0LCA2KQorICAgIG1pbnNoYXBlID0gMSBpZiByYW5kcmFuZ2UoMTAwKSA+IDgwIGVsc2UgMgorICAgIHlpZWxkIFtyYW5kcmFuZ2UobWluc2hhcGUsIDUpIGZvciBfIGluIHJhbmdlKG5kaW0pXQorICAgIG5kaW0gPSByYW5kcmFuZ2UoMiwgNCkKKyAgICBtaW5zaGFwZSA9IDEgaWYgcmFuZHJhbmdlKDEwMCkgPiA4MCBlbHNlIDIKKyAgICB5aWVsZCBbcmFuZHJhbmdlKG1pbnNoYXBlLCA1KSBmb3IgXyBpbiByYW5nZShuZGltKV0KKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3R1YWwgdGVzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgZ2Vuc2xpY2VzKG4pOgorICAgICIiIkdlbmVyYXRlIGFsbCBwb3NzaWJsZSBzbGljZXMgZm9yIGEgc2luZ2xlIGRpbWVuc2lvbi4iIiIKKyAgICByZXR1cm4gcHJvZHVjdChyYW5nZSgtbiwgbisxKSwgcmFuZ2UoLW4sIG4rMSksIHJhbmdlKC1uLCBuKzEpKQorCitkZWYgZ2Vuc2xpY2VzX25kaW0obmRpbSwgc2hhcGUpOgorICAgICIiIkdlbmVyYXRlIGFsbCBwb3NzaWJsZSBzbGljZSB0dXBsZXMgZm9yICdzaGFwZScuIiIiCisgICAgaXRlcmFibGVzID0gW2dlbnNsaWNlcyhzaGFwZVtuXSkgZm9yIG4gaW4gcmFuZ2UobmRpbSldCisgICAgcmV0dXJuIHByb2R1Y3QoKml0ZXJhYmxlcykKKworZGVmIHJzbGljZShuLCBhbGxvd19lbXB0eT1GYWxzZSk6CisgICAgIiIiR2VuZXJhdGUgcmFuZG9tIHNsaWNlIGZvciBhIHNpbmdsZSBkaW1lbnNpb24gb2YgbGVuZ3RoIG4uCisgICAgICAgSWYgemVybz1UcnVlLCB0aGUgc2xpY2VzIG1heSBiZSBlbXB0eSwgb3RoZXJ3aXNlIHRoZXkgd2lsbAorICAgICAgIGJlIG5vbi1lbXB0eS4iIiIKKyAgICBtaW5sZW4gPSAwIGlmIGFsbG93X2VtcHR5IG9yIG4gPT0gMCBlbHNlIDEKKyAgICBzbGljZWxlbiA9IHJhbmRyYW5nZShtaW5sZW4sIG4rMSkKKyAgICByZXR1cm4gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIG4pCisKK2RlZiByc2xpY2VzKG4sIGFsbG93X2VtcHR5PUZhbHNlKToKKyAgICAiIiJHZW5lcmF0ZSByYW5kb20gc2xpY2VzIGZvciBhIHNpbmdsZSBkaW1lbnNpb24uIiIiCisgICAgZm9yIF8gaW4gcmFuZ2UoNSk6CisgICAgICAgIHlpZWxkIHJzbGljZShuLCBhbGxvd19lbXB0eSkKKworZGVmIHJzbGljZXNfbmRpbShuZGltLCBzaGFwZSwgaXRlcmF0aW9ucz01KToKKyAgICAiIiJHZW5lcmF0ZSByYW5kb20gc2xpY2UgdHVwbGVzIGZvciAnc2hhcGUnLiIiIgorICAgICMgbm9uLWVtcHR5IHNsaWNlcworICAgIGZvciBfIGluIHJhbmdlKGl0ZXJhdGlvbnMpOgorICAgICAgICB5aWVsZCB0dXBsZShyc2xpY2Uoc2hhcGVbbl0pIGZvciBuIGluIHJhbmdlKG5kaW0pKQorICAgICMgcG9zc2libHkgZW1wdHkgc2xpY2VzCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRlcmF0aW9ucyk6CisgICAgICAgIHlpZWxkIHR1cGxlKHJzbGljZShzaGFwZVtuXSwgYWxsb3dfZW1wdHk9VHJ1ZSkgZm9yIG4gaW4gcmFuZ2UobmRpbSkpCisgICAgIyBpbnZhbGlkIHNsaWNlcworICAgIHlpZWxkIHR1cGxlKHNsaWNlKDAsMSwwKSBmb3IgXyBpbiByYW5nZShuZGltKSkKKworZGVmIHJwZXJtdXRhdGlvbihpdGVyYWJsZSwgcj1Ob25lKToKKyAgICBwb29sID0gdHVwbGUoaXRlcmFibGUpCisgICAgciA9IGxlbihwb29sKSBpZiByIGlzIE5vbmUgZWxzZSByCisgICAgeWllbGQgdHVwbGUoc2FtcGxlKHBvb2wsIHIpKQorCitkZWYgbmRhcnJheV9wcmludChuZCk6CisgICAgIiIiUHJpbnQgbmRhcnJheSBmb3IgZGVidWdnaW5nLiIiIgorICAgIHRyeToKKyAgICAgICAgeCA9IG5kLnRvbGlzdCgpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICB4ID0gbmQudG9ieXRlcygpCisgICAgaWYgaXNpbnN0YW5jZShuZCwgbmRhcnJheSk6CisgICAgICAgIG9mZnNldCA9IG5kLm9mZnNldAorICAgICAgICBmbGFncyA9IG5kLmZsYWdzCisgICAgZWxzZToKKyAgICAgICAgb2Zmc2V0ID0gJ3Vua25vd24nCisgICAgICAgIGZsYWdzID0gJ3Vua25vd24nCisgICAgcHJpbnQoIm5kYXJyYXkoJXMsIHNoYXBlPSVzLCBzdHJpZGVzPSVzLCBzdWJvZmZzZXRzPSVzLCBvZmZzZXQ9JXMsICIKKyAgICAgICAgICAiZm9ybWF0PSclcycsIGl0ZW1zaXplPSVzLCBmbGFncz0lcykiICUKKyAgICAgICAgICAoeCwgbmQuc2hhcGUsIG5kLnN0cmlkZXMsIG5kLnN1Ym9mZnNldHMsIG9mZnNldCwKKyAgICAgICAgICAgbmQuZm9ybWF0LCBuZC5pdGVtc2l6ZSwgZmxhZ3MpKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisKK0lURVJBVElPTlMgPSAxMDAKK01BWERJTSA9IDUKK01BWFNIQVBFID0gMTAKKworaWYgU0hPUlRfVEVTVDoKKyAgICBJVEVSQVRJT05TID0gMTAKKyAgICBNQVhESU0gPSAzCisgICAgTUFYU0hBUEUgPSA0CisgICAgZ2Vuc2xpY2VzID0gcnNsaWNlcworICAgIGdlbnNsaWNlc19uZGltID0gcnNsaWNlc19uZGltCisgICAgcGVybXV0YXRpb25zID0gcnBlcm11dGF0aW9uCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3RydWN0LCAnc3RydWN0IG1vZHVsZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhuZGFycmF5LCAnbmRhcnJheSBvYmplY3QgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCitjbGFzcyBUZXN0QnVmZmVyUHJvdG9jb2wodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAjIFRoZSBzdWJvZmZzZXRzIHRlc3RzIG5lZWQgc2l6ZW9mKHZvaWQgKikuCisgICAgICAgIHNlbGYuc2l6ZW9mX3ZvaWRfcCA9IGdldF9zaXplb2Zfdm9pZF9wKCkKKworICAgIGRlZiB2ZXJpZnkoc2VsZiwgcmVzdWx0LCBvYmo9LTEsCisgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT17MX0sIGZtdD0tMSwgcmVhZG9ubHk9ezF9LAorICAgICAgICAgICAgICAgICAgICAgbmRpbT17MX0sIHNoYXBlPS0xLCBzdHJpZGVzPS0xLAorICAgICAgICAgICAgICAgICAgICAgbHN0PS0xLCBzbGljZWQ9RmFsc2UsIGNhc3Q9RmFsc2UpOgorICAgICAgICAjIFZlcmlmeSBidWZmZXIgY29udGVudHMgYWdhaW5zdCBleHBlY3RlZCB2YWx1ZXMuIERlZmF1bHQgdmFsdWVzCisgICAgICAgICMgYXJlIGRlbGliZXJhdGVseSBpbml0aWFsaXplZCB0byBpbnZhbGlkIHR5cGVzLgorICAgICAgICBpZiBzaGFwZToKKyAgICAgICAgICAgIGV4cGVjdGVkX2xlbiA9IHByb2Qoc2hhcGUpKml0ZW1zaXplCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBub3QgZm10OiAjIGFycmF5IGhhcyBiZWVuIGltcGxpY2l0bHkgY2FzdCB0byB1bnNpZ25lZCBieXRlcworICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiA9IGxlbihsc3QpCisgICAgICAgICAgICBlbHNlOiAjIG5kaW0gPSAwCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGVuID0gaXRlbXNpemUKKworICAgICAgICAjIFJlY29uc3RydWN0IHN1Ym9mZnNldHMgZnJvbSBzdHJpZGVzLiBTdXBwb3J0IGZvciBzbGljaW5nCisgICAgICAgICMgY291bGQgYmUgYWRkZWQsIGJ1dCBpcyBjdXJyZW50bHkgb25seSBuZWVkZWQgZm9yIHRlc3RfZ2V0YnVmKCkuCisgICAgICAgIHN1Ym9mZnNldHMgPSAoKQorICAgICAgICBpZiByZXN1bHQuc3Vib2Zmc2V0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihuZGltLCAwKQorCisgICAgICAgICAgICBzdWJvZmZzZXQwID0gMAorICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgbmRpbSk6CisgICAgICAgICAgICAgICAgaWYgc2hhcGVbbl0gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBzdHJpZGVzW25dIDw9IDA6CisgICAgICAgICAgICAgICAgICAgIHN1Ym9mZnNldDAgKz0gLXN0cmlkZXNbbl0gKiAoc2hhcGVbbl0tMSkKKworICAgICAgICAgICAgc3Vib2Zmc2V0cyA9IFtzdWJvZmZzZXQwXSArIFstMSBmb3IgdiBpbiByYW5nZShuZGltLTEpXQorCisgICAgICAgICAgICAjIE5vdCBjb3JyZWN0IGlmIHNsaWNpbmcgaGFzIG9jY3VycmVkIGluIHRoZSBmaXJzdCBkaW1lbnNpb24uCisgICAgICAgICAgICBzdHJpZGUwID0gc2VsZi5zaXplb2Zfdm9pZF9wCisgICAgICAgICAgICBpZiBzdHJpZGVzWzBdIDwgMDoKKyAgICAgICAgICAgICAgICBzdHJpZGUwID0gLXN0cmlkZTAKKyAgICAgICAgICAgIHN0cmlkZXMgPSBbc3RyaWRlMF0gKyBsaXN0KHN0cmlkZXNbMTpdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVzdWx0Lm9iaiwgb2JqKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5uYnl0ZXMsIGV4cGVjdGVkX2xlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuaXRlbXNpemUsIGl0ZW1zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5mb3JtYXQsIGZtdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQucmVhZG9ubHksIHJlYWRvbmx5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5uZGltLCBuZGltKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zaGFwZSwgdHVwbGUoc2hhcGUpKQorICAgICAgICBpZiBub3QgKHNsaWNlZCBhbmQgc3Vib2Zmc2V0cyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdHJpZGVzLCB0dXBsZShzdHJpZGVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3Vib2Zmc2V0cywgdHVwbGUoc3Vib2Zmc2V0cykpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIG5kYXJyYXkpIG9yIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICByZXAgPSByZXN1bHQudG9saXN0KCkgaWYgZm10IGVsc2UgcmVzdWx0LnRvYnl0ZXMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXAsIGxzdCkKKworICAgICAgICBpZiBub3QgZm10OiAjIGFycmF5IGhhcyBiZWVuIGNhc3QgdG8gdW5zaWduZWQgYnl0ZXMsCisgICAgICAgICAgICByZXR1cm4gICMgdGhlIHJlbWFpbmluZyB0ZXN0cyB3b24ndCB3b3JrLgorCisgICAgICAgICMgUHlCdWZmZXJfR2V0UG9pbnRlcigpIGlzIHRoZSBkZWZpbml0aW9uIGhvdyB0byBhY2Nlc3MgYW4gaXRlbS4KKyAgICAgICAgIyBJZiBQeUJ1ZmZlcl9HZXRQb2ludGVyKGluZGljZXMpIGlzIGNvcnJlY3QgZm9yIGFsbCBwb3NzaWJsZQorICAgICAgICAjIGNvbWJpbmF0aW9ucyBvZiBpbmRpY2VzLCB0aGUgYnVmZmVyIGlzIGNvcnJlY3QuCisgICAgICAgICMKKyAgICAgICAgIyBBbHNvIHRlc3QgdG9ieXRlcygpIGFnYWluc3QgdGhlIGZsYXR0ZW5lZCAnbHN0Jywgd2l0aCBhbGwgaXRlbXMKKyAgICAgICAgIyBwYWNrZWQgdG8gYnl0ZXMuCisgICAgICAgIGlmIG5vdCBjYXN0OiAjIGNhc3RzIGNob3AgdXAgJ2xzdCcgaW4gZGlmZmVyZW50IHdheXMKKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkoKQorICAgICAgICAgICAgYnVmX2VyciA9IE5vbmUKKyAgICAgICAgICAgIGZvciBpbmQgaW4gaW5kaWNlcyhzaGFwZSk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpdGVtMSA9IGdldF9wb2ludGVyKHJlc3VsdCwgaW5kKQorICAgICAgICAgICAgICAgICAgICBpdGVtMiA9IGdldF9pdGVtKGxzdCwgaW5kKQorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0yLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gc3RydWN0LnBhY2soZm10LCAqaXRlbTIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gc3RydWN0LnBhY2soZm10LCBpdGVtMikKKyAgICAgICAgICAgICAgICAgICAgYi5leHRlbmQoeCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJ1Zl9lcnIgPSBUcnVlICMgcmUtZXhwb3J0ZXIgZG9lcyBub3QgcHJvdmlkZSBmdWxsIGJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbTEsIGl0ZW0yKQorCisgICAgICAgICAgICBpZiBub3QgYnVmX2VycjoKKyAgICAgICAgICAgICAgICAjIHRlc3QgdG9ieXRlcygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudG9ieXRlcygpLCBiKQorCisgICAgICAgICAgICAgICAgIyBsc3QgOj0gZXhwZWN0ZWQgbXVsdGktZGltZW5zaW9uYWwgbG9naWNhbCByZXByZXNlbnRhdGlvbgorICAgICAgICAgICAgICAgICMgZmxhdHRlbihsc3QpIDo9IGVsZW1lbnRzIGluIEMtb3JkZXIKKyAgICAgICAgICAgICAgICBmZiA9IGZtdCBpZiBmbXQgZWxzZSAnQicKKyAgICAgICAgICAgICAgICBmbGF0dGVuZWQgPSBmbGF0dGVuKGxzdCkKKworICAgICAgICAgICAgICAgICMgUnVsZXMgZm9yICdBJzogaWYgdGhlIGFycmF5IGlzIGFscmVhZHkgY29udGlndW91cywgcmV0dXJuCisgICAgICAgICAgICAgICAgIyB0aGUgYXJyYXkgdW5hbHRlcmVkLiBPdGhlcndpc2UsIHJldHVybiBhIGNvbnRpZ3VvdXMgJ0MnCisgICAgICAgICAgICAgICAgIyByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICBpZiBvcmRlciA9PSAnRic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29udGlndW91cyhyZXN1bHQsICdBJykgb3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udGlndW91cyhyZXN1bHQsICdDJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3IgY29uc3RydWN0aW5nIHRoZSBuZGFycmF5LCBjb252ZXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmxhdHRlbmVkIGxvZ2ljYWwgcmVwcmVzZW50YXRpb24gdG8gRm9ydHJhbiBvcmRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFucyA9IHRyYW5zcG9zZShmbGF0dGVuZWQsIHNoYXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbmRhcnJheSh0cmFucywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgICAgICAgICAgICAgZWxzZTogIyAnQycsICdBJworICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnQScpIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnRicpIGFuZCBvcmRlciA9PSAnQyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgZmxhdHRlbmVkIGxpc3QgaXMgYWxyZWFkeSBpbiBDLW9yZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbmRhcnJheShmbGF0dGVuZWQsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9ZmYpCisKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gZ2V0X2NvbnRpZ3VvdXMocmVzdWx0LCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250aWcudG9ieXRlcygpLCBiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY21wX2NvbnRpZyhjb250aWcsIGV4cGVjdGVkKSkKKworICAgICAgICAgICAgICAgICAgICBpZiBuZGltID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIG5tZW1iID0gbGVuKGZsYXR0ZW5lZCkKKyAgICAgICAgICAgICAgICAgICAgcm8gPSAwIGlmIHJlYWRvbmx5IGVsc2UgTkRfV1JJVEFCTEUKKworICAgICAgICAgICAgICAgICAgICAjIyMgU2VlIGNvbW1lbnQgaW4gdGVzdF9weV9idWZmZXJfdG9fY29udGlndW91cyBmb3IgYW4KKyAgICAgICAgICAgICAgICAgICAgIyMjIGV4cGxhbmF0aW9uIHdoeSB0aGVzZSB0ZXN0cyBhcmUgdmFsaWQuCisKKyAgICAgICAgICAgICAgICAgICAgIyBUbyAnQycKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMocmVzdWx0LCAnQycsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnRpZyksIG5tZW1iICogaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbc3RydWN0LnVucGFja19mcm9tKGZtdCwgY29udGlnLCBuKml0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKG5tZW1iKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGluaXRsc3RbMF0pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3ZbMF0gZm9yIHYgaW4gaW5pdGxzdF0KKworICAgICAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShpbml0bHN0LCBzaGFwZT1zaGFwZSwgZmxhZ3M9cm8sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhyZXN1bHQpKQorCisgICAgICAgICAgICAgICAgICAgICMgVG8gJ0YnCisgICAgICAgICAgICAgICAgICAgIGNvbnRpZyA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKHJlc3VsdCwgJ0YnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb250aWcpLCBubWVtYiAqIGl0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3N0cnVjdC51bnBhY2tfZnJvbShmbXQsIGNvbnRpZywgbippdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiByYW5nZShubWVtYildCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihpbml0bHN0WzBdKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFt2WzBdIGZvciB2IGluIGluaXRsc3RdCisKKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoaW5pdGxzdCwgc2hhcGU9c2hhcGUsIGZsYWdzPXJvfE5EX0ZPUlRSQU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhyZXN1bHQpKQorCisgICAgICAgICAgICAgICAgICAgICMgVG8gJ0EnCisgICAgICAgICAgICAgICAgICAgIGNvbnRpZyA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKHJlc3VsdCwgJ0EnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb250aWcpLCBubWVtYiAqIGl0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3N0cnVjdC51bnBhY2tfZnJvbShmbXQsIGNvbnRpZywgbippdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiByYW5nZShubWVtYildCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihpbml0bHN0WzBdKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFt2WzBdIGZvciB2IGluIGluaXRsc3RdCisKKyAgICAgICAgICAgICAgICAgICAgZiA9IE5EX0ZPUlRSQU4gaWYgaXNfY29udGlndW91cyhyZXN1bHQsICdGJykgZWxzZSAwCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KGluaXRsc3QsIHNoYXBlPXNoYXBlLCBmbGFncz1mfHJvLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcocmVzdWx0KSkKKworICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KHJlc3VsdCkKKyAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjogIyByZS1leHBvcnRlciBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGV4ID0gcmVzdWx0Lm9iaiBpZiBpc2luc3RhbmNlKHJlc3VsdCwgbWVtb3J5dmlldykgZWxzZSByZXN1bHQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm5ieXRlcywgZXhwZWN0ZWRfbGVuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLml0ZW1zaXplLCBpdGVtc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5mb3JtYXQsIGZtdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkb25seSwgcmVhZG9ubHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmRpbSwgbmRpbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zaGFwZSwgdHVwbGUoc2hhcGUpKQorICAgICAgICAgICAgaWYgbm90IChzbGljZWQgYW5kIHN1Ym9mZnNldHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdHJpZGVzLCB0dXBsZShzdHJpZGVzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdWJvZmZzZXRzLCB0dXBsZShzdWJvZmZzZXRzKSkKKworICAgICAgICAgICAgbiA9IDEgaWYgbmRpbSA9PSAwIGVsc2UgbGVuKGxzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0pLCBuKQorCisgICAgICAgICAgICByZXAgPSByZXN1bHQudG9saXN0KCkgaWYgZm10IGVsc2UgcmVzdWx0LnRvYnl0ZXMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXAsIGxzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgcmVzdWx0KQorCisgICAgZGVmIHZlcmlmeV9nZXRidWYoc2VsZiwgb3JpZ19leCwgZXgsIHJlcSwgc2xpY2VkPUZhbHNlKToKKyAgICAgICAgZGVmIHNpbXBsZV9mbXQoZXgpOgorICAgICAgICAgICAgcmV0dXJuIGV4LmZvcm1hdCA9PSAnJyBvciBleC5mb3JtYXQgPT0gJ0InCisgICAgICAgIGRlZiBtYXRjaChyZXEsIGZsYWcpOgorICAgICAgICAgICAgcmV0dXJuICgocmVxJmZsYWcpID09IGZsYWcpCisKKyAgICAgICAgaWYgKCMgd3JpdGFibGUgcmVxdWVzdCB0byByZWFkLW9ubHkgZXhwb3J0ZXIKKyAgICAgICAgICAgIChleC5yZWFkb25seSBhbmQgbWF0Y2gocmVxLCBQeUJVRl9XUklUQUJMRSkpIG9yCisgICAgICAgICAgICAjIGNhbm5vdCBtYXRjaCBleHBsaWNpdCBjb250aWd1aXR5IHJlcXVlc3QKKyAgICAgICAgICAgIChtYXRjaChyZXEsIFB5QlVGX0NfQ09OVElHVU9VUykgYW5kIG5vdCBleC5jX2NvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAobWF0Y2gocmVxLCBQeUJVRl9GX0NPTlRJR1VPVVMpIGFuZCBub3QgZXguZl9jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgKG1hdGNoKHJlcSwgUHlCVUZfQU5ZX0NPTlRJR1VPVVMpIGFuZCBub3QgZXguY29udGlndW91cykgb3IKKyAgICAgICAgICAgICMgYnVmZmVyIG5lZWRzIHN1Ym9mZnNldHMKKyAgICAgICAgICAgIChub3QgbWF0Y2gocmVxLCBQeUJVRl9JTkRJUkVDVCkgYW5kIGV4LnN1Ym9mZnNldHMpIG9yCisgICAgICAgICAgICAjIGJ1ZmZlciB3aXRob3V0IHN0cmlkZXMgbXVzdCBiZSBDLWNvbnRpZ3VvdXMKKyAgICAgICAgICAgIChub3QgbWF0Y2gocmVxLCBQeUJVRl9TVFJJREVTKSBhbmQgbm90IGV4LmNfY29udGlndW91cykgb3IKKyAgICAgICAgICAgICMgUHlCVUZfU0lNUExFfFB5QlVGX0ZPUk1BVCBhbmQgUHlCVUZfV1JJVEFCTEV8UHlCVUZfRk9STUFUCisgICAgICAgICAgICAobm90IG1hdGNoKHJlcSwgUHlCVUZfTkQpIGFuZCBtYXRjaChyZXEsIFB5QlVGX0ZPUk1BVCkpKToKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9cmVxKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleCwgbmRhcnJheSkgb3IgaXNfbWVtb3J5dmlld19mb3JtYXQoZXguZm9ybWF0KToKKyAgICAgICAgICAgIGxzdCA9IGV4LnRvbGlzdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICAgICAgbHN0ID0gbmQudG9saXN0KCkKKworICAgICAgICAjIFRoZSBjb25zdW1lciBtYXkgaGF2ZSByZXF1ZXN0ZWQgZGVmYXVsdCB2YWx1ZXMgb3IgYSBOVUxMIGZvcm1hdC4KKyAgICAgICAgcm8gPSAwIGlmIG1hdGNoKHJlcSwgUHlCVUZfV1JJVEFCTEUpIGVsc2UgZXgucmVhZG9ubHkKKyAgICAgICAgZm10ID0gZXguZm9ybWF0CisgICAgICAgIGl0ZW1zaXplID0gZXguaXRlbXNpemUKKyAgICAgICAgbmRpbSA9IGV4Lm5kaW0KKyAgICAgICAgaWYgbm90IG1hdGNoKHJlcSwgUHlCVUZfRk9STUFUKToKKyAgICAgICAgICAgICMgaXRlbXNpemUgcmVmZXJzIHRvIHRoZSBvcmlnaW5hbCBpdGVtc2l6ZSBiZWZvcmUgdGhlIGNhc3QuCisgICAgICAgICAgICAjIFRoZSBlcXVhbGl0eSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIHN0aWxsIGhvbGRzLgorICAgICAgICAgICAgIyBUaGUgZXF1YWxpdHkgY2FsY3NpemUoZm9ybWF0KSA9IGl0ZW1zaXplIGRvZXMgX25vdF8gaG9sZC4KKyAgICAgICAgICAgIGZtdCA9ICcnCisgICAgICAgICAgICBsc3QgPSBvcmlnX2V4LnRvYnl0ZXMoKSAjIElzc3VlIDEyODM0CisgICAgICAgIGlmIG5vdCBtYXRjaChyZXEsIFB5QlVGX05EKToKKyAgICAgICAgICAgIG5kaW0gPSAxCisgICAgICAgIHNoYXBlID0gb3JpZ19leC5zaGFwZSBpZiBtYXRjaChyZXEsIFB5QlVGX05EKSBlbHNlICgpCisgICAgICAgIHN0cmlkZXMgPSBvcmlnX2V4LnN0cmlkZXMgaWYgbWF0Y2gocmVxLCBQeUJVRl9TVFJJREVTKSBlbHNlICgpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9cmVxKQorICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9cm8sCisgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgc2xpY2VkPXNsaWNlZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZ2V0YnVmKHNlbGYpOgorICAgICAgICByZXF1ZXN0cyA9ICgKKyAgICAgICAgICAgICMgZGlzdGluY3QgZmxhZ3MKKyAgICAgICAgICAgIFB5QlVGX0lORElSRUNULCBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORCwgUHlCVUZfU0lNUExFLAorICAgICAgICAgICAgUHlCVUZfQ19DT05USUdVT1VTLCBQeUJVRl9GX0NPTlRJR1VPVVMsIFB5QlVGX0FOWV9DT05USUdVT1VTLAorICAgICAgICAgICAgIyBjb21wb3VuZCByZXF1ZXN0cworICAgICAgICAgICAgUHlCVUZfRlVMTCwgUHlCVUZfRlVMTF9STywKKyAgICAgICAgICAgIFB5QlVGX1JFQ09SRFMsIFB5QlVGX1JFQ09SRFNfUk8sCisgICAgICAgICAgICBQeUJVRl9TVFJJREVELCBQeUJVRl9TVFJJREVEX1JPLAorICAgICAgICAgICAgUHlCVUZfQ09OVElHLCBQeUJVRl9DT05USUdfUk8sCisgICAgICAgICkKKyAgICAgICAgIyBpdGVtcyBhbmQgZm9ybWF0CisgICAgICAgIGl0ZW1zX2ZtdCA9ICgKKyAgICAgICAgICAgIChbVHJ1ZSBpZiB4ICUgMiBlbHNlIEZhbHNlIGZvciB4IGluIHJhbmdlKDEyKV0sICc/JyksCisgICAgICAgICAgICAoWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXSwgJ2InKSwKKyAgICAgICAgICAgIChbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdLCAnQicpLAorICAgICAgICAgICAgKFsoMioqMzEteCkgaWYgeCAlIDIgZWxzZSAoLTIqKjMxK3gpIGZvciB4IGluIHJhbmdlKDEyKV0sICdsJykKKyAgICAgICAgKQorICAgICAgICAjIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQKKyAgICAgICAgc3RydWN0dXJlID0gKAorICAgICAgICAgICAgKFtdLCBbXSwgMCksCisgICAgICAgICAgICAoWzEyXSwgW10sIDApLAorICAgICAgICAgICAgKFsxMl0sIFstMV0sIDExKSwKKyAgICAgICAgICAgIChbNl0sIFsyXSwgMCksCisgICAgICAgICAgICAoWzZdLCBbLTJdLCAxMSksCisgICAgICAgICAgICAoWzMsIDRdLCBbXSwgMCksCisgICAgICAgICAgICAoWzMsIDRdLCBbLTQsIC0xXSwgMTEpLAorICAgICAgICAgICAgKFsyLCAyXSwgWzQsIDFdLCA0KSwKKyAgICAgICAgICAgIChbMiwgMl0sIFstNCwgLTFdLCA4KQorICAgICAgICApCisgICAgICAgICMgbmRhcnJheSBjcmVhdGlvbiBmbGFncworICAgICAgICBuZGZsYWdzID0gKAorICAgICAgICAgICAgMCwgTkRfV1JJVEFCTEUsIE5EX0ZPUlRSQU4sIE5EX0ZPUlRSQU58TkRfV1JJVEFCTEUsCisgICAgICAgICAgICBORF9QSUwsIE5EX1BJTHxORF9XUklUQUJMRQorICAgICAgICApCisgICAgICAgICMgZmxhZ3MgdGhhdCBjYW4gYWN0dWFsbHkgYmUgdXNlZCBhcyBmbGFncworICAgICAgICByZWFsX2ZsYWdzID0gKDAsIFB5QlVGX1dSSVRBQkxFLCBQeUJVRl9GT1JNQVQsCisgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfV1JJVEFCTEV8UHlCVUZfRk9STUFUKQorCisgICAgICAgIGZvciBpdGVtcywgZm10IGluIGl0ZW1zX2ZtdDoKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGZvciBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0IGluIHN0cnVjdHVyZToKKyAgICAgICAgICAgICAgICBzdHJpZGVzID0gW3YgKiBpdGVtc2l6ZSBmb3IgdiBpbiBzdHJpZGVzXQorICAgICAgICAgICAgICAgIG9mZnNldCAqPSBpdGVtc2l6ZQorICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiBuZGZsYWdzOgorCisgICAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXMgYW5kIChmbGFncyZORF9GT1JUUkFOKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzaGFwZSBhbmQgKGZsYWdzJk5EX1BJTCk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIF9pdGVtcyA9IGl0ZW1zIGlmIHNoYXBlIGVsc2UgaXRlbXNbMF0KKyAgICAgICAgICAgICAgICAgICAgZXgxID0gbmRhcnJheShfaXRlbXMsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsIG9mZnNldD1vZmZzZXQpCisgICAgICAgICAgICAgICAgICAgIGV4MiA9IGV4MVs6Oi0yXSBpZiBzaGFwZSBlbHNlIE5vbmUKKworICAgICAgICAgICAgICAgICAgICBtMSA9IG1lbW9yeXZpZXcoZXgxKQorICAgICAgICAgICAgICAgICAgICBpZiBleDI6CisgICAgICAgICAgICAgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcoZXgyKQorICAgICAgICAgICAgICAgICAgICBpZiBleDEubmRpbSA9PSAwIG9yIChleDEubmRpbSA9PSAxIGFuZCBzaGFwZSBhbmQgc3RyaWRlcyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICAgICAgICAgIGlmIGV4MiBhbmQgZXgyLm5kaW0gPT0gMSBhbmQgc2hhcGUgYW5kIHN0cmlkZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJlcSBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBiaXRzIGluIHJlYWxfZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MSwgZXgxLCByZXF8Yml0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeV9nZXRidWYoZXgxLCBtMSwgcmVxfGJpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXgyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeV9nZXRidWYoZXgyLCBleDIsIHJlcXxiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VkPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDIsIG0yLCByZXF8Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlZD1UcnVlKQorCisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXQorCisgICAgICAgICMgTkRfR0VUQlVGX0ZBSUwKKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9HRVRCVUZfRkFJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4KQorCisgICAgICAgICMgUmVxdWVzdCBjb21wbGV4IHN0cnVjdHVyZSBmcm9tIGEgc2ltcGxlIGV4cG9ydGVyLiBJbiB0aGlzCisgICAgICAgICMgcGFydGljdWxhciBjYXNlIHRoZSB0ZXN0IG9iamVjdCBpcyBub3QgUEVQLTMxMTggY29tcGxpYW50LgorICAgICAgICBiYXNlID0gbmRhcnJheShbOV0sIFsxXSkKKyAgICAgICAgZXggPSBuZGFycmF5KGJhc2UsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9ORCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfU1RSSURFUykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfQ19DT05USUdVT1VTKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9GX0NPTlRJR1VPVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0FOWV9DT05USUdVT1VTKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2V4Y2VwdGlvbnMoc2VsZik6CisgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSkKKyAgICAgICAgbmRtID0gbmRhcnJheShbOV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorCisgICAgICAgICMgSW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmRhcnJheSBvciBtdXRhdGlvbiBvZiBhbiBleGlzdGluZyBhcnJheS4KKyAgICAgICAgZm9yIGMgaW4gKG5kYXJyYXksIG5kLnB1c2gsIG5kbS5wdXNoKToKKyAgICAgICAgICAgICMgSW52YWxpZCB0eXBlcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgezEsMiwzfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwnMyddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLCgzLDQpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9ezN9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIHN0cmlkZXM9ezF9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIG9mZnNldD1bXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD17fSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIGZsYWdzPXt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZ2V0YnVmPXt9KQorCisgICAgICAgICAgICAjIE5EX0ZPUlRSQU4gZmxhZyBpcyBvbmx5IHZhbGlkIHdpdGhvdXQgc3RyaWRlcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKworICAgICAgICAgICAgIyBORF9QSUwgZmxhZyBpcyBvbmx5IHZhbGlkIHdpdGggbmRpbSA+IDAuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9W10sIGZsYWdzPU5EX1BJTCkKKworICAgICAgICAgICAgIyBJbnZhbGlkIGl0ZW1zLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgW10sIHNoYXBlPVsxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsnWFhYJ10sIHNoYXBlPVsxXSwgZm9ybWF0PSJMIikKKyAgICAgICAgICAgICMgSW52YWxpZCBjb21iaW5hdGlvbiBvZiBpdGVtcyBhbmQgZm9ybWF0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBjLCBbMTAwMF0sIHNoYXBlPVsxXSwgZm9ybWF0PSJCIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLCgyLDMpXSwgc2hhcGU9WzJdLCBmb3JtYXQ9IkIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9IlFMIikKKworICAgICAgICAgICAgIyBJbnZhbGlkIG5kaW0uCisgICAgICAgICAgICBuID0gTkRfTUFYX05ESU0rMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzFdKm4sIHNoYXBlPVsxXSpuKQorCisgICAgICAgICAgICAjIEludmFsaWQgc2hhcGUuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMV0sIHNoYXBlPVstMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bJzMnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGMsIFsxXSwgc2hhcGU9WzIqKjEyOF0pCisgICAgICAgICAgICAjIHByb2Qoc2hhcGUpICogaXRlbXNpemUgIT0gbGVuKGl0ZW1zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzLDQsNV0sIHNoYXBlPVsyLDJdLCBvZmZzZXQ9MykKKworICAgICAgICAgICAgIyBJbnZhbGlkIHN0cmlkZXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIHN0cmlkZXM9WycxJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9WzIqKjEyOF0pCisKKyAgICAgICAgICAgICMgSW52YWxpZCBjb21iaW5hdGlvbiBvZiBzdHJpZGVzIGFuZCBzaGFwZS4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDJdLCBzaGFwZT1bMiwxXSwgc3RyaWRlcz1bMV0pCisgICAgICAgICAgICAjIEludmFsaWQgY29tYmluYXRpb24gb2Ygc3RyaWRlcyBhbmQgZm9ybWF0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzLDRdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSJMIikKKworICAgICAgICAgICAgIyBJbnZhbGlkIG9mZnNldC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgb2Zmc2V0PTQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bMV0sIG9mZnNldD0zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSJMIikKKworICAgICAgICAgICAgIyBJbnZhbGlkIGZvcm1hdC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBjLCBbKDEsMiwzKV0sIHNoYXBlPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0iQCMkIikKKworICAgICAgICAgICAgIyBTdHJpZGluZyBvdXQgb2YgdGhlIG1lbW9yeSBib3VuZHMuCisgICAgICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIGl0ZW1zLCBzaGFwZT1bMiwzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9Wy0zLCAtMl0sIG9mZnNldD01KQorCisgICAgICAgICAgICAjIENvbnN0cnVjdGluZyBjb25zdW1lcjogZm9ybWF0IGFyZ3VtZW50IGludmFsaWQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIGJ5dGVhcnJheSgpLCBmb3JtYXQ9IlEiKQorCisgICAgICAgICAgICAjIENvbnN0cnVjdGluZyBvcmlnaW5hbCBiYXNlIG9iamVjdDogZ2V0YnVmIGFyZ3VtZW50IGludmFsaWQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBnZXRidWY9UHlCVUZfRlVMTCkKKworICAgICAgICAgICAgIyBTaGFwZSBhcmd1bWVudCBpcyBtYW5kYXRvcnkgZm9yIG9yaWdpbmFsIGJhc2Ugb2JqZWN0cy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdKQorCisKKyAgICAgICAgIyBQeUJVRl9XUklUQUJMRSByZXF1ZXN0IHRvIHJlYWQtb25seSBwcm92aWRlci4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGInMTIzJywgZ2V0YnVmPVB5QlVGX1dSSVRBQkxFKQorCisgICAgICAgICMgTkRfVkFSRVhQT1JUIGNhbiBvbmx5IGJlIHNwZWNpZmllZCBkdXJpbmcgY29uc3RydWN0aW9uLgorICAgICAgICBuZCA9IG5kYXJyYXkoWzldLCBbMV0sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQucHVzaCwgWzFdLCBbMV0sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKworICAgICAgICAjIEludmFsaWQgb3BlcmF0aW9uIGZvciBjb25zdW1lcnM6IHB1c2gvcG9wCisgICAgICAgIG5kID0gbmRhcnJheShiJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wdXNoLCBbMV0sIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKworICAgICAgICAjIE5EX1ZBUkVYUE9SVCBub3Qgc2V0OiBwdXNoL3BvcCBmYWlsIHdpdGggZXhwb3J0ZWQgYnVmZmVycworICAgICAgICBuZCA9IG5kYXJyYXkoWzldLCBbMV0pCisgICAgICAgIG5kLnB1c2goWzFdLCBbMV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucHVzaCwgWzFdLCBbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wb3ApCisgICAgICAgIG0ucmVsZWFzZSgpCisgICAgICAgIG5kLnBvcCgpCisKKyAgICAgICAgIyBTaW5nbGUgcmVtYWluaW5nIGJ1ZmZlcjogcG9wIGZhaWxzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wb3ApCisgICAgICAgIGRlbCBuZAorCisgICAgICAgICMgZ2V0X3BvaW50ZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9wb2ludGVyLCB7fSwgWzEsMiwzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfcG9pbnRlciwgYicxMjMnLCB7fSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMDApKSwgc2hhcGU9WzFdKjEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbNV0pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWzIsMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbMywzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbLTMsM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWzE8PDY0LDNdKQorCisgICAgICAgICMgdG9saXN0KCkgbmVlZHMgZm9ybWF0CisgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0nTCcpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQudG9saXN0KQorCisgICAgICAgICMgbWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9J0wnKQorICAgICAgICBleDIgPSBuZGFycmF5KGV4MSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorCisgICAgICAgIG5kID0gbmRhcnJheShbKDEsKSoyMDBdLCBzaGFwZT1bMV0sIGZvcm1hdD0nTCcqMjAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIpCisKKyAgICAgICAgbiA9IE5EX01BWF9ORElNCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKG4pKSwgc2hhcGU9WzFdKm4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIpCisKKyAgICAgICAgIyBnZXRfY29udGlndW91cygpCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfY29udGlndW91cywgMSwgMiwgMywgNCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsICJ4eXoiLCAnQycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgMioqNjQsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsIDk2MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcdTIwMDcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsICdaJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCAyNTUsICdBJykKKworICAgICAgICAjIGNtcF9jb250aWcoKQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY21wX2NvbnRpZywgMSwgMiwgMywgNCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXBfY29udGlnLCB7fSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY21wX2NvbnRpZywgbmQsIHt9KQorCisgICAgICAgICMgaXNfY29udGlndW91cygpCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc19jb250aWd1b3VzLCAxLCAyLCAzLCA0LCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzX2NvbnRpZ3VvdXMsIHt9LCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNfY29udGlndW91cywgbmQsIDIwMSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfbGlua2VkX2xpc3Qoc2VsZik6CisgICAgICAgIGZvciBwZXJtIGluIHBlcm11dGF0aW9ucyhyYW5nZSg1KSk6CisgICAgICAgICAgICBtID0gWzBdKjUKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKyAgICAgICAgICAgIG1bMF0gPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCA1KToKKyAgICAgICAgICAgICAgICBuZC5wdXNoKFsxLDIsM10sIHNoYXBlPVszXSkKKyAgICAgICAgICAgICAgICBtW2ldID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgbVtwZXJtW2ldXS5yZWxlYXNlKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKyAgICAgICAgICAgIGRlbCBuZAorCisgICAgZGVmIHRlc3RfbmRhcnJheV9mb3JtYXRfc2NhbGFyKHNlbGYpOgorICAgICAgICAjIG5kaW0gPSAwOiBzY2FsYXIKKyAgICAgICAgZm9yIGZtdCwgc2NhbGFyLCBfIGluIGl0ZXJfZm9ybWF0KDApOgorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KHNjYWxhciwgc2hhcGU9KCksIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MCwgc2hhcGU9KCksIHN0cmlkZXM9KCksCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9c2NhbGFyKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9mb3JtYXRfc2hhcGUoc2VsZik6CisgICAgICAgICMgbmRpbSA9IDEsIHNoYXBlID0gW25dCisgICAgICAgIG5pdGVtcyA9ICByYW5kcmFuZ2UoMSwgMTApCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KG5pdGVtcyk6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbml0ZW1zXSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9KG5pdGVtcywpLCBzdHJpZGVzPShpdGVtc2l6ZSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1pdGVtcykKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ybWF0X3N0cmlkZXMoc2VsZik6CisgICAgICAgICMgbmRpbSA9IDEsIHN0cmlkZXMKKyAgICAgICAgbml0ZW1zID0gcmFuZHJhbmdlKDEsIDMwKQorICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdChuaXRlbXMpOgorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIHN0ZXAgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgIGlmIHN0ZXAgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHNoYXBlID0gW2xlbihpdGVtc1s6OnN0ZXBdKV0KKyAgICAgICAgICAgICAgICBzdHJpZGVzID0gW3N0ZXAqaXRlbXNpemVdCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gaXRlbXNpemUqKG5pdGVtcy0xKSBpZiBzdGVwIDwgMCBlbHNlIDAKKworICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWZtdCwgb2Zmc2V0PW9mZnNldCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWl0ZW1zWzo6c3RlcF0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2ZvcnRyYW4oc2VsZik6CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXQorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPSgzLCA0KSwgc3RyaWRlcz0oMSwgMykpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0ZfQ09OVElHVU9VU3xQeUJVRl9GT1JNQVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGZhcnJheShpdGVtcywgKDMsIDQpKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfbXVsdGlkaW0oc2VsZik6CisgICAgICAgIGZvciBuZGltIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgc2hhcGVfdCA9IFtyYW5kcmFuZ2UoMiwgMTApIGZvciBfIGluIHJhbmdlKG5kaW0pXQorICAgICAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbmRpbSA9PSAwIGFuZCBmbGFncyA9PSBORF9QSUw6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICMgQyBhcnJheQorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKworICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCBpdGVtc2l6ZSwgJ0MnKQorICAgICAgICAgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbWVtb3J5dmlldzogcmVjb25zdHJ1Y3Qgc3RyaWRlcworICAgICAgICAgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19ST3xQeUJVRl9GT1JNQVQpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmQuc3RyaWRlcyA9PSAoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG12ID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtdiwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICAgICAgICAgIyBGb3J0cmFuIGFycmF5CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFnc3xORF9GT1JUUkFOKQorCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIGl0ZW1zaXplLCAnRicpCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IGZhcnJheShpdGVtcywgc2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfaW52YWxpZChzZWxmKToKKyAgICAgICAgIyBub3Qgd3JpdGFibGUKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAxLCA4KQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAxLCA4KQorCisgICAgICAgICMgY2Fubm90IGJlIGRlbGV0ZWQKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2RlbGl0ZW1fXywgMSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX2RlbGl0ZW1fXywgMSkKKworICAgICAgICAjIG92ZXJmbG93CisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAxPDw2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbmQuX19zZXRpdGVtX18sIDE8PDY0LCA4KQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX2dldGl0ZW1fXywgMTw8NjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAxPDw2NCwgOCkKKworICAgICAgICAjIGZvcm1hdAorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDhdCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W2xlbihpdGVtcyldLCBmb3JtYXQ9IkIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBuZC5fX3NldGl0ZW1fXywgMiwgMzAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX3NldGl0ZW1fXywgMSwgKDEwMCwgMjAwKSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXYuX19zZXRpdGVtX18sIDIsIDMwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMSwgKDEwMCwgMjAwKSkKKworICAgICAgICBpdGVtcyA9IFsoMSwyKSwgKDMsNCksICg1LDYpXQorICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtsZW4oaXRlbXMpXSwgZm9ybWF0PSJMUSIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX3NldGl0ZW1fXywgMiwgMzAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAxLCAoYidceDAwMScsIDIwMCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X3NjYWxhcihzZWxmKToKKyAgICAgICAgIyBzY2FsYXIKKyAgICAgICAgbmQgPSBuZGFycmF5KDEsIHNoYXBlPSgpLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKworICAgICAgICB4ID0gbmRbKCldOyAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxKQorICAgICAgICB4ID0gbmRbLi4uXTsgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICB4ID0gbXZbKCldOyAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxKQorICAgICAgICB4ID0gbXZbLi4uXTsgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAwLCA4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAwLCA4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIDEpCisKKyAgICAgICAgbmRbKCldID0gOTsgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgOSkKKyAgICAgICAgbXZbKCldID0gOTsgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgOSkKKworICAgICAgICBuZFsuLi5dID0gNTsgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgNSkKKyAgICAgICAgbXZbLi4uXSA9IDU7IHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIDUpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X251bGxfc3RyaWRlcyhzZWxmKToKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMio0KSksIHNoYXBlPVsyLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJRykKKworICAgICAgICAjIFN1Yi12aWV3cyBhcmUgb25seSBwb3NzaWJsZSBmb3IgZnVsbCBleHBvcnRlcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5fX2dldGl0ZW1fXywgMSkKKyAgICAgICAgIyBTYW1lIGZvciBzbGljZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5fX2dldGl0ZW1fXywgc2xpY2UoMyw1LDEpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9nZXRpdGVtX3NpbmdsZShzZWxmKToKKyAgICAgICAgIyBnZXRpdGVtCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAtNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCA1KQorCisgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19nZXRpdGVtX18sIC02KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCA1KQorCisgICAgICAgICMgZ2V0aXRlbSB3aXRoIG51bGwgc3RyaWRlcworICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCg1KToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmbGFncz1ORF9XUklUQUJMRSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR3xQeUJVRl9GT1JNQVQpCisKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBtdiA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXYuX19lcV9fKG5kKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12W2ldLCBpdGVtc1tpXSkKKworICAgICAgICAjIGdldGl0ZW0gd2l0aCBudWxsIGZvcm1hdAorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDVdCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk8pCisgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICMgZ2V0aXRlbSB3aXRoIG51bGwgc2hhcGUvc3RyaWRlcy9mb3JtYXQKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1XQorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGl0ZW1zW2ldKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9zZXRpdGVtX3NpbmdsZShzZWxmKToKKyAgICAgICAgIyBhc3NpZ24gc2luZ2xlIHZhbHVlCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBzaW5nbGVfaXRlbSBpbiBpdGVyX2Zvcm1hdCg1KToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgICAgICBuZFtpXSA9IHNpbmdsZV9pdGVtCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19zZXRpdGVtX18sIC02LCBzaW5nbGVfaXRlbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG5kLl9fc2V0aXRlbV9fLCA1LCBzaW5nbGVfaXRlbSkKKworICAgICAgICAgICAgaWYgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IHNpbmdsZV9pdGVtCisgICAgICAgICAgICAgICAgbXZbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAtNiwgc2luZ2xlX2l0ZW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX3NldGl0ZW1fXywgNSwgc2luZ2xlX2l0ZW0pCisKKworICAgICAgICAjIGFzc2lnbiBzaW5nbGUgdmFsdWU6IGxvYmplY3QgPSByb2JqZWN0CisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBzaW5nbGVfaXRlbSBpbiBpdGVyX2Zvcm1hdCg1KToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA0KToKKyAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IGl0ZW1zW2krMV0KKyAgICAgICAgICAgICAgICBuZFtpXSA9IG5kW2krMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA0KToKKyAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IGl0ZW1zW2krMV0KKyAgICAgICAgICAgICAgICBtdltpXSA9IG12W2krMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIGl0ZW1zKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9nZXRpdGVtX211bHRpZGltKHNlbGYpOgorICAgICAgICBzaGFwZV90ID0gKDIsIDMsIDUpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICAjIEMgYXJyYXkKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLXNoYXBlWzBdLCBzaGFwZVswXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldLCBuZFtpXS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoLXNoYXBlWzFdLCBzaGFwZVsxXSk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXVtqXSwgbmRbaV1bal0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZSgtc2hhcGVbMl0sIHNoYXBlWzJdKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXVtqXVtrXSwgbmRbaV1bal1ba10pCisKKyAgICAgICAgICAgICAgICAjIEZvcnRyYW4gYXJyYXkKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFnc3xORF9GT1JUUkFOKQorICAgICAgICAgICAgICAgIGxzdCA9IGZhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtc2hhcGVbMF0sIHNoYXBlWzBdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV0sIG5kW2ldLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgtc2hhcGVbMV0sIHNoYXBlWzFdKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdLCBuZFtpXVtqXS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKHNoYXBlWzJdLCBzaGFwZVsyXSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal1ba10sIG5kW2ldW2pdW2tdKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zZXF1ZW5jZShzZWxmKToKKyAgICAgICAgbmQgPSBuZGFycmF5KDEsIHNoYXBlPSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICIxIGluIG5kIiwgbG9jYWxzKCkpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjEgaW4gbXYiLCBsb2NhbHMoKSkKKworICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCg1KToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKG5kKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIGl0ZW1zW2ldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2IGluIG5kKQorCisgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJhdGUobXYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIGl0ZW1zW2ldKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodiBpbiBtdikKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfaW52YWxpZChzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4XQorCisgICAgICAgICMgcnZhbHVlIGlzIG5vdCBhbiBleHBvcnRlcgorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCw4LDEpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCw4LDEpLCBpdGVtcykKKworICAgICAgICAjIHJ2YWx1ZSBpcyBub3QgYSBmdWxsIGV4cG9ydGVyCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB4ciA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9ORCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDgsMSksIHhyKQorCisgICAgICAgICMgemVybyBzdGVwCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgc2xpY2UoMCwxLDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtdi5fX2dldGl0ZW1fXywgc2xpY2UoMCwxLDApKQorCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzIsNF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19nZXRpdGVtX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGljZSgwLDEsMSksIHNsaWNlKDAsMSwwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwxLDApLCBzbGljZSgwLDEsMSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAiQCUkIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgKCJAJSQiLCBzbGljZSgwLDEsMSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAoc2xpY2UoMCwxLDEpLCB7fSkpCisKKyAgICAgICAgIyBtZW1vcnl2aWV3OiBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbXYuX19nZXRpdGVtX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGljZSgwLDEsMSksIHNsaWNlKDAsMSwwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19nZXRpdGVtX18sICJAJSQiKQorCisgICAgICAgICMgZGlmZmVyaW5nIGZvcm1hdAorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJCIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHhyID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiKQorICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh4cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgeHJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bC50b2xpc3QoKSwgaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIG1yWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICMgZGlmZmVyaW5nIGl0ZW1zaXplCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeXIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iTCIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgbXJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgIyBkaWZmZXJpbmcgbmRpbQorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsyLCA0XSwgZm9ybWF0PSJiIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHhyID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiKQorICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh4cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgeHJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bC50b2xpc3QoKSwgW1sxLDIsMyw0XSwgWzUsNiw3LDhdXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXJbNzo4XSkKKworICAgICAgICAjIGRpZmZlcmluZyBzaGFwZQorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHhyID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiKQorICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh4cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsMiwxKSwgeHJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bC50b2xpc3QoKSwgaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDIsMSksIG1yWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICMgX3Rlc3RidWZmZXIuYyBtb2R1bGUgZnVuY3Rpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2xpY2VfaW5kaWNlcywgc2xpY2UoMCwxLDIpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbGljZV9pbmRpY2VzLCAiIyMjIyMjIyMjIyMiLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzbGljZV9pbmRpY2VzLCBzbGljZSgwLDEsMCksIDQpCisKKyAgICAgICAgeCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIiwgZmxhZ3M9TkRfUElMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHguYWRkX3N1Ym9mZnNldHMpCisKKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iQiIpCisgICAgICAgIHggPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHguYWRkX3N1Ym9mZnNldHMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX3plcm9fc2hhcGUoc2VsZik6CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXQorCisgICAgICAgIHggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTJdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeSA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMl0sIGZvcm1hdD0iTCIpCisgICAgICAgIHhbNDo0XSA9IHlbOTo5XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4KQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbCwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbCwgeSkKKyAgICAgICAgbWxbNDo0XSA9IG1yWzk6OV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgeCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVszLCA0XSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHkgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNCwgM10sIGZvcm1hdD0iTCIpCisgICAgICAgIHhbMToyLCAyOjJdID0geVsxOjIsIDM6M10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBjYXJyYXkoaXRlbXMsIFszLCA0XSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX211bHRpZGltKHNlbGYpOgorICAgICAgICBzaGFwZV90ID0gKDIsIDMsIDUpCisgICAgICAgIG5kaW0gPSBsZW4oc2hhcGVfdCkKKyAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgICAgICBmb3Igc2xpY2VzIGluIHJzbGljZXNfbmRpbShuZGltLCBzaGFwZSk6CisKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VkID0gbXVsdGlzbGljZShsc3QsIHNsaWNlcykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kc2xpY2VkID0gbmRbc2xpY2VzXQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmRlcnIgb3IgbGlzdGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobmRlcnIsIGxpc3RlcnIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kc2xpY2VkLnRvbGlzdCgpLCBzbGljZWQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX3JlZHVuZGFudF9zdWJvZmZzZXRzKHNlbGYpOgorICAgICAgICBzaGFwZV90ID0gKDIsIDMsIDUsIDIpCisgICAgICAgIG5kaW0gPSBsZW4oc2hhcGVfdCkKKyAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIG5kLmFkZF9zdWJvZmZzZXRzKCkKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBleC5hZGRfc3Vib2Zmc2V0cygpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBmb3Igc2xpY2VzIGluIHJzbGljZXNfbmRpbShuZGltLCBzaGFwZSk6CisKKyAgICAgICAgICAgICAgICBsaXN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2xpY2VkID0gbXVsdGlzbGljZShsc3QsIHNsaWNlcykKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgbmRlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBuZHNsaWNlZCA9IG5kW3NsaWNlc10KKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgIGlmIG5kZXJyIG9yIGxpc3RlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobmRlcnIsIGxpc3RlcnIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZHNsaWNlZC50b2xpc3QoKSwgc2xpY2VkKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9hc3NpZ25fc2luZ2xlKHNlbGYpOgorICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCg1KToKKyAgICAgICAgICAgIGZvciBsc2xpY2UgaW4gZ2Vuc2xpY2VzKDUpOgorICAgICAgICAgICAgICAgIGZvciByc2xpY2UgaW4gZ2Vuc2xpY2VzKDUpOgorICAgICAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmbGFnc3xORF9XUklUQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPWYpCisgICAgICAgICAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZikKKyAgICAgICAgICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAgICAgICAgICAgICAgICAgbHN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9zdHJ1Y3R1cmUgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBsc3QgPSBpdGVtc1s6XQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx2YWwgPSBsc3RbbHNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2YWwgPSBsc3RbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdFtsc2xpY2VdID0gbHN0W3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX3N0cnVjdHVyZSA9IGxlbihsdmFsKSAhPSBsZW4ocnZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZFtsc2xpY2VdID0gbmRbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlmZl9zdHJ1Y3R1cmU6ICMgbmRhcnJheSBjYW5ub3QgY2hhbmdlIHNoYXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgbHN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobmRlcnIsIGxzdGVycikKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAgICAgbXZlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXZbbHNsaWNlXSA9IG12W3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdmVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRpZmZfc3RydWN0dXJlOiAjIG1lbW9yeXZpZXcgY2Fubm90IGNoYW5nZSBzaGFwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXZlcnIsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIGxzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG12ZXJyLCBsc3RlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobXYsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPW5kLml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZC5uZGltLCBzaGFwZT1uZC5zaGFwZSwgc3RyaWRlcz1uZC5zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PW5kLnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9hc3NpZ25fbXVsdGlkaW0oc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSkKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZV90KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoSVRFUkFUSU9OUyk6CisgICAgICAgICAgICAgICAgICAgIGxzbGljZXMsIHJzbGljZXMgPSByYW5kc2xpY2VfZnJvbV9zaGFwZShuZGltLCBzaGFwZSkKKworICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9ZmxhZ3N8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbXVsdGlzbGljZV9hc3NpZ24obHN0LCBsc3QsIGxzbGljZXMsIHJzbGljZXMpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZFtsc2xpY2VzXSA9IG5kW3JzbGljZXNdCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBpZiBuZGVyciBvciBsaXN0ZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbGlzdGVycikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfcmFuZG9tKHNlbGYpOgorICAgICAgICAjIGNvbnN0cnVjdGlvbiBvZiB2YWxpZCBhcnJheXMKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoSVRFUkFUSU9OUyk6CisgICAgICAgICAgICBmb3IgZm10IGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgICAgICB0ID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIFRydWUsIG1heGRpbT1NQVhESU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heHNoYXBlPU1BWFNIQVBFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJpZnlfc3RydWN0dXJlKCp0KSkKKyAgICAgICAgICAgICAgICBpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHQpCisKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0KQorICAgICAgICAgICAgICAgIHhsaXN0ID0geC50b2xpc3QoKQorCisgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICAgICAgbXZsaXN0ID0gbXYudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdmxpc3QsIHhsaXN0KQorCisgICAgICAgICAgICAgICAgaWYgdFsyXSA+IDA6CisgICAgICAgICAgICAgICAgICAgICMgbmRpbSA+IDA6IHRlc3QgYWdhaW5zdCBzdWJvZmZzZXRzIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICB5ID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0LCBmbGFncz1ORF9QSUwpCisgICAgICAgICAgICAgICAgICAgIHlsaXN0ID0geS50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsaXN0LCB5bGlzdCkKKworICAgICAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoeSkKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIHkpCisgICAgICAgICAgICAgICAgICAgICAgICBtdmxpc3QgPSBtdi50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdmxpc3QsIHlsaXN0KQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gdFszXQorICAgICAgICAgICAgICAgICAgICBpZiAwIGluIHNoYXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTEwCisgICAgICAgICAgICAgICAgICAgIHogPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeSh4LCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9ei5pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT16Lm5kaW0sIHNoYXBlPXouc2hhcGUsIHN0cmlkZXM9ei5zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9ei50b2xpc3QoKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfcmFuZG9tX2ludmFsaWQoc2VsZik6CisgICAgICAgICMgZXhjZXB0aW9ucyBkdXJpbmcgY29uc3RydWN0aW9uIG9mIGludmFsaWQgYXJyYXlzCisgICAgICAgIGZvciBfIGluIHJhbmdlKElURVJBVElPTlMpOgorICAgICAgICAgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgdCA9IHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCBGYWxzZSwgbWF4ZGltPU1BWERJTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4c2hhcGU9TUFYU0hBUEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2ZXJpZnlfc3RydWN0dXJlKCp0KSkKKyAgICAgICAgICAgICAgICBpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHQpCisKKyAgICAgICAgICAgICAgICBuZGVyciA9IEZhbHNlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB4ID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZGVycikKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBudW1weV9lcnIgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB5ID0gbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtcHlfZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBpZiAwOiAjIGh0dHA6Ly9wcm9qZWN0cy5zY2lweS5vcmcvbnVtcHkvdGlja2V0LzE5MTAKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudW1weV9lcnIpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3JhbmRvbV9zbGljZV9hc3NpZ24oc2VsZik6CisgICAgICAgICMgdmFsaWQgc2xpY2UgYXNzaWdubWVudHMKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoSVRFUkFUSU9OUyk6CisgICAgICAgICAgICBmb3IgZm10IGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgICAgICBsc2hhcGUsIHJzaGFwZSwgbHNsaWNlcywgcnNsaWNlcyA9IFwKKyAgICAgICAgICAgICAgICAgICAgcmFuZF9hbGlnbmVkX3NsaWNlcyhtYXhkaW09TUFYRElNLCBtYXhzaGFwZT1NQVhTSEFQRSkKKyAgICAgICAgICAgICAgICB0bCA9IHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCBUcnVlLCBzaGFwZT1sc2hhcGUpCisgICAgICAgICAgICAgICAgdHIgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgVHJ1ZSwgc2hhcGU9cnNoYXBlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJpZnlfc3RydWN0dXJlKCp0bCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcmlmeV9zdHJ1Y3R1cmUoKnRyKSkKKyAgICAgICAgICAgICAgICBsaXRlbXMgPSByYW5kaXRlbXNfZnJvbV9zdHJ1Y3R1cmUoZm10LCB0bCkKKyAgICAgICAgICAgICAgICByaXRlbXMgPSByYW5kaXRlbXNfZnJvbV9zdHJ1Y3R1cmUoZm10LCB0cikKKworICAgICAgICAgICAgICAgIHhsID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShsaXRlbXMsIGZtdCwgdGwpCisgICAgICAgICAgICAgICAgeHIgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKHJpdGVtcywgZm10LCB0cikKKyAgICAgICAgICAgICAgICB4bFtsc2xpY2VzXSA9IHhyW3JzbGljZXNdCisgICAgICAgICAgICAgICAgeGxsaXN0ID0geGwudG9saXN0KCkKKyAgICAgICAgICAgICAgICB4cmxpc3QgPSB4ci50b2xpc3QoKQorCisgICAgICAgICAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICAgICAgICAgIG1yID0gbWVtb3J5dmlldyh4cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCB4bGxpc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtci50b2xpc3QoKSwgeHJsaXN0KQorCisgICAgICAgICAgICAgICAgaWYgdGxbMl0gPiAwIGFuZCB0clsyXSA+IDA6CisgICAgICAgICAgICAgICAgICAgICMgbmRpbSA+IDA6IHRlc3QgYWdhaW5zdCBzdWJvZmZzZXRzIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICB5bCA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUobGl0ZW1zLCBmbXQsIHRsLCBmbGFncz1ORF9QSUwpCisgICAgICAgICAgICAgICAgICAgIHlyID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShyaXRlbXMsIGZtdCwgdHIsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgICAgICAgICAgeWxbbHNsaWNlc10gPSB5cltyc2xpY2VzXQorICAgICAgICAgICAgICAgICAgICB5bGxpc3QgPSB5bC50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICB5cmxpc3QgPSB5ci50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsbGlzdCwgeWxsaXN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhybGlzdCwgeXJsaXN0KQorCisgICAgICAgICAgICAgICAgICAgIG1sID0gbWVtb3J5dmlldyh5bCkKKyAgICAgICAgICAgICAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHlyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCB5bGxpc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXIudG9saXN0KCksIHlybGlzdCkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBpZiAwIGluIGxzaGFwZSBvciAwIGluIHJzaGFwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkxMAorCisgICAgICAgICAgICAgICAgICAgIHpsID0gbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUobGl0ZW1zLCBmbXQsIHRsKQorICAgICAgICAgICAgICAgICAgICB6ciA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKHJpdGVtcywgZm10LCB0cikKKyAgICAgICAgICAgICAgICAgICAgemxbbHNsaWNlc10gPSB6cltyc2xpY2VzXQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19vdmVybGFwcGluZyh0bCkgYW5kIG5vdCBpc19vdmVybGFwcGluZyh0cik6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFNsaWNlIGFzc2lnbm1lbnQgb2Ygb3ZlcmxhcHBpbmcgc3RydWN0dXJlcworICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyB1bmRlZmluZWQgaW4gTnVtUHkuCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeSh4bCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT16bC5pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09emwubmRpbSwgc2hhcGU9emwuc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPXpsLnN0cmlkZXMsIGxzdD16bC50b2xpc3QoKSkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeSh4ciwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXpyLml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPXpyLm5kaW0sIHNoYXBlPXpyLnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPXpyLnN0cmlkZXMsIGxzdD16ci50b2xpc3QoKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfcmVfZXhwb3J0KHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0KKworICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVszLDRdLCBmbGFncz1ORF9QSUwpCisgICAgICAgIGV4ID0gbmRhcnJheShuZCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoZXguZmxhZ3MgJiBORF9QSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXgub2JqLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5zdWJvZmZzZXRzLCAoMCwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmNfY29udGlndW91cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5mX2NvbnRpZ3VvdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguY29udGlndW91cykKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfemVyb19zaGFwZShzZWxmKToKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzBdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBbXSkKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVswLDMsM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgW10pCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMywwLDNdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFtbXSwgW10sIFtdXSkKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszLDMsMF0sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tbXSwgW10sIFtdXSwgW1tdLCBbXSwgW11dLCBbW10sIFtdLCBbXV1dKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV96ZXJvX3N0cmlkZXMoc2VsZik6CisgICAgICAgICMgemVybyBzdHJpZGVzCisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVs1XSwgc3RyaWRlcz1bMF0sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbMSwgMSwgMSwgMSwgMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBbMSwgMSwgMSwgMSwgMV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X29mZnNldChzZWxmKToKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMjApKSwgc2hhcGU9WzNdLCBvZmZzZXQ9NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5vZmZzZXQsIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFs3LDgsOV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X21lbW9yeXZpZXdfZnJvbV9idWZmZXIoc2VsZik6CisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMpKSwgc2hhcGU9WzNdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIG0gPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2dldF9wb2ludGVyKHNlbGYpOgorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzKSksIHNoYXBlPVszXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBnZXRfcG9pbnRlcihuZCwgW2ldKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfdG9saXN0X251bGxfc3RyaWRlcyhzZWxmKToKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMjApKSwgc2hhcGU9WzIsMiw1XSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9ORHxQeUJVRl9GT1JNQVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGV4LnRvbGlzdCgpKQorCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGV4LnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9jbXBfY29udGlnKHNlbGYpOgorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY21wX2NvbnRpZyhiIjEyMyIsIGIiNDU2IikpCisKKyAgICAgICAgeCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgeSA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bNCwzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbXBfY29udGlnKHgsIHkpKQorCisgICAgICAgIHggPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmb3JtYXQ9IkIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY21wX2NvbnRpZyh4LCBiJ1x4MDEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtcF9jb250aWcoYidceDAxJywgeCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2hhc2goc2VsZik6CisKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdMJywgWzEsMiwzXSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGhhc2gsIG5kKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsCisgICAgICAgIGIgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICAjIEMtY29udGlndW91cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywyLDJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgRm9ydHJhbiBjb250aWd1b3VzCisgICAgICAgIGIgPSBieXRlcyh0cmFuc3Bvc2UobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bNCwzXSkpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgIGIgPSBieXRlcyh0cmFuc3Bvc2UobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSwgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICAjIHN1Ym9mZnNldHMKKyAgICAgICAgYiA9IGJ5dGVzKGxpc3QocmFuZ2UoMTIpKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMiwzXSwgZmxhZ3M9TkRfUElMKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgbm9uLWJ5dGUgZm9ybWF0cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J0wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKG5kLnRvYnl0ZXMoKSkpCisKKyAgICBkZWYgdGVzdF9weV9idWZmZXJfdG9fY29udGlndW91cyhzZWxmKToKKworICAgICAgICAjIFRoZSByZXF1ZXN0cyBhcmUgdXNlZCBpbiBfdGVzdGJ1ZmZlci5jOnB5X2J1ZmZlcl90b19jb250aWd1b3VzCisgICAgICAgICMgdG8gZ2VuZXJhdGUgYnVmZmVycyB3aXRob3V0IGZ1bGwgaW5mb3JtYXRpb24gZm9yIHRlc3RpbmcuCisgICAgICAgIHJlcXVlc3RzID0gKAorICAgICAgICAgICAgIyBkaXN0aW5jdCBmbGFncworICAgICAgICAgICAgUHlCVUZfSU5ESVJFQ1QsIFB5QlVGX1NUUklERVMsIFB5QlVGX05ELCBQeUJVRl9TSU1QTEUsCisgICAgICAgICAgICAjIGNvbXBvdW5kIHJlcXVlc3RzCisgICAgICAgICAgICBQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLAorICAgICAgICAgICAgUHlCVUZfUkVDT1JEUywgUHlCVUZfUkVDT1JEU19STywKKyAgICAgICAgICAgIFB5QlVGX1NUUklERUQsIFB5QlVGX1NUUklERURfUk8sCisgICAgICAgICAgICBQeUJVRl9DT05USUcsIFB5QlVGX0NPTlRJR19STywKKyAgICAgICAgKQorCisgICAgICAgICMgbm8gYnVmZmVyIGludGVyZmFjZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHB5X2J1ZmZlcl90b19jb250aWd1b3VzLCB7fSwgJ0YnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9GVUxMX1JPKQorCisgICAgICAgICMgc2NhbGFyLCByZWFkLW9ubHkgcmVxdWVzdAorICAgICAgICBuZCA9IG5kYXJyYXkoOSwgc2hhcGU9KCksIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVswXSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYicnKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDgpKSwgc2hhcGU9WzIsIDAsIDddLCBmb3JtYXQ9IkwiLAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYicnKQorCisgICAgICAgICMjIyBPbmUtZGltZW5zaW9uYWwgYXJyYXlzIGFyZSB0cml2aWFsLCBzaW5jZSBGb3J0cmFuIGFuZCBDIG9yZGVyCisgICAgICAgICMjIyBhcmUgdGhlIHNhbWUuCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwKKyAgICAgICAgZm9yIGYgaW4gWzAsIE5EX0ZPUlRSQU5dOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmb3JtYXQ9ImgiLCBmbGFncz1mfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbmRieXRlcyA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bM10sIGZvcm1hdD0iYiIsIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBuZGJ5dGVzID0gbmQudG9ieXRlcygpCisgICAgICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kYnl0ZXMpCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwsIG5vbi1jb250aWd1b3VzIGlucHV0CisgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVsyXSwgc3RyaWRlcz1bMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBuZGJ5dGVzID0gbmQudG9ieXRlcygpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiBbUHlCVUZfU1RSSURFUywgUHlCVUZfRlVMTF06CisgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kYnl0ZXMpCisKKyAgICAgICAgbmQgPSBuZFs6Oi0xXQorICAgICAgICBuZGJ5dGVzID0gbmQudG9ieXRlcygpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICAjIyMKKyAgICAgICAgIyMjIE11bHRpLWRpbWVuc2lvbmFsIGFycmF5czoKKyAgICAgICAgIyMjCisgICAgICAgICMjIyBUaGUgZ29hbCBoZXJlIGlzIHRvIHByZXNlcnZlIHRoZSBsb2dpY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICAgICAjIyMgaW5wdXQgYXJyYXkgYnV0IGNoYW5nZSB0aGUgcGh5c2ljYWwgcmVwcmVzZW50YXRpb24gaWYgbmVjZXNzYXJ5LgorICAgICAgICAjIyMKKyAgICAgICAgIyMjIF90ZXN0YnVmZmVyIGV4YW1wbGU6CisgICAgICAgICMjIyA9PT09PT09PT09PT09PT09PT09PQorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIEMgaW5wdXQgYXJyYXk6CisgICAgICAgICMjIyAgICAtLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSkKKyAgICAgICAgIyMjICAgICAgID4+PiBuZC50b2xpc3QoKQorICAgICAgICAjIyMgICAgICAgW1swLCAxLCAyLCAzXSwKKyAgICAgICAgIyMjICAgICAgICBbNCwgNSwgNiwgN10sCisgICAgICAgICMjIyAgICAgICAgWzgsIDksIDEwLCAxMV1dCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgRm9ydHJhbiBvdXRwdXQ6CisgICAgICAgICMjIyAgICAtLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0YnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICAjIyMgICAgICAgPj4+IGInXHgwMFx4MDRceDA4XHgwMVx4MDVcdFx4MDJceDA2XG5ceDAzXHgwN1x4MGInCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgVGhlIHJldHVybiB2YWx1ZSBjb3JyZXNwb25kcyB0byB0aGlzIGlucHV0IGxpc3QgZm9yCisgICAgICAgICMjIyAgICBfdGVzdGJ1ZmZlcidzIG5kYXJyYXk6CisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KFswLDQsOCwxLDUsOSwyLDYsMTAsMyw3LDExXSwgc2hhcGU9WzMsNF0sCisgICAgICAgICMjIyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQudG9saXN0KCkKKyAgICAgICAgIyMjICAgICAgIFtbMCwgMSwgMiwgM10sCisgICAgICAgICMjIyAgICAgICAgWzQsIDUsIDYsIDddLAorICAgICAgICAjIyMgICAgICAgIFs4LCA5LCAxMCwgMTFdXQorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIFRoZSBsb2dpY2FsIGFycmF5IGlzIHRoZSBzYW1lLCBidXQgdGhlIHZhbHVlcyBpbiBtZW1vcnkgYXJlIG5vdworICAgICAgICAjIyMgICAgaW4gRm9ydHJhbiBvcmRlci4KKyAgICAgICAgIyMjCisgICAgICAgICMjIyBOdW1QeSBleGFtcGxlOgorICAgICAgICAjIyMgPT09PT09PT09PT09PT0KKyAgICAgICAgIyMjICAgIF90ZXN0YnVmZmVyJ3MgbmRhcnJheSB0YWtlcyBsaXN0cyB0byBpbml0aWFsaXplIHRoZSBtZW1vcnkuCisgICAgICAgICMjIyAgICBIZXJlJ3MgdGhlIHNhbWUgc2VxdWVuY2UgaW4gTnVtUHk6CisgICAgICAgICMjIworICAgICAgICAjIyMgICAgQyBpbnB1dDoKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KGJ1ZmZlcj1ieXRlYXJyYXkobGlzdChyYW5nZSgxMikpKSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9WzMsIDRdLCBkdHlwZT0nQicpCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQKKyAgICAgICAgIyMjICAgICAgIGFycmF5KFtbIDAsICAxLCAgMiwgIDNdLAorICAgICAgICAjIyMgICAgICAgICAgICAgIFsgNCwgIDUsICA2LCAgN10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA4LCAgOSwgMTAsIDExXV0sIGR0eXBlPXVpbnQ4KQorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIEZvcnRyYW4gb3V0cHV0OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyAgICAgICA+Pj4gZm9ydHJhbl9idWYgPSBuZC50b3N0cmluZyhvcmRlcj0nRicpCisgICAgICAgICMjIyAgICAgICA+Pj4gZm9ydHJhbl9idWYKKyAgICAgICAgIyMjICAgICAgIGInXHgwMFx4MDRceDA4XHgwMVx4MDVcdFx4MDJceDA2XG5ceDAzXHgwN1x4MGInCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgICAgPj4+IG5kID0gbmRhcnJheShidWZmZXI9Zm9ydHJhbl9idWYsIHNoYXBlPVszLCA0XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9J0InLCBvcmRlcj0nRicpCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgICAgPj4+IG5kCisgICAgICAgICMjIyAgICAgICBhcnJheShbWyAwLCAgMSwgIDIsICAzXSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDQsICA1LCAgNiwgIDddLAorICAgICAgICAjIyMgICAgICAgICAgICAgIFsgOCwgIDksIDEwLCAxMV1dLCBkdHlwZT11aW50OCkKKyAgICAgICAgIyMjCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgY29udGlndW91cyBpbnB1dAorICAgICAgICBsc3QgPSBsaXN0KHJhbmdlKDEyKSkKKyAgICAgICAgZm9yIGYgaW4gWzAsIE5EX0ZPUlRSQU5dOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGxzdCwgc2hhcGU9WzMsIDRdLCBmbGFncz1mfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgbmEgPSBudW1weV9hcnJheShidWZmZXI9Ynl0ZWFycmF5KGxzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZT1bMywgNF0sIGR0eXBlPSdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyPSdDJyBpZiBmID09IDAgZWxzZSAnRicpCisKKyAgICAgICAgICAgICMgJ0MnIHJlcXVlc3QKKyAgICAgICAgICAgIGlmIGYgPT0gTkRfRk9SVFJBTjogIyAnRicgdG8gJ0MnCisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkodHJhbnNwb3NlKGxzdCwgWzQsIDNdKSwgc2hhcGU9WzMsIDRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0geC50b2J5dGVzKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnQycsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBleHBlY3RlZCkKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBvdXRwdXQgY2FuIGJlIHVzZWQgYXMgdGhlIGJhc2lzIGZvciBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICAgICAgICAjIGEgQyBhcnJheSB0aGF0IGlzIGxvZ2ljYWxseSBpZGVudGljYWwgdG8gdGhlIGlucHV0IGFycmF5LgorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuYS50b3N0cmluZyhvcmRlcj0nQycpKQorCisgICAgICAgICAgICAjICdGJyByZXF1ZXN0CisgICAgICAgICAgICBpZiBmID09IDA6ICMgJ0MnIHRvICdGJworICAgICAgICAgICAgICAgIHggPSBuZGFycmF5KHRyYW5zcG9zZShsc3QsIFszLCA0XSksIHNoYXBlPVs0LCAzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkobHN0LCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSB4LnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gW1B5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sIFB5QlVGX0lORElSRUNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX1NUUklERVMsIFB5QlVGX05EXToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0YnLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGV4cGVjdGVkKQorCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IG91dHB1dCBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICMgYSBGb3J0cmFuIGFycmF5IHRoYXQgaXMgbG9naWNhbGx5IGlkZW50aWNhbCB0byB0aGUgaW5wdXQgYXJyYXkuCisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfRk9SVFJBTnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmEudG9zdHJpbmcob3JkZXI9J0YnKSkKKworICAgICAgICAgICAgIyAnQScgcmVxdWVzdAorICAgICAgICAgICAgaWYgZiA9PSBORF9GT1JUUkFOOgorICAgICAgICAgICAgICAgIHggPSBuZGFycmF5KGxzdCwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHgudG9ieXRlcygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbmQudG9ieXRlcygpCisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiBbUHlCVUZfRlVMTCwgUHlCVUZfRlVMTF9STywgUHlCVUZfSU5ESVJFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfU1RSSURFUywgUHlCVUZfTkRdOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnQScsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBleHBlY3RlZCkKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBvdXRwdXQgY2FuIGJlIHVzZWQgYXMgdGhlIGJhc2lzIGZvciBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICAgICAgICAjIGFuIGFycmF5IHdpdGggb3JkZXI9ZiB0aGF0IGlzIGxvZ2ljYWxseSBpZGVudGljYWwgdG8gdGhlIGlucHV0CisgICAgICAgICAgICAgICAgIyBhcnJheS4KKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1mfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuYS50b3N0cmluZyhvcmRlcj0nQScpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIG5vbi1jb250aWd1b3VzIGlucHV0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfUElMKQorCisgICAgICAgICMgJ0MnCisgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0MnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kLnRvYnl0ZXMoKSkKKyAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICAgICAgIyAnRicKKyAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnRicsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgIHggPSBuZGFycmF5KHRyYW5zcG9zZShsc3QsIFszLCA0XSksIHNoYXBlPVs0LCAzXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgeC50b2J5dGVzKCkpCisgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX0ZPUlRSQU58TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICAgICAgIyAnQScKKyAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnQScsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmQudG9ieXRlcygpKQorICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29uc3RydWN0aW9uKHNlbGYpOgorCisgICAgICAgIGl0ZW1zX3NoYXBlID0gWyg5LCBbXSksIChbMSwyLDNdLCBbM10pLCAobGlzdChyYW5nZSgyKjMqNSkpLCBbMiwzLDVdKV0KKworICAgICAgICAjIE51bVB5IHN0eWxlLCBDLWNvbnRpZ3VvdXM6CisgICAgICAgIGZvciBpdGVtcywgc2hhcGUgaW4gaXRlbXNfc2hhcGU6CisKKyAgICAgICAgICAgICMgRnJvbSBQRVAtMzExOCBjb21wbGlhbnQgZXhwb3J0ZXI6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5jX2NvbnRpZ3VvdXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5jb250aWd1b3VzKQorCisgICAgICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorICAgICAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgMSwgJ0MnKQorICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgRnJvbSBtZW1vcnl2aWV3OgorICAgICAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG0pCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogbm8gc3RyaWRlcworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHX1JPfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQuc3RyaWRlcywgKCkpCisgICAgICAgICAgICBtID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IG5vIGZvcm1hdCwgc2hhcGUsIHN0cmlkZXMKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQuZm9ybWF0LCAnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQuc2hhcGUsICgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5zdHJpZGVzLCAoKSkKKyAgICAgICAgICAgIG0gPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKworICAgICAgICAgICAgbHN0ID0gW2l0ZW1zXSBpZiBuZGltID09IDAgZWxzZSBpdGVtcworICAgICAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bZXgubmJ5dGVzXSwgc3RyaWRlcz0oMSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAjIE51bVB5IHN0eWxlLCBGb3J0cmFuIGNvbnRpZ3VvdXM6CisgICAgICAgIGZvciBpdGVtcywgc2hhcGUgaW4gaXRlbXNfc2hhcGU6CisKKyAgICAgICAgICAgICMgRnJvbSBQRVAtMzExOCBjb21wbGlhbnQgZXhwb3J0ZXI6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5mX2NvbnRpZ3VvdXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5jb250aWd1b3VzKQorCisgICAgICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorICAgICAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgMSwgJ0YnKQorICAgICAgICAgICAgbHN0ID0gZmFycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgRnJvbSBtZW1vcnl2aWV3OgorICAgICAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG0pCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgIyBQSUwgc3R5bGU6CisgICAgICAgIGZvciBpdGVtcywgc2hhcGUgaW4gaXRlbXNfc2hhcGVbMTpdOgorCisgICAgICAgICAgICAjIEZyb20gUEVQLTMxMTggY29tcGxpYW50IGV4cG9ydGVyOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1leC5zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBGcm9tIG1lbW9yeXZpZXc6CisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcobSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1leC5zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAjIEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50czoKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtZW1vcnl2aWV3LCBiJzknLCAneCcpCisgICAgICAgICMgTm90IGEgYnVmZmVyIHByb3ZpZGVyOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbW9yeXZpZXcsIHt9KQorICAgICAgICAjIE5vbi1jb21wbGlhbnQgYnVmZmVyIHByb3ZpZGVyOgorICAgICAgICBleCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCBuZCkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHX1JPfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorCisgICAgICAgICMgbmRpbSA+IDY0CisgICAgICAgIG5kID0gbmRhcnJheShbMV0qMTI4LCBzaGFwZT1bMV0qMTI4LCBmb3JtYXQ9J0wnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1vcnl2aWV3LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCAnQycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgJ0YnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmRbOjotMV0sIFB5QlVGX1JFQUQsICdDJykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2FzdF96ZXJvX3NoYXBlKHNlbGYpOgorICAgICAgICAjIENhc3RzIGFyZSB1bmRlZmluZWQgaWYgc2hhcGUgY29udGFpbnMgemVyb3MuIFRoZXNlIGFycmF5cyBhcmUKKyAgICAgICAgIyByZWdhcmRlZCBhcyBDLWNvbnRpZ3VvdXMgYnkgTnVtcHkgYW5kIFB5QnVmZmVyX0dldENvbnRpZ3VvdXMoKSwKKyAgICAgICAgIyBzbyB0aGV5IGFyZSBub3QgY2F1Z2h0IGJ5IHRoZSB0ZXN0IGZvciBDLWNvbnRpZ3VpdHkgaW4gbWVtb3J5X2Nhc3QoKS4KKyAgICAgICAgaXRlbXMgPSBbMSwyLDNdCisgICAgICAgIGZvciBzaGFwZSBpbiAoWzAsMywzXSwgWzMsMCwzXSwgWzAsMywzXSk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4LmNfY29udGlndW91cykKKyAgICAgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsICdjJykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc3RydWN0X21vZHVsZShzZWxmKToKKworICAgICAgICBjbGFzcyBJTlQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsID0gdmFsCisgICAgICAgICAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWwKKworICAgICAgICBjbGFzcyBJRFgob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsID0gdmFsCisgICAgICAgICAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbAorCisgICAgICAgIGRlZiBmKCk6IHJldHVybiA3CisKKyAgICAgICAgdmFsdWVzID0gW0lOVCg5KSwgSURYKDkpLAorICAgICAgICAgICAgICAgICAgMi4yKzNqLCBEZWNpbWFsKCItMjEuMSIpLCAxMi4yLCBGcmFjdGlvbig1LCAyKSwKKyAgICAgICAgICAgICAgICAgIFsxLDIsM10sIHs0LDUsNn0sIHs3Ojh9LCAoKSwgKDksKSwKKyAgICAgICAgICAgICAgICAgIFRydWUsIEZhbHNlLCBOb25lLCBOb3RJbXBsZW1lbnRlZCwKKyAgICAgICAgICAgICAgICAgIGInYScsIGInYWJjJywgYnl0ZWFycmF5KGInYScpLCBieXRlYXJyYXkoYidhYmMnKSwKKyAgICAgICAgICAgICAgICAgICdhJywgJ2FiYycsIHInYScsIHInYWJjJywKKyAgICAgICAgICAgICAgICAgIGYsIGxhbWJkYSB4OiB4XQorCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBpdGVtIGluIGl0ZXJfZm9ybWF0KDEwLCAnbWVtb3J5dmlldycpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTBdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEwXSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAgICAgc3RydWN0LnBhY2tfaW50byhmbXQsIG5kLCAwLCBpdGVtKQorICAgICAgICAgICAgbVswXSA9IGl0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswXSwgbmRbMF0pCisKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGlmICdQJyBpbiBmbXQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZm9yIHYgaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIHN0cnVjdF9lcnIgPSBOb25lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFja19pbnRvKGZtdCwgbmQsIGl0ZW1zaXplLCB2KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdF9lcnIgPSBzdHJ1Y3QuZXJyb3IKKworICAgICAgICAgICAgICAgIG12X2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1bMV0gPSB2CisgICAgICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIG12X2VyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICBpZiBzdHJ1Y3RfZXJyIG9yIG12X2VycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzdHJ1Y3RfZXJyLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG12X2VyciwgTm9uZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIG5kWzFdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0X3plcm9fc3RyaWRlcyhzZWxmKToKKyAgICAgICAgIyBDYXN0cyBhcmUgdW5kZWZpbmVkIGlmIHN0cmlkZXMgY29udGFpbnMgemVyb3MuIFRoZXNlIGFycmF5cyBhcmUKKyAgICAgICAgIyAoc29tZXRpbWVzISkgcmVnYXJkZWQgYXMgQy1jb250aWd1b3VzIGJ5IE51bXB5LCBidXQgbm90IGJ5CisgICAgICAgICMgUHlCdWZmZXJfR2V0Q29udGlndW91cygpLgorICAgICAgICBleCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBzdHJpZGVzPVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5jX2NvbnRpZ3VvdXMpCisgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgJ2MnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0X2ludmFsaWQoc2VsZik6CisgICAgICAgICMgaW52YWxpZCBmb3JtYXQKKyAgICAgICAgZm9yIHNmbXQgaW4gTk9OX0JZVEVfRk9STUFUOgorICAgICAgICAgICAgc2Zvcm1hdCA9ICdAJyArIHNmbXQgaWYgcmFuZHJhbmdlKDIpIGVsc2Ugc2ZtdAorICAgICAgICAgICAgc3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoc2Zvcm1hdCkKKyAgICAgICAgICAgIGZvciBkZm10IGluIE5PTl9CWVRFX0ZPUk1BVDoKKyAgICAgICAgICAgICAgICBkZm9ybWF0ID0gJ0AnICsgZGZtdCBpZiByYW5kcmFuZ2UoMikgZWxzZSBkZm10CisgICAgICAgICAgICAgICAgZHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZGZvcm1hdCkKKyAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgzMikpLCBzaGFwZT1bMzIvL3NzaXplXSwgZm9ybWF0PXNmb3JtYXQpCisgICAgICAgICAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsIGRmbXQsIFszMi8vZHNpemVdKQorCisgICAgICAgIGZvciBzZm10LCBzaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoMSk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoc2l0ZW1zLCBzaGFwZT1bMV0sIGZvcm1hdD1zZm10KQorICAgICAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBmb3IgZGZtdCwgXywgXyBpbiBpdGVyX2Zvcm1hdCgxKToKKyAgICAgICAgICAgICAgICBpZiAobm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KHNmbXQpIG9yCisgICAgICAgICAgICAgICAgICAgIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChkZm10KSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1zcmMuY2FzdCwgZGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzMyLy9kc2l6ZV0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2J5dGVfZm9ybWF0KHNmbXQpIGFuZCBub3QgaXNfYnl0ZV9mb3JtYXQoZGZtdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgZGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFszMi8vZHNpemVdKQorCisgICAgICAgICMgaW52YWxpZCBzaGFwZQorICAgICAgICBzaXplX2ggPSBzdHJ1Y3QuY2FsY3NpemUoJ2gnKQorICAgICAgICBzaXplX2QgPSBzdHJ1Y3QuY2FsY3NpemUoJ2QnKQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyKjIqc2l6ZV9kKSksIHNoYXBlPVsyLDIsc2l6ZV9kXSwgZm9ybWF0PSdoJykKKyAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCBzaGFwZT1bMiwyLHNpemVfaF0sIGZvcm1hdD0nZCcpCisKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIwKSksIHNoYXBlPVsxLDIsMyw0LDVdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAjIGluY29ycmVjdCBudW1iZXIgb2YgYXJncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsIDEsIDIsIDMpCisKKyAgICAgICAgIyBpbmNvcnJlY3QgZGVzdCBmb3JtYXQgdHlwZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwge30pCisKKyAgICAgICAgIyBpbmNvcnJlY3QgZGVzdCBmb3JtYXQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiWCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkBYIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQFhZIikKKworICAgICAgICAjIGRlc3QgZm9ybWF0IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICI9QiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIiFMIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiPFAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICI+bCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkJJIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAieEJJIikKKworICAgICAgICAjIHNyYyBmb3JtYXQgbm90IGltcGxlbWVudGVkCisgICAgICAgIGV4ID0gbmRhcnJheShbKDEsMiksICgzLDQpXSwgc2hhcGU9WzJdLCBmb3JtYXQ9IklJIikKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0udG9saXN0KQorCisgICAgICAgICMgaW5jb3JyZWN0IHNoYXBlIHR5cGUKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIwKSksIHNoYXBlPVsxLDIsMyw0LDVdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9e30pCisKKyAgICAgICAgIyBpbmNvcnJlY3Qgc2hhcGUgZWxlbWVudHMKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIwKSksIHNoYXBlPVsyKjMqNCo1XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bMioqNjRdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9Wy0xXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1LDYsNywtMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bMiwzLDQsNSw2LDcsMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1LDYsNywneCddKQorCisgICAgICAgICMgTi1EIC0+IE4tRCBjYXN0CisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KFs5IGZvciBfIGluIHJhbmdlKDMqNSo3KjExKV0pLCBzaGFwZT1bMyw1LDcsMTFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJJIiwgc2hhcGU9WzIsMyw0LDVdKQorCisgICAgICAgICMgY2FzdCB3aXRoIG5kaW0gPiA2NAorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjgpKSwgc2hhcGU9WzEyOF0sIGZvcm1hdD0nSScpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICdJJywgWzFdKjEyOCkKKworICAgICAgICAjIHZpZXctPmxlbiBub3QgYSBtdWx0aXBsZSBvZiBpdGVtc2l6ZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChbOSBmb3IgXyBpbiByYW5nZSgzKjUqNyoxMSldKSwgc2hhcGU9WzMqNSo3KjExXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiSSIsIHNoYXBlPVsyLDMsNCw1XSkKKworICAgICAgICAjIHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgIT0gYnVmZmVyIHNpemUKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QoWzkgZm9yIF8gaW4gcmFuZ2UoMyo1KjcqMTEpXSksIHNoYXBlPVszKjUqNyoxMV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bMiwzLDQsNV0pCisKKyAgICAgICAgIyBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplIG92ZXJmbG93CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyOCkpLCBzaGFwZT1bMTI4XSwgZm9ybWF0PSdJJykKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjgpKSwgc2hhcGU9WzEyOF0sIGZvcm1hdD0nQicpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgaWYgc3lzLm1heHNpemUgPT0gMioqNjMtMToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbTEuY2FzdCwgJ0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzcsIDcsIDczLCAxMjcsIDMzNywgOTI3MzcsIDY0OTY1N10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMjAsIDIqKjIwLCAyKioxMCwgMioqMTAsIDIqKjNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTIuY2FzdCwgJ0knLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzIqKjIwLCAyKioyMCwgMioqMTAsIDIqKjEwLCAyKioxXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbTEuY2FzdCwgJ0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDIxNDc0ODM2NDddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTEuY2FzdCwgJ0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzIqKjEwLCAyKioxMCwgMioqNSwgMioqNSwgMioqMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5jYXN0LCAnSScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMTAsIDIqKjEwLCAyKio1LCAyKiozLCAyKioxXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2FzdChzZWxmKToKKyAgICAgICAgYnl0ZXNwZWMgPSAoCisgICAgICAgICAgKCdCJywgbGFtYmRhIGV4OiBsaXN0KGV4LnRvYnl0ZXMoKSkpLAorICAgICAgICAgICgnYicsIGxhbWJkYSBleDogW3gtMjU2IGlmIHggPiAxMjcgZWxzZSB4IGZvciB4IGluIGxpc3QoZXgudG9ieXRlcygpKV0pLAorICAgICAgICAgICgnYycsIGxhbWJkYSBleDogW2J5dGVzKGNocih4KSwgJ2xhdGluLTEnKSBmb3IgeCBpbiBsaXN0KGV4LnRvYnl0ZXMoKSldKSwKKyAgICAgICAgKQorCisgICAgICAgIGRlZiBpdGVyX3JvdW5kdHJpcChleCwgbSwgaXRlbXMsIGZtdCk6CisgICAgICAgICAgICBzcmNzaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGZvciBieXRlZm10LCB0b19ieXRlbGlzdCBpbiBieXRlc3BlYzoKKworICAgICAgICAgICAgICAgIG0yID0gbS5jYXN0KGJ5dGVmbXQpCisgICAgICAgICAgICAgICAgbHN0ID0gdG9fYnl0ZWxpc3QoZXgpCisgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Ynl0ZWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVszMSpzcmNzaXplXSwgc3RyaWRlcz0oMSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAgICAgICAgIG0zID0gbTIuY2FzdChmbXQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMywgZXgpCisgICAgICAgICAgICAgICAgbHN0ID0gZXgudG9saXN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMywgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXNyY3NpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMzFdLCBzdHJpZGVzPShzcmNzaXplLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICMgY2FzdCBmcm9tIG5kaW0gPSAwIHRvIG5kaW0gPSAxCisgICAgICAgIHNyY3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ0knKQorICAgICAgICBleCA9IG5kYXJyYXkoOSwgc2hhcGU9W10sIGZvcm1hdD0nSScpCisgICAgICAgIGRlc3RpdGVtcywgZGVzdHNoYXBlID0gY2FzdF9pdGVtcyhleCwgJ0InLCAxKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbTIgPSBtLmNhc3QoJ0InKQorICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPWRlc3RzaGFwZSwgc3RyaWRlcz0oMSwpLAorICAgICAgICAgICAgICAgICAgICBsc3Q9ZGVzdGl0ZW1zLCBjYXN0PVRydWUpCisKKyAgICAgICAgIyBjYXN0IGZyb20gbmRpbSA9IDEgdG8gbmRpbSA9IDAKKyAgICAgICAgZGVzdHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ0knKQorICAgICAgICBleCA9IG5kYXJyYXkoWzldKmRlc3RzaXplLCBzaGFwZT1bZGVzdHNpemVdLCBmb3JtYXQ9J0InKQorICAgICAgICBkZXN0aXRlbXMsIGRlc3RzaGFwZSA9IGNhc3RfaXRlbXMoZXgsICdJJywgZGVzdHNpemUsIHNoYXBlPVtdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbTIgPSBtLmNhc3QoJ0knLCBzaGFwZT1bXSkKKyAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9ZGVzdHNpemUsIGZtdD0nSScsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MCwgc2hhcGU9KCksIHN0cmlkZXM9KCksCisgICAgICAgICAgICAgICAgICAgIGxzdD1kZXN0aXRlbXMsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAjIGFycmF5LmFycmF5OiByb3VuZHRyaXAgdG8vZnJvbSBieXRlcworICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCgzMSwgJ2FycmF5Jyk6CisgICAgICAgICAgICBleCA9IGFycmF5LmFycmF5KGZtdCwgaXRlbXMpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGl0ZXJfcm91bmR0cmlwKGV4LCBtLCBpdGVtcywgZm10KQorCisgICAgICAgICMgbmRhcnJheTogcm91bmR0cmlwIHRvL2Zyb20gYnl0ZXMKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoMzEsICdtZW1vcnl2aWV3Jyk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVszMV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBpdGVyX3JvdW5kdHJpcChleCwgbSwgaXRlbXMsIGZtdCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2FzdF8xRF9ORChzZWxmKToKKyAgICAgICAgIyBDYXN0IGJldHdlZW4gQy1jb250aWd1b3VzIGJ1ZmZlcnMuIEF0IGxlYXN0IG9uZSBidWZmZXIgbXVzdAorICAgICAgICAjIGJlIDFELCBhdCBsZWFzdCBvbmUgZm9ybWF0IG11c3QgYmUgJ2MnLCAnYicgb3IgJ0InLgorICAgICAgICBmb3IgX3RzaGFwZSBpbiBnZW5jYXN0c2hhcGVzKCk6CisgICAgICAgICAgICBmb3IgY2hhciBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICAgICAgdGZtdCA9ICgnJywgJ0AnKVtyYW5kcmFuZ2UoMildICsgY2hhcgorICAgICAgICAgICAgICAgIHRzaXplID0gc3RydWN0LmNhbGNzaXplKHRmbXQpCisgICAgICAgICAgICAgICAgbiA9IHByb2QoX3RzaGFwZSkgKiB0c2l6ZQorICAgICAgICAgICAgICAgIG9iaiA9ICdtZW1vcnl2aWV3JyBpZiBpc19ieXRlX2Zvcm1hdCh0Zm10KSBlbHNlICdieXRlZm10JworICAgICAgICAgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KG4sIG9iaik6CisgICAgICAgICAgICAgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IFtuXSBpZiBuID4gMCBlbHNlIFtdCisgICAgICAgICAgICAgICAgICAgIHRzaGFwZSA9IF90c2hhcGUgKyBbc2l6ZV0KKworICAgICAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAgICAgICAgICAgICB0aXRlbXMsIHRzaGFwZSA9IGNhc3RfaXRlbXMoZXgsIHRmbXQsIHRzaXplLCBzaGFwZT10c2hhcGUpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdGl0ZW1zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgdGZtdCwgdHNoYXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGl0ZW1zID09ICduYW4nOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgIyBOYU5zIGluIGxpc3RzIGFyZSBhIHJlY2lwZSBmb3IgdHJvdWJsZS4KKworICAgICAgICAgICAgICAgICAgICAjIDFEIC0+IE5ECisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheSh0aXRlbXMsIHNoYXBlPXRzaGFwZSwgZm9ybWF0PXRmbXQpCisKKyAgICAgICAgICAgICAgICAgICAgbTIgPSBtLmNhc3QodGZtdCwgc2hhcGU9dHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBuZGltID0gbGVuKHRzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlcyA9IG5kLnN0cmlkZXMKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gbmQudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9dHNpemUsIGZtdD10Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXRzaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgICAgICAgICAgICAgIyBORCAtPiAxRAorICAgICAgICAgICAgICAgICAgICBtMyA9IG0yLmNhc3QoZm10KQorICAgICAgICAgICAgICAgICAgICBtNCA9IG0yLmNhc3QoZm10LCBzaGFwZT1zaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlcyA9IGV4LnN0cmlkZXMKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gZXgudG9saXN0KCkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMywgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtNCwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfdG9saXN0KHNlbGYpOgorCisgICAgICAgICMgTW9zdCB0b2xpc3QoKSB0ZXN0cyBhcmUgaW4gc2VsZi52ZXJpZnkoKSBldGMuCisKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdoJywgbGlzdChyYW5nZSgtNiwgNikpKQorICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgYS50b2xpc3QoKSkKKworICAgICAgICBhID0gYVsyOjozXQorICAgICAgICBtID0gbVsyOjozXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgYS50b2xpc3QoKSkKKworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyKjMqNSo3KjExKSksIHNoYXBlPVsxMSwyLDcsMyw1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgZXgudG9saXN0KCkpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFsoMiwgNSksICg3LCAxMSldLCBzaGFwZT1bMl0sIGZvcm1hdD0nbGgnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiJzEyMzQ1J10sIHNoYXBlPVsxXSwgZm9ybWF0PSJzIikKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0udG9saXN0KQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYiJhIixiImIiLGIiYyIsYiJkIixiImUiLGIiZiJdLCBzaGFwZT1bMiwzXSwgZm9ybWF0PSdzJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0udG9saXN0KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19yZXByKHNlbGYpOgorICAgICAgICBtID0gbWVtb3J5dmlldyhieXRlYXJyYXkoOSkpCisgICAgICAgIHIgPSBtLl9fcmVwcl9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgiPG1lbW9yeSIpKQorCisgICAgICAgIG0ucmVsZWFzZSgpCisgICAgICAgIHIgPSBtLl9fcmVwcl9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgiPHJlbGVhc2VkIikpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NlcXVlbmNlKHNlbGYpOgorCisgICAgICAgIGZvciBmbXQgaW4gKCdkJywgJ2YnKToKKyAgICAgICAgICAgIGluZiA9IGZsb2F0KDNlNDAwKQorICAgICAgICAgICAgZXggPSBhcnJheS5hcnJheShmbXQsIFsxLjAsIGluZiwgMy4wXSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigxLjAsIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKDVlNzAwLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigzLjAsIG0pCisKKyAgICAgICAgZXggPSBuZGFycmF5KDkuMCwgW10sIGZvcm1hdD0nZicpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICI5LjAgaW4gbSIsIGxvY2FscygpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19pbmRleChzZWxmKToKKworICAgICAgICAjIG5kaW0gPSAwCisgICAgICAgIGV4ID0gbmRhcnJheSgxMi41LCBzaGFwZT1bXSwgZm9ybWF0PSdkJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDEyLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsuLi5dLCBtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLi4uXSwgZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKworICAgICAgICBleCA9IG5kYXJyYXkoKDEsMiwzKSwgc2hhcGU9W10sIGZvcm1hdD0naWlpJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sICgpKQorCisgICAgICAgICMgcmFuZ2UKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoNykpLCBzaGFwZT1bN10sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAyKio2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAyLjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgMC4wKQorCisgICAgICAgICMgb3V0IG9mIGJvdW5kcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAtOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgOCkKKworICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19hc3NpZ24oc2VsZik6CisKKyAgICAgICAgIyBuZGltID0gMAorICAgICAgICBleCA9IG5kYXJyYXkoMTIuNSwgc2hhcGU9W10sIGZvcm1hdD0nZicsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbVsoKV0gPSAyMi41CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDIyLjUpCisgICAgICAgIG1bLi4uXSA9IDIzLjUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMjMuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAyNC43KQorCisgICAgICAgICMgcmVhZC1vbmx5CisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDcpKSwgc2hhcGU9WzddKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAyLCAxMCkKKworICAgICAgICAjIHJhbmdlCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDcpKSwgc2hhcGU9WzddLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgMioqNjQsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMi4wLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLjAsIDExKQorCisgICAgICAgICMgb3V0IG9mIGJvdW5kcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCAtOCwgMjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sIDgsIDI1KQorCisgICAgICAgICMgcGFja19zaW5nbGUoKSBzdWNjZXNzOgorICAgICAgICBmb3IgZm10IGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgIGlmIGZtdCA9PSAnYycgb3IgZm10ID09ICc/JzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGkgPSByYW5kcmFuZ2UoLTMsIDMpCisgICAgICAgICAgICBtW2ldID0gOAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtW2ldLCA4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtW2ldLCBleFtpXSkKKworICAgICAgICBleCA9IG5kYXJyYXkoW2InMScsIGInMicsIGInMyddLCBzaGFwZT1bM10sIGZvcm1hdD0nYycsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bMl0gPSBiJzknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyXSwgYic5JykKKworICAgICAgICBleCA9IG5kYXJyYXkoW1RydWUsIEZhbHNlLCBUcnVlXSwgc2hhcGU9WzNdLCBmb3JtYXQ9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtWzFdID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIFRydWUpCisKKyAgICAgICAgIyBwYWNrX3NpbmdsZSgpIGV4Y2VwdGlvbnM6CisgICAgICAgIG5kID0gbmRhcnJheShbYid4J10sIHNoYXBlPVsxXSwgZm9ybWF0PSdjJywgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDEwMCkKKworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzEsMiwzLDQsNV0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgZm9yIGZtdCwgX3JhbmdlIGluIGZtdGRpY3RbJ0AnXS5pdGVtcygpOgorICAgICAgICAgICAgaWYgKGZtdCA9PSAnPycpOiAjIFB5T2JqZWN0X0lzVHJ1ZSgpIGFjY2VwdHMgYW55dGhpbmcKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgZm10ID09ICdjJzogIyBzcGVjaWFsIGNhc2UgdGVzdGVkIGFib3ZlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG0yID0gbTEuY2FzdChmbXQpCisgICAgICAgICAgICBsbywgaGkgPSBfcmFuZ2UKKyAgICAgICAgICAgIGlmIGZtdCA9PSAnZCcgb3IgZm10ID09ICdmJzoKKyAgICAgICAgICAgICAgICBsbywgaGkgPSAtMioqMTAyNCwgMioqMTAyNAorICAgICAgICAgICAgaWYgZm10ICE9ICdQJzogIyBQeUxvbmdfQXNWb2lkUHRyKCkgYWNjZXB0cyBuZWdhdGl2ZSBudW1iZXJzCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTIuX19zZXRpdGVtX18sIDAsIGxvLTEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgInh5eiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgaGkpCisKKyAgICAgICAgIyBpbnZhbGlkIGl0ZW0KKyAgICAgICAgbTIgPSBtMS5jYXN0KCdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTIuX19zZXRpdGVtX18sIDAsIGInXHhmZlx4ZmYnKQorCisgICAgICAgICMgZm9ybWF0IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxKSksIHNoYXBlPVsxXSwgZm9ybWF0PSJ4TCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMSkKKworICAgICAgICBleCA9IG5kYXJyYXkoW2InMTIzNDUnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9InMiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDEpCisKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgWzIsIDNdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zbGljZShzZWxmKToKKworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgIyB6ZXJvIHN0ZXAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2dldGl0ZW1fXywgc2xpY2UoMCwyLDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fc2V0aXRlbV9fLCBzbGljZSgwLDIsMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShbMSwyXSkpCisKKyAgICAgICAgIyBpbnZhbGlkIHNsaWNlIGtleQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sICgpKQorCisgICAgICAgICMgbXVsdGlkaW1lbnNpb25hbCBzbGljZXMKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGljZSgwLDIsMSksIHNsaWNlKDAsMiwxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGljZSgwLDIsMSksIHNsaWNlKDAsMiwxKSksIGJ5dGVhcnJheShbMSwyXSkpCisKKyAgICAgICAgIyBpbnZhbGlkIHNsaWNlIHR1cGxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKHNsaWNlKDAsMiwxKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIChzbGljZSgwLDIsMSksIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KFsxLDJdKSkKKworICAgICAgICAjIHJ2YWx1ZSBpcyBub3QgYW4gZXhwb3J0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIFsxXSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzIHNsaWNlIGFzc2lnbm1lbnQKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIHN0cmlkZXM9Wy0xXSwgb2Zmc2V0PTExLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRXxmbGFncykKKyAgICAgICAgICAgIGV4MiA9IG5kYXJyYXkobGlzdChyYW5nZSgyNCkpLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsyXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtMSA9IG1lbW9yeXZpZXcoZXgxKQorICAgICAgICAgICAgbTIgPSBtZW1vcnl2aWV3KGV4MikKKworICAgICAgICAgICAgZXgxWzI6NV0gPSBleDFbMjo1XQorICAgICAgICAgICAgbTFbMjo1XSA9IG0yWzI6NV0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgZXgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMiwgZXgyKQorCisgICAgICAgICAgICBleDFbMTozXVs6Oi0xXSA9IGV4MlswOjJdWzo6MV0KKyAgICAgICAgICAgIG0xWzE6M11bOjotMV0gPSBtMlswOjJdWzo6MV0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgZXgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMiwgZXgyKQorCisgICAgICAgICAgICBleDFbNDoxOi0yXVs6Oi0xXSA9IGV4MVsxOjQ6Ml1bOjoxXQorICAgICAgICAgICAgbTFbNDoxOi0yXVs6Oi0xXSA9IG0xWzE6NDoyXVs6OjFdCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfYXJyYXkoc2VsZik6CisKKyAgICAgICAgZGVmIGNtcHRlc3QodGVzdGNhc2UsIGEsIGIsIG0sIHNpbmdsZWl0ZW0pOgorICAgICAgICAgICAgZm9yIGksIF8gaW4gZW51bWVyYXRlKGEpOgorICAgICAgICAgICAgICAgIGFpID0gYVtpXQorICAgICAgICAgICAgICAgIG1pID0gbVtpXQorICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGFpLCBtaSkKKyAgICAgICAgICAgICAgICBhW2ldID0gc2luZ2xlaXRlbQorICAgICAgICAgICAgICAgIGlmIHNpbmdsZWl0ZW0gIT0gYWk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydE5vdEVxdWFsKGEsIG0pCisgICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydE5vdEVxdWFsKGEsIGIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYSwgbSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYSwgYikKKyAgICAgICAgICAgICAgICBtW2ldID0gc2luZ2xlaXRlbQorICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGEsIG0pCisgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYiwgbSkKKyAgICAgICAgICAgICAgICBhW2ldID0gYWkKKyAgICAgICAgICAgICAgICBtW2ldID0gbWkKKworICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCA1KToKKyAgICAgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBzaW5nbGVpdGVtIGluIGl0ZXJfZm9ybWF0KG4sICdhcnJheScpOgorICAgICAgICAgICAgICAgIGZvciBsc2xpY2UgaW4gZ2Vuc2xpY2VzKG4pOgorICAgICAgICAgICAgICAgICAgICBmb3IgcnNsaWNlIGluIGdlbnNsaWNlcyhuKToKKworICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGFycmF5LmFycmF5KGZtdCwgaXRlbXMpCisgICAgICAgICAgICAgICAgICAgICAgICBiID0gYXJyYXkuYXJyYXkoZm10LCBpdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgYS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGEudG9ieXRlcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obSksIGxlbihhKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgY21wdGVzdChzZWxmLCBhLCBiLCBtLCBzaW5nbGVpdGVtKQorCisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9lcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX3Jlc2l6ZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbCA9IGFbbHNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyID0gYVtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtsc2xpY2VdID0gYVtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9yZXNpemUgPSBsZW4oYWwpICE9IGxlbihhcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtW2xzbGljZV0gPSBtW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhdmVfcmVzaXplOiAjIG1lbW9yeXZpZXcgY2Fubm90IGNoYW5nZSBzaGFwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobV9lcnIsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIG1fZXJyIG9yIGFycmF5X2VycjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1fZXJyLCBhcnJheV9lcnIpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGEudG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYS50b2J5dGVzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wdGVzdChzZWxmLCBhLCBiLCBtLCBzaW5nbGVpdGVtKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX3NwZWNpYWxfY2FzZXMoc2VsZik6CisKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdMJywgWzEsIDIsIDNdKQorICAgICAgICBiID0gYXJyYXkuYXJyYXkoJ0wnLCBbMSwgMiwgN10pCisKKyAgICAgICAgIyBPcmRlcmluZyBjb21wYXJpc29ucyByYWlzZToKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdfX2x0X18nLCAnX19sZV9fJywgJ19fZ3RfXycsICdfX2dlX18nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cih2LCBhdHRyKSh3KSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoYSwgYXR0cikodiksIE5vdEltcGxlbWVudGVkKQorCisgICAgICAgICMgUmVsZWFzZWQgdmlld3MgY29tcGFyZSBlcXVhbCB0byB0aGVtc2VsdmVzOgorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB2LnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCB2KQorCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHcucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCB2KQorCisgICAgICAgICMgT3BlcmFuZCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciBwcm90b2NvbDoKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBbMSwgMiwgM10pCisKKyAgICAgICAgIyBOYU5zCisgICAgICAgIG5kID0gbmRhcnJheShbKDAsIDApXSwgc2hhcGU9WzFdLCBmb3JtYXQ9J2wgeCBkIHgnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbmRbMF0gPSAoLTEsIGZsb2F0KCduYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtZW1vcnl2aWV3KG5kKSwgbmQpCisKKyAgICAgICAgIyBEZXBlbmRzIG9uIGlzc3VlICMxNTYyNTogdGhlIHN0cnVjdCBtb2R1bGUgZG9lcyBub3QgdW5kZXJzdGFuZCAndScuCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgndScsICd4eXonKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgYSkKKworICAgICAgICAjIFNvbWUgY3R5cGVzIGZvcm1hdCBzdHJpbmdzIGFyZSB1bmtub3duIHRvIHRoZSBzdHJ1Y3QgbW9kdWxlLgorICAgICAgICBpZiBjdHlwZXM6CisgICAgICAgICAgICAjIGZvcm1hdDogIlR7Pmw6eDo+bDp5On0iCisgICAgICAgICAgICBjbGFzcyBCRVBvaW50KGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGN0eXBlcy5jX2xvbmcpLCAoInkiLCBjdHlwZXMuY19sb25nKV0KKyAgICAgICAgICAgIHBvaW50ID0gQkVQb2ludCgxMDAsIDIwMCkKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIGIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwb2ludCwgYSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIGEudG9saXN0KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX25kaW1femVybyhzZWxmKToKKworICAgICAgICBuZDEgPSBuZGFycmF5KDE3MjksIHNoYXBlPVtdLCBmb3JtYXQ9J0BMJykKKyAgICAgICAgbmQyID0gbmRhcnJheSgxNzI5LCBzaGFwZT1bXSwgZm9ybWF0PSdMJywgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDEsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2Ll9fbmVfXyh3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3Ll9fbmVfXyh2KSkKKworICAgICAgICB3WygpXSA9IDE3MjgKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5kMiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQxLCB3KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uodi5fX2VxX18odykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uody5fX2VxX18odikpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfUElMKQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIG1bOV0gPSAxMDAKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtLCBuZCkKKworICAgICAgICAjIHN0cnVjdCBtb2R1bGU6IGVxdWFsCisgICAgICAgIG5kMSA9IG5kYXJyYXkoKDE3MjksIDEuMiwgYicxMjM0NScpLCBzaGFwZT1bXSwgZm9ybWF0PSdMZjVzJykKKyAgICAgICAgbmQyID0gbmRhcnJheSgoMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J2hmNXMnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQxLCB3KQorCisgICAgICAgICMgc3RydWN0IG1vZHVsZTogbm90IGVxdWFsCisgICAgICAgIG5kMSA9IG5kYXJyYXkoKDE3MjksIDEuMiwgYicxMjM0NScpLCBzaGFwZT1bXSwgZm9ybWF0PSdMZjVzJykKKyAgICAgICAgbmQyID0gbmRhcnJheSgoLTE3MjksIDEuMiwgYicxMjM0NScpLCBzaGFwZT1bXSwgZm9ybWF0PSdoZjVzJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5kMSwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX25kaW1fb25lKHNlbGYpOgorCisgICAgICAgICMgY29udGlndW91cworICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCA3MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSc8aScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCA3MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nPmgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIC02MjUsIC03MjldLCBzaGFwZT1bM10sIGZvcm1hdD0nIWgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSc8bCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyWzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1s6OjJdLCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgd1s6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbOjotMV0sIHdbOjotMl0pCisKKyAgICAgICAgIyBub24tY29udGlndW91cywgc3Vib2Zmc2V0cworICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzLCBzdWJvZmZzZXRzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIC02MjUsIC03MjldLCBzaGFwZT1bM10sIGZvcm1hdD0naCAgMGMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSc+ICBoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUwpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyWzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1s6OjJdLCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgd1s6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbOjotMV0sIHdbOjotMl0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfemVyb19zaGFwZShzZWxmKToKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMCwgOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTkwMCwgLTk2MV0sIHNoYXBlPVswXSwgZm9ybWF0PSdAaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFs5MDAsIDk2MV0sIHNoYXBlPVswXSwgZm9ybWF0PSc9IGgwYycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy05MDAsIC05NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nQCAgIGknKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX3plcm9fc3RyaWRlcyhzZWxmKToKKworICAgICAgICAjIHplcm8gc3RyaWRlcworICAgICAgICBuZDEgPSBuZGFycmF5KFs5MDAsIDkwMCwgOTAwLCA5MDBdLCBzaGFwZT1bNF0sIGZvcm1hdD0nQEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFs5MDBdLCBzaGFwZT1bNF0sIHN0cmlkZXM9WzBdLCBmb3JtYXQ9J0wnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgemVybyBzdHJpZGVzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWyg5MDAsIDkwMCldKjQsIHNoYXBlPVs0XSwgZm9ybWF0PSdAIExpJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbKDkwMCwgOTAwKV0sIHNoYXBlPVs0XSwgc3RyaWRlcz1bMF0sIGZvcm1hdD0nIUwgIGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX3JhbmRvbV9mb3JtYXRzKHNlbGYpOgorCisgICAgICAgICMgcmFuZG9tIHNpbmdsZSBjaGFyYWN0ZXIgbmF0aXZlIGZvcm1hdHMKKyAgICAgICAgbiA9IDEwCisgICAgICAgIGZvciBjaGFyIGluIGZtdGRpY3RbJ0BtJ106CisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBzaW5nbGVpdGVtID0gcmFuZGl0ZW1zKG4sICdtZW1vcnl2aWV3JywgJ0AnLCBjaGFyKQorICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W25dLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgICAgICAgICAgICAgbmQgPSBuZFs6Oi0zXQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICAgICAgIyByYW5kb20gZm9ybWF0cworICAgICAgICBuID0gMTAKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIHNpbmdsZWl0ZW0gPSByYW5kaXRlbXMobikKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtuXSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgICAgICAgICAgICAgIG5kID0gbmRbOjotM10KKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX2Moc2VsZik6CisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDAsIDMwKSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCB2YWx1ZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDAsIDEsIDIpXSozMCwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9Jz1mIHEgeHhMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbKC0xLjIsIDEsIDIpXSozMCwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9JzwgZiAyUScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J0wnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0wnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDAsIDEsIDIpXSoyMSwgc2hhcGU9WzMsIDddLCBmb3JtYXQ9JyEgYiBCIHhMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbKDAsIDEsIDIpXSoyMSwgc2hhcGU9WzcsIDNdLCBmb3JtYXQ9Jz0gUXggbCB4eEwnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgZm9ybWF0LCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nbCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1fZm9ydHJhbihzZWxmKToKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bNSwgMiwgM10sIGZvcm1hdD0nQGgnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgwLCAzMCkpLCBzaGFwZT1bNSwgMiwgM10sIGZvcm1hdD0nQGgnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCB2YWx1ZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDIqKjY0LTEsIC0xKV0qNiwgc2hhcGU9WzIsIDNdLCBmb3JtYXQ9Jz1RcScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShbKC0xLCAyKio2NC0xKV0qNiwgc2hhcGU9WzIsIDNdLCBmb3JtYXQ9Jz1xUScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IHNoYXBlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdsJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PScwbGwnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgZm9ybWF0LCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMiwgM10sIGZvcm1hdD0nQGgnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMiwgM10sIGZvcm1hdD0nQGInLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1fbWl4ZWQoc2VsZik6CisKKyAgICAgICAgIyBtaXhlZCBDL0ZvcnRyYW4gY29udGlndW91cworICAgICAgICBsc3QxID0gbGlzdChyYW5nZSgtMTUsIDE1KSkKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisgICAgICAgIG5kMSA9IG5kYXJyYXkobHN0MSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0BsJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nbCcsIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgbWl4ZWQgQy9Gb3J0cmFuIGNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbHN0MSA9IFsoLTMuMywgLTIyLCBiJ3gnKV0qMzAKKyAgICAgICAgbHN0MVs1XSA9ICgtMi4yLCAtMjIsIGIneCcpCisgICAgICAgIGxzdDIgPSB0cmFuc3Bvc2UobHN0MSwgWzMsIDIsIDVdKQorICAgICAgICBuZDEgPSBuZGFycmF5KGxzdDEsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdkIGIgYycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobHN0Miwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2QgaCBjJywgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBkaWZmZXJlbnQgdmFsdWVzLCBub24tY29udGlndW91cworICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0BJJykKKyAgICAgICAgbmQxID0gZXgxWzM6MTotMSwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDQwKSksIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSdJJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzoxLCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgc2FtZSB2YWx1ZXMsIG5vbi1jb250aWd1b3VzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWygyKiozMS0xLCAtMioqMzEpXSoyMiwgc2hhcGU9WzExLCAyXSwgZm9ybWF0PSc9aWknKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KFsoMioqMzEtMSwgLTIqKjMxKV0qMjIsIHNoYXBlPVsxMSwgMl0sIGZvcm1hdD0nPmlpJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzoxLCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IHNoYXBlCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J0InKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdiJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBkaWZmZXJlbnQgZm9ybWF0LCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWygyLCBiJzEyMycpXSozMCwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J2IzcycpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoMiwgYicxMjMnKV0qMzAsIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdpM3MnKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV96ZXJvX3NoYXBlKHNlbGYpOgorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVswLCAzLCAyXSwgZm9ybWF0PSdpJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAwLCAyXSwgZm9ybWF0PSdAaScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzAsIDMsIDJdLCBmb3JtYXQ9J2knKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDAsIDJdLCBmb3JtYXQ9J0BpJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV96ZXJvX3N0cmlkZXMoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwXSo4MCwgc2hhcGU9WzQsIDUsIDRdLCBmb3JtYXQ9J0BMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbOTAwXSwgc2hhcGU9WzQsIDUsIDRdLCBzdHJpZGVzPVswLCAwLCAwXSwgZm9ybWF0PSdMJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRvbGlzdCgpLCB3LnRvbGlzdCgpKQorCisgICAgICAgICMgemVybyBzdHJpZGVzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWygxLCAyKV0qMTAsIHNoYXBlPVsyLCA1XSwgZm9ybWF0PSc9bFEnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoMSwgMildLCBzaGFwZT1bMiwgNV0sIHN0cmlkZXM9WzAsIDBdLCBmb3JtYXQ9JzxsUScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1fc3Vib2Zmc2V0cyhzZWxmKToKKworICAgICAgICAjIHN1Ym9mZnNldHMKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDQwKSksIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSdASScpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisgICAgICAgIGV4MiA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nSScsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gZXgyWzE6MzoxLCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgc3Vib2Zmc2V0cywgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMioqNjQtMSwgLTEpXSo0MCwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9Jz1RcScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MVsyXVs3XSA9ICgxLCAtMikKKyAgICAgICAgbmQxID0gZXgxWzM6MTotMSwgOjotMl0KKworICAgICAgICBleDIgPSBuZGFycmF5KFsoMioqNjQtMSwgLTEpXSo0MCwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9Jz5RcScsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMfE5EX1dSSVRBQkxFKQorICAgICAgICBleDJbMl1bN10gPSAoMSwgLTIpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6MSwgOjotMl0KKworICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgc3Vib2Zmc2V0cywgZGlmZmVyZW50IHNoYXBlCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nYicsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdiJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIqKjgtMSwgLTEpXSo0MCwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J0JiJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIG5kMSA9IGV4MVsxOjI6LCA6Oi0yXQorCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWygyKio4LTEsIC0xKV0qNDAsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdCYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjI6LCA6Oi0yXQorCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgZm9ybWF0CisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMywgMl0sIGZvcm1hdD0naScsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIGV4MiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMywgMl0sIGZvcm1hdD0nQEknLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgc3Vib2Zmc2V0cywgZGlmZmVyZW50IGZvcm1hdCwgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoYidoZWxsbycsIGInJywgMSldKjI3LCBzaGFwZT1bMywgMywgM10sIGZvcm1hdD0nNXMwc1AnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgZXgxWzFdWzJdWzJdID0gKGInc3VzaGknLCBiJycsIDEpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWyhiJ2hlbGxvJywgYicnLCAxKV0qMjcsIHNoYXBlPVszLCAzLCAzXSwgZm9ybWF0PSc1czBzUCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMfE5EX1dSSVRBQkxFKQorICAgICAgICBleDFbMV1bMl1bMl0gPSAoYidzdXNoaScsIGInJywgMSkKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIGluaXRpYWxpemUgbWl4ZWQgQy9Gb3J0cmFuICsgc3Vib2Zmc2V0cworICAgICAgICBsc3QxID0gbGlzdChyYW5nZSgtMTUsIDE1KSkKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisgICAgICAgIG5kMSA9IG5kYXJyYXkobHN0MSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0BsJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywgZmxhZ3M9TkRfRk9SVFJBTnxORF9QSUwpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgaW5pdGlhbGl6ZSBtaXhlZCBDL0ZvcnRyYW4gKyBzdWJvZmZzZXRzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGxzdDEgPSBbKGInc2FzaGltaScsIGInc2xpY2VkJywgMjAuMDUpXSozMAorICAgICAgICBsc3QxWzExXSA9IChiJ3JhbWVuJywgYidzcGljeScsIDkuNDUpCisgICAgICAgIGxzdDIgPSB0cmFuc3Bvc2UobHN0MSwgWzMsIDIsIDVdKQorCisgICAgICAgIG5kMSA9IG5kYXJyYXkobHN0MSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9JzwgMTBwIDlwIGQnLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobHN0Miwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9Jz4gMTBwIDlwIGQnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU58TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9ub3RfZXF1YWwoc2VsZik6CisKKyAgICAgICAgIyBpdGVtcyBub3QgZXF1YWwKKyAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiBbJz0nLCAnPCcsICc+JywgJyEnXToKKyAgICAgICAgICAgIHggPSBuZGFycmF5KFsyKio2M10qMTIwLCBzaGFwZT1bMyw1LDIsMiwyXSwgZm9ybWF0PWJ5dGVvcmRlcisnUScpCisgICAgICAgICAgICB5ID0gbmRhcnJheShbMioqNjNdKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sIGZvcm1hdD1ieXRlb3JkZXIrJ1EnLAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfRk9SVFJBTikKKyAgICAgICAgICAgIHlbMl1bM11bMV1bMV1bMV0gPSAxCisgICAgICAgICAgICBhID0gbWVtb3J5dmlldyh4KQorICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcoeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYiwgeCkKKworICAgICAgICAgICAgeCA9IG5kYXJyYXkoWygyKio2MywgMioqMzEsIDIqKjE1KV0qMTIwLCBzaGFwZT1bMyw1LDIsMiwyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1ieXRlb3JkZXIrJ1FMSCcpCisgICAgICAgICAgICB5ID0gbmRhcnJheShbKDIqKjYzLCAyKiozMSwgMioqMTUpXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWJ5dGVvcmRlcisnUUxIJywgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfRk9SVFJBTikKKyAgICAgICAgICAgIHlbMl1bM11bMV1bMV1bMV0gPSAoMSwgMSwgMSkKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgICAgICBiID0gbWVtb3J5dmlldyh5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiLCB4KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jaGVja19yZWxlYXNlZChzZWxmKToKKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2QnLCBbMS4xLCAyLjIsIDMuM10pCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbS5yZWxlYXNlKCkKKworICAgICAgICAjIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWVtb3J5dmlldywgbSkKKyAgICAgICAgIyBtZW1vcnl2aWV3LmNhc3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICdjJykKKyAgICAgICAgIyBnZXRidWZmZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZGFycmF5LCBtKQorICAgICAgICAjIG1lbW9yeXZpZXcudG9saXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS50b2xpc3QpCisgICAgICAgICMgbWVtb3J5dmlldy50b2J5dGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS50b2J5dGVzKQorICAgICAgICAjIHNlcXVlbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV2YWwsICIxLjAgaW4gbSIsIGxvY2FscygpKQorICAgICAgICAjIHN1YnNjcmlwdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICAjIGFzc2lnbm1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMSkKKworICAgICAgICBmb3IgYXR0ciBpbiAoJ29iaicsICduYnl0ZXMnLCAncmVhZG9ubHknLCAnaXRlbXNpemUnLCAnZm9ybWF0JywgJ25kaW0nLAorICAgICAgICAgICAgICAgICAgICAgJ3NoYXBlJywgJ3N0cmlkZXMnLCAnc3Vib2Zmc2V0cycsICdjX2NvbnRpZ3VvdXMnLAorICAgICAgICAgICAgICAgICAgICAgJ2ZfY29udGlndW91cycsICdjb250aWd1b3VzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fZ2V0YXR0cmlidXRlX18sIGF0dHIpCisKKyAgICAgICAgIyByaWNoY29tcGFyZQorICAgICAgICBiID0gYXJyYXkuYXJyYXkoJ2QnLCBbMS4xLCAyLjIsIDMuM10pCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcoYikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBtMikKKyAgICAgICAgbTEucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobTEsIG0yKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG0xLCBhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBtMSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfdG9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBNYW55IGltcGxpY2l0IHRlc3RzIGFyZSBhbHJlYWR5IGluIHNlbGYudmVyaWZ5KCkuCisKKyAgICAgICAgdCA9ICgtNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOSkKKworICAgICAgICBuZCA9IG5kYXJyYXkodCwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoW3RdLCBzaGFwZT1bMV0sIGZvcm1hdD0nPmhRaUxsJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoW3QgZm9yIF8gaW4gcmFuZ2UoMTIpXSwgc2hhcGU9WzIsMiwzXSwgZm9ybWF0PSc9aFFpTGwnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbdCBmb3IgXyBpbiByYW5nZSgxMjApXSwgc2hhcGU9WzUsMiwyLDMsMl0sCisgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JzxoUWlMbCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgIyBVbmtub3duIGZvcm1hdHMgYXJlIGhhbmRsZWQ6IHRvYnl0ZXMoKSBwdXJlbHkgZGVwZW5kcyBvbiBpdGVtc2l6ZS4KKyAgICAgICAgaWYgY3R5cGVzOgorICAgICAgICAgICAgIyBmb3JtYXQ6ICJUez5sOng6Pmw6eTp9IgorICAgICAgICAgICAgY2xhc3MgQkVQb2ludChjdHlwZXMuQmlnRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgICAgICAgICBfZmllbGRzXyA9IFsoIngiLCBjdHlwZXMuY19sb25nKSwgKCJ5IiwgY3R5cGVzLmNfbG9uZyldCisgICAgICAgICAgICBwb2ludCA9IEJFUG9pbnQoMTAwLCAyMDApCisgICAgICAgICAgICBhID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS50b2J5dGVzKCksIGJ5dGVzKHBvaW50KSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZ2V0X2NvbnRpZ3VvdXMoc2VsZik6CisgICAgICAgICMgTWFueSBpbXBsaWNpdCB0ZXN0cyBhcmUgYWxyZWFkeSBpbiBzZWxmLnZlcmlmeSgpLgorCisgICAgICAgICMgbm8gYnVmZmVyIGludGVyZmFjZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCB7fSwgUHlCVUZfUkVBRCwgJ0YnKQorCisgICAgICAgICMgd3JpdGFibGUgcmVxdWVzdCB0byByZWFkLW9ubHkgb2JqZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRfY29udGlndW91cywgYid4JywgUHlCVUZfV1JJVEUsICdDJykKKworICAgICAgICAjIHdyaXRhYmxlIHJlcXVlc3QgdG8gbm9uLWNvbnRpZ3VvdXMgb2JqZWN0CisgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVsyXSwgc3RyaWRlcz1bMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1dSSVRFLCAnQScpCisKKyAgICAgICAgIyBzY2FsYXIsIHJlYWQtb25seSByZXF1ZXN0IGZyb20gcmVhZC1vbmx5IGV4cG9ydGVyCisgICAgICAgIG5kID0gbmRhcnJheSg5LCBzaGFwZT0oKSwgZm9ybWF0PSJMIikKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgOSkKKworICAgICAgICAjIHNjYWxhciwgcmVhZC1vbmx5IHJlcXVlc3QgZnJvbSB3cml0YWJsZSBleHBvcnRlcgorICAgICAgICBuZCA9IG5kYXJyYXkoOSwgc2hhcGU9KCksIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCA5KQorCisgICAgICAgICMgc2NhbGFyLCB3cml0YWJsZSByZXF1ZXN0CisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBuZFsoKV0gPSA5CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCA5KQorCisgICAgICAgICAgICBtWygpXSA9IDEwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAxMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbKCldLCAxMCkKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVswXSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIFtdKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDgpKSwgc2hhcGU9WzIsIDAsIDddLCBmb3JtYXQ9IkwiLAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBbW10sIFtdXSkKKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbAorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD0iaCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9XUklURSwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bM10sIGZvcm1hdD0iYiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9XUklURSwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzJdLCBzdHJpZGVzPVsyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDEsIDIwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFsxXSwgMykKKworICAgICAgICBuZCA9IG5kWzo6LTFdCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDEsIDIwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFsxXSwgMSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsLCBjb250aWd1b3VzIGlucHV0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9XUklURSwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1dSSVRFLCAnRicpCisgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfRk9SVFJBTikKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsICdDJykKKyAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cyBpbnB1dAorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIpCisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICAjIGZsYWdzCisgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDMsNCw1XSwgc2hhcGU9WzNdLCBzdHJpZGVzPVsyXSkKKyAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCAnQycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNfY29udGlndW91cykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2VyaWFsaXppbmcoc2VsZik6CisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMKKyAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnaScpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnaScsIFsxLDIsMyw0LDVdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBidWYgPSBpby5CeXRlc0lPKG0pCisgICAgICAgIGIgPSBieXRlYXJyYXkoNSpzaXplKQorICAgICAgICBidWYucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYikKKworICAgICAgICAjIEMtY29udGlndW91cywgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnTCcpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDMsMl0sIGZvcm1hdD0iTCIpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBidWYgPSBpby5CeXRlc0lPKG0pCisgICAgICAgIGIgPSBieXRlYXJyYXkoMiozKjIqc2l6ZSkKKyAgICAgICAgYnVmLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGIpCisKKyAgICAgICAgIyBGb3J0cmFuIGNvbnRpZ3VvdXMsIG11bHRpLWRpbWVuc2lvbmFsCisgICAgICAgICNzaXplID0gc3RydWN0LmNhbGNzaXplKCdMJykKKyAgICAgICAgI25kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDMsMl0sIGZvcm1hdD0iTCIsCisgICAgICAgICMgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgI20gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAjYnVmID0gaW8uQnl0ZXNJTyhtKQorICAgICAgICAjYiA9IGJ5dGVhcnJheSgyKjMqMipzaXplKQorICAgICAgICAjYnVmLnJlYWRpbnRvKGIpCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBiKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19oYXNoKHNlbGYpOgorCisgICAgICAgICMgYnl0ZXMgZXhwb3J0ZXIKKyAgICAgICAgYiA9IGJ5dGVzKGxpc3QocmFuZ2UoMTIpKSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGIpLCBoYXNoKG0pKQorCisgICAgICAgICMgQy1jb250aWd1b3VzCisgICAgICAgIG1jID0gbS5jYXN0KCdjJywgc2hhcGU9WzMsNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtYyksIGhhc2goYikpCisKKyAgICAgICAgIyBub24tY29udGlndW91cworICAgICAgICBteCA9IG1bOjotMl0KKyAgICAgICAgYiA9IGJ5dGVzKGxpc3QocmFuZ2UoMTIpKVs6Oi0yXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG14KSwgaGFzaChiKSkKKworICAgICAgICAjIEZvcnRyYW4gY29udGlndW91cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywyLDVdLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKG5kKSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsIHNsaWNlCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLDIsNV0pCisgICAgICAgIHggPSBuZFs6OjIsIDo6LCA6Oi0xXQorICAgICAgICBtID0gbWVtb3J5dmlldyh4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goeCkpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCBzbGljZSB3aXRoIHN1Ym9mZnNldHMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsNSwzXSwgZmxhZ3M9TkRfUElMKQorICAgICAgICB4ID0gbmRbOjoyLCA6OiwgOjotMV0KKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKHgpKQorCisgICAgICAgICMgbm9uLWJ5dGUgZm9ybWF0cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J0wnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKG5kLnRvYnl0ZXMoKSkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTYsIDYpKSwgc2hhcGU9WzIsMiwzXSwgZm9ybWF0PSdoJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChuZC50b2J5dGVzKCkpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19yZWxlYXNlKHNlbGYpOgorCisgICAgICAgICMgQ3JlYXRlIHJlLWV4cG9ydGVyIGZyb20gZ2V0YnVmZmVyKG1lbW9yeXZpZXcpLCB0aGVuIHJlbGVhc2UgdGhlIHZpZXcuCisgICAgICAgIGEgPSBieXRlYXJyYXkoWzEsMiwzXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbmQgPSBuZGFycmF5KG0pICMgcmUtZXhwb3J0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0ucmVsZWFzZSkKKyAgICAgICAgZGVsIG5kCisgICAgICAgIG0ucmVsZWFzZSgpCisKKyAgICAgICAgYSA9IGJ5dGVhcnJheShbMSwyLDNdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBuZDEgPSBuZGFycmF5KG0sIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgbmQyID0gbmRhcnJheShuZDEsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhuZDIub2JqLCBtKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbS5yZWxlYXNlKQorICAgICAgICBkZWwgbmQxLCBuZDIKKyAgICAgICAgbS5yZWxlYXNlKCkKKworICAgICAgICAjIGNoYWluZWQgdmlld3MKKyAgICAgICAgYSA9IGJ5dGVhcnJheShbMSwyLDNdKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG0xKQorICAgICAgICBuZCA9IG5kYXJyYXkobTIpICMgcmUtZXhwb3J0ZXIKKyAgICAgICAgbTEucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtMi5yZWxlYXNlKQorICAgICAgICBkZWwgbmQKKyAgICAgICAgbTIucmVsZWFzZSgpCisKKyAgICAgICAgYSA9IGJ5dGVhcnJheShbMSwyLDNdKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG0xKQorICAgICAgICBuZDEgPSBuZGFycmF5KG0yLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobmQxLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobmQyLm9iaiwgbTIpCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbTIucmVsZWFzZSkKKyAgICAgICAgZGVsIG5kMSwgbmQyCisgICAgICAgIG0yLnJlbGVhc2UoKQorCisgICAgICAgICMgQWxsb3cgY2hhbmdpbmcgbGF5b3V0IHdoaWxlIGJ1ZmZlcnMgYXJlIGV4cG9ydGVkLgorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICBuZC5wdXNoKFs0LDUsNiw3LDhdLCBzaGFwZT1bNV0pICMgbXV0YXRlIG5kCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICB4ID0gbWVtb3J5dmlldyhtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBtMS50b2xpc3QoKSkKKworICAgICAgICB5ID0gbWVtb3J5dmlldyhtMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LnRvbGlzdCgpLCBtMi50b2xpc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKyAgICAgICAgbTIucmVsZWFzZSgpCisgICAgICAgIHkucmVsZWFzZSgpCisKKyAgICAgICAgbmQucG9wKCkgIyBwb3AgdGhlIGN1cnJlbnQgdmlldworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIGRlbCBuZAorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgeC5yZWxlYXNlKCkKKworICAgICAgICAjIElmIG11bHRpcGxlIG1lbW9yeXZpZXdzIHNoYXJlIHRoZSBzYW1lIG1hbmFnZWQgYnVmZmVyLCBpbXBsaWNpdAorICAgICAgICAjIHJlbGVhc2UoKSBpbiB0aGUgY29udGV4dCBtYW5hZ2VyJ3MgX19leGl0X18oKSBtZXRob2Qgc2hvdWxkIHN0aWxsCisgICAgICAgICMgd29yay4KKyAgICAgICAgZGVmIGNhdGNoMjIoYik6CisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoYikgYXMgbTI6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHggPSBieXRlYXJyYXkoYicxMjMnKQorICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbTE6CisgICAgICAgICAgICBjYXRjaDIyKG0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMVswXSwgb3JkKGInMScpKQorCisgICAgICAgIHggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMiwzXSwgZm9ybWF0PSdsJykKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHgpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyh6KSBhcyBtOgorICAgICAgICAgICAgY2F0Y2gyMihtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzA6MV0udG9saXN0KCksIFtbWzAsIDEsIDJdLCBbMywgNCwgNV1dXSkKKworICAgICAgICAjIFRlc3QgZ2FyYmFnZSBjb2xsZWN0aW9uLgorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1JFRElSRUNUKToKKyAgICAgICAgICAgIHggPSBieXRlYXJyYXkoYicxMjMnKQorICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHgpIGFzIG0xOgorICAgICAgICAgICAgICAgIGRlbCB4CisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkobTEsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeSkgYXMgbTI6CisgICAgICAgICAgICAgICAgICAgIGRlbCB5CisgICAgICAgICAgICAgICAgICAgIHogPSBuZGFycmF5KG0yLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh6KSBhcyBtMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCB6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0zKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTEpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xWzBdLCBvcmQoYicxJykpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yWzFdLCBvcmQoYicyJykpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zWzJdLCBvcmQoYiczJykpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgbTMKKyAgICAgICAgICAgICAgICAgICAgZGVsIG0yCisgICAgICAgICAgICAgICAgZGVsIG0xCisKKyAgICAgICAgICAgIHggPSBieXRlYXJyYXkoYicxMjMnKQorICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHgpIGFzIG0xOgorICAgICAgICAgICAgICAgIGRlbCB4CisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkobTEsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeSkgYXMgbTI6CisgICAgICAgICAgICAgICAgICAgIGRlbCB5CisgICAgICAgICAgICAgICAgICAgIHogPSBuZGFycmF5KG0yLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh6KSBhcyBtMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCB6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0xKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xWzBdLCBvcmQoYicxJykpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yWzFdLCBvcmQoYicyJykpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zWzJdLCBvcmQoYiczJykpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgbTEsIG0yLCBtMworCisgICAgICAgICMgbWVtb3J5dmlldy5yZWxlYXNlKCkgZmFpbHMgaWYgdGhlIHZpZXcgaGFzIGV4cG9ydGVkIGJ1ZmZlcnMuCisgICAgICAgIHggPSBieXRlYXJyYXkoYicxMjMnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yKToKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtOgorICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShtKQorICAgICAgICAgICAgICAgIG1bMF0gPT0gb3JkKGInMScpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3JlZGlyZWN0KHNlbGYpOgorCisgICAgICAgIG5kID0gbmRhcnJheShbMS4wICogeCBmb3IgeCBpbiByYW5nZSgxMildLCBzaGFwZT1bMTJdLCBmb3JtYXQ9J2QnKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2QnLCBbMS4wICogeCBmb3IgeCBpbiByYW5nZSgxMildKQorCisgICAgICAgIGZvciB4IGluIChuZCwgYSk6CisgICAgICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh6Lm9iaiwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgeikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHhbMTozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxOjNdLCB5WzE6M10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgelsxOjNdKQorICAgICAgICAgICAgZGVsIHksIHoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxOjNdLCB4WzE6M10pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Zyb21fc3RhdGljX2V4cG9ydGVyKHNlbGYpOgorCisgICAgICAgIGZtdCA9ICdCJworICAgICAgICBsc3QgPSBbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMV0KKworICAgICAgICAjIGV4Y2VwdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdGF0aWNhcnJheSwgMSwgMiwgMykKKworICAgICAgICAjIHZpZXcub2JqPT14CisgICAgICAgIHggPSBzdGF0aWNhcnJheSgpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYudmVyaWZ5KHksIG9iaj14LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlbaV0sIGkpCisgICAgICAgIGRlbCB4CisgICAgICAgIGRlbCB5CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgZGVsIHkKKyAgICAgICAgZGVsIHgKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHopCisgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj16LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBkZWwgeCwgeSwgeiwgbQorCisgICAgICAgIHggPSBzdGF0aWNhcnJheSgpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB4KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgICAgICAjIHZpZXcub2JqPT1OVUxMCisgICAgICAgIHggPSBzdGF0aWNhcnJheShsZWdhY3lfbW9kZT1UcnVlKQorICAgICAgICB5ID0gbWVtb3J5dmlldyh4KQorICAgICAgICBzZWxmLnZlcmlmeSh5LCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5W2ldLCBpKQorICAgICAgICBkZWwgeAorICAgICAgICBkZWwgeQorCisgICAgICAgIHggPSBzdGF0aWNhcnJheShsZWdhY3lfbW9kZT1UcnVlKQorICAgICAgICB5ID0gbWVtb3J5dmlldyh4KQorICAgICAgICBkZWwgeQorICAgICAgICBkZWwgeAorCisgICAgICAgIHggPSBzdGF0aWNhcnJheShsZWdhY3lfbW9kZT1UcnVlKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHopCisgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj16LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBkZWwgeCwgeSwgeiwgbQorCisgICAgICAgIHggPSBzdGF0aWNhcnJheShsZWdhY3lfbW9kZT1UcnVlKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgIyBDbGVhcmx5IHNldHRpbmcgdmlldy5vYmo9PU5VTEwgaXMgaW5mZXJpb3IsIHNpbmNlIGl0CisgICAgICAgICMgbWVzc2VzIHVwIHRoZSByZWRpcmVjdGlvbiBjaGFpbjoKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh6Lm9iaiwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeSkKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXksCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2dldGJ1ZmZlcl91bmRlZmluZWQoc2VsZik6CisKKyAgICAgICAgIyBnZXRidWZmZXJwcm9jIGRvZXMgbm90IGFkaGVyZSB0byB0aGUgbmV3IGRvY3VtZW50YXRpb24KKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIFszXSwgZmxhZ3M9TkRfR0VUQlVGX0ZBSUx8TkRfR0VUQlVGX1VOREVGSU5FRCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorCisgICAgZGVmIHRlc3RfaXNzdWVfNzM4NShzZWxmKToKKyAgICAgICAgeCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmbGFncz1ORF9HRVRCVUZfRkFJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG1lbW9yeXZpZXcsIHgpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RCdWZmZXJQcm90b2NvbCkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKaW5kZXggNTVmYjYzYS4uYzMyOTkyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQpAQCAtMSwxOSArMSwyMSBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gYnVpbHQtaW4gZnVuY3Rpb25zCiAKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBhc3QKK2ltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgaW8KK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBvcwotaW1wb3J0IGFzdAotaW1wb3J0IHR5cGVzCi1pbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZjbXAsIFRFU1RGTiwgdW5saW5rLCAgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSBvcGVyYXRvciBpbXBvcnQgbmVnCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmssICBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCiB0cnk6CiAgICAgaW1wb3J0IHB0eSwgc2lnbmFsCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xMTAsNyArMTEyLDMwIEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKIAorZGVmIGZpbHRlcl9jaGFyKGFyZyk6CisgICAgcmV0dXJuIG9yZChhcmcpID4gb3JkKCJkIikKKworZGVmIG1hcF9jaGFyKGFyZyk6CisgICAgcmV0dXJuIGNocihvcmQoYXJnKSsxKQorCiBjbGFzcyBCdWlsdGluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBIZWxwZXIgdG8gY2hlY2sgcGlja2xhYmlsaXR5CisgICAgZGVmIGNoZWNrX2l0ZXJfcGlja2xlKHNlbGYsIGl0LCBzZXEpOgorICAgICAgICBpdG9yZyA9IGl0CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgI3Rlc3QgdGhlIGl0ZXJhdG9yIGFmdGVyIGRyb3BwaW5nIG9uZSBmcm9tIGl0CisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcVsxOl0pCiAKICAgICBkZWYgdGVzdF9pbXBvcnQoc2VsZik6CiAgICAgICAgIF9faW1wb3J0X18oJ3N5cycpCkBAIC0yNTUsOCArMjgwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoMHhmZiksICdceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2hyLCAxPDwyNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoc3lzLm1heHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cigoJ1xcVSUwOHgnICUgKHN5cy5tYXh1bmljb2RlKSkuZW5jb2RlKCJhc2NpaSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pY29kZS1lc2NhcGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoJ1xcVTAwMTBmZmZmJy5lbmNvZGUoImFzY2lpIiksICd1bmljb2RlLWVzY2FwZScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNocikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoMHgwMDAwRkZGRiksICJcVTAwMDBGRkZGIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoMHgwMDAxMDAwMCksICJcVTAwMDEwMDAwIikKQEAgLTM3OCw3ICs0MDIsMTUgQEAKICAgICAgICAgZiA9IEZvbygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaXIoZikgPT0gWyJnYSIsICJrYW4iLCAicm9vIl0pCiAKLSAgICAgICAgIyBkaXIob2JqX19kaXJfX25vdF9saXN0KQorICAgICAgICAjIGRpcihvYmpfX2Rpcl9fdHVwbGUpCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgiYiIsICJjIiwgImEiKQorICAgICAgICByZXMgPSBkaXIoRm9vKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXMsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXMgPT0gWyJhIiwgImIiLCAiYyJdKQorCisgICAgICAgICMgZGlyKG9ial9fZGlyX19ub3Rfc2VxdWVuY2UpCiAgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fZGlyX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDcKQEAgLTM5MSw2ICs0MjMsOCBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXIoc3lzLmV4Y19pbmZvKClbMl0pKSwgNCkKIAorICAgICAgICAjIHRlc3QgdGhhdCBvYmplY3QgaGFzIGEgX19kaXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKFtdLl9fZGlyX18oKSksIGRpcihbXSkpCiAKICAgICBkZWYgdGVzdF9kaXZtb2Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGl2bW9kKDEyLCA3KSwgKDEsIDUpKQpAQCAtNDAwLDEwICs0MzQsMTMgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpdm1vZCgtc3lzLm1heHNpemUtMSwgLTEpLCAoc3lzLm1heHNpemUrMSwgMCkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgzLjI1LCAxLjApLCAoMy4wLCAwLjI1KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoLTMuMjUsIDEuMCksICgtNC4wLCAwLjc1KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoMy4yNSwgLTEuMCksICgtNC4wLCAtMC43NSkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZjbXAoZGl2bW9kKC0zLjI1LCAtMS4wKSwgKDMuMCwgLTAuMjUpKSkKKyAgICAgICAgZm9yIG51bSwgZGVub20sIGV4cF9yZXN1bHQgaW4gWyAoMy4yNSwgMS4wLCAoMy4wLCAwLjI1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0zLjI1LCAxLjAsICgtNC4wLCAwLjc1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMuMjUsIC0xLjAsICgtNC4wLCAtMC43NSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMy4yNSwgLTEuMCwgKDMuMCwgLTAuMjUpKV06CisgICAgICAgICAgICByZXN1bHQgPSBkaXZtb2QobnVtLCBkZW5vbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwocmVzdWx0WzBdLCBleHBfcmVzdWx0WzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXN1bHRbMV0sIGV4cF9yZXN1bHRbMV0pCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkaXZtb2QpCiAKQEAgLTUxOCw2ICs1NTUsMzkgQEAKICAgICAgICAgICAgIGRlbCBsWydfX2J1aWx0aW5zX18nXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChnLCBsKSwgKHsnYSc6IDF9LCB7J2InOiAyfSkpCiAKKyAgICBkZWYgdGVzdF9leGVjX2dsb2JhbHMoc2VsZik6CisgICAgICAgIGNvZGUgPSBjb21waWxlKCJwcmludCgnSGVsbG8gV29ybGQhJykiLCAiIiwgImV4ZWMiKQorICAgICAgICAjIG5vIGJ1aWx0aW4gZnVuY3Rpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOYW1lRXJyb3IsICJuYW1lICdwcmludCcgaXMgbm90IGRlZmluZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzoge319KQorICAgICAgICAjIF9fYnVpbHRpbnNfXyBtdXN0IGJlIGEgbWFwcGluZyB0eXBlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiAxMjN9KQorCisgICAgICAgICMgbm8gX19idWlsZF9jbGFzc19fIGZ1bmN0aW9uCisgICAgICAgIGNvZGUgPSBjb21waWxlKCJjbGFzcyBBOiBwYXNzIiwgIiIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOYW1lRXJyb3IsICJfX2J1aWxkX2NsYXNzX18gbm90IGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IHt9fSkKKworICAgICAgICBjbGFzcyBmcm96ZW5kaWN0X2Vycm9yKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgZnJvemVuZGljdChkaWN0KToKKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAgICAgICAgICByYWlzZSBmcm96ZW5kaWN0X2Vycm9yKCJmcm96ZW5kaWN0IGlzIHJlYWRvbmx5IikKKworICAgICAgICAjIHJlYWQtb25seSBidWlsdGlucworICAgICAgICBmcm96ZW5fYnVpbHRpbnMgPSBmcm96ZW5kaWN0KF9fYnVpbHRpbnNfXykKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoIl9fYnVpbHRpbnNfX1snc3VwZXJnbG9iYWwnXT0yOyBwcmludChzdXBlcmdsb2JhbCkiLCAidGVzdCIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnJvemVuZGljdF9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiBmcm96ZW5fYnVpbHRpbnN9KQorCisgICAgICAgICMgcmVhZC1vbmx5IGdsb2JhbHMKKyAgICAgICAgbmFtZXNwYWNlID0gZnJvemVuZGljdCh7fSkKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoIng9MSIsICJ0ZXN0IiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmcm96ZW5kaWN0X2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCBuYW1lc3BhY2UpCisKICAgICBkZWYgdGVzdF9leGVjX3JlZGlyZWN0ZWQoc2VsZik6CiAgICAgICAgIHNhdmVzdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAgIHN5cy5zdGRvdXQgPSBOb25lICMgV2hhdGV2ZXIgdGhhdCBjYW5ub3QgZmx1c2goKQpAQCAtNTU0LDYgKzYyNCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4Pj0zLCAoMSwgMiwgMywgNCkpKSwgWzMsIDRdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGZpbHRlcig0MiwgKDEsIDIpKSkKIAorICAgIGRlZiB0ZXN0X2ZpbHRlcl9waWNrbGUoc2VsZik6CisgICAgICAgIGYxID0gZmlsdGVyKGZpbHRlcl9jaGFyLCAiYWJjZGVhYmNkZSIpCisgICAgICAgIGYyID0gZmlsdGVyKGZpbHRlcl9jaGFyLCAiYWJjZGVhYmNkZSIpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcl9waWNrbGUoZjEsIGxpc3QoZjIpKQorCiAgICAgZGVmIHRlc3RfZ2V0YXR0cihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdldGF0dHIoc3lzLCAnc3Rkb3V0JykgaXMgc3lzLnN0ZG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhdHRyLCBzeXMsIDEpCkBAIC03NDcsNiArODIyLDExIEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBsaXN0LCBtYXAoYmFkZnVuYywgcmFuZ2UoNSkpKQogCisgICAgZGVmIHRlc3RfbWFwX3BpY2tsZShzZWxmKToKKyAgICAgICAgbTEgPSBtYXAobWFwX2NoYXIsICJJcyB0aGlzIHRoZSByZWFsIGxpZmU/IikKKyAgICAgICAgbTIgPSBtYXAobWFwX2NoYXIsICJJcyB0aGlzIHRoZSByZWFsIGxpZmU/IikKKyAgICAgICAgc2VsZi5jaGVja19pdGVyX3BpY2tsZShtMSwgbGlzdChtMikpCisKICAgICBkZWYgdGVzdF9tYXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4KCcxMjMxMjMnKSwgJzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heCgxLCAyLCAzKSwgMykKQEAgLTg4MCw3ICs5NjAsMjkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAucmVhZCgxMDAwKSwgJ1lZWScqMTAwKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X29wZW5fZGVmYXVsdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgb2xkX2Vudmlyb24gPSBkaWN0KG9zLmVudmlyb24pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgdHJ5IHRvIGdldCBhIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50CisgICAgICAgICAgICAjIGxvY2FsZSBlbmNvZGluZyB0byBjaGVjayB0aGF0IG9wZW4oKSB1c2VzIHRoZSBjdXJyZW50IGxvY2FsZQorICAgICAgICAgICAgIyBlbmNvZGluZyBhbmQgbm90IHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZworICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xDX0FMTCcsICdMQU5HJywgJ0xDX0NUWVBFJyk6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2tleV0KKworICAgICAgICAgICAgc2VsZi53cml0ZV90ZXN0ZmlsZSgpCisgICAgICAgICAgICBjdXJyZW50X2xvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgICAgICAgICAgIGZwID0gb3BlbihURVNURk4sICd3JykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLmVuY29kaW5nLCBjdXJyZW50X2xvY2FsZV9lbmNvZGluZykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgICAgIG9zLmVudmlyb24udXBkYXRlKG9sZF9lbnZpcm9uKQogCiAgICAgZGVmIHRlc3Rfb3JkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZCgnICcpLCAzMikKQEAgLTExOTcsNiArMTI5OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFsnYScsICdiJywgJ2MnXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFsnYScsICdiJywgJ2MnXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbYidhJywgYidjJ10sIGInJykKKyAgICAgICAgdmFsdWVzID0gW2J5dGVhcnJheShiJ2EnKSwgYnl0ZWFycmF5KGInYicpXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgdmFsdWVzLCBieXRlYXJyYXkoYicnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFtbMV0sIFsyXSwgWzNdXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFt7MjozfV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbezI6M31dKjIsIHsyOjN9KQpAQCAtMTI4NSw2ICsxMzkwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsIHppcChCYWRTZXEoKSwgQmFkU2VxKCkpKQogCisgICAgZGVmIHRlc3RfemlwX3BpY2tsZShzZWxmKToKKyAgICAgICAgYSA9ICgxLCAyLCAzKQorICAgICAgICBiID0gKDQsIDUsIDYpCisgICAgICAgIHQgPSBbKDEsIDQpLCAoMiwgNSksICgzLCA2KV0KKyAgICAgICAgejEgPSB6aXAoYSwgYikKKyAgICAgICAgc2VsZi5jaGVja19pdGVyX3BpY2tsZSh6MSwgdCkKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBiYXNpYyBtYWNoaW5lcnkgb2YgdGhlIGZvcm1hdCgpIGJ1aWx0aW4uICBEb24ndCB0ZXN0CiAgICAgICAgICMgIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHZhcmlvdXMgZm9ybWF0dGVycwpAQCAtMTM1OCwxNCArMTQ3MCwxNCBAQAogCiAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgIyBJc3N1ZSAjNzk5NDogb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIGlzCi0gICAgICAgICMgIHBlbmRpbmcgZGVwcmVjYXRlZAorICAgICAgICAjICBkZXByZWNhdGVkCiAgICAgICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZm9ybWF0X3N0cmluZyhvYmosIGZtdF9zdHIsIHNob3VsZF9yYWlzZV93YXJuaW5nKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIGZvcm1hdChvYmosIGZtdF9zdHIpCiAgICAgICAgICAgICBpZiBzaG91bGRfcmFpc2Vfd2FybmluZzoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod1swXS5tZXNzYWdlLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3WzBdLm1lc3NhZ2UsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nJywgc3RyKHdbMF0ubWVzc2FnZSkpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTQwOSw2ICsxNTIxLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHgudHJhbnNsYXRlLCBiIjEiLCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudHJhbnNsYXRlLCBiIjEiKjI1NiwgMSkKIAorICAgIGRlZiB0ZXN0X2NvbnN0cnVjdF9zaW5nbGV0b25zKHNlbGYpOgorICAgICAgICBmb3IgY29uc3QgaW4gTm9uZSwgRWxsaXBzaXMsIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgdHAgPSB0eXBlKGNvbnN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cCgpLCBjb25zdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdHAsIDEsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRwLCBhPTEsIGI9MikKKwogY2xhc3MgVGVzdFNvcnRlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CmluZGV4IDVlYWI4ZjUuLjhjZTZjMjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQpAQCAtMTg4LDI0ICsxODgsMjYgQEAKIAogICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgogICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiYyIKLSAgICAgICAgZm9yIGVuYyBpbiAoInV0ZjgiLCAidXRmMTYiKToKKyAgICAgICAgZm9yIGVuYyBpbiAoInV0Zi04IiwgInV0Zi0xNiIpOgogICAgICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgZW5jKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLnR5cGUydGVzdChzYW1wbGUuZW5jb2RlKGVuYykpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LCBzYW1wbGUsICJsYXRpbjEiKQotICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCAibGF0aW4xIiwgImlnbm9yZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc2VsZi50eXBlMnRlc3QsIHNhbXBsZSwgImxhdGluLTEiKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCAibGF0aW4tMSIsICJpZ25vcmUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYudHlwZTJ0ZXN0KHNhbXBsZVs6LTNdLCAidXRmLTgiKSkKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKICAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmNcZGVmMFxkZWYwIgotICAgICAgICBmb3IgZW5jIGluICgidXRmOCIsICJ1dGYxNiIpOgorICAgICAgICBmb3IgZW5jIGluICgidXRmLTgiLCAidXRmLTE2Iik6CiAgICAgICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCBlbmMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVuYyksIHNhbXBsZSkKICAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5ceDgwXHg4MVx4ZmVceGZmIgotICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCAibGF0aW4xIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiLmRlY29kZSwgInV0ZjgiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKCJ1dGY4IiwgImlnbm9yZSIpLCAiSGVsbG8gd29ybGRcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZXJyb3JzPSJpZ25vcmUiLCBlbmNvZGluZz0idXRmOCIpLAorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCAibGF0aW4tMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYi5kZWNvZGUsICJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoInV0Zi04IiwgImlnbm9yZSIpLCAiSGVsbG8gd29ybGRcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZXJyb3JzPSJpZ25vcmUiLCBlbmNvZGluZz0idXRmLTgiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiSGVsbG8gd29ybGRcbiIpCisgICAgICAgICMgRGVmYXVsdCBlbmNvZGluZyBpcyB1dGYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGInXHhlMlx4OThceDgzJykuZGVjb2RlKCksICdcdTI2MDMnKQogCiAgICAgZGVmIHRlc3RfZnJvbV9pbnQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdCgwKQpAQCAtMjkxLDEwICsyOTMsMjcgQEAKIAogICAgIGRlZiB0ZXN0X2NvdW50KHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgcCA9IDExMgorICAgICAgICB3ID0gMTE5CisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGInaScpLCA0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidzcycpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYid3JyksIDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGkpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQodyksIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGInaScsIDYpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidwJywgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ2knLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGIncCcsIDcsIDkpLCAxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChpLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KHAsIDYpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChwLCA3LCA5KSwgMSkKKwogICAgIGRlZiB0ZXN0X3N0YXJ0c3dpdGgoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnR5cGUydGVzdCgpLnN0YXJ0c3dpdGgoYiJhbnl0aGluZyIpKQpAQCAtMzI1LDM1ICszNDQsODYgQEAKIAogICAgIGRlZiB0ZXN0X2ZpbmQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMyksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAxLCA3KSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDMpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYid3JyksIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ21pc3Npc3NpcHBpYW4nKSwgLTEpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoaSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKHcpLCAtMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAxLCA3KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDMpLCAtMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChpLCA2KSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKHcsIDEsIDMpLCAtMSkKKworICAgICAgICBmb3IgaW5kZXggaW4gKC0xLCAyNTYsIHN5cy5tYXhzaXplICsgMSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHInYnl0ZSBtdXN0IGJlIGluIHJhbmdlXCgwLCAyNTZcKScsCisgICAgICAgICAgICAgICAgYi5maW5kLCBpbmRleCkKKwogICAgIGRlZiB0ZXN0X3JmaW5kKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgdyA9IDExOQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJyksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMyksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMCwgNiksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3cnKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ21pc3Npc3NpcHBpYW4nKSwgLTEpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGkpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKHcpLCAtMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycsIDAsIDYpLCAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGksIDMsIDkpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQodywgMSwgMyksIC0xKQorCiAgICAgZGVmIHRlc3RfaW5kZXgoc2VsZik6Ci0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGIndycpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYidvcmwnKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYid3b3JtJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYidsZG8nKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgdyA9IDExOQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ3NzJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIGIndycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIGInbWlzc2lzc2lwcGlhbicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGkpLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCB3KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ3NzJywgMyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ3NzJywgMSwgNyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIGInc3MnLCAxLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChpLCA2KSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCB3LCAxLCAzKQogCiAgICAgZGVmIHRlc3RfcmluZGV4KHNlbGYpOgotICAgICAgICAjIFhYWCBjb3VsZCBiZSBtb3JlIHJpZ29yb3VzCi0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChiJ3cnKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChiJ29ybCcpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYid3b3JtJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIGInbGRvJykKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInc3MnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIGIndycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ21pc3Npc3NpcHBpYW4nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoaSksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgdykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChiJ3NzJywgMCwgNiksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChpLCAzLCA5KSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIHcsIDEsIDMpCiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCkBAIC0zNjUsNiArNDM1LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChiJ2knKSwgW2InbScsIGInc3MnLCBiJ3NzJywgYidwcCcsIGInJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChiJ3NzJyksIFtiJ21pJywgYidpJywgYidpcHBpJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChiJ3cnKSwgW2JdKQorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2F8YnxjfGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoc2VwPWInfCcpLCBbYidhJywgYidiJywgYidjJywgYidkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChiJ3wnLCBtYXhzcGxpdD0xKSwgW2InYScsIGInYnxjfGQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KHNlcD1iJ3wnLCBtYXhzcGxpdD0xKSwgW2InYScsIGInYnxjfGQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KG1heHNwbGl0PTEsIHNlcD1iJ3wnKSwgW2InYScsIGInYnxjfGQnXSkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYSBiIGMgZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChtYXhzcGxpdD0xKSwgW2InYScsIGInYiBjIGQnXSkKIAogICAgIGRlZiB0ZXN0X3NwbGl0X3doaXRlc3BhY2Uoc2VsZik6CiAgICAgICAgIGZvciBiIGluIChiJyAgYXJmICBiYXJmICAnLCBiJ2FyZlx0YmFyZicsIGInYXJmXG5iYXJmJywgYidhcmZccmJhcmYnLApAQCAtMzkzLDYgKzQ3MSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGInaScpLCBbYidtJywgYidzcycsIGInc3MnLCBiJ3BwJywgYicnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChiJ3NzJyksIFtiJ21pJywgYidpJywgYidpcHBpJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYid3JyksIFtiXSkKKyAgICAgICAgIyB3aXRoIGtleXdvcmQgYXJncworICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhfGJ8Y3xkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChzZXA9Yid8JyksIFtiJ2EnLCBiJ2InLCBiJ2MnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChiJ3wnLCBtYXhzcGxpdD0xKSwgW2InYXxifGMnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChzZXA9Yid8JywgbWF4c3BsaXQ9MSksIFtiJ2F8YnxjJywgYidkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQobWF4c3BsaXQ9MSwgc2VwPWInfCcpLCBbYidhfGJ8YycsIGInZCddKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhIGIgYyBkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChtYXhzcGxpdD0xKSwgW2InYSBiIGMnLCBiJ2QnXSkKIAogICAgIGRlZiB0ZXN0X3JzcGxpdF93aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBmb3IgYiBpbiAoYicgIGFyZiAgYmFyZiAgJywgYidhcmZcdGJhcmYnLCBiJ2FyZlxuYmFyZicsIGInYXJmXHJiYXJmJywKQEAgLTQzMiw2ICs1MTgsMjQgQEAKICAgICAgICAgICAgICAgICBxID0gcGlja2xlLmxvYWRzKHBzKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgcSkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiBiIiIsIGIiYSIsIGIiYWJjIiwgYiJceGZmYWJceDgwIiwgYiJcMFwwXDM3N1wwXDAiOgorICAgICAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIoc2VsZi50eXBlMnRlc3QoYikpCisgICAgICAgICAgICBkYXRhID0gbGlzdChzZWxmLnR5cGUydGVzdChiKSkKKyAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBkYXRhKQorCisgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBkYXRhWzE6XSkKKwogICAgIGRlZiB0ZXN0X3N0cmlwKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zdHJpcChiJ2knKSwgYidtaXNzaXNzaXBwJykKQEAgLTQ3Myw2ICs1NzcsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdChiJ2FiYycpLmxzdHJpcCwgJ2InKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYWJjJykucnN0cmlwLCAnYicpCiAKKyAgICBkZWYgdGVzdF9jZW50ZXIoc2VsZik6CisgICAgICAgICMgRmlsbCBjaGFyYWN0ZXIgY2FuIGJlIGVpdGhlciBieXRlcyBvciBieXRlYXJyYXkgKGlzc3VlIDEyMzgwKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhYmMnKQorICAgICAgICBmb3IgZmlsbF90eXBlIGluIChieXRlcywgYnl0ZWFycmF5KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jZW50ZXIoNywgZmlsbF90eXBlKGInLScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QoYictLWFiYy0tJykpCisKKyAgICBkZWYgdGVzdF9sanVzdChzZWxmKToKKyAgICAgICAgIyBGaWxsIGNoYXJhY3RlciBjYW4gYmUgZWl0aGVyIGJ5dGVzIG9yIGJ5dGVhcnJheSAoaXNzdWUgMTIzODApCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2FiYycpCisgICAgICAgIGZvciBmaWxsX3R5cGUgaW4gKGJ5dGVzLCBieXRlYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmxqdXN0KDcsIGZpbGxfdHlwZShiJy0nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0KGInYWJjLS0tLScpKQorCisgICAgZGVmIHRlc3Rfcmp1c3Qoc2VsZik6CisgICAgICAgICMgRmlsbCBjaGFyYWN0ZXIgY2FuIGJlIGVpdGhlciBieXRlcyBvciBieXRlYXJyYXkgKGlzc3VlIDEyMzgwKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhYmMnKQorICAgICAgICBmb3IgZmlsbF90eXBlIGluIChieXRlcywgYnl0ZWFycmF5KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yanVzdCg3LCBmaWxsX3R5cGUoYictJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdChiJy0tLS1hYmMnKSkKKwogICAgIGRlZiB0ZXN0X29yZChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInXDBBXHg3Zlx4ODBceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbb3JkKGJbaTppKzFdKSBmb3IgaSBpbiByYW5nZShsZW4oYikpXSwKQEAgLTUyOSw2ICs2NTQsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBiLnN0YXJ0c3dpdGgoaCwgTm9uZSwgLTIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBiLnN0YXJ0c3dpdGgoeCwgTm9uZSwgTm9uZSkpCiAKKyAgICBkZWYgdGVzdF9pbnRlZ2VyX2FyZ3VtZW50c19vdXRfb2ZfYnl0ZV9yYW5nZShzZWxmKToKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQorCisgICAgICAgIGZvciBtZXRob2QgaW4gKGIuY291bnQsIGIuZmluZCwgYi5pbmRleCwgYi5yZmluZCwgYi5yaW5kZXgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aG9kLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ldGhvZCwgMjU2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aG9kLCA5OTk5KQorCiAgICAgZGVmIHRlc3RfZmluZF9ldGNfcmFpc2VfY29ycmVjdF9lcnJvcl9tZXNzYWdlcyhzZWxmKToKICAgICAgICAgIyBpc3N1ZSAxMTgyOAogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCkBAIC02MzQsNiArNzY3LDM5IEBACiAgICAgICAgIGIucmV2ZXJzZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYikKIAorICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGIncHl0aG9uJykKKyAgICAgICAgYi5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYicnKQorCisgICAgICAgIGIgPSBieXRlYXJyYXkoYicnKQorICAgICAgICBiLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJycpCisgICAgICAgIGIuYXBwZW5kKG9yZCgncicpKQorICAgICAgICBiLmNsZWFyKCkKKyAgICAgICAgYi5hcHBlbmQob3JkKCdwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidwJykKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGIgPSBieXRlYXJyYXkoYidhYmMnKQorICAgICAgICBiYiA9IGIuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmIsIGInYWJjJykKKworICAgICAgICBiID0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgYmIgPSBiLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLCBiJycpCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXQncyBpbmRlZWQgYSBjb3B5IGFuZCBub3QgYSByZWZlcmVuY2UKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ2FiYycpCisgICAgICAgIGJiID0gYi5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiYikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChiLCBiYikKKyAgICAgICAgYmIuYXBwZW5kKG9yZCgnZCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLCBiJ2FiY2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInYWJjJykKKwogICAgIGRlZiB0ZXN0X3JlZ2V4cHMoc2VsZik6CiAgICAgICAgIGRlZiBieShzKToKICAgICAgICAgICAgIHJldHVybiBieXRlYXJyYXkobWFwKG9yZCwgcykpCkBAIC0xMTA1LDkgKzEyNzEsMTEgQEAKIAogY2xhc3MgQnl0ZUFycmF5QXNTdHJpbmdUZXN0KEZpeGVkU3RyaW5nVGVzdCk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CisgICAgY29udGFpbnNfYnl0ZXMgPSBUcnVlCiAKIGNsYXNzIEJ5dGVzQXNTdHJpbmdUZXN0KEZpeGVkU3RyaW5nVGVzdCk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZXMKKyAgICBjb250YWluc19ieXRlcyA9IFRydWUKIAogCiBjbGFzcyBTdWJjbGFzc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iejIucHkgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQppbmRleCA3MTU0NjhhLi4yNTdiMTQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J6Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQpAQCAtMSwxMCArMSwxMSBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBfNEcsIGJpZ21lbXRlc3QsIGZpbmRmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBiaWdtZW10ZXN0LCBfNEcKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKQEAgLTIxLDEyICsyMiwzOCBAQAogCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIkJhc2UgZm9yIG90aGVyIHRlc3RjYXNlcy4iCi0gICAgVEVYVCA9IGIncm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYmFzaFxuYmluOng6MToxOmJpbjovYmluOlxuZGFlbW9uOng6MjoyOmRhZW1vbjovc2JpbjpcbmFkbTp4OjM6NDphZG06L3Zhci9hZG06XG5scDp4OjQ6NzpscDovdmFyL3Nwb29sL2xwZDpcbnN5bmM6eDo1OjA6c3luYzovc2JpbjovYmluL3N5bmNcbnNodXRkb3duOng6NjowOnNodXRkb3duOi9zYmluOi9zYmluL3NodXRkb3duXG5oYWx0Ong6NzowOmhhbHQ6L3NiaW46L3NiaW4vaGFsdFxubWFpbDp4Ojg6MTI6bWFpbDovdmFyL3Nwb29sL21haWw6XG5uZXdzOng6OToxMzpuZXdzOi92YXIvc3Bvb2wvbmV3czpcbnV1Y3A6eDoxMDoxNDp1dWNwOi92YXIvc3Bvb2wvdXVjcDpcbm9wZXJhdG9yOng6MTE6MDpvcGVyYXRvcjovcm9vdDpcbmdhbWVzOng6MTI6MTAwOmdhbWVzOi91c3IvZ2FtZXM6XG5nb3BoZXI6eDoxMzozMDpnb3BoZXI6L3Vzci9saWIvZ29waGVyLWRhdGE6XG5mdHA6eDoxNDo1MDpGVFAgVXNlcjovdmFyL2Z0cDovYmluL2Jhc2hcbm5vYm9keTp4OjY1NTM0OjY1NTM0Ok5vYm9keTovaG9tZTpcbnBvc3RmaXg6eDoxMDA6MTAxOnBvc3RmaXg6L3Zhci9zcG9vbC9wb3N0Zml4OlxubmllbWV5ZXI6eDo1MDA6NTAwOjovaG9tZS9uaWVtZXllcjovYmluL2Jhc2hcbnBvc3RncmVzOng6MTAxOjEwMjpQb3N0Z3JlU1FMIFNlcnZlcjovdmFyL2xpYi9wZ3NxbDovYmluL2Jhc2hcbm15c3FsOng6MTAyOjEwMzpNeVNRTCBzZXJ2ZXI6L3Zhci9saWIvbXlzcWw6L2Jpbi9iYXNoXG53d3c6eDoxMDM6MTA0OjovdmFyL3d3dzovYmluL2ZhbHNlXG4nCisgICAgVEVYVF9MSU5FUyA9IFsKKyAgICAgICAgYidyb290Ong6MDowOnJvb3Q6L3Jvb3Q6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ2Jpbjp4OjE6MTpiaW46L2JpbjpcbicsCisgICAgICAgIGInZGFlbW9uOng6MjoyOmRhZW1vbjovc2JpbjpcbicsCisgICAgICAgIGInYWRtOng6Mzo0OmFkbTovdmFyL2FkbTpcbicsCisgICAgICAgIGInbHA6eDo0Ojc6bHA6L3Zhci9zcG9vbC9scGQ6XG4nLAorICAgICAgICBiJ3N5bmM6eDo1OjA6c3luYzovc2JpbjovYmluL3N5bmNcbicsCisgICAgICAgIGInc2h1dGRvd246eDo2OjA6c2h1dGRvd246L3NiaW46L3NiaW4vc2h1dGRvd25cbicsCisgICAgICAgIGInaGFsdDp4Ojc6MDpoYWx0Oi9zYmluOi9zYmluL2hhbHRcbicsCisgICAgICAgIGInbWFpbDp4Ojg6MTI6bWFpbDovdmFyL3Nwb29sL21haWw6XG4nLAorICAgICAgICBiJ25ld3M6eDo5OjEzOm5ld3M6L3Zhci9zcG9vbC9uZXdzOlxuJywKKyAgICAgICAgYid1dWNwOng6MTA6MTQ6dXVjcDovdmFyL3Nwb29sL3V1Y3A6XG4nLAorICAgICAgICBiJ29wZXJhdG9yOng6MTE6MDpvcGVyYXRvcjovcm9vdDpcbicsCisgICAgICAgIGInZ2FtZXM6eDoxMjoxMDA6Z2FtZXM6L3Vzci9nYW1lczpcbicsCisgICAgICAgIGInZ29waGVyOng6MTM6MzA6Z29waGVyOi91c3IvbGliL2dvcGhlci1kYXRhOlxuJywKKyAgICAgICAgYidmdHA6eDoxNDo1MDpGVFAgVXNlcjovdmFyL2Z0cDovYmluL2Jhc2hcbicsCisgICAgICAgIGInbm9ib2R5Ong6NjU1MzQ6NjU1MzQ6Tm9ib2R5Oi9ob21lOlxuJywKKyAgICAgICAgYidwb3N0Zml4Ong6MTAwOjEwMTpwb3N0Zml4Oi92YXIvc3Bvb2wvcG9zdGZpeDpcbicsCisgICAgICAgIGInbmllbWV5ZXI6eDo1MDA6NTAwOjovaG9tZS9uaWVtZXllcjovYmluL2Jhc2hcbicsCisgICAgICAgIGIncG9zdGdyZXM6eDoxMDE6MTAyOlBvc3RncmVTUUwgU2VydmVyOi92YXIvbGliL3Bnc3FsOi9iaW4vYmFzaFxuJywKKyAgICAgICAgYidteXNxbDp4OjEwMjoxMDM6TXlTUUwgc2VydmVyOi92YXIvbGliL215c3FsOi9iaW4vYmFzaFxuJywKKyAgICAgICAgYid3d3c6eDoxMDM6MTA0OjovdmFyL3d3dzovYmluL2ZhbHNlXG4nLAorICAgICAgICBdCisgICAgVEVYVCA9IGInJy5qb2luKFRFWFRfTElORVMpCiAgICAgREFUQSA9IGInQlpoOTFBWSZTWS5ceGM4Tlx4MThceDAwXHgwMT5fXHg4MFx4MDBceDEwQFx4MDJceGZmXHhmMFx4MDFceDA3blx4MDA/XHhlN1x4ZmZceGUwMFx4MDFceDk5XHhhYVx4MDBceGMwXHgwM0ZceDg2XHg4YyMmXHg4M0ZceDlhXHgwM1x4MDZceGE2XHhkMFx4YTZceDkzTVx4MGZRXHhhN1x4YThceDA2XHg4MDRoaFx4MTIkXHgxMVx4YTRpNFx4ZjE0U1x4ZDI8UVx4YjVceDBmSFx4ZDNceGQ0XHhkZFx4ZDVceDg3XHhiYlx4ZjhceDk0XHJceDhmXHhhZklceDEyXHhlMVx4YzlceGY4L0VceDAwcHVceDg5XHgxMl1ceGM5XHhiYkRMXG5RXHgwZVx0MVx4MTJceGRmXHhhMFx4YzBceDk3XHhhYzJPOVx4ODlceDEzXHg5NFx4MGVceDFjN1x4MGVkXHg5NUlceDBjXHhhYUpceGE0XHgxOExceDEwXHgwNSNceDljXHhhZlx4YmFceGJjL1x4OTdceDhhI0NceGM4XHhlMVx4OGNXXHhmOVx4ZTJceGQwXHhkNk1ceGE3XHg4YlhhPGVceDg0dFx4Y2JMXHhiM1x4YTdceGQ5XHhjZFx4ZDFceGNiXHg4NC5ceGFmXHhiM1x4YWJceGFiXHhhZGBufVx4YTBsaFx0RSxceDhlWlx4MTVceDE3Vkg+XHg4OFx4ZTVceGNkOWdkNlx4MGJcblx4ZTlceDliXHhkNVx4OGFceDk5XHhmN1x4MDguS1x4OGV2XHhmYlx4Zjd4d1x4YmJceGRmXHhhMVx4OTJceGYxXHhkZHwvIjtceGEyXHhiYVx4OWZceGQ1XHhiMSNBXHhiNlx4ZjZceGIzb1x4YzlceGM1eVxcXHhlYk9ceGU3XHg4NVx4OWFceGJjXHhiNmY4XHg5NTJceGQ1XHhkNyIlXHg4OT5WLFx4ZjdceGE2elx4ZTJceDlmXHhhM1x4ZGZceDExXHgxMSJceGQ2RSlJXHhhOVx4MTNeXHhjYVx4ZjNyXHhkMFx4MDNVXHg5MjJceGYyNlx4ZWNceGI2XHhlZFx4OGJceGMzVVx4MTNceDlkXHhjNVx4MTcwXHhhNFx4ZmFeXHg5Mlx4YWNERlx4OGFceDk3XHhkNlx4MTlceGZlXHhkZFx4YjhceGJkXHgxYVx4OWFceDE5XHhhM1x4ODBhbmtSXHg4Ylx4ZTVceGQ4M11ceGE5XHhjNlx4MDhceDgyZlx4ZjZceGI5IjZsJFx4YjhqQFx4YzBceDhhXHhiMGwxLi5ceGJha1x4ODNsc1x4MTVceGJjXHhmNFx4YzFceDEzXHhiZVx4ZjhFXHhiOFx4OWRcclx4YThceDlka1x4ODRceGQzblx4ZmFceGFjUVx4MDdceGIxJXlceGFhdlx4YjRceDA4XHhlMHpceDFiXHgxNlx4ZjVceDA0XHhlOVx4Y2NceGI5XHgwOHpceDFlbjcuR1x4ZmNdXHhjOVx4MTRceGUxQkBceGJiIThgJwotICAgIERBVEFfQ1JMRiA9IGInQlpoOTFBWSZTWVx4YWV6XHhiYk5ceDAwXHgwMUhceGRmXHg4MFx4MDBceDEyQFx4MDJceGZmXHhmMFx4MDFceDA3blx4MDA/XHhlN1x4ZmZceGUwQFx4MDFceGJjXHhjNmBceDg2Klx4OGQ9TVx4YTlceDlhXHg4Nlx4ZDBMQFx4MGZJXHhhNiFceGExXHgxM1x4YzhceDg4amRpXHg4ZEBceDAzQFx4MWFceDFhXHgwY1x4MGNceDgzIFx4MDBceGM0aDJceDE5XHgwMVx4ODJEXHg4NGVcdFx4ZThceDk5XHg4OVx4MTlceDFhaFx4MDBcclx4MWFceDExXHhhZlx4OWJceDBmR1x4ZjUoXHgxYlx4MWY/XHRceDEyXHhjZlx4YjVceGZjXHg5NUVceDAwcHNceDg5XHgxMl5ceGE0XHhkZFx4YTImXHgwNShceDg3XHgwNFx4OThceDg5dVx4ZTQwJVx4YjZceDE5XCdceDhjXHhjNFx4ODlceGNhXHgwN1x4MGVceDFiIVx4OTFVSUZVJUNceDk5NCFESVx4ZDJceGZhXHhmMFx4ZjFOOFdceGRlXHgxM0FceGY1XHg5Y3IlP1x4OWYzO0k0NUFceGQxXHg4YlRceGIxPGxceGJhXHhjYl9ceGMwMHhZXHgxN3JceDE3XHg4OFx4MDhceDA4QFx4YTBccnlAXHgxMFx4MDQkKWBceGYyXHhjZVx4ODl6XHhiMHNceGVjXHg5Yi5pV1x4OWRceDgxXHhiNS0rdFx4OWZceDFhXCdceDk3ZEJceGY1eFx4YjVceGJlLlsuXHhkN1x4MGVceDgxXHhlN1x4MDhceDFjTmBceDg4XHgxMFx4Y2FceDg3XHhjMyEiXHg4MFx4OTJSXHhhMS9ceGQxXHhjMFx4ZTZtZlx4YWNceGJkXHg5OVx4Y2NhXHhiM1x4ODc4MD5ceGE0XHhjN1x4OGRceDFhXFwiXHhhZFx4YTFceGFieUJnXHgxNVx4YjlsXHg4OFx4ODhceDkxayJceDk0XHhhNFx4ZDRceDg5XHhhZSpceGE2XHgwYlx4MTBceDBjXHhkNlx4ZDRtXHhlODZceGVjXHhiNWpceDhhXHg4NmpcJztceGNhLlx4MDFJXHhmMlx4YWFKXHhlOFx4ODhceDhjVSt0M1x4ZmJceDBjXG5ceGEzM1x4MTNyMlxyXHgxNlx4ZTBceGIzKFx4YmZceDFkXHg4M3JceGU3TVx4ZjBEXHgxMzY1XHhkOFx4ODhceGQzXHhhNFx4OTJceGNiMlx4MDZceDA0XFxceGMxXHhiMFx4ZWEvL1x4YmVrJlx4ZDhceGU2K3RceGU1XHhhMVx4MTNceGFkYVx4MTZceGRlcjUid11ceGEyaVx4YjdbXHg5N1IgXHhlMklUXHhjZDtaXHgwNGRrNFx4YWRceDhhXHRceGQzXHg4MXpceDEwXHhmMTpeYFx4YWJceDFmXHhjNVx4ZGNceDkxTlx4MTQkK1x4OWVceGFlXHhkM1x4ODAnCiAKLSAgICB3aXRoIG9wZW4oZmluZGZpbGUoInRlc3RiejJfYmlnbWVtLmJ6MiIpLCAicmIiKSBhcyBmOgotICAgICAgICBEQVRBX0JJR01FTSA9IGYucmVhZCgpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gVEVTVEZOCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYuZmlsZW5hbWUpOgorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZmlsZW5hbWUpCiAKICAgICBpZiBoYXNfY21kbGluZV9idW56aXAyOgogICAgICAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBkYXRhKToKQEAgLTQ3LDk0ICs3NCwxNTIgQEAKICAgICAgICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CiAgICAgICAgICAgICByZXR1cm4gYnoyLmRlY29tcHJlc3MoZGF0YSkKIAotCiBjbGFzcyBCWjJGaWxlVGVzdChCYXNlVGVzdCk6CiAgICAgIlRlc3QgQloyRmlsZSB0eXBlIG1pc2NlbGxhbmVvdXMgbWV0aG9kcy4iCiAKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBURVNURk4KLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5maWxlbmFtZSk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5maWxlbmFtZSkKLQotICAgIGRlZiBjcmVhdGVUZW1wRmlsZShzZWxmLCBjcmxmPTApOgorICAgIGRlZiBjcmVhdGVUZW1wRmlsZShzZWxmLCBzdHJlYW1zPTEpOgogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKLSAgICAgICAgICAgIGlmIGNybGY6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuREFUQV9DUkxGCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLkRBVEEKLSAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5EQVRBICogc3RyZWFtcykKKworICAgIGRlZiB0ZXN0QmFkQXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgxMjMuNDU2KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgiL2Rldi9udWxsIiwgInoiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgiL2Rldi9udWxsIiwgInJ4IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsICJyYnQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgiL2Rldi9udWxsIiwgY29tcHJlc3NsZXZlbD0wKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgiL2Rldi9udWxsIiwgY29tcHJlc3NsZXZlbD0xMCkKIAogICAgIGRlZiB0ZXN0UmVhZChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWQoKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCiAKKyAgICBkZWYgdGVzdFJlYWRNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQorCisgICAgZGVmIHRlc3RSZWFkTW9ua2V5TXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgICMgVGVzdCBCWjJGaWxlLnJlYWQoKSBvbiBhIG11bHRpLXN0cmVhbSBhcmNoaXZlIHdoZXJlIGEgc3RyZWFtCisgICAgICAgICMgYm91bmRhcnkgY29pbmNpZGVzIHdpdGggdGhlIGVuZCBvZiB0aGUgcmF3IHJlYWQgYnVmZmVyLgorICAgICAgICBidWZmZXJfc2l6ZSA9IGJ6Mi5fQlVGRkVSX1NJWkUKKyAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGxlbihzZWxmLkRBVEEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUICogNSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6Mi5fQlVGRkVSX1NJWkUgPSBidWZmZXJfc2l6ZQorCiAgICAgZGVmIHRlc3RSZWFkMChzZWxmKToKLSAgICAgICAgIyBUZXN0IEJCWjJGaWxlLnJlYWQoMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoMCksIGIiIikKIAogICAgIGRlZiB0ZXN0UmVhZENodW5rMTAoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkKCkgaW4gY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICB0ZXh0ID0gYicnCi0gICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBzdHIgPSBiejJmLnJlYWQoMTApCiAgICAgICAgICAgICAgICAgaWYgbm90IHN0cjoKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICB0ZXh0ICs9IHN0cgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKKyAgICBkZWYgdGVzdFJlYWRDaHVuazEwTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHRleHQgPSBiJycKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc3RyID0gYnoyZi5yZWFkKDEwKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdHI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgdGV4dCArPSBzdHIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUICogNSkKKwogICAgIGRlZiB0ZXN0UmVhZDEwMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWQoMTAwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoMTAwKSwgc2VsZi5URVhUWzoxMDBdKQogCisgICAgZGVmIHRlc3RQZWVrKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBwZGF0YSA9IGJ6MmYucGVlaygpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihwZGF0YSksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5URVhULnN0YXJ0c3dpdGgocGRhdGEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQorCisgICAgZGVmIHRlc3RSZWFkSW50byhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgbiA9IDEyOAorICAgICAgICAgICAgYiA9IGJ5dGVhcnJheShuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRpbnRvKGIpLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLlRFWFRbOm5dKQorICAgICAgICAgICAgbiA9IGxlbihzZWxmLlRFWFQpIC0gbgorICAgICAgICAgICAgYiA9IGJ5dGVhcnJheShsZW4oc2VsZi5URVhUKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkaW50byhiKSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6bl0sIHNlbGYuVEVYVFstbjpdKQorCiAgICAgZGVmIHRlc3RSZWFkTGluZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWRsaW5lKCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkbGluZSwgTm9uZSkKLSAgICAgICAgICAgIHNpbyA9IEJ5dGVzSU8oc2VsZi5URVhUKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2lvLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5URVhUX0xJTkVTOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZSgpLCBsaW5lKQorCisgICAgZGVmIHRlc3RSZWFkTGluZU11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmUsIE5vbmUpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLlRFWFRfTElORVMgKiA1OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZSgpLCBsaW5lKQogCiAgICAgZGVmIHRlc3RSZWFkTGluZXMoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkbGluZXMoKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lcywgTm9uZSkKLSAgICAgICAgICAgIHNpbyA9IEJ5dGVzSU8oc2VsZi5URVhUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBzaW8ucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmVzKCksIHNlbGYuVEVYVF9MSU5FUykKKworICAgIGRlZiB0ZXN0UmVhZExpbmVzTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkbGluZXMsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmVzKCksIHNlbGYuVEVYVF9MSU5FUyAqIDUpCiAKICAgICBkZWYgdGVzdEl0ZXJhdG9yKHNlbGYpOgotICAgICAgICAjICJUZXN0IGl0ZXIoQloyRmlsZSkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgIHNpbyA9IEJ5dGVzSU8oc2VsZi5URVhUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoYnoyZikpLCBzaW8ucmVhZGxpbmVzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihiejJmKSksIHNlbGYuVEVYVF9MSU5FUykKKworICAgIGRlZiB0ZXN0SXRlcmF0b3JNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoYnoyZikpLCBzZWxmLlRFWFRfTElORVMgKiA1KQogCiAgICAgZGVmIHRlc3RDbG9zZWRJdGVyYXRvckRlYWRsb2NrKHNlbGYpOgotICAgICAgICAjICJUZXN0IHRoYXQgaXRlcmF0aW9uIG9uIGEgY2xvc2VkIGJ6MmZpbGUgcmVsZWFzZXMgdGhlIGxvY2suIgotICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMzA5CisgICAgICAgICMgSXNzdWUgIzMzMDk6IEl0ZXJhdGlvbiBvbiBhIGNsb3NlZCBCWjJGaWxlIHNob3VsZCByZWxlYXNlIHRoZSBsb2NrLgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgYnoyZiA9IEJaMkZpbGUoc2VsZi5maWxlbmFtZSkKICAgICAgICAgYnoyZi5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuX19uZXh0X18pCi0gICAgICAgICMgVGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgb2YgdGhlIGFib3ZlIC5fX25leHRfXyBjYWxsIGZhaWxlZCB0bworICAgICAgICAjIFRoaXMgY2FsbCB3aWxsIGRlYWRsb2NrIGlmIHRoZSBhYm92ZSAuX19uZXh0X18gY2FsbCBmYWlsZWQgdG8KICAgICAgICAgIyByZWxlYXNlIHRoZSBsb2NrLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnJlYWRsaW5lcykKIAogICAgIGRlZiB0ZXN0V3JpdGUoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS53cml0ZSgpIgogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlKQogICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCkBAIC0xNDIsMTAgKzIyNyw5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCkKIAogICAgIGRlZiB0ZXN0V3JpdGVDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLndyaXRlKCkgd2l0aCBjaHVua3Mgb2YgMTAgYnl0ZXMiCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CiAgICAgICAgICAgICBuID0gMAotICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgc3RyID0gc2VsZi5URVhUW24qMTA6KG4rMSkqMTBdCiAgICAgICAgICAgICAgICAgaWYgbm90IHN0cjoKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTE1NCwxMyArMjM4LDE5IEBACiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLCBzZWxmLlRFWFQpCiAKKyAgICBkZWYgdGVzdFdyaXRlTm9uRGVmYXVsdENvbXByZXNzTGV2ZWwoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnoyLmNvbXByZXNzKHNlbGYuVEVYVCwgY29tcHJlc3NsZXZlbD01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciLCBjb21wcmVzc2xldmVsPTUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0V3JpdGVMaW5lcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLndyaXRlbGluZXMoKSIKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZWxpbmVzKQotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBiejJmLndyaXRlbGluZXMoc2lvLnJlYWRsaW5lcygpKQotICAgICAgICAjIHBhdGNoICMxNTM1NTAwCisgICAgICAgICAgICBiejJmLndyaXRlbGluZXMoc2VsZi5URVhUX0xJTkVTKQorICAgICAgICAjIElzc3VlICMxNTM1NTAwOiBDYWxsaW5nIHdyaXRlbGluZXMoKSBvbiBhIGNsb3NlZCBCWjJGaWxlCisgICAgICAgICMgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbi4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi53cml0ZWxpbmVzLCBbImEiXSkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCkKQEAgLTE3MywzOSArMjYzLDczIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiejJmLndyaXRlLCBiImEiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnoyZi53cml0ZWxpbmVzLCBbYiJhIl0pCiAKKyAgICBkZWYgdGVzdEFwcGVuZChzZWxmKToKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgImEiKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlKQorICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLCBzZWxmLlRFWFQgKiAyKQorCiAgICAgZGVmIHRlc3RTZWVrRm9yd2FyZChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoMTUwLCAwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCiAgICAgICAgICAgICBiejJmLnNlZWsoMTUwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzE1MDpdKQogCisgICAgZGVmIHRlc3RTZWVrRm9yd2FyZEFjcm9zc1N0cmVhbXMoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz0yKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5zZWVrKQorICAgICAgICAgICAgYnoyZi5zZWVrKGxlbihzZWxmLlRFWFQpICsgMTUwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzE1MDpdKQorCiAgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygtMTUwLCAxKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5yZWFkKDUwMCkKICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzUwMC0xNTA6XSkKIAorICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0Fjcm9zc1N0cmVhbXMoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz0yKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHJlYWR0byA9IGxlbihzZWxmLlRFWFQpICsgMTAwCisgICAgICAgICAgICB3aGlsZSByZWFkdG8gPiAwOgorICAgICAgICAgICAgICAgIHJlYWR0byAtPSBsZW4oYnoyZi5yZWFkKHJlYWR0bykpCisgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFsxMDAtMTUwOl0gKyBzZWxmLlRFWFQpCisKICAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNGcm9tRW5kKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygtMTUwLCAyKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbbGVuKHNlbGYuVEVYVCktMTUwOl0pCiAKKyAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNGcm9tRW5kQWNyb3NzU3RyZWFtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKC0xMDAwLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgKHNlbGYuVEVYVCAqIDIpWy0xMDAwOl0pCisKICAgICBkZWYgdGVzdFNlZWtQb3N0RW5kKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygxNTAwMDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgbGVuKHNlbGYuVEVYVCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCiAKKyAgICBkZWYgdGVzdFNlZWtQb3N0RW5kTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSAqIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCisKICAgICBkZWYgdGVzdFNlZWtQb3N0RW5kVHdpY2Uoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKDE1MDAwMCkgdHdpY2UiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCkBAIC0yMTMsMjcgKzMzNywxMDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgYiIiKQogCisgICAgZGVmIHRlc3RTZWVrUG9zdEVuZFR3aWNlTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCisgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgbGVuKHNlbGYuVEVYVCkgKiA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgYiIiKQorCiAgICAgZGVmIHRlc3RTZWVrUHJlU3RhcnQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKC0xNTAsIDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCiAKKyAgICBkZWYgdGVzdFNlZWtQcmVTdGFydE11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiAyKQorCisgICAgZGVmIHRlc3RGaWxlbm8oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgcmF3ZjoKKyAgICAgICAgICAgIGJ6MmYgPSBCWjJGaWxlKHJhd2YpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLmZpbGVubygpLCByYXdmLmZpbGVubygpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5maWxlbm8pCisKKyAgICBkZWYgdGVzdFNlZWthYmxlKHNlbGYpOgorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKHNlbGYuREFUQSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgICAgICBiejJmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnNlZWthYmxlKQorCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oKSwgbW9kZT0idyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuc2Vla2FibGUpCisKKyAgICAgICAgc3JjID0gQnl0ZXNJTyhzZWxmLkRBVEEpCisgICAgICAgIHNyYy5zZWVrYWJsZSA9IGxhbWJkYTogRmFsc2UKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoc3JjKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6MmYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnNlZWthYmxlKQorCisgICAgZGVmIHRlc3RSZWFkYWJsZShzZWxmKToKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTyhzZWxmLkRBVEEpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgYnoyZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5yZWFkYWJsZSkKKworICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKCksIG1vZGU9InciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6MmYucmVhZGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnJlYWRhYmxlKQorCisgICAgZGVmIHRlc3RXcml0YWJsZShzZWxmKToKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTyhzZWxmLkRBVEEpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6MmYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIGJ6MmYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6MmYud3JpdGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLndyaXRhYmxlKQorCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oKSwgbW9kZT0idyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLndyaXRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi53cml0YWJsZSkKKwogICAgIGRlZiB0ZXN0T3BlbkRlbChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBvcGVuaW5nIGFuZCBkZWxldGluZyBhIGZpbGUgbWFueSB0aW1lcyIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDAwKToKICAgICAgICAgICAgIG8gPSBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpCiAgICAgICAgICAgICBkZWwgbwogCiAgICAgZGVmIHRlc3RPcGVuTm9uZXhpc3RlbnQoc2VsZik6Ci0gICAgICAgICMgIlRlc3Qgb3BlbmluZyBhIG5vbmV4aXN0ZW50IGZpbGUiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIEJaMkZpbGUsICIvbm9uL2V4aXN0ZW50IikKIAotICAgIGRlZiB0ZXN0QnVnMTE5MTA0MyhzZWxmKToKLSAgICAgICAgIyByZWFkbGluZXMoKSBmb3IgZmlsZXMgY29udGFpbmluZyBubyBuZXdsaW5lCisgICAgZGVmIHRlc3RSZWFkbGluZXNOb05ld2xpbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzExOTEwNDM6IHJlYWRsaW5lcygpIGZhaWxzIG9uIGEgZmlsZSBjb250YWluaW5nIG5vIG5ld2xpbmUuCiAgICAgICAgIGRhdGEgPSBiJ0JaaDkxQVkmU1lceGQ5Ylx4ODldXHgwMFx4MDBceDAwXHgwM1x4ODBceDA0XHgwMFx4MDJceDAwXHgwY1x4MDAgXHgwMCFceDlhaDNNXHgxMzxdXHhjOVx4MTRceGUxQkNlXHg4YSV0JwogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKQEAgLTI0NSw3ICs0NTEsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsaW5lcywgW2InVGVzdCddKQogCiAgICAgZGVmIHRlc3RDb250ZXh0UHJvdG9jb2woc2VsZik6Ci0gICAgICAgICMgQloyRmlsZSBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sCiAgICAgICAgIGYgPSBOb25lCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiInh4eCIpCkBAIC0yNjgsNyArNDczLDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RUaHJlYWRpbmcoc2VsZik6Ci0gICAgICAgICMgVXNpbmcgYSBCWjJGaWxlIGZyb20gc2V2ZXJhbCB0aHJlYWRzIGRvZXNuJ3QgZGVhZGxvY2sgKGlzc3VlICM3MjA1KS4KKyAgICAgICAgIyBJc3N1ZSAjNzIwNTogVXNpbmcgYSBCWjJGaWxlIGZyb20gc2V2ZXJhbCB0aHJlYWRzIHNob3VsZG4ndCBkZWFkbG9jay4KICAgICAgICAgZGF0YSA9IGIiMSIgKiAyKioyMAogICAgICAgICBudGhyZWFkcyA9IDEwCiAgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKQEAgLTI4MSwyMiArNDg2LDk4IEBACiAgICAgICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgogICAgICAgICAgICAgICAgIHQuam9pbigpCiAKLSAgICBkZWYgdGVzdE1peGVkSXRlcmF0aW9uUmVhZHMoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzgzOTc6IG1peGVkIGl0ZXJhdGlvbiBhbmQgcmVhZHMgc2hvdWxkIGJlIGZvcmJpZGRlbi4KLSAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgIyBUaGUgaW50ZXJuYWwgYnVmZmVyIHNpemUgaXMgaGFyZC13aXJlZCB0byA4MTkyIGJ5dGVzLCB3ZSBtdXN0Ci0gICAgICAgICAgICAjIHdyaXRlIG91dCBtb3JlIHRoYW4gdGhhdCBmb3IgdGhlIHRlc3QgdG8gc3RvcCBoYWxmIHRocm91Z2gKLSAgICAgICAgICAgICMgdGhlIGJ1ZmZlci4KLSAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUICogMTAwKQotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICBuZXh0KGYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkbGluZXMpCisgICAgZGVmIHRlc3RXaXRob3V0VGhyZWFkaW5nKHNlbGYpOgorICAgICAgICBiejIgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoImJ6MiIsIGJsb2NrZWQ9KCJ0aHJlYWRpbmciLCkpCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJhYmMiKQorICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiImFiYyIpCisKKyAgICBkZWYgdGVzdE1peGVkSXRlcmF0aW9uQW5kUmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQorICAgICAgICBsaW5lbGVuID0gbGVuKHNlbGYuVEVYVF9MSU5FU1swXSkKKyAgICAgICAgaGFsZmxlbiA9IGxpbmVsZW4gLy8gMgorICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnJlYWQoaGFsZmxlbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChiejJmKSwgc2VsZi5URVhUX0xJTkVTWzBdW2hhbGZsZW46XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFtsaW5lbGVuOl0pCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZGxpbmUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGJ6MmYpLCBzZWxmLlRFWFRfTElORVNbMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmUoKSwgc2VsZi5URVhUX0xJTkVTWzJdKQorICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnJlYWRsaW5lcygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIG5leHQoYnoyZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgW10pCisKKyAgICBkZWYgdGVzdE11bHRpU3RyZWFtT3JkZXJpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgb3JkZXJpbmcgb2Ygc3RyZWFtcyB3aGVuIHJlYWRpbmcgYSBtdWx0aS1zdHJlYW0gYXJjaGl2ZS4KKyAgICAgICAgZGF0YTEgPSBiImZvbyIgKiAxMDAwCisgICAgICAgIGRhdGEyID0gYiJiYXIiICogMTAwMAorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi53cml0ZShkYXRhMSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJhIikgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoZGF0YTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgZGF0YTEgKyBkYXRhMikKKworICAgIGRlZiB0ZXN0T3BlbkJ5dGVzRmlsZW5hbWUoc2VsZik6CisgICAgICAgIHN0cl9maWxlbmFtZSA9IHNlbGYuZmlsZW5hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBzdHJfZmlsZW5hbWUuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUZW1wb3JhcnkgZmlsZSBuYW1lIG5lZWRzIHRvIGJlIEFTQ0lJIikKKyAgICAgICAgd2l0aCBCWjJGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLkRBVEEpCisgICAgICAgIHdpdGggQloyRmlsZShieXRlc19maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKKyAgICAgICAgIyBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBhcmUgYWN0dWFsbHkgb3BlcmF0aW5nIG9uIHRoZSByaWdodCBmaWxlLgorICAgICAgICB3aXRoIEJaMkZpbGUoc3RyX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQorCisKKyAgICAjIFRlc3RzIGZvciBhIEJaMkZpbGUgd3JhcHBpbmcgYW5vdGhlciBmaWxlIG9iamVjdDoKKworICAgIGRlZiB0ZXN0UmVhZEJ5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uY2xvc2VkKQorCisgICAgZGVmIHRlc3RQZWVrQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKHNlbGYuREFUQSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbykgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBwZGF0YSA9IGJ6MmYucGVlaygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4ocGRhdGEpLCAwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLlRFWFQuc3RhcnRzd2l0aChwZGF0YSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQorCisgICAgZGVmIHRlc3RXcml0ZUJ5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8sICJ3IikgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCisgICAgICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSksIHNlbGYuVEVYVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmNsb3NlZCkKKworICAgIGRlZiB0ZXN0U2Vla0ZvcndhcmRCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5zZWVrKQorICAgICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzE1MDpdKQorCisgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKHNlbGYuREFUQSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbykgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBiejJmLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFs1MDAtMTUwOl0pCiAKIGNsYXNzIEJaMkNvbXByZXNzb3JUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdENvbXByZXNzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkNvbXByZXNzb3IuY29tcHJlc3MoKS9mbHVzaCgpIgogICAgICAgICBiejJjID0gQloyQ29tcHJlc3NvcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyYy5jb21wcmVzcykKICAgICAgICAgZGF0YSA9IGJ6MmMuY29tcHJlc3Moc2VsZi5URVhUKQpAQCAtMzA0LDExICs1ODUsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZGF0YSksIHNlbGYuVEVYVCkKIAogICAgIGRlZiB0ZXN0Q29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJDb21wcmVzc29yLmNvbXByZXNzKCkvZmx1c2goKSB3aXRoIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQogICAgICAgICBuID0gMAogICAgICAgICBkYXRhID0gYicnCi0gICAgICAgIHdoaWxlIDE6CisgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBzdHIgPSBzZWxmLlRFWFRbbioxMDoobisxKSoxMF0KICAgICAgICAgICAgIGlmIG5vdCBzdHI6CiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTMxNywzNCArNTk3LDM4IEBACiAgICAgICAgIGRhdGEgKz0gYnoyYy5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGRhdGEpLCBzZWxmLlRFWFQpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUpCi0gICAgZGVmIHRlc3RCaWdtZW0oc2VsZiwgc2l6ZSk6Ci0gICAgICAgIHRleHQgPSBiImEiICogc2l6ZQotICAgICAgICBiejJjID0gYnoyLkJaMkNvbXByZXNzb3IoKQotICAgICAgICBkYXRhID0gYnoyYy5jb21wcmVzcyh0ZXh0KSArIGJ6MmMuZmx1c2goKQotICAgICAgICBkZWwgdGV4dAotICAgICAgICB0ZXh0ID0gc2VsZi5kZWNvbXByZXNzKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBzaXplKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuc3RyaXAoYiJhIiksIGIiIikKLQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdENvbXByZXNzNEcoc2VsZiwgc2l6ZSk6CisgICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQorICAgICAgICBkYXRhID0gYiJ4IiAqIHNpemUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6MmMuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgKz0gYnoyYy5mbHVzaCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkYXRhID0gTm9uZSAgIyBSZWxlYXNlIG1lbW9yeQorICAgICAgICBkYXRhID0gYnoyLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCiAKIGNsYXNzIEJaMkRlY29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X0NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEJaMkRlY29tcHJlc3NvciwgNDIpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZC5kZWNvbXByZXNzKQogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGInJwogICAgICAgICBuID0gMAotICAgICAgICB3aGlsZSAxOgorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgc3RyID0gc2VsZi5EQVRBW24qMTA6KG4rMSkqMTBdCiAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0zNTMsNyArNjM3LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NVbnVzZWREYXRhKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCB1bnVzZWQgZGF0YSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHVudXNlZF9kYXRhID0gYiJ0aGlzIGlzIHVudXNlZCBkYXRhIgogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSt1bnVzZWRfZGF0YSkKQEAgLTM2MSw2NyArNjQ0LDE1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmQudW51c2VkX2RhdGEsIHVudXNlZF9kYXRhKQogCiAgICAgZGVmIHRlc3RFT0ZFcnJvcihzZWxmKToKLSAgICAgICAgIyAiQ2FsbGluZyBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIGFmdGVyIEVPUyBtdXN0IHJhaXNlIEVPRkVycm9yIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGJ6MmQuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBiejJkLmRlY29tcHJlc3MsIGIiYW55dGhpbmciKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcsIG1lbXVzZT0xLjI1LCBkcnlfcnVuPUZhbHNlKQotICAgIGRlZiB0ZXN0QmlnbWVtKHNlbGYsIHVudXNlZF9zaXplKToKLSAgICAgICAgIyBJc3N1ZSAjMTQzOTg6IGRlY29tcHJlc3Npb24gZmFpbHMgd2hlbiBvdXRwdXQgZGF0YSBpcyA+PTJHQi4KLSAgICAgICAgdGV4dCA9IGJ6Mi5CWjJEZWNvbXByZXNzb3IoKS5kZWNvbXByZXNzKHNlbGYuREFUQV9CSUdNRU0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBfNEcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5zdHJpcChiIlwwIiksIGIiIikKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTMpCisgICAgZGVmIHRlc3REZWNvbXByZXNzNEcoc2VsZiwgc2l6ZSk6CisgICAgICAgICMgIlRlc3QgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSB3aXRoID40R2lCIGlucHV0IgorICAgICAgICBibG9ja3NpemUgPSAxMCAqIDEwMjQgKiAxMDI0CisgICAgICAgIGJsb2NrID0gcmFuZG9tLmdldHJhbmRiaXRzKGJsb2Nrc2l6ZSAqIDgpLnRvX2J5dGVzKGJsb2Nrc2l6ZSwgJ2xpdHRsZScpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRhdGEgPSBibG9jayAqIChzaXplIC8vIGJsb2Nrc2l6ZSArIDEpCisgICAgICAgICAgICBjb21wcmVzc2VkID0gYnoyLmNvbXByZXNzKGRhdGEpCisgICAgICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgIGRlY29tcHJlc3NlZCA9IGJ6MmQuZGVjb21wcmVzcyhjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRlY29tcHJlc3NlZCA9PSBkYXRhKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGF0YSA9IE5vbmUKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBOb25lCisgICAgICAgICAgICBkZWNvbXByZXNzZWQgPSBOb25lCiAKIAotY2xhc3MgRnVuY1Rlc3QoQmFzZVRlc3QpOgotICAgICJUZXN0IG1vZHVsZSBmdW5jdGlvbnMiCi0KK2NsYXNzIENvbXByZXNzRGVjb21wcmVzc1Rlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgY29tcHJlc3MoKSBmdW5jdGlvbiIKICAgICAgICAgZGF0YSA9IGJ6Mi5jb21wcmVzcyhzZWxmLlRFWFQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGRhdGEpLCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgZGVjb21wcmVzcygpIGZ1bmN0aW9uIgogICAgICAgICB0ZXh0ID0gYnoyLmRlY29tcHJlc3Moc2VsZi5EQVRBKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCkKIAogICAgIGRlZiB0ZXN0RGVjb21wcmVzc0VtcHR5KHNlbGYpOgotICAgICAgICAjICJUZXN0IGRlY29tcHJlc3MoKSBmdW5jdGlvbiB3aXRoIGVtcHR5IHN0cmluZyIKICAgICAgICAgdGV4dCA9IGJ6Mi5kZWNvbXByZXNzKGIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBiIiIpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NJbmNvbXBsZXRlKHNlbGYpOgotICAgICAgICAjICJUZXN0IGRlY29tcHJlc3MoKSBmdW5jdGlvbiB3aXRoIGluY29tcGxldGUgZGF0YSIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyLmRlY29tcHJlc3MsIHNlbGYuREFUQVs6LTEwXSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MS4yNSkKLSAgICBkZWYgdGVzdENvbXByZXNzQmlnbWVtKHNlbGYsIHNpemUpOgotICAgICAgICB0ZXh0ID0gYiJhIiAqIHNpemUKLSAgICAgICAgZGF0YSA9IGJ6Mi5jb21wcmVzcyh0ZXh0KQotICAgICAgICBkZWwgdGV4dAotICAgICAgICB0ZXh0ID0gc2VsZi5kZWNvbXByZXNzKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBzaXplKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuc3RyaXAoYiJhIiksIGIiIikKKyAgICBkZWYgdGVzdERlY29tcHJlc3NNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgdGV4dCA9IGJ6Mi5kZWNvbXByZXNzKHNlbGYuREFUQSAqIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUICogNSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MS4yNSwgZHJ5X3J1bj1GYWxzZSkKLSAgICBkZWYgdGVzdERlY29tcHJlc3NCaWdtZW0oc2VsZiwgdW51c2VkX3NpemUpOgotICAgICAgICAjIElzc3VlICMxNDM5ODogZGVjb21wcmVzc2lvbiBmYWlscyB3aGVuIG91dHB1dCBkYXRhIGlzID49MkdCLgotICAgICAgICB0ZXh0ID0gYnoyLmRlY29tcHJlc3Moc2VsZi5EQVRBX0JJR01FTSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGV4dCksIF80RykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnN0cmlwKGIiXDAiKSwgYiIiKQorCitjbGFzcyBPcGVuVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcGxpY2l0IGJpbmFyeSBtb2RlcyAobm8gImIiIG9yICJ0IiBpbiBtb2RlIHN0cmluZykuCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBzZWxmLlRFWFQgKiAyKQorCisgICAgZGVmIHRlc3RfdGV4dF9tb2RlcyhzZWxmKToKKyAgICAgICAgdGV4dCA9IHNlbGYuVEVYVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgdGV4dF9uYXRpdmVfZW9sID0gdGV4dC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdGV4dF9uYXRpdmVfZW9sKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB0ZXh0KQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJhdCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCAqIDIpCisKKyAgICBkZWYgdGVzdF9maWxlb2JqKHNlbGYpOgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKEJ5dGVzSU8oc2VsZi5EQVRBKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5URVhUKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKEJ5dGVzSU8oc2VsZi5EQVRBKSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgdGV4dCA9IHNlbGYuVEVYVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YnQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVycm9ycz0iaWdub3JlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIG5ld2xpbmU9IlxuIikKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3Qgbm9uLWRlZmF1bHQgZW5jb2RpbmcuCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHRleHRfbmF0aXZlX2VvbCA9IHRleHQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoInV0Zi0xNi1sZSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdGV4dF9uYXRpdmVfZW9sKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRoIG5vbi1kZWZhdWx0IGVuY29kaW5nIGVycm9yIGhhbmRsZXIuCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJmb29ceGZmYmFyIikKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0iYXNjaWkiLCBlcnJvcnM9Imlnbm9yZSIpIFwKKyAgICAgICAgICAgICAgICBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImZvb2JhciIpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBleHBsaWNpdCBuZXdsaW5lICh1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGRpc2FibGVkKS4KKyAgICAgICAgdGV4dCA9IHNlbGYuVEVYVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBuZXdsaW5lPSJcbiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgbmV3bGluZT0iXHIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbdGV4dF0pCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBCWjJGaWxlVGVzdCwKICAgICAgICAgQloyQ29tcHJlc3NvclRlc3QsCiAgICAgICAgIEJaMkRlY29tcHJlc3NvclRlc3QsCi0gICAgICAgIEZ1bmNUZXN0CisgICAgICAgIENvbXByZXNzRGVjb21wcmVzc1Rlc3QsCisgICAgICAgIE9wZW5UZXN0LAogICAgICkKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCi0KLSMgdmltOnRzPTQ6c3c9NApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weSBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKaW5kZXggOTQ4YTExOS4uZTU5NGUwMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CkBAIC01LDggKzUsMTkgQEAKIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiBpbXBvcnQgdGltZQogaW1wb3J0IGxvY2FsZQoraW1wb3J0IHN5cwogaW1wb3J0IGRhdGV0aW1lCiAKK3Jlc3VsdF8yMDA0XzAxX3RleHQgPSAiIiIKKyAgICBKYW51YXJ5IDIwMDQKK01vIFR1IFdlIFRoIEZyIFNhIFN1CisgICAgICAgICAgMSAgMiAgMyAgNAorIDUgIDYgIDcgIDggIDkgMTAgMTEKKzEyIDEzIDE0IDE1IDE2IDE3IDE4CisxOSAyMCAyMSAyMiAyMyAyNCAyNQorMjYgMjcgMjggMjkgMzAgMzEKKyIiIgorCiByZXN1bHRfMjAwNF90ZXh0ID0gIiIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwNAogCkBAIC00NiwxMSArNTcsMTEgQEAKICIiIgogCiByZXN1bHRfMjAwNF9odG1sID0gIiIiCi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJhc2NpaSI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iJShlKXMiPz4KIDwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KIDxodG1sPgogPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1hc2NpaSIgLz4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PSUoZSlzIiAvPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY2FsZW5kYXIuY3NzIiAvPgogPHRpdGxlPkNhbGVuZGFyIGZvciAyMDA0PC90aXRsZT4KIDwvaGVhZD4KQEAgLTE3MCw2ICsxODEsMTM1IEBACiA8L2h0bWw+CiAiIiIKIAorcmVzdWx0XzIwMDRfZGF5cyA9IFsKKyAgICBbW1swLCAwLCAwLCAxLCAyLCAzLCA0XSwKKyAgICAgIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTFdLAorICAgICAgWzEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4XSwKKyAgICAgIFsxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNV0sCisgICAgICBbMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMF1dLAorICAgICBbWzAsIDAsIDAsIDAsIDAsIDAsIDFdLAorICAgICAgWzIsIDMsIDQsIDUsIDYsIDcsIDhdLAorICAgICAgWzksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTVdLAorICAgICAgWzE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyXSwKKyAgICAgIFsyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV1dLAorICAgICBbWzEsIDIsIDMsIDQsIDUsIDYsIDddLAorICAgICAgWzgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNF0sCisgICAgICBbMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjFdLAorICAgICAgWzIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4XSwKKyAgICAgIFsyOSwgMzAsIDMxLCAwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDEsIDIsIDMsIDRdLAorICAgICAgWzUsIDYsIDcsIDgsIDksIDEwLCAxMV0sCisgICAgICBbMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLAorICAgICAgWzE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XSwKKyAgICAgIFsyNiwgMjcsIDI4LCAyOSwgMzAsIDAsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAxLCAyXSwKKyAgICAgIFszLCA0LCA1LCA2LCA3LCA4LCA5XSwKKyAgICAgIFsxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNl0sCisgICAgICBbMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjNdLAorICAgICAgWzI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwXSwKKyAgICAgIFszMSwgMCwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDEsIDIsIDMsIDQsIDUsIDZdLAorICAgICAgWzcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXSwKKyAgICAgIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMF0sCisgICAgICBbMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjddLAorICAgICAgWzI4LCAyOSwgMzAsIDAsIDAsIDAsIDBdXV0sCisgICAgW1tbMCwgMCwgMCwgMSwgMiwgMywgNF0sCisgICAgICBbNSwgNiwgNywgOCwgOSwgMTAsIDExXSwKKyAgICAgIFsxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOF0sCisgICAgICBbMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVdLAorICAgICAgWzI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAwLCAxXSwKKyAgICAgIFsyLCAzLCA0LCA1LCA2LCA3LCA4XSwKKyAgICAgIFs5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1XSwKKyAgICAgIFsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMl0sCisgICAgICBbMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldLAorICAgICAgWzMwLCAzMSwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDAsIDEsIDIsIDMsIDQsIDVdLAorICAgICAgWzYsIDcsIDgsIDksIDEwLCAxMSwgMTJdLAorICAgICAgWzEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5XSwKKyAgICAgIFsyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNl0sCisgICAgICBbMjcsIDI4LCAyOSwgMzAsIDAsIDAsIDBdXV0sCisgICAgW1tbMCwgMCwgMCwgMCwgMSwgMiwgM10sCisgICAgICBbNCwgNSwgNiwgNywgOCwgOSwgMTBdLAorICAgICAgWzExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3XSwKKyAgICAgIFsxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNF0sCisgICAgICBbMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzFdXSwKKyAgICAgW1sxLCAyLCAzLCA0LCA1LCA2LCA3XSwKKyAgICAgIFs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdLAorICAgICAgWzE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxXSwKKyAgICAgIFsyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOF0sCisgICAgICBbMjksIDMwLCAwLCAwLCAwLCAwLCAwXV0sCisgICAgIFtbMCwgMCwgMSwgMiwgMywgNCwgNV0sCisgICAgICBbNiwgNywgOCwgOSwgMTAsIDExLCAxMl0sCisgICAgICBbMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTldLAorICAgICAgWzIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2XSwKKyAgICAgIFsyNywgMjgsIDI5LCAzMCwgMzEsIDAsIDBdXV0KK10KKworcmVzdWx0XzIwMDRfZGF0ZXMgPSBcCisgICAgW1tbJzEyLzI5LzAzIDEyLzMwLzAzIDEyLzMxLzAzIDAxLzAxLzA0IDAxLzAyLzA0IDAxLzAzLzA0IDAxLzA0LzA0JywKKyAgICAgICAnMDEvMDUvMDQgMDEvMDYvMDQgMDEvMDcvMDQgMDEvMDgvMDQgMDEvMDkvMDQgMDEvMTAvMDQgMDEvMTEvMDQnLAorICAgICAgICcwMS8xMi8wNCAwMS8xMy8wNCAwMS8xNC8wNCAwMS8xNS8wNCAwMS8xNi8wNCAwMS8xNy8wNCAwMS8xOC8wNCcsCisgICAgICAgJzAxLzE5LzA0IDAxLzIwLzA0IDAxLzIxLzA0IDAxLzIyLzA0IDAxLzIzLzA0IDAxLzI0LzA0IDAxLzI1LzA0JywKKyAgICAgICAnMDEvMjYvMDQgMDEvMjcvMDQgMDEvMjgvMDQgMDEvMjkvMDQgMDEvMzAvMDQgMDEvMzEvMDQgMDIvMDEvMDQnXSwKKyAgICAgIFsnMDEvMjYvMDQgMDEvMjcvMDQgMDEvMjgvMDQgMDEvMjkvMDQgMDEvMzAvMDQgMDEvMzEvMDQgMDIvMDEvMDQnLAorICAgICAgICcwMi8wMi8wNCAwMi8wMy8wNCAwMi8wNC8wNCAwMi8wNS8wNCAwMi8wNi8wNCAwMi8wNy8wNCAwMi8wOC8wNCcsCisgICAgICAgJzAyLzA5LzA0IDAyLzEwLzA0IDAyLzExLzA0IDAyLzEyLzA0IDAyLzEzLzA0IDAyLzE0LzA0IDAyLzE1LzA0JywKKyAgICAgICAnMDIvMTYvMDQgMDIvMTcvMDQgMDIvMTgvMDQgMDIvMTkvMDQgMDIvMjAvMDQgMDIvMjEvMDQgMDIvMjIvMDQnLAorICAgICAgICcwMi8yMy8wNCAwMi8yNC8wNCAwMi8yNS8wNCAwMi8yNi8wNCAwMi8yNy8wNCAwMi8yOC8wNCAwMi8yOS8wNCddLAorICAgICAgWycwMy8wMS8wNCAwMy8wMi8wNCAwMy8wMy8wNCAwMy8wNC8wNCAwMy8wNS8wNCAwMy8wNi8wNCAwMy8wNy8wNCcsCisgICAgICAgJzAzLzA4LzA0IDAzLzA5LzA0IDAzLzEwLzA0IDAzLzExLzA0IDAzLzEyLzA0IDAzLzEzLzA0IDAzLzE0LzA0JywKKyAgICAgICAnMDMvMTUvMDQgMDMvMTYvMDQgMDMvMTcvMDQgMDMvMTgvMDQgMDMvMTkvMDQgMDMvMjAvMDQgMDMvMjEvMDQnLAorICAgICAgICcwMy8yMi8wNCAwMy8yMy8wNCAwMy8yNC8wNCAwMy8yNS8wNCAwMy8yNi8wNCAwMy8yNy8wNCAwMy8yOC8wNCcsCisgICAgICAgJzAzLzI5LzA0IDAzLzMwLzA0IDAzLzMxLzA0IDA0LzAxLzA0IDA0LzAyLzA0IDA0LzAzLzA0IDA0LzA0LzA0J11dLAorICAgICBbWycwMy8yOS8wNCAwMy8zMC8wNCAwMy8zMS8wNCAwNC8wMS8wNCAwNC8wMi8wNCAwNC8wMy8wNCAwNC8wNC8wNCcsCisgICAgICAgJzA0LzA1LzA0IDA0LzA2LzA0IDA0LzA3LzA0IDA0LzA4LzA0IDA0LzA5LzA0IDA0LzEwLzA0IDA0LzExLzA0JywKKyAgICAgICAnMDQvMTIvMDQgMDQvMTMvMDQgMDQvMTQvMDQgMDQvMTUvMDQgMDQvMTYvMDQgMDQvMTcvMDQgMDQvMTgvMDQnLAorICAgICAgICcwNC8xOS8wNCAwNC8yMC8wNCAwNC8yMS8wNCAwNC8yMi8wNCAwNC8yMy8wNCAwNC8yNC8wNCAwNC8yNS8wNCcsCisgICAgICAgJzA0LzI2LzA0IDA0LzI3LzA0IDA0LzI4LzA0IDA0LzI5LzA0IDA0LzMwLzA0IDA1LzAxLzA0IDA1LzAyLzA0J10sCisgICAgICBbJzA0LzI2LzA0IDA0LzI3LzA0IDA0LzI4LzA0IDA0LzI5LzA0IDA0LzMwLzA0IDA1LzAxLzA0IDA1LzAyLzA0JywKKyAgICAgICAnMDUvMDMvMDQgMDUvMDQvMDQgMDUvMDUvMDQgMDUvMDYvMDQgMDUvMDcvMDQgMDUvMDgvMDQgMDUvMDkvMDQnLAorICAgICAgICcwNS8xMC8wNCAwNS8xMS8wNCAwNS8xMi8wNCAwNS8xMy8wNCAwNS8xNC8wNCAwNS8xNS8wNCAwNS8xNi8wNCcsCisgICAgICAgJzA1LzE3LzA0IDA1LzE4LzA0IDA1LzE5LzA0IDA1LzIwLzA0IDA1LzIxLzA0IDA1LzIyLzA0IDA1LzIzLzA0JywKKyAgICAgICAnMDUvMjQvMDQgMDUvMjUvMDQgMDUvMjYvMDQgMDUvMjcvMDQgMDUvMjgvMDQgMDUvMjkvMDQgMDUvMzAvMDQnLAorICAgICAgICcwNS8zMS8wNCAwNi8wMS8wNCAwNi8wMi8wNCAwNi8wMy8wNCAwNi8wNC8wNCAwNi8wNS8wNCAwNi8wNi8wNCddLAorICAgICAgWycwNS8zMS8wNCAwNi8wMS8wNCAwNi8wMi8wNCAwNi8wMy8wNCAwNi8wNC8wNCAwNi8wNS8wNCAwNi8wNi8wNCcsCisgICAgICAgJzA2LzA3LzA0IDA2LzA4LzA0IDA2LzA5LzA0IDA2LzEwLzA0IDA2LzExLzA0IDA2LzEyLzA0IDA2LzEzLzA0JywKKyAgICAgICAnMDYvMTQvMDQgMDYvMTUvMDQgMDYvMTYvMDQgMDYvMTcvMDQgMDYvMTgvMDQgMDYvMTkvMDQgMDYvMjAvMDQnLAorICAgICAgICcwNi8yMS8wNCAwNi8yMi8wNCAwNi8yMy8wNCAwNi8yNC8wNCAwNi8yNS8wNCAwNi8yNi8wNCAwNi8yNy8wNCcsCisgICAgICAgJzA2LzI4LzA0IDA2LzI5LzA0IDA2LzMwLzA0IDA3LzAxLzA0IDA3LzAyLzA0IDA3LzAzLzA0IDA3LzA0LzA0J11dLAorICAgICBbWycwNi8yOC8wNCAwNi8yOS8wNCAwNi8zMC8wNCAwNy8wMS8wNCAwNy8wMi8wNCAwNy8wMy8wNCAwNy8wNC8wNCcsCisgICAgICAgJzA3LzA1LzA0IDA3LzA2LzA0IDA3LzA3LzA0IDA3LzA4LzA0IDA3LzA5LzA0IDA3LzEwLzA0IDA3LzExLzA0JywKKyAgICAgICAnMDcvMTIvMDQgMDcvMTMvMDQgMDcvMTQvMDQgMDcvMTUvMDQgMDcvMTYvMDQgMDcvMTcvMDQgMDcvMTgvMDQnLAorICAgICAgICcwNy8xOS8wNCAwNy8yMC8wNCAwNy8yMS8wNCAwNy8yMi8wNCAwNy8yMy8wNCAwNy8yNC8wNCAwNy8yNS8wNCcsCisgICAgICAgJzA3LzI2LzA0IDA3LzI3LzA0IDA3LzI4LzA0IDA3LzI5LzA0IDA3LzMwLzA0IDA3LzMxLzA0IDA4LzAxLzA0J10sCisgICAgICBbJzA3LzI2LzA0IDA3LzI3LzA0IDA3LzI4LzA0IDA3LzI5LzA0IDA3LzMwLzA0IDA3LzMxLzA0IDA4LzAxLzA0JywKKyAgICAgICAnMDgvMDIvMDQgMDgvMDMvMDQgMDgvMDQvMDQgMDgvMDUvMDQgMDgvMDYvMDQgMDgvMDcvMDQgMDgvMDgvMDQnLAorICAgICAgICcwOC8wOS8wNCAwOC8xMC8wNCAwOC8xMS8wNCAwOC8xMi8wNCAwOC8xMy8wNCAwOC8xNC8wNCAwOC8xNS8wNCcsCisgICAgICAgJzA4LzE2LzA0IDA4LzE3LzA0IDA4LzE4LzA0IDA4LzE5LzA0IDA4LzIwLzA0IDA4LzIxLzA0IDA4LzIyLzA0JywKKyAgICAgICAnMDgvMjMvMDQgMDgvMjQvMDQgMDgvMjUvMDQgMDgvMjYvMDQgMDgvMjcvMDQgMDgvMjgvMDQgMDgvMjkvMDQnLAorICAgICAgICcwOC8zMC8wNCAwOC8zMS8wNCAwOS8wMS8wNCAwOS8wMi8wNCAwOS8wMy8wNCAwOS8wNC8wNCAwOS8wNS8wNCddLAorICAgICAgWycwOC8zMC8wNCAwOC8zMS8wNCAwOS8wMS8wNCAwOS8wMi8wNCAwOS8wMy8wNCAwOS8wNC8wNCAwOS8wNS8wNCcsCisgICAgICAgJzA5LzA2LzA0IDA5LzA3LzA0IDA5LzA4LzA0IDA5LzA5LzA0IDA5LzEwLzA0IDA5LzExLzA0IDA5LzEyLzA0JywKKyAgICAgICAnMDkvMTMvMDQgMDkvMTQvMDQgMDkvMTUvMDQgMDkvMTYvMDQgMDkvMTcvMDQgMDkvMTgvMDQgMDkvMTkvMDQnLAorICAgICAgICcwOS8yMC8wNCAwOS8yMS8wNCAwOS8yMi8wNCAwOS8yMy8wNCAwOS8yNC8wNCAwOS8yNS8wNCAwOS8yNi8wNCcsCisgICAgICAgJzA5LzI3LzA0IDA5LzI4LzA0IDA5LzI5LzA0IDA5LzMwLzA0IDEwLzAxLzA0IDEwLzAyLzA0IDEwLzAzLzA0J11dLAorICAgICBbWycwOS8yNy8wNCAwOS8yOC8wNCAwOS8yOS8wNCAwOS8zMC8wNCAxMC8wMS8wNCAxMC8wMi8wNCAxMC8wMy8wNCcsCisgICAgICAgJzEwLzA0LzA0IDEwLzA1LzA0IDEwLzA2LzA0IDEwLzA3LzA0IDEwLzA4LzA0IDEwLzA5LzA0IDEwLzEwLzA0JywKKyAgICAgICAnMTAvMTEvMDQgMTAvMTIvMDQgMTAvMTMvMDQgMTAvMTQvMDQgMTAvMTUvMDQgMTAvMTYvMDQgMTAvMTcvMDQnLAorICAgICAgICcxMC8xOC8wNCAxMC8xOS8wNCAxMC8yMC8wNCAxMC8yMS8wNCAxMC8yMi8wNCAxMC8yMy8wNCAxMC8yNC8wNCcsCisgICAgICAgJzEwLzI1LzA0IDEwLzI2LzA0IDEwLzI3LzA0IDEwLzI4LzA0IDEwLzI5LzA0IDEwLzMwLzA0IDEwLzMxLzA0J10sCisgICAgICBbJzExLzAxLzA0IDExLzAyLzA0IDExLzAzLzA0IDExLzA0LzA0IDExLzA1LzA0IDExLzA2LzA0IDExLzA3LzA0JywKKyAgICAgICAnMTEvMDgvMDQgMTEvMDkvMDQgMTEvMTAvMDQgMTEvMTEvMDQgMTEvMTIvMDQgMTEvMTMvMDQgMTEvMTQvMDQnLAorICAgICAgICcxMS8xNS8wNCAxMS8xNi8wNCAxMS8xNy8wNCAxMS8xOC8wNCAxMS8xOS8wNCAxMS8yMC8wNCAxMS8yMS8wNCcsCisgICAgICAgJzExLzIyLzA0IDExLzIzLzA0IDExLzI0LzA0IDExLzI1LzA0IDExLzI2LzA0IDExLzI3LzA0IDExLzI4LzA0JywKKyAgICAgICAnMTEvMjkvMDQgMTEvMzAvMDQgMTIvMDEvMDQgMTIvMDIvMDQgMTIvMDMvMDQgMTIvMDQvMDQgMTIvMDUvMDQnXSwKKyAgICAgIFsnMTEvMjkvMDQgMTEvMzAvMDQgMTIvMDEvMDQgMTIvMDIvMDQgMTIvMDMvMDQgMTIvMDQvMDQgMTIvMDUvMDQnLAorICAgICAgICcxMi8wNi8wNCAxMi8wNy8wNCAxMi8wOC8wNCAxMi8wOS8wNCAxMi8xMC8wNCAxMi8xMS8wNCAxMi8xMi8wNCcsCisgICAgICAgJzEyLzEzLzA0IDEyLzE0LzA0IDEyLzE1LzA0IDEyLzE2LzA0IDEyLzE3LzA0IDEyLzE4LzA0IDEyLzE5LzA0JywKKyAgICAgICAnMTIvMjAvMDQgMTIvMjEvMDQgMTIvMjIvMDQgMTIvMjMvMDQgMTIvMjQvMDQgMTIvMjUvMDQgMTIvMjYvMDQnLAorICAgICAgICcxMi8yNy8wNCAxMi8yOC8wNCAxMi8yOS8wNCAxMi8zMC8wNCAxMi8zMS8wNCAwMS8wMS8wNSAwMS8wMi8wNSddXV0KKwogCiBjbGFzcyBPdXRwdXRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIG5vcm1hbGl6ZV9jYWxlbmRhcihzZWxmLCBzKToKQEAgLTE3OCwxMiArMzE4LDE5IEBACiAgICAgICAgICAgICByZXR1cm4gbm90IGMuaXNzcGFjZSgpIGFuZCBub3QgYy5pc2RpZ2l0KCkKIAogICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGZvciBsaW5lIGluIHMuc3BsaXRsaW5lcyhGYWxzZSk6CisgICAgICAgIGZvciBsaW5lIGluIHMuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSk6CiAgICAgICAgICAgICAjIERyb3AgdGV4dHMsIGFzIHRoZXkgYXJlIGxvY2FsZSBkZXBlbmRlbnQKICAgICAgICAgICAgIGlmIGxpbmUgYW5kIG5vdCBmaWx0ZXIobmVpdGhlcnNwYWNlbm9yZGlnaXQsIGxpbmUpOgogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgICByZXR1cm4gbGluZXMKIAorICAgIGRlZiBjaGVja19odG1sY2FsZW5kYXJfZW5jb2Rpbmcoc2VsZiwgcmVxLCByZXMpOgorICAgICAgICBjYWwgPSBjYWxlbmRhci5IVE1MQ2FsZW5kYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsLmZvcm1hdHllYXJwYWdlKDIwMDQsIGVuY29kaW5nPXJlcSkuc3RyaXAoYicgXHRcbicpLAorICAgICAgICAgICAgKHJlc3VsdF8yMDA0X2h0bWwgJSB7J2UnOiByZXN9KS5zdHJpcCgnIFx0XG4nKS5lbmNvZGUocmVzKQorICAgICAgICApCisKICAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBzZWxmLm5vcm1hbGl6ZV9jYWxlbmRhcihjYWxlbmRhci5jYWxlbmRhcigyMDA0KSksCkBAIC0xOTYsMTIgKzM0Myw2MCBAQAogICAgICAgICAgICAgcmVzdWx0XzIwMDRfdGV4dC5zdHJpcCgpCiAgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X291dHB1dF9odG1sY2FsZW5kYXIoc2VsZik6Ci0gICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJwotICAgICAgICBjYWwgPSBjYWxlbmRhci5IVE1MQ2FsZW5kYXIoKQorICAgIGRlZiB0ZXN0X291dHB1dF9odG1sY2FsZW5kYXJfZW5jb2RpbmdfYXNjaWkoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKCdhc2NpaScsICdhc2NpaScpCisKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX3V0Zjgoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKCd1dGYtOCcsICd1dGYtOCcpCisKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX2RlZmF1bHQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKE5vbmUsIHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKSkKKworICAgIGRlZiB0ZXN0X3llYXJkYXRlc2NhbGVuZGFyKHNlbGYpOgorICAgICAgICBkZWYgc2hyaW5rKGNhbCk6CisgICAgICAgICAgICByZXR1cm4gW1tbJyAnLmpvaW4oJ3s6MDJkfS97OjAyZH0ve30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5tb250aCwgZC5kYXksIHN0cihkLnllYXIpWy0yOl0pIGZvciBkIGluIHopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHogaW4geV0gZm9yIHkgaW4geF0gZm9yIHggaW4gY2FsXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY2FsLmZvcm1hdHllYXJwYWdlKDIwMDQsIGVuY29kaW5nPWVuY29kaW5nKS5zdHJpcChiJyBcdFxuJyksCi0gICAgICAgICAgICByZXN1bHRfMjAwNF9odG1sLnN0cmlwKCcgXHRcbicpLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgICAgIHNocmluayhjYWxlbmRhci5DYWxlbmRhcigpLnllYXJkYXRlc2NhbGVuZGFyKDIwMDQpKSwKKyAgICAgICAgICAgIHJlc3VsdF8yMDA0X2RhdGVzCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3llYXJkYXlzY2FsZW5kYXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYWxlbmRhci5DYWxlbmRhcigpLnllYXJkYXlzY2FsZW5kYXIoMjAwNCksCisgICAgICAgICAgICByZXN1bHRfMjAwNF9kYXlzCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdHdlZWtoZWFkZXJfc2hvcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXR3ZWVraGVhZGVyKDIpLAorICAgICAgICAgICAgJ01vIFR1IFdlIFRoIEZyIFNhIFN1JworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXR3ZWVraGVhZGVyX2xvbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXR3ZWVraGVhZGVyKDkpLAorICAgICAgICAgICAgJyAgTW9uZGF5ICAgVHVlc2RheSAgV2VkbmVzZGF5ICBUaHVyc2RheSAnCisgICAgICAgICAgICAnICBGcmlkYXkgICBTYXR1cmRheSAgIFN1bmRheSAnCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdG1vbnRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0bW9udGgoMjAwNCwgMSkuc3RyaXAoKSwKKyAgICAgICAgICAgIHJlc3VsdF8yMDA0XzAxX3RleHQuc3RyaXAoKQorICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aG5hbWVfd2l0aF95ZWFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkuZm9ybWF0bW9udGhuYW1lKDIwMDQsIDEsIHdpdGh5ZWFyPVRydWUpLAorICAgICAgICAgICAgJzx0cj48dGggY29sc3Bhbj0iNyIgY2xhc3M9Im1vbnRoIj5KYW51YXJ5IDIwMDQ8L3RoPjwvdHI+JworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aG5hbWVfd2l0aG91dF95ZWFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkuZm9ybWF0bW9udGhuYW1lKDIwMDQsIDEsIHdpdGh5ZWFyPUZhbHNlKSwKKyAgICAgICAgICAgICc8dHI+PHRoIGNvbHNwYW49IjciIGNsYXNzPSJtb250aCI+SmFudWFyeTwvdGg+PC90cj4nCiAgICAgICAgICkKIAogCkBAIC0yMjcsNyArNDIyLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsZW5kYXIuZmlyc3R3ZWVrZGF5KCksIGNhbGVuZGFyLk1PTkRBWSkKICAgICAgICAgY2FsZW5kYXIuc2V0Zmlyc3R3ZWVrZGF5KG9yaWcpCiAKLSAgICBkZWYgdGVzdF9lbnVtZXJhdGV3ZWVrZGF5cyhzZWxmKToKKyAgICBkZWYgdGVzdF9pbGxlZ2FsX3dlZWtkYXlfcmVwb3J0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChjYWxlbmRhci5JbGxlZ2FsV2Vla2RheUVycm9yLCAnMTIzJyk6CisgICAgICAgICAgICBjYWxlbmRhci5zZXRmaXJzdHdlZWtkYXkoMTIzKQorCisgICAgZGVmIHRlc3RfZW51bWVyYXRlX3dlZWtkYXlzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBjYWxlbmRhci5kYXlfYWJici5fX2dldGl0ZW1fXywgLTEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBjYWxlbmRhci5kYXlfbmFtZS5fX2dldGl0ZW1fXywgMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFtkIGZvciBkIGluIGNhbGVuZGFyLmRheV9hYmJyXSksIDcpCkBAIC0yNTMsNyArNDUyLDcgQEAKICAgICAgICAgICAgICMgdmVyaWZ5IGl0ICJhY3RzIGxpa2UgYSBzZXF1ZW5jZSIgaW4gdHdvIGZvcm1zIG9mIGl0ZXJhdGlvbgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZVs6Oi0xXSwgbGlzdChyZXZlcnNlZCh2YWx1ZSkpKQogCi0gICAgZGVmIHRlc3RfbG9jYWxlY2FsZW5kYXJzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xvY2FsZV9jYWxlbmRhcnMoc2VsZik6CiAgICAgICAgICMgZW5zdXJlIHRoYXQgTG9jYWxle1RleHQsSFRNTH1DYWxlbmRhciByZXNldHMgdGhlIGxvY2FsZSBwcm9wZXJseQogICAgICAgICAjIChpdCBpcyBzdGlsbCBub3QgdGhyZWFkLXNhZmUgdGhvdWdoKQogICAgICAgICBvbGRfb2N0b2JlciA9IGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDEwLCAxMCwgMTApCkBAIC00MzcsNiArNjM2LDEwIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY2FsZW5kYXIuSWxsZWdhbE1vbnRoRXJyb3IpOgogICAgICAgICAgICAgY2FsZW5kYXIubW9udGhyYW5nZSgyMDA0LCAxMykKIAorICAgIGRlZiB0ZXN0X2lsbGVnYWxfbW9udGhfcmVwb3J0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChjYWxlbmRhci5JbGxlZ2FsTW9udGhFcnJvciwgJzY1Jyk6CisgICAgICAgICAgICBjYWxlbmRhci5tb250aHJhbmdlKDIwMDQsIDY1KQorCiBjbGFzcyBMZWFwZGF5c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9ub19yYW5nZShzZWxmKToKICAgICAgICAgIyB0ZXN0IHdoZW4gbm8gcmFuZ2UgaS5lLiB0d28gaWRlbnRpY2FsIHllYXJzIGFzIGFyZ3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQppbmRleCA0ZDkzMWY4Li5hZjE1YTNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CkBAIC01MiwxMyArNTIsMzYgQEAKICAgICAgICAgKG91dCwgZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgYicnKQogICAgICAgICAjIFRoaXMgdXNlZCB0byBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5yc3RyaXAoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5yc3RyaXAoKS5zdGFydHN3aXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgIGInRmF0YWwgUHl0aG9uIGVycm9yOicKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJyBQeVRocmVhZFN0YXRlX0dldDogbm8gY3VycmVudCB0aHJlYWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgIGInIFB5VGhyZWFkU3RhdGVfR2V0OiBubyBjdXJyZW50IHRocmVhZCcpKQogCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld19mcm9tX05VTExfcG9pbnRlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLm1ha2VfbWVtb3J5dmlld19mcm9tX05VTExfcG9pbnRlcikKIAorICAgIGRlZiB0ZXN0X2V4Y19pbmZvKHNlbGYpOgorICAgICAgICByYWlzZWRfZXhjZXB0aW9uID0gVmFsdWVFcnJvcigiNSIpCisgICAgICAgIG5ld19leGMgPSBUeXBlRXJyb3IoIlRFU1QiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSByYWlzZWRfZXhjZXB0aW9uCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICAgICAgb3JpZ19zeXNfZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgb3JpZ19leGNfaW5mbyA9IF90ZXN0Y2FwaS5zZXRfZXhjX2luZm8obmV3X2V4Yy5fX2NsYXNzX18sIG5ld19leGMsIE5vbmUpCisgICAgICAgICAgICBuZXdfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIG5ld19leGNfaW5mbyA9IF90ZXN0Y2FwaS5zZXRfZXhjX2luZm8oKm9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICByZXNldF9zeXNfZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdfZXhjX2luZm9bMV0sIGUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChvcmlnX2V4Y19pbmZvLCAocmFpc2VkX2V4Y2VwdGlvbi5fX2NsYXNzX18sIHJhaXNlZF9leGNlcHRpb24sIHRiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChvcmlnX3N5c19leGNfaW5mbywgb3JpZ19leGNfaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChyZXNldF9zeXNfZXhjX2luZm8sIG9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwobmV3X2V4Y19pbmZvLCAobmV3X2V4Yy5fX2NsYXNzX18sIG5ld19leGMsIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKG5ld19zeXNfZXhjX2luZm8sIG5ld19leGNfaW5mbykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShGYWxzZSkKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF9wb3NpeHN1YnByb2Nlc3MsICdfcG9zaXhzdWJwcm9jZXNzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9zZXFfYnl0ZXNfdG9fY2hhcnBfYXJyYXkoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzE1NzMyOiBjcmFzaCBpbiBfUHlTZXF1ZW5jZV9CeXRlc1RvQ2hhcnBBcnJheSgpCkBAIC0yMjIsOSArMjQ1LDkxIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5jaGRpcihvbGRjd2QpCiAKK2NsYXNzIFNraXBpdGVtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9za2lwaXRlbShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIElmIHRoaXMgdGVzdCBmYWlsZWQsIHlvdSBwcm9iYWJseSBhZGRlZCBhIG5ldyAiZm9ybWF0IHVuaXQiCisgICAgICAgIGluIFB5dGhvbi9nZXRhcmdzLmMsIGJ1dCBuZWdsZWN0ZWQgdG8gdXBkYXRlIG91ciBwb29yIGZyaWVuZAorICAgICAgICBza2lwaXRlbSgpIGluIHRoZSBzYW1lIGZpbGUuICAoSWYgc28sIHNoYW1lIG9uIHlvdSEpCisKKyAgICAgICAgV2l0aCBhIGZldyBleGNlcHRpb25zKiosIHRoaXMgZnVuY3Rpb24gYnJ1dGUtZm9yY2UgdGVzdHMgYWxsCisgICAgICAgIHByaW50YWJsZSBBU0NJSSoqKiBjaGFyYWN0ZXJzICgzMiB0byAxMjYgaW5jbHVzaXZlKSBhcyBmb3JtYXQgdW5pdHMsCisgICAgICAgIGNoZWNraW5nIHRvIHNlZSB0aGF0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygpIHJldHVybiBjb25zaXN0ZW50CisgICAgICAgIGVycm9ycyBib3RoIHdoZW4gdGhlIHVuaXQgaXMgYXR0ZW1wdGVkIHRvIGJlIHVzZWQgYW5kIHdoZW4gaXQgaXMKKyAgICAgICAgc2tpcHBlZC4gIElmIHRoZSBmb3JtYXQgdW5pdCBkb2Vzbid0IGV4aXN0LCB3ZSdsbCBnZXQgb25lIG9mIHR3bworICAgICAgICBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcyAob25lIGZvciB1c2VkLCBvbmUgZm9yIHNraXBwZWQpOyBpZiBpdCBkb2VzCisgICAgICAgIGV4aXN0IHdlICp3b24ndCogZ2V0IHRoYXQgZXJyb3ItLXdlJ2xsIGdldCBlaXRoZXIgbm8gZXJyb3Igb3Igc29tZQorICAgICAgICBvdGhlciBlcnJvci4gIElmIHdlIGdldCB0aGUgc3BlY2lmaWMgImRvZXMgbm90IGV4aXN0IiBlcnJvciBmb3Igb25lCisgICAgICAgIHRlc3QgYW5kIG5vdCBmb3IgdGhlIG90aGVyLCB0aGVyZSdzIGEgbWlzbWF0Y2gsIGFuZCB0aGUgdGVzdCBmYWlscy4KKworICAgICAgICAgICAqKiBTb21lIGZvcm1hdCB1bml0cyBoYXZlIHNwZWNpYWwgZnVubnkgc2VtYW50aWNzIGFuZCBpdCB3b3VsZAorICAgICAgICAgICAgICBiZSBkaWZmaWN1bHQgdG8gYWNjb21vZGF0ZSB0aGVtIGhlcmUuICBTaW5jZSB0aGVzZSBhcmUgYWxsCisgICAgICAgICAgICAgIHdlbGwtZXN0YWJsaXNoZWQgYW5kIHByb3Blcmx5IHNraXBwZWQgaW4gc2tpcGl0ZW0oKSB3ZSBjYW4KKyAgICAgICAgICAgICAgZ2V0IGF3YXkgd2l0aCBub3QgdGVzdGluZyB0aGVtLS10aGlzIHRlc3QgaXMgcmVhbGx5IGludGVuZGVkCisgICAgICAgICAgICAgIHRvIGNhdGNoICpuZXcqIGZvcm1hdCB1bml0cy4KKworICAgICAgICAgICoqKiBQeXRob24gQyBzb3VyY2UgZmlsZXMgbXVzdCBiZSBBU0NJSS4gIFRoZXJlZm9yZSBpdCdzIGltcG9zc2libGUKKyAgICAgICAgICAgICAgdG8gaGF2ZSBub24tQVNDSUkgZm9ybWF0IHVuaXRzLgorCisgICAgICAgICIiIgorICAgICAgICBlbXB0eV90dXBsZSA9ICgpCisgICAgICAgIHR1cGxlXzEgPSAoMCwpCisgICAgICAgIGRpY3RfYiA9IHsnYic6MX0KKyAgICAgICAga2V5d29yZHMgPSBbImEiLCAiYiJdCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMzIsIDEyNyk6CisgICAgICAgICAgICBjID0gY2hyKGkpCisKKyAgICAgICAgICAgICMgc2tpcCBwYXJlbnRoZXNlcywgdGhlIGVycm9yIHJlcG9ydGluZyBpcyBpbmNvbnNpc3RlbnQgYWJvdXQgdGhlbQorICAgICAgICAgICAgIyBza2lwICdlJywgaXQncyBhbHdheXMgYSB0d28tY2hhcmFjdGVyIGNvZGUKKyAgICAgICAgICAgICMgc2tpcCAnfCcgYW5kICckJywgdGhleSBkb24ndCByZXByZXNlbnQgYXJndW1lbnRzIGFueXdheQorICAgICAgICAgICAgaWYgYyBpbiAnKCllfCQnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBub3Qgc2tpcHBlZAorICAgICAgICAgICAgZm9ybWF0ID0gYyArICJpIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgKG5vdGU6IHRoZSBmb3JtYXQgc3RyaW5nIG11c3QgYmUgYnl0ZXMhKQorICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHModHVwbGVfMSwgZGljdF9iLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKKyAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBzID0gImFyZ3VtZW50IDEgbXVzdCBiZSBpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj4sIG5vdCBpbnQiCisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IChzdHIoZSkgPT0gcykKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKKworICAgICAgICAgICAgIyB0ZXN0IHRoZSBmb3JtYXQgdW5pdCB3aGVuIHNraXBwZWQKKyAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdCA9ICJ8IiArIGZvcm1hdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMoZW1wdHlfdHVwbGUsIGRpY3RfYiwKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCisgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBzID0gImltcG9zc2libGU8YmFkIGZvcm1hdCBjaGFyPjogJ3t9JyIuZm9ybWF0KGZvcm1hdCkKKyAgICAgICAgICAgICAgICB3aGVuX3NraXBwZWQgPSAoc3RyKGUpID09IHMpCisKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAoInRlc3Rfc2tpcGl0ZW1fcGFyaXR5OiAiCisgICAgICAgICAgICAgICAgImRldGVjdGVkIG1pc21hdGNoIGJldHdlZW4gY29udmVydHNpbXBsZSBhbmQgc2tpcGl0ZW0gIgorICAgICAgICAgICAgICAgICJmb3IgZm9ybWF0IHVuaXQgJ3t9JyAoe30pLCBub3Qgc2tpcHBlZCB7fSwgc2tpcHBlZCB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBjLCBpLCB3aGVuX3NraXBwZWQsIHdoZW5fbm90X3NraXBwZWQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3aGVuX3NraXBwZWQsIHdoZW5fbm90X3NraXBwZWQsIG1lc3NhZ2UpCisKKyAgICBkZWYgdGVzdF9wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMoc2VsZik6CisgICAgICAgICMgcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIGVycm9yIGhhbmRsaW5nIHRlc3RzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCksIHt9LCA0MiwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCksIHt9LCBiJycsIFsnJ10gKiA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCksIHt9LCBiJycsIFs0Ml0pCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDQVBJVGVzdCwgVGVzdFBlbmRpbmdDYWxscywgVGVzdDYwMTIsIEVtYmVkZGluZ1Rlc3QpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ0FQSVRlc3QsIFRlc3RQZW5kaW5nQ2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDYwMTIsIEVtYmVkZGluZ1Rlc3QsIFNraXBpdGVtVGVzdCkKIAogICAgIGZvciBuYW1lIGluIGRpcihfdGVzdGNhcGkpOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ3Rlc3RfJyk6CkBAIC0yNDEsMTggKzM0NiwxNyBAQAogICAgICAgICBpZGVudHMgPSBbXQogCiAgICAgICAgIGRlZiBjYWxsYmFjaygpOgotICAgICAgICAgICAgaWRlbnRzLmFwcGVuZChfdGhyZWFkLmdldF9pZGVudCgpKQorICAgICAgICAgICAgaWRlbnRzLmFwcGVuZCh0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAKICAgICAgICAgX3Rlc3RjYXBpLl90ZXN0X3RocmVhZF9zdGF0ZShjYWxsYmFjaykKICAgICAgICAgYSA9IGIgPSBjYWxsYmFjawogICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICMgQ2hlY2sgb3VyIG1haW4gdGhyZWFkIGlzIGluIHRoZSBsaXN0IGV4YWN0bHkgMyB0aW1lcy4KLSAgICAgICAgaWYgaWRlbnRzLmNvdW50KF90aHJlYWQuZ2V0X2lkZW50KCkpICE9IDM6CisgICAgICAgIGlmIGlkZW50cy5jb3VudCh0aHJlYWRpbmcuZ2V0X2lkZW50KCkpICE9IDM6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCBtYWluIHRocmVhZCBjb3JyZWN0bHkgaW4gdGhlIGxpc3QiKQogCiAgICAgaWYgdGhyZWFkaW5nOgotICAgICAgICBpbXBvcnQgX3RocmVhZAogICAgICAgICBpbXBvcnQgdGltZQogICAgICAgICBUZXN0VGhyZWFkU3RhdGUoKQogICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9VGVzdFRocmVhZFN0YXRlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCAzMDMxZmIzLi41NTEwYTBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtNCw2ICs0LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCiAKIGNsYXNzIEhhY2tlZFN5c01vZHVsZToKQEAgLTExOSw5ICsxMjAsMTMgQEAKIGNsYXNzIENnaVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZxdW90O3Rlc3Qgc3RyaW5nJnF1b3Q7IiwgY2dpLmVzY2FwZSgnInRlc3Qgc3RyaW5nIicsIFRydWUpKQorICAgICAgICAjIGNnaS5lc2NhcGUoKSBpcyBkZXByZWNhdGVkLgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgJ2NnaVwuZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0ICZhbXA7IHN0cmluZyIsIGNnaS5lc2NhcGUoInRlc3QgJiBzdHJpbmciKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImcXVvdDt0ZXN0IHN0cmluZyZxdW90OyIsIGNnaS5lc2NhcGUoJyJ0ZXN0IHN0cmluZyInLCBUcnVlKSkKIAogICAgIGRlZiB0ZXN0X3N0cmljdChzZWxmKToKICAgICAgICAgZm9yIG9yaWcsIGV4cGVjdCBpbiBwYXJzZV9zdHJpY3RfdGVzdF9jYXNlczoKQEAgLTE2MCwxMyArMTY1LDcgQEAKICAgICAgICAgICAgIGNnaS5sb2dmcCA9IE5vbmUKICAgICAgICAgICAgIGNnaS5sb2dmaWxlID0gIi9kZXYvbnVsbCIKICAgICAgICAgICAgIGNnaS5pbml0bG9nKCIlcyIsICJUZXN0aW5nIGxvZyAzIikKLSAgICAgICAgICAgIGRlZiBsb2dfY2xlYW51cCgpOgotICAgICAgICAgICAgICAgICIiIlJlc3RvcmUgdGhlIGdsb2JhbCBzdGF0ZSBvZiB0aGUgbG9nIHZhcnMuIiIiCi0gICAgICAgICAgICAgICAgY2dpLmxvZ2ZpbGUgPSAnJwotICAgICAgICAgICAgICAgIGNnaS5sb2dmcC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgY2dpLmxvZ2ZwID0gTm9uZQotICAgICAgICAgICAgICAgIGNnaS5sb2cgPSBjZ2kuaW5pdGxvZwotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ19jbGVhbnVwKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNnaS5jbG9zZWxvZykKICAgICAgICAgICAgIGNnaS5sb2coIlRlc3RpbmcgbG9nIDQiKQogCiAgICAgZGVmIHRlc3RfZmllbGRzdG9yYWdlX3JlYWRsaW5lKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2l0Yi5weSBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkxZmU1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKQEAgLTAsMCArMSw3MiBAQAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworaW1wb3J0IGNnaXRiCisKK2NsYXNzIFRlc3RDZ2l0Yih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9mb250cyhzZWxmKToKKyAgICAgICAgdGV4dCA9ICJIZWxsbyBSb2JiaWUhIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnNtYWxsKHRleHQpLCAiPHNtYWxsPnt9PC9zbWFsbD4iLmZvcm1hdCh0ZXh0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zdHJvbmcodGV4dCksICI8c3Ryb25nPnt9PC9zdHJvbmc+Ii5mb3JtYXQodGV4dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuZ3JleSh0ZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPGZvbnQgY29sb3I9IiM5MDkwOTAiPnt9PC9mb250PicuZm9ybWF0KHRleHQpKQorCisgICAgZGVmIHRlc3RfYmxhbmtzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnNtYWxsKCIiKSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuc3Ryb25nKCIiKSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuZ3JleSgiIiksICIiKQorCisgICAgZGVmIHRlc3RfaHRtbChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSGVsbG8gV29ybGQiKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAjIElmIHRoZSBodG1sIHdhcyB0ZW1wbGF0ZWQgd2UgY291bGQgZG8gYSBiaXQgbW9yZSBoZXJlLgorICAgICAgICAgICAgIyBBdCBsZWFzdCBjaGVjayB0aGF0IHdlIGdldCBkZXRhaWxzIG9uIHdoYXQgd2UganVzdCByYWlzZWQuCisgICAgICAgICAgICBodG1sID0gY2dpdGIuaHRtbChzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlZhbHVlRXJyb3IiLCBodG1sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzdHIoZXJyKSwgaHRtbCkKKworICAgIGRlZiB0ZXN0X3RleHQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgdGV4dCA9IGNnaXRiLnRleHQoc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgdGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkhlbGxvIFdvcmxkIiwgdGV4dCkKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtPT0nd2luMzInLCAidGVzdCBmYWlscyBvbiB3aW5kb3dzLCBzZWUgaXNzdWUgMTI4OTAiKQorICAgIGRlZiB0ZXN0X3N5c2hvb2tfbm9fbG9nZGlyX2RlZmF1bHRfZm9ybWF0KHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgdHJhY2VkaXI6CisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCisgICAgICAgICAgICAgICAgICAnLWMnLAorICAgICAgICAgICAgICAgICAgKCdpbXBvcnQgY2dpdGI7IGNnaXRiLmVuYWJsZShsb2dkaXI9IiVzIik7ICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2UgVmFsdWVFcnJvcigiSGVsbG8gV29ybGQiKScpICUgdHJhY2VkaXIpCisgICAgICAgIG91dCA9IG91dC5kZWNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEluKCJIZWxsbyBXb3JsZCIsIG91dCkKKyAgICAgICAgIyBCeSBkZWZhdWx0IHdlIGVtaXQgSFRNTCBtYXJrdXAuCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJzxwPicsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignPC9wPicsIG91dCkKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtPT0nd2luMzInLCAidGVzdCBmYWlscyBvbiB3aW5kb3dzLCBzZWUgaXNzdWUgMTI4OTAiKQorICAgIGRlZiB0ZXN0X3N5c2hvb2tfbm9fbG9nZGlyX3RleHRfZm9ybWF0KHNlbGYpOgorICAgICAgICAjIElzc3VlIDEyODkwOiB3ZSB3ZXJlIGVtaXR0aW5nIHRoZSA8cD4gdGFnIGluIHRleHQgbW9kZS4KKyAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHRyYWNlZGlyOgorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKAorICAgICAgICAgICAgICAgICAgJy1jJywKKyAgICAgICAgICAgICAgICAgICgnaW1wb3J0IGNnaXRiOyBjZ2l0Yi5lbmFibGUoZm9ybWF0PSJ0ZXh0IiwgbG9nZGlyPSIlcyIpOyAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIiknKSAlIHRyYWNlZGlyKQorICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiSGVsbG8gV29ybGQiLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJzxwPicsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignPC9wPicsIG91dCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KFRlc3RDZ2l0YikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQppbmRleCAzYTQ2MzU1Li42NjE4NTM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQpAQCAtMjI4LDcgKzIyOCw3IEBACiAKIGRlZiB0ZXN0X2NvdmVyYWdlKGNvdmVyZGlyKToKICAgICB0cmFjZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndHJhY2UnKQotICAgIHRyYWNlcj10cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsXSwKKyAgICB0cmFjZXI9dHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9MCwgY291bnQ9MSkKICAgICB0cmFjZXIucnVuKCdyZWxvYWQoY21kKTt0ZXN0X21haW4oKScpCiAgICAgcj10cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQppbmRleCBmNDYzYWY0Li43NjQ0ZGIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKQEAgLTMxLDEyICszMSw2IEBACiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1PJykKICAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLU9PJykKIAotICAgIGRlZiB0ZXN0X3Eoc2VsZik6Ci0gICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1Rb2xkJykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVFuZXcnKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm4nKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm5hbGwnKQotCiAgICAgZGVmIHRlc3Rfc2l0ZV9mbGFnKHNlbGYpOgogICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUycpCiAKQEAgLTE1MSw3ICsxNDUsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ3Rlc3Qgc3BlY2lmaWMgdG8gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X29zeF91dGY4KHNlbGYpOgogICAgICAgICBkZWYgY2hlY2tfb3V0cHV0KHRleHQpOgotICAgICAgICAgICAgZGVjb2RlZCA9IHRleHQuZGVjb2RlKCd1dGY4JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICBkZWNvZGVkID0gdGV4dC5kZWNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGFzY2lpKGRlY29kZWQpLmVuY29kZSgnYXNjaWknKSArIGInXG4nCiAKICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0yMjMsNyArMjE3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoMi5lbmNvZGUoJ2FzY2lpJyksIG91dCkKIAogICAgIGRlZiB0ZXN0X2Rpc3BsYXlob29rX3VuZW5jb2RhYmxlKHNlbGYpOgotICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbjEnLCAndXRmOCcpOgorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbi0xJywgJ3V0Zi04Jyk6CiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICAgICAgZW52WydQWVRIT05JT0VOQ09ESU5HJ10gPSBlbmNvZGluZwogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oCkBAIC0yOTksNyArMjkzLDcgQEAKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gSU9FcnJvcjogLiogaWdub3JlZCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBPU0Vycm9yOiAuKiBpZ25vcmVkJykKIAogICAgIGRlZiB0ZXN0X2Nsb3NlZF9zdGRvdXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzNDQ0OiBpZiBzdGRvdXQgaGFzIGJlZW4gZXhwbGljaXRseSBjbG9zZWQsIHdlIHNob3VsZApAQCAtMzUzLDE0ICszNDcsMTQgQEAKICAgICAgICAgaGFzaGVzID0gW10KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgICAgICBjb2RlID0gJ3ByaW50KGhhc2goInNwYW0iKSknCi0gICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogICAgICAgICAgICAgaGFzaGVzLmFwcGVuZChvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaGVzWzBdLCBoYXNoZXNbMV0pCiAKICAgICAgICAgIyBWZXJpZnkgdGhhdCBzeXMuZmxhZ3MgY29udGFpbnMgaGFzaF9yYW5kb21pemF0aW9uCiAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgcHJpbnQoInJhbmRvbSBpcyIsIHN5cy5mbGFncy5oYXNoX3JhbmRvbWl6YXRpb24pJwotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3JhbmRvbSBpcyAxJywgb3V0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CmluZGV4IDZiNTlkOTYuLjE3ZGZiYzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CkBAIC0xLDE1ICsxLDIwIEBACiAjIHRlc3RzIGNvbW1hbmQgbGluZSBleGVjdXRpb24gb2Ygc2NyaXB0cwogCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IHppcGltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcHlfY29tcGlsZQogCitpbXBvcnQgdGV4dHdyYXAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIpCisgICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKKyAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQogCiB2ZXJib3NlID0gc3VwcG9ydC52ZXJib3NlCiAKQEAgLTMyLDYgKzM3LDkgQEAKIGFzc2VydEVxdWFsKHJlc3VsdCwgWydUb3AgbGV2ZWwgYXNzaWdubWVudCcsICdMb3dlciBsZXZlbCByZWZlcmVuY2UnXSkKICMgQ2hlY2sgcG9wdWxhdGlvbiBvZiBtYWdpYyB2YXJpYWJsZXMKIGFzc2VydEVxdWFsKF9fbmFtZV9fLCAnX19tYWluX18nKQorZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKK19sb2FkZXIgPSBfX2xvYWRlcl9fIGlmIF9fbG9hZGVyX18gaXMgQnVpbHRpbkltcG9ydGVyIGVsc2UgdHlwZShfX2xvYWRlcl9fKQorcHJpbnQoJ19fbG9hZGVyX189PSVhJyAlIF9sb2FkZXIpCiBwcmludCgnX19maWxlX189PSVhJyAlIF9fZmlsZV9fKQogYXNzZXJ0RXF1YWwoX19jYWNoZWRfXywgTm9uZSkKIHByaW50KCdfX3BhY2thZ2VfXz09JXInICUgX19wYWNrYWdlX18pCkBAIC00OSwxMiArNTcsMTYgQEAKICIiIgogCiBkZWYgX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2U9dGVzdF9zb3VyY2UpOgotICAgIHJldHVybiBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICB0b19yZXR1cm4gPSBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgIHJldHVybiB0b19yZXR1cm4KIAogZGVmIF9tYWtlX3Rlc3RfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT10ZXN0X3NvdXJjZSwgZGVwdGg9MSk6Ci0gICAgcmV0dXJuIG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIGRlcHRoKQorICAgIHRvX3JldHVybiA9IG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgZGVwdGgpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKICMgVGhlcmUncyBubyBlYXN5IHdheSB0byBwYXNzIHRoZSBzY3JpcHQgZGlyZWN0b3J5IGluIHRvIGdldAogIyAtbSB0byB3b3JrIChhdm9pZGluZyB0aGF0IGlzIHRoZSB3aG9sZSBwb2ludCBvZiBtYWtpbmcKQEAgLTcyLDE2ICs4NCwyMCBAQAogICAgIGVsc2U6CiAgICAgICAgIHBhdGggPSByZXByKHBhdGgpCiAgICAgc291cmNlID0gbGF1bmNoX3NvdXJjZSAlIChwYXRoLCBtb2R1bGVfbmFtZSkKLSAgICByZXR1cm4gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgdG9fcmV0dXJuID0gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKIGNsYXNzIENtZExpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX2NoZWNrX291dHB1dChzZWxmLCBzY3JpcHRfbmFtZSwgZXhpdF9jb2RlLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlLCBleHBlY3RlZF9hcmd2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aDAsIGV4cGVjdGVkX3BhY2thZ2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYXRoMCwgZXhwZWN0ZWRfcGFja2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9hZGVyKToKICAgICAgICAgaWYgdmVyYm9zZSA+IDE6CiAgICAgICAgICAgICBwcmludCgiT3V0cHV0IGZyb20gdGVzdCBzY3JpcHQgJXI6IiAlIHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHJpbnQoZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0X2NvZGUsIDApCisgICAgICAgIHByaW50ZWRfbG9hZGVyID0gJ19fbG9hZGVyX189PSVhJyAlIGV4cGVjdGVkX2xvYWRlcgogICAgICAgICBwcmludGVkX2ZpbGUgPSAnX19maWxlX189PSVhJyAlIGV4cGVjdGVkX2ZpbGUKICAgICAgICAgcHJpbnRlZF9wYWNrYWdlID0gJ19fcGFja2FnZV9fPT0lcicgJSBleHBlY3RlZF9wYWNrYWdlCiAgICAgICAgIHByaW50ZWRfYXJndjAgPSAnc3lzLmFyZ3ZbMF09PSVhJyAlIGV4cGVjdGVkX2FyZ3YwCkBAIC05Myw2ICsxMDksNyBAQAogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9wYWNrYWdlKQogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9hcmd2MCkKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfY3dkKQorICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfbG9hZGVyLmVuY29kZSgndXRmLTgnKSwgZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX2ZpbGUuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfcGFja2FnZS5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHJpbnRlZF9hcmd2MC5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCkBAIC0xMDEsMTQgKzExOCwxNSBAQAogCiAgICAgZGVmIF9jaGVja19zY3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcyk6CiAgICAgICAgIGlmIG5vdCBfX2RlYnVnX186CiAgICAgICAgICAgICBjbWRfbGluZV9zd2l0Y2hlcyArPSAoJy0nICsgJ08nICogc3lzLmZsYWdzLm9wdGltaXplLCkKICAgICAgICAgcnVuX2FyZ3MgPSBjbWRfbGluZV9zd2l0Y2hlcyArIChzY3JpcHRfbmFtZSwpICsgdHVwbGUoZXhhbXBsZV9hcmdzKQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCpydW5fYXJncykKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0ICsgZXJyLCBleHBlY3RlZF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLCBleHBlY3RlZF9wYWNrYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyKQogCiAgICAgZGVmIF9jaGVja19pbXBvcnRfZXJyb3Ioc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgpAQCAtMTIwLDExICsxMzgsMzAgQEAKICAgICAgICAgICAgIHByaW50KCdFeHBlY3RlZCBvdXRwdXQ6ICVyJyAlIGV4cGVjdGVkX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZF9tc2cuZW5jb2RlKCd1dGYtOCcpLCBlcnIpCiAKKyAgICBkZWYgdGVzdF9kYXNoX2NfbG9hZGVyKHNlbGYpOgorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItYyIsICJwcmludChfX2xvYWRlcl9fKSIpCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKworICAgIGRlZiB0ZXN0X3N0ZGluX2xvYWRlcihzZWxmKToKKyAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIHdheSB0byBhdXRvbWF0aWNhbGx5IHRlc3QgdGhlIGZ1bGx5CisgICAgICAgICMgaW50ZXJhY3RpdmUgUkVQTCwgc2luY2UgdGhhdCBjb2RlIHBhdGggb25seSBnZXRzIGV4ZWN1dGVkIHdoZW4KKyAgICAgICAgIyBzdGRpbiBpcyBhbiBpbnRlcmFjdGl2ZSB0dHkuCisgICAgICAgIHAgPSBzcGF3bl9weXRob24oKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKGIicHJpbnQoX19sb2FkZXJfXylcbiIpCisgICAgICAgICAgICBwLnN0ZGluLmZsdXNoKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dCA9IGtpbGxfcHl0aG9uKHApCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3NjcmlwdF9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xMzMsMTMgKzE3MCwxNSBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChweWNfZmlsZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE0OCw3ICsxODcsOCBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfZGlyLCBweWNfZmlsZSwgc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE1OSwxNCArMTk5LDE2IEBACiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHppcF9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsIHppcF9uYW1lLCAnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgY29tcGlsZWRfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMTgxLDE5ICsyMjMsMjQgQEAKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cuc2NyaXB0JykKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwX25hbWUsICd0ZXN0X3BrZycsIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9zdWJwYWNrYWdlX2luX3ppcGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gX21ha2VfdGVzdF96aXBfcGtnKHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsICd0ZXN0X3BrZycsICdzY3JpcHQnLCBkZXB0aD0yKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cudGVzdF9wa2cuc2NyaXB0JywgemlwX25hbWUpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsICd0ZXN0X3BrZy50ZXN0X3BrZycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBfbmFtZSwgJ3Rlc3RfcGtnLnRlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIwMiw3ICsyNDksOCBAQAogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIxNCw3ICsyNjIsOCBAQAogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMjUxLDcgKzMwMCw4IEBACiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiaW5pdF9hcmd2MD09JXIiICUgJy1tJwogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQuZW5jb2RlKCd1dGYtOCcpLCBvdXQpCiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9jX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLWMiIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CkBAIC0yNzcsNyArMzI3LDggQEAKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCiAgICAgICAgICAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ290aGVyJywgKmV4YW1wbGVfYXJncykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2Rhc2hfbV9lcnJvcl9jb2RlX2lzX29uZShzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSBpcyBpbnZva2VkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBmbGFnCkBAIC0yOTQsNiArMzQ1LDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHByaW50KG91dCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAxKQogCisgICAgZGVmIHRlc3RfcGVwXzQwOV92ZXJiaWFnZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgUEVQIDQwOSBzeW50YXggcHJvcGVybHkgc3VwcHJlc3NlcworICAgICAgICAjIHRoZSBjb250ZXh0IG9mIGFuIGV4Y2VwdGlvbgorICAgICAgICBzY3JpcHQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IgZnJvbSBOb25lCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQorICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQorICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoJ1xuJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbMF0uc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFsxXS5zdGFydHN3aXRoKCcgIEZpbGUgJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFszXS5zdGFydHN3aXRoKCdOYW1lRXJyb3InKSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENtZExpbmVUZXN0KQogICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGUucHkKaW5kZXggZTFjN2E3OC4uMzM3N2E3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZS5weQpAQCAtMTYsNyArMTYsNyBAQAogZnJlZXZhcnM6ICgpCiBubG9jYWxzOiAyCiBmbGFnczogMwotY29uc3RzOiAoJ05vbmUnLCAnPGNvZGUgb2JqZWN0IGc+JykKK2NvbnN0czogKCdOb25lJywgJzxjb2RlIG9iamVjdCBnPicsICInZi48bG9jYWxzPi5nJyIpCiAKID4+PiBkdW1wKGYoNCkuX19jb2RlX18pCiBuYW1lOiBnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGVmMTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtMCwwICsxLDcyIEBACisiVGVzdCBJbnRlcmFjdGl2ZUNvbnNvbGUgYW5kIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIgZnJvbSBjb2RlIG1vZHVsZSIKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitjb2RlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjb2RlJykKKworCitjbGFzcyBUZXN0SW50ZXJhY3RpdmVDb25zb2xlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb25zb2xlID0gY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGUoKQorICAgICAgICBzZWxmLm1vY2tfc3lzKCkKKworICAgIGRlZiBtb2NrX3N5cyhzZWxmKToKKyAgICAgICAgIk1vY2sgc3lzdGVtIGVudmlyb25tZW50IGZvciBJbnRlcmFjdGl2ZUNvbnNvbGUiCisgICAgICAgICMgdXNlIGV4aXQgc3RhY2sgdG8gbWF0Y2ggcGF0Y2ggY29udGV4dCBtYW5hZ2VycyB0byBhZGRDbGVhbnVwCisgICAgICAgIHN0YWNrID0gRXhpdFN0YWNrKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN0YWNrLmNsb3NlKQorICAgICAgICBzZWxmLmluZnVuYyA9IHN0YWNrLmVudGVyX2NvbnRleHQobW9jay5wYXRjaCgnY29kZS5pbnB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGU9VHJ1ZSkpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gc3RhY2suZW50ZXJfY29udGV4dChtb2NrLnBhdGNoKCdjb2RlLnN5cy5zdGRvdXQnKSkKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGFjay5lbnRlcl9jb250ZXh0KG1vY2sucGF0Y2goJ2NvZGUuc3lzLnN0ZGVycicpKQorICAgICAgICBwcmVwYXRjaCA9IG1vY2sucGF0Y2goJ2NvZGUuc3lzJywgd3JhcHM9Y29kZS5zeXMsIHNwZWM9Y29kZS5zeXMpCisgICAgICAgIHNlbGYuc3lzbW9kID0gc3RhY2suZW50ZXJfY29udGV4dChwcmVwYXRjaCkKKyAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgorICAgICAgICAgICAgc2VsZi5zeXNtb2QuZXhjZXB0aG9vayA9IHNlbGYuc3lzbW9kLl9fZXhjZXB0aG9va19fCisKKyAgICBkZWYgdGVzdF9wczEoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN5c21vZC5wczEsICc+Pj4gJykKKworICAgIGRlZiB0ZXN0X3BzMihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3lzbW9kLnBzMiwgJy4uLiAnKQorCisgICAgZGVmIHRlc3RfY29uc29sZV9zdGRlcnIoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gWyInYW50aW9jaCciLCAiIiwgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIGZvciBjYWxsIGluIGxpc3Qoc2VsZi5zdGRvdXQubWV0aG9kX2NhbGxzKToKKyAgICAgICAgICAgIGlmICdhbnRpb2NoJyBpbiAnJy5qb2luKGNhbGxbMV0pOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigibm8gY29uc29sZSBzdGRvdXQiKQorCisgICAgZGVmIHRlc3Rfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsidW5kZWZpbmVkIiwgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIGZvciBjYWxsIGluIHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsczoKKyAgICAgICAgICAgIGlmICdOYW1lRXJyb3I6JyBpbiAnJy5qb2luKGNhbGxbMV0pOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiTm8gc3ludGF4IGVycm9yIGZyb20gY29uc29sZSIpCisKKyAgICBkZWYgdGVzdF9zeXNleGNlcHRob29rKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsicmFpc2UgVmFsdWVFcnJvcignJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIGhvb2sgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLnN5c21vZC5leGNlcHRob29rID0gaG9vaworICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9vay5jYWxsZWQpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RJbnRlcmFjdGl2ZUNvbnNvbGUpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCBlNjU2ZDJmLi44MWJmODBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTEsNSArMSwxOCBAQAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKLWltcG9ydCBzeXMsIGNvZGVjcywgaHRtbC5lbnRpdGllcywgdW5pY29kZWRhdGEKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBodG1sLmVudGl0aWVzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdW5pY29kZWRhdGEKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKK3RyeToKKyAgICBpbXBvcnQgY3R5cGVzCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgY3R5cGVzID0gTm9uZQorICAgIFNJWkVPRl9XQ0hBUl9UID0gLTEKK2Vsc2U6CisgICAgU0laRU9GX1dDSEFSX1QgPSBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX3djaGFyKQogCiBjbGFzcyBQb3NSZXR1cm46CiAgICAgIyB0aGlzIGNhbiBiZSB1c2VkIGZvciBjb25maWd1cmFibGUgY2FsbGJhY2tzCkBAIC0xMzUsMjIgKzE0OCwxNCBAQAogICAgIGRlZiB0ZXN0X2JhY2tzbGFzaGVzY2FwZShzZWxmKToKICAgICAgICAgIyBEb2VzIHRoZSBzYW1lIGFzIHRoZSAidW5pY29kZS1lc2NhcGUiIGVuY29kaW5nLCBidXQgd2l0aCBkaWZmZXJlbnQKICAgICAgICAgIyBiYXNlIGVuY29kaW5ncy4KLSAgICAgICAgc2luID0gImFceGFjXHUxMjM0XHUyMGFjXHU4MDAwIgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHNpbiArPSBjaHIoc3lzLm1heHVuaWNvZGUpCi0gICAgICAgIHNvdXQgPSBiImFcXHhhY1xcdTEyMzRcXHUyMGFjXFx1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzb3V0ICs9IGJ5dGVzKCJcXFUlMDh4IiAlIHN5cy5tYXh1bmljb2RlLCAiYXNjaWkiKQorICAgICAgICBzaW4gPSAiYVx4YWNcdTEyMzRcdTIwYWNcdTgwMDBcVTAwMTBmZmZmIgorICAgICAgICBzb3V0ID0gYiJhXFx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJhc2NpaSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKLSAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJsYXRpbi0xIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwgc291dCkKIAotICAgICAgICBzb3V0ID0gYiJhXHhhY1xcdTEyMzRceGE0XFx1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzb3V0ICs9IGJ5dGVzKCJcXFUlMDh4IiAlIHN5cy5tYXh1bmljb2RlLCAiYXNjaWkiKQorICAgICAgICBzb3V0ID0gYiJhXHhhY1xcdTEyMzRceGE0XFx1ODAwMFxcVTAwMTBmZmZmIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpbi5lbmNvZGUoImlzby04ODU5LTE1IiwgImJhY2tzbGFzaHJlcGxhY2UiKSwgc291dCkKIAogICAgIGRlZiB0ZXN0X2RlY29kaW5nX2NhbGxiYWNrcyhzZWxmKToKQEAgLTIwMCwzMyArMjA1LDM3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZW5jb2RlLCBzaW4sICJyZXBsYWNlIiwgY2hhcm1hcCkKIAogICAgIGRlZiB0ZXN0X2RlY29kZXVuaWNvZGVpbnRlcm5hbChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IsCi0gICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUsCi0gICAgICAgICAgICAidW5pY29kZS1pbnRlcm5hbCIsCi0gICAgICAgICkKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwcmVjYXRlZCcsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLmRlY29kZSwKKyAgICAgICAgICAgICAgICAidW5pY29kZS1pbnRlcm5hbCIsCisgICAgICAgICAgICApCisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID09IDQ6CiAgICAgICAgICAgICBkZWYgaGFuZGxlcl91bmljb2RlaW50ZXJuYWwoZXhjKToKICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGMsIFVuaWNvZGVEZWNvZGVFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlICVyIiAlIGV4YykKICAgICAgICAgICAgICAgICByZXR1cm4gKCJceDAxIiwgMSkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAiaWdub3JlIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAiaWdub3JlIiksCisgICAgICAgICAgICAgICAgICAgICJcdTAwMDAiCisgICAgICAgICAgICAgICAgKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLmRlY29kZSgidW5pY29kZS1pbnRlcm5hbCIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMFx1ZmZmZCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwXHVmZmZkIgorICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lmh1aSIsIGhhbmRsZXJfdW5pY29kZWludGVybmFsKQorICAgICAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAidGVzdC5odWkiKSwKLSAgICAgICAgICAgICAgICAiXHUwMDAwXHUwMDAxXHUwMDAwIgotICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLmRlY29kZSgidW5pY29kZS1pbnRlcm5hbCIsICJ0ZXN0Lmh1aSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwXHUwMDAxXHUwMDAwIgorICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2NhbGxiYWNrcyhzZWxmKToKICAgICAgICAgZGVmIGhhbmRsZXIxKGV4Yyk6CkBAIC0zNTUsNyArMzY0LDcgQEAKICAgICAgICAgICAgIFsiYXNjaWkiLCAiXHVmZmZmeCIsIDAsIDEsICJvdWNoIl0sCiAgICAgICAgICAgICAiJ2FzY2lpJyBjb2RlYyBjYW4ndCBlbmNvZGUgY2hhcmFjdGVyICdcXHVmZmZmJyBpbiBwb3NpdGlvbiAwOiBvdWNoIgogICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgc2VsZi5jaGVja19leGNlcHRpb25vYmplY3RhcmdzKAogICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvciwKICAgICAgICAgICAgICAgICBbImFzY2lpIiwgIlxVMDAwMTAwMDB4IiwgMCwgMSwgIm91Y2giXSwKQEAgLTM5MCw3ICszOTksNyBAQAogICAgICAgICAgICAgWyJnXHVmZmZmcmsiLCAxLCAyLCAib3VjaCJdLAogICAgICAgICAgICAgImNhbid0IHRyYW5zbGF0ZSBjaGFyYWN0ZXIgJ1xcdWZmZmYnIGluIHBvc2l0aW9uIDE6IG91Y2giCiAgICAgICAgICkKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6CisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID09IDQ6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4Y2VwdGlvbm9iamVjdGFyZ3MoCiAgICAgICAgICAgICAgICAgVW5pY29kZVRyYW5zbGF0ZUVycm9yLAogICAgICAgICAgICAgICAgIFsiZ1xVMDAwMTAwMDByayIsIDEsIDIsICJvdWNoIl0sCkBAIC01NzcsMzEgKzU4NiwzMCBAQAogICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVmZmZmIiwgMCwgMSwgIm91Y2giKSksCiAgICAgICAgICAgICAoIlxcdWZmZmYiLCAxKQogICAgICAgICApCi0gICAgICAgICMgMSBvbiBVQ1MtNCBidWlsZHMsIDIgb24gVUNTLTIKLSAgICAgICAgbGVuX3dpZGUgPSBsZW4oIlxVMDAwMTAwMDAiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXFUwMDAxMDAwMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGxlbl93aWRlLCAib3VjaCIpKSwKLSAgICAgICAgICAgICgiXFxVMDAwMTAwMDAiLCBsZW5fd2lkZSkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXFUwMDEwZmZmZiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGxlbl93aWRlLCAib3VjaCIpKSwKLSAgICAgICAgICAgICgiXFxVMDAxMGZmZmYiLCBsZW5fd2lkZSkKLSAgICAgICAgKQotICAgICAgICAjIExvbmUgc3Vycm9nYXRlcyAocmVnYXJkbGVzcyBvZiB1bmljb2RlIHdpZHRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkODAwIiwgMCwgMSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcdWQ4MDAiLCAxKQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoCi0gICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcdWRmZmYiLCAwLCAxLCAib3VjaCIpKSwKLSAgICAgICAgICAgICgiXFx1ZGZmZiIsIDEpCi0gICAgICAgICkKKyAgICAgICAgaWYgU0laRU9GX1dDSEFSX1QgPiAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXFUwMDAxMDAwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAoIlxcVTAwMDEwMDAwIiwgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAxMGZmZmYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXFUwMDEwZmZmZiIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICAjIExvbmUgc3Vycm9nYXRlcyAocmVnYXJkbGVzcyBvZiB1bmljb2RlIHdpZHRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkODAwIiwgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXHVkODAwIiwgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZGZmZiIsIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFx1ZGZmZiIsIDEpCisgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9iYWRoYW5kbGVycmVzdWx0cyhzZWxmKToKICAgICAgICAgcmVzdWx0cyA9ICggNDIsICJmb28iLCAoMSwyLDMpLCAoImZvbyIsIDEsIDMpLCAoImZvbyIsIE5vbmUpLCAoImZvbyIsKSwgKCJmb28iLCAxLCAzKSwgKCJmb28iLCBOb25lKSwgKCJmb28iLCkgKQpAQCAtNjIyLDEyICs2MzAsMTQgQEAKICAgICAgICAgICAgICAgICAoInV0Zi03IiwgYiIreC0iKSwKICAgICAgICAgICAgICAgICAoInVuaWNvZGUtaW50ZXJuYWwiLCBiIlx4MDAiKSwKICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXMuZGVjb2RlLAotICAgICAgICAgICAgICAgICAgICBlbmMsCi0gICAgICAgICAgICAgICAgICAgICJ0ZXN0LmJhZGhhbmRsZXIiCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMuZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QuYmFkaGFuZGxlciIKKyAgICAgICAgICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfbG9va3VwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5zdHJpY3RfZXJyb3JzLCBjb2RlY3MubG9va3VwX2Vycm9yKCJzdHJpY3QiKSkKQEAgLTY3OSw3ICs2ODksNyBAQAogICAgICAgICAjIFB5dGhvbi9jb2RlY3MuYzo6UHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycygpCiAgICAgICAgICMgYW5kIGlubGluZSBpbXBsZW1lbnRhdGlvbnMKICAgICAgICAgdiA9ICgxLCA1LCAxMCwgNTAsIDEwMCwgNTAwLCAxMDAwLCA1MDAwLCAxMDAwMCwgNTAwMDApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlPj0xMDAwMDA6CisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID09IDQ6CiAgICAgICAgICAgICB2ICs9ICgxMDAwMDAsIDUwMDAwMCwgMTAwMDAwMCkKICAgICAgICAgcyA9ICIiLmpvaW4oW2Nocih4KSBmb3IgeCBpbiB2XSkKICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0LnhtbGNoYXJyZWZyZXBsYWNlIiwgY29kZWNzLnhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycykKQEAgLTc0NCw3ICs3NTQsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCB7MHhmZjogTm9uZX0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2RlY29kZSwgYiJceGZmIiwgInN0cmljdCIsIEQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCB7MHhmZjogMHgxMTAwMDB9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2RlY29kZSwgYiJceGZmIiwgInN0cmljdCIsIHsweGZmOiBzeXMubWF4dW5pY29kZSsxfSkKIAogICAgIGRlZiB0ZXN0X2VuY29kZWhlbHBlcihzZWxmKToKICAgICAgICAgIyBlbmhhbmNlIGNvdmVyYWdlIG9mOgpAQCAtODQzLDggKzg1MywxMiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIGhhbmRsZSAlciIgJSBleGMpCiAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5yZXBsYWNpbmciLCByZXBsYWNpbmcpCi0gICAgICAgIGZvciAoZW5jb2RpbmcsIGRhdGEpIGluIGJhZGRhdGE6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRhdGEuZGVjb2RlLCBlbmNvZGluZywgInRlc3QucmVwbGFjaW5nIikKKworICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgIGZvciAoZW5jb2RpbmcsIGRhdGEpIGluIGJhZGRhdGE6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBkYXRhLmRlY29kZShlbmNvZGluZywgInRlc3QucmVwbGFjaW5nIikKIAogICAgICAgICBkZWYgbXV0YXRpbmcoZXhjKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjLCBVbmljb2RlRGVjb2RlRXJyb3IpOgpAQCAtODU1LDggKzg2OSwxMSBAQAogICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QubXV0YXRpbmciLCBtdXRhdGluZykKICAgICAgICAgIyBJZiB0aGUgZGVjb2RlciBkb2Vzbid0IHBpY2sgdXAgdGhlIG1vZGlmaWVkIGlucHV0IHRoZSBmb2xsb3dpbmcKICAgICAgICAgIyB3aWxsIGxlYWQgdG8gYW4gZW5kbGVzcyBsb29wCi0gICAgICAgIGZvciAoZW5jb2RpbmcsIGRhdGEpIGluIGJhZGRhdGE6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRhdGEuZGVjb2RlLCBlbmNvZGluZywgInRlc3QucmVwbGFjaW5nIikKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5kZWNvZGUoZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KENvZGVjQ2FsbGJhY2tUZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggZGNhOWYxMC4uYjA4YzVmYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC01LDU0ICs1LDU3IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfR0IyMzEyKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9HQjIzMTIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2diMjMxMicKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IyMzEyJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diMjMxMicpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ODA0YSIpLAotICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ODA0YVx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4MDRhIiksCisgICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4MDRhXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTgwNGEiKSwKICAgICAgICAgKGIiXHhjMVx4NjQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgKQogCi1jbGFzcyBUZXN0X0dCSyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0JLKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYmsnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diaycpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYmsnKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGFcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YVx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4MDRhIiksCiAgICAgICAgIChiIlx4ODNceDM0XHg4M1x4MzEiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgICgiXHUzMGZiIiwgInN0cmljdCIsIE5vbmUpLAogICAgICkKIAotY2xhc3MgVGVzdF9HQjE4MDMwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9HQjE4MDMwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjE4MDMwJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjE4MDMwJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diMTgwMzAnKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGFcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YVx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODRceDM5XHg4NFx4MzlceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDg0XHgzOVx4ODRceDM5XHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmQ5XHVmZmZkOVx1ODA0YSIpLAogICAgICAgICAoIlx1MzBmYiIsICJzdHJpY3QiLCBiIlx4ODE5XHhhNzkiKSwKKyAgICAgICAgKGIiYWJjXHg4NFx4MzJceDgwXHg4MGRlZiIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZDJcdWZmZmRcdWZmZmRkZWYnKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4MzBceDgxXHgzMGRlZiIsICJzdHJpY3QiLCAnYWJjXHg4MGRlZicpLAorICAgICAgICAoYiJhYmNceDg2XHgzMFx4ODFceDMwZGVmIiwgInJlcGxhY2UiLCAnYWJjXHVmZmZkMFx1ZmZmZDBkZWYnKSwKICAgICApCiAgICAgaGFzX2lzbzEwNjQ2ID0gVHJ1ZQogCi1jbGFzcyBUZXN0X0haKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9IWihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnaHonCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2h6JykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2h6JykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIHRlc3QgJ35cbicgKDMgbGluZXMpCiAgICAgICAgIChiJ1RoaXMgc2VudGVuY2UgaXMgaW4gQVNDSUkuXG4nCkBAIC03NCw5ICs3NywxMSBAQAogICAgICAgICAgJ1x1NWRmMVx1NjI0MFx1NGUwZFx1NmIzMlx1ZmYwY1x1NTJmZlx1NjViZFx1NjViY1x1NGViYVx1MzAwMicKICAgICAgICAgICdCeWUuXG4nKSwKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCi0gICAgICAgIChiJ2FifmNkJywgJ3JlcGxhY2UnLCAnYWJcdUZGRkRkJyksCisgICAgICAgIChiJ2FifmNkJywgJ3JlcGxhY2UnLCAnYWJcdUZGRkRjZCcpLAogICAgICAgICAoYidhYlx4ZmZjZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEY2QnKSwKICAgICAgICAgKGInYWJ+e1x4ODFceDgxXHg0MVx4NDR+fWNkJywgJ3JlcGxhY2UnLCAnYWJcdUZGRkRcdUZGRkRcdTgwNEFjZCcpLAorICAgICAgICAoYidhYn57XHg0MVx4NDR+fWNkJywgJ3JlcGxhY2UnLCAnYWJcdTgwNEFjZCcpLAorICAgICAgICAoYiJhYn57XHg3OVx4NzlceDQxXHg0NH59Y2QiLCAicmVwbGFjZSIsICJhYlx1ZmZmZFx1ZmZmZFx1ODA0YWNkIiksCiAgICAgKQogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQppbmRleCBjY2RjMGI0Li4zMTM2M2Y0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKQEAgLTUsMTggKzUsMTggQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9CaWc1SEtTQ1ModGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0JpZzVIS1NDUyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnYmlnNWhrc2NzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdiaWc1aGtzY3MnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNWhrc2NzJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4YjEwIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4YjEwXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdThiMTAiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdThiMTBcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1OGIxMCIpLAogICAgICkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CmluZGV4IDhjNmU4YTUuLmU0YzE4MzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKQEAgLTMsNyArMyw3IEBACiAjIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBJU08gMjAyMiBlbmNvZGluZ3MuCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIENPTU1PTl9DT0RFQ19URVNUUyA9ICgKQEAgLTEzLDIzICsxMywyMyBAQAogICAgICAgICAoYidhYlx4MUIkZGVmJywgJ3JlcGxhY2UnLCAnYWJcdUZGRkQnKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSVNPMjAyMl9KUCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSVNPMjAyMl9KUChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnaXNvMjAyMl9qcCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdpc28yMDIyX2pwJykKICAgICBjb2RlY3Rlc3RzID0gQ09NTU9OX0NPREVDX1RFU1RTICsgKAogICAgICAgICAoYidhYlx4MUJOZGVmJywgJ3JlcGxhY2UnLCAnYWJceDFCTmRlZicpLAogICAgICkKIAotY2xhc3MgVGVzdF9JU08yMDIyX0pQMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSVNPMjAyMl9KUDIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfanBfMicKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdpc28yMDIyX2pwJykKICAgICBjb2RlY3Rlc3RzID0gQ09NTU9OX0NPREVDX1RFU1RTICsgKAogICAgICAgICAoYidhYlx4MUJOZGVmJywgJ3JlcGxhY2UnLCAnYWJkZWYnKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSVNPMjAyMl9LUih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSVNPMjAyMl9LUihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnaXNvMjAyMl9rcicKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9rcicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdpc28yMDIyX2tyJykKICAgICBjb2RlY3Rlc3RzID0gQ09NTU9OX0NPREVDX1RFU1RTICsgKAogICAgICAgICAoYidhYlx4MUJOZGVmJywgJ3JlcGxhY2UnLCAnYWJceDFCTmRlZicpLAogICAgICkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CmluZGV4IGY1NmEzNzMuLjMwYzllMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQpAQCAtNSw2MCArNSw2NyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0NQOTMyKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9DUDkzMihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5MzInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppcycpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODFceDAwXHg4Mlx4ODQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGY4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmY0NCIpLAotICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmY0NFx1ZmZmZCIpLAotICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0IiwgImlnbm9yZSIsICAiYWJjXHVmZjQ0IiksCisgICAgICAgIChiImFiY1x4ODFceDAwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRceDAwXHVmZjQ0IiksCisgICAgICAgIChiImFiY1x4ODFceDAwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHgwMFx1ZmY0NFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0IiwgImlnbm9yZSIsICAiYWJjXHgwMFx1ZmY0NCIpLAorICAgICAgICAoYiJhYlx4RUJ4eSIsICJyZXBsYWNlIiwgImFiXHVGRkZEeHkiKSwKKyAgICAgICAgKGIiYWJceEYwXHgzOXh5IiwgInJlcGxhY2UiLCAiYWJcdUZGRkQ5eHkiKSwKKyAgICAgICAgKGIiYWJceEVBXHhGMHh5IiwgInJlcGxhY2UiLCAnYWJcdWZmZmRcdWUwMzh5JyksCiAgICAgICAgICMgc2ppcyB2cyBjcDkzMgogICAgICAgICAoYiJcXFx4N2UiLCAicmVwbGFjZSIsICJcXFx4N2UiKSwKICAgICAgICAgKGIiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInJlcGxhY2UiLCAiXHVmZjNjXHUyMjI1XHVmZjBkIiksCiAgICAgKQogCi1jbGFzcyBUZXN0X0VVQ19KSVNYMDIxMyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCitldWNfY29tbW9udGVzdHMgPSAoCisgICAgIyBpbnZhbGlkIGJ5dGVzCisgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCisgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Nzk1NiIpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU3OTU2XHVmZmZkIiksCisgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Nzk1NiIpLAorICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAorICAgIChiImFiY1x4OGZceDgzXHg4MyIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIpLAorICAgIChiIlx4ODJceEZDeHkiLCAicmVwbGFjZSIsICJcdWZmZmRcdWZmZmR4eSIpLAorICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAorICAgIChiIlx4YTFceGMwIiwgInN0cmljdCIsICJcdWZmM2MiKSwKKyAgICAoYiJceGExXHhjMFxcIiwgInN0cmljdCIsICJcdWZmM2NcXCIpLAorICAgIChiIlx4OGVYWSIsICJyZXBsYWNlIiwgIlx1ZmZmZFhZIiksCispCisKK2NsYXNzIFRlc3RfRVVDX0pJU18yMDA0KG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfamlzeDAyMTMnKQotICAgIGNvZGVjdGVzdHMgPSAoCi0gICAgICAgICMgaW52YWxpZCBieXRlcwotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTc5NTYiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTc5NTZcdWZmZmQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Nzk1NiIpLAotICAgICAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmQiKSwKLSAgICAgICAgKGIiXHhjMVx4NjQiLCAic3RyaWN0IiwgTm9uZSksCi0gICAgICAgIChiIlx4YTFceGMwIiwgInN0cmljdCIsICJcdWZmM2MiKSwKLSAgICApCisgICAgZW5jb2RpbmcgPSAnZXVjX2ppc18yMDA0JworICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzCiAgICAgeG1sY2hhcm5hbWV0ZXN0ID0gKAogICAgICAgICAiXHhhYlx1MjExY1x4YmIgPSBcdTIzMjlcdTEyMzRcdTIzMmEiLAogICAgICAgICBiIlx4YTlceGE4JnJlYWw7XHhhOVx4YjIgPSAmbGFuZzsmIzQ2NjA7JnJhbmc7IgogICAgICkKIAotZXVjanBfY29tbW9udGVzdHMgPSAoCi0gICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Nzk1NiIpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2XHVmZmZkIiksCi0gICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Nzk1NiIpLAotICAgIChiImFiY1x4OGZceDgzXHg4MyIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZCIpLAotICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAotKQorY2xhc3MgVGVzdF9FVUNfSklTWDAyMTMobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlbmNvZGluZyA9ICdldWNfamlzeDAyMTMnCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfamlzeDAyMTMnKQorICAgIGNvZGVjdGVzdHMgPSBldWNfY29tbW9udGVzdHMKKyAgICB4bWxjaGFybmFtZXRlc3QgPSAoCisgICAgICAgICJceGFiXHUyMTFjXHhiYiA9IFx1MjMyOVx1MTIzNFx1MjMyYSIsCisgICAgICAgIGIiXHhhOVx4YTgmcmVhbDtceGE5XHhiMiA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCisgICAgKQogCi1jbGFzcyBUZXN0X0VVQ19KUF9DT01QQVQodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAorY2xhc3MgVGVzdF9FVUNfSlBfQ09NUEFUKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2V1Y19qcCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2pwJykKLSAgICBjb2RlY3Rlc3RzID0gZXVjanBfY29tbW9udGVzdHMgKyAoCi0gICAgICAgIChiIlx4YTFceGMwXFwiLCAic3RyaWN0IiwgIlx1ZmYzY1xcIiksCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfanAnKQorICAgIGNvZGVjdGVzdHMgPSBldWNfY29tbW9udGVzdHMgKyAoCiAgICAgICAgICgiXHhhNSIsICJzdHJpY3QiLCBiIlx4NWMiKSwKICAgICAgICAgKCJcdTIwM2UiLCAic3RyaWN0IiwgYiJceDdlIiksCiAgICAgKQpAQCAtNjYsMjkgKzczLDQ4IEBACiBzaGlmdGppc19jb21tb25lbmN0ZXN0cyA9ICgKICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAoYiJhYmNceGY4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0IiksCi0gICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDRcdWZmZmQiKSwKICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0ZGVmIiwgImlnbm9yZSIsICAiYWJjXHVmZjQ0ZGVmIiksCiApCiAKLWNsYXNzIFRlc3RfU0pJU19DT01QQVQodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X1NKSVNfQ09NUEFUKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXMnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppcycpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQogICAgIGNvZGVjdGVzdHMgPSBzaGlmdGppc19jb21tb25lbmN0ZXN0cyArICgKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ZmY0NFx1ZmZmZCIpLAorCiAgICAgICAgIChiIlxcXHg3ZSIsICJzdHJpY3QiLCAiXFxceDdlIiksCiAgICAgICAgIChiIlx4ODFceDVmXHg4MVx4NjFceDgxXHg3YyIsICJzdHJpY3QiLCAiXHVmZjNjXHUyMDE2XHUyMjEyIiksCisgICAgICAgIChiImFiY1x4ODFceDM5IiwgInJlcGxhY2UiLCAgImFiY1x1ZmZmZDkiKSwKKyAgICAgICAgKGIiYWJjXHhFQVx4RkMiLCAicmVwbGFjZSIsICAiYWJjXHVmZmZkXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4RkZceDU4IiwgInJlcGxhY2UiLCAgImFiY1x1ZmZmZFgiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfU0pJU1gwMjEzKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9TSklTXzIwMDQobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGVuY29kaW5nID0gJ3NoaWZ0X2ppc18yMDA0JworICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKKyAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiIlxcXHg3ZSIsICJzdHJpY3QiLCAiXHhhNVx1MjAzZSIpLAorICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAic3RyaWN0IiwgIlxcXHUyMDE2XHUyMjEyIiksCisgICAgICAgIChiImFiY1x4RUFceEZDIiwgInN0cmljdCIsICAiYWJjXHU2NGJmIiksCisgICAgICAgIChiIlx4ODFceDM5eHkiLCAicmVwbGFjZSIsICAiXHVmZmZkOXh5IiksCisgICAgICAgIChiIlx4RkZceDU4eHkiLCAicmVwbGFjZSIsICAiXHVmZmZkWHh5IiksCisgICAgICAgIChiIlx4ODBceDgwXHg4Mlx4ODR4eSIsICJyZXBsYWNlIiwgIlx1ZmZmZFx1ZmZmZFx1ZmY0NHh5IiksCisgICAgICAgIChiIlx4ODBceDgwXHg4Mlx4ODRceDg4eHkiLCAicmVwbGFjZSIsICJcdWZmZmRcdWZmZmRcdWZmNDRcdTU4NjR5IiksCisgICAgICAgIChiIlx4RkNceEZCeHkiLCAicmVwbGFjZSIsICdcdWZmZmRcdTk1YjR5JyksCisgICAgKQorICAgIHhtbGNoYXJuYW1ldGVzdCA9ICgKKyAgICAgICAgIlx4YWJcdTIxMWNceGJiID0gXHUyMzI5XHUxMjM0XHUyMzJhIiwKKyAgICAgICAgYiJceDg1RyZyZWFsO1x4ODVRID0gJmxhbmc7JiM0NjYwOyZyYW5nOyIKKyAgICApCisKK2NsYXNzIFRlc3RfU0pJU1gwMjEzKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXN4MDIxMycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzeDAyMTMnKQotICAgIGNvZGVjdGVzdHMgPSAoCi0gICAgICAgICMgaW52YWxpZCBieXRlcwotICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDRcdWZmZmQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NGRlZiIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NGRlZiIpLAorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzeDAyMTMnKQorICAgIGNvZGVjdGVzdHMgPSBzaGlmdGppc19jb21tb25lbmN0ZXN0cyArICgKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ZmY0NFx1ZmZmZCIpLAorCiAgICAgICAgICMgc2ppcyB2cyBjcDkzMgogICAgICAgICAoYiJcXFx4N2UiLCAicmVwbGFjZSIsICJceGE1XHUyMDNlIiksCiAgICAgICAgIChiIlx4ODFceDVmXHg4MVx4NjFceDgxXHg3YyIsICJyZXBsYWNlIiwgIlx4NWNcdTIwMTZcdTIyMTIiKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CmluZGV4IGRlNGRhN2YuLjRkZDYwNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQpAQCAtNSwzMCArNSwzMCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0NQOTQ5KHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9DUDk0OShtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5NDknCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2NwOTQ5JykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2NwOTQ5JykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjODk0IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjODk0XHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWM4OTQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWM4OTRcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Yzg5NCIpLAogICAgICkKIAotY2xhc3MgVGVzdF9FVUNLUih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfRVVDS1IobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2V1Y19rcicKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2tyJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19rcicpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAnYWJjXHVmZmZkXHVmZmZkXHVjODk0JyksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0XHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdWM4OTQiKSwKIAogICAgICAgICAjIGNvbXBvc2VkIG1ha2UtdXAgc2VxdWVuY2UgZXJyb3JzCkBAIC00MCwyNiArNDAsMzEgQEAKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhNCIsICJzdHJpY3QiLCBOb25lKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhNFx4ZDQiLCAic3RyaWN0IiwgIlx1YzRkNCIpLAogICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhkNHgiLCAic3RyaWN0IiwgIlx1YzRkNHgiKSwKLSAgICAgICAgKGIiYVx4YTRceGQ0XHhhNFx4YjZceGE0IiwgInJlcGxhY2UiLCAiYVx1ZmZmZCIpLAorICAgICAgICAoYiJhXHhhNFx4ZDRceGE0XHhiNlx4YTQiLCAicmVwbGFjZSIsICdhXHVmZmZkJyksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhM1x4YjZceGE0XHhkMFx4YTRceGQ0IiwgInN0cmljdCIsIE5vbmUpLAogICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhM1x4ZDBceGE0XHhkNCIsICJzdHJpY3QiLCBOb25lKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhM1x4ZDQiLCAic3RyaWN0IiwgTm9uZSksCi0gICAgICAgIChiIlx4YTRceGQ0XHhhNFx4ZmZceGE0XHhkMFx4YTRceGQ0IiwgInJlcGxhY2UiLCAiXHVmZmZkIiksCi0gICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhmZlx4YTRceGQ0IiwgInJlcGxhY2UiLCAiXHVmZmZkIiksCi0gICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGZmIiwgInJlcGxhY2UiLCAiXHVmZmZkIiksCisgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4ZmZceGE0XHhkMFx4YTRceGQ0IiwgInJlcGxhY2UiLCAnXHVmZmZkXHU2ZTIxXHVmZmZkXHUzMTYwXHVmZmZkJyksCisgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhmZlx4YTRceGQ0IiwgInJlcGxhY2UiLCAnXHVmZmZkXHU2ZTIxXHViNTQ0XHVmZmZkXHVmZmZkJyksCisgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGZmIiwgInJlcGxhY2UiLCAnXHVmZmZkXHU2ZTIxXHViNTQ0XHU1NzJkXHVmZmZkJyksCisgICAgICAgIChiIlx4YTRceGQ0XHhmZlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGQ0IiwgInJlcGxhY2UiLCAnXHVmZmZkXHVmZmZkXHVmZmZkXHVjNGQ0JyksCiAgICAgICAgIChiIlx4YzFceGM0IiwgInN0cmljdCIsICJcdWM4OTQiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSk9IQUIodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0pPSEFCKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdqb2hhYicKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnam9oYWInKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnam9oYWInKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWNkMjciKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWNkMjdcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Y2QyNyIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Y2QyN1x1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHVjZDI3IiksCisgICAgICAgIChiIlx4RDhhYmMiLCAicmVwbGFjZSIsICAiXHVGRkZEYWJjIiksCisgICAgICAgIChiIlx4RDhceEZGYWJjIiwgInJlcGxhY2UiLCAgIlx1RkZGRFx1RkZGRGFiYyIpLAorICAgICAgICAoYiJceDg0Ynh5IiwgInJlcGxhY2UiLCAgIlx1RkZGRGJ4eSIpLAorICAgICAgICAoYiJceDhDQnh5IiwgInJlcGxhY2UiLCAgIlx1RkZGREJ4eSIpLAogICAgICkKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKaW5kZXggMTJkM2M5Zi4uOTYyNDViNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CkBAIC01LDE4ICs1LDE4IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQmlnNShtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnYmlnNScKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdiaWc1JykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4YjEwIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4YjEwXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdThiMTAiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdThiMTBcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1OGIxMCIpLAogICAgICkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQppbmRleCAwNjM5MTlkLi4xYTc2MWNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQpAQCAtNSwyMSArNSwyMSBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0R0IyMzEyTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEdCMjMxMk1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2diMjMxMicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfnBlcmt5L2kxOG4vRVVDLUNOLlRYVCcKIAotY2xhc3MgVGVzdEdCS01hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RHQktNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYmsnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTLycgXAogICAgICAgICAgICAgICAgICAnTUlDU0ZUL1dJTkRPV1MvQ1A5MzYuVFhUJwogCi1jbGFzcyBUZXN0R0IxODAzME1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RHQjE4MDMwTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjE4MDMwJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3NvdXJjZS5pY3UtcHJvamVjdC5vcmcvcmVwb3MvaWN1L2RhdGEvJyBcCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CmluZGV4IGJiZTFmMmYuLjVmNGU3YzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CkBAIC01LDEwICs1LDEwIEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RCaWc1SEtTQ1NNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0QmlnNUhLU0NTTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzVoa3NjcycKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfnBlcmt5L2kxOG4vQklHNUhLU0NTLTIwMDQuVFhUJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQppbmRleCA2NTJiZDgxLi4xZmRiZjYzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQpAQCAtNSwxMCArNSwxMCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5MzJNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5MzJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDkzMicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZULycgXApAQCAtMjQsMTQgKzI0LDE0IEBACiAgICAgICAgIHN1cG1hcHMuYXBwZW5kKChieXRlcyhbaV0pLCBjaHIoaSsweGZlYzApKSkKIAogCi1jbGFzcyBUZXN0RVVDSlBDT01QQVRNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0RVVDSlBDT01QQVRNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfanAnCiAgICAgbWFwZmlsZW5hbWUgPSAnRVVDLUpQLlRYVCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfnBlcmt5L2kxOG4vRVVDLUpQLlRYVCcKIAogCi1jbGFzcyBUZXN0U0pJU0NPTVBBVE1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RTSklTQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXMnCiAgICAgbWFwZmlsZW5hbWUgPSAnU0hJRlRKSVMuVFhUJwpAQCAtNDYsMTQgKzQ2LDE0IEBACiAgICAgICAgIChiJ1x4ODFfJywgJ1xcJyksCiAgICAgXQogCi1jbGFzcyBUZXN0RVVDSklTWDAyMTNNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0RVVDSklTWDAyMTNNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfamlzeDAyMTMnCiAgICAgbWFwZmlsZW5hbWUgPSAnRVVDLUpJU1gwMjEzLlRYVCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfnBlcmt5L2kxOG4vRVVDLUpJU1gwMjEzLlRYVCcKIAogCi1jbGFzcyBUZXN0U0pJU1gwMjEzTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdFNKSVNYMDIxM01hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXN4MDIxMycKICAgICBtYXBmaWxlbmFtZSA9ICdTSElGVF9KSVNYMDIxMy5UWFQnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CmluZGV4IGQ5MDljOGIuLjAzNTY0MDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CkBAIC01LDE3ICs1LDE3IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RDUDk0OU1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RDUDk0OU1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTQ5JwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy9NSUNTRlQnIFwKICAgICAgICAgICAgICAgICAgJy9XSU5ET1dTL0NQOTQ5LlRYVCcKIAogCi1jbGFzcyBUZXN0RVVDS1JNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0RVVDS1JNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfa3InCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1LUi5UWFQnCkBAIC0yNSw3ICsyNSw3IEBACiAgICAgcGFzc19kZWN0ZXN0ID0gWyhiJ1x4YTRceGQ0JywgJ1x1MzE2NCcpXQogCiAKLWNsYXNzIFRlc3RKT0hBQk1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RKT0hBQk1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2pvaGFiJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvT0JTT0xFVEUvRUFTVEFTSUEvJyBcCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CmluZGV4IDZkYjUwOTEuLjQ0NDY3ZTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CkBAIC01LDE2ICs1LDE2IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RCSUc1TWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEJJRzVNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzUnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9PQlNPTEVURS8nIFwKICAgICAgICAgICAgICAgICAgJ0VBU1RBU0lBL09USEVSL0JJRzUuVFhUJwogCi1jbGFzcyBUZXN0Q1A5NTBNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NTBNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk1MCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZULycgXApAQCAtMjMsNiArMjMsOSBAQAogICAgICAgICAoYidceGEyXHhjYycsICdcdTUzNDEnKSwKICAgICAgICAgKGInXHhhMlx4Y2UnLCAnXHU1MzQ1JyksCiAgICAgXQorICAgIGNvZGVjdGVzdHMgPSAoCisgICAgICAgIChiIlx4RkZ4eSIsICJyZXBsYWNlIiwgICJcdWZmZmR4eSIpLAorICAgICkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQppbmRleCA0MmQwZGEzLi45MzY2MGY3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQpAQCAtMSw4ICsxLDI1IEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCB1bml0dGVzdAoraW1wb3J0IF90ZXN0Y2FwaQogaW1wb3J0IGNvZGVjcworaW1wb3J0IGlvCiBpbXBvcnQgbG9jYWxlCi1pbXBvcnQgc3lzLCBfdGVzdGNhcGksIGlvCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgVklTVEFfT1JfTEFURVIgPSAoc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3IgPj0gNikKK2Vsc2U6CisgICAgVklTVEFfT1JfTEFURVIgPSBGYWxzZQorCit0cnk6CisgICAgaW1wb3J0IGN0eXBlcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGN0eXBlcyA9IE5vbmUKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IC0xCitlbHNlOgorICAgIFNJWkVPRl9XQ0hBUl9UID0gY3R5cGVzLnNpemVvZihjdHlwZXMuY193Y2hhcikKIAogY2xhc3MgUXVldWUob2JqZWN0KToKICAgICAiIiIKQEAgLTY0NCwxMCArNjYxLDExNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ2NwNjUwMDEgaXMgYSBXaW5kb3dzLW9ubHkgY29kZWMnKQorY2xhc3MgQ1A2NTAwMVRlc3QoUmVhZFRlc3QpOgorICAgIGVuY29kaW5nID0gImNwNjUwMDEiCisKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGMzXHhhOVx4ZTJceDgyXHhhYycpLAorICAgICAgICAgICAgKCdcVTAwMTBmZmZmJywgJ3N0cmljdCcsIGInXHhmNFx4OGZceGJmXHhiZicpLAorICAgICAgICBdCisgICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgorICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCisgICAgICAgICAgICApKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKCgnXHVkYzgwJywgJ3N0cmljdCcsIGInXHhlZFx4YjJceDgwJykpCisgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBlbmNvZGVkID0gdGV4dC5lbmNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGVuY29kZSAlYSB0byBjcDY1MDAxIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGVycm9ycywgZXJyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWQsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAnJWEuZW5jb2RlKCJjcDY1MDAxIiwgJXIpPSVhICE9ICVhJworICAgICAgICAgICAgICAgICAgICAlICh0ZXh0LCBlcnJvcnMsIGVuY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICB0ZXh0LmVuY29kZSwgImNwNjUwMDEiLCBlcnJvcnMpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1x4YzNceGE5XHhlMlx4ODJceGFjJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYidceGY0XHg4Zlx4YmZceGJmJywgJ3N0cmljdCcsICdcVTAwMTBmZmZmJyksCisgICAgICAgICAgICAoYidceGVmXHhiZlx4YmQnLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgKGInW1x4YzNceGE5XScsICdzdHJpY3QnLCAnW1x4ZTldJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgIF0KKyAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsICdbXHVkYzgwXScpLAorICAgICAgICAgICAgKSkKKyAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IHJhdy5kZWNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGRlY29kZSAlYSBmcm9tIGNwNjUwMDEgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmRlY29kZSgiY3A2NTAwMSIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAocmF3LCBlcnJvcnMsIGRlY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICByYXcuZGVjb2RlLCAnY3A2NTAwMScsIGVycm9ycykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKKyAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgIlx1ZDgwMCIuZW5jb2RlLCAiY3A2NTAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYiJceGVkXHhhMFx4ODAiLmRlY29kZSwgImNwNjUwMDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tcXHVkYzgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAieG1sY2hhcnJlZnJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1smIzU2NDQ4O10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1x4ODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJpZ25vcmUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbP10nKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQorICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjXHVkODAwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCisKKworCiBjbGFzcyBVVEY3VGVzdChSZWFkVGVzdCk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTciCiAKQEAgLTkwOCw2MSArMTAzMCw4MCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmksIHB1bnkuZGVjb2RlKCJwdW55Y29kZSIpKQogCiBjbGFzcyBVbmljb2RlSW50ZXJuYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2J1ZzEyNTEzMDAoc2VsZik6CiAgICAgICAgICMgRGVjb2Rpbmcgd2l0aCB1bmljb2RlX2ludGVybmFsIHVzZWQgdG8gbm90IGNvcnJlY3RseSBoYW5kbGUgImNvZGUKICAgICAgICAgIyBwb2ludHMiIGFib3ZlIDB4MTBmZmZmIG9uIFVDUy00IGJ1aWxkcy4KLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBvayA9IFsKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgxMFx4ZmZceGZmIiwgIlxVMDAxMGZmZmYiKSwKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgwMFx4MDFceDAxIiwgIlxVMDAwMDAxMDEiKSwKLSAgICAgICAgICAgICAgICAoYiIiLCAiIiksCi0gICAgICAgICAgICBdCi0gICAgICAgICAgICBub3Rfb2sgPSBbCi0gICAgICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKLSAgICAgICAgICAgICAgICBiIlx4ODBceDAwXHgwMFx4MDAiLAotICAgICAgICAgICAgICAgIGIiXHg4MVx4MDBceDAwXHgwMCIsCi0gICAgICAgICAgICAgICAgYiJceDAwIiwKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIiwKLSAgICAgICAgICAgIF0KLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgotICAgICAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6Ci0gICAgICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICBvayA9IFsKKyAgICAgICAgICAgIChiIlx4MDBceDEwXHhmZlx4ZmYiLCAiXFUwMDEwZmZmZiIpLAorICAgICAgICAgICAgKGIiXHgwMFx4MDBceDAxXHgwMSIsICJcVTAwMDAwMTAxIiksCisgICAgICAgICAgICAoYiIiLCAiIiksCisgICAgICAgIF0KKyAgICAgICAgbm90X29rID0gWworICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKKyAgICAgICAgICAgIGIiXHg4MFx4MDBceDAwXHgwMCIsCisgICAgICAgICAgICBiIlx4ODFceDAwXHgwMFx4MDAiLAorICAgICAgICAgICAgYiJceDAwIiwKKyAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLAorICAgICAgICBdCisgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgorICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKKyAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBpbnRlcm5hbC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKSkKLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6Ci0gICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWwgPSBieXRlcyhyZXZlcnNlZChpbnRlcm5hbCkpCisgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6CisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgorICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBpbnRlcm5hbC5kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CisgICAgICAgICAgICBpbnZhbGlkID0gYiJceDAwXHgwMFx4MTFceDAwIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MTFceDAwXHgwMCIKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkLmRlY29kZSwgInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW52YWxpZC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHVmZmZkJykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yX2F0dHJpYnV0ZXMoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgdHJ5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCd1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIi5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBleDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIiwgZXgub2JqZWN0KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgZXguc3RhcnQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHgwMFx4MDBceDAwXHgwMFx4MDBceDExXHgxMVx4MDAiLCBleC5vYmplY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGV4LnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9kZWNvZGVfY2FsbGJhY2soc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJVbmljb2RlSW50ZXJuYWxUZXN0IiwgY29kZWNzLmlnbm9yZV9lcnJvcnMpCi0gICAgICAgICAgICBkZWNvZGVyID0gY29kZWNzLmdldGRlY29kZXIoInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoIlVuaWNvZGVJbnRlcm5hbFRlc3QiLCBjb2RlY3MuaWdub3JlX2Vycm9ycykKKyAgICAgICAgZGVjb2RlciA9IGNvZGVjcy5nZXRkZWNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIGFiID0gImFiIi5lbmNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKS5kZWNvZGUoKQogICAgICAgICAgICAgaWdub3JlZCA9IGRlY29kZXIoYnl0ZXMoIiVzXHgyMlx4MjJceDIyXHgyMiVzIiAlIChhYls6NF0sIGFiWzQ6XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNjaWkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlSW50ZXJuYWxUZXN0IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJhYiIsIDEyKSwgaWdub3JlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoImFiIiwgMTIpLCBpZ25vcmVkKQogCiAgICAgZGVmIHRlc3RfZW5jb2RlX2xlbmd0aChzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAzNzM5Ci0gICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoIlx4ZTlcdTAxNDIiKVsxXSwgMikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgSXNzdWUgMzczOQorICAgICAgICAgICAgZW5jb2RlciA9IGNvZGVjcy5nZXRlbmNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyKCJceGU5XHUwMTQyIilbMV0sIDIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZXNjYXBlX2VuY29kZShicidceDAwJylbMV0sIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZW5jb2RlKGJyJ1x4MDAnKVsxXSwgNCkKIAogIyBGcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vZHJhZnQtam9zZWZzc29uLWlkbi10ZXN0LXZlY3RvcnMuaHRtbAogbmFtZXByZXBfdGVzdHMgPSBbCkBAIC0xMjg2LDcgKzE0MjcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVmLnJlYWQoKSwgYidcXFx4ZDVcblx4MDBceDAwXHhhZScpCiAKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBlZiA9IGNvZGVjcy5FbmNvZGVkRmlsZShmLCAndXRmLTgnLCAnbGF0aW4xJykKKyAgICAgICAgZWYgPSBjb2RlY3MuRW5jb2RlZEZpbGUoZiwgJ3V0Zi04JywgJ2xhdGluLTEnKQogICAgICAgICBlZi53cml0ZShiJ1x4YzNceGJjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldHZhbHVlKCksIGInXHhmYycpCiAKQEAgLTE0MTgsMTAgKzE1NTksMTMgQEAKICAgICAgICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gImxhdGluXzEiOgogICAgICAgICAgICAgICAgIG5hbWUgPSAibGF0aW5fMSIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RpbmcucmVwbGFjZSgiXyIsICItIiksIG5hbWUucmVwbGFjZSgiXyIsICItIikpCi0gICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbGVuKHMpLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoc2l6ZSwgbGVuKHMpLCBlbmNvZGluZykpCi0gICAgICAgICAgICAoY2hhcnMsIHNpemUpID0gY29kZWNzLmdldGRlY29kZXIoZW5jb2RpbmcpKGIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKKworICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihzKSwgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKHNpemUsIGxlbihzKSwgZW5jb2RpbmcpKQorICAgICAgICAgICAgICAgIChjaGFycywgc2l6ZSkgPSBjb2RlY3MuZ2V0ZGVjb2RlcihlbmNvZGluZykoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKIAogICAgICAgICAgICAgaWYgZW5jb2Rpbmcgbm90IGluIGJyb2tlbl91bmljb2RlX3dpdGhfc3RyZWFtczoKICAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cmVhbSByZWFkZXIvd3JpdGVyCkBAIC0xNTI1LDcgKzE2NjksOSBAQAogICAgIGRlZiB0ZXN0X2JhZF9lbmNvZGVfYXJncyhzZWxmKToKICAgICAgICAgZm9yIGVuY29kaW5nIGluIGFsbF91bmljb2RlX2VuY29kaW5nczoKICAgICAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZW5jb2RlcikKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlbmNvZGVyKQogCiAgICAgZGVmIHRlc3RfZW5jb2RpbmdfbWFwX3R5cGVfaW5pdGlhbGl6ZWQoc2VsZik6CiAgICAgICAgIGZyb20gZW5jb2RpbmdzIGltcG9ydCBjcDExNDAKQEAgLTE1NDgsNiArMTY5NCwxMSBAQAogICAgICAgICAgICAgKCJhYmMiLCAzKQogICAgICAgICApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLCAiXFUwMDEwRkZGRmJjIiksCisgICAgICAgICAgICAoIlxVMDAxMEZGRkZiYyIsIDMpCisgICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsICJhYiIKICAgICAgICAgKQpAQCAtMTY1Niw5ICsxODA3LDE1IEBACiAgICAgICAgICAgICAoIlxVMDAxMEZGRkZiYyIsIDMpCiAgICAgICAgICkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IHN5cy5tYXh1bmljb2RlLCAxOiBiLCAyOiBjfSksCisgICAgICAgICAgICAoY2hyKHN5cy5tYXh1bmljb2RlKSArICJiYyIsIDMpCisgICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAweDExMDAwMCwgMTogYiwgMjogY30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IHN5cy5tYXh1bmljb2RlICsgMSwgMTogYiwgMjogY30KICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKQEAgLTE3MjIsNiArMTg3OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUoYnIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsIGJyIlxVMDAxMTAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCiBjbGFzcyBTdXJyb2dhdGVFc2NhcGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3V0Zjgoc2VsZik6CkBAIC0xNzUyLDcgKzE5MTUsNyBAQAogCiAgICAgZGVmIHRlc3RfbGF0aW4xKHNlbGYpOgogICAgICAgICAjIElzc3VlNjM3MwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4xIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4tMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZTRceGViXHhlZlx4ZjZceGZjIikKIAogCkBAIC0xODYxLDYgKzIwMjQsMTU1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvdXQsIGIiXHg4MCIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAnY29kZSBwYWdlcyBhcmUgc3BlY2lmaWMgdG8gV2luZG93cycpCitjbGFzcyBDb2RlUGFnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQ1BfVVRGOCBpcyBhbHJlYWR5IHRlc3RlZCBieSBDUDY1MDAxVGVzdAorICAgIENQX1VURjggPSA2NTAwMQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb2RlX3BhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCAtMSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgLTEsIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDEyMywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCAxMjMsIGInYScpCisKKyAgICBkZWYgdGVzdF9jb2RlX3BhZ2VfbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRW5jb2RlRXJyb3IsICdjcDkzMicsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgOTMyLCAnXHhmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnY3A5MzInLAorICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDkzMiwgYidceDgxXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnQ1BfVVRGOCcsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgc2VsZi5DUF9VVEY4LCBiJ1x4ZmYnKQorCisgICAgZGVmIGNoZWNrX2RlY29kZShzZWxmLCBjcCwgdGVzdHMpOgorICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoY3AsIHJhdywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBkZWNvZGUgJWEgZnJvbSAiY3AlcyIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBjcCwgZXJyb3JzLCBlcnIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZFswXSwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICclYS5kZWNvZGUoImNwJXMiLCAlcik9JWEgIT0gJWEnCisgICAgICAgICAgICAgICAgICAgICUgKHJhdywgY3AsIGVycm9ycywgZGVjb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgICMgYXNzZXJ0IDAgPD0gZGVjb2RlZFsxXSA8PSBsZW4ocmF3KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGRlY29kZWRbMV0sIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb2RlZFsxXSwgbGVuKHJhdykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycykKKworICAgIGRlZiBjaGVja19lbmNvZGUoc2VsZiwgY3AsIHRlc3RzKToKKyAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2VuY29kZShjcCwgdGV4dCwgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBlbmNvZGUgJWEgdG8gImNwJXMiIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGNwLCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWzBdLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmVuY29kZSgiY3AlcyIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAodGV4dCwgY3AsIGVycm9ycywgZW5jb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFsxXSwgbGVuKHRleHQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCBjcCwgdGV4dCwgZXJyb3JzKQorCisgICAgZGVmIHRlc3RfY3A5MzIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKDkzMiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHVmZjQ0XHU5YTNlJywgJ3N0cmljdCcsIGInXHg4Mlx4ODRceGU5XHg4MCcpLAorICAgICAgICAgICAgIyB0ZXN0IGVycm9yIGhhbmRsZXJzCisgICAgICAgICAgICAoJ1x4ZmYnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1tceGZmXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdyZXBsYWNlJywgYidbeV0nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY10nLCAncmVwbGFjZScsIGInWz9dJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgYidbXFx4ZmZdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjMjU1O10nKSwKKyAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHg4Mlx4ODRceGU5XHg4MCcsICdzdHJpY3QnLCAnXHVmZjQ0XHU5YTNlJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ2lnbm9yZScsICdceDAwYWJjJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdyZXBsYWNlJywgJ1x1ZmZmZFx4MDBhYmMnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwMTI1MihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoMTI1MiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGU5XHg4MCcpLAorICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIGInXHhmZicpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1x1MDE0MScsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAncmVwbGFjZScsIGInTCcpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSgxMjUyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHhlOVx4ODAnLCAnc3RyaWN0JywgJ1x4ZTlcdTIwYWMnKSwKKyAgICAgICAgICAgIChiJ1x4ZmYnLCAnc3RyaWN0JywgJ1x4ZmYnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwX3V0Zjcoc2VsZik6CisgICAgICAgIGNwID0gNjUwMDAKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoY3AsICgKKyAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInK0FPa2dyQS0nKSwKKyAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCAgYicrMi8vZi93LScpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgYicrM0lBLScpLAorICAgICAgICAgICAgKCdcdWZmZmQnLCAnc3RyaWN0JywgYicrLy8wLScpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZShjcCwgKAorICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJytBT2tnckEtJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYicrMi8vZi93LScsICdzdHJpY3QnLCAnXFUwMDEwZmZmZicpLAorICAgICAgICAgICAgKGInKzNJQS0nLCAnc3RyaWN0JywgJ1x1ZGM4MCcpLAorICAgICAgICAgICAgKGInKy8vMC0nLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCisgICAgICAgICAgICAoYidbKy9dJywgJ3N0cmljdCcsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N0cmljdCcsICdbXHhmZl0nKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X211bHRpYnl0ZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidceDg0XHhlOVx4ODAnLCAnaWdub3JlJywgJ1x1OWEzZScpLAorICAgICAgICAgICAgKGInXHg4NFx4ZTlceDgwJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHU5YTNlJyksCisgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAnaWdub3JlJywgJ1xVMDAxMGZmZmYnKSwKKyAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ3JlcGxhY2UnLCAnXHVmZmZkXFUwMDEwZmZmZicpLAorICAgICAgICApKQorICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCisgICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAorICAgICAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsKHNlbGYpOgorICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLCBiJ1x4ODInLCAnc3RyaWN0JywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCcnLCAwKSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGU5XHg4MFx4ZTknLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnXHU5YTNlJywgMikpCisKKyAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlOVx4ODBceGU5XHg4MCcsICdzdHJpY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdcdTlhM2VcdTlhM2UnLCA0KSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidhYmMnLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnYWJjJywgMykpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBVVEYzMlRlc3QsCkBAIC0xODcxLDYgKzIxODMsNyBAQAogICAgICAgICBVVEYxNkJFVGVzdCwKICAgICAgICAgVVRGOFRlc3QsCiAgICAgICAgIFVURjhTaWdUZXN0LAorICAgICAgICBDUDY1MDAxVGVzdCwKICAgICAgICAgVVRGN1Rlc3QsCiAgICAgICAgIFVURjE2RXhUZXN0LAogICAgICAgICBSZWFkQnVmZmVyVGVzdCwKQEAgLTE4ODksNiArMjIwMiw3IEBACiAgICAgICAgIFN1cnJvZ2F0ZUVzY2FwZVRlc3QsCiAgICAgICAgIEJvbVRlc3QsCiAgICAgICAgIFRyYW5zZm9ybUNvZGVjVGVzdCwKKyAgICAgICAgQ29kZVBhZ2VUZXN0LAogICAgICkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CmluZGV4IGY5ZGIwYjQuLmRmZDU0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CkBAIC0xLDcgKzEsNiBAQAotCiBpbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCB1bmxvYWQKLWltcG9ydCBvcywgc3lzCitpbXBvcnQgaW1wb3J0bGliLCBvcywgc3lzCiAKIGNsYXNzIENvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2JhZF9jb2Rpbmcoc2VsZik6CkBAIC00MCw2ICszOSw3IEBACiAgICAgICAgICAgICBmLndyaXRlKCInQSB2ZXJ5IGxvbmcgc3RyaW5nICVzJ1xuIiAlICgiWCIgKiAxMDAwKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CmluZGV4IDhkYzU1NTkuLjg4YzMxMjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQpAQCAtMSw2ICsxLDcgQEAKICIiIlVuaXQgdGVzdHMgZm9yIGNvbGxlY3Rpb25zLnB5LiIiIgogCiBpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QsIG9wZXJhdG9yCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmb3JnZXQsIHVubGluawogaW1wb3J0IGluc3BlY3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgQ291bnRlciwgT3JkZXJlZERpY3QsIF9jb3VudF9lbGVtZW50cwpAQCAtMTAsMjEgKzExLDIwIEBACiBpbXBvcnQga2V5d29yZAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBfQ2hhaW5NYXAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBTZXQsIE11dGFibGVTZXQKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3LCBVc2VyRGljdAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQnl0ZVN0cmluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckRpY3QKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvcgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgTXV0YWJsZVNlcXVlbmNlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgX0NoYWluTWFwIChoZWxwZXIgY2xhc3MgZm9yIGNvbmZpZ3BhcnNlcikKKyMjIyBDaGFpbk1hcCAoaGVscGVyIGNsYXNzIGZvciBjb25maWdwYXJzZXIgYW5kIHRoZSBzdHJpbmcgbW9kdWxlKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotQ2hhaW5NYXAgPSBfQ2hhaW5NYXAgICMgcmVuYW1lIHRvIGtlZXAgdGVzdCBjb2RlIGluIHN5bmMgd2l0aCAzLjMgdmVyc2lvbgotCiBjbGFzcyBUZXN0Q2hhaW5NYXAodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgpAQCAtMTI4LDYgKzEyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19tb2R1bGVfXywgX19uYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19nZXRpdGVtX18sIHR1cGxlLl9fZ2V0aXRlbV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9maWVsZHMsICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NsYXNzIFBvaW50KHR1cGxlKScsIFBvaW50Ll9zb3VyY2UpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2FiYyUnLCAnZWZnIGdoaScpICAgICAgICMgdHlwZSBoYXMgbm9uLWFscGhhIGNoYXIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2NsYXNzJywgJ2VmZyBnaGknKSAgICAgICMgdHlwZSBoYXMga2V5d29yZApAQCAtMzI3LDYgKzMyOCwxNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQigxKSksICdCKHg9MSknKQogCisgICAgZGVmIHRlc3Rfc291cmNlKHNlbGYpOgorICAgICAgICAjIHZlcmlmeSB0aGF0IF9zb3VyY2UgY2FuIGJlIHJ1biB0aHJvdWdoIGV4ZWMoKQorICAgICAgICB0bXAgPSBuYW1lZHR1cGxlKCdOVENvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgcmVtb3ZlIGFydGlmYWN0cyBmcm9tIG90aGVyIHRlc3RzCisgICAgICAgIGV4ZWModG1wLl9zb3VyY2UsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignTlRDb2xvcicsIGdsb2JhbHMoKSkKKyAgICAgICAgYyA9IE5UQ29sb3IoMTAsIDIwLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSksICgxMCwgMjAsIDMwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVENvbG9yLl9maWVsZHMsICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSkKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgY2xlYW4tdXAgYWZ0ZXIgdGhpcyB0ZXN0CisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBBYnN0cmFjdCBCYXNlIENsYXNzZXMKQEAgLTcyOSw2ICs3NDEsNDQgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKE11dGFibGVTZXF1ZW5jZSwgJ19fY29udGFpbnNfXycsICdfX2l0ZXJfXycsCiAgICAgICAgICAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2RlbGl0ZW1fXycsICdpbnNlcnQnKQogCisgICAgZGVmIHRlc3RfTXV0YWJsZVNlcXVlbmNlX21peGlucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBtaXhpbnMgb2YgTXV0YWJsZVNlcXVlbmNlIGJ5IGNyZWF0aW5nIGEgbWltaW5hbCBjb25jcmV0ZQorICAgICAgICAjIGNsYXNzIGluaGVyaXRlZCBmcm9tIGl0LgorICAgICAgICBjbGFzcyBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcyhNdXRhYmxlU2VxdWVuY2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0ID0gW10KKworICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3RbaW5kZXhdID0gdmFsdWUKKworICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sc3RbaW5kZXhdCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCisKKyAgICAgICAgICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYubHN0W2luZGV4XQorCisgICAgICAgICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3QuaW5zZXJ0KGluZGV4LCB2YWx1ZSkKKworICAgICAgICBtc3MgPSBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcygpCisgICAgICAgIG1zcy5hcHBlbmQoMCkKKyAgICAgICAgbXNzLmV4dGVuZCgoMSwgMiwgMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAzKQorICAgICAgICBtc3MucmV2ZXJzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAxKQorICAgICAgICBtc3MucG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNzKSwgNCkKKyAgICAgICAgbXNzLnJlbW92ZSgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCAzKQorICAgICAgICBtc3MgKz0gKDEwLCAyMCwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWy0xXSwgMzApCisgICAgICAgIG1zcy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDApCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQ291bnRlcgpAQCAtODgyLDYgKzkzMiwyNyBAQAogICAgICAgICAgICAgICAgIHNldF9yZXN1bHQgPSBzZXRvcChzZXQocC5lbGVtZW50cygpKSwgc2V0KHEuZWxlbWVudHMoKSkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudGVyX3Jlc3VsdCwgZGljdC5mcm9ta2V5cyhzZXRfcmVzdWx0LCAxKSkKIAorICAgIGRlZiB0ZXN0X2lucGxhY2Vfb3BlcmF0aW9ucyhzZWxmKToKKyAgICAgICAgZWxlbWVudHMgPSAnYWJjZCcKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICAjIHRlc3QgcmFuZG9tIHBhaXJzIG9mIG11bHRpc2V0cworICAgICAgICAgICAgcCA9IENvdW50ZXIoZGljdCgoZWxlbSwgcmFuZHJhbmdlKC0yLDQpKSBmb3IgZWxlbSBpbiBlbGVtZW50cykpCisgICAgICAgICAgICBwLnVwZGF0ZShlPTEsIGY9LTEsIGc9MCkKKyAgICAgICAgICAgIHEgPSBDb3VudGVyKGRpY3QoKGVsZW0sIHJhbmRyYW5nZSgtMiw0KSkgZm9yIGVsZW0gaW4gZWxlbWVudHMpKQorICAgICAgICAgICAgcS51cGRhdGUoaD0xLCBpPS0xLCBqPTApCisgICAgICAgICAgICBmb3IgaW5wbGFjZV9vcCwgcmVndWxhcl9vcCBpbiBbCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pYWRkX18sIENvdW50ZXIuX19hZGRfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pc3ViX18sIENvdW50ZXIuX19zdWJfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pb3JfXywgQ291bnRlci5fX29yX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faWFuZF9fLCBDb3VudGVyLl9fYW5kX18pLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgICAgICBjID0gcC5jb3B5KCkKKyAgICAgICAgICAgICAgICBjX2lkID0gaWQoYykKKyAgICAgICAgICAgICAgICByZWd1bGFyX3Jlc3VsdCA9IHJlZ3VsYXJfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBpbnBsYWNlX3Jlc3VsdCA9IGlucGxhY2Vfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucGxhY2VfcmVzdWx0LCByZWd1bGFyX3Jlc3VsdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGlucGxhY2VfcmVzdWx0KSwgY19pZCkKKwogICAgIGRlZiB0ZXN0X3N1YnRyYWN0KHNlbGYpOgogICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQogICAgICAgICBjLnN1YnRyYWN0KGE9MSwgYj0yLCBjPS0zLCBkPTEwLCBlPTIwLCBmPTMwLCBoPS01MCkKQEAgLTg5Myw2ICs5NjQsMTEgQEAKICAgICAgICAgYy5zdWJ0cmFjdCgnYWFhYWJiY2NlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBDb3VudGVyKGE9LTEsIGI9MCwgYz0tMSwgZD0xLCBlPS0xKSkKIAorICAgIGRlZiB0ZXN0X3VuYXJ5KHNlbGYpOgorICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QoK2MpLCBkaWN0KGM9NSwgZD0xMCwgZT0xNSwgZz00MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCgtYyksIGRpY3QoYT01KSkKKwogICAgIGRlZiB0ZXN0X3JlcHJfbm9uc29ydGFibGUoc2VsZik6CiAgICAgICAgIGMgPSBDb3VudGVyKGE9MiwgYj1Ob25lKQogICAgICAgICByID0gcmVwcihjKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CmluZGV4IDU4ZWYyOTcuLjcyMzQyZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKQEAgLTEsMTAgKzEsMTcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IF9hc3QKK2ltcG9ydCB0eXBlcwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIGNvbXBpbGVfc2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIGNvbXBpbGUoc291cmNlLCAiPHNpbmdsZT4iLCAic2luZ2xlIikKKworICAgIGRlZiBhc3NlcnRJbnZhbGlkU2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLmNvbXBpbGVfc2luZ2xlLCBzb3VyY2UpCisKICAgICBkZWYgdGVzdF9ub19lbmRpbmdfbmV3bGluZShzZWxmKToKICAgICAgICAgY29tcGlsZSgiaGkiLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICBjb21waWxlKCJoaVxyIiwgIjx0ZXN0PiIsICJleGVjIikKQEAgLTQzMyw2ICs0NDAsMzkgQEAKICAgICAgICAgYXN0LmJvZHkgPSBbX2FzdC5Cb29sT3AoKV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBhc3QsICc8YXN0PicsICdleGVjJykKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NhbWVfZmlsZW5hbWVfdXNlZChzZWxmKToKKyAgICAgICAgcyA9ICIiImRlZiBmKCk6IHBhc3NcbmRlZiBnKCk6IHBhc3MiIiIKKyAgICAgICAgYyA9IGNvbXBpbGUocywgIm15ZmlsZSIsICJleGVjIikKKyAgICAgICAgZm9yIG9iaiBpbiBjLmNvX2NvbnN0czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Db2RlVHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvYmouY29fZmlsZW5hbWUsIGMuY29fZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIlxuMSArIDIiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcblxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcdFx0XG4iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlx0XHRcbiAgICAgICAgIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDIgIyBvbmUgcGx1cyB0d28iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxOyAyIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiaW1wb3J0IHN5czsgc3lzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiZGVmIGYoKTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJ3aGlsZSBGYWxzZTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJpZiB4OlxuICAgZih4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImlmIHg6XG4gICBmKHgpXG5lbHNlOlxuICAgZyh4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImNsYXNzIFQ6XG4gICBwYXNzIikKKworICAgIGRlZiB0ZXN0X2JhZF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJzFcbjInKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2RlZiBmKCk6IHBhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2EgPSAxM1xuYiA9IDE4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZGVsIHhcbmRlbCB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdmKClcbmcoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG4jIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG54eSAjIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgneCA9IDUgIyBjb21tZW50XG54ID0gNlxuJykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTcGVjaWZpY3MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IDJhZmE5MzguLjZhZTQ1MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC0xOSw3ICsxOSw3IEBACiBmcm9tIGNvbmN1cnJlbnQgaW1wb3J0IGZ1dHVyZXMKIGZyb20gY29uY3VycmVudC5mdXR1cmVzLl9iYXNlIGltcG9ydCAoCiAgICAgUEVORElORywgUlVOTklORywgQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVELCBGSU5JU0hFRCwgRnV0dXJlKQotaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcy5wcm9jZXNzCitmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcy5wcm9jZXNzIGltcG9ydCBCcm9rZW5Qcm9jZXNzUG9vbAogCiAKIGRlZiBjcmVhdGVfZnV0dXJlKHN0YXRlPVBFTkRJTkcsIGV4Y2VwdGlvbj1Ob25lLCByZXN1bHQ9Tm9uZSk6CkBAIC0zNCw3ICszNCw3IEBACiBSVU5OSU5HX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9UlVOTklORykKIENBTkNFTExFRF9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRCkKIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1DQU5DRUxMRURfQU5EX05PVElGSUVEKQotRVhDRVBUSU9OX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1JT0Vycm9yKCkpCitFWENFUFRJT05fRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgZXhjZXB0aW9uPU9TRXJyb3IoKSkKIFNVQ0NFU1NGVUxfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgcmVzdWx0PTQyKQogCiAKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgICAgICBwcm9jZXNzZXMgPSBzZWxmLmV4ZWN1dG9yLl9wcm9jZXNzZXMKICAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bigpCiAKLSAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBwLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3NodXRkb3duKHNlbGYpOgpAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZS5tYXAoYWJzLCByYW5nZSgtNSwgNSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzUsIDQsIDMsIDIsIDEsIDAsIDEsIDIsIDMsIDRdKQogCi0gICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICAgcC5qb2luKCkKIAogICAgIGRlZiB0ZXN0X2RlbF9zaHV0ZG93bihzZWxmKToKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICBkZWwgZXhlY3V0b3IKIAogICAgICAgICBxdWV1ZV9tYW5hZ2VtZW50X3RocmVhZC5qb2luKCkKLSAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBwLmpvaW4oKQogCiAKQEAgLTI2OCwxNCArMjY4LDE0IEBACiAKICAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgogICAgICAgICBmdXR1cmUxID0gc2VsZi5leGVjdXRvci5zdWJtaXQobXVsLCA2LCA3KQotICAgICAgICBmdXR1cmUyID0gc2VsZi5leGVjdXRvci5zdWJtaXQodGltZS5zbGVlcCwgMykKKyAgICAgICAgZnV0dXJlMiA9IHNlbGYuZXhlY3V0b3Iuc3VibWl0KHRpbWUuc2xlZXAsIDYpCiAKICAgICAgICAgZmluaXNoZWQsIHBlbmRpbmcgPSBmdXR1cmVzLndhaXQoCiAgICAgICAgICAgICAgICAgW0NBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLAogICAgICAgICAgICAgICAgICBFWENFUFRJT05fRlVUVVJFLAogICAgICAgICAgICAgICAgICBTVUNDRVNTRlVMX0ZVVFVSRSwKICAgICAgICAgICAgICAgICAgZnV0dXJlMSwgZnV0dXJlMl0sCi0gICAgICAgICAgICAgICAgdGltZW91dD0xLjUsCisgICAgICAgICAgICAgICAgdGltZW91dD01LAogICAgICAgICAgICAgICAgIHJldHVybl93aGVuPWZ1dHVyZXMuQUxMX0NPTVBMRVRFRCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChbQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUsCkBAIC0zNzksOCArMzc5LDggQEAKICAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBpIGluIHNlbGYuZXhlY3V0b3IubWFwKHRpbWUuc2xlZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEuNSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgNl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTUpOgogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGkpCiAgICAgICAgIGV4Y2VwdCBmdXR1cmVzLlRpbWVvdXRFcnJvcjoKICAgICAgICAgICAgIHBhc3MKQEAgLTM4OSwxMyArMzg5LDM4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbTm9uZSwgTm9uZV0sIHJlc3VsdHMpCiAKKyAgICBkZWYgdGVzdF9zaHV0ZG93bl9yYWNlX2lzc3VlMTI0NTYoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEyNDU2OiByYWNlIGNvbmRpdGlvbiBhdCBzaHV0ZG93biB3aGVyZSB0cnlpbmcgdG8gcG9zdCBhCisgICAgICAgICMgc2VudGluZWwgaW4gdGhlIGNhbGwgcXVldWUgYmxvY2tzICh0aGUgcXVldWUgaXMgZnVsbCB3aGlsZSBwcm9jZXNzZXMKKyAgICAgICAgIyBoYXZlIGV4aXRlZCkuCisgICAgICAgIHNlbGYuZXhlY3V0b3IubWFwKHN0ciwgWzJdICogKHNlbGYud29ya2VyX2NvdW50ICsgMSkpCisgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24oKQorCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvclRlc3QoVGhyZWFkUG9vbE1peGluLCBFeGVjdXRvclRlc3QpOgotICAgIHBhc3MKKyAgICBkZWYgdGVzdF9tYXBfc3VibWl0c193aXRob3V0X2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdmVyaWZ5aW5nIGlzc3VlIDExNzc3LiIiIgorICAgICAgICBmaW5pc2hlZCA9IFtdCisgICAgICAgIGRlZiByZWNvcmRfZmluaXNoZWQobik6CisgICAgICAgICAgICBmaW5pc2hlZC5hcHBlbmQobikKKworICAgICAgICBzZWxmLmV4ZWN1dG9yLm1hcChyZWNvcmRfZmluaXNoZWQsIHJhbmdlKDEwKSkKKyAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bih3YWl0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaW5pc2hlZCwgcmFuZ2UoMTApKQogCiAKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3JUZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yVGVzdCk6Ci0gICAgcGFzcworICAgIGRlZiB0ZXN0X2tpbGxlZF9jaGlsZChzZWxmKToKKyAgICAgICAgIyBXaGVuIGEgY2hpbGQgcHJvY2VzcyBpcyBhYnJ1cHRseSB0ZXJtaW5hdGVkLCB0aGUgd2hvbGUgcG9vbCBnZXRzCisgICAgICAgICMgImJyb2tlbiIuCisgICAgICAgIGZ1dHVyZXMgPSBbc2VsZi5leGVjdXRvci5zdWJtaXQodGltZS5zbGVlcCwgMyldCisgICAgICAgICMgR2V0IG9uZSBvZiB0aGUgcHJvY2Vzc2VzLCBhbmQgdGVybWluYXRlIChraWxsKSBpdAorICAgICAgICBwID0gbmV4dChpdGVyKHNlbGYuZXhlY3V0b3IuX3Byb2Nlc3Nlcy52YWx1ZXMoKSkpCisgICAgICAgIHAudGVybWluYXRlKCkKKyAgICAgICAgZm9yIGZ1dCBpbiBmdXR1cmVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnJva2VuUHJvY2Vzc1Bvb2wsIGZ1dC5yZXN1bHQpCisgICAgICAgICMgU3VibWl0dGluZyBvdGhlciBqb2JzIGZhaWxzIGFzIHdlbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJyb2tlblByb2Nlc3NQb29sLCBzZWxmLmV4ZWN1dG9yLnN1Ym1pdCwgcG93LCAyLCA4KQogCiAKIGNsYXNzIEZ1dHVyZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5OCw3ICs1MjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWNhbmNlbGxlZD4nKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KAogICAgICAgICAgICAgICAgIHJlcHIoRVhDRVBUSU9OX0ZVVFVSRSksCi0gICAgICAgICAgICAgICAgJzxGdXR1cmUgYXQgMHhbMC05YS1mXSsgc3RhdGU9ZmluaXNoZWQgcmFpc2VkIElPRXJyb3I+JykKKyAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1maW5pc2hlZCByYWlzZWQgT1NFcnJvcj4nKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KAogICAgICAgICAgICAgICAgIHJlcHIoU1VDQ0VTU0ZVTF9GVVRVUkUpLAogICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWZpbmlzaGVkIHJldHVybmVkIGludD4nKQpAQCAtNTA5LDcgKzUzNCw3IEBACiAgICAgICAgIGYyID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1SVU5OSU5HKQogICAgICAgICBmMyA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEKQogICAgICAgICBmNCA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEX0FORF9OT1RJRklFRCkKLSAgICAgICAgZjUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249SU9FcnJvcigpKQorICAgICAgICBmNSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1PU0Vycm9yKCkpCiAgICAgICAgIGY2ID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgcmVzdWx0PTUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxLmNhbmNlbCgpKQpAQCAtNTYzLDcgKzU4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9GVVRVUkUucmVzdWx0LCB0aW1lb3V0PTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBFWENFUFRJT05fRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBFWENFUFRJT05fRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNVQ0NFU1NGVUxfRlVUVVJFLnJlc3VsdCh0aW1lb3V0PTApLCA0MikKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdF93aXRoX3N1Y2Nlc3Moc2VsZik6CkBAIC02MDIsNyArNjI3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnV0dXJlcy5DYW5jZWxsZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUuZXhjZXB0aW9uLCB0aW1lb3V0PTApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEVYQ0VQVElPTl9GVVRVUkUuZXhjZXB0aW9uKHRpbWVvdXQ9MCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPRXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTVUNDRVNTRlVMX0ZVVFVSRS5leGNlcHRpb24odGltZW91dD0wKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl93aXRoX3N1Y2Nlc3Moc2VsZik6CkBAIC02MTEsMTQgKzYzNiwxNCBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAgICAgd2l0aCBmMS5fY29uZGl0aW9uOgogICAgICAgICAgICAgICAgIGYxLl9zdGF0ZSA9IEZJTklTSEVECi0gICAgICAgICAgICAgICAgZjEuX2V4Y2VwdGlvbiA9IElPRXJyb3IoKQorICAgICAgICAgICAgICAgIGYxLl9leGNlcHRpb24gPSBPU0Vycm9yKCkKICAgICAgICAgICAgICAgICBmMS5fY29uZGl0aW9uLm5vdGlmeV9hbGwoKQogCiAgICAgICAgIGYxID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1QRU5ESU5HKQogICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bm90aWZpY2F0aW9uKQogICAgICAgICB0LnN0YXJ0KCkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmMS5leGNlcHRpb24odGltZW91dD01KSwgSU9FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYxLmV4Y2VwdGlvbih0aW1lb3V0PTUpLCBPU0Vycm9yKSkKIAogQHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKQEAgLTYzMSw3ICs2NTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xBc0NvbXBsZXRlZFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1dHVyZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NQb29sU2h1dGRvd25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xTaHV0ZG93blRlc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkUG9vbFNodXRkb3duVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgZmluYWxseToKICAgICAgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfY2ZncGFyc2VyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCBhNmU5MDUwLi44ZDgyMTgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtMTYxOCw2ICsxNjE4LDQyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlMSksIHJlcHIoZTIpKQogCiAKK2NsYXNzIElubGluZUNvbW1lbnRTdHJpcHBpbmdUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIGlzc3VlICMxNDU5MDogQ29uZmlnUGFyc2VyIGRvZXNuJ3Qgc3RyaXAgaW5saW5lIGNvbW1lbnQgd2hlbgorICAgIGRlbGltaXRlciBvY2N1cnMgZWFybGllciB3aXRob3V0IHByZWNlZGluZyBzcGFjZS4uIiIiCisKKyAgICBkZWYgdGVzdF9zdHJpcHBpbmcoc2VsZik6CisgICAgICAgIGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9KCc7JywgJyMnLAorICAgICAgICAgICAgICAgICcvLycpKQorICAgICAgICBjZmcucmVhZF9zdHJpbmcoIiIiCisgICAgICAgIFtzZWN0aW9uXQorICAgICAgICBrMSA9IHYxO3N0aWxsIHYxCisgICAgICAgIGsyID0gdjIgO2EgY29tbWVudAorICAgICAgICBrMyA9IHYzIDsgYWxzbyBhIGNvbW1lbnQKKyAgICAgICAgazQgPSB2NDtzdGlsbCB2NCA7YSBjb21tZW50CisgICAgICAgIGs1ID0gdjU7c3RpbGwgdjUgOyBhbHNvIGEgY29tbWVudAorICAgICAgICBrNiA9IHY2O3N0aWxsIHY2OyBhbmQgc3RpbGwgdjYgO2EgY29tbWVudAorICAgICAgICBrNyA9IHY3O3N0aWxsIHY3OyBhbmQgc3RpbGwgdjcgOyBhbHNvIGEgY29tbWVudAorCisgICAgICAgIFttdWx0aXByZWZpeF0KKyAgICAgICAgazEgPSB2MTtzdGlsbCB2MSAjYSBjb21tZW50IDsgeWVhaCwgcHJldHR5IG11Y2gKKyAgICAgICAgazIgPSB2MiAvLyB0aGlzIGFscmVhZHkgaXMgYSBjb21tZW50IDsgY29udGludWVkCisgICAgICAgIGszID0gdjM7Iy8vc3RpbGwgdjMjIGFuZCBzdGlsbCB2MyA7IGEgY29tbWVudAorICAgICAgICAiIiIpCisgICAgICAgIHMgPSBjZmdbJ3NlY3Rpb24nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2sxJ10sICd2MTtzdGlsbCB2MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazInXSwgJ3YyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMyddLCAndjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s0J10sICd2NDtzdGlsbCB2NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazUnXSwgJ3Y1O3N0aWxsIHY1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrNiddLCAndjY7c3RpbGwgdjY7IGFuZCBzdGlsbCB2NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazcnXSwgJ3Y3O3N0aWxsIHY3OyBhbmQgc3RpbGwgdjcnKQorICAgICAgICBzID0gY2ZnWydtdWx0aXByZWZpeCddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazEnXSwgJ3YxO3N0aWxsIHYxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMiddLCAndjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2szJ10sICd2MzsjLy9zdGlsbCB2MyMgYW5kIHN0aWxsIHYzJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIENvbmZpZ1BhcnNlclRlc3RDYXNlLApAQCAtMTY0MCw0ICsxNjc2LDUgQEAKICAgICAgICAgUmVhZEZpbGVUZXN0Q2FzZSwKICAgICAgICAgQ292ZXJhZ2VPbmVIdW5kcmVkVGVzdENhc2UsCiAgICAgICAgIEV4Y2VwdGlvblBpY2tsaW5nVGVzdENhc2UsCisgICAgICAgIElubGluZUNvbW1lbnRTdHJpcHBpbmdUZXN0Q2FzZSwKICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDZlMzgzMDUuLmU1MmVkOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTM3MCw2ICszNzAsMjMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUsIFsxLCAnc29tZXRoaW5nIGVsc2UnLCA5OTldKQogCiAKK2NsYXNzIFRlc3RFeGl0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fcmVzb3VyY2VzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2FsbGJhY2soc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCgpLCB7fSksCisgICAgICAgICAgICAoKDEsKSwge30pLAorICAgICAgICAgICAgKCgxLDIpLCB7fSksCisgICAgICAgICAgICAoKCksIGRpY3QoZXhhbXBsZT0xKSksCisgICAgICAgICAgICAoKDEsKSwgZGljdChleGFtcGxlPTEpKSwKKyAgICAgICAgICAgICgoMSwyKSwgZGljdChleGFtcGxlPTEpKSwKKyAgICAgICAgXQorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBkZWYgX2V4aXQoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAiIiJUZXN0IG1ldGFkYXRhIHByb3BhZ2F0aW9uIiIiCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKChhcmdzLCBrd2RzKSkKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIGZvciBhcmdzLCBrd2RzIGluIHJldmVyc2VkKGV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBpZiBhcmdzIGFuZCBrd2RzOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQsICphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgZWxpZiBhcmdzOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQsICphcmdzKQorICAgICAgICAgICAgICAgIGVsaWYga3dkczoKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0LCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZiwgX2V4aXQpCisgICAgICAgICAgICBmb3Igd3JhcHBlciBpbiBzdGFjay5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fd3JhcHBlZF9fLCBfZXhpdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19uYW1lX18sIF9leGl0Ll9fbmFtZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyYXBwZXIuX19kb2NfXywgX2V4aXQuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcHVzaChzZWxmKToKKyAgICAgICAgZXhjX3JhaXNlZCA9IFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGRlZiBfZXhwZWN0X2V4YyhleGNfdHlwZSwgZXhjLCBleGNfdGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleGNfdHlwZSwgZXhjX3JhaXNlZCkKKyAgICAgICAgZGVmIF9zdXBwcmVzc19leGMoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGRlZiBfZXhwZWN0X29rKGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGNfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Y190YikKKyAgICAgICAgY2xhc3MgRXhpdENNKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2hlY2tfZXhjKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4YyA9IGNoZWNrX2V4YworICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlNob3VsZCBub3QgYmUgY2FsbGVkISIpCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4YygqZXhjX2RldGFpbHMpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBzdGFjay5wdXNoKF9leHBlY3Rfb2spCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9leHBlY3Rfb2spCisgICAgICAgICAgICBjbSA9IEV4aXRDTShfZXhwZWN0X29rKQorICAgICAgICAgICAgc3RhY2sucHVzaChjbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXS5fX3NlbGZfXywgY20pCisgICAgICAgICAgICBzdGFjay5wdXNoKF9zdXBwcmVzc19leGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9zdXBwcmVzc19leGMpCisgICAgICAgICAgICBjbSA9IEV4aXRDTShfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0uX19zZWxmX18sIGNtKQorICAgICAgICAgICAgc3RhY2sucHVzaChfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzdGFjay5wdXNoKF9leHBlY3RfZXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZW50ZXJfY29udGV4dChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdENNKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSkKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMykKKworICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBjbSA9IFRlc3RDTSgpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBAc3RhY2suY2FsbGJhY2sgICMgUmVnaXN0ZXJlZCBmaXJzdCA9PiBjbGVhbmVkIHVwIGxhc3QKKyAgICAgICAgICAgIGRlZiBfZXhpdCgpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKF9leGl0KQorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChjbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXS5fX3NlbGZfXywgY20pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgMywgNF0pCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIEBzdGFjay5jYWxsYmFjaworICAgICAgICAgICAgZGVmIF9leGl0KCk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoX2V4aXQpCisgICAgICAgICAgICBzdGFjay5jbG9zZSgpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9wb3BfYWxsKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgQHN0YWNrLmNhbGxiYWNrCisgICAgICAgICAgICBkZWYgX2V4aXQoKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShfZXhpdCkKKyAgICAgICAgICAgIG5ld19zdGFjayA9IHN0YWNrLnBvcF9hbGwoKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxKQorICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIG5ld19zdGFjay5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgM10pCisKKyAgICBkZWYgdGVzdF9leGl0X3JhaXNlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogRmFsc2UpCisgICAgICAgICAgICAgICAgMS8wCisKKyAgICBkZWYgdGVzdF9leGl0X3N1cHByZXNzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogVHJ1ZSkKKyAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmdfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICAjIFNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBFeGl0U3RhY2sgY2hhaW5pbmcgbWF0Y2hlcworICAgICAgICAjIGFjdHVhbCBuZXN0ZWQgd2l0aCBzdGF0ZW1lbnRzCisgICAgICAgIGNsYXNzIFJhaXNlRXhjOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Yyk6CisgICAgICAgICAgICAgICAgc2VsZi5leGMgPSBleGMKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZXhjCisKKyAgICAgICAgY2xhc3MgUmFpc2VFeGNXaXRoQ29udGV4dDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRlciwgaW5uZXIpOgorICAgICAgICAgICAgICAgIHNlbGYub3V0ZXIgPSBvdXRlcgorICAgICAgICAgICAgICAgIHNlbGYuaW5uZXIgPSBpbm5lcgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmlubmVyCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLm91dGVyCisKKyAgICAgICAgY2xhc3MgU3VwcHJlc3NFeGM6CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICB0eXBlKHNlbGYpLnNhdmVkX2RldGFpbHMgPSBleGNfZGV0YWlscworICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBSYWlzZUV4YyhJbmRleEVycm9yKToKKyAgICAgICAgICAgICAgICB3aXRoIFJhaXNlRXhjV2l0aENvbnRleHQoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBTdXBwcmVzc0V4YygpOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBSYWlzZUV4YyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBLZXlFcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18sIEF0dHJpYnV0ZUVycm9yKQorICAgICAgICAgICAgIyBJbm5lciBleGNlcHRpb25zIHdlcmUgc3VwcHJlc3NlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLl9fY29udGV4dF9fKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBJbmRleEVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyByYWlzZWQiKQorICAgICAgICAjIENoZWNrIHRoZSBpbm5lciBleGNlcHRpb25zCisgICAgICAgIGlubmVyX2V4YyA9IFN1cHByZXNzRXhjLnNhdmVkX2RldGFpbHNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4YywgVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4Yy5fX2NvbnRleHRfXywgWmVyb0RpdmlzaW9uRXJyb3IpCisKKyAgICBkZWYgdGVzdF9leGl0X2V4Y2VwdGlvbl9jaGFpbmluZyhzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgZXhjZXB0aW9uIGNoYWluaW5nIG1hdGNoZXMgdGhlIHJlZmVyZW5jZSBiZWhhdmlvdXIKKyAgICAgICAgZGVmIHJhaXNlX2V4YyhleGMpOgorICAgICAgICAgICAgcmFpc2UgZXhjCisKKyAgICAgICAgc2F2ZWRfZGV0YWlscyA9IE5vbmUKKyAgICAgICAgZGVmIHN1cHByZXNzX2V4YygqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgbm9ubG9jYWwgc2F2ZWRfZGV0YWlscworICAgICAgICAgICAgc2F2ZWRfZGV0YWlscyA9IGV4Y19kZXRhaWxzCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBJbmRleEVycm9yKQorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgS2V5RXJyb3IpCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN1cHByZXNzX2V4YykKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyYWlzZV9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXywgS2V5RXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICMgSW5uZXIgZXhjZXB0aW9ucyB3ZXJlIHN1cHByZXNzZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgSW5kZXhFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIikKKyAgICAgICAgIyBDaGVjayB0aGUgaW5uZXIgZXhjZXB0aW9ucworICAgICAgICBpbm5lcl9leGMgPSBzYXZlZF9kZXRhaWxzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmdfc3VwcHJlc3Moc2VsZik6CisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBzdGFjay5wdXNoKGxhbWJkYSAqZXhjOiBUcnVlKQorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogMS8wKQorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4Yzoge31bMV0pCisKKyAgICBkZWYgdGVzdF9leGNlc3NpdmVfbmVzdGluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gd291bGQgZGllIHdpdGggUmVjdXJzaW9uRXJyb3IgaGVyZQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKGludCkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2J5cGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRXhhbXBsZShvYmplY3QpOiBwYXNzCisgICAgICAgIGNtID0gRXhhbXBsZSgpCisgICAgICAgIGNtLl9fZXhpdF9fID0gb2JqZWN0KCkKKyAgICAgICAgc3RhY2sgPSBFeGl0U3RhY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc3RhY2suZW50ZXJfY29udGV4dCwgY20pCisgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgY20pCisKKwogIyBUaGlzIGlzIG5lZWRlZCB0byBtYWtlIHRoZSB0ZXN0IGFjdHVhbGx5IHJ1biB1bmRlciByZWdydGVzdC5weSEKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29weS5weSBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQppbmRleCBhODRjMTA5Li5jNGJhYWU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgIyBBdHRlbXB0IGZ1bGwgbGluZSBjb3ZlcmFnZSBvZiBjb3B5LnB5IGZyb20gdG9wIHRvIGJvdHRvbQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHkuRXJyb3IgaXMgY29weS5lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LkVycm9yLCBjb3B5LmVycm9yKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhjb3B5LkVycm9yLCBFeGNlcHRpb24pKQogCiAgICAgIyBUaGUgY29weSgpIG1ldGhvZApAQCAtNTQsMjAgKzU0LDI2IEBACiAgICAgZGVmIHRlc3RfY29weV9yZWR1Y2VfZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBbMV0pCiAKICAgICBkZWYgdGVzdF9jb3B5X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfY29weV9jYW50KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC05MSw3ICs5Nyw3IEBACiAgICAgICAgICAgICAgICAgICJoZWxsbyIsICJoZWxsb1x1MTIzNCIsIGYuX19jb2RlX18sCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCByYW5nZSgxMCksIENsYXNzaWMsIG1heF0KICAgICAgICAgZm9yIHggaW4gdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weS5jb3B5KHgpIGlzIHgsIHJlcHIoeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuY29weSh4KSwgeCkKIAogICAgIGRlZiB0ZXN0X2NvcHlfbGlzdChzZWxmKToKICAgICAgICAgeCA9IFsxLCAyLCAzXQpAQCAtMTg1LDkgKzE5MSw5IEBACiAgICAgICAgIHggPSBbeCwgeF0KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF0gaXMgbm90IHhbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIHlbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5WzBdLCB4WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzKHlbMF0sIHlbMV0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pc3N1YmNsYXNzKHNlbGYpOgogICAgICAgICAjIFhYWCBOb3RlOiB0aGVyZSdzIG5vIHdheSB0byB0ZXN0IHRoZSBUeXBlRXJyb3IgY29taW5nIG91dCBvZgpAQCAtMjI3LDIwICsyMzMsMjYgQEAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWR1Y2VfZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVkdWNlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfY2FudChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtMjY0LDE0ICsyNzYsMTQgQEAKICAgICAgICAgICAgICAgICAgImhlbGxvIiwgImhlbGxvXHUxMjM0IiwgZi5fX2NvZGVfXywKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIHJhbmdlKDEwKSwgQ2xhc3NpYywgbWF4XQogICAgICAgICBmb3IgeCBpbiB0ZXN0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5LmRlZXBjb3B5KHgpIGlzIHgsIHJlcHIoeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuZGVlcGNvcHkoeCksIHgpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9saXN0KHNlbGYpOgogICAgICAgICB4ID0gW1sxLCAyXSwgM10KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX2xpc3Qoc2VsZik6CiAgICAgICAgIHggPSBbXQpAQCAtMjc5LDE2ICsyOTEsMjYgQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgZm9yIG9wIGluIGNvbXBhcmlzb25zOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5WzBdLCB5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih5KSwgMSkKIAorICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2VtcHR5X3R1cGxlKHNlbGYpOgorICAgICAgICB4ID0gKCkKKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LCB5KQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfdHVwbGUoc2VsZik6CiAgICAgICAgIHggPSAoWzEsIDJdLCAzKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCisKKyAgICBkZWYgdGVzdF9kZWVwY29weV90dXBsZV9vZl9pbW11dGFibGVzKHNlbGYpOgorICAgICAgICB4ID0gKCgxLCAyKSwgMykKKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LCB5KQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX3R1cGxlKHNlbGYpOgogICAgICAgICB4ID0gKFtdLCkKQEAgLTI5NiwxNiArMzE4LDE2IEBACiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIGZvciBvcCBpbiBjb21wYXJpc29uczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3AsIHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyBub3QgeFswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF1bMF0gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHlbMF0sIHhbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXVswXSwgeSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RpY3Qoc2VsZik6CiAgICAgICAgIHggPSB7ImZvbyI6IFsxLCAyXSwgImJhciI6IDN9CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WyJmb28iXSBpcyBub3QgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WyJmb28iXSwgeVsiZm9vIl0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWZsZXhpdmVfZGljdChzZWxmKToKICAgICAgICAgeCA9IHt9CkBAIC0zMTUsMTUgKzMzNywzMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcCwgeSwgeCkKICAgICAgICAgZm9yIG9wIGluIGVxdWFsaXR5X2NvbXBhcmlzb25zOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Wydmb28nXSBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVsnZm9vJ10sIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHkpLCAxKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfa2VlcGFsaXZlKHNlbGYpOgogICAgICAgICBtZW1vID0ge30KLSAgICAgICAgeCA9IDQyCisgICAgICAgIHggPSBbXQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4LCBtZW1vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWVtb1tpZCh4KV0gaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZW1vW2lkKG1lbW8pXVswXSwgeCkKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RvbnRfbWVtb19pbW11dGFibGUoc2VsZik6CisgICAgICAgIG1lbW8gPSB7fQorICAgICAgICB4ID0gWzEsIDIsIDMsIDRdCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgsIG1lbW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKyAgICAgICAgIyBUaGVyZSdzIHRoZSBlbnRyeSBmb3IgdGhlIG5ldyBsaXN0LCBhbmQgdGhlIGtlZXAgYWxpdmUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1lbW8pLCAyKQorCisgICAgICAgIG1lbW8gPSB7fQorICAgICAgICB4ID0gWygxLCAyKV0KKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCwgbWVtbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICAjIFR1cGxlcyB3aXRoIGltbXV0YWJsZSBjb250ZW50cyBhcmUgaW1tdXRhYmxlIGZvciBkZWVwY29weS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWVtbyksIDIpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X3ZhbmlsbGEoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zMzQsNyArMzcxLDcgQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNDcsOCArMzg0LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0aW5pdGFyZ3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNjEsOCArMzk4LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNzUsOCArNDEyLDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3Rfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zODksOCArNDI2LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0c3RhdGVfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC00MDUsOCArNDQyLDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV9pbnN0KHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtNDE0LDggKzQ1MSw4IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSB4CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHkuZm9vLCB5KQogCiAgICAgIyBfcmVjb25zdHJ1Y3QoKQogCkBAIC00MjUsOSArNDYyLDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3Rfbm9zdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDM2LDkgKzQ3Myw5IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSA0MgogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Ll9fY2xhc3NfXyBpcyB4Ll9fY2xhc3NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Ll9fY2xhc3NfXywgeC5fX2NsYXNzX18pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Ll9fY2xhc3NfXyBpcyB4Ll9fY2xhc3NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Ll9fY2xhc3NfXywgeC5fX2NsYXNzX18pCiAKICAgICBkZWYgdGVzdF9yZWNvbnN0cnVjdF9zdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDUyLDcgKzQ4OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X3N0YXRlX3NldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NjgsNyArNTA1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3RfcmVmbGV4aXZlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NzYsOCArNTEzLDggQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IHgKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5mb28sIHkpCiAKICAgICAjIEFkZGl0aW9ucyBmb3IgUHl0aG9uIDIuMyBhbmQgcGlja2xlIHByb3RvY29sIDIKIApAQCAtNDkxLDEyICs1MjgsMTIgQEAKICAgICAgICAgeCA9IEMoW1sxLCAyXSwgM10pCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzKHhbMF0sIHlbMF0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X3JlZHVjZV81dHVwbGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMoZGljdCk6CkBAIC01MDgsMTIgKzU0NSwxMiBAQAogICAgICAgICB4ID0gQyhbKCJmb28iLCBbMSwgMl0pLCAoImJhciIsIDMpXSkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFsiZm9vIl0gaXMgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4WyJmb28iXSwgeVsiZm9vIl0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WyJmb28iXSBpcyBub3QgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WyJmb28iXSwgeVsiZm9vIl0pCiAKICAgICBkZWYgdGVzdF9jb3B5X3Nsb3RzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC01MjEsNyArNTU4LDcgQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IFs0Ml0KICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5mb28gaXMgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfc2xvdHMoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTUzMCw3ICs1NjcsNyBAQAogICAgICAgICB4LmZvbyA9IFs0Ml0KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZvbywgeS5mb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyBub3QgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfZGljdF9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhkaWN0KToKQEAgLTU0Nyw3ICs1ODQsNyBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fa2V5cywgeS5fa2V5cykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKICAgICAgICAgeFsnYmFyJ10gPSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoeCwgeSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh4Ll9rZXlzLCB5Ll9rZXlzKQpAQCAtNTYwLDggKzU5Nyw4IEBACiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHgpLCBsaXN0KHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCB5LmZvbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgeVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKHhbMF0sIHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfbGlzdF9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhsaXN0KToKQEAgLTU3MSw4ICs2MDgsOCBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoeCksIGxpc3QoeSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIHkuZm9vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIG5vdCB5LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2NvcHlfdHVwbGVfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEModHVwbGUpOgpAQCAtNTg5LDggKzYyNiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoeCksIChbMSwgMl0sIDMpKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHkpLCAoWzEsIDJdLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X2dldHN0YXRlX2V4YyhzZWxmKToKICAgICAgICAgY2xhc3MgRXZpbFN0YXRlKG9iamVjdCk6CkBAIC02MTgsMTAgKzY1NSwxMCBAQAogICAgICAgICBvYmogPSBDKCkKICAgICAgICAgeCA9IHdlYWtyZWYucmVmKG9iaikKICAgICAgICAgeSA9IF9jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKICAgICAgICAgZGVsIG9iagogICAgICAgICB5ID0gX2NvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogCiAgICAgZGVmIHRlc3RfY29weV93ZWFrcmVmKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja193ZWFrcmVmKGNvcHkuY29weSkKQEAgLTYzNyw3ICs2NzQsNyBAQAogICAgICAgICB1W2FdID0gYgogICAgICAgICB1W2NdID0gZAogICAgICAgICB2ID0gY29weS5jb3B5KHUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodiBpcyB1KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2FdLCBiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbY10sIGQpCkBAIC02NjcsOCArNzA0LDggQEAKICAgICAgICAgdiA9IGNvcHkuZGVlcGNvcHkodSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2W2FdIGlzIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodltjXSBpcyBkKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHZbYV0sIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodltjXSwgZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2FdLmksIGIuaSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2NdLmksIGQuaSkKICAgICAgICAgZGVsIGMKQEAgLTY4NywxMiArNzI0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIDIpCiAgICAgICAgICh4LCB5KSwgKHosIHQpID0gc29ydGVkKHYuaXRlbXMoKSwga2V5PWxhbWJkYSBwYWlyOiBwYWlyWzBdLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeCBpcyBhKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5pLCBhLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeiBpcyBjKQorICAgICAgICBzZWxmLmFzc2VydElzKHksIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeiwgYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LmksIGMuaSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQgaXMgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0LCBkKQogICAgICAgICBkZWwgeCwgeSwgeiwgdAogICAgICAgICBkZWwgZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgMSkKQEAgLTcwNSw3ICs3NDIsNyBAQAogICAgICAgICBmLmIgPSBmLm0KICAgICAgICAgZyA9IGNvcHkuZGVlcGNvcHkoZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLm0sIGcuYikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGcuYi5fX3NlbGZfXyBpcyBnKQorICAgICAgICBzZWxmLmFzc2VydElzKGcuYi5fX3NlbGZfXywgZykKICAgICAgICAgZy5iKCkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBhZTE3YzJiLi41Njc2NjY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTE4LDE2ICsxOCwxOSBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb3VudGVyX2R1cmluZ19kZWFsbG9jKHNlbGYpOgogICAgICAgICBpbXBvcnQgX2xzcHJvZgogICAgICAgICAjIE11c3QgdXNlIGEgZmlsZSBhcyBTdHJpbmdJTyBkb2Vzbid0IHRyaWdnZXIgdGhlIGJ1Zy4KLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmaWxlOgotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IGZpbGUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKGxhbWJkYTogaW50KQotICAgICAgICAgICAgICAgIG9iai5lbmFibGUoKQotICAgICAgICAgICAgICAgIG9iaiA9IF9sc3Byb2YuUHJvZmlsZXIoMSkKLSAgICAgICAgICAgICAgICBvYmouZGlzYWJsZSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwotICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBmaWxlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKGxhbWJkYTogaW50KQorICAgICAgICAgICAgICAgICAgICBvYmouZW5hYmxlKCkKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcigxKQorICAgICAgICAgICAgICAgICAgICBvYmouZGlzYWJsZSgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNmNjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5CkBAIC0wLDAgKzEsMzggQEAKKyMgVGVzdHMgdGhhdCB0aGUgY3Jhc2hlcnMgaW4gdGhlIExpYi90ZXN0L2NyYXNoZXJzIGRpcmVjdG9yeSBhY3R1YWxseQorIyBkbyBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgYXMgZXhwZWN0ZWQKKyMKKyMgSWYgYSBjcmFzaGVyIGlzIGZpeGVkLCBpdCBzaG91bGQgYmUgbW92ZWQgZWxzZXdoZXJlIGluIHRoZSB0ZXN0IHN1aXRlIHRvCisjIGVuc3VyZSBpdCBjb250aW51ZXMgdG8gd29yayBjb3JyZWN0bHkuCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGdsb2IKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgdGVzdC5zdXBwb3J0Citmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCisKK0NSQVNIRVJfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJjcmFzaGVycyIpCitDUkFTSEVSX0ZJTEVTID0gb3MucGF0aC5qb2luKENSQVNIRVJfRElSLCAiKi5weSIpCisKK2luZmluaXRlX2xvb3BzID0gWyJpbmZpbml0ZV9sb29wX3JlLnB5IiwgIm5hc3R5X2VxX3ZzX2RpY3QucHkiXQorCitjbGFzcyBDcmFzaGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcCgidGhlc2UgdGVzdHMgYXJlIHRvbyBmcmFnaWxlIikKKyAgICBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NyYXNoZXJzX2NyYXNoKHNlbGYpOgorICAgICAgICBmb3IgZm5hbWUgaW4gZ2xvYi5nbG9iKENSQVNIRVJfRklMRVMpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShmbmFtZSkgaW4gaW5maW5pdGVfbG9vcHM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgU29tZSAiY3Jhc2hlcnMiIG9ubHkgdHJpZ2dlciBhbiBleGNlcHRpb24gcmF0aGVyIHRoYW4gYQorICAgICAgICAgICAgIyBzZWdmYXVsdC4gQ29uc2lkZXIgdGhhdCBhbiBhY2NlcHRhYmxlIG91dGNvbWUuCisgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiQ2hlY2tpbmcgY3Jhc2hlcjoiLCBmbmFtZSkKKyAgICAgICAgICAgIGFzc2VydF9weXRob25fZmFpbHVyZShmbmFtZSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDcmFzaGVyVGVzdCkKKyAgICB0ZXN0LnN1cHBvcnQucmVhcF9jaGlsZHJlbigpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkgYi9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CmluZGV4IDJhZGIyOGQuLmRjMTA3ZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQpAQCAtMTAsNiArMTAsMjUgQEAKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ1Rlc3QgZW5jcnlwdGlvbjogJywgYykKIAorICAgIGRlZiB0ZXN0X3NhbHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNyeXB0Ll9zYWx0Y2hhcnMpLCA2NCkKKyAgICAgICAgZm9yIG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzOgorICAgICAgICAgICAgc2FsdCA9IGNyeXB0Lm1rc2FsdChtZXRob2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzYWx0KSwKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kLnNhbHRfY2hhcnMgKyAoMyBpZiBtZXRob2QuaWRlbnQgZWxzZSAwKSkKKworICAgIGRlZiB0ZXN0X3NhbHRlZGNyeXB0KHNlbGYpOgorICAgICAgICBmb3IgbWV0aG9kIGluIGNyeXB0Lm1ldGhvZHM6CisgICAgICAgICAgICBwdyA9IGNyeXB0LmNyeXB0KCdhc3N3b3JkJywgbWV0aG9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocHcpLCBtZXRob2QudG90YWxfc2l6ZSkKKyAgICAgICAgICAgIHB3ID0gY3J5cHQuY3J5cHQoJ2Fzc3dvcmQnLCBjcnlwdC5ta3NhbHQobWV0aG9kKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHB3KSwgbWV0aG9kLnRvdGFsX3NpemUpCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIEd1cmFudGVlIHRoYXQgTUVUSE9EX0NSWVBUIGlzIHRoZSBsYXN0IG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNyeXB0Lm1ldGhvZHMpID49IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3J5cHQuTUVUSE9EX0NSWVBULCBjcnlwdC5tZXRob2RzWy0xXSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENyeXB0VGVzdENhc2UpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKaW5kZXggNTgxMjE0Ny4uZTk1OTYyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKQEAgLTI2NCwxMSArMjY0LDUzIEBACiAgICAgY3Vyc2VzLnVuZ2V0Y2goMTAyNSkKICAgICBzdGRzY3IuZ2V0a2V5KCkKIAorZGVmIHRlc3RfdW5nZXRfd2NoKHN0ZHNjcik6CisgICAgaWYgbm90IGhhc2F0dHIoY3Vyc2VzLCAndW5nZXRfd2NoJyk6CisgICAgICAgIHJldHVybgorICAgIGVuY29kaW5nID0gc3Rkc2NyLmVuY29kaW5nCisgICAgZm9yIGNoIGluICgnYScsICdceGU5JywgJ1x1MjBhYycsICdcVTAwMTBGRkZGJyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNoLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGN1cnNlcy51bmdldF93Y2goY2gpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ1bmdldF93Y2goJWEpIGZhaWxlZCB3aXRoIGVuY29kaW5nICVzOiAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjaCwgc3Rkc2NyLmVuY29kaW5nLCBlcnIpKQorICAgICAgICByZWFkID0gc3Rkc2NyLmdldF93Y2goKQorICAgICAgICBpZiByZWFkICE9IGNoOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVyICE9ICVyIiAlIChyZWFkLCBjaCkpCisKKyAgICAgICAgY29kZSA9IG9yZChjaCkKKyAgICAgICAgY3Vyc2VzLnVuZ2V0X3djaChjb2RlKQorICAgICAgICByZWFkID0gc3Rkc2NyLmdldF93Y2goKQorICAgICAgICBpZiByZWFkICE9IGNoOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVyICE9ICVyIiAlIChyZWFkLCBjaCkpCisKIGRlZiB0ZXN0X2lzc3VlMTA1NzAoKToKICAgICBiID0gY3Vyc2VzLnRwYXJtKGN1cnNlcy50aWdldHN0cigiY3VwIiksIDUsIDMpCiAgICAgYXNzZXJ0IHR5cGUoYikgaXMgYnl0ZXMKICAgICBjdXJzZXMucHV0cChiKQogCitkZWYgdGVzdF9lbmNvZGluZyhzdGRzY3IpOgorICAgIGltcG9ydCBjb2RlY3MKKyAgICBlbmNvZGluZyA9IHN0ZHNjci5lbmNvZGluZworICAgIGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpCisgICAgdHJ5OgorICAgICAgICBzdGRzY3IuZW5jb2RpbmcgPSAxMAorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVHlwZUVycm9yIG5vdCByYWlzZWQiKQorICAgIHN0ZHNjci5lbmNvZGluZyA9IGVuY29kaW5nCisgICAgdHJ5OgorICAgICAgICBkZWwgc3Rkc2NyLmVuY29kaW5nCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJUeXBlRXJyb3Igbm90IHJhaXNlZCIpCisKIGRlZiBtYWluKHN0ZHNjcik6CiAgICAgY3Vyc2VzLnNhdmV0dHkoKQogICAgIHRyeToKQEAgLTI3NywxNiArMzE5LDE4IEBACiAgICAgICAgIHRlc3RfdXNlcnB0cl93aXRob3V0X3NldChzdGRzY3IpCiAgICAgICAgIHRlc3RfcmVzaXplX3Rlcm0oc3Rkc2NyKQogICAgICAgICB0ZXN0X2lzc3VlNjI0MyhzdGRzY3IpCisgICAgICAgIHRlc3RfdW5nZXRfd2NoKHN0ZHNjcikKICAgICAgICAgdGVzdF9pc3N1ZTEwNTcwKCkKKyAgICAgICAgdGVzdF9lbmNvZGluZyhzdGRzY3IpCiAgICAgZmluYWxseToKICAgICAgICAgY3Vyc2VzLnJlc2V0dHkoKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgaWYgbm90IHN5cy5zdGRvdXQuaXNhdHR5KCk6Ci0gICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzeXMuc3Rkb3V0IGlzIG5vdCBhIHR0eSIpCisgICAgaWYgbm90IHN5cy5fX3N0ZG91dF9fLmlzYXR0eSgpOgorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic3lzLl9fc3Rkb3V0X18gaXMgbm90IGEgdHR5IikKICAgICAjIHRlc3Rpbmcgc2V0dXB0ZXJtKCkgaW5zaWRlIGluaXRzY3IvZW5kd2luCiAgICAgIyBjYXVzZXMgdGVybWluYWwgYnJlYWthZ2UKLSAgICBjdXJzZXMuc2V0dXB0ZXJtKGZkPXN5cy5zdGRvdXQuZmlsZW5vKCkpCisgICAgY3Vyc2VzLnNldHVwdGVybShmZD1zeXMuX19zdGRvdXRfXy5maWxlbm8oKSkKICAgICB0cnk6CiAgICAgICAgIHN0ZHNjciA9IGN1cnNlcy5pbml0c2NyKCkKICAgICAgICAgbWFpbihzdGRzY3IpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CmluZGV4IDI2ZDRjMTQuLjAyZGY3ZTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CkBAIC03MSw4ICs3MSw4IEBACiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfYW55ZGJtX2NyZWF0aW9uX25fZmlsZV9leGlzdHNfd2l0aF9pbnZhbGlkX2NvbnRlbnRzKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oX2ZuYW1lLCAidyIpIGFzIHc6Ci0gICAgICAgICAgICBwYXNzICMgY3JlYXRlIGFuIGVtcHR5IGZpbGUKKyAgICAgICAgIyBjcmVhdGUgYW4gZW1wdHkgZmlsZQorICAgICAgICB0ZXN0LnN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoX2ZuYW1lKQogCiAgICAgICAgIGYgPSBkYm0ub3BlbihfZm5hbWUsICduJykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGYuY2xvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKaW5kZXggMzBkMzk3MS4uZWM1ZGI5ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQpAQCAtMTYsNyArMTYsNyBAQAogCiBDb3dsaXNoYXcncyB0ZXN0cyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOgogCi0gICB3d3cyLmh1cnNsZXkuaWJtLmNvbS9kZWNpbWFsL2RlY3Rlc3QuemlwCisgICBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGVjdGVzdC56aXAKIAogVGhpcyB0ZXN0IG1vZHVsZSBjYW4gYmUgY2FsbGVkIGZyb20gY29tbWFuZCBsaW5lIHdpdGggb25lIHBhcmFtZXRlciAoQXJpdGhtZXRpYwogb3IgQmVoYXZpb3VyKSB0byB0ZXN0IGVhY2ggcGFydCwgb3Igd2l0aG91dCBwYXJhbWV0ZXIgdG8gdGVzdCBib3RoIHBhcnRzLiBJZgpAQCAtMzAsMzcgKzMwLDc1IEBACiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBwaWNrbGUsIGNvcHkKIGltcG9ydCB1bml0dGVzdAotZnJvbSBkZWNpbWFsIGltcG9ydCAqCiBpbXBvcnQgbnVtYmVycworaW1wb3J0IGxvY2FsZQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIHJ1bl9kb2N0ZXN0LCBpc19yZXNvdXJjZV9lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc19JRUVFXzc1NCkKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja193YXJuaW5ncworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjaGVja193YXJuaW5ncywgaW1wb3J0X2ZyZXNoX21vZHVsZSwgVGVzdEZhaWxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3dpdGhfbG9jYWxlKQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHRpbWUKK2ltcG9ydCB3YXJuaW5ncwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKLSMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKLVNpZ25hbHMgPSB0dXBsZShnZXRjb250ZXh0KCkuZmxhZ3Mua2V5cygpKQogCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCitvcmlnX3N5c19kZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisjIGZyYWN0aW9ucyBtb2R1bGUgbXVzdCBpbXBvcnQgdGhlIGNvcnJlY3QgZGVjaW1hbCBtb2R1bGUuCitjZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCitwZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCitmcmFjdGlvbnMgPSB7QzpjZnJhY3Rpb25zLCBQOnBmcmFjdGlvbnN9CitzeXMubW9kdWxlc1snZGVjaW1hbCddID0gb3JpZ19zeXNfZGVjaW1hbAorCisKKyMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKK1NpZ25hbHMgPSB7CisgIEM6IHR1cGxlKEMuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IHR1cGxlKFAuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkKK30KICMgU2lnbmFscyBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byBwcmVjZWRlbmNlOiB3aGVuIGFuIG9wZXJhdGlvbgogIyBwcm9kdWNlcyBtdWx0aXBsZSBzaWduYWxzLCBzaWduYWxzIG9jY3VycmluZyBsYXRlciBpbiB0aGUgbGlzdAogIyBzaG91bGQgYmUgaGFuZGxlZCBiZWZvcmUgdGhvc2Ugb2NjdXJyaW5nIGVhcmxpZXIgaW4gdGhlIGxpc3QuCi1PcmRlcmVkU2lnbmFscyA9IChDbGFtcGVkLCBSb3VuZGVkLCBJbmV4YWN0LCBTdWJub3JtYWwsCi0gICAgICAgICAgICAgICAgICBVbmRlcmZsb3csIE92ZXJmbG93LCBEaXZpc2lvbkJ5WmVybywgSW52YWxpZE9wZXJhdGlvbikKK09yZGVyZWRTaWduYWxzID0geworICBDOiBbQy5DbGFtcGVkLCBDLlJvdW5kZWQsIEMuSW5leGFjdCwgQy5TdWJub3JtYWwsIEMuVW5kZXJmbG93LAorICAgICAgQy5PdmVyZmxvdywgQy5EaXZpc2lvbkJ5WmVybywgQy5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgQy5GbG9hdE9wZXJhdGlvbl0gaWYgQyBlbHNlIE5vbmUsCisgIFA6IFtQLkNsYW1wZWQsIFAuUm91bmRlZCwgUC5JbmV4YWN0LCBQLlN1Ym5vcm1hbCwgUC5VbmRlcmZsb3csCisgICAgICBQLk92ZXJmbG93LCBQLkRpdmlzaW9uQnlaZXJvLCBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICBQLkZsb2F0T3BlcmF0aW9uXQorfQorZGVmIGFzc2VydF9zaWduYWxzKGNscywgY29udGV4dCwgYXR0ciwgZXhwZWN0ZWQpOgorICAgIGQgPSBnZXRhdHRyKGNvbnRleHQsIGF0dHIpCisgICAgY2xzLmFzc2VydFRydWUoYWxsKGRbc10gaWYgcyBpbiBleHBlY3RlZCBlbHNlIG5vdCBkW3NdIGZvciBzIGluIGQpKQorCitSb3VuZGluZ01vZGVzID0geworICBDOiAoQy5ST1VORF9VUCwgQy5ST1VORF9ET1dOLCBDLlJPVU5EX0NFSUxJTkcsIEMuUk9VTkRfRkxPT1IsCisgICAgICBDLlJPVU5EX0hBTEZfVVAsIEMuUk9VTkRfSEFMRl9ET1dOLCBDLlJPVU5EX0hBTEZfRVZFTiwKKyAgICAgIEMuUk9VTkRfMDVVUCkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IChQLlJPVU5EX1VQLCBQLlJPVU5EX0RPV04sIFAuUk9VTkRfQ0VJTElORywgUC5ST1VORF9GTE9PUiwKKyAgICAgIFAuUk9VTkRfSEFMRl9VUCwgUC5ST1VORF9IQUxGX0RPV04sIFAuUk9VTkRfSEFMRl9FVkVOLAorICAgICAgUC5ST1VORF8wNVVQKQorfQogCiAjIFRlc3RzIGFyZSBidWlsdCBhcm91bmQgdGhlc2UgYXNzdW1lZCBjb250ZXh0IGRlZmF1bHRzLgogIyB0ZXN0X21haW4oKSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgY29udGV4dC4KLWRlZiBpbml0KCk6Ci0gICAgZ2xvYmFsIE9SSUdJTkFMX0NPTlRFWFQKLSAgICBPUklHSU5BTF9DT05URVhUID0gZ2V0Y29udGV4dCgpLmNvcHkoKQotICAgIERlZmF1bHRUZXN0Q29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWMgPSA5LAotICAgICAgICByb3VuZGluZyA9IFJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgdHJhcHMgPSBkaWN0LmZyb21rZXlzKFNpZ25hbHMsIDApCi0gICAgICAgICkKLSAgICBzZXRjb250ZXh0KERlZmF1bHRUZXN0Q29udGV4dCkKK09SSUdJTkFMX0NPTlRFWFQgPSB7CisgIEM6IEMuZ2V0Y29udGV4dCgpLmNvcHkoKSBpZiBDIGVsc2UgTm9uZSwKKyAgUDogUC5nZXRjb250ZXh0KCkuY29weSgpCit9CitkZWYgaW5pdChtKToKKyAgICBpZiBub3QgbTogcmV0dXJuCisgICAgRGVmYXVsdFRlc3RDb250ZXh0ID0gbS5Db250ZXh0KAorICAgICAgIHByZWM9OSwgcm91bmRpbmc9bS5ST1VORF9IQUxGX0VWRU4sIHRyYXBzPWRpY3QuZnJvbWtleXMoU2lnbmFsc1ttXSwgMCkKKyAgICApCisgICAgbS5zZXRjb250ZXh0KERlZmF1bHRUZXN0Q29udGV4dCkKIAogVEVTVERBVEFESVIgPSAnZGVjaW1hbHRlc3RkYXRhJwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKQEAgLTcyLDE0OSArMTEwLDE3NSBAQAogCiBza2lwX2V4cGVjdGVkID0gbm90IG9zLnBhdGguaXNkaXIoZGlyZWN0b3J5KQogCi0jIGxpc3Qgb2YgaW5kaXZpZHVhbCAuZGVjVGVzdCB0ZXN0IGlkcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGVzdHMgdGhhdAotIyB3ZSdyZSBza2lwcGluZyBmb3Igb25lIHJlYXNvbiBvciBhbm90aGVyLgotc2tpcHBlZF90ZXN0X2lkcyA9IHNldChbCi0gICAgIyBTa2lwIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHNjYWxlYiB0ZXN0cy4KLSAgICAnc2NieDE2NCcsCi0gICAgJ3NjYngxNjUnLAotCi0gICAgIyBGb3Igc29tZSBvcGVyYXRpb25zIChjdXJyZW50bHkgZXhwLCBsbiwgbG9nMTAsIHBvd2VyKSwgdGhlIGRlY051bWJlcgotICAgICMgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGltcG9zZXMgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgb24gdGhlIGNvbnRleHQKLSAgICAjIGFuZCBvcGVyYW5kcy4gIFRoZXNlIHJlc3RyaWN0aW9ucyBhcmUgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb247Ci0gICAgIyBob3dldmVyLCB0aGUgZWZmZWN0IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBkb2VzIHNob3cgdXAgaW4gc29tZSBvZiB0aGUKLSAgICAjIHRlc3RjYXNlcy4gIFdlIHNraXAgdGVzdGNhc2VzIHRoYXQgdmlvbGF0ZSB0aGVzZSByZXN0cmljdGlvbnMsIHNpbmNlCi0gICAgIyBEZWNpbWFsIGJlaGF2ZXMgZGlmZmVyZW50bHkgZnJvbSBkZWNOdW1iZXIgZm9yIHRoZXNlIHRlc3RjYXNlcyBzbyB0aGVzZQotICAgICMgdGVzdGNhc2VzIHdvdWxkIG90aGVyd2lzZSBmYWlsLgotICAgICdleHB4OTAxJywKLSAgICAnZXhweDkwMicsCi0gICAgJ2V4cHg5MDMnLAotICAgICdleHB4OTA1JywKLSAgICAnbG54OTAxJywKLSAgICAnbG54OTAyJywKLSAgICAnbG54OTAzJywKLSAgICAnbG54OTA1JywKLSAgICAnbG9neDkwMScsCi0gICAgJ2xvZ3g5MDInLAotICAgICdsb2d4OTAzJywKLSAgICAnbG9neDkwNScsCi0gICAgJ3Bvd3gxMTgzJywKLSAgICAncG93eDExODQnLAotICAgICdwb3d4NDAwMScsCi0gICAgJ3Bvd3g0MDAyJywKLSAgICAncG93eDQwMDMnLAotICAgICdwb3d4NDAwNScsCi0gICAgJ3Bvd3g0MDA4JywKLSAgICAncG93eDQwMTAnLAotICAgICdwb3d4NDAxMicsCi0gICAgJ3Bvd3g0MDE0JywKLSAgICBdKQotCiAjIE1ha2Ugc3VyZSBpdCBhY3R1YWxseSByYWlzZXMgZXJyb3JzIHdoZW4gbm90IGV4cGVjdGVkIGFuZCBjYXVnaHQgaW4gZmxhZ3MKICMgU2xvd2VyLCBzaW5jZSBpdCBydW5zIHNvbWUgdGhpbmdzIHNldmVyYWwgdGltZXMuCiBFWFRFTkRFREVSUk9SVEVTVCA9IEZhbHNlCiAKLSNNYXAgdGhlIHRlc3QgY2FzZXMnIGVycm9yIG5hbWVzIHRvIHRoZSBhY3R1YWwgZXJyb3JzCi1FcnJvck5hbWVzID0geydjbGFtcGVkJyA6IENsYW1wZWQsCi0gICAgICAgICAgICAgICdjb252ZXJzaW9uX3N5bnRheCcgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnZGl2aXNpb25fYnlfemVybycgOiBEaXZpc2lvbkJ5WmVybywKLSAgICAgICAgICAgICAgJ2RpdmlzaW9uX2ltcG9zc2libGUnIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ2RpdmlzaW9uX3VuZGVmaW5lZCcgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnaW5leGFjdCcgOiBJbmV4YWN0LAotICAgICAgICAgICAgICAnaW52YWxpZF9jb250ZXh0JyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdpbnZhbGlkX29wZXJhdGlvbicgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnb3ZlcmZsb3cnIDogT3ZlcmZsb3csCi0gICAgICAgICAgICAgICdyb3VuZGVkJyA6IFJvdW5kZWQsCi0gICAgICAgICAgICAgICdzdWJub3JtYWwnIDogU3Vibm9ybWFsLAotICAgICAgICAgICAgICAndW5kZXJmbG93JyA6IFVuZGVyZmxvd30KKyMgVGVzdCBleHRyYSBmdW5jdGlvbmFsaXR5IGluIHRoZSBDIHZlcnNpb24gKC1ERVhUUkFfRlVOQ1RJT05BTElUWSkuCitFWFRSQV9GVU5DVElPTkFMSVRZID0gVHJ1ZSBpZiBoYXNhdHRyKEMsICdEZWNDbGFtcGVkJykgZWxzZSBGYWxzZQorcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eSA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgIEVYVFJBX0ZVTkNUSU9OQUxJVFksICJ0ZXN0IHJlcXVpcmVzIGJ1aWxkIHdpdGggLURFWFRSQV9GVU5DVElPTkFMSVRZIikKK3NraXBfaWZfZXh0cmFfZnVuY3Rpb25hbGl0eSA9IHVuaXR0ZXN0LnNraXBJZigKKyAgRVhUUkFfRlVOQ1RJT05BTElUWSwgInRlc3QgcmVxdWlyZXMgcmVndWxhciBidWlsZCIpCiAKIAotZGVmIE5vbmZ1bmN0aW9uKCphcmdzKToKLSAgICAiIiJEb2Vzbid0IGRvIGFueXRoaW5nLiIiIgotICAgIHJldHVybiBOb25lCitjbGFzcyBJQk1UZXN0Q2FzZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkNsYXNzIHdoaWNoIHRlc3RzIHRoZSBEZWNpbWFsIGNsYXNzIGFnYWluc3QgdGhlIElCTSB0ZXN0IGNhc2VzLiIiIgogCi1Sb3VuZGluZ0RpY3QgPSB7J2NlaWxpbmcnIDogUk9VTkRfQ0VJTElORywgI01hcHMgdGVzdC1jYXNlIG5hbWVzIHRvIHJvdW5kaW5ncy4KLSAgICAgICAgICAgICAgICAnZG93bicgOiBST1VORF9ET1dOLAotICAgICAgICAgICAgICAgICdmbG9vcicgOiBST1VORF9GTE9PUiwKLSAgICAgICAgICAgICAgICAnaGFsZl9kb3duJyA6IFJPVU5EX0hBTEZfRE9XTiwKLSAgICAgICAgICAgICAgICAnaGFsZl9ldmVuJyA6IFJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgICAgICAgICAnaGFsZl91cCcgOiBST1VORF9IQUxGX1VQLAotICAgICAgICAgICAgICAgICd1cCcgOiBST1VORF9VUCwKLSAgICAgICAgICAgICAgICAnMDV1cCcgOiBST1VORF8wNVVQfQotCi0jIE5hbWUgYWRhcHRlciB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgRGVjaW1hbCBhbmQgQ29udGV4dAotIyBpbnRlcmZhY2Ugd2l0aG91dCBjaGFuZ2luZyB0aGUgdGVzdCBmaWxlcyBmcm9tIENvd2xpc2hhdwotbmFtZUFkYXB0ZXIgPSB7J2FuZCc6J2xvZ2ljYWxfYW5kJywKLSAgICAgICAgICAgICAgICdhcHBseSc6J19hcHBseScsCi0gICAgICAgICAgICAgICAnY2xhc3MnOidudW1iZXJfY2xhc3MnLAotICAgICAgICAgICAgICAgJ2NvbXBhcmVzaWcnOidjb21wYXJlX3NpZ25hbCcsCi0gICAgICAgICAgICAgICAnY29tcGFyZXRvdGFsJzonY29tcGFyZV90b3RhbCcsCi0gICAgICAgICAgICAgICAnY29tcGFyZXRvdG1hZyc6J2NvbXBhcmVfdG90YWxfbWFnJywKLSAgICAgICAgICAgICAgICdjb3B5JzonY29weV9kZWNpbWFsJywKLSAgICAgICAgICAgICAgICdjb3B5YWJzJzonY29weV9hYnMnLAotICAgICAgICAgICAgICAgJ2NvcHluZWdhdGUnOidjb3B5X25lZ2F0ZScsCi0gICAgICAgICAgICAgICAnY29weXNpZ24nOidjb3B5X3NpZ24nLAotICAgICAgICAgICAgICAgJ2RpdmlkZWludCc6J2RpdmlkZV9pbnQnLAotICAgICAgICAgICAgICAgJ2ludmVydCc6J2xvZ2ljYWxfaW52ZXJ0JywKLSAgICAgICAgICAgICAgICdpc2Nhbm9uaWNhbCc6J2lzX2Nhbm9uaWNhbCcsCi0gICAgICAgICAgICAgICAnaXNmaW5pdGUnOidpc19maW5pdGUnLAotICAgICAgICAgICAgICAgJ2lzaW5maW5pdGUnOidpc19pbmZpbml0ZScsCi0gICAgICAgICAgICAgICAnaXNuYW4nOidpc19uYW4nLAotICAgICAgICAgICAgICAgJ2lzbm9ybWFsJzonaXNfbm9ybWFsJywKLSAgICAgICAgICAgICAgICdpc3FuYW4nOidpc19xbmFuJywKLSAgICAgICAgICAgICAgICdpc3NpZ25lZCc6J2lzX3NpZ25lZCcsCi0gICAgICAgICAgICAgICAnaXNzbmFuJzonaXNfc25hbicsCi0gICAgICAgICAgICAgICAnaXNzdWJub3JtYWwnOidpc19zdWJub3JtYWwnLAotICAgICAgICAgICAgICAgJ2lzemVybyc6J2lzX3plcm8nLAotICAgICAgICAgICAgICAgJ21heG1hZyc6J21heF9tYWcnLAotICAgICAgICAgICAgICAgJ21pbm1hZyc6J21pbl9tYWcnLAotICAgICAgICAgICAgICAgJ25leHRtaW51cyc6J25leHRfbWludXMnLAotICAgICAgICAgICAgICAgJ25leHRwbHVzJzonbmV4dF9wbHVzJywKLSAgICAgICAgICAgICAgICduZXh0dG93YXJkJzonbmV4dF90b3dhcmQnLAotICAgICAgICAgICAgICAgJ29yJzonbG9naWNhbF9vcicsCi0gICAgICAgICAgICAgICAncmVkdWNlJzonbm9ybWFsaXplJywKLSAgICAgICAgICAgICAgICdyZW1haW5kZXJuZWFyJzoncmVtYWluZGVyX25lYXInLAotICAgICAgICAgICAgICAgJ3NhbWVxdWFudHVtJzonc2FtZV9xdWFudHVtJywKLSAgICAgICAgICAgICAgICdzcXVhcmVyb290Jzonc3FydCcsCi0gICAgICAgICAgICAgICAndG9lbmcnOid0b19lbmdfc3RyaW5nJywKLSAgICAgICAgICAgICAgICd0b2ludGVncmFsJzondG9faW50ZWdyYWxfdmFsdWUnLAotICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWx4JzondG9faW50ZWdyYWxfZXhhY3QnLAotICAgICAgICAgICAgICAgJ3Rvc2NpJzondG9fc2NpX3N0cmluZycsCi0gICAgICAgICAgICAgICAneG9yJzonbG9naWNhbF94b3InLAotICAgICAgICAgICAgICB9Ci0KLSMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIFRydWUvRmFsc2UgcmF0aGVyIHRoYW4gYSBEZWNpbWFsIGluc3RhbmNlCi0KLUxPR0lDQUxfRlVOQ1RJT05TID0gKAotICAgICdpc19jYW5vbmljYWwnLAotICAgICdpc19maW5pdGUnLAotICAgICdpc19pbmZpbml0ZScsCi0gICAgJ2lzX25hbicsCi0gICAgJ2lzX25vcm1hbCcsCi0gICAgJ2lzX3FuYW4nLAotICAgICdpc19zaWduZWQnLAotICAgICdpc19zbmFuJywKLSAgICAnaXNfc3Vibm9ybWFsJywKLSAgICAnaXNfemVybycsCi0gICAgJ3NhbWVfcXVhbnR1bScsCi0gICAgKQotCi1jbGFzcyBEZWNpbWFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQ2xhc3Mgd2hpY2ggdGVzdHMgdGhlIERlY2ltYWwgY2xhc3MgYWdhaW5zdCB0aGUgdGVzdCBjYXNlcy4KLQotICAgIENoYW5nZWQgZm9yIHVuaXR0ZXN0LgotICAgICIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5jb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuY29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKyAgICAgICAgc2VsZi5yZWFkY29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKICAgICAgICAgc2VsZi5pZ25vcmVfbGlzdCA9IFsnIyddCi0gICAgICAgICMgQmFzaWNhbGx5LCBhICMgbWVhbnMgcmV0dXJuIE5hTiBJbnZhbGlkT3BlcmF0aW9uLgotICAgICAgICAjIERpZmZlcmVudCBmcm9tIGEgc05hTiBpbiB0cmltCiAKKyAgICAgICAgIyBMaXN0IG9mIGluZGl2aWR1YWwgLmRlY1Rlc3QgdGVzdCBpZHMgdGhhdCBjb3JyZXNwb25kIHRvIHRlc3RzIHRoYXQKKyAgICAgICAgIyB3ZSdyZSBza2lwcGluZyBmb3Igb25lIHJlYXNvbiBvciBhbm90aGVyLgorICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMgPSBzZXQoWworICAgICAgICAgICAgIyBTa2lwIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHNjYWxlYiB0ZXN0cy4KKyAgICAgICAgICAgICdzY2J4MTY0JywKKyAgICAgICAgICAgICdzY2J4MTY1JywKKworICAgICAgICAgICAgIyBGb3Igc29tZSBvcGVyYXRpb25zIChjdXJyZW50bHkgZXhwLCBsbiwgbG9nMTAsIHBvd2VyKSwgdGhlIGRlY051bWJlcgorICAgICAgICAgICAgIyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW1wb3NlcyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBvbiB0aGUgY29udGV4dAorICAgICAgICAgICAgIyBhbmQgb3BlcmFuZHMuICBUaGVzZSByZXN0cmljdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uOworICAgICAgICAgICAgIyBob3dldmVyLCB0aGUgZWZmZWN0IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBkb2VzIHNob3cgdXAgaW4gc29tZSBvZiB0aGUKKyAgICAgICAgICAgICMgdGVzdGNhc2VzLiAgV2Ugc2tpcCB0ZXN0Y2FzZXMgdGhhdCB2aW9sYXRlIHRoZXNlIHJlc3RyaWN0aW9ucywgc2luY2UKKyAgICAgICAgICAgICMgRGVjaW1hbCBiZWhhdmVzIGRpZmZlcmVudGx5IGZyb20gZGVjTnVtYmVyIGZvciB0aGVzZSB0ZXN0Y2FzZXMgc28gdGhlc2UKKyAgICAgICAgICAgICMgdGVzdGNhc2VzIHdvdWxkIG90aGVyd2lzZSBmYWlsLgorICAgICAgICAgICAgJ2V4cHg5MDEnLAorICAgICAgICAgICAgJ2V4cHg5MDInLAorICAgICAgICAgICAgJ2V4cHg5MDMnLAorICAgICAgICAgICAgJ2V4cHg5MDUnLAorICAgICAgICAgICAgJ2xueDkwMScsCisgICAgICAgICAgICAnbG54OTAyJywKKyAgICAgICAgICAgICdsbng5MDMnLAorICAgICAgICAgICAgJ2xueDkwNScsCisgICAgICAgICAgICAnbG9neDkwMScsCisgICAgICAgICAgICAnbG9neDkwMicsCisgICAgICAgICAgICAnbG9neDkwMycsCisgICAgICAgICAgICAnbG9neDkwNScsCisgICAgICAgICAgICAncG93eDExODMnLAorICAgICAgICAgICAgJ3Bvd3gxMTg0JywKKyAgICAgICAgICAgICdwb3d4NDAwMScsCisgICAgICAgICAgICAncG93eDQwMDInLAorICAgICAgICAgICAgJ3Bvd3g0MDAzJywKKyAgICAgICAgICAgICdwb3d4NDAwNScsCisgICAgICAgICAgICAncG93eDQwMDgnLAorICAgICAgICAgICAgJ3Bvd3g0MDEwJywKKyAgICAgICAgICAgICdwb3d4NDAxMicsCisgICAgICAgICAgICAncG93eDQwMTQnLAorICAgICAgICAgICAgXSkKKworICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgICMgc3RhdHVzIGhhcyBhZGRpdGlvbmFsIFN1Ym5vcm1hbCwgVW5kZXJmbG93CisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwd3N4ODAzJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3c3g4MDUnKQorICAgICAgICAgICAgIyBDb3JyZWN0IHJvdW5kaW5nIChza2lwcGVkIGZvciBkZWNOdW1iZXIsIHRvbykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzAyJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzAzJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzQyJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzQzJykKKyAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTcwNDkKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3bXgzMjUnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdteDMyNicpCisKKyAgICAgICAgIyBNYXAgdGVzdCBkaXJlY3RpdmVzIHRvIHNldHRlciBmdW5jdGlvbnMuCiAgICAgICAgIHNlbGYuQ2hhbmdlRGljdCA9IHsncHJlY2lzaW9uJyA6IHNlbGYuY2hhbmdlX3ByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAncm91bmRpbmcnIDogc2VsZi5jaGFuZ2Vfcm91bmRpbmdfbWV0aG9kLAotICAgICAgICAgICAgICAgICAgICAgICdtYXhleHBvbmVudCcgOiBzZWxmLmNoYW5nZV9tYXhfZXhwb25lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgJ21pbmV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21pbl9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAnY2xhbXAnIDogc2VsZi5jaGFuZ2VfY2xhbXB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAncm91bmRpbmcnIDogc2VsZi5jaGFuZ2Vfcm91bmRpbmdfbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heGV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21heF9leHBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW5leHBvbmVudCcgOiBzZWxmLmNoYW5nZV9taW5fZXhwb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhbXAnIDogc2VsZi5jaGFuZ2VfY2xhbXB9CisKKyAgICAgICAgIyBOYW1lIGFkYXB0ZXIgdG8gYmUgYWJsZSB0byBjaGFuZ2UgdGhlIERlY2ltYWwgYW5kIENvbnRleHQKKyAgICAgICAgIyBpbnRlcmZhY2Ugd2l0aG91dCBjaGFuZ2luZyB0aGUgdGVzdCBmaWxlcyBmcm9tIENvd2xpc2hhdy4KKyAgICAgICAgc2VsZi5OYW1lQWRhcHRlciA9IHsnYW5kJzonbG9naWNhbF9hbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBseSc6J19hcHBseScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzJzonbnVtYmVyX2NsYXNzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyZXNpZyc6J2NvbXBhcmVfc2lnbmFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyZXRvdGFsJzonY29tcGFyZV90b3RhbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmV0b3RtYWcnOidjb21wYXJlX3RvdGFsX21hZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHknOidjb3B5X2RlY2ltYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5YWJzJzonY29weV9hYnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5bmVnYXRlJzonY29weV9uZWdhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5c2lnbic6J2NvcHlfc2lnbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlkZWludCc6J2RpdmlkZV9pbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZlcnQnOidsb2dpY2FsX2ludmVydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzY2Fub25pY2FsJzonaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNmaW5pdGUnOidpc19maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc2luZmluaXRlJzonaXNfaW5maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc25hbic6J2lzX25hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzbm9ybWFsJzonaXNfbm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNxbmFuJzonaXNfcW5hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzc2lnbmVkJzonaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzbmFuJzonaXNfc25hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzc3Vibm9ybWFsJzonaXNfc3Vibm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXN6ZXJvJzonaXNfemVybycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heG1hZyc6J21heF9tYWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW5tYWcnOidtaW5fbWFnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dG1pbnVzJzonbmV4dF9taW51cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25leHRwbHVzJzonbmV4dF9wbHVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dHRvd2FyZCc6J25leHRfdG93YXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3InOidsb2dpY2FsX29yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVkdWNlJzonbm9ybWFsaXplJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVybmVhcic6J3JlbWFpbmRlcl9uZWFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtZXF1YW50dW0nOidzYW1lX3F1YW50dW0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcXVhcmVyb290Jzonc3FydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvZW5nJzondG9fZW5nX3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWwnOid0b19pbnRlZ3JhbF92YWx1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWx4JzondG9faW50ZWdyYWxfZXhhY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3NjaSc6J3RvX3NjaV9zdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4b3InOidsb2dpY2FsX3hvcid9CisKKyAgICAgICAgIyBNYXAgdGVzdC1jYXNlIG5hbWVzIHRvIHJvdW5kaW5ncy4KKyAgICAgICAgc2VsZi5Sb3VuZGluZ0RpY3QgPSB7J2NlaWxpbmcnIDogc2VsZi5kZWNpbWFsLlJPVU5EX0NFSUxJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3duJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvb3InIDogc2VsZi5kZWNpbWFsLlJPVU5EX0ZMT09SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFsZl9kb3duJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9IQUxGX0RPV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWxmX2V2ZW4nIDogc2VsZi5kZWNpbWFsLlJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbGZfdXAnIDogc2VsZi5kZWNpbWFsLlJPVU5EX0hBTEZfVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cCcgOiBzZWxmLmRlY2ltYWwuUk9VTkRfVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwNXVwJyA6IHNlbGYuZGVjaW1hbC5ST1VORF8wNVVQfQorCisgICAgICAgICMgTWFwIHRoZSB0ZXN0IGNhc2VzJyBlcnJvciBuYW1lcyB0byB0aGUgYWN0dWFsIGVycm9ycy4KKyAgICAgICAgc2VsZi5FcnJvck5hbWVzID0geydjbGFtcGVkJyA6IHNlbGYuZGVjaW1hbC5DbGFtcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25fc3ludGF4JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2J5X3plcm8nIDogc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2ltcG9zc2libGUnIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb25fdW5kZWZpbmVkJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZXhhY3QnIDogc2VsZi5kZWNpbWFsLkluZXhhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZF9jb250ZXh0JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWRfb3BlcmF0aW9uJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JyA6IHNlbGYuZGVjaW1hbC5PdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGVkJyA6IHNlbGYuZGVjaW1hbC5Sb3VuZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Ym5vcm1hbCcgOiBzZWxmLmRlY2ltYWwuU3Vibm9ybWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyZmxvdycgOiBzZWxmLmRlY2ltYWwuVW5kZXJmbG93fQorCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIFRydWUvRmFsc2UgcmF0aGVyIHRoYW4gYQorICAgICAgICAjIERlY2ltYWwgaW5zdGFuY2UuCisgICAgICAgIHNlbGYuTG9naWNhbEZ1bmN0aW9ucyA9ICgnaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2luZmluaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19uYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX25vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfcW5hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zdWJub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3plcm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbWVfcXVhbnR1bScpCisKKyAgICBkZWYgcmVhZF91bmxpbWl0ZWQoc2VsZiwgdiwgY29udGV4dCk6CisgICAgICAgICIiIldvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgMzItYml0IF9kZWNpbWFsIHZlcnNpb24uIFRoZQorICAgICAgICAgICBndWFyYW50ZWVkIG1heGltdW0gdmFsdWVzIGZvciBwcmVjLCBFbWF4IGV0Yy4gYXJlIDQyNTAwMDAwMCwKKyAgICAgICAgICAgYnV0IGhpZ2hlciB2YWx1ZXMgdXN1YWxseSB3b3JrLCBleGNlcHQgZm9yIHJhcmUgY29ybmVyIGNhc2VzLgorICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBhbGwgb2YgdGhlIElCTSB0ZXN0cyBwYXNzIHdpdGggbWF4aW11bSB2YWx1ZXMKKyAgICAgICAgICAgb2YgMTA3MDAwMDAwMC4iIiIKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfRU1BWCA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLnJlYWRjb250ZXh0Ll91bnNhZmVfc2V0cHJlYygxMDcwMDAwMDAwKQorICAgICAgICAgICAgc2VsZi5yZWFkY29udGV4dC5fdW5zYWZlX3NldGVtYXgoMTA3MDAwMDAwMCkKKyAgICAgICAgICAgIHNlbGYucmVhZGNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKC0xMDcwMDAwMDAwKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY2ltYWwuRGVjaW1hbCh2LCBjb250ZXh0KQogCiAgICAgZGVmIGV2YWxfZmlsZShzZWxmLCBmaWxlKToKICAgICAgICAgZ2xvYmFsIHNraXBfZXhwZWN0ZWQKQEAgLTIyNyw3ICsyOTEsNyBAQAogICAgICAgICAgICAgICAgICNwcmludCBsaW5lCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0ID0gc2VsZi5ldmFsX2xpbmUobGluZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRGVjaW1hbEV4Y2VwdGlvbiBhcyBleGNlcHRpb246CisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuZGVjaW1hbC5EZWNpbWFsRXhjZXB0aW9uIGFzIGV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgI0V4Y2VwdGlvbiByYWlzZWQgd2hlcmUgdGhlcmUgc2hvdWxkbid0IGhhdmUgYmVlbiBvbmUuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRXhjZXB0aW9uICInK2V4Y2VwdGlvbi5fX2NsYXNzX18uX19uYW1lX18gKyAnIiByYWlzZWQgb24gbGluZSAnK2xpbmUpCiAKQEAgLTI1NCwyMyArMzE4LDIzIEBACiAgICAgZGVmIGV2YWxfZGlyZWN0aXZlKHNlbGYsIHMpOgogICAgICAgICBmdW5jdCwgdmFsdWUgPSAoeC5zdHJpcCgpLmxvd2VyKCkgZm9yIHggaW4gcy5zcGxpdCgnOicpKQogICAgICAgICBpZiBmdW5jdCA9PSAncm91bmRpbmcnOgotICAgICAgICAgICAgdmFsdWUgPSBSb3VuZGluZ0RpY3RbdmFsdWVdCisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuUm91bmRpbmdEaWN0W3ZhbHVlXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgTm9uZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgKGxhbWJkYSAqYXJnczogTm9uZSkpCiAgICAgICAgIGZ1bmN0KHZhbHVlKQogCiAgICAgZGVmIGV2YWxfZXF1YXRpb24oc2VsZiwgcyk6Ci0gICAgICAgICNnbG9iYWwgREVGQVVMVF9QUkVDSVNJT04KLSAgICAgICAgI3ByaW50IERFRkFVTFRfUFJFQ0lTSU9OCiAKICAgICAgICAgaWYgbm90IFRFU1RfQUxMIGFuZCByYW5kb20ucmFuZG9tKCkgPCAwLjkwOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgc2VsZi5jb250ZXh0LmNsZWFyX2ZsYWdzKCkKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBTaWRlcyA9IHMuc3BsaXQoJy0+JykKICAgICAgICAgICAgIEwgPSBTaWRlc1swXS5zdHJpcCgpLnNwbGl0KCkKQEAgLTI4MywyNiArMzQ3LDI2IEBACiAgICAgICAgICAgICBhbnMgPSBMWzBdCiAgICAgICAgICAgICBleGNlcHRpb25zID0gTFsxOl0KICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBJbmRleEVycm9yKToKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgICAgIHJhaXNlIHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCiAgICAgICAgIGRlZiBGaXhRdW90ZXModmFsKToKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInJyIsICdTaW5nbGVRdW90ZScpLnJlcGxhY2UoJyIiJywgJ0RvdWJsZVF1b3RlJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInIiwgJycpLnJlcGxhY2UoJyInLCAnJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCdTaW5nbGVRdW90ZScsICInIikucmVwbGFjZSgnRG91YmxlUXVvdGUnLCAnIicpCiAgICAgICAgICAgICByZXR1cm4gdmFsCiAKLSAgICAgICAgaWYgaWQgaW4gc2tpcHBlZF90ZXN0X2lkczoKKyAgICAgICAgaWYgaWQgaW4gc2VsZi5za2lwcGVkX3Rlc3RfaWRzOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgZm5hbWUgPSBuYW1lQWRhcHRlci5nZXQoZnVuY3QsIGZ1bmN0KQorICAgICAgICBmbmFtZSA9IHNlbGYuTmFtZUFkYXB0ZXIuZ2V0KGZ1bmN0LCBmdW5jdCkKICAgICAgICAgaWYgZm5hbWUgPT0gJ3Jlc2NhbGUnOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGZ1bmN0ID0gZ2V0YXR0cihzZWxmLmNvbnRleHQsIGZuYW1lKQogICAgICAgICB2YWxzID0gW10KICAgICAgICAgY29uZ2xvbWVyYXRlID0gJycKICAgICAgICAgcXVvdGUgPSAwCi0gICAgICAgIHRoZWlyZXhjZXB0aW9ucyA9IFtFcnJvck5hbWVzW3gubG93ZXIoKV0gZm9yIHggaW4gZXhjZXB0aW9uc10KKyAgICAgICAgdGhlaXJleGNlcHRpb25zID0gW3NlbGYuRXJyb3JOYW1lc1t4Lmxvd2VyKCldIGZvciB4IGluIGV4Y2VwdGlvbnNdCiAKLSAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBTaWduYWxzOgorICAgICAgICBmb3IgZXhjZXB0aW9uIGluIFNpZ25hbHNbc2VsZi5kZWNpbWFsXToKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMSAjQ2F0Y2ggdGhlc2UgYnVncy4uLgogICAgICAgICBmb3IgZXhjZXB0aW9uIGluIHRoZWlyZXhjZXB0aW9uczoKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMApAQCAtMzI0LDcgKzM4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Qoc2VsZi5jb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHYpKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLCBzLCBlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzMyLDcgKzM5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXJyb3JdID0gMAogICAgICAgICAgICAgICAgIHYgPSBzZWxmLmNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IERlY2ltYWwodiwgc2VsZi5jb250ZXh0KQorICAgICAgICAgICAgICAgIHYgPSBzZWxmLnJlYWRfdW5saW1pdGVkKHYsIHNlbGYuY29udGV4dCkKICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHYpCiAKICAgICAgICAgYW5zID0gRml4UXVvdGVzKGFucykKQEAgLTM0NCw3ICs0MDgsNyBAQAogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNTIsMTQgKzQxNiwxNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAwCiAKICAgICAgICAgICAgICMgYXMgYWJvdmUsIGJ1dCBhZGQgdHJhcHMgY3VtdWxhdGl2ZWx5LCB0byBjaGVjayBwcmVjZWRlbmNlCi0gICAgICAgICAgICBvcmRlcmVkX2Vycm9ycyA9IFtlIGZvciBlIGluIE9yZGVyZWRTaWduYWxzIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQorICAgICAgICAgICAgb3JkZXJlZF9lcnJvcnMgPSBbZSBmb3IgZSBpbiBPcmRlcmVkU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQogICAgICAgICAgICAgZm9yIGVycm9yIGluIG9yZGVyZWRfZXJyb3JzOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAxCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXM7IGV4cGVjdGVkICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShlKSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNzMsNTQgKzQzNyw2OSBAQAogICAgICAgICAgICAgcHJpbnQoIi0tIiwgc2VsZi5jb250ZXh0KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHQgPSBzdHIoZnVuY3QoKnZhbHMpKQotICAgICAgICAgICAgaWYgZm5hbWUgaW4gTE9HSUNBTF9GVU5DVElPTlM6CisgICAgICAgICAgICBpZiBmbmFtZSBpbiBzZWxmLkxvZ2ljYWxGdW5jdGlvbnM6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyKGludChldmFsKHJlc3VsdCkpKSAjICdUcnVlJywgJ0ZhbHNlJyAtPiAnMScsICcwJwotICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlcnJvcjoKKyAgICAgICAgZXhjZXB0IFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBhcyBlcnJvcjoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmFpc2VkICVzIGluICVzIiAlIChlcnJvciwgcykpCiAgICAgICAgIGV4Y2VwdDogI0NhdGNoIGFueSBlcnJvciBsb25nIGVub3VnaCB0byBzdGF0ZSB0aGUgdGVzdCBjYXNlLgogICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiIsIHMpCiAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIG15ZXhjZXB0aW9ucyA9IHNlbGYuZ2V0ZXhjZXB0aW9ucygpCi0gICAgICAgIHNlbGYuY29udGV4dC5jbGVhcl9mbGFncygpCiAKICAgICAgICAgbXlleGNlcHRpb25zLnNvcnQoa2V5PXJlcHIpCiAgICAgICAgIHRoZWlyZXhjZXB0aW9ucy5zb3J0KGtleT1yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBhbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCBhbnN3ZXIgZm9yICcgKyBzICsgJyAtLSBnb3QgJyArIHJlc3VsdCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZXhjZXB0aW9ucywgdGhlaXJleGNlcHRpb25zLAogICAgICAgICAgICAgICAnSW5jb3JyZWN0IGZsYWdzIHNldCBpbiAnICsgcyArICcgLS0gZ290ICcgKyBzdHIobXlleGNlcHRpb25zKSkKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgZ2V0ZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtlIGZvciBlIGluIFNpZ25hbHMgaWYgc2VsZi5jb250ZXh0LmZsYWdzW2VdXQorICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIHNlbGYuY29udGV4dC5mbGFnc1tlXV0KIAogICAgIGRlZiBjaGFuZ2VfcHJlY2lzaW9uKHNlbGYsIHByZWMpOgotICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRwcmVjKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKICAgICBkZWYgY2hhbmdlX3JvdW5kaW5nX21ldGhvZChzZWxmLCByb3VuZGluZyk6CiAgICAgICAgIHNlbGYuY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCiAgICAgZGVmIGNoYW5nZV9taW5fZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtaW4gPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWluID0gZXhwCiAgICAgZGVmIGNoYW5nZV9tYXhfZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtYXggPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWF4KGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWF4ID0gZXhwCiAgICAgZGVmIGNoYW5nZV9jbGFtcChzZWxmLCBjbGFtcCk6CiAgICAgICAgIHNlbGYuY29udGV4dC5jbGFtcCA9IGNsYW1wCiAKLQorY2xhc3MgQ0lCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUlCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBQCiAKICMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIHRlc3QgdGhlIGJlaGF2aW91ciBvZiBEZWNpbWFsIGFjY29yZGluZyB0byBQRVAgMzI3CiAKLWNsYXNzIERlY2ltYWxFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBFeHBsaWNpdCBDb25zdHJ1Y3Rpb24gY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2VtcHR5KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCksIERlY2ltYWwoIjAiKSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fTm9uZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21faW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNDUpCkBAIC00MzgsNyArNTE3LDE4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnMCcpCiAKKyAgICAgICAgIyBzaW5nbGUgd29yZCBsb25ncworICAgICAgICBmb3IgbiBpbiByYW5nZSgwLCAzMik6CisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoLTEsIDEpOgorICAgICAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgaSA9IHNpZ24gKiAoMioqbiArIHgpCisgICAgICAgICAgICAgICAgICAgIGQgPSBEZWNpbWFsKGkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCBzdHIoaSkpCisKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CiAKICAgICAgICAgI2VtcHR5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJycpKSwgJ05hTicpCkBAIC00NTgsOCArNTQ4LDM1IEBACiAgICAgICAgICNsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHBlcm1pdHRlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcxLjNFNCBcbicpKSwgJzEuM0UrNCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJyAgLTcuODknKSksICctNy44OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIiAgMy40NTY3OSAgIikpLCAnMy40NTY3OScpCisKKyAgICAgICAgIyB1bmljb2RlIHdoaXRlc3BhY2UKKyAgICAgICAgZm9yIGxlYWQgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICBmb3IgdHJhaWwgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbChsZWFkICsgJzkuMzExRSsyOCcgKyB0cmFpbCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzkuMzExRSsyOCcpCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgICMgSW52YWxpZCBzdHJpbmcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJ4eXoiKQorICAgICAgICAgICAgIyBUd28gYXJndW1lbnRzIG1heAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsLCAiMTIzNCIsICJ4IiwgInkiKQorCisgICAgICAgICAgICAjIHNwYWNlIHdpdGhpbiB0aGUgbnVtZXJpYyBwYXJ0CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMVx1MDBhMDJcdTAwYTAzIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTAxXHUwMGEwMlx1MDBhMCIpCisKKyAgICAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiXHUwMGEwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTBcdTAwYTAiKQorCisgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCisKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fdHVwbGVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjemVybwogICAgICAgICBkID0gRGVjaW1hbCggKDAsICgwLCksIDApICkKQEAgLTQ3Nyw2ICs1OTQsMTAgQEAKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNCksIC0yNSkgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCiAKKyAgICAgICAgI2luZgorICAgICAgICBkID0gRGVjaW1hbCggKDAsICgpLCAiRiIpICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICdJbmZpbml0eScpCisKICAgICAgICAgI3dyb25nIG51bWJlciBvZiBpdGVtcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsIDksIDEpKSApCiAKQEAgLTQ5MSw0NSArNjEyLDYzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMywgNCwgOSwgMSksICcxJykgKQogCiAgICAgICAgICNiYWQgY29lZmZpY2llbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAieHl6IiwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsIE5vbmUsIDEpLCAyKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgLTMsIDQsIDksIDEpLCAyKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMTAsIDQsIDksIDEpLCAyKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMywgNCwgJ2EnLCAxKSwgMikgKQogCisgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9saXN0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBkID0gRGVjaW1hbChbMCwgWzBdLCAwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICcwJykKKworICAgICAgICBkID0gRGVjaW1hbChbMSwgWzQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDRdLCAtMjVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzEsICg0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0KSwgLTI1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQorCisgICAgICAgIGQgPSBEZWNpbWFsKCgxLCBbNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNF0sIC0yNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnLTQuMzQ5MTM1MzRFLTE3JykKKwogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fYm9vbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgc2VsZi5hc3NlcnRJcyhib29sKERlY2ltYWwoMCkpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhib29sKERlY2ltYWwoMSkpLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoRmFsc2UpLCBEZWNpbWFsKDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoVHJ1ZSksIERlY2ltYWwoMSkpCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX0RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICNwb3NpdGl2ZQogICAgICAgICBkID0gRGVjaW1hbCg0NSkKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICc0NScpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCiAgICAgICAgICN2ZXJ5IGxhcmdlIHBvc2l0aXZlCiAgICAgICAgIGQgPSBEZWNpbWFsKDUwMDAwMDEyMykKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICc1MDAwMDAxMjMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjbmVnYXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoLTQ1KQogICAgICAgICBlID0gRGVjaW1hbChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJy00NScpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCiAgICAgICAgICN6ZXJvCiAgICAgICAgIGQgPSBEZWNpbWFsKDApCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9mbG9hdChzZWxmKToKKworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICByID0gRGVjaW1hbCgwLjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgRGVjaW1hbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksCkBAIC01NTAsOCArNjg5LDExIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KERlY2ltYWwoeCkpKSAjIHJvdW5kdHJpcAogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfY29udGV4dF9jcmVhdGVfZGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKIAotICAgICAgICBuYyA9IGNvcHkuY29weShnZXRjb250ZXh0KCkpCisgICAgICAgIG5jID0gY29weS5jb3B5KHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0KCkpCiAgICAgICAgIG5jLnByZWMgPSAzCiAKICAgICAgICAgIyBlbXB0eQpAQCAtNTkyLDcgKzczNCw3MyBAQAogICAgICAgICBkID0gbmMuY3JlYXRlX2RlY2ltYWwocHJldmRlYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICc1LjAwRSs4JykKIAorICAgICAgICAjIG1vcmUgaW50ZWdlcnMKKyAgICAgICAgbmMucHJlYyA9IDI4CisgICAgICAgIG5jLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgIGZvciB2IGluIFstMioqNjMtMSwgLTIqKjYzLCAtMioqMzEtMSwgLTIqKjMxLCAwLAorICAgICAgICAgICAgICAgICAgIDIqKjMxLTEsIDIqKjMxLCAyKio2My0xLCAyKio2M106CisgICAgICAgICAgICBkID0gbmMuY3JlYXRlX2RlY2ltYWwodikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGQsIERlY2ltYWwpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZCksIHYpCisKKyAgICAgICAgbmMucHJlYyA9IDMKKyAgICAgICAgbmMudHJhcHNbUm91bmRlZF0gPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJvdW5kZWQsIG5jLmNyZWF0ZV9kZWNpbWFsLCAxMjM0KQorCisgICAgICAgICMgZnJvbSBzdHJpbmcKKyAgICAgICAgbmMucHJlYyA9IDI4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCcwRS0wMTcnKSksICcwRS0xNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCc0NScpKSwgJzQ1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJy1JbmYnKSksICctSW5maW5pdHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnTmFOMTIzJykpLCAnTmFOMTIzJykKKworICAgICAgICAjIGludmFsaWQgYXJndW1lbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAieHl6IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICgxLCAieHl6IiwgLTI1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyMzQiLCAiNTY3OCIpCisKKyAgICAgICAgIyB0b28gbWFueSBOYU4gcGF5bG9hZCBkaWdpdHMKKyAgICAgICAgbmMucHJlYyA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICdOYU4xMjM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCdOYU4xMjM0NScpKQorCisgICAgICAgIG5jLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTjEyMzQ1JykpLCAnTmFOJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgIG5jLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoRGVjaW1hbCgnTmFOMTIzNDUnKSkpLCAnTmFOJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfY29udGV4dF9jcmVhdGVfZnJvbV9mbG9hdChzZWxmKToKKworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBuYyA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKyAgICAgICAgciA9IG5jLmNyZWF0ZV9kZWNpbWFsKDAuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHIpLCBEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwgJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnbmFuJykpLmlzX3FuYW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCdpbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCctaW5mJykpLmlzX2luZmluaXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCduYW4nKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnTmFOJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnaW5mJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ0luZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLWluZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctSW5maW5pdHknKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCctMC4wJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJy0wJykpKQorICAgICAgICBuYy5wcmVjID0gMTAwCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQobmMuY3JlYXRlX2RlY2ltYWwoeCkpKSAjIHJvdW5kdHJpcAorCiAgICAgZGVmIHRlc3RfdW5pY29kZV9kaWdpdHMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHRlc3RfdmFsdWVzID0gewogICAgICAgICAgICAgJ1x1ZmYxMSc6ICcxJywKICAgICAgICAgICAgICdcdTA2NjAuXHUwNjYwXHUwNjYzXHUwNjY3XHUwNjYyZS1cdTA2NjMnIDogJzAuMDAwMDM3MicsCkBAIC02MDEsMjkgKzgwOSw0MSBAQAogICAgICAgICBmb3IgaW5wdXQsIGV4cGVjdGVkIGluIHRlc3RfdmFsdWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKGlucHV0KSksIGV4cGVjdGVkKQogCitjbGFzcyBDRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5RXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotY2xhc3MgRGVjaW1hbEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1VuaXQgdGVzdHMgZm9yIEltcGxpY2l0IENvbnN0cnVjdGlvbiBjYXNlcyBvZiBEZWNpbWFsLicnJwogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9Ob25lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgTm9uZScsIGdsb2JhbHMoKSkKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyBOb25lJywgbG9jYWxzKCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX2ludChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgI25vcm1hbAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKDUpICsgNDUpLCAnNTAnKQogICAgICAgICAjZXhjZWVkaW5nIHByZWNpc2lvbgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNSkgKyAxMjM0NTY3ODkwMDAsIERlY2ltYWwoMTIzNDU2Nzg5MDAwKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fc3RyaW5nKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgIjMiJywgZ2xvYmFscygpKQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArICIzIicsIGxvY2FscygpKQogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9mbG9hdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArIDIuMicsIGdsb2JhbHMoKSkKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAyLjInLCBsb2NhbHMoKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fRGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1KSArIERlY2ltYWwoNDUpLCBEZWNpbWFsKDUwKSkKIAogICAgIGRlZiB0ZXN0X3JvcChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgIyBBbGxvdyBvdGhlciBjbGFzc2VzIHRvIGJlIHRyYWluZWQgdG8gaW50ZXJhY3Qgd2l0aCBEZWNpbWFscwogICAgICAgICBjbGFzcyBFOgogICAgICAgICAgICAgZGVmIF9fZGl2bW9kX18oc2VsZiwgb3RoZXIpOgpAQCAtNjcxLDEwICs4OTEsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgnRGVjaW1hbCgxMCknICsgc3ltICsgJ0UoKScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTAnICsgcm9wICsgJ3N0cicpCiAKK2NsYXNzIENJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QoSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QoSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KToKKyAgICBkZWNpbWFsID0gUAogCi1jbGFzcyBEZWNpbWFsRm9ybWF0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBGb3JtYXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciB0aGUgZm9ybWF0IGZ1bmN0aW9uLicnJwogICAgIGRlZiB0ZXN0X2Zvcm1hdHRpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICMgdHJpcGxlcyBnaXZpbmcgYSBmb3JtYXQsIGEgRGVjaW1hbCwgYW5kIHRoZSBleHBlY3RlZCByZXN1bHQKICAgICAgICAgdGVzdF92YWx1ZXMgPSBbCiAgICAgICAgICAgICAoJ2UnLCAnMEUtMTUnLCAnMGUtMTUnKSwKQEAgLTczMCw2ICs5NTYsNyBAQAogICAgICAgICAgICAgKCdnJywgJzBFLTcnLCAnMGUtNycpLAogICAgICAgICAgICAgKCdnJywgJy0wRTInLCAnLTBlKzInKSwKICAgICAgICAgICAgICgnLjBnJywgJzMuMTQxNTkyNjUnLCAnMycpLCAgIyAwIHNpZyBmaWcgLT4gMSBzaWcgZmlnCisgICAgICAgICAgICAoJy4wbicsICczLjE0MTU5MjY1JywgJzMnKSwgICMgc2FtZSBmb3IgJ24nCiAgICAgICAgICAgICAoJy4xZycsICczLjE0MTU5MjY1JywgJzMnKSwKICAgICAgICAgICAgICgnLjJnJywgJzMuMTQxNTkyNjUnLCAnMy4xJyksCiAgICAgICAgICAgICAoJy41ZycsICczLjE0MTU5MjY1JywgJzMuMTQxNicpLApAQCAtODE0LDU2ICsxMDQxLDYwIEBACiAKICAgICAgICAgICAgICMgaXNzdWUgNjg1MAogICAgICAgICAgICAgKCdhPS03LjAnLCAnMC4xMjM0NScsICdhYWFhMC4xJyksCi0KLSAgICAgICAgICAgICMgSXNzdWUgNzA5NDogQWx0ZXJuYXRlIGZvcm1hdHRpbmcgKHNwZWNpZmllZCBieSAjKQotICAgICAgICAgICAgKCcuMGUnLCAnMS4wJywgJzFlKzAnKSwKLSAgICAgICAgICAgICgnIy4wZScsICcxLjAnLCAnMS5lKzAnKSwKLSAgICAgICAgICAgICgnLjBmJywgJzEuMCcsICcxJyksCi0gICAgICAgICAgICAoJyMuMGYnLCAnMS4wJywgJzEuJyksCi0gICAgICAgICAgICAoJ2cnLCAnMS4xJywgJzEuMScpLAotICAgICAgICAgICAgKCcjZycsICcxLjEnLCAnMS4xJyksCi0gICAgICAgICAgICAoJy4wZycsICcxJywgJzEnKSwKLSAgICAgICAgICAgICgnIy4wZycsICcxJywgJzEuJyksCi0gICAgICAgICAgICAoJy4wJScsICcxLjAnLCAnMTAwJScpLAotICAgICAgICAgICAgKCcjLjAlJywgJzEuMCcsICcxMDAuJScpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZm10LCBkLCByZXN1bHQgaW4gdGVzdF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChEZWNpbWFsKGQpLCBmbXQpLCByZXN1bHQpCiAKKyAgICAgICAgIyBieXRlcyBmb3JtYXQgYXJndW1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sIGInLTAyMCcpCisKICAgICBkZWYgdGVzdF9uX2Zvcm1hdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZnJvbSBsb2NhbGUgaW1wb3J0IENIQVJfTUFYCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGRlZiBtYWtlX2dyb3VwaW5nKGxzdCk6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihbY2hyKHgpIGZvciB4IGluIGxzdF0pIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGVsc2UgbHN0CisKKyAgICAgICAgZGVmIGdldF9mbXQoeCwgb3ZlcnJpZGU9Tm9uZSwgZm10PSduJyk6CisgICAgICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbCh4KS5fX2Zvcm1hdF9fKGZtdCwgb3ZlcnJpZGUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHgpLl9fZm9ybWF0X18oZm10LCBfbG9jYWxlY29udj1vdmVycmlkZSkKKwogICAgICAgICAjIFNldCB1cCBzb21lIGxvY2FsZWNvbnYtbGlrZSBkaWN0aW9uYXJpZXMKICAgICAgICAgZW5fVVMgPSB7CiAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLicsCi0gICAgICAgICAgICAnZ3JvdXBpbmcnIDogWzMsIDMsIDBdLAotICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnOiAnLCcKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKICAgICAgICAgICAgIH0KIAogICAgICAgICBmcl9GUiA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcsJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbQ0hBUl9NQVhdLAorICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IG1ha2VfZ3JvdXBpbmcoW0NIQVJfTUFYXSksCiAgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnJwogICAgICAgICAgICAgfQogCiAgICAgICAgIHJ1X1JVID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJywnLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFszLCAzLCAwXSwKKyAgICAgICAgICAgICdncm91cGluZyc6IG1ha2VfZ3JvdXBpbmcoWzMsIDMsIDBdKSwKICAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICcgJwogICAgICAgICAgICAgfQogCiAgICAgICAgIGNyYXp5ID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJyYnLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFsxLCA0LCAyLCBDSEFSX01BWF0sCisgICAgICAgICAgICAnZ3JvdXBpbmcnOiBtYWtlX2dyb3VwaW5nKFsxLCA0LCAyLCBDSEFSX01BWF0pLAogICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJy0nCiAgICAgICAgICAgICB9CiAKLQotICAgICAgICBkZWYgZ2V0X2ZtdCh4LCBsb2NhbGUsIGZtdD0nbicpOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwuX19mb3JtYXRfXyhEZWNpbWFsKHgpLCBmbXQsIF9sb2NhbGVjb252PWxvY2FsZSkKKyAgICAgICAgZG90c2VwX3dpZGUgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiBiJ1x4YzJceGJmJy5kZWNvZGUoJ3V0Zi04JyksCisgICAgICAgICAgICAnZ3JvdXBpbmcnOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiBiJ1x4YzJceGI0Jy5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIH0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoRGVjaW1hbCgnMTIuNycpLCBlbl9VUyksICcxMi43JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJzEyLjcnKSwgZnJfRlIpLCAnMTIsNycpCkBAIC05MDIsMTEgKzExMzMsMzQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KDEyMzQ1NiwgY3JhenksICcwMTJuJyksICcwMC0wMS0yMzQ1LTYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoMTIzNDU2LCBjcmF6eSwgJzAxM24nKSwgJzAwMC0wMS0yMzQ1LTYnKQogCisgICAgICAgICMgd2lkZSBjaGFyIHNlcGFyYXRvciBhbmQgZGVjaW1hbCBwb2ludAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoRGVjaW1hbCgnLTEuNScpLCBkb3RzZXBfd2lkZSwgJzAyMG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnLTBcdTAwYjQwMDBcdTAwYjQwMDBcdTAwYjQwMDBcdTAwYjQwMDFcdTAwYmY1JykKIAotY2xhc3MgRGVjaW1hbEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAncHNfQUYnKQorICAgIGRlZiB0ZXN0X3dpZGVfY2hhcl9zZXBhcmF0b3JfZGVjaW1hbF9wb2ludChzZWxmKToKKyAgICAgICAgIyBsb2NhbGUgd2l0aCB3aWRlIGNoYXIgc2VwYXJhdG9yIGFuZCBkZWNpbWFsIHBvaW50CisgICAgICAgIGltcG9ydCBsb2NhbGUKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZGVjaW1hbF9wb2ludCA9IGxvY2FsZS5sb2NhbGVjb252KClbJ2RlY2ltYWxfcG9pbnQnXQorICAgICAgICB0aG91c2FuZHNfc2VwID0gbG9jYWxlLmxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCisgICAgICAgIGlmIGRlY2ltYWxfcG9pbnQgIT0gJ1x1MDY2Yicgb3IgdGhvdXNhbmRzX3NlcCAhPSAnXHUwNjZjJzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KERlY2ltYWwoJzEwMDAwMDAwMC4xMjMnKSwgJ24nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTAwXHUwNjZjMDAwXHUwNjZjMDAwXHUwNjZiMTIzJykKKworY2xhc3MgQ0Zvcm1hdFRlc3QoRm9ybWF0VGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Rm9ybWF0VGVzdChGb3JtYXRUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBBcml0aG1ldGljT3BlcmF0b3JzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgYWxsIGFyaXRobWV0aWMgb3BlcmF0b3JzLCBiaW5hcnkgYW5kIHVuYXJ5LicnJwogCiAgICAgZGVmIHRlc3RfYWRkaXRpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTExLjEnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzIyLjInKQpAQCAtOTM0LDYgKzExODgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxNi4xJykpCiAKICAgICBkZWYgdGVzdF9zdWJ0cmFjdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctMTEuMScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMjIuMicpCkBAIC05NjEsNiArMTIxNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy0zOC4zJykpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsaWNhdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMycpCkBAIC05ODgsNiArMTI0NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy03NScpKQogCiAgICAgZGVmIHRlc3RfZGl2aXNpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTAxNSw2ICsxMjcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnLTAuNjI1JykpCiAKICAgICBkZWYgdGVzdF9mbG9vcl9kaXZpc2lvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwNDIsNiArMTMwMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJzEnKSkKIAogICAgIGRlZiB0ZXN0X3Bvd2VyaW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTA2OSw2ICsxMzI4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMzkwNjI1JykpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMicpCkBAIC0xMDk2LDYgKzEzNTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxJykpCiAKICAgICBkZWYgdGVzdF9mbG9vcl9kaXZfbW9kdWxlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTEyMiw2ICsxMzgzLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHEpLCB0eXBlKGQxKSkKIAogICAgIGRlZiB0ZXN0X3VuYXJ5X29wZXJhdG9ycyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgrRGVjaW1hbCg0NSksIERlY2ltYWwoKzQ1KSkgICAgICAgICAgICMgICsKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtRGVjaW1hbCg0NSksIERlY2ltYWwoLTQ1KSkgICAgICAgICAgICMgIC0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhYnMoRGVjaW1hbCg0NSkpLCBhYnMoRGVjaW1hbCgtNDUpKSkgICMgYWJzCkBAIC0xMTM0LDYgKzEzOTcsOSBAQAogCiAgICAgICAgICMgZXF1YWxpdHkgY29tcGFyaXNvbnMgKD09LCAhPSkgaW52b2x2aW5nIG9ubHkgcXVpZXQgbmFucwogICAgICAgICAjIGRvbid0IHNpZ25hbCwgYnV0IHJldHVybiBGYWxzZSBvciBUcnVlIHJlc3BlY3RpdmVseS4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CiAKICAgICAgICAgbiA9IERlY2ltYWwoJ05hTicpCiAgICAgICAgIHMgPSBEZWNpbWFsKCdzTmFOJykKQEAgLTExNzksNTMgKzE0NDUsMTI0IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG9wLCB4LCB5KQogCiAgICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBkID0gRGVjaW1hbCgxKS5jb3B5X3NpZ24oRGVjaW1hbCgtMikpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCisgICAgICAgIGQgPSBEZWNpbWFsKDEpLmNvcHlfc2lnbihEZWNpbWFsKC0yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEpLmNvcHlfc2lnbigtMiksIGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5jb3B5X3NpZ24sICctMicpCiAKK2NsYXNzIENBcml0aG1ldGljT3BlcmF0b3JzVGVzdChBcml0aG1ldGljT3BlcmF0b3JzVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5QXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QoQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QpOgorICAgIGRlY2ltYWwgPSBQCisKICMgVGhlIGZvbGxvd2luZyBhcmUgdHdvIGZ1bmN0aW9ucyB1c2VkIHRvIHRlc3QgdGhyZWFkaW5nIGluIHRoZSBuZXh0IGNsYXNzCiAKIGRlZiB0aGZ1bmMxKGNscyk6CisgICAgRGVjaW1hbCA9IGNscy5kZWNpbWFsLkRlY2ltYWwKKyAgICBJbnZhbGlkT3BlcmF0aW9uID0gY2xzLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgIERpdmlzaW9uQnlaZXJvID0gY2xzLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICBPdmVyZmxvdyA9IGNscy5kZWNpbWFsLk92ZXJmbG93CisgICAgVW5kZXJmbG93ID0gY2xzLmRlY2ltYWwuVW5kZXJmbG93CisgICAgSW5leGFjdCA9IGNscy5kZWNpbWFsLkluZXhhY3QKKyAgICBnZXRjb250ZXh0ID0gY2xzLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgIGxvY2FsY29udGV4dCA9IGNscy5kZWNpbWFsLmxvY2FsY29udGV4dAorCiAgICAgZDEgPSBEZWNpbWFsKDEpCiAgICAgZDMgPSBEZWNpbWFsKDMpCiAgICAgdGVzdDEgPSBkMS9kMwotICAgIGNscy5zeW5jaHJvLndhaXQoKQotICAgIHRlc3QyID0gZDEvZDMKLSAgICBjbHMuZmluaXNoMS5zZXQoKQogCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QxLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKLSAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorICAgIGNscy5maW5pc2gxLnNldCgpCisgICAgY2xzLnN5bmNocm8ud2FpdCgpCisKKyAgICB0ZXN0MiA9IGQxL2QzCisgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgY2xzLmFzc2VydFRydWUoYzIuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoRGl2aXNpb25CeVplcm8sIGMyLmRpdmlkZSwgZDEsIDApCisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMzoKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbRGl2aXNpb25CeVplcm9dKQorICAgICAgICAgICAgY2xzLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBjMy5jb21wYXJlLCBkMSwgRGVjaW1hbCgnc05hTicpKQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMyLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICBkZWwgYzIKKworICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCisKKyAgICBjMSA9IGdldGNvbnRleHQoKQorICAgIGNscy5hc3NlcnRUcnVlKGMxLmZsYWdzW0luZXhhY3RdKQorICAgIGZvciBzaWcgaW4gT3ZlcmZsb3csIFVuZGVyZmxvdywgRGl2aXNpb25CeVplcm8sIEludmFsaWRPcGVyYXRpb246CisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMS5mbGFnc1tzaWddKQogICAgIHJldHVybgogCiBkZWYgdGhmdW5jMihjbHMpOgorICAgIERlY2ltYWwgPSBjbHMuZGVjaW1hbC5EZWNpbWFsCisgICAgSW52YWxpZE9wZXJhdGlvbiA9IGNscy5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICBEaXZpc2lvbkJ5WmVybyA9IGNscy5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgT3ZlcmZsb3cgPSBjbHMuZGVjaW1hbC5PdmVyZmxvdworICAgIFVuZGVyZmxvdyA9IGNscy5kZWNpbWFsLlVuZGVyZmxvdworICAgIEluZXhhY3QgPSBjbHMuZGVjaW1hbC5JbmV4YWN0CisgICAgZ2V0Y29udGV4dCA9IGNscy5kZWNpbWFsLmdldGNvbnRleHQKKyAgICBsb2NhbGNvbnRleHQgPSBjbHMuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgIGQxID0gRGVjaW1hbCgxKQogICAgIGQzID0gRGVjaW1hbCgzKQogICAgIHRlc3QxID0gZDEvZDMKKwogICAgIHRoaXNjb250ZXh0ID0gZ2V0Y29udGV4dCgpCiAgICAgdGhpc2NvbnRleHQucHJlYyA9IDE4CiAgICAgdGVzdDIgPSBkMS9kMworCisgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgY2xzLmFzc2VydFRydWUoYzIuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMyLm11bHRpcGx5LCBEZWNpbWFsKCcxZTQyNTAwMDAwMCcpLCA5OTkpCisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQodGhpc2NvbnRleHQpIGFzIGMzOgorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgYzMudHJhcHNbVW5kZXJmbG93XSA9IFRydWUKKyAgICAgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoVW5kZXJmbG93LCBjMy5kaXZpZGUsIERlY2ltYWwoJzFlLTQyNTAwMDAwMCcpLCA5OTkpCisgICAgICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMy5mbGFnc1tVbmRlcmZsb3ddKQorICAgICAgICAgICAgZGVsIGMzCisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMi5mbGFnc1tVbmRlcmZsb3ddKQorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzIudHJhcHNbVW5kZXJmbG93XSkKKyAgICAgICAgZGVsIGMyCisKICAgICBjbHMuc3luY2hyby5zZXQoKQogICAgIGNscy5maW5pc2gyLnNldCgpCiAKLSAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKICAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzJykpCisKKyAgICBjbHMuYXNzZXJ0RmFsc2UodGhpc2NvbnRleHQudHJhcHNbVW5kZXJmbG93XSkKKyAgICBjbHMuYXNzZXJ0VHJ1ZSh0aGlzY29udGV4dC5mbGFnc1tJbmV4YWN0XSkKKyAgICBmb3Igc2lnIGluIE92ZXJmbG93LCBVbmRlcmZsb3csIERpdmlzaW9uQnlaZXJvLCBJbnZhbGlkT3BlcmF0aW9uOgorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UodGhpc2NvbnRleHQuZmxhZ3Nbc2lnXSkKICAgICByZXR1cm4KIAotCi1jbGFzcyBEZWNpbWFsVXNlT2ZDb250ZXh0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgJycnVW5pdCB0ZXN0cyBmb3IgVXNlIG9mIENvbnRleHQgY2FzZXMgaW4gRGVjaW1hbC4nJycKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHRocmVhZGluZwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgdGhyZWFkaW5nID0gTm9uZQorY2xhc3MgVGhyZWFkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgJycnVW5pdCB0ZXN0cyBmb3IgdGhyZWFkIGxvY2FsIGNvbnRleHRzIGluIERlY2ltYWwuJycnCiAKICAgICAjIFRha2UgY2FyZSBleGVjdXRpbmcgdGhpcyB0ZXN0IGZyb20gSURMRSwgdGhlcmUncyBhbiBpc3N1ZSBpbiB0aHJlYWRpbmcKICAgICAjIHRoYXQgaGFuZ3MgSURMRSBhbmQgSSBjb3VsZG4ndCBmaW5kIGl0CiAKICAgICBkZWYgdGVzdF90aHJlYWRpbmcoc2VsZik6Ci0gICAgICAgICNUZXN0IHRoZSAidGhyZWFkaW5nIGlzb2xhdGlvbiIgb2YgYSBDb250ZXh0LgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGFuZCBub3Qgc2VsZi5kZWNpbWFsLkhBVkVfVEhSRUFEUzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkaW5nIikKKyAgICAgICAgIyBUZXN0IHRoZSAidGhyZWFkaW5nIGlzb2xhdGlvbiIgb2YgYSBDb250ZXh0LiBBbHNvIHRlc3QgY2hhbmdpbmcKKyAgICAgICAgIyB0aGUgRGVmYXVsdENvbnRleHQsIHdoaWNoIGFjdHMgYXMgYSB0ZW1wbGF0ZSBmb3IgdGhlIHRocmVhZC1sb2NhbAorICAgICAgICAjIGNvbnRleHRzLgorICAgICAgICBzYXZlX3ByZWMgPSBEZWZhdWx0Q29udGV4dC5wcmVjCisgICAgICAgIHNhdmVfZW1heCA9IERlZmF1bHRDb250ZXh0LkVtYXgKKyAgICAgICAgc2F2ZV9lbWluID0gRGVmYXVsdENvbnRleHQuRW1pbgorICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gMjQKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWluID0gLTQyNTAwMDAwMAogCiAgICAgICAgIHNlbGYuc3luY2hybyA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuZmluaXNoMSA9IHRocmVhZGluZy5FdmVudCgpCkBAIC0xMjM5LDE3ICsxNTc2LDI5IEBACiAKICAgICAgICAgc2VsZi5maW5pc2gxLndhaXQoKQogICAgICAgICBzZWxmLmZpbmlzaDIud2FpdCgpCisKKyAgICAgICAgZm9yIHNpZyBpbiBTaWduYWxzW3NlbGYuZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKERlZmF1bHRDb250ZXh0LmZsYWdzW3NpZ10pCisKKyAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IHNhdmVfcHJlYworICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWF4ID0gc2F2ZV9lbWF4CisgICAgICAgIERlZmF1bHRDb250ZXh0LkVtaW4gPSBzYXZlX2VtaW4KICAgICAgICAgcmV0dXJuCiAKLSAgICBpZiB0aHJlYWRpbmcgaXMgTm9uZToKLSAgICAgICAgZGVsIHRlc3RfdGhyZWFkaW5nCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICd0aHJlYWRpbmcgcmVxdWlyZWQnKQorY2xhc3MgQ1RocmVhZGluZ1Rlc3QoVGhyZWFkaW5nVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ3RocmVhZGluZyByZXF1aXJlZCcpCitjbGFzcyBQeVRocmVhZGluZ1Rlc3QoVGhyZWFkaW5nVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotCi1jbGFzcyBEZWNpbWFsVXNhYmlsaXR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBVc2FiaWxpdHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBVc2FiaWxpdHkgY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25fb3BlcmF0b3JzKHNlbGYpOgogCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGRhID0gRGVjaW1hbCgnMjMuNDInKQogICAgICAgICBkYiA9IERlY2ltYWwoJzIzLjQyJykKICAgICAgICAgZGMgPSBEZWNpbWFsKCc0NScpCkBAIC0xMjgzLDYgKzE2MzIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCiAKICAgICBkZWYgdGVzdF9kZWNpbWFsX2Zsb2F0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGRhID0gRGVjaW1hbCgnMC4yNScpCiAgICAgICAgIGRiID0gRGVjaW1hbCgnMy4wJykKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRhLCAzLjApCkBAIC0xMjk5LDcgKzE2NTAsNzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLjAsIGRiKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAuMSwgRGVjaW1hbCgnMC4xJykpCiAKKyAgICBkZWYgdGVzdF9kZWNpbWFsX2NvbXBsZXhfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZGEgPSBEZWNpbWFsKCcwLjI1JykKKyAgICAgICAgZGIgPSBEZWNpbWFsKCczLjAnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhLCAoMS41KzBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgoMS41KzBqKSwgZGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGEsICgwLjI1KzBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMC4yNSswaiksIGRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgzLjArMGopLCBkYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYiwgKDMuMCswaikpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYiwgKDMuMCsxaikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoKDMuMCsxaiksIGRiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19sdF9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbGVfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkYi5fX2d0X18oMy4wKzBqKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19sZV9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9mcmFjdGlvbl9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBEID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgRiA9IGZyYWN0aW9uc1tzZWxmLmRlY2ltYWxdLkZyYWN0aW9uCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorCisKKyAgICAgICAgZW1heCA9IEMuTUFYX0VNQVggaWYgQyBlbHNlIDk5OTk5OTk5OQorICAgICAgICBlbWluID0gQy5NSU5fRU1JTiBpZiBDIGVsc2UgLTk5OTk5OTk5OQorICAgICAgICBldGlueSA9IEMuTUlOX0VUSU5ZIGlmIEMgZWxzZSAtMTk5OTk5OTk5NworICAgICAgICBjID0gQ29udGV4dChFbWF4PWVtYXgsIEVtaW49ZW1pbikKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjKToKKyAgICAgICAgICAgIGMucHJlYyA9IGVtYXgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKDApLCBGKDEsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRigtMSw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSwgRCgwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhGKDAsMSksIEQoIjFlIiArIHN0cihldGlueSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoIi0xZSIgKyBzdHIoZXRpbnkpKSwgRigwLDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEYoMCw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSwgRCgiMWUiICsgc3RyKGV0aW55KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRCgiLTFlIiArIHN0cihldGlueSkpLCBGKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4xIiksIEYoMSwxMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEYoMSwxMCksIEQoIjAuMSIpKQorCisgICAgICAgICAgICBjLnByZWMgPSAzMDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRCgxKS8zLCBGKDEsMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEYoMSwzKSwgRCgxKS8zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChGKDEyMDk4NDIzNywgOTk5OTk5OTk5OSksIEQoIjllIiArIHN0cihlbWF4KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChEKCI5ZSIgKyBzdHIoZW1heCkpLCBGKDEyMDk4NDIzNywgOTk5OTk5OTk5OSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihEKCdpbmYnKSwgRig5OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKEQoJ2luZicpLCBGKC05OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoJy1pbmYnKSwgRig5OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoJy1pbmYnKSwgRigtOTk5OTk5OTk5OTksMTIzKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRCgnbmFuJykuX19ndF9fLCBGKC05LDEyMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKE5vdEltcGxlbWVudGVkLCBGKC05LDEyMykuX19sdF9fKEQoJ25hbicpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRCgnbmFuJyksIEYoLTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRigtOSwxMjMpLCBEKCduYW4nKSkKKwogICAgIGRlZiB0ZXN0X2NvcHlfYW5kX2RlZXBjb3B5X21ldGhvZHMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGQgPSBEZWNpbWFsKCc0My4yNCcpCiAgICAgICAgIGMgPSBjb3B5LmNvcHkoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChjKSwgaWQoZCkpCkBAIC0xMzA3LDYgKzE3MjIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChkYyksIGlkKGQpKQogCiAgICAgZGVmIHRlc3RfaGFzaF9tZXRob2Qoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgICAgICBkZWYgaGFzaGl0KGQpOgogICAgICAgICAgICAgYSA9IGhhc2goZCkKICAgICAgICAgICAgIGIgPSBkLl9faGFzaF9fKCkKQEAgLTEzNjcsMjQgKzE3ODYsMjcgQEAKICAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hpdChmKSwgaGFzaGl0KGQpKQogCi0gICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIGhhc2ggZG9lc24ndCBkZXBlbmQgb24gdGhlCi0gICAgICAgICMgY3VycmVudCBjb250ZXh0IChpc3N1ZSAjMTc1NykKLSAgICAgICAgYyA9IGdldGNvbnRleHQoKQotICAgICAgICBvbGRfcHJlY2lzaW9uID0gYy5wcmVjCi0gICAgICAgIHggPSBEZWNpbWFsKCIxMjM0NTY3ODkuMSIpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIGhhc2ggZG9lc24ndCBkZXBlbmQgb24gdGhlCisgICAgICAgICAgICAjIGN1cnJlbnQgY29udGV4dCAoaXNzdWUgIzE3NTcpCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTIzNDU2Nzg5LjEiKQogCi0gICAgICAgIGMucHJlYyA9IDYKLSAgICAgICAgaDEgPSBoYXNoaXQoeCkKLSAgICAgICAgYy5wcmVjID0gMTAKLSAgICAgICAgaDIgPSBoYXNoaXQoeCkKLSAgICAgICAgYy5wcmVjID0gMTYKLSAgICAgICAgaDMgPSBoYXNoaXQoeCkKKyAgICAgICAgICAgIGMucHJlYyA9IDYKKyAgICAgICAgICAgIGgxID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSAxMAorICAgICAgICAgICAgaDIgPSBoYXNoaXQoeCkKKyAgICAgICAgICAgIGMucHJlYyA9IDE2CisgICAgICAgICAgICBoMyA9IGhhc2hpdCh4KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMykKLSAgICAgICAgYy5wcmVjID0gb2xkX3ByZWNpc2lvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMykKKworICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAKKyAgICAgICAgICAgIHggPSAxMTAwICoqIDEyNDgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGl0KERlY2ltYWwoeCkpLCBoYXNoaXQoeCkpCiAKICAgICBkZWYgdGVzdF9taW5fYW5kX21heF9tZXRob2RzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzE1LjMyJykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyOC41JykKQEAgLTE0MDQsNiArMTgyNiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobWF4KGQyLGwxKSwgZDIpCiAKICAgICBkZWYgdGVzdF9hc19ub256ZXJvKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjYXMgZmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEZWNpbWFsKDApKQogICAgICAgICAjYXMgdHJ1ZQpAQCAtMTQxMSw2ICsxODM1LDcgQEAKIAogICAgIGRlZiB0ZXN0X3Rvc3RyaW5nX21ldGhvZHMoc2VsZik6CiAgICAgICAgICNUZXN0IHN0ciBhbmQgcmVwciBtZXRob2RzLgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkID0gRGVjaW1hbCgnMTUuMzInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJzE1LjMyJykgICAgICAgICAgICAgICAjIHN0cgpAQCAtMTQxOCw2ICsxODQzLDcgQEAKIAogICAgIGRlZiB0ZXN0X3RvbnVtX21ldGhvZHMoc2VsZik6CiAgICAgICAgICNUZXN0IGZsb2F0IGFuZCBpbnQgbWV0aG9kcy4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc2NicpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMTUuMzInKQpAQCAtMTQ0MCw2ICsxODY2LDcgQEAKICAgICAgICAgICAgICgnLTExLjAnLCAtMTEpLAogICAgICAgICAgICAgKCcwLjAnLCAwKSwKICAgICAgICAgICAgICgnLTBFMycsIDApLAorICAgICAgICAgICAgKCc4OTg5MTIxMTcxMjM3OTgxMjczNi4xJywgODk4OTEyMTE3MTIzNzk4MTI3MzYpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZCwgaSBpbiB0ZXN0X3BhaXJzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmZsb29yKERlY2ltYWwoZCkpLCBpKQpAQCAtMTQ1OSw2ICsxODg2LDcgQEAKICAgICAgICAgICAgICgnLTExLjAnLCAtMTEpLAogICAgICAgICAgICAgKCcwLjAnLCAwKSwKICAgICAgICAgICAgICgnLTBFMycsIDApLAorICAgICAgICAgICAgKCc4OTg5MTIxMTcxMjM3OTgxMjczNi4xJywgODk4OTEyMTE3MTIzNzk4MTI3MzcpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZCwgaSBpbiB0ZXN0X3BhaXJzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmNlaWwoRGVjaW1hbChkKSksIGkpCkBAIC0xNTE5LDE2ICsxOTQ3LDIxIEBACiAgICAgZGVmIHRlc3RfbmFuX3RvX2Zsb2F0KHNlbGYpOgogICAgICAgICAjIFRlc3QgY29udmVyc2lvbnMgb2YgZGVjaW1hbCBOQU5zIHRvIGZsb2F0LgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTU1NDQKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIGZvciBzIGluICgnbmFuJywgJ25hbjEyMzQnLCAnLW5hbicsICctbmFuMjQ2OCcpOgogICAgICAgICAgICAgZiA9IGZsb2F0KERlY2ltYWwocykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmKSkKKyAgICAgICAgICAgIHNpZ24gPSBtYXRoLmNvcHlzaWduKDEuMCwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbiwgLTEuMCBpZiBzLnN0YXJ0c3dpdGgoJy0nKSBlbHNlIDEuMCkKIAogICAgIGRlZiB0ZXN0X3NuYW5fdG9fZmxvYXQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBmb3IgcyBpbiAoJ3NuYW4nLCAnLXNuYW4nLCAnc25hbjEzNTcnLCAnLXNuYW4xMjM0Jyk6CiAgICAgICAgICAgICBkID0gRGVjaW1hbChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGQpCiAKICAgICBkZWYgdGVzdF9ldmFsX3JvdW5kX3RyaXAoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICN3aXRoIHplcm8KICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAwKSApCkBAIC0xNTQ3LDYgKzE5ODAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGV2YWwocmVwcihkKSkpCiAKICAgICBkZWYgdGVzdF9hc190dXBsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3dpdGggemVybwogICAgICAgICBkID0gRGVjaW1hbCgwKQpAQCAtMTU2MCw3ICsxOTk0LDggQEAKICAgICAgICAgZCA9IERlY2ltYWwoIi00LjM0OTEzNTM0RS0xNyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMSwgKDQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDQpLCAtMjUpICkKIAotICAgICAgICAjaW5mCisgICAgICAgICMgVGhlICcwJyBjb2VmZmljaWVudCBpcyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0byBkZWNpbWFsLnB5LgorICAgICAgICAjIEl0IGhhcyBubyBtZWFuaW5nIGluIHRoZSBDLXZlcnNpb24gYW5kIGlzIGlnbm9yZWQgdGhlcmUuCiAgICAgICAgIGQgPSBEZWNpbWFsKCJJbmZpbml0eSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMCwgKDAsKSwgJ0YnKSApCiAKQEAgLTE1ODAsMTQgKzIwMTUsMjIwMCBAQAogICAgICAgICBkID0gRGVjaW1hbCggKDEsICgpLCAnbicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoKSwgJ24nKSApCiAKLSAgICAgICAgI2NvZWZmaWNpZW50IGluIGluZmluaXR5IHNob3VsZCBiZSBpZ25vcmVkCisgICAgICAgICMgRm9yIGluZmluaXRpZXMsIGRlY2ltYWwucHkgaGFzIGFsd2F5cyBzaWxlbnRseSBhY2NlcHRlZCBhbnkKKyAgICAgICAgIyBjb2VmZmljaWVudCB0dXBsZS4KKyAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAnRicpICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgwLCAoMCwpLCAnRicpKQogICAgICAgICBkID0gRGVjaW1hbCggKDAsICg0LCA1LCAzLCA0KSwgJ0YnKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMCwgKDAsKSwgJ0YnKSkKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoMCwgMiwgNywgMSksICdGJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICgwLCksICdGJykpCiAKLSAgICBkZWYgdGVzdF9pbW11dGFiaWxpdHlfb3BlcmF0aW9ucyhzZWxmKToKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgY2xhc3MgTXlEZWNpbWFsKERlY2ltYWwpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGQxID0gTXlEZWNpbWFsKDEpCisgICAgICAgIGQyID0gTXlEZWNpbWFsKDIpCisgICAgICAgIGQgPSBkMSArIGQyCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKworICAgICAgICBkID0gZDEubWF4KGQyKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisKKyAgICAgICAgZCA9IGNvcHkuY29weShkMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBNeURlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZDEpCisKKyAgICAgICAgZCA9IGNvcHkuZGVlcGNvcHkoZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGQxKQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQorICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zX2Zyb21faW50KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbWV0aG9kcyB0YWtpbmcgYSBzZWNvbmQgRGVjaW1hbCBhcmd1bWVudCB3aWxsCisgICAgICAgICMgYWx3YXlzIGFjY2VwdCBhbiBpbnRlZ2VyIGluIHBsYWNlIG9mIGEgRGVjaW1hbC4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmUoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZCgxMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZChEZWNpbWFsKDEwMDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKDEwMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoMTAwMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heCgxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXgoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4X21hZygxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXhfbWFnKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbigxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW4oRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluX21hZygxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW5fbWFnKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5xdWFudGl6ZSgxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkucXVhbnRpemUoRGVjaW1hbCgxMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoMTIzNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMTIzNCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzKS5yb3RhdGUoMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjMpLnJvdGF0ZShEZWNpbWFsKDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bSgxMDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCc5LjEyMycpLnNjYWxlYigtMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCc5LjEyMycpLnNjYWxlYihEZWNpbWFsKC0xMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQ1Nikuc2hpZnQoLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNDU2KS5zaGlmdChEZWNpbWFsKC0xKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCA2NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIDY3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgRGVjaW1hbCg2NykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKKworY2xhc3MgQ1VzYWJpbGl0eVRlc3QoVXNhYmlsaXR5VGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5VXNhYmlsaXR5VGVzdChVc2FiaWxpdHlUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBQeXRob25BUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuTnVtYmVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuUmVhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLk51bWJlcikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuUmVhbCkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2F2ZWRlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisKKyAgICAgICAgIyBSb3VuZCB0cmlwCisgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgZCA9IERlY2ltYWwoJy0zLjE0MTU5MDAwMCcpCisgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoZCkKKyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGUpCisKKyAgICAgICAgaWYgQzoKKyAgICAgICAgICAgICMgVGVzdCBpbnRlcmNoYW5nZWFiaWxpdHkKKyAgICAgICAgICAgIHggPSBDLkRlY2ltYWwoJy0zLjEyM2U4MTcyMycpCisgICAgICAgICAgICB5ID0gUC5EZWNpbWFsKCctMy4xMjNlODE3MjMnKQorCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gQworICAgICAgICAgICAgc3ggPSBwaWNrbGUuZHVtcHMoeCkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICByID0gcGlja2xlLmxvYWRzKHN4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIFAuRGVjaW1hbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwgeSkKKworICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IFAKKyAgICAgICAgICAgIHN5ID0gcGlja2xlLmR1bXBzKHkpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gQworICAgICAgICAgICAgciA9IHBpY2tsZS5sb2FkcyhzeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBDLkRlY2ltYWwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIHgpCisKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoaW50KGQpKSwgcikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIERlY2ltYWwoJy1uYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCdzbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnLWluZicpKQorCisgICAgZGVmIHRlc3RfdHJ1bmMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwobWF0aC50cnVuYyhkKSksIHIpCisKKyAgICBkZWYgdGVzdF9mcm9tX2Zsb2F0KHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNeURlY2ltYWwsIERlY2ltYWwpKQorCisgICAgICAgIHIgPSBNeURlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwKKyAgICAgICAgICAgICAgICAnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKKyAgICAgICAgYmlnaW50ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeURlY2ltYWwuZnJvbV9mbG9hdChiaWdpbnQpLCBNeURlY2ltYWwoYmlnaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkuaXNfcW5hbigpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ05hTicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ0luZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJy1JbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeURlY2ltYWwuZnJvbV9mbG9hdCwgJ2FiYycpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQoTXlEZWNpbWFsLmZyb21fZmxvYXQoeCkpKSAjIHJvdW5kdHJpcAorCisgICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKyAgICAgICAgUk9VTkRfVVAgPSBzZWxmLmRlY2ltYWwuUk9VTkRfVVAKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAorICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKKyAgICAgICAgKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX1VQKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAorICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE2JykKKyAgICAgICAgKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBJbmV4YWN0LAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LAorICAgICAgICAgICAgbWF0aC5waQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoLTAuMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCctMCcpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxLjApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMScpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCcxMCcpIikKKworICAgIGRlZiB0ZXN0X3F1YW50aXplKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBjID0gQ29udGV4dChFbWF4PTk5OTk5LCBFbWluPS05OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJykpLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zNCcpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJyksIHJvdW5kaW5nPVJPVU5EX0RPV04pLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zMycpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgRGVjaW1hbCgiMTBlOTk5OTkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUxMDAwMDAnKSwgY29udGV4dD1jCisgICAgICAgICkKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBEZWNpbWFsKCIwLjg3MTgzMWU4MDAiKQorICAgICAgICB4ID0gZC5xdWFudGl6ZShjb250ZXh0PWMsIGV4cD1EZWNpbWFsKCIxZTc5NyIpLCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzguNzFFKzc5OScpKQorCisgICAgZGVmIHRlc3RfY29tcGxleChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgeCA9IERlY2ltYWwoIjkuODE4MjczMWUxODEyNzMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgucmVhbCwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5jb25qdWdhdGUoKSwgeCkKKworICAgICAgICB4ID0gRGVjaW1hbCgiMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleCh4KSwgY29tcGxleChmbG9hdCgxKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdyZWFsJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ2ltYWcnLCAxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCB4LCAnY29uanVnYXRlJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ19fY29tcGxleF9fJywgMTAwKQorCisgICAgZGVmIHRlc3RfbmFtZWRfcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgRCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworCisgICAgICAgIHhjID0gQ29udGV4dCgpCisgICAgICAgIHhjLnByZWMgPSAxCisgICAgICAgIHhjLkVtYXggPSAxCisgICAgICAgIHhjLkVtaW4gPSAtMQorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoOSwgeGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDksIGNvbnRleHQ9eGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMsIHZhbHVlPTkpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRCwgInh5eiIsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgyKS5leHAoY29udGV4dD14YyksIDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgRCg4KS5leHAsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDIpLmxuKGNvbnRleHQ9eGMpLCBEKCcwLjcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQoLTEpLmxuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9nMTAoY29udGV4dD14YyksIEQoJy1pbmYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgtMSkubmV4dF9taW51cyhjb250ZXh0PXhjKSwgLTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoLTEpLm5leHRfcGx1cyhjb250ZXh0PXhjKSwgRCgnLTAuOScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5LjczIikubm9ybWFsaXplKGNvbnRleHQ9eGMpLCBEKCcxRSsxJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjk5OTkiKS50b19pbnRlZ3JhbChjb250ZXh0PXhjKSwgOTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiLTIwMDAiKS50b19pbnRlZ3JhbF9leGFjdChjb250ZXh0PXhjKSwgLTIwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjEyMyIpLnRvX2ludGVncmFsX3ZhbHVlKGNvbnRleHQ9eGMpLCAxMjMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLnNxcnQoY29udGV4dD14YyksIEQoJzAuMicpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLmNvbXBhcmUoY29udGV4dD14Yywgb3RoZXI9MyksIC0xKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoIjAiKS5jb21wYXJlX3NpZ25hbCwgRCgnbmFuJyksIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDEiKS5tYXgoRCgnMC4wMTAxJyksIGNvbnRleHQ9eGMpLCBEKCcwLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMSIpLm1heChEKCcwLjAxMDEnKSwgY29udGV4dD14YyksIEQoJzAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjIiKS5tYXhfbWFnKEQoJy0wLjMnKSwgY29udGV4dD14YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJy0wLjMnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMiIpLm1pbihEKCctMC4wMycpLCBjb250ZXh0PXhjKSwgRCgnLTAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjAyIikubWluX21hZyhEKCctMC4wMycpLCBjb250ZXh0PXhjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMC4wJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMiIpLm5leHRfdG93YXJkKEQoJy0xJyksIGNvbnRleHQ9eGMpLCBEKCcwLjEnKSkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCIwLjIiKS5xdWFudGl6ZSwgRCgnMWUxMCcpLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5Ljk5IikucmVtYWluZGVyX25lYXIoRCgnMS41JyksIGNvbnRleHQ9eGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCctMC41JykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS45IikuZm1hKHRoaXJkPUQoJzAuOScpLCBjb250ZXh0PXhjLCBvdGhlcj03KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnN0UrMScpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfY2Fub25pY2FsLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX2Zpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19pbmZpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19uYW4sIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfcW5hbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19zbmFuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX3NpZ25lZCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc196ZXJvLCBjb250ZXh0PXhjKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEQoIjAuMDEiKS5pc19ub3JtYWwoY29udGV4dD14YykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRCgiMC4wMSIpLmlzX3N1Ym5vcm1hbChjb250ZXh0PXhjKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmFkanVzdGVkLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNvbmp1Z2F0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5yYWRpeCwgY29udGV4dD14YykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKC0xMTEpLmxvZ2IoY29udGV4dD14YyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9naWNhbF9pbnZlcnQoY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAuMDEnKS5udW1iZXJfY2xhc3MoY29udGV4dD14YyksICcrU3Vibm9ybWFsJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMC4yMScpLnRvX2VuZ19zdHJpbmcoY29udGV4dD14YyksICcwLjIxJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfYW5kKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfb3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAxJykubG9naWNhbF94b3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzIzJykucm90YXRlKDEsIGNvbnRleHQ9eGMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcyMycpLnJvdGF0ZSgxLCBjb250ZXh0PXhjKSwgMykKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMjMnKS5zY2FsZWIsIDEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMjMnKS5zaGlmdCgtMSwgY29udGV4dD14YyksIDApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRC5mcm9tX2Zsb2F0LCAxLjEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMCkuYXNfdHVwbGUsIGNvbnRleHQ9eGMpCisKKyAgICAgICAgICAgIGlmIChzZWxmLmRlY2ltYWwgPT0gQyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNhbm9uaWNhbCwgY29udGV4dD14YykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIi0xIikuY29weV9hYnMoY29udGV4dD14YyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIxIikuY29weV9uZWdhdGUoY29udGV4dD14YyksIC0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMSkuY2Fub25pY2FsKGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgiLTEiKS5jb3B5X2FicywgY29udGV4dD14YykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoIi0xIikuY29weV9uZWdhdGUsIGNvbnRleHQ9eGMpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faGllcmFyY2h5KHNlbGYpOgorCisgICAgICAgIGRlY2ltYWwgPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgRGVjaW1hbEV4Y2VwdGlvbiA9IGRlY2ltYWwuRGVjaW1hbEV4Y2VwdGlvbgorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IGRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBkZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIEluZXhhY3QgPSBkZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IGRlY2ltYWwuUm91bmRlZAorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbEV4Y2VwdGlvbiwgQXJpdGhtZXRpY0Vycm9yKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRmxvYXRPcGVyYXRpb24sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhGbG9hdE9wZXJhdGlvbiwgVHlwZUVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGl2aXNpb25CeVplcm8sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEaXZpc2lvbkJ5WmVybywgWmVyb0RpdmlzaW9uRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhPdmVyZmxvdywgUm91bmRlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE92ZXJmbG93LCBJbmV4YWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoT3ZlcmZsb3csIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIEluZXhhY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFJvdW5kZWQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFN1Ym5vcm1hbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuZGVyZmxvdywgRGVjaW1hbEV4Y2VwdGlvbikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU3Vibm9ybWFsLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoSW5leGFjdCwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJvdW5kZWQsIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDbGFtcGVkLCBEZWNpbWFsRXhjZXB0aW9uKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkNvbnZlcnNpb25TeW50YXgsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uSW1wb3NzaWJsZSwgSW52YWxpZE9wZXJhdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuRGl2aXNpb25VbmRlZmluZWQsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uVW5kZWZpbmVkLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuSW52YWxpZENvbnRleHQsIEludmFsaWRPcGVyYXRpb24pKQorCitjbGFzcyBDUHl0aG9uQVBJdGVzdHMoUHl0aG9uQVBJdGVzdHMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeVB5dGhvbkFQSXRlc3RzKFB5dGhvbkFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0QVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIHNhdmVkZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2VsZi5kZWNpbWFsCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIGUucHJlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIGUuRW1pbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIGUuRW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCBlLnJvdW5kaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIGUuY2FwaXRhbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgZS5jbGFtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBlLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudHJhcHMsIGUudHJhcHMpCisKKyAgICAgICAgIyBUZXN0IGludGVyY2hhbmdlYWJpbGl0eQorICAgICAgICBjb21iaW5hdGlvbnMgPSBbKEMsIFApLCAoUCwgQyldIGlmIEMgZWxzZSBbKFAsIFApXQorICAgICAgICBmb3IgZHVtcGVyLCBsb2FkZXIgaW4gY29tYmluYXRpb25zOgorICAgICAgICAgICAgZm9yIHJpLCBfIGluIGVudW1lcmF0ZShSb3VuZGluZ01vZGVzW2R1bXBlcl0pOgorICAgICAgICAgICAgICAgIGZvciBmaSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisgICAgICAgICAgICAgICAgICAgIGZvciB0aSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAsIDApCisgICAgICAgICAgICAgICAgICAgICAgICBlbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICBjYXBzID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgT25lIG1vZHVsZSBkdW1wcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IGR1bXBlcgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGR1bXBlci5Db250ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYz1wcmVjLCBFbWluPWVtaW4sIEVtYXg9ZW1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJvdW5kaW5nTW9kZXNbZHVtcGVyXVtyaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1jYXBzLCBjbGFtcD1jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOmZpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOnRpXQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhjKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBvdGhlciBtb2R1bGUgbG9hZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLCBsb2FkZXIuQ29udGV4dCkKKworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnByZWMsIHByZWMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuRW1pbiwgZW1pbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5FbWF4LCBlbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnJvdW5kaW5nLCBSb3VuZGluZ01vZGVzW2xvYWRlcl1bcmldKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmNhcGl0YWxzLCBjYXBzKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmNsYW1wLCBjbGFtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGQsICdmbGFncycsIE9yZGVyZWRTaWduYWxzW2xvYWRlcl1bOmZpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGQsICd0cmFwcycsIE9yZGVyZWRTaWduYWxzW2xvYWRlcl1bOnRpXSkKKworICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2F2ZWRlY2ltYWwKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5X3dpdGhfb3RoZXJfdHlwZXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oRGVjaW1hbCgxMCksIFsnYScsIDEuMCwgRGVjaW1hbCgxMCksICgxLDIpLCB7fV0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oRGVjaW1hbCgxMCksIFsnYScsIDEuMCwgKDEsMiksIHt9XSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjKSwgaWQoZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy5mbGFncyksIGlkKGQuZmxhZ3MpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMudHJhcHMpLCBpZChkLnRyYXBzKSkKKyAgICAgICAgazEgPSBzZXQoYy5mbGFncy5rZXlzKCkpCisgICAgICAgIGsyID0gc2V0KGQuZmxhZ3Mua2V5cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGsxLCBrMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBkLmZsYWdzKQorCisgICAgZGVmIHRlc3RfX2NsYW1wKHNlbGYpOgorICAgICAgICAjIEluIFB5dGhvbiAzLjIsIHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBgX2NsYW1wYCB3YXMgbWFkZQorICAgICAgICAjIHB1YmxpYyAoaXNzdWUgODU0MCksIHdpdGggdGhlIG9sZCBgX2NsYW1wYCBiZWNvbWluZyBhCisgICAgICAgICMgcHJvcGVydHkgd3JhcHBpbmcgYGNsYW1wYC4gIEZvciB0aGUgZHVyYXRpb24gb2YgUHl0aG9uIDMuMgorICAgICAgICAjIG9ubHksIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGdldHRhYmxlL3NldHRhYmxlIHZpYSBib3RoCisgICAgICAgICMgYGNsYW1wYCBhbmQgYF9jbGFtcGA7IGluIFB5dGhvbiAzLjMsIGBfY2xhbXBgIHNob3VsZCBiZQorICAgICAgICAjIHJlbW92ZWQuCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBjLCAnX2NsYW1wJykKKworICAgIGRlZiB0ZXN0X2FicyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuYWJzKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWJzKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFicywgJy0xJykKKworICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuYWRkKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hZGQsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29tcGFyZShEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZSwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZSwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV9zaWduYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3NpZ25hbCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWxfbWFnKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9hYnMoRGVjaW1hbCgtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2FicygtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2FicywgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfZGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9kZWNpbWFsKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9kZWNpbWFsKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfZGVjaW1hbCwgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X25lZ2F0ZShEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfbmVnYXRlKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfbmVnYXRlLCAnLTEnKQorCisgICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgRGVjaW1hbCgtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oMSwgLTIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKERlY2ltYWwoMSksIC0yKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sICcxJywgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sIDEsICctMicpCisKKyAgICBkZWYgdGVzdF9kaXZpZGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdmlkZShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZGl2bW9kKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfZXhwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5leHAoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leHAoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZXhwLCAnMTAnKQorCisgICAgZGVmIHRlc3RfZm1hKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgRGVjaW1hbCg0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCAzLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCBEZWNpbWFsKDMpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCBEZWNpbWFsKDQpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgJzInLCAzLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAnMycsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsIDMsICc0JykKKworICAgICAgICAjIElzc3VlIDEyMDc5IGZvciBDb250ZXh0LmZtYSAuLi4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgwKSwgIm5vdCBhIGRlY2ltYWwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEpLCBEZWNpbWFsKCdzbmFuJyksIDEuMjIyKQorICAgICAgICAjIC4uLiBhbmQgZm9yIERlY2ltYWwuZm1hLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoJ0luZmluaXR5JykuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDApLCAibm90IGEgZGVjaW1hbCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5mbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJ3NuYW4nKSwgMS4yMjIpCisKKyAgICBkZWYgdGVzdF9pc19maW5pdGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX2Zpbml0ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2Zpbml0ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19maW5pdGUsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19pbmZpbml0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfaW5maW5pdGUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19pbmZpbml0ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19pbmZpbml0ZSwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX25hbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbmFuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25hbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX25vcm1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfbm9ybWFsKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbm9ybWFsKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25vcm1hbCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3FuYW4oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19xbmFuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3FuYW4sICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19zaWduZWQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3NpZ25lZChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NpZ25lZCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zaWduZWQsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19zbmFuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc25hbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zbmFuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfc3Vibm9ybWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zdWJub3JtYWwoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc3Vibm9ybWFsLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfemVybyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfemVybyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3plcm8oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfemVybywgJzEwJykKKworICAgIGRlZiB0ZXN0X2xuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9nMTAoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisKKyAgICBkZWYgdGVzdF9sb2diKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2diKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nYigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2diLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF9hbmQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfYW5kKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2FuZCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfaW52ZXJ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX2ludmVydChEZWNpbWFsKDEwMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9pbnZlcnQoMTAwMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2ludmVydCwgJzEwMDAnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF9vcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9naWNhbF9vcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9vciwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9vciwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF94b3Ioc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcigxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX3hvciwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X21heChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWF4KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXgsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWF4X21hZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWF4X21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4X21hZywgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4X21hZywgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWluKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5taW4oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9taW5fbWFnKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5taW5fbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9taW51cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWludXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW51cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW51cywgJzEwJykKKworICAgIGRlZiB0ZXN0X211bHRpcGx5KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9uZXh0X21pbnVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X21pbnVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9taW51cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X21pbnVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbmV4dF9wbHVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X3BsdXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3BsdXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9wbHVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbmV4dF90b3dhcmQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubm9ybWFsaXplKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubm9ybWFsaXplKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5vcm1hbGl6ZSwgJzEwJykKKworICAgIGRlZiB0ZXN0X251bWJlcl9jbGFzcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygxMjMpLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubnVtYmVyX2NsYXNzKDApLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygtNDUpLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKC00NSkpKQorCisgICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucGx1cyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBsdXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucGx1cywgJzEwJykKKworICAgIGRlZiB0ZXN0X3Bvd2VyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIERlY2ltYWwoNCkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCg0KSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgJzEnLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsICc0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKG1vZHVsbz01LCBiPTgsIGE9MiksIDEpCisKKyAgICBkZWYgdGVzdF9xdWFudGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfcmVtYWluZGVyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9yZW1haW5kZXJfbmVhcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlcl9uZWFyLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfcm90YXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zcXJ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zcXJ0KERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3FydCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zcXJ0LCAnMTAnKQorCisgICAgZGVmIHRlc3Rfc2FtZV9xdWFudHVtKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zY2FsZWIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnNjYWxlYihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zY2FsZWIsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3NoaWZ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zaGlmdChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2hpZnQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfdG9fZW5nX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9fZW5nX3N0cmluZyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2VuZ19zdHJpbmcoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fZW5nX3N0cmluZywgJzEwJykKKworICAgIGRlZiB0ZXN0X3RvX3NjaV9zdHJpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX3NjaV9zdHJpbmcoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX3NjaV9zdHJpbmcsICcxMCcpCisKKyAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF9leGFjdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF9leGFjdCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF9leGFjdCwgJzEwJykKKworICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX3ZhbHVlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2ludGVncmFsX3ZhbHVlKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX3ZhbHVlLCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfdmFsdWUsIDEwLCAneCcpCisKK2NsYXNzIENDb250ZXh0QVBJdGVzdHMoQ29udGV4dEFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0QVBJdGVzdHMoQ29udGV4dEFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0V2l0aFN0YXRlbWVudCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBDYW4ndCBkbyB0aGVzZSBhcyBkb2NzdHJpbmdzIHVudGlsIFB5dGhvbiAyLjYKKyAgICAjIGFzIGRvY3Rlc3QgY2FuJ3QgaGFuZGxlIF9fZnV0dXJlX18gc3RhdGVtZW50cworCisgICAgZGVmIHRlc3RfbG9jYWxjb250ZXh0KHNlbGYpOgorICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGVudGVyX2N0eDoKKyAgICAgICAgICAgIHNldF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgZmluYWxfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19jdHgsIGZpbmFsX2N0eCwgJ2RpZCBub3QgcmVzdG9yZSBjb250ZXh0IGNvcnJlY3RseScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19jdHgsIHNldF9jdHgsICdkaWQgbm90IGNvcHkgdGhlIGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzKHNldF9jdHgsIGVudGVyX2N0eCwgJ19fZW50ZXJfXyByZXR1cm5lZCB3cm9uZyBjb250ZXh0JykKKworICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dGFyZyhzZWxmKToKKyAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIHRoZSBibG9jaworICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIG5ld19jdHggPSBDb250ZXh0KHByZWM9NDIpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5ld19jdHgpIGFzIGVudGVyX2N0eDoKKyAgICAgICAgICAgIHNldF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgZmluYWxfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19jdHgsIGZpbmFsX2N0eCwgJ2RpZCBub3QgcmVzdG9yZSBjb250ZXh0IGNvcnJlY3RseScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0X2N0eC5wcmVjLCBuZXdfY3R4LnByZWMsICdkaWQgbm90IHNldCBjb3JyZWN0IGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG5ld19jdHgsIHNldF9jdHgsICdkaWQgbm90IGNvcHkgdGhlIGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzKHNldF9jdHgsIGVudGVyX2N0eCwgJ19fZW50ZXJfXyByZXR1cm5lZCB3cm9uZyBjb250ZXh0JykKKworICAgIGRlZiB0ZXN0X25lc3RlZF93aXRoX3N0YXRlbWVudHMoc2VsZik6CisgICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKworICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBvcmlnX2N0eC5jbGVhcl9mbGFncygpCisgICAgICAgIG5ld19jdHggPSBDb250ZXh0KEVtYXg9Mzg0KQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMS5mbGFncywgb3JpZ19jdHguZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMxLnRyYXBzLCBvcmlnX2N0eC50cmFwcykKKyAgICAgICAgICAgIGMxLnRyYXBzW0NsYW1wZWRdID0gVHJ1ZQorICAgICAgICAgICAgYzEuRW1pbiA9IC0zODMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3JpZ19jdHguRW1pbiwgLTM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKENsYW1wZWQsIGMxLmNyZWF0ZV9kZWNpbWFsLCAnMGUtOTk5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMS5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5ld19jdHgpIGFzIGMyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzIuZmxhZ3MsIG5ld19jdHguZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMi50cmFwcywgbmV3X2N0eC50cmFwcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYzIucG93ZXIsIERlY2ltYWwoJzMuNGUyMDAnKSwgMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMyLmZsYWdzW0NsYW1wZWRdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMxLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9yaWdfY3R4LkVtaW4sIC0zODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3JpZ19jdHguZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3JpZ19jdHguZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld19jdHguZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3X2N0eC5mbGFnc1tPdmVyZmxvd10pCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudHNfZ2MxKHNlbGYpOgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjNAorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRzX2djMihzZWxmKToKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzE6CisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjMSkgYXMgYzI6CisgICAgICAgICAgICAgICAgZGVsIGMxCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzIpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzMpIGFzIGM0OgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGMzCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50c19nYzMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgZGVsIGMxCisgICAgICAgICAgICBuMSA9IENvbnRleHQocHJlYz0xKQorICAgICAgICAgICAgc2V0Y29udGV4dChuMSkKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG4xKSBhcyBjMjoKKyAgICAgICAgICAgICAgICBkZWwgbjEKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMyLnByZWMsIDEpCisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICAgICAgbjIgPSBDb250ZXh0KHByZWM9MikKKyAgICAgICAgICAgICAgICBzZXRjb250ZXh0KG4yKQorICAgICAgICAgICAgICAgIGRlbCBuMgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDIpCisgICAgICAgICAgICAgICAgbjMgPSBDb250ZXh0KHByZWM9MykKKyAgICAgICAgICAgICAgICBzZXRjb250ZXh0KG4zKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDMpCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobjMpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgbjMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMy5wcmVjLCAzKQorICAgICAgICAgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgICAgICAgICAgICAgbjQgPSBDb250ZXh0KHByZWM9NCkKKyAgICAgICAgICAgICAgICAgICAgc2V0Y29udGV4dChuNCkKKyAgICAgICAgICAgICAgICAgICAgZGVsIG40CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDQpCisgICAgICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGM0LnByZWMsIDQpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworY2xhc3MgQ0NvbnRleHRXaXRoU3RhdGVtZW50KENvbnRleHRXaXRoU3RhdGVtZW50KToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0V2l0aFN0YXRlbWVudChDb250ZXh0V2l0aFN0YXRlbWVudCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dEZsYWdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2ZsYWdzX2lycmVsZXZhbnQoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IChudW1lcmljIHJlc3VsdCArIGZsYWdzIHJhaXNlZCkgb2YgYW4KKyAgICAgICAgIyBhcml0aG1ldGljIG9wZXJhdGlvbiBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgY3VycmVudCBmbGFncworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKyAgICAgICAgU3Vibm9ybWFsID0gc2VsZi5kZWNpbWFsLlN1Ym5vcm1hbAorICAgICAgICBST1VORF9IQUxGX0VWRU4gPSBzZWxmLmRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOCisKKyAgICAgICAgZGVmIHJhaXNlX2Vycm9yKGNvbnRleHQsIGZsYWcpOgorICAgICAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAgICAgY29udGV4dC5mbGFnc1tmbGFnXSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBjb250ZXh0LnRyYXBzW2ZsYWddOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBmbGFnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGZsYWcpCisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz05LCBFbWluID0gLTQyNTAwMDAwMCwgRW1heCA9IDQyNTAwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1bXSwgZmxhZ3M9W10pCisKKyAgICAgICAgIyBvcGVyYXRpb25zIHRoYXQgcmFpc2UgdmFyaW91cyBmbGFncywgaW4gdGhlIGZvcm0gKGZ1bmN0aW9uLCBhcmdsaXN0KQorICAgICAgICBvcGVyYXRpb25zID0gWworICAgICAgICAgICAgKGNvbnRleHQuX2FwcGx5LCBbRGVjaW1hbCgiMTAwRS00MjUwMDAwMTAiKV0pLAorICAgICAgICAgICAgKGNvbnRleHQuc3FydCwgW0RlY2ltYWwoMildKSwKKyAgICAgICAgICAgIChjb250ZXh0LmFkZCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5tdWx0aXBseSwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5zdWJ0cmFjdCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICBdCisKKyAgICAgICAgIyB0cnkgdmFyaW91cyBmbGFncyBpbmRpdmlkdWFsbHksIHRoZW4gYSB3aG9sZSBsb3QgYXQgb25jZQorICAgICAgICBmbGFnc2V0cyA9IFtbSW5leGFjdF0sIFtSb3VuZGVkXSwgW1VuZGVyZmxvd10sIFtDbGFtcGVkXSwgW1N1Ym5vcm1hbF0sCisgICAgICAgICAgICAgICAgICAgIFtJbmV4YWN0LCBSb3VuZGVkLCBVbmRlcmZsb3csIENsYW1wZWQsIFN1Ym5vcm1hbF1dCisKKyAgICAgICAgZm9yIGZuLCBhcmdzIGluIG9wZXJhdGlvbnM6CisgICAgICAgICAgICAjIGZpbmQgYW5zd2VyIGFuZCBmbGFncyByYWlzZWQgdXNpbmcgYSBjbGVhbiBjb250ZXh0CisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IGZuKCphcmdzKQorICAgICAgICAgICAgZmxhZ3MgPSBbayBmb3IgaywgdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKworICAgICAgICAgICAgZm9yIGV4dHJhX2ZsYWdzIGluIGZsYWdzZXRzOgorICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzLCBiZWZvcmUgY2FsbGluZyBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IoY29udGV4dCwgZmxhZykKKyAgICAgICAgICAgICAgICBuZXdfYW5zID0gZm4oKmFyZ3MpCisKKyAgICAgICAgICAgICAgICAjIGZsYWdzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNldCBhZnRlciB0aGUgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MgPSBsaXN0KGZsYWdzKQorICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBleHBlY3RlZF9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLmFwcGVuZChmbGFnKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLnNvcnQoa2V5PWlkKQorCisgICAgICAgICAgICAgICAgIyBmbGFncyB3ZSBhY3R1YWxseSBnb3QKKyAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBbayBmb3Igayx2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICAgICAgICAgIG5ld19mbGFncy5zb3J0KGtleT1pZCkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBuZXdfYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBwcm9kdWNlcyBkaWZmZXJlbnQgYW5zd2VycyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzLiIgJSAoYW5zLCBuZXdfYW5zKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19mbGFncywgZXhwZWN0ZWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiByYWlzZXMgZGlmZmVyZW50IGZsYWdzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzIiAlIChleHBlY3RlZF9mbGFncywgbmV3X2ZsYWdzKSkKKworICAgIGRlZiB0ZXN0X2ZsYWdfY29tcGFyaXNvbnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisKKyAgICAgICAgYyA9IENvbnRleHQoKQorCisgICAgICAgICMgVmFsaWQgU2lnbmFsRGljdAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzID0gYy50cmFwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICBjLnRyYXBzID0gYy5mbGFncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBkID0ge30KKyAgICAgICAgZC51cGRhdGUoYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgZFtJbmV4YWN0XSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgIyBJbnZhbGlkIFNpZ25hbERpY3QKKyAgICAgICAgZCA9IHtJbmV4YWN0OkZhbHNlfQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgICAgICBkID0gWyJ4eXoiXQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2Zsb2F0X29wZXJhdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICAjIyMjIyB0cmFwIGlzIG9mZiBieSBkZWZhdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMudHJhcHNbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gc2V0cyB0aGUgZmxhZworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNy41KSwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jcmVhdGVfZGVjaW1hbCg3LjUpLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgICMgZXhwbGljaXQgY29udmVyc2lvbiBkb2VzIG5vdCBzZXQgdGhlIGZsYWcKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IERlY2ltYWwuZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICAgICAgIyBjb21wYXJpc29uIHNldHMgdGhlIGZsYWcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIyMjIyBzZXQgdGhlIHRyYXAKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gcmFpc2VzCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZsb2F0T3BlcmF0aW9uLCBEZWNpbWFsLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmxvYXRPcGVyYXRpb24sIGMuY3JlYXRlX2RlY2ltYWwsIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgIyBleHBsaWNpdCBjb252ZXJzaW9uIGlzIHNpbGVudAorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICB4ID0gRGVjaW1hbC5mcm9tX2Zsb2F0KDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IGMuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgZGVmIHRlc3RfZmxvYXRfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgZGVmIGFzc2VydF9hdHRyKGEsIGIsIGF0dHIsIGNvbnRleHQsIHNpZ25hbD1Ob25lKToKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgZiA9IGdldGF0dHIoYSwgYXR0cikKKyAgICAgICAgICAgIGlmIHNpZ25hbCA9PSBGbG9hdE9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzaWduYWwsIGYsIGIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZihiKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICBzbWFsbF9kID0gRGVjaW1hbCgnMC4yNScpCisgICAgICAgIGJpZ19kID0gRGVjaW1hbCgnMy4wJykKKyAgICAgICAgc21hbGxfZiA9IDAuMjUKKyAgICAgICAgYmlnX2YgPSAzLjAKKworICAgICAgICB6ZXJvX2QgPSBEZWNpbWFsKCcwLjAnKQorICAgICAgICBuZWdfemVyb19kID0gRGVjaW1hbCgnLTAuMCcpCisgICAgICAgIHplcm9fZiA9IDAuMAorICAgICAgICBuZWdfemVyb19mID0gLTAuMAorCisgICAgICAgIGluZl9kID0gRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICBuZWdfaW5mX2QgPSBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICBpbmZfZiA9IGZsb2F0KCdpbmYnKQorICAgICAgICBuZWdfaW5mX2YgPSBmbG9hdCgnLWluZicpCisKKyAgICAgICAgZGVmIGRvaXQoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgIyBPcmRlcgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ19fbHRfXycsICdfX2xlX18nOgorICAgICAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCBhdHRyLCBjLCBzaWduYWwpCisKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdfX2d0X18nLCAnX19nZV9fJzoKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cihiaWdfZCwgc21hbGxfZiwgYXR0ciwgYywgc2lnbmFsKQorCisgICAgICAgICAgICAjIEVxdWFsaXR5CisgICAgICAgICAgICBhc3NlcnRfYXR0cihzbWFsbF9kLCBzbWFsbF9mLCAnX19lcV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIobmVnX3plcm9fZCwgbmVnX3plcm9fZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cih6ZXJvX2QsIG5lZ196ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfaW5mX2QsIG5lZ19pbmZfZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihpbmZfZCwgaW5mX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICAjIEluZXF1YWxpdHkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCAnX19uZV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIoRGVjaW1hbCgnMC4xJyksIDAuMSwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKG5lZ19pbmZfZCwgaW5mX2YsICdfX25lX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoaW5mX2QsIG5lZ19pbmZfZiwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKERlY2ltYWwoJ05hTicpLCBmbG9hdCgnbmFuJyksICdfX25lX18nLCBjLCBOb25lKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzID0gc2V0KFsxMDAuMCwgRGVjaW1hbCgnMTAwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBpZiBzaWduYWw6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2lnbmFsLCBzb3J0ZWQsIFsxLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHMgPSBzb3J0ZWQoWzEwLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYiA9IDEwLjAgaW4gW0RlY2ltYWwoJzEwLjAnKSwgMS4wXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGIgPSAxMC4wIGluIHtEZWNpbWFsKCcxMC4wJyk6J2EnLCAxLjA6J2InfQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgIG5jID0gQ29udGV4dCgpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5jKSBhcyBjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIGRvaXQoYywgc2lnbmFsPU5vbmUpCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpCisKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgZG9pdChjLCBzaWduYWw9RmxvYXRPcGVyYXRpb24pCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPUZsb2F0T3BlcmF0aW9uKQorCisgICAgZGVmIHRlc3RfZmxvYXRfb3BlcmF0aW9uX2RlZmF1bHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIEZsb2F0T3BlcmF0aW9uPSBzZWxmLmRlY2ltYWwuRmxvYXRPcGVyYXRpb24KKworICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgY29udGV4dC5jbGVhcl90cmFwcygpCisgICAgICAgIGNvbnRleHQudHJhcHNbSW5leGFjdF0gPSBUcnVlCisgICAgICAgIGNvbnRleHQudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LnRyYXBzW0luZXhhY3RdKQorCitjbGFzcyBDQ29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgU3BlY2lhbENvbnRleHRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBjb250ZXh0IHRlbXBsYXRlcy4iIiIKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBCYXNpY0NvbnRleHQgPSBzZWxmLmRlY2ltYWwuQmFzaWNDb250ZXh0CisgICAgICAgIEV4dGVuZGVkQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5FeHRlbmRlZENvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuc2V0Y29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBCYXNpY0NvbnRleHQsICd0cmFwcycsCisgICAgICAgICAgICBbSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBVbmRlcmZsb3csIENsYW1wZWRdCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgYmFzaWNfY29udGV4dF9wcmVjID0gQmFzaWNDb250ZXh0LnByZWMKKyAgICAgICAgZXh0ZW5kZWRfY29udGV4dF9wcmVjID0gRXh0ZW5kZWRDb250ZXh0LnByZWMKKworICAgICAgICBleCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBFeHRlbmRlZENvbnRleHQucHJlYyA9IDQ0MQorICAgICAgICAgICAgZm9yIHRlbXBsYXRlIGluIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0OgorICAgICAgICAgICAgICAgIHNldGNvbnRleHQodGVtcGxhdGUpCisgICAgICAgICAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgdGVtcGxhdGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDQ0MSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZXggPSBlLl9fY2xhc3NfXworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBiYXNpY19jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIEV4dGVuZGVkQ29udGV4dC5wcmVjID0gZXh0ZW5kZWRfY29udGV4dF9wcmVjCisgICAgICAgICAgICBzZXRjb250ZXh0KHNhdmVjb250ZXh0KQorICAgICAgICAgICAgaWYgZXg6CisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKyAgICAgICAgQmFzaWNDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkJhc2ljQ29udGV4dAorICAgICAgICBFeHRlbmRlZENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXNpY0NvbnRleHQucHJlYywgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFeHRlbmRlZENvbnRleHQucHJlYywgOSkKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBEZWZhdWx0Q29udGV4dCwgJ3RyYXBzJywKKyAgICAgICAgICAgIFtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3ddCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgZGVmYXVsdF9jb250ZXh0X3ByZWMgPSBEZWZhdWx0Q29udGV4dC5wcmVjCisKKyAgICAgICAgZXggPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNhdmVwcmVjID0gYy5wcmVjCisKKyAgICAgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSA5NjEKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBzYXZlcHJlYykKKworICAgICAgICAgICAgc2V0Y29udGV4dChEZWZhdWx0Q29udGV4dCkKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgRGVmYXVsdENvbnRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgOTYxKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBleCA9IGUuX19jbGFzc19fCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gZGVmYXVsdF9jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIHNldGNvbnRleHQoc2F2ZWNvbnRleHQpCisgICAgICAgICAgICBpZiBleDoKKyAgICAgICAgICAgICAgICByYWlzZSBleAorCitjbGFzcyBDU3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5U3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dElucHV0VmFsaWRhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnRleHQoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICAjIHByZWMsIEVtYXgKKyAgICAgICAgZm9yIGF0dHIgaW4gWydwcmVjJywgJ0VtYXgnXToKKyAgICAgICAgICAgIHNldGF0dHIoYywgYXR0ciwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCA5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgJ3h5eicpCisKKyAgICAgICAgIyBFbWluCisgICAgICAgIHNldGF0dHIoYywgJ0VtaW4nLCAtOTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYywgJ0VtaW4nKSwgLTk5OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdFbWluJywgKDEsMiwzKSkKKworICAgICAgICAjIHJvdW5kaW5nOiBhbHdheXMgcmFpc2UgVHlwZUVycm9yIGluIG9yZGVyIHRvIGdldCBjb25zaXN0ZW50CisgICAgICAgICMgZXhjZXB0aW9ucyBhY3Jvc3MgaW1wbGVtZW50YXRpb25zLiBJbiBkZWNpbWFsLCByb3VuZGluZworICAgICAgICAjIG1vZGVzIGFyZSBzdHJpbmdzLCBpbiBfZGVjaW1hbCB0aGV5IGFyZSBpbnRlZ2Vycy4gVGhlIGlkZWEKKyAgICAgICAgIyBpcyB0byB2aWV3IHJvdW5kaW5nIGFzIGFuIGFic3RyYWN0IHR5cGUgYW5kIG5vdCBtaW5kIHRoZQorICAgICAgICAjIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgICMgSGVuY2UsIGEgdXNlciBzaG91bGQgdmlldyB0aGUgcm91bmRpbmcgbW9kZXMgYXMgaWYgdGhleQorICAgICAgICAjIGhhZCBiZWVuIGRlZmluZWQgaW4gYSBsYW5ndWFnZSB0aGF0IHN1cHBvcnRzIGFic3RyYWN0CisgICAgICAgICMgZGF0YSB0eXBlcywgZS5nLiBvY2FtbDoKKyAgICAgICAgIworICAgICAgICAjICAgdHlwZSByb3VuZGluZyA9IFJPVU5EX0RPV04gfCBST1VORF9IQUxGX1VQIHwgLi4uIDs7CisgICAgICAgICMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAneHl6JykKKworICAgICAgICAjIGNhcGl0YWxzLCBjbGFtcAorICAgICAgICBmb3IgYXR0ciBpbiBbJ2NhcGl0YWxzJywgJ2NsYW1wJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIFsxLDIsM10pCisKKyAgICAgICAgIyBJbnZhbGlkIGF0dHJpYnV0ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgYywgJ2VtYXgnLCAxMDApCisKKyAgICAgICAgIyBJbnZhbGlkIHNpZ25hbCBkaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICd0cmFwcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsnSW52YWxpZE9wZXJhdGlvbic6MH0pCisKKyAgICAgICAgIyBBdHRyaWJ1dGVzIGNhbm5vdCBiZSBkZWxldGVkCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4JywgJ0VtaW4nLCAncm91bmRpbmcnLCAnY2FwaXRhbHMnLCAnY2xhbXAnLAorICAgICAgICAgICAgICAgICAgICAgJ2ZsYWdzJywgJ3RyYXBzJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgYy5fX2RlbGF0dHJfXywgYXR0cikKKworICAgICAgICAjIEludmFsaWQgYXR0cmlidXRlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIsIGMsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgOSkKKworICAgICAgICAjIEludmFsaWQgdmFsdWVzIGluIGNvbnN0cnVjdG9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgcm91bmRpbmc9OTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIENvbnRleHQsIHJvdW5kaW5nPSd4eXonKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBDb250ZXh0LCBjbGFtcD0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBDb250ZXh0LCBjYXBpdGFscz0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIENvbnRleHQsIGZsYWdzPVsiUCJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgQ29udGV4dCwgdHJhcHM9WyJRIl0pCisKKyAgICAgICAgIyBUeXBlIGVycm9yIGluIGNvbnZlcnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCBmbGFncz0oMCwxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCB0cmFwcz0oMSwwKSkKKworY2xhc3MgQ0NvbnRleHRJbnB1dFZhbGlkYXRpb24oQ29udGV4dElucHV0VmFsaWRhdGlvbik6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dElucHV0VmFsaWRhdGlvbihDb250ZXh0SW5wdXRWYWxpZGF0aW9uKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0U3ViY2xhc3NpbmcodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY29udGV4dF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgZGVjaW1hbCA9IHNlbGYuZGVjaW1hbAorICAgICAgICBEZWNpbWFsID0gZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBkZWNpbWFsLkNvbnRleHQKKyAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gZGVjaW1hbC5ST1VORF9IQUxGX0VWRU4KKyAgICAgICAgUk9VTkRfRE9XTiA9IGRlY2ltYWwuUk9VTkRfRE9XTgorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBJbmV4YWN0ID0gZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIE92ZXJmbG93ID0gZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBSb3VuZGVkID0gZGVjaW1hbC5Sb3VuZGVkCisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBkZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworICAgICAgICBjbGFzcyBNeUNvbnRleHQoQ29udGV4dCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUpOgorICAgICAgICAgICAgICAgIENvbnRleHQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBpZiBwcmVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWMgPSBwcmVjCisgICAgICAgICAgICAgICAgaWYgcm91bmRpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICAgICAgICAgIGlmIEVtaW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuRW1pbiA9IEVtaW4KKyAgICAgICAgICAgICAgICBpZiBFbWF4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLkVtYXggPSBFbWF4CisgICAgICAgICAgICAgICAgaWYgY2FwaXRhbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMgPSBjYXBpdGFscworICAgICAgICAgICAgICAgIGlmIGNsYW1wIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYW1wID0gY2xhbXAKKyAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmbGFncywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHt2Oih2IGluIGZsYWdzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIGZsYWdzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKKyAgICAgICAgICAgICAgICBpZiB0cmFwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0cmFwcywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcyA9IHt2Oih2IGluIHRyYXBzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIHRyYXBzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBNeUNvbnRleHQoKQorICAgICAgICBmb3IgYXR0ciBpbiAoJ3ByZWMnLCAncm91bmRpbmcnLCAnRW1pbicsICdFbWF4JywgJ2NhcGl0YWxzJywgJ2NsYW1wJywKKyAgICAgICAgICAgICAgICAgICAgICdmbGFncycsICd0cmFwcycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCBnZXRhdHRyKGQsIGF0dHIpKQorCisgICAgICAgICMgcHJlYworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydwcmVjJzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQocHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYy5xdWFudGl6ZSwgRGVjaW1hbCgnOWUyJyksIDApCisKKyAgICAgICAgIyByb3VuZGluZworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J3JvdW5kaW5nJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQocm91bmRpbmc9Uk9VTkRfRE9XTiwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wbHVzKERlY2ltYWwoJzkuOScpKSwgOSkKKworICAgICAgICAjIEVtaW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnRW1pbic6NX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1pbj0tMSwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTEpCisgICAgICAgIHggPSBjLmFkZChEZWNpbWFsKCcxZS05OScpLCBEZWNpbWFsKCcyLjIzNGUtMjAwMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMCcpKQorICAgICAgICBmb3Igc2lnbmFsIGluIChJbmV4YWN0LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgUm91bmRlZCwgQ2xhbXBlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgRW1heAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydFbWF4JzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1heD0xLCBwcmVjPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYy5hZGQsIERlY2ltYWwoJzFlOTknKSwgRGVjaW1hbCgnMi4yMzRlMjAwMCcpKQorICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgIGZvciBzaWduYWwgaW4gKEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgY2FwaXRhbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnY2FwaXRhbHMnOi0xfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjYXBpdGFscz0wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIDApCisgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsKCcxRTIyMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKHgpLCAnMWUrMjIyJykKKworICAgICAgICAjIGNsYW1wCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J2NsYW1wJzoyfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjbGFtcD0xLCBFbWF4PTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDEpCisgICAgICAgIHggPSBjLnBsdXMoRGVjaW1hbCgnMWU5OScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4KSwgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRSs5OScpCisKKyAgICAgICAgIyBmbGFncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J2ZsYWdzJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQoZmxhZ3M9W1JvdW5kZWQsIERpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiAoUm91bmRlZCwgRGl2aXNpb25CeVplcm8pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3Nbc2lnbmFsXSkKKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGZvciBzaWduYWwgaW4gT3JkZXJlZFNpZ25hbHNbZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3Nbc2lnbmFsXSkKKworICAgICAgICAjIHRyYXBzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlDb250ZXh0LCAqKnsndHJhcHMnOidYWVonfSkKKyAgICAgICAgYyA9IE15Q29udGV4dCh0cmFwcz1bUm91bmRlZCwgRGl2aXNpb25CeVplcm9dKQorICAgICAgICBmb3Igc2lnbmFsIGluIChSb3VuZGVkLCBEaXZpc2lvbkJ5WmVybyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy50cmFwc1tzaWduYWxdKQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy50cmFwc1tzaWduYWxdKQorCitjbGFzcyBDQ29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IFAKKworQHNraXBfaWZfZXh0cmFfZnVuY3Rpb25hbGl0eQorY2xhc3MgQ2hlY2tBdHRyaWJ1dGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgICMgQXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBjb250ZXh0IGxpbWl0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUFYX1BSRUMsIFAuTUFYX1BSRUMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5NQVhfRU1BWCwgUC5NQVhfRU1BWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLk1JTl9FTUlOLCBQLk1JTl9FTUlOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUlOX0VUSU5ZLCBQLk1JTl9FVElOWSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoQy5IQVZFX1RIUkVBRFMgaXMgVHJ1ZSBvciBDLkhBVkVfVEhSRUFEUyBpcyBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuSEFWRV9USFJFQURTIGlzIFRydWUgb3IgUC5IQVZFX1RIUkVBRFMgaXMgRmFsc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fdmVyc2lvbl9fLCBQLl9fdmVyc2lvbl9fKQorCisgICAgICAgIHggPSBkaXIoQykKKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X2F0dHJpYnV0ZXMoc2VsZik6CisKKyAgICAgICAgeCA9IFtzIGZvciBzIGluIGRpcihDLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgIHggPSBbcyBmb3IgcyBpbiBkaXIoQy5EZWNpbWFsKDkpKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICB5ID0gW3MgZm9yIHMgaW4gZGlyKEMuRGVjaW1hbCg5KSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCitjbGFzcyBDb3ZlcmFnZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hZGp1c3RlZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCcxMjM0ZTk5OTknKS5hZGp1c3RlZCgpLCAxMDAwMikKKyAgICAgICAgIyBYWFggcmFpc2U/CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnbmFuJykuYWRqdXN0ZWQoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCdpbmYnKS5hZGp1c3RlZCgpLCAwKQorCisgICAgZGVmIHRlc3RfY2Fub25pY2FsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisKKyAgICAgICAgeCA9IERlY2ltYWwoOSkuY2Fub25pY2FsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCA5KQorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgeCA9IGMuY2Fub25pY2FsKERlY2ltYWwoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgOSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfcmVwcihzZWxmKToKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICBjLnByZWMgPSA0MjUwMDAwMDAKKyAgICAgICAgYy5FbWF4ID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1pbiA9IC00MjUwMDAwMDAKKyAgICAgICAgYy5yb3VuZGluZyA9IHNlbGYuZGVjaW1hbC5ST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tzZWxmLmRlY2ltYWxdOgorICAgICAgICAgICAgYy5mbGFnc1tzaWddID0gRmFsc2UKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IEZhbHNlCisKKyAgICAgICAgcyA9IGMuX19yZXByX18oKQorICAgICAgICB0ID0gIkNvbnRleHQocHJlYz00MjUwMDAwMDAsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRE9XTiwgIiBcCisgICAgICAgICAgICAiRW1pbj0tNDI1MDAwMDAwLCBFbWF4PTQyNTAwMDAwMCwgY2FwaXRhbHM9MCwgY2xhbXA9MSwgIiBcCisgICAgICAgICAgICAiZmxhZ3M9W10sIHRyYXBzPVtdKSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCB0KQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorCisgICAgICAgICAgICAjIGFicworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhYnMoRGVjaW1hbCgiLTEwIikpLCAxMCkKKyAgICAgICAgICAgICMgYWRkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjciKSArIDEsIDgpCisgICAgICAgICAgICAjIGRpdmlkZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC8gNSwgMikKKyAgICAgICAgICAgICMgZGl2aWRlX2ludAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC8vIDcsIDEpCisgICAgICAgICAgICAjIGZtYQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjIiKS5mbWEoRGVjaW1hbCgiMC4wMSIpLCAxKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRGVjaW1hbCgiTmFOIikuZm1hKDcsIDEpLmlzX25hbigpLCBUcnVlKQorICAgICAgICAgICAgIyB0aHJlZSBhcmcgcG93ZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG93KERlY2ltYWwoMTApLCAyLCA3KSwgMikKKyAgICAgICAgICAgICMgZXhwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMDEiKS5leHAoKSwgMykKKyAgICAgICAgICAgICMgaXNfbm9ybWFsCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKERlY2ltYWwoIjAuMDEiKS5pc19ub3JtYWwoKSwgRmFsc2UpCisgICAgICAgICAgICAjIGlzX3N1Ym5vcm1hbAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhEZWNpbWFsKCIwLjAxIikuaXNfc3Vibm9ybWFsKCksIFRydWUpCisgICAgICAgICAgICAjIGxuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjIwIikubG4oKSwgMykKKyAgICAgICAgICAgICMgbG9nMTAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMjAiKS5sb2cxMCgpLCAxKQorICAgICAgICAgICAgIyBsb2diCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjU4MCIpLmxvZ2IoKSwgMikKKyAgICAgICAgICAgICMgbG9naWNhbF9pbnZlcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5sb2dpY2FsX2ludmVydCgpLCAxKQorICAgICAgICAgICAgIyBtaW51cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtRGVjaW1hbCgiLTEwIiksIDEwKQorICAgICAgICAgICAgIyBtdWx0aXBseQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIyIikgKiA0LCA4KQorICAgICAgICAgICAgIyBuZXh0X21pbnVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubmV4dF9taW51cygpLCA5KQorICAgICAgICAgICAgIyBuZXh0X3BsdXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5uZXh0X3BsdXMoKSwgRGVjaW1hbCgnMkUrMScpKQorICAgICAgICAgICAgIyBub3JtYWxpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiLTEwIikubm9ybWFsaXplKCksIERlY2ltYWwoJy0xRSsxJykpCisgICAgICAgICAgICAjIG51bWJlcl9jbGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpLm51bWJlcl9jbGFzcygpLCAnK05vcm1hbCcpCisgICAgICAgICAgICAjIHBsdXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoK0RlY2ltYWwoIi0xIiksIC0xKQorICAgICAgICAgICAgIyByZW1haW5kZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAlIDcsIDMpCisgICAgICAgICAgICAjIHN1YnRyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikgLSA3LCAzKQorICAgICAgICAgICAgIyB0b19pbnRlZ3JhbF9leGFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjEyMzQ1IikudG9faW50ZWdyYWxfZXhhY3QoKSwgMSkKKworICAgICAgICAgICAgIyBCb29sZWFuIGZ1bmN0aW9ucworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjEiKS5pc19jYW5vbmljYWwoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIxIikuaXNfZmluaXRlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMSIpLmlzX2Zpbml0ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoInNuYW4iKS5pc19zbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiLTEiKS5pc19zaWduZWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIwIikuaXNfemVybygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjAiKS5pc196ZXJvKCkpCisKKyAgICAgICAgIyBDb3B5CisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgICAgICB4ID0gMTIyOCAqKiAxNTIzCisgICAgICAgICAgICB5ID0gLURlY2ltYWwoeCkKKworICAgICAgICAgICAgeiA9IHkuY29weV9hYnMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgICAgICAgICB6ID0geS5jb3B5X25lZ2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHosIHgpCisKKyAgICAgICAgICAgIHogPSB5LmNvcHlfc2lnbihEZWNpbWFsKDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoIjEwOTEyODM3MTI5IiksIDEwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIERlY2ltYWwoJzEwOTAxOTM1JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIERlY2ltYWwoJzE5NCcpKQorCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoIk5hTiIpLCA3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBGYWxzZQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJOYU4iKSwgNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX25hbigpIGFuZCByLmlzX25hbigpKQorCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJpbmYiKSwgRGVjaW1hbCgiaW5mIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiaW5mIiksIDEwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX2luZmluaXRlKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoMCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IEZhbHNlCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgxMSksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19pbmZpbml0ZSgpIGFuZCByLmlzX25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisKKyAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMCIpICoqIDEwMCwgRGVjaW1hbCgnMS4wMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbUm91bmRlZF0pCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGMudHJhcHNbT3ZlcmZsb3ddID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDAwMCkgKiogRGVjaW1hbCgiMC41IiksIERlY2ltYWwoJ2luZicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbT3ZlcmZsb3ddKQorCisgICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDk5KS5xdWFudGl6ZShEZWNpbWFsKCIxZTEiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmlzX25hbigpKQorCisgICAgZGVmIHRlc3RfcmFkaXgoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMSIpLnJhZGl4KCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmFkaXgoKSwgMTApCisKKyAgICBkZWYgdGVzdF9yb3Aoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGZvciBhdHRyIGluICgnX19yYWRkX18nLCAnX19yc3ViX18nLCAnX19ybXVsX18nLCAnX19ydHJ1ZWRpdl9fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3JkaXZtb2RfXycsICdfX3Jtb2RfXycsICdfX3JmbG9vcmRpdl9fJywgJ19fcnBvd19fJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoRGVjaW1hbCgiMSIpLCBhdHRyKSgieHl6IiksIE5vdEltcGxlbWVudGVkKQorCisgICAgZGVmIHRlc3Rfcm91bmQoc2VsZik6CisgICAgICAgICMgUHl0aG9uMyBiZWhhdmlvcjogcm91bmQoKSByZXR1cm5zIERlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgYy5wcmVjID0gMjgKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCI5Ljk5IikuX19yb3VuZF9fKCkpLCAiMTAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCI5Ljk5ZS01IikuX19yb3VuZF9fKCkpLCAiMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NTY3ODkiKS5fX3JvdW5kX18oNSkpLCAiMS4yMzQ1NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NSIpLl9fcm91bmRfXygxMCkpLCAiMS4yMzQ1MDAwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiMS4yMzQ1IikuX19yb3VuZF9fKC0xMCkpLCAiMEUrMTAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywgIjUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sIDUsIDgpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZGVjaW1hbChzZWxmKToKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy5jcmVhdGVfZGVjaW1hbCwgWyIlIl0pCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gOTk5OQorICAgICAgICAgICAgeCA9IERlY2ltYWwoMTIyMSoqMTI3MSkgLyAxMCoqMzkyMworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoeCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWwoKSwgMikKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgYy5wcmVjID0gMTAwMDAKKyAgICAgICAgeCA9IC0oMTE3MiAqKiAxNzEyKQorCisgICAgICAgIHkgPSBjLmNvcHlfYWJzKHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgLXgpCisKKyAgICAgICAgeSA9IGMuY29weV9uZWdhdGUoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCAteCkKKworICAgICAgICB5ID0gYy5jb3B5X3NpZ24oeCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCAteCkKKworY2xhc3MgQ0NvdmVyYWdlKENvdmVyYWdlKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb3ZlcmFnZShDb3ZlcmFnZSk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgUHlGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIGRlY2ltYWwucHkiIiIKKworICAgIGRlZiB0ZXN0X3B5X3F1YW50aXplX3dhdGNoZXhwKHNlbGYpOgorICAgICAgICAjIHdhdGNoZXhwIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICB4ID0gRGVjaW1hbCg5OTk5OSkucXVhbnRpemUoRGVjaW1hbCgiMWUzIiksIHdhdGNoZXhwPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxLjAwRSs1JykpCisKKyAgICBkZWYgdGVzdF9weV9hbHRlcm5hdGVfZm9ybWF0dGluZyhzZWxmKToKKyAgICAgICAgIyB0cmlwbGVzIGdpdmluZyBhIGZvcm1hdCwgYSBEZWNpbWFsLCBhbmQgdGhlIGV4cGVjdGVkIHJlc3VsdAorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CisKKyAgICAgICAgdGVzdF92YWx1ZXMgPSBbCisgICAgICAgICAgICAjIElzc3VlIDcwOTQ6IEFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgIykKKyAgICAgICAgICAgICgnLjBlJywgJzEuMCcsICcxZSswJyksCisgICAgICAgICAgICAoJyMuMGUnLCAnMS4wJywgJzEuZSswJyksCisgICAgICAgICAgICAoJy4wZicsICcxLjAnLCAnMScpLAorICAgICAgICAgICAgKCcjLjBmJywgJzEuMCcsICcxLicpLAorICAgICAgICAgICAgKCdnJywgJzEuMScsICcxLjEnKSwKKyAgICAgICAgICAgICgnI2cnLCAnMS4xJywgJzEuMScpLAorICAgICAgICAgICAgKCcuMGcnLCAnMScsICcxJyksCisgICAgICAgICAgICAoJyMuMGcnLCAnMScsICcxLicpLAorICAgICAgICAgICAgKCcuMCUnLCAnMS4wJywgJzEwMCUnKSwKKyAgICAgICAgICAgICgnIy4wJScsICcxLjAnLCAnMTAwLiUnKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZm9yIGZtdCwgZCwgcmVzdWx0IGluIHRlc3RfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoRGVjaW1hbChkKSwgZm10KSwgcmVzdWx0KQorCitjbGFzcyBQeVdoaXRlYm94KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJXaGl0ZSBib3ggdGVzdGluZyBmb3IgZGVjaW1hbC5weSIiIgorCisgICAgZGVmIHRlc3RfcHlfZXhhY3RfcG93ZXIoc2VsZik6CisgICAgICAgICMgUmFyZWx5IGV4ZXJjaXNlZCBsaW5lcyBpbiBfcG93ZXJfZXhhY3QuCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSA4CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgyKioxNikgKiogRGVjaW1hbCgiLTAuNSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMDAzOTA2MjUnKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqMTYpICoqIERlY2ltYWwoIi0wLjYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcwLjAwMTI4ODU4MTknKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoIjI1NmU3IikgKiogRGVjaW1hbCgiLTAuNSIpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDE1MjU4Nzg5MDYyNSkgKiogRGVjaW1hbCgnLTAuMDYyNScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoIjAuMiIpKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTUyNTg3ODkwNjI1ZTciKSAqKiBEZWNpbWFsKCctMC4wNjI1JykKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoNSoqMjY1OSkgKiogRGVjaW1hbCgnLTAuMDYyNScpCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCIxNTI1ODc4OTA2MjUiKSAqKiBEZWNpbWFsKCctMC41JykKKyAgICAgICAgICAgIGMucHJlYyA9IDIwMQorICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqNTc4KSAqKiBEZWNpbWFsKCItMC41IikKKworICAgIGRlZiB0ZXN0X3B5X2ltbXV0YWJpbGl0eV9vcGVyYXRpb25zKHNlbGYpOgogICAgICAgICAjIERvIG9wZXJhdGlvbnMgYW5kIGNoZWNrIHRoYXQgaXQgZGlkbid0IGNoYW5nZSBjaGFuZ2UgaW50ZXJuYWwgb2JqZWN0cy4KKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IFAuRGVmYXVsdENvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IFAuc2V0Y29udGV4dAorCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKyAgICAgICAgYy50cmFwcyA9IGRpY3QoKHMsIDApIGZvciBzIGluIE9yZGVyZWRTaWduYWxzW1BdKQorICAgICAgICBzZXRjb250ZXh0KGMpCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctMjVlNTUnKQogICAgICAgICBiMSA9IERlY2ltYWwoJy0yNWU1NScpCkBAIC0xNjU5LDcxMyArNDI4MCw3OTkgQEAKICAgICAgICAgY2hlY2tTYW1lRGVjKCJ0b19lbmdfc3RyaW5nIikKICAgICAgICAgY2hlY2tTYW1lRGVjKCJ0b19pbnRlZ3JhbCIpCiAKLSAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKLSAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKKyAgICBkZWYgdGVzdF9weV9kZWNpbWFsX2lkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCiAKLSAgICAgICAgY2xhc3MgTXlEZWNpbWFsKERlY2ltYWwpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBkID0gRGVjaW1hbCg0NSkKKyAgICAgICAgZSA9IERlY2ltYWwoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICc0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCi0gICAgICAgIGQxID0gTXlEZWNpbWFsKDEpCi0gICAgICAgIGQyID0gTXlEZWNpbWFsKDIpCi0gICAgICAgIGQgPSBkMSArIGQyCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKyAgICBkZWYgdGVzdF9weV9yZXNjYWxlKHNlbGYpOgorICAgICAgICAjIENvdmVyYWdlCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgUk9VTkRfVVAgPSBQLlJPVU5EX1VQCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CiAKLSAgICAgICAgZCA9IGQxLm1heChkMikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBEZWNpbWFsKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiTmFOIikuX3Jlc2NhbGUoMywgUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc19uYW4oKSkKIAotICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQotICAgICAgICBjID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKyAgICBkZWYgdGVzdF9weV9fcm91bmQoc2VsZik6CisgICAgICAgICMgQ292ZXJhZ2UKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBST1VORF9VUCA9IFAuUk9VTkRfVVAKIAotICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zX2Zyb21faW50KHNlbGYpOgotICAgICAgICAjIENoZWNrIHRoYXQgbWV0aG9kcyB0YWtpbmcgYSBzZWNvbmQgRGVjaW1hbCBhcmd1bWVudCB3aWxsCi0gICAgICAgICMgYWx3YXlzIGFjY2VwdCBhbiBpbnRlZ2VyIGluIHBsYWNlIG9mIGEgRGVjaW1hbC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmUoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZCgxMDAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZChEZWNpbWFsKDEwMDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKDEwMDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoRGVjaW1hbCgxMDAxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoMTAwMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoRGVjaW1hbCgxMDAxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heCgxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXgoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4X21hZygxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXhfbWFnKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbigxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW4oRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluX21hZygxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW5fbWFnKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5xdWFudGl6ZSgxMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkucXVhbnRpemUoRGVjaW1hbCgxMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoMTIzNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMTIzNCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzKS5yb3RhdGUoMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjMpLnJvdGF0ZShEZWNpbWFsKDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bSgxMDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCc5LjEyMycpLnNjYWxlYigtMTAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCc5LjEyMycpLnNjYWxlYihEZWNpbWFsKC0xMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQ1Nikuc2hpZnQoLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNDU2KS5zaGlmdChEZWNpbWFsKC0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwoIjMuMTIzNCIpLl9yb3VuZCwgMCwgUk9VTkRfVVApCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCA2NyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIDY3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgRGVjaW1hbCg2NykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKK2NsYXNzIENGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIF9kZWNpbWFsIiIiCiAKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfaWVlZV9jb250ZXh0KHNlbGYpOgorICAgICAgICAjIGlzc3VlIDg3ODY6IEFkZCBzdXBwb3J0IGZvciBJRUVFIDc1NCBjb250ZXh0cyB0byBkZWNpbWFsIG1vZHVsZS4KKyAgICAgICAgSUVFRUNvbnRleHQgPSBDLklFRUVDb250ZXh0CisgICAgICAgIERFQ0lNQUwzMiA9IEMuREVDSU1BTDMyCisgICAgICAgIERFQ0lNQUw2NCA9IEMuREVDSU1BTDY0CisgICAgICAgIERFQ0lNQUwxMjggPSBDLkRFQ0lNQUwxMjgKIAotY2xhc3MgRGVjaW1hbFB5dGhvbkFQSXRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgZGVmIGFzc2VydF9yZXN0KHNlbGYsIGNvbnRleHQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmNsYW1wLCAxKQorICAgICAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgY29udGV4dCwgJ3RyYXBzJywgW10pCisgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBjb250ZXh0LCAnZmxhZ3MnLCBbXSkKIAotICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5OdW1iZXIpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5SZWFsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuTnVtYmVyKQotICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5SZWFsKQorICAgICAgICBjID0gSUVFRUNvbnRleHQoREVDSU1BTDMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDk2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTk1KQorICAgICAgICBhc3NlcnRfcmVzdChzZWxmLCBjKQogCi0gICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICAgICBkID0gRGVjaW1hbCgnLTMuMTQxNTkwMDAwJykKLSAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhkKQotICAgICAgICBlID0gcGlja2xlLmxvYWRzKHApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgYyA9IElFRUVDb250ZXh0KERFQ0lNQUw2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgMzg0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTM4MykKKyAgICAgICAgYXNzZXJ0X3Jlc3Qoc2VsZiwgYykKIAotICAgIGRlZiB0ZXN0X2ludChzZWxmKToKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKLSAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKLSAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCi0gICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKGludChkKSksIHIpCisgICAgICAgIGMgPSBJRUVFQ29udGV4dChERUNJTUFMMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCA2MTQ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTYxNDMpCisgICAgICAgIGFzc2VydF9yZXN0KHNlbGYsIGMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCctbmFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgRGVjaW1hbCgnc25hbicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJ2luZicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgIyBJbnZhbGlkIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBJRUVFQ29udGV4dCwgMioqNjMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIElFRUVDb250ZXh0LCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgSUVFRUNvbnRleHQsIDEwMjQpCiAKLSAgICBkZWYgdGVzdF90cnVuYyhzZWxmKToKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKLSAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKLSAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCi0gICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKG1hdGgudHJ1bmMoZCkpLCByKQorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19jb250ZXh0KHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CiAKLSAgICBkZWYgdGVzdF9mcm9tX2Zsb2F0KHNlbGYpOgorICAgICAgICBjID0gQ29udGV4dChmbGFncz1DLkRlY0NsYW1wZWQsIHRyYXBzPUMuRGVjUm91bmRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgQy5EZWNDbGFtcGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX3RyYXBzLCBDLkRlY1JvdW5kZWQpCiAKLSAgICAgICAgY2xhc3MgIE15RGVjaW1hbChEZWNpbWFsKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByID0gTXlEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIE15RGVjaW1hbCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksCi0gICAgICAgICAgICAgICAgJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpCi0gICAgICAgIGJpZ2ludCA9IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlEZWNpbWFsLmZyb21fZmxvYXQoYmlnaW50KSwgTXlEZWNpbWFsKGJpZ2ludCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpLmlzX3FuYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkuaXNfaW5maW5pdGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCctaW5mJykpLmlzX2luZmluaXRlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdOYU4nKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdJbmZpbml0eScpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCctSW5maW5pdHknKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlEZWNpbWFsLmZyb21fZmxvYXQsICdhYmMnKQotICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgotICAgICAgICAgICAgeCA9IHJhbmRvbS5leHBvdmFyaWF0ZSgwLjAxKSAqIChyYW5kb20ucmFuZG9tKCkgKiAyLjAgLSAxLjApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KE15RGVjaW1hbC5mcm9tX2Zsb2F0KHgpKSkgIyByb3VuZHRyaXAKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoc2VsZik6Ci0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKLSAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jb25zdGFudHMoc2VsZik6CisgICAgICAgICMgQ29uZGl0aW9uIGZsYWdzCisgICAgICAgIGNvbmQgPSAoCisgICAgICAgICAgICBDLkRlY0NsYW1wZWQsIEMuRGVjQ29udmVyc2lvblN5bnRheCwgQy5EZWNEaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlLCBDLkRlY0RpdmlzaW9uVW5kZWZpbmVkLAorICAgICAgICAgICAgQy5EZWNGcHVFcnJvciwgQy5EZWNJbmV4YWN0LCBDLkRlY0ludmFsaWRDb250ZXh0LAorICAgICAgICAgICAgQy5EZWNJbnZhbGlkT3BlcmF0aW9uLCBDLkRlY01hbGxvY0Vycm9yLAorICAgICAgICAgICAgQy5EZWNGbG9hdE9wZXJhdGlvbiwgQy5EZWNPdmVyZmxvdywgQy5EZWNSb3VuZGVkLAorICAgICAgICAgICAgQy5EZWNTdWJub3JtYWwsIEMuRGVjVW5kZXJmbG93CiAgICAgICAgICkKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9VUCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKLSAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNicpCi0gICAgICAgICkKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgSW5leGFjdCwKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKLSAgICAgICAgICAgIG1hdGgucGkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KC0wLjApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnLTAnKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMS4wKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJzEnKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMTApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMTAnKSIpCiAKLWNsYXNzIENvbnRleHRBUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICMgSUVFRUNvbnRleHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLkRFQ0lNQUwzMiwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5ERUNJTUFMNjQsIDY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuREVDSU1BTDEyOCwgMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuSUVFRV9DT05URVhUX01BWF9CSVRTLCA1MTIpCiAKLSAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgICMgUm91bmRpbmcgbW9kZXMKKyAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKFJvdW5kaW5nTW9kZXNbQ10pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuUk9VTkRfVFJVTkMsIDgpCisKKyAgICAgICAgIyBDb25kaXRpb25zCisgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShjb25kKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMTw8aSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlfAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25VbmRlZmluZWR8CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNGcHVFcnJvcnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY01hbGxvY0Vycm9yKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNFcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0RpdmlzaW9uQnlaZXJvKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNUcmFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0Vycm9yc3xDLkRlY092ZXJmbG93fEMuRGVjVW5kZXJmbG93KQorCitjbGFzcyBDV2hpdGVib3godW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIldoaXRlYm94IHRlc3RpbmcgZm9yIF9kZWNpbWFsIiIiCisKKyAgICBkZWYgdGVzdF9iaWdudW0oc2VsZik6CisgICAgICAgICMgTm90IGV4YWN0bHkgd2hpdGVib3gsIGJ1dCB0b28gc2xvdyB3aXRoIHB5ZGVjaW1hbC4KKworICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgYjEgPSAxMCoqMzUKKyAgICAgICAgYjIgPSAxMCoqMzYKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAwMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgYSA9IHJhbmRvbS5yYW5kcmFuZ2UoYjEsIGIyKQorICAgICAgICAgICAgICAgIGIgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAsIDEyMDApCisgICAgICAgICAgICAgICAgeCA9IGEgKiogYgorICAgICAgICAgICAgICAgIHkgPSBEZWNpbWFsKGEpICoqIERlY2ltYWwoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnN0cnVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDLkRlY2ltYWwsIDksICJ4eXoiKQorCisgICAgZGVmIHRlc3RfY19pbnB1dF9yZXN0cmljdGlvbihzZWxmKToKKyAgICAgICAgIyBUb28gbGFyZ2UgZm9yIF9kZWNpbWFsIHRvIGJlIGNvbnZlcnRlZCBleGFjdGx5CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoQ29udGV4dCgpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9yZXByKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBpcyBfZGVjaW1hbC1vbmx5IGJlY2F1c2UgZmxhZ3MgYXJlIG5vdCBwcmludGVkCisgICAgICAgICMgaW4gdGhlIHNhbWUgb3JkZXIuCisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IEMuRmxvYXRPcGVyYXRpb24KKyAgICAgICAgUk9VTkRfSEFMRl9ET1dOID0gQy5ST1VORF9IQUxGX0RPV04KKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgYy5wcmVjID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtaW4gPSAtNDI1MDAwMDAwCisgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tDXToKKyAgICAgICAgICAgIGMuZmxhZ3Nbc2lnXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IFRydWUKKyAgICAgICAgYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgIHMgPSBjLl9fcmVwcl9fKCkKKyAgICAgICAgdCA9ICJDb250ZXh0KHByZWM9NDI1MDAwMDAwLCByb3VuZGluZz1ST1VORF9IQUxGX0RPV04sICIgXAorICAgICAgICAgICAgIkVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsIGNhcGl0YWxzPTAsIGNsYW1wPTEsICIgXAorICAgICAgICAgICAgImZsYWdzPVtDbGFtcGVkLCBJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgIiBcCisgICAgICAgICAgICAgICAgICAgIkZsb2F0T3BlcmF0aW9uLCBPdmVyZmxvdywgUm91bmRlZCwgU3Vibm9ybWFsLCBVbmRlcmZsb3ddLCAiIFwKKyAgICAgICAgICAgICJ0cmFwcz1bQ2xhbXBlZCwgSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsICIgXAorICAgICAgICAgICAgICAgICAgICJGbG9hdE9wZXJhdGlvbiwgT3ZlcmZsb3csIFJvdW5kZWQsIFN1Ym5vcm1hbCwgVW5kZXJmbG93XSkiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgdCkKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9lcnJvcnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBDLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IEMuc2V0Y29udGV4dAorICAgICAgICBIQVZFX0NPTkZJR182NCA9IChDLk1BWF9QUkVDID4gNDI1MDAwMDAwKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCi0gICAgICAgIGZvciBrIGluIHZhcnMoYyk6Ci0gICAgICAgICAgICB2MSA9IHZhcnMoYylba10KLSAgICAgICAgICAgIHYyID0gdmFycyhlKVtrXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2MSwgdjIpCiAKLSAgICBkZWYgdGVzdF9lcXVhbGl0eV93aXRoX290aGVyX3R5cGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsIERlY2ltYWwoMTApLCAoMSwyKSwge31dKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsICgxLDIpLCB7fV0pCisgICAgICAgICMgU2lnbmFsRGljdDogaW5wdXQgdmFsaWRhdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy5mbGFncy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy50cmFwcy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLmZsYWdzLl9fZGVsaXRlbV9fLCBPdmVyZmxvdykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy50cmFwcy5fX2RlbGl0ZW1fXywgSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCBbJ3gnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCd0cmFwcycsIFsneSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgezA6MX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCB7MDoxfSkKIAotICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICAjIFRlc3QgYXNzaWdubWVudCBmcm9tIGEgc2lnbmFsIGRpY3Qgd2l0aCB0aGUgY29ycmVjdCBsZW5ndGggYnV0CisgICAgICAgICMgb25lIGludmFsaWQga2V5LgorICAgICAgICBkID0gYy5mbGFncy5jb3B5KCkKKyAgICAgICAgZGVsIGRbRmxvYXRPcGVyYXRpb25dCisgICAgICAgIGRbIlhZWiJdID0gOTEyODM3MTkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCBkKQorCisgICAgICAgICMgSW5wdXQgY29ybmVyIGNhc2VzCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQorICAgICAgICBndF9tYXhfZW1heCA9IDEwKioxOCBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDEwKio5CisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4J106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAtZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluIGluIGNvbnRleHQgY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgcHJlYz1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1heD1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1pbj0tZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBPdmVyZmxvdyBpbiBjb252ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIHByZWM9aW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBFbWF4PWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgRW1pbj0taW50X21heC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCByb3VuZGluZz1pbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIGNsYW1wPWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgY2FwaXRhbHM9aW50X21heCsxKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBWYWx1ZUVycm9yCisgICAgICAgIGZvciBhdHRyIGluICgncHJlYycsICdFbWluJywgJ0VtYXgnLCAnY2FwaXRhbHMnLCAnY2xhbXAnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTIpCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yLCBnZW5lcmFsIFR5cGVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ3JvdW5kaW5nJywpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLWludF9tYXgtMikKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yOiBfdW5zYWZlX3NldHByZWMsIF91bnNhZmVfc2V0ZW1pbiwgX3Vuc2FmZV9zZXRlbWF4CisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRwcmVjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1pbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKworICAgICAgICAjIFZhbHVlRXJyb3I6IF91bnNhZmVfc2V0cHJlYywgX3Vuc2FmZV9zZXRlbWluLCBfdW5zYWZlX3NldGVtYXgKKyAgICAgICAgaWYgQy5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldHByZWMnKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0cHJlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3MDAwMDAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1heCcpLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1heCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3MDAwMDAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1pbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwgMSkKKworICAgICAgICAjIGNhcGl0YWxzLCBjbGFtcAorICAgICAgICBmb3IgYXR0ciBpbiBbJ2NhcGl0YWxzJywgJ2NsYW1wJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIFsxLDIsM10pCisgICAgICAgICAgICBpZiBIQVZFX0NPTkZJR182NDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKiozMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKiozMisxKQorCisgICAgICAgICMgSW52YWxpZCBsb2NhbCBjb250ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXhlYywgJ3dpdGggbG9jYWxjb250ZXh0KCJ4eXoiKTogcGFzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscygpKQorCisgICAgICAgICMgc2V0Y29udGV4dAorICAgICAgICBzYXZlZF9jb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0Y29udGV4dCwgInh5eiIpCisgICAgICAgIHNldGNvbnRleHQoc2F2ZWRfY29udGV4dCkKKworICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19jb250ZXh0X2Vycm9yc19leHRyYShzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IEMuQ29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gQy5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBDLnNldGNvbnRleHQKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKKwogICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHkoKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMpLCBpZChkKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLmZsYWdzKSwgaWQoZC5mbGFncykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy50cmFwcyksIGlkKGQudHJhcHMpKQogCi0gICAgZGVmIHRlc3RfX2NsYW1wKHNlbGYpOgotICAgICAgICAjIEluIFB5dGhvbiAzLjIsIHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBgX2NsYW1wYCB3YXMgbWFkZQotICAgICAgICAjIHB1YmxpYyAoaXNzdWUgODU0MCksIHdpdGggdGhlIG9sZCBgX2NsYW1wYCBiZWNvbWluZyBhCi0gICAgICAgICMgcHJvcGVydHkgd3JhcHBpbmcgYGNsYW1wYC4gIEZvciB0aGUgZHVyYXRpb24gb2YgUHl0aG9uIDMuMgotICAgICAgICAjIG9ubHksIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGdldHRhYmxlL3NldHRhYmxlIHZpYSBib3RoCi0gICAgICAgICMgYGNsYW1wYCBhbmQgYF9jbGFtcGA7IGluIFB5dGhvbiAzLjMsIGBfY2xhbXBgIHNob3VsZCBiZQotICAgICAgICAjIHJlbW92ZWQuCi0gICAgICAgIGMgPSBDb250ZXh0KGNsYW1wID0gMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQorICAgICAgICAjIElucHV0IGNvcm5lciBjYXNlcworICAgICAgICBpbnRfbWF4ID0gMioqNjMtMSBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDIqKjMxLTEKIAotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBjLl9jbGFtcCA9IDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAxKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAxKQorICAgICAgICAjIE92ZXJmbG93RXJyb3IsIGdlbmVyYWwgVmFsdWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgaW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgLWludF9tYXgtMikKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgaW50X21heCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAtaW50X21heC0xKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBUeXBlRXJyb3IKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdfZmxhZ3MnLCAnX3RyYXBzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0yKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLWludF9tYXgtMSkKKworICAgICAgICAjIF9hbGxjcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCBbMSwyLDNdKQorICAgICAgICBpZiBIQVZFX0NPTkZJR182NDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKiozMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKiozMisxKQorCisgICAgICAgICMgX2ZsYWdzLCBfdHJhcHMKKyAgICAgICAgZm9yIGF0dHIgaW4gWydfZmxhZ3MnLCAnX3RyYXBzJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgJ3gnKQorCisgICAgZGVmIHRlc3RfY192YWxpZF9jb250ZXh0KHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIGFyZSBmb3IgY29kZSBjb3ZlcmFnZSBpbiBfZGVjaW1hbC4KKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CisgICAgICAgIFJPVU5EX0hBTEZfVVAgPSBDLlJPVU5EX0hBTEZfVVAKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBJbmV4YWN0ID0gQy5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgU3Vibm9ybWFsID0gQy5TdWJub3JtYWwKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgIyBFeGVyY2lzZSBhbGwgZ2V0dGVycyBhbmQgc2V0dGVycworICAgICAgICBjLnByZWMgPSAzNAorICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9VUAorICAgICAgICBjLkVtYXggPSAzMDAwCisgICAgICAgIGMuRW1pbiA9IC0zMDAwCisgICAgICAgIGMuY2FwaXRhbHMgPSAxCiAgICAgICAgIGMuY2xhbXAgPSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDM0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0hBTEZfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMzAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDMwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAwKQogCi0gICAgZGVmIHRlc3RfYWJzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmFicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFicygtMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hYnMsICctMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FdGlueSgpLCAtMzAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkV0b3AoKSwgMjk2NykKIAotICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5hZGQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAxLCAnMScpCisgICAgICAgICMgRXhlcmNpc2UgYWxsIHVuc2FmZSBzZXR0ZXJzCisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgYy5fdW5zYWZlX3NldHByZWMoOTk5OTk5OTk5KQorICAgICAgICAgICAgYy5fdW5zYWZlX3NldGVtYXgoOTk5OTk5OTk5KQorICAgICAgICAgICAgYy5fdW5zYWZlX3NldGVtaW4oLTk5OTk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA5OTk5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgOTk5OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC05OTk5OTk5OTkpCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmUoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsIDEsICcxJykKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfdmFsaWRfY29udGV4dF9leHRyYShzZWxmKToKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3NpZ25hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAxLCAnMScpCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9hbGxjciwgMSkKKyAgICAgICAgYy5fYWxsY3IgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fYWxsY3IsIDApCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsIDEsICcxJykKKyAgICBkZWYgdGVzdF9jX3JvdW5kKHNlbGYpOgorICAgICAgICAjIFJlc3RyaWN0ZWQgaW5wdXQuCisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBNQVhfRU1BWCA9IEMuTUFYX0VNQVgKKyAgICAgICAgTUlOX0VUSU5ZID0gQy5NSU5fRVRJTlkKKyAgICAgICAgaW50X21heCA9IDIqKjYzLTEgaWYgQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCBlbHNlIDIqKjMxLTEKIAotICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWxfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsIDEsICcxJykKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaW50X21heC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KE1BWF9FTUFYKzEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQy5JbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludChNSU5fRVRJTlktMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCiAKLSAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2FicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfYWJzKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfYWJzLCAnLTEnKQorICAgIGRlZiB0ZXN0X2NfZm9ybWF0KHNlbGYpOgorICAgICAgICAjIFJlc3RyaWN0ZWQgaW5wdXQKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKIAotICAgIGRlZiB0ZXN0X2NvcHlfZGVjaW1hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2RlY2ltYWwoRGVjaW1hbCgtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2RlY2ltYWwoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9kZWNpbWFsLCAnLTEnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIFtdLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCBbXSkKIAotICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfbmVnYXRlKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9uZWdhdGUoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9uZWdhdGUsICctMScpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnRyYXBzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCAiPD49MTAuMTAiKQorICAgICAgICAgICAgbWF4c2l6ZSA9IDIqKjYzLTEgaWYgSEFWRV9DT05GSUdfNjQgZWxzZSAyKiozMS0xCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxLjIzNDU2Nzg5IikuX19mb3JtYXRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9JWQuMSIgJSBtYXhzaXplKQogCi0gICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCAtMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgJzEnLCAtMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgMSwgJy0yJykKKyAgICBkZWYgdGVzdF9jX2ludGVncmFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgUk9VTkRfVVAgPSBDLlJPVU5EX1VQCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CiAKLSAgICBkZWYgdGVzdF9kaXZpZGUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgMSwgJzInKQorICAgICAgICB4ID0gRGVjaW1hbCgxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsKCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCAxMCkKIAotICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgMSwgJzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWxfdmFsdWUoKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCAxMCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIDEwKQogCi0gICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmRpdm1vZChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsIDEsICcyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsX2V4YWN0KCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX2V4YWN0LCAxMCkKIAotICAgIGRlZiB0ZXN0X2V4cChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5leHAoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leHAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZXhwLCAnMTAnKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkuOSIpLnRvX2ludGVncmFsX3ZhbHVlKFJPVU5EX1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSkKIAotICAgIGRlZiB0ZXN0X2ZtYShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgRGVjaW1hbCg0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCAzLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCBEZWNpbWFsKDMpLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCBEZWNpbWFsKDQpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgJzInLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAnMycsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsIDMsICc0JykKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OS45IikudG9faW50ZWdyYWxfZXhhY3QoUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpKQogCi0gICAgZGVmIHRlc3RfaXNfZmluaXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX2Zpbml0ZShEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2Zpbml0ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19maW5pdGUsICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0luZXhhY3RdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5leGFjdCwgRGVjaW1hbCgiOTk5LjkiKS50b19pbnRlZ3JhbF9leGFjdCwgUk9VTkRfVVApCiAKLSAgICBkZWYgdGVzdF9pc19pbmZpbml0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19pbmZpbml0ZShEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2luZmluaXRlKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2luZmluaXRlLCAnMTAnKQorICAgIGRlZiB0ZXN0X2NfZnVuY3Moc2VsZik6CisgICAgICAgICMgSW52YWxpZCBhcmd1bWVudHMKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gQy5EaXZpc2lvbkJ5WmVybworICAgICAgICBST1VORF9VUCA9IEMuUk9VTkRfVVAKKyAgICAgICAgZ2V0Y29udGV4dCA9IEMuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAogCi0gICAgZGVmIHRlc3RfaXNfbmFuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX25hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25hbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19uYW4sICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS45OWUxMCcpLnRvX2VuZ19zdHJpbmcoKSwgJzk5LjlFKzknKQogCi0gICAgZGVmIHRlc3RfaXNfbm9ybWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX25vcm1hbChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25vcm1hbCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19ub3JtYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93LCBEZWNpbWFsKDEpLCAyLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCg5KS5udW1iZXJfY2xhc3MsICJ4IiwgInkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoOSkuc2FtZV9xdWFudHVtLCAzLCAieCIsICJ5IikKIAotICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfcW5hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3FuYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfcW5hbiwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCBbXQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgZ2V0Y29udGV4dCgpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCAxMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgUk9VTkRfVVAsIDEwMDAKKyAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfaXNfc2lnbmVkKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3NpZ25lZChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NpZ25lZCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zaWduZWQsICcxMCcpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMuY2xlYXJfdHJhcHMoKQogCi0gICAgZGVmIHRlc3RfaXNfc25hbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zbmFuKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc25hbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zbmFuLCAnMTAnKQorICAgICAgICAgICAgIyBJbnZhbGlkIGFyZ3VtZW50cworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgRGVjaW1hbCgxKSwgIngiLCAieSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY2Fub25pY2FsLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfY2Fub25pY2FsLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCA5LCA4LCAieCIsICJ5IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sIDksIDMsICJ4IiwgInkiKQogCi0gICAgZGVmIHRlc3RfaXNfc3Vibm9ybWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3N1Ym5vcm1hbCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zdWJub3JtYWwsICcxMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNhbm9uaWNhbChEZWNpbWFsKDIwMCkpKSwgJzIwMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmFkaXgoKSwgMTApCiAKLSAgICBkZWYgdGVzdF9pc196ZXJvKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3plcm8oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc196ZXJvKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3plcm8sICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXZpc2lvbkJ5WmVybywgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKIAotICAgIGRlZiB0ZXN0X2xuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxuKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG4sICcxMCcpCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBjLmRpdm1vZCwgOSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKIAotICAgIGRlZiB0ZXN0X2xvZzEwKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgYy5wcmVjID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgcG93LCBEZWNpbWFsKDEwMDApLCAxLCA1MDEpCiAKLSAgICBkZWYgdGVzdF9sb2diKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2IoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2diKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2IsICcxMCcpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5CYXNpY0NvbnRleHQuX3RyYXBzLAorICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnxDLkRlY0RpdmlzaW9uQnlaZXJvfEMuRGVjT3ZlcmZsb3d8CisgICAgICAgICAgICBDLkRlY1VuZGVyZmxvd3xDLkRlY0NsYW1wZWQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5EZWZhdWx0Q29udGV4dC5fdHJhcHMsCisgICAgICAgICAgICBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9ufEMuRGVjRGl2aXNpb25CeVplcm98Qy5EZWNPdmVyZmxvdworICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX2FuZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAxLCAnMScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX3NpZ25hbF9kaWN0KHNlbGYpOgogCi0gICAgZGVmIHRlc3RfbG9naWNhbF9pbnZlcnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfaW52ZXJ0KDEwMDApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9pbnZlcnQsICcxMDAwJykKKyAgICAgICAgIyBTaWduYWxEaWN0IGNvdmVyYWdlCisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX29yKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsIDEsICcxJykKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IEMuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBDLk92ZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IEMuU3Vibm9ybWFsCisgICAgICAgIFVuZGVyZmxvdyA9IEMuVW5kZXJmbG93CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgSW5leGFjdCA9IEMuSW5leGFjdAorICAgICAgICBDbGFtcGVkID0gQy5DbGFtcGVkCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX3hvcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfeG9yLCAxLCAnMScpCisgICAgICAgIERlY0NsYW1wZWQgPSBDLkRlY0NsYW1wZWQKKyAgICAgICAgRGVjSW52YWxpZE9wZXJhdGlvbiA9IEMuRGVjSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEZWNJRUVFSW52YWxpZE9wZXJhdGlvbiA9IEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24KIAotICAgIGRlZiB0ZXN0X21heChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tYXgoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAxLCAnMicpCisgICAgICAgIGRlZiBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KHNpZ25hbCwgc2lnbmFsX2RpY3QpOgorICAgICAgICAgICAgZm9yIHNpZyBpbiBzaWduYWxfZGljdDoKKyAgICAgICAgICAgICAgICBpZiBzaWcgPT0gc2lnbmFsOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2lnbmFsX2RpY3Rbc2lnXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNpZ25hbF9kaWN0W3NpZ10pCiAKLSAgICBkZWYgdGVzdF9tYXhfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1heF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsIDEsICcyJykKKyAgICAgICAgYyA9IERlZmF1bHRDb250ZXh0LmNvcHkoKQorCisgICAgICAgICMgU2lnbmFsIGRpY3QgbWV0aG9kcworICAgICAgICBzZWxmLmFzc2VydFRydWUoT3ZlcmZsb3cgaW4gYy50cmFwcykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBrIGluIGMudHJhcHMua2V5cygpOgorICAgICAgICAgICAgYy50cmFwc1trXSA9IFRydWUKKyAgICAgICAgZm9yIHYgaW4gYy50cmFwcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2KQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIGssIHYgaW4gYy50cmFwcy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFncy5nZXQoT3ZlcmZsb3cpKQorICAgICAgICBzZWxmLmFzc2VydElzKGMuZmxhZ3MuZ2V0KCJ4IiksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncy5nZXQoIngiLCAieSIpLCAieSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbGFncy5nZXQsICJ4IiwgInkiLCAieiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYy5mbGFncyksIGxlbihjLnRyYXBzKSkKKyAgICAgICAgcyA9IHN5cy5nZXRzaXplb2YoYy5mbGFncykKKyAgICAgICAgcyA9IHN5cy5nZXRzaXplb2YoYy50cmFwcykKKyAgICAgICAgcyA9IGMuZmxhZ3MuX19yZXByX18oKQorCisgICAgICAgICMgU2V0IGZsYWdzL3RyYXBzLgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgYy5fZmxhZ3MgPSBEZWNDbGFtcGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0NsYW1wZWRdKQorCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBjLl90cmFwcyA9IERlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgIyBTZXQgZmxhZ3MvdHJhcHMgZnJvbSBkaWN0aW9uYXJ5LgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgZCA9IGMuZmxhZ3MuY29weSgpCisgICAgICAgIGRbRGl2aXNpb25CeVplcm9dID0gVHJ1ZQorICAgICAgICBjLmZsYWdzID0gZAorICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KERpdmlzaW9uQnlaZXJvLCBjLmZsYWdzKQogCi0gICAgZGVmIHRlc3RfbWluKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1pbihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW4sIDEsICcyJykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGQgPSBjLnRyYXBzLmNvcHkoKQorICAgICAgICBkW1VuZGVyZmxvd10gPSBUcnVlCisgICAgICAgIGMudHJhcHMgPSBkCisgICAgICAgIGFzc2VydElzRXhjbHVzaXZlbHlTZXQoVW5kZXJmbG93LCBjLnRyYXBzKQogCi0gICAgZGVmIHRlc3RfbWluX21hZyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW5fbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAxLCAnMicpCisgICAgICAgICMgUmFuZG9tIGNvbnN0cnVjdG9ycworICAgICAgICBJbnRTaWduYWxzID0geworICAgICAgICAgIENsYW1wZWQ6IEMuRGVjQ2xhbXBlZCwKKyAgICAgICAgICBSb3VuZGVkOiBDLkRlY1JvdW5kZWQsCisgICAgICAgICAgSW5leGFjdDogQy5EZWNJbmV4YWN0LAorICAgICAgICAgIFN1Ym5vcm1hbDogQy5EZWNTdWJub3JtYWwsCisgICAgICAgICAgVW5kZXJmbG93OiBDLkRlY1VuZGVyZmxvdywKKyAgICAgICAgICBPdmVyZmxvdzogQy5EZWNPdmVyZmxvdywKKyAgICAgICAgICBEaXZpc2lvbkJ5WmVybzogQy5EZWNEaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uOiBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIH0KKyAgICAgICAgSW50Q29uZCA9IFsKKyAgICAgICAgICBDLkRlY0RpdmlzaW9uSW1wb3NzaWJsZSwgQy5EZWNEaXZpc2lvblVuZGVmaW5lZCwgQy5EZWNGcHVFcnJvciwKKyAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0LCBDLkRlY0ludmFsaWRPcGVyYXRpb24sIEMuRGVjTWFsbG9jRXJyb3IsCisgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4LAorICAgICAgICBdCiAKLSAgICBkZWYgdGVzdF9taW51cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW51cyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbnVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbnVzLCAnMTAnKQorICAgICAgICBsaW0gPSBsZW4oT3JkZXJlZFNpZ25hbHNbQ10pCisgICAgICAgIGZvciByIGluIHJhbmdlKGxpbSk6CisgICAgICAgICAgICBmb3IgdCBpbiByYW5nZShsaW0pOgorICAgICAgICAgICAgICAgIGZvciByb3VuZCBpbiBSb3VuZGluZ01vZGVzW0NdOgorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJhbmRvbS5zYW1wbGUoT3JkZXJlZFNpZ25hbHNbQ10sIHIpCisgICAgICAgICAgICAgICAgICAgIHRyYXBzID0gcmFuZG9tLnNhbXBsZShPcmRlcmVkU2lnbmFsc1tDXSwgdCkKKyAgICAgICAgICAgICAgICAgICAgcHJlYyA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwMDApCisgICAgICAgICAgICAgICAgICAgIGVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAwMCwgMCkKKyAgICAgICAgICAgICAgICAgICAgZW1heCA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMTAwMDApCisgICAgICAgICAgICAgICAgICAgIGNsYW1wID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjYXBzID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjciA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMikKKyAgICAgICAgICAgICAgICAgICAgYyA9IENvbnRleHQocHJlYz1wcmVjLCByb3VuZGluZz1yb3VuZCwgRW1pbj1lbWluLCBFbWF4PWVtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPWNhcHMsIGNsYW1wPWNsYW1wLCBmbGFncz1saXN0KGZsYWdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcHM9bGlzdCh0cmFwcykpCiAKLSAgICBkZWYgdGVzdF9tdWx0aXBseShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBwcmVjKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIHJvdW5kKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgZW1pbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIGVtYXgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgY2FwcykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCBjbGFtcCkKIAotICAgIGRlZiB0ZXN0X25leHRfbWludXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF9taW51cyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfbWludXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9taW51cywgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgZikKIAotICAgIGRlZiB0ZXN0X25leHRfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5uZXh0X3BsdXMoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3BsdXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9wbHVzLCAnMTAnKQorICAgICAgICAgICAgICAgICAgICBmID0gMAorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiB0cmFwczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYgfD0gSW50U2lnbmFsc1t4XQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX3RyYXBzLCBmKQogCi0gICAgZGVmIHRlc3RfbmV4dF90b3dhcmQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfdG93YXJkLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgMSwgJzInKQorICAgICAgICBmb3IgY29uZCBpbiBJbnRDb25kOgorICAgICAgICAgICAgYy5fZmxhZ3MgPSBjb25kCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5fZmxhZ3MmRGVjSUVFRUludmFsaWRPcGVyYXRpb24pCisgICAgICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KEludmFsaWRPcGVyYXRpb24sIGMuZmxhZ3MpCiAKLSAgICBkZWYgdGVzdF9ub3JtYWxpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubm9ybWFsaXplKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubm9ybWFsaXplKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5vcm1hbGl6ZSwgJzEwJykKKyAgICAgICAgZm9yIGNvbmQgaW4gSW50Q29uZDoKKyAgICAgICAgICAgIGMuX3RyYXBzID0gY29uZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuX3RyYXBzJkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICAgICAgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChJbnZhbGlkT3BlcmF0aW9uLCBjLnRyYXBzKQogCi0gICAgZGVmIHRlc3RfbnVtYmVyX2NsYXNzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMTIzKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygwKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoLTQ1KSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgtNDUpKSkKKyAgICBkZWYgdGVzdF9pbnZhbGlkX292ZXJyaWRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCiAKLSAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCA0LCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIERlY2ltYWwoNCksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAnMScsIDQsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgMSwgJzQnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsIDQsICcyJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBsb2NhbGUgaW1wb3J0IENIQVJfTUFYCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucGx1cygxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wbHVzLCAnMTAnKQorICAgICAgICBkZWYgbWFrZV9ncm91cGluZyhsc3QpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocih4KSBmb3IgeCBpbiBsc3RdKQogCi0gICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQorICAgICAgICBkZWYgZ2V0X2ZtdCh4LCBvdmVycmlkZT1Ob25lLCBmbXQ9J24nKToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHgpLl9fZm9ybWF0X18oZm10LCBvdmVycmlkZSkKIAotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAxLCAnMicpCisgICAgICAgIGludmFsaWRfZ3JvdXBpbmcgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLCcsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMjU1LCAyNTUsIDBdKSwKKyAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICcsJworICAgICAgICB9CisgICAgICAgIGludmFsaWRfZG90ID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJ3h4eHh4JywKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX3NlcCA9IHsKKyAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcuJywKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAneXl5eXknCisgICAgICAgIH0KIAotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcl9uZWFyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsIDEsICcyJykKKyAgICAgICAgaWYgQ0hBUl9NQVggPT0gMTI3OiAjIG5lZ2F0aXZlIGdyb3VwaW5nIGluIG92ZXJyaWRlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRfZ3JvdXBpbmcsICdnJykKIAotICAgIGRlZiB0ZXN0X3JvdGF0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9mbXQsIDEyMzQ1LCBpbnZhbGlkX2RvdCwgJ2cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwgaW52YWxpZF9zZXAsICdnJykKIAotICAgIGRlZiB0ZXN0X3NxcnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc3FydChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNxcnQoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3FydCwgJzEwJykKKyAgICBkZWYgdGVzdF9leGFjdF9jb252ZXJzaW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KIAotICAgIGRlZiB0ZXN0X3NhbWVfcXVhbnR1bShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCAxLCAnMicpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKIAotICAgIGRlZiB0ZXN0X3NjYWxlYihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zY2FsZWIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAxLCAnMicpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQogCi0gICAgZGVmIHRlc3Rfc2hpZnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2hpZnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgMSwgJzInKQorICAgICAgICAgICAgIyBDbGFtcGVkCisgICAgICAgICAgICB4ID0gIjBlJWQiICUgc3lzLm1heHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3VidHJhY3QsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAxLCAnMicpCisgICAgICAgICAgICB4ID0gIjBlJWQiICUgKC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX2VuZ19zdHJpbmcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9fZW5nX3N0cmluZyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2VuZ19zdHJpbmcoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fZW5nX3N0cmluZywgJzEwJykKKyAgICAgICAgICAgICMgT3ZlcmZsb3cKKyAgICAgICAgICAgIHggPSAiMWUlZCIgJSBzeXMubWF4c2l6ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX3NjaV9zdHJpbmcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9fc2NpX3N0cmluZyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX3NjaV9zdHJpbmcoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fc2NpX3N0cmluZywgJzEwJykKKyAgICAgICAgICAgICMgVW5kZXJmbG93CisgICAgICAgICAgICB4ID0gIjFlJWQiICUgKC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX2V4YWN0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfZXhhY3QoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisgICAgZGVmIHRlc3RfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdwogCi0gICAgZGVmIHRlc3RfdG9faW50ZWdyYWxfdmFsdWUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF92YWx1ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgogCi1jbGFzcyBXaXRoU3RhdGVtZW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBDYW4ndCBkbyB0aGVzZSBhcyBkb2NzdHJpbmdzIHVudGlsIFB5dGhvbiAyLjYKLSAgICAjIGFzIGRvY3Rlc3QgY2FuJ3QgaGFuZGxlIF9fZnV0dXJlX18gc3RhdGVtZW50cworICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbT3ZlcmZsb3ddID0gVHJ1ZQorICAgICAgICAgICAgYy50cmFwc1tVbmRlcmZsb3ddID0gVHJ1ZQogCi0gICAgZGVmIHRlc3RfbG9jYWxjb250ZXh0KHNlbGYpOgotICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpbiB0aGUgYmxvY2sKLSAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBlbnRlcl9jdHg6Ci0gICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQotICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisgICAgICAgICAgICAjIFNTSVpFX01BWAorICAgICAgICAgICAgeCA9ICgxLCAoKSwgc3lzLm1heHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNyZWF0ZV9kZWNpbWFsKHgpKSwgJy0wRSs5OTk5OTknKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dGFyZyhzZWxmKToKLSAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIHRoZSBibG9jawotICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBuZXdfY3R4ID0gQ29udGV4dChwcmVjPTQyKQotICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuZXdfY3R4KSBhcyBlbnRlcl9jdHg6Ci0gICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldF9jdHgucHJlYywgbmV3X2N0eC5wcmVjLCAnZGlkIG5vdCBzZXQgY29ycmVjdCBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuZXdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisgICAgICAgICAgICB4ID0gKDEsICgwLCAxLCAyKSwgc3lzLm1heHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYy5jcmVhdGVfZGVjaW1hbCwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLWNsYXNzIENvbnRleHRGbGFncyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZmxhZ3NfaXJyZWxldmFudChzZWxmKToKLSAgICAgICAgIyBjaGVjayB0aGF0IHRoZSByZXN1bHQgKG51bWVyaWMgcmVzdWx0ICsgZmxhZ3MgcmFpc2VkKSBvZiBhbgotICAgICAgICAjIGFyaXRobWV0aWMgb3BlcmF0aW9uIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBjdXJyZW50IGZsYWdzCisgICAgICAgICAgICAjIFNTSVpFX01JTgorICAgICAgICAgICAgeCA9ICgxLCAoKSwgLXN5cy5tYXhzaXplLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNyZWF0ZV9kZWNpbWFsKHgpKSwgJy0wRS0xMDAwMDI2JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz05LCBFbWluID0gLTk5OTk5OTk5OSwgRW1heCA9IDk5OTk5OTk5OSwKLSAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1bXSwgZmxhZ3M9W10pCisgICAgICAgICAgICB4ID0gKDEsICgwLCAxLCAyKSwgLXN5cy5tYXhzaXplLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmRlcmZsb3csIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgICAgICMgb3BlcmF0aW9ucyB0aGF0IHJhaXNlIHZhcmlvdXMgZmxhZ3MsIGluIHRoZSBmb3JtIChmdW5jdGlvbiwgYXJnbGlzdCkKLSAgICAgICAgb3BlcmF0aW9ucyA9IFsKLSAgICAgICAgICAgIChjb250ZXh0Ll9hcHBseSwgW0RlY2ltYWwoIjEwMEUtMTAwMDAwMDAwOSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5zcXJ0LCBbRGVjaW1hbCgyKV0pLAotICAgICAgICAgICAgKGNvbnRleHQuYWRkLCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIChjb250ZXh0Lm11bHRpcGx5LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIChjb250ZXh0LnN1YnRyYWN0LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIF0KKyAgICAgICAgICAgICMgT3ZlcmZsb3dFcnJvcgorICAgICAgICAgICAgeCA9ICgxLCAoKSwgc3lzLm1heHNpemUrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsLCB4KQogCi0gICAgICAgICMgdHJ5IHZhcmlvdXMgZmxhZ3MgaW5kaXZpZHVhbGx5LCB0aGVuIGEgd2hvbGUgbG90IGF0IG9uY2UKLSAgICAgICAgZmxhZ3NldHMgPSBbW0luZXhhY3RdLCBbUm91bmRlZF0sIFtVbmRlcmZsb3ddLCBbQ2xhbXBlZF0sIFtTdWJub3JtYWxdLAotICAgICAgICAgICAgICAgICAgICBbSW5leGFjdCwgUm91bmRlZCwgVW5kZXJmbG93LCBDbGFtcGVkLCBTdWJub3JtYWxdXQorICAgICAgICAgICAgeCA9ICgxLCAoKSwgLXN5cy5tYXhzaXplLTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgRGVjaW1hbCwgeCkKIAotICAgICAgICBmb3IgZm4sIGFyZ3MgaW4gb3BlcmF0aW9uczoKLSAgICAgICAgICAgICMgZmluZCBhbnN3ZXIgYW5kIGZsYWdzIHJhaXNlZCB1c2luZyBhIGNsZWFuIGNvbnRleHQKLSAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQotICAgICAgICAgICAgYW5zID0gZm4oKmFyZ3MpCi0gICAgICAgICAgICBmbGFncyA9IFtrIGZvciBrLCB2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICAgICAgIyBTcGVjaWFscworICAgICAgICAgICAgeCA9ICgxLCAoKSwgIk4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCh4KSksICctc05hTicpCisgICAgICAgICAgICB4ID0gKDEsICgwLCksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4nKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4xJykKIAotICAgICAgICAgICAgZm9yIGV4dHJhX2ZsYWdzIGluIGZsYWdzZXRzOgotICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzLCBiZWZvcmUgY2FsbGluZyBvcGVyYXRpb24KLSAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoZmxhZykKLSAgICAgICAgICAgICAgICBuZXdfYW5zID0gZm4oKmFyZ3MpCiAKLSAgICAgICAgICAgICAgICAjIGZsYWdzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNldCBhZnRlciB0aGUgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MgPSBsaXN0KGZsYWdzKQotICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgotICAgICAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBleHBlY3RlZF9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLmFwcGVuZChmbGFnKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLnNvcnQoa2V5PWlkKQorYWxsX3Rlc3RzID0gWworICBDRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0LCBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKKyAgQ0ltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCisgIENGb3JtYXRUZXN0LCAgICAgICAgICAgICAgIFB5Rm9ybWF0VGVzdCwKKyAgQ0FyaXRobWV0aWNPcGVyYXRvcnNUZXN0LCAgUHlBcml0aG1ldGljT3BlcmF0b3JzVGVzdCwKKyAgQ1RocmVhZGluZ1Rlc3QsICAgICAgICAgICAgUHlUaHJlYWRpbmdUZXN0LAorICBDVXNhYmlsaXR5VGVzdCwgICAgICAgICAgICBQeVVzYWJpbGl0eVRlc3QsCisgIENQeXRob25BUEl0ZXN0cywgICAgICAgICAgIFB5UHl0aG9uQVBJdGVzdHMsCisgIENDb250ZXh0QVBJdGVzdHMsICAgICAgICAgIFB5Q29udGV4dEFQSXRlc3RzLAorICBDQ29udGV4dFdpdGhTdGF0ZW1lbnQsICAgICBQeUNvbnRleHRXaXRoU3RhdGVtZW50LAorICBDQ29udGV4dEZsYWdzLCAgICAgICAgICAgICBQeUNvbnRleHRGbGFncywKKyAgQ1NwZWNpYWxDb250ZXh0cywgICAgICAgICAgUHlTcGVjaWFsQ29udGV4dHMsCisgIENDb250ZXh0SW5wdXRWYWxpZGF0aW9uLCAgIFB5Q29udGV4dElucHV0VmFsaWRhdGlvbiwKKyAgQ0NvbnRleHRTdWJjbGFzc2luZywgICAgICAgUHlDb250ZXh0U3ViY2xhc3NpbmcsCisgIENDb3ZlcmFnZSwgICAgICAgICAgICAgICAgIFB5Q292ZXJhZ2UsCisgIENGdW5jdGlvbmFsaXR5LCAgICAgICAgICAgIFB5RnVuY3Rpb25hbGl0eSwKKyAgQ1doaXRlYm94LCAgICAgICAgICAgICAgICAgUHlXaGl0ZWJveCwKKyAgQ0lCTVRlc3RDYXNlcywgICAgICAgICAgICAgUHlJQk1UZXN0Q2FzZXMsCitdCiAKLSAgICAgICAgICAgICAgICAjIGZsYWdzIHdlIGFjdHVhbGx5IGdvdAotICAgICAgICAgICAgICAgIG5ld19mbGFncyA9IFtrIGZvciBrLHYgaW4gY29udGV4dC5mbGFncy5pdGVtcygpIGlmIHZdCi0gICAgICAgICAgICAgICAgbmV3X2ZsYWdzLnNvcnQoa2V5PWlkKQorIyBEZWxldGUgQyB0ZXN0cyBpZiBfZGVjaW1hbC5zbyBpcyBub3QgcHJlc2VudC4KK2lmIG5vdCBDOgorICAgIGFsbF90ZXN0cyA9IGFsbF90ZXN0c1sxOjoyXQorZWxzZToKKyAgICBhbGxfdGVzdHMuaW5zZXJ0KDAsIENoZWNrQXR0cmlidXRlcykKIAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBuZXdfYW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBwcm9kdWNlcyBkaWZmZXJlbnQgYW5zd2VycyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzLiIgJSAoYW5zLCBuZXdfYW5zKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19mbGFncywgZXhwZWN0ZWRfZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiByYWlzZXMgZGlmZmVyZW50IGZsYWdzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzIiAlIChleHBlY3RlZF9mbGFncywgbmV3X2ZsYWdzKSkKIAogZGVmIHRlc3RfbWFpbihhcml0aD1GYWxzZSwgdmVyYm9zZT1Ob25lLCB0b2RvX3Rlc3RzPU5vbmUsIGRlYnVnPU5vbmUpOgogICAgICIiIiBFeGVjdXRlIHRoZSB0ZXN0cy4KQEAgLTIzNzQsMjcgKzUwODEsMTYgQEAKICAgICBpcyBlbmFibGVkIGluIHJlZ3J0ZXN0LnB5CiAgICAgIiIiCiAKLSAgICBpbml0KCkKKyAgICBpbml0KEMpCisgICAgaW5pdChQKQogICAgIGdsb2JhbCBURVNUX0FMTCwgREVCVUcKICAgICBURVNUX0FMTCA9IGFyaXRoIG9yIGlzX3Jlc291cmNlX2VuYWJsZWQoJ2RlY2ltYWwnKQogICAgIERFQlVHID0gZGVidWcKIAogICAgIGlmIHRvZG9fdGVzdHMgaXMgTm9uZToKLSAgICAgICAgdGVzdF9jbGFzc2VzID0gWwotICAgICAgICAgICAgRGVjaW1hbEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QsCi0gICAgICAgICAgICBEZWNpbWFsRm9ybWF0VGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxVc2VPZkNvbnRleHRUZXN0LAotICAgICAgICAgICAgRGVjaW1hbFVzYWJpbGl0eVRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsUHl0aG9uQVBJdGVzdHMsCi0gICAgICAgICAgICBDb250ZXh0QVBJdGVzdHMsCi0gICAgICAgICAgICBEZWNpbWFsVGVzdCwKLSAgICAgICAgICAgIFdpdGhTdGF0ZW1lbnRUZXN0LAotICAgICAgICAgICAgQ29udGV4dEZsYWdzCi0gICAgICAgIF0KKyAgICAgICAgdGVzdF9jbGFzc2VzID0gYWxsX3Rlc3RzCiAgICAgZWxzZToKLSAgICAgICAgdGVzdF9jbGFzc2VzID0gW0RlY2ltYWxUZXN0XQorICAgICAgICB0ZXN0X2NsYXNzZXMgPSBbQ0lCTVRlc3RDYXNlcywgUHlJQk1UZXN0Q2FzZXNdCiAKICAgICAjIER5bmFtaWNhbGx5IGJ1aWxkIGN1c3RvbSB0ZXN0IGRlZmluaXRpb24gZm9yIGVhY2ggZmlsZSBpbiB0aGUgdGVzdAogICAgICMgZGlyZWN0b3J5IGFuZCBhZGQgdGhlIGRlZmluaXRpb25zIHRvIHRoZSBEZWNpbWFsVGVzdCBjbGFzcy4gIFRoaXMKQEAgLTI0MDYsMTcgKzUxMDIsMzIgQEAKICAgICAgICAgaWYgdG9kb190ZXN0cyBpcyBub3QgTm9uZSBhbmQgaGVhZCBub3QgaW4gdG9kb190ZXN0czoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRlc3RlciA9IGxhbWJkYSBzZWxmLCBmPWZpbGVuYW1lOiBzZWxmLmV2YWxfZmlsZShkaXJlY3RvcnkgKyBmKQotICAgICAgICBzZXRhdHRyKERlY2ltYWxUZXN0LCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQorICAgICAgICBzZXRhdHRyKENJQk1UZXN0Q2FzZXMsICd0ZXN0XycgKyBoZWFkLCB0ZXN0ZXIpCisgICAgICAgIHNldGF0dHIoUHlJQk1UZXN0Q2FzZXMsICd0ZXN0XycgKyBoZWFkLCB0ZXN0ZXIpCiAgICAgICAgIGRlbCBmaWxlbmFtZSwgaGVhZCwgdGFpbCwgdGVzdGVyCiAKIAogICAgIHRyeToKICAgICAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCiAgICAgICAgIGlmIHRvZG9fdGVzdHMgaXMgTm9uZToKLSAgICAgICAgICAgIGltcG9ydCBkZWNpbWFsIGFzIERlY2ltYWxNb2R1bGUKLSAgICAgICAgICAgIHJ1bl9kb2N0ZXN0KERlY2ltYWxNb2R1bGUsIHZlcmJvc2UpCisgICAgICAgICAgICBmcm9tIGRvY3Rlc3QgaW1wb3J0IElHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICAgICAgICBzYXZlZGVjaW1hbCA9IHN5cy5tb2R1bGVzWydkZWNpbWFsJ10KKyAgICAgICAgICAgIGlmIEM6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKKyAgICAgICAgICAgICAgICBydW5fZG9jdGVzdChDLCB2ZXJib3NlLCBvcHRpb25mbGFncz1JR05PUkVfRVhDRVBUSU9OX0RFVEFJTCkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICBydW5fZG9jdGVzdChQLCB2ZXJib3NlKQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCiAgICAgZmluYWxseToKLSAgICAgICAgc2V0Y29udGV4dChPUklHSU5BTF9DT05URVhUKQorICAgICAgICBpZiBDOiBDLnNldGNvbnRleHQoT1JJR0lOQUxfQ09OVEVYVFtDXSkKKyAgICAgICAgUC5zZXRjb250ZXh0KE9SSUdJTkFMX0NPTlRFWFRbUF0pCisgICAgICAgIGlmIG5vdCBDOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybignQyB0ZXN0cyBza2lwcGVkOiBubyBtb2R1bGUgbmFtZWQgX2RlY2ltYWwuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcpCisgICAgICAgIGlmIG5vdCBvcmlnX3N5c19kZWNpbWFsIGlzIHN5cy5tb2R1bGVzWydkZWNpbWFsJ106CisgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCJJbnRlcm5hbCBlcnJvcjogdW5iYWxhbmNlZCBudW1iZXIgb2YgY2hhbmdlcyB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlc1snZGVjaW1hbCddLiIpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgb3B0cGFyc2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IGYwYWZlMWQuLmE4NDg3ZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtNDcyLDYgKzQ3MiwxOSBAQAogIyMgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKICMjICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZVstMV0pKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICBkYXRhID0gZGVxdWUocmFuZ2UoMjAwKSkKKyAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKVsxOl0pCisKICAgICBkZWYgdGVzdF9kZWVwY29weShzZWxmKToKICAgICAgICAgbXV0ID0gWzEwXQogICAgICAgICBkID0gZGVxdWUoW211dF0pCkBAIC01MjQsNyArNTM3LDcgQEAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6CiAgICAgICAgIEJMT0NLTEVOID0gNjIKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRQbFAnKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJQNG5sUCcpCiAgICAgICAgIGJsb2Nrc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnMlAlZFAnICUgQkxPQ0tMRU4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqZWN0Ll9fc2l6ZW9mX18oZGVxdWUoKSksIGJhc2VzaXplKQogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQppbmRleCBjZGFmN2QyLi4wNzlmNjBiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKQEAgLTY1NCwxOSArNjU0LDE5IEBACiAgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPUFNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBCKG1ldGFjbGFzcz1CTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgQk1ldGEuX19uZXdfXyBjYWxscyBBTWV0YS5fX25ld19fIHdpdGggc3VwZXI6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQyhBLCBCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBCTWV0YToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgIyBCTWV0YS5fX3ByZXBhcmVfXyBzaG91bGQndmUgYmVlbiBjYWxsZWQ6CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQy5fX2RpY3RfXykKIApAQCAtNjc0LDIwICs2NzQsMjAgQEAKICAgICAgICAgY2xhc3MgQzIoQiwgQSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQzIuX19kaWN0X18pCiAKICAgICAgICAgIyBDaGVjayBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbiB3aGVuIGEgbWV0YWNsYXNzIGlzIGRlY2xhcmVkOgogICAgICAgICBjbGFzcyBEKEMsIG1ldGFjbGFzcz10eXBlKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBELl9fZGljdF9fKQogCiAgICAgICAgIGNsYXNzIEUoQywgbWV0YWNsYXNzPUFNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBFLl9fZGljdF9fKQogCiAgICAgICAgICMgU3BlY2lhbCBjYXNlOiB0aGUgZ2l2ZW4gbWV0YWNsYXNzIGlzbid0IGEgY2xhc3MsCkBAIC03MjksMzMgKzcyOSwzMyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEFOb3RNZXRhLCB0eXBlKEEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEIobWV0YWNsYXNzPUJOb3RNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShCKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBDKEEsIEIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEMyKEIsIEEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEMyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICAjIFRoaXMgaXMgYSBUeXBlRXJyb3IsIGJlY2F1c2Ugb2YgYSBtZXRhY2xhc3MgY29uZmxpY3Q6CiAgICAgICAgICMgQk5vdE1ldGEgaXMgbmVpdGhlciBhIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIHR5cGUKQEAgLTc2NywyNSArNzY3LDI1IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgRihvYmplY3QoKSwgQyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgRjIoQywgb2JqZWN0KCkpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICAjIFR5cGVFcnJvcjogQk5vdE1ldGEgaXMgbmVpdGhlciBhCiAgICAgICAgICMgc3ViY2xhc3MsIG5vciBhIHN1cGVyY2xhc3Mgb2YgaW50CkBAIC0xNDQ0LDYgKzE0NDQsMTQgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiY2xhc3NtZXRob2Qgc2hvdWxkbid0IGFjY2VwdCBrZXl3b3JkIGFyZ3MiKQogCisgICAgICAgIGNtID0gY2xhc3NtZXRob2QoZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5fX2RpY3RfXywge30pCisgICAgICAgIGNtLnggPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLngsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLl9fZGljdF9fLCB7IngiIDogNDJ9KQorICAgICAgICBkZWwgY20ueAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY20sICJ4IikpCisKICAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidGhlIG1vZHVsZSAneHhzdWJ0eXBlJyBpcyBpbnRlcm5hbCIpCiAgICAgZGVmIHRlc3RfY2xhc3NtZXRob2RzX2luX2Moc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBDLWJhc2VkIGNsYXNzIG1ldGhvZHMuLi4KQEAgLTE0OTEsNiArMTQ5OSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ29vKDEpLCAoMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZm9vKDEpLCAoZCwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5mb28oZCwgMSksIChkLCAxKSkKKyAgICAgICAgc20gPSBzdGF0aWNtZXRob2QoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS5fX2RpY3RfXywge30pCisgICAgICAgIHNtLnggPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtLngsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtLl9fZGljdF9fLCB7IngiIDogNDJ9KQorICAgICAgICBkZWwgc20ueAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoc20sICJ4IikpCiAKICAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidGhlIG1vZHVsZSAneHhzdWJ0eXBlJyBpcyBpbnRlcm5hbCIpCiAgICAgZGVmIHRlc3Rfc3RhdGljbWV0aG9kc19pbl9jKHNlbGYpOgpAQCAtMTc3MSw2ICsxNzg2LDcgQEAKICAgICAgICAgICAgICgiX19mb3JtYXRfXyIsIGZvcm1hdCwgZm9ybWF0X2ltcGwsIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fZmxvb3JfXyIsIG1hdGguZmxvb3IsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fdHJ1bmNfXyIsIG1hdGgudHJ1bmMsIHplcm8sIHNldCgpLCB7fSksCisgICAgICAgICAgICAoIl9fdHJ1bmNfXyIsIGludCwgemVybywgc2V0KCksIHt9KSwKICAgICAgICAgICAgICgiX19jZWlsX18iLCBtYXRoLmNlaWwsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fZGlyX18iLCBkaXIsIGVtcHR5X3NlcSwgc2V0KCksIHt9KSwKICAgICAgICAgICAgIF0KQEAgLTE4MTYsMTIgKzE4MzIsNyBAQAogICAgICAgICAgICAgZm9yIGF0dHIsIG9iaiBpbiBlbnYuaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZXRhdHRyKFgsIGF0dHIsIG9iaikKICAgICAgICAgICAgIHNldGF0dHIoWCwgbmFtZSwgRXJyRGVzY3IoKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBydW5uZXIoWCgpKQotICAgICAgICAgICAgZXhjZXB0IE15RXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJ7MCFyfSBkaWRuJ3QgcmFpc2UiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE15RXhjZXB0aW9uLCBydW5uZXIsIFgoKSkKIAogICAgIGRlZiB0ZXN0X3NwZWNpYWxzKHNlbGYpOgogICAgICAgICAjIFRlc3Rpbmcgc3BlY2lhbCBvcGVyYXRvcnMuLi4KQEAgLTIyNTgsOSArMjI2OSw2IEBACiAgICAgICAgICMgVHdvIGVzc2VudGlhbGx5IGZlYXR1cmVsZXNzIG9iamVjdHMsIGp1c3QgaW5oZXJpdGluZyBzdHVmZiBmcm9tCiAgICAgICAgICMgb2JqZWN0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihOb3RJbXBsZW1lbnRlZCksIGRpcihFbGxpcHNpcykpCi0gICAgICAgIGlmIHN1cHBvcnQuY2hlY2tfaW1wbF9kZXRhaWwoKToKLSAgICAgICAgICAgICMgTm9uZSBkaWZmZXJzIGluIFB5UHk6IGl0IGhhcyBhIF9fbm9uemVyb19fCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihOb25lKSwgZGlyKEVsbGlwc2lzKSkKIAogICAgICAgICAjIE5hc3R5IHRlc3QgY2FzZSBmb3IgcHJveGllZCBvYmplY3RzCiAgICAgICAgIGNsYXNzIFdyYXBwZXIob2JqZWN0KToKQEAgLTQ0NTYsNiArNDQ2NCw1NCBAQAogICAgICAgICB4LnkgPSA0MgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhbInkiXSwgNDIpCiAKKyAgICBkZWYgdGVzdF9zbG90X3NoYWRvd3NfY2xhc3NfdmFyaWFibGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgICAgIF9fc2xvdHNfXyA9IFsiZm9vIl0KKyAgICAgICAgICAgICAgICBmb28gPSBOb25lCisgICAgICAgIG0gPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCInZm9vJyBpbiBfX3Nsb3RzX18gY29uZmxpY3RzIHdpdGggY2xhc3MgdmFyaWFibGUiLCBtKQorCisgICAgZGVmIHRlc3Rfc2V0X2RvYyhzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgICJlbGVwaGFudCIKKyAgICAgICAgWC5fX2RvY19fID0gImJhbmFuYSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLl9fZG9jX18sICJiYW5hbmEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICB0eXBlKGxpc3QpLl9fZGljdF9fWyJfX2RvY19fIl0uX19zZXRfXyhsaXN0LCAiYmxhaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhbid0IHNldCBsaXN0Ll9fZG9jX18iLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgdHlwZShYKS5fX2RpY3RfX1siX19kb2NfXyJdLl9fZGVsZXRlX18oWCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiY2FuJ3QgZGVsZXRlIFguX19kb2NfXyIsIHN0cihjbS5leGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguX19kb2NfXywgImJhbmFuYSIpCisKKyAgICBkZWYgdGVzdF9xdWFsbmFtZShzZWxmKToKKyAgICAgICAgZGVzY3JpcHRvcnMgPSBbc3RyLmxvd2VyLCBjb21wbGV4LnJlYWwsIGZsb2F0LnJlYWwsIGludC5fX2FkZF9fXQorICAgICAgICB0eXBlcyA9IFsnbWV0aG9kJywgJ21lbWJlcicsICdnZXRzZXQnLCAnd3JhcHBlciddCisKKyAgICAgICAgIyBtYWtlIHN1cmUgd2UgaGF2ZSBhbiBleGFtcGxlIG9mIGVhY2ggdHlwZSBvZiBkZXNjcmlwdG9yCisgICAgICAgIGZvciBkLCBuIGluIHppcChkZXNjcmlwdG9ycywgdHlwZXMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGQpLl9fbmFtZV9fLCBuICsgJ19kZXNjcmlwdG9yJykKKworICAgICAgICBmb3IgZCBpbiBkZXNjcmlwdG9yczoKKyAgICAgICAgICAgIHF1YWxuYW1lID0gZC5fX29iamNsYXNzX18uX19xdWFsbmFtZV9fICsgJy4nICsgZC5fX25hbWVfXworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLl9fcXVhbG5hbWVfXywgcXVhbG5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIubG93ZXIuX19xdWFsbmFtZV9fLCAnc3RyLmxvd2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4LnJlYWwuX19xdWFsbmFtZV9fLCAnY29tcGxleC5yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdC5yZWFsLl9fcXVhbG5hbWVfXywgJ2Zsb2F0LnJlYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludC5fX2FkZF9fLl9fcXVhbG5hbWVfXywgJ2ludC5fX2FkZF9fJykKKworICAgIGRlZiB0ZXN0X3F1YWxuYW1lX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0geydfX3F1YWxuYW1lX18nOiAnc29tZS5uYW1lJ30KKyAgICAgICAgdHAgPSB0eXBlKCdGb28nLCAoKSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuX19xdWFsbmFtZV9fLCAnc29tZS5uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cC5fX2RpY3RfX1snX19xdWFsbmFtZV9fJ10sICdzb21lLm5hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLCB7J19fcXVhbG5hbWVfXyc6ICdzb21lLm5hbWUnfSkKKworICAgICAgICBucyA9IHsnX19xdWFsbmFtZV9fJzogMX0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0eXBlLCAnRm9vJywgKCksIG5zKQorCiAgICAgZGVmIHRlc3RfY3ljbGVfdGhyb3VnaF9kaWN0KHNlbGYpOgogICAgICAgICAjIFNlZSBidWcgIzE0Njk2MjkKICAgICAgICAgY2xhc3MgWChkaWN0KToKQEAgLTQ0NzEsNiArNDUyNywyNyBAQAogICAgICAgICBmb3IgbyBpbiBnYy5nZXRfb2JqZWN0cygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0eXBlKG8pLCBYKQogCisgICAgZGVmIHRlc3Rfb2JqZWN0X25ld19hbmRfaW5pdF93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNjgzMzY4CisgICAgICAgIGNsYXNzIE92ZXJyaWRlTmVpdGhlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPdmVycmlkZU5laXRoZXIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3ZlcnJpZGVOZWl0aGVyLCBrdz0xKQorICAgICAgICBjbGFzcyBPdmVycmlkZU5ldzoKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgZm9vLCBrdz0wLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorICAgICAgICBjbGFzcyBPdmVycmlkZUluaXQ6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vLCBrdz0wLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBjbGFzcyBPdmVycmlkZUJvdGgoT3ZlcnJpZGVOZXcsIE92ZXJyaWRlSW5pdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBjYXNlIGluIE92ZXJyaWRlTmV3LCBPdmVycmlkZUluaXQsIE92ZXJyaWRlQm90aDoKKyAgICAgICAgICAgIGNhc2UoMSkKKyAgICAgICAgICAgIGNhc2UoMSwga3c9MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2FzZSwgMSwgMiwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2FzZSwgMSwgMiwgZm9vPTMpCisKKwogY2xhc3MgRGljdFByb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDQ3OCw2ICs0NTU1LDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuQyA9IEMKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl9rZXlzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgZGljdC1wcm94eSBrZXlzLi4uCiAgICAgICAgIGl0ID0gc2VsZi5DLl9fZGljdF9fLmtleXMoKQpAQCAtNDQ4NSwxNSArNDU2NCwxOSBAQAogICAgICAgICBrZXlzID0gbGlzdChpdCkKICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBbJ19fZGljdF9fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsCi0gICAgICAgICAgICAnX193ZWFrcmVmX18nLCAnbWV0aCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19xdWFsbmFtZV9fJywgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl92YWx1ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IHZhbHVlcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy52YWx1ZXMoKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaXQsIGxpc3QpCiAgICAgICAgIHZhbHVlcyA9IGxpc3QoaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZhbHVlcyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZhbHVlcyksIDYpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2FsX18nKQogICAgIGRlZiB0ZXN0X2l0ZXJfaXRlbXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IGl0ZXJpdGVtcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpCkBAIC00NTAxLDcgKzQ1ODQsNyBAQAogICAgICAgICBrZXlzID0gW2l0ZW1bMF0gZm9yIGl0ZW0gaW4gaXRdCiAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywgWydfX2RpY3RfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLAotICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcXVhbG5hbWVfXycsICdfX3dlYWtyZWZfXycsICdtZXRoJ10pCiAKICAgICBkZWYgdGVzdF9kaWN0X3R5cGVfd2l0aF9tZXRhY2xhc3Moc2VsZik6CiAgICAgICAgICMgVGVzdGluZyB0eXBlIG9mIF9fZGljdF9fIHdoZW4gbWV0YWNsYXNzIHNldC4uLgpAQCAtNDUxNSwxOSArNDU5OCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoQy5fX2RpY3RfXyksIHR5cGUoQi5fX2RpY3RfXykpCiAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgotICAgICAgICAjIFRlc3RpbmcgZGljdF9wcm94eS5fX3JlcHJfXwotICAgICAgICBkZWYgc29ydGVkX2RpY3RfcmVwcihyZXByXyk6Ci0gICAgICAgICAgICAjIEdpdmVuIHRoZSByZXByIG9mIGEgZGljdCwgc29ydCB0aGUga2V5cwotICAgICAgICAgICAgYXNzZXJ0IHJlcHJfLnN0YXJ0c3dpdGgoJ3snKQotICAgICAgICAgICAgYXNzZXJ0IHJlcHJfLmVuZHN3aXRoKCd9JykKLSAgICAgICAgICAgIGt2cyA9IHJlcHJfWzE6LTFdLnNwbGl0KCcsICcpCi0gICAgICAgICAgICByZXR1cm4gJ3snICsgJywgJy5qb2luKHNvcnRlZChrdnMpKSArICd9JwotICAgICAgICBkaWN0XyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpfQotICAgICAgICByZXByXyA9IHJlcHIoc2VsZi5DLl9fZGljdF9fKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcl8uc3RhcnRzd2l0aCgnZGljdF9wcm94eSgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHJfLmVuZHN3aXRoKCcpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkX2RpY3RfcmVwcihyZXByX1tsZW4oJ2RpY3RfcHJveHkoJyk6LWxlbignKScpXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkX2RpY3RfcmVwcigneyFyfScuZm9ybWF0KGRpY3RfKSkpCisgICAgICAgICMgVGVzdGluZyBtYXBwaW5ncHJveHkuX19yZXByX18uCisgICAgICAgICMgV2UgY2FuJ3QgYmxpbmRseSBjb21wYXJlIHdpdGggdGhlIHJlcHIgb2YgYW5vdGhlciBkaWN0IGFzIG9yZGVyaW5nCisgICAgICAgICMgb2Yga2V5cyBhbmQgdmFsdWVzIGlzIGFyYml0cmFyeSBhbmQgbWF5IGRpZmZlci4KKyAgICAgICAgciA9IHJlcHIoc2VsZi5DLl9fZGljdF9fKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCdtYXBwaW5ncHJveHkoJyksIHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLmVuZHN3aXRoKCcpJyksIHIpCisgICAgICAgIGZvciBrLCB2IGluIHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigneyFyfTogeyFyfScuZm9ybWF0KGssIHYpLCByKQogCiAKIGNsYXNzIFBUeXBlc0xvbmdJbml0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00NTUyLDEwICs0NjMwLDM4IEBACiAgICAgICAgIHR5cGUubXJvKHR1cGxlKQogCiAKK2NsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdHlwZV9sb29rdXBfbXJvX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQxOTk6IF9QeVR5cGVfTG9va3VwKCkgaGFzIHRvIGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvCisgICAgICAgICMgdGhlIHR5cGUgTVJPIGJlY2F1c2UgaXQgbWF5IGJlIG1vZGlmaWVkIGR1cmluZyB0aGUgbG9va3VwLCBpZgorICAgICAgICAjIF9fYmFzZXNfXyBpcyBzZXQgZHVyaW5nIHRoZSBsb29rdXAgZm9yIGV4YW1wbGUuCisgICAgICAgIGNsYXNzIE15S2V5KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goJ215a2V5JykKKworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgWC5fX2Jhc2VzX18gPSAoQmFzZTIsKQorCisgICAgICAgIGNsYXNzIEJhc2Uob2JqZWN0KToKKyAgICAgICAgICAgIG15a2V5ID0gJ2Zyb20gQmFzZScKKyAgICAgICAgICAgIG15a2V5MiA9ICdmcm9tIEJhc2UnCisKKyAgICAgICAgY2xhc3MgQmFzZTIob2JqZWN0KToKKyAgICAgICAgICAgIG15a2V5ID0gJ2Zyb20gQmFzZTInCisgICAgICAgICAgICBteWtleTIgPSAnZnJvbSBCYXNlMicKKworICAgICAgICBYID0gdHlwZSgnWCcsIChCYXNlLCksIHtNeUtleSgpOiA1fSkKKyAgICAgICAgIyBteWtleSBpcyByZWFkIGZyb20gQmFzZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFgubXlrZXksICdmcm9tIEJhc2UnKQorICAgICAgICAjIG15a2V5MiBpcyByZWFkIGZyb20gQmFzZTIgYmVjYXVzZSBNeUtleS5fX2VxX18gaGFzIHNldCBfX2Jhc2VzX18KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLm15a2V5MiwgJ2Zyb20gQmFzZTInKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIFJ1biBhbGwgbG9jYWwgdGVzdCBjYXNlcywgd2l0aCBQVHlwZXNMb25nSW5pdFRlc3QgZmlyc3QuCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUFR5cGVzTG9uZ0luaXRUZXN0LCBPcGVyYXRvcnNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NQcm9wZXJ0aWVzQW5kTWV0aG9kcywgRGljdFByb3h5VGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NQcm9wZXJ0aWVzQW5kTWV0aG9kcywgRGljdFByb3h5VGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTWlzY1Rlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQppbmRleCAyZGIzZDMzLi5mNDk1ZTE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKQEAgLTE3MCw2ICsxNzAsNyBAQAogICAgICAnX19jb250YWluc19fJywKICAgICAgJ19fZGVsYXR0cl9fJywKICAgICAgJ19fZGVsaXRlbV9fJywKKyAgICAgJ19fZGlyX18nLAogICAgICAnX19kb2NfXycsCiAgICAgICdfX2VxX18nLAogICAgICAnX19mb3JtYXRfXycsCkBAIC0xOTksNiArMjAwLDggQEAKICAgICAgJ19fc3RyX18nLAogICAgICAnX19zdWJjbGFzc2hvb2tfXycsCiAgICAgICdhcHBlbmQnLAorICAgICAnY2xlYXInLAorICAgICAnY29weScsCiAgICAgICdjb3VudCcsCiAgICAgICdleHRlbmQnLAogICAgICAnaW5kZXgnLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZjRlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKQEAgLTAsMCArMSw5NCBAQAorIyBUZXN0IGNhc2UgZm9yIHRoZSBzZWxlY3QuZGV2cG9sbCgpIGZ1bmN0aW9uCisKKyMgSW5pdGlhbCB0ZXN0cyBhcmUgY29waWVkIGFzIGlzIGZyb20gInRlc3RfcG9sbC5weSIKKworaW1wb3J0IG9zLCBzZWxlY3QsIHJhbmRvbSwgdW5pdHRlc3QsIHN5cworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0CisKK3RyeToKKyAgICBzZWxlY3QuZGV2cG9sbAorZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzZWxlY3QuZGV2cG9sbCBub3QgZGVmaW5lZCAtLSBza2lwcGluZyB0ZXN0X2RldnBvbGwiKQorCisKK2RlZiBmaW5kX3JlYWR5X21hdGNoaW5nKHJlYWR5LCBmbGFnKToKKyAgICBtYXRjaCA9IFtdCisgICAgZm9yIGZkLCBtb2RlIGluIHJlYWR5OgorICAgICAgICBpZiBtb2RlICYgZmxhZzoKKyAgICAgICAgICAgIG1hdGNoLmFwcGVuZChmZCkKKyAgICByZXR1cm4gbWF0Y2gKKworY2xhc3MgRGV2UG9sbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2RldnBvbGwxKHNlbGYpOgorICAgICAgICAjIEJhc2ljIGZ1bmN0aW9uYWwgdGVzdCBvZiBwb2xsIG9iamVjdAorICAgICAgICAjIENyZWF0ZSBhIGJ1bmNoIG9mIHBpcGUgYW5kIHRlc3QgdGhhdCBwb2xsIHdvcmtzIHdpdGggdGhlbS4KKworICAgICAgICBwID0gc2VsZWN0LmRldnBvbGwoKQorCisgICAgICAgIE5VTV9QSVBFUyA9IDEyCisgICAgICAgIE1TRyA9IGIiIFRoaXMgaXMgYSB0ZXN0LiIKKyAgICAgICAgTVNHX0xFTiA9IGxlbihNU0cpCisgICAgICAgIHJlYWRlcnMgPSBbXQorICAgICAgICB3cml0ZXJzID0gW10KKyAgICAgICAgcjJ3ID0ge30KKyAgICAgICAgdzJyID0ge30KKworICAgICAgICBmb3IgaSBpbiByYW5nZShOVU1fUElQRVMpOgorICAgICAgICAgICAgcmQsIHdyID0gb3MucGlwZSgpCisgICAgICAgICAgICBwLnJlZ2lzdGVyKHJkKQorICAgICAgICAgICAgcC5tb2RpZnkocmQsIHNlbGVjdC5QT0xMSU4pCisgICAgICAgICAgICBwLnJlZ2lzdGVyKHdyLCBzZWxlY3QuUE9MTE9VVCkKKyAgICAgICAgICAgIHJlYWRlcnMuYXBwZW5kKHJkKQorICAgICAgICAgICAgd3JpdGVycy5hcHBlbmQod3IpCisgICAgICAgICAgICByMndbcmRdID0gd3IKKyAgICAgICAgICAgIHcyclt3cl0gPSByZAorCisgICAgICAgIGJ1ZnMgPSBbXQorCisgICAgICAgIHdoaWxlIHdyaXRlcnM6CisgICAgICAgICAgICByZWFkeSA9IHAucG9sbCgpCisgICAgICAgICAgICByZWFkeV93cml0ZXJzID0gZmluZF9yZWFkeV9tYXRjaGluZyhyZWFkeSwgc2VsZWN0LlBPTExPVVQpCisgICAgICAgICAgICBpZiBub3QgcmVhZHlfd3JpdGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHBpcGVzIHJlYWR5IGZvciB3cml0aW5nIikKKyAgICAgICAgICAgIHdyID0gcmFuZG9tLmNob2ljZShyZWFkeV93cml0ZXJzKQorICAgICAgICAgICAgb3Mud3JpdGUod3IsIE1TRykKKworICAgICAgICAgICAgcmVhZHkgPSBwLnBvbGwoKQorICAgICAgICAgICAgcmVhZHlfcmVhZGVycyA9IGZpbmRfcmVhZHlfbWF0Y2hpbmcocmVhZHksIHNlbGVjdC5QT0xMSU4pCisgICAgICAgICAgICBpZiBub3QgcmVhZHlfcmVhZGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHBpcGVzIHJlYWR5IGZvciByZWFkaW5nIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3cyclt3cl1dLCByZWFkeV9yZWFkZXJzKQorICAgICAgICAgICAgcmQgPSByZWFkeV9yZWFkZXJzWzBdCisgICAgICAgICAgICBidWYgPSBvcy5yZWFkKHJkLCBNU0dfTEVOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYnVmKSwgTVNHX0xFTikKKyAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGJ1ZikKKyAgICAgICAgICAgIG9zLmNsb3NlKHIyd1tyZF0pIDsgb3MuY2xvc2UocmQpCisgICAgICAgICAgICBwLnVucmVnaXN0ZXIocjJ3W3JkXSkKKyAgICAgICAgICAgIHAudW5yZWdpc3RlcihyZCkKKyAgICAgICAgICAgIHdyaXRlcnMucmVtb3ZlKHIyd1tyZF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZzLCBbTVNHXSAqIE5VTV9QSVBFUykKKworICAgIGRlZiB0ZXN0X3RpbWVvdXRfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIHBvbGxzdGVyID0gc2VsZWN0LmRldnBvbGwoKQorICAgICAgICB3LCByID0gb3MucGlwZSgpCisgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKHcpCisKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvbGxzdGVyLnBvbGwsIC0xIDw8IDMxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAtMSA8PCA2NCkKKworICAgICAgICBwb2xsc3Rlci5wb2xsKDApCisgICAgICAgIHBvbGxzdGVyLnBvbGwoMSkKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgxIDw8IDMwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDMxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDYzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDY0KQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KERldlBvbGxUZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CmluZGV4IGQyNzQwYTMuLmRkNGQ1NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKQEAgLTIsNyArMiw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogaW1wb3J0IGNvbGxlY3Rpb25zLCByYW5kb20sIHN0cmluZworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IGdjLCB3ZWFrcmVmCitpbXBvcnQgcGlja2xlCiAKIAogY2xhc3MgRGljdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzE5LDYgKzMyMSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDIuaGFzaF9jb3VudCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmVxX2NvdW50ICsgaGFzaGVkMi5lcV9jb3VudCwgMSkKIAorICAgIGRlZiB0ZXN0X3NldGl0ZW1fYXRvbWljX2F0X3Jlc2l6ZShzZWxmKToKKyAgICAgICAgY2xhc3MgSGFzaGVkKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5oYXNoX2NvdW50ID0gMAorICAgICAgICAgICAgICAgIHNlbGYuZXFfY291bnQgPSAwCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5oYXNoX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHNlbGYuZXFfY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBpZChzZWxmKSA9PSBpZChvdGhlcikKKyAgICAgICAgaGFzaGVkMSA9IEhhc2hlZCgpCisgICAgICAgICMgNSBpdGVtcworICAgICAgICB5ID0ge2hhc2hlZDE6IDUsIDA6IDAsIDE6IDEsIDI6IDIsIDM6IDN9CisgICAgICAgIGhhc2hlZDIgPSBIYXNoZWQoKQorICAgICAgICAjIDZ0aCBpdGVtIGZvcmNlcyBhIHJlc2l6ZQorICAgICAgICB5W2hhc2hlZDJdID0gW10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmhhc2hfY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMi5oYXNoX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDEuZXFfY291bnQgKyBoYXNoZWQyLmVxX2NvdW50LCAxKQorCiAgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKICAgICAgICAgIyBkaWN0LnBvcGl0ZW0oKQogICAgICAgICBmb3IgY29weW1vZGUgaW4gLTEsICsxOgpAQCAtMzc5LDcgKzQwMiw3IEBACiAgICAgICAgIHguZmFpbCA9IFRydWUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBkLnBvcCwgeCkKIAotICAgIGRlZiB0ZXN0X211dGF0aW5naXRlcmF0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X211dGF0aW5nX2l0ZXJhdGlvbihzZWxmKToKICAgICAgICAgIyBjaGFuZ2luZyBkaWN0IHNpemUgZHVyaW5nIGl0ZXJhdGlvbgogICAgICAgICBkID0ge30KICAgICAgICAgZFsxXSA9IDEKQEAgLTM4Nyw2ICs0MTAsMzIgQEAKICAgICAgICAgICAgIGZvciBpIGluIGQ6CiAgICAgICAgICAgICAgICAgZFtpKzFdID0gMQogCisgICAgZGVmIHRlc3RfbXV0YXRpbmdfbG9va3VwKHNlbGYpOgorICAgICAgICAjIGNoYW5naW5nIGRpY3QgZHVyaW5nIGEgbG9va3VwIChpc3N1ZSAjMTQ0MTcpCisgICAgICAgIGNsYXNzIE5hc3R5S2V5OgorICAgICAgICAgICAgbXV0YXRlX2RpY3QgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAjIGhhc2ggY29sbGlzaW9uIQorICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGlmIE5hc3R5S2V5Lm11dGF0ZV9kaWN0OgorICAgICAgICAgICAgICAgICAgICBteWRpY3QsIGtleSA9IE5hc3R5S2V5Lm11dGF0ZV9kaWN0CisgICAgICAgICAgICAgICAgICAgIE5hc3R5S2V5Lm11dGF0ZV9kaWN0ID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBkZWwgbXlkaWN0W2tleV0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA9PSBvdGhlci52YWx1ZQorCisgICAgICAgIGtleTEgPSBOYXN0eUtleSgxKQorICAgICAgICBrZXkyID0gTmFzdHlLZXkoMikKKyAgICAgICAgZCA9IHtrZXkxOiAxfQorICAgICAgICBOYXN0eUtleS5tdXRhdGVfZGljdCA9IChkLCBrZXkxKQorICAgICAgICBkW2tleTJdID0gMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHtrZXkyOiAyfSkKKwogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGQgPSB7fQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZCksICd7fScpCkBAIC03NzYsNiArODI1LDc1IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX3RyYWNrZWQoTXlEaWN0KCkpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICBpdCA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaXQpLCBzb3J0ZWQoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIGRlbCBkYXRhW2Ryb3BdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgc29ydGVkKGRhdGEpKQorCisgICAgZGVmIHRlc3RfaXRlbWl0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CisgICAgICAgICMgZGljdHZpZXdzIGFyZW4ndCBwaWNrbGFibGUsIG9ubHkgdGhlaXIgaXRlcmF0b3JzCisgICAgICAgIGl0b3JnID0gaXRlcihkYXRhLml0ZW1zKCkpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICMgbm90ZSB0aGF0IHRoZSB0eXBlIG9mIHR5cGUgb2YgdGhlIHVucGlja2xlZCBpdGVyYXRvcgorICAgICAgICAjIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwuICBJdCBpcworICAgICAgICAjIG1lcmVseSBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgaXRlcmF0b3IgcHJvdG9jb2wsIHlpZWxkaW5nCisgICAgICAgICMgdGhlIHNhbWUgb2JqZWN0cyBhcyB0aGUgb3JpZ2luYWwgb25lLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGl0KSwgZGF0YSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZGVsIGRhdGFbZHJvcFswXV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGl0KSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3ZhbHVlc2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CisgICAgICAgICMgZGF0YS52YWx1ZXMoKSBpc24ndCBwaWNrbGFibGUsIG9ubHkgaXRzIGl0ZXJhdG9yCisgICAgICAgIGl0ID0gaXRlcihkYXRhLnZhbHVlcygpKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChsaXN0KGl0KSksIHNvcnRlZChsaXN0KGRhdGEudmFsdWVzKCkpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdmFsdWVzID0gbGlzdChpdCkgKyBbZHJvcF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodmFsdWVzKSwgc29ydGVkKGxpc3QoZGF0YS52YWx1ZXMoKSkpKQorCisgICAgZGVmIHRlc3RfaW5zdGFuY2VfZGljdF9nZXRhdHRyX3N0cl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5tc2cgPSBtc2cKKyAgICAgICAgZiA9IEZvbygnMTIzJykKKyAgICAgICAgY2xhc3MgX3N0cihzdHIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYubXNnLCBnZXRhdHRyKGYsIF9zdHIoJ21zZycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1zZywgZi5fX2RpY3RfX1tfc3RyKCdtc2cnKV0pCisKKyAgICBkZWYgdGVzdF9vYmplY3Rfc2V0X2l0ZW1fc2luZ2xlX2luc3RhbmNlX25vbl9zdHJfa2V5KHNlbGYpOgorICAgICAgICBjbGFzcyBGb286IHBhc3MKKyAgICAgICAgZiA9IEZvbygpCisgICAgICAgIGYuX19kaWN0X19bMV0gPSAxCisgICAgICAgIGYuYSA9ICdhJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19kaWN0X18sIHsxOjEsICdhJzonYSd9KQogCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCA1YzU5ZWFhLi4xYmNkNjkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSwxMSArMSwzNSBAQAogIyBNaW5pbWFsIHRlc3RzIGZvciBkaXMgbW9kdWxlCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX3N0ZG91dAoraW1wb3J0IGRpZmZsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGRpcwogaW1wb3J0IGlvCiAKK2NsYXNzIF9DOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geCA9PSAxCisKK2Rpc19jX2luc3RhbmNlX21ldGhvZCA9ICIiIlwKKyAlLTRkICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKKyAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCisgICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKKworZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAxICgxKQorICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorIiIiCiAKIGRlZiBfZihhKToKICAgICBwcmludChhKQpAQCAtMTQsNyArMzgsNyBAQAogZGlzX2YgPSAiIiJcCiAgJS00ZCAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHByaW50KQogICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQotICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgIDkgUE9QX1RPUAogCiAgJS00ZCAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCkBAIC0yMyw2ICs0NywxNiBAQAogICAgICAgIF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMikKIAogCitkaXNfZl9jb19jb2RlID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAwICgwKQorICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAwICgwKQorICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgIDkgUE9QX1RPUAorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisiIiIKKworCiBkZWYgYnVnNzA4OTAxKCk6CiAgICAgZm9yIHJlcyBpbiByYW5nZSgxLAogICAgICAgICAgICAgICAgICAgICAgMTApOgpAQCAtMzQsNyArNjgsNyBAQAogICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQogCiAgJS00ZCAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQotICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyCisgICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgMTUgR0VUX0lURVIKICAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCiAgICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKQEAgLTEzOCwxOCArMTcyLDI3IEBACiAiIiIKIAogY2xhc3MgRGlzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBkb19kaXNhc3NlbWJseV90ZXN0KHNlbGYsIGZ1bmMsIGV4cGVjdGVkKToKKworICAgIGRlZiBnZXRfZGlzYXNzZW1ibHkoc2VsZiwgZnVuYywgbGFzdGk9LTEsIHdyYXBwZXI9VHJ1ZSk6CiAgICAgICAgIHMgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIHNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzeXMuc3Rkb3V0ID0gcwotICAgICAgICBkaXMuZGlzKGZ1bmMpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAotICAgICAgICBnb3QgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgd3JhcHBlcjoKKyAgICAgICAgICAgICAgICBkaXMuZGlzKGZ1bmMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpcy5kaXNhc3NlbWJsZShmdW5jLCBsYXN0aSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAjIFRyaW0gdHJhaWxpbmcgYmxhbmtzIChpZiBhbnkpLgotICAgICAgICBsaW5lcyA9IGdvdC5zcGxpdCgnXG4nKQotICAgICAgICBsaW5lcyA9IFtsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIGxpbmVzXQotICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnNwbGl0KCJcbiIpCi0gICAgICAgIGltcG9ydCBkaWZmbGliCisgICAgICAgIHJldHVybiBbbGluZS5yc3RyaXAoKSBmb3IgbGluZSBpbiBzLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpXQorCisgICAgZGVmIGdldF9kaXNhc3NlbWJsZV9hc19zdHJpbmcoc2VsZiwgZnVuYywgbGFzdGk9LTEpOgorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KGZ1bmMsIGxhc3RpLCBGYWxzZSkpCisKKyAgICBkZWYgZG9fZGlzYXNzZW1ibHlfdGVzdChzZWxmLCBmdW5jLCBleHBlY3RlZCk6CisgICAgICAgIGxpbmVzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoZnVuYykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5zcGxpdGxpbmVzKCkKICAgICAgICAgaWYgZXhwZWN0ZWQgIT0gbGluZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoCiAgICAgICAgICAgICAgICAgImV2ZW50cyBkaWQgbm90IG1hdGNoIGV4cGVjdGF0aW9uOlxuIiArCkBAIC0xNTcsNyArMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcykpKQogCiAgICAgZGVmIHRlc3Rfb3BtYXAoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzLm9wbWFwWyJTVE9QX0NPREUiXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXMub3BtYXBbIk5PUCJdLCA5KQogICAgICAgICBzZWxmLmFzc2VydEluKGRpcy5vcG1hcFsiTE9BRF9DT05TVCJdLCBkaXMuaGFzY29uc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGlzLm9wbWFwWyJTVE9SRV9OQU1FIl0sIGRpcy5oYXNuYW1lKQogCkBAIC0yMTEsNiArMjU0LDQ0IEBACiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChzaW1wbGVfc3RtdF9zdHIsIGRpc19zaW1wbGVfc3RtdF9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChjb21wb3VuZF9zdG10X3N0ciwgZGlzX2NvbXBvdW5kX3N0bXRfc3RyKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfYnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChfZi5fX2NvZGVfXy5jb19jb2RlLCBkaXNfZl9jb19jb2RlKQorCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfbWV0aG9kKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoX0MoMSkuX19pbml0X18sIGRpc19jX2luc3RhbmNlX21ldGhvZCkKKworICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX21ldGhvZF9ieXRlcyhzZWxmKToKKyAgICAgICAgbWV0aG9kX2J5dGVjb2RlID0gX0MoMSkuX19pbml0X18uX19jb2RlX18uY29fY29kZQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QobWV0aG9kX2J5dGVjb2RlLCBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMpCisKKyAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZGlzLmRpcywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2Rpc19vYmplY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGlzLmRpcywgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9kaXNfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCisKKyAgICAgICAgdGJfZGlzID0gc2VsZi5nZXRfZGlzYXNzZW1ibGVfYXNfc3RyaW5nKHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkpCisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChOb25lLCB0Yl9kaXMpCisKKyAgICBkZWYgdGVzdF9kaXNfb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5kaXMsIG9iamVjdCgpKQorCiBjb2RlX2luZm9fY29kZV9pbmZvID0gIiIiXAogTmFtZTogICAgICAgICAgICAgIGNvZGVfaW5mbwogRmlsZW5hbWU6ICAgICAgICAgICguKikKQEAgLTI1OCw2ICszMzksNyBAQAogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogPGNvZGUgb2JqZWN0IGYgYXQgKC4qKSwgZmlsZSAiKC4qKSIsIGxpbmUgKC4qKT4KKyAgIDI6ICd0cmlja3kuPGxvY2Fscz4uZicKIFZhcmlhYmxlIG5hbWVzOgogICAgMDogeAogICAgMTogeQpAQCAtMzY0LDYgKzQ0NiwxMyBAQAogICAgICAgICAgICAgICAgIGRpcy5zaG93X2NvZGUoeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LmdldHZhbHVlKCksIGV4cGVjdGVkKyJcbiIpCiAKKyAgICBkZWYgdGVzdF9jb2RlX2luZm9fb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5jb2RlX2luZm8sIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfcHJldHR5X2ZsYWdzX25vX2ZsYWdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcy5wcmV0dHlfZmxhZ3MoMCksICcweDAnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoRGlzVGVzdHMsIENvZGVJbmZvVGVzdHMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCBhNmMxN2NjLi44ZjhjN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAogIyBOT1RFOiBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHRlc3RzIHJlbGF0aW5nIHRvIGludGVyYWN0aW9uIHdpdGgKQEAgLTQzMiw3ICs0MzMsNyBAQAogICAgID4+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+KCkKKyAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgKFBkYikgcHJpbnQoZm9vKQorICAgICAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCisgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAiIiIKIAogZGVmIHRlc3RfRG9jVGVzdFN1aXRlKCk6CiAgICAgIiIiRG9jVGVzdFN1aXRlIGNyZWF0ZXMgYSB1bml0dGVzdCB0ZXN0IHN1aXRlIGZyb20gYSBkb2N0ZXN0LgpAQCAtMjU2Niw3ICsyNTY4LDcgQEAKIAogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCi0gICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sCisgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICAgdHJhY2VyLnJ1bigndGVzdF9tYWluKCknKQogICAgIHIgPSB0cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weSBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CmluZGV4IGM2MTA3OGQuLjJmYWZlMWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiTG9jayBvYmplY3QgZGlkIG5vdCByZWxlYXNlIHByb3Blcmx5LiIpCiAKICAgICBkZWYgdGVzdF9pbXByb3Blcl9yZWxlYXNlKHNlbGYpOgotICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBfdGhyZWFkLmVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKF90aHJlYWQuZXJyb3IsIHNlbGYubG9jay5yZWxlYXNlKQorICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBSdW50aW1lRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmxvY2sucmVsZWFzZSkKIAogICAgIGRlZiB0ZXN0X2NvbmRfYWNxdWlyZV9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjTWFrZSBzdXJlIHRoZSBjb25kaXRpb25hbCBhY3F1aXJpbmcgb2YgdGhlIGxvY2sgd29ya3MuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlYmJhNS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgotIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMKLQotIyBUaGUgc3BlY2lmaWMgdGVzdHMgbm93IGxpdmUgaW4gTGliL2VtYWlsL3Rlc3QKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBzdWl0ZQotZnJvbSBlbWFpbC50ZXN0LnRlc3RfZW1haWxfY29kZWNzIGltcG9ydCBzdWl0ZSBhcyBjb2RlY3Nfc3VpdGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3Qoc3VpdGUoKSkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChjb2RlY3Nfc3VpdGUoKSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwNmFjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNTAgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgZW1haWwKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyaworCisjIFJ1biBhbGwgdGVzdHMgaW4gcGFja2FnZSBmb3IgJy1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCcKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIGlmIHBhdHRlcm4gaXMgTm9uZToKKyAgICAgICAgcGF0dGVybiA9ICJ0ZXN0KiIKKyAgICBwYWNrYWdlX3Rlc3RzID0gbG9hZGVyLmRpc2NvdmVyKHN0YXJ0X2Rpcj10aGlzX2RpciwgcGF0dGVybj1wYXR0ZXJuKQorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3RzKHBhY2thZ2VfdGVzdHMpCisgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCisKKworIyB1c2VkIGJ5IHJlZ3J0ZXN0IGFuZCBfX21haW5fXy4KK2RlZiB0ZXN0X21haW4oKToKKyAgICBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICMgVW5pdHRlc3QgbXVja3Mgd2l0aCB0aGUgcGF0aCwgc28gd2UgaGF2ZSB0byBzYXZlIGFuZCByZXN0b3JlCisgICAgIyBpdCB0byBrZWVwIHJlZ3J0ZXN0IGhhcHB5LgorICAgIHNhdmVwYXRoID0gc3lzLnBhdGhbOl0KKyAgICB0ZXN0LnN1cHBvcnQuX3J1bl9zdWl0ZSh1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3ZlcihoZXJlKSkKKyAgICBzeXMucGF0aFs6XSA9IHNhdmVwYXRoCisKKworIyBoZWxwZXIgY29kZSB1c2VkIGJ5IGEgbnVtYmVyIG9mIHRlc3QgbW9kdWxlcy4KKworZGVmIG9wZW5maWxlKGZpbGVuYW1lLCAqYXJncywgKiprd3MpOgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxhbmRtYXJrKSwgJ2RhdGEnLCBmaWxlbmFtZSkKKyAgICByZXR1cm4gb3BlbihwYXRoLCAqYXJncywgKiprd3MpCisKKworIyBCYXNlIHRlc3QgY2xhc3MKK2NsYXNzIFRlc3RFbWFpbEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbWF4RGlmZiA9IE5vbmUKKyAgICAjIEN1cnJlbnRseSB0aGUgZGVmYXVsdCBwb2xpY3kgaXMgY29tcGF0MzIuICBCeSBzZXR0aW5nIHRoYXQgYXMgdGhlIGRlZmF1bHQKKyAgICAjIGhlcmUgd2UgbWFrZSBtaW5pbWFsIGNoYW5nZXMgaW4gdGhlIHRlc3RfZW1haWwgdGVzdHMgY29tcGFyZWQgdG8gdGhlaXIKKyAgICAjIHByZS0zLjMgc3RhdGUuCisgICAgcG9saWN5ID0gY29tcGF0MzIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuYWRkVHlwZUVxdWFsaXR5RnVuYyhieXRlcywgc2VsZi5hc3NlcnRCeXRlc0VxdWFsKQorCisgICAgIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG1pbmltaXplIHRlc3RfZW1haWwgdGVzdCBjaGFuZ2VzLgorICAgIG5kaWZmQXNzZXJ0RXF1YWwgPSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAorCisgICAgZGVmIF9tc2dvYmooc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICB3aXRoIG9wZW5maWxlKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIF9zdHJfbXNnKHNlbGYsIHN0cmluZywgbWVzc2FnZT1NZXNzYWdlLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kKKyAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoc3RyaW5nLCBtZXNzYWdlLCBwb2xpY3k9cG9saWN5KQorCisgICAgZGVmIF9ieXRlc19yZXByKHNlbGYsIGIpOgorICAgICAgICByZXR1cm4gW3JlcHIoeCkgZm9yIHggaW4gYi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXQorCisgICAgZGVmIGFzc2VydEJ5dGVzRXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnKToKKyAgICAgICAgIiIiT3VyIGJ5dGUgc3RyaW5ncyBhcmUgcmVhbGx5IGVuY29kZWQgc3RyaW5nczsgaW1wcm92ZSBkaWZmIG91dHB1dCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2J5dGVzX3JlcHIoZmlyc3QpLCBzZWxmLl9ieXRlc19yZXByKHNlY29uZCkpCisKKyAgICBkZWYgYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhY3R1YWwpLCBsZW4oZXhwZWN0ZWQpLCBhY3R1YWwpCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihhY3R1YWwpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0ge30nLmZvcm1hdChpKSkKKworCitkZWYgcGFyYW1ldGVyaXplKGNscyk6CisgICAgIiIiQSB0ZXN0IG1ldGhvZCBwYXJhbWV0ZXJpemF0aW9uIGNsYXNzIGRlY29yYXRvci4KKworICAgIFBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBhcyB0aGUgdmFsdWUgb2YgYSBjbGFzcyBhdHRyaWJ1dGUgdGhhdCBlbmRzIHdpdGgKKyAgICB0aGUgc3RyaW5nICdfcGFyYW1zJy4gIENhbGwgdGhlIHBvcnRpb24gYmVmb3JlICdfcGFyYW1zJyB0aGUgcHJlZml4LiAgVGhlbgorICAgIGEgbWV0aG9kIHRvIGJlIHBhcmFtZXRlcml6ZWQgbXVzdCBoYXZlIHRoZSBzYW1lIHByZWZpeCwgdGhlIHN0cmluZworICAgICdfYXNfJywgYW5kIGFuIGFyYml0cmFyeSBzdWZmaXguCisKKyAgICBUaGUgdmFsdWUgb2YgdGhlIF9wYXJhbXMgYXR0cmlidXRlIG1heSBiZSBlaXRoZXIgYSBkaWN0aW9uYXJ5IG9yIGEgbGlzdC4KKyAgICBUaGUgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFuZCB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgbWF5IGVpdGhlciBiZQorICAgIHNpbmdsZSB2YWx1ZXMsIG9yIGEgbGlzdC4gIElmIHNpbmdsZSB2YWx1ZXMsIHRoZXkgYXJlIHR1cm5lZCBpbnRvIHNpbmdsZQorICAgIGVsZW1lbnQgdHVwbGVzLiAgSG93ZXZlciBkZXJpdmVkLCB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlIGlzIHBhc3NlZCB2aWEKKyAgICAqYXJncyB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZ1bmN0aW9uLgorCisgICAgSW4gYSBfcGFyYW1zIGRpY3Rpb2FucnksIHRoZSBrZXlzIGJlY29tZSBwYXJ0IG9mIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQKKyAgICB0ZXN0cy4gIEluIGEgX3BhcmFtcyBsaXN0LCB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGFyZSBjb252ZXJ0ZWQgaW50byBhCisgICAgc3RyaW5nIGJ5IGpvaW5pbmcgdGhlIHN0cmluZyB2YWx1ZXMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB0dXBsZSBieSAnXycgYW5kCisgICAgY29udmVydGluZyBhbnkgYmxhbmtzIGludG8gJ18ncywgYW5kIHRoaXMgYmVjb21lIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgVGhlICBmdWxsIG5hbWUgb2YgYSBnZW5lcmF0ZWQgdGVzdCBpcyBhICd0ZXN0XycgcHJlZml4LCB0aGUgcG9ydGlvbiBvZiB0aGUKKyAgICB0ZXN0IGZ1bmN0aW9uIG5hbWUgYWZ0ZXIgdGhlICAnX2FzXycgc2VwYXJhdG9yLCBwbHVzIGFuICdfJywgcGx1cyB0aGUgbmFtZQorICAgIGRlcml2ZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgorCisgICAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmU6CisKKyAgICAgICAgY291bnRfcGFyYW1zID0gcmFuZ2UoMikKKworICAgICAgICBkZWYgY291bnRfYXNfZm9vX2FyZyhzZWxmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28rMSwgbXlmdW5jKGZvbykpCisKKyAgICB3ZSB3aWxsIGdldCBwYXJhbWV0ZXJpemVkIHRlc3QgbWV0aG9kcyBuYW1lZDoKKyAgICAgICAgdGVzdF9mb29fYXJnXzAKKyAgICAgICAgdGVzdF9mb29fYXJnXzEKKyAgICAgICAgdGVzdF9mb29fYXJnXzIKKworICAgIE9yIHdlIGNvdWxkIGhhdmU6CisKKyAgICAgICAgZXhhbXBsZV9wYXJhbXMgPSB7J2Zvbyc6ICgnYmFyJywgMSksICdiaW5nJzogKCdiYW5nJywgMil9CisKKyAgICAgICAgZGVmIGV4YW1wbGVfYXNfbXlmdW5jX2lucHV0KHNlbGYsIG5hbWUsIGNvdW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZStzdHIoY291bnQpLCBteWZ1bmMobmFtZSwgY291bnQpKQorCisgICAgYW5kIGdldDoKKyAgICAgICAgdGVzdF9teWZ1bmNfaW5wdXRfZm9vCisgICAgICAgIHRlc3RfbXlmdW5jX2lucHV0X2JpbmcKKworICAgIE5vdGU6IGlmIGFuZCBvbmx5IGlmIHRoZSBnZW5lcmF0ZWQgdGVzdCBuYW1lIGlzIGEgdmFsaWQgaWRlbnRpZmllciBjYW4gaXQKKyAgICBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgdGVzdCBpbmRpdmlkdWFsbHkgZnJvbSB0aGUgdW5pdHRlc3QgY29tbWFuZCBsaW5lLgorCisgICAgIiIiCisgICAgcGFyYW1kaWN0cyA9IHt9CisgICAgZm9yIG5hbWUsIGF0dHIgaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoJ19wYXJhbXMnKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGF0dHIsICdrZXlzJyk6CisgICAgICAgICAgICAgICAgZCA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHggaW4gYXR0cjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoeCwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gKHgsKQorICAgICAgICAgICAgICAgICAgICBuID0gJ18nLmpvaW4oc3RyKHYpIGZvciB2IGluIHgpLnJlcGxhY2UoJyAnLCAnXycpCisgICAgICAgICAgICAgICAgICAgIGRbbl0gPSB4CisgICAgICAgICAgICAgICAgYXR0ciA9IGQKKyAgICAgICAgICAgIHBhcmFtZGljdHNbbmFtZVs6LTddICsgJ19hc18nXSA9IGF0dHIKKyAgICB0ZXN0ZnVuY3MgPSB7fQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBmb3IgcGFyYW1zbmFtZSwgcGFyYW1zZGljdCBpbiBwYXJhbWRpY3RzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocGFyYW1zbmFtZSk6CisgICAgICAgICAgICAgICAgdGVzdG5hbWVyb290ID0gJ3Rlc3RfJyArIG5hbWVbbGVuKHBhcmFtc25hbWUpOl0KKyAgICAgICAgICAgICAgICBmb3IgcGFyYW1uYW1lLCBwYXJhbXMgaW4gcGFyYW1zZGljdC5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gKGxhbWJkYSBzZWxmLCBuYW1lPW5hbWUsIHBhcmFtcz1wYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIG5hbWUpKCpwYXJhbXMpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0bmFtZSA9IHRlc3RuYW1lcm9vdCArICdfJyArIHBhcmFtbmFtZQorICAgICAgICAgICAgICAgICAgICB0ZXN0Ll9fbmFtZV9fID0gdGVzdG5hbWUKKyAgICAgICAgICAgICAgICAgICAgdGVzdGZ1bmNzW3Rlc3RuYW1lXSA9IHRlc3QKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0ZXN0ZnVuY3MuaXRlbXMoKToKKyAgICAgICAgc2V0YXR0cihjbHMsIGtleSwgdmFsdWUpCisgICAgcmV0dXJuIGNscwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhZjllYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgdGVzdF9tYWluCisKK3Rlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL1B5QmFubmVyMDQ4LmdpZiBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9QeUJhbm5lcjA0OC5naWYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvUHlCYW5uZXIwNDguZ2lmCnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvUHlCYW5uZXIwNDguZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvYXVkaW90ZXN0LmF1IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL2F1ZGlvdGVzdC5hdQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9hdWRpb3Rlc3QuYXUKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9hdWRpb3Rlc3QuYXUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzExLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTJhLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMmEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIxLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI3LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yOC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjgudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjkudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI5LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMwLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzEudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzIudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMyLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMzLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzQudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzUudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM1LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM2LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzcudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzgudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM4LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM5LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zOS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180MC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDAudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Mi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180My50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180NS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Ni50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzk1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2VuY29kZWRfd29yZHMucHkKQEAgLTAsMCArMSwxODcgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdERlY29kZVEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc291cmNlLCBleF9yZXN1bHQsIGV4X2RlZmVjdHM9W10pOgorICAgICAgICByZXN1bHQsIGRlZmVjdHMgPSBfZXcuZGVjb2RlX3Eoc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhfcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkZWZlY3RzLCBleF9kZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfbm9fZW5jb2RlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsIGInZm9vYmFyJykKKworICAgIGRlZiB0ZXN0X3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvbz0yMGJhcj0yMCcsIGInZm9vIGJhciAnKQorICAgICAgICBzZWxmLl90ZXN0KGInZm9vX2Jhcl8nLCBiJ2ZvbyBiYXIgJykKKworICAgIGRlZiB0ZXN0X3J1bl9vZl9lbmNvZGVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vPTIwPTIwPTIxPTJDYmFyJywgYidmb28gICEsYmFyJykKKworCitjbGFzcyBUZXN0RGVjb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIGV4X3Jlc3VsdCwgZXhfZGVmZWN0cz1bXSk6CisgICAgICAgIHJlc3VsdCwgZGVmZWN0cyA9IF9ldy5kZWNvZGVfYihzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleF9yZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGRlZmVjdHMsIGV4X2RlZmVjdHMpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidabTl2JywgYidmb28nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1rJywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidkbVx4MDFrPT09JywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJfYW5kX2JhZF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1ceDAxaycsIGIndmknLCBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworCitjbGFzcyBUZXN0RGVjb2RlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIHRlc3Rfd3JvbmdfZm9ybWF0X2lucHV0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9ldy5kZWNvZGUoJz0/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+CisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydC0tCisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBpbWFnZS9naWY7IG5hbWU9Inh4LmdpZiI7CisgICAgICAgICAgICBDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50CisgICAgICAgICAgICBDb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgU29tZSByZW1vdmVkIGJhc2U2NCBlbmNvZGVkIGNoYXJzLgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQtLQorCisgICAgICAgICAgICAiIiIpCisgICAgICAgICMgWFhYIGJldHRlciB3b3VsZCBiZSB0byBhY3R1YWxseSBkZXRlY3QgdGhlIGR1cGxpY2F0ZS4KKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgaW5uZXIgPSBtc2cuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoaW5uZXIsICdkZWZlY3RzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMoaW5uZXIpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhpbm5lcilbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X25vX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRGF0ZTogRnJpLCA2IEFwciAyMDAxIDA5OjIzOjA2IC0wODAwIChHTVQtMDgwMCkKKyAgICAgICAgICAgIEZyb206IGZvb2JhcgorICAgICAgICAgICAgU3ViamVjdDogYnJva2VuIG1haWwKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZXBvcnQ7IHJlcG9ydC10eXBlPWRlbGl2ZXJ5LXN0YXR1czsKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKworICAgICAgICAgICAgT25lIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKworICAgICAgICAgICAgSGVhZGVyOiBBbm90aGVyIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20tLQorICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzb3VyY2UpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKKworICAgIG11bHRpcGFydF9tc2cgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICBEYXRlOiBXZWQsIDE0IE5vdiAyMDA3IDEyOjU2OjIzIEdNVAorICAgICAgICBGcm9tOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgVG86IGZvb0BiYXIuaW52YWxpZAorICAgICAgICBTdWJqZWN0OiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQgYW5kIG11bHRpcGFydAorICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsKKyAgICAgICAgICAgIGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0ie30KKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICBUZXN0IG1lc3NhZ2UKKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICBZV0pqCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0tLQorICAgICAgICAiIiIpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfaW52YWxpZF9jdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoCisgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgZm9yIGN0ZSBpbiAoJzdiaXQnLCAnOGJpdCcsICdCSU5hcnknKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coCisgICAgICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiK2N0ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAwLCAiY3RlPSIrY3RlKQorCisgICAgZGVmIHRlc3RfbHlpbmdfbXVsdGlwYXJ0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogIkFsbGlzb24gRHVubGFwIiA8eHh4QGV4YW1wbGUuY29tPgorICAgICAgICAgICAgVG86IHl5eUBleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogNjQ0MjMKKyAgICAgICAgICAgIERhdGU6IFN1biwgMTEgSnVsIDIwMDQgMTY6MDk6MjcgLTAzMDAKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKworICAgICAgICAgICAgQmxhaCBibGFoIGJsYWgKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobXNnLCAnZGVmZWN0cycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19zdGFydF9ib3VuZGFyeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQUFBIgorICAgICAgICAgICAgRnJvbTogTWFpbCBEZWxpdmVyeSBTdWJzeXN0ZW0gPHh4eEBleGFtcGxlLmNvbT4KKyAgICAgICAgICAgIFRvOiB5eXlAZXhhbXBsZS5jb20KKworICAgICAgICAgICAgLS1BQUEKKworICAgICAgICAgICAgU3R1ZmYKKworICAgICAgICAgICAgLS1BQUEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9yZmM4MjIKKworICAgICAgICAgICAgRnJvbTogd2VibWFzdGVyQHB5dGhvbi5vcmcKKyAgICAgICAgICAgIFRvOiB6enpAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQkJCIgorCisgICAgICAgICAgICAtLUJCQi0tCisKKyAgICAgICAgICAgIC0tQUFBLS0KKworICAgICAgICAgICAgIiIiKQorICAgICAgICAjIFRoZSBtZXNzYWdlIHN0cnVjdHVyZSBpczoKKyAgICAgICAgIworICAgICAgICAjIG11bHRpcGFydC9taXhlZAorICAgICAgICAjICAgIHRleHQvcGxhaW4KKyAgICAgICAgIyAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAjICAgICAgICBtdWx0aXBhcnQvbWl4ZWQgWypdCisgICAgICAgICMKKyAgICAgICAgIyBbKl0gVGhpcyBtZXNzYWdlIGlzIG1pc3NpbmcgaXRzIHN0YXJ0IGJvdW5kYXJ5CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBvdXRlciA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgYmFkID0gb3V0ZXIuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhiYWQpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhiYWQpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKKworICAgIGRlZiB0ZXN0X2ZpcnN0X2xpbmVfaXNfY29udGludWF0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnIExpbmUgMVxuU3ViamVjdDogdGVzdFxuXG5ib2R5JykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLmxpbmUsICcgTGluZSAxXG4nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19oZWFkZXJfYm9keV9zZXBhcmF0b3Ioc2VsZik6CisgICAgICAgICMgT3VyIGhldXJpc3RpYyBpZiB3ZSBzZWUgYSBsaW5lIHRoYXQgZG9lc24ndCBsb29rIGxpa2UgYSBoZWFkZXIgKG5vCisgICAgICAgICMgbGVhZGluZyB3aGl0ZXNwYWNlIGJ1dCBubyAnOicpIGlzIHRvIGFzc3VtZSB0aGF0IHRoZSBibGFuayBsaW5lIHRoYXQKKyAgICAgICAgIyBzZXBhcmF0ZXMgdGhlIGhlYWRlciBmcm9tIHRoZSBib2R5IGlzIG1pc3NpbmcsIGFuZCB0byBzdG9wIHBhcnNpbmcKKyAgICAgICAgIyBoZWFkZXJzIGFuZCBzdGFydCBwYXJzaW5nIHRoZSBib2R5LgorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiB0ZXN0XG5ub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2JhZF9wYWRkaW5nX2luX2Jhc2U2NF9wYXlsb2FkKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgU3ViamVjdDogdGVzdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgZG1rCisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCisgICAgICAgICAgICBkbVx4MDFrPT09CisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZW5kaW5nX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IDFAaGFycnlkb21haW40LmNvbQorICAgICAgICAgICAgU3ViamVjdDogRndkOiAxCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7CisgICAgICAgICAgICAgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLTAwMDEwMTAyMDIwMTA4MDkwMDA0MDMwMSIKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CisKKyAgICAgICAgICAgIEFsdGVybmF0aXZlIDEKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKKworICAgICAgICAgICAgQWx0ZXJuYXRpdmUgMgorCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLkNsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5nZXRfcGF5bG9hZCgpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoKSwgJ0FsdGVybmF0aXZlIDJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3RdKQorCisKK2NsYXNzIFRlc3REZWZlY3REZXRlY3Rpb24oVGVzdERlZmVjdHNCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gb2JqLmRlZmVjdHMKKworCitjbGFzcyBUZXN0RGVmZWN0Q2FwdHVyZShUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgY2xhc3MgQ2FwdHVyZVBvbGljeShwb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBjYXB0dXJlZCA9IE5vbmUKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmNhcHR1cmVkLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucG9saWN5ID0gc2VsZi5DYXB0dXJlUG9saWN5KGNhcHR1cmVkPWxpc3QoKSkKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gc2VsZi5wb2xpY3kuY2FwdHVyZWQKKworCitjbGFzcyBUZXN0RGVmZWN0UmFpc2luZyhUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgcG9saWN5ID0gVGVzdERlZmVjdHNCYXNlLnBvbGljeQorICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgICByYWlzZV9leHBlY3RlZCA9IFRydWUKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGRlZmVjdCk6CisgICAgICAgICAgICB5aWVsZAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCAzNTJiOWIxLi4zNmMzNDRmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMTYsNiArMTYsNyBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiAKIGltcG9ydCBlbWFpbAoraW1wb3J0IGVtYWlsLnBvbGljeQogCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIsIG1ha2VfaGVhZGVyCkBAIC0zNiw0MCArMzcsMTQgQEAKIGZyb20gZW1haWwgaW1wb3J0IGJhc2U2NG1pbWUKIGZyb20gZW1haWwgaW1wb3J0IHF1b3ByaW1pbWUKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIHVubGluawotZnJvbSBlbWFpbC50ZXN0IGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyawotCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxpbmsKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBvcGVuZmlsZSwgVGVzdEVtYWlsQmFzZQogCiBOTCA9ICdcbicKIEVNUFRZU1RSSU5HID0gJycKIFNQQUNFID0gJyAnCiAKIAotCi1kZWYgb3BlbmZpbGUoZmlsZW5hbWUsICphcmdzLCAqKmt3cyk6Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsIGZpbGVuYW1lKQotICAgIHJldHVybiBvcGVuKHBhdGgsICphcmdzLCAqKmt3cykKLQotCi0KLSMgQmFzZSB0ZXN0IGNsYXNzCi1jbGFzcyBUZXN0RW1haWxCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbmRpZmZBc3NlcnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kKToKLSAgICAgICAgIiIiTGlrZSBhc3NlcnRFcXVhbCBleGNlcHQgdXNlIG5kaWZmIGZvciByZWFkYWJsZSBvdXRwdXQuIiIiCi0gICAgICAgIGlmIGZpcnN0ICE9IHNlY29uZDoKLSAgICAgICAgICAgIHNmaXJzdCA9IHN0cihmaXJzdCkKLSAgICAgICAgICAgIHNzZWNvbmQgPSBzdHIoc2Vjb25kKQotICAgICAgICAgICAgcmZpcnN0ID0gW3JlcHIobGluZSkgZm9yIGxpbmUgaW4gc2ZpcnN0LnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIHJzZWNvbmQgPSBbcmVwcihsaW5lKSBmb3IgbGluZSBpbiBzc2Vjb25kLnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLm5kaWZmKHJmaXJzdCwgcnNlY29uZCkKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihOTCArIE5MLmpvaW4oZGlmZikpCi0KLSAgICBkZWYgX21zZ29iaihzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoZmlsZW5hbWUpKSBhcyBmcDoKLSAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCkKLQotCi0KICMgVGVzdCB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIE1lc3NhZ2UgY2xhc3MncyBBUEkKIGNsYXNzIFRlc3RNZXNzYWdlQVBJKFRlc3RFbWFpbEJhc2UpOgogICAgIGRlZiB0ZXN0X2dldF9hbGwoc2VsZik6CkBAIC0xOTQsNyArMTY5LDcgQEAKICAgICBkZWYgdGVzdF9tZXNzYWdlX3JmYzgyMl9vbmx5KHNlbGYpOgogICAgICAgICAjIElzc3VlIDc5NzA6IG1lc3NhZ2UvcmZjODIyIG5vdCBpbiBtdWx0aXBhcnQgcGFyc2VkIGJ5CiAgICAgICAgICMgSGVhZGVyUGFyc2VyIGNhdXNlZCBhbiBleGNlcHRpb24gd2hlbiBmbGF0dGVuZWQuCi0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoJ21zZ180Ni50eHQnKSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnKSBhcyBmcDoKICAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgcGFyc2VyID0gSGVhZGVyUGFyc2VyKCkKICAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlc3RyKG1zZ2RhdGEpCkBAIC0yMDMsNiArMTc4LDE3IEBACiAgICAgICAgIGdlbi5mbGF0dGVuKG1zZywgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCksIG1zZ2RhdGEpCiAKKyAgICBkZWYgdGVzdF9ieXRlX21lc3NhZ2VfcmZjODIyX29ubHkoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIG5ldyBieXRlcyBoZWFkZXIgcGFyc2VyIGFsc28gcGFzc2VzIHRoaXMuCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgcGFyc2VyID0gZW1haWwucGFyc2VyLkJ5dGVzSGVhZGVyUGFyc2VyKCkKKyAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlYnl0ZXMobXNnZGF0YSkKKyAgICAgICAgb3V0ID0gQnl0ZXNJTygpCisgICAgICAgIGdlbiA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihvdXQpCisgICAgICAgIGdlbi5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuZ2V0dmFsdWUoKSwgbXNnZGF0YSkKKwogICAgIGRlZiB0ZXN0X2dldF9kZWNvZGVkX3BheWxvYWQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18xMC50eHQnKQpAQCAtMjczLDYgKzI1OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1swXS5zdGFydHN3aXRoKCdGcm9tICcpKQogICAgICAgICBlcSh0ZXh0LCBOTC5qb2luKGxpbmVzWzE6XSkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLmJhZF9wYXJhbXMKICAgICBkZWYgdGVzdF9iYWRfcGFyYW0oc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIkNvbnRlbnQtVHlwZTogYmxhcmc7IGJhejsgYm9vXG4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ2JheicpLCAnJykKQEAgLTMwNiw2ICsyOTMsNyBAQAogICAgICAgICBlcShtc2cuZ2V0X3BhcmFtcyhoZWFkZXI9J3gtaGVhZGVyJyksCiAgICAgICAgICAgIFsoJ2ZvbycsICcnKSwgKCdiYXInLCAnb25lJyksICgnYmF6JywgJ3R3bycpXSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIuc3BhY2VzX2Fyb3VuZF9wYXJhbV9lcXVhbHMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fbGliZXJhbChzZWxmKToKICAgICAgICAgbXNnID0gTWVzc2FnZSgpCiAgICAgICAgIG1zZ1snQ29udGVudC1UeXBlJ10gPSAnQ29udGVudC1UeXBlOiBNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5ID0gIkNQSU1TU01UUEMwNnA1ZjN0RyInCkBAIC0zMjgsMTAgKzMxNiwxMiBAQAogICAgICAgICAjIG1zZy5nZXRfcGFyYW0oIndlaXJkIikKICAgICAgICAgIyB5ZXQuCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnNwYWNlc19hcm91bmRfc2VtaXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fZnVua3lfY29udGludWF0aW9uX2xpbmVzKHNlbGYpOgogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18yMi50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgxKS5nZXRfcGFyYW0oJ25hbWUnKSwgJ3dpYmJsZS5KUEcnKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5zZW1pc19pbnNpZGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtX3dpdGhfc2VtaXNfaW5fcXVvdGVzKHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKAogICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcGpwZWc7IG5hbWU9IkppbSZhbXA7JmFtcDtKaWxsIlxuJykKQEAgLTMzOSw2ICszMjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ25hbWUnLCB1bnF1b3RlPUZhbHNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnIkppbSZhbXA7JmFtcDtKaWxsIicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnF1b3Rlc19pbnNpZGVfcmZjMjIzMV92YWx1ZQogICAgIGRlZiB0ZXN0X2dldF9wYXJhbV93aXRoX3F1b3RlcyhzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygKICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGZvbzsgYmFyKjA9ImJhelxcImZvb2JhciI7IGJhcioxPSJcXCJiYXoiJykKQEAgLTUyNyw2ICs1MTgsNyBAQAogICAgICAgICBlcShtc2cudmFsdWVzKCksIFsnT25lIEh1bmRyZWQnLCAnVHdlbnR5JywgJ1RocmVlJywgJ0VsZXZlbiddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbXNnLnJlcGxhY2VfaGVhZGVyLCAnRm91cnRoJywgJ01pc3NpbmcnKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwogICAgICAgICBtc2cgPSBNZXNzYWdlKCkKQEAgLTUzNCw3ICs1MjYsMTAgQEAKICAgICAgICAgbXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10gPSAnYmFzZTY0JwogICAgICAgICBtc2cuc2V0X3BheWxvYWQoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzKHgsICdyYXctdW5pY29kZS1lc2NhcGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDAzXHgwMFx4ZTlceGQwXHhmZVx4ZmZceGZmLlx4OGJceGMwJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4YTFceDAwcFx4ZjZceGJmXHhlOVx4MGYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KQogCiAgICAgZGVmIHRlc3RfYnJva2VuX3VuaWNvZGVfcGF5bG9hZChzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3QgaW1wcm92ZXMgY292ZXJhZ2UgYnV0IGlzIG5vdCBhIGNvbXBsaWFuY2UgdGVzdC4KQEAgLTYzMiw2ICs2MjcsMTggQEAKICAgICAgICAgICAgIGFiYwogICAgICAgICAgICAgIiIiKSkKIAorICAgIGRlZiB0ZXN0X3VuaWNvZGVfYm9keV9kZWZhdWx0c190b191dGY4X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlIDE0MjkxCisgICAgICAgIG0gPSBNSU1FVGV4dCgnw4kgdGVzdGFiY1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobSksdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgICAgIHc0a2dkR1Z6ZEdGaVl3bz0KKyAgICAgICAgICAgICIiIikpCisKKwogIyBUZXN0IHRoZSBlbWFpbC5lbmNvZGVycyBtb2R1bGUKIGNsYXNzIFRlc3RFbmNvZGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY1Nyw3ICs2NjQsNyBAQAogICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSwgJzdiaXQnKQogICAgICAgICAjIFNpbWlsYXIsIGJ1dCB3aXRoIDhiaXQgZGF0YQogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcpCi0gICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnOGJpdCcpCisgICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnYmFzZTY0JykKICAgICAgICAgIyBBbmQgbm93IHdpdGggYSBkaWZmZXJlbnQgY2hhcnNldAogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcsIF9jaGFyc2V0PSdpc28tODg1OS0xJykKICAgICAgICAgZXEobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sICdxdW90ZWQtcHJpbnRhYmxlJykKQEAgLTEyNDMsNiArMTI1MCw3IEBACiAgICAgICAgICAgICAgPT91dGYtOD9xP19mb2xkaW5nX3doaXRlX3NwYWNlX3dvcmtzPz0iIiIpKydcbicpCiAKIAorCiAjIFRlc3QgbWFuZ2xpbmcgb2YgIkZyb20gIiBsaW5lcyBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UKIGNsYXNzIFRlc3RGcm9tTWFuZ2xpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTEzMTYsMTMgKzEzMjQsNyBAQAogIyBUZXN0IHRoZSBiYXNpYyBNSU1FQXVkaW8gY2xhc3MKIGNsYXNzIFRlc3RNSU1FQXVkaW8odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIyBNYWtlIHN1cmUgd2UgcGljayB1cCB0aGUgYXVkaW90ZXN0LmF1IHRoYXQgbGl2ZXMgaW4gZW1haWwvdGVzdC9kYXRhLgotICAgICAgICAjIEluIFB5dGhvbiwgdGhlcmUncyBhbiBhdWRpb3Rlc3QuYXUgbGl2aW5nIGluIExpYi90ZXN0IGJ1dCB0aGF0IGlzbid0Ci0gICAgICAgICMgaW5jbHVkZWQgaW4gc29tZSBiaW5hcnkgZGlzdHJvcyB0aGF0IGRvbid0IGluY2x1ZGUgdGhlIHRlc3QKLSAgICAgICAgIyBwYWNrYWdlLiAgVGhlIHRyYWlsaW5nIGVtcHR5IHN0cmluZyBvbiB0aGUgLmpvaW4oKSBpcyBzaWduaWZpY2FudAotICAgICAgICAjIHNpbmNlIGZpbmRmaWxlKCkgd2lsbCBkbyBhIGRpcm5hbWUoKS4KLSAgICAgICAgZGF0YWRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsICcnKQotICAgICAgICB3aXRoIG9wZW4oZmluZGZpbGUoJ2F1ZGlvdGVzdC5hdScsIGRhdGFkaXIpLCAncmInKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnYXVkaW90ZXN0LmF1JywgJ3JiJykgYXMgZnA6CiAgICAgICAgICAgICBzZWxmLl9hdWRpb2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgc2VsZi5fYXUgPSBNSU1FQXVkaW8oc2VsZi5fYXVkaW9kYXRhKQogCkBAIC0xODUwLDYgKzE4NTIsNyBAQAogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgorCiAgICAgZGVmIHRlc3RfcGFyc2VfbWlzc2luZ19taW5vcl90eXBlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMTQudHh0JykKQEAgLTE4NTcsNiArMTg2MCw3IEBACiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpLCAndGV4dCcpCiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9zdWJ0eXBlKCksICdwbGFpbicpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzE1LnR4dCcpCkBAIC0xODY3LDE1ICsxODcxLDYyIEBACiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKGlubmVyLmRlZmVjdHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19ib3VuZGFyeShzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzI1LnR4dCcpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZCgpLCBzdHIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDIpCi0gICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLCBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQogICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCkpCiAKKyAgICBtdWx0aXBhcnRfbXNnID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogV2VkLCAxNCBOb3YgMjAwNyAxMjo1NjoyMyBHTVQKKyAgICAgICAgRnJvbTogZm9vQGJhci5pbnZhbGlkCisgICAgICAgIFRvOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgU3ViamVjdDogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IGFuZCBtdWx0aXBhcnQKKyAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICBib3VuZGFyeT0iPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09Int9CisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgVGVzdCBtZXNzYWdlCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKyAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgWVdKagorCisgICAgICAgIC0tPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09LS0KKyAgICAgICAgIiIiKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF9pbnZhbGlkX2N0ZShzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgIHNlbGYubXVsdGlwYXJ0X21zZy5mb3JtYXQoIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfbm9fY3RlX25vX2RlZmVjdChzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBmb3IgY3RlIGluICgnN2JpdCcsICc4Yml0JywgJ0JJTmFyeScpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiB7fSIuZm9ybWF0KGN0ZSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlvcGVIZWFkZXIgaW52YWxpZF8xIGFuZCBpbnZhbGlkXzIuCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb250ZW50X3R5cGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBuZXEgPSBzZWxmLm5kaWZmQXNzZXJ0RXF1YWwKQEAgLTE5MjUsMTUgKzE5NzYsMTggQEAKIGNvdW50ZXIgdG8gUkZDIDI4MjIsIHRoZXJlJ3Mgbm8gc2VwYXJhdGluZyBuZXdsaW5lIGhlcmUKICIiIikKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9seWluZ19tdWx0aXBhcnQoc2VsZik6CiAgICAgICAgIHVubGVzcyA9IHNlbGYuYXNzZXJ0VHJ1ZQogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ180MS50eHQnKQogICAgICAgICB1bmxlc3MoaGFzYXR0cihtc2csICdkZWZlY3RzJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMikKLSAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9taXNzaW5nX3N0YXJ0X2JvdW5kYXJ5KHNlbGYpOgogICAgICAgICBvdXRlciA9IHNlbGYuX21zZ29iaignbXNnXzQyLnR4dCcpCiAgICAgICAgICMgVGhlIG1lc3NhZ2Ugc3RydWN0dXJlIGlzOgpAQCAtMTk0OSwxNyArMjAwMywyOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShiYWQuZGVmZWN0c1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCkpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3RfZmlyc3RfbGluZV9pc19jb250aW51YXRpb25faGVhZGVyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgbSA9ICcgTGluZSAxXG5MaW5lIDJcbkxpbmUgMycKKyAgICAgICAgbSA9ICcgTGluZSAxXG5TdWJqZWN0OiB0ZXN0XG5cbmJvZHknCiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobSkKLSAgICAgICAgZXEobXNnLmtleXMoKSwgW10pCi0gICAgICAgIGVxKG1zZy5nZXRfcGF5bG9hZCgpLCAnTGluZSAyXG5MaW5lIDMnKQorICAgICAgICBlcShtc2cua2V5cygpLCBbJ1N1YmplY3QnXSkKKyAgICAgICAgZXEobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKICAgICAgICAgZXEobGVuKG1zZy5kZWZlY3RzKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKG1zZy5kZWZlY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCiAgICAgICAgIGVxKG1zZy5kZWZlY3RzWzBdLmxpbmUsICcgTGluZSAxXG4nKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X21pc3NpbmdfaGVhZGVyX2JvZHlfc2VwYXJhdG9yKHNlbGYpOgorICAgICAgICAjIE91ciBoZXVyaXN0aWMgaWYgd2Ugc2VlIGEgbGluZSB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgaGVhZGVyIChubworICAgICAgICAjIGxlYWRpbmcgd2hpdGVzcGFjZSBidXQgbm8gJzonKSBpcyB0byBhc3N1bWUgdGhhdCB0aGUgYmxhbmsgbGluZSB0aGF0CisgICAgICAgICMgc2VwYXJhdGVzIHRoZSBoZWFkZXIgZnJvbSB0aGUgYm9keSBpcyBtaXNzaW5nLCBhbmQgdG8gc3RvcCBwYXJzaW5nCisgICAgICAgICMgaGVhZGVycyBhbmQgc3RhcnQgcGFyc2luZyB0aGUgYm9keS4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogdGVzdFxubm90IGEgaGVhZGVyXG5UbzogYWJjXG5cbmJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwobXNnLmRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RdKQogCiAKICMgVGVzdCBSRkMgMjA0NyBoZWFkZXIgZW5jb2RpbmcgYW5kIGRlY29kaW5nCkBAIC0xOTcwLDkgKzIwMzYsOSBAQAogIGZvbyBiYXIgPT9tYWMtaWNlbGFuZD9xP3I9OEFrc209OUFyZz04Q3M/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+JywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpLmVuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnLmpvaW4ocy5zcGxpdGxpbmVzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJNw7xsbGVyIFQiIDxULk11ZWxsZXJAeHh4LmNvbT4nKQorCiAKICMgVGVzdCB0aGUgTUlNRU1lc3NhZ2UgY2xhc3MKIGNsYXNzIFRlc3RNSU1FTWVzc2FnZShUZXN0RW1haWxCYXNlKToKQEAgLTI1NTIsNiArMjY4MSwxMyBAQAogICAgICAgICBmb3Igc3VicGFydCBpbiBtc2cud2FsaygpOgogICAgICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2Uoc3VicGFydCwgTXlNZXNzYWdlKSkKIAorICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2RvZXNfbm90X3JlcXVpcmVfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1lc3NhZ2UoTWVzc2FnZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coIlN1YmplY3Q6IHRlc3RcblxudGVzdCIsIE15TWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLCBNeU1lc3NhZ2UpKQorCiAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgogICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKCdlbWFpbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG1vZHVsZS5fX2FsbF9fKSwgWwpAQCAtMjU4Miw4ICsyNzE4LDE3IEBACiAgICAgICAgICAgICB1dGlscy5mb3JtYXRkYXRlKG5vdywgbG9jYWx0aW1lPUZhbHNlLCB1c2VnbXQ9VHJ1ZSksCiAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclYSwgJWQgJWIgJVkgJUg6JU06JVMgR01UJywgdGltZS5nbXRpbWUobm93KSkpCiAKLSAgICBkZWYgdGVzdF9wYXJzZWRhdGVfbm9uZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWRhdGUoJycpLCBOb25lKQorICAgICMgcGFyc2VkYXRlIGFuZCBwYXJzZWRhdGVfdHogd2lsbCBiZWNvbWUgZGVwcmVjYXRlZCBpbnRlcmZhY2VzIHNvbWVkYXkKKyAgICBkZWYgdGVzdF9wYXJzZWRhdGVfcmV0dXJuc19Ob25lX2Zvcl9pbnZhbGlkX3N0cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZSgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZV90eignJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZSgnMCcpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGVfdHooJzAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlKCdBIENvbXBsZXRlIFdhc3RlIG9mIFRpbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KCdBIENvbXBsZXRlIFdhc3RlIG9mIFRpbWUnKSkKKyAgICAgICAgIyBOb3QgYSBwYXJ0IG9mIHRoZSBzcGVjIGJ1dCwgYnV0IHRoaXMgaGFzIGhpc3RvcmljYWxseSB3b3JrZWQ6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZShOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KE5vbmUpKQogCiAgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2NvbXBhY3Qoc2VsZik6CiAgICAgICAgICMgVGhlIEZXUyBhZnRlciB0aGUgY29tbWEgaXMgb3B0aW9uYWwKQEAgLTI2MTAsNiArMjc1NSwxMyBAQAogICAgICAgICAgICAoMjAwMiwgNCwgMywgMTQsIDU4LCAyNiwgMCwgMSwgLTEsIC0yODgwMCkpCiAKIAorICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV9hY2NlcHRzX3RpbWVfd2l0aF9kb3RzKHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZXEodXRpbHMucGFyc2VkYXRlX3R6KCc1IEZlYiAyMDAzIDEzLjQ3LjI2IC0wODAwJyksCisgICAgICAgICAgICgyMDAzLCAyLCA1LCAxMywgNDcsIDI2LCAwLCAxLCAtMSwgLTI4ODAwKSkKKyAgICAgICAgZXEodXRpbHMucGFyc2VkYXRlX3R6KCc1IEZlYiAyMDAzIDEzLjQ3IC0wODAwJyksCisgICAgICAgICAgICgyMDAzLCAyLCA1LCAxMywgNDcsIDAsIDAsIDEsIC0xLCAtMjg4MDApKQorCiAgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2FjY2VwdGFibGVfdG9fdGltZV9mdW5jdGlvbnMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICB0aW1ldHVwID0gdXRpbHMucGFyc2VkYXRlKCc1IEZlYiAyMDAzIDEzOjQ3OjI2IC0wODAwJykKQEAgLTI2NTIsNyArMjgwNCwxMCBAQAogICAgIGRlZiB0ZXN0X2VzY2FwZV9kdW1wKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigoJ0EgKFZlcnkpIFNpbGx5IFBlcnNvbicsICdwZXJzb25AZG9tLmFpbicpKSwKLSAgICAgICAgICAgIHInIkEgXChWZXJ5XCkgU2lsbHkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JykKKyAgICAgICAgICAgIHInIkEgKFZlcnkpIFNpbGx5IFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICB1dGlscy5wYXJzZWFkZHIociciQSBcKFZlcnlcKSBTaWxseSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nKSwKKyAgICAgICAgICAgICgnQSAoVmVyeSkgU2lsbHkgUGVyc29uJywgJ3BlcnNvbkBkb20uYWluJykpCiAgICAgICAgIGEgPSByJ0EgXChTcGVjaWFsXCkgUGVyc29uJwogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLnBhcnNlYWRkcih1dGlscy5mb3JtYXRhZGRyKChhLCBiKSkpLCAoYSwgYikpCkBAIC0yNjY1LDYgKzI4MjAsNDYgQEAKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWFkZHIodXRpbHMuZm9ybWF0YWRkcigoYSwgYikpKSwgKGEsIGIpKQogCisgICAgZGVmIHRlc3RfcXVvdGVzX3VuaWNvZGVfbmFtZXMoc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgdXRmOF9iYXNlNjQgPSAiPT91dGYtOD9iP1NNT2tibk1nVjhPOGNuTjA/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBsYXRpbjFfcXVvcHJpID0gIj0/aXNvLTg4NTktMT9xP0g9RTRuc19XPUZDcnN0Pz0gPHBlcnNvbkBkb20uYWluPiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSksIHV0ZjhfYmFzZTY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgbGF0aW4xX3F1b3ByaSkKKworICAgIGRlZiB0ZXN0X2FjY2VwdHNfYW55X2NoYXJzZXRfbGlrZV9vYmplY3Qoc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgdXRmOF9iYXNlNjQgPSAiPT91dGYtOD9iP1NNT2tibk1nVjhPOGNuTjA/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBmb29iYXIgPSAiRk9PQkFSIgorICAgICAgICBjbGFzcyBDaGFyc2V0TW9jazoKKyAgICAgICAgICAgIGRlZiBoZWFkZXJfZW5jb2RlKHNlbGYsIHN0cmluZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvb2JhcgorICAgICAgICBtb2NrID0gQ2hhcnNldE1vY2soKQorICAgICAgICBtb2NrX2V4cGVjdGVkID0gIiVzIDwlcz4iICUgKGZvb2JhciwgYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSwgbW9jayksIG1vY2tfZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcigobmFtZSwgYWRkciksIENoYXJzZXQoJ3V0Zi04JykpLAorICAgICAgICAgICAgdXRmOF9iYXNlNjQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NoYXJzZXRfbGlrZV9vYmplY3RfcmFpc2VzX2Vycm9yKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE2OTA2MDguICBlbWFpbC51dGlscy5mb3JtYXRhZGRyKCkgc2hvdWxkIGJlIHJmYzIwNDcgYXdhcmUuCisgICAgICAgIG5hbWUgPSAiSFx1MDBlNG5zIFdcdTAwZmNyc3QiCisgICAgICAgIGFkZHIgPSAncGVyc29uQGRvbS5haW4nCisgICAgICAgICMgQSBvYmplY3Qgd2l0aG91dCBhIGhlYWRlcl9lbmNvZGUgbWV0aG9kOgorICAgICAgICBiYWRfY2hhcnNldCA9IG9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB1dGlscy5mb3JtYXRhZGRyLCAobmFtZSwgYWRkciksCisgICAgICAgICAgICBiYWRfY2hhcnNldCkKKworICAgIGRlZiB0ZXN0X3VuaWNvZGVfYWRkcmVzc19yYWlzZXNfZXJyb3Ioc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgYWRkciA9ICdwZXJzXHUwMGY2bkBkb20uaW4nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgdXRpbHMuZm9ybWF0YWRkciwgKE5vbmUsIGFkZHIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIHV0aWxzLmZvcm1hdGFkZHIsICgiTmFtZSIsIGFkZHIpKQorCiAgICAgZGVmIHRlc3RfbmFtZV93aXRoX2RvdChzZWxmKToKICAgICAgICAgeCA9ICdKb2huIFguIERvZSA8anhkQGV4YW1wbGUuY29tPicKICAgICAgICAgeSA9ICciSm9obiBYLiBEb2UiIDxqeGRAZXhhbXBsZS5jb20+JwpAQCAtMjcxMCw2ICsyOTA1LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCcnLCAnbWVyd29rLndvay53b2tAeGFtcGxlLmNvbScpLAogICAgICAgICAgICAgdXRpbHMucGFyc2VhZGRyKCdtZXJ3b2suIHdvayAuICB3b2tAeGFtcGxlLmNvbScpKQogCisgICAgZGVmIHRlc3RfZm9ybWF0YWRkcl9kb2VzX25vdF9xdW90ZV9wYXJlbnNfaW5fcXVvdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgYWRkciA9ICgiJ2Zvb0BleGFtcGxlLmNvbScgKGZvb0BleGFtcGxlLmNvbSkiLAorICAgICAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20nKQorICAgICAgICBhZGRyc3RyID0gKCciXCdmb29AZXhhbXBsZS5jb21cJyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb29AZXhhbXBsZS5jb20pIiA8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMucGFyc2VhZGRyKGFkZHJzdHIpLCBhZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoYWRkciksIGFkZHJzdHIpCisKKwogICAgIGRlZiB0ZXN0X211bHRpbGluZV9mcm9tX2NvbW1lbnQoc2VsZik6CiAgICAgICAgIHggPSAiIiJcCiBGb28KQEAgLTI5NDUsNiArMzE0OSw3IEBACiAKIAogY2xhc3MgVGVzdFBhcnNlcnMoVGVzdEVtYWlsQmFzZSk6CisKICAgICBkZWYgdGVzdF9oZWFkZXJfcGFyc2VyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgIyBQYXJzZSBvbmx5IHRoZSBoZWFkZXJzIG9mIGEgY29tcGxleCBtdWx0aXBhcnQgTUlNRSBkb2N1bWVudApAQCAtMjk1Niw2ICszMTYxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXNnLmlzX211bHRpcGFydCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKIAorICAgIGRlZiB0ZXN0X2J5dGVzX2hlYWRlcl9wYXJzZXIoc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICAjIFBhcnNlIG9ubHkgdGhlIGhlYWRlcnMgb2YgYSBjb21wbGV4IG11bHRpcGFydCBNSU1FIGRvY3VtZW50CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ18wMi50eHQnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZyA9IGVtYWlsLnBhcnNlci5CeXRlc0hlYWRlclBhcnNlcigpLnBhcnNlKGZwKQorICAgICAgICBlcShtc2dbJ2Zyb20nXSwgJ3BwcC1yZXF1ZXN0QHp6ei5vcmcnKQorICAgICAgICBlcShtc2dbJ3RvJ10sICdwcHBAenp6Lm9yZycpCisgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF90eXBlKCksICdtdWx0aXBhcnQvbWl4ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1zZy5pc19tdWx0aXBhcnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKCksIHN0cikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksIGJ5dGVzKSkKKwogICAgIGRlZiB0ZXN0X3doaXRlc3BhY2VfY29udGludWF0aW9uKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgIyBUaGlzIG1lc3NhZ2UgY29udGFpbnMgYSBsaW5lIGFmdGVyIHRoZSBTdWJqZWN0OiBoZWFkZXIgdGhhdCBoYXMgb25seQpAQCAtMzE3OCwxNSArMzM5NSwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAncMO2c3TDoWxcbicuZW5jb2RlKCd1dGYtOCcpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF84Yml0X2luX2Jhc2U2NF9ib2R5KHNlbGYpOgotICAgICAgICAjIFN0aWNraW5nIGFuIDhiaXQgYnl0ZSBpbiBhIGJhc2U2NCBibG9jayBtYWtlcyBpdCB1bmRlY29kYWJsZSBieQotICAgICAgICAjIG5vcm1hbCBtZWFucywgc28gdGhlIGJsb2NrIGlzIHJldHVybmVkIHVuZGVjb2RlZCwgYnV0IGFzIGJ5dGVzLgorICAgICAgICAjIElmIHdlIGdldCA4Yml0IGJ5dGVzIGluIGEgYmFzZTY0IGJvZHksIHdlIGNhbiBqdXN0IGlnbm9yZSB0aGVtCisgICAgICAgICMgYXMgYmVpbmcgb3V0c2lkZSB0aGUgYmFzZTY0IGFscGhhYmV0IGFuZCBkZWNvZGUgYW55d2F5LiAgQnV0CisgICAgICAgICMgd2UgcmVnaXN0ZXIgYSBkZWZlY3QuCiAgICAgICAgIG0gPSBzZWxmLmJvZHl0ZXN0X21zZy5mb3JtYXQoY2hhcnNldD0ndXRmLTgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0ZT0nYmFzZTY0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5bGluZT0nY01PMmMzUmhiQcOhPScpLmVuY29kZSgndXRmLTgnKQogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMobSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdjTU8yYzNSaGJBw6E9XG4nLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAncMO2c3RhbCcuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QpCiAKICAgICBkZWYgdGVzdF84Yml0X2luX3V1ZW5jb2RlX2JvZHkoc2VsZik6CiAgICAgICAgICMgU3RpY2tpbmcgYW4gOGJpdCBieXRlIGluIGEgdXVlbmNvZGUgYmxvY2sgbWFrZXMgaXQgdW5kZWNvZGFibGUgYnkKQEAgLTMyNjcsNiArMzQ4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X21haW50eXBlKCksICJ0ZXh0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfc3VidHlwZSgpLCAicGxcdUZGRkRpbiIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLm5vbl9hc2NpaV9pbl9wYXJhbXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1zX3dpdGhfOGJpdChzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKAogICAgICAgICAgICAgJ1gtSGVhZGVyOiBmb289XHhhN25lOyBiXHhhN3I9dHdvOyBiYXo9dGhyZWVcbicuZW5jb2RlKCdsYXRpbi0xJykpCkBAIC0zMjc2LDYgKzM0OTgsNyBAQAogICAgICAgICAjIFhYWDogc29tZWRheSB5b3UgbWlnaHQgYmUgYWJsZSB0byBnZXQgJ2JceGE3cicsIGZvciBub3cgeW91IGNhbid0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ2JceGE3cicsIGhlYWRlcj0neC1oZWFkZXInKSwgTm9uZSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIubm9uX2FzY2lpX2luX3JmYzIyMzFfdmFsdWUKICAgICBkZWYgdGVzdF9nZXRfcmZjMjIzMV9wYXJhbXNfd2l0aF84Yml0KHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXModGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsKQEAgLTM1MjEsMTIgKzM3NDQsNyBAQAogICAgICAgICBiID0gQnl0ZXNJTygpCiAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoYiwgbWF4aGVhZGVybGVuPTApCiAgICAgICAgIGcuZmxhdHRlbihtc2csIHVuaXhmcm9tPXVuaXhmcm9tLCBsaW5lc2VwPXNlbGYubGluZXNlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRCeXRlU3RyaW5nc0VxdWFsKGRhdGEsIGIuZ2V0dmFsdWUoKSkKLQotICAgIGRlZiBhc3NlcnRCeXRlU3RyaW5nc0VxdWFsKHNlbGYsIHN0cjEsIHN0cjIpOgotICAgICAgICAjIE5vdCB1c2luZyBzZWxmLmJsaW5lc2VwIGhlcmUgaXMgaW50ZW50aW9uYWwuICBUaGlzIHdheSB0aGUgb3V0cHV0Ci0gICAgICAgICMgaXMgbW9yZSB1c2VmdWwgd2hlbiB0aGUgZmFpbHVyZSByZXN1bHRzIGluIG1peGVkIGxpbmUgZW5kaW5ncy4KLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoc3RyMS5zcGxpdChiJ1xuJyksIHN0cjIuc3BsaXQoYidcbicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIuZ2V0dmFsdWUoKSkKIAogCiBjbGFzcyBUZXN0Qnl0ZXNHZW5lcmF0b3JJZGVtcG90ZW50TkwoQmFzZVRlc3RCeXRlc0dlbmVyYXRvcklkZW1wb3RlbnQsCkBAIC00MjkyLDExICs0NTEwLDExIEBACiAgICAgICAgIGggPSBtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKQogICAgICAgICBlcShoLmVuY29kZSgpLCBzKQogCi0gICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9lYXRlcihzZWxmKToKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2tlZXBlcihzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSAnU3ViamVjdDogPT9rb2k4LXI/Yj84TkxQMThYU3k4RWd6c0VneHNuT3djell6dGs9Pz0gPT9rb2k4LXI/cT89Q0E/PSB6ei4nCiAgICAgICAgIHBhcnRzID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBlcShwYXJ0cywgWyhiJ1N1YmplY3Q6JywgTm9uZSksIChiJ1x4ZjBceGQyXHhjZlx4ZDdceGM1XHhkMlx4Y2JceGMxIFx4Y2VceGMxIFx4YzZceGM5XHhjZVx4YzFceGNjXHhkOFx4Y2VceGQ5XHhjYScsICdrb2k4LXInKSwgKGInenouJywgTm9uZSldKQorICAgICAgICBlcShwYXJ0cywgWyhiJ1N1YmplY3Q6ICcsIE5vbmUpLCAoYidceGYwXHhkMlx4Y2ZceGQ3XHhjNVx4ZDJceGNiXHhjMSBceGNlXHhjMSBceGM2XHhjOVx4Y2VceGMxXHhjY1x4ZDhceGNlXHhkOVx4Y2EnLCAna29pOC1yJyksIChiJyB6ei4nLCBOb25lKV0pCiAgICAgICAgIGhkciA9IG1ha2VfaGVhZGVyKHBhcnRzKQogICAgICAgICBlcShoZHIuZW5jb2RlKCksCiAgICAgICAgICAgICdTdWJqZWN0OiA9P2tvaTgtcj9iPzhOTFAxOFhTeThFZ3pzRWd4c25Pd2N6WXp0bks/PSB6ei4nKQpAQCAtNDMyNiw2ICs0NTQ0LDkgQEAKIAogIyBUZXN0IFJGQyAyMjMxIGhlYWRlciBwYXJhbWV0ZXJzIChlbi9kZSljb2RpbmcKIGNsYXNzIFRlc3RSRkMyMjMxKFRlc3RFbWFpbEJhc2UpOgorCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZV9pbnNpZGVfZG91YmxlX3F1b3RlcwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzI5LnR4dCcpCkBAIC00NDExLDExICs0NjMyLDE1IEBACiAtTWUKICIiIikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX2NoYXJzZXQKKyAgICAjIEkgY2hhbmdlZCB0aGUgY2hhcnNldCBuYW1lLCB0aG91Z2gsIGJlY2F1c2UgdGhlIG9uZSBpbiB0aGUgZmlsZSBpc24ndAorICAgICMgYSBsZWdhbCBjaGFyc2V0IG5hbWUuICBTaG91bGQgYWRkIGEgdGVzdCBmb3IgYW4gaWxsZWdhbCBjaGFyc2V0LgogICAgIGRlZiB0ZXN0X3JmYzIyMzFfZ2V0X2NvbnRlbnRfY2hhcnNldChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzMyLnR4dCcpCiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9jaGFyc2V0KCksICd1cy1hc2NpaScpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF9ub19kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9wYXJzZV9yZmNfcXVvdGluZyhzZWxmKToKICAgICAgICAgbSA9IHRleHR3cmFwLmRlZGVudCgnJydcCiAgICAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDI5LDYgKzQ2NTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbXNnLmFzX3N0cmluZygpKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9wYXJzZV9leHRyYV9xdW90aW5nKHNlbGYpOgogICAgICAgICBtID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKICAgICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0NDIsNiArNDY2OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBtc2cuYXNfc3RyaW5nKCkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldAorICAgICMgYnV0IG5ldyB0ZXN0IHVzZXMgKjAqIGJlY2F1c2Ugb3RoZXJ3aXNlIGxhbmcvY2hhcnNldCBpcyBub3QgdmFsaWQuCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NlZ21lbnRlZF9ub3JtYWxfdmFsdWVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0KHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtNDQ1Niw2ICs0Njg1LDcgQEAKICAgICAgICAgICAgIHBhcmFtLAogICAgICAgICAgICAgJ2ZpbGVfX19fQ19fRE9DVU1FTlRTXzIwQU5EXzIwU0VUVElOR1NfRkFCSUVOX0xPQ0FMXzIwU0VUVElOR1NfVEVNUF9uc21haWwuaHRtJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX25vX2NoYXJzZXQKICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXRfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDY4LDYgKzQ2OTgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfZmlsZW5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogCisgICAgIyBEdXBsaWNhdGUgb2YgcHJldmlvdXMgdGVzdD8KICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXRfaW5fZmlsZW5hbWVfZW5jb2RlZChzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0ODAsNiArNDcxMSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9maWxlbmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfcGFydGx5X2VuY29kZWQsCisgICAgIyBidXQgdGhlIHRlc3QgYmVsb3cgaXMgd3JvbmcgKHRoZSBmaXJzdCBwYXJ0IHNob3VsZCBiZSBkZWNvZGVkKS4KICAgICBkZWYgdGVzdF9yZmMyMjMxX3BhcnRseV9lbmNvZGVkKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDUzMSw2ICs0NzY0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfY2hhcnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfdW5rbm93bl9jaGFyc2V0X3RyZWF0ZWRfYXNfYXNjaWkKICAgICBkZWYgdGVzdF9yZmMyMjMxX2JhZF9lbmNvZGluZ19pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ1OTcsNiArNDgzMSw3IEBACiAgICAgICAgIGVxKGxhbmd1YWdlLCBOb25lKQogICAgICAgICBlcShzLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luc2lkZV9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9zaW5nbGVfdGlja19pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICIiIlwKIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287IG5hbWUqMD1cIkZyYW5rJ3NcIjsgbmFtZSoxPVwiIERvY3VtZW50XCIKQEAgLTQ2MDcsNiArNDg0Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShwYXJhbSwgdHVwbGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luX3ZhbHVlX3dpdGhfY2hhcnNldF9hbmRfbGFuZwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdGlja19hdHRhY2tfZXh0ZW5kZWQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDYyMCw2ICs0ODU2LDcgQEAKICAgICAgICAgZXEobGFuZ3VhZ2UsICdlbi11cycpCiAgICAgICAgIGVxKHMsICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fbm9uX2VuY29kZWRfdmFsdWUKICAgICBkZWYgdGVzdF9yZmMyMjMxX3RpY2tfYXR0YWNrKHNlbGYpOgogICAgICAgICBtID0gIiIiXAogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbzsKQEAgLTQ2MzEsNiArNDg2OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShwYXJhbSwgdHVwbGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLCAidXMtYXNjaWknZW4tdXMnRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3Rlc19pbnNpZGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19leHRlbmRlZF92YWx1ZXMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDY0MCw2ICs0ODc4LDcgQEAKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhtKQogICAgICAgICBlcShtc2cuZ2V0X3BhcmFtKCduYW1lJyksICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX3RoZW5fdW5lbmNvZGVkX3NlZ21lbnRzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9lbmNvZGVkX3RoZW5fdW5lbmNvZGVkX3NlZ21lbnRzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbSA9ICIiIlwKQEAgLTQ2NTUsNiArNDg5NCw4IEBACiAgICAgICAgIGVxKGxhbmd1YWdlLCAnZW4tdXMnKQogICAgICAgICBlcShzLCAnTXkgRG9jdW1lbnQgRm9yIFlvdScpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cworICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9xdW90ZWRfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00Njc4LDcgKzQ5MTksNyBAQAogY2xhc3MgVGVzdFNpZ25lZChUZXN0RW1haWxCYXNlKToKIAogICAgIGRlZiBfbXNnX2FuZF9vYmooc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICB3aXRoIG9wZW5maWxlKGZpbmRmaWxlKGZpbGVuYW1lKSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoZmlsZW5hbWUpIGFzIGZwOgogICAgICAgICAgICAgb3JpZ2luYWwgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcob3JpZ2luYWwpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbCwgbXNnCkBAIC00NzEwLDIzICs0OTUxLDUgQEAKIAogCiAKLWRlZiBfdGVzdGNsYXNzZXMoKToKLSAgICBtb2QgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICByZXR1cm4gW2dldGF0dHIobW9kLCBuYW1lKSBmb3IgbmFtZSBpbiBkaXIobW9kKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1Rlc3QnKV0KLQotCi1kZWYgc3VpdGUoKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgZm9yIHRlc3RjbGFzcyBpbiBfdGVzdGNsYXNzZXMoKToKLSAgICAgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUodGVzdGNsYXNzKSkKLSAgICByZXR1cm4gc3VpdGUKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZm9yIHRlc3RjbGFzcyBpbiBfdGVzdGNsYXNzZXMoKToKLSAgICAgICAgcnVuX3VuaXR0ZXN0KHRlc3RjbGFzcykKLQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVzdD0nc3VpdGUnKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxNzQwOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKQEAgLTAsMCArMSwxOTkgQEAKK2ltcG9ydCBpbworaW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9zdHJpbmcsIG1lc3NhZ2VfZnJvbV9ieXRlcworZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvciwgQnl0ZXNHZW5lcmF0b3IKK2Zyb20gZW1haWwgaW1wb3J0IHBvbGljeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RHZW5lcmF0b3JCYXNlOgorCisgICAgcG9saWN5ID0gcG9saWN5LmRlZmF1bHQKKworICAgIGRlZiBtc2dtYWtlcihzZWxmLCBtc2csIHBvbGljeT1Ob25lKToKKyAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kgaWYgcG9saWN5IGlzIE5vbmUgZWxzZSBwb2xpY3kKKyAgICAgICAgcmV0dXJuIHNlbGYubXNnZnVuYyhtc2csIHBvbGljeT1wb2xpY3kpCisKKyAgICByZWZvbGRfbG9uZ19leHBlY3RlZCA9IHsKKyAgICAgICAgMDogdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiB3aG9tX2l0X21heV9jb25jZXJuQGV4YW1wbGUuY29tCisgICAgICAgICAgICBGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZSB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZQorICAgICAgICAgICAgIGltcG9zc2libGUgZm9yIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlIGRvbmUgc28gbXVjaCBmb3Igc28gbG9uZyB3aXRoIHNvIGxpdHRsZQorICAgICAgICAgICAgIHdlIGFyZSBub3cgcXVhbGlmaWVkIHRvIGRvIGFueXRoaW5nIHdpdGggbm90aGluZy4KKworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgIiIiKSwKKyAgICAgICAgIyBGcm9tIGlzIHdyYXBwZWQgYmVjYXVzZSB3cmFwcGVkIGl0IGZpdHMgaW4gNDAuCisgICAgICAgIDQwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206CisgICAgICAgICAgICAgbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUKKyAgICAgICAgICAgICB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZSBpbXBvc3NpYmxlIGZvcgorICAgICAgICAgICAgIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlIGRvbmUgc28gbXVjaAorICAgICAgICAgICAgIGZvciBzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cKKyAgICAgICAgICAgICBxdWFsaWZpZWQgdG8gZG8gYW55dGhpbmcgd2l0aCBub3RoaW5nLgorCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAiIiIpLAorICAgICAgICAjIE5laXRoZXIgdG8gbm9yIGZyb20gZml0IGV2ZW4gaWYgcHV0IG9uIGEgbmV3IGxpbmUsCisgICAgICAgICMgc28gd2UgbGVhdmUgdGhlbSBzdGlja2luZyBvdXQgb24gdGhlIGZpcnN0IGxpbmUuCisgICAgICAgIDIwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tCisgICAgICAgICAgICBTdWJqZWN0OiBXZSB0aGUKKyAgICAgICAgICAgICB3aWxsaW5nIGxlZCBieSB0aGUKKyAgICAgICAgICAgICB1bmtub3dpbmcgYXJlIGRvaW5nCisgICAgICAgICAgICAgdGhlIGltcG9zc2libGUgZm9yCisgICAgICAgICAgICAgdGhlIHVuZ3JhdGVmdWwuIFdlCisgICAgICAgICAgICAgaGF2ZSBkb25lIHNvIG11Y2gKKyAgICAgICAgICAgICBmb3Igc28gbG9uZyB3aXRoIHNvCisgICAgICAgICAgICAgbGl0dGxlIHdlIGFyZSBub3cKKyAgICAgICAgICAgICBxdWFsaWZpZWQgdG8gZG8KKyAgICAgICAgICAgICBhbnl0aGluZyB3aXRoCisgICAgICAgICAgICAgbm90aGluZy4KKworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgIiIiKSwKKyAgICAgICAgfQorICAgIHJlZm9sZF9sb25nX2V4cGVjdGVkWzEwMF0gPSByZWZvbGRfbG9uZ19leHBlY3RlZFswXQorCisgICAgcmVmb2xkX2FsbF9leHBlY3RlZCA9IHJlZm9sZF9sb25nX2V4cGVjdGVkLmNvcHkoKQorICAgIHJlZm9sZF9hbGxfZXhwZWN0ZWRbMF0gPSAoCisgICAgICAgICAgICAiVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIlN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUgIgorICAgICAgICAgICAgICAiaW1wb3NzaWJsZSBmb3IgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmUgZG9uZSBzbyBtdWNoIGZvciAiCisgICAgICAgICAgICAgICJzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cgcXVhbGlmaWVkIHRvIGRvIGFueXRoaW5nICIKKyAgICAgICAgICAgICAgIndpdGggbm90aGluZy5cbiIKKyAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAiTm9uZVxuIikKKyAgICByZWZvbGRfYWxsX2V4cGVjdGVkWzEwMF0gPSAoCisgICAgICAgICAgICAiVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIlN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUgIgorICAgICAgICAgICAgICAgICJpbXBvc3NpYmxlIGZvciB0aGUgdW5ncmF0ZWZ1bC4gV2UgaGF2ZVxuIgorICAgICAgICAgICAgICAiIGRvbmUgc28gbXVjaCBmb3Igc28gbG9uZyB3aXRoIHNvIGxpdHRsZSB3ZSBhcmUgbm93IHF1YWxpZmllZCAiCisgICAgICAgICAgICAgICAgInRvIGRvIGFueXRoaW5nIHdpdGggbm90aGluZy5cbiIKKyAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAiTm9uZVxuIikKKworICAgIGxlbmd0aF9wYXJhbXMgPSBbbiBmb3IgbiBpbiByZWZvbGRfbG9uZ19leHBlY3RlZF0KKworICAgIGRlZiBsZW5ndGhfYXNfbWF4aGVhZGVybGVuX3BhcmFtZXRlcihzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIG1heGhlYWRlcmxlbj1uLCBwb2xpY3k9c2VsZi5wb2xpY3kpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4X2xpbmVfbGVuZ3RoX3BvbGljeShzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShtYXhfbGluZV9sZW5ndGg9bikpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4aGVhZGVybGVuX3Bhcm1fb3ZlcnJpZGVzX3BvbGljeShzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIG1heGhlYWRlcmxlbj1uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTEwKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhfbGluZV9sZW5ndGhfd2l0aF9yZWZvbGRfbm9uZV9kb2VzX25vdF9mb2xkKHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKHJlZm9sZF9zb3VyY2U9J25vbmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xpbmVfbGVuZ3RoPW4pKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heF9saW5lX2xlbmd0aF93aXRoX3JlZm9sZF9hbGxfZm9sZHMoc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUocmVmb2xkX3NvdXJjZT0nYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9saW5lX2xlbmd0aD1uKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2FsbF9leHBlY3RlZFtuXSkpCisKKyAgICBkZWYgdGVzdF9jcmxmX2NvbnRyb2xfdmlhX3BvbGljeShzZWxmKToKKyAgICAgICAgc291cmNlID0gIlN1YmplY3Q6IHRlc3RcclxuXHJcbnRlc3QgYm9keVxyXG4iCisgICAgICAgIGV4cGVjdGVkID0gc291cmNlCisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc291cmNlKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1wb2xpY3kuU01UUCkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKGV4cGVjdGVkKSkKKworICAgIGRlZiB0ZXN0X2ZsYXR0ZW5fbGluZXNlcF9vdmVycmlkZXNfcG9saWN5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAiU3ViamVjdDogdGVzdFxuXG50ZXN0IGJvZHlcbiIKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3VyY2UKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzb3VyY2UpKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXBvbGljeS5TTVRQKQorICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChleHBlY3RlZCkpCisKKworY2xhc3MgVGVzdEdlbmVyYXRvcihUZXN0R2VuZXJhdG9yQmFzZSwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBtc2dmdW5jID0gc3RhdGljbWV0aG9kKG1lc3NhZ2VfZnJvbV9zdHJpbmcpCisgICAgZ2VuY2xhc3MgPSBHZW5lcmF0b3IKKyAgICBpb2NsYXNzID0gaW8uU3RyaW5nSU8KKyAgICB0eXAgPSBzdHIKKworCitjbGFzcyBUZXN0Qnl0ZXNHZW5lcmF0b3IoVGVzdEdlbmVyYXRvckJhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgbXNnZnVuYyA9IHN0YXRpY21ldGhvZChtZXNzYWdlX2Zyb21fYnl0ZXMpCisgICAgZ2VuY2xhc3MgPSBCeXRlc0dlbmVyYXRvcgorICAgIGlvY2xhc3MgPSBpby5CeXRlc0lPCisgICAgdHlwID0gbGFtYmRhIHNlbGYsIHg6IHguZW5jb2RlKCdhc2NpaScpCisKKyAgICBkZWYgdGVzdF9jdGVfdHlwZV83Yml0X2hhbmRsZXNfdW5rbm93bl84Yml0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAoIlN1YmplY3Q6IE1haW50ZW5hbnQgamUgdm91cyBwcsOpc2VudGUgbW9uICIKKyAgICAgICAgICAgICAgICAgImNvbGzDqGd1ZVxuXG4iKS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZXhwZWN0ZWQgPSAoJ1N1YmplY3Q6IE1haW50ZW5hbnQgamUgdm91cyA9P3Vua25vd24tOGJpdD9xPycKKyAgICAgICAgICAgICAgICAgICAgJ3ByPUMzPUE5c2VudGVfbW9uX2NvbGw9QzM9QThndWU/PVxuXG4nKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgbXNnID0gbWVzc2FnZV9mcm9tX2J5dGVzKHNvdXJjZSkKKyAgICAgICAgcyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKGN0ZV90eXBlPSc3Yml0JykpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2N0ZV90eXBlXzdiaXRfdHJhbnNmb3Jtc184Yml0X2N0ZShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IGZvb0BiYXIuY29tCisgICAgICAgICAgICBUbzogRGluc2RhbGUKKyAgICAgICAgICAgIFN1YmplY3Q6IE51ZGdlIG51ZGdlLCB3aW5rLCB3aW5rCisgICAgICAgICAgICBNaW1lLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJsYXRpbi0xIgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCisgICAgICAgICAgICBvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKS5lbmNvZGUoJ2xhdGluMScpCisgICAgICAgIG1zZyA9IG1lc3NhZ2VfZnJvbV9ieXRlcyhzb3VyY2UpCisgICAgICAgIGV4cGVjdGVkID0gIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBGcm9tOiBmb29AYmFyLmNvbQorICAgICAgICAgICAgVG86IERpbnNkYWxlCisgICAgICAgICAgICBTdWJqZWN0OiBOdWRnZSBudWRnZSwgd2luaywgd2luaworICAgICAgICAgICAgTWltZS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iaXNvLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgb2ggbD1FMCBsPUUwLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKGN0ZV90eXBlPSc3Yml0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2VwPSdcbicpKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmE4MWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC0wLDAgKzEsMTUxNSBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEFkZHJlc3MsIEdyb3VwCisKKworRElUVE8gPSBvYmplY3QoKQorCisKK2NsYXNzIFRlc3RIZWFkZXJSZWdpc3RyeShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X2FyYml0cmFyeV9uYW1lX3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9uYW1lX2Nhc2VfaWdub3JlZChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgIyBXaGl0ZWJveCBjaGVjayB0aGF0IHRlc3QgaXMgdmFsaWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignU3ViamVjdCcsIGZhY3RvcnkucmVnaXN0cnkpCisgICAgICAgIGggPSBmYWN0b3J5KCdTdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGNsYXNzIEZvb0Jhc2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2Jhc2VfY2xhc3Moc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeShiYXNlX2NsYXNzPXNlbGYuRm9vQmFzZSkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vQmFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGNsYXNzIEZvb0RlZmF1bHQ6CisgICAgICAgIHBhcnNlID0gaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyLnBhcnNlCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2NsYXNzKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoZGVmYXVsdF9jbGFzcz1zZWxmLkZvb0RlZmF1bHQpCisgICAgICAgIGggPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb29EZWZhdWx0KQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVmYXVsdF9jbGFzc19vbmx5X292ZXJyaWRlc19kZWZhdWx0KHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoZGVmYXVsdF9jbGFzcz1zZWxmLkZvb0RlZmF1bHQpCisgICAgICAgIGggPSBmYWN0b3J5KCdzdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X2RvbnRfdXNlX2RlZmF1bHRfbWFwKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkodXNlX2RlZmF1bHRfbWFwPUZhbHNlKQorICAgICAgICBoID0gZmFjdG9yeSgnc3ViamVjdCcsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9tYXBfdG9fdHlwZShzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgaDEgPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIGZhY3RvcnkubWFwX3RvX3R5cGUoJ2Zvb2JhcicsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKyAgICAgICAgaDIgPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMSwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgxLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMiwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgyLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIpCisKKworY2xhc3MgVGVzdEhlYWRlckJhc2UoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorCisgICAgZGVmIG1ha2VfaGVhZGVyKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZmFjdG9yeShuYW1lLCB2YWx1ZSkKKworCitjbGFzcyBUZXN0QmFzZUhlYWRlckZlYXR1cmVzKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGgpLCAndGhpcyBpcyBhIHRlc3QnKQorCisgICAgZGVmIHRlc3Rfc3Vic3RyKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaFs1OjddLCAnaXMnKQorCisgICAgZGVmIHRlc3RfaGFzX25hbWUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsICdzdWJqZWN0JykKKworICAgIGRlZiBfdGVzdF9hdHRyX3JvKHNlbGYsIGF0dHIpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2V0YXR0cihoLCBhdHRyLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X25hbWVfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oJ25hbWUnKQorCisgICAgZGVmIHRlc3RfZGVmZWN0c19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybygnZGVmZWN0cycpCisKKyAgICBkZWYgdGVzdF9kZWZlY3RzX2lzX3R1cGxlKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZGVmZWN0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRlZmVjdHMsIHR1cGxlKQorICAgICAgICAjIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCB0cnVlIHdoZW4gdGhlcmUgYXJlIGRlZmVjdHMuCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZGVmZWN0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRlZmVjdHMsIHR1cGxlKQorCisgICAgIyBYWFg6IEZJWE1FCisgICAgI2RlZiB0ZXN0X0NSX2luX3ZhbHVlKHNlbGYpOgorICAgICMgICAgIyBYWFg6IHRoaXMgYWxzbyByZS1yYWlzZXMgdGhlIGlzc3VlIG9mIGVtYmVkZGVkIGhlYWRlcnMsCisgICAgIyAgICAjIG5lZWQgdGVzdCBhbmQgc29sdXRpb24gZm9yIHRoYXQuCisgICAgIyAgICB2YWx1ZSA9ICdccicuam9pbihbJ3RoaXMgaXMnLCAnIGEgdGVzdCddKQorICAgICMgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCB2YWx1ZSkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgdmFsdWUpCisgICAgIyAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfUkZDMjA0N192YWx1ZV9kZWNvZGVkKHNlbGYpOgorICAgICAgICB2YWx1ZSA9ICc9P3V0Zi04P3E/dGhpc19pc19hX3Rlc3Q/PScKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAndGhpcyBpcyBhIHRlc3QnKQorCisKK2NsYXNzIFRlc3REYXRlSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRhdGVzdHJpbmcgPSAnU3VuLCAyMyBTZXAgMjAwMSAyMDoxMDo1NSAtMDcwMCcKKyAgICB1dGNvZmZzZXQgPSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9LTcpCisgICAgdHogPSBkYXRldGltZS50aW1lem9uZSh1dGNvZmZzZXQpCisgICAgZHQgPSBkYXRldGltZS5kYXRldGltZSgyMDAxLCA5LCAyMywgMjAsIDEwLCA1NSwgdHppbmZvPXR6KQorCisgICAgZGVmIHRlc3RfcGFyc2VfZGF0ZShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGF0ZXRpbWUsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kYXRldGltZS51dGNvZmZzZXQoKSwgc2VsZi51dGNvZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGF0ZXRpbWUsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X2RhdGVfaGVhZGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5pcXVlRGF0ZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1heF9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3RfcmVzZW50X2RhdGVfaGVhZGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdyZXNlbnQtZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkRhdGVIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYXhfY291bnQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X25vX3ZhbHVlX2lzX2RlZmVjdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGVmZWN0c1swXSwgZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKQorCisgICAgZGVmIHRlc3RfZGF0ZXRpbWVfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmRhdGV0aW1lID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X3NldF9kYXRlX2hlYWRlcl9mcm9tX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ0RhdGUnXSA9IHNlbGYuZHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydEYXRlJ10sIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydEYXRlJ10uZGF0ZXRpbWUsIHNlbGYuZHQpCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdENvbnRlbnRUeXBlSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiBjb250ZW50X3R5cGVfYXNfdmFsdWUoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzKToKKyAgICAgICAgbCA9IGxlbihhcmdzKQorICAgICAgICBwYXJtZGljdCA9IGFyZ3NbMF0gaWYgbD4wIGVsc2Uge30KKyAgICAgICAgZGVmZWN0cyA9ICBhcmdzWzFdIGlmIGw+MSBlbHNlIFtdCisgICAgICAgIGRlY29kZWQgPSAgYXJnc1syXSBpZiBsPjIgYW5kIGFyZ3NbMl0gaXMgbm90IERJVFRPIGVsc2Ugc291cmNlCisgICAgICAgIGhlYWRlciA9ICdDb250ZW50LVR5cGU6JyArICcgJyBpZiBzb3VyY2UgZWxzZSAnJworICAgICAgICBmb2xkZWQgPSBhcmdzWzNdIGlmIGw+MyBlbHNlIGhlYWRlciArIHNvdXJjZSArICdcbicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmNvbnRlbnRfdHlwZSwgY29udGVudF90eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWFpbnR5cGUsIG1haW50eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguc3VidHlwZSwgc3VidHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnBhcmFtcywgcGFybWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCBmb2xkZWQpCisKKyAgICBjb250ZW50X3R5cGVfcGFyYW1zID0geworCisgICAgICAgICMgRXhhbXBsZXMgZnJvbSBSRkMgMjA0NS4KKworICAgICAgICAnUkZDXzIwNDVfMSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpIChQbGFpbiB0ZXh0KScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicpLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30pLAorCisgICAgICAgICMgUkZDIDIwNDUgNS4yIHNheXMgc3ludGFjdGljYWxseSBpbnZhbGlkIHZhbHVlcyBhcmUgdG8gYmUgdHJlYXRlZCBhcworICAgICAgICAjIHRleHQvcGxhaW4uCisKKyAgICAgICAgJ25vX3N1YnR5cGVfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ3RleHQvJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdub19zbGFzaF9pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdqdW5rX3RleHRfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJzxjcmF6eSAic3R1ZmYiPicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAndG9vX21hbnlfc2xhc2hlc19pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZy9mb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgIyBCdXQgdW5rbm93biBuYW1lcyBhcmUgT0suICBXZSBjb3VsZCBtYWtlIG5vbi1JQU5BIG5hbWVzIGEgZGVmZWN0LCBidXQKKyAgICAgICAgIyBieSBub3QgZG9pbmcgc28gd2UgbWFrZSBvdXJzZWx2ZXMgZnV0dXJlIHByb29mLiAgVGhlIGZhY3QgdGhhdCB0aGV5CisgICAgICAgICMgYXJlIHVua25vd24gd2lsbCBiZSBkZXRlY3RhYmxlIGJ5IHRoZSBmYWN0IHRoYXQgdGhleSBkb24ndCBhcHBlYXIgaW4KKyAgICAgICAgIyB0aGUgbWltZV9yZWdpc3RyeS4uLmFuZCB0aGUgYXBwbGljYXRpb24gaXMgZnJlZSB0byBleHRlbmQgdGhhdCBsaXN0CisgICAgICAgICMgdG8gaGFuZGxlIHRoZW0gZXZlbiBpZiB0aGUgY29yZSBsaWJyYXJ5IGRvZXNuJ3QuCisKKyAgICAgICAgJ3Vua25vd25fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ2JhZC9uYW1lcycsCisgICAgICAgICAgICAnYmFkL25hbWVzJywKKyAgICAgICAgICAgICdiYWQnLAorICAgICAgICAgICAgJ25hbWVzJyksCisKKyAgICAgICAgIyBUaGUgY29udGVudCB0eXBlIGlzIGNhc2UgaW5zZW5zaXRpdmUsIGFuZCBDRldTIGlzIGlnbm9yZWQuCisKKyAgICAgICAgJ21peGVkX2Nhc2VfY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ0ltQWdlL0pQZWcnLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJyksCisKKyAgICAgICAgJ3NwYWNlc19pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnICB0ZXh0ICAvICBwbGFpbiAgJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicpLAorCisgICAgICAgICdjZndzX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICcoZm9vKSB0ZXh0IChiYXIpLyhiYXopcGxhaW4oc3R1ZmYpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicpLAorCisgICAgICAgICMgdGVzdCBzb21lIHBhcmFtZXRlcnMgKG1vcmUgdGVzdHMgY291bGQgYmUgYWRkZWQgZm9yIHBhcmFtZXRlcnMKKyAgICAgICAgIyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgY29udGVudCB0eXBlcywgYnV0IHNpbmNlIHBhcmFtZXRlciBwYXJzaW5nIGlzCisgICAgICAgICMgZ2VuZXJpYyB0aGV5IHdvdWxkIGJlIHJlZHVuZGFudCBmb3IgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24pLgorCisgICAgICAgICdjaGFyc2V0X3BhcmFtJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04J30pLAorCisgICAgICAgICdjYXBpdGFsaXplZF9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9IlVTLUFTQ0lJIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ1VTLUFTQ0lJJ30pLAorCisgICAgICAgICd1bmtub3duX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0iZk9vIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ2ZPbyd9KSwKKworICAgICAgICAnY2FwaXRhbGl6ZWRfY2hhcnNldF9wYXJhbV9uYW1lX2FuZF9jb21tZW50JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IChpbnRlcmplY3Rpb24pIENoYXJzZXQ9InV0Zi04IicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04J30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICMgU2hvdWxkIHRoZSBwYXJhbWV0ZXIgbmFtZSBiZSBsb3dlcmNhc2VkIGhlcmU/CisgICAgICAgICAgICAndGV4dC9wbGFpbjsgQ2hhcnNldD0idXRmLTgiJyksCisKKyAgICAgICAgIyBTaW5jZSB0aGlzIGlzIHByZXR0eSBtdWNoIHRoZSB1ci1taW1laGVhZGVyLCB3ZSdsbCBwdXQgYWxsIHRoZSB0ZXN0cworICAgICAgICAjIHRoYXQgZXhlcmNpc2UgdGhlIHBhcmFtZXRlciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGhlcmUuCisgICAgICAgICMKKyAgICAgICAgIyBYWFg6IHF1ZXN0aW9uOiBpcyBtaW5pbWFsIHF1b3RpbmcgcHJlZmVycmVkPworCisgICAgICAgICd1bnF1b3RlZF9wYXJhbV92YWx1ZSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT1mb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnZm9vJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iZm9vIicpLAorCisgICAgICAgICdwYXJhbV92YWx1ZV93aXRoX3RzcGVjaWFscyc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iKGJhcilmb28gYmx1ZSInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnKGJhcilmb28gYmx1ZSd9KSwKKworICAgICAgICAncGFyYW1fd2l0aF9leHRyYV9xdW90ZWRfd2hpdGVzcGFjZSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iICBhICAgICBsb29uZyAgd2F5IFx0IGhvbWUgICAiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J3RpdGxlJzogJyAgYSAgICAgbG9vbmcgIHdheSBcdCBob21lICAgJ30pLAorCisgICAgICAgICdiYWRfcGFyYW1zJzogKAorICAgICAgICAgICAgJ2JsYXJnOyBiYXo7IGJvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydiYXonOiAnJywgJ2Jvbyc6ICcnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMyksCisKKyAgICAgICAgJ3NwYWNlc19hcm91bmRfcGFyYW1fZXF1YWxzJzogKAorICAgICAgICAgICAgJ011bHRpcGFydC9taXhlZDsgYm91bmRhcnkgPSAiQ1BJTVNTTVRQQzA2cDVmM3RHIicsCisgICAgICAgICAgICAnbXVsdGlwYXJ0L21peGVkJywKKyAgICAgICAgICAgICdtdWx0aXBhcnQnLAorICAgICAgICAgICAgJ21peGVkJywKKyAgICAgICAgICAgIHsnYm91bmRhcnknOiAnQ1BJTVNTTVRQQzA2cDVmM3RHJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSJDUElNU1NNVFBDMDZwNWYzdEciJyksCisKKyAgICAgICAgJ3NwYWNlc19hcm91bmRfc2VtaXMnOiAoCisgICAgICAgICAgICAoJ2ltYWdlL2pwZWc7IG5hbWU9IndpYmJsZS5KUEciIDsgeC1tYWMtdHlwZT0iNEE1MDQ1NDciIDsgJworICAgICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yPSI0NzRCNEY0RSInKSwKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAnd2liYmxlLkpQRycsCisgICAgICAgICAgICAgJ3gtbWFjLXR5cGUnOiAnNEE1MDQ1NDcnLAorICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yJzogJzQ3NEI0RjRFJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICgnaW1hZ2UvanBlZzsgbmFtZT0id2liYmxlLkpQRyI7IHgtbWFjLXR5cGU9IjRBNTA0NTQ3IjsgJworICAgICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yPSI0NzRCNEY0RSInKSwKKyAgICAgICAgICAgICMgWFhYOiBpdCBjb3VsZCBiZSB0aGF0IHdlIHdpbGwgZXZlbnR1YWxseSBwcmVmZXIgdG8gZm9sZCBzdGFydGluZworICAgICAgICAgICAgIyBmcm9tIHRoZSBkZWNvZGVkIHZhbHVlLCBpbiB3aGljaCBjYXNlIHRoZXNlIHNwYWNlcyBhbmQgc2ltaWxhcgorICAgICAgICAgICAgIyBzcGFjZXMgaW4gb3RoZXIgdGVzdHMgd2lsbCBiZSB3cm9uZy4KKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBpbWFnZS9qcGVnOyBuYW1lPSJ3aWJibGUuSlBHIiA7ICcKKyAgICAgICAgICAgICAgICAneC1tYWMtdHlwZT0iNEE1MDQ1NDciIDtcbicKKyAgICAgICAgICAgICAnIHgtbWFjLWNyZWF0b3I9IjQ3NEI0RjRFIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdzZW1pc19pbnNpZGVfcXVvdGVzJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWU9IkppbSZhbXA7JmFtcDtKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogJ0ppbSZhbXA7JmFtcDtKaWxsJ30pLAorCisgICAgICAgICdzaW5nbGVfcXVvdGVzX2luc2lkZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iSmltIFwnQm9iXCcgSmlsbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJKaW0gJ0JvYicgSmlsbCJ9KSwKKworICAgICAgICAnZG91YmxlX3F1b3Rlc19pbnNpZGVfcXVvdGVzJzogKAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBuYW1lPSJKaW0gXCJCb2JcIiBKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogJ0ppbSAiQm9iIiBKaWxsJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgbmFtZT0iSmltIFwiQm9iXCIgSmlsbCInKSwKKworICAgICAgICAjIFhYWDogVGhpcyB0ZXN0IHdvcmtzIGV4Y2VwdCBmb3IgdGhlIHJlZm9sZGluZyBvZiB0aGUgaGVhZGVyLiAgSSdsbAorICAgICAgICAjIGRlYWwgd2l0aCB0aGF0IGJ1ZyB3aGVuIEkgZGVhbCB3aXRoIHRoZSBvdGhlciBmb2xkaW5nIGJ1Z3MuCisgICAgICAgICMnbm9uX2FzY2lpX2luX3BhcmFtcyc6ICgKKyAgICAgICAgIyAgICAoJ2Zvb1x4YTcvYmFyOyBiXHhhN3I9dHdvOyAnCisgICAgICAgICMgICAgICAgICdiYXo9dGhyXHhhN2UnLmVuY29kZSgnbGF0aW4tMScpLmRlY29kZSgndXMtYXNjaWknLAorICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpKSwKKyAgICAgICAgIyAgICAnZm9vXHVGRkZEL2JhcicsCisgICAgICAgICMgICAgJ2Zvb1x1RkZGRCcsCisgICAgICAgICMgICAgJ2JhcicsCisgICAgICAgICMgICAgeydiXHVGRkZEcic6ICd0d28nLCAnYmF6JzogJ3Roclx1RkZGRGUnfSwKKyAgICAgICAgIyAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKjMsCisgICAgICAgICMgICAgJ2Zvb++/vS9iYXI7IGLvv71yPSJ0d28iOyBiYXo9InRocu+/vWUiJywKKyAgICAgICAgIyAgICApLAorCisgICAgICAgICMgUkZDIDIyMzEgcGFyYW1ldGVyIHRlc3RzLgorCisgICAgICAgICdyZmMyMjMxX3NlZ21lbnRlZF9ub3JtYWxfdmFsdWVzJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWUqMD0iYWJjIjsgbmFtZSoxPSIuaHRtbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJhYmMuaHRtbCJ9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iYWJjLmh0bWwiJyksCisKKyAgICAgICAgJ3F1b3Rlc19pbnNpZGVfcmZjMjIzMV92YWx1ZSc6ICgKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgYmFyKjA9ImJhelwiZm9vYmFyIjsgYmFyKjE9IlwiYmF6IicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeydiYXInOiAnYmF6ImZvb2JhciJiYXonfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBiYXI9ImJhelwiZm9vYmFyXCJiYXoiJyksCisKKyAgICAgICAgIyBYWFg6IFRoaXMgdGVzdCB3b3JrcyBleGNlcHQgZm9yIHRoZSByZWZvbGRpbmcgb2YgdGhlIGhlYWRlci4gIEknbGwKKyAgICAgICAgIyBkZWFsIHdpdGggdGhhdCBidWcgd2hlbiBJIGRlYWwgd2l0aCB0aGUgb3RoZXIgZm9sZGluZyBidWdzLgorICAgICAgICAjJ25vbl9hc2NpaV9yZmMyMjMxX3ZhbHVlJzogKAorICAgICAgICAjICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsgJworICAgICAgICAjICAgICAidGl0bGUqPXVzLWFzY2lpJ2VuJ1RoaXMlMjBpcyUyMCIKKyAgICAgICAgIyAgICAgJ25vdCUyMGZceGE3bicpLmVuY29kZSgnbGF0aW4tMScpLmRlY29kZSgndXMtYXNjaWknLAorICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAjICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgIyAgICAndGV4dCcsCisgICAgICAgICMgICAgJ3BsYWluJywKKyAgICAgICAgIyAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknLCAndGl0bGUnOiAnVGhpcyBpcyBub3QgZlx1RkZGRG4nfSwKKyAgICAgICAgIyAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgIyAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIjsgdGl0bGU9IlRoaXMgaXMgbm90IGbvv71uIicpLAorCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0Kj1hbnNpLXgzLjQtMTk2OFwnXCd1cy1hc2NpaScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKSwKKworICAgICAgICAjIFRoaXMgZm9sbG93cyB0aGUgUkZDOiBubyBkb3VibGUgcXVvdGVzIGFyb3VuZCBlbmNvZGVkIHZhbHVlcy4KKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9ub19kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjAqPScnVGhpcyUyMGlzJTIwOyIKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjEqPSUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMDsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzICoqKmZ1bioqKiBpcyBpdCBub3QucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdG5hbWUqMCo9XCdcJ1RoaXMlMjBpcyUyMDtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMDtcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBhbHNvIGhhbmRsZSBpdCBpZiB0aGVyZSBhcmUgc3B1cnJpb3VzIGRvdWJsZSBxb3V0ZXMuCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJ1cy1hc2NpaVwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9InVzLWFzY2lpXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX3NpbmdsZV9xdW90ZV9pbnNpZGVfZG91YmxlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsnCisgICAgICAgICAgICAgICAnXHR0aXRsZSowKj0idXMtYXNjaWlcJ2VuXCdUaGlzJTIwaXMlMjByZWFsbHklMjAiOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjI9ImlzblwndCBpdCEiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJywgJ3RpdGxlJzogIlRoaXMgaXMgcmVhbGx5ICoqKmZ1bioqKiBpc24ndCBpdCEifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiOyAnCisgICAgICAgICAgICAgICAndGl0bGU9IlRoaXMgaXMgcmVhbGx5ICoqKmZ1bioqKiBpc25cJ3QgaXQhIicpLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7XG4nCisgICAgICAgICAgICAgJ1x0dGl0bGUqMCo9InVzLWFzY2lpXCdlblwnVGhpcyUyMGlzJTIwcmVhbGx5JTIwIjtcbicKKyAgICAgICAgICAgICAnXHR0aXRsZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdHRpdGxlKjI9ImlzblwndCBpdCEiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luX3ZhbHVlX3dpdGhfY2hhcnNldF9hbmRfbGFuZyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICJcdG5hbWUqMCo9XCJ1cy1hc2NpaSdlbi11cydGcmFuaydzXCI7IG5hbWUqMSo9XCIgRG9jdW1lbnRcIiIpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogIkZyYW5rJ3MgRG9jdW1lbnQifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iRnJhbmtcJ3MgRG9jdW1lbnQiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ2VuLXVzXCdGcmFua1wncyI7XG4nCisgICAgICAgICAgICAgJyBuYW1lKjEqPSIgRG9jdW1lbnQiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luX25vbl9lbmNvZGVkX3ZhbHVlJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgIlx0bmFtZSowPVwidXMtYXNjaWknZW4tdXMnRnJhbmsnc1wiOyBuYW1lKjE9XCIgRG9jdW1lbnRcIiIpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogInVzLWFzY2lpJ2VuLXVzJ0ZyYW5rJ3MgRG9jdW1lbnQifSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJ1cy1hc2NpaVwnZW4tdXNcJ0ZyYW5rXCdzIERvY3VtZW50IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdGcmFua1wncyI7XG4nCisgICAgICAgICAgICAgJyBuYW1lKjE9IiBEb2N1bWVudCJcbicpLAorICAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBOQU1FKjAqPWVuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCcsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ2VuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBOQU1FPSJlbmdsaXNoX2lzX3RoZV9kZWZhdWx0Lmh0bWwiJyksCisKKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9ub19jaGFyc2V0JzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIFhYWDogc2VlIGJlbG93Li4udGhlIGZpcnN0IG5hbWUgbGluZSBoZXJlIHNob3VsZCBiZSAqMCBub3QgKjAqLgorICAgICAgICAncmZjMjIzMV9wYXJ0bHlfZW5jb2RlZCc6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfcGFydGx5X2VuY29kZWRfMic6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwaXMgaXQucGRmJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMGlzIGl0LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfdW5rbm93bl9jaGFyc2V0X3RyZWF0ZWRfYXNfYXNjaWknOiAoCisgICAgICAgICAgICAidGV4dC9wbGFpbjsgbmFtZSowKj1ib2d1cyd4eCdhc2NpaV9pc190aGVfZGVmYXVsdCIsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ2FzY2lpX2lzX3RoZV9kZWZhdWx0J30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJhc2NpaV9pc190aGVfZGVmYXVsdCInKSwKKworICAgICAgICAncmZjMjIzMV9iYWRfY2hhcmFjdGVyX2luX2NoYXJzZXRfcGFyYW1ldGVyX3ZhbHVlJzogKAorICAgICAgICAgICAgInRleHQvcGxhaW47IGNoYXJzZXQqPWFzY2lpJyd1dGYtOCVFMiU4MCU5RCIsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04XHVGRkZEXHVGRkZEXHVGRkZEJ30sCisgICAgICAgICAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04XHVGRkZEXHVGRkZEXHVGRkZEIicpLAorCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfdGhlbl91bmVuY29kZWRfc2VnbWVudHMnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJ1cy1hc2NpaVwnZW4tdXNcJ015IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxPSIgRG9jdW1lbnQiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogJ015IERvY3VtZW50IEZvciBZb3UnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9Ik15IERvY3VtZW50IEZvciBZb3UiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxPSIgRG9jdW1lbnQiO1x0bmFtZSoyPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIE15IHJlYWRpbmcgb2YgdGhlIFJGQyBpcyB0aGF0IHRoaXMgaXMgYW4gaW52YWxpZCBoZWFkZXIuICBUaGUgUkZDCisgICAgICAgICMgc2F5cyB0aGF0IGlmIGNoYXJzZXQgYW5kIGxhbmd1YWdlIGluZm9ybWF0aW9uIGlzIGdpdmVuLCB0aGUgZmlyc3QKKyAgICAgICAgIyBzZWdtZW50ICptdXN0KiBiZSBlbmNvZGVkLgorICAgICAgICAncmZjMjIzMV91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowPXVzLWFzY2lpXCdlbi11c1wnTXk7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogJ015IERvY3VtZW50IEZvciBZb3UnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iTXkgRG9jdW1lbnQgRm9yIFlvdSInLAorICAgICAgICAgICAgKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0bmFtZSowPXVzLWFzY2lpJ2VuLXVzJ015O1x0IgorICAgICAgICAgICAgICAgICMgWFhYOiB0aGUgbmV3bGluZSBpcyBpbiB0aGUgd3JvbmcgcGxhY2UsIGNvbWUgYmFjayBhbmQgZml4CisgICAgICAgICAgICAgICAgIyB0aGlzIHdoZW4gdGhlIHJlc3Qgb2YgdGVzdHMgcGFzcy4KKyAgICAgICAgICAgICAgICAnbmFtZSoxKj0iIERvY3VtZW50IlxuOycKKyAgICAgICAgICAgICAnXHRuYW1lKjIqPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIFhYWDogSSB3b3VsZCBzYXkgdGhpcyBvbmUgc2hvdWxkIGRlZmF1bHQgdG8gYXNjaWkvZW4gZm9yIHRoZQorICAgICAgICAjICJlbmNvZGVkIiBzZWdtZW50LCBzaW5jZSB0aGUgdGhlIGZpcnN0IHNlZ21lbnQgaXMgbm90IGVuY29kZWQgYW5kIGlzCisgICAgICAgICMgaW4gZG91YmxlIHF1b3RlcywgbWFraW5nIHRoZSB2YWx1ZSBhIHZhbGlkIG5vbi1lbmNvZGVkIHN0cmluZy4gIFRoZQorICAgICAgICAjIG9sZCBwYXJzZXIgZGVjb2RlcyB0aGlzIGp1c3QgbGlrZSB0aGUgcHJldmlvdXMgY2FzZSwgd2hpY2ggbWF5IGJlIHRoZQorICAgICAgICAjIGJldHRlciBQb3N0ZWwgcnVsZSwgYnV0IGNvdWxkIGVxdWFsbHkgcmVzdWx0IGluIGJvcmtpbmcgaGVhZGVycyB0aGF0CisgICAgICAgICMgaW50ZW50aWFsbHkgaGF2ZSBxdW90ZWQgcXVvdGVzIGluIHRoZW0uICBXZSBjb3VsZCBnZXQgdGhpcyA5OCUgcmlnaHQKKyAgICAgICAgIyBpZiB3ZSB0cmVhdCBpdCBhcyBhIHF1b3RlZCBzdHJpbmcgKnVubGVzcyogaXQgbWF0Y2hlcyB0aGUKKyAgICAgICAgIyBjaGFyc2V0J2xhbmcndmFsdWUgcGF0dGVybiBleGFjdGx5ICphbmQqIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQorICAgICAgICAjIGVuY29kZWQgc2VnbWVudC4gIEltcGxlbWVudGluZyB0aGF0IGFsZ29yaXRobSB3aWxsIHJlcXVpcmUgc29tZQorICAgICAgICAjIHJlZmFjdG9yaW5nLCBzbyBJIGhhdmVuJ3QgZG9uZSBpdCAoeWV0KS4KKworICAgICAgICAncmZjMjIzMV9xb3V0ZWRfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICdcdG5hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogInVzLWFzY2lpJ2VuLXVzJ015IERvY3VtZW50IEZvciBZb3UifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0idXMtYXNjaWlcJ2VuLXVzXCdNeSBEb2N1bWVudCBGb3IgWW91IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iIERvY3VtZW50IjtcdG5hbWUqMio9IiBGb3IgWW91IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RDb250ZW50VHJhbnNmZXJFbmNvZGluZyhUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgY3RlX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBjdGUsCisgICAgICAgICAgICAgICAgICAgICAqYXJncyk6CisgICAgICAgIGwgPSBsZW4oYXJncykKKyAgICAgICAgZGVmZWN0cyA9ICBhcmdzWzBdIGlmIGw+MCBlbHNlIFtdCisgICAgICAgIGRlY29kZWQgPSAgYXJnc1sxXSBpZiBsPjEgYW5kIGFyZ3NbMV0gaXMgbm90IERJVFRPIGVsc2Ugc291cmNlCisgICAgICAgIGhlYWRlciA9ICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOicgKyAnICcgaWYgc291cmNlIGVsc2UgJycKKyAgICAgICAgZm9sZGVkID0gYXJnc1syXSBpZiBsPjIgZWxzZSBoZWFkZXIgKyBzb3VyY2UgKyAnXG4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguY3RlLCBjdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCBmb2xkZWQpCisKKyAgICBjdGVfcGFyYW1zID0geworCisgICAgICAgICdSRkNfMjE4M18xJzogKAorICAgICAgICAgICAgJ2Jhc2U2NCcsCisgICAgICAgICAgICAnYmFzZTY0JywpLAorCisgICAgICAgICdub192YWx1ZSc6ICgKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJzdiaXQnLAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0sCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOlxuJywKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ2p1bmtfYWZ0ZXJfY3RlJzogKAorICAgICAgICAgICAgJzdiaXQgYW5kIGEgYnVuY2ggbW9yZScsCisgICAgICAgICAgICAnN2JpdCcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0Q29udGVudERpc3Bvc2l0aW9uKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiBjb250ZW50X2Rpc3BfYXNfdmFsdWUoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncyk6CisgICAgICAgIGwgPSBsZW4oYXJncykKKyAgICAgICAgcGFybWRpY3QgPSBhcmdzWzBdIGlmIGw+MCBlbHNlIHt9CisgICAgICAgIGRlZmVjdHMgPSAgYXJnc1sxXSBpZiBsPjEgZWxzZSBbXQorICAgICAgICBkZWNvZGVkID0gIGFyZ3NbMl0gaWYgbD4yIGFuZCBhcmdzWzJdIGlzIG5vdCBESVRUTyBlbHNlIHNvdXJjZQorICAgICAgICBoZWFkZXIgPSAnQ29udGVudC1EaXNwb3NpdGlvbjonICsgJyAnIGlmIHNvdXJjZSBlbHNlICcnCisgICAgICAgIGZvbGRlZCA9IGFyZ3NbM10gaWYgbD4zIGVsc2UgaGVhZGVyICsgc291cmNlICsgJ1xuJworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmNvbnRlbnRfZGlzcG9zaXRpb24sIGNvbnRlbnRfZGlzcG9zaXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5wYXJhbXMsIHBhcm1kaWN0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgZm9sZGVkKQorCisgICAgY29udGVudF9kaXNwX3BhcmFtcyA9IHsKKworICAgICAgICAjIEV4YW1wbGVzIGZyb20gUkZDIDIxODMuCisKKyAgICAgICAgJ1JGQ18yMTgzXzEnOiAoCisgICAgICAgICAgICAnaW5saW5lJywKKyAgICAgICAgICAgICdpbmxpbmUnLCksCisKKyAgICAgICAgJ1JGQ18yMTgzXzInOiAoCisgICAgICAgICAgICAoJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPWdlbm9tZS5qcGVnOycKKyAgICAgICAgICAgICAnICBtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCI7JyksCisgICAgICAgICAgICAnYXR0YWNobWVudCcsCisgICAgICAgICAgICB7J2ZpbGVuYW1lJzogJ2dlbm9tZS5qcGVnJywKKyAgICAgICAgICAgICAnbW9kaWZpY2F0aW9uLWRhdGUnOiAnV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAoJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPSJnZW5vbWUuanBlZyI7ICcKKyAgICAgICAgICAgICAgICAgJ21vZGlmaWNhdGlvbi1kYXRlPSJXZWQsIDEyIEZlYiAxOTk3IDE2OjI5OjUxIC0wNTAwIicpLAorICAgICAgICAgICAgKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1nZW5vbWUuanBlZztcbicKKyAgICAgICAgICAgICAnICBtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCI7XG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ25vX3ZhbHVlJzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSwKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb246XG4nKSwKKworICAgICAgICAnaW52YWxpZF92YWx1ZSc6ICgKKyAgICAgICAgICAgICdhYi4vaycsCisgICAgICAgICAgICAnYWIuJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ2ludmFsaWRfdmFsdWVfd2l0aF9wYXJhbXMnOiAoCisgICAgICAgICAgICAnYWIuL2s7IGZpbGVuYW1lPSJmb28iJywKKyAgICAgICAgICAgICdhYi4nLAorICAgICAgICAgICAgeydmaWxlbmFtZSc6ICdmb28nfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RNSU1FVmVyc2lvbkhlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgdmVyc2lvbl9zdHJpbmdfYXNfTUlNRV9WZXJzaW9uKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlY3RzKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ01JTUUtVmVyc2lvbicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudmVyc2lvbiwgdmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1ham9yLCBtYWpvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1pbm9yLCBtaW5vcikKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBpZiBzb3VyY2U6CisgICAgICAgICAgICBzb3VyY2UgPSAnICcgKyBzb3VyY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdNSU1FLVZlcnNpb246JyArIHNvdXJjZSArICdcbicpCisKKyAgICB2ZXJzaW9uX3N0cmluZ19wYXJhbXMgPSB7CisKKyAgICAgICAgIyBFeGFtcGxlcyBmcm9tIHRoZSBSRkMuCisKKyAgICAgICAgJ1JGQ18yMDQ1XzEnOiAoCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzMnOiAoCisgICAgICAgICAgICAnKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpIDEuMCcsCisgICAgICAgICAgICAnKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpIDEuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV80JzogKAorICAgICAgICAgICAgJzEuKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpMCcsCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgIyBPdGhlciB2YWxpZCB2YWx1ZXMuCisKKyAgICAgICAgJzFfMSc6ICgKKyAgICAgICAgICAgICcxLjEnLAorICAgICAgICAgICAgJzEuMScsCisgICAgICAgICAgICAnMS4xJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICcyXzEnOiAoCisgICAgICAgICAgICAnMi4xJywKKyAgICAgICAgICAgICcyLjEnLAorICAgICAgICAgICAgJzIuMScsCisgICAgICAgICAgICAyLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnd2hpdGVzcGFjZSc6ICgKKyAgICAgICAgICAgICcxIC4wJywKKyAgICAgICAgICAgICcxIC4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ2xlYWRpbmdfdHJhaWxpbmdfd2hpdGVzcGFjZV9pZ25vcmVkJzogKAorICAgICAgICAgICAgJyAgMS4wICAnLAorICAgICAgICAgICAgJyAgMS4wICAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAjIFJlY292ZXJhYmxlIGludmFsaWQgdmFsdWVzLiAgV2UgY2FuIHJlY292ZXIgaGVyZSBvbmx5IGJlY2F1c2Ugd2UKKyAgICAgICAgIyBhbHJlYWR5IGhhdmUgYSB2YWxpZCB2YWx1ZSBieSB0aGUgdGltZSB3ZSBlbmNvdW50ZXIgdGhlIGdhcmJhZ2UuCisgICAgICAgICMgQW55d2hlcmUgZWxzZSwgYW5kIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGdhcmJhZ2UgZW5kcy4KKworICAgICAgICAnbm9uX2NvbW1lbnRfZ2FyYmFnZV9hZnRlcic6ICgKKyAgICAgICAgICAgICcxLjAgPGFiYz4nLAorICAgICAgICAgICAgJzEuMCA8YWJjPicsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgIyBVbnJlY292ZXJhYmxlIGludmFsaWQgdmFsdWVzLiAgV2UgKmNvdWxkKiBhcHBseSBtb3JlIGhldXJpc3RpY3MgdG8KKyAgICAgICAgIyBnZXQgc29tZWluZyBvdXQgb2YgdGhlIGZpcnN0IHR3bywgYnV0IGRvaW5nIHNvIGlzIG5vdCB3b3J0aCB0aGUKKyAgICAgICAgIyBlZmZvcnQuCisKKyAgICAgICAgJ25vbl9jb21tZW50X2dhcmJhZ2VfYmVmb3JlJzogKAorICAgICAgICAgICAgJzxhYmM+IDEuMCcsCisgICAgICAgICAgICAnPGFiYz4gMS4wJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdub25fY29tbWVudF9nYXJiYWdlX2luc2lkZSc6ICgKKyAgICAgICAgICAgICcxLjxhYmM+MCcsCisgICAgICAgICAgICAnMS48YWJjPjAnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ3R3b19wZXJpb2RzJzogKAorICAgICAgICAgICAgJzEuLjAnLAorICAgICAgICAgICAgJzEuLjAnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJzJfeCc6ICgKKyAgICAgICAgICAgICcyLngnLAorICAgICAgICAgICAgJzIueCcsCisgICAgICAgICAgICBOb25lLCAgIyBUaGlzIGNvdWxkIGJlIDIsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBtYWtlIGl0IE5vbmUuCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdmb28nOiAoCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgICdmb28nLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ21pc3NpbmcnOiAoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0pLAorCisgICAgICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0QWRkcmVzc0hlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBleGFtcGxlX3BhcmFtcyA9IHsKKworICAgICAgICAnZW1wdHknOgorICAgICAgICAgICAgKCc8PicsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2FkZHJlc3Nfb25seSc6CisgICAgICAgICAgICAoJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAnemlwcHlAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJ3ppcHB5JywKKyAgICAgICAgICAgICAncGluaGVhZC5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICduYW1lX2FuZF9hZGRyZXNzJzoKKyAgICAgICAgICAgICgnWmFwaHJvZCBCZWJsZWJydXggPHppcHB5QHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4IDx6aXBweUBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCcsCisgICAgICAgICAgICAgJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnemlwcHknLAorICAgICAgICAgICAgICdwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgICgnWmFwaHJvZCBCZWJsZWJydXggPCJmb28gYmFyIkBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCA8ImZvbyBiYXIiQHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4JywKKyAgICAgICAgICAgICAnImZvbyBiYXIiQHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnZm9vIGJhcicsCisgICAgICAgICAgICAgJ3BpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX3BhcmVuc19pbl9uYW1lJzoKKyAgICAgICAgICAgIChyJyJBIFwoU3BlY2lhbFwpIFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJyJBIChTcGVjaWFsKSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgICdBIChTcGVjaWFsKSBQZXJzb24nLAorICAgICAgICAgICAgICdwZXJzb25AZG9tLmFpbicsCisgICAgICAgICAgICAgJ3BlcnNvbicsCisgICAgICAgICAgICAgJ2RvbS5haW4nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdxdW90ZWRfYmFja3NsYXNoZXNfaW5fbmFtZSc6CisgICAgICAgICAgICAociciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICByJyJBcnRodXIgXFxCYWNrc2xhc2hcXCBGb29iYXIiIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgIHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicsCisgICAgICAgICAgICAgJ3BlcnNvbkBkb20uYWluJywKKyAgICAgICAgICAgICAncGVyc29uJywKKyAgICAgICAgICAgICAnZG9tLmFpbicsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ25hbWVfd2l0aF9kb3QnOgorICAgICAgICAgICAgKCdKb2huIFguIERvZSA8anhkQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgJyJKb2huIFguIERvZSIgPGp4ZEBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgICdKb2huIFguIERvZScsCisgICAgICAgICAgICAgJ2p4ZEBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ2p4ZCcsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX3N0cmluZ3NfaW5fbG9jYWxfcGFydCc6CisgICAgICAgICAgICAoJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZScsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnZXNjYXBlZF9xdW90ZWRfc3RyaW5nc19pbl9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgIChyJyJcImV4YW1wbGVcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgciciXCJleGFtcGxlXCIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgIHInIlwiZXhhbXBsZVwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICByJyJleGFtcGxlIiBleGFtcGxlJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2VzY2FwZWRfZXNjYXBlc19pbl9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgIChyJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjUsCisgICAgICAgICAgICAgciciXFxleGFtcGxlXFxcXCBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgciciXFxleGFtcGxlXFxcXCBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgcidcZXhhbXBsZVxcIGV4YW1wbGUnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnc3BhY2VzX2luX3VucXVvdGVkX2xvY2FsX3BhcnRfY29sbGFwc2VkJzoKKyAgICAgICAgICAgICgnbWVyd29rICB3b2sgIEBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgICcibWVyd29rIHdvayJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICcibWVyd29rIHdvayJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdtZXJ3b2sgd29rJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdzcGFjZXNfYXJvdW5kX2RvdHNfaW5fbG9jYWxfcGFydF9yZW1vdmVkJzoKKyAgICAgICAgICAgICgnbWVyd29rLiB3b2sgLiAgd29rQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAnbWVyd29rLndvay53b2tAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICdtZXJ3b2sud29rLndva0BleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ21lcndvay53b2sud29rJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgIH0KKworICAgICAgICAjIFhYWDogTmVlZCBtYW55IG1vcmUgZXhhbXBsZXMsIGFuZCBpbiBwYXJ0aWN1bGFyIHNvbWUgd2l0aCBuYW1lcyBpbgorICAgICAgICAjIHRyYWlsaW5nIGNvbW1lbnRzLCB3aGljaCBhcmVuJ3QgY3VycmVudGx5IGhhbmRsZWQuICBjb21tZW50cyBpbgorICAgICAgICAjIGdlbmVyYWwgYXJlIG5vdCBoYW5kbGVkIHlldC4KKworICAgIGRlZiBleGFtcGxlX2FzX2FkZHJlc3Moc2VsZiwgc291cmNlLCBkZWZlY3RzLCBkZWNvZGVkLCBkaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3NwZWMsIHVzZXJuYW1lLCBkb21haW4sIGNvbW1lbnQpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgYSA9IGguYWRkcmVzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFthXSwgbGlzdChoLmdyb3Vwc1swXS5hZGRyZXNzZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFthXSwgbGlzdChoLmFkZHJlc3NlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsIGRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgYWRkcl9zcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsIHVzZXJuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCBkb21haW4pCisgICAgICAgICMgWFhYOiB3ZSBoYXZlIG5vIGNvbW1lbnQgc3VwcG9ydCB5ZXQuCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKGEuY29tbWVudCwgY29tbWVudCkKKworICAgIGRlZiBleGFtcGxlX2FzX2dyb3VwKHNlbGYsIHNvdXJjZSwgZGVmZWN0cywgZGVjb2RlZCwgZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfc3BlYywgdXNlcm5hbWUsIGRvbWFpbiwgY29tbWVudCk6CisgICAgICAgIHNvdXJjZSA9ICdmb286IHt9OycuZm9ybWF0KHNvdXJjZSkKKyAgICAgICAgZ2RlY29kZWQgPSAnZm9vOiB7fTsnLmZvcm1hdChkZWNvZGVkKSBpZiBkZWNvZGVkIGVsc2UgJ2Zvbzo7JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZ2RlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1swXS5hZGRyZXNzZXMsIGguYWRkcmVzc2VzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgMSkKKyAgICAgICAgYSA9IGguYWRkcmVzc2VzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCBkaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsIGFkZHJfc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgZG9tYWluKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2FkZHJlc3NfbGlzdChzZWxmKToKKyAgICAgICAgdmFsdWUgPSAoJ0ZyZWQgPGRpbnNkYWxlQHB5dGhvbi5vcmc+LCBmb29AZXhhbXBsZS5jb20sICcKKyAgICAgICAgICAgICAgICAgICAgJyJIYXJyeSBXLiBIYXN0aW5ncyIgPGhhc3R5QGV4YW1wbGUuY29tPicpCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgMykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzW2ldLmFkZHJlc3Nlc1swXSwgaC5hZGRyZXNzZXNbaV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzWzBdKSwgJ0ZyZWQgPGRpbnNkYWxlQHB5dGhvbi5vcmc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbMV0pLCAnZm9vQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbMl0pLAorICAgICAgICAgICAgJyJIYXJyeSBXLiBIYXN0aW5ncyIgPGhhc3R5QGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5hZGRyZXNzZXNbMl0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0hhcnJ5IFcuIEhhc3RpbmdzJykKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfYWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICBleGFtcGxlcyA9IGxpc3Qoc2VsZi5leGFtcGxlX3BhcmFtcy52YWx1ZXMoKSkKKyAgICAgICAgc291cmNlID0gKCdkdW1teSBsaXN0OjssIGFub3RoZXI6IChlbXB0eSk7LCcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbOjRdXSkgKyAnLCAnICsKKyAgICAgICAgICAgICAgICAgciciQSBcImxpc3RcIiI6ICcgKworICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbNDo2XV0pICsgJzssJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFswXSBmb3IgeCBpbiBleGFtcGxlc1s2Ol1dKQorICAgICAgICAgICAgKQorICAgICAgICAjIFhYWDogdGhlIGZhY3QgdGhhdCAoZW1wdHkpIGRpc2FwcGVhcnMgaGVyZSBpcyBhIHBvdGVudGlhbCBBUEkgZGVzaWduCisgICAgICAgICMgYnVnLiAgV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSB3YXkgdG8gcHJlc2VydmUgY29tbWVudHMuCisgICAgICAgIGV4cGVjdGVkID0gKCdkdW1teSBsaXN0OjssIGFub3RoZXI6OywgJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s6NF1dKSArICcsICcgKworICAgICAgICAgICAgICAgICByJyJBIFwibGlzdFwiIjogJyArCisgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s0OjZdXSkgKyAnOywgJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s2Ol1dKQorICAgICAgICAgICAgKQorCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnNwbGl0KCcsJyksIGV4cGVjdGVkLnNwbGl0KCcsJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZ3JvdXBzKSwgNyArIGxlbihleGFtcGxlcykgLSA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzBdLmRpc3BsYXlfbmFtZSwgJ2R1bW15IGxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzFdLmRpc3BsYXlfbmFtZSwgJ2Fub3RoZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzZdLmRpc3BsYXlfbmFtZSwgJ0EgImxpc3QiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5hZGRyZXNzZXMpLCBsZW4oZXhhbXBsZXMpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGguZ3JvdXBzW2krMl0uZGlzcGxheV9uYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5ncm91cHNbaSsyXS5hZGRyZXNzZXNbMF0pLCBleGFtcGxlc1tpXVsyXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNywgNyArIGxlbihleGFtcGxlcykgLSA2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGguZ3JvdXBzW2ldLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguZ3JvdXBzW2ldLmFkZHJlc3Nlc1swXSksIGV4YW1wbGVzW2ktMV1bMl0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihleGFtcGxlcykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbaV0pLCBleGFtcGxlc1tpXVsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5hZGRyZXNzZXNbaV0uYWRkcl9zcGVjLCBleGFtcGxlc1tpXVs0XSkKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgJ2FiY0B4eXouY29tJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmFkZHJlc3MgPSAnZm9vJworCisgICAgZGVmIHRlc3RfYWRkcmVzc2VzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5hZGRyZXNzZXMgPSAnZm9vJworCisgICAgZGVmIHRlc3RfZ3JvdXBzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5ncm91cHMgPSAnZm9vJworCisgICAgZGVmIHRlc3RfYWRkcmVzc2VzX3R5cGVzKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAnbWUgPHdob0BleGFtcGxlLmNvbT4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguYWRkcmVzc2VzLCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguYWRkcmVzc2VzWzBdLCBBZGRyZXNzKQorCisgICAgZGVmIHRlc3RfZ3JvdXBzX3R5cGVzKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAnbWUgPHdob0BleGFtcGxlLmNvbT4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZ3JvdXBzLCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZ3JvdXBzWzBdLCBHcm91cCkKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0FkZHJlc3Moc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIEFkZHJlc3MoJ21lJywgJ2ZvbycsICdleGFtcGxlLmNvbScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdtZSA8Zm9vQGV4YW1wbGUuY29tPicpCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9BZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIFtBZGRyZXNzKCdtZScsICdmb28nLCAnZXhhbXBsZS5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3lvdScsICdiYXInLCAnZXhhbXBsZS5jb20nKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ21lIDxmb29AZXhhbXBsZS5jb20+LCB5b3UgPGJhckBleGFtcGxlLmNvbT4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fQWRkcmVzc19hbmRfR3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgW0FkZHJlc3MoJ21lJywgJ2ZvbycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAoJ2JpbmcnLCBbQWRkcmVzcygnZml6JywgJ3onLCAnYi5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3ppZicsICdmJywgJ2MuY29tJyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3lvdScsICdiYXInLCAnZXhhbXBsZS5jb20nKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ21lIDxmb29AZXhhbXBsZS5jb20+LCBiaW5nOiBmaXogPHpAYi5jb20+LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ppZiA8ZkBjLmNvbT47LCB5b3UgPGJhckBleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTQwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAndG86IG1lIDxmb29AZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAgICAgJyBiaW5nOiBmaXogPHpAYi5jb20+LCB6aWYgPGZAYy5jb20+OyxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgeW91IDxiYXJAZXhhbXBsZS5jb20+XG4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fR3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgW0dyb3VwKCdiaW5nJywgW0FkZHJlc3MoJ2ZpeicsICd6JywgJ2IuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd6aWYnLCAnZicsICdjLmNvbScpXSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdiaW5nOiBmaXogPHpAYi5jb20+LCB6aWYgPGZAYy5jb20+OycpCisKKworY2xhc3MgVGVzdEFkZHJlc3NBbmRHcm91cChUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdF9hdHRyX3JvKHNlbGYsIG9iaiwgYXR0cik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2V0YXR0cihvYmosIGF0dHIsICdmb28nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19kaXNwbGF5X25hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAnZGlzcGxheV9uYW1lJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfdXNlcm5hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAndXNlcm5hbWUnKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19kb21haW5fcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAnZG9tYWluJykKKworICAgIGRlZiB0ZXN0X2dyb3VwX2Rpc3BsYXlfbmFtZV9ybyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKEdyb3VwKCdmb28nKSwgJ2Rpc3BsYXlfbmFtZScpCisKKyAgICBkZWYgdGVzdF9ncm91cF9hZGRyZXNzZXNfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhHcm91cCgnZm9vJyksICdhZGRyZXNzZXMnKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19mcm9tX3VzZXJuYW1lX2RvbWFpbihzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnZm9vIDxiYXJAYmF6PicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2Zyb21fYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnZm9vIDxiYXJAYmF6PicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX3dpdGhfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcyhhZGRyX3NwZWM9J2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X251bGxfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICc8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnPD4nKQorCisgICAgZGVmIHRlc3RfZG9tYWluX29ubHkoc2VsZik6CisgICAgICAgICMgVGhpcyBpc24ndCByZWFsbHkgYSB2YWxpZCBhZGRyZXNzLgorICAgICAgICBhID0gQWRkcmVzcyhkb21haW49J2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnQGJ1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ0BidXp6JykKKworICAgIGRlZiB0ZXN0X3VzZXJuYW1lX29ubHkoc2VsZik6CisgICAgICAgICMgVGhpcyBpc24ndCByZWFsbHkgYSB2YWxpZCBhZGRyZXNzLgorICAgICAgICBhID0gQWRkcmVzcyh1c2VybmFtZT0nYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdidXp6JykKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfbmFtZV9vbmx5KHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICc8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnYnV6eiA8PicpCisKKyAgICBkZWYgdGVzdF9xdW90aW5nKHNlbGYpOgorICAgICAgICAjIElkZWFsbHkgd2UnZCBjaGVjayBldmVyeSBzcGVjaWFsIGluZGl2aWR1YWxseSwgYnV0IEknbSBub3QgdXAgZm9yCisgICAgICAgICMgd3JpdGluZyB0aGF0IG1hbnkgdGVzdHMuCisgICAgICAgIGEgPSBBZGRyZXNzKCdTYXJhIEouJywgJ2JhZCBuYW1lJywgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ1NhcmEgSi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYWQgbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICciYmFkIG5hbWUiQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICciU2FyYSBKLiIgPCJiYWQgbmFtZSJAZXhhbXBsZS5jb20+JykKKworICAgIGRlZiB0ZXN0X2lsOG4oc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCfDiXJpYycsICd3b2snLCAnZXjDoG1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ8OJcmljJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnd29rJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2V4w6BtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICd3b2tAZXjDoG1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICfDiXJpYyA8d29rQGV4w6BtcGxlLmNvbT4nKQorCisgICAgIyBYWFg6IHRoZXJlIGlzIGFuIEFQSSBkZXNpZ24gaXNzdWUgdGhhdCBuZWVkcyB0byBiZSBzb2x2ZWQgaGVyZS4KKyAgICAjZGVmIHRlc3Rfbm9uX2FzY2lpX3VzZXJuYW1lX3JhaXNlcyhzZWxmKToKKyAgICAjICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgIyAgICAgICAgQWRkcmVzcygnZm9vJywgJ3fFkWsnLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpX3VzZXJuYW1lX2luX2FkZHJfc3BlY19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9J3fFkWtAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX3VzZXJuYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgdXNlcm5hbWU9J2JpbmcnLCBhZGRyX3NwZWM9J2JhckBiYXonKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX2RvbWFpbl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIGRvbWFpbj0nYmluZycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2FkZHJfc3BlY19hbmRfdXNlcm5hbWVfYW5kX2RvbWFpbl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIHVzZXJuYW1lPSdib25nJywgZG9tYWluPSdiaW5nJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X3NwYWNlX2luX2FkZHJfc3BlY191c2VybmFtZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9ImJhZCBuYW1lQGV4YW1wbGUuY29tIikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyX3NlcGNfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSJuYW1lQGV4W11hbXBsZS5jb20iKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZ3JvdXAoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnZm9vOjsnKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZ3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28nLCBhZGRyZXNzZXM9W10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2Zvbzo7JykKKworICAgIGRlZiB0ZXN0X251bGxfZ3JvdXAoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ05vbmU6OycpCisKKyAgICBkZWYgdGVzdF9ncm91cF93aXRoX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgYWRkcnMgPSBbQWRkcmVzcygnYicsICdiJywgJ2MnKSwgQWRkcmVzcygnYScsICdiJywnYycpXQorICAgICAgICBnID0gR3JvdXAoJ2ZvbycsIGFkZHJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoYWRkcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2ZvbzogYiA8YkBjPiwgYSA8YkBjPjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9hZGRyZXNzZXNfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhZGRycyA9IFtBZGRyZXNzKCdiJywgJ2InLCAnYycpLCBBZGRyZXNzKCdhJywgJ2InLCdjJyldCisgICAgICAgIGcgPSBHcm91cChhZGRyZXNzZXM9YWRkcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZShhZGRycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnTm9uZTogYiA8YkBjPiwgYSA8YkBjPjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9vbmVfYWRkcmVzc19ub19kaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGFkZHJzID0gW0FkZHJlc3MoJ2InLCAnYicsICdjJyldCisgICAgICAgIGcgPSBHcm91cChhZGRyZXNzZXM9YWRkcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZShhZGRycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnYiA8YkBjPicpCisKKyAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWVfcXVvdGluZyhzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28uYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2Zvby5iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJyJmb28uYmFyIjo7JykKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfbmFtZV9ibGFua3Nfbm90X3F1b3RlZChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbyBiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2ZvbyBiYXI6OycpCisKKyAgICBkZWYgdGVzdF9zZXRfbWVzc2FnZV9oZWFkZXJfZnJvbV9hZGRyZXNzKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnZm9vJywgJ2JhcicsICdleGFtcGxlLmNvbScpCisgICAgICAgIG0gPSBNZXNzYWdlKHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgbVsnVG8nXSA9IGEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLCAnZm9vIDxiYXJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLmFkZHJlc3NlcywgKGEsKSkKKworICAgIGRlZiB0ZXN0X3NldF9tZXNzYWdlX2hlYWRlcl9mcm9tX2dyb3VwKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2ZvbyBiYXInKQorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ1RvJ10gPSBnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXSwgJ2ZvbyBiYXI6OycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXS5hZGRyZXNzZXMsIGcuYWRkcmVzc2VzKQorCisKK2NsYXNzIFRlc3RGb2xkaW5nKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiB0ZXN0X3Nob3J0X3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJqZWN0OiB0aGlzIGlzIGEgdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2xvbmdfdW5zdHJ1Y3R1cmVkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICdUaGlzIGlzIGEgbG9uZyBoZWFkZXIgJworICAgICAgICAgICAgJ2xpbmUgdGhhdCB3aWxsIG5lZWQgdG8gYmUgZm9sZGVkIGludG8gdHdvIGxpbmVzICcKKyAgICAgICAgICAgICdhbmQgd2lsbCBkZW1vbnN0cmF0ZSBiYXNpYyBmb2xkaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdTdWJqZWN0OiBUaGlzIGlzIGEgbG9uZyBoZWFkZXIgbGluZSB0aGF0IHdpbGwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGJlIGZvbGRlZCBpbnRvIHR3byBsaW5lc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgJyBhbmQgd2lsbCBkZW1vbnN0cmF0ZSBiYXNpYyBmb2xkaW5nXG4nKQorCisgICAgZGVmIHRlc3RfdW5zdHJ1Y3R1cmVkX3Nob3J0X21heF9saW5lX2xlbmd0aChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpcyBpcyBhIHNob3J0IGhlYWRlciAnCisgICAgICAgICAgICAndGhhdCB3aWxsIGJlIGZvbGRlZCBhbnl3YXknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MjApKSwKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgICAgU3ViamVjdDogdGhpcyBpcyBhCisgICAgICAgICAgICAgICAgIHNob3J0IGhlYWRlciB0aGF0CisgICAgICAgICAgICAgICAgIHdpbGwgYmUgZm9sZGVkCisgICAgICAgICAgICAgICAgIGFueXdheQorICAgICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF9zaW5nbGVfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksICdTdWJqZWN0OiB0ZXN0XG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfc2hvcnQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3Rlc3QgdGVzdCB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdTdWJqZWN0OiB0ZXN0IHRlc3QgdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfb3Zlcmxvbmdfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmEnCisgICAgICAgICAgICAnc2luZ2xld29yZHRoYXR3b250Zml0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTIwKSksCisgICAgICAgICAgICAnU3ViamVjdDogdGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmFzaW5nbGV3b3JkdGhhdHdvbnRmaXRcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX3R3b19vdmVybG9uZ193b3JkcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmEnCisgICAgICAgICAgICAnc2luZ2xld29yZHRoYXR3b250Zml0IHBsdXNhbm90aGVydmVyeWxvbmd3b3JkdGhhdHdvbnRmaXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MjApKSwKKyAgICAgICAgICAgICdTdWJqZWN0OiB0aGlzaXNhdmVyeWxvbmdsaW5lY29uc2lzdGluZ29mYXNpbmdsZXdvcmR0aGF0d29udGZpdFxuJworICAgICAgICAgICAgICAgICcgcGx1c2Fub3RoZXJ2ZXJ5bG9uZ3dvcmR0aGF0d29udGZpdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfc2xpZ2h0bHlfbG9uZ193b3JkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0aGlzbG9uZ3dvcmRpc2xlc3N0aGFubWF4bGluZWxlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0zNSkpLAorICAgICAgICAgICAgJ1N1YmplY3Q6XG4gdGhpc2xvbmd3b3JkaXNsZXNzdGhhbm1heGxpbmVsZW5cbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX2NvbW1hcyhzZWxmKToKKyAgICAgICAgIyBUaGUgb2xkIHdyYXBwZXIgd291bGQgZm9sZCB0aGlzIGF0IHRoZSBjb21tYXMuCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgIlRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvICIKKyAgICAgICAgICAgICJkZW1vbnN0cmF0ZSwgaW4gYSBmYWlybHkgc3VzaW5jdCB3YXksIHRoYXQgd2Ugbm93IGRvICIKKyAgICAgICAgICAgICJub3QgZ2l2ZSBhICwgc3BlY2lhbCB0cmVhdG1lbnQgaW4gdW5zdHJ1Y3R1cmVkIGhlYWRlcnMuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTYwKSksCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgICAgIFN1YmplY3Q6IFRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvIGRlbW9uc3RyYXRlLCBpbiBhIGZhaXJseQorICAgICAgICAgICAgICAgICBzdXNpbmN0IHdheSwgdGhhdCB3ZSBub3cgZG8gbm90IGdpdmUgYSAsIHNwZWNpYWwgdHJlYXRtZW50CisgICAgICAgICAgICAgICAgIGluIHVuc3RydWN0dXJlZCBoZWFkZXJzLgorICAgICAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF9hZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdUbycsICciVGhlb2RvcmUgSC4gUGVyZmVjdCIgPHllc0BtYW4uY29tPiwgJworICAgICAgICAgICAgJyJNeSBhZGRyZXNzIGlzIHZlcnkgbG9uZyBiZWNhdXNlIG15IG5hbWUgaXMgbG9uZyIgPGZvb0BiYXIuY29tPiwgJworICAgICAgICAgICAgJyJPbmx5IEEuIEZyaWVuZCIgPG5vQHllcy5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiAiVGhlb2RvcmUgSC4gUGVyZmVjdCIgPHllc0BtYW4uY29tPiwKKyAgICAgICAgICAgICAiTXkgYWRkcmVzcyBpcyB2ZXJ5IGxvbmcgYmVjYXVzZSBteSBuYW1lIGlzIGxvbmciIDxmb29AYmFyLmNvbT4sCisgICAgICAgICAgICAgIk9ubHkgQS4gRnJpZW5kIiA8bm9AeWVzLmNvbT4KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF9kYXRlX2hlYWRlcihzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0RhdGUnLCAnU2F0LCAyIEZlYiAyMDAyIDE3OjAwOjA2IC0wODAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlOiBTYXQsIDAyIEZlYiAyMDAyIDE3OjAwOjA2IC0wODAwXG4nKQorCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNjM2Y4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQorCisKK2NsYXNzIFRlc3QoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIHRlc3RfZXJyb3Jfb25fc2V0aXRlbV9pZl9tYXhfY291bnRfZXhjZWVkZWQoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCIiKQorICAgICAgICBtWydUbyddID0gJ2FiY0B4eXonCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBtWydUbyddID0gJ3h5ekBhYmMnCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYmQxMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0wLDAgKzEsMzYgQEAKK2ltcG9ydCBpbworaW1wb3J0IGVtYWlsCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0Q3VzdG9tTWVzc2FnZShUZXN0RW1haWxCYXNlKToKKworICAgIGNsYXNzIE15TWVzc2FnZShNZXNzYWdlKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvbGljeSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICBNeVBvbGljeSA9IFRlc3RFbWFpbEJhc2UucG9saWN5LmNsb25lKGxpbmVzZXA9J2JvbycpCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9nZXRzX3BvbGljeV9pZl9wb3NzaWJsZV9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiU3ViamVjdDogYm9ndXNcblxubXNnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTXlNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cuY2hlY2tfcG9saWN5LCBzZWxmLk15UG9saWN5KQorCisgICAgZGVmIHRlc3RfY3VzdG9tX21lc3NhZ2VfZ2V0c19wb2xpY3lfaWZfcG9zc2libGVfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBzb3VyY2VfZmlsZSA9IGlvLlN0cmluZ0lPKCJTdWJqZWN0OiBib2d1c1xuXG5tc2dcbiIpCisgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKHNvdXJjZV9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk15TWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1zZy5jaGVja19wb2xpY3ksIHNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFhYWCBhZGQgdGVzdHMgZm9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgTWVzc2FnZSBhcmcuCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BpY2tsZWFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFhOGQyNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5CkBAIC0wLDAgKzEsNzQgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgY29weQoraW1wb3J0IHBpY2tsZQoraW1wb3J0IGVtYWlsCitpbXBvcnQgZW1haWwubWVzc2FnZQorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RQaWNrbGVDb3B5SGVhZGVyKFRlc3RFbWFpbEJhc2UpOgorCisgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCisKKyAgICB1bnN0cnVjdHVyZWQgPSBoZWFkZXJfZmFjdG9yeSgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisKKyAgICBoZWFkZXJfcGFyYW1zID0geworICAgICAgICAnc3ViamVjdCc6ICgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpLAorICAgICAgICAnZnJvbSc6ICAgICgnZnJvbScsICAgICdmcm9kb0Btb3Jkb3IubmV0JyksCisgICAgICAgICd0byc6ICAgICAgKCd0bycsICAgICAgJ2E6IGtAYi5jb20sIHlAei5jb207LCBqQGYuY29tJyksCisgICAgICAgICdkYXRlJzogICAgKCdkYXRlJywgICAgJ1R1ZSwgMjkgTWF5IDIwMTIgMDk6MjQ6MjYgKzEwMDAnKSwKKyAgICAgICAgfQorCisgICAgZGVmIGhlYWRlcl9hc19kZWVwY29weShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGhlYWRlciA9IHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpCisgICAgICAgIGggPSBjb3B5LmRlZXBjb3B5KGhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksIHN0cihoZWFkZXIpKQorCisgICAgZGVmIGhlYWRlcl9hc19waWNrbGUoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBoZWFkZXIgPSBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKQorICAgICAgICBwID0gcGlja2xlLmR1bXBzKGhlYWRlcikKKyAgICAgICAgaCA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoKSwgc3RyKGhlYWRlcikpCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdFBpY2tsZUNvcHlNZXNzYWdlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgIyBNZXNzYWdlIG9iamVjdHMgYXJlIGEgc2VxdWVuY2UsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGVtIGEgb25lLXR1cGxlIGluCisgICAgIyBtc2dfcGFyYW1zIHNvIHRoZXkgZ2V0IHBhc3NlZCB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IG1ldGhvZCBhcyBhCisgICAgIyBzaW5nbGUgYXJndW1lbnQgaW5zdGVhZCBvZiBhcyBhIGxpc3Qgb2YgaGVhZGVycy4KKyAgICBtc2dfcGFyYW1zID0ge30KKworICAgICMgTm90ZTogdGhlcmUgd2lsbCBiZSBubyBjdXN0b20gaGVhZGVyIG9iamVjdHMgaW4gdGhlIHBhcnNlZCBtZXNzYWdlLgorICAgIG1zZ19wYXJhbXNbJ3BhcnNlZCddID0gKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcodGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMAorICAgICAgICBGcm9tOiBmcm9kb0Btb3Jkb3IubmV0CisgICAgICAgIFRvOiBiaWxib0B1bmRlcmhpbGwub3JnCisgICAgICAgIFN1YmplY3Q6IGhlbHAKKworICAgICAgICBJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLgorICAgICAgICAiIiIpLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCkKKworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXSA9IChlbWFpbC5tZXNzYWdlLk1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KSwpCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdWydEYXRlJ10gPSAnVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMCcKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF1bJ0Zyb20nXSA9ICdmcm9kb0Btb3Jkb3IubmV0JworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnVG8nXSA9ICdiaWxib0B1bmRlcmhpbGwub3JnJworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnU3ViamVjdCddID0gJ2hlbHAnCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdLnNldF9wYXlsb2FkKCdJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLicpCisKKyAgICBkZWYgbXNnX2FzX2RlZXBjb3B5KHNlbGYsIG1zZyk6CisgICAgICAgIG1zZzIgPSBjb3B5LmRlZXBjb3B5KG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cyLmFzX3N0cmluZygpLCBtc2cuYXNfc3RyaW5nKCkpCisKKyAgICBkZWYgbXNnX2FzX3BpY2tsZShzZWxmLCBtc2cpOgorICAgICAgICBwID0gcGlja2xlLmR1bXBzKG1zZykKKyAgICAgICAgbXNnMiA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZzIuYXNfc3RyaW5nKCksIG1zZy5hc19zdHJpbmcoKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzYmQ0OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTAsMCArMSwzMjIgQEAKK2ltcG9ydCBpbworaW1wb3J0IHR5cGVzCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGVtYWlsLnBvbGljeQoraW1wb3J0IGVtYWlsLnBhcnNlcgoraW1wb3J0IGVtYWlsLmdlbmVyYXRvcgorZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKKworZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgorICAgIGRlZmF1bHRzID0gYmFzZV9kZWZhdWx0cy5jb3B5KCkKKyAgICBkZWZhdWx0cy51cGRhdGUoZGlmZmVyZW5jZXMpCisgICAgcmV0dXJuIGRlZmF1bHRzCisKK2NsYXNzIFBvbGljeUFQSVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGxvbmdNZXNzYWdlID0gVHJ1ZQorCisgICAgIyBCYXNlIGRlZmF1bHQgdmFsdWVzLgorICAgIGNvbXBhdDMyX2RlZmF1bHRzID0geworICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogICAgICAgICAgNzgsCisgICAgICAgICdsaW5lc2VwJzogICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAorICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCisgICAgICAgIH0KKyAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCisgICAgcG9saWN5X2RlZmF1bHRzID0gY29tcGF0MzJfZGVmYXVsdHMuY29weSgpCisgICAgcG9saWN5X2RlZmF1bHRzLnVwZGF0ZSh7CisgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ2hlYWRlcl9mYWN0b3J5JzogICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSwKKyAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKKyAgICAgICAgfSkKKworICAgICMgRm9yIGVhY2ggcG9saWN5IHVuZGVyIHRlc3QsIHdlIGdpdmUgaGVyZSB3aGF0IHdlIGV4cGVjdCB0aGUgZGVmYXVsdHMgdG8KKyAgICAjIGJlIGZvciB0aGF0IHBvbGljeS4gIFRoZSBzZWNvbmQgYXJndW1lbnQgdG8gbWFrZSBkZWZhdWx0cyBpcyB0aGUKKyAgICAjIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYmFzZSBkZWZhdWx0cyBhbmQgdGhhdCBmb3IgdGhlIHBhcnRpY3VsYXIgcG9saWN5LgorICAgIG5ld19wb2xpY3kgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgIHBvbGljaWVzID0geworICAgICAgICBlbWFpbC5wb2xpY3kuY29tcGF0MzI6IG1ha2VfZGVmYXVsdHMoY29tcGF0MzJfZGVmYXVsdHMsIHt9KSwKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQ6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIGVtYWlsLnBvbGljeS5TTVRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nfSksCisgICAgICAgIGVtYWlsLnBvbGljeS5IVFRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9saW5lX2xlbmd0aCc6IE5vbmV9KSwKKyAgICAgICAgZW1haWwucG9saWN5LnN0cmljdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydyYWlzZV9vbl9kZWZlY3QnOiBUcnVlfSksCisgICAgICAgIG5ld19wb2xpY3k6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIH0KKyAgICAjIENyZWF0aW5nIGEgbmV3IHBvbGljeSBjcmVhdGVzIGEgbmV3IGhlYWRlciBmYWN0b3J5LiAgVGhlcmUgaXMgYSB0ZXN0CisgICAgIyBsYXRlciB0aGF0IHByb3ZlcyB0aGlzLgorICAgIHBvbGljaWVzW25ld19wb2xpY3ldWydoZWFkZXJfZmFjdG9yeSddID0gbmV3X3BvbGljeS5oZWFkZXJfZmFjdG9yeQorCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorCisgICAgZGVmIHRlc3RfYWxsX2F0dHJpYnV0ZXNfY292ZXJlZChzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGlyKHBvbGljeSk6CisgICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGdldGF0dHIoZW1haWwucG9saWN5LkVtYWlsUG9saWN5LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKKworICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZW1haWwucG9saWN5LlBvbGljeSgpCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIGFic3RyYWN0X21ldGhvZHMgPSAoJ2ZvbGQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2xkX2JpbmFyeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9mZXRjaF9wYXJzZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9zb3VyY2VfcGFyc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJfc3RvcmVfcGFyc2UnKQorICAgICAgICBmb3IgbWV0aG9kIGluIGFic3RyYWN0X21ldGhvZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1ldGhvZCwgbXNnKQorCisgICAgZGVmIHRlc3RfcG9saWN5X2lzX2ltbXV0YWJsZShzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZGVmYXVsdHMgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBhdHRyKyIuKnJlYWQtb25seSIpOgorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBvbGljeSwgYXR0ciwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ25vIGF0dHJpYnV0ZS4qZm9vJyk6CisgICAgICAgICAgICAgICAgcG9saWN5LmZvbyA9IE5vbmUKKworICAgIGRlZiB0ZXN0X3NldF9wb2xpY3lfYXR0cnNfd2hlbl9jbG9uZWQoc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGUgYXR0cmlidXRlcyBoYXMgYSBkZWZhdWx0IHZhbHVlIG9mIE5vbmUsIHNvIHdlIHNldCB0aGVtCisgICAgICAgICMgYWxsIHRvIE5vbmUgaW4gdGhlIGNsb25lIGNhbGwgYW5kIGNoZWNrIHRoYXQgaXQgd29ya2VkLgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MsIGRlZmF1bHRzIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIHRlc3RhdHRyZGljdCA9IHthdHRyOiBOb25lIGZvciBhdHRyIGluIGRlZmF1bHRzfQorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5Y2xhc3MuY2xvbmUoKip0ZXN0YXR0cmRpY3QpCisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkZWZhdWx0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZXRhdHRyKHBvbGljeSwgYXR0cikpCisKKyAgICBkZWYgdGVzdF9yZWplY3Rfbm9uX3BvbGljeV9rZXl3b3JkX3doZW5fY2FsbGVkKHNlbGYpOgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MgaW4gc2VsZi5wb2xpY2llczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBwb2xpY3ljbGFzcyh0aGlzX2tleXdvcmRfc2hvdWxkX25vdF9iZV92YWxpZD1Ob25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBvbGljeWNsYXNzKG5ld3RsaW5lPU5vbmUpCisKKyAgICBkZWYgdGVzdF9wb2xpY3lfYWRkaXRpb24oc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5wb2xpY3lfZGVmYXVsdHMuY29weSgpCisgICAgICAgIHAxID0gZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTEwMCkKKyAgICAgICAgcDIgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9NTApCisgICAgICAgIGFkZGVkID0gcDEgKyBwMgorICAgICAgICBleHBlY3RlZC51cGRhdGUobWF4X2xpbmVfbGVuZ3RoPTUwKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorICAgICAgICBhZGRlZCA9IHAyICsgcDEKKyAgICAgICAgZXhwZWN0ZWQudXBkYXRlKG1heF9saW5lX2xlbmd0aD0xMDApCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGFkZGVkLCBhdHRyKSwgdmFsdWUpCisgICAgICAgIGFkZGVkID0gYWRkZWQgKyBlbWFpbC5wb2xpY3kuZGVmYXVsdAorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfZGVmZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBEdW1teToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorICAgICAgICBvYmogPSBEdW1teSgpCisgICAgICAgIGRlZmVjdCA9IG9iamVjdCgpCisgICAgICAgIHBvbGljeSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeS5yZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3RdKQorICAgICAgICBkZWZlY3QyID0gb2JqZWN0KCkKKyAgICAgICAgcG9saWN5LnJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3QsIGRlZmVjdDJdKQorCisgICAgY2xhc3MgTXlPYmo6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisKKyAgICBjbGFzcyBNeURlZmVjdChFeGNlcHRpb24pOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JhaXNlc19vbl9zdHJpY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QgPSBzZWxmLk15RGVmZWN0KCJ0aGUgdGVsbHkgaXMgYnJva2VuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuTXlEZWZlY3QsICJ0aGUgdGVsbHkgaXMgYnJva2VuIik6CisgICAgICAgICAgICBlbWFpbC5wb2xpY3kuc3RyaWN0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JlZ2lzdGVyc19kZWZlY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QxID0gc2VsZi5NeURlZmVjdCgib25lIikKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgZGVmZWN0MiA9IHNlbGYuTXlEZWZlY3QoInR3byIpCisgICAgICAgIGVtYWlsLnBvbGljeS5kZWZhdWx0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5kZWZlY3RzLCBbZGVmZWN0MSwgZGVmZWN0Ml0pCisKKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBkZWZlY3RzID0gTm9uZQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgZGVmZWN0cz1bXSwgKiprdykKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRkZW5fcmVnaXN0ZXJfZGVmZWN0X3N0aWxsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgZm9vID0gc2VsZi5NeU9iaigpCisgICAgICAgIGRlZmVjdCA9IHNlbGYuTXlEZWZlY3QoInRoZSB0ZWxseSBpcyBicm9rZW4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5NeURlZmVjdCwgInRoZSB0ZWxseSBpcyBicm9rZW4iKToKKyAgICAgICAgICAgIHNlbGYuTXlQb2xpY3kocmFpc2Vfb25fZGVmZWN0PVRydWUpLmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZW5fcmVnaXN0ZXJfZGVmZWN0X3dvcmtzKHNlbGYpOgorICAgICAgICBmb28gPSBzZWxmLk15T2JqKCkKKyAgICAgICAgZGVmZWN0MSA9IHNlbGYuTXlEZWZlY3QoIm9uZSIpCisgICAgICAgIG15X3BvbGljeSA9IHNlbGYuTXlQb2xpY3koKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisgICAgICAgIGRlZmVjdDIgPSBzZWxmLk15RGVmZWN0KCJ0d28iKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxLCBkZWZlY3QyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2hlYWRlcl9mYWN0b3J5KHNlbGYpOgorICAgICAgICBoID0gZW1haWwucG9saWN5LmRlZmF1bHQuaGVhZGVyX2ZhY3RvcnkoJ1Rlc3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnVGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorCisgICAgY2xhc3MgRm9vOgorICAgICAgICBwYXJzZSA9IGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlci5wYXJzZQorCisgICAgZGVmIHRlc3RfZWFjaF9Qb2xpY3lfZ2V0c191bmlxdWVfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5Lm1hcF90b190eXBlKCdmb28nLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTEuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBoID0gcG9saWN5Mi5oZWFkZXJfZmFjdG9yeSgnZm9vJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgc2VsZi5Gb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9jbG9uZV9jb3BpZXNfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBwb2xpY3kxLmNsb25lKCkKKyAgICAgICAgcG9saWN5MS5oZWFkZXJfZmFjdG9yeS5tYXBfdG9fdHlwZSgnZm9vJywgc2VsZi5Gb28pCisgICAgICAgIGggPSBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5KCdmb28nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTIuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorCisgICAgZGVmIHRlc3RfbmV3X2ZhY3Rvcnlfb3ZlcnJpZGVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIG15cG9saWN5ID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgbXlmYWN0b3J5ID0gbXlwb2xpY3kuaGVhZGVyX2ZhY3RvcnkKKyAgICAgICAgbmV3cG9saWN5ID0gbXlwb2xpY3kgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LCBteWZhY3RvcnkpCisgICAgICAgIG5ld3BvbGljeSA9IGVtYWlsLnBvbGljeS5zdHJpY3QgKyBteXBvbGljeQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3BvbGljeS5oZWFkZXJfZmFjdG9yeSwgbXlmYWN0b3J5KQorCisgICAgZGVmIHRlc3RfYWRkaW5nX2RlZmF1bHRfcG9saWNpZXNfcHJlc2VydmVzX2RlZmF1bHRfZmFjdG9yeShzZWxmKToKKyAgICAgICAgbmV3cG9saWN5ID0gZW1haWwucG9saWN5LmRlZmF1bHQgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdwb2xpY3kuX19kaWN0X18sIHsncmFpc2Vfb25fZGVmZWN0JzogVHJ1ZX0pCisKKyAgICAjIFhYWDogTmVlZCBzdWJjbGFzc2luZyB0ZXN0cy4KKyAgICAjIEZvciBhZGRpbmcgc3ViY2xhc3NlZCBvYmplY3RzLCBtYWtlIHN1cmUgdGhlIHVzdWFsIHJ1bGVzIGFwcGx5IChzdWJjbGFzcworICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgorCisKK2NsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgorICAgICMgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCwgc28gaWYgdGhlIGV4Y2VwdGlvbiBnZXRzIHJhaXNlZCB3ZSBrbm93IHRoYXQgdGhlCisgICAgIyBwb2xpY3kgd2FzIGFjdHVhbGx5IHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkgdG8gZmVlZHBhcnNlci4KKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuUG9saWN5KToKKyAgICAgICAgZGVmIGJhZG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInRlc3QiKQorICAgICAgICBmb2xkID0gZm9sZF9iaW5hcnkgPSBoZWFkZXJfZmV0Y2hfcGFyc2VyID0gYmFkbWV0aG9kCisgICAgICAgIGhlYWRlcl9zb3VyY2VfcGFyc2UgPSBoZWFkZXJfc3RvcmVfcGFyc2UgPSBiYWRtZXRob2QKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYnl0ZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhiIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBmID0gaW8uU3RyaW5nSU8oJ1N1YmplY3Q6IHRlc3RcblxuJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoc2VsZik6CisgICAgICAgIGYgPSBpby5CeXRlc0lPKGInU3ViamVjdDogdGVzdFxuXG4nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFRoZXNlIGFyZSByZWR1bmRhbnQsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIGJsYWNrLWJveCBjb21wbGV0ZW5lc3MuCisKKyAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBwLnBhcnNlc3RyKCdTdWJqZWN0OiB0ZXN0XG5cbicpCisKKyAgICBkZWYgdGVzdF9ieXRlc19wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIHAucGFyc2VieXRlcyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKKworICAgICMgTm93IHRoYXQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCBhbGwgdGhlIHBhcnNlIG1ldGhvZHMgZ2V0IHRoZQorICAgICMgcG9saWN5IGluIHRvIGZlZWRwYXJzZXIsIHdlIGNhbiB1c2UgbWVzc2FnZV9mcm9tX3N0cmluZyBmb3IKKyAgICAjIHRoZSByZXN0IG9mIHRoZSBwcm9wYWdhdGlvbiB0ZXN0cy4KKworICAgIGRlZiBfbWFrZV9tc2coc2VsZiwgc291cmNlPSdTdWJqZWN0OiB0ZXN0XG5cbicsIHBvbGljeT1Ob25lKToKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZSgpIGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKHNvdXJjZSwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIHRlc3RfcGFyc2VyX3Byb3BhZ2F0ZXNfcG9saWN5X3RvX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cucG9saWN5LCBzZWxmLnBvbGljeSkKKworICAgIGRlZiB0ZXN0X3BhcnNlcl9wcm9wYWdhdGVzX3BvbGljeV90b19zdWJfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiBtaW1lIHRlc3QKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZCwgYm91bmRhcnk9IlhYWCIKKworICAgICAgICAgICAgLS1YWFgKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCisgICAgICAgICAgICB0ZXN0CisgICAgICAgICAgICAtLVhYWAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgICAgIHRlc3QyCisgICAgICAgICAgICAtLVhYWC0tCisgICAgICAgICAgICAiIiIpKQorICAgICAgICBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXJ0LnBvbGljeSwgc2VsZi5wb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV9wcm9wYWdhdGVzX3RvX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgcyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IocykKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV91c2VkX2J5X2FzX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuYXNfc3RyaW5nKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWRlNzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsMTM2IEBACitpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2NsYXNzIERhdGVUaW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGF0ZXN0cmluZyA9ICdTdW4sIDIzIFNlcCAyMDAxIDIwOjEwOjU1JworICAgIGRhdGVhcmdzID0gKDIwMDEsIDksIDIzLCAyMCwgMTAsIDU1KQorICAgIG9mZnNldHN0cmluZyA9ICcgLTA3MDAnCisgICAgdXRjb2Zmc2V0ID0gZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPS03KQorICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUodXRjb2Zmc2V0KQorICAgIG5haXZlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzKQorICAgIGF3YXJlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzLCB0emluZm89dHopCisKKyAgICBkZWYgdGVzdF9uYWl2ZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgJyAtMDAwMCcpCisKKyAgICBkZWYgdGVzdF9hd2FyZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5hd2FyZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgc2VsZi5vZmZzZXRzdHJpbmcpCisKKyAgICBkZWYgdGVzdF91c2VnbXQoc2VsZik6CisgICAgICAgIHV0Y19kdCA9IGRhdGV0aW1lLmRhdGV0aW1lKCpzZWxmLmRhdGVhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kYXRldGltZSh1dGNfZHQsIHVzZWdtdD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGVzdHJpbmcgKyAnIEdNVCcpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9uYWl2ZV9kYXRldGltZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCwgdXNlZ210PVRydWUpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9ub25fdXRjX2RhdGV0aW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLmF3YXJlX2R0LCB1c2VnbXQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV90b19kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHV0aWxzLnBhcnNlZGF0ZV90b19kYXRldGltZShzZWxmLmRhdGVzdHJpbmcgKyBzZWxmLm9mZnNldHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmF3YXJlX2R0KQorCisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX3RvX2RhdGV0aW1lX25haXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgdXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lKHNlbGYuZGF0ZXN0cmluZyArICcgLTAwMDAnKSwKKyAgICAgICAgICAgIHNlbGYubmFpdmVfZHQpCisKKworY2xhc3MgTG9jYWx0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2lzX3R6X2F3YXJlX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9pc190el9hd2FyZV9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMywgMTIsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwLCBpc2RzdD0tMSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2RheWxpZ2h0X2ZhbHNlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9LTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgyMDEyLCAzLCAxMiwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDAsIGlzZHN0PTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF9mYWxzZV9kc3RfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9MSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfdXRjX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIEB0ZXN0LnN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2Vwb2NoX3V0Y19kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9lcG9jaF9ub3R6X2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfbm90el9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICAjIFhYWDogTmVlZCBhIG1vcmUgcm9idXN0IHRlc3QgZm9yIE9sc29uJ3MgdHpkYXRhCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksCisgICAgICAgICAgICAgICAgICAgICAiV2luZG93cyBkb2VzIG5vdCB1c2UgT2xzb24ncyBUWiBkYXRhYmFzZSIpCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRXVyb3BlL0tpZXYnKQorICAgIGRlZiB0ZXN0X3ZhcmlhYmxlX3R6bmFtZShzZWxmKToKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTg0LCAxLCAxLCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS50em5hbWUoKSwgJ01TSycpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5NCwgMSwgMSwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEudHpuYW1lKCksICdFRVQnKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbF90b3J0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfdG9ydHVyZS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMDk1ODIwYi4uMmU5MDRjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCBwaWNrbGUKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTYxLDcgKzYyLDI1IEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCi1jbGFzcyBFbnVtZXJhdGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBQaWNrbGVUZXN0OgorICAgICMgSGVscGVyIHRvIGNoZWNrIHBpY2tsYWJpbGl0eQorICAgIGRlZiBjaGVja19waWNrbGUoc2VsZiwgaXRvcmcsIHNlcSk6CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcVsxOl0pCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKKworY2xhc3MgRW51bWVyYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZW51bSA9IGVudW1lcmF0ZQogICAgIHNlcSwgcmVzID0gJ2FiYycsIFsoMCwnYScpLCAoMSwnYicpLCAoMiwnYycpXQpAQCAtNzMsNiArOTIsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKHNlbGYuc2VxKSksIHNlbGYucmVzKQogICAgICAgICBzZWxmLmVudW0uX19kb2NfXwogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShzZWxmLmVudW0oc2VsZi5zZXEpLCBzZWxmLnJlcykKKwogICAgIGRlZiB0ZXN0X2dldGl0ZW1zZXFuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKEcoc2VsZi5zZXEpKSksIHNlbGYucmVzKQogICAgICAgICBlID0gc2VsZi5lbnVtKEcoJycpKQpAQCAtMTI2LDcgKzE0OCw3IEBACiAgICAgc2VxID0gcmFuZ2UoMTAsMjAwMDAsMikKICAgICByZXMgPSBsaXN0KHppcChyYW5nZSgyMDAwMCksIHNlcSkpCiAKLWNsYXNzIFRlc3RSZXZlcnNlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0UmV2ZXJzZWQodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgogICAgICAgICBjbGFzcyBBOgpAQCAtMjEyLDYgKzIzNCwxMCBAQAogICAgICAgICBuZ2kgPSBOb0dldEl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBuZ2kpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhIGluICdhYmMnLCByYW5nZSg1KSwgdHVwbGUoZW51bWVyYXRlKCdhYmMnKSksIHJhbmdlKDEsMTcsNSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShyZXZlcnNlZChkYXRhKSwgbGlzdChkYXRhKVs6Oi0xXSkKKwogCiBjbGFzcyBFbnVtZXJhdGVTdGFydFRlc3RDYXNlKEVudW1lcmF0ZVRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKaW5kZXggMDgzZmQ3Zi4uN2Y5NTQ3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CkBAIC03NSw2ICs3NSw5IEBACiAgICAgICAgIGVwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVwLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXAuZmlsZW5vKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGVjdCwgIkVQT0xMX0NMT0VYRUMiKToKKyAgICAgICAgICAgIHNlbGVjdC5lcG9sbChzZWxlY3QuRVBPTExfQ0xPRVhFQykuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZWN0LmVwb2xsLCBmbGFncz0xMjM1NikKIAogICAgIGRlZiB0ZXN0X2JhZGNyZWF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3QuZXBvbGwsIDEsIDIsIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKaW5kZXggN2EyZGQwYy4uNDEzZjRkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQpAQCAtOCw3ICs4LDE2IEBACiBpbXBvcnQgZXJybm8KIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChURVNURk4sIHVubGluaywgcnVuX3VuaXR0ZXN0LCBjYXB0dXJlZF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdjX2NvbGxlY3QsIGNweXRob25fb25seSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfY29sbGVjdCwgY3B5dGhvbl9vbmx5LCBub190cmFjaW5nKQorCitjbGFzcyBOYWl2ZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geAorCitjbGFzcyBTbG90dGVkTmFpdmVFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBfX3Nsb3RzX18gPSAoJ3gnLCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHNlbGYueCA9IHgKIAogIyBYWFggVGhpcyBpcyBub3QgcmVhbGx5IGVub3VnaCwgZWFjaCAqb3BlcmF0aW9uKiBzaG91bGQgYmUgdGVzdGVkIQogCkBAIC00Niw4ICs1NSw4IEBACiAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQogCi0gICAgICAgIHNlbGYucmFpc2VfY2F0Y2goSU9FcnJvciwgIklPRXJyb3IiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBvcGVuLCAndGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0JywgJ3InKQorICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKE9TRXJyb3IsICJPU0Vycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3BlbiwgJ3RoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCcsICdyJykKIAogICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKEltcG9ydEVycm9yLCAiSW1wb3J0RXJyb3IiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgX19pbXBvcnRfXywgInVuZGVmaW5lZF9tb2R1bGUiKQpAQCAtMTkyLDExICsyMDEsMzUgQEAKICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFdpbmRvd3NFcnJvcigxMDAxKSksICIxMDAxIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFdpbmRvd3NFcnJvcigxMDAxLCAibWVzc2FnZSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltFcnJvciAxMDAxXSBtZXNzYWdlIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoV2luZG93c0Vycm9yKDEwMDEsICJtZXNzYWdlIikuZXJybm8sIDIyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChXaW5kb3dzRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKS53aW5lcnJvciwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoV2luZG93c0Vycm9yLCBPU0Vycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT1NFcnJvcigxMDAxKSksICIxMDAxIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9TRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbRXJybm8gMTAwMV0gbWVzc2FnZSIpCisgICAgICAgICAgICAjIFBPU0lYIGVycm5vICg5IGFrYSBFQkFERikgaXMgdW50cmFuc2xhdGVkCisgICAgICAgICAgICB3ID0gT1NFcnJvcig5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2luZXJyb3IsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltFcnJubyA5XSBmb286ICdiYXInIikKKyAgICAgICAgICAgICMgRVJST1JfUEFUSF9OT1RfRk9VTkQgKHdpbiBlcnJvciAzKSBiZWNvbWVzIEVOT0VOVCAoMikKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDAsICdmb28nLCAnYmFyJywgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5zdHJlcnJvciwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZmlsZW5hbWUsICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodyksICJbV2luRXJyb3IgM10gZm9vOiAnYmFyJyIpCisgICAgICAgICAgICAjIFVua25vd24gd2luIGVycm9yIGJlY29tZXMgRUlOVkFMICgyMikKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDAsICdmb28nLCBOb25lLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmVycm5vLCAyMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5zdHJlcnJvciwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZmlsZW5hbWUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltXaW5FcnJvciAxMDAxXSBmb28iKQorICAgICAgICAgICAgIyBOb24tbnVtZXJpYyAiZXJybm8iCisgICAgICAgICAgICB3ID0gT1NFcnJvcignYmFyJywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LnN0cmVycm9yLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5maWxlbmFtZSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0QXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyB0ZXN0IHRoYXQgZXhjZXB0aW9uIGF0dHJpYnV0ZXMgYXJlIGhhcHB5CkBAIC0yNzIsMTMgKzMwNSwxOCBAQAogICAgICAgICAgICAgICAgIHsnYXJncycgOiAoJ1x1MzA0MicsIDAsIDEsICdvdWNoJyksCiAgICAgICAgICAgICAgICAgICdvYmplY3QnIDogJ1x1MzA0MicsICdyZWFzb24nIDogJ291Y2gnLAogICAgICAgICAgICAgICAgICAnc3RhcnQnIDogMCwgJ2VuZCcgOiAxfSksCisgICAgICAgICAgICAoTmFpdmVFeGNlcHRpb24sICgnZm9vJywpLAorICAgICAgICAgICAgICAgIHsnYXJncyc6ICgnZm9vJywpLCAneCc6ICdmb28nfSksCisgICAgICAgICAgICAoU2xvdHRlZE5haXZlRXhjZXB0aW9uLCAoJ2ZvbycsKSwKKyAgICAgICAgICAgICAgICB7J2FyZ3MnOiAoJ2ZvbycsKSwgJ3gnOiAnZm9vJ30pLAogICAgICAgICBdCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgTW9yZSB0ZXN0cyBhcmUgaW4gdGVzdF9XaW5kb3dzRXJyb3IKICAgICAgICAgICAgIGV4Y2VwdGlvbkxpc3QuYXBwZW5kKAogICAgICAgICAgICAgICAgIChXaW5kb3dzRXJyb3IsICgxLCAnc3RyRXJyb3JTdHInLCAnZmlsZW5hbWVTdHInKSwKICAgICAgICAgICAgICAgICAgICAgeydhcmdzJyA6ICgxLCAnc3RyRXJyb3JTdHInKSwKLSAgICAgICAgICAgICAgICAgICAgICdzdHJlcnJvcicgOiAnc3RyRXJyb3JTdHInLCAnd2luZXJyb3InIDogMSwKLSAgICAgICAgICAgICAgICAgICAgICdlcnJubycgOiAyMiwgJ2ZpbGVuYW1lJyA6ICdmaWxlbmFtZVN0cid9KQorICAgICAgICAgICAgICAgICAgICAgJ3N0cmVycm9yJyA6ICdzdHJFcnJvclN0cicsICd3aW5lcnJvcicgOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgJ2Vycm5vJyA6IDEsICdmaWxlbmFtZScgOiAnZmlsZW5hbWVTdHInfSkKICAgICAgICAgICAgICkKICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKQEAgLTI5MSw3ICszMjksOCBAQAogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgVmVyaWZ5IG1vZHVsZSBuYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUpLl9fbW9kdWxlX18sICdidWlsdGlucycpCisgICAgICAgICAgICAgICAgaWYgbm90IHR5cGUoZSkuX19uYW1lX18uZW5kc3dpdGgoJ05haXZlRXhjZXB0aW9uJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlKS5fX21vZHVsZV9fLCAnYnVpbHRpbnMnKQogICAgICAgICAgICAgICAgICMgVmVyaWZ5IG5vIHJlZiBsZWFrcyBpbiBFeGNfc3RyKCkKICAgICAgICAgICAgICAgICBzID0gc3RyKGUpCiAgICAgICAgICAgICAgICAgZm9yIGNoZWNrQXJnTmFtZSBpbiBleHBlY3RlZDoKQEAgLTM2MiwxOSArNDAxLDM3IEBACiAKICAgICBkZWYgdGVzdENoYWluaW5nQXR0cnMoc2VsZik6CiAgICAgICAgIGUgPSBFeGNlcHRpb24oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jb250ZXh0X18sIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NhdXNlX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQogCiAgICAgICAgIGUgPSBUeXBlRXJyb3IoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jb250ZXh0X18sIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NhdXNlX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQogCiAgICAgICAgIGNsYXNzIE15RXhjZXB0aW9uKEVudmlyb25tZW50RXJyb3IpOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGUgPSBNeUV4Y2VwdGlvbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisKKyAgICBkZWYgdGVzdENoYWluaW5nRGVzY3JpcHRvcnMoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgZSA9IGV4YworCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUuX19zdXBwcmVzc19jb250ZXh0X18pCisKKyAgICAgICAgZS5fX2NvbnRleHRfXyA9IE5hbWVFcnJvcigpCisgICAgICAgIGUuX19jYXVzZV9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgTmFtZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuX19zdXBwcmVzc19jb250ZXh0X18pCisgICAgICAgIGUuX19zdXBwcmVzc19jb250ZXh0X18gPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUuX19zdXBwcmVzc19jb250ZXh0X18pCiAKICAgICBkZWYgdGVzdEtleXdvcmRBcmdzKHNlbGYpOgogICAgICAgICAjIHRlc3QgdGhhdCBidWlsdGluIGV4Y2VwdGlvbiBkb24ndCB0YWtlIGtleXdvcmQgYXJncywKQEAgLTM4OSw2ICs0NDYsNyBAQAogICAgICAgICB4ID0gRGVyaXZlZEV4Y2VwdGlvbihmYW5jeV9hcmc9NDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mYW5jeV9hcmcsIDQyKQogCisgICAgQG5vX3RyYWNpbmcKICAgICBkZWYgdGVzdEluZmluaXRlUmVjdXJzaW9uKHNlbGYpOgogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgcmV0dXJuIGYoKQpAQCAtNzIxLDYgKzc3OSw3IEBACiAgICAgICAgIHUuc3RhcnQgPSAxMDAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUpLCAiY2FuJ3QgdHJhbnNsYXRlIGNoYXJhY3RlcnMgaW4gcG9zaXRpb24gMTAwMC00OiA5NjUyMzA5NTE0NDM2ODU3MjQ5OTciKQogCisgICAgQG5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9iYWRpc2luc3RhbmNlKHNlbGYpOgogICAgICAgICAjIEJ1ZyAjMjU0MjogaWYgaXNzdWJjbGFzcyhlLCBNeUV4Y2VwdGlvbikgcmFpc2VzIGFuIGV4Y2VwdGlvbiwKICAgICAgICAgIyBpdCBzaG91bGQgYmUgaWdub3JlZApAQCAtODMxLDYgKzg5MCw3IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIk1lbW9yeUVycm9yIG5vdCByYWlzZWQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X3JlY3Vyc2lvbl9lcnJvcl9jbGVhbnVwKHNlbGYpOgogICAgICAgICAjIFNhbWUgdGVzdCBhcyBhYm92ZSwgYnV0IHdpdGggInJlY3Vyc2lvbiBleGNlZWRlZCIgZXJyb3JzCiAgICAgICAgIGNsYXNzIEM6CkBAIC04NTcsOCArOTE3LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9URElSLCBjbS5leGNlcHRpb24pCiAKIAorY2xhc3MgSW1wb3J0RXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICAjIFNldHRpbmcgJ25hbWUnIGFuZCAncGF0aCcgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0uCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKCd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5wYXRoKQorCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKCd0ZXN0JywgbmFtZT0nc29tZW1vZHVsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLm5hbWUsICdzb21lbW9kdWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLnBhdGgpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBwYXRoPSdzb21lcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnBhdGgsICdzb21lcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5uYW1lKQorCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKCd0ZXN0JywgcGF0aD0nc29tZXBhdGgnLCBuYW1lPSdzb21lbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLm5hbWUsICdzb21lbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnBhdGgsICdzb21lcGF0aCcpCisKKyAgICBkZWYgdGVzdF9ub25fc3RyX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNTc3OAorICAgICAgICBhcmcgPSBiJ2FiYycKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoYXJnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhcmcpLCBzdHIoZXhjKSkKKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEV4Y2VwdGlvblRlc3RzKQorICAgIHJ1bl91bml0dGVzdChFeGNlcHRpb25UZXN0cywgSW1wb3J0RXJyb3JUZXN0cykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQppbmRleCAxZjdmNjMwLi42YjZjMTJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CkBAIC02NiwxNyArNjYsMTcgQEAKICAgICA+Pj4gZygpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBnKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGcoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ3gnCiAKICAgICA+Pj4gZygqKCkpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBnKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGcoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ3gnCiAKICAgICA+Pj4gZygqKCksICoqe30pCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBnKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGcoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ3gnCiAKICAgICA+Pj4gZygxKQogICAgIDEgKCkge30KQEAgLTE1MSw3ICsxNTEsNyBAQAogICAgID4+PiBnKDEsIDIsIDMsICoqeyd4JzogNCwgJ3knOiA1fSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICd4JworICAgIFR5cGVFcnJvcjogZygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICd4JwogCiAgICAgPj4+IGYoKip7MToyfSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CkBAIC0yNjMsMjkgKzI2Myw4MCBAQAogICAgID4+PiBmKCoqeCkKICAgICAxIDIKIAotQSBvYnNjdXJlIG1lc3NhZ2U6CitUb28gbWFueSBhcmd1bWVudHM6CiAKLSAgICA+Pj4gZGVmIGYoYSwgYik6Ci0gICAgLi4uICAgIHBhc3MKLSAgICA+Pj4gZihiPTEpCisgICAgPj4+IGRlZiBmKCk6IHBhc3MKKyAgICA+Pj4gZigxKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGV4YWN0bHkgMiBhcmd1bWVudHMgKDEgZ2l2ZW4pCi0KLVRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCBpbiBpbmNsdWRlcyBrZXl3b3JkczoKLQotICAgID4+PiBkZWYgZihhKToKLSAgICAuLi4gICAgcGFzcwotICAgID4+PiBmKDYsIGE9NCwgKigxLCAyLCAzKSkKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAwIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAxIHdhcyBnaXZlbgorICAgID4+PiBkZWYgZihhKTogcGFzcworICAgID4+PiBmKDEsIDIpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZXhhY3RseSAxIHBvc2l0aW9uYWwgYXJndW1lbnQgKDUgZ2l2ZW4pCi0gICAgPj4+IGRlZiBmKGEsICosIGt3KToKLSAgICAuLi4gICAgcGFzcwotICAgID4+PiBmKDYsIDQsIGt3PTQpCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IGJ1dCAyIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoYSwgYj0xKTogcGFzcworICAgID4+PiBmKDEsIDIsIDMpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZXhhY3RseSAxIHBvc2l0aW9uYWwgYXJndW1lbnQgKDMgZ2l2ZW4pCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZnJvbSAxIHRvIDIgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgd2VyZSBnaXZlbgorICAgID4+PiBkZWYgZigqLCBrdyk6IHBhc3MKKyAgICA+Pj4gZigxLCBrdz0zKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoYW5kIDEga2V5d29yZC1vbmx5IGFyZ3VtZW50KSB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKCosIGt3LCBiKTogcGFzcworICAgID4+PiBmKDEsIDIsIDMsIGI9Mywga3c9MykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAwIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHBvc2l0aW9uYWwgYXJndW1lbnRzIChhbmQgMiBrZXl3b3JkLW9ubHkgYXJndW1lbnRzKSB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKGEsIGI9MiwgKiwga3cpOiBwYXNzCisgICAgPj4+IGYoMiwgMywgNCwga3c9NCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBmcm9tIDEgdG8gMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoYW5kIDEga2V5d29yZC1vbmx5IGFyZ3VtZW50KSB3ZXJlIGdpdmVuCisKK1RvbyBmZXcgYW5kIG1pc3NpbmcgYXJndW1lbnRzOgorCisgICAgPj4+IGRlZiBmKGEpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAnYScKKyAgICA+Pj4gZGVmIGYoYSwgYik6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAyIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnRzOiAnYScgYW5kICdiJworICAgID4+PiBkZWYgZihhLCBiLCBjKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDMgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICdhJywgJ2InLCBhbmQgJ2MnCisgICAgPj4+IGRlZiBmKGEsIGIsIGMsIGQsIGUpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgNSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJ2EnLCAnYicsICdjJywgJ2QnLCBhbmQgJ2UnCisgICAgPj4+IGRlZiBmKGEsIGI9NCwgYz01LCBkPTUpOiBwYXNzCisgICAgPj4+IGYoYz0xMiwgYj05KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAnYScKKworU2FtZSB3aXRoIGtleXdvcmQgb25seSBhcmdzOgorCisgICAgPj4+IGRlZiBmKCosIHcpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMSByZXF1aXJlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQ6ICd3JworICAgID4+PiBkZWYgZigqLCBhLCBiLCBjLCBkLCBlKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDUgcmVxdWlyZWQga2V5d29yZC1vbmx5IGFyZ3VtZW50czogJ2EnLCAnYicsICdjJywgJ2QnLCBhbmQgJ2UnCisKICIiIgogCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weSBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MWIzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpAQCAtMCwwICsxLDU5MyBAQAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNpZ25hbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHVuaXR0ZXN0CisKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgSEFWRV9USFJFQURTID0gVHJ1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIEhBVkVfVEhSRUFEUyA9IEZhbHNlCisKK1RJTUVPVVQgPSAwLjUKKwordHJ5OgorICAgIGZyb20gcmVzb3VyY2UgaW1wb3J0IHNldHJsaW1pdCwgUkxJTUlUX0NPUkUsIGVycm9yIGFzIHJlc291cmNlX2Vycm9yCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcHJlcGFyZV9zdWJwcm9jZXNzID0gTm9uZQorZWxzZToKKyAgICBkZWYgcHJlcGFyZV9zdWJwcm9jZXNzKCk6CisgICAgICAgICMgZG9uJ3QgY3JlYXRlIGNvcmUgZmlsZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXRybGltaXQoUkxJTUlUX0NPUkUsICgwLCAwKSkKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCByZXNvdXJjZV9lcnJvcik6CisgICAgICAgICAgICBwYXNzCisKK2RlZiBleHBlY3RlZF90cmFjZWJhY2sobGluZW5vMSwgbGluZW5vMiwgaGVhZGVyLCBtaW5fY291bnQ9MSk6CisgICAgcmVnZXggPSBoZWFkZXIKKyAgICByZWdleCArPSAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gZnVuY1xuJyAlIGxpbmVubzEKKyAgICByZWdleCArPSAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gPG1vZHVsZT4nICUgbGluZW5vMgorICAgIGlmIDEgPCBtaW5fY291bnQ6CisgICAgICAgIHJldHVybiAnXicgKyAocmVnZXggKyAnXG4nKSAqIChtaW5fY291bnQgLSAxKSArIHJlZ2V4CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICdeJyArIHJlZ2V4ICsgJyQnCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHRlbXBvcmFyeV9maWxlbmFtZSgpOgorICAgIGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkIGZpbGVuYW1lCisgICAgZmluYWxseToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoZmlsZW5hbWUpCisKK2NsYXNzIEZhdWx0SGFuZGxlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgZ2V0X291dHB1dChzZWxmLCBjb2RlLCBmaWxlbmFtZT1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJ1biB0aGUgc3BlY2lmaWVkIGNvZGUgaW4gUHl0aG9uIChpbiBhIG5ldyBjaGlsZCBwcm9jZXNzKSBhbmQgcmVhZCB0aGUKKyAgICAgICAgb3V0cHV0IGZyb20gdGhlIHN0YW5kYXJkIGVycm9yIG9yIGZyb20gYSBmaWxlIChpZiBmaWxlbmFtZSBpcyBzZXQpLgorICAgICAgICBSZXR1cm4gdGhlIG91dHB1dCBsaW5lcyBhcyBhIGxpc3QuCisKKyAgICAgICAgU3RyaXAgdGhlIHJlZmVyZW5jZSBjb3VudCBmcm9tIHRoZSBzdGFuZGFyZCBlcnJvciBmb3IgUHl0aG9uIGRlYnVnCisgICAgICAgIGJ1aWxkLCBhbmQgcmVwbGFjZSAiQ3VycmVudCB0aHJlYWQgMHgwMDAwN2Y4ZDhmYmQ5NzAwIiBieSAiQ3VycmVudAorICAgICAgICB0aHJlYWQgWFhYIi4KKyAgICAgICAgIiIiCisgICAgICAgIG9wdGlvbnMgPSB7fQorICAgICAgICBpZiBwcmVwYXJlX3N1YnByb2Nlc3M6CisgICAgICAgICAgICBvcHRpb25zWydwcmVleGVjX2ZuJ10gPSBwcmVwYXJlX3N1YnByb2Nlc3MKKyAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUsICoqb3B0aW9ucykKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQorICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3Rkb3V0KQorICAgICAgICBvdXRwdXQgPSBvdXRwdXQuZGVjb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJykKKyAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJycpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQorICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIG91dHB1dCA9IHJlLnN1YignQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0N1cnJlbnQgdGhyZWFkIFhYWCcsCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpCisgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXRsaW5lcygpLCBleGl0Y29kZQorCisgICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgdGhlIGZhdWx0IGhhbmRsZXIgZm9yIGZhdGFsIGVycm9ycyBpcyBlbmFibGVkIGFuZCBjaGVjayB0aGUKKyAgICAgICAgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgb3V0cHV0LgorCisgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgYWxsX3RocmVhZHM6CisgICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgWFhYJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGVhZGVyID0gJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCknCisgICAgICAgIHJlZ2V4ID0gIiIiCiteRmF0YWwgUHl0aG9uIGVycm9yOiB7bmFtZX0KKwore2hlYWRlcn06CisgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiA8bW9kdWxlPgorIiIiLnN0cmlwKCkKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQoCisgICAgICAgICAgICBsaW5lbm89bGluZV9udW1iZXIsCisgICAgICAgICAgICBuYW1lPW5hbWVfcmVnZXgsCisgICAgICAgICAgICBoZWFkZXI9cmUuZXNjYXBlKGhlYWRlcikpCisgICAgICAgIGlmIG90aGVyX3JlZ2V4OgorICAgICAgICAgICAgcmVnZXggKz0gJ3wnICsgb3RoZXJfcmVnZXgKKyAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0ID0gJ1xuJy5qb2luKG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfcmVhZF9udWxsKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAjIElzc3VlICMxMjcwMDogUmVhZCBOVUxMIHJhaXNlcyBTSUdJTEwgb24gTWFjIE9TIFggTGlvbgorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorCisgICAgZGVmIHRlc3Rfc2lnc2VndihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdzZWd2KCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnKQorCisgICAgZGVmIHRlc3Rfc2lnYWJydChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdhYnJ0KCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdBYm9ydGVkJykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAiU0lHRlBFIGNhbm5vdCBiZSBjYXVnaHQgb24gV2luZG93cyIpCisgICAgZGVmIHRlc3Rfc2lnZnBlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2ZwZSgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnRmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9uJykKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnX3NpZ2J1cycpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWQgZmF1bHRoYW5kbGVyLl9zaWdidXMoKSIpCisgICAgZGVmIHRlc3Rfc2lnYnVzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2J1cygpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnQnVzIGVycm9yJykKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnX3NpZ2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWQgZmF1bHRoYW5kbGVyLl9zaWdpbGwoKSIpCisgICAgZGVmIHRlc3Rfc2lnaWxsKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnSWxsZWdhbCBpbnN0cnVjdGlvbicpCisKKyAgICBkZWYgdGVzdF9mYXRhbF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5fZmF0YWxfZXJyb3IoYid4eXonKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAyLAorICAgICAgICAgICAgJ3h5eicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJykgYW5kIEhBVkVfVEhSRUFEUywKKyAgICAgICAgICAgICAgICAgICAgICJJc3N1ZSAjMTI4Njg6IHNpZ2FsdHN0YWNrKCkgZG9lc24ndCB3b3JrIG9uICIKKyAgICAgICAgICAgICAgICAgICAgICJPcGVuQlNEIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIHB0aHJlYWQiKQorICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnX3N0YWNrX292ZXJmbG93JyksCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCBmYXVsdGhhbmRsZXIuX3N0YWNrX292ZXJmbG93KCknKQorICAgIGRlZiB0ZXN0X3N0YWNrX292ZXJmbG93KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3N0YWNrX292ZXJmbG93KCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yKScsCisgICAgICAgICAgICBvdGhlcl9yZWdleD0ndW5hYmxlIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3cnKQorCisgICAgZGVmIHRlc3RfZ2lsX3JlbGVhc2VkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbChUcnVlKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorCisgICAgZGVmIHRlc3RfZW5hYmxlX2ZpbGUoc2VsZik6CisgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorb3V0cHV0ID0gb3Blbih7ZmlsZW5hbWV9LCAnd2InKQorZmF1bHRoYW5kbGVyLmVuYWJsZShvdXRwdXQpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKS5mb3JtYXQoZmlsZW5hbWU9cmVwcihmaWxlbmFtZSkpLAorICAgICAgICAgICAgICAgIDQsCisgICAgICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknLAorICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfZW5hYmxlX3NpbmdsZV90aHJlYWQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPUZhbHNlKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknLAorICAgICAgICAgICAgYWxsX3RocmVhZHM9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9kaXNhYmxlKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5kaXNhYmxlKCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpCisgICAgICAgIG5vdF9leHBlY3RlZCA9ICdGYXRhbCBQeXRob24gZXJyb3InCisgICAgICAgIHN0ZGVyciwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSkKKyAgICAgICAgc3RkZXIgPSAnXG4nLmpvaW4oc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90X2V4cGVjdGVkIG5vdCBpbiBzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAiJXIgaXMgcHJlc2VudCBpbiAlciIgJSAobm90X2V4cGVjdGVkLCBzdGRlcnIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfaXNfZW5hYmxlZChzZWxmKToKKyAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcmVncnRlc3QgbWF5IHJlcGxhY2Ugc3lzLnN0ZGVyciBieSBpby5TdHJpbmdJTyBvYmplY3QsIGJ1dAorICAgICAgICAgICAgIyBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgcmVxdWlyZXMgdGhhdCBzeXMuc3RkZXJyIGhhcyBhIGZpbGVubygpCisgICAgICAgICAgICAjIG1ldGhvZAorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCisKKyAgICAgICAgICAgIHdhc19lbmFibGVkID0gZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kaXNhYmxlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIHdhc19lbmFibGVkOgorICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZGlzYWJsZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKworICAgIGRlZiB0ZXN0X2Rpc2FibGVkX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgQnkgZGVmYXVsdCwgdGhlIG1vZHVsZSBzaG91bGQgYmUgZGlzYWJsZWQKKyAgICAgICAgY29kZSA9ICJpbXBvcnQgZmF1bHRoYW5kbGVyOyBwcmludChmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKSIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCBjb2RlKQorICAgICAgICBzdGRvdXQgPSAoc3Rkb3V0ICsgc3RkZXJyKS5zdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiIkZhbHNlIikKKworICAgIGRlZiB0ZXN0X3N5c194b3B0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHB5dGhvbiAtWCBmYXVsdGhhbmRsZXIKKyAgICAgICAgY29kZSA9ICJpbXBvcnQgZmF1bHRoYW5kbGVyOyBwcmludChmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKSIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLVgiLCAiZmF1bHRoYW5kbGVyIiwgIi1jIiwgY29kZSkKKyAgICAgICAgc3Rkb3V0ID0gKHN0ZG91dCArIHN0ZGVycikuc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJUcnVlIikKKworICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFjayhzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIgorICAgICAgICBFeHBsaWNpdGx5IGNhbGwgZHVtcF90cmFjZWJhY2soKSBmdW5jdGlvbiBhbmQgY2hlY2sgaXRzIG91dHB1dC4KKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCisKK2RlZiBmdW5jQigpOgorICAgIGlmIHtoYXNfZmlsZW5hbWV9OgorICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPUZhbHNlKQorICAgIGVsc2U6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKKworZGVmIGZ1bmNBKCk6CisgICAgZnVuY0IoKQorCitmdW5jQSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKKyAgICAgICAgKQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIGxpbmVubyA9IDYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVubyA9IDgKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTonLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lICVzIGluIGZ1bmNCJyAlIGxpbmVubywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxMSBpbiBmdW5jQScsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTMgaW4gPG1vZHVsZT4nCisgICAgICAgIF0KKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKE5vbmUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhmaWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X3RydW5jYXRlKHNlbGYpOgorICAgICAgICBtYXhsZW4gPSA1MDAKKyAgICAgICAgZnVuY19uYW1lID0gJ3gnICogKG1heGxlbiArIDUwKQorICAgICAgICB0cnVuY2F0ZWQgPSAneCcgKiBtYXhsZW4gKyAnLi4uJworICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCisKK2RlZiB7ZnVuY19uYW1lfSgpOgorICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKKwore2Z1bmNfbmFtZX0oKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZnVuY19uYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOicsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgNCBpbiAlcycgJSB0cnVuY2F0ZWQsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgNiBpbiA8bW9kdWxlPicKKyAgICAgICAgXQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBIQVZFX1RIUkVBRFMsICduZWVkIHRocmVhZHMnKQorICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFja190aHJlYWRzKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGwgZXhwbGljaXRseSBkdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1UcnVlKSBhbmQgY2hlY2sgdGhlIG91dHB1dC4KKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkLCBFdmVudAoraW1wb3J0IHRpbWUKKworZGVmIGR1bXAoKToKKyAgICBpZiB7ZmlsZW5hbWV9OgorICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPVRydWUpCisgICAgZWxzZToKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPVRydWUpCisKK2NsYXNzIFdhaXRlcihUaHJlYWQpOgorICAgICMgYXZvaWQgYmxvY2tpbmcgaWYgdGhlIG1haW4gdGhyZWFkIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgZGFlbW9uID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5ydW5uaW5nID0gRXZlbnQoKQorICAgICAgICBzZWxmLnN0b3AgPSBFdmVudCgpCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bm5pbmcuc2V0KCkKKyAgICAgICAgc2VsZi5zdG9wLndhaXQoKQorCit3YWl0ZXIgPSBXYWl0ZXIoKQord2FpdGVyLnN0YXJ0KCkKK3dhaXRlci5ydW5uaW5nLndhaXQoKQorZHVtcCgpCit3YWl0ZXIuc3RvcC5zZXQoKQord2FpdGVyLmpvaW4oKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpKQorICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSAnXG4nLmpvaW4ob3V0cHV0KQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIGxpbmVubyA9IDgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVubyA9IDEwCisgICAgICAgIHJlZ2V4ID0gIiIiCiteVGhyZWFkIDB4WzAtOWEtZl0rOgorKD86ICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIFtfYS16XSsKKyl7ezEsM319ICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjMgaW4gcnVuCisgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcF9pbm5lcgorICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXAKKworQ3VycmVudCB0aHJlYWQgWFhYOgorICBGaWxlICI8c3RyaW5nPiIsIGxpbmUge2xpbmVub30gaW4gZHVtcAorICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjggaW4gPG1vZHVsZT4kCisiIiIuc3RyaXAoKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChsaW5lbm89bGluZW5vKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja190aHJlYWRzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoTm9uZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX3RocmVhZHNfZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhmaWxlbmFtZSkKKworICAgIGRlZiBfY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0LCBjYW5jZWwsIGZpbGVuYW1lLCBsb29wcyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBob3cgbWFueSB0aW1lcyB0aGUgdHJhY2ViYWNrIGlzIHdyaXR0ZW4gaW4gdGltZW91dCB4IDIuNSBzZWNvbmRzLAorICAgICAgICBvciB0aW1lb3V0IHggMy41IHNlY29uZHMgaWYgY2FuY2VsIGlzIFRydWU6IDEsIDIgb3IgMyB0aW1lcyBkZXBlbmRpbmcKKyAgICAgICAgb24gcmVwZWF0IGFuZCBjYW5jZWwgb3B0aW9ucy4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICB0aW1lb3V0X3N0ciA9IHN0cihkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1USU1FT1VUKSkKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IHRpbWUKKworZGVmIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKToKKyAgICBmb3IgbG9vcCBpbiByYW5nZShsb29wcyk6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcih0aW1lb3V0LCByZXBlYXQ9cmVwZWF0LCBmaWxlPWZpbGUpCisgICAgICAgIGlmIGNhbmNlbDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorICAgICAgICB0aW1lLnNsZWVwKHRpbWVvdXQgKiA1KQorICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKwordGltZW91dCA9IHt0aW1lb3V0fQorcmVwZWF0ID0ge3JlcGVhdH0KK2NhbmNlbCA9IHtjYW5jZWx9Citsb29wcyA9IHtsb29wc30KK2lmIHtoYXNfZmlsZW5hbWV9OgorICAgIGZpbGUgPSBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpCitlbHNlOgorICAgIGZpbGUgPSBOb25lCitmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcykKK2lmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgZmlsZS5jbG9zZSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICB0aW1lb3V0PVRJTUVPVVQsCisgICAgICAgICAgICByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgY2FuY2VsPWNhbmNlbCwKKyAgICAgICAgICAgIGxvb3BzPWxvb3BzLAorICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICkKKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKKworICAgICAgICBpZiBub3QgY2FuY2VsOgorICAgICAgICAgICAgY291bnQgPSBsb29wcworICAgICAgICAgICAgaWYgcmVwZWF0OgorICAgICAgICAgICAgICAgIGNvdW50ICo9IDIKKyAgICAgICAgICAgIGhlYWRlciA9IHInVGltZW91dCBcKCVzXCkhXG5UaHJlYWQgMHhbMC05YS1mXSs6XG4nICUgdGltZW91dF9zdHIKKyAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDksIDIwLCBoZWFkZXIsIG1pbl9jb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyksCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKScpCisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdD1GYWxzZSwgY2FuY2VsPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1GYWxzZSwgdHdpY2U9RmFsc2UpOgorICAgICAgICBpZiB0d2ljZToKKyAgICAgICAgICAgIGxvb3BzID0gMgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9vcHMgPSAxCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbG9vcHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihyZXBlYXQsIGNhbmNlbCwgTm9uZSwgbG9vcHMpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9yZXBlYXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIocmVwZWF0PVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9jYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoY2FuY2VsPVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGZpbGU9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX3R3aWNlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHR3aWNlPVRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgInJlZ2lzdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIucmVnaXN0ZXIiKQorICAgIGRlZiBjaGVja19yZWdpc3RlcihzZWxmLCBmaWxlbmFtZT1GYWxzZSwgYWxsX3RocmVhZHM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI9RmFsc2UsIGNoYWluPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlZ2lzdGVyIGEgaGFuZGxlciBkaXNwbGF5aW5nIHRoZSB0cmFjZWJhY2sgb24gYSB1c2VyIHNpZ25hbC4gUmFpc2UgdGhlCisgICAgICAgIHNpZ25hbCBhbmQgY2hlY2sgdGhlIHdyaXR0ZW4gdHJhY2ViYWNrLgorCisgICAgICAgIElmIGNoYWluIGlzIFRydWUsIGNoZWNrIHRoYXQgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyIGlzIGNhbGxlZC4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworCitkZWYgZnVuYyhzaWdudW0pOgorICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgaGFuZGxlci5jYWxsZWQgPSBUcnVlCitoYW5kbGVyLmNhbGxlZCA9IEZhbHNlCisKK2V4aXRjb2RlID0gMAorc2lnbnVtID0ge3NpZ251bX0KK3VucmVnaXN0ZXIgPSB7dW5yZWdpc3Rlcn0KK2NoYWluID0ge2NoYWlufQorCitpZiB7aGFzX2ZpbGVuYW1lfToKKyAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorZWxzZToKKyAgICBmaWxlID0gTm9uZQoraWYgY2hhaW46CisgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCitmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBmaWxlPWZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9e2FsbF90aHJlYWRzfSwgY2hhaW49e2NoYWlufSkKK2lmIHVucmVnaXN0ZXI6CisgICAgZmF1bHRoYW5kbGVyLnVucmVnaXN0ZXIoc2lnbnVtKQorZnVuYyhzaWdudW0pCitpZiBjaGFpbiBhbmQgbm90IGhhbmRsZXIuY2FsbGVkOgorICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dCA9IGZpbGUKKyAgICBlbHNlOgorICAgICAgICBvdXRwdXQgPSBzeXMuc3RkZXJyCisgICAgcHJpbnQoIkVycm9yOiBzaWduYWwgaGFuZGxlciBub3QgY2FsbGVkISIsIGZpbGU9b3V0cHV0KQorICAgIGV4aXRjb2RlID0gMQoraWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICBmaWxlLmNsb3NlKCkKK3N5cy5leGl0KGV4aXRjb2RlKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCisgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywKKyAgICAgICAgICAgIHNpZ251bT1zaWdudW0sCisgICAgICAgICAgICB1bnJlZ2lzdGVyPXVucmVnaXN0ZXIsCisgICAgICAgICAgICBjaGFpbj1jaGFpbiwKKyAgICAgICAgKQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQorICAgICAgICBpZiBub3QgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIGlmIGFsbF90aHJlYWRzOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWDpcbicKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVnZXggPSAnVHJhY2ViYWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soNywgMjgsIHJlZ2V4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKKyAgICAgICAgaWYgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoKQorCisgICAgZGVmIHRlc3RfdW5yZWdpc3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWdpc3Rlcih1bnJlZ2lzdGVyPVRydWUpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3RocmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2NoYWluKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGNoYWluPVRydWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZhdWx0SGFuZGxlclRlc3RzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CmluZGV4IGYzMTI4ODIuLjFlNzA2NDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CkBAIC0yLDE4ICsyLDMzIEBACiBUZXN0cyBmb3IgZmlsZWlucHV0IG1vZHVsZS4KIE5pY2sgTWF0aGV3c29uCiAnJycKLQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2ltcG9ydCBmaWxlaW5wdXQKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluawotaW1wb3J0IHN5cywgcmUKKwordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IGd6aXAKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnemlwID0gTm9uZQorCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSBmaWxlaW5wdXQgaW1wb3J0IEZpbGVJbnB1dCwgaG9va19lbmNvZGVkCiAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluaworCisKICMgVGhlIGZpbGVpbnB1dCBtb2R1bGUgaGFzIDIgaW50ZXJmYWNlczogdGhlIEZpbGVJbnB1dCBjbGFzcyB3aGljaCBkb2VzCiAjIGFsbCB0aGUgd29yaywgYW5kIGEgZmV3IGZ1bmN0aW9ucyAoaW5wdXQsIGV0Yy4pIHRoYXQgdXNlIGEgZ2xvYmFsIF9zdGF0ZQotIyB2YXJpYWJsZS4gIFdlIG9ubHkgdGVzdCB0aGUgRmlsZUlucHV0IGNsYXNzLCBzaW5jZSB0aGUgb3RoZXIgZnVuY3Rpb25zCi0jIG9ubHkgcHJvdmlkZSBhIHRoaW4gZmFjYWRlIG92ZXIgRmlsZUlucHV0LgorIyB2YXJpYWJsZS4KIAogIyBXcml0ZSBsaW5lcyAoYSBsaXN0IG9mIGxpbmVzKSB0byB0ZW1wIGZpbGUgbnVtYmVyIGksIGFuZCByZXR1cm4gdGhlCiAjIHRlbXAgZmlsZSdzIG5hbWUuCkBAIC0xMjEsNyArMTM2LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtLmdyb3VwKDEpKSwgZmkuZmlsZWxpbmVubygpKQogICAgICAgICBmaS5jbG9zZSgpCiAKK2NsYXNzIFVuY29uZGl0aW9uYWxseVJhaXNlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNlcHRpb25fdHlwZSk6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uX3R5cGUgPSBleGNlcHRpb25fdHlwZQorICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgIHJhaXNlIHNlbGYuZXhjZXB0aW9uX3R5cGUoKQorCiBjbGFzcyBGaWxlSW5wdXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKICAgICBkZWYgdGVzdF96ZXJvX2J5dGVfZmlsZXMoc2VsZik6CiAgICAgICAgIHQxID0gdDIgPSB0MyA9IHQ0ID0gTm9uZQogICAgICAgICB0cnk6CkBAIC0yMTksMTcgKzI0MywyMCBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJGaWxlSW5wdXQgc2hvdWxkIGNoZWNrIG9wZW5ob29rIGZvciBiZWluZyBjYWxsYWJsZSIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgICAgICAjIFhYWCBUaGUgcm90MTMgY29kZWMgd2FzIHJlbW92ZWQuCi0gICAgICAgICMgICAgIFNvIHRoaXMgdGVzdCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIHVzZSBzb21ldGhpbmcgZWxzZS4KLSAgICAgICAgIyAgICAgKE9yIHBlcmhhcHMgdGhlIEFQSSBuZWVkcyB0byBjaGFuZ2Ugc28gd2UgY2FuIGp1c3QgcGFzcwotICAgICAgICAjICAgICBhbiBlbmNvZGluZyByYXRoZXIgdGhhbiB1c2luZyBhIGhvb2s/KQotIyMgICAgICAgICB0cnk6Ci0jIyAgICAgICAgICAgICB0MSA9IHdyaXRlVG1wKDEsIFsiQVxuQiJdLCBtb2RlPSJ3YiIpCi0jIyAgICAgICAgICAgICBmaSA9IEZpbGVJbnB1dChmaWxlcz10MSwgb3Blbmhvb2s9aG9va19lbmNvZGVkKCJyb3QxMyIpKQotIyMgICAgICAgICAgICAgbGluZXMgPSBsaXN0KGZpKQotIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgWyJOXG4iLCAiTyJdKQotIyMgICAgICAgICBmaW5hbGx5OgotIyMgICAgICAgICAgICAgcmVtb3ZlX3RlbXBmaWxlcyh0MSkKKworICAgICAgICBjbGFzcyBDdXN0b21PcGVuSG9vazoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW4oKmFyZ3MpCisKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIGN1c3RvbV9vcGVuX2hvb2sgPSBDdXN0b21PcGVuSG9vaygpCisgICAgICAgIHdpdGggRmlsZUlucHV0KFt0XSwgb3Blbmhvb2s9Y3VzdG9tX29wZW5faG9vaykgYXMgZmk6CisgICAgICAgICAgICBmaS5yZWFkbGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdXN0b21fb3Blbl9ob29rLmludm9rZWQsICJvcGVuaG9vayBub3QgaW52b2tlZCIpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTI1NCw5ICsyODEsNTc2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsZXNfbGlzdF9zcGVjaWZpZWRfdG9fY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVtdKSBhcyBmaToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmkuX2ZpbGVzLCAoJy0nLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgICAgIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHJldHZhbDEgPSBmaVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR2YWwxLCAibGluZTFcbiIpCisgICAgICAgICAgICByZXR2YWwyID0gZmlbMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dmFsMiwgImxpbmUyXG4iKQorCisgICAgZGVmIHRlc3RfX2dldGl0ZW1fX2ludmFsaWRfa2V5KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIGFuIGluZGV4IHVuZXF1YWwgdG8KKyAgICAgICAgICAgdGhlIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmaVsxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzLCAoImFjY2Vzc2luZyBsaW5lcyBvdXQgb2Ygb3JkZXIiLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fZW9mKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBsaW5lIG51bWJlciBidXQgYXQKKyAgICAgICAgICAgZW5kLW9mLWlucHV0IiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSkgYXMgZmk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3MsICgiZW5kIG9mIGlucHV0IHJlYWNoZWQiLCkpCisKKyAgICBkZWYgdGVzdF9uZXh0ZmlsZV9vc2Vycm9yX2RlbGV0aW5nX2JhY2t1cChzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0Lm5leHRmaWxlKCkgd2hlbiB0aGUgYXR0ZW1wdCB0byBkZWxldGUKKyAgICAgICAgICAgdGhlIGJhY2t1cCBmaWxlIHdvdWxkIHJhaXNlIE9TRXJyb3IuICBUaGlzIGVycm9yIGlzIGV4cGVjdGVkIHRvIGJlCisgICAgICAgICAgIHNpbGVudGx5IGlnbm9yZWQiIiIKKworICAgICAgICBvc191bmxpbmtfb3JpZyA9IG9zLnVubGluaworICAgICAgICBvc191bmxpbmtfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgbmV4dChmaSkgIyBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgb3BlbmVkCisgICAgICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX3JlcGxhY2VtZW50CisgICAgICAgICAgICAgICAgZmkubmV4dGZpbGUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX29yaWcKKworICAgICAgICAjIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgdGVzdCBzY2VuYXJpbyB3YXMgYWN0dWFsbHkgaGl0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvc191bmxpbmtfcmVwbGFjZW1lbnQuaW52b2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcy51bmxpbmsoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfZnN0YXRfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuZnN0YXQoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19mc3RhdF9vcmlnID0gb3MuZnN0YXQKKyAgICAgICAgb3NfZnN0YXRfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuZnN0YXQgPSBvc19mc3RhdF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmZzdGF0ID0gb3NfZnN0YXRfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2ZzdGF0X3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihvcywgImNobW9kIiksICJvcy5jaG1vZCBkb2VzIG5vdCBleGlzdCIpCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfY2htb2RfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuY2htb2QoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19jaG1vZF9vcmlnID0gb3MuY2htb2QKKyAgICAgICAgb3NfY2htb2RfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QgPSBvc19jaG1vZF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNobW9kID0gb3NfY2htb2Rfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2NobW9kX3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfZmlsZW5vX3doZW5fVmFsdWVFcnJvcl9yYWlzZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEZpbGVub1JhaXNlc1ZhbHVlRXJyb3IoVW5jb25kaXRpb25hbGx5UmFpc2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIFVuY29uZGl0aW9uYWxseVJhaXNlLl9faW5pdF9fKHNlbGYsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX19jYWxsX18oKQorCisgICAgICAgIHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yID0gRmlsZW5vUmFpc2VzVmFsdWVFcnJvcigpCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0pIGFzIGZpOgorICAgICAgICAgICAgZmlsZV9iYWNrdXAgPSBmaS5fZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpLl9maWxlID0gdW5jb25kaXRpb25hbGx5X3JhaXNlX1ZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmaS5maWxlbm8oKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmaS5fZmlsZSA9IGZpbGVfYmFja3VwICMgbWFrZSBzdXJlIHRoZSBmaWxlIGdldHMgY2xlYW5lZCB1cAorCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yLmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAiX2ZpbGUuZmlsZW5vKCkgd2FzIG5vdCBpbnZva2VkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgLTEsICJmaWxlbm8oKSBzaG91bGQgcmV0dXJuIC0xIikKKworY2xhc3MgTW9ja0ZpbGVJbnB1dDoKKyAgICAiIiJBIGNsYXNzIHRoYXQgbW9ja3Mgb3V0IGZpbGVpbnB1dC5GaWxlSW5wdXQgZm9yIHVzZSBkdXJpbmcgdW5pdCB0ZXN0cyIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgYnVmc2l6ZT0wLAorICAgICAgICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSk6CisgICAgICAgIHNlbGYuZmlsZXMgPSBmaWxlcworICAgICAgICBzZWxmLmlucGxhY2UgPSBpbnBsYWNlCisgICAgICAgIHNlbGYuYmFja3VwID0gYmFja3VwCisgICAgICAgIHNlbGYuYnVmc2l6ZSA9IGJ1ZnNpemUKKyAgICAgICAgc2VsZi5tb2RlID0gbW9kZQorICAgICAgICBzZWxmLm9wZW5ob29rID0gb3Blbmhvb2sKKyAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYTogMCkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVzID0ge30KKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siY2xvc2UiXSArPSAxCisKKyAgICBkZWYgbmV4dGZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbIm5leHRmaWxlIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJuZXh0ZmlsZSJdCisKKyAgICBkZWYgZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImZpbGVuYW1lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdCisKKyAgICBkZWYgbGluZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJsaW5lbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImxpbmVubyJdCisKKyAgICBkZWYgZmlsZWxpbmVubyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siZmlsZWxpbmVubyJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siZmlsZWxpbmVubyJdCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJmaWxlbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImZpbGVubyJdCisKKyAgICBkZWYgaXNmaXJzdGxpbmUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImlzZmlyc3RsaW5lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJpc2ZpcnN0bGluZSJdCisKKyAgICBkZWYgaXNzdGRpbihzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siaXNzdGRpbiJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siaXNzdGRpbiJdCisKK2NsYXNzIEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgdW5pdCB0ZXN0cyBmb3IgdGhlIGdsb2JhbCBmdW5jdGlvbiBvZgorICAgICAgIHRoZSBmaWxlaW5wdXQgbW9kdWxlLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9vcmlnX3N0YXRlID0gZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICBzZWxmLl9vcmlnX0ZpbGVJbnB1dCA9IGZpbGVpbnB1dC5GaWxlSW5wdXQKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IE1vY2tGaWxlSW5wdXQKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IHNlbGYuX29yaWdfRmlsZUlucHV0CisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBzZWxmLl9vcmlnX3N0YXRlCisKKyAgICBkZWYgYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oc2VsZiwgbW9ja19maWxlX2lucHV0LCBtZXRob2RfbmFtZSk6CisgICAgICAgICMgYXNzZXJ0IHRoYXQgdGhlIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBuYW1lIHdhcyBpbnZva2VkIG9uY2UKKyAgICAgICAgYWN0dWFsX2NvdW50ID0gbW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzW21ldGhvZF9uYW1lXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb3VudCwgMSwgbWV0aG9kX25hbWUpCisgICAgICAgICMgYXNzZXJ0IHRoYXQgbm8gb3RoZXIgdW5leHBlY3RlZCBtZXRob2RzIHdlcmUgaW52b2tlZAorICAgICAgICBhY3R1YWxfdG90YWxfY291bnQgPSBsZW4obW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF90b3RhbF9jb3VudCwgMSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfaW5wdXQoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaW5wdXQoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICBhbmQgaXRzIF9maWxlIGF0dHJpYnV0ZSBpcyBhbHNvIG5vdCBOb25lLiAgRXhwZWN0IFJ1bnRpbWVFcnJvciB0bworICAgICAgICAgICBiZSByYWlzZWQgd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZSBhbmQgZm9yIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gKm5vdCogYmUgbW9kaWZpZWQuIiIiCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLl9maWxlID0gb2JqZWN0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pbnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJpbnB1dCgpIGFscmVhZHkgYWN0aXZlIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnN0YW5jZSwgZmlsZWlucHV0Ll9zdGF0ZSwgImZpbGVpbnB1dC5fc3RhdGUiKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgZmlsZWlucHV0LmlucHV0KCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lCisgICAgICAgICAgIGJ1dCBpdHMgX2ZpbGUgYXR0cmlidXRlICppcyogTm9uZS4gIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybgorICAgICAgICAgICBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdCB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQKKyAgICAgICAgICAgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKSBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkIGluc3RhbmNlLiIiIgorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5fZmlsZSA9IE5vbmUKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHNlbGYuZG9fdGVzdF9jYWxsX2lucHV0KCkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lCisgICAgICAgICAgIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybiBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdAorICAgICAgICAgICB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKQorICAgICAgICAgICBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkCisgICAgICAgICAgIGluc3RhbmNlLiIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBzZWxmLmRvX3Rlc3RfY2FsbF9pbnB1dCgpCisKKyAgICBkZWYgZG9fdGVzdF9jYWxsX2lucHV0KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVpbnB1dC5pbnB1dCgpIGNyZWF0ZXMgYSBuZXcgZmlsZWlucHV0LkZpbGVJbnB1dAorICAgICAgICAgICBvYmplY3QsIHBhc3NpbmcgdGhlIGdpdmVuIHBhcmFtZXRlcnMgdW5tb2RpZmllZCB0bworICAgICAgICAgICBmaWxlaW5wdXQuRmlsZUlucHV0Ll9faW5pdF9fKCkuICBOb3RlIHRoYXQgdGhpcyB0ZXN0IGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgIG1vbmtleSBwYXRjaGluZyBvZiBmaWxlaW5wdXQuRmlsZUlucHV0IGRvbmUgYnkgc2V0VXAoKS4iIiIKKyAgICAgICAgZmlsZXMgPSBvYmplY3QoKQorICAgICAgICBpbnBsYWNlID0gb2JqZWN0KCkKKyAgICAgICAgYmFja3VwID0gb2JqZWN0KCkKKyAgICAgICAgYnVmc2l6ZSA9IG9iamVjdCgpCisgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICBvcGVuaG9vayA9IG9iamVjdCgpCisKKyAgICAgICAgIyBjYWxsIGZpbGVpbnB1dC5pbnB1dCgpIHdpdGggZGlmZmVyZW50IHZhbHVlcyBmb3IgZWFjaCBhcmd1bWVudAorICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMsIGlucGxhY2U9aW5wbGFjZSwgYmFja3VwPWJhY2t1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9YnVmc2l6ZSwKKyAgICAgICAgICAgIG1vZGU9bW9kZSwgb3Blbmhvb2s9b3Blbmhvb2spCisKKyAgICAgICAgIyBlbnN1cmUgZmlsZWlucHV0Ll9zdGF0ZSB3YXMgc2V0IHRvIHRoZSByZXR1cm5lZCBvYmplY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIGZpbGVpbnB1dC5fc3RhdGUsICJmaWxlaW5wdXQuX3N0YXRlIikKKworICAgICAgICAjIGVuc3VyZSB0aGUgcGFyYW1ldGVycyB0byBmaWxlaW5wdXQuaW5wdXQoKSB3ZXJlIHBhc3NlZCBkaXJlY3RseQorICAgICAgICAjIHRvIEZpbGVJbnB1dC5fX2luaXRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZXMsIHJlc3VsdC5maWxlcywgImZpbGVzIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnBsYWNlLCByZXN1bHQuaW5wbGFjZSwgImlucGxhY2UiKQorICAgICAgICBzZWxmLmFzc2VydElzKGJhY2t1cCwgcmVzdWx0LmJhY2t1cCwgImJhY2t1cCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnVmc2l6ZSwgcmVzdWx0LmJ1ZnNpemUsICJidWZzaXplIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2RlLCByZXN1bHQubW9kZSwgIm1vZGUiKQorICAgICAgICBzZWxmLmFzc2VydElzKG9wZW5ob29rLCByZXN1bHQub3Blbmhvb2ssICJvcGVuaG9vayIpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2Nsb3NlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmNsb3NlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgZG9lcyBub3RoaW5nIGlmIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgaXMgTm9uZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBmaWxlaW5wdXQuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgaW52b2tlcyBjbG9zZSgpIG9uIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgYW5kIHNldHMgX3N0YXRlPU5vbmUiIiIKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIGZpbGVpbnB1dC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X25leHRmaWxlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0Lm5leHRmaWxlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5uZXh0ZmlsZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5uZXh0ZmlsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0Lm5leHRmaWxlKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubmV4dGZpbGUoKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgbmV4dGZpbGVfcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1sibmV4dGZpbGUiXSA9IG5leHRmaWxlX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lm5leHRmaWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgIm5leHRmaWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIG5leHRmaWxlX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5hbWUoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZW5hbWUoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVuYW1lKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVuYW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5hbWUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5maWxlbmFtZSgpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbmFtZV9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdID0gZmlsZW5hbWVfcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5hbWUoKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZW5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgZmlsZW5hbWVfcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9saW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQubGluZW5vKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5saW5lbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQubGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQubGluZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubGluZW5vKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJsaW5lbm8iXSA9IGxpbmVub19yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5saW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAibGluZW5vIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGxpbmVub19yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZWxpbmVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5maWxlbGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVsaW5lbm8oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgZmlsZWxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbGluZW5vIl0gPSBmaWxlbGluZW5vX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmZpbGVsaW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZWxpbmVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbGluZW5vX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5vKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmZpbGVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVubygpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbm9fcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siZmlsZW5vIl0gPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGluc3RhbmNlLmZpbGVub19yZXR2YWwgPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImZpbGVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbm9fcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9pc2ZpcnN0bGluZShCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzZmlyc3RsaW5lKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGlzZmlyc3RsaW5lX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImlzZmlyc3RsaW5lIl0gPSBpc2ZpcnN0bGluZV9yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJpc2ZpcnN0bGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc2ZpcnN0bGluZV9yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaXNzdGRpbigpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pc3N0ZGluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzc3RkaW4oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgaXNzdGRpbl9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJpc3N0ZGluIl0gPSBpc3N0ZGluX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lmlzc3RkaW4oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiaXNzdGRpbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc3N0ZGluX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgSW52b2NhdGlvblJlY29yZGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50ID0gMAorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnQgKz0gMQorICAgICAgICBzZWxmLmxhc3RfaW52b2NhdGlvbiA9IChhcmdzLCBrd2FyZ3MpCisKK2NsYXNzIFRlc3RfaG9va19jb21wcmVzc2VkKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaG9va19jb21wcmVzc2VkKCkiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiIiwgMSkKKworICAgIGRlZiB0ZXN0X25vX2V4dChzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oImFiY2QiLCAyKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ3ppcCwgIlJlcXVpcmVzIGd6aXAgYW5kIHpsaWIiKQorICAgIGRlZiB0ZXN0X2d6X2V4dF9mYWtlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9vcGVuID0gZ3ppcC5vcGVuCisgICAgICAgIGd6aXAub3BlbiA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuZ3oiLCAzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZ3ppcC5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuZ3oiLCAzKSwge30pKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAiUmVxdWlyZXMgYnoyIikKKyAgICBkZWYgdGVzdF9iejJfZXh0X2Zha2Uoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBiejIuQloyRmlsZQorICAgICAgICBiejIuQloyRmlsZSA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuYnoyIiwgNCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6Mi5CWjJGaWxlID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuYnoyIiwgNCksIHt9KSkKKworICAgIGRlZiB0ZXN0X2JsYWhfZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5ibGFoIiwgNSkKKworICAgIGRlZiB0ZXN0X2d6X2V4dF9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5HeiIsIDYpCisKKyAgICBkZWYgdGVzdF9iejJfZXh0X2J1aWx0aW4oc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCJhYmNkLkJ6MiIsIDcpCisKKyAgICBkZWYgZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKHNlbGYsIGZpbGVuYW1lLCBtb2RlKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IHNlbGYucmVwbGFjZV9idWlsdGluX29wZW4oc2VsZi5mYWtlX29wZW4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnJlcGxhY2VfYnVpbHRpbl9vcGVuKG9yaWdpbmFsX29wZW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5pbnZvY2F0aW9uX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpbGVuYW1lLCBtb2RlKSwge30pKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiByZXBsYWNlX2J1aWx0aW5fb3BlbihuZXdfb3Blbl9mdW5jKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KKyAgICAgICAgYnVpbHRpbnMub3BlbiA9IG5ld19vcGVuX2Z1bmMKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsX29wZW4KKworY2xhc3MgVGVzdF9ob29rX2VuY29kZWQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSIiIgorCisgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgIGVuY29kaW5nID0gb2JqZWN0KCkKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZykKKworICAgICAgICBmYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgorICAgICAgICBidWlsdGlucy5vcGVuID0gZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb2JqZWN0KCkKKyAgICAgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICAgICAgb3Blbl9yZXN1bHQgPSByZXN1bHQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBidWlsdGlucy5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFrZV9vcGVuLmludm9jYXRpb25fY291bnQsIDEpCisKKyAgICAgICAgYXJncywga3dhcmdzID0gZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMF0sIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIG1vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJ1ZmZlclNpemVzVGVzdHMsIEZpbGVJbnB1dFRlc3RzKQorICAgIHJ1bl91bml0dGVzdCgKKyAgICAgICAgQnVmZmVyU2l6ZXNUZXN0cywKKyAgICAgICAgRmlsZUlucHV0VGVzdHMsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lucHV0LAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9jbG9zZSwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfbmV4dGZpbGUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVuYW1lLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9saW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVubywKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfaXNmaXJzdGxpbmUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4sCisgICAgICAgIFRlc3RfaG9va19jb21wcmVzc2VkLAorICAgICAgICBUZXN0X2hvb2tfZW5jb2RlZCwKKyAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKaW5kZXggYjViZDhkNC4uMDg0Nzk2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKQEAgLTIsNiArMiw3IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgZXJybm8KIGltcG9ydCB1bml0dGVzdAogZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKQEAgLTM2OSwxMCArMzcwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQogICAgICAgICBmLnRydW5jYXRlKDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlaygwLCBvcy5TRUVLX0VORCksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKDAsIGlvLlNFRUtfRU5EKSwgNSkKICAgICAgICAgZi50cnVuY2F0ZSgxNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgb3MuU0VFS19FTkQpLCAxNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgaW8uU0VFS19FTkQpLCAxNSkKICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdFRydW5jYXRlT25XaW5kb3dzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggNGQ3YmJiYS4uNTAyMjkyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC04OCw3ICs4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAiICAtMHgzLnAtMSAgIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICIgICsweDMucC0xICAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KCIgIDI1LmUtMSAgIiksIDIuNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmZjbXAoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSkKIAogICAgIGRlZiB0ZXN0X2Zsb2F0Y29udmVyc2lvbihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBjYWxscyB0byBfX2Zsb2F0X18oKSB3b3JrIHByb3Blcmx5CkBAIC04NjAsMTUgKzg2MCwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigxZTMwMCAqIDFlMzAwICogMCksICJuYW4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigtMWUzMDAgKiAxZTMwMCAqIDApLCAibmFuIikKIAotICAgIGRlZiBub3Rlc3RfZmxvYXRfbmFuKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoTkFOLmlzX25hbigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKElORi5pc19uYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMC4pLmlzX25hbigpKQorICAgIGRlZiB0ZXN0X2luZl9zaWducyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCdpbmYnKSksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCctaW5mJykpLCAtMS4wKQogCi0gICAgZGVmIG5vdGVzdF9mbG9hdF9pbmYoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJTkYuaXNfaW5mKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoTkFOLmlzX2luZigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgwLikuaXNfaW5mKCkpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzeXMsICdmbG9hdF9yZXByX3N0eWxlJywgJycpID09ICdzaG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpZXMgb25seSB3aGVuIHVzaW5nIHNob3J0IGZsb2F0IHJlcHIgc3R5bGUiKQorICAgIGRlZiB0ZXN0X25hbl9zaWducyhzZWxmKToKKyAgICAgICAgIyBXaGVuIHVzaW5nIHRoZSBkdG9hLmMgY29kZSwgdGhlIHNpZ24gb2YgZmxvYXQoJ25hbicpIHNob3VsZAorICAgICAgICAjIGJlIHByZWRpY3RhYmxlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJ25hbicpKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJy1uYW4nKSksIC0xLjApCisKIAogZnJvbUhleCA9IGZsb2F0LmZyb21oZXgKIHRvSGV4ID0gZmxvYXQuaGV4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IDdmYTk1MGQuLmI2ZTI1NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC0xLDQgKzEsNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRlc3RGYWlsZWQKK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZXN0LnN1cHBvcnQgYXMgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNjMsNiArMjY0LDUxIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoJyIlKmQiJShtYXhzaXplLCAtMTI3KSBzaG91bGQgZmFpbCcpCiAKKyAgICBkZWYgdGVzdF9ub25fYXNjaWkoc2VsZik6CisgICAgICAgIHRlc3Rmb3JtYXQoIlx1MjBhYz0lZiIsICgxLjAsKSwgIlx1MjBhYz0xLjAwMDAwMCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoImFiYyIsICJcdTIwMDc8NSIpLCAiYWJjXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzLCAiXHUyMDA3PDUiKSwgIjEyM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyLjMsICJcdTIwMDc8NiIpLCAiMTIuM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PDQiKSwgIjBqXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwNzw4IiksICIoMSsyailcdTIwMDdcdTIwMDciKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KCJhYmMiLCAiXHUyMDA3PjUiKSwgIlx1MjAwN1x1MjAwN2FiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMywgIlx1MjAwNz41IiksICJcdTIwMDdcdTIwMDcxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMi4zLCAiXHUyMDA3PjYiKSwgIlx1MjAwN1x1MjAwNzEyLjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxKzJqLCAiXHUyMDA3PjgiKSwgIlx1MjAwN1x1MjAwNygxKzJqKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PjQiKSwgIlx1MjAwN1x1MjAwNzBqIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgiYWJjIiwgIlx1MjAwN141IiksICJcdTIwMDdhYmNcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjMsICJcdTIwMDdeNSIpLCAiXHUyMDA3MTIzXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIuMywgIlx1MjAwN142IiksICJcdTIwMDcxMi4zXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwN144IiksICJcdTIwMDcoMSsyailcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgwaiwgIlx1MjAwN140IiksICJcdTIwMDcwalx1MjAwNyIpCisKKyAgICBkZWYgdGVzdF9sb2NhbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9sZGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgJycpCisgICAgICAgIGV4Y2VwdCBsb2NhbGUuRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ2Fubm90IHNldCBsb2NhbGU6IHt9Ii5mb3JtYXQoZXJyKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlY29udiA9IGxvY2FsZS5sb2NhbGVjb252KCkKKyAgICAgICAgICAgIHNlcCA9IGxvY2FsZWNvbnZbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICAgICAgcG9pbnQgPSBsb2NhbGVjb252WydkZWNpbWFsX3BvaW50J10KKworICAgICAgICAgICAgdGV4dCA9IGZvcm1hdCgxMjM0NTY3ODksICJuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VwLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0NTY3ODknKQorCisgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0KDEyMzQuNSwgIm4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZXAsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBvaW50LCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0JyArIHBvaW50ICsgJzUnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBvbGRsb2MpCisKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm9ybWF0VGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCAwODRhZTBjLi4xZmFkOTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtNDAxLDE0ICs0MDEsMTAgQEAKIAogICAgIGRlZiB0ZXN0TWl4aW5nV2l0aERlY2ltYWwoc2VsZik6CiAgICAgICAgICMgRGVjaW1hbCByZWZ1c2VzIG1peGVkIGFyaXRobWV0aWMgKGJ1dCBub3QgbWl4ZWQgY29tcGFyaXNvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yICs6ICdGcmFjdGlvbicgYW5kICdEZWNpbWFsJyIsCi0gICAgICAgICAgICBvcGVyYXRvci5hZGQsIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciArOiAnRGVjaW1hbCcgYW5kICdGcmFjdGlvbiciLAotICAgICAgICAgICAgb3BlcmF0b3IuYWRkLCBEZWNpbWFsKCczLjE0MTU5MjYnKSwgRigzLDExKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1OTI2JyksIEYoMywxMSkpCiAKICAgICBkZWYgdGVzdENvbXBhcmlzb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoRigxLCAyKSA8IEYoMiwgMykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zyb3plbi5weSBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CmluZGV4IDUyNDNlYmIuLmZkNjc2MWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CkBAIC01LDYgKzUsMTIgQEAKIGltcG9ydCBzeXMKIAogY2xhc3MgRnJvemVuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlX2F0dHJzID0gZnJvemVuc2V0KFsnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nXSkKKyAgICBwYWNrYWdlX2F0dHJzID0gZnJvemVuc2V0KGxpc3QobW9kdWxlX2F0dHJzKSArIFsnX19wYXRoX18nXSkKKwogICAgIGRlZiB0ZXN0X2Zyb3plbihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICB0cnk6CkBAIC0xMiw3ICsxOCw5IEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX2hlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9faGVsbG9fXy5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX2hlbGxvX18pKSwgNywgZGlyKF9faGVsbG9fXykpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5tb2R1bGVfYXR0cnMpCisgICAgICAgICAgICBleHBlY3QuYWRkKCdpbml0aWFsaXplZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19oZWxsb19fKSksIGV4cGVjdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CkBAIC0yMSwxMCArMjksMTMgQEAKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiaW1wb3J0IF9fcGhlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uaW5pdGlhbGl6ZWQsIFRydWUpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQogICAgICAgICAgICAgaWYgbm90ICJfX3BoZWxsb19fLnNwYW0iIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDgsIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDksIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBleHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uX19wYXRoX18sIFtfX3BoZWxsb19fLl9fbmFtZV9fXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKQEAgLTM0LDggKzQ1LDEzIEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX3BoZWxsb19fLnNwYW0gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uc3BhbS5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fLnNwYW0pKSwgNykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDkpCisgICAgICAgICAgICBzcGFtX2V4cGVjdCA9IHNldChzZWxmLm1vZHVsZV9hdHRycykKKyAgICAgICAgICAgIHNwYW1fZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18uc3BhbSkpLCBzcGFtX2V4cGVjdCkKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgcGhlbGxvX2V4cGVjdC5hZGQoJ2luaXRpYWxpemVkJykKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX3BoZWxsb19fKSksIHBoZWxsb19leHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQogCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggNzFiYzIzZS4uMjk5YTE0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTIyLDEwICsyMiwyNSBAQAogdGhyZWFkaW5nID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiAjIHRoZSBkdW1teSBkYXRhIHJldHVybmVkIGJ5IHNlcnZlciBvdmVyIHRoZSBkYXRhIGNoYW5uZWwgd2hlbgotIyBSRVRSLCBMSVNUIGFuZCBOTFNUIGNvbW1hbmRzIGFyZSBpc3N1ZWQKKyMgUkVUUiwgTElTVCwgTkxTVCwgTUxTRCBjb21tYW5kcyBhcmUgaXNzdWVkCiBSRVRSX0RBVEEgPSAnYWJjZGUxMjM0NVxyXG4nICogMTAwMAogTElTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJwogTkxTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJworTUxTRF9EQVRBID0gKCJ0eXBlPWNkaXI7cGVybT1lbDt1bmlxdWU9PWtlVk8xK1pGNDsgdGVzdFxyXG4iCisgICAgICAgICAgICAgInR5cGU9cGRpcjtwZXJtPWU7dW5pcXVlPT1rZVZPMStkPzM7IC4uXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1PUy51bml4PXNsaW5rOi9mb29iYXI7cGVybT07dW5pcXVlPT1rZVZPMSs0RzQ7IGZvb2JhclxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1jaHItMTMvMjk7cGVybT07dW5pcXVlPT1rZVZPMSs1RzQ7IGRldmljZVxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1ibGstMTEvMTA4O3Blcm09O3VuaXF1ZT09a2VWTzErNkc0OyBibG9ja1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPWF3cjt1bmlxdWU9PWtlVk8xKzhHNDsgd3JpdGFibGVcclxuIgorICAgICAgICAgICAgICJ0eXBlPWRpcjtwZXJtPWNwbWVsO3VuaXF1ZT09a2VWTzErN0c0OyBwcm9taXNjdW91c1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09O3VuaXF1ZT09a2VWTzErMXQyOyBuby1leGVjXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0VHNDsgdHdvIHdvcmRzXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0lINDsgIGxlYWRpbmcgc3BhY2VcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlMVxyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09Y3BtZWw7dW5pcXVlPT1rZVZPMSs3RzQ7IGluY29taW5nXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xKzFHNDsgZmlsZTJcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlM1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMSsxRzQ7IGZpbGU0XHJcbiIpCiAKIAogY2xhc3MgRHVtbXlEVFBIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgpAQCAtNDksNiArNjQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuZHRwX2Nvbm5fY2xvc2VkID0gVHJ1ZQogCiAgICAgZGVmIHB1c2goc2VsZiwgd2hhdCk6CisgICAgICAgIGlmIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdoYXQgPSBzZWxmLmJhc2VjbGFzcy5uZXh0X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSA9IE5vbmUKKyAgICAgICAgaWYgbm90IHdoYXQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogICAgICAgICBzdXBlcihEdW1teURUUEhhbmRsZXIsIHNlbGYpLnB1c2god2hhdC5lbmNvZGUoJ2FzY2lpJykpCiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgpAQCAtNjksNiArODksNyBAQAogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfY21kID0gTm9uZQogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfZGF0YSA9ICcnCiAgICAgICAgIHNlbGYubmV4dF9yZXNwb25zZSA9ICcnCisgICAgICAgIHNlbGYubmV4dF9kYXRhID0gTm9uZQogICAgICAgICBzZWxmLnJlc3QgPSBOb25lCiAgICAgICAgIHNlbGYucHVzaCgnMjIwIHdlbGNvbWUnKQogCkBAIC0xMDQsNyArMTI1LDcgQEAKICAgICAgICAgYWRkciA9IGxpc3QobWFwKGludCwgYXJnLnNwbGl0KCcsJykpKQogICAgICAgICBpcCA9ICclZC4lZC4lZC4lZCcgJXR1cGxlKGFkZHJbOjRdKQogICAgICAgICBwb3J0ID0gKGFkZHJbNF0gKiAyNTYpICsgYWRkcls1XQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0xMjIsNyArMTQzLDcgQEAKICAgICBkZWYgY21kX2VwcnQoc2VsZiwgYXJnKToKICAgICAgICAgYWYsIGlwLCBwb3J0ID0gYXJnLnNwbGl0KGFyZ1swXSlbMTotMV0KICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0yMTMsNiArMjM0LDE0IEBACiAgICAgICAgIHNlbGYuZHRwLnB1c2goTkxTVF9EQVRBKQogICAgICAgICBzZWxmLmR0cC5jbG9zZV93aGVuX2RvbmUoKQogCisgICAgZGVmIGNtZF9vcHRzKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMjAwIG9wdHMgb2snKQorCisgICAgZGVmIGNtZF9tbHNkKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMTI1IG1sc2Qgb2snKQorICAgICAgICBzZWxmLmR0cC5wdXNoKE1MU0RfREFUQSkKKyAgICAgICAgc2VsZi5kdHAuY2xvc2Vfd2hlbl9kb25lKCkKKwogCiBjbGFzcyBEdW1teUZUUFNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyLCB0aHJlYWRpbmcuVGhyZWFkKToKIApAQCAtMjc0LDExICszMDMsMTEgQEAKICAgICAgICAgX3NzbF9jbG9zaW5nID0gRmFsc2UKIAogICAgICAgICBkZWYgc2VjdXJlX2Nvbm5lY3Rpb24oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNlcnZlcl9zaWRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNvY2tldCkKICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCiAKQEAgLTMxMyw3ICszNDIsMTAgQEAKICAgICAgICAgICAgICAgICAjIGh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9vcGVuc3NsLXVzZXJzQG9wZW5zc2wub3JnL21zZzYwNzEwLmh0bWwKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLl9zc2xfY2xvc2luZyA9IEZhbHNlCi0gICAgICAgICAgICBzdXBlcihTU0xDb25uZWN0aW9uLCBzZWxmKS5jbG9zZSgpCisgICAgICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfY2NjJywgRmFsc2UpIGlzIEZhbHNlOgorICAgICAgICAgICAgICAgIHN1cGVyKFNTTENvbm5lY3Rpb24sIHNlbGYpLmNsb3NlKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGRlZiBoYW5kbGVfcmVhZF9ldmVudChzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NzbF9hY2NlcHRpbmc6CkBAIC0zODEsMTIgKzQxMywxOCBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubik6CiAgICAgICAgICAgICBEdW1teUZUUEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgIHNlbGYuc2VjdXJlX2RhdGFfY2hhbm5lbCA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9jY2MgPSBGYWxzZQogCiAgICAgICAgIGRlZiBjbWRfYXV0aChzZWxmLCBsaW5lKToKICAgICAgICAgICAgICIiIlNldCB1cCBzZWN1cmUgY29udHJvbCBjaGFubmVsLiIiIgogICAgICAgICAgICAgc2VsZi5wdXNoKCcyMzQgQVVUSCBUTFMgc3VjY2Vzc2Z1bCcpCiAgICAgICAgICAgICBzZWxmLnNlY3VyZV9jb25uZWN0aW9uKCkKIAorICAgICAgICBkZWYgY21kX2NjYyhzZWxmLCBsaW5lKToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjIwIFJldmVydGluZyBiYWNrIHRvIGNsZWFyLXRleHQnKQorICAgICAgICAgICAgc2VsZi5fY2NjID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZG9fc3NsX3NodXRkb3duKCkKKwogICAgICAgICBkZWYgY21kX3Bic3ooc2VsZiwgbGluZSk6CiAgICAgICAgICAgICAiIiJOZWdvdGlhdGUgc2l6ZSBvZiBidWZmZXIgZm9yIHNlY3VyZSBkYXRhIHRyYW5zZmVyLgogICAgICAgICAgICAgRm9yIFRMUy9TU0wgdGhlIG9ubHkgdmFsaWQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaXMgJzAnLgpAQCAtNDE2LDEzICs0NTQsMTcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlGVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCh0aW1lb3V0PTEwKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFAodGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCiAKKyAgICBkZWYgY2hlY2tfZGF0YShzZWxmLCByZWNlaXZlZCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNlaXZlZCksIGxlbihleHBlY3RlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfZ2V0d2VsY29tZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5nZXR3ZWxjb21lKCksICcyMjAgd2VsY29tZScpCiAKQEAgLTUwNCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgIHNlbGYuY2xpZW50LnJldHJiaW5hcnkoJ3JldHInLCBjYWxsYmFjaykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBKQorICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKIAogICAgIGRlZiB0ZXN0X3JldHJiaW5hcnlfcmVzdChzZWxmKToKICAgICAgICAgZGVmIGNhbGxiYWNrKGRhdGEpOgpAQCAtNTEyLDIwICs1NTQsMTcgQEAKICAgICAgICAgZm9yIHJlc3QgaW4gKDAsIDEwLCAyMCk6CiAgICAgICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5yZXRyYmluYXJ5KCdyZXRyJywgY2FsbGJhY2ssIHJlc3Q9cmVzdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0ncmVzdCB0ZXN0IGNhc2UgJWQgJWQgJWQnICUgKHJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbignJy5qb2luKHJlY2VpdmVkKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihSRVRSX0RBVEFbcmVzdDpdKSkpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0pCiAKICAgICBkZWYgdGVzdF9yZXRybGluZXMoc2VsZik6CiAgICAgICAgIHJlY2VpdmVkID0gW10KICAgICAgICAgc2VsZi5jbGllbnQucmV0cmxpbmVzKCdyZXRyJywgcmVjZWl2ZWQuYXBwZW5kKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKKyAgICAgICAgc2VsZi5jaGVja19kYXRhKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKIAogICAgIGRlZiB0ZXN0X3N0b3JiaW5hcnkoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5lbmNvZGUoJ2FzY2lpJykpCiAgICAgICAgIHNlbGYuY2xpZW50LnN0b3JiaW5hcnkoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NDIsNyArNTgxLDcgQEAKICAgICBkZWYgdGVzdF9zdG9ybGluZXMoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5yZXBsYWNlKCdcclxuJywgJ1xuJykuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICBzZWxmLmNsaWVudC5zdG9ybGluZXMoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NTgsNiArNTk3LDY0IEBACiAgICAgICAgIHNlbGYuY2xpZW50LmRpcihsYW1iZGEgeDogbC5hcHBlbmQoeCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihsKSwgTElTVF9EQVRBLnJlcGxhY2UoJ1xyXG4nLCAnJykpCiAKKyAgICBkZWYgdGVzdF9tbHNkKHNlbGYpOgorICAgICAgICBsaXN0KHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nLCBmYWN0cz1bJ3NpemUnLCAndHlwZSddKSkKKworICAgICAgICBscyA9IGxpc3Qoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICBmb3IgbmFtZSwgZmFjdHMgaW4gbHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobmFtZSwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZhY3RzLCBkaWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0eXBlJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwZXJtJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd1bmlxdWUnLCBmYWN0cykKKworICAgICAgICBkZWYgc2V0X2RhdGEoZGF0YSk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLm5leHRfZGF0YSA9IGRhdGEKKworICAgICAgICBkZWYgdGVzdF9lbnRyeShsaW5lLCB0eXBlPU5vbmUsIHBlcm09Tm9uZSwgdW5pcXVlPU5vbmUsIG5hbWU9Tm9uZSk6CisgICAgICAgICAgICB0eXBlID0gJ3R5cGUnIGlmIHR5cGUgaXMgTm9uZSBlbHNlIHR5cGUKKyAgICAgICAgICAgIHBlcm0gPSAncGVybScgaWYgcGVybSBpcyBOb25lIGVsc2UgcGVybQorICAgICAgICAgICAgdW5pcXVlID0gJ3VuaXF1ZScgaWYgdW5pcXVlIGlzIE5vbmUgZWxzZSB1bmlxdWUKKyAgICAgICAgICAgIG5hbWUgPSAnbmFtZScgaWYgbmFtZSBpcyBOb25lIGVsc2UgbmFtZQorICAgICAgICAgICAgc2V0X2RhdGEobGluZSkKKyAgICAgICAgICAgIF9uYW1lLCBmYWN0cyA9IG5leHQoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3R5cGUnXSwgdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3Blcm0nXSwgcGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3VuaXF1ZSddLCB1bmlxdWUpCisKKyAgICAgICAgIyBwbGFpbgorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgIyAiPSIgaW4gZmFjdCB2YWx1ZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InR5PXBlIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT09dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9dHlwZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dD15PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InQ9eT1wZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9PT09PTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9PT09IikKKyAgICAgICAgIyBzcGFjZXMgaW4gbmFtZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hIG1lXHJcbicsIG5hbWU9Im5hIG1lIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lIFxyXG4nLCBuYW1lPSJuYW1lICIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgIG5hbWVcclxuJywgbmFtZT0iIG5hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG4gYW0gIGVcclxuJywgbmFtZT0ibiBhbSAgZSIpCisgICAgICAgICMgIjsiIGluIG5hbWUKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYTttZVxyXG4nLCBuYW1lPSJuYTttZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgO25hbWVcclxuJywgbmFtZT0iO25hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDtuYW1lO1xyXG4nLCBuYW1lPSI7bmFtZTsiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDs7OztcclxuJywgbmFtZT0iOzs7OyIpCisgICAgICAgICMgY2FzZSBzZW5zaXRpdmVuZXNzCisgICAgICAgIHNldF9kYXRhKCdUeXBlPXR5cGU7VHlQZT1wZXJtO1VOSVFVRT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgX25hbWUsIGZhY3RzID0gbmV4dChzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgIGZvciB4IGluIGZhY3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguaXNsb3dlcigpKQorICAgICAgICAjIG5vIGRhdGEgKGRpcmVjdG9yeSBlbXB0eSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIGZvciB4IGluIHNlbGYuY2xpZW50Lm1sc2QoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIGRhdGEpCisKICAgICBkZWYgdGVzdF9tYWtlcG9ydChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC5tYWtlcG9ydCgpOgogICAgICAgICAgICAgIyBJUHY0IGlzIGluIHVzZSwganVzdCBtYWtlIHN1cmUgc2VuZF9lcHJ0IGhhcyBub3QgYmVlbiB1c2VkCkBAIC01ODQsNyArNjgxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgIyBiYXNlIHRlc3QKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKQEAgLTU5Miw3ICs2ODksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKIAogICAgICAgICAjIFFVSVQgc2VudCBpbnNpZGUgdGhlIHdpdGggYmxvY2sKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCkBAIC02MDIsNyArNjk5LDcgQEAKICAgICAgICAgIyBmb3JjZSBhIHdyb25nIHJlc3BvbnNlIGNvZGUgdG8gYmUgc2VudCBvbiBRVUlUOiBlcnJvcl9wZXJtCiAgICAgICAgICMgaXMgZXhwZWN0ZWQgYW5kIHRoZSBjb25uZWN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIGNsb3NlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0xMCkgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5uZXh0X3Jlc3BvbnNlID0gJzU1MCBlcnJvciBvbiBxdWl0JwpAQCAtNjE2LDYgKzcxMywzMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9jbWQsICdxdWl0JykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jbGllbnRfY29ubmVjdGVkKCkpCiAKKyAgICBkZWYgdGVzdF9zb3VyY2VfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPShIT1NULCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuc29jay5nZXRzb2NrbmFtZSgpWzFdLCBwb3J0KQorICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3Rfc291cmNlX2FkZHJlc3NfcGFzc2l2ZV9jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgc2VsZi5jbGllbnQuc291cmNlX2FkZHJlc3MgPSAoSE9TVCwgcG9ydCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpIGFzIHNvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLmdldHNvY2tuYW1lKClbMV0sIHBvcnQpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCiAgICAgZGVmIHRlc3RfcGFyc2UyNTcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwbGliLnBhcnNlMjU3KCcyNTcgIi9mb28vYmFyIicpLCAnL2Zvby9iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cGxpYi5wYXJzZTI1NygnMjU3ICIvZm9vL2JhciIgY3JlYXRlZCcpLCAnL2Zvby9iYXInKQpAQCAtNjMyLDcgKzc1Myw3IEBACiBjbGFzcyBUZXN0SVB2NkVudmlyb25tZW50KFRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoSE9TVCwgMCksIGFmPXNvY2tldC5BRl9JTkVUNikKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoJzo6MScsIDApLCBhZj1zb2NrZXQuQUZfSU5FVDYpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKCkKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQpAQCAtNjYxLDYgKzc4Miw3IEBACiAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICAgICAgc2VsZi5jbGllbnQucmV0cmJpbmFyeSgncmV0cicsIGNhbGxiYWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oJycuam9pbihyZWNlaXZlZCkpLCBsZW4oUkVUUl9EQVRBKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKICAgICAgICAgc2VsZi5jbGllbnQuc2V0X3Bhc3YoVHJ1ZSkKICAgICAgICAgcmV0cigpCkBAIC02NzYsNyArNzk4LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlUTFNfRlRQU2VydmVyKChIT1NULCAwKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICMgZW5hYmxlIFRMUwogICAgICAgICBzZWxmLmNsaWVudC5hdXRoKCkKQEAgLTY4OSw3ICs4MTEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVRMU19GVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0xMCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTc0OSw3ICs4NzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdHBsaWIuRlRQX1RMUywgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIGNvbnRleHQ9Y3R4KQogCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uoc2VsZi5jbGllbnQuc29jaywgc3NsLlNTTFNvY2tldCkKICAgICAgICAgc2VsZi5jbGllbnQuYXV0aCgpCkBAIC03NjEsNiArODgzLDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNvY2suY29udGV4dCwgY3R4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCiAKKyAgICBkZWYgdGVzdF9jY2Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuY2xpZW50LmNjYykKKyAgICAgICAgc2VsZi5jbGllbnQubG9naW4oc2VjdXJlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmNsaWVudC5zb2NrLCBzc2wuU1NMU29ja2V0KQorICAgICAgICBzZWxmLmNsaWVudC5jY2MoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmNsaWVudC5zb2NrLnVud3JhcCkKKwogCiBjbGFzcyBUZXN0VGltZW91dHMoVGVzdENhc2UpOgogCkBAIC04NTcsMTMgKzk4Niw4IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0c10KLSAgICBpZiBzb2NrZXQuaGFzX2lwdjY6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIER1bW15RlRQU2VydmVyKChIT1NULCAwKSwgYWY9c29ja2V0LkFGX0lORVQ2KQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RJUHY2RW52aXJvbm1lbnQpCisgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6CisgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0SVB2NkVudmlyb25tZW50KQogCiAgICAgaWYgc3NsIGlzIG5vdCBOb25lOgogICAgICAgICB0ZXN0cy5leHRlbmQoW1Rlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzc10pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CmluZGV4IDRkMTkzNjguLmM4ZWQ4MzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CkBAIC0yLDYgKzIsMTUgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKKworZGVmIGdsb2JhbF9mdW5jdGlvbigpOgorICAgIGRlZiBpbm5lcl9mdW5jdGlvbigpOgorICAgICAgICBjbGFzcyBMb2NhbENsYXNzOgorICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gTG9jYWxDbGFzcworICAgIHJldHVybiBsYW1iZGE6IGlubmVyX2Z1bmN0aW9uCisKKwogY2xhc3MgRnVuY0F0dHJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBjbGFzcyBGOgpAQCAtOTYsNiArMTA1LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5maS5hLl9fbmFtZV9fLCAnYScpCiAgICAgICAgIHNlbGYuY2Fubm90X3NldF9hdHRyKHNlbGYuZmkuYSwgIl9fbmFtZV9fIiwgJ2EnLCBBdHRyaWJ1dGVFcnJvcikKIAorICAgIGRlZiB0ZXN0X19fcXVhbG5hbWVfXyhzZWxmKToKKyAgICAgICAgIyBQRVAgMzE1NQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdGdW5jQXR0cnNUZXN0LnNldFVwLjxsb2NhbHM+LmInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZ1bmNBdHRyc1Rlc3Quc2V0VXAuX19xdWFsbmFtZV9fLCAnRnVuY0F0dHJzVGVzdC5zZXRVcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uLl9fcXVhbG5hbWVfXywgJ2dsb2JhbF9mdW5jdGlvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uPGxhbWJkYT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uaW5uZXJfZnVuY3Rpb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpKCkoKS5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsb2JhbF9mdW5jdGlvbi48bG9jYWxzPi5pbm5lcl9mdW5jdGlvbi48bG9jYWxzPi5Mb2NhbENsYXNzJykKKyAgICAgICAgc2VsZi5iLl9fcXVhbG5hbWVfXyA9ICdjJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdjJykKKyAgICAgICAgc2VsZi5iLl9fcXVhbG5hbWVfXyA9ICdkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdkJykKKyAgICAgICAgIyBfX3F1YWxuYW1lX18gbXVzdCBiZSBhIHN0cmluZworICAgICAgICBzZWxmLmNhbm5vdF9zZXRfYXR0cihzZWxmLmIsICdfX3F1YWxuYW1lX18nLCA3LCBUeXBlRXJyb3IpCisKICAgICBkZWYgdGVzdF9fX2NvZGVfXyhzZWxmKToKICAgICAgICAgbnVtX29uZSwgbnVtX3R3byA9IDcsIDgKICAgICAgICAgZGVmIGEoKTogcGFzcwpAQCAtMzE1LDExICszNDIsMzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuX19mdW5jX18gaXMgZikKIAogCitjbGFzcyBCdWlsdGluRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBYWFggTm90IHN1cmUgd2hlcmUgdGhpcyBzaG91bGQgcmVhbGx5IGdvIHNpbmNlIEkgY2FuJ3QgZmluZCBhCisgICAgIyB0ZXN0IG1vZHVsZSBzcGVjaWZpY2FsbHkgZm9yIGJ1aWx0aW5fZnVuY3Rpb25fb3JfbWV0aG9kLgorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9fcXVhbG5hbWVfXyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHRpbWUKKworICAgICAgICAjIGJ1aWx0aW4gZnVuY3Rpb246CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuLl9fcXVhbG5hbWVfXywgJ2xlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS50aW1lLl9fcXVhbG5hbWVfXywgJ3RpbWUnKQorCisgICAgICAgICMgYnVpbHRpbiBjbGFzc21ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0LmZyb21rZXlzLl9fcXVhbG5hbWVfXywgJ2RpY3QuZnJvbWtleXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0Ll9fZ2V0Zm9ybWF0X18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmbG9hdC5fX2dldGZvcm1hdF9fJykKKworICAgICAgICAjIGJ1aWx0aW4gc3RhdGljbWV0aG9kOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ci5tYWtldHJhbnMuX19xdWFsbmFtZV9fLCAnc3RyLm1ha2V0cmFucycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMubWFrZXRyYW5zLl9fcXVhbG5hbWVfXywgJ2J5dGVzLm1ha2V0cmFucycpCisKKyAgICAgICAgIyBidWlsdGluIGJvdW5kIGluc3RhbmNlIG1ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbMSwgMiwgM10uYXBwZW5kLl9fcXVhbG5hbWVfXywgJ2xpc3QuYXBwZW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2Zvbyc6ICdiYXInfS5wb3AuX19xdWFsbmFtZV9fLCAnZGljdC5wb3AnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGdW5jdGlvblByb3BlcnRpZXNUZXN0LCBJbnN0YW5jZW1ldGhvZEF0dHJUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJiaXRyYXJ5RnVuY3Rpb25BdHRyVGVzdCwgRnVuY3Rpb25EaWN0c1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkRvY3N0cmluZ1Rlc3QsIENlbGxUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRpbkZ1bmN0aW9uUHJvcGVydGllc1Rlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggMjcwY2FiMC4uYzQ5MTBhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTIyNiw2ICsyMjYsNyBAQAogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZikKICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fd3JhcHBlZF9fLCBmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhbHNvIGEgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2Fubm90YXRpb25zX19bJ2EnXSwgJ1RoaXMgaXMgYSBuZXcgYW5ub3RhdGlvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2InLCB3cmFwcGVyLl9fYW5ub3RhdGlvbnNfXykKQEAgLTI0Niw2ICsyNDcsNyBAQAogICAgICAgICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19hbm5vdGF0aW9uc19fLCB7fSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHdyYXBwZXIsICdhdHRyJykpCkBAIC0yNjMsNiArMjY1LDcgQEAKICAgICAgICAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIGYsIGFzc2lnbiwgdXBkYXRlKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgYXNzaWduLCB1cGRhdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ3dyYXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCkBAIC0zMDksMTcgKzMxMiwxOCBAQAogICAgICAgICBkZWYgd3JhcHBlcigpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZikKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIsIGYKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdXBkYXRlKHNlbGYpOgotICAgICAgICB3cmFwcGVyID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQorICAgICAgICB3cmFwcGVyLCBmID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhbHNvIGEgdGVzdCcpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBzeXMuZmxhZ3Mub3B0aW1pemUgPD0gMSwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCiAgICAgZGVmIHRlc3RfZGVmYXVsdF91cGRhdGVfZG9jKHNlbGYpOgotICAgICAgICB3cmFwcGVyID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQorICAgICAgICB3cmFwcGVyLCBfID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgJ1RoaXMgaXMgYSB0ZXN0JykKIAogICAgIGRlZiB0ZXN0X25vX3VwZGF0ZShzZWxmKToKQEAgLTMzMiw2ICszMzYsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIod3JhcHBlciwgJ2F0dHInKSkKIApAQCAtMzUxLDYgKzM1Niw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcHBlcih3cmFwcGVyLCBmLCBhc3NpZ24sIHVwZGF0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGEgZGlmZmVyZW50IHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuZGljdF9hdHRyLCBmLmRpY3RfYXR0cikKQEAgLTQzNiwxOSArNDQyLDgyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGFkZCwgZCksICIiLmpvaW4oZC5rZXlzKCkpKQogCiBjbGFzcyBUZXN0Q21wVG9LZXkodW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHRlc3RfY21wX3RvX2tleShzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoMyksIGtleSgzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGtleSgzKSwga2V5KDEpKQorICAgICAgICBkZWYgY21wMih4LCB5KToKKyAgICAgICAgICAgIHJldHVybiBpbnQoeCkgLSBpbnQoeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoNC4wKSwga2V5KCc0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhrZXkoMiksIGtleSgnMzUnKSkKKworICAgIGRlZiB0ZXN0X2NtcF90b19rZXlfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBkZWYgY21wMSh4LCB5KToKKyAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShteWNtcD1jbXAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleShvYmo9MyksIGtleShvYmo9MykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihrZXkob2JqPTMpLCBrZXkob2JqPTEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKSk6CisgICAgICAgICAgICBrZXkoMykgPiAxICAgICMgcmhzIGlzIG5vdCBhIEsgb2JqZWN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpKToKKyAgICAgICAgICAgIDEgPCBrZXkoMykgICAgIyBsaHMgaXMgbm90IGEgSyBvYmplY3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoKSAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxLCBOb25lKSAgICMgdG9vIG1hbnkgYXJncworICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGtleShOb25lLCBOb25lKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0b28gbWFueSBhcmdzCisKKyAgICBkZWYgdGVzdF9iYWRfY21wKHNlbGYpOgorICAgICAgICBkZWYgY21wMSh4LCB5KToKKyAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAga2V5KDMpID4ga2V5KDEpCisKKyAgICAgICAgY2xhc3MgQmFkQ21wOgorICAgICAgICAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gQmFkQ21wKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBrZXkoMykgPiBrZXkoMSkKKworICAgIGRlZiB0ZXN0X29ial9maWVsZChzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXA9Y21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoNTApLm9iaiwgNTApCisKKyAgICBkZWYgdGVzdF9zb3J0X2ludChzZWxmKToKICAgICAgICAgZGVmIG15Y21wKHgsIHkpOgogICAgICAgICAgICAgcmV0dXJuIHkgLSB4CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHJhbmdlKDUpLCBrZXk9ZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbNCwgMywgMiwgMSwgMF0pCiAKKyAgICBkZWYgdGVzdF9zb3J0X2ludF9zdHIoc2VsZik6CisgICAgICAgIGRlZiBteWNtcCh4LCB5KToKKyAgICAgICAgICAgIHgsIHkgPSBpbnQoeCksIGludCh5KQorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIHZhbHVlcyA9IFs1LCAnMycsIDcsIDIsICcwJywgJzEnLCA0LCAnMTAnLCAxXQorICAgICAgICB2YWx1ZXMgPSBzb3J0ZWQodmFsdWVzLCBrZXk9ZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpbnQodmFsdWUpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA0LCA1LCA3LCAxMF0pCisKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgogICAgICAgICBkZWYgbXljbXAoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4geSAtIHgKICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApCiAgICAgICAgIGsgPSBrZXkoMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGFzaCwgaykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKGssIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGssIGNvbGxlY3Rpb25zLkhhc2hhYmxlKQogCiBjbGFzcyBUZXN0VG90YWxPcmRlcmluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY3MSw2ICs3NDAsMjIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CiAgICAgICAgICAgICAgICAgZnVuYygxNSkKIAorICAgIGRlZiB0ZXN0X2xydV93aXRoX3R5cGVzKHNlbGYpOgorICAgICAgICBmb3IgbWF4c2l6ZSBpbiAoTm9uZSwgMTAwKToKKyAgICAgICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9bWF4c2l6ZSwgdHlwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIGRlZiBzcXVhcmUoeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKiB4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSgzKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoMykpLCB0eXBlKDkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoMy4wKSwgOS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNxdWFyZSgzLjApKSwgdHlwZSg5LjApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoeD0zKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoeD0zKSksIHR5cGUoOSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSh4PTMuMCksIDkuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoeD0zLjApKSwgdHlwZSg5LjApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLmhpdHMsIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZS5jYWNoZV9pbmZvKCkubWlzc2VzLCA0KQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgdGVzdF9jbGFzc2VzID0gKAogICAgICAgICBUZXN0UGFydGlhbCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggYzY2ODlhMS4uM2EyNWViMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTEzLDE0ICsxMywxNCBAQAogY2xhc3MgRnV0dXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9mdXR1cmUxKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnVubG9hZCgndGVzdF9mdXR1cmUxJykKLSAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2Z1dHVyZTEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2Z1dHVyZTEucmVzdWx0LCA2KQorICAgICAgICBzdXBwb3J0LnVubG9hZCgnZnV0dXJlX3Rlc3QxJykKKyAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBmdXR1cmVfdGVzdDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmVfdGVzdDEucmVzdWx0LCA2KQogCiAgICAgZGVmIHRlc3RfZnV0dXJlMihzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3Rlc3RfZnV0dXJlMicpCi0gICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmUyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9mdXR1cmUyLnJlc3VsdCwgNikKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ2Z1dHVyZV90ZXN0MicpCisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgZnV0dXJlX3Rlc3QyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlX3Rlc3QyLnJlc3VsdCwgNikKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZTMoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5sb2FkKCd0ZXN0X2Z1dHVyZTMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nYy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKaW5kZXggZTFjMTI0ZC4uYzU5YjcyZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2djLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX3VuaXR0ZXN0LCBzdHJpcF9weXRob25fc3RkZXJyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHZlcmJvc2UsIHJlZmNvdW50X3Rlc3QsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9weXRob25fc3RkZXJyKQogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBnYwpAQCAtMzcsNiArMzgsMjAgQEAKICAgICAgICAgIyBnYyBjb2xsZWN0cyBpdC4KICAgICAgICAgc2VsZi53ciA9IHdlYWtyZWYucmVmKEMxMDU1ODIwKDY2NiksIGl0X2hhcHBlbmVkKQogCitjbGFzcyBVbmNvbGxlY3RhYmxlKG9iamVjdCk6CisgICAgIiIiQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHdpdGggbXVsdGlwbGUgX19kZWxfXyBtZXRob2RzLgorCisgICAgQW4gb2JqZWN0IGluIGEgcmVmZXJlbmNlIGN5Y2xlIHdpbGwgbmV2ZXIgaGF2ZSB6ZXJvIHJlZmVyZW5jZXMsCisgICAgYW5kIHNvIG11c3QgYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuICBJZiBvbmUgb3IgbW9yZSBvYmplY3RzIGluIHRoZQorICAgIGN5Y2xlIGhhdmUgX19kZWxfXyBtZXRob2RzLCB0aGUgZ2MgcmVmdXNlcyB0byBndWVzcyBhbiBvcmRlciwKKyAgICBhbmQgbGVhdmVzIHRoZSBjeWNsZSB1bmNvbGxlY3RlZC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydG5lcj1Ob25lKToKKyAgICAgICAgaWYgcGFydG5lciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wYXJ0bmVyID0gVW5jb2xsZWN0YWJsZShwYXJ0bmVyPXNlbGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnBhcnRuZXIgPSBwYXJ0bmVyCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIHBhc3MKIAogIyMjIFRlc3RzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xODEsNiArMTk2LDcgQEAKICAgICAgICAgZGVsIGQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnYy5jb2xsZWN0KCksIDIpCiAKKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2ZyYW1lKHNlbGYpOgogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKCkKQEAgLTI0OCw2ICsyNjQsNyBAQAogICAgICMgRm9yIGV4YW1wbGUsIGRpc3Bvc2VkIHR1cGxlcyBhcmUgbm90IGZyZWVkLCBidXQgcmV1c2VkLgogICAgICMgVG8gbWluaW1pemUgdmFyaWF0aW9ucywgdGhvdWdoLCB3ZSBmaXJzdCBzdG9yZSB0aGUgZ2V0X2NvdW50KCkgcmVzdWx0cwogICAgICMgYW5kIGNoZWNrIHRoZW0gYXQgdGhlIGVuZC4KKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2dldF9jb3VudChzZWxmKToKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIGEsIGIsIGMgPSBnYy5nZXRfY291bnQoKQpAQCAtMjYxLDYgKzI3OCw3IEBACiAgICAgICAgICMgY3JlYXRlZCAodGhlIGxpc3QpLgogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZCwgYSkKIAorICAgIEByZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfY29sbGVjdF9nZW5lcmF0aW9ucyhzZWxmKToKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgICMgVGhpcyBvYmplY3Qgd2lsbCAidHJpY2tsZSIgaW50byBnZW5lcmF0aW9uIE4gKyAxIGFmdGVyCkBAIC01OTMsNiArNjExLDEyNyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGIidW5jb2xsZWN0YWJsZSBvYmplY3RzIGF0IHNodXRkb3duIiwgc3RkZXJyKQogCiAKK2NsYXNzIEdDQ2FsbGJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAjIFNhdmUgZ2Mgc3RhdGUgYW5kIGRpc2FibGUgaXQuCisgICAgICAgIHNlbGYuZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCisgICAgICAgIGdjLmRpc2FibGUoKQorICAgICAgICBzZWxmLmRlYnVnID0gZ2MuZ2V0X2RlYnVnKCkKKyAgICAgICAgZ2Muc2V0X2RlYnVnKDApCisgICAgICAgIGdjLmNhbGxiYWNrcy5hcHBlbmQoc2VsZi5jYjEpCisgICAgICAgIGdjLmNhbGxiYWNrcy5hcHBlbmQoc2VsZi5jYjIpCisgICAgICAgIHNlbGYub3RoZXJnYXJiYWdlID0gW10KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBSZXN0b3JlIGdjIHN0YXRlCisgICAgICAgIGRlbCBzZWxmLnZpc2l0CisgICAgICAgIGdjLmNhbGxiYWNrcy5yZW1vdmUoc2VsZi5jYjEpCisgICAgICAgIGdjLmNhbGxiYWNrcy5yZW1vdmUoc2VsZi5jYjIpCisgICAgICAgIGdjLnNldF9kZWJ1ZyhzZWxmLmRlYnVnKQorICAgICAgICBpZiBzZWxmLmVuYWJsZWQ6CisgICAgICAgICAgICBnYy5lbmFibGUoKQorICAgICAgICAjIGRlc3Ryb3kgYW55IHVuY29sbGVjdGFibGVzCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBmb3Igb2JqIGluIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgVW5jb2xsZWN0YWJsZSk6CisgICAgICAgICAgICAgICAgb2JqLnBhcnRuZXIgPSBOb25lCisgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCisgICAgICAgIGRlbCBzZWxmLm90aGVyZ2FyYmFnZQorICAgICAgICBnYy5jb2xsZWN0KCkKKworICAgIGRlZiBwcmVjbGVhbihzZWxmKToKKyAgICAgICAgIyBSZW1vdmUgYWxsIGZsdWZmIGZyb20gdGhlIHN5c3RlbS4gIEludm9rZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgICMgbWFudWFsbHkgcmF0aGVyIHRoYW4gdGhyb3VnaCBzZWxmLnNldFVwKCkgZm9yIG1heGltdW0KKyAgICAgICAgIyBzYWZldHkuCisgICAgICAgIHNlbGYudmlzaXQgPSBbXQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZ2FyYmFnZSwgZ2MuZ2FyYmFnZVs6XSA9IGdjLmdhcmJhZ2VbOl0sIFtdCisgICAgICAgIHNlbGYub3RoZXJnYXJiYWdlLmFwcGVuZChnYXJiYWdlKQorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKworICAgIGRlZiBjYjEoc2VsZiwgcGhhc2UsIGluZm8pOgorICAgICAgICBzZWxmLnZpc2l0LmFwcGVuZCgoMSwgcGhhc2UsIGRpY3QoaW5mbykpKQorCisgICAgZGVmIGNiMihzZWxmLCBwaGFzZSwgaW5mbyk6CisgICAgICAgIHNlbGYudmlzaXQuYXBwZW5kKCgyLCBwaGFzZSwgZGljdChpbmZvKSkpCisgICAgICAgIGlmIHBoYXNlID09ICJzdG9wIiBhbmQgaGFzYXR0cihzZWxmLCAiY2xlYW51cCIpOgorICAgICAgICAgICAgIyBDbGVhbiBVbmNvbGxlY3RhYmxlIGZyb20gZ2FyYmFnZQorICAgICAgICAgICAgdWMgPSBbZSBmb3IgZSBpbiBnYy5nYXJiYWdlIGlmIGlzaW5zdGFuY2UoZSwgVW5jb2xsZWN0YWJsZSldCisgICAgICAgICAgICBnYy5nYXJiYWdlWzpdID0gW2UgZm9yIGUgaW4gZ2MuZ2FyYmFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlLCBVbmNvbGxlY3RhYmxlKV0KKyAgICAgICAgICAgIGZvciBlIGluIHVjOgorICAgICAgICAgICAgICAgIGUucGFydG5lciA9IE5vbmUKKworICAgIGRlZiB0ZXN0X2NvbGxlY3Qoc2VsZik6CisgICAgICAgIHNlbGYucHJlY2xlYW4oKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgIyBBbGdvcml0aG1pY2FsbHkgdmVyaWZ5IHRoZSBjb250ZW50cyBvZiBzZWxmLnZpc2l0CisgICAgICAgICMgYmVjYXVzZSBpdCBpcyBsb25nIGFuZCB0b3J0dW91cy4KKworICAgICAgICAjIENvdW50IHRoZSBudW1iZXIgb2YgdmlzaXRzIHRvIGVhY2ggY2FsbGJhY2sKKyAgICAgICAgbiA9IFt2WzBdIGZvciB2IGluIHNlbGYudmlzaXRdCisgICAgICAgIG4xID0gW2kgZm9yIGkgaW4gbiBpZiBpID09IDFdCisgICAgICAgIG4yID0gW2kgZm9yIGkgaW4gbiBpZiBpID09IDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjEsIFsxXSoyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4yLCBbMl0qMikKKworICAgICAgICAjIENvdW50IHRoYXQgd2UgZ290IHRoZSByaWdodCBudW1iZXIgb2Ygc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLgorICAgICAgICBuID0gW3ZbMV0gZm9yIHYgaW4gc2VsZi52aXNpdF0KKyAgICAgICAgbjEgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gInN0YXJ0Il0KKyAgICAgICAgbjIgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gInN0b3AiXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4xLCBbInN0YXJ0Il0qMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMiwgWyJzdG9wIl0qMikKKworICAgICAgICAjIENoZWNrIHRoYXQgd2UgZ290IHRoZSByaWdodCBpbmZvIGRpY3QgZm9yIGFsbCBjYWxsYmFja3MKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImdlbmVyYXRpb24iIGluIGluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImNvbGxlY3RlZCIgaW4gaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgidW5jb2xsZWN0YWJsZSIgaW4gaW5mbykKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2VuZXJhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5wcmVjbGVhbigpCisgICAgICAgIGdjLmNvbGxlY3QoMikKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bImdlbmVyYXRpb24iXSwgMikKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2FyYmFnZShzZWxmKToKKyAgICAgICAgc2VsZi5wcmVjbGVhbigpCisgICAgICAgICMgRWFjaCBvZiB0aGVzZSBjYXVzZSBmb3VyIG9iamVjdHMgdG8gYmUgZ2FyYmFnZTogVHdvCisgICAgICAgICMgVW5jb2xlY3RhYmxlcyBhbmQgdGhlaXIgaW5zdGFuY2UgZGljdHMuCisgICAgICAgIFVuY29sbGVjdGFibGUoKQorICAgICAgICBVbmNvbGxlY3RhYmxlKCkKKyAgICAgICAgQzEwNTU4MjAoNjY2KQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGlmIHZbMV0gIT0gInN0b3AiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJjb2xsZWN0ZWQiXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1sidW5jb2xsZWN0YWJsZSJdLCA4KQorCisgICAgICAgICMgV2Ugc2hvdWxkIG5vdyBoYXZlIHRoZSBVbmNvbGxlY3RhYmxlcyBpbiBnYy5nYXJiYWdlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdjLmdhcmJhZ2UpLCA0KQorICAgICAgICBmb3IgZSBpbiBnYy5nYXJiYWdlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUsIFVuY29sbGVjdGFibGUpCisKKyAgICAgICAgIyBOb3csIGxldCBvdXIgY2FsbGJhY2sgaGFuZGxlIHRoZSBVbmNvbGxlY3RhYmxlIGluc3RhbmNlcworICAgICAgICBzZWxmLmNsZWFudXA9VHJ1ZQorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKyAgICAgICAgZ2MuZ2FyYmFnZVs6XSA9IFtdCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBmb3IgdiBpbiBzZWxmLnZpc2l0OgorICAgICAgICAgICAgaWYgdlsxXSAhPSAic3RvcCI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bImNvbGxlY3RlZCJdLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJ1bmNvbGxlY3RhYmxlIl0sIDQpCisKKyAgICAgICAgIyBVbmNvbGxlY3RhYmxlcyBzaG91bGQgYmUgZ29uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnYy5nYXJiYWdlKSwgMCkKKworCiBjbGFzcyBHQ1RvZ2dsaW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgZ2MuZW5hYmxlKCkKQEAgLTc0Niw3ICs4ODUsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBnYy5jb2xsZWN0KCkgIyBEZWxldGUgMm5kIGdlbmVyYXRpb24gZ2FyYmFnZQotICAgICAgICBydW5fdW5pdHRlc3QoR0NUZXN0cywgR0NUb2dnbGluZ1Rlc3RzKQorICAgICAgICBydW5fdW5pdHRlc3QoR0NUZXN0cywgR0NUb2dnbGluZ1Rlc3RzLCBHQ0NhbGxiYWNrVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgZ2Muc2V0X2RlYnVnKGRlYnVnKQogICAgICAgICAjIHRlc3QgZ2MuZW5hYmxlKCkgZXZlbiBpZiBHQyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dkYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CmluZGV4IDZkOTY1NTAuLjk3MTNkYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CkBAIC03LDkgKzcsMTYgQEAKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGxvY2FsZQogCisjIElzIHRoaXMgUHl0aG9uIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aHJlYWRzPwordHJ5OgorICAgIGltcG9ydCBfdGhyZWFkCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3RocmVhZCA9IE5vbmUKKwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZmluZGZpbGUsIHB5dGhvbl9pc19vcHRpbWl6ZWQKIAogdHJ5OgpAQCAtMjYsNiArMzMsOSBAQAogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZGIgdmVyc2lvbnMgYmVmb3JlIDcuMCBkaWRuJ3Qgc3VwcG9ydCBweXRob24gZW1iZWRkaW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgU2F3OlxuIiArIGdkYl92ZXJzaW9uLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpKQogCitpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0X2dkYiBvbmx5IHdvcmtzIG9uIHNvdXJjZSBidWlsZHMgYXQgdGhlIG1vbWVudC4iKQorCiAjIExvY2F0aW9uIG9mIGN1c3RvbSBob29rcyBmaWxlIGluIGEgcmVwb3NpdG9yeSBjaGVja291dC4KIGNoZWNrb3V0X2hvb2tfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweXRob24tZ2RiLnB5JykKQEAgLTUzLDkgKzYzLDcgQEAKIGlmIG5vdCBnZGJweV92ZXJzaW9uOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZGIgbm90IGJ1aWx0IHdpdGggZW1iZWRkZWQgcHl0aG9uIHN1cHBvcnQiKQogCi0jIFZlcmlmeSB0aGF0ICJnZGIiIGNhbiBsb2FkIG91ciBjdXN0b20gaG9va3MuICBJbiB0aGVvcnkgdGhpcyBzaG91bGQgbmV2ZXIKLSMgZmFpbCwgYnV0IHdlIGRvbid0IGhhbmRsZSB0aGUgY2FzZSBvZiB0aGUgaG9va3MgZmlsZSBub3QgZXhpc3RpbmcgaWYgdGhlCi0jIHRlc3RzIGFyZSBydW4gZnJvbSBhbiBpbnN0YWxsZWQgUHl0aG9uICh3ZSdsbCBwcm9kdWNlIGZhaWx1cmVzIGluIHRoYXQgY2FzZSkuCisjIFZlcmlmeSB0aGF0ICJnZGIiIGNhbiBsb2FkIG91ciBjdXN0b20gaG9va3MuIEluIHRoZW9yeSB0aGlzIHNob3VsZCBuZXZlciBmYWlsLgogY21kID0gWyctLWFyZ3MnLCBzeXMuZXhlY3V0YWJsZV0KIF8sIGdkYnB5X2Vycm9ycyA9IHJ1bl9nZGIoJy0tYXJncycsIHN5cy5leGVjdXRhYmxlKQogaWYgImF1dG8tbG9hZGluZyBoYXMgYmVlbiBkZWNsaW5lZCIgaW4gZ2RicHlfZXJyb3JzOgpAQCAtMTYwLDcgKzE2OCw2IEBACiAKICAgICAgICAgIyBFbnN1cmUgbm8gdW5leHBlY3RlZCBlcnJvciBtZXNzYWdlczoKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsICcnKQotCiAgICAgICAgIHJldHVybiBvdXQKIAogICAgIGRlZiBnZXRfZ2RiX3JlcHIoc2VsZiwgc291cmNlLApAQCAtMTgxLDcgKzE4OCw3IEBACiAgICAgICAgICMgZ2RiIGNhbiBpbnNlcnQgYWRkaXRpb25hbCAnXG4nIGFuZCBzcGFjZSBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgcGxhY2VzCiAgICAgICAgICMgaW4gaXRzIG91dHB1dCwgZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwgaXQncyBjb25uZWN0ZWQKICAgICAgICAgIyB0byAodXNpbmcgaXRzICJ3cmFwX2hlcmUiIGZ1bmN0aW9uKQotICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1B5dGhvbi9ibHRpbm1vZHVsZS5jLionLAorICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAogICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwgcmUuRE9UQUxMKQogICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBnZGIgb3V0cHV0OiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpAQCAtMzQzLDcgKzM1MCw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2ludCA9IDQyCiBpZChmb28pJycnKQotICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nVW5leHBlY3RlZCBuZXctc3R5bGUgY2xhc3MgcmVuZGVyaW5nICVyJyAlIGdkYl9yZXByKQogCkBAIC0zNTYsNyArMzYzLDcgQEAKIGZvbyArPSBbMSwgMiwgM10KIGZvby5hbl9pbnQgPSA0MgogaWQoZm9vKScnJykKLSAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsIGdkYl9yZXByKQorICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLCBnZGJfcmVwcikKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUobSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nVW5leHBlY3RlZCBuZXctc3R5bGUgY2xhc3MgcmVuZGVyaW5nICVyJyAlIGdkYl9yZXByKQpAQCAtMzcxLDcgKzM3OCw3IEBACiBmb28gPSBGb28oKDEsIDIsIDMpKQogZm9vLmFuX2ludCA9IDQyCiBpZChmb28pJycnKQotICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCkBAIC0zOTgsNyArNDA1LDcgQEAKIAogICAgICAgICAjIE1hdGNoIGFueXRoaW5nIGZvciB0aGUgdHlwZSBuYW1lOyAweERFQURCRUVGIGNvdWxkIHBvaW50IHRvCiAgICAgICAgICMgc29tZXRoaW5nIGFyYml0cmFyeSAoc2VlICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODMzMCkKLSAgICAgICAgcGF0dGVybiA9ICc8LiogYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicKKyAgICAgICAgcGF0dGVybiA9ICc8LiogYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JwogCiAgICAgICAgIG0gPSByZS5tYXRjaChwYXR0ZXJuLCBnZGJfcmVwcikKICAgICAgICAgaWYgbm90IG06CkBAIC00NDQsNyArNDUxLDcgQEAKICAgICAgICAgIyAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTgwMzIjbXNnMTAwNTM3ICkKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaWQoX19idWlsdGluc19fLmhlbHApJywgaW1wb3J0X3NpdGU9VHJ1ZSkKIAotICAgICAgICBtID0gcmUubWF0Y2gocic8X0hlbHBlciBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxfSGVscGVyIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nVW5leHBlY3RlZCByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCiAKQEAgLTQ3NSw3ICs0ODIsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9hdHRyID0gZm9vCiBpZChmb28pJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNDg4LDcgKzQ5NSw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01MDIsNyArNTA5LDcgQEAKIGEuYW5fYXR0ciA9IGIKIGIuYW5fYXR0ciA9IGEKIGlkKGEpJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz5cKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01MzcsNyArNTQ0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5fbWV0aG9kKHNlbGYpOgogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpbXBvcnQgc3lzOyBpZChzeXMuc3Rkb3V0LnJlYWRsaW5lcyknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTUyLDcgKzU1OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSdidWlsdGluX2lkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3ByaW50IChQeUZyYW1lT2JqZWN0KikoKChQeUNvZGVPYmplY3QqKXYpLT5jb196b21iaWVmcmFtZSknXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJy4qXHMrXCQxID1ccytGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnLipccytcJDEgPVxzK0ZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIDxzdHJpbmc+LCBsaW5lIDMsIGluIGZvbyBcKFwpXHMrLionLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLkRPVEFMTCksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCkBAIC02MDksNyArNjE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJycnXi4qCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXpcKGEsIGIsIGNcKQogJCcnJykKIApAQCAtNjM4LDkgKzY0NSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktZG93biddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJycnXi4qCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXpcKGEsIGIsIGNcKQotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEwLCBpbiBiYXogXChhcmdzPVwoMSwgMiwgM1wpXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEwLCBpbiBiYXogXChhcmdzPVwoMSwgMiwgM1wpXCkKICAgICBpZFwoNDJcKQogJCcnJykKIApAQCAtNjcyLDE0ICs2NzksMTA2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktYnQtZnVsbCddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJycnXi4qCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXpcKGEsIGIsIGNcKQotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDQsIGluIGZvbyBcKGE9MSwgYj0yLCBjPTNcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNCwgaW4gZm9vIFwoYT0xLCBiPTIsIGM9M1wpCiAgICAgYmFyXChhLCBiLCBjXCkKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSAxMiwgaW4gPG1vZHVsZT4gXChcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTIsIGluIDxtb2R1bGU+IFwoXCkKICAgICBmb29cKDEsIDIsIDNcKQogJycnKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZCBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF90aHJlYWRzKHNlbGYpOgorICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBpbmRpY2F0ZXMgdGhyZWFkcyB0aGF0IGFyZSB3YWl0aW5nIGZvciB0aGUgR0lMJworICAgICAgICBjbWQgPSAnJycKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBUaHJlYWQKKworY2xhc3MgVGVzdFRocmVhZChUaHJlYWQpOgorICAgICMgVGhlc2UgdGhyZWFkcyB3b3VsZCBydW4gZm9yZXZlciwgYnV0IHdlJ2xsIGludGVycnVwdCB0aGluZ3Mgd2l0aCB0aGUKKyAgICAjIGRlYnVnZ2VyCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgaSA9IDAKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICBpICs9IDEKKwordCA9IHt9Citmb3IgaSBpbiByYW5nZSg0KToKKyAgIHRbaV0gPSBUZXN0VGhyZWFkKCkKKyAgIHRbaV0uc3RhcnQoKQorCisjIFRyaWdnZXIgYSBicmVha3BvaW50IG9uIHRoZSBtYWluIHRocmVhZAoraWQoNDIpCisKKycnJworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9Wyd0aHJlYWQgYXBwbHkgYWxsIHB5LWJ0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dhaXRpbmcgZm9yIHRoZSBHSUwnLCBnZGJfb3V0cHV0KQorCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0LWZ1bGwiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsndGhyZWFkIGFwcGx5IGFsbCBweS1idC1mdWxsJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dhaXRpbmcgZm9yIHRoZSBHSUwnLCBnZGJfb3V0cHV0KQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCisgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQorICAgICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBnZGIgd2lsbCBmYWlsIHdpdGgKKyAgICAjICAiQ2Fubm90IGZpbmQgbmV3IHRocmVhZHM6IGdlbmVyaWMgZXJyb3IiCisgICAgIyB1bmxlc3Mgd2UgYWRkIExEX1BSRUxPQUQ9UEFUSC1UTy1saWJwdGhyZWFkLnNvLjEgYXMgYSB3b3JrYXJvdW5kCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZCBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9nYyhzZWxmKToKKyAgICAgICAgJ1ZlcmlmeSB0aGF0ICJweS1idCIgaW5kaWNhdGVzIGlmIGEgdGhyZWFkIGlzIGdhcmJhZ2UtY29sbGVjdGluZycKKyAgICAgICAgY21kID0gKCdmcm9tIGdjIGltcG9ydCBjb2xsZWN0XG4nCisgICAgICAgICAgICAgICAnaWQoNDIpXG4nCisgICAgICAgICAgICAgICAnZGVmIGZvbygpOlxuJworICAgICAgICAgICAgICAgJyAgICBjb2xsZWN0KClcbicKKyAgICAgICAgICAgICAgICdkZWYgYmFyKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIGZvbygpXG4nCisgICAgICAgICAgICAgICAnYmFyKClcbicpCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ2JyZWFrIHVwZGF0ZV9yZWZzJywgJ2NvbnRpbnVlJywgJ3B5LWJ0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0dhcmJhZ2UtY29sbGVjdGluZycsIGdkYl9vdXRwdXQpCisKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydicmVhayB1cGRhdGVfcmVmcycsICdjb250aW51ZScsICdweS1idC1mdWxsJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0dhcmJhZ2UtY29sbGVjdGluZycsIGdkYl9vdXRwdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCisgICAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIGdkYiB3aWxsIGZhaWwgd2l0aAorICAgICMgICJDYW5ub3QgZmluZCBuZXcgdGhyZWFkczogZ2VuZXJpYyBlcnJvciIKKyAgICAjIHVubGVzcyB3ZSBhZGQgTERfUFJFTE9BRD1QQVRILVRPLWxpYnB0aHJlYWQuc28uMSBhcyBhIHdvcmthcm91bmQKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3B5Y2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBkaXNwbGF5cyBpbnZvY2F0aW9ucyBvZiBQeUNGdW5jdGlvbiBpbnN0YW5jZXMnCisgICAgICAgIGNtZCA9ICgnZnJvbSB0aW1lIGltcG9ydCBzbGVlcFxuJworICAgICAgICAgICAgICAgJ2RlZiBmb28oKTpcbicKKyAgICAgICAgICAgICAgICcgICAgc2xlZXAoMSlcbicKKyAgICAgICAgICAgICAgICdkZWYgYmFyKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIGZvbygpXG4nCisgICAgICAgICAgICAgICAnYmFyKClcbicpCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfc2xlZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsnYnQnLCAncHktYnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignPGJ1aWx0LWluIG1ldGhvZCBzbGVlcCcsIGdkYl9vdXRwdXQpCisKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX3NsZWVwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LWJ0LWZ1bGwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignIzAgPGJ1aWx0LWluIG1ldGhvZCBzbGVlcCcsIGdkYl9vdXRwdXQpCisKKwogY2xhc3MgUHlQcmludFRlc3RzKERlYnVnZ2VyVGVzdHMpOgogICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLAogICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKQEAgLTcxMyw3ICs4MTIsNyBAQAogICAgICAgICBidCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKHNjcmlwdD1zZWxmLmdldF9zYW1wbGVfc2NyaXB0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktcHJpbnQgbGVuJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiLipcbmJ1aWx0aW4gJ2xlbicgPSA8YnVpbHQtaW4gbWV0aG9kIGxlbiBvZiBtb2R1bGUgb2JqZWN0IGF0IHJlbW90ZSAweFswLTlhLWZdKz5cbi4qIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiLipcbmJ1aWx0aW4gJ2xlbicgPSA8YnVpbHQtaW4gbWV0aG9kIGxlbiBvZiBtb2R1bGUgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlxuLioiKQogCiBjbGFzcyBQeUxvY2Fsc1Rlc3RzKERlYnVnZ2VyVGVzdHMpOgogICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CmluZGV4IDVmNDdiM2UuLjA2ZjY3YzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKQEAgLTcyOCwyOSArNzI4LDYgQEAKIAogc3ludGF4X3Rlc3RzID0gIiIiCiAKLT4+PiBkZWYgZigpOgotLi4uICAgICByZXR1cm4gMjIKLS4uLiAgICAgeWllbGQgMQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCi0+Pj4gZGVmIGYoKToKLS4uLiAgICAgeWllbGQgMQotLi4uICAgICByZXR1cm4gMjIKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4KLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQotInJldHVybiBOb25lIiBpcyBub3QgdGhlIHNhbWUgYXMgInJldHVybiIgaW4gYSBnZW5lcmF0b3I6Ci0KLT4+PiBkZWYgZigpOgotLi4uICAgICB5aWVsZCAxCi0uLi4gICAgIHJldHVybiBOb25lCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KIFRoZXNlIGFyZSBmaW5lOgogCiA+Pj4gZGVmIGYoKToKQEAgLTg2NiwyMCArODQzLDYgQEAKID4+PiB0eXBlKGYoKSkKIDxjbGFzcyAnZ2VuZXJhdG9yJz4KIAotCi0+Pj4gZGVmIGYoKToKLS4uLiAgICAgaWYgMDoKLS4uLiAgICAgICAgIGxhbWJkYSB4OiAgeCAgICAgICAgIyBzaG91bGRuJ3QgdHJpZ2dlciBoZXJlCi0uLi4gICAgICAgICByZXR1cm4gICAgICAgICAgICAgICMgb3IgaGVyZQotLi4uICAgICAgICAgZGVmIGYoaSk6Ci0uLi4gICAgICAgICAgICAgcmV0dXJuIDIqaSAgICAgICMgb3IgaGVyZQotLi4uICAgICAgICAgaWYgMDoKLS4uLiAgICAgICAgICAgICByZXR1cm4gMyAgICAgICAgIyBidXQgKnRoaXMqIHN1Y2tzIChsaW5lIDgpCi0uLi4gICAgIGlmIDA6Ci0uLi4gICAgICAgICB5aWVsZCAyICAgICAgICAgICAgICMgYmVjYXVzZSBpdCdzIGEgZ2VuZXJhdG9yIChsaW5lIDEwKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCiBUaGlzIG9uZSBjYXVzZWQgYSBjcmFzaCAoc2VlIFNGIGJ1ZyA1Njc1MzgpOgogCiA+Pj4gZGVmIGYoKToKQEAgLTE1NjYsMTEgKzE1MjksNiBAQAogICAuLi4KIFN5bnRheEVycm9yOiAneWllbGQnIG91dHNpZGUgZnVuY3Rpb24KIAotPj4+IGRlZiBmKCk6IHJldHVybiBsYW1iZGEgeD0oeWllbGQpOiAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCiA+Pj4gZGVmIGYoKTogeCA9IHlpZWxkID0geQogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAuLi4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IDUwNjM4YTEuLjNlYWRkNTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtMiwxMSArMiwxMiBAQAogVGVzdHMgY29tbW9uIHRvIGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGggYW5kIHBvc2l4cGF0aAogIiIiCiAKLWltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgb3MKIGltcG9ydCBnZW5lcmljcGF0aAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogZGVmIHNhZmVfcm1kaXIoZGlybmFtZSk6CkBAIC0xNDUsNiArMTQ2LDE2IEBACiAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwaXBlIiksICJyZXF1aXJlcyBvcy5waXBlKCkiKQorICAgIGRlZiB0ZXN0X2V4aXN0c19mZChzZWxmKToKKyAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICBvcy5jbG9zZSh3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCisKICAgICBkZWYgdGVzdF9pc2RpcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKICAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCkBAIC0yNTgsMTUgKzI2OSwyMSBAQAogCiAgICAgZGVmIHRlc3RfYWJzcGF0aChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJbigiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKIAogICAgICAgICAjIEFic3BhdGggcmV0dXJucyBieXRlcyB3aGVuIHRoZSBhcmcgaXMgYnl0ZXMKLSAgICAgICAgZm9yIHBhdGggaW4gKGInJywgYidmb28nLCBiJ2ZceGYyXHhmMicsIGInL2ZvbycsIGInQzpcXCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKIAogICAgIGRlZiB0ZXN0X3JlYWxwYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEluKCJmb28iLCBzZWxmLnBhdGhtb2R1bGUucmVhbHBhdGgoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLnJlYWxwYXRoKGIiZm9vIikpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiImZvbyIsIHNlbGYucGF0aG1vZHVsZS5yZWFscGF0aChiImZvbyIpKQogCiAgICAgZGVmIHRlc3Rfbm9ybXBhdGhfaXNzdWU1ODI3KHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBub3JtcGF0aCBwcmVzZXJ2ZXMgdW5pY29kZQpAQCAtMjgyLDggKzI5OSw3IEBACiAKICAgICAgICAgdW5pY3dkID0gJ1x4ZTd3XHhmMCcKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnNlbmNvZGluZyA9IHN1cHBvcnQuVEVTVEZOX0VOQ09ESU5HIG9yICJhc2NpaSIKLSAgICAgICAgICAgIHVuaWN3ZC5lbmNvZGUoZnNlbmNvZGluZykKKyAgICAgICAgICAgIG9zLmZzZW5jb2RlKHVuaWN3ZCkKICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVW5pY29kZUVuY29kZUVycm9yKToKICAgICAgICAgICAgICMgRlMgZW5jb2RpbmcgaXMgcHJvYmFibHkgQVNDSUkKICAgICAgICAgICAgIHBhc3MKQEAgLTI5NSw5ICszMTEsMjAgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywKICAgICAgICAgIk1hYyBPUyBYIGRlbmllcyB0aGUgY3JlYXRpb24gb2YgYSBkaXJlY3Rvcnkgd2l0aCBhbiBpbnZhbGlkIHV0ZjggbmFtZSIpCiAgICAgZGVmIHRlc3Rfbm9uYXNjaWlfYWJzcGF0aChzZWxmKToKKyAgICAgICAgbmFtZSA9IGInXHhlN3dceGYwJworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5mc2RlY29kZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0aGUgZmlsZW5hbWUgJWEgaXMgbm90IGRlY29kYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgQU5TSSBjb2RlIHBhZ2UgJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYW1lLCBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorCiAgICAgICAgICMgVGVzdCBub24tQVNDSUksIG5vbi1VVEY4IGJ5dGVzIGluIHRoZSBwYXRoLgotICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoYidceGU3d1x4ZjAnKToKLSAgICAgICAgICAgIHNlbGYudGVzdF9hYnNwYXRoKCkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2Fic3BhdGgoKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weQppbmRleCAxZjQ2YWYxLi40MTMwNDNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmV4cHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5CkBAIC0yNTcsMTEgKzI1NywxNSBAQAogCiAiIiIKIAoraW1wb3J0IHN5cwogCi1fX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CisjIFRyYWNlIGZ1bmN0aW9uIGNhbiB0aHJvdyBvZmYgdGhlIHR1cGxlIHJldXNlIHRlc3QuCitpZiBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpOgorICAgIF9fdGVzdF9fID0ge30KK2Vsc2U6CisgICAgX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgaW1wb3J0IHN5cwogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9nZW5leHBzCiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X2dlbmV4cHMsIHZlcmJvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCAzZDljMDZhLi40OGNhOTRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMKK2Zyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2tleXdvcmRzLCBnZXRhcmdzX2tleXdvcmRfb25seQogCiAiIiIKID4gSG93IGFib3V0IHRoZSBmb2xsb3dpbmcgY291bnRlcnByb3Bvc2FsLiBUaGlzIGFsc28gY2hhbmdlcyBzb21lIG9mCkBAIC0yMTQsNiArMjE0LDM2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChWRVJZX0xBUkdFICYgVUxMT05HX01BWCwgZ2V0YXJnc19LKFZFUllfTEFSR0UpKQogCitjbGFzcyBQYXJhZG94OgorICAgICJUaGlzIHN0YXRlbWVudCBpcyBmYWxzZS4iCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKK2NsYXNzIEJvb2xlYW5fVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3Aoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3AKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcChOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKDAuMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKDBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3Aoe30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoMS4wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoMWopKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgneCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgoMSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoezE6Mn0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCh1bml0dGVzdC5UZXN0Q2FzZSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgZ2V0YXJnc19wLCBQYXJhZG94KCkpCisKIAogY2xhc3MgVHVwbGVfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3R1cGxlKHNlbGYpOgpAQCAtMjkzLDcgKzMyMyw4NyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdUeXBlRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQnKQogCitjbGFzcyBLZXl3b3JkT25seV9UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIHVzaW5nIGFsbCBwb3NzaWJsZSBwb3NpdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIpLAorICAgICAgICAgICAgKDEsIDIsIC0xKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfYXJncyhzZWxmKToKKyAgICAgICAgIyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIGtleXdvcmRfb25seT0zKSwKKyAgICAgICAgICAgICgxLCAyLCAzKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICAjIGFsbCBrZXl3b3JkcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwgb3B0aW9uYWw9Miwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIDIsIDMpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIG1pc3Npbmcgb3B0aW9uYWwga2V5d29yZCBhcmdzLCBza2lwcGluZyB0dXBsZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEsIG9wdGlvbmFsPTIpLAorICAgICAgICAgICAgKDEsIDIsIC0xKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIC0xLCAzKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEpLAorICAgICAgICAgICAgKDEsIC0xLCAtMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEpLAorICAgICAgICAgICAgKDEsIC0xLCAtMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgIyByZXF1aXJlZCBhcmcgbWlzc2luZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkob3B0aW9uYWw9MikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoa2V5d29yZF9vbmx5PTMpCisKKyAgICBkZWYgdGVzdF90b29fbWFueV9hcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMsIGtleXdvcmRfb25seT01KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9rZXl3b3JkKHNlbGYpOgorICAgICAgICAjIGV4dHJhbmVvdXMga2V5d29yZCBhcmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInbW9uc3RlcicgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCBtb25zdGVyPTY2NikKKworICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZV9rZXl3b3JkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIidcdWRjODAnIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgKip7J1x1REM4MCc6IDEwfSkKKwogY2xhc3MgQnl0ZXNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Moc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIGInYWJjJykgICMgbGVuID4gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfYyhiJ2EnKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2MoYnl0ZWFycmF5KGInYScpKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIG1lbW9yeXZpZXcoYidhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCAncycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCBOb25lKQorCiAgICAgZGVmIHRlc3RfcyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfcygnYWJjXHhlOScpLCBiJ2FiY1x4YzNceGE5JykKQEAgLTQzMCw4ICs1NDAsMTAgQEAKICAgICB0ZXN0cyA9IFsKICAgICAgICAgU2lnbmVkX1Rlc3RDYXNlLAogICAgICAgICBVbnNpZ25lZF9UZXN0Q2FzZSwKKyAgICAgICAgQm9vbGVhbl9UZXN0Q2FzZSwKICAgICAgICAgVHVwbGVfVGVzdENhc2UsCiAgICAgICAgIEtleXdvcmRzX1Rlc3RDYXNlLAorICAgICAgICBLZXl3b3JkT25seV9UZXN0Q2FzZSwKICAgICAgICAgQnl0ZXNfVGVzdENhc2UsCiAgICAgICAgIFVuaWNvZGVfVGVzdENhc2UsCiAgICAgXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5IGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CmluZGV4IDE1NjBhNmIuLjZlZTA4ZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywgY2FuX3N5bWxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBURVNURk4sIHNraXBfdW5sZXNzX3N5bWxpbmssCisgICAgY2FuX3N5bWxpbmssIGNyZWF0ZV9lbXB0eV9maWxlKQogaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbApAQCAtMTQsOCArMTUsNyBAQAogICAgICAgICBiYXNlLCBmaWxlID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJhc2UpOgogICAgICAgICAgICAgb3MubWFrZWRpcnMoYmFzZSkKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKGZpbGVuYW1lKQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnRlbXBkaXIgPSBURVNURk4rIl9kaXIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggMjY4YTYzMy4uNmIzMjZiZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtMTAsNyArMTAsNyBAQAogCiBjbGFzcyBUb2tlblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZXN0QmFja3NsYXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2JhY2tzbGFzaChzZWxmKToKICAgICAgICAgIyBCYWNrc2xhc2ggbWVhbnMgbGluZSBjb250aW51YXRpb246CiAgICAgICAgIHggPSAxIFwKICAgICAgICAgKyAxCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHggPSAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMCwgJ2JhY2tzbGFzaCBlbmRpbmcgY29tbWVudCcpCiAKLSAgICBkZWYgdGVzdFBsYWluSW50ZWdlcnMoc2VsZik6CisgICAgZGVmIHRlc3RfcGxhaW5faW50ZWdlcnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSgwMDApLCB0eXBlKDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4ZmYsIDI1NSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwbzM3NywgMjU1KQpAQCAtNTYsNyArNTYsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdXZWlyZCBtYXhzaXplIHZhbHVlICVyJyAlIG1heHNpemUpCiAKLSAgICBkZWYgdGVzdExvbmdJbnRlZ2VycyhzZWxmKToKKyAgICBkZWYgdGVzdF9sb25nX2ludGVnZXJzKHNlbGYpOgogICAgICAgICB4ID0gMAogICAgICAgICB4ID0gMHhmZmZmZmZmZmZmZmZmZmZmCiAgICAgICAgIHggPSAwWGZmZmZmZmZmZmZmZmZmZmYKQEAgLTY2LDcgKzY2LDcgQEAKICAgICAgICAgeCA9IDBiMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICAgICAgIHggPSAwQjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQogCi0gICAgZGVmIHRlc3RGbG9hdHMoc2VsZik6CisgICAgZGVmIHRlc3RfZmxvYXRzKHNlbGYpOgogICAgICAgICB4ID0gMy4xNAogICAgICAgICB4ID0gMzE0LgogICAgICAgICB4ID0gMC4zMTQKQEAgLTgwLDcgKzgwLDcgQEAKICAgICAgICAgeCA9IC4zZTE0CiAgICAgICAgIHggPSAzLjFlNAogCi0gICAgZGVmIHRlc3RTdHJpbmdMaXRlcmFscyhzZWxmKToKKyAgICBkZWYgdGVzdF9zdHJpbmdfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIHggPSAnJzsgeSA9ICIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDAgYW5kIHggPT0geSkKICAgICAgICAgeCA9ICdcJyc7IHkgPSAiJyI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzkpCiAgICAgICAgIHggPSAnIic7IHkgPSAiXCIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDEgYW5kIHggPT0geSBhbmQgb3JkKHgpID09IDM0KQpAQCAtMTIwLDExICsxMjAsMTggQEAKICcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQogCi0gICAgZGVmIHRlc3RFbGxpcHNpcyhzZWxmKToKKyAgICBkZWYgdGVzdF9lbGxpcHNpcyhzZWxmKToKICAgICAgICAgeCA9IC4uLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBFbGxpcHNpcykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIuLiAuIikKIAorICAgIGRlZiB0ZXN0X2VvZl9lcnJvcihzZWxmKToKKyAgICAgICAgc2FtcGxlcyA9ICgiZGVmIGZvbygiLCAiXG5kZWYgZm9vKCIsICJkZWYgZm9vKFxuIikKKyAgICAgICAgZm9yIHMgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNvbXBpbGUocywgIjx0ZXN0PiIsICJleGVjIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVuZXhwZWN0ZWQgRU9GIiwgc3RyKGNtLmV4Y2VwdGlvbikpCisKIGNsYXNzIEdyYW1tYXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHNpbmdsZV9pbnB1dDogTkVXTElORSB8IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdCBORVdMSU5FCkBAIC0xMzYsMTEgKzE0MywxMSBAQAogICAgICMgZXhwcl9pbnB1dDogdGVzdGxpc3QgTkVXTElORQogICAgICMgWFhYIEhhcmQgdG8gdGVzdCAtLSB1c2VkIG9ubHkgaW4gY2FsbHMgdG8gaW5wdXQoKQogCi0gICAgZGVmIHRlc3RFdmFsSW5wdXQoc2VsZik6CisgICAgZGVmIHRlc3RfZXZhbF9pbnB1dChzZWxmKToKICAgICAgICAgIyB0ZXN0bGlzdCBFTkRNQVJLRVIKICAgICAgICAgeCA9IGV2YWwoJzEsIDAgb3IgMScpCiAKLSAgICBkZWYgdGVzdEZ1bmNkZWYoc2VsZik6CisgICAgZGVmIHRlc3RfZnVuY2RlZihzZWxmKToKICAgICAgICAgIyMjIFtkZWNvcmF0b3JzXSAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAgICAgICAgICMjIyBkZWNvcmF0b3I6ICdAJyBkb3R0ZWRfbmFtZSBbICcoJyBbYXJnbGlzdF0gJyknIF0gTkVXTElORQogICAgICAgICAjIyMgZGVjb3JhdG9yczogZGVjb3JhdG9yKwpAQCAtMzI0LDcgKzMzMSw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCi0gICAgZGVmIHRlc3RMYW1iZGVmKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xhbWJkZWYoc2VsZik6CiAgICAgICAgICMjIyBsYW1iZGVmOiAnbGFtYmRhJyBbdmFyYXJnc2xpc3RdICc6JyB0ZXN0CiAgICAgICAgIGwxID0gbGFtYmRhIDogMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwxKCksIDApCkBAIC0zNDYsNyArMzUzLDcgQEAKICAgICAjIyMgc3RtdDogc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10CiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0U2ltcGxlU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9zaW1wbGVfc3RtdChzZWxmKToKICAgICAgICAgIyMjIHNpbXBsZV9zdG10OiBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddCiAgICAgICAgIHggPSAxOyBwYXNzOyBkZWwgeAogICAgICAgICBkZWYgZm9vKCk6CkBAIC0zNTcsNyArMzY0LDcgQEAKICAgICAjIyMgc21hbGxfc3RtdDogZXhwcl9zdG10IHwgcGFzc19zdG10IHwgZGVsX3N0bXQgfCBmbG93X3N0bXQgfCBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgYWNjZXNzX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RFeHByU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9leHByX3N0bXQoc2VsZik6CiAgICAgICAgICMgKGV4cHJsaXN0ICc9JykqIGV4cHJsaXN0CiAgICAgICAgIDEKICAgICAgICAgMSwgMiwgMwpAQCAtMzcwLDcgKzM3Nyw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieCArIDEgPSAxIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJhICsgMSA9IGIgKyAyIikKIAotICAgIGRlZiB0ZXN0RGVsU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9kZWxfc3RtdChzZWxmKToKICAgICAgICAgIyAnZGVsJyBleHBybGlzdAogICAgICAgICBhYmMgPSBbMSwyLDNdCiAgICAgICAgIHgsIHksIHogPSBhYmMKQEAgLTM3OSwxOCArMzg2LDE4IEBACiAgICAgICAgIGRlbCBhYmMKICAgICAgICAgZGVsIHgsIHksICh6LCB4eXopCiAKLSAgICBkZWYgdGVzdFBhc3NTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X3Bhc3Nfc3RtdChzZWxmKToKICAgICAgICAgIyAncGFzcycKICAgICAgICAgcGFzcwogCiAgICAgIyBmbG93X3N0bXQ6IGJyZWFrX3N0bXQgfCBjb250aW51ZV9zdG10IHwgcmV0dXJuX3N0bXQgfCByYWlzZV9zdG10CiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0QnJlYWtTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2JyZWFrX3N0bXQoc2VsZik6CiAgICAgICAgICMgJ2JyZWFrJwogICAgICAgICB3aGlsZSAxOiBicmVhawogCi0gICAgZGVmIHRlc3RDb250aW51ZVN0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfY29udGludWVfc3RtdChzZWxmKToKICAgICAgICAgIyAnY29udGludWUnCiAgICAgICAgIGkgPSAxCiAgICAgICAgIHdoaWxlIGk6IGkgPSAwOyBjb250aW51ZQpAQCAtNDQyLDcgKzQ0OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJjb250aW51ZSB0aGVuIGJyZWFrIGluIHRyeS9leGNlcHQgaW4gbG9vcCBicm9rZW4hIikKICAgICAgICAgdGVzdF9pbm5lcigpCiAKLSAgICBkZWYgdGVzdFJldHVybihzZWxmKToKKyAgICBkZWYgdGVzdF9yZXR1cm4oc2VsZik6CiAgICAgICAgICMgJ3JldHVybicgW3Rlc3RsaXN0XQogICAgICAgICBkZWYgZzEoKTogcmV0dXJuCiAgICAgICAgIGRlZiBnMigpOiByZXR1cm4gMQpAQCAtNDUwLDE3ICs0NTcsNDkgQEAKICAgICAgICAgeCA9IGcyKCkKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286cmV0dXJuIDEiKQogCi0gICAgZGVmIHRlc3RZaWVsZChzZWxmKToKKyAgICBkZWYgdGVzdF95aWVsZChzZWxmKToKKyAgICAgICAgIyBBbGxvd2VkIGFzIHN0YW5kYWxvbmUgc3RhdGVtZW50CisgICAgICAgIGRlZiBnKCk6IHlpZWxkIDEKKyAgICAgICAgZGVmIGcoKTogeWllbGQgZnJvbSAoKQorICAgICAgICAjIEFsbG93ZWQgYXMgUkhTIG9mIGFzc2lnbm1lbnQKKyAgICAgICAgZGVmIGcoKTogeCA9IHlpZWxkIDEKKyAgICAgICAgZGVmIGcoKTogeCA9IHlpZWxkIGZyb20gKCkKKyAgICAgICAgIyBPcmRpbmFyeSB5aWVsZCBhY2NlcHRzIGltcGxpY2l0IHR1cGxlcworICAgICAgICBkZWYgZygpOiB5aWVsZCAxLCAxCisgICAgICAgIGRlZiBnKCk6IHggPSB5aWVsZCAxLCAxCisgICAgICAgICMgJ3lpZWxkIGZyb20nIGRvZXMgbm90CisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogeWllbGQgZnJvbSAoKSwgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogeCA9IHlpZWxkIGZyb20gKCksIDEiKQorICAgICAgICAjIFJlcXVpcmVzIHBhcmVudGhlc2VzIGFzIHN1YmV4cHJlc3Npb24KKyAgICAgICAgZGVmIGcoKTogMSwgKHlpZWxkIDEpCisgICAgICAgIGRlZiBnKCk6IDEsICh5aWVsZCBmcm9tICgpKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IDEsIHlpZWxkIDEiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IDEsIHlpZWxkIGZyb20gKCkiKQorICAgICAgICAjIFJlcXVpcmVzIHBhcmVudGhlc2VzIGFzIGNhbGwgYXJndW1lbnQKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgMSkpCisgICAgICAgIGRlZiBnKCk6IGYoKHlpZWxkIDEpLCAxKQorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCBmcm9tICgpKSkKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgZnJvbSAoKSksIDEpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCAxKSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCAxLCAxKSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCBmcm9tICgpKSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCBmcm9tICgpLCAxKSIpCisgICAgICAgICMgTm90IGFsbG93ZWQgYXQgdG9wIGxldmVsCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieWllbGQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgInlpZWxkIGZyb20iKQorICAgICAgICAjIE5vdCBhbGxvd2VkIGF0IGNsYXNzIHNjb3BlCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIDEiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzp5aWVsZCBmcm9tICgpIikKIAotICAgIGRlZiB0ZXN0UmFpc2Uoc2VsZik6CisKKyAgICBkZWYgdGVzdF9yYWlzZShzZWxmKToKICAgICAgICAgIyAncmFpc2UnIHRlc3QgWycsJyB0ZXN0XQogICAgICAgICB0cnk6IHJhaXNlIFJ1bnRpbWVFcnJvcignanVzdCB0ZXN0aW5nJykKICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjogcGFzcwogICAgICAgICB0cnk6IHJhaXNlIEtleWJvYXJkSW50ZXJydXB0CiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDogcGFzcwogCi0gICAgZGVmIHRlc3RJbXBvcnQoc2VsZik6CisgICAgZGVmIHRlc3RfaW1wb3J0KHNlbGYpOgogICAgICAgICAjICdpbXBvcnQnIGRvdHRlZF9hc19uYW1lcwogICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGltcG9ydCB0aW1lLCBzeXMKQEAgLTQ3MywxMyArNTEyLDEzIEBACiAgICAgICAgIGZyb20gc3lzIGltcG9ydCAocGF0aCwgYXJndikKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IChwYXRoLCBhcmd2LCkKIAotICAgIGRlZiB0ZXN0R2xvYmFsKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKICAgICAgICAgIyAnZ2xvYmFsJyBOQU1FICgnLCcgTkFNRSkqCiAgICAgICAgIGdsb2JhbCBhCiAgICAgICAgIGdsb2JhbCBhLCBiCiAgICAgICAgIGdsb2JhbCBvbmUsIHR3bywgdGhyZWUsIGZvdXIsIGZpdmUsIHNpeCwgc2V2ZW4sIGVpZ2h0LCBuaW5lLCB0ZW4KIAotICAgIGRlZiB0ZXN0Tm9ubG9jYWwoc2VsZik6CisgICAgZGVmIHRlc3Rfbm9ubG9jYWwoc2VsZik6CiAgICAgICAgICMgJ25vbmxvY2FsJyBOQU1FICgnLCcgTkFNRSkqCiAgICAgICAgIHggPSAwCiAgICAgICAgIHkgPSAwCkBAIC00ODcsNyArNTI2LDcgQEAKICAgICAgICAgICAgIG5vbmxvY2FsIHgKICAgICAgICAgICAgIG5vbmxvY2FsIHgsIHkKIAotICAgIGRlZiB0ZXN0QXNzZXJ0KHNlbGYpOgorICAgIGRlZiB0ZXN0X2Fzc2VydChzZWxmKToKICAgICAgICAgIyBhc3NlcnRUcnVlc3RtdDogJ2Fzc2VydCcgdGVzdCBbJywnIHRlc3RdCiAgICAgICAgIGFzc2VydCAxCiAgICAgICAgIGFzc2VydCAxLCAxCkBAIC01MjYsNyArNTY1LDcgQEAKICAgICAjIyMgY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmCiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0SWYoc2VsZik6CisgICAgZGVmIHRlc3RfaWYoc2VsZik6CiAgICAgICAgICMgJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgIGlmIDE6IHBhc3MKICAgICAgICAgaWYgMTogcGFzcwpAQCAtNTM5LDcgKzU3OCw3IEBACiAgICAgICAgIGVsaWYgMDogcGFzcwogICAgICAgICBlbHNlOiBwYXNzCiAKLSAgICBkZWYgdGVzdFdoaWxlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3doaWxlKHNlbGYpOgogICAgICAgICAjICd3aGlsZScgdGVzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgIHdoaWxlIDA6IHBhc3MKICAgICAgICAgd2hpbGUgMDogcGFzcwpAQCAtNTU0LDcgKzU5Myw3IEBACiAgICAgICAgICAgICB4ID0gMgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDIpCiAKLSAgICBkZWYgdGVzdEZvcihzZWxmKToKKyAgICBkZWYgdGVzdF9mb3Ioc2VsZik6CiAgICAgICAgICMgJ2ZvcicgZXhwcmxpc3QgJ2luJyBleHBybGlzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgIGZvciBpIGluIDEsIDIsIDM6IHBhc3MKICAgICAgICAgZm9yIGksIGosIGsgaW4gKCk6IHBhc3MKQEAgLTU4MSw3ICs2MjAsNyBAQAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDIsIDNdKQogCi0gICAgZGVmIHRlc3RUcnkoc2VsZik6CisgICAgZGVmIHRlc3RfdHJ5KHNlbGYpOgogICAgICAgICAjIyMgdHJ5X3N0bXQ6ICd0cnknICc6JyBzdWl0ZSAoZXhjZXB0X2NsYXVzZSAnOicgc3VpdGUpKyBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgIyMjICAgICAgICAgfCAndHJ5JyAnOicgc3VpdGUgJ2ZpbmFsbHknICc6JyBzdWl0ZQogICAgICAgICAjIyMgZXhjZXB0X2NsYXVzZTogJ2V4Y2VwdCcgW2V4cHIgWydhcycgZXhwcl1dCkBAIC02MDQsNyArNjQzLDcgQEAKICAgICAgICAgdHJ5OiBwYXNzCiAgICAgICAgIGZpbmFsbHk6IHBhc3MKIAotICAgIGRlZiB0ZXN0U3VpdGUoc2VsZik6CisgICAgZGVmIHRlc3Rfc3VpdGUoc2VsZik6CiAgICAgICAgICMgc2ltcGxlX3N0bXQgfCBORVdMSU5FIElOREVOVCBORVdMSU5FKiAoc3RtdCBORVdMSU5FKikrIERFREVOVAogICAgICAgICBpZiAxOiBwYXNzCiAgICAgICAgIGlmIDE6CkBAIC02MTksNyArNjU4LDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICMKIAotICAgIGRlZiB0ZXN0VGVzdChzZWxmKToKKyAgICBkZWYgdGVzdF90ZXN0KHNlbGYpOgogICAgICAgICAjIyMgYW5kX3Rlc3QgKCdvcicgYW5kX3Rlc3QpKgogICAgICAgICAjIyMgYW5kX3Rlc3Q6IG5vdF90ZXN0ICgnYW5kJyBub3RfdGVzdCkqCiAgICAgICAgICMjIyBub3RfdGVzdDogJ25vdCcgbm90X3Rlc3QgfCBjb21wYXJpc29uCkBAIC02MzAsNyArNjY5LDcgQEAKICAgICAgICAgaWYgbm90IDEgYW5kIDEgYW5kIDE6IHBhc3MKICAgICAgICAgaWYgMSBhbmQgMSBvciAxIGFuZCAxIGFuZCAxIG9yIG5vdCAxIGFuZCAxOiBwYXNzCiAKLSAgICBkZWYgdGVzdENvbXBhcmlzb24oc2VsZik6CisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKICAgICAgICAgIyMjIGNvbXBhcmlzb246IGV4cHIgKGNvbXBfb3AgZXhwcikqCiAgICAgICAgICMjIyBjb21wX29wOiAnPCd8Jz4nfCc9PSd8Jz49J3wnPD0nfCchPSd8J2luJ3wnbm90JyAnaW4nfCdpcyd8J2lzJyAnbm90JwogICAgICAgICBpZiAxOiBwYXNzCkBAIC02NDcsMzYgKzY4NiwzNiBAQAogICAgICAgICBpZiAxIG5vdCBpbiAoKTogcGFzcwogICAgICAgICBpZiAxIDwgMSA+IDEgPT0gMSA+PSAxIDw9IDEgIT0gMSBpbiAxIG5vdCBpbiAxIGlzIDEgaXMgbm90IDE6IHBhc3MKIAotICAgIGRlZiB0ZXN0QmluYXJ5TWFza09wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9iaW5hcnlfbWFza19vcHMoc2VsZik6CiAgICAgICAgIHggPSAxICYgMQogICAgICAgICB4ID0gMSBeIDEKICAgICAgICAgeCA9IDEgfCAxCiAKLSAgICBkZWYgdGVzdFNoaWZ0T3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3NoaWZ0X29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgPDwgMQogICAgICAgICB4ID0gMSA+PiAxCiAgICAgICAgIHggPSAxIDw8IDEgPj4gMQogCi0gICAgZGVmIHRlc3RBZGRpdGl2ZU9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9hZGRpdGl2ZV9vcHMoc2VsZik6CiAgICAgICAgIHggPSAxCiAgICAgICAgIHggPSAxICsgMQogICAgICAgICB4ID0gMSAtIDEgLSAxCiAgICAgICAgIHggPSAxIC0gMSArIDEgLSAxICsgMQogCi0gICAgZGVmIHRlc3RNdWx0aXBsaWNhdGl2ZU9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9tdWx0aXBsaWNhdGl2ZV9vcHMoc2VsZik6CiAgICAgICAgIHggPSAxICogMQogICAgICAgICB4ID0gMSAvIDEKICAgICAgICAgeCA9IDEgJSAxCiAgICAgICAgIHggPSAxIC8gMSAqIDEgJSAxCiAKLSAgICBkZWYgdGVzdFVuYXJ5T3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3VuYXJ5X29wcyhzZWxmKToKICAgICAgICAgeCA9ICsxCiAgICAgICAgIHggPSAtMQogICAgICAgICB4ID0gfjEKICAgICAgICAgeCA9IH4xIF4gMSAmIDEgfCAxICYgMSBeIC0xCiAgICAgICAgIHggPSAtMSoxLzEgKyAxKjEgLSAtLS0xKjEKIAotICAgIGRlZiB0ZXN0U2VsZWN0b3JzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3NlbGVjdG9ycyhzZWxmKToKICAgICAgICAgIyMjIHRyYWlsZXI6ICcoJyBbdGVzdGxpc3RdICcpJyB8ICdbJyBzdWJzY3JpcHQgJ10nIHwgJy4nIE5BTUUKICAgICAgICAgIyMjIHN1YnNjcmlwdDogZXhwciB8IFtleHByXSAnOicgW2V4cHJdCiAKQEAgLTcwNiw3ICs3NDUsNyBAQAogICAgICAgICBMLnNvcnQoa2V5PWxhbWJkYSB4OiB4IGlmIGlzaW5zdGFuY2UoeCwgdHVwbGUpIGVsc2UgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKEwpLCAnWzEsICgxLCksICgxLCAyKSwgKDEsIDIsIDMpXScpCiAKLSAgICBkZWYgdGVzdEF0b21zKHNlbGYpOgorICAgIGRlZiB0ZXN0X2F0b21zKHNlbGYpOgogICAgICAgICAjIyMgYXRvbTogJygnIFt0ZXN0bGlzdF0gJyknIHwgJ1snIFt0ZXN0bGlzdF0gJ10nIHwgJ3snIFtkaWN0c2V0bWFrZXJdICd9JyB8IE5BTUUgfCBOVU1CRVIgfCBTVFJJTkcKICAgICAgICAgIyMjIGRpY3RzZXRtYWtlcjogKHRlc3QgJzonIHRlc3QgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pIHwgKHRlc3QgKCcsJyB0ZXN0KSogWycsJ10pCiAKQEAgLTc0MSw3ICs3ODAsNyBAQAogICAgICMjIyB0ZXN0bGlzdDogdGVzdCAoJywnIHRlc3QpKiBbJywnXQogICAgICMgVGhlc2UgaGF2ZSBiZWVuIGV4ZXJjaXNlZCBlbm91Z2ggYWJvdmUKIAotICAgIGRlZiB0ZXN0Q2xhc3NkZWYoc2VsZik6CisgICAgZGVmIHRlc3RfY2xhc3NkZWYoc2VsZik6CiAgICAgICAgICMgJ2NsYXNzJyBOQU1FIFsnKCcgW3Rlc3RsaXN0XSAnKSddICc6JyBzdWl0ZQogICAgICAgICBjbGFzcyBCOiBwYXNzCiAgICAgICAgIGNsYXNzIEIyKCk6IHBhc3MKQEAgLTc2MCwxNCArNzk5LDE0IEBACiAgICAgICAgIEBjbGFzc19kZWNvcmF0b3IKICAgICAgICAgY2xhc3MgRzogcGFzcwogCi0gICAgZGVmIHRlc3REaWN0Y29tcHMoc2VsZik6CisgICAgZGVmIHRlc3RfZGljdGNvbXBzKHNlbGYpOgogICAgICAgICAjIGRpY3RvcnNldG1ha2VyOiAoICh0ZXN0ICc6JyB0ZXN0IChjb21wX2ZvciB8CiAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCcgdGVzdCAnOicgdGVzdCkqIFsnLCddKSkgfAogICAgICAgICAjICAgICAgICAgICAgICAgICAgICh0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddKSkgKQogICAgICAgICBudW1zID0gWzEsIDIsIDNdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe2k6aSsxIGZvciBpIGluIG51bXN9LCB7MTogMiwgMjogMywgMzogNH0pCiAKLSAgICBkZWYgdGVzdExpc3Rjb21wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9saXN0Y29tcHMoc2VsZik6CiAgICAgICAgICMgbGlzdCBjb21wcmVoZW5zaW9uIHRlc3RzCiAgICAgICAgIG51bXMgPSBbMSwgMiwgMywgNCwgNV0KICAgICAgICAgc3RycyA9IFsiQXBwbGUiLCAiQmFuYW5hIiwgIkNvY29udXQiXQpAQCAtODMwLDcgKzg2OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgWygnQm9laW5nJywgJ0FpcmxpbmVyJyksICgnQm9laW5nJywgJ0VuZ2luZScpLCAoJ0ZvcmQnLCAnRW5naW5lJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnTWFjZG9uYWxkcycsICdDaGVlc2VidXJnZXInKV0pCiAKLSAgICBkZWYgdGVzdEdlbmV4cHMoc2VsZik6CisgICAgZGVmIHRlc3RfZ2VuZXhwcyhzZWxmKToKICAgICAgICAgIyBnZW5lcmF0b3IgZXhwcmVzc2lvbiB0ZXN0cwogICAgICAgICBnID0gKFt4IGZvciB4IGluIHJhbmdlKDEwKV0gZm9yIHggaW4gcmFuZ2UoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgW3ggZm9yIHggaW4gcmFuZ2UoMTApXSkKQEAgLTg2NSw3ICs5MDQsNyBAQAogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImZvbyh4IGZvciB4IGluIHJhbmdlKDEwKSwgMTAwKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZm9vKDEwMCwgeCBmb3IgeCBpbiByYW5nZSgxMCkpIikKIAotICAgIGRlZiB0ZXN0Q29tcHJlaGVuc2lvblNwZWNpYWxzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbXByZWhlbnNpb25fc3BlY2lhbHMoc2VsZik6CiAgICAgICAgICMgdGVzdCBmb3Igb3V0bW9zdCBpdGVyYWJsZSBwcmVjb21wdXRhdGlvbgogICAgICAgICB4ID0gMTA7IGcgPSAoaSBmb3IgaSBpbiByYW5nZSh4KSk7IHggPSA1CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QoZykpLCAxMCkKQEAgLTkwNCw3ICs5NDMsNyBAQAogICAgICAgICB3aXRoIG1hbmFnZXIoKSBhcyB4LCBtYW5hZ2VyKCk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgdGVzdElmRWxzZUV4cHIoc2VsZik6CisgICAgZGVmIHRlc3RfaWZfZWxzZV9leHByKHNlbGYpOgogICAgICAgICAjIFRlc3QgaWZlbHNlIGV4cHJlc3Npb25zIGluIHZhcmlvdXMgY2FzZXMKICAgICAgICAgZGVmIF9jaGVja2V2YWwobXNnLCByZXQpOgogICAgICAgICAgICAgImhlbHBlciB0byBjaGVjayB0aGF0IGV2YWx1YXRpb24gb2YgZXhwcmVzc2lvbnMgaXMgZG9uZSBjb3JyZWN0bHkiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggY2VkMjI2Zi4uYWY3Mzk1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbgogCiAKLWNsYXNzIFRlc3RHemlwKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00Myw2ICs0Myw3IEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKHNlbGYuZmlsZW5hbWUpCiAKIAorY2xhc3MgVGVzdEd6aXAoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKQEAgLTY0LDYgKzY1LDIxIEBACiAgICAgICAgICAgICBkID0gZi5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkYXRhMSo1MCkKIAorICAgIGRlZiB0ZXN0X3JlYWQxKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQorICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICBucmVhZCA9IDAKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgZCA9IGYucmVhZDEoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoZCkKKyAgICAgICAgICAgICAgICBucmVhZCArPSBsZW4oZCkKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgcG9zaXRpb24gd2FzIHVwZGF0ZWQgY29ycmVjdGx5IChzZWUgaXNzdWUxMDc5MSkuCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbnJlYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4oYmxvY2tzKSwgZGF0YTEgKiA1MCkKKwogICAgIGRlZiB0ZXN0X2lvX29uX2Nsb3NlZF9vYmplY3Qoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IEkvTyBvcGVyYXRpb25zIG9uIGNsb3NlZCBHemlwRmlsZSBvYmplY3RzIHJhaXNlIGEKICAgICAgICAgIyBWYWx1ZUVycm9yLCBqdXN0IGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIG9uIGZpbGUgb2JqZWN0cy4KQEAgLTEwMCwxNCArMTE2LDE0IEBACiAgICAgICAgICMgQnVnICMxMDc0MjYxIHdhcyB0cmlnZ2VyZWQgd2hlbiByZWFkaW5nIGEgZmlsZSB0aGF0IGNvbnRhaW5lZAogICAgICAgICAjIG1hbnksIG1hbnkgbWVtYmVycy4gIENyZWF0ZSBzdWNoIGEgZmlsZSBhbmQgdmVyaWZ5IHRoYXQgcmVhZGluZyBpdAogICAgICAgICAjIHdvcmtzLgotICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAnd2InLCA5KSBhcyBmOgorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJywgOSkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYidhJykKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjAwKToKLSAgICAgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJhYiIsIDkpIGFzIGY6ICMgYXBwZW5kCisgICAgICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgImFiIiwgOSkgYXMgZjogIyBhcHBlbmQKICAgICAgICAgICAgICAgICBmLndyaXRlKGInYScpCiAKICAgICAgICAgIyBUcnkgcmVhZGluZyB0aGUgZmlsZQotICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyB6Z2ZpbGU6CisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyB6Z2ZpbGU6CiAgICAgICAgICAgICBjb250ZW50cyA9IGIiIgogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICB6dHh0ID0gemdmaWxlLnJlYWQoODE5MikKQEAgLTEyNCw3ICsxNDAsNyBAQAogICAgICAgICAgICAgd2l0aCBpby5CdWZmZXJlZFJlYWRlcihmKSBhcyByOgogICAgICAgICAgICAgICAgIGxpbmVzID0gW2xpbmUgZm9yIGxpbmUgaW4gcl0KIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCA1MCAqIGRhdGExLnNwbGl0bGluZXMoVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIDUwICogZGF0YTEuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgogICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQpAQCAtMzIzLDYgKzMzOSwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMTAwKSwgYicnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucmVhZCwgbGVuKHVuY29tcHJlc3NlZCkpCiAKKyAgICBkZWYgdGVzdF90ZXh0aW9fcmVhZGxpbmVzKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMDc5MTogVGV4dElPV3JhcHBlci5yZWFkbGluZXMoKSBmYWlscyB3aGVuIHdyYXBwaW5nIEd6aXBGaWxlLgorICAgICAgICBsaW5lcyA9IChkYXRhMSAqIDUwKS5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgd2l0aCBpby5UZXh0SU9XcmFwcGVyKGYsIGVuY29kaW5nPSJhc2NpaSIpIGFzIHQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlYWRsaW5lcygpLCBsaW5lcykKKwogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfZnJvbV9mZG9wZW4oc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzNzgxOiBPcGVuaW5nIGEgR3ppcEZpbGUgZm9yIHdyaXRpbmcgZmFpbHMgd2hlbiB1c2luZyBhCiAgICAgICAgICMgZmlsZW9iaiBjcmVhdGVkIHdpdGggb3MuZmRvcGVuKCkuCkBAIC0zNjUsOCArMzg5LDEwOSBAQAogICAgICAgICAgICAgZGF0YWMgPSBnemlwLmNvbXByZXNzKGRhdGEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGd6aXAuZGVjb21wcmVzcyhkYXRhYyksIGRhdGEpCiAKKworY2xhc3MgVGVzdE9wZW4oQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MAorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQgKiAyKQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wbGljaXQgYmluYXJ5IG1vZGVzIChubyAiYiIgb3IgInQiIGluIG1vZGUgc3RyaW5nKS4KKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MAorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJhIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQgKiAyKQorCisgICAgZGVmIHRlc3RfdGV4dF9tb2RlcyhzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEuZGVjb2RlKCJhc2NpaSIpICogNTAKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJhdCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW9iaihzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkX2J5dGVzID0gZGF0YTEgKiA1MAorICAgICAgICB1bmNvbXByZXNzZWRfc3RyID0gdW5jb21wcmVzc2VkX2J5dGVzLmRlY29kZSgiYXNjaWkiKQorICAgICAgICBjb21wcmVzc2VkID0gZ3ppcC5jb21wcmVzcyh1bmNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGlvLkJ5dGVzSU8oY29tcHJlc3NlZCksICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oaW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oaW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgInJ0IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZF9zdHIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oMTIzLjQ1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVycm9ycz0iaWdub3JlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMS5kZWNvZGUoImFzY2lpIikgKiA1MAorICAgICAgICB1bmNvbXByZXNzZWRfcmF3ID0gdW5jb21wcmVzc2VkLnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgZW5jb2Rpbmc9InV0Zi0xNiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgidXRmLTE2IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWRfcmF3KQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0idXRmLTE2IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRoIG5vbi1kZWZhdWx0IGVuY29kaW5nIGVycm9yIGhhbmRsZXIuCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiZm9vXHhmZmJhciIpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIGVuY29kaW5nPSJhc2NpaSIsIGVycm9ycz0iaWdub3JlIikgXAorICAgICAgICAgICAgICAgIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiZm9vYmFyIikKKworICAgIGRlZiB0ZXN0X25ld2xpbmUoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRoIGV4cGxpY2l0IG5ld2xpbmUgKHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgZGlzYWJsZWQpLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMS5kZWNvZGUoImFzY2lpIikgKiA1MAorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBuZXdsaW5lPSJcbiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgbmV3bGluZT0iXHIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbdW5jb21wcmVzc2VkXSkKKwogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RHemlwKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RHemlwLCBUZXN0T3BlbikKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNoLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CmluZGV4IGMwZGQzNGQuLjA3NzY3NzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2gucHkKQEAgLTExMyw4ICsxMTMsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5zZXFbaW5kZXhdCiAKIGNsYXNzIEhhc2hCdWlsdGluc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBoYXNoZXNfdG9fY2hlY2sgPSBbcmFuZ2UoMTApLAotICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGUocmFuZ2UoMTApKSwKKyAgICBoYXNoZXNfdG9fY2hlY2sgPSBbZW51bWVyYXRlKHJhbmdlKDEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIoRGVmYXVsdEl0ZXJTZXEoKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIobGFtYmRhOiAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICBdCkBAIC0xNjAsOCArMTU5LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGtub3duX2hhc2hfb2Zfb2JqID0gLTE2MDA5MjU1MzMKIAotICAgICAgICAjIFJhbmRvbWl6YXRpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdDoKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKKyAgICAgICAgIyBSYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdDoKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKIAogICAgICAgICAjIEl0IGNhbiBhbHNvIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIHNlZWQgdG8gMDoKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8sIHNlZWQ9MCksIGtub3duX2hhc2hfb2Zfb2JqKQpAQCAtMTkzLDYgKzE5MiwxMiBAQAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGIiIiksIDApCiAKK2NsYXNzIE1lbW9yeXZpZXdIYXNoUmFuZG9taXphdGlvblRlc3RzKFN0cmluZ2xpa2VIYXNoUmFuZG9taXphdGlvblRlc3RzKToKKyAgICByZXByXyA9ICJtZW1vcnl2aWV3KGInYWJjJykiCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtZW1vcnl2aWV3KGIiIikpLCAwKQorCiBjbGFzcyBEYXRldGltZVRlc3RzKEhhc2hSYW5kb21pemF0aW9uVGVzdHMpOgogICAgIGRlZiBnZXRfaGFzaF9jb21tYW5kKHNlbGYsIHJlcHJfKToKICAgICAgICAgcmV0dXJuICdpbXBvcnQgZGF0ZXRpbWU7IHByaW50KGhhc2goJXMpKScgJSByZXByXwpAQCAtMjEzLDYgKzIxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaEJ1aWx0aW5zVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RySGFzaFJhbmRvbWl6YXRpb25UZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlc0hhc2hSYW5kb21pemF0aW9uVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5dmlld0hhc2hSYW5kb21pemF0aW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVEYXRlVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVEYXRldGltZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgIERhdGV0aW1lVGltZVRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IDI5ZDNhMWMuLjMyZjg1ZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgYXJyYXkKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0zNyw3ICszOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEyMjQnLCAnU0hBMjI0JywgJ3NoYTI1NicsICdTSEEyNTYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJyApCiAKLSAgICBfd2Fybl9vbl9leHRlbnNpb25faW1wb3J0ID0gQ09NUElMRURfV0lUSF9QWURFQlVHCisgICAgIyBJc3N1ZSAjMTQ2OTM6IGZhbGxiYWNrIG1vZHVsZXMgYXJlIGFsd2F5cyBjb21waWxlZCB1bmRlciBQT1NJWAorICAgIF93YXJuX29uX2V4dGVuc2lvbl9pbXBvcnQgPSBvcy5uYW1lID09ICdwb3NpeCcgb3IgQ09NUElMRURfV0lUSF9QWURFQlVHCiAKICAgICBkZWYgX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoc2VsZiwgbW9kdWxlX25hbWUpOgogICAgICAgICAiIiJJbXBvcnQgYSBtb2R1bGUgYW5kIHJldHVybiBhIHJlZmVyZW5jZSB0byBpdCBvciBOb25lIG9uIGZhaWx1cmUuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2htYWMucHkgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKaW5kZXggNGRlMDYyMC4uNGNhN2NlYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQpAQCAtMjM0LDYgKzIzNCwxOCBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlN0YW5kYXJkIGNvbnN0cnVjdG9yIGNhbGwgcmFpc2VkIGV4Y2VwdGlvbi4iKQogCisgICAgZGVmIHRlc3Rfd2l0aF9zdHJfa2V5KHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBrZXkgb2YgdHlwZSBzdHIsIHdoaWNoIGlzIGFuIGVycm9yLCBiZWNhdXNlIGl0IGV4cGVjdHMgYSBrZXkKKyAgICAgICAgIyBvZiB0eXBlIGJ5dGVzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGggPSBobWFjLkhNQUMoImtleSIpCisKKyAgICBkZWYgdGVzdF9kb3RfbmV3X3dpdGhfc3RyX2tleShzZWxmKToKKyAgICAgICAgIyBQYXNzIGEga2V5IG9mIHR5cGUgc3RyLCB3aGljaCBpcyBhbiBlcnJvciwgYmVjYXVzZSBpdCBleHBlY3RzIGEga2V5CisgICAgICAgICMgb2YgdHlwZSBieXRlcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoID0gaG1hYy5uZXcoImtleSIpCisKICAgICBkZWYgdGVzdF93aXRodGV4dChzZWxmKToKICAgICAgICAgIyBDb25zdHJ1Y3RvciBjYWxsIHdpdGggdGV4dC4KICAgICAgICAgdHJ5OgpAQCAtMzAyLDEyICszMTQsMTIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEuaGV4ZGlnZXN0KCksIGgyLmhleGRpZ2VzdCgpLAogICAgICAgICAgICAgIkhleGRpZ2VzdCBvZiBjb3B5IGRvZXNuJ3QgbWF0Y2ggb3JpZ2luYWwgaGV4ZGlnZXN0LiIpCiAKK2NsYXNzIENvbXBhcmVEaWdlc3RUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jb21wYXJlX2RpZ2VzdChzZWxmKToKKyAgICAgICAgIyBUZXN0aW5nIGlucHV0IHR5cGUgZXhjZXB0aW9uIGhhbmRsaW5nCisgICAgICAgIGEsIGIgPSAxMDAsIDIwMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAxMDAsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIDIwMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAiZm9vYmFyIiwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorCisgICAgICAgICMgVGVzdGluZyBieXRlcyBvZiBkaWZmZXJlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYiJmb29iYXIiLCBiImZvbyIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGRlXHhhZCIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlcyBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgYiJmb29iYXoiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IGIiXHhkZVx4YWRceGJlXHhlZiIsIGIiXHhhYlx4YWRceDFkXHhlYSIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlcyBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IGIiXHhkZVx4YWRceGJlXHhlZiIsIGIiXHhkZVx4YWRceGJlXHhlZiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVhcnJheXMgb2Ygc2FtZSBsZW5ndGhzLCBzYW1lIHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGJ5dGVhcnJheShiImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlYXJyYXlzIG9mIGRpZmZlZW50IGxlbmd0aHMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBieXRlYXJyYXkoYiJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVhcnJheXMgb2Ygc2FtZSBsZW5ndGhzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYnl0ZWFycmF5KGIiZm9vYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlIGFuZCBieXRlYXJyYXkgb2Ygc2FtZSBsZW5ndGhzLCBzYW1lIHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYiwgYSkpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGUgYnl0ZWFycmF5IG9mIGRpZmZlZW50IGxlbmd0aHMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBiImZvbyIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYiwgYSkpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGUgYW5kIGJ5dGVhcnJheSBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBiImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYiwgYSkpCisKKyAgICAgICAgIyBUZXN0aW5nIHN0ciBvZiBzYW1lIGxlbmd0aHMKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3Rpbmcgc3RyIG9mIGRpZmZlZW50IGxlbmd0aHMKKyAgICAgICAgYSwgYiA9ICJmb28iLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gImZvb2JhciIsICJmb29iYXoiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgZXJyb3IgY2FzZXMKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gYiJmb29iYXIiLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIDEKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gMTAwLCAyMDAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gImZvb8OkIiwgImZvb8OkIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisKKyAgICAgICAgIyBzdWJjbGFzc2VzIGFyZSBzdXBwb3J0ZWQgYnkgaWdub3JlIF9fZXFfXworICAgICAgICBjbGFzcyBteXN0cihzdHIpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgYSwgYiA9IG15c3RyKCJmb29iYXIiKSwgbXlzdHIoImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IG15c3RyKCJmb29iYXIiKSwgbXlzdHIoImZvb2JheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICBjbGFzcyBteWJ5dGVzKGJ5dGVzKToKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGEsIGIgPSBteWJ5dGVzKGIiZm9vYmFyIiksIG15Ynl0ZXMoYiJmb29iYXIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IG15Ynl0ZXMoYiJmb29iYXIiKSwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlieXRlcyhiImZvb2JhciIpLCBteWJ5dGVzKGIiZm9vYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFZlY3RvcnNUZXN0Q2FzZSwKICAgICAgICAgQ29uc3RydWN0b3JUZXN0Q2FzZSwKICAgICAgICAgU2FuaXR5VGVzdENhc2UsCi0gICAgICAgIENvcHlUZXN0Q2FzZQorICAgICAgICBDb3B5VGVzdENhc2UsCisgICAgICAgIENvbXBhcmVEaWdlc3RUZXN0Q2FzZQogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQppbmRleCBjNGY4MGNjLi5jNWQ4NzhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CkBAIC0xMDIsNyArMTAyLDggQEAKIGNsYXNzIEhUTUxQYXJzZXJTdHJpY3RUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgogCiAgICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpdGU9RmFsc2UpOgorICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQogCiAgICAgZGVmIHRlc3RfcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soIjw/cHJvY2Vzc2luZyBpbnN0cnVjdGlvbj4iLCBbCkBAIC00NTUsNyArNDU2LDcgQEAKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCc8Zm9ybSBhY3Rpb249Ii94eHgucGhwP2E9MSZhbXA7Yj0yJmFtcCIsICcKICAgICAgICAgICAgICAgICAgICAgICAgICdtZXRob2Q9InBvc3QiPicsIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3N0YXJ0dGFnJywgJ2Zvcm0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhY3Rpb24nLCAnL3h4eC5waHA/YT0xJmI9MiZhbXAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYWN0aW9uJywgJy94eHgucGhwP2E9MSZiPTImJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJywnLCBOb25lKSwgKCdtZXRob2QnLCAncG9zdCcpXSldKQogCiAgICAgZGVmIHRlc3Rfd2VpcmRfY2hhcnNfaW5fdW5xdW90ZWRfYXR0cmlidXRlX3ZhbHVlcyhzZWxmKToKQEAgLTU0MCw2ICs1NDEsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmIzAwMzg7JyksJyYnKQogICAgICAgICAjIHNlZSAjMTI4ODgKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmIzEyMzsgJyAqIDEwNTApLCAneyAnICogMTA1MCkKKyAgICAgICAgIyBzZWUgIzE1MTU2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC51bmVzY2FwZSgnJkVhY3V0ZXJpYyZFYWN1dGU7cmljJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyZhbHBoYWNlbnRhdXJpJmFscGhhO2NlbnRhdXJpJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnw4lyaWPDiXJpYyZhbHBoYWNlbnRhdXJpzrFjZW50YXVyaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC51bmVzY2FwZSgnJmNvOycpLCAnJmNvOycpCiAKICAgICBkZWYgdGVzdF9icm9rZW5fY29tbWVudHMoc2VsZik6CiAgICAgICAgIGh0bWwgPSAoJzwhIG5vdCByZWFsbHkgYSBjb21tZW50ID4nCkBAIC01OTQsNyArNjAwLDggQEAKIGNsYXNzIEF0dHJpYnV0ZXNTdHJpY3RUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgogCiAgICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpdGU9RmFsc2UpOgorICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQogCiAgICAgZGVmIHRlc3RfYXR0cl9zeW50YXgoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CmluZGV4IDQxZTBkZmQuLmEzNWVjOTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQpAQCAtMjQ4LDE4ICsyNDgsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9jb29raWVzWyJ3d3cuYWNtZS5jb20iXVsiLyJdWyJib28iXS52YWx1ZSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2JhZF9tYWdpYyhzZWxmKToKLSAgICAgICAgIyBJT0Vycm9ycyAoZWcuIGZpbGUgZG9lc24ndCBleGlzdCkgYXJlIGFsbG93ZWQgdG8gcHJvcGFnYXRlCisgICAgICAgICMgT1NFcnJvcnMgKGVnLiBmaWxlIGRvZXNuJ3QgZXhpc3QpIGFyZSBhbGxvd2VkIHRvIHByb3BhZ2F0ZQogICAgICAgICBmaWxlbmFtZSA9IHRlc3Quc3VwcG9ydC5URVNURk4KICAgICAgICAgZm9yIGNvb2tpZWphcl9jbGFzcyBpbiBMV1BDb29raWVKYXIsIE1vemlsbGFDb29raWVKYXI6CiAgICAgICAgICAgICBjID0gY29va2llamFyX2NsYXNzKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjLmxvYWQoZmlsZW5hbWU9ImZvciB0aGlzIHRlc3QgdG8gd29yaywgYSBmaWxlIHdpdGggdGhpcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSBzaG91bGQgbm90IGV4aXN0IikKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIGV4YWN0bHkgSU9FcnJvciwgbm90IExvYWRFcnJvcgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXhjLl9fY2xhc3NfXywgSU9FcnJvcikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIGFuIE9TRXJyb3Igc3ViY2xhc3MgKGxpa2VseSBGaWxlTm90Rm91bmRFcnJvciksIGJ1dCBub3QKKyAgICAgICAgICAgICAgICAjIExvYWRFcnJvcgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZXhjLl9fY2xhc3NfXywgTG9hZEVycm9yKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIElPRXJyb3IgZm9yIGludmFsaWQgZmlsZW5hbWUiKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgT1NFcnJvciBmb3IgaW52YWxpZCBmaWxlbmFtZSIpCiAgICAgICAgICMgSW52YWxpZCBjb250ZW50cyBvZiBjb29raWVzIGZpbGUgKGVnLiBiYWQgbWFnaWMgc3RyaW5nKQogICAgICAgICAjIGNhdXNlcyBhIExvYWRFcnJvci4KICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQppbmRleCAxZjFjYTU4Li5lODMyN2U1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQpAQCAtMzQsNiArMzQsMTUgQEAKICAgICAgICAgICAgICAnZGljdCc6IHsna2VlYmxlcicgOiAnRT1tYzInfSwKICAgICAgICAgICAgICAncmVwcic6ICI8U2ltcGxlQ29va2llOiBrZWVibGVyPSdFPW1jMic+IiwKICAgICAgICAgICAgICAnb3V0cHV0JzogJ1NldC1Db29raWU6IGtlZWJsZXI9RT1tYzInfSwKKworICAgICAgICAgICAgIyBDb29raWVzIHdpdGggJzonIGNoYXJhY3RlciBpbiB0aGVpciBuYW1lLiBUaG91Z2ggbm90IG1lbnRpb25lZCBpbgorICAgICAgICAgICAgIyBSRkMsIHNlcnZlcnMgLyBicm93c2VycyBhbGxvdyBpdC4KKworICAgICAgICAgICAgIHsnZGF0YSc6ICdrZXk6dGVybT12YWx1ZTp0ZXJtJywKKyAgICAgICAgICAgICAnZGljdCc6IHsna2V5OnRlcm0nIDogJ3ZhbHVlOnRlcm0nfSwKKyAgICAgICAgICAgICAncmVwcic6ICI8U2ltcGxlQ29va2llOiBrZXk6dGVybT0ndmFsdWU6dGVybSc+IiwKKyAgICAgICAgICAgICAnb3V0cHV0JzogJ1NldC1Db29raWU6IGtleTp0ZXJtPXZhbHVlOnRlcm0nfSwKKwogICAgICAgICBdCiAKICAgICAgICAgZm9yIGNhc2UgaW4gY2FzZXM6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKaW5kZXggMjRjNzJmZi4uY2Y2MTU1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQpAQCAtMTg2LDYgKzE4NiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgyKSwgYid4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRpbnRvcyhzZWxmKToKKyAgICAgICAgIyBpZiB3ZSBoYXZlIGEgbGVuZ2h0LCB0aGUgc3lzdGVtIGtub3dzIHdoZW4gdG8gY2xvc2UgaXRzZWxmCisgICAgICAgICMgc2FtZSBiZWhhdmlvdXIgdGhhbiB3aGVuIHdlIHJlYWQgdGhlIHdob2xlIHRoaW5nIHdpdGggcmVhZCgpCisgICAgICAgIGJvZHkgPSAiSFRUUC8xLjEgMjAwIE9rXHJcbkNvbnRlbnQtTGVuZ3RoOiA0XHJcblxyXG5UZXh0IgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChib2R5KQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInVGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3AuaXNjbG9zZWQoKSkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ3h0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKKwogICAgIGRlZiB0ZXN0X2hvc3RfcG9ydChzZWxmKToKICAgICAgICAgIyBDaGVjayBpbnZhbGlkIGhvc3RfcG9ydAogCkBAIC0yMzQsNiArMjUxLDIxIEBACiAgICAgICAgIGlmIHJlc3AucmVhZCgpOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJEaWQgbm90IGV4cGVjdCByZXNwb25zZSBmcm9tIEhFQUQgcmVxdWVzdCIpCiAKKyAgICBkZWYgdGVzdF9yZWFkaW50b19oZWFkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUgbGlicmFyeSBkb2Vzbid0IGF0dGVtcHQgdG8gcmVhZCBhbnkgZGF0YQorICAgICAgICAjIGZyb20gYSBIRUFEIHJlcXVlc3QuICAoVGlja2xlcyBTRiBidWcgIzYyMjA0Mi4pCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KAorICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6IDE0NDMyXHJcbicKKyAgICAgICAgICAgICdcclxuJywKKyAgICAgICAgICAgIE5vRU9GU3RyaW5nSU8pCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iSEVBRCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBiID0gYnl0ZWFycmF5KDUpCisgICAgICAgIGlmIHJlc3AucmVhZGludG8oYikgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRGlkIG5vdCBleHBlY3QgcmVzcG9uc2UgZnJvbSBIRUFEIHJlcXVlc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ1x4MDAnKjUpCisKICAgICBkZWYgdGVzdF9zZW5kX2ZpbGUoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkID0gKGInR0VUIC9mb28gSFRUUC8xLjFcclxuSG9zdDogZXhhbXBsZS5jb21cclxuJwogICAgICAgICAgICAgICAgICAgICBiJ0FjY2VwdC1FbmNvZGluZzogaWRlbnRpdHlcclxuQ29udGVudC1MZW5ndGg6JykKQEAgLTI4OSwxNSArMzIxLDI4IEBACiAgICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKICAgICAgICAgICAgICdhXHJcbicKICAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKLSAgICAgICAgICAgICcxXHJcbicKLSAgICAgICAgICAgICdkXHJcbicKKyAgICAgICAgICAgICczXHJcbicKKyAgICAgICAgICAgICdkISBcclxuJworICAgICAgICAgICAgJzhcclxuJworICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKKyAgICAgICAgICAgICcyMlxyXG4nCisgICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCiAgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCiAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCiAgICAgICAgIHJlc3AuYmVnaW4oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBiJ2hlbGxvIHdvcmxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCiAgICAgICAgIHJlc3AuY2xvc2UoKQogCisgICAgICAgICMgVmFyaW91cyByZWFkIHNpemVzCisgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDEyKToKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZChuKSArIHJlc3AucmVhZChuKSArIHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHJlc3AuY2xvc2UoKQorCiAgICAgICAgIGZvciB4IGluICgnJywgJ2Zvb1xyXG4nKToKICAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyB4KQogICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQpAQCAtMzA1LDkgKzM1MCw2NCBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlc3AucmVhZCgpCiAgICAgICAgICAgICBleGNlcHQgY2xpZW50LkluY29tcGxldGVSZWFkIGFzIGk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLnBhcnRpYWwsIGInaGVsbG8gd29ybGQnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihpKSwnSW5jb21wbGV0ZVJlYWQoMTEgYnl0ZXMgcmVhZCknKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGkpLCdJbmNvbXBsZXRlUmVhZCgxMSBieXRlcyByZWFkKScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLnBhcnRpYWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAnSW5jb21wbGV0ZVJlYWQoJWQgYnl0ZXMgcmVhZCknICUgbGVuKGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihpKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdJbmNvbXBsZXRlUmVhZCBleHBlY3RlZCcpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfcmVhZGludG9fY2h1bmtlZChzZWxmKToKKyAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKKyAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgICAgICAgICAnYVxyXG4nCisgICAgICAgICAgICAnaGVsbG8gd29ybFxyXG4nCisgICAgICAgICAgICAnM1xyXG4nCisgICAgICAgICAgICAnZCEgXHJcbicKKyAgICAgICAgICAgICc4XHJcbicKKyAgICAgICAgICAgICdhbmQgbm93IFxyXG4nCisgICAgICAgICAgICAnMjJcclxuJworICAgICAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcclxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JworICAgICAgICBuZXhwZWN0ZWQgPSBsZW4oZXhwZWN0ZWQpCisgICAgICAgIGIgPSBieXRlYXJyYXkoMTI4KQorCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJbOm5leHBlY3RlZF0sIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIG5leHBlY3RlZCkKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpCisgICAgICAgICAgICBpID0gcmVzcC5yZWFkaW50byhtWzA6bl0pCisgICAgICAgICAgICBpICs9IHJlc3AucmVhZGludG8obVtpOm4gKyBpXSkKKyAgICAgICAgICAgIGkgKz0gcmVzcC5yZWFkaW50byhtW2k6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6bmV4cGVjdGVkXSwgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGksIG5leHBlY3RlZCkKKyAgICAgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgICAgIGZvciB4IGluICgnJywgJ2Zvb1xyXG4nKToKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyB4KQorICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgICAgIGV4Y2VwdCBjbGllbnQuSW5jb21wbGV0ZVJlYWQgYXMgaToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICdJbmNvbXBsZXRlUmVhZCglZCBieXRlcyByZWFkKScgJSBsZW4oZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGkpLCBleHBlY3RlZF9tZXNzYWdlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0luY29tcGxldGVSZWFkIGV4cGVjdGVkJykKICAgICAgICAgICAgIGZpbmFsbHk6CkBAIC0zMzAsNiArNDMwLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFzb24sICdPSycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCiAKKyAgICBkZWYgdGVzdF9yZWFkaW50b19jaHVua2VkX2hlYWQoc2VsZik6CisgICAgICAgIGNodW5rZWRfc3RhcnQgPSAoCisgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJworICAgICAgICAgICAgJ2FcclxuJworICAgICAgICAgICAgJ2hlbGxvIHdvcmxkXHJcbicKKyAgICAgICAgICAgICcxXHJcbicKKyAgICAgICAgICAgICdkXHJcbicKKyAgICAgICAgKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIGIgPSBieXRlYXJyYXkoNSkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ1x4MDAnKjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5zdGF0dXMsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYXNvbiwgJ09LJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKKwogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2NvbnRlbnRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBzb2NrID0gRmFrZVNvY2tldCgKICAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6IC0xXHJcblxyXG5IZWxsb1xyXG4nKQpAQCAtNTQ1LDggKzY2NSw3IEBACiAgICAgZGVmIHRlc3RfbG9jYWxfZ29vZF9ob3N0bmFtZShzZWxmKToKICAgICAgICAgIyBUaGUgKHZhbGlkKSBjZXJ0IHZhbGlkYXRlcyB0aGUgSFRUUCBob3N0bmFtZQogICAgICAgICBpbXBvcnQgc3NsCi0gICAgICAgIGZyb20gdGVzdC5zc2xfc2VydmVycyBpbXBvcnQgbWFrZV9odHRwc19zZXJ2ZXIKLSAgICAgICAgc2VydmVyID0gbWFrZV9odHRwc19zZXJ2ZXIoc2VsZiwgQ0VSVF9sb2NhbGhvc3QpCisgICAgICAgIHNlcnZlciA9IHNlbGYubWFrZV9zZXJ2ZXIoQ0VSVF9sb2NhbGhvc3QpCiAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAogICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJUX2xvY2FsaG9zdCkKQEAgLTU1NCwxMiArNjczLDEyIEBACiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgNDA0KQorICAgICAgICBkZWwgc2VydmVyCiAKICAgICBkZWYgdGVzdF9sb2NhbF9iYWRfaG9zdG5hbWUoc2VsZik6CiAgICAgICAgICMgVGhlICh2YWxpZCkgY2VydCBkb2Vzbid0IHZhbGlkYXRlIHRoZSBIVFRQIGhvc3RuYW1lCiAgICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgZnJvbSB0ZXN0LnNzbF9zZXJ2ZXJzIGltcG9ydCBtYWtlX2h0dHBzX3NlcnZlcgotICAgICAgICBzZXJ2ZXIgPSBtYWtlX2h0dHBzX3NlcnZlcihzZWxmLCBDRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5tYWtlX3NlcnZlcihDRVJUX2Zha2Vob3N0bmFtZSkKICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRfZmFrZWhvc3RuYW1lKQpAQCAtNTc3LDYgKzY5Niw3IEBACiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgNDA0KQorICAgICAgICBkZWwgc2VydmVyCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGNsaWVudCwgJ0hUVFBTQ29ubmVjdGlvbicpLAogICAgICAgICAgICAgICAgICAgICAgJ2h0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiBub3QgYXZhaWxhYmxlJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IGQ5ZTQwNjMuLjc1MTMzYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtNDcxLDYgKzQ3MSwyMyBAQAogICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDE3KQogICAgICAgICByZXR1cm4gRmFsc2UKIAorCitjbGFzcyBBdWRpdGFibGVCeXRlc0lPOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGFzID0gW10KKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5kYXRhcy5hcHBlbmQoZGF0YSkKKworICAgIGRlZiBnZXREYXRhKHNlbGYpOgorICAgICAgICByZXR1cm4gYicnLmpvaW4oc2VsZi5kYXRhcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBudW1Xcml0ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5kYXRhcykKKworCiBjbGFzcyBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEJhc2VIVFRQU2VydmVyLgogCkBAIC01MzcsMjcgKzU1NCw0OSBAQAogICAgICAgICBzZWxmLnZlcmlmeV9nZXRfY2FsbGVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbLTFdLCBiJzxodG1sPjxib2R5PkRhdGE8L2JvZHk+PC9odG1sPlxyXG4nKQogCi0gICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZyhzZWxmKToKLQotICAgICAgICBkZWYgX3JlYWRBbmRSZXNlZWsoZik6Ci0gICAgICAgICAgICBwb3MgPSBmLnRlbGwoKQotICAgICAgICAgICAgZi5zZWVrKDApCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuc2Vlayhwb3MpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQorICAgIGRlZiB0ZXN0X2hlYWRlcl9idWZmZXJpbmdfb2Zfc2VuZF9lcnJvcihzZWxmKToKIAogICAgICAgICBpbnB1dCA9IEJ5dGVzSU8oYidHRVQgLyBIVFRQLzEuMVxyXG5cclxuJykKLSAgICAgICAgb3V0cHV0ID0gQnl0ZXNJTygpCi0gICAgICAgIHNlbGYuaGFuZGxlci5yZmlsZSA9IGlucHV0Ci0gICAgICAgIHNlbGYuaGFuZGxlci53ZmlsZSA9IG91dHB1dAotICAgICAgICBzZWxmLmhhbmRsZXIucmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworICAgICAgICBvdXRwdXQgPSBBdWRpdGFibGVCeXRlc0lPKCkKKyAgICAgICAgaGFuZGxlciA9IFNvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcigpCisgICAgICAgIGhhbmRsZXIucmZpbGUgPSBpbnB1dAorICAgICAgICBoYW5kbGVyLndmaWxlID0gb3V0cHV0CisgICAgICAgIGhhbmRsZXIucmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworICAgICAgICBoYW5kbGVyLnJlcXVlc3RsaW5lID0gJycKKyAgICAgICAgaGFuZGxlci5jb21tYW5kID0gTm9uZQogCi0gICAgICAgIHNlbGYuaGFuZGxlci5zZW5kX2hlYWRlcignRm9vJywgJ2ZvbycpCi0gICAgICAgIHNlbGYuaGFuZGxlci5zZW5kX2hlYWRlcignYmFyJywgJ2JhcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3JlYWRBbmRSZXNlZWsob3V0cHV0KSwgYicnKQotICAgICAgICBzZWxmLmhhbmRsZXIuZW5kX2hlYWRlcnMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9yZWFkQW5kUmVzZWVrKG91dHB1dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidGb286IGZvb1xyXG5iYXI6IGJhclxyXG5cclxuJykKKyAgICAgICAgaGFuZGxlci5zZW5kX2Vycm9yKDQxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQubnVtV3JpdGVzLCAyKQorCisgICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZ19vZl9zZW5kX3Jlc3BvbnNlX29ubHkoc2VsZik6CisKKyAgICAgICAgaW5wdXQgPSBCeXRlc0lPKGInR0VUIC8gSFRUUC8xLjFcclxuXHJcbicpCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisKKyAgICAgICAgaGFuZGxlci5zZW5kX3Jlc3BvbnNlX29ubHkoNDE4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDApCisgICAgICAgIGhhbmRsZXIuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDEpCisKKyAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nX29mX3NlbmRfaGVhZGVyKHNlbGYpOgorCisgICAgICAgIGlucHV0ID0gQnl0ZXNJTyhiJ0dFVCAvIEhUVFAvMS4xXHJcblxyXG4nKQorICAgICAgICBvdXRwdXQgPSBBdWRpdGFibGVCeXRlc0lPKCkKKyAgICAgICAgaGFuZGxlciA9IFNvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcigpCisgICAgICAgIGhhbmRsZXIucmZpbGUgPSBpbnB1dAorICAgICAgICBoYW5kbGVyLndmaWxlID0gb3V0cHV0CisgICAgICAgIGhhbmRsZXIucmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworCisgICAgICAgIGhhbmRsZXIuc2VuZF9oZWFkZXIoJ0ZvbycsICdmb28nKQorICAgICAgICBoYW5kbGVyLnNlbmRfaGVhZGVyKCdiYXInLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQubnVtV3JpdGVzLCAwKQorICAgICAgICBoYW5kbGVyLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuZ2V0RGF0YSgpLCBiJ0ZvbzogZm9vXHJcbmJhcjogYmFyXHJcblxyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDEpCiAKICAgICBkZWYgdGVzdF9oZWFkZXJfdW5idWZmZXJlZF93aGVuX2NvbnRpbnVlKHNlbGYpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggNWM5OWE1OC4uNTEyYmJhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtMTEsOSArMTEsOSBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBjYWxlbmRhcgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVhcF90aHJlYWRzLCB2ZXJib3NlLCB0cmFuc2llbnRfaW50ZXJuZXQsIHJ1bl93aXRoX3R6Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVhcF90aHJlYWRzLCB2ZXJib3NlLCB0cmFuc2llbnRfaW50ZXJuZXQsIHJ1bl93aXRoX3R6LCBydW5fd2l0aF9sb2NhbGUKIGltcG9ydCB1bml0dGVzdAotCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUsIHRpbWVkZWx0YQogdHJ5OgogICAgIGltcG9ydCBzc2wKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQzLDE0ICs0MywzMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlKAogICAgICAgICAgICAgYicyNSAoSU5URVJOQUxEQVRFICIwMi1BcHItMjAwMCAwMzozMDowMCArMDAwMCIpJykpCiAKLSAgICBkZWYgdGVzdF90aGF0X1RpbWUySW50ZXJuYWxkYXRlX3JldHVybnNfYV9yZXN1bHQoc2VsZik6Ci0gICAgICAgICMgV2UgY2FuIGNoZWNrIG9ubHkgdGhhdCBpdCBzdWNjZXNzZnVsbHkgcHJvZHVjZXMgYSByZXN1bHQsCi0gICAgICAgICMgbm90IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcmVzdWx0IGl0c2VsZiwgc2luY2UgdGhlIHJlc3VsdAotICAgICAgICAjIGRlcGVuZHMgb24gdGhlIHRpbWV6b25lIHRoZSBtYWNoaW5lIGlzIGluLgotICAgICAgICB0aW1ldmFsdWVzID0gWzIwMDAwMDAwMDAsIDIwMDAwMDAwMDAuMCwgdGltZS5sb2NhbHRpbWUoMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgICAgICAgJyIxOC1NYXktMjAzMyAwNTozMzoyMCArMDIwMCInXQogCi0gICAgICAgIGZvciB0IGluIHRpbWV2YWx1ZXM6CisKKyAgICBkZWYgdGltZXZhbHVlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFsyMDAwMDAwMDAwLCAyMDAwMDAwMDAwLjAsIHRpbWUubG9jYWx0aW1lKDIwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIC0xKSwKKyAgICAgICAgICAgICAgICAoMjAzMywgNSwgMTgsIDUsIDMzLCAyMCwgLTEsIC0xLCAxKSwKKyAgICAgICAgICAgICAgICBkYXRldGltZS5mcm9tdGltZXN0YW1wKDIwMDAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZSh0aW1lZGVsdGEoMCwgMio2MCo2MCkpKSwKKyAgICAgICAgICAgICAgICAnIjE4LU1heS0yMDMzIDA1OjMzOjIwICswMjAwIiddCisKKyAgICBAcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnZGVfREUnLCAnZnJfRlInKQorICAgIEBydW5fd2l0aF90eignU1RELTFEU1QnKQorICAgIGRlZiB0ZXN0X1RpbWUySW50ZXJuYWxkYXRlKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9ICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJworCisgICAgICAgIGZvciB0IGluIHNlbGYudGltZXZhbHVlcygpOgorICAgICAgICAgICAgaW50ZXJuYWwgPSBpbWFwbGliLlRpbWUySW50ZXJuYWxkYXRlKHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludGVybmFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3RoYXRfVGltZTJJbnRlcm5hbGRhdGVfcmV0dXJuc19hX3Jlc3VsdChzZWxmKToKKyAgICAgICAgIyBXaXRob3V0IHR6c2V0LCB3ZSBjYW4gY2hlY2sgb25seSB0aGF0IGl0IHN1Y2Nlc3NmdWxseQorICAgICAgICAjIHByb2R1Y2VzIGEgcmVzdWx0LCBub3QgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSByZXN1bHQgaXRzZWxmLAorICAgICAgICAjIHNpbmNlIHRoZSByZXN1bHQgZGVwZW5kcyBvbiB0aGUgdGltZXpvbmUgdGhlIG1hY2hpbmUgaXMgaW4uCisgICAgICAgIGZvciB0IGluIHNlbGYudGltZXZhbHVlcygpOgogICAgICAgICAgICAgaW1hcGxpYi5UaW1lMkludGVybmFsZGF0ZSh0KQogCiAKQEAgLTI2NSwxMSArMjgxLDU4IEBACiAgICAgcG9ydCA9IDk5MwogICAgIGltYXBfY2xhc3MgPSBJTUFQNF9TU0wKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgY3JlYXRlX3NzbF9jb250ZXh0KHNlbGYpOgorICAgICAgICBzc2xfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHNzbF9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgcmV0dXJuIHNzbF9jb250ZXh0CisKKyAgICBkZWYgY2hlY2tfbG9naW5jYXBhKHNlbGYsIHNlcnZlcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBjYXAgaW4gc2VydmVyLmNhcGFiaWxpdGllczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FwLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdMT0dJTkRJU0FCTEVEJywgc2VydmVyLmNhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0FVVEg9UExBSU4nLCBzZXJ2ZXIuY2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcnMgPSBzZXJ2ZXIubG9naW4oc2VsZi51c2VybmFtZSwgc2VsZi5wYXNzd29yZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnNbMF0sICdPSycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZXJ2ZXIubG9nb3V0KCkKKwogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYShzZWxmKToKLSAgICAgICAgZm9yIGNhcCBpbiBzZWxmLnNlcnZlci5jYXBhYmlsaXRpZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FwLCBzdHIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0xPR0lORElTQUJMRUQnLCBzZWxmLnNlcnZlci5jYXBhYmlsaXRpZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0FVVEg9UExBSU4nLCBzZWxmLnNlcnZlci5jYXBhYmlsaXRpZXMpCisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQorICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKKworICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9jZXJ0ZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKKworICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9nb3V0KHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCkKKyAgICAgICAgICAgIHJzID0gX3NlcnZlci5sb2dvdXQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyc1swXSwgJ0JZRScpCisKKyAgICBkZWYgdGVzdF9zc2xfY29udGV4dF9jZXJ0ZmlsZV9leGNsdXNpdmUoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisKKyAgICBkZWYgdGVzdF9zc2xfY29udGV4dF9rZXlmaWxlX2V4Y2x1c2l2ZShzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKaW5kZXggNTUxYWQxYi4uNjVjOWYyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKQEAgLTEsMTEgKzEsMTIgQEAKIGltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogCiBjbGFzcyBMb2NrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01OCw2ICs1OSwxMCBAQAogICAgICAgICAgICAgd2l0aCBpbXAuZmluZF9tb2R1bGUoJ21vZHVsZV8nICsgbW9kLCBzZWxmLnRlc3RfcGF0aClbMF0gYXMgZmQ6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmZC5lbmNvZGluZywgZW5jb2RpbmcpCiAKKyAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSgnYmFkc3ludGF4X3BlcDMxMjAnLCBwYXRoKQorCiAgICAgZGVmIHRlc3RfaXNzdWUxMjY3KHNlbGYpOgogICAgICAgICBmb3IgbW9kLCBlbmNvZGluZywgXyBpbiBzZWxmLnRlc3Rfc3RyaW5nczoKICAgICAgICAgICAgIGZwLCBmaWxlbmFtZSwgaW5mbyAgPSBpbXAuZmluZF9tb2R1bGUoJ21vZHVsZV8nICsgbW9kLApAQCAtMTUwLDE4ICsxNTUsMjQgQEAKICAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9tb2R1bGUodGVtcF9tb2RfbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGluZm8pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuYSwgMSkKIAotICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfc291cmNlKHRlbXBfbW9kX25hbWUsIHRlbXBfbW9kX25hbWUgKyAnLnB5JykKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfc291cmNlKHRlbXBfbW9kX25hbWUsIHRlbXBfbW9kX25hbWUgKyAnLnB5JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLmEsIDEpCiAKLSAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX2NvbXBpbGVkKAotICAgICAgICAgICAgICAgIHRlbXBfbW9kX25hbWUsIGltcC5jYWNoZV9mcm9tX3NvdXJjZSh0ZW1wX21vZF9uYW1lICsgJy5weScpKQorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9jb21waWxlZCgKKyAgICAgICAgICAgICAgICAgICAgdGVtcF9tb2RfbmFtZSwgaW1wLmNhY2hlX2Zyb21fc291cmNlKHRlbXBfbW9kX25hbWUgKyAnLnB5JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5hLCAxKQogCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModGVzdF9wYWNrYWdlX25hbWUpOgogICAgICAgICAgICAgICAgIG9zLm1rZGlyKHRlc3RfcGFja2FnZV9uYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGluaXRfZmlsZV9uYW1lLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSgnYiA9IDJcbicpCi0gICAgICAgICAgICBwYWNrYWdlID0gaW1wLmxvYWRfcGFja2FnZSh0ZXN0X3BhY2thZ2VfbmFtZSwgdGVzdF9wYWNrYWdlX25hbWUpCisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgICAgIHBhY2thZ2UgPSBpbXAubG9hZF9wYWNrYWdlKHRlc3RfcGFja2FnZV9uYW1lLCB0ZXN0X3BhY2thZ2VfbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2FnZS5iLCAyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCkBAIC0xNzUsNiArMTg2LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAuZmluZF9tb2R1bGUsICJiYWRzeW50YXhfcGVwMzEyMCIsIFtwYXRoXSkKIAorICAgIGRlZiB0ZXN0X2xvYWRfZnJvbV9zb3VyY2Uoc2VsZik6CisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGltcCBtb2R1bGUgY2FuIGNvcnJlY3RseSBsb2FkIGFuZCBmaW5kIC5weSBmaWxlcworICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBzdXBwb3J0LkNsZWFuSW1wb3J0CisgICAgICAgICMgaGVyZSwgYnV0IHRoYXQgYnJlYWtzIGJlY2F1c2UgdGhlIG9zIG1vZHVsZSByZWdpc3RlcnMgc29tZQorICAgICAgICAjIGhhbmRsZXJzIGluIGNvcHlfcmVnIG9uIGltcG9ydC4gU2luY2UgQ2xlYW5JbXBvcnQgZG9lc24ndAorICAgICAgICAjIHJldmVydCB0aGF0IHJlZ2lzdHJhdGlvbiwgdGhlIG1vZHVsZSBpcyBsZWZ0IGluIGEgYnJva2VuCisgICAgICAgICMgc3RhdGUgYWZ0ZXIgcmV2ZXJzaW9uLiBSZWluaXRpYWxpc2luZyB0aGUgbW9kdWxlIGNvbnRlbnRzCisgICAgICAgICMgYW5kIGp1c3QgcmV2ZXJ0aW5nIG9zLmVudmlyb24gdG8gaXRzIHByZXZpb3VzIHN0YXRlIGlzIGFuIE9LCisgICAgICAgICMgd29ya2Fyb3VuZAorICAgICAgICBvcmlnX3BhdGggPSBvcy5wYXRoCisgICAgICAgIG9yaWdfZ2V0ZW52ID0gb3MuZ2V0ZW52CisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCk6CisgICAgICAgICAgICB4ID0gaW1wLmZpbmRfbW9kdWxlKCJvcyIpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoeFswXS5jbG9zZSkKKyAgICAgICAgICAgIG5ld19vcyA9IGltcC5sb2FkX21vZHVsZSgib3MiLCAqeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MsIG5ld19vcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19wYXRoLCBuZXdfb3MucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19nZXRlbnYsIG5ld19vcy5nZXRlbnYpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9pc3N1ZTE1ODI4X2xvYWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNTgyOCBwaWNrZWQgdXAgdGhhdCB0aGUgYWRhcHRlciBiZXR3ZWVuIHRoZSBvbGQgaW1wIEFQSQorICAgICAgICAjIGFuZCBpbXBvcnRsaWIgY291bGRuJ3QgaGFuZGxlIEMgZXh0ZW5zaW9ucworICAgICAgICBleGFtcGxlID0gIl9oZWFwcSIKKyAgICAgICAgeCA9IGltcC5maW5kX21vZHVsZShleGFtcGxlKQorICAgICAgICBmaWxlXyA9IHhbMF0KKyAgICAgICAgaWYgZmlsZV8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoZmlsZV8uY2xvc2UpCisgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZShleGFtcGxlLCAqeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sIGV4YW1wbGUpCisKKyAgICBkZWYgdGVzdF9sb2FkX2R5bmFtaWNfSW1wb3J0RXJyb3JfcGF0aChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTU1OTU0OSBhZGRlZCBgbmFtZWAgYW5kIGBwYXRoYCBhdHRyaWJ1dGVzIHRvIEltcG9ydEVycm9yCisgICAgICAgICMgaW4gb3JkZXIgdG8gcHJvdmlkZSBiZXR0ZXIgZGV0YWlsLiBJc3N1ZSAjMTA4NTQgaW1wbGVtZW50ZWQgdGhvc2UKKyAgICAgICAgIyBhdHRyaWJ1dGVzIG9uIGltcG9ydCBmYWlsdXJlcyBvZiBleHRlbnNpb25zIG9uIFdpbmRvd3MuCisgICAgICAgIHBhdGggPSAnYm9ndXMgZmlsZSBwYXRoJworICAgICAgICBuYW1lID0gJ2V4dGVuc2lvbicKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhuYW1lLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIGVyci5leGNlcHRpb24ucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBlcnIuZXhjZXB0aW9uLm5hbWUpCisKIAogY2xhc3MgUmVsb2FkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yMDksNzIgKzI2Miw4MyBAQAogCiAgICAgdGFnID0gaW1wLmdldF90YWcoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBub3QgYmUgTm9uZScpCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwogICAgICAgICAjIGRlZmluZWQgLnB5YyBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6L3F1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9fX3B5Y2FjaGVfXy9xdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fY2FjaGVfdGFnKHNlbGYpOgorICAgICAgICAjIE5vbiBjYWNoZSB0YWcgbWVhbnMgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnLCBOb25lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCd3aGF0ZXZlci5weScpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9ub19kb3Qoc2VsZik6CisgICAgICAgICMgRGlyZWN0b3J5IHdpdGggYSBkb3QsIGZpbGVuYW1lIHdpdGhvdXQgZG90LgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ2ZpbGUnKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV7fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6ZWQoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwogICAgICAgICAjIGRlZmluZWQgLnB5byBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6L3F1eC5weScsIEZhbHNlKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovX19weWNhY2hlX18vcXV4Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpLCBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9jd2Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKCdmb28ucHknLCBUcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zZXAuam9pbigoJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpKSkKKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX292ZXJyaWRlKHNlbGYpOgogICAgICAgICAjIFdoZW4gZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIGl0IGNhbiBiZSBhbnkgdHJ1ZS1pc2ggb3IgZmFsc2UtaXNoCiAgICAgICAgICMgdmFsdWUuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIFtdKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXoue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBbMTddKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXoue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2Jhei5weScpCisgICAgICAgIHBhcnRpYWxfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhei57fS5weScuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgW10pLCBwYXJ0aWFsX2V4cGVjdCArICdvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgWzE3XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9leHBlY3QgKyAnYycpCiAgICAgICAgICMgSG93ZXZlciBpZiB0aGUgYm9vbC1pc2huZXNzIGNhbid0IGJlIGRldGVybWluZWQsIHRoZSBleGNlcHRpb24KICAgICAgICAgIyBwcm9wYWdhdGVzLgogICAgICAgICBjbGFzcyBCZWFyaXNoOgogICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBSdW50aW1lRXJyb3IsCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UsICcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5hbHRzZXAgaXMgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCi0gICAgZGVmIHRlc3RfYWx0c2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgotICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhelxccXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLQotICAgIEB1bml0dGVzdC5za2lwSWYob3MuYWx0c2VwIGlzIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQotICAgIGRlZiB0ZXN0X2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgotICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgYWx0c2VwIGlzIHJpZ2h0IG9mIHNlcC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhci9iYXpcXHF1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJ1xcZm9vXFxiYXIvYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLQotICAgIEB1bml0dGVzdC5za2lwSWYob3MuYWx0c2VwIGlzIE5vbmUsCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc2VwID09ICdcXCcgYW5kIG9zLmFsdHNlcCA9PSAnLycsCiAgICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQogICAgIGRlZiB0ZXN0X3NlcF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKICAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIHNlcCBpcyByaWdodCBvZiBhbHRzZXAuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXovX19weWNhY2hlX18vcXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKICAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZShzZWxmKToKICAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIFBFUCAzMTQ3IGRlZmluZWQgLnB5YyBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8KICAgICAgICAgIyBpdHMgc291cmNlLiAgVGhpcyB0ZXN0cyB0aGUgZ29vZCBwYXRoLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZSgKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovX19weWNhY2hlX18vcXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvYmF6L3F1eC5weScpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fY2FjaGVfdGFnKHNlbGYpOgorICAgICAgICAjIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignYmxhaCcsICdfX3B5Y2FjaGVfXycsICd3aGF0ZXZlci5weWMnKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICBpbXAuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAogICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX2JhZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlIHBhdGggdG8gYSBweWMgZmlsZSBpcyBub3QgaW4gUEVQIDMxNDcgZm9ybWF0LCBhIFZhbHVlRXJyb3IKQEAgLTMwNSw2ICszNjksMTIgQEAKICAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfX19maWxlX18oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJwZXAzMTQ3IG1vZHVsZSBhbHJlYWR5IGV4aXN0czogJXIiICUgKG0sKSkKICAgICAgICAgIyBUZXN0IHRoYXQgYSBwYWNrYWdlJ3MgX19maWxlX18gcG9pbnRzIHRvIHRoZSByaWdodCBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCkBAIC0zMTQsMTQgKzM4NCwxNiBAQAogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSgncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weSBmaWxlLgotICAgICAgICB3aXRoIG9wZW4oJ3BlcDMxNDcvX19pbml0X18ucHknLCAndycpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKCdwZXAzMTQ3L19faW5pdF9fLnB5JykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgZXhwZWN0ZWRfX19maWxlX18gPSBvcy5zZXAuam9pbigoJy4nLCAncGVwMzE0NycsICdfX2luaXRfXy5weScpKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywgZXhwZWN0ZWRfX19maWxlX18sIChtLl9fZmlsZV9fLCBtLl9fcGF0aF9fLCBzeXMucGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpKQogICAgICAgICAjIEVuc3VyZSB3ZSBsb2FkIHRoZSBweWMgZmlsZS4KLSAgICAgICAgc3VwcG9ydC5mb3JnZXQoJ3BlcDMxNDcnKQorICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpKQorICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywgZXhwZWN0ZWRfX19maWxlX18sIChtLl9fZmlsZV9fLCBtLl9fcGF0aF9fLCBzeXMucGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpKQogCiAKIGNsYXNzIE51bGxJbXBvcnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKaW5kZXggYjEwZjM1MC4uYjBlNWE5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKQEAgLTEsNyArMSw4IEBACisjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbXAKLWZyb20gaW1wb3J0bGliLnRlc3QuaW1wb3J0XyBpbXBvcnQgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzCi1mcm9tIGltcG9ydGxpYi50ZXN0LmltcG9ydF8gaW1wb3J0IHV0aWwgYXMgaW1wb3J0bGliX3V0aWwKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYi5pbXBvcnRfIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl91dGlsCiBpbXBvcnQgbWFyc2hhbAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KQEAgLTEyLDM5ICsxMyw1MCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCBlcnJubworaW1wb3J0IHNodXRpbAoraW1wb3J0IGNvbnRleHRsaWIKIAoraW1wb3J0IHRlc3Quc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKICAgICBFbnZpcm9ubWVudFZhckd1YXJkLCBURVNURk4sIGNoZWNrX3dhcm5pbmdzLCBmb3JnZXQsIGlzX2p5dGhvbiwKICAgICBtYWtlX2xlZ2FjeV9weWMsIHJtdHJlZSwgcnVuX3VuaXR0ZXN0LCBzd2FwX2F0dHIsIHN3YXBfaXRlbSwgdGVtcF91bWFzaywKLSAgICB1bmxpbmssIHVubG9hZCkKKyAgICB1bmxpbmssIHVubG9hZCwgY3JlYXRlX2VtcHR5X2ZpbGUsIGNweXRob25fb25seSkKIGZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKLWRlZiBfZmlsZXMobmFtZSk6Ci0gICAgcmV0dXJuIChuYW1lICsgb3MuZXh0c2VwICsgInB5IiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHljIiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHlvIiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHl3IiwKLSAgICAgICAgICAgIG5hbWUgKyAiJHB5LmNsYXNzIikKLQotZGVmIGNobW9kX2ZpbGVzKG5hbWUpOgotICAgIGZvciBmIGluIF9maWxlcyhuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MuY2htb2QoZiwgMG82MDApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQogZGVmIHJlbW92ZV9maWxlcyhuYW1lKToKLSAgICBmb3IgZiBpbiBfZmlsZXMobmFtZSk6CisgICAgZm9yIGYgaW4gKG5hbWUgKyAiLnB5IiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHljIiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHlvIiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHl3IiwKKyAgICAgICAgICAgICAgbmFtZSArICIkcHkuY2xhc3MiKToKICAgICAgICAgdW5saW5rKGYpCiAgICAgcm10cmVlKCdfX3B5Y2FjaGVfXycpCiAKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBfcmVhZHlfdG9faW1wb3J0KG5hbWU9Tm9uZSwgc291cmNlPSIiKToKKyAgICAjIHNldHMgdXAgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZCByZW1vdmVzIGl0CisgICAgIyBjcmVhdGVzIHRoZSBtb2R1bGUgZmlsZQorICAgICMgdGVtcG9yYXJpbHkgY2xlYXJzIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcyAoaWYgYW55KQorICAgIG5hbWUgPSBuYW1lIG9yICJzcGFtIgorICAgIHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRlbXBkaXI6CisgICAgICAgIHBhdGggPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHRlbXBkaXIsIG5hbWUsIHNvdXJjZSkKKyAgICAgICAgb2xkX21vZHVsZSA9IHN5cy5tb2R1bGVzLnBvcChuYW1lLCBOb25lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdGVtcGRpcikKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIHBhdGgKKyAgICAgICAgICAgIHN5cy5wYXRoLnJlbW92ZSh0ZW1wZGlyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgb2xkX21vZHVsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9sZF9tb2R1bGUKKworCiBjbGFzcyBJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHJlbW92ZV9maWxlcyhURVNURk4pCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCkBAIC04Miw2ICs5NCw3IEBACiAKICAgICAgICAgICAgIGlmIFRFU1RGTiBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oVEVTVEZOKQpAQCAtMTA3LDkwICsxMjAsNiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQotICAgIGRlZiB0ZXN0X2V4ZWN1dGVfYml0X25vdF9jb3BpZWQoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgNjA3MDogdW5kZXIgcG9zaXggLnB5YyBmaWxlcyBnb3QgdGhlaXIgZXhlY3V0ZSBiaXQgc2V0IGlmCi0gICAgICAgICMgdGhlIC5weSBmaWxlIGhhZCB0aGUgZXhlY3V0ZSBiaXQgc2V0LCBidXQgdGhleSBhcmVuJ3QgZXhlY3V0YWJsZS4KLSAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKToKLSAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm5hbWUgPSBURVNURk4gKyBvcy5leHRzZXAgKyAicHkiCi0gICAgICAgICAgICAgICAgb3BlbihmbmFtZSwgJ3cnKS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgb3MuY2htb2QoZm5hbWUsIChzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVJPVEggfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lYVVNSIHwgc3RhdC5TX0lYR1JQIHwgc3RhdC5TX0lYT1RIKSkKLSAgICAgICAgICAgICAgICBmbiA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmbmFtZSkKLSAgICAgICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZuKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCi0gICAgICAgICAgICAgICAgcyA9IG9zLnN0YXQoZm4pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUocy5zdF9tb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JUk9USCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKLSAgICAgICAgICAgICAgICB1bmxvYWQoVEVTVEZOKQotCi0gICAgZGVmIHRlc3RfcmV3cml0ZV9weWNfd2l0aF9yZWFkX29ubHlfc291cmNlKHNlbGYpOgotICAgICAgICAjIElzc3VlIDYwNzQ6IGEgbG9uZyB0aW1lIGFnbyBvbiBwb3NpeCwgYW5kIG1vcmUgcmVjZW50bHkgb24gV2luZG93cywKLSAgICAgICAgIyBhIHJlYWQgb25seSBzb3VyY2UgZmlsZSByZXN1bHRlZCBpbiBhIHJlYWQgb25seSBweWMgZmlsZSwgd2hpY2gKLSAgICAgICAgIyBsZWQgdG8gcHJvYmxlbXMgd2l0aCB1cGRhdGluZyBpdCBsYXRlcgotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQotICAgICAgICBmbmFtZSA9IFRFU1RGTiArIG9zLmV4dHNlcCArICJweSIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBXcml0ZSBhIFB5dGhvbiBmaWxlLCBtYWtlIGl0IHJlYWQtb25seSBhbmQgaW1wb3J0IGl0Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCJ4ID0gJ29yaWdpbmFsJ1xuIikKLSAgICAgICAgICAgICMgVHdlYWsgdGhlIG10aW1lIG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHB5YyBnZXRzIHVwZGF0ZWQgbGF0ZXIKLSAgICAgICAgICAgIHMgPSBvcy5zdGF0KGZuYW1lKQotICAgICAgICAgICAgb3MudXRpbWUoZm5hbWUsIChzLnN0X2F0aW1lLCBzLnN0X210aW1lLTEwMDAwMDAwMCkpCi0gICAgICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG80MDApCi0gICAgICAgICAgICBtMSA9IF9faW1wb3J0X18oVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS54LCAnb3JpZ2luYWwnKQotICAgICAgICAgICAgIyBDaGFuZ2UgdGhlIGZpbGUgYW5kIHRoZW4gcmVpbXBvcnQgaXQKLSAgICAgICAgICAgIG9zLmNobW9kKGZuYW1lLCAwbzYwMCkKLSAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAncmV3cml0dGVuJ1xuIikKLSAgICAgICAgICAgIHVubG9hZChURVNURk4pCi0gICAgICAgICAgICBtMiA9IF9faW1wb3J0X18oVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi54LCAncmV3cml0dGVuJykKLSAgICAgICAgICAgICMgTm93IGRlbGV0ZSB0aGUgc291cmNlIGZpbGUgYW5kIGNoZWNrIHRoZSBweWMgd2FzIHJld3JpdHRlbgotICAgICAgICAgICAgdW5saW5rKGZuYW1lKQotICAgICAgICAgICAgdW5sb2FkKFRFU1RGTikKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBieXRlY29kZV9uYW1lID0gZm5hbWUgKyAiYyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnl0ZWNvZGVfbmFtZSA9IGZuYW1lICsgIm8iCi0gICAgICAgICAgICBvcy5yZW5hbWUoaW1wLmNhY2hlX2Zyb21fc291cmNlKGZuYW1lKSwgYnl0ZWNvZGVfbmFtZSkKLSAgICAgICAgICAgIG0zID0gX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zLngsICdyZXdyaXR0ZW4nKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2htb2RfZmlsZXMoVEVTVEZOKQotICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKLSAgICAgICAgICAgIHVubG9hZChURVNURk4pCi0gICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLQotICAgIGRlZiB0ZXN0X2ltcF9tb2R1bGUoc2VsZik6Ci0gICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGltcCBtb2R1bGUgY2FuIGNvcnJlY3RseSBsb2FkIGFuZCBmaW5kIC5weSBmaWxlcwotICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBzdXBwb3J0LkNsZWFuSW1wb3J0Ci0gICAgICAgICMgaGVyZSwgYnV0IHRoYXQgYnJlYWtzIGJlY2F1c2UgdGhlIG9zIG1vZHVsZSByZWdpc3RlcnMgc29tZQotICAgICAgICAjIGhhbmRsZXJzIGluIGNvcHlfcmVnIG9uIGltcG9ydC4gU2luY2UgQ2xlYW5JbXBvcnQgZG9lc24ndAotICAgICAgICAjIHJldmVydCB0aGF0IHJlZ2lzdHJhdGlvbiwgdGhlIG1vZHVsZSBpcyBsZWZ0IGluIGEgYnJva2VuCi0gICAgICAgICMgc3RhdGUgYWZ0ZXIgcmV2ZXJzaW9uLiBSZWluaXRpYWxpc2luZyB0aGUgbW9kdWxlIGNvbnRlbnRzCi0gICAgICAgICMgYW5kIGp1c3QgcmV2ZXJ0aW5nIG9zLmVudmlyb24gdG8gaXRzIHByZXZpb3VzIHN0YXRlIGlzIGFuIE9LCi0gICAgICAgICMgd29ya2Fyb3VuZAotICAgICAgICBvcmlnX3BhdGggPSBvcy5wYXRoCi0gICAgICAgIG9yaWdfZ2V0ZW52ID0gb3MuZ2V0ZW52Ci0gICAgICAgIHdpdGggRW52aXJvbm1lbnRWYXJHdWFyZCgpOgotICAgICAgICAgICAgeCA9IGltcC5maW5kX21vZHVsZSgib3MiKQotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHhbMF0uY2xvc2UpCi0gICAgICAgICAgICBuZXdfb3MgPSBpbXAubG9hZF9tb2R1bGUoIm9zIiwgKngpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLCBuZXdfb3MpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfcGF0aCwgbmV3X29zLnBhdGgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfZ2V0ZW52LCBuZXdfb3MuZ2V0ZW52KQotCiAgICAgZGVmIHRlc3RfYnVnNzczMihzZWxmKToKICAgICAgICAgc291cmNlID0gVEVTVEZOICsgJy5weScKICAgICAgICAgb3MubWtkaXIoc291cmNlKQpAQCAtMjIwLDYgKzE0OSw3IEBACiAKICAgICAgICAgIyBOZWVkIHRvIGJlIGFibGUgdG8gbG9hZCBmcm9tIGN1cnJlbnQgZGlyLgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKGZpbGVuYW1lKQpAQCAtMjM5LDYgKzE2OSw3IEBACiAgICAgICAgICMgTmV3IGluIDIuNCwgd2Ugc2hvdWxkbid0IGJlIGFibGUgdG8gaW1wb3J0IHRoYXQgbm8gbWF0dGVyIGhvdyBvZnRlbgogICAgICAgICAjIHdlIHRyeS4KICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgaWYgVEVTVEZOIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgdHJ5OgpAQCAtMzEyLDYgKzI0Myw3IEBACiAgICAgICAgICAgICBvcy5yZW1vdmUoc291cmNlKQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG1vZC5fX2ZpbGVfXykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXh0LCAoJy5weWMnLCAnLnB5bycpKQpAQCAtMzMyLDEyICsyNjQsNiBAQAogICAgICAgICBpbXBvcnQgdGVzdC5zdXBwb3J0IGFzIHkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB0ZXN0LnN1cHBvcnQsIHkuX19uYW1lX18pCiAKLSAgICBkZWYgdGVzdF9pbXBvcnRfaW5pdGxlc3NfZGlyZWN0b3J5X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCcnLCBJbXBvcnRXYXJuaW5nKSk6Ci0gICAgICAgICAgICAjIEp1c3QgYSByYW5kb20gbm9uLXBhY2thZ2UgZGlyZWN0b3J5IHdlIGFsd2F5cyBleHBlY3QgdG8gYmUKLSAgICAgICAgICAgICMgc29tZXdoZXJlIGluIHN5cy5wYXRoLi4uCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgX19pbXBvcnRfXywgInNpdGUtcGFja2FnZXMiKQotCiAgICAgZGVmIHRlc3RfaW1wb3J0X2J5X2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKFRFU1RGTikKICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKQEAgLTM0Nyw4ICsyNzMsNiBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgncGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHt9Jy5mb3JtYXQoZW5jb2RpbmcpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjOgogICAgICAgICAgICAgX19pbXBvcnRfXyhwYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJbXBvcnQgYnkgZmlsZW5hbWUgaXMgbm90IHN1cHBvcnRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfaW5fZGVsX2RvZXNfbm90X2NyYXNoKHNlbGYpOgogICAgICAgICAjIElzc3VlIDQyMzYKQEAgLTM4NSw2ICszMDksOTggQEAKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKIAorICAgIGRlZiB0ZXN0X2JvZ3VzX2Zyb21saXN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfX2ltcG9ydF9fKCdodHRwJywgZnJvbWxpc3Q9WydibGFoJ10pCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZnJvbWxpc3QgbXVzdCBhbGxvdyBib2d1cyBuYW1lcyIpCisKKworY2xhc3MgRmlsZVBlcm1pc3Npb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0ZXN0cyBmb3IgZmlsZSBtb2RlIG9uIGNhY2hlZCAucHljLy5weW8gZmlsZXMKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCisgICAgZGVmIHRlc3RfY3JlYXRpb25fbW9kZShzZWxmKToKKyAgICAgICAgbWFzayA9IDBvMDIyCisgICAgICAgIHdpdGggdGVtcF91bWFzayhtYXNrKSwgX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgdW1hc2sgaXMgcmVzcGVjdGVkLCBhbmQgdGhlIGV4ZWN1dGFibGUgYml0cworICAgICAgICAjIGFyZW4ndCBzZXQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9jdCgwbzY2NiAmIH5tYXNrKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCisgICAgZGVmIHRlc3RfY2FjaGVkX21vZGVfaXNzdWVfMjA1MShzZWxmKToKKyAgICAgICAgIyBwZXJtaXNzaW9ucyBvZiAucHljIHNob3VsZCBtYXRjaCB0aG9zZSBvZiAucHksIHJlZ2FyZGxlc3Mgb2YgbWFzaworICAgICAgICBtb2RlID0gMG82MDAKKyAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKSwgX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCBtb2RlKQorICAgICAgICAgICAgX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNhY2hlZF9wYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIl9faW1wb3J0X18gZGlkIG5vdCByZXN1bHQgaW4gY3JlYXRpb24gb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIGEgLnB5YyBvciAucHlvIGZpbGUiKQorICAgICAgICAgICAgc3RhdF9pbmZvID0gb3Muc3RhdChjYWNoZWRfcGF0aCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChzdGF0LlNfSU1PREUoc3RhdF9pbmZvLnN0X21vZGUpKSwgb2N0KG1vZGUpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKKyAgICBkZWYgdGVzdF9jYWNoZWRfcmVhZG9ubHkoc2VsZik6CisgICAgICAgIG1vZGUgPSAwbzQwMAorICAgICAgICB3aXRoIHRlbXBfdW1hc2soMG8wMjIpLCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgY2FjaGVkX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKKyAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIG1vZGUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQorCisgICAgICAgIGV4cGVjdGVkID0gbW9kZSB8IDBvMjAwICMgQWNjb3VudCBmb3IgZml4IGZvciBpc3N1ZSAjNjA3NAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChzdGF0LlNfSU1PREUoc3RhdF9pbmZvLnN0X21vZGUpKSwgb2N0KGV4cGVjdGVkKSkKKworICAgIGRlZiB0ZXN0X3B5Y19hbHdheXNfd3JpdGFibGUoc2VsZik6CisgICAgICAgICMgSW5pdGlhbGx5IHJlYWQtb25seSAucHljIGZpbGVzIG9uIFdpbmRvd3MgdXNlZCB0byBjYXVzZSBwcm9ibGVtcworICAgICAgICAjIHdpdGggbGF0ZXIgdXBkYXRlcywgc2VlIGlzc3VlICM2MDc0IGZvciBkZXRhaWxzCisgICAgICAgIHdpdGggX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgICMgV3JpdGUgYSBQeXRob24gZmlsZSwgbWFrZSBpdCByZWFkLW9ubHkgYW5kIGltcG9ydCBpdAorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJ4ID0gJ29yaWdpbmFsJ1xuIikKKyAgICAgICAgICAgICMgVHdlYWsgdGhlIG10aW1lIG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHB5YyBnZXRzIHVwZGF0ZWQgbGF0ZXIKKyAgICAgICAgICAgIHMgPSBvcy5zdGF0KHBhdGgpCisgICAgICAgICAgICBvcy51dGltZShwYXRoLCAocy5zdF9hdGltZSwgcy5zdF9tdGltZS0xMDAwMDAwMDApKQorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG80MDApCisgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLngsICdvcmlnaW5hbCcpCisgICAgICAgICAgICAjIENoYW5nZSB0aGUgZmlsZSBhbmQgdGhlbiByZWltcG9ydCBpdAorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG82MDApCisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAncmV3cml0dGVuJ1xuIikKKyAgICAgICAgICAgIHVubG9hZChuYW1lKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgJ3Jld3JpdHRlbicpCisgICAgICAgICAgICAjIE5vdyBkZWxldGUgdGhlIHNvdXJjZSBmaWxlIGFuZCBjaGVjayB0aGUgcHljIHdhcyByZXdyaXR0ZW4KKyAgICAgICAgICAgIHVubGluayhwYXRoKQorICAgICAgICAgICAgdW5sb2FkKG5hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgImMiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgIm8iCisgICAgICAgICAgICBvcy5yZW5hbWUoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpLCBieXRlY29kZV9vbmx5KQorICAgICAgICAgICAgbSA9IF9faW1wb3J0X18obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCAncmV3cml0dGVuJykKKwogCiBjbGFzcyBQeWNSZXdyaXRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUZXN0IHRoYXQgdGhlIGBjb19maWxlbmFtZWAgYXR0cmlidXRlIG9uIGNvZGUgb2JqZWN0cyBhbHdheXMgcG9pbnRzCkBAIC00MTIsNiArNDI4LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYubW9kdWxlX3NvdXJjZSkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHNlbGYuZGlyX25hbWUpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5zeXNfcGF0aApAQCAtNDUxLDYgKzQ2OCw3IEBACiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSwgZGZpbGU9dGFyZ2V0KQogICAgICAgICBvcy5yZW1vdmUoc2VsZi5maWxlX25hbWUpCiAgICAgICAgIHB5Y19maWxlID0gbWFrZV9sZWdhY3lfcHljKHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtb2QgPSBzZWxmLmltcG9ydF9tb2R1bGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5tb2R1bGVfZmlsZW5hbWUsIHB5Y19maWxlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5jb2RlX2ZpbGVuYW1lLCB0YXJnZXQpCkBAIC00NTksNyArNDc3LDcgQEAKICAgICBkZWYgdGVzdF9mb3JlaWduX2NvZGUoc2VsZik6CiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuY29tcGlsZWRfbmFtZSwgInJiIikgYXMgZjoKLSAgICAgICAgICAgIGhlYWRlciA9IGYucmVhZCg4KQorICAgICAgICAgICAgaGVhZGVyID0gZi5yZWFkKDEyKQogICAgICAgICAgICAgY29kZSA9IG1hcnNoYWwubG9hZChmKQogICAgICAgICBjb25zdGFudHMgPSBsaXN0KGNvZGUuY29fY29uc3RzKQogICAgICAgICBmb3JlaWduX2NvZGUgPSB0ZXN0X21haW4uX19jb2RlX18KQEAgLTUwMSw5ICs1MTksMTEgQEAKICAgICAgICAgdW5sb2FkKCJ0ZXN0X3RyYWlsaW5nX3NsYXNoIikKIAogICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzY3Ny4KLSAgICBkZWYgX3Rlc3RfVU5DX3BhdGgoc2VsZik6Ci0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAndGVzdF90cmFpbGluZ19zbGFzaC5weScpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJ0ZXN0ZGF0YSA9ICd0ZXN0X3RyYWlsaW5nX3NsYXNoJyIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzLXNwZWNpZmljJykKKyAgICBkZWYgdGVzdF9VTkNfcGF0aChzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICd0ZXN0X3VuY19wYXRoLnB5JyksICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoInRlc3RkYXRhID0gJ3Rlc3RfdW5jX3BhdGgnIikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgIyBDcmVhdGUgdGhlIFVOQyBwYXRoLCBsaWtlIFxcbXlob3N0XGMkXGZvb1xiYXIuCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5wYXRoKQogICAgICAgICBpbXBvcnQgc29ja2V0CkBAIC01MTgsMTMgKzUzOCwxNSBAQAogICAgICAgICAgICAgICAgICMgU2VlIGlzc3VlICMxNTMzOAogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBhY2Nlc3MgYWRtaW5pc3RyYXRpdmUgc2hhcmUgJXIiICUgKHVuYywpKQogICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKHBhdGgpCi0gICAgICAgIG1vZCA9IF9faW1wb3J0X18oInRlc3RfdHJhaWxpbmdfc2xhc2giKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC50ZXN0ZGF0YSwgJ3Rlc3RfdHJhaWxpbmdfc2xhc2gnKQotICAgICAgICB1bmxvYWQoInRlc3RfdHJhaWxpbmdfc2xhc2giKQotCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIHRlc3RfVU5DX3BhdGggPSBfdGVzdF9VTkNfcGF0aAorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdW5jKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCJ0ZXN0X3VuY19wYXRoIikKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmZhaWwoImNvdWxkIG5vdCBpbXBvcnQgJ3Rlc3RfdW5jX3BhdGgnIGZyb20gJXI6ICVyIgorICAgICAgICAgICAgICAgICAgICAgICUgKHVuYywgZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRlc3RkYXRhLCAndGVzdF91bmNfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uc3RhcnRzd2l0aCh1bmMpLCBtb2QuX19maWxlX18pCisgICAgICAgIHVubG9hZCgidGVzdF91bmNfcGF0aCIpCiAKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01NjUsNyArNTg3LDcgQEAKIAogICAgICAgICAjIENoZWNrIHJlbGF0aXZlIGltcG9ydCBmYWlscyB3aXRoIHBhY2thZ2Ugc2V0IHRvIGEgbm9uLXN0cmluZwogICAgICAgICBucyA9IGRpY3QoX19wYWNrYWdlX189b2JqZWN0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQogCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhvdXRfZnV0dXJlKHNlbGYpOgogICAgICAgICAjIElmIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydCBzeW50YXggaXMgdXNlZCwgdGhlbiBkbyBub3QgdHJ5CkBAIC02MTMsNiArNjM1LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuc291cmNlLCAndycpIGFzIGZwOgogICAgICAgICAgICAgcHJpbnQoJyMgVGhpcyBpcyBhIHRlc3QgZmlsZSB3cml0dGVuIGJ5IHRlc3RfaW1wb3J0LnB5JywgZmlsZT1mcCkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXNzZXJ0IHN5cy5wYXRoWzBdID09IG9zLmN1cmRpciwgJ1VuZXhwZWN0ZWQgc3lzLnBhdGhbMF0nCkBAIC02NjAsNiArNjgzLDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmN1cmRpciwgb3MucGF0aC5yZWxwYXRoKHB5Y19maWxlKSkpCkBAIC02ODAsNiArNzA0LDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBvcy5wYXRoLnJlbHBhdGgocHljX2ZpbGUpKSkKQEAgLTY4OCw2ICs3MTMsOCBAQAogICAgICAgICAjIExpa2UgdGVzdF9fX2NhY2hlZF9fIGJ1dCBmb3IgcGFja2FnZXMuCiAgICAgICAgIGRlZiBjbGVhbnVwKCk6CiAgICAgICAgICAgICBybXRyZWUoJ3BlcDMxNDcnKQorICAgICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQpAQCAtNjk1LDggKzcyMiw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNzEwLDE4ICs3MzYsMjAgQEAKICAgICAgICAgIyBQRVAgMzE0NyBweWMgZmlsZS4KICAgICAgICAgZGVmIGNsZWFudXAoKToKICAgICAgICAgICAgIHJtdHJlZSgncGVwMzE0NycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKKyAgICAgICAgICAgIHVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3LmZvbycpCiAgICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQogICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNzMwLDIyICs3NTgsMjU2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1vZHVsZXNbJ3BlcDMxNDcuZm9vJ10uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBmb29fcHljKSkKIAorICAgIGRlZiB0ZXN0X3JlY29tcHV0ZV9weWNfc2FtZV9zZWNvbmQoc2VsZik6CisgICAgICAgICMgRXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZSBkb2Vzbid0IGNoYW5nZSB0aW1lc3RhbXAsIGEgY2hhbmdlIGluCisgICAgICAgICMgc291cmNlIHNpemUgaXMgZW5vdWdoIHRvIHRyaWdnZXIgcmVjb21wdXRhdGlvbiBvZiB0aGUgcHljIGZpbGUuCisgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQorICAgICAgICB1bmxvYWQoVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5zb3VyY2UsICdhJykgYXMgZnA6CisgICAgICAgICAgICBwcmludCgieCA9IDUiLCBmaWxlPWZwKQorICAgICAgICBtID0gX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCA1KQogCi1jbGFzcyBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cyh0ZXN0X3JlbGF0aXZlX2ltcG9ydHMuUmVsYXRpdmVJbXBvcnRzKToKKworY2xhc3MgVGVzdFN5bWJvbGljYWxseUxpbmtlZFBhY2thZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHBhY2thZ2VfbmFtZSA9ICdzYW1wbGUnCisgICAgdGFnZ2VkID0gcGFja2FnZV9uYW1lICsgJy10YWdnZWQnCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ltcG9ydGxpYl91dGlsX2ZsYWcgPSBpbXBvcnRsaWJfdXRpbC51c2luZ19fX2ltcG9ydF9fCi0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBUcnVlCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi50YWdnZWQpCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi5wYWNrYWdlX25hbWUpCisgICAgICAgIHNlbGYub3JpZ19zeXNfcGF0aCA9IHN5cy5wYXRoWzpdCisKKyAgICAgICAgIyBjcmVhdGUgYSBzYW1wbGUgcGFja2FnZTsgaW1hZ2luZSB5b3UgaGF2ZSBhIHBhY2thZ2Ugd2l0aCBhIHRhZyBhbmQKKyAgICAgICAgIyAgeW91IHdhbnQgdG8gc3ltYm9saWNhbGx5IGxpbmsgaXQgZnJvbSBpdHMgdW50YWdnZWQgbmFtZS4KKyAgICAgICAgb3MubWtkaXIoc2VsZi50YWdnZWQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQucm10cmVlLCBzZWxmLnRhZ2dlZCkKKyAgICAgICAgaW5pdF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGFnZ2VkLCAnX19pbml0X18ucHknKQorICAgICAgICB0ZXN0LnN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoaW5pdF9maWxlKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaW5pdF9maWxlKQorCisgICAgICAgICMgbm93IGNyZWF0ZSBhIHN5bWxpbmsgdG8gdGhlIHRhZ2dlZCBwYWNrYWdlCisgICAgICAgICMgc2FtcGxlIC0+IHNhbXBsZS10YWdnZWQKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnRhZ2dlZCwgc2VsZi5wYWNrYWdlX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5pc2RpcihzZWxmLnBhY2thZ2VfbmFtZSksIFRydWUpCisKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfbmFtZSwgJ19faW5pdF9fLnB5JykpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBzZWxmLl9pbXBvcnRsaWJfdXRpbF9mbGFnCisgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5vcmlnX3N5c19wYXRoCisKKyAgICAjIHJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWU2NzI3CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgIG5vdCBoYXNhdHRyKHN5cywgJ2dldHdpbmRvd3N2ZXJzaW9uJykKKyAgICAgICAgb3Igc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkgPj0gKDYsIDApLAorICAgICAgICAiV2luZG93cyBWaXN0YSBvciBsYXRlciByZXF1aXJlZCIpCisgICAgQHRlc3Quc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfc3ltbGlua2VkX2Rpcl9pbXBvcnRhYmxlKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSBzYW1wbGUgY2FuIG9ubHkgYmUgaW1wb3J0ZWQgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgICAgIHN5cy5wYXRoWzpdID0gWycuJ10KKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9uYW1lLCAnX19pbml0X18ucHknKSkKKworICAgICAgICAjIFRyeSB0byBpbXBvcnQgdGhlIHBhY2thZ2UKKyAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoc2VsZi5wYWNrYWdlX25hbWUpCisKKworQGNweXRob25fb25seQorY2xhc3MgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCBpbXBvcnRsaWIgaXMgYm9vdHN0cmFwcGVkLgorCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYihzZWxmKToKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZCkKKworICAgIGRlZiB0ZXN0X2Zyb3plbl9pbXBvcnRsaWJfaXNfYm9vdHN0cmFwKHNlbGYpOgorICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZCwgX2Jvb3RzdHJhcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdpbXBvcnRsaWIuX2Jvb3RzdHJhcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fcGFja2FnZV9fLCAnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZC5fX2ZpbGVfXy5lbmRzd2l0aCgnX2Jvb3RzdHJhcC5weScpLCBtb2QuX19maWxlX18pCisKKyAgICBkZWYgdGVzdF90aGVyZV9jYW5fYmVfb25seV9vbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1Mzg2IHJldmVhbGVkIGEgdHJpY2t5IGxvb3Bob2xlIGluIHRoZSBib290c3RyYXBwaW5nCisgICAgICAgICMgVGhpcyB0ZXN0IGlzIHRlY2huaWNhbGx5IHJlZHVuZGFudCwgc2luY2UgdGhlIGJ1ZyBjYXVzZWQgaW1wb3J0aW5nCisgICAgICAgICMgdGhpcyB0ZXN0IG1vZHVsZSB0byBjcmFzaCBjb21wbGV0ZWx5LCBidXQgaXQgaGVscHMgcHJvdmUgdGhlIHBvaW50CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuRmlsZUZpbmRlciwgbW9kLkZpbGVGaW5kZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW1wLm5ld19tb2R1bGUsIG1vZC5uZXdfbW9kdWxlKQorCisKK2NsYXNzIEltcG9ydFRyYWNlYmFja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVEZOKQorICAgICAgICBzZWxmLm9sZF9wYXRoID0gc3lzLnBhdGhbOl0KKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIFRFU1RGTikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLm9sZF9wYXRoCisgICAgICAgIHJtdHJlZShURVNURk4pCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBtb2QsIGNvbnRlbnRzLCBleHQ9Ii5weSIpOgorICAgICAgICBmbmFtZSA9IG9zLnBhdGguam9pbihURVNURk4sIG1vZCArIGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5sb2FkLCBtb2QpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBmbmFtZQorCisgICAgZGVmIGFzc2VydF90cmFjZWJhY2soc2VsZiwgdGIsIGZpbGVzKToKKyAgICAgICAgZGVkdXBlZF9maWxlcyA9IFtdCisgICAgICAgIHdoaWxlIHRiOgorICAgICAgICAgICAgY29kZSA9IHRiLnRiX2ZyYW1lLmZfY29kZQorICAgICAgICAgICAgZm4gPSBjb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiBub3QgZGVkdXBlZF9maWxlcyBvciBmbiAhPSBkZWR1cGVkX2ZpbGVzWy0xXToKKyAgICAgICAgICAgICAgICBkZWR1cGVkX2ZpbGVzLmFwcGVuZChmbikKKyAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkZWR1cGVkX2ZpbGVzKSwgbGVuKGZpbGVzKSwgZGVkdXBlZF9maWxlcykKKyAgICAgICAgZm9yIGZuLCBwYXQgaW4gemlwKGRlZHVwZWRfZmlsZXMsIGZpbGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0LCBmbikKKworICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X21vZHVsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBhc3NlcnRSYWlzZXMoKSBjbGVhcnMgX190cmFjZWJhY2tfXworICAgICAgICAgICAgaW1wb3J0IG5vbmV4aXN0ZW50X3h5enp5CisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfX10pCisKKyAgICBkZWYgdGVzdF9ub25leGlzdGVudF9tb2R1bGVfbmVzdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbXBvcnQgbm9uZXhpc3RlbnRfeHl6enkiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlX25lc3RlZChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiaW1wb3J0IGJhciIpCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiYmFyIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCAnZm9vLnB5JywgJ2Jhci5weSddKQorCisgICAgIyBBIGZldyBtb3JlIGV4YW1wbGVzIGZyb20gaXNzdWUgIzE1NDI1CisgICAgZGVmIHRlc3Rfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbnZhbGlkIHN5bnRheCBpcyBpbnZhbGlkIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlN5bnRheEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX19dKQorCisgICAgZGVmIF9zZXR1cF9icm9rZW5fcGFja2FnZShzZWxmLCBwYXJlbnQsIGNoaWxkKToKKyAgICAgICAgcGtnX25hbWUgPSAiX3BhcmVudF9mb28iCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxvYWQsIHBrZ19uYW1lKQorICAgICAgICBwa2dfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sIHBrZ19uYW1lKQorICAgICAgICBvcy5ta2Rpcihwa2dfcGF0aCkKKyAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkKKyAgICAgICAgaW5pdF9wYXRoID0gb3MucGF0aC5qb2luKHBrZ19wYXRoLCAnX19pbml0X18ucHknKQorICAgICAgICB3aXRoIG9wZW4oaW5pdF9wYXRoLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHBhcmVudCkKKyAgICAgICAgYmFyX3BhdGggPSBvcy5wYXRoLmpvaW4ocGtnX3BhdGgsICdiYXIucHknKQorICAgICAgICB3aXRoIG9wZW4oYmFyX3BhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY2hpbGQpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBpbml0X3BhdGgsIGJhcl9wYXRoCisKKyAgICBkZWYgdGVzdF9icm9rZW5fc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIiIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX3BhcmVudF9mb28uYmFyCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgYmFyX3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX2Zyb20oc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gX3BhcmVudF9mb28gaW1wb3J0IGJhcgorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkltcG9ydEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sIGJhcl9wYXRoXSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9wYXJlbnQoc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiMS8wIiwgIiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBfcGFyZW50X2Zvby5iYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX3BhcmVudF9mcm9tKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIjEvMCIsICIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIF9wYXJlbnRfZm9vIGltcG9ydCBiYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2ltcG9ydF9idWcoc2VsZik6CisgICAgICAgICMgV2Ugc2ltdWxhdGUgYSBidWcgaW4gaW1wb3J0bGliIGFuZCBjaGVjayB0aGF0IGl0J3Mgbm90IHN0cmlwcGVkCisgICAgICAgICMgYXdheSBmcm9tIHRoZSB0cmFjZWJhY2suCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgIiIpCisgICAgICAgIGltcG9ydGxpYiA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIG9sZF9sb2FkX21vZHVsZSA9IGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKCphcmdzKToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBsb2FkX21vZHVsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sICc8ZnJvemVuIGltcG9ydGxpYicsIF9fZmlsZV9fXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBvbGRfbG9hZF9tb2R1bGUKIAogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgcnVuX3VuaXR0ZXN0KEltcG9ydFRlc3RzLCBQeWNhY2hlVGVzdHMsCisgICAgcnVuX3VuaXR0ZXN0KEltcG9ydFRlc3RzLCBQeWNhY2hlVGVzdHMsIEZpbGVQZXJtaXNzaW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgIFB5Y1Jld3JpdGluZ1Rlc3RzLCBQYXRoc1Rlc3RzLCBSZWxhdGl2ZUltcG9ydFRlc3RzLAogICAgICAgICAgICAgICAgICBPdmVycmlkaW5nSW1wb3J0QnVpbHRpblRlc3RzLAotICAgICAgICAgICAgICAgICBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cykKKyAgICAgICAgICAgICAgICAgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHMsCisgICAgICAgICAgICAgICAgIFRlc3RTeW1ib2xpY2FsbHlMaW5rZWRQYWNrYWdlLAorICAgICAgICAgICAgICAgICBJbXBvcnRUcmFjZWJhY2tUZXN0cykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkKaW5kZXggZWM2NzMwZS4uMmEyMmQxYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD10ZXN0X3BhdGgpOgogICAgICAgICBpZiBwYXRoICE9IHRlc3RfcGF0aDoKLSAgICAgICAgICAgICMgaWYgb3V0IGNsYXNzIGlzIG9uIHN5cy5wYXRoX2hvb2tzLCB3ZSBtdXN0IHJhaXNlCisgICAgICAgICAgICAjIGlmIG91ciBjbGFzcyBpcyBvbiBzeXMucGF0aF9ob29rcywgd2UgbXVzdCByYWlzZQogICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBmb3IgYW55IHBhdGggaXRlbSB0aGF0IHdlIGNhbid0IGhhbmRsZS4KICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKQEAgLTIxNSw3ICsyMTUsNyBAQAogICAgICAgICBzZWxmLmRvVGVzdEltcG9ydHMoaSkKIAogICAgIGRlZiB0ZXN0UGF0aEhvb2soc2VsZik6Ci0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChQYXRoSW1wb3J0ZXIpCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBQYXRoSW1wb3J0ZXIpCiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCh0ZXN0X3BhdGgpCiAgICAgICAgIHNlbGYuZG9UZXN0SW1wb3J0cygpCiAKQEAgLTIyOCw4ICsyMjgsMTAgQEAKICAgICBkZWYgdGVzdEltcFdyYXBwZXIoc2VsZik6CiAgICAgICAgIGkgPSBJbXBXcmFwcGVyKCkKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaSkKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKEltcFdyYXBwZXIpCi0gICAgICAgIG1uYW1lcyA9ICgiY29sb3JzeXMiLCAidXJsbGliLnBhcnNlIiwgImRpc3R1dGlscy5jb3JlIikKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIEltcFdyYXBwZXIpCisgICAgICAgIG1uYW1lcyA9ICgKKyAgICAgICAgICAgICJjb2xvcnN5cyIsICJ1cmxsaWIucGFyc2UiLCAiZGlzdHV0aWxzLmNvcmUiLCAic3lzIiwKKyAgICAgICAgKQogICAgICAgICBmb3IgbW5hbWUgaW4gbW5hbWVzOgogICAgICAgICAgICAgcGFyZW50ID0gbW5hbWUuc3BsaXQoIi4iKVswXQogICAgICAgICAgICAgZm9yIG4gaW4gbGlzdChzeXMubW9kdWxlcyk6CkBAIC0yMzcsNyArMjM5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25dCiAgICAgICAgIGZvciBtbmFtZSBpbiBtbmFtZXM6CiAgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhtbmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWyJfX2R1bW15X18iXSkKLSAgICAgICAgICAgIG0uX19sb2FkZXJfXyAgIyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGFuZGxlZCB0aGUgaW1wb3J0CisgICAgICAgICAgICAjIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYW5kbGVkIHRoZSBpbXBvcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG0sICJfX2xvYWRlcl9fIikpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVkMDU4NS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIudGVzdC5fX21haW5fXyBpbXBvcnQgdGVzdF9tYWluCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTM0NWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkKQEAgLTAsMCArMSwzMyBAQAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorCitkZWYgdGVzdF9zdWl0ZShwYWNrYWdlPV9fcGFja2FnZV9fLCBkaXJlY3Rvcnk9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSk6CisgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCgnLicsICdfXycpKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBuYW1lKQorICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUocGF0aCkgYW5kIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQKKyAgICAgICAgICAgICAgICBuYW1lLmVuZHN3aXRoKCcucHknKSk6CisgICAgICAgICAgICBzdWJtb2R1bGVfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQobmFtZSlbMF0KKyAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gInswfS57MX0iLmZvcm1hdChwYWNrYWdlLCBzdWJtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUsIGxldmVsPTApCisgICAgICAgICAgICBtb2R1bGVfdGVzdHMgPSB1bml0dGVzdC5maW5kVGVzdENhc2VzKHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXSkKKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobW9kdWxlX3Rlc3RzKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICBwYWNrYWdlX25hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2UsIG5hbWUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKHBhY2thZ2VfbmFtZSwgbGV2ZWw9MCkKKyAgICAgICAgICAgIHBhY2thZ2VfdGVzdHMgPSBnZXRhdHRyKHN5cy5tb2R1bGVzW3BhY2thZ2VfbmFtZV0sICd0ZXN0X3N1aXRlJykoKQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChwYWNrYWdlX3Rlc3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICByZXR1cm4gc3VpdGUKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCisgICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOTcxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weQpAQCAtMCwwICsxLDIwIEBACisiIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KKworU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCitidWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCisKKyIiIgorZnJvbSAuIGltcG9ydCB0ZXN0X21haW4KKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0V4ZWN1dGUgdGhlIGltcG9ydGxpYiB0ZXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1aXRlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1aWx0aW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGJ1aWx0aW5zLl9faW1wb3J0X18oKSBpbnN0ZWFkIG9mIGltcG9ydGxpYicpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBhcmdzLmJ1aWx0aW46CisgICAgICAgIHV0aWwudXNpbmdfX19pbXBvcnRfXyA9IFRydWUKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYWJjLnB5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKaW5kZXggMzFhM2I1Zi4uMTVjMGFkZSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi9fX2luaXRfXy5weQpAQCAtMSwxMCArMSwxMCBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CmluZGV4IDQwZjY5MGUuLjE0NjUzOGQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKQEAgLTM1LDE0ICszNSwxNCBAQAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIGFzc2VydCAnaW1wb3J0bGliJyBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCiAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoJ2ltcG9ydGxpYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgogICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsncGtnJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKaW5kZXggMWE4NTM5Yi4uOGUxODZlNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpAQCAtMTgsMTAgKzE4LDEwIEBACiAKICAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgbWF0Y2hlcyBhZ2FpbnN0IHdoYXQgaXQgc2hvdWxkIGhhdmUuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCiAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBzZWxmLnZlcmlmaWNhdGlvbi5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlLl9fbmFtZV9fIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX25hbWVfXywgc3lzLm1vZHVsZXMpCiAKICAgICBsb2FkX21vZHVsZSA9IHN0YXRpY21ldGhvZChsYW1iZGEgbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShuYW1lKSkKQEAgLTQ5LDIwICs0OSwyMiBAQAogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShidWlsdGluX3V0aWwuTkFNRSk6CiAgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKICAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlMSwgbW9kdWxlMikKIAogICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnZHNzZHNkZmZmJwogICAgICAgICBhc3NlcnQgbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X2FscmVhZHlfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgICMgVXNpbmcgdGhlIG5hbWUgb2YgYSBtb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBidXQgbm90IGEgYnVpbHQtaW4gc2hvdWxkCiAgICAgICAgICMgc3RpbGwgZmFpbC4KICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoaW1wb3J0bGliLCAnX19maWxlX18nKSAgIyBOb3QgYSBidWlsdC1pbi4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ2ltcG9ydGxpYicpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTcyLDEyICs3NCwxMiBAQAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9jb2RlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgVGhlcmUgaXMgbm8gc291cmNlLgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9zb3VyY2UoYnVpbHRpbl91dGlsLk5BTUUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBDYW5ub3QgYmUgYSBwYWNrYWdlLgpAQCAtODgsOCArOTAsOSBAQAogICAgICAgICAjIE1vZHVsZXMgbm90IGJ1aWx0LWluIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtZXRoX25hbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1ldGhvZChidWlsdGluX3V0aWwuQkFEX05BTUUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJ1aWx0aW5fdXRpbC5CQURfTkFNRSkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQppbmRleCA4ZDdjNDlkLi5jMDMzOTIzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpAQCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZXh0ZW5zaW9uJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggZTA2MmZiNi4uNzZjNTNlNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBpbXAKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMywxOSArMTQsMjYgQEAKICAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5GaWxlRmluZGVyKGV4dF91dGlsLlBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9ib290c3RyYXAuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKGJhZF9uYW1lKQogCiAgICAgZGVmIHRlc3RfY2FzZV9zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfY2FzZV9pbnNlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi5zZXQoJ1BZVEhPTkNBU0VPSycsICcxJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5maW5kX21vZHVsZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsb2FkZXIsICdsb2FkX21vZHVsZScpKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCBlYTk3NDgzLi5hNjNjZmRiIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbAogCkBAIC05LDE1ICs5LDE2IEBACiAgICAgIiIiVGVzdCB0aGUgZmluZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGltcG9ydGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcih1dGlsLlBBVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaW5kZXJEZXRhaWxzKCkpCisgICAgICAgIGltcG9ydGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIodXRpbC5QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZF9tb2R1bGUodXRpbC5OQU1FKSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgpAQCAtMjUsNyArMjYsNyBAQAogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2luX3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfb3Zlcl9tb2R1bGUoc2VsZik6CkBAIC0zMyw5ICszNCw3IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKCdhc2RmamtsOycpIGlzIE5vbmUpCi0KLSAgICAjIFhYWCBSYWlzZSBhbiBleGNlcHRpb24gaWYgc29tZW9uZSB0cmllcyB0byB1c2UgdGhlICdwYXRoJyBhcmd1bWVudD8KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kX21vZHVsZSgnYXNkZmprbDsnKSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1YWYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpAQCAtMCwwICsxLDc5IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIC4gaW1wb3J0IHV0aWwgYXMgZXh0X3V0aWwKK2Zyb20gLi4gaW1wb3J0IGFiYworZnJvbSAuLiBpbXBvcnQgdXRpbAorCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKKworICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9hZGVyID0gbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoZXh0X3V0aWwuTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICBkZWYgdGVzdF9sb2FkX21vZHVsZV9BUEkoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgZGVmYXVsdCBhcmd1bWVudCBmb3IgbG9hZF9tb2R1bGUoKS4KKyAgICAgICAgc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUoJ1hYWCcpCisKKworICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHRfdXRpbC5OQU1FLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKKworICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgorICAgICAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgaW4gYSBwYWNrYWdlIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfYWZ0ZXJfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBObyBlYXN5IHdheSB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhZnRlciBhIHN1Y2Nlc3NmdWwgaW1wb3J0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2FzZGZqa2w7JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShleHRfdXRpbC5OQU1FKSkKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignc29tZScsICdwYXRoJywgJ3BrZycsICdfX2luaXRfXycgKyBzdWZmaXgpCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcigncGtnJywgcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIuaXNfcGFja2FnZSgncGtnJykpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggNDYxMDQyMC4uMWQ5NjlhMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGltcG9ydCBjb2xsZWN0aW9ucwpAQCAtMTQsNyArMTQsOCBAQAogICAgICMgWFhYIFNob3VsZCBpdCBvbmx5IHdvcmsgZm9yIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZT8KIAogICAgIGRlZiBob29rKHNlbGYsIGVudHJ5KToKLSAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKGVudHJ5KQorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKShlbnRyeSkKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgICMgUGF0aCBob29rIHNob3VsZCBoYW5kbGUgYSBkaXJlY3Rvcnkgd2hlcmUgYSBrbm93biBleHRlbnNpb24gbW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CmluZGV4IGQxNDkxNjkuLmEyNjZkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBpbXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCkBAIC02LDEwICs3LDkgQEAKIEVYVCA9IE5vbmUKIEZJTEVOQU1FID0gTm9uZQogTkFNRSA9ICdfdGVzdGNhcGknCi1fZmlsZV9leHRzID0gW3hbMF0gZm9yIHggaW4gaW1wLmdldF9zdWZmaXhlcygpIGlmIHhbMl0gPT0gaW1wLkNfRVhURU5TSU9OXQogdHJ5OgogICAgIGZvciBQQVRIIGluIHN5cy5wYXRoOgotICAgICAgICBmb3IgRVhUIGluIF9maWxlX2V4dHM6CisgICAgICAgIGZvciBFWFQgaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIEZJTEVOQU1FID0gTkFNRSArIEVYVAogICAgICAgICAgICAgRklMRVBBVEggPSBvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpKToKQEAgLTE4LDQgKzE4LDMgQEAKICAgICAgICAgUEFUSCA9IEVYVCA9IEZJTEVOQU1FID0gRklMRVBBVEggPSBOb25lCiBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICBwYXNzCi1kZWwgX2ZpbGVfZXh0cwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uOWVmMTAzYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmZyb3plbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKaW5kZXggZGI4ODM3OS4uZmEwYzJhMCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIC4uLiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zNSw3ICszNSw3IEBACiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNzMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCBiNjg1ZWY1Li40YjhlYzE1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtMTAsNTUgKzEwLDcwIEBACiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19oZWxsb19fJyksIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIG1vZHVsZSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX2hlbGxvX18nLCAnX19maWxlX18nOiAnPGZyb3plbj4nLAotICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnJywgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXJ9CisgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19oZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJycsCisgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19waGVsbG9fXycpLCAgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX3BoZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKLSAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywgJ19fcGF0aF9fJzogWydfX3BoZWxsb19fJ10sCi0gICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcn0KKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFsnX19waGVsbG9fXyddLAorICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihtb2R1bGUsIGF0dHIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyX3ZhbHVlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgX19waGVsbG9fXy4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19fcGhlbGxvX18nLCAnX19waGVsbG9fXy5zcGFtJyksIFwKICAgICAgICAgICAgICBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19fcGhlbGxvX18uc3BhbScpCi0gICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19waGVsbG9fXy5zcGFtJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fLnNwYW0nLAogICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX19waGVsbG9fXycsCi0gICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyfQorICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGNoZWNrLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIobW9kdWxlLCBhdHRyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cl92YWx1ZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIF9fcGhlbGxvX18uc3BhbS4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlMSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKICAgICAgICAgICAgIG1vZHVsZTIgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlMSBpcyBtb2R1bGUyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hlbGxvIHdvcmxkIVxuSGVsbG8gd29ybGQhXG4nKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCk6CisgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9kdWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxtb2R1bGUgJ19faGVsbG9fXycgKGZyb3plbik+IikKKwogICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgTm8gd2F5IHRvIHRyaWdnZXIgYW4gZXJyb3IgaW4gYSBmcm96ZW4gbW9kdWxlLgogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgogICAgICAgICBhc3NlcnQgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmZpbmRfbW9kdWxlKCdfbm90X3JlYWwnKSBpcyBOb25lCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX25vdF9yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ19ub3RfcmVhbCcpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTc4LDcgKzkzLDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBhbHdheXMgcmV0dXJuIE5vbmUuCiAgICAgICAgIHJlc3VsdCA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5nZXRfc291cmNlKCdfX2hlbGxvX18nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gdGVsbCB3aGF0IGlzIGEgcGFja2FnZS4KQEAgLTg2LDE0ICsxMDEsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgKCdfX3BoZWxsb19fLnNwYW0nLCBGYWxzZSkpCiAgICAgICAgIGZvciBuYW1lLCBpc19wYWNrYWdlIGluIHRlc3RfZm9yOgogICAgICAgICAgICAgcmVzdWx0ID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKHJlc3VsdCkgPT0gaXNfcGFja2FnZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChyZXN1bHQpLCBpc19wYWNrYWdlKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBSYWlzZSBJbXBvcnRFcnJvciBmb3IgbW9kdWxlcyB0aGF0IGFyZSBub3QgZnJvemVuLgogICAgICAgICBmb3IgbWV0aF9uYW1lIGluICgnZ2V0X2NvZGUnLCAnZ2V0X3NvdXJjZScsICdpc19wYWNrYWdlJyk6CiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwgbWV0aF9uYW1lKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBtZXRob2QoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uMzY2ZTUzMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5pbXBvcnRfJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCA1MDU2YWU1Li43ODNjZGUxIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNjcsNyArNjcsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVua19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6IDQyfQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDRjZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpAQCAtMCwwICsxLDY3IEBACitmcm9tIC4uIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl90ZXN0X3V0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgQmFkTG9hZGVyRmluZGVyOgorICAgIGJhZCA9ICdmaW5lLmJvZ3VzJworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgaWYgZnVsbG5hbWUgPT0gY2xzLmJhZDoKKyAgICAgICAgICAgIHJldHVybiBjbHMKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIGZ1bGxuYW1lID09IGNscy5iYWQ6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignSSBjYW5ub3QgYmUgbG9hZGVkIScpCisKKworY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0CisgICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCisKKyAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKKyAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9sZXZlbChzZWxmKToKKyAgICAgICAgIyBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSBsZXZlbCBpcyBzcGVjaWZpZWQuCisgICAgICAgICMgUEVQIDMyOCBkaWQgYXdheSB3aXRoIHN5cy5tb2R1bGUgTm9uZSBlbnRyaWVzIGFuZCB0aGUgYW1iaWd1aXR5IG9mCisgICAgICAgICMgYWJzb2x1dGUvcmVsYXRpdmUgaW1wb3J0cy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwuaW1wb3J0Xygnb3MnLCBnbG9iYWxzKCksIGxldmVsPS0xKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZnJvbWxpc3RfZW50cnkoc2VsZik6CisgICAgICAgICMgSWYgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXNuJ3QgZXhpc3QsIHRoYXQncyBva2F5LgorICAgICAgICAjIGlzc3VlMTU3MTUKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHV0aWwuaW1wb3J0XygnZmluZScsIGZyb21saXN0PVsnbm90IGhlcmUnXSkKKworICAgIGRlZiB0ZXN0X2Zyb21saXN0X2xvYWRfZXJyb3JfcHJvcGFnYXRlcyhzZWxmKToKKyAgICAgICAgIyBJZiBzb21ldGhpbmcgaW4gZnJvbWxpc3QgdHJpZ2dlcnMgYW4gZXhjZXB0aW9uIG5vdCByZWxhdGVkIHRvIG5vdAorICAgICAgICAjIGV4aXN0aW5nLCBsZXQgdGhhdCBleGNlcHRpb24gcHJvcGFnYXRlLgorICAgICAgICAjIGlzc3VlMTUzMTYKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB1dGlsLmltcG9ydF8oJ2ZpbmUnLCBmcm9tbGlzdD1bJ2JvZ3VzJ10pCisKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChBUElUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKaW5kZXggNDhkYzY0My4uYmY2ODAyNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CkBAIC0zNCw4ICszNCw5IEBACiAgICAgICAgIG5hbWUgPSAndXNpbmdfTm9uZScKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IE5vbmUKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiBjcmVhdGVfbW9jayhzZWxmLCAqbmFtZXMsIHJldHVybl89Tm9uZSk6CiAgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygqbmFtZXMpCkBAIC02NCw3ICs2NSw4IEBACiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaWQobW9kdWxlLm1vZHVsZSksIGlkKHN5cy5tb2R1bGVzWydwa2cubW9kdWxlJ10pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQobW9kdWxlLm1vZHVsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzeXMubW9kdWxlc1sncGtnLm1vZHVsZSddKSkKIAogICAgICMgU2VlIHRlc3RfdXNpbmdfY2FjaGVfYWZ0ZXJfbG9hZGVyKCkgZm9yIHJlYXNvbmluZy4KICAgICBAaW1wb3J0X3V0aWwuaW1wb3J0bGliX29ubHkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IGI5MDNlOGUuLjI3YjIyNzAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiVGVzdCB0aGF0IHRoZSBzZW1hbnRpY3MgcmVsYXRpbmcgdG8gdGhlICdmcm9tbGlzdCcgYXJndW1lbnQgYXJlIGNvcnJlY3QuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXAKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBSZXR1cm5WYWx1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOCwxMSArMzksOSBAQAogICAgIFtvYmplY3QgY2FzZV0uIFRoaXMgaXMgZXZlbiB0cnVlIGlmIHRoZSBvYmplY3QgZG9lcyBub3QgZXhpc3QgW2JhZCBvYmplY3RdLgogCiAgICAgSWYgYSBwYWNrYWdlIGlzIGJlaW5nIGltcG9ydGVkLCB0aGVuIHdoYXQgaXMgbGlzdGVkIGluIGZyb21saXN0IG1heSBiZQotICAgIHRyZWF0ZWQgYXMgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgW21vZHVsZV0uIEJ1dCBvbmNlIGFnYWluLCBldmVuIGlmCi0gICAgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXMgbm90IGV4aXN0IGFzIGEgbW9kdWxlLCBubyBlcnJvciBpcyB0aHJvd24KLSAgICBbbm8gbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzIGNvbnRhaW5lZCBpbiBfX2FsbF9fIHdoZW4gJyonIGlzCi0gICAgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIG9ubHkgbmFtZSBpbiB0aGUKLSAgICBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCisgICAgdHJlYXRlZCBhcyBhIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBbbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzCisgICAgY29udGFpbmVkIGluIF9fYWxsX18gd2hlbiAnKicgaXMgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQKKyAgICB0byBiZSB0aGUgb25seSBuYW1lIGluIHRoZSBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCiAKICAgICAiIiIKIApAQCAtNTMsNyArNTIsNyBAQAogICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ21vZHVsZScsIGZyb21saXN0PVsnYXR0ciddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAnbW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X3VuZXhpc3RlbnRfb2JqZWN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X29iamVjdChzZWxmKToKICAgICAgICAgIyBbYmFkIG9iamVjdF0KICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygnbW9kdWxlJykgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKQEAgLTcwLDEzICs2OSwxOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ21vZHVsZScpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi0gICAgZGVmIHRlc3Rfbm9fbW9kdWxlX2Zyb21fcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBbbm8gbW9kdWxlXQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nKSBhcyBpbXBvcnRlcjoKKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX0ltcG9ydEVycm9yKHNlbGYpOgorICAgICAgICAjIElmIGEgc3VibW9kdWxlIGNhdXNlcyBhbiBJbXBvcnRFcnJvciBiZWNhdXNlIGl0IHRyaWVzIHRvIGltcG9ydAorICAgICAgICAjIGEgbW9kdWxlIHdoaWNoIGRvZXNuJ3QgZXhpc3QsIHRoYXQgc2hvdWxkIGxldCB0aGUgSW1wb3J0RXJyb3IKKyAgICAgICAgIyBwcm9wYWdhdGUuCisgICAgICAgIGRlZiBtb2R1bGVfY29kZSgpOgorICAgICAgICAgICAgaW1wb3J0IGlfZG9fbm90X2V4aXN0CisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5tb2QnOiBtb2R1bGVfY29kZX0pIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJywgZnJvbWxpc3Q9J25vbl9leGlzdGVudCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cihtb2R1bGUsICdub25fZXhpc3RlbnQnKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycsIGZyb21saXN0PVsnbW9kJ10pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2lfZG9fbm90X2V4aXN0JywgZXhjLmV4Y2VwdGlvbi5uYW1lKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZCcpIGFzIGltcG9ydGVyOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CmluZGV4IDNiMTMwYzkuLjRkODVmODAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKQEAgLTEsNyArMSwxMCBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCitpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiAKIAogY2xhc3MgQ2FsbGluZ09yZGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMzLDYgKzM2LDIxIEBACiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bZmlyc3QsIHNlY29uZF0pOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wb3J0X3V0aWwuaW1wb3J0Xyhtb2RfbmFtZSksIDQyKQogCisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgICMgUmFpc2UgYW4gSW1wb3J0V2FybmluZyBpZiBzeXMubWV0YV9wYXRoIGlzIGVtcHR5LgorICAgICAgICBtb2R1bGVfbmFtZSA9ICdub3RoaW5nJworICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W10pOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0bGliLl9ib290c3RyYXAuX2ZpbmRfbW9kdWxlKCdub3RoaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQorCiAKIGNsYXNzIENhbGxTaWduYXR1cmUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02NCw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXJncyksIDIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa3dhcmdzKSwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIG1vZF9uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXJnc1sxXSkKIAogICAgIGRlZiB0ZXN0X3dpdGhfcGF0aChzZWxmKToKICAgICAgICAgIyBbcGF0aCBzZXRdCkBAIC04NCw3ICsxMDIsNyBAQAogICAgICAgICAgICAgICAgICMgQXNzdW1pbmcgYWxsIGFyZ3VtZW50cyBhcmUgcG9zaXRpb25hbC4KICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGt3YXJncykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIG1vZF9uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIHBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBwYXRoKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTE4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTAsMCArMSwxMTIgQEAKK2Zyb20gLi4gaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW1wb3J0bGliCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitjbGFzcyBQYXJlbnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJJbXBvcnRpbmcgYSBzdWJtb2R1bGUgc2hvdWxkIGltcG9ydCB0aGUgcGFyZW50IG1vZHVsZXMuIiIiCisKKyAgICBkZWYgdGVzdF9pbXBvcnRfcGFyZW50KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmVudChzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLm1vZHVsZScpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfcGFyZW50X2FmdGVyX2ltcG9ydGluZ19jaGlsZChzZWxmKToKKyAgICAgICAgZGVmIF9faW5pdF9fKCk6CisgICAgICAgICAgICBpbXBvcnQgcGtnLm1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cnOiBfX2luaXRfX30pCisgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX3BhcmVudF9hZnRlcl9yZWxhdGl2ZV9pbXBvcnRpbmdfY2hpbGQoc2VsZik6CisgICAgICAgIGRlZiBfX2luaXRfXygpOgorICAgICAgICAgICAgZnJvbSAuIGltcG9ydCBtb2R1bGUKKyAgICAgICAgICAgIDEvMAorICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kdWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnJzogX19pbml0X199KQorICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgcmFpc2VzIEltcG9ydEVycm9yIG9uIHRoZSAiZnJvbSAuIGltcG9ydCBtb2R1bGUiCisgICAgICAgICAgICAgICAgICAgICMgbGluZSwgbm90IHN1cmUgd2h5LgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICAjIFhYWCBGYWxzZQorICAgICAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX3BhcmVudF9hZnRlcl9kb3VibGVfcmVsYXRpdmVfaW1wb3J0aW5nX2NoaWxkKHNlbGYpOgorICAgICAgICBkZWYgX19pbml0X18oKToKKyAgICAgICAgICAgIGZyb20gLi5zdWJwa2cgaW1wb3J0IG1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5zdWJwa2cuX19pbml0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrZy5zdWJwa2cubW9kdWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnLnN1YnBrZyc6IF9faW5pdF9ffSkKKyAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHJhaXNlcyBJbXBvcnRFcnJvciBvbiB0aGUgImZyb20gLi5zdWJwa2cgaW1wb3J0IG1vZHVsZSIKKyAgICAgICAgICAgICAgICAgICAgIyBsaW5lLCBub3Qgc3VyZSB3aHkuCisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5zdWJwa2cnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZy5zdWJwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLnN1YnBrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZy5zdWJwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICAjIFhYWCBGYWxzZQorICAgICAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCdwa2cuc3VicGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBpbXBvcnQgYSBzdWJtb2R1bGUgZnJvbSBhIG5vbi1wYWNrYWdlIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KKyAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHN5cywgJ19fcGF0aF9fJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdzeXMubm9fc3VibW9kdWxlc19oZXJlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlX2J1dF9zaWRlX2VmZmVjdHMoc2VsZik6CisgICAgICAgICMgSWYgYSBtb2R1bGUgaW5qZWN0cyBzb21ldGhpbmcgaW50byBzeXMubW9kdWxlcyBhcyBhIHNpZGUtZWZmZWN0LCB0aGVuCisgICAgICAgICMgcGljayB1cCBvbiB0aGF0IGZhY3QuCisgICAgICAgIG5hbWUgPSAnbW9kJworICAgICAgICBzdWJuYW1lID0gbmFtZSArICcuYicKKyAgICAgICAgZGVmIG1vZHVsZV9pbmplY3Rpb24oKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW3N1Ym5hbWVdID0gJ3RvdGFsIGJ1bmsnCisgICAgICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19tb2R1bGVzKCdtb2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J21vZCc6IG1vZHVsZV9pbmplY3Rpb259KQorICAgICAgICB3aXRoIG1vY2tfbW9kdWxlcyBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oc3VibmFtZSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChzdWJuYW1lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KFBhcmVudE1vZHVsZVRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwODZjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0wLDAgKzEsOTggQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIC4uIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKKworY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCisKKyAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgorICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKSkKKworICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorCisgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9saXN0KHNlbGYpOgorICAgICAgICAjIEFuIGVtcHR5IGxpc3Qgc2hvdWxkIG5vdCBjb3VudCBhcyBhc2tpbmcgZm9yIHN5cy5wYXRoLgorICAgICAgICBtb2R1bGUgPSAnbW9kdWxlJworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ21vZHVsZScsIFtdKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9ob29rcyBpcyBlbXB0eSBhIHdhcm5pbmcgaXMgcmFpc2VkLAorICAgICAgICAjIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGdldHMgTm9uZSBzZXQsIGFuZCBQYXRoRmluZGVyIHJldHVybnMgTm9uZS4KKyAgICAgICAgcGF0aF9lbnRyeSA9ICdib2d1c19wYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e30sIHBhdGhfaG9va3M9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF9lbnRyeV0pOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF9lbnRyeV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQorCisgICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyBzaG91bGQgY3JlYXRlIGEgZmluZGVyIHVzaW5nIHRoZSBjd2QuCisgICAgICAgIHBhdGggPSAnJworICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCisgICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5jdXJkaXIsIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9zLmN1cmRpciwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoRmluZGVyVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggYTBmNmIyZC4uNDU2OWMyNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xOTMsNiArMTkzLDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ19fcnVucHlfcGtnX18udW5jbGUuY291c2luJykKICAgICAgICAgc2VsZi5yZWxhdGl2ZV9pbXBvcnRfdGVzdChjcmVhdGUsIGdsb2JhbHNfLCBjYWxsYmFjaykKIAorICAgIGRlZiB0ZXN0X2ltcG9ydF9yZWxhdGl2ZV9pbXBvcnRfbm9fZnJvbWxpc3Qoc2VsZik6CisgICAgICAgICMgSW1wb3J0IGEgcmVsYXRpdmUgbW9kdWxlIHcvIG5vIGZyb21saXN0LgorICAgICAgICBjcmVhdGUgPSBbJ2NyYXNoLl9faW5pdF9fJywgJ2NyYXNoLm1vZCddCisgICAgICAgIGdsb2JhbHNfID0gW3snX19wYWNrYWdlX18nOiAnY3Jhc2gnLCAnX19uYW1lX18nOiAnY3Jhc2gnfV0KKyAgICAgICAgZGVmIGNhbGxiYWNrKGdsb2JhbF8pOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygnY3Jhc2gnKQorICAgICAgICAgICAgbW9kID0gaW1wb3J0X3V0aWwuaW1wb3J0XygnbW9kJywgZ2xvYmFsXywge30sIFtdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdjcmFzaC5tb2QnKQorICAgICAgICBzZWxmLnJlbGF0aXZlX2ltcG9ydF90ZXN0KGNyZWF0ZSwgZ2xvYmFsc18sIGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CisgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0Xygnc3lzJywgbGV2ZWw9MSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQppbmRleCA2NDljNWVkLi44NmFjMDY1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWJlMTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKQEAgLTAsMCArMSwxNyBAQAorIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCisKK1Rlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCitpbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCitPdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgordGhpcyBzY3JpcHQuCisKKyIiIgoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisKKyAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjclCmNvcHkgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CmluZGV4IDhkN2M0OWQuLjNlZjk3ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CmluZGV4IDMyNDU5MDcuLjBkOTEyYjYgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKQEAgLTMyLDYgKzMyLDkgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCisKIAogY2xhc3MgU291cmNlTG9hZGVyTW9jayhTb3VyY2VPbmx5TG9hZGVyTW9jayk6CiAKQEAgLTQwLDggKzQzLDEwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIG1hZ2ljPWltcC5nZXRfbWFnaWMoKSk6CiAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGF0aCkKICAgICAgICAgc2VsZi5ieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYucGF0aCkKKyAgICAgICAgc2VsZi5zb3VyY2Vfc2l6ZSA9IGxlbihzZWxmLnNvdXJjZSkKICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShtYWdpYykKLSAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNlbGYuc291cmNlX210aW1lKSkKKyAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5zb3VyY2VfbXRpbWUpKQorICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9zaXplKSkKICAgICAgICAgY29kZV9vYmplY3QgPSBjb21waWxlKHNlbGYuc291cmNlLCBzZWxmLnBhdGgsICdleGVjJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCiAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQpAQCAtNTYsOSArNjEsOSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogCi0gICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6CisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CiAgICAgICAgIGFzc2VydCBwYXRoID09IHNlbGYucGF0aAotICAgICAgICByZXR1cm4gc2VsZi5zb3VyY2VfbXRpbWUKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnNvdXJjZV9tdGltZSwgJ3NpemUnOiBzZWxmLnNvdXJjZV9zaXplfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICBzZWxmLndyaXR0ZW5bcGF0aF0gPSBieXRlcyhkYXRhKQpAQCAtMTAyLDkgKzEwNywxMiBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiKQogICAgICAgICAgICAgcGF0aCA9IHN1cGVyKCkuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgICAgICBhc3NlcnQgbGVuKHcpID09IDEKLSAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gcGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxtb2R1bGU+JworCiAKIGNsYXNzIFB5TG9hZGVyQ29tcGF0TW9jayhQeUxvYWRlck1vY2spOgogCkBAIC0xNDYsMTEgKzE1NCwxMiBAQAogICAgICAgICAgICAgc2VsZi5ieXRlY29kZV90b19wYXRoW25hbWVdID0gZGF0YVsncGF0aCddCiAgICAgICAgICAgICBtYWdpYyA9IGRhdGEuZ2V0KCdtYWdpYycsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl93X2xvbmcoZGF0YS5nZXQoJ210aW1lJywgc2VsZi5kZWZhdWx0X210aW1lKSkKKyAgICAgICAgICAgIHNvdXJjZV9zaXplID0gaW1wb3J0bGliLl93X2xvbmcobGVuKHNlbGYuc291cmNlKSAmIDB4RkZGRkZGRkYpCiAgICAgICAgICAgICBpZiAnYmMnIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgYmMgPSBkYXRhWydiYyddCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJjID0gc2VsZi5jb21waWxlX2JjKG5hbWUpCi0gICAgICAgICAgICBzZWxmLm1vZHVsZV9ieXRlY29kZVtuYW1lXSA9IG1hZ2ljICsgbXRpbWUgKyBiYworICAgICAgICAgICAgc2VsZi5tb2R1bGVfYnl0ZWNvZGVbbmFtZV0gPSBtYWdpYyArIG10aW1lICsgc291cmNlX3NpemUgKyBiYwogCiAgICAgZGVmIGNvbXBpbGVfYmMoc2VsZiwgbmFtZSk6CiAgICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5tb2R1bGVfcGF0aHMuZ2V0KG5hbWUsICc8dGVzdD4nKSBvciAnPHRlc3Q+JwpAQCAtMTk4LDcgKzIwNyw3IEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCiAgICAgICAgICAgICBjb2RlX29iamVjdCA9IHN1cGVyKCkuZ2V0X2NvZGUobmFtZSkKICAgICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBjb2RlX29iamVjdAogCiBjbGFzcyBQeUxvYWRlclRlc3RzKHRlc3RpbmdfYWJjLkxvYWRlclRlc3RzKToKQEAgLTIxOSw3ICsyMjgsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsIF9fcGFja2FnZV9fPScnLAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKQEAgLTIzMSw3ICsyNDAsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsCiAgICAgICAgICAgICAgICAgX19wYXRoX189W29zLnBhdGguZGlybmFtZShwYXRoKV0sIF9fcGFja2FnZV9fPW5hbWUsCiAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQpAQCAtMjU3LDggKzI2Niw4IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGxvYWRlZF9tb2R1bGUgPSBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVkX21vZHVsZSBpcyBtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLm1vZHVsZXNbbmFtZV0gaXMgbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWRfbW9kdWxlLCBtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2NrLCBuYW1lCiAKICAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgpAQCAtMjcxLDcgKzI4MCw3IEBACiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5tb2R1bGVzW25hbWVdIGlzIG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2JsYWgnKSkKICAgICAgICAgcmV0dXJuIG1vY2sKIApAQCAtMjgyLDcgKzI5MSw3IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgbm90IGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgcmV0dXJuIG1vY2sKIAogCkBAIC0zNDIsNyArMzUxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3JfbG9uZyhtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs0OjhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG10aW1lLCAxKQotICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6XQorICAgICAgICBzb3VyY2Vfc2l6ZSA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6MTJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suc291cmNlKSAmIDB4RkZGRkZGRkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLl9yX2xvbmcoc291cmNlX3NpemUpKQorICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzEyOl0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYywgbW9jay5jb21waWxlX2JjKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgpAQCAtNDEyLDggKzQyNCw3IEBACiAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gZG9udF93cml0ZV9ieXRlY29kZQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChuYW1lIGluIG1vY2subW9kdWxlX2J5dGVjb2RlKSBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfd3JpdGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSwgZG9udF93cml0ZV9ieXRlY29kZSkKIAogICAgIGRlZiB0ZXN0X25vX2J5dGVjb2RlX3dyaXR0ZW4oc2VsZik6CiAgICAgICAgIHNlbGYucnVuX3Rlc3QoVHJ1ZSkKQEAgLTQzOCw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWdpYyc6IGJhZF9tYWdpY319KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG1hZ2ljID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bOjRdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKIApAQCAtNDUxLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAge25hbWU6IHsncGF0aCc6ICdwYXRoL3RvL21vZC5ieXRlY29kZScsICdtdGltZSc6IG9sZF9tdGltZX19KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl9yX2xvbmcobW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bNDo4XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdGltZSwgUHlQeWNMb2FkZXJNb2NrLmRlZmF1bHRfbXRpbWUpCiAKQEAgLTQ2OSw4ICs0ODAsOSBAQAogICAgICAgICAgICAgICAgIHsncGF0aCc6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKSwKICAgICAgICAgICAgICAgICAgJ21hZ2ljJzogYmFkX21hZ2ljfX0KICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogTm9uZX0sIGJjKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3Rfbm9fYnl0ZWNvZGUoc2VsZik6CiAgICAgICAgICMgTWlzc2luZyBjb2RlIG9iamVjdCBieXRlY29kZSBzaG91bGQgbGVhZCB0byBhbiBFT0ZFcnJvci4KQEAgLTUxNCw4ICs1MjYsOSBAQAogICAgICAgICAjIElmIGFsbCAqX3BhdGggbWV0aG9kcyByZXR1cm4gTm9uZSwgcmFpc2UgSW1wb3J0RXJyb3IuCiAgICAgICAgIG5hbWUgPSAnbW9kJwogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X3NvdXJjZV9wYXRoX0ltcG9ydEVycm9yKHNlbGYpOgogICAgICAgICAjIEFuIEltcG9ydEVycm9yIGZyb20gc291cmNlX3BhdGggc2hvdWxkIHRyaWdnZXIgYW4gSW1wb3J0RXJyb3IuCkBAIC01MzEsNyArNTQ0LDcgQEAKICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSkKICAgICAgICAgYmFkX21ldGggPSB0eXBlcy5NZXRob2RUeXBlKHJhaXNlX0ltcG9ydEVycm9yLCBtb2NrKQogICAgICAgICBtb2NrLmJ5dGVjb2RlX3BhdGggPSBiYWRfbWV0aAotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQogCiAKQEAgLTU5MiwxNSArNjA1LDE3IEBACiAgICAgICAgIGRlZiByYWlzZV9JT0Vycm9yKHBhdGgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogICAgICAgICBzZWxmLmxvYWRlci5nZXRfZGF0YSA9IHJhaXNlX0lPRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkZXIuZ2V0X3NvdXJjZShzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIHNlbGYubmFtZSkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgUHJvcGVybHkgZGV0ZWN0IHdoZW4gbG9hZGluZyBhIHBhY2thZ2UuCi0gICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQogICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQorICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSArICcuX19pbml0X18nKSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGUgY29kZSBvYmplY3QgaXMgY3JlYXRlZC4KQEAgLTYxNSw3ICs2MzAsNyBAQAogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQogICAgICAgICAgICAgc2VsZi52ZXJpZnlfbW9kdWxlKG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBbb3MucGF0aC5kaXJuYW1lKHNlbGYucGF0aCldKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubmFtZSBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfc2V0dGluZ3Moc2VsZik6CiAgICAgICAgICMgX19wYWNrYWdlX18gbmVlZHMgdG8gYmUgc2V0LCB3aGlsZSBfX3BhdGhfXyBpcyBzZXQgb24gaWYgdGhlIG1vZHVsZQpAQCAtNjU2LDcgKzY3MSw4IEBACiAgICAgICAgIGlmIGJ5dGVjb2RlX3dyaXR0ZW46CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY2FjaGVkLCBzZWxmLmxvYWRlci53cml0dGVuKQogICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc2VsZi5sb2FkZXIuc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZSkpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2Vfc2l6ZSkpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIud3JpdHRlbltzZWxmLmNhY2hlZF0sIGJ5dGVzKGRhdGEpKQogCkBAIC03NjIsMTcgKzc3OCwzMSBAQAogICAgICAgICBleHBlY3QgPSBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpLmRlY29kZShzb3VyY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfc291cmNlKG5hbWUpLCBleHBlY3QpCiAKKwogY2xhc3MgQWJzdHJhY3RNZXRob2RJbXBsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGUgY29uY3JldGUgYWJzdHJhY3RtZXRob2QgaW1wbGVtZW50YXRpb25zLiIiIgogCisgICAgY2xhc3MgTWV0YVBhdGhGaW5kZXIoYWJjLk1ldGFQYXRoRmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKKyAgICBjbGFzcyBQYXRoRW50cnlGaW5kZXIoYWJjLlBhdGhFbnRyeUZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBfKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoXykKKworICAgICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgXyk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbG9hZGVyKF8pCisKKyAgICBjbGFzcyBGaW5kZXIoYWJjLkZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQorCiAgICAgY2xhc3MgTG9hZGVyKGFiYy5Mb2FkZXIpOgogICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAgICAgc3VwZXIoKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGNsYXNzIEZpbmRlcihhYmMuRmluZGVyKToKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIF8pOgotICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShfKQorICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgIHN1cGVyKCkubW9kdWxlX3JlcHIobW9kdWxlKQogCiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXIoTG9hZGVyLCBhYmMuUmVzb3VyY2VMb2FkZXIpOgogICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgXyk6CkBAIC04NDcsNyArODc3LDcgQEAKICAgICAgICAgIyBSZXF1aXJlZCBhYnN0cmFjdG1ldGhvZHMuCiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCAnZ2V0X2ZpbGVuYW1lJywgJ2dldF9kYXRhJykKICAgICAgICAgIyBPcHRpb25hbCBhYnN0cmFjdG1ldGhvZHMuCi0gICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCdwYXRoX210aW1lJywgJ3NldF9kYXRhJykKKyAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsJ3BhdGhfc3RhdHMnLCAnc2V0X2RhdGEnKQogCiAgICAgZGVmIHRlc3RfUHlMb2FkZXIoc2VsZik6CiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5QeUxvYWRlcigpLCAnc291cmNlX3BhdGgnLApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDczNzc3ZGUuLjI0MTE3M2YgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNyArMSw5IEBACiAiIiJUZXN0IGNhc2Utc2Vuc2l0aXZpdHkgKFBFUCAyMzUpLiIiIgogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAoraW1wb3J0IGltcAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQgYXMgdGVzdF9zdXBwb3J0CkBAIC0xOSw5ICsyMSwxMSBAQAogICAgIGFzc2VydCBuYW1lICE9IG5hbWUubG93ZXIoKQogCiAgICAgZGVmIGZpbmQoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKHNlbGYubmFtZSkKIAogICAgIGRlZiBzZW5zaXRpdml0eV90ZXN0KHNlbGYpOgpAQCAtMzcsNiArNDEsOSBAQAogICAgIGRlZiB0ZXN0X3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi51bnNldCgnUFlUSE9OQ0FTRU9LJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpAQCAtNDUsNiArNTIsOSBAQAogICAgIGRlZiB0ZXN0X2luc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnNldCgnUFlUSE9OQ0FTRU9LJywgJzEnKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIG5vdCBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQppbmRleCBjN2E3ZDhmLi45MGY5ZDMwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTEsNSArMSw2IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgaW1wb3J0bGliCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5hYmMKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCkBAIC0yNCwxMiArMjUsNDggQEAKIAogICAgICIiIgogCisgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGVfQVBJKHNlbGYpOgorICAgICAgICAjIElmIGZ1bGxuYW1lIGlzIG5vdCBzcGVjaWZpZWQgdGhhdCBhc3N1bWUgc2VsZi5uYW1lIGlzIGRlc2lyZWQuCisgICAgICAgIGNsYXNzIFRlc3Rlck1peGluKGltcG9ydGxpYi5hYmMuTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6IHJldHVybiBmdWxsbmFtZQorICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6IHJldHVybiAnPG1vZHVsZT4nCisKKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlciwgVGVzdGVyTWl4aW4pOgorICAgICAgICAgICAgZGVmIGdldF9jb2RlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgXyk6IHBhc3MKKworICAgICAgICBuYW1lID0gJ21vZF9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgJ3NvbWVfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobG9hZGVyLm5hbWUgKyAnWFhYJykKKworICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZV9BUEkoc2VsZik6CisgICAgICAgICMgSWYgZnVsbG5hbWUgaXMgbm90IHNldCB0aGVuIGFzc3VtZSBzZWxmLnBhdGggaXMgZGVzaXJlZC4KKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcik6CisgICAgICAgICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIF8pOiBwYXNzCisKKyAgICAgICAgcGF0aCA9ICdzb21lX3BhdGgnCisgICAgICAgIG5hbWUgPSAnc29tZV9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKE5vbmUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSArICdYWFgnKQorCiAgICAgIyBbYmFzaWNdCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ190ZW1wJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX3RlbXAnLCAnX19maWxlX18nOiBtYXBwaW5nWydfdGVtcCddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTM3LDEwICs3NCwxMCBAQAogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfcGtnJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19wa2cnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnJywgJ19fZmlsZV9fJzogbWFwcGluZ1snX3BrZy5fX2luaXRfXyddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJzogW29zLnBhdGguZGlybmFtZShtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pXSwKICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfcGtnJ30KQEAgLTUwLDEwICs4NywxMCBAQAogCiAgICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nLCAnX3BrZy5tb2QnKWFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cubW9kJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cubW9kJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3BrZy5tb2QnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3BrZy5tb2QnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnLm1vZCcsICdfX2ZpbGVfXyc6IG1hcHBpbmdbJ19wa2cubW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX3BrZyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTY1LDE5ICsxMDIsMTQgQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgbW9kdWxlX2lkID0gaWQobW9kdWxlKQogICAgICAgICAgICAgbW9kdWxlX2RpY3RfaWQgPSBpZChtb2R1bGUuX19kaWN0X18pCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoInRlc3RpbmdfdmFyID0gNDJcbiIpCi0gICAgICAgICAgICAjIEZvciBmaWxlc3lzdGVtcyB3aGVyZSB0aGUgbXRpbWUgaXMgb25seSB0byBhIHNlY29uZCBncmFudWxhcml0eSwKLSAgICAgICAgICAgICMgZXZlcnl0aGluZyB0aGF0IGhhcyBoYXBwZW5lZCBhYm92ZSBjYW4gYmUgdG9vIGZhc3Q7Ci0gICAgICAgICAgICAjIGZvcmNlIGFuIG10aW1lIG9uIHRoZSBzb3VyY2UgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIGRpZmZlcmVudAotICAgICAgICAgICAgIyB0aGFuIHRoZSBvcmlnaW5hbCBtdGltZS4KLSAgICAgICAgICAgIGxvYWRlci5wYXRoX210aW1lID0gc2VsZi5mYWtlX210aW1lKGxvYWRlci5wYXRoX210aW1lKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RpbmdfdmFyJyBpbiBtb2R1bGUuX19kaWN0X18sCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0aW5nX3ZhcicsIG1vZHVsZS5fX2RpY3RfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RpbmdfdmFyJyBub3QgaW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0iLmZvcm1hdChsaXN0KG1vZHVsZS5fX2RpY3RfXy5rZXlzKCkpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1snX3RlbXAnXSkKQEAgLTk1LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgc2V0YXR0cihvcmlnX21vZHVsZSwgYXR0ciwgdmFsdWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tuYW1lXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJysrKyBiYWQgc3ludGF4ICsrKycpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBhdHRyaWJ1dGVzOgpAQCAtMTA2LDEwICsxMzgsMTAgQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbJ190ZW1wJ10sICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCc9JykKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3RlbXAnIG5vdCBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9maWxlX2Zyb21fZW1wdHlfc3RyaW5nX2RpcihzZWxmKToKICAgICAgICAgIyBMb2FkaW5nIGEgbW9kdWxlIGZvdW5kIGZyb20gYW4gZW1wdHkgc3RyaW5nIGVudHJ5IG9uIHN5cy5wYXRoIHNob3VsZApAQCAtMTE5LDcgKzE1MSw3IEBACiAgICAgICAgICAgICBmaWxlLndyaXRlKCIjIHRlc3QgZmlsZSBmb3IgaW1wb3J0bGliIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ190ZW1wJyk6Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgZmlsZV9wYXRoKQogICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9wYXRoLCBtb2QuX19maWxlX18pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9wYXRoKSwKQEAgLTE0NSw3ICsxNzcsNyBAQAogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZ2V0YXR0cihlcnJubywgJ0VPVkVSRkxPVycsIE5vbmUpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBzZXQgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbGFyZ2UgaW50ZWdlciAoe30pIi5mb3JtYXQoZSkpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAjIFNhbml0eSBjaGVja3MuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX2NhY2hlZF9fLCBjb21waWxlZCkKQEAgLTE1OSw3ICsxOTEsNyBAQAogICAgIGRlZiBpbXBvcnRfKHNlbGYsIGZpbGUsIG1vZHVsZV9uYW1lKToKICAgICAgICAgbG9hZGVyID0gc2VsZi5sb2FkZXIobW9kdWxlX25hbWUsIGZpbGUpCiAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiBtYW5pcHVsYXRlX2J5dGVjb2RlKHNlbGYsIG5hbWUsIG1hcHBpbmcsIG1hbmlwdWxhdG9yLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9RmFsc2UpOgpAQCAtMjE1LDEwICsyNDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAorICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3NpemUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKKyAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKKwogICAgIGRlZiBfdGVzdF9ub19tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG1hcHBpbmdbJ190ZW1wJ10gaWYgbm90IGRlbF9zb3VyY2UgZWxzZSBiY19wYXRoCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yKToKQEAgLTIyNywxNiArMjY2LDE4IEBACiAgICAgZGVmIF90ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIG1hcnNoYWwuZHVtcHMoYidhYmNkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICBmaWxlX3BhdGggPSBtYXBwaW5nWydfdGVtcCddIGlmIG5vdCBkZWxfc291cmNlIGVsc2UgYnl0ZWNvZGVfcGF0aAotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oZmlsZV9wYXRoLCAnX3RlbXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ190ZW1wJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgYic8dGVzdD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgYic8dGVzdD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgZmlsZV9wYXRoID0gbWFwcGluZ1snX3RlbXAnXSBpZiBub3QgZGVsX3NvdXJjZSBlbHNlIGJ5dGVjb2RlX3BhdGgKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgpAQCAtMjUxLDcgKzI5Miw3IEBACiAKIGNsYXNzIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdChCYWRCeXRlY29kZVRlc3QpOgogCi0gICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAKICAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKQEAgLTI2MCw3ICszMDEsNyBAQAogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfZW1wdHlfZmlsZSh0ZXN0KQogCkBAIC0yNjgsNyArMzA5LDcgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCkKIApAQCAtMjc5LDcgKzMyMCw3IEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYnl0ZWNvZGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9tYWdpY19vbmx5KHRlc3QpCiAKQEAgLTMwMSwxMSArMzQyLDIyIEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJjX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYmNfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0KQogCiAgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKKyAgICAgICAgIyBXaGVuIHRoZSBzaXplIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKKyAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KKyAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYmNfcGF0aCk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihiY19wYXRoLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKKworICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfc2l6ZSh0ZXN0KQorCisgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X25vX21hcnNoYWwoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGVyZSBpcyBvbmx5IHRoZSBtYWdpYyBudW1iZXIgYW5kIHRpbWVzdGFtcCwgcmFpc2UgRU9GRXJyb3IuCiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9fbWFyc2hhbCgpCkBAIC0zNjQsMTkgKzQxNiwyMyBAQAogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0KEJhZEJ5dGVjb2RlVGVzdCk6CiAKLSAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcgogCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9lbXB0eV9maWxlKHRlc3QsIGRlbF9zb3VyY2U9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWxfbWFnaWMoc2VsZik6CiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oYnl0ZWNvZGVfcGF0aCwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5wYXRoLCBieXRlY29kZV9wYXRoKQogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfbWFnaWNfb25seShzZWxmKToKQEAgLTM4OCw4ICs0NDQsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9tYWdpYyhzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCkBAIC00MDAsNiArNDU4LDEzIEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3NpemUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisKKyAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3NpemUodGVzdCwgZGVsX3NvdXJjZT1UcnVlKQorCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKGRlbF9zb3VyY2U9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKaW5kZXggN2I5MDg4ZC4uOGJjMTZhNSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKQEAgLTEsMTAgKzEsMTIgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwotaW1wb3J0IG9zCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBlcnJubworaW1wb3J0IGltcAoraW1wb3J0IG9zCiBpbXBvcnQgcHlfY29tcGlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIApAQCAtMzMsMTEgKzM1LDE1IEBACiAKICAgICAiIiIKIAorICAgIGRlZiBnZXRfZmluZGVyKHNlbGYsIHJvb3QpOgorICAgICAgICBsb2FkZXJfZGV0YWlscyA9IFsobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKV0KKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyKHJvb3QsICpsb2FkZXJfZGV0YWlscykKKwogICAgIGRlZiBpbXBvcnRfKHNlbGYsIHJvb3QsIG1vZHVsZSk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKLSAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgIHJldHVybiBzZWxmLmdldF9maW5kZXIocm9vdCkuZmluZF9tb2R1bGUobW9kdWxlKQogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHRlc3QsIGNyZWF0ZT1Ob25lLCAqLCBjb21waWxlXz1Ob25lLCB1bmxpbms9Tm9uZSk6CiAgICAgICAgICIiIlRlc3QgdGhlIGZpbmRpbmcgb2YgJ3Rlc3QnIHdpdGggdGhlIGNyZWF0aW9uIG9mIG1vZHVsZXMgbGlzdGVkIGluCkBAIC0xMDIsMzkgKzEwOCwyMSBAQAogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGxvYWRlciwgJ2xvYWRfbW9kdWxlJykpCiAKLSAgICAjIFtzdWIgZW1wdHldCi0gICAgZGVmIHRlc3RfZW1wdHlfc3ViX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgY29udGV4dCA9IHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG1hcHBpbmdbJ3BrZy5zdWIuX19pbml0X18nXSkKLSAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ3BrZy5fX2luaXRfXyddKQotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0V2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCi0KICAgICAjIFtwYWNrYWdlIG92ZXIgbW9kdWxlc10KICAgICBkZWYgdGVzdF9wYWNrYWdlX292ZXJfbW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ190ZW1wJwogICAgICAgICBsb2FkZXIgPSBzZWxmLnJ1bl90ZXN0KG5hbWUsIHsnezB9Ll9faW5pdF9fJy5mb3JtYXQobmFtZSksIG5hbWV9KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ19faW5pdF9fJyBpbiBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQotCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faW5pdF9fJywgbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKSkKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2JsYWgnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbm90aGluZyA9IHNlbGYuaW1wb3J0XyhtYXBwaW5nWycucm9vdCddLCAnc2Rmc2Fkc2FkZicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90aGluZyBpcyBOb25lKQotCi0gICAgIyBbZW1wdHkgZGlyXQotICAgIGRlZiB0ZXN0X2VtcHR5X2RpcihzZWxmKToKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIEltcG9ydFdhcm5pbmcpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydFdhcm5pbmcpOgotICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoJ3BrZycsIHsncGtnLl9faW5pdF9fJ30sIHVubGluaz17J3BrZy5fX2luaXRfXyd9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobm90aGluZykKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19mb3JfZGlyKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgZnJvbSBzeXMucGF0aCBtZWFucyB0byBzZWFyY2ggaW4gdGhlIGN3ZC4KLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcignJywgX2Jvb3RzdHJhcC5fU291cmNlRmluZGVyRGV0YWlscygpKQorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcignJywgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCiAgICAgICAgIHdpdGggb3BlbignbW9kLnB5JywgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgZmlsZS53cml0ZSgiIyB0ZXN0IGZpbGUgZm9yIGltcG9ydGxpYiIpCiAgICAgICAgIHRyeToKQEAgLTE0Myw2ICsxMzEsMjEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnVubGluaygnbW9kLnB5JykKIAorICAgIGRlZiB0ZXN0X2ludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAjIGludmFsaWRhdGVfY2FjaGVzKCkgc2hvdWxkIHJlc2V0IHRoZSBtdGltZS4KKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIoJycsIChtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQorICAgICAgICBmaW5kZXIuX3BhdGhfbXRpbWUgPSA0MgorICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRlci5fcGF0aF9tdGltZSwgLTEpCisKKyAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE0ODQ2CisgICAgZGVmIHRlc3RfZGlyX3JlbW92YWxfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIG1vZCA9ICdtb2QnCisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobW9kKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgZmluZGVyID0gc2VsZi5nZXRfZmluZGVyKG1hcHBpbmdbJy5yb290J10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kZXIuZmluZF9tb2R1bGUobW9kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmluZGVyLmZpbmRfbW9kdWxlKG1vZCkpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE3ODc5MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpAQCAtMCwwICsxLDMyIEBACitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKKworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IGltcAoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgUGF0aEhvb2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3QgdGhlIHBhdGggaG9vayBmb3Igc291cmNlLiIiIgorCisgICAgZGVmIHBhdGhfaG9vayhzZWxmKToKKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vaygobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KFBhdGhIb29rVGVzdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQppbmRleCA3OTRhM2RmLi4wY2E1MTk1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtMSw2ICsxLDYgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKIAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMzUsOCArMzUsOCBAQAogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKHNlbGYubW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbc2VsZi5tb2R1bGVfbmFtZV0pCisgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSkKICAgICAgICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKIAogICAgIGRlZiBjcmVhdGVfc291cmNlKHNlbGYsIGVuY29kaW5nKToKQEAgLTk3LDcgKzk3LDcgQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW21vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIobW9kdWxlX25hbWUsCisgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIobW9kdWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1ttb2R1bGVfbmFtZV0pCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYWJjLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCAwZWNiZTM5Li5jNjIwYzM3IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTMwLDEwICszMCwxNyBAQAogICAgICAgICAgICAgICAgInswfSBpcyBub3QgYSBzdXBlcmNsYXNzIG9mIHsxfSIuZm9ybWF0KHN1cGVyY2xhc3MsIHNlbGYuX190ZXN0KSkKIAogCi1jbGFzcyBGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgTWV0YVBhdGhGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5GaW5kZXJdCiAgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5QYXRoRmluZGVyXQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuUGF0aEZpbmRlciwgbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlcl0KKworCitjbGFzcyBQYXRoRW50cnlGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5GaW5kZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuRmlsZUZpbmRlcl0KIAogCiBjbGFzcyBMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTAsNyArNTcsNyBAQAogCiAgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5Mb2FkZXJdCiAgICAgc3ViY2xhc3NlcyA9IFthYmMuUHlMb2FkZXIsIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcl0KKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLCBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcl0KIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTksOSArNjYsMTYgQEAKICAgICBzdWJjbGFzc2VzID0gW2FiYy5QeUxvYWRlcl0KIAogCitjbGFzcyBGaWxlTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuUmVzb3VyY2VMb2FkZXIsIGFiYy5FeGVjdXRpb25Mb2FkZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyXQorCisKIGNsYXNzIFNvdXJjZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLlJlc291cmNlTG9hZGVyLCBhYmMuRXhlY3V0aW9uTG9hZGVyXQorICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXJdCiAKIAogY2xhc3MgUHlMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjY2MjlhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTAsMCArMSwxODcgQEAKK2Zyb20gLiBpbXBvcnQgdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBJbXBvcnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlLiIiIgorCisgICAgZGVmIHRlc3RfbW9kdWxlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIHRvcC1sZXZlbCBtb2R1bGUuCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCd0b3BfbGV2ZWwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAndG9wX2xldmVsJykKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZS4KKyAgICAgICAgcGtnX25hbWUgPSAncGtnJworICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB0aHJvdWdoIGEgcmVsYXRpdmUgaW1wb3J0LgorICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCisgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ21vZCcKKyAgICAgICAgYWJzb2x1dGVfbmFtZSA9ICd7MH0uezF9Jy5mb3JtYXQocGtnX25hbWUsIG1vZHVsZV9uYW1lKQorICAgICAgICByZWxhdGl2ZV9uYW1lID0gJy57MH0nLmZvcm1hdChtb2R1bGVfbmFtZSkKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBhYnNvbHV0ZV9uYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShyZWxhdGl2ZV9uYW1lLCBwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgYWJzb2x1dGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X2RlZXBfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6CisgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iLl9faW5pdF9fJywgJ2EuYyddCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhJykKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLi5jJywgJ2EuYicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdhLmMnKQorCisgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB3aXRoIGFuIGFic29sdXRlIG5hbWUgd2l0aAorICAgICAgICAjIHRoZSAncGFja2FnZScgYXJndW1lbnQgZ2l2ZW4uCisgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKKyAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSwgcGtnX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfd29fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBSZWxhdGl2ZSBpbXBvcnRzIGNhbm5vdCBoYXBwZW4gd2l0aG91dCB0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGJlaW5nCisgICAgICAgICMgc2V0LgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLnN1cHBvcnQnKQorCisKKyAgICBkZWYgdGVzdF9sb2FkZWRfb25jZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTM1OTE6IE1vZHVsZXMgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIG9uY2Ugd2hlbgorICAgICAgICAjIGluaXRpYWxpemluZyB0aGUgcGFyZW50IHBhY2thZ2UgYXR0ZW1wdHMgdG8gaW1wb3J0IHRoZQorICAgICAgICAjIG1vZHVsZSBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQuCisgICAgICAgIGJfbG9hZF9jb3VudCA9IDAKKyAgICAgICAgZGVmIGxvYWRfYSgpOgorICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCisgICAgICAgIGRlZiBsb2FkX2IoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGJfbG9hZF9jb3VudAorICAgICAgICAgICAgYl9sb2FkX2NvdW50ICs9IDEKKyAgICAgICAgY29kZSA9IHsnYSc6IGxvYWRfYSwgJ2EuYic6IGxvYWRfYn0KKyAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmInXQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiX2xvYWRfY291bnQsIDEpCisKKworY2xhc3MgRmluZExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOiByZXR1cm4gbmFtZSwgcGF0aAorCisgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXMoc2VsZik6CisgICAgICAgICMgSWYgYSBtb2R1bGUgd2l0aCBfX2xvYWRlcl9fIGlzIGluIHN5cy5tb2R1bGVzLCB0aGVuIHJldHVybiBpdC4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbG9hZGVyID0gJ2EgbG9hZGVyIScKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgZm91bmQgPSBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBmb3VuZCkKKworICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX2xvYWRlcl9pc19Ob25lKHNlbGYpOgorICAgICAgICAjIElmIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18gaXMgTm9uZSwgcmFpc2UgVmFsdWVFcnJvci4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBOb25lCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgICMgUmV0dXJuIHRoZSBsb2FkZXIgZm91bmQgb24gc3lzLm1ldGFfcGF0aC4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKG5hbWUsIE5vbmUpLCBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzX3BhdGgoc2VsZik6CisgICAgICAgICMgU2VhcmNoaW5nIG9uIGEgcGF0aCBzaG91bGQgd29yay4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgcGF0aCA9ICdwYXRoIHRvIHNvbWUgcGxhY2UnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5maW5kX2xvYWRlcihuYW1lLCBwYXRoKSkKKworICAgIGRlZiB0ZXN0X25vdGhpbmcoc2VsZik6CisgICAgICAgICMgTm9uZSBpcyByZXR1cm5lZCB1cG9uIGZhaWx1cmUgdG8gZmluZCBhIGxvYWRlci4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0bGliLmZpbmRfbG9hZGVyKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQorCisKK2NsYXNzIEludmFsaWRhdGVDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsZWQoc2VsZik6CisgICAgICAgICMgSWYgZGVmaW5lZCB0aGUgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQuCisgICAgICAgIGNsYXNzIEludmFsaWRhdGluZ051bGxGaW5kZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmlnbm9yZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IFRydWUKKworICAgICAgICBrZXkgPSAnZ29ibGVkZWVnb29rJworICAgICAgICBtZXRhX2lucyA9IEludmFsaWRhdGluZ051bGxGaW5kZXIoKQorICAgICAgICBwYXRoX2lucyA9IEludmFsaWRhdGluZ051bGxGaW5kZXIoKQorICAgICAgICBzeXMubWV0YV9wYXRoLmluc2VydCgwLCBtZXRhX2lucykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxhbWJkYTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuX19kZWxpdGVtX18oa2V5KSkKKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVba2V5XSA9IHBhdGhfaW5zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5tZXRhX3BhdGgucmVtb3ZlKG1ldGFfaW5zKSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGFfaW5zLmNhbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGhfaW5zLmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X21ldGhvZF9sYWNraW5nKHNlbGYpOgorICAgICAgICAjIFRoZXJlIHNob3VsZCBiZSBubyBpc3N1ZXMgaWYgdGhlIG1ldGhvZCBpcyBub3QgZGVmaW5lZC4KKyAgICAgICAga2V5ID0gJ2dvYmJsZWRlZWdvb2snCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2tleV0gPSBpbXAuTnVsbEltcG9ydGVyKCdhYmMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5fX2RlbGl0ZW1fXyhrZXkpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSAgIyBTaG91bGRuJ3QgdHJpZ2dlciBhbiBleGNlcHRpb24uCisKKworY2xhc3MgRnJvemVuSW1wb3J0bGliVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fZnJvemVuX2ltcG9ydGxpYihzZWxmKToKKyAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byBpbXBvcnQgdy9vIF9mcm96ZW5faW1wb3J0bGliIGJlaW5nIGRlZmluZWQuCisgICAgICAgIG1vZHVsZSA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnaW1wb3J0bGliJywgYmxvY2tlZD1bJ19mcm96ZW5faW1wb3J0bGliJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoSW1wb3J0TW9kdWxlVGVzdHMsCisgICAgICAgICAgICAgICAgIEZpbmRMb2FkZXJUZXN0cywKKyAgICAgICAgICAgICAgICAgSW52YWxpZGF0ZUNhY2hlVGVzdHMsCisgICAgICAgICAgICAgICAgIEZyb3plbkltcG9ydGxpYlRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNzNiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CkBAIC0wLDAgKzEsMTI5IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorZWxzZToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IGxvY2tfdGVzdHMKKworCitMb2NrVHlwZSA9IF9ib290c3RyYXAuX01vZHVsZUxvY2sKK0RlYWRsb2NrRXJyb3IgPSBfYm9vdHN0cmFwLl9EZWFkbG9ja0Vycm9yCisKKworaWYgdGhyZWFkaW5nIGlzIG5vdCBOb25lOgorICAgIGNsYXNzIE1vZHVsZUxvY2tBc1JMb2NrVGVzdHMobG9ja190ZXN0cy5STG9ja1Rlc3RzKToKKyAgICAgICAgbG9ja3R5cGUgPSBzdGF0aWNtZXRob2QobGFtYmRhOiBMb2NrVHlwZSgic29tZV9sb2NrIikpCisKKyAgICAgICAgIyBfaXNfb3duZWQoKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X19pc19vd25lZCA9IE5vbmUKKyAgICAgICAgIyBhY3F1aXJlKGJsb2NraW5nPUZhbHNlKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3RyeV9hY3F1aXJlID0gTm9uZQorICAgICAgICB0ZXN0X3RyeV9hY3F1aXJlX2NvbnRlbmRlZCA9IE5vbmUKKyAgICAgICAgIyBgd2l0aGAgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF93aXRoID0gTm9uZQorICAgICAgICAjIGFjcXVpcmUodGltZW91dD0uLi4pIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3RfdGltZW91dCA9IE5vbmUKKyAgICAgICAgIyBfcmVsZWFzZV9zYXZlKCkgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF9yZWxlYXNlX3NhdmVfdW5hY3F1aXJlZCA9IE5vbmUKKworZWxzZToKKyAgICBjbGFzcyBNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgcGFzcworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgInRocmVhZHMgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorY2xhc3MgRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gc3lzLmdldHN3aXRjaGludGVydmFsKCkKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBOb25lCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYub2xkX3N3aXRjaGludGVydmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKHNlbGYub2xkX3N3aXRjaGludGVydmFsKQorCisgICAgZGVmIHJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChzZWxmLCBjcmVhdGVfZGVhZGxvY2spOgorICAgICAgICBOTE9DS1MgPSAxMAorICAgICAgICBsb2NrcyA9IFtMb2NrVHlwZShzdHIoaSkpIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgIHBhaXJzID0gWyhsb2Nrc1tpXSwgbG9ja3NbKGkrMSklTkxPQ0tTXSkgZm9yIGkgaW4gcmFuZ2UoTkxPQ0tTKV0KKyAgICAgICAgaWYgY3JlYXRlX2RlYWRsb2NrOgorICAgICAgICAgICAgTlRIUkVBRFMgPSBOTE9DS1MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTIC0gMQorICAgICAgICBiYXJyaWVyID0gdGhyZWFkaW5nLkJhcnJpZXIoTlRIUkVBRFMpCisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBkZWYgX2FjcXVpcmUobG9jayk6CisgICAgICAgICAgICAiIiJUcnkgdG8gYWNxdWlyZSB0aGUgbG9jay4gUmV0dXJuIFRydWUgb24gc3VjY2VzcywgRmFsc2Ugb24gZGVhZGxvY2suIiIiCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBEZWFkbG9ja0Vycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgYSwgYiA9IHBhaXJzLnBvcCgpCisgICAgICAgICAgICByYSA9IF9hY3F1aXJlKGEpCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmIgPSBfYWNxdWlyZShiKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHJhLCByYikpCisgICAgICAgICAgICBpZiByYjoKKyAgICAgICAgICAgICAgICBiLnJlbGVhc2UoKQorICAgICAgICAgICAgaWYgcmE6CisgICAgICAgICAgICAgICAgYS5yZWxlYXNlKCkKKyAgICAgICAgbG9ja190ZXN0cy5CdW5jaChmLCBOVEhSRUFEUykud2FpdF9mb3JfZmluaXNoZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgTlRIUkVBRFMpCisgICAgICAgIHJldHVybiByZXN1bHRzCisKKyAgICBkZWYgdGVzdF9kZWFkbG9jayhzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KFRydWUpCisgICAgICAgICMgQXQgbGVhc3Qgb25lIG9mIHRoZSB0aHJlYWRzIGRldGVjdGVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIG9uIGl0cworICAgICAgICAjIHNlY29uZCBhY3F1aXJlKCkgY2FsbC4gIEl0IG1heSBiZSBzZXZlcmFsIG9mIHRoZW0sIGJlY2F1c2UgdGhlCisgICAgICAgICMgZGVhZGxvY2sgYXZvaWRhbmNlIG1lY2hhbmlzbSBpcyBjb25zZXJ2YXRpdmUuCisgICAgICAgIG5iX2RlYWRsb2NrcyA9IHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobmJfZGVhZGxvY2tzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpIC0gbmJfZGVhZGxvY2tzKQorCisgICAgZGVmIHRlc3Rfbm9fZGVhZGxvY2soc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpKQorCisKK2NsYXNzIExpZmV0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbG9ja19saWZldGltZShzZWxmKToKKyAgICAgICAgbmFtZSA9ICJ4eXp6eSIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIGxvY2sgPSBfYm9vdHN0cmFwLl9nZXRfbW9kdWxlX2xvY2sobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobG9jaykKKyAgICAgICAgZGVsIGxvY2sKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyKCkpCisKKyAgICBkZWYgdGVzdF9hbGxfbG9ja3Moc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKF9ib290c3RyYXAuX21vZHVsZV9sb2NrcyksIF9ib290c3RyYXAuX21vZHVsZV9sb2NrcykKKworCitAc3VwcG9ydC5yZWFwX3RocmVhZHMKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlYWRsb2NrQXZvaWRhbmNlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTGlmZXRpbWVUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjODk3NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpAQCAtMCwwICsxLDIwOCBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgTW9kdWxlRm9yTG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyLiIiIgorCisgICAgZGVmIHJldHVybl9tb2R1bGUoc2VsZiwgbmFtZSk6CisgICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIobGFtYmRhIHNlbGYsIG1vZHVsZTogbW9kdWxlKQorICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG5hbWUpCisKKyAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBkZWYgdG9fd3JhcChzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKyAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcih0b193cmFwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmeG4oc2VsZiwgbmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbmV3X21vZHVsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2hlbiBubyBtb2R1bGUgZXhpc3RzIGluIHN5cy5tb2R1bGVzIGEgbmV3IG1vZHVsZSBpcworICAgICAgICAjIGNyZWF0ZWQuCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ2EuYi5jJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG1vZHVsZV9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlX25hbWUpCisKKyAgICBkZWYgdGVzdF9yZWxvYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJldXNlZCBpZiBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLgorICAgICAgICBuYW1lID0gJ2EuYi5jJworICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR1cm5lZF9tb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQorCisgICAgZGVmIHRlc3RfbmV3X21vZHVsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCisgICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgICAgICAgbmFtZSA9ICdhLmIuYycKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfcmVsb2FkX2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZmFpbHVyZSBvbiByZWxvYWQgbGVhdmVzIHRoZSBtb2R1bGUgaW4tcGxhY2UuCisgICAgICAgIG5hbWUgPSAnYS5iLmMnCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKKworICAgIGRlZiB0ZXN0X2RlY29yYXRvcl9hdHRycyhzZWxmKToKKyAgICAgICAgZGVmIGZ4bihzZWxmLCBtb2R1bGUpOiBwYXNzCisgICAgICAgIHdyYXBwZWQgPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKGZ4bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fbmFtZV9fLCBmeG4uX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX3F1YWxuYW1lX18sIGZ4bi5fX3F1YWxuYW1lX18pCisKKyAgICBkZWYgdGVzdF9mYWxzZV9tb2R1bGUoc2VsZik6CisgICAgICAgICMgSWYgZm9yIHNvbWUgb2RkIHJlYXNvbiBhIG1vZHVsZSBpcyBjb25zaWRlcmVkIGZhbHNlLCBzdGlsbCByZXR1cm4gaXQKKyAgICAgICAgIyBmcm9tIHN5cy5tb2R1bGVzLgorICAgICAgICBjbGFzcyBGYWxzZU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKKyAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmV0dXJuIEZhbHNlCisKKyAgICAgICAgbmFtZSA9ICdtb2QnCisgICAgICAgIG1vZHVsZSA9IEZhbHNlTW9kdWxlKG5hbWUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZSkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICBnaXZlbiA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnaXZlbiwgbW9kdWxlKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc19zZXQoc2VsZik6CisgICAgICAgICMgX19uYW1lX18sIF9fbG9hZGVyX18sIGFuZCBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0ICh3aGVuCisgICAgICAgICMgaXNfcGFja2FnZSgpIGlzIGRlZmluZWQ7IHVuZGVmaW5lZCBpbXBsaWNpdGx5IHRlc3RlZCBlbHNld2hlcmUpLgorICAgICAgICBjbGFzcyBGYWtlTG9hZGVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlzX3BhY2thZ2UpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BrZyA9IGlzX3BhY2thZ2UKKyAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wa2cKKyAgICAgICAgICAgIEB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyCisgICAgICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICAgICAgbmFtZSA9ICdwa2cubW9kJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihGYWxzZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgJ3BrZycpCisKKyAgICAgICAgbmFtZSA9ICdwa2cuc3ViJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihUcnVlKQorICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIGxvYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBuYW1lKQorCisKK2NsYXNzIFNldFBhY2thZ2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwuc2V0X3BhY2thZ2UuIiIiCisKKyAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSwgZXhwZWN0KToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBtb2R1bGUgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgX19wYWNrYWdlX18gYWZ0ZXIKKyAgICAgICAgcGFzc2luZyB0aHJvdWdoIHNldF9wYWNrYWdlLiIiIgorICAgICAgICBmeG4gPSBsYW1iZGE6IG1vZHVsZQorICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCisgICAgICAgIHdyYXBwZWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgbW9kdWxlLl9fcGFja2FnZV9fKQorCisgICAgZGVmIHRlc3RfdG9wX2xldmVsKHNlbGYpOgorICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBhIHRvcC1sZXZlbCBtb2R1bGUuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB3aGVuIHBhY2thZ2UgaXMgc2V0IHRvIE5vbmUuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2R1bGUnKQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJycpCisKKyAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc2V0dGluZyBfX3BhY2thZ2VfXyBmb3IgYSBwYWNrYWdlLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnJykKKyAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gWyc8cGF0aD4nXQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgICMgVGVzdCBfX3BhY2thZ2VfXyBmb3IgYSBtb2R1bGUgaW4gYSBwYWNrYWdlLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnLm1vZCcpCisgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfaWZfbWlzc2luZyhzZWxmKToKKyAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IGlmIGl0IGlzIG1pc3NpbmcuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJyk6CisgICAgICAgICAgICBkZWxhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKKworICAgIGRlZiB0ZXN0X2xlYXZpbmdfYWxvbmUoc2VsZik6CisgICAgICAgICMgSWYgX19wYWNrYWdlX18gaXMgc2V0IGFuZCBub3QgTm9uZSB0aGVuIGxlYXZlIGl0IGFsb25lLgorICAgICAgICBmb3IgdmFsdWUgaW4gKFRydWUsIEZhbHNlKToKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQorICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gdmFsdWUKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgdmFsdWUpCisKKyAgICBkZWYgdGVzdF9kZWNvcmF0b3JfYXR0cnMoc2VsZik6CisgICAgICAgIGRlZiBmeG4obW9kdWxlKTogcGFzcworICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQorCisKK2NsYXNzIFJlc29sdmVOYW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCkuIiIiCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZShzZWxmKToKKyAgICAgICAgIyBiYWNvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYWNvbicsIHV0aWwucmVzb2x2ZV9uYW1lKCdiYWNvbicsIE5vbmUpKQorCisgICAgZGVmIHRlc3RfYWJvc2x1dGVfd2l0aGluX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgYmFjb24gaW4gc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYWNvbicsIHV0aWwucmVzb2x2ZV9uYW1lKCdiYWNvbicsICdzcGFtJykpCisKKyAgICBkZWYgdGVzdF9ub19wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIC5iYWNvbiBpbiAnJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5yZXNvbHZlX25hbWUoJy5iYWNvbicsICcnKQorCisgICAgZGVmIHRlc3RfaW5fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyAuYmFjb24gaW4gc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzcGFtLmVnZ3MuYmFjb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuYmFjb24nLCAnc3BhbS5lZ2dzJykpCisKKyAgICBkZWYgdGVzdF9vdGhlcl9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIC4uYmFjb24gaW4gc3BhbS5iYWNvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzcGFtLmJhY29uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLi5iYWNvbicsICdzcGFtLmVnZ3MnKSkKKworICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKKyAgICAgICAgIyAuLmJhY29uIGluIHNwYW0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuLmJhY29uJywgJ3NwYW0nKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgICAgIE1vZHVsZUZvckxvYWRlclRlc3RzLAorICAgICAgICAgICAgU2V0UGFja2FnZVRlc3RzLAorICAgICAgICAgICAgUmVzb2x2ZU5hbWVUZXN0cworICAgICAgICApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IDkzYjdjZDIuLmVmMzJmN2QgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKQEAgLTM1LDcgKzM1LDcgQEAKICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgaWYgbmFtZSBpbiAoJ3N5cycsICdtYXJzaGFsJywgJ2ltcCcpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAiY2Fubm90IHVuY2FjaGUgezB9IGFzIGl0IHdpbGwgYnJlYWsgX2ltcG9ydGxpYiIuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgICAgICJjYW5ub3QgdW5jYWNoZSB7MH0iLmZvcm1hdChuYW1lKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTEyNCw3ICsxMjQsMTEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXSA9IHNlbGYubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIGlmIGZ1bGxuYW1lIGluIHNlbGYubW9kdWxlX2NvZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVfY29kZVtmdWxsbmFtZV0oKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVfY29kZVtmdWxsbmFtZV0oKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZXNbZnVsbG5hbWVdCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CmluZGV4IDRiN2VlNGUuLjgwZGIwM2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKQEAgLTQxLDExICs0MSw2IEBACiAKIGltcG9ydCBidWlsdGlucwogCi10cnk6Ci0gICAgMS8wCi1leGNlcHQ6Ci0gICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQotCiBnaXQgPSBtb2QuU3R1cGlkR2l0KCkKIAogY2xhc3MgSXNUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OSwyMyArNzQsMzEgQEAKIAogCiAgICAgZGVmIHRlc3RfZXhjbHVkaW5nX3ByZWRpY2F0ZXMoc2VsZik6CisgICAgICAgIGdsb2JhbCB0YgogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYnVpbHRpbiwgJ3N5cy5leGl0JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2J1aWx0aW4sICdbXS5hcHBlbmQnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzY29kZSwgJ21vZC5zcGFtLl9fY29kZV9fJykKLSAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2ZyYW1lLCAndGIudGJfZnJhbWUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2ZyYW1lLCAndGIudGJfZnJhbWUnKQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc3RyYWNlYmFjaywgJ3RiJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdHZXRTZXREZXNjcmlwdG9yVHlwZScpOgorICAgICAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IodHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBDbGVhciB0cmFjZWJhY2sgYW5kIGFsbCB0aGUgZnJhbWVzIGFuZCBsb2NhbCB2YXJpYWJsZXMgaGFuZ2luZyB0byBpdC4KKyAgICAgICAgICAgIHRiID0gTm9uZQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZnVuY3Rpb24sICdtb2Quc3BhbScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmdW5jdGlvbiwgJ21vZC5TdHVwaWRHaXQuYWJ1c2UnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzbWV0aG9kLCAnZ2l0LmFyZ3VlJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21vZHVsZSwgJ21vZCcpCi0gICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXN0cmFjZWJhY2ssICd0YicpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvciwgJ2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3IsICcoeCBmb3IgeCBpbiByYW5nZSgyKSknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sICdnZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCi0gICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdHZXRTZXREZXNjcmlwdG9yVHlwZScpOgotICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzZ2V0c2V0ZGVzY3JpcHRvcih0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscykpCiAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdNZW1iZXJEZXNjcmlwdG9yVHlwZScpOgogICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21lbWJlcmRlc2NyaXB0b3IsICdkYXRldGltZS50aW1lZGVsdGEuZGF5cycpCiAgICAgICAgIGVsc2U6CkBAIC0yODIsNyArMjg1LDEwIEBACiAgICAgICAgIGNvID0gY29tcGlsZSgiTm9uZSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1jYXNlKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbykpLCBmbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoY28pKSwgZm4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXQogCiAgICAgZGVmIHRlc3RfZ2V0ZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGZpbGUobW9kLlN0dXBpZEdpdCksIG1vZC5fX2ZpbGVfXykKQEAgLTMwNCw3ICszMTAsNyBAQAogICAgICAgICBnZXRsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcwogICAgICAgICBkZWYgbW9ua2V5KGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKICAgICAgICAgICAgIGlmIGZpbGVuYW1lID09IGZuOgotICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0bGluZXMoZmlsZW5hbWUsIG1vZHVsZV9nbG9iYWxzKQogICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMgPSBtb25rZXkKQEAgLTQwNCw4ICs0MTAsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5maW5kc291cmNlLCBjbykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5nZXRzb3VyY2UsIGNvKQogICAgICAgICBsaW5lY2FjaGUuY2FjaGVbY28uY29fZmlsZW5hbWVdID0gKDEsIE5vbmUsIGxpbmVzLCBjby5jb19maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmZpbmRzb3VyY2UoY28pLCAobGluZXMsMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2UoY28pLCBsaW5lc1swXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmZpbmRzb3VyY2UoY28pLCAobGluZXMsMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlKGNvKSwgbGluZXNbMF0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXQogCiBjbGFzcyBUZXN0Tm9FT0woR2V0U291cmNlQmFzZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CkBAIC02NjIsNiArNjcxLDEyOSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCgnZicsIGIuZiksIGluc3BlY3QuZ2V0bWVtYmVycyhiLCBpbnNwZWN0LmlzbWV0aG9kKSkKIAogCitfZ2xvYmFsX3JlZiA9IG9iamVjdCgpCitjbGFzcyBUZXN0R2V0Q2xvc3VyZVZhcnModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbmFtZV9yZXNvbHV0aW9uKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3Qgb2YgdGhlIDQgZGlmZmVyZW50IHJlc29sdXRpb24gbWVjaGFuaXNtcworICAgICAgICBkZWYgZihub25sb2NhbF9yZWYpOgorICAgICAgICAgICAgZGVmIGcobG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgcmV0dXJuIGcKKyAgICAgICAgX2FyZyA9IG9iamVjdCgpCisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7Im5vbmxvY2FsX3JlZiI6IF9hcmd9CisgICAgICAgIGdsb2JhbF92YXJzID0geyJfZ2xvYmFsX3JlZiI6IF9nbG9iYWxfcmVmfQorICAgICAgICBidWlsdGluX3ZhcnMgPSB7InByaW50IjogcHJpbnR9CisgICAgICAgIHVuYm91bmRfbmFtZXMgPSB7InVuYm91bmRfcmVmIn0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKG5vbmxvY2FsX3ZhcnMsIGdsb2JhbF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzLCB1bmJvdW5kX25hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZihfYXJnKSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yX2Nsb3N1cmUoc2VsZik6CisgICAgICAgIGRlZiBmKG5vbmxvY2FsX3JlZik6CisgICAgICAgICAgICBkZWYgZyhsb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgIHByaW50KGxvY2FsX3JlZiwgbm9ubG9jYWxfcmVmLCBfZ2xvYmFsX3JlZiwgdW5ib3VuZF9yZWYpCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYoX2FyZykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jbG9zdXJlKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGYoc2VsZiwgbm9ubG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBkZWYgZyhsb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKEMoKS5mKF9hcmcpKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9ub25sb2NhbF92YXJzKHNlbGYpOgorICAgICAgICAjIE1vcmUgY29tcGxleCB0ZXN0cyBvZiBub25sb2NhbCByZXNvbHV0aW9uCisgICAgICAgIGRlZiBfbm9ubG9jYWxfdmFycyhmKToKKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLm5vbmxvY2FscworCisgICAgICAgIGRlZiBtYWtlX2FkZGVyKHgpOgorICAgICAgICAgICAgZGVmIGFkZCh5KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCArIHkKKyAgICAgICAgICAgIHJldHVybiBhZGQKKworICAgICAgICBkZWYgY3VycnkoZnVuYywgYXJnMSk6CisgICAgICAgICAgICByZXR1cm4gbGFtYmRhIGFyZzI6IGZ1bmMoYXJnMSwgYXJnMikKKworICAgICAgICBkZWYgbGVzc190aGFuKGEsIGIpOgorICAgICAgICAgICAgcmV0dXJuIGEgPCBiCisKKyAgICAgICAgIyBUaGUgaW5mYW1vdXMgWSBjb21iaW5hdG9yLgorICAgICAgICBkZWYgWShsZSk6CisgICAgICAgICAgICBkZWYgZyhmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGUobGFtYmRhIHg6IGYoZikoeCkpCisgICAgICAgICAgICBZLmdfcmVmID0gZworICAgICAgICAgICAgcmV0dXJuIGcoZykKKworICAgICAgICBkZWYgY2hlY2tfeV9jb21iaW5hdG9yKGZ1bmMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhmdW5jKSwgeydmJzogWS5nX3JlZn0pCisKKyAgICAgICAgaW5jID0gbWFrZV9hZGRlcigxKQorICAgICAgICBhZGRfdHdvID0gbWFrZV9hZGRlcigyKQorICAgICAgICBncmVhdGVyX3RoYW5fZml2ZSA9IGN1cnJ5KGxlc3NfdGhhbiwgNSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGluYyksIHsneCc6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGFkZF90d28pLCB7J3gnOiAyfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhncmVhdGVyX3RoYW5fZml2ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhcmcxJzogNSwgJ2Z1bmMnOiBsZXNzX3RoYW59KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKChsYW1iZGEgeDogbGFtYmRhIHk6IHggKyB5KSgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeyd4JzogM30pCisgICAgICAgIFkoY2hlY2tfeV9jb21iaW5hdG9yKQorCisgICAgZGVmIHRlc3RfZ2V0Y2xvc3VyZXZhcnNfZW1wdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBfZW1wdHkgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwge30sIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMobGFtYmRhOiBUcnVlKSwgX2VtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZm9vKSwgX2VtcHR5KQorCisgICAgZGVmIHRlc3RfZ2V0Y2xvc3VyZXZhcnNfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIFQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRjbG9zdXJldmFycywge30pCisKKyAgICBkZWYgX3ByaXZhdGVfZ2xvYmFscyhzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImRlZiBmKCk6IHByaW50KHBhdGgpIiIiCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgcmV0dXJuIG5zWyJmIl0sIG5zCisKKyAgICBkZWYgdGVzdF9idWlsdGluc19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgZiwgbnMgPSBzZWxmLl9wcml2YXRlX2dsb2JhbHMoKQorICAgICAgICBucy5wb3AoIl9fYnVpbHRpbnNfXyIsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicHJpbnQiOnByaW50fSwgeyJwYXRoIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9idWlsdGluc19hc19kaWN0KHNlbGYpOgorICAgICAgICBmLCBucyA9IHNlbGYuX3ByaXZhdGVfZ2xvYmFscygpCisgICAgICAgIG5zWyJfX2J1aWx0aW5zX18iXSA9IHsicGF0aCI6MX0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwgeyJwYXRoIjoxfSwgeyJwcmludCJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfYnVpbHRpbnNfYXNfbW9kdWxlKHNlbGYpOgorICAgICAgICBmLCBucyA9IHNlbGYuX3ByaXZhdGVfZ2xvYmFscygpCisgICAgICAgIG5zWyJfX2J1aWx0aW5zX18iXSA9IG9zCisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicGF0aCI6b3MucGF0aH0sIHsicHJpbnQifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0R2V0Y2FsbGFyZ3NGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGFzc2VydEVxdWFsQ2FsbEFyZ3Moc2VsZiwgZnVuYywgY2FsbF9wYXJhbXNfc3RyaW5nLCBsb2NzPU5vbmUpOgpAQCAtMTE2OSw2ICsxMzAxLDk3MiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCByZXByKHN0YXRlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc3RyKHN0YXRlKSkKIAorICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2FscyhzZWxmKToKKyAgICAgICAgZGVmIGVhY2gobHN0LCBhPU5vbmUpOgorICAgICAgICAgICAgYj0oMSwgMiwgMykKKyAgICAgICAgICAgIGZvciB2IGluIGxzdDoKKyAgICAgICAgICAgICAgICBpZiB2ID09IDM6CisgICAgICAgICAgICAgICAgICAgIGMgPSAxMgorICAgICAgICAgICAgICAgIHlpZWxkIHYKKworICAgICAgICBudW1iZXJzID0gZWFjaChbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXX0pCisgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBOb25lLCAnbHN0JzogWzEsIDIsIDNdLCAndic6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdiJzogKDEsIDIsIDMpfSkKKyAgICAgICAgbmV4dChudW1iZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM10sICd2JzogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2InOiAoMSwgMiwgMyl9KQorICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXSwgJ3YnOiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYic6ICgxLCAyLCAzKSwgJ2MnOiAxMn0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksIHt9KQorCisgICAgZGVmIHRlc3RfZ2V0Z2VuZXJhdG9ybG9jYWxzX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgeWllbGRfb25lKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgIG9uZSA9IHlpZWxkX29uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMob25lKSwge30pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQob25lKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhvbmUpLCB7fSkKKworICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2Fsc19lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgbGFtYmRhIHg6IFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsIHNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgKDIsMykpCisKKworY2xhc3MgVGVzdFNpZ25hdHVyZU9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzaWduYXR1cmUoZnVuYyk6CisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpCisgICAgICAgIHJldHVybiAodHVwbGUoKHBhcmFtLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICguLi4gaWYgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSBlbHNlIHBhcmFtLmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmFubm90YXRpb24gaXMgcGFyYW0uZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBwYXJhbS5hbm5vdGF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBhcmFtLmtpbmQpLmxvd2VyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpLAorICAgICAgICAgICAgICAgICguLi4gaWYgc2lnLnJldHVybl9hbm5vdGF0aW9uIGlzIHNpZy5lbXB0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNpZy5yZXR1cm5fYW5ub3RhdGlvbikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb2JqZWN0KHNlbGYpOgorICAgICAgICBTID0gaW5zcGVjdC5TaWduYXR1cmUKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUygpKSwgJygpJykKKworICAgICAgICBkZWYgdGVzdChwbywgcGssICphcmdzLCBrbywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBwbyA9IHNpZy5wYXJhbWV0ZXJzWydwbyddLnJlcGxhY2Uoa2luZD1QLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgcGsgPSBzaWcucGFyYW1ldGVyc1sncGsnXQorICAgICAgICBhcmdzID0gc2lnLnBhcmFtZXRlcnNbJ2FyZ3MnXQorICAgICAgICBrbyA9IHNpZy5wYXJhbWV0ZXJzWydrbyddCisgICAgICAgIGt3YXJncyA9IHNpZy5wYXJhbWV0ZXJzWydrd2FyZ3MnXQorCisgICAgICAgIFMoKHBvLCBwaywgYXJncywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBrLCBwbywgYXJncywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBvLCBhcmdzLCBwaywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKGFyZ3MsIHBvLCBwaywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBvLCBwaywgYXJncywga3dhcmdzLCBrbykpCisKKyAgICAgICAga3dhcmdzMiA9IGt3YXJncy5yZXBsYWNlKG5hbWU9J2FyZ3MnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2R1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgUygocG8sIHBrLCBhcmdzLCBrd2FyZ3MyLCBrbykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfaW1tdXRhYmlsaXR5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHNpZy5mb28gPSAnYmFyJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNpZy5wYXJhbWV0ZXJzWydhJ10gPSBOb25lCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbm9hcmcoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUodGVzdCksICgoKSwgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl93YXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYjonZm9vJykgLT4gMTIzOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgJ2ZvbycsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fd2t3b25seShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKiwgYTpmbG9hdCwgYjpzdHIpIC0+IGludDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgZmxvYXQsICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgc3RyLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jb21wbGV4X2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGI6J2Zvbyc9MTAsICphcmdzOidiYXInLCBzcGFtOidiYXonLCBoYW09MTIzLCAqKmt3YXJnczppbnQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDEwLCAnZm9vJywgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmdzJywgLi4uLCAnYmFyJywgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3NwYW0nLCAuLi4sICdiYXonLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hhbScsIDEyMywgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgaW50LCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUodHlwZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgIyBzdXBwb3J0IGZvciAnd3JhcHBlcl9kZXNjcmlwdG9yJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUodHlwZS5fX2NhbGxfXykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgIyBzdXBwb3J0IGZvciAnbWV0aG9kLXdyYXBwZXInCisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShtaW4uX19jYWxsX18pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gZnVuY3Rpb24nKToKKyAgICAgICAgICAgICMgc3VwcG9ydCBmb3IgJ21ldGhvZC13cmFwcGVyJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUobWluKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX25vbl9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoNDIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicpOgorICAgICAgICAgICAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbig0MikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9tZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Q6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIGFyZzEsIGFyZzI9MSkgLT4gaW50OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtZXRoID0gVGVzdCgpLmZvbworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NsYXNzbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0OgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKGNscywgYXJnMSwgKiwgYXJnMj0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0aCA9IFRlc3QoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJnMScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZzInLCAxLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgbWV0aCA9IFRlc3QuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3N0YXRpY21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdDoKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzLCAqLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtZXRoID0gVGVzdCgpLmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdjbHMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBtZXRoID0gVGVzdC5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnY2xzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fcGFydGlhbChzZWxmKToKKyAgICAgICAgZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0KSksICgoKSwgLi4uKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiaGFzIGluY29ycmVjdCBhcmd1bWVudHMiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYT0xKSkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCAqLCBjLCBkKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIDIsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGI9MSwgYz0yKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAwLCBiPTEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBkZWYgdGVzdChhLCAqYXJncywgYiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCAyLCAzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIDIsIDMsIHRlc3Q9VHJ1ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSwgMiwgMywgdGVzdD0xLCBiPTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDAsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCBiPTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYj0wLCB0ZXN0PTEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCBjOmludCkgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2lnID0gdGVzdC5fX3NpZ25hdHVyZV9fID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwocGFydGlhbCh0ZXN0LCAxKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIC4uLiwgaW50LCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA0MikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSksIDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYycsIC4uLiwgaW50LCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNDIpKQorCisgICAgICAgIHBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSksIDIpKQorCisgICAgICAgIGRlZiBmb28oYSk6CisgICAgICAgICAgICByZXR1cm4gYQorICAgICAgICBfZm9vID0gcGFydGlhbChwYXJ0aWFsKGZvbywgYT0xMCksIGE9MjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoX2ZvbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAyMCwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKyAgICAgICAgIyBjaGVjayB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHNpZGUtZWZmZWN0cyBpbiBzaWduYXR1cmUoKSwKKyAgICAgICAgIyBhbmQgdGhlIHBhcnRpYWwgb2JqZWN0IGlzIHN0aWxsIGZ1bmN0aW9uaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygpLCAyMCkKKworICAgICAgICBkZWYgZm9vKGEsIGIsIGMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwocGFydGlhbChmb28sIDEsIGI9MjApLCBiPTMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKF9mb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgMzAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbyhjPTEwKSwgKDEsIDMwLCAxMCkpCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKF9mb28sIDIpICMgbm93ICdiJyBoYXMgdHdvIHZhbHVlcyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKQorCisgICAgICAgIGRlZiBmb28oYSwgYiwgYywgKiwgZCk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywgZAorICAgICAgICBfZm9vID0gcGFydGlhbChwYXJ0aWFsKGZvbywgZD0yMCwgYz0yMCksIGI9MTAsIGQ9MzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoX2ZvbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMTAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMjAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgMzAsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKGE9MjAwLCBiPTExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDIwMCwgMTEsIDIwLCAzMCkpCisKKyAgICAgICAgZGVmIGZvbyhhPTEsIGI9MiwgYz0zKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKGZvbywgYT0xMCwgYz0xMykKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKDExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDExLCAyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSwgMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTEsIDEyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSwgYj0xMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMSwgMTIsIDEzKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKGI9MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTAsIDEyLCAxMykpCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKF9mb28sIGI9MTApCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMiwgMTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTIsIDE0LCAxMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fZGVjb3JhdGVkKHNlbGYpOgorICAgICAgICBpbXBvcnQgZnVuY3Rvb2xzCisKKyAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncykgLT4gaW50OgorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyCisKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgQGRlY29yYXRvcgorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28uYmFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnc2VsZicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28oKS5iYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIGhhbmRsZSBtZXRob2Qgd3JhcHBlcnMgY29ycmVjdGx5CisgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpIC0+IGludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYyg0MiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICAgICAgICAgIG5ld19wYXJhbXMgPSB0dXBsZShzaWcucGFyYW1ldGVycy52YWx1ZXMoKSlbMTpdCisgICAgICAgICAgICB3cmFwcGVyLl9fc2lnbmF0dXJlX18gPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcgorCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIEBkZWNvcmF0b3IKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28uX19jYWxsX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkuX19jYWxsX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKGNscywgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgQ00odHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBmb289MSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZvbycsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTU0odHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBmb289MSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKGNscywgbm0sIGJzLCBkdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUobm0sIGJzLCBkdCkKKyAgICAgICAgY2xhc3MgQ00odHlwZSwgbWV0YWNsYXNzPUNNTSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBiYXI9Mik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ01NKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnbmFtZScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jhc2VzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZGN0JywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9vJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ00pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdubScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZHQnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgYmFyPTIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBkY3QpCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUNNKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JhcicsIDIsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jYWxsYWJsZV9vYmplY3RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKFNwYW0oKSkKKworICAgICAgICBjbGFzcyBCYXIoU3BhbSwgRm9vKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEJhcigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBUb0ZhaWw6CisgICAgICAgICAgICBfX2NhbGxfXyA9IHR5cGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZSIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoVG9GYWlsKCkpCisKKworICAgICAgICBjbGFzcyBXcmFwcGVkOgorICAgICAgICAgICAgcGFzcworICAgICAgICBXcmFwcGVkLl9fd3JhcHBlZF9fID0gbGFtYmRhIGE6IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShXcmFwcGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9sYW1iZGFzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKChsYW1iZGEgYT0xMDogYSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgMTAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSwgKiwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgNDIpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGludDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQ9NDIpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGMpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsIGI6aW50KSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIGRlZiBzcGFtKGI6aW50LCBhKSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKHNwYW0pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28oKiwgYSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcigqLCBjLCBiLCBhKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbygqLCBhPTEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYT0xKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbyhwb3MsICosIGE9MSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhLCBiLCBjKTogcGFzcworICAgICAgICBkZWYgYmFyKHBvcywgKiwgYywgYiwgYT0xKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbyhwb3MsICphcmdzLCBhPTQyLCBiLCBjLCAqKmt3YXJnczppbnQpOiBwYXNzCisgICAgICAgIGRlZiBiYXIocG9zLCAqYXJncywgYywgYiwgYT00MiwgKiprd2FyZ3M6aW50KTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfdW5oYXNoYWJsZShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKKyAgICAgICAgICAgIGhhc2goc2lnKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3N0cihzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhOmludD0xLCAqLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhhOmludD0xLCAqLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MicpCisKKyAgICAgICAgZGVmIGZvbyhhOmludD0xLCAqYXJncywgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoYTppbnQ9MSwgKmFyZ3MsIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyJykKKworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCAnKCknKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3N0cl9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIGRlZiB0ZXN0KGFfcG8sICosIGIsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhX3BvLCBrd2FyZ3MKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBuZXdfcGFyYW1zID0gbGlzdChzaWcucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgbmV3X3BhcmFtc1swXSA9IG5ld19wYXJhbXNbMF0ucmVwbGFjZShraW5kPVAuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICB0ZXN0Ll9fc2lnbmF0dXJlX18gPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoPGFfcG8+LCAqLCBiLCAqKmt3YXJncyknKQorCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIG5ld19wYXJhbXMgPSBsaXN0KHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQorICAgICAgICBuZXdfcGFyYW1zWzBdID0gbmV3X3BhcmFtc1swXS5yZXBsYWNlKG5hbWU9Tm9uZSkKKyAgICAgICAgdGVzdC5fX3NpZ25hdHVyZV9fID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyg8MD4sICosIGIsICoqa3dhcmdzKScpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcmVwbGFjZV9hbm5vKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIHNpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2lnLnJldHVybl9hbm5vdGF0aW9uLCBOb25lKQorICAgICAgICBzaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj1zaWcuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2lnLnJldHVybl9hbm5vdGF0aW9uLCBzaWcuZW1wdHkpCisgICAgICAgIHNpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPTQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZy5yZXR1cm5fYW5ub3RhdGlvbiwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnLCBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KSkKKworCitjbGFzcyBUZXN0UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2tpbmRzKHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuUE9TSVRJT05BTF9PTkxZIDwgUC5QT1NJVElPTkFMX09SX0tFWVdPUkQgPCBcCisgICAgICAgICAgICAgICAgICAgICAgICBQLlZBUl9QT1NJVElPTkFMIDwgUC5LRVlXT1JEX09OTFkgPCBQLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFAuUE9TSVRJT05BTF9PTkxZKSwgJ1BPU0lUSU9OQUxfT05MWScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnUE9TSVRJT05BTF9PTkxZJyBpbiByZXByKFAuUE9TSVRJT05BTF9PTkxZKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfb2JqZWN0KHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGVmYXVsdCwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocC5hbm5vdGF0aW9uLCBwLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnaW52YWxpZCB2YWx1ZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9MTAsIGtpbmQ9JzEyMycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJzEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub24tcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcicpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUwpCisKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBwLnJlcGxhY2Uoa2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfUE9TSVRJT05BTCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihwKS5zdGFydHN3aXRoKCc8UGFyYW1ldGVyJykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKyAgICAgICAgcCA9IFAoJ2ZvbycsIGRlZmF1bHQ9NDIsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwLCA0MikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIFAoJ2ZvbycsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3VuaGFzaGFibGUoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKKyAgICAgICAgICAgIGhhc2gocCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfcmVwbGFjZShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChwLCBwLnJlcGxhY2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBwLnJlcGxhY2UoKSkKKworICAgICAgICBwMiA9IHAucmVwbGFjZShhbm5vdGF0aW9uPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuYW5ub3RhdGlvbiwgMSkKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGFubm90YXRpb249cDIuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcDIpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIubmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocDIsIHApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9cDIuZW1wdHkpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9J2ZvbycsIGRlZmF1bHQ9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhwMi5kZWZhdWx0LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAyLCBwKQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPSdmb28nLCBkZWZhdWx0PXAyLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydElzKHAyLmRlZmF1bHQsIHAyLmVtcHR5KQorCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGRlZmF1bHQ9NDIsIGtpbmQ9cDIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmtpbmQsIHAyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwMiwgcCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2ludmFsaWQgdmFsdWUgZm9yJyk6CisgICAgICAgICAgICBwMiA9IHAyLnJlcGxhY2Uoa2luZD1wMi5lbXB0eSkKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2Uoa2luZD1wMi5LRVlXT1JEX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIsIHApCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgJzw+JykKKworICAgICAgICBwID0gcC5yZXBsYWNlKG5hbWU9JzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgJzwxPicpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2ltbXV0YWJpbGl0eShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcC5mb28gPSAnYmFyJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcC5raW5kID0gMTIzCisKKworY2xhc3MgVGVzdFNpZ25hdHVyZUJpbmQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY2FsbChmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jKQorICAgICAgICBiYSA9IHNpZy5iaW5kKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGZ1bmMoKmJhLmFyZ3MsICoqYmEua3dhcmdzKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfZW1wdHkoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwgNDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIHNwYW09MTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIHNwYW09MSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcihzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwgKCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEpLCAoKDEsKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKCgxLCAyKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289J2JhcicpLCAoKCksIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgZm9vPSdiYXInKSwgKCgxLCksIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYXJncz0xMCksICgoKSwgeydhcmdzJzogMTB9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgZm9vPSdiYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKDEsIDIpLCB7J2Zvbyc6ICdiYXInfSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9qdXN0X2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIDQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidiJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiJ2EnIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0KQorCisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MTApOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMyksICgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAxMCkpCisKKyAgICAgICAgZGVmIHRlc3QoYT0xLCBiPTIsIGM9Myk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEwLCBjPTEzKSwgKDEwLCAyLCAxMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGE9MTApLCAoMTAsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTEwKSwgKDEsIDEwLCAzKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcmFyZ3Nfb3JkZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCphcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJnc19hbmRfdmFyYXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYz0zLCAqYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywgYXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIDQsIDUpLCAoMSwgMiwgMywgKDQsIDUpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAzLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGI9MSwgYT0yKSwgKDIsIDEsIDMsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yKSwgKDEsIDIsIDMsICgpKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICdjJyIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIGM9NCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2p1c3Rfa3dhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4ga3dhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJnc19hbmRfa3dhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiLCBjPTMsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjLCBrd2FyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKDEsIDIsIDMsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTIsIGE9MSwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEsIGI9MiwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiPTIsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yLCBjPTQsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgNCwgZm9vPSdiYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgNCwgeydmb28nOiAnYmFyJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBjPTUsIGE9NCwgYj0zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoNCwgMywgNSwge30pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfa3dvbmx5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqLCBmb28pOgorICAgICAgICAgICAgcmV0dXJuIGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGZvbz0xKSwgMSkKKworICAgICAgICBkZWYgdGVzdChhLCAqLCBmb289MSwgYmFyKToKKyAgICAgICAgICAgIHJldHVybiBmb28KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JhcicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisKKyAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIpOgorICAgICAgICAgICAgcmV0dXJuIGZvbywgYmFyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yKSwgKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEpLCAoMSwgMikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEsIHNwYW09MTApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgYmFyPTIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9Miwgc3BhbT0naGFtJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInYmFyJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKworICAgICAgICBkZWYgdGVzdChmb28sICosIGJhciwgKipiaW4pOgorICAgICAgICAgICAgcmV0dXJuIGZvbywgYmFyLCBiaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIpLCAoMSwgMiwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289MSwgYmFyPTIpLCAoMSwgMiwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9Miwgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIHNwYW09J2hhbScsIGZvbz0xLCBiYXI9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidmb28nIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBzcGFtPSdoYW0nLCBiYXI9MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIGJpbj0xLCBzcGFtPTEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgeydiaW4nOiAxLCAnc3BhbSc6IDEwfSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsICphcmdzLCBiLCB6PTEwMCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBiYSA9IHNpZy5iaW5kKDEwLCAyMCwgYj0zMCwgYz00MCwgYXJncz01MCwga3dhcmdzPTYwKQorICAgICAgICAjIHdlIHdvbid0IGhhdmUgJ3onIGFyZ3VtZW50IGluIHRoZSBib3VuZCBhcmd1bWVudHMgb2JqZWN0LCBhcyB3ZSBkaWRuJ3QKKyAgICAgICAgIyBwYXNzIGl0IHRvIHRoZSAnYmluZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgnYScsIDEwKSwgKCdhcmdzJywgKDIwLCkpLCAoJ2InLCAzMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgeydjJzogNDAsICdhcmdzJzogNTAsICdrd2FyZ3MnOiA2MH0pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYS5rd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgeydiJzogMzAsICdjJzogNDAsICdhcmdzJzogNTAsICdrd2FyZ3MnOiA2MH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJncywgKDEwLCAyMCkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIGRlZiB0ZXN0KGFfcG8sIGJfcG8sIGNfcG89MywgZm9vPTQyLCAqLCBiYXI9NTAsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhX3BvLCBiX3BvLCBjX3BvLCBmb28sIGJhciwga3dhcmdzCisKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgbmV3X3BhcmFtcyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KHR1cGxlKHNpZy5wYXJhbWV0ZXJzLml0ZW1zKCkpKQorICAgICAgICBmb3IgbmFtZSBpbiAoJ2FfcG8nLCAnYl9wbycsICdjX3BvJyk6CisgICAgICAgICAgICBuZXdfcGFyYW1zW25hbWVdID0gbmV3X3BhcmFtc1tuYW1lXS5yZXBsYWNlKGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIG5ld19zaWcgPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMudmFsdWVzKCkpCisgICAgICAgIHRlc3QuX19zaWduYXR1cmVfXyA9IG5ld19zaWcKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCA0LCA1LCBiYXI9NiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIDUsIDYsIHt9KSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGNfcG89NCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIGFfcG89MSwgYl9wbz0yKQorCisKK2NsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgorICAgICAgICAgICAgaGFzaChiYSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSk6IHBhc3MKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmEpCisKKyAgICAgICAgYmEyID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMikKKworICAgICAgICBiYTMgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiYSwgYmEzKQorICAgICAgICBiYTMuYXJndW1lbnRzWydhJ10gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMykKKworICAgICAgICBkZWYgYmFyKGIpOiBwYXNzCisgICAgICAgIGJhNCA9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikuYmluZCgxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTQpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdCgKQEAgLTExNzYsNyArMjI3NCw4IEBACiAgICAgICAgIFRlc3RJbnRlcnByZXRlclN0YWNrLCBUZXN0Q2xhc3Nlc0FuZEZ1bmN0aW9ucywgVGVzdFByZWRpY2F0ZXMsCiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucywgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsIFRlc3RHZXRhdHRyU3RhdGljLCBUZXN0R2V0R2VuZXJhdG9yU3RhdGUsCi0gICAgICAgIFRlc3ROb0VPTAorICAgICAgICBUZXN0Tm9FT0wsIFRlc3RTaWduYXR1cmVPYmplY3QsIFRlc3RTaWduYXR1cmVCaW5kLCBUZXN0UGFyYW1ldGVyT2JqZWN0LAorICAgICAgICBUZXN0Qm91bmRBcmd1bWVudHMsIFRlc3RHZXRDbG9zdXJlVmFycwogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKaW5kZXggNDM3ZTMyMy4uMjI3NzU5ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKQEAgLTMwNSw2ICszMDUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgVHlwZUVycm9yIHdpdGggJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYmFzZSwgdHJ1bmNfcmVzdWx0X2Jhc2UpLCkpCiAKKyAgICAgICAgICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVncy5weXRob24ub3JnL2lzc3VlMTYwNjAuCisgICAgICAgICAgICAgICAgY2xhc3MgQmFkSW50KHRydW5jX3Jlc3VsdF9iYXNlKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDIuMAorCisgICAgICAgICAgICAgICAgY2xhc3MgVHJ1bmNSZXR1cm5zQmFkSW50KGJhc2UpOgorICAgICAgICAgICAgICAgICAgICBkZWYgX190cnVuY19fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJhZEludCgpCisKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGludChUcnVuY1JldHVybnNCYWRJbnQoKSkKKwogICAgIGRlZiB0ZXN0X2Vycm9yX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgIHRlc3RsaXN0ID0gKCdceGJkJywgJzEyM1x4YmQnLCAnICAxMjMgNDU2ICAnKQogICAgICAgICBmb3IgcyBpbiB0ZXN0bGlzdDoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDU2YWMyYzguLjU1NWFkNzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMTksMjAgKzE5LDIxIEBACiAjIHRlc3QgYm90aCBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgZmlsZSBoYXMgbG90cyBvZiBleGFtcGxlcy4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCBhYmMKK2ltcG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCi1pbXBvcnQgYXJyYXkKLWltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdlYWtyZWYKLWltcG9ydCBhYmMKLWltcG9ydCBzaWduYWwKLWltcG9ydCBlcnJubwogaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgcGlja2xlCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CitpbXBvcnQgd2Vha3JlZgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUsIFVzZXJMaXN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogaW1wb3J0IGNvZGVjcwpAQCAtNDksNyArNTAsNyBAQAogCiBkZWYgX2RlZmF1bHRfY2h1bmtfc2l6ZSgpOgogICAgICIiIkdldCB0aGUgZGVmYXVsdCBUZXh0SU9XcmFwcGVyIGNodW5rIHNpemUiIiIKLSAgICB3aXRoIG9wZW4oX19maWxlX18sICJyIiwgZW5jb2Rpbmc9ImxhdGluMSIpIGFzIGY6CisgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAiciIsIGVuY29kaW5nPSJsYXRpbi0xIikgYXMgZjoKICAgICAgICAgcmV0dXJuIGYuX0NIVU5LX1NJWkUKIAogCkBAIC02MzQsNiArNjM1LDE1IEBACiAgICAgICAgIGZvciBvYmogaW4gdGVzdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9iaiwgIl9fZGljdF9fIikpCiAKKyAgICBkZWYgdGVzdF9vcGVuZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJlZ2dcbiIpCisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFkpCisgICAgICAgIGRlZiBvcGVuZXIocGF0aCwgZmxhZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGZkCisgICAgICAgIHdpdGggc2VsZi5vcGVuKCJub24tZXhpc3RlbnQiLCAiciIsIG9wZW5lcj1vcGVuZXIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiZWdnXG4iKQorCiAgICAgZGVmIHRlc3RfZmlsZWlvX2Nsb3NlZmQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzQ4NDEKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oX19maWxlX18sICdyYicpIGFzIGYxLCBcCkBAIC02OTYsNyArNzA2LDcgQEAKICAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvKQogICAgICAgICAjIEludmFsaWQgd2hlbmNlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ1ZmlvLnNlZWssIDAsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCA5KQogCiAgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVzdHJ1Y3RvcihzZWxmKToKICAgICAgICAgdHAgPSBzZWxmLnRwCkBAIC04NjIsNiArODcyLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJnZiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJnZiIpCisgICAgICAgIHJhd2lvID0gc2VsZi5Nb2NrUmF3SU8oKGIiYWJjIiwgTm9uZSkpCisgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50byhiKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImFiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50byhiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImNiIikKIAogICAgIGRlZiB0ZXN0X3JlYWRsaW5lcyhzZWxmKToKICAgICAgICAgZGVmIGJ1ZmlvKCk6CkBAIC0xMjc2LDkgKzEyOTIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBidWZpby50ZWxsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBidWZpby53cml0ZSwgYiJhYmNkZWYiKQogCi0gICAgZGVmIHRlc3RfbWF4X2J1ZmZlcl9zaXplX2RlcHJlY2F0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgZGVmIHRlc3RfbWF4X2J1ZmZlcl9zaXplX3JlbW92YWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudHAoc2VsZi5Nb2NrUmF3SU8oKSwgOCwgMTIpCiAKIApAQCAtMTMzNCw5ICsxMzQ5LDggQEAKICAgICAgICAgcGFpciA9IHNlbGYudHAoc2VsZi5Nb2NrUmF3SU8oKSwgc2VsZi5Nb2NrUmF3SU8oKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgcGFpci5kZXRhY2gpCiAKLSAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9tYXhfYnVmZmVyX3NpemVfZGVwcmVjYXRpb24oc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9tYXhfYnVmZmVyX3NpemVfcmVtb3ZhbChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi50cChzZWxmLk1vY2tSYXdJTygpLCBzZWxmLk1vY2tSYXdJTygpLCA4LCAxMikKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX3dpdGhfbm90X3JlYWRhYmxlKHNlbGYpOgpAQCAtMTg1MiwxMSArMTg2NiwxMSBAQAogICAgICAgICByID0gc2VsZi5CeXRlc0lPKGIiXHhjM1x4YTlcblxuIikKICAgICAgICAgYiA9IHNlbGYuQnVmZmVyZWRSZWFkZXIociwgMTAwMCkKICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiKQotICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJsYXRpbjEiLCBuZXdsaW5lPSJcclxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAibGF0aW4xIikKKyAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0ibGF0aW4tMSIsIG5ld2xpbmU9IlxyXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJsYXRpbi0xIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmxpbmVfYnVmZmVyaW5nLCBGYWxzZSkKLSAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0idXRmOCIsIGxpbmVfYnVmZmVyaW5nPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0ZjgiKQorICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJ1dGYtOCIsIGxpbmVfYnVmZmVyaW5nPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0Zi04IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmxpbmVfYnVmZmVyaW5nLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJceGU5XG4iLCB0LnJlYWRsaW5lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdC5fX2luaXRfXywgYiwgbmV3bGluZT00MikKQEAgLTE5MDMsMTEgKzE5MTcsMjkgQEAKICAgICAgICAgdC53cml0ZSgiQVxyQiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5nZXR2YWx1ZSgpLCBiIlhZXG5aQVxyQiIpCiAKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICBvbGRfZW52aXJvbiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gZ2V0IGEgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIHRvIGNoZWNrIHRoYXQgVGV4dElPV3JhcHBlcigpIHVzZXMgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIGFuZCBub3QgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nCisgICAgICAgICAgICBmb3Iga2V5IGluICgnTENfQUxMJywgJ0xBTkcnLCAnTENfQ1RZUEUnKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorCisgICAgICAgICAgICBjdXJyZW50X2xvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgICAgICAgICAgIGIgPSBzZWxmLkJ5dGVzSU8oKQorICAgICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCBjdXJyZW50X2xvY2FsZV9lbmNvZGluZykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQorICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUob2xkX2Vudmlyb24pCisKICAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGUgZW5jb2RpbmcgYXR0cmlidXRlIGlzIGFsd2F5cyBzZXQsIGFuZCB2YWxpZAogICAgICAgICBiID0gc2VsZi5CeXRlc0lPKCkKLSAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiLCBlbmNvZGluZz0idXRmOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0ZjgiKQorICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0Zi04IikKICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5lbmNvZGluZyBpcyBub3QgTm9uZSkKICAgICAgICAgY29kZWNzLmxvb2t1cCh0LmVuY29kaW5nKQpAQCAtMjAwMCw4ICsyMDMyLDggQEAKICAgICAgICAgdGVzdGRhdGEgPSBiIkFBQVxuQkJceDAwQlxuQ0NDXHJERERcckVFRVxyXG5GRkZcclxuR0dHIgogICAgICAgICBub3JtYWxpemVkID0gdGVzdGRhdGEucmVwbGFjZShiIlxyXG4iLCBiIlxuIikucmVwbGFjZShiIlxyIiwgYiJcbiIpCiAgICAgICAgIGZvciBuZXdsaW5lLCBleHBlY3RlZCBpbiBbCi0gICAgICAgICAgICAoTm9uZSwgbm9ybWFsaXplZC5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhUcnVlKSksCi0gICAgICAgICAgICAoIiIsIHRlc3RkYXRhLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKFRydWUpKSwKKyAgICAgICAgICAgIChOb25lLCBub3JtYWxpemVkLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKSwKKyAgICAgICAgICAgICgiIiwgdGVzdGRhdGEuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpLAogICAgICAgICAgICAgKCJcbiIsIFsiQUFBXG4iLCAiQkJceDAwQlxuIiwgIkNDQ1xyREREXHJFRUVcclxuIiwgIkZGRlxyXG4iLCAiR0dHIl0pLAogICAgICAgICAgICAgKCJcclxuIiwgWyJBQUFcbkJCXHgwMEJcbkNDQ1xyREREXHJFRUVcclxuIiwgIkZGRlxyXG4iLCAiR0dHIl0pLAogICAgICAgICAgICAgKCJcciIsICBbIkFBQVxuQkJceDAwQlxuQ0NDXHIiLCAiREREXHIiLCAiRUVFXHIiLCAiXG5GRkZcciIsICJcbkdHRyJdKSwKQEAgLTIwODYsNyArMjExOCw3IEBACiAKICAgICBkZWYgdGVzdF9iYXNpY19pbyhzZWxmKToKICAgICAgICAgZm9yIGNodW5rc2l6ZSBpbiAoMSwgMiwgMywgNCwgNSwgMTUsIDE2LCAxNywgMzEsIDMyLCAzMywgNjMsIDY0LCA2NSk6Ci0gICAgICAgICAgICBmb3IgZW5jIGluICJhc2NpaSIsICJsYXRpbjEiLCAidXRmOCIgOiMgLCAidXRmLTE2LWJlIiwgInV0Zi0xNi1sZSI6CisgICAgICAgICAgICBmb3IgZW5jIGluICJhc2NpaSIsICJsYXRpbi0xIiwgInV0Zi04IiA6IyAsICJ1dGYtMTYtYmUiLCAidXRmLTE2LWxlIjoKICAgICAgICAgICAgICAgICBmID0gc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidysiLCBlbmNvZGluZz1lbmMpCiAgICAgICAgICAgICAgICAgZi5fQ0hVTktfU0laRSA9IGNodW5rc2l6ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0ZSgiYWJjIiksIDMpCkBAIC0yMTM2LDcgKzIxNjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJsaW5lcywgd2xpbmVzKQogCiAgICAgZGVmIHRlc3RfdGVsbGluZyhzZWxmKToKLSAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIncrIiwgZW5jb2Rpbmc9InV0ZjgiKQorICAgICAgICBmID0gc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidysiLCBlbmNvZGluZz0idXRmLTgiKQogICAgICAgICBwMCA9IGYudGVsbCgpCiAgICAgICAgIGYud3JpdGUoIlx4ZmZcbiIpCiAgICAgICAgIHAxID0gZi50ZWxsKCkKQEAgLTI0MDQsNiArMjQzNiw3IEBACiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIsIGVycm9ycz0icmVwbGFjZSIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZXJyb3JzLCAicmVwbGFjZSIpCiAKKyAgICBAc3VwcG9ydC5ub190cmFjaW5nCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF90aHJlYWRzX3dyaXRlKHNlbGYpOgogICAgICAgICAjIElzc3VlNjc1MDogY29uY3VycmVudCB3cml0ZXMgY291bGQgZHVwbGljYXRlIGRhdGEKQEAgLTI3MjEsMTIgKzI3NTQsNiBAQAogCiAgICAgZGVmIHRlc3RfYmxvY2tpbmdpb2Vycm9yKHNlbGYpOgogICAgICAgICAjIFZhcmlvdXMgQmxvY2tpbmdJT0Vycm9yIGlzc3VlcwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxLCAyLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxLCAiIiwgTm9uZSkKLSAgICAgICAgYiA9IHNlbGYuQmxvY2tpbmdJT0Vycm9yKDEsICIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY2hhcmFjdGVyc193cml0dGVuLCAwKQogICAgICAgICBjbGFzcyBDKHN0cik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGMgPSBDKCIiKQpAQCAtMjg2OCw2ICsyODk1LDcgQEAKIAogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkJsb2NraW5nSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUFHQUlOKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1syXSwgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4pCiAgICAgICAgICAgICAgICAgICAgIHNlbnRbLTFdID0gc2VudFstMV1bOmUuY2hhcmFjdGVyc193cml0dGVuXQogICAgICAgICAgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQocmYucmVhZCgpKQogICAgICAgICAgICAgICAgICAgICBtc2cgPSBiJ0JMT0NLRUQnCkBAIC0yODgwLDYgKzI5MDgsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkJsb2NraW5nSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUFHQUlOKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1syXSwgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5jaGFyYWN0ZXJzX3dyaXR0ZW4sIDApCiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChyZi5yZWFkKCkpCiAKQEAgLTI4OTAsNiArMjkxOSwyNCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUod2YuY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmYuY2xvc2VkKQogCisgICAgZGVmIHRlc3RfY3JlYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgJ3gnIG1vZGUgZmFpbHMgaWYgZmlsZSBpcyBleGlzdGluZworICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yLCBzZWxmLm9wZW4sIHN1cHBvcnQuVEVTVEZOLCAneCcpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfd3JpdGVzKHNlbGYpOgorICAgICAgICAjICd4JyBtb2RlIG9wZW5zIGZvciB3cml0aW5nCisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAneGInKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiInNwYW0iKQorICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJzcGFtIiwgZi5yZWFkKCkpCisKKyAgICBkZWYgdGVzdF9vcGVuX2FsbGFyZ3Moc2VsZik6CisgICAgICAgICMgdGhlcmUgdXNlZCB0byBiZSBhIGJ1ZmZlciBvdmVyZmxvdyBpbiB0aGUgcGFyc2VyIGZvciByYXdtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3Blbiwgc3VwcG9ydC5URVNURk4sICdyd2F4KycpCisKKwogY2xhc3MgQ01pc2NJT1Rlc3QoTWlzY0lPVGVzdCk6CiAgICAgaW8gPSBpbwogCkBAIC0yOTEwLDE0ICsyOTU3LDE0IEBACiAgICAgICAgIDEvMAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSBpbiAoJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ2ZyZWVic2Q3JyksCi0gICAgICAgICAgICAgICAgICAgICAnaXNzdWUgIzEyNDI5OiBza2lwIHRlc3Qgb24gRnJlZUJTRCA8PSA3JykKICAgICBkZWYgY2hlY2tfaW50ZXJydXB0ZWRfd3JpdGUoc2VsZiwgaXRlbSwgYnl0ZXMsICoqZmRvcGVuX2t3YXJncyk6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYSBwYXJ0aWFsIHdyaXRlLCB3aGVuIGl0IGdldHMgaW50ZXJydXB0ZWQsIHByb3Blcmx5CiAgICAgICAgIGludm9rZXMgdGhlIHNpZ25hbCBoYW5kbGVyLCBhbmQgYnViYmxlcyB1cCB0aGUgZXhjZXB0aW9uIHJhaXNlZAogICAgICAgICBpbiB0aGUgbGF0dGVyLiIiIgogICAgICAgICByZWFkX3Jlc3VsdHMgPSBbXQogICAgICAgICBkZWYgX3JlYWQoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbmFsLlNJR0FMUk1dKQogICAgICAgICAgICAgcyA9IG9zLnJlYWQociwgMSkKICAgICAgICAgICAgIHJlYWRfcmVzdWx0cy5hcHBlbmQocykKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9yZWFkKQpAQCAtMjkzNSw3ICsyOTgyLDcgQEAKICAgICAgICAgICAgICMgVGhlIGJ1ZmZlcmVkIElPIGxheWVyIG11c3QgY2hlY2sgZm9yIHBlbmRpbmcgc2lnbmFsCiAgICAgICAgICAgICAjIGhhbmRsZXJzLCB3aGljaCBpbiB0aGlzIGNhc2Ugd2lsbCBpbnZva2UgYWxhcm1faW50ZXJydXB0KCkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpby53cml0ZSwgaXRlbSAqICgxMDI0ICogMTAyNCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aW8ud3JpdGUsIGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSkpCiAgICAgICAgICAgICB0LmpvaW4oKQogICAgICAgICAgICAgIyBXZSBnb3Qgb25lIGJ5dGUsIGdldCBhbm90aGVyIG9uZSBhbmQgY2hlY2sgdGhhdCBpdCBpc24ndCBhCiAgICAgICAgICAgICAjIHJlcGVhdCBvZiB0aGUgZmlyc3Qgb25lLgpAQCAtMjk2Miw2ICszMDA5LDcgQEAKICAgICBkZWYgdGVzdF9pbnRlcnJ1cHRlZF93cml0ZV90ZXh0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ludGVycnVwdGVkX3dyaXRlKCJ4eSIsIGIieHkiLCBtb2RlPSJ3IiwgZW5jb2Rpbmc9ImFzY2lpIikKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBkZWYgY2hlY2tfcmVlbnRyYW50X3dyaXRlKHNlbGYsIGRhdGEsICoqZmRvcGVuX2t3YXJncyk6CiAgICAgICAgIGRlZiBvbl9hbGFybSgqYXJncyk6CiAgICAgICAgICAgICAjIFdpbGwgYmUgY2FsbGVkIHJlZW50cmFudGx5IGZyb20gdGhlIHNhbWUgdGhyZWFkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weSBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YzU0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQpAQCAtMCwwICsxLDE2NDkgQEAKKyMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlIEluYy4KKyMgIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KKworIiIiVW5pdHRlc3QgZm9yIGlwYWRkcmVzcyBtb2R1bGUuIiIiCisKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgcmUKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCBpcGFkZHJlc3MKKworY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIE9uZSBiaWcgY2hhbmdlIGluIGlwYWRkcmVzcyBvdmVyIHRoZSBvcmlnaW5hbCBpcGFkZHIgbW9kdWxlIGlzCisgICAgIyBlcnJvciByZXBvcnRpbmcgdGhhdCB0cmllcyB0byBhc3N1bWUgdXNlcnMgKmRvbid0IGtub3cgdGhlIHJ1bGVzKgorICAgICMgZm9yIHdoYXQgY29uc3RpdHV0ZXMgYW4gUkZDIGNvbXBsaWFudCBJUCBhZGRyZXNzCisKKyAgICAjIEVuc3VyaW5nIHRoZXNlIGVycm9ycyBhcmUgZW1pdHRlZCBjb3JyZWN0bHkgaW4gYWxsIHJlbGV2YW50IGNhc2VzCisgICAgIyBtZWFudCBtb3ZpbmcgdG8gYSBtb3JlIHN5c3RlbWF0aWMgdGVzdCBzdHJ1Y3R1cmUgdGhhdCBhbGxvd3MgdGhlCisgICAgIyB0ZXN0IHN0cnVjdHVyZSB0byBtYXAgbW9yZSBkaXJlY3RseSB0byB0aGUgbW9kdWxlIHN0cnVjdHVyZQorCisgICAgIyBOb3RlIHRoYXQgaWYgdGhlIGNvbnN0cnVjdG9ycyBhcmUgcmVmYWN0b3JlZCBzbyB0aGF0IGFkZHJlc3NlcyB3aXRoCisgICAgIyBtdWx0aXBsZSBwcm9ibGVtcyBnZXQgY2xhc3NpZmllZCBkaWZmZXJlbnRseSwgdGhhdCdzIE9LIC0ganVzdAorICAgICMgbW92ZSB0aGUgYWZmZWN0ZWQgZXhhbXBsZXMgdG8gdGhlIG5ld2x5IGFwcHJvcHJpYXRlIHRlc3QgY2FzZS4KKworICAgICMgVGhlcmUgaXMgc29tZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBvcmlnaW5hbCByZWxhdGl2ZWx5IGFkIGhvYworICAgICMgdGVzdCBzdWl0ZSBhbmQgdGhlIG5ldyBzeXN0ZW1hdGljIHRlc3RzLiBXaGlsZSBzb21lIHJlZHVuZGFuY3kgaW4KKyAgICAjIHRlc3RpbmcgaXMgY29uc2lkZXJlZCBwcmVmZXJhYmxlIHRvIGFjY2lkZW50YWxseSBkZWxldGluZyBhIHZhbGlkCisgICAgIyB0ZXN0LCB0aGUgb3JpZ2luYWwgdGVzdCBzdWl0ZSB3aWxsIGxpa2VseSBiZSByZWR1Y2VkIG92ZXIgdGltZSBhcworICAgICMgcmVkdW5kYW50IHRlc3RzIGFyZSBpZGVudGlmaWVkLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZhY3Rvcnkoc2VsZik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGFzc2VydENsZWFuRXJyb3Ioc2VsZiwgZXhjX3R5cGUsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSBleGNlcHRpb24gZG9lcyBub3QgZGlzcGxheSBhIGNvbnRleHQgYnkgZGVmYXVsdAorCisgICAgICAgIFdyYXBzIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFJhaXNlc1JlZ2V4CisgICAgICAgICIiIgorICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgZGV0YWlscyA9IGRldGFpbHMgJSBhcmdzCisgICAgICAgIGNtID0gc2VsZi5hc3NlcnRSYWlzZXNSZWdleChleGNfdHlwZSwgZGV0YWlscykKKyAgICAgICAgd2l0aCBjbSBhcyBleGM6CisgICAgICAgICAgICB5aWVsZCBleGMKKyAgICAgICAgIyBFbnN1cmUgd2UgcHJvZHVjZSBjbGVhbiB0cmFjZWJhY2tzIG9uIGZhaWx1cmUKKyAgICAgICAgaWYgZXhjLmV4Y2VwdGlvbi5fX2NvbnRleHRfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fKQorCisgICAgZGVmIGFzc2VydEFkZHJlc3NFcnJvcihzZWxmLCBkZXRhaWxzLCAqYXJncyk6CisgICAgICAgICIiIkVuc3VyZSBhIGNsZWFuIEFkZHJlc3NWYWx1ZUVycm9yIiIiCisgICAgICAgIHJldHVybiBzZWxmLmFzc2VydENsZWFuRXJyb3IoaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscywgKmFyZ3MpCisKKyAgICBkZWYgYXNzZXJ0TmV0bWFza0Vycm9yKHNlbGYsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiRW5zdXJlIGEgY2xlYW4gTmV0bWFza1ZhbHVlRXJyb3IiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0Q2xlYW5FcnJvcihpcGFkZHJlc3MuTmV0bWFza1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMsICphcmdzKQorCisgICAgZGVmIGFzc2VydEluc3RhbmNlc0VxdWFsKHNlbGYsIGxocywgcmhzKToKKyAgICAgICAgIiIiQ2hlY2sgY29uc3RydWN0b3IgYXJndW1lbnRzIHByb2R1Y2UgZXF1aXZhbGVudCBpbnN0YW5jZXMiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZhY3RvcnkobGhzKSwgc2VsZi5mYWN0b3J5KHJocykpCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbjoKKworICAgIGRlZiB0ZXN0X2VtcHR5X2FkZHJlc3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5Iik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoIiIpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKHJlcHIoIjEuMCIpKSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMS4wKQorCisgICAgZGVmIHRlc3Rfbm90X2FuX2luZGV4X2lzc3VlMTU1NTkoc2VsZik6CisgICAgICAgICMgSW1wbGVtZW50aW5nIF9faW5kZXhfXyBtYWtlcyBmb3IgYSB2ZXJ5IG5hc3R5IGludGVyYWN0aW9uIHdpdGggdGhlCisgICAgICAgICMgYnl0ZXMgY29uc3RydWN0b3IuIFRodXMsIHdlIGRpc2FsbG93IGltcGxpY2l0IHVzZSBhcyBhbiBpbnRlZ2VyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXgsIHNlbGYuZmFjdG9yeSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoZXgsIHNlbGYuZmFjdG9yeSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgc2VsZi5mYWN0b3J5KDEpKQorCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW4pOgorCisgICAgZGVmIHRlc3RfbGVhZGluZ196ZXJvcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgiMDAwLjAwMC4wMDAuMDAwIiwgIjAuMC4wLjAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIxOTIuMTY4LjAwMC4wMDEiLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDAsICIwLjAuMC4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgzMjMyMjM1NTIxLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfcGFja2VkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIiksICIwLjAuMC4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIi0xICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgtMSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqMzIpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAyKiozMikpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KDIqKjMyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKKyAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSA0KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDMpCisgICAgICAgIGFzc2VydEJhZExlbmd0aCg1KQorCitjbGFzcyBDb21tb25UZXN0TWl4aW5fdjYoQ29tbW9uVGVzdE1peGluKToKKworICAgIGRlZiB0ZXN0X2xlYWRpbmdfemVyb3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjAwMDA6OjAwMDAiLCAiOjoiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIwMDA6OmMwYTg6MDAwMSIsICI6OmMwYTg6MSIpCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMCwgIjo6IikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgzMjMyMjM1NTIxLCAiOjpjMGE4OjEiKQorCisgICAgZGVmIHRlc3RfcGFja2VkKHNlbGYpOgorICAgICAgICBhZGRyID0gYnl0ZXMoMTIpICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCisgICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6YzBhODoxIikKKyAgICAgICAgYWRkciA9IGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikgKyBieXRlcygxMikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiYzBhODoxOjoiKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIi0xICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgtMSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqMTI4KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjYgYWRkcmVzcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgMioqMTI4KSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMioqMTI4KQorCisgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKKyAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgICAgIGFzc2VydEJhZExlbmd0aCgxNSkKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDE3KQorCisKK2NsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92NCk6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcworCisgICAgZGVmIHRlc3RfbmV0d29ya19wYXNzZWRfYXNfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYWRkciA9ICIxMjcuMC4wLjEvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJFeHBlY3RlZCA0IG9jdGV0cyBpbiAlciIsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMjcuMC4xIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40Mi40Mi40Mi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIuNDIuLi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIi4uLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAxNi4wMTYuMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAxNi4wMTYiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAwMCIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhLjB4MGEuMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhLjB4MGEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIuIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoImJvZ3VzIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoImJvZ3VzLmNvbSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwMDAwMDAwMDAwMDAwMDAiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTkyLjE2OC4wLjEuY29tIikKKworICAgIGRlZiB0ZXN0X2VtcHR5X29jdGV0KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJFbXB0eSBvY3RldCBub3QgcGVybWl0dGVkIGluICVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi4uNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiLi4uIikKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcmFjdGVycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGRlY2ltYWwgZGlnaXRzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIgJSAob2N0ZXQsIGFkZHIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMHgwYS4weDBhLjB4MGEuMHgwYSIsICIweDBhIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjB4YS4weDBhLjB4MGEuMHgwYSIsICIweGEiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuLTAiLCAiLTAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuKzAiLCAiKzAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuLTQyIiwgIi00MiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIrMS4rMi4rMy40IiwgIisxIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEuMi4zLjRlMCIsICI0ZTAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMS4yLjMuNDo6IiwgIjQ6OiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxLmEuMi4zIiwgImEiKQorCisgICAgZGVmIHRlc3Rfb2N0YWxfZGVjaW1hbF9hbWJpZ3VpdHkoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiQW1iaWd1b3VzIChvY3RhbC9kZWNpbWFsKSB2YWx1ZSBpbiAlciBub3QgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKG9jdGV0LCBhZGRyKSkpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIwMTYuMDE2LjAxNi4wMTYiLCAiMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjAwMS4wMDAuMDA4LjAxNiIsICIwMDgiKQorCisgICAgZGVmIHRlc3Rfb2N0ZXRfbGVuZ3RoKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkciwgb2N0ZXQpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgMyBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChvY3RldCwgYWRkcikpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMDAwMC4wMDAuMDAwLjAwMCIsICIwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEyMzQ1LjY3ODk5Li01NDMyMS4tOTg3NjUiLCAiMTIzNDUiKQorCisgICAgZGVmIHRlc3Rfb2N0ZXRfbGltaXQoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiT2N0ZXQgJWQgKD4gMjU1KSBub3QgcGVybWl0dGVkIGluICVyIiAlIChvY3RldCwgYWRkcikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIyNTcuMC4wLjAiLCAyNTcpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxOTIuMTY4LjAuOTk5IiwgOTk5KQorCisKK2NsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92Nik6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcworCisgICAgZGVmIHRlc3RfbmV0d29ya19wYXNzZWRfYXNfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYWRkciA9ICI6OjEvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X25vdF9lbm91Z2hfcGFydHMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBsZWFzdCAzIHBhcnRzIGV4cGVjdGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIkZFREM6OTg3OCIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90b29fbWFueV9jb2xvbnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDggY29sb25zIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOTo4Ojc6Njo1OjQ6Mzo6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwOjk6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjg6Nzo2OjU6NDozOjI6MTo6IikKKyAgICAgICAgIyBBIHRyYWlsaW5nIElQdjQgYWRkcmVzcyBpcyB0d28gcGFydHMKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwOjk6ODo3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdG9vX21hbnlfcGFydHMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJFeGFjdGx5IDggcGFydHMgZXhwZWN0ZWQgd2l0aG91dCAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjA6MDowOjA6MDowOjA6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI5Ojg6Nzo2OjU6NDozOjI6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgIyBBIHRyYWlsaW5nIElQdjQgYWRkcmVzcyBpcyB0d28gcGFydHMKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjk6ODo3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNzo2OjU6NDozOjQyLjQyLjQyLjQyIikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3Rvb19tYW55X3BhcnRzX3dpdGhfZG91YmxlX2NvbG9uKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiRXhwZWN0ZWQgYXQgbW9zdCA3IG90aGVyIHBhcnRzIHdpdGggJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMToyOjM6NDo6NTo2Ojc6OCIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl9yZXBlYXRlZF9kb3VibGVfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IG9uZSAnOjonIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOjoyOjozOjo0OjUiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMjAwMTo6ZGI6OjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjNmZmU6OjE6OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6OjNmZmU6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjNmZmU6OjE6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjNmZmU6OjE6OjE6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCcyMDAxOmRiODo6OjEnKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfbGVhZGluZ19jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjIwMDE6ZGI4OjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxOjI6Mzo0OjU6Njo3IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxOjI6Mzo0OjU6NjoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjY6NTo0OjM6MjoxOjoiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdHJhaWxpbmdfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJUcmFpbGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIyMDAxOmRiODo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMToyOjM6NDo1OjY6NzoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjoxLjIuMy40OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6Ojc6Njo1OjQ6MzoyOiIpCisKKyAgICBkZWYgdGVzdF9iYWRfdjRfcGFydF9pbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZEFkZHJlc3NQYXJ0KGFkZHIsIHY0X2Vycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIiVzIGluICVyIiwgdjRfZXJyb3IsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCIzZmZlOjoxLm5ldCIsICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS5uZXQnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjNmZmU6OjEyNy4wLjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEyNy4wLjEnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjo6MS4yLjMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEuMi4zJyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCI6OjEuMi4zLjQuNSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS4yLjMuNC41JyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCIzZmZlOjoxLjEuMS5uZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJ25ldCcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gJzEuMS4xLm5ldCciKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkUGFydChhZGRyLCBwYXJ0KToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIGluICVyIiAlIChwYXJ0LCBhZGRyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6Z29vZyIsICJnb29nIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6LTAiLCAiLTAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjorMCIsICIrMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6Oi0xIiwgIi0xIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiMS4yLjMuNDo6IiwgIjEuMi4zLjQiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCcxMjM0OmF4eTo6YicsICJheHkiKQorCisgICAgZGVmIHRlc3RfcGFydF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRQYXJ0KGFkZHIsIHBhcnQpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgNCBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBwYXJ0LCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRQYXJ0KCI6OjAwMDAwIiwgIjAwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6MTAwMDAiLCAiMTAwMDAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIwMjAwMTpkYjg6OiIsICIwMjAwMSIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoJzIwMDE6ODg4ODg4OjoxJywgIjg4ODg4OCIpCisKKworY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW5fdjQpOgorICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCisKKyAgICBkZWYgdGVzdF9zcGxpdF9uZXRtYXNrKHNlbGYpOgorICAgICAgICBhZGRyID0gIjEuMi4zLjQvMzIvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIk9ubHkgb25lICcvJyBwZXJtaXR0ZWQgaW4gJXIiICUgYWRkcik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzcyhhZGRyLCBkZXRhaWxzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLyIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi84IiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiYm9ndXMiLCAiRXhwZWN0ZWQgNCBvY3RldHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCJnb29nbGUuY29tIiwgIkV4cGVjdGVkIDQgb2N0ZXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTAvOCIsICJFeHBlY3RlZCA0IG9jdGV0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjo6MS4yLjMuNCIsICJPbmx5IGRlY2ltYWwgZGlnaXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMS4yLjMuMjU2IiwgcmUuZXNjYXBlKCIyNTYgKD4gMjU1KSIpKQorCisgICAgZGVmIHRlc3RfbmV0bWFza19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWROZXRtYXNrKGFkZHIsIG5ldG1hc2spOgorICAgICAgICAgICAgbXNnID0gIiVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2siCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0TmV0bWFza0Vycm9yKG1zZyAlIG5ldG1hc2spOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgiJXMvJXMiICUgKGFkZHIsIG5ldG1hc2spKQorCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMi4zLjQiLCAiIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4yLjMuNCIsICIzMyIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMi4zLjQiLCAiMjU0LjI1NC4yNTUuMjU2IikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICIyNTQueHl6LjIuMyIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAiMjQwLjI1NS4wLjAiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjEuMS4xIiwgInB1ZGRpbmciKQorCitjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjQpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZQorCitjbGFzcyBOZXR3b3JrVGVzdENhc2VfdjQoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y0KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrCisKKworY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NihDb21tb25UZXN0TWl4aW5fdjYpOgorICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCisKKyAgICBkZWYgdGVzdF9zcGxpdF9uZXRtYXNrKHNlbGYpOgorICAgICAgICBhZGRyID0gImNhZmU6Y2FmZTo6LzEyOC8xOTAiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIk9ubHkgb25lICcvJyBwZXJtaXR0ZWQgaW4gJXIiICUgYWRkcik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzcyhhZGRyLCBkZXRhaWxzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLyIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi84IiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiZ29vZ2xlLmNvbSIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMS4yLjMuNCIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTAvOCIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTIzNDpheHk6OmIiLCAiT25seSBoZXggZGlnaXRzIikKKworICAgIGRlZiB0ZXN0X25ldG1hc2tfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkTmV0bWFzayhhZGRyLCBuZXRtYXNrKToKKyAgICAgICAgICAgIG1zZyA9ICIlciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydE5ldG1hc2tFcnJvcihtc2cgJSBuZXRtYXNrKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoIiVzLyVzIiAlIChhZGRyLCBuZXRtYXNrKSkKKworICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgIjo6MSIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICIxOjoiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiMTI5IikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgInB1ZGRpbmciKQorCitjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjYpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZQorCitjbGFzcyBOZXR3b3JrVGVzdENhc2VfdjYoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y2KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrCisKKworY2xhc3MgRmFjdG9yeUZ1bmN0aW9uRXJyb3JzKEJhc2VUZXN0Q2FzZSk6CisKKyAgICBkZWYgYXNzZXJ0RmFjdG9yeUVycm9yKHNlbGYsIGZhY3RvcnksIGtpbmQpOgorICAgICAgICAiIiJFbnN1cmUgYSBjbGVhbiBWYWx1ZUVycm9yIHdpdGggdGhlIGV4cGVjdGVkIG1lc3NhZ2UiIiIKKyAgICAgICAgYWRkciA9ICJjYW1lbG90IgorICAgICAgICBtc2cgPSAnJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiAlcycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENsZWFuRXJyb3IoVmFsdWVFcnJvciwgbXNnLCBhZGRyLCBraW5kKToKKyAgICAgICAgICAgIGZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2lwX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFjdG9yeUVycm9yKGlwYWRkcmVzcy5pcF9hZGRyZXNzLCAiYWRkcmVzcyIpCisKKyAgICBkZWYgdGVzdF9pcF9pbnRlcmZhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFjdG9yeUVycm9yKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UsICJpbnRlcmZhY2UiKQorCisgICAgZGVmIHRlc3RfaXBfbmV0d29yayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWN0b3J5RXJyb3IoaXBhZGRyZXNzLmlwX25ldHdvcmssICJuZXR3b3JrIikKKworCitjbGFzcyBDb21wYXJpc29uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgdjRhZGRyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDEpCisgICAgdjRuZXQgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoMSkKKyAgICB2NGludGYgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgxKQorICAgIHY2YWRkciA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygxKQorICAgIHY2bmV0ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKDEpCisgICAgdjZpbnRmID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoMSkKKworICAgIHY0X2FkZHJlc3NlcyA9IFt2NGFkZHIsIHY0aW50Zl0KKyAgICB2NF9vYmplY3RzID0gdjRfYWRkcmVzc2VzICsgW3Y0bmV0XQorICAgIHY2X2FkZHJlc3NlcyA9IFt2NmFkZHIsIHY2aW50Zl0KKyAgICB2Nl9vYmplY3RzID0gdjZfYWRkcmVzc2VzICsgW3Y2bmV0XQorICAgIG9iamVjdHMgPSB2NF9vYmplY3RzICsgdjZfb2JqZWN0cworCisgICAgZGVmIHRlc3RfZm9yZWlnbl90eXBlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICAjIF9fZXFfXyBzaG91bGQgbmV2ZXIgcmFpc2UgVHlwZUVycm9yIGRpcmVjdGx5CisgICAgICAgIG90aGVyID0gb2JqZWN0KCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9iaiwgb3RoZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9iaiA9PSBvdGhlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLl9fZXFfXyhvdGhlciksIE5vdEltcGxlbWVudGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19uZV9fKG90aGVyKSwgTm90SW1wbGVtZW50ZWQpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICAjIEVuc3VyZSBub25lIG9mIHRoZSBpbnRlcm5hbCBvYmplY3RzIGFjY2lkZW50YWxseQorICAgICAgICAjIGV4cG9zZSB0aGUgcmlnaHQgc2V0IG9mIGF0dHJpYnV0ZXMgdG8gYmVjb21lICJlcXVhbCIKKyAgICAgICAgZm9yIGxocyBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICBmb3IgcmhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgICAgICBpZiBsaHMgaXMgcmhzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGhzLCByaHMpCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY0X2FkZHJlc3NlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob2JqLCBzZWxmLnY0bmV0KQorICAgICAgICBmb3Igb2JqIGluIHNlbGYudjZfYWRkcmVzc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvYmosIHNlbGYudjZuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52NF9vYmplY3RzICsgW3NlbGYudjZuZXRdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmosIHNlbGYudjZuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52Nl9vYmplY3RzICsgW3NlbGYudjRuZXRdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmosIHNlbGYudjRuZXQpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlX29yZGVyaW5nKHNlbGYpOgorICAgICAgICBmb3IgbGhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIGZvciByaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGhzLCB0eXBlKHJocykpIG9yIGlzaW5zdGFuY2UocmhzLCB0eXBlKGxocykpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPCByaHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxocyA+IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzIDw9IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzID49IHJocykKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVfa2V5KHNlbGYpOgorICAgICAgICAjIHdpdGggZ2V0X21peGVkX3R5cGVfa2V5LCB5b3UgY2FuIHNvcnQgYWRkcmVzc2VzIGFuZCBuZXR3b3JrLgorICAgICAgICB2NF9vcmRlcmVkID0gW3NlbGYudjRhZGRyLCBzZWxmLnY0bmV0LCBzZWxmLnY0aW50Zl0KKyAgICAgICAgdjZfb3JkZXJlZCA9IFtzZWxmLnY2YWRkciwgc2VsZi52Nm5ldCwgc2VsZi52NmludGZdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjRfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi52NF9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjZfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi52Nl9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjRfb3JkZXJlZCArIHY2X29yZGVyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYub2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWlwYWRkcmVzcy5nZXRfbWl4ZWRfdHlwZV9rZXkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vdEltcGxlbWVudGVkLCBpcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KG9iamVjdCkpCisKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfdmVyc2lvbnMoc2VsZik6CisgICAgICAgICMgVGhlc2Ugc2hvdWxkIGFsd2F5cyByYWlzZSBUeXBlRXJyb3IKKyAgICAgICAgdjRhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICB2NG5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykKKyAgICAgICAgdjZhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpCisgICAgICAgIHY2bmV0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NGFkZHIuX19sdF9fLCB2NmFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRhZGRyLl9fZ3RfXywgdjZhZGRyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY0bmV0Ll9fbHRfXywgdjZuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRuZXQuX19ndF9fLCB2Nm5ldCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2YWRkci5fX2x0X18sIHY0YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NmFkZHIuX19ndF9fLCB2NGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjZuZXQuX19sdF9fLCB2NG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2Nm5ldC5fX2d0X18sIHY0bmV0KQorCisKKworY2xhc3MgSXBhZGRyVW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmlwdjRfYWRkcmVzcyA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNCcpCisgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpCisgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMy4wLzI0JykKKyAgICAgICAgI3NlbGYuaXB2NF9ob3N0bWFzayA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxMC4wLjAuMS8wLjI1NS4yNTUuMjU1JykKKyAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6MDowOjEnKQorICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoCisgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjA6MDoxLzY0JykKKyAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6NjU4OjIyYTpjYWZlOjovNjQnKQorCisgICAgZGVmIHRlc3RSZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY0SW50ZXJmYWNlKCcxLjIuMy40LzMyJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxJykpKQorCisgICAgIyBpc3N1ZTU3CisgICAgZGVmIHRlc3RBZGRyZXNzSW50TWF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKSArIDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4yLjAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKSAtIDI1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4wLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpICsgKDIqKjE2IC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZicpIC0gKDIqKjE2IC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKKworICAgIGRlZiB0ZXN0SW52YWxpZEludFRvQnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52NF9pbnRfdG9fcGFja2VkLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY0X2ludF90b19wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogaXBhZGRyZXNzLklQVjRMRU5HVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52Nl9pbnRfdG9fcGFja2VkLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY2X2ludF90b19wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogaXBhZGRyZXNzLklQVjZMRU5HVEgpCisKKyAgICBkZWYgdGVzdEludGVybmFscyhzZWxmKToKKyAgICAgICAgZmlyc3QsIGxhc3QgPSBpcGFkZHJlc3MuX2ZpbmRfYWRkcmVzc19yYW5nZShbCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEwJyksCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEyJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpcnN0LCBsYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyOCwgaXBhZGRyZXNzLl9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKDAsIDEyOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjROZXR3b3JrKCcxLjIuMy4wLzI0JykiLCByZXByKHNlbGYuaXB2NF9uZXR3b3JrKSkKKworICAgIGRlZiB0ZXN0TWlzc2luZ0FkZHJlc3NWZXJzaW9uKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlQWRkcmVzcyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKnZlcnNpb24iKToKKyAgICAgICAgICAgIGJyb2tlbi52ZXJzaW9uCisKKyAgICBkZWYgdGVzdE1pc3NpbmdOZXR3b3JrVmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xhc3MgQnJva2VuKGlwYWRkcmVzcy5fQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcGFzcworICAgICAgICBicm9rZW4gPSBCcm9rZW4oJzEyNy4wLjAuMScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOb3RJbXBsZW1lbnRlZEVycm9yLCAiQnJva2VuLip2ZXJzaW9uIik6CisgICAgICAgICAgICBicm9rZW4udmVyc2lvbgorCisgICAgZGVmIHRlc3RNaXNzaW5nQWRkcmVzc0NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlTmV0d29yayk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKmFkZHJlc3MiKToKKyAgICAgICAgICAgIGJyb2tlbi5fYWRkcmVzc19jbGFzcworCisgICAgZGVmIHRlc3RHZXROZXR3b3JrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MpLCAxNjkwOTA1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwgJzEuMi4zLjAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0MzM0MDM2NDcyOTQwMjIwOTA3NTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5ob3N0bWFzayksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdElwRnJvbUludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLl9pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgxNjkwOTA2MCkuX2lwKQorCisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4yLjMuNCcpCisgICAgICAgIGlwdjYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjA6MDoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0LCBpcGFkZHJlc3MuaXBfbmV0d29yayhpbnQoaXB2NC5uZXR3b3JrX2FkZHJlc3MpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY2LCBpcGFkZHJlc3MuaXBfbmV0d29yayhpbnQoaXB2Ni5uZXR3b3JrX2FkZHJlc3MpKSkKKworICAgICAgICB2Nl9pbnQgPSA0MjU0MDYxNjgyOTE4MjQ2OTQzMzU0Nzc2MjQ4MjA5Nzk0NjYyNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UuX2lwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKHY2X2ludCkuX2lwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX25ldHdvcmsoc2VsZi5pcHY0X2FkZHJlc3MuX2lwKS52ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX25ldHdvcmsoc2VsZi5pcHY2X2FkZHJlc3MuX2lwKS52ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIDYpCisKKyAgICBkZWYgdGVzdElwRnJvbVBhY2tlZChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS5faXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZShiJ1x4MDFceDAyXHgwM1x4MDQnKS5faXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcygnMjU1LjI1NC4yNTMuMjUyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4ZmZceGZlXHhmZFx4ZmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLmlwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgIGInXHgyMFx4MDFceDA2XHg1OFx4MDJceDJhXHhjYVx4ZmUnCisgICAgICAgICAgICAgICAgICAgIGInXHgwMlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDEnKS5pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzKCdmZmZmOjI6Mzo0OmZmZmY6OicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MoYidceGZmXHhmZlx4MDBceDAyXHgwMFx4MDNceDAwXHgwNCcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmZlx4ZmYnICsgYidceDAwJyAqIDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MoJzo6JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4MDAnICogMTYpKQorCisgICAgZGVmIHRlc3RHZXRJcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X2ludGVyZmFjZS5pcCksIDE2OTA5MDYwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfaW50ZXJmYWNlLmlwKSwgJzEuMi4zLjQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9pbnRlcmZhY2UuaXApLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfaW50ZXJmYWNlLmlwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxJykKKworICAgIGRlZiB0ZXN0R2V0TmV0bWFzayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X25ldHdvcmsubmV0bWFzayksIDQyOTQ5NjcwNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLm5ldG1hc2spLCAnMjU1LjI1NS4yNTUuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLm5ldG1hc2spLAorICAgICAgICAgICAgICAgICAgICAgICAgIDM0MDI4MjM2NjkyMDkzODQ2MzQ0NDkyNzg2MzM1ODA1ODY1OTg0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5wcmVmaXhsZW4sIDY0KQorCisgICAgZGVmIHRlc3RaZXJvTmV0bWFzayhzZWxmKToKKyAgICAgICAgaXB2NF96ZXJvX25ldG1hc2sgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoaXB2NF96ZXJvX25ldG1hc2submV0d29yay5uZXRtYXNrKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLm5ldHdvcmsuX2lzX3ZhbGlkX25ldG1hc2soCisgICAgICAgICAgICAgICAgc3RyKDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCcwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcHY0X3plcm9fbmV0bWFzay5faXNfdmFsaWRfbmV0bWFzaygnMC4wLjAuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCdpbnZhbGlkJykpCisKKyAgICAgICAgaXB2Nl96ZXJvX25ldG1hc2sgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChpcHY2X3plcm9fbmV0bWFzay5uZXR3b3JrLm5ldG1hc2spLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2Nl96ZXJvX25ldG1hc2submV0d29yay5faXNfdmFsaWRfbmV0bWFzaygKKyAgICAgICAgICAgICAgICBzdHIoMCkpKQorCisgICAgZGVmIHRlc3RJUHY0TmV0QW5kSG9zdG1hc2tzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjRfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnaW52YWxpZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV0Ll9pc192YWxpZF9uZXRtYXNrKCcxMjguMTI4LjEyOC4xMjgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzEyOC4xMjguMTI4LjEyNycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMTI4LjEyOC4xMjguMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzI1NS4xMjguMTI4LjEyOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnaW52YWxpZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV0Ll9pc19ob3N0bWFzaygnMTI4LjI1NS4yNTUuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnMjU1LjI1NS4yNTUuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnMS4yLjMuNCcpKQorCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTI3LjAuMC4wLzAuMC4wLjI1NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjQsIG5ldC5wcmVmaXhsZW4pCisKKyAgICBkZWYgdGVzdEdldEJyb2FkY2FzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLCAxNjkwOTMxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLCAnMS4yLjMuMjU1JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjZfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0NTE4NTAzOTEzNjc3MzE2NDIzNjcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdEdldFByZWZpeGxlbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsucHJlZml4bGVuLCAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsucHJlZml4bGVuLCA2NCkKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoKS5wcmVmaXhsZW4sIDIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4yLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzAuMC4wLjAvMCcpLm5ldHdvcmsuc3VwZXJuZXQoKSwKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMC4wLjAuMC8wJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgpLnByZWZpeGxlbiwgNjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KCkubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MC8wJykubmV0d29yay5zdXBlcm5ldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnOjowLzAnKSkKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KDMpLnByZWZpeGxlbiwgMjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KDMpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4wLjAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoMykucHJlZml4bGVuLCA2MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoMykubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZjg6OicpCisKKyAgICBkZWYgdGVzdEdldFN1cGVybmV0NChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmPTIsIG5ld19wcmVmaXg9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9MjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQobmV3X3ByZWZpeD0yMikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmPTIsIG5ld19wcmVmaXg9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9NjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQobmV3X3ByZWZpeD02MikpCisKKyAgICBkZWYgdGVzdEhvc3RzKHNlbGYpOgorICAgICAgICBob3N0cyA9IGxpc3Qoc2VsZi5pcHY0X25ldHdvcmsuaG9zdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyNTQsIGxlbihob3N0cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4xJyksIGhvc3RzWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMjU0JyksIGhvc3RzWy0xXSkKKworICAgICAgICAjIHNwZWNpYWwgY2FzZSB3aGVyZSBvbmx5IDEgYml0IGlzIGxlZnQgZm9yIGFkZHJlc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcyLjAuMC4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMi4wLjAuMScpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyLjAuMC4wLzMxJykuaG9zdHMoKSkpCisKKyAgICBkZWYgdGVzdEZhbmN5U3VibmV0dGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0zKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD0yNykpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9MjMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTI3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj00KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD02OCkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9NjMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTY4KSkKKworICAgIGRlZiB0ZXN0R2V0U3VibmV0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ucHJlZml4bGVuLCAyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobGlzdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVswXS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMy4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobGlzdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVsxXS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMy4xMjgnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKCkpWzBdLnByZWZpeGxlbiwgNjUpCisKKyAgICBkZWYgdGVzdEdldFN1Ym5ldEZvclNpbmdsZTMyKHNlbGYpOgorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjMuNC8zMicpCisgICAgICAgIHN1Ym5ldHMxID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKCldCisgICAgICAgIHN1Ym5ldHMyID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBbJzEuMi4zLjQvMzInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgc3VibmV0czIpCisKKyAgICBkZWYgdGVzdEdldFN1Ym5ldEZvclNpbmdsZTEyOChzZWxmKToKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzo6MS8xMjgnKQorICAgICAgICBzdWJuZXRzMSA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygpXQorICAgICAgICBzdWJuZXRzMiA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgWyc6OjEvMTI4J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VibmV0czEsIHN1Ym5ldHMyKQorCisgICAgZGVmIHRlc3RTdWJuZXQyKHNlbGYpOgorICAgICAgICBpcHMgPSBbc3RyKHgpIGZvciB4IGluIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBpcHMsCisgICAgICAgICAgICBbJzEuMi4zLjAvMjYnLCAnMS4yLjMuNjQvMjYnLCAnMS4yLjMuMTI4LzI2JywgJzEuMi4zLjE5Mi8yNiddKQorCisgICAgICAgIGlwc3Y2ID0gW3N0cih4KSBmb3IgeCBpbiBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaXBzdjYsCisgICAgICAgICAgICBbJzIwMDE6NjU4OjIyYTpjYWZlOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo0MDAwOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo4MDAwOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTpjMDAwOjovNjYnXSkKKworICAgIGRlZiB0ZXN0U3VibmV0RmFpbHNGb3JMYXJnZUNpZHJEaWZmKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cyg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoNjUpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKDY1KSkKKworICAgIGRlZiB0ZXN0U3VwZXJuZXRGYWlsc0ZvckxhcmdlQ2lkckRpZmYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5zdXBlcm5ldCwgMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5zdXBlcm5ldCwgNjUpCisKKyAgICBkZWYgdGVzdFN1Ym5ldEZhaWxzRm9yTmVnYXRpdmVDaWRyRGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKC0xKSkKKworICAgIGRlZiB0ZXN0R2V0TnVtX0FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5udW1fYWRkcmVzc2VzLCAyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzBdLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KCkubnVtX2FkZHJlc3NlcywgNTEyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsubnVtX2FkZHJlc3NlcywgMTg0NDY3NDQwNzM3MDk1NTE2MTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKCkpWzBdLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgOTIyMzM3MjAzNjg1NDc3NTgwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgpLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgMzY4OTM0ODgxNDc0MTkxMDMyMzIpCisKKyAgICBkZWYgdGVzdENvbnRhaW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjEyOC8yNScpIGluCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yaykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjQuMS8yNCcpIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmspCisgICAgICAgICMgV2UgY2FuIHRlc3QgYWRkcmVzc2VzIGFuZCBzdHJpbmcgYXMgd2VsbC4KKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjM3JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFkZHIxIGluIHNlbGYuaXB2NF9uZXR3b3JrKQorICAgICAgICAjIGlzc3VlIDYxLCBiYWQgbmV0d29yayBjb21wYXJpc29uIG9uIGxpa2UtaXAnZCBuZXR3b3JrIG9iamVjdHMKKyAgICAgICAgIyB3aXRoIGlkZW50aWNhbCBicm9hZGNhc3QgYWRkcmVzc2VzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8xNicpLl9fY29udGFpbnNfXygKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMC4wLjAvMTUnKSkpCisKKyAgICBkZWYgdGVzdE50aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmtbNV0pLCAnMS4yLjMuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuaXB2NF9uZXR3b3JrLl9fZ2V0aXRlbV9fLCAyNTYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmtbNV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6NScpCisKKyAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CisgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CisgICAgICAgIGFkZHIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE3Mi4zMS4yNTUuMTI4LzI1NS4yNTUuMjU1LjI0MCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjgsIGFkZHIucHJlZml4bGVuKQorICAgICAgICBhZGRyX2xpc3QgPSBsaXN0KGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTI4Jywgc3RyKGFkZHJfbGlzdFswXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTI4Jywgc3RyKGFkZHJbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzIuMzEuMjU1LjE0MycsIHN0cihhZGRyX2xpc3RbLTFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xNDMnLCBzdHIoYWRkclstMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfbGlzdFstMV0sIGFkZHJbLTFdKQorCisgICAgZGVmIHRlc3RFcXVhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09ICcnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlID09CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82MycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09IDIpCisKKyAgICBkZWYgdGVzdE5vdEVxdWFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9IFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzYzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfYWRkcmVzcyAhPSAyKQorCisgICAgZGVmIHRlc3RTbGFzaDMyQ29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICAnMS4yLjMuNC8yNTUuMjU1LjI1NS4yNTUnKSksICcxLjIuMy40LzMyJykKKworICAgIGRlZiB0ZXN0U2xhc2gxMjhDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzo6MS8xMjgnKQorCisgICAgZGVmIHRlc3RTbGFzaDBDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMC4wLjAuMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjQvMCcpCisKKyAgICBkZWYgdGVzdENvbGxhcHNpbmcoc2VsZik6CisgICAgICAgICMgdGVzdCBvbmx5IElQIGFkZHJlc3NlcyBpbmNsdWRpbmcgc29tZSBkdXBsaWNhdGVzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMicpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMycpCisgICAgICAgIGlwNSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuNCcpCisgICAgICAgIGlwNiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgICMgY2hlY2sgdGhhdCBhZGRyZXNlcyBhcmUgc3Vic3VtZWQgcHJvcGVybHkuCisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoCisgICAgICAgICAgICBbaXAxLCBpcDIsIGlwMywgaXA0LCBpcDUsIGlwNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLAorICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMzAnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS40LzMyJyldKQorCisgICAgICAgICMgdGVzdCBhIG1peCBvZiBJUCBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzIGluY2x1ZGluZyBzb21lIGR1cGxpY2F0ZXMKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4yJykKKyAgICAgICAgaXA0ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4zJykKKyAgICAgICAgI2lwNSA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjEuMS40LzMwJykKKyAgICAgICAgI2lwNiA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjEuMS40LzMwJykKKyAgICAgICAgIyBjaGVjayB0aGF0IGFkZHJlc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDIsIGlwMywgaXA0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMCcpXSkKKworICAgICAgICAjIHRlc3Qgb25seSBJUCBuZXR3b3JrcworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjQnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMjQnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4yLjAvMjQnKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4zLjAvMjQnKQorICAgICAgICBpcDUgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS40LjAvMjQnKQorICAgICAgICAjIHN0b3JlZCBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyIGIvYyB3ZSB3YW50IENvbGxhcHNlQWRkciB0byBjYWxsCisgICAgICAgICMgW10uc29ydAorICAgICAgICBpcDYgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjInKQorICAgICAgICAjIGNoZWNrIHRoYXQgYWRkcmVzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMiwgaXAzLCBpcDQsIGlwNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yMicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS40LjAvMjQnKV0pCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgdHdvIGFkZHJlc3NlcyBhcmUgc3VwZXJuZXQnZWQgcHJvcGVybHkKKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzIzJyldKQorCisgICAgICAgICMgdGVzdCBzYW1lIElQIG5ldHdvcmtzCisgICAgICAgIGlwX3NhbWUxID0gaXBfc2FtZTIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjEvMzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygKKyAgICAgICAgICAgICAgICAgICAgW2lwX3NhbWUxLCBpcF9zYW1lMl0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBfc2FtZTFdKQorCisgICAgICAgICMgdGVzdCBzYW1lIElQIGFkZHJlc3NlcworICAgICAgICBpcF9zYW1lMSA9IGlwX3NhbWUyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoCisgICAgICAgICAgICAgICAgICAgIFtpcF9zYW1lMSwgaXBfc2FtZTJdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xLzMyJyldKQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMDAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMjAnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi85NicpCisgICAgICAgICMgdGVzdCB0aGF0IGlwdjYgYWRkcmVzc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDIsIGlwM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLCBbaXAzXSkKKworICAgICAgICAjIHRoZSB0b2VqYW0gdGVzdAorICAgICAgICBhZGRyX3R1cGxlcyA9IFsKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpKSwKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzI0JyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyMCcpKSwKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzMyJyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyOCcpKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgaXAxLCBpcDIgaW4gYWRkcl90dXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXAxLCBpcDJdKQorCisgICAgZGVmIHRlc3RTdW1tYXJpemluZyhzZWxmKToKKyAgICAgICAgI2lwID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MKKyAgICAgICAgI2lwbmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsKKyAgICAgICAgc3VtbWFyaXplID0gaXBhZGRyZXNzLnN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjI1NScpCisKKyAgICAgICAgIyBzdW1tYXJpemUgd29ya3Mgb25seSBmb3IgSVB2NCAmIElQdjYKKyAgICAgICAgY2xhc3MgSVB2N0FkZHJlc3MoaXBhZGRyZXNzLklQdjZBZGRyZXNzKToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDcKKyAgICAgICAgaXBfaW52YWxpZDEgPSBJUHY3QWRkcmVzcygnOjoxJykKKyAgICAgICAgaXBfaW52YWxpZDIgPSBJUHY3QWRkcmVzcygnOjoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwX2ludmFsaWQxLCBpcF9pbnZhbGlkMikpCisgICAgICAgICMgdGVzdCB0aGF0IGEgc3VtbWFyeSBvdmVyIGlwNCAmIGlwNiBmYWlscworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcDEsIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpKQorICAgICAgICAjIHRlc3QgYSAvMjQgaXMgc3VtbWFyaXplZCBwcm9wZXJseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSlbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAvMjQnKSkKKyAgICAgICAgIyB0ZXN0IGFuICBJUHY0IHJhbmdlIHRoYXQgaXNuJ3Qgb24gYSBuZXR3b3JrIGJ5dGUgYm91bmRhcnkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wLzI5JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS44JyldKQorICAgICAgICAjIGFsbCEKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDApCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhpcGFkZHJlc3MuSVB2NEFkZHJlc3MuX0FMTF9PTkVTKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzAuMC4wLjAvMCcpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpKQorCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOjonKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKyAgICAgICAgIyB0ZXN0IGEgSVB2NiBpcyBzdW1hbXJpemVkIHByb3Blcmx5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTo6LzE2JykpCisgICAgICAgICMgdGVzdCBhbiBJUHY2IHJhbmdlIHRoYXQgaXNuJ3Qgb24gYSBuZXR3b3JrIGJ5dGUgYm91bmRhcnkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE6Oi8xNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjo6LzEyOCcpXSkKKworICAgICAgICAjIHRlc3QgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGZpcnN0IGlzIGdyZWF0ZXIgdGhhbiBsYXN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4wLjAnKSkpCisgICAgICAgICMgdGVzdCBleGNlcHRpb24gcmFpc2VkIHdoZW4gZmlyc3QgYW5kIGxhc3QgYXJlbid0IElQIGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4wLjAnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjAuMCcpKSkKKyAgICAgICAgIyB0ZXN0IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaXJzdCBhbmQgbGFzdCBhcmUgbm90IHNhbWUgdmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjonKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMC4wJykpKQorCisgICAgZGVmIHRlc3RBZGRyZXNzQ29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjInKSkKKworICAgIGRlZiB0ZXN0SW50ZXJmYWNlQ29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoyJykpCisKKyAgICBkZWYgdGVzdE5ldHdvcmtDb21wYXJpc29uKHNlbGYpOgorICAgICAgICAjIGlwMSBhbmQgaXAyIGhhdmUgdGhlIHNhbWUgbmV0d29yayBhZGRyZXNzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8yNCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMicpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjIuMC8yNCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMyA+IGlwMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMS5jb21wYXJlX25ldHdvcmtzKGlwMSksIDApCisKKyAgICAgICAgIyBpZiBhZGRyZXNzZXMgYXJlIHRoZSBzYW1lLCBzb3J0IGJ5IG5ldG1hc2sKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDIpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDIuY29tcGFyZV9uZXR3b3JrcyhpcDEpLCAxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAzKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAzLmNvbXBhcmVfbmV0d29ya3MoaXAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMS5fZ2V0X25ldHdvcmtzX2tleSgpIDwgaXAzLl9nZXRfbmV0d29ya3Nfa2V5KCkpCisKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjIwMDA6Oi85NicpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMToyMDAxOjovOTYnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZmZmZjoyMDAwOjovOTYnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEgPCBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDMgPiBpcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAzKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEuX2dldF9uZXR3b3Jrc19rZXkoKSA8IGlwMy5fZ2V0X25ldHdvcmtzX2tleSgpKQorCisgICAgICAgICMgVGVzdCBjb21wYXJpbmcgZGlmZmVyZW50IHByb3RvY29scy4KKyAgICAgICAgIyBTaG91bGQgYWx3YXlzIHJhaXNlIGEgVHlwZUVycm9yLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLmNvbXBhcmVfbmV0d29ya3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrKQorICAgICAgICBpcHY2ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6LzAnKQorICAgICAgICBpcHY0ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzAuMC4wLjAvMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2NC5fX2x0X18sIGlwdjYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2NC5fX2d0X18sIGlwdjYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2Ni5fX2x0X18sIGlwdjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2Ni5fX2d0X18sIGlwdjQpCisKKyAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDE5LgorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4yLjEyOC8yNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxIDwgaXAxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMSA+IGlwMSkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMy4wLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDIgPCBpcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxID4gaXAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyID4gaXAxKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4zLjAvMjUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyIDwgaXAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMyA8IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDIgPiBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDMgPiBpcDIpCisKKyAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDI4LgorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMC8zMScpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4wJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEwLjEwLjIvMzEnKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMicpCisgICAgICAgIHNvcnRlZCA9IFtpcDEsIGlwMiwgaXAzLCBpcDRdCisgICAgICAgIHVuc29ydGVkID0gW2lwMiwgaXA0LCBpcDEsIGlwM10KKyAgICAgICAgdW5zb3J0ZWQuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkLCB1bnNvcnRlZCkKKyAgICAgICAgdW5zb3J0ZWQgPSBbaXA0LCBpcDEsIGlwMywgaXAyXQorICAgICAgICB1bnNvcnRlZC5zb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQsIHVuc29ydGVkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwMS5fX2x0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xMC4xMC4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXAyLl9fbHRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEwLjEwLjAnKSkKKworICAgICAgICAjIDw9LCA+PQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjInKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MicpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpKQorCisgICAgZGVmIHRlc3RTdHJpY3ROZXR3b3JrcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLmlwX25ldHdvcmssICcxOTIuMTY4LjEuMS8yNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy5pcF9uZXR3b3JrLCAnOjoxLzEyMCcpCisKKyAgICBkZWYgdGVzdE92ZXJsYXBzKHNlbGYpOgorICAgICAgICBvdGhlciA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjMuMC8zMCcpCisgICAgICAgIG90aGVyMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjIuMC8yNCcpCisgICAgICAgIG90aGVyMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjIuNjQvMjYnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X25ldHdvcmsub3ZlcmxhcHMob3RoZXIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9uZXR3b3JrLm92ZXJsYXBzKG90aGVyMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdGhlcjIub3ZlcmxhcHMob3RoZXIzKSkKKworICAgIGRlZiB0ZXN0RW1iZWRkZWRJcHY0KHNlbGYpOgorICAgICAgICBpcHY0X3N0cmluZyA9ICcxOTIuMTY4LjAuMScKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKGlwdjRfc3RyaW5nKQorICAgICAgICB2NGNvbXBhdF9pcHY2ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6JXMnICUgaXB2NF9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHY0Y29tcGF0X2lwdjYuaXApLCBpbnQoaXB2NC5pcCkpCisgICAgICAgIHY0bWFwcGVkX2lwdjYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjpmZmZmOiVzJyAlIGlwdjRfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHY0bWFwcGVkX2lwdjYuaXAsIGlwdjQuaXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvciwgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjEuMS4xLjE6MS4xLjEuMScpCisKKyAgICAjIElzc3VlIDY3OiBJUHY2IHdpdGggZW1iZWRkZWQgSVB2NCBhZGRyZXNzIG5vdCByZWNvZ25pemVkLgorICAgIGRlZiB0ZXN0SVB2NkFkZHJlc3NUb29MYXJnZShzZWxmKToKKyAgICAgICAgIyBSRkM0MjkxIDIuNS41LjIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpGRkZGOjE5Mi4wLjIuMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpGRkZGOmMwMDA6MjAxJykpCisgICAgICAgICMgUkZDNDI5MSAyLjIgKHBhcnQgMykgeDo6ZC5kLmQuZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdGRkZGOjoxOTIuMC4yLjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ0ZGRkY6OmMwMDA6MjAxJykpCisKKyAgICBkZWYgdGVzdElQVmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfYWRkcmVzcy52ZXJzaW9uLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9hZGRyZXNzLnZlcnNpb24sIDYpCisKKyAgICBkZWYgdGVzdE1heFByZWZpeExlbmd0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLm1heF9wcmVmaXhsZW4sIDMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UubWF4X3ByZWZpeGxlbiwgMTI4KQorCisgICAgZGVmIHRlc3RQYWNrZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2FkZHJlc3MucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMVx4MDJceDAzXHgwNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzI1NS4yNTQuMjUzLjI1MicpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZmZceGZlXHhmZFx4ZmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9hZGRyZXNzLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MjBceDAxXHgwNlx4NThceDAyXHgyYVx4Y2FceGZlJworICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCdmZmZmOjI6Mzo0OmZmZmY6OicpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZmZceGZmXHgwMFx4MDJceDAwXHgwM1x4MDBceDA0XHhmZlx4ZmYnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBiJ1x4MDAnICogNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxOjA6MDowOjAnKS5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAwJyAqIDYgKyBiJ1x4MDBceDAxJyArIGInXHgwMCcgKiA4KQorCisgICAgZGVmIHRlc3RJcFN0ckZyb21QcmVmaXhsZW4oc2VsZik6CisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXB2NC5faXBfc3RyaW5nX2Zyb21fcHJlZml4KCksICcyNTUuMjU1LjI1NS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0Ll9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoMjgpLCAnMjU1LjI1NS4yNTUuMjQwJykKKworICAgIGRlZiB0ZXN0SXBUeXBlKHNlbGYpOgorICAgICAgICBpcHY0bmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMi4zLjQnKQorICAgICAgICBpcHY0YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykKKyAgICAgICAgaXB2Nm5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEuMi4zLjQnKQorICAgICAgICBpcHY2YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEuMi4zLjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaywgdHlwZShpcHY0bmV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MsIHR5cGUoaXB2NGFkZHIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaywgdHlwZShpcHY2bmV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MsIHR5cGUoaXB2NmFkZHIpKQorCisgICAgZGVmIHRlc3RSZXNlcnZlZElwdjQoc2VsZik6CisgICAgICAgICMgdGVzdCBuZXR3b3JrcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgJzIyNC4xLjEuMS8zMScpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzI0MC4wLjAuMCcpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjQwLjAuMC4wJykuaXNfcmVzZXJ2ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICcxOTIuMTY4LjEuMS8xNycpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMTY5LjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzEwLjI1NS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzExLjAuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzExLjAuMC4wJykuaXNfcmVzZXJ2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzE3Mi4zMS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE3Mi4zMi4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE2OS4yNTQuMS4wLzI0JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTY5LjI1NC4xMDAuMjAwLzI0JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNjkuMjU1LjEwMC4yMDAvMjQnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTI3LjEwMC4yMDAuMjU0LzMyJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzEyNy40Mi4wLjAvMTYnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEyOC4wLjAuMCcpLmlzX2xvb3BiYWNrKQorCisgICAgICAgICMgdGVzdCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMC4wLjAuMCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMjQuMS4xLjEnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyNDAuMC4wLjAnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI0MC4wLjAuMScpLmlzX3Jlc2VydmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMzkuMjU1LjI1NS4yNTUnKS5pc19yZXNlcnZlZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY4LjEuMScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY5LjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJzEwLjI1NS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzExLjAuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnMTcyLjMxLjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTcyLjMyLjAuMCcpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNjkuMjU0LjEwMC4yMDAnKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNjkuMjU1LjEwMC4yMDAnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEyNy4xMDAuMjAwLjI1NCcpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMjcuNDIuMC4wJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMjguMC4wLjAnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMC4wLjAuMCcpLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgZGVmIHRlc3RSZXNlcnZlZElwdjYoc2VsZik6CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmZmZjo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKDIqKjEyOCAtIDEpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmYwMDo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmRmZjo6JykuaXNfbXVsdGljYXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlY2Y6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZlZmY6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmYmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZmMDA6OicpLmlzX3NpdGVfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmMwMDo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmMwMDpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZiZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlMDA6OicpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVhMDo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmViZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmU3ZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVjMDo6JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzA6MDo6MDowMScpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEvMTI3JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OicpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMDo6MCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6Oi8xMjcnKS5pc191bnNwZWNpZmllZCkKKworICAgICAgICAjIHRlc3QgYWRkcmVzc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmZmY6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygyKioxMjggLSAxKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmMDA6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZkZmY6OicpLmlzX211bHRpY2FzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZWNmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmZWZmOmZmZmY6ZmZmZjpmZmZmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmJmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZjAwOjonKS5pc19zaXRlX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZjMDA6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZjMDA6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmYmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZTAwOjonKS5pc19wcml2YXRlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlYTA6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlYmY6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlN2Y6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlYzA6OicpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMDowOjowOjAxJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoyJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMDo6MCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykuaXNfdW5zcGVjaWZpZWQpCisKKyAgICAgICAgIyBzb21lIGdlbmVyaWMgSUVURiByZXNlcnZlZCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAwOjonKS5pc19yZXNlcnZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnNDAwMDo6MS8xMjgnKS5pc19yZXNlcnZlZCkKKworICAgIGRlZiB0ZXN0SXB2NE1hcHBlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpmZmZmOjE5Mi4xNjguMS4xJykuaXB2NF9tYXBwZWQsCisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6YzBhODoxMDEnKS5pcHY0X21hcHBlZCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpmZmZmOmMwYTg6MTAxJykuaXB2NF9tYXBwZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykpCisKKyAgICBkZWYgdGVzdEFkZHJFeGNsdWRlKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI2JykKKyAgICAgICAgYWRkcjMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMi4xLjAvMjQnKQorICAgICAgICBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpCisgICAgICAgIGFkZHI1ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzMyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuNjQvMjYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4xMjgvMjUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHI0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIxKSksIFtdKQorCisgICAgZGVmIHRlc3RIYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMTAuMS4xLjAvMjQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxMC4xLjEuMC8yNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpKSkKKyAgICAgICAgIyBpNzAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGludChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4yLjMuNCcpLl9pcCkpKSkKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE6OicpCisgICAgICAgIGR1bW15ID0ge30KKyAgICAgICAgZHVtbXlbc2VsZi5pcHY0X2FkZHJlc3NdID0gTm9uZQorICAgICAgICBkdW1teVtzZWxmLmlwdjZfYWRkcmVzc10gPSBOb25lCisgICAgICAgIGR1bW15W2lwMV0gPSBOb25lCisgICAgICAgIGR1bW15W2lwMl0gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyBpbiBkdW1teSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMiBpbiBkdW1teSkKKworICAgIGRlZiB0ZXN0SVBCYXNlcyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY0X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNCcsIG5ldC5jb21wcmVzc2VkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIG5ldC5faXBfaW50X2Zyb21fcHJlZml4KDI0KSwKKyAgICAgICAgICAgICAgICBuZXQuX2lwX2ludF9mcm9tX3ByZWZpeChOb25lKSkKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY2X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV0Ll9zdHJpbmdfZnJvbV9pcF9pbnQsIDIqKjEyOCArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLmlwdjZfYWRkcmVzcy5faXApLAorICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9hZGRyZXNzLl9zdHJpbmdfZnJvbV9pcF9pbnQoTm9uZSkpCisKKyAgICBkZWYgdGVzdElQdjZOZXR3b3JrSGVscGVycyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY2X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcsIG5ldC53aXRoX3ByZWZpeGxlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi9mZmZmOmZmZmY6ZmZmZjpmZmZmOjonLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC53aXRoX25ldG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6NjU4OjIyYTpjYWZlOjovOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQud2l0aF9ob3N0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcsIHN0cihuZXQpKQorCisgICAgZGVmIHRlc3RJUHY0TmV0d29ya0hlbHBlcnMoc2VsZik6CisgICAgICAgIG5ldCA9IHNlbGYuaXB2NF9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjQnLCBuZXQud2l0aF9wcmVmaXhsZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjU1LjI1NS4yNTUuMCcsIG5ldC53aXRoX25ldG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMC4wLjAuMjU1JywgbmV0LndpdGhfaG9zdG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjQnLCBzdHIobmV0KSkKKworICAgIGRlZiB0ZXN0Q29weUNvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoYWRkcjEpCisgICAgICAgIGFkZHIzID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykKKyAgICAgICAgYWRkcjQgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKGFkZHIzKQorICAgICAgICBhZGRyNSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjEsIGFkZHIyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHIzLCBhZGRyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyNSwgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHI1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyNiwgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHI2KSkKKworICAgIGRlZiB0ZXN0Q29tcHJlc3NJUHY2QWRkcmVzcyhzZWxmKToKKyAgICAgICAgdGVzdF9hZGRyZXNzZXMgPSB7CisgICAgICAgICAgICAnMToyOjM6NDo1OjY6Nzo4JzogJzE6MjozOjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDowOjQ6MDowOjA6OCc6ICcyMDAxOjA6MDo0Ojo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjA6NDo1OjY6Nzo4JzogJzIwMDE6OjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDozOjQ6NTo2Ojc6OCc6ICcyMDAxOjA6Mzo0OjU6Njo3OjgvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA6Mzo0OjU6Njo3OjgnOiAnMjAwMTowOjM6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMDowOjM6MDowOjA6MDpmZmZmJzogJzA6MDozOjpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMDowOjA6NDowOjA6MDpmZmZmJzogJzo6NDowOjA6MDpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMDowOjA6MDo1OjA6MDpmZmZmJzogJzo6NTowOjA6ZmZmZi8xMjgnLAorICAgICAgICAgICAgJzE6MDowOjQ6MDowOjc6OCc6ICcxOjo0OjA6MDo3OjgvMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjAnOiAnOjovMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjAvMCc6ICc6Oi8wJywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjEnOiAnOjoxLzEyOCcsCisgICAgICAgICAgICAnMjAwMTowNjU4OjAyMmE6Y2FmZTowMDAwOjAwMDA6MDAwMDowMDAwLzY2JzoKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY2JywKKyAgICAgICAgICAgICc6OjEuMi4zLjQnOiAnOjoxMDI6MzA0LzEyOCcsCisgICAgICAgICAgICAnMToyOjM6NDo1OmZmZmY6MS4yLjMuNCc6ICcxOjI6Mzo0OjU6ZmZmZjoxMDI6MzA0LzEyOCcsCisgICAgICAgICAgICAnOjo3OjY6NTo0OjM6MjoxJzogJzA6Nzo2OjU6NDozOjI6MS8xMjgnLAorICAgICAgICAgICAgJzo6Nzo2OjU6NDozOjI6MCc6ICcwOjc6Njo1OjQ6MzoyOjAvMTI4JywKKyAgICAgICAgICAgICc3OjY6NTo0OjM6MjoxOjonOiAnNzo2OjU6NDozOjI6MTowLzEyOCcsCisgICAgICAgICAgICAnMDo2OjU6NDozOjI6MTo6JzogJzA6Njo1OjQ6MzoyOjE6MC8xMjgnLAorICAgICAgICAgICAgfQorICAgICAgICBmb3IgdW5jb21wcmVzc2VkLCBjb21wcmVzc2VkIGluIGxpc3QodGVzdF9hZGRyZXNzZXMuaXRlbXMoKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWQsIHN0cihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWQpKSkKKworICAgIGRlZiB0ZXN0RXhwbG9kZVNob3J0SGFuZElwU3RyKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjoxJykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6MDo1ZWY1Ojc5ZmQ6MDo1OWQ6YTBlNTpiYTEnKQorICAgICAgICBhZGRyMyA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6Lzk2JykKKyAgICAgICAgYWRkcjQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMTc4LjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDEvMTI4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMS5leHBsb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxLzEyOCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKS5leHBsb2RlZCkKKyAgICAgICAgIyBpc3N1ZSA3NworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6NWVmNTo3OWZkOjAwMDA6MDU5ZDphMGU1OjBiYTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIyLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAvOTYnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIzLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTIuMTY4LjE3OC4xJywgYWRkcjQuZXhwbG9kZWQpCisKKyAgICBkZWYgdGVzdEludFJlcHJlc2VudGF0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDE2OTA5MDYwLCBpbnQoc2VsZi5pcHY0X2FkZHJlc3MpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmlwdjZfYWRkcmVzcykpCisKKyAgICBkZWYgdGVzdEZvcmNlVmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfbmV0d29yaygxKS52ZXJzaW9uLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygxKS52ZXJzaW9uLCA2KQorCisgICAgZGVmIHRlc3RXaXRoU3RhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLndpdGhfcHJlZml4bGVuLCAiMS4yLjMuNC8yNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS53aXRoX25ldG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIjEuMi4zLjQvMjU1LjI1NS4yNTUuMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS53aXRoX2hvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICIxLjIuMy40LzAuMC4wLjI1NSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLndpdGhfcHJlZml4bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2Uud2l0aF9uZXRtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKKyAgICAgICAgIyB0aGlzIHByb2JhYmx5IGRvbid0IG1ha2UgbXVjaCBzZW5zZSwgYnV0IGl0J3MgaW5jbHVkZWQgZm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eSB3aXRoIGlwdjQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLndpdGhfaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS86OmZmZmY6ZmZmZjpmZmZmOmZmZmYnKQorCisgICAgZGVmIHRlc3ROZXR3b3JrRWxlbWVudENhY2hpbmcoc2VsZik6CisgICAgICAgICMgVjQgLSBtYWtlIHN1cmUgd2UncmUgZW1wdHkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnbmV0d29ya19hZGRyZXNzJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisKKyAgICAgICAgIyBWNCAtIHBvcHVsYXRlIGFuZCB0ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcwLjAuMC4yNTUnKSkKKworICAgICAgICAjIFY0IC0gY2hlY2sgd2UncmUgY2FjaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorCisgICAgICAgICMgVjYgLSBtYWtlIHN1cmUgd2UncmUgZW1wdHkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKworICAgICAgICAjIFY2IC0gcG9wdWxhdGUgYW5kIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTo6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOjonKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MsCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzLAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLmhvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisKKyAgICAgICAgIyBWNiAtIGNoZWNrIHdlJ3JlIGNhY2hlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjZfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgICAgICdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLl9jYWNoZSkKKworICAgIGRlZiB0ZXN0VGVyZWRvKHNlbGYpOgorICAgICAgICAjIHN0b2xlbiBmcm9tIHdpa2lwZWRpYQorICAgICAgICBzZXJ2ZXIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzY1LjU0LjIyNy4xMjAnKQorICAgICAgICBjbGllbnQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNDUnKQorICAgICAgICB0ZXJlZG9fYWRkciA9ICcyMDAxOjAwMDA6NDEzNjplMzc4OjgwMDA6NjNiZjozZmZmOmZkZDInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHNlcnZlciwgY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcyh0ZXJlZG9fYWRkcikudGVyZWRvKQorICAgICAgICBiYWRfYWRkciA9ICcyMDAwOjo0MTM2OmUzNzg6ODAwMDo2M2JmOjNmZmY6ZmRkMicKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfYWRkcmVzcyhiYWRfYWRkcikudGVyZWRvKQorICAgICAgICBiYWRfYWRkciA9ICcyMDAxOjAwMDE6NDEzNjplMzc4OjgwMDA6NjNiZjozZmZmOmZkZDInCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX2FkZHJlc3MoYmFkX2FkZHIpLnRlcmVkbykKKworICAgICAgICAjIGk3NworICAgICAgICB0ZXJlZG9fYWRkciA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTowOjVlZjU6NzlmZDowOjU5ZDphMGU1OmJhMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnOTQuMjQ1LjEyMS4yNTMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCc5NS4yNi4yNDQuOTQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVyZWRvX2FkZHIudGVyZWRvKQorCisgICAgZGVmIHRlc3RzaXh0b2ZvdXIoc2VsZik6CisgICAgICAgIHNpeHRvZm91cmFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMjphYzFkOjJkNjQ6OjEnKQorICAgICAgICBiYWRfYWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAwOmFjMWQ6MmQ2NDo6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxNzIuMjkuNDUuMTAwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l4dG9mb3VyYWRkci5zaXh0b2ZvdXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmFkX2FkZHIuc2l4dG9mb3VyKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKaW5kZXggZTQyNDMwMy4uYjJmM2U2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQpAQCAtMiw2ICsyLDggQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBURVNURk4sIHVubGluaywgY3B5dGhvbl9vbmx5CitpbXBvcnQgcGlja2xlCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiAKICMgVGVzdCByZXN1bHQgb2YgdHJpcGxlIGxvb3AgKHRvbyBiaWcgdG8gaW5saW5lKQogVFJJUExFVFMgPSBbKDAsIDAsIDApLCAoMCwgMCwgMSksICgwLCAwLCAyKSwKQEAgLTI4LDYgKzMwLDggQEAKICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgc2VsZi5pID0gcmVzICsgMQogICAgICAgICByZXR1cm4gcmVzCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgogCiBjbGFzcyBJdGVyYXRpbmdTZXF1ZW5jZUNsYXNzOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuKToKQEAgLTQ5LDcgKzUzLDkgQEAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgSGVscGVyIHRvIGNoZWNrIHRoYXQgYW4gaXRlcmF0b3IgcmV0dXJucyBhIGdpdmVuIHNlcXVlbmNlCi0gICAgZGVmIGNoZWNrX2l0ZXJhdG9yKHNlbGYsIGl0LCBzZXEpOgorICAgIGRlZiBjaGVja19pdGVyYXRvcihzZWxmLCBpdCwgc2VxLCBwaWNrbGU9VHJ1ZSk6CisgICAgICAgIGlmIHBpY2tsZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKGl0LCBzZXEpCiAgICAgICAgIHJlcyA9IFtdCiAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICB0cnk6CkBAIC02MCwxMiArNjYsMzMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHNlcSkKIAogICAgICMgSGVscGVyIHRvIGNoZWNrIHRoYXQgYSBmb3IgbG9vcCBnZW5lcmF0ZXMgYSBnaXZlbiBzZXF1ZW5jZQotICAgIGRlZiBjaGVja19mb3JfbG9vcChzZWxmLCBleHByLCBzZXEpOgorICAgIGRlZiBjaGVja19mb3JfbG9vcChzZWxmLCBleHByLCBzZXEsIHBpY2tsZT1UcnVlKToKKyAgICAgICAgaWYgcGlja2xlOgorICAgICAgICAgICAgc2VsZi5jaGVja19waWNrbGUoaXRlcihleHByKSwgc2VxKQogICAgICAgICByZXMgPSBbXQogICAgICAgICBmb3IgdmFsIGluIGV4cHI6CiAgICAgICAgICAgICByZXMuYXBwZW5kKHZhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHNlcSkKIAorICAgICMgSGVscGVyIHRvIGNoZWNrIHBpY2tsYWJpbGl0eQorICAgIGRlZiBjaGVja19waWNrbGUoc2VsZiwgaXRvcmcsIHNlcSk6CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICMgQ2Fubm90IGFzc2VydCB0eXBlIGVxdWFsaXR5IGJlY2F1c2UgZGljdCBpdGVyYXRvcnMgdW5waWNrbGUgYXMgbGlzdAorICAgICAgICAjIGl0ZXJhdG9ycy4KKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoaXQsIGNvbGxlY3Rpb25zLmFiYy5JdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXFbMTpdKQorCiAgICAgIyBUZXN0IGJhc2ljIHVzZSBvZiBpdGVyKCkgZnVuY3Rpb24KICAgICBkZWYgdGVzdF9pdGVyX2Jhc2ljKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIocmFuZ2UoMTApKSwgbGlzdChyYW5nZSgxMCkpKQpAQCAtMTM4LDcgKzE2NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgaSA+IDEwMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvciAjIEVtZXJnZW5jeSBzdG9wCiAgICAgICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKEMoKSwgMTApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihDKCksIDEwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgdHdvLWFyZ3VtZW50IGl0ZXIoKSB3aXRoIGZ1bmN0aW9uCiAgICAgZGVmIHRlc3RfaXRlcl9mdW5jdGlvbihzZWxmKToKQEAgLTE0Niw3ICsxNzMsNyBAQAogICAgICAgICAgICAgaSA9IHN0YXRlWzBdCiAgICAgICAgICAgICBzdGF0ZVswXSA9IGkrMQogICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDEwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMTApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCB0d28tYXJndW1lbnQgaXRlcigpIHdpdGggZnVuY3Rpb24gdGhhdCByYWlzZXMgU3RvcEl0ZXJhdGlvbgogICAgIGRlZiB0ZXN0X2l0ZXJfZnVuY3Rpb25fc3RvcChzZWxmKToKQEAgLTE1Niw3ICsxODMsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgIHN0YXRlWzBdID0gaSsxCiAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMjApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAyMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IGV4Y2VwdGlvbiBwcm9wYWdhdGlvbiB0aHJvdWdoIGZ1bmN0aW9uIGl0ZXJhdG9yCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9uX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTk4LDcgKzIyNSw3IEBACiAgICAgICAgICAgICAgICAgaWYgaSA9PSAxMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICAgICAgIHJldHVybiBTZXF1ZW5jZUNsYXNzLl9fZ2V0aXRlbV9fKHNlbGYsIGkpCi0gICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoTXlTZXF1ZW5jZUNsYXNzKDIwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKE15U2VxdWVuY2VDbGFzcygyMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IGEgYmlnIHJhbmdlCiAgICAgZGVmIHRlc3RfaXRlcl9iaWdfcmFuZ2Uoc2VsZik6CkBAIC0yMzcsOCArMjY0LDggQEAKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBmID0gb3BlbihURVNURk4sICJyIikKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbIjBcbiIsICIxXG4iLCAiMlxuIiwgIjNcbiIsICI0XG4iXSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgW10pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFsiMFxuIiwgIjFcbiIsICIyXG4iLCAiM1xuIiwgIjRcbiJdLCBwaWNrbGU9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFtdLCBwaWNrbGU9RmFsc2UpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggOGNkYzU5Ny4uOTBlODVhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTM3LDYgKzM3LDEzIEBACiAgICAgJ1Rlc3QgcHJlZGljYXRlJwogICAgIHJldHVybiB4JTI9PTEKIAorZGVmIHR1cGxlaXplKCphcmdzKToKKyAgICByZXR1cm4gYXJncworCitkZWYgaXJhbmdlKG4pOgorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICB5aWVsZCBpCisKIGNsYXNzIFN0b3BOb3c6CiAgICAgJ0NsYXNzIGVtdWxhdGluZyBhbiBlbXB0eSBpdGVyYWJsZS4nCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgpAQCAtNTUsOCArNjIsNTkgQEAKICAgICAnRmFjdG9yaWFsJwogICAgIHJldHVybiBwcm9kKHJhbmdlKDEsIG4rMSkpCiAKKyMgcm9vdCBsZXZlbCBtZXRob2RzIGZvciBwaWNrbGluZyBhYmlsaXR5CitkZWYgdGVzdFIocik6CisgICAgcmV0dXJuIHJbMF0KKworZGVmIHRlc3RSMihyKToKKyAgICByZXR1cm4gclsyXQorCitkZWYgdW5kZXJ0ZW4oeCk6CisgICAgcmV0dXJuIHg8MTAKKwogY2xhc3MgVGVzdEJhc2ljT3BzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiBwaWNrbGV0ZXN0KHNlbGYsIGl0LCBzdG9wPTQsIHRha2U9MSwgY29tcGFyZT1Ob25lKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGFuIGl0ZXJhdG9yIGlzIHRoZSBzYW1lIGFmdGVyIHBpY2tsaW5nLCBhbHNvIHdoZW4gcGFydC1jb25zdW1lZCIiIgorICAgICAgICBkZWYgZXhwYW5kKGl0LCBpPTApOgorICAgICAgICAgICAgIyBSZWN1cnNpdmVseSBleHBhbmQgaXRlcmFibGVzLCB3aXRoaW4gc2Vuc2libGUgYm91bmRzCisgICAgICAgICAgICBpZiBpID4gMTA6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJpbmZpbml0ZSByZWN1cnNpb24gZW5jb3VudGVyZWQiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdCwgc3RyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsID0gbGlzdChpc2xpY2UoaXQsIHN0b3ApKQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQgIyBjYW4ndCBleHBhbmQgaXQKKyAgICAgICAgICAgIHJldHVybiBbZXhwYW5kKGUsIGkrMSkgZm9yIGUgaW4gbF0KKworICAgICAgICAjIFRlc3QgdGhlIGluaXRpYWwgY29weSBhZ2FpbnN0IHRoZSBvcmlnaW5hbAorICAgICAgICBkdW1wID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpMiA9IHBpY2tsZS5sb2FkcyhkdW1wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXQpLCB0eXBlKGkyKSkKKyAgICAgICAgYSwgYiA9IGV4cGFuZChpdCksIGV4cGFuZChpMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICBpZiBjb21wYXJlOgorICAgICAgICAgICAgYyA9IGV4cGFuZChjb21wYXJlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBjKQorCisgICAgICAgICMgVGFrZSBmcm9tIHRoZSBjb3B5LCBhbmQgY3JlYXRlIGFub3RoZXIgY29weSBhbmQgY29tcGFyZSB0aGVtLgorICAgICAgICBpMyA9IHBpY2tsZS5sb2FkcyhkdW1wKQorICAgICAgICB0b29rID0gMAorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSh0YWtlKToKKyAgICAgICAgICAgICAgICBuZXh0KGkzKQorICAgICAgICAgICAgICAgIHRvb2sgKz0gMQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MgI2luIGNhc2UgdGhlcmUgaXMgbGVzcyBkYXRhIHRoYW4gJ3Rha2UnCisgICAgICAgIGR1bXAgPSBwaWNrbGUuZHVtcHMoaTMpCisgICAgICAgIGk0ID0gcGlja2xlLmxvYWRzKGR1bXApCisgICAgICAgIGEsIGIgPSBleHBhbmQoaTMpLCBleHBhbmQoaTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKyAgICAgICAgaWYgY29tcGFyZToKKyAgICAgICAgICAgIGMgPSBleHBhbmQoY29tcGFyZVt0b29rOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGMpOworCiAgICAgZGVmIHRlc3RfYWNjdW11bGF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocmFuZ2UoMTApKSksICAgICAgICAgICAgICAgIyBvbmUgcG9zaXRpb25hbCBhcmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDEsIDMsIDYsIDEwLCAxNSwgMjEsIDI4LCAzNiwgNDVdKQpAQCAtNjksMTEgKzEyNywyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZSgnYWJjJykpLCBbJ2EnLCAnYWInLCAnYWJjJ10pICAgIyB3b3JrcyB3aXRoIG5vbi1udW1lcmljCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKFtdKSksIFtdKSAgICAgICAgICAgICAgICAgICMgZW1wdHkgaXRlcmFibGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoWzddKSksIFs3XSkgICAgICAgICAgICAgICAgIyBpdGVyYWJsZSBvZiBsZW5ndGggb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSwgcmFuZ2UoMTApLCA1KSAgICAgICMgdG9vIG1hbnkgYXJncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUsIHJhbmdlKDEwKSwgNSwgNikgICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlKSAgICAgICAgICAgICAgICAgICAgIyB0b28gZmV3IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlLCB4PXJhbmdlKDEwKSkgICAgICAgIyB1bmV4cGVjdGVkIGt3ZCBhcmcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBhY2N1bXVsYXRlKFsxLCBbXV0pKSAgICAgIyBhcmdzIHRoYXQgZG9uJ3QgYWRkCiAKKyAgICAgICAgcyA9IFsyLCA4LCA5LCA1LCA3LCAwLCAzLCA0LCAxLCA2XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShzLCBtaW4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMiwgMiwgMiwgMiwgMiwgMCwgMCwgMCwgMCwgMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHMsIG1heCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsyLCA4LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocywgb3BlcmF0b3IubXVsKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDE2LCAxNDQsIDcyMCwgNTA0MCwgMCwgMCwgMCwgMCwgMF0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGxpc3QoYWNjdW11bGF0ZShzLCBjaHIpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeS1vcGVyYXRpb24KKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGFjY3VtdWxhdGUocmFuZ2UoMTApKSkgICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKICAgICBkZWYgdGVzdF9jaGFpbihzZWxmKToKIAogICAgICAgICBkZWYgY2hhaW4yKCppdGVyYWJsZXMpOgpAQCAtOTYsMTQgKzE2NSw0MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoNCwgY2hhaW4uZnJvbV9pdGVyYWJsZShbJ2FiYycsICdkZWYnXSkpLCBsaXN0KCdhYmNkJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgY2hhaW4uZnJvbV9pdGVyYWJsZShbMiwgM10pKQogCisgICAgZGVmIHRlc3RfY2hhaW5fcmVkdWNpYmxlKHNlbGYpOgorICAgICAgICBvcGVyYXRvcnMgPSBbY29weS5kZWVwY29weSwKKyAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzOiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHMpKV0KKyAgICAgICAgZm9yIG9wZXIgaW4gb3BlcmF0b3JzOgorICAgICAgICAgICAgaXQgPSBjaGFpbignYWJjJywgJ2RlZicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3BlcihpdCkpLCBsaXN0KCdhYmNkZWYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICdhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcGVyKGl0KSksIGxpc3QoJ2JjZGVmJykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcGVyKGNoYWluKCcnKSkpLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSg0LCBvcGVyKGNoYWluKCdhYmMnLCAnZGVmJykpKSwgbGlzdCgnYWJjZCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBvcGVyKGNoYWluKDIsIDMpKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNoYWluKCdhYmMnLCAnZGVmJyksIGNvbXBhcmU9bGlzdCgnYWJjZGVmJykpCisKICAgICBkZWYgdGVzdF9jb21iaW5hdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluYXRpb25zLCAnYWJjJykgICAgICAgIyBtaXNzaW5nIHIgYXJndW1lbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5hdGlvbnMsICdhYmMnLCAyLCAxKSAjIHRvbyBtYW55IGFyZ3VtZW50cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmF0aW9ucywgTm9uZSkgICAgICAgICMgcG9vbCBpcyBub3QgaXRlcmFibGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tYmluYXRpb25zLCAnYWJjJywgLTIpICAjIHIgaXMgbmVnYXRpdmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbWJpbmF0aW9ucygnYWJjJywgMzIpKSwgW10pICAgICAjIHIgPiBuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb21iaW5hdGlvbnMocmFuZ2UoNCksIDMpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKDAsMSwyKSwgKDAsMSwzKSwgKDAsMiwzKSwgKDEsMiwzKV0pCisKKyAgICAgICAgZm9yIG9wIGluIChsYW1iZGEgYTphLCBsYW1iZGEgYTpwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGEpKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tYmluYXRpb25zKCdhYmMnLCAzMikpKSwgW10pICAgICAjIHIgPiBuCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21iaW5hdGlvbnMoJ0FCQ0QnLCAyKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQScsJ0QnKSwgKCdCJywnQycpLCAoJ0InLCdEJyksICgnQycsJ0QnKV0pCisgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY29tYmluYXRpb25zKCdBQkNEJywgMikKKyAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdDJyksICgnQScsJ0QnKSwgKCdCJywnQycpLCAoJ0InLCdEJyksICgnQycsJ0QnKV0pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21iaW5hdGlvbnMocmFuZ2UoNCksIDMpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoMCwxLDIpLCAoMCwxLDMpLCAoMCwyLDMpLCAoMSwyLDMpXSkKKyAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjb21iaW5hdGlvbnMocmFuZ2UoNCksIDMpCisgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKDAsMSwzKSwgKDAsMiwzKSwgKDEsMiwzKV0pCisKIAogICAgICAgICBkZWYgY29tYmluYXRpb25zMShpdGVyYWJsZSwgcik6CiAgICAgICAgICAgICAnUHVyZSBweXRob24gdmVyc2lvbiBzaG93biBpbiB0aGUgZG9jcycKQEAgLTE1OCw3ICsyNTYsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjb21iaW5hdGlvbnMyKHZhbHVlcywgcikpKSAjIG1hdGNoZXMgc2Vjb25kIHB1cmUgcHl0aG9uIHZlcnNpb24KICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjb21iaW5hdGlvbnMzKHZhbHVlcywgcikpKSAjIG1hdGNoZXMgc2Vjb25kIHB1cmUgcHl0aG9uIHZlcnNpb24KIAorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjb21iaW5hdGlvbnModmFsdWVzLCByKSkgICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCiAgICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfY29tYmluYXRpb25zX3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBjb21iaW5hdGlvbnMoJ2FiY2RlJywgMykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QoY29tYmluYXRpb25zKCdhYmNkZScsIDMpKSkpKSwgMSkKIApAQCAtMTY4LDggKzI3MCwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN3ciwgJ2FiYycsIDIsIDEpICMgdG9vIG1hbnkgYXJndW1lbnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3dyLCBOb25lKSAgICAgICAgIyBwb29sIGlzIG5vdCBpdGVyYWJsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjd3IsICdhYmMnLCAtMikgICMgciBpcyBuZWdhdGl2ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3dyKCdBQkMnLCAyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0EnKSwgKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQicsJ0InKSwgKCdCJywnQycpLCAoJ0MnLCdDJyldKQorCisgICAgICAgIGZvciBvcCBpbiAobGFtYmRhIGE6YSwgbGFtYmRhIGE6cGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhhKSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGN3cignQUJDJywgMikpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0EnKSwgKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQicsJ0InKSwgKCdCJywnQycpLCAoJ0MnLCdDJyldKQorICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGN3cignQUJDJywgMikKKyAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdCJywnQicpLCAoJ0InLCdDJyksICgnQycsJ0MnKV0pCisKIAogICAgICAgICBkZWYgY3dyMShpdGVyYWJsZSwgcik6CiAgICAgICAgICAgICAnUHVyZSBweXRob24gdmVyc2lvbiBzaG93biBpbiB0aGUgZG9jcycKQEAgLTIyOCw3ICszMzcsMTMgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjd3IxKHZhbHVlcywgcikpKSAgICAgICAgICMgbWF0Y2hlcyBmaXJzdCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY3dyMih2YWx1ZXMsIHIpKSkgICAgICAgICAjIG1hdGNoZXMgc2Vjb25kIHB1cmUgcHl0aG9uIHZlcnNpb24KIAorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjd3IodmFsdWVzLHIpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKICAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X2NvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50X3R1cGxlX3JldXNlKHNlbGYpOgorICAgICAgICBjd3IgPSBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBjd3IoJ2FiY2RlJywgMykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QoY3dyKCdhYmNkZScsIDMpKSkpKSwgMSkKIApAQCAtMjkyLDcgKzQwNywxMCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChwZXJtdXRhdGlvbnModmFsdWVzLCBOb25lKSkpICMgdGVzdCByIGFzIE5vbmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QocGVybXV0YXRpb25zKHZhbHVlcykpKSAgICAgICAjIHRlc3QgZGVmYXVsdCByCiAKLSAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChwZXJtdXRhdGlvbnModmFsdWVzLCByKSkgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmVzdXNlIGlzIENQeXRob24gc3BlY2lmaWMiKQorICAgIGRlZiB0ZXN0X3Blcm11dGF0aW9uc190dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgcGVybXV0YXRpb25zKCdhYmNkZScsIDMpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KHBlcm11dGF0aW9ucygnYWJjZGUnLCAzKSkpKSksIDEpCiAKQEAgLTM0NSw2ICs0NjMsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wcmVzcywgcmFuZ2UoNikpICAgICAgICAgICAgIyB0b28gZmV3IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wcmVzcywgcmFuZ2UoNiksIE5vbmUpICAgICAgIyB0b28gbWFueSBhcmdzCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGZvciBvcCBpbiAobGFtYmRhIGE6Y29weS5jb3B5KGEpLCBsYW1iZGEgYTpjb3B5LmRlZXBjb3B5KGEpLCBsYW1iZGEgYTpwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGEpKSk6CisgICAgICAgICAgICBmb3IgZGF0YSwgc2VsZWN0b3JzLCByZXN1bHQxLCByZXN1bHQyIGluIFsKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFsxLDAsMSwwLDEsMV0sICdBQ0VGJywgJ0NFRicpLAorICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzAsMCwwLDAsMCwwXSwgJycsICcnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFsxLDEsMSwxLDEsMV0sICdBQkNERUYnLCAnQkNERUYnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFsxLDAsMV0sICdBQycsICdDJyksCisgICAgICAgICAgICAgICAgKCdBQkMnLCBbMCwxLDEsMSwxLDFdLCAnQkMnLCAnQycpLAorICAgICAgICAgICAgICAgIF06CisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tcHJlc3MoZGF0YT1kYXRhLCBzZWxlY3RvcnM9c2VsZWN0b3JzKSkpLCBsaXN0KHJlc3VsdDEpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpKSksIGxpc3QocmVzdWx0MSkpCisgICAgICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQxOgorICAgICAgICAgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksIGxpc3QocmVzdWx0MikpCisKKwogICAgIGRlZiB0ZXN0X2NvdW50KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6aXAoJ2FiYycsY291bnQoKSksIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemlwKCdhYmMnLGNvdW50KDMpKSwgWygnYScsIDMpLCAoJ2InLCA0KSwgKCdjJywgNSldKQpAQCAtMzc5LDcgKzUxNSw3IEBACiAgICAgICAgICAgICBjID0gY291bnQodmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoY29weS5jb3B5KGMpKSwgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoY29weS5kZWVwY29weShjKSksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY291bnQodmFsdWUpKQogCiAgICAgICAgICNjaGVjayBwcm9wZXIgaW50ZXJuYWwgZXJyb3IgaGFuZGxpbmcgZm9yIGxhcmdlICJzdGVwJyBzaXplcwogICAgICAgICBjb3VudCgxLCBtYXhzaXplKzUpOyBzeXMuZXhjX2luZm8oKQpAQCAtNDI2LDYgKzU2Miw3IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcjIgPSAoJ2NvdW50KCVyLCAlciknICUgKGksIGopKS5yZXBsYWNlKCdMJywgJycpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyMSwgcjIpCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNvdW50KGksIGopKQogCiAgICAgZGVmIHRlc3RfY3ljbGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgY3ljbGUoJ2FiYycpKSwgbGlzdCgnYWJjYWJjYWJjYScpKQpAQCAtNDM0LDYgKzU3MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlLCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGN5Y2xlKGdlbjMoKSksMTApKSwgWzAsMSwyLDAsMSwyLDAsMSwyLDBdKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBjID0gY3ljbGUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjKSwgJ2EnKQorICAgICAgICAjc2ltcGxlIGNvcHkgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQsIGJlY2F1c2UgX19yZWR1Y2VfXyByZXR1cm5zCisgICAgICAgICNhbiBpbnRlcm5hbCBpdGVyYXRvcgorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBjb3B5LmNvcHkoYykpLCBsaXN0KCdiY2FiY2FiY2FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgY29weS5kZWVwY29weShjKSksIGxpc3QoJ2JjYWJjYWJjYWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGxpc3QoJ2JjYWJjYWJjYWInKSkKKyAgICAgICAgbmV4dChjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgbGlzdCgnY2FiY2FiY2FiYycpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY3ljbGUoJ2FiYycpKQorCiAgICAgZGVmIHRlc3RfZ3JvdXBieShzZWxmKToKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IGFjY2VwdHMgYXJndW1lbnRzIGNvcnJlY3RseQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBsaXN0KGdyb3VwYnkoW10pKSkKQEAgLTQ1MiwxOCArNjAxLDM3IEBACiAgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKIAorICAgICAgICAjIENoZWNrIG5vcm1hbCBwaWNrbGVkCisgICAgICAgIGR1cCA9IFtdCisgICAgICAgIGZvciBrLCBnIGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZ3JvdXBieShzLCB0ZXN0UikpKToKKyAgICAgICAgICAgIGZvciBlbGVtIGluIGc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrLCBlbGVtWzBdKQorICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCisKICAgICAgICAgIyBDaGVjayBuZXN0ZWQgY2FzZQogICAgICAgICBkdXAgPSBbXQotICAgICAgICBmb3IgaywgZyBpbiBncm91cGJ5KHMsIGxhbWJkYSByOnJbMF0pOgotICAgICAgICAgICAgZm9yIGlrLCBpZyBpbiBncm91cGJ5KGcsIGxhbWJkYSByOnJbMl0pOgorICAgICAgICBmb3IgaywgZyBpbiBncm91cGJ5KHMsIHRlc3RSKToKKyAgICAgICAgICAgIGZvciBpaywgaWcgaW4gZ3JvdXBieShnLCB0ZXN0UjIpOgogICAgICAgICAgICAgICAgIGZvciBlbGVtIGluIGlnOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGssIGVsZW1bMF0pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWssIGVsZW1bMl0pCiAgICAgICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCiAKKyAgICAgICAgIyBDaGVjayBuZXN0ZWQgYW5kIHBpY2tsZWQKKyAgICAgICAgZHVwID0gW10KKyAgICAgICAgZm9yIGssIGcgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhncm91cGJ5KHMsIHRlc3RSKSkpOgorICAgICAgICAgICAgZm9yIGlrLCBpZyBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGdyb3VwYnkoZywgdGVzdFIyKSkpOgorICAgICAgICAgICAgICAgIGZvciBlbGVtIGluIGlnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGssIGVsZW1bMF0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWssIGVsZW1bMl0pCisgICAgICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCisKKwogICAgICAgICAjIENoZWNrIGNhc2Ugd2hlcmUgaW5uZXIgaXRlcmF0b3IgaXMgbm90IHVzZWQKLSAgICAgICAga2V5cyA9IFtrIGZvciBrLCBnIGluIGdyb3VwYnkocywgbGFtYmRhIHI6clswXSldCisgICAgICAgIGtleXMgPSBbayBmb3IgaywgZyBpbiBncm91cGJ5KHMsIHRlc3RSKV0KICAgICAgICAgZXhwZWN0ZWRrZXlzID0gc2V0KFtyWzBdIGZvciByIGluIHNdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChrZXlzKSwgZXhwZWN0ZWRrZXlzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihrZXlzKSwgbGVuKGV4cGVjdGVka2V5cykpCkBAIC01MzQsNiArNzAyLDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmlsdGVyLCBpc0V2ZW4sIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgZmlsdGVyKHJhbmdlKDYpLCByYW5nZSg2KSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFswLDIsNF0KKworICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYykpLCBhbnMpCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYykpLCBhbnMpCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgYW5zKQorICAgICAgICBuZXh0KGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGFuc1sxOl0pCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGMpCisKICAgICBkZWYgdGVzdF9maWx0ZXJmYWxzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGZpbHRlcmZhbHNlKGlzRXZlbiwgcmFuZ2UoNikpKSwgWzEsMyw1XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGZpbHRlcmZhbHNlKE5vbmUsIFswLDEsMCwyLDBdKSksIFswLDAsMF0pCkBAIC01NDQsNiArNzI2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmaWx0ZXJmYWxzZSwgbGFtYmRhIHg6eCwgcmFuZ2UoNiksIDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmlsdGVyZmFsc2UsIGlzRXZlbiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBmaWx0ZXJmYWxzZShyYW5nZSg2KSwgcmFuZ2UoNikpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoZmlsdGVyZmFsc2UoaXNFdmVuLCByYW5nZSg2KSkpCiAKICAgICBkZWYgdGVzdF96aXAoc2VsZik6CiAgICAgICAgICMgWFhYIFRoaXMgaXMgcmF0aGVyIHNpbGx5IG5vdyB0aGF0IGJ1aWx0aW4gemlwKCkgY2FsbHMgemlwKCkuLi4KQEAgLTU1NiwxNiArNzM5LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh6aXAoKSksIGx6aXAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB6aXAsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgemlwLCByYW5nZSgzKSwgMykKLSAgICAgICAgIyBDaGVjayB0dXBsZSByZS11c2UgKGltcGxlbWVudGF0aW9uIGRldGFpbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbdHVwbGUobGlzdChwYWlyKSkgZm9yIHBhaXIgaW4gemlwKCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGx6aXAoJ2FiYycsICdkZWYnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbcGFpciBmb3IgcGFpciBpbiB6aXAoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbHppcCgnYWJjJywgJ2RlZicpKQorCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X3ppcF90dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIHppcCgnYWJjJywgJ2RlZicpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oaWRzKSwgbWF4KGlkcykpCiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCBsaXN0KHppcCgnYWJjJywgJ2RlZicpKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QuZnJvbWtleXMoaWRzKSksIGxlbihpZHMpKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gY29weS5jb3B5KHppcCgnYWJjJyxjb3VudCgpKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIGNvcHkuZGVlcGNvcHkoemlwKCdhYmMnLGNvdW50KCkpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh6aXAoJ2FiYycsY291bnQoKSkpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gemlwKCdhYmMnLGNvdW50KCkpCisgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHModGVzdEludGVybWVkaWF0ZSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcCgnYWJjJywgY291bnQoKSkpCisKICAgICBkZWYgdGVzdF96aXBsb25nZXN0KHNlbGYpOgogICAgICAgICBmb3IgYXJncyBpbiBbCiAgICAgICAgICAgICAgICAgWydhYmMnLCByYW5nZSg2KV0sCkBAIC02MDMsMTYgKzgwNSwyNCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0RpZCBub3QgcmFpc2UgVHlwZSBpbjogICcgKyBzdG10KQogCi0gICAgICAgICMgQ2hlY2sgdHVwbGUgcmUtdXNlIChpbXBsZW1lbnRhdGlvbiBkZXRhaWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3R1cGxlKGxpc3QocGFpcikpIGZvciBwYWlyIGluIHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoemlwKCdhYmMnLCAnZGVmJykpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtwYWlyIGZvciBwYWlyIGluIHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoemlwKCdhYmMnLCAnZGVmJykpKQorCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X3ppcF9sb25nZXN0X3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWluKGlkcyksIG1heChpZHMpKQogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgbGlzdCh6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QuZnJvbWtleXMoaWRzKSksIGxlbihpZHMpKQogCisgICAgZGVmIHRlc3RfemlwX2xvbmdlc3RfcGlja2xpbmcoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiYWJjIiwgImRlZiIpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoImFiYyIsICJkZWZnaCIpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoImFiYyIsICJkZWZnaCIsIGZpbGx2YWx1ZT0xKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCIiLCAiZGVmZ2giKSkKKwogICAgIGRlZiB0ZXN0X2J1Z183MjQ0KHNlbGYpOgogCiAgICAgICAgIGNsYXNzIFJlcGVhdGVyOgpAQCAtNzExLDEwICs5MjEsMjUgQEAKICAgICAgICAgICAgIGFyZ3MgPSBtYXAoaXRlciwgYXJncykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QocHJvZHVjdCgqYXJncykpKSwgZXhwZWN0ZWRfbGVuKQogCi0gICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfcHJvZHVjdF90dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgcHJvZHVjdCgnYWJjJywgJ2RlZicpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KHByb2R1Y3QoJ2FiYycsICdkZWYnKSkpKSksIDEpCiAKKyAgICBkZWYgdGVzdF9wcm9kdWN0X3BpY2tsaW5nKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZm9yIGFyZ3MsIHJlc3VsdCBpbiBbCisgICAgICAgICAgICAoW10sIFsoKV0pLCAgICAgICAgICAgICAgICAgICAgICMgemVybyBpdGVyYWJsZXMKKyAgICAgICAgICAgIChbJ2FiJ10sIFsoJ2EnLCksICgnYicsKV0pLCAgICAgIyBvbmUgaXRlcmFibGUKKyAgICAgICAgICAgIChbcmFuZ2UoMiksIHJhbmdlKDMpXSwgWygwLDApLCAoMCwxKSwgKDAsMiksICgxLDApLCAoMSwxKSwgKDEsMildKSwgICAgICMgdHdvIGl0ZXJhYmxlcworICAgICAgICAgICAgKFtyYW5nZSgwKSwgcmFuZ2UoMiksIHJhbmdlKDMpXSwgW10pLCAgICAgICAgICAgIyBmaXJzdCBpdGVyYWJsZSB3aXRoIHplcm8gbGVuZ3RoCisgICAgICAgICAgICAoW3JhbmdlKDIpLCByYW5nZSgwKSwgcmFuZ2UoMyldLCBbXSksICAgICAgICAgICAjIG1pZGRsZSBpdGVyYWJsZSB3aXRoIHplcm8gbGVuZ3RoCisgICAgICAgICAgICAoW3JhbmdlKDIpLCByYW5nZSgzKSwgcmFuZ2UoMCldLCBbXSksICAgICAgICAgICAjIGxhc3QgaXRlcmFibGUgd2l0aCB6ZXJvIGxlbmd0aAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkocHJvZHVjdCgqYXJncykpKSwgcmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkocHJvZHVjdCgqYXJncykpKSwgcmVzdWx0KQorICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHByb2R1Y3QoKmFyZ3MpKQorCiAgICAgZGVmIHRlc3RfcmVwZWF0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmVwZWF0KG9iamVjdD0nYScsIHRpbWVzPTMpKSwgWydhJywgJ2EnLCAnYSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6aXAocmFuZ2UoMykscmVwZWF0KCdhJykpLApAQCAtNzMzLDExICs5NTgsMTYgQEAKICAgICAgICAgbGlzdChyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIociksICdyZXBlYXQoKDErMGopLCAwKScpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGMgPSByZXBlYXQob2JqZWN0PSdhJywgdGltZXM9MTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjKSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMiwgY29weS5jb3B5KGMpKSwgbGlzdCgnYScgKiAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIsIGNvcHkuZGVlcGNvcHkoYykpLCBsaXN0KCdhJyAqIDIpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QocmVwZWF0KG9iamVjdD0nYScsIHRpbWVzPTEwKSkKKwogICAgIGRlZiB0ZXN0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcChvcGVyYXRvci5wb3csIHJhbmdlKDMpLCByYW5nZSgxLDcpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWzAqKjEsIDEqKjIsIDIqKjNdKQotICAgICAgICBkZWYgdHVwbGVpemUoKmFyZ3MpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcCh0dXBsZWl6ZSwgJ2FiYycsIHJhbmdlKDUpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYScsMCksKCdiJywxKSwoJ2MnLDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpKSwKQEAgLTc1Miw2ICs5ODIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgbWFwKGVycmZ1bmMsIFs0XSwgWzVdKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBtYXAob25lYXJnLCBbNF0sIFs1XSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFsoJ2EnLDApLCgnYicsMSksKCdjJywyKV0KKworICAgICAgICBjID0gbWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShjKSksIGFucykKKworICAgICAgICBjID0gbWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjKQorCiAgICAgZGVmIHRlc3Rfc3Rhcm1hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWzAqKjEsIDEqKjIsIDIqKjNdKQpAQCAtNzY2LDYgKzEwMDgsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgc3Rhcm1hcChlcnJmdW5jLCBbKDQsNSldKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBzdGFybWFwKG9uZWFyZywgWyg0LDUpXSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFswKioxLCAxKioyLCAyKiozXQorCisgICAgICAgIGMgPSBzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShjKSksIGFucykKKworICAgICAgICBjID0gc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGMpCisKICAgICBkZWYgdGVzdF9pc2xpY2Uoc2VsZik6CiAgICAgICAgIGZvciBhcmdzIGluIFsgICAgICAgICAgIyBpc2xpY2UoYXJncykgc2hvdWxkIGFncmVlIHdpdGggcmFuZ2UoYXJncykKICAgICAgICAgICAgICAgICAoMTAsIDIwLCAzKSwKQEAgLTc5OCwxNyArMTA1MiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KHJhbmdlKDMsIDEwKSkpCiAKICAgICAgICAgIyBUZXN0IGludmFsaWQgYXJndW1lbnRzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIDIsIDMsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAtNSwgMTAsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAtNSwgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAxMCwgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAxMCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksICdhJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksICdhJywgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsICdhJywgMSkKKyAgICAgICAgcmEgPSByYW5nZSgxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmEsIDEsIDIsIDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIC01LCAxMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgLTUsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAxMCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsIDEwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsICdhJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAnYScsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsICdhJywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChpc2xpY2UoY291bnQoKSwgMSwgMTAsIG1heHNpemUpKSksIDEpCiAKICAgICAgICAgIyBJc3N1ZSAjMTAzMjM6ICBMZXNzIGlzbGljZSBpbiBhIHByZWRpY3RhYmxlIHN0YXRlCkBAIC04MTYsOSArMTA3MSwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGMsIDEsIDMsIDUwKSksIFsxXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGMpLCAzKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBmb3IgYXJncyBpbiBbICAgICAgICAgICMgaXNsaWNlKGFyZ3MpIHNob3VsZCBhZ3JlZSB3aXRoIHJhbmdlKGFyZ3MpCisgICAgICAgICAgICAgICAgKDEwLCAyMCwgMyksCisgICAgICAgICAgICAgICAgKDEwLCAzLCAyMCksCisgICAgICAgICAgICAgICAgKDEwLCAyMCksCisgICAgICAgICAgICAgICAgKDEwLCAzKSwKKyAgICAgICAgICAgICAgICAoMjAsKQorICAgICAgICAgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGlzbGljZShyYW5nZSgxMDApLCAqYXJncykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyYW5nZSgqYXJncykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoaXNsaWNlKHJhbmdlKDEwMCksICphcmdzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKCphcmdzKSkpCisgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoaXNsaWNlKHJhbmdlKDEwMCksICphcmdzKSkKKwogICAgIGRlZiB0ZXN0X3Rha2V3aGlsZShzZWxmKToKICAgICAgICAgZGF0YSA9IFsxLCAzLCA1LCAyMCwgMiwgNCwgNiwgOF0KLSAgICAgICAgdW5kZXJ0ZW4gPSBsYW1iZGEgeDogeDwxMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSksIFsxLCAzLCA1XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHRha2V3aGlsZSh1bmRlcnRlbiwgW10pKSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGFrZXdoaWxlKQpAQCAtODMwLDkgKzEwOTgsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHQpLCBbMSwgMSwgMV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHQpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLCBbMSwgMywgNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAzLCA1XSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpCisKICAgICBkZWYgdGVzdF9kcm9wd2hpbGUoc2VsZik6CiAgICAgICAgIGRhdGEgPSBbMSwgMywgNSwgMjAsIDIsIDQsIDYsIDhdCi0gICAgICAgIHVuZGVydGVuID0gbGFtYmRhIHg6IHg8MTAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpLCBbMjAsIDIsIDQsIDYsIDhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHJvcHdoaWxlKHVuZGVydGVuLCBbXSkpLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkcm9wd2hpbGUpCkBAIC04NDEsMTEgKzExMTQsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBkcm9wd2hpbGUoMTAsIFsoNCw1KV0pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXh0LCBkcm9wd2hpbGUoZXJyZnVuYywgWyg0LDUpXSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLCBbMjAsIDIsIDQsIDYsIDhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBbMjAsIDIsIDQsIDYsIDhdKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSkKKwogICAgIGRlZiB0ZXN0X3RlZShzZWxmKToKICAgICAgICAgbiA9IDIwMAotICAgICAgICBkZWYgaXJhbmdlKG4pOgotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6Ci0gICAgICAgICAgICAgICAgeWllbGQgaQogCiAgICAgICAgIGEsIGIgPSB0ZWUoW10pICAgICAgICAjIHRlc3QgZW1wdHkgaXRlcmF0b3IKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbXSkKQEAgLTkzMCw2ICsxMjA2LDY3IEBACiAgICAgICAgIGRlbCBhCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlZmVyZW5jZUVycm9yLCBnZXRhdHRyLCBwLCAnX19jbGFzc19fJykKIAorICAgICAgICBhbnMgPSBsaXN0KCdhYmMnKQorICAgICAgICBsb25nX2FucyA9IGxpc3QocmFuZ2UoMTAwMDApKQorCisgICAgICAgICMgY2hlY2sgY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgYW5zKQorICAgICAgICBhLCBiID0gdGVlKGxpc3QocmFuZ2UoMTAwMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgbG9uZ19hbnMpCisKKyAgICAgICAgIyBjaGVjayBwYXJ0aWFsbHkgY29uc3VtZWQgY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICB0YWtlKDIsIGEpCisgICAgICAgIHRha2UoMSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBhbnNbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgYW5zWzE6XSkKKyAgICAgICAgYSwgYiA9IHRlZShyYW5nZSgxMDAwMCkpCisgICAgICAgIHRha2UoMTAwLCBhKQorICAgICAgICB0YWtlKDYwLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBsb25nX2Fuc1s2MDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGxvbmdfYW5zWzYwOl0pCisKKyAgICAgICAgIyBjaGVjayBkZWVwY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGFucykKKyAgICAgICAgYSwgYiA9IHRlZShyYW5nZSgxMDAwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgbG9uZ19hbnMpCisKKyAgICAgICAgIyBjaGVjayBwYXJ0aWFsbHkgY29uc3VtZWQgZGVlcGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgdGFrZSgyLCBhKQorICAgICAgICB0YWtlKDEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBhbnNbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgYW5zWzE6XSkKKyAgICAgICAgYSwgYiA9IHRlZShyYW5nZSgxMDAwMCkpCisgICAgICAgIHRha2UoMTAwLCBhKQorICAgICAgICB0YWtlKDYwLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGxvbmdfYW5zWzYwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgbG9uZ19hbnNbNjA6XSkKKworICAgICAgICAjIGNoZWNrIHBpY2tsZQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoaXRlcih0ZWUoJ2FiYycpKSkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGEsIGNvbXBhcmU9YW5zKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYiwgY29tcGFyZT1hbnMpCisKICAgICBkZWYgdGVzdF9TdG9wSXRlcmF0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCB6aXAoKSkKIApAQCAtOTU1LDkgKzEyOTIsMjEgQEAKIAogY2xhc3MgVGVzdEV4YW1wbGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZXN0X2FjY3VtbGF0ZShzZWxmKToKKyAgICBkZWYgdGVzdF9hY2N1bXVsYXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkpLCBbMSwgMywgNiwgMTAsIDE1XSkKIAorICAgIGRlZiB0ZXN0X2FjY3VtdWxhdGVfcmVkdWNpYmxlKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzLCA0LCA1XQorICAgICAgICBhY2N1bXVsYXRlZCA9IFsxLCAzLCA2LCAxMCwgMTVdCisgICAgICAgIGl0ID0gYWNjdW11bGF0ZShkYXRhKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGl0KSkpLCBhY2N1bXVsYXRlZFs6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoaXQpKSksIGFjY3VtdWxhdGVkWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoaXQpKSwgYWNjdW11bGF0ZWRbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGl0KSksIGFjY3VtdWxhdGVkWzE6XSkKKwogICAgIGRlZiB0ZXN0X2NoYWluKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oY2hhaW4oJ0FCQycsICdERUYnKSksICdBQkNERUYnKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5IGIvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQppbmRleCAxMDhlZDE4Li4wNTAzYTdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4YzoKICAgICAgICAgICAgIGYoMSwgMiwgMykKLSAgICAgICAgZXhwZWN0ZWQgPSAiZigpIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoMyBnaXZlbikiCisgICAgICAgIGV4cGVjdGVkID0gImYoKSB0YWtlcyBmcm9tIDEgdG8gMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyB3ZXJlIGdpdmVuIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleGMuZXhjZXB0aW9uKSwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdFN5bnRheEVycm9yRm9yRnVuY3Rpb25DYWxsKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5IGIvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5CmluZGV4IDFhZmFmNzAuLmRmNGMzN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkKQEAgLTksOCArOSw4IEBACiBkZWYgc3VpdGUoKToKICAgICB0ZXN0cyA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCiAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgZm9yIG0gaW4gKHRlc3RfZml4ZXJzLCB0ZXN0X3B5dHJlZSx0ZXN0X3V0aWwsIHRlc3RfcmVmYWN0b3IsCi0gICAgICAgICAgICAgIHRlc3RfcGFyc2VyLCB0ZXN0X21haW5fKToKKyAgICBmb3IgbSBpbiAodGVzdF9maXhlcnMsIHRlc3RfcHl0cmVlLCB0ZXN0X3V0aWwsIHRlc3RfcmVmYWN0b3IsIHRlc3RfcGFyc2VyLAorICAgICAgICAgICAgICB0ZXN0X21haW5fKToKICAgICAgICAgdGVzdHMuYWRkVGVzdHMobG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkpCiAgICAgcmV0dXJuIHRlc3RzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQppbmRleCA4NGI4YWZlLi41ZGYyN2QzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitpbXBvcnQgcGlja2xlCiAKIGNsYXNzIExpc3RUZXN0KGxpc3RfdGVzdHMuQ29tbW9uVGVzdCk6CiAgICAgdHlwZTJ0ZXN0ID0gbGlzdApAQCAtNjksNiArNzAsMzMgQEAKICAgICAgICAgY2hlY2soMTApICAgICAgICMgY2hlY2sgb3VyIGNoZWNraW5nIGNvZGUKICAgICAgICAgY2hlY2soMTAwMDAwMCkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKKyAgICAgICAgIyBVc2VybGlzdCBpdGVyYXRvcnMgZG9uJ3Qgc3VwcG9ydCBwaWNrbGluZyB5ZXQgc2luY2UKKyAgICAgICAgIyB0aGV5IGFyZSBiYXNlZCBvbiBnZW5lcmF0b3JzLgorICAgICAgICBkYXRhID0gc2VsZi50eXBlMnRlc3QoWzQsIDUsIDYsIDddKQorICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChkYXRhKVsxOl0pCisKKyAgICBkZWYgdGVzdF9yZXZlcnNlZF9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0ID0gaXRvcmcgPSByZXZlcnNlZChkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QocmV2ZXJzZWQoZGF0YSkpWzE6XSkKIAogICAgIGRlZiB0ZXN0X25vX2NvbWRhdF9mb2xkaW5nKHNlbGYpOgogICAgICAgICAjIElzc3VlIDg4NDc6IEluIHRoZSBQR08gYnVpbGQsIHRoZSBNU1ZDIGxpbmtlcidzIENPTURBVCBmb2xkaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weSBiL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CmluZGV4IDhmNzU3NGIuLjUxYTdiY2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CkBAIC0xMSw3ICsxMSw3IEBACiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgdGxvY3MgPSAoImVuX1VTLlVURi04IiwgImVuX1VTLklTTzg4NTktMSIsICJlbl9VUyIpCi0gICAgICAgIGlmIGludChvcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pIDwgMTA6CisgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPCAxMDoKICAgICAgICAgICAgICMgVGhlIGxvY2FsZSB0ZXN0IHdvcmsgZmluZSBvbiBPU1ggMTAuNiwgSSAocm9uYWxkb3Vzc29yZW4pCiAgICAgICAgICAgICAjIGhhdmVuJ3QgaGFkIHRpbWUgeWV0IHRvIHZlcmlmeSBpZiB0ZXN0cyB3b3JrIG9uIE9TWCAxMC41CiAgICAgICAgICAgICAjICgxMC40IGlzIGtub3duIHRvIGJlIGJhZCkKQEAgLTQwMSw2ICs0MDEsOCBAQAogICAgICAgICAgICAgIyBVbnN1cHBvcnRlZCBsb2NhbGUgb24gdGhpcyBzeXN0ZW0KICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3Rlc3QgbmVlZHMgVHVya2lzaCBsb2NhbGUnKQogICAgICAgICBsb2MgPSBsb2NhbGUuZ2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSkKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCdnb3QgbG9jYWxlICVhJyAlIChsb2MsKSkKICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUsIGxvYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2MsIGxvY2FsZS5nZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFKSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CmluZGV4IDJkMjY0ZjguLmNiOTA4ZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKQEAgLTM3LDEyICszNywxMSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1mcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcgogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0LCBydW5fd2l0aF9sb2NhbGUsIHJ1bl91bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRlc3RIYW5kbGVyLCBNYXRjaGVyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgcnVuX3dpdGhfbG9jYWxlLCBydW5fdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoLCByZXF1aXJlc196bGliLCBUZXN0SGFuZGxlciwgTWF0Y2hlcikKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtNTAsOCArNDksMzEgQEAKIGltcG9ydCB3ZWFrcmVmCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZworICAgICMgVGhlIGZvbGxvd2luZyBpbXBvcnRzIGFyZSBuZWVkZWQgb25seSBmb3IgdGVzdHMgd2hpY2gKKyAgICAjIHJlcXVpcmUgdGhyZWFkaW5nCisgICAgaW1wb3J0IGFzeW5jaGF0CisgICAgaW1wb3J0IGFzeW5jb3JlCisgICAgaW1wb3J0IGVycm5vCisgICAgZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgSFRUUFNlcnZlciwgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcgorICAgIGltcG9ydCBzbXRwZAorICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgcGFyc2VfcXMKKyAgICBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgKFRocmVhZGluZ1VEUFNlcnZlciwgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCB3aW4zMmV2dGxvZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHdpbjMyZXZ0bG9nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCB3aW4zMmV2dGxvZ3V0aWwKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB3aW4zMmV2dGxvZ3V0aWwgPSBOb25lCisgICAgd2luMzJldnRsb2cgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHpsaWIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCiAKIAogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzksOSArMTAxLDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxvZ2dpbmcuX3JlbGVhc2VMb2NrKCkKIAotICAgICAgICAjIFNldCB0d28gdW51c2VkIGxvZ2dlcnM6IG9uZSBub24tQVNDSUkgYW5kIG9uZSBVbmljb2RlLgotICAgICAgICAjIFRoaXMgaXMgdG8gdGVzdCBjb3JyZWN0IG9wZXJhdGlvbiB3aGVuIHNvcnRpbmcgZXhpc3RpbmcKLSAgICAgICAgIyBsb2dnZXJzIGluIHRoZSBjb25maWd1cmF0aW9uIGNvZGUuIFNlZSBpc3N1ZSA4MjAxLgorICAgICAgICAjIFNldCB0d28gdW51c2VkIGxvZ2dlcnMKICAgICAgICAgc2VsZi5sb2dnZXIxID0gbG9nZ2luZy5nZXRMb2dnZXIoIlx4YWJceGQ3XHhiYiIpCiAgICAgICAgIHNlbGYubG9nZ2VyMiA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJcdTAxM2ZcdTAwZDZcdTAwNDciKQogCkBAIC0xNDIsOCArMTYyLDcgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgIyBTdHJpbmdJTy5TdHJpbmdJTyBsYWNrcyBhIHJlc2V0KCkgbWV0aG9kLgogICAgICAgICAgICAgYWN0dWFsX2xpbmVzID0gc3RyZWFtLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFjdHVhbF9saW5lcyksIGxlbihleHBlY3RlZF92YWx1ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnJXMgdnMuICVzJyAlIChhY3R1YWxfbGluZXMsIGV4cGVjdGVkX3ZhbHVlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFjdHVhbF9saW5lcyksIGxlbihleHBlY3RlZF92YWx1ZXMpKQogICAgICAgICBmb3IgYWN0dWFsLCBleHBlY3RlZCBpbiB6aXAoYWN0dWFsX2xpbmVzLCBleHBlY3RlZF92YWx1ZXMpOgogICAgICAgICAgICAgbWF0Y2ggPSBwYXQuc2VhcmNoKGFjdHVhbCkKICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKQEAgLTE4MSwxNyArMjAwLDE3IEBACiAKICAgICAgICAgSU5GLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIElORi5lcnJvcihtKCkpCi0gICAgICAgIElORi53YXJuKG0oKSkKKyAgICAgICAgSU5GLndhcm5pbmcobSgpKQogICAgICAgICBJTkYuaW5mbyhtKCkpCiAKICAgICAgICAgREVCLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIERFQi5lcnJvcihtKCkpCi0gICAgICAgIERFQi53YXJuIChtKCkpCi0gICAgICAgIERFQi5pbmZvIChtKCkpCisgICAgICAgIERFQi53YXJuaW5nKG0oKSkKKyAgICAgICAgREVCLmluZm8obSgpKQogICAgICAgICBERUIuZGVidWcobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCi0gICAgICAgIEVSUi53YXJuKG0oKSkKKyAgICAgICAgRVJSLndhcm5pbmcobSgpKQogICAgICAgICBFUlIuaW5mbyhtKCkpCiAgICAgICAgIEVSUi5kZWJ1ZyhtKCkpCiAKQEAgLTIyNSw3ICsyNDQsNyBAQAogICAgICAgICBJTkZfRVJSLmVycm9yKG0oKSkKIAogICAgICAgICAjIFRoZXNlIHNob3VsZCBub3QgbG9nLgotICAgICAgICBJTkZfRVJSLndhcm4obSgpKQorICAgICAgICBJTkZfRVJSLndhcm5pbmcobSgpKQogICAgICAgICBJTkZfRVJSLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSLmRlYnVnKG0oKSkKIApAQCAtMjQ5LDE0ICsyNjgsMTQgQEAKICAgICAgICAgIyBUaGVzZSBzaG91bGQgbG9nLgogICAgICAgICBJTkZfVU5ERUYubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgSU5GX1VOREVGLmVycm9yKG0oKSkKLSAgICAgICAgSU5GX1VOREVGLndhcm4obSgpKQorICAgICAgICBJTkZfVU5ERUYud2FybmluZyhtKCkpCiAgICAgICAgIElORl9VTkRFRi5pbmZvKG0oKSkKICAgICAgICAgSU5GX0VSUl9VTkRFRi5sb2cobG9nZ2luZy5DUklUSUNBTCwgbSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmVycm9yKG0oKSkKIAogICAgICAgICAjIFRoZXNlIHNob3VsZCBub3QgbG9nLgogICAgICAgICBJTkZfVU5ERUYuZGVidWcobSgpKQotICAgICAgICBJTkZfRVJSX1VOREVGLndhcm4obSgpKQorICAgICAgICBJTkZfRVJSX1VOREVGLndhcm5pbmcobSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmRlYnVnKG0oKSkKIApAQCAtMjk1LDggKzMxNCw2IEBACiAgICAgICAgICAgICAoJ0lORi5CQURQQVJFTlQnLCAnSU5GTycsICc0JyksCiAgICAgICAgIF0pCiAKLSAgICBkZWYgdGVzdF9pbnZhbGlkX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5nZXRMb2dnZXIsIGFueSkKIAogY2xhc3MgQmFzaWNGaWx0ZXJUZXN0KEJhc2VUZXN0KToKIApAQCAtMzU1LDYgKzM3MiwxMCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgaGFuZGxlci5yZW1vdmVGaWx0ZXIoZmlsdGVyZnVuYykKIAorICAgIGRlZiB0ZXN0X2VtcHR5X2ZpbHRlcihzZWxmKToKKyAgICAgICAgZiA9IGxvZ2dpbmcuRmlsdGVyKCkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J25hbWUnOiAnc3BhbS5lZ2dzJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmZpbHRlcihyKSkKIAogIwogIyAgIEZpcnN0LCB3ZSBkZWZpbmUgb3VyIGxldmVscy4gVGhlcmUgY2FuIGJlIGFzIG1hbnkgYXMgeW91IHdhbnQgLSB0aGUgb25seQpAQCAtNDk4LDYgKzUxOSw0NzggQEAKICAgICAgICAgICAgIGhhbmRsZXIucmVtb3ZlRmlsdGVyKGdhcnIpCiAKIAorY2xhc3MgSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAgICAgIGggPSBsb2dnaW5nLkhhbmRsZXIoKQorICAgICAgICBoLm5hbWUgPSAnZ2VuZXJpYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsICdnZW5lcmljJykKKyAgICAgICAgaC5uYW1lID0gJ2Fub3RoZXJnZW5lcmljJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ2Fub3RoZXJnZW5lcmljJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgaC5lbWl0LCBOb25lKQorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9oYW5kbGVycyhzZWxmKToKKyAgICAgICAgIyBXZSBjYW4ndCBhY3R1YWxseSAqdXNlKiB0b28gbWFueSBoYW5kbGVycyBpbiB0aGUgdGVzdHMsCisgICAgICAgICMgYnV0IHdlIGNhbiB0cnkgaW5zdGFudGlhdGluZyB0aGVtIHdpdGggdmFyaW91cyBvcHRpb25zCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2xpbnV4JywgJ2RhcndpbicpOgorICAgICAgICAgICAgZm9yIGV4aXN0aW5nIGluIChUcnVlLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgICAgICAgICAgaWYgbm90IGV4aXN0aW5nOgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1UcnVlKQorICAgICAgICAgICAgICAgIGlmIGV4aXN0aW5nOgorICAgICAgICAgICAgICAgICAgICBkZXYsIGlubyA9IGguZGV2LCBoLmlubworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldiwgLTEpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5vLCAtMSkKKyAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICdUZXN0J30pCisgICAgICAgICAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICAgICAgICAgICMgTm93IHJlbW92ZSB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgICAgICAgICAgIyBUaGUgbmV4dCBjYWxsIHNob3VsZCByZWNyZWF0ZSB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGV2LCAtMSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmlubywgLTEpCisgICAgICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICBzb2NrbmFtZSA9ICcvdmFyL3J1bi9zeXNsb2cnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNvY2tuYW1lID0gJy9kZXYvbG9nJworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIoc29ja25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZhY2lsaXR5LCBoLkxPR19VU0VSKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoLnVuaXhzb2NrZXQpCisgICAgICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOiAjIHN5c2xvZ2QgbWlnaHQgbm90IGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ0dFVCcsICdQT1NUJywgJ1BVVCcpOgorICAgICAgICAgICAgaWYgbWV0aG9kID09ICdQVVQnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuSFRUUEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsICcvbG9nJywgbWV0aG9kKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlcignbG9jYWxob3N0JywgJy9sb2cnLCBtZXRob2QpCisgICAgICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkJ1ZmZlcmluZ0hhbmRsZXIoMCkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGguc2hvdWxkRmx1c2gocikpCisgICAgICAgIGguY2xvc2UoKQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5CdWZmZXJpbmdIYW5kbGVyKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaC5zaG91bGRGbHVzaChyKSkKKyAgICAgICAgaC5jbG9zZSgpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ1dhdGNoZWRGaWxlSGFuZGxlciBub3QgYXBwcm9wcmlhdGUgZm9yIFdpbmRvd3MuJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3JhY2Uoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE0NjMyIHJlZmVycy4KKyAgICAgICAgZGVmIHJlbW92ZV9sb29wKGZuYW1lLCB0cmllcyk6CisgICAgICAgICAgICBmb3IgXyBpbiByYW5nZSh0cmllcyk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDA0ICogcmFuZG9tLnJhbmRpbnQoMCwgNCkpCisKKyAgICAgICAgZGVsX2NvdW50ID0gNTAwCisgICAgICAgIGxvZ19jb3VudCA9IDUwMAorCisgICAgICAgIGZvciBkZWxheSBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgnLmxvZycsICd0ZXN0X2xvZ2dpbmctMy0nKQorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgICAgICByZW1vdmVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cmVtb3ZlX2xvb3AsIGFyZ3M9KGZuLCBkZWxfY291bnQpKQorICAgICAgICAgICAgcmVtb3Zlci5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICByZW1vdmVyLnN0YXJ0KCkKKyAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLldhdGNoZWRGaWxlSGFuZGxlcihmbiwgZGVsYXk9ZGVsYXkpCisgICAgICAgICAgICBmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzOiAlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycpCisgICAgICAgICAgICBoLnNldEZvcm1hdHRlcihmKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGxvZ19jb3VudCk6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDUpCisgICAgICAgICAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZycgfSkKKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcmVtb3Zlci5qb2luKCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKworCitjbGFzcyBCYWRTdHJlYW0ob2JqZWN0KToKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignZGVsaWJlcmF0ZSBtaXN0YWtlJykKKworY2xhc3MgVGVzdFN0cmVhbUhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKToKKyAgICBkZWYgaGFuZGxlRXJyb3Ioc2VsZiwgcmVjb3JkKToKKyAgICAgICAgc2VsZi5lcnJvcl9yZWNvcmQgPSByZWNvcmQKKworY2xhc3MgU3RyZWFtSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2Vycm9yX2hhbmRsaW5nKHNlbGYpOgorICAgICAgICBoID0gVGVzdFN0cmVhbUhhbmRsZXIoQmFkU3RyZWFtKCkpCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIG9sZF9zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGguZXJyb3JfcmVjb3JkLCByKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihCYWRTdHJlYW0oKSkKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignXG5SdW50aW1lRXJyb3I6IGRlbGliZXJhdGUgbWlzdGFrZVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2lvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCisgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNpby5nZXR2YWx1ZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBvbGRfcmFpc2UKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvbGRfc3RkZXJyCisKKyMgLS0gVGhlIGZvbGxvd2luZyBzZWN0aW9uIGNvdWxkIGJlIG1vdmVkIGludG8gYSBzZXJ2ZXJfaGVscGVyLnB5IG1vZHVsZQorIyAtLSBpZiBpdCBwcm92ZXMgdG8gYmUgb2Ygd2lkZXIgdXRpbGl0eSB0aGFuIGp1c3QgdGVzdF9sb2dnaW5nCisKK2lmIHRocmVhZGluZzoKKyAgICBjbGFzcyBUZXN0U01UUENoYW5uZWwoc210cGQuU01UUENoYW5uZWwpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBkZXJpdmVkIGNsYXNzIGhhcyBoYWQgdG8gYmUgY3JlYXRlZCBiZWNhdXNlIHNtdHBkIGRvZXMgbm90CisgICAgICAgIHN1cHBvcnQgdXNlIG9mIGN1c3RvbSBjaGFubmVsIG1hcHMsIGFsdGhvdWdoIHRoZXkgYXJlIGFsbG93ZWQgYnkKKyAgICAgICAgYXN5bmNvcmUncyBkZXNpZ24uIElzc3VlICMxMTk1OSBoYXMgYmVlbiByYWlzZWQgdG8gYWRkcmVzcyB0aGlzLAorICAgICAgICBhbmQgaWYgcmVzb2x2ZWQgc2F0aXNmYWN0b3JpbHksIHNvbWUgb2YgdGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgc29ja21hcCk6CisgICAgICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIHNvY2ttYXApCisgICAgICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBjb25uCisgICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCisgICAgICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQorICAgICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECisgICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSAnJworICAgICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCisgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSAnJworICAgICAgICAgICAgc2VsZi5mcWRuID0gc29ja2V0LmdldGZxZG4oKQorICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5wZWVyID0gY29ubi5nZXRwZWVybmFtZSgpCisgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAjIGEgcmFjZSBjb25kaXRpb24gIG1heSBvY2N1ciBpZiB0aGUgb3RoZXIgZW5kIGlzIGNsb3NpbmcKKyAgICAgICAgICAgICAgICAjIGJlZm9yZSB3ZSBjYW4gZ2V0IHRoZSBwZWVybmFtZQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdICE9IGVycm5vLkVOT1RDT05OOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyMjAgJXMgJXMnICUgKHNlbGYuZnFkbiwgc210cGQuX192ZXJzaW9uX18pKQorICAgICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4nKQorICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKKworCisgICAgY2xhc3MgVGVzdFNNVFBTZXJ2ZXIoc210cGQuU01UUFNlcnZlcik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSB0ZXN0IFNNVFAgc2VydmVyLgorCisgICAgICAgIDpwYXJhbSBhZGRyOiBBIChob3N0LCBwb3J0KSB0dXBsZSB3aGljaCB0aGUgc2VydmVyIGxpc3RlbnMgb24uCisgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgYSBwb3J0IHZhbHVlIG9mIHplcm86IHRoZSBzZXJ2ZXIncworICAgICAgICAgICAgICAgICAgICAgKnBvcnQqIGF0dHJpYnV0ZSB3aWxsIGhvbGQgdGhlIGFjdHVhbCBwb3J0IG51bWJlcgorICAgICAgICAgICAgICAgICAgICAgdXNlZCwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gY2xpZW50IGNvbm5lY3Rpb25zLgorICAgICAgICA6cGFyYW0gaGFuZGxlcjogQSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB0byBwcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyBtZXNzYWdlcy4gVGhlIGhhbmRsZXIgd2lsbCBiZSBwYXNzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjbGllbnQgYWRkcmVzcyB0dXBsZSwgd2hvIHRoZSBtZXNzYWdlIGlzIGZyb20sCisgICAgICAgICAgICAgICAgICAgICAgICBhIGxpc3Qgb2YgcmVjaXBpZW50cyBhbmQgdGhlIG1lc3NhZ2UgZGF0YS4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBpbnRlcnZhbCwgaW4gc2Vjb25kcywgdXNlZCBpbiB0aGUgdW5kZXJseWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YHNlbGVjdGAgb3IgOmZ1bmM6YHBvbGxgIGNhbGwgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdW5jOmBhc3luY29yZS5sb29wYC4KKyAgICAgICAgOnBhcmFtIHNvY2ttYXA6IEEgZGljdGlvbmFyeSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaG9sZAorICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBhc3luY29yZS5kaXNwYXRjaGVyYCBpbnN0YW5jZXMgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YGFzeW5jb3JlLmxvb3BgLiBUaGlzIGF2b2lkcyBjaGFuZ2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2Q6YGFzeW5jb3JlYCBtb2R1bGUncyBnbG9iYWwgc3RhdGUuCisgICAgICAgICIiIgorICAgICAgICBjaGFubmVsX2NsYXNzID0gVGVzdFNNVFBDaGFubmVsCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwsIHNvY2ttYXApOgorICAgICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gYWRkcgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zb2NrbWFwID0gc29ja21hcAorICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoMCkKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29jaywgbWFwPXNvY2ttYXApCisgICAgICAgICAgICAgICAgIyB0cnkgdG8gcmUtdXNlIGEgc2VydmVyIHBvcnQgaWYgcG9zc2libGUKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKKyAgICAgICAgICAgICAgICBzZWxmLmJpbmQoYWRkcikKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KKyAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5wb2xsX2ludGVydmFsID0gcG9sbF9pbnRlcnZhbAorCisgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFJlZGVmaW5lZCBvbmx5IGJlY2F1c2UgdGhlIGJhc2UgY2xhc3MgZG9lcyBub3QgcGFzcyBpbiBhCisgICAgICAgICAgICBtYXAsIGZvcmNpbmcgdXNlIG9mIGEgZ2xvYmFsIGluIDptb2Q6YGFzeW5jb3JlYC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyLCBzZWxmLnNvY2ttYXApCisKKyAgICAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIERlbGVnYXRlcyB0byB0aGUgaGFuZGxlciBwYXNzZWQgaW4gdG8gdGhlIHNlcnZlcidzIGNvbnN0cnVjdG9yLgorCisgICAgICAgICAgICBUeXBpY2FsbHksIHRoaXMgd2lsbCBiZSBhIHRlc3QgY2FzZSBtZXRob2QuCisgICAgICAgICAgICA6cGFyYW0gcGVlcjogVGhlIGNsaWVudCAoaG9zdCwgcG9ydCkgdHVwbGUuCisgICAgICAgICAgICA6cGFyYW0gbWFpbGZyb206IFRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kZXIuCisgICAgICAgICAgICA6cGFyYW0gcmNwdHRvczogVGhlIGFkZHJlc3NlcyBvZiB0aGUgcmVjaXBpZW50cy4KKyAgICAgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgbWVzc2FnZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5faGFuZGxlcihwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKKworICAgICAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFN0YXJ0IHRoZSBzZXJ2ZXIgcnVubmluZyBvbiBhIHNlcGFyYXRlIGRhZW1vbiB0aHJlYWQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlX2ZvcmV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnBvbGxfaW50ZXJ2YWwsKSkKKyAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUnVuIHRoZSA6bW9kOmBhc3luY29yZWAgbG9vcCB1bnRpbCBub3JtYWwgdGVybWluYXRpb24KKyAgICAgICAgICAgIGNvbmRpdGlvbnMgYXJpc2UuCisgICAgICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCB1c2VkIGluIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YHNlbGVjdGAgb3IgOmZ1bmM6YHBvbGxgIGNhbGwgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgYXN5bmNvcmUubG9vcGAuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhc3luY29yZS5sb29wKHBvbGxfaW50ZXJ2YWwsIG1hcD1zZWxmLnNvY2ttYXApCisgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yOgorICAgICAgICAgICAgICAgICMgT24gRnJlZUJTRCA4LCBjbG9zaW5nIHRoZSBzZXJ2ZXIgcmVwZWF0YWJseQorICAgICAgICAgICAgICAgICMgcmFpc2VzIHRoaXMgZXJyb3IuIFdlIHN3YWxsb3cgaXQgaWYgdGhlCisgICAgICAgICAgICAgICAgIyBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29ubmVjdGVkIG9yIHNlbGYuYWNjZXB0aW5nOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFN0b3AgdGhlIHRocmVhZCBieSBjbG9zaW5nIHRoZSBzZXJ2ZXIgaW5zdGFuY2UuCisgICAgICAgICAgICBXYWl0IGZvciB0aGUgc2VydmVyIHRocmVhZCB0byB0ZXJtaW5hdGUuCisKKyAgICAgICAgICAgIDpwYXJhbSB0aW1lb3V0OiBIb3cgbG9uZyB0byB3YWl0IGZvciB0aGUgc2VydmVyIHRocmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRlcm1pbmF0ZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbih0aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorCisgICAgY2xhc3MgQ29udHJvbE1peGluKG9iamVjdCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIG1peGluIGlzIHVzZWQgdG8gc3RhcnQgYSBzZXJ2ZXIgb24gYSBzZXBhcmF0ZSB0aHJlYWQsIGFuZAorICAgICAgICBzaHV0IGl0IGRvd24gcHJvZ3JhbW1hdGljYWxseS4gUmVxdWVzdCBoYW5kbGluZyBpcyBzaW1wbGlmaWVkIC0gaW5zdGVhZAorICAgICAgICBvZiBuZWVkaW5nIHRvIGRlcml2ZSBhIHN1aXRhYmxlIFJlcXVlc3RIYW5kbGVyIHN1YmNsYXNzLCB5b3UganVzdAorICAgICAgICBwcm92aWRlIGEgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBwYXNzZWQgZWFjaCByZWNlaXZlZCByZXF1ZXN0IHRvIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICA6cGFyYW0gaGFuZGxlcjogQSBoYW5kbGVyIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIHBhcmFtZXRlciAtIHRoZSByZXF1ZXN0IC0gaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgdGhlIHJlcXVlc3QuIFRoaXMgaGFuZGxlciBpcyBjYWxsZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGhyZWFkLCBlZmZlY3RpdmVseSBtZWFuaW5nIHRoYXQgcmVxdWVzdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgc2VyaWFsbHkuIFdoaWxlIG5vdCBxdWl0ZSBXZWIgc2NhbGUgOy0pLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBzaG91bGQgYmUgZmluZSBmb3IgdGVzdGluZyBhcHBsaWNhdGlvbnMuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBpbiBzZWNvbmRzLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwpOgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5wb2xsX2ludGVydmFsID0gcG9sbF9pbnRlcnZhbAorICAgICAgICAgICAgc2VsZi5faGFuZGxlciA9IGhhbmRsZXIKKyAgICAgICAgICAgIHNlbGYucmVhZHkgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQ3JlYXRlIGEgZGFlbW9uIHRocmVhZCB0byBydW4gdGhlIHNlcnZlciwgYW5kIHN0YXJ0IGl0LgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5zZXJ2ZV9mb3JldmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5wb2xsX2ludGVydmFsLCkpCisgICAgICAgICAgICB0LnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgdC5zdGFydCgpCisKKyAgICAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZiwgcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFJ1biB0aGUgc2VydmVyLiBTZXQgdGhlIHJlYWR5IGZsYWcgYmVmb3JlIGVudGVyaW5nIHRoZQorICAgICAgICAgICAgc2VydmljZSBsb29wLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLnJlYWR5LnNldCgpCisgICAgICAgICAgICBzdXBlcihDb250cm9sTWl4aW4sIHNlbGYpLnNlcnZlX2ZvcmV2ZXIocG9sbF9pbnRlcnZhbCkKKworICAgICAgICBkZWYgc3RvcChzZWxmLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBUZWxsIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHN0b3AsIGFuZCB3YWl0IGZvciBpdCB0byBkbyBzby4KKworICAgICAgICAgICAgOnBhcmFtIHRpbWVvdXQ6IEhvdyBsb25nIHRvIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGVybWluYXRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLnNodXRkb3duKCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbih0aW1lb3V0KQorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgICAgIHNlbGYucmVhZHkuY2xlYXIoKQorCisgICAgY2xhc3MgVGVzdEhUVFBTZXJ2ZXIoQ29udHJvbE1peGluLCBIVFRQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIEFuIEhUVFAgc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGluIHNlY29uZHMuCisgICAgICAgIDpwYXJhbSBsb2c6IFBhc3MgYGBUcnVlYGAgdG8gZW5hYmxlIGxvZyBtZXNzYWdlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsPTAuNSwKKyAgICAgICAgICAgICAgICAgICAgIGxvZz1GYWxzZSwgc3NsY3R4PU5vbmUpOgorICAgICAgICAgICAgY2xhc3MgRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdkb18nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnByb2Nlc3NfcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorCisgICAgICAgICAgICAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuX2hhbmRsZXIoc2VsZikKKworICAgICAgICAgICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCBmb3JtYXQsICphcmdzKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpLmxvZ19tZXNzYWdlKGZvcm1hdCwgKmFyZ3MpCisgICAgICAgICAgICBIVFRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIERlbGVnYXRpbmdIVFRQUmVxdWVzdEhhbmRsZXIpCisgICAgICAgICAgICBDb250cm9sTWl4aW4uX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCkKKyAgICAgICAgICAgIHNlbGYuc3NsY3R4ID0gc3NsY3R4CisKKyAgICAgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2ssIGFkZHIgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3NsY3R4OgorICAgICAgICAgICAgICAgICAgICBzb2NrID0gc2VsZi5zc2xjdHgud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAjIHNvY2tldCBlcnJvcnMgYXJlIHNpbGVuY2VkIGJ5IHRoZSBjYWxsZXIsIHByaW50IHRoZW0gaGVyZQorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkdvdCBhbiBlcnJvcjpcbiVzXG4iICUgZSkKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmV0dXJuIHNvY2ssIGFkZHIKKworICAgIGNsYXNzIFRlc3RUQ1BTZXJ2ZXIoQ29udHJvbE1peGluLCBUaHJlYWRpbmdUQ1BTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBUQ1Agc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhIHNpbmdsZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIHBvbGxpbmcgaW50ZXJ2YWwgaW4gc2Vjb25kcy4KKyAgICAgICAgOmJpbmRfYW5kX2FjdGl2YXRlOiBJZiBUcnVlICh0aGUgZGVmYXVsdCksIGJpbmRzIHRoZSBzZXJ2ZXIgYW5kIHN0YXJ0cyBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmluZy4gSWYgRmFsc2UsIHlvdSBuZWVkIHRvIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWV0aDpgc2VydmVyX2JpbmRgIGFuZCA6bWV0aDpgc2VydmVyX2FjdGl2YXRlYCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbWUgbGF0ZXIgdGltZSBiZWZvcmUgY2FsbGluZyA6bWV0aDpgc3RhcnRgLCBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNlcnZlciB3aWxsIHNldCB1cCB0aGUgc29ja2V0IGFuZCBsaXN0ZW4gb24gaXQuCisgICAgICAgICIiIgorCisgICAgICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBUcnVlCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nVENQUmVxdWVzdEhhbmRsZXIoU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgorCisgICAgICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuX2hhbmRsZXIoc2VsZikKKyAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCBEZWxlZ2F0aW5nVENQUmVxdWVzdEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGUpCisgICAgICAgICAgICBDb250cm9sTWl4aW4uX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCkKKworICAgICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CisgICAgICAgICAgICBzdXBlcihUZXN0VENQU2VydmVyLCBzZWxmKS5zZXJ2ZXJfYmluZCgpCisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCisKKyAgICBjbGFzcyBUZXN0VURQU2VydmVyKENvbnRyb2xNaXhpbiwgVGhyZWFkaW5nVURQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIEEgVURQIHNlcnZlciB3aGljaCBpcyBjb250cm9sbGFibGUgdXNpbmcgOmNsYXNzOmBDb250cm9sTWl4aW5gLgorCisgICAgICAgIDpwYXJhbSBhZGRyOiBBIHR1cGxlIHdpdGggdGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgdG8gbGlzdGVuIG9uLgorICAgICAgICA6cGFyYW0gaGFuZGxlcjogQSBoYW5kbGVyIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIHBhcmFtZXRlciAtIHRoZSByZXF1ZXN0IC0gaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgdGhlIHJlcXVlc3QuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBmb3Igc2h1dGRvd24gcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzZWNvbmRzLgorICAgICAgICA6YmluZF9hbmRfYWN0aXZhdGU6IElmIFRydWUgKHRoZSBkZWZhdWx0KSwgYmluZHMgdGhlIHNlcnZlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHMgaXQgbGlzdGVuaW5nLiBJZiBGYWxzZSwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1ldGg6YHNlcnZlcl9hY3RpdmF0ZWAgYXQgc29tZSBsYXRlciB0aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIGNhbGxpbmcgOm1ldGg6YHN0YXJ0YCwgc28gdGhhdCB0aGUgc2VydmVyIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgdXAgdGhlIHNvY2tldCBhbmQgbGlzdGVuIG9uIGl0LgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nVURQUmVxdWVzdEhhbmRsZXIoRGF0YWdyYW1SZXF1ZXN0SGFuZGxlcik6CisKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorCisgICAgICAgICAgICAgICAgZGVmIGZpbmlzaChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYud2ZpbGUuZ2V0dmFsdWUoKQorICAgICAgICAgICAgICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyKERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlciwgc2VsZikuZmluaXNoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyLl9jbG9zZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgIFRocmVhZGluZ1VEUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VkID0gRmFsc2UKKworICAgICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CisgICAgICAgICAgICBzdXBlcihUZXN0VURQU2VydmVyLCBzZWxmKS5zZXJ2ZXJfYmluZCgpCisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCisKKyAgICAgICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RVRFBTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCisKKyMgLSBlbmQgb2Ygc2VydmVyX2hlbHBlciBzZWN0aW9uCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTTVRQSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBzb2NrbWFwID0ge30KKyAgICAgICAgc2VydmVyID0gVGVzdFNNVFBTZXJ2ZXIoKCdsb2NhbGhvc3QnLCAwKSwgc2VsZi5wcm9jZXNzX21lc3NhZ2UsIDAuMDAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbWFwKQorICAgICAgICBzZXJ2ZXIuc3RhcnQoKQorICAgICAgICBhZGRyID0gKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU01UUEhhbmRsZXIoYWRkciwgJ21lJywgJ3lvdScsICdMb2cnLCB0aW1lb3V0PTUuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnRvYWRkcnMsIFsneW91J10pCisgICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ0hlbGxvJ30pCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KDUuMCkgICMgMTQzMTQ6IGRvbid0IHdhaXQgZm9yZXZlcgorICAgICAgICBzZXJ2ZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmhhbmRsZWQuaXNfc2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYubWVzc2FnZXMpLCAxKQorICAgICAgICBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSA9IHNlbGYubWVzc2FnZXNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsZnJvbSwgJ21lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyY3B0dG9zLCBbJ3lvdSddKQorICAgICAgICBzZWxmLmFzc2VydEluKCdcblN1YmplY3Q6IExvZ1xuJywgZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRhdGEuZW5kc3dpdGgoJ1xuXG5IZWxsbycpKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLm1lc3NhZ2VzLmFwcGVuZChhcmdzKQorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKwogY2xhc3MgTWVtb3J5SGFuZGxlclRlc3QoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdHMgZm9yIHRoZSBNZW1vcnlIYW5kbGVyLiIiIgpAQCAtNTI1LDcgKzEwMTgsNyBAQAogICAgICAgICBzZWxmLm1lbV9sb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQogICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAgICAgICAgICMgVGhpcyB3aWxsIGZsdXNoIGJlY2F1c2UgdGhlIGxldmVsIGlzID49IGxvZ2dpbmcuV0FSTklORwotICAgICAgICBzZWxmLm1lbV9sb2dnZXIud2FybihzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIud2FybmluZyhzZWxmLm5leHRfbWVzc2FnZSgpKQogICAgICAgICBsaW5lcyA9IFsKICAgICAgICAgICAgICgnREVCVUcnLCAnMScpLAogICAgICAgICAgICAgKCdJTkZPJywgJzInKSwKQEAgLTg3MCw2OCArMTM2Myw2IEBACiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKLWNsYXNzIExvZ1JlY29yZFN0cmVhbUhhbmRsZXIoU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgotCi0gICAgIiIiSGFuZGxlciBmb3IgYSBzdHJlYW1pbmcgbG9nZ2luZyByZXF1ZXN0LiBJdCBzYXZlcyB0aGUgbG9nIG1lc3NhZ2UgaW4gdGhlCi0gICAgVENQIHNlcnZlcidzICdsb2dfb3V0cHV0JyBhdHRyaWJ1dGUuIiIiCi0KLSAgICBUQ1BfTE9HX0VORCA9ICIhISFFTkQhISEiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYpOgotICAgICAgICAiIiJIYW5kbGUgbXVsdGlwbGUgcmVxdWVzdHMgLSBlYWNoIGV4cGVjdGVkIHRvIGJlIG9mIDQtYnl0ZSBsZW5ndGgsCi0gICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBMb2dSZWNvcmQgaW4gcGlja2xlIGZvcm1hdC4gTG9ncyB0aGUgcmVjb3JkCi0gICAgICAgIGFjY29yZGluZyB0byB3aGF0ZXZlciBwb2xpY3kgaXMgY29uZmlndXJlZCBsb2NhbGx5LiIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2h1bmsgPSBzZWxmLmNvbm5lY3Rpb24ucmVjdig0KQotICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA8IDQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHNsZW4gPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKVswXQotICAgICAgICAgICAgY2h1bmsgPSBzZWxmLmNvbm5lY3Rpb24ucmVjdihzbGVuKQotICAgICAgICAgICAgd2hpbGUgbGVuKGNodW5rKSA8IHNsZW46Ci0gICAgICAgICAgICAgICAgY2h1bmsgPSBjaHVuayArIHNlbGYuY29ubmVjdGlvbi5yZWN2KHNsZW4gLSBsZW4oY2h1bmspKQotICAgICAgICAgICAgb2JqID0gc2VsZi51bnBpY2tsZShjaHVuaykKLSAgICAgICAgICAgIHJlY29yZCA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZChvYmopCi0gICAgICAgICAgICBzZWxmLmhhbmRsZV9sb2dfcmVjb3JkKHJlY29yZCkKLQotICAgIGRlZiB1bnBpY2tsZShzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhkYXRhKQotCi0gICAgZGVmIGhhbmRsZV9sb2dfcmVjb3JkKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICMgSWYgdGhlIGVuZC1vZi1tZXNzYWdlcyBzZW50aW5lbCBpcyBzZWVuLCB0ZWxsIHRoZSBzZXJ2ZXIgdG8KLSAgICAgICAgIyAgdGVybWluYXRlLgotICAgICAgICBpZiBzZWxmLlRDUF9MT0dfRU5EIGluIHJlY29yZC5tc2c6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlci5hYm9ydCA9IDEKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLnNlcnZlci5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAiXG4iCi0KLQotY2xhc3MgTG9nUmVjb3JkU29ja2V0UmVjZWl2ZXIoVGhyZWFkaW5nVENQU2VydmVyKToKLQotICAgICIiIkEgc2ltcGxlLW1pbmRlZCBUQ1Agc29ja2V0LWJhc2VkIGxvZ2dpbmcgcmVjZWl2ZXIgc3VpdGFibGUgZm9yIHRlc3QKLSAgICBwdXJwb3Nlcy4iIiIKLQotICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSAxCi0gICAgbG9nX291dHB1dCA9ICIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nbG9jYWxob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1sb2dnaW5nLmhhbmRsZXJzLkRFRkFVTFRfVENQX0xPR0dJTkdfUE9SVCwKLSAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI9TG9nUmVjb3JkU3RyZWFtSGFuZGxlcik6Ci0gICAgICAgIFRocmVhZGluZ1RDUFNlcnZlci5fX2luaXRfXyhzZWxmLCAoaG9zdCwgcG9ydCksIGhhbmRsZXIpCi0gICAgICAgIHNlbGYuYWJvcnQgPSBGYWxzZQotICAgICAgICBzZWxmLnRpbWVvdXQgPSAwLjEKLSAgICAgICAgc2VsZi5maW5pc2hlZCA9IHRocmVhZGluZy5FdmVudCgpCi0KLSAgICBkZWYgc2VydmVfdW50aWxfc3RvcHBlZChzZWxmKToKLSAgICAgICAgd2hpbGUgbm90IHNlbGYuYWJvcnQ6Ci0gICAgICAgICAgICByZCwgd3IsIGV4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zb2NrZXQuZmlsZW5vKCldLCBbXSwgW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbWVvdXQpCi0gICAgICAgICAgICBpZiByZDoKLSAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9yZXF1ZXN0KCkKLSAgICAgICAgIyBOb3RpZnkgdGhlIG1haW4gdGhyZWFkIHRoYXQgd2UncmUgYWJvdXQgdG8gZXhpdAotICAgICAgICBzZWxmLmZpbmlzaGVkLnNldCgpCi0gICAgICAgICMgY2xvc2UgdGhlIGxpc3RlbiBzb2NrZXQKLSAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQotCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBTb2NrZXRIYW5kbGVyVGVzdChCYXNlVGVzdCk6CkBAIC05NDIsNDQgKzEzNzMsMjcwIEBACiAgICAgICAgICIiIlNldCB1cCBhIFRDUCBzZXJ2ZXIgdG8gcmVjZWl2ZSBsb2cgbWVzc2FnZXMsIGFuZCBhIFNvY2tldEhhbmRsZXIKICAgICAgICAgcG9pbnRpbmcgdG8gdGhhdCBzZXJ2ZXIncyBhZGRyZXNzIGFuZCBwb3J0LiIiIgogICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQotICAgICAgICBzZWxmLnRjcHNlcnZlciA9IExvZ1JlY29yZFNvY2tldFJlY2VpdmVyKHBvcnQ9MCkKLSAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi50Y3BzZXJ2ZXIuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KLSAgICAgICAgc2VsZi50aHJlYWRzID0gWwotICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYudGNwc2VydmVyLnNlcnZlX3VudGlsX3N0b3BwZWQpXQotICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKLSAgICAgICAgICAgIHRocmVhZC5zdGFydCgpCi0KLSAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlNvY2tldEhhbmRsZXIoJ2xvY2FsaG9zdCcsIHNlbGYucG9ydCkKLSAgICAgICAgc2VsZi5zb2NrX2hkbHIuc2V0Rm9ybWF0dGVyKHNlbGYucm9vdF9mb3JtYXR0ZXIpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFRDUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAxKQorICAgICAgICBzZXJ2ZXIuc3RhcnQoKQorICAgICAgICBzZXJ2ZXIucmVhZHkud2FpdCgpCisgICAgICAgIHNlbGYuc29ja19oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5Tb2NrZXRIYW5kbGVyKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCiAgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNvY2tfaGRscikKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLlNlbWFwaG9yZSgwKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAiIiJTaHV0ZG93biB0aGUgVENQIHNlcnZlci4iIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi50Y3BzZXJ2ZXIuYWJvcnQgPSBUcnVlCi0gICAgICAgICAgICBkZWwgc2VsZi50Y3BzZXJ2ZXIKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoMi4wKQogICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuc29ja19oZGxyKQogICAgICAgICAgICAgc2VsZi5zb2NrX2hkbHIuY2xvc2UoKQotICAgICAgICAgICAgZm9yIHRocmVhZCBpbiBzZWxmLnRocmVhZHM6Ci0gICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4oMi4wKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKIAotICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYpOgotICAgICAgICAiIiJHZXQgdGhlIGxvZyBvdXRwdXQgYXMgcmVjZWl2ZWQgYnkgdGhlIFRDUCBzZXJ2ZXIuIiIiCi0gICAgICAgICMgU2lnbmFsIHRoZSBUQ1AgcmVjZWl2ZXIgYW5kIHdhaXQgZm9yIGl0IHRvIHRlcm1pbmF0ZS4KLSAgICAgICAgc2VsZi5yb290X2xvZ2dlci5jcml0aWNhbChMb2dSZWNvcmRTdHJlYW1IYW5kbGVyLlRDUF9MT0dfRU5EKQotICAgICAgICBzZWxmLnRjcHNlcnZlci5maW5pc2hlZC53YWl0KDIuMCkKLSAgICAgICAgcmV0dXJuIHNlbGYudGNwc2VydmVyLmxvZ19vdXRwdXQKKyAgICBkZWYgaGFuZGxlX3NvY2tldChzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgY29ubiA9IHJlcXVlc3QuY29ubmVjdGlvbgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3YoNCkKKyAgICAgICAgICAgIGlmIGxlbihjaHVuaykgPCA0OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzbGVuID0gc3RydWN0LnVucGFjaygiPkwiLCBjaHVuaylbMF0KKyAgICAgICAgICAgIGNodW5rID0gY29ubi5yZWN2KHNsZW4pCisgICAgICAgICAgICB3aGlsZSBsZW4oY2h1bmspIDwgc2xlbjoKKyAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rICsgY29ubi5yZWN2KHNsZW4gLSBsZW4oY2h1bmspKQorICAgICAgICAgICAgb2JqID0gcGlja2xlLmxvYWRzKGNodW5rKQorICAgICAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKKyAgICAgICAgICAgIHNlbGYubG9nX291dHB1dCArPSByZWNvcmQubXNnICsgJ1xuJworICAgICAgICAgICAgc2VsZi5oYW5kbGVkLnJlbGVhc2UoKQogCiAgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgogICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBTb2NrZXRIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidGNwIikKICAgICAgICAgbG9nZ2VyLmVycm9yKCJzcGFtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLmFjcXVpcmUoKQogICAgICAgICBsb2dnZXIuZGVidWcoImVnZ3MiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X291dHB1dCgpLCAic3BhbVxuZWdnc1xuIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLmFjcXVpcmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgInNwYW1cbmVnZ3NcbiIpCiAKKyAgICBkZWYgdGVzdF9ub3NlcnZlcihzZWxmKToKKyAgICAgICAgIyBLaWxsIHRoZSBzZXJ2ZXIKKyAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICNUaGUgbG9nZ2luZyBjYWxsIHNob3VsZCB0cnkgdG8gY29ubmVjdCwgd2hpY2ggc2hvdWxkIGZhaWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEZWxpYmVyYXRlIG1pc3Rha2UnKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5leGNlcHRpb24oJ05ldmVyIHNlbnQnKQorICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmVycm9yKCdOZXZlciBzZW50LCBlaXRoZXInKQorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5zb2NrX2hkbHIucmV0cnlUaW1lID4gbm93KQorICAgICAgICB0aW1lLnNsZWVwKHNlbGYuc29ja19oZGxyLnJldHJ5VGltZSAtIG5vdyArIDAuMDAxKQorICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmVycm9yKCdOb3IgdGhpcycpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIERhdGFncmFtSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorCisgICAgIiIiVGVzdCBmb3IgRGF0YWdyYW1IYW5kbGVyLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJTZXQgdXAgYSBVRFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBEYXRhZ3JhbUhhbmRsZXIKKyAgICAgICAgcG9pbnRpbmcgdG8gdGhhdCBzZXJ2ZXIncyBhZGRyZXNzIGFuZCBwb3J0LiIiIgorICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBhZGRyID0gKCdsb2NhbGhvc3QnLCAwKQorICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlciA9IFRlc3RVRFBTZXJ2ZXIoYWRkciwgc2VsZi5oYW5kbGVfZGF0YWdyYW0sIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLkRhdGFncmFtSGFuZGxlcignbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNvY2tfaGRscikKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiU2h1dGRvd24gdGhlIFVEUCBzZXJ2ZXIuIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoMi4wKQorICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICAgICAgc2VsZi5zb2NrX2hkbHIuY2xvc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKKworICAgIGRlZiBoYW5kbGVfZGF0YWdyYW0oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNsZW4gPSBzdHJ1Y3QucGFjaygnPkwnLCAwKSAjIGxlbmd0aCBvZiBwcmVmaXgKKyAgICAgICAgcGFja2V0ID0gcmVxdWVzdC5wYWNrZXRbbGVuKHNsZW4pOl0KKyAgICAgICAgb2JqID0gcGlja2xlLmxvYWRzKHBhY2tldCkKKyAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAnXG4nCisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgorICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBEYXRhZ3JhbUhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ1ZHAiKQorICAgICAgICBsb2dnZXIuZXJyb3IoInNwYW0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIGxvZ2dlci5lcnJvcigiZWdncyIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvZ19vdXRwdXQsICJzcGFtXG5lZ2dzXG4iKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTeXNMb2dIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IGZvciBTeXNMb2dIYW5kbGVyIHVzaW5nIFVEUC4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiU2V0IHVwIGEgVURQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgU3lzTG9nSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFVEUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9kYXRhZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zbF9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5TeXNMb2dIYW5kbGVyKCgnbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucG9ydCkpCisgICAgICAgIHNlbGYubG9nX291dHB1dCA9ICcnCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLnJvb3RfbG9nZ2VyLmhhbmRsZXJzWzBdKQorICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5zbF9oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJTaHV0ZG93biB0aGUgVURQIHNlcnZlci4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zbF9oZGxyKQorICAgICAgICAgICAgc2VsZi5zbF9oZGxyLmNsb3NlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIEJhc2VUZXN0LnRlYXJEb3duKHNlbGYpCisKKyAgICBkZWYgaGFuZGxlX2RhdGFncmFtKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSByZXF1ZXN0LnBhY2tldAorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKworICAgIGRlZiB0ZXN0X291dHB1dChzZWxmKToKKyAgICAgICAgIyBUaGUgbG9nIG1lc3NhZ2Ugc2VudCB0byB0aGUgU3lzTG9nSGFuZGxlciBpcyBwcm9wZXJseSByZWNlaXZlZC4KKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInNsaCIpCisgICAgICAgIGxvZ2dlci5lcnJvcigic3BceGU0bSIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvZ19vdXRwdXQsIGInPDExPnNwXHhjM1x4YTRtXHgwMCcpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIHNlbGYuc2xfaGRsci5hcHBlbmRfbnVsID0gRmFsc2UKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+c3BceGMzXHhhNG0nKQorICAgICAgICBzZWxmLmhhbmRsZWQuY2xlYXIoKQorICAgICAgICBzZWxmLnNsX2hkbHIuaWRlbnQgPSAiaFx4ZTRtLSIKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+aFx4YzNceGE0bS1zcFx4YzNceGE0bScpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIEhUVFBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgIiIiVGVzdCBmb3IgSFRUUEhhbmRsZXIuIiIiCisKKyAgICBQRU1GSUxFID0gIiIiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorTUlJQ1hRSUJBQUtCZ1FER1Q0eFM1cjkxcmJMSlFLMm5VRGVuQmhCRzZxRmsrYlZPanVBR0MvTFNIbEFvQm52RworelFHM2FnT0crZTdjNXoyWFQ4bTJrdE9STHFHM0U0bVltYnhneWhEcnpQNmVpMkFuYytwc3ptbnhQb0szUHVoNQorYVhWK1hLdDBiVTBDMW0yK0FDbUdHSjB0M1A0MDhhcnQ4Mm5PeEJ3OFpIZ0lnOUR0cDZ4SVVDeU9xd0lEQVFBQgorQW9HQkFKRlRuRmJvYUtoNWVVckl6am1OcktzRzQ0akV5eSt2V3ZITi9GZ1NDNGwxMDNIeGhtV2l1TDVMdjNmNworMHRNcDF0WDdENnh2SHdJRzlWV3Z5S2IvQ3E5ckpzRGlibURWSU9zbG5PV2VRaEcrWHdKeWl0UjBwcS9LbEpJQgorNUxqT1JjQnc3OTVvS1dPQWk2UmNPYjFPTjU5dHlzRUZZaEFHUU85azZWTDYyMWdSQWtFQS9HYitZWFVMTHBicworcGlYTjNxNHpjSHplYVZBTm82OXRVWjZUamFRcU1lVHhFNHRPWU0wRzBab1NlSEVkYVA1OUFPWkdLWFhOR1NReQorMnovTWRkY1lHUUpCQU1rakxTWUlwT0xKWTExamE4T3d3c3dGRzJoRXpIZTBjUzliem8rK1IvamMxYkhBNVIwWQoraTZ2QTVpUGkrd29wUEZ2cHl0ZEJvbDdVdUVCZTV4WnJ4V01DUVFDV3hFTFJIaVAyeVdwRWVMSjNnR0R6b1hNTgorUHlkV2poUmp1N0J4M0F6a1R0ZitENmxhd3oxK2VHVHVFc3M1aTBKS0JrTUV3dnduTjJzMWNlK0V1RjRKQWtCYgorRTk2aDFsQXprVlc1T0FmWU9QWThSQ1BBOTBaTy9ob3lnN1BwU3hSMEVDdURyZ0VSUjhnWEllWVVZZmVqQmtFYQorcmFiNENmUm9WSktLTTI4WXEveFpBa0J2dXE2NzBKUkN3T2dmVVRkd3c3V3BkT1FCWVBrelFjY3NLTkNzbFFXOAorL0R5VzZ5MDZvUXVzU0VOVXZ5blQ2ZHIzTEp4dC9OZ1pQaFpYMitrMWVZRFYKKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNHekNDQVlTZ0F3SUJBZ0lKQUlxODRhMlEvT3ZsTUEwR0NTcUdTSWIzRFFFQkJRVUFNQlF4RWpBUUJnTlYKK0JBTVRDV3h2WTJGc2FHOXpkREFlRncweE1UQTFNakV4TURJek16TmFGdzAzTlRBek1qRXdNelUxTVRkYU1CUXgKK0VqQVFCZ05WQkFNVENXeHZZMkZzYUc5emREQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUEKK3hrK01VdWEvZGEyeXlVQ3RwMUEzcHdZUVJ1cWhaUG0xVG83Z0JndnkwaDVRS0FaN3hzMEJ0Mm9EaHZudTNPYzkKK2wwL0p0cExUa1M2aHR4T0ptSm04WU1vUTY4eitub3RnSjNQcWJNNXA4VDZDdHo3b2VXbDFmbHlyZEcxTkF0WnQKK3ZnQXBoaGlkTGR6K05QR3E3Zk5wenNRY1BHUjRDSVBRN2Flc1NGQXNqcXNDQXdFQUFhTjFNSE13SFFZRFZSME8KK0JCWUVGTFdhVVBPNk43ZWZHaXVvUzlpM0RWWWNVd24wTUVRR0ExVWRJd1E5TUR1QUZMV2FVUE82TjdlZkdpdW8KK1M5aTNEVlljVXduMG9SaWtGakFVTVJJd0VBWURWUVFERXdsc2IyTmhiR2h2YzNTQ0NRQ0t2T0d0a1B6cjVUQU0KK0JnTlZIUk1FQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBTUs1d2hQakxOUUsxSXZ2azg4b3FKcXEKKzRmODg5T3dpa0dQMGVVaE9CaGJGbHNacytqcTVZWkMyVXpIeitldnpLQmxnQVAxdTRsUC9jQjg1Q25qdldxTSsKKzFjL2x5d0ZIUTZIT2REZVExTDcydFNZTXJOT0c0WE5tTG4waDdyeDZHb1RVN2RjRlJmc2VhaEJDcThtdjBJRHQKK0lSYlRwdmxIV1Bqc1N2SHowWk9ICistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlNldCB1cCBhbiBIVFRQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgSFRUUEhhbmRsZXIKKyAgICAgICAgcG9pbnRpbmcgdG8gdGhhdCBzZXJ2ZXIncyBhZGRyZXNzIGFuZCBwb3J0LiIiIgorICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIGhhbmRsZV9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBzZWxmLmNvbW1hbmQgPSByZXF1ZXN0LmNvbW1hbmQKKyAgICAgICAgc2VsZi5sb2dfZGF0YSA9IHVybHBhcnNlKHJlcXVlc3QucGF0aCkKKyAgICAgICAgaWYgc2VsZi5jb21tYW5kID09ICdQT1NUJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBybGVuID0gaW50KHJlcXVlc3QuaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXSkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfZGF0YSA9IHJlcXVlc3QucmZpbGUucmVhZChybGVuKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9kYXRhID0gTm9uZQorICAgICAgICByZXF1ZXN0LnNlbmRfcmVzcG9uc2UoMjAwKQorICAgICAgICByZXF1ZXN0LmVuZF9oZWFkZXJzKCkKKyAgICAgICAgc2VsZi5oYW5kbGVkLnNldCgpCisKKyAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CisgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIEhUVFBIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaHR0cCIpCisgICAgICAgIHJvb3RfbG9nZ2VyID0gc2VsZi5yb290X2xvZ2dlcgorICAgICAgICByb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIGZvciBzZWN1cmUgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgICAgICBpZiBzZWN1cmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgc3NsCisgICAgICAgICAgICAgICAgICAgIGZkLCBmbiA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZuLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuUEVNRklMRSkKKyAgICAgICAgICAgICAgICAgICAgc3NsY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgICAgICAgICAgc3NsY3R4LmxvYWRfY2VydF9jaGFpbihmbikKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3NsY3R4ID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzc2xjdHggPSBOb25lCisgICAgICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlciA9IFRlc3RIVFRQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wMSwgc3NsY3R4PXNzbGN0eCkKKyAgICAgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgICAgICBzZXJ2ZXIucmVhZHkud2FpdCgpCisgICAgICAgICAgICBob3N0ID0gJ2xvY2FsaG9zdDolZCcgJSBzZXJ2ZXIuc2VydmVyX3BvcnQKKyAgICAgICAgICAgIHNlY3VyZV9jbGllbnQgPSBzZWN1cmUgYW5kIHNzbGN0eAorICAgICAgICAgICAgc2VsZi5oX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyKGhvc3QsICcvZnJvYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJlPXNlY3VyZV9jbGllbnQpCisgICAgICAgICAgICBzZWxmLmxvZ19kYXRhID0gTm9uZQorICAgICAgICAgICAgcm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLmhfaGRscikKKworICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ0dFVCcsICdQT1NUJyk6CisgICAgICAgICAgICAgICAgc2VsZi5oX2hkbHIubWV0aG9kID0gbWV0aG9kCisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgICAgICAgICBtc2cgPSAic3BceGU0bSIKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IobXNnKQorICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX2RhdGEucGF0aCwgJy9mcm9iJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tbWFuZCwgbWV0aG9kKQorICAgICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAnR0VUJzoKKyAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlX3FzKHNlbGYubG9nX2RhdGEucXVlcnkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlX3FzKHNlbGYucG9zdF9kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ25hbWUnXSwgWydodHRwJ10pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydmdW5jTmFtZSddLCBbJ3Rlc3Rfb3V0cHV0J10pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydtc2cnXSwgW21zZ10pCisKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoMi4wKQorICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuaF9oZGxyKQorICAgICAgICAgICAgc2VsZi5oX2hkbHIuY2xvc2UoKQogCiBjbGFzcyBNZW1vcnlUZXN0KEJhc2VUZXN0KToKIApAQCAtMTA4NywyOCArMTc0NCwzOSBAQAogICAgIGRlZiB0ZXN0X3dhcm5pbmdzKHNlbGYpOgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhUcnVlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKLSAgICAgICAgICAgICAgICBmaWxlID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoZmlsZSkKLSAgICAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicHkud2FybmluZ3MiKQotICAgICAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGgpCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiSSdtIHdhcm5pbmcgeW91Li4uIikKLSAgICAgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoKQotICAgICAgICAgICAgICAgIHMgPSBmaWxlLmdldHZhbHVlKCkKLSAgICAgICAgICAgICAgICBoLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5maW5kKCJVc2VyV2FybmluZzogSSdtIHdhcm5pbmcgeW91Li4uXG4iKSA+IDApCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5jYXB0dXJlV2FybmluZ3MsIEZhbHNlKQorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQorICAgICAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzdHJlYW0pCisgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicHkud2FybmluZ3MiKQorICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaCkKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkknbSB3YXJuaW5nIHlvdS4uLiIpCisgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICAgICAgcyA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpID4gMCkKIAotICAgICAgICAgICAgICAgICNTZWUgaWYgYW4gZXhwbGljaXQgZmlsZSB1c2VzIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbgotICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcoIkV4cGxpY2l0IiwgVXNlcldhcm5pbmcsICJkdW1teS5weSIsIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsICJEdW1teSBsaW5lIikKLSAgICAgICAgICAgICAgICBzID0gZmlsZS5nZXR2YWx1ZSgpCi0gICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAotICAgICAgICAgICAgICAgICAgICAgICAgImR1bW15LnB5OjQyOiBVc2VyV2FybmluZzogRXhwbGljaXRcbiAgRHVtbXkgbGluZVxuIikKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jYXB0dXJlV2FybmluZ3MoRmFsc2UpCisgICAgICAgICAgICAjU2VlIGlmIGFuIGV4cGxpY2l0IGZpbGUgdXNlcyB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgIGFfZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nKCJFeHBsaWNpdCIsIFVzZXJXYXJuaW5nLCAiZHVtbXkucHkiLCA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfZmlsZSwgIkR1bW15IGxpbmUiKQorICAgICAgICAgICAgcyA9IGFfZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICBhX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAorICAgICAgICAgICAgICAgICJkdW1teS5weTo0MjogVXNlcldhcm5pbmc6IEV4cGxpY2l0XG4gIER1bW15IGxpbmVcbiIpCisKKyAgICBkZWYgdGVzdF93YXJuaW5nc19ub19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgbG9nZ2luZy5jYXB0dXJlV2FybmluZ3MoVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncywgRmFsc2UpCisKKyAgICAgICAgICAgICMgY29uZmlybSBvdXIgYXNzdW1wdGlvbjogbm8gbG9nZ2VycyBhcmUgc2V0CisgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicHkud2FybmluZ3MiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZXIuaGFuZGxlcnMsIFtdKQorCisgICAgICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZygiRXhwbGljaXQiLCBVc2VyV2FybmluZywgImR1bW15LnB5IiwgNDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnZXIuaGFuZGxlcnMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGxvZ2dlci5oYW5kbGVyc1swXSwgbG9nZ2luZy5OdWxsSGFuZGxlcikKIAogCiBkZWYgZm9ybWF0RnVuYyhmb3JtYXQsIGRhdGVmbXQ9Tm9uZSk6CkBAIC0xOTYxLDYgKzI2MjksNyBAQAogICAgICAgICAgICAgbG9nZ2luZy5jb25maWcuc3RvcExpc3RlbmluZygpCiAgICAgICAgICAgICB0LmpvaW4oMi4wKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9saXN0ZW5fY29uZmlnXzEwX29rKHNlbGYpOgogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKGpzb24uZHVtcHMoc2VsZi5jb25maWcxMCkpCkBAIC0xOTgwLDYgKzI2NDksNyBAQAogICAgICAgICAgICAgICAgICgnRVJST1InLCAnNCcpLAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfbGlzdGVuX2NvbmZpZ18xX29rKHNlbGYpOgogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRleHR3cmFwLmRlZGVudChDb25maWdGaWxlVGVzdC5jb25maWcxKSkKQEAgLTE5OTQsNiArMjY2NCwyNyBAQAogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQogCisgICAgZGVmIHRlc3RfYmFzZWNvbmZpZyhzZWxmKToKKyAgICAgICAgZCA9IHsKKyAgICAgICAgICAgICdhdHVwbGUnOiAoMSwgMiwgMyksCisgICAgICAgICAgICAnYWxpc3QnOiBbJ2EnLCAnYicsICdjJ10sCisgICAgICAgICAgICAnYWRpY3QnOiB7J2QnOiAnZScsICdmJzogMyB9LAorICAgICAgICAgICAgJ25lc3QxJzogKCdnJywgKCdoJywgJ2knKSwgJ2onKSwKKyAgICAgICAgICAgICduZXN0Mic6IFsnaycsIFsnbCcsICdtJ10sICduJ10sCisgICAgICAgICAgICAnbmVzdDMnOiBbJ28nLCAnY2ZnOi8vYWxpc3QnLCAncCddLAorICAgICAgICB9CisgICAgICAgIGJjID0gbG9nZ2luZy5jb25maWcuQmFzZUNvbmZpZ3VyYXRvcihkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2F0dXBsZVsxXScpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2FsaXN0WzFdJyksICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MVsxXVswXScpLCAnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vbmVzdDJbMV1bMV0nKSwgJ20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2FkaWN0LmQnKSwgJ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2FkaWN0W2ZdJyksIDMpCisgICAgICAgIHYgPSBiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5wb3AoMSksIFsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly9ub3N1Y2gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiYy5jb252ZXJ0LCAnY2ZnOi8vIScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBiYy5jb252ZXJ0LCAnY2ZnOi8vYWRpY3RbMl0nKQogCiBjbGFzcyBNYW5hZ2VyVGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RfbWFuYWdlcl9sb2dnZXJjbGFzcyhzZWxmKToKQEAgLTIwMTIsNiArMjcwMywxMSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2VkLCBbJ3Nob3VsZCBhcHBlYXIgaW4gbG9nZ2VkJ10pCiAKKyAgICBkZWYgdGVzdF9zZXRfbG9nX3JlY29yZF9mYWN0b3J5KHNlbGYpOgorICAgICAgICBtYW4gPSBsb2dnaW5nLk1hbmFnZXIoTm9uZSkKKyAgICAgICAgZXhwZWN0ZWQgPSBvYmplY3QoKQorICAgICAgICBtYW4uc2V0TG9nUmVjb3JkRmFjdG9yeShleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW4ubG9nUmVjb3JkRmFjdG9yeSwgZXhwZWN0ZWQpCiAKIGNsYXNzIENoaWxkTG9nZ2VyVGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RfY2hpbGRfbG9nZ2VycyhzZWxmKToKQEAgLTIxMTMsNiArMjgwOSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5FUlJPUiwgbWVzc2FnZT0nMicpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5DUklUSUNBTCwgbWVzc2FnZT0nMycpKQogCitaRVJPID0gZGF0ZXRpbWUudGltZWRlbHRhKDApCisKK2NsYXNzIFVUQyhkYXRldGltZS50emluZm8pOgorICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gWkVSTworCisgICAgZHN0ID0gdXRjb2Zmc2V0CisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuICdVVEMnCisKK3V0YyA9IFVUQygpCiAKIGNsYXNzIEZvcm1hdHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTIxODYsNiArMjg5NCw3MSBAQAogICAgICAgICBmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJ2FzY3RpbWUnLCBzdHlsZT0nJCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi51c2VzVGltZSgpKQogCisgICAgZGVmIHRlc3RfaW52YWxpZF9zdHlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5Gb3JtYXR0ZXIsIE5vbmUsIE5vbmUsICd4JykKKworICAgIGRlZiB0ZXN0X3RpbWUoc2VsZik6CisgICAgICAgIHIgPSBzZWxmLmdldF9yZWNvcmQoKQorICAgICAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTMsIDQsIDIxLCA4LCAzLCAwLCAwLCB1dGMpCisgICAgICAgICMgV2UgdXNlIE5vbmUgdG8gaW5kaWNhdGUgd2Ugd2FudCB0aGUgbG9jYWwgdGltZXpvbmUKKyAgICAgICAgIyBXZSdyZSBlc3NlbnRpYWxseSBjb252ZXJ0aW5nIGEgVVRDIHRpbWUgdG8gbG9jYWwgdGltZQorICAgICAgICByLmNyZWF0ZWQgPSB0aW1lLm1rdGltZShkdC5hc3RpbWV6b25lKE5vbmUpLnRpbWV0dXBsZSgpKQorICAgICAgICByLm1zZWNzID0gMTIzCisgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXMgJShtZXNzYWdlKXMnKQorICAgICAgICBmLmNvbnZlcnRlciA9IHRpbWUuZ210aW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mb3JtYXRUaW1lKHIpLCAnMTk5My0wNC0yMSAwODowMzowMCwxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZm9ybWF0VGltZShyLCAnJVk6JWQnKSwgJzE5OTM6MjEnKQorICAgICAgICBmLmZvcm1hdChyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuYXNjdGltZSwgJzE5OTMtMDQtMjEgMDg6MDM6MDAsMTIzJykKKworY2xhc3MgVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcihsb2dnaW5nLkJ1ZmZlcmluZ0Zvcm1hdHRlcik6CisgICAgZGVmIGZvcm1hdEhlYWRlcihzZWxmLCByZWNvcmRzKToKKyAgICAgICAgcmV0dXJuICdbKCVkKScgJSBsZW4ocmVjb3JkcykKKworICAgIGRlZiBmb3JtYXRGb290ZXIoc2VsZiwgcmVjb3Jkcyk6CisgICAgICAgIHJldHVybiAnKCVkKV0nICUgbGVuKHJlY29yZHMpCisKK2NsYXNzIEJ1ZmZlcmluZ0Zvcm1hdHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yZWNvcmRzID0gWworICAgICAgICAgICAgbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ29uZSd9KSwKKyAgICAgICAgICAgIGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0d28nfSksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIGYgPSBsb2dnaW5nLkJ1ZmZlcmluZ0Zvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGYuZm9ybWF0KFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnb25ldHdvJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKworICAgIGRlZiB0ZXN0X2N1c3RvbShzZWxmKToKKyAgICAgICAgZiA9IFRlc3RCdWZmZXJpbmdGb3JtYXR0ZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdbKDIpb25ldHdvKDIpXScsIGYuZm9ybWF0KHNlbGYucmVjb3JkcykpCisgICAgICAgIGxmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJzwlKG1lc3NhZ2Upcz4nKQorICAgICAgICBmID0gVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcihsZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWygyKTxvbmU+PHR3bz4oMildJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKworY2xhc3MgRXhjZXB0aW9uVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfZm9ybWF0dGluZyhzZWxmKToKKyAgICAgICAgciA9IHNlbGYucm9vdF9sb2dnZXIKKyAgICAgICAgaCA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICByLmFkZEhhbmRsZXIoaCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdkZWxpYmVyYXRlIG1pc3Rha2UnKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBsb2dnaW5nLmV4Y2VwdGlvbignZmFpbGVkJywgc3RhY2tfaW5mbz1UcnVlKQorICAgICAgICByLnJlbW92ZUhhbmRsZXIoaCkKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIHIgPSBoLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuZXhjX3RleHQuc3RhcnRzd2l0aCgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgbGFzdCk6XG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuZXhjX3RleHQuZW5kc3dpdGgoJ1xuUnVudGltZUVycm9yOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxpYmVyYXRlIG1pc3Rha2UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhY2tfaW5mby5zdGFydHN3aXRoKCdTdGFjayAobW9zdCByZWNlbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYWxsIGxhc3QpOlxuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YWNrX2luZm8uZW5kc3dpdGgoJ2xvZ2dpbmcuZXhjZXB0aW9uKFwnZmFpbGVkXCcsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YWNrX2luZm89VHJ1ZSknKSkKKworCiBjbGFzcyBMYXN0UmVzb3J0VGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RfbGFzdF9yZXNvcnQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGUgbGFzdCByZXNvcnQgaGFuZGxlcgpAQCAtMjE5Niw2ICsyOTY5LDggQEAKICAgICAgICAgb2xkX3JhaXNlX2V4Y2VwdGlvbnMgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgcm9vdC5kZWJ1ZygnVGhpcyBzaG91bGQgbm90IGFwcGVhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnJykKICAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhXG4nKQogICAgICAgICAgICAgI05vIGhhbmRsZXJzIGFuZCBubyBsYXN0IHJlc29ydCwgc28gJ05vIGhhbmRsZXJzJyBtZXNzYWdlCkBAIC0yMjIwLDYgKzI5OTUsNTg2IEBACiAgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZV9leGNlcHRpb25zCiAKIAorY2xhc3MgRmFrZUhhbmRsZXI6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaWRlbnRpZmllciwgY2FsbGVkKToKKyAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ2FjcXVpcmUnLCAnZmx1c2gnLCAnY2xvc2UnLCAncmVsZWFzZScpOgorICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBtZXRob2QsIHNlbGYucmVjb3JkX2NhbGwoaWRlbnRpZmllciwgbWV0aG9kLCBjYWxsZWQpKQorCisgICAgZGVmIHJlY29yZF9jYWxsKHNlbGYsIGlkZW50aWZpZXIsIG1ldGhvZF9uYW1lLCBjYWxsZWQpOgorICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoJ3t9IC0ge30nLmZvcm1hdChpZGVudGlmaWVyLCBtZXRob2RfbmFtZSkpCisgICAgICAgIHJldHVybiBpbm5lcgorCisKK2NsYXNzIFJlY29yZGluZ0hhbmRsZXIobG9nZ2luZy5OdWxsSGFuZGxlcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoUmVjb3JkaW5nSGFuZGxlciwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLnJlY29yZHMgPSBbXQorCisgICAgZGVmIGhhbmRsZShzZWxmLCByZWNvcmQpOgorICAgICAgICAiIiJLZWVwIHRyYWNrIG9mIGFsbCB0aGUgZW1pdHRlZCByZWNvcmRzLiIiIgorICAgICAgICBzZWxmLnJlY29yZHMuYXBwZW5kKHJlY29yZCkKKworCitjbGFzcyBTaHV0ZG93blRlc3QoQmFzZVRlc3QpOgorCisgICAgIiIiVGVzdCBzdWl0ZSBmb3IgdGhlIHNodXRkb3duIG1ldGhvZC4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoU2h1dGRvd25UZXN0LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYuY2FsbGVkID0gW10KKworICAgICAgICByYWlzZV9leGNlcHRpb25zID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIGxvZ2dpbmcsICdyYWlzZUV4Y2VwdGlvbnMnLCByYWlzZV9leGNlcHRpb25zKQorCisgICAgZGVmIHJhaXNlX2Vycm9yKHNlbGYsIGVycm9yKToKKyAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICByYWlzZSBlcnJvcigpCisgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgZGVmIHRlc3Rfbm9fZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBjcmVhdGUgc29tZSBmYWtlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXIwID0gRmFrZUhhbmRsZXIoMCwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIxID0gRmFrZUhhbmRsZXIoMSwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIyID0gRmFrZUhhbmRsZXIoMiwgc2VsZi5jYWxsZWQpCisKKyAgICAgICAgIyBjcmVhdGUgbGl2ZSB3ZWFrcmVmIHRvIHRob3NlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXJzID0gbWFwKGxvZ2dpbmcud2Vha3JlZi5yZWYsIFtoYW5kbGVyMCwgaGFuZGxlcjEsIGhhbmRsZXIyXSkKKworICAgICAgICBsb2dnaW5nLnNodXRkb3duKGhhbmRsZXJMaXN0PWxpc3QoaGFuZGxlcnMpKQorCisgICAgICAgIGV4cGVjdGVkID0gWycyIC0gYWNxdWlyZScsICcyIC0gZmx1c2gnLCAnMiAtIGNsb3NlJywgJzIgLSByZWxlYXNlJywKKyAgICAgICAgICAgICAgICAgICAgJzEgLSBhY3F1aXJlJywgJzEgLSBmbHVzaCcsICcxIC0gY2xvc2UnLCAnMSAtIHJlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAnMCAtIGFjcXVpcmUnLCAnMCAtIGZsdXNoJywgJzAgLSBjbG9zZScsICcwIC0gcmVsZWFzZSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHNlbGYuY2FsbGVkKQorCisgICAgZGVmIF90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2Qoc2VsZiwgbWV0aG9kLCBlcnJvcik6CisgICAgICAgIGhhbmRsZXIgPSBGYWtlSGFuZGxlcigwLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgc2V0YXR0cihoYW5kbGVyLCBtZXRob2QsIHNlbGYucmFpc2VfZXJyb3IoZXJyb3IpKQorICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLndlYWtyZWYucmVmKGhhbmRsZXIpXQorCisgICAgICAgIGxvZ2dpbmcuc2h1dGRvd24oaGFuZGxlckxpc3Q9bGlzdChoYW5kbGVycykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMCAtIHJlbGVhc2UnLCBzZWxmLmNhbGxlZFstMV0pCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fYWNxdWlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgSU9FcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9mbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIElPRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnY2xvc2UnLCBJT0Vycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2FjcXVpcmUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIFZhbHVlRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnZmx1c2gnLCBWYWx1ZUVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2Nsb3NlJywgVmFsdWVFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fYWNxdWlyZV93aXRob3V0X3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2ZsdXNoX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2Nsb3NlX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdjbG9zZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2FjcXVpcmVfd2l0aF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjcXVpcmUnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9mbHVzaF93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmx1c2gnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9jbG9zZV93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2UnLCBJbmRleEVycm9yKQorCisKK2NsYXNzIE1vZHVsZUxldmVsTWlzY1Rlc3QoQmFzZVRlc3QpOgorCisgICAgIiIiVGVzdCBzdWl0ZSBmb3Igc29tZSBtb2R1bGUgbGV2ZWwgbWV0aG9kcy4iIiIKKworICAgIGRlZiB0ZXN0X2Rpc2FibGUoc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gbG9nZ2luZy5yb290Lm1hbmFnZXIuZGlzYWJsZQorICAgICAgICAjIGNvbmZpcm0gb3VyIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2xkX2Rpc2FibGUsIDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmRpc2FibGUsIG9sZF9kaXNhYmxlKQorCisgICAgICAgIGxvZ2dpbmcuZGlzYWJsZSg4MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubWFuYWdlci5kaXNhYmxlLCA4MykKKworICAgIGRlZiBfdGVzdF9sb2coc2VsZiwgbWV0aG9kLCBsZXZlbD1Ob25lKToKKyAgICAgICAgY2FsbGVkID0gW10KKyAgICAgICAgcGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywKKyAgICAgICAgICAgICAgbGFtYmRhICphLCAqKmt3OiBjYWxsZWQuYXBwZW5kKChhLCBrdykpKQorCisgICAgICAgIHJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBsb2dnaW5nLnJvb3QuYWRkSGFuZGxlcihyZWNvcmRpbmcpCisKKyAgICAgICAgbG9nX21ldGhvZCA9IGdldGF0dHIobG9nZ2luZywgbWV0aG9kKQorICAgICAgICBpZiBsZXZlbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxvZ19tZXRob2QobGV2ZWwsICJ0ZXN0IG1lOiAlciIsIHJlY29yZGluZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ19tZXRob2QoInRlc3QgbWU6ICVyIiwgcmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gcmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZ2V0TWVzc2FnZSgpLCAidGVzdCBtZTogJXIiICUgcmVjb3JkaW5nKQorCisgICAgICAgIGV4cGVjdGVkX2xldmVsID0gbGV2ZWwgaWYgbGV2ZWwgaXMgbm90IE5vbmUgZWxzZSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZC51cHBlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBleHBlY3RlZF9sZXZlbCkKKworICAgICAgICAjIGJhc2ljQ29uZmlnIHdhcyBub3QgY2FsbGVkIQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxlZCwgW10pCisKKyAgICBkZWYgdGVzdF9sb2coc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdsb2cnLCBsb2dnaW5nLkVSUk9SKQorCisgICAgZGVmIHRlc3RfZGVidWcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdkZWJ1ZycpCisKKyAgICBkZWYgdGVzdF9pbmZvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnaW5mbycpCisKKyAgICBkZWYgdGVzdF93YXJuaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnd2FybmluZycpCisKKyAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2Vycm9yJykKKworICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnY3JpdGljYWwnKQorCisgICAgZGVmIHRlc3Rfc2V0X2xvZ2dlcl9jbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLnNldExvZ2dlckNsYXNzLCBvYmplY3QpCisKKyAgICAgICAgY2xhc3MgTXlMb2dnZXIobG9nZ2luZy5Mb2dnZXIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGxvZ2dpbmcuc2V0TG9nZ2VyQ2xhc3MoTXlMb2dnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMb2dnZXJDbGFzcygpLCBNeUxvZ2dlcikKKworICAgICAgICBsb2dnaW5nLnNldExvZ2dlckNsYXNzKGxvZ2dpbmcuTG9nZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TG9nZ2VyQ2xhc3MoKSwgbG9nZ2luZy5Mb2dnZXIpCisKK2NsYXNzIExvZ1JlY29yZFRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X3N0cl9yZXAoc2VsZik6CisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIHMgPSBzdHIocikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgnPExvZ1JlY29yZDogJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmVuZHN3aXRoKCc+JykpCisKKyAgICBkZWYgdGVzdF9kaWN0X2FyZyhzZWxmKToKKyAgICAgICAgaCA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICByID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICByLmFkZEhhbmRsZXIoaCkKKyAgICAgICAgZCA9IHsnbGVzcycgOiAnbW9yZScgfQorICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ2xlc3MgaXMgJShsZXNzKXMnLCBkKQorICAgICAgICBzZWxmLmFzc2VydElzKGgucmVjb3Jkc1swXS5hcmdzLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgucmVjb3Jkc1swXS5tZXNzYWdlLCAnbGVzcyBpcyBtb3JlJykKKyAgICAgICAgci5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgIGguY2xvc2UoKQorCisgICAgZGVmIHRlc3RfbXVsdGlwcm9jZXNzaW5nKHNlbGYpOgorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucHJvY2Vzc05hbWUsICdNYWluUHJvY2VzcycpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcgYXMgbXAKKyAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucHJvY2Vzc05hbWUsIG1wLmN1cnJlbnRfcHJvY2VzcygpLm5hbWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsKHNlbGYpOgorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBOT1RfTk9ORSA9IHNlbGYuYXNzZXJ0SXNOb3ROb25lCisgICAgICAgIGlmIHRocmVhZGluZzoKKyAgICAgICAgICAgIE5PVF9OT05FKHIudGhyZWFkKQorICAgICAgICAgICAgTk9UX05PTkUoci50aHJlYWROYW1lKQorICAgICAgICBOT1RfTk9ORShyLnByb2Nlc3MpCisgICAgICAgIE5PVF9OT05FKHIucHJvY2Vzc05hbWUpCisgICAgICAgIGxvZ190aHJlYWRzID0gbG9nZ2luZy5sb2dUaHJlYWRzCisgICAgICAgIGxvZ19wcm9jZXNzZXMgPSBsb2dnaW5nLmxvZ1Byb2Nlc3NlcworICAgICAgICBsb2dfbXVsdGlwcm9jZXNzaW5nID0gbG9nZ2luZy5sb2dNdWx0aXByb2Nlc3NpbmcKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9nZ2luZy5sb2dUaHJlYWRzID0gRmFsc2UKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nUHJvY2Vzc2VzID0gRmFsc2UKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nTXVsdGlwcm9jZXNzaW5nID0gRmFsc2UKKyAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgICAgICBOT05FID0gc2VsZi5hc3NlcnRJc05vbmUKKyAgICAgICAgICAgIE5PTkUoci50aHJlYWQpCisgICAgICAgICAgICBOT05FKHIudGhyZWFkTmFtZSkKKyAgICAgICAgICAgIE5PTkUoci5wcm9jZXNzKQorICAgICAgICAgICAgTk9ORShyLnByb2Nlc3NOYW1lKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9nZ2luZy5sb2dUaHJlYWRzID0gbG9nX3RocmVhZHMKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nUHJvY2Vzc2VzID0gbG9nX3Byb2Nlc3NlcworICAgICAgICAgICAgbG9nZ2luZy5sb2dNdWx0aXByb2Nlc3NpbmcgPSBsb2dfbXVsdGlwcm9jZXNzaW5nCisKK2NsYXNzIEJhc2ljQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciBsb2dnaW5nLmJhc2ljQ29uZmlnLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihCYXNpY0NvbmZpZ1Rlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5oYW5kbGVycyA9IGxvZ2dpbmcucm9vdC5oYW5kbGVycworICAgICAgICBzZWxmLnNhdmVkX2hhbmRsZXJzID0gbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCisgICAgICAgIHNlbGYuc2F2ZWRfaGFuZGxlcl9saXN0ID0gbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKyAgICAgICAgc2VsZi5vcmlnaW5hbF9sb2dnaW5nX2xldmVsID0gbG9nZ2luZy5yb290LmxldmVsCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmNsZWFudXApCisgICAgICAgIGxvZ2dpbmcucm9vdC5oYW5kbGVycyA9IFtdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGZvciBoIGluIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1s6XToKKyAgICAgICAgICAgIGxvZ2dpbmcucm9vdC5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgc3VwZXIoQmFzaWNDb25maWdUZXN0LCBzZWxmKS50ZWFyRG93bigpCisKKyAgICBkZWYgY2xlYW51cChzZWxmKToKKyAgICAgICAgc2V0YXR0cihsb2dnaW5nLnJvb3QsICdoYW5kbGVycycsIHNlbGYuaGFuZGxlcnMpCisgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJzLmNsZWFyKCkKKyAgICAgICAgbG9nZ2luZy5faGFuZGxlcnMudXBkYXRlKHNlbGYuc2F2ZWRfaGFuZGxlcnMpCisgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdID0gc2VsZi5zYXZlZF9oYW5kbGVyX2xpc3QKKyAgICAgICAgbG9nZ2luZy5yb290LmxldmVsID0gc2VsZi5vcmlnaW5hbF9sb2dnaW5nX2xldmVsCisKKyAgICBkZWYgdGVzdF9ub19rd2FyZ3Moc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoKQorCisgICAgICAgICMgaGFuZGxlciBkZWZhdWx0cyB0byBhIFN0cmVhbUhhbmRsZXIgdG8gc3lzLnN0ZGVycgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnaW5nLnJvb3QuaGFuZGxlcnMpLCAxKQorICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLlN0cmVhbUhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0sIHN5cy5zdGRlcnIpCisKKyAgICAgICAgZm9ybWF0dGVyID0gaGFuZGxlci5mb3JtYXR0ZXIKKyAgICAgICAgIyBmb3JtYXQgZGVmYXVsdHMgdG8gbG9nZ2luZy5CQVNJQ19GT1JNQVQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXR0ZXIuX3N0eWxlLl9mbXQsIGxvZ2dpbmcuQkFTSUNfRk9STUFUKQorICAgICAgICAjIGRhdGVmbXQgZGVmYXVsdHMgdG8gTm9uZQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmb3JtYXR0ZXIuZGF0ZWZtdCkKKyAgICAgICAgIyBzdHlsZSBkZWZhdWx0cyB0byAlCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmb3JtYXR0ZXIuX3N0eWxlLCBsb2dnaW5nLlBlcmNlbnRTdHlsZSkKKworICAgICAgICAjIGxldmVsIGlzIG5vdCBleHBsaWNpdGx5IHNldAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5sZXZlbCwgc2VsZi5vcmlnaW5hbF9sb2dnaW5nX2xldmVsKQorCisgICAgZGVmIHRlc3RfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZmlsZW5hbWU9J3Rlc3QubG9nJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnaW5nLnJvb3QuaGFuZGxlcnMpLCAxKQorICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLkZpbGVIYW5kbGVyKQorCisgICAgICAgIGV4cGVjdGVkID0gbG9nZ2luZy5GaWxlSGFuZGxlcigndGVzdC5sb2cnLCAnYScpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChleHBlY3RlZC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbS5tb2RlLCBleHBlY3RlZC5zdHJlYW0ubW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbS5uYW1lLCBleHBlY3RlZC5zdHJlYW0ubmFtZSkKKworICAgIGRlZiB0ZXN0X2ZpbGVtb2RlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZpbGVuYW1lPSd0ZXN0LmxvZycsIGZpbGVtb2RlPSd3YicpCisKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXQorICAgICAgICBleHBlY3RlZCA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoJ3Rlc3QubG9nJywgJ3diJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGV4cGVjdGVkLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuc3RyZWFtLm1vZGUsIGV4cGVjdGVkLnN0cmVhbS5tb2RlKQorCisgICAgZGVmIHRlc3Rfc3RyZWFtKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdHJlYW0uY2xvc2UpCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3RyZWFtPXN0cmVhbSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnaW5nLnJvb3QuaGFuZGxlcnMpLCAxKQorICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLlN0cmVhbUhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0sIHN0cmVhbSkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9J2ZvbycpCisKKyAgICAgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdLmZvcm1hdHRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdHRlci5fc3R5bGUuX2ZtdCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9kYXRlZm10KHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGRhdGVmbXQ9J2JhcicpCisKKyAgICAgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdLmZvcm1hdHRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdHRlci5kYXRlZm10LCAnYmFyJykKKworICAgIGRlZiB0ZXN0X3N0eWxlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKHN0eWxlPSckJykKKworICAgICAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0uZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmb3JtYXR0ZXIuX3N0eWxlLCBsb2dnaW5nLlN0cmluZ1RlbXBsYXRlU3R5bGUpCisKKyAgICBkZWYgdGVzdF9sZXZlbChzZWxmKToKKyAgICAgICAgb2xkX2xldmVsID0gbG9nZ2luZy5yb290LmxldmVsCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnJvb3Quc2V0TGV2ZWwsIG9sZF9sZXZlbCkKKworICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPTU3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5sZXZlbCwgNTcpCisgICAgICAgICMgVGVzdCB0aGF0IHNlY29uZCBjYWxsIGhhcyBubyBlZmZlY3QKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD01OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubGV2ZWwsIDU3KQorCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlKHNlbGYpOgorICAgICAgICBhc3NlcnRSYWlzZXMgPSBzZWxmLmFzc2VydFJhaXNlcworICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKV0KKyAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgZmlsZW5hbWU9J3Rlc3QubG9nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuYmFzaWNDb25maWcsIGZpbGVuYW1lPSd0ZXN0LmxvZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPWhhbmRsZXJzKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgc3RyZWFtPXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9aGFuZGxlcnMpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVycyhzZWxmKToKKyAgICAgICAgaGFuZGxlcnMgPSBbCisgICAgICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKSwKKyAgICAgICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KSwKKyAgICAgICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpLAorICAgICAgICBdCisgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGhhbmRsZXJzWzJdLnNldEZvcm1hdHRlcihmKQorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGhhbmRsZXJzPWhhbmRsZXJzKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzBdLCBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMV0sIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1sxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1syXSwgbG9nZ2luZy5yb290LmhhbmRsZXJzWzJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShoYW5kbGVyc1swXS5mb3JtYXR0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhhbmRsZXJzWzFdLmZvcm1hdHRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1syXS5mb3JtYXR0ZXIsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMF0uZm9ybWF0dGVyLCBoYW5kbGVyc1sxXS5mb3JtYXR0ZXIpCisKKyAgICBkZWYgX3Rlc3RfbG9nKHNlbGYsIG1ldGhvZCwgbGV2ZWw9Tm9uZSk6CisgICAgICAgICMgbG9nZ2luZy5yb290IGhhcyBubyBoYW5kbGVycyBzbyBiYXNpY0NvbmZpZyBzaG91bGQgYmUgY2FsbGVkCisgICAgICAgIGNhbGxlZCA9IFtdCisKKyAgICAgICAgb2xkX2Jhc2ljX2NvbmZpZyA9IGxvZ2dpbmcuYmFzaWNDb25maWcKKyAgICAgICAgZGVmIG15X2Jhc2ljX2NvbmZpZygqYSwgKiprdyk6CisgICAgICAgICAgICBvbGRfYmFzaWNfY29uZmlnKCkKKyAgICAgICAgICAgIG9sZF9sZXZlbCA9IGxvZ2dpbmcucm9vdC5sZXZlbAorICAgICAgICAgICAgbG9nZ2luZy5yb290LnNldExldmVsKDEwMCkgICMgYXZvaWQgaGF2aW5nIG1lc3NhZ2VzIGluIHN0ZGVycgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcucm9vdC5zZXRMZXZlbCwgb2xkX2xldmVsKQorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgoYSwga3cpKQorCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsIG15X2Jhc2ljX2NvbmZpZykKKworICAgICAgICBsb2dfbWV0aG9kID0gZ2V0YXR0cihsb2dnaW5nLCBtZXRob2QpCisgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nX21ldGhvZChsZXZlbCwgInRlc3QgbWUiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nX21ldGhvZCgidGVzdCBtZSIpCisKKyAgICAgICAgIyBiYXNpY0NvbmZpZyB3YXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLCBbKCgpLCB7fSldKQorCisgICAgZGVmIHRlc3RfbG9nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnbG9nJywgbG9nZ2luZy5XQVJOSU5HKQorCisgICAgZGVmIHRlc3RfZGVidWcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdkZWJ1ZycpCisKKyAgICBkZWYgdGVzdF9pbmZvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnaW5mbycpCisKKyAgICBkZWYgdGVzdF93YXJuaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnd2FybmluZycpCisKKyAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2Vycm9yJykKKworICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnY3JpdGljYWwnKQorCisKK2NsYXNzIExvZ2dlckFkYXB0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoTG9nZ2VyQWRhcHRlclRlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgb2xkX2hhbmRsZXJfbGlzdCA9IGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdCisKKyAgICAgICAgc2VsZi5yZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLnJvb3QKKyAgICAgICAgc2VsZi5sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnJlY29yZGluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIsIHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5yZWNvcmRpbmcuY2xvc2UpCisKKyAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdID0gb2xkX2hhbmRsZXJfbGlzdAorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5zaHV0ZG93bikKKyAgICAgICAgc2VsZi5hZGFwdGVyID0gbG9nZ2luZy5Mb2dnZXJBZGFwdGVyKGxvZ2dlcj1zZWxmLmxvZ2dlciwgZXh0cmE9Tm9uZSkKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgbXNnID0gJ3Rlc3RpbmcgZXhjZXB0aW9uOiAlcicKKyAgICAgICAgZXhjID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4YyA9IGUKKyAgICAgICAgICAgIHNlbGYuYWRhcHRlci5leGNlcHRpb24obXNnLCBzZWxmLnJlY29yZGluZykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gc2VsZi5yZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBsb2dnaW5nLkVSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuYXJncywgKHNlbGYucmVjb3JkaW5nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKworICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgorICAgICAgICBtc2cgPSAnY3JpdGljYWwgdGVzdCEgJXInCisgICAgICAgIHNlbGYuYWRhcHRlci5jcml0aWNhbChtc2csIHNlbGYucmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGxvZ2dpbmcuQ1JJVElDQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5hcmdzLCAoc2VsZi5yZWNvcmRpbmcsKSkKKworICAgIGRlZiB0ZXN0X2lzX2VuYWJsZWRfZm9yKHNlbGYpOgorICAgICAgICBvbGRfZGlzYWJsZSA9IHNlbGYuYWRhcHRlci5sb2dnZXIubWFuYWdlci5kaXNhYmxlCisgICAgICAgIHNlbGYuYWRhcHRlci5sb2dnZXIubWFuYWdlci5kaXNhYmxlID0gMzMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIHNlbGYuYWRhcHRlci5sb2dnZXIubWFuYWdlciwgJ2Rpc2FibGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2Rpc2FibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hZGFwdGVyLmlzRW5hYmxlZEZvcigzMikpCisKKyAgICBkZWYgdGVzdF9oYXNfaGFuZGxlcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmFkYXB0ZXIuaGFzSGFuZGxlcnMoKSkKKworICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9nZ2VyLmhhc0hhbmRsZXJzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hZGFwdGVyLmhhc0hhbmRsZXJzKCkpCisKKworY2xhc3MgTG9nZ2VyVGVzdChCYXNlVGVzdCk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKExvZ2dlclRlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5yZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLkxvZ2dlcihuYW1lPSdibGFoJykKKyAgICAgICAgc2VsZi5sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnJlY29yZGluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIsIHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5yZWNvcmRpbmcuY2xvc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnNodXRkb3duKQorCisgICAgZGVmIHRlc3Rfc2V0X2ludmFsaWRfbGV2ZWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2dnZXIuc2V0TGV2ZWwsIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAndGVzdGluZyBleGNlcHRpb246ICVyJworICAgICAgICBleGMgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXhjZXB0aW9uKG1zZywgc2VsZi5yZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGV2ZWxubywgbG9nZ2luZy5FUlJPUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubXNnLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmFyZ3MsIChzZWxmLnJlY29yZGluZywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5leGNfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZXhjLl9fY2xhc3NfXywgZXhjLCBleGMuX190cmFjZWJhY2tfXykpCisKKyAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBvbGRfcmFpc2UgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgbG9nZ2luZywgJ3JhaXNlRXhlY3B0aW9ucycsIG9sZF9yYWlzZSkKKworICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvZ2dlci5sb2csICcxMCcsICd0ZXN0IG1lc3NhZ2UnKQorCisgICAgZGVmIHRlc3RfbG9nX2ludmFsaWRfbGV2ZWxfbm9fcmFpc2Uoc2VsZik6CisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBsb2dnaW5nLCAncmFpc2VFeGVjcHRpb25zJywgb2xkX3JhaXNlKQorCisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5sb2dnZXIubG9nKCcxMCcsICd0ZXN0IG1lc3NhZ2UnKSAgIyBubyBleGNlcHRpb24gaGFwcGVucworCisgICAgZGVmIHRlc3RfZmluZF9jYWxsZXJfd2l0aF9zdGFja19pbmZvKHNlbGYpOgorICAgICAgICBjYWxsZWQgPSBbXQorICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKKyAgICAgICAgICAgICAgbGFtYmRhIGYsIGZpbGU6IGNhbGxlZC5hcHBlbmQoZmlsZS5nZXR2YWx1ZSgpKSkKKworICAgICAgICBzZWxmLmxvZ2dlci5maW5kQ2FsbGVyKHN0YWNrX2luZm89VHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYWxsZWQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdTdGFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicsIGNhbGxlZFswXSkKKworICAgIGRlZiB0ZXN0X21ha2VfcmVjb3JkX3dpdGhfZXh0cmFfb3ZlcndyaXRlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ215IHJlY29yZCcKKyAgICAgICAgbGV2ZWwgPSAxMworICAgICAgICBmbiA9IGxubyA9IG1zZyA9IGFyZ3MgPSBleGNfaW5mbyA9IGZ1bmMgPSBzaW5mbyA9IE5vbmUKKyAgICAgICAgcnYgPSBsb2dnaW5nLl9sb2dSZWNvcmRGYWN0b3J5KG5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfaW5mbywgZnVuYywgc2luZm8pCisKKyAgICAgICAgZm9yIGtleSBpbiAoJ21lc3NhZ2UnLCAnYXNjdGltZScpICsgdHVwbGUocnYuX19kaWN0X18ua2V5cygpKToKKyAgICAgICAgICAgIGV4dHJhID0ge2tleTogJ3NvbWUgdmFsdWUnfQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNlbGYubG9nZ2VyLm1ha2VSZWNvcmQsIG5hbWUsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4sIGxubywgbXNnLCBhcmdzLCBleGNfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBzaW5mbz1zaW5mbykKKworICAgIGRlZiB0ZXN0X21ha2VfcmVjb3JkX3dpdGhfZXh0cmFfbm9fb3ZlcndyaXRlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ215IHJlY29yZCcKKyAgICAgICAgbGV2ZWwgPSAxMworICAgICAgICBmbiA9IGxubyA9IG1zZyA9IGFyZ3MgPSBleGNfaW5mbyA9IGZ1bmMgPSBzaW5mbyA9IE5vbmUKKyAgICAgICAgZXh0cmEgPSB7J3ZhbGlkX2tleSc6ICdzb21lIHZhbHVlJ30KKyAgICAgICAgcmVzdWx0ID0gc2VsZi5sb2dnZXIubWFrZVJlY29yZChuYW1lLCBsZXZlbCwgZm4sIGxubywgbXNnLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBleHRyYT1leHRyYSwgc2luZm89c2luZm8pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3ZhbGlkX2tleScsIHJlc3VsdC5fX2RpY3RfXykKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9nZ2VyLmhhc0hhbmRsZXJzKCkpCisKKyAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2dnZXIuaGFuZGxlcnM6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVyc19ub19wcm9wYWdhdGUoc2VsZik6CisgICAgICAgIGNoaWxkX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdibGFoLmNoaWxkJykKKyAgICAgICAgY2hpbGRfbG9nZ2VyLnByb3BhZ2F0ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2hpbGRfbG9nZ2VyLmhhc0hhbmRsZXJzKCkpCisKKyAgICBkZWYgdGVzdF9pc19lbmFibGVkX2ZvcihzZWxmKToKKyAgICAgICAgb2xkX2Rpc2FibGUgPSBzZWxmLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUKKyAgICAgICAgc2VsZi5sb2dnZXIubWFuYWdlci5kaXNhYmxlID0gMjMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIHNlbGYubG9nZ2VyLm1hbmFnZXIsICdkaXNhYmxlJywgb2xkX2Rpc2FibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaXNFbmFibGVkRm9yKDIyKSkKKworICAgIGRlZiB0ZXN0X3Jvb3RfbG9nZ2VyX2FsaWFzZXMoc2VsZik6CisgICAgICAgIHJvb3QgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5yb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vJykucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vLmJhcicpLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ2ZvbycpLnBhcmVudCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdcMCcpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28uYmFyJykucGFyZW50KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9uYW1lcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLmdldExvZ2dlciwgYW55KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuZ2V0TG9nZ2VyLCBiJ2ZvbycpCisKKwogY2xhc3MgQmFzZUZpbGVUZXN0KEJhc2VUZXN0KToKICAgICAiQmFzZSBjbGFzcyBmb3IgaGFuZGxlciB0ZXN0cyB0aGF0IHdyaXRlIGxvZyBmaWxlcyIKIApAQCAtMjIzOSwxMCArMzU5NCwyMSBAQAogICAgIGRlZiBhc3NlcnRMb2dGaWxlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIkFzc2VydCBhIGxvZyBmaWxlIGlzIHRoZXJlIGFuZCByZWdpc3RlciBpdCBmb3IgZGVsZXRpb24iCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICBtc2c9IkxvZyBmaWxlICVyIGRvZXMgbm90IGV4aXN0IikKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iTG9nIGZpbGUgJXIgZG9lcyBub3QgZXhpc3QiICUgZmlsZW5hbWUpCiAgICAgICAgIHNlbGYucm1maWxlcy5hcHBlbmQoZmlsZW5hbWUpCiAKIAorY2xhc3MgRmlsZUhhbmRsZXJUZXN0KEJhc2VGaWxlVGVzdCk6CisgICAgZGVmIHRlc3RfZGVsYXkoc2VsZik6CisgICAgICAgIG9zLnVubGluayhzZWxmLmZuKQorICAgICAgICBmaCA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoc2VsZi5mbiwgZGVsYXk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmguc3RyZWFtKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYuZm4pKQorICAgICAgICBmaC5oYW5kbGUobG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZmguc3RyZWFtKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoc2VsZi5mbikpCisgICAgICAgIGZoLmNsb3NlKCkKKwogY2xhc3MgUm90YXRpbmdGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKICAgICBkZWYgbmV4dF9yZWMoc2VsZik6CiAgICAgICAgIHJldHVybiBsb2dnaW5nLkxvZ1JlY29yZCgnbicsIGxvZ2dpbmcuREVCVUcsICdwJywgMSwKQEAgLTIyNjgsMjAgKzM2MzQsMTE3IEBACiAgICAgICAgIHJoLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3JvbGxvdmVyX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAiLnRlc3QiCiAgICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKAogICAgICAgICAgICAgc2VsZi5mbiwgYmFja3VwQ291bnQ9MiwgbWF4Qnl0ZXM9MSkKKyAgICAgICAgcmgubmFtZXIgPSBuYW1lcgogICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCiAgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQotICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbiArICIuMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShuYW1lcihzZWxmLmZuICsgIi4xIikpCiAgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQotICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbiArICIuMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5mbiArICIuMyIpKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUobmFtZXIoc2VsZi5mbiArICIuMiIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWVyKHNlbGYuZm4gKyAiLjMiKSkpCisgICAgICAgIHJoLmNsb3NlKCkKKworICAgIEByZXF1aXJlc196bGliCisgICAgZGVmIHRlc3Rfcm90YXRvcihzZWxmKToKKyAgICAgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAiLmd6IgorCisgICAgICAgIGRlZiByb3RhdG9yKHNvdXJjZSwgZGVzdCk6CisgICAgICAgICAgICB3aXRoIG9wZW4oc291cmNlLCAicmIiKSBhcyBzZjoKKyAgICAgICAgICAgICAgICBkYXRhID0gc2YucmVhZCgpCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MoZGF0YSwgOSkKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGVzdCwgIndiIikgYXMgZGY6CisgICAgICAgICAgICAgICAgICAgIGRmLndyaXRlKGNvbXByZXNzZWQpCisgICAgICAgICAgICBvcy5yZW1vdmUoc291cmNlKQorCisgICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5mbiwgYmFja3VwQ291bnQ9MiwgbWF4Qnl0ZXM9MSkKKyAgICAgICAgcmgucm90YXRvciA9IHJvdGF0b3IKKyAgICAgICAgcmgubmFtZXIgPSBuYW1lcgorICAgICAgICBtMSA9IHNlbGYubmV4dF9yZWMoKQorICAgICAgICByaC5lbWl0KG0xKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKKyAgICAgICAgbTIgPSBzZWxmLm5leHRfcmVjKCkKKyAgICAgICAgcmguZW1pdChtMikKKyAgICAgICAgZm4gPSBuYW1lcihzZWxmLmZuICsgIi4xIikKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKGZuKQorICAgICAgICBuZXdsaW5lID0gb3MubGluZXNlcAorICAgICAgICB3aXRoIG9wZW4oZm4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICBjb21wcmVzc2VkID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGRhdGEgPSB6bGliLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoImFzY2lpIiksIG0xLm1zZyArIG5ld2xpbmUpCisgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQorICAgICAgICBmbiA9IG5hbWVyKHNlbGYuZm4gKyAiLjIiKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoZm4pCisgICAgICAgIHdpdGggb3BlbihmbiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgiYXNjaWkiKSwgbTEubXNnICsgbmV3bGluZSkKKyAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCisgICAgICAgIGZuID0gbmFtZXIoc2VsZi5mbiArICIuMiIpCisgICAgICAgIHdpdGggb3BlbihmbiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgiYXNjaWkiKSwgbTIubXNnICsgbmV3bGluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhuYW1lcihzZWxmLmZuICsgIi4zIikpKQogICAgICAgICByaC5jbG9zZSgpCiAKIGNsYXNzIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKLSAgICAjIHRlc3QgbWV0aG9kcyBhZGRlZCBiZWxvdwotICAgIHBhc3MKKyAgICAjIG90aGVyIHRlc3QgbWV0aG9kcyBhZGRlZCBiZWxvdworICAgIGRlZiB0ZXN0X3JvbGxvdmVyKHNlbGYpOgorICAgICAgICBmaCA9IGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKHNlbGYuZm4sICdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrdXBDb3VudD0xKQorICAgICAgICBmbXQgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXMgJShtZXNzYWdlKXMnKQorICAgICAgICBmaC5zZXRGb3JtYXR0ZXIoZm10KQorICAgICAgICByMSA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nIC0gaW5pdGlhbCd9KQorICAgICAgICBmaC5lbWl0KHIxKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKKyAgICAgICAgdGltZS5zbGVlcCgxLjEpICAgICMgYSBsaXR0bGUgb3ZlciBhIHNlY29uZCAuLi4KKyAgICAgICAgcjIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZyAtIGFmdGVyIGRlbGF5J30pCisgICAgICAgIGZoLmVtaXQocjIpCisgICAgICAgIGZoLmNsb3NlKCkKKyAgICAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBzaG91bGQgaGF2ZSBhIHJlY2VudCByb3RhdGVkIGZpbGUgd2hpY2ggd2UKKyAgICAgICAgIyBjYW4gdGVzdCBmb3IgdGhlIGV4aXN0ZW5jZSBvZi4gSG93ZXZlciwgaW4gcHJhY3RpY2UsIG9uIHNvbWUKKyAgICAgICAgIyBtYWNoaW5lcyB3aGljaCBydW4gcmVhbGx5IHNsb3dseSwgd2UgZG9uJ3Qga25vdyBob3cgZmFyIGJhY2sKKyAgICAgICAgIyBpbiB0aW1lIHRvIGdvIHRvIGxvb2sgZm9yIHRoZSBsb2cgZmlsZS4gU28sIHdlIGdvIGJhY2sgYSBmYWlyCisgICAgICAgICMgYml0LCBhbmQgc3RvcCBhcyBzb29uIGFzIHdlIHNlZSBhIHJvdGF0ZWQgZmlsZS4gSW4gdGhlb3J5IHRoaXMKKyAgICAgICAgIyBjb3VsZCBvZiBjb3Vyc2Ugc3RpbGwgZmFpbCwgYnV0IHRoZSBjaGFuY2VzIGFyZSBsb3dlci4KKyAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorICAgICAgICBHT19CQUNLID0gNSAqIDYwICMgc2Vjb25kcworICAgICAgICBmb3Igc2VjcyBpbiByYW5nZShHT19CQUNLKToKKyAgICAgICAgICAgIHByZXYgPSBub3cgLSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1zZWNzKQorICAgICAgICAgICAgZm4gPSBzZWxmLmZuICsgcHJldi5zdHJmdGltZSgiLiVZLSVtLSVkXyVILSVNLSVTIikKKyAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5leGlzdHMoZm4pCisgICAgICAgICAgICBpZiBmb3VuZDoKKyAgICAgICAgICAgICAgICBzZWxmLnJtZmlsZXMuYXBwZW5kKGZuKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG1zZyA9ICdObyByb3RhdGVkIGZpbGVzIGZvdW5kLCB3ZW50IGJhY2sgJWQgc2Vjb25kcycgJSBHT19CQUNLCisgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgICNwcmludCBhZGRpdGlvbmFsIGRpYWdub3N0aWNzCisgICAgICAgICAgICBkbiwgZm4gPSBvcy5wYXRoLnNwbGl0KHNlbGYuZm4pCisgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIG9zLmxpc3RkaXIoZG4pIGlmIGYuc3RhcnRzd2l0aChmbildCisgICAgICAgICAgICBwcmludCgnVGVzdCB0aW1lOiAlcycgJSBub3cuc3RyZnRpbWUoIiVZLSVtLSVkICVILSVNLSVTIiksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIHByaW50KCdUaGUgb25seSBtYXRjaGluZyBmaWxlcyBhcmU6ICVzJyAlIGZpbGVzLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBwcmludCgnQ29udGVudHMgb2YgJXM6JyAlIGYpCisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkbiwgZikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3InKSBhcyB0ZjoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQodGYucmVhZCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIG1zZz1tc2cpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgorICAgICAgICBhc3NlcnRSYWlzZXMgPSBzZWxmLmFzc2VydFJhaXNlcworICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZuLCAnWCcsIGRlbGF5PVRydWUpCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm4sICdXJywgZGVsYXk9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbiwgJ1c3JywgZGVsYXk9VHJ1ZSkKIAogZGVmIHNlY3MoKiprdyk6CiAgICAgcmV0dXJuIGRhdGV0aW1lLnRpbWVkZWx0YSgqKmt3KSAvLyBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz0xKQpAQCAtMjMyOSw0MyArMzc5MiwzNCBAQAogICAgICAgICByaC5jbG9zZSgpCiAgICAgc2V0YXR0cihUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAidGVzdF9jb21wdXRlX3JvbGxvdmVyXyVzIiAlIHdoZW4sIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcikKIAotY2xhc3MgSGFuZGxlclRlc3QoQmFzZVRlc3QpOgogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdXYXRjaGVkRmlsZUhhbmRsZXIgbm90IGFwcHJvcHJpYXRlIGZvciBXaW5kb3dzLicpCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKLSAgICBkZWYgdGVzdF9yYWNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxNDYzMiByZWZlcnMuCi0gICAgICAgIGRlZiByZW1vdmVfbG9vcChmbmFtZSwgdHJpZXMpOgotICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UodHJpZXMpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNCAqIHJhbmRvbS5yYW5kaW50KDAsIDQpKQotCi0gICAgICAgIGRlbF9jb3VudCA9IDUwMAotICAgICAgICBsb2dfY291bnQgPSA1MDAKLQotICAgICAgICBmb3IgZGVsYXkgaW4gKEZhbHNlLCBUcnVlKToKLSAgICAgICAgICAgIGZkLCBmbiA9IHRlbXBmaWxlLm1rc3RlbXAoJy5sb2cnLCAndGVzdF9sb2dnaW5nLTMtJykKLSAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgcmVtb3ZlciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJlbW92ZV9sb29wLCBhcmdzPShmbiwgZGVsX2NvdW50KSkKLSAgICAgICAgICAgIHJlbW92ZXIuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgcmVtb3Zlci5zdGFydCgpCi0gICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIoZm4sIGRlbGF5PWRlbGF5KQotICAgICAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpczogJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMnKQotICAgICAgICAgICAgaC5zZXRGb3JtYXR0ZXIoZikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShsb2dfY291bnQpOgotICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDA1KQotICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3Rlc3RpbmcnIH0pCi0gICAgICAgICAgICAgICAgICAgIGguaGFuZGxlKHIpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHJlbW92ZXIuam9pbigpCi0gICAgICAgICAgICAgICAgaC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZm4pOgotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCi0KK0B1bml0dGVzdC5za2lwVW5sZXNzKHdpbjMyZXZ0bG9nLCAnd2luMzJldnRsb2cvd2luMzJldnRsb2d1dGlsIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIE5URXZlbnRMb2dIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIGxvZ3R5cGUgPSAnQXBwbGljYXRpb24nCisgICAgICAgIGVsaCA9IHdpbjMyZXZ0bG9nLk9wZW5FdmVudExvZyhOb25lLCBsb2d0eXBlKQorICAgICAgICBudW1fcmVjcyA9IHdpbjMyZXZ0bG9nLkdldE51bWJlck9mRXZlbnRMb2dSZWNvcmRzKGVsaCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuTlRFdmVudExvZ0hhbmRsZXIoJ3Rlc3RfbG9nZ2luZycpCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnVGVzdCBMb2cgTWVzc2FnZSd9KQorICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgIyBOb3cgc2VlIGlmIHRoZSBldmVudCBpcyByZWNvcmRlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtX3JlY3MgPCB3aW4zMmV2dGxvZy5HZXROdW1iZXJPZkV2ZW50TG9nUmVjb3JkcyhlbGgpKQorICAgICAgICBmbGFncyA9IHdpbjMyZXZ0bG9nLkVWRU5UTE9HX0JBQ0tXQVJEU19SRUFEIHwgXAorICAgICAgICAgICAgICAgIHdpbjMyZXZ0bG9nLkVWRU5UTE9HX1NFUVVFTlRJQUxfUkVBRAorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIEdPX0JBQ0sgPSAxMDAKKyAgICAgICAgZXZlbnRzID0gd2luMzJldnRsb2cuUmVhZEV2ZW50TG9nKGVsaCwgZmxhZ3MsIEdPX0JBQ0spCisgICAgICAgIGZvciBlIGluIGV2ZW50czoKKyAgICAgICAgICAgIGlmIGUuU291cmNlTmFtZSAhPSAndGVzdF9sb2dnaW5nJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbXNnID0gd2luMzJldnRsb2d1dGlsLlNhZmVGb3JtYXRNZXNzYWdlKGUsIGxvZ3R5cGUpCisgICAgICAgICAgICBpZiBtc2cgIT0gJ1Rlc3QgTG9nIE1lc3NhZ2VcclxuJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICBicmVhaworICAgICAgICBtc2cgPSAnUmVjb3JkIG5vdCBmb3VuZCBpbiBldmVudCBsb2csIHdlbnQgYmFjayAlZCByZWNvcmRzJyAlIEdPX0JBQ0sKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCBtc2c9bXNnKQogCiAjIFNldCB0aGUgbG9jYWxlIHRvIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdC4gIEkgaGF2ZSBubyBpZGVhCiAjIHdoeSB0aGUgdGVzdCBkb2VzIHRoaXMsIGJ1dCBpbiBhbnkgY2FzZSB3ZSBzYXZlIHRoZSBjdXJyZW50IGxvY2FsZQpAQCAtMjM3MywxNCArMzgyNywxNyBAQAogQHJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJycpCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsCi0gICAgICAgICAgICAgICAgIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LCBNZW1vcnlIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgQ29uZmlnRmlsZVRlc3QsIFNvY2tldEhhbmRsZXJUZXN0LCBNZW1vcnlUZXN0LAotICAgICAgICAgICAgICAgICBFbmNvZGluZ1Rlc3QsIFdhcm5pbmdzVGVzdCwgQ29uZmlnRGljdFRlc3QsIE1hbmFnZXJUZXN0LAotICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUZXN0LAotICAgICAgICAgICAgICAgICBMb2dSZWNvcmRGYWN0b3J5VGVzdCwgQ2hpbGRMb2dnZXJUZXN0LCBRdWV1ZUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTGFzdFJlc29ydFRlc3QsCi0gICAgICAgICAgICAgICAgIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsIEhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBDdXN0b21MZXZlbHNBbmRGaWx0ZXJzVGVzdCwgSGFuZGxlclRlc3QsIE1lbW9yeUhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBDb25maWdGaWxlVGVzdCwgU29ja2V0SGFuZGxlclRlc3QsIERhdGFncmFtSGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIE1lbW9yeVRlc3QsIEVuY29kaW5nVGVzdCwgV2FybmluZ3NUZXN0LCBDb25maWdEaWN0VGVzdCwKKyAgICAgICAgICAgICAgICAgTWFuYWdlclRlc3QsIEZvcm1hdHRlclRlc3QsIEJ1ZmZlcmluZ0Zvcm1hdHRlclRlc3QsCisgICAgICAgICAgICAgICAgIFN0cmVhbUhhbmRsZXJUZXN0LCBMb2dSZWNvcmRGYWN0b3J5VGVzdCwgQ2hpbGRMb2dnZXJUZXN0LAorICAgICAgICAgICAgICAgICBRdWV1ZUhhbmRsZXJUZXN0LCBTaHV0ZG93blRlc3QsIE1vZHVsZUxldmVsTWlzY1Rlc3QsCisgICAgICAgICAgICAgICAgIEJhc2ljQ29uZmlnVGVzdCwgTG9nZ2VyQWRhcHRlclRlc3QsIExvZ2dlclRlc3QsCisgICAgICAgICAgICAgICAgIFNNVFBIYW5kbGVyVGVzdCwgRmlsZUhhbmRsZXJUZXN0LCBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgTGFzdFJlc29ydFRlc3QsIExvZ1JlY29yZFRlc3QsIEV4Y2VwdGlvblRlc3QsCisgICAgICAgICAgICAgICAgIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdAogICAgICAgICAgICAgICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCAzZWJjMWY3Li5iNDE3YmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC00Myw2ICs0Myw1MyBAQAogREJMX01BTlRfRElHID0gc3lzLmZsb2F0X2luZm8ubWFudF9kaWcKIERCTF9NSU5fT1ZFUkZMT1cgPSAyKipEQkxfTUFYX0VYUCAtIDIqKihEQkxfTUFYX0VYUCAtIERCTF9NQU5UX0RJRyAtIDEpCiAKKworIyBQdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIGNvcnJlY3RseS1yb3VuZGVkIGludGVnZXItdG8tZmxvYXQgY29udmVyc2lvbi4KK2RlZiBpbnRfdG9fZmxvYXQobik6CisgICAgIiIiCisgICAgQ29ycmVjdGx5LXJvdW5kZWQgaW50ZWdlci10by1mbG9hdCBjb252ZXJzaW9uLgorCisgICAgIiIiCisgICAgIyBDb25zdGFudHMsIGRlcGVuZGluZyBvbmx5IG9uIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgaW4gdXNlLgorICAgICMgV2UgdXNlIGFuIGV4dHJhIDIgYml0cyBvZiBwcmVjaXNpb24gZm9yIHJvdW5kaW5nIHB1cnBvc2VzLgorICAgIFBSRUNJU0lPTiA9IHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnICsgMgorICAgIFNISUZUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heF9leHAgLSBQUkVDSVNJT04KKyAgICBRX01BWCA9IDEgPDwgUFJFQ0lTSU9OCisgICAgUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT04gPSBbMCwgLTEsIC0yLCAxLCAwLCAtMSwgMiwgMV0KKworICAgICMgUmVkdWNlIHRvIHRoZSBjYXNlIHdoZXJlIG4gaXMgcG9zaXRpdmUuCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gMC4wCisgICAgZWxpZiBuIDwgMDoKKyAgICAgICAgcmV0dXJuIC1pbnRfdG9fZmxvYXQoLW4pCisKKyAgICAjIENvbnZlcnQgbiB0byBhICdmbG9hdGluZy1wb2ludCcgbnVtYmVyIHEgKiAyKipzaGlmdCwgd2hlcmUgcSBpcyBhbgorICAgICMgaW50ZWdlciB3aXRoICdQUkVDSVNJT04nIHNpZ25pZmljYW50IGJpdHMuICBXaGVuIHNoaWZ0aW5nIG4gdG8gY3JlYXRlIHEsCisgICAgIyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgdHJlYXRlZCBhcyAnc3RpY2t5Jy4gIFRoYXQgaXMsIHRoZQorICAgICMgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgc2V0IGlmIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBiaXQgb2YgbgorICAgICMgd2FzIGFscmVhZHkgc2V0LCBvciBhbnkgb25lIG9mIHRoZSBiaXRzIG9mIG4gbG9zdCBpbiB0aGUgc2hpZnQgd2FzIHNldC4KKyAgICBzaGlmdCA9IG4uYml0X2xlbmd0aCgpIC0gUFJFQ0lTSU9OCisgICAgcSA9IG4gPDwgLXNoaWZ0IGlmIHNoaWZ0IDwgMCBlbHNlIChuID4+IHNoaWZ0KSB8IGJvb2wobiAmIH4oLTEgPDwgc2hpZnQpKQorCisgICAgIyBSb3VuZCBoYWxmIHRvIGV2ZW4gKGFjdHVhbGx5IHJvdW5kcyB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiA0LAorICAgICMgcm91bmRpbmcgdGllcyB0byBhIG11bHRpcGxlIG9mIDgpLgorICAgIHEgKz0gUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT05bcSAmIDddCisKKyAgICAjIERldGVjdCBvdmVyZmxvdy4KKyAgICBpZiBzaGlmdCArIChxID09IFFfTUFYKSA+IFNISUZUX01BWDoKKyAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiaW50ZWdlciB0b28gbGFyZ2UgdG8gY29udmVydCB0byBmbG9hdCIpCisKKyAgICAjIENoZWNrczogcSBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUsIGFuZCBxKioyKipzaGlmdCBkb2Vzbid0IG92ZXJmbG93LgorICAgIGFzc2VydCBxICUgNCA9PSAwIGFuZCBxIC8vIDQgPD0gMioqKHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnKQorICAgIGFzc2VydCBxICogMioqc2hpZnQgPD0gc3lzLmZsb2F0X2luZm8ubWF4CisKKyAgICAjIFNvbWUgY2lyY3VsYXJpdHkgaGVyZSwgc2luY2UgZmxvYXQocSkgaXMgZG9pbmcgYW4gaW50LXRvLWZsb2F0CisgICAgIyBjb252ZXJzaW9uLiAgQnV0IGhlcmUgcSBpcyBvZiBib3VuZGVkIHNpemUsIGFuZCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUKKyAgICAjIGFzIGEgZmxvYXQuICBJbiBhIGxvdy1sZXZlbCBDLWxpa2UgbGFuZ3VhZ2UsIHRoaXMgb3BlcmF0aW9uIHdvdWxkIGJlIGEKKyAgICAjIHNpbXBsZSBjYXN0IChlLmcuLCBmcm9tIHVuc2lnbmVkIGxvbmcgbG9uZyB0byBkb3VibGUpLgorICAgIHJldHVybiBtYXRoLmxkZXhwKGZsb2F0KHEpLCBzaGlmdCkKKworCiAjIHB1cmUgUHl0aG9uIHZlcnNpb24gb2YgY29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbgogZGVmIHRydWVkaXYoYSwgYik6CiAgICAgIiIiQ29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbiBmb3IgaW50ZWdlcnMuIiIiCkBAIC0zNjcsNiArNDE0LDIzIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE3MjkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoTG9uZ1RydW5jKCkpLCAxNzI5KQogCisgICAgZGVmIGNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oc2VsZiwgbik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnQgLT4gZmxvYXQgY29udmVyc2lvbiBiZWhhdmlvdXIgbWF0Y2hlcworICAgICAgICAjIHRoYXQgb2YgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gYWJvdmUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjdHVhbCA9IGZsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgYWN0dWFsID0gJ292ZXJmbG93JworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gaW50X3RvX2Zsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnb3ZlcmZsb3cnCisKKyAgICAgICAgbXNnID0gKCJFcnJvciBpbiBjb252ZXJzaW9uIG9mIGludGVnZXIge30gdG8gZmxvYXQuICAiCisgICAgICAgICAgICAgICAiR290IHt9LCBleHBlY3RlZCB7fS4iLmZvcm1hdChuLCBhY3R1YWwsIGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtc2cpCisKICAgICBAc3VwcG9ydC5yZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnZlcnNpb24oc2VsZik6CiAKQEAgLTQyMSw2ICs0ODUsMjIgQEAKICAgICAgICAgICAgIHkgPSAyKipwICogMioqNTMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGZsb2F0KHgpKSwgeSkKIAorICAgICAgICAjIENvbXBhcmUgYnVpbHRpbiBmbG9hdCBjb252ZXJzaW9uIHdpdGggcHVyZSBQeXRob24gaW50X3RvX2Zsb2F0CisgICAgICAgICMgZnVuY3Rpb24gYWJvdmUuCisgICAgICAgIHRlc3RfdmFsdWVzID0gWworICAgICAgICAgICAgaW50X2RibF9tYXgtMSwgaW50X2RibF9tYXgsIGludF9kYmxfbWF4KzEsCisgICAgICAgICAgICBoYWxmd2F5LTEsIGhhbGZ3YXksIGhhbGZ3YXkgKyAxLAorICAgICAgICAgICAgdG9wX3Bvd2VyLTEsIHRvcF9wb3dlciwgdG9wX3Bvd2VyKzEsCisgICAgICAgICAgICAyKnRvcF9wb3dlci0xLCAyKnRvcF9wb3dlciwgdG9wX3Bvd2VyKnRvcF9wb3dlciwKKyAgICAgICAgXQorICAgICAgICB0ZXN0X3ZhbHVlcy5leHRlbmQoZXhhY3RfdmFsdWVzKQorICAgICAgICBmb3IgcCBpbiByYW5nZSgtNCwgOCk6CisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgtMTI4LCAxMjgpOgorICAgICAgICAgICAgICAgIHRlc3RfdmFsdWVzLmFwcGVuZCgyKioocCs1MykgKyB4KQorICAgICAgICBmb3IgdmFsdWUgaW4gdGVzdF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24odmFsdWUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oLXZhbHVlKQorCiAgICAgZGVmIHRlc3RfZmxvYXRfb3ZlcmZsb3coc2VsZik6CiAgICAgICAgIGZvciB4IGluIC0yLjAsIC0xLjAsIDAuMCwgMS4wLCAyLjA6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGludCh4KSksIHgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzY2YzYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpAQCAtMCwwICsxLDE1MTcgQEAKK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uCitpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIF80RywgVEVTVEZOLCBpbXBvcnRfbW9kdWxlLCBiaWdtZW10ZXN0LCBydW5fdW5pdHRlc3QsIHVubGluaworKQorCitsem1hID0gaW1wb3J0X21vZHVsZSgibHptYSIpCitmcm9tIGx6bWEgaW1wb3J0IExaTUFDb21wcmVzc29yLCBMWk1BRGVjb21wcmVzc29yLCBMWk1BRXJyb3IsIExaTUFGaWxlCisKKworY2xhc3MgQ29tcHJlc3NvckRlY29tcHJlc3NvclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgVGVzdCBlcnJvciBjYXNlcy4KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD0zLjQ1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBjaGVjaz0iIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgcHJlc2V0PSJhc2RmIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz0zKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgRk9STUFUX0FVVE8gd2hlbiBjb21wcmVzc2luZy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD1sem1hLkZPUk1BVF9BVVRPKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgYSBwcmVzZXQgYW5kIGEgY3VzdG9tIGZpbHRlciBjaGFpbiBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUNvbXByZXNzb3IocHJlc2V0PTcsIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMn1dKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgbWVtbGltaXQ9YiJxdyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPSJ6enoiKQorICAgICAgICAjIENhbm5vdCBzcGVjaWZ5IGEgbWVtb3J5IGxpbWl0IHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBtZW1saW1pdD0weDEwMDAwMDApCisgICAgICAgICMgQ2FuIG9ubHkgc3BlY2lmeSBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gd2l0aCBGSUxURVJfUkFXLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKworICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJmb28iLCBiImJhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmZsdXNoLCBiImJsYWgiKQorICAgICAgICBlbXB0eSA9IGx6Yy5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJxdXV4IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbHpjLmZsdXNoKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiImZvbyIsIGIiYmFyIikKKyAgICAgICAgbHpkLmRlY29tcHJlc3MoZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJxdXV4IikKKworICAgIGRlZiB0ZXN0X2JhZF9maWx0ZXJfc3BlYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1bYiJ3b2JzaXRlIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1beyJpZCI6IDk4NzY1fV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfWDg2LCAiZm9vIjogMH1dKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2FmdGVyX2VvZihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJueWFuIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9tZW1saW1pdChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcihtZW1saW1pdD0xMDI0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORSkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiBfdGVzdF9kZWNvbXByZXNzb3Ioc2VsZiwgbHpkLCBkYXRhLCBjaGVjaywgdW51c2VkX2RhdGE9YiIiKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsemQuZW9mKQorICAgICAgICBvdXQgPSBsemQuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgSU5QVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmNoZWNrLCBjaGVjaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCB1bnVzZWRfZGF0YSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9hdXRvKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl94eihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9YWikKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2Fsb25lKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfMShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV18xLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfcmF3XzIoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd18zKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfNChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV180LCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfY2h1bmtzKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKENPTVBSRVNTRURfWFopLCAxMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5lb2YpCisgICAgICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbaTppKzEwXSkpCisgICAgICAgIG91dCA9IGIiIi5qb2luKG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIElOUFVUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6ZC5jaGVjaywgbHptYS5DSEVDS19DUkM2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfdW51c2VkX2RhdGEoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBleHRyYSA9IGIiZm9vYmxpYmFyIgorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBleHRyYSwgbHptYS5DSEVDS19DUkM2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkX2RhdGE9ZXh0cmEpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMSkKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1haKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICMgVGVzdCB0aGF0IExaTUFDb21wcmVzc29yLT5MWk1BRGVjb21wcmVzc29yIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF94eihzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhJTlBVVCkgKyBsemMuZmx1c2goKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19DUkM2NCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9hbG9uZShzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGNkYXRhID0gbHpjLmNvbXByZXNzKElOUFVUKSArIGx6Yy5mbHVzaCgpCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfcmF3KHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoSU5QVVQpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX2NodW5rcyhzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDEwKToKKyAgICAgICAgICAgIGNkYXRhLmFwcGVuZChsemMuY29tcHJlc3MoSU5QVVRbaTppKzEwXSkpCisgICAgICAgIGNkYXRhLmFwcGVuZChsemMuZmx1c2goKSkKKyAgICAgICAgY2RhdGEgPSBiIiIuam9pbihjZGF0YSkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgY2RhdGEsIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICAjIExaTUFEZWNvbXByZXNzb3IgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfbXVsdGlzdHJlYW0oc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hLkNIRUNLX0NSQzY0LCB1bnVzZWRfZGF0YT1DT01QUkVTU0VEX0FMT05FKQorCisgICAgIyBUZXN0IHdpdGggaW5wdXRzIGxhcmdlciB0aGFuIDRHaUIuCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoYiJ4IiAqIHNpemUpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhKSwgc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRkYXRhID0gTm9uZQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBibG9ja3NpemUgPSAxMCAqIDEwMjQgKiAxMDI0CisgICAgICAgIGJsb2NrID0gcmFuZG9tLmdldHJhbmRiaXRzKGJsb2Nrc2l6ZSAqIDgpLnRvX2J5dGVzKGJsb2Nrc2l6ZSwgImxpdHRsZSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlucHV0ID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKGlucHV0KQorICAgICAgICAgICAgZGRhdGEgPSBsemQuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIGlucHV0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaW5wdXQgPSBjZGF0YSA9IGRkYXRhID0gTm9uZQorCisKK2NsYXNzIENvbXByZXNzRGVjb21wcmVzc0Z1bmN0aW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBUZXN0IGVycm9yIGNhc2VzOgorCisgICAgZGVmIHRlc3RfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZvcm1hdD0ieHoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgY2hlY2s9Im5vbmUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgcHJlc2V0PSJibGFoIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZpbHRlcnM9MTAyNCkKKyAgICAgICAgIyBDYW4ndCBzcGVjaWZ5IGEgcHJlc2V0IGFuZCBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuY29tcHJlc3MoYiIiLCBwcmVzZXQ9MywgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5kZWNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgZm9ybWF0PSJsem1hIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgbWVtbGltaXQ9Ny4zZTkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9e30pCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBtZW1vcnkgbGltaXQgd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgbWVtbGltaXQ9MHgxMDAwMDAwKQorICAgICAgICAjIENhbiBvbmx5IHNwZWNpZnkgYSBjdXN0b20gZmlsdGVyIGNoYWluIHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgICAgICBiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19tZW1saW1pdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX1haLCBtZW1saW1pdD0xMDI0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgICAgIENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZ29vZF9pbnB1dChzZWxmKToKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgbHptYS5GT1JNQVRfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV18xLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV180LCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2luY29tcGxldGVfaW5wdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHptYS5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haWzoxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORVs6MTI4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzFbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzJbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzNbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzRbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgIyBUZXN0IHRoYXQgY29tcHJlc3MoKS0+ZGVjb21wcmVzcygpIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcChzZWxmKToKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVULCBsem1hLkZPUk1BVF9YWikKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGNkYXRhID0gbHptYS5jb21wcmVzcyhJTlBVVCwgbHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgIyBVbmxpa2UgTFpNQURlY29tcHJlc3NvciwgZGVjb21wcmVzcygpICpkb2VzKiBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haICsgQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQgKiAyKQorCisKK2NsYXNzIFRlbXBGaWxlOgorICAgICIiIkNvbnRleHQgbWFuYWdlciAtIGNyZWF0ZXMgYSBmaWxlLCBhbmQgZGVsZXRlcyBpdCBvbiBfX2V4aXRfXy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZGF0YT1iIiIpOgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuZGF0YSkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHVubGluayhzZWxmLmZpbGVuYW1lKQorCisKK2NsYXNzIEZpbGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3dpdGhfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOLCBDT01QUkVTU0VEX1haKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIikgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X21vZGUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiciIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAicmIiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgInciKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgIndiIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhYiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX21vZGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAoMywgIngiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJyKyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAid3QiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIncrIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJydyIpCisKKyAgICBkZWYgdGVzdF9pbml0X2JhZF9jaGVjayhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWIiYXNkIikKKyAgICAgICAgIyBDSEVDS19VTktOT1dOIGFuZCBhbnl0aGluZyBhYm92ZSBDSEVDS19JRF9NQVggc2hvdWxkIGJlIGludmFsaWQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX1VOS05PV04pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX0lEX01BWCArIDMpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBjaGVjayB3aXRoIG1vZGU9InIiLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19OT05FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19DUkMzMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfQ1JDNjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX1NIQTI1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfVU5LTk9XTikKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX3ByZXNldChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD00LjM5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTIzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0tMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9LTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9ImZvbyIpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBwcmVzZXQgd2l0aCBtb2RlPSJyIi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIHByZXNldD0zKQorCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfZmlsdGVyX3NwZWMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVtiIndvYnNpdGUiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W3siaWQiOiA5ODc2NX1dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX1g4NiwgImZvbyI6IDB9XSkKKworICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9wcmVzZXRfYW5kX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgIHByZXNldD02LCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKENPTVBSRVNTRURfWFopIGFzIHNyYzoKKyAgICAgICAgICAgIGYgPSBMWk1BRmlsZShzcmMpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICMgTFpNQUZpbGUuY2xvc2UoKSBzaG91bGQgbm90IGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorICAgICAgICAgICAgIyBUcnkgY2xvc2luZyBhbiBhbHJlYWR5LWNsb3NlZCBMWk1BRmlsZS4KKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorCisgICAgICAgICMgVGVzdCB3aXRoIGEgcmVhbCBmaWxlIG9uIGRpc2ssIG9wZW5lZCBkaXJlY3RseSBieSBMWk1BRmlsZS4KKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIGZwID0gZi5fZnAKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgIyBIZXJlLCBMWk1BRmlsZS5jbG9zZSgpICpzaG91bGQqIGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZwLmNsb3NlZCkKKyAgICAgICAgICAgICMgVHJ5IGNsb3NpbmcgYW4gYWxyZWFkeS1jbG9zZWQgTFpNQUZpbGUuCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlZChzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jbG9zZWQpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNsb3NlZCkKKworICAgIGRlZiB0ZXN0X2ZpbGVubyhzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBmLmZpbGVubykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZmlsZW5vKCksIGYuX2ZwLmZpbGVubygpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLmZpbGVubygpLCBpbnQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKworICAgIGRlZiB0ZXN0X3NlZWthYmxlKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgICAgIGYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgICAgIHNyYyA9IEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc3JjLnNlZWthYmxlID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBmID0gTFpNQUZpbGUoc3JjKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgZGVmIHRlc3RfcmVhZGFibGUoc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkYWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGFibGUpCisKKyAgICBkZWYgdGVzdF93cml0YWJsZShzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18xKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzIpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMyksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV180KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSksIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkXzEwKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBjaHVua3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoMTApCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ocmVzdWx0KSwgMTApCisgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGNodW5rcyksIElOUFVUKQorCisgICAgZGVmIHRlc3RfcmVhZF9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiA1KSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNSkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogMikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzMgKiA0KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDQpCisKKyAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtX2J1ZmZlcl9zaXplX2FsaWduZWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgY2FzZSB3aGVyZSBhIHN0cmVhbSBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kCisgICAgICAgICMgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KKyAgICAgICAgc2F2ZWRfYnVmZmVyX3NpemUgPSBsem1hLl9CVUZGRVJfU0laRQorICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqICA1KSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IHNhdmVkX2J1ZmZlcl9zaXplCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4pIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX2ZpbGVfd2l0aF9ieXRlc19maWxlbmFtZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBURVNURk4uZW5jb2RlKCJhc2NpaSIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUZW1wb3JhcnkgZmlsZSBuYW1lIG5lZWRzIHRvIGJlIEFTQ0lJIikKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShieXRlc19maWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2luY29tcGxldGUoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haWzoxMjhdKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisKKyAgICBkZWYgdGVzdF9yZWFkX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnJlYWQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZWFkMShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYmxvY2tzKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZDEoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZDFfMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8xMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgxMCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihibG9ja3MpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiA1KSkgYXMgZjoKKyAgICAgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZDEoKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGJsb2NrcyksIElOUFVUICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQxKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkMSkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnJlYWQxLCBOb25lKQorCisgICAgZGVmIHRlc3RfcGVlayhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5wZWVrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocmVzdWx0KSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJTlBVVC5zdGFydHN3aXRoKHJlc3VsdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5wZWVrKDEwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihyZXN1bHQpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKElOUFVULnN0YXJ0c3dpdGgocmVzdWx0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorCisgICAgZGVmIHRlc3RfcGVla19iYWRfYXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucGVlaykKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSksIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMiksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18yKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKElOUFVUKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZSgpLCBsaW5lKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZi5yZWFkbGluZXMoKSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVULCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlXzEwKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBzdGFydCBpbiByYW5nZSgwLCBsZW4oSU5QVVQpLCAxMCk6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVRbc3RhcnQ6c3RhcnQrMTBdKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF93cml0ZV9hcHBlbmQoc2VsZik6CisgICAgICAgIHBhcnQxID0gSU5QVVRbOjEwMjRdCisgICAgICAgIHBhcnQyID0gSU5QVVRbMTAyNDoxNTM2XQorICAgICAgICBwYXJ0MyA9IElOUFVUWzE1MzY6XQorICAgICAgICBleHBlY3RlZCA9IGIiIi5qb2luKGx6bWEuY29tcHJlc3MoeCkgZm9yIHggaW4gKHBhcnQxLCBwYXJ0MiwgcGFydDMpKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDEpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDIpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2ZpbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fZmlsZV93aXRoX2J5dGVzX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IFRFU1RGTi5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfYXBwZW5kX3RvX2ZpbGUoc2VsZik6CisgICAgICAgIHBhcnQxID0gSU5QVVRbOjEwMjRdCisgICAgICAgIHBhcnQyID0gSU5QVVRbMTAyNDoxNTM2XQorICAgICAgICBwYXJ0MyA9IElOUFVUWzE1MzY6XQorICAgICAgICBleHBlY3RlZCA9IGIiIi5qb2luKGx6bWEuY29tcHJlc3MoeCkgZm9yIHggaW4gKHBhcnQxLCBwYXJ0MiwgcGFydDMpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDEpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDIpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDMpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X3dyaXRlX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLndyaXRlLCBiImZvbyIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi53cml0ZSwgYiJiYXIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLndyaXRlLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLndyaXRlLCAidGV4dCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsIDc4OSkKKworICAgIGRlZiB0ZXN0X3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGVsaW5lcyhsaW5lcykKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsoNTU1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbNTU1Ol0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmRfYWNyb3NzX3N0cmVhbXMoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogMikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsobGVuKElOUFVUKSArIDEyMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWzEyMzpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkX3JlbGF0aXZlX3RvX2N1cnJlbnQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYucmVhZCgxMDApCisgICAgICAgICAgICBmLnNlZWsoMTIzNiwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWzEzMzY6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfZm9yd2FyZF9yZWxhdGl2ZV90b19lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtNTU1LCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbLTU1NTpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19iYWNrd2FyZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKDEwMDEpCisgICAgICAgICAgICBmLnNlZWsoMjExKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMjExOl0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhY2t3YXJkX2Fjcm9zc19zdHJlYW1zKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDIpKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKGxlbihJTlBVVCkgKyAzMzMpCisgICAgICAgICAgICBmLnNlZWsoNzM3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbNzM3Ol0gKyBJTlBVVCkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFja3dhcmRfcmVsYXRpdmVfdG9fZW5kKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsoLTE1MCwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWy0xNTA6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfcGFzdF9lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhsZW4oSU5QVVQpICsgOTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9zZWVrX3Bhc3Rfc3RhcnQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtODgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCA5LCAoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5zZWVrLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIGIiZGVycCIpCisKKyAgICBkZWYgdGVzdF90ZWxsKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBwb3MgPSAwCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHBvcykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoMTgzKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcG9zICs9IGxlbihyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCBsZW4oSU5QVVQpKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgZm9yIHBvcyBpbiByYW5nZSgwLCBsZW4oSU5QVVQpLCAxNDQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHBvcykKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUW3Bvczpwb3MrMTQ0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisKKyAgICBkZWYgdGVzdF90ZWxsX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYudGVsbCkKKworCitjbGFzcyBPcGVuVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQgKiAyKQorCisgICAgZGVmIHRlc3RfdGV4dF9tb2RlcyhzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkID0gSU5QVVQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJhdCIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOKToKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEub3BlbihURVNURk4sICIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgIngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJidCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJiIiwgZXJyb3JzPSJpZ25vcmUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJiIiwgbmV3bGluZT0iXG4iKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2FuZF9maWx0ZXJzKHNlbGYpOgorICAgICAgICAjIFRlc3Qgbm9uLWRlZmF1bHQgZm9ybWF0IGFuZCBmaWx0ZXIgY2hhaW4uCisgICAgICAgIG9wdGlvbnMgPSB7ImZvcm1hdCI6IGx6bWEuRk9STUFUX1JBVywgImZpbHRlcnMiOiBGSUxURVJTX1JBV18xfQorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfUkFXXzEpLCAicmIiLCAqKm9wdGlvbnMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid2IiLCAqKm9wdGlvbnMpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSwgKipvcHRpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorCisgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBlbmNvZGluZy4KKyAgICAgICAgdW5jb21wcmVzc2VkID0gSU5QVVQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKS5kZWNvZGUoInV0Zi0xNi1sZSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgICAgIGJpby5zZWVrKDApCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJydCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgVGVzdCB3aWggbm9uLWRlZmF1bHQgZW5jb2RpbmcgZXJyb3IgaGFuZGxlci4KKyAgICAgICAgd2l0aCBCeXRlc0lPKGx6bWEuY29tcHJlc3MoYiJmb29ceGZmYmFyIikpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid3QiLCBuZXdsaW5lPSJcbiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICAgICAgYmlvLnNlZWsoMCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgbmV3bGluZT0iXHIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCisKK2NsYXNzIE1pc2NlbGxhbmVvdXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pc19jaGVja19zdXBwb3J0ZWQoc2VsZik6CisgICAgICAgICMgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIgc2hvdWxkIGFsd2F5cyBiZSBzdXBwb3J0ZWQsCisgICAgICAgICMgcmVnYXJkbGVzcyBvZiB0aGUgb3B0aW9ucyBsaWJsem1hIHdhcyBjb21waWxlZCB3aXRoLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19OT05FKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6bWEuaXNfY2hlY2tfc3VwcG9ydGVkKGx6bWEuQ0hFQ0tfQ1JDMzIpKQorCisgICAgICAgICMgVGhlIC54eiBmb3JtYXQgc3BlYyBjYW5ub3Qgc3RvcmUgY2hlY2sgSURzIGFib3ZlIHRoaXMgdmFsdWUuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19JRF9NQVggKyAxKSkKKworICAgICAgICAjIFRoaXMgdmFsdWUgc2hvdWxkIG5vdCBiZSBhIHZhbGlkIGNoZWNrIElELgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6bWEuaXNfY2hlY2tfc3VwcG9ydGVkKGx6bWEuQ0hFQ0tfVU5LTk9XTikpCisKKyAgICBkZWYgdGVzdF9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoYiJub3QgYSBkaWN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyh7ImlkIjogMHgxMDB9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgImp1bmsiOiAxMn0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMobHptYS5MWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IDkwMDF9KQorCisgICAgICAgICMgVGVzdCB3aXRoIHBhcmFtZXRlcnMgdXNlZCBieSB6aXBmaWxlIG1vZHVsZS4KKyAgICAgICAgcHJvcHMgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeworICAgICAgICAgICAgICAgICJpZCI6IGx6bWEuRklMVEVSX0xaTUExLAorICAgICAgICAgICAgICAgICJwYiI6IDIsCisgICAgICAgICAgICAgICAgImxwIjogMCwKKyAgICAgICAgICAgICAgICAibGMiOiAzLAorICAgICAgICAgICAgICAgICJkaWN0X3NpemUiOiA4IDw8IDIwLAorICAgICAgICAgICAgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9wcywgYiJdXHgwMFx4MDBceDgwXHgwMCIpCisKKyAgICBkZWYgdGVzdF9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfWDg2LCB7InNob3VsZCBiZSI6IGJ5dGVzfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsem1hLkxaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfREVMVEEsIGIidG9vIGxvbmciKQorCisgICAgICAgICMgVGVzdCB3aXRoIHBhcmFtZXRlcnMgdXNlZCBieSB6aXBmaWxlIG1vZHVsZS4KKyAgICAgICAgZmlsdGVyc3BlYyA9IGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcygKKyAgICAgICAgICAgICAgICBsem1hLkZJTFRFUl9MWk1BMSwgYiJdXHgwMFx4MDBceDgwXHgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1siaWQiXSwgbHptYS5GSUxURVJfTFpNQTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1sicGIiXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJscCJdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcnNwZWNbImxjIl0sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1siZGljdF9zaXplIl0sIDggPDwgMjApCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfcHJvcGVydGllc19yb3VuZHRyaXAoc2VsZik6CisgICAgICAgIHNwZWMxID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgIGx6bWEuRklMVEVSX0xaTUExLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKyAgICAgICAgcmVlbmNvZGVkID0gbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNwZWMxKQorICAgICAgICBzcGVjMiA9IGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9MWk1BMSwgcmVlbmNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMxLCBzcGVjMikKKworCisjIFRlc3QgZGF0YToKKworSU5QVVQgPSBiIiIiCitMQUVSVEVTCisKKyAgICAgICBPLCBmZWFyIG1lIG5vdC4KKyAgICAgICBJIHN0YXkgdG9vIGxvbmc6IGJ1dCBoZXJlIG15IGZhdGhlciBjb21lcy4KKworICAgICAgIEVudGVyIFBPTE9OSVVTCisKKyAgICAgICBBIGRvdWJsZSBibGVzc2luZyBpcyBhIGRvdWJsZSBncmFjZSwKKyAgICAgICBPY2Nhc2lvbiBzbWlsZXMgdXBvbiBhIHNlY29uZCBsZWF2ZS4KKworTE9SRCBQT0xPTklVUworCisgICAgICAgWWV0IGhlcmUsIExhZXJ0ZXMhIGFib2FyZCwgYWJvYXJkLCBmb3Igc2hhbWUhCisgICAgICAgVGhlIHdpbmQgc2l0cyBpbiB0aGUgc2hvdWxkZXIgb2YgeW91ciBzYWlsLAorICAgICAgIEFuZCB5b3UgYXJlIHN0YXknZCBmb3IuIFRoZXJlOyBteSBibGVzc2luZyB3aXRoIHRoZWUhCisgICAgICAgQW5kIHRoZXNlIGZldyBwcmVjZXB0cyBpbiB0aHkgbWVtb3J5CisgICAgICAgU2VlIHRob3UgY2hhcmFjdGVyLiBHaXZlIHRoeSB0aG91Z2h0cyBubyB0b25ndWUsCisgICAgICAgTm9yIGFueSB1bnByb3BvcnRpb25lZCB0aG91Z2h0IGhpcyBhY3QuCisgICAgICAgQmUgdGhvdSBmYW1pbGlhciwgYnV0IGJ5IG5vIG1lYW5zIHZ1bGdhci4KKyAgICAgICBUaG9zZSBmcmllbmRzIHRob3UgaGFzdCwgYW5kIHRoZWlyIGFkb3B0aW9uIHRyaWVkLAorICAgICAgIEdyYXBwbGUgdGhlbSB0byB0aHkgc291bCB3aXRoIGhvb3BzIG9mIHN0ZWVsOworICAgICAgIEJ1dCBkbyBub3QgZHVsbCB0aHkgcGFsbSB3aXRoIGVudGVydGFpbm1lbnQKKyAgICAgICBPZiBlYWNoIG5ldy1oYXRjaCdkLCB1bmZsZWRnZWQgY29tcmFkZS4gQmV3YXJlCisgICAgICAgT2YgZW50cmFuY2UgdG8gYSBxdWFycmVsLCBidXQgYmVpbmcgaW4sCisgICAgICAgQmVhcid0IHRoYXQgdGhlIG9wcG9zZWQgbWF5IGJld2FyZSBvZiB0aGVlLgorICAgICAgIEdpdmUgZXZlcnkgbWFuIHRoeSBlYXIsIGJ1dCBmZXcgdGh5IHZvaWNlOworICAgICAgIFRha2UgZWFjaCBtYW4ncyBjZW5zdXJlLCBidXQgcmVzZXJ2ZSB0aHkganVkZ21lbnQuCisgICAgICAgQ29zdGx5IHRoeSBoYWJpdCBhcyB0aHkgcHVyc2UgY2FuIGJ1eSwKKyAgICAgICBCdXQgbm90IGV4cHJlc3MnZCBpbiBmYW5jeTsgcmljaCwgbm90IGdhdWR5OworICAgICAgIEZvciB0aGUgYXBwYXJlbCBvZnQgcHJvY2xhaW1zIHRoZSBtYW4sCisgICAgICAgQW5kIHRoZXkgaW4gRnJhbmNlIG9mIHRoZSBiZXN0IHJhbmsgYW5kIHN0YXRpb24KKyAgICAgICBBcmUgb2YgYSBtb3N0IHNlbGVjdCBhbmQgZ2VuZXJvdXMgY2hpZWYgaW4gdGhhdC4KKyAgICAgICBOZWl0aGVyIGEgYm9ycm93ZXIgbm9yIGEgbGVuZGVyIGJlOworICAgICAgIEZvciBsb2FuIG9mdCBsb3NlcyBib3RoIGl0c2VsZiBhbmQgZnJpZW5kLAorICAgICAgIEFuZCBib3Jyb3dpbmcgZHVsbHMgdGhlIGVkZ2Ugb2YgaHVzYmFuZHJ5LgorICAgICAgIFRoaXMgYWJvdmUgYWxsOiB0byB0aGluZSBvd25zZWxmIGJlIHRydWUsCisgICAgICAgQW5kIGl0IG11c3QgZm9sbG93LCBhcyB0aGUgbmlnaHQgdGhlIGRheSwKKyAgICAgICBUaG91IGNhbnN0IG5vdCB0aGVuIGJlIGZhbHNlIHRvIGFueSBtYW4uCisgICAgICAgRmFyZXdlbGw6IG15IGJsZXNzaW5nIHNlYXNvbiB0aGlzIGluIHRoZWUhCisKK0xBRVJURVMKKworICAgICAgIE1vc3QgaHVtYmx5IGRvIEkgdGFrZSBteSBsZWF2ZSwgbXkgbG9yZC4KKworTE9SRCBQT0xPTklVUworCisgICAgICAgVGhlIHRpbWUgaW52aXRlcyB5b3U7IGdvOyB5b3VyIHNlcnZhbnRzIHRlbmQuCisKK0xBRVJURVMKKworICAgICAgIEZhcmV3ZWxsLCBPcGhlbGlhOyBhbmQgcmVtZW1iZXIgd2VsbAorICAgICAgIFdoYXQgSSBoYXZlIHNhaWQgdG8geW91LgorCitPUEhFTElBCisKKyAgICAgICAnVGlzIGluIG15IG1lbW9yeSBsb2NrJ2QsCisgICAgICAgQW5kIHlvdSB5b3Vyc2VsZiBzaGFsbCBrZWVwIHRoZSBrZXkgb2YgaXQuCisKK0xBRVJURVMKKworICAgICAgIEZhcmV3ZWxsLgorIiIiCisKK0NPTVBSRVNTRURfWFogPSAoCisgICAgYiJceGZkN3pYWlx4MDBceDAwXHgwNFx4ZTZceGQ2XHhiNEZceDAyXHgwMCFceDAxXHgxNlx4MDBceDAwXHgwMHQvXHhlNVx4YTMiCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhkZl1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5OFx4MTVceGU0XHhiNFx4OWQiCisgICAgYiJvXHgxZFx4YzRceGU1XG5ceDAzXHhjYzJoXHhjN1xcXHg4Nlx4ZmZceGY4XHhlMlx4ZmNceGU3XHhkOVx4ZmU2XHhiOCgiCisgICAgYiJceGE4d2RceGMyXCJ1Lm5ceDFlXHhjM1x4ZjJceDhlXHg4ZFx4OGZceDAyXHgxNy9ceGE2PVx4ZjBceGEyXHhkZi9NXHg4OSIKKyAgICBiIlx4YmVceGRlXHhhN1x4MWN6XHgxOC1dXHhkNVx4ZWZceDEzXHg4ZnJaXHgxNVx4ODBceDhjXHhmOFx4OGRvXHhmYVx4MTIiCisgICAgYiJceDliI3ovXHhlZlx4ZjBceGZhRlx4MDFceDgyXHhhM01ceDhlXHhhMXRceGNhNiBCRiRceGU1UVx4YTRceDk4XHhlZVx4ZGUiCisgICAgYiJsXHhlOFx4N2ZceGYwXHg5ZCxiblx4MGJceDEzXHhkNFx4YThceDgxXHhlNE5ceGM4XHg4Nlx4MTUzXHhmNXgyXHhhMk8iCisgICAgYiJceDEzQFFceGExXHgwMC9ceGE1XHhkME9ceDk3XHhkY29ceGFlXHhmN3pceGM0XHhjZFNceGI2dDxceDE2XHhmMlx4OWNJIyIKKyAgICBiIlx4ODl1ZFx4YzY2WVx4ZDlceGVlXHhlNlx4Y2VceDEyXVx4ZTVceGYwXHhhYVx4OTYtUGVceGFkZTpceDA0XHRceDFiXHhmNyIKKyAgICBiIlx4ZGI3XG5ceDg2XHgxZnBceGM4Slx4YmFceGY0XHhmMFZceGE5XHhkY1x4ZjBceDAyJUdceGY5XHhkZj0/XHgxNVx4MWIiCisgICAgYiJceGUxKFx4Y2VceDgyPVx4ZDZJXHhhYzNceDEyXHgwY1JceGI3XHhhZVxyXHhiMWlceDAzXHg5NVx4MDFceGJkXHhiZVx4ZmEiCisgICAgYiJceDAyc1x4MDFQXHg5ZFx4OTZYXHhiMTJqXHhjOExceGE4XHg4NGJceGY2XHhjM1x4ZDRjLUhceDkzb0psXHhkMGlRXHhlNGsiCisgICAgYiJceDg0XHgwYlx4YzFceGI3XHhiY1x4YjFceDE3XHg4OFx4YjFceGNhP0BceGY2XHgwN1x4ZWFceGU2eFx4ZjFIMTJQXHgwZiIKKyAgICBiIlx4OGFceGM5XHhlYXV3XHhlM1x4YmVceGFhaVx4YTlXXHhkMFx4ODBceGNkI2NiNVx4OTlceGQ4XVx4YTlkXHgwY1x4YmQiCisgICAgYiJceGEyXHhkY1dsXHhlZFVHXHhiZlx4ODl5Rlx4Zjc3XHg4MXZceGJkNVx4OThceGJlaDhceDE4V1x4MDhceGYwXHgxYlx4OTkiCisgICAgYiI1Olx4MWE/ckRceDk2XHhhMVx4MDRceDBmXHhhZVx4YmFceDg1XHhlYlx4OWQ1QFx4ZjVceDgzXHhkMzdceDgzXHg4YWMiCisgICAgYiJceDA2XHhkNFx4OTdpXHhjZHRceDE2U1x4ODJrXHhmNktceDAxdnlceDg4XHg5MVx4OWI2VFx4ZGFlXHJceGZkXTprXHhiYWwiCisgICAgYiJceGE5XHhiYmFceGMzNFx4ZjlyXHhlYn1yXHhkYlx4YzdceGRiKlx4OGZceDAzelx4ZGM4aFx4Y2NceGM5XHhkM1x4YmNsIgorICAgIGIiXHhhNS1ceGNiXHhlYUtceGEyXHhjNVx4MTVceGMwXHhlM1x4YzFceDg2Wlx4ZmJceGViTFx4ZTEzXHhjZlx4OWNceGUzIgorICAgIGIiXHgxZFx4YzlceGVkXHhjMlx4MDZceGNjXHhjZSFceDkyXHhlNVx4ZmVceDljXlx4YTU5dyBceDliUFx4YTNQS1x4MDhkIgorICAgIGIiXHhmOVx4ZTJafVx4YTdceGJmXHhlZFx4ZWIlJFx4MGNceDgyXHhiOC9ceGIwXHgwMVx4YTkmLFx4ZjdxaHtRXHg5NilceGYyIgorICAgIGIicVx4OTZceGMzXHg4MFx4YjRceDEyXHhiMFx4YmFceGU2b1x4ZjQhXHhiNFtceGQ0XHg4YXdceDEwXHhmN3RceDBjXHhiMyIKKyAgICBiIlx4ZDlceGQ1XHhjM2BeXHg4MVx4MTE/P1xcXHhhNFx4OTlceDg1Ulx4ZDRceDhlXHg4M1x4YzlceDFlWFx4YmZhXHhmMSIKKyAgICBiIlx4YWNceGIwXHhlYVx4ZWFceGQ3XHhkMFx4YWJceDE4XHhlMlx4ZjJceGVkXHhlMVx4YjdceGM5XHgxOFx4Y2JTXHhlND4iCisgICAgYiJceGM5XHg5NUhceGU4XHhjYlx0XHIlXHhlYlx4YzckLm9ceGYxXHhmM1JceDE3XHgxZGJceGJiXHhkOFVceGE1Xlx4Y2NTIgorICAgIGIiXHgxNlx4MDFceDg3XHhmMy9ceDkzXHhkMVx4ZjB2XHhjMHJceGQ3XHhjY1x4YTJHa3pceGNhXHg4MFx4MGVceGZkXHhkMCIKKyAgICBiIlx4OGJceGJiXHhkMkl4XHhiM1x4MWV5XHhjYS0wXHhlM3peXHhkNlx4ZDZceDhmX1x4ZjFceDlkUFx4OWZpXHhhN1x4ZDEiCisgICAgYiJceGU4XHg5MFx4ODRceGRjXHhiZlx4Y2RreVx4OGVceGRjXHg4MVx4N2ZceGEzXHhiMitceGJmXHgwNFx4ZWZceGQ4XFwiCisgICAgYiJceGM0XHhkZlx4ZTFceGIwXHgwMVx4ZTlceDkzXHhlM1lceGYxXHgxZFlceGU4aFx4ODFceGNmXHhmMXdceGNjXHhiNFx4ZWYiCisgICAgYiIgXHg4YnxceDA0XHhlYVx4ODNlalx4YmVceDFmXHhkNHpceDljYFx4ZDNceDFhXHg5MkFceDA2XHhlNVx4OGZceGE5XHgxMyIKKyAgICBiIlx0XHg5ZT1ceGZhXHgxY1x4ZTVfXHg5ZiV2XHgxYm9ceDExWk9ceGQ4XHhmNFx0XHhkZE1ceDE2LVx4MDRceGZjXHgxODxcIiIKKyAgICBiIkNNXHhkZGd+Ylx4ZjZceGVmXHg4ZVx4MGNceGQwXHhkZXxceGEwJ1x4OGFceDBjXHhkNnhceGFlIUpceGE2Rlx4ODhceDE1dSIKKyAgICBiIlx4MDA4XHgxN1x4YmM3eVx4YjNceGQ4dVx4YWNfXHg4NVx4OGRceGU3XHhjMUBceDljXHhlY3FjXHhhMyNceGFkXHhmMSIKKyAgICBiIlx4OTM1XHhiNSlfXHJceGVjM11ceDBmb101XHhkMG15XHgwN1x4OWJceGVlXHg4MVx4YjVceDBmXHhjZksrXHgwMFx4YzAiCisgICAgYiJceGU0Ylx4MTBceGU0XHgwY1x4MWEgXHg5Ylx4ZTBceDk3dFx4ZjZceGExXHg5ZVx4ODUwXHhiYVx4MGNceDlhXHg4ZFx4YzgiCisgICAgYiJceDhmXHgwN1x4ZDdceGFlXHhjOFx4ZjkraVx4ZGNceGI5a1x4YjA+Zlx4MTlceGI4XHJceGE4XHhmOFx4MWYkXHhhNXtwIgorICAgIGIiXHhjNlx4ODgwXHhjZVx4ZGJceGNmXHhjYV9ceDg2XHhhY1x4ODhoNlx4OGJaJSdceGQwXG5ceGJmXHgwZlx4OWNcIlx4YmEiCisgICAgYiJceGU1XHg4Nlx4OWZceDBmN1g9bU5YW1x4Y2NceDE5RlVceGM5XHg4NjBceGJjXHg5MGErKiBceGFlXyRceDAzXHgxZVx4ZDMiCisgICAgYiJceGNkX1x4YTBceDljXHhkZVx4YWY0NnFceGE1XHhjOVx4OTJceGQ3XHhjYVx4ZTNgXHg5ZFx4ODV9XHhiNFx4ZmZceGIzIgorICAgIGIiXHg4M1x4ZmJceGI2XHhjYVx4YWVgXHgwYndceDdmXHhmY1x4ZDhceGFjVmVceDE5XHhjOFx4MTdceDBiWlx4YWRceDg4IgorICAgIGIiXHhlYiNceDk3XHgwM1x4MTNceGIxZFx4MGZ7XHgwY1x4MDR3XHgwN1xyXHg5N1x4YmRceGQ2XHhjMVx4YzNCOlx4OTVceDA4IgorICAgIGIiXlx4MTBWXHhhZWFIXHgwMlx4ZDlceGUzXG5cXFx4MDFYXHhmNlx4OWNceDhhXHgwNnUjJVx4YmUqXHhhMVx4MTh2XHg4NSIKKyAgICBiIlx4ZWMhXHQ0XHgwMFx4MDBceDAwXHgwMFZqP3VMVVx4ZjNceGE2XHgwMFx4MDFceGZiXHgwN1x4ODFceDBmXHgwMFx4MDB0dyIKKyAgICBiIlx4OTlQXHhiMVx4YzRnXHhmYlx4MDJceDAwXHgwMFx4MDBceDAwXHgwNFlaIgorKQorCitDT01QUkVTU0VEX0FMT05FID0gKAorICAgIGIiXVx4MDBceDAwXHg4MFx4MDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDBceDA1XHgxNFx4MDdiWFx4MTkiCisgICAgYiJceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZG9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjgiCisgICAgYiJceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KFx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDIiCisgICAgYiJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5XHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmcloiCisgICAgYiJceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdCIKKyAgICBiIlx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZWxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODEiCisgICAgYiJceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyT1x4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3eiIKKyAgICBiIlx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjAiCisgICAgYiJceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3XHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTkiCisgICAgYiJceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjciCisgICAgYiJceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYVx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YTgiCisgICAgYiJceDg0Ylx4ZjhceDFlcGxceGVhanJceGQxPVx0XHgwM1x4ZGRceDEzXHgxYjMhRVx4Zjl2Vlx4ZGFGXHhmM1x4ZDdceGI0IgorICAgIGIiXHgwY1x4YTlQflx4ZWNceGRlRVx4ZTM3XHhmNlx4MWRceGM2XHhiYlx4ZGRjJVx4YjZceDBmSVx4MDdceGYwO1x4YWZceGU3IgorICAgIGIiXHhhMFx4OGJceGE3Wlx4OTkoXHhlOVx4ZTJceGYwb1x4MTg+YFx4ZTFceGFhXHhhOFx4ZDlceGExXHhiMn1ceGU3XHg4ZCIKKyAgICBiIlx4ODM0VFx4YjZceGVmXHhjMVx4ZGVceGUzXHg5OFx4YmNEXHgwM01BQFx4ZDhceGVkXHhkY1x4YzhceDkzXHgwM1x4MWEiCisgICAgYiJceDkzXHgwYlx4N2ZceDk0XHgxMlx4MGJceDAyU2FceDE4XHhjOVx4YzVceDliVEpFfVx4ZjZceGM4Z1x4MTcjWlZceDAxIgorICAgIGIiXHhjOVx4OWRjXHg4M1x4MGU+MFx4MTZceDkwU1x4YjgvXHgwM3lfXHgxOFx4ZmEoXHhkN1x4MGJyXHhhMlx4YjBceGJhPyIKKyAgICBiIlx4OGNceGU2XHg4M0BceDg0XHhkZlx4MDI6XHhjNXpceDllXHhhNlx4ODRceGM5XHhmNUJleVhceDgzXHgxYVx4ZjEgOlx0IgorICAgIGIiXHhmN1x4MTlceGZleERcXCZHXHhmM1x4ODVZXHhhMkpceGY5XHgwYnZ7XHg4OVx4ZjZceGU3KUFceGFmXHgwNG9ceDAwIgorICAgIGIiXHgwNzVceGQzXHhlMFx4N2ZceDk3XHg5OEZceDBmP3ZceDkzXHhlZFZ0VGZceGI1XHg5N1x4ODNceGVkXHgxOVx4ZDdceDFhIgorICAgIGIiJ2tceGQ3XHhkOVx4YzVcXFlceGQxXHhkY1x4MDdceDE1fHdceGJjXHhhY2RceDg3XHgwOGRceGVjXHhhN1x4ZjZceDgyIgorICAgIGIiXHhmY1x4YjNceDkzXHhlYlx4YjkgXHg4ZFx4YmMgLFx4YjNYXHhiMFx4ZDJzXHhkN1x4ZDFceGZmdlx4MDVceGRmfVx4YTIiCisgICAgYiJceDk2XHhmYiVcblx4ZGZceGEyXHg3Zlx4MDguXHhhMTZcblx4ZTBceDE5XHg5M1x4N2ZoXG5ceDFjXHg4Y1x4MGYgXHgxMSIKKyAgICBiIlx4YzZCbFx4OTVceDE5VX1ceGU0c1x4YjVceDEwSFx4ZWFceDg2cEJceGU4OFx4OTVceGJlXHg4Y1pceGRiXHhlNFx4OTRBIgorICAgIGIiXHg5Mlx4Yjk7elx4YWFceGE3e1x4MWM1IVx4YzBceGFmXHhjMUFceGY5XHhkYVx4ZjAkXHhiMFx4MDJxZ1x4YzhceGM3L3wiCisgICAgYiJceGFmclx4OTleXHg5MVx4ODhceGJmXHgwM1x4ZDk9XHhkN25ceGRhNns+OFxuXHhjNzpceGE5J1x4YmEuXHgwYlx4ZTIiCisgICAgYiJceGI1XHgxZFx4MGVcblx4OWFceDhlXHgwNlx4OGY6XHhkZFx4ODInW1x4YzNcIndEJFx4YTd3XHhlY3FceDhjLDFceDkzIgorICAgIGIiXHhkMCxceGFlMndceDkzXHgxMiRKZFx4MTltZ1x4MDJceDkzXHg5Y0FceDk1XHg5ZCZceGNhOGlceDljXHhiMDtceGU3TlEiCisgICAgYiJceDFmcmhceDhiZUw7XHhiMG1ceGVlXHgwN1FceDliXHhjNlx4ZDhceDAzXHhiNVx4ZGVOXHhkNFx4ZmVceDk4XHhkMFx4ZGMiCisgICAgYiJceDFhW1x4MDRceGRlXHgxYVx4ZjZceDkxalx4ZjhFT2xpXHg4ZUJeXHgxZFx4ODJceDA3XHhiMlx4YjVSXVx4YjdceGQ3IgorICAgIGIiXHhlOVx4YTZceGMzLlx4ZmJceGYwLVx4YjRlXHg5Ylx4ZGVceDAzXHg4OFx4YzZceGMxaU5ceDBlXHg4NHdiUVx4ZGZ+IgorICAgIGIiXHhlOVx4YTRceDg4NFx4OTZrTVx4YmMpVFx4ZjNceDg5XHg5N1x4MGZceDE0M1x4ZTcpXHhhMFx4YjNCXHgwMFx4YThceGFmIgorICAgIGIiXHg4Ml5ceGNiXHhjNy4uXHhkYlx4YzdcdFx4OWRIXHhlZTVceGU5I1x4ZTZOVlx4OTRceGNiJEtrXHhlM1x4N2Zcclx4ZTN0IgorICAgIGIiXHgxMlx4Y2YnXHhlZlJceDhiXHhmNDJceGNmLUxIXHhhY1x4ZTVceDFmMH4/U09ceGViXHhjMUVceDFhXHgxY11ceGYyIgorICAgIGIiXHhjNDxceDExXHgwMlx4MTBaMGEqP1x4ZTRyXHhmZlx4ZmJceGZmXHhmNlx4MTRuR1x4ZWFkXlx4ZDZceGVmOFx4YjZ1RUkiCisgICAgYiJceDk5XG5WXHhlMlx4YjNceDk1XHg4ZVx4ODNceGY2aSFceGI1JjFGXHhiMURQXHhmNCBTTzNEIXdceDk5X0dceDdmK1x4OTAiCisgICAgYiIuXHhhYlx4YmJdXHg5MT5ceGM5I2g7XHgwZjVKXHg5MUtceGY0Xi1bXHg5ZVx4OGFcXFx4OTRceGNhXHhhZlx4ZjZceDE5IgorICAgIGIiXHhkNFx4YTFceDliXHhjNFx4YjhwXHhhMVx4YWVceDE1XHhlOXJceDg0XHhlMFx4Y2FyLmwgW11ceDhiXHhhZiswXHhmMmciCisgICAgYiJceDAxYUtZXHhkZklceGNmLFxuXHhlOFx4ZjBceGU3Vlx4ODBfI1x4YjJceGYyXHhhOVx4MDZceDhjPndceGUyVyxceGY0IgorICAgIGIiXHg4Y1xyXHhmOTYzXHhmNUpceGNjMlx4MDU9a1RceGVhVXRpXHhlNV9ceGNlXHgxYlx4ZmFceDhkbFx4MDJoXHhlZlx4YTgiCisgICAgYiJceGZiZlx4N2ZceGZmXHhmMFx4MTlceGVheCIKKykKKworRklMVEVSU19SQVdfMSA9IFt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJwcmVzZXQiOiAzfV0KK0NPTVBSRVNTRURfUkFXXzEgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhmZF1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5NmN5cVx4YTFceGRkXHhlZSIKKyAgICBiIlx4ZjhceGZhbVx4ZTMnXHg4OFx4ZDNceGZmXHhlNFx4OWUgXHhjZVFceDkxXHhhNFx4MTRJXHhmNlx4YjlceDlkVkw4XHgxNSIKKyAgICBiIl9ceDBlXHgxMlx4YzNceGViXHhiY1x4YTVceGNkXG5XXHgxZCQ9UjtceDFkXHhmOGs4XHRceGIxe1x4ZDRceGM1K1x4OWQiCisgICAgYiJceDg3Y1x4ZTVceGVmXHg5OFx4YjRceGQ3UzNceGNkXHhjY1x4ZDJceGVkXHhhNFx4MGVtXHhlNVx4ZjRceGRkXHhkMGIiCisgICAgYiJceGJlNCpceGFhXHgwYlx4YzVceDA4XHgxMFx4ODUrXHg4MS5ceDE3XHhhZjlceGM5Ylx4ZWFackFceGUyMFx4N2ZzXCJyIgorICAgIGIiXHhkYUdceDgxXHhkZVx4OTBjdVx4YTVceGRiXHhhOS5BXHgwOGxceGIwPFx4ZjZceDAzXHhkZE9pXHhkMFx4YzVceGI0IgorICAgIGIiXHhlY1x4ZWNnNHQ2XCJceGE2XHhiOG9ceGI1P1x4MThefVx4YjZ9XHgwM1s6XHhlYlx4MDNceGE5XG5bXHg4OWxceDE5ZyIKKyAgICBiIlx4MTZceGM4Mlx4ZWRceDBiXHhmYlx4ODZuXHhhMlx4ODU3QFx4OTNceGNkNlRceGMzdVx4YjBcdFx4ZjlceDFiXHg5MTgiCisgICAgYiJceGZjW1x4MWJceDFlNFx4YjNceDE0XHgwNlBDVlx4YThcIlx4ZjVceDgxeH5ceGU5XHhiNU5ceDljS1x4OWZceGM2XHhjMyUiCisgICAgYiJceGM4azp7Nlx4ZTdceGY3XHhiZFx4MDVceDAyXHhiNFx4YzRceGMzXHhkM1x4ZmRceGMzXHhhOFxcXHhmY0BceGIxRl8iCisgICAgYiJceGM4XHg5MFx4ZDlzVVx4OThceGFkOFx4MDVceDA3XHhkZTdKXHg4Yk1ceGQwXHhiMztYXHhlY1x4ODdceGVmXHhhZVx4YjMiCisgICAgYiJlTyxceGIxeixkXHgxMXlceGVlamxCXHgwMlx4MWRceGYyOFx4MWYjXHg4OTZceGNlXHgwYlx4ZjBceGY1XHhhOVBLXHgwZiIKKyAgICBiIlx4YjNceDEzUFx4ZDhceDg4XHhkMlx4YTFceDA4XHgwNEM/XHhkYlx4OTRfXHg5YVwiXHhlOVx4ZTNlXHgxZFx4ZGVceDliIgorICAgIGIiXHhhMVx4ZTg+SFx4OThceDEwO1x4YzVceDAzI1x4YjVceDlkNFx4MDFceGU3XHhjNVx4YmEldlx4YTQ5XHg5N0FceGUwXCIiCisgICAgYiJceDhjXHhjMjJceGUzaVx4YzFceDlkXHhhYjNceGRmXHhiZVx4ZmREbTdceDFiXHg5ZFx4YWJceGI1XHgxNW86Slx4OTIiCisgICAgYiJceGRiXHg4MTZceDE3XHhjMk9ceDk5XHgxYlx4MGVceDhkXHhmM1x0UVx4ZWRceDhlXHg5NVMvXHgxNk1ceGIyU1x4MDQiCisgICAgYiJceDBmXHhjM0pceGM2XHhjN1x4ZTRceGNiXHhjNVx4ZjRceGU3ZFx4MTRceGU0PV5CXHhmYlx4ZDNFXHhkM1x4MWVceGNkIgorICAgIGIiXHg5MVx4YTVceGQwR1x4OGYuXHhmNlx4ZjlceDBiYiZceGQ5XHg5Zlx4YzJceGZkalx4YTJceDllXHhjNFxcXHgwZVx4MWRDIgorICAgIGIidlx4ZThceGQyXHg4YT9eSFx4ZWNceGFlXHhlYj5ceGZlXHhiOFx4YWJceGQ0SXFZXHg4Y1x4ZDRLN1x4MTFceGY0RFx4ZDBXIgorICAgIGIiXHhhNVx4YmVceGVhT1x4YmZceGQwXHgwNFx4ZmRsXHgxMFx4YWU1XHhkNFVceDE5XHgwNlx4Zjl7XHhhYVx4ZTBceDgxIgorICAgIGIiXHgwZlx4Y2ZceGEza3tceDk1XHhiZFx4MTlceGEyXHhmOFx4ZTRceGEzXHgwOE8qXHhmMVx4ZjFCLVx4YzcoXHgwZVJceGZkIgorICAgIGIiQEVceDlmXHhkM1x4MWU6XHhmZFZceGI3XHgwNFlceDk0XHhlYl1ceDgzXHhjNFx4YTVceGQ3XHhjMGdYXHg5OFx4Y2ZceDBmIgorICAgIGIiXHhjZDNceDAwXW5ceDE3XHhlY1x4YmRceGEzWVx4ODZceGM1XHhmM3VceGY2Klx4YmRUXHhlZEEkQVx4ZDlBXHhlN1x4OTgiCisgICAgYiJceGVmXHgxNFx4MDJceDlhXHhmZGl3XHhlY1x4YTBceDg3XHgxMVx4ZDklXHhjNVx4ZWJceDhhPVx4YWVceGMwXHhjNFx4YzYiCisgICAgYiJEXHg4MFx4OGZceGE4XHhkMVx4YmJxXHhiMlx4YzBceGEwXHhmNUNxcFx4ZWVMXHhlM1x4ZTVceGRjIFx4ODRcIlx4ZTkiCisgICAgYiJceDgwdFx4ODNceDA1XHhiYVx4ZjFceGM1flx4OTNceGM5XHhmMFx4MDFjXHhjZWl4XHg5ZFx4ZWRceGM1KWxceDE2KVx4ZDEiCisgICAgYiJceDAzQGxceDA0XHg3Zlx4ODdceGE1eW5ceDFiXHgwMURceGFhOlx4ZDJceDk2XHhiNFx4YjM/XHhiMFx4ZjlceGNlXHgwNyIKKyAgICBiIlx4ZWJceDgxXHgwMFx4ZTRceGMzXHhmNSVfXHhhZVx4ZDRceGY5XHhlYlx4ZTJccmhceGIyI1x4ZDY3UVx4MTZEXHg4MmhuIgorICAgIGIiXHhkMVx4YTNfP3FceGYwXHhlMlx4YWNceGYzMTdceDllXHhkMF9ceDgzfFx4ZjFceGNhXHhiN1x4OTVTXHhhYldceDEyIgorICAgIGIiXHhmZlx4ZGR0XHhmNjlMXHgwMVx4ZjJ8XHhkYVdceGRhXHhlZXNceDk4TFx4MThceGI4X1x4ZTgkXHg4Mlx4ZWFceGQ2IgorICAgIGIiXHhkMUZceGQ0XHgwYlx4Y2RrXHgwMXZmXHg4OGhceGMzXHhhZVx4YjkxXHhjN1FceDlmXHhhNUdceGQ5XHhjY1x4MWZceGUzIgorICAgIGIiNVx4YjFceGRjeVx4N2ZJXHg4YmN3XHg4ZVx4MTBySXBceDAyOlx4MTlwX1x4Yzh2XHhjZWFcIlx4YzFceGQ5XHg5MVx4MDMiCisgICAgYiJceGJmZVx4YmVceGE2XHhiM1x4YThceDE0XHgxOFx4YzNceGFiSCptfVx4YzJceGMxXHg5YX0+bCVceGNlXHg4NFx4OTkiCisgICAgYiJceGIzZFx4YWZceGQzXHg4Mlx4MTVceGRmXHhjMVx4ZmM1Zk9nXHg5Ylx4ZmNceDhlXiZcdEBceGNlXHg5Zlx4MDZKXHhiOCIKKyAgICBiIlx4YjVceDg2XHgxZFx4ZGF7XHg5Zlx4YWVceGIwXHhmZlx4MDJceDgxclx4OTJ6XHg4Y01ceGI3aG9ceGM5Xlx4OWNceGI2IgorICAgIGIiXHg5Y1x4YWVceGQxXHhjOVx4ZjRceGRmVTdceGQ2XFwhXHhlYVx4MGJceDk0a1x4YjlVZH5ceDk4XHhlN1x4ODZceDhheiIKKyAgICBiIlx4MTA7XHhlM1x4MWRceGU1UEdceGY4XHhhNFx4MTJceDA1d1x4OTheXHhjNFx4YjFceGJiXHhmYlx4Y2ZceGUwXHg3ZiIKKyAgICBiIlx4MDMzU2ZceDBjIFx4YjFceGY2QFx4OTRceGU1XHhhM1x4YjJceGE3XHgxMFx4OWFceGMwXHgxNFx4YzNzXHhiNXhSRCIKKyAgICBiIlx4ZjRgV1x4ZDlceGU1XHhkM1x4Y2ZceDkxXHJUWi1YXHhiZVx4YmZceGI1XHhlMlx4ZWV8XHgxYVx4YmZceGZiXHgwOCIKKyAgICBiIlx4OTFceGUxXHhmY1x4OWFceDE4XHhhM1x4OGJceGQ2Xlx4ODlceGY1W1x4ZWZceDg3XHhkMVx4MDZceDFjN1x4ZDZceGEyIgorICAgIGIiXHRcdFE1L0BTXHhjMDVceGQyVmhBS1x4MDNWQ1xyXHg5Ylx4OTNceGQ2TVx4ZjF4T1x4YWFPXHhlZFx4Yjk8XHgwY1x4ZGFlIgorICAgIGIiKlx4ZDBceDA3SGs2XHg5ZkcrXHhhMSlceGNkXHg5Y2xceDg3XHhkYlx4ZTFceGU3XHhlZkt9XHg4NzVceGFiXHhhMFx4MTl1IgorICAgIGIiXHhmNipGXHhiMzJceDAwXHgwMFx4MDAiCispCisKK0ZJTFRFUlNfUkFXXzIgPSBbeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDJ9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsCisgICAgICAgICAgICAgICAgICAicHJlc2V0IjogbHptYS5QUkVTRVRfREVGQVVMVCB8IGx6bWEuUFJFU0VUX0VYVFJFTUV9XQorQ09NUFJFU1NFRF9SQVdfMiA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDVceDkxXVx4MDBceDA1XHgxNFx4MDYtXHhkNFx4YThkP1x4ZWZceGJlXHhhZkhceGVlXHgwNDIiCisgICAgYiJceGNiLlx4YjVnXHg4Zlx4ZmJceDE0XHhhYlx4YTVceDlmXHgwMjV6XHhhNFx4ZGRceGQ4XHRbfVdceGY4XHgwY1x4MWRtSCIKKyAgICBiIlx4ZmFceDA1XHhmY2dceGJhXHhlNVx4MDFRXHgwYlx4ODNSXHhiNkFceDg4NVx4YzBceGJhXHhlZVxuXHgxY3Z+XHhkZTpvIgorICAgIGIiXHgwNjpKXHhhN1x4MTFDY1x4ZWFceGY3XHhlNSpvXHhmN1x4ODNcXGxceGJkRVx4MTlceDFmXHJceGE4XHgxMFx4YjQyIgorICAgIGIiXHgwY2FVe1x4ZDdceGI4d1x4ZGNceGJlXHgxYlx4ZmM4XHhiNFx4Y2NceGQzOFxcXHhmNlx4MTNceGY2XHhlN1x4OThceGZhIgorICAgIGIiXHhjN1tceDE3XzlceDg2JVx4YThceGY4XHhhYVx4YjhceDhkZnMjXHgxZT1ceGVkPFx4OTJceDEwXFx0XHhmZlx4ODZceGZiIgorICAgIGIiPVx4OWU3XHgxOFx4MWRmdFxcXHhiNVx4MDFceDk1UVx4YzVceDE5XHhiMzhceGUwXHhkNFx4YWFceDA3XHhjM1x4N2ZceGQ4IgorICAgIGIiXHhhMlx4MDA+LVx4ZDNceDhlXHhhMSNceGZhXHg4M0FyQW1ceGRiSn5ceDkzXHhhM0JceDgyXHhlMFx4YzdceGNjKFx4MDhgIgorICAgIGIiV0tceGFkXHgxYlx4OTRrYWpceDA0IFx4ZGVceGZjXHhlMVx4ZWRceGIwXHg4Mlx4OTFceGVmU1x4ODQlXHg4Nlx4ZmJpIgorICAgIGIiXHg5OVhceGYxQlx4ZTdceDkwO0VceGZkZVx4OThceGRhXHhjYVx4ZDZUXHhiNGJnXHhhNFxuXHg5YWpceGQxXHg4M1x4OWVdIgorICAgIGIiXCJceDdmTVx4YjVceDBmclx4ZDJcXFx4YTVqflBceDEwR0hceGJmTipaXHgxMC5ceDgxXHRwRVx4OGFceDA4XHhiZTFceGJkIgorICAgIGIiXHhjZFx4YTlceGUxXHg4ZFx4MWZceDA0XHhmOVx4MGVIXHhiOVx4YWVceGQ2XHhjM1x4YzFceGE1XHhhOVx4OTVQXHhkY34iCisgICAgYiJceGZmXHgwMVx4OTMwXHhhOVx4MDRceGY2XHgwM1x4ZmVceGI1SktceGMzXVx4ZGQ5XHhiMVx4ZDNceGQ3Rlx4ZjVceGQxIgorICAgIGIiXHgxZVx4YTBceDFjX1x4ZWRbXHgwY1x4YWVceGQ0XHg4Ylx4OTQ2XHhlYlx4YmZceGJiXHhlMyRrU3tceGI1XHg4MCxmOlNqIgorICAgIGIiXHgwZlx4MDh6XHgxY1x4ZjVceGU4XHhlNlx4YWVceDk4XHhiMFF+clx4MGZceGIwXHgwNT9ceGI2XHg5MFx4MTlceDAyJiIKKyAgICBiIlx4Y2JceDgwXHRceGM0XHhlYVx4OWN8eFx4Y2VceDEwXHg5Y1x4YzV8XHhjYmRoaCtceDBjJ1x4YzVceDgxXHhjMzNceGI1IgorICAgIGIiXHgxNHFceGQ2XHhjNVx4ZTNgWiNceGRjXHg4YVx4YWJceGRkXHhlYVx4MDhceGMySVx4ZTdceDAybHtceGVjXHgxOTZceDA2IgorICAgIGIiXHg5MVx4OGRceGRjXHhkNVx4YjN4XHhlMWh6JVx4ZDFceGY4XHhhNVx4ZGRceDk4IVx4OGNceDFjXHhjMVx4MTdSVWFceGJiIgorICAgIGIiXHg5NVx4MGZceGU0WFx4ZWExXHgwY1x4ZjE9Ulx4YmVceGM2MFx4ZTNceGE0XHg5YVx4OTBiZFx4OTckXUJceDAxXHhkZCIKKyAgICBiIlx4MWZceGUzaDJjXHgxZVx4YTBMYDRceGM2eFx4YTNaXHg4YVxyXHgxNF1UXlx4ZDhceDg5XHgxYlx4OTJccjtceGVkWSIKKyAgICBiIlx4MGNceGVmXHg4ZDl6XHhmM29ceGI2KWZceGE5XSRuXHJwXHg5M1x4ZDBceDEwXHhhNFx4MDhceGI4XHhiMlx4OGJceGI2IgorICAgIGIiXHg4Zlx4ODBceGFlO1x4ZGNRXHhmMVx4ZmFceDlhXHgwNlx4OGVceGE1XHgwZVx4OGNLXHg5YyBAXHhhYTpVY1hcbiFceGM2IgorICAgIGIiXHgwMlx4MTJceGNiXHgxYlwiPVx4MTYuXHgxZlx4MTc2XHhmMmc9XHhlMVduXHhlOVx4ZTFceGQ0XHhmMU9ceGFkXHgxNSIKKyAgICBiIlx4ODZceGU5XHhhM1RceGFmXHhhOVx4ZDdEXHhiNVx4ZDFXM3BudFx4MTFceGM3Vk9qXHhiN01ceGM0aVx4YTFceGYxJDMiCisgICAgYiJceGJiXHhkY1x4OGFmXHhiMFx4YzVZXHJceGQxXHhmYlx4ZjJceGU3S1x4ZTZceGM1aHdPXHhmZVx4OGMyXiZceDA3XHhkNSIKKyAgICBiIlx4MWZWXHgxOVx4ZmRcclx4MTRceGQyaT15Wlx4ZTZvXHhhZlx4YzZceGI2XHg5Mlx4OWRceGM0XHJceGIzXHhhZndceGFjJSIKKyAgICBiIlx4Y2ZjXHgxYVx4ZjFgXVx4ZjJceDFhXHg5ZVx4ODA4XHhlZG1ceGVkUVx4YjJceGZlXHhlNGhgW3FceGFlXHhlMFx4MGYiCisgICAgYiJceGJhMGdceGI2XCJOXHhjM1x4ZmJceGNmUlx4MTFceGM1XHgxOCkoXHhjNDBcXFx4YTNceDAyXHhkOUchXHhjZVx4MWIiCisgICAgYiJceGMxXHg5NnhceGI1XHhjOHpceDFmXHgwMVx4YjRceGFmXHhkZVx4YzJceGNkXHgwN1x4ZTdIXHhiM3lceGE4TVxuXFxBXHQiCisgICAgYiJhclx4ZGRNXHg4Ylx4OWFceGVhXHg4NFx4OWIhXHhmMVx4OGRceGIxXHhmMX5ceDFlXHJceGE1SFx4YmFceGYxXHg4NG8iCisgICAgYiJceGRhXHg4N1x4MDFoXHhlOVx4YTJceGJlXHhiZXFOXHg5ZFx4ODRceDBiIVdHXHhkYVx4YTFceGE1QVx4YjdceGM3YGoiCisgICAgYiJceDE1XHhmMlx4ZTlceGRkP1x4MDE1Qlx4ZDJ+RVx4MDZceDExXHhlMFx4OTEhXHgwNV5ceDgwXHhkZFx4YTh5XHgxNX0iCisgICAgYiJceGExKVx4YjEpXHg4MVx4MThceGY0XHhmNFx4ZjhceGMwXHhlZkRceGUzXHhkYjJmXHgxZVx4MTJceGFidVx4YzlceDk3IgorICAgIGIiXHhjZFx4MWVceGE3XHgwY1x4MDJ4NF82XHgwM1x4YzQkdFx4ZjM5XHg5NFx4MWQ9XHhjYlx4YmZ2XFxceGY1XHhhM1x4MWQiCisgICAgYiJceDlkOGprXHg5NVx4MTMpZmZceGY5blx4YzRceGE5XHhlM1x4MDFceGI4XHhkYVx4ZmJceGFiXHhkZk1ceDk5XHhmYlx4MDUiCisgICAgYiJceGUwXHhlOVx4YjBJXHhmNEVceGFiXHhlMlx4MTVceGEzXHgwMzVceGU3XHhkZVRceGVlXHg4MnBceGI0XHg4OFx4ZDMiCisgICAgYiJceDg5M1x4OWMvXHhjMFx4ZDZceDhmb3U7XHhmNlx4OTVQUlx4YTlceGIyXHhjMVx4ZWZGalx4ZTJceGE3JFx4ZjdoXHhmMSIKKyAgICBiIlx4ZGZLKFx4YzljXHhiYTdceGU4XHhlMylceGRkXHhiMixceDgzXHhmYlx4ODRceDE4LnlceDE4UWlceDg4XHhmOGBoLSIKKyAgICBiIlx4ZWZceGQ1XHhlZFx4OGNcdFx4ZDhceGMzXlx4MGZceDAwXHhiN1x4ZDBbIVx4YWZNXHg5Ylx4ZDcuXHgwN1x4ZDhceGZiIgorICAgIGIiXHhkOVx4ZTItUytceGFhOCxceGEwXHgwM1x4MWIgXHhlYVx4YThceDAwXHhjM1x4YWJ+XHhkMCRlXHhhNVx4N2ZceGY3IgorICAgIGIiXHg5NVBdXHgxMlx4MTlpXHhkOVx4N2ZvXHgwY1x4ZDhnXlxyRVx4YTVceDgwXHgxOFx4YzVceDAxXHg4MFx4YWVrYFx4ZmZ+IgorICAgIGIiXHhiNnlceGU3K1x4ZTVceDExXkRceGE3XHg4NVx4MThcIiFceGQ2XHhkMlx4YTdceGY0XHgxZVRceGRiXHgwMlx4ZTE1IgorICAgIGIiXHgwMllceGJjXHgxNzRaXHhlN1x4OWNIXHgxY1x4YmZceDBmXHhjNlx4ZTlmXVx4Y2ZceDhjeFx4YmNceGU1XHgxNVx4OTQiCisgICAgYiJceGZjM1x4YmNceGE3VFVIXHhmMVx4ODRceDFiXHhmN1x4YTl5XHhjMDdceDg0XHhmOFhceGQ4XHhlZlx4ZmMgXHgxY1x4ZDgiCisgICAgYiIoIC9ceGYyXHhiN1x4ZWNceGMxXFxceDhjXHhmNlx4OTVceGExXHgwM0pceDgzdlA4XHhlMVx4ZTNceGJiflx4YzI0a0EiCisgICAgYiJceDk4eVx4YTFceGYyUFx4ZTlceDlkXHhjOUpceGY4Tlx4OTlceGI0XHhjZWFPXHhkZVx4MTZceDFlXHhjMlx4MTlceGE3IgorICAgIGIiXHgwM1x4ZDJceGUwXHg4ZjpceDE1XHhmM1x4ODRceDllXHhlZVx4ZTZlXHhiOFx4MDJxXHhjN0FDXHgxZW13XHhmZFx0IgorICAgIGIiXHg5YVx4MWV1XHhjMVx4YTlceGNhQ3dVUFx4MDBceGE1XHhmNzhMNHchXHg5MUwyIFx4ODdceGQwXHhmMlx4MDZceDgxaiIKKyAgICBiIlx4ODA7XHgwM1ZceDA2XHg4N1x4OTJceGNiXHg5MGx2QEVceDhkXHg4ZFx4YTVceGE2XHhlN1pbXHhkZlx4ZDZFXHgwM2A+IgorICAgIGIiXHg4Zlx4ZGVceGExYlpceDg0XHhkMFx4YTlgXHgwNVx4MGV7XHg4MDtceGUzXHhiZWZceDhkXHgxZFx4ZWJrMS5ceGUzIgorICAgIGIiXHhlOU5ceDE1XHhmN1x4ZDQoXHhmYVx4YmJceDE1XHhiZHVceGY3XHg3Zlx4ODZceGFlIVx4MDNMXHgxZFx4YjVceGMxIgorICAgIGIiXHhiOVx4MTFceGRiXHhkMFx4OTNceGU0XHgwMlx4ZTFceGQyXHhjYkJqY19ceGU4fWRceGRiXHhjM1x4YTBZXHhiZVx4YzkvIgorICAgIGIiXHg5NVx4MDFceGEzLFx4ZTZibEBceDAxXHhkYnBceGMyXHhjZVx4MTRceDE2OFx4YzJxXHhlM3VIXHg4OVhceGE0XHhhOSIKKyAgICBiIlx4MTlceDFkXHhjMX1ceDdmT1hceDE5XHg5Zlx4ZGRceGJlXHg4NVx4ODNceGZmXHg5Nlx4MWVlXHg4Mk9gQ0Y9S1x4ZWIkSSIKKyAgICBiIlx4MTdfXHhlZlhceDhiSid2XHhkZVx4MWYrXHhkOS52XHhmOFR2XHgxN1x4ZjJceDlmNVx4MTlceGUxXHhiOVx4OTFceGE4UyIKKyAgICBiIlx4ODZceGJkXHgxYVwiKFx4YTV4XHg4ZENceDAzWFx4ODFceDkxXHhhOFx4MTFceGM0cFNceDEzXHhiY1x4ZjInSlx4YWUhIgorICAgIGIiXHhlZlx4ZWZceDg0R1x0XHg4ZFx4YzRceDEwXHgxMzJceDAwb1NceDllXHhlMFx4ZTRkXHg4Zlx4Yjh5XHhhY1x4YTZceDlmIgorICAgIGIiLFx4YjhmXHg4N1xyXHhkZlx4OWVFXHgwZlx4ZTFceGQwXFxMXHgwMFx4YjJceGUxaFx4ODRceGVmfVx4OThceGE4XHgxMSIKKyAgICBiIlx4Y2NXI1xcXHg4M1x4N2ZvXHhiYnpceDhmXHgwMCIKKykKKworRklMVEVSU19SQVdfMyA9IFt7ImlkIjogbHptYS5GSUxURVJfSUE2NCwgInN0YXJ0X29mZnNldCI6IDB4MTAwfSwKKyAgICAgICAgICAgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0KK0NPTVBSRVNTRURfUkFXXzMgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhkZl1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5OFx4MTVceGU0XHhiNFx4OWQiCisgICAgYiJvXHgxZFx4YzRceGU1XG5ceDAzXHhjYzJoXHhjN1xcXHg4Nlx4ZmZceGY4XHhlMlx4ZmNceGU3XHhkOVx4ZmU2XHhiOCgiCisgICAgYiJceGE4d2RceGMyXCJ1Lm5ceDFlXHhjM1x4ZjJceDhlXHg4ZFx4OGZceDAyXHgxNy9ceGE2PVx4ZjBceGEyXHhkZi9NXHg4OSIKKyAgICBiIlx4YmVceGRlXHhhN1x4MWN6XHgxOC1dXHhkNVx4ZWZceDEzXHg4ZnJaXHgxNVx4ODBceDhjXHhmOFx4OGRvXHhmYVx4MTIiCisgICAgYiJceDliI3ovXHhlZlx4ZjBceGZhRlx4MDFceDgyXHhhM01ceDhlXHhhMXRceGNhNiBCRiRceGU1UVx4YTRceDk4XHhlZVx4ZGUiCisgICAgYiJsXHhlOFx4N2ZceGYwXHg5ZCxiblx4MGJceDEzXHhkNFx4YThceDgxXHhlNE5ceGM4XHg4Nlx4MTUzXHhmNXgyXHhhMk8iCisgICAgYiJceDEzQFFceGExXHgwMC9ceGE1XHhkME9ceDk3XHhkY29ceGFlXHhmN3pceGM0XHhjZFNceGI2dDxceDE2XHhmMlx4OWNJIyIKKyAgICBiIlx4ODl1ZFx4YzY2WVx4ZDlceGVlXHhlNlx4Y2VceDEyXVx4ZTVceGYwXHhhYVx4OTYtUGVceGFkZTpceDA0XHRceDFiXHhmNyIKKyAgICBiIlx4ZGI3XG5ceDg2XHgxZnBceGM4Slx4YmFceGY0XHhmMFZceGE5XHhkY1x4ZjBceDAyJUdceGY5XHhkZj0/XHgxNVx4MWIiCisgICAgYiJceGUxKFx4Y2VceDgyPVx4ZDZJXHhhYzNceDEyXHgwY1JceGI3XHhhZVxyXHhiMWlceDAzXHg5NVx4MDFceGJkXHhiZVx4ZmEiCisgICAgYiJceDAyc1x4MDFQXHg5ZFx4OTZYXHhiMTJqXHhjOExceGE4XHg4NGJceGY2XHhjM1x4ZDRjLUhceDkzb0psXHhkMGlRXHhlNGsiCisgICAgYiJceDg0XHgwYlx4YzFceGI3XHhiY1x4YjFceDE3XHg4OFx4YjFceGNhP0BceGY2XHgwN1x4ZWFceGU2eFx4ZjFIMTJQXHgwZiIKKyAgICBiIlx4OGFceGM5XHhlYXV3XHhlM1x4YmVceGFhaVx4YTlXXHhkMFx4ODBceGNkI2NiNVx4OTlceGQ4XVx4YTlkXHgwY1x4YmQiCisgICAgYiJceGEyXHhkY1dsXHhlZFVHXHhiZlx4ODl5Rlx4Zjc3XHg4MXZceGJkNVx4OThceGJlaDhceDE4V1x4MDhceGYwXHgxYlx4OTkiCisgICAgYiI1Olx4MWE/ckRceDk2XHhhMVx4MDRceDBmXHhhZVx4YmFceDg1XHhlYlx4OWQ1QFx4ZjVceDgzXHhkMzdceDgzXHg4YWMiCisgICAgYiJceDA2XHhkNFx4OTdpXHhjZHRceDE2U1x4ODJrXHhmNktceDAxdnlceDg4XHg5MVx4OWI2VFx4ZGFlXHJceGZkXTprXHhiYWwiCisgICAgYiJceGE5XHhiYmFceGMzNFx4ZjlyXHhlYn1yXHhkYlx4YzdceGRiKlx4OGZceDAzelx4ZGM4aFx4Y2NceGM5XHhkM1x4YmNsIgorICAgIGIiXHhhNS1ceGNiXHhlYUtceGEyXHhjNVx4MTVceGMwXHhlM1x4YzFceDg2Wlx4ZmJceGViTFx4ZTEzXHhjZlx4OWNceGUzIgorICAgIGIiXHgxZFx4YzlceGVkXHhjMlx4MDZceGNjXHhjZSFceDkyXHhlNVx4ZmVceDljXlx4YTU5dyBceDliUFx4YTNQS1x4MDhkIgorICAgIGIiXHhmOVx4ZTJafVx4YTdceGJmXHhlZFx4ZWIlJFx4MGNceDgyXHhiOC9ceGIwXHgwMVx4YTkmLFx4ZjdxaHtRXHg5NilceGYyIgorICAgIGIicVx4OTZceGMzXHg4MFx4YjRceDEyXHhiMFx4YmFceGU2b1x4ZjQhXHhiNFtceGQ0XHg4YXdceDEwXHhmN3RceDBjXHhiMyIKKyAgICBiIlx4ZDlceGQ1XHhjM2BeXHg4MVx4MTE/P1xcXHhhNFx4OTlceDg1Ulx4ZDRceDhlXHg4M1x4YzlceDFlWFx4YmZhXHhmMSIKKyAgICBiIlx4YWNceGIwXHhlYVx4ZWFceGQ3XHhkMFx4YWJceDE4XHhlMlx4ZjJceGVkXHhlMVx4YjdceGM5XHgxOFx4Y2JTXHhlND4iCisgICAgYiJceGM5XHg5NUhceGU4XHhjYlx0XHIlXHhlYlx4YzckLm9ceGYxXHhmM1JceDE3XHgxZGJceGJiXHhkOFVceGE1Xlx4Y2NTIgorICAgIGIiXHgxNlx4MDFceDg3XHhmMy9ceDkzXHhkMVx4ZjB2XHhjMHJceGQ3XHhjY1x4YTJHa3pceGNhXHg4MFx4MGVceGZkXHhkMCIKKyAgICBiIlx4OGJceGJiXHhkMkl4XHhiM1x4MWV5XHhjYS0wXHhlM3peXHhkNlx4ZDZceDhmX1x4ZjFceDlkUFx4OWZpXHhhN1x4ZDEiCisgICAgYiJceGU4XHg5MFx4ODRceGRjXHhiZlx4Y2RreVx4OGVceGRjXHg4MVx4N2ZceGEzXHhiMitceGJmXHgwNFx4ZWZceGQ4XFwiCisgICAgYiJceGM0XHhkZlx4ZTFceGIwXHgwMVx4ZTlceDkzXHhlM1lceGYxXHgxZFlceGU4aFx4ODFceGNmXHhmMXdceGNjXHhiNFx4ZWYiCisgICAgYiIgXHg4YnxceDA0XHhlYVx4ODNlalx4YmVceDFmXHhkNHpceDljYFx4ZDNceDFhXHg5MkFceDA2XHhlNVx4OGZceGE5XHgxMyIKKyAgICBiIlx0XHg5ZT1ceGZhXHgxY1x4ZTVfXHg5ZiV2XHgxYm9ceDExWk9ceGQ4XHhmNFx0XHhkZE1ceDE2LVx4MDRceGZjXHgxODxcIiIKKyAgICBiIkNNXHhkZGd+Ylx4ZjZceGVmXHg4ZVx4MGNceGQwXHhkZXxceGEwJ1x4OGFceDBjXHhkNnhceGFlIUpceGE2Rlx4ODhceDE1dSIKKyAgICBiIlx4MDA4XHgxN1x4YmM3eVx4YjNceGQ4dVx4YWNfXHg4NVx4OGRceGU3XHhjMUBceDljXHhlY3FjXHhhMyNceGFkXHhmMSIKKyAgICBiIlx4OTM1XHhiNSlfXHJceGVjM11ceDBmb101XHhkMG15XHgwN1x4OWJceGVlXHg4MVx4YjVceDBmXHhjZksrXHgwMFx4YzAiCisgICAgYiJceGU0Ylx4MTBceGU0XHgwY1x4MWEgXHg5Ylx4ZTBceDk3dFx4ZjZceGExXHg5ZVx4ODUwXHhiYVx4MGNceDlhXHg4ZFx4YzgiCisgICAgYiJceDhmXHgwN1x4ZDdceGFlXHhjOFx4ZjkraVx4ZGNceGI5a1x4YjA+Zlx4MTlceGI4XHJceGE4XHhmOFx4MWYkXHhhNXtwIgorICAgIGIiXHhjNlx4ODgwXHhjZVx4ZGJceGNmXHhjYV9ceDg2XHhhY1x4ODhoNlx4OGJaJSdceGQwXG5ceGJmXHgwZlx4OWNcIlx4YmEiCisgICAgYiJceGU1XHg4Nlx4OWZceDBmN1g9bU5YW1x4Y2NceDE5RlVceGM5XHg4NjBceGJjXHg5MGErKiBceGFlXyRceDAzXHgxZVx4ZDMiCisgICAgYiJceGNkX1x4YTBceDljXHhkZVx4YWY0NnFceGE1XHhjOVx4OTJceGQ3XHhjYVx4ZTNgXHg5ZFx4ODV9XHhiNFx4ZmZceGIzIgorICAgIGIiXHg4M1x4ZmJceGI2XHhjYVx4YWVgXHgwYndceDdmXHhmY1x4ZDhceGFjVmVceDE5XHhjOFx4MTdceDBiWlx4YWRceDg4IgorICAgIGIiXHhlYiNceDk3XHgwM1x4MTNceGIxZFx4MGZ7XHgwY1x4MDR3XHgwN1xyXHg5N1x4YmRceGQ2XHhjMVx4YzNCOlx4OTVceDA4IgorICAgIGIiXlx4MTBWXHhhZWFIXHgwMlx4ZDlceGUzXG5cXFx4MDFYXHhmNlx4OWNceDhhXHgwNnUjJVx4YmUqXHhhMVx4MTh2XHg4NSIKKyAgICBiIlx4ZWMhXHQ0XHgwMFx4MDBceDAwIgorKQorCitGSUxURVJTX1JBV180ID0gW3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImRpc3QiOiA0fSwKKyAgICAgICAgICAgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX1g4NiwgInN0YXJ0X29mZnNldCI6IDB4NDB9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJwcmVzZXQiOiA0LCAibGMiOiAyfV0KK0NPTVBSRVNTRURfUkFXXzQgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDA2XHgwZVxcXHgwMFx4MDVceDE0XHgwN2JXXHhhYWhceGRkXHgxMFx4ZGMnXHhkNlx4OTAsXHhjNnYiCisgICAgYiJKcSBceDE0bFx4YjdceDgzeEJceDBiXHg5N2Y9JmZ4XHhiYVxuPlRuXHhiZlx4OGZceGZiXHgxZEZceGNhXHhjM3ZfXHhjYT8iCisgICAgYiJceGZiVjxceDkyI1x4ZDR3XHhhNlx4OGFceGViXHhmNlx4MDNceGMwXHgwMVx4OTRceGQ4XHg5ZVx4MTNceDEyXHg5OFx4ZDEiCisgICAgYiIqXHhmYV1jXHhlOFx4MWV+XHhhZlx4YjVdRWdceGZiXHg5ZVx4MDFcIjhceGIyXHg5MFx4MDY9flx4ZTlceDkxV1x4Y2QiCisgICAgYiJceGVjRFx4MTJceGM3XHhmYVx4ZTFceDkxXHgwNlx4YzdceDk5XHhiOVx4ZTNceDkwMVx4ODdceDE5dVx4MGZceDg2OVx4ZmYiCisgICAgYiJceGMxXHhiMGh3fFx4YjBceGRjbFx4Y2NrXHhiMTZvN1x4ODVceGVle1lfYlx4YmZceGJjJFx4ZjM9XHg4ZFx4OGJ3XHhlNVoiCisgICAgYiJceDA4QFx4YzRrbUVceGFkXHhmYlx4ZjYqXHhkOFx4YWRceGExXHhmYlx4YzV7XHhkZWosKVx4MWVtQlx4MWY8XHhhZWNhIgorICAgIGIiXHg4MChceGVlXHgwNyBceGRmXHhlOVx4ZjhceGViXHgwZS1ceDk3XHg4Nlx4OTBjXHhmOVx4ZWEnQlx4ZjdgXHhkN1x4YjAiCisgICAgYiJceDkyXHhiZFx4YTBceDgyXVx4YmRceDBlXHgwZUJceDE5XHhkY1x4OTZceGM2XHgxOVx4ZDg2RFx4ZjBceGQ1XHg4MzEiCisgICAgYiJceDAzXHhiN1x4MWNceGY3JjVceDFhXHg4ZiBQWiZqXHhmOFx4OThceDFib1x4Y2NceDg2XHg5YlNceGQzXHhhNVx4Y2R1IgorICAgIGIiXHhmOSRceGNjXHg5N29ceGU1Vn5ceGZiXHg5N1x4YjVceDBiXHgxN1x4OWNceGZkeFdceDEwXHhmZXA0XHg4MFx4ZGFIRFkiCisgICAgYiJceGZhKVx4ZmV0XHhiNVwiXHhkNFx4ZDNGXHg4MVx4ZjRceDEzXHgxZlx4ZWNceGRmXHhhNVx4MTNceGZjXCJceDkxeFx4YjciCisgICAgYiJceDk5XHhjZVx4YzhceDkyXG5ceGViW1x4MTBsKllceGQ4XHhiMUBceDA2XHhjOG9ceDhkN3JceGVidVx4ZmQ1XHgwZVx4N2YiCisgICAgYiJceGYxJFV7XHR9XHgxZlFceGNmeE5ceDlkXHg5ZlhYXHhlOWBceDgzXHhjMVx4MDZceGY0XHg4N3YtZlx4MTFceGRiL1xcIgorICAgIGIiXHgwNlx4ZmZceGQ3KUJceGYzZ1x4MDZceDg4IzJceDFlQjI0NFx4N2Y0cVx0XHhjODkzP21QWFx4OTVceGE2YVx4ZmIpZCIKKyAgICBiIlx4OWJceGZjXHg5OFx4OWFqXHgwNFx4YWVceDliXHg5ZFx4MTl3XHhiYVx4ZjkyXHhmYUFceDExXFxceDE3XHg5N0MzXHhhNCIKKyAgICBiIlx4YmMhXHg4OFx4Y2RvW1x4ZWM6XHgwMzBceDkxLlx4ODVceGUwQFxcNFx4MTZceDEyXHg5ZFx4Y2FKdlx4OTdceGIwNCIKKyAgICBiIlx4YWNrXHhjYmtmXHhhM3NzXHhmY1x4MTZeXHg4Y2VceDg1YVx4YTU9Jlx4ZWNyXHhiM3BceGQxRVx4ZDVceDgweVx4YzciCisgICAgYiJceGRhXHhmNlx4ZmVrXHhiY1RceGJmSFx4ZWVceDE1b1x4YzVceDhjXHg4MzBceGVjXHgxZFx4MDFceGFlXHgwYy1lXFwiCisgICAgYiJceDkxXHg5MFx4OTRceGIyXHhmOFx4ODhceDkxXHhlOFx4MGJceGFlXHhhNz5ceDk4XHhmNlx4OWNrXHhkMlx4YzZceDA4IgorICAgIGIiXHhlNlx4YWJcdFx4OThceGYyIVx4YTBceDhjXlx4YWNxQVx4OTk8XHgxY0VHXHg5N1x4YzhceGYxXHhiNlx4YjlceDgyIgorICAgIGIiXHg4ZFx4ZjdceDA4c1x4OThhXHhmZlx4ZTNceGNjXHg5Mlx4MGVceGQyXHhiNlVceGQ3XHhkOVx4ODZceDdmYVx4ZTVceDFjIgorICAgIGIiXHg4ZFRHQFx0XHgxZVx4MGU3Klx4ZmNceGRlXHhiY102Tlx4ZjdceGYxXHg4NFx4OWVceDlmXHhjZlx4ZTlceDFlXHhiNSciCisgICAgYiJceGY0PFx4ZGZceDk5c3FceGQwXHg5ZFx4YmRceDk5XHgwYlx4YjQlcDRceGJme1x4YmJceDhhXHhkMlx4MGJceGJjPU0iCisgICAgYiJceDk0SDpceGY1XHhhOFx4ZDZceGE0XHhjOTBceGMyRFx4YjlceGQzXHhhOFx4YjBTXHg4NyBgXHhhMlx4ZWJceGYzV1x4Y2UiCisgICAgYiIgN1x4ZjlOI1xyXHhlNlx4YmVcdFx4OWRceGU3XHg4MTFceGY5XHgxMFx4YzFceGMyXHgxNFx4ZjZceGZjXHhjYmFceGI3IgorICAgIGIiXHhiMVx4N2ZceDk1bFx4ZTRcdGpBXHhlYzpceDEwXHhlNVx4ZmVceGMyXFw9RFx4ZTJceDBjXHgwYjNdXHhmN1x4YzFceGY3IgorICAgIGIiXHhiY2VaXHhiMUFceGVhXHgxNlx4ZTVceGZkZGdGUVx4ZWRceGFmXHgwNFx4YTNceGQzXHhmOFx4YTJxXHgxOUJceGQ0ciIKKyAgICBiIlx4YzVceDBjXHg5YVx4MTRceDk0XHhlYVx4OTFceGM0b1x4ZTRceGJiXHhiNFx4OTlceGY0QFx4ZDFceGU2XHgwY1x4ZTMiCisgICAgYiJceGM2ZFx4YTBRXG5ceGYyL1x4ZDhceGI4UzVceDhhXHgxODpceGI1Z1x4YWNceDk1RFx4Y2VceDE3XHgwN1x4ZDR6XHhkYSIKKyAgICBiIlx4OTBceGU2NVx4MDdceDE5SCFcdFx4ZmR1XHgxNlx4OGVceDBlUlx4MTlceGY0XHg4Y2xceDBjXHhmOVFceGYxXHg4MCIKKyAgICBiIlx4ZTNceGJmXHhkN09ceGY4XHg4Y1x4MThceDBiXHg5Y1x4ZjFceDFmYlx4ZTFcdFJceGIyXHhmMVx4ZTFBXHhlYSBceGNmLSIKKyAgICBiIklHRVx4ZjFceDE0XHg5OCRceDgzXHgxNVx4YzlceGQ4alx4YmZceDE5XHgwZlx4ZDVceGQxXHhhYVx4YjNceGYzXHhhNUkycyIKKyAgICBiIlx4OGRceDE0NVx4Y2FceGQ1XHhkOTNceDljXHhiOEQwXHhlNlx4YWElXHhkMFx4YzBQfUpPXmhceDhlXHgwOFx4YWRsVi4iCisgICAgYiJceDE4XHg4OFx4MTNceDA1b1x4YjBceDA3XHhlYXdceGUwXHhiNlx4YTRceGQ1Klx4ZTRyXHhlZlx4MDdHK1x4YzFceGJlaVsiCisgICAgYiJ3XHhlOFx4YWJAX1x4ZWZceDE1eVx4ZTVceDEyXHhjOVdceDFiLlx4YWRceDg1LVx4YzJceGY3XHhlM21VNmdceDhlU0EiCisgICAgYiJceDAxKFx4ZDNceGRiXHgxNlx4MTM9XHhkZVx4OTJceGY5LERceGI4XHg4YVx4YjJceGI0XHhjOVx4YzNceGVmbkVceGU4XFwiCisgICAgYiJceGE2XHhlMllceGQyXHhjZlx4Y2JceDhjXHhiNlx4ZDVceGU5XHgxZFx4MWVceDlhXHg4Yn5ceGUyXHhhNlxyRVx4ODR1ViIKKyAgICBiIlx4ZWRceGM2XHg5OVx4ZGRtPFx4MTBbXHgwZnVceDFmXHhjMVx4MWQxXG5ceGNmd1x4YjIlIVx4ZjBbXHhjZVx4ODdceDgzQiIKKyAgICBiIlx4MDhceGFhLFx4MDglZFx4Y2VmXHg5NFwiXHhkOWcuXHhjODNceGNiWFkrNFx4ZWNceDg1cUFcblx4MWQ9OVx4ZjAqXHhiMSIKKyAgICBiIlx4MWYvXHhmM3NceGQ2MWJceDdmQFx4ZmJceDlkXHhlM0ZRXFxceGJkXHg4Mlx4MWVceDAwXHhmM1x4Y2VceGQzXHhlMSIKKyAgICBiIlx4Y2EsRVx4ZmQ3W1x4YWJceGI2XHhiN1x4YWMhbUF9XHhiZFx4OWQzUjVceDljRlx4YWJIXHhlYlx4OTIpY2NceDEzXHhkMCIKKyAgICBiIlx4YmRceGVlXHhlOW57XHgxZElKQlx4YTVceGViXHgxMVx4ZThgdyZgXHg4Yn1AT3hlXHRceDhhXHgwN1x4MDJceDk1XHhmMiIKKyAgICBiIlx4ZWRceGRhfFx4YjFlXHhiZVx4YWFceGJiZ1x4MTlAXHhlMVlceDg3OFx4ODRceDBmXHg4Y1x4ZTNceGM5OFx4ZjJceDllIgorICAgIGIiXHhkNU5ceGI1Slx4ZWZceGFiIVx4ZTJceDhkcVx4ZTFceGU1cVx4YzVceGVlXHgxMVdceGI3XHhlNGsqXHgwMjdceGEwIgorICAgIGIiXHhhM0pceGY0XHhkOG1ceGQwcVx4OTRceGNiXHgwN1xuOlx4YjZgLlx4ZTRceDljXHgxNStceGMwKVx4ZGVceDgwWFx4ZDQiCisgICAgYiJceGNmUW1ceDAxXHhjMmNQXHgxY0FceDg1J1x4YzlceGFjXHg4Ylx4ZTZceGIyKVx4ZTZceDg0dFx4MWNceDkyXHhlNFoiCisgICAgYiJceDFjUlx4YjBceDllXHg5Nlx4ZDFceGZiXHgxY1x4YTZceDhiXHhjYmBceDEwXHgxMl1ceGYyZ1JceDliRlRceGUwXHhjOEgiCisgICAgYiJTXHhmYlx4YWM8XHgwNFx4YzdceGMxXHhlOFx4ZWRQXHhmNFx4MTZceGRiXHhjMFx4ZDdlXHhjMlx4MTdKXlx4MWZceGFiIgorICAgIGIiXHhmZltceDA4XHgxOVx4YjRceGY1XHhmYlx4MTlceGI0XHgwNFx4ZTVjfiddXHhjYlx4YzJBXHhlY1x4OTBceGQwXHhlZCIKKyAgICBiIlx4MDYsXHhjNUt7XHg4Nlx4MDNceGIxXHhjZE14XHhkZVFceDhjM1x4ZjlceDhhXHhlYT1ceDg5XHhhYmFceGQyXHhjODlhIgorICAgIGIiXHhkNzJceGYwXHhjM1x4MTlceDhhXHhkZnNceGQ0XHhmZFx4YmJceDgxYlx4ZWFFXCJceGQ4XHhmNGRceDBjRFx4ZjdJSiEiCisgICAgYiJceGU1ZFx4YmJHXHhlOVx4Y2FtXHhhYVx4MGZfclx4OTVceDkxTkJxXHhjYVBceGNlXHhhN1x4YTlceGI1XHgxMFx4OTRlUCEiCisgICAgYiJ8XHg4NTZceGNkXHhiZklpclx4YjhlXHg5YmpQXHg5N3FceGFid1M3XHgxYVx4MGVoTVx4ZTdceGNhXHg4Nj9ceGRlUH15fiIKKyAgICBiIlx4MGZceDk1SVx4ZmNceDEzXHhlMTxRXHgxYlx4ODY4XHgxZFx4MTFceGRmXHg5NFx4ZjRceDgyPnJceGE5a1x4ODhceGNiIgorICAgIGIiXHhmZFx4YzN2XHhlMlx4YjlceDhhXHgwMlx4OGVxXHg5MklceGY4XHhmNlx4ZjFceDAzc1x4OWJceGI4XHhlM1wiXHhlMyIKKyAgICBiIlx4YTlceGE1PkRceGI4XHg5NjtceGU3XHg5Mlx4ZDEzM1x4ZThceGRkJ2VceGM5Llx4ZGM7XHgxN1x4MWZceGY1SFx4MTNxIgorICAgIGIiXHhhNFdceDBjXHhkYn5ceDk4XHgwMVx4ZWJceGRmXHhlMzJceDEzXHgwZlx4ZGR4XG42XHhhMFx0XHgxMFx4YjZceGJiIgorICAgIGIiXHhiMFx4YzNceDE4XHhiNjtceDlmaltceGQ5XHhkNVx4YzlceDA2XHg4YVx4ODdceGNkXHhlNVx4ZWVceGZjXHg5Yy0lQCIKKyAgICBiIlx4ZWVceGUwXHhlYlx4ZDJceGUzXHhlOFx4ZmJceGMwXHgxMjJcXFx4YzdceGFmXHhjMlx4YTFPdGhceGIzXHg4Zlx4ODIiCisgICAgYiJceGIzXHgxOFx4YThceDA3XHhkNVx4ZWVfXHhiZVx4ZTBceDFjQVx4MWVfXHJceDlhXHhiMFx4MTdXJlx4YTJEXHg5MVx4OTQiCisgICAgYiJceDFhXHhiMlx4ZWZceGYyXHhkY1x4ODU7WFx4YjAsXHhlYj4tN1NceGU1XHhjYVx4MDcpXHgxZnBceDdmXHhjYVFCTFx4Y2EiCisgICAgYiJceGYzXHhiOWRceGZjXHhiNXN1XHhiMFx4YzhceDk1XHg5MFx4ZWIqKVx4YTB2XHhlNFx4OWF7RldceGY0bFx4ZGVceGNkaiIKKyAgICBiIlx4MDAiCispCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdCgKKyAgICAgICAgQ29tcHJlc3NvckRlY29tcHJlc3NvclRlc3RDYXNlLAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NGdW5jdGlvblRlc3RDYXNlLAorICAgICAgICBGaWxlVGVzdENhc2UsCisgICAgICAgIE9wZW5UZXN0Q2FzZSwKKyAgICAgICAgTWlzY2VsbGFuZW91c1Rlc3RDYXNlLAorICAgICkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CmluZGV4IGM3MmViMWMuLjZiMWU5MzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKQEAgLTIyLDYgKzIyLDEwIEBACiAKIGNsYXNzIFRlc3RCYXNlOgogCisgICAgYWxsX21haWxib3hfdHlwZXMgPSAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKQorCiAgICAgZGVmIF9jaGVja19zYW1wbGUoc2VsZiwgbXNnKToKICAgICAgICAgIyBJbnNwZWN0IGEgbWFpbGJveC5NZXNzYWdlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzYW1wbGUgbWVzc2FnZQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLCBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCkBAIC05MSwxNCArOTUsMTQgQEAKICAgICAgICAgICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2FkZF9pbnZhbGlkXzhiaXRfYnl0ZXNfaGVhZGVyKHNlbGYpOgotICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5fYm94KSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9ib3guZ2V0X2J5dGVzKGtleSksCi0gICAgICAgICAgICBzZWxmLl9ub25hc2NpaV9tc2cuZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAgICAgIHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluLTEnKSkKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfbm9uYXNjaWlfaGVhZGVyX2FzX3N0cmluZyhzZWxmKToKICAgICAgICAgc3ViaiA9IHNlbGYuX25vbmFzY2lpX21zZy5zcGxpdGxpbmVzKClbMV0KLSAgICAgICAga2V5ID0gc2VsZi5fYm94LmFkZChzdWJqLmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc3Viai5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9ib3guZ2V0X3N0cmluZyhrZXkpLAogICAgICAgICAgICAgJ1N1YmplY3Q6ID0/dW5rbm93bi04Yml0P2I/Um1Gc2FXNWhjSFRoY2lCbzRYcG9iM3B6ZXVGc2JPMTA0WE56JwogICAgICAgICAgICAgJ1lXd3VJRTNoY2lCeVpXNWtaV3gwNld3Lz89XG5cbicpCkBAIC05MzAsOCArOTM0LDcgQEAKICAgICAgICAgIyB0aGUgbXRpbWUgYW5kIHNob3VsZCBjYXVzZSBhIHJlLXJlYWQuIE5vdGUgdGhhdCAic2xlZXAKICAgICAgICAgIyBlbXVsYXRpb24iIGlzIHN0aWxsIGluIGVmZmVjdCwgYXMgc2tld2ZhY3RvciBpcyAtMy4KICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJ2N1cicsICdzdHJheS1maWxlJykKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKICAgICAgICAgc2VsZi5fYm94Ll9yZWZyZXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlZnJlc2hlZCgpKQpAQCAtMTM5Nyw2ICsxNDAwLDE0IEBACiAgICAgICAgICMgSW5pdGlhbGl6ZSB3aXRoIGludmFsaWQgYXJndW1lbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHNlbGYuX2ZhY3Rvcnkob2JqZWN0KCkpKQogCisgICAgZGVmIHRlc3RfYWxsX2VNTV9hdHRyaWJ1ZXNfZXhpc3Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgMTI1MzcKKyAgICAgICAgZU1NID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhfc2FtcGxlX21lc3NhZ2UpCisgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoX3NhbXBsZV9tZXNzYWdlKQorICAgICAgICBmb3IgYXR0ciBpbiBlTU0uX19kaWN0X186CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0ciBpbiBtc2cuX19kaWN0X18sCisgICAgICAgICAgICAgICAgJ3t9IGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCcuZm9ybWF0KGF0dHIpKQorCiAgICAgZGVmIHRlc3RfYmVjb21lX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgICMgVGFrZSBvbiB0aGUgc3RhdGUgb2YgYW5vdGhlciBtZXNzYWdlCiAgICAgICAgIGVNTSA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoX3NhbXBsZV9tZXNzYWdlKQpAQCAtMTQwOCw5ICsxNDE5LDcgQEAKICAgICAgICAgIyBDb3B5IHNlbGYncyBmb3JtYXQtc3BlY2lmaWMgZGF0YSB0byBvdGhlciBtZXNzYWdlIGZvcm1hdHMuCiAgICAgICAgICMgVGhpcyB0ZXN0IGlzIHN1cGVyZmljaWFsOyBiZXR0ZXIgb25lcyBhcmUgaW4gVGVzdE1lc3NhZ2VDb252ZXJzaW9uLgogICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KCkKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBvdGhlcl9tc2cgPSBjbGFzc18oKQogICAgICAgICAgICAgbXNnLl9leHBsYWluX3RvKG90aGVyX21zZykKICAgICAgICAgb3RoZXJfbXNnID0gZW1haWwubWVzc2FnZS5NZXNzYWdlKCkKQEAgLTE2NDIsMzcgKzE2NTEsNDQgQEAKIAogICAgIGRlZiB0ZXN0X3BsYWluX3RvX3goc2VsZik6CiAgICAgICAgICMgQ29udmVydCBNZXNzYWdlIHRvIGFsbCBmb3JtYXRzCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgbXNnX3BsYWluID0gbWFpbGJveC5NZXNzYWdlKF9zYW1wbGVfbWVzc2FnZSkKICAgICAgICAgICAgIG1zZyA9IGNsYXNzXyhtc2dfcGxhaW4pCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUobXNnKQogCiAgICAgZGVmIHRlc3RfeF90b19wbGFpbihzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IGFsbCBmb3JtYXRzIHRvIE1lc3NhZ2UKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBtc2cgPSBjbGFzc18oX3NhbXBsZV9tZXNzYWdlKQogICAgICAgICAgICAgbXNnX3BsYWluID0gbWFpbGJveC5NZXNzYWdlKG1zZykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2dfcGxhaW4pCiAKICAgICBkZWYgdGVzdF94X2Zyb21fYnl0ZXMoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBhbGwgZm9ybWF0cyB0byBNZXNzYWdlCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgbXNnID0gY2xhc3NfKF9ieXRlc19zYW1wbGVfbWVzc2FnZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2cpCiAKICAgICBkZWYgdGVzdF94X3RvX2ludmFsaWQoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBhbGwgZm9ybWF0cyB0byBhbiBpbnZhbGlkIGZvcm1hdAotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBjbGFzc18oRmFsc2UpKQogCisgICAgZGVmIHRlc3RfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzX3JlbW92ZWRfb25fY29udmVyc2lvbihzZWxmKToKKyAgICAgICAgcmVmZXJlbmNlID0ge2NsYXNzXzogY2xhc3NfKF9zYW1wbGVfbWVzc2FnZSkuX19kaWN0X18KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlc30KKyAgICAgICAgZm9yIGNsYXNzMSBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgorICAgICAgICAgICAgZm9yIGNsYXNzMiBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgorICAgICAgICAgICAgICAgIGlmIGNsYXNzMSBpcyBjbGFzczI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc291cmNlID0gY2xhc3MxKF9zYW1wbGVfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBjbGFzczIoc291cmNlKQorICAgICAgICAgICAgICAgIHR5cGVfc3BlY2lmaWMgPSBbYSBmb3IgYSBpbiByZWZlcmVuY2VbY2xhc3MxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhIG5vdCBpbiByZWZlcmVuY2VbY2xhc3MyXV0KKyAgICAgICAgICAgICAgICBmb3IgYXR0ciBpbiB0eXBlX3NwZWNpZmljOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGF0dHIsIHRhcmdldC5fX2RpY3RfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aGlsZSBjb252ZXJ0aW5nIHt9IHRvIHt9Ii5mb3JtYXQoY2xhc3MxLCBjbGFzczIpKQorCiAgICAgZGVmIHRlc3RfbWFpbGRpcl90b19tYWlsZGlyKHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgTWFpbGRpck1lc3NhZ2UgdG8gTWFpbGRpck1lc3NhZ2UKICAgICAgICAgbXNnX21haWxkaXIgPSBtYWlsYm94Lk1haWxkaXJNZXNzYWdlKF9zYW1wbGVfbWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGNkMDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CkBAIC0wLDAgKzEsMjIxIEBACitpbXBvcnQgbWFpbGNhcAoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKKworIyBMb2NhdGlvbiBvZiBtYWlsY2FwIGZpbGUKK01BSUxDQVBGSUxFID0gdGVzdC5zdXBwb3J0LmZpbmRmaWxlKCJtYWlsY2FwLnR4dCIpCisKKyMgRGljdCB0byBhY3QgYXMgbW9jayBtYWlsY2FwIGVudHJ5IGZvciB0aGlzIHRlc3QKKyMgVGhlIGtleXMgYW5kIHZhbHVlcyBzaG91bGQgbWF0Y2ggdGhlIGNvbnRlbnRzIG9mIE1BSUxDQVBGSUxFCitNQUlMQ0FQRElDVCA9IHsKKyAgICAnYXBwbGljYXRpb24veC1tb3ZpZSc6CisgICAgICAgIFt7J2NvbXBvc2UnOiAnbW92aWVtYWtlciAlcycsCisgICAgICAgICAgJ3gxMS1iaXRtYXAnOiAnIi91c3IvbGliL1ptYWlsL2JpdG1hcHMvbW92aWUueGJtIicsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJNb3ZpZSInLAorICAgICAgICAgICd2aWV3JzogJ21vdmllcGxheWVyICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi8qJzoKKyAgICAgICAgW3snY29waW91c291dHB1dCc6ICcnLAorICAgICAgICAgICd2aWV3JzogJ2VjaG8gIlRoaXMgaXMgXFwiJXRcXCIgYnV0ICAgICAgICBpcyA1MCBcXCUgR3JlZWsgdG8gbWUiIFxcOyBjYXQgJXMnfV0sCisgICAgJ2F1ZGlvL2Jhc2ljJzoKKyAgICAgICAgW3snZWRpdCc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBbiBhdWRpbyBmcmFnbWVudCInLAorICAgICAgICAgICd2aWV3JzogJ3Nob3dhdWRpbyAlcyd9XSwKKyAgICAndmlkZW8vbXBlZyc6CisgICAgICAgIFt7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JzoKKyAgICAgICAgW3snbmVlZHN0ZXJtaW5hbCc6ICcnLCAndmlldyc6ICdwcy10by10ZXJtaW5hbCAlcyd9LAorICAgICAgICAgeydjb21wb3NlJzogJ2lkcmF3ICVzJywgJ3ZpZXcnOiAncHMtdG8tdGVybWluYWwgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL3gtZHZpJzoKKyAgICAgICAgW3sndmlldyc6ICd4ZHZpICVzJ31dLAorICAgICdtZXNzYWdlL2V4dGVybmFsLWJvZHknOgorICAgICAgICBbeydjb21wb3NldHlwZWQnOiAnZXh0Y29tcG9zZSAlcycsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBIHJlZmVyZW5jZSB0byBkYXRhIHN0b3JlZCBpbiBhbiBleHRlcm5hbCBsb2NhdGlvbiInLAorICAgICAgICAgICduZWVkc3Rlcm1pbmFsJzogJycsCisgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSAgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9J31dLAorICAgICd0ZXh0L3JpY2h0ZXh0JzoKKyAgICAgICAgW3sndGVzdCc6ICd0ZXN0ICJgZWNobyAgICAgJXtjaGFyc2V0fSB8IHRyIFwnW0EtWl1cJyBcJ1thLXpdXCdgIiAgPSBpc28tODg1OS04JywKKyAgICAgICAgICAnY29waW91c291dHB1dCc6ICcnLAorICAgICAgICAgICd2aWV3JzogJ3Nob3dub25hc2NpaSBpc28tODg1OS04IC1lIHJpY2h0ZXh0IC1wICVzJ31dLAorICAgICdpbWFnZS94LXh3aW5kb3dkdW1wJzoKKyAgICAgICAgW3sndmlldyc6ICdkaXNwbGF5ICVzJ31dLAorICAgICdhdWRpby8qJzoKKyAgICAgICAgW3sndmlldyc6ICcvdXNyL2xvY2FsL2Jpbi9zaG93YXVkaW8gJXQnfV0sCisgICAgJ3ZpZGVvLyonOgorICAgICAgICBbeyd2aWV3JzogJ2FuaW1hdGUgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL2ZyYW1lJzoKKyAgICAgICAgW3sncHJpbnQnOiAnImNhdCAlcyB8IGxwIicsICd2aWV3JzogJ3Nob3dmcmFtZSAlcyd9XSwKKyAgICAnaW1hZ2UvcmdiJzoKKyAgICAgICAgW3sndmlldyc6ICdkaXNwbGF5ICVzJ31dCit9CisKKworY2xhc3MgSGVscGVyRnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xpc3RtYWlsY2FwZmlsZXMoc2VsZik6CisgICAgICAgICMgVGhlIHJldHVybiB2YWx1ZSBmb3IgbGlzdG1haWxjYXBmaWxlcygpIHdpbGwgdmFyeSBieSBzeXN0ZW0uCisgICAgICAgICMgU28gdmVyaWZ5IHRoYXQgbGlzdG1haWxjYXBmaWxlcygpIHJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCBpcyBvZgorICAgICAgICAjIG5vbi16ZXJvIGxlbmd0aC4KKyAgICAgICAgbWNmaWxlcyA9IG1haWxjYXAubGlzdG1haWxjYXBmaWxlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtY2ZpbGVzLCBsaXN0KQorICAgICAgICBmb3IgbSBpbiBtY2ZpbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG0sIHN0cikKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgICMgQWNjb3JkaW5nIHRvIFJGQyAxNTI0LCBpZiBNQUlMQ0FQUyBlbnYgdmFyaWFibGUgZXhpc3RzLCB1c2UgdGhhdAorICAgICAgICAgICAgIyBhbmQgb25seSB0aGF0LgorICAgICAgICAgICAgaWYgIk1BSUxDQVBTIiBpbiBlbnY6CisgICAgICAgICAgICAgICAgZW52X21haWxjYXBzID0gZW52WyJNQUlMQ0FQUyJdLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVudl9tYWlsY2FwcyA9IFsiL3Rlc3RkaXIxLy5tYWlsY2FwIiwgIi90ZXN0ZGlyMi9tYWlsY2FwIl0KKyAgICAgICAgICAgICAgICBlbnZbIk1BSUxDQVBTIl0gPSBvcy5wYXRoc2VwLmpvaW4oZW52X21haWxjYXBzKQorICAgICAgICAgICAgICAgIG1jZmlsZXMgPSBtYWlsY2FwLmxpc3RtYWlsY2FwZmlsZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudl9tYWlsY2FwcywgbWNmaWxlcykKKworICAgIGRlZiB0ZXN0X3JlYWRtYWlsY2FwZmlsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlYWRtYWlsY2FwZmlsZSgpIHVzaW5nIHRlc3QgZmlsZS4gSXQgc2hvdWxkIG1hdGNoIE1BSUxDQVBESUNULgorICAgICAgICB3aXRoIG9wZW4oTUFJTENBUEZJTEUsICdyJykgYXMgbWNmOgorICAgICAgICAgICAgZCA9IG1haWxjYXAucmVhZG1haWxjYXBmaWxlKG1jZikKKyAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoZCwgTUFJTENBUERJQ1QpCisKKyAgICBkZWYgdGVzdF9sb29rdXAoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRob3V0IGtleQorICAgICAgICBleHBlY3RlZCA9IFt7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ30sIHsndmlldyc6ICdhbmltYXRlICVzJ31dCisgICAgICAgIGFjdHVhbCA9IG1haWxjYXAubG9va3VwKE1BSUxDQVBESUNULCAndmlkZW8vbXBlZycpCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisKKyAgICAgICAgIyBUZXN0IHdpdGgga2V5CisgICAgICAgIGtleSA9ICdjb21wb3NlJworICAgICAgICBleHBlY3RlZCA9IFt7J2VkaXQnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkFuIGF1ZGlvIGZyYWdtZW50IicsCisgICAgICAgICAgICAgICAgICAgICAndmlldyc6ICdzaG93YXVkaW8gJXMnfV0KKyAgICAgICAgYWN0dWFsID0gbWFpbGNhcC5sb29rdXAoTUFJTENBUERJQ1QsICdhdWRpby9iYXNpYycsIGtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiB0ZXN0X3N1YnN0KHNlbGYpOgorICAgICAgICBwbGlzdCA9IFsnaWQ9MScsICdudW1iZXI9MicsICd0b3RhbD0zJ10KKyAgICAgICAgIyB0ZXN0IGNhc2U6IChbZmllbGQsIE1JTUV0eXBlLCBmaWxlbmFtZSwgcGxpc3Q9W11dLCA8ZXhwZWN0ZWQgc3RyaW5nPikKKyAgICAgICAgdGVzdF9jYXNlcyA9IFsKKyAgICAgICAgICAgIChbIiIsICJhdWRpby8qIiwgImZvby50eHQiXSwgIiIpLAorICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvbyIpLAorICAgICAgICAgICAgKFsiZWNobyAlcyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vLnR4dCIpLAorICAgICAgICAgICAgKFsiZWNobyAldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gYXVkaW8vKiIpLAorICAgICAgICAgICAgKFsiZWNobyBcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCisgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIGZvbyIpLAorICAgICAgICAgICAgKFsiZWNobyAle3RvdGFsfSIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIDMiKQorICAgICAgICBdCisgICAgICAgIGZvciB0YyBpbiB0ZXN0X2Nhc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsY2FwLnN1YnN0KCp0Y1swXSksIHRjWzFdKQorCisKK2NsYXNzIEdldGNhcHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vY2tfZ2V0Y2FwcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG1haWxjYXAuZ2V0Y2FwcygpIHVzaW5nIG1vY2sgbWFpbGNhcCBmaWxlIGluIHRoaXMgZGlyLgorICAgICAgICAjIFRlbXBvcmFyaWx5IG92ZXJyaWRlIGFueSBleGlzdGluZyBzeXN0ZW0gbWFpbGNhcCBmaWxlIGJ5IHBvaW50aW5nIHRoZQorICAgICAgICAjIE1BSUxDQVBTIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG91ciBtb2NrIGZpbGUuCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbIk1BSUxDQVBTIl0gPSBNQUlMQ0FQRklMRQorICAgICAgICAgICAgY2FwcyA9IG1haWxjYXAuZ2V0Y2FwcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChjYXBzLCBNQUlMQ0FQRElDVCkKKworICAgIGRlZiB0ZXN0X3N5c3RlbV9tYWlsY2FwKHNlbGYpOgorICAgICAgICAjIFRlc3QgbWFpbGNhcC5nZXRjYXBzKCkgd2l0aCBtYWlsY2FwIGZpbGUocykgb24gc3lzdGVtLCBpZiBhbnkuCisgICAgICAgIGNhcHMgPSBtYWlsY2FwLmdldGNhcHMoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FwcywgZGljdCkKKyAgICAgICAgbWFpbGNhcGZpbGVzID0gbWFpbGNhcC5saXN0bWFpbGNhcGZpbGVzKCkKKyAgICAgICAgZXhpc3RpbmdtY2ZpbGVzID0gW21jZiBmb3IgbWNmIGluIG1haWxjYXBmaWxlcyBpZiBvcy5wYXRoLmV4aXN0cyhtY2YpXQorICAgICAgICBpZiBleGlzdGluZ21jZmlsZXM6CisgICAgICAgICAgICAjIEF0IGxlYXN0IDEgbWFpbGNhcCBmaWxlIGV4aXN0cywgc28gdGVzdCB0aGF0LgorICAgICAgICAgICAgZm9yIChrLCB2KSBpbiBjYXBzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGssIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgbGlzdCkKKyAgICAgICAgICAgICAgICBmb3IgZSBpbiB2OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgZGljdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgTm8gbWFpbGNhcCBmaWxlcyBvbiBzeXN0ZW0uIGdldGNhcHMoKSBzaG91bGQgcmV0dXJuIGVtcHR5IGRpY3QuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBjYXBzKQorCisKK2NsYXNzIEZpbmRtYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZmluZG1hdGNoKHNlbGYpOgorCisgICAgICAgICMgZGVmYXVsdCBmaW5kbWF0Y2ggYXJndW1lbnRzCisgICAgICAgIGMgPSBNQUlMQ0FQRElDVAorICAgICAgICBmbmFtZSA9ICJmb28udHh0IgorICAgICAgICBwbGlzdCA9IFsiYWNjZXNzLXR5cGU9ZGVmYXVsdCIsICJuYW1lPWpvaG4iLCAic2l0ZT1weXRob24ub3JnIiwKKyAgICAgICAgICAgICAgICAgImRpcmVjdG9yeT0vdG1wIiwgIm1vZGU9Zm9vIiwgInNlcnZlcj1iYXIiXQorICAgICAgICBhdWRpb19iYXNpY19lbnRyeSA9IHsKKyAgICAgICAgICAgICdlZGl0JzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAnY29tcG9zZSc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBbiBhdWRpbyBmcmFnbWVudCInLAorICAgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2F1ZGlvICVzJworICAgICAgICB9CisgICAgICAgIGF1ZGlvX2VudHJ5ID0geyJ2aWV3IjogIi91c3IvbG9jYWwvYmluL3Nob3dhdWRpbyAldCJ9CisgICAgICAgIHZpZGVvX2VudHJ5ID0geyd2aWV3JzogJ2FuaW1hdGUgJXMnfQorICAgICAgICBtZXNzYWdlX2VudHJ5ID0geworICAgICAgICAgICAgJ2NvbXBvc2V0eXBlZCc6ICdleHRjb21wb3NlICVzJywKKyAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQSByZWZlcmVuY2UgdG8gZGF0YSBzdG9yZWQgaW4gYW4gZXh0ZXJuYWwgbG9jYXRpb24iJywgJ25lZWRzdGVybWluYWwnOiAnJywKKyAgICAgICAgICAgICd2aWV3JzogJ3Nob3dleHRlcm5hbCAlcyAle2FjY2Vzcy10eXBlfSAle25hbWV9ICV7c2l0ZX0gICAgICV7ZGlyZWN0b3J5fSAle21vZGV9ICV7c2VydmVyfScKKyAgICAgICAgfQorCisgICAgICAgICMgdGVzdCBjYXNlOiAoZmluZG1hdGNoIGFyZ3MsIGZpbmRtYXRjaCBrZXl3b3JkIGFyZ3MsIGV4cGVjdGVkIG91dHB1dCkKKyAgICAgICAgIyAgIHBvc2l0aW9uYWwgYXJnczogY2FwcywgTUlNRXR5cGUKKyAgICAgICAgIyAgIGtleXdvcmQgYXJnczoga2V5PSJ2aWV3IiwgZmlsZW5hbWU9Ii9kZXYvbnVsbCIsIHBsaXN0PVtdCisgICAgICAgICMgICBvdXRwdXQ6IChjb21tYW5kIGxpbmUsIG1haWxjYXAgZW50cnkpCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgKFt7fSwgInZpZGVvL21wZWciXSwge30sIChOb25lLCBOb25lKSksCisgICAgICAgICAgICAoW2MsICJmb28vYmFyIl0sIHt9LCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKFtjLCAidmlkZW8vbXBlZyJdLCB7fSwgKCdtcGVnX3BsYXkgL2Rldi9udWxsJywgeyd2aWV3JzogJ21wZWdfcGxheSAlcyd9KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJlZGl0Il0sIHt9LCAoImF1ZGlvY29tcG9zZSAvZGV2L251bGwiLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiY29tcG9zZSJdLCB7fSwgKCJhdWRpb2NvbXBvc2UgL2Rldi9udWxsIiwgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImRlc2NyaXB0aW9uIl0sIHt9LCAoJyJBbiBhdWRpbyBmcmFnbWVudCInLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiZm9vYmFyIl0sIHt9LCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKFtjLCAidmlkZW8vKiJdLCB7ImZpbGVuYW1lIjogZm5hbWV9LCAoImFuaW1hdGUgJXMiICUgZm5hbWUsIHZpZGVvX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJjb21wb3NlIl0sCisgICAgICAgICAgICAgeyJmaWxlbmFtZSI6IGZuYW1lfSwKKyAgICAgICAgICAgICAoImF1ZGlvY29tcG9zZSAlcyIgJSBmbmFtZSwgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIl0sCisgICAgICAgICAgICAgeyJrZXkiOiAiZGVzY3JpcHRpb24iLCAiZmlsZW5hbWUiOiBmbmFtZX0sCisgICAgICAgICAgICAgKCciQW4gYXVkaW8gZnJhZ21lbnQiJywgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvLyoiXSwKKyAgICAgICAgICAgICB7ImZpbGVuYW1lIjogZm5hbWV9LAorICAgICAgICAgICAgICgiL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvIGF1ZGlvLyoiLCBhdWRpb19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAibWVzc2FnZS9leHRlcm5hbC1ib2R5Il0sCisgICAgICAgICAgICAgeyJwbGlzdCI6IHBsaXN0fSwKKyAgICAgICAgICAgICAoInNob3dleHRlcm5hbCAvZGV2L251bGwgZGVmYXVsdCBqb2huIHB5dGhvbi5vcmcgICAgIC90bXAgZm9vIGJhciIsIG1lc3NhZ2VfZW50cnkpKQorICAgICAgICBdCisgICAgICAgIHNlbGYuX3J1bl9jYXNlcyhjYXNlcykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gInBvc2l4IiwgIlJlcXVpcmVzICd0ZXN0JyBjb21tYW5kIG9uIHN5c3RlbSIpCisgICAgZGVmIHRlc3RfdGVzdChzZWxmKToKKyAgICAgICAgIyBmaW5kbWF0Y2goKSB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgYW55ICJ0ZXN0IiBjb25kaXRpb25zIGFuZCBza2lwCisgICAgICAgICMgdGhlIGVudHJ5IGlmIHRoZSBjaGVjayBmYWlscy4KKyAgICAgICAgY2FwcyA9IHsidGVzdC9wYXNzIjogW3sidGVzdCI6ICJ0ZXN0IDEgLWVxIDEifV0sCisgICAgICAgICAgICAgICAgInRlc3QvZmFpbCI6IFt7InRlc3QiOiAidGVzdCAxIC1lcSAwIn1dfQorICAgICAgICAjIHRlc3QgY2FzZTogKGZpbmRtYXRjaCBhcmdzLCBmaW5kbWF0Y2gga2V5d29yZCBhcmdzLCBleHBlY3RlZCBvdXRwdXQpCisgICAgICAgICMgICBwb3NpdGlvbmFsIGFyZ3M6IGNhcHMsIE1JTUV0eXBlLCBrZXkgKCJ0ZXN0IikKKyAgICAgICAgIyAgIGtleXdvcmQgYXJnczogTi9BCisgICAgICAgICMgICBvdXRwdXQ6IChjb21tYW5kIGxpbmUsIG1haWxjYXAgZW50cnkpCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgIyBmaW5kbWF0Y2ggd2lsbCByZXR1cm4gdGhlIG1haWxjYXAgZW50cnkgZm9yIHRlc3QvcGFzcyBiZWNhdXNlIGl0IGV2YWx1YXRlcyB0byB0cnVlCisgICAgICAgICAgICAoW2NhcHMsICJ0ZXN0L3Bhc3MiLCAidGVzdCJdLCB7fSwgKCJ0ZXN0IDEgLWVxIDEiLCB7InRlc3QiOiAidGVzdCAxIC1lcSAxIn0pKSwKKyAgICAgICAgICAgICMgZmluZG1hdGNoIHdpbGwgcmV0dXJuIE5vbmUgYmVjYXVzZSB0ZXN0L2ZhaWwgZXZhbHVhdGVzIHRvIGZhbHNlCisgICAgICAgICAgICAoW2NhcHMsICJ0ZXN0L2ZhaWwiLCAidGVzdCJdLCB7fSwgKE5vbmUsIE5vbmUpKQorICAgICAgICBdCisgICAgICAgIHNlbGYuX3J1bl9jYXNlcyhjYXNlcykKKworICAgIGRlZiBfcnVuX2Nhc2VzKHNlbGYsIGNhc2VzKToKKyAgICAgICAgZm9yIGMgaW4gY2FzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxjYXAuZmluZG1hdGNoKCpjWzBdLCAqKmNbMV0pLCBjWzJdKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlbHBlckZ1bmN0aW9uVGVzdCwgR2V0Y2Fwc1Rlc3QsIEZpbmRtYXRjaFRlc3QpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IDk2YTcwZWMuLjgzYzM0OGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcworaW1wb3J0IHR5cGVzCiAKIGNsYXNzIEhlbHBlck1peGluOgogICAgIGRlZiBoZWxwZXIoc2VsZiwgc2FtcGxlLCAqZXh0cmEpOgpAQCAtMTE0LDYgKzExNSwyMiBAQAogICAgICAgICBjb2RlcyA9IChFeGNlcHRpb25UZXN0Q2FzZS50ZXN0X2V4Y2VwdGlvbnMuX19jb2RlX18sKSAqIGNvdW50CiAgICAgICAgIG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhjb2RlcykpCiAKKyAgICBkZWYgdGVzdF9kaWZmZXJlbnRfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICBjbzEgPSBjb21waWxlKCJ4IiwgImYxIiwgImV4ZWMiKQorICAgICAgICBjbzIgPSBjb21waWxlKCJ5IiwgImYyIiwgImV4ZWMiKQorICAgICAgICBjbzEsIGNvMiA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcygoY28xLCBjbzIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbzEuY29fZmlsZW5hbWUsICJmMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28yLmNvX2ZpbGVuYW1lLCAiZjIiKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2FtZV9maWxlbmFtZV91c2VkKHNlbGYpOgorICAgICAgICBzID0gIiIiZGVmIGYoKTogcGFzc1xuZGVmIGcoKTogcGFzcyIiIgorICAgICAgICBjbyA9IGNvbXBpbGUocywgIm15ZmlsZSIsICJleGVjIikKKyAgICAgICAgY28gPSBtYXJzaGFsLmxvYWRzKG1hcnNoYWwuZHVtcHMoY28pKQorICAgICAgICBmb3Igb2JqIGluIGNvLmNvX2NvbnN0czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Db2RlVHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjby5jb19maWxlbmFtZSwgb2JqLmNvX2ZpbGVuYW1lKQorCiBjbGFzcyBDb250YWluZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgSGVscGVyTWl4aW4pOgogICAgIGQgPSB7J2FzdHJpbmcnOiAnZm9vQGJhci5iYXouc3BhbScsCiAgICAgICAgICAnYWZsb2F0JzogNzI4My40MywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCBkZGRjODg5Li43MTUwMDNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC0yLDExICsyLDEyIEBACiAjIFhYWFggU2hvdWxkIG5vdCBkbyB0ZXN0cyBhcm91bmQgemVybyBvbmx5CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHZlcmJvc2UsIHJlcXVpcmVzX0lFRUVfNzU0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG1hdGgKIGltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3lzCi1pbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzY29uZmlnCiAKQEAgLTQ1NywxMiArNDU4LDEyIEBACiAKICAgICBkZWYgdGVzdEZtb2Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5mbW9kKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLDEpJywgbWF0aC5mbW9kKDEwLDEpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLDAuNSknLCBtYXRoLmZtb2QoMTAsMC41KSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwxLjUpJywgbWF0aC5mbW9kKDEwLDEuNSksIDEpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLDEpJywgbWF0aC5mbW9kKC0xMCwxKSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsMC41KScsIG1hdGguZm1vZCgtMTAsMC41KSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsMS41KScsIG1hdGguZm1vZCgtMTAsMS41KSwgLTEpCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsIDEpJywgbWF0aC5mbW9kKDEwLCAxKSwgMC4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLCAwLjUpJywgbWF0aC5mbW9kKDEwLCAwLjUpLCAwLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsIDEuNSknLCBtYXRoLmZtb2QoMTAsIDEuNSksIDEuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsIDEpJywgbWF0aC5mbW9kKC0xMCwgMSksIC0wLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLCAwLjUpJywgbWF0aC5mbW9kKC0xMCwgMC41KSwgLTAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsIDEuNSknLCBtYXRoLmZtb2QoLTEwLCAxLjUpLCAtMS4wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmZtb2QoTkFOLCAxLikpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmZtb2QoMS4sIE5BTikpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmZtb2QoTkFOLCBOQU4pKSkKQEAgLTY1MCw2ICs2NTEsMzMgQEAKICAgICAgICAgbj0gMioqOTAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChtYXRoLmxvZzFwKG4pLCBtYXRoLmxvZzFwKGZsb2F0KG4pKSkKIAorICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0TG9nMihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzIpCisKKyAgICAgICAgIyBDaGVjayBzb21lIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDEpLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIpLCAxLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDQpLCAyLjApCisKKyAgICAgICAgIyBMYXJnZSBpbnRlZ2VyIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigyKioxMDIzKSwgMTAyMy4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigyKioxMDI0KSwgMTAyNC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigyKioyMDAwKSwgMjAwMC4wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGgubG9nMiwgLTEuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5sb2cyLCBOSU5GKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmxvZzIoTkFOKSkpCisKKyAgICBAcmVxdWlyZXNfSUVFRV83NTQKKyAgICAjIGxvZzIoKSBpcyBub3QgYWNjdXJhdGUgZW5vdWdoIG9uIE1hYyBPUyBYIFRpZ2VyICgxMC40KQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDUpCisgICAgZGVmIHRlc3RMb2cyRXhhY3Qoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBnZXQgZXhhY3QgZXF1YWxpdHkgZm9yIGxvZzIgb2YgcG93ZXJzIG9mIDIuCisgICAgICAgIGFjdHVhbCA9IFttYXRoLmxvZzIobWF0aC5sZGV4cCgxLjAsIG4pKSBmb3IgbiBpbiByYW5nZSgtMTA3NCwgMTAyNCldCisgICAgICAgIGV4cGVjdGVkID0gW2Zsb2F0KG4pIGZvciBuIGluIHJhbmdlKC0xMDc0LCAxMDI0KV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RMb2cxMChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzEwKQogICAgICAgICBzZWxmLmZ0ZXN0KCdsb2cxMCgwLjEpJywgbWF0aC5sb2cxMCgwLjEpLCAtMSkKQEAgLTEwMTAsNyArMTAzOCw2IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9tdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIEFMTE9XRURfRVJST1IgPSAyMCAgIyBwZXJtaXR0ZWQgZXJyb3IsIGluIHVscHMKICAgICAgICAgZmFpbF9mbXQgPSAie306e30oeyFyfSk6IGV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgogCiAgICAgICAgIGZhaWx1cmVzID0gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CmluZGV4IDdjMGM4NGYuLmU1ZGI5NDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQpAQCAtNjU4LDcgKzY1OCw3IEBACiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6Ci0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnUDJQUDJQUCcpCisgICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnUDJuTjJQbicpCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmplY3QuX19zaXplb2ZfXyhpby5CeXRlc0lPKCkpLCBiYXNlc2l6ZSkKICAgICAgICAgY2hlY2soaW8uQnl0ZXNJTygpLCBiYXNlc2l6ZSApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKaW5kZXggMGJmZGRkOS4uZWU2YjE1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQpAQCAtMSw2ICsxLDcgQEAKICIiIlVuaXQgdGVzdHMgZm9yIHRoZSBtZW1vcnl2aWV3CiAKLVhYWCBXZSBuZWVkIG1vcmUgdGVzdHMhIFNvbWUgdGVzdHMgYXJlIGluIHRlc3RfYnl0ZXMKKyAgIFNvbWUgdGVzdHMgYXJlIGluIHRlc3RfYnl0ZXMuIE1hbnkgdGVzdHMgdGhhdCByZXF1aXJlIF90ZXN0YnVmZmVyLm5kYXJyYXkKKyAgIGFyZSBpbiB0ZXN0X2J1ZmZlci4KICIiIgogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTI0LDE1ICsyNSwxNCBAQAogICAgICAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFtzZWxmLnJvX3R5cGUsIHNlbGYucndfdHlwZV0pCiAKICAgICBkZWYgY2hlY2tfZ2V0aXRlbV93aXRoX3R5cGUoc2VsZiwgdHApOgotICAgICAgICBpdGVtID0gc2VsZi5nZXRpdGVtX3R5cGUKICAgICAgICAgYiA9IHRwKHNlbGYuX3NvdXJjZSkKICAgICAgICAgb2xkcmVmY291bnQgPSBzeXMuZ2V0cmVmY291bnQoYikKICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCBpdGVtKGIiYSIpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobVswXSwgYnl0ZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs1XSwgaXRlbShiImYiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy0xXSwgaXRlbShiImYiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy02XSwgaXRlbShiImEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCBvcmQoYiJhIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtWzBdLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs1XSwgb3JkKGIiZiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTFdLCBvcmQoYiJmIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstNl0sIG9yZChiImEiKSkKICAgICAgICAgIyBCb3VuZHMgY2hlY2tpbmcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbGFtYmRhOiBtWzZdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IG1bLTddKQpAQCAtNzYsNyArNzYsOSBAQAogICAgICAgICBiID0gc2VsZi5yd190eXBlKHNlbGYuX3NvdXJjZSkKICAgICAgICAgb2xkcmVmY291bnQgPSBzeXMuZ2V0cmVmY291bnQoYikKICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKLSAgICAgICAgbVswXSA9IHRwKGIiMCIpCisgICAgICAgIG1bMF0gPSBvcmQoYicxJykKKyAgICAgICAgc2VsZi5fY2hlY2tfY29udGVudHModHAsIGIsIGIiMWJjZGVmIikKKyAgICAgICAgbVswOjFdID0gdHAoYiIwIikKICAgICAgICAgc2VsZi5fY2hlY2tfY29udGVudHModHAsIGIsIGIiMGJjZGVmIikKICAgICAgICAgbVsxOjNdID0gdHAoYiIxMiIpCiAgICAgICAgIHNlbGYuX2NoZWNrX2NvbnRlbnRzKHRwLCBiLCBiIjAxMmRlZiIpCkBAIC0xMDIsMTAgKzEwNCwxNyBAQAogICAgICAgICAjIFdyb25nIGluZGV4L3NsaWNlIHR5cGVzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgMC4wLCBiImEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sICgwLCksIGIiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKHNsaWNlKDAsMSwxKSwgMCksIGIiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKDAsIHNsaWNlKDAsMSwxKSksIGIiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKDAsKSwgYiJhIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAiYSIsIGIiYSIpCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHNsaWNlcworICAgICAgICBzbGljZXMgPSAoc2xpY2UoMCwxLDEpLCBzbGljZSgwLDEsMikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNldGl0ZW0sIHNsaWNlcywgYiJhIikKICAgICAgICAgIyBUcnlpbmcgdG8gcmVzaXplIHRoZSBtZW1vcnkgb2JqZWN0Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIDAsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0aXRlbSwgMCwgYiJhYiIpCisgICAgICAgIGV4YyA9IFZhbHVlRXJyb3IgaWYgbS5mb3JtYXQgPT0gJ2MnIGVsc2UgVHlwZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2V0aXRlbSwgMCwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGMsIHNldGl0ZW0sIDAsIGIiYWIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCBzbGljZSgxLDEpLCBiImEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCBzbGljZSgwLDIpLCBiImEiKQogCkBAIC0xNzUsNyArMTg0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNoYXBlLCAoNiwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtKSwgNikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN0cmlkZXMsIChzZWxmLml0ZW1zaXplLCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdWJvZmZzZXRzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3Vib2Zmc2V0cywgKCkpCiAgICAgICAgIHJldHVybiBtCiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3JlYWRvbmx5KHNlbGYpOgpAQCAtMjA5LDEyICsyMTgsMTYgQEAKICAgICAgICAgICAgICAgICAjIElmIHRwIGlzIGEgZmFjdG9yeSByYXRoZXIgdGhhbiBhIHBsYWluIHR5cGUsIHNraXAKICAgICAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgICAgICBjbGFzcyBNeVZpZXcoKToKKyAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYmFzZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubSA9IG1lbW9yeXZpZXcoYmFzZSkKICAgICAgICAgICAgIGNsYXNzIE15U291cmNlKHRwKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBjbGFzcyBNeU9iamVjdDoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggYSBtZW1vcnl2aWV3IG9iamVjdAorICAgICAgICAgICAgIyBDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgdGhyb3VnaCBhIG1lbW9yeXZpZXcgb2JqZWN0LgorICAgICAgICAgICAgIyBUaGlzIGV4ZXJjaXNlcyBtYnVmX2NsZWFyKCkuCiAgICAgICAgICAgICBiID0gTXlTb3VyY2UodHAoYidhYmMnKSkKICAgICAgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCiAgICAgICAgICAgICBvID0gTXlPYmplY3QoKQpAQCAtMjI2LDYgKzIzOSwxNyBAQAogICAgICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod3IoKSBpcyBOb25lLCB3cigpKQogCisgICAgICAgICAgICAjIFRoaXMgZXhlcmNpc2VzIG1lbW9yeV9jbGVhcigpLgorICAgICAgICAgICAgbSA9IE15Vmlldyh0cChiJ2FiYycpKQorICAgICAgICAgICAgbyA9IE15T2JqZWN0KCkKKyAgICAgICAgICAgIG0ueCA9IG0KKyAgICAgICAgICAgIG0ubyA9IG8KKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobykKKyAgICAgICAgICAgIG0gPSBvID0gTm9uZQorICAgICAgICAgICAgIyBUaGUgY3ljbGUgbXVzdCBiZSBicm9rZW4KKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdyKCkgaXMgTm9uZSwgd3IoKSkKKwogICAgIGRlZiBfY2hlY2tfcmVsZWFzZWQoc2VsZiwgbSwgdHApOgogICAgICAgICBjaGVjayA9IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInJlbGVhc2VkIikKICAgICAgICAgd2l0aCBjaGVjazogYnl0ZXMobSkKQEAgLTI4Myw2ICszMDcsNTEgQEAKICAgICAgICAgaSA9IGlvLkJ5dGVzSU8oYidaWlpaJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpLnJlYWRpbnRvLCBtKQogCisgICAgZGVmIHRlc3RfZ2V0YnVmX2ZhaWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5fdmlldywge30pCisKKyAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgorICAgICAgICAjIE1lbW9yeXZpZXdzIG9mIHJlYWRvbmx5IChoYXNoYWJsZSkgdHlwZXMgYXJlIGhhc2hhYmxlLCBhbmQgdGhleQorICAgICAgICAjIGhhc2ggYXMgaGFzaChvYmoudG9ieXRlcygpKS4KKyAgICAgICAgdHAgPSBzZWxmLnJvX3R5cGUKKyAgICAgICAgaWYgdHAgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIHJlYWQtb25seSB0eXBlIHRvIHRlc3QiKQorICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQorICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goYiJhYmNkZWYiKSkKKyAgICAgICAgIyBSZWxlYXNpbmcgdGhlIG1lbW9yeXZpZXcga2VlcHMgdGhlIHN0b3JlZCBoYXNoIHZhbHVlIChhcyB3aXRoIHdlYWtyZWZzKQorICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goYiJhYmNkZWYiKSkKKyAgICAgICAgIyBIYXNoaW5nIGEgbWVtb3J5dmlldyBmb3IgdGhlIGZpcnN0IHRpbWUgYWZ0ZXIgaXQgaXMgcmVsZWFzZWQKKyAgICAgICAgIyByZXN1bHRzIGluIGFuIGVycm9yIChhcyB3aXRoIHdlYWtyZWZzKS4KKyAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbSkKKworICAgIGRlZiB0ZXN0X2hhc2hfd3JpdGFibGUoc2VsZik6CisgICAgICAgICMgTWVtb3J5dmlld3Mgb2Ygd3JpdGFibGUgdHlwZXMgYXJlIHVuaGFzaGFibGUKKyAgICAgICAgdHAgPSBzZWxmLnJ3X3R5cGUKKyAgICAgICAgaWYgdHAgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIHdyaXRhYmxlIHR5cGUgdG8gdGVzdCIpCisgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGhhc2gsIG0pCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICAjIENoZWNrIG1lbW9yeXZpZXdzIGFyZSB3ZWFrcmVmYWJsZQorICAgICAgICBmb3IgdHAgaW4gc2VsZi5fdHlwZXM6CisgICAgICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQorICAgICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgICAgIEwgPSBbXQorICAgICAgICAgICAgZGVmIGNhbGxiYWNrKHdyLCBiPWIpOgorICAgICAgICAgICAgICAgIEwuYXBwZW5kKGIpCisgICAgICAgICAgICB3ciA9IHdlYWtyZWYucmVmKG0sIGNhbGxiYWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBtKQorICAgICAgICAgICAgZGVsIG0KKyAgICAgICAgICAgIHRlc3Quc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoTFswXSwgYikKKwogIyBWYXJpYXRpb25zIG9uIHNvdXJjZSBvYmplY3RzIGZvciB0aGUgYnVmZmVyOiBieXRlcy1saWtlIG9iamVjdHMsIHRoZW4gYXJyYXlzCiAjIHdpdGggaXRlbXNpemUgPiAxLgogIyBOT1RFOiBzdXBwb3J0IGZvciBtdWx0aS1kaW1lbnNpb25hbCBvYmplY3RzIGlzIHVuaW1wbGVtZW50ZWQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21ldGFjbGFzcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5CmluZGV4IDIxOWFiOTkuLmU2ZmUyMGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5CkBAIC0xNTksNiArMTU5LDcgQEAKICAgICAuLi4gICAgIGJhciA9IDEyMwogICAgIC4uLgogICAgIGRbJ19fbW9kdWxlX18nXSA9ICd0ZXN0LnRlc3RfbWV0YWNsYXNzJworICAgIGRbJ19fcXVhbG5hbWVfXyddID0gJ0MnCiAgICAgZFsnZm9vJ10gPSA0CiAgICAgZFsnZm9vJ10gPSA0MgogICAgIGRbJ2JhciddID0gMTIzCkBAIC0xNzcsMTIgKzE3OCwxMiBAQAogICAgIC4uLiAgICAgYiA9IDI0CiAgICAgLi4uCiAgICAgbWV0YTogQyAoKQotICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdhJywgNDIpLCAoJ2InLCAyNCldCisgICAgbnM6IFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ19fcXVhbG5hbWVfXycsICdDJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQogICAgIGt3OiBbXQogICAgID4+PiB0eXBlKEMpIGlzIGRpY3QKICAgICBUcnVlCiAgICAgPj4+IHByaW50KHNvcnRlZChDLml0ZW1zKCkpKQotICAgIFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KKyAgICBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdfX3F1YWxuYW1lX18nLCAnQycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KICAgICA+Pj4KIAogQW5kIGFnYWluLCB3aXRoIGEgX19wcmVwYXJlX18gYXR0cmlidXRlLgpAQCAtMTk5LDExICsyMDAsMTIgQEAKICAgICAuLi4KICAgICBwcmVwYXJlOiBDICgpIFsoJ290aGVyJywgJ2Jvb2gnKV0KICAgICBkWydfX21vZHVsZV9fJ10gPSAndGVzdC50ZXN0X21ldGFjbGFzcycKKyAgICBkWydfX3F1YWxuYW1lX18nXSA9ICdDJwogICAgIGRbJ2EnXSA9IDEKICAgICBkWydhJ10gPSAyCiAgICAgZFsnYiddID0gMwogICAgIG1ldGE6IEMgKCkKLSAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnYScsIDIpLCAoJ2InLCAzKV0KKyAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnX19xdWFsbmFtZV9fJywgJ0MnKSwgKCdhJywgMiksICgnYicsIDMpXQogICAgIGt3OiBbKCdvdGhlcicsICdib29oJyldCiAgICAgPj4+CiAKQEAgLTI0Niw3ICsyNDgsMTMgQEAKIAogIiIiCiAKLV9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KK2ltcG9ydCBzeXMKKworIyBUcmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxzX18gd2hpY2ggY2F1c2VzIHZhcmlvdXMgdGVzdHMgdG8gZmFpbC4KK2lmIGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCk6CisgICAgX190ZXN0X18gPSB7fQorZWxzZToKKyAgICBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkgYi9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKaW5kZXggNGE2OWIwMC4uMDQyN2JhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQpAQCAtNCw5ICs0LDcgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IHhtbC5kb20KIGltcG9ydCB4bWwuZG9tLm1pbmlkb20KLWltcG9ydCB4bWwucGFyc2Vycy5leHBhdAogCiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgcGFyc2UsIE5vZGUsIERvY3VtZW50LCBwYXJzZVN0cmluZwogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IGdldERPTUltcGxlbWVudGF0aW9uCkBAIC0xNCw3ICsxMiw2IEBACiAKIHRzdGZpbGUgPSBmaW5kZmlsZSgidGVzdC54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIAotCiAjIFRoZSB0ZXN0cyBvZiBEb2N1bWVudFR5cGUgaW1wb3J0aW5nIHVzZSB0aGVzZSBoZWxwZXJzIHRvIGNvbnN0cnVjdAogIyB0aGUgZG9jdW1lbnRzIHRvIHdvcmsgd2l0aCwgc2luY2Ugbm90IGFsbCBET00gYnVpbGRlcnMgYWN0dWFsbHkKICMgY3JlYXRlIHRoZSBEb2N1bWVudFR5cGUgbm9kZXMuCkBAIC01MCw3ICs0Nyw3IEBACiAKICAgICBkZWYgY2hlY2tXaG9sZVRleHQoc2VsZiwgbm9kZSwgcyk6CiAgICAgICAgIHQgPSBub2RlLndob2xlVGV4dAotICAgICAgICBzZWxmLmNvbmZpcm0odCA9PSBzLCAibG9va2luZyBmb3IgJXMsIGZvdW5kICVzIiAlIChyZXByKHMpLCByZXByKHQpKSkKKyAgICAgICAgc2VsZi5jb25maXJtKHQgPT0gcywgImxvb2tpbmcgZm9yICVyLCBmb3VuZCAlciIgJSAocywgdCkpCiAKICAgICBkZWYgdGVzdFBhcnNlRnJvbUZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggb3Blbih0c3RmaWxlKSBhcyBmaWxlOgpAQCAtMjgyLDYgKzI3OSw3IEBACiAKICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCJkZWYiLCAiZ2hpIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh4bWwuZG9tLk5vdEZvdW5kRXJyLCBjaGlsZC5yZW1vdmVBdHRyaWJ1dGUsICJmb28iKQogICAgICAgICBjaGlsZC5yZW1vdmVBdHRyaWJ1dGUoImRlZiIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMCkKICAgICAgICAgZG9tLnVubGluaygpCkBAIC0yOTMsNiArMjkxLDggQEAKICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnIiwgInhtbG5zOnB5dGhvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5weXRob24ub3JnIikKICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsICJweXRob246YWJjYXR0ciIsICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh4bWwuZG9tLk5vdEZvdW5kRXJyLCBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOUywKKyAgICAgICAgICAgICJmb28iLCAiaHR0cDovL3d3dy5weXRob24ub3JnIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAyKQogICAgICAgICBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy5weXRob24ub3JnIiwgImFiY2F0dHIiKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCkBAIC0zMDQsMTEgKzMwNCwyMyBAQAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoInNwYW0iLCAiamFtIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAxKQogICAgICAgICBub2RlID0gY2hpbGQuZ2V0QXR0cmlidXRlTm9kZSgic3BhbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5vZGUsCisgICAgICAgICAgICBOb25lKQogICAgICAgICBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOb2RlKG5vZGUpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMAogICAgICAgICAgICAgICAgIGFuZCBjaGlsZC5nZXRBdHRyaWJ1dGVOb2RlKCJzcGFtIikgaXMgTm9uZSkKKyAgICAgICAgZG9tMiA9IERvY3VtZW50KCkKKyAgICAgICAgY2hpbGQyID0gZG9tMi5hcHBlbmRDaGlsZChkb20uY3JlYXRlRWxlbWVudCgiZm9vIikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5vZGUsCisgICAgICAgICAgICBub2RlKQogICAgICAgICBkb20udW5saW5rKCkKIAorICAgIGRlZiB0ZXN0SGFzQXR0cmlidXRlKHNlbGYpOgorICAgICAgICBkb20gPSBEb2N1bWVudCgpCisgICAgICAgIGNoaWxkID0gZG9tLmFwcGVuZENoaWxkKGRvbS5jcmVhdGVFbGVtZW50KCJmb28iKSkKKyAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCJzcGFtIiwgImphbSIpCisgICAgICAgIHNlbGYuY29uZmlybShjaGlsZC5oYXNBdHRyaWJ1dGUoInNwYW0iKSkKKwogICAgIGRlZiB0ZXN0Q2hhbmdlQXR0cihzZWxmKToKICAgICAgICAgZG9tID0gcGFyc2VTdHJpbmcoIjxhYmMvPiIpCiAgICAgICAgIGVsID0gZG9tLmRvY3VtZW50RWxlbWVudApAQCAtNTkyLDcgKzYwNCwxMyBAQAogCiAgICAgZGVmIHRlc3RGaXJzdENoaWxkKHNlbGYpOiBwYXNzCiAKLSAgICBkZWYgdGVzdEhhc0NoaWxkTm9kZXMoc2VsZik6IHBhc3MKKyAgICBkZWYgdGVzdEhhc0NoaWxkTm9kZXMoc2VsZik6CisgICAgICAgIGRvbSA9IHBhcnNlU3RyaW5nKCI8ZG9jPjxmb28vPjwvZG9jPiIpCisgICAgICAgIGRvYyA9IGRvbS5kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRvbS5oYXNDaGlsZE5vZGVzKCkpCisgICAgICAgIGRvbTIgPSBwYXJzZVN0cmluZygiPGRvYy8+IikKKyAgICAgICAgZG9jMiA9IGRvbTIuZG9jdW1lbnRFbGVtZW50CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZG9jMi5oYXNDaGlsZE5vZGVzKCkpCiAKICAgICBkZWYgX3Rlc3RDbG9uZUVsZW1lbnRDb3BpZXNBdHRyaWJ1dGVzKHNlbGYsIGUxLCBlMiwgdGVzdCk6CiAgICAgICAgIGF0dHJzMSA9IGUxLmF0dHJpYnV0ZXMKQEAgLTEwNDEsNDEgKzEwNTksNiBAQAogICAgICAgICAgICAgICAgICJ0ZXN0IE5vZGVMaXN0Lml0ZW0oKSIpCiAgICAgICAgIGRvYy51bmxpbmsoKQogCi0gICAgZGVmIHRlc3RTQVgyRE9NKHNlbGYpOgotICAgICAgICBmcm9tIHhtbC5kb20gaW1wb3J0IHB1bGxkb20KLQotICAgICAgICBzYXgyZG9tID0gcHVsbGRvbS5TQVgyRE9NKCkKLSAgICAgICAgc2F4MmRvbS5zdGFydERvY3VtZW50KCkKLSAgICAgICAgc2F4MmRvbS5zdGFydEVsZW1lbnQoImRvYyIsIHt9KQotICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgic3ViZWxtIiwge30pCi0gICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCi0gICAgICAgIHNheDJkb20uZW5kRWxlbWVudCgic3ViZWxtIikKLSAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKLSAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJkb2MiKQotICAgICAgICBzYXgyZG9tLmVuZERvY3VtZW50KCkKLQotICAgICAgICBkb2MgPSBzYXgyZG9tLmRvY3VtZW50Ci0gICAgICAgIHJvb3QgPSBkb2MuZG9jdW1lbnRFbGVtZW50Ci0gICAgICAgICh0ZXh0MSwgZWxtMSwgdGV4dDIpID0gcm9vdC5jaGlsZE5vZGVzCi0gICAgICAgIHRleHQzID0gZWxtMS5jaGlsZE5vZGVzWzBdCi0KLSAgICAgICAgc2VsZi5jb25maXJtKHRleHQxLnByZXZpb3VzU2libGluZyBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgIHRleHQxLm5leHRTaWJsaW5nIGlzIGVsbTEgYW5kCi0gICAgICAgICAgICAgICAgZWxtMS5wcmV2aW91c1NpYmxpbmcgaXMgdGV4dDEgYW5kCi0gICAgICAgICAgICAgICAgZWxtMS5uZXh0U2libGluZyBpcyB0ZXh0MiBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0Mi5wcmV2aW91c1NpYmxpbmcgaXMgZWxtMSBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0Mi5uZXh0U2libGluZyBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgIHRleHQzLnByZXZpb3VzU2libGluZyBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgIHRleHQzLm5leHRTaWJsaW5nIGlzIE5vbmUsICJ0ZXN0U0FYMkRPTSAtIHNpYmxpbmdzIikKLQotICAgICAgICBzZWxmLmNvbmZpcm0ocm9vdC5wYXJlbnROb2RlIGlzIGRvYyBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0MS5wYXJlbnROb2RlIGlzIHJvb3QgYW5kCi0gICAgICAgICAgICAgICAgZWxtMS5wYXJlbnROb2RlIGlzIHJvb3QgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDIucGFyZW50Tm9kZSBpcyByb290IGFuZAotICAgICAgICAgICAgICAgIHRleHQzLnBhcmVudE5vZGUgaXMgZWxtMSwgInRlc3RTQVgyRE9NIC0gcGFyZW50cyIpCi0gICAgICAgIGRvYy51bmxpbmsoKQotCiAgICAgZGVmIHRlc3RFbmNvZGluZ3Moc2VsZik6CiAgICAgICAgIGRvYyA9IHBhcnNlU3RyaW5nKCc8Zm9vPiYjeDIwYWM7PC9mb28+JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoKSwKQEAgLTEwODQsNiArMTA2NywxMSBAQAogICAgICAgICAgICAgYic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pjxmb28+XHhlMlx4ODJceGFjPC9mb28+JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoJ2lzby04ODU5LTE1JyksCiAgICAgICAgICAgICBiJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTE1Ij8+PGZvbz5ceGE0PC9mb28+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoJ3VzLWFzY2lpJyksCisgICAgICAgICAgICBiJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InVzLWFzY2lpIj8+PGZvbz4mIzgzNjQ7PC9mb28+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoJ3V0Zi0xNicpLAorICAgICAgICAgICAgJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/PicKKyAgICAgICAgICAgICc8Zm9vPlx1MjBhYzwvZm9vPicuZW5jb2RlKCd1dGYtMTYnKSkKIAogICAgICAgICAjIFZlcmlmeSB0aGF0IGNoYXJhY3RlciBkZWNvZGluZyBlcnJvcnMgdGhyb3cgZXhjZXB0aW9ucyBpbnN0ZWFkCiAgICAgICAgICMgb2YgY3Jhc2hpbmcKQEAgLTE1MjIsMTIgKzE1MTAsMjEgQEAKICAgICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCJmb28tLWJhciIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkb2MudG94bWwpCiAKKwogICAgIGRlZiB0ZXN0RW1wdHlYTUxOU1ZhbHVlKHNlbGYpOgogICAgICAgICBkb2MgPSBwYXJzZVN0cmluZygiPGVsZW1lbnQgeG1sbnM9Jyc+XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICI8Zm9vLz5cbjwvZWxlbWVudD4iKQogICAgICAgICBkb2MyID0gcGFyc2VTdHJpbmcoZG9jLnRveG1sKCkpCiAgICAgICAgIHNlbGYuY29uZmlybShkb2MyLm5hbWVzcGFjZVVSSSA9PSB4bWwuZG9tLkVNUFRZX05BTUVTUEFDRSkKIAorICAgIGRlZiB0ZXN0RG9jUmVtb3ZlQ2hpbGQoc2VsZik6CisgICAgICAgIGRvYyA9IHBhcnNlKHRzdGZpbGUpCisgICAgICAgIHRpdGxlX3RhZyA9IGRvYy5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRJVExFIilbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoIHhtbC5kb20uTm90Rm91bmRFcnIsIGRvYy5yZW1vdmVDaGlsZCwgdGl0bGVfdGFnKQorICAgICAgICBudW1fY2hpbGRyZW5fYmVmb3JlID0gbGVuKGRvYy5jaGlsZE5vZGVzKQorICAgICAgICBkb2MucmVtb3ZlQ2hpbGQoZG9jLmNoaWxkTm9kZXNbMF0pCisgICAgICAgIG51bV9jaGlsZHJlbl9hZnRlciA9IGxlbihkb2MuY2hpbGROb2RlcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bV9jaGlsZHJlbl9hZnRlciA9PSBudW1fY2hpbGRyZW5fYmVmb3JlIC0gMSkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChNaW5pZG9tVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weSBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQppbmRleCAyOGI1MmE5Li5hM2RlMzk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21tYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CkBAIC00MTcsNiArNDE3LDM1IEBACiAgICAgICAgICAgICBtW3hdID0gYgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtW3hdLCBiKQogCisgICAgZGVmIHRlc3RfcmVhZF9hbGwoc2VsZik6CisgICAgICAgIG0gPSBtbWFwLm1tYXAoLTEsIDE2KQorICAgICAgICBzZWxmLmFkZENsZWFudXAobS5jbG9zZSkKKworICAgICAgICAjIFdpdGggbm8gcGFyYW1ldGVycywgb3IgTm9uZSBvciBhIG5lZ2F0aXZlIGFyZ3VtZW50LCByZWFkcyBhbGwKKyAgICAgICAgbS53cml0ZShieXRlcyhyYW5nZSgxNikpKQorICAgICAgICBtLnNlZWsoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoKSwgYnl0ZXMocmFuZ2UoMTYpKSkKKyAgICAgICAgbS5zZWVrKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKCksIGJ5dGVzKHJhbmdlKDgsIDE2KSkpCisgICAgICAgIG0uc2VlaygxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoKSwgYicnKQorICAgICAgICBtLnNlZWsoMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoTm9uZSksIGJ5dGVzKHJhbmdlKDMsIDE2KSkpCisgICAgICAgIG0uc2Vlayg0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgtMSksIGJ5dGVzKHJhbmdlKDQsIDE2KSkpCisgICAgICAgIG0uc2Vlayg1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgtMiksIGJ5dGVzKHJhbmdlKDUsIDE2KSkpCisgICAgICAgIG0uc2Vlayg5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgtNDIpLCBieXRlcyhyYW5nZSg5LCAxNikpKQorCisgICAgZGVmIHRlc3RfcmVhZF9pbnZhbGlkX2FyZyhzZWxmKToKKyAgICAgICAgbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChtLmNsb3NlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5yZWFkLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLnJlYWQsIDUuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLnJlYWQsIFsxLCAyLCAzXSkKKwogICAgIGRlZiB0ZXN0X2V4dGVuZGVkX2dldHNsaWNlKHNlbGYpOgogICAgICAgICAjIFRlc3QgZXh0ZW5kZWQgc2xpY2luZyBieSBjb21wYXJpbmcgd2l0aCBsaXN0IHNsaWNpbmcuCiAgICAgICAgIHMgPSBieXRlcyhyZXZlcnNlZChyYW5nZSgyNTYpKSkKQEAgLTU0Myw4ICs1NzIsNyBAQAogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhtbWFwLmVycm9yLCBFbnZpcm9ubWVudEVycm9yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbigibW1hcC5lcnJvciIsIHN0cihtbWFwLmVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtbWFwLmVycm9yLCBPU0Vycm9yKQogCiAgICAgZGVmIHRlc3RfaW9fbWV0aG9kcyhzZWxmKToKICAgICAgICAgZGF0YSA9IGIiMDEyMzQ1Njc4OSIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKaW5kZXggMTU4MzZjYS4uZTVhMjUyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKQEAgLTUsNiArNSwxNSBAQAogaW1wb3J0IHN5cwogTW9kdWxlVHlwZSA9IHR5cGUoc3lzKQogCitjbGFzcyBGdWxsTG9hZGVyOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG0pOgorICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAoY3JhZnRlZCk+Ii5mb3JtYXQobS5fX25hbWVfXykKKworY2xhc3MgQmFyZUxvYWRlcjoKKyAgICBwYXNzCisKKwogY2xhc3MgTW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3VuaW5pdGlhbGl6ZWQoc2VsZik6CiAgICAgICAgICMgQW4gdW5pbml0aWFsaXplZCBtb2R1bGUgaGFzIG5vIF9fZGljdF9fIG9yIF9fbmFtZV9fLApAQCAtNzAsMTYgKzc5LDEwMCBAQAogICAgICAgICBtID0gTW9kdWxlVHlwZSgiZm9vIikKICAgICAgICAgbS5kZXN0cm95ZWQgPSBkZXN0cm95ZWQKICAgICAgICAgcyA9ICIiImNsYXNzIEE6Ci0gICAgZGVmIF9fZGVsX18oc2VsZiwgZGVzdHJveWVkPWRlc3Ryb3llZCk6Ci0gICAgICAgIGRlc3Ryb3llZC5hcHBlbmQoMSkKLWEgPSBBKCkiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbCk6CisgICAgICAgIHNlbGYubCA9IGwKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5sLmFwcGVuZCgxKQorYSA9IEEoZGVzdHJveWVkKSIiIgogICAgICAgICBleGVjKHMsIG0uX19kaWN0X18pCiAgICAgICAgIGRlbCBtCiAgICAgICAgIGdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc3Ryb3llZCwgWzFdKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfbWluaW1hbChzZWxmKToKKyAgICAgICAgIyByZXBycyB3aGVuIG1vZHVsZXMgaGF2ZSBubyBfX2ZpbGVfXywgX19uYW1lX18sIG9yIF9fbG9hZGVyX18KKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIGRlbCBtLl9fbmFtZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJz8nPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX25hbWUoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX25hbWVfYW5kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgbS5fX2ZpbGVfXyA9ICcvdG1wL2Zvby5weScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnZm9vJyBmcm9tICcvdG1wL2Zvby5weSc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfZmlsZW5hbWVfb25seShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIGRlbCBtLl9fbmFtZV9fCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJz8nIGZyb20gJy90bXAvZm9vLnB5Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9iYXJlX2xvYWRlcl9idXRfbm9fbmFtZShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIGRlbCBtLl9fbmFtZV9fCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gQmFyZUxvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihtKSwgIjxtb2R1bGUgJz8nICg8Y2xhc3MgJ3Rlc3QudGVzdF9tb2R1bGUuQmFyZUxvYWRlcic+KT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcl9idXRfbm9fbmFtZShzZWxmKToKKyAgICAgICAgIyBtLl9fbG9hZGVyX18ubW9kdWxlX3JlcHIoKSB3aWxsIGZhaWwgYmVjYXVzZSB0aGUgbW9kdWxlIGhhcyBubworICAgICAgICAjIG0uX19uYW1lX18uICBUaGlzIGV4Y2VwdGlvbiB3aWxsIGdldCBzdXBwcmVzc2VkIGFuZCBpbnN0ZWFkIHRoZQorICAgICAgICAjIGxvYWRlcidzIHJlcHIgd2lsbCBiZSB1c2VkLgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBGdWxsTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnPycgKDxjbGFzcyAndGVzdC50ZXN0X21vZHVsZS5GdWxsTG9hZGVyJz4pPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnZm9vJyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkJhcmVMb2FkZXInPik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfZnVsbF9sb2FkZXIoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEZ1bGxMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICdmb28nIChjcmFmdGVkKT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9iYXJlX2xvYWRlcl9hbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgICMgQmVjYXVzZSB0aGUgbG9hZGVyIGhhcyBubyBtb2R1bGVfcmVwcigpLCB1c2UgdGhlIGZpbGUgbmFtZS4KKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gQmFyZUxvYWRlcgorICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nIGZyb20gJy90bXAvZm9vLnB5Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcl9hbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgICMgRXZlbiB0aG91Z2ggdGhlIG1vZHVsZSBoYXMgYW4gX19maWxlX18sIHVzZSBfX2xvYWRlcl9fLm1vZHVsZV9yZXByKCkKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gRnVsbExvYWRlcgorICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nIChjcmFmdGVkKT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfYnVpbHRpbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHN5cyksICI8bW9kdWxlICdzeXMnIChidWlsdC1pbik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3NvdXJjZShzZWxmKToKKyAgICAgICAgciA9IHJlcHIodW5pdHRlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocls6MjVdLCAiPG1vZHVsZSAndW5pdHRlc3QnIGZyb20gJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoclstMTM6XSwgIl9faW5pdF9fLnB5Jz4iKQorCisgICAgIyBmcm96ZW4gYW5kIG5hbWVzcGFjZSBtb2R1bGUgcmVwcnMgYXJlIHRlc3RlZCBpbiBpbXBvcnRsaWIuCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChNb2R1bGVUZXN0cykKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21vZHVsZWZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5CmluZGV4IGExODQyMTcuLmM1ZmMzMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5CkBAIC0xLDcgKzEsNyBAQAotaW1wb3J0IF9fZnV0dXJlX18KIGltcG9ydCBvcworaW1wb3J0IGVycm5vCitpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBkaXN0dXRpbHMuZGlyX3V0aWwKIGltcG9ydCB0ZW1wZmlsZQogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTksNyArOSw3IEBACiBpbXBvcnQgbW9kdWxlZmluZGVyCiAKIFRFU1RfRElSID0gdGVtcGZpbGUubWtkdGVtcCgpCi1URVNUX1BBVEggPSBbVEVTVF9ESVIsIG9zLnBhdGguZGlybmFtZShfX2Z1dHVyZV9fLl9fZmlsZV9fKV0KK1RFU1RfUEFUSCA9IFtURVNUX0RJUiwgb3MucGF0aC5kaXJuYW1lKHRlbXBmaWxlLl9fZmlsZV9fKV0KIAogIyBFYWNoIHRlc3QgZGVzY3JpcHRpb24gaXMgYSBsaXN0IG9mIDUgaXRlbXM6CiAjCkBAIC0xOTYsMTIgKzE5NiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIC4gaW1wb3J0IGJhcgogIiIiXQogCisKIGRlZiBvcGVuX2ZpbGUocGF0aCk6Ci0gICAgIyNwcmludCAiIyIsIG9zLnBhdGguYWJzcGF0aChwYXRoKQogICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUocGF0aCkKLSAgICBkaXN0dXRpbHMuZGlyX3V0aWwubWtwYXRoKGRpcm5hbWUpCisgICAgdHJ5OgorICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgorICAgICAgICAgICAgcmFpc2UKICAgICByZXR1cm4gb3BlbihwYXRoLCAidyIpCiAKKwogZGVmIGNyZWF0ZV9wYWNrYWdlKHNvdXJjZSk6CiAgICAgb2ZpID0gTm9uZQogICAgIHRyeToKQEAgLTIxNiw2ICsyMjEsNyBAQAogICAgICAgICBpZiBvZmk6CiAgICAgICAgICAgICBvZmkuY2xvc2UoKQogCisKIGNsYXNzIE1vZHVsZUZpbmRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBfZG9fdGVzdChzZWxmLCBpbmZvLCByZXBvcnQ9RmFsc2UpOgogICAgICAgICBpbXBvcnRfdGhpcywgbW9kdWxlcywgbWlzc2luZywgbWF5YmVfbWlzc2luZywgc291cmNlID0gaW5mbwpAQCAtMjM0LDE5ICsyNDAsMTcgQEAKICMjICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrOyB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICMjICAgICAgICAgICAgICAgIHN5cy5wYXRoID0gb3BhdGgKICMjICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgbW9kdWxlcyA9IHNldChtb2R1bGVzKQotICAgICAgICAgICAgZm91bmQgPSBzZXQobWYubW9kdWxlcy5rZXlzKCkpCi0gICAgICAgICAgICBtb3JlID0gbGlzdChmb3VuZCAtIG1vZHVsZXMpCi0gICAgICAgICAgICBsZXNzID0gbGlzdChtb2R1bGVzIC0gZm91bmQpCisgICAgICAgICAgICBtb2R1bGVzID0gc29ydGVkKHNldChtb2R1bGVzKSkKKyAgICAgICAgICAgIGZvdW5kID0gc29ydGVkKG1mLm1vZHVsZXMpCiAgICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGZvdW5kIHdoYXQgd2UgZXhwZWN0ZWQsIG5vdCBtb3JlLCBub3QgbGVzcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobW9yZSwgbGVzcyksIChbXSwgW10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZCwgbW9kdWxlcykKIAogICAgICAgICAgICAgIyBjaGVjayBmb3IgbWlzc2luZyBhbmQgbWF5YmUgbWlzc2luZyBtb2R1bGVzCiAgICAgICAgICAgICBiYWQsIG1heWJlID0gbWYuYW55X21pc3NpbmdfbWF5YmUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYWQsIG1pc3NpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heWJlLCBtYXliZV9taXNzaW5nKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZGlzdHV0aWxzLmRpcl91dGlsLnJlbW92ZV90cmVlKFRFU1RfRElSKQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNUX0RJUikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIHNlbGYuX2RvX3Rlc3QocGFja2FnZV90ZXN0KQpAQCAtMjU0LDI1ICsyNTgsMjMgQEAKICAgICBkZWYgdGVzdF9tYXliZShzZWxmKToKICAgICAgICAgc2VsZi5fZG9fdGVzdChtYXliZV90ZXN0KQogCi0gICAgaWYgZ2V0YXR0cihfX2Z1dHVyZV9fLCAiYWJzb2x1dGVfaW1wb3J0IiwgTm9uZSk6CisgICAgZGVmIHRlc3RfbWF5YmVfbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KG1heWJlX3Rlc3RfbmV3KQogCi0gICAgICAgIGRlZiB0ZXN0X21heWJlX25ldyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QobWF5YmVfdGVzdF9uZXcpCisgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChhYnNvbHV0ZV9pbXBvcnRfdGVzdCkKIAotICAgICAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChhYnNvbHV0ZV9pbXBvcnRfdGVzdCkKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0KQogCi0gICAgICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0KQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMihzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8yKQogCi0gICAgICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMihzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMikKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzXzMoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMykKIAotICAgICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzXzMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0XzMpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBkaXN0dXRpbHMubG9nLnNldF90aHJlc2hvbGQoZGlzdHV0aWxzLmxvZy5XQVJOKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1vZHVsZUZpbmRlclRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQppbmRleCA4NmM2OGRjLi5mZWI3YmQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKQEAgLTI0NywyMCArMjQ3LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFueSh4ID4gMHg4MCBmb3IgeCBpbiBlKSkKIAogICAgIGRlZiB0ZXN0X2J1ZzE1NzI4MzIoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID49IDB4MTAwMDA6Ci0gICAgICAgICAgICBteXVuaWNociA9IGNocgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXl1bmljaHIgPSBsYW1iZGEgeDogY2hyKDB4RDdDMCsoeD4+MTApKSArIGNocigweERDMDArKHgmMHgzRkYpKQotCiAgICAgICAgIGZvciB4IGluIHJhbmdlKDB4MTAwMDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgICMgQW55IElTTyAyMDIyIGNvZGVjIHdpbGwgY2F1c2UgdGhlIHNlZ2ZhdWx0Ci0gICAgICAgICAgICBteXVuaWNocih4KS5lbmNvZGUoJ2lzb18yMDIyX2pwJywgJ2lnbm9yZScpCisgICAgICAgICAgICBjaHIoeCkuZW5jb2RlKCdpc29fMjAyMl9qcCcsICdpZ25vcmUnKQogCiBjbGFzcyBUZXN0U3RhdGVmdWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHRleHQgPSAnXHU0RTE2XHU0RTE2JwogICAgIGVuY29kaW5nID0gJ2lzby0yMDIyLWpwJwogICAgIGV4cGVjdGVkID0gYidceDFiJEJAJEAkJwotICAgIGV4cGVjdGVkX3Jlc2V0ID0gYidceDFiJEJAJEAkXHgxYihCJworICAgIHJlc2V0ID0gYidceDFiKEInCisgICAgZXhwZWN0ZWRfcmVzZXQgPSBleHBlY3RlZCArIHJlc2V0CiAKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0LmVuY29kZShzZWxmLmVuY29kaW5nKSwgc2VsZi5leHBlY3RlZF9yZXNldCkKQEAgLTI3MSw2ICsyNjcsOCBAQAogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoY2hhcikKICAgICAgICAgICAgIGZvciBjaGFyIGluIHNlbGYudGV4dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHNlbGYuZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBzZWxmLnJlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIuZW5jb2RlKCcnLCBmaW5hbD1UcnVlKSwgYicnKQogCiAgICAgZGVmIHRlc3RfaW5jcmVtZW50YWxlbmNvZGVyX2ZpbmFsKHNlbGYpOgogICAgICAgICBlbmNvZGVyID0gY29kZWNzLmdldGluY3JlbWVudGFsZW5jb2RlcihzZWxmLmVuY29kaW5nKSgpCkBAIC0yNzksMTIgKzI3NywxNCBAQAogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoY2hhciwgaW5kZXggPT0gbGFzdF9pbmRleCkKICAgICAgICAgICAgIGZvciBpbmRleCwgY2hhciBpbiBlbnVtZXJhdGUoc2VsZi50ZXh0KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHNlbGYuZXhwZWN0ZWRfcmVzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBiJycpCiAKIGNsYXNzIFRlc3RIWlN0YXRlZnVsKFRlc3RTdGF0ZWZ1bCk6CiAgICAgdGV4dCA9ICdcdTgwNGFcdTgwNGEnCiAgICAgZW5jb2RpbmcgPSAnaHonCiAgICAgZXhwZWN0ZWQgPSBiJ357QURBRCcKLSAgICBleHBlY3RlZF9yZXNldCA9IGInfntBREFEfn0nCisgICAgcmVzZXQgPSBiJ359JworICAgIGV4cGVjdGVkX3Jlc2V0ID0gZXhwZWN0ZWQgKyByZXNldAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IGFiNmQzNmEuLmIyYTk2NGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CkBAIC04LDYgKzgsNyBAQAogaW1wb3J0IHF1ZXVlIGFzIHB5cXVldWUKIGltcG9ydCB0aW1lCiBpbXBvcnQgaW8KK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGdjCkBAIC0xNyw2ICsxOCw3IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IHN0cnVjdAogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHRlc3Quc2NyaXB0X2hlbHBlcgogCkBAIC04NCw2ICs4NiwxMyBAQAogCiBXSU4zMiA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorCitkZWYgd2FpdF9mb3JfaGFuZGxlKGhhbmRsZSwgdGltZW91dCk6CisgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgdGltZW91dCA8IDAuMDoKKyAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICByZXR1cm4gd2FpdChbaGFuZGxlXSwgdGltZW91dCkKKwogdHJ5OgogICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQogZXhjZXB0OgpAQCAtMTk3LDYgKzIwNiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJlbnQuaWRlbnQsIG9zLmdldHBpZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJlbnQuZXhpdGNvZGUsIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9kYWVtb25fYXJndW1lbnQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAidGhyZWFkcyI6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEJ5IGRlZmF1bHQgdXNlcyB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZGFlbW9uIGZsYWcuCisgICAgICAgIHByb2MwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2MwLmRhZW1vbiwgc2VsZi5jdXJyZW50X3Byb2Nlc3MoKS5kYWVtb24pCisgICAgICAgIHByb2MxID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0LCBkYWVtb249VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2MxLmRhZW1vbikKKyAgICAgICAgcHJvYzIgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3QsIGRhZW1vbj1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jMi5kYWVtb24pCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3Rlc3QoY2xzLCBxLCAqYXJncywgKiprd2RzKToKICAgICAgICAgY3VycmVudCA9IGNscy5jdXJyZW50X3Byb2Nlc3MoKQpAQCAtMjYyLDkgKzI4MywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHAsIHNlbGYuYWN0aXZlX2NoaWxkcmVuKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leGl0Y29kZSwgTm9uZSkKIAorICAgICAgICBqb2luID0gVGltaW5nV3JhcHBlcihwLmpvaW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqb2luKDApLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuaXNfYWxpdmUoKSwgVHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oLTEpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuaXNfYWxpdmUoKSwgVHJ1ZSkKKwogICAgICAgICBwLnRlcm1pbmF0ZSgpCiAKLSAgICAgICAgam9pbiA9IFRpbWluZ1dyYXBwZXIocC5qb2luKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChqb2luLmVsYXBzZWQsIDAuMCkKIApAQCAtMzI5LDYgKzM1OSwyNiBAQAogICAgICAgICAgICAgXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfc2VudGluZWwoY2xzLCBldmVudCk6CisgICAgICAgIGV2ZW50LndhaXQoMTAuMCkKKworICAgIGRlZiB0ZXN0X3NlbnRpbmVsKHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gInRocmVhZHMiOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV2ZW50ID0gc2VsZi5FdmVudCgpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfc2VudGluZWwsIGFyZ3M9KGV2ZW50LCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBwLnNlbnRpbmVsCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5qb2luKQorICAgICAgICBzZW50aW5lbCA9IHAuc2VudGluZWwKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbnRpbmVsLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod2FpdF9mb3JfaGFuZGxlKHNlbnRpbmVsLCB0aW1lb3V0PTAuMCkpCisgICAgICAgIGV2ZW50LnNldCgpCisgICAgICAgIHAuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YWl0X2Zvcl9oYW5kbGUoc2VudGluZWwsIHRpbWVvdXQ9REVMVEEpKQorCiAjCiAjCiAjCkBAIC04NjgsNiArOTE4LDEwNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwod2FpdC5lbGFwc2VkLCBUSU1FT1VUMSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0Zm9yX2YoY2xzLCBjb25kLCBzdGF0ZSk6CisgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgIHN0YXRlLnZhbHVlID0gMAorICAgICAgICAgICAgY29uZC5ub3RpZnkoKQorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09NCkKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHQgb3Igc3RhdGUudmFsdWUgIT0gNDoKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1NIQVJFRENUWVBFUywgJ25lZWRzIHNoYXJlZGN0eXBlcycpCisgICAgZGVmIHRlc3Rfd2FpdGZvcihzZWxmKToKKyAgICAgICAgIyBiYXNlZCBvbiB0ZXN0IGluIHRlc3QvbG9ja190ZXN0cy5weQorICAgICAgICBjb25kID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICBzdGF0ZSA9IHNlbGYuVmFsdWUoJ2knLCAtMSkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3dhaXRmb3JfZiwgYXJncz0oY29uZCwgc3RhdGUpKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlLnZhbHVlLCAwKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQorICAgICAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgICAgIHN0YXRlLnZhbHVlICs9IDEKKyAgICAgICAgICAgICAgICBjb25kLm5vdGlmeSgpCisKKyAgICAgICAgcC5qb2luKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5pc19hbGl2ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhpdGNvZGUsIDApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdGZvcl90aW1lb3V0X2YoY2xzLCBjb25kLCBzdGF0ZSwgc3VjY2Vzcywgc2VtKToKKyAgICAgICAgc2VtLnJlbGVhc2UoKQorICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICBleHBlY3RlZCA9IDAuMQorICAgICAgICAgICAgZHQgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09NCwgdGltZW91dD1leHBlY3RlZCkKKyAgICAgICAgICAgIGR0ID0gdGltZS50aW1lKCkgLSBkdAorICAgICAgICAgICAgIyBib3Jyb3cgbG9naWMgaW4gYXNzZXJ0VGltZW91dCgpIGZyb20gdGVzdC9sb2NrX3Rlc3RzLnB5CisgICAgICAgICAgICBpZiBub3QgcmVzdWx0IGFuZCBleHBlY3RlZCAqIDAuNiA8IGR0IDwgZXhwZWN0ZWQgKiAxMC4wOgorICAgICAgICAgICAgICAgIHN1Y2Nlc3MudmFsdWUgPSBUcnVlCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfU0hBUkVEQ1RZUEVTLCAnbmVlZHMgc2hhcmVkY3R5cGVzJykKKyAgICBkZWYgdGVzdF93YWl0Zm9yX3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgYmFzZWQgb24gdGVzdCBpbiB0ZXN0L2xvY2tfdGVzdHMucHkKKyAgICAgICAgY29uZCA9IHNlbGYuQ29uZGl0aW9uKCkKKyAgICAgICAgc3RhdGUgPSBzZWxmLlZhbHVlKCdpJywgMCkKKyAgICAgICAgc3VjY2VzcyA9IHNlbGYuVmFsdWUoJ2knLCBGYWxzZSkKKyAgICAgICAgc2VtID0gc2VsZi5TZW1hcGhvcmUoMCkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3dhaXRmb3JfdGltZW91dF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KGNvbmQsIHN0YXRlLCBzdWNjZXNzLCBzZW0pKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW0uYWNxdWlyZSh0aW1lb3V0PTEwKSkKKworICAgICAgICAjIE9ubHkgaW5jcmVtZW50IDMgdGltZXMsIHNvIHN0YXRlID09IDQgaXMgbmV2ZXIgcmVhY2hlZC4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisgICAgICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICAgICAgc3RhdGUudmFsdWUgKz0gMQorICAgICAgICAgICAgICAgIGNvbmQubm90aWZ5KCkKKworICAgICAgICBwLmpvaW4oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1Y2Nlc3MudmFsdWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdF9yZXN1bHQoY2xzLCBjLCBwaWQpOgorICAgICAgICB3aXRoIGM6CisgICAgICAgICAgICBjLm5vdGlmeSgpCisgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgaWYgcGlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdJTlQpCisKKyAgICBkZWYgdGVzdF93YWl0X3Jlc3VsdChzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCBQcm9jZXNzZXNNaXhpbikgYW5kIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBpZCA9IE5vbmUKKworICAgICAgICBjID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICB3aXRoIGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMud2FpdCgwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy53YWl0KDAuMSkpCisKKyAgICAgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfd2FpdF9yZXN1bHQsIGFyZ3M9KGMsIHBpZCkpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMud2FpdCgxMCkpCisgICAgICAgICAgICBpZiBwaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIGMud2FpdCwgMTApCisKKyAgICAgICAgICAgIHAuam9pbigpCisKIAogY2xhc3MgX1Rlc3RFdmVudChCYXNlVGVzdENhc2UpOgogCkBAIC05MTEsNiArMTA1OSwzNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3YWl0KCksIFRydWUpCiAKICMKKyMgVGVzdHMgZm9yIEJhcnJpZXIgLSBhZGFwdGVkIGZyb20gdGVzdHMgaW4gdGVzdC9sb2NrX3Rlc3RzLnB5CisjCisKKyMgTWFueSBvZiB0aGUgdGVzdHMgZm9yIHRocmVhZGluZy5CYXJyaWVyIHVzZSBhIGxpc3QgYXMgYW4gYXRvbWljCisjIGNvdW50ZXI6IGEgdmFsdWUgaXMgYXBwZW5kZWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLCBhbmQgdGhlCisjIGxlbmd0aCBvZiB0aGUgbGlzdCBnaXZlcyB0aGUgdmFsdWUuICBXZSB1c2UgdGhlIGNsYXNzIER1bW15TGlzdAorIyBmb3IgdGhlIHNhbWUgcHVycG9zZS4KKworY2xhc3MgX0R1bW15TGlzdChvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICB3cmFwcGVyID0gbXVsdGlwcm9jZXNzaW5nLmhlYXAuQnVmZmVyV3JhcHBlcihzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKKyAgICAgICAgbG9jayA9IG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fX3NldHN0YXRlX18oKHdyYXBwZXIsIGxvY2spKQorICAgICAgICBzZWxmLl9sZW5ndGhidWZbMF0gPSAwCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgKHNlbGYuX3dyYXBwZXIsIHNlbGYuX2xvY2spID0gc3RhdGUKKyAgICAgICAgc2VsZi5fbGVuZ3RoYnVmID0gc2VsZi5fd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpLmNhc3QoJ2knKQorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl93cmFwcGVyLCBzZWxmLl9sb2NrKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBfKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fbGVuZ3RoYnVmWzBdICs9IDEKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbGVuZ3RoYnVmWzBdCisKK2RlZiBfd2FpdCgpOgorICAgICMgQSBjcnVkZSB3YWl0L3lpZWxkIGZ1bmN0aW9uIG5vdCByZWx5aW5nIG9uIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgorICAgIHRpbWUuc2xlZXAoMC4wMSkKKworCitjbGFzcyBCdW5jaChvYmplY3QpOgorICAgICIiIgorICAgIEEgYnVuY2ggb2YgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlLCBmLCBhcmdzLCBuLCB3YWl0X2JlZm9yZV9leGl0PUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnN0cnVjdCBhIGJ1bmNoIG9mIGBuYCB0aHJlYWRzIHJ1bm5pbmcgdGhlIHNhbWUgZnVuY3Rpb24gYGZgLgorICAgICAgICBJZiBgd2FpdF9iZWZvcmVfZXhpdGAgaXMgVHJ1ZSwgdGhlIHRocmVhZHMgd29uJ3QgdGVybWluYXRlIHVudGlsCisgICAgICAgIGRvX2ZpbmlzaCgpIGlzIGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZiA9IGYKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLm4gPSBuCisgICAgICAgIHNlbGYuc3RhcnRlZCA9IG5hbWVzcGFjZS5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLmZpbmlzaGVkID0gbmFtZXNwYWNlLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYuX2Nhbl9leGl0ID0gbmFtZXNwYWNlLkV2ZW50KCkKKyAgICAgICAgaWYgbm90IHdhaXRfYmVmb3JlX2V4aXQ6CisgICAgICAgICAgICBzZWxmLl9jYW5fZXhpdC5zZXQoKQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIHAgPSBuYW1lc3BhY2UuUHJvY2Vzcyh0YXJnZXQ9c2VsZi50YXNrKQorICAgICAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgIGRlZiB0YXNrKHNlbGYpOgorICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgICAgICBzZWxmLnN0YXJ0ZWQuYXBwZW5kKHBpZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5mKCpzZWxmLmFyZ3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmZpbmlzaGVkLmFwcGVuZChwaWQpCisgICAgICAgICAgICBzZWxmLl9jYW5fZXhpdC53YWl0KDMwKQorICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2Nhbl9leGl0LmlzX3NldCgpCisKKyAgICBkZWYgd2FpdF9mb3Jfc3RhcnRlZChzZWxmKToKKyAgICAgICAgd2hpbGUgbGVuKHNlbGYuc3RhcnRlZCkgPCBzZWxmLm46CisgICAgICAgICAgICBfd2FpdCgpCisKKyAgICBkZWYgd2FpdF9mb3JfZmluaXNoZWQoc2VsZik6CisgICAgICAgIHdoaWxlIGxlbihzZWxmLmZpbmlzaGVkKSA8IHNlbGYubjoKKyAgICAgICAgICAgIF93YWl0KCkKKworICAgIGRlZiBkb19maW5pc2goc2VsZik6CisgICAgICAgIHNlbGYuX2Nhbl9leGl0LnNldCgpCisKKworY2xhc3MgQXBwZW5kVHJ1ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLm9iaiA9IG9iagorICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5vYmouYXBwZW5kKFRydWUpCisKKworY2xhc3MgX1Rlc3RCYXJyaWVyKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdHMgZm9yIEJhcnJpZXIgb2JqZWN0cy4KKyAgICAiIiIKKyAgICBOID0gNQorICAgIGRlZmF1bHRUaW1lb3V0ID0gMzAuMCAgIyBYWFggU2xvdyBXaW5kb3dzIGJ1aWxkYm90cyBuZWVkIGdlbmVyb3VzIHRpbWVvdXQKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5iYXJyaWVyID0gc2VsZi5CYXJyaWVyKHNlbGYuTiwgdGltZW91dD1zZWxmLmRlZmF1bHRUaW1lb3V0KQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmJhcnJpZXIuYWJvcnQoKQorICAgICAgICBzZWxmLmJhcnJpZXIgPSBOb25lCisKKyAgICBkZWYgRHVtbXlMaXN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3RocmVhZHMnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGVsaWYgc2VsZi5UWVBFID09ICdtYW5hZ2VyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm1hbmFnZXIubGlzdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gX0R1bW15TGlzdCgpCisKKyAgICBkZWYgcnVuX3RocmVhZHMoc2VsZiwgZiwgYXJncyk6CisgICAgICAgIGIgPSBCdW5jaChzZWxmLCBmLCBhcmdzLCBzZWxmLk4tMSkKKyAgICAgICAgZigqYXJncykKKyAgICAgICAgYi53YWl0X2Zvcl9maW5pc2hlZCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbXVsdGlwYXNzKGNscywgYmFycmllciwgcmVzdWx0cywgbik6CisgICAgICAgIG0gPSBiYXJyaWVyLnBhcnRpZXMKKyAgICAgICAgYXNzZXJ0IG0gPT0gY2xzLk4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICByZXN1bHRzWzBdLmFwcGVuZChUcnVlKQorICAgICAgICAgICAgYXNzZXJ0IGxlbihyZXN1bHRzWzFdKSA9PSBpICogbQorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJlc3VsdHNbMV0uYXBwZW5kKFRydWUpCisgICAgICAgICAgICBhc3NlcnQgbGVuKHJlc3VsdHNbMF0pID09IChpICsgMSkgKiBtCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBhc3NlcnQgYmFycmllci5uX3dhaXRpbmcgPT0gMAorICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYXNzZXJ0IG5vdCBiYXJyaWVyLmJyb2tlbgorCisgICAgZGVmIHRlc3RfYmFycmllcihzZWxmLCBwYXNzZXM9MSk6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYSBiYXJyaWVyIGlzIHBhc3NlZCBpbiBsb2Nrc3RlcAorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IFtzZWxmLkR1bW15TGlzdCgpLCBzZWxmLkR1bW15TGlzdCgpXQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYubXVsdGlwYXNzLCAoc2VsZi5iYXJyaWVyLCByZXN1bHRzLCBwYXNzZXMpKQorCisgICAgZGVmIHRlc3RfYmFycmllcl8xMChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgd29ya3MgZm9yIDEwIGNvbnNlY3V0aXZlIHJ1bnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLnRlc3RfYmFycmllcigxMCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0X3JldHVybl9mKGNscywgYmFycmllciwgcXVldWUpOgorICAgICAgICByZXMgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBxdWV1ZS5wdXQocmVzKQorCisgICAgZGVmIHRlc3Rfd2FpdF9yZXR1cm4oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICB0ZXN0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiYXJyaWVyLndhaXQKKyAgICAgICAgIiIiCisgICAgICAgIHF1ZXVlID0gc2VsZi5RdWV1ZSgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF93YWl0X3JldHVybl9mLCAoc2VsZi5iYXJyaWVyLCBxdWV1ZSkpCisgICAgICAgIHJlc3VsdHMgPSBbcXVldWUuZ2V0KCkgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5OKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KDApLCAxKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2FjdGlvbl9mKGNscywgYmFycmllciwgcmVzdWx0cyk6CisgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIGlmIGxlbihyZXN1bHRzKSAhPSAxOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICBkZWYgdGVzdF9hY3Rpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoZSAnYWN0aW9uJyBjYWxsYmFjaworICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgYmFycmllciA9IHNlbGYuQmFycmllcihzZWxmLk4sIGFjdGlvbj1BcHBlbmRUcnVlKHJlc3VsdHMpKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWN0aW9uX2YsIChiYXJyaWVyLCByZXN1bHRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfYWJvcnRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICByZXN1bHRzMS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIGJhcnJpZXIuYWJvcnQoKQorCisgICAgZGVmIHRlc3RfYWJvcnQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYW4gYWJvcnQgd2lsbCBwdXQgdGhlIGJhcnJpZXIgaW4gYSBicm9rZW4gc3RhdGUKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X2Fib3J0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czEpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMiksIHNlbGYuTi0xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iYXJyaWVyLmJyb2tlbikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9yZXNldF9mKGNscywgYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMyk6CisgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgIyBXYWl0IHVudGlsIHRoZSBvdGhlciB0aHJlYWRzIGFyZSBhbGwgaW4gdGhlIGJhcnJpZXIuCisgICAgICAgICAgICB3aGlsZSBiYXJyaWVyLm5fd2FpdGluZyA8IGNscy5OLTE6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKKyAgICAgICAgICAgIGJhcnJpZXIucmVzZXQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKFRydWUpCisgICAgICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgIyBOb3csIHBhc3MgdGhlIGJhcnJpZXIgYWdhaW4KKyAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgcmVzdWx0czMuYXBwZW5kKFRydWUpCisKKyAgICBkZWYgdGVzdF9yZXNldChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhICdyZXNldCcgb24gYSBiYXJyaWVyIGZyZWVzIHRoZSB3YWl0aW5nIHRocmVhZHMKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9yZXNldF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMzKSwgc2VsZi5OKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2Fib3J0X2FuZF9yZXNldF9mKGNscywgYmFycmllciwgYmFycmllcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0czIuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBiYXJyaWVyLmFib3J0KCkKKyAgICAgICAgIyBTeW5jaHJvbml6ZSBhbmQgcmVzZXQgdGhlIGJhcnJpZXIuICBNdXN0IHN5bmNocm9uaXplIGZpcnN0IHNvCisgICAgICAgICMgdGhhdCBldmVyeW9uZSBoYXMgbGVmdCBpdCB3aGVuIHdlIHJlc2V0LCBhbmQgYWZ0ZXIgc28gdGhhdCBubworICAgICAgICAjIG9uZSBlbnRlcnMgaXQgYmVmb3JlIHRoZSByZXNldC4KKyAgICAgICAgaWYgYmFycmllcjIud2FpdCgpID09IGNscy5OLy8yOgorICAgICAgICAgICAgYmFycmllci5yZXNldCgpCisgICAgICAgIGJhcnJpZXIyLndhaXQoKQorICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICByZXN1bHRzMy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0X2FuZF9yZXNldChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgY2FuIGJlIHJlc2V0IGFmdGVyIGJlaW5nIGJyb2tlbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIGJhcnJpZXIyID0gc2VsZi5CYXJyaWVyKHNlbGYuTikKKworICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWJvcnRfYW5kX3Jlc2V0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgYmFycmllcjIsIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMzKSwgc2VsZi5OKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3RpbWVvdXRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMpOgorICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICMgT25lIHRocmVhZCBpcyBsYXRlIQorICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgwLjUpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHdhaXQodGltZW91dCkKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF90aW1lb3V0X2YsIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgc2VsZi5iYXJyaWVyLnBhcnRpZXMpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfZGVmYXVsdF90aW1lb3V0X2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzKToKKyAgICAgICAgaSA9IGJhcnJpZXIud2FpdChjbHMuZGVmYXVsdFRpbWVvdXQpCisgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAjIE9uZSB0aHJlYWQgaXMgbGF0ZXIgdGhhbiB0aGUgZGVmYXVsdCB0aW1lb3V0CisgICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF90aW1lb3V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGUgYmFycmllcidzIGRlZmF1bHQgdGltZW91dAorICAgICAgICAiIiIKKyAgICAgICAgYmFycmllciA9IHNlbGYuQmFycmllcihzZWxmLk4sIHRpbWVvdXQ9MC41KQorICAgICAgICByZXN1bHRzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfZGVmYXVsdF90aW1lb3V0X2YsIChiYXJyaWVyLCByZXN1bHRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIGJhcnJpZXIucGFydGllcykKKworICAgIGRlZiB0ZXN0X3NpbmdsZV90aHJlYWQoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLkJhcnJpZXIoMSkKKyAgICAgICAgYi53YWl0KCkKKyAgICAgICAgYi53YWl0KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF90aG91c2FuZF9mKGNscywgYmFycmllciwgcGFzc2VzLCBjb25uLCBsb2NrKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFzc2VzKToKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICAgICAgY29ubi5zZW5kKGkpCisKKyAgICBkZWYgdGVzdF90aG91c2FuZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICdtYW5hZ2VyJzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXNzZXMgPSAxMDAwCisgICAgICAgIGxvY2sgPSBzZWxmLkxvY2soKQorICAgICAgICBjb25uLCBjaGlsZF9jb25uID0gc2VsZi5QaXBlKEZhbHNlKQorICAgICAgICBmb3IgaiBpbiByYW5nZShzZWxmLk4pOgorICAgICAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF90aG91c2FuZF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5iYXJyaWVyLCBwYXNzZXMsIGNoaWxkX2Nvbm4sIGxvY2spKQorICAgICAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFzc2VzKToKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKHNlbGYuTik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnJlY3YoKSwgaSkKKworIwogIwogIwogCkBAIC0xMTMwLDYgKzE2MTIsOSBAQAogICAgIHRpbWUuc2xlZXAod2FpdCkKICAgICByZXR1cm4geCp4CiAKK2RlZiBtdWwoeCwgeSk6CisgICAgcmV0dXJuIHgqeQorCiBjbGFzcyBfVGVzdFBvb2woQmFzZVRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2FwcGx5KHNlbGYpOgpAQCAtMTE0Myw2ICsxNjI4LDM3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG1hcChzcXIsIGxpc3QocmFuZ2UoMTAwKSksIGNodW5rc2l6ZT0yMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChtYXAoc3FyLCBsaXN0KHJhbmdlKDEwMCkpKSkpCiAKKyAgICBkZWYgdGVzdF9zdGFybWFwKHNlbGYpOgorICAgICAgICBwc21hcCA9IHNlbGYucG9vbC5zdGFybWFwCisgICAgICAgIHR1cGxlcyA9IGxpc3QoemlwKHJhbmdlKDEwKSwgcmFuZ2UoOSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwc21hcChtdWwsIHR1cGxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpdGVydG9vbHMuc3Rhcm1hcChtdWwsIHR1cGxlcykpKQorICAgICAgICB0dXBsZXMgPSBsaXN0KHppcChyYW5nZSgxMDApLCByYW5nZSg5OSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwc21hcChtdWwsIHR1cGxlcywgY2h1bmtzaXplPTIwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKG11bCwgdHVwbGVzKSkpCisKKyAgICBkZWYgdGVzdF9zdGFybWFwX2FzeW5jKHNlbGYpOgorICAgICAgICB0dXBsZXMgPSBsaXN0KHppcChyYW5nZSgxMDApLCByYW5nZSg5OSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBvb2wuc3Rhcm1hcF9hc3luYyhtdWwsIHR1cGxlcykuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpdGVydG9vbHMuc3Rhcm1hcChtdWwsIHR1cGxlcykpKQorCisgICAgZGVmIHRlc3RfbWFwX2FzeW5jKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucG9vbC5tYXBfYXN5bmMoc3FyLCBsaXN0KHJhbmdlKDEwKSkpLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QobWFwKHNxciwgbGlzdChyYW5nZSgxMCkpKSkpCisKKyAgICBkZWYgdGVzdF9tYXBfYXN5bmNfY2FsbGJhY2tzKHNlbGYpOgorICAgICAgICBjYWxsX2FyZ3MgPSBzZWxmLm1hbmFnZXIubGlzdCgpIGlmIHNlbGYuVFlQRSA9PSAnbWFuYWdlcicgZWxzZSBbXQorICAgICAgICBzZWxmLnBvb2wubWFwX2FzeW5jKGludCwgWycxJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s9Y2FsbF9hcmdzLmFwcGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1jYWxsX2FyZ3MuYXBwZW5kKS53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oY2FsbF9hcmdzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbMV0sIGNhbGxfYXJnc1swXSkKKyAgICAgICAgc2VsZi5wb29sLm1hcF9hc3luYyhpbnQsIFsnYSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPWNhbGxfYXJncy5hcHBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Y2FsbF9hcmdzLmFwcGVuZCkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNhbGxfYXJncykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYWxsX2FyZ3NbMV0sIFZhbHVlRXJyb3IpCisKICAgICBkZWYgdGVzdF9tYXBfY2h1bmtzaXplKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnBvb2wubWFwX2FzeW5jKHNxciwgW10sIGNodW5rc2l6ZT0xKS5nZXQodGltZW91dD1USU1FT1VUMSkKQEAgLTEyMjEsNiArMTczNywxNiBAQAogICAgICAgICBwLmNsb3NlKCkKICAgICAgICAgcC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIEwgPSBsaXN0KHJhbmdlKDEwKSkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gW3NxcihpKSBmb3IgaSBpbiBMXQorICAgICAgICAgICAgd2l0aCBtdWx0aXByb2Nlc3NpbmcuUG9vbCgyKSBhcyBwOgorICAgICAgICAgICAgICAgIHIgPSBwLm1hcF9hc3luYyhzcXIsIEwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLmdldCgpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHByaW50KHAuX3N0YXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5tYXBfYXN5bmMsIHNxciwgTCkKKwogZGVmIHJhaXNpbmcoKToKICAgICByYWlzZSBLZXlFcnJvcigia2V5IikKIApAQCAtMTMyMiw2ICsxODQ4LDExIEBACiAgICAgIyBydW4gYWZ0ZXIgYWxsIHRoZSBvdGhlciB0ZXN0cyBmb3IgdGhlIG1hbmFnZXIuICBJdCB0ZXN0cyB0aGF0CiAgICAgIyB0aGVyZSBoYXZlIGJlZW4gbm8gInJlZmVyZW5jZSBsZWFrcyIgZm9yIHRoZSBtYW5hZ2VyJ3Mgc2hhcmVkCiAgICAgIyBvYmplY3RzLiAgTm90ZSB0aGUgY29tbWVudCBpbiBfVGVzdFBvb2wudGVzdF90ZXJtaW5hdGUoKS4KKworICAgICMgSWYgc29tZSBvdGhlciB0ZXN0IHVzaW5nIE1hbmFnZXJNaXhpbi5tYW5hZ2VyIGZhaWxzLCB0aGVuIHRoZQorICAgICMgcmFpc2VkIGV4Y2VwdGlvbiBtYXkga2VlcCBhbGl2ZSBhIGZyYW1lIHdoaWNoIGhvbGRzIGEgcmVmZXJlbmNlCisgICAgIyB0byBhIG1hbmFnZWQgb2JqZWN0LiAgVGhpcyB3aWxsIGNhdXNlIHRlc3RfbnVtYmVyX29mX29iamVjdHMgdG8KKyAgICAjIGFsc28gZmFpbC4KICAgICBBTExPV0VEX1RZUEVTID0gKCdtYW5hZ2VyJywpCiAKICAgICBkZWYgdGVzdF9udW1iZXJfb2Zfb2JqZWN0cyhzZWxmKToKQEAgLTEzNzYsNyArMTkwNywyNyBAQAogICAgIGRlZiB0ZXN0X215bWFuYWdlcihzZWxmKToKICAgICAgICAgbWFuYWdlciA9IE15TWFuYWdlcigpCiAgICAgICAgIG1hbmFnZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBtYW5hZ2VyLnNodXRkb3duKCkKIAorICAgICAgICAjIElmIHRoZSBtYW5hZ2VyIHByb2Nlc3MgZXhpdGVkIGNsZWFubHkgdGhlbiB0aGUgZXhpdGNvZGUKKyAgICAgICAgIyB3aWxsIGJlIHplcm8uICBPdGhlcndpc2UgKGFmdGVyIGEgc2hvcnQgdGltZW91dCkKKyAgICAgICAgIyB0ZXJtaW5hdGUoKSBpcyB1c2VkLCByZXN1bHRpbmcgaW4gYW4gZXhpdGNvZGUgb2YgLVNJR1RFUk0uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcHJvY2Vzcy5leGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X215bWFuYWdlcl9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIE15TWFuYWdlcigpIGFzIG1hbmFnZXI6CisgICAgICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3Byb2Nlc3MuZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9teW1hbmFnZXJfY29udGV4dF9wcmVzdGFydGVkKHNlbGYpOgorICAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKKyAgICAgICAgbWFuYWdlci5zdGFydCgpCisgICAgICAgIHdpdGggbWFuYWdlcjoKKyAgICAgICAgICAgIHNlbGYuY29tbW9uKG1hbmFnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcHJvY2Vzcy5leGl0Y29kZSwgMCkKKworICAgIGRlZiBjb21tb24oc2VsZiwgbWFuYWdlcik6CiAgICAgICAgIGZvbyA9IG1hbmFnZXIuRm9vKCkKICAgICAgICAgYmFyID0gbWFuYWdlci5CYXIoKQogICAgICAgICBiYXogPSBtYW5hZ2VyLmJheigpCkBAIC0xMzk5LDcgKzE5NTAsNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiYXopLCBbaSppIGZvciBpIGluIHJhbmdlKDEwKV0pCiAKLSAgICAgICAgbWFuYWdlci5zaHV0ZG93bigpCiAKICMKICMgVGVzdCBvZiBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHNlcnZlciBhbmQgdXNpbmcgeG1scnBjbGliIGZvciBzZXJpYWxpemF0aW9uCkBAIC0xNTcwLDYgKzIxMjAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwocG9sbC5lbGFwc2VkLCAwKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9sbCgtMSksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKHBvbGwuZWxhcHNlZCwgMCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoVElNRU9VVDEpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChwb2xsLmVsYXBzZWQsIFRJTUVPVVQxKQogCkBAIC0xNzU1LDYgKzIzMDgsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZWR1Y3Rpb24ucmVjdl9oYW5kbGUsIGNvbm4pCiAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKworICAgICAgICB3aXRoIGEsIGI6CisgICAgICAgICAgICBhLnNlbmQoMTcyOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZWN2KCksIDE3MjkpCisgICAgICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhLmNsb3NlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIuY2xvc2VkKQorCisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhLmNsb3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiLmNsb3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGEucmVjdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGIucmVjdikKKworY2xhc3MgX1Rlc3RMaXN0ZW5lcihCYXNlVGVzdENhc2UpOgorCisgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9iaW5kKHNlbGYpOgorICAgICAgICBmb3IgZmFtaWx5IGluIHNlbGYuY29ubmVjdGlvbi5mYW1pbGllczoKKyAgICAgICAgICAgIGwgPSBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbWlseSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsLmNsb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5hZGRyZXNzLCBmYW1pbHkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lcigpIGFzIGw6CisgICAgICAgICAgICB3aXRoIHNlbGYuY29ubmVjdGlvbi5DbGllbnQobC5hZGRyZXNzKSBhcyBjOgorICAgICAgICAgICAgICAgIHdpdGggbC5hY2NlcHQoKSBhcyBkOgorICAgICAgICAgICAgICAgICAgICBjLnNlbmQoMTcyOSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnJlY3YoKSwgMTcyOSkKKworICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBsLmFjY2VwdCkKKwogY2xhc3MgX1Rlc3RMaXN0ZW5lckNsaWVudChCYXNlVGVzdENhc2UpOgogCiAgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywgJ3RocmVhZHMnKQpAQCAtMTc5Miw1MiArMjM4MiwxMzUgQEAKICAgICAgICAgcC5qb2luKCkKICAgICAgICAgbC5jbG9zZSgpCiAKK2NsYXNzIF9UZXN0UG9sbCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBBTExPV0VEX1RZUEVTID0gKCdwcm9jZXNzZXMnLCAndGhyZWFkcycpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIGEsIGIgPSBzZWxmLlBpcGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgpLCBGYWxzZSkKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoKSwgVHJ1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfc3RyaW5ncyhjbHMsIGNvbm4sIHN0cmluZ3MpOgorICAgICAgICBmb3IgcyBpbiBzdHJpbmdzOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICBjb25uLnNlbmRfYnl0ZXMocykKKyAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9zdHJpbmdzKHNlbGYpOgorICAgICAgICBzdHJpbmdzID0gKGInaGVsbG8nLCBiJycsIGInYScsIGInYicsIGInJywgYidieWUnLCBiJycsIGInbG9wJykKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX3N0cmluZ3MsIGFyZ3M9KGIsIHN0cmluZ3MpKQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBmb3IgcyBpbiBzdHJpbmdzOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjAwKToKKyAgICAgICAgICAgICAgICBpZiBhLnBvbGwoMC4wMSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB4ID0gYS5yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgeCkKKworICAgICAgICBwLmpvaW4oKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF9ib3VuZGFyaWVzKGNscywgcik6CisgICAgICAgICMgUG9sbGluZyBtYXkgInB1bGwiIGEgbWVzc2FnZSBpbiB0byB0aGUgY2hpbGQgcHJvY2VzcywgYnV0IHdlCisgICAgICAgICMgZG9uJ3Qgd2FudCBpdCB0byBwdWxsIG9ubHkgcGFydCBvZiBhIG1lc3NhZ2UsIGFzIHRoYXQgd291bGQKKyAgICAgICAgIyBjb3JydXB0IHRoZSBwaXBlIGZvciBhbnkgb3RoZXIgcHJvY2Vzc2VzIHdoaWNoIG1pZ2h0IGxhdGVyCisgICAgICAgICMgcmVhZCBmcm9tIGl0LgorICAgICAgICByLnBvbGwoNSkKKworICAgIGRlZiB0ZXN0X2JvdW5kYXJpZXMoc2VsZik6CisgICAgICAgIHIsIHcgPSBzZWxmLlBpcGUoRmFsc2UpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX2JvdW5kYXJpZXMsIGFyZ3M9KHIsKSkKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHRpbWUuc2xlZXAoMikKKyAgICAgICAgTCA9IFtiImZpcnN0IiwgYiJzZWNvbmQiXQorICAgICAgICBmb3Igb2JqIGluIEw6CisgICAgICAgICAgICB3LnNlbmRfYnl0ZXMob2JqKQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgcC5qb2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyLnJlY3ZfYnl0ZXMoKSwgTCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfZG9udF9tZXJnZShjbHMsIGIpOgorICAgICAgICBiLnNlbmRfYnl0ZXMoYidhJykKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInYicpCisgICAgICAgIGIuc2VuZF9ieXRlcyhiJ2NkJykKKworICAgIGRlZiB0ZXN0X2RvbnRfbWVyZ2Uoc2VsZik6CisgICAgICAgIGEsIGIgPSBzZWxmLlBpcGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgwLjApLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMC4xKSwgRmFsc2UpCisKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfZG9udF9tZXJnZSwgYXJncz0oYiwpKQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucmVjdl9ieXRlcygpLCBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucmVjdl9ieXRlcygpLCBiJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgwLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucmVjdl9ieXRlcygpLCBiJ2NkJykKKworICAgICAgICBwLmpvaW4oKQorCiAjCiAjIFRlc3Qgb2Ygc2VuZGluZyBjb25uZWN0aW9uIGFuZCBzb2NrZXQgb2JqZWN0cyBiZXR3ZWVuIHByb2Nlc3NlcwogIwotIiIiCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBU19SRURVQ1RJT04sICJ0ZXN0IG5lZWRzIG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb24iKQogY2xhc3MgX1Rlc3RQaWNrbGluZ0Nvbm5lY3Rpb25zKEJhc2VUZXN0Q2FzZSk6CiAKICAgICBBTExPV0VEX1RZUEVTID0gKCdwcm9jZXNzZXMnLCkKIAotICAgIGRlZiBfbGlzdGVuZXIoc2VsZiwgY29ubiwgZmFtaWxpZXMpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnJlZHVjdGlvbiBpbXBvcnQgcmVzb3VyY2Vfc2hhcmVyCisgICAgICAgIHJlc291cmNlX3NoYXJlci5zdG9wKHRpbWVvdXQ9NSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbGlzdGVuZXIoY2xzLCBjb25uLCBmYW1pbGllcyk6CiAgICAgICAgIGZvciBmYW0gaW4gZmFtaWxpZXM6Ci0gICAgICAgICAgICBsID0gc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyKGZhbWlseT1mYW0pCisgICAgICAgICAgICBsID0gY2xzLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbSkKICAgICAgICAgICAgIGNvbm4uc2VuZChsLmFkZHJlc3MpCiAgICAgICAgICAgICBuZXdfY29ubiA9IGwuYWNjZXB0KCkKICAgICAgICAgICAgIGNvbm4uc2VuZChuZXdfY29ubikKKyAgICAgICAgICAgIG5ld19jb25uLmNsb3NlKCkKKyAgICAgICAgICAgIGwuY2xvc2UoKQogCi0gICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKLSAgICAgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgICAgIGwuYmluZCgoJ2xvY2FsaG9zdCcsIDApKQotICAgICAgICAgICAgY29ubi5zZW5kKGwuZ2V0c29ja25hbWUoKSkKLSAgICAgICAgICAgIGwubGlzdGVuKDEpCi0gICAgICAgICAgICBuZXdfY29ubiwgYWRkciA9IGwuYWNjZXB0KCkKLSAgICAgICAgICAgIGNvbm4uc2VuZChuZXdfY29ubikKKyAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBsLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAgICAgICAgbC5saXN0ZW4oMSkKKyAgICAgICAgY29ubi5zZW5kKGwuZ2V0c29ja25hbWUoKSkKKyAgICAgICAgbmV3X2Nvbm4sIGFkZHIgPSBsLmFjY2VwdCgpCisgICAgICAgIGNvbm4uc2VuZChuZXdfY29ubikKKyAgICAgICAgbmV3X2Nvbm4uY2xvc2UoKQorICAgICAgICBsLmNsb3NlKCkKIAogICAgICAgICBjb25uLnJlY3YoKQogCi0gICAgZGVmIF9yZW1vdGUoc2VsZiwgY29ubik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZW1vdGUoY2xzLCBjb25uKToKICAgICAgICAgZm9yIChhZGRyZXNzLCBtc2cpIGluIGl0ZXIoY29ubi5yZWN2LCBOb25lKToKLSAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY29ubmVjdGlvbi5DbGllbnQoYWRkcmVzcykKKyAgICAgICAgICAgIGNsaWVudCA9IGNscy5jb25uZWN0aW9uLkNsaWVudChhZGRyZXNzKQogICAgICAgICAgICAgY2xpZW50LnNlbmQobXNnLnVwcGVyKCkpCiAgICAgICAgICAgICBjbGllbnQuY2xvc2UoKQogCi0gICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKLSAgICAgICAgICAgIGFkZHJlc3MsIG1zZyA9IGNvbm4ucmVjdigpCi0gICAgICAgICAgICBjbGllbnQgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KGFkZHJlc3MpCi0gICAgICAgICAgICBjbGllbnQuc2VuZGFsbChtc2cudXBwZXIoKSkKLSAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpCisgICAgICAgIGFkZHJlc3MsIG1zZyA9IGNvbm4ucmVjdigpCisgICAgICAgIGNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBjbGllbnQuY29ubmVjdChhZGRyZXNzKQorICAgICAgICBjbGllbnQuc2VuZGFsbChtc2cudXBwZXIoKSkKKyAgICAgICAgY2xpZW50LmNsb3NlKCkKIAogICAgICAgICBjb25uLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3BpY2tsaW5nKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuYWxsb3dfY29ubmVjdGlvbl9waWNrbGluZygpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIGZhbWlsaWVzID0gc2VsZi5jb25uZWN0aW9uLmZhbWlsaWVzCiAKICAgICAgICAgbGNvbm4sIGxjb25uMCA9IHNlbGYuUGlwZSgpCkBAIC0xODYxLDE2ICsyNTM0LDE5IEBACiAKICAgICAgICAgcmNvbm4uc2VuZChOb25lKQogCi0gICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKLSAgICAgICAgICAgIG1zZyA9IGxhdGluKCdUaGlzIGNvbm5lY3Rpb24gdXNlcyBhIG5vcm1hbCBzb2NrZXQnKQotICAgICAgICAgICAgYWRkcmVzcyA9IGxjb25uLnJlY3YoKQotICAgICAgICAgICAgcmNvbm4uc2VuZCgoYWRkcmVzcywgbXNnKSkKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc29ja2V0LCAnZnJvbWZkJyk6Ci0gICAgICAgICAgICAgICAgbmV3X2Nvbm4gPSBsY29ubi5yZWN2KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jb25uLnJlY3YoMTAwKSwgbXNnLnVwcGVyKCkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgWFhYIE9uIFdpbmRvd3Mgd2l0aCBQeTIuNiBuZWVkIHRvIGJhY2twb3J0IGZyb21mZCgpCi0gICAgICAgICAgICAgICAgZGlzY2FyZCA9IGxjb25uLnJlY3ZfYnl0ZXMoKQorICAgICAgICBtc2cgPSBsYXRpbignVGhpcyBjb25uZWN0aW9uIHVzZXMgYSBub3JtYWwgc29ja2V0JykKKyAgICAgICAgYWRkcmVzcyA9IGxjb25uLnJlY3YoKQorICAgICAgICByY29ubi5zZW5kKChhZGRyZXNzLCBtc2cpKQorICAgICAgICBuZXdfY29ubiA9IGxjb25uLnJlY3YoKQorICAgICAgICBidWYgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgcyA9IG5ld19jb25uLnJlY3YoMTAwKQorICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQocykKKyAgICAgICAgYnVmID0gYicnLmpvaW4oYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgbXNnLnVwcGVyKCkpCisgICAgICAgIG5ld19jb25uLmNsb3NlKCkKIAogICAgICAgICBsY29ubi5zZW5kKE5vbmUpCiAKQEAgLTE4NzksNyArMjU1NSw0NiBAQAogCiAgICAgICAgIGxwLmpvaW4oKQogICAgICAgICBycC5qb2luKCkKLSIiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGNoaWxkX2FjY2VzcyhjbHMsIGNvbm4pOgorICAgICAgICB3ID0gY29ubi5yZWN2KCkKKyAgICAgICAgdy5zZW5kKCdhbGwgaXMgd2VsbCcpCisgICAgICAgIHcuY2xvc2UoKQorCisgICAgICAgIHIgPSBjb25uLnJlY3YoKQorICAgICAgICBtc2cgPSByLnJlY3YoKQorICAgICAgICBjb25uLnNlbmQobXNnKjIpCisKKyAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9hY2Nlc3Moc2VsZik6CisgICAgICAgICMgT24gV2luZG93cywgaWYgd2UgZG8gbm90IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBwaWQgd2hlbgorICAgICAgICAjIHVzaW5nIER1cEhhbmRsZSB0aGVuIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB0byB1c2UgdGhlCisgICAgICAgICMgY29ycmVjdCBhY2Nlc3MgZmxhZ3MgZm9yIER1cGxpY2F0ZUhhbmRsZSgpLCBvciBlbHNlCisgICAgICAgICMgRHVwSGFuZGxlLmRldGFjaCgpIHdpbGwgcmFpc2UgUGVybWlzc2lvbkVycm9yLiAgRm9yIGV4YW1wbGUsCisgICAgICAgICMgZm9yIGEgcmVhZCBvbmx5IHBpcGUgaGFuZGxlIHdlIHNob3VsZCB1c2UKKyAgICAgICAgIyBhY2Nlc3M9RklMRV9HRU5FUklDX1JFQUQuICAoVW5mb3J0dW5hdGVseQorICAgICAgICAjIERVUExJQ0FURV9TQU1FX0FDQ0VTUyBkb2VzIG5vdCB3b3JrLikKKyAgICAgICAgY29ubiwgY2hpbGRfY29ubiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuY2hpbGRfYWNjZXNzLCBhcmdzPShjaGlsZF9jb25uLCkpCisgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgY2hpbGRfY29ubi5jbG9zZSgpCisKKyAgICAgICAgciwgdyA9IHNlbGYuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgIGNvbm4uc2VuZCh3KQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnJlY3YoKSwgJ2FsbCBpcyB3ZWxsJykKKyAgICAgICAgci5jbG9zZSgpCisKKyAgICAgICAgciwgdyA9IHNlbGYuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgIGNvbm4uc2VuZChyKQorICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgdy5zZW5kKCdmb29iYXInKQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnJlY3YoKSwgJ2Zvb2JhcicqMikKKwogIwogIwogIwpAQCAtMjE3NCw5ICsyODg5LDE1IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKFdJTjMyLCAic2tpcHBlZCBvbiBXaW5kb3dzIikKICAgICBkZWYgdGVzdF9pbnZhbGlkX2hhbmRsZXMoc2VsZik6Ci0gICAgICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oNDQ5Nzc2MDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGNvbm4ucG9sbCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uLCAtMSkKKyAgICAgICAgY29ubiA9IG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLkNvbm5lY3Rpb24oNDQ5Nzc2MDgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBJT0Vycm9yKSwgY29ubi5wb2xsKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBIYWNrIHByaXZhdGUgYXR0cmlidXRlIF9oYW5kbGUgdG8gYXZvaWQgcHJpbnRpbmcgYW4gZXJyb3IKKyAgICAgICAgICAgICMgaW4gY29ubi5fX2RlbF9fCisgICAgICAgICAgICBjb25uLl9oYW5kbGUgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBJT0Vycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uQ29ubmVjdGlvbiwgLTEpCiAKICMKICMgRnVuY3Rpb25zIHVzZWQgdG8gY3JlYXRlIHRlc3QgY2FzZXMgZnJvbSB0aGUgYmFzZSBvbmVzIGluIHRoaXMgbW9kdWxlCkBAIC0yMTk1LDEwICsyOTE2LDEyIEBACiAgICAgcmVzdWx0ID0ge30KICAgICBnbG9iID0gZ2xvYmFscygpCiAgICAgVHlwZSA9IHR5cGUuY2FwaXRhbGl6ZSgpCisgICAgQUxMX1RZUEVTID0geydwcm9jZXNzZXMnLCAndGhyZWFkcycsICdtYW5hZ2VyJ30KIAogICAgIGZvciBuYW1lIGluIGxpc3QoZ2xvYi5rZXlzKCkpOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ19UZXN0Jyk6CiAgICAgICAgICAgICBiYXNlID0gZ2xvYltuYW1lXQorICAgICAgICAgICAgYXNzZXJ0IHNldChiYXNlLkFMTE9XRURfVFlQRVMpIDw9IEFMTF9UWVBFUywgc2V0KGJhc2UuQUxMT1dFRF9UWVBFUykKICAgICAgICAgICAgIGlmIHR5cGUgaW4gYmFzZS5BTExPV0VEX1RZUEVTOgogICAgICAgICAgICAgICAgIG5ld25hbWUgPSAnV2l0aCcgKyBUeXBlICsgbmFtZVsxOl0KICAgICAgICAgICAgICAgICBjbGFzcyBUZW1wKGJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlLCBNaXhpbik6CkBAIC0yMjE3LDcgKzI5NDAsNyBAQAogICAgIFByb2Nlc3MgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2VzcwogICAgIGxvY2FscygpLnVwZGF0ZShnZXRfYXR0cmlidXRlcyhtdWx0aXByb2Nlc3NpbmcsICgKICAgICAgICAgJ1F1ZXVlJywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLAotICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ1ZhbHVlJywgJ0FycmF5JywgJ1Jhd1ZhbHVlJywKKyAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdCYXJyaWVyJywgJ1ZhbHVlJywgJ0FycmF5JywgJ1Jhd1ZhbHVlJywKICAgICAgICAgJ1Jhd0FycmF5JywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nLCAnUGlwZScsCiAgICAgICAgICdjb25uZWN0aW9uJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcKICAgICAgICAgKSkpCkBAIC0yMjMyLDcgKzI5NTUsNyBAQAogICAgIG1hbmFnZXIgPSBvYmplY3QuX19uZXdfXyhtdWx0aXByb2Nlc3NpbmcubWFuYWdlcnMuU3luY01hbmFnZXIpCiAgICAgbG9jYWxzKCkudXBkYXRlKGdldF9hdHRyaWJ1dGVzKG1hbmFnZXIsICgKICAgICAgICAgJ1F1ZXVlJywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLAotICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnVmFsdWUnLCAnQXJyYXknLCAnbGlzdCcsICdkaWN0JywKKyAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdCYXJyaWVyJywgJ1ZhbHVlJywgJ0FycmF5JywgJ2xpc3QnLCAnZGljdCcsCiAgICAgICAgICdOYW1lc3BhY2UnLCAnSm9pbmFibGVRdWV1ZScsICdQb29sJwogICAgICAgICApKSkKIApAQCAtMjI0NSw3ICsyOTY4LDcgQEAKICAgICBQcm9jZXNzID0gbXVsdGlwcm9jZXNzaW5nLmR1bW15LlByb2Nlc3MKICAgICBsb2NhbHMoKS51cGRhdGUoZ2V0X2F0dHJpYnV0ZXMobXVsdGlwcm9jZXNzaW5nLmR1bW15LCAoCiAgICAgICAgICdRdWV1ZScsICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywKLSAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdWYWx1ZScsICdBcnJheScsICdjdXJyZW50X3Byb2Nlc3MnLAorICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ0JhcnJpZXInLCAnVmFsdWUnLCAnQXJyYXknLCAnY3VycmVudF9wcm9jZXNzJywKICAgICAgICAgJ2FjdGl2ZV9jaGlsZHJlbicsICdQaXBlJywgJ2Nvbm5lY3Rpb24nLCAnZGljdCcsICdsaXN0JywKICAgICAgICAgJ05hbWVzcGFjZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnCiAgICAgICAgICkpKQpAQCAtMjI5Nyw2ICszMDIwLDcgQEAKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5tZ3Iuc2h1dGRvd24oKQorICAgICAgICBzZWxmLm1nci5qb2luKCkKIAogICAgIGRlZiB0ZXN0X21hbmFnZXJfaW5pdGlhbGl6ZXIoc2VsZik6CiAgICAgICAgIG0gPSBtdWx0aXByb2Nlc3NpbmcubWFuYWdlcnMuU3luY01hbmFnZXIoKQpAQCAtMjMwNCw2ICszMDI4LDcgQEAKICAgICAgICAgbS5zdGFydChpbml0aWFsaXplciwgKHNlbGYubnMsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm5zLnRlc3QsIDEpCiAgICAgICAgIG0uc2h1dGRvd24oKQorICAgICAgICBtLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfcG9vbF9pbml0aWFsaXplcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdWx0aXByb2Nlc3NpbmcuUG9vbCwgaW5pdGlhbGl6ZXI9MSkKQEAgLTIzMzYsNiArMzA2MSw4IEBACiBkZWYgcG9vbF9pbl9wcm9jZXNzKCk6CiAgICAgcG9vbCA9IG11bHRpcHJvY2Vzc2luZy5Qb29sKHByb2Nlc3Nlcz00KQogICAgIHggPSBwb29sLm1hcChfYWZ1bmMsIFsxLCAyLCAzLCA0LCA1LCA2LCA3XSkKKyAgICBwb29sLmNsb3NlKCkKKyAgICBwb29sLmpvaW4oKQogCiBjbGFzcyBfZmlsZV9saWtlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlbGVnYXRlKToKQEAgLTIzODAsNiArMzEwNywxODAgQEAKICAgICAgICAgYXNzZXJ0IHNpby5nZXR2YWx1ZSgpID09ICdmb28nCiAKIAorY2xhc3MgVGVzdFdhaXQodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF90ZXN0X3dhaXQoY2xzLCB3LCBzbG93KToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgaWYgc2xvdzoKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHJhbmRvbS5yYW5kb20oKSowLjEpCisgICAgICAgICAgICB3LnNlbmQoKGksIG9zLmdldHBpZCgpKSkKKyAgICAgICAgdy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF93YWl0KHNlbGYsIHNsb3c9RmFsc2UpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgIHJlYWRlcnMgPSBbXQorICAgICAgICBwcm9jcyA9IFtdCisgICAgICAgIG1lc3NhZ2VzID0gW10KKworICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHIsIHcgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX3Rlc3Rfd2FpdCwgYXJncz0odywgc2xvdykpCisgICAgICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgdy5jbG9zZSgpCisgICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyKQorICAgICAgICAgICAgcHJvY3MuYXBwZW5kKHApCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5qb2luKQorCisgICAgICAgIHdoaWxlIHJlYWRlcnM6CisgICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gci5yZWN2KCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJlYWRlcnMucmVtb3ZlKHIpCisgICAgICAgICAgICAgICAgICAgIHIuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZChtc2cpCisKKyAgICAgICAgbWVzc2FnZXMuc29ydCgpCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKChpLCBwLnBpZCkgZm9yIGkgaW4gcmFuZ2UoMTApIGZvciBwIGluIHByb2NzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBleHBlY3RlZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfdGVzdF93YWl0X3NvY2tldChjbHMsIGFkZHJlc3MsIHNsb3cpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHMuY29ubmVjdChhZGRyZXNzKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICBpZiBzbG93OgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAocmFuZG9tLnJhbmRvbSgpKjAuMSkKKyAgICAgICAgICAgIHMuc2VuZGFsbCgoJyVzXG4nICUgaSkuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3dhaXRfc29ja2V0KHNlbGYsIHNsb3c9RmFsc2UpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgbC5iaW5kKCgnJywgMCkpCisgICAgICAgIGwubGlzdGVuKDQpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIGwuZ2V0c29ja25hbWUoKVsxXSkKKyAgICAgICAgcmVhZGVycyA9IFtdCisgICAgICAgIHByb2NzID0gW10KKyAgICAgICAgZGljID0ge30KKworICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfdGVzdF93YWl0X3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShhZGRyLCBzbG93KSkKKyAgICAgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICBwcm9jcy5hcHBlbmQocCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLmpvaW4pCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICByLCBfID0gbC5hY2NlcHQoKQorICAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgIGRpY1tyXSA9IFtdCisgICAgICAgIGwuY2xvc2UoKQorCisgICAgICAgIHdoaWxlIHJlYWRlcnM6CisgICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigzMikKKyAgICAgICAgICAgICAgICBpZiBub3QgbXNnOgorICAgICAgICAgICAgICAgICAgICByZWFkZXJzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkaWNbcl0uYXBwZW5kKG1zZykKKworICAgICAgICBleHBlY3RlZCA9ICcnLmpvaW4oJyVzXG4nICUgaSBmb3IgaSBpbiByYW5nZSgxMCkpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBmb3IgdiBpbiBkaWMudmFsdWVzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKHYpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dhaXRfc2xvdyhzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhaXQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3dhaXRfc29ja2V0X3Nsb3coc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93YWl0X3NvY2tldChUcnVlKQorCisgICAgZGVmIHRlc3Rfd2FpdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgICAgICAgZXhwZWN0ZWQgPSA1CisgICAgICAgIGEsIGIgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBiXSwgZXhwZWN0ZWQpCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCBleHBlY3RlZCAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZWx0YSwgZXhwZWN0ZWQgKiAwLjUpCisKKyAgICAgICAgYi5zZW5kKE5vbmUpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBiXSwgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbYV0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgMC40KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNpZ25hbF9hbmRfc2xlZXAoY2xzLCBzZW0sIHBlcmlvZCk6CisgICAgICAgIHNlbS5yZWxlYXNlKCkKKyAgICAgICAgdGltZS5zbGVlcChwZXJpb2QpCisKKyAgICBkZWYgdGVzdF93YWl0X2ludGVnZXIoc2VsZik6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKworICAgICAgICBleHBlY3RlZCA9IDMKKyAgICAgICAgc2VtID0gbXVsdGlwcm9jZXNzaW5nLlNlbWFwaG9yZSgwKQorICAgICAgICBhLCBiID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYuc2lnbmFsX2FuZF9zbGVlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbSwgZXhwZWN0ZWQpKQorCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocC5zZW50aW5lbCwgaW50KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VtLmFjcXVpcmUodGltZW91dD0yMCkpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBwLnNlbnRpbmVsLCBiXSwgZXhwZWN0ZWQgKyAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFtwLnNlbnRpbmVsXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCBleHBlY3RlZCArIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZWx0YSwgZXhwZWN0ZWQgLSAyKQorCisgICAgICAgIGEuc2VuZChOb25lKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgcC5zZW50aW5lbCwgYl0sIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW3Auc2VudGluZWwsIGJdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIDAuNCkKKworICAgICAgICBiLnNlbmQoTm9uZSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIHAuc2VudGluZWwsIGJdLCAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFthLCBwLnNlbnRpbmVsLCBiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCAwLjQpCisKKyAgICAgICAgcC50ZXJtaW5hdGUoKQorICAgICAgICBwLmpvaW4oKQorCisgICAgZGVmIHRlc3RfbmVnX3RpbWVvdXQoc2VsZik6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKyAgICAgICAgYSwgYiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKyAgICAgICAgdCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2FdLCB0aW1lb3V0PS0xKQorICAgICAgICB0ID0gdGltZS50aW1lKCkgLSB0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHQsIDEpCisgICAgICAgIGEuY2xvc2UoKQorICAgICAgICBiLmNsb3NlKCkKKwogIwogIyBJc3N1ZSAxNDE1MTogVGVzdCBpbnZhbGlkIGZhbWlseSBvbiBpbnZhbGlkIGVudmlyb25tZW50CiAjCkBAIC0yMzk3LDYgKzMyOTgsMzggQEAKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLkxpc3RlbmVyKCcvdmFyL3Rlc3QucGlwZScpCiAKICMKKyMgSXNzdWUgMTIwOTg6IGNoZWNrIHN5cy5mbGFncyBvZiBjaGlsZCBtYXRjaGVzIHRoYXQgZm9yIHBhcmVudAorIworCitjbGFzcyBUZXN0RmxhZ3ModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBydW5faW5fZ3JhbmRjaGlsZChjbHMsIGNvbm4pOgorICAgICAgICBjb25uLnNlbmQodHVwbGUoc3lzLmZsYWdzKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBydW5faW5fY2hpbGQoY2xzKToKKyAgICAgICAgaW1wb3J0IGpzb24KKyAgICAgICAgciwgdyA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1jbHMucnVuX2luX2dyYW5kY2hpbGQsIGFyZ3M9KHcsKSkKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIGdyYW5kY2hpbGRfZmxhZ3MgPSByLnJlY3YoKQorICAgICAgICBwLmpvaW4oKQorICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIGZsYWdzID0gKHR1cGxlKHN5cy5mbGFncyksIGdyYW5kY2hpbGRfZmxhZ3MpCisgICAgICAgIHByaW50KGpzb24uZHVtcHMoZmxhZ3MpKQorCisgICAgZGVmIHRlc3RfZmxhZ3Moc2VsZik6CisgICAgICAgIGltcG9ydCBqc29uLCBzdWJwcm9jZXNzCisgICAgICAgICMgc3RhcnQgY2hpbGQgcHJvY2VzcyB1c2luZyB1bnVzdWFsIGZsYWdzCisgICAgICAgIHByb2cgPSAoJ2Zyb20gdGVzdC50ZXN0X211bHRpcHJvY2Vzc2luZyBpbXBvcnQgVGVzdEZsYWdzOyAnICsKKyAgICAgICAgICAgICAgICAnVGVzdEZsYWdzLnJ1bl9pbl9jaGlsZCgpJykKKyAgICAgICAgZGF0YSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAnLUUnLCAnLVMnLCAnLU8nLCAnLWMnLCBwcm9nXSkKKyAgICAgICAgY2hpbGRfZmxhZ3MsIGdyYW5kY2hpbGRfZmxhZ3MgPSBqc29uLmxvYWRzKGRhdGEuZGVjb2RlKCdhc2NpaScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkX2ZsYWdzLCBncmFuZGNoaWxkX2ZsYWdzKQorCisjCiAjIFRlc3QgaW50ZXJhY3Rpb24gd2l0aCBzb2NrZXQgdGltZW91dHMgLSBzZWUgSXNzdWUgIzYwNTYKICMKIApAQCAtMjQ1MSw4ICszMzg0LDggQEAKICMKIAogdGVzdGNhc2VzX290aGVyID0gW090aGVyVGVzdCwgVGVzdEludmFsaWRIYW5kbGUsIFRlc3RJbml0aWFsaXplcnMsCi0gICAgICAgICAgICAgICAgICAgVGVzdFN0ZGluQmFkZmlsZWRlc2NyaXB0b3IsIFRlc3RJbnZhbGlkRmFtaWx5LAotICAgICAgICAgICAgICAgICAgIFRlc3RUaW1lb3V0cywgVGVzdE5vRm9ya0JvbWJdCisgICAgICAgICAgICAgICAgICAgVGVzdFN0ZGluQmFkZmlsZWRlc2NyaXB0b3IsIFRlc3RXYWl0LCBUZXN0SW52YWxpZEZhbWlseSwKKyAgICAgICAgICAgICAgICAgICBUZXN0RmxhZ3MsIFRlc3RUaW1lb3V0cywgVGVzdE5vRm9ya0JvbWJdCiAKICMKICMKQEAgLTI0ODksMTQgKzM0MjIsMTggQEAKIAogICAgIGxvYWRUZXN0c0Zyb21UZXN0Q2FzZSA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZQogICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKGxvYWRUZXN0c0Zyb21UZXN0Q2FzZSh0YykgZm9yIHRjIGluIHRlc3RjYXNlcykKLSAgICBydW4oc3VpdGUpCi0KLSAgICBUaHJlYWRzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQotICAgIFByb2Nlc3Nlc01peGluLnBvb2wudGVybWluYXRlKCkKLSAgICBNYW5hZ2VyTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQotICAgIE1hbmFnZXJNaXhpbi5tYW5hZ2VyLnNodXRkb3duKCkKLQotICAgIGRlbCBQcm9jZXNzZXNNaXhpbi5wb29sLCBUaHJlYWRzTWl4aW4ucG9vbCwgTWFuYWdlck1peGluLnBvb2wKKyAgICB0cnk6CisgICAgICAgIHJ1bihzdWl0ZSkKKyAgICBmaW5hbGx5OgorICAgICAgICBUaHJlYWRzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQorICAgICAgICBQcm9jZXNzZXNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCisgICAgICAgIE1hbmFnZXJNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCisgICAgICAgIE1hbmFnZXJNaXhpbi5wb29sLmpvaW4oKQorICAgICAgICBNYW5hZ2VyTWl4aW4ubWFuYWdlci5zaHV0ZG93bigpCisgICAgICAgIE1hbmFnZXJNaXhpbi5tYW5hZ2VyLmpvaW4oKQorICAgICAgICBUaHJlYWRzTWl4aW4ucG9vbC5qb2luKCkKKyAgICAgICAgUHJvY2Vzc2VzTWl4aW4ucG9vbC5qb2luKCkKKyAgICAgICAgZGVsIFByb2Nlc3Nlc01peGluLnBvb2wsIFRocmVhZHNNaXhpbi5wb29sLCBNYW5hZ2VyTWl4aW4ucG9vbAogCiBkZWYgbWFpbigpOgogICAgIHRlc3RfbWFpbih1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9MikucnVuKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdXRhbnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9tdXRhbnRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDNmYTQ3Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfbXV0YW50cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5MSArMCwwIEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgb3MKLQotIyBGcm9tIFNGIGJ1ZyAjNDIyMTIxOiAgSW5zZWN1cml0aWVzIGluIGRpY3QgY29tcGFyaXNvbi4KLQotIyBTYWZldHkgb2YgY29kZSBkb2luZyBjb21wYXJpc29ucyBoYXMgYmVlbiBhbiBoaXN0b3JpY2FsIFB5dGhvbiB3ZWFrIHNwb3QuCi0jIFRoZSBwcm9ibGVtIGlzIHRoYXQgY29tcGFyaXNvbiBvZiBzdHJ1Y3R1cmVzIHdyaXR0ZW4gaW4gQyAqbmF0dXJhbGx5KgotIyB3YW50cyB0byBob2xkIG9uIHRvIHRoaW5ncyBsaWtlIHRoZSBzaXplIG9mIHRoZSBjb250YWluZXIsIG9yICJ0aGUKLSMgYmlnZ2VzdCIgY29udGFpbmVlIHNvIGZhciwgYWNyb3NzIGEgdHJhdmVyc2FsIG9mIHRoZSBjb250YWluZXI7IGJ1dAotIyBjb2RlIHRvIGRvIGNvbnRhaW5lZSBjb21wYXJpc29ucyBjYW4gY2FsbCBiYWNrIGludG8gUHl0aG9uIGFuZCBtdXRhdGUKLSMgdGhlIGNvbnRhaW5lciBpbiBhcmJpdHJhcnkgd2F5cyB3aGlsZSB0aGUgQyBsb29wIGlzIGluIG1pZHN0cmVhbS4gIElmIHRoZQotIyBDIGNvZGUgaXNuJ3QgZXh0cmVtZWx5IHBhcmFub2lkIGFib3V0IGRpZ2dpbmcgdGhpbmdzIG91dCBvZiBtZW1vcnkgb24KLSMgZWFjaCB0cmlwLCBhbmQgYXJ0aWZpY2lhbGx5IGJvb3N0aW5nIHJlZmNvdW50cyBmb3IgdGhlIGR1cmF0aW9uLCBhbnl0aGluZwotIyBmcm9tIGluZmluaXRlIGxvb3BzIHRvIE9TIGNyYXNoZXMgY2FuIHJlc3VsdCAoeWVzLCBJIHVzZSBXaW5kb3dzIDx3aW5rPikuCi0jCi0jIFRoZSBvdGhlciBwcm9ibGVtIGlzIHRoYXQgY29kZSBkZXNpZ25lZCB0byBwcm92b2tlIGEgd2Vha25lc3MgaXMgdXN1YWxseQotIyB3aGl0ZS1ib3ggY29kZSwgYW5kIHNvIGNhdGNoZXMgb25seSB0aGUgcGFydGljdWxhciB2dWxuZXJhYmlsaXRpZXMgdGhlCi0jIGF1dGhvciBrbmV3IHRvIHByb3RlY3QgYWdhaW5zdC4gIEZvciBleGFtcGxlLCBQeXRob24ncyBsaXN0LnNvcnQoKSBjb2RlCi0jIHdlbnQgdGhydSBtYW55IGl0ZXJhdGlvbnMgYXMgb25lICJuZXciIHZ1bG5lcmFiaWxpdHkgYWZ0ZXIgYW5vdGhlciB3YXMKLSMgZGlzY292ZXJlZC4KLSMKLSMgU28gdGhlIGRpY3QgY29tcGFyaXNvbiB0ZXN0IGhlcmUgdXNlcyBhIGJsYWNrLWJveCBhcHByb2FjaCBpbnN0ZWFkLAotIyBnZW5lcmF0aW5nIGRpY3RzIG9mIHZhcmlvdXMgc2l6ZXMgYXQgcmFuZG9tLCBhbmQgcGVyZm9ybWluZyByYW5kb20KLSMgbXV0YXRpb25zIG9uIHRoZW0gYXQgcmFuZG9tIHRpbWVzLiAgVGhpcyBwcm92ZWQgdmVyeSBlZmZlY3RpdmUsCi0jIHRyaWdnZXJpbmcgYXQgbGVhc3Qgc2l4IGRpc3RpbmN0IGZhaWx1cmUgbW9kZXMgdGhlIGZpcnN0IDIwIHRpbWVzIEkKLSMgcmFuIGl0LiAgSW5kZWVkLCBhdCB0aGUgc3RhcnQsIHRoZSBkcml2ZXIgbmV2ZXIgZ290IGJleW9uZCA2IGl0ZXJhdGlvbnMKLSMgYmVmb3JlIHRoZSB0ZXN0IGRpZWQuCi0KLSMgVGhlIGRpY3RzIGFyZSBnbG9iYWwgdG8gbWFrZSBpdCBlYXN5IHRvIG11dGF0ZSB0aGFtIGZyb20gd2l0aGluIGZ1bmN0aW9ucy4KLWRpY3QxID0ge30KLWRpY3QyID0ge30KLQotIyBUaGUgY3VycmVudCBzZXQgb2Yga2V5cyBpbiBkaWN0MSBhbmQgZGljdDIuICBUaGVzZSBhcmUgbWF0ZXJpYWxpemVkIGFzCi0jIGxpc3RzIHRvIG1ha2UgaXQgZWFzeSB0byBwaWNrIGEgZGljdCBrZXkgYXQgcmFuZG9tLgotZGljdDFrZXlzID0gW10KLWRpY3Qya2V5cyA9IFtdCi0KLSMgR2xvYmFsIGZsYWcgdGVsbGluZyBtYXliZV9tdXRhdGUoKSB3aGV0aGVyIHRvICpjb25zaWRlciogbXV0YXRpbmcuCi1tdXRhdGUgPSAwCi0KLSMgSWYgZ2xvYmFsIG11dGF0ZSBpcyB0cnVlLCBjb25zaWRlciBtdXRhdGluZyBhIGRpY3QuICBNYXkgb3IgbWF5IG5vdAotIyBtdXRhdGUgYSBkaWN0IGV2ZW4gaWYgbXV0YXRlIGlzIHRydWUuICBJZiBpdCBkb2VzIGRlY2lkZSB0byBtdXRhdGUgYQotIyBkaWN0LCBpdCBwaWNrcyBvbmUgb2Yge2RpY3QxLCBkaWN0Mn0gYXQgcmFuZG9tLCBhbmQgZGVsZXRlcyBhIHJhbmRvbQotIyBlbnRyeSBmcm9tIGl0OyBvciwgbW9yZSByYXJlbHksIGFkZHMgYSByYW5kb20gZWxlbWVudC4KLQotZGVmIG1heWJlX211dGF0ZSgpOgotICAgIGdsb2JhbCBtdXRhdGUKLSAgICBpZiBub3QgbXV0YXRlOgotICAgICAgICByZXR1cm4KLSAgICBpZiByYW5kb20ucmFuZG9tKCkgPCAwLjU6Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgcmFuZG9tLnJhbmRvbSgpIDwgMC41OgotICAgICAgICB0YXJnZXQsIGtleXMgPSBkaWN0MSwgZGljdDFrZXlzCi0gICAgZWxzZToKLSAgICAgICAgdGFyZ2V0LCBrZXlzID0gZGljdDIsIGRpY3Qya2V5cwotCi0gICAgaWYgcmFuZG9tLnJhbmRvbSgpIDwgMC4yOgotICAgICAgICAjIEluc2VydCBhIG5ldyBrZXkuCi0gICAgICAgIG11dGF0ZSA9IDAgICAjIGRpc2FibGUgbXV0YXRpb24gdW50aWwga2V5IGluc2VydGVkCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBuZXdrZXkgPSBIb3JyaWQocmFuZG9tLnJhbmRyYW5nZSgxMDApKQotICAgICAgICAgICAgaWYgbmV3a2V5IG5vdCBpbiB0YXJnZXQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgdGFyZ2V0W25ld2tleV0gPSBIb3JyaWQocmFuZG9tLnJhbmRyYW5nZSgxMDApKQotICAgICAgICBrZXlzLmFwcGVuZChuZXdrZXkpCi0gICAgICAgIG11dGF0ZSA9IDEKLQotICAgIGVsaWYga2V5czoKLSAgICAgICAgIyBEZWxldGUgYSBrZXkgYXQgcmFuZG9tLgotICAgICAgICBtdXRhdGUgPSAwICAgIyBkaXNhYmxlIG11dGF0aW9uIHVudGlsIGtleSBkZWxldGVkCi0gICAgICAgIGkgPSByYW5kb20ucmFuZHJhbmdlKGxlbihrZXlzKSkKLSAgICAgICAga2V5ID0ga2V5c1tpXQotICAgICAgICBkZWwgdGFyZ2V0W2tleV0KLSAgICAgICAgZGVsIGtleXNbaV0KLSAgICAgICAgbXV0YXRlID0gMQotCi0jIEEgaG9ycmlkIGNsYXNzIHRoYXQgdHJpZ2dlcnMgcmFuZG9tIG11dGF0aW9ucyBvZiBkaWN0MSBhbmQgZGljdDIgd2hlbgotIyBpbnN0YW5jZXMgYXJlIGNvbXBhcmVkLgotCi1jbGFzcyBIb3JyaWQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGkpOgotICAgICAgICAjIENvbXBhcmlzb24gb3V0Y29tZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIGkuCi0gICAgICAgIHNlbGYuaSA9IGkKLQotICAgICAgICAjIEFuIGFydGlmaWNpYWwgaGFzaGNvZGUgaXMgc2VsZWN0ZWQgYXQgcmFuZG9tIHNvIHRoYXQgd2UgZG9uJ3QKLSAgICAgICAgIyBoYXZlIGFueSBzeXN0ZW1hdGljIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGNvbXBhcmlzb24gb3V0Y29tZXMKLSAgICAgICAgIyAoYmFzZWQgb24gc2VsZi5pIGFuZCBvdGhlci5pKSBhbmQgcmVsYXRpdmUgcG9zaXRpb24gd2l0aGluIHRoZQotICAgICAgICAjIGhhc2ggdmVjdG9yIChiYXNlZCBvbiBoYXNoY29kZSkuCi0gICAgICAgICMgWFhYIFRoaXMgaXMgbm8gbG9uZ2VyIGVmZmVjdGl2ZS4KLSAgICAgICAgIyNzZWxmLmhhc2hjb2RlID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwMDAwMDAwKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gNDIKLSAgICAgICAgcmV0dXJuIHNlbGYuaGFzaGNvZGUKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBtYXliZV9tdXRhdGUoKSAgICMgVGhlIHBvaW50IG9mIHRoZSB0ZXN0LgotICAgICAgICByZXR1cm4gc2VsZi5pID09IG90aGVyLmkKLQotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkkgZGlkbid0IGV4cGVjdCBzb21lIGtpbmQgb2YgU3BhbmlzaCBpbnF1aXNpdGlvbiEiKQotCi0gICAgX19sdF9fID0gX19sZV9fID0gX19ndF9fID0gX19nZV9fID0gX19uZV9fCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiSG9ycmlkKCVkKSIgJSBzZWxmLmkKLQotIyBGaWxsIGRpY3QgZCB3aXRoIG51bWVudHJpZXMgKEhvcnJpZChpKSwgSG9ycmlkKGopKSBrZXktdmFsdWUgcGFpcnMsCi0jIHdoZXJlIGkgYW5kIGogYXJlIHNlbGVjdGVkIGF0IHJhbmRvbSBmcm9tIHRoZSBjYW5kaWRhdGVzIGxpc3QuCi0jIFJldHVybiBkLmtleXMoKSBhZnRlciBmaWxsaW5nLgotCi1kZWYgZmlsbF9kaWN0KGQsIGNhbmRpZGF0ZXMsIG51bWVudHJpZXMpOgotICAgIGQuY2xlYXIoKQotICAgIGZvciBpIGluIHJhbmdlKG51bWVudHJpZXMpOgotICAgICAgICBkW0hvcnJpZChyYW5kb20uY2hvaWNlKGNhbmRpZGF0ZXMpKV0gPSBcCi0gICAgICAgICAgICBIb3JyaWQocmFuZG9tLmNob2ljZShjYW5kaWRhdGVzKSkKLSAgICByZXR1cm4gbGlzdChkLmtleXMoKSkKLQotIyBUZXN0IG9uZSBwYWlyIG9mIHJhbmRvbWx5IGdlbmVyYXRlZCBkaWN0cywgZWFjaCB3aXRoIG4gZW50cmllcy4KLSMgTm90ZSB0aGF0IGRpY3QgY29tcGFyaXNvbiBpcyB0cml2aWFsIGlmIHRoZXkgZG9uJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIKLSMgb2YgZW50aXJlcyAodGhlbiB0aGUgInNob3J0ZXIiIGRpY3QgaXMgaW5zdGFudGx5IGNvbnNpZGVyZWQgdG8gYmUgdGhlCi0jIHNtYWxsZXIgb25lLCB3aXRob3V0IGV2ZW4gbG9va2luZyBhdCB0aGUgZW50cmllcykuCi0KLWRlZiB0ZXN0X29uZShuKToKLSAgICBnbG9iYWwgbXV0YXRlLCBkaWN0MSwgZGljdDIsIGRpY3Qxa2V5cywgZGljdDJrZXlzCi0KLSAgICAjIEZpbGwgdGhlIGRpY3RzIHdpdGhvdXQgbXV0YXRpbmcgdGhlbS4KLSAgICBtdXRhdGUgPSAwCi0gICAgZGljdDFrZXlzID0gZmlsbF9kaWN0KGRpY3QxLCByYW5nZShuKSwgbikKLSAgICBkaWN0MmtleXMgPSBmaWxsX2RpY3QoZGljdDIsIHJhbmdlKG4pLCBuKQotCi0gICAgIyBFbmFibGUgbXV0YXRpb24sIHRoZW4gY29tcGFyZSB0aGUgZGljdHMgc28gbG9uZyBhcyB0aGV5IGhhdmUgdGhlCi0gICAgIyBzYW1lIHNpemUuCi0gICAgbXV0YXRlID0gMQotICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHByaW50KCJ0cnlpbmcgdy8gbGVuZ3RocyIsIGxlbihkaWN0MSksIGxlbihkaWN0MiksIGVuZD0nICcpCi0gICAgd2hpbGUgZGljdDEgYW5kIGxlbihkaWN0MSkgPT0gbGVuKGRpY3QyKToKLSAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCIuIiwgZW5kPScgJykKLSAgICAgICAgYyA9IGRpY3QxID09IGRpY3QyCi0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgcHJpbnQoKQotCi0jIFJ1biB0ZXN0X29uZSBuIHRpbWVzLiAgQXQgdGhlIHN0YXJ0IChiZWZvcmUgdGhlIGJ1Z3Mgd2VyZSBmaXhlZCksIDIwCi0jIGNvbnNlY3V0aXZlIHJ1bnMgb2YgdGhpcyB0ZXN0IGVhY2ggYmxldyB1cCBvbiBvciBiZWZvcmUgdGhlIHNpeHRoIHRpbWUKLSMgdGVzdF9vbmUgd2FzIHJ1bi4gIFNvIG4gZG9lc24ndCBoYXZlIHRvIGJlIGxhcmdlIHRvIGdldCBhbiBpbnRlcmVzdGluZwotIyB0ZXN0LgotIyBPVE9ILCBjYWxsaW5nIHdpdGggbGFyZ2UgbiBpcyBhbHNvIGludGVyZXN0aW5nLCB0byBlbnN1cmUgdGhhdCB0aGUgZml4ZWQKLSMgY29kZSBkb2Vzbid0IGhvbGQgb24gdG8gcmVmY291bnRzICp0b28qIGxvbmcgKGluIHdoaWNoIGNhc2UgbWVtb3J5IHdvdWxkCi0jIGxlYWspLgotCi1kZWYgdGVzdChuKToKLSAgICBmb3IgaSBpbiByYW5nZShuKToKLSAgICAgICAgdGVzdF9vbmUocmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApKQotCi0jIFNlZSBsYXN0IGNvbW1lbnQgYmxvY2sgZm9yIGNsdWVzIGFib3V0IGdvb2QgdmFsdWVzIGZvciBuLgotdGVzdCgxMDApCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFub3RoZXIgc2VnZmF1bHQgYnVnLCBkaXN0aWxsZWQgYnkgTWljaGFlbCBIdWRzb24gZnJvbSBhIGMubC5weSBwb3N0LgotCi1jbGFzcyBDaGlsZDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgc2VsZi5fX2RpY3RfX1sncGFyZW50J10gPSBwYXJlbnQKLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6Ci0gICAgICAgIHNlbGYucGFyZW50LmEgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmIgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmMgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmQgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmUgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmYgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmcgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmggPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmkgPSAxCi0gICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYucGFyZW50LCBhdHRyKQotCi1jbGFzcyBQYXJlbnQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmEgPSBDaGlsZChzZWxmKQotCi0jIEhhcmQgdG8gc2F5IHdoYXQgdGhpcyB3aWxsIHByaW50ISAgTWF5IHZhcnkgZnJvbSB0aW1lIHRvIHRpbWUuICBCdXQKLSMgd2UncmUgc3BlY2lmaWNhbGx5IHRyeWluZyB0byB0ZXN0IHRoZSB0cF9wcmludCBzbG90IGhlcmUsIGFuZCB0aGlzIGlzCi0jIHRoZSBjbGVhcmVzdCB3YXkgdG8gZG8gaXQuICBXZSBwcmludCB0aGUgcmVzdWx0IHRvIGEgdGVtcCBmaWxlIHNvIHRoYXQKLSMgdGhlIGV4cGVjdGVkLW91dHB1dCBmaWxlIGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2UuCi0KLWYgPSBvcGVuKFRFU1RGTiwgInciKQotcHJpbnQoUGFyZW50KCkuX19kaWN0X18sIGZpbGU9ZikKLWYuY2xvc2UoKQotb3MudW5saW5rKFRFU1RGTikKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5kIGFub3RoZXIgY29yZS1kdW1wZXIgZnJvbSBNaWNoYWVsIEh1ZHNvbi4KLQotZGljdCA9IHt9Ci0KLSMgRm9yY2UgZGljdCB0byBtYWxsb2MgaXRzIHRhYmxlLgotZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgIGRpY3RbaV0gPSBpCi0KLWYgPSBvcGVuKFRFU1RGTiwgInciKQotCi1jbGFzcyBNYWNoaWF2ZWxsaToKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGRpY3QuY2xlYXIoKQotCi0gICAgICAgICMgTWljaGFlbCBzZXo6ICAiZG9lc24ndCBjcmFzaCB3aXRob3V0IHRoaXMuICBkb24ndCBrbm93IHdoeS4iCi0gICAgICAgICMgVGltIHNlejogICJsdWNrIG9mIHRoZSBkcmF3OyBjcmFzaGVzIHdpdGggb3Igd2l0aG91dCBmb3IgbWUuIgotICAgICAgICBwcmludChmaWxlPWYpCi0KLSAgICAgICAgcmV0dXJuIHJlcHIoIm1hY2hpYXZlbGxpIikKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDAKLQotZGljdFtNYWNoaWF2ZWxsaSgpXSA9IE1hY2hpYXZlbGxpKCkKLQotcHJpbnQoc3RyKGRpY3QpLCBmaWxlPWYpCi1mLmNsb3NlKCkKLW9zLnVubGluayhURVNURk4pCi1kZWwgZiwgZGljdAotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFuZCBhbm90aGVyIGNvcmUtZHVtcGVyIGZyb20gTWljaGFlbCBIdWRzb24uCi0KLWRpY3QgPSB7fQotCi0jIGxldCdzIGZvcmNlIGRpY3QgdG8gbWFsbG9jIGl0cyB0YWJsZQotZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgIGRpY3RbaV0gPSBpCi0KLWNsYXNzIE1hY2hpYXZlbGxpMjoKLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgZGljdC5jbGVhcigpCi0gICAgICAgIHJldHVybiAxCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAwCi0KLWRpY3RbTWFjaGlhdmVsbGkyKCldID0gTWFjaGlhdmVsbGkyKCkKLQotdHJ5OgotICAgIGRpY3RbTWFjaGlhdmVsbGkyKCldCi1leGNlcHQgS2V5RXJyb3I6Ci0gICAgcGFzcwotCi1kZWwgZGljdAotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbmQgYW5vdGhlciBjb3JlLWR1bXBlciBmcm9tIE1pY2hhZWwgSHVkc29uLgotCi1kaWN0ID0ge30KLQotIyBsZXQncyBmb3JjZSBkaWN0IHRvIG1hbGxvYyBpdHMgdGFibGUKLWZvciBpIGluIHJhbmdlKDEsIDEwKToKLSAgICBkaWN0W2ldID0gaQotCi1jbGFzcyBNYWNoaWF2ZWxsaTM6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGlkKToKLSAgICAgICAgc2VsZi5pZCA9IGlkCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgc2VsZi5pZCA9PSBvdGhlci5pZDoKLSAgICAgICAgICAgIGRpY3QuY2xlYXIoKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiJXMoJXMpIiUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuaWQpCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAwCi0KLWRpY3RbTWFjaGlhdmVsbGkzKDEpXSA9IE1hY2hpYXZlbGxpMygwKQotZGljdFtNYWNoaWF2ZWxsaTMoMildID0gTWFjaGlhdmVsbGkzKDApCi0KLWYgPSBvcGVuKFRFU1RGTiwgInciKQotdHJ5OgotICAgIHRyeToKLSAgICAgICAgcHJpbnQoZGljdFtNYWNoaWF2ZWxsaTMoMildLCBmaWxlPWYpCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi1maW5hbGx5OgotICAgIGYuY2xvc2UoKQotICAgIG9zLnVubGluayhURVNURk4pCi0KLWRlbCBkaWN0Ci1kZWwgZGljdDEsIGRpY3QyLCBkaWN0MWtleXMsIGRpY3Qya2V5cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9uYW1lc3BhY2VfcGtncy5weSBiL0xpYi90ZXN0L3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA2N2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTAsMCArMSwyOTQgQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBvcworCitmcm9tIHRlc3QudGVzdF9pbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKworIyBuZWVkZWQgdGVzdHM6CisjCisjIG5lZWQgdG8gdGVzdCB3aGVuIG5lc3RlZCwgc28gdGhhdCB0aGUgdG9wLWxldmVsIHBhdGggaXNuJ3Qgc3lzLnBhdGgKKyMgbmVlZCB0byB0ZXN0IGR5bmFtaWMgcGF0aCBkZXRlY3Rpb24sIGJvdGggYXQgdG9wLWxldmVsIGFuZCBuZXN0ZWQKKyMgd2l0aCBkeW5hbWljIHBhdGgsIGNoZWNrIHdoZW4gYSBsb2FkZXIgaXMgcmV0dXJuZWQgb24gcGF0aCByZWxvYWQgKHRoYXQgaXMsCisjICB0cnlpbmcgdG8gc3dpdGNoIGZyb20gYSBuYW1lc3BhY2UgcGFja2FnZSB0byBhIHJlZ3VsYXIgcGFja2FnZSkKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHN5c19tb2R1bGVzX2NvbnRleHQoKToKKyAgICAiIiIKKyAgICBNYWtlIHN1cmUgc3lzLm1vZHVsZXMgaXMgdGhlIHNhbWUgb2JqZWN0IGFuZCBoYXMgdGhlIHNhbWUgY29udGVudAorICAgIHdoZW4gZXhpdGluZyB0aGUgY29udGV4dCBhcyB3aGVuIGVudGVyaW5nLgorCisgICAgU2ltaWxhciB0byBpbXBvcnRsaWIudGVzdC51dGlsLnVuY2FjaGUsIGJ1dCBkb2Vzbid0IHJlcXVpcmUgZXhwbGljaXQKKyAgICBuYW1lcy4KKyAgICAiIiIKKyAgICBzeXNfbW9kdWxlc19zYXZlZCA9IHN5cy5tb2R1bGVzCisgICAgc3lzX21vZHVsZXNfY29weSA9IHN5cy5tb2R1bGVzLmNvcHkoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlcyA9IHN5c19tb2R1bGVzX3NhdmVkCisgICAgICAgIHN5cy5tb2R1bGVzLmNsZWFyKCkKKyAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKHN5c19tb2R1bGVzX2NvcHkpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBuYW1lc3BhY2VfdHJlZV9jb250ZXh0KCoqa3dhcmdzKToKKyAgICAiIiIKKyAgICBTYXZlIGltcG9ydCBzdGF0ZSBhbmQgc3lzLm1vZHVsZXMgY2FjaGUgYW5kIHJlc3RvcmUgaXQgb24gZXhpdC4KKyAgICBUeXBpY2FsIHVzYWdlOgorCisgICAgPj4+IHdpdGggbmFtZXNwYWNlX3RyZWVfY29udGV4dChwYXRoPVsnL3RtcC94eHl5L3BvcnRpb24xJywKKyAgICAuLi4gICAgICAgICAnL3RtcC94eHl5L3BvcnRpb24yJ10pOgorICAgIC4uLiAgICAgcGFzcworICAgICIiIgorICAgICMgdXNlIGRlZmF1bHQgbWV0YV9wYXRoIGFuZCBwYXRoX2hvb2tzIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlCisgICAga3dhcmdzLnNldGRlZmF1bHQoJ21ldGFfcGF0aCcsIHN5cy5tZXRhX3BhdGgpCisgICAga3dhcmdzLnNldGRlZmF1bHQoJ3BhdGhfaG9va3MnLCBzeXMucGF0aF9ob29rcykKKyAgICBpbXBvcnRfY29udGV4dCA9IHV0aWwuaW1wb3J0X3N0YXRlKCoqa3dhcmdzKQorICAgIHdpdGggaW1wb3J0X2NvbnRleHQsIHN5c19tb2R1bGVzX2NvbnRleHQoKToKKyAgICAgICAgeWllbGQKKworY2xhc3MgTmFtZXNwYWNlUGFja2FnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFN1YmNsYXNzZXMgc2hvdWxkIGRlZmluZSBzZWxmLnJvb3QgYW5kIHNlbGYucGF0aHMgKHVuZGVyIHRoYXQgcm9vdCkKKyAgICB0byBiZSBhZGRlZCB0byBzeXMucGF0aC4KKyAgICAiIiIKKyAgICByb290ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICduYW1lc3BhY2VfcGtncycpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucmVzb2x2ZWRfcGF0aHMgPSBbCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBwYXRoKSBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5jdHggPSBuYW1lc3BhY2VfdHJlZV9jb250ZXh0KHBhdGg9c2VsZi5yZXNvbHZlZF9wYXRocykKKyAgICAgICAgc2VsZi5jdHguX19lbnRlcl9fKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBUT0RPOiB3aWxsIHdlIGV2ZXIgd2FudCB0byBwYXNzIGV4Y19pbmZvIHRvIF9fZXhpdF9fPworICAgICAgICBzZWxmLmN0eC5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQorCitjbGFzcyBTaW5nbGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmb28pLCAiPG1vZHVsZSAnZm9vJyAobmFtZXNwYWNlKT4iKQorCisKK2NsYXNzIER5bmFtaWNQYXRoZU5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIG9ubHkgJ2Zvby5vbmUnIGNhbiBiZSBpbXBvcnRlZAorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgICAgICAjIE5vdyBtb2RpZnkgc3lzLnBhdGgKKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwb3J0aW9uMicpKQorCisgICAgICAgICMgQW5kIG1ha2Ugc3VyZSBmb28udHdvIGlzIG5vdyBpbXBvcnRhYmxlCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisKKworY2xhc3MgQ29tYmluZWROYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ2JvdGhfcG9ydGlvbnMnXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKworY2xhc3MgU2VwYXJhdGVkTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMScsICdwb3J0aW9uMiddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKK2NsYXNzIFNlcGFyYXRlZE92ZXJsYXBwaW5nTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMScsICdib3RoX3BvcnRpb25zJ10KKworICAgIGRlZiB0ZXN0X2ZpcnN0X3BhdGhfd2lucyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisgICAgZGVmIHRlc3RfZmlyc3RfcGF0aF93aW5zX2FnYWluKHNlbGYpOgorICAgICAgICBzeXMucGF0aC5yZXZlcnNlKCkKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKyAgICBkZWYgdGVzdF9maXJzdF9wYXRoX3dpbnNfaW1wb3J0aW5nX3NlY29uZF9maXJzdChzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisKK2NsYXNzIFNpbmdsZVppcE5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyd0b3BfbGV2ZWxfcG9ydGlvbjEuemlwJ10KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworCitjbGFzcyBTZXBhcmF0ZWRaaXBOYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3RvcF9sZXZlbF9wb3J0aW9uMS56aXAnLCAncG9ydGlvbjInXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndG9wX2xldmVsX3BvcnRpb24xLnppcCcsIGZvby5vbmUuX19maWxlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJy56aXAnLCBmb28udHdvLl9fZmlsZV9fKQorCisKK2NsYXNzIFNpbmdsZU5lc3RlZFppcE5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyduZXN0ZWRfcG9ydGlvbjEuemlwL25lc3RlZF9wb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgIGRlZiB0ZXN0X2NhbnRfaW1wb3J0X290aGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKworY2xhc3MgU2VwYXJhdGVkTmVzdGVkWmlwTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyduZXN0ZWRfcG9ydGlvbjEuemlwL25lc3RlZF9wb3J0aW9uMScsICdwb3J0aW9uMiddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorICAgICAgICBmbiA9IG9zLnBhdGguam9pbignbmVzdGVkX3BvcnRpb24xLnppcCcsICduZXN0ZWRfcG9ydGlvbjEnKQorICAgICAgICBzZWxmLmFzc2VydEluKGZuLCBmb28ub25lLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcuemlwJywgZm9vLnR3by5fX2ZpbGVfXykKKworCitjbGFzcyBMZWdhY3lTdXBwb3J0KE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbm90X2FfbmFtZXNwYWNlX3BrZycsICdwb3J0aW9uMScsICdwb3J0aW9uMicsICdib3RoX3BvcnRpb25zJ10KKworICAgIGRlZiB0ZXN0X25vbl9uYW1lc3BhY2VfcGFja2FnZV90YWtlc19wcmVjZWRlbmNlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faW5pdF9fJywgZm9vLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCduYW1lc3BhY2UnLCBzdHIoZm9vLl9fbG9hZGVyX18pLmxvd2VyKCkpCisKKworY2xhc3MgRHluYW1pY1BhdGhDYWxjdWxhdGlvbihOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3Byb2plY3QxJywgJ3Byb2plY3QyJ10KKworICAgIGRlZiB0ZXN0X3Byb2plY3QzX2ZhaWxzKHNlbGYpOgorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLm9uZS5hdHRyLCAncGFyZW50IGNoaWxkIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLnR3by5hdHRyLCAncGFyZW50IGNoaWxkIHR3bycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnRocmVlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKworICAgIGRlZiB0ZXN0X3Byb2plY3QzX3N1Y2NlZWRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLm9uZS5hdHRyLCAncGFyZW50IGNoaWxkIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLnR3by5hdHRyLCAncGFyZW50IGNoaWxkIHR3bycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnRocmVlCisKKyAgICAgICAgIyBub3cgYWRkIHByb2plY3QzCisgICAgICAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCAncHJvamVjdDMnKSkKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50aHJlZQorCisgICAgICAgICMgdGhlIHBhdGhzIGR5bmFtaWNhbGx5IGdldCBsb25nZXIsIHRvIGluY2x1ZGUgdGhlIG5ldyBkaXJlY3RvcmllcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLnRocmVlLmF0dHIsICdwYXJlbnQgY2hpbGQgdGhyZWUnKQorCisKK2NsYXNzIFppcFdpdGhNaXNzaW5nRGlyZWN0b3J5KE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbWlzc2luZ19kaXJlY3RvcnkuemlwJ10KKworICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9taXNzaW5nX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBUaGlzIHdpbGwgZmFpbCBiZWNhdXNlIG1pc3NpbmdfZGlyZWN0b3J5LnppcCBjb250YWluczoKKyAgICAgICAgIyAgIExlbmd0aCAgICAgIERhdGUgICAgVGltZSAgICBOYW1lCisgICAgICAgICMgLS0tLS0tLS0tICAtLS0tLS0tLS0tIC0tLS0tICAgLS0tLQorICAgICAgICAjICAgICAgICAyOSAgMjAxMi0wNS0wMyAxODoxMyAgIGZvby9vbmUucHkKKyAgICAgICAgIyAgICAgICAgIDAgIDIwMTItMDUtMDMgMjA6NTcgICBiYXIvCisgICAgICAgICMgICAgICAgIDM4ICAyMDEyLTA1LTAzIDIwOjU3ICAgYmFyL3R3by5weQorICAgICAgICAjIC0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0KKyAgICAgICAgIyAgICAgICAgNjcgICAgICAgICAgICAgICAgICAgICAzIGZpbGVzCisKKyAgICAgICAgIyBCZWNhdXNlIHRoZXJlIGlzIG5vICdmb28vJywgdGhlIHppcGltcG9ydGVyIGN1cnJlbnRseSBkb2Vzbid0CisgICAgICAgICMgIGtub3cgdGhhdCBmb28gaXMgYSBuYW1lc3BhY2UgcGFja2FnZQorCisgICAgICAgIGltcG9ydCBmb28ub25lCisKKyAgICBkZWYgdGVzdF9wcmVzZW50X2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBUaGlzIHN1Y2NlZWRzIGJlY2F1c2UgdGhlcmUgaXMgYSAiYmFyLyIgaW4gdGhlIHppcCBmaWxlCisgICAgICAgIGltcG9ydCBiYXIudHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFyLnR3by5hdHRyLCAnbWlzc2luZ19kaXJlY3RvcnkgZm9vIHR3bycpCisKKworY2xhc3MgTW9kdWxlQW5kTmFtZXNwYWNlUGFja2FnZUluU2FtZURpcihOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UnXQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2JlZm9yZV9uYW1lc3BhY2VfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgZmluZCB0aGUgbW9kdWxlIGluIHByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgICMgIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICBpbXBvcnQgYV90ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYV90ZXN0LmF0dHIsICdpbiBtb2R1bGUnKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoKk5hbWVzcGFjZVBhY2thZ2VUZXN0Ll9fc3ViY2xhc3Nlc19fKCkpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CmluZGV4IDczMzViMjMuLjE5ZmIxMGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgaW8KK2ltcG9ydCBzb2NrZXQKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTI1Nyw2ICsyNTgsMjYgQEAKICAgICAgICAgICAgICMgdmFsdWUKICAgICAgICAgICAgIHNldGF0dHIoY2xzLCBuYW1lLCB3cmFwX21ldGgobWV0aCkpCiAKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgZGVmIGlzX2Nvbm5lY3RlZCgpOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VydmVyLCAnZmlsZScpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlcnZlci5oZWxwKCkKKyAgICAgICAgICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHdpdGggc2VsZi5OTlRQX0NMQVNTKHNlbGYuTk5UUF9IT1NULCB0aW1lb3V0PVRJTUVPVVQsIHVzZW5ldHJjPUZhbHNlKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29ubmVjdGVkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLmhlbHAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jb25uZWN0ZWQoKSkKKworICAgICAgICB3aXRoIHNlbGYuTk5UUF9DTEFTUyhzZWxmLk5OVFBfSE9TVCwgdGltZW91dD1USU1FT1VULCB1c2VuZXRyYz1GYWxzZSkgYXMgc2VydmVyOgorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2Nvbm5lY3RlZCgpKQorCisKIE5ldHdvcmtlZE5OVFBUZXN0c01peGluLndyYXBfbWV0aG9kcygpCiAKIApAQCAtODk0LDcgKzkxNSw3IEBACiAKICAgICBkZWYgX2NoZWNrX2FydGljbGVfYm9keShzZWxmLCBsaW5lcyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stMV0uZGVjb2RlKCd1dGY4JyksICItLSBTaWduZWQgYnkgQW5kcsOpLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTFdLmRlY29kZSgndXRmLTgnKSwgIi0tIFNpZ25lZCBieSBBbmRyw6kuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stMl0sIGIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stM10sIGIiLkhlcmUgaXMgYSBkb3Qtc3RhcnRpbmcgbGluZS4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy00XSwgYiJUaGlzIGlzIGp1c3QgYSB0ZXN0IGFydGljbGUuIikKQEAgLTExMzMsMTIgKzExNTQsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBzdWNjZXNzX3Jlc3ApCiAgICAgICAgICMgV2l0aCBhbiBpdGVyYWJsZSBvZiB0ZXJtaW5hdGVkIGxpbmVzCiAgICAgICAgIGRlZiBpdGVybGluZXMoYik6Ci0gICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoVHJ1ZSkpCisgICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAgICAgICAgIHJlc3AgPSBzZWxmLl9jaGVja19wb3N0X2loYXZlX3N1YihmdW5jLCAqYXJncywgZmlsZV9mYWN0b3J5PWl0ZXJsaW5lcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBzdWNjZXNzX3Jlc3ApCiAgICAgICAgICMgV2l0aCBhbiBpdGVyYWJsZSBvZiBub24tdGVybWluYXRlZCBsaW5lcwogICAgICAgICBkZWYgaXRlcmxpbmVzKGIpOgotICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKEZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSkpCiAgICAgICAgIHJlc3AgPSBzZWxmLl9jaGVja19wb3N0X2loYXZlX3N1YihmdW5jLCAqYXJncywgZmlsZV9mYWN0b3J5PWl0ZXJsaW5lcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBzdWNjZXNzX3Jlc3ApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKaW5kZXggNjQ2NDk1MC4uMmM5ZGFiOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKQEAgLTEsMTAgKzEsMTEgQEAKIGltcG9ydCBudHBhdGgKIGltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBUZXN0RmFpbGVkCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKLWltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0ZXIoZm4sIHdhbnRSZXN1bHQpOgpAQCAtMjEsNyArMjIsOSBAQAogICAgIGZuID0gZm4ucmVwbGFjZSgnWyInLCAnW2IiJykKICAgICBmbiA9IGZuLnJlcGxhY2UoIiwgJyIsICIsIGInIikKICAgICBmbiA9IGZuLnJlcGxhY2UoJywgIicsICcsIGIiJykKLSAgICBnb3RSZXN1bHQgPSBldmFsKGZuKQorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgIGdvdFJlc3VsdCA9IGV2YWwoZm4pCiAgICAgaWYgaXNpbnN0YW5jZSh3YW50UmVzdWx0LCBzdHIpOgogICAgICAgICB3YW50UmVzdWx0ID0gd2FudFJlc3VsdC5lbmNvZGUoJ2FzY2lpJykKICAgICBlbGlmIGlzaW5zdGFuY2Uod2FudFJlc3VsdCwgdHVwbGUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CmluZGV4IGJlZjNkNGMuLjM0MjNkNGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKQEAgLTE1MCw3ICsxNTAsNyBAQAogICAgICAgICAjIGludCwgZmxvYXQsIEZyYWN0aW9uLCBEZWNpbWFsCiAgICAgICAgIHRlc3RfdmFsdWVzID0gWwogICAgICAgICAgICAgZmxvYXQoJy1pbmYnKSwKLSAgICAgICAgICAgIEQoJy0xZTk5OTk5OTk5OScpLAorICAgICAgICAgICAgRCgnLTFlNDI1MDAwMDAwJyksCiAgICAgICAgICAgICAtMWUzMDgsCiAgICAgICAgICAgICBGKC0yMiwgNyksCiAgICAgICAgICAgICAtMy4xNCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CmluZGV4IDdiOTU2MTIuLjc4ZGUyNzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQpAQCAtMzE4LDYgKzMxOCwyMiBAQAogICAgICAgICAgICAgWyItYiJdLCB7J2FjdGlvbic6ICdzdG9yZScsCiAgICAgICAgICAgICAgICAgICAgICAnY2FsbGJhY2tfa3dhcmdzJzogJ2Zvbyd9KQogCisgICAgZGVmIHRlc3Rfbm9fc2luZ2xlX2Rhc2goc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0T3B0aW9uRXJyb3IoCisgICAgICAgICAgICAiaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6ICIKKyAgICAgICAgICAgICJtdXN0IHN0YXJ0IHdpdGggLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWRlYnVnIl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICJvcHRpb24gLWQ6IGludmFsaWQgbG9uZyBvcHRpb24gc3RyaW5nICctZGVidWcnOiBtdXN0IHN0YXJ0IHdpdGgiCisgICAgICAgICAgICAiIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIsCisgICAgICAgICAgICBbIi1kIiwgIi1kZWJ1ZyJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0T3B0aW9uRXJyb3IoCisgICAgICAgICAgICAiaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6ICIKKyAgICAgICAgICAgICJtdXN0IHN0YXJ0IHdpdGggLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWRlYnVnIiwgIi0tZGVidWciXSkKKwogY2xhc3MgVGVzdE9wdGlvblBhcnNlcihCYXNlVGVzdCk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlciA9IE9wdGlvblBhcnNlcigpCkBAIC02MzEsNyArNjQ3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uX2xpc3Q9b3B0aW9ucykKIAogICAgIGRlZiB0ZXN0X3JlcXVpcmVkX3ZhbHVlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFBhcnNlRmFpbChbIi1hIl0sICItYSBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKQorICAgICAgICBzZWxmLmFzc2VydFBhcnNlRmFpbChbIi1hIl0sICItYSBvcHRpb24gcmVxdWlyZXMgMSBhcmd1bWVudCIpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2ludGVnZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VGYWlsKFsiLWIiLCAiNXgiXSwKQEAgLTEwMjMsNyArMTAzOSw3IEBACiAgICAgICAgIFRZUEVfQ0hFQ0tFUlsiZmlsZSJdID0gY2hlY2tfZmlsZQogCiAgICAgZGVmIHRlc3RfZmlsZXR5cGVfb2soc2VsZik6Ci0gICAgICAgIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikuY2xvc2UoKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydFBhcnNlT0soWyItLWZpbGUiLCBzdXBwb3J0LlRFU1RGTiwgIi1hZm9vIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2ZpbGUnOiBzdXBwb3J0LlRFU1RGTiwgJ2EnOiAnZm9vJ30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IGVmMTQ3MzMuLjdkNmIzNzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMTQsMjAgKzE0LDQwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgbW1hcAoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKIGltcG9ydCB1dWlkCitpbXBvcnQgYXN5bmNvcmUKK2ltcG9ydCBhc3luY2hhdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHN0YXQKK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBjb2RlY3MKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAord2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoVHJ1ZSkKK3N0ID0gb3Muc3RhdChfX2ZpbGVfXykKK3N0YXRfc3VwcG9ydHNfc3Vic2Vjb25kID0gKAorICAgICMgY2hlY2sgaWYgZmxvYXQgYW5kIGludCB0aW1lc3RhbXBzIGFyZSBkaWZmZXJlbnQKKyAgICAoc3Quc3RfYXRpbWUgIT0gc3RbN10pCisgICAgb3IgKHN0LnN0X210aW1lICE9IHN0WzhdKQorICAgIG9yIChzdC5zdF9jdGltZSAhPSBzdFs5XSkpCisKICMgRGV0ZWN0IHdoZXRoZXIgd2UncmUgb24gYSBMaW51eCBzeXN0ZW0gdGhhdCB1c2VzIHRoZSAobm93IG91dGRhdGVkCiAjIGFuZCB1bm1haW50YWluZWQpIGxpbnV4dGhyZWFkcyB0aHJlYWRpbmcgbGlicmFyeS4gIFRoZXJlJ3MgYW4gaXNzdWUKICMgd2hlbiBjb21iaW5pbmcgbGludXh0aHJlYWRzIHdpdGggYSBmYWlsZWQgZXhlY3YgY2FsbDogc2VlCiAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU0OTcwLgotaWYgKGhhc2F0dHIob3MsICJjb25mc3RyX25hbWVzIikgYW5kCi0gICAgIkNTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04iIGluIG9zLmNvbmZzdHJfbmFtZXMpOgotICAgIGxpYnB0aHJlYWQgPSBvcy5jb25mc3RyKCJDU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OIikKLSAgICBVU0lOR19MSU5VWFRIUkVBRFM9IGxpYnB0aHJlYWQuc3RhcnRzd2l0aCgibGludXh0aHJlYWRzIikKK2lmIGhhc2F0dHIoc3lzLCAndGhyZWFkX2luZm8nKSBhbmQgc3lzLnRocmVhZF9pbmZvLnZlcnNpb246CisgICAgVVNJTkdfTElOVVhUSFJFQURTID0gc3lzLnRocmVhZF9pbmZvLnZlcnNpb24uc3RhcnRzd2l0aCgibGludXh0aHJlYWRzIikKIGVsc2U6Ci0gICAgVVNJTkdfTElOVVhUSFJFQURTPSBGYWxzZQorICAgIFVTSU5HX0xJTlVYVEhSRUFEUyA9IEZhbHNlCiAKICMgVGVzdHMgY3JlYXRpbmcgVEVTVEZOCiBjbGFzcyBGaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTI0LDYgKzE0NCwxOCBAQAogICAgICAgICBzZWxmLmZkb3Blbl9oZWxwZXIoJ3InKQogICAgICAgICBzZWxmLmZkb3Blbl9oZWxwZXIoJ3InLCAxMDApCiAKKyAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgorICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiLjIiCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiMSIpCisgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIyIikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgVEVTVEZOMikKKyAgICAgICAgb3MucmVwbGFjZShzdXBwb3J0LlRFU1RGTiwgVEVTVEZOMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnN0YXQsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgIjEiKQorCiAKICMgVGVzdCBhdHRyaWJ1dGVzIG9uIHJldHVybiB2YWx1ZXMgZnJvbSBvcy4qc3RhdCogZmFtaWx5LgogY2xhc3MgU3RhdEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE0Miw3ICsxNzQsNiBAQAogICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgInN0YXQiKToKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGltcG9ydCBzdGF0CiAgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoZm5hbWUpCiAKICAgICAgICAgIyBNYWtlIHN1cmUgZGlyZWN0IGFjY2VzcyB3b3JrcwpAQCAtMTYyLDYgKzE5MywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtnZXRhdHRyKHN0YXQsIG5hbWUpXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIG1lbWJlcnMpCiAKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgc3RfP3RpbWUgYW5kIHN0Xz90aW1lX25zIGZpZWxkcyByb3VnaGx5IGFncmVlCisgICAgICAgICMgKHRoZXkgc2hvdWxkIGFsd2F5cyBhZ3JlZSB1cCB0byBhcm91bmQgdGVucy1vZi1taWNyb3NlY29uZHMpCisgICAgICAgIGZvciBuYW1lIGluICdzdF9hdGltZSBzdF9tdGltZSBzdF9jdGltZScuc3BsaXQoKToKKyAgICAgICAgICAgIGZsb2F0eSA9IGludChnZXRhdHRyKHJlc3VsdCwgbmFtZSkgKiAxMDAwMDApCisgICAgICAgICAgICBuYW5vc2Vjb25keSA9IGdldGF0dHIocmVzdWx0LCBuYW1lICsgIl9ucyIpIC8vIDEwMDAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0eSwgbmFub3NlY29uZHksIGRlbHRhPTIpCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0WzIwMF0KICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHRocm93biIpCkBAIC0yMDgsNyArMjQ2LDkgQEAKICAgICAgICAgICAgIGZuYW1lID0gc2VsZi5mbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IGVuY29kZSAlYSBmb3IgdGhlIGZpbGVzeXN0ZW0iICUgc2VsZi5mbmFtZSkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCiAKICAgICBkZWYgdGVzdF9zdGF0dmZzX2F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic3RhdHZmcyIpOgpAQCAtMjY1LDYgKzMwNSwxNDMgQEAKICAgICAgICAgc3QyID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdDIuc3RfbXRpbWUsIGludChzdC5zdF9tdGltZS1kZWx0YSkpCiAKKyAgICBkZWYgX3Rlc3RfdXRpbWUoc2VsZiwgZmlsZW5hbWUsIGF0dHIsIHV0aW1lLCBkZWx0YSk6CisgICAgICAgICMgSXNzdWUgIzEzMzI3IHJlbW92ZWQgdGhlIHJlcXVpcmVtZW50IHRvIHBhc3MgTm9uZSBhcyB0aGUKKyAgICAgICAgIyBzZWNvbmQgYXJndW1lbnQuIENoZWNrIHRoYXQgdGhlIHByZXZpb3VzIG1ldGhvZHMgb2YgcGFzc2luZworICAgICAgICAjIGEgdGltZSB0dXBsZSBvciBOb25lIHdvcmsgaW4gYWRkaXRpb24gdG8gbm8gYXJndW1lbnQuCisgICAgICAgIHN0MCA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgICMgRG9lc24ndCBzZXQgYW55dGhpbmcgbmV3LCBidXQgc2V0cyB0aGUgdGltZSB0dXBsZSB3YXkKKyAgICAgICAgdXRpbWUoZmlsZW5hbWUsIChhdHRyKHN0MCwgInN0X2F0aW1lIiksIGF0dHIoc3QwLCAic3RfbXRpbWUiKSkpCisgICAgICAgICMgU2V0dGluZyB0aGUgdGltZSB0byB0aGUgdGltZSB5b3UganVzdCByZWFkLCB0aGVuIHJlYWRpbmcgYWdhaW4sCisgICAgICAgICMgc2hvdWxkIGFsd2F5cyByZXR1cm4gZXhhY3RseSB0aGUgc2FtZSB0aW1lcy4KKyAgICAgICAgc3QxID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyKHN0MCwgInN0X210aW1lIiksIGF0dHIoc3QxLCAic3RfbXRpbWUiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyKHN0MCwgInN0X2F0aW1lIiksIGF0dHIoc3QxLCAic3RfYXRpbWUiKSkKKyAgICAgICAgIyBTZXQgdG8gdGhlIGN1cnJlbnQgdGltZSBpbiB0aGUgb2xkIGV4cGxpY2l0IHdheS4KKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsIE5vbmUpCisgICAgICAgIHN0MiA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgICMgU2V0IHRvIHRoZSBjdXJyZW50IHRpbWUgaW4gdGhlIG5ldyB3YXkKKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUpCisgICAgICAgIHN0MyA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoYXR0cihzdDIsICJzdF9tdGltZSIpLCBhdHRyKHN0MywgInN0X210aW1lIiksIGRlbHRhPWRlbHRhKQorCisgICAgZGVmIHRlc3RfdXRpbWUoc2VsZik6CisgICAgICAgIGRlZiB1dGltZShmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICByZXR1cm4gb3MudXRpbWUoZmlsZSwgdGltZXMpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWUoc2VsZi5mbmFtZSwgZ2V0YXR0ciwgdXRpbWUsIDEwKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHN1cHBvcnQuVEVTVEZOLCBnZXRhdHRyLCB1dGltZSwgMTApCisKKworICAgIGRlZiBfdGVzdF91dGltZV9ucyhzZWxmLCBzZXRfdGltZXNfbnMsIHRlc3RfZGlyPVRydWUpOgorICAgICAgICBkZWYgZ2V0YXR0cl9ucyhvLCBhdHRyKToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG8sIGF0dHIgKyAiX25zIikKKyAgICAgICAgdGVuX3MgPSAxMCAqIDEwMDAgKiAxMDAwICogMTAwMAorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHNlbGYuZm5hbWUsIGdldGF0dHJfbnMsIHNldF90aW1lc19ucywgdGVuX3MpCisgICAgICAgIGlmIHRlc3RfZGlyOgorICAgICAgICAgICAgc2VsZi5fdGVzdF91dGltZShzdXBwb3J0LlRFU1RGTiwgZ2V0YXR0cl9ucywgc2V0X3RpbWVzX25zLCB0ZW5fcykKKworICAgIGRlZiB0ZXN0X3V0aW1lX25zKHNlbGYpOgorICAgICAgICBkZWYgdXRpbWVfbnMoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnV0aW1lKGZpbGUsIG5zPXRpbWVzKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX25zKHV0aW1lX25zKQorCisgICAgcmVxdWlyZXNfdXRpbWVfZGlyX2ZkID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2ZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICByZXF1aXJlc191dGltZV9mZCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmQgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorICAgIHJlcXVpcmVzX3V0aW1lX25vZm9sbG93X3N5bWxpbmtzID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKworICAgIEByZXF1aXJlc191dGltZV9ub2ZvbGxvd19zeW1saW5rcworICAgIGRlZiB0ZXN0X2x1dGltZXNfbnMoc2VsZik6CisgICAgICAgIGRlZiBsdXRpbWVzX25zKGZpbGUsIHRpbWVzKToKKyAgICAgICAgICAgIHJldHVybiBvcy51dGltZShmaWxlLCBucz10aW1lcywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX25zKGx1dGltZXNfbnMpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVzX25zKHNlbGYpOgorICAgICAgICBkZWYgZnV0aW1lc19ucyhmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCBucz10aW1lcykKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9ucyhmdXRpbWVzX25zLCB0ZXN0X2Rpcj1GYWxzZSkKKworICAgIGRlZiBfdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoc2VsZiwgbmFtZSwgYXJnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGdldGF0dHIob3MsIG5hbWUpKGFyZywgKDUsIDUpLCBucz0oNSwgNSkpCisKKyAgICBkZWYgdGVzdF91dGltZV9pbnZhbGlkX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoJ3V0aW1lJywgc2VsZi5mbmFtZSkKKworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3RhdF9zdXBwb3J0c19zdWJzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnN0YXQoKSBkb2Vzbid0IGhhcyBhIHN1YnNlY29uZCByZXNvbHV0aW9uIikKKyAgICBkZWYgX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNlbGYsIHNldF90aW1lX2Z1bmMpOgorICAgICAgICBhc2VjLCBhbXNlYyA9IDEsIDkwMQorICAgICAgICBhdGltZSA9IGFzZWMgKyBhbXNlYyAqIDFlLTMKKyAgICAgICAgbXNlYywgbW1zZWMgPSAyLCA5MDEKKyAgICAgICAgbXRpbWUgPSBtc2VjICsgbW1zZWMgKiAxZS0zCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5mbmFtZQorICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKDAsIDApKQorICAgICAgICBzZXRfdGltZV9mdW5jKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhUcnVlKQorICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc3Quc3RfYXRpbWUsIGF0aW1lLCBwbGFjZXM9MykKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdC5zdF9tdGltZSwgbXRpbWUsIHBsYWNlcz0zKQorCisgICAgZGVmIHRlc3RfdXRpbWVfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKGF0aW1lLCBtdGltZSkpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVuc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZGlyX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc2F0X3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKKyAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihkaXJuYW1lLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51dGltZShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSwgZGlyX2ZkPWRpcmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZmQpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX25vZm9sbG93X3N5bWxpbmtzCisgICAgZGVmIHRlc3RfbHV0aW1lc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lLCAoYXRpbWUsIG10aW1lKSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9kaXJfZmQKKyAgICBkZWYgdGVzdF91dGltZW5zYXRfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAgZGlyZmQgPSBvcy5vcGVuKGRpcm5hbWUsIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnV0aW1lKG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpLCBkaXJfZmQ9ZGlyZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzPShhdGltZSwgbXRpbWUpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKICAgICAjIFJlc3RyaWN0IHRlc3QgdG8gV2luMzIsIHNpbmNlIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvdGhlcgogICAgICMgc3lzdGVtcyBzdXBwb3J0IGNlbnRpc2Vjb25kcwogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgpAQCAtMjk2LDYgKzQ3MywxOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkNvdWxkIG5vdCBzdGF0IHBhZ2VmaWxlLnN5cyIpCiAKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCisgICAgICAgIGRlZiB0ZXN0XzE1MjYxKHNlbGYpOgorICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCBzdGF0J2luZyBhIGNsb3NlZCBmZCBkb2VzIG5vdCBjYXVzZSBjcmFzaAorICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnN0YXQocikgICAgICAgICAgIyBzaG91bGQgbm90IHJhaXNlIGVycm9yCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICAgICAgb3MuY2xvc2UodykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY3R4OgorICAgICAgICAgICAgICAgIG9zLnN0YXQocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCisKIGZyb20gdGVzdCBpbXBvcnQgbWFwcGluZ190ZXN0cwogCiBjbGFzcyBFbnZpcm9uVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgpAQCAtMzI0LDIzICs1MTQsMjMgQEAKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24KIAogICAgICMgQnVnIDExMTA0NzgKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCiAgICAgZGVmIHRlc3RfdXBkYXRlMihzZWxmKToKICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIvYmluL3NoIik6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQotICAgICAgICAgICAgd2l0aCBvcy5wb3BlbigiL2Jpbi9zaCAtYyAnZWNobyAkSEVMTE8nIikgYXMgcG9wZW46Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCisgICAgICAgIG9zLmVudmlyb24udXBkYXRlKEhFTExPPSJXb3JsZCIpCisgICAgICAgIHdpdGggb3MucG9wZW4oIi9iaW4vc2ggLWMgJ2VjaG8gJEhFTExPJyIpIGFzIHBvcGVuOgorICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgIldvcmxkIikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvYmluL3NoJyksICdyZXF1aXJlcyAvYmluL3NoJykKICAgICBkZWYgdGVzdF9vc19wb3Blbl9pdGVyKHNlbGYpOgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiL2Jpbi9zaCIpOgotICAgICAgICAgICAgd2l0aCBvcy5wb3BlbigKLSAgICAgICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKLSAgICAgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUxXG4iKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTNcbiIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCisgICAgICAgIHdpdGggb3MucG9wZW4oCisgICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKKyAgICAgICAgICAgIGl0ID0gaXRlcihwb3BlbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMVxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lM1xuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCiAgICAgIyBWZXJpZnkgZW52aXJvbiBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgT1MgYXJlIG9mIHRoZQogICAgICMgY29ycmVjdCBzdHIgdHlwZS4KQEAgLTQyNyw4ICs2MTcsOCBAQAogCiAgICAgIyBPbiBGcmVlQlNEIDwgNyBhbmQgT1MgWCA8IDEwLjYsIHVuc2V0ZW52KCkgZG9lc24ndCByZXR1cm4gYSB2YWx1ZSAoaXNzdWUKICAgICAjICMxMzQxNSkuCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2ZyZWVic2QnLCAnZGFyd2luJykpLAotICAgICAgICAgICAgICAgICAgICAgImR1ZSB0byBrbm93biBPUyBidWc6IHNlZSBpc3N1ZSAjMTM0MTUiKQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig3KQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDYpCiAgICAgZGVmIHRlc3RfdW5zZXRfZXJyb3Ioc2VsZik6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgogICAgICAgICAgICAgIyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBsaW1pdGVkIHRvIDMyLDc2NyBjaGFyYWN0ZXJzCkBAIC00NDIsNyArNjMyLDcgQEAKIGNsYXNzIFdhbGtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgZm9yIG9zLndhbGsoKS4iIiIKIAotICAgIGRlZiB0ZXN0X3RyYXZlcnNhbChzZWxmKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGpvaW4KIApAQCAtNDU2LDYgKzY0Niw3IEBACiAgICAgICAgICMgICAgICAgICBTVUIyLyAgICAgICAgICAgICBhIGZpbGUga2lkIGFuZCBhIGRpcnN5bWxpbmsga2lkCiAgICAgICAgICMgICAgICAgICAgIHRtcDMKICAgICAgICAgIyAgICAgICAgICAgbGluay8gICAgICAgICAgIGEgc3ltbGluayB0byBURVNURk4uMgorICAgICAgICAjICAgICAgICAgICBicm9rZW5fbGluawogICAgICAgICAjICAgICAgIFRFU1QyLwogICAgICAgICAjICAgICAgICAgdG1wNCAgICAgICAgICAgICAgYSBsb25lIGZpbGUKICAgICAgICAgd2Fsa19wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QxIikKQEAgLTQ2OCw2ICs2NTksOCBAQAogICAgICAgICBsaW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQogICAgICAgICB0Ml9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIikKICAgICAgICAgdG1wNF9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIiwgInRtcDQiKQorICAgICAgICBsaW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQorICAgICAgICBicm9rZW5fbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJicm9rZW5fbGluayIpCiAKICAgICAgICAgIyBDcmVhdGUgc3R1ZmYuCiAgICAgICAgIG9zLm1ha2VkaXJzKHN1YjExX3BhdGgpCkBAIC00ODQsNyArNjc3LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3ltbGlua190b19kaXIgPSBvcy5zeW1saW5rCiAgICAgICAgICAgICBzeW1saW5rX3RvX2Rpcihvcy5wYXRoLmFic3BhdGgodDJfcGF0aCksIGxpbmtfcGF0aCkKLSAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFsibGluayJdLCBbInRtcDMiXSkKKyAgICAgICAgICAgIHN5bWxpbmtfdG9fZGlyKCdicm9rZW4nLCBicm9rZW5fbGlua19wYXRoKQorICAgICAgICAgICAgc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgWyJsaW5rIl0sIFsiYnJva2VuX2xpbmsiLCAidG1wMyJdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgW10sIFsidG1wMyJdKQogCkBAIC00OTYsNiArNjkwLDcgQEAKICAgICAgICAgIyAgICAgZmxpcHBlZDogIFRFU1RGTiwgU1VCMiwgU1VCMSwgU1VCMTEKICAgICAgICAgZmxpcHBlZCA9IGFsbFswXVsxXVswXSAhPSAiU1VCMSIKICAgICAgICAgYWxsWzBdWzFdLnNvcnQoKQorICAgICAgICBhbGxbMyAtIDIgKiBmbGlwcGVkXVstMV0uc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLCAod2Fsa19wYXRoLCBbIlNVQjEiLCAiU1VCMiJdLCBbInRtcDEiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzEgKyBmbGlwcGVkXSwgKHN1YjFfcGF0aCwgWyJTVUIxMSJdLCBbInRtcDIiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzIgKyBmbGlwcGVkXSwgKHN1YjExX3BhdGgsIFtdLCBbXSkpCkBAIC01MTEsNiArNzA2LDcgQEAKICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnU1VCMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLCAod2Fsa19wYXRoLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQorICAgICAgICBhbGxbMV1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxXSwgc3ViMl90cmVlKQogCiAgICAgICAgICMgV2FsayBib3R0b20tdXAuCkBAIC01MjEsNiArNzE3LDcgQEAKICAgICAgICAgIyAgICAgZmxpcHBlZDogIFNVQjIsIFNVQjExLCBTVUIxLCBURVNURk4KICAgICAgICAgZmxpcHBlZCA9IGFsbFszXVsxXVswXSAhPSAiU1VCMSIKICAgICAgICAgYWxsWzNdWzFdLnNvcnQoKQorICAgICAgICBhbGxbMiAtIDIgKiBmbGlwcGVkXVstMV0uc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzNdLCAod2Fsa19wYXRoLCBbIlNVQjEiLCAiU1VCMiJdLCBbInRtcDEiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsW2ZsaXBwZWRdLCAoc3ViMTFfcGF0aCwgW10sIFtdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbZmxpcHBlZCArIDFdLCAoc3ViMV9wYXRoLCBbIlNVQjExIl0sIFsidG1wMiJdKSkKQEAgLTU1Miw2ICs3NDksODIgQEAKICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRpcm5hbWUpCiAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQogCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmd2FsaycpLCAiVGVzdCBuZWVkcyBvcy5md2FsaygpIikKK2NsYXNzIEZ3YWxrVGVzdHMoV2Fsa1Rlc3RzKToKKyAgICAiIiJUZXN0cyBmb3Igb3MuZndhbGsoKS4iIiIKKworICAgIGRlZiBfY29tcGFyZV90b193YWxrKHNlbGYsIHdhbGtfa3dhcmdzLCBmd2Fsa19rd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgY29tcGFyZSB3aXRoIHdhbGsoKSByZXN1bHRzLgorICAgICAgICAiIiIKKyAgICAgICAgd2Fsa19rd2FyZ3MgPSB3YWxrX2t3YXJncy5jb3B5KCkKKyAgICAgICAgZndhbGtfa3dhcmdzID0gZndhbGtfa3dhcmdzLmNvcHkoKQorICAgICAgICBmb3IgdG9wZG93biwgZm9sbG93X3N5bWxpbmtzIGluIGl0ZXJ0b29scy5wcm9kdWN0KChUcnVlLCBGYWxzZSksIHJlcGVhdD0yKToKKyAgICAgICAgICAgIHdhbGtfa3dhcmdzLnVwZGF0ZSh0b3Bkb3duPXRvcGRvd24sIGZvbGxvd2xpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZ3YWxrX2t3YXJncy51cGRhdGUodG9wZG93bj10b3Bkb3duLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorCisgICAgICAgICAgICBleHBlY3RlZCA9IHt9CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsaygqKndhbGtfa3dhcmdzKToKKyAgICAgICAgICAgICAgICBleHBlY3RlZFtyb290XSA9IChzZXQoZGlycyksIHNldChmaWxlcykpCisKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCoqZndhbGtfa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJvb3QsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbcm9vdF0sIChzZXQoZGlycyksIHNldChmaWxlcykpKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV90b193YWxrKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3RvcCc6IHN1cHBvcnQuVEVTVEZOfQorICAgICAgICBzZWxmLl9jb21wYXJlX3RvX3dhbGsoa3dhcmdzLCBrd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9kaXJfZmQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZkID0gb3Mub3BlbigiLiIsIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgd2Fsa19rd2FyZ3MgPSB7J3RvcCc6IHN1cHBvcnQuVEVTVEZOfQorICAgICAgICAgICAgZndhbGtfa3dhcmdzID0gd2Fsa19rd2FyZ3MuY29weSgpCisgICAgICAgICAgICBmd2Fsa19rd2FyZ3NbJ2Rpcl9mZCddID0gZmQKKyAgICAgICAgICAgIHNlbGYuX2NvbXBhcmVfdG9fd2Fsayh3YWxrX2t3YXJncywgZndhbGtfa3dhcmdzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBkZWYgdGVzdF95aWVsZHNfY29ycmVjdF9kaXJfZmQoc2VsZik6CisgICAgICAgICMgY2hlY2sgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9ycworICAgICAgICBmb3IgdG9wZG93biwgZm9sbG93X3N5bWxpbmtzIGluIGl0ZXJ0b29scy5wcm9kdWN0KChUcnVlLCBGYWxzZSksIHJlcGVhdD0yKToKKyAgICAgICAgICAgIGFyZ3MgPSBzdXBwb3J0LlRFU1RGTiwgdG9wZG93biwgTm9uZQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoKmFyZ3MsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgRkQgaXMgdmFsaWQKKyAgICAgICAgICAgICAgICBvcy5mc3RhdChyb290ZmQpCisgICAgICAgICAgICAgICAgIyByZWR1bmRhbnQgY2hlY2sKKyAgICAgICAgICAgICAgICBvcy5zdGF0KHJvb3RmZCkKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgbGlzdGRpcigpIHJldHVybnMgY29uc2lzdGVudCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG9zLmxpc3RkaXIocm9vdGZkKSksIHNldChkaXJzKSB8IHNldChmaWxlcykpCisKKyAgICBkZWYgdGVzdF9mZF9sZWFrKHNlbGYpOgorICAgICAgICAjIFNpbmNlIHdlJ3JlIG9wZW5pbmcgYSBsb3Qgb2YgRkRzLCB3ZSBtdXN0IGJlIGNhcmVmdWwgdG8gYXZvaWQgbGVha3M6CisgICAgICAgICMgd2UgYm90aCBjaGVjayB0aGF0IGNhbGxpbmcgZndhbGsoKSBhIGxhcmdlIG51bWJlciBvZiB0aW1lcyBkb2Vzbid0CisgICAgICAgICMgeWllbGQgRU1GSUxFLCBhbmQgdGhhdCB0aGUgbWluaW11bSBhbGxvY2F0ZWQgRkQgaGFzbid0IGNoYW5nZWQuCisgICAgICAgIG1pbmZkID0gb3MuZHVwKDEpCisgICAgICAgIG9zLmNsb3NlKG1pbmZkKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgorICAgICAgICAgICAgZm9yIHggaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4pOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbmV3ZmQgPSBvcy5kdXAoMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBuZXdmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdmZCwgbWluZmQpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgY2xlYW51cAorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKyAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICAgICAgc3QgPSBvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQorCisKIGNsYXNzIE1ha2VkaXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKQEAgLTU3NSwxNCArODQ4LDEyIEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKICAgICAgICAgbW9kZSA9IDBvNzc3CiAgICAgICAgIG9sZF9tYXNrID0gb3MudW1hc2soMG8wMjIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCBtb2RlLCBleGlzdF9vaz1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCAwbzc3NiwgZXhpc3Rfb2s9VHJ1ZSkKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnVtYXNrKG9sZF9tYXNrKQorICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUsIGV4aXN0X29rPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgMG83NzYsIGV4aXN0X29rPVRydWUpCisgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgb3MudW1hc2sob2xkX21hc2spCiAKICAgICBkZWYgdGVzdF9leGlzdF9va19zX2lzZ2lkX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzdXBwb3J0LlRFU1RGTiwgJ2RpcjEnKQpAQCAtNTk0LDcgKzg2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIG9zLmxzdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmNobW9kKHN1cHBvcnQuVEVTVEZOLCBleGlzdGluZ190ZXN0Zm5fbW9kZSB8IFNfSVNHSUQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0Nhbm5vdCBzZXQgU19JU0dJRCBmb3IgZGlyLicpCiAgICAgICAgICAgICBpZiAob3MubHN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUgJiBTX0lTR0lEICE9IFNfSVNHSUQpOgogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdObyBzdXBwb3J0IGZvciBTX0lTR0lEIGRpciBtb2RlLicpCkBAIC04NDksMTAgKzExMjAsMTIgQEAKIAogICAgIGRlZiB0ZXN0X2ZwYXRoY29uZihzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihvcywgImZwYXRoY29uZiIpOgorICAgICAgICAgICAgc2VsZi5jaGVjayhvcy5wYXRoY29uZiwgIlBDX05BTUVfTUFYIikKICAgICAgICAgICAgIHNlbGYuY2hlY2sob3MuZnBhdGhjb25mLCAiUENfTkFNRV9NQVgiKQogCiAgICAgZGVmIHRlc3RfZnRydW5jYXRlKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKG9zLCAiZnRydW5jYXRlIik6CisgICAgICAgICAgICBzZWxmLmNoZWNrKG9zLnRydW5jYXRlLCAwKQogICAgICAgICAgICAgc2VsZi5jaGVjayhvcy5mdHJ1bmNhdGUsIDApCiAKICAgICBkZWYgdGVzdF9sc2VlayhzZWxmKToKQEAgLTg4Niw3ICsxMTU5LDkgQEAKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGYxOgogICAgICAgICAgICAgZjEud3JpdGUoInRlc3QiKQogCi0gICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQogICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJyIikgYXMgZjEsIG9wZW4oZmlsZTIsICJyIikgYXMgZjI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lb3BlbmZpbGUoZjEuZmlsZW5vKCksIGYyLmZpbGVubygpKSkKIApAQCAtOTg5LDggKzEyNjQsNyBAQAogICAgICAgICAgICAgb3MubWtkaXIoc2VsZi5kaXIpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZm9yIGZuIGluIGJ5dGVzZm46Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLmJkaXIsIGZuKSwgInciKQotICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5iZGlyLCBmbikpCiAgICAgICAgICAgICAgICAgICAgIGZuID0gb3MuZnNkZWNvZGUoZm4pCiAgICAgICAgICAgICAgICAgICAgIGlmIGZuIGluIHNlbGYudW5pY29kZWZuOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRlIGZpbGVuYW1lIikKQEAgLTEwMDYsNiArMTI4MCwxMyBAQAogICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLnVuaWNvZGVmbgogICAgICAgICAgICAgZm91bmQgPSBzZXQob3MubGlzdGRpcihzZWxmLmRpcikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBleHBlY3RlZCkKKyAgICAgICAgICAgICMgdGVzdCBsaXN0ZGlyIHdpdGhvdXQgYXJndW1lbnRzCisgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSA9IG9zLmdldGN3ZCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIob3Muc2VwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG9zLmxpc3RkaXIoKSksIHNldChvcy5saXN0ZGlyKG9zLnNlcCkpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jaGRpcihjdXJyZW50X2RpcmVjdG9yeSkKIAogICAgICAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgogICAgICAgICAgICAgZm9yIGZuIGluIHNlbGYudW5pY29kZWZuOgpAQCAtMTIwOSw4ICsxNDkwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQobGluayksIG9zLnN0YXQobGluaykpCiAKICAgICAgICAgYnl0ZXNfbGluayA9IG9zLmZzZW5jb2RlKGxpbmspCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKIAogICAgIGRlZiB0ZXN0XzEyMDg0KHNlbGYpOgogICAgICAgICBsZXZlbDEgPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCkBAIC0xMjY5LDYgKzE1NTIsMjIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnNkZWNvZGUoYnl0ZXNmbiksIGZuKQogCiAKKworY2xhc3MgRGV2aWNlRW5jb2RpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYWRfZmQoc2VsZik6CisgICAgICAgICMgUmV0dXJuIE5vbmUgd2hlbiBhbiBmZCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcy5kZXZpY2VfZW5jb2RpbmcoMTIzNDU2KSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmlzYXR0eSgwKSBhbmQgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvcgorICAgICAgICAgICAgKGhhc2F0dHIobG9jYWxlLCAnbmxfbGFuZ2luZm8nKSBhbmQgaGFzYXR0cihsb2NhbGUsICdDT0RFU0VUJykpKSwKKyAgICAgICAgICAgICd0ZXN0IHJlcXVpcmVzIGEgdHR5IGFuZCBlaXRoZXIgV2luZG93cyBvciBubF9sYW5naW5mbyhDT0RFU0VUKScpCisgICAgZGVmIHRlc3RfZGV2aWNlX2VuY29kaW5nKHNlbGYpOgorICAgICAgICBlbmNvZGluZyA9IG9zLmRldmljZV9lbmNvZGluZygwKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmNvZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpKQorCisKIGNsYXNzIFBpZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHBpZCcpLCAidGVzdCBuZWVkcyBvcy5nZXRwcGlkIikKICAgICBkZWYgdGVzdF9nZXRwcGlkKHNlbGYpOgpAQCAtMTI5MCwxMiArMTU4OSw0NzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4odXNlcl9uYW1lKSwgMCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHJpb3JpdHknKSBhbmQgaGFzYXR0cihvcywgJ3NldHByaW9yaXR5JyksCisgICAgICAgICAgICAgICAgICAgICAibmVlZHMgb3MuZ2V0cHJpb3JpdHkgYW5kIG9zLnNldHByaW9yaXR5IikKK2NsYXNzIFByb2dyYW1Qcmlvcml0eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3Igb3MuZ2V0cHJpb3JpdHkoKSBhbmQgb3Muc2V0cHJpb3JpdHkoKS4iIiIKKworICAgIGRlZiB0ZXN0X3NldF9nZXRfcHJpb3JpdHkoc2VsZik6CisKKyAgICAgICAgYmFzZSA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCisgICAgICAgIG9zLnNldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCksIGJhc2UgKyAxKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXdfcHJpbyA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCisgICAgICAgICAgICBpZiBiYXNlID49IDE5IGFuZCBuZXdfcHJpbyA8PSAxOToKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSBhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcHJpbywgYmFzZSArIDEpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Muc2V0cHJpb3JpdHkob3MuUFJJT19QUk9DRVNTLCBvcy5nZXRwaWQoKSwgYmFzZSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRUFDQ0VTOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisKK2lmIHRocmVhZGluZyBpcyBub3QgTm9uZToKKyAgICBjbGFzcyBTZW5kZmlsZVRlc3RTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlciwgdGhyZWFkaW5nLlRocmVhZCk6CisKKyAgICAgICAgY2xhc3MgSGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4pOgorICAgICAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubikKKyAgICAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlciA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYucHVzaChiIjIyMCByZWFkeVxyXG4iKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3JlYWQoc2VsZik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVjdig0MDk2KQorICAgICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyLmFwcGVuZChkYXRhKQorCisgICAgICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHNlbGYuaW5fYnVmZmVyKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmJpbmQoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCisgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisKKyAgICAgICAgIyAtLS0gcHVibGljIEFQSQorCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgcnVubmluZyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAgICAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICAgICBhc3NlcnQgbm90IHNlbGYucnVubmluZworICAgICAgICAgICAgc2VsZi5fX2ZsYWcgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5zdGFydChzZWxmKQorICAgICAgICAgICAgc2VsZi5fX2ZsYWcud2FpdCgpCisKKyAgICAgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICAgICBhc3NlcnQgc2VsZi5ydW5uaW5nCisgICAgICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5qb2luKCkKKworICAgICAgICBkZWYgd2FpdChzZWxmKToKKyAgICAgICAgICAgICMgd2FpdCBmb3IgaGFuZGxlciBjb25uZWN0aW9uIHRvIGJlIGNsb3NlZCwgdGhlbiBzdG9wIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIHdoaWxlIG5vdCBnZXRhdHRyKHNlbGYuaGFuZGxlcl9pbnN0YW5jZSwgImNsb3NlZCIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDAxKQorICAgICAgICAgICAgc2VsZi5zdG9wKCkKKworICAgICAgICAjIC0tLSBpbnRlcm5hbHMKKworICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fX2ZsYWcuc2V0KCkKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX2FjdGl2ZSBhbmQgYXN5bmNvcmUuc29ja2V0X21hcDoKKyAgICAgICAgICAgICAgICBzZWxmLl9hY3RpdmVfbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4wMDEsIGNvdW50PTEpCisgICAgICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2sucmVsZWFzZSgpCisgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorCisgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuYWNjZXB0KCkKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlcl9pbnN0YW5jZSA9IHNlbGYuSGFuZGxlcihjb25uKQorCisgICAgICAgIGRlZiBoYW5kbGVfY29ubmVjdChzZWxmKToKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICBoYW5kbGVfcmVhZCA9IGhhbmRsZV9jb25uZWN0CisKKyAgICAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgcmFpc2UKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcgaXMgbm90IE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3NlbmRmaWxlJyksICJ0ZXN0IG5lZWRzIG9zLnNlbmRmaWxlKCkiKQorY2xhc3MgVGVzdFNlbmRmaWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIERBVEEgPSBiIjEyMzQ1YWJjZGUiICogMTYgKiAxMDI0ICAjIDE2MCBLQgorICAgIFNVUFBPUlRfSEVBREVSU19UUkFJTEVSUyA9IG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgibGludXgiKSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic29sYXJpcyIpIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJzdW5vcyIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNscy5EQVRBKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyID0gU2VuZGZpbGVUZXN0U2VydmVyKChzdXBwb3J0LkhPU1QsIDApKQorICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCisgICAgICAgIHNlbGYuY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3QoKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpKQorICAgICAgICBzZWxmLmNsaWVudC5zZXR0aW1lb3V0KDEpCisgICAgICAgICMgc3luY2hyb25pemUgYnkgd2FpdGluZyBmb3IgIjIyMCByZWFkeSIgcmVzcG9uc2UKKyAgICAgICAgc2VsZi5jbGllbnQucmVjdigxMDI0KQorICAgICAgICBzZWxmLnNvY2tubyA9IHNlbGYuY2xpZW50LmZpbGVubygpCisgICAgICAgIHNlbGYuZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHNlbGYuZmlsZW5vID0gc2VsZi5maWxlLmZpbGVubygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXIucnVubmluZzoKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorCisgICAgZGVmIHNlbmRmaWxlX3dyYXBwZXIoc2VsZiwgc29jaywgZmlsZSwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9W10sIHRyYWlsZXJzPVtdKToKKyAgICAgICAgIiIiQSBoaWdoZXIgbGV2ZWwgd3JhcHBlciByZXByZXNlbnRpbmcgaG93IGFuIGFwcGxpY2F0aW9uIGlzCisgICAgICAgIHN1cHBvc2VkIHRvIHVzZSBzZW5kZmlsZSgpLgorICAgICAgICAiIiIKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLlNVUFBPUlRfSEVBREVSU19UUkFJTEVSUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnNlbmRmaWxlKHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnNlbmRmaWxlKHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBlcnJuby5FQ09OTlJFU0VUOgorICAgICAgICAgICAgICAgICAgICAjIGRpc2Nvbm5lY3RlZAorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGVsaWYgZXJyLmVycm5vIGluIChlcnJuby5FQUdBSU4sIGVycm5vLkVCVVNZKToKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIHJldHJ5IHNlbmQgZGF0YQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9zZW5kX3dob2xlX2ZpbGUoc2VsZik6CisgICAgICAgICMgbm9ybWFsIHNlbmQKKyAgICAgICAgdG90YWxfc2VudCA9IDAKKyAgICAgICAgb2Zmc2V0ID0gMAorICAgICAgICBuYnl0ZXMgPSA0MDk2CisgICAgICAgIHdoaWxlIHRvdGFsX3NlbnQgPCBsZW4oc2VsZi5EQVRBKToKKyAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbnQgPD0gbmJ5dGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZmZzZXQsIHRvdGFsX3NlbnQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b3RhbF9zZW50LCBsZW4oc2VsZi5EQVRBKSkKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgbGVuKHNlbGYuREFUQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5EQVRBKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hdF9jZXJ0YWluX29mZnNldChzZWxmKToKKyAgICAgICAgIyBzdGFydCBzZW5kaW5nIGEgZmlsZSBhdCBhIGNlcnRhaW4gb2Zmc2V0CisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgIG9mZnNldCA9IGxlbihzZWxmLkRBVEEpIC8vIDIKKyAgICAgICAgbXVzdF9zZW5kID0gbGVuKHNlbGYuREFUQSkgLSBvZmZzZXQKKyAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICB3aGlsZSB0b3RhbF9zZW50IDwgbXVzdF9zZW5kOgorICAgICAgICAgICAgc2VudCA9IHNlbGYuc2VuZGZpbGVfd3JhcHBlcihzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIG9mZnNldCwgbmJ5dGVzKQorICAgICAgICAgICAgaWYgc2VudCA9PSAwOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBvZmZzZXQgKz0gc2VudAorICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VudCA8PSBuYnl0ZXMpCisKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBleHBlY3RlZCA9IHNlbGYuREFUQVtsZW4oc2VsZi5EQVRBKSAvLyAyOl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b3RhbF9zZW50LCBsZW4oZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgbGVuKGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X29mZnNldF9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgIyBzcGVjaWZ5IGFuIG9mZnNldCA+IGZpbGUgc2l6ZQorICAgICAgICBvZmZzZXQgPSBsZW4oc2VsZi5EQVRBKSArIDQwOTYKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VudCA9IG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgb2Zmc2V0LCA0MDk2KQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBTb2xhcmlzIGNhbiByYWlzZSBFSU5WQUwgaWYgb2Zmc2V0ID49IGZpbGUgbGVuZ3RoLCBpZ25vcmUuCisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlZBTDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCAwKQorICAgICAgICBzZWxmLmNsaWVudC5zaHV0ZG93bihzb2NrZXQuU0hVVF9SRFdSKQorICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICBkYXRhID0gc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5nZXRfZGF0YSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYicnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9vZmZzZXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIC0xLCA0MDk2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVkFMKQorCisgICAgIyAtLS0gaGVhZGVycyAvIHRyYWlsZXJzIHRlc3RzCisKKyAgICBpZiBTVVBQT1JUX0hFQURFUlNfVFJBSUxFUlM6CisKKyAgICAgICAgZGVmIHRlc3RfaGVhZGVycyhzZWxmKToKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgICAgICBzZW50ID0gb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W2IieCIgKiA1MTJdKQorICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICBvZmZzZXQgPSA0MDk2CisgICAgICAgICAgICBuYnl0ZXMgPSA0MDk2CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKworICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YSA9IGIieCIgKiA1MTIgKyBzZWxmLkRBVEEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKGV4cGVjdGVkX2RhdGEpKQorICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgICAgICBkYXRhID0gc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5nZXRfZGF0YSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZGF0YSksIGhhc2goZXhwZWN0ZWRfZGF0YSkpCisKKyAgICAgICAgZGVmIHRlc3RfdHJhaWxlcnMoc2VsZik6CisgICAgICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoYiJhYmNkZSIpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3JiJylhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIFRFU1RGTjIpCisgICAgICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIGYuZmlsZW5vKCksIDAsIDQwOTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnM9W2IiMTIzNDUiXSkKKyAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJhYmNkZTEyMzQ1IikKKworICAgICAgICBpZiBoYXNhdHRyKG9zLCAiU0ZfTk9ESVNLSU8iKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZsYWdzKHNlbGYpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1vcy5TRl9OT0RJU0tJTykKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyBub3QgaW4gKGVycm5vLkVCVVNZLCBlcnJuby5FQUdBSU4pOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworCitkZWYgc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpOgorICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGZpbmFsbHk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgorICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCisgICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCisgICAgcmV0dXJuIG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCksCisgICAgICAgICAgICAgICAgICAgICAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCitjbGFzcyBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgX2NoZWNrX3hhdHRyc19zdHIoc2VsZiwgcywgZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyLCAqKmt3YXJncyk6CisgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgb3BlbihmbiwgIndiIikuY2xvc2UoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIGluaXRfeGF0dHIgPSBsaXN0eGF0dHIoZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbml0X3hhdHRyLCBsaXN0KQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiIiwgKiprd2FyZ3MpCisgICAgICAgIHhhdHRyID0gc2V0KGluaXRfeGF0dHIpCisgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiIiKQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiaGVsbG8iLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiaGVsbG8iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImJ5ZSIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImJ5ZSIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJmb28iLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQorICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdDIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCisgICAgICAgIHJlbW92ZXhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKyAgICAgICAgeGF0dHIucmVtb3ZlKCJ1c2VyLnRlc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgKiprd2FyZ3MpLCBiImZvbyIpCisgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJhIioxMDI0LCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKSwgYiJhIioxMDI0KQorICAgICAgICByZW1vdmV4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICBtYW55ID0gc29ydGVkKCJ1c2VyLnRlc3R7fSIuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDEwMCkpCisgICAgICAgIGZvciB0aGluZyBpbiBtYW55OgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHRoaW5nLCBiIngiLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHNldChpbml0X3hhdHRyKSB8IHNldChtYW55KSkKKworICAgIGRlZiBfY2hlY2tfeGF0dHJzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGRlZiBtYWtlX2J5dGVzKHMpOgorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKHMsICJhc2NpaSIpCisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIoc3RyLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKG1ha2VfYnl0ZXMsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0eGF0dHIpCisKKyAgICBkZWYgdGVzdF9scGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0eGF0dHIsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2ZkcyhzZWxmKToKKyAgICAgICAgZGVmIGdldHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MuZ2V0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBkZWYgc2V0eGF0dHIocGF0aCwgKmFyZ3MpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgZGVmIHJlbW92ZXhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmV4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCisgICAgICAgIGRlZiBsaXN0eGF0dHIocGF0aCwgKmFyZ3MpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHJldHVybiBvcy5saXN0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnMoZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQorY2xhc3MgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIGltcG9ydCBudAorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgZm9yIGZ1bmMsICphcmdzIGluICgKKyAgICAgICAgICAgICAgICAobnQuX2dldGZ1bGxwYXRobmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChudC5faXNkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MuYWNjZXNzLCBmaWxlbmFtZSwgb3MuUl9PSyksCisgICAgICAgICAgICAgICAgKG9zLmNoZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmNobW9kLCBmaWxlbmFtZSwgMG83NzcpLAorICAgICAgICAgICAgICAgIChvcy5nZXRjd2RiLCksCisgICAgICAgICAgICAgICAgKG9zLmxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmxpc3RkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MubHN0YXQsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MubWtkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Mub3BlbiwgZmlsZW5hbWUsIG9zLk9fUkRPTkxZKSwKKyAgICAgICAgICAgICAgICAob3MucmVuYW1lLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5ybWRpciwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5zdGFydGZpbGUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Muc3RhdCwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy51bmxpbmssIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MudXRpbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLCBmdW5jLCAqYXJncykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9zeW1saW5rKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfdGVybWluYWxfc2l6ZScpLCAicmVxdWlyZXMgb3MuZ2V0X3Rlcm1pbmFsX3NpemUiKQorY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIGdldF90ZXJtaW5hbF9zaXplKCkgcmV0dXJucyBhIG1lYW5pbmdmdWwgdmFsdWUuCisKKyAgICAgICAgVGhlcmUncyBubyBlYXN5IHBvcnRhYmxlIHdheSB0byBhY3R1YWxseSBjaGVjayB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgdGVybWluYWwsIHNvIGxldCdzIGNoZWNrIGlmIGl0IHJldHVybnMgc29tZXRoaW5nIHNlbnNpYmxlIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaXplID0gb3MuZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IgZS5lcnJubyBpbiAoZXJybm8uRUlOVkFMLCBlcnJuby5FTk9UVFkpOgorICAgICAgICAgICAgICAgICMgVW5kZXIgd2luMzIgYSBnZW5lcmljIE9TRXJyb3IgY2FuIGJlIHRocm93biBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZmFpbGVkIHRvIHF1ZXJ5IHRlcm1pbmFsIHNpemUiKQorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmNvbHVtbnMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUubGluZXMsIDApCisKKyAgICBkZWYgdGVzdF9zdHR5X21hdGNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBzdHR5IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0cworCisgICAgICAgIHN0dHkgYWN0dWFsbHkgdGVzdHMgc3RkaW4sIHNvIGdldF90ZXJtaW5hbF9zaXplIGlzIGludm9rZWQgb24KKyAgICAgICAgc3RkaW4gZXhwbGljaXRseS4gSWYgc3R0eSBzdWNjZWVkZWQsIHRoZW4gZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBzaG91bGQgd29yayB0b28uCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaXplID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzdHR5JywgJ3NpemUnXSkuZGVjb2RlKCkuc3BsaXQoKQorICAgICAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJzdHR5IGludm9jYXRpb24gZmFpbGVkIikKKyAgICAgICAgZXhwZWN0ZWQgPSAoaW50KHNpemVbMV0pLCBpbnQoc2l6ZVswXSkpICMgcmV2ZXJzZWQgb3JkZXIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBhY3R1YWwgPSBvcy5nZXRfdGVybWluYWxfc2l6ZShzeXMuX19zdGRpbl9fLmZpbGVubygpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IgZS5lcnJubyBpbiAoZXJybm8uRUlOVkFMLCBlcnJuby5FTk9UVFkpOgorICAgICAgICAgICAgICAgICMgVW5kZXIgd2luMzIgYSBnZW5lcmljIE9TRXJyb3IgY2FuIGJlIHRocm93biBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZmFpbGVkIHRvIHF1ZXJ5IHRlcm1pbmFsIHNpemUiKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisKK0BzdXBwb3J0LnJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBGaWxlVGVzdHMsCiAgICAgICAgIFN0YXRBdHRyaWJ1dGVUZXN0cywKICAgICAgICAgRW52aXJvblRlc3RzLAogICAgICAgICBXYWxrVGVzdHMsCisgICAgICAgIEZ3YWxrVGVzdHMsCiAgICAgICAgIE1ha2VkaXJUZXN0cywKICAgICAgICAgRGV2TnVsbFRlc3RzLAogICAgICAgICBVUmFuZG9tVGVzdHMsCkBAIC0xMzA3LDkgKzIwNjUsMTUgQEAKICAgICAgICAgV2luMzJLaWxsVGVzdHMsCiAgICAgICAgIFdpbjMyU3ltbGlua1Rlc3RzLAogICAgICAgICBGU0VuY29kaW5nVGVzdHMsCisgICAgICAgIERldmljZUVuY29kaW5nVGVzdHMsCiAgICAgICAgIFBpZFRlc3RzLAogICAgICAgICBMb2dpblRlc3RzLAogICAgICAgICBMaW5rVGVzdHMsCisgICAgICAgIFRlc3RTZW5kZmlsZSwKKyAgICAgICAgUHJvZ3JhbVByaW9yaXR5VGVzdHMsCisgICAgICAgIEV4dGVuZGVkQXR0cmlidXRlVGVzdHMsCisgICAgICAgIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJLAorICAgICAgICBUZXJtc2l6ZVRlc3RzLAogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkgYi9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5CmluZGV4IDljYjg5ZDYuLjM5MDhhMDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weQpAQCAtMTcwLDYgKzE3MCwyMiBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoZHNwLmNsb3NlZCkKIAorICAgIGRlZiB0ZXN0X29uX2Nsb3NlZChzZWxmKToKKyAgICAgICAgZHNwID0gb3NzYXVkaW9kZXYub3BlbigndycpCisgICAgICAgIGRzcC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5maWxlbm8pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5yZWFkLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aud3JpdGUsIGIneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC53cml0ZWFsbCwgYid4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5vYnVmY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5vYnVmY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5vYnVmZnJlZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLmdldHB0cikKKworICAgICAgICBtaXhlciA9IG9zc2F1ZGlvZGV2Lm9wZW5taXhlcigpCisgICAgICAgIG1peGVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWl4ZXIuZmlsZW5vKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5IGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CmluZGV4IDhiM2RmMzcuLjI0ZWMyYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKQEAgLTUsNiArNSw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgRW52aXJvbm1lbnRWYXJHdWFyZCwgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIE9TWEVudmlyb25tZW50VmFyaWFibGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yNyw4ICsyOCw2IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX3N5cygnUFlUSE9ORVhFQ1VUQUJMRScsICc9PScsICdzeXMuZXhlY3V0YWJsZScpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCi0KICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9ORVhUX0ZSQU1FV09SSycpOgogICAgICAgICBydW5fdW5pdHRlc3QoT1NYRW52aXJvbm1lbnRWYXJpYWJsZVRlc3RDYXNlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IDcwZWI5YzAuLmM5M2EyY2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC01MSw2ICs1MSwxMCBAQAogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiAoeWllbGQgMSkqMiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHJldHVybjsgeWllbGQgMSIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHlpZWxkIDE7IHJldHVybiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHlpZWxkIGZyb20gMSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHggPSB5aWVsZCBmcm9tIDEiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiBmKCh5aWVsZCBmcm9tIDEpKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHlpZWxkIDE7IHJldHVybiAxIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZvciB4IGluIHJhbmdlKDMwKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICB5aWVsZCB4XG4iKQpAQCAtNzE3LDYgKzcyMSwxMiBAQAogCiAgICAgIyBYWFggdGVzdHMgZm9yIHBpY2tsaW5nIGFuZCB1bnBpY2tsaW5nIG9mIFNUIG9iamVjdHMgc2hvdWxkIGdvIGhlcmUKIAorY2xhc3MgT3RoZXJQYXJzZXJDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3R3b19hcmdzX3RvX2V4cHIoc2VsZik6CisgICAgICAgICMgU2VlIGJ1ZyAjMTIyNjQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmV4cHIoImEiLCAiYiIpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKQEAgLTcyNSw2ICs3MzUsNyBAQAogICAgICAgICBDb21waWxlVGVzdENhc2UsCiAgICAgICAgIFBhcnNlclN0YWNrTGltaXRUZXN0Q2FzZSwKICAgICAgICAgU1RPYmplY3RUZXN0Q2FzZSwKKyAgICAgICAgT3RoZXJQYXJzZXJDYXNlLAogICAgICkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BkYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CmluZGV4IGQyOGIwNDIuLjBmN2E5ODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CkBAIC0yMSw5ICsyMSwxMiBAQAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHNlbGYucmVhbF9zdGRpbiA9IHN5cy5zdGRpbgogICAgICAgICBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KHNlbGYuaW5wdXQpCisgICAgICAgIHNlbGYub3JpZ190cmFjZSA9IHN5cy5nZXR0cmFjZSgpIGlmIGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBlbHNlIE5vbmUKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKICAgICAgICAgc3lzLnN0ZGluID0gc2VsZi5yZWFsX3N0ZGluCisgICAgICAgIGlmIHNlbGYub3JpZ190cmFjZToKKyAgICAgICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLm9yaWdfdHJhY2UpCiAKIAogZGVmIHRlc3RfcGRiX2Rpc3BsYXlob29rKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CmluZGV4IDUzNzE5ZDMuLjFlNzgyY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CkBAIC0zLDEzICszLDE2IEBACiBpbXBvcnQgc3lzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIG1hdGggaW1wb3J0IGNvcHlzaWduCiAKIGRlZiBkaXNhc3NlbWJsZShmdW5jKToKICAgICBmID0gU3RyaW5nSU8oKQogICAgIHRtcCA9IHN5cy5zdGRvdXQKICAgICBzeXMuc3Rkb3V0ID0gZgotICAgIGRpcy5kaXMoZnVuYykKLSAgICBzeXMuc3Rkb3V0ID0gdG1wCisgICAgdHJ5OgorICAgICAgICBkaXMuZGlzKGZ1bmMpCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLnN0ZG91dCA9IHRtcAogICAgIHJlc3VsdCA9IGYuZ2V0dmFsdWUoKQogICAgIGYuY2xvc2UoKQogICAgIHJldHVybiByZXN1bHQKQEAgLTE3LDYgKzIwLDcgQEAKIGRlZiBkaXNfc2luZ2xlKGxpbmUpOgogICAgIHJldHVybiBkaXNhc3NlbWJsZShjb21waWxlKGxpbmUsICcnLCAnc2luZ2xlJykpCiAKKwogY2xhc3MgVGVzdFRyYW5mb3Jtcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF91bm90KHNlbGYpOgpAQCAtOTksNiArMTAzLDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGFzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JVSUxEX1RVUExFJywgYXNtKQogCisgICAgICAgICMgTG9uZyB0dXBsZXMgc2hvdWxkIGJlIGZvbGRlZCB0b28uCisgICAgICAgIGFzbSA9IGRpc19zaW5nbGUocmVwcih0dXBsZShyYW5nZSgxMDAwMCkpKSkKKyAgICAgICAgIyBPbmUgTE9BRF9DT05TVCBmb3IgdGhlIHR1cGxlLCBvbmUgZm9yIHRoZSBOb25lIHJldHVybiB2YWx1ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzbS5jb3VudCgnTE9BRF9DT05TVCcpLCAyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9UVVBMRScsIGFzbSkKKwogICAgICAgICAjIEJ1ZyAxMDUzODE5OiAgVHVwbGUgb2YgY29uc3RhbnRzIG1pc2lkZW50aWZpZWQgd2hlbiBwcmVzZW50ZWQgd2l0aDoKICAgICAgICAgIyAuIC4gLiBvcGNvZGVfd2l0aF9hcmcgMTAwICAgdW5hcnlfb3Bjb2RlICAgQlVJTERfVFVQTEUgMSAgLiAuIC4KICAgICAgICAgIyBUaGUgZm9sbG93aW5nIHdvdWxkIHNlZ2ZhdWx0IHVwb24gY29tcGlsYXRpb24KQEAgLTIwOCwxNCArMjE4LDEzIEBACiAgICAgICAgICMgb3V0IG9mIHJhbmdlCiAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJmdXUiWzEwXScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCi0gICAgICAgICMgbm9uLUJNUCBjaGFyIChzZWUgIzUwNTcpCi0gICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJcVTAwMDEyMzQ1IlswXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCi0KIAogICAgIGRlZiB0ZXN0X2ZvbGRpbmdfb2ZfdW5hcnlvcHNfb25fY29uc3RhbnRzKHNlbGYpOgogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCiAgICAgICAgICAgICAoJy0wLjUnLCAnKC0wLjUpJyksICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBuZWdhdGl2ZQorICAgICAgICAgICAgKCctMC4wJywgJygtMC4wKScpLCAgICAgICAgICAgICAgICAgICAgICMgLTAuMAorICAgICAgICAgICAgKCctKDEuMC0xLjApJywnKC0wLjApJyksICAgICAgICAgICAgICAgICMgLTAuMCBhZnRlciBmb2xkaW5nCisgICAgICAgICAgICAoJy0wJywgJygwKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyAtMAogICAgICAgICAgICAgKCd+LTInLCAnKDEpJyksICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgaW52ZXJ0CiAgICAgICAgICAgICAoJysxJywgJygxKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBwb3NpdGl2ZQogICAgICAgICApOgpAQCAtMjIzLDYgKzIzMiwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20sIGFzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VOQVJZXycsIGFzbSkKIAorICAgICAgICAjIENoZWNrIHRoYXQgLTAuMCB3b3JrcyBhZnRlciBtYXJzaGFsaW5nCisgICAgICAgIGRlZiBuZWd6ZXJvKCk6CisgICAgICAgICAgICByZXR1cm4gLSgxLjAtMS4wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VOQVJZXycsIGRpc2Fzc2VtYmxlKG5lZ3plcm8pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weXNpZ24oMS4wLCBuZWd6ZXJvKCkpIDwgMCkKKwogICAgICAgICAjIFZlcmlmeSB0aGF0IHVuZm9sZGFibGVzIGFyZSBza2lwcGVkCiAgICAgICAgIGZvciBsaW5lLCBlbGVtIGluICgKICAgICAgICAgICAgICgnLSJhYmMiJywgIignYWJjJykiKSwgICAgICAgICAgICAgICAgICAjIHVuYXJ5IG5lZ2F0aXZlCkBAIC0yODUsNiArMzAxLDI1IEBACiAgICAgICAgIGFzbSA9IGRpc2Fzc2VtYmxlKGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JJTkFSWV9BREQnLCBhc20pCiAKKyAgICBkZWYgdGVzdF9jb25zdGFudF9mb2xkaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMTI0NDogYWdncmVzc2l2ZSBjb25zdGFudCBmb2xkaW5nLgorICAgICAgICBleHBycyA9IFsKKyAgICAgICAgICAgICIzICogLTUiLAorICAgICAgICAgICAgIi0zICogNSIsCisgICAgICAgICAgICAiMiAqICgzICogNCkiLAorICAgICAgICAgICAgIigyICogMykgKiA0IiwKKyAgICAgICAgICAgICIoLTEsIDIsIDMpIiwKKyAgICAgICAgICAgICIoMSwgLTIsIDMpIiwKKyAgICAgICAgICAgICIoMSwgMiwgLTMpIiwKKyAgICAgICAgICAgICIoMSwgMiwgLTMpICogNiIsCisgICAgICAgICAgICAibGFtYmRhIHg6IHggaW4geygzICogLTUpICsgKC0xIC0gNiksICgxLCAtMiwgMykgKiAyLCBOb25lfSIsCisgICAgICAgIF0KKyAgICAgICAgZm9yIGUgaW4gZXhwcnM6CisgICAgICAgICAgICBhc20gPSBkaXNfc2luZ2xlKGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBhc20sIGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfJywgYXNtLCBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfJywgYXNtLCBlKQorCiBjbGFzcyBUZXN0QnVnbGV0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9idWdfMTE1MTAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CmluZGV4IDZkODkxZTUuLjRiMTZjYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CkBAIC0xLDYgKzEsOSBAQAogIyBUZXN0IHRoZSBVbmljb2RlIHZlcnNpb25zIG9mIG5vcm1hbCBmaWxlIGZ1bmN0aW9ucwogIyBvcGVuLCBvcy5vcGVuLCBvcy5zdGF0LiBvcy5saXN0ZGlyLCBvcy5yZW5hbWUsIG9zLnJlbW92ZSwgb3MubWtkaXIsIG9zLmNoZGlyLCBvcy5ybWRpcgotaW1wb3J0IHN5cywgb3MsIHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCBub3JtYWxpemUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0zOCw4ICs0MSw4IEBACiAgICAgICAgICcxN19cdTIwMDFcdTIwMDFcdTIwMDFBJywKICAgICAgICAgJzE4X1x1MjAwM1x1MjAwM1x1MjAwM0EnLCAgIyA9PSBORkMoJ1x1MjAwMVx1MjAwMVx1MjAwMUEnKQogICAgICAgICAnMTlfXHUwMDIwXHUwMDIwXHUwMDIwQScsICAjICdcdTAwMjAnID09ICcgJyA9PSBORktDKCdcdTIwMDAnKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBORktDKCdcdTIwMDEnKSA9PSBORktDKCdcdTIwMDMnKQotXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgTkZLQygnXHUyMDAxJykgPT0gTkZLQygnXHUyMDAzJykKKyAgICBdKQogCiAKICMgSXMgaXQgVW5pY29kZS1mcmllbmRseT8KQEAgLTcxLDcgKzc0LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZmlsZXMgPSBzZXQoKQogICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmZpbGVzOgpAQCAtOTAsMTUgKzkzLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKHNlbGYubm9ybWFsX2Zvcm0sIHMpCiAgICAgICAgIHJldHVybiBzCiAKLSAgICBkZWYgX2FwcGx5X2ZhaWx1cmUoc2VsZiwgZm4sIGZpbGVuYW1lLCBleHBlY3RlZF9leGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2ZuX2luX2V4Y2VwdGlvbiA9IFRydWUpOgorICAgIGRlZiBfYXBwbHlfZmFpbHVyZShzZWxmLCBmbiwgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4Y2VwdGlvbj1GaWxlTm90Rm91bmRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZmlsZW5hbWU9VHJ1ZSk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uKSBhcyBjOgogICAgICAgICAgICAgZm4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y19maWxlbmFtZSA9IGMuZXhjZXB0aW9uLmZpbGVuYW1lCi0gICAgICAgICMgdGhlICJmaWxlbmFtZSIgZXhjZXB0aW9uIGF0dHJpYnV0ZSBtYXkgYmUgZW5jb2RlZAotICAgICAgICBpZiBpc2luc3RhbmNlKGV4Y19maWxlbmFtZSwgYnl0ZXMpOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQotICAgICAgICBpZiBjaGVja19mbl9pbl9leGNlcHRpb246CisgICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lCisgICAgICAgIGlmIGZuIGlzIG9zLmxpc3RkaXIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZXhjX2ZpbGVuYW1lLCBfLCB3aWxkY2FyZCA9IGV4Y19maWxlbmFtZS5ycGFydGl0aW9uKG9zLnNlcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lsZGNhcmQsICcqLionKQorICAgICAgICBpZiBjaGVja19maWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2ZpbGVuYW1lLCBmaWxlbmFtZSwgIkZ1bmN0aW9uICclcyglYSkgZmFpbGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggYmFkIGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb246ICVhIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbi5fX25hbWVfXywgZmlsZW5hbWUsIGV4Y19maWxlbmFtZSkpCkBAIC0xMDcsMTMgKzExMiwxOCBAQAogICAgICAgICAjIFBhc3Mgbm9uLWV4aXN0aW5nIFVuaWNvZGUgZmlsZW5hbWVzIGFsbCBvdmVyIHRoZSBwbGFjZS4KICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKICAgICAgICAgICAgIG5hbWUgPSAibm90XyIgKyBuYW1lCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUsIElPRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgIyBsaXN0ZGlyIG1heSBhcHBlbmQgYSB3aWxkY2FyZCB0byB0aGUgZmlsZW5hbWUsIHNvIGRvbnQgY2hlY2sKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgT1NFcnJvciwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lKQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICMgV2luZG93cyBpcyBsdW5hdGljLiBJc3N1ZSAjMTMzNjYuCisgICAgICAgIF9saXN0ZGlyX2ZhaWx1cmUgPSBOb3RBRGlyZWN0b3J5RXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yCisgICAgZWxzZToKKyAgICAgICAgX2xpc3RkaXJfZmFpbHVyZSA9IE5vdEFEaXJlY3RvcnlFcnJvcgogCiAgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKQEAgLTEyMSwxMiArMTMxLDEzIEBACiAgICAgICAgICAgICBmLndyaXRlKChuYW1lKydcbicpLmVuY29kZSgidXRmLTgiKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgb3Muc3RhdChuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lLCBzZWxmLl9saXN0ZGlyX2ZhaWx1cmUpCiAKICAgICAjIFNraXAgdGhlIHRlc3Qgb24gZGFyd2luLCBiZWNhdXNlIGRhcndpbiBkb2VzIG5vcm1hbGl6ZSB0aGUgZmlsZW5hbWUgdG8KICAgICAjIE5GRCAoYSB2YXJpYW50IG9mIFVuaWNvZGUgTkZEIGZvcm0pLiBOb3JtYWxpemUgdGhlIGZpbGVuYW1lIHRvIE5GQywgTkZLQywKICAgICAjIE5GS0QgaW4gUHl0aG9uIGlzIHVzZWxlc3MsIGJlY2F1c2UgZGFyd2luIHdpbGwgbm9ybWFsaXplIGl0IGxhdGVyIGFuZCBzbwogICAgICMgb3BlbigpLCBvcy5zdGF0KCksIGV0Yy4gZG9uJ3QgcmFpc2UgYW55IGV4Y2VwdGlvbi4KLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmV2ZWxhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJlbGV2YW50IHRlc3Qgb24gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKICAgICAgICAgZmlsZXMgPSBzZXQoc2VsZi5maWxlcykKICAgICAgICAgb3RoZXJzID0gc2V0KCkKQEAgLTEzNCwyMSArMTQ1LDIyIEBACiAgICAgICAgICAgICBvdGhlcnMgfD0gc2V0KG5vcm1hbGl6ZShuZiwgZmlsZSkgZm9yIGZpbGUgaW4gZmlsZXMpCiAgICAgICAgIG90aGVycyAtPSBmaWxlcwogICAgICAgICBmb3IgbmFtZSBpbiBvdGhlcnM6Ci0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUsIElPRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgIyBsaXN0ZGlyIG1heSBhcHBlbmQgYSB3aWxkY2FyZCB0byB0aGUgZmlsZW5hbWUsIHNvIGRvbnQgY2hlY2sKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgT1NFcnJvciwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lKQogCiAgICAgIyBTa2lwIHRoZSB0ZXN0IG9uIGRhcndpbiwgYmVjYXVzZSBkYXJ3aW4gdXNlcyBhIG5vcm1hbGl6YXRpb24gZGlmZmVyZW50CiAgICAgIyB0aGFuIFB5dGhvbiBORkQgbm9ybWFsaXphdGlvbjogZmlsZW5hbWVzIGFyZSBkaWZmZXJlbnQgZXZlbiBpZiB3ZSB1c2UKICAgICAjIFB5dGhvbiBORkQgbm9ybWFsaXphdGlvbi4KLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmV2ZWxhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJlbGV2YW50IHRlc3Qgb24gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X2xpc3RkaXIoc2VsZik6CiAgICAgICAgIHNmMCA9IHNldChzZWxmLmZpbGVzKQotICAgICAgICBmMSA9IG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4uZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgZjEgPSBvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQogICAgICAgICBmMiA9IG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNmMiA9IHNldChvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sIGYpIGZvciBmIGluIGYyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNmMCwgc2YyLCAiJWEgIT0gJWEiICUgKHNmMCwgc2YyKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKaW5kZXggMTE5YzdlYS4uNmRhOGQyZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKQEAgLTQyLDE5ICs0Miw2IEBACiAgICAgICAgIHMgPSBUZW1wbGF0ZSgnJHdobyBsaWtlcyAkJCcpCiAgICAgICAgIGVxKHMuc3Vic3RpdHV0ZShkaWN0KHdobz0ndGltJywgd2hhdD0naGFtJykpLCAndGltIGxpa2VzICQnKQogCi0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgY2xhc3MgTXlQYXR0ZXJuKFRlbXBsYXRlKToKLSAgICAgICAgICAgIHBhdHRlcm4gPSByIiIiCi0gICAgICAgICAgICAoPzoKLSAgICAgICAgICAgICg/UDxpbnZhbGlkPikgICAgICAgICAgICB8Ci0gICAgICAgICAgICAoP1A8ZXNjYXBlZD4lKGRlbGltKXMpICAgfAotICAgICAgICAgICAgQCg/UDxuYW1lZD4lKGlkKXMpICAgICAgIHwKLSAgICAgICAgICAgIEB7KD9QPGJyYWNlZD4lKGlkKXMpfSAgICAKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgICIiIgotICAgICAgICBzID0gTXlQYXR0ZXJuKCckJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcy5zdWJzdGl0dXRlLCBkaWN0KCkpIAotCiAgICAgZGVmIHRlc3RfcGVyY2VudHMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gVGVtcGxhdGUoJyUoZm9vKXMgJGZvbyAke2Zvb30nKQpAQCAtMTcyLDYgKzE1OSwyNiBAQAogICAgICAgICB2YWwgPSB0LnNhZmVfc3Vic3RpdHV0ZSh7J2xvY2F0aW9uJzogJ0NsZXZlbGFuZCd9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbCwgJ1B5Q29uIGluIENsZXZlbGFuZCcpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3dpdGhfbm9fbGluZXMoc2VsZik6CisgICAgICAgICMgVGhlIGVycm9yIGZvcm1hdHRpbmcgZm9yIGludmFsaWQgdGVtcGxhdGVzCisgICAgICAgICMgaGFzIGEgc3BlY2lhbCBjYXNlIGZvciBubyBkYXRhIHRoYXQgdGhlIGRlZmF1bHQKKyAgICAgICAgIyBwYXR0ZXJuIGNhbid0IHRyaWdnZXIgKGFsd2F5cyBoYXMgYXQgbGVhc3QgJyQnKQorICAgICAgICAjIFNvIHdlIGNyYWZ0IGEgcGF0dGVybiB0aGF0IGlzIGFsd2F5cyBpbnZhbGlkCisgICAgICAgICMgd2l0aCBubyBsZWFkaW5nIGRhdGEuCisgICAgICAgIGNsYXNzIE15VGVtcGxhdGUoVGVtcGxhdGUpOgorICAgICAgICAgICAgcGF0dGVybiA9IHIiIiIKKyAgICAgICAgICAgICAgKD9QPGludmFsaWQ+KSB8CisgICAgICAgICAgICAgIHVucmVhY2hhYmxlKAorICAgICAgICAgICAgICAgICg/UDxuYW1lZD4pICAgfAorICAgICAgICAgICAgICAgICg/UDxicmFjZWQ+KSAgfAorICAgICAgICAgICAgICAgICg/UDxlc2NhcGVkPikKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIiIiCisgICAgICAgIHMgPSBNeVRlbXBsYXRlKCcnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIHMuc3Vic3RpdHV0ZSh7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGluZSAxLCBjb2wgMScsIHN0cihlcnIuZXhjZXB0aW9uKSkKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfdmFsdWVzKHNlbGYpOgogICAgICAgICBzID0gVGVtcGxhdGUoJyR3aG8gbGlrZXMgJHdoYXQnKQogICAgICAgICBkID0gZGljdCh3aG89J3RceGZmbScsIHdoYXQ9J2ZceGZlXGZlZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKaW5kZXggZGYwZjY0ZC4uMmU2YjkwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQpAQCAtMTcsMTIgKzE3LDcgQEAKIAogICAgIGRlZiB0ZXN0X25vbl9ibXBfbm9ybWFsaXplZChzZWxmKToKICAgICAgICAg8J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoiA9IDEKLSAgICAgICAgIyBPbiB3aWRlIGJ1aWxkcywgdGhpcyBpcyBub3JtYWxpemVkLCBidXQgb24gbmFycm93IG9uZXMgaXQgaXMgbm90LiBTZWUKLSAgICAgICAgIyAjMTI3NDYuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIiLCBkaXIoKSkKLSAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuY2FzZS5fRXhwZWN0ZWRGYWlsdXJlKHN5cy5leGNfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJVbmljb2RlIiwgZGlyKCkpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5MmMxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQpAQCAtMCwwICsxLDIxMSBAQAoraW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgb3MKK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGVycm5vCitmcm9tIGVycm5vIGltcG9ydCBFRVhJU1QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2NsYXNzIFN1Yk9TRXJyb3IoT1NFcnJvcik6CisgICAgcGFzcworCitjbGFzcyBTdWJPU0Vycm9yV2l0aEluaXQoT1NFcnJvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGJhcik6CisgICAgICAgIHNlbGYuYmFyID0gYmFyCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVzc2FnZSkKKworY2xhc3MgU3ViT1NFcnJvcldpdGhOZXcoT1NFcnJvcik6CisgICAgZGVmIF9fbmV3X18oY2xzLCBtZXNzYWdlLCBiYXopOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5iYXogPSBiYXoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworY2xhc3MgU3ViT1NFcnJvckNvbWJpbmVkSW5pdEZpcnN0KFN1Yk9TRXJyb3JXaXRoSW5pdCwgU3ViT1NFcnJvcldpdGhOZXcpOgorICAgIHBhc3MKKworY2xhc3MgU3ViT1NFcnJvckNvbWJpbmVkTmV3Rmlyc3QoU3ViT1NFcnJvcldpdGhOZXcsIFN1Yk9TRXJyb3JXaXRoSW5pdCk6CisgICAgcGFzcworCitjbGFzcyBTdWJPU0Vycm9yV2l0aFN0YW5kYWxvbmVJbml0KE9TRXJyb3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEhpZXJhcmNoeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoT1NFcnJvci5fX25hbWVfXywgJ09TRXJyb3InKQorICAgICAgICBzZWxmLmFzc2VydElzKElPRXJyb3IsIE9TRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3NvY2tldF9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29ja2V0LmVycm9yLCBJT0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC5nYWllcnJvci5fX2Jhc2VfXywgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQuaGVycm9yLl9fYmFzZV9fLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC50aW1lb3V0Ll9fYmFzZV9fLCBPU0Vycm9yKQorCisgICAgZGVmIHRlc3Rfc2VsZWN0X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGVjdC5lcnJvciwgT1NFcnJvcikKKworICAgICMgbW1hcC5lcnJvciBpcyB0ZXN0ZWQgaW4gdGVzdF9tbWFwCisKKyAgICBfcGVwX21hcCA9ICIiIgorICAgICAgICArLS0gQmxvY2tpbmdJT0Vycm9yICAgICAgICBFQUdBSU4sIEVBTFJFQURZLCBFV09VTERCTE9DSywgRUlOUFJPR1JFU1MKKyAgICAgICAgKy0tIENoaWxkUHJvY2Vzc0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNISUxECisgICAgICAgICstLSBDb25uZWN0aW9uRXJyb3IKKyAgICAgICAgICAgICstLSBCcm9rZW5QaXBlRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUElQRSwgRVNIVVRET1dOCisgICAgICAgICAgICArLS0gQ29ubmVjdGlvbkFib3J0ZWRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDT05OQUJPUlRFRAorICAgICAgICAgICAgKy0tIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTlJFRlVTRUQKKyAgICAgICAgICAgICstLSBDb25uZWN0aW9uUmVzZXRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTlJFU0VUCisgICAgICAgICstLSBGaWxlRXhpc3RzRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVFWElTVAorICAgICAgICArLS0gRmlsZU5vdEZvdW5kRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTk9FTlQKKyAgICAgICAgKy0tIEludGVycnVwdGVkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJTlRSCisgICAgICAgICstLSBJc0FEaXJlY3RvcnlFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJU0RJUgorICAgICAgICArLS0gTm90QURpcmVjdG9yeUVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOT1RESVIKKyAgICAgICAgKy0tIFBlcm1pc3Npb25FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQUNDRVMsIEVQRVJNCisgICAgICAgICstLSBQcm9jZXNzTG9va3VwRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU1JDSAorICAgICAgICArLS0gVGltZW91dEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVElNRURPVVQKKyAgICAiIiIKKyAgICBkZWYgX21ha2VfbWFwKHMpOgorICAgICAgICBfbWFwID0ge30KKyAgICAgICAgZm9yIGxpbmUgaW4gcy5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgnKy0gJykKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleGNuYW1lLCBfLCBlcnJuYW1lcyA9IGxpbmUucGFydGl0aW9uKCcgJykKKyAgICAgICAgICAgIGZvciBlcnJuYW1lIGluIGZpbHRlcihOb25lLCBlcnJuYW1lcy5zdHJpcCgpLnNwbGl0KCcsICcpKToKKyAgICAgICAgICAgICAgICBfbWFwW2dldGF0dHIoZXJybm8sIGVycm5hbWUpXSA9IGdldGF0dHIoYnVpbHRpbnMsIGV4Y25hbWUpCisgICAgICAgIHJldHVybiBfbWFwCisgICAgX21hcCA9IF9tYWtlX21hcChfcGVwX21hcCkKKworICAgIGRlZiB0ZXN0X2Vycm5vX21hcHBpbmcoc2VsZik6CisgICAgICAgICMgVGhlIE9TRXJyb3IgY29uc3RydWN0b3IgbWFwcyBlcnJub3MgdG8gc3ViY2xhc3NlcworICAgICAgICAjIEEgc2FtcGxlIHRlc3QgZm9yIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGUgPSBPU0Vycm9yKEVFWElTVCwgIkJhZCBmaWxlIGRlc2NyaXB0b3IiKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIEZpbGVFeGlzdHNFcnJvcikKKyAgICAgICAgIyBFeGhhdXN0aXZlIHRlc3RpbmcKKyAgICAgICAgZm9yIGVycmNvZGUsIGV4YyBpbiBzZWxmLl9tYXAuaXRlbXMoKToKKyAgICAgICAgICAgIGUgPSBPU0Vycm9yKGVycmNvZGUsICJTb21lIG1lc3NhZ2UiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBleGMpCisgICAgICAgIG90aGVyY29kZXMgPSBzZXQoZXJybm8uZXJyb3Jjb2RlKSAtIHNldChzZWxmLl9tYXApCisgICAgICAgIGZvciBlcnJjb2RlIGluIG90aGVyY29kZXM6CisgICAgICAgICAgICBlID0gT1NFcnJvcihlcnJjb2RlLCAiU29tZSBtZXNzYWdlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3RyeV9leGNlcHQoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gInNvbWVfaG9wZWZ1bGx5X25vbl9leGlzdGluZ19maWxlIgorCisgICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCB0cnkgLi4gZXhjZXB0IGNoZWNrcyB0aGUgY29uY3JldGUgZXhjZXB0aW9uCisgICAgICAgICMgKEZpbGVOb3RGb3VuZEVycm9yKSBhbmQgbm90IHRoZSBiYXNlIHR5cGUgc3BlY2lmaWVkIHdoZW4KKyAgICAgICAgIyBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Qgd2FzIGNhbGxlZC4KKyAgICAgICAgIyAoaXQgaXMgdGhlcmVmb3JlIGRlbGliZXJhdGUgdGhhdCBpdCBkb2Vzbid0IHVzZSBhc3NlcnRSYWlzZXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9wZW4oZmlsZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkIGhhdmUgcmFpc2VkIGEgRmlsZU5vdEZvdW5kRXJyb3IiKQorCisgICAgICAgICMgQW5vdGhlciB0ZXN0IGZvciBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkIGhhdmUgcmFpc2VkIGEgRmlsZU5vdEZvdW5kRXJyb3IiKQorCisKK2NsYXNzIEF0dHJpYnV0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dpbmRvd3NfZXJyb3Ioc2VsZik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dpbmVycm9yJywgZGlyKE9TRXJyb3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignd2luZXJyb3InLCBkaXIoT1NFcnJvcikpCisKKyAgICBkZWYgdGVzdF9wb3NpeF9lcnJvcihzZWxmKToKKyAgICAgICAgZSA9IE9TRXJyb3IoRUVYSVNULCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIsICJmb28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5zdHJlcnJvciwgIkZpbGUgYWxyZWFkeSBleGlzdHMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmlsZW5hbWUsICJmb28udHh0IikKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCBOb25lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cy1zcGVjaWZpYyB0ZXN0IikKKyAgICBkZWYgdGVzdF9lcnJub190cmFuc2xhdGlvbihzZWxmKToKKyAgICAgICAgIyBFUlJPUl9BTFJFQURZX0VYSVNUUyAoMTgzKSAtPiBFRVhJU1QKKyAgICAgICAgZSA9IE9TRXJyb3IoMCwgIkZpbGUgYWxyZWFkeSBleGlzdHMiLCAiZm9vLnR4dCIsIDE4MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCAxODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuc3RyZXJyb3IsICJGaWxlIGFscmVhZHkgZXhpc3RzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiZm9vLnR4dCIpCisKKyAgICBkZWYgdGVzdF9ibG9ja2luZ2lvZXJyb3Ioc2VsZik6CisgICAgICAgIGFyZ3MgPSAoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpCisgICAgICAgIGZvciBuIGluIHJhbmdlKDYpOgorICAgICAgICAgICAgZSA9IEJsb2NraW5nSU9FcnJvcigqYXJnc1s6bl0pCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBlLmNoYXJhY3RlcnNfd3JpdHRlbgorICAgICAgICBlID0gQmxvY2tpbmdJT0Vycm9yKCJhIiwgImIiLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuY2hhcmFjdGVyc193cml0dGVuLCAzKQorICAgICAgICBlLmNoYXJhY3RlcnNfd3JpdHRlbiA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmNoYXJhY3RlcnNfd3JpdHRlbiwgNSkKKworICAgICMgWFhYIFZNU0Vycm9yIG5vdCB0ZXN0ZWQKKworCitjbGFzcyBFeHBsaWNpdFN1YmNsYXNzaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9lcnJub19tYXBwaW5nKHNlbGYpOgorICAgICAgICAjIFdoZW4gY29uc3RydWN0aW5nIGFuIE9TRXJyb3Igc3ViY2xhc3MsIGVycm5vIG1hcHBpbmcgaXNuJ3QgZG9uZQorICAgICAgICBlID0gU3ViT1NFcnJvcihFRVhJU1QsICJCYWQgZmlsZSBkZXNjcmlwdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdWJPU0Vycm9yKQorCisgICAgZGVmIHRlc3RfaW5pdF9vdmVycmlkZW4oc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aEluaXQoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9rd2RhcmdzKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhJbml0KCJzb21lIG1lc3NhZ2UiLCBiYXI9ImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisKKyAgICBkZWYgdGVzdF9uZXdfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhOZXcoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfbmV3X2t3ZGFyZ3Moc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aE5ldygic29tZSBtZXNzYWdlIiwgYmF6PSJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9uZXdfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvckNvbWJpbmVkSW5pdEZpcnN0KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJhciwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXosICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisgICAgICAgIGUgPSBTdWJPU0Vycm9yQ29tYmluZWROZXdGaXJzdCgic29tZSBtZXNzYWdlIiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdGFuZGFsb25lKHNlbGYpOgorICAgICAgICAjIF9faW5pdF9fIGRvZXNuJ3QgcHJvcGFnYXRlIHRvIE9TRXJyb3IuX19pbml0X18gKHNlZSBpc3N1ZSAjMTUyMjkpCisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aFN0YW5kYWxvbmVJbml0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJycpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorCitpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTY5ZTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKQEAgLTAsMCArMSw5NjUgQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisKKyIiIgorVGVzdCBzdWl0ZSBmb3IgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbgorCithZGFwdGVkIGZyb20gb3JpZ2luYWwgdGVzdHMgd3JpdHRlbiBieSBHcmVnIEV3aW5nCitzZWUgPGh0dHA6Ly93d3cuY29zYy5jYW50ZXJidXJ5LmFjLm56L2dyZWcuZXdpbmcvcHl0aG9uL3lpZWxkLWZyb20vWWllbGRGcm9tLVB5dGhvbjMuMS4yLXJldjUuemlwPgorIiIiCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGlvCitpbXBvcnQgc3lzCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHBhcnNlcgorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCisKK2NsYXNzIFRlc3RQRVAzODBPcGVyYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3Qgc2VtYW50aWNzLgorICAgICIiIgorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9pbml0aWFsX25leHRfdG9fc3ViZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIGluaXRpYWwgbmV4dCgpIGNhbGwgdG8gc3ViZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHlpZWxkIDQyCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDQyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX2V4Y2VwdGlvbl9pbl9pbml0aWFsX25leHRfY2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmFpc2luZyBleGNlcHRpb24gaW4gaW5pdGlhbCBuZXh0KCkgY2FsbAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzcGFuaXNoIGlucXVpc2l0aW9uIG9jY3VycmVkIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJzcGFuaXNoIGlucXVpc2l0aW9uIG9jY3VycmVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX25leHRfY2FsbF90b19zdWJnZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgbmV4dCgpIGNhbGwgdG8gc3ViZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfZXhjZXB0aW9uX2luX2RlbGVnYXRlZF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJhaXNpbmcgZXhjZXB0aW9uIGluIGRlbGVnYXRlZCBuZXh0KCkgY2FsbAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX3NlbmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2Ygc2VuZCgpCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB4ID0geWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGcgPSBnMSgpCisgICAgICAgIHkgPSBuZXh0KGcpCisgICAgICAgIHggPSAxCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgeSA9IGcuc2VuZCh4KQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeSwpKQorICAgICAgICAgICAgICAgIHggKz0gMQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgImcyIHJlY2VpdmVkIDIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJnMiByZWNlaXZlZCAzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiZzEgcmVjZWl2ZWQgNCIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2hhbmRsaW5nX2V4Y2VwdGlvbl93aGlsZV9kZWxlZ2F0aW5nX3NlbmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGhhbmRsaW5nIGV4Y2VwdGlvbiB3aGlsZSBkZWxlZ2F0aW5nICdzZW5kJworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZzEoKQorICAgICAgICAgICAgeSA9IG5leHQoZykKKyAgICAgICAgICAgIHggPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICAgICAgeSA9IGcuc2VuZCh4KQorICAgICAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHksKSkKKyAgICAgICAgICAgICAgICAgICAgeCArPSAxCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0b3BJdGVyYXRpb24iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLHJ1bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgImcyIHJlY2VpdmVkIDIiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ19jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGluZyAnY2xvc2UnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBnID0gZzEoKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9oYW5kaW5nX2V4Y2VwdGlvbl93aGlsZV9kZWxlZ2F0aW5nX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBoYW5kbGluZyBleGNlcHRpb24gd2hpbGUgZGVsZWdhdGluZyAnY2xvc2UnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm55YmJsZXMgaGF2ZSBleHBsb2RlZCB3aXRoIGRlbGlnaHQiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnID0gZzEoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIGcuY2xvc2UoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJueWJibGVzIGhhdmUgZXhwbG9kZWQgd2l0aCBkZWxpZ2h0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLl9fY29udGV4dF9fLCBHZW5lcmF0b3JFeGl0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpbmdfdGhyb3coc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpbmcgJ3Rocm93JworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgICAgICBlID0gVmFsdWVFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICAgICAgZy50aHJvdyhlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfdmFsdWVfYXR0cmlidXRlX29mX1N0b3BJdGVyYXRpb25fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCAndmFsdWUnIGF0dHJpYnV0ZSBvZiBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgcGV4KGUpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCIlczogJXMiICUgKGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgidmFsdWUgPSAlcyIgJSAoZS52YWx1ZSwpKQorICAgICAgICBlID0gU3RvcEl0ZXJhdGlvbigpCisgICAgICAgIHBleChlKQorICAgICAgICBlID0gU3RvcEl0ZXJhdGlvbigic3BhbSIpCisgICAgICAgIHBleChlKQorICAgICAgICBlLnZhbHVlID0gImVnZ3MiCisgICAgICAgIHBleChlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uOiAiLAorICAgICAgICAgICAgInZhbHVlID0gTm9uZSIsCisgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbjogc3BhbSIsCisgICAgICAgICAgICAidmFsdWUgPSBzcGFtIiwKKyAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uOiBzcGFtIiwKKyAgICAgICAgICAgICJ2YWx1ZSA9IGVnZ3MiLAorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25fdmFsdWVfY3Jhc2goc2VsZik6CisgICAgICAgICMgVGhlcmUgdXNlZCB0byBiZSBhIHJlZmNvdW50IGVycm9yIHdoZW4gdGhlIHJldHVybiB2YWx1ZQorICAgICAgICAjIHN0b3JlZCBpbiB0aGUgU3RvcEl0ZXJhdGlvbiBoYXMgYSByZWZjb3VudCBvZiAxLgorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHlpZWxkICJnMiIKKyAgICAgICAgICAgIHJldHVybiBbNDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnMSgpKSwgWyJnMiJdKQorCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3JfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBnZW5lcmF0b3IgcmV0dXJuIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKKyAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIoNDIpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKKyAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIodiA9IE5vbmUpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgICAgICBpZiB2OgorICAgICAgICAgICAgICAgIHJldHVybiB2CisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCBOb25lIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCA0MiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9uZXh0X3RvX25vbl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgbmV4dCgpIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgZm9yIHggaW4gZygpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIllpZWxkZWQgMCIsCisgICAgICAgICAgICAiWWllbGRlZCAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDIiLAorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9uX29mX3NlbmROb25lX3RvX25leHQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNvbnZlcnNpb24gb2Ygc2VuZChOb25lKSB0byBuZXh0KCkKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICB5ID0gZ2kuc2VuZChOb25lKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkOiAlcyIgJSAoeSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJZaWVsZGVkOiAwIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiAyIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfY2xvc2VfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBjbG9zZSgpIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoInN0YXJ0aW5nIGciKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmaW5pc2hpbmcgZyIpCisgICAgICAgIGdpID0gZygpCisgICAgICAgIG5leHQoZ2kpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgZ2kuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAic3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiZmluaXNoaW5nIGciLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ190aHJvd190b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW5nICd0aHJvdycgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZyIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgxMCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICB4ID0gbmV4dChnaSkKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIGUgPSBWYWx1ZUVycm9yKCJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgICAgICBnaS50aHJvdyhlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiWWllbGRlZCAwIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDEiLAorICAgICAgICAgICAgIllpZWxkZWQgMiIsCisgICAgICAgICAgICAiWWllbGRlZCAzIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDQiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2F0dGVtcHRpbmdfdG9fc2VuZF90b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBhdHRlbXB0aW5nIHRvIHNlbmQgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgic3RhcnRpbmcgZyIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgzKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzaG91bGQgbm90IGJlIGhlcmUiKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImZpbmlzaGluZyBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgzKToKKyAgICAgICAgICAgICAgICB5ID0gZ2kuc2VuZCg0MikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlNob3VsZCBub3QgaGF2ZSB5aWVsZGVkOiIsIHkpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2VuZCIsIGUuYXJnc1swXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgid2FzIGFibGUgdG8gc2VuZCBpbnRvIG5vbi1nZW5lcmF0b3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJzdGFydGluZyBnIiwKKyAgICAgICAgICAgICJmaW5pc2hpbmcgZyIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9icm9rZW5fZ2V0YXR0cl9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc3ViaXRlcmF0b3Igd2l0aCBhIGJyb2tlbiBnZXRhdHRyIGltcGxlbWVudGF0aW9uCisgICAgICAgICIiIgorICAgICAgICBjbGFzcyBCcm9rZW46CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIEJyb2tlbigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLnNlbmQoMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZ2kpLCAxKQorICAgICAgICAgICAgZ2kudGhyb3coQXR0cmlidXRlRXJyb3IpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignWmVyb0RpdmlzaW9uRXJyb3InLCBvdXRwdXQuZ2V0dmFsdWUoKSkKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9pbl9pbml0aWFsX25leHRfY2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZXhjZXB0aW9uIGluIGluaXRpYWwgbmV4dCgpIGNhbGwKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIGFib3V0IHRvIHlpZWxkIGZyb20gZzIiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgeWllbGQgMS8wCisgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdpID0gZzEoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IscnVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJnMSBhYm91dCB0byB5aWVsZCBmcm9tIGcyIgorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYXR0ZW1wdGVkX3lpZWxkX2Zyb21fbG9vcChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgYXR0ZW1wdGVkIHlpZWxkLWZyb20gbG9vcAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzE6IHN0YXJ0aW5nIikKKyAgICAgICAgICAgIHlpZWxkICJ5MSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzE6IGFib3V0IHRvIHlpZWxkIGZyb20gZzIiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHNob3VsZCBub3QgYmUgaGVyZSIpCisKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyOiBzdGFydGluZyIpCisgICAgICAgICAgICB5aWVsZCAieTIiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyOiBhYm91dCB0byB5aWVsZCBmcm9tIGcxIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZ2kKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnMSgpCisgICAgICAgICAgICBmb3IgeSBpbiBnaToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQ6ICVzIiAlICh5LCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGRpZG4ndCByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZzE6IHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiB5MSIsCisgICAgICAgICAgICAiZzE6IGFib3V0IHRvIHlpZWxkIGZyb20gZzIiLAorICAgICAgICAgICAgImcyOiBzdGFydGluZyIsCisgICAgICAgICAgICAiWWllbGRlZDogeTIiLAorICAgICAgICAgICAgImcyOiBhYm91dCB0byB5aWVsZCBmcm9tIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3JldHVybmluZ192YWx1ZV9mcm9tX2RlbGVnYXRlZF90aHJvdyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmV0dXJuaW5nIHZhbHVlIGZyb20gZGVsZWdhdGVkICd0aHJvdycKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZXhjZXB0IEx1bmNoRXJyb3I6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJDYXVnaHQgTHVuY2hFcnJvciBpbiBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIGx1bmNoIHNhdmVkIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiB5ZXQgbW9yZSBzcGFtIgorICAgICAgICBjbGFzcyBMdW5jaEVycm9yKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGcgPSBnMSgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBlID0gTHVuY2hFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICBnLnRocm93KGUpCisgICAgICAgIGZvciB4IGluIGc6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJDYXVnaHQgTHVuY2hFcnJvciBpbiBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiB5ZXQgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9uZXh0X2FuZF9yZXR1cm5fd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgbmV4dCBhbmQgcmV0dXJuIHdpdGggdmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYocik6CisgICAgICAgICAgICBnaSA9IGcocikKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIHJlc3VtaW5nIGciKQorICAgICAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXMiICUgKHJlcHIoZSksKSkKKyAgICAgICAgZGVmIGcocik6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc3RhcnRpbmciKQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZXR1cm5pbmcgJXMiICUgKHIsKSkKKyAgICAgICAgICAgIHJldHVybiByCisgICAgICAgIGYoTm9uZSkKKyAgICAgICAgZig0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiByZXN1bWluZyBnIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyBOb25lIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCkiLAorICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgNDIiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oNDIsKSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9zZW5kX2FuZF9yZXR1cm5fd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc2VuZCBhbmQgcmV0dXJuIHdpdGggdmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYocik6CisgICAgICAgICAgICBnaSA9IGcocikKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIHNlbmRpbmcgc3BhbSB0byBnIikKKyAgICAgICAgICAgICAgICBnaS5zZW5kKCJzcGFtIikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgU0hPVUxEIE5PVCBCRSBIRVJFIikKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIGNhdWdodCAlciIgJSAoZSwpKQorICAgICAgICBkZWYgZyhyKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzdGFydGluZyIpCisgICAgICAgICAgICB4ID0geWllbGQKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlcyIgJSAociwpKQorICAgICAgICAgICAgcmV0dXJuIHIKKyAgICAgICAgZihOb25lKQorICAgICAgICBmKDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHNlbmRpbmcgc3BhbSB0byBnIiwKKyAgICAgICAgICAgICJnIHJlY2VpdmVkIHNwYW0iLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIE5vbmUiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKSIsCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCisgICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyA0MiIsCisgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbig0MiwpIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NhdGNoaW5nX2V4Y2VwdGlvbl9mcm9tX3N1Ymdlbl9hbmRfcmV0dXJuaW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjYXRjaGluZyBhbiBleGNlcHRpb24gdGhyb3duIGludG8gYQorICAgICAgICBzdWJnZW5lcmF0b3IgYW5kIHJldHVybmluZyBhIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiKQorICAgICAgICAgICAgcmV0dXJuIDIKKworICAgICAgICBkZWYgb3V0ZXIoKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCBmcm9tIGlubmVyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgcmV0dXJuZWQgJXIgdG8gb3V0ZXIiICUgdikKKyAgICAgICAgICAgIHlpZWxkIHYKKyAgICAgICAgZyA9IG91dGVyKCkKKyAgICAgICAgdHJhY2UuYXBwZW5kKG5leHQoZykpCisgICAgICAgIHRyYWNlLmFwcGVuZChnLnRocm93KFZhbHVlRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiLAorICAgICAgICAgICAgImlubmVyIHJldHVybmVkIDIgdG8gb3V0ZXIiLAorICAgICAgICAgICAgMiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5fdGhhdF9yZXR1cm5zKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aHJvd2luZyBHZW5lcmF0b3JFeGl0IGludG8gYSBzdWJnZW5lcmF0b3IgdGhhdAorICAgICAgICBjYXRjaGVzIGl0IGFuZCByZXR1cm5zIG5vcm1hbGx5LgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZiIpCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkV4aXQgZiIpCisgICAgICAgICAgICBleGNlcHQgR2VuZXJhdG9yRXhpdDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJFbnRlciBnIiwKKyAgICAgICAgICAgICJFbnRlciBmIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5lcmF0b3JfdGhhdF95aWVsZHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRocm93aW5nIEdlbmVyYXRvckV4aXQgaW50byBhIHN1YmdlbmVyYXRvciB0aGF0CisgICAgICAgIGNhdGNoZXMgaXQgYW5kIHlpZWxkcy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgR2VuZXJhdG9yRXhpdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIkVudGVyIGciLAorICAgICAgICAgICAgIkVudGVyIGYiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfdGhyb3dpbmdfR2VuZXJhdG9yRXhpdF9pbnRvX3N1Ymdlbl90aGF0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhyb3dpbmcgR2VuZXJhdG9yRXhpdCBpbnRvIGEgc3ViZ2VuZXJhdG9yIHRoYXQKKyAgICAgICAgY2F0Y2hlcyBpdCBhbmQgcmFpc2VzIGEgZGlmZmVyZW50IGV4Y2VwdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVm9ycGFsIGJ1bm55IGVuY291bnRlcmVkIikKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgIlZvcnBhbCBidW5ueSBlbmNvdW50ZXJlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiRW50ZXIgZyIsCisgICAgICAgICAgICAiRW50ZXIgZiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF95aWVsZF9mcm9tX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBnKCkpCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW5nX2dlbmVyYXRvcnNfY2xhaW1fdG9fYmVfcnVubmluZyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB3aXRoIGJhc2ljIGl0ZXJhdGlvbgorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB5aWVsZCAwCisgICAgICAgICAgICB5aWVsZCBmcm9tIHR3bygpCisgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgIGRlZiB0d28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgIGcxID0gb25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGcxKSwgWzAsIDEsIDIsIDNdKQorICAgICAgICAjIENoZWNrIHdpdGggc2VuZAorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHJlcyA9IFtuZXh0KGcxKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGcxLnNlbmQoNDIpKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFswLCAxLCAyLCAzXSkKKyAgICAgICAgIyBDaGVjayB3aXRoIHRocm93CisgICAgICAgIGNsYXNzIE15RXJyKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAwCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgeWllbGQgZnJvbSB0d28oKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBNeUVycjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiB0d28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzEKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHJlcyA9IFtuZXh0KGcxKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGcxLnRocm93KE15RXJyKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgICMgQ2hlY2sgd2l0aCBjbG9zZQorICAgICAgICBjbGFzcyBNeUl0KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmXyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGcxLmdpX3J1bm5pbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgZzEpCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gTXlJdCgpCisgICAgICAgIGcxID0gb25lKCkKKyAgICAgICAgbmV4dChnMSkKKyAgICAgICAgZzEuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdG9yX2lzX3Zpc2libGVfdG9fZGVidWdnZXIoc2VsZik6CisgICAgICAgIGRlZiBjYWxsX3N0YWNrKCk6CisgICAgICAgICAgICByZXR1cm4gW2ZbM10gZm9yIGYgaW4gaW5zcGVjdC5zdGFjaygpXQorCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIGNhbGxfc3RhY2soKQorICAgICAgICAgICAgeWllbGQgY2FsbF9zdGFjaygpCisgICAgICAgICAgICB5aWVsZCBjYWxsX3N0YWNrKCkKKworICAgICAgICBkZWYgc3BhbShnKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZworCisgICAgICAgIGRlZiBlZ2dzKGcpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBnCisKKyAgICAgICAgZm9yIHN0YWNrIGluIHNwYW0oZ2VuKCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzcGFtJyBpbiBzdGFjaykKKworICAgICAgICBmb3Igc3RhY2sgaW4gc3BhbShlZ2dzKGdlbigpKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3NwYW0nIGluIHN0YWNrIGFuZCAnZWdncycgaW4gc3RhY2spCisKKyAgICBkZWYgdGVzdF9jdXN0b21faXRlcmF0b3JfcmV0dXJuKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMTU1NjgKKyAgICAgICAgY2xhc3MgTXlJdGVyOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbig0MikKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgcmV0CisgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIE15SXRlcigpCisgICAgICAgIHJldCA9IE5vbmUKKyAgICAgICAgbGlzdChnZW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIDQyKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICB0ZXN0X2NsYXNzZXMgPSBbVGVzdFBFUDM4ME9wZXJhdGlvbl0KKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKaW5kZXggOWRhMmNhZS4uZjUyZDRiZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaW8KK2ltcG9ydCBjb2xsZWN0aW9ucwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtNyw2ICs4LDcgQEAKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGVyc2lzdGVudFBpY2tsZXJUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQWJzdHJhY3RQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMKK2Zyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBCaWdtZW1QaWNrbGVUZXN0cwogCiB0cnk6CkBAIC04MCw2ICs4MiwxOCBAQAogICAgIHVucGlja2xlcl9jbGFzcyA9IHBpY2tsZS5fVW5waWNrbGVyCiAKIAorY2xhc3MgUHlEaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1BpY2tsZXIKKyAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gcGlja2xlLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorCisKK2NsYXNzIFB5Q2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1BpY2tsZXIKKyAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuQ2hhaW5NYXAoe30sIHBpY2tsZS5kaXNwYXRjaF90YWJsZSkKKworCiBpZiBoYXNfY19pbXBsZW1lbnRhdGlvbjoKICAgICBjbGFzcyBDUGlja2xlclRlc3RzKFB5UGlja2xlclRlc3RzKToKICAgICAgICAgcGlja2xlciA9IF9waWNrbGUuUGlja2xlcgpAQCAtMTAxLDE0ICsxMTUsMjYgQEAKICAgICAgICAgcGlja2xlcl9jbGFzcyA9IF9waWNrbGUuUGlja2xlcgogICAgICAgICB1bnBpY2tsZXJfY2xhc3MgPSBfcGlja2xlLlVucGlja2xlcgogCisgICAgY2xhc3MgQ0Rpc3BhdGNoVGFibGVUZXN0cyhBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cyk6CisgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuUGlja2xlcgorICAgICAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKworICAgIGNsYXNzIENDaGFpbkRpc3BhdGNoVGFibGVUZXN0cyhBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cyk6CisgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuUGlja2xlcgorICAgICAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLkNoYWluTWFwKHt9LCBwaWNrbGUuZGlzcGF0Y2hfdGFibGUpCisKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3RzID0gW1BpY2tsZVRlc3RzLCBQeVBpY2tsZXJUZXN0cywgUHlQZXJzUGlja2xlclRlc3RzXQorICAgIHRlc3RzID0gW1BpY2tsZVRlc3RzLCBQeVBpY2tsZXJUZXN0cywgUHlQZXJzUGlja2xlclRlc3RzLAorICAgICAgICAgICAgIFB5RGlzcGF0Y2hUYWJsZVRlc3RzLCBQeUNoYWluRGlzcGF0Y2hUYWJsZVRlc3RzXQogICAgIGlmIGhhc19jX2ltcGxlbWVudGF0aW9uOgogICAgICAgICB0ZXN0cy5leHRlbmQoW0NQaWNrbGVyVGVzdHMsIENQZXJzUGlja2xlclRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIENEdW1wUGlja2xlX0xvYWRQaWNrbGUsIER1bXBQaWNrbGVfQ0xvYWRQaWNrbGUsCiAgICAgICAgICAgICAgICAgICAgICAgUHlQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgQ1BpY2tsZXJVbnBpY2tsZXJPYmplY3RUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICBDRGlzcGF0Y2hUYWJsZVRlc3RzLCBDQ2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgSW5NZW1vcnlQaWNrbGVUZXN0c10pCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QocGlja2xlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKaW5kZXggZDViODg2Zi4uNmE3YjQ1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CkBAIC03OSwyMSArNzksNiBAQAogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZCkKIAotICAgIGRlZiB0ZXN0UXVvdGluZyhzZWxmKToKLSAgICAgICAgc2FmZXVucXVvdGVkID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nCi0gICAgICAgIHVuaWNvZGVfc2FtcGxlID0gJ1x4ZTlceGUwXHhkZicgICMgZSArIGFjdXRlIGFjY2VudCwgYSArIGdyYXZlLCBzaGFycCBzCi0gICAgICAgIHVuc2FmZSA9ICciYCRcXCEnICsgdW5pY29kZV9zYW1wbGUKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpcGVzLnF1b3RlKCcnKSwgIicnIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZShzYWZldW5xdW90ZWQpLCBzYWZldW5xdW90ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoJ3Rlc3QgZmlsZSBuYW1lJyksICIndGVzdCBmaWxlIG5hbWUnIikKLSAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgndGVzdCVzbmFtZScgJSB1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzbmFtZSciICUgdSkKLSAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgidGVzdCVzJ25hbWUnIiAlIHUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3QlcydcIidcIiduYW1lJ1wiJ1wiJyciICUgdSkKLQogICAgIGRlZiB0ZXN0UmVwcihzZWxmKToKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCAiPFRlbXBsYXRlIGluc3RhbmNlLCBzdGVwcz1bXT4iKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2cucHkgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQppbmRleCBhNGRkYjE1Li4zNTVlZmU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQpAQCAtMjMsNiArMjMsOCBAQAogZGVmIGZpeGRpcihsc3QpOgogICAgIGlmICJfX2J1aWx0aW5zX18iIGluIGxzdDoKICAgICAgICAgbHN0LnJlbW92ZSgiX19idWlsdGluc19fIikKKyAgICBpZiAiX19pbml0aWFsaXppbmdfXyIgaW4gbHN0OgorICAgICAgICBsc3QucmVtb3ZlKCJfX2luaXRpYWxpemluZ19fIikKICAgICByZXR1cm4gbHN0CiAKIApAQCAtMTk2LDE0ICsxOTgsMTUgQEAKIAogICAgICAgICBpbXBvcnQgdDUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnZm9vJywgJ3N0cmluZycsICd0NSddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsICd0NSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodDUuZm9vKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnc3RyaW5nJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdzdHJpbmcnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1LnN0cmluZykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ3NwYW0nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ3NwYW0nXSkKIAogICAgIGRlZiB0ZXN0XzYoc2VsZik6CiAgICAgICAgIGhpZXIgPSBbCkBAIC0yMTksMTQgKzIyMiwxNCBAQAogICAgICAgICBpbXBvcnQgdDYKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ2KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2FsbF9fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQogICAgICAgICBzID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgdDYKICAgICAgICAgICAgIGZyb20gdDYgaW1wb3J0ICoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fYWxsX18nLCAnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWdncycsICdoYW0nLCAnc3BhbSddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJywgJ2VnZ3MnLCAnaGFtJywgJ3NwYW0nXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyKCksIFsnZWdncycsICdoYW0nLCAnc2VsZicsICdzcGFtJywgJ3Q2J10pCiAgICAgICAgICAgICAiIiIKICAgICAgICAgc2VsZi5ydW5fY29kZShzKQpAQCAtMjUyLDE5ICsyNTUsMTkgQEAKICAgICAgICAgdDcsIHN1Yiwgc3Vic3ViID0gTm9uZSwgTm9uZSwgTm9uZQogICAgICAgICBpbXBvcnQgdDcgYXMgdGFzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0YXMpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0NykKICAgICAgICAgZnJvbSB0NyBpbXBvcnQgc3ViIGFzIHN1YnBhcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIoc3VicGFyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3ViKQogICAgICAgICBmcm9tIHQ3LnN1YiBpbXBvcnQgc3Vic3ViIGFzIHN1YnN1YnN1YgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIoc3Vic3Vic3ViKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsICdzcGFtJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsICdzcGFtJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3ViKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YnN1YikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKaW5kZXggYzM3ZTkzNi4uYTg0MjZiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBpbXAgaW1wb3J0IGNhY2hlX2Zyb21fc291cmNlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZQogCiBjbGFzcyBUZXN0SW1wb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjksNyArMjksNyBAQAogICAgICAgICBzZWxmLnBhY2thZ2VfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVzdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWNrYWdlX25hbWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYucGFja2FnZV9kaXIpCi0gICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdfX2luaXRfXy5weScpLCAndycpLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdfX2luaXRfXy5weScpKQogICAgICAgICBzZWxmLm1vZHVsZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdmb28ucHknKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CmluZGV4IDNiNzJmMDYuLjg4ZTJkMzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxvYWQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVubG9hZCwgY2hlY2tfd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGltcApAQCAtOSw3ICs5LDExIEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgemlwZmlsZQogCi0KKyMgTm90ZTogcGtndXRpbC53YWxrX3BhY2thZ2VzIGlzIGN1cnJlbnRseSB0ZXN0ZWQgaW4gdGVzdF9ydW5weS4gVGhpcyBpcworIyBhIGhhY2sgdG8gZ2V0IGEgbWFqb3IgaXNzdWUgcmVzb2x2ZWQgZm9yIDMuM2IyLiBMb25nZXIgdGVybSwgaXQgc2hvdWxkCisjIGJlIG1vdmVkIGJhY2sgaGVyZSwgcGVyaGFwcyBieSBmYWN0b3Jpbmcgb3V0IHRoZSBoZWxwZXIgY29kZSBmb3IKKyMgY3JlYXRpbmcgaW50ZXJlc3RpbmcgcGFja2FnZSBsYXlvdXRzIHRvIGEgc2VwYXJhdGUgbW9kdWxlLgorIyBJc3N1ZSAjMTUzNDggZGVjbGFyZXMgdGhpcyBpcyBpbmRlZWQgYSBkb2RneSBoYWNrIDspCiAKIGNsYXNzIFBrZ3V0aWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTEzOCwxMCArMTQyLDExIEBACiAgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KIAogCisjIFRoZXNlIHRlc3RzLCBlc3BlY2lhbGx5IHRoZSBzZXR1cCBhbmQgY2xlYW51cCwgYXJlIGhpZGVvdXMuIFRoZXkKKyMgbmVlZCB0byBiZSBjbGVhbmVkIHVwIG9uY2UgaXNzdWUgMTQ3MTUgaXMgYWRkcmVzc2VkLgogY2xhc3MgRXh0ZW5kUGF0aFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY3JlYXRlX2luaXQoc2VsZiwgcGtnbmFtZSk6CiAgICAgICAgIGRpcm5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIGRpcm5hbWUpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBkaXJuYW1lKQogCiAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBwa2duYW1lKQpAQCAtMTU2LDIyICsxNjEsMTIgQEAKICAgICAgICAgd2l0aCBvcGVuKG1vZHVsZV9uYW1lLCAndycpIGFzIGZsOgogICAgICAgICAgICAgcHJpbnQoJ3ZhbHVlPXt9Jy5mb3JtYXQodmFsdWUpLCBmaWxlPWZsKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAjIENyZWF0ZSAyIGRpcmVjdG9yaWVzIG9uIHN5cy5wYXRoCi0gICAgICAgIHNlbGYucGtnbmFtZSA9ICdmb28nCi0gICAgICAgIHNlbGYuZGlybmFtZV8wID0gc2VsZi5jcmVhdGVfaW5pdChzZWxmLnBrZ25hbWUpCi0gICAgICAgIHNlbGYuZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChzZWxmLnBrZ25hbWUpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGRlbCBzeXMucGF0aFswXQotICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQotCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgotICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoc2VsZi5kaXJuYW1lXzAsIHNlbGYucGtnbmFtZSwgJ2JhcicsIDApCi0gICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShzZWxmLmRpcm5hbWVfMSwgc2VsZi5wa2duYW1lLCAnYmF6JywgMSkKKyAgICAgICAgcGtnbmFtZSA9ICdmb28nCisgICAgICAgIGRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8wLCBwa2duYW1lLCAnYmFyJywgMCkKKyAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKGRpcm5hbWVfMSwgcGtnbmFtZSwgJ2JheicsIDEpCiAgICAgICAgIGltcG9ydCBmb28uYmFyCiAgICAgICAgIGltcG9ydCBmb28uYmF6CiAgICAgICAgICMgRW5zdXJlIHdlIHJlYWQgdGhlIGV4cGVjdGVkIHZhbHVlcwpAQCAtMTgwLDggKzE3NSw0NSBAQAogCiAgICAgICAgICMgRW5zdXJlIHRoZSBwYXRoIGlzIHNldCB1cCBjb3JyZWN0bHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm9vLl9fcGF0aF9fKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihzZWxmLmRpcm5hbWVfMCwgc2VsZi5wa2duYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLmRpcm5hbWVfMSwgc2VsZi5wa2duYW1lKV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbb3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGlybmFtZV8xLCBwa2duYW1lKV0pKQorCisgICAgICAgICMgQ2xlYW51cAorICAgICAgICBzaHV0aWwucm10cmVlKGRpcm5hbWVfMCkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzEpCisgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQorCisgICAgZGVmIHRlc3RfbWl4ZWRfbmFtZXNwYWNlKHNlbGYpOgorICAgICAgICBwa2duYW1lID0gJ2ZvbycKKyAgICAgICAgZGlybmFtZV8wID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBkaXJuYW1lXzEgPSBzZWxmLmNyZWF0ZV9pbml0KHBrZ25hbWUpCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzAsIHBrZ25hbWUsICdiYXInLCAwKQorICAgICAgICAjIFR1cm4gdGhpcyBpbnRvIGEgUEVQIDQyMCBuYW1lc3BhY2UgcGFja2FnZQorICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzEsIHBrZ25hbWUsICdiYXonLCAxKQorICAgICAgICBpbXBvcnQgZm9vLmJhcgorICAgICAgICBpbXBvcnQgZm9vLmJhegorICAgICAgICAjIEVuc3VyZSB3ZSByZWFkIHRoZSBleHBlY3RlZCB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyLnZhbHVlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5iYXoudmFsdWUsIDEpCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIHBhdGggaXMgc2V0IHVwIGNvcnJlY3RseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb28uX19wYXRoX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbb3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGlybmFtZV8xLCBwa2duYW1lKV0pKQorCisgICAgICAgICMgQ2xlYW51cAorICAgICAgICBzaHV0aWwucm10cmVlKGRpcm5hbWVfMCkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzEpCisgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQogCiAgICAgIyBYWFg6IHRlc3QgLnBrZyBmaWxlcwogCkBAIC0yMjcsMTIgKzI1OSw1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIDIpCiAKIAorY2xhc3MgSW1wb3J0bGliTWlncmF0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgV2l0aCBmdWxsIFBFUCAzMDIgc3VwcG9ydCBpbiB0aGUgc3RhbmRhcmQgaW1wb3J0IG1hY2hpbmVyeSwgdGhlCisgICAgIyBQRVAgMzAyIGVtdWxhdGlvbiBpbiB0aGlzIG1vZHVsZSBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZworICAgICMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliIHByb3BlcgorCisgICAgZGVmIGNoZWNrX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHJldHVybiBjaGVja193YXJuaW5ncygKKyAgICAgICAgICAgICgiVGhpcyBlbXVsYXRpb24gaXMgZGVwcmVjYXRlZCwgdXNlICdpbXBvcnRsaWInIGluc3RlYWQiLAorICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpCisKKyAgICBkZWYgdGVzdF9pbXBvcnRlcl9kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfZGVwcmVjYXRlZCgpOgorICAgICAgICAgICAgeCA9IHBrZ3V0aWwuSW1wSW1wb3J0ZXIoIiIpCisKKyAgICBkZWYgdGVzdF9sb2FkZXJfZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX2RlcHJlY2F0ZWQoKToKKyAgICAgICAgICAgIHggPSBwa2d1dGlsLkltcExvYWRlcigiIiwgIiIsICIiLCAiIikKKworICAgIGRlZiB0ZXN0X2dldF9sb2FkZXJfYXZvaWRzX2VtdWxhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygpIGFzIHc6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwa2d1dGlsLmdldF9sb2FkZXIoInN5cyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJvcyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJ0ZXN0LnN1cHBvcnQiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQorCisgICAgZGVmIHRlc3RfZ2V0X2ltcG9ydGVyX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgICMgV2UgdXNlIGFuIGlsbGVnYWwgcGF0aCBzbyAqbm9uZSogb2YgdGhlIHBhdGggaG9va3Mgc2hvdWxkIGZpcmUKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygpIGFzIHc6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwa2d1dGlsLmdldF9pbXBvcnRlcigiKj8/IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKKworICAgIGRlZiB0ZXN0X2l0ZXJfaW1wb3J0ZXJzX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgZm9yIGltcG9ydGVyIGluIHBrZ3V0aWwuaXRlcl9pbXBvcnRlcnMoKTogcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChQa2d1dGlsVGVzdHMsIFBrZ3V0aWxQRVAzMDJUZXN0cywgRXh0ZW5kUGF0aFRlc3RzLAotICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lc3BhY2VQYWNrYWdlVGVzdCkKKyAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZXNwYWNlUGFja2FnZVRlc3QsIEltcG9ydGxpYk1pZ3JhdGlvblRlc3RzKQogICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgaWYgdGVzdCBpcyBydW4gcmVwZWF0ZWQgKGxpa2Ugd2hlbiBmaW5kaW5nIGxlYWtzKQogICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBpbXBvcnQgaW1wb3J0bGliCiAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNsZWFyKCkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CmluZGV4IDg3NTFhYTguLjZhYmY0NDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQpAQCAtMSw4ICsxLDkgQEAKLWltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtNTYsMTMgKzU3LDExIEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2F2ZV92ZXJzaW9uID0gc3lzLnZlcnNpb24KLSAgICAgICAgc2VsZi5zYXZlX3N1YnZlcnNpb24gPSBzeXMuc3VidmVyc2lvbgogICAgICAgICBzZWxmLnNhdmVfbWVyY3VyaWFsID0gc3lzLl9tZXJjdXJpYWwKICAgICAgICAgc2VsZi5zYXZlX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy52ZXJzaW9uID0gc2VsZi5zYXZlX3ZlcnNpb24KLSAgICAgICAgc3lzLnN1YnZlcnNpb24gPSBzZWxmLnNhdmVfc3VidmVyc2lvbgogICAgICAgICBzeXMuX21lcmN1cmlhbCA9IHNlbGYuc2F2ZV9tZXJjdXJpYWwKICAgICAgICAgc3lzLnBsYXRmb3JtID0gc2VsZi5zYXZlX3BsYXRmb3JtCiAKQEAgLTc3LDcgKzc2LDcgQEAKICAgICAgICAgICAgICAoJ0lyb25QeXRob24nLCAnMS4wLjAnLCAnJywgJycsICcnLCAnJywgJy5ORVQgMi4wLjUwNzI3LjQyJykpLAogICAgICAgICAgICAgKToKICAgICAgICAgICAgICMgYnJhbmNoIGFuZCByZXZpc2lvbiBhcmUgbm90ICJwYXJzZWQiLCBidXQgZmV0Y2hlZAotICAgICAgICAgICAgIyBmcm9tIHN5cy5zdWJ2ZXJzaW9uLiAgSWdub3JlIHRoZW0KKyAgICAgICAgICAgICMgZnJvbSBzeXMuX21lcmN1cmlhbC4gIElnbm9yZSB0aGVtCiAgICAgICAgICAgICAobmFtZSwgdmVyc2lvbiwgYnJhbmNoLCByZXZpc2lvbiwgYnVpbGRubywgYnVpbGRkYXRlLCBjb21waWxlcikgXAogICAgICAgICAgICAgICAgICAgID0gcGxhdGZvcm0uX3N5c192ZXJzaW9uKGlucHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTExMyw4ICsxMTIsNiBAQAogICAgICAgICAgICAgaWYgc3VidmVyc2lvbiBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAiX21lcmN1cmlhbCIpOgogICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLl9tZXJjdXJpYWwKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN5cywgInN1YnZlcnNpb24iKToKLSAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5zdWJ2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5fbWVyY3VyaWFsID0gc3VidmVyc2lvbgogICAgICAgICAgICAgaWYgc3lzX3BsYXRmb3JtIGlzIG5vdCBOb25lOgpAQCAtMTM2LDYgKzEzMywxMiBAQAogICAgIGRlZiB0ZXN0X3VuYW1lKHNlbGYpOgogICAgICAgICByZXMgPSBwbGF0Zm9ybS51bmFtZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkocmVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMF0sIHJlcy5zeXN0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzFdLCByZXMubm9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMl0sIHJlcy5yZWxlYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1szXSwgcmVzLnZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzRdLCByZXMubWFjaGluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbNV0sIHJlcy5wcm9jZXNzb3IpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksICJ3aW5kb3dzIG9ubHkgdGVzdCIpCiAgICAgZGVmIHRlc3RfdW5hbWVfd2luMzJfQVJDSElURVc2NDMyKHNlbGYpOgpAQCAtMTY5LDcgKzE3Miw3IEBACiAgICAgZGVmIHRlc3RfbWFjX3ZlcihzZWxmKToKICAgICAgICAgcmVzID0gcGxhdGZvcm0ubWFjX3ZlcigpCiAKLSAgICAgICAgaWYgcGxhdGZvcm0udW5hbWUoKVswXSA9PSAnRGFyd2luJzoKKyAgICAgICAgaWYgcGxhdGZvcm0udW5hbWUoKS5zeXN0ZW0gPT0gJ0Rhcndpbic6CiAgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgTWFjT1NYIHN5c3RlbSwgY2hlY2sgdGhhdAogICAgICAgICAgICAgIyB0aGUgcmlnaHQgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZAogICAgICAgICAgICAgZmQgPSBvcy5wb3Blbignc3dfdmVycycsICdyJykKQEAgLTI0Nyw2ICsyNTAsMzggQEAKICAgICAgICAgICAgICk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtLl9wYXJzZV9yZWxlYXNlX2ZpbGUoaW5wdXQpLCBvdXRwdXQpCiAKKyAgICBkZWYgdGVzdF9wb3BlbihzZWxmKToKKyAgICAgICAgbXN3aW5kb3dzID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQorCisgICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgICAgIGNvbW1hbmQgPSAnInt9IiAtYyAicHJpbnQoXCdIZWxsb1wnKSInLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiJ3t9JyAtYyAncHJpbnQoXCJIZWxsb1wiKSciLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHBsYXRmb3JtLnBvcGVuKGNvbW1hbmQpIGFzIHN0ZG91dDoKKyAgICAgICAgICAgICAgICBoZWxsbyA9IHN0ZG91dC5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHN0ZG91dC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsbywgIkhlbGxvIikKKworICAgICAgICBkYXRhID0gJ3Bsb3AnCisgICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgICAgIGNvbW1hbmQgPSAnInt9IiAtYyAiaW1wb3J0IHN5czsgZGF0YT1zeXMuc3RkaW4ucmVhZCgpOyBleGl0KGxlbihkYXRhKSkiJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tbWFuZCA9ICIne30nIC1jICdpbXBvcnQgc3lzOyBkYXRhPXN5cy5zdGRpbi5yZWFkKCk7IGV4aXQobGVuKGRhdGEpKSciCisgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHBsYXRmb3JtLnBvcGVuKGNvbW1hbmQsICd3JykgYXMgc3RkaW46CisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc3RkaW4ud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICAgICByZXQgPSBzdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmV0KQorICAgICAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZSA9IHJldAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSByZXQgPj4gOAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dXJuY29kZSwgbGVuKGRhdGEpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CmluZGV4IDVmOTgwZDAuLmE5ZTM0M2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQpAQCAtNTUsNiArNTUsMTAgQEAKICAgICAgICAgPC9hcnJheT4KICAgICAgICAgPGtleT5hU3RyaW5nPC9rZXk+CiAgICAgICAgIDxzdHJpbmc+RG9vZGFoPC9zdHJpbmc+CisgICAgICAgIDxrZXk+YW5FbXB0eURpY3Q8L2tleT4KKyAgICAgICAgPGRpY3QvPgorICAgICAgICA8a2V5PmFuRW1wdHlMaXN0PC9rZXk+CisgICAgICAgIDxhcnJheS8+CiAgICAgICAgIDxrZXk+YW5JbnQ8L2tleT4KICAgICAgICAgPGludGVnZXI+NzI4PC9pbnRlZ2VyPgogICAgICAgICA8a2V5Pm5lc3RlZERhdGE8L2tleT4KQEAgLTExMiw2ICsxMTYsOCBAQAogICAgICAgICAgICAgc29tZU1vcmVEYXRhID0gcGxpc3RsaWIuRGF0YShiIjxsb3RzIG9mIGJpbmFyeSBndW5rPlwwXDFcMlwzIiAqIDEwKSwKICAgICAgICAgICAgIG5lc3RlZERhdGEgPSBbcGxpc3RsaWIuRGF0YShiIjxsb3RzIG9mIGJpbmFyeSBndW5rPlwwXDFcMlwzIiAqIDEwKV0sCiAgICAgICAgICAgICBhRGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDQsIDEwLCAyNiwgMTAsIDMzLCAzMyksCisgICAgICAgICAgICBhbkVtcHR5RGljdCA9IGRpY3QoKSwKKyAgICAgICAgICAgIGFuRW1wdHlMaXN0ID0gbGlzdCgpCiAgICAgICAgICkKICAgICAgICAgcGxbJ1x4YzViZW5yYWEnXSA9ICJUaGF0IHdhcyBhIHVuaWNvZGUga2V5LiIKICAgICAgICAgcmV0dXJuIHBsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IGUzOTAxYjguLmMwOTI5YTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC0xMDgsNiArMTA4LDEwIEBACiAgICAgZGVmIGNtZF9hcG9wKHNlbGYsIGFyZyk6CiAgICAgICAgIHNlbGYucHVzaCgnK09LIGRvbmUgbm90aGluZy4nKQogCisgICAgZGVmIGNtZF9xdWl0KHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnK09LIGNsb3NpbmcuJykKKyAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQorCiAKIGNsYXNzIER1bW15UE9QM1NlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyLCB0aHJlYWRpbmcuVGhyZWFkKToKIApAQCAtMTY1LDEwICsxNjksMTAgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlQT1AzU2VydmVyKChIT1NULCBQT1JUKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IHBvcGxpYi5QT1AzKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCisgICAgICAgIHNlbGYuY2xpZW50ID0gcG9wbGliLlBPUDMoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCwgdGltZW91dD0zKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQogICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKIAogICAgIGRlZiB0ZXN0X2dldHdlbGNvbWUoc2VsZik6CkBAIC0yMjgsNiArMjMyLDEyIEBACiAgICAgICAgIHNlbGYuY2xpZW50LnVpZGwoKQogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCdmb28nKQogCisgICAgZGVmIHRlc3RfcXVpdChzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYuY2xpZW50LnF1aXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5jbGllbnQuc29jaykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5jbGllbnQuZmlsZSkKKwogCiBTVVBQT1JUU19TU0wgPSBGYWxzZQogaWYgaGFzYXR0cihwb3BsaWIsICdQT1AzX1NTTCcpOgpAQCAtMjc0LDYgKzI4NCw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIER1bW15UE9QM0hhbmRsZXIuaGFuZGxlX3JlYWQoc2VsZikKIAorCiAgICAgY2xhc3MgVGVzdFBPUDNfU1NMQ2xhc3MoVGVzdFBPUDNDbGFzcyk6CiAgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIHRlc3RzIGJ5IHVzaW5nIHBvcGxpYi5QT1AzX1NTTAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQppbmRleCBiOTM2ZGRhLi5mNTk2MDdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IG9zCitpbXBvcnQgZmNudGwKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHB3ZAogaW1wb3J0IHNodXRpbApAQCAtNDMsNyArNDQsNyBAQAogICAgICAgICBOT19BUkdfRlVOQ1RJT05TID0gWyAiY3Rlcm1pZCIsICJnZXRjd2QiLCAiZ2V0Y3dkYiIsICJ1bmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lcyIsICJnZXRsb2FkYXZnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldGVnaWQiLCAiZ2V0ZXVpZCIsICJnZXRnaWQiLCAiZ2V0Z3JvdXBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHBpZCIsICJnZXRwZ3JwIiwgImdldHBwaWQiLCAiZ2V0dWlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHBpZCIsICJnZXRwZ3JwIiwgImdldHBwaWQiLCAiZ2V0dWlkIiwgInN5bmMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogCiAgICAgICAgIGZvciBuYW1lIGluIE5PX0FSR19GVU5DVElPTlM6CkBAIC0xMjgsNiArMTI5LDcgQEAKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguZnN0YXR2ZnMoZnAuZmlsZW5vKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0dmZzKGZwLmZpbGVubygpKSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCkBAIC0xNDIsNiArMTQ0LDE1MSBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAndHJ1bmNhdGUnKSwgInRlc3QgbmVlZHMgcG9zaXgudHJ1bmNhdGUoKSIpCisgICAgZGVmIHRlc3RfdHJ1bmNhdGUoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKCd0ZXN0JykKKyAgICAgICAgICAgIGZwLmZsdXNoKCkKKyAgICAgICAgcG9zaXgudHJ1bmNhdGUoc3VwcG9ydC5URVNURk4sIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhnZXRhdHRyKG9zLCAnZXhlY3ZlJywgTm9uZSkgaW4gb3Muc3VwcG9ydHNfZmQsICJ0ZXN0IG5lZWRzIGV4ZWN2ZSgpIHRvIHN1cHBvcnQgdGhlIGZkIHBhcmFtZXRlciIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgInRlc3QgbmVlZHMgb3MuZm9yaygpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnd2FpdHBpZCcpLCAidGVzdCBuZWVkcyBvcy53YWl0cGlkKCkiKQorICAgIGRlZiB0ZXN0X2ZleGVjdmUoc2VsZik6CisgICAgICAgIGZwID0gb3Mub3BlbihzeXMuZXhlY3V0YWJsZSwgb3MuT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIob3MucGF0aC5zcGxpdChzeXMuZXhlY3V0YWJsZSlbMF0pCisgICAgICAgICAgICAgICAgcG9zaXguZXhlY3ZlKGZwLCBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10sIG9zLmVudmlyb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Mud2FpdHBpZChwaWQsIDApLCAocGlkLCAwKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZwKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3dhaXRpZCcpLCAidGVzdCBuZWVkcyBwb3NpeC53YWl0aWQoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgInRlc3QgbmVlZHMgb3MuZm9yaygpIikKKyAgICBkZWYgdGVzdF93YWl0aWQoc2VsZik6CisgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICBpZiBwaWQgPT0gMDoKKyAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguc3BsaXQoc3lzLmV4ZWN1dGFibGUpWzBdKQorICAgICAgICAgICAgcG9zaXguZXhlY3ZlKHN5cy5leGVjdXRhYmxlLCBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10sIG9zLmVudmlyb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXMgPSBwb3NpeC53YWl0aWQocG9zaXguUF9QSUQsIHBpZCwgcG9zaXguV0VYSVRFRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlkLCByZXMuc2lfcGlkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2xvY2tmJyksICJ0ZXN0IG5lZWRzIHBvc2l4LmxvY2tmKCkiKQorICAgIGRlZiB0ZXN0X2xvY2tmKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIndGVzdCcpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBwb3NpeC5sb2NrZihmZCwgcG9zaXguRl9MT0NLLCA0KQorICAgICAgICAgICAgIyBzZWN0aW9uIGlzIGxvY2tlZAorICAgICAgICAgICAgcG9zaXgubG9ja2YoZmQsIHBvc2l4LkZfVUxPQ0ssIDQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwcmVhZCcpLCAidGVzdCBuZWVkcyBwb3NpeC5wcmVhZCgpIikKKyAgICBkZWYgdGVzdF9wcmVhZChzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0JykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidlcycsIHBvc2l4LnByZWFkKGZkLCAyLCAxKSkKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IHByZWFkKCkgc2hvdWxkbid0IGRpc3R1cmIgdGhlIGZpbGUgb2Zmc2V0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndGUnLCBwb3NpeC5yZWFkKGZkLCAyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3B3cml0ZScpLCAidGVzdCBuZWVkcyBwb3NpeC5wd3JpdGUoKSIpCisgICAgZGVmIHRlc3RfcHdyaXRlKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgcG9zaXgucHdyaXRlKGZkLCBiJ3h4JywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYid0eHh0JywgcG9zaXgucmVhZChmZCwgNCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwb3NpeF9mYWxsb2NhdGUnKSwKKyAgICAgICAgInRlc3QgbmVlZHMgcG9zaXgucG9zaXhfZmFsbG9jYXRlKCkiKQorICAgIGRlZiB0ZXN0X3Bvc2l4X2ZhbGxvY2F0ZShzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnBvc2l4X2ZhbGxvY2F0ZShmZCwgMCwgMTApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGluc3Q6CisgICAgICAgICAgICAjIGlzc3VlMTA4MTIsIFpGUyBkb2Vzbid0IGFwcGVhciB0byBzdXBwb3J0IHBvc2l4X2ZhbGxvY2F0ZSwKKyAgICAgICAgICAgICMgc28gc2tpcCBTb2xhcmlzLWJhc2VkIHNpbmNlIHRoZXkgYXJlIGxpa2VseSB0byBoYXZlIFpGUy4KKyAgICAgICAgICAgIGlmIGluc3QuZXJybm8gIT0gZXJybm8uRUlOVkFMIG9yIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncG9zaXhfZmFkdmlzZScpLAorICAgICAgICAidGVzdCBuZWVkcyBwb3NpeC5wb3NpeF9mYWR2aXNlKCkiKQorICAgIGRlZiB0ZXN0X3Bvc2l4X2ZhZHZpc2Uoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnBvc2l4X2ZhZHZpc2UoZmQsIDAsIDAsIHBvc2l4LlBPU0lYX0ZBRFZfV0lMTE5FRUQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZkLCAidGVzdCBuZWVkcyBmZCBzdXBwb3J0IGluIG9zLnV0aW1lIikKKyAgICBkZWYgdGVzdF91dGltZV93aXRoX2ZkKHNlbGYpOgorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC51dGltZShmZCkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgbm93KSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAoaW50KG5vdyksIGludChub3cpKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAobm93LCBub3cpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCBub3cpLCBucz0obm93LCBub3cpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCAwKSwgbnM9KE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgTm9uZSksIG5zPShub3csIDApKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQsIChpbnQobm93KSwgaW50KChub3cgLSBpbnQobm93KSkgKiAxZTkpKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCBucz0oaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzLCAidGVzdCBuZWVkcyBmb2xsb3dfc3ltbGlua3Mgc3VwcG9ydCBpbiBvcy51dGltZSIpCisgICAgZGVmIHRlc3RfdXRpbWVfbm9mb2xsb3dfc3ltbGlua3Moc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBOb25lLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgTm9uZSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChub3csIE5vbmUpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgbm93KSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKGludChub3cpLCBpbnQobm93KSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChub3csIG5vdyksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICd3cml0ZXYnKSwgInRlc3QgbmVlZHMgcG9zaXgud3JpdGV2KCkiKQorICAgIGRlZiB0ZXN0X3dyaXRldihzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZXYoZmQsIChiJ3Rlc3QxJywgYid0dDInLCBiJ3QzJykpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndGVzdDF0dDJ0MycsIHBvc2l4LnJlYWQoZmQsIDEwKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3JlYWR2JyksICJ0ZXN0IG5lZWRzIHBvc2l4LnJlYWR2KCkiKQorICAgIGRlZiB0ZXN0X3JlYWR2KHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QxdHQydDMnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgYnVmID0gW2J5dGVhcnJheShpKSBmb3IgaSBpbiBbNSwgMywgMl1dCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWR2KGZkLCBidWYpLCAxMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2IndGVzdDEnLCBiJ3R0MicsIGIndDMnXSwgW2J5dGVzKGkpIGZvciBpIGluIGJ1Zl0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKwogICAgIGRlZiB0ZXN0X2R1cChzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2R1cCcpOgogICAgICAgICAgICAgZnAgPSBvcGVuKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTY3LDYgKzMxNCwxMyBAQAogICAgICAgICAgICAgICAgIGZwMS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgZnAyLmNsb3NlKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdPX0NMT0VYRUMnKSwgIm5lZWRzIG9zLk9fQ0xPRVhFQyIpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyMykKKyAgICBkZWYgdGVzdF9vc2Nsb2V4ZWMoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFl8b3MuT19DTE9FWEVDKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkQpICYgZmNudGwuRkRfQ0xPRVhFQykKKwogICAgIGRlZiB0ZXN0X29zZXhsb2NrKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAiT19FWExPQ0siKToKICAgICAgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwKQEAgLTIwMyw2ICszNTcsNyBAQAogICAgICAgICAgICAgZnAgPSBvcGVuKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5mc3RhdChmcC5maWxlbm8oKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoZnAuZmlsZW5vKCkpKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAKQEAgLTI2NSw3ICs0MjAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5jaG93biwgc3VwcG9ydC5URVNURk4sIC0xLCAtMSkKIAogICAgICAgICAjIHJlLWNyZWF0ZSB0aGUgZmlsZQotICAgICAgICBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5fdGVzdF9hbGxfY2hvd25fY29tbW9uKHBvc2l4LmNob3duLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdmY2hvd24nKSwgInRlc3QgbmVlZHMgb3MuZmNob3duKCkiKQpAQCAtMjkzLDEzICs0NDgsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LmNoZGlyLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X2xpc3RkaXIoc2VsZik6Ci0gICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdsaXN0ZGlyJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcihvcy5jdXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcihvcy5jdXJkaXIpKQogCiAgICAgZGVmIHRlc3RfbGlzdGRpcl9kZWZhdWx0KHNlbGYpOgotICAgICAgICAjIFdoZW4gbGlzdGRpciBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudCwgaXQncyB0aGUgc2FtZSBhcyBsaXN0ZGlyKG9zLmN1cmRpcikKLSAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2xpc3RkaXInKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0LlRFU1RGTiBpbiBwb3NpeC5saXN0ZGlyKCkpCisgICAgICAgICMgV2hlbiBsaXN0ZGlyIGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50LAorICAgICAgICAjIGl0J3MgdGhlIHNhbWUgYXMgbGlzdGRpcihvcy5jdXJkaXIpLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcigpKQorCisgICAgZGVmIHRlc3RfbGlzdGRpcl9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBXaGVuIGxpc3RkaXIgaXMgY2FsbGVkIHdpdGggYSBieXRlcyBvYmplY3QsCisgICAgICAgICMgdGhlIHJldHVybmVkIHN0cmluZ3MgYXJlIG9mIHR5cGUgYnl0ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikgaW4gcG9zaXgubGlzdGRpcihiJy4nKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHBvc2l4Lmxpc3RkaXIgaW4gb3Muc3VwcG9ydHNfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgZmQgc3VwcG9ydCBmb3IgcG9zaXgubGlzdGRpcigpIikKKyAgICBkZWYgdGVzdF9saXN0ZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwb3NpeC5jbG9zZSwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKCcuJykpLAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoZikpCisgICAgICAgICAgICApCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZmQgb2Zmc2V0IHdhcyByZXNldCAoaXNzdWUgIzEzNzM5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoJy4nKSksCisgICAgICAgICAgICBzb3J0ZWQocG9zaXgubGlzdGRpcihmKSkKKyAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2FjY2VzcyhzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2FjY2VzcycpOgpAQCAtMzIxLDYgKzQ5NSwzMiBAQAogICAgICAgICAgICAgb3MuY2xvc2UocmVhZGVyKQogICAgICAgICAgICAgb3MuY2xvc2Uod3JpdGVyKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3BpcGUyJyksICJ0ZXN0IG5lZWRzIG9zLnBpcGUyKCkiKQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjcpCisgICAgZGVmIHRlc3RfcGlwZTIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MucGlwZTIsICdERUFEQkVFRicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MucGlwZTIsIDAsIDApCisKKyAgICAgICAgIyB0cnkgY2FsbGluZyB3aXRoIGZsYWdzID0gMCwgbGlrZSBvcy5waXBlKCkKKyAgICAgICAgciwgdyA9IG9zLnBpcGUyKDApCisgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgIG9zLmNsb3NlKHcpCisKKyAgICAgICAgIyB0ZXN0IGZsYWdzCisgICAgICAgIHIsIHcgPSBvcy5waXBlMihvcy5PX0NMT0VYRUN8b3MuT19OT05CTE9DSykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bChyLCBmY250bC5GX0dFVEZEKSAmIGZjbnRsLkZEX0NMT0VYRUMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bCh3LCBmY250bC5GX0dFVEZEKSAmIGZjbnRsLkZEX0NMT0VYRUMpCisgICAgICAgICMgdHJ5IHJlYWRpbmcgZnJvbSBhbiBlbXB0eSBwaXBlOiB0aGlzIHNob3VsZCBmYWlsLCBub3QgYmxvY2sKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVhZCwgciwgMSkKKyAgICAgICAgIyB0cnkgYSB3cml0ZSBiaWcgZW5vdWdoIHRvIGZpbGwtdXAgdGhlIHBpcGU6IHRoaXMgc2hvdWxkIGVpdGhlcgorICAgICAgICAjIGZhaWwgb3IgcGVyZm9ybSBhIHBhcnRpYWwgd3JpdGUsIG5vdCBibG9jaworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZSh3LCBiJ3gnICogc3VwcG9ydC5QSVBFX01BWF9TSVpFKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAndXRpbWUnKToKICAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCkBAIC0zMzEsMTMgKzUzMSwxNCBAQAogICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChpbnQobm93KSwgaW50KG5vdykpKQogICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChub3csIG5vdykpCiAKLSAgICBkZWYgX3Rlc3RfY2hmbGFnc19yZWd1bGFyX2ZpbGUoc2VsZiwgY2hmbGFnc19mdW5jLCB0YXJnZXRfZmlsZSk6CisgICAgZGVmIF90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYsIGNoZmxhZ3NfZnVuYywgdGFyZ2V0X2ZpbGUsICoqa3dhcmdzKToKICAgICAgICAgc3QgPSBvcy5zdGF0KHRhcmdldF9maWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzdCwgJ3N0X2ZsYWdzJykpCiAKICAgICAgICAgIyBaRlMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgZmxhZyBVRl9JTU1VVEFCTEUuCisgICAgICAgIGZsYWdzID0gc3Quc3RfZmxhZ3MgfCBzdGF0LlVGX0lNTVVUQUJMRQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGZsYWdzX2Z1bmModGFyZ2V0X2ZpbGUsIHN0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUpCisgICAgICAgICAgICBjaGZsYWdzX2Z1bmModGFyZ2V0X2ZpbGUsIGZsYWdzLCAqKmt3YXJncykKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6CiAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTM2MSw2ICs1NjIsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdsY2hmbGFncycpLCAndGVzdCBuZWVkcyBvcy5sY2hmbGFncygpJykKICAgICBkZWYgdGVzdF9sY2hmbGFnc19yZWd1bGFyX2ZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfY2hmbGFnc19yZWd1bGFyX2ZpbGUocG9zaXgubGNoZmxhZ3MsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLl90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHBvc2l4LmNoZmxhZ3MsIHN1cHBvcnQuVEVTVEZOLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbGNoZmxhZ3MnKSwgJ3Rlc3QgbmVlZHMgb3MubGNoZmxhZ3MoKScpCiAgICAgZGVmIHRlc3RfbGNoZmxhZ3Nfc3ltbGluayhzZWxmKToKQEAgLTM3MiwyNSArNTc0LDI4IEBACiAgICAgICAgIHNlbGYudGVhcmRvd25fZmlsZXMuYXBwZW5kKF9EVU1NWV9TWU1MSU5LKQogICAgICAgICBkdW1teV9zeW1saW5rX3N0ID0gb3MubHN0YXQoX0RVTU1ZX1NZTUxJTkspCiAKLSAgICAgICAgIyBaRlMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgZmxhZyBVRl9JTU1VVEFCTEUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBvc2l4LmxjaGZsYWdzKF9EVU1NWV9TWU1MSU5LLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRU9QTk9UU1VQUDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgbXNnID0gJ2NoZmxhZyBVRl9JTU1VVEFCTEUgbm90IHN1cHBvcnRlZCBieSB1bmRlcmx5aW5nIGZzJwotICAgICAgICAgICAgc2VsZi5za2lwVGVzdChtc2cpCisgICAgICAgIGRlZiBjaGZsYWdzX25vZm9sbG93KHBhdGgsIGZsYWdzKToKKyAgICAgICAgICAgIHJldHVybiBwb3NpeC5jaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmV3X3Rlc3Rmbl9zdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQorICAgICAgICBmb3IgZm4gaW4gKHBvc2l4LmxjaGZsYWdzLCBjaGZsYWdzX25vZm9sbG93KToKKyAgICAgICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgorICAgICAgICAgICAgZmxhZ3MgPSBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmbihfRFVNTVlfU1lNTElOSywgZmxhZ3MpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgbXNnID0gJ2NoZmxhZyBVRl9JTU1VVEFCTEUgbm90IHN1cHBvcnRlZCBieSB1bmRlcmx5aW5nIGZzJworICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5ld190ZXN0Zm5fc3QgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgICAgIG5ld19kdW1teV9zeW1saW5rX3N0ID0gb3MubHN0YXQoX0RVTU1ZX1NZTUxJTkspCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdGZuX3N0LnN0X2ZsYWdzLCBuZXdfdGVzdGZuX3N0LnN0X2ZsYWdzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19kdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcG9zaXgubGNoZmxhZ3MoX0RVTU1ZX1NZTUxJTkssIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Zm5fc3Quc3RfZmxhZ3MsIG5ld190ZXN0Zm5fc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZm4oX0RVTU1ZX1NZTUxJTkssIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCiAKICAgICBkZWYgdGVzdF9lbnZpcm9uKHNlbGYpOgogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CkBAIC00MzgsMTMgKzY0MywyOSBAQAogICAgICAgICAgICAgICAgIG9zLmNoZGlyKGN1cmRpcikKICAgICAgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShiYXNlX3BhdGgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnZ2V0Z3JvdXBsaXN0JyksICJ0ZXN0IG5lZWRzIHBvc2l4LmdldGdyb3VwbGlzdCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHB3ZCwgJ2dldHB3dWlkJyksICJ0ZXN0IG5lZWRzIHB3ZC5nZXRwd3VpZCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0dWlkJyksICJ0ZXN0IG5lZWRzIG9zLmdldHVpZCgpIikKKyAgICBkZWYgdGVzdF9nZXRncm91cGxpc3Qoc2VsZik6CisgICAgICAgIHdpdGggb3MucG9wZW4oJ2lkIC1HJykgYXMgaWRnOgorICAgICAgICAgICAgZ3JvdXBzID0gaWRnLnJlYWQoKS5zdHJpcCgpCisgICAgICAgICAgICByZXQgPSBpZGcuY2xvc2UoKQorCisgICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgZ3JvdXBzOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm5lZWQgd29ya2luZyAnaWQgLUcnIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2V0KFtpbnQoeCkgZm9yIHggaW4gZ3JvdXBzLnNwbGl0KCldKSwKKyAgICAgICAgICAgIHNldChwb3NpeC5nZXRncm91cGxpc3QocHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKVswXSwKKyAgICAgICAgICAgICAgICBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpWzNdKSkpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZWdpZCcpLCAidGVzdCBuZWVkcyBvcy5nZXRlZ2lkKCkiKQogICAgIGRlZiB0ZXN0X2dldGdyb3VwcyhzZWxmKToKICAgICAgICAgd2l0aCBvcy5wb3BlbignaWQgLUcnKSBhcyBpZGc6CiAgICAgICAgICAgICBncm91cHMgPSBpZGcucmVhZCgpLnN0cmlwKCkKICAgICAgICAgICAgIHJldCA9IGlkZy5jbG9zZSgpCiAKLSAgICAgICAgaWYgcmV0ICE9IE5vbmUgb3Igbm90IGdyb3VwczoKKyAgICAgICAgaWYgcmV0IGlzIG5vdCBOb25lIG9yIG5vdCBncm91cHM6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgibmVlZCB3b3JraW5nICdpZCAtRyciKQogCiAgICAgICAgICMgJ2lkIC1HJyBhbmQgJ29zLmdldGdyb3VwcygpJyBzaG91bGQgcmV0dXJuIHRoZSBzYW1lCkBAIC00NTUsNiArNjc2LDM0MCBAQAogICAgICAgICAgICAgICAgIHNldChbaW50KHgpIGZvciB4IGluIGdyb3Vwcy5zcGxpdCgpXSksCiAgICAgICAgICAgICAgICAgc2V0KHBvc2l4LmdldGdyb3VwcygpICsgW3Bvc2l4LmdldGVnaWQoKV0pKQogCisgICAgIyB0ZXN0cyBmb3IgdGhlIHBvc2l4ICphdCBmdW5jdGlvbnMgZm9sbG93CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5hY2Nlc3MgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBmb3Igb3MuYWNjZXNzKCkiKQorICAgIGRlZiB0ZXN0X2FjY2Vzc19kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LmFjY2VzcyhzdXBwb3J0LlRFU1RGTiwgb3MuUl9PSywgZGlyX2ZkPWYpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmNobW9kIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MuY2htb2QoKSIpCisgICAgZGVmIHRlc3RfY2htb2RfZGlyX2ZkKHNlbGYpOgorICAgICAgICBvcy5jaG1vZChzdXBwb3J0LlRFU1RGTiwgc3RhdC5TX0lSVVNSKQorCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXguY2htb2Qoc3VwcG9ydC5URVNURk4sIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiwgZGlyX2ZkPWYpCisKKyAgICAgICAgICAgIHMgPSBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzBdICYgc3RhdC5TX0lSV1hVLCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuY2hvd24gaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5jaG93bigpIikKKyAgICBkZWYgdGVzdF9jaG93bl9kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXguY2hvd24oc3VwcG9ydC5URVNURk4sIG9zLmdldHVpZCgpLCBvcy5nZXRnaWQoKSwgZGlyX2ZkPWYpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc3RhdCBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnN0YXQoKSIpCisgICAgZGVmIHRlc3Rfc3RhdF9kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgb3V0ZmlsZToKKyAgICAgICAgICAgIG91dGZpbGUud3JpdGUoInRlc3RsaW5lXG4iKQorCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgczEgPSBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgczIgPSBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MudXRpbWUoKSIpCisgICAgZGVmIHRlc3RfdXRpbWVfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgTm9uZSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgbm93LCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgTm9uZSksIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChub3csIE5vbmUpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgbm93KSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKG5vdywgIngiKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKGludChub3cpLCBpbnQobm93KSksIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChub3csIG5vdyksIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sCisgICAgICAgICAgICAgICAgICAgIChpbnQobm93KSwgaW50KChub3cgLSBpbnQobm93KSkgKiAxZTkpKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXM9KGludChub3cpLCBpbnQoKG5vdyAtIGludChub3cpKSAqIDFlOSkpKQorCisgICAgICAgICAgICAjIHRyeSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlcgorICAgICAgICAgICAgaWYgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPWYpCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgd2hvb3BzISAgdXNpbmcgYm90aCB0b2dldGhlciBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5saW5rKCkiKQorICAgIGRlZiB0ZXN0X2xpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lmxpbmsoc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnLCBzcmNfZGlyX2ZkPWYsIGRzdF9kaXJfZmQ9ZikKKyAgICAgICAgICAgICMgc2hvdWxkIGhhdmUgc2FtZSBpbm9kZXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTilbMV0sCisgICAgICAgICAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiArICdsaW5rJylbMV0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5ta2RpciBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLm1rZGlyKCkiKQorICAgIGRlZiB0ZXN0X21rZGlyX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5ta2RpcihzdXBwb3J0LlRFU1RGTiArICdkaXInLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4gKyAnZGlyJykgIyBzaG91bGQgbm90IHJhaXNlIGV4Y2VwdGlvbgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKyAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKHN1cHBvcnQuVEVTVEZOICsgJ2RpcicpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygob3MubWtub2QgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkKSBhbmQgaGFzYXR0cihzdGF0LCAnU19JRklGTycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IHJlcXVpcmVzIGJvdGggc3RhdC5TX0lGSUZPIGFuZCBkaXJfZmQgc3VwcG9ydCBmb3Igb3MubWtub2QoKSIpCisgICAgZGVmIHRlc3RfbWtub2RfZGlyX2ZkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdXNpbmcgbWtub2RhdCgpIHRvIGNyZWF0ZSBhIEZJRk8gKHRoZSBvbmx5IHVzZSBzcGVjaWZpZWQKKyAgICAgICAgIyBieSBQT1NJWCkuCisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBtb2RlID0gc3RhdC5TX0lGSUZPIHwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubWtub2Qoc3VwcG9ydC5URVNURk4sIG1vZGUsIDAsIGRpcl9mZD1mKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBTb21lIG9sZCBzeXN0ZW1zIGRvbid0IGFsbG93IHVucHJpdmlsZWdlZCB1c2VycyB0byB1c2UKKyAgICAgICAgICAgICMgbWtub2QoKSwgb3Igb25seSBzdXBwb3J0IGNyZWF0aW5nIGRldmljZSBub2Rlcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZS5lcnJubywgKGVycm5vLkVQRVJNLCBlcnJuby5FSU5WQUwpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXQuU19JU0ZJRk8ocG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfbW9kZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Mub3BlbiBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLm9wZW4oKSIpCisgICAgZGVmIHRlc3Rfb3Blbl9kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgb3V0ZmlsZToKKyAgICAgICAgICAgIG91dGZpbGUud3JpdGUoInRlc3RsaW5lXG4iKQorICAgICAgICBhID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIGIgPSBwb3NpeC5vcGVuKHN1cHBvcnQuVEVTVEZOLCBwb3NpeC5PX1JET05MWSwgZGlyX2ZkPWEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlcyA9IHBvc2l4LnJlYWQoYiwgOSkuZGVjb2RlKGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0bGluZVxuIiwgcmVzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoYSkKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5yZWFkbGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnJlYWRsaW5rKCkiKQorICAgIGRlZiB0ZXN0X3JlYWRsaW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgb3Muc3ltbGluayhzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5yZWFkbGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJyksCisgICAgICAgICAgICAgICAgcG9zaXgucmVhZGxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycsIGRpcl9mZD1mKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKQorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnJlbmFtZSBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnJlbmFtZSgpIikKKyAgICBkZWYgdGVzdF9yZW5hbWVfZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTiArICdyZW4nKQorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnJlbmFtZShzdXBwb3J0LlRFU1RGTiArICdyZW4nLCBzdXBwb3J0LlRFU1RGTiwgc3JjX2Rpcl9mZD1mLCBkc3RfZGlyX2ZkPWYpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBvc2l4LnJlbmFtZShzdXBwb3J0LlRFU1RGTiArICdyZW4nLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKSAjIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc3ltbGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnN5bWxpbmsoKSIpCisgICAgZGVmIHRlc3Rfc3ltbGlua19kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXguc3ltbGluayhzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4gKyAnbGluaycsIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5yZWFkbGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJyksIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKyAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudW5saW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MudW5saW5rKCkiKQorICAgIGRlZiB0ZXN0X3VubGlua19kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTiArICdkZWwnKQorICAgICAgICBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcpICMgc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcsIGRpcl9mZD1mKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdkZWwnKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm1rZmlmbyBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLm1rZmlmbygpIikKKyAgICBkZWYgdGVzdF9ta2ZpZm9fZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5ta2ZpZm8oc3VwcG9ydC5URVNURk4sIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdC5TX0lTRklGTyhwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICByZXF1aXJlc19zY2hlZF9oID0gdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnc2NoZWRfeWllbGQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgaGF2ZSBzY2hlZHVsaW5nIHN1cHBvcnQiKQorICAgIHJlcXVpcmVzX3NjaGVkX2FmZmluaXR5ID0gdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnc2NoZWRfc2V0YWZmaW5pdHknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbid0IGhhdmUgc2NoZWQgYWZmaW5pdHkgc3VwcG9ydCIpCisKKyAgICBAcmVxdWlyZXNfc2NoZWRfaAorICAgIGRlZiB0ZXN0X3NjaGVkX3lpZWxkKHNlbGYpOgorICAgICAgICAjIFRoaXMgaGFzIG5vIGVycm9yIGNvbmRpdGlvbnMgKGF0IGxlYXN0IG9uIExpbnV4KS4KKyAgICAgICAgcG9zaXguc2NoZWRfeWllbGQoKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2gKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnc2NoZWRfZ2V0X3ByaW9yaXR5X21heCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KCkiKQorICAgIGRlZiB0ZXN0X3NjaGVkX3ByaW9yaXR5KHNlbGYpOgorICAgICAgICAjIFJvdW5kLXJvYmluIHVzdWFsbHkgaGFzIGludGVyZXN0aW5nIHByaW9yaXRpZXMuCisgICAgICAgIHBvbCA9IHBvc2l4LlNDSEVEX1JSCisgICAgICAgIGxvID0gcG9zaXguc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2wpCisgICAgICAgIGhpID0gcG9zaXguc2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShsbywgaW50KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaGksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoaGksIGxvKQorICAgICAgICAjIE9TWCBldmlkZW50bHkganVzdCByZXR1cm5zIDE1IHdpdGhvdXQgY2hlY2tpbmcgdGhlIGFyZ3VtZW50LgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gImRhcndpbiI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCAtMjMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCAtMjMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnc2NoZWRfc2V0c2NoZWR1bGVyJyksICJjYW4ndCBjaGFuZ2Ugc2NoZWR1bGVyIikKKyAgICBkZWYgdGVzdF9nZXRfYW5kX3NldF9zY2hlZHVsZXJfYW5kX3BhcmFtKHNlbGYpOgorICAgICAgICBwb3NzaWJsZV9zY2hlZHVsZXJzID0gW3NjaGVkIGZvciBuYW1lLCBzY2hlZCBpbiBwb3NpeC5fX2RpY3RfXy5pdGVtcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJTQ0hFRF8iKV0KKyAgICAgICAgbWluZSA9IHBvc2l4LnNjaGVkX2dldHNjaGVkdWxlcigwKQorICAgICAgICBzZWxmLmFzc2VydEluKG1pbmUsIHBvc3NpYmxlX3NjaGVkdWxlcnMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhcmVudCA9IHBvc2l4LnNjaGVkX2dldHNjaGVkdWxlcihvcy5nZXRwcGlkKCkpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVQRVJNOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhcmVudCwgcG9zc2libGVfc2NoZWR1bGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfZ2V0c2NoZWR1bGVyLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfZ2V0cGFyYW0sIC0xKQorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX2dldHBhcmFtKDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwYXJhbS5zY2hlZF9wcmlvcml0eSwgaW50KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIoMCwgbWluZSwgcGFyYW0pCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVQRVJNOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgIyBQT1NJWCBzdGF0ZXMgdGhhdCBjYWxsaW5nIHNjaGVkX3NldHBhcmFtKCkgb24gYSBwcm9jZXNzIHdpdGggYQorICAgICAgICAjIHNjaGVkdWxpbmcgcG9saWN5IG90aGVyIHRoYW4gU0NIRURfRklGTyBvciBTQ0hFRF9SUiBpcworICAgICAgICAjIGltcGxlbWVudGF0aW9uLWRlZmluZWQ6IEZyZWVCU0QgcmV0dXJucyBFSU5WQUwuCisgICAgICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpOgorICAgICAgICAgICAgcG9zaXguc2NoZWRfc2V0cGFyYW0oMCwgcGFyYW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgLTEsIHBhcmFtKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX3NldHNjaGVkdWxlciwgLTEsIG1pbmUsIHBhcmFtKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnNjaGVkX3NldHNjaGVkdWxlciwgMCwgbWluZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgNDMpCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfcGFyYW0oTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisgICAgICAgIGxhcmdlID0gMjE0NzQ4MzY0NzAwCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfcGFyYW0obGFyZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvc2l4LnNjaGVkX3NldHBhcmFtLCAwLCBwYXJhbSkKKyAgICAgICAgcGFyYW0gPSBwb3NpeC5zY2hlZF9wYXJhbShzY2hlZF9wcmlvcml0eT0tbGFyZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvc2l4LnNjaGVkX3NldHBhcmFtLCAwLCBwYXJhbSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiKSwgIm5vIGZ1bmN0aW9uIikKKyAgICBkZWYgdGVzdF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGludGVydmFsID0gcG9zaXguc2NoZWRfcnJfZ2V0X2ludGVydmFsKDApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAjIFRoaXMgbGlrZWx5IG1lYW5zIHRoYXQgc2NoZWRfcnJfZ2V0X2ludGVydmFsIGlzIG9ubHkgdmFsaWQgZm9yCisgICAgICAgICAgICAjIHByb2Nlc3NlcyB3aXRoIHRoZSBTQ0hFRF9SUiBzY2hlZHVsZXIgaW4gZWZmZWN0LgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5WQUw6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm9ubHkgd29ya3Mgb24gU0NIRURfUlIgcHJvY2Vzc2VzIikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGludGVydmFsLCBmbG9hdCkKKyAgICAgICAgIyBSZWFzb25hYmxlIGNvbnN0cmFpbnRzLCBJIHRoaW5rLgorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChpbnRlcnZhbCwgMC4pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhpbnRlcnZhbCwgMS4pCisKKyAgICBAcmVxdWlyZXNfc2NoZWRfYWZmaW5pdHkKKyAgICBkZWYgdGVzdF9zY2hlZF9nZXRhZmZpbml0eShzZWxmKToKKyAgICAgICAgbWFzayA9IHBvc2l4LnNjaGVkX2dldGFmZmluaXR5KDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtYXNrLCBzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihtYXNrKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfZ2V0YWZmaW5pdHksIC0xKQorICAgICAgICBmb3IgY3B1IGluIG1hc2s6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3B1LCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChjcHUsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoY3B1LCAxIDw8IDMyKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2FmZmluaXR5CisgICAgZGVmIHRlc3Rfc2NoZWRfc2V0YWZmaW5pdHkoc2VsZik6CisgICAgICAgIG1hc2sgPSBwb3NpeC5zY2hlZF9nZXRhZmZpbml0eSgwKQorICAgICAgICBpZiBsZW4obWFzaykgPiAxOgorICAgICAgICAgICAgIyBFbXB0eSBtYXNrcyBhcmUgZm9yYmlkZGVuCisgICAgICAgICAgICBtYXNrLnBvcCgpCisgICAgICAgIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5KDAsIG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXguc2NoZWRfZ2V0YWZmaW5pdHkoMCksIG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5LCAwLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHksIDAsIFstMTBdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgMCwgWzE8PDEyOF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5LCAtMSwgbWFzaykKKworICAgIGRlZiB0ZXN0X3J0bGRfY29uc3RhbnRzKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHByZXNlbmNlIG9mIG1ham9yIFJUTERfKiBjb25zdGFudHMKKyAgICAgICAgcG9zaXguUlRMRF9MQVpZCisgICAgICAgIHBvc2l4LlJUTERfTk9XCisgICAgICAgIHBvc2l4LlJUTERfR0xPQkFMCisgICAgICAgIHBvc2l4LlJUTERfTE9DQUwKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdTRUVLX0hPTEUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBuZWVkcyBhbiBPUyB0aGF0IHJlcG9ydHMgZmlsZSBob2xlcyIpCisgICAgZGVmIHRlc3RfZnNfaG9sZXMoc2VsZik6CisgICAgICAgICMgRXZlbiBpZiB0aGUgZmlsZXN5c3RlbSBkb2Vzbid0IHJlcG9ydCBob2xlcywKKyAgICAgICAgIyBpZiB0aGUgT1Mgc3VwcG9ydHMgaXQgdGhlIFNFRUtfKiBjb25zdGFudHMKKyAgICAgICAgIyB3aWxsIGJlIGRlZmluZWQgYW5kIHdpbGwgaGF2ZSBhIGNvbnNpc3RlbnQKKyAgICAgICAgIyBiZWhhdmlvdXI6CisgICAgICAgICMgb3MuU0VFS19EQVRBID0gY3VycmVudCBwb3NpdGlvbgorICAgICAgICAjIG9zLlNFRUtfSE9MRSA9IGVuZCBvZiBmaWxlIHBvc2l0aW9uCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3IrYicpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYiJoZWxsbyIpCisgICAgICAgICAgICBmcC5mbHVzaCgpCisgICAgICAgICAgICBzaXplID0gZnAudGVsbCgpCisgICAgICAgICAgICBmbm8gPSBmcC5maWxlbm8oKQorICAgICAgICAgICAgdHJ5IDoKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShzaXplKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLCBvcy5sc2Vlayhmbm8sIGksIG9zLlNFRUtfREFUQSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHNpemUsIG9zLmxzZWVrKGZubywgaSwgb3MuU0VFS19IT0xFKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5sc2VlaywgZm5vLCBzaXplLCBvcy5TRUVLX0RBVEEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubHNlZWssIGZubywgc2l6ZSwgb3MuU0VFS19IT0xFKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgOgorICAgICAgICAgICAgICAgICMgU29tZSBPU3MgY2xhaW0gdG8gc3VwcG9ydCBTRUVLX0hPTEUvU0VFS19EQVRBCisgICAgICAgICAgICAgICAgIyBidXQgaXQgaXMgbm90IHRydWUuCisgICAgICAgICAgICAgICAgIyBGb3IgaW5zdGFuY2U6CisgICAgICAgICAgICAgICAgIyBodHRwOi8vbGlzdHMuZnJlZWJzZC5vcmcvcGlwZXJtYWlsL2ZyZWVic2QtYW1kNjQvMjAxMi1KYW51YXJ5LzAxNDMzMi5odG1sCisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIk9TRXJyb3IgcmFpc2VkISIpCisKIGNsYXNzIFBvc2l4R3JvdXBzVGVzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQ5MCw5ICsxMDQ1LDExIEBACiAgICAgICAgICAgICBwb3NpeC5zZXRncm91cHMoZ3JvdXBzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZ3JvdXBzLCBwb3NpeC5nZXRncm91cHMoKSkKIAotCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9zaXhUZXN0ZXIsIFBvc2l4R3JvdXBzVGVzdGVyKQorICAgIHRyeToKKyAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9zaXhUZXN0ZXIsIFBvc2l4R3JvdXBzVGVzdGVyKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKaW5kZXggNTk5Yzg1YS4uN2FjYTg3ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCi0KIGltcG9ydCBpdGVydG9vbHMKLWltcG9ydCBwb3NpeHBhdGgKIGltcG9ydCBvcworaW1wb3J0IHBvc2l4cGF0aAogaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gcG9zaXhwYXRoIGltcG9ydCByZWFscGF0aCwgYWJzcGF0aCwgZGlybmFtZSwgYmFzZW5hbWUKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAogCiB0cnk6CiAgICAgaW1wb3J0IHBvc2l4CkBAIC0yNDUsNyArMjQ1LDkgQEAKIAogICAgIGRlZiB0ZXN0X2lzbW91bnQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocG9zaXhwYXRoLmlzbW91bnQoIi8iKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhwb3NpeHBhdGguaXNtb3VudChiIi8iKSwgVHJ1ZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBvc2l4cGF0aC5pc21vdW50KGIiLyIpLCBUcnVlKQogCiAgICAgZGVmIHRlc3RfaXNtb3VudF9ub25fZXhpc3RlbnQoc2VsZik6CiAgICAgICAgICMgTm9uLWV4aXN0ZW50IG1vdW50cG9pbnQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weSBiL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CmluZGV4IDBjOTNkMGUuLmQ0OTJkNzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CkBAIC0yMTksNiArMjE5LDggQEAKICBvdGhlcnMuc2hvdWxkLm5vdC5iZTogbGlrZS50aGlzfSIiIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERvdHRlZFByZXR0eVByaW50ZXIoKS5wZm9ybWF0KG8pLCBleHApCiAKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgI1NlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTM5MDcKICAgICBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NldF9yZXBycyhzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3QgY3JlYXRlcyBhIGNvbXBsZXggYXJyYW5nZW1lbnQgb2YgZnJvemVuc2V0cyBhbmQKQEAgLTI0MSwxMCArMjQzLDEyIEBACiAgICAgICAgICMgQ29uc2VxdWVudGx5LCB0aGlzIHRlc3QgaXMgZnJhZ2lsZSBhbmQKICAgICAgICAgIyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBTbWFsbCBjaGFuZ2VzIHRvIFB5dGhvbidzIHNvcnQKICAgICAgICAgIyBhbGdvcml0aG0gY2F1c2UgdGhlIHRlc3QgdG8gZmFpbCB3aGVuIGl0IHNob3VsZCBwYXNzLgorICAgICAgICAjIFhYWCBPciBjaGFuZ2VzIHRvIHRoZSBkaWN0aW9uYXJ5IGltcGxtZW50YXRpb24uLi4KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNldCgpKSwgJ3NldCgpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzZXQocmFuZ2UoMykpKSwgJ3swLCAxLCAyfScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZnJvemVuc2V0KCkpLCAnZnJvemVuc2V0KCknKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZnJvemVuc2V0KHJhbmdlKDMpKSksICdmcm96ZW5zZXQoezAsIDEsIDJ9KScpCiAgICAgICAgIGN1YmVfcmVwcl90Z3QgPSAiIiJcCiB7ZnJvemVuc2V0KCk6IGZyb3plbnNldCh7ZnJvemVuc2V0KHsyfSksIGZyb3plbnNldCh7MH0pLCBmcm96ZW5zZXQoezF9KX0pLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcmludC5weSBiL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkKaW5kZXggOGQzN2JiYy4uOWQ2ZGJlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcmludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ByaW50LnB5CkBAIC0xMTEsNiArMTExLDMyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHJpbnQsICcnLCBlbmQ9MykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHByaW50LCAnJywgZmlsZT0nJykKIAorICAgIGRlZiB0ZXN0X3ByaW50X2ZsdXNoKHNlbGYpOgorICAgICAgICAjIG9wZXJhdGlvbiBvZiB0aGUgZmx1c2ggZmxhZworICAgICAgICBjbGFzcyBmaWxlbGlrZSgpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdHRlbiA9ICcnCisgICAgICAgICAgICAgICAgc2VsZi5mbHVzaGVkID0gMAorICAgICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CisgICAgICAgICAgICAgICAgc2VsZi53cml0dGVuICs9IHN0cgorICAgICAgICAgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZmx1c2hlZCArPSAxCisKKyAgICAgICAgZiA9IGZpbGVsaWtlKCkKKyAgICAgICAgcHJpbnQoMSwgZmlsZT1mLCBlbmQ9JycsIGZsdXNoPVRydWUpCisgICAgICAgIHByaW50KDIsIGZpbGU9ZiwgZW5kPScnLCBmbHVzaD1UcnVlKQorICAgICAgICBwcmludCgzLCBmaWxlPWYsIGZsdXNoPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYud3JpdHRlbiwgJzEyM1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZsdXNoZWQsIDIpCisKKyAgICAgICAgIyBlbnN1cmUgZXhjZXB0aW9ucyBmcm9tIGZsdXNoIGFyZSBwYXNzZWQgdGhyb3VnaAorICAgICAgICBjbGFzcyBub2ZsdXNoKCk6CisgICAgICAgICAgICBkZWYgd3JpdGUoc2VsZiwgc3RyKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcHJpbnQsIDEsIGZpbGU9bm9mbHVzaCgpLCBmbHVzaD1UcnVlKQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFByaW50KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQppbmRleCBjYzZhODcyLi43MjZkNmZlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKQEAgLTEyOCw2ICsxMjgsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdnZXR0ZXIuc3BhbSwgOCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdnZXR0ZXIuX19jbGFzc19fLnNwYW0uX19kb2NfXywgIm5ldyBkb2NzdHJpbmciKQogCisgICAgZGVmIHRlc3RfcHJvcGVydHlfX19pc2Fic3RyYWN0bWV0aG9kX19kZXNjcmlwdG9yKHNlbGYpOgorICAgICAgICBmb3IgdmFsIGluIChUcnVlLCBGYWxzZSwgW10sIFsxXSwgJycsICcxJyk6CisgICAgICAgICAgICBjbGFzcyBDKG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXyA9IHZhbAorICAgICAgICAgICAgICAgIGZvbyA9IHByb3BlcnR5KGZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18sIGJvb2wodmFsKSkKKworICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHByb3BlcnR5J3MgX19pc2Fic3RyYWN0bWV0aG9kX18gZGVzY3JpcHRvciBkb2VzIHRoZQorICAgICAgICAjIHJpZ2h0IHRoaW5nIHdoZW4gcHJlc2VudGVkIHdpdGggYSB2YWx1ZSB0aGF0IGZhaWxzIHRydXRoIHRlc3Rpbmc6CisgICAgICAgIGNsYXNzIE5vdEJvb2wob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkKKyAgICAgICAgICAgIF9fbGVuX18gPSBfX25vbnplcm9fXworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmb28uX19pc2Fic3RyYWN0bWV0aG9kX18gPSBOb3RCb29sKCkKKyAgICAgICAgICAgICAgICBmb28gPSBwcm9wZXJ0eShmb28pCisgICAgICAgICAgICBDLmZvby5fX2lzYWJzdHJhY3RtZXRob2RfXworCiAKICMgSXNzdWUgNTg5MDogc3ViY2xhc3NlcyBvZiBwcm9wZXJ0eSBkbyBub3QgcHJlc2VydmUgbWV0aG9kIF9fZG9jX18gc3RyaW5ncwogY2xhc3MgUHJvcGVydHlTdWIocHJvcGVydHkpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdHkucHkgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQppbmRleCA0ZjEyNTFjLi5lZjk1MjY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQpAQCAtMjA1LDYgKzIwNSw3IEBACiAgICAgICAgIHNlbGYub3JpZ19zdGRvdXRfZmlsZW5vID0gcHR5LlNURE9VVF9GSUxFTk8KICAgICAgICAgc2VsZi5vcmlnX3B0eV9zZWxlY3QgPSBwdHkuc2VsZWN0CiAgICAgICAgIHNlbGYuZmRzID0gW10gICMgQSBsaXN0IG9mIGZpbGUgZGVzY3JpcHRvcnMgdG8gY2xvc2UuCisgICAgICAgIHNlbGYuZmlsZXMgPSBbXQogICAgICAgICBzZWxmLnNlbGVjdF9yZmRzX2xlbmd0aHMgPSBbXQogICAgICAgICBzZWxmLnNlbGVjdF9yZmRzX3Jlc3VsdHMgPSBbXQogCkBAIC0yMTIsMTAgKzIxMywxNSBAQAogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gc2VsZi5vcmlnX3N0ZGluX2ZpbGVubwogICAgICAgICBwdHkuU1RET1VUX0ZJTEVOTyA9IHNlbGYub3JpZ19zdGRvdXRfZmlsZW5vCiAgICAgICAgIHB0eS5zZWxlY3QgPSBzZWxmLm9yaWdfcHR5X3NlbGVjdAorICAgICAgICBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBmb3IgZmQgaW4gc2VsZi5mZHM6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgX3BpcGUoc2VsZik6CkBAIC0yMjMsNiArMjI5LDExIEBACiAgICAgICAgIHNlbGYuZmRzLmV4dGVuZChwaXBlX2ZkcykKICAgICAgICAgcmV0dXJuIHBpcGVfZmRzCiAKKyAgICBkZWYgX3NvY2tldHBhaXIoc2VsZik6CisgICAgICAgIHNvY2tldHBhaXIgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHNlbGYuZmlsZXMuZXh0ZW5kKHNvY2tldHBhaXIpCisgICAgICAgIHJldHVybiBzb2NrZXRwYWlyCisKICAgICBkZWYgX21vY2tfc2VsZWN0KHNlbGYsIHJmZHMsIHdmZHMsIHhmZHMpOgogICAgICAgICAjIFRoaXMgd2lsbCByYWlzZSBJbmRleEVycm9yIHdoZW4gbm8gbW9yZSBleHBlY3RlZCBjYWxscyBleGlzdC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbGVjdF9yZmRzX2xlbmd0aHMucG9wKDApLCBsZW4ocmZkcykpCkBAIC0yMzQsOSArMjQ1LDggQEAKICAgICAgICAgcHR5LlNURE9VVF9GSUxFTk8gPSBtb2NrX3N0ZG91dF9mZAogICAgICAgICBtb2NrX3N0ZGluX2ZkLCB3cml0ZV90b19zdGRpbl9mZCA9IHNlbGYuX3BpcGUoKQogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gbW9ja19zdGRpbl9mZAotICAgICAgICBzb2NrZXRwYWlyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgICBzb2NrZXRwYWlyID0gc2VsZi5fc29ja2V0cGFpcigpCiAgICAgICAgIG1hc3RlcnMgPSBbcy5maWxlbm8oKSBmb3IgcyBpbiBzb2NrZXRwYWlyXQotICAgICAgICBzZWxmLmZkcy5leHRlbmQobWFzdGVycykKIAogICAgICAgICAjIEZlZWQgZGF0YS4gIFNtYWxsZXIgdGhhbiBQSVBFQlVGLiAgVGhlc2Ugd3JpdGVzIHdpbGwgbm90IGJsb2NrLgogICAgICAgICBvcy53cml0ZShtYXN0ZXJzWzFdLCBiJ2Zyb20gbWFzdGVyJykKQEAgLTI2Myw5ICsyNzMsOCBAQAogICAgICAgICBwdHkuU1RET1VUX0ZJTEVOTyA9IG1vY2tfc3Rkb3V0X2ZkCiAgICAgICAgIG1vY2tfc3RkaW5fZmQsIHdyaXRlX3RvX3N0ZGluX2ZkID0gc2VsZi5fcGlwZSgpCiAgICAgICAgIHB0eS5TVERJTl9GSUxFTk8gPSBtb2NrX3N0ZGluX2ZkCi0gICAgICAgIHNvY2tldHBhaXIgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHNvY2tldHBhaXIgPSBzZWxmLl9zb2NrZXRwYWlyKCkKICAgICAgICAgbWFzdGVycyA9IFtzLmZpbGVubygpIGZvciBzIGluIHNvY2tldHBhaXJdCi0gICAgICAgIHNlbGYuZmRzLmV4dGVuZChtYXN0ZXJzKQogCiAgICAgICAgIG9zLmNsb3NlKG1hc3RlcnNbMV0pCiAgICAgICAgIHNvY2tldHBhaXJbMV0uY2xvc2UoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MWE1OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTAsMCArMSwzNDcgQEAKK2ltcG9ydCBpbworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCitpbXBvcnQgeG1sLnNheAorCitmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbAorZnJvbSB4bWwuZG9tIGltcG9ydCBwdWxsZG9tCisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlCisKKwordHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQorCisjIEEgaGFuZHkgWE1MIHNuaXBwZXQsIGNvbnRhaW5pbmcgYXR0cmlidXRlcywgYSBuYW1lc3BhY2UgcHJlZml4LCBhbmQgYQorIyBzZWxmLWNsb3NpbmcgdGFnOgorU01BTExfU0FNUExFID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6eGRjPSJodHRwOi8vd3d3LnhtbC5jb20vYm9va3MiPgorPCEtLSBBIGNvbW1lbnQgLS0+Cis8dGl0bGU+SW50cm9kdWN0aW9uIHRvIFhTTDwvdGl0bGU+Cis8aHIvPgorPHA+PHhkYzphdXRob3IgeGRjOmF0dHJpYj0icHJlZml4ZWQgYXR0cmlidXRlIiBhdHRyaWI9Im90aGVyIGF0dHJpYiI+QS4gTmFtZXNwYWNlPC94ZGM6YXV0aG9yPjwvcD4KKzwvaHRtbD4iIiIKKworCitjbGFzcyBQdWxsRE9NVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGFyc2Uoc2VsZik6CisgICAgICAgICIiIk1pbmltYWwgdGVzdCBvZiBET01FdmVudFN0cmVhbS5wYXJzZSgpIiIiCisKKyAgICAgICAgIyBUaGlzIGp1c3QgdGVzdHMgdGhhdCBwYXJzaW5nIGZyb20gYSBzdHJlYW0gd29ya3MuIEFjdHVhbCBwYXJzZXIKKyAgICAgICAgIyBzZW1hbnRpY3MgYXJlIHRlc3RlZCB1c2luZyBwYXJzZVN0cmluZyB3aXRoIGEgbW9yZSBmb2N1c2VkIFhNTAorICAgICAgICAjIGZyYWdtZW50LgorCisgICAgICAgICMgVGVzdCB3aXRoIGEgZmlsZW5hbWU6CisgICAgICAgIGhhbmRsZXIgPSBwdWxsZG9tLnBhcnNlKHRzdGZpbGUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChoYW5kbGVyLnN0cmVhbS5jbG9zZSkKKyAgICAgICAgbGlzdChoYW5kbGVyKQorCisgICAgICAgICMgVGVzdCB3aXRoIGEgZmlsZSBvYmplY3Q6CisgICAgICAgIHdpdGggb3Blbih0c3RmaWxlLCAicmIiKSBhcyBmaW46CisgICAgICAgICAgICBsaXN0KHB1bGxkb20ucGFyc2UoZmluKSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBET01FdmVudFN0cmVhbSBwYXJzaW5nIHNlbWFudGljcy4iIiIKKworICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICAjIEp1c3QgY2hlY2sgdGhlIG5vZGUgaXMgYSBEb2N1bWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobm9kZSwgImNyZWF0ZUVsZW1lbnQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0RPQ1VNRU5ULCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0bWwiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG5vZGUuYXR0cmlidXRlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgieG1sbnM6eGRjIikudmFsdWUsCisgICAgICAgICAgICAgICJodHRwOi8vd3d3LnhtbC5jb20vYm9va3MiKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KSAjIExpbmUgYnJlYWsKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgIyBYWFggLSBBIGNvbW1lbnQgc2hvdWxkIGJlIHJlcG9ydGVkIGhlcmUhCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNPTU1FTlQsIGV2dCkKKyAgICAgICAgIyBMaW5lIGJyZWFrIGFmdGVyIHN3YWxsb3dlZCBjb21tZW50OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0aXRsZSIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgdGl0bGVfbm9kZSA9IG5vZGUKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSW50cm9kdWN0aW9uIHRvIFhTTCIsIG5vZGUuZGF0YSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRpdGxlIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGl0bGVfbm9kZSBpcyBub2RlKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImhyIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ4ZGM6YXV0aG9yIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieGRjOmF1dGhvciIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICAjIFhYWCBObyBFTkRfRE9DVU1FTlQgaXRlbSBpcyBldmVyIG9idGFpbmVkOgorICAgICAgICAjZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRE9DVU1FTlQsIGV2dCkKKworICAgIGRlZiB0ZXN0X2V4cGFuZEl0ZW0oc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBleHBhbmRJdGVtIHdvcmtzIGFzIGV4cGVjdGVkLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICAjIExvb3AgdGhyb3VnaCB0aGUgbm9kZXMgdW50aWwgd2UgZ2V0IHRvIGEgInRpdGxlIiBzdGFydCB0YWc6CisgICAgICAgIGZvciBldnQsIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5TVEFSVF9FTEVNRU5UIGFuZCBpdGVtLnRhZ05hbWUgPT0gInRpdGxlIjoKKyAgICAgICAgICAgICAgICBpdGVtcy5leHBhbmROb2RlKGl0ZW0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaXRlbS5jaGlsZE5vZGVzKSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBcInRpdGxlXCIgZWxlbWVudCBkZXRlY3RlZCBpbiBTTUFMTF9TQU1QTEUhIikKKyAgICAgICAgIyBMb29wIHVudGlsIHdlIGdldCB0byB0aGUgbmV4dCBzdGFydC1lbGVtZW50OgorICAgICAgICBmb3IgZXZ0LCBub2RlIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSwKKyAgICAgICAgICAgICJleHBhbmROb2RlIGRpZCBub3QgbGVhdmUgRE9NRXZlbnRTdHJlYW0gaW4gdGhlIGNvcnJlY3Qgc3RhdGUuIikKKyAgICAgICAgIyBBdHRlbXB0IHRvIGV4cGFuZCBhIHN0YW5kYWxvbmUgZWxlbWVudDoKKyAgICAgICAgaXRlbXMuZXhwYW5kTm9kZShub2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlbXMpWzBdLCBwdWxsZG9tLkNIQVJBQ1RFUlMpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS50YWdOYW1lLCAicCIpCisgICAgICAgIGl0ZW1zLmV4cGFuZE5vZGUobm9kZSkKKyAgICAgICAgbmV4dChpdGVtcykgIyBTa2lwIGNoYXJhY3RlciBkYXRhCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS50YWdOYW1lLCAiaHRtbCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBuZXh0KGl0ZW1zKQorICAgICAgICBpdGVtcy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGl0ZW1zLnBhcnNlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaXRlbXMuc3RyZWFtKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X2NvbW1lbnQoc2VsZik6CisgICAgICAgICIiIlB1bGxET00gZG9lcyBub3QgcmVjZWl2ZSAiY29tbWVudCIgZXZlbnRzLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICBmb3IgZXZ0LCBfIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uQ09NTUVOVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBjb21tZW50IHdhcyBlbmNvdW50ZXJlZCIpCisKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3RfZW5kX2RvY3VtZW50KHNlbGYpOgorICAgICAgICAiIiJQdWxsRE9NIGRvZXMgbm90IHJlY2VpdmUgImVuZC1kb2N1bWVudCIgZXZlbnRzLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICAjIFJlYWQgYWxsIG9mIHRoZSBub2RlcyB1cCB0byBhbmQgaW5jbHVkaW5nIDwvaHRtbD46CisgICAgICAgIGZvciBldnQsIG5vZGUgaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5FTkRfRUxFTUVOVCBhbmQgbm9kZS50YWdOYW1lID09ICJodG1sIjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEFzc2VydCB0aGF0IHRoZSBuZXh0IG5vZGUgaXMgRU5EX0RPQ1VNRU5UOgorICAgICAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRE9DVU1FTlQsIGV2dCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmZhaWwoCisgICAgICAgICAgICAgICAgIlJhbiBvdXQgb2YgZXZlbnRzLCBidXQgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgRU5EX0RPQ1VNRU5UIikKKworCitjbGFzcyBUaG9yb3VnaFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIHB1bGxkb20uIiIiCisKKyAgICBkZWYgdGVzdF90aG9yb3VnaF9wYXJzZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzb21lIG9mIHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIFB1bGxET00uIiIiCisgICAgICAgIHNlbGYuX3Rlc3RfdGhvcm91Z2gocHVsbGRvbS5wYXJzZShOb25lLCBwYXJzZXI9U0FYRXhlcmNpc2VyKCkpKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X3NheDJkb21fZmFpbChzZWxmKToKKyAgICAgICAgIiIiU0FYMkRPTSBjYW4idCBoYW5kbGUgYSBQSSBiZWZvcmUgdGhlIHJvb3QgZWxlbWVudC4iIiIKKyAgICAgICAgcGQgPSBTQVgyRE9NVGVzdEhlbHBlcihOb25lLCBTQVhFeGVyY2lzZXIoKSwgMTIpCisgICAgICAgIHNlbGYuX3Rlc3RfdGhvcm91Z2gocGQpCisKKyAgICBkZWYgdGVzdF90aG9yb3VnaF9zYXgyZG9tKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHNvbWUgb2YgdGhlIGhhcmQtdG8tcmVhY2ggcGFydHMgb2YgU0FYMkRPTS4iIiIKKyAgICAgICAgcGQgPSBTQVgyRE9NVGVzdEhlbHBlcihOb25lLCBTQVgyRE9NRXhlcmNpc2VyKCksIDEyKQorICAgICAgICBzZWxmLl90ZXN0X3Rob3JvdWdoKHBkLCBGYWxzZSkKKworICAgIGRlZiBfdGVzdF90aG9yb3VnaChzZWxmLCBwZCwgYmVmb3JlX3Jvb3Q9VHJ1ZSk6CisgICAgICAgICIiIlRlc3Qgc29tZSBvZiB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiB0aGUgcGFyc2VyLCB1c2luZyBhIG1vY2sKKyAgICAgICAgcGFyc2VyLiIiIgorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9ET0NVTUVOVCwgZXZ0KQorICAgICAgICAjIEp1c3QgY2hlY2sgdGhlIG5vZGUgaXMgYSBEb2N1bWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobm9kZSwgImNyZWF0ZUVsZW1lbnQiKSkKKworICAgICAgICBpZiBiZWZvcmVfcm9vdDoKKyAgICAgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ09NTUVOVCwgZXZ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYSBjb21tZW50Iiwgbm9kZS5kYXRhKQorICAgICAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLCBldnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0YXJnZXQiLCBub2RlLnRhcmdldCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImRhdGEiLCBub2RlLmRhdGEpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHRtbCIsIG5vZGUudGFnTmFtZSkKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ09NTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhIGNvbW1lbnQiLCBub2RlLmRhdGEpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRhcmdldCIsIG5vZGUudGFyZ2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJkYXRhIiwgbm9kZS5kYXRhKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInAiLCBub2RlLnRhZ05hbWUpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dCIsIG5vZGUuZGF0YSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInAiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodG1sIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0RPQ1VNRU5ULCBldnQpCisKKworY2xhc3MgU0FYRXhlcmNpc2VyKG9iamVjdCk6CisgICAgIiIiQSBmYWtlIHNheCBwYXJzZXIgdGhhdCBjYWxscyBzb21lIG9mIHRoZSBoYXJkZXItdG8tcmVhY2ggc2F4IG1ldGhvZHMgdG8KKyAgICBlbnN1cmUgaXQgZW1pdHMgdGhlIGNvcnJlY3QgZXZlbnRzIiIiCisKKyAgICBkZWYgc2V0Q29udGVudEhhbmRsZXIoc2VsZiwgaGFuZGxlcik6CisgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisKKyAgICBkZWYgcGFyc2Uoc2VsZiwgXyk6CisgICAgICAgIGggPSBzZWxmLl9oYW5kbGVyCisgICAgICAgIGguc3RhcnREb2N1bWVudCgpCisKKyAgICAgICAgIyBUaGUgbmV4dCB0d28gaXRlbXMgZW5zdXJlIHRoYXQgaXRlbXMgcHJlY2VkaW5nIHRoZSBmaXJzdAorICAgICAgICAjIHN0YXJ0X2VsZW1lbnQgYXJlIHByb3Blcmx5IHN0b3JlZCBhbmQgZW1pdHRlZDoKKyAgICAgICAgaC5jb21tZW50KCJhIGNvbW1lbnQiKQorICAgICAgICBoLnByb2Nlc3NpbmdJbnN0cnVjdGlvbigidGFyZ2V0IiwgImRhdGEiKQorCisgICAgICAgIGguc3RhcnRFbGVtZW50KCJodG1sIiwgQXR0cmlidXRlc0ltcGwoe30pKQorCisgICAgICAgIGguY29tbWVudCgiYSBjb21tZW50IikKKyAgICAgICAgaC5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInRhcmdldCIsICJkYXRhIikKKworICAgICAgICBoLnN0YXJ0RWxlbWVudCgicCIsIEF0dHJpYnV0ZXNJbXBsKHsiY2xhc3MiOiAicGFyYWNsYXNzIn0pKQorICAgICAgICBoLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBoLmVuZEVsZW1lbnQoInAiKQorICAgICAgICBoLmVuZEVsZW1lbnQoImh0bWwiKQorICAgICAgICBoLmVuZERvY3VtZW50KCkKKworICAgIGRlZiBzdHViKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIlN0dWIgbWV0aG9kLiBEb2VzIG5vdGhpbmcuIiIiCisgICAgICAgIHBhc3MKKyAgICBzZXRQcm9wZXJ0eSA9IHN0dWIKKyAgICBzZXRGZWF0dXJlID0gc3R1YgorCisKK2NsYXNzIFNBWDJET01FeGVyY2lzZXIoU0FYRXhlcmNpc2VyKToKKyAgICAiIiJUaGUgc2FtZSBhcyBTQVhFeGVyY2lzZXIsIGJ1dCB3aXRob3V0IHRoZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGFuZAorICAgIGNvbW1lbnQgYmVmb3JlIHRoZSByb290IGVsZW1lbnQsIGJlY2F1c2UgUzJEIGNhbiJ0IGhhbmRsZSBpdCIiIgorCisgICAgZGVmIHBhcnNlKHNlbGYsIF8pOgorICAgICAgICBoID0gc2VsZi5faGFuZGxlcgorICAgICAgICBoLnN0YXJ0RG9jdW1lbnQoKQorICAgICAgICBoLnN0YXJ0RWxlbWVudCgiaHRtbCIsIEF0dHJpYnV0ZXNJbXBsKHt9KSkKKyAgICAgICAgaC5jb21tZW50KCJhIGNvbW1lbnQiKQorICAgICAgICBoLnByb2Nlc3NpbmdJbnN0cnVjdGlvbigidGFyZ2V0IiwgImRhdGEiKQorICAgICAgICBoLnN0YXJ0RWxlbWVudCgicCIsIEF0dHJpYnV0ZXNJbXBsKHsiY2xhc3MiOiAicGFyYWNsYXNzIn0pKQorICAgICAgICBoLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBoLmVuZEVsZW1lbnQoInAiKQorICAgICAgICBoLmVuZEVsZW1lbnQoImh0bWwiKQorICAgICAgICBoLmVuZERvY3VtZW50KCkKKworCitjbGFzcyBTQVgyRE9NVGVzdEhlbHBlcihwdWxsZG9tLkRPTUV2ZW50U3RyZWFtKToKKyAgICAiIiJBbGxvd3MgdXMgdG8gZHJpdmUgU0FYMkRPTSBmcm9tIGEgRE9NRXZlbnRTdHJlYW0uIiIiCisKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHNlbGYucHVsbGRvbSA9IHB1bGxkb20uU0FYMkRPTSgpCisgICAgICAgICMgVGhpcyBjb250ZW50IGhhbmRsZXIgcmVsaWVzIG9uIG5hbWVzcGFjZSBzdXBwb3J0CisgICAgICAgIHNlbGYucGFyc2VyLnNldEZlYXR1cmUoeG1sLnNheC5oYW5kbGVyLmZlYXR1cmVfbmFtZXNwYWNlcywgMSkKKyAgICAgICAgc2VsZi5wYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoc2VsZi5wdWxsZG9tKQorCisKK2NsYXNzIFNBWDJET01UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgY29uZmlybShzZWxmLCB0ZXN0LCB0ZXN0bmFtZT0iVGVzdCIpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdCwgdGVzdG5hbWUpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIFNBWDJET00gY2FuIHBhcnNlIGZyb20gYSBzdHJlYW0uIiIiCisgICAgICAgIHdpdGggaW8uU3RyaW5nSU8oU01BTExfU0FNUExFKSBhcyBmaW46CisgICAgICAgICAgICBzZCA9IFNBWDJET01UZXN0SGVscGVyKGZpbiwgeG1sLnNheC5tYWtlX3BhcnNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oU01BTExfU0FNUExFKSkKKyAgICAgICAgICAgIGZvciBldnQsIG5vZGUgaW4gc2Q6CisgICAgICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVCBhbmQgbm9kZS50YWdOYW1lID09ICJodG1sIjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICMgQmVjYXVzZSB0aGUgYnVmZmVyIGlzIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgWE1MLCBhbGwgdGhlCisgICAgICAgICAgICAjIG5vZGVzIHNob3VsZCBoYXZlIGJlZW4gcGFyc2VkIGFuZCBhZGRlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4obm9kZS5jaGlsZE5vZGVzKSwgMCkKKworICAgIGRlZiB0ZXN0U0FYMkRPTShzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIFNBWDJET00gZXhwYW5kcyBub2RlcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgc2F4MmRvbSA9IHB1bGxkb20uU0FYMkRPTSgpCisgICAgICAgIHNheDJkb20uc3RhcnREb2N1bWVudCgpCisgICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJkb2MiLCB7fSkKKyAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgc2F4MmRvbS5zdGFydEVsZW1lbnQoInN1YmVsbSIsIHt9KQorICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoInN1YmVsbSIpCisgICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIHNheDJkb20uZW5kRWxlbWVudCgiZG9jIikKKyAgICAgICAgc2F4MmRvbS5lbmREb2N1bWVudCgpCisKKyAgICAgICAgZG9jID0gc2F4MmRvbS5kb2N1bWVudAorICAgICAgICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudAorICAgICAgICAodGV4dDEsIGVsbTEsIHRleHQyKSA9IHJvb3QuY2hpbGROb2RlcworICAgICAgICB0ZXh0MyA9IGVsbTEuY2hpbGROb2Rlc1swXQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRleHQxLnByZXZpb3VzU2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0MS5uZXh0U2libGluZywgZWxtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhlbG0xLnByZXZpb3VzU2libGluZywgdGV4dDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5uZXh0U2libGluZywgdGV4dDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDIucHJldmlvdXNTaWJsaW5nLCBlbG0xKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0Mi5uZXh0U2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDMucHJldmlvdXNTaWJsaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0My5uZXh0U2libGluZykKKworICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QucGFyZW50Tm9kZSwgZG9jKQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQxLnBhcmVudE5vZGUsIHJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5wYXJlbnROb2RlLCByb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQyLnBhcmVudE5vZGUsIHJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDMucGFyZW50Tm9kZSwgZWxtMSkKKyAgICAgICAgZG9jLnVubGluaygpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChQdWxsRE9NVGVzdENhc2UsIFRob3JvdWdoVGVzdENhc2UsIFNBWDJET01UZXN0Q2FzZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5IGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQppbmRleCBjNWE4ZTk4Li44ZTIwMDFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKQEAgLTE5OCw3ICsxOTgsNyBAQAogbWlzc2luZ19wYXR0ZXJuID0gIm5vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAnJXMnIgogCiAjIG91dHB1dCBwYXR0ZXJuIGZvciBtb2R1bGUgd2l0aCBiYWQgaW1wb3J0cwotYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXMiCitiYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKIAogZGVmIHJ1bl9weWRvYyhtb2R1bGVfbmFtZSwgKmFyZ3MsICoqZW52KToKICAgICAiIiIKQEAgLTIzNiw4ICsyMzYsOCBAQAogZGVmIHByaW50X2RpZmZzKHRleHQxLCB0ZXh0Mik6CiAgICAgIlByaW50cyB1bmlmaWVkIGRpZmZzIGZvciB0d28gdGV4dHMiCiAgICAgIyBYWFggbm93IG9ic29sZXRlLCB1c2UgdW5pdHRlc3QgYnVpbHQtaW4gc3VwcG9ydAotICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoVHJ1ZSkKLSAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKFRydWUpCisgICAgbGluZXMxID0gdGV4dDEuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgIGxpbmVzMiA9IHRleHQyLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICBkaWZmcyA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGxpbmVzMSwgbGluZXMyLCBuPTAsIGZyb21maWxlPSdleHBlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2ZpbGU9J2dvdCcpCiAgICAgcHJpbnQoJ1xuJyArICcnLmpvaW4oZGlmZnMpKQpAQCAtMjU0LDYgKzI1NCw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHVuZXhwZWN0ZWRseScpCiAgICAgZGVmIHRlc3RfaHRtbF9kb2Moc2VsZik6CiAgICAgICAgIHJlc3VsdCwgZG9jX2xvYyA9IGdldF9weWRvY19odG1sKHB5ZG9jX21vZCkKICAgICAgICAgbW9kX2ZpbGUgPSBpbnNwZWN0LmdldGFic2ZpbGUocHlkb2NfbW9kKQpAQCAtMjY5LDYgKzI3MSw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHVuZXhwZWN0ZWRseScpCiAgICAgZGVmIHRlc3RfdGV4dF9kb2Moc2VsZik6CiAgICAgICAgIHJlc3VsdCwgZG9jX2xvYyA9IGdldF9weWRvY190ZXh0KHB5ZG9jX21vZCkKICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX3RleHRfcGF0dGVybiAlIFwKQEAgLTMyMSw2ICszMjUsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICdEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZScpCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB1bmV4cGVjdGVkbHknKQogICAgIGRlZiB0ZXN0X2hlbHBfb3V0cHV0X3JlZGlyZWN0KHNlbGYpOgogICAgICAgICAjIGlzc3VlIDk0MDI4NiwgaWYgb3V0cHV0IGlzIHNldCBpbiBIZWxwZXIsIHRoZW4gYWxsIG91dHB1dCBmcm9tCiAgICAgICAgICMgSGVscGVyLmhlbHAgc2hvdWxkIGJlIHJlZGlyZWN0ZWQKQEAgLTM4OCwxMSArMzk0LDEwIEBACiAgICAgICAgIG1vZG5hbWUgPSAndGVzdG1vZF94eXp6eScKICAgICAgICAgdGVzdHBhaXJzID0gKAogICAgICAgICAgICAgKCdpX2FtX25vdF9oZXJlJywgJ2lfYW1fbm90X2hlcmUnKSwKLSAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicsICdpX2FtX25vdF9oZXJlX2VpdGhlcicpLAotICAgICAgICAgICAgKCd0ZXN0LmlfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJywgJ2lfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJyksCi0gICAgICAgICAgICAoJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSwKLSAgICAgICAgICAgICAnaV9hbV9ub3RfaGVyZS57fScuZm9ybWF0KG1vZG5hbWUpKSwKLSAgICAgICAgICAgICgndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpLCBtb2RuYW1lKSwKKyAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicsICd0ZXN0LmlfYW1fbm90X2hlcmVfZWl0aGVyJyksCisgICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZS5uZWl0aGVyX2FtX2knLCAndGVzdC5pX2FtX25vdF9oZXJlJyksCisgICAgICAgICAgICAoJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSwgJ2lfYW1fbm90X2hlcmUnKSwKKyAgICAgICAgICAgICgndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpLCAndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpKSwKICAgICAgICAgICAgICkKIAogICAgICAgICBzb3VyY2VmbiA9IG9zLnBhdGguam9pbihURVNURk4sIG1vZG5hbWUpICsgb3MuZXh0c2VwICsgInB5IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKaW5kZXggZTAyYzFhZi4uYmU1YzFjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CkBAIC00LDYgKzQsNyBAQAogIiIiVGVzdHMgZm9yIHRoZSByYWlzZSBzdGF0ZW1lbnQuIiIiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdApAQCAtNzcsNiArNzgsMTYgQEAKICAgICAgICAgICAgICAgICBuZXN0ZWRfcmVyYWlzZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmVyYWlzZSkKIAorICAgIGRlZiB0ZXN0X3JhaXNlX2Zyb21fTm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZm9vIikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkgZnJvbSBOb25lCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShlLl9fY29udGV4dF9fLCBUeXBlRXJyb3IpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisKICAgICBkZWYgdGVzdF93aXRoX3JlcmFpc2UxKHNlbGYpOgogICAgICAgICBkZWYgcmVyYWlzZSgpOgogICAgICAgICAgICAgdHJ5OgpAQCAtMTMwLDggKzE0MSwzNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbgogCisgICAgZGVmIHRlc3RfYXNzZXJ0X3dpdGhfdHVwbGVfYXJnKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICgzLCkKKyAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIigzLCkiKQorCisKIAogY2xhc3MgVGVzdENhdXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q2F1c2VTeW50YXgoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IgZnJvbSBOb25lCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLl9fY2F1c2VfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICAgICAgICAgIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXyA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmFpc2UgZXhjCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGUgPSBleGMKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgVHlwZUVycm9yKQorCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jYXVzZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvciBmcm9tIDUKQEAgLTE3MSw2ICsyMDksNyBAQAogCiAKIGNsYXNzIFRlc3RUcmFjZWJhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHRlc3Rfc2V0c190cmFjZWJhY2soc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQppbmRleCA3NzZkMGM0Li5iNTkzMWJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQpAQCAtMzQsOCArMzQsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5kc2VxLCBzZWxmLnJhbmRvbWxpc3QoTikpCiAKICAgICBkZWYgdGVzdF9zZWVkYXJncyhzZWxmKToKKyAgICAgICAgIyBTZWVkIHZhbHVlIHdpdGggYSBuZWdhdGl2ZSBoYXNoLgorICAgICAgICBjbGFzcyBNeVNlZWQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE3MjkKICAgICAgICAgZm9yIGFyZyBpbiBbTm9uZSwgMCwgMCwgMSwgMSwgLTEsIC0xLCAxMCoqMjAsIC0oMTAqKjIwKSwKLSAgICAgICAgICAgICAgICAgICAgMy4xNCwgMSsyaiwgJ2EnLCB0dXBsZSgnYWJjJyldOgorICAgICAgICAgICAgICAgICAgICAzLjE0LCAxKzJqLCAnYScsIHR1cGxlKCdhYmMnKSwgTXlTZWVkKCldOgogICAgICAgICAgICAgc2VsZi5nZW4uc2VlZChhcmcpCiAgICAgICAgIGZvciBhcmcgaW4gW2xpc3QocmFuZ2UoMykpLCBkaWN0KG9uZT0xKV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZ2VuLnNlZWQsIGFyZykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CmluZGV4IGVkZTA3OTEuLmYxODA0NmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQpAQCAtMzQxLDEzICszNDEsMzUgQEAKIAogICAgIGRlZiB0ZXN0X3BpY2tsaW5nKHNlbGYpOgogICAgICAgICB0ZXN0Y2FzZXMgPSBbKDEzLCksICgwLCAxMSksICgtMjIsIDEwKSwgKDIwLCAzLCAtMSksCi0gICAgICAgICAgICAgICAgICAgICAoMTMsIDIxLCAzKSwgKC0yLCAyLCAyKV0KKyAgICAgICAgICAgICAgICAgICAgICgxMywgMjEsIDMpLCAoLTIsIDIsIDIpLCAoMioqNjUsIDIqKjY1KzIpXQogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGZvciB0IGluIHRlc3RjYXNlczoKICAgICAgICAgICAgICAgICByID0gcmFuZ2UoKnQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMociwgcHJvdG8pKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHIpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIHRlc3RjYXNlcyA9IFsoMTMsKSwgKDAsIDExKSwgKC0yMiwgMTApLCAoMjAsIDMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICgxMywgMjEsIDMpLCAoLTIsIDIsIDIpLCAoMioqNjUsIDIqKjY1KzIpXQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGZvciB0IGluIHRlc3RjYXNlczoKKyAgICAgICAgICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihyYW5nZSgqdCkpCisgICAgICAgICAgICAgICAgZGF0YSA9IGxpc3QocmFuZ2UoKnQpKQorCisgICAgICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEpCisKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YVsxOl0pCisKICAgICBkZWYgdGVzdF9vZGRfYnVnKHNlbGYpOgogICAgICAgICAjIFRoaXMgdXNlZCB0byByYWlzZSBhICJTeXN0ZW1FcnJvcjogTlVMTCByZXN1bHQgd2l0aG91dCBlcnJvciIKICAgICAgICAgIyBiZWNhdXNlIHRoZSByYW5nZSB2YWxpZGF0aW9uIHN0ZXAgd2FzIGVhdGluZyB0aGUgZXhjZXB0aW9uCkBAIC01MDcsNiArNTI5LDg3IEBACiAgICAgICAgICAgICAgICAgZm9yIGsgaW4gdmFsdWVzIC0gezB9OgogICAgICAgICAgICAgICAgICAgICByW2k6ajprXQogCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgdGVzdF9yYW5nZXMgPSBbcmFuZ2UoMCksIHJhbmdlKDAsIC0xKSwgcmFuZ2UoMSwgMSwgMyksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDEpLCByYW5nZSg1LCA2KSwgcmFuZ2UoNSwgNiwgMiksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDUsIDcsIDIpLCByYW5nZSgyKSwgcmFuZ2UoMCwgNCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDAsIDUsIDIpLCByYW5nZSgwLCA2LCAyKV0KKyAgICAgICAgdGVzdF90dXBsZXMgPSBsaXN0KG1hcCh0dXBsZSwgdGVzdF9yYW5nZXMpKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBlcXVhbGl0eSBvZiByYW5nZXMgbWF0Y2hlcyBlcXVhbGl0eSBvZiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAjIHR1cGxlcyBmb3IgZWFjaCBwYWlyIGZyb20gdGhlIHRlc3QgbGlzdHMgYWJvdmUuCisgICAgICAgIHJhbmdlc19lcSA9IFthID09IGIgZm9yIGEgaW4gdGVzdF9yYW5nZXMgZm9yIGIgaW4gdGVzdF9yYW5nZXNdCisgICAgICAgIHR1cGxlc19lcSA9IFthID09IGIgZm9yIGEgaW4gdGVzdF90dXBsZXMgZm9yIGIgaW4gdGVzdF90dXBsZXNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VzX2VxLCB0dXBsZXNfZXEpCisKKyAgICAgICAgIyBDaGVjayB0aGF0ICE9IGNvcnJlY3RseSBnaXZlcyB0aGUgbG9naWNhbCBuZWdhdGlvbiBvZiA9PQorICAgICAgICByYW5nZXNfbmUgPSBbYSAhPSBiIGZvciBhIGluIHRlc3RfcmFuZ2VzIGZvciBiIGluIHRlc3RfcmFuZ2VzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlc19uZSwgW25vdCB4IGZvciB4IGluIHJhbmdlc19lcV0pCisKKyAgICAgICAgIyBFcXVhbCByYW5nZXMgc2hvdWxkIGhhdmUgZXF1YWwgaGFzaGVzLgorICAgICAgICBmb3IgYSBpbiB0ZXN0X3JhbmdlczoKKyAgICAgICAgICAgIGZvciBiIGluIHRlc3RfcmFuZ2VzOgorICAgICAgICAgICAgICAgIGlmIGEgPT0gYjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGEpLCBoYXNoKGIpKQorCisgICAgICAgICMgUmFuZ2VzIGFyZSB1bmVxdWFsIHRvIG90aGVyIHR5cGVzIChldmVuIHNlcXVlbmNlIHR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydElzKHJhbmdlKDApID09ICgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoKSA9PSByYW5nZSgwKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmFuZ2UoMikgPT0gWzAsIDFdLCBGYWxzZSkKKworICAgICAgICAjIEh1Z2UgaW50ZWdlcnMgYXJlbid0IGEgcHJvYmxlbS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZSgwLCAyKioxMDAgLSAxLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCAyKioxMDAsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocmFuZ2UoMCwgMioqMTAwIC0gMSwgMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gocmFuZ2UoMCwgMioqMTAwLCAyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmFuZ2UoMCwgMioqMTAwLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCAyKioxMDAgKyAxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZSgyKioyMDAsIDIqKjIwMSAtIDIqKjk5LCAyKioxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDIqKjIwMCwgMioqMjAxLCAyKioxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocmFuZ2UoMioqMjAwLCAyKioyMDEgLSAyKio5OSwgMioqMTAwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChyYW5nZSgyKioyMDAsIDIqKjIwMSwgMioqMTAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmFuZ2UoMioqMjAwLCAyKioyMDEsIDIqKjEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMioqMjAwLCAyKioyMDEgKyAxLCAyKioxMDApKQorCisgICAgICAgICMgT3JkZXIgY29tcGFyaXNvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmFuZ2VzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICByYW5nZSgwKSA8IHJhbmdlKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApID4gcmFuZ2UoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPD0gcmFuZ2UoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPj0gcmFuZ2UoMCkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHRoZSBzdGFydCwgc3RvcCBhbmQgc3RlcCBhdHRyaWJ1dGVzIG9mIHJhbmdlIG9iamVjdHMKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCksIDAsIDAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDEwKSwgMCwgMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKC0xMCksIDAsIC0xMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCwgMTAsIDEpLCAwLCAxMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCwgMTAsIDMpLCAwLCAxMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMTAsIDAsIC0xKSwgMTAsIDAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgxMCwgMCwgLTMpLCAxMCwgMCwgLTMpCisKKyAgICBkZWYgYXNzZXJ0X2F0dHJzKHNlbGYsIHJhbmdlb2JqLCBzdGFydCwgc3RvcCwgc3RlcCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VvYmouc3RhcnQsIHN0YXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlb2JqLnN0b3AsIHN0b3ApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VvYmouc3RlcCwgc3RlcCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0YXJ0ID0gMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0b3AgPSAxMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0ZXAgPSAxCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RhcnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RvcAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCByYW5nZW9iai5zdGVwCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFJhbmdlVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDk0MGJhMzkuLjliMGFhNzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtNDY2LDcgKzQ2Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zcGFuKCksIHNwYW4pCiAKICAgICBkZWYgdGVzdF9yZV9lc2NhcGUoc2VsZik6Ci0gICAgICAgIGFsbnVtX2NoYXJzID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzCisgICAgICAgIGFsbnVtX2NoYXJzID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ18nCiAgICAgICAgIHAgPSAnJy5qb2luKGNocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpKQogICAgICAgICBmb3IgYyBpbiBwOgogICAgICAgICAgICAgaWYgYyBpbiBhbG51bV9jaGFyczoKQEAgLTQ3OSw3ICs0NzksNyBAQAogICAgICAgICBzZWxmLmFzc2VydE1hdGNoKHJlLmVzY2FwZShwKSwgcCkKIAogICAgIGRlZiB0ZXN0X3JlX2VzY2FwZV9ieXRlKHNlbGYpOgotICAgICAgICBhbG51bV9jaGFycyA9IChzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBhbG51bV9jaGFycyA9IChzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnXycpLmVuY29kZSgnYXNjaWknKQogICAgICAgICBwID0gYnl0ZXMocmFuZ2UoMjU2KSkKICAgICAgICAgZm9yIGkgaW4gcDoKICAgICAgICAgICAgIGIgPSBieXRlcyhbaV0pCkBAIC01MjYsMjQgKzUyNiw5MiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5jb21waWxlKCdecGF0dGVybiQnLCBmbGFnKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3NyZV9jaGFyYWN0ZXJfbGl0ZXJhbHMoc2VsZik6Ci0gICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1XToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJcJTAzbyIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlwlMDNvMCIgJSBpLCBjaHIoaSkrIjAiKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJcJTAzbzgiICUgaSwgY2hyKGkpKyI4IiksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXHglMDJ4IiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXHglMDJ4MCIgJSBpLCBjaHIoaSkrIjAiKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJceCUwMnh6IiAlIGksIGNocihpKSsieiIpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsICJcOTExIiwgIiIpCisgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1LCAyNTYsIDB4RkZGRiwgMHgxMDAwMCwgMHgxMEZGRkZdOgorICAgICAgICAgICAgaWYgaSA8IDI1NjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwlMDNvIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcJTAzbzAiICUgaSwgY2hyKGkpKyIwIikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcJTAzbzgiICUgaSwgY2hyKGkpKyI4IikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJceCUwMngiICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx4JTAyeDAiICUgaSwgY2hyKGkpKyIwIikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJceCUwMnh6IiAlIGksIGNocihpKSsieiIpKQorICAgICAgICAgICAgaWYgaSA8IDB4MTAwMDA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcdSUwNHgiICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx1JTA0eDAiICUgaSwgY2hyKGkpKyIwIikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcdSUwNHh6IiAlIGksIGNocihpKSsieiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcVSUwOHgiICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXFUlMDh4MCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXFUlMDh4eiIgJSBpLCBjaHIoaSkrInoiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMCIsICJcMDAwIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXDA4IiwgIlwwMDA4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXDAxIiwgIlwwMDEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMDE4IiwgIlwwMDE4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXDU2NyIsIGNocigwbzE2NykpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXDkxMSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHgxIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJceDF6IiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcdTEyMyIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHUxMjN6IiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMDEyMzQiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAwMTIzNHoiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAxMTAwMDAiLCAiIikKIAogICAgIGRlZiB0ZXN0X3NyZV9jaGFyYWN0ZXJfY2xhc3NfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1LCAyNTYsIDB4RkZGRiwgMHgxMDAwMCwgMHgxMEZGRkZdOgorICAgICAgICAgICAgaWYgaSA8IDI1NjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJW9dIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCVvOF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJTAzb10iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJTAzbzBdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCUwM284XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x4JTAyeF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltceCUwMngwXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x4JTAyeHpdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBpZiBpIDwgMHgxMDAwMDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcdSUwNHhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHUlMDR4MF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcdSUwNHh6XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXFUlMDh4XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXFUlMDh4MF0iICUgaSwgY2hyKGkpKyIwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVSUwOHh6XSIgJSBpLCBjaHIoaSkrInoiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcOTExXSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1x4MXpdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXHUxMjN6XSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1xVMDAwMTIzNHpdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXFUwMDExMDAwMF0iLCAiIikKKworICAgIGRlZiB0ZXN0X3NyZV9ieXRlX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1wlMDNvXSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltcJTAzbzBdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1wlMDNvOF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXHglMDJ4XSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltceCUwMngwXSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltceCUwMnh6XSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsICJbXDkxMV0iLCAiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlwlMDNvIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlwlMDNvMCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlwlMDNvOCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjgiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlx4JTAyeCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJceCUwMngwIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXHUiLCBiJ3UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXFUiLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDAiLCBiIlwwMDAiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDA4IiwgYiJcMDAwOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMDEiLCBiIlwwMDEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDAxOCIsIGIiXDAwMTgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDU2NyIsIGJ5dGVzKFswbzE2N10pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJcOTExIiwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlx4MSIsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJceDF6IiwgYiIiKQorCisgICAgZGVmIHRlc3Rfc3JlX2J5dGVfY2xhc3NfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1XToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJW9dIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJW84XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCUwM29dIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJTAzbzBdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJTAzbzhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltceCUwMnhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltceCUwMngwXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXHglMDJ4el0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJbXHVdIiwgYid1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIltcVV0iLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJbXDkxMV0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJbXHgxel0iLCAiIikKIAogICAgIGRlZiB0ZXN0X2J1Z18xMTMyNTQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoYSl8KGIpJywgJ2InKS5zdGFydCgxKSwgLTEpCkBAIC02NTIsNiArNzIwLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQogCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCAxLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCisKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIHBvcz0xLCBlbmRwb3M9MTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQorCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCBlbmRwb3M9MTAsIHBvcz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKKworICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgcG9zPTMsIGVuZHBvcz04KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOjoiLCAiOjoiXSkKKwogICAgIGRlZiB0ZXN0X2J1Z185MjYwNzUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5jb21waWxlKCdidWdfOTI2MDc1JykgaXMgbm90CiAgICAgICAgICAgICAgICAgICAgICByZS5jb21waWxlKGInYnVnXzkyNjA3NScpKQpAQCAtODE4LDYgKzkwNiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBfc3JlLmNvbXBpbGUsICJhYmMiLCAwLCBbbG9uZ19vdmVyZmxvd10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3NyZS5jb21waWxlLCB7fSwgMCwgW10pCiAKKyAgICBkZWYgdGVzdF9zZWFyY2hfZG90X3VuaWNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM2FiYy0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXHhlOS0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXHUyMGFjLScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNcVTAwMTBmZmZmLScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNceGU5XHUyMGFjXFUwMDEwZmZmZi0nKSkKKwogICAgIGRlZiB0ZXN0X2NvbXBpbGUoc2VsZik6CiAgICAgICAgICMgVGVzdCByZXR1cm4gdmFsdWUgd2hlbiBnaXZlbiBzdHJpbmcgYW5kIHBhdHRlcm4gYXMgcGFyYW1ldGVyCiAgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCdyYW5kb20gcGF0dGVybicpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKaW5kZXggYjBkYzRkNy4uNTg5ZWNkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQpAQCAtMywxMiArMywxNCBAQAogICBOaWNrIE1hdGhld3NvbgogIiIiCiAKK2ltcG9ydCBpbXAKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNyZWF0ZV9lbXB0eV9maWxlLCB2ZXJib3NlCiBmcm9tIHJlcHJsaWIgaW1wb3J0IHJlcHIgYXMgciAjIERvbid0IHNoYWRvdyBidWlsdGluIHJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgogZnJvbSByZXBybGliIGltcG9ydCByZWN1cnNpdmVfcmVwcgpAQCAtMTI5LDggKzEzMSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocy5maW5kKCIuLi4iKSwgWzEyLCAxM10pCiAKICAgICBkZWYgdGVzdF9sYW1iZGEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKGxhbWJkYSB4OiB4KS5zdGFydHN3aXRoKAotICAgICAgICAgICAgIjxmdW5jdGlvbiA8bGFtYmRhIikpCisgICAgICAgIHIgPSByZXByKGxhbWJkYSB4OiB4KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCI8ZnVuY3Rpb24gUmVwclRlc3RzLnRlc3RfbGFtYmRhLjxsb2NhbHM+LjxsYW1iZGEiKSwgcikKICAgICAgICAgIyBYWFggYW5vbnltb3VzIGZ1bmN0aW9ucz8gIHNlZSBmdW5jX3JlcHIKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5fZnVuY3Rpb24oc2VsZik6CkBAIC0xOTMsMjYgKzE5NSwyOSBAQAogICAgICAgICByKHkpCiAgICAgICAgIHIoeikKIAotZGVmIHRvdWNoKHBhdGgsIHRleHQ9JycpOgotICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgZnAud3JpdGUodGV4dCkKLSAgICBmcC5jbG9zZSgpCitkZWYgd3JpdGVfZmlsZShwYXRoLCB0ZXh0KToKKyAgICB3aXRoIG9wZW4ocGF0aCwgJ3cnLCBlbmNvZGluZz0nQVNDSUknKSBhcyBmcDoKKyAgICAgICAgZnAud3JpdGUodGV4dCkKIAogY2xhc3MgTG9uZ1JlcHJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBsb25nbmFtZSA9ICdhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24nCisKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIGxvbmduYW1lID0gJ2FyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbicKLSAgICAgICAgc2VsZi5wa2duYW1lID0gb3MucGF0aC5qb2luKGxvbmduYW1lKQotICAgICAgICBzZWxmLnN1YnBrZ25hbWUgPSBvcy5wYXRoLmpvaW4obG9uZ25hbWUsIGxvbmduYW1lKQorICAgICAgICBzZWxmLnBrZ25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5sb25nbmFtZSkKKyAgICAgICAgc2VsZi5zdWJwa2duYW1lID0gb3MucGF0aC5qb2luKHNlbGYubG9uZ25hbWUsIHNlbGYubG9uZ25hbWUpCiAgICAgICAgICMgTWFrZSB0aGUgcGFja2FnZSBhbmQgc3VicGFja2FnZQogICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucGtnbmFtZSwgaWdub3JlX2Vycm9ycz1UcnVlKQogICAgICAgICBvcy5ta2RpcihzZWxmLnBrZ25hbWUpCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnBrZ25hbWUsICdfX2luaXRfXy5weScpKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5wa2duYW1lLCAnX19pbml0X18ucHknKSkKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnN1YnBrZ25hbWUsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5zdWJwa2duYW1lKQotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnX19pbml0X18ucHknKSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCiAgICAgICAgICMgUmVtZW1iZXIgd2hlcmUgd2UgYXJlCiAgICAgICAgIHNlbGYuaGVyZSA9IG9zLmdldGN3ZCgpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBzZWxmLmhlcmUpCisgICAgICAgICMgV2hlbiByZWdydGVzdCBpcyBydW4gd2l0aCBpdHMgLWogb3B0aW9uLCB0aGlzIGNvbW1hbmQgYWxvbmUgaXMgbm90CisgICAgICAgICMgZW5vdWdoLgorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhY3Rpb25zID0gW10KQEAgLTIyOSwyMCArMjM0LDQwIEBACiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHApCiAgICAgICAgIGRlbCBzeXMucGF0aFswXQogCisgICAgZGVmIF9jaGVja19wYXRoX2xpbWl0YXRpb25zKHNlbGYsIG1vZHVsZV9uYW1lKToKKyAgICAgICAgIyBiYXNlIGRpcmVjdG9yeQorICAgICAgICBzb3VyY2VfcGF0aF9sZW4gPSBsZW4oc2VsZi5oZXJlKQorICAgICAgICAjIGEgcGF0aCBzZXBhcmF0b3IgKyBgbG9uZ25hbWVgICh0d2ljZSkKKyAgICAgICAgc291cmNlX3BhdGhfbGVuICs9IDIgKiAobGVuKHNlbGYubG9uZ25hbWUpICsgMSkKKyAgICAgICAgIyBhIHBhdGggc2VwYXJhdG9yICsgYG1vZHVsZV9uYW1lYCArICIucHkiCisgICAgICAgIHNvdXJjZV9wYXRoX2xlbiArPSBsZW4obW9kdWxlX25hbWUpICsgMSArIGxlbigiLnB5IikKKyAgICAgICAgY2FjaGVkX3BhdGhfbGVuID0gc291cmNlX3BhdGhfbGVuICsgbGVuKGltcC5jYWNoZV9mcm9tX3NvdXJjZSgieC5weSIpKSAtIGxlbigieC5weSIpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgY2FjaGVkX3BhdGhfbGVuID49IDI1ODoKKyAgICAgICAgICAgICMgVW5kZXIgV2luZG93cywgdGhlIG1heCBwYXRoIGxlbiBpcyAyNjAgaW5jbHVkaW5nIEMncyB0ZXJtaW5hdGluZworICAgICAgICAgICAgIyBOVUwgY2hhcmFjdGVyLgorICAgICAgICAgICAgIyAoc2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjUyNDclMjh2PXZzLjg1JTI5LmFzcHgjbWF4cGF0aCkKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRlc3QgcGF0aHMgdG9vIGxvbmcgKCVkIGNoYXJhY3RlcnMpIGZvciBXaW5kb3dzJyAyNjAgY2hhcmFjdGVyIGxpbWl0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAlIGNhY2hlZF9wYXRoX2xlbikKKyAgICAgICAgZWxpZiBvcy5uYW1lID09ICdudCcgYW5kIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiY2FjaGVkX3BhdGhfbGVuID0iLCBjYWNoZWRfcGF0aF9sZW4pCisKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCBzZWxmLnBrZ25hbWUgKyAnLnB5JykpCisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoc2VsZi5wa2duYW1lKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCBzZWxmLnBrZ25hbWUgKyAnLnB5JykpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIGZyb20gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLmFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiBpbXBvcnQgYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uCi0gICAgICAgIGVxKHJlcHIoYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uKSwKLSAgICAgICAgICAgIjxtb2R1bGUgJyVzJyBmcm9tICclcyc+IiAlIChhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uX19uYW1lX18sIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5fX2ZpbGVfXykpCi0gICAgICAgIGVxKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQorICAgICAgICBtb2R1bGUgPSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vZHVsZSksICI8bW9kdWxlICVyIGZyb20gJXI+IiAlIChtb2R1bGUuX19uYW1lX18sIG1vZHVsZS5fX2ZpbGVfXykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzeXMpLCAiPG1vZHVsZSAnc3lzJyAoYnVpbHQtaW4pPiIpCiAKICAgICBkZWYgdGVzdF90eXBlKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKCdmb28nKQogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Zvby5weScpLCAnJydcCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Zvby5weScpLCAnJydcCiBjbGFzcyBmb28ob2JqZWN0KToKICAgICBwYXNzCiAnJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIGZyb20gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLmFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiBpbXBvcnQgZm9vCiAgICAgICAgIGVxKHJlcHIoZm9vLmZvbyksCiAgICAgICAgICAgICAgICAiPGNsYXNzICclcy5mb28nPiIgJSBmb28uX19uYW1lX18pCkBAIC0yNTMsMzkgKzI3OCw0NiBAQAogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9jbGFzcyhzZWxmKToKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhci5weScpLCAnJydcCisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoJ2JhcicpCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhci5weScpLCAnJydcCiBjbGFzcyBiYXI6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGJhcgogICAgICAgICAjIE1vZHVsZSBuYW1lIG1heSBiZSBwcmVmaXhlZCB3aXRoICJ0ZXN0LiIsIGRlcGVuZGluZyBvbiBob3cgcnVuLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoYmFyLmJhciksICI8Y2xhc3MgJyVzLmJhcic+IiAlIGJhci5fX25hbWVfXykKIAogICAgIGRlZiB0ZXN0X2luc3RhbmNlKHNlbGYpOgotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnYmF6LnB5JyksICcnJ1wKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygnYmF6JykKKyAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zdWJwa2duYW1lLCAnYmF6LnB5JyksICcnJ1wKIGNsYXNzIGJhejoKICAgICBwYXNzCiAnJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIGZyb20gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLmFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiBpbXBvcnQgYmF6CiAgICAgICAgIGliYXogPSBiYXouYmF6KCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIoaWJheikuc3RhcnRzd2l0aCgKICAgICAgICAgICAgICI8JXMuYmF6IG9iamVjdCBhdCAweCIgJSBiYXouX19uYW1lX18pKQogCiAgICAgZGVmIHRlc3RfbWV0aG9kKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKCdxdXgnKQogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ3F1eC5weScpLCAnJydcCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ3F1eC5weScpLCAnJydcCiBjbGFzcyBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYToKICAgICBkZWYgYW1ldGhvZChzZWxmKTogcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IHF1eAogICAgICAgICAjIFVuYm91bmQgbWV0aG9kcyBmaXJzdAotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihxdXguYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuYW1ldGhvZCkuc3RhcnRzd2l0aCgKLSAgICAgICAgJzxmdW5jdGlvbiBhbWV0aG9kJykpCisgICAgICAgIHIgPSByZXByKHF1eC5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS5hbWV0aG9kKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCc8ZnVuY3Rpb24gYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuYW1ldGhvZCcpLCByKQogICAgICAgICAjIEJvdW5kIG1ldGhvZCBuZXh0CiAgICAgICAgIGlxdXggPSBxdXguYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihpcXV4LmFtZXRob2QpLnN0YXJ0c3dpdGgoCisgICAgICAgIHIgPSByZXByKGlxdXguYW1ldGhvZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgKICAgICAgICAgICAgICc8Ym91bmQgbWV0aG9kIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2Qgb2YgPCVzLmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIG9iamVjdCBhdCAweCcgXAotICAgICAgICAgICAgJSAocXV4Ll9fbmFtZV9fLCkgKSkKKyAgICAgICAgICAgICUgKHF1eC5fX25hbWVfXywpICksIHIpCiAKICAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICAjIFhYWCB0ZXN0IGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB3aXRoIHJlYWxseSBsb25nIG5hbWVzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKaW5kZXggZjhmMzcxNy4uMGI2MjlkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQpAQCAtMjIwLDYgKzIyMCw3IEBACiAgICAgICAgIGZvciBmdW5jIGluIChkbywgb3BlcmF0b3Iubm90Xyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGMsIGZ1bmMsIEJhZCgpKQogCisgICAgQHN1cHBvcnQubm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X3JlY3Vyc2lvbihzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IGNvbXBhcmlzb24gZm9yIHJlY3Vyc2l2ZSBvYmplY3RzIGZhaWxzIGdyYWNlZnVsbHkKICAgICAgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CmluZGV4IDk2ZDJiZWIuLmZlZmVmYzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQpAQCAtNSwxMSArNSwxNSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHJlCiBpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBweV9jb21waWxlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZm9yZ2V0LCBtYWtlX2xlZ2FjeV9weWMsIHJ1bl91bml0dGVzdCwgdW5sb2FkLCB2ZXJib3NlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCBydW5fdW5pdHRlc3QsIHVubG9hZCwgdmVyYm9zZSwgbm9fdHJhY2luZywKKyAgICBjcmVhdGVfZW1wdHlfZmlsZSkKIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCiAgICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCwgdGVtcF9kaXIpCiAKKwogaW1wb3J0IHJ1bnB5CiBmcm9tIHJ1bnB5IGltcG9ydCBfcnVuX2NvZGUsIF9ydW5fbW9kdWxlX2NvZGUsIHJ1bl9tb2R1bGUsIHJ1bl9wYXRoCiAjIE5vdGU6IFRoaXMgbW9kdWxlIGNhbid0IHNhZmVseSB0ZXN0IF9ydW5fbW9kdWxlX2FzX21haW4gYXMgaXQKQEAgLTE0NSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX3BhY2thZ2UpCiAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKIAotCisjIFRPRE86IFVzZSBzZWxmLmFkZENsZWFudXAgdG8gZ2V0IHJpZCBvZiBhIGxvdCBvZiB0cnktZmluYWxseSBibG9ja3MKIGNsYXNzIFJ1bk1vZHVsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBDb2RlRXhlY3V0aW9uTWl4aW4pOgogICAgICIiIlVuaXQgdGVzdHMgZm9yIHJ1bnB5LnJ1bl9tb2R1bGUiIiIKIApAQCAtMTc1LDggKzE3OSw3IEBACiAgICAgZGVmIF9hZGRfcGtnX2RpcihzZWxmLCBwa2dfZGlyKToKICAgICAgICAgb3MubWtkaXIocGtnX2RpcikKICAgICAgICAgcGtnX2ZuYW1lID0gb3MucGF0aC5qb2luKHBrZ19kaXIsICJfX2luaXRfXy5weSIpCi0gICAgICAgIHBrZ19maWxlID0gb3Blbihwa2dfZm5hbWUsICJ3IikKLSAgICAgICAgcGtnX2ZpbGUuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShwa2dfZm5hbWUpCiAgICAgICAgIHJldHVybiBwa2dfZm5hbWUKIAogICAgIGRlZiBfbWFrZV9wa2coc2VsZiwgc291cmNlLCBkZXB0aCwgbW9kX2Jhc2U9InJ1bnB5X3Rlc3QiKToKQEAgLTI1MiwxMCArMjU1LDEyIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIHNvdXJjZToiLCBtb2RfbmFtZSkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZF9uYW1lKQogICAgICAgICAgICAgb3MucmVtb3ZlKG1vZF9mbmFtZSkKICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhtb2RfZm5hbWUpCiAgICAgICAgICAgICB1bmxvYWQobW9kX25hbWUpICAjIEluIGNhc2UgbG9hZGVyIGNhY2hlcyBwYXRocworICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIGNvbXBpbGVkOiIsIG1vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fZml4X25zX2Zvcl9sZWdhY3lfcHljKGV4cGVjdGVkX25zLCBhbHRlcl9zeXMpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCkBAIC0yODUsMTEgKzI5MCwxMyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBzb3VyY2U6IiwgcGtnX25hbWUpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RfbmFtZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShtb2RfZm5hbWUpCiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMobW9kX2ZuYW1lKQogICAgICAgICAgICAgdW5sb2FkKG1vZF9uYW1lKSAgIyBJbiBjYXNlIGxvYWRlciBjYWNoZXMgcGF0aHMKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIGNvbXBpbGVkOiIsIHBrZ19uYW1lKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIHNlbGYuX2ZpeF9uc19mb3JfbGVnYWN5X3B5YyhleHBlY3RlZF9ucywgYWx0ZXJfc3lzKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQogICAgICAgICBmaW5hbGx5OgpAQCAtMzA2LDggKzMxMyw3IEBACiAgICAgICAgICAgICBtb2R1bGVfZGlyID0gb3MucGF0aC5qb2luKG1vZHVsZV9kaXIsIHBrZ19uYW1lKQogICAgICAgICAjIEFkZCBzaWJsaW5nIG1vZHVsZQogICAgICAgICBzaWJsaW5nX2ZuYW1lID0gb3MucGF0aC5qb2luKG1vZHVsZV9kaXIsICJzaWJsaW5nLnB5IikKLSAgICAgICAgc2libGluZ19maWxlID0gb3BlbihzaWJsaW5nX2ZuYW1lLCAidyIpCi0gICAgICAgIHNpYmxpbmdfZmlsZS5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKHNpYmxpbmdfZm5hbWUpCiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiICBBZGRlZCBzaWJsaW5nIG1vZHVsZToiLCBzaWJsaW5nX2ZuYW1lKQogICAgICAgICAjIEFkZCBuZXBoZXcgbW9kdWxlCiAgICAgICAgIHVuY2xlX2RpciA9IG9zLnBhdGguam9pbihwYXJlbnRfZGlyLCAidW5jbGUiKQpAQCAtMzE3LDggKzMyMyw3IEBACiAgICAgICAgIHNlbGYuX2FkZF9wa2dfZGlyKGNvdXNpbl9kaXIpCiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiICBBZGRlZCBjb3VzaW4gcGFja2FnZToiLCBjb3VzaW5fZGlyKQogICAgICAgICBuZXBoZXdfZm5hbWUgPSBvcy5wYXRoLmpvaW4oY291c2luX2RpciwgIm5lcGhldy5weSIpCi0gICAgICAgIG5lcGhld19maWxlID0gb3BlbihuZXBoZXdfZm5hbWUsICJ3IikKLSAgICAgICAgbmVwaGV3X2ZpbGUuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShuZXBoZXdfZm5hbWUpCiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiICBBZGRlZCBuZXBoZXcgbW9kdWxlOiIsIG5lcGhld19mbmFtZSkKIAogICAgIGRlZiBfY2hlY2tfcmVsYXRpdmVfaW1wb3J0cyhzZWxmLCBkZXB0aCwgcnVuX25hbWU9Tm9uZSk6CkBAIC0zNDMsMTEgKzM0OCwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2libGluZyIsIGQxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmVwaGV3IiwgZDEpCiAgICAgICAgICAgICBkZWwgZDEgIyBFbnN1cmUgX19sb2FkZXJfXyBlbnRyeSBkb2Vzbid0IGtlZXAgZmlsZSBvcGVuCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RfbmFtZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShtb2RfZm5hbWUpCiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMobW9kX2ZuYW1lKQogICAgICAgICAgICAgdW5sb2FkKG1vZF9uYW1lKSAgIyBJbiBjYXNlIHRoZSBsb2FkZXIgY2FjaGVzIHBhdGhzCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBtb2RfbmFtZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBkMiA9IHJ1bl9tb2R1bGUobW9kX25hbWUsIHJ1bl9uYW1lPXJ1bl9uYW1lKSAjIFJlYWQgZnJvbSBieXRlY29kZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMlsiX19uYW1lX18iXSwgZXhwZWN0ZWRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDJbIl9fcGFja2FnZV9fIl0sIHBrZ19uYW1lKQpAQCAtNDA3LDYgKzQxNCw0MCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fZGVsX3BrZyhwa2dfZGlyLCBkZXB0aCwgbW9kX25hbWUpCiAKKyAgICBkZWYgdGVzdF9wa2d1dGlsX3dhbGtfcGFja2FnZXMoc2VsZik6CisgICAgICAgICMgVGhpcyBpcyBhIGRvZGd5IGhhY2sgdG8gdXNlIHRoZSB0ZXN0X3J1bnB5IGluZnJhc3RydWN0dXJlIHRvIHRlc3QKKyAgICAgICAgIyBpc3N1ZSAjMTUzNDMuIElzc3VlICMxNTM0OCBkZWNsYXJlcyB0aGlzIGlzIGluZGVlZCBhIGRvZGd5IGhhY2sgOykKKyAgICAgICAgaW1wb3J0IHBrZ3V0aWwKKyAgICAgICAgbWF4X2RlcHRoID0gNAorICAgICAgICBiYXNlX25hbWUgPSAiX19ydW5weV9wa2dfXyIKKyAgICAgICAgcGFja2FnZV9zdWZmaXhlcyA9IFsidW5jbGUiLCAidW5jbGUuY291c2luIl0KKyAgICAgICAgbW9kdWxlX3N1ZmZpeGVzID0gWyJ1bmNsZS5jb3VzaW4ubmVwaGV3IiwgYmFzZV9uYW1lICsgIi5zaWJsaW5nIl0KKyAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMgPSBzZXQoKQorICAgICAgICBleHBlY3RlZF9tb2R1bGVzID0gc2V0KCkKKyAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDEsIG1heF9kZXB0aCk6CisgICAgICAgICAgICBwa2dfbmFtZSA9ICIuIi5qb2luKFtiYXNlX25hbWVdICogZGVwdGgpCisgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5hZGQocGtnX25hbWUpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBwYWNrYWdlX3N1ZmZpeGVzOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLmFkZChwa2dfbmFtZSArICIuIiArIG5hbWUpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBtb2R1bGVfc3VmZml4ZXM6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5hZGQocGtnX25hbWUgKyAiLiIgKyBuYW1lKQorICAgICAgICBwa2dfbmFtZSA9ICIuIi5qb2luKFtiYXNlX25hbWVdICogbWF4X2RlcHRoKQorICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5hZGQocGtnX25hbWUpCisgICAgICAgIGV4cGVjdGVkX21vZHVsZXMuYWRkKHBrZ19uYW1lICsgIi5ydW5weV90ZXN0IikKKyAgICAgICAgcGtnX2RpciwgbW9kX2ZuYW1lLCBtb2RfbmFtZSA9ICgKKyAgICAgICAgICAgICAgIHNlbGYuX21ha2VfcGtnKCIiLCBtYXhfZGVwdGgpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5fZGVsX3BrZywgcGtnX2RpciwgbWF4X2RlcHRoLCBtb2RfbmFtZSkKKyAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDIsIG1heF9kZXB0aCsxKToKKyAgICAgICAgICAgIHNlbGYuX2FkZF9yZWxhdGl2ZV9tb2R1bGVzKHBrZ19kaXIsICIiLCBkZXB0aCkKKyAgICAgICAgZm9yIGZpbmRlciwgbW9kX25hbWUsIGlzcGtnIGluIHBrZ3V0aWwud2Fsa19wYWNrYWdlcyhbcGtnX2Rpcl0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIpCisgICAgICAgICAgICBpZiBpc3BrZzoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9wYWNrYWdlcyksIDAsIGV4cGVjdGVkX3BhY2thZ2VzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9tb2R1bGVzKSwgMCwgZXhwZWN0ZWRfbW9kdWxlcykKIAogY2xhc3MgUnVuUGF0aFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBDb2RlRXhlY3V0aW9uTWl4aW4pOgogICAgICIiIlVuaXQgdGVzdHMgZm9yIHJ1bnB5LnJ1bl9wYXRoIiIiCkBAIC01MDcsNiArNTQ4LDcgQEAKICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBmaW5kICdfX21haW5fXycgbW9kdWxlIGluICVyIiAlIHppcF9uYW1lCiAgICAgICAgICAgICBzZWxmLl9jaGVja19pbXBvcnRfZXJyb3IoemlwX25hbWUsIG1zZykKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RfbWFpbl9yZWN1cnNpb25fZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyLCB0ZW1wX2RpcigpIGFzIGR1bW15X2RpcjoKICAgICAgICAgICAgIG1vZF9uYW1lID0gJ19fbWFpbl9fJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zYXgucHkgYi9MaWIvdGVzdC90ZXN0X3NheC5weQppbmRleCAxMjI1ZDZlLi44ZTAwODg5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NheC5weQpAQCAtMjAsOCArMjAsOCBAQAogVEVTVF9YTUxGSUxFID0gZmluZGZpbGUoInRlc3QueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCiBURVNUX1hNTEZJTEVfT1VUID0gZmluZGZpbGUoInRlc3QueG1sLm91dCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogdHJ5OgotICAgIFRFU1RfWE1MRklMRS5lbmNvZGUoInV0ZjgiKQotICAgIFRFU1RfWE1MRklMRV9PVVQuZW5jb2RlKCJ1dGY4IikKKyAgICBURVNUX1hNTEZJTEUuZW5jb2RlKCJ1dGYtOCIpCisgICAgVEVTVF9YTUxGSUxFX09VVC5lbmNvZGUoInV0Zi04IikKIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVuYW1lIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CmluZGV4IDkxYjhmMGMuLjUwYWRhNTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQpAQCAtNjMsMTUgKzYzLDM5IEBACiAKICAgICBkZWYgdGVzdF9xdWV1ZShzZWxmKToKICAgICAgICAgbCA9IFtdCi0gICAgICAgIGV2ZW50cyA9IFtdCiAgICAgICAgIGZ1biA9IGxhbWJkYSB4OiBsLmFwcGVuZCh4KQogICAgICAgICBzY2hlZHVsZXIgPSBzY2hlZC5zY2hlZHVsZXIodGltZS50aW1lLCB0aW1lLnNsZWVwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVkdWxlci5fcXVldWUsIFtdKQotICAgICAgICBmb3IgeCBpbiBbMC4wNSwgMC4wNCwgMC4wMywgMC4wMiwgMC4wMV06Ci0gICAgICAgICAgICBldmVudHMuYXBwZW5kKHNjaGVkdWxlci5lbnRlcmFicyh4LCAxLCBmdW4sICh4LCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVkdWxlci5fcXVldWUuc29ydCgpLCBldmVudHMuc29ydCgpKQorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBlNSA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjA1LCAxLCBmdW4pCisgICAgICAgIGUxID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDEsIDEsIGZ1bikKKyAgICAgICAgZTIgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wMiwgMSwgZnVuKQorICAgICAgICBlNCA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjA0LCAxLCBmdW4pCisgICAgICAgIGUzID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDMsIDEsIGZ1bikKKyAgICAgICAgIyBxdWV1ZSBwcm9wZXJ0eSBpcyBzdXBwb3NlZCB0byByZXR1cm4gYW4gb3JkZXIgbGlzdCBvZgorICAgICAgICAjIHVwY29taW5nIGV2ZW50cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2NoZWR1bGVyLnF1ZXVlKSwgW2UxLCBlMiwgZTMsIGU0LCBlNV0pCisKKyAgICBkZWYgdGVzdF9hcmdzX2t3YXJncyhzZWxmKToKKyAgICAgICAgZmxhZyA9IFtdCisKKyAgICAgICAgZGVmIGZ1bigqYSwgKipiKToKKyAgICAgICAgICAgIGZsYWcuYXBwZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsICgxLDIsMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHsiZm9vIjoxfSkKKworICAgICAgICBzY2hlZHVsZXIgPSBzY2hlZC5zY2hlZHVsZXIodGltZS50aW1lLCB0aW1lLnNsZWVwKQorICAgICAgICB6ID0gc2NoZWR1bGVyLmVudGVyYWJzKDAuMDEsIDEsIGZ1biwgYXJndW1lbnQ9KDEsMiwzKSwga3dhcmdzPXsiZm9vIjoxfSkKICAgICAgICAgc2NoZWR1bGVyLnJ1bigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NoZWR1bGVyLl9xdWV1ZSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgW05vbmVdKQorCisgICAgZGVmIHRlc3RfcnVuX25vbl9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgbCA9IFtdCisgICAgICAgIGZ1biA9IGxhbWJkYSB4OiBsLmFwcGVuZCh4KQorICAgICAgICBzY2hlZHVsZXIgPSBzY2hlZC5zY2hlZHVsZXIodGltZS50aW1lLCB0aW1lLnNsZWVwKQorICAgICAgICBmb3IgeCBpbiBbMTAsIDksIDgsIDcsIDZdOgorICAgICAgICAgICAgc2NoZWR1bGVyLmVudGVyKHgsIDEsIGZ1biwgKHgsKSkKKyAgICAgICAgc2NoZWR1bGVyLnJ1bihibG9ja2luZz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLCBbXSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5IGIvTGliL3Rlc3QvdGVzdF9zY29wZS5weQppbmRleCBmYmM4N2FhLi4xMjlhMThhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja19zeW50YXhfZXJyb3IsIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvciwgY3B5dGhvbl9vbmx5LCBydW5fdW5pdHRlc3QKIAogCiBjbGFzcyBTY29wZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5NiwyMyArNDk2LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIngiLCB2YXJuYW1lcykKICAgICAgICAgc2VsZi5hc3NlcnRJbigieSIsIHZhcm5hbWVzKQogCisgICAgQGNweXRob25fb25seQogICAgIGRlZiB0ZXN0TG9jYWxzQ2xhc3NfV2l0aFRyYWNlKHNlbGYpOgogICAgICAgICAjIElzc3VlMjM3Mjg6IGFmdGVyIHRoZSB0cmFjZSBmdW5jdGlvbiByZXR1cm5zLCB0aGUgbG9jYWxzKCkKICAgICAgICAgIyBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gdXBkYXRlIGFsbCB2YXJpYWJsZXMsIHRoaXMgdXNlZCB0bwogICAgICAgICAjIGluY2x1ZGUgZnJlZSB2YXJpYWJsZXMuIEJ1dCBpbiBjbGFzcyBzdGF0ZW1lbnRzLCBmcmVlCiAgICAgICAgICMgdmFyaWFibGVzIGFyZSBub3QgaW5zZXJ0ZWQuLi4KICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc3lzLnNldHRyYWNlKGxhbWJkYSBhLGIsYzpOb25lKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB4ID0gMTIKKyAgICAgICAgeCA9IDEyCiAKLSAgICAgICAgICAgIGNsYXNzIEM6Ci0gICAgICAgICAgICAgICAgZGVmIGYoc2VsZik6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB4CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4geAogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDEyKSAjIFVzZWQgdG8gcmFpc2UgVW5ib3VuZExvY2FsRXJyb3IKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDEyKSAjIFVzZWQgdG8gcmFpc2UgVW5ib3VuZExvY2FsRXJyb3IKIAogICAgIGRlZiB0ZXN0Qm91bmRBbmRGcmVlKHNlbGYpOgogICAgICAgICAjIHZhciBpcyBib3VuZCBhbmQgZnJlZSBpbiBjbGFzcwpAQCAtNTI3LDYgKzUyNiw3IEBACiAgICAgICAgIGluc3QgPSBmKDMpKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnN0LmEsIGluc3QubSgpKQogCisgICAgQGNweXRob25fb25seQogICAgIGRlZiB0ZXN0SW50ZXJhY3Rpb25XaXRoVHJhY2VGdW5jKHNlbGYpOgogCiAgICAgICAgIGltcG9ydCBzeXMKQEAgLTU0Myw2ICs1NDMsNyBAQAogICAgICAgICBjbGFzcyBUZXN0Q2xhc3M6CiAgICAgICAgICAgICBwYXNzCiAKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAgICAgICAgIHN5cy5zZXR0cmFjZSh0cmFjZXIpCiAgICAgICAgIGFkYXB0Z2V0dGVyKCJmb28iLCBUZXN0Q2xhc3MsICgxLCAiIikpCiAgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkgYi9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weQppbmRleCBmZTkyZjQ1Li4zMTQ0YzU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weQpAQCAtMSw4ICsxLDkgQEAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc2VsZWN0CitpbXBvcnQgZXJybm8KIGltcG9ydCBvcworaW1wb3J0IHNlbGVjdAogaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm1bOjNdIGluICgnd2luJywgJ29zMicsICdyaXNjb3MnKSwKICAgICAgICAgICAgICAgICAgImNhbid0IGVhc2lseSB0ZXN0IG9uIHRoaXMgc3lzdGVtIikKQEAgLTIwLDYgKzIxLDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW3NlbGYuTm9wZSgpXSwgW10sIFtdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGVjdC5zZWxlY3QsIFtzZWxmLkFsbW9zdCgpXSwgW10sIFtdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGVjdC5zZWxlY3QsIFtdLCBbXSwgW10sICJub3QgYSBudW1iZXIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbXSwgW10sIFtdLCAtMSkKKworICAgICMgSXNzdWUgIzEyMzY3OiBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9xdWVyeS1wci5jZ2k/cHI9a2Vybi8xNTU2MDYKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJyksCisgICAgICAgICAgICAgICAgICAgICAnc2tpcCBiZWNhdXNlIG9mIGEgRnJlZUJTRCBidWc6IGtlcm4vMTU1NjA2JykKKyAgICBkZWYgdGVzdF9lcnJubyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIGZkID0gZnAuZmlsZW5vKCkKKyAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtmZF0sIFtdLCBbXSwgMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmVycm5vLCBlcnJuby5FQkFERikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJleGNlcHRpb24gbm90IHJhaXNlZCIpCiAKICAgICBkZWYgdGVzdF9yZXR1cm5lZF9saXN0X2lkZW50aXR5KHNlbGYpOgogICAgICAgICAjIFNlZSBpc3N1ZSAjODMyOQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NldC5weQppbmRleCA2NjQyNDQwLi44ZTllNTg3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NldC5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiAKIGNsYXNzIFBhc3NUaHJ1KEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtMjM0LDYgKzIzNSwyNiBAQAogICAgICAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zLngsIGR1cC54KQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIGl0b3JnID0gaXRlcihzZWxmLnMpCisgICAgICAgIGRhdGEgPSBzZWxmLnRoZXR5cGUoc2VsZi5zKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAjIFNldCBpdGVyYXRvcnMgdW5waWNrbGUgYXMgbGlzdCBpdGVyYXRvcnMgZHVlIHRvIHRoZQorICAgICAgICAjIHVuZGVmaW5lZCBvcmRlciBvZiBzZXQgaXRlbXMuCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGl0LCBjb2xsZWN0aW9ucy5hYmMuSXRlcmF0b3IpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhldHlwZShpdCksIGRhdGEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGV0eXBlKGl0KSwgZGF0YSAtIHNlbGYudGhldHlwZSgoZHJvcCwpKSkKKwogICAgIGRlZiB0ZXN0X2RlZXBjb3B5KHNlbGYpOgogICAgICAgICBjbGFzcyBUcmFjZXI6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkgYi9MaWIvdGVzdC90ZXN0X3NoZWx2ZS5weQppbmRleCAzZTczZjUyLi4xM2MxMjY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NoZWx2ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NoZWx2ZS5weQpAQCAtMiw3ICsyLDcgQEAKIGltcG9ydCBzaGVsdmUKIGltcG9ydCBnbG9iCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5nCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKIGZyb20gdGVzdC50ZXN0X2RibSBpbXBvcnQgZGJtX2l0ZXJhdG9yCiAKIGRlZiBMMShzKToKQEAgLTEyOSw4ICsxMjksOCBAQAogICAgICAgICBzaGVsdmUuU2hlbGYoZClba2V5XSA9IFsxXQogICAgICAgICBzZWxmLmFzc2VydEluKGtleS5lbmNvZGUoJ3V0Zi04JyksIGQpCiAgICAgICAgICMgYnV0IGEgZGlmZmVyZW50IG9uZSBjYW4gYmUgZ2l2ZW4KLSAgICAgICAgc2hlbHZlLlNoZWxmKGQsIGtleWVuY29kaW5nPSdsYXRpbjEnKVtrZXldID0gWzFdCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmVuY29kZSgnbGF0aW4xJyksIGQpCisgICAgICAgIHNoZWx2ZS5TaGVsZihkLCBrZXllbmNvZGluZz0nbGF0aW4tMScpW2tleV0gPSBbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZW5jb2RlKCdsYXRpbi0xJyksIGQpCiAgICAgICAgICMgd2l0aCBhbGwgY29uc2VxdWVuY2VzCiAgICAgICAgIHMgPSBzaGVsdmUuU2hlbGYoZCwga2V5ZW5jb2Rpbmc9J2FzY2lpJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzLl9fc2V0aXRlbV9fLCBrZXksIFsxXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CmluZGV4IDI1ZTRiNmQuLmQ0NDYzZjMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKQEAgLTEsNiArMSw3IEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcywgc3lzLCBpbworaW1wb3J0IGlvCiBpbXBvcnQgc2hsZXgKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMTczLDYgKzE3NCwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6ICVzICE9ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRhdGFbaV1bMF0sIGwsIHNlbGYuZGF0YVtpXVsxOl0pKQogCisgICAgZGVmIHRlc3RRdW90ZShzZWxmKToKKyAgICAgICAgc2FmZXVucXVvdGVkID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nCisgICAgICAgIHVuaWNvZGVfc2FtcGxlID0gJ1x4ZTlceGUwXHhkZicgICMgZSArIGFjdXRlIGFjY2VudCwgYSArIGdyYXZlLCBzaGFycCBzCisgICAgICAgIHVuc2FmZSA9ICciYCRcXCEnICsgdW5pY29kZV9zYW1wbGUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCcnKSwgIicnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZShzYWZldW5xdW90ZWQpLCBzYWZldW5xdW90ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoJ3Rlc3QgZmlsZSBuYW1lJyksICIndGVzdCBmaWxlIG5hbWUnIikKKyAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgndGVzdCVzbmFtZScgJSB1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0ZXN0JXNuYW1lJyIgJSB1KQorICAgICAgICBmb3IgdSBpbiB1bnNhZmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCJ0ZXN0JXMnbmFtZSciICUgdSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzJ1wiJ1wiJ25hbWUnXCInXCInJyIgJSB1KQorCisKICMgQWxsb3cgdGhpcyB0ZXN0IHRvIGJlIHVzZWQgd2l0aCBvbGQgc2hsZXgucHkKIGlmIG5vdCBnZXRhdHRyKHNobGV4LCAic3BsaXQiLCBOb25lKToKICAgICBmb3IgbWV0aG5hbWUgaW4gZGlyKFNobGV4VGVzdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CmluZGV4IDFhMDE2YjkuLmViMGU5YTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CkBAIC03LDggKzcsOSBAQAogaW1wb3J0IHN0YXQKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBlcnJubworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogZnJvbSBvcy5wYXRoIGltcG9ydCBzcGxpdGRyaXZlCkBAIC0yMiw3ICsyMyw3IEBACiBpbXBvcnQgd2FybmluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBjaGVja193YXJuaW5ncywgY2FwdHVyZWRfc3Rkb3V0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBjaGVja193YXJuaW5ncywgY2FwdHVyZWRfc3Rkb3V0LCByZXF1aXJlc196bGliCiAKIHRyeToKICAgICBpbXBvcnQgYnoyCkBAIC00MCwxMSArNDEsNiBAQAogICAgIFVJRF9HSURfU1VQUE9SVCA9IEZhbHNlCiAKIHRyeToKLSAgICBpbXBvcnQgemxpYgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHpsaWIgPSBOb25lCi0KLXRyeToKICAgICBpbXBvcnQgemlwZmlsZQogICAgIFpJUF9TVVBQT1JUID0gVHJ1ZQogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNTIsNyArNDgsNyBAQAogCiBkZWYgX2Zha2VfcmVuYW1lKCphcmdzLCAqKmt3YXJncyk6CiAgICAgIyBQcmV0ZW5kIHRoZSBkZXN0aW5hdGlvbiBwYXRoIGlzIG9uIGEgZGlmZmVyZW50IGZpbGVzeXN0ZW0uCi0gICAgcmFpc2UgT1NFcnJvcigpCisgICAgcmFpc2UgT1NFcnJvcihnZXRhdHRyKGVycm5vLCAnRVhERVYnLCAxOCksICJJbnZhbGlkIGNyb3NzLWRldmljZSBsaW5rIikKIAogZGVmIG1vY2tfcmVuYW1lKGZ1bmMpOgogICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKQEAgLTY1LDYgKzYxLDMxIEBACiAgICAgICAgICAgICBvcy5yZW5hbWUgPSBidWlsdGluX3JlbmFtZQogICAgIHJldHVybiB3cmFwCiAKK2RlZiB3cml0ZV9maWxlKHBhdGgsIGNvbnRlbnQsIGJpbmFyeT1GYWxzZSk6CisgICAgIiIiV3JpdGUgKmNvbnRlbnQqIHRvIGEgZmlsZSBsb2NhdGVkIGF0ICpwYXRoKi4KKworICAgIElmICpwYXRoKiBpcyBhIHR1cGxlIGluc3RlYWQgb2YgYSBzdHJpbmcsIG9zLnBhdGguam9pbiB3aWxsIGJlIHVzZWQgdG8KKyAgICBtYWtlIGEgcGF0aC4gIElmICpiaW5hcnkqIGlzIHRydWUsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGluIGJpbmFyeQorICAgIG1vZGUuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCB0dXBsZSk6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oKnBhdGgpCisgICAgd2l0aCBvcGVuKHBhdGgsICd3YicgaWYgYmluYXJ5IGVsc2UgJ3cnKSBhcyBmcDoKKyAgICAgICAgZnAud3JpdGUoY29udGVudCkKKworZGVmIHJlYWRfZmlsZShwYXRoLCBiaW5hcnk9RmFsc2UpOgorICAgICIiIlJldHVybiBjb250ZW50cyBmcm9tIGEgZmlsZSBsb2NhdGVkIGF0ICpwYXRoKi4KKworICAgIElmICpwYXRoKiBpcyBhIHR1cGxlIGluc3RlYWQgb2YgYSBzdHJpbmcsIG9zLnBhdGguam9pbiB3aWxsIGJlIHVzZWQgdG8KKyAgICBtYWtlIGEgcGF0aC4gIElmICpiaW5hcnkqIGlzIHRydWUsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGluIGJpbmFyeQorICAgIG1vZGUuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCB0dXBsZSk6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oKnBhdGgpCisgICAgd2l0aCBvcGVuKHBhdGgsICdyYicgaWYgYmluYXJ5IGVsc2UgJ3InKSBhcyBmcDoKKyAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQorCisKIGNsYXNzIFRlc3RTaHV0aWwodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNzcsMTkgKzk4LDYgQEAKICAgICAgICAgICAgIGQgPSBzZWxmLnRlbXBkaXJzLnBvcCgpCiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGQsIG9zLm5hbWUgaW4gKCdudCcsICdjeWd3aW4nKSkKIAotICAgIGRlZiB3cml0ZV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnQ9J3h4eCcpOgotICAgICAgICAiIiJXcml0ZXMgYSBmaWxlIGluIHRoZSBnaXZlbiBwYXRoLgotCi0KLSAgICAgICAgcGF0aCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBzZXF1ZW5jZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgKGxpc3QsIHR1cGxlKSk6Ci0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQotICAgICAgICBmID0gb3BlbihwYXRoLCAndycpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoY29udGVudCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIG1rZHRlbXAoc2VsZik6CiAgICAgICAgICIiIkNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIGNsZWFuZWQgdXAuCkBAIC0xMDAsNiArMTA4LDQ3IEBACiAgICAgICAgIHNlbGYudGVtcGRpcnMuYXBwZW5kKGQpCiAgICAgICAgIHJldHVybiBkCiAKKyAgICBkZWYgdGVzdF9ybXRyZWVfd29ya3Nfb25fYnl0ZXMoc2VsZik6CisgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHZpY3RpbSA9IG9zLnBhdGguam9pbih0bXAsICdraWxsbWUnKQorICAgICAgICBvcy5ta2Rpcih2aWN0aW0pCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHZpY3RpbSwgJ3NvbWVmaWxlJyksICdmb28nKQorICAgICAgICB2aWN0aW0gPSBvcy5mc2VuY29kZSh2aWN0aW0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2aWN0aW0sIGJ5dGVzKQorICAgICAgICBzaHV0aWwucm10cmVlKHZpY3RpbSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9ybXRyZWVfZmFpbHNfb25fc3ltbGluayhzZWxmKToKKyAgICAgICAgdG1wID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZGlyXyA9IG9zLnBhdGguam9pbih0bXAsICdkaXInKQorICAgICAgICBvcy5ta2RpcihkaXJfKQorICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKHRtcCwgJ2xpbmsnKQorICAgICAgICBvcy5zeW1saW5rKGRpcl8sIGxpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5ybXRyZWUsIGxpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkaXJfKSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9ybXRyZWVfd29ya3Nfb25fc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRpcjEgPSBvcy5wYXRoLmpvaW4odG1wLCAnZGlyMScpCisgICAgICAgIGRpcjIgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2RpcjInKQorICAgICAgICBkaXIzID0gb3MucGF0aC5qb2luKHRtcCwgJ2RpcjMnKQorICAgICAgICBmb3IgZCBpbiBkaXIxLCBkaXIyLCBkaXIzOgorICAgICAgICAgICAgb3MubWtkaXIoZCkKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wLCAnZmlsZTEnKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUxLCAnZm9vJykKKyAgICAgICAgbGluazEgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmsxJykKKyAgICAgICAgb3Muc3ltbGluayhkaXIyLCBsaW5rMSkKKyAgICAgICAgbGluazIgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmsyJykKKyAgICAgICAgb3Muc3ltbGluayhkaXIzLCBsaW5rMikKKyAgICAgICAgbGluazMgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmszJykKKyAgICAgICAgb3Muc3ltbGluayhmaWxlMSwgbGluazMpCisgICAgICAgICMgbWFrZSBzdXJlIHN5bWxpbmtzIGFyZSByZW1vdmVkIGJ1dCBub3QgZm9sbG93ZWQKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXIxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcjEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyMykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlMSkpCisKICAgICBkZWYgdGVzdF9ybXRyZWVfZXJyb3JzKHNlbGYpOgogICAgICAgICAjIGZpbGVuYW1lIGlzIGd1YXJhbnRlZWQgbm90IHRvIGV4aXN0CiAgICAgICAgIGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKCkKQEAgLTExMiwzMCArMTYxLDM0IEBACiAgICAgICAgIGRlZiB0ZXN0X29uX2Vycm9yKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMAogICAgICAgICAgICAgb3MubWtkaXIoVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5jaGlsZHBhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYScpCi0gICAgICAgICAgICBmID0gb3BlbihzZWxmLmNoaWxkcGF0aCwgJ3cnKQotICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgVEVTVEZOKQorCisgICAgICAgICAgICBzZWxmLmNoaWxkX2ZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sICdhJykKKyAgICAgICAgICAgIHNlbGYuY2hpbGRfZGlyX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYicpCisgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHNlbGYuY2hpbGRfZmlsZV9wYXRoKQorICAgICAgICAgICAgb3MubWtkaXIoc2VsZi5jaGlsZF9kaXJfcGF0aCkKICAgICAgICAgICAgIG9sZF9kaXJfbW9kZSA9IG9zLnN0YXQoVEVTVEZOKS5zdF9tb2RlCi0gICAgICAgICAgICBvbGRfY2hpbGRfbW9kZSA9IG9zLnN0YXQoc2VsZi5jaGlsZHBhdGgpLnN0X21vZGUKKyAgICAgICAgICAgIG9sZF9jaGlsZF9maWxlX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRfZmlsZV9wYXRoKS5zdF9tb2RlCisgICAgICAgICAgICBvbGRfY2hpbGRfZGlyX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRfZGlyX3BhdGgpLnN0X21vZGUKICAgICAgICAgICAgICMgTWFrZSB1bndyaXRhYmxlLgotICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZHBhdGgsIHN0YXQuU19JUkVBRCkKLSAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgc3RhdC5TX0lSRUFEKQorICAgICAgICAgICAgbmV3X21vZGUgPSBzdGF0LlNfSVJFQUR8c3RhdC5TX0lFWEVDCisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkX2ZpbGVfcGF0aCwgbmV3X21vZGUpCisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkX2Rpcl9wYXRoLCBuZXdfbW9kZSkKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgbmV3X21vZGUpCisKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaG1vZCwgVEVTVEZOLCBvbGRfZGlyX21vZGUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIHNlbGYuY2hpbGRfZmlsZV9wYXRoLCBvbGRfY2hpbGRfZmlsZV9tb2RlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBzZWxmLmNoaWxkX2Rpcl9wYXRoLCBvbGRfY2hpbGRfZGlyX21vZGUpCiAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBvbmVycm9yPXNlbGYuY2hlY2tfYXJnc190b19vbmVycm9yKQogICAgICAgICAgICAgIyBUZXN0IHdoZXRoZXIgb25lcnJvciBoYXMgYWN0dWFsbHkgYmVlbiBjYWxsZWQuCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXJyb3JTdGF0ZSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGNhbGwgdG8gb25lcnJvciBmdW5jdGlvbiBkaWQgbm90IGhhcHBlbi4iKQotCi0gICAgICAgICAgICAjIE1ha2Ugd3JpdGFibGUgYWdhaW4uCi0gICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIG9sZF9kaXJfbW9kZSkKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuY2hpbGRwYXRoLCBvbGRfY2hpbGRfbW9kZSkKLQotICAgICAgICAgICAgIyBDbGVhbiB1cC4KLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVycm9yU3RhdGUsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBjYWxsIHRvIG9uZXJyb3IgZnVuY3Rpb24gZGlkIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXBwZW4uIikKIAogICAgIGRlZiBjaGVja19hcmdzX3RvX29uZXJyb3Ioc2VsZiwgZnVuYywgYXJnLCBleGMpOgogICAgICAgICAjIHRlc3Rfcm10cmVlX2Vycm9ycyBkZWxpYmVyYXRlbHkgcnVucyBybXRyZWUKLSAgICAgICAgIyBvbiBhIGRpcmVjdG9yeSB0aGF0IGlzIGNobW9kIDQwMCwgd2hpY2ggd2lsbCBmYWlsLgorICAgICAgICAjIG9uIGEgZGlyZWN0b3J5IHRoYXQgaXMgY2htb2QgNTAwLCB3aGljaCB3aWxsIGZhaWwuCiAgICAgICAgICMgVGhpcyBmdW5jdGlvbiBpcyBydW4gd2hlbiBzaHV0aWwucm10cmVlIGZhaWxzLgogICAgICAgICAjIDk5LjklIG9mIHRoZSB0aW1lIGl0IGluaXRpYWxseSBmYWlscyB0byByZW1vdmUKICAgICAgICAgIyBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSwgc28gdGhlIGZpcnN0IHRpbWUgdGhyb3VnaApAQCAtMTQ0LDk5ICsxOTcsNDM2IEBACiAgICAgICAgICMgRlVTRSBleHBlcmllbmNlZCBhIGZhaWx1cmUgZWFybGllciBpbiB0aGUgcHJvY2VzcwogICAgICAgICAjIGF0IG9zLmxpc3RkaXIuICBUaGUgZmlyc3QgZmFpbHVyZSBtYXkgbGVnYWxseQogICAgICAgICAjIGJlIGVpdGhlci4KLSAgICAgICAgaWYgc2VsZi5lcnJvclN0YXRlID09IDA6Ci0gICAgICAgICAgICBpZiBmdW5jIGlzIG9zLnJlbW92ZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgc2VsZi5jaGlsZHBhdGgpCisgICAgICAgIGlmIHNlbGYuZXJyb3JTdGF0ZSA8IDI6CisgICAgICAgICAgICBpZiBmdW5jIGlzIG9zLnVubGluazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgc2VsZi5jaGlsZF9maWxlX3BhdGgpCisgICAgICAgICAgICBlbGlmIGZ1bmMgaXMgb3Mucm1kaXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIHNlbGYuY2hpbGRfZGlyX3BhdGgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZnVuYywgb3MubGlzdGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jIG11c3QgYmUgZWl0aGVyIG9zLnJlbW92ZSBvciBvcy5saXN0ZGlyIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgVEVTVEZOKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZnVuYywgb3MubGlzdGRpcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGFyZywgW1RFU1RGTiwgc2VsZi5jaGlsZF9kaXJfcGF0aF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhleGNbMF0sIE9TRXJyb3IpKQotICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMQorICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlICs9IDEKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYywgb3Mucm1kaXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgVEVTVEZOKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZXhjWzBdLCBPU0Vycm9yKSkKLSAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDIKKyAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDMKKworICAgIGRlZiB0ZXN0X3JtdHJlZV9kb2VzX25vdF9jaG9rZV9vbl9mYWlsaW5nX2xzdGF0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX2xzdGF0ID0gb3MubHN0YXQKKyAgICAgICAgICAgIGRlZiByYWlzZXIoZm4sICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgaWYgZm4gIT0gVEVTVEZOOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ19sc3RhdChmbikKKyAgICAgICAgICAgIG9zLmxzdGF0ID0gcmFpc2VyCisKKyAgICAgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKFRFU1RGTiwgJ2ZvbycpLCAnZm9vJykKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MubHN0YXQgPSBvcmlnX2xzdGF0CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmNobW9kJykKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weW1vZGVfZm9sbG93X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgb3MuY2htb2Qoc3JjLCBzdGF0LlNfSVJXWFV8c3RhdC5TX0lSV1hHKQorICAgICAgICAjIGZpbGUgdG8gZmlsZQorICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IHNyYyBsaW5rCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IGRzdCBsaW5rCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3RfbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IGJvdGggbGlua3MKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdsY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmxjaG1vZCcpCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHltb2RlX3N5bWxpbmtfdG9fc3ltbGluayhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1dXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIG9zLmNobW9kKHNyYywgc3RhdC5TX0lSV1hVfHN0YXQuU19JUldYRykKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWFUpCisgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hPfHN0YXQuU19JUldYRykKKyAgICAgICAgIyBsaW5rIHRvIGxpbmsKKyAgICAgICAgb3MubGNobW9kKGRzdF9saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5sc3RhdChzcmNfbGluaykuc3RfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5sc3RhdChkc3RfbGluaykuc3RfbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgc3JjIGxpbmsgLSB1c2UgY2htb2QKKyAgICAgICAgb3MubGNobW9kKGRzdF9saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGRzdCBsaW5rIC0gdXNlIGNobW9kCisgICAgICAgIG9zLmxjaG1vZChkc3RfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihvcywgJ2xjaG1vZCcpLCAncmVxdWlyZXMgb3MubGNobW9kIHRvIGJlIG1pc3NpbmcnKQorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5bW9kZV9zeW1saW5rX3RvX3N5bWxpbmtfd29fbGNobW9kKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKSAgIyBzaWxlbnQgZmFpbAorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHlzdGF0X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBzcmNfc3RhdCA9IG9zLnN0YXQoc3JjKQorICAgICAgICBvcy51dGltZShzcmMsIChzcmNfc3RhdC5zdF9hdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3JjX3N0YXQuc3RfbXRpbWUgLSA0Mi4wKSkgICMgZW5zdXJlIGRpZmZlcmVudCBtdGltZXMKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tdGltZSwgb3Muc3RhdChkc3QpLnN0X210aW1lKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX2xpbmtfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBkb24ndCBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBkc3RfbGlua19zdGF0ID0gb3MubHN0YXQoZHN0X2xpbmspCisgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdzdF9hdGltZScsICdzdF9tdGltZSc6CisgICAgICAgICAgICAgICAgIyBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIG1heSBiZSB0cnVuY2F0ZWQgaW4gdGhlIG5ldyBmaWxlLgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGdldGF0dHIoc3JjX2xpbmtfc3RhdCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihkc3RfbGlua19zdGF0LCBhdHRyKSArIDEpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9tb2RlLCBkc3RfbGlua19zdGF0LnN0X21vZGUpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHNyY19saW5rX3N0YXQsICdzdF9mbGFncycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X2ZsYWdzLCBkc3RfbGlua19zdGF0LnN0X2ZsYWdzKQorICAgICAgICAjIHRlbGwgdG8gZm9sbG93IGJ1dCBkc3QgaXMgbm90IGEgbGluaworICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYWJzKG9zLnN0YXQoc3JjKS5zdF9tdGltZSAtIG9zLnN0YXQoZHN0KS5zdF9tdGltZSkgPAorICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAuMSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaGZsYWdzJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VPUE5PVFNVUFAnKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU5PVFNVUCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyBvcy5jaGZsYWdzLCBFT1BOT1RTVVBQICYgRU5PVFNVUCIpCisgICAgZGVmIHRlc3RfY29weXN0YXRfaGFuZGxlc19oYXJtbGVzc19jaGZsYWdzX2Vycm9ycyhzZWxmKToKKyAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTEnKQorICAgICAgICBmaWxlMiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMicpCisgICAgICAgIHdyaXRlX2ZpbGUoZmlsZTEsICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUyLCAneHh4JykKKworICAgICAgICBkZWYgbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpOgorICAgICAgICAgICAgZXggPSBPU0Vycm9yKCkKKworICAgICAgICAgICAgZGVmIF9jaGZsYWdzX3JhaXNlcihwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICAgICAgICAgICAgIGV4LmVycm5vID0gZXJyCisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKyAgICAgICAgICAgIHJldHVybiBfY2hmbGFnc19yYWlzZXIKKyAgICAgICAgb2xkX2NoZmxhZ3MgPSBvcy5jaGZsYWdzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBlcnIgaW4gZXJybm8uRU9QTk9UU1VQUCwgZXJybm8uRU5PVFNVUDoKKyAgICAgICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpCisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlzdGF0KGZpbGUxLCBmaWxlMikKKyAgICAgICAgICAgICMgYXNzZXJ0IG90aGVycyBlcnJvcnMgYnJlYWsgaXQKKyAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycm5vLkVPUE5PVFNVUFAgKyBlcnJuby5FTk9UU1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLmNvcHlzdGF0LCBmaWxlMSwgZmlsZTIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGZsYWdzID0gb2xkX2NoZmxhZ3MKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3hhdHRyCisgICAgZGVmIHRlc3RfY29weXhhdHRyKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorCisgICAgICAgICMgbm8geGF0dHIgPT0gbm8gcHJvYmxlbQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgIyBjb21tb24gY2FzZQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmZvbycsIGInNDInKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmJhcicsIGInNDMnKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5saXN0eGF0dHIoc3JjKSwgb3MubGlzdHhhdHRyKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoc3JjLCAndXNlci5mb28nKSwKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihkc3QsICd1c2VyLmZvbycpKQorICAgICAgICAjIGNoZWNrIGVycm9ycyBkb24ndCBhZmZlY3Qgb3RoZXIgYXR0cnMKKyAgICAgICAgb3MucmVtb3ZlKGRzdCkKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorICAgICAgICBvc19lcnJvciA9IE9TRXJyb3IoZXJybm8uRVBFUk0sICdFUEVSTScpCisKKyAgICAgICAgZGVmIF9yYWlzZV9vbl91c2VyX2ZvbyhmbmFtZSwgYXR0ciwgdmFsLCAqKmt3YXJncyk6CisgICAgICAgICAgICBpZiBhdHRyID09ICd1c2VyLmZvbyc6CisgICAgICAgICAgICAgICAgcmFpc2Ugb3NfZXJyb3IKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3JpZ19zZXR4YXR0cihmbmFtZSwgYXR0ciwgdmFsLCAqKmt3YXJncykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zZXR4YXR0ciA9IG9zLnNldHhhdHRyCisgICAgICAgICAgICBvcy5zZXR4YXR0ciA9IF9yYWlzZV9vbl91c2VyX2ZvbworICAgICAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjLCBkc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd1c2VyLmJhcicsIG9zLmxpc3R4YXR0cihkc3QpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3Muc2V0eGF0dHIgPSBvcmlnX3NldHhhdHRyCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgc2h1dGlsLmNvcHlzdGF0IGNvcGllcyB4YXR0cnMKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICd0aGVfb3JpZ2luYWwnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgc3JjKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLnRoZV92YWx1ZScsIGInZmlkZGx5JykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICd0aGVfY29weScpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCBkc3QpCisgICAgICAgIHNodXRpbC5jb3B5c3RhdChzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3QsICd1c2VyLnRoZV92YWx1ZScpLCBiJ2ZpZGRseScpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3NfeGF0dHIKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgPT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdCBwcml2aWxlZ2VzIHJlcXVpcmVkJykKKyAgICBkZWYgdGVzdF9jb3B5eGF0dHJfc3ltbGlua3Moc2VsZik6CisgICAgICAgICMgT24gTGludXgsIGl0J3Mgb25seSBwb3NzaWJsZSB0byBhY2Nlc3Mgbm9uLXVzZXIgeGF0dHIgZm9yIHN5bWxpbmtzOworICAgICAgICAjIHdoaWNoIGluIHR1cm4gcmVxdWlyZSByb290IHByaXZpbGVnZXMuIFRoaXMgdGVzdCBzaG91bGQgYmUgZXhwYW5kZWQKKyAgICAgICAgIyBhcyBzb29uIGFzIG90aGVyIHBsYXRmb3JtcyBnYWluIHN1cHBvcnQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndHJ1c3RlZC5mb28nLCBiJzQyJykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjX2xpbmssICd0cnVzdGVkLmZvbycsIGInNDMnLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3RfbGluaywgJ3RydXN0ZWQuZm9vJywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKSwgYic0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmdldHhhdHRyLCBkc3QsICd0cnVzdGVkLmZvbycpCisgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3QsICd0cnVzdGVkLmZvbycpLCBiJzQzJykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5KHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9maWxlKHNyYyksIHJlYWRfZmlsZShkc3QpKQorICAgICAgICBvcy5yZW1vdmUoZHN0KQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGRzdCksIG9zLnJlYWRsaW5rKHNyY19saW5rKSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5sc3RhdChzcmNfbGluaykuc3RfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubHN0YXQoZHN0KS5zdF9tb2RlKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHkyX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX3N0YXQgPSBvcy5zdGF0KHNyYykKKyAgICAgICAgc3JjX2xpbmtfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weTIoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2ZpbGUoc3JjKSwgcmVhZF9maWxlKGRzdCkpCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5MihzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGRzdCksIG9zLnJlYWRsaW5rKHNyY19saW5rKSkKKyAgICAgICAgZHN0X3N0YXQgPSBvcy5sc3RhdChkc3QpCisgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdzdF9hdGltZScsICdzdF9tdGltZSc6CisgICAgICAgICAgICAgICAgIyBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIG1heSBiZSB0cnVuY2F0ZWQgaW4gdGhlIG5ldyBmaWxlLgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGdldGF0dHIoc3JjX2xpbmtfc3RhdCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihkc3Rfc3RhdCwgYXR0cikgKyAxKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfbW9kZSwgZHN0X3N0YXQuc3RfbW9kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3JjX3N0YXQuc3RfbW9kZSwgZHN0X3N0YXQuc3RfbW9kZSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3JjX2xpbmtfc3RhdCwgJ3N0X2ZsYWdzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfZmxhZ3MsIGRzdF9zdGF0LnN0X2ZsYWdzKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3NfeGF0dHIKKyAgICBkZWYgdGVzdF9jb3B5Ml94YXR0cihzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3VzZXIuZm9vJywgYic0MicpCisgICAgICAgIHNodXRpbC5jb3B5MihzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihzcmMsICd1c2VyLmZvbycpLAorICAgICAgICAgICAgICAgIG9zLmdldHhhdHRyKGRzdCwgJ3VzZXIuZm9vJykpCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weWZpbGVfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3NyYycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZHN0JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2RzdF9saW5rJykKKyAgICAgICAgbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnbGluaycpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIGxpbmspCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShsaW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGxpbmspLCBvcy5yZWFkbGluayhkc3RfbGluaykpCisgICAgICAgICMgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShsaW5rLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoZHN0KSkKKworICAgIGRlZiB0ZXN0X3JtdHJlZV91c2VzX3NhZmVfZmRfdmVyc2lvbl9pZl9hdmFpbGFibGUoc2VsZik6CisgICAgICAgIF91c2VfZmRfZnVuY3Rpb25zID0gKHtvcy5vcGVuLCBvcy5zdGF0LCBvcy51bmxpbmssIG9zLnJtZGlyfSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdXBwb3J0c19kaXJfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpc3RkaXIgaW4gb3Muc3VwcG9ydHNfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzKQorICAgICAgICBpZiBfdXNlX2ZkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzaHV0aWwuX3VzZV9mZF9mdW5jdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2h1dGlsLnJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzKQorICAgICAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBkID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdhJykKKyAgICAgICAgICAgIG9zLm1rZGlyKGQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVhbF9ybXRyZWUgPSBzaHV0aWwuX3JtdHJlZV9zYWZlX2ZkCisgICAgICAgICAgICAgICAgY2xhc3MgQ2FsbGVkKEV4Y2VwdGlvbik6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgX3JhaXNlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDYWxsZWQKKyAgICAgICAgICAgICAgICBzaHV0aWwuX3JtdHJlZV9zYWZlX2ZkID0gX3JhaXNlcgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKENhbGxlZCwgc2h1dGlsLnJtdHJlZSwgZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2h1dGlsLl9ybXRyZWVfc2FmZV9mZCA9IHJlYWxfcm10cmVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNodXRpbC5fdXNlX2ZkX2Z1bmN0aW9ucykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2h1dGlsLnJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzKQogCiAgICAgZGVmIHRlc3Rfcm10cmVlX2RvbnRfZGVsZXRlX2ZpbGUoc2VsZik6CiAgICAgICAgICMgV2hlbiBjYWxsZWQgb24gYSBmaWxlIGluc3RlYWQgb2YgYSBkaXJlY3RvcnksIGRvbid0IGRlbGV0ZSBpdC4KICAgICAgICAgaGFuZGxlLCBwYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCi0gICAgICAgIG9zLmZkb3BlbihoYW5kbGUpLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLnJtdHJlZSwgcGF0aCkKKyAgICAgICAgb3MuY2xvc2UoaGFuZGxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RBRGlyZWN0b3J5RXJyb3IsIHNodXRpbC5ybXRyZWUsIHBhdGgpCiAgICAgICAgIG9zLnJlbW92ZShwYXRoKQogCi0gICAgZGVmIF93cml0ZV9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgotICAgICAgICBmID0gb3BlbihwYXRoLCAidyIpCi0gICAgICAgIGYud3JpdGUoZGF0YSkKLSAgICAgICAgZi5jbG9zZSgpCi0KICAgICBkZWYgdGVzdF9jb3B5dHJlZV9zaW1wbGUoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJlYWRfZGF0YShwYXRoKToKLSAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQogICAgICAgICBzcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4odGVtcGZpbGUubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBzcmNfZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgb3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LnR4dCcpKSkKLSAgICAgICAgICAgIGFjdHVhbCA9IHJlYWRfZGF0YShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgJzEyMycpCi0gICAgICAgICAgICBhY3R1YWwgPSByZWFkX2RhdGEob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICc0NTYnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9yIHBhdGggaW4gKAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoc3JjX2RpciwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC50eHQnKSkpCisgICAgICAgIGFjdHVhbCA9IHJlYWRfZmlsZSgoZHN0X2RpciwgJ3Rlc3QudHh0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnMTIzJykKKyAgICAgICAgYWN0dWFsID0gcmVhZF9maWxlKChkc3RfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICc0NTYnKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnc3JjJykKKyAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZHN0JykKKyAgICAgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnc3ViJykKKyAgICAgICAgb3MubWtkaXIoc3JjX2RpcikKKyAgICAgICAgb3MubWtkaXIoc3ViX2RpcikKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ2ZpbGUudHh0JyksICdmb28nKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbihzdWJfZGlyLCAnbGluaycpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICdzdWIvbGluaycpCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5qb2luKHNyY19kaXIsICdmaWxlLnR4dCcpLAorICAgICAgICAgICAgICAgICAgIHNyY19saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYTykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3RhdCwgJ1VGX05PRFVNUCcpOgorICAgICAgICAgICAgb3MubGNoZmxhZ3Moc3JjX2xpbmssIHN0YXQuVUZfTk9EVU1QKQorICAgICAgICBzcmNfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2Rpciwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKG9zLnBhdGguam9pbihkc3RfZGlyLCAnc3ViJywgJ2xpbmsnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZGxpbmsob3MucGF0aC5qb2luKGRzdF9kaXIsICdzdWInLCAnbGluaycpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZpbGUudHh0JykpCisgICAgICAgIGRzdF9zdGF0ID0gb3MubHN0YXQoZHN0X2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0X3N0YXQuc3RfbW9kZSwgc3JjX3N0YXQuc3RfbW9kZSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdF9zdGF0LnN0X2ZsYWdzLCBzcmNfc3RhdC5zdF9mbGFncykKIAogICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3dpdGhfZXhjbHVkZShzZWxmKToKLQotICAgICAgICBkZWYgcmVhZF9kYXRhKHBhdGgpOgotICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCkKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQotCiAgICAgICAgICMgY3JlYXRpbmcgZGF0YQogICAgICAgICBqb2luID0gb3MucGF0aC5qb2luCiAgICAgICAgIGV4aXN0cyA9IG9zLnBhdGguZXhpc3RzCiAgICAgICAgIHNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZHN0X2RpciA9IGpvaW4odGVtcGZpbGUubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdC50bXAnKSwgJzEyMycpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50bXAnKSwgJzEyMycpCiAgICAgICAgICAgICBvcy5ta2Rpcihqb2luKHNyY19kaXIsICd0ZXN0X2RpcicpKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicpKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInKSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnNDU2JykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLCAndGVzdC5weScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnNDU2JykKLQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLCAndGVzdC5weScpLCAnNDU2JykKIAogICAgICAgICAgICAgIyB0ZXN0aW5nIGdsb2ItbGlrZSBwYXR0ZXJucwogICAgICAgICAgICAgdHJ5OgpAQCAtMjQ0LDIxICs2MzQsMTkgQEAKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPXBhdHRlcm5zKQogICAgICAgICAgICAgICAgICMgY2hlY2tpbmcgdGhlIHJlc3VsdDogc29tZSBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvcGllZAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicpKSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGF0dGVybnMgPSBzaHV0aWwuaWdub3JlX3BhdHRlcm5zKCcqLnRtcCcsICdzdWJkaXIqJykKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPXBhdHRlcm5zKQogICAgICAgICAgICAgICAgICMgY2hlY2tpbmcgdGhlIHJlc3VsdDogc29tZSBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvcGllZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCiAKICAgICAgICAgICAgICMgdGVzdGluZyBjYWxsYWJsZS1zdHlsZQogICAgICAgICAgICAgdHJ5OgpAQCAtMjc3LDEzICs2NjUsMTIgQEAKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPV9maWx0ZXIpCiAKICAgICAgICAgICAgICAgICAjIGNoZWNraW5nIHRoZSByZXN1bHQ6IHNvbWUgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QucHknKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5weScpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpKQogCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzcmNfZGlyKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShvcy5wYXRoLmRpcm5hbWUoZHN0X2RpcikpCkBAIC0zMDgsMzUgKzY5NSw2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2NoZmxhZ3MnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU9QTk9UU1VQUCcpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoZXJybm8sICdFTk9UU1VQJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIG9zLmNoZmxhZ3MsIEVPUE5PVFNVUFAgJiBFTk9UU1VQIikKLSAgICBkZWYgdGVzdF9jb3B5c3RhdF9oYW5kbGVzX2hhcm1sZXNzX2NoZmxhZ3NfZXJyb3JzKHNlbGYpOgotICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBmaWxlMSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMScpCi0gICAgICAgIGZpbGUyID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2ZpbGUyJykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKGZpbGUxLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKGZpbGUyLCAneHh4JykKLQotICAgICAgICBkZWYgbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpOgotICAgICAgICAgICAgZXggPSBPU0Vycm9yKCkKLQotICAgICAgICAgICAgZGVmIF9jaGZsYWdzX3JhaXNlcihwYXRoLCBmbGFncyk6Ci0gICAgICAgICAgICAgICAgZXguZXJybm8gPSBlcnIKLSAgICAgICAgICAgICAgICByYWlzZSBleAotICAgICAgICAgICAgcmV0dXJuIF9jaGZsYWdzX3JhaXNlcgotICAgICAgICBvbGRfY2hmbGFncyA9IG9zLmNoZmxhZ3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGVyciBpbiBlcnJuby5FT1BOT1RTVVBQLCBlcnJuby5FTk9UU1VQOgotICAgICAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycikKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weXN0YXQoZmlsZTEsIGZpbGUyKQotICAgICAgICAgICAgIyBhc3NlcnQgb3RoZXJzIGVycm9ycyBicmVhayBpdAotICAgICAgICAgICAgb3MuY2hmbGFncyA9IG1ha2VfY2hmbGFnc19yYWlzZXIoZXJybm8uRU9QTk9UU1VQUCArIGVycm5vLkVOT1RTVVApCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwuY29weXN0YXQsIGZpbGUxLCBmaWxlMikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBvbGRfY2hmbGFncwotCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X2RvbnRfY29weV9maWxlX29udG9fc3ltbGlua190b19pdHNlbGYoc2VsZik6CiAgICAgICAgICMgYnVnIDg1MTEyMy4KQEAgLTM2Nyw2ICs3MjUsNyBAQAogICAgICAgICAgICAgb3MubWtkaXIoc3JjKQogICAgICAgICAgICAgb3Muc3ltbGluayhzcmMsIGRzdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5ybXRyZWUsIGRzdCkKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0LCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCkBAIC00MDcsOSArNzY2LDkgQEAKIAogICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAKICAgICAgICAgY29waWVkID0gW10KICAgICAgICAgZGVmIF9jb3B5KHNyYywgZHN0KToKQEAgLTQyNiw3ICs3ODUsNyBAQAogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQogICAgICAgICBvcy5zeW1saW5rKCdJRE9OVEVYSVNUJywgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFcnJvciwgc2h1dGlsLmNvcHl0cmVlLCBzcmNfZGlyLCBkc3RfZGlyKQogCiAgICAgICAgICMgYSBkYW5nbGluZyBzeW1saW5rIGlzIGlnbm9yZWQgd2l0aCB0aGUgcHJvcGVyIGZsYWcKQEAgLTQ0Miw3ICs4MDEsNyBAQAogICAgIGRlZiBfY29weV9maWxlKHNlbGYsIG1ldGhvZCk6CiAgICAgICAgIGZuYW1lID0gJ3Rlc3QudHh0JwogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgZm5hbWVdKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsIGZuYW1lKSwgJ3h4eCcpCiAgICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcGRpciwgZm5hbWUpCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBtZXRob2QoZmlsZTEsIHRtcGRpcjIpCkBAIC00NzQsMTQgKzgzMywxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGZpbGUxX3N0YXQsICdzdF9mbGFncycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGZpbGUyX3N0YXQsICdzdF9mbGFncycpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMiddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnZmlsZTEnKSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUyJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4odG1wZGlyLCAnc3ViJykpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnc3ViJywgJ2ZpbGUzJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdzdWInLCAnZmlsZTMnKSwgJ3h4eCcpCiAKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgICMgZm9yY2Ugc2h1dGlsIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5CkBAIC01MjgsMTYgKzg4NywxNiBAQAogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBkaXN0ID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Rpc3QnKQogICAgICAgICBvcy5ta2RpcihkaXN0KQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFtkaXN0LCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdmaWxlMScpLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgoZGlzdCwgJ2ZpbGUyJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlzdCwgJ3N1YicpKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdzdWInLCAnZmlsZTMnKSwgJ3h4eCcpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViMicpKQogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKICAgICAgICAgcmV0dXJuIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmaW5kX2V4ZWN1dGFibGUoJ3RhcicpIGFuZCBmaW5kX2V4ZWN1dGFibGUoJ2d6aXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnTmVlZCB0aGUgdGFyIGNvbW1hbmQgdG8gcnVuJykKICAgICBkZWYgdGVzdF90YXJmaWxlX3ZzX3RhcihzZWxmKToKQEAgLTU5MiwxMyArOTUxLDEzIEBACiAgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnRhcicKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWklQX1NVUFBPUlQsICdOZWVkIHppcCBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV96aXBmaWxlKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMiddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnZmlsZTEnKSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUyJyksICd4eHgnKQogCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICAjIGZvcmNlIHNodXRpbCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeQpAQCAtNjE2LDcgKzk3NSw3IEBACiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdhcmNoaXZlJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWFrZV9hcmNoaXZlLCBiYXNlX25hbWUsICd4eHgnKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX293bmVyX2dyb3VwKHNlbGYpOgogICAgICAgICAjIHRlc3RpbmcgbWFrZV9hcmNoaXZlIHdpdGggb3duZXIgYW5kIGdyb3VwLCB3aXRoIHZhcmlvdXMgY29tYmluYXRpb25zCiAgICAgICAgICMgdGhpcyB3b3JrcyBldmVuIGlmIHRoZXJlJ3Mgbm90IGdpZC91aWQgc3VwcG9ydApAQCAtNjQ0LDcgKzEwMDMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocmVzKSkKIAogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVUlEX0dJRF9TVVBQT1JULCAiUmVxdWlyZXMgZ3JwIGFuZCBwd2Qgc3VwcG9ydCIpCiAgICAgZGVmIHRlc3RfdGFyZmlsZV9yb290X293bmVyKHNlbGYpOgogICAgICAgICB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZSA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQpAQCAtNzEzLDcgKzEwNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICBkaWZmLmFwcGVuZChmaWxlXykKICAgICAgICAgcmV0dXJuIGRpZmYKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3VucGFja19hcmNoaXZlKHNlbGYpOgogICAgICAgICBmb3JtYXRzID0gWyd0YXInLCAnZ3p0YXInLCAnemlwJ10KICAgICAgICAgaWYgQloyX1NVUFBPUlRFRDoKQEAgLTc2NCw2ICsxMTIzLDE2MiBAQAogICAgICAgICB1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQoJ0JvbzInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF91bnBhY2tfZm9ybWF0cygpLCBmb3JtYXRzKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaHV0aWwsICdkaXNrX3VzYWdlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpc2tfdXNhZ2Ugbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIikKKyAgICBkZWYgdGVzdF9kaXNrX3VzYWdlKHNlbGYpOgorICAgICAgICB1c2FnZSA9IHNodXRpbC5kaXNrX3VzYWdlKG9zLmdldGN3ZCgpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodXNhZ2UudG90YWwsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih1c2FnZS51c2VkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbCh1c2FnZS5mcmVlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbCh1c2FnZS50b3RhbCwgdXNhZ2UudXNlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHVzYWdlLnRvdGFsLCB1c2FnZS5mcmVlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVUlEX0dJRF9TVVBQT1JULCAiUmVxdWlyZXMgZ3JwIGFuZCBwd2Qgc3VwcG9ydCIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2Nob3duJyksICdyZXF1aXJlcyBvcy5jaG93bicpCisgICAgZGVmIHRlc3RfY2hvd24oc2VsZik6CisKKyAgICAgICAgIyBjbGVhbmVkLXVwIGF1dG9tYXRpY2FsbHkgYnkgVGVzdFNodXRpbC50ZWFyRG93biBtZXRob2QKKyAgICAgICAgZGlybmFtZSA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKGRpcj1kaXJuYW1lKQorICAgICAgICB3cml0ZV9maWxlKGZpbGVuYW1lLCAndGVzdGluZyBjaG93biBmdW5jdGlvbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlcj0nbm9uLWV4aXNpbmcgdXNlcm5hbWUnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD0nbm9uLWV4aXNpbmcgZ3JvdXBuYW1lJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGInc3BhbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCAzLjE0KQorCisgICAgICAgIHVpZCA9IG9zLmdldHVpZCgpCisgICAgICAgIGdpZCA9IG9zLmdldGdpZCgpCisKKyAgICAgICAgZGVmIGNoZWNrX2Nob3duKHBhdGgsIHVpZD1Ob25lLCBnaWQ9Tm9uZSk6CisgICAgICAgICAgICBzID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgICAgIGlmIHVpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVpZCwgcy5zdF91aWQpCisgICAgICAgICAgICBpZiBnaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnaWQsIHMuc3RfZ2lkKQorCisgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdWlkLCBnaWQpCisgICAgICAgIGNoZWNrX2Nob3duKGZpbGVuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1aWQpCisgICAgICAgIGNoZWNrX2Nob3duKGZpbGVuYW1lLCB1aWQpCisgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlcj11aWQpCisgICAgICAgIGNoZWNrX2Nob3duKGZpbGVuYW1lLCB1aWQpCisgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9Z2lkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgZ2lkPWdpZCkKKworICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgdWlkLCBnaWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgdWlkKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCB1aWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1c2VyPXVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgZ3JvdXA9Z2lkKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCBnaWQ9Z2lkKQorCisgICAgICAgIHVzZXIgPSBwd2QuZ2V0cHd1aWQodWlkKVswXQorICAgICAgICBncm91cCA9IGdycC5nZXRncmdpZChnaWQpWzBdCisgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlciwgZ3JvdXApCisgICAgICAgIGNoZWNrX2Nob3duKGZpbGVuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVzZXIsIGdyb3VwKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCB1aWQsIGdpZCkKKworICAgIGRlZiB0ZXN0X2NvcHlfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIGNvcHkgYW5kIGNvcHkyIGJvdGggcmV0dXJuIHRoZWlyIGRlc3RpbmF0aW9uIHBhdGguCisgICAgICAgIGZvciBmbiBpbiAoc2h1dGlsLmNvcHksIHNodXRpbC5jb3B5Mik6CisgICAgICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgICAgIGRzdF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNyY19kaXIsICdmb28nKQorICAgICAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICAgICAgcnYgPSBmbihzcmMsIGRzdF9kaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ2ZvbycpKQorICAgICAgICAgICAgcnYgPSBmbihzcmMsIG9zLnBhdGguam9pbihkc3RfZGlyLCAnYmFyJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ2JhcicpKQorCisgICAgZGVmIHRlc3RfY29weWZpbGVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIGNvcHl0cmVlIHJldHVybnMgaXRzIGRlc3RpbmF0aW9uIHBhdGguCisgICAgICAgIHNyY19kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkc3RfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZHN0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ2JhcicpCisgICAgICAgIHNyY19maWxlID0gb3MucGF0aC5qb2luKHNyY19kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyY19maWxlLCAnZm9vJykKKyAgICAgICAgcnYgPSBzaHV0aWwuY29weWZpbGUoc3JjX2ZpbGUsIGRzdF9maWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocnYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfZmlsZShzcmNfZmlsZSksIHJlYWRfZmlsZShkc3RfZmlsZSkpCisKKyAgICBkZWYgdGVzdF9jb3B5dHJlZV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgICMgY29weXRyZWUgcmV0dXJucyBpdHMgZGVzdGluYXRpb24gcGF0aC4KKyAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRzdF9kaXIgPSBzcmNfZGlyICsgImRlc3QiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBkc3RfZGlyLCBUcnVlKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgcnYgPSBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2ZvbyddLCBvcy5saXN0ZGlyKHJ2KSkKKworCitjbGFzcyBUZXN0V2hpY2godW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBzZWxmLnRlbXBfZGlyLCBUcnVlKQorICAgICAgICAjIEdpdmUgdGhlIHRlbXBfZmlsZSBhbiAiLmV4ZSIgc3VmZml4IGZvciBhbGwuCisgICAgICAgICMgSXQncyBuZWVkZWQgb24gV2luZG93cyBhbmQgbm90IGhhcm1mdWwgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICBzZWxmLnRlbXBfZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkaXI9c2VsZi50ZW1wX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSIuZXhlIikKKyAgICAgICAgb3MuY2htb2Qoc2VsZi50ZW1wX2ZpbGUubmFtZSwgc3RhdC5TX0lYVVNSKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi50ZW1wX2ZpbGUuY2xvc2UpCisgICAgICAgIHNlbGYuZGlyLCBzZWxmLmZpbGUgPSBvcy5wYXRoLnNwbGl0KHNlbGYudGVtcF9maWxlLm5hbWUpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgIyBHaXZlbiBhbiBFWEUgaW4gYSBkaXJlY3RvcnksIGl0IHNob3VsZCBiZSByZXR1cm5lZC4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi5maWxlLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBzZWxmLnRlbXBfZmlsZS5uYW1lKQorCisgICAgZGVmIHRlc3RfZnVsbF9wYXRoX3Nob3J0X2NpcmN1aXQoc2VsZik6CisgICAgICAgICMgV2hlbiBnaXZlbiB0aGUgZnVsbHkgcXVhbGlmaWVkIHBhdGggdG8gYW4gZXhlY3V0YWJsZSB0aGF0IGV4aXN0cywKKyAgICAgICAgIyBpdCBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYudGVtcF9maWxlLm5hbWUsIHBhdGg9c2VsZi50ZW1wX2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRlbXBfZmlsZS5uYW1lLCBydikKKworICAgIGRlZiB0ZXN0X25vbl9tYXRjaGluZ19tb2RlKHNlbGYpOgorICAgICAgICAjIFNldCB0aGUgZmlsZSByZWFkLW9ubHkgYW5kIGFzayBmb3Igd3JpdGVhYmxlIGZpbGVzLgorICAgICAgICBvcy5jaG1vZChzZWxmLnRlbXBfZmlsZS5uYW1lLCBzdGF0LlNfSVJFQUQpCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYuZmlsZSwgcGF0aD1zZWxmLmRpciwgbW9kZT1vcy5XX09LKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShydikKKworICAgIGRlZiB0ZXN0X3JlbGF0aXZlKHNlbGYpOgorICAgICAgICBvbGRfY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgYmFzZV9kaXIsIHRhaWxfZGlyID0gb3MucGF0aC5zcGxpdChzZWxmLmRpcikKKyAgICAgICAgb3MuY2hkaXIoYmFzZV9kaXIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYuZmlsZSwgcGF0aD10YWlsX2RpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbih0YWlsX2Rpciwgc2VsZi5maWxlKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKG9sZF9jd2QpCisKKyAgICBkZWYgdGVzdF9ub25leGlzdGVudF9maWxlKHNlbGYpOgorICAgICAgICAjIFJldHVybiBOb25lIHdoZW4gbm8gbWF0Y2hpbmcgZXhlY3V0YWJsZSBmaWxlIGlzIGZvdW5kIG9uIHRoZSBwYXRoLgorICAgICAgICBydiA9IHNodXRpbC53aGljaCgiZm9vLmV4ZSIsIHBhdGg9c2VsZi5kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJ2KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGhleHQgY2hlY2sgaXMgV2luZG93cy1vbmx5IikKKyAgICBkZWYgdGVzdF9wYXRoZXh0X2NoZWNraW5nKHNlbGYpOgorICAgICAgICAjIEFzayBmb3IgdGhlIGZpbGUgd2l0aG91dCB0aGUgIi5leGUiIGV4dGVuc2lvbiwgdGhlbiBlbnN1cmUgdGhhdAorICAgICAgICAjIGl0IGdldHMgZm91bmQgcHJvcGVybHkgd2l0aCB0aGUgZXh0ZW5zaW9uLgorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLnRlbXBfZmlsZS5uYW1lWzotNF0sIHBhdGg9c2VsZi5kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZW1wX2ZpbGUubmFtZSwgcnYpCisKIAogY2xhc3MgVGVzdE1vdmUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04NzcsNiArMTM5Miw1OCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4sIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIAorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2ZpbGVfc3ltbGluayhzZWxmKToKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JhcicpCisgICAgICAgIG9zLnN5bWxpbmsoc2VsZi5zcmNfZmlsZSwgZHN0KQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIHNlbGYuZHN0X2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhzZWxmLmRzdF9maWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc2VsZi5zcmNfZmlsZSwgc2VsZi5kc3RfZmlsZSkpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9maWxlX3N5bWxpbmtfdG9fZGlyKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9ICJiYXIiCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsIGZpbGVuYW1lKQorICAgICAgICBvcy5zeW1saW5rKHNlbGYuc3JjX2ZpbGUsIGRzdCkKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBzZWxmLmRzdF9kaXIpCisgICAgICAgIGZpbmFsX2xpbmsgPSBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGZpbmFsX2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzZWxmLnNyY19maWxlLCBmaW5hbF9saW5rKSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2RhbmdsaW5nX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXonKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmFyJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIGRzdCkKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAncXV1eCcpCisgICAgICAgIHNodXRpbC5tb3ZlKGRzdCwgZHN0X2xpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3RfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5yZWFscGF0aChzcmMpLCBvcy5wYXRoLnJlYWxwYXRoKGRzdF9saW5rKSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2Rpcl9zeW1saW5rKHNlbGYpOgorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JhcicpCisgICAgICAgIG9zLm1rZGlyKHNyYykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIGRzdCkKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAncXV1eCcpCisgICAgICAgIHNodXRpbC5tb3ZlKGRzdCwgZHN0X2xpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3RfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNyYywgZHN0X2xpbmspKQorCisgICAgZGVmIHRlc3RfbW92ZV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIHJ2ID0gc2h1dGlsLm1vdmUoc2VsZi5zcmNfZmlsZSwgc2VsZi5kc3RfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsIG9zLnBhdGguYmFzZW5hbWUoc2VsZi5zcmNfZmlsZSkpKQorCisgICAgZGVmIHRlc3RfbW92ZV9hc19yZW5hbWVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBydiA9IHNodXRpbC5tb3ZlKHNlbGYuc3JjX2ZpbGUsIG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdiYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ2JhcicpKQorCiAKIGNsYXNzIFRlc3RDb3B5RmlsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTk4Niw2ICsxNTUzLDcgQEAKICAgICAgICAgIyBidXQgYSBkaWZmZXJlbnQgY2FzZS4KIAogICAgICAgICBzZWxmLnNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIHNlbGYuc3JjX2RpciwgVHJ1ZSkKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbigKICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc2VsZi5zcmNfZGlyKSwKICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuc3JjX2RpcikudXBwZXIoKSkKQEAgLTk5NSwxMyArMTU2Myw1NyBAQAogICAgICAgICAgICAgc2h1dGlsLm1vdmUoc2VsZi5zcmNfZGlyLCBkc3RfZGlyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZHN0X2RpcikpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKLSAgICAgICAgICAgICAgICBvcy5ybWRpcihkc3RfZGlyKQorICAgICAgICAgICAgb3Mucm1kaXIoZHN0X2RpcikKIAorY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIGdldF90ZXJtaW5hbF9zaXplKCkgcmV0dXJucyBhIG1lYW5pbmdmdWwgdmFsdWUuCisKKyAgICAgICAgVGhlcmUncyBubyBlYXN5IHBvcnRhYmxlIHdheSB0byBhY3R1YWxseSBjaGVjayB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgdGVybWluYWwsIHNvIGxldCdzIGNoZWNrIGlmIGl0IHJldHVybnMgc29tZXRoaW5nIHNlbnNpYmxlIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICBzaXplID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5jb2x1bW5zLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmxpbmVzLCAwKQorCisgICAgZGVmIHRlc3Rfb3NfZW52aXJvbl9maXJzdChzZWxmKToKKyAgICAgICAgIkNoZWNrIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBoYXZlIHByZWNlZGVuY2UiCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbJ0NPTFVNTlMnXSA9ICc3NzcnCisgICAgICAgICAgICBzaXplID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLmNvbHVtbnMsIDc3NykKKworICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudlsnTElORVMnXSA9ICc4ODgnCisgICAgICAgICAgICBzaXplID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLmxpbmVzLCA4ODgpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5pc2F0dHkoc3lzLl9fc3Rkb3V0X18uZmlsZW5vKCkpLCAibm90IG9uIHR0eSIpCisgICAgZGVmIHRlc3Rfc3R0eV9tYXRjaChzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgc3R0eSByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdHMgaWdub3JpbmcgZW52CisKKyAgICAgICAgVGhpcyB0ZXN0IHdpbGwgZmFpbCBpZiBzdGRpbiBhbmQgc3Rkb3V0IGFyZSBjb25uZWN0ZWQgdG8KKyAgICAgICAgZGlmZmVyZW50IHRlcm1pbmFscyB3aXRoIGRpZmZlcmVudCBzaXplcy4gTmV2ZXJ0aGVsZXNzLCBzdWNoCisgICAgICAgIHNpdHVhdGlvbnMgc2hvdWxkIGJlIHByZXR0eSByYXJlLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc3R0eScsICdzaXplJ10pLmRlY29kZSgpLnNwbGl0KCkKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3R0eSBpbnZvY2F0aW9uIGZhaWxlZCIpCisgICAgICAgIGV4cGVjdGVkID0gKGludChzaXplWzFdKSwgaW50KHNpemVbMF0pKSAjIHJldmVyc2VkIG9yZGVyCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBkZWwgZW52WydMSU5FUyddCisgICAgICAgICAgICBkZWwgZW52WydDT0xVTU5TJ10KKyAgICAgICAgICAgIGFjdHVhbCA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQogCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U2h1dGlsLCBUZXN0TW92ZSwgVGVzdENvcHlGaWxlKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTaHV0aWwsIFRlc3RNb3ZlLCBUZXN0Q29weUZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgVGVybXNpemVUZXN0cywgVGVzdFdoaWNoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDhkZjFiZjAuLjZiZTI1OWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0xLDE3ICsxLDE5IEBACi1pbXBvcnQgZXJybm8KLWltcG9ydCBnYwotaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQgc2VsZWN0Ci1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcKK2ltcG9ydCBnYworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHNlbGVjdAoraW1wb3J0IHNpZ25hbAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCBzeXMsIG9zLCB0aW1lLCBlcnJubwogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIHNwYXduX3B5dGhvbgordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCiAKIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMicsICdyaXNjb3MnKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiQ2FuJ3QgdGVzdCBzaWduYWwgb24gJXMiICUgc3lzLnBsYXRmb3JtKQpAQCAtNTcsMTUgKzU5LDkgQEAKIAogICAgIGRlZiBoYW5kbGVyQShzZWxmLCBzaWdudW0sIGZyYW1lKToKICAgICAgICAgc2VsZi5hX2NhbGxlZCA9IFRydWUKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoImhhbmRsZXJBIGludm9rZWQgZnJvbSBzaWduYWwgJXMgYXQ6XG4lcyIgJSAoCi0gICAgICAgICAgICAgICAgc2lnbnVtLCBzZWxmLmZvcm1hdF9mcmFtZShmcmFtZSwgbGltaXQ9MSkpKQogCiAgICAgZGVmIGhhbmRsZXJCKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgICBzZWxmLmJfY2FsbGVkID0gVHJ1ZQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCAoImhhbmRsZXJCIGludm9rZWQgZnJvbSBzaWduYWwgJXMgYXQ6XG4lcyIgJSAoCi0gICAgICAgICAgICAgICAgc2lnbnVtLCBzZWxmLmZvcm1hdF9mcmFtZShmcmFtZSwgbGltaXQ9MSkpKQogICAgICAgICByYWlzZSBIYW5kbGVyQkNhbGxlZChzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lKSkKIAogICAgIGRlZiB3YWl0KHNlbGYsIGNoaWxkKToKQEAgLTkyLDggKzg4LDYgQEAKIAogICAgICAgICAjIExldCB0aGUgc3ViLXByb2Nlc3NlcyBrbm93IHdobyB0byBzZW5kIHNpZ25hbHMgdG8uCiAgICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJ0ZXN0IHJ1bm5lcidzIHBpZCBpcyIsIHBpZCkKIAogICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctSFVQJywgc3RyKHBpZCldKQogICAgICAgICBpZiBjaGlsZDoKQEAgLTExNyw4ICsxMTEsNiBAQAogICAgICAgICBleGNlcHQgSGFuZGxlckJDYWxsZWQ6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iX2NhbGxlZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hX2NhbGxlZCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiSGFuZGxlckJDYWxsZWQgZXhjZXB0aW9uIGNhdWdodCIpCiAKICAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLVVTUjInLCBzdHIocGlkKV0pCiAgICAgICAgIGlmIGNoaWxkOgpAQCAtMTM0LDggKzEyNiw3IEBACiAgICAgICAgICAgICAjIG1heSByZXR1cm4gZWFybHkuCiAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiS2V5Ym9hcmRJbnRlcnJ1cHQgKHRoZSBhbGFybSgpIHdlbnQgb2ZmKSIpCisgICAgICAgICAgICBwYXNzCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiU29tZSBvdGhlciBleGNlcHRpb24gd29rZSB1cyBmcm9tIHBhdXNlOiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCkBAIC0xOTEsNyArMTgyLDcgQEAKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQotY2xhc3MgQmFzaWNTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBQb3NpeFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdHJpdmlhbF9zaWduYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHBhc3MKIApAQCAtMjMzLDMxICsyMjQsNDQgQEAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFdha2V1cFNpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgY2hlY2tfd2FrZXVwKHNlbGYsIHRlc3RfYm9keSk6Ci0gICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZCBhbmQgdG8gbm90IGNoYW5nZSBzaWduYWwKLSAgICAgICAgIyBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MKKyAgICBkZWYgY2hlY2tfd2FrZXVwKHNlbGYsIHRlc3RfYm9keSwgKnNpZ25hbHMsIG9yZGVyZWQ9VHJ1ZSk6CisgICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZAogICAgICAgICBjb2RlID0gIiIiaWYgMToKICAgICAgICAgaW1wb3J0IGZjbnRsCiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBzdHJ1Y3QKKworICAgICAgICBzaWduYWxzID0geyFyfQogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAgICAgICAgICAgcGFzcwogCisgICAgICAgIGRlZiBjaGVja19zaWdudW0oc2lnbmFscyk6CisgICAgICAgICAgICBkYXRhID0gb3MucmVhZChyZWFkLCBsZW4oc2lnbmFscykrMSkKKyAgICAgICAgICAgIHJhaXNlZCA9IHN0cnVjdC51bnBhY2soJyV1QicgJSBsZW4oZGF0YSksIGRhdGEpCisgICAgICAgICAgICBpZiBub3QgeyFyfToKKyAgICAgICAgICAgICAgICByYWlzZWQgPSBzZXQocmFpc2VkKQorICAgICAgICAgICAgICAgIHNpZ25hbHMgPSBzZXQoc2lnbmFscykKKyAgICAgICAgICAgIGlmIHJhaXNlZCAhPSBzaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXIgIT0gJXIiICUgKHJhaXNlZCwgc2lnbmFscykpCisKICAgICAgICAge30KIAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQogICAgICAgICByZWFkLCB3cml0ZSA9IG9zLnBpcGUoKQotICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKHdyaXRlLCBmY250bC5GX0dFVEZMLCAwKQotICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSwotICAgICAgICBmY250bC5mY250bCh3cml0ZSwgZmNudGwuRl9TRVRGTCwgZmxhZ3MpCisgICAgICAgIGZvciBmZCBpbiAocmVhZCwgd3JpdGUpOgorICAgICAgICAgICAgZmxhZ3MgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGTCwgMCkKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBvcy5PX05PTkJMT0NLCisgICAgICAgICAgICBmY250bC5mY250bChmZCwgZmNudGwuRl9TRVRGTCwgZmxhZ3MpCiAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdyaXRlKQogCiAgICAgICAgIHRlc3QoKQorICAgICAgICBjaGVja19zaWdudW0oc2lnbmFscykKIAogICAgICAgICBvcy5jbG9zZShyZWFkKQogICAgICAgICBvcy5jbG9zZSh3cml0ZSkKLSAgICAgICAgIiIiLmZvcm1hdCh0ZXN0X2JvZHkpCisgICAgICAgICIiIi5mb3JtYXQoc2lnbmFscywgb3JkZXJlZCwgdGVzdF9ib2R5KQogCiAgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKIApAQCAtMjgzLDcgKzI4Nyw3IEBACiAgICAgICAgICAgICBkdCA9IGFmdGVyX3RpbWUgLSBtaWRfdGltZQogICAgICAgICAgICAgaWYgZHQgPj0gVElNRU9VVF9IQUxGOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgPj0gJXMiICUgKGR0LCBUSU1FT1VUX0hBTEYpKQotICAgICAgICAiIiIpCisgICAgICAgICIiIiwgc2lnbmFsLlNJR0FMUk0pCiAKICAgICBkZWYgdGVzdF93YWtldXBfZmRfZHVyaW5nKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3dha2V1cCgiIiJkZWYgdGVzdCgpOgpAQCAtMzA2LDcgKzMxMCwzMiBAQAogICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gYmVmb3JlX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKLSAgICAgICAgIiIiKQorICAgICAgICAiIiIsIHNpZ25hbC5TSUdBTFJNKQorCisgICAgZGVmIHRlc3Rfc2lnbnVtKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3dha2V1cCgiIiJkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR0FMUk0pCisgICAgICAgICIiIiwgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdBTFJNKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB0ZXN0X3BlbmRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfd2FrZXVwKCIiImRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzaWdudW0xID0gc2lnbmFsLlNJR1VTUjEKKyAgICAgICAgICAgIHNpZ251bTIgPSBzaWduYWwuU0lHVVNSMgorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bTEsIGhhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bTIsIGhhbmRsZXIpCisKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgKHNpZ251bTEsIHNpZ251bTIpKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtMSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bTIpCisgICAgICAgICAgICAjIFVuYmxvY2tpbmcgdGhlIDIgc2lnbmFscyBjYWxscyB0aGUgQyBzaWduYWwgaGFuZGxlciB0d2ljZQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIChzaWdudW0xLCBzaWdudW0yKSkKKyAgICAgICAgIiIiLCAgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdVU1IyLCBvcmRlcmVkPUZhbHNlKQorCiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBTaWdpbnRlcnJ1cHRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMxNiw5ICszNDUsNiBAQAogICAgICAgICByZWFkIGlzIGludGVycnVwdGVkIGJ5IHRoZSBzaWduYWwgYW5kIHJhaXNlcyBhbiBleGNlcHRpb24uICBSZXR1cm4gRmFsc2UKICAgICAgICAgaWYgaXQgcmV0dXJucyBub3JtYWxseS4KICAgICAgICAgIiIiCi0gICAgICAgIGNsYXNzIFRpbWVvdXQoRXhjZXB0aW9uKToKLSAgICAgICAgICAgIHBhc3MKLQogICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQsIHRvIGhhdmUgYSB0aW1lb3V0IG9uIHRoZQogICAgICAgICAjIGJsb2NraW5nIHJlYWQgYW5kIHRvIG5vdCB0b3VjaCBzaWduYWwgaGFuZGxpbmcgaW4gdGhpcyBwcm9jZXNzCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgpAQCAtMzU5LDE4ICszODUsOCBAQAogICAgICAgICAgICAgICAgICMgd2FpdCB1bnRpbCB0aGUgY2hpbGQgcHJvY2VzcyBpcyBsb2FkZWQgYW5kIGhhcyBzdGFydGVkCiAgICAgICAgICAgICAgICAgZmlyc3RfbGluZSA9IHByb2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkKIAotICAgICAgICAgICAgICAgICMgV2FpdCB0aGUgcHJvY2VzcyB3aXRoIGEgdGltZW91dCBvZiA1IHNlY29uZHMKLSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gdGltZS50aW1lKCkgKyA1LjAKLSAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDwgdGltZS50aW1lKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0KCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gcHJvY2Vzcy5wb2xsKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgc3RhdHVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCi0KLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgZXhjZXB0IFRpbWVvdXQ6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKHRpbWVvdXQ9NS4wKQorICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6CiAgICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGVsc2U6CkBAIC00MTksOCArNDM1LDYgQEAKIAogICAgIGRlZiBzaWdfYWxybShzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuaG5kbF9jYWxsZWQgPSBUcnVlCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJTSUdBTFJNIGhhbmRsZXIgaW52b2tlZCIsIGFyZ3MpCiAKICAgICBkZWYgc2lnX3Z0YWxybShzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuaG5kbF9jYWxsZWQgPSBUcnVlCkBAIC00MzIsMjEgKzQ0NiwxMyBAQAogICAgICAgICBlbGlmIHNlbGYuaG5kbF9jb3VudCA9PSAzOgogICAgICAgICAgICAgIyBkaXNhYmxlIElUSU1FUl9WSVJUVUFMLCB0aGlzIGZ1bmN0aW9uIHNob3VsZG4ndCBiZSBjYWxsZWQgYW55bW9yZQogICAgICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1ZJUlRVQUwsIDApCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoImxhc3QgU0lHVlRBTFJNIGhhbmRsZXIgY2FsbCIpCiAKICAgICAgICAgc2VsZi5obmRsX2NvdW50ICs9IDEKIAotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiU0lHVlRBTFJNIGhhbmRsZXIgaW52b2tlZCIsIGFyZ3MpCi0KICAgICBkZWYgc2lnX3Byb2Yoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmhuZGxfY2FsbGVkID0gVHJ1ZQogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUFJPRiwgMCkKIAotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiU0lHUFJPRiBoYW5kbGVyIGludm9rZWQiLCBhcmdzKQotCiAgICAgZGVmIHRlc3RfaXRpbWVyX2V4YyhzZWxmKToKICAgICAgICAgIyBYWFggSSdtIGFzc3VtaW5nIC0xIGlzIGFuIGludmFsaWQgaXRpbWVyLCBidXQgbWF5YmUgc29tZSBwbGF0Zm9ybQogICAgICAgICAjIGRlZmluZXMgaXQgPwpAQCAtNDU5LDEwICs0NjUsNyBAQAogICAgIGRlZiB0ZXN0X2l0aW1lcl9yZWFsKHNlbGYpOgogICAgICAgICBzZWxmLml0aW1lciA9IHNpZ25hbC5JVElNRVJfUkVBTAogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNlbGYuaXRpbWVyLCAxLjApCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJcbmNhbGwgcGF1c2UoKS4uLiIpCiAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhuZGxfY2FsbGVkLCBUcnVlKQogCiAgICAgIyBJc3N1ZSAzODY0LCB1bmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzbwpAQCAtNTExLDExICs1MTQsMzU5IEBACiAgICAgICAgICMgYW5kIHRoZSBoYW5kbGVyIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5obmRsX2NhbGxlZCwgVHJ1ZSkKIAorCitjbGFzcyBQZW5kaW5nU2lnbmFsc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHB0aHJlYWRfc2lnbWFzaygpLCBwdGhyZWFkX2tpbGwoKSwgc2lncGVuZGluZygpIGFuZCBzaWd3YWl0KCkKKyAgICBmdW5jdGlvbnMuCisgICAgIiIiCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWdwZW5kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3BlbmRpbmcoKScpCisgICAgZGVmIHRlc3Rfc2lncGVuZGluZ19lbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2lncGVuZGluZygpLCBzZXQoKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3BlbmRpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lncGVuZGluZygpJykKKyAgICBkZWYgdGVzdF9zaWdwZW5kaW5nKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorICAgICAgICAgICAgcGVuZGluZyA9IHNpZ25hbC5zaWdwZW5kaW5nKCkKKyAgICAgICAgICAgIGlmIHBlbmRpbmcgIT0ge3NpZ251bX06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyAhPSB7JXN9JyAlIChwZW5kaW5nLCBzaWdudW0pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfa2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX2tpbGwoKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9raWxsKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2ZyZWVic2Q2JzoKKyAgICAgICAgICAgICAgICAjIElzc3VlICMxMjM5MiBhbmQgIzEyNDY5OiBzZW5kIGEgc2lnbmFsIHRvIHRoZSBtYWluIHRocmVhZAorICAgICAgICAgICAgICAgICMgZG9lc24ndCB3b3JrIGJlZm9yZSB0aGUgY3JlYXRpb24gb2YgdGhlIGZpcnN0IHRocmVhZCBvbgorICAgICAgICAgICAgICAgICMgRnJlZUJTRCA2CisgICAgICAgICAgICAgICAgZGVmIG5vb3AoKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PW5vb3ApCisgICAgICAgICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCisKKyAgICAgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX2tpbGwodGlkLCBzaWdudW0pCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB3YWl0X2hlbHBlcihzZWxmLCBibG9ja2VkLCB0ZXN0KToKKyAgICAgICAgIiIiCisgICAgICAgIHRlc3Q6IGJvZHkgb2YgdGhlICJkZWYgdGVzdChzaWdudW0pOiIgZnVuY3Rpb24uCisgICAgICAgIGJsb2NrZWQ6IG51bWJlciBvZiB0aGUgYmxvY2tlZCBzaWduYWwKKyAgICAgICAgIiIiCisgICAgICAgIGNvZGUgPSAnJydpZiAxOgorICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIDEvMAorCisgICAgICAgICVzCisKKyAgICAgICAgYmxvY2tlZCA9ICVzCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdBTFJNCisKKyAgICAgICAgIyBjaGlsZDogYmxvY2sgYW5kIHdhaXQgdGhlIHNpZ25hbAorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW2Jsb2NrZWRdKQorCisgICAgICAgICAgICAjIERvIHRoZSB0ZXN0cworICAgICAgICAgICAgdGVzdChzaWdudW0pCisKKyAgICAgICAgICAgICMgVGhlIGhhbmRsZXIgbXVzdCBub3QgYmUgY2FsbGVkIG9uIHVuYmxvY2sKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW2Jsb2NrZWRdKQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHByaW50KCJ0aGUgc2lnbmFsIGhhbmRsZXIgaGFzIGJlZW4gY2FsbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgcHJpbnQoImVycm9yOiB7fSIuZm9ybWF0KGVyciksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgJycnICUgKHRlc3Quc3RyaXAoKSwgYmxvY2tlZCkKKworICAgICAgICAjIHNpZyp3YWl0KiBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBzaWduYWwgYmxvY2tlZDogc2luY2UgdGhlIGN1cnJlbnQKKyAgICAgICAgIyBwcm9jZXNzIG1pZ2h0IGhhdmUgc2V2ZXJhbCB0aHJlYWRzIHJ1bm5pbmcsIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZQorICAgICAgICAjIGEgc2luZ2xlIHRocmVhZC4KKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lnd2FpdChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIHJlY2VpdmVkID0gc2lnbmFsLnNpZ3dhaXQoW3NpZ251bV0pCisgICAgICAgICAgICBpZiByZWNlaXZlZCAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdyZWNlaXZlZCAlcywgbm90ICVzJyAlIChyZWNlaXZlZCwgc2lnbnVtKSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0aW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0aW5mbygpJykKKyAgICBkZWYgdGVzdF9zaWd3YWl0aW5mbyhzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIGluZm8gPSBzaWduYWwuc2lnd2FpdGluZm8oW3NpZ251bV0pCisgICAgICAgICAgICBpZiBpbmZvLnNpX3NpZ25vICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImluZm8uc2lfc2lnbm8gIT0gJXMiICUgc2lnbnVtKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0KHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgaW5mbyA9IHNpZ25hbC5zaWd0aW1lZHdhaXQoW3NpZ251bV0sIDEwLjEwMDApCisgICAgICAgICAgICBpZiBpbmZvLnNpX3NpZ25vICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2luZm8uc2lfc2lnbm8gIT0gJXMnICUgc2lnbnVtKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0X3BvbGwoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBwb2xsaW5nIHdpdGggc2lndGltZWR3YWl0IHdvcmtzCisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisgICAgICAgICAgICBpbmZvID0gc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbnVtXSwgMCkKKyAgICAgICAgICAgIGlmIGluZm8uc2lfc2lnbm8gIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignaW5mby5zaV9zaWdubyAhPSAlcycgJSBzaWdudW0pCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXRfdGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd0aW1lZHdhaXQoW3NpZ251bV0sIDEuMCkKKyAgICAgICAgICAgIGlmIHJlY2VpdmVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigicmVjZWl2ZWQ9JXIiICUgKHJlY2VpdmVkLCkpCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXRfbmVnYXRpdmVfdGltZW91dChzZWxmKToKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0FMUk0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2lnbmFsLnNpZ3RpbWVkd2FpdCwgW3NpZ251bV0sIC0xLjApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXRpbmZvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXRpbmZvKCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRpbmZvX2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdVU1IxLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIGltcG9ydCBlcnJubworCisgICAgICAgICAgICBobmRsX2NhbGxlZCA9IFRydWUKKyAgICAgICAgICAgIGRlZiBhbGFybV9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIGhuZGxfY2FsbGVkID0gRmFsc2UKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgYWxhcm1faGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5zaWd3YWl0aW5mbyhbc2lnbmFsLlNJR1VTUjFdKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlRSOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaG5kbF9jYWxsZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlNJR0FMUk0gaGFuZGxlciBub3QgY2FsbGVkIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkV4cGVjdGVkIEVJTlRSIHRvIGJlIHJhaXNlZCBieSBzaWd3YWl0aW5mbyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhwZWN0ZWQgRUlOVFIgdG8gYmUgcmFpc2VkIGJ5IHNpZ3dhaXRpbmZvIikKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXQoKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRfdGhyZWFkKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgY2FsbGluZyBzaWd3YWl0KCkgZnJvbSBhIHRocmVhZCBkb2Vzbid0IHN1c3BlbmQgdGhlIHdob2xlCisgICAgICAgICMgcHJvY2Vzcy4gQSBuZXcgaW50ZXJwcmV0ZXIgaXMgc3Bhd25lZCB0byBhdm9pZCBwcm9ibGVtcyB3aGVuIG1peGluZworICAgICAgICAjIHRocmVhZHMgYW5kIGZvcmsoKTogb25seSBhc3luYy1zYWZlIGZ1bmN0aW9ucyBhcmUgYWxsb3dlZCBiZXR3ZWVuCisgICAgICAgICMgZm9yaygpIGFuZCBleGVjKCkuCisgICAgICAgIGFzc2VydF9weXRob25fb2soIi1jIiwgIiIiaWYgVHJ1ZToKKyAgICAgICAgICAgIGltcG9ydCBvcywgdGhyZWFkaW5nLCBzeXMsIHRpbWUsIHNpZ25hbAorCisgICAgICAgICAgICAjIHRoZSBkZWZhdWx0IGhhbmRsZXIgdGVybWluYXRlcyB0aGUgcHJvY2VzcworICAgICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKworICAgICAgICAgICAgZGVmIGtpbGxfbGF0ZXIoKToKKyAgICAgICAgICAgICAgICAjIHdhaXQgdW50aWwgdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgaW4gc2lnd2FpdCgpCisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworICAgICAgICAgICAgIyB0aGUgc2lnbmFsIG11c3QgYmUgYmxvY2tlZCBieSBhbGwgdGhlIHRocmVhZHMKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgICAgICBraWxsZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1raWxsX2xhdGVyKQorICAgICAgICAgICAga2lsbGVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHJlY2VpdmVkID0gc2lnbmFsLnNpZ3dhaXQoW3NpZ251bV0pCisgICAgICAgICAgICBpZiByZWNlaXZlZCAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcHJpbnQoInNpZ3dhaXQoKSByZWNlaXZlZCAlcywgbm90ICVzIiAlIChyZWNlaXZlZCwgc2lnbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgIGtpbGxlci5qb2luKCkKKyAgICAgICAgICAgICMgdW5ibG9jayB0aGUgc2lnbmFsLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZWQgYnkgc2lnd2FpdCgpCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgICIiIikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX3NpZ21hc2tfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrLCAxLCAyLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrLCAxNzAwLCBbXSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX3NpZ21hc2soc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBvczsgaW1wb3J0IHRocmVhZGluZworCisgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgMS8wCisKKyAgICAgICAgZGVmIGtpbGwoc2lnbnVtKToKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworICAgICAgICBkZWYgcmVhZF9zaWdtYXNrKCk6CisgICAgICAgICAgICByZXR1cm4gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSkKKworICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorCisgICAgICAgICMgSW5zdGFsbCBvdXIgc2lnbmFsIGhhbmRsZXIKKyAgICAgICAgb2xkX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICAjIFVuYmxvY2sgU0lHVVNSMSAoYW5kIGNvcHkgdGhlIG9sZCBtYXNrKSB0byB0ZXN0IG91ciBzaWduYWwgaGFuZGxlcgorICAgICAgICBvbGRfbWFzayA9IHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAga2lsbChzaWdudW0pCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisKKyAgICAgICAgIyBCbG9jayBhbmQgdGhlbiByYWlzZSBTSUdVU1IxLiBUaGUgc2lnbmFsIGlzIGJsb2NrZWQ6IHRoZSBzaWduYWwKKyAgICAgICAgIyBoYW5kbGVyIGlzIG5vdCBjYWxsZWQsIGFuZCB0aGUgc2lnbmFsIGlzIG5vdyBwZW5kaW5nCisgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgIGtpbGwoc2lnbnVtKQorCisgICAgICAgICMgQ2hlY2sgdGhlIG5ldyBtYXNrCisgICAgICAgIGJsb2NrZWQgPSByZWFkX3NpZ21hc2soKQorICAgICAgICBpZiBzaWdudW0gbm90IGluIGJsb2NrZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIG5vdCBpbiAlcyIgJSAoc2lnbnVtLCBibG9ja2VkKSkKKyAgICAgICAgaWYgb2xkX21hc2sgXiBibG9ja2VkICE9IHtzaWdudW19OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBeICVzICE9IHslc30iICUgKG9sZF9tYXNrLCBibG9ja2VkLCBzaWdudW0pKQorCisgICAgICAgICMgVW5ibG9jayBTSUdVU1IxCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgdW5ibG9jayB0aGUgcGVuZGluZyBzaWduYWwgY2FsbHMgaW1tZWRpYXRseSB0aGUgc2lnbmFsIGhhbmRsZXIKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAga2lsbChzaWdudW0pCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisKKyAgICAgICAgIyBDaGVjayB0aGUgbmV3IG1hc2sKKyAgICAgICAgdW5ibG9ja2VkID0gcmVhZF9zaWdtYXNrKCkKKyAgICAgICAgaWYgc2lnbnVtIGluIHVuYmxvY2tlZDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaW4gJXMiICUgKHNpZ251bSwgdW5ibG9ja2VkKSkKKyAgICAgICAgaWYgYmxvY2tlZCBeIHVuYmxvY2tlZCAhPSB7c2lnbnVtfToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgXiAlcyAhPSB7JXN9IiAlIChibG9ja2VkLCB1bmJsb2NrZWQsIHNpZ251bSkpCisgICAgICAgIGlmIG9sZF9tYXNrICE9IHVuYmxvY2tlZDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgIT0gJXMiICUgKG9sZF9tYXNrLCB1bmJsb2NrZWQpKQorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2ZyZWVic2Q2JywKKyAgICAgICAgImlzc3VlICMxMjM5Mjogc2VuZCBhIHNpZ25hbCB0byB0aGUgbWFpbiB0aHJlYWQgZG9lc24ndCB3b3JrICIKKyAgICAgICAgImJlZm9yZSB0aGUgY3JlYXRpb24gb2YgdGhlIGZpcnN0IHRocmVhZCBvbiBGcmVlQlNEIDYiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9raWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfa2lsbCgpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX2tpbGxfbWFpbl90aHJlYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgc2lnbmFsIGNhbiBiZSBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3aXRoIHB0aHJlYWRfa2lsbCgpCisgICAgICAgICMgYmVmb3JlIGFueSBvdGhlciB0aHJlYWQgaGFzIGJlZW4gY3JlYXRlZCAoc2VlIGlzc3VlICMxMjM5MikuCisgICAgICAgIGNvZGUgPSAiIiJpZiBUcnVlOgorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgzKQorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBoYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfa2lsbCh0aHJlYWRpbmcuZ2V0X2lkZW50KCksIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgc3lzLmV4aXQoMikKKyAgICAgICAgIiIiCisKKyAgICAgICAgd2l0aCBzcGF3bl9weXRob24oJy1jJywgY29kZSkgYXMgcHJvY2VzczoKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICBpZiBleGl0Y29kZSAhPSAzOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2hpbGQgZXJyb3IgKGV4aXQgY29kZSAlcyk6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleGl0Y29kZSwgc3Rkb3V0KSkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdHJ5OgotICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChCYXNpY1NpZ25hbFRlc3RzLCBJbnRlclByb2Nlc3NTaWduYWxUZXN0cywKKyAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9zaXhUZXN0cywgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdha2V1cFNpZ25hbFRlc3RzLCBTaWdpbnRlcnJ1cHRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGltZXJUZXN0LCBXaW5kb3dzU2lnbmFsVGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0aW1lclRlc3QsIFdpbmRvd3NTaWduYWxUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ1NpZ25hbHNUZXN0cykKICAgICBmaW5hbGx5OgogICAgICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKaW5kZXggYmE0MjY0OS4uMjkyODZjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQpAQCAtMzksNiArMzksNyBAQAogICAgICAgICBzZWxmLm9sZF9iYXNlID0gc2l0ZS5VU0VSX0JBU0UKICAgICAgICAgc2VsZi5vbGRfc2l0ZSA9IHNpdGUuVVNFUl9TSVRFCiAgICAgICAgIHNlbGYub2xkX3ByZWZpeGVzID0gc2l0ZS5QUkVGSVhFUworICAgICAgICBzZWxmLm9yaWdpbmFsX3ZhcnMgPSBzeXNjb25maWcuX0NPTkZJR19WQVJTCiAgICAgICAgIHNlbGYub2xkX3ZhcnMgPSBjb3B5KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC00Nyw3ICs0OCw5IEBACiAgICAgICAgIHNpdGUuVVNFUl9CQVNFID0gc2VsZi5vbGRfYmFzZQogICAgICAgICBzaXRlLlVTRVJfU0lURSA9IHNlbGYub2xkX3NpdGUKICAgICAgICAgc2l0ZS5QUkVGSVhFUyA9IHNlbGYub2xkX3ByZWZpeGVzCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzZWxmLm9sZF92YXJzCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzZWxmLm9yaWdpbmFsX3ZhcnMKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNlbGYub2xkX3ZhcnMpCiAKICAgICBkZWYgdGVzdF9tYWtlcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IG1ha2VwYXRoKCkgaGF2ZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciBpdHMgZmlyc3QgcmV0dXJuIHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA2OGNjYzI5Li45M2YxNGM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQoraW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1vY2tfc29ja2V0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgaW8KQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgcmFpc2UgRHVtbXlEaXNwYXRjaGVyQnJva2VuKCkKIAogCi1jbGFzcyBTTVRQRFNlcnZlclRlc3QoVGVzdENhc2UpOgorY2xhc3MgU01UUERTZXJ2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAKQEAgLTM5LDYgKzM5LDcgQEAKICAgICAgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKICAgICAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCisgICAgICAgIHdyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHdyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKQEAgLTQ5LDcgKzUwLDcgQEAKICAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CiAKIAotY2xhc3MgU01UUERDaGFubmVsVGVzdChUZXN0Q2FzZSk6CitjbGFzcyBTTVRQRENoYW5uZWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KQEAgLTc4LDMxICs3OSw5NCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogYmFkIHN5bnRheFxyXG4nKQogCi0gICAgZGVmIHRlc3RfRUhMT19ub3RfaW1wbGVtZW50ZWQoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gdGVzdC5leGFtcGxlJykKKyAgICBkZWYgdGVzdF9FSExPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgSEVMUFxyXG4nKQorCisgICAgZGVmIHRlc3RfRUhMT19iYWRfc3ludGF4KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYic1MDIgRXJyb3I6IGNvbW1hbmQgIkVITE8iIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZVxyXG4nKQorCisgICAgZGVmIHRlc3RfRUhMT19kdXBsaWNhdGUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fSEVMT19kdXBsaWNhdGUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKIAogICAgIGRlZiB0ZXN0X0hFTE8oc2VsZik6CiAgICAgICAgIG5hbWUgPSBzbXRwZC5zb2NrZXQuZ2V0ZnFkbigpCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gdGVzdC5leGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1MCB7fVxyXG4nLmZvcm1hdChuYW1lKS5lbmNvZGUoJ2FzY2lpJykpCiAKKyAgICBkZWYgdGVzdF9IRUxPX0VITE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxQKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxQJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYidEQVRBIFJTRVQgTk9PUCBRVUlUIFZSRllcclxuJykKKworICAgIGRlZiB0ZXN0X0hFTFBfY29tbWFuZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMUCBNQUlMJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQorCisgICAgZGVmIHRlc3RfSEVMUF9jb21tYW5kX3Vua25vd24oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTFAgU1BBTScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGInREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZXHJcbicpCisKICAgICBkZWYgdGVzdF9IRUxPX2JhZF9zeW50YXgoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IEhFTE8gaG9zdG5hbWVcclxuJykKIAogICAgIGRlZiB0ZXN0X0hFTE9fZHVwbGljYXRlKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gdGVzdC5leGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRHVwbGljYXRlIEhFTE8vRUhMT1xyXG4nKQogCisgICAgZGVmIHRlc3RfSEVMT19wYXJhbWV0ZXJfcmVqZWN0ZWRfd2hlbl9leHRlbnNpb25zX25vdF9lbmFibGVkKHNlbGYpOgorICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGZvb0BleGFtcGxlLmNvbT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9hbGxvd3Nfc3BhY2VfYWZ0ZXJfY29sb24oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogICA8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9leHRlbmRlZF9NQUlMX2FsbG93c19zcGFjZV9hZnRlcl9jb2xvbihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAgIDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBPS1xyXG4nKQorCiAgICAgZGVmIHRlc3RfTk9PUChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTk9PUCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X0hFTE9fTk9PUChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTk9PUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogCiAgICAgZGVmIHRlc3RfTk9PUF9iYWRfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidOT09QIGhpJykKQEAgLTExMywyNiArMTc3LDQ3IEBACiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1FVSVQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyMjEgQnllXHJcbicpCiAKKyAgICBkZWYgdGVzdF9IRUxPX1FVSVQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1FVSVQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyMjEgQnllXHJcbicpCisKICAgICBkZWYgdGVzdF9RVUlUX2FyZ19pZ25vcmVkKHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUIGJ5ZSBieWUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyMjEgQnllXHJcbicpCiAKICAgICBkZWYgdGVzdF9iYWRfc3RhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuY2hhbm5lbC5zbXRwX3N0YXRlID0gJ0JBRCBTVEFURScKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTycpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNDUxIEludGVybmFsIGNvbmZ1c2lvblxyXG4nKQogCiAgICAgZGVmIHRlc3RfY29tbWFuZF90b29fbG9uZyhzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tICcgKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICcgKwogICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIHNlbGYuY2hhbm5lbC5jb21tYW5kX3NpemVfbGltaXQgKwogICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nXHJcbicpCiAKLSAgICBkZWYgdGVzdF9kYXRhX3Rvb19sb25nKHNlbGYpOgotICAgICAgICAjIFNtYWxsIGhhY2suIFNldHRpbmcgbGltaXQgdG8gMksgb2N0ZXRzIGhlcmUgd2lsbCBzYXZlIHVzIHNvbWUgdGltZS4KLSAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDIwNDgKKyAgICBkZWYgdGVzdF9NQUlMX2NvbW1hbmRfbGltaXRfZXh0ZW5kZWRfd2l0aF9TSVpFKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBmaWxsX2xlbiA9IHNlbGYuY2hhbm5lbC5jb21tYW5kX3NpemVfbGltaXQgLSBsZW4oJ01BSUwgZnJvbTo8QGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiBmaWxsX2xlbiArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ0BleGFtcGxlPiBTSVpFPTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKworICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIChmaWxsX2xlbiArIDI2KSArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ0BleGFtcGxlPiBTSVpFPTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQorCisgICAgZGVmIHRlc3RfZGF0YV9sb25nZXJfdGhhbl9kZWZhdWx0X2RhdGFfc2l6ZV9saW1pdChzZWxmKToKKyAgICAgICAgIyBIYWNrIHRoZSBkZWZhdWx0IHNvIHdlIGRvbid0IGhhdmUgdG8gZ2VuZXJhdGUgc28gbXVjaCBkYXRhLgorICAgICAgICBzZWxmLmNoYW5uZWwuZGF0YV9zaXplX2xpbWl0ID0gMTA0OAorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTE0MSw2NCArMjI2LDE4MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhXHJcbicpCiAKKyAgICBkZWYgdGVzdF9NQUlMX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gU0laRT01MTInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9pbnZhbGlkX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gU0laRT1pbnZhbGlkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+IFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl1cclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfUkNQVF91bmtub3duX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRlJPTTo8ZWdnc0BleGFtcGxlPiBoYW09Z3JlZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRlJPTTo8ZWdnc0BleGFtcGxlPicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVE86PGVnZ3NAZXhhbXBsZT4gaGFtPWdyZWVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzU1NSBSQ1BUIFRPIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90IGltcGxlbWVudGVkXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX3NpemVfcGFyYW1ldGVyX2xhcmdlcl90aGFuX2RlZmF1bHRfZGF0YV9zaXplX2xpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmNoYW5uZWwuZGF0YV9zaXplX2xpbWl0ID0gMTA0OAorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gU0laRT0yMDk2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzU1MiBFcnJvcjogbWVzc2FnZSBzaXplIGV4Y2VlZHMgZml4ZWQgbWF4aW11bSBtZXNzYWdlIHNpemVcclxuJykKKwogICAgIGRlZiB0ZXN0X25lZWRfTUFJTChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0bzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInNTAzIEVycm9yOiBuZWVkIE1BSUwgY29tbWFuZFxyXG4nKQogCi0gICAgZGVmIHRlc3RfTUFJTF9zeW50YXgoc2VsZik6CisgICAgZGVmIHRlc3RfTUFJTF9zeW50YXhfSEVMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tIGVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006PGFkZHJlc3M+XHJcbicpCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+XHJcbicpCiAKLSAgICBkZWYgdGVzdF9NQUlMX21pc3NpbmdfZnJvbShzZWxmKToKKyAgICBkZWYgdGVzdF9NQUlMX3N5bnRheF9FSExPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb20gZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+IFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl1cclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfbWlzc2luZ19hZGRyZXNzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCi0gICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTo8YWRkcmVzcz5cclxuJykKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKIAogICAgIGRlZiB0ZXN0X01BSUxfY2hldnJvbnMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8ZWdnc0BleGFtcGxlPicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfZW1wdHlfY2hldnJvbnMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9xdW90ZWRfbG9jYWxwYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206IDwiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydF9ub19hbmdsZXMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydF93aXRoX3NpemUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogPCJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbT4gU0laRT0xMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydF93aXRoX3NpemVfbm9fYW5nbGVzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbSBTSVpFPTEwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwubWFpbGZyb20sICciRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20nKQogCiAgICAgZGVmIHRlc3RfbmVzdGVkX01BSUwoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVzdGVkIE1BSUwgY29tbWFuZFxyXG4nKQogCisgICAgZGVmIHRlc3RfVlJGWShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVlJGWSBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInMjUyIENhbm5vdCBWUkZZIHVzZXIsIGJ1dCB3aWxsIGFjY2VwdCBtZXNzYWdlIGFuZCBhdHRlbXB0ICcgKyBcCisgICAgICAgICAgICBiJ2RlbGl2ZXJ5XHJcbicpCisKKyAgICBkZWYgdGVzdF9WUkZZX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVlJGWScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBWUkZZIDxhZGRyZXNzPlxyXG4nKQorCisgICAgZGVmIHRlc3RfRVhQTl9ub3RfaW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VYUE4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAyIEVYUE4gbm90IGltcGxlbWVudGVkXHJcbicpCisKKyAgICBkZWYgdGVzdF9ub19IRUxPX01BSUwoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3RcclxuJykKKwogICAgIGRlZiB0ZXN0X25lZWRfUkNQVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInNTAzIEVycm9yOiBuZWVkIFJDUFQgY29tbWFuZFxyXG4nKQogCi0gICAgZGVmIHRlc3RfUkNQVF9zeW50YXgoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgIGRlZiB0ZXN0X1JDUFRfc3ludGF4X0hFTE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTogZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0byBlZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInNTAxIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+XHJcbicpCiAKKyAgICBkZWYgdGVzdF9SQ1BUX3N5bnRheF9FSExPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206IGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG8gZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9SQ1BUX2xvd2VyY2FzZV90b19PSyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOiBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvOiA8ZWdnc0BleGFtcGxlPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3Rfbm9fSEVMT19SQ1BUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3RcclxuJykKKwogICAgIGRlZiB0ZXN0X2RhdGFfZGlhbG9nKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKIAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzM1NCBFbmQgZGF0YSB3aXRoIDxDUj48TEY+LjxDUj48TEY+XHJcbicpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxubW9yZVxyXG4uJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAogICAgICAgICAgICAgWygncGVlcicsICdlZ2dzQGV4YW1wbGUnLCBbJ3NwYW1AZXhhbXBsZSddLCAnZGF0YVxubW9yZScpXSkKIAogICAgIGRlZiB0ZXN0X0RBVEFfc3ludGF4KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBIHNwYW0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYic1MDEgU3ludGF4OiBEQVRBXHJcbicpCiAKKyAgICBkZWYgdGVzdF9ub19IRUxPX0RBVEEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEgc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3RcclxuJykKKwogICAgIGRlZiB0ZXN0X2RhdGFfdHJhbnNwYXJlbmN5X3NlY3Rpb25fNF81XzIoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtMjA2LDYgKzQxMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsICcuJykKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX1JDUFQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86aGFtQGV4YW1wbGUnKQpAQCAtMjE2LDYgKzQyMSw3IEBACiAKICAgICBkZWYgdGVzdF9tYW51YWxfc3RhdHVzKHNlbGYpOgogICAgICAgICAjIGNoZWNrcyB0aGF0IHRoZSBDaGFubmVsIGlzIGFibGUgdG8gcmV0dXJuIGEgY3VzdG9tIHN0YXR1cyBtZXNzYWdlCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtMjIzLDEwICs0MjksMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9raXNoXHJcbicpCiAKICAgICBkZWYgdGVzdF9SU0VUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSU0VUJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206Zm9vQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtMjM0LDU4ICs0NDEsMTE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCiAgICAgICAgICAgICBbKCdwZWVyJywgJ2Zvb0BleGFtcGxlJywgWydlZ2dzQGV4YW1wbGUnXSwgJ2RhdGEnKV0pCiAKKyAgICBkZWYgdGVzdF9IRUxPX1JTRVQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JTRVQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKwogICAgIGRlZiB0ZXN0X1JTRVRfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSU0VUIGhpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInNTAxIFN5bnRheDogUlNFVFxyXG4nKQogCisgICAgZGVmIHRlc3RfdW5rbm93bl9jb21tYW5kKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidVTktOT1dOX0NNRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBjb21tYW5kICJVTktOT1dOX0NNRCIgbm90ICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYidyZWNvZ25pemVkXHJcbicpCisKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfZGVwcmVjYXRpb25zKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3NlcnZlcgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fc2VydmVyID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbGluZQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbGluZSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3N0YXRlCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zdGF0ZSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2dyZWV0aW5nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19ncmVldGluZyA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX21haWxmcm9tCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19tYWlsZnJvbSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3JjcHR0b3MKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3JjcHR0b3MgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19kYXRhCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19kYXRhID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZnFkbgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZnFkbiA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3BlZXIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3BlZXIgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19jb25uCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19jb25uID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fYWRkcgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fYWRkciA9ICdzcGFtJwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU01UUERTZXJ2ZXJUZXN0LCBTTVRQRENoYW5uZWxUZXN0KQorCitjbGFzcyBTTVRQRENoYW5uZWxXaXRoRGF0YVNpemVMaW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcignYScsICdiJykKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgICMgU2V0IERBVEEgc2l6ZSBsaW1pdCB0byAzMiBieXRlcyBmb3IgZWFzeSB0ZXN0aW5nCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLCAzMikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGxpbmUpOgorICAgICAgICBzZWxmLmNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgc2VsZi5jaGFubmVsLmhhbmRsZV9yZWFkKCkKKworICAgIGRlZiB0ZXN0X2RhdGFfbGltaXRfZGlhbG9nKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbm1vcmVcclxuLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAorICAgICAgICAgICAgWygncGVlcicsICdlZ2dzQGV4YW1wbGUnLCBbJ3NwYW1AZXhhbXBsZSddLCAnZGF0YVxubW9yZScpXSkKKworICAgIGRlZiB0ZXN0X2RhdGFfbGltaXRfZGlhbG9nX3Rvb19tdWNoX2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzM1NCBFbmQgZGF0YSB3aXRoIDxDUj48TEY+LjxDUj48TEY+XHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1RoaXMgbWVzc2FnZSBpcyBsb25nZXIgdGhhbiAzMiBieXRlc1xyXG4uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YVxyXG4nKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQppbmRleCAyY2IwZDFhLi5iZWZjNDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBzZWxlY3QKK2ltcG9ydCBlcnJubwogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbW9ja19zb2NrZXQKQEAgLTcyLDYgKzczLDE0IEBACiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0KQogICAgICAgICBzbXRwLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0U291cmNlQWRkcmVzcyhzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIb2xhIG11bmRvIikKKyAgICAgICAgIyBjb25uZWN0cworICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz0oJzEyNy4wLjAuMScsMTk4NzYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuc291cmNlX2FkZHJlc3MsICgnMTI3LjAuMC4xJywgMTk4NzYpKQorICAgICAgICBzbXRwLmNsb3NlKCkKKwogICAgIGRlZiB0ZXN0QmFzaWMyKHNlbGYpOgogICAgICAgICBtb2NrX3NvY2tldC5yZXBseV93aXRoKGIiMjIwIEhvbGEgbXVuZG8iKQogICAgICAgICAjIGNvbm5lY3RzLCBpbmNsdWRlIHBvcnQgaW4gaG9zdCBuYW1lCkBAIC0yMDQsMTUgKzIxMywyOSBAQAogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKICAgICAgICAgc210cC5xdWl0KCkKIAorICAgIGRlZiB0ZXN0U291cmNlQWRkcmVzcyhzZWxmKToKKyAgICAgICAgIyBjb25uZWN0CisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9Mywgc291cmNlX2FkZHJlc3M9KCcxMjcuMC4wLjEnLCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zb3VyY2VfYWRkcmVzcywgKCcxMjcuMC4wLjEnLCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5sb2NhbF9ob3N0bmFtZSwgJ2xvY2FsaG9zdCcpCisgICAgICAgICAgICBzbXRwLnF1aXQoKQorICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUREUklOVVNFOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvdWxkbid0IGJpbmQgdG8gcG9ydCAlZCIgJSBwb3J0KQorICAgICAgICAgICAgcmFpc2UKKwogICAgIGRlZiB0ZXN0Tk9PUChzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPaycpCisgICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPSycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5ub29wKCksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQogCiAgICAgZGVmIHRlc3RSU0VUKHNlbGYpOgogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKLSAgICAgICAgZXhwZWN0ZWQgPSAoMjUwLCBiJ09rJykKKyAgICAgICAgZXhwZWN0ZWQgPSAoMjUwLCBiJ09LJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnJzZXQoKSwgZXhwZWN0ZWQpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKQEAgLTIyMywxMCArMjQ2LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5laGxvKCksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQogCi0gICAgZGVmIHRlc3RWUkZZKHNlbGYpOgotICAgICAgICAjIFZSRlkgaXNuJ3QgaW1wbGVtZW50ZWQgaW4gRGVidWdnaW5nU2VydmVyCisgICAgZGVmIHRlc3ROb3RJbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyBFWFBOIGlzbid0IGltcGxlbWVudGVkIGluIERlYnVnZ2luZ1NlcnZlcgogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKLSAgICAgICAgZXhwZWN0ZWQgPSAoNTAyLCBiJ0Vycm9yOiBjb21tYW5kICJWUkZZIiBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICBleHBlY3RlZCA9ICg1MDIsIGInRVhQTiBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICBzbXRwLnB1dGNtZCgnRVhQTicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5nZXRyZXBseSgpLCBleHBlY3RlZCkKKyAgICAgICAgc210cC5xdWl0KCkKKworICAgIGRlZiB0ZXN0VlJGWShzZWxmKToKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIGV4cGVjdGVkID0gKDI1MiwgYidDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYW5kIGF0dGVtcHQgZGVsaXZlcnknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAudnJmeSgnbm9ib2R5QG5vd2hlcmUuY29tJyksIGV4cGVjdGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAudmVyaWZ5KCdub2JvZHlAbm93aGVyZS5jb20nKSwgZXhwZWN0ZWQpCiAgICAgICAgIHNtdHAucXVpdCgpCkBAIC0yNDIsNyArMjczLDggQEAKIAogICAgIGRlZiB0ZXN0SEVMUChzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5oZWxwKCksIGInRXJyb3I6IGNvbW1hbmQgIkhFTFAiIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5oZWxwKCksIGInU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1JDUFQgREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZJykKICAgICAgICAgc210cC5xdWl0KCkKIAogICAgIGRlZiB0ZXN0U2VuZChzZWxmKToKQEAgLTU2MCw2ICs1OTIsOSBAQAogIyBTaW11bGF0ZWQgU01UUCBjaGFubmVsICYgc2VydmVyCiBjbGFzcyBTaW1TTVRQQ2hhbm5lbChzbXRwZC5TTVRQQ2hhbm5lbCk6CiAKKyAgICAjIEZvciB0ZXN0aW5nIGZhaWx1cmVzIGluIFFVSVQgd2hlbiB1c2luZyB0aGUgY29udGV4dCBtYW5hZ2VyIEFQSS4KKyAgICBxdWl0X3Jlc3BvbnNlID0gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhX2ZlYXR1cmVzLCAqYXJncywgKiprdyk6CiAgICAgICAgIHNlbGYuX2V4dHJhZmVhdHVyZXMgPSAnJy5qb2luKAogICAgICAgICAgICAgWyAiMjUwLXswfVxyXG4iLmZvcm1hdCh4KSBmb3IgeCBpbiBleHRyYV9mZWF0dXJlcyBdKQpAQCAtNjEwLDE5ICs2NDUsMzEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUwIE5vIGFjY2VzcyBmb3IgeW91IScpCiAKKyAgICBkZWYgc210cF9RVUlUKHNlbGYsIGFyZyk6CisgICAgICAgICMgYXJncyBpcyBpZ25vcmVkCisgICAgICAgIGlmIHNlbGYucXVpdF9yZXNwb25zZSBpcyBOb25lOgorICAgICAgICAgICAgc3VwZXIoU2ltU01UUENoYW5uZWwsIHNlbGYpLnNtdHBfUVVJVChhcmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnB1c2goc2VsZi5xdWl0X3Jlc3BvbnNlKQorICAgICAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQorCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKICAgICAgICAgcmFpc2UKIAogCiBjbGFzcyBTaW1TTVRQU2VydmVyKHNtdHBkLlNNVFBTZXJ2ZXIpOgogCisgICAgIyBGb3IgdGVzdGluZyBmYWlsdXJlcyBpbiBRVUlUIHdoZW4gdXNpbmcgdGhlIGNvbnRleHQgbWFuYWdlciBBUEkuCisgICAgcXVpdF9yZXNwb25zZSA9IE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgIHNlbGYuX2V4dHJhX2ZlYXR1cmVzID0gW10KICAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprdykKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6Ci0gICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gU2ltU01UUENoYW5uZWwoc2VsZi5fZXh0cmFfZmVhdHVyZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwgPSBTaW1TTVRQQ2hhbm5lbCgKKyAgICAgICAgICAgIHNlbGYuX2V4dHJhX2ZlYXR1cmVzLCBzZWxmLCBjb25uLCBhZGRyKQorICAgICAgICBzZWxmLl9TTVRQY2hhbm5lbC5xdWl0X3Jlc3BvbnNlID0gc2VsZi5xdWl0X3Jlc3BvbnNlCiAKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgcGFzcwpAQCAtNzUyLDYgKzc5OSwyNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9jcmVkZW50aWFsc1snY3JhbS1tZDUnXSwgc3RyKGVycikpCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkgYXMgc210cDoKKyAgICAgICAgICAgIGNvZGUsIG1lc3NhZ2UgPSBzbXRwLm5vb3AoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAyNTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNtdHBsaWIuU01UUFNlcnZlckRpc2Nvbm5lY3RlZCwgc210cC5zZW5kLCBiJ2ZvbycpCisgICAgICAgIHdpdGggc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkgYXMgc210cDoKKyAgICAgICAgICAgIHNtdHAuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQsIHNtdHAuc2VuZCwgYidmb28nKQorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfUVVJVF9mYWlsdXJlKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYucXVpdF9yZXNwb25zZSA9ICc0MjEgUVVJVCBGQUlMRUQnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQUmVzcG9uc2VFeGNlcHRpb24pIGFzIGVycm9yOgorICAgICAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0KSBhcyBzbXRwOgorICAgICAgICAgICAgICAgIHNtdHAubm9vcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3IuZXhjZXB0aW9uLnNtdHBfY29kZSwgNDIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yLmV4Y2VwdGlvbi5zbXRwX2Vycm9yLCBiJ1FVSVQgRkFJTEVEJykKKyAgICAgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNsZWFuIHVwIHNlbGYuc2Vydi5xdWl0X3Jlc3BvbnNlIGJlY2F1c2UgYSBuZXcKKyAgICAgICAgIyBzZXJ2ZXIgaXMgYWx3YXlzIGluc3RhbnRpYXRlZCBpbiB0aGUgc2V0VXAoKS4KKwogICAgICNUT0RPOiBhZGQgdGVzdHMgZm9yIGNvcnJlY3QgQVVUSCBtZXRob2QgZmFsbGJhY2sgbm93IHRoYXQgdGhlCiAgICAgI3Rlc3QgaW5mcmFzdHJ1Y3R1cmUgY2FuIHN1cHBvcnQgaXQuCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQppbmRleCAwMTk4YWI2Li44NjIyNGVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CkBAIC00LDI4ICs0LDYwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBzbXRwbGliCiAKK3NzbCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgic3NsIikKKwogc3VwcG9ydC5yZXF1aXJlcygibmV0d29yayIpCiAKKworY2xhc3MgU210cFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHRlc3RTZXJ2ZXIgPSAnc210cC5nbWFpbC5jb20nCisgICAgcmVtb3RlUG9ydCA9IDI1CisgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3N0YXJ0dGxzKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgorICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQKHNlbGYudGVzdFNlcnZlciwgc2VsZi5yZW1vdGVQb3J0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlcnZlci5zdGFydHRscyhjb250ZXh0PXNlbGYuY29udGV4dCkKKyAgICAgICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gPT0gJ1NUQVJUVExTIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4nOgorICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5za2lwKGUuYXJnc1swXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorCisKIGNsYXNzIFNtdHBTU0xUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0ZXN0U2VydmVyID0gJ3NtdHAuZ21haWwuY29tJwogICAgIHJlbW90ZVBvcnQgPSA0NjUKKyAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgIHN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShzbXRwbGliLCAnU01UUF9TU0wnKQogICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHNlbGYudGVzdFNlcnZlcik6CiAgICAgICAgICAgICBzZXJ2ZXIgPSBzbXRwbGliLlNNVFBfU1NMKHNlbGYudGVzdFNlcnZlciwgc2VsZi5yZW1vdGVQb3J0KQotICAgICAgICBzZXJ2ZXIuZWhsbygpCi0gICAgICAgIHNlcnZlci5xdWl0KCkKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZGVmYXVsdF9wb3J0KHNlbGYpOgogICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgogICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQX1NTTChzZWxmLnRlc3RTZXJ2ZXIpCi0gICAgICAgIHNlcnZlci5laGxvKCkKLSAgICAgICAgc2VydmVyLnF1aXQoKQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF91c2luZ19zc2xjb250ZXh0KHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgorICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQX1NTTChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCwgY29udGV4dD1zZWxmLmNvbnRleHQpCisgICAgICAgICAgICBzZXJ2ZXIuZWhsbygpCisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCisKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNtdHBTU0xUZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNtdHBUZXN0LCBTbXRwU1NMVGVzdCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQppbmRleCBlNDBiMjFlLi5jYjEwOTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQpAQCAtMiwxMSArMiwxNCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBfRXhwZWN0ZWRGYWlsdXJlCiAKIGltcG9ydCBlcnJubwogaW1wb3J0IGlvCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0CitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBfdGVzdGNhcGkKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgcXVldWUKQEAgLTE4LDM0ICsyMSwxOSBAQAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogaW1wb3J0IHNpZ25hbAogaW1wb3J0IG1hdGgKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzdHJ1Y3QKIHRyeToKICAgICBpbXBvcnQgZmNudGwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmY250bCA9IEZhbHNlCi0KLWRlZiB0cnlfYWRkcmVzcyhob3N0LCBwb3J0PTAsIGZhbWlseT1zb2NrZXQuQUZfSU5FVCk6Ci0gICAgIiIiVHJ5IHRvIGJpbmQgYSBzb2NrZXQgb24gdGhlIGdpdmVuIGhvc3Q6cG9ydCBhbmQgcmV0dXJuIFRydWUKLSAgICBpZiB0aGF0IGhhcyBiZWVuIHBvc3NpYmxlLiIiIgotICAgIHRyeToKLSAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgIHNvY2suYmluZCgoaG9zdCwgcG9ydCkpCi0gICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIHNvY2tldC5nYWllcnJvcik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGVsc2U6Ci0gICAgICAgIHNvY2suY2xvc2UoKQotICAgICAgICByZXR1cm4gVHJ1ZQotCi1kZWYgbGludXhfdmVyc2lvbigpOgotICAgIHRyeToKLSAgICAgICAgIyBwbGF0Zm9ybS5yZWxlYXNlKCkgaXMgc29tZXRoaW5nIGxpa2UgJzIuNi4zMy43LWRlc2t0b3AtMm1uYicKLSAgICAgICAgdmVyc2lvbl9zdHJpbmcgPSBwbGF0Zm9ybS5yZWxlYXNlKCkuc3BsaXQoJy0nKVswXQotICAgICAgICByZXR1cm4gdHVwbGUobWFwKGludCwgdmVyc2lvbl9zdHJpbmcuc3BsaXQoJy4nKSkpCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIHJldHVybiAwLCAwLCAwCit0cnk6CisgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG11bHRpcHJvY2Vzc2luZyA9IEZhbHNlCiAKIEhPU1QgPSBzdXBwb3J0LkhPU1QKLU1TRyA9ICdNaWNoYWVsIEdpbGZpeCB3YXMgaGVyZVx1MTIzNFxyXG4nLmVuY29kZSgndXRmOCcpICMjIHRlc3QgdW5pY29kZSBzdHJpbmcgYW5kIGNhcnJpYWdlIHJldHVybgotU1VQUE9SVFNfSVBWNiA9IHNvY2tldC5oYXNfaXB2NiBhbmQgdHJ5X2FkZHJlc3MoJzo6MScsIGZhbWlseT1zb2NrZXQuQUZfSU5FVDYpCitNU0cgPSAnTWljaGFlbCBHaWxmaXggd2FzIGhlcmVcdTEyMzRcclxuJy5lbmNvZGUoJ3V0Zi04JykgIyMgdGVzdCB1bmljb2RlIHN0cmluZyBhbmQgY2FycmlhZ2UgcmV0dXJuCiAKIHRyeToKICAgICBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKQEAgLTU0LDYgKzQyLDMzIEBACiAgICAgdGhyZWFkID0gTm9uZQogICAgIHRocmVhZGluZyA9IE5vbmUKIAorZGVmIF9oYXZlX3NvY2tldF9jYW4oKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIENBTiBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBob3N0LiIiIgorICAgIHRyeToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBzb2NrZXQuZXJyb3IsIE9TRXJyb3IpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBzLmNsb3NlKCkKKyAgICByZXR1cm4gVHJ1ZQorCitkZWYgX2hhdmVfc29ja2V0X3JkcygpOgorICAgICIiIkNoZWNrIHdoZXRoZXIgUkRTIHNvY2tldHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgdHJ5OgorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHMuY2xvc2UoKQorICAgIHJldHVybiBUcnVlCisKK0hBVkVfU09DS0VUX0NBTiA9IF9oYXZlX3NvY2tldF9jYW4oKQorCitIQVZFX1NPQ0tFVF9SRFMgPSBfaGF2ZV9zb2NrZXRfcmRzKCkKKworIyBTaXplIGluIGJ5dGVzIG9mIHRoZSBpbnQgdHlwZQorU0laRU9GX0lOVCA9IGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUKKwogY2xhc3MgU29ja2V0VENQVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC03NSw2ICs5MCw2MyBAQAogICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQogICAgICAgICBzZWxmLnNlcnYgPSBOb25lCiAKK2NsYXNzIFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlN1YmNsYXNzIG9mIHVuaXR0ZXN0LlRlc3RDYXNlIHdpdGggdGhyZWFkLXNhZmUgY2xlYW51cCBtZXRob2RzLgorCisgICAgVGhpcyBzdWJjbGFzcyBwcm90ZWN0cyB0aGUgYWRkQ2xlYW51cCgpIGFuZCBkb0NsZWFudXBzKCkgbWV0aG9kcworICAgIHdpdGggYSByZWN1cnNpdmUgbG9jay4KKyAgICAiIiIKKworICAgIGlmIHRocmVhZGluZzoKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfbG9jayA9IHRocmVhZGluZy5STG9jaygpCisKKyAgICAgICAgZGVmIGFkZENsZWFudXAoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fY2xlYW51cF9sb2NrOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmFkZENsZWFudXAoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGRlZiBkb0NsZWFudXBzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfbG9jazoKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5kb0NsZWFudXBzKCphcmdzLCAqKmt3YXJncykKKworY2xhc3MgU29ja2V0Q0FOVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUbyBiZSBhYmxlIHRvIHJ1biB0aGlzIHRlc3QsIGEgYHZjYW4wYCBDQU4gaW50ZXJmYWNlIGNhbiBiZSBjcmVhdGVkIHdpdGgKKyAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgorICAgICMgbW9kcHJvYmUgdmNhbgorICAgICMgaXAgbGluayBhZGQgZGV2IHZjYW4wIHR5cGUgdmNhbgorICAgICMgaWZjb25maWcgdmNhbjAgdXAKKyAgICAiIiIKKyAgICBpbnRlcmZhY2UgPSAndmNhbjAnCisgICAgYnVmc2l6ZSA9IDEyOAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnMuY2xvc2UpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucy5iaW5kKChzZWxmLmludGVyZmFjZSwpKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbmV0d29yayBpbnRlcmZhY2UgYCVzYCBkb2VzIG5vdCBleGlzdCcgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnRlcmZhY2UpCisKKworY2xhc3MgU29ja2V0UkRTVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUbyBiZSBhYmxlIHRvIHJ1biB0aGlzIHRlc3QsIHRoZSBgcmRzYCBrZXJuZWwgbW9kdWxlIG11c3QgYmUgbG9hZGVkOgorICAgICMgbW9kcHJvYmUgcmRzCisgICAgIiIiCisgICAgYnVmc2l6ZSA9IDgxOTIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNlcnYuY2xvc2UpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc2VydikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd1bmFibGUgdG8gYmluZCBSRFMgc29ja2V0JykKKworCiBjbGFzcyBUaHJlYWRhYmxlVGVzdDoKICAgICAiIiJUaHJlYWRhYmxlIFRlc3QgY2xhc3MKIApAQCAtMTMyLDYgKzIwNCw3IEBACiAgICAgICAgIHNlbGYuY2xpZW50X3JlYWR5ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgc2VsZi5kb25lID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgc2VsZi5xdWV1ZSA9IHF1ZXVlLlF1ZXVlKDEpCisgICAgICAgIHNlbGYuc2VydmVyX2NyYXNoZWQgPSBGYWxzZQogCiAgICAgICAgICMgRG8gc29tZSBtdW5naW5nIHRvIHN0YXJ0IHRoZSBjbGllbnQgdGVzdC4KICAgICAgICAgbWV0aG9kbmFtZSA9IHNlbGYuaWQoKQpAQCAtMTQxLDggKzIxNCwxMiBAQAogICAgICAgICBzZWxmLmNsaWVudF90aHJlYWQgPSB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgKICAgICAgICAgICAgIHNlbGYuY2xpZW50UnVuLCAodGVzdF9tZXRob2QsKSkKIAotICAgICAgICBzZWxmLl9fc2V0VXAoKQotICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXJfcmVhZHkuaXNfc2V0KCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX19zZXRVcCgpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX2NyYXNoZWQgPSBUcnVlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfcmVhZHkuc2V0KCkKICAgICAgICAgc2VsZi5jbGllbnRfcmVhZHkud2FpdCgpCiAKQEAgLTE1OCwxMCArMjM1LDE2IEBACiAgICAgICAgIHNlbGYuc2VydmVyX3JlYWR5LndhaXQoKQogICAgICAgICBzZWxmLmNsaWVudFNldFVwKCkKICAgICAgICAgc2VsZi5jbGllbnRfcmVhZHkuc2V0KCkKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfY3Jhc2hlZDoKKyAgICAgICAgICAgIHNlbGYuY2xpZW50VGVhckRvd24oKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHRlc3RfZnVuYywgJ19fY2FsbF9fJyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRlc3RfZnVuYyBtdXN0IGJlIGEgY2FsbGFibGUgZnVuY3Rpb24iKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0ZXN0X2Z1bmMoKQorICAgICAgICBleGNlcHQgX0V4cGVjdGVkRmFpbHVyZToKKyAgICAgICAgICAgICMgV2UgZGVsaWJlcmF0ZWx5IGlnbm9yZSBleHBlY3RlZCBmYWlsdXJlcworICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXQoZSkKICAgICAgICAgZmluYWxseToKQEAgLTIwMiw2ICsyODUsNDggQEAKICAgICAgICAgc2VsZi5jbGkgPSBOb25lCiAgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCiAKK2NsYXNzIFRocmVhZGVkQ0FOU29ja2V0VGVzdChTb2NrZXRDQU5UZXN0LCBUaHJlYWRhYmxlVGVzdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgorICAgICAgICBTb2NrZXRDQU5UZXN0Ll9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9bWV0aG9kTmFtZSkKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuX19pbml0X18oc2VsZikKKworICAgIGRlZiBjbGllbnRTZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jbGkgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY2xpLmJpbmQoKHNlbGYuaW50ZXJmYWNlLCkpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICAjIHNraXBUZXN0IHNob3VsZCBub3QgYmUgY2FsbGVkIGhlcmUsIGFuZCB3aWxsIGJlIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgICAgICMgc2VydmVyIGluc3RlYWQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBjbGllbnRUZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGkuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaSA9IE5vbmUKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKKworY2xhc3MgVGhyZWFkZWRSRFNTb2NrZXRUZXN0KFNvY2tldFJEU1Rlc3QsIFRocmVhZGFibGVUZXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFNvY2tldFJEU1Rlc3QuX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT1tZXRob2ROYW1lKQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5fX2luaXRfXyhzZWxmKQorCisgICAgZGVmIGNsaWVudFNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNsaSA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFJEUyBzb2NrZXRzIG11c3QgYmUgYm91bmQgZXhwbGljaXRseSB0byBzZW5kIG9yIHJlY2VpdmUgZGF0YQorICAgICAgICAgICAgc2VsZi5jbGkuYmluZCgoSE9TVCwgMCkpCisgICAgICAgICAgICBzZWxmLmNsaV9hZGRyID0gc2VsZi5jbGkuZ2V0c29ja25hbWUoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICMgc2tpcFRlc3Qgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaGVyZSwgYW5kIHdpbGwgYmUgY2FsbGVkIGluIHRoZQorICAgICAgICAgICAgIyBzZXJ2ZXIgaW5zdGVhZAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpID0gTm9uZQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQorCiBjbGFzcyBTb2NrZXRDb25uZWN0ZWRUZXN0KFRocmVhZGVkVENQU29ja2V0VGVzdCk6CiAgICAgIiIiU29ja2V0IHRlc3RzIGZvciBjbGllbnQtc2VydmVyIGNvbm5lY3Rpb24uCiAKQEAgLTI1Nyw2ICszODIsMjQzIEBACiAgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCiAKIAorIyBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHVzZWQgYnkgdGhlIHNlbmRtc2coKS9yZWN2bXNnKCkgdGVzdHMuCisjIENvbWJpbmluZywgZm9yIGluc3RhbmNlLCBDb25uZWN0ZWRTdHJlYW1UZXN0TWl4aW4gYW5kIFRDUFRlc3RCYXNlCisjIGdpdmVzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgU29ja2V0Q29ubmVjdGVkVGVzdCwgYnV0IGRpZmZlcmVudAorIyBhZGRyZXNzIGZhbWlsaWVzIGNhbiBiZSB1c2VkLCBhbmQgdGhlIGF0dHJpYnV0ZXMgc2Vydl9hZGRyIGFuZAorIyBjbGlfYWRkciB3aWxsIGJlIHNldCB0byB0aGUgYWRkcmVzc2VzIG9mIHRoZSBlbmRwb2ludHMuCisKK2NsYXNzIFNvY2tldFRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJBIGJhc2UgY2xhc3MgZm9yIHNvY2tldCB0ZXN0cy4KKworICAgIFN1YmNsYXNzZXMgbXVzdCBwcm92aWRlIG1ldGhvZHMgbmV3U29ja2V0KCkgdG8gcmV0dXJuIGEgbmV3IHNvY2tldAorICAgIGFuZCBiaW5kU29jayhzb2NrKSB0byBiaW5kIGl0IHRvIGFuIHVudXNlZCBhZGRyZXNzLgorCisgICAgQ3JlYXRlcyBhIHNvY2tldCBzZWxmLnNlcnYgYW5kIHNldHMgc2VsZi5zZXJ2X2FkZHIgdG8gaXRzIGFkZHJlc3MuCisgICAgIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydiA9IHNlbGYubmV3U29ja2V0KCkKKyAgICAgICAgc2VsZi5iaW5kU2VydmVyKCkKKworICAgIGRlZiBiaW5kU2VydmVyKHNlbGYpOgorICAgICAgICAiIiJCaW5kIHNlcnZlciBzb2NrZXQgYW5kIHNldCBzZWxmLnNlcnZfYWRkciB0byBpdHMgYWRkcmVzcy4iIiIKKyAgICAgICAgc2VsZi5iaW5kU29jayhzZWxmLnNlcnYpCisgICAgICAgIHNlbGYuc2Vydl9hZGRyID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2ID0gTm9uZQorCisKK2NsYXNzIFNvY2tldExpc3RlbmluZ1Rlc3RNaXhpbihTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiTWl4aW4gdG8gbGlzdGVuIG9uIHRoZSBzZXJ2ZXIgc29ja2V0LiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigxKQorCisKK2NsYXNzIFRocmVhZGVkU29ja2V0VGVzdE1peGluKFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UsIFNvY2tldFRlc3RCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkYWJsZVRlc3QpOgorICAgICIiIk1peGluIHRvIGFkZCBjbGllbnQgc29ja2V0IGFuZCBhbGxvdyBjbGllbnQvc2VydmVyIHRlc3RzLgorCisgICAgQ2xpZW50IHNvY2tldCBpcyBzZWxmLmNsaSBhbmQgaXRzIGFkZHJlc3MgaXMgc2VsZi5jbGlfYWRkci4gIFNlZQorICAgIFRocmVhZGFibGVUZXN0IGZvciB1c2FnZSBpbmZvcm1hdGlvbi4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuX19pbml0X18oc2VsZikKKworICAgIGRlZiBjbGllbnRTZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jbGkgPSBzZWxmLm5ld0NsaWVudFNvY2tldCgpCisgICAgICAgIHNlbGYuYmluZENsaWVudCgpCisKKyAgICBkZWYgbmV3Q2xpZW50U29ja2V0KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgc29ja2V0IGZvciB1c2UgYXMgY2xpZW50LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5uZXdTb2NrZXQoKQorCisgICAgZGVmIGJpbmRDbGllbnQoc2VsZik6CisgICAgICAgICIiIkJpbmQgY2xpZW50IHNvY2tldCBhbmQgc2V0IHNlbGYuY2xpX2FkZHIgdG8gaXRzIGFkZHJlc3MuIiIiCisgICAgICAgIHNlbGYuYmluZFNvY2soc2VsZi5jbGkpCisgICAgICAgIHNlbGYuY2xpX2FkZHIgPSBzZWxmLmNsaS5nZXRzb2NrbmFtZSgpCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY2xpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGkgPSBOb25lCisgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCisKKworY2xhc3MgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluKFNvY2tldExpc3RlbmluZ1Rlc3RNaXhpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRlZFNvY2tldFRlc3RNaXhpbik6CisgICAgIiIiTWl4aW4gdG8gYWxsb3cgY2xpZW50L3NlcnZlciBzdHJlYW0gdGVzdHMgd2l0aCBjb25uZWN0ZWQgY2xpZW50LgorCisgICAgU2VydmVyJ3Mgc29ja2V0IHJlcHJlc2VudGluZyBjb25uZWN0aW9uIHRvIGNsaWVudCBpcyBzZWxmLmNsaV9jb25uCisgICAgYW5kIGNsaWVudCdzIGNvbm5lY3Rpb24gdG8gc2VydmVyIGlzIHNlbGYuc2Vydl9jb25uLiAgKEJhc2VkIG9uCisgICAgU29ja2V0Q29ubmVjdGVkVGVzdC4pCisgICAgIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICAjIEluZGljYXRlIGV4cGxpY2l0bHkgd2UncmUgcmVhZHkgZm9yIHRoZSBjbGllbnQgdGhyZWFkIHRvCisgICAgICAgICMgcHJvY2VlZCBhbmQgdGhlbiBwZXJmb3JtIHRoZSBibG9ja2luZyBjYWxsIHRvIGFjY2VwdAorICAgICAgICBzZWxmLnNlcnZlckV4cGxpY2l0UmVhZHkoKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2LmFjY2VwdCgpCisgICAgICAgIHNlbGYuY2xpX2Nvbm4gPSBjb25uCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY2xpX2Nvbm4uY2xvc2UoKQorICAgICAgICBzZWxmLmNsaV9jb25uID0gTm9uZQorICAgICAgICBzdXBlcigpLnRlYXJEb3duKCkKKworICAgIGRlZiBjbGllbnRTZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5jbGllbnRTZXRVcCgpCisgICAgICAgIHNlbGYuY2xpLmNvbm5lY3Qoc2VsZi5zZXJ2X2FkZHIpCisgICAgICAgIHNlbGYuc2Vydl9jb25uID0gc2VsZi5jbGkKKworICAgIGRlZiBjbGllbnRUZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4uY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZfY29ubiA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS5jbGllbnRUZWFyRG93bigpCisKKworY2xhc3MgVW5peFNvY2tldFRlc3RCYXNlKFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVbml4LWRvbWFpbiBzb2NrZXQgdGVzdHMuIiIiCisKKyAgICAjIFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgZmlsZSBkZXNjcmlwdG9yIHBhc3NpbmcgdGVzdHMsIHNvIHdlCisgICAgIyBjcmVhdGUgdGhlIHNvY2tldHMgaW4gYSBwcml2YXRlIGRpcmVjdG9yeSBzbyB0aGF0IG90aGVyIHVzZXJzCisgICAgIyBjYW4ndCBzZW5kIGFueXRoaW5nIHRoYXQgbWlnaHQgYmUgcHJvYmxlbWF0aWMgZm9yIGEgcHJpdmlsZWdlZAorICAgICMgdXNlciBydW5uaW5nIHRoZSB0ZXN0cy4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5kaXJfcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3Mucm1kaXIsIHNlbGYuZGlyX3BhdGgpCisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgZGVmIGJpbmRTb2NrKHNlbGYsIHNvY2spOgorICAgICAgICBwYXRoID0gdGVtcGZpbGUubWt0ZW1wKGRpcj1zZWxmLmRpcl9wYXRoKQorICAgICAgICBzb2NrLmJpbmQocGF0aCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorCitjbGFzcyBVbml4U3RyZWFtQmFzZShVbml4U29ja2V0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFVuaXgtZG9tYWluIFNPQ0tfU1RSRUFNIHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworCitjbGFzcyBJbmV0VGVzdEJhc2UoU29ja2V0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIElQdjQgc29ja2V0IHRlc3RzLiIiIgorCisgICAgaG9zdCA9IEhPU1QKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydl9hZGRyWzFdCisKKyAgICBkZWYgYmluZFNvY2soc2VsZiwgc29jayk6CisgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHNvY2ssIGhvc3Q9c2VsZi5ob3N0KQorCitjbGFzcyBUQ1BUZXN0QmFzZShJbmV0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFRDUC1vdmVyLUlQdjQgdGVzdHMuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCitjbGFzcyBVRFBUZXN0QmFzZShJbmV0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFVEUC1vdmVyLUlQdjQgdGVzdHMuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pCisKK2NsYXNzIFNDVFBTdHJlYW1CYXNlKEluZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgU0NUUCB0ZXN0cyBpbiBvbmUtdG8tb25lIChTT0NLX1NUUkVBTSkgbW9kZS4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RPX1NDVFApCisKKworY2xhc3MgSW5ldDZUZXN0QmFzZShJbmV0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIElQdjYgc29ja2V0IHRlc3RzLiIiIgorCisgICAgIyBEb24ndCB1c2UgImxvY2FsaG9zdCIgaGVyZSAtIGl0IG1heSBub3QgaGF2ZSBhbiBJUHY2IGFkZHJlc3MKKyAgICAjIGFzc2lnbmVkIHRvIGl0IGJ5IGRlZmF1bHQgKGUuZy4gaW4gL2V0Yy9ob3N0cyksIGFuZCBpZiBzb21lb25lCisgICAgIyBoYXMgYXNzaWduZWQgaXQgYW4gSVB2NC1tYXBwZWQgYWRkcmVzcywgdGhlbiBpdCdzIHVubGlrZWx5IHRvCisgICAgIyB3b3JrIHdpdGggdGhlIGZ1bGwgSVB2NiBBUEkuCisgICAgaG9zdCA9ICI6OjEiCisKK2NsYXNzIFVEUDZUZXN0QmFzZShJbmV0NlRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVRFAtb3Zlci1JUHY2IHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQuU09DS19ER1JBTSkKKworCisjIFRlc3Qtc2tpcHBpbmcgZGVjb3JhdG9ycyBmb3IgdXNlIHdpdGggVGhyZWFkYWJsZVRlc3QuCisKK2RlZiBza2lwV2l0aENsaWVudElmKGNvbmRpdGlvbiwgcmVhc29uKToKKyAgICAiIiJTa2lwIGRlY29yYXRlZCB0ZXN0IGlmIGNvbmRpdGlvbiBpcyB0cnVlLCBhZGQgY2xpZW50X3NraXAgZGVjb3JhdG9yLgorCisgICAgSWYgdGhlIGRlY29yYXRlZCBvYmplY3QgaXMgbm90IGEgY2xhc3MsIHNldHMgaXRzIGF0dHJpYnV0ZQorICAgICJjbGllbnRfc2tpcCIgdG8gYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCByZXR1cm4gYW4gZW1wdHkgZnVuY3Rpb24KKyAgICBpZiB0aGUgdGVzdCBpcyB0byBiZSBza2lwcGVkLCBvciB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaWYgaXQgaXMKKyAgICBub3QuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIHJ1bm5pbmcgdGhlIGNsaWVudCBwYXJ0IG9mIGEKKyAgICBza2lwcGVkIHRlc3Qgd2hlbiB1c2luZyBUaHJlYWRhYmxlVGVzdC4KKyAgICAiIiIKKyAgICBkZWYgY2xpZW50X3Bhc3MoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcGFzcworICAgIGRlZiBza2lwZGVjKG9iaik6CisgICAgICAgIHJldHZhbCA9IHVuaXR0ZXN0LnNraXAocmVhc29uKShvYmopCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgdHlwZSk6CisgICAgICAgICAgICByZXR2YWwuY2xpZW50X3NraXAgPSBsYW1iZGEgZjogY2xpZW50X3Bhc3MKKyAgICAgICAgcmV0dXJuIHJldHZhbAorICAgIGRlZiBub3NraXBkZWMob2JqKToKKyAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKG9iaiwgdHlwZSkgb3IgaGFzYXR0cihvYmosICJjbGllbnRfc2tpcCIpKToKKyAgICAgICAgICAgIG9iai5jbGllbnRfc2tpcCA9IGxhbWJkYSBmOiBmCisgICAgICAgIHJldHVybiBvYmoKKyAgICByZXR1cm4gc2tpcGRlYyBpZiBjb25kaXRpb24gZWxzZSBub3NraXBkZWMKKworCitkZWYgcmVxdWlyZUF0dHJzKG9iaiwgKmF0dHJpYnV0ZXMpOgorICAgICIiIlNraXAgZGVjb3JhdGVkIHRlc3QgaWYgb2JqIGlzIG1pc3NpbmcgYW55IG9mIHRoZSBnaXZlbiBhdHRyaWJ1dGVzLgorCisgICAgU2V0cyBjbGllbnRfc2tpcCBhdHRyaWJ1dGUgYXMgc2tpcFdpdGhDbGllbnRJZigpIGRvZXMuCisgICAgIiIiCisgICAgbWlzc2luZyA9IFtuYW1lIGZvciBuYW1lIGluIGF0dHJpYnV0ZXMgaWYgbm90IGhhc2F0dHIob2JqLCBuYW1lKV0KKyAgICByZXR1cm4gc2tpcFdpdGhDbGllbnRJZigKKyAgICAgICAgbWlzc2luZywgImRvbid0IGhhdmUgIiArICIsICIuam9pbihuYW1lIGZvciBuYW1lIGluIG1pc3NpbmcpKQorCisKK2RlZiByZXF1aXJlU29ja2V0KCphcmdzKToKKyAgICAiIiJTa2lwIGRlY29yYXRlZCB0ZXN0IGlmIGEgc29ja2V0IGNhbm5vdCBiZSBjcmVhdGVkIHdpdGggZ2l2ZW4gYXJndW1lbnRzLgorCisgICAgV2hlbiBhbiBhcmd1bWVudCBpcyBnaXZlbiBhcyBhIHN0cmluZywgd2lsbCB1c2UgdGhlIHZhbHVlIG9mIHRoYXQKKyAgICBhdHRyaWJ1dGUgb2YgdGhlIHNvY2tldCBtb2R1bGUsIG9yIHNraXAgdGhlIHRlc3QgaWYgaXQgZG9lc24ndAorICAgIGV4aXN0LiAgU2V0cyBjbGllbnRfc2tpcCBhdHRyaWJ1dGUgYXMgc2tpcFdpdGhDbGllbnRJZigpIGRvZXMuCisgICAgIiIiCisgICAgZXJyID0gTm9uZQorICAgIG1pc3NpbmcgPSBbb2JqIGZvciBvYmogaW4gYXJncyBpZgorICAgICAgICAgICAgICAgaXNpbnN0YW5jZShvYmosIHN0cikgYW5kIG5vdCBoYXNhdHRyKHNvY2tldCwgb2JqKV0KKyAgICBpZiBtaXNzaW5nOgorICAgICAgICBlcnIgPSAiZG9uJ3QgaGF2ZSAiICsgIiwgIi5qb2luKG5hbWUgZm9yIG5hbWUgaW4gbWlzc2luZykKKyAgICBlbHNlOgorICAgICAgICBjYWxsYXJncyA9IFtnZXRhdHRyKHNvY2tldCwgb2JqKSBpZiBpc2luc3RhbmNlKG9iaiwgc3RyKSBlbHNlIG9iagorICAgICAgICAgICAgICAgICAgICBmb3Igb2JqIGluIGFyZ3NdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCpjYWxsYXJncykKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgIyBYWFg6IGNoZWNrIGVycm5vPworICAgICAgICAgICAgZXJyID0gc3RyKGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICByZXR1cm4gc2tpcFdpdGhDbGllbnRJZigKKyAgICAgICAgZXJyIGlzIG5vdCBOb25lLAorICAgICAgICAiY2FuJ3QgY3JlYXRlIHNvY2tldCh7MH0pOiB7MX0iLmZvcm1hdCgKKyAgICAgICAgICAgICIsICIuam9pbihzdHIobykgZm9yIG8gaW4gYXJncyksIGVycikpCisKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIEJlZ2luIFRlc3RzCiAKQEAgLTI4MiwxOCArNjQ0LDEzIEBACiAKICAgICBkZWYgdGVzdFNvY2tldEVycm9yKHNlbGYpOgogICAgICAgICAjIFRlc3Rpbmcgc29ja2V0IG1vZHVsZSBleGNlcHRpb25zCi0gICAgICAgIGRlZiByYWlzZV9lcnJvcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBtc2cgPSAiRXJyb3IgcmFpc2luZyBzb2NrZXQgZXhjZXB0aW9uICglcykuIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuZXJyb3InKToKICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcgotICAgICAgICBkZWYgcmFpc2VfaGVycm9yKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBtc2c9bXNnICUgJ3NvY2tldC5oZXJyb3InKToKICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5oZXJyb3IKLSAgICAgICAgZGVmIHJhaXNlX2dhaWVycm9yKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBtc2c9bXNnICUgJ3NvY2tldC5nYWllcnJvcicpOgogICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmdhaWVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgcmFpc2VfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgcmFpc2luZyBzb2NrZXQgZXhjZXB0aW9uLiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgcmFpc2VfaGVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbi4iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHJhaXNlX2dhaWVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbi4iKQogCiAgICAgZGVmIHRlc3RTZW5kdG9FcnJvcnMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyB0aGF0IHNlbmR0byBkb2Vucyd0IG1hc2tzIGZhaWx1cmVzLiBTZWUgIzEwMTY5LgpAQCAtMzY5LDYgKzcyNiw1MiBAQAogICAgICAgICBpZiBub3QgZnFobiBpbiBhbGxfaG9zdF9uYW1lczoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXJyb3IgdGVzdGluZyBob3N0IHJlc29sdXRpb24gbWVjaGFuaXNtcy4gKGZxZG46ICVzLCBhbGw6ICVzKSIgJSAoZnFobiwgcmVwcihhbGxfaG9zdF9uYW1lcykpKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdzZXRob3N0bmFtZScpLCAidGVzdCBuZWVkcyBzb2NrZXQuc2V0aG9zdG5hbWUoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdnZXRob3N0bmFtZScpLCAidGVzdCBuZWVkcyBzb2NrZXQuZ2V0aG9zdG5hbWUoKSIpCisgICAgZGVmIHRlc3Rfc2V0aG9zdG5hbWUoc2VsZik6CisgICAgICAgIG9sZGhuID0gc29ja2V0LmdldGhvc3RuYW1lKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKCduZXcnKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQRVJNOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRlc3Qgc2hvdWxkIGJlIHJ1biBhcyByb290IikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBydW5uaW5nIHRlc3QgYXMgcm9vdCEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ja2V0LmdldGhvc3RuYW1lKCksICduZXcnKQorICAgICAgICAgICAgIyBTaG91bGQgd29yayB3aXRoIGJ5dGVzIG9iamVjdHMgdG9vCisgICAgICAgICAgICBzb2NrZXQuc2V0aG9zdG5hbWUoYidiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrZXQuZ2V0aG9zdG5hbWUoKSwgJ2JhcicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzb2NrZXQuc2V0aG9zdG5hbWUob2xkaG4pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ2lmX25hbWVpbmRleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuaWZfbmFtZWluZGV4KCkgbm90IGF2YWlsYWJsZS4nKQorICAgIGRlZiB0ZXN0SW50ZXJmYWNlTmFtZUluZGV4KHNlbGYpOgorICAgICAgICBpbnRlcmZhY2VzID0gc29ja2V0LmlmX25hbWVpbmRleCgpCisgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBpbnRlcmZhY2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZGV4LCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobmFtZSwgc3RyKQorICAgICAgICAgICAgIyBpbnRlcmZhY2UgaW5kaWNlcyBhcmUgbm9uLXplcm8gaW50ZWdlcnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihpbmRleCwgMCkKKyAgICAgICAgICAgIF9pbmRleCA9IHNvY2tldC5pZl9uYW1ldG9pbmRleChuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKF9pbmRleCwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRleCwgX2luZGV4KQorICAgICAgICAgICAgX25hbWUgPSBzb2NrZXQuaWZfaW5kZXh0b25hbWUoaW5kZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoX25hbWUsIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgX25hbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ2lmX25hbWVpbmRleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuaWZfbmFtZWluZGV4KCkgbm90IGF2YWlsYWJsZS4nKQorICAgIGRlZiB0ZXN0SW52YWxpZEludGVyZmFjZU5hbWVJbmRleChzZWxmKToKKyAgICAgICAgIyB0ZXN0IG5vbmV4aXN0ZW50IGludGVyZmFjZSBpbmRleC9uYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc29ja2V0LmlmX2luZGV4dG9uYW1lLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNvY2tldC5pZl9uYW1ldG9pbmRleCwgJ19ERUFEQkVFRicpCisgICAgICAgICMgdGVzdCB3aXRoIGludmFsaWQgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc29ja2V0LmlmX25hbWV0b2luZGV4LCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNvY2tldC5pZl9pbmRleHRvbmFtZSwgJ19ERUFEQkVFRicpCisKICAgICBkZWYgdGVzdFJlZkNvdW50R2V0TmFtZUluZm8oc2VsZik6CiAgICAgICAgICMgVGVzdGluZyByZWZlcmVuY2UgY291bnQgZm9yIGdldG5hbWVpbmZvCiAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAiZ2V0cmVmY291bnQiKToKQEAgLTQyMSwxMCArODI0LDggQEAKICAgICAgICAgIyBGaW5kIG9uZSBzZXJ2aWNlIHRoYXQgZXhpc3RzLCB0aGVuIGNoZWNrIGFsbCB0aGUgcmVsYXRlZCBpbnRlcmZhY2VzLgogICAgICAgICAjIEkndmUgb3JkZXJlZCB0aGlzIGJ5IHByb3RvY29scyB0aGF0IGhhdmUgYm90aCBhIHRjcCBhbmQgdWRwCiAgICAgICAgICMgcHJvdG9jb2wsIGF0IGxlYXN0IGZvciBtb2Rlcm4gTGludXhlcy4KLSAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpIG9yCi0gICAgICAgICAgICBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpIG9yCi0gICAgICAgICAgICBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJykgb3IKLSAgICAgICAgICAgIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyk6CisgICAgICAgIGlmIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2ZyZWVic2QnLCAnbmV0YnNkJykpCisgICAgICAgICAgICBvciBzeXMucGxhdGZvcm0gaW4gKCdsaW51eCcsICdkYXJ3aW4nKSk6CiAgICAgICAgICAgICAjIGF2b2lkIHRoZSAnZWNobycgc2VydmljZSBvbiB0aGlzIHBsYXRmb3JtLCBhcyB0aGVyZSBpcyBhbgogICAgICAgICAgICAgIyBhc3N1bXB0aW9uIGJyZWFraW5nIG5vbi1zdGFuZGFyZCBwb3J0L3Byb3RvY29sIGVudHJ5CiAgICAgICAgICAgICBzZXJ2aWNlcyA9ICgnZGF5dGltZScsICdxb3RkJywgJ2RvbWFpbicpCkBAIC03MTksNyArMTEyMCw3IEBACiAgICAgICAgIHNvY2tldC5nZXRhZGRyaW5mbygnbG9jYWxob3N0JywgODApCiAgICAgICAgIHNvY2tldC5nZXRhZGRyaW5mbygnMTI3LjAuMC4xJywgODApCiAgICAgICAgIHNvY2tldC5nZXRhZGRyaW5mbyhOb25lLCA4MCkKLSAgICAgICAgaWYgU1VQUE9SVFNfSVBWNjoKKyAgICAgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6CiAgICAgICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJzo6MScsIDgwKQogICAgICAgICAjIHBvcnQgY2FuIGJlIGEgc3RyaW5nIHNlcnZpY2UgbmFtZSBzdWNoIGFzICJodHRwIiwgYSBudW1lcmljCiAgICAgICAgICMgcG9ydCBudW1iZXIgb3IgTm9uZQpAQCAtNzcyLDcgKzExNzMsMTIgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29yayBpcyBub3QgZW5hYmxlZCcpCiAgICAgZGVmIHRlc3RfaWRuYShzZWxmKToKLSAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCisgICAgICAgICMgQ2hlY2sgZm9yIGludGVybmV0IGFjY2VzcyBiZWZvcmUgcnVubmluZyB0ZXN0IChpc3N1ZSAjMTI4MDQpLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrZXQuZ2V0aG9zdGJ5bmFtZSgncHl0aG9uLm9yZycpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZ2FpZXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gc29ja2V0LkVBSV9OT0RBVEE6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnaW50ZXJuZXQgYWNjZXNzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQogICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgYmUgc3VjY2Vzc2Z1bAogICAgICAgICBzb2NrZXQuZ2V0aG9zdGJ5bmFtZSgn0LjRgdC/0YvRgtCw0L3QuNC1LnB5dGhvbi5vcmcnKQogICAgICAgICBzb2NrZXQuZ2V0aG9zdGJ5bmFtZV9leCgn0LjRgdC/0YvRgtCw0L3QuNC1LnB5dGhvbi5vcmcnKQpAQCAtODUwLDE0ICsxMjU2LDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmcC53cml0YWJsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZwLnNlZWthYmxlKQogCi0gICAgZGVmIHRlc3RMaXN0ZW5CYWNrbG9nMChzZWxmKToKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgZm9yIHByb3RvY29sIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIHNvY2ssIHByb3RvY29sKQorCisgICAgZGVmIHRlc3RfbGlzdGVuX2JhY2tsb2cwKHNlbGYpOgogICAgICAgICBzcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIHNydi5iaW5kKChIT1NULCAwKSkKICAgICAgICAgIyBiYWNrbG9nID0gMAogICAgICAgICBzcnYubGlzdGVuKDApCiAgICAgICAgIHNydi5jbG9zZSgpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTVVBQT1JUU19JUFY2LCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9mbG93aW5mbyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LmdldG5hbWVpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJzo6MScsMCwgMHhmZmZmZmZmZiksIDApCkBAIC04NjUsNiArMTI3NywyMjIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHMuYmluZCwgKCc6OjEnLCAwLCAtMTApKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBVkVfU09DS0VUX0NBTiwgJ1NvY2tldENhbiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBCYXNpY0NBTlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RDcnVjaWFsQ29uc3RhbnRzKHNlbGYpOgorICAgICAgICBzb2NrZXQuQUZfQ0FOCisgICAgICAgIHNvY2tldC5QRl9DQU4KKyAgICAgICAgc29ja2V0LkNBTl9SQVcKKworICAgIGRlZiB0ZXN0Q3JlYXRlU29ja2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0QmluZEFueShzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBzLmJpbmQoKCcnLCApKQorCisgICAgZGVmIHRlc3RUb29Mb25nSW50ZXJmYWNlTmFtZShzZWxmKToKKyAgICAgICAgIyBtb3N0IHN5c3RlbXMgbGltaXQgSUZOQU1TSVogdG8gMTYsIHRha2UgMTAyNCB0byBiZSBzdXJlCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQuZXJyb3IsICdpbnRlcmZhY2UgbmFtZSB0b28gbG9uZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYmluZCwgKCd4JyAqIDEwMjQsKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAiQ0FOX1JBV19MT09QQkFDSyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuQ0FOX1JBV19MT09QQkFDSyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RMb29wYmFjayhzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBmb3IgbG9vcGJhY2sgaW4gKDAsIDEpOgorICAgICAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0xPT1BCQUNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wYmFjaykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvb3BiYWNrLAorICAgICAgICAgICAgICAgICAgICBzLmdldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19MT09QQkFDSykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgIkNBTl9SQVdfRklMVEVSIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5DQU5fUkFXX0ZJTFRFUiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RGaWx0ZXIoc2VsZik6CisgICAgICAgIGNhbl9pZCwgY2FuX21hc2sgPSAweDIwMCwgMHg3MDAKKyAgICAgICAgY2FuX2ZpbHRlciA9IHN0cnVjdC5wYWNrKCI9SUkiLCBjYW5faWQsIGNhbl9tYXNrKQorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgY2FuX2ZpbHRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FuX2ZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgcy5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfRklMVEVSLCA4KSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIENBTlRlc3QoVGhyZWFkZWRDQU5Tb2NrZXRUZXN0KToKKworICAgICIiIlRoZSBDQU4gZnJhbWUgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gPGxpbnV4L2Nhbi5oPjoKKworICAgIHN0cnVjdCBjYW5fZnJhbWUgeworICAgICAgICBjYW5pZF90IGNhbl9pZDsgIC8qIDMyIGJpdCBDQU5fSUQgKyBFRkYvUlRSL0VSUiBmbGFncyAqLworICAgICAgICBfX3U4ICAgIGNhbl9kbGM7IC8qIGRhdGEgbGVuZ3RoIGNvZGU6IDAgLi4gOCAqLworICAgICAgICBfX3U4ICAgIGRhdGFbOF0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpOworICAgIH07CisgICAgIiIiCisgICAgY2FuX2ZyYW1lX2ZtdCA9ICI9SUIzeDhzIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKKyAgICAgICAgVGhyZWFkZWRDQU5Tb2NrZXRUZXN0Ll9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9bWV0aG9kTmFtZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBidWlsZF9jYW5fZnJhbWUoY2xzLCBjYW5faWQsIGRhdGEpOgorICAgICAgICAiIiJCdWlsZCBhIENBTiBmcmFtZS4iIiIKKyAgICAgICAgY2FuX2RsYyA9IGxlbihkYXRhKQorICAgICAgICBkYXRhID0gZGF0YS5sanVzdCg4LCBiJ1x4MDAnKQorICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soY2xzLmNhbl9mcmFtZV9mbXQsIGNhbl9pZCwgY2FuX2RsYywgZGF0YSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkaXNzZWN0X2Nhbl9mcmFtZShjbHMsIGZyYW1lKToKKyAgICAgICAgIiIiRGlzc2VjdCBhIENBTiBmcmFtZS4iIiIKKyAgICAgICAgY2FuX2lkLCBjYW5fZGxjLCBkYXRhID0gc3RydWN0LnVucGFjayhjbHMuY2FuX2ZyYW1lX2ZtdCwgZnJhbWUpCisgICAgICAgIHJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkKKworICAgIGRlZiB0ZXN0U2VuZEZyYW1lKHNlbGYpOgorICAgICAgICBjZiwgYWRkciA9IHNlbGYucy5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jZiwgY2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkclswXSwgc2VsZi5pbnRlcmZhY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkclsxXSwgc29ja2V0LkFGX0NBTikKKworICAgIGRlZiBfdGVzdFNlbmRGcmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5jZiA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDAsIGInXHgwMVx4MDJceDAzXHgwNFx4MDUnKQorICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YpCisKKyAgICBkZWYgdGVzdFNlbmRNYXhGcmFtZShzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YsIGNmKQorCisgICAgZGVmIF90ZXN0U2VuZE1heEZyYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmNmID0gc2VsZi5idWlsZF9jYW5fZnJhbWUoMHgwMCwgYidceDA3JyAqIDgpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZikKKworICAgIGRlZiB0ZXN0U2VuZE11bHRpRnJhbWVzKHNlbGYpOgorICAgICAgICBjZiwgYWRkciA9IHNlbGYucy5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jZjEsIGNmKQorCisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5zLnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNmMiwgY2YpCisKKyAgICBkZWYgX3Rlc3RTZW5kTXVsdGlGcmFtZXMoc2VsZik6CisgICAgICAgIHNlbGYuY2YxID0gc2VsZi5idWlsZF9jYW5fZnJhbWUoMHgwNywgYidceDQ0XHgzM1x4MjJceDExJykKKyAgICAgICAgc2VsZi5jbGkuc2VuZChzZWxmLmNmMSkKKworICAgICAgICBzZWxmLmNmMiA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MTIsIGInXHg5OVx4MjJceDMzJykKKyAgICAgICAgc2VsZi5jbGkuc2VuZChzZWxmLmNmMikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9SRFMsICdSRFMgc29ja2V0cyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBCYXNpY1JEU1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RDcnVjaWFsQ29uc3RhbnRzKHNlbGYpOgorICAgICAgICBzb2NrZXQuQUZfUkRTCisgICAgICAgIHNvY2tldC5QRl9SRFMKKworICAgIGRlZiB0ZXN0Q3JlYXRlU29ja2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKSBhcyBzOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RTb2NrZXRCdWZmZXJTaXplKHNlbGYpOgorICAgICAgICBidWZzaXplID0gMTYzODQKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkgYXMgczoKKyAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JDVkJVRiwgYnVmc2l6ZSkKKyAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1NOREJVRiwgYnVmc2l6ZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9SRFMsICdSRFMgc29ja2V0cyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUkRTVGVzdChUaHJlYWRlZFJEU1NvY2tldFRlc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKKyAgICAgICAgVGhyZWFkZWRSRFNTb2NrZXRUZXN0Ll9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9bWV0aG9kTmFtZSkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKKworICAgIGRlZiB0ZXN0U2VuZEFuZFJlY3Yoc2VsZik6CisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaV9hZGRyLCBhZGRyKQorCisgICAgZGVmIF90ZXN0U2VuZEFuZFJlY3Yoc2VsZik6CisgICAgICAgIHNlbGYuZGF0YSA9IGInc3BhbScKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YSwgMCwgKEhPU1QsIHNlbGYucG9ydCkpCisKKyAgICBkZWYgdGVzdFBlZWsoc2VsZik6CisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplLCBzb2NrZXQuTVNHX1BFRUspCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgX3Rlc3RQZWVrKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGEgPSBiJ3NwYW0nCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAncmVjdm1zZycpCisgICAgZGVmIHRlc3RTZW5kQW5kUmVjdk1zZyhzZWxmKToKKyAgICAgICAgZGF0YSwgYW5jZGF0YSwgbXNnX2ZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Ztc2coc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgJ3NlbmRtc2cnKQorICAgIGRlZiBfdGVzdFNlbmRBbmRSZWN2TXNnKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGEgPSBiJ2hlbGxvICcgKiAxMAorICAgICAgICBzZWxmLmNsaS5zZW5kbXNnKFtzZWxmLmRhdGFdLCAoKSwgMCwgKEhPU1QsIHNlbGYucG9ydCkpCisKKyAgICBkZWYgdGVzdFNlbmRBbmRSZWN2TXVsdGkoc2VsZik6CisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YTEsIGRhdGEpCisKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhMiwgZGF0YSkKKworICAgIGRlZiBfdGVzdFNlbmRBbmRSZWN2TXVsdGkoc2VsZik6CisgICAgICAgIHNlbGYuZGF0YTEgPSBiJ2JhY29uJworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhMSwgMCwgKEhPU1QsIHNlbGYucG9ydCkpCisKKyAgICAgICAgc2VsZi5kYXRhMiA9IGInZWdnJworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhMiwgMCwgKEhPU1QsIHNlbGYucG9ydCkpCisKKyAgICBkZWYgdGVzdFNlbGVjdChzZWxmKToKKyAgICAgICAgciwgdywgeCA9IHNlbGVjdC5zZWxlY3QoW3NlbGYuc2Vydl0sIFtdLCBbXSwgMy4wKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuc2VydiwgcikKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorCisgICAgZGVmIF90ZXN0U2VsZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmRhdGEgPSBiJ3NlbGVjdCcKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YSwgMCwgKEhPU1QsIHNlbGYucG9ydCkpCisKKyAgICBkZWYgdGVzdENvbmdlc3Rpb24oc2VsZik6CisgICAgICAgICMgd2FpdCB1bnRpbCB0aGUgc2VuZGVyIGlzIGRvbmUKKyAgICAgICAgc2VsZi5ldnQud2FpdCgpCisKKyAgICBkZWYgX3Rlc3RDb25nZXN0aW9uKHNlbGYpOgorICAgICAgICAjIHRlc3QgdGhlIGJlaGF2aW9yIGluIGNhc2Ugb2YgY29uZ2VzdGlvbgorICAgICAgICBzZWxmLmRhdGEgPSBiJ2ZpbGwnCisgICAgICAgIHNlbGYuY2xpLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHRyeSB0byBsb3dlciB0aGUgcmVjZWl2ZXIncyBzb2NrZXQgYnVmZmVyIHNpemUKKyAgICAgICAgICAgIHNlbGYuY2xpLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SQ1ZCVUYsIDE2Mzg0KQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIGZpbGwgdGhlIHJlY2VpdmVyJ3Mgc29ja2V0IGJ1ZmZlcgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAjIHNpZ25hbCB0aGUgcmVjZWl2ZXIgd2UncmUgZG9uZQorICAgICAgICAgICAgICAgIHNlbGYuZXZ0LnNldCgpCisgICAgICAgICMgc2VuZHRvKCkgc2hvdWxkIGhhdmUgZmFpbGVkIHdpdGggRU5PQlVGUworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PQlVGUykKKyAgICAgICAgIyBhbmQgd2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb25nZXN0aW9uIG5vdGlmaWNhdGlvbiB0aHJvdWdoIHBvbGwKKyAgICAgICAgciwgdywgeCA9IHNlbGVjdC5zZWxlY3QoW3NlbGYuc2Vydl0sIFtdLCBbXSwgMy4wKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuc2VydiwgcikKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgQmFzaWNUQ1BUZXN0KFNvY2tldENvbm5lY3RlZFRlc3QpOgogCkBAIC0xMDA0LDYgKzE2MzIsMTg1MiBAQAogICAgIGRlZiBfdGVzdFJlY3ZGcm9tTmVnYXRpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY2xpLnNlbmR0byhNU0csIDAsIChIT1NULCBzZWxmLnBvcnQpKQogCisjIFRlc3RzIGZvciB0aGUgc2VuZG1zZygpL3JlY3Ztc2coKSBpbnRlcmZhY2UuICBXaGVyZSBwb3NzaWJsZSwgdGhlCisjIHNhbWUgdGVzdCBjb2RlIGlzIHVzZWQgd2l0aCBkaWZmZXJlbnQgZmFtaWxpZXMgYW5kIHR5cGVzIG9mIHNvY2tldAorIyAoZS5nLiBzdHJlYW0sIGRhdGFncmFtKSwgYW5kIHRlc3RzIHVzaW5nIHJlY3Ztc2coKSBhcmUgcmVwZWF0ZWQKKyMgdXNpbmcgcmVjdm1zZ19pbnRvKCkuCisjCisjIFRoZSBnZW5lcmljIHRlc3QgY2xhc3NlcyBzdWNoIGFzIFNlbmRtc2dUZXN0cyBhbmQKKyMgUmVjdm1zZ0dlbmVyaWNUZXN0cyBpbmhlcml0IGZyb20gU2VuZHJlY3Ztc2dCYXNlIGFuZCBleHBlY3QgdG8gYmUKKyMgc3VwcGxpZWQgd2l0aCBzb2NrZXRzIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVwcmVzZW50aW5nIHRoZQorIyBjbGllbnQncyBhbmQgdGhlIHNlcnZlcidzIGVuZCBvZiB0aGUgY29ubmVjdGlvbiByZXNwZWN0aXZlbHksIGFuZAorIyBhdHRyaWJ1dGVzIGNsaV9hZGRyIGFuZCBzZXJ2X2FkZHIgaG9sZGluZyB0aGVpciAobnVtZXJpYyB3aGVyZQorIyBhcHByb3ByaWF0ZSkgYWRkcmVzc2VzLgorIworIyBUaGUgZmluYWwgY29uY3JldGUgdGVzdCBjbGFzc2VzIGNvbWJpbmUgdGhlc2Ugd2l0aCBzdWJjbGFzc2VzIG9mCisjIFNvY2tldFRlc3RCYXNlIHdoaWNoIHNldCB1cCBjbGllbnQgYW5kIHNlcnZlciBzb2NrZXRzIG9mIGEgc3BlY2lmaWMKKyMgdHlwZSwgYW5kIHdpdGggc3ViY2xhc3NlcyBvZiBTZW5kcmVjdm1zZ0Jhc2Ugc3VjaCBhcworIyBTZW5kcmVjdm1zZ0RncmFtQmFzZSBhbmQgU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlIHdoaWNoIG1hcCB0aGVzZQorIyBzb2NrZXRzIHRvIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgYW5kIG92ZXJyaWRlIHRoZSBtZXRob2RzIGFuZAorIyBhdHRyaWJ1dGVzIG9mIFNlbmRyZWN2bXNnQmFzZSB0byBmaWxsIGluIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyBpZgorIyBuZWVkZWQgd2hlbiBzZW5kaW5nLCBjaGVjayBmb3Igc3BlY2lmaWMgZmxhZ3MgaW4gbXNnX2ZsYWdzLCBldGMuCisjCisjIFJlY3Ztc2dJbnRvTWl4aW4gcHJvdmlkZXMgYSB2ZXJzaW9uIG9mIGRvUmVjdm1zZygpIGltcGxlbWVudGVkIHVzaW5nCisjIHJlY3Ztc2dfaW50bygpLgorCisjIFhYWDogbGlrZSB0aGUgb3RoZXIgZGF0YWdyYW0gKFVEUCkgdGVzdHMgaW4gdGhpcyBtb2R1bGUsIHRoZSBjb2RlCisjIGhlcmUgYXNzdW1lcyB0aGF0IGRhdGFncmFtIGRlbGl2ZXJ5IG9uIHRoZSBsb2NhbCBtYWNoaW5lIHdpbGwgYmUKKyMgcmVsaWFibGUuCisKK2NsYXNzIFNlbmRyZWN2bXNnQmFzZShUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgZm9yIHNlbmRtc2coKS9yZWN2bXNnKCkgdGVzdHMuCisKKyAgICAjIFRpbWUgaW4gc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBjb25zaWRlcmluZyBhIHRlc3QgZmFpbGVkLCBvcgorICAgICMgTm9uZSBmb3Igbm8gdGltZW91dC4gIE5vdCBhbGwgdGVzdHMgYWN0dWFsbHkgc2V0IGEgdGltZW91dC4KKyAgICBmYWlsX3RpbWVvdXQgPSAzLjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICBkZWYgc2VuZFRvU2VydmVyKHNlbGYsIG1zZyk6CisgICAgICAgICMgU2VuZCBtc2cgdG8gdGhlIHNlcnZlci4KKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX3NvY2suc2VuZChtc2cpCisKKyAgICAjIFR1cGxlIG9mIGFsdGVybmF0aXZlIGRlZmF1bHQgYXJndW1lbnRzIGZvciBzZW5kbXNnKCkgd2hlbiBjYWxsZWQKKyAgICAjIHZpYSBzZW5kbXNnVG9TZXJ2ZXIoKSAoZS5nLiB0byBpbmNsdWRlIGEgZGVzdGluYXRpb24gYWRkcmVzcykuCisgICAgc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHMgPSAoKQorCisgICAgZGVmIHNlbmRtc2dUb1NlcnZlcihzZWxmLCAqYXJncyk6CisgICAgICAgICMgQ2FsbCBzZW5kbXNnKCkgb24gc2VsZi5jbGlfc29jayB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMsCisgICAgICAgICMgZmlsbGluZyBpbiBhbnkgYXJndW1lbnRzIHdoaWNoIGFyZSBub3Qgc3VwcGxpZWQgd2l0aCB0aGUKKyAgICAgICAgIyBjb3JyZXNwb25kaW5nIGl0ZW1zIG9mIHNlbGYuc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHMsIGlmCisgICAgICAgICMgYW55LgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfc29jay5zZW5kbXNnKAorICAgICAgICAgICAgKihhcmdzICsgc2VsZi5zZW5kbXNnX3RvX3NlcnZlcl9kZWZhdWx0c1tsZW4oYXJncyk6XSkpCisKKyAgICBkZWYgZG9SZWN2bXNnKHNlbGYsIHNvY2ssIGJ1ZnNpemUsICphcmdzKToKKyAgICAgICAgIyBDYWxsIHJlY3Ztc2coKSBvbiBzb2NrIHdpdGggZ2l2ZW4gYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzCisgICAgICAgICMgcmVzdWx0LiAgU2hvdWxkIGJlIHVzZWQgZm9yIHRlc3RzIHdoaWNoIGNhbiB1c2UgZWl0aGVyCisgICAgICAgICMgcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpIC0gUmVjdm1zZ0ludG9NaXhpbiBvdmVycmlkZXMKKyAgICAgICAgIyB0aGlzIG1ldGhvZCB3aXRoIG9uZSB3aGljaCBlbXVsYXRlcyBpdCB1c2luZyByZWN2bXNnX2ludG8oKSwKKyAgICAgICAgIyB0aHVzIGFsbG93aW5nIHRoZSBzYW1lIHRlc3QgdG8gYmUgdXNlZCBmb3IgYm90aCBtZXRob2RzLgorICAgICAgICByZXN1bHQgPSBzb2NrLnJlY3Ztc2coYnVmc2l6ZSwgKmFyZ3MpCisgICAgICAgIHNlbGYucmVnaXN0ZXJSZWN2bXNnUmVzdWx0KHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChzZWxmLCByZXN1bHQpOgorICAgICAgICAjIENhbGxlZCBieSBkb1JlY3Ztc2coKSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgcmVjdm1zZygpIG9yCisgICAgICAgICMgcmVjdm1zZ19pbnRvKCkuICBDYW4gYmUgb3ZlcnJpZGRlbiB0byBhcnJhbmdlIGNsZWFudXAgYmFzZWQKKyAgICAgICAgIyBvbiB0aGUgcmV0dXJuZWQgYW5jaWxsYXJ5IGRhdGEsIGZvciBpbnN0YW5jZS4KKyAgICAgICAgcGFzcworCisgICAgZGVmIGNoZWNrUmVjdm1zZ0FkZHJlc3Moc2VsZiwgYWRkcjEsIGFkZHIyKToKKyAgICAgICAgIyBDYWxsZWQgdG8gY29tcGFyZSB0aGUgcmVjZWl2ZWQgYWRkcmVzcyB3aXRoIHRoZSBhZGRyZXNzIG9mCisgICAgICAgICMgdGhlIHBlZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjEsIGFkZHIyKQorCisgICAgIyBGbGFncyB0aGF0IGFyZSBub3JtYWxseSB1bnNldCBpbiBtc2dfZmxhZ3MKKyAgICBtc2dfZmxhZ3NfY29tbW9uX3Vuc2V0ID0gMAorICAgIGZvciBuYW1lIGluICgiTVNHX0NUUlVOQyIsICJNU0dfT09CIik6CisgICAgICAgIG1zZ19mbGFnc19jb21tb25fdW5zZXQgfD0gZ2V0YXR0cihzb2NrZXQsIG5hbWUsIDApCisKKyAgICAjIEZsYWdzIHRoYXQgYXJlIG5vcm1hbGx5IHNldAorICAgIG1zZ19mbGFnc19jb21tb25fc2V0ID0gMAorCisgICAgIyBGbGFncyBzZXQgd2hlbiBhIGNvbXBsZXRlIHJlY29yZCBoYXMgYmVlbiByZWNlaXZlZCAoZS5nLiBNU0dfRU9SCisgICAgIyBmb3IgU0NUUCkKKyAgICBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciA9IDAKKworICAgICMgRmxhZ3Mgc2V0IHdoZW4gYSBjb21wbGV0ZSByZWNvcmQgaGFzIG5vdCBiZWVuIHJlY2VpdmVkCisgICAgIyAoZS5nLiBNU0dfVFJVTkMgZm9yIGRhdGFncmFtIHNvY2tldHMpCisgICAgbXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yID0gMAorCisgICAgZGVmIGNoZWNrRmxhZ3Moc2VsZiwgZmxhZ3MsIGVvcj1Ob25lLCBjaGVja3NldD0wLCBjaGVja3Vuc2V0PTAsIGlnbm9yZT0wKToKKyAgICAgICAgIyBNZXRob2QgdG8gY2hlY2sgdGhlIHZhbHVlIG9mIG1zZ19mbGFncyByZXR1cm5lZCBieSByZWN2bXNnW19pbnRvXSgpLgorICAgICAgICAjCisgICAgICAgICMgQ2hlY2tzIHRoYXQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX2NvbW1vbl9zZXQgYXR0cmlidXRlIGFyZQorICAgICAgICAjIHNldCBpbiAiZmxhZ3MiIGFuZCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfY29tbW9uX3Vuc2V0IGFyZQorICAgICAgICAjIHVuc2V0LgorICAgICAgICAjCisgICAgICAgICMgVGhlICJlb3IiIGFyZ3VtZW50IHNwZWNpZmllcyB3aGV0aGVyIHRoZSBmbGFncyBzaG91bGQKKyAgICAgICAgIyBpbmRpY2F0ZSB0aGF0IGEgZnVsbCByZWNvcmQgKG9yIGRhdGFncmFtKSBoYXMgYmVlbiByZWNlaXZlZC4KKyAgICAgICAgIyBJZiAiZW9yIiBpcyBOb25lLCBubyBjaGVja3MgYXJlIGRvbmU7IG90aGVyd2lzZSwgY2hlY2tzCisgICAgICAgICMgdGhhdDoKKyAgICAgICAgIworICAgICAgICAjICAqIGlmICJlb3IiIGlzIHRydWUsIGFsbCBiaXRzIGluIG1zZ19mbGFnc19lb3JfaW5kaWNhdG9yIGFyZQorICAgICAgICAjICAgIHNldCBhbmQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yIGFyZSB1bnNldAorICAgICAgICAjCisgICAgICAgICMgICogaWYgImVvciIgaXMgZmFsc2UsIGFsbCBiaXRzIGluIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvcgorICAgICAgICAjICAgIGFyZSBzZXQgYW5kIGFsbCBiaXRzIGluIG1zZ19mbGFnc19lb3JfaW5kaWNhdG9yIGFyZSB1bnNldAorICAgICAgICAjCisgICAgICAgICMgSWYgImNoZWNrc2V0IiBhbmQvb3IgImNoZWNrdW5zZXQiIGFyZSBzdXBwbGllZCwgdGhleSByZXF1aXJlCisgICAgICAgICMgdGhlIGdpdmVuIGJpdHMgdG8gYmUgc2V0IG9yIHVuc2V0IHJlc3BlY3RpdmVseSwgb3ZlcnJpZGluZworICAgICAgICAjIHdoYXQgdGhlIGF0dHJpYnV0ZXMgcmVxdWlyZSBmb3IgdGhvc2UgYml0cy4KKyAgICAgICAgIworICAgICAgICAjIElmIGFueSBiaXRzIGFyZSBzZXQgaW4gImlnbm9yZSIsIHRoZXkgd2lsbCBub3QgYmUgY2hlY2tlZCwKKyAgICAgICAgIyByZWdhcmRsZXNzIG9mIHRoZSBvdGhlciBpbnB1dHMuCisgICAgICAgICMKKyAgICAgICAgIyBXaWxsIHJhaXNlIEV4Y2VwdGlvbiBpZiB0aGUgaW5wdXRzIHJlcXVpcmUgYSBiaXQgdG8gYmUgYm90aAorICAgICAgICAjIHNldCBhbmQgdW5zZXQsIGFuZCBpdCBpcyBub3QgaWdub3JlZC4KKworICAgICAgICBkZWZhdWx0c2V0ID0gc2VsZi5tc2dfZmxhZ3NfY29tbW9uX3NldAorICAgICAgICBkZWZhdWx0dW5zZXQgPSBzZWxmLm1zZ19mbGFnc19jb21tb25fdW5zZXQKKworICAgICAgICBpZiBlb3I6CisgICAgICAgICAgICBkZWZhdWx0c2V0IHw9IHNlbGYubXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgICAgIGRlZmF1bHR1bnNldCB8PSBzZWxmLm1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvcgorICAgICAgICBlbGlmIGVvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRlZmF1bHRzZXQgfD0gc2VsZi5tc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgICAgIGRlZmF1bHR1bnNldCB8PSBzZWxmLm1zZ19mbGFnc19lb3JfaW5kaWNhdG9yCisKKyAgICAgICAgIyBGdW5jdGlvbiBhcmd1bWVudHMgb3ZlcnJpZGUgZGVmYXVsdHMKKyAgICAgICAgZGVmYXVsdHNldCAmPSB+Y2hlY2t1bnNldAorICAgICAgICBkZWZhdWx0dW5zZXQgJj0gfmNoZWNrc2V0CisKKyAgICAgICAgIyBNZXJnZSBhcmd1bWVudHMgd2l0aCByZW1haW5pbmcgZGVmYXVsdHMsIGFuZCBjaGVjayBmb3IgY29uZmxpY3RzCisgICAgICAgIGNoZWNrc2V0IHw9IGRlZmF1bHRzZXQKKyAgICAgICAgY2hlY2t1bnNldCB8PSBkZWZhdWx0dW5zZXQKKyAgICAgICAgaW5ib3RoID0gY2hlY2tzZXQgJiBjaGVja3Vuc2V0ICYgfmlnbm9yZQorICAgICAgICBpZiBpbmJvdGg6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImNvbnRyYWRpY3Rvcnkgc2V0LCB1bnNldCByZXF1aXJlbWVudHMgZm9yIGZsYWdzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezA6I3h9Ii5mb3JtYXQoaW5ib3RoKSkKKworICAgICAgICAjIENvbXBhcmUgd2l0aCBnaXZlbiBtc2dfZmxhZ3MgdmFsdWUKKyAgICAgICAgbWFzayA9IChjaGVja3NldCB8IGNoZWNrdW5zZXQpICYgfmlnbm9yZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWdzICYgbWFzaywgY2hlY2tzZXQgJiBtYXNrKQorCisKK2NsYXNzIFJlY3Ztc2dJbnRvTWl4aW4oU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIE1peGluIHRvIGltcGxlbWVudCBkb1JlY3Ztc2coKSB1c2luZyByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiBkb1JlY3Ztc2coc2VsZiwgc29jaywgYnVmc2l6ZSwgKmFyZ3MpOgorICAgICAgICBidWYgPSBieXRlYXJyYXkoYnVmc2l6ZSkKKyAgICAgICAgcmVzdWx0ID0gc29jay5yZWN2bXNnX2ludG8oW2J1Zl0sICphcmdzKQorICAgICAgICBzZWxmLnJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJlc3VsdFswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwocmVzdWx0WzBdLCBidWZzaXplKQorICAgICAgICByZXR1cm4gKGJ5dGVzKGJ1Zls6cmVzdWx0WzBdXSksKSArIHJlc3VsdFsxOl0KKworCitjbGFzcyBTZW5kcmVjdm1zZ0RncmFtRmxhZ3NCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBEZWZpbmVzIGZsYWdzIHRvIGJlIGNoZWNrZWQgaW4gbXNnX2ZsYWdzIGZvciBkYXRhZ3JhbSBzb2NrZXRzLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkubXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yIHwgc29ja2V0Lk1TR19UUlVOQworCisKK2NsYXNzIFNlbmRyZWN2bXNnU0NUUEZsYWdzQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgRGVmaW5lcyBmbGFncyB0byBiZSBjaGVja2VkIGluIG1zZ19mbGFncyBmb3IgU0NUUCBzb2NrZXRzLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1zZ19mbGFnc19lb3JfaW5kaWNhdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5tc2dfZmxhZ3NfZW9yX2luZGljYXRvciB8IHNvY2tldC5NU0dfRU9SCisKKworY2xhc3MgU2VuZHJlY3Ztc2dDb25uZWN0aW9ubGVzc0Jhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgZm9yIHRlc3RzIG9uIGNvbm5lY3Rpb25sZXNzLW1vZGUgc29ja2V0cy4gIFVzZXJzIG11c3QKKyAgICAjIHN1cHBseSBzb2NrZXRzIG9uIGF0dHJpYnV0ZXMgY2xpIGFuZCBzZXJ2IHRvIGJlIG1hcHBlZCB0bworICAgICMgY2xpX3NvY2sgYW5kIHNlcnZfc29jayByZXNwZWN0aXZlbHkuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vydl9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xpX3NvY2soc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNsaQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICByZXR1cm4gKFtdLCBbXSwgMCwgc2VsZi5zZXJ2X2FkZHIpCisKKyAgICBkZWYgc2VuZFRvU2VydmVyKHNlbGYsIG1zZyk6CisgICAgICAgIHJldHVybiBzZWxmLmNsaV9zb2NrLnNlbmR0byhtc2csIHNlbGYuc2Vydl9hZGRyKQorCisKK2NsYXNzIFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgQmFzZSBjbGFzcyBmb3IgdGVzdHMgb24gY29ubmVjdGVkIHNvY2tldHMuICBVc2VycyBtdXN0IHN1cHBseQorICAgICMgc29ja2V0cyBvbiBhdHRyaWJ1dGVzIHNlcnZfY29ubiBhbmQgY2xpX2Nvbm4gKHJlcHJlc2VudGluZyB0aGUKKyAgICAjIGNvbm5lY3Rpb25zICp0byogdGhlIHNlcnZlciBhbmQgdGhlIGNsaWVudCksIHRvIGJlIG1hcHBlZCB0bworICAgICMgY2xpX3NvY2sgYW5kIHNlcnZfc29jayByZXNwZWN0aXZlbHkuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vydl9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfY29ubgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsaV9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2X2Nvbm4KKworICAgIGRlZiBjaGVja1JlY3Ztc2dBZGRyZXNzKHNlbGYsIGFkZHIxLCBhZGRyMik6CisgICAgICAgICMgQWRkcmVzcyBpcyBjdXJyZW50bHkgInVuc3BlY2lmaWVkIiBmb3IgYSBjb25uZWN0ZWQgc29ja2V0LAorICAgICAgICAjIHNvIHdlIGRvbid0IGV4YW1pbmUgaXQKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnU2VydmVyVGltZW91dEJhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgdG8gc2V0IGEgdGltZW91dCBvbiBzZXJ2ZXIncyBzb2NrZXQuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXR0aW1lb3V0KHNlbGYuZmFpbF90aW1lb3V0KQorCisKK2NsYXNzIFNlbmRtc2dUZXN0cyhTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKToKKyAgICAjIFRlc3RzIGZvciBzZW5kbXNnKCkgd2hpY2ggY2FuIHVzZSBhbnkgc29ja2V0IHR5cGUgYW5kIGRvIG5vdAorICAgICMgaW52b2x2ZSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2coc2VsZik6CisgICAgICAgICMgU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHdpdGggc2VuZG1zZygpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dEYXRhR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAjIFNlbmQgZnJvbSBidWZmZXIgb2J0YWluZWQgZnJvbSBhIGdlbmVyYXRvciAobm90IGEgc2VxdWVuY2UpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRGF0YUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcigobyBmb3IgbyBpbiBbTVNHXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQW5jaWxsYXJ5R2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAjIEdhdGhlciAoZW1wdHkpIGFuY2lsbGFyeSBkYXRhIGZyb20gYSBnZW5lcmF0b3IuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dBbmNpbGxhcnlHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIChvIGZvciBvIGluIFtdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dBcnJheShzZWxmKToKKyAgICAgICAgIyBTZW5kIGRhdGEgZnJvbSBhbiBhcnJheSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBieXRlcyBvYmplY3QuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dBcnJheShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbYXJyYXkuYXJyYXkoIkIiLCBNU0cpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dHYXRoZXIoc2VsZik6CisgICAgICAgICMgU2VuZCBtZXNzYWdlIGRhdGEgZnJvbSBtb3JlIHRoYW4gb25lIGJ1ZmZlciAoZ2F0aGVyIHdyaXRlKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0dhdGhlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHWzozXSwgTVNHWzM6XV0pLCBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBzZW5kbXNnKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBiIm5vdCBpbiBhbiBpdGVyYWJsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0KCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHLCBvYmplY3QoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFtdLCBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFtdLCAwLCBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJkb25lIikKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0JhZENtc2coc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnZhbGlkIGFuY2lsbGFyeSBkYXRhIGl0ZW1zIGFyZSByZWplY3RlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0JhZENtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbb2JqZWN0KCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWyhvYmplY3QoKSwgMCwgYiJkYXRhIildKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCBvYmplY3QoKSwgYiJkYXRhIildKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwLCBvYmplY3QoKSldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbKDAsIDAsIGIiZGF0YSIsIDQyKV0pCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0U2VuZG1zZ0JhZE11bHRpQ21zZyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGludmFsaWQgYW5jaWxsYXJ5IGRhdGEgaXRlbXMgYXJlIHJlamVjdGVkIHdoZW4KKyAgICAgICAgIyBtb3JlIHRoYW4gb25lIGl0ZW0gaXMgcHJlc2VudC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgQHRlc3RTZW5kbXNnQmFkTXVsdGlDbXNnLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2VuZG1zZ0JhZE11bHRpQ21zZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFswLCAwLCBiIiJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwLCBiIiIpLCBvYmplY3QoKV0pCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dFeGNlc3NDbXNnUmVqZWN0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIHJlamVjdHMgZXhjZXNzIGFuY2lsbGFyeSBkYXRhIGl0ZW1zCisgICAgICAgICMgd2hlbiB0aGUgbnVtYmVyIHRoYXQgY2FuIGJlIHNlbnQgaXMgbGltaXRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDEwMDApLCBiImRvbmUiKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0V4Y2Vzc0Ntc2dSZWplY3Qoc2VsZik6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNvY2tldCwgIkNNU0dfU1BBQ0UiKToKKyAgICAgICAgICAgICMgQ2FuIG9ubHkgc2VuZCBvbmUgaXRlbQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKDAsIDAsIGIiIiksICgwLCAwLCBiIiIpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNtLmV4Y2VwdGlvbi5lcnJubykKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJkb25lIikKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBzZW5kbXNnKCkgZmFpbHMgb24gYSBjbG9zZWQgc29ja2V0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQWZ0ZXJDbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5jbGlfc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsIFtNU0ddKQorCisKK2NsYXNzIFNlbmRtc2dTdHJlYW1UZXN0cyhTZW5kbXNnVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHNlbmRtc2coKSB3aGljaCByZXF1aXJlIGEgc3RyZWFtIHNvY2tldCBhbmQgZG8gbm90CisgICAgIyBpbnZvbHZlIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0U2VuZG1zZ0V4cGxpY2l0Tm9uZUFkZHIoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBwZWVyIGFkZHJlc3MgY2FuIGJlIHNwZWNpZmllZCBhcyBOb25lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRXhwbGljaXROb25lQWRkcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgW10sIDAsIE5vbmUpLCBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aW1lb3V0IHdvcmtzIHdpdGggc2VuZG1zZygpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YoNTEyKSwgYiJhIio1MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKworICAgIGRlZiBfdGVzdFNlbmRtc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaV9zb2NrLnNldHRpbWVvdXQoMC4wMykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LnRpbWVvdXQpOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtiImEiKjUxMl0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKworICAgICMgWFhYOiB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgbW9yZSB0ZXN0cyBmb3Igc2VuZG1zZyBmbGFncyBhcmd1bWVudC4KKworICAgICMgTGludXggc3VwcG9ydHMgTVNHX0RPTlRXQUlUIHdoZW4gc2VuZGluZywgYnV0IGluIGdlbmVyYWwsIGl0CisgICAgIyBvbmx5IHdvcmtzIHdoZW4gcmVjZWl2aW5nLiAgQ291bGQgYWRkIG90aGVyIHBsYXRmb3JtcyBpZiB0aGV5CisgICAgIyBzdXBwb3J0IGl0IHRvby4KKyAgICBAc2tpcFdpdGhDbGllbnRJZihzeXMucGxhdGZvcm0gbm90IGluIHsibGludXgyIn0sCisgICAgICAgICAgICAgICAgICAgICAgIk1TR19ET05UV0FJVCBub3Qga25vd24gdG8gd29yayBvbiB0aGlzIHBsYXRmb3JtIHdoZW4gIgorICAgICAgICAgICAgICAgICAgICAgICJzZW5kaW5nIikKKyAgICBkZWYgdGVzdFNlbmRtc2dEb250V2FpdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IE1TR19ET05UV0FJVCBpbiBmbGFncyBjYXVzZXMgbm9uLWJsb2NraW5nIGJlaGF2aW91ci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDUxMiksIGIiYSIqNTEyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisKKyAgICBAdGVzdFNlbmRtc2dEb250V2FpdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlbmRtc2dEb250V2FpdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtiImEiKjUxMl0sIFtdLCBzb2NrZXQuTVNHX0RPTlRXQUlUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihjbS5leGNlcHRpb24uZXJybm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJuby5FQUdBSU4sIGVycm5vLkVXT1VMREJMT0NLKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorCisKK2NsYXNzIFNlbmRtc2dDb25uZWN0aW9ubGVzc1Rlc3RzKFNlbmRtc2dUZXN0cyk6CisgICAgIyBUZXN0cyBmb3Igc2VuZG1zZygpIHdoaWNoIHJlcXVpcmUgYSBjb25uZWN0aW9ubGVzcy1tb2RlCisgICAgIyAoZS5nLiBkYXRhZ3JhbSkgc29ja2V0LCBhbmQgZG8gbm90IGludm9sdmUgcmVjdm1zZygpIG9yCisgICAgIyByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0U2VuZG1zZ05vRGVzdEFkZHIoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBzZW5kbXNnKCkgZmFpbHMgd2hlbiBubyBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzCisgICAgICAgICMgZ2l2ZW4gZm9yIHVuY29ubmVjdGVkIHNvY2tldC4KKyAgICAgICAgcGFzcworCisgICAgZGVmIF90ZXN0U2VuZG1zZ05vRGVzdEFkZHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLmNsaV9zb2NrLnNlbmRtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgMCwgTm9uZSkKKworCitjbGFzcyBSZWN2bXNnR2VuZXJpY1Rlc3RzKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBUZXN0cyBmb3IgcmVjdm1zZygpIHdoaWNoIGNhbiBhbHNvIGJlIGVtdWxhdGVkIHVzaW5nCisgICAgIyByZWN2bXNnX2ludG8oKSwgYW5kIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlLgorCisgICAgZGVmIHRlc3RSZWN2bXNnKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgYSBzaW1wbGUgbWVzc2FnZSB3aXRoIHJlY3Ztc2dbX2ludG9dKCkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnRXhwbGljaXREZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY3Ztc2dbX2ludG9dKCkgd2l0aCBkZWZhdWx0IGFyZ3VtZW50cyBwcm92aWRlZCBleHBsaWNpdGx5LgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnRXhwbGljaXREZWZhdWx0cyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnU2hvcnRlcihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGEgbWVzc2FnZSBzbWFsbGVyIHRoYW4gYnVmZmVyLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSArIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dTaG9ydGVyKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICAjIEZyZWVCU0QgPCA4IGRvZXNuJ3QgYWx3YXlzIHNldCB0aGUgTVNHX1RSVU5DIGZsYWcgd2hlbiBhIHRydW5jYXRlZAorICAgICMgZGF0YWdyYW0gaXMgcmVjZWl2ZWQgKGlzc3VlICMxMzAwMSkuCisgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDgpCisgICAgZGVmIHRlc3RSZWN2bXNnVHJ1bmMoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBwYXJ0IG9mIG1lc3NhZ2UsIGNoZWNrIGZvciB0cnVuY2F0aW9uIGluZGljYXRvcnMuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpIC0gMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TR1s6LTNdKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9RmFsc2UpCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oOCkKKyAgICBkZWYgX3Rlc3RSZWN2bXNnVHJ1bmMoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ1Nob3J0QW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICAjIFRlc3QgYW5jaWxsYXJ5IGRhdGEgYnVmZmVyIHRvbyBzbWFsbCB0byBob2xkIGFueSBhbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ1Nob3J0QW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dMb25nQW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICAjIFRlc3QgbGFyZ2UgYW5jaWxsYXJ5IGRhdGEgYnVmZmVyLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0xvbmdBbmNpbGxhcnlCdWYoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCByZWN2bXNnW19pbnRvXSgpIGZhaWxzIG9uIGEgY2xvc2VkIHNvY2tldC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuZG9SZWN2bXNnLCBzZWxmLnNlcnZfc29jaywgMTAyNCkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGltZW91dCB3b3Jrcy4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0dGltZW91dCgwLjAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvUmVjdm1zZywgc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJNU0dfUEVFSyIpCisgICAgZGVmIHRlc3RSZWN2bXNnUGVlayhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IE1TR19QRUVLIGluIGZsYWdzIGVuYWJsZXMgZXhhbWluYXRpb24gb2YgcGVuZGluZworICAgICAgICAjIGRhdGEgd2l0aG91dCBjb25zdW1pbmcgaXQuCisKKyAgICAgICAgIyBSZWNlaXZlIHBhcnQgb2YgZGF0YSB3aXRoIE1TR19QRUVLLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuTVNHX1BFRUspCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0dbOi0zXSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgICMgSWdub3JpbmcgTVNHX1RSVU5DIGhlcmUgKHNvIHRoaXMgdGVzdCBpcyB0aGUgc2FtZSBmb3Igc3RyZWFtCisgICAgICAgICMgYW5kIGRhdGFncmFtIHNvY2tldHMpLiAgU29tZSB3b3JkaW5nIGluIFBPU0lYIHNlZW1zIHRvCisgICAgICAgICMgc3VnZ2VzdCB0aGF0IGl0IG5lZWRuJ3QgYmUgc2V0IHdoZW4gcGVla2luZywgYnV0IHRoYXQgbWF5CisgICAgICAgICMganVzdCBiZSBhIHNsaXAuCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWdldGF0dHIoc29ja2V0LCAiTVNHX1RSVU5DIiwgMCkpCisKKyAgICAgICAgIyBSZWNlaXZlIGFsbCBkYXRhIHdpdGggTVNHX1BFRUsuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHNhbWUgZGF0YSBjYW4gc3RpbGwgYmUgcmVjZWl2ZWQgbm9ybWFsbHkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgQHRlc3RSZWN2bXNnUGVlay5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3Ztc2dQZWVrKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBkZWYgdGVzdFJlY3Ztc2dGcm9tU2VuZG1zZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB3aXRoIHJlY3Ztc2dbX2ludG9dKCkgd2hlbiBtZXNzYWdlIGlzIHNlbnQKKyAgICAgICAgIyB1c2luZyBzZW5kbXNnKCkuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHRpbWVvdXQoc2VsZi5mYWlsX3RpbWVvdXQpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgQHRlc3RSZWN2bXNnRnJvbVNlbmRtc2cuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2bXNnRnJvbVNlbmRtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR1s6M10sIE1TR1szOl1dKSwgbGVuKE1TRykpCisKKworY2xhc3MgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cyhSZWN2bXNnR2VuZXJpY1Rlc3RzKToKKyAgICAjIFRlc3RzIHdoaWNoIHJlcXVpcmUgYSBzdHJlYW0gc29ja2V0IGFuZCBjYW4gdXNlIGVpdGhlciByZWN2bXNnKCkKKyAgICAjIG9yIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIHRlc3RSZWN2bXNnRU9GKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgZW5kLW9mLXN0cmVhbSBpbmRpY2F0b3IgKGIiIiwgcGVlciBzb2NrZXQgY2xvc2VkKS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCAxMDI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgYiIiKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9Tm9uZSkgIyBNaWdodCBub3QgaGF2ZSBlbmQtb2YtcmVjb3JkIG1hcmtlcgorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0VPRihzZWxmKToKKyAgICAgICAgc2VsZi5jbGlfc29jay5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dPdmVyZmxvdyhzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGEgbWVzc2FnZSBpbiBtb3JlIHRoYW4gb25lIGNodW5rLgorICAgICAgICBzZWcxLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpIC0gMykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPUZhbHNlKQorCisgICAgICAgIHNlZzIsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIDEwMjQpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgICAgIG1zZyA9IHNlZzEgKyBzZWcyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnT3ZlcmZsb3coc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworCitjbGFzcyBSZWN2bXNnVGVzdHMoUmVjdm1zZ0dlbmVyaWNUZXN0cyk6CisgICAgIyBUZXN0cyBmb3IgcmVjdm1zZygpIHdoaWNoIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlLgorCisgICAgZGVmIHRlc3RSZWN2bXNnQmFkQXJncyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY3Ztc2coKSByZWplY3RzIGludmFsaWQgYXJndW1lbnRzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgLTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2J5dGVhcnJheSgxMCldLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCgpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBvYmplY3QoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwgb2JqZWN0KCkpCisKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2cobGVuKE1TRyksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworCitjbGFzcyBSZWN2bXNnSW50b1Rlc3RzKFJlY3Ztc2dJbnRvTWl4aW4sIFJlY3Ztc2dHZW5lcmljVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2dfaW50bygpIHdoaWNoIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlLgorCisgICAgZGVmIHRlc3RSZWN2bXNnSW50b0JhZEFyZ3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCByZWN2bXNnX2ludG8oKSByZWplY3RzIGludmFsaWQgYXJndW1lbnRzLgorICAgICAgICBidWYgPSBieXRlYXJyYXkobGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0KCldLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2IiSSdtIG5vdCB3cml0YWJsZSJdLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1Ziwgb2JqZWN0KCldLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZdLCAtMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZdLCBvYmplY3QoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZdLCAwLCBvYmplY3QoKSkKKworICAgICAgICBuYnl0ZXMsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKFtidWZdLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoTVNHKSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b0JhZEFyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9HZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIGJ1ZmZlciBvYnRhaW5lZCBmcm9tIGEgZ2VuZXJhdG9yIChub3QgYSBzZXF1ZW5jZSkuCisgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShsZW4oTVNHKSkKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bygKKyAgICAgICAgICAgIChvIGZvciBvIGluIFtidWZdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KE1TRykpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9HZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9BcnJheShzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGludG8gYW4gYXJyYXkgcmF0aGVyIHRoYW4gdGhlIHVzdWFsIGJ5dGVhcnJheS4KKyAgICAgICAgYnVmID0gYXJyYXkuYXJyYXkoIkIiLCBbMF0gKiBsZW4oTVNHKSkKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50byhbYnVmXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50b2J5dGVzKCksIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b0FycmF5KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvU2NhdHRlcihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGludG8gbXVsdGlwbGUgYnVmZmVycyAoc2NhdHRlciB3cml0ZSkuCisgICAgICAgIGIxID0gYnl0ZWFycmF5KGIiLS0tLSIpCisgICAgICAgIGIyID0gYnl0ZWFycmF5KGIiMDEyMzQ1Njc4OSIpCisgICAgICAgIGIzID0gYnl0ZWFycmF5KGIiLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICBuYnl0ZXMsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKAorICAgICAgICAgICAgW2IxLCBtZW1vcnl2aWV3KGIyKVsyOjldLCBiM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oYiJNYXJ5IGhhZCBhIGxpdHRsZSBsYW1iIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYjEsIGJ5dGVhcnJheShiIk1hcnkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiMiwgYnl0ZWFycmF5KGIiMDEgaGFkIGEgOSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIzLCBieXRlYXJyYXkoYiJsaXR0bGUgbGFtYi0tLSIpKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dJbnRvU2NhdHRlcihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJNYXJ5IGhhZCBhIGxpdHRsZSBsYW1iIikKKworCitjbGFzcyBDbXNnTWFjcm9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoZSBmdW5jdGlvbnMgQ01TR19MRU4oKSBhbmQgQ01TR19TUEFDRSgpLiAgVGVzdHMKKyAgICAjIGFzc3VtcHRpb25zIHVzZWQgYnkgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpLCB3aGljaCBzaGFyZQorICAgICMgY29kZSB3aXRoIHRoZXNlIGZ1bmN0aW9ucy4KKworICAgICMgTWF0Y2ggdGhlIGRlZmluaXRpb24gaW4gc29ja2V0bW9kdWxlLmMKKyAgICBzb2NrbGVuX3RfbGltaXQgPSBtaW4oMHg3ZmZmZmZmZiwgX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfTEVOIikKKyAgICBkZWYgdGVzdENNU0dfTEVOKHNlbGYpOgorICAgICAgICAjIFRlc3QgQ01TR19MRU4oKSB3aXRoIHZhcmlvdXMgdmFsaWQgYW5kIGludmFsaWQgdmFsdWVzLAorICAgICAgICAjIGNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyB1c2VkIGJ5IHJlY3Ztc2coKSBhbmQgc2VuZG1zZygpLgorICAgICAgICB0b29iaWcgPSBzZWxmLnNvY2tsZW5fdF9saW1pdCAtIHNvY2tldC5DTVNHX0xFTigwKSArIDEKKyAgICAgICAgdmFsdWVzID0gbGlzdChyYW5nZSgyNTcpKSArIGxpc3QocmFuZ2UodG9vYmlnIC0gMjU3LCB0b29iaWcpKQorCisgICAgICAgICMgc3RydWN0IGNtc2doZHIgaGFzIGF0IGxlYXN0IHRocmVlIG1lbWJlcnMsIHR3byBvZiB3aGljaCBhcmUgaW50cworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc29ja2V0LkNNU0dfTEVOKDApLCBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplICogMikKKyAgICAgICAgZm9yIG4gaW4gdmFsdWVzOgorICAgICAgICAgICAgcmV0ID0gc29ja2V0LkNNU0dfTEVOKG4pCisgICAgICAgICAgICAjIFRoaXMgaXMgaG93IHJlY3Ztc2coKSBjYWxjdWxhdGVzIHRoZSBkYXRhIHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0IC0gc29ja2V0LkNNU0dfTEVOKDApLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwocmV0LCBzZWxmLnNvY2tsZW5fdF9saW1pdCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19MRU4sIC0xKQorICAgICAgICAjIHNlbmRtc2coKSBzaGFyZXMgY29kZSB3aXRoIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHJlcXVpcmVzCisgICAgICAgICMgdGhhdCBpdCByZWplY3QgdmFsdWVzIG92ZXIgdGhlIGxpbWl0LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19MRU4sIHRvb2JpZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCBzeXMubWF4c2l6ZSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgQ01TR19TUEFDRSgpIHdpdGggdmFyaW91cyB2YWxpZCBhbmQgaW52YWxpZCB2YWx1ZXMsCisgICAgICAgICMgY2hlY2tpbmcgdGhlIGFzc3VtcHRpb25zIHVzZWQgYnkgc2VuZG1zZygpLgorICAgICAgICB0b29iaWcgPSBzZWxmLnNvY2tsZW5fdF9saW1pdCAtIHNvY2tldC5DTVNHX1NQQUNFKDEpICsgMQorICAgICAgICB2YWx1ZXMgPSBsaXN0KHJhbmdlKDI1NykpICsgbGlzdChyYW5nZSh0b29iaWcgLSAyNTcsIHRvb2JpZykpCisKKyAgICAgICAgbGFzdCA9IHNvY2tldC5DTVNHX1NQQUNFKDApCisgICAgICAgICMgc3RydWN0IGNtc2doZHIgaGFzIGF0IGxlYXN0IHRocmVlIG1lbWJlcnMsIHR3byBvZiB3aGljaCBhcmUgaW50cworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGFzdCwgYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZSAqIDIpCisgICAgICAgIGZvciBuIGluIHZhbHVlczoKKyAgICAgICAgICAgIHJldCA9IHNvY2tldC5DTVNHX1NQQUNFKG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXQsIGxhc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXQsIHNvY2tldC5DTVNHX0xFTihuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJldCwgbiArIHNvY2tldC5DTVNHX0xFTigwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJldCwgc2VsZi5zb2NrbGVuX3RfbGltaXQpCisgICAgICAgICAgICBsYXN0ID0gcmV0CisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIC0xKQorICAgICAgICAjIHNlbmRtc2coKSBzaGFyZXMgY29kZSB3aXRoIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHJlcXVpcmVzCisgICAgICAgICMgdGhhdCBpdCByZWplY3QgdmFsdWVzIG92ZXIgdGhlIGxpbWl0LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19TUEFDRSwgdG9vYmlnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19TUEFDRSwgc3lzLm1heHNpemUpCisKKworY2xhc3MgU0NNUmlnaHRzVGVzdChTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKToKKyAgICAjIFRlc3RzIGZvciBmaWxlIGRlc2NyaXB0b3IgcGFzc2luZyBvbiBVbml4LWRvbWFpbiBzb2NrZXRzLgorCisgICAgIyBJbnZhbGlkIGZpbGUgZGVzY3JpcHRvciB2YWx1ZSB0aGF0J3MgdW5saWtlbHkgdG8gZXZhbHVhdGUgdG8gYQorICAgICMgcmVhbCBGRCBldmVuIGlmIG9uZSBvZiBpdHMgYnl0ZXMgaXMgcmVwbGFjZWQgd2l0aCBhIGRpZmZlcmVudAorICAgICMgdmFsdWUgKHdoaWNoIHNob3VsZG4ndCBhY3R1YWxseSBoYXBwZW4pLgorICAgIGJhZGZkID0gLTB4NTU1NQorCisgICAgZGVmIG5ld0ZEcyhzZWxmLCBuKToKKyAgICAgICAgIyBSZXR1cm4gYSBsaXN0IG9mIG4gZmlsZSBkZXNjcmlwdG9ycyBmb3IgbmV3bHktY3JlYXRlZCBmaWxlcworICAgICAgICAjIGNvbnRhaW5pbmcgdGhlaXIgbGlzdCBpbmRpY2VzIGFzIEFTQ0lJIG51bWJlcnMuCisgICAgICAgIGZkcyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgZmQsIHBhdGggPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIHBhdGgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIHN0cihpKS5lbmNvZGUoKSkKKyAgICAgICAgICAgIGZkcy5hcHBlbmQoZmQpCisgICAgICAgIHJldHVybiBmZHMKKworICAgIGRlZiBjaGVja0ZEcyhzZWxmLCBmZHMpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGdpdmVuIGxpc3QgY29udGFpbgorICAgICAgICAjIHRoZWlyIGNvcnJlY3QgbGlzdCBpbmRpY2VzIGFzIEFTQ0lJIG51bWJlcnMuCisgICAgICAgIGZvciBuLCBmZCBpbiBlbnVtZXJhdGUoZmRzKToKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZChmZCwgMTAyNCksIHN0cihuKS5lbmNvZGUoKSkKKworICAgIGRlZiByZWdpc3RlclJlY3Ztc2dSZXN1bHQoc2VsZiwgcmVzdWx0KToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY2xvc2VSZWN2bXNnRkRzLCByZXN1bHQpCisKKyAgICBkZWYgY2xvc2VSZWN2bXNnRkRzKHNlbGYsIHJlY3Ztc2dfcmVzdWx0KToKKyAgICAgICAgIyBDbG9zZSBhbGwgZmlsZSBkZXNjcmlwdG9ycyBzcGVjaWZpZWQgaW4gdGhlIGFuY2lsbGFyeSBkYXRhCisgICAgICAgICMgb2YgdGhlIGdpdmVuIHJldHVybiB2YWx1ZSBmcm9tIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKS4KKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIHJlY3Ztc2dfcmVzdWx0WzFdOgorICAgICAgICAgICAgaWYgKGNtc2dfbGV2ZWwgPT0gc29ja2V0LlNPTF9TT0NLRVQgYW5kCisgICAgICAgICAgICAgICAgICAgIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CisgICAgICAgICAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICAgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhWzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCisgICAgICAgICAgICAgICAgZm9yIGZkIGluIGZkczoKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBkZWYgY3JlYXRlQW5kU2VuZEZEcyhzZWxmLCBuKToKKyAgICAgICAgIyBTZW5kIG4gbmV3IGZpbGUgZGVzY3JpcHRvcnMgY3JlYXRlZCBieSBuZXdGRHMoKSB0byB0aGUKKyAgICAgICAgIyBzZXJ2ZXIsIHdpdGggdGhlIGNvbnN0YW50IE1TRyBhcyB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBzZWxmLm5ld0ZEcyhuKSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiBjaGVja1JlY3Ztc2dGRHMoc2VsZiwgbnVtZmRzLCByZXN1bHQsIG1heGNtc2dzPTEsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIENoZWNrIHRoYXQgY29uc3RhbnQgTVNHIHdhcyByZWNlaXZlZCB3aXRoIG51bWZkcyBmaWxlCisgICAgICAgICMgZGVzY3JpcHRvcnMgaW4gYSBtYXhpbXVtIG9mIG1heGNtc2dzIGNvbnRyb2wgbWVzc2FnZXMgKHdoaWNoCisgICAgICAgICMgbXVzdCBjb250YWluIG9ubHkgY29tcGxldGUgaW50ZWdlcnMpLiAgQnkgZGVmYXVsdCwgY2hlY2sKKyAgICAgICAgIyB0aGF0IE1TR19DVFJVTkMgaXMgdW5zZXQsIGJ1dCBpZ25vcmUgYW55IGZsYWdzIGluCisgICAgICAgICMgaWdub3JlZmxhZ3MuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrdW5zZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGFuY2RhdGEsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgbWF4Y21zZ3MpCisgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgZm9yIGl0ZW0gaW4gYW5jZGF0YToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpdGVtLCB0dXBsZSkKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjbXNnX2RhdGEsIGJ5dGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21zZ19kYXRhKSAlIFNJWkVPRl9JTlQsIDApCisgICAgICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmZHMpLCBudW1mZHMpCisgICAgICAgIHNlbGYuY2hlY2tGRHMoZmRzKQorCisgICAgZGVmIHRlc3RGRFBhc3NTaW1wbGUoc2VsZik6CisgICAgICAgICMgUGFzcyBhIHNpbmdsZSBGRCAoYXJyYXkgcmVhZCBmcm9tIGJ5dGVzIG9iamVjdCkuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDEsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApKQorCisgICAgZGVmIF90ZXN0RkRQYXNzU2ltcGxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoCisgICAgICAgICAgICAgICAgW01TR10sCisgICAgICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBzZWxmLm5ld0ZEcygxKSkudG9ieXRlcygpKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdE11bHRpcGxlRkRQYXNzKHNlbGYpOgorICAgICAgICAjIFBhc3MgbXVsdGlwbGUgRkRzIGluIGEgc2luZ2xlIGFycmF5LgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcyg0LCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSkKKworICAgIGRlZiBfdGVzdE11bHRpcGxlRkRQYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoNCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgdXNpbmcgQ01TR19TUEFDRSgpIHRvIGNhbGN1bGF0ZSBhbmNpbGxhcnkgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKAorICAgICAgICAgICAgNCwgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfU1BBQ0UoNCAqIFNJWkVPRl9JTlQpKSkKKworICAgIEB0ZXN0RkRQYXNzQ01TR19TUEFDRS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdEZEUGFzc0NNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcyg0KQorCisgICAgZGVmIHRlc3RGRFBhc3NDTVNHX0xFTihzZWxmKToKKyAgICAgICAgIyBUZXN0IHVzaW5nIENNU0dfTEVOKCkgdG8gY2FsY3VsYXRlIGFuY2lsbGFyeSBidWZmZXIgc2l6ZS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oNCAqIFNJWkVPRl9JTlQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSRkMgMzU0MiBzYXlzIGltcGxlbWVudGF0aW9ucyBtYXkgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTVNHX0NUUlVOQyBpZiB0aGVyZSBpc24ndCBlbm91Z2ggc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgdHJhaWxpbmcgcGFkZGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBkZWYgX3Rlc3RGRFBhc3NDTVNHX0xFTihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0IGhhcyBwcm9ibGVtcyBvbiBNYWMgT1MgWAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdEZEUGFzc1NlcGFyYXRlKHNlbGYpOgorICAgICAgICAjIFBhc3MgdHdvIEZEcyBpbiB0d28gc2VwYXJhdGUgYXJyYXlzLiAgQXJyYXlzIG1heSBiZSBjb21iaW5lZAorICAgICAgICAjIGludG8gYSBzaW5nbGUgY29udHJvbCBtZXNzYWdlIGJ5IHRoZSBPUy4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCAxMDI0MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNtc2dzPTIpCisKKyAgICBAdGVzdEZEUGFzc1NlcGFyYXRlLmNsaWVudF9za2lwCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBkZWYgX3Rlc3RGRFBhc3NTZXBhcmF0ZShzZWxmKToKKyAgICAgICAgZmQwLCBmZDEgPSBzZWxmLm5ld0ZEcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDFdKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgIyBJc3N1ZSAjMTI5NTg6IFRoZSBmb2xsb3dpbmcgdGVzdCBoYXMgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NTZXBhcmF0ZU1pblNwYWNlKHNlbGYpOgorICAgICAgICAjIFBhc3MgdHdvIEZEcyBpbiB0d28gc2VwYXJhdGUgYXJyYXlzLCByZWNlaXZpbmcgdGhlbSBpbnRvIHRoZQorICAgICAgICAjIG1pbmltdW0gc3BhY2UgZm9yIHR3byBhcnJheXMuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oU0laRU9GX0lOVCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjbXNncz0yLCBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0RkRQYXNzU2VwYXJhdGVNaW5TcGFjZS5jbGllbnRfc2tpcAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIF90ZXN0RkRQYXNzU2VwYXJhdGVNaW5TcGFjZShzZWxmKToKKyAgICAgICAgZmQwLCBmZDEgPSBzZWxmLm5ld0ZEcygyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDFdKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHNlbmRBbmNpbGxhcnlJZlBvc3NpYmxlKHNlbGYsIG1zZywgYW5jZGF0YSk6CisgICAgICAgICMgVHJ5IHRvIHNlbmQgbXNnIGFuZCBhbmNkYXRhIHRvIHNlcnZlciwgYnV0IGlmIHRoZSBzeXN0ZW0KKyAgICAgICAgIyBjYWxsIGZhaWxzLCBqdXN0IHNlbmQgbXNnIHdpdGggbm8gYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddLCBhbmNkYXRhKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgaXQgd2FzIHRoZSBzeXN0ZW0gY2FsbCB0aGF0IGZhaWxlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuZXJybm8sIGludCkKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKG1zZykpCisKKyAgICBkZWYgdGVzdEZEUGFzc0VtcHR5KHNlbGYpOgorICAgICAgICAjIFRyeSB0byBwYXNzIGFuIGVtcHR5IEZEIGFycmF5LiAgQ2FuIHJlY2VpdmUgZWl0aGVyIG5vIGFycmF5CisgICAgICAgICMgb3IgYW4gZW1wdHkgYXJyYXkuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDAsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdEZEUGFzc0VtcHR5KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRBbmNpbGxhcnlJZlBvc3NpYmxlKE1TRywgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiIildKQorCisgICAgZGVmIHRlc3RGRFBhc3NQYXJ0aWFsSW50KHNlbGYpOgorICAgICAgICAjIFRyeSB0byBwYXNzIGEgdHJ1bmNhdGVkIEZEIGFycmF5LgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBpZ25vcmU9c29ja2V0Lk1TR19DVFJVTkMpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5TQ01fUklHSFRTKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorCisgICAgZGVmIF90ZXN0RkRQYXNzUGFydGlhbEludChzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZSgKKyAgICAgICAgICAgIE1TRywKKyAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmJhZGZkXSkudG9ieXRlcygpWzotMV0pXSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIHBhc3MgdHdvIEZEIGFycmF5cywgdGhlIGZpcnN0IG9mIHdoaWNoIGlzIHRydW5jYXRlZC4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgaWdub3JlPXNvY2tldC5NU0dfQ1RSVU5DKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIDIpCisgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgIyBBcnJheXMgbWF5IGhhdmUgYmVlbiBjb21iaW5lZCBpbiBhIHNpbmdsZSBjb250cm9sIG1lc3NhZ2UKKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5TQ01fUklHSFRTKQorICAgICAgICAgICAgZmRzLmZyb21ieXRlcyhjbXNnX2RhdGFbOgorICAgICAgICAgICAgICAgICAgICBsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oZmRzKSwgMikKKyAgICAgICAgc2VsZi5jaGVja0ZEcyhmZHMpCisKKyAgICBAdGVzdEZEUGFzc1BhcnRpYWxJbnRJbk1pZGRsZS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdEZEUGFzc1BhcnRpYWxJbnRJbk1pZGRsZShzZWxmKToKKyAgICAgICAgZmQwLCBmZDEgPSBzZWxmLm5ld0ZEcygyKQorICAgICAgICBzZWxmLnNlbmRBbmNpbGxhcnlJZlBvc3NpYmxlKAorICAgICAgICAgICAgTVNHLAorICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMCwgc2VsZi5iYWRmZF0pLnRvYnl0ZXMoKVs6LTFdKSwKKyAgICAgICAgICAgICAoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDFdKSldKQorCisgICAgZGVmIGNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYsIHJlc3VsdCwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpdGVtcyBhcmUgcmV0dXJuZWQgd2hlbiBkYXRhIGlzCisgICAgICAgICMgdHJ1bmNhdGVkIGluc2lkZSB0aGUgY21zZ2hkciBzdHJ1Y3R1cmUuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNOb0J1ZlNpemUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIG5vIGJ1ZmZlciBzaXplCisgICAgICAgICMgaXMgc3BlY2lmaWVkLgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCU0Qgc2VlbXMgdG8gc2V0IE1TR19DVFJVTkMgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgYW4gaXRlbSBoYXMgYmVlbiBwYXJ0aWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlY2VpdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJlY2VpdmVkIHdoZW4gYnVmZmVyIHNpemUgaXMgMC4KKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmV0dXJuZWQgZm9yIHZhcmlvdXMgbm9uLXplcm8KKyAgICAjIChidXQgc3RpbGwgdG9vIHNtYWxsKSBidWZmZXIgc2l6ZXMuCisKKyAgICBkZWYgdGVzdENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCAxKSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICAjIFRoZSBjbXNnaGRyIHN0cnVjdHVyZSBoYXMgYXQgbGVhc3QgdGhyZWUgbWVtYmVycywgdHdvIG9mCisgICAgICAgICMgd2hpY2ggYXJlIGludHMsIHNvIHdlIHN0aWxsIHNob3VsZG4ndCBzZWUgYW55IGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEuCisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJWkVPRl9JTlQgKiAyKSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oMCkgLSAxKSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBUaGUgZm9sbG93aW5nIHRlc3RzIHRyeSB0byB0cnVuY2F0ZSB0aGUgY29udHJvbCBtZXNzYWdlIGluIHRoZQorICAgICMgbWlkZGxlIG9mIHRoZSBGRCBhcnJheS4KKworICAgIGRlZiBjaGVja1RydW5jYXRlZEFycmF5KHNlbGYsIGFuY2J1ZiwgbWF4ZGF0YSwgbWluZGF0YT0wKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGZpbGUgZGVzY3JpcHRvciBkYXRhIGlzIHRydW5jYXRlZCB0byBiZXR3ZWVuCisgICAgICAgICMgbWluZGF0YSBhbmQgbWF4ZGF0YSBieXRlcyB3aGVuIHJlY2VpdmVkIHdpdGggYnVmZmVyIHNpemUKKyAgICAgICAgIyBhbmNidWYsIGFuZCB0aGF0IGFueSBjb21wbGV0ZSBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyBhcmUKKyAgICAgICAgIyB2YWxpZC4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIGFuY2J1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgICAgIGlmIG1pbmRhdGEgPT0gMCBhbmQgYW5jZGF0YSA9PSBbXToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LlNPTF9TT0NLRVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKGNtc2dfZGF0YSksIG1pbmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihjbXNnX2RhdGEpLCBtYXhkYXRhKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhWzoKKyAgICAgICAgICAgICAgICBsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICBzZWxmLmNoZWNrRkRzKGZkcykKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEFycmF5KGFuY2J1Zj1zb2NrZXQuQ01TR19MRU4oMCksIG1heGRhdGE9MCkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjAoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNMZW4wUGx1czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDApICsgMSwgbWF4ZGF0YT0xKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMFBsdXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMikKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEFycmF5KGFuY2J1Zj1zb2NrZXQuQ01TR19MRU4oU0laRU9GX0lOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhkYXRhPVNJWkVPRl9JTlQpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4xKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMikKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMk1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEFycmF5KGFuY2J1Zj1zb2NrZXQuQ01TR19MRU4oMiAqIFNJWkVPRl9JTlQpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGRhdGE9KDIgKiBTSVpFT0ZfSU5UKSAtIDEpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4yTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMikKKworCitjbGFzcyBSRkMzNTQyQW5jaWxsYXJ5VGVzdChTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKToKKyAgICAjIFRlc3Qgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIHVzaW5nIHRoZSBhbmNpbGxhcnkgZGF0YQorICAgICMgZmVhdHVyZXMgb2YgdGhlIFJGQyAzNTQyIEFkdmFuY2VkIFNvY2tldHMgQVBJIGZvciBJUHY2LgorICAgICMgQ3VycmVudGx5IHdlIGNhbiBvbmx5IGhhbmRsZSBjZXJ0YWluIGRhdGEgaXRlbXMgKGUuZy4gdHJhZmZpYworICAgICMgY2xhc3MsIGhvcCBsaW1pdCwgTVRVIGRpc2NvdmVyeSBhbmQgZnJhZ21lbnRhdGlvbiBzZXR0aW5ncykKKyAgICAjIHdpdGhvdXQgcmVzb3J0aW5nIHRvIHVucG9ydGFibGUgbWVhbnMgc3VjaCBhcyB0aGUgc3RydWN0IG1vZHVsZSwKKyAgICAjIGJ1dCB0aGUgdGVzdHMgaGVyZSBhcmUgYWltZWQgYXQgdGVzdGluZyB0aGUgYW5jaWxsYXJ5IGRhdGEKKyAgICAjIGhhbmRsaW5nIGluIHNlbmRtc2coKSBhbmQgcmVjdm1zZygpIHJhdGhlciB0aGFuIHRoZSBJUHY2IEFQSQorICAgICMgaXRzZWxmLgorCisgICAgIyBUZXN0IHZhbHVlIHRvIHVzZSB3aGVuIHNldHRpbmcgaG9wIGxpbWl0IG9mIHBhY2tldAorICAgIGhvcF9saW1pdCA9IDIKKworICAgICMgVGVzdCB2YWx1ZSB0byB1c2Ugd2hlbiBzZXR0aW5nIHRyYWZmaWMgY2xhc3Mgb2YgcGFja2V0LgorICAgICMgLTEgbWVhbnMgInVzZSBrZXJuZWwgZGVmYXVsdCIuCisgICAgdHJhZmZpY19jbGFzcyA9IC0xCisKKyAgICBkZWYgYW5jaWxsYXJ5TWFwcGluZyhzZWxmLCBhbmNkYXRhKToKKyAgICAgICAgIyBHaXZlbiBhbmNpbGxhcnkgZGF0YSBsaXN0IGFuY2RhdGEsIHJldHVybiBhIG1hcHBpbmcgZnJvbQorICAgICAgICAjIHBhaXJzIChjbXNnX2xldmVsLCBjbXNnX3R5cGUpIHRvIGNvcnJlc3BvbmRpbmcgY21zZ19kYXRhLgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gKGxldmVsLCB0eXBlKSBwYWlyIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIGQgPSB7fQorICAgICAgICBmb3IgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgaW4gYW5jZGF0YToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSksIGQpCisgICAgICAgICAgICBkWyhjbXNnX2xldmVsLCBjbXNnX3R5cGUpXSA9IGNtc2dfZGF0YQorICAgICAgICByZXR1cm4gZAorCisgICAgZGVmIGNoZWNrSG9wTGltaXQoc2VsZiwgYW5jYnVmc2l6ZSwgbWF4aG9wPTI1NSwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgUmVjZWl2ZSBob3AgbGltaXQgaW50byBhbmNidWZzaXplIGJ5dGVzIG9mIGFuY2lsbGFyeSBkYXRhCisgICAgICAgICMgc3BhY2UuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBhbmNpbGxhcnkgZGF0YSBpcyBub3QKKyAgICAgICAgIyB0cnVuY2F0ZWQgKGJ1dCBpZ25vcmUgYW55IGZsYWdzIGluIGlnbm9yZWZsYWdzKSwgYW5kIGhvcAorICAgICAgICAjIGxpbWl0IGlzIGJldHdlZW4gMCBhbmQgbWF4aG9wIGluY2x1c2l2ZS4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWZzaXplKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFuY2RhdGEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYW5jZGF0YVswXSwgdHVwbGUpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuSVBWNl9IT1BMSU1JVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNtc2dfZGF0YSwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgbWF4aG9wKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFJlY3ZIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB0aGUgcGFja2V0IGhvcCBsaW1pdCBhcyBhbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDApCisKKyAgICBAdGVzdFJlY3ZIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBOZWVkIHRvIHdhaXQgdW50aWwgc2VydmVyIGhhcyBhc2tlZCB0byByZWNlaXZlIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEsIGFzIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvIGJ1ZmZlciBpdAorICAgICAgICAjIG90aGVyd2lzZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RSZWN2SG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjZWl2aW5nIGhvcCBsaW1pdCwgdXNpbmcgQ01TR19TUEFDRSB0byBjYWxjdWxhdGUgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdChhbmNidWZzaXplPXNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpKQorCisgICAgQHRlc3RSZWN2SG9wTGltaXRDTVNHX1NQQUNFLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICAjIENvdWxkIHRlc3QgcmVjZWl2aW5nIGludG8gYnVmZmVyIHNpemVkIHVzaW5nIENNU0dfTEVOLCBidXQgUkZDCisgICAgIyAzNTQyIHNheXMgcG9ydGFibGUgYXBwbGljYXRpb25zIG11c3QgcHJvdmlkZSBzcGFjZSBmb3IgdHJhaWxpbmcKKyAgICAjIHBhZGRpbmcuICBJbXBsZW1lbnRhdGlvbnMgbWF5IHNldCBNU0dfQ1RSVU5DIGlmIHRoZXJlIGlzbid0CisgICAgIyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBwYWRkaW5nLgorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNldEhvcExpbWl0KHNlbGYpOgorICAgICAgICAjIFRlc3Qgc2V0dGluZyBob3AgbGltaXQgb24gb3V0Z29pbmcgcGFja2V0IGFuZCByZWNlaXZpbmcgaXQKKyAgICAgICAgIyBhdCB0aGUgb3RoZXIgZW5kLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCwgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RTZXRIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNldEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiBjaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYsIGFuY2J1ZnNpemUsIG1heGhvcD0yNTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgUmVjZWl2ZSB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgaW50byBhbmNidWZzaXplIGJ5dGVzIG9mCisgICAgICAgICMgYW5jaWxsYXJ5IGRhdGEgc3BhY2UuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhIGlzIG5vdCB0cnVuY2F0ZWQgKGJ1dCBpZ25vcmUgYW55IGZsYWdzIGluIGlnbm9yZWZsYWdzKSwKKyAgICAgICAgIyBhbmQgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGFyZSBpbiByYW5nZSAoaG9wIGxpbWl0IG5vCisgICAgICAgICMgbW9yZSB0aGFuIG1heGhvcCkuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWVENMQVNTLCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIGFuY2J1ZnNpemUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrdW5zZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFuY2RhdGEpLCAyKQorICAgICAgICBhbmNtYXAgPSBzZWxmLmFuY2lsbGFyeU1hcHBpbmcoYW5jZGF0YSkKKworICAgICAgICB0Y2RhdGEgPSBhbmNtYXBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X1RDTEFTUyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRjZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKHRjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgICAgIGhsZGF0YSA9IGFuY21hcFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihobGRhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyhobGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIG1heGhvcCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgYXMgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwKQorCisgICAgQHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjZWl2aW5nIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCwgdXNpbmcKKyAgICAgICAgIyBDTVNHX1NQQUNFKCkgdG8gY2FsY3VsYXRlIGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoCisgICAgICAgICAgICBhbmNidWZzaXplPXNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICogMikKKworICAgIEB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0Q01TR19TUEFDRS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZXRUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHNldHRpbmcgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IG9uIG91dGdvaW5nIHBhY2tldCwKKyAgICAgICAgIyBhbmQgcmVjZWl2aW5nIHRoZW0gYXQgdGhlIG90aGVyIGVuZC4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhob3A9c2VsZi5ob3BfbGltaXQpCisKKyAgICBAdGVzdFNldFRyYWZmaWNDbGFzc0FuZEhvcExpbWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2V0VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYudHJhZmZpY19jbGFzc10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0T2RkQ21zZ1NpemUoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIHNlbmQgYW5jaWxsYXJ5IGRhdGEgd2l0aCBmaXJzdCBpdGVtIG9uZSBieXRlIHRvbworICAgICAgICAjIGxvbmcuICBGYWxsIGJhY2sgdG8gc2VuZGluZyB3aXRoIGNvcnJlY3Qgc2l6ZSBpZiB0aGlzIGZhaWxzLAorICAgICAgICAjIGFuZCBjaGVjayB0aGF0IHNlY29uZCBpdGVtIHdhcyBoYW5kbGVkIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhob3A9c2VsZi5ob3BfbGltaXQpCisKKyAgICBAdGVzdE9kZENtc2dTaXplLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0T2RkQ21zZ1NpemUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoCisgICAgICAgICAgICAgICAgW01TR10sCisgICAgICAgICAgICAgICAgWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLnRyYWZmaWNfY2xhc3NdKS50b2J5dGVzKCkgKyBiIlx4MDAiKSwKKyAgICAgICAgICAgICAgICAgKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5ob3BfbGltaXRdKSldKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5lcnJubywgaW50KQorICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoCisgICAgICAgICAgICAgICAgW01TR10sCisgICAgICAgICAgICAgICAgWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLnRyYWZmaWNfY2xhc3NdKSksCisgICAgICAgICAgICAgICAgIChzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCwKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKworICAgICMgVGVzdHMgZm9yIHByb3BlciBoYW5kbGluZyBvZiB0cnVuY2F0ZWQgYW5jaWxsYXJ5IGRhdGEKKworICAgIGRlZiBjaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKHNlbGYsIGFuY2J1ZnNpemUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZiBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIHNwYWNlLCB3aGljaCBzaG91bGQgYmUgdG9vIHNtYWxsIHRvIGNvbnRhaW4gdGhlIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEgaGVhZGVyIChpZiBhbmNidWZzaXplIGlzIE5vbmUsIHBhc3Mgbm8gc2Vjb25kIGFyZ3VtZW50CisgICAgICAgICMgdG8gcmVjdm1zZygpKS4gIENoZWNrIHRoYXQgZGF0YSBpcyBNU0csIE1TR19DVFJVTkMgaXMgc2V0CisgICAgICAgICMgKHVubGVzcyBpbmNsdWRlZCBpbiBpZ25vcmVmbGFncyksIGFuZCBubyBhbmNpbGxhcnkgZGF0YSBpcworICAgICAgICAjIHJldHVybmVkLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgYXJncyA9ICgpIGlmIGFuY2J1ZnNpemUgaXMgTm9uZSBlbHNlIChhbmNidWZzaXplLCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksICphcmdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNOb0J1ZlNpemUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIG5vIGFuY2lsbGFyeQorICAgICAgICAjIGJ1ZmZlciBzaXplIGlzIHByb3ZpZGVkLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCU0Qgc2VlbXMgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1TR19DVFJVTkMgb25seSBpZiBhbiBpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGhhcyBiZWVuIHBhcnRpYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNlaXZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgQHRlc3RDbXNnVHJ1bmNOb0J1ZlNpemUuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNOb0J1ZlNpemUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuYzAoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIGFuY2lsbGFyeQorICAgICAgICAjIGJ1ZmZlciBzaXplIGlzIHplcm8uCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0U2luZ2xlQ21zZ1RydW5jMC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJldHVybmVkIGZvciB2YXJpb3VzIG5vbi16ZXJvCisgICAgIyAoYnV0IHN0aWxsIHRvbyBzbWFsbCkgYnVmZmVyIHNpemVzLgorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPTEpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0yICogU0laRU9GX0lOVCkKKworICAgIEB0ZXN0U2luZ2xlQ21zZ1RydW5jMkludC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPXNvY2tldC5DTVNHX0xFTigwKSAtIDEpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuY0xlbjBNaW51czEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgICMgVGVzdCB0cnVuY2F0aW9uIG9mIGEgY29udHJvbCBtZXNzYWdlIGluc2lkZSBpdHMgYXNzb2NpYXRlZAorICAgICAgICAjIGRhdGEuICBUaGUgbWVzc2FnZSBtYXkgYmUgcmV0dXJuZWQgd2l0aCBpdHMgZGF0YSB0cnVuY2F0ZWQsCisgICAgICAgICMgb3Igbm90IHJldHVybmVkIGF0IGFsbC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZygKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpIC0gMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGFuY2RhdGEpLCAxKQorICAgICAgICBpZiBhbmNkYXRhOgorICAgICAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LklQVjZfSE9QTElNSVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuY0luRGF0YS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuY0luRGF0YShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc2VsZiwgYW5jYnVmc2l6ZSwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgUmVjZWl2ZSB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgaW50byBhbmNidWZzaXplIGJ5dGVzIG9mCisgICAgICAgICMgYW5jaWxsYXJ5IGRhdGEgc3BhY2UsIHdoaWNoIHNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KKyAgICAgICAgIyBjb250YWluIHRoZSBmaXJzdCBpdGVtLCBidXQgdG9vIHNtYWxsIHRvIGNvbnRhaW4gdGhlIGhlYWRlcgorICAgICAgICAjIG9mIHRoZSBzZWNvbmQuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBNU0dfQ1RSVU5DIGlzIHNldAorICAgICAgICAjICh1bmxlc3MgaW5jbHVkZWQgaW4gaWdub3JlZmxhZ3MpLCBhbmQgb25seSBvbmUgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YSBpdGVtIGlzIHJldHVybmVkLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWZzaXplKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LklQUFJPVE9fSVBWNikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihjbXNnX3R5cGUsIHtzb2NrZXQuSVBWNl9UQ0xBU1MsIHNvY2tldC5JUFY2X0hPUExJTUlUfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoY21zZ19kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCAyNTUpCisKKyAgICAjIFRyeSB0aGUgYWJvdmUgdGVzdCB3aXRoIHZhcmlvdXMgYnVmZmVyIHNpemVzLgorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmMwLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29uZENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKyAxKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29uZENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiBTSVpFT0ZfSU5UKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmMySW50LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29uZENtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX0xFTigwKSAtIDEpCisKKyAgICBAdGVzdFNlY29uZENtc2dUcnVuY0xlbjBNaW51czEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICAjIFRlc3QgdHJ1bmNhdGlvbiBvZiB0aGUgc2Vjb25kIG9mIHR3byBjb250cm9sIG1lc3NhZ2VzIGluc2lkZQorICAgICAgICAjIGl0cyBhc3NvY2lhdGVkIGRhdGEuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWVENMQVNTLCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKAorICAgICAgICAgICAgc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKyBzb2NrZXQuQ01TR19MRU4oU0laRU9GX0lOVCkgLSAxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgICAgICBjbXNnX3R5cGVzID0ge3NvY2tldC5JUFY2X1RDTEFTUywgc29ja2V0LklQVjZfSE9QTElNSVR9CisKKyAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhLnBvcCgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgIGNtc2dfdHlwZXMucmVtb3ZlKGNtc2dfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoY21zZ19kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCAyNTUpCisKKyAgICAgICAgaWYgYW5jZGF0YToKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YS5wb3AoMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LklQUFJPVE9fSVBWNikKKyAgICAgICAgICAgIGNtc2dfdHlwZXMucmVtb3ZlKGNtc2dfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorCisgICAgQHRlc3RTZWNvbWRDbXNnVHJ1bmNJbkRhdGEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZWNvbWRDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisKKyMgRGVyaXZlIGNvbmNyZXRlIHRlc3QgY2xhc3NlcyBmb3IgZGlmZmVyZW50IHNvY2tldCB0eXBlcy4KKworY2xhc3MgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZShTZW5kcmVjdm1zZ0RncmFtRmxhZ3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ0Nvbm5lY3Rpb25sZXNzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4sIFVEUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVRFBUZXN0KFNlbmRtc2dDb25uZWN0aW9ubGVzc1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVRFBUZXN0KFJlY3Ztc2dUZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVURQVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUFRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UoU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnQ29ubmVjdGlvbmxlc3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4sIFVEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1VEUDZUZXN0KFNlbmRtc2dDb25uZWN0aW9ubGVzc1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1VEUDZUZXN0KFJlY3Ztc2dUZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9VRFA2VGVzdChSZWN2bXNnSW50b1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQUFJPVE9fSVBWNiIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdChSRkMzNTQyQW5jaWxsYXJ5VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQUFJPVE9fSVBWNiIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVDYiLCAiU09DS19ER1JBTSIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9SRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QoUmVjdm1zZ0ludG9NaXhpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJGQzM1NDJBbmNpbGxhcnlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBUQ1BUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnVENQVGVzdChTZW5kbXNnU3RyZWFtVGVzdHMsIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1RDUFRlc3QoUmVjdm1zZ1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dUQ1BUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVENQVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZShTZW5kcmVjdm1zZ1NDVFBGbGFnc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0ZWRTdHJlYW1UZXN0TWl4aW4sIFNDVFBTdHJlYW1CYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQiLCAiU09DS19TVFJFQU0iLCAiSVBQUk9UT19TQ1RQIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnU0NUUFN0cmVhbVRlc3QoU2VuZG1zZ1N0cmVhbVRlc3RzLCBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1NDVFBTdHJlYW1UZXN0KFJlY3Ztc2dUZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQiLCAiU09DS19TVFJFQU0iLCAiSVBQUk9UT19TQ1RQIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1NDVFBTdHJlYW1UZXN0KFJlY3Ztc2dJbnRvVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnU0NUUFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UoU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBVbml4U3RyZWFtQmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1VuaXhTdHJlYW1UZXN0KFNlbmRtc2dTdHJlYW1UZXN0cywgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVbml4U3RyZWFtVGVzdChSZWN2bXNnVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9Vbml4U3RyZWFtVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1VuaXhTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIiwgInJlY3Ztc2ciKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIiwgIlNPTF9TT0NLRVQiLCAiU0NNX1JJR0hUUyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1NDTVJpZ2h0c1N0cmVhbVRlc3QoU0NNUmlnaHRzVGVzdCwgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIsICJyZWN2bXNnX2ludG8iKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIiwgIlNPTF9TT0NLRVQiLCAiU0NNX1JJR0hUUyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9TQ01SaWdodHNTdHJlYW1UZXN0KFJlY3Ztc2dJbnRvTWl4aW4sIFNDTVJpZ2h0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworCisjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSBpbnRlcnJ1cHRpYmxlIHNlbmQvcmVjZWl2ZSBtZXRob2RzIHdpdGggYQorIyBzaWduYWwgd2hlbiBhIHRpbWVvdXQgaXMgc2V0LiAgVGhlc2UgdGVzdHMgYXZvaWQgaGF2aW5nIG11bHRpcGxlCisjIHRocmVhZHMgYWxpdmUgZHVyaW5nIHRoZSB0ZXN0IHNvIHRoYXQgdGhlIE9TIGNhbm5vdCBkZWxpdmVyIHRoZQorIyBzaWduYWwgdG8gdGhlIHdyb25nIG9uZS4KKworY2xhc3MgSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciBpbnRlcnJ1cHRlZCBzZW5kL3JlY2VpdmUgdGVzdHMuICBJbnN0YWxscyBhbgorICAgICMgZW1wdHkgaGFuZGxlciBmb3IgU0lHQUxSTSBhbmQgcmVtb3ZlcyBpdCBvbiB0ZWFyZG93biwgYWxvbmcgd2l0aAorICAgICMgYW55IHNjaGVkdWxlZCBhbGFybXMuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBvcmlnX2Fscm1faGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2lnbnVtLCBmcmFtZTogTm9uZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdBTFJNLCBvcmlnX2Fscm1faGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2V0QWxhcm0sIDApCisKKyAgICAjIFRpbWVvdXQgZm9yIHNvY2tldCBvcGVyYXRpb25zCisgICAgdGltZW91dCA9IDQuMAorCisgICAgIyBQcm92aWRlIHNldEFsYXJtKCkgbWV0aG9kIHRvIHNjaGVkdWxlIGRlbGl2ZXJ5IG9mIFNJR0FMUk0gYWZ0ZXIKKyAgICAjIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLCBvciBjYW5jZWwgaXQgaWYgemVybywgYW5kIGFuCisgICAgIyBhcHByb3ByaWF0ZSB0aW1lIHZhbHVlIHRvIHVzZS4gIFVzZSBzZXRpdGltZXIoKSBpZiBhdmFpbGFibGUuCisgICAgaWYgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKToKKyAgICAgICAgYWxhcm1fdGltZSA9IDAuMDUKKworICAgICAgICBkZWYgc2V0QWxhcm0oc2VsZiwgc2Vjb25kcyk6CisgICAgICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgc2Vjb25kcykKKyAgICBlbHNlOgorICAgICAgICAjIE9sZCBzeXN0ZW1zIG1heSBkZWxpdmVyIHRoZSBhbGFybSB1cCB0byBvbmUgc2Vjb25kIGVhcmx5CisgICAgICAgIGFsYXJtX3RpbWUgPSAyCisKKyAgICAgICAgZGVmIHNldEFsYXJtKHNlbGYsIHNlY29uZHMpOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKHNlY29uZHMpCisKKworIyBSZXF1aXJlIHNpZ2ludGVycnVwdCgpIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHN5c3RlbSBjYWxscyBhcmUKKyMgaW50ZXJydXB0ZWQgYnkgZGVmYXVsdC4KK0ByZXF1aXJlQXR0cnMoc2lnbmFsLCAic2lnaW50ZXJydXB0IikKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAiYWxhcm0iKSBvciBoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLAorICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGhhdmUgc2lnbmFsLmFsYXJtIG9yIHNpZ25hbC5zZXRpdGltZXIiKQorY2xhc3MgSW50ZXJydXB0ZWRSZWN2VGltZW91dFRlc3QoSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSwgVURQVGVzdEJhc2UpOgorICAgICMgVGVzdCBpbnRlcnJ1cHRpbmcgdGhlIHJlY3YqKCkgbWV0aG9kcyB3aXRoIHNpZ25hbHMgd2hlbiBhCisgICAgIyB0aW1lb3V0IGlzIHNldC4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydi5zZXR0aW1lb3V0KHNlbGYudGltZW91dCkKKworICAgIGRlZiBjaGVja0ludGVycnVwdGVkUmVjdihzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpIHJhaXNlcyBzb2NrZXQuZXJyb3Igd2l0aCBhbgorICAgICAgICAjIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCisgICAgICAgIHNlbGYuc2V0QWxhcm0oc2VsZi5hbGFybV90aW1lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvcikgYXMgY206CisgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2VGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdiwgMTAyNCkKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2SW50b1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3ZfaW50bywgYnl0ZWFycmF5KDEwMjQpKQorCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Zmcm9tVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdmZyb20sIDEwMjQpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdmZyb21JbnRvVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdmZyb21faW50bywgYnl0ZWFycmF5KDEwMjQpKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Ztc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2bXNnLCAxMDI0KQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdm1zZ0ludG9UaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2bXNnX2ludG8sIFtieXRlYXJyYXkoMTAyNCldKQorCisKKyMgUmVxdWlyZSBzaWdpbnRlcnJ1cHQoKSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBzeXN0ZW0gY2FsbHMgYXJlCisjIGludGVycnVwdGVkIGJ5IGRlZmF1bHQuCitAcmVxdWlyZUF0dHJzKHNpZ25hbCwgInNpZ2ludGVycnVwdCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIikgb3IgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICJEb24ndCBoYXZlIHNpZ25hbC5hbGFybSBvciBzaWduYWwuc2V0aXRpbWVyIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBJbnRlcnJ1cHRlZFNlbmRUaW1lb3V0VGVzdChJbnRlcnJ1cHRlZFRpbWVvdXRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvY2tldExpc3RlbmluZ1Rlc3RNaXhpbiwgVENQVGVzdEJhc2UpOgorICAgICMgVGVzdCBpbnRlcnJ1cHRpbmcgdGhlIGludGVycnVwdGlibGUgc2VuZCooKSBtZXRob2RzIHdpdGggc2lnbmFscworICAgICMgd2hlbiBhIHRpbWVvdXQgaXMgc2V0LgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBzZWxmLm5ld1NvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNlcnZfY29ubi5jbG9zZSkKKyAgICAgICAgIyBVc2UgYSB0aHJlYWQgdG8gY29tcGxldGUgdGhlIGNvbm5lY3Rpb24sIGJ1dCB3YWl0IGZvciBpdCB0bworICAgICAgICAjIHRlcm1pbmF0ZSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCwgc28gdGhhdCB0aGVyZSBpcyBvbmx5IG9uZQorICAgICAgICAjIHRocmVhZCB0byBhY2NlcHQgdGhlIHNpZ25hbC4KKyAgICAgICAgY2xpX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuZG9Db25uZWN0KQorICAgICAgICBjbGlfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiwgYWRkciA9IHNlbGYuc2Vydi5hY2NlcHQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5jbGlfY29ubi5jbG9zZSkKKyAgICAgICAgY2xpX3RocmVhZC5qb2luKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4uc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCisKKyAgICBkZWYgZG9Db25uZWN0KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZfY29ubi5jb25uZWN0KHNlbGYuc2Vydl9hZGRyKQorCisgICAgZGVmIGNoZWNrSW50ZXJydXB0ZWRTZW5kKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncyksIHJ1biBpbiBhIGxvb3AsIHJhaXNlcworICAgICAgICAjIHNvY2tldC5lcnJvciB3aXRoIGFuIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYQorICAgICAgICAjIHNpZ25hbC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKKworICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3RzIGhhdmUgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kLCBiImEiKjUxMikKKworICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFNlbmR0b1RpbWVvdXQoc2VsZik6CisgICAgICAgICMgUGFzc2luZyBhbiBhY3R1YWwgYWRkcmVzcyBoZXJlIGFzIFB5dGhvbidzIHdyYXBwZXIgZm9yCisgICAgICAgICMgc2VuZHRvKCkgZG9lc24ndCBhbGxvdyBwYXNzaW5nIGEgemVyby1sZW5ndGggb25lOyBQT1NJWAorICAgICAgICAjIHJlcXVpcmVzIHRoYXQgdGhlIGFkZHJlc3MgaXMgaWdub3JlZCBzaW5jZSB0aGUgc29ja2V0IGlzCisgICAgICAgICMgY29ubmVjdGlvbi1tb2RlLCBob3dldmVyLgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRTZW5kKHNlbGYuc2Vydl9jb25uLnNlbmR0bywgYiJhIio1MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2X2FkZHIpCisKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kbXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kbXNnLCBbYiJhIio1MTJdKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUQ1BDbG9zZXJUZXN0KFRocmVhZGVkVENQU29ja2V0VGVzdCk6CiAKQEAgLTEwODAsMTEgKzM1NTQsOCBAQAogICAgICAgICBwYXNzCiAKICAgICBpZiBoYXNhdHRyKHNvY2tldCwgIlNPQ0tfTk9OQkxPQ0siKToKKyAgICAgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyOCkKICAgICAgICAgZGVmIHRlc3RJbml0Tm9uQmxvY2tpbmcoc2VsZik6Ci0gICAgICAgICAgICB2ID0gbGludXhfdmVyc2lvbigpCi0gICAgICAgICAgICBpZiB2IDwgKDIsIDYsIDI4KToKLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAiLiIuam9pbihtYXAoc3RyLCB2KSkpCiAgICAgICAgICAgICAjIHJlaW5pdCBzZXJ2ZXIgc29ja2V0CiAgICAgICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNIHwKQEAgLTExODYsNyArMzY1Nyw3IEBACiAgICAgIiIiCiAKICAgICBidWZzaXplID0gLTEgIyBVc2UgZGVmYXVsdCBidWZmZXIgc2l6ZQotICAgIGVuY29kaW5nID0gJ3V0ZjgnCisgICAgZW5jb2RpbmcgPSAndXRmLTgnCiAgICAgZXJyb3JzID0gJ3N0cmljdCcKICAgICBuZXdsaW5lID0gTm9uZQogCkBAIC0xMzY3LDcgKzM4MzgsNyBAQAogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfcmFpc2VfZWludHIoKToKLSAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKGVycm5vLkVJTlRSKQorICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoZXJybm8uRUlOVFIsICJpbnRlcnJ1cHRlZCIpCiAKICAgICBkZWYgX3RleHRpb3dyYXBfbW9ja19zb2NrZXQoc2VsZiwgbW9jaywgYnVmZmVyaW5nPS0xKToKICAgICAgICAgcmF3ID0gc29ja2V0LlNvY2tldElPKG1vY2ssICJyIikKQEAgLTE0MDcsNyArMzg3OCw3IEBACiAgICAgICAgICAgICBkYXRhID0gYicnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gJycKLSAgICAgICAgICAgIGV4cGVjdGluZyA9IGV4cGVjdGluZy5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAgICAgZXhwZWN0aW5nID0gZXhwZWN0aW5nLmRlY29kZSgndXRmLTgnKQogICAgICAgICB3aGlsZSBsZW4oZGF0YSkgIT0gbGVuKGV4cGVjdGluZyk6CiAgICAgICAgICAgICBwYXJ0ID0gZm8ucmVhZChzaXplKQogICAgICAgICAgICAgaWYgbm90IHBhcnQ6CkBAIC0xNTY5LDcgKzQwNDAsNyBAQAogICAgICIiIlRlc3RzIGZvciBzb2NrZXQubWFrZWZpbGUoKSBpbiB0ZXh0IG1vZGUgKHJhdGhlciB0aGFuIGJpbmFyeSkiIiIKIAogICAgIHJlYWRfbW9kZSA9ICdyJwotICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmOCcpCisgICAgcmVhZF9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgd3JpdGVfbW9kZSA9ICd3YicKICAgICB3cml0ZV9tc2cgPSBNU0cKICAgICBuZXdsaW5lID0gJycKQEAgLTE1ODEsNyArNDA1Miw3IEBACiAgICAgcmVhZF9tb2RlID0gJ3JiJwogICAgIHJlYWRfbXNnID0gTVNHCiAgICAgd3JpdGVfbW9kZSA9ICd3JwotICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0Zi04JykKICAgICBuZXdsaW5lID0gJycKIAogCkBAIC0xNTg5LDkgKzQwNjAsOSBAQAogICAgICIiIlRlc3RzIGZvciBzb2NrZXQubWFrZWZpbGUoKSBpbiB0ZXh0IG1vZGUgKHJhdGhlciB0aGFuIGJpbmFyeSkiIiIKIAogICAgIHJlYWRfbW9kZSA9ICdyJwotICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmOCcpCisgICAgcmVhZF9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgd3JpdGVfbW9kZSA9ICd3JwotICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0Zi04JykKICAgICBuZXdsaW5lID0gJycKIAogCkBAIC0xODgyLDYgKzQzNTMsNzggQEAKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHMuYmluZCwgYWRkcmVzcykKIAorICAgIGRlZiB0ZXN0U3RyTmFtZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGFuIGFic3RyYWN0IG5hbWUgY2FuIGJlIHBhc3NlZCBhcyBhIHN0cmluZy4KKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5iaW5kKCJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRzb2NrbmFtZSgpLCBiIlx4MDBweXRob25ceDAwdGVzdFx4MDAiKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcy5jbG9zZSgpCisKK2NsYXNzIFRlc3RVbml4RG9tYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorCisgICAgZGVmIGVuY29kZWQoc2VsZiwgcGF0aCk6CisgICAgICAgICMgUmV0dXJuIHRoZSBnaXZlbiBwYXRoIGVuY29kZWQgaW4gdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nLAorICAgICAgICAjIG9yIHNraXAgdGhlIHRlc3QgaWYgdGhpcyBpcyBub3QgcG9zc2libGUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBvcy5mc2VuY29kZShwYXRoKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiUGF0aG5hbWUgezAhYX0gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICJzeXN0ZW0gZW5jb2RpbmcgezEhcn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgcGF0aCwgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKKworICAgIGRlZiBiaW5kKHNlbGYsIHNvY2ssIHBhdGgpOgorICAgICAgICAjIEJpbmQgdGhlIHNvY2tldAorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmJpbmQocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN0cihlKSA9PSAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICAgICAiUGF0aG5hbWUgezAhYX0gaXMgdG9vIGxvbmcgdG8gc2VydmUgYXMgYSBBRl9VTklYIHBhdGgiCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQocGF0aCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdFN0ckFkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGFuZCByZXRyaWV2aW5nIGEgbm9ybWFsIHN0cmluZyBwYXRobmFtZS4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgcGF0aCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RCeXRlc0FkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGEgYnl0ZXMgcGF0aG5hbWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHNlbGYuZW5jb2RlZChwYXRoKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RTdXJyb2dhdGVlc2NhcGVCaW5kKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhIHZhbGlkIG5vbi1BU0NJSSBwYXRobmFtZSwgd2l0aCB0aGUKKyAgICAgICAgIyBub24tQVNDSUkgYnl0ZXMgc3VwcGxpZWQgdXNpbmcgc3Vycm9nYXRlZXNjYXBlIGVuY29kaW5nLgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOX1VOSUNPREUpCisgICAgICAgIGIgPSBzZWxmLmVuY29kZWQocGF0aCkKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgYi5kZWNvZGUoImFzY2lpIiwgInN1cnJvZ2F0ZWVzY2FwZSIpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zb2NrLmdldHNvY2tuYW1lKCksIHBhdGgpCisKKyAgICBkZWYgdGVzdFVuZW5jb2RhYmxlQWRkcihzZWxmKToKKyAgICAgICAgIyBUZXN0IGJpbmRpbmcgdG8gYSBwYXRobmFtZSB0aGF0IGNhbm5vdCBiZSBlbmNvZGVkIGluIHRoZQorICAgICAgICAjIGZpbGUgc3lzdGVtIGVuY29kaW5nLgorICAgICAgICBpZiBzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm8gdW5lbmNvZGFibGUgZmlsZW5hbWUgYXZhaWxhYmxlIikKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSkKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgcGF0aCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgQnVmZmVySU9UZXN0KFNvY2tldENvbm5lY3RlZFRlc3QpOgpAQCAtMjA4MiwxMSArNDYyNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAiU09DS19DTE9FWEVDIG5vdCBkZWZpbmVkIikKIEB1bml0dGVzdC5za2lwVW5sZXNzKGZjbnRsLCAibW9kdWxlIGZjbnRsIG5vdCBhdmFpbGFibGUiKQogY2xhc3MgQ2xvZXhlY0NvbnN0YW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyOCkKICAgICBkZWYgdGVzdF9TT0NLX0NMT0VYRUMoc2VsZik6Ci0gICAgICAgIHYgPSBsaW51eF92ZXJzaW9uKCkKLSAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlICIuIi5qb2luKG1hcChzdHIsIHYpKSkKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPQ0tfU1RSRUFNIHwgc29ja2V0LlNPQ0tfQ0xPRVhFQykgYXMgczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnR5cGUgJiBzb2NrZXQuU09DS19DTE9FWEVDKQpAQCAtMjEwNCwxMSArNDY0NCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMudHlwZSAmIHNvY2tldC5TT0NLX05PTkJMT0NLKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHRpbWVvdXQoKSwgTm9uZSkKIAorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgZGVmIHRlc3RfU09DS19OT05CTE9DSyhzZWxmKToKLSAgICAgICAgdiA9IGxpbnV4X3ZlcnNpb24oKQotICAgICAgICBpZiB2IDwgKDIsIDYsIDI4KToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkxpbnV4IGtlcm5lbCAyLjYuMjggb3IgaGlnaGVyIHJlcXVpcmVkLCBub3QgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICUgIi4iLmpvaW4obWFwKHN0ciwgdikpKQogICAgICAgICAjIGEgbG90IG9mIGl0IHNlZW1zIHNpbGx5IGFuZCByZWR1bmRhbnQsIGJ1dCBJIHdhbnRlZCB0byB0ZXN0IHRoYXQKICAgICAgICAgIyBjaGFuZ2luZyBiYWNrIGFuZCBmb3J0aCB3b3JrZWQgb2sKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULApAQCAtMjE0MSw2ICs0Njc4LDEwOSBAQAogICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsICJXaW5kb3dzIHNwZWNpZmljIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKG11bHRpcHJvY2Vzc2luZywgIm5lZWQgbXVsdGlwcm9jZXNzaW5nIikKK2NsYXNzIFRlc3RTb2NrZXRTaGFyaW5nKFNvY2tldFRDUFRlc3QpOgorICAgICMgVGhpcyBtdXN0IGJlIGNsYXNzbWV0aG9kIGFuZCBub3Qgc3RhdGljbWV0aG9kIG9yIG11bHRpcHJvY2Vzc2luZworICAgICMgd29uJ3QgYmUgYWJsZSB0byBib290c3RyYXAgaXQuCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJlbW90ZVByb2Nlc3NTZXJ2ZXIoY2xzLCBxKToKKyAgICAgICAgIyBSZWNyZWF0ZSBzb2NrZXQgZnJvbSBzaGFyZWQgZGF0YQorICAgICAgICBzZGF0YSA9IHEuZ2V0KCkKKyAgICAgICAgbWVzc2FnZSA9IHEuZ2V0KCkKKworICAgICAgICBzID0gc29ja2V0LmZyb21zaGFyZShzZGF0YSkKKyAgICAgICAgczIsIGMgPSBzLmFjY2VwdCgpCisKKyAgICAgICAgIyBTZW5kIHRoZSBtZXNzYWdlCisgICAgICAgIHMyLnNlbmRhbGwobWVzc2FnZSkKKyAgICAgICAgczIuY2xvc2UoKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0U2hhcmUoc2VsZik6CisgICAgICAgICMgVHJhbnNmZXIgdGhlIGxpc3RlbmluZyBzZXJ2ZXIgc29ja2V0IHRvIGFub3RoZXIgcHJvY2VzcworICAgICAgICAjIGFuZCBzZXJ2aWNlIGl0IGZyb20gdGhlcmUuCisKKyAgICAgICAgIyBDcmVhdGUgcHJvY2VzczoKKyAgICAgICAgcSA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpCisgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5yZW1vdGVQcm9jZXNzU2VydmVyLCBhcmdzPShxLCkpCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgICMgR2V0IHRoZSBzaGFyZWQgc29ja2V0IGRhdGEKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShwLnBpZCkKKworICAgICAgICAjIFBhc3MgdGhlIHNoYXJlZCBzb2NrZXQgdG8gdGhlIG90aGVyIHByb2Nlc3MKKyAgICAgICAgYWRkciA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCisgICAgICAgIHEucHV0KGRhdGEpCisKKyAgICAgICAgIyBUaGUgZGF0YSB0aGF0IHRoZSBzZXJ2ZXIgd2lsbCBzZW5kIHVzCisgICAgICAgIG1lc3NhZ2UgPSBiInNsYXBtYWhmcm8iCisgICAgICAgIHEucHV0KG1lc3NhZ2UpCisKKyAgICAgICAgIyBDb25uZWN0CisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcikKKyAgICAgICAgIyAgbGlzdGVuIGZvciB0aGUgZGF0YQorICAgICAgICBtID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGEgPSBzLnJlY3YoMTAwKQorICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIG0uYXBwZW5kKGRhdGEpCisgICAgICAgIHMuY2xvc2UoKQorICAgICAgICByZWNlaXZlZCA9IGIiIi5qb2luKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQsIG1lc3NhZ2UpCisgICAgICAgIHAuam9pbigpCisKKyAgICBkZWYgdGVzdFNoYXJlTGVuZ3RoKHNlbGYpOgorICAgICAgICBkYXRhID0gc2VsZi5zZXJ2LnNoYXJlKG9zLmdldHBpZCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrZXQuZnJvbXNoYXJlLCBkYXRhWzotMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNvY2tldC5mcm9tc2hhcmUsIGRhdGErYiJmb28iKQorCisgICAgZGVmIGNvbXBhcmVTb2NrZXRzKHNlbGYsIG9yZywgb3RoZXIpOgorICAgICAgICAjIHNvY2tldCBzaGFyaW5nIGlzIGV4cGVjdGVkIHRvIHdvcmsgb25seSBmb3IgYmxvY2tpbmcgc29ja2V0CisgICAgICAgICMgc2luY2UgdGhlIGludGVybmFsIHB5dGhvbiB0aW1vdXQgdmFsdWUgaXNuJ3QgdHJhbnNmZXJlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZ2V0dGltZW91dCgpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5nZXR0aW1lb3V0KCksIG90aGVyLmdldHRpbWVvdXQoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5mYW1pbHksIG90aGVyLmZhbWlseSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcudHlwZSwgb3RoZXIudHlwZSkKKyAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgIjAiIGZvciBwcm90bywgdGhlbgorICAgICAgICAjIGludGVybmFsbHkgd2luZG93cyB3aWxsIGhhdmUgcGlja2VkIHRoZSBjb3JyZWN0IHZhbHVlLgorICAgICAgICAjIFB5dGhvbiBpbnRyb3NwZWN0aW9uIG9uIHRoZSBzb2NrZXQgaG93ZXZlciB3aWxsIHN0aWxsIHJldHVybgorICAgICAgICAjIDAuICBGb3IgdGhlIHNoYXJlZCBzb2NrZXQsIHRoZSBweXRob24gdmFsdWUgaXMgcmVjcmVhdGVkCisgICAgICAgICMgZnJvbSB0aGUgYWN0dWFsIHZhbHVlLCBzbyBpdCBtYXkgbm90IGNvbXBhcmUgY29ycmVjdGx5LgorICAgICAgICBpZiBvcmcucHJvdG8gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLnByb3RvLCBvdGhlci5wcm90bykKKworICAgIGRlZiB0ZXN0U2hhcmVMb2NhbChzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tc2hhcmUoZGF0YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jb21wYXJlU29ja2V0cyhzZWxmLnNlcnYsIHMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0VHlwZXMoc2VsZik6CisgICAgICAgIGZhbWlsaWVzID0gW3NvY2tldC5BRl9JTkVULCBzb2NrZXQuQUZfSU5FVDZdCisgICAgICAgIHR5cGVzID0gW3NvY2tldC5TT0NLX1NUUkVBTSwgc29ja2V0LlNPQ0tfREdSQU1dCisgICAgICAgIGZvciBmIGluIGZhbWlsaWVzOgorICAgICAgICAgICAgZm9yIHQgaW4gdHlwZXM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzb2NrZXQuc29ja2V0KGYsIHQpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgVGhpcyBjb21iaW5hdGlvbiBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc291cmNlLnNoYXJlKG9zLmdldHBpZCgpKQorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgPSBzb2NrZXQuZnJvbXNoYXJlKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVNvY2tldHMoc291cmNlLCBzaGFyZWQpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQuY2xvc2UoKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0dlbmVyYWxNb2R1bGVUZXN0cywgQmFzaWNUQ1BUZXN0LCBUQ1BDbG9zZXJUZXN0LCBUQ1BUaW1lb3V0VGVzdCwKICAgICAgICAgICAgICBUZXN0RXhjZXB0aW9ucywgQnVmZmVySU9UZXN0LCBCYXNpY1RDUFRlc3QyLCBCYXNpY1VEUFRlc3QsIFVEUFRpbWVvdXRUZXN0IF0KQEAgLTIxNjQsMTEgKzQ4MDQsNDEgQEAKICAgICBdKQogICAgIGlmIGhhc2F0dHIoc29ja2V0LCAic29ja2V0cGFpciIpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoQmFzaWNTb2NrZXRQYWlyVGVzdCkKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4Mic6CisgICAgaWYgaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIik6CisgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0VW5peERvbWFpbikKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4JzoKICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RMaW51eEFic3RyYWN0TmFtZXNwYWNlKQogICAgIGlmIGlzVGlwY0F2YWlsYWJsZSgpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoVElQQ1Rlc3QpCiAgICAgICAgIHRlc3RzLmFwcGVuZChUSVBDVGhyZWFkYWJsZVRlc3QpCisgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQorICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5leHRlbmQoWworICAgICAgICBDbXNnTWFjcm9UZXN0cywKKyAgICAgICAgU2VuZG1zZ1VEUFRlc3QsCisgICAgICAgIFJlY3Ztc2dVRFBUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1VEUFRlc3QsCisgICAgICAgIFNlbmRtc2dVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ1VEUDZUZXN0LAorICAgICAgICBSZWN2bXNnUkZDMzU0MkFuY2lsbGFyeVVEUDZUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9VRFA2VGVzdCwKKyAgICAgICAgU2VuZG1zZ1RDUFRlc3QsCisgICAgICAgIFJlY3Ztc2dUQ1BUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1RDUFRlc3QsCisgICAgICAgIFNlbmRtc2dTQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ1NDVFBTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnSW50b1NDVFBTdHJlYW1UZXN0LAorICAgICAgICBTZW5kbXNnVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dVbml4U3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9Vbml4U3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ1NDTVJpZ2h0c1N0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvU0NNUmlnaHRzU3RyZWFtVGVzdCwKKyAgICAgICAgIyBUaGVzZSBhcmUgc2xvdyB3aGVuIHNldGl0aW1lcigpIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAgSW50ZXJydXB0ZWRSZWN2VGltZW91dFRlc3QsCisgICAgICAgIEludGVycnVwdGVkU2VuZFRpbWVvdXRUZXN0LAorICAgICAgICBUZXN0U29ja2V0U2hhcmluZywKKyAgICBdKQogCiAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCBjYTIzMzAxLi4zNTNmOGZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMjQ0LDcgKzI0NCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgKz0gMQogICAgICAgICAgICAgICAgIGlmIHNlbGYuY2FsbGVkID09IDE6CiAgICAgICAgICAgICAgICAgICAgICMgcmFpc2UgdGhlIGV4Y2VwdGlvbiBvbiBmaXJzdCBjYWxsCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGVjdC5lcnJvcihlcnJuby5FSU5UUiwgb3Muc3RyZXJyb3IoZXJybm8uRUlOVFIpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCBvcy5zdHJlcnJvcihlcnJuby5FSU5UUikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBSZXR1cm4gcmVhbCBzZWxlY3QgdmFsdWUgZm9yIGNvbnNlY3V0aXZlIGNhbGxzCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbGRfc2VsZWN0KCphcmdzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCBkNGM1ZTYzLi40Y2U5OGI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtNDIsNiArNDIsOSBAQAogT05MWUtFWSA9IGRhdGFfZmlsZSgic3NsX2tleS5wZW0iKQogQllURVNfT05MWUNFUlQgPSBvcy5mc2VuY29kZShPTkxZQ0VSVCkKIEJZVEVTX09OTFlLRVkgPSBvcy5mc2VuY29kZShPTkxZS0VZKQorQ0VSVEZJTEVfUFJPVEVDVEVEID0gZGF0YV9maWxlKCJrZXljZXJ0LnBhc3N3ZC5wZW0iKQorT05MWUtFWV9QUk9URUNURUQgPSBkYXRhX2ZpbGUoInNzbF9rZXkucGFzc3dkLnBlbSIpCitLRVlfUEFTU1dPUkQgPSAic29tZXBhc3MiCiBDQVBBVEggPSBkYXRhX2ZpbGUoImNhcGF0aCIpCiBCWVRFU19DQVBBVEggPSBvcy5mc2VuY29kZShDQVBBVEgpCiAKQEAgLTUzLDYgKzU2LDggQEAKIEJBREtFWSA9IGRhdGFfZmlsZSgiYmFka2V5LnBlbSIpCiBOT0tJQUNFUlQgPSBkYXRhX2ZpbGUoIm5va2lhLnBlbSIpCiAKK0RIRklMRSA9IGRhdGFfZmlsZSgiZGg1MTIucGVtIikKK0JZVEVTX0RIRklMRSA9IG9zLmZzZW5jb2RlKERIRklMRSkKIAogZGVmIGhhbmRsZV9lcnJvcihwcmVmaXgpOgogICAgIGV4Y19mb3JtYXQgPSAnICcuam9pbih0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpKQpAQCAtOTUsNyArMTAwLDE0IEBACiAgICAgICAgIHNzbC5DRVJUX05PTkUKICAgICAgICAgc3NsLkNFUlRfT1BUSU9OQUwKICAgICAgICAgc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgc3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorICAgICAgICBzc2wuT1BfU0lOR0xFX0RIX1VTRQorICAgICAgICBpZiBzc2wuSEFTX0VDREg6CisgICAgICAgICAgICBzc2wuT1BfU0lOR0xFX0VDREhfVVNFCisgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMCk6CisgICAgICAgICAgICBzc2wuT1BfTk9fQ09NUFJFU1NJT04KICAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX1NOSSwge1RydWUsIEZhbHNlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX0VDREgsIHtUcnVlLCBGYWxzZX0pCiAKICAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CiAgICAgICAgIHYgPSBzc2wuUkFORF9zdGF0dXMoKQpAQCAtMTAzLDYgKzExNSwxNiBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4gUkFORF9zdGF0dXMgaXMgJWQgKCVzKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh2LCAodiBhbmQgInN1ZmZpY2llbnQgcmFuZG9tbmVzcyIpIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN1ZmZpY2llbnQgcmFuZG9tbmVzcyIpKQorCisgICAgICAgIGRhdGEsIGlzX2NyeXB0b2dyYXBoaWMgPSBzc2wuUkFORF9wc2V1ZG9fYnl0ZXMoMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpc19jcnlwdG9ncmFwaGljLCB2ID09IDEpCisgICAgICAgIGlmIHY6CisgICAgICAgICAgICBkYXRhID0gc3NsLlJBTkRfYnl0ZXMoMTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbC5SQU5EX2J5dGVzLCAxNikKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNzbC5SQU5EX2VnZCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuUkFORF9lZ2QsICdmb28nLCAxKQogICAgICAgICBzc2wuUkFORF9hZGQoInRoaXMgaXMgYSByYW5kb20gc3RyaW5nIiwgNzUuMCkKQEAgLTMzMyw2ICszNTUsMjUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC53cmFwX3NvY2tldCwgc29jaywgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ic29tZS5ob3N0bmFtZSIpCiAKKyAgICBkZWYgdGVzdF91bmtub3duX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgIyBzaG91bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgdW5rbm93biB0eXBlCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCJ0bHMtdW5pcXVlIiBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICIndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIG5vdCBhdmFpbGFibGUiKQorICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgorICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpKQorICAgICAgICAjIHRoZSBzYW1lIGZvciBzZXJ2ZXItc2lkZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKKwogY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsCkBAIC00MjMsNiArNDY0LDYwIEBACiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImtleSB2YWx1ZXMgbWlzbWF0Y2giKToKICAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJULCBPTkxZS0VZKQorICAgICAgICAjIFBhc3N3b3JkIHByb3RlY3RlZCBrZXkgYW5kIGNlcnQKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPUtFWV9QQVNTV09SRCkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPUtFWV9QQVNTV09SRC5lbmNvZGUoKSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9Ynl0ZWFycmF5KEtFWV9QQVNTV09SRC5lbmNvZGUoKSkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oT05MWUNFUlQsIE9OTFlLRVlfUFJPVEVDVEVELCBLRVlfUEFTU1dPUkQpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oT05MWUNFUlQsIE9OTFlLRVlfUFJPVEVDVEVELCBLRVlfUEFTU1dPUkQuZW5jb2RlKCkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oT05MWUNFUlQsIE9OTFlLRVlfUFJPVEVDVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShLRVlfUEFTU1dPUkQuZW5jb2RlKCkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAic2hvdWxkIGJlIGEgc3RyaW5nIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPSJiYWRwYXNzIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJjYW5ub3QgYmUgbG9uZ2VyIik6CisgICAgICAgICAgICAjIG9wZW5zc2wgaGFzIGEgZml4ZWQgbGltaXQgb24gdGhlIHBhc3N3b3JkIGJ1ZmZlci4KKyAgICAgICAgICAgICMgUEVNX0JVRlNJWkUgaXMgZ2VuZXJhbGx5IHNldCB0byAxa2IuCisgICAgICAgICAgICAjIFJldHVybiBhIHN0cmluZyBsYXJnZXIgdGhhbiB0aGlzLgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWInYScgKiAxMDI0MDApCisgICAgICAgICMgUGFzc3dvcmQgY2FsbGJhY2sKKyAgICAgICAgZGVmIGdldHBhc3NfdW5pY29kZSgpOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRAorICAgICAgICBkZWYgZ2V0cGFzc19ieXRlcygpOgorICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRC5lbmNvZGUoKQorICAgICAgICBkZWYgZ2V0cGFzc19ieXRlYXJyYXkoKToKKyAgICAgICAgICAgIHJldHVybiBieXRlYXJyYXkoS0VZX1BBU1NXT1JELmVuY29kZSgpKQorICAgICAgICBkZWYgZ2V0cGFzc19iYWRwYXNzKCk6CisgICAgICAgICAgICByZXR1cm4gImJhZHBhc3MiCisgICAgICAgIGRlZiBnZXRwYXNzX2h1Z2UoKToKKyAgICAgICAgICAgIHJldHVybiBiJ2EnICogKDEwMjQgKiAxMDI0KQorICAgICAgICBkZWYgZ2V0cGFzc19iYWRfdHlwZSgpOgorICAgICAgICAgICAgcmV0dXJuIDkKKyAgICAgICAgZGVmIGdldHBhc3NfZXhjZXB0aW9uKCk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2dldHBhc3MgZXJyb3InKQorICAgICAgICBjbGFzcyBHZXRQYXNzQ2FsbGFibGU6CisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRAorICAgICAgICAgICAgZGVmIGdldHBhc3Moc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEtFWV9QQVNTV09SRAorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc191bmljb2RlKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19ieXRlcykKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYnl0ZWFycmF5KQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9R2V0UGFzc0NhbGxhYmxlKCkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPUdldFBhc3NDYWxsYWJsZSgpLmdldHBhc3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2JhZHBhc3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2Fubm90IGJlIGxvbmdlciIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfaHVnZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIm11c3QgcmV0dXJuIGEgc3RyaW5nIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19iYWRfdHlwZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgImdldHBhc3MgZXJyb3IiKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2V4Y2VwdGlvbikKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlIHBhc3N3b3JkIGZ1bmN0aW9uIGlzbid0IGNhbGxlZCBpZiBpdCBpc24ndCBuZWVkZWQKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSwgcGFzc3dvcmQ9Z2V0cGFzc19leGNlcHRpb24pCiAKICAgICBkZWYgdGVzdF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2VsZik6CiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKQEAgLTQ0Myw2ICs1MzgsMTkgQEAKICAgICAgICAgIyBJc3N1ZSAjMTA5ODk6IGNyYXNoIGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgdHlwZSBpcyBpbnZhbGlkCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTm9uZSwgVHJ1ZSkKIAorICAgIGRlZiB0ZXN0X2xvYWRfZGhfcGFyYW1zKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhESEZJTEUpCisgICAgICAgIGlmIG9zLm5hbWUgIT0gJ250JzoKKyAgICAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhCWVRFU19ESEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LmxvYWRfZGhfcGFyYW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX2RoX3BhcmFtcywgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcikgYXMgY206CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoV1JPTkdDRVJUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PRU5UKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgY206CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQ0VSVEZJTEUpCisKICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAogICAgIGRlZiB0ZXN0X3Nlc3Npb25fc3RhdHMoc2VsZik6CiAgICAgICAgIGZvciBwcm90byBpbiBQUk9UT0NPTFM6CkBAIC00NjcsNiArNTc1LDU3IEBACiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY3R4LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX0VDREgsICJFQ0RIIGRpc2FibGVkIG9uIHRoaXMgT3BlblNTTCBidWlsZCIpCisgICAgZGVmIHRlc3Rfc2V0X2VjZGhfY3VydmUoc2VsZik6CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY3R4LnNldF9lY2RoX2N1cnZlKCJwcmltZTI1NnYxIikKKyAgICAgICAgY3R4LnNldF9lY2RoX2N1cnZlKGIicHJpbWUyNTZ2MSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlLCBiImZvbyIpCisKKworY2xhc3MgU1NMRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgICMgVGhlIHN0cigpIG9mIGEgU1NMRXJyb3IgZG9lc24ndCBpbmNsdWRlIHRoZSBlcnJubworICAgICAgICBlID0gc3NsLlNTTEVycm9yKDEsICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgMSkKKyAgICAgICAgIyBTYW1lIGZvciBhIHN1YmNsYXNzCisgICAgICAgIGUgPSBzc2wuU1NMWmVyb1JldHVybkVycm9yKDEsICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgMSkKKworICAgIGRlZiB0ZXN0X2xpYl9yZWFzb24oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgbGlicmFyeSBhbmQgcmVhc29uIGF0dHJpYnV0ZXMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgY206CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQ0VSVEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmxpYnJhcnksICdQRU0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb24sICdOT19TVEFSVF9MSU5FJykKKyAgICAgICAgcyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIltQRU06IE5PX1NUQVJUX0xJTkVdIG5vIHN0YXJ0IGxpbmUiKSwgcykKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGFwcHJvcHJpYXRlIFNTTEVycm9yIHN1YmNsYXNzIGlzIHJhaXNlZAorICAgICAgICAjICh0aGlzIG9ubHkgdGVzdHMgb25lIG9mIHRoZW0pCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgczoKKyAgICAgICAgICAgIHMuYmluZCgoIjEyNy4wLjAuMSIsIDApKQorICAgICAgICAgICAgcy5saXN0ZW4oNSkKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIGM6CisgICAgICAgICAgICAgICAgYy5jb25uZWN0KHMuZ2V0c29ja25hbWUoKSkKKyAgICAgICAgICAgICAgICBjLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICAgICAgICAgIGMgPSBjdHgud3JhcF9zb2NrZXQoYywgRmFsc2UsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTFdhbnRSZWFkRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBjLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgcyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiVGhlIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlIChyZWFkKSIpLCBzKQorICAgICAgICAgICAgICAgICMgRm9yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQpCisKIAogY2xhc3MgTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01MjksMTMgKzY4OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1dSSVRFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSwgNS4wKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQogICAgICAgICAgICAgICAgICMgU1NMIGVzdGFibGlzaGVkCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKICAgICAgICAgICAgIGZpbmFsbHk6CkBAIC02NTUsMzcgKzgxMSwzOSBAQAogICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxCiAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQotICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKKyAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQogICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5OZWVkZWQgJWQgY2FsbHMgdG8gZG9faGFuZHNoYWtlKCkgdG8gZXN0YWJsaXNoIHNlc3Npb24uXG4iICUgY291bnQpCiAKICAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzdm4ucHl0aG9uLm9yZyIpOgotICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MykpCi0gICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uIHN2bi5weXRob24ub3JnOjQ0MyEiKQorICAgICAgICBkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShob3N0LCBwb3J0LCBjZXJ0PU5vbmUpOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChob3N0KToKKyAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCkpCisgICAgICAgICAgICAgICAgaWYgbm90IHBlbToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKIAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpLCBjYV9jZXJ0cz1DRVJURklMRSkKLSAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKLSAgICAgICAgICAgICAgICAjc2hvdWxkIGZhaWwKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Q0VSVEZJTEUpCisgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgorICAgICAgICAgICAgICAgICAgICAjc2hvdWxkIGZhaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3IgJXM6JXMhIiAlIChwZW0sIGhvc3QsIHBvcnQpKQorCisgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1jZXJ0KQorICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3Igc3ZuLnB5dGhvbi5vcmchIiAlIHBlbSkKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCiAKLSAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpLCBjYV9jZXJ0cz1TVk5fUFlUSE9OX09SR19ST09UX0NFUlQpCi0gICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uIHN2bi5weXRob24ub3JnOjQ0MyEiKQotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yIHN2bi5weXRob24ub3JnOjQ0MyBpc1xuJXNcbiIgJSBwZW0pCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ3N2bi5weXRob24ub3JnJywgNDQzLCBTVk5fUFlUSE9OX09SR19ST09UX0NFUlQpCisgICAgICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgorICAgICAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgnaXB2Ni5nb29nbGUuY29tJywgNDQzKQogCiAgICAgZGVmIHRlc3RfY2lwaGVycyhzZWxmKToKICAgICAgICAgcmVtb3RlID0gKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MykKQEAgLTc2Myw2ICs5MjEsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gc2VsZi5zZXJ2ZXIuY29udGV4dC53cmFwX3NvY2tldCgKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAjIFhYWCBWYXJpb3VzIGVycm9ycyBjYW4gaGF2ZSBoYXBwZW5lZCBoZXJlLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICAjIGEgbWlzbWF0Y2hpbmcgcHJvdG9jb2wgdmVyc2lvbiwgYW4gaW52YWxpZCBjZXJ0aWZpY2F0ZSwKQEAgLTc4NSw2ICs5NDQsOCBAQAogICAgICAgICAgICAgICAgICAgICBjaXBoZXIgPSBzZWxmLnNzbGNvbm4uY2lwaGVyKCkKICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiBjb25uZWN0aW9uIGNpcGhlciBpcyBub3cgIiArIHN0cihjaXBoZXIpICsgIlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBzZXJ2ZXI6IHNlbGVjdGVkIHByb3RvY29sIGlzIG5vdyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3RyKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSkgKyAiXG4iKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICAgICBkZWYgcmVhZChzZWxmKToKQEAgLTgzOSw2ICsxMDAwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogY29ubmVjdGlvbiBpcyBub3cgdW5lbmNyeXB0ZWQuLi5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInQ0IgdGxzLXVuaXF1ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiByZWFkIENCIHRscy11bmlxdWUgZnJvbSBjbGllbnQsIHNlbmRpbmcgb3VyIENCIGRhdGEuLi5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc3NsY29ubi5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIoZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpICsgYiJcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0LnZlcmJvc2UgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25jaGF0dHkpOgpAQCAtODU4LDcgKzEwMjQsNyBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2VydGlmaWNhdGU9Tm9uZSwgc3NsX3ZlcnNpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNlcnRyZXFzPU5vbmUsIGNhY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzdGFydHRsc19zZXJ2ZXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICBucG5fcHJvdG9jb2xzPU5vbmUsIGNpcGhlcnM9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgICAgIGlmIGNvbnRleHQ6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICAgZWxzZToKQEAgLTg3MSw2ICsxMDM3LDggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWNlcnRzKQogICAgICAgICAgICAgICAgIGlmIGNlcnRpZmljYXRlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRpZmljYXRlKQorICAgICAgICAgICAgICAgIGlmIG5wbl9wcm90b2NvbHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgICAgIGlmIGNpcGhlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQogICAgICAgICAgICAgc2VsZi5jaGF0dHkgPSBjaGF0dHkKQEAgLTg4MCw2ICsxMDQ4LDcgQEAKICAgICAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc29jaykKICAgICAgICAgICAgIHNlbGYuZmxhZyA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfcHJvdG9jb2xzID0gW10KICAgICAgICAgICAgIHNlbGYuY29ubl9lcnJvcnMgPSBbXQogICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgc2VsZi5kYWVtb24gPSBUcnVlCkBAIC05NDcsMTIgKzExMTYsMTEgQEAKICAgICAgICAgICAgICAgICBkZWYgX2RvX3NzbF9oYW5kc2hha2Uoc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gaW4gKHNzbC5TU0xfRVJST1JfV0FOVF9SRUFELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5TU0xfRVJST1JfV0FOVF9XUklURSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfRU9GOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoc3NsLlNTTFdhbnRSZWFkRXJyb3IsIHNzbC5TU0xXYW50V3JpdGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IGVycm5vLkVDT05OQUJPUlRFRDoKQEAgLTEwNzUsNiArMTI0Myw3IEBACiAgICAgICAgIExhdW5jaCBhIHNlcnZlciwgY29ubmVjdCBhIGNsaWVudCB0byBpdCBhbmQgdHJ5IHZhcmlvdXMgcmVhZHMKICAgICAgICAgYW5kIHdyaXRlcy4KICAgICAgICAgIiIiCisgICAgICAgIHN0YXRzID0ge30KICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9c2VydmVyX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9Y2hhdHR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKQEAgLTExMDAsNyArMTI2OSwxNCBAQAogICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBjbGllbnQ6ICBjbG9zaW5nIGNvbm5lY3Rpb24uXG4iKQorICAgICAgICAgICAgICAgIHN0YXRzLnVwZGF0ZSh7CisgICAgICAgICAgICAgICAgICAgICdjb21wcmVzc2lvbic6IHMuY29tcHJlc3Npb24oKSwKKyAgICAgICAgICAgICAgICAgICAgJ2NpcGhlcic6IHMuY2lwaGVyKCksCisgICAgICAgICAgICAgICAgICAgICdjbGllbnRfbnBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICAgICBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXSA9IHNlcnZlci5zZWxlY3RlZF9wcm90b2NvbHMKKyAgICAgICAgcmV0dXJuIHN0YXRzCiAKICAgICBkZWYgdHJ5X3Byb3RvY29sX2NvbWJvKHNlcnZlcl9wcm90b2NvbCwgY2xpZW50X3Byb3RvY29sLCBleHBlY3Rfc3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRzcmVxcz1Ob25lLCBzZXJ2ZXJfb3B0aW9ucz0wLCBjbGllbnRfb3B0aW9ucz0wKToKQEAgLTEyNTIsNyArMTQyOCw4IEBACiAgICAgICAgICAgICAgICAgdC5qb2luKCkKIAogICAgICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAotICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyksICJuZWVkIFNTTHYyIikKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlblNTTCBpcyBjb21waWxlZCB3aXRob3V0IFNTTHYyIHN1cHBvcnQiKQogICAgICAgICBkZWYgdGVzdF9wcm90b2NvbF9zc2x2MihzZWxmKToKICAgICAgICAgICAgICIiIkNvbm5lY3RpbmcgdG8gYW4gU1NMdjIgc2VydmVyIHdpdGggdmFyaW91cyBjbGllbnQgb3B0aW9ucyIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMTU1OCw2ICsxNzM1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25zdW1lIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVhZCgpCisKKyAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSBzZW5kbXNnIGV0IGFsIGFyZSBkaXNhbGxvd2VkIHRvIGF2b2lkCisgICAgICAgICAgICAgICAgIyBpbmFkdmVydGVudCBkaXNjbG9zdXJlIG9mIGRhdGEgYW5kL29yIGNvcnJ1cHRpb24KKyAgICAgICAgICAgICAgICAjIG9mIHRoZSBlbmNyeXB0ZWQgZGF0YSBzdHJlYW0KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzLnNlbmRtc2csIFtiImRhdGEiXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzLnJlY3Ztc2csIDEwMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVjdm1zZ19pbnRvLCBieXRlYXJyYXkoMTAwKSkKKwogICAgICAgICAgICAgICAgIHMud3JpdGUoYiJvdmVyXG4iKQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogCkBAIC0xNjI2LDYgKzE4MTIsMTM1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vIHNoYXJlZCBjaXBoZXIiLCBzdHIoc2VydmVyLmNvbm5fZXJyb3JzWzBdKSkKIAorICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygidGxzLXVuaXF1ZSIgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgbm90IGF2YWlsYWJsZSIpCisgICAgICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgorICAgICAgICAgICAgIiIiVGVzdCB0bHMtdW5pcXVlIGNoYW5uZWwgYmluZGluZy4iIiIKKyAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCisKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihDRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlcnZlcjoKKyAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkYXRhCisgICAgICAgICAgICAgICAgY2JfZGF0YSA9IHMuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGNoYW5uZWwgYmluZGluZyBkYXRhOiB7MCFyfVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoY2JfZGF0YSkpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGl0IGlzIHNhbmUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjYl9kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNiX2RhdGEpLCAxMikgIyBUcnVlIGZvciBUTFN2MQorCisgICAgICAgICAgICAgICAgIyBhbmQgY29tcGFyZSB3aXRoIHRoZSBwZWVycyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgcy53cml0ZShiIkNCIHRscy11bmlxdWVcbiIpCisgICAgICAgICAgICAgICAgcGVlcl9kYXRhX3JlcHIgPSBzLnJlYWQoKS5zdHJpcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZWVyX2RhdGFfcmVwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoY2JfZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpKQorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisgICAgICAgICAgICAgICAgIyBub3csIGFnYWluCisgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICBuZXdfY2JfZGF0YSA9IHMuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGFub3RoZXIgY2hhbm5lbCBiaW5kaW5nIGRhdGE6IHswIXJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChuZXdfY2JfZGF0YSkpCisgICAgICAgICAgICAgICAgIyBpcyBpdCByZWFsbHkgdW5pcXVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjYl9kYXRhLCBuZXdfY2JfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjYl9kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNiX2RhdGEpLCAxMikgIyBUcnVlIGZvciBUTFN2MQorICAgICAgICAgICAgICAgIHMud3JpdGUoYiJDQiB0bHMtdW5pcXVlXG4iKQorICAgICAgICAgICAgICAgIHBlZXJfZGF0YV9yZXByID0gcy5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVlcl9kYXRhX3JlcHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG5ld19jYl9kYXRhKS5lbmNvZGUoInVzLWFzY2lpIikpCisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisKKyAgICAgICAgZGVmIHRlc3RfY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGNvbXByZXNzaW9uOiB7IXJ9XG4iLmZvcm1hdChzdGF0c1snY29tcHJlc3Npb24nXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHN0YXRzWydjb21wcmVzc2lvbiddLCB7IE5vbmUsICdaTElCJywgJ1JMRScgfSkKKworICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgJ09QX05PX0NPTVBSRVNTSU9OJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzc2wuT1BfTk9fQ09NUFJFU1NJT04gbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICBkZWYgdGVzdF9jb21wcmVzc2lvbl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fQ09NUFJFU1NJT04KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY29tcHJlc3Npb24nXSwgTm9uZSkKKworICAgICAgICBkZWYgdGVzdF9kaF9wYXJhbXMoc2VsZik6CisgICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgYSBjb25uZWN0aW9uIHdpdGggZXBoZW1lcmFsIERpZmZpZS1IZWxsbWFuCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfZGhfcGFyYW1zKERIRklMRSkKKyAgICAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoImtFREgiKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBjaXBoZXIgPSBzdGF0c1siY2lwaGVyIl1bMF0KKyAgICAgICAgICAgIHBhcnRzID0gY2lwaGVyLnNwbGl0KCItIikKKyAgICAgICAgICAgIGlmICJBREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkVESCIgbm90IGluIHBhcnRzIGFuZCAiREhFIiBub3QgaW4gcGFydHM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJOb24tREggY2lwaGVyOiAiICsgY2lwaGVyWzBdKQorCisgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgICAgICMgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgTlBOIGlzIHVzZWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY2xpZW50X25wbl9wcm90b2NvbCddLCBOb25lKQorCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfTlBOLCAiTlBOIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICBkZWYgdGVzdF9ucG5fcHJvdG9jb2xzKHNlbGYpOgorICAgICAgICAgICAgc2VydmVyX3Byb3RvY29scyA9IFsnaHR0cC8xLjEnLCAnc3BkeS8yJ10KKyAgICAgICAgICAgIHByb3RvY29sX3Rlc3RzID0gWworICAgICAgICAgICAgICAgIChbJ2h0dHAvMS4xJywgJ3NwZHkvMiddLCAnaHR0cC8xLjEnKSwKKyAgICAgICAgICAgICAgICAoWydzcGR5LzInLCAnaHR0cC8xLjEnXSwgJ2h0dHAvMS4xJyksCisgICAgICAgICAgICAgICAgKFsnc3BkeS8yJywgJ3Rlc3QnXSwgJ3NwZHkvMicpLAorICAgICAgICAgICAgICAgIChbJ2FiYycsICdkZWYnXSwgJ2FiYycpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBmb3IgY2xpZW50X3Byb3RvY29scywgZXhwZWN0ZWQgaW4gcHJvdG9jb2xfdGVzdHM6CisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKHNlcnZlcl9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKGNsaWVudF9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisKKyAgICAgICAgICAgICAgICBtc2cgPSAiZmFpbGVkIHRyeWluZyAlcyAocykgYW5kICVzIChjKS5cbiIgXAorICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZXhwZWN0aW5nICVzLCBidXQgZ290ICUlcyBmcm9tIHRoZSAlJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3RyKHNlcnZlcl9wcm90b2NvbHMpLCBzdHIoY2xpZW50X3Byb3RvY29scyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgY2xpZW50X3Jlc3VsdCA9IHN0YXRzWydjbGllbnRfbnBuX3Byb3RvY29sJ10KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudF9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoY2xpZW50X3Jlc3VsdCwgImNsaWVudCIpKQorICAgICAgICAgICAgICAgIHNlcnZlcl9yZXN1bHQgPSBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXVstMV0gXAorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10pIGVsc2UgJ25vdGhpbmcnCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfcmVzdWx0LCBleHBlY3RlZCwgbXNnICUgKHNlcnZlcl9yZXN1bHQsICJzZXJ2ZXIiKSkKKwogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgogICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTE2NTMsNyArMTk2OCw3IEBACiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgY2VydGlmaWNhdGUgZmlsZSAlciIgJSBmaWxlbmFtZSkKIAotICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0c10KKyAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHMsIFNTTEVycm9yVGVzdHNdCiAKICAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKICAgICAgICAgdGVzdHMuYXBwZW5kKE5ldHdvcmtlZFRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZDVlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTAsMCArMSw2NiBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCBzdGF0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKKworCitkZWYgZ2V0X21vZGUoZm5hbWU9VEVTVEZOKToKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShvcy5sc3RhdChmbmFtZSkuc3RfbW9kZSkKKworCitjbGFzcyBUZXN0RmlsZW1vZGUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5yZW1vdmUoVEVTVEZOKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihURVNURk4pCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgdGVhckRvd24gPSBzZXRVcAorCisgICAgZGVmIHRlc3RfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yd3gtLS0tLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzA3MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS1yd3gtLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzAwNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS0tLS1yd3gnKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzQ0NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yLS1yLS1yLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKVs6M10sICctcncnKQorCisgICAgZGVmIHRlc3RfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURk4pCisgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJ2Ryd3gtLS0tLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpWzBdLCAnZCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnc3ltbGluaycpLCAnb3Muc3ltbGluayBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9saW5rKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLmdldGN3ZCgpLCBURVNURk4pCisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKGVycikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKClbMF0sICdsJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdta2ZpZm8nKSwgJ29zLm1rZmlmbyBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9maWZvKHNlbGYpOgorICAgICAgICBvcy5ta2ZpZm8oVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpLCAncHJ3eC0tLS0tLScpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChUZXN0RmlsZW1vZGUpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKaW5kZXggMzRkMWRjZi4uYzJiZGZkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKQEAgLTI2LDYgKzI2LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmNhcHdvcmRzKCdcdGFCY1x0RGVGXHQnKSwgJ0FiYyBEZWYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnXHRhQmNcdERlRlx0JywgJ1x0JyksICdcdEFiY1x0RGVmXHQnKQogCisgICAgZGVmIHRlc3RfYmFzaWNfZm9ybWF0dGVyKHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezB9IiwgImJhciIpLCAiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MX17MH0tezF9IiwgImJhciIsIDYpLCAiZm9vNmJhci02IikKKwogICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25fc3BlY2lmaWVycyhzZWxmKToKICAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiLXthcmchcn0tIiwgYXJnPSd0ZXN0JyksICItJ3Rlc3QnLSIpCkBAIC0zOCwxNSArNDQsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU1KSksICInXFx4ZmYnIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU2KSksICInXFx1MDEwMCciKQogCi0gICAgZGVmIHRlc3RfZm9ybWF0dGVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X25hbWVfbG9va3VwKHNlbGYpOgogICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIGNsYXNzIEFueUF0dHI6CisgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIKKyAgICAgICAgeCA9IEFueUF0dHIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswLmx1bWJlcn17MC5qYWNrfSIsIHgpLCAnbHVtYmVyamFjaycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZm10LmZvcm1hdCgiezAubHVtYmVyfXswLmphY2t9IiwgJycpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MH0iLCAiYmFyIiksICJmb29iYXIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoImZvb3sxfXswfS17MX0iLCAiYmFyIiwgNiksICJmb282YmFyLTYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIi17YXJnIXJ9LSIsIGFyZz0ndGVzdCcpLCAiLSd0ZXN0Jy0iKQorICAgIGRlZiB0ZXN0X2luZGV4X2xvb2t1cChzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezBbMl19ezBbMF19IiwgbG9va3VwKSwgJ3NwYW1lZ2dzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIFtdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIHt9KQogCi0gICAgICAgICMgb3ZlcnJpZGUgZ2V0X3ZhbHVlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZ2V0X3ZhbHVlKHNlbGYpOgogICAgICAgICBjbGFzcyBOYW1lc3BhY2VGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlPXt9KToKICAgICAgICAgICAgICAgICBzdHJpbmcuRm9ybWF0dGVyLl9faW5pdF9fKHNlbGYpCkBAIC02Niw3ICs4Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgie2dyZWV0aW5nfSwgd29ybGQhIiksICdoZWxsbywgd29ybGQhJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgZm9ybWF0X2ZpZWxkICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZm9ybWF0X2ZpZWxkKHNlbGYpOgogICAgICAgICBjbGFzcyBDYWxsRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIGZvcm1hdF9maWVsZChzZWxmLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOgogICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQodmFsdWUoKSwgZm9ybWF0X3NwZWMpCkBAIC03NSwxOCArOTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCcqezB9KicsIGxhbWJkYSA6ICdyZXN1bHQnKSwgJypyZXN1bHQqJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgY29udmVydF9maWVsZCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfY29udmVydF9maWVsZChzZWxmKToKICAgICAgICAgY2xhc3MgWEZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgIGRlZiBjb252ZXJ0X2ZpZWxkKHNlbGYsIHZhbHVlLCBjb252ZXJzaW9uKToKICAgICAgICAgICAgICAgICBpZiBjb252ZXJzaW9uID09ICd4JzoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoWEZvcm1hdHRlciwgc2VsZikuY29udmVydF9maWVsZCh2YWx1ZSwgY29udmVyc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5jb252ZXJ0X2ZpZWxkKHZhbHVlLCBjb252ZXJzaW9uKQogCiAgICAgICAgIGZtdCA9IFhGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswIXJ9OnswIXh9IiwgJ2ZvbycsICdmb28nKSwgIidmb28nOk5vbmUiKQogCiAKLSAgICAgICAgIyBvdmVycmlkZSBwYXJzZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9wYXJzZShzZWxmKToKICAgICAgICAgY2xhc3MgQmFyRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgIyByZXR1cm5zIGFuIGl0ZXJhYmxlIHRoYXQgY29udGFpbnMgdHVwbGVzIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgIyAobGl0ZXJhbF90ZXh0LCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbikKQEAgLTEwMiw3ICsxMTksNyBAQAogICAgICAgICBmbXQgPSBCYXJGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoJyp8KzA6XjEwc3wqJywgJ2ZvbycpLCAnKiAgIGZvbyAgICAqJykKIAotICAgICAgICAjIHRlc3QgYWxsIHBhcmFtZXRlcnMgdXNlZAorICAgIGRlZiB0ZXN0X2NoZWNrX3VudXNlZF9hcmdzKHNlbGYpOgogICAgICAgICBjbGFzcyBDaGVja0FsbFVzZWRGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgY2hlY2tfdW51c2VkX2FyZ3Moc2VsZiwgdXNlZF9hcmdzLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICAgICAgICAgICMgVHJhY2sgd2hpY2ggYXJndW1lbnRzIGFjdHVhbGx5IGdvdCB1c2VkCkBAIC0xMjQsMjggKzE0MSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbXQuZm9ybWF0LCAiezB9IiwgMTAsIDIwLCBpPTEwMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm10LmZvcm1hdCwgIntpfSIsIDEwLCAyMCwgaT0xMDApCiAKLSAgICBkZWYgdGVzdF92Zm9ybWF0X2Fzc2VydChzZWxmKToKLSAgICAgICAgY2xzID0gc3RyaW5nLkZvcm1hdHRlcigpCi0gICAgICAgIGt3YXJncyA9IHsKLSAgICAgICAgICAgICJpIjogMTAwCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLl92Zm9ybWF0LAotICAgICAgICAgICAgICAgIGNscy5mb3JtYXQsICJ7MH0iLCBrd2FyZ3MsIHNldCgpLCAtMikKLQotICAgIGRlZiB0ZXN0X2NvbnZlcnRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswIXN9IiwgJ2ZvbycpLCAnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLmZvcm1hdCwgInswIWh9IiwgJ2ZvbycpCi0KLSAgICBkZWYgdGVzdF9nZXRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBjbGFzcyBNeUNsYXNzOgotICAgICAgICAgICAgbmFtZSA9ICdsdW1iZXJqYWNrJwotICAgICAgICB4ID0gTXlDbGFzcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezAubmFtZX0iLCB4KSwgJ2x1bWJlcmphY2snKQotCi0gICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezBbMl19IiwgbG9va3VwKSwgJ3NwYW0nKQorICAgIGRlZiB0ZXN0X3Zmb3JtYXRfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGt3YXJncyA9IGRpY3QoaT0xMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgZm10Ll92Zm9ybWF0KCJ7aX0iLCBhcmdzLCBrd2FyZ3MsIHNldCgpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigicmVjdXJzaW9uIiwgc3RyKGVyci5leGNlcHRpb24pKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKaW5kZXggNmJkYzZlNC4uMDdiYzQ4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKQEAgLTIsMTAgKzIsMTAgQEAKIAogVGhlcmUgYXJlIGZvdXIgdHlwZXMgb2Ygc3RyaW5nIGxpdGVyYWxzOgogCi0gICAgJ2FiYycgICAtLSBub3JtYWwgc3RyCi0gICAgcidhYmMnICAtLSByYXcgc3RyCi0gICAgYid4eXonICAtLSBub3JtYWwgYnl0ZXMKLSAgICBicid4eXonIC0tIHJhdyBieXRlcworICAgICdhYmMnICAgICAgICAgICAgIC0tIG5vcm1hbCBzdHIKKyAgICByJ2FiYycgICAgICAgICAgICAtLSByYXcgc3RyCisgICAgYid4eXonICAgICAgICAgICAgLS0gbm9ybWFsIGJ5dGVzCisgICAgYnIneHl6JyB8IHJiJ3h5eicgLS0gcmF3IGJ5dGVzCiAKIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbm9ybWFsIGFuZCByYXcgc3RyaW5ncyBpcyBvZiBjb3Vyc2UgdGhhdCBpbiBhCiByYXcgc3RyaW5nLCBcIGVzY2FwZXMgKHdoaWxlIHN0aWxsIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBlbmQgb2YgdGhlCkBAIC0xMDMsMTIgKzEwMywzNCBAQAogCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19yYXcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnIneCcgIiIiKSwgYid4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYid4JyAiIiIpLCBiJ3gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDAxJyAiIiIpLCBiJ1xcJyArIGIneDAxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHgwMScgIiIiKSwgYidcXCcgKyBiJ3gwMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnInXHgwMScgIiIiKSwgYnl0ZSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYidceDAxJyAiIiIpLCBieXRlKDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDgxJyAiIiIpLCBiIlxcIiArIGIieDgxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHg4MScgIiIiKSwgYiJcXCIgKyBiIng4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiJ1x4ODEnICIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHUxODgxJyAiIiIpLCBiIlxcIiArIGIidTE4ODEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiByYidcdTE4ODEnICIiIiksIGIiXFwiICsgYiJ1MTg4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHUxODgxJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmInXHUxODgxJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYmInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnJyJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJicicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBycmInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmJiJycgIiIiKQorCisgICAgZGVmIHRlc3RfZXZhbF9zdHJfdShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiB1J3gnICIiIiksICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiBVJ1x1MDBlNCcgIiIiKSwgJ8OkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiB1J1xOe0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTfScgIiIiKSwgJ8OkJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiB1cicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBydScnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBidScnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiB1YicnICIiIikKIAogICAgIGRlZiBjaGVja19lbmNvZGluZyhzZWxmLCBlbmNvZGluZywgZXh0cmE9IiIpOgogICAgICAgICBtb2RuYW1lID0gInh4XyIgKyBlbmNvZGluZy5yZXBsYWNlKCItIiwgIl8iKQpAQCAtMTMxLDcgKzE1Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLmNoZWNrX2VuY29kaW5nLCAidXRmLTgiLCBleHRyYSkKIAogICAgIGRlZiB0ZXN0X2ZpbGVfdXRmOChzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygidXRmOCIpCisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoInV0Zi04IikKIAogICAgIGRlZiB0ZXN0X2ZpbGVfaXNvXzg4NTlfMShzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygiaXNvLTg4NTktMSIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGRjYzczYWIuLjIyMzc0ZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC04LDkgKzgsMTkgQEAKIElTQklHRU5ESUFOID0gc3lzLmJ5dGVvcmRlciA9PSAiYmlnIgogSVMzMkJJVCA9IHN5cy5tYXhzaXplID09IDB4N2ZmZmZmZmYKIAotaW50ZWdlcl9jb2RlcyA9ICdiJywgJ0InLCAnaCcsICdIJywgJ2knLCAnSScsICdsJywgJ0wnLCAncScsICdRJworaW50ZWdlcl9jb2RlcyA9ICdiJywgJ0InLCAnaCcsICdIJywgJ2knLCAnSScsICdsJywgJ0wnLCAncScsICdRJywgJ24nLCAnTicKIGJ5dGVvcmRlcnMgPSAnJywgJ0AnLCAnPScsICc8JywgJz4nLCAnIScKIAorZGVmIGl0ZXJfaW50ZWdlcl9mb3JtYXRzKGJ5dGVvcmRlcnM9Ynl0ZW9yZGVycyk6CisgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKKyAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiBieXRlb3JkZXJzOgorICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKKyAgICAgICAgICAgICAgICBub3QgSEFWRV9MT05HX0xPTkcpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIG5vdCBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCduJywgJ04nKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHlpZWxkIGNvZGUsIGJ5dGVvcmRlcgorCiAjIE5hdGl2ZSAncScgcGFja2luZyBpc24ndCBhdmFpbGFibGUgb24gc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgdGhlIEMKICMgbG9uZyBsb25nIHR5cGUuCiB0cnk6CkBAIC0zMCw3ICs0MCw2IEBACiAgICAgICAgIHJldHVybiBzdHJpbmdfcmV2ZXJzZSh2YWx1ZSkKIAogY2xhc3MgU3RydWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KICAgICBkZWYgdGVzdF9pc2JpZ2VuZGlhbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoc3RydWN0LnBhY2soJz1pJywgMSlbMF0gPT0gMCksIElTQklHRU5ESUFOKQogCkBAIC0xNDIsMTQgKzE1MSwxMyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICMgc3RhbmRhcmQgaW50ZWdlciBzaXplcwotICAgICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgotICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnPScsICc8JywgJz4nLCAnISc6Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKLSAgICAgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZvcm1hdCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGV4cGVjdGVkX3NpemVbY29kZV0pCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKCc9JywgJzwnLCAnPicsICchJykpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKKyAgICAgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm9ybWF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQogCiAgICAgICAgICMgbmF0aXZlIGludGVnZXIgc2l6ZXMKLSAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJworICAgICAgICBuYXRpdmVfcGFpcnMgPSAnYkInLCAnaEgnLCAnaUknLCAnbEwnLCAnbk4nCiAgICAgICAgIGlmIEhBVkVfTE9OR19MT05HOgogICAgICAgICAgICAgbmF0aXZlX3BhaXJzICs9ICdxUScsCiAgICAgICAgIGZvciBmb3JtYXRfcGFpciBpbiBuYXRpdmVfcGFpcnM6CkBAIC0xNjcsOSArMTc1LDExIEBACiAgICAgICAgIGlmIEhBVkVfTE9OR19MT05HOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2wnKSwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnUCcpKQogCiAgICAgZGVmIHRlc3RfaW50ZWdlcnMoc2VsZik6Ci0gICAgICAgICMgSW50ZWdlciB0ZXN0cyAoYkJoSGlJbExxUSkuCisgICAgICAgICMgSW50ZWdlciB0ZXN0cyAoYkJoSGlJbExxUW5OKS4KICAgICAgICAgaW1wb3J0IGJpbmFzY2lpCiAKICAgICAgICAgY2xhc3MgSW50VGVzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE4MywxMSArMTkzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ieXRlb3JkZXIpCiAgICAgICAgICAgICAgICAgc2VsZi5ieXRlc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmb3JtYXQpCiAgICAgICAgICAgICAgICAgc2VsZi5iaXRzaXplID0gc2VsZi5ieXRlc2l6ZSAqIDgKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ2JoaWxxJyk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdiaGlscW4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWduZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubWluX3ZhbHVlID0gLSgyKiooc2VsZi5iaXRzaXplLTEpKQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1heF92YWx1ZSA9IDIqKihzZWxmLmJpdHNpemUtMSkgLSAxCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ0JISUxRJyk6CisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ0JISUxRTicpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZ25lZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubWluX3ZhbHVlID0gMAogICAgICAgICAgICAgICAgICAgICBzZWxmLm1heF92YWx1ZSA9IDIqKnNlbGYuYml0c2l6ZSAtIDEKQEAgLTMxNywxNCArMzI3LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrLCBzZWxmLmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqKQogCi0gICAgICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6Ci0gICAgICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIGNvZGUsIGJ5dGVvcmRlciBpbiBpdGVyX2ludGVnZXJfZm9ybWF0cygpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKKyAgICAgICAgICAgIHQgPSBJbnRUZXN0ZXIoZm9ybWF0KQorICAgICAgICAgICAgdC5ydW4oKQorCisgICAgZGVmIHRlc3Rfbk5fY29kZShzZWxmKToKKyAgICAgICAgIyBuIGFuZCBOIGRvbid0IGV4aXN0IGluIHN0YW5kYXJkIHNpemVzCisgICAgICAgIGRlZiBhc3NlcnRTdHJ1Y3RFcnJvcihmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYmFkIGNoYXIgaW4gc3RydWN0IGZvcm1hdCIsIHN0cihjbS5leGNlcHRpb24pKQorICAgICAgICBmb3IgY29kZSBpbiAnbk4nOgorICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAoJz0nLCAnPCcsICc+JywgJyEnKToKICAgICAgICAgICAgICAgICBmb3JtYXQgPSBieXRlb3JkZXIrY29kZQotICAgICAgICAgICAgICAgIHQgPSBJbnRUZXN0ZXIoZm9ybWF0KQotICAgICAgICAgICAgICAgIHQucnVuKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QuY2FsY3NpemUsIGZvcm1hdCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QucGFjaywgZm9ybWF0LCAwKQorICAgICAgICAgICAgICAgIGFzc2VydFN0cnVjdEVycm9yKHN0cnVjdC51bnBhY2ssIGZvcm1hdCwgYiIiKQogCiAgICAgZGVmIHRlc3RfcF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRlc3QgcCAoIlBhc2NhbCBzdHJpbmciKSBjb2RlLgpAQCAtMzc4LDE0ICszOTcsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc3RydWN0LnBhY2ssICI+ZiIsIGJpZykKIAogICAgIGRlZiB0ZXN0XzE1MzA1NTkoc2VsZik6Ci0gICAgICAgIGZvciBieXRlb3JkZXIgaW4gJycsICdAJywgJz0nLCAnPCcsICc+JywgJyEnOgotICAgICAgICAgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKLSAgICAgICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgICAgICBub3QgSEFWRV9MT05HX0xPTkcpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlciArIGNvZGUKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuNSkKKyAgICAgICAgZm9yIGNvZGUsIGJ5dGVvcmRlciBpbiBpdGVyX2ludGVnZXJfZm9ybWF0cygpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyICsgY29kZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgJ1AnLCAxLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssICdQJywgMS41KQogCkBAIC01NTksOSArNTc0LDkgQEAKIAogICAgIGRlZiBjaGVja19zaXplb2Yoc2VsZiwgZm9ybWF0X3N0ciwgbnVtYmVyX29mX2NvZGVzKToKICAgICAgICAgIyBUaGUgc2l6ZSBvZiAnUHlTdHJ1Y3RPYmplY3QnCi0gICAgICAgIHRvdGFsc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzVQJykKKyAgICAgICAgdG90YWxzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnMm4zUCcpCiAgICAgICAgICMgVGhlIHNpemUgdGFrZW4gdXAgYnkgdGhlICdmb3JtYXRjb2RlJyBkeW5hbWljIGFycmF5Ci0gICAgICAgIHRvdGFsc2l6ZSArPSBzdHJ1Y3QuY2FsY3NpemUoJzNQJykgKiAobnVtYmVyX29mX2NvZGVzICsgMSkKKyAgICAgICAgdG90YWxzaXplICs9IHN0cnVjdC5jYWxjc2l6ZSgnUDJuMFAnKSAqIChudW1iZXJfb2ZfY29kZXMgKyAxKQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBzdHJ1Y3QuU3RydWN0KGZvcm1hdF9zdHIpLCB0b3RhbHNpemUpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKaW5kZXggZDZjNjNiNy4uYTg5ZTk1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKQEAgLTc4LDggKzc4LDkgQEAKIAogICAgIGRlZiB0ZXN0X2ZpZWxkcyhzZWxmKToKICAgICAgICAgdCA9IHRpbWUuZ210aW1lKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odCksIHQubl9maWVsZHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5uX2ZpZWxkcywgdC5uX3NlcXVlbmNlX2ZpZWxkcyt0Lm5fdW5uYW1lZF9maWVsZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCB0Lm5fc2VxdWVuY2VfZmllbGRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubl91bm5hbWVkX2ZpZWxkcywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm5fZmllbGRzLCB0aW1lLl9TVFJVQ1RfVE1fSVRFTVMpCiAKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKICAgICAgICAgdCA9IHRpbWUuc3RydWN0X3RpbWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQppbmRleCAxNWZiNDk4Li5iMjYwYzgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CkBAIC0xNiw2ICsxNiw3IEBACiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2MKK2ltcG9ydCB0ZXh0d3JhcAogCiB0cnk6CiAgICAgaW1wb3J0IHJlc291cmNlCkBAIC02Miw2ICs2Myw4IEBACiAgICAgICAgICMgc2h1dGRvd24gdGltZS4gIFRoYXQgZnJ1c3RyYXRlcyB0ZXN0cyB0cnlpbmcgdG8gY2hlY2sgc3RkZXJyIHByb2R1Y2VkCiAgICAgICAgICMgZnJvbSBhIHNwYXduZWQgUHl0aG9uIHByb2Nlc3MuCiAgICAgICAgIGFjdHVhbCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRlcnIpCisgICAgICAgICMgc3RyaXBfcHl0aG9uX3N0ZGVyciBhbHNvIHN0cmlwcyB3aGl0ZXNwYWNlLCBzbyB3ZSBkbyB0b28uCisgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQuc3RyaXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1zZykKIAogCkBAIC03Myw2ICs3NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0NykKIAorICAgIGRlZiB0ZXN0X2NhbGxfdGltZW91dChzZWxmKToKKyAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZ3VtZW50OyB3ZSB3YW50IHRvIHRlc3QgdGhhdCB0aGUgY2hpbGQKKyAgICAgICAgIyBwcm9jZXNzIGdldHMga2lsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4gIElmIHRoZSBjaGlsZCBpc24ndAorICAgICAgICAjIGtpbGxlZCwgdGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgc2luY2Ugc3VicHJvY2Vzcy5jYWxsIHdhaXRzIGZvciB0aGUKKyAgICAgICAgIyBjaGlsZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCwgc3VicHJvY2Vzcy5jYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICItYyIsICJ3aGlsZSBUcnVlOiBwYXNzIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MC4xKQorCiAgICAgZGVmIHRlc3RfY2hlY2tfY2FsbF96ZXJvKHNlbGYpOgogICAgICAgICAjIGNoZWNrX2NhbGwoKSBmdW5jdGlvbiB3aXRoIHplcm8gcmV0dXJuIGNvZGUKICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW3N5cy5leGVjdXRhYmxlLCAiLWMiLApAQCAtMTE1LDYgKzEyNywyMSBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBWYWx1ZUVycm9yIHdoZW4gc3Rkb3V0IGFyZyBzdXBwbGllZC4iKQogICAgICAgICBzZWxmLmFzc2VydEluKCdzdGRvdXQnLCBjLmV4Y2VwdGlvbi5hcmdzWzBdKQogCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgY2hlY2tfb3V0cHV0KCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQpIGFzIGM6CisgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXMsIHRpbWVcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LndyaXRlKCdCREZMJylcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LmZsdXNoKClcbiIKKyAgICAgICAgICAgICAgICAgICAgICJ0aW1lLnNsZWVwKDM2MDApIl0sCisgICAgICAgICAgICAgICAgICAgICMgU29tZSBoZWF2aWx5IGxvYWRlZCBidWlsZGJvdHMgKHNwYXJjIERlYmlhbiAzLngpIHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG11Y2ggdGltZSB0byBzdGFydCBhbmQgcHJpbnQuCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MykKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgVGltZW91dEV4cGlyZWQuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmV4Y2VwdGlvbi5vdXRwdXQsIGInQkRGTCcpCisKICAgICBkZWYgdGVzdF9jYWxsX2t3YXJncyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3MKICAgICAgICAgbmV3ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKQEAgLTE2NSw2ICsxOTIsNDAgQEAKICAgICAgICAgcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGVyciwgTm9uZSkKIAorICAgIGRlZiBfYXNzZXJ0X3B5dGhvbihzZWxmLCBwcmVfYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIFdlIGluY2x1ZGUgc3lzLmV4aXQoKSB0byBwcmV2ZW50IHRoZSB0ZXN0IHJ1bm5lciBmcm9tIGhhbmdpbmcKKyAgICAgICAgIyB3aGVuZXZlciBweXRob24gaXMgZm91bmQuCisgICAgICAgIGFyZ3MgPSBwcmVfYXJncyArIFsiaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpIl0KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgKiprd2FyZ3MpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDcsIHAucmV0dXJuY29kZSkKKworICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCB3b3Jrcy4KKyAgICAgICAgIworICAgICAgICAjIE9uIFVuaXggKG5vbi1NYWMgYW5kIG5vbi1XaW5kb3dzKSwgUHl0aG9uIGxvb2tzIGF0IGFyZ3NbMF0gdG8KKyAgICAgICAgIyBkZXRlcm1pbmUgd2hlcmUgaXRzIHN0YW5kYXJkIGxpYnJhcnkgaXMsIHNvIHdlIG5lZWQgdGhlIGRpcmVjdG9yeQorICAgICAgICAjIG9mIGFyZ3NbMF0gdG8gYmUgdmFsaWQgZm9yIHRoZSBQb3BlbigpIGNhbGwgdG8gUHl0aG9uIHRvIHN1Y2NlZWQuCisgICAgICAgICMgU2VlIGFsc28gaXNzdWUgIzE2MTcwIGFuZCBpc3N1ZSAjNzc3NC4KKyAgICAgICAgZG9lc25vdGV4aXN0ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lc25vdGV4aXN0IikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihbZG9lc25vdGV4aXN0LCAiLWMiXSwgZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSkKKworICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfdGFrZXNfcHJlY2VkZW5jZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBleGVjdXRhYmxlIGFyZ3VtZW50IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBhcmdzWzBdLgorICAgICAgICAjCisgICAgICAgICMgVmVyaWZ5IGZpcnN0IHRoYXQgdGhlIGNhbGwgc3VjY2VlZHMgd2l0aG91dCB0aGUgZXhlY3V0YWJsZSBhcmcuCisgICAgICAgIHByZV9hcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiXQorICAgICAgICBzZWxmLl9hc3NlcnRfcHl0aG9uKHByZV9hcmdzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc2VsZi5fYXNzZXJ0X3B5dGhvbiwgcHJlX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU9ImRvZXNub3RleGlzdCIpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG1zd2luZG93cywgImV4ZWN1dGFibGUgYXJndW1lbnQgcmVwbGFjZXMgc2hlbGwiKQorICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfcmVwbGFjZXNfc2hlbGwoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCByZXBsYWNlcyB0aGUgZGVmYXVsdCBzaGVsbAorICAgICAgICAjIHdoZW4gc2hlbGw9VHJ1ZS4KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihbXSwgZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSwgc2hlbGw9VHJ1ZSkKKwogICAgICMgRm9yIHVzZSBpbiB0aGUgdGVzdF9jd2QqIHRlc3RzIGJlbG93LgogICAgIGRlZiBfbm9ybWFsaXplX2N3ZChzZWxmLCBjd2QpOgogICAgICAgICAjIE5vcm1hbGl6ZSBhbiBleHBlY3RlZCBjd2QgKGZvciBUcnU2NCBzdXBwb3J0KS4KQEAgLTIxNSw5ICsyNzYsOSBAQAogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggdGhlIGNvcnJlY3QgY3dkLCBjb25maXJtIHRoYXQgdGhlIGNhbGwgZmFpbHMKICAgICAgICAgICAgICMgd2l0aG91dCBjd2QgYW5kIHdpdGggdGhlIHdyb25nIGN3ZC4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxfcHl0aG9uXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxfcHl0aG9uXSwgY3dkPXdyb25nX2RpcikKICAgICAgICAgICAgIHB5dGhvbl9kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHB5dGhvbl9kaXIpCiAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfY3dkKHB5dGhvbl9kaXIsIHJlbF9weXRob24sIGN3ZD1weXRob25fZGlyKQpAQCAtMjMyLDkgKzI5Myw5IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCgpIGFzIHdyb25nX2RpcjoKICAgICAgICAgICAgICMgQmVmb3JlIGNhbGxpbmcgd2l0aCB0aGUgY29ycmVjdCBjd2QsIGNvbmZpcm0gdGhhdCB0aGUgY2FsbCBmYWlscwogICAgICAgICAgICAgIyB3aXRob3V0IGN3ZCBhbmQgd2l0aCB0aGUgd3JvbmcgY3dkLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RvZXNudGV4aXN0XSwgZXhlY3V0YWJsZT1yZWxfcHl0aG9uKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RvZXNudGV4aXN0XSwgZXhlY3V0YWJsZT1yZWxfcHl0aG9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXdyb25nX2RpcikKICAgICAgICAgICAgIHB5dGhvbl9kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHB5dGhvbl9kaXIpCkBAIC0yNTAsMTcgKzMxMSwyMSBAQAogICAgICAgICB3aXRoIHNjcmlwdF9oZWxwZXIudGVtcF9kaXIoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggYW4gYWJzb2x1dGUgcGF0aCwgY29uZmlybSB0aGF0IHVzaW5nIGEKICAgICAgICAgICAgICMgcmVsYXRpdmUgcGF0aCBmYWlscy4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxfcHl0aG9uXSwgY3dkPXdyb25nX2RpcikKICAgICAgICAgICAgIHdyb25nX2RpciA9IHNlbGYuX25vcm1hbGl6ZV9jd2Qod3JvbmdfZGlyKQogICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2N3ZCh3cm9uZ19kaXIsIGFic19weXRob24sIGN3ZD13cm9uZ19kaXIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5iYXNlX3ByZWZpeCAhPSBzeXMucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IHZlbnYtY29tcGF0aWJsZScpCiAgICAgZGVmIHRlc3RfZXhlY3V0YWJsZV93aXRoX2N3ZChzZWxmKToKICAgICAgICAgcHl0aG9uX2RpciwgcHl0aG9uX2Jhc2UgPSBzZWxmLl9zcGxpdF9weXRob25fcGF0aCgpCiAgICAgICAgIHB5dGhvbl9kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHB5dGhvbl9kaXIpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jd2QocHl0aG9uX2RpciwgInNvbWV0aGluZ3lvdWRvbnRoYXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLCBjd2Q9cHl0aG9uX2RpcikKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgdmVudi1jb21wYXRpYmxlJykKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKICAgICAgICAgICAgICAgICAgICAgICJuZWVkIGFuIGluc3RhbGxlZCBQeXRob24uIFNlZSAjNzc3NCIpCiAgICAgZGVmIHRlc3RfZXhlY3V0YWJsZV93aXRob3V0X2N3ZChzZWxmKToKQEAgLTM5OCw2ICs0NjMsMzEgQEAKICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCAiLWMiLCBjbWRdLCBzdGRvdXQ9MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMikKIAorICAgIGRlZiB0ZXN0X3N0ZG91dF9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIGkgaW4gcmFuZ2UoMTAyNDApOicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCgieCIgKiAxMDI0KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3N0ZGVycl9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciBpIGluIHJhbmdlKDEwMjQwKTonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgieCIgKiAxMDI0KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGVyciwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3N0ZGluX2Rldm51bGwoc2VsZik6CisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkaW4ucmVhZCgxKSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICBwLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RkaW4sIE5vbmUpCisKICAgICBkZWYgdGVzdF9lbnYoc2VsZik6CiAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIG5ld2VudlsiRlJVSVQiXSA9ICJvcmFuZ2UiCkBAIC00NjgsNiArNTU4LDQxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiImJhbmFuYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiInBpbmVhcHBsZSIpCiAKKyAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV90aW1lb3V0KHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvcyx0aW1lOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJwaW5lYXBwbGVcXG4iKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgxKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgicGVhclxcbiIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkpJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHAuY29tbXVuaWNhdGUsICJiYW5hbmEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTAuMykKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgY2FuIGtlZXAgd2FpdGluZyBmb3IgaXQsIGFuZCB0aGF0IHdlIGdldCB0aGUgd2hvbGUgb3V0cHV0CisgICAgICAgICMgYWZ0ZXIgaXQgY29tcGxldGVzLgorICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAiYmFuYW5hIikKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIuZW5jb2RlKCksIGIicGluZWFwcGxlXG5wZWFyXG4iKQorCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfdGltZW91dF9sYXJnZV9vdXB1dChzZWxmKToKKyAgICAgICAgIyBUZXN0IGFuIGV4cGlyaW5nIHRpbWVvdXQgd2hpbGUgdGhlIGNoaWxkIGlzIG91dHB1dHRpbmcgbG90cyBvZiBkYXRhLgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvcyx0aW1lOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCwgcC5jb21tdW5pY2F0ZSwgdGltZW91dD0wLjQpCisgICAgICAgIChzdGRvdXQsIF8pID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN0ZG91dCksIDQgKiA2NCAqIDEwMjQpCisKICAgICAjIFRlc3QgZm9yIHRoZSBmZCBsZWFrIHJlcG9ydGVkIGluIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNzkxLgogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX3BpcGVfZmRfbGVhayhzZWxmKToKICAgICAgICAgZm9yIHN0ZGluX3BpcGUgaW4gKEZhbHNlLCBUcnVlKToKQEAgLTUwNCwyNCArNjI5LDIxIEBACiAgICAgICAgICMgVGhpcyB0ZXN0IHdpbGwgcHJvYmFibHkgZGVhZGxvY2sgcmF0aGVyIHRoYW4gZmFpbCwgaWYKICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIGRvZXMgbm90IHdvcmsgcHJvcGVybHkuCiAgICAgICAgIHgsIHkgPSBvcy5waXBlKCkKLSAgICAgICAgaWYgbXN3aW5kb3dzOgotICAgICAgICAgICAgcGlwZV9idWYgPSA1MTIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBpcGVfYnVmID0gb3MuZnBhdGhjb25mKHgsICJQQ19QSVBFX0JVRiIpCiAgICAgICAgIG9zLmNsb3NlKHgpCiAgICAgICAgIG9zLmNsb3NlKHkpCiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzLG9zOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKDQ3KSk7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoInh5eiIqJWQpOycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkpJyAlIHBpcGVfYnVmXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJ4IiAqICVkKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5QSVBFX01BWF9TSVpFXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgIHN0cmluZ190b193cml0ZSA9IGIiYWJjIipwaXBlX2J1ZgorICAgICAgICBzdHJpbmdfdG9fd3JpdGUgPSBiImEiICogc3VwcG9ydC5QSVBFX01BWF9TSVpFCiAgICAgICAgIChzdGRvdXQsIHN0ZGVycikgPSBwLmNvbW11bmljYXRlKHN0cmluZ190b193cml0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHN0cmluZ190b193cml0ZSkKIApAQCAtNTk2LDggKzcxOCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgIyBCVUc6IGNhbid0IGdpdmUgYSBub24tZW1wdHkgc3RkaW4gYmVjYXVzZSBpdCBicmVha3MgYm90aCB0aGUKLSAgICAgICAgIyBzZWxlY3QtIGFuZCBwb2xsLWJhc2VkIGNvbW11bmljYXRlKCkgaW1wbGVtZW50YXRpb25zLgogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxubGluZTRcbmxpbmU1XG5saW5lNlxubGluZTdcbmxpbmU4IikKQEAgLTYwNSwxMiArNzI1LDEyIEBACiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlX3N0ZGluKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCksIHdpdGggb25seSBzdGRpbgogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgJycnXG5pZiBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgibGluZTFcbmxpbmUzXG4iKQpAQCAtNjI4LDYgKzc0OCwzNSBAQAogICAgICAgICBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJldHVybmNvZGUsIDApCiAKKyAgICBkZWYgdGVzdF91bml2ZXJzYWxfbmV3bGluZXNfY29tbXVuaWNhdGVfc3RkaW5fc3Rkb3V0X3N0ZGVycihzZWxmKToKKyAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpLCB3aXRoIHN0ZGluLCBzdGRvdXQsIHN0ZGVycgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4uYnVmZmVyLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTJcXHIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmUyXFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLmJ1ZmZlci5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTRcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTVcXHJcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmU2XFxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lN1xcclxcbnoiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQorICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgibGluZTFcbmxpbmUzXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmV0dXJuY29kZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgibGluZTFcbmxpbmUyXG5saW5lM1xubGluZTRcbmxpbmU1XG4iLCBzdGRvdXQpCisgICAgICAgICMgUHl0aG9uIGRlYnVnIGJ1aWxkIHB1c2ggc29tZXRoaW5nIGxpa2UgIls0MjQ0MiByZWZzXVxuIgorICAgICAgICAjIHRvIHN0ZGVyciBhdCBleGl0IG9mIHN1YnByb2Nlc3MuCisgICAgICAgICMgRG9uJ3QgdXNlIGFzc2VydFN0ZGVyckVxdWFsIGJlY2F1c2UgaXQgc3RyaXBzIENSIGFuZCBMRiBmcm9tIG91dHB1dC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0ZGVyci5zdGFydHN3aXRoKCJlbGluZTJcbmVsaW5lNlxuZWxpbmU3XG4iKSkKKwogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZV9lbmNvZGluZ3Moc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSB3b3JrcyBmb3IgdmFyaW91cyBlbmNvZGluZ3MsCiAgICAgICAgICMgaW4gcGFydGljdWxhciBmb3IgZW5jb2RpbmdzIGluIHRoZSBVVEYtMTYgYW5kIFVURi0zMiBmYW1pbGllcy4KQEAgLTY1Nyw3ICs4MDYsNiBAQAogICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9JycpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZwotCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgJzFcbjJcbjNcbjQnKQogCiAgICAgZGVmIHRlc3Rfbm9fbGVha2luZyhzZWxmKToKQEAgLTcxNywzMCArODY1LDMyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VicHJvY2Vzcy5saXN0MmNtZGxpbmUoWydhYicsICcnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FiICIiJykKIAotCiAgICAgZGVmIHRlc3RfcG9sbChzZWxmKToKLSAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiLCAiaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMSkiXSkKLSAgICAgICAgY291bnQgPSAwCi0gICAgICAgIHdoaWxlIHAucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKLSAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgIyBXZSBleHBlY3QgdGhhdCB0aGUgcG9sbCBsb29wIHByb2JhYmx5IHdlbnQgYXJvdW5kIGFib3V0IDEwIHRpbWVzLAotICAgICAgICAjIGJ1dCwgYmFzZWQgb24gc3lzdGVtIHNjaGVkdWxpbmcgd2UgY2FuJ3QgY29udHJvbCwgaXQncyBwb3NzaWJsZQotICAgICAgICAjIHBvbGwoKSBuZXZlciByZXR1cm5lZCBOb25lLiAgSXQgInNob3VsZCBiZSIgdmVyeSByYXJlIHRoYXQgaXQKLSAgICAgICAgIyBkaWRuJ3QgZ28gYXJvdW5kIGF0IGxlYXN0IHR3aWNlLgotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChjb3VudCwgMikKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBvczsgb3MucmVhZCgwLCAxKSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwLnBvbGwoKSkKKyAgICAgICAgb3Mud3JpdGUocC5zdGRpbi5maWxlbm8oKSwgYidBJykKKyAgICAgICAgcC53YWl0KCkKICAgICAgICAgIyBTdWJzZXF1ZW50IGludm9jYXRpb25zIHNob3VsZCBqdXN0IHJldHVybiB0aGUgcmV0dXJuY29kZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucG9sbCgpLCAwKQogCi0KICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICItYyIsICJpbXBvcnQgdGltZTsgdGltZS5zbGVlcCgyKSJdKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsICJwYXNzIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KCksIDApCiAgICAgICAgICMgU3Vic2VxdWVudCBpbnZvY2F0aW9ucyBzaG91bGQganVzdCByZXR1cm4gdGhlIHJldHVybmNvZGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLndhaXQoKSwgMCkKIAorICAgIGRlZiB0ZXN0X3dhaXRfdGltZW91dChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIiwgImltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDAuMSkiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgorICAgICAgICAgICAgcC53YWl0KHRpbWVvdXQ9MC4wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiMC4wMSIsIHN0cihjLmV4Y2VwdGlvbikpICAjIEZvciBjb3ZlcmFnZSBvZiBfX3N0cl9fLgorICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlIHRoaXMgbXVjaAorICAgICAgICAjIHRpbWUgdG8gc3RhcnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KHRpbWVvdXQ9MyksIDApCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2J1ZnNpemUoc2VsZik6CiAgICAgICAgICMgYW4gaW52YWxpZCB0eXBlIG9mIHRoZSBidWZzaXplIGFyZ3VtZW50IHNob3VsZCByYWlzZQpAQCAtODE5LDI1ICs5NjksMjkgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAncGFzcyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQotICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHAuY29tbXVuaWNhdGUoYiJ4IiAqIDIqKjIwKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIHNpZ25hbC5TSUdBTFJNIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWlyZXMgc2lnbmFsLlNJR1VTUjEiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdraWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmtpbGwiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRwcGlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmdldHBwaWQiKQogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2VpbnRyKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMjQ5MzogY29tbXVuaWNhdGUoKSBzaG91bGQgaGFuZGxlIEVJTlRSCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAgICAgICAgICAgcGFzcwotICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb2xkX2hhbmRsZXIpCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdVU1IxLCBvbGRfaGFuZGxlcikKIAotICAgICAgICAjIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgZm9yIDIgc2Vjb25kcwotICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAnaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMiknXQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICdpbXBvcnQgb3MsIHNpZ25hbDsnCisgICAgICAgICAgICAgICAgJ29zLmtpbGwob3MuZ2V0cHBpZCgpLCBzaWduYWwuU0lHVVNSMSknXQogICAgICAgICBmb3Igc3RyZWFtIGluICgnc3Rkb3V0JywgJ3N0ZGVycicpOgogICAgICAgICAgICAga3cgPSB7c3RyZWFtOiBzdWJwcm9jZXNzLlBJUEV9CiAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oYXJncywgKiprdykgYXMgcHJvY2VzczoKLSAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICAgICAjIGNvbW11bmljYXRlKCkgd2lsbCBiZSBpbnRlcnJ1cHRlZCBieSBTSUdBTFJNCisgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHdpbGwgYmUgaW50ZXJydXB0ZWQgYnkgU0lHVVNSMQogICAgICAgICAgICAgICAgIHByb2Nlc3MuY29tbXVuaWNhdGUoKQogCiAKQEAgLTE0MDEsNiArMTU1NSwxMSBAQAogICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChbYWJzX3Byb2dyYW0sICItYyIsICJwYXNzIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCiAKKyAgICAgICAgIyBhYnNvbHV0ZSBieXRlcyBwYXRoIGFzIGEgc3RyaW5nCisgICAgICAgIGNtZCA9IGIiJyIgKyBhYnNfcHJvZ3JhbSArIGIiJyAtYyBwYXNzIgorICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKICAgICAgICAgIyBieXRlcyBwcm9ncmFtLCB1bmljb2RlIFBBVEgKICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WyJQQVRIIl0gPSBwYXRoCkBAIC0xNTg0LDcgKzE3NDMsNyBAQAogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHAucmV0dXJuY29kZSwgInNpZ2NoaWxkX2lnbm9yZS5weSBleGl0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiBub24temVybyB3aXRoIHRoaXMgZXJyb3I6XG4lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVyci5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnIuZGVjb2RlKCd1dGYtOCcpKQogCiAgICAgZGVmIHRlc3Rfc2VsZWN0X3VuYnVmZmVyZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExNDU5OiBidWZzaXplPTAgc2hvdWxkIHJlYWxseSBzZXQgdGhlIHBpcGVzIGFzCkBAIC0xODMxLDI4ICsxOTkwLDYgQEAKICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlLnRlYXJEb3duKHNlbGYpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzdWJwcm9jZXNzLCAnX3Bvc2l4c3VicHJvY2VzcycsIEZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICJfcG9zaXhzdWJwcm9jZXNzIGV4dGVuc2lvbiBtb2R1bGUgbm90IGZvdW5kLiIpCi1jbGFzcyBQcm9jZXNzVGVzdENhc2VQT1NJWFB1cmVQeXRob24oUHJvY2Vzc1Rlc3RDYXNlLCBQT1NJWFByb2Nlc3NUZXN0Q2FzZSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgZ2xvYmFsIHN1YnByb2Nlc3MKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3Mgd2hpbGUgZm9yY2luZyBfcG9zaXhzdWJwcm9jZXNzIHRvIG5vdCBleGlzdC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnLipfcG9zaXhzdWJwcm9jZXNzIC4qIG5vdCBiZWluZyB1c2VkLionLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKSk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKAotICAgICAgICAgICAgICAgICAgICAnc3VicHJvY2VzcycsIGJsb2NrZWQ9WydfcG9zaXhzdWJwcm9jZXNzJ10pCi0gICAgICAgIGFzc2VydCBub3Qgc3VicHJvY2Vzcy5fcG9zaXhzdWJwcm9jZXNzCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBnbG9iYWwgc3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3MgYXMgaXQgc2hvdWxkIGJlLCByZXN0b3Jpbmcgb3JkZXIgdG8gdGhlIHVuaXZlcnNlLgotICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdzdWJwcm9jZXNzJykKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotCi0KIGNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYobXN3aW5kb3dzLCAiZXJybm8gYW5kIEVJTlRSIG1ha2Ugbm8gc2Vuc2Ugb24gd2luZG93cyIpCiAgICAgZGVmIHRlc3RfZWludHJfcmV0cnlfY2FsbChzZWxmKToKQEAgLTE5NjEsNyArMjA5OCw2IEBACiAgICAgdW5pdF90ZXN0cyA9IChQcm9jZXNzVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICBQT1NJWFByb2Nlc3NUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgIFdpbjMyUHJvY2Vzc1Rlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlUE9TSVhQdXJlUHl0aG9uLAogICAgICAgICAgICAgICAgICAgQ29tbWFuZFRlc3RzLAogICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlTm9Qb2xsLAogICAgICAgICAgICAgICAgICAgSGVscGVyRnVuY3Rpb25UZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKaW5kZXggMDc4MDJkNi4uZmNjY2RmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKQEAgLTksNyArOSw2IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncyhxdWlldD1UcnVlKToKICAgICAgICAgICAgIGltcG9ydCBiZGIKICAgICAgICAgICAgIGltcG9ydCBjZ2l0YgotICAgICAgICAgICAgaW1wb3J0IGNvZGUKIAogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5iY3BwY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY2NvbXBpbGVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQppbmRleCA5MTQyMTZkLi5mNjQ2OWNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKQEAgLTgxLDYgKzgxLDU1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFKCkuZigpLCAnQUUnKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X19fY2xhc3NfX19zZXQoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxMjM3MAorICAgICAgICBjbGFzcyBYKEEpOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZigpCisgICAgICAgICAgICBfX2NsYXNzX18gPSA0MTMKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZigpLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2NsYXNzX18sIDQxMykKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19pbnN0YW5jZW1ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoWCgpLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19jbGFzc21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKGNscyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX3N0YXRpY21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhYLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X29ic2N1cmVfc3VwZXJfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgc3VwZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGYpCisgICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmLCBOb25lKQorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgX19jbGFzc19fCisgICAgICAgICAgICAgICAgZGVsIF9fY2xhc3NfXworICAgICAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBYKCkuZikKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFN1cGVyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZWY1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKQEAgLTAsMCArMSwxOTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgZXJybm8KK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitURVNURk4gPSBzdXBwb3J0LlRFU1RGTgorVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisKKworY2xhc3MgVGVzdFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKKyAgICB0ZWFyRG93biA9IHNldFVwCisKKyAgICBkZWYgdGVzdF9pbXBvcnRfbW9kdWxlKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImZ0cGxpYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmltcG9ydF9tb2R1bGUsICJmb28iKQorCisgICAgZGVmIHRlc3RfaW1wb3J0X2ZyZXNoX21vZHVsZShzZWxmKToKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCJmdHBsaWIiKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2VsZiwgInRlc3RfZ2V0X2F0dHJpYnV0ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2dldF9hdHRyaWJ1dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmdldF9hdHRyaWJ1dGUsIHNlbGYsICJmb28iKQorCisgICAgQHVuaXR0ZXN0LnNraXAoImZhaWxpbmcgYnVpbGRib3RzIikKKyAgICBkZWYgdGVzdF9nZXRfb3JpZ2luYWxfc3Rkb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuZ2V0X29yaWdpbmFsX3N0ZG91dCgpLCBzeXMuc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfdW5sb2FkKHNlbGYpOgorICAgICAgICBpbXBvcnQgc2NoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoInNjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3VubGluayhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LnVubGluayhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoVEVTVEZOKSkKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfcm10cmVlKHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURElSTikKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKFRFU1RESVJOLCBURVNURElSTikpCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RESVJOKSkKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCisKKyAgICBkZWYgdGVzdF9mb3JnZXQoc2VsZik6CisgICAgICAgIG1vZF9maWxlbmFtZSA9IFRFU1RGTiArICcucHknCisgICAgICAgIHdpdGggb3Blbihtb2RfZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIHByaW50KCdmb28gPSAxJywgZmlsZT1mKQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBzeXMubW9kdWxlcykKKworICAgICAgICAgICAgc3VwcG9ydC5mb3JnZXQoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihURVNURk4sIHN5cy5tb2R1bGVzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhtb2RfZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9IT1NUKHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHMuYmluZCgoc3VwcG9ydC5IT1NULCAwKSkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9maW5kX3VudXNlZF9wb3J0KHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKHN1cHBvcnQuSE9TVCwgcG9ydCkpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYmluZF9wb3J0KHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHMpCisgICAgICAgIHMubGlzdGVuKDEpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfdGVtcF9jd2Qoc2VsZik6CisgICAgICAgIGhlcmUgPSBvcy5nZXRjd2QoKQorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZT1URVNURk4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RGTikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgaGVyZSkKKworICAgIGRlZiB0ZXN0X3RlbXBfY3dkX19jaGRpcl93YXJuaW5nKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGUgd2FybmluZyBtZXNzYWdlIHdoZW4gb3MuY2hkaXIoKSBmYWlscy4iIiIKKyAgICAgICAgcGF0aCA9IFRFU1RGTiArICdfZG9lc19ub3RfZXhpc3QnCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpIGFzIHJlY29yZGVyOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHBhdGg9cGF0aCwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgbWVzc2FnZXMgPSBbc3RyKHcubWVzc2FnZSkgZm9yIHcgaW4gcmVjb3JkZXIud2FybmluZ3NdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIFsndGVzdHMgbWF5IGZhaWwsIHVuYWJsZSB0byBjaGFuZ2UgdGhlIENXRCB0byAnICsgcGF0aF0pCisKKyAgICBkZWYgdGVzdF9zb3J0ZGljdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LnNvcnRkaWN0KHszOjMsIDI6MiwgMToxfSksICJ7MTogMSwgMjogMiwgMzogM30iKQorCisgICAgZGVmIHRlc3RfbWFrZV9iYWRfZmQoc2VsZik6CisgICAgICAgIGZkID0gc3VwcG9ydC5tYWtlX2JhZF9mZCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYiJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCisKKyAgICBkZWYgdGVzdF9jaGVja19zeW50YXhfZXJyb3Ioc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgY2xhc3MiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3IsIHNlbGYsICIxIikKKworICAgIGRlZiB0ZXN0X0NsZWFuSW1wb3J0KHNlbGYpOgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliCisgICAgICAgIHdpdGggc3VwcG9ydC5DbGVhbkltcG9ydCgiYXN5bmNvcmUiKToKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCJhc3luY29yZSIpCisKKyAgICBkZWYgdGVzdF9EaXJzT25TeXNQYXRoKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aCgnZm9vJywgJ2JhcicpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJiYXIiLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImJhciIsIHN5cy5wYXRoKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3Rkb3V0KHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHByaW50KCJoZWxsbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiaGVsbG9cbiIpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlZF9zdGRlcnIoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzOgorICAgICAgICAgICAgcHJpbnQoImhlbGxvIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgImhlbGxvXG4iKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3RkaW4oc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRpbigpIGFzIHM6CisgICAgICAgICAgICBwcmludCgiaGVsbG8iLCBmaWxlPXN5cy5zdGRpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJoZWxsb1xuIikKKworICAgIGRlZiB0ZXN0X2djX2NvbGxlY3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9weXRob25faXNfb3B0aW1pemVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VwcG9ydC5weXRob25faXNfb3B0aW1pemVkKCksIGJvb2wpCisKKyAgICBkZWYgdGVzdF9zd2FwX2F0dHIoc2VsZik6CisgICAgICAgIGNsYXNzIE9iajoKKyAgICAgICAgICAgIHggPSAxCisgICAgICAgIG9iaiA9IE9iaigpCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIob2JqLCAieCIsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgMSkKKworICAgIGRlZiB0ZXN0X3N3YXBfaXRlbShzZWxmKToKKyAgICAgICAgRCA9IHsiaXRlbSI6MX0KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShELCAiaXRlbSIsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEWyJpdGVtIl0sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCAxKQorCisgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQorICAgICMgbWFrZV9sZWdhY3lfcHljCisgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCisgICAgIyByZXF1aXJlcworICAgICMgZmNtcAorICAgICMgdW1ha3MKKyAgICAjIGZpbmRmaWxlCisgICAgIyBjaGVja193YXJuaW5ncworICAgICMgRW52aXJvbm1lbnRWYXJHdWFyZAorICAgICMgVHJhbnNpZW50UmVzb3VyY2UKKyAgICAjIHRyYW5zaWVudF9pbnRlcm5ldAorICAgICMgcnVuX3dpdGhfbG9jYWxlCisgICAgIyBzZXRfbWVtbGltaXQKKyAgICAjIGJpZ21lbXRlc3QKKyAgICAjIHByZWNpc2lvbmJpZ21lbXRlc3QKKyAgICAjIGJpZ2FkZHJzcGFjZXRlc3QKKyAgICAjIHJlcXVpcmVzX3Jlc291cmNlCisgICAgIyBydW5fZG9jdGVzdAorICAgICMgdGhyZWFkaW5nX2NsZWFudXAKKyAgICAjIHJlYXBfdGhyZWFkcworICAgICMgcmVhcF9jaGlsZHJlbgorICAgICMgc3RyaXBfcHl0aG9uX3N0ZGVycgorICAgICMgYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzCisgICAgIyBjYW5fc3ltbGluaworICAgICMgc2tpcF91bmxlc3Nfc3ltbGluaworCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0cyA9IFtUZXN0U3VwcG9ydF0KKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggYTUyNzY3YS4uZTVlYzg1YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTMwMyw2ICszMDMsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0ZGxvcGVuZmxhZ3MoKSwgb2xkZmxhZ3MrMSkKICAgICAgICAgICAgIHN5cy5zZXRkbG9wZW5mbGFncyhvbGRmbGFncykKIAorICAgIEB0ZXN0LnN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X3JlZmNvdW50KHNlbGYpOgogICAgICAgICAjIG4gaGVyZSBtdXN0IGJlIGEgZ2xvYmFsIGluIG9yZGVyIGZvciB0aGlzIHRlc3QgdG8gcGFzcyB3aGlsZQogICAgICAgICAjIHRyYWNpbmcgd2l0aCBhIHB5dGhvbiBmdW5jdGlvbi4gIFRyYWNpbmcgY2FsbHMgUHlGcmFtZV9GYXN0VG9Mb2NhbHMKQEAgLTM0Miw3ICszNDMsNyBAQAogICAgICMgVGVzdCBzeXMuX2N1cnJlbnRfZnJhbWVzKCkgaW4gYSBXSVRIX1RIUkVBRFMgYnVpbGQuCiAgICAgQHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgY3VycmVudF9mcmFtZXNfd2l0aF90aHJlYWRzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdGhyZWFkaW5nLCBfdGhyZWFkCisgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogCiAgICAgICAgICMgU3Bhd24gYSB0aHJlYWQgdGhhdCBibG9ja3MgYXQgYSBrbm93biBwbGFjZS4gIFRoZW4gdGhlIG1haW4KQEAgLTM1Niw3ICszNTcsNyBAQAogICAgICAgICAgICAgZzQ1NigpCiAKICAgICAgICAgZGVmIGc0NTYoKToKLSAgICAgICAgICAgIHRocmVhZF9pbmZvLmFwcGVuZChfdGhyZWFkLmdldF9pZGVudCgpKQorICAgICAgICAgICAgdGhyZWFkX2luZm8uYXBwZW5kKHRocmVhZGluZy5nZXRfaWRlbnQoKSkKICAgICAgICAgICAgIGVudGVyZWRfZy5zZXQoKQogICAgICAgICAgICAgbGVhdmVfZy53YWl0KCkKIApAQCAtMzcyLDcgKzM3Myw3IEBACiAKICAgICAgICAgZCA9IHN5cy5fY3VycmVudF9mcmFtZXMoKQogCi0gICAgICAgIG1haW5faWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIG1haW5faWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihtYWluX2lkLCBkKQogICAgICAgICBzZWxmLmFzc2VydEluKHRocmVhZF9pZCwgZCkKIApAQCAtNDE4LDYgKzQxOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMsIHR1cGxlKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmNvcHlyaWdodCwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmV4ZWNfcHJlZml4LCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYmFzZV9leGVjX3ByZWZpeCwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmV4ZWN1dGFibGUsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3lzLmZsb2F0X2luZm8pLCAxMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZmxvYXRfaW5mby5yYWRpeCwgMikKQEAgLTQ0Niw4ICs0NDgsMTAgQEAKIAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLm1heHNpemUsIGludCkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5tYXh1bmljb2RlLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1heHVuaWNvZGUsIDB4MTBGRkZGKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLnBsYXRmb3JtLCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMucHJlZml4LCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYmFzZV9wcmVmaXgsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy52ZXJzaW9uLCBzdHIpCiAgICAgICAgIHZpID0gc3lzLnZlcnNpb25faW5mbwogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmlbOl0sIHR1cGxlKQpAQCAtNDczLDYgKzQ3NywxNCBAQAogICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5hYmlmbGFncywgc3RyKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzeXMsICd0aHJlYWRfaW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3RocmVhZF9pbmZvKHNlbGYpOgorICAgICAgICBpbmZvID0gc3lzLnRocmVhZF9pbmZvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGluZm8pLCAzKQorICAgICAgICBzZWxmLmFzc2VydEluKGluZm8ubmFtZSwgKCdudCcsICdvczInLCAncHRocmVhZCcsICdzb2xhcmlzJywgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaW5mby5sb2NrLCAoJ3NlbWFwaG9yZScsICdtdXRleCtjb25kJywgTm9uZSkpCisKICAgICBkZWYgdGVzdF80MzU4MShzZWxmKToKICAgICAgICAgIyBDYW4ndCB1c2Ugc3lzLnN0ZG91dCwgYXMgdGhpcyBpcyBhIFN0cmluZ0lPIG9iamVjdCB3aGVuCiAgICAgICAgICMgdGhlIHRlc3QgcnVucyB1bmRlciByZWdydGVzdC4KQEAgLTUwMCw3ICs1MTIsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3lzX2ZsYWdzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLmZsYWdzKQotICAgICAgICBhdHRycyA9ICgiZGVidWciLCAiZGl2aXNpb25fd2FybmluZyIsCisgICAgICAgIGF0dHJzID0gKCJkZWJ1ZyIsCiAgICAgICAgICAgICAgICAgICJpbnNwZWN0IiwgImludGVyYWN0aXZlIiwgIm9wdGltaXplIiwgImRvbnRfd3JpdGVfYnl0ZWNvZGUiLAogICAgICAgICAgICAgICAgICAibm9fdXNlcl9zaXRlIiwgIm5vX3NpdGUiLCAiaWdub3JlX2Vudmlyb25tZW50IiwgInZlcmJvc2UiLAogICAgICAgICAgICAgICAgICAiYnl0ZXNfd2FybmluZyIsICJxdWlldCIsICJoYXNoX3JhbmRvbWl6YXRpb24iKQpAQCAtNTMyLDYgKzU0NCw4IEBACiAgICAgICAgIG91dCA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBiJz8nKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IGlzIG5vdCB2ZW52LWNvbXBhdGlibGUnKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGUoc2VsZik6CiAgICAgICAgICMgc3lzLmV4ZWN1dGFibGUgc2hvdWxkIGJlIGFic29sdXRlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKHN5cy5leGVjdXRhYmxlKSwgc3lzLmV4ZWN1dGFibGUpCkBAIC01NjgsNiArNTgyLDM0IEBACiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X2ltcGxlbWVudGF0aW9uKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBhcHBsaWVzIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMgZXF1YWxseS4KKworICAgICAgICBsZXZlbHMgPSB7J2FscGhhJzogMHhBLCAnYmV0YSc6IDB4QiwgJ2NhbmRpZGF0ZSc6IDB4QywgJ2ZpbmFsJzogMHhGfQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAndmVyc2lvbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdoZXh2ZXJzaW9uJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycpKQorCisgICAgICAgIHZlcnNpb24gPSBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcnNpb25bOjJdLCAodmVyc2lvbi5tYWpvciwgdmVyc2lvbi5taW5vcikpCisKKyAgICAgICAgaGV4dmVyc2lvbiA9ICh2ZXJzaW9uLm1ham9yIDw8IDI0IHwgdmVyc2lvbi5taW5vciA8PCAxNiB8CisgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi5taWNybyA8PCA4IHwgbGV2ZWxzW3ZlcnNpb24ucmVsZWFzZWxldmVsXSA8PCA0IHwKKyAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLnNlcmlhbCA8PCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5pbXBsZW1lbnRhdGlvbi5oZXh2ZXJzaW9uLCBoZXh2ZXJzaW9uKQorCisgICAgICAgICMgUEVQIDQyMSByZXF1aXJlcyB0aGF0IC5uYW1lIGJlIGxvd2VyIGNhc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmltcGxlbWVudGF0aW9uLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmltcGxlbWVudGF0aW9uLm5hbWUubG93ZXIoKSkKKworICAgIGRlZiB0ZXN0X2RlYnVnbWFsbG9jc3RhdHMoc2VsZik6CisgICAgICAgICMgVGVzdCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKQorICAgICAgICBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworICAgICAgICBhcmdzID0gWyctYycsICdpbXBvcnQgc3lzOyBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSddCisgICAgICAgIHJldCwgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCphcmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiZnJlZSBQeURpY3RPYmplY3RzIiwgZXJyKQogCiBjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTkxLDEyICs2MzMsMTIgQEAKICAgICAgICAgIyBib29sIG9iamVjdHMgYXJlIG5vdCBnYyB0cmFja2VkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlKSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCiAgICAgICAgICMgYnV0IGxpc3RzIGFyZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoW10pLCB2c2l6ZSgnUFAnKSArIGdjX2hlYWRlcl9zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoW10pLCB2c2l6ZSgnUG4nKSArIGdjX2hlYWRlcl9zaXplKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKLSAgICAgICAgdnNpemUgPSB0ZXN0LnN1cHBvcnQuY2FsY3ZvYmpzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlKSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlLCAtMSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQorICAgICAgICBzaXplID0gdGVzdC5zdXBwb3J0LmNhbGN2b2Jqc2l6ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlLCAtMSksIHNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCiAKICAgICBkZWYgdGVzdF9vYmplY3R0eXBlcyhzZWxmKToKICAgICAgICAgIyBjaGVjayBhbGwgdHlwZXMgZGVmaW5lZCBpbiBPYmplY3RzLwpAQCAtNjEzLDkgKzY1NSw5IEBACiAgICAgICAgIHNhbXBsZXMgPSBbYicnLCBiJ3UnKjEwMDAwMF0KICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgogICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShzYW1wbGUpCi0gICAgICAgICAgICBjaGVjayh4LCB2c2l6ZSgnaVBQJykgKyB4Ll9fYWxsb2NfXygpKQorICAgICAgICAgICAgY2hlY2soeCwgdnNpemUoJ2luUCcpICsgeC5fX2FsbG9jX18oKSkKICAgICAgICAgIyBieXRlYXJyYXlfaXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcihieXRlYXJyYXkoKSksIHNpemUoJ1BQJykpCisgICAgICAgIGNoZWNrKGl0ZXIoYnl0ZWFycmF5KCkpLCBzaXplKCduUCcpKQogICAgICAgICAjIGNlbGwKICAgICAgICAgZGVmIGdldF9jZWxsKCk6CiAgICAgICAgICAgICB4ID0gNDIKQEAgLTYyNCwyNyArNjY2LDMzIEBACiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKICAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2Nsb3N1cmVfX1swXSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGNvZGUKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk4UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGRlZiBnZXRfY2VsbDIoeCk6CisgICAgICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4geAorICAgICAgICAgICAgcmV0dXJuIGlubmVyCisgICAgICAgIGNoZWNrKGdldF9jZWxsMi5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpICsgMSkKICAgICAgICAgIyBjb21wbGV4CiAgICAgICAgIGNoZWNrKGNvbXBsZXgoMCwxKSwgc2l6ZSgnMmQnKSkKICAgICAgICAgIyBtZXRob2RfZGVzY3JpcHRvciAoZGVzY3JpcHRvciBvYmplY3QpCi0gICAgICAgIGNoZWNrKHN0ci5sb3dlciwgc2l6ZSgnMlBQJykpCisgICAgICAgIGNoZWNrKHN0ci5sb3dlciwgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgY2xhc3NtZXRob2RfZGVzY3JpcHRvciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgICMgWFhYCiAgICAgICAgICMgbWVtYmVyX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKLSAgICAgICAgY2hlY2soZGF0ZXRpbWUudGltZWRlbHRhLmRheXMsIHNpemUoJzJQUCcpKQorICAgICAgICBjaGVjayhkYXRldGltZS50aW1lZGVsdGEuZGF5cywgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgZ2V0c2V0X2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBpbXBvcnQgY29sbGVjdGlvbnMKLSAgICAgICAgY2hlY2soY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5LCBzaXplKCcyUFAnKSkKKyAgICAgICAgY2hlY2soY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5LCBzaXplKCczUFAnKSkKICAgICAgICAgIyB3cmFwcGVyX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQotICAgICAgICBjaGVjayhpbnQuX19hZGRfXywgc2l6ZSgnMlAyUCcpKQorICAgICAgICBjaGVjayhpbnQuX19hZGRfXywgc2l6ZSgnM1AyUCcpKQogICAgICAgICAjIG1ldGhvZC13cmFwcGVyIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgY2hlY2soe30uX19pdGVyX18sIHNpemUoJzJQJykpCiAgICAgICAgICMgZGljdAotICAgICAgICBjaGVjayh7fSwgc2l6ZSgnM1AyUCcgKyA4KidQMlAnKSkKKyAgICAgICAgY2hlY2soe30sIHNpemUoJ24yUCcgKyAnMm5QbicgKyA4KiduMlAnKSkKICAgICAgICAgbG9uZ2RpY3QgPSB7MToxLCAyOjIsIDM6MywgNDo0LCA1OjUsIDY6NiwgNzo3LCA4Ojh9Ci0gICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCczUDJQJyArIDgqJ1AyUCcpICsgMTYqc3RydWN0LmNhbGNzaXplKCdQMlAnKSkKKyAgICAgICAgY2hlY2sobG9uZ2RpY3QsIHNpemUoJ24yUCcgKyAnMm5QbicpICsgMTYqc3RydWN0LmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LWtleWl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWVpdGVyYXRvcgpAQCAtNjUyLDE4ICs3MDAsMTggQEAKICAgICAgICAgIyBkaWN0aW9uYXJ5LWl0ZW1pdGVyYXRvcgogICAgICAgICBjaGVjayh7fS5pdGVtcygpLCBzaXplKCdQJykpCiAgICAgICAgICMgZGljdGlvbmFyeSBpdGVyYXRvcgotICAgICAgICBjaGVjayhpdGVyKHt9KSwgc2l6ZSgnUDJQUFAnKSkKKyAgICAgICAgY2hlY2soaXRlcih7fSksIHNpemUoJ1AyblBuJykpCiAgICAgICAgICMgZGljdHByb3h5CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhDLl9fZGljdF9fLCBzaXplKCdQJykpCiAgICAgICAgICMgQmFzZUV4Y2VwdGlvbgotICAgICAgICBjaGVjayhCYXNlRXhjZXB0aW9uKCksIHNpemUoJzVQJykpCisgICAgICAgIGNoZWNrKEJhc2VFeGNlcHRpb24oKSwgc2l6ZSgnNVBpJykpCiAgICAgICAgICMgVW5pY29kZUVuY29kZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVFbmNvZGVFcnJvcigiIiwgIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZUVuY29kZUVycm9yKCIiLCAiIiwgMCwgMCwgIiIpLCBzaXplKCc1UGkgMlAyblAnKSkKICAgICAgICAgIyBVbmljb2RlRGVjb2RlRXJyb3IKLSAgICAgICAgY2hlY2soVW5pY29kZURlY29kZUVycm9yKCIiLCBiIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZURlY29kZUVycm9yKCIiLCBiIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgVW5pY29kZVRyYW5zbGF0ZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiIiwgMCwgMSwgIiIpLCBzaXplKCc1UCAyUDJQUCcpKQorICAgICAgICBjaGVjayhVbmljb2RlVHJhbnNsYXRlRXJyb3IoIiIsIDAsIDEsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgZWxsaXBzZXMKICAgICAgICAgY2hlY2soRWxsaXBzaXMsIHNpemUoJycpKQogICAgICAgICAjIEVuY29kaW5nTWFwCkBAIC02NzEsOSArNzE5LDkgQEAKICAgICAgICAgeCA9IGNvZGVjcy5jaGFybWFwX2J1aWxkKGVuY29kaW5ncy5pc284ODU5XzMuZGVjb2RpbmdfdGFibGUpCiAgICAgICAgIGNoZWNrKHgsIHNpemUoJzMyQjJpQicpKQogICAgICAgICAjIGVudW1lcmF0ZQotICAgICAgICBjaGVjayhlbnVtZXJhdGUoW10pLCBzaXplKCdsM1AnKSkKKyAgICAgICAgY2hlY2soZW51bWVyYXRlKFtdKSwgc2l6ZSgnbjNQJykpCiAgICAgICAgICMgcmV2ZXJzZQotICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ1BQJykpCisgICAgICAgIGNoZWNrKHJldmVyc2VkKCcnKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBmbG9hdAogICAgICAgICBjaGVjayhmbG9hdCgwKSwgc2l6ZSgnZCcpKQogICAgICAgICAjIHN5cy5mbG9hdGluZm8KQEAgLTY4OSw3ICs3MzcsNyBAQAogICAgICAgICBjaGVjayh4LCB2c2l6ZSgnMTJQM2knICsgQ09fTUFYQkxPQ0tTKiczaScgKyAnUCcgKyBleHRyYXMqJ1AnKSkKICAgICAgICAgIyBmdW5jdGlvbgogICAgICAgICBkZWYgZnVuYygpOiBwYXNzCi0gICAgICAgIGNoZWNrKGZ1bmMsIHNpemUoJzExUCcpKQorICAgICAgICBjaGVjayhmdW5jLCBzaXplKCcxMlAnKSkKICAgICAgICAgY2xhc3MgYygpOgogICAgICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICAgICAgZGVmIGZvbygpOgpAQCAtNjk4LDEyICs3NDYsMTIgQEAKICAgICAgICAgICAgIGRlZiBiYXIoY2xzKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAjIHN0YXRpY21ldGhvZAotICAgICAgICAgICAgY2hlY2soZm9vLCBzaXplKCdQJykpCisgICAgICAgICAgICBjaGVjayhmb28sIHNpemUoJ1BQJykpCiAgICAgICAgICAgICAjIGNsYXNzbWV0aG9kCi0gICAgICAgICAgICBjaGVjayhiYXIsIHNpemUoJ1AnKSkKKyAgICAgICAgICAgIGNoZWNrKGJhciwgc2l6ZSgnUFAnKSkKICAgICAgICAgIyBnZW5lcmF0b3IKICAgICAgICAgZGVmIGdldF9nZW4oKTogeWllbGQgMQotICAgICAgICBjaGVjayhnZXRfZ2VuKCksIHNpemUoJ1BpMlAnKSkKKyAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQYjJQJykpCiAgICAgICAgICMgaXRlcmF0b3IKICAgICAgICAgY2hlY2soaXRlcignYWJjJyksIHNpemUoJ2xQJykpCiAgICAgICAgICMgY2FsbGFibGUtaXRlcmF0b3IKQEAgLTcxMiw3ICs3NjAsNyBAQAogICAgICAgICAjIGxpc3QKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgWzEsMiwzXSwgWycxJywgJzInLCAnMyddXQogICAgICAgICBmb3Igc2FtcGxlIGluIHNhbXBsZXM6Ci0gICAgICAgICAgICBjaGVjayhzYW1wbGUsIHZzaXplKCdQUCcpICsgbGVuKHNhbXBsZSkqc2VsZi5QKQorICAgICAgICAgICAgY2hlY2soc2FtcGxlLCB2c2l6ZSgnUG4nKSArIGxlbihzYW1wbGUpKnNlbGYuUCkKICAgICAgICAgIyBzb3J0d3JhcHBlciAobGlzdCkKICAgICAgICAgIyBYWFgKICAgICAgICAgIyBjbXB3cmFwcGVyIChsaXN0KQpAQCAtNzIwLDcgKzc2OCw3IEBACiAgICAgICAgICMgbGlzdGl0ZXJhdG9yIChsaXN0KQogICAgICAgICBjaGVjayhpdGVyKFtdKSwgc2l6ZSgnbFAnKSkKICAgICAgICAgIyBsaXN0cmV2ZXJzZWl0ZXJhdG9yIChsaXN0KQotICAgICAgICBjaGVjayhyZXZlcnNlZChbXSksIHNpemUoJ2xQJykpCisgICAgICAgIGNoZWNrKHJldmVyc2VkKFtdKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBsb25nCiAgICAgICAgIGNoZWNrKDAsIHZzaXplKCcnKSkKICAgICAgICAgY2hlY2soMSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCkBAIC03MzAsOSArNzc4LDkgQEAKICAgICAgICAgY2hlY2soaW50KFB5TG9uZ19CQVNFKioyLTEpLCB2c2l6ZSgnJykgKyAyKnNlbGYubG9uZ2RpZ2l0KQogICAgICAgICBjaGVjayhpbnQoUHlMb25nX0JBU0UqKjIpLCB2c2l6ZSgnJykgKyAzKnNlbGYubG9uZ2RpZ2l0KQogICAgICAgICAjIG1lbW9yeXZpZXcKLSAgICAgICAgY2hlY2sobWVtb3J5dmlldyhiJycpLCBzaXplKCdQUDJQMmk3UCcpKQorICAgICAgICBjaGVjayhtZW1vcnl2aWV3KGInJyksIHNpemUoJ1BuaW4gMlAybjJpNVAgM2NQbicpKQogICAgICAgICAjIG1vZHVsZQotICAgICAgICBjaGVjayh1bml0dGVzdCwgc2l6ZSgnM1AnKSkKKyAgICAgICAgY2hlY2sodW5pdHRlc3QsIHNpemUoJ1BuUCcpKQogICAgICAgICAjIE5vbmUKICAgICAgICAgY2hlY2soTm9uZSwgc2l6ZSgnJykpCiAgICAgICAgICMgTm90SW1wbGVtZW50ZWRUeXBlCkBAIC03NTEsNyArNzk5LDcgQEAKICAgICAgICAgIyByYW5nZWl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIocmFuZ2UoMSkpLCBzaXplKCc0bCcpKQogICAgICAgICAjIHJldmVyc2UKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ25QJykpCiAgICAgICAgICMgcmFuZ2UKICAgICAgICAgY2hlY2socmFuZ2UoMSksIHNpemUoJzRQJykpCiAgICAgICAgIGNoZWNrKHJhbmdlKDY2MDAwKSwgc2l6ZSgnNFAnKSkKQEAgLTc1OSw3ICs4MDcsNyBAQAogICAgICAgICAjIGZyb3plbnNldAogICAgICAgICBQeVNldF9NSU5TSVpFID0gOAogICAgICAgICBzYW1wbGVzID0gW1tdLCByYW5nZSgxMCksIHJhbmdlKDUwKV0KLSAgICAgICAgcyA9IHNpemUoJzNQMlAnICsgUHlTZXRfTUlOU0laRSonUFAnICsgJ1BQJykKKyAgICAgICAgcyA9IHNpemUoJzNuMlAnICsgUHlTZXRfTUlOU0laRSonblAnICsgJ25QJykKICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgogICAgICAgICAgICAgbWludXNlZCA9IGxlbihzYW1wbGUpCiAgICAgICAgICAgICBpZiBtaW51c2VkID09IDA6IHRtcCA9IDEKQEAgLTc3MywxMCArODIxLDEwIEBACiAgICAgICAgICAgICAgICAgY2hlY2soc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoZWNrKHNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ2xQJykpCi0gICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKnN0cnVjdC5jYWxjc2l6ZSgnbFAnKSkKKyAgICAgICAgICAgICAgICBjaGVjayhzZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCduUCcpKQorICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ25QJykpCiAgICAgICAgICMgc2V0aXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcihzZXQoKSksIHNpemUoJ1AzUCcpKQorICAgICAgICBjaGVjayhpdGVyKHNldCgpKSwgc2l6ZSgnUDNuJykpCiAgICAgICAgICMgc2xpY2UKICAgICAgICAgY2hlY2soc2xpY2UoMCksIHNpemUoJzNQJykpCiAgICAgICAgICMgc3VwZXIKQEAgLTc4NSwyOCArODMzLDU2IEBACiAgICAgICAgIGNoZWNrKCgpLCB2c2l6ZSgnJykpCiAgICAgICAgIGNoZWNrKCgxLDIsMyksIHZzaXplKCcnKSArIDMqc2VsZi5QKQogICAgICAgICAjIHR5cGUKLSAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCi0gICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcykKLSAgICAgICAgcyA9IHZzaXplKCdQMlAxNVBsNFBQOVBQMTFQSScpICsgc3RydWN0LmNhbGNzaXplKCcxNlBpMTdQIDNQIDEwUCAyUCAyUCcpCisgICAgICAgICMgc3RhdGljIHR5cGU6IFB5VHlwZU9iamVjdAorICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJJykKICAgICAgICAgY2hlY2soaW50LCBzKQorICAgICAgICAjIChQeVR5cGVPYmplY3QgKyBQeU51bWJlck1ldGhvZHMgKyBQeU1hcHBpbmdNZXRob2RzICsKKyAgICAgICAgIyAgUHlTZXF1ZW5jZU1ldGhvZHMgKyBQeUJ1ZmZlclByb2NzICsgNFApCisgICAgICAgIHMgPSB2c2l6ZSgnUDJuMTVQbDRQbjlQbjExUEknKSArIHN0cnVjdC5jYWxjc2l6ZSgnMzRQIDNQIDEwUCAyUCA0UCcpCisgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKKyAgICAgICAgcyArPSBzdHJ1Y3QuY2FsY3NpemUoIjJuUG4iKSArIDQqc3RydWN0LmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQorICAgICAgICAjIGRpY3Qgd2l0aCBzaGFyZWQga2V5cworICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ24yUCcgKyAnMm5QbicpKQogICAgICAgICAjIHVuaWNvZGUKLSAgICAgICAgdXNpemUgPSBsZW4oJ1wwJy5lbmNvZGUoJ3VuaWNvZGUtaW50ZXJuYWwnKSkKLSAgICAgICAgc2FtcGxlcyA9IFsnJywgJzEnKjEwMF0KLSAgICAgICAgIyB3ZSBuZWVkIHRvIHRlc3QgZm9yIGJvdGggc2l6ZXMsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBpZiB0aGUgc3RyaW5nCi0gICAgICAgICMgaGFzIGJlZW4gY2FjaGVkCisgICAgICAgICMgZWFjaCB0dXBsZSBjb250YWlucyBhIHN0cmluZyBhbmQgaXRzIGV4cGVjdGVkIGNoYXJhY3RlciBzaXplCisgICAgICAgICMgZG9uJ3QgcHV0IGFueSBzdGF0aWMgc3RyaW5ncyBoZXJlLCBhcyB0aGV5IG1heSBjb250YWluCisgICAgICAgICMgd2NoYXJfdCBvciBVVEYtOCByZXByZXNlbnRhdGlvbnMKKyAgICAgICAgc2FtcGxlcyA9IFsnMScqMTAwLCAnXHhmZicqNTAsCisgICAgICAgICAgICAgICAgICAgJ1x1MDEwMCcqNDAsICdcdWZmZmYnKjEwMCwKKyAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDAwMCcqMzAsICdcVTAwMTBmZmZmJyoxMDBdCisgICAgICAgIGFzY2lpZmllbGRzID0gIm5uaVAiCisgICAgICAgIGNvbXBhY3RmaWVsZHMgPSBhc2NpaWZpZWxkcyArICJuUG4iCisgICAgICAgIHVuaWNvZGVmaWVsZHMgPSBjb21wYWN0ZmllbGRzICsgIlAiCiAgICAgICAgIGZvciBzIGluIHNhbXBsZXM6Ci0gICAgICAgICAgICBiYXNpY3NpemUgPSAgc2l6ZSgnUFBQaVAnKSArIHVzaXplICogKGxlbihzKSArIDEpCi0gICAgICAgICAgICBjaGVjayhzLCBiYXNpY3NpemUpCisgICAgICAgICAgICBtYXhjaGFyID0gb3JkKG1heChzKSkKKyAgICAgICAgICAgIGlmIG1heGNoYXIgPCAxMjg6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoYXNjaWlmaWVsZHMpICsgbGVuKHMpICsgMQorICAgICAgICAgICAgZWxpZiBtYXhjaGFyIDwgMjU2OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGNvbXBhY3RmaWVsZHMpICsgbGVuKHMpICsgMQorICAgICAgICAgICAgZWxpZiBtYXhjaGFyIDwgNjU1MzY6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoY29tcGFjdGZpZWxkcykgKyAyKihsZW4ocykgKyAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBMID0gc2l6ZShjb21wYWN0ZmllbGRzKSArIDQqKGxlbihzKSArIDEpCisgICAgICAgICAgICBjaGVjayhzLCBMKQorICAgICAgICAjIHZlcmlmeSB0aGF0IHRoZSBVVEYtOCBzaXplIGlzIGFjY291bnRlZCBmb3IKKyAgICAgICAgcyA9IGNocigweDQwMDApICAgIyA0IGJ5dGVzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbgorICAgICAgICBjaGVjayhzLCBzaXplKGNvbXBhY3RmaWVsZHMpICsgNCkKKyAgICAgICAgIyBjb21waWxlKCkgd2lsbCB0cmlnZ2VyIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBVVEYtOAorICAgICAgICAjIHJlcHJlc2VudGF0aW9uIGFzIGEgc2lkZSBlZmZlY3QKKyAgICAgICAgY29tcGlsZShzLCAiPHN0ZGluPiIsICJldmFsIikKKyAgICAgICAgY2hlY2socywgc2l6ZShjb21wYWN0ZmllbGRzKSArIDQgKyA0KQorICAgICAgICAjIFRPRE86IGFkZCBjaGVjayB0aGF0IGZvcmNlcyB0aGUgcHJlc2VuY2Ugb2Ygd2NoYXJfdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIFRPRE86IGFkZCBjaGVjayB0aGF0IGZvcmNlcyBsYXlvdXQgb2YgdW5pY29kZWZpZWxkcwogICAgICAgICAjIHdlYWtyZWYKICAgICAgICAgaW1wb3J0IHdlYWtyZWYKLSAgICAgICAgY2hlY2sod2Vha3JlZi5yZWYoaW50KSwgc2l6ZSgnMlBsMlAnKSkKKyAgICAgICAgY2hlY2sod2Vha3JlZi5yZWYoaW50KSwgc2l6ZSgnMlBuMlAnKSkKICAgICAgICAgIyB3ZWFrcHJveHkKICAgICAgICAgIyBYWFgKICAgICAgICAgIyB3ZWFrY2FsbGFibGVwcm94eQotICAgICAgICBjaGVjayh3ZWFrcmVmLnByb3h5KGludCksIHNpemUoJzJQbDJQJykpCisgICAgICAgIGNoZWNrKHdlYWtyZWYucHJveHkoaW50KSwgc2l6ZSgnMlBuMlAnKSkKIAogICAgIGRlZiB0ZXN0X3B5dGhvbnR5cGVzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGFsbCB0eXBlcyBkZWZpbmVkIGluIFB5dGhvbi8KQEAgLTgxNSwxNiArODkxLDEzIEBACiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgIyBfYXN0LkFTVAogICAgICAgICBpbXBvcnQgX2FzdAotICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCcnKSkKLSAgICAgICAgIyBpbXAuTnVsbEltcG9ydGVyCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgY2hlY2soaW1wLk51bGxJbXBvcnRlcihzZWxmLmZpbGUubmFtZSksIHNpemUoJycpKQorICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCdQJykpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQogICAgICAgICAgICAgIyB0cmFjZWJhY2sKLSAgICAgICAgICAgIGlmIHRiICE9IE5vbmU6CisgICAgICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBjaGVjayh0Yiwgc2l6ZSgnMlAyaScpKQogICAgICAgICAjIHN5bXRhYmxlIGVudHJ5CiAgICAgICAgICMgWFhYCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IGVhMmJiMjkuLmZkZjk1OGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC0yNTEsNiArMjUxLDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQogICAgICAgICBnYy5kaXNhYmxlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGlmIHNlbGYudXNpbmdfZ2M6CkBAIC0zODksNiArMzkwLDkgQEAKIAogCiBjbGFzcyBSYWlzaW5nVHJhY2VGdW5jVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisKICAgICBkZWYgdHJhY2Uoc2VsZiwgZnJhbWUsIGV2ZW50LCBhcmcpOgogICAgICAgICAiIiJBIHRyYWNlIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpbiByZXNwb25zZSB0byBhCiAgICAgICAgIHNwZWNpZmljIHRyYWNlIGV2ZW50LiIiIgpAQCAtNjk2LDYgKzcwMCwxMCBAQAogCiAKIGNsYXNzIEp1bXBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKKyAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCisKICAgICBkZWYgY29tcGFyZV9qdW1wX291dHB1dChzZWxmLCBleHBlY3RlZCwgcmVjZWl2ZWQpOgogICAgICAgICBpZiByZWNlaXZlZCAhPSBleHBlY3RlZDoKICAgICAgICAgICAgIHNlbGYuZmFpbCggIk91dHB1dHMgZG9uJ3QgbWF0Y2g6XG4iICsKQEAgLTc0Nyw2ICs3NTUsOCBAQAogICAgIGRlZiB0ZXN0XzE4X25vX2p1bXBfdG9fbm9uX2ludGVnZXJzKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl90ZXN0KG5vX2p1bXBfdG9fbm9uX2ludGVnZXJzKQogICAgIGRlZiB0ZXN0XzE5X25vX2p1bXBfd2l0aG91dF90cmFjZV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgIyBNdXN0IHNldCBzeXMuc2V0dHJhY2UoTm9uZSkgaW4gc2V0VXAoKSwgZWxzZSBjb25kaXRpb24gaXMgbm90CisgICAgICAgICMgdHJpZ2dlcmVkLgogICAgICAgICBub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oKQogICAgIGRlZiB0ZXN0X2p1bXBfYWNyb3NzX3dpdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IGFhYmI2ZmEuLjkyMTkzNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0xLDExICsxLDkgQEAKLSIiIlRlc3RzIGZvciBzeXNjb25maWcuIiIiCi0KIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHNodXRpbAotZnJvbSBjb3B5IGltcG9ydCBjb3B5LCBkZWVwY29weQorZnJvbSBjb3B5IGltcG9ydCBjb3B5CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBURVNURk4sIHVubGluaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZWRfc3Rkb3V0LCBza2lwX3VubGVzc19zeW1saW5rKQpAQCAtMTUsMTEgKzEzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGdldF9wYXRoLCBnZXRfcGF0aF9uYW1lcywgX0lOU1RBTExfU0NIRU1FUywKICAgICAgICAgICAgICAgICAgICAgICAgX2dldF9kZWZhdWx0X3NjaGVtZSwgX2V4cGFuZF92YXJzLAogICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2NoZW1lX25hbWVzLCBnZXRfY29uZmlnX3ZhciwgX21haW4pCitpbXBvcnQgX29zeF9zdXBwb3J0CiAKIGNsYXNzIFRlc3RTeXNDb25maWcodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAiIiJNYWtlIGEgY29weSBvZiBzeXMucGF0aCIiIgogICAgICAgICBzdXBlcihUZXN0U3lzQ29uZmlnLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIHNlbGYuc3lzX3BhdGggPSBzeXMucGF0aFs6XQogICAgICAgICAjIHBhdGNoaW5nIG9zLnVuYW1lCkBAIC0yOCw3ICsyNiw3IEBACiAgICAgICAgICAgICBzZWxmLl91bmFtZSA9IG9zLnVuYW1lKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudW5hbWUgPSBOb25lCi0gICAgICAgICAgICBzZWxmLl91bmFtZSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX3NldF91bmFtZSgoJycsKSo1KQogICAgICAgICBvcy51bmFtZSA9IHNlbGYuX2dldF91bmFtZQogICAgICAgICAjIHNhdmluZyB0aGUgZW52aXJvbm1lbnQKICAgICAgICAgc2VsZi5uYW1lID0gb3MubmFtZQpAQCAtMzgsMTEgKzM2LDE2IEBACiAgICAgICAgIHNlbGYuam9pbiA9IG9zLnBhdGguam9pbgogICAgICAgICBzZWxmLmlzYWJzID0gb3MucGF0aC5pc2FicwogICAgICAgICBzZWxmLnNwbGl0ZHJpdmUgPSBvcy5wYXRoLnNwbGl0ZHJpdmUKLSAgICAgICAgc2VsZi5fY29uZmlnX3ZhcnMgPSBjb3B5KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpCi0gICAgICAgIHNlbGYub2xkX2Vudmlyb24gPSBkZWVwY29weShvcy5lbnZpcm9uKQorICAgICAgICBzZWxmLl9jb25maWdfdmFycyA9IHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsIGNvcHkoc3lzY29uZmlnLl9DT05GSUdfVkFSUykKKyAgICAgICAgc2VsZi5fYWRkZWRfZW52dmFycyA9IFtdCisgICAgICAgIHNlbGYuX2NoYW5nZWRfZW52dmFycyA9IFtdCisgICAgICAgIGZvciB2YXIgaW4gKCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnLCAnUEFUSCcpOgorICAgICAgICAgICAgaWYgdmFyIGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5fY2hhbmdlZF9lbnZ2YXJzLmFwcGVuZCgodmFyLCBvcy5lbnZpcm9uW3Zhcl0pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRlZF9lbnZ2YXJzLmFwcGVuZCh2YXIpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICIiIlJlc3RvcmUgc3lzLnBhdGgiIiIKICAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLnN5c19wYXRoCiAgICAgICAgIHNlbGYuX2NsZWFudXBfdGVzdGZuKCkKICAgICAgICAgaWYgc2VsZi51bmFtZSBpcyBub3QgTm9uZToKQEAgLTU2LDE5ICs1OSwxOCBAQAogICAgICAgICBvcy5wYXRoLmpvaW4gPSBzZWxmLmpvaW4KICAgICAgICAgb3MucGF0aC5pc2FicyA9IHNlbGYuaXNhYnMKICAgICAgICAgb3MucGF0aC5zcGxpdGRyaXZlID0gc2VsZi5zcGxpdGRyaXZlCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBjb3B5KHNlbGYuX2NvbmZpZ192YXJzKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLm9sZF9lbnZpcm9uLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBvcy5lbnZpcm9uLmdldChrZXkpICE9IHZhbHVlOgotICAgICAgICAgICAgICAgIG9zLmVudmlyb25ba2V5XSA9IHZhbHVlCi0KLSAgICAgICAgZm9yIGtleSBpbiBsaXN0KG9zLmVudmlyb24ua2V5cygpKToKLSAgICAgICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi5vbGRfZW52aXJvbjoKLSAgICAgICAgICAgICAgICBkZWwgb3MuZW52aXJvbltrZXldCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzZWxmLl9jb25maWdfdmFyc1swXQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy51cGRhdGUoc2VsZi5fY29uZmlnX3ZhcnNbMV0pCisgICAgICAgIGZvciB2YXIsIHZhbHVlIGluIHNlbGYuX2NoYW5nZWRfZW52dmFyczoKKyAgICAgICAgICAgIG9zLmVudmlyb25bdmFyXSA9IHZhbHVlCisgICAgICAgIGZvciB2YXIgaW4gc2VsZi5fYWRkZWRfZW52dmFyczoKKyAgICAgICAgICAgIG9zLmVudmlyb24ucG9wKHZhciwgTm9uZSkKIAogICAgICAgICBzdXBlcihUZXN0U3lzQ29uZmlnLCBzZWxmKS50ZWFyRG93bigpCiAKICAgICBkZWYgX3NldF91bmFtZShzZWxmLCB1bmFtZSk6Ci0gICAgICAgIHNlbGYuX3VuYW1lID0gdW5hbWUKKyAgICAgICAgc2VsZi5fdW5hbWUgPSBvcy51bmFtZV9yZXN1bHQodW5hbWUpCiAKICAgICBkZWYgX2dldF91bmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3VuYW1lCkBAIC04NywyMSArODksMTkgQEAKICAgICAgICAgc2NoZW1lID0gZ2V0X3BhdGhzKCkKICAgICAgICAgZGVmYXVsdF9zY2hlbWUgPSBfZ2V0X2RlZmF1bHRfc2NoZW1lKCkKICAgICAgICAgd2FudGVkID0gX2V4cGFuZF92YXJzKGRlZmF1bHRfc2NoZW1lLCBOb25lKQotICAgICAgICB3YW50ZWQgPSBsaXN0KHdhbnRlZC5pdGVtcygpKQotICAgICAgICB3YW50ZWQuc29ydCgpCi0gICAgICAgIHNjaGVtZSA9IGxpc3Qoc2NoZW1lLml0ZW1zKCkpCi0gICAgICAgIHNjaGVtZS5zb3J0KCkKKyAgICAgICAgd2FudGVkID0gc29ydGVkKHdhbnRlZC5pdGVtcygpKQorICAgICAgICBzY2hlbWUgPSBzb3J0ZWQoc2NoZW1lLml0ZW1zKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NoZW1lLCB3YW50ZWQpCiAKICAgICBkZWYgdGVzdF9nZXRfcGF0aChzZWxmKToKLSAgICAgICAgIyB4eHggbWFrZSByZWFsIHRlc3RzIGhlcmUKKyAgICAgICAgIyBYWFggbWFrZSByZWFsIHRlc3RzIGhlcmUKICAgICAgICAgZm9yIHNjaGVtZSBpbiBfSU5TVEFMTF9TQ0hFTUVTOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdOgogICAgICAgICAgICAgICAgIHJlcyA9IGdldF9wYXRoKG5hbWUsIHNjaGVtZSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb25maWdfdmFycyhzZWxmKToKICAgICAgICAgY3ZhcnMgPSBnZXRfY29uZmlnX3ZhcnMoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShjdmFycywgZGljdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjdmFycywgZGljdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN2YXJzKQogCiAgICAgZGVmIHRlc3RfZ2V0X3BsYXRmb3JtKHNlbGYpOgpAQCAtMTM1LDggKzEzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgKCdEYXJ3aW4gS2VybmVsIFZlcnNpb24gOC4xMS4xOiAnCiAgICAgICAgICAgICAgICAgICAgICdXZWQgT2N0IDEwIDE4OjIzOjI4IFBEVCAyMDA3OyAnCiAgICAgICAgICAgICAgICAgICAgICdyb290OnhudS03OTIuMjUuMjB+MS9SRUxFQVNFX0kzODYnKSwgJ1Bvd2VyUEMnKSkKLQotCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCddID0gJzEwLjMnCiAKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctZm5vLXN0cmljdC1hbGlhc2luZyAtRE5ERUJVRyAtZyAnCkBAIC0xNTEsMTIgKzE1MCwxMSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBtYXhpbnQKIAotCiAgICAgICAgIHNlbGYuX3NldF91bmFtZSgoJ0RhcndpbicsICdtYWN6aWFkZScsICc4LjExLjEnLAogICAgICAgICAgICAgICAgICAgICgnRGFyd2luIEtlcm5lbCBWZXJzaW9uIDguMTEuMTogJwogICAgICAgICAgICAgICAgICAgICAnV2VkIE9jdCAxMCAxODoyMzoyOCBQRFQgMjAwNzsgJwogICAgICAgICAgICAgICAgICAgICAncm9vdDp4bnUtNzkyLjI1LjIwfjEvUkVMRUFTRV9JMzg2JyksICdpMzg2JykpCi0gICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJworICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJwogCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWZuby1zdHJpY3QtYWxpYXNpbmcgLUROREVCVUcgLWcgJwpAQCAtMTcxLDYgKzE2OSw3IEBACiAgICAgICAgICAgICBzeXMubWF4c2l6ZSA9IG1heGludAogCiAgICAgICAgICMgbWFjYm9vayB3aXRoIGZhdCBiaW5hcmllcyAoZmF0LCB1bml2ZXJzYWwgb3IgZmF0NjQpCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCddID0gJzEwLjQnCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCkBAIC0xNzksNiArMTc4LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0JykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwpAQCAtMTg2LDE4ICsxODYsMjEgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtaW50ZWwnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQzJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggcHBjNjQgLWFyY2ggeDg2XzY0IC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtdW5pdmVyc2FsJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIHBwYzY0IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKQEAgLTIwNiwxMiArMjA5LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQ2NCcpCiAKICAgICAgICAgZm9yIGFyY2ggaW4gKCdwcGMnLCAnaTM4NicsICd4ODZfNjQnLCAncHBjNjQnKToKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggJXMgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMyclKGFyY2gsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJyAlIGFyY2gpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC0lcyclKGFyY2gsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC0lcycgJSBhcmNoKQogCiAgICAgICAgICMgbGludXggZGViaWFuIHNhcmdlCiAgICAgICAgIG9zLm5hbWUgPSAncG9zaXgnCkBAIC0yMzksOCArMjQzLDggQEAKICAgICAgICAgIyBPbiBXaW5kb3dzLCB0aGUgRVhFIG5lZWRzIHRvIGtub3cgd2hlcmUgcHl0aG9uWFkuZGxsIGlzIGF0IHNvIHdlIGhhdmUKICAgICAgICAgIyB0byBhZGQgdGhlIGRpcmVjdG9yeSB0byB0aGUgcGF0aC4KICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWyJQYXRoIl0gPSAie307e30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCBvcy5lbnZpcm9uWyJQYXRoIl0pCisgICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSAie307e30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCBvcy5lbnZpcm9uWyJQQVRIIl0pCiAKICAgICAgICAgIyBJc3N1ZSA3ODgwCiAgICAgICAgIGRlZiBnZXQocHl0aG9uKToKQEAgLTI2NCwxMiArMjY4LDE3IEBACiAgICAgICAgICMgdGhlIGdsb2JhbCBzY2hlbWUgbWlycm9ycyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBwcmVmaXggYW5kCiAgICAgICAgICMgZXhlYy1wcmVmaXggYnV0IG5vdCB0aGUgdXNlciBzY2hlbWUsIHNvIHdlIGhhdmUgdG8gYWRhcHQgdGhlIHBhdGhzCiAgICAgICAgICMgYmVmb3JlIGNvbXBhcmluZyAoaXNzdWUgIzkxMDApCi0gICAgICAgIGFkYXB0ID0gc3lzLnByZWZpeCAhPSBzeXMuZXhlY19wcmVmaXgKKyAgICAgICAgYWRhcHQgPSBzeXMuYmFzZV9wcmVmaXggIT0gc3lzLmJhc2VfZXhlY19wcmVmaXgKICAgICAgICAgZm9yIG5hbWUgaW4gKCdzdGRsaWInLCAncGxhdHN0ZGxpYicsICdwdXJlbGliJywgJ3BsYXRsaWInKToKICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2V0X3BhdGgobmFtZSwgJ3Bvc2l4X3ByZWZpeCcpCiAgICAgICAgICAgICBpZiBhZGFwdDoKLSAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMucHJlZml4KQotICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2xvYmFsX3BhdGgucmVwbGFjZShzeXMuZXhlY19wcmVmaXgsIHN5cy5iYXNlX3ByZWZpeCkKKyAgICAgICAgICAgICAgICBiYXNlID0gYmFzZS5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLmJhc2VfcHJlZml4KQorICAgICAgICAgICAgZWxpZiBzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeDoKKyAgICAgICAgICAgICAgICAjIHZpcnR1YWwgZW52aXJvbm1lbnQ/IExpa2V3aXNlLCB3ZSBoYXZlIHRvIGFkYXB0IHRoZSBwYXRocworICAgICAgICAgICAgICAgICMgYmVmb3JlIGNvbXBhcmluZworICAgICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2xvYmFsX3BhdGgucmVwbGFjZShzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCisgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZShzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCiAgICAgICAgICAgICB1c2VyX3BhdGggPSBnZXRfcGF0aChuYW1lLCAncG9zaXhfdXNlcicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXJfcGF0aCwgZ2xvYmFsX3BhdGgucmVwbGFjZShiYXNlLCB1c2VyLCAxKSkKIApAQCAtMjg2LDcgKzI5NSw2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRJbihsZGZsYWdzLCBsZHNoYXJlZCkKIAotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iLCAidGVzdCBvbmx5IHJlbGV2YW50IG9uIE1hY09TWCIpCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1faW5fc3VicHJvY2VzcyhzZWxmKToKICAgICAgICAgbXlfcGxhdGZvcm0gPSBzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkKQEAgLTMxMiwyOCArMzIwLDU4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X3BsYXRmb3JtLCB0ZXN0X3BsYXRmb3JtKQogCi0KICAgICAgICAgIyBUZXN0IHdpdGggTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGluIHRoZSBlbnZpcm9ubWVudCwgYW5kCiAgICAgICAgICMgdXNpbmcgYSB2YWx1ZSB0aGF0IGlzIHVubGlrZWx5IHRvIGJlIHRoZSBkZWZhdWx0IG9uZS4KICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4xJwogCi0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsKLSAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwgJy1jJywKLSAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgIHN0ZGVycj1vcGVuKCcvZGV2L251bGwnKSwKLSAgICAgICAgICAgIGVudj1lbnYpCi0gICAgICAgIHRlc3RfcGxhdGZvcm0gPSBwLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQotICAgICAgICB0ZXN0X3BsYXRmb3JtID0gdGVzdF9wbGF0Zm9ybS5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RhdHVzID0gcC53YWl0KCkKKyAgICAgICAgd2l0aCBvcGVuKCcvZGV2L251bGwnKSBhcyBkZXZfbnVsbDoKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsKKyAgICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzY29uZmlnOyBwcmludChzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkpJywKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgc3RkZXJyPWRldl9udWxsLAorICAgICAgICAgICAgICAgIGVudj1lbnYpCisgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIHRlc3RfcGxhdGZvcm0gPSB0ZXN0X3BsYXRmb3JtLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgc3RhdHVzID0gcC53YWl0KCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKKworICAgIGRlZiB0ZXN0X3NyY2RpcihzZWxmKToKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoc3JjZGlyKSwgc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihzcmNkaXIpLCBzcmNkaXIpCisKKyAgICAgICAgaWYgc3lzY29uZmlnLl9QWVRIT05fQlVJTEQ6CisgICAgICAgICAgICAjIFRoZSBweXRob24gZXhlY3V0YWJsZSBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHNvIHNyY2RpcgorICAgICAgICAgICAgIyBzaG91bGQgYmUgYSBmdWxsIHNvdXJjZSBjaGVja291dC4KKyAgICAgICAgICAgIFB5dGhvbl9oID0gb3MucGF0aC5qb2luKHNyY2RpciwgJ0luY2x1ZGUnLCAnUHl0aG9uLmgnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKFB5dGhvbl9oKSwgUHl0aG9uX2gpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzY29uZmlnLl9pc19weXRob25fc291cmNlX2RpcihzcmNkaXIpKQorICAgICAgICBlbGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5kaXJuYW1lKHN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RpcikKKworICAgIGRlZiB0ZXN0X3NyY2Rpcl9pbmRlcGVuZGVudF9vZl9jd2Qoc2VsZik6CisgICAgICAgICMgc3JjZGlyIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoJy4uJykKKyAgICAgICAgICAgIHNyY2RpcjIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihjd2QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZGlyLCBzcmNkaXIyKQogCiAKIGNsYXNzIE1ha2VmaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksCiAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgV2luZG93cyBjb21wYXRpYmxlJykKICAgICBkZWYgdGVzdF9nZXRfbWFrZWZpbGVfZmlsZW5hbWUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKaW5kZXggZjMyZWI4Yy4uYzdiZjc3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQpAQCAtMjEsNiArMjEsMTAgQEAKICAgICBpbXBvcnQgYnoyCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgYnoyID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBsem1hCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbHptYSA9IE5vbmUKIAogZGVmIG1kNXN1bShkYXRhKToKICAgICByZXR1cm4gbWQ1KGRhdGEpLmhleGRpZ2VzdCgpCkBAIC0yOSw2ICszMyw3IEBACiB0YXJuYW1lID0gc3VwcG9ydC5maW5kZmlsZSgidGVzdHRhci50YXIiKQogZ3ppcG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLmd6IikKIGJ6Mm5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLmJ6MiIpCit4em5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLnh6IikKIHRtcG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRtcC50YXIiKQogCiBtZDVfcmVndHlwZSA9ICI2NWY0NzdjODE4YWQ5ZTE1ZjdmZWFiMGM2ZDM3NzQyZiIKQEAgLTUxLDEzICs1NiwxMCBAQAogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9yZWd1bGFyX2ZpbGUoc2VsZik6CiAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhci5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQotICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CiAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgobGVuKGRhdGEpLCBtZDVzdW0oZGF0YSkpID09ICh0YXJpbmZvLnNpemUsIG1kNV9yZWd0eXBlKSwKICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXIgZmlsZSBleHRyYWN0aW9uIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVhZGxpbmVzKHNlbGYpOgogICAgICAgICBzZWxmLnRhci5leHRyYWN0KCJ1c3Rhci9yZWd0eXBlIiwgVEVNUERJUikKQEAgLTY1LDggKzY3LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihURU1QRElSLCAidXN0YXIvcmVndHlwZSIpLCAiciIpIGFzIGZvYmoxOgogICAgICAgICAgICAgbGluZXMxID0gZm9iajEucmVhZGxpbmVzKCkKIAotICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CiAgICAgICAgICAgICBmb2JqMiA9IGlvLlRleHRJT1dyYXBwZXIoZm9iaikKICAgICAgICAgICAgIGxpbmVzMiA9IGZvYmoyLnJlYWRsaW5lcygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXMxID09IGxpbmVzMiwKQEAgLTc2LDIxICs3NywxNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzMls4M10gPT0KICAgICAgICAgICAgICAgICAgICAgIkkgd2lsbCBnbGFkbHkgYWRtaXQgdGhhdCBQeXRob24gaXMgbm90IHRoZSBmYXN0ZXN0IHJ1bm5pbmcgc2NyaXB0aW5nIGxhbmd1YWdlLlxuIiwKICAgICAgICAgICAgICAgICAgICAgImZpbGVvYmoucmVhZGxpbmVzKCkgZmFpbGVkIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9pdGVyKHNlbGYpOgogICAgICAgICBzZWxmLnRhci5leHRyYWN0KCJ1c3Rhci9yZWd0eXBlIiwgVEVNUERJUikKICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyLmdldG1lbWJlcigidXN0YXIvcmVndHlwZSIpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInJVIikgYXMgZm9iajE6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInIiKSBhcyBmb2JqMToKICAgICAgICAgICAgIGxpbmVzMSA9IGZvYmoxLnJlYWRsaW5lcygpCi0gICAgICAgIGZvYmoyID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmoyOgogICAgICAgICAgICAgbGluZXMyID0gbGlzdChpby5UZXh0SU9XcmFwcGVyKGZvYmoyKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lczEgPT0gbGluZXMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlb2JqLl9faXRlcl9fKCkgZmFpbGVkIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmoyLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfc2VlayhzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCkBAIC0xNDIsMTcgKzEzOCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgInJlYWQoKSBhZnRlciByZWFkbGluZSgpIGZhaWxlZCIpCiAgICAgICAgIGZvYmouY2xvc2UoKQogCisgICAgZGVmIHRlc3RfZmlsZW9ial90ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKCJ1c3Rhci9yZWd0eXBlIikgYXMgZm9iajoKKyAgICAgICAgICAgIGZvYmogPSBpby5UZXh0SU9XcmFwcGVyKGZvYmopCisgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkuZW5jb2RlKCJpc284ODU5LTEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZDVzdW0oZGF0YSksIG1kNV9yZWd0eXBlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvYmouc2VlaygxMDApCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTM4MTU6IHNlZWsoKSBjb21wbGFpbmVkIGFib3V0IGEgbWlzc2luZworICAgICAgICAgICAgICAgICMgZmx1c2goKSBtZXRob2QuCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzZWVraW5nIGZhaWxlZCBpbiB0ZXh0IG1vZGUiKQorCiAgICAgIyBUZXN0IGlmIHN5bWJvbGljIGFuZCBoYXJkIGxpbmtzIGFyZSByZXNvbHZlZCBieSBleHRyYWN0ZmlsZSgpLiAgVGhlCiAgICAgIyB0ZXN0IGxpbmsgbWVtYmVycyBlYWNoIHBvaW50IHRvIGEgcmVndWxhciBtZW1iZXIgd2hvc2UgZGF0YSBpcwogICAgICMgc3VwcG9zZWQgdG8gYmUgZXhwb3J0ZWQuCiAgICAgZGVmIF90ZXN0X2ZpbGVvYmpfbGluayhzZWxmLCBsbmt0eXBlLCByZWd0eXBlKToKLSAgICAgICAgYSA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKGxua3R5cGUpCi0gICAgICAgIGIgPSBzZWxmLnRhci5leHRyYWN0ZmlsZShyZWd0eXBlKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi50YXIuZXh0cmFjdGZpbGUobG5rdHlwZSkgYXMgYSwgc2VsZi50YXIuZXh0cmFjdGZpbGUocmVndHlwZSkgYXMgYjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5uYW1lLCBiLm5hbWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBhLmNsb3NlKCkKLSAgICAgICAgICAgIGIuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9saW5rMShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9maWxlb2JqX2xpbmsoInVzdGFyL2xua3R5cGUiLCAidXN0YXIvcmVndHlwZSIpCkBAIC0yMDQsMTMgKzIwNywxNSBAQAogICAgICAgICAgICAgX29wZW4gPSBnemlwLkd6aXBGaWxlCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6YnoyIik6CiAgICAgICAgICAgICBfb3BlbiA9IGJ6Mi5CWjJGaWxlCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6eHoiKToKKyAgICAgICAgICAgIF9vcGVuID0gbHptYS5MWk1BRmlsZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgX29wZW4gPSBvcGVuCisgICAgICAgICAgICBfb3BlbiA9IGlvLkZpbGVJTwogCiAgICAgICAgIGZvciBjaGFyIGluIChiJ1wwJywgYidhJyk6CiAgICAgICAgICAgICAjIFRlc3QgaWYgRU9GSGVhZGVyRXJyb3IgKCdcMCcpIGFuZCBJbnZhbGlkSGVhZGVyRXJyb3IgKCdhJykKICAgICAgICAgICAgICMgYXJlIGlnbm9yZWQgY29ycmVjdGx5LgotICAgICAgICAgICAgd2l0aCBfb3Blbih0bXBuYW1lLCAid2IiKSBhcyBmb2JqOgorICAgICAgICAgICAgd2l0aCBfb3Blbih0bXBuYW1lLCAidyIpIGFzIGZvYmo6CiAgICAgICAgICAgICAgICAgZm9iai53cml0ZShjaGFyICogMTAyNCkKICAgICAgICAgICAgICAgICBmb2JqLndyaXRlKHRhcmZpbGUuVGFySW5mbygiZm9vIikudG9idWYoKSkKIApAQCAtMjI1LDYgKzIzMCwxMCBAQAogY2xhc3MgTWlzY1JlYWRUZXN0KENvbW1vblJlYWRUZXN0KToKIAogICAgIGRlZiB0ZXN0X25vX25hbWVfYXJndW1lbnQoc2VsZik6CisgICAgICAgIGlmIHNlbGYubW9kZS5lbmRzd2l0aCgoImJ6MiIsICJ4eiIpKToKKyAgICAgICAgICAgICMgQloyRmlsZSBhbmQgTFpNQUZpbGUgaGF2ZSBubyBuYW1lIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIG5hbWUgYXR0cmlidXRlIikKKwogICAgICAgICB3aXRoIG9wZW4oc2VsZi50YXJuYW1lLCAicmIiKSBhcyBmb2JqOgogICAgICAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKGZpbGVvYmo9Zm9iaiwgbW9kZT1zZWxmLm1vZGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRhci5uYW1lLCBvcy5wYXRoLmFic3BhdGgoZm9iai5uYW1lKSkKQEAgLTI1NCw5ICsyNjMsOCBAQAogICAgICAgICAgICAgdCA9IHRhci5uZXh0KCkKICAgICAgICAgICAgIG5hbWUgPSB0Lm5hbWUKICAgICAgICAgICAgIG9mZnNldCA9IHQub2Zmc2V0Ci0gICAgICAgICAgICBmID0gdGFyLmV4dHJhY3RmaWxlKHQpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCB0YXIuZXh0cmFjdGZpbGUodCkgYXMgZjoKKyAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRhci5jbG9zZSgpCiAKQEAgLTI2NSwxMCArMjczLDEyIEBACiAgICAgICAgICAgICBfb3BlbiA9IGd6aXAuR3ppcEZpbGUKICAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoIjpiejIiKToKICAgICAgICAgICAgIF9vcGVuID0gYnoyLkJaMkZpbGUKKyAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoIjp4eiIpOgorICAgICAgICAgICAgX29wZW4gPSBsem1hLkxaTUFGaWxlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBfb3BlbiA9IG9wZW4KLSAgICAgICAgZm9iaiA9IF9vcGVuKHNlbGYudGFybmFtZSwgInJiIikKLSAgICAgICAgdHJ5OgorICAgICAgICAgICAgX29wZW4gPSBpby5GaWxlSU8KKworICAgICAgICB3aXRoIF9vcGVuKHNlbGYudGFybmFtZSkgYXMgZm9iajoKICAgICAgICAgICAgIGZvYmouc2VlayhvZmZzZXQpCiAKICAgICAgICAgICAgICMgVGVzdCBpZiB0aGUgdGFyZmlsZSBzdGFydHMgd2l0aCB0aGUgc2Vjb25kIG1lbWJlci4KQEAgLTI4MSw4ICsyOTEsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXIuZXh0cmFjdGZpbGUodCkucmVhZCgpLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAic2VlayBiYWNrIGRpZCBub3Qgd29yayIpCiAgICAgICAgICAgICB0YXIuY2xvc2UoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9iai5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9mYWlsX2NvbXAoc2VsZik6CiAgICAgICAgICMgRm9yIEd6aXAgYW5kIEJ6MiBUZXN0czogZmFpbCB3aXRoIGEgUmVhZEVycm9yIG9uIGFuIHVuY29tcHJlc3NlZCBmaWxlLgpAQCAtNDI4LDI3ICs0MzYsMjYgQEAKICAgICAgICAgZm9yIHRhcmluZm8gaW4gc2VsZi50YXI6CiAgICAgICAgICAgICBpZiBub3QgdGFyaW5mby5pc3JlZygpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmb2JqLnJlYWQoNTEyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCB0YXJmaWxlLlN0cmVhbUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNpbXBsZSByZWFkLXRocm91Z2ggdXNpbmcgVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCIpCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZvYmoucmVhZCg1MTIpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCB0YXJmaWxlLlN0cmVhbUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaW1wbGUgcmVhZC10aHJvdWdoIHVzaW5nIFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQiKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICB0YXJpbmZvID0gc2VsZi50YXIubmV4dCgpICMgZ2V0ICJyZWd0eXBlIiAoY2FuJ3QgdXNlIGdldG1lbWJlcikKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CisgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChsZW4oZGF0YSksIG1kNXN1bShkYXRhKSkgPT0gKHRhcmluZm8uc2l6ZSwgbWQ1X3JlZ3R5cGUpLAogICAgICAgICAgICAgICAgICJyZWd1bGFyIGZpbGUgZXh0cmFjdGlvbiBmYWlsZWQiKQogCiAgICAgZGVmIHRlc3RfcHJvdm9rZV9zdHJlYW1fZXJyb3Ioc2VsZik6CiAgICAgICAgIHRhcmluZm9zID0gc2VsZi50YXIuZ2V0bWVtYmVycygpCi0gICAgICAgIGYgPSBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvc1swXSkgIyByZWFkIHRoZSBmaXJzdCBtZW1iZXIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5TdHJlYW1FcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm9zWzBdKSBhcyBmOiAjIHJlYWQgdGhlIGZpcnN0IG1lbWJlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5TdHJlYW1FcnJvciwgZi5yZWFkKQogCiAgICAgZGVmIHRlc3RfY29tcGFyZV9tZW1iZXJzKHNlbGYpOgogICAgICAgICB0YXIxID0gdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPSJpc284ODU5LTEiKQpAQCAtNTI2LDYgKzUzMywxOCBAQAogICAgICAgICAgICAgdGVzdGZ1bmMoYnoybmFtZSwgInJ8KiIpCiAgICAgICAgICAgICB0ZXN0ZnVuYyhiejJuYW1lLCAicnxiejIiKQogCisgICAgICAgIGlmIGx6bWE6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0YXJuYW1lLCBtb2RlPSJyOnh6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRhcm5hbWUsIG1vZGU9InJ8eHoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgeHpuYW1lLCBtb2RlPSJyOiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB4em5hbWUsIG1vZGU9InJ8IikKKworICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAiciIpCisgICAgICAgICAgICB0ZXN0ZnVuYyh4em5hbWUsICJyOioiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicjp4eiIpCisgICAgICAgICAgICB0ZXN0ZnVuYyh4em5hbWUsICJyfCoiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicnx4eiIpCisKICAgICBkZWYgdGVzdF9kZXRlY3RfZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9tb2RlcyhzZWxmLl90ZXN0ZnVuY19maWxlKQogCkBAIC03MjMsNyArNzQyLDcgQEAKICAgICAgICAgIyBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGxhdGZvcm0ga25vd3MgdGhlIHN0X2Jsb2NrcyBzdGF0IGF0dHJpYnV0ZSBhbmQKICAgICAgICAgIyB1c2VzIHN0X2Jsb2NrcyB1bml0cyBvZiA1MTIgYnl0ZXMsIGFuZCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBhYmxlIHRvCiAgICAgICAgICMgc3RvcmUgaG9sZXMgaW4gZmlsZXMuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAibGludXgyIjoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4Iik6CiAgICAgICAgICAgICAjIExpbnV4IGV2aWRlbnRpYWxseSBoYXMgNTEyIGJ5dGUgc3RfYmxvY2tzIHVuaXRzLgogICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihURU1QRElSLCAic3BhcnNlLXRlc3QiKQogICAgICAgICAgICAgd2l0aCBvcGVuKG5hbWUsICJ3YiIpIGFzIGZvYmo6CkBAIC05MTMsNyArOTMyLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCJmb28iLCAiYmFyIiwgImJheiIpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgbmFtZSkKLSAgICAgICAgICAgICAgICBvcGVuKG5hbWUsICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG5hbWUpCiAKICAgICAgICAgICAgIGV4Y2x1ZGUgPSBvcy5wYXRoLmlzZmlsZQogCkBAIC05NDAsNyArOTU5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCJmb28iLCAiYmFyIiwgImJheiIpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgbmFtZSkKLSAgICAgICAgICAgICAgICBvcGVuKG5hbWUsICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG5hbWUpCiAKICAgICAgICAgICAgIGRlZiBmaWx0ZXIodGFyaW5mbyk6CiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSh0YXJpbmZvLm5hbWUpID09ICJiYXIiOgpAQCAtOTc5LDcgKzk5OCw3IEBACiAgICAgICAgICMgYW5kIGNvbXBhcmUgdGhlIHN0b3JlZCBuYW1lIHdpdGggdGhlIG9yaWdpbmFsLgogICAgICAgICBmb28gPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgImZvbyIpCiAgICAgICAgIGlmIG5vdCBkaXI6Ci0gICAgICAgICAgICBvcGVuKGZvbywgInciKS5jbG9zZSgpCisgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKGZvbykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLm1rZGlyKGZvbykKIApAQCAtMTA5Niw2ICsxMTE1LDkgQEAKICAgICAgICAgICAgIGRhdGEgPSBkZWMuZGVjb21wcmVzcyhkYXRhKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihkZWMudW51c2VkX2RhdGEpID09IDAsCiAgICAgICAgICAgICAgICAgICAgICJmb3VuZCB0cmFpbGluZyBkYXRhIikKKyAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoInh6Iik6CisgICAgICAgICAgICB3aXRoIGx6bWEuTFpNQUZpbGUodG1wbmFtZSkgYXMgZm9iajoKKyAgICAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHdpdGggb3Blbih0bXBuYW1lLCAicmIiKSBhcyBmb2JqOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQpAQCAtMTMzOSw3ICsxMzYxLDcgQEAKICAgICAgICAgc2VsZi5fdGVzdF91bmljb2RlX2ZpbGVuYW1lKCJ1dGY3IikKIAogICAgIGRlZiB0ZXN0X3V0ZjhfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmOCIpCisgICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmLTgiKQogCiAgICAgZGVmIF90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoc2VsZiwgZW5jb2RpbmcpOgogICAgICAgICB0YXIgPSB0YXJmaWxlLm9wZW4odG1wbmFtZSwgInciLCBmb3JtYXQ9c2VsZi5mb3JtYXQsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN0cmljdCIpCkBAIC0xNDE4LDcgKzE0NDAsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9wYXhfaGVhZGVyKHNlbGYpOgogICAgICAgICAjIFRlc3QgZm9yIGlzc3VlICM4NjMzLiBHTlUgdGFyIDw9IDEuMjMgY3JlYXRlcyByYXcgYmluYXJ5IGZpZWxkcwogICAgICAgICAjIHdpdGhvdXQgYSBoZHJjaGFyc2V0PUJJTkFSWSBoZWFkZXIuCi0gICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGY4IiwgInBheC9iYWQtcGF4LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAorICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmLTgiLCAicGF4L2JhZC1wYXgtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCiAgICAgICAgICAgICAgICAgKCJpc284ODU5LTEiLCAicGF4L2JhZC1wYXgtXHhlNFx4ZjZceGZjIiksKToKICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN1cnJvZ2F0ZWVzY2FwZSIpIGFzIHRhcjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDMzLDcgKzE0NTUsNyBAQAogCiAgICAgZGVmIHRlc3RfYmluYXJ5X2hlYWRlcihzZWxmKToKICAgICAgICAgIyBUZXN0IGEgUE9TSVguMS0yMDA4IGNvbXBhdGlibGUgaGVhZGVyIHdpdGggYSBoZHJjaGFyc2V0PUJJTkFSWSBmaWVsZC4KLSAgICAgICAgZm9yIGVuY29kaW5nLCBuYW1lIGluICgoInV0ZjgiLCAicGF4L2hkcmNoYXJzZXQtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCisgICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGYtOCIsICJwYXgvaGRyY2hhcnNldC1cdWRjZTRcdWRjZjZcdWRjZmMiKSwKICAgICAgICAgICAgICAgICAoImlzbzg4NTktMSIsICJwYXgvaGRyY2hhcnNldC1ceGU0XHhmNlx4ZmMiKSwpOgogICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odGFybmFtZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgdGFyOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTE0NTgsMTIgKzE0ODAsOSBAQAogICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz0iaXNvODg1OS0xIikgYXMgc3JjOgogICAgICAgICAgICAgdCA9IHNyYy5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQogICAgICAgICAgICAgdC5uYW1lID0gImZvbyIKLSAgICAgICAgICAgIGYgPSBzcmMuZXh0cmFjdGZpbGUodCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc3JjLmV4dHJhY3RmaWxlKHQpIGFzIGY6CiAgICAgICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4oc2VsZi50YXJuYW1lLCBtb2RlKSBhcyB0YXI6CiAgICAgICAgICAgICAgICAgICAgIHRhci5hZGRmaWxlKHQsIGYpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIF90ZXN0KHNlbGYsIG5hbWVzPVsiYmFyIl0sIGZpbGVvYmo9Tm9uZSk6CiAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHNlbGYudGFybmFtZSwgZmlsZW9iaj1maWxlb2JqKSBhcyB0YXI6CkBAIC0xNTEwLDYgKzE1MjksMTIgQEAKICAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3R0YXIoInc6YnoyIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgdG1wbmFtZSwgImEiKQogCisgICAgZGVmIHRlc3RfYXBwZW5kX2x6bWEoc2VsZik6CisgICAgICAgIGlmIGx6bWEgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImx6bWEgbW9kdWxlIG5vdCBhdmFpbGFibGUiKQorICAgICAgICBzZWxmLl9jcmVhdGVfdGVzdHRhcigidzp4eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRtcG5hbWUsICJhIikKKwogICAgICMgQXBwZW5kIG1vZGUgaXMgc3VwcG9zZWQgdG8gZmFpbCBpZiB0aGUgdGFyZmlsZSB0byBhcHBlbmQgdG8KICAgICAjIGRvZXMgbm90IGVuZCB3aXRoIGEgemVybyBibG9jay4KICAgICBkZWYgX3Rlc3RfZXJyb3Ioc2VsZiwgZGF0YSk6CkBAIC0xNzg4LDYgKzE4MTMsMjEgQEAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX2lucHV0KCJyOmJ6MiIpCiAKIAorY2xhc3MgTHptYU1pc2NSZWFkVGVzdChNaXNjUmVhZFRlc3QpOgorICAgIHRhcm5hbWUgPSB4em5hbWUKKyAgICBtb2RlID0gInI6eHoiCitjbGFzcyBMem1hVXN0YXJSZWFkVGVzdChVc3RhclJlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyOnh6IgorY2xhc3MgTHptYVN0cmVhbVJlYWRUZXN0KFN0cmVhbVJlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyfHh6IgorY2xhc3MgTHptYVdyaXRlVGVzdChXcml0ZVRlc3QpOgorICAgIG1vZGUgPSAidzp4eiIKK2NsYXNzIEx6bWFTdHJlYW1Xcml0ZVRlc3QoU3RyZWFtV3JpdGVUZXN0KToKKyAgICBtb2RlID0gInd8eHoiCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQudW5saW5rKFRFTVBESVIpCiAgICAgb3MubWFrZWRpcnMoVEVNUERJUikKQEAgLTE4NTAsNiArMTg5MCwyMCBAQAogICAgICAgICAgICAgQnoyUGFydGlhbFJlYWRUZXN0LAogICAgICAgICBdCiAKKyAgICBpZiBsem1hOgorICAgICAgICAjIENyZWF0ZSB0ZXN0dGFyLnRhci54eiBhbmQgYWRkIGx6bWEtc3BlY2lmaWMgdGVzdHMuCisgICAgICAgIHN1cHBvcnQudW5saW5rKHh6bmFtZSkKKyAgICAgICAgd2l0aCBsem1hLkxaTUFGaWxlKHh6bmFtZSwgInciKSBhcyB0YXI6CisgICAgICAgICAgICB0YXIud3JpdGUoZGF0YSkKKworICAgICAgICB0ZXN0cyArPSBbCisgICAgICAgICAgICBMem1hTWlzY1JlYWRUZXN0LAorICAgICAgICAgICAgTHptYVVzdGFyUmVhZFRlc3QsCisgICAgICAgICAgICBMem1hU3RyZWFtUmVhZFRlc3QsCisgICAgICAgICAgICBMem1hV3JpdGVUZXN0LAorICAgICAgICAgICAgTHptYVN0cmVhbVdyaXRlVGVzdCwKKyAgICAgICAgXQorCiAgICAgdHJ5OgogICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggOTVlZWJmMy4uMTFlOTVlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTM2LDYgKzM2LDcgQEAKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCisgICAgICAgIGRlbCBzZWxmLnRocmVhZCAgIyBDbGVhciBvdXQgYW55IGRhbmdsaW5nIFRocmVhZCBvYmplY3RzLgogCiAgICAgZGVmIHRlc3RCYXNpYyhzZWxmKToKICAgICAgICAgIyBjb25uZWN0cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKaW5kZXggNTBjZjNiNC4uZDc5ZjMxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CkBAIC0yMSw3ICsyMSw3IEBACiAKICMgVEVTVF9GSUxFUyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIGZvciBzeXN0ZW1zIGRlcGVuZGluZyBvbiB0aGUgbWF4aW11bQogIyBudW1iZXIgb2YgZmlsZXMgdGhhdCBjYW4gYmUgb3BlbmVkIGF0IG9uZSB0aW1lIChzZWUgdWxpbWl0IC1uKQotaWYgc3lzLnBsYXRmb3JtIGluICgnb3BlbmJzZDMnLCAnb3BlbmJzZDQnKToKK2lmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJyk6CiAgICAgVEVTVF9GSUxFUyA9IDQ4CiBlbHNlOgogICAgIFRFU1RfRklMRVMgPSAxMDAKQEAgLTMxLDcgKzMxLDcgQEAKICMgdGhyZWFkcyBpcyBub3QgZG9uZSBoZXJlLgogCiAjIENvbW1vbiBmdW5jdGlvbmFsaXR5LgotY2xhc3MgVEModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN0cl9jaGVjayA9IHJlLmNvbXBpbGUociJbYS16QS1aMC05Xy1dezZ9JCIpCiAKQEAgLTQ1LDExICs0NSw2IEBACiAgICAgICAgIHNlbGYuX3dhcm5pbmdzX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKIAogCi0gICAgZGVmIGZhaWxPbkV4Y2VwdGlvbihzZWxmLCB3aGF0LCBlaT1Ob25lKToKLSAgICAgICAgaWYgZWkgaXMgTm9uZToKLSAgICAgICAgICAgIGVpID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgc2VsZi5mYWlsKCIlcyByYWlzZWQgJXM6ICVzIiAlICh3aGF0LCBlaVswXSwgZWlbMV0pKQotCiAgICAgZGVmIG5hbWVDaGVjayhzZWxmLCBuYW1lLCBkaXIsIHByZSwgc3VmKToKICAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKICAgICAgICAgbnByZSAgPSBuYmFzZVs6bGVuKHByZSldCkBAIC02OCw5ICs2Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAicmFuZG9tIHN0cmluZyAnJXMnIGRvZXMgbm90IG1hdGNoIC9eW2EtekEtWjAtOV8tXXs2fSQvIgogICAgICAgICAgICAgICAgICAgICAgJSBuYmFzZSkKIAotdGVzdF9jbGFzc2VzID0gW10KIAotY2xhc3MgdGVzdF9leHBvcnRzKFRDKToKK2NsYXNzIFRlc3RFeHBvcnRzKEJhc2VUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZXhwb3J0cyhzZWxmKToKICAgICAgICAgIyBUaGVyZSBhcmUgbm8gc3VycHJpc2luZyBzeW1ib2xzIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUKICAgICAgICAgZGljdCA9IHRlbXBmaWxlLl9fZGljdF9fCkBAIC05NywxMCArOTEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHVuZXhwKSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQga2V5czogJXMiICUgdW5leHApCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9leHBvcnRzKQogCi0KLWNsYXNzIHRlc3RfX1JhbmRvbU5hbWVTZXF1ZW5jZShUQyk6CitjbGFzcyBUZXN0UmFuZG9tTmFtZVNlcXVlbmNlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgaW50ZXJuYWwgaXRlcmF0b3Igb2JqZWN0IF9SYW5kb21OYW1lU2VxdWVuY2UuIiIiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xMjgsMTMgKzEyMCwxMCBAQAogCiAgICAgICAgIGkgPSAwCiAgICAgICAgIHIgPSBzZWxmLnIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHMgaW4gcjoKLSAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgICAgICBpZiBpID09IDIwOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiaXRlcmF0aW9uIikKKyAgICAgICAgZm9yIHMgaW4gcjoKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgaWYgaSA9PSAyMDoKKyAgICAgICAgICAgICAgICBicmVhawogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwKICAgICAgICAgIm9zLmZvcmsgaXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCIpCkBAIC0xNjcsMTAgKzE1Niw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2hpbGRfdmFsdWUsIHBhcmVudF92YWx1ZSkKIAogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX1JhbmRvbU5hbWVTZXF1ZW5jZSkKIAotCi1jbGFzcyB0ZXN0X19jYW5kaWRhdGVfdGVtcGRpcl9saXN0KFRDKToKK2NsYXNzIFRlc3RDYW5kaWRhdGVUZW1wZGlyTGlzdChCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGZ1bmN0aW9uIF9jYW5kaWRhdGVfdGVtcGRpcl9saXN0LiIiIgogCiAgICAgZGVmIHRlc3Rfbm9uZW1wdHlfbGlzdChzZWxmKToKQEAgLTIwOSwxMyArMTk2LDExIEBACiAgICAgICAgICAgICAjIE5vdCBwcmFjdGljYWwgdG8gdHJ5IHRvIHZlcmlmeSB0aGUgcHJlc2VuY2Ugb2YgT1Mtc3BlY2lmaWMKICAgICAgICAgICAgICMgcGF0aHMgaW4gdGhpcyBsaXN0LgogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX2NhbmRpZGF0ZV90ZW1wZGlyX2xpc3QpCi0KIAogIyBXZSB0ZXN0IF9nZXRfZGVmYXVsdF90ZW1wZGlyIGJ5IHRlc3RpbmcgZ2V0dGVtcGRpci4KIAogCi1jbGFzcyB0ZXN0X19nZXRfY2FuZGlkYXRlX25hbWVzKFRDKToKK2NsYXNzIFRlc3RHZXRDYW5kaWRhdGVOYW1lcyhCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGZ1bmN0aW9uIF9nZXRfY2FuZGlkYXRlX25hbWVzLiIiIgogCiAgICAgZGVmIHRlc3RfcmV0dmFsKHNlbGYpOgpAQCAtMjMwLDEwICsyMTUsOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIGlzIGIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9fZ2V0X2NhbmRpZGF0ZV9uYW1lcykKIAotCi1jbGFzcyB0ZXN0X19ta3N0ZW1wX2lubmVyKFRDKToKK2NsYXNzIFRlc3RNa3N0ZW1wSW5uZXIoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfbWtzdGVtcF9pbm5lci4iIiIKIAogICAgIGNsYXNzIG1rc3RlbXBlZDoKQEAgLTI1OCwxMCArMjQxLDcgQEAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIiwgYmluPTEpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gc2VsZi5ta3N0ZW1wZWQoZGlyLCBwcmUsIHN1ZiwgYmluKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiX21rc3RlbXBfaW5uZXIiKQorICAgICAgICBmaWxlID0gc2VsZi5ta3N0ZW1wZWQoZGlyLCBwcmUsIHN1ZiwgYmluKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTM1MywxMCArMzMzLDggQEAKICAgICAgICAgb3MubHNlZWsoZi5mZCwgMCwgb3MuU0VFS19TRVQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZChmLmZkLCAyMCksIGIiYmxhdCIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9fbWtzdGVtcF9pbm5lcikKIAotCi1jbGFzcyB0ZXN0X2dldHRlbXBwcmVmaXgoVEMpOgorY2xhc3MgVGVzdEdldFRlbXBQcmVmaXgoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IGdldHRlbXBwcmVmaXgoKS4iIiIKIAogICAgIGRlZiB0ZXN0X3NhbmVfdGVtcGxhdGUoc2VsZik6CkBAIC0zNzYsMTkgKzM1NCwxNCBAQAogICAgICAgICBkID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9IiIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4oZCwgcCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4ocCwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigib3Mub3BlbiIpCisgICAgICAgICAgICBmZCA9IG9zLm9wZW4ocCwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICAgICAgb3MudW5saW5rKHApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5ybWRpcihkKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZ2V0dGVtcHByZWZpeCkKIAotCi1jbGFzcyB0ZXN0X2dldHRlbXBkaXIoVEMpOgorY2xhc3MgVGVzdEdldFRlbXBEaXIoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IGdldHRlbXBkaXIoKS4iIiIKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9leGlzdHMoc2VsZik6CkBAIC00MDYsMTIgKzM3OSw5IEBACiAgICAgICAgICMgc25lYWt5OiBqdXN0IGluc3RhbnRpYXRlIGEgTmFtZWRUZW1wb3JhcnlGaWxlLCB3aGljaAogICAgICAgICAjIGRlZmF1bHRzIHRvIHdyaXRpbmcgaW50byB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5CiAgICAgICAgICMgZ2V0dGVtcGRpci4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCi0gICAgICAgICAgICBmaWxlLndyaXRlKGIiYmxhdCIpCi0gICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNyZWF0ZSBmaWxlIGluICVzIiAlIHRlbXBmaWxlLmdldHRlbXBkaXIoKSkKKyAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIGZpbGUud3JpdGUoYiJibGF0IikKKyAgICAgICAgZmlsZS5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9zYW1lX3RoaW5nKHNlbGYpOgogICAgICAgICAjIGdldHRlbXBkaXIgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0CkBAIC00MjAsMjMgKzM5MCwxOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIGlzIGIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9nZXR0ZW1wZGlyKQogCi0KLWNsYXNzIHRlc3RfbWtzdGVtcChUQyk6CitjbGFzcyBUZXN0TWtzdGVtcChCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgbWtzdGVtcCgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAoZmQsIG5hbWUpID0gdGVtcGZpbGUubWtzdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQotICAgICAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKLSAgICAgICAgICAgIGFkaXIgPSBvcy5wYXRoLmFic3BhdGgoZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGlyLCBuZGlyLAotICAgICAgICAgICAgICAgICJEaXJlY3RvcnkgJyVzJyBpbmNvcnJlY3RseSByZXR1cm5lZCBhcyAnJXMnIiAlIChhZGlyLCBuZGlyKSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm1rc3RlbXAiKQorICAgICAgICAoZmQsIG5hbWUpID0gdGVtcGZpbGUubWtzdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQorICAgICAgICAobmRpciwgbmJhc2UpID0gb3MucGF0aC5zcGxpdChuYW1lKQorICAgICAgICBhZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGlyLCBuZGlyLAorICAgICAgICAgICAgIkRpcmVjdG9yeSAnJXMnIGluY29ycmVjdGx5IHJldHVybmVkIGFzICclcyciICUgKGFkaXIsIG5kaXIpKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubmFtZUNoZWNrKG5hbWUsIGRpciwgcHJlLCBzdWYpCkBAIC00NjEsMTkgKzQyNiwxNCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfbWtzdGVtcCkKIAotCi1jbGFzcyB0ZXN0X21rZHRlbXAoVEMpOgorY2xhc3MgVGVzdE1rZHRlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rZHRlbXAoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm1rZHRlbXAiKQorICAgICAgICBuYW1lID0gdGVtcGZpbGUubWtkdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubmFtZUNoZWNrKG5hbWUsIGRpciwgcHJlLCBzdWYpCkBAIC01MjgsMTAgKzQ4OCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9ta2R0ZW1wKQogCi0KLWNsYXNzIHRlc3RfbWt0ZW1wKFRDKToKK2NsYXNzIFRlc3RNa3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rdGVtcCgpLiIiIgogCiAgICAgIyBGb3Igc2FmZXR5LCBhbGwgdXNlIG9mIG1rdGVtcCBtdXN0IG9jY3VyIGluIGEgcHJpdmF0ZSBkaXJlY3RvcnkuCkBAIC01NjAsMTAgKzUxOCw3IEBACiAgICAgICAgICAgICBzZWxmLl91bmxpbmsoc2VsZi5uYW1lKQogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBwcmU9IiIsIHN1Zj0iIik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSBzZWxmLm1rdGVtcGVkKHNlbGYuZGlyLCBwcmUsIHN1ZikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm1rdGVtcCIpCisgICAgICAgIGZpbGUgPSBzZWxmLm1rdGVtcGVkKHNlbGYuZGlyLCBwcmUsIHN1ZikKIAogICAgICAgICBzZWxmLm5hbWVDaGVjayhmaWxlLm5hbWUsIHNlbGYuZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTU5MCwyMyArNTQ1LDE4IEBACiAjIyAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVXYXJuaW5nLAogIyMgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5ta3RlbXAsIGRpcj1zZWxmLmRpcikKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X21rdGVtcCkKLQogCiAjIFdlIHRlc3QgX1RlbXBvcmFyeUZpbGVXcmFwcGVyIGJ5IHRlc3RpbmcgTmFtZWRUZW1wb3JhcnlGaWxlLgogCiAKLWNsYXNzIHRlc3RfTmFtZWRUZW1wb3JhcnlGaWxlKFRDKToKK2NsYXNzIFRlc3ROYW1lZFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IE5hbWVkVGVtcG9yYXJ5RmlsZSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIGRlbGV0ZT1UcnVlKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGU9ZGVsZXRlKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiTmFtZWRUZW1wb3JhcnlGaWxlIikKKyAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZT1kZWxldGUpCiAKICAgICAgICAgc2VsZi5uYW1lQ2hlY2soZmlsZS5uYW1lLCBkaXIsIHByZSwgc3VmKQogICAgICAgICByZXR1cm4gZmlsZQpAQCAtNjU5LDExICs2MDksOCBAQAogICAgICAgICBmID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkKICAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbG9zZSIpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKICAgICAgICAgIyBBIE5hbWVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlcgpAQCAtNjc3LDE4ICs2MjQsMTQgQEAKIAogICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X05hbWVkVGVtcG9yYXJ5RmlsZSkKIAotY2xhc3MgdGVzdF9TcG9vbGVkVGVtcG9yYXJ5RmlsZShUQyk6CitjbGFzcyBUZXN0U3Bvb2xlZFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IFNwb29sZWRUZW1wb3JhcnlGaWxlKCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIG1heF9zaXplPTAsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT1tYXhfc2l6ZSwgZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIlNwb29sZWRUZW1wb3JhcnlGaWxlIikKKyAgICAgICAgZmlsZSA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPW1heF9zaXplLCBkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogCiAgICAgICAgIHJldHVybiBmaWxlCiAKQEAgLTc3NiwxMSArNzE5LDggQEAKICAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLl9yb2xsZWQpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZV9hZnRlcl9yb2xsb3ZlcihzZWxmKToKICAgICAgICAgIyBBIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCkBAIC03ODgsMTEgKzcyOCw4IEBACiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLl9yb2xsZWQpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9ib3VuZF9tZXRob2RzKHNlbGYpOgogICAgICAgICAjIEl0IHNob3VsZCBiZSBPSyB0byBzdGVhbCBhIGJvdW5kIG1ldGhvZCBmcm9tIGEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUKQEAgLTg3OCw2NiArODE1LDc2IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB1c2VfY2xvc2VkKQogCi0KLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9TcG9vbGVkVGVtcG9yYXJ5RmlsZSkKLQotCi1jbGFzcyB0ZXN0X1RlbXBvcmFyeUZpbGUoVEMpOgotICAgICIiIlRlc3QgVGVtcG9yYXJ5RmlsZSgpLiIiIgotCi0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6Ci0gICAgICAgICMgVGVtcG9yYXJ5RmlsZSBjYW4gY3JlYXRlIGZpbGVzCi0gICAgICAgICMgTm8gcG9pbnQgaW4gdGVzdGluZyB0aGUgbmFtZSBwYXJhbXMgLSB0aGUgZmlsZSBoYXMgbm8gbmFtZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJUZW1wb3JhcnlGaWxlIikKLQotICAgIGRlZiB0ZXN0X2hhc19ub19uYW1lKHNlbGYpOgotICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY3JlYXRlcyBmaWxlcyB3aXRoIG5vIG5hbWVzIChvbiB0aGlzIHN5c3RlbSkKLSAgICAgICAgZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKGRpcj1kaXIpCi0gICAgICAgIGYud3JpdGUoYidibGF0JykKLQotICAgICAgICAjIFNuZWFreTogYmVjYXVzZSB0aGlzIGZpbGUgaGFzIG5vIG5hbWUsIGl0IHNob3VsZCBub3QgcHJldmVudAotICAgICAgICAjIHVzIGZyb20gcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpdCB3YXMgY3JlYXRlZCBpbi4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBlaSA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICAjIGNsZWFudXAKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oInJtZGlyIiwgZWkpCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZShzZWxmKToKLSAgICAgICAgIyBBIFRlbXBvcmFyeUZpbGUgY2FuIGJlIGNsb3NlZCBtYW55IHRpbWVzIHdpdGhvdXQgZXJyb3IKLSAgICAgICAgZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQotICAgICAgICBmLndyaXRlKGInYWJjXG4nKQotICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKLQotICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KLSAgICBkZWYgdGVzdF9tb2RlX2FuZF9lbmNvZGluZyhzZWxmKToKLQotICAgICAgICBkZWYgcm91bmR0cmlwKGlucHV0LCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCphcmdzLCAqKmt3YXJncykgYXMgZmlsZW9iajoKLSAgICAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKGlucHV0KQotICAgICAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGZpbGVvYmoucmVhZCgpKQotCi0gICAgICAgIHJvdW5kdHJpcChiIjEyMzQiLCAidytiIikKLSAgICAgICAgcm91bmR0cmlwKCJhYmRjXG4iLCAidysiKQotICAgICAgICByb3VuZHRyaXAoIlx1MDM5QiIsICJ3KyIsIGVuY29kaW5nPSJ1dGYtMTYiKQotICAgICAgICByb3VuZHRyaXAoImZvb1xyXG4iLCAidysiLCBuZXdsaW5lPSIiKQorICAgIGRlZiB0ZXN0X3RydW5jYXRlX3dpdGhfc2l6ZV9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgdHJ1bmNhdGVkIHRvIHplcm8gc2l6ZQorICAgICAgICBmID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9MTApCisgICAgICAgIGYud3JpdGUoYidhYmNkZWZnXG4nKQorICAgICAgICBmLnNlZWsoMCkKKyAgICAgICAgZi50cnVuY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5fcm9sbGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX2ZpbGUuZ2V0dmFsdWUoKSwgYicnKQorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHRydW5jYXRlZCB0byBhIHNwZWNpZmljIHNpemUKKyAgICAgICAgZiA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPTEwKQorICAgICAgICBmLndyaXRlKGInYWJjZGVmZ1xuJykKKyAgICAgICAgZi50cnVuY2F0ZSg0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuX3JvbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9maWxlLmdldHZhbHVlKCksIGInYWJjZCcpCisgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSByb2xscyBvdmVyIGlmIHRydW5jYXRlZCB0byBsYXJnZSBzaXplCisgICAgICAgIGYgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT0xMCkKKyAgICAgICAgZi53cml0ZShiJ2FiY2RlZmdcbicpCisgICAgICAgIGYudHJ1bmNhdGUoMjApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLl9yb2xsZWQpCisgICAgICAgIGlmIGhhc19zdGF0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5mc3RhdChmLmZpbGVubygpKS5zdF9zaXplLCAyMCkKIAogCiBpZiB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUgaXMgbm90IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGU6Ci0gICAgdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X1RlbXBvcmFyeUZpbGUpCisKKyAgICBjbGFzcyBUZXN0VGVtcG9yYXJ5RmlsZShCYXNlVGVzdENhc2UpOgorICAgICAgICAiIiJUZXN0IFRlbXBvcmFyeUZpbGUoKS4iIiIKKworICAgICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgICAgICMgVGVtcG9yYXJ5RmlsZSBjYW4gY3JlYXRlIGZpbGVzCisgICAgICAgICAgICAjIE5vIHBvaW50IGluIHRlc3RpbmcgdGhlIG5hbWUgcGFyYW1zIC0gdGhlIGZpbGUgaGFzIG5vIG5hbWUuCisgICAgICAgICAgICB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKKworICAgICAgICBkZWYgdGVzdF9oYXNfbm9fbmFtZShzZWxmKToKKyAgICAgICAgICAgICMgVGVtcG9yYXJ5RmlsZSBjcmVhdGVzIGZpbGVzIHdpdGggbm8gbmFtZXMgKG9uIHRoaXMgc3lzdGVtKQorICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZShkaXI9ZGlyKQorICAgICAgICAgICAgZi53cml0ZShiJ2JsYXQnKQorCisgICAgICAgICAgICAjIFNuZWFreTogYmVjYXVzZSB0aGlzIGZpbGUgaGFzIG5vIG5hbWUsIGl0IHNob3VsZCBub3QgcHJldmVudAorICAgICAgICAgICAgIyB1cyBmcm9tIHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgaXQgd2FzIGNyZWF0ZWQgaW4uCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICMgY2xlYW51cAorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiB0ZXN0X211bHRpcGxlX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgIyBBIFRlbXBvcmFyeUZpbGUgY2FuIGJlIGNsb3NlZCBtYW55IHRpbWVzIHdpdGhvdXQgZXJyb3IKKyAgICAgICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKKyAgICAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgIyBIb3cgdG8gdGVzdCB0aGUgbW9kZSBhbmQgYnVmc2l6ZSBwYXJhbWV0ZXJzPworICAgICAgICBkZWYgdGVzdF9tb2RlX2FuZF9lbmNvZGluZyhzZWxmKToKKworICAgICAgICAgICAgZGVmIHJvdW5kdHJpcChpbnB1dCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKmFyZ3MsICoqa3dhcmdzKSBhcyBmaWxlb2JqOgorICAgICAgICAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKGlucHV0KQorICAgICAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnB1dCwgZmlsZW9iai5yZWFkKCkpCisKKyAgICAgICAgICAgIHJvdW5kdHJpcChiIjEyMzQiLCAidytiIikKKyAgICAgICAgICAgIHJvdW5kdHJpcCgiYWJkY1xuIiwgIncrIikKKyAgICAgICAgICAgIHJvdW5kdHJpcCgiXHUwMzlCIiwgIncrIiwgZW5jb2Rpbmc9InV0Zi0xNiIpCisgICAgICAgICAgICByb3VuZHRyaXAoImZvb1xyXG4iLCAidysiLCBuZXdsaW5lPSIiKQogCiAKICMgSGVscGVyIGZvciB0ZXN0X2RlbF9vbl9zaHV0ZG93bgpAQCAtOTU2LDE2ICs5MDMsMTMgQEAKICAgICAgICAgICAgIGQuY2xlYXIoKQogICAgICAgICAgICAgZC51cGRhdGUoYykKIAotY2xhc3MgdGVzdF9UZW1wb3JhcnlEaXJlY3RvcnkoVEMpOgorY2xhc3MgVGVzdFRlbXBvcmFyeURpcmVjdG9yeShCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgVGVtcG9yYXJ5RGlyZWN0b3J5KCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIiwgcmVjdXJzZT0xKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdG1wID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJUZW1wb3JhcnlEaXJlY3RvcnkiKQorICAgICAgICB0bXAgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKICAgICAgICAgc2VsZi5uYW1lQ2hlY2sodG1wLm5hbWUsIGRpciwgcHJlLCBzdWYpCiAgICAgICAgICMgQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCBzb21lIGZpbGVzCiAgICAgICAgIGlmIHJlY3Vyc2U6CkBAIC0xMDg5LDExICsxMDMzLDggQEAKICAgICAgICAgIyBDYW4gYmUgY2xlYW5lZC11cCBtYW55IHRpbWVzIHdpdGhvdXQgZXJyb3IKICAgICAgICAgZCA9IHNlbGYuZG9fY3JlYXRlKCkKICAgICAgICAgZC5jbGVhbnVwKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZC5jbGVhbnVwKCkKLSAgICAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbGVhbnVwIikKKyAgICAgICAgZC5jbGVhbnVwKCkKKyAgICAgICAgZC5jbGVhbnVwKCkKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKICAgICAgICAgIyBDYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlcgpAQCAtMTEwNCwxMCArMTA0NSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZSkpCiAKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X1RlbXBvcmFyeURpcmVjdG9yeSkKLQogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkgYi9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CmluZGV4IDM5MDExMjAuLmM4NmY1Y2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQpAQCAtMTEsNyArMTEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotZnJvbSB0ZXh0d3JhcCBpbXBvcnQgVGV4dFdyYXBwZXIsIHdyYXAsIGZpbGwsIGRlZGVudAorZnJvbSB0ZXh0d3JhcCBpbXBvcnQgVGV4dFdyYXBwZXIsIHdyYXAsIGZpbGwsIGRlZGVudCwgaW5kZW50CiAKIAogY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEwMCw2ICsxMDAsMTQgQEAKICAgICAgICAgcmVzdWx0ID0gd3JhcHBlci5maWxsKHRleHQpCiAgICAgICAgIHNlbGYuY2hlY2socmVzdWx0LCAnXG4nLmpvaW4oZXhwZWN0KSkKIAorICAgICAgICB0ZXh0ID0gIlx0VGVzdFx0ZGVmYXVsdFx0XHR0YWJzaXplLiIKKyAgICAgICAgZXhwZWN0ID0gWyIgICAgICAgIFRlc3QgICAgZGVmYXVsdCAgICAgICAgIHRhYnNpemUuIl0KKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDgwLCBleHBlY3QpCisKKyAgICAgICAgdGV4dCA9ICJcdFRlc3RcdGN1c3RvbVx0XHR0YWJzaXplLiIKKyAgICAgICAgZXhwZWN0ID0gWyIgICAgVGVzdCAgICBjdXN0b20gICAgICB0YWJzaXplLiJdCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA4MCwgZXhwZWN0LCB0YWJzaXplPTQpCisKICAgICBkZWYgdGVzdF9maXhfc2VudGVuY2VfZW5kaW5ncyhzZWxmKToKICAgICAgICAgd3JhcHBlciA9IFRleHRXcmFwcGVyKDYwLCBmaXhfc2VudGVuY2VfZW5kaW5ncz1UcnVlKQogCkBAIC02MzQsMTEgKzY0MiwxNDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIGRlZGVudCh0ZXh0KSkKIAogCisjIFRlc3QgdGV4dHdyYXAuaW5kZW50CitjbGFzcyBJbmRlbnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUaGUgZXhhbXBsZXMgdXNlZCBmb3IgdGVzdHMuIElmIGFueSBvZiB0aGVzZSBjaGFuZ2UsIHRoZSBleHBlY3RlZAorICAgICMgcmVzdWx0cyBpbiB0aGUgdmFyaW91cyB0ZXN0IGNhc2VzIG11c3QgYWxzbyBiZSB1cGRhdGVkLgorICAgICMgVGhlIHJvdW5kdHJpcCBjYXNlcyBhcmUgc2VwYXJhdGUsIGJlY2F1c2UgdGV4dHdyYXAuZGVkZW50IGRvZXNuJ3QKKyAgICAjIGhhbmRsZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgIFJPVU5EVFJJUF9DQVNFUyA9ICgKKyAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuIiwKKyAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICJIaS5cblRoaXMgaXMgYSB0ZXN0LlxuXG5UZXN0aW5nLiIsCisgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICJcbkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5UZXN0aW5nLlxuIiwKKyAgICApCisgICAgQ0FTRVMgPSBST1VORFRSSVBfQ0FTRVMgKyAoCisgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgIkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cclxuVGVzdGluZy5cclxuIiwKKyAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICJcbkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cblxyXG5UZXN0aW5nLlxyXG5cbiIsCisgICAgKQorCisgICAgZGVmIHRlc3RfaW5kZW50X25vbWFyZ2luX2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgaW5kZW50IHNob3VsZCBkbyBub3RoaW5nIGlmICdwcmVmaXgnIGlzIGVtcHR5LgorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLkNBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgJycpLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X25vbWFyZ2luX2V4cGxpY2l0X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgVGhlIHNhbWUgYXMgdGVzdF9pbmRlbnRfbm9tYXJnaW4sIGJ1dCBleHBsaWNpdGx5IHJlcXVlc3RpbmcKKyAgICAgICAgIyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgYnkgcGFzc2luZyBOb25lIGFzIHRoZSBwcmVkaWNhdGUKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcnLCBOb25lKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9hbGxfbGluZXMoc2VsZik6CisgICAgICAgICMgVGhlIHNhbWUgYXMgdGVzdF9pbmRlbnRfbm9tYXJnaW4sIGJ1dCB1c2luZyB0aGUgb3B0aW9uYWwKKyAgICAgICAgIyBwcmVkaWNhdGUgYXJndW1lbnQKKyAgICAgICAgcHJlZGljYXRlID0gbGFtYmRhIGxpbmU6IFRydWUKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcnLCBwcmVkaWNhdGUpLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X25vX2xpbmVzKHNlbGYpOgorICAgICAgICAjIEV4cGxpY2l0bHkgc2tpcCBpbmRlbnRpbmcgYW55IGxpbmVzCisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBGYWxzZQorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLkNBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgJyAgICAnLCBwcmVkaWNhdGUpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX3NwYWNlcyhzZWxmKToKKyAgICAgICAgIyBBIHdoaXRlc3BhY2UgcHJlZml4IHNob3VsZCByb3VuZHRyaXAgd2l0aCBkZWRlbnQKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5ST1VORFRSSVBfQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZGVudChpbmRlbnQodGV4dCwgJyAgICAnKSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfdGFicyhzZWxmKToKKyAgICAgICAgIyBBIHdoaXRlc3BhY2UgcHJlZml4IHNob3VsZCByb3VuZHRyaXAgd2l0aCBkZWRlbnQKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5ST1VORFRSSVBfQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZGVudChpbmRlbnQodGV4dCwgJ1x0XHQnKSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfbWl4ZWQoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICcgXHQgIFx0ICcpKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIFRlc3QgZGVmYXVsdCBpbmRlbnRpbmcgb2YgbGluZXMgdGhhdCBhcmUgbm90IHdoaXRlc3BhY2Ugb25seQorICAgICAgICBwcmVmaXggPSAnICAnCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cblxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAgICAgIlxuICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXHJcbiAgVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIlxuICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cblxyXG4gIFRlc3RpbmcuXHJcblxuIiwKKyAgICAgICAgKQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZXhwbGljaXRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHQgaW5kZW50aW5nIG9mIGxpbmVzIHRoYXQgYXJlIG5vdCB3aGl0ZXNwYWNlIG9ubHkKKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICJcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICJcbiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXG5cclxuICBUZXN0aW5nLlxyXG5cbiIsCisgICAgICAgICkKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4LCBOb25lKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X2FsbF9saW5lcyhzZWxmKToKKyAgICAgICAgIyBBZGQgJ3ByZWZpeCcgdG8gYWxsIGxpbmVzLCBpbmNsdWRpbmcgd2hpdGVzcGFjZS1vbmx5IG9uZXMuCisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBcbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICIgIFxuICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXHJcbiAgVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIiAgXG4gIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBcclxuICBUZXN0aW5nLlxyXG4gIFxuIiwKKyAgICAgICAgKQorICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogVHJ1ZQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9lbXB0eV9saW5lcyhzZWxmKToKKyAgICAgICAgIyBBZGQgJ3ByZWZpeCcgc29sZWx5IHRvIHdoaXRlc3BhY2Utb25seSBsaW5lcy4KKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICJIaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cbiAgXG5UZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAgICAgIiAgXG5IaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy5cbiIsCisgICAgICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAiSGkuXHJcblRoaXMgaXMgYSB0ZXN0LlxyXG5UZXN0aW5nLlxyXG4iLAorICAgICAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICAgICAiICBcbkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cbiAgXHJcblRlc3RpbmcuXHJcbiAgXG4iLAorICAgICAgICApCisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBub3QgbGluZS5zdHJpcCgpCisgICAgICAgIGZvciB0ZXh0LCBleHBlY3QgaW4gemlwKHNlbGYuQ0FTRVMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlKSwgZXhwZWN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChXcmFwVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb25nV29yZFRlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZW50VGVzdENhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVkZW50VGVzdENhc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWRlbnRUZXN0Q2FzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGVudFRlc3RDYXNlKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CmluZGV4IDc3OTE5MzUuLjA1MjhiMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CkBAIC0xMSw4ICsxMSw4IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaW1wb3J0X21vZHVsZSwgcnVuX3VuaXR0ZXN0LCBURVNURk4KLXRocmVhZCA9IGltcG9ydF9tb2R1bGUoJ190aHJlYWQnKQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKKyAgICB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgcmVhcF90aHJlYWRzLCBmb3JnZXQsIHVubGluaykKIHRocmVhZGluZyA9IGltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCiAKIGRlZiB0YXNrKE4sIGRvbmUsIGRvbmVfdGFza3MsIGVycm9ycyk6CkBAIC0zMCw3ICszMCw3IEBACiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICBlcnJvcnMuYXBwZW5kKGUud2l0aF90cmFjZWJhY2soTm9uZSkpCiAgICAgZmluYWxseToKLSAgICAgICAgZG9uZV90YXNrcy5hcHBlbmQodGhyZWFkLmdldF9pZGVudCgpKQorICAgICAgICBkb25lX3Rhc2tzLmFwcGVuZCh0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAgICAgICAgIGZpbmlzaGVkID0gbGVuKGRvbmVfdGFza3MpID09IE4KICAgICAgICAgaWYgZmluaXNoZWQ6CiAgICAgICAgICAgICBkb25lLnNldCgpCkBAIC02Miw3ICs2Miw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLm51bWNhbGxzID0gMAogICAgICAgICBzZWxmLnggPSAwCi0gICAgICAgIHNlbGYubG9jayA9IHRocmVhZC5hbGxvY2F0ZV9sb2NrKCkKKyAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICMgU2ltdWxhdGUgc29tZSB0aHJlYWQtdW5zYWZlIGJlaGF2aW91ci4gSWYgY2FsbHMgdG8gZmluZF9tb2R1bGUoKQpAQCAtMTEzLDcgKzExMyw5IEBACiAgICAgICAgICAgICBkb25lX3Rhc2tzID0gW10KICAgICAgICAgICAgIGRvbmUuY2xlYXIoKQogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTik6Ci0gICAgICAgICAgICAgICAgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQodGFzaywgKE4sIGRvbmUsIGRvbmVfdGFza3MsIGVycm9ycywpKQorICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD10YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KE4sIGRvbmUsIGRvbmVfdGFza3MsIGVycm9ycywpKQorICAgICAgICAgICAgICAgIHQuc3RhcnQoKQogICAgICAgICAgICAgZG9uZS53YWl0KDYwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnJvcnMpCiAgICAgICAgICAgICBpZiB2ZXJib3NlOgpAQCAtMTI0LDcgKzEyNiw3IEBACiAKICAgICBkZWYgdGVzdF9wYXJhbGxlbF9tZXRhX3BhdGgoc2VsZik6CiAgICAgICAgIGZpbmRlciA9IEZpbmRlcigpCi0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGZpbmRlcikKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5pbnNlcnQoMCwgZmluZGVyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3BhcmFsbGVsX21vZHVsZV9pbml0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihmaW5kZXIubnVtY2FsbHMsIDApCkBAIC0xNDMsNyArMTQ1LDcgQEAKICAgICAgICAgZGVmIHBhdGhfaG9vayhwYXRoKToKICAgICAgICAgICAgIGZpbmRlci5maW5kX21vZHVsZSgnJykKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChwYXRoX2hvb2spCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBwYXRoX2hvb2spCiAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGZsdXNoaW5nX2ZpbmRlcikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBGbHVzaCB0aGUgY2FjaGUgYSBmaXJzdCB0aW1lCkBAIC0xODUsNyArMTg3LDcgQEAKICAgICAgICAgICAgIGNvbnRlbnRzID0gY29udGVudHMgJSB7J2RlbGF5JzogZGVsYXl9CiAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFU1RGTiwgbmFtZSArICIucHkiKSwgIndiIikgYXMgZjoKICAgICAgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzLmVuY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMubW9kdWxlcy5wb3AsIG5hbWUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoZm9yZ2V0LCBuYW1lKQogCiAgICAgICAgIHJlc3VsdHMgPSBbXQogICAgICAgICBkZWYgaW1wb3J0X2FiKCk6CkBAIC0yMDIsOSArMjA0LDM3IEBACiAgICAgICAgIHQyLmpvaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChyZXN1bHRzKSwgeydhJywgJ2InfSkKIAorICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X2ltcG9ydChzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICBkZWYgdGFyZ2V0KCk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHJhbmRvbQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXRhcmdldCkKKyAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgdC5qb2luKCkiIiIKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5wYXRoLnJlbW92ZSwgb3MuY3VyZGlyKQorICAgICAgICBmaWxlbmFtZSA9IFRFU1RGTiArICIucHkiCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY29kZS5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoZm9yZ2V0LCBURVNURk4pCisgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogCisKK0ByZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGhyZWFkZWRJbXBvcnRUZXN0cykKKyAgICBvbGRfc3dpdGNoaW50ZXJ2YWwgPSBOb25lCisgICAgdHJ5OgorICAgICAgICBvbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQorICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMWUtNSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICAgIHJ1bl91bml0dGVzdChUaHJlYWRlZEltcG9ydFRlc3RzKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIG9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChvbGRfc3dpdGNoaW50ZXJ2YWwpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKaW5kZXggMTdiZTg0Yi4uYmI4ZDliNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICAgICBleGNlcHRpb24gPSBjdHlwZXMucHlfb2JqZWN0KEFzeW5jRXhjKQogCiAgICAgICAgICMgRmlyc3QgY2hlY2sgaXQgd29ya3Mgd2hlbiBzZXR0aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgc2FtZSB0aHJlYWQuCi0gICAgICAgIHRpZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0ID0gc2V0X2FzeW5jX2V4YyhjdHlwZXMuY19sb25nKHRpZCksIGV4Y2VwdGlvbikKQEAgLTIwNCw3ICsyMDQsNyBAQAogCiAgICAgICAgIGNsYXNzIFdvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5pZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAgICAgICAgICAgICAgICAgc2VsZi5maW5pc2hlZCA9IEZhbHNlCiAKICAgICAgICAgICAgICAgICB0cnk6CkBAIC00MDksNiArNDA5LDE0IEBACiAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2RhZW1vbicgaW4gcmVwcih0KSkKIAorICAgIGRlZiB0ZXN0X2RlYW1vbl9wYXJhbShzZWxmKToKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQuZGFlbW9uKQorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChkYWVtb249RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5kYWVtb24pCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKGRhZW1vbj1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodC5kYWVtb24pCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZm9yaycpLCAndGVzdCBuZWVkcyBmb3JrKCknKQogICAgIGRlZiB0ZXN0X2R1bW15X3RocmVhZF9hZnRlcl9mb3JrKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNDMwODogYSBkdW1teSB0aHJlYWQgaW4gdGhlIGFjdGl2ZSBsaXN0IGRvZXNuJ3QgbWVzcyB1cApAQCAtNzQyLDYgKzc1MCwxMCBAQAogICAgICAgICB0aHJlYWQuc3RhcnQoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNldGF0dHIsIHRocmVhZCwgImRhZW1vbiIsIFRydWUpCiAKKyAgICBkZWYgdGVzdF9yZWxlYXNpbmdfdW5hY3F1aXJlZF9sb2NrKHNlbGYpOgorICAgICAgICBsb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2sucmVsZWFzZSkKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ3Rlc3QgbWFjb3N4IHByb2JsZW0nKQogICAgIGRlZiB0ZXN0X3JlY3Vyc2lvbl9saW1pdChzZWxmKToKICAgICAgICAgIyBJc3N1ZSA5NjcwCkBAIC04MDMsNiArODE1LDcgQEAKIGNsYXNzIEJhcnJpZXJUZXN0cyhsb2NrX3Rlc3RzLkJhcnJpZXJUZXN0cyk6CiAgICAgYmFycmllcnR5cGUgPSBzdGF0aWNtZXRob2QodGhyZWFkaW5nLkJhcnJpZXIpCiAKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoTG9ja1Rlc3RzLCBQeVJMb2NrVGVzdHMsIENSTG9ja1Rlc3RzLCBFdmVudFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uQXNSTG9ja1Rlc3RzLCBDb25kaXRpb25UZXN0cywKQEAgLTgxMCw3ICs4MjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRKb2luT25TaHV0ZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ0V4Y2VwdGlvblRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFycmllclRlc3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJyaWVyVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKaW5kZXggZTBhZjMxZC4uZjk3NWE3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQpAQCAtMTQsMTAgKzE0LDggQEAKIHByb2Nlc3NfcGlkID0gb3MuZ2V0cGlkKCkKIHNpZ25hbGxlZF9hbGw9dGhyZWFkLmFsbG9jYXRlX2xvY2soKQogCi0jIElzc3VlICMxMTIyMzogTG9ja3MgYXJlIGltcGxlbWVudGVkIHVzaW5nIGEgbXV0ZXggYW5kIGEgY29uZGl0aW9uIHZhcmlhYmxlIG9mCi0jIHRoZSBwdGhyZWFkIGxpYnJhcnkgb24gRnJlZUJTRDYuIFBPU0lYIGNvbmRpdGlvbiB2YXJpYWJsZXMgY2Fubm90IGJlCi0jIGludGVycnVwdGVkIGJ5IHNpZ25hbHMgKHNlZSBwdGhyZWFkX2NvbmRfd2FpdCBtYW51YWwgcGFnZSkuCi1VU0lOR19QVEhSRUFEX0NPTkQgPSAoc3lzLnBsYXRmb3JtID09ICdmcmVlYnNkNicpCitVU0lOR19QVEhSRUFEX0NPTkQgPSAoc3lzLnRocmVhZF9pbmZvLm5hbWUgPT0gJ3B0aHJlYWQnCisgICAgICAgICAgICAgICAgICAgICAgYW5kIHN5cy50aHJlYWRfaW5mby5sb2NrID09ICdtdXRleCtjb25kJykKIAogZGVmIHJlZ2lzdGVyU2lnbmFscyhmb3JfdXNyMSwgZm9yX3VzcjIsIGZvcl9hbHJtKToKICAgICB1c3IxID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgZm9yX3VzcjEpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKaW5kZXggY2U1N2Q4Ny4uNjNlMTQ1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQpAQCAtNCw3ICs0LDE3IEBACiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBwbGF0Zm9ybQordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKKyMgTWF4IHllYXIgaXMgb25seSBsaW1pdGVkIGJ5IHRoZSBzaXplIG9mIEMgaW50LgorU0laRU9GX0lOVCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX0lOVCcpIG9yIDQKK1RJTUVfTUFYWUVBUiA9ICgxIDw8IDggKiBTSVpFT0ZfSU5UIC0gMSkgLSAxCitUSU1FX01JTllFQVIgPSAtVElNRV9NQVhZRUFSIC0gMQorCiAKIGNsYXNzIFRpbWVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE3LDkgKzI3LDUzIEBACiAgICAgICAgIHRpbWUudGltZXpvbmUKICAgICAgICAgdGltZS50em5hbWUKIAorICAgIGRlZiB0ZXN0X3RpbWUoc2VsZik6CisgICAgICAgIHRpbWUudGltZSgpCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCd0aW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8uYWRqdXN0YWJsZSkKKwogICAgIGRlZiB0ZXN0X2Nsb2NrKHNlbGYpOgogICAgICAgICB0aW1lLmNsb2NrKCkKIAorICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygnY2xvY2snKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5hZGp1c3RhYmxlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfZ2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfZ2V0dGltZSgpJykKKyAgICBkZWYgdGVzdF9jbG9ja19yZWFsdGltZShzZWxmKToKKyAgICAgICAgdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19nZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19nZXR0aW1lKCknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ0NMT0NLX01PTk9UT05JQycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuQ0xPQ0tfTU9OT1RPTklDJykKKyAgICBkZWYgdGVzdF9jbG9ja19tb25vdG9uaWMoc2VsZik6CisgICAgICAgIGEgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19NT05PVE9OSUMpCisgICAgICAgIGIgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19NT05PVE9OSUMpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGEsIGIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19nZXRyZXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX2dldHJlcygpJykKKyAgICBkZWYgdGVzdF9jbG9ja19nZXRyZXMoc2VsZik6CisgICAgICAgIHJlcyA9IHRpbWUuY2xvY2tfZ2V0cmVzKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihyZXMsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwocmVzLCAxLjApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19zZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19zZXR0aW1lKCknKQorICAgIGRlZiB0ZXN0X2Nsb2NrX3NldHRpbWUoc2VsZik6CisgICAgICAgIHQgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUsIHQpCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgaGFzYXR0cih0aW1lLCAnQ0xPQ0tfTU9OT1RPTklDJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lLCB0aW1lLkNMT0NLX01PTk9UT05JQywgMCkKKwogICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuY3RpbWUoc2VsZi50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLmFzY3RpbWUodGltZS5sb2NhbHRpbWUoc2VsZi50KSkpCkBAIC0yNyw2ICs4MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYudCkpCiAKICAgICBkZWYgdGVzdF9zbGVlcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdGltZS5zbGVlcCwgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRpbWUuc2xlZXAsIC0xKQogICAgICAgICB0aW1lLnNsZWVwKDEuMikKIAogICAgIGRlZiB0ZXN0X3N0cmZ0aW1lKHNlbGYpOgpAQCAtNDcsMjggKzEwMywzNCBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclZicpCiAKLSAgICBkZWYgX2JvdW5kc19jaGVja2luZyhzZWxmLCBmdW5jPXRpbWUuc3RyZnRpbWUpOgorICAgIGRlZiBfYm91bmRzX2NoZWNraW5nKHNlbGYsIGZ1bmMpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHN0cmZ0aW1lKCkgY2hlY2tzIHRoZSBib3VuZHMgb2YgdGhlIHZhcmlvdXMgcGFydHMKLSAgICAgICAgI29mIHRoZSB0aW1lIHR1cGxlICgwIGlzIHZhbGlkIGZvciAqYWxsKiB2YWx1ZXMpLgorICAgICAgICAjIG9mIHRoZSB0aW1lIHR1cGxlICgwIGlzIHZhbGlkIGZvciAqYWxsKiB2YWx1ZXMpLgogCiAgICAgICAgICMgVGhlIHllYXIgZmllbGQgaXMgdGVzdGVkIGJ5IG90aGVyIHRlc3QgY2FzZXMgYWJvdmUKIAogICAgICAgICAjIENoZWNrIG1vbnRoIFsxLCAxMl0gKyB6ZXJvIHN1cHBvcnQKKyAgICAgICAgZnVuYygoMTkwMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxMiwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAtMSwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxMywgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIGRheSBvZiBtb250aCBbMSwgMzFdICsgemVybyBzdXBwb3J0CisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMzEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgLTEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMzIsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBob3VyIFswLCAyM10KKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMjMsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgLTEsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMjQsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBtaW51dGUgWzAsIDU5XQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCA1OSwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAtMSwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLApAQCAtNzgsMTUgKzE0MCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAtMSwgMCwgMSwgLTEpKQogICAgICAgICAjIEM5OSBvbmx5IHJlcXVpcmVzIGFsbG93aW5nIGZvciBvbmUgbGVhcCBzZWNvbmQsIGJ1dCBQeXRob24ncyBkb2NzIHNheQogICAgICAgICAjIGFsbG93IHR3byBsZWFwIHNlY29uZHMgKDAuLjYxKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCA2MCwgMCwgMSwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCA2MSwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCA2MiwgMCwgMSwgLTEpKQogICAgICAgICAjIE5vIGNoZWNrIGZvciB1cHBlci1ib3VuZCBkYXkgb2Ygd2VlazsKICAgICAgICAgIyAgdmFsdWUgZm9yY2VkIGludG8gcmFuZ2UgYnkgYSBgYCUgN2BgIGNhbGN1bGF0aW9uLgogICAgICAgICAjIFN0YXJ0IGNoZWNrIGF0IC0yIHNpbmNlIGdldHRtYXJnKCkgaW5jcmVtZW50cyB2YWx1ZSBiZWZvcmUgdGFraW5nCiAgICAgICAgICMgIG1vZHVsby4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCAtMSwgMSwgLTEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCArNiwgMSwgLTEpKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgMCwgLTIsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBkYXkgb2YgdGhlIHllYXIgWzEsIDM2Nl0gKyB6ZXJvIHN1cHBvcnQKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAzNjYsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgMCwgMCwgLTEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKQEAgLTk2LDEyICsxNjQsMTMgQEAKICAgICAgICAgc2VsZi5fYm91bmRzX2NoZWNraW5nKGxhbWJkYSB0dXA6IHRpbWUuc3RyZnRpbWUoJycsIHR1cCkpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3ZhbHVlc19mb3JfemVybyhzZWxmKToKLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB1c2luZyBhbGwgemVyb3MgdXNlcyB0aGUgcHJvcGVyIGRlZmF1bHQgdmFsdWVzLgotICAgICAgICAjIE5vIHRlc3QgZm9yIGRheWxpZ2h0IHNhdmluZ3Mgc2luY2Ugc3RyZnRpbWUoKSBkb2VzIG5vdCBjaGFuZ2Ugb3V0cHV0Ci0gICAgICAgICMgYmFzZWQgb24gaXRzIHZhbHVlLgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHVzaW5nIGFsbCB6ZXJvcyB1c2VzIHRoZSBwcm9wZXIgZGVmYXVsdAorICAgICAgICAjIHZhbHVlcy4gIE5vIHRlc3QgZm9yIGRheWxpZ2h0IHNhdmluZ3Mgc2luY2Ugc3RyZnRpbWUoKSBkb2VzCisgICAgICAgICMgbm90IGNoYW5nZSBvdXRwdXQgYmFzZWQgb24gaXRzIHZhbHVlIGFuZCBubyB0ZXN0IGZvciB5ZWFyCisgICAgICAgICMgYmVjYXVzZSBzeXN0ZW1zIHZhcnkgaW4gdGhlaXIgc3VwcG9ydCBmb3IgeWVhciAwLgogICAgICAgICBleHBlY3RlZCA9ICIyMDAwIDAxIDAxIDAwIDAwIDAwIDEgMDAxIgogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHRpbWUuc3RyZnRpbWUoIiVZICVtICVkICVIICVNICVTICV3ICVqIiwgKDAsKSo5KQorICAgICAgICAgICAgcmVzdWx0ID0gdGltZS5zdHJmdGltZSgiJVkgJW0gJWQgJUggJU0gJVMgJXcgJWoiLCAoMjAwMCwpKygwLCkqOCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVzdWx0KQogCiAgICAgZGVmIHRlc3Rfc3RycHRpbWUoc2VsZik6CkBAIC0xMjgsMTEgKzE5NywxMyBAQAogICAgICAgICB0aW1lLmFzY3RpbWUodGltZS5nbXRpbWUoc2VsZi50KSkKIAogICAgICAgICAjIE1heCB5ZWFyIGlzIG9ubHkgbGltaXRlZCBieSB0aGUgc2l6ZSBvZiBDIGludC4KLSAgICAgICAgc2l6ZW9mX2ludCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX0lOVCcpIG9yIDQKLSAgICAgICAgYmlneWVhciA9ICgxIDw8IDggKiBzaXplb2ZfaW50IC0gMSkgLSAxCi0gICAgICAgIGFzYyA9IHRpbWUuYXNjdGltZSgoYmlneWVhciwgNiwgMSkgKyAoMCwpKjYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNjWy1sZW4oc3RyKGJpZ3llYXIpKTpdLCBzdHIoYmlneWVhcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRpbWUuYXNjdGltZSwgKGJpZ3llYXIgKyAxLCkgKyAoMCwpKjgpCisgICAgICAgIGZvciBiaWd5ZWFyIGluIFRJTUVfTUFYWUVBUiwgVElNRV9NSU5ZRUFSOgorICAgICAgICAgICAgYXNjID0gdGltZS5hc2N0aW1lKChiaWd5ZWFyLCA2LCAxKSArICgwLCkgKiA2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc2NbLWxlbihzdHIoYmlneWVhcikpOl0sIHN0cihiaWd5ZWFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGltZS5hc2N0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoVElNRV9NQVhZRUFSICsgMSwpICsgKDAsKSAqIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRpbWUuYXNjdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKFRJTUVfTUlOWUVBUiAtIDEsKSArICgwLCkgKiA4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRpbWUuYXNjdGltZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsICgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRpbWUuYXNjdGltZSwgKDAsKSAqIDEwKQpAQCAtMTU1LDggKzIyNiw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5jdGltZSh0ZXN0dmFsKVsyMDpdLCBzdHIoeWVhcikpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKHRpbWUsICJ0enNldCIpLAotICAgICAgICAidGltZSBtb2R1bGUgaGFzIG5vIGF0dHJpYnV0ZSB0enNldCIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAidHpzZXQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSBtb2R1bGUgaGFzIG5vIGF0dHJpYnV0ZSB0enNldCIpCiAgICAgZGVmIHRlc3RfdHpzZXQoc2VsZik6CiAKICAgICAgICAgZnJvbSBvcyBpbXBvcnQgZW52aXJvbgpAQCAtMjA4LDExICsyNzksMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGltZS5nbXRpbWUoeG1hczIwMDIpLCB0aW1lLmxvY2FsdGltZSh4bWFzMjAwMikpCiAKICAgICAgICAgICAgICMgSXNzdWUgIzExODg2OiBBdXN0cmFsaWFuIEVhc3Rlcm4gU3RhbmRhcmQgVGltZSAoVVRDKzEwKSBpcyBjYWxsZWQKLSAgICAgICAgICAgICMgIkVTVCIgKGFzIEVhc3Rlcm4gU3RhbmRhcmQgVGltZSwgVVRDLTUpIGluc3RlYWQgb2YgIkFFU1QiIG9uIHNvbWUKLSAgICAgICAgICAgICMgb3BlcmF0aW5nIHN5c3RlbXMgKGUuZy4gRnJlZUJTRCksIHdoaWNoIGlzIHdyb25nLiBTZWUgZm9yIGV4YW1wbGUKLSAgICAgICAgICAgICMgdGhpcyBidWc6IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz05MzgxMAorICAgICAgICAgICAgIyAiRVNUIiAoYXMgRWFzdGVybiBTdGFuZGFyZCBUaW1lLCBVVEMtNSkgaW5zdGVhZCBvZiAiQUVTVCIKKyAgICAgICAgICAgICMgKG5vbi1EU1QgdGltZXpvbmUpLCBhbmQgIkVEVCIgaW5zdGVhZCBvZiAiQUVEVCIgKERTVCB0aW1lem9uZSksCisgICAgICAgICAgICAjIG9uIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgKGUuZy4gRnJlZUJTRCksIHdoaWNoIGlzIHdyb25nLiBTZWUgZm9yCisgICAgICAgICAgICAjIGV4YW1wbGUgdGhpcyBidWc6CisgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz05MzgxMAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbih0aW1lLnR6bmFtZVswXSwgKCdBRVNUJyAnRVNUJyksIHRpbWUudHpuYW1lWzBdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWUudHpuYW1lWzFdID09ICdBRURUJywgc3RyKHRpbWUudHpuYW1lWzFdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lLnR6bmFtZVsxXSBpbiAoJ0FFRFQnLCAnRURUJyksIHN0cih0aW1lLnR6bmFtZVsxXSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0aW1lLnR6bmFtZSksIDIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuZGF5bGlnaHQsIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUudGltZXpvbmUsIC0zNjAwMCkKQEAgLTIzNSw3ICszMDgsNyBAQAogICAgICAgICAjIHJlc3VsdHMhKS4KICAgICAgICAgZm9yIGZ1bmMgaW4gdGltZS5jdGltZSwgdGltZS5nbXRpbWUsIHRpbWUubG9jYWx0aW1lOgogICAgICAgICAgICAgZm9yIHVucmVhc29uYWJsZSBpbiAtMWUyMDAsIDFlMjAwOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsIHVucmVhc29uYWJsZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBmdW5jLCB1bnJlYXNvbmFibGUpCiAKICAgICBkZWYgdGVzdF9jdGltZV93aXRob3V0X2FyZyhzZWxmKToKICAgICAgICAgIyBOb3Qgc3VyZSBob3cgdG8gY2hlY2sgdGhlIHZhbHVlcywgc2luY2UgdGhlIGNsb2NrIGNvdWxkIHRpY2sKQEAgLTI1OCw2ICszMzEsMTE3IEBACiAgICAgICAgIHQxID0gdGltZS5ta3RpbWUobHQxKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHQxLCB0MCwgZGVsdGE9MC4yKQogCisgICAgZGVmIHRlc3RfbWt0aW1lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNzI2Njg3CisgICAgICAgIGZvciB0IGluICgtMiwgLTEsIDAsIDEpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHR0ID0gdGltZS5sb2NhbHRpbWUodCkKKyAgICAgICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUubWt0aW1lKHR0KSwgdCkKKworICAgICMgSXNzdWUgIzEzMzA5OiBwYXNzaW5nIGV4dHJlbWUgdmFsdWVzIHRvIG1rdGltZSgpIG9yIGxvY2FsdGltZSgpCisgICAgIyBib3JrcyB0aGUgZ2xpYmMncyBpbnRlcm5hbCB0aW1lem9uZSBkYXRhLgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHBsYXRmb3JtLmxpYmNfdmVyKClbMF0gIT0gJ2dsaWJjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzYWJsZWQgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBnbGliYy4gSXNzdWUgIzEzMzA5IikKKyAgICBkZWYgdGVzdF9ta3RpbWVfZXJyb3Ioc2VsZik6CisgICAgICAgICMgSXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byByZWxpYWJseSBtYWtlIG1rdGltZSByZXR1cm4gZXJyb3IKKyAgICAgICAgIyBvbiBhbGwgcGxhdGZvbS4gIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhhdCBubyBvdGhlciBleGNlcHRpb24KKyAgICAgICAgIyB0aGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGZvciBhbiBleHRyZW1lIHZhbHVlLgorICAgICAgICB0dCA9IHRpbWUuZ210aW1lKHNlbGYudCkKKyAgICAgICAgdHpuYW1lID0gdGltZS5zdHJmdGltZSgnJVonLCB0dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0em5hbWUsICdMTVQnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLm1rdGltZSgoLTEsIDEsIDEsIDAsIDAsIDAsIC0xLCAtMSwgLTEpKQorICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLnN0cmZ0aW1lKCclWicsIHR0KSwgdHpuYW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnbW9ub3RvbmljJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5tb25vdG9uaWMnKQorICAgIGRlZiB0ZXN0X21vbm90b25pYyhzZWxmKToKKyAgICAgICAgdDEgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorICAgICAgICB0MiA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgZHQgPSB0MiAtIHQxCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0MiwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZHQsIDAuMSwgZGVsdGE9MC4yKQorCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCdtb25vdG9uaWMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5hZGp1c3RhYmxlKQorCisgICAgZGVmIHRlc3RfcGVyZl9jb3VudGVyKHNlbGYpOgorICAgICAgICB0aW1lLnBlcmZfY291bnRlcigpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX3RpbWUoc2VsZik6CisgICAgICAgICMgcHJvY2Vzc190aW1lKCkgc2hvdWxkIG5vdCBpbmNsdWRlIHRpbWUgc3BlbmQgZHVyaW5nIGEgc2xlZXAKKyAgICAgICAgc3RhcnQgPSB0aW1lLnByb2Nlc3NfdGltZSgpCisgICAgICAgIHRpbWUuc2xlZXAoMC4xMDApCisgICAgICAgIHN0b3AgPSB0aW1lLnByb2Nlc3NfdGltZSgpCisgICAgICAgICMgdXNlIDIwIG1zIGJlY2F1c2UgcHJvY2Vzc190aW1lKCkgaGFzIHVzdWFsbHkgYSByZXNvbHV0aW9uIG9mIDE1IG1zCisgICAgICAgICMgb24gV2luZG93cworICAgICAgICBzZWxmLmFzc2VydExlc3Moc3RvcCAtIHN0YXJ0LCAwLjAyMCkKKworICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygncHJvY2Vzc190aW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8uYWRqdXN0YWJsZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ21vbm90b25pYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUubW9ub3RvbmljJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19zZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19zZXR0aW1lJykKKyAgICBkZWYgdGVzdF9tb25vdG9uaWNfc2V0dGltZShzZWxmKToKKyAgICAgICAgdDEgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHJlYWx0aW1lID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisgICAgICAgICMganVtcCBiYWNrd2FyZCB3aXRoIGFuIG9mZnNldCBvZiAxIGhvdXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUsIHJlYWx0aW1lIC0gMzYwMCkKKyAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvciBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KGVycikKKyAgICAgICAgdDIgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FLCByZWFsdGltZSkKKyAgICAgICAgIyBtb25vdG9uaWMgbXVzdCBub3QgYmUgYWZmZWN0ZWQgYnkgc3lzdGVtIGNsb2NrIHVwZGF0ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodDIsIHQxKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEzODQ3OiBjaGVjayBmb3IgbG9jYWx0aW1lKCkgZmFpbHVyZQorICAgICAgICBpbnZhbGlkX3RpbWVfdCA9IE5vbmUKKyAgICAgICAgZm9yIHRpbWVfdCBpbiAoLTEsIDIqKjMwLCAyKiozMywgMioqNjApOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRpbWUubG9jYWx0aW1lKHRpbWVfdCkKKyAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5lZWQgNjQtYml0IHRpbWVfdCIpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBpbnZhbGlkX3RpbWVfdCA9IHRpbWVfdAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGludmFsaWRfdGltZV90IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ1bmFibGUgdG8gZmluZCBhbiBpbnZhbGlkIHRpbWVfdCB2YWx1ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgdGltZS5sb2NhbHRpbWUsIGludmFsaWRfdGltZV90KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCB0aW1lLmN0aW1lLCBpbnZhbGlkX3RpbWVfdCkKKworICAgIGRlZiB0ZXN0X2dldF9jbG9ja19pbmZvKHNlbGYpOgorICAgICAgICBjbG9ja3MgPSBbJ2Nsb2NrJywgJ3BlcmZfY291bnRlcicsICdwcm9jZXNzX3RpbWUnLCAndGltZSddCisgICAgICAgIGlmIGhhc2F0dHIodGltZSwgJ21vbm90b25pYycpOgorICAgICAgICAgICAgY2xvY2tzLmFwcGVuZCgnbW9ub3RvbmljJykKKworICAgICAgICBmb3IgbmFtZSBpbiBjbG9ja3M6CisgICAgICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbyhuYW1lKQorICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLCBkaWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8uaW1wbGVtZW50YXRpb24sIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5mby5pbXBsZW1lbnRhdGlvbiwgJycpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5tb25vdG9uaWMsIGJvb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5yZXNvbHV0aW9uLCBmbG9hdCkKKyAgICAgICAgICAgICMgMC4wIDwgcmVzb2x1dGlvbiA8PSAxLjAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihpbmZvLnJlc29sdXRpb24sIDAuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGluZm8ucmVzb2x1dGlvbiwgMS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8uYWRqdXN0YWJsZSwgYm9vbCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0aW1lLmdldF9jbG9ja19pbmZvLCAneHh4JykKKworCiBjbGFzcyBUZXN0TG9jYWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYub2xkbG9jID0gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMKQpAQCAtMjc2LDE5ICs0NjAsMTIgQEAKIAogCiBjbGFzcyBfQmFzZVllYXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBhY2NlcHQyZHllYXIgPSBOb25lCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2F2ZWRfYWNjZXB0MmR5ZWFyID0gdGltZS5hY2NlcHQyZHllYXIKLSAgICAgICAgdGltZS5hY2NlcHQyZHllYXIgPSBzZWxmLmFjY2VwdDJkeWVhcgotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICB0aW1lLmFjY2VwdDJkeWVhciA9IHNlbGYuc2F2ZWRfYWNjZXB0MmR5ZWFyCi0KICAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKIGNsYXNzIF9UZXN0QXNjdGltZVllYXI6CisgICAgX2Zvcm1hdCA9ICclZCcKKwogICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgogICAgICAgICByZXR1cm4gdGltZS5hc2N0aW1lKCh5LCkgKyAoMCwpICogOCkuc3BsaXQoKVstMV0KIApAQCAtMjk4LDExNCArNDc1LDIxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NTY3ODkpLCAnMTIzNDU2Nzg5JykKIAogY2xhc3MgX1Rlc3RTdHJmdGltZVllYXI6Ci0gICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6Ci0gICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclWScsICh5LCkgKyAoMCwpICogOCkuc3BsaXQoKVstMV0KIAotICAgIGRlZiB0ZXN0X2xhcmdlX3llYXIoc2VsZik6CisgICAgIyBJc3N1ZSAxMzMwNTogIEZvciB5ZWFycyA8IDEwMDAsIHRoZSB2YWx1ZSBpcyBub3QgYWx3YXlzCisgICAgIyBwYWRkZWQgdG8gNCBkaWdpdHMgYWNyb3NzIHBsYXRmb3Jtcy4gIFRoZSBDIHN0YW5kYXJkCisgICAgIyBhc3N1bWVzIHllYXIgPj0gMTkwMCwgc28gaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgbnVtYmVyCisgICAgIyBvZiBkaWdpdHMuCisKKyAgICBpZiB0aW1lLnN0cmZ0aW1lKCclWScsICgxLCkgKyAoMCwpICogOCkgPT0gJzAwMDEnOgorICAgICAgICBfZm9ybWF0ID0gJyUwNGQnCisgICAgZWxzZToKKyAgICAgICAgX2Zvcm1hdCA9ICclZCcKKworICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgorICAgICAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJVknLCAoeSwpICsgKDAsKSAqIDgpCisKKyAgICBkZWYgdGVzdF80ZHllYXIoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBjYW4gcmV0dXJuIHRoZSB6ZXJvIHBhZGRlZCB2YWx1ZS4KKyAgICAgICAgaWYgc2VsZi5fZm9ybWF0ID09ICclMDRkJzoKKyAgICAgICAgICAgIHNlbGYudGVzdF95ZWFyKCclMDRkJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlZiB5ZWFyNGQoeSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWUuc3RyZnRpbWUoJyU0WScsICh5LCkgKyAoMCwpICogOCkKKyAgICAgICAgICAgIHNlbGYudGVzdF95ZWFyKCclMDRkJywgZnVuYz15ZWFyNGQpCisKKyAgICBkZWYgc2tpcF9pZl9ub3Rfc3VwcG9ydGVkKHkpOgorICAgICAgICBtc2cgPSAic3RyZnRpbWUoKSBpcyBsaW1pdGVkIHRvIFsxOyA5OTk5XSB3aXRoIFZpc3VhbCBTdHVkaW8iCiAgICAgICAgICMgQ2hlY2sgdGhhdCBpdCBkb2Vzbid0IGNyYXNoIGZvciB5ZWFyID4gOTk5OQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXh0ID0gc2VsZi55ZWFyc3RyKDEyMzQ1KQorICAgICAgICAgICAgdGltZS5zdHJmdGltZSgnJVknLCAoeSwpICsgKDAsKSAqIDgpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgIyBzdHJmdGltZSgpIGlzIGxpbWl0ZWQgdG8gWzE7IDk5OTldIHdpdGggVmlzdWFsIFN0dWRpbwotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgJzEyMzQ1JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDU2Nzg5KSwgJzEyMzQ1Njc4OScpCisgICAgICAgICAgICBjb25kID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmQgPSBUcnVlCisgICAgICAgIHJldHVybiB1bml0dGVzdC5za2lwVW5sZXNzKGNvbmQsIG1zZykKIAotY2xhc3MgX1Rlc3QyZFllYXIoX0Jhc2VZZWFyVGVzdCk6Ci0gICAgYWNjZXB0MmR5ZWFyID0gMQorICAgIEBza2lwX2lmX25vdF9zdXBwb3J0ZWQoMTAwMDApCisgICAgZGVmIHRlc3RfbGFyZ2VfeWVhcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkudGVzdF9sYXJnZV95ZWFyKCkKIAotICAgIGRlZiB0ZXN0X3llYXIoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMCksICcyMDAwJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDY5KSwgJzE5NjknKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoNjgpLCAnMjA2OCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig5OSksICcxOTk5JykKKyAgICBAc2tpcF9pZl9ub3Rfc3VwcG9ydGVkKDApCisgICAgZGVmIHRlc3RfbmVnYXRpdmUoc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLnRlc3RfbmVnYXRpdmUoKQogCi0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi55ZWFyc3RyLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi55ZWFyc3RyLCAxMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYueWVhcnN0ciwgOTk5KQorICAgIGRlbCBza2lwX2lmX25vdF9zdXBwb3J0ZWQKKwogCiBjbGFzcyBfVGVzdDRkWWVhcihfQmFzZVllYXJUZXN0KToKLSAgICBhY2NlcHQyZHllYXIgPSAwCisgICAgX2Zvcm1hdCA9ICclZCcKIAotICAgIGRlZiB0ZXN0X3llYXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDEpLCAgICAgKCcxJywgJzAwMDEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoNjgpLCAgICgnNjgnLCAnMDA2OCcpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig2OSksICAgKCc2OScsICcwMDY5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDk5KSwgICAoJzk5JywgJzAwOTknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoOTk5KSwgKCc5OTknLCAnMDk5OScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig5OTk5KSwgJzk5OTknKQorICAgIGRlZiB0ZXN0X3llYXIoc2VsZiwgZm10PU5vbmUsIGZ1bmM9Tm9uZSk6CisgICAgICAgIGZtdCA9IGZtdCBvciBzZWxmLl9mb3JtYXQKKyAgICAgICAgZnVuYyA9IGZ1bmMgb3Igc2VsZi55ZWFyc3RyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYygxKSwgICAgZm10ICUgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDY4KSwgICBmbXQgJSA2OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDY5KSwgICBmbXQgJSA2OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDk5KSwgICBmbXQgJSA5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDk5OSksICBmbXQgJSA5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg5OTk5KSwgZm10ICUgOTk5OSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX3llYXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1KSwgJzEyMzQ1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDU2Nzg5KSwgJzEyMzQ1Njc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKFRJTUVfTUFYWUVBUiksIHN0cihUSU1FX01BWFlFQVIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnllYXJzdHIsIFRJTUVfTUFYWUVBUiArIDEpCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGV4dCA9IHNlbGYueWVhcnN0cigtMSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAjIHN0cmZ0aW1lKCkgaXMgbGltaXRlZCB0byBbMTsgOTk5OV0gd2l0aCBWaXN1YWwgU3R1ZGlvCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCAoJy0xJywgJy0wMDEnKSkKLQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMSksIHNlbGYuX2Zvcm1hdCAlIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNCksICctMTIzNCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0NTYpLCAnLTEyMzQ1NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0NTY3ODkpLCBzdHIoLTEyMzQ1Njc4OSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0NTY3ODkwKSwgc3RyKC0xMjM0NTY3ODkwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoVElNRV9NSU5ZRUFSICsgMTkwMCksIHN0cihUSU1FX01JTllFQVIgKyAxOTAwKSkKKyAgICAgICAgIyBJc3N1ZSAjMTMzMTI6IGl0IG1heSByZXR1cm4gd3JvbmcgdmFsdWUgZm9yIHllYXIgPCBUSU1FX01JTllFQVIgKyAxOTAwCisgICAgICAgICMgU2tpcCB0aGUgdmFsdWUgdGVzdCwgYnV0IGNoZWNrIHRoYXQgbm8gZXJyb3IgaXMgcmFpc2VkCisgICAgICAgIHNlbGYueWVhcnN0cihUSU1FX01JTllFQVIpCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoVElNRV9NSU5ZRUFSKSwgc3RyKFRJTUVfTUlOWUVBUikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYueWVhcnN0ciwgVElNRV9NSU5ZRUFSIC0gMSkKIAogCi0gICAgZGVmIHRlc3RfbWt0aW1lKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxNzI2Njg3Ci0gICAgICAgIGZvciB0IGluICgtMiwgLTEsIDAsIDEpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHR0ID0gdGltZS5sb2NhbHRpbWUodCkKLSAgICAgICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUubWt0aW1lKHR0KSwgdCkKLSAgICAgICAgIyBJdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGlhYmx5IG1ha2UgbWt0aW1lIHJldHVybiBlcnJvcgotICAgICAgICAjIG9uIGFsbCBwbGF0Zm9tLiAgVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGF0IG5vIG90aGVyIGV4Y2VwdGlvbgotICAgICAgICAjIHRoYW4gT3ZlcmZsb3dFcnJvciBpcyByYWlzZWQgZm9yIGFuIGV4dHJlbWUgdmFsdWUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUubWt0aW1lKCgtMSwgMSwgMSwgMCwgMCwgMCwgLTEsIC0xLCAtMSkpCi0gICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi1jbGFzcyBUZXN0QXNjdGltZUFjY2VwdDJkWWVhcihfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDJkWWVhcik6Ci0gICAgcGFzcwotCi1jbGFzcyBUZXN0U3RyZnRpbWVBY2NlcHQyZFllYXIoX1Rlc3RTdHJmdGltZVllYXIsIF9UZXN0MmRZZWFyKToKLSAgICBwYXNzCi0KIGNsYXNzIFRlc3RBc2N0aW1lNGR5ZWFyKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0NGRZZWFyKToKICAgICBwYXNzCiAKIGNsYXNzIFRlc3RTdHJmdGltZTRkeWVhcihfVGVzdFN0cmZ0aW1lWWVhciwgX1Rlc3Q0ZFllYXIpOgogICAgIHBhc3MKIAotY2xhc3MgVGVzdDJkeWVhckJvb2woX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3QyZFllYXIpOgotICAgIGFjY2VwdDJkeWVhciA9IFRydWUKIAotY2xhc3MgVGVzdDRkeWVhckJvb2woX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3Q0ZFllYXIpOgotICAgIGFjY2VwdDJkeWVhciA9IEZhbHNlCitjbGFzcyBUZXN0UHl0aW1lKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuaW52YWxpZF92YWx1ZXMgPSAoCisgICAgICAgICAgICAtKDIgKiogMTAwKSwgMiAqKiAxMDAsCisgICAgICAgICAgICAtKDIuMCAqKiAxMDAuMCksIDIuMCAqKiAxMDAuMCwKKyAgICAgICAgKQogCi1jbGFzcyBUZXN0QWNjZXB0MlllYXJCYWQoX1Rlc3RBc2N0aW1lWWVhciwgX0Jhc2VZZWFyVGVzdCk6Ci0gICAgY2xhc3MgWDoKLSAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdib28nKQotICAgIGFjY2VwdDJkeWVhciA9IFgoKQotICAgIGRlZiB0ZXN0XzJkeWVhcihzZWxmKToKLSAgICAgICAgcGFzcwotICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2VsZi55ZWFyc3RyLCAyMDApCisgICAgZGVmIHRlc3RfdGltZV90KHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lX3QKKyAgICAgICAgZm9yIG9iaiwgdGltZV90IGluICgKKyAgICAgICAgICAgICgwLCAwKSwKKyAgICAgICAgICAgICgtMSwgLTEpLAorICAgICAgICAgICAgKC0xLjAsIC0xKSwKKyAgICAgICAgICAgICgtMS45LCAtMSksCisgICAgICAgICAgICAoMS4wLCAxKSwKKyAgICAgICAgICAgICgxLjksIDEpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmopLCB0aW1lX3QpCiAKKyAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHB5dGltZV9vYmplY3RfdG9fdGltZV90LCBpbnZhbGlkKQorCisgICAgZGVmIHRlc3RfdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorICAgICAgICBmb3Igb2JqLCB0aW1ldmFsIGluICgKKyAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgtMS4wLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgxZS02LCAoMCwgMSkpLAorICAgICAgICAgICAgKC0xZS02LCAoLTEsIDk5OTk5OSkpLAorICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwKSksCisgICAgICAgICAgICAoMS4xMjM0NTYwLCAoMSwgMTIzNDU2KSksCisgICAgICAgICAgICAoMS4xMjM0NTY5LCAoMSwgMTIzNDU2KSksCisgICAgICAgICAgICAoLTEuMTIzNDU2MCwgKC0yLCA4NzY1NDQpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTYxLCAoLTIsIDg3NjU0MykpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwob2JqKSwgdGltZXZhbCkKKworICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcHl0aW1lX29iamVjdF90b190aW1ldmFsLCBpbnZhbGlkKQorCisgICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjCisgICAgICAgIGZvciBvYmosIHRpbWVzcGVjIGluICgKKyAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgtMS4wLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSkpLAorICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSkpLAorICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSksCisgICAgICAgICAgICAoMS4xMjM0NTY3ODkwLCAoMSwgMTIzNDU2Nzg5KSksCisgICAgICAgICAgICAoMS4xMjM0NTY3ODk5LCAoMSwgMTIzNDU2Nzg5KSksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODkxLCAoLTIsIDg3NjU0MzIxMCkpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjKG9iaiksIHRpbWVzcGVjKQorCisgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGltZS5fU1RSVUNUX1RNX0lURU1TID09IDExLCAibmVlZHMgdG1fem9uZSBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfdGltZXpvbmUoc2VsZik6CisKKyAgICAgICAgIyBHZXQgdGhlIGxvY2FsdGltZSBhbmQgZXhhbWluZSBpdCBmb3IgdGhlIG9mZnNldCBhbmQgem9uZS4KKyAgICAgICAgbHQgPSB0aW1lLmxvY2FsdGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGx0LCAidG1fZ210b2ZmIikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGx0LCAidG1fem9uZSIpKQorCisgICAgICAgICMgU2VlIGlmIHRoZSBvZmZzZXQgYW5kIHpvbmUgYXJlIHNpbWlsYXIgdG8gdGhlIG1vZHVsZQorICAgICAgICAjIGF0dHJpYnV0ZXMuCisgICAgICAgIGlmIGx0LnRtX2dtdG9mZiBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBoYXNhdHRyKHRpbWUsICJ0aW1lem9uZSIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsdC50bV9nbXRvZmYsIC1bdGltZS50aW1lem9uZSwgdGltZS5hbHR6b25lXVtsdC50bV9pc2RzdF0pCisgICAgICAgIGlmIGx0LnRtX3pvbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cih0aW1lLCAidHpuYW1lIikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx0LnRtX3pvbmUsIHRpbWUudHpuYW1lW2x0LnRtX2lzZHN0XSkKKworICAgICAgICAjIFRyeSBhbmQgbWFrZSBVTklYIHRpbWVzIGZyb20gdGhlIGxvY2FsdGltZSBhbmQgYSA5LXR1cGxlCisgICAgICAgICMgY3JlYXRlZCBmcm9tIHRoZSBsb2NhbHRpbWUuIFRlc3QgdG8gc2VlIHRoYXQgdGhlIHRpbWVzIGFyZQorICAgICAgICAjIHRoZSBzYW1lLgorICAgICAgICB0ID0gdGltZS5ta3RpbWUobHQpOyB0OSA9IHRpbWUubWt0aW1lKGx0Wzo5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0OSkKKworICAgICAgICAjIE1ha2UgbG9jYWx0aW1lcyBmcm9tIHRoZSBVTklYIHRpbWVzIGFuZCBjb21wYXJlIHRoZW0gdG8KKyAgICAgICAgIyB0aGUgb3JpZ2luYWwgbG9jYWx0aW1lLCB0aHVzIG1ha2luZyBhIHJvdW5kIHRyaXAuCisgICAgICAgIG5ld19sdCA9IHRpbWUubG9jYWx0aW1lKHQpOyBuZXdfbHQ5ID0gdGltZS5sb2NhbHRpbWUodDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LCBsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQudG1fZ210b2ZmLCBsdC50bV9nbXRvZmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LnRtX3pvbmUsIGx0LnRtX3pvbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0OSwgbHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LnRtX2dtdG9mZiwgbHQudG1fZ210b2ZmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdDkudG1fem9uZSwgbHQudG1fem9uZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRpbWUuX1NUUlVDVF9UTV9JVEVNUyA9PSAxMSwgIm5lZWRzIHRtX3pvbmUgc3VwcG9ydCIpCisgICAgZGVmIHRlc3Rfc3RycHRpbWVfdGltZXpvbmUoc2VsZik6CisgICAgICAgIHQgPSB0aW1lLnN0cnB0aW1lKCJVVEMiLCAiJVoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudG1fem9uZSwgJ1VUQycpCisgICAgICAgIHQgPSB0aW1lLnN0cnB0aW1lKCIrMDUwMCIsICIleiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50bV9nbXRvZmYsIDUgKiAzNjAwKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGltZS5fU1RSVUNUX1RNX0lURU1TID09IDExLCAibmVlZHMgdG1fem9uZSBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9zaG9ydF90aW1lcyhzZWxmKToKKworICAgICAgICBpbXBvcnQgcGlja2xlCisKKyAgICAgICAgIyBMb2FkIGEgc2hvcnQgdGltZSBzdHJ1Y3R1cmUgdXNpbmcgcGlja2xlLgorICAgICAgICBzdCA9IGIiY3RpbWVcbnN0cnVjdF90aW1lXG5wMFxuKChJMjAwN1xuSThcbkkxMVxuSTFcbkkyNFxuSTQ5XG5JNVxuSTIyM1xuSTFcbnRwMVxuKGRwMlxudHAzXG5ScDRcbi4iCisgICAgICAgIGx0ID0gcGlja2xlLmxvYWRzKHN0KQorICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX2dtdG9mZiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV96b25lLCBOb25lKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIFRpbWVUZXN0Q2FzZSwKICAgICAgICAgVGVzdExvY2FsZSwKLSAgICAgICAgVGVzdEFzY3RpbWVBY2NlcHQyZFllYXIsCi0gICAgICAgIFRlc3RTdHJmdGltZUFjY2VwdDJkWWVhciwKICAgICAgICAgVGVzdEFzY3RpbWU0ZHllYXIsCiAgICAgICAgIFRlc3RTdHJmdGltZTRkeWVhciwKLSAgICAgICAgVGVzdDJkeWVhckJvb2wsCi0gICAgICAgIFRlc3Q0ZHllYXJCb29sLAotICAgICAgICBUZXN0QWNjZXB0MlllYXJCYWQpCisgICAgICAgIFRlc3RQeXRpbWUpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IGI2YTljYTEuLjIxM2U5YjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtMjg5LDYgKzI4OSw2NCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjkpICgxLCAzMCkKICAgICBTVFJJTkcgICAgICdSIkFCQyInICAgICAgKDEsIDMxKSAoMSwgMzcpCiAKKyAgICA+Pj4gZHVtcF90b2tlbnMoInUnYWJjJyArIFUnYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJ1J2FiYyciICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAiVSdhYmMnIiAgICAgICgxLCA5KSAoMSwgMTUpCisgICAgPj4+IGR1bXBfdG9rZW5zKCd1ImFiYyIgKyBVImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAndSJhYmMiJyAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgJ1UiYWJjIicgICAgICAoMSwgOSkgKDEsIDE1KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJiJ2FiYycgKyBCJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAiYidhYmMnIiAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgIkInYWJjJyIgICAgICAoMSwgOSkgKDEsIDE1KQorICAgID4+PiBkdW1wX3Rva2VucygnYiJhYmMiICsgQiJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ2IiYWJjIicgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICdCImFiYyInICAgICAgKDEsIDkpICgxLCAxNSkKKyAgICA+Pj4gZHVtcF90b2tlbnMoImJyJ2FiYycgKyBiUidhYmMnICsgQnInYWJjJyArIEJSJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAiYnInYWJjJyIgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgImJSJ2FiYyciICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAiQnInYWJjJyIgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICJCUidhYmMnIiAgICAgKDEsIDMwKSAoMSwgMzcpCisgICAgPj4+IGR1bXBfdG9rZW5zKCdiciJhYmMiICsgYlIiYWJjIiArIEJyImFiYyIgKyBCUiJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ2JyImFiYyInICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICdiUiJhYmMiJyAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgJ0JyImFiYyInICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAnQlIiYWJjIicgICAgICgxLCAzMCkgKDEsIDM3KQorICAgID4+PiBkdW1wX3Rva2VucygicmInYWJjJyArIHJCJ2FiYycgKyBSYidhYmMnICsgUkInYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJyYidhYmMnIiAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAickInYWJjJyIgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICJSYidhYmMnIiAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgIlJCJ2FiYyciICAgICAoMSwgMzApICgxLCAzNykKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ3JiImFiYyIgKyByQiJhYmMiICsgUmIiYWJjIiArIFJCImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAncmIiYWJjIicgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgJ3JCImFiYyInICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAnUmIiYWJjIicgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCisKIE9wZXJhdG9ycwogCiAgICAgPj4+IGR1bXBfdG9rZW5zKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiKQpAQCAtNTYzLDE1ICs2MjEsMjggQEAKICAgICBOQU1FICAgICAgICdncsO8bicgICAgICAgICgyLCAwKSAoMiwgNCkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDIsIDUpICgyLCA2KQogICAgIFNUUklORyAgICAgIidncmVlbiciICAgICAoMiwgNykgKDIsIDE0KQorCitMZWdhY3kgdW5pY29kZSBsaXRlcmFsczoKKworICAgID4+PiBkdW1wX3Rva2Vucygiw5ZydGVyID0gdSdwbGFjZXMnXFxuZ3LDvG4gPSBVJ2dyZWVuJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICfDlnJ0ZXInICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDYpICgxLCA3KQorICAgIFNUUklORyAgICAgInUncGxhY2VzJyIgICAoMSwgOCkgKDEsIDE3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDE3KSAoMSwgMTgpCisgICAgTkFNRSAgICAgICAnZ3LDvG4nICAgICAgICAoMiwgMCkgKDIsIDQpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgyLCA1KSAoMiwgNikKKyAgICBTVFJJTkcgICAgICJVJ2dyZWVuJyIgICAgKDIsIDcpICgyLCAxNSkKICIiIgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdG9rZW5pemUgaW1wb3J0ICh0b2tlbml6ZSwgX3Rva2VuaXplLCB1bnRva2VuaXplLCBOVU1CRVIsIE5BTUUsIE9QLAotICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLCBFTkRNQVJLRVIsIHRva19uYW1lLCBkZXRlY3RfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICBTVFJJTkcsIEVORE1BUktFUiwgRU5DT0RJTkcsIHRva19uYW1lLCBkZXRlY3RfZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICBvcGVuIGFzIHRva2VuaXplX29wZW4pCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQogaW1wb3J0IG9zLCBzeXMsIGdsb2IKK2ltcG9ydCB0b2tlbgogCiBkZWYgZHVtcF90b2tlbnMocyk6CiAgICAgIiIiUHJpbnQgb3V0IHRoZSB0b2tlbnMgaW4gcyBpbiBhIHRhYmxlIGZvcm1hdC4KQEAgLTYwMCw3ICs2NzEsNyBAQAogICAgICAgICBmLmNsb3NlKCkKICAgICB0b2tlbnMxID0gW3Rva1s6Ml0gZm9yIHRvayBpbiB0b2tlbl9saXN0XQogICAgIG5ld19ieXRlcyA9IHVudG9rZW5pemUodG9rZW5zMSkKLSAgICByZWFkbGluZSA9IChsaW5lIGZvciBsaW5lIGluIG5ld19ieXRlcy5zcGxpdGxpbmVzKDEpKS5fX25leHRfXworICAgIHJlYWRsaW5lID0gKGxpbmUgZm9yIGxpbmUgaW4gbmV3X2J5dGVzLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpLl9fbmV4dF9fCiAgICAgdG9rZW5zMiA9IFt0b2tbOjJdIGZvciB0b2sgaW4gdG9rZW5pemUocmVhZGxpbmUpXQogICAgIHJldHVybiB0b2tlbnMxID09IHRva2VuczIKIApAQCAtODk1LDYgKzk2NiwzNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5lbmNvZGluZywgJ3V0Zi04LXNpZycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLm1vZGUsICdyJykKIAorICAgIGRlZiB0ZXN0X2ZpbGVuYW1lX2luX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgIyBXaGVuIHBvc3NpYmxlLCBpbmNsdWRlIHRoZSBmaWxlIG5hbWUgaW4gdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgcGF0aCA9ICdzb21lX2ZpbGVfcGF0aCcKKyAgICAgICAgbGluZXMgPSAoCisgICAgICAgICAgICBiJ3ByaW50KCJceGRmIiknLCAjIExhdGluLTE6IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCisgICAgICAgICAgICApCisgICAgICAgIGNsYXNzIEJ1bms6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZXMsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IHBhdGgKKyAgICAgICAgICAgICAgICBzZWxmLl9saW5lcyA9IGxpbmVzCisgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCisKKyAgICAgICAgICAgIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBsZW4obGluZXMpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVzW3NlbGYuX2luZGV4XQorICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gbGluZQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgaW5zID0gQnVuayhsaW5lcywgcGF0aCkKKyAgICAgICAgICAgICMgTWFrZSBzdXJlIGxhY2tpbmcgYSBuYW1lIGlzbid0IGFuIGlzc3VlLgorICAgICAgICAgICAgZGVsIGlucy5uYW1lCisgICAgICAgICAgICBkZXRlY3RfZW5jb2RpbmcoaW5zLnJlYWRsaW5lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICcuKnt9Jy5mb3JtYXQocGF0aCkpOgorICAgICAgICAgICAgaW5zID0gQnVuayhsaW5lcywgcGF0aCkKKyAgICAgICAgICAgIGRldGVjdF9lbmNvZGluZyhpbnMucmVhZGxpbmUpCisKKwogY2xhc3MgVGVzdFRva2VuaXplKFRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3Rva2VuaXplKHNlbGYpOgpAQCAtOTM2LDYgKzEwMzYsNzggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5jb2RpbmdfdXNlZCwgZW5jb2RpbmcpCiAKKyAgICBkZWYgYXNzZXJ0RXhhY3RUeXBlRXF1YWwoc2VsZiwgb3BzdHIsICpvcHR5cGVzKToKKyAgICAgICAgdG9rZW5zID0gbGlzdCh0b2tlbml6ZShCeXRlc0lPKG9wc3RyLmVuY29kZSgndXRmLTgnKSkucmVhZGxpbmUpKQorICAgICAgICBudW1fb3B0eXBlcyA9IGxlbihvcHR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0b2tlbnMpLCAyICsgbnVtX29wdHlwZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW4udG9rX25hbWVbdG9rZW5zWzBdLmV4YWN0X3R5cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRva19uYW1lW0VOQ09ESU5HXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX29wdHlwZXMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b2tlbi50b2tfbmFtZVt0b2tlbnNbaSArIDFdLmV4YWN0X3R5cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50b2tfbmFtZVtvcHR5cGVzW2ldXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b2tlbi50b2tfbmFtZVt0b2tlbnNbMSArIG51bV9vcHR5cGVzXS5leGFjdF90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50b2tfbmFtZVt0b2tlbi5FTkRNQVJLRVJdKQorCisgICAgZGVmIHRlc3RfZXhhY3RfdHlwZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKCknLCB0b2tlbi5MUEFSLCB0b2tlbi5SUEFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdbXScsIHRva2VuLkxTUUIsIHRva2VuLlJTUUIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzonLCB0b2tlbi5DT0xPTikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLCcsIHRva2VuLkNPTU1BKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc7JywgdG9rZW4uU0VNSSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKycsIHRva2VuLlBMVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy0nLCB0b2tlbi5NSU5VUykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKicsIHRva2VuLlNUQVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy8nLCB0b2tlbi5TTEFTSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnfCcsIHRva2VuLlZCQVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyYnLCB0b2tlbi5BTVBFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPCcsIHRva2VuLkxFU1MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz4nLCB0b2tlbi5HUkVBVEVSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc9JywgdG9rZW4uRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy4nLCB0b2tlbi5ET1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyUnLCB0b2tlbi5QRVJDRU5UKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd7fScsIHRva2VuLkxCUkFDRSwgdG9rZW4uUkJSQUNFKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc9PScsIHRva2VuLkVRRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyE9JywgdG9rZW4uTk9URVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzw9JywgdG9rZW4uTEVTU0VRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+PScsIHRva2VuLkdSRUFURVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnficsIHRva2VuLlRJTERFKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdeJywgdG9rZW4uQ0lSQ1VNRkxFWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPDwnLCB0b2tlbi5MRUZUU0hJRlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz4+JywgdG9rZW4uUklHSFRTSElGVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKionLCB0b2tlbi5ET1VCTEVTVEFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcrPScsIHRva2VuLlBMVVNFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLT0nLCB0b2tlbi5NSU5FUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKj0nLCB0b2tlbi5TVEFSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy89JywgdG9rZW4uU0xBU0hFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnJT0nLCB0b2tlbi5QRVJDRU5URVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyY9JywgdG9rZW4uQU1QRVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnfD0nLCB0b2tlbi5WQkFSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ149JywgdG9rZW4uQ0lSQ1VNRkxFWEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdePScsIHRva2VuLkNJUkNVTUZMRVhFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPDw9JywgdG9rZW4uTEVGVFNISUZURVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz4+PScsIHRva2VuLlJJR0hUU0hJRlRFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKio9JywgdG9rZW4uRE9VQkxFU1RBUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvLycsIHRva2VuLkRPVUJMRVNMQVNIKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvLz0nLCB0b2tlbi5ET1VCTEVTTEFTSEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdAJywgdG9rZW4uQVQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnYSoqMitiKioyPT1jKioyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FLCB0b2tlbi5ET1VCTEVTVEFSLCBOVU1CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uUExVUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FLCB0b2tlbi5ET1VCTEVTVEFSLCBOVU1CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uRVFFUVVBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FLCB0b2tlbi5ET1VCTEVTVEFSLCBOVU1CRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3sxLCAyLCAzfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTEJSQUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5VTUJFUiwgdG9rZW4uQ09NTUEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTlVNQkVSLCB0b2tlbi5DT01NQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OVU1CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uUkJSQUNFKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdeKHggJiAweDEpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5DSVJDVU1GTEVYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkxQQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTkFNRSwgdG9rZW4uQU1QRVIsIHRva2VuLk5VTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5SUEFSKQogCiBfX3Rlc3RfXyA9IHsiZG9jdGVzdHMiIDogZG9jdGVzdHMsICdkZWNpc3RtdCc6IGRlY2lzdG10fQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy5weQppbmRleCA0MjgxNmEyLi43YTI1MDY5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkKQEAgLTYsOCArNiw5IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTQwLDcgKzQxLDcgQEAKICAgICAjIGFkZGVkIGZvciBhIHNjcmlwdCBpdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHdoaXRlbGlzdCBiZWxvdy4KIAogICAgICMgc2NyaXB0cyB0aGF0IGhhdmUgaW5kZXBlbmRlbnQgdGVzdHMuCi0gICAgd2hpdGVsaXN0ID0gWydyZWluZGVudC5weSddCisgICAgd2hpdGVsaXN0ID0gWydyZWluZGVudC5weScsICdwZGVwcy5weScsICdncHJvZjJodG1sJ10KICAgICAjIHNjcmlwdHMgdGhhdCBjYW4ndCBiZSBpbXBvcnRlZCB3aXRob3V0IHJ1bm5pbmcKICAgICBibGFja2xpc3QgPSBbJ21ha2VfY3R5cGUucHknXQogICAgICMgc2NyaXB0cyB0aGF0IHVzZSB3aW5kb3dzLW9ubHkgbW9kdWxlcwpAQCAtNzksNyArODAsOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNjcmlwdHNkaXIsICdwZGVwcy5weScpCi0gICAgICAgIHNlbGYucGRlcHMgPSBpbXAubG9hZF9zb3VyY2UoJ3BkZXBzJywgcGF0aCkKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdwZGVwcycsIHBhdGgpCisgICAgICAgIHNlbGYucGRlcHMgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CkBAIC05OSw2ICsxMDEsMzUgQEAKICAgICAgICAgc2VsZi5wZGVwcy5pbnZlcnNlKHsnYSc6IFtdfSkKIAogCitjbGFzcyBHcHJvZjJodG1sVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNjcmlwdHNkaXIsICdncHJvZjJodG1sLnB5JykKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdncHJvZjJodG1sJywgcGF0aCkKKyAgICAgICAgc2VsZi5ncHJvZiA9IGxvYWRlci5sb2FkX21vZHVsZSgpCisgICAgICAgIG9sZGFyZ3YgPSBzeXMuYXJndgorICAgICAgICBkZWYgZml4dXAoKToKKyAgICAgICAgICAgIHN5cy5hcmd2ID0gb2xkYXJndgorICAgICAgICBzZWxmLmFkZENsZWFudXAoZml4dXApCisgICAgICAgIHN5cy5hcmd2ID0gW10KKworICAgIGRlZiB0ZXN0X2dwcm9mKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNDUwODogdGhpcyB1c2VkIHRvIGZhaWwgd2l0aCBhbiBOYW1lRXJyb3IuCisgICAgICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3Qoc2VsZi5ncHJvZiwgJ3dlYmJyb3dzZXInKSBhcyB3bW9jaywgXAorICAgICAgICAgICAgICAgIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRtcGRpcjoKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2FiYycpCisgICAgICAgICAgICBvcGVuKGZuLCAndycpLmNsb3NlKCkKKyAgICAgICAgICAgIHN5cy5hcmd2ID0gWydncHJvZjJodG1sJywgZm5dCisgICAgICAgICAgICBzZWxmLmdwcm9mLm1haW4oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUod21vY2sub3Blbi5jYWxsZWQpCisKKworIyBSdW4gdGhlIHRlc3RzIGluIFRvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKK3dpdGggc3VwcG9ydC5EaXJzT25TeXNQYXRoKG9zLnBhdGguam9pbihiYXNlcGF0aCwgJ3BhcnNlcicpKToKKyAgICBmcm9tIHRlc3RfdW5wYXJzZSBpbXBvcnQgVW5wYXJzZVRlc3RDYXNlCisgICAgZnJvbSB0ZXN0X3VucGFyc2UgaW1wb3J0IERpcmVjdG9yeVRlc3RDYXNlCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCpbb2JqIGZvciBvYmogaW4gZ2xvYmFscygpLnZhbHVlcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IDQ2MWQxZDguLmFjM2ExYTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMTAyLDYgKzEwMiw3IEBACiBjbGFzcyBUZXN0TGluZUNvdW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgbGluZS1jb3VudGluZywgdmlhIHJ1bmZ1bmMiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTEsIHRyYWNlPTAsIGNvdW50ZnVuY3M9MCwgY291bnRjYWxsZXJzPTApCiAgICAgICAgIHNlbGYubXlfcHlfZmlsZW5hbWUgPSBmaXhfZXh0X3B5KF9fZmlsZV9fKQogCkBAIC0xOTIsNiArMTkzLDcgQEAKICAgICAiIiJBIHNpbXBsZSBzYW5pdHkgdGVzdCBvZiBsaW5lLWNvdW50aW5nLCB2aWEgcnVuY3R4IChleGVjKSIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5teV9weV9maWxlbmFtZSA9IGZpeF9leHRfcHkoX19maWxlX18pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogCiAgICAgZGVmIHRlc3RfZXhlY19jb3VudHMoc2VsZik6CiAgICAgICAgIHNlbGYudHJhY2VyID0gVHJhY2UoY291bnQ9MSwgdHJhY2U9MCwgY291bnRmdW5jcz0wLCBjb3VudGNhbGxlcnM9MCkKQEAgLTIxOCw2ICsyMjAsNyBAQAogY2xhc3MgVGVzdEZ1bmNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJXaGl0ZS1ib3ggdGVzdGluZyBvZiBmdW5jcyB0cmFjaW5nIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTEpCiAgICAgICAgIHNlbGYuZmlsZW1vZCA9IG15X2ZpbGVfYW5kX21vZG5hbWUoKQogCkBAIC0yNDIsNiArMjQ1LDggQEAKICAgICAgICAgfQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHJhY2VyLnJlc3VsdHMoKS5jYWxsZWRmdW5jcywgZXhwZWN0ZWQpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAncHJlLWV4aXN0aW5nIHRyYWNlIGZ1bmN0aW9uIHRocm93cyBvZmYgbWVhc3VyZW1lbnRzJykKICAgICBkZWYgdGVzdF9pbnN0X21ldGhvZF9jYWxsaW5nKHNlbGYpOgogICAgICAgICBvYmogPSBUcmFjZWRDbGFzcygyMCkKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyhvYmouaW5zdF9tZXRob2RfY2FsbGluZywgMSkKQEAgLTI1Nyw5ICsyNjIsMTIgQEAKIGNsYXNzIFRlc3RDYWxsZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJXaGl0ZS1ib3ggdGVzdGluZyBvZiBjYWxsZXJzIHRyYWNpbmciIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTAsIHRyYWNlPTAsIGNvdW50Y2FsbGVycz0xKQogICAgICAgICBzZWxmLmZpbGVtb2QgPSBteV9maWxlX2FuZF9tb2RuYW1lKCkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICdwcmUtZXhpc3RpbmcgdHJhY2UgZnVuY3Rpb24gdGhyb3dzIG9mZiBtZWFzdXJlbWVudHMnKQogICAgIGRlZiB0ZXN0X2xvb3BfY2FsbGVyX2ltcG9ydGluZyhzZWxmKToKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyh0cmFjZWRfZnVuY19pbXBvcnRpbmdfY2FsbGVyLCAxKQogCkBAIC0yODAsNiArMjg4LDkgQEAKIAogIyBDcmVhdGVkIHNlcGFyYXRlbHkgZm9yIGlzc3VlICMzODIxCiBjbGFzcyBUZXN0Q292ZXJhZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHJtdHJlZShURVNURk4pCiAgICAgICAgIHVubGluayhURVNURk4pCkBAIC0zMDUsMTMgKzMxNiwxMyBAQAogICAgICAgICAjIElnbm9yZSBhbGwgZmlsZXMsIG5vdGhpbmcgc2hvdWxkIGJlIHRyYWNlZCBub3IgcHJpbnRlZAogICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmRpcm5hbWUob3MuX19maWxlX18pKQogICAgICAgICAjIHN5cy5wcmVmaXggZG9lcyBub3Qgd29yayB3aGVuIHJ1bm5pbmcgZnJvbSBhIGNoZWNrb3V0Ci0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCwgbGlicGF0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCisgICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBhdGhdLCB0cmFjZT0wLCBjb3VudD0xKQogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIHNlbGYuX2NvdmVyYWdlKHRyYWNlcikKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKICAgICAgICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXMsIFsnX2ltcG9ydGxpYi5jb3ZlciddKSAgIyBJZ25vcmUgX19pbXBvcnRfXwogCiAgICAgZGVmIHRlc3RfaXNzdWU5OTM2KHNlbGYpOgogICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZSh0cmFjZT0wLCBjb3VudD0xKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA0NzUyZDM3Li41YmNlMmFmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMjQ2LDYgKzI0NiwyMSBAQAogICAgICAgICBzZWxmLmNoZWNrX3plcm9fZGl2KGJsb2Nrc1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignaW5uZXJfcmFpc2UoKSAjIE1hcmtlcicsIGJsb2Nrc1syXSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRfc3VwcHJlc3Npb24oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvciBmcm9tIE5vbmUKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIF86CisgICAgICAgICAgICBlID0gXworICAgICAgICBsaW5lcyA9IHNlbGYuZ2V0X3JlcG9ydChlKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMF0uc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1sxXS5zdGFydHN3aXRoKCcgIEZpbGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignWmVyb0RpdmlzaW9uRXJyb3IgZnJvbSBOb25lJywgbGluZXNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1szXS5zdGFydHN3aXRoKCdaZXJvRGl2aXNpb25FcnJvcicpKQorCiAgICAgZGVmIHRlc3RfY2F1c2VfYW5kX2NvbnRleHQoc2VsZik6CiAgICAgICAgICMgV2hlbiBib3RoIGEgY2F1c2UgYW5kIGEgY29udGV4dCBhcmUgc2V0LCBvbmx5IHRoZSBjYXVzZSBzaG91bGQgYmUKICAgICAgICAgIyBkaXNwbGF5ZWQgYW5kIHRoZSBjb250ZXh0IHNob3VsZCBiZSBtdXRlZC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkgYi9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CmluZGV4IDZlOTM0ZmIuLmU0MTcxMWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQpAQCAtMSw2ICsxLDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2VxX3Rlc3RzCiAKIGltcG9ydCBnYworaW1wb3J0IHBpY2tsZQogCiBjbGFzcyBUdXBsZVRlc3Qoc2VxX3Rlc3RzLkNvbW1vblRlc3QpOgogICAgIHR5cGUydGVzdCA9IHR1cGxlCkBAIC0xNjQsNiArMTY1LDM0IEBACiAgICAgICAgIGNoZWNrKDEwKSAgICAgICAjIGNoZWNrIG91ciBjaGVja2luZyBjb2RlCiAgICAgICAgIGNoZWNrKDEwMDAwMDApCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgICMgVXNlcmxpc3QgaXRlcmF0b3JzIGRvbid0IHN1cHBvcnQgcGlja2xpbmcgeWV0IHNpbmNlCisgICAgICAgICMgdGhleSBhcmUgYmFzZWQgb24gZ2VuZXJhdG9ycy4KKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpWzE6XSkKKworICAgIGRlZiB0ZXN0X3JldmVyc2VkX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXRvcmcgPSByZXZlcnNlZChkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QocmV2ZXJzZWQoZGF0YSkpWzE6XSkKKwogICAgIGRlZiB0ZXN0X25vX2NvbWRhdF9mb2xkaW5nKHNlbGYpOgogICAgICAgICAjIElzc3VlIDg4NDc6IEluIHRoZSBQR08gYnVpbGQsIHRoZSBNU1ZDIGxpbmtlcidzIENPTURBVCBmb2xkaW5nCiAgICAgICAgICMgb3B0aW1pemF0aW9uIGNhdXNlcyBmYWlsdXJlcyBpbiBjb2RlIHRoYXQgcmVsaWVzIG9uIGRpc3RpbmN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQppbmRleCA4YTk4YTAzLi4zZWU0YzZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKQEAgLTEsOSArMSwxMSBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gcGFydCA2LCBidWlsdC1pbiB0eXBlcwogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBydW5fd2l0aF9sb2NhbGUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgbG9jYWxlCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBUeXBlc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTY5LDggKzU3MSw1ODMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHR1cGxlLl9faXRlbXNpemVfXywgMCkKIAogCitjbGFzcyBNYXBwaW5nUHJveHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWFwcGluZ3Byb3h5ID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZQorCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIHVzZXJkaWN0KGRpY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1hcHBpbmcgPSB7J3gnOiAxLCAneSc6IDJ9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisgICAgICAgIG1hcHBpbmcgPSB1c2VyZGljdCh4PTEsIHk9MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKSwgbWFwcGluZykKKyAgICAgICAgbWFwcGluZyA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKHsneCc6IDF9LCB7J3knOiAyfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKSwgbWFwcGluZykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFwcGluZ3Byb3h5LCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1hcHBpbmdwcm94eSwgKCJhIiwgInR1cGxlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tYXBwaW5ncHJveHksIFsiYSIsICJsaXN0Il0pCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICBhdHRycyA9IHNldChkaXIoc2VsZi5tYXBwaW5ncHJveHkoe30pKSkgLSBzZXQoZGlyKG9iamVjdCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRycywgeworICAgICAgICAgICAgICdfX2NvbnRhaW5zX18nLAorICAgICAgICAgICAgICdfX2dldGl0ZW1fXycsCisgICAgICAgICAgICAgJ19faXRlcl9fJywKKyAgICAgICAgICAgICAnX19sZW5fXycsCisgICAgICAgICAgICAgJ2NvcHknLAorICAgICAgICAgICAgICdnZXQnLAorICAgICAgICAgICAgICdpdGVtcycsCisgICAgICAgICAgICAgJ2tleXMnLAorICAgICAgICAgICAgICd2YWx1ZXMnLAorICAgICAgICB9KQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoeydhJzogJ0EnLCAnYic6ICdCJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1snYSddLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1snYiddLCAnQicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCB2aWV3Ll9fZ2V0aXRlbV9fLCAneHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgnYScpLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcuZ2V0KCd4eHgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneHh4JywgNDIpLCA0MikKKworICAgIGRlZiB0ZXN0X21pc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIGRpY3RtaXNzaW5nKGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJtaXNzaW5nPSVzIiAlIGtleQorCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0bWlzc2luZyh4PTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ3gnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd5J10sICdtaXNzaW5nPXknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd4JyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3knKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneScsIDQyKSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgneCcgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneScgaW4gdmlldykKKworICAgIGRlZiB0ZXN0X2N1c3RvbWRpY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIGN1c3RvbWRpY3QoZGljdCk6CisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgaWYga2V5ID09ICdtYWdpYyc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QuX19jb250YWluc19fKHNlbGYsIGtleSkKKworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKCgnaXRlcicsKSkKKworICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDUwMAorCisgICAgICAgICAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NvcHknCisKKyAgICAgICAgICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAna2V5cycKKworICAgICAgICAgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnaXRlbXMnCisKKyAgICAgICAgICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICd2YWx1ZXMnCisKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZ2V0aXRlbT0lcyIgJSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSkKKworICAgICAgICAgICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJnZXQ9JXMiICUgZGljdC5nZXQoc2VsZiwga2V5LCAnZGVmYXVsdD0lcicgJSBkZWZhdWx0KQorCisgICAgICAgIGN1c3RvbSA9IGN1c3RvbWRpY3QoeydrZXknOiAndmFsdWUnfSkKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGN1c3RvbSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdrZXknIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbWFnaWMnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3h4eCcgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3WydrZXknXSwgJ2dldGl0ZW09dmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3h4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUodmlldyksICgnaXRlcicsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmlldyksIDUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmNvcHkoKSwgJ2NvcHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCdrZXknKSwgJ2dldD12YWx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3h4eCcpLCAnZ2V0PWRlZmF1bHQ9Tm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5pdGVtcygpLCAnaXRlbXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcua2V5cygpLCAna2V5cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy52YWx1ZXMoKSwgJ3ZhbHVlcycpCisKKyAgICBkZWYgdGVzdF9jaGFpbm1hcChzZWxmKToKKyAgICAgICAgZDEgPSB7J3gnOiAxfQorICAgICAgICBkMiA9IHsneSc6IDJ9CisgICAgICAgIG1hcHBpbmcgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcChkMSwgZDIpCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3gnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgneScgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneicgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd4J10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneSddLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3onKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHNvcnRlZCh2aWV3KSksICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCAyKQorICAgICAgICBjb3B5ID0gdmlldy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjb3B5LCBtYXBwaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY29weSwgY29sbGVjdGlvbnMuQ2hhaW5NYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weSwgbWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneCcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd5JyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcuZ2V0KCd6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcuaXRlbXMoKSkpLCAoKCd4JywgMSksICgneScsIDIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldy5rZXlzKCkpKSwgKCd4JywgJ3knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldy52YWx1ZXMoKSkpLCAoMSwgMikpCisKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGRpY3QuZnJvbWtleXMoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2EnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYicgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdjJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd4eHgnIGluIHZpZXcpCisKKyAgICBkZWYgdGVzdF92aWV3cyhzZWxmKToKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKQorICAgICAgICBrZXlzID0gdmlldy5rZXlzKCkKKyAgICAgICAgdmFsdWVzID0gdmlldy52YWx1ZXMoKQorICAgICAgICBpdGVtcyA9IHZpZXcuaXRlbXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoa2V5cyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodmFsdWVzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVtcyksIFtdKQorICAgICAgICBtYXBwaW5nWydrZXknXSA9ICd2YWx1ZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtleXMpLCBbJ2tleSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodmFsdWVzKSwgWyd2YWx1ZSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlbXMpLCBbKCdrZXknLCAndmFsdWUnKV0pCisKKyAgICBkZWYgdGVzdF9sZW4oc2VsZik6CisgICAgICAgIGZvciBleHBlY3RlZCBpbiByYW5nZSg2KToKKyAgICAgICAgICAgIGRhdGEgPSBkaWN0LmZyb21rZXlzKCdhYmNkZSdbOmV4cGVjdGVkXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmlldyksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3JzKHNlbGYpOgorICAgICAgICBrZXlzID0gKCd4JywgJ3knKQorICAgICAgICB2YWx1ZXMgPSAoMSwgMikKKyAgICAgICAgaXRlbXMgPSB0dXBsZSh6aXAoa2V5cywgdmFsdWVzKSkKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGRpY3QoaXRlbXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3KSwgc2V0KGtleXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3LmtleXMoKSksIHNldChrZXlzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy52YWx1ZXMoKSksIHNldCh2YWx1ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3Lml0ZW1zKCkpLCBzZXQoaXRlbXMpKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSB7J2tleTEnOiAyNywgJ2tleTInOiA1MSwgJ2tleTMnOiA5M30KKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KG9yaWdpbmFsKQorICAgICAgICBjb3B5ID0gdmlldy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNvcHkpLCBkaWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHksIG9yaWdpbmFsKQorICAgICAgICBvcmlnaW5hbFsna2V5MSddID0gNzAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3WydrZXkxJ10sIDcwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlbJ2tleTEnXSwgMjcpCisKKworY2xhc3MgQ2xhc3NDcmVhdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBucywgKiprdyk6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBucykKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMsICoqa3cpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMsICoqa3cpOgorICAgICAgICAgICAgbnMgPSBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorICAgICAgICAgICAgbnNbInkiXSA9IDEKKyAgICAgICAgICAgIG5zLnVwZGF0ZShrdykKKyAgICAgICAgICAgIHJldHVybiBucworCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX25hbWVfXywgIkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19iYXNlc19fLCAob2JqZWN0LCkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3Nfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoaW50LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIGludCkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfbWV0YShzZWxmKToKKyAgICAgICAgTWV0YSA9IHNlbGYuTWV0YQorICAgICAgICBzZXR0aW5ncyA9IHsibWV0YWNsYXNzIjogTWV0YSwgInoiOiAyfQorICAgICAgICAjIFdlIGRvIHRoaXMgdHdpY2UgdG8gbWFrZSBzdXJlIHRoZSBwYXNzZWQgaW4gZGljdCBpc24ndCBtdXRhdGVkCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIgKyBzdHIoaSksICgpLCBzZXR0aW5ncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueiwgMikKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19leGVjX2JvZHkoc2VsZik6CisgICAgICAgIE1ldGEgPSBzZWxmLk1ldGEKKyAgICAgICAgZGVmIGZ1bmMobnMpOgorICAgICAgICAgICAgbnNbIngiXSA9IDAKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsICgpLCB7Im1ldGFjbGFzcyI6IE1ldGEsICJ6IjogMn0sIGZ1bmMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy56LCAyKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGFjbGFzc19rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgI1Rlc3QgdGhhdCBrZXl3b3JkcyBhcmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3M6CisgICAgICAgIGRlZiBtZXRhX2Z1bmMobmFtZSwgYmFzZXMsIG5zLCAqKmt3KToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLCBiYXNlcywgbnMsIGt3CisgICAgICAgIHJlcyA9IHR5cGVzLm5ld19jbGFzcygiWCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50LCBvYmplY3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRhY2xhc3M9bWV0YV9mdW5jLCB4PTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgKCJYIiwgKGludCwgb2JqZWN0KSwge30sIHsieCI6IDB9KSkKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHRzL2tleXdvcmRzOgorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKCksIHt9LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKG9iamVjdCwpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGFfd2l0aF9iYXNlKHNlbGYpOgorICAgICAgICBNZXRhID0gc2VsZi5NZXRhCisgICAgICAgIGRlZiBmdW5jKG5zKToKKyAgICAgICAgICAgIG5zWyJ4Il0gPSAwCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MobmFtZT0iQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXM9KGludCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3ZHM9ZGljdChtZXRhY2xhc3M9TWV0YSwgej0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2JvZHk9ZnVuYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEMsIE1ldGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy54LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnosIDIpCisKKyAgICAjIE1hbnkgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgZGVyaXZlZCBmcm9tIHRlc3RfZGVzY3IucHkKKyAgICBkZWYgdGVzdF9wcmVwYXJlX2NsYXNzKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3Qgb2YgbWV0YWNsYXNzIGRlcml2YXRpb24KKyAgICAgICAgZXhwZWN0ZWRfbnMgPSB7fQorICAgICAgICBjbGFzcyBBKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKCphcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfbnMKKworICAgICAgICBCID0gdHlwZXMubmV3X2NsYXNzKCJCIiwgKG9iamVjdCwpKQorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKG9iamVjdCwpLCB7Im1ldGFjbGFzcyI6IEF9KQorCisgICAgICAgICMgVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3Mgb2YgRCBpcyBBIHJhdGhlciB0aGFuIHR5cGUuCisgICAgICAgIG1ldGEsIG5zLCBrd2RzID0gdHlwZXMucHJlcGFyZV9jbGFzcygiRCIsIChCLCBDKSwgeyJtZXRhY2xhc3MiOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZXRhLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzKG5zLCBleHBlY3RlZF9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa3dkcyksIDApCisKKyAgICBkZWYgdGVzdF9tZXRhY2xhc3NfZGVyaXZhdGlvbihzZWxmKToKKyAgICAgICAgIyBpc3N1ZTEyOTQyMzI6IGNvcnJlY3QgbWV0YWNsYXNzIGNhbGN1bGF0aW9uCisgICAgICAgIG5ld19jYWxscyA9IFtdICAjIHRvIGNoZWNrIHRoZSBvcmRlciBvZiBfX25ld19fIGNhbGxzCisgICAgICAgIGNsYXNzIEFNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBuZXdfY2FsbHMuYXBwZW5kKCdBTWV0YScpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHt9CisKKyAgICAgICAgY2xhc3MgQk1ldGEoQU1ldGEpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBuZXdfY2FsbHMuYXBwZW5kKCdCTWV0YScpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgbnMgPSBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorICAgICAgICAgICAgICAgIG5zWydCTWV0YV93YXNfaGVyZSddID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiBucworCisgICAgICAgIEEgPSB0eXBlcy5uZXdfY2xhc3MoIkEiLCAoKSwgeyJtZXRhY2xhc3MiOiBBTWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsICgpLCB7Im1ldGFjbGFzcyI6IEJNZXRhfSkKKyAgICAgICAgIyBCTWV0YS5fX25ld19fIGNhbGxzIEFNZXRhLl9fbmV3X18gd2l0aCBzdXBlcjoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKEEsIEIpKQorICAgICAgICAjIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIEJNZXRhOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTWV0YScsICdBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorICAgICAgICAjIEJNZXRhLl9fcHJlcGFyZV9fIHNob3VsZCd2ZSBiZWVuIGNhbGxlZDoKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBDLl9fZGljdF9fKQorCisgICAgICAgICMgVGhlIG9yZGVyIG9mIHRoZSBiYXNlcyBzaG91bGRuJ3QgbWF0dGVyOgorICAgICAgICBDMiA9IHR5cGVzLm5ld19jbGFzcygiQzIiLCAoQiwgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQzIuX19kaWN0X18pCisKKyAgICAgICAgIyBDaGVjayBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbiB3aGVuIGEgbWV0YWNsYXNzIGlzIGRlY2xhcmVkOgorICAgICAgICBEID0gdHlwZXMubmV3X2NsYXNzKCJEIiwgKEMsKSwgeyJtZXRhY2xhc3MiOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBELl9fZGljdF9fKQorCisgICAgICAgIEUgPSB0eXBlcy5uZXdfY2xhc3MoIkUiLCAoQywpLCB7Im1ldGFjbGFzcyI6IEFNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBFLl9fZGljdF9fKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX292ZXJyaWRlX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICAjIFNwZWNpYWwgY2FzZTogdGhlIGdpdmVuIG1ldGFjbGFzcyBpc24ndCBhIGNsYXNzLAorICAgICAgICAjIHNvIHRoZXJlIGlzIG5vIG1ldGFjbGFzcyBjYWxjdWxhdGlvbi4KKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9c2VsZi5NZXRhKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtYXJrZXIgPSBvYmplY3QoKQorICAgICAgICBkZWYgZnVuYygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIG1hcmtlcgorCisgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoKSwgeyJtZXRhY2xhc3MiOiBmdW5jfSkKKyAgICAgICAgWSA9IHR5cGVzLm5ld19jbGFzcygiWSIsIChvYmplY3QsKSwgeyJtZXRhY2xhc3MiOiBmdW5jfSkKKyAgICAgICAgWiA9IHR5cGVzLm5ld19jbGFzcygiWiIsIChBLCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFya2VyLCBYKQorICAgICAgICBzZWxmLmFzc2VydElzKG1hcmtlciwgWSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYXJrZXIsIFopCisKKyAgICBkZWYgdGVzdF9tZXRhY2xhc3Nfb3ZlcnJpZGVfY2FsbGFibGUoc2VsZik6CisgICAgICAgICMgVGhlIGdpdmVuIG1ldGFjbGFzcyBpcyBhIGNsYXNzLAorICAgICAgICAjIGJ1dCBub3QgYSBkZXNjZW5kYW50IG9mIHR5cGUuCisgICAgICAgIG5ld19jYWxscyA9IFtdICAjIHRvIGNoZWNrIHRoZSBvcmRlciBvZiBfX25ld19fIGNhbGxzCisgICAgICAgIHByZXBhcmVfY2FsbHMgPSBbXSAgIyB0byB0cmFjayBfX3ByZXBhcmVfXyBjYWxscworICAgICAgICBjbGFzcyBBTm90TWV0YToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQU5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzKToKKyAgICAgICAgICAgICAgICBwcmVwYXJlX2NhbGxzLmFwcGVuZCgnQU5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiB7fQorCisgICAgICAgIGNsYXNzIEJOb3RNZXRhKEFOb3RNZXRhKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQk5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzKToKKyAgICAgICAgICAgICAgICBwcmVwYXJlX2NhbGxzLmFwcGVuZCgnQk5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorCisgICAgICAgIEEgPSB0eXBlcy5uZXdfY2xhc3MoIkEiLCAoKSwgeyJtZXRhY2xhc3MiOiBBTm90TWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQU5vdE1ldGEsIHR5cGUoQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBCID0gdHlwZXMubmV3X2NsYXNzKCJCIiwgKCksIHsibWV0YWNsYXNzIjogQk5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChBLCBCKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEMyID0gdHlwZXMubmV3X2NsYXNzKCJDMiIsIChCLCBBKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICAjIFRoaXMgaXMgYSBUeXBlRXJyb3IsIGJlY2F1c2Ugb2YgYSBtZXRhY2xhc3MgY29uZmxpY3Q6CisgICAgICAgICMgQk5vdE1ldGEgaXMgbmVpdGhlciBhIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIHR5cGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgRCA9IHR5cGVzLm5ld19jbGFzcygiRCIsIChDLCksIHsibWV0YWNsYXNzIjogdHlwZX0pCisKKyAgICAgICAgRSA9IHR5cGVzLm5ld19jbGFzcygiRSIsIChDLCksIHsibWV0YWNsYXNzIjogQU5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgRiA9IHR5cGVzLm5ld19jbGFzcygiRiIsIChvYmplY3QoKSwgQykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBGMiA9IHR5cGVzLm5ld19jbGFzcygiRjIiLCAoQywgb2JqZWN0KCkpKQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgICMgVHlwZUVycm9yOiBCTm90TWV0YSBpcyBuZWl0aGVyIGEKKyAgICAgICAgIyBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiBpbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgWCA9IHR5cGVzLm5ld19jbGFzcygiWCIsIChDLCBpbnQoKSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQorCisKK2NsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgqKmRpY3QoeD0xLCB5PTIpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgxLCAyLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMS5fX2RpY3RfXyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczEpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obnMyLl9fZGljdF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIHsneSc6IDIsICd4JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMy5fX2RpY3RfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczMpLCB7J3knOiAyLCAneCc6IDF9KQorCisgICAgZGVmIHRlc3RfdW5ib3VuZChzZWxmKToKKyAgICAgICAgbnMxID0gdmFycyh0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKSkKKyAgICAgICAgbnMyID0gdmFycyh0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIsIHsneSc6IDIsICd4JzogMX0pCisKKyAgICBkZWYgdGVzdF91bmRlcmx5aW5nX2RpY3Qoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9MikKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGE9VHJ1ZSwgYj1GYWxzZSkKKyAgICAgICAgbWFwcGluZyA9IG5zMy5fX2RpY3RfXworICAgICAgICBkZWwgbnMzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuX19kaWN0X18sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5fX2RpY3RfXywgeyd5JzogMiwgJ3gnOiAxfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXBwaW5nLCBkaWN0KGE9VHJ1ZSwgYj1GYWxzZSkpCisKKyAgICBkZWYgdGVzdF9hdHRyZ2V0KHNlbGYpOgorICAgICAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9Miwgdz0zKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMueCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy55LCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLncsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgbnMuegorCisgICAgZGVmIHRlc3RfYXR0cnNldChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisgICAgICAgIG5zMS5hID0gJ3NwYW0nCisgICAgICAgIG5zMS5iID0gJ2hhbScKKyAgICAgICAgbnMyLnogPSA0CisgICAgICAgIG5zMi50aGV0YSA9IE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMS5fX2RpY3RfXywgZGljdChhPSdzcGFtJywgYj0naGFtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLl9fZGljdF9fLCBkaWN0KHg9MSwgeT0yLCB3PTMsIHo9NCwgdGhldGE9Tm9uZSkpCisKKyAgICBkZWYgdGVzdF9hdHRyZGVsKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCBuczEuc3BhbQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCBuczIuc3BhbQorCisgICAgICAgIGRlbCBuczIueQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSkpCisgICAgICAgIG5zMi55ID0gJ3NwYW0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCBkaWN0KHc9MywgeD0xLCB5PSdzcGFtJykpCisgICAgICAgIGRlbCBuczIueQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSkpCisKKyAgICAgICAgbnMxLnNwYW0gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczEpLCBkaWN0KHNwYW09NSkpCisgICAgICAgIGRlbCBuczEuc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwge30pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyLnggPSAic3BhbSIKKyAgICAgICAgbnMyLl95ID0gNQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczEpLCAibmFtZXNwYWNlKHc9MywgeD0xLCB5PTIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMiksICJuYW1lc3BhY2UoX3k9NSwgeD0nc3BhbScpIikKKworICAgIGRlZiB0ZXN0X25lc3RlZChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGE9MSwgYj0yKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD1uczEpCisgICAgICAgIG5zMi5zcGFtID0gbnMxCisgICAgICAgIG5zMi5oYW0gPSAnPycKKyAgICAgICAgbnMyLnNwYW0gPSBuczMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwgZGljdChhPTEsIGI9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCBkaWN0KHNwYW09bnMzLCBoYW09Jz8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuc3BhbSwgbnMzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMzKSwgZGljdCh4PW5zMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMzLnguYSwgMSkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGM9J2Nvb2tpZScpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEpCisgICAgICAgIG5zMS5zcGFtID0gbnMxCisgICAgICAgIG5zMi5zcGFtID0gbnMzCisgICAgICAgIG5zMy5zcGFtID0gbnMyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbSwgbnMxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMS5zcGFtLnNwYW0sIG5zMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbS5zcGFtLCBuczEuc3BhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuc3BhbSwgbnMzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMy5zcGFtLCBuczIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0uc3BhbSwgbnMyKQorCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3JlcHIoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShjPSdjb29raWUnKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xKQorICAgICAgICBuczEuc3BhbSA9IG5zMQorICAgICAgICBuczIuc3BhbSA9IG5zMworICAgICAgICBuczMuc3BhbSA9IG5zMgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lc3BhY2UoYz0nY29va2llJywgc3BhbT1uYW1lc3BhY2UoLi4uKSkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZXNwYWNlKHNwYW09bmFtZXNwYWNlKHNwYW09bmFtZXNwYWNlKC4uLiksIHg9MSkpIikKKworICAgIGRlZiB0ZXN0X2FzX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHNwYW09J3NwYW1zcGFtc3BhbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbGVuKG5zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpdGVyKG5zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAnc3BhbScgaW4gbnMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbnNbJ3NwYW0nXQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFNwYW0odHlwZXMuU2ltcGxlTmFtZXNwYWNlKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzcGFtID0gU3BhbShoYW09OCwgZWdncz05KQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShzcGFtKSwgU3BhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKHNwYW0pLCB7J2hhbSc6IDgsICdlZ2dzJzogOX0pCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUeXBlc1Rlc3RzKQorICAgIHJ1bl91bml0dGVzdChUeXBlc1Rlc3RzLCBNYXBwaW5nUHJveHlUZXN0cywgQ2xhc3NDcmVhdGlvblRlc3RzLAorICAgICAgICAgICAgICAgICBTaW1wbGVOYW1lc3BhY2VUZXN0cykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91Y24ucHkgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQppbmRleCBmZDYyMGYwLi42OGEzMjE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Vjbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQpAQCAtOCw4ICs4LDExIEBACiAiIiIjIgogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bmljb2RlZGF0YQogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gaHR0cC5jbGllbnQgaW1wb3J0IEhUVFBFeGNlcHRpb24KK2Zyb20gdGVzdC50ZXN0X25vcm1hbGl6YXRpb24gaW1wb3J0IGNoZWNrX3ZlcnNpb24KIAogY2xhc3MgVW5pY29kZU5hbWVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU5LDggKzYyLDYgQEAKICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfYXNjaWlfbGV0dGVycyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCi0KICAgICAgICAgZm9yIGNoYXIgaW4gIiIuam9pbihtYXAoY2hyLCByYW5nZShvcmQoImEiKSwgb3JkKCJ6IikpKSk6CiAgICAgICAgICAgICBuYW1lID0gIkxBVElOIFNNQUxMIExFVFRFUiAlcyIgJSBjaGFyLnVwcGVyKCkKICAgICAgICAgICAgIGNvZGUgPSB1bmljb2RlZGF0YS5sb29rdXAobmFtZSkKQEAgLTgxLDcgKzgyLDYgQEAKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiSEFOR1VMIFNZTExBQkxFIEhXRU9LIiwgIlx1ZDZmOCIpCiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTkdVTCBTWUxMQUJMRSBISUgiLCAiXHVkN2EzIikKIAotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdW5pY29kZWRhdGEubmFtZSwgIlx1ZDdhNCIpCiAKICAgICBkZWYgdGVzdF9jamtfdW5pZmllZF9pZGVvZ3JhcGhzKHNlbGYpOgpAQCAtOTcsMTQgKzk3LDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkNKSyBVTklGSUVEIElERU9HUkFQSC0yQjgxRCIsICJcVTAwMDJCODFEIikKIAogICAgIGRlZiB0ZXN0X2JtcF9jaGFyYWN0ZXJzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKLSAgICAgICAgY291bnQgPSAwCiAgICAgICAgIGZvciBjb2RlIGluIHJhbmdlKDB4MTAwMDApOgogICAgICAgICAgICAgY2hhciA9IGNocihjb2RlKQogICAgICAgICAgICAgbmFtZSA9IHVuaWNvZGVkYXRhLm5hbWUoY2hhciwgTm9uZSkKICAgICAgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAobmFtZSksIGNoYXIpCi0gICAgICAgICAgICAgICAgY291bnQgKz0gMQogCiAgICAgZGVmIHRlc3RfbWlzY19zeW1ib2xzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJQSUxDUk9XIFNJR04iLCAiXHUwMGI2IikKQEAgLTExMiw4ICsxMDksODUgQEAKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiSEFMRldJRFRIIEtBVEFLQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUksiLCAiXHVGRjlGIikKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBBIiwgIlx1RkY0MSIpCiAKKyAgICBkZWYgdGVzdF9hbGlhc2VzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGFsaWFzZXMgZGVmaW5lZCBpbiB0aGUgTmFtZUFsaWFzZXMudHh0IGZpbGUgd29yay4KKyAgICAgICAgIyBUaGlzIHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gbmV3IGFsaWFzZXMgYXJlIGFkZGVkIG9yIHRoZSBmaWxlCisgICAgICAgICMgc2hvdWxkIGJlIGRvd25sb2FkZWQgYW5kIHBhcnNlZCBpbnN0ZWFkLiAgU2VlICMxMjc1My4KKyAgICAgICAgYWxpYXNlcyA9IFsKKyAgICAgICAgICAgICgnTEFUSU4gQ0FQSVRBTCBMRVRURVIgR0hBJywgMHgwMUEyKSwKKyAgICAgICAgICAgICgnTEFUSU4gU01BTEwgTEVUVEVSIEdIQScsIDB4MDFBMyksCisgICAgICAgICAgICAoJ0tBTk5BREEgTEVUVEVSIExMTEEnLCAweDBDREUpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIEZPIEZPTicsIDB4MEU5RCksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgRk8gRkFZJywgMHgwRTlGKSwKKyAgICAgICAgICAgICgnTEFPIExFVFRFUiBSTycsIDB4MEVBMyksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgTE8nLCAweDBFQTUpLAorICAgICAgICAgICAgKCdUSUJFVEFOIE1BUksgQktBLSBTSE9HIEdJIE1HTyBSR1lBTicsIDB4MEZEMCksCisgICAgICAgICAgICAoJ1lJIFNZTExBQkxFIElURVJBVElPTiBNQVJLJywgMHhBMDE1KSwKKyAgICAgICAgICAgICgnUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVCcsIDB4RkUxOCksCisgICAgICAgICAgICAoJ0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgU0tMSVJPTiBDSFJPTUEgVkFTSVMnLCAweDFEMEM1KQorICAgICAgICBdCisgICAgICAgIGZvciBhbGlhcywgY29kZXBvaW50IGluIGFsaWFzZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKGFsaWFzLCBjaHIoY29kZXBvaW50KSkKKyAgICAgICAgICAgIG5hbWUgPSB1bmljb2RlZGF0YS5uYW1lKGNocihjb2RlcG9pbnQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuYW1lLCBhbGlhcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKGFsaWFzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEubG9va3VwKG5hbWUpKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudWNkXzNfMl8wLmxvb2t1cChhbGlhcykKKworICAgIGRlZiB0ZXN0X2FsaWFzZXNfbmFtZXNfaW5fcHVhX3JhbmdlKHNlbGYpOgorICAgICAgICAjIFdlIGFyZSBzdG9yaW5nIGFsaWFzZXMgaW4gdGhlIFBVQSAxNSwgYnV0IHRoZWlyIG5hbWVzIHNob3VsZG4ndCBsZWFrCisgICAgICAgIGZvciBjcCBpbiByYW5nZSgweGYwMDAwLCAweGYwMTAwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEubmFtZShjaHIoY3ApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgJ25vIHN1Y2ggbmFtZScpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfbmFtZXNfaW5fcHVhX3JhbmdlKHNlbGYpOgorICAgICAgICAjIFdlIGFyZSBzdG9yaW5nIG5hbWVkIHNlcSBpbiB0aGUgUFVBIDE1LCBidXQgdGhlaXIgbmFtZXMgc2hvdWxkbid0IGxlYWsKKyAgICAgICAgZm9yIGNwIGluIHJhbmdlKDB4ZjAxMDAsIDB4ZjBmZmYpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS5uYW1lKGNocihjcCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAnbm8gc3VjaCBuYW1lJykKKworICAgIGRlZiB0ZXN0X25hbWVkX3NlcXVlbmNlc19zYW1wbGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgYSBmZXcgbmFtZWQgc2VxdWVuY2VzLiAgU2VlICMxMjc1My4KKyAgICAgICAgc2VxdWVuY2VzID0gWworICAgICAgICAgICAgKCdMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIFRJTERFJywgJ1x1MDA3Mlx1MDMwMycpLAorICAgICAgICAgICAgKCdUQU1JTCBTWUxMQUJMRSBTQUknLCAnXHUwQkI4XHUwQkM4JyksCisgICAgICAgICAgICAoJ1RBTUlMIFNZTExBQkxFIE1PTycsICdcdTBCQUVcdTBCQ0InKSwKKyAgICAgICAgICAgICgnVEFNSUwgU1lMTEFCTEUgTk5PTycsICdcdTBCQTNcdTBCQ0InKSwKKyAgICAgICAgICAgICgnVEFNSUwgQ09OU09OQU5UIEtTUycsICdcdTBCOTVcdTBCQ0RcdTBCQjdcdTBCQ0QnKSwKKyAgICAgICAgXQorICAgICAgICBmb3Igc2VxbmFtZSwgY29kZXBvaW50cyBpbiBzZXF1ZW5jZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVkYXRhLmxvb2t1cChzZXFuYW1lKSwgY29kZXBvaW50cykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoc2VxbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVjZF8zXzJfMC5sb29rdXAoc2VxbmFtZSkKKworICAgIGRlZiB0ZXN0X25hbWVkX3NlcXVlbmNlc19mdWxsKHNlbGYpOgorICAgICAgICAjIENoZWNrIGFsbCB0aGUgbmFtZWQgc2VxdWVuY2VzCisgICAgICAgIHVybCA9ICgiaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvJXMvdWNkL05hbWVkU2VxdWVuY2VzLnR4dCIgJQorICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudW5pZGF0YV92ZXJzaW9uKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0ZGF0YSA9IHN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSh1cmwsIGVuY29kaW5nPSJ1dGYtOCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjaz1jaGVja192ZXJzaW9uKQorICAgICAgICBleGNlcHQgKElPRXJyb3IsIEhUVFBFeGNlcHRpb24pOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ291bGQgbm90IHJldHJpZXZlICIgKyB1cmwpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0ZGF0YS5jbG9zZSkKKyAgICAgICAgZm9yIGxpbmUgaW4gdGVzdGRhdGE6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBub3QgbGluZSBvciBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VxbmFtZSwgY29kZXBvaW50cyA9IGxpbmUuc3BsaXQoJzsnKQorICAgICAgICAgICAgY29kZXBvaW50cyA9ICcnLmpvaW4oY2hyKGludChjcCwgMTYpKSBmb3IgY3AgaW4gY29kZXBvaW50cy5zcGxpdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAoc2VxbmFtZSksIGNvZGVwb2ludHMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKHNlcW5hbWUsIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS51Y2RfM18yXzAubG9va3VwKHNlcW5hbWUpCisKICAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6Ci0gICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdW5pY29kZWRhdGEubmFtZSwgJ3h4JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1bmljb2RlZGF0YS5sb29rdXApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKaW5kZXggMTliMDZhMC4uYjEzYTkwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQpAQCAtNSwxNyArNSwxMyBAQAogKGMpIENvcHlyaWdodCBDTlJJLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBOTyBXQVJSQU5UWS4KIAogIiIiIyIKK2ltcG9ydCBfc3RyaW5nCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzdHJpbmdfdGVzdHMKLWltcG9ydCBfc3RyaW5nCi0KLSMgZGVjb3JhdG9yIHRvIHNraXAgdGVzdHMgb24gbmFycm93IGJ1aWxkcwotcmVxdWlyZXNfd2lkZV9idWlsZCA9IHVuaXR0ZXN0LnNraXBJZihzeXMubWF4dW5pY29kZSA9PSA2NTUzNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHdpZGUgYnVpbGQnKQogCiAjIEVycm9yIGhhbmRsaW5nIChiYWQgZGVjb2RlciByZXR1cm4pCiBkZWYgc2VhcmNoX2Z1bmN0aW9uKGVuY29kaW5nKToKQEAgLTE3NSw2ICsxNzEsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2ZpbmQoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfZmluZChzZWxmKQorICAgICAgICAjIHRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgbWVtY2hyIGZhc3QgcGF0aAorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMTAwLCAnYScgKiAxMDAgKyAnXHUwMTAyJywgJ2ZpbmQnLCAnXHUwMTAyJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYScgKiAxMDAgKyAnXHUwMTAyJywgJ2ZpbmQnLCAnXHUwMjAxJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYScgKiAxMDAgKyAnXHUwMTAyJywgJ2ZpbmQnLCAnXHUwMTIwJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYScgKiAxMDAgKyAnXHUwMTAyJywgJ2ZpbmQnLCAnXHUwMjIwJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEwMCwgJ2EnICogMTAwICsgJ1xVMDAxMDAzMDQnLCAnZmluZCcsICdcVTAwMTAwMzA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYScgKiAxMDAgKyAnXFUwMDEwMDMwNCcsICdmaW5kJywgJ1xVMDAxMDAyMDQnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcVTAwMTAwMzA0JywgJ2ZpbmQnLCAnXFUwMDEwMjAwNCcpCisgICAgICAgICMgY2hlY2sgbWl4ZWQgYXJndW1lbnQgdHlwZXMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoMCwgICdhYmNkZWZnaGlhYmMnLCAnZmluZCcsICdhYmMnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCg5LCAgJ2FiY2RlZmdoaWFiYycsICdmaW5kJywgJ2FiYycsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KC0xLCAnYWJjZGVmZ2hpYWJjJywgJ2ZpbmQnLCAnZGVmJywgNCkKQEAgLTE4NCw2ICsxODksMTQgQEAKIAogICAgIGRlZiB0ZXN0X3JmaW5kKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X3JmaW5kKHNlbGYpCisgICAgICAgICMgdGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBtZW1yY2hyIGZhc3QgcGF0aAorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJ1x1MDEwMicgKyAnYScgKiAxMDAgLCAncmZpbmQnLCAnXHUwMTAyJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAyMDEnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDEyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1x1MDEwMicgKyAnYScgKiAxMDAgLCAncmZpbmQnLCAnXHUwMjIwJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICdcVTAwMTAwMzA0JyArICdhJyAqIDEwMCwgJ3JmaW5kJywgJ1xVMDAxMDAzMDQnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcVTAwMTAwMzA0JyArICdhJyAqIDEwMCwgJ3JmaW5kJywgJ1xVMDAxMDAyMDQnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcVTAwMTAwMzA0JyArICdhJyAqIDEwMCwgJ3JmaW5kJywgJ1xVMDAxMDIwMDQnKQogICAgICAgICAjIGNoZWNrIG1peGVkIGFyZ3VtZW50IHR5cGVzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDksICAgJ2FiY2RlZmdoaWFiYycsICdyZmluZCcsICdhYmMnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgxMiwgICdhYmNkZWZnaGlhYmMnLCAncmZpbmQnLCAnJykKQEAgLTI4MCw2ICsyOTMsMTIgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoJ29uZUB0d28hdGhyZWUhJywgJ29uZSF0d28hdGhyZWUhJywgJ3JlcGxhY2UnLCAnIScsICdAJywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAncmVwbGFjZScucmVwbGFjZSwgInIiLCA0MikKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3JlcGxhY2VfaWQoc2VsZik6CisgICAgICAgIHBhdHRlcm4gPSAnYWJjJworICAgICAgICB0ZXh0ID0gJ2FiYyBkZWYnCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dC5yZXBsYWNlKHBhdHRlcm4sIHBhdHRlcm4pLCB0ZXh0KQorCiAgICAgZGVmIHRlc3RfYnl0ZXNfY29tcGFyaXNvbihzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIEJ5dGVzV2FybmluZykKQEAgLTM1MCw2ICszNjksOCBAQAogICAgIGRlZiB0ZXN0X2lzbG93ZXIoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVVc2VyU3RyaW5nVGVzdC50ZXN0X2lzbG93ZXIoc2VsZikKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoRmFsc2UsICdcdTFGRmMnLCAnaXNsb3dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ1x1MjE2NycuaXNsb3dlcigpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1x1MjE3NycuaXNsb3dlcigpKQogICAgICAgICAjIG5vbi1CTVAsIHVwcGVyY2FzZQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcVTAwMDEwNDAxJy5pc2xvd2VyKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ1xVMDAwMTA0MjcnLmlzbG93ZXIoKSkKQEAgLTM2NCw2ICszODUsOCBAQAogICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVXNlclN0cmluZ1Rlc3QudGVzdF9pc3VwcGVyKHNlbGYpCiAgICAgICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpOgogICAgICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoRmFsc2UsICdcdTFGRmMnLCAnaXN1cHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXHUyMTY3Jy5pc3VwcGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ1x1MjE3NycuaXN1cHBlcigpKQogICAgICAgICAjIG5vbi1CTVAsIHVwcGVyY2FzZQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1xVMDAwMTA0MDEnLmlzdXBwZXIoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcVTAwMDEwNDI3Jy5pc3VwcGVyKCkpCkBAIC01MjAsNyArNTQzLDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1ldGgocyksICclYS4lcygpIGlzIEZhbHNlJyAlIChzLCBtZXRoX25hbWUpKQogCiAKLSAgICBAcmVxdWlyZXNfd2lkZV9idWlsZAogICAgIGRlZiB0ZXN0X2xvd2VyKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X2xvd2VyKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0MjcnLmxvd2VyKCksICdcVTAwMDEwNDRGJykKQEAgLTUzMCw4ICs1NTIsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQ0RlxVMDAwMTA0NEYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGJy5sb3dlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4XFUwMDAxMDQ0RnhcVTAwMDEwNDRGJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBJy5sb3dlcigpLCAn76yBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMTMwJy5sb3dlcigpLCAnXHUwMDY5XHUwMzA3JykKKyAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BIFUrMDNBMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTMnLmxvd2VyKCksICdcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzNDVcdTAzYTMnLmxvd2VyKCksICdcdTAzNDVcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5sb3dlcigpLCAnYVx1MDM0NVx1MDNjMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTNhJy5sb3dlcigpLCAnYVx1MDM0NVx1MDNjM2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5sb3dlcigpLCAnYVx1MDM0NVx1MDNjMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzYTNcdTAzNDUnLmxvd2VyKCksICdhXHUwM2MyXHUwMzQ1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzXHUwMzQ1ICcubG93ZXIoKSwgJ1x1MDNjM1x1MDM0NSAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDhmZmZlJy5sb3dlcigpLCAnXFUwMDA4ZmZmZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MjE3NycubG93ZXIoKSwgJ1x1MjE3NycpCiAKLSAgICBAcmVxdWlyZXNfd2lkZV9idWlsZAorICAgIGRlZiB0ZXN0X2Nhc2Vmb2xkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuY2FzZWZvbGQoKSwgJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaEVMbG8nLmNhc2Vmb2xkKCksICdoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ8OfJy5jYXNlZm9sZCgpLCAnc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLmNhc2Vmb2xkKCksICdmaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycuY2FzZWZvbGQoKSwgJ1x1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmNhc2Vmb2xkKCksICdhXHUwM2I5XHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMGI1Jy5jYXNlZm9sZCgpLCAnXHUwM2JjJykKKwogICAgIGRlZiB0ZXN0X3VwcGVyKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X3VwcGVyKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLnVwcGVyKCksICdcVTAwMDEwNDI3JykKQEAgLTU0MSw4ICs1ODMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQyN1xVMDAwMTA0MjcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGJy51cHBlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdYXFUwMDAxMDQyN1hcVTAwMDEwNDI3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBJy51cHBlcigpLCAnRkknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAxMzAnLnVwcGVyKCksICdcdTAxMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTMnLnVwcGVyKCksICdcdTAzYTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfDnycudXBwZXIoKSwgJ1NTJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUxZmQyJy51cHBlcigpLCAnXHUwMzk5XHUwMzA4XHUwMzAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDA4ZmZmZScudXBwZXIoKSwgJ1xVMDAwOGZmZmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTIxNzcnLnVwcGVyKCksICdcdTIxNjcnKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X2NhcGl0YWxpemUoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0RicuY2FwaXRhbGl6ZSgpLCAnXFUwMDAxMDQyNycpCkBAIC01NTQsOCArNjAyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0MjdcVTAwMDEwNDRGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicuY2FwaXRhbGl6ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdYXFUwMDAxMDQ0RnhcVTAwMDEwNDRGJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaFx1MDEzMCcuY2FwaXRhbGl6ZSgpLCAnSFx1MDA2OVx1MDMwNycpCisgICAgICAgIGV4cCA9ICdcdTAzOTlcdTAzMDhcdTAzMDBcdTAwNjlcdTAzMDcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MWZkMlx1MDEzMCcuY2FwaXRhbGl6ZSgpLCBleHApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgW5uaXNoJy5jYXBpdGFsaXplKCksICdGSW5uaXNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuY2FwaXRhbGl6ZSgpLCAnQVx1MDM0NVx1MDNjMicpCiAKLSAgICBAcmVxdWlyZXNfd2lkZV9idWlsZAogICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVXNlclN0cmluZ1Rlc3QudGVzdF90aXRsZShzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDRGJy50aXRsZSgpLCAnXFUwMDAxMDQyNycpCkBAIC01NjksOCArNjIxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0MjdcVTAwMDEwNDRGIFxVMDAwMTA0MjdcVTAwMDEwNDRGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RiBYXFUwMDAxMDQyN3hcVTAwMDEwNDRGJy50aXRsZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdYXFUwMDAxMDQ0RnhcVTAwMDEwNDRGIFhcVTAwMDEwNDRGeFxVMDAwMTA0NEYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIFOTklTSCcudGl0bGUoKSwgJ0Zpbm5pc2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzIFx1MWZhMXh5Jy50aXRsZSgpLCAnQVx1MDNjMiBcdTFmYTl4eScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzYTNBJy50aXRsZSgpLCAnQVx1MDNjM2EnKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9zd2FwY2FzZShzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDRGJy5zd2FwY2FzZSgpLCAnXFUwMDAxMDQyNycpCkBAIC01ODMsNiArNjM3LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0MjdcVTAwMDEwNDRGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0Ricuc3dhcGNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneFxVMDAwMTA0NEZYXFUwMDAxMDQyNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScuc3dhcGNhc2UoKSwgJ0ZJJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMTMwJy5zd2FwY2FzZSgpLCAnXHUwMDY5XHUwMzA3JykKKyAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIEdSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BIFUrMDNBMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTMnLnN3YXBjYXNlKCksICdcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzNDVcdTAzYTMnLnN3YXBjYXNlKCksICdcdTAzOTlcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5zd2FwY2FzZSgpLCAnYVx1MDM5OVx1MDNjMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTNhJy5zd2FwY2FzZSgpLCAnYVx1MDM5OVx1MDNjM0EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5zd2FwY2FzZSgpLCAnYVx1MDM5OVx1MDNjMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzYTNcdTAzNDUnLnN3YXBjYXNlKCksICdhXHUwM2MyXHUwMzk5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzXHUwMzQ1ICcuc3dhcGNhc2UoKSwgJ1x1MDNjM1x1MDM5OSAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTMnLnN3YXBjYXNlKCksICdcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfDnycuc3dhcGNhc2UoKSwgJ1NTJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUxZmQyJy5zd2FwY2FzZSgpLCAnXHUwMzk5XHUwMzA4XHUwMzAwJykKIAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgVW5pY29kZSBjb250YWlucyBtZXRob2QKQEAgLTc3Niw3ICs4NDMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7MCFzfScuZm9ybWF0KEcoJ2RhdGEnKSksICdzdHJpbmcgaXMgZGF0YScpCiAKICAgICAgICAgbXNnID0gJ29iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZyBpcyBkZXByZWNhdGVkJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKG1zZywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7MDpeMTB9Jy5mb3JtYXQoRSgnZGF0YScpKSwgJyBFKGRhdGEpICAnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6XjEwc30nLmZvcm1hdChFKCdkYXRhJykpLCAnIEUoZGF0YSkgICcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7MDo+MTVzfScuZm9ybWF0KEcoJ2RhdGEnKSksICcgc3RyaW5nIGlzIGRhdGEnKQpAQCAtODU4LDYgKzkyNSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsICcnLCAnIycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgJycsICcjMjAnKQogCisgICAgICAgICMgTm9uLUFTQ0lJCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInswOnN9ezE6c30iLmZvcm1hdCgiQUJDIiwgIlx1MDQxMFx1MDQxMVx1MDQxMiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdBQkNcdTA0MTBcdTA0MTFcdTA0MTInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7MDouM3N9Ii5mb3JtYXQoIkFCQ1x1MDQxMFx1MDQxMVx1MDQxMiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdBQkMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7MDouMHN9Ii5mb3JtYXQoIkFCQ1x1MDQxMFx1MDQxMVx1MDQxMiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCiAgICAgZGVmIHRlc3RfZm9ybWF0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXRfbWFwKHt9KSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2EnLmZvcm1hdF9tYXAoe30pLCAnYScpCkBAIC05OTAsNiArMTA2NSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclZicgJSBJTkYsICdpbmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclRicgJSBJTkYsICdJTkYnKQogCisgICAgICAgICMgUEVQIDM5MworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclLjFzJyAlICJhXHhlOVx1MjBhYyIsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJS4ycycgJSAiYVx4ZTlcdTIwYWMiLCAnYVx4ZTknKQorCiAgICAgZGVmIHRlc3Rfc3RhcnRzd2l0aF9lbmRzd2l0aF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGZvciBtZXRoIGluICgnZm9vJy5zdGFydHN3aXRoLCAnZm9vJy5lbmRzd2l0aCk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CkBAIC0xMDE0LDEwICsxMDkzLDEzIEBACiAgICAgICAgIGNsYXNzIFVuaWNvZGVTdWJjbGFzcyhzdHIpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzdHIoVW5pY29kZVN1YmNsYXNzKCd1bmljb2RlIHN1YmNsYXNzIGJlY29tZXMgdW5pY29kZScpKSwKLSAgICAgICAgICAgICd1bmljb2RlIHN1YmNsYXNzIGJlY29tZXMgdW5pY29kZScKLSAgICAgICAgKQorICAgICAgICBmb3IgdGV4dCBpbiAoJ2FzY2lpJywgJ1x4ZTknLCAnXHUyMGFjJywgJ1xVMDAxMEZGRkYnKToKKyAgICAgICAgICAgIHN1YmNsYXNzID0gVW5pY29kZVN1YmNsYXNzKHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzdWJjbGFzcyksIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdWJjbGFzcyksIGxlbih0ZXh0KSkKKyAgICAgICAgICAgIGlmIHRleHQgPT0gJ2FzY2lpJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1YmNsYXNzLmVuY29kZSgnYXNjaWknKSwgYidhc2NpaScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJjbGFzcy5lbmNvZGUoJ3V0Zi04JyksIGInYXNjaWknKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBzdHIoJ3N0cmluZ3MgYXJlIGNvbnZlcnRlZCB0byB1bmljb2RlJyksCkBAIC0xMTIzLDE1ICsxMjA1LDEyIEBACiAgICAgZGVmIHRlc3RfY29kZWNzX3V0Zjgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZW5jb2RlKCd1dGYtOCcpLCBiJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MjBhYycuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZTJceDgyXHhhYycpCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHVkODAwXHVkYzAyJy5lbmNvZGUoJ3V0Zi04JyksIGInXHhmMFx4OTBceDgwXHg4MicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWQ4NGRcdWRjNTYnLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHhhM1x4OTFceDk2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDAwMicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceDkwXHg4MFx4ODInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDIzNDU2Jy5lbmNvZGUoJ3V0Zi04JyksIGInXHhmMFx4YTNceDkxXHg5NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZDgwMCcuZW5jb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVwYXNzJyksIGInXHhlZFx4YTBceDgwJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHVkYzAwJy5lbmNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZXBhc3MnKSwgYidceGVkXHhiMFx4ODAnKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgKCdcdWQ4MDBcdWRjMDInKjEwMDApLmVuY29kZSgndXRmLTgnKSwKLSAgICAgICAgICAgICAgICBiJ1x4ZjBceDkwXHg4MFx4ODInKjEwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdcVTAwMDEwMDAyJyoxMCkuZW5jb2RlKCd1dGYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmMFx4OTBceDgwXHg4MicqMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAnXHU2YjYzXHU3OGJhXHUzMDZiXHU4YTAwXHUzMDQ2XHUzMDY4XHU3ZmZiXHU4YTMzXHUzMDZmJwogICAgICAgICAgICAgJ1x1MzA1NVx1MzA4Y1x1MzA2Nlx1MzA0NFx1MzA3ZVx1MzA1Ylx1MzA5M1x1MzAwMlx1NGUwMCcKQEAgLTEzNDQsMTQgKzE0MjMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN0ciwgYiJoZWxsbyIsICJ0ZXN0LnVuaWNvZGUyIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiaGVsbG8iLmVuY29kZSwgInRlc3QudW5pY29kZTEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJoZWxsbyIuZW5jb2RlLCAidGVzdC51bmljb2RlMiIpCi0gICAgICAgICMgZXhlY3V0ZXMgUHlVbmljb2RlX0VuY29kZSgpCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBJbXBvcnRFcnJvciwKLSAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSwKLSAgICAgICAgICAgICJub24tZXhpc3RpbmcgbW9kdWxlIiwKLSAgICAgICAgICAgIFsibm9uLWV4aXN0aW5nIGRpciJdCi0gICAgICAgICkKIAogICAgICAgICAjIEVycm9yIGhhbmRsaW5nICh3cm9uZyBhcmd1bWVudHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgImhlbGxvIi5lbmNvZGUsIDQyLCA0MiwgNDIpCkBAIC0xMzY5LDE4ICsxNDQwLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ2FzY2lpJyksIGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtNycpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTgnKSwgYidoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0ZjgnKSwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi04JyksIGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtMTYtbGUnKSwgYidoXDAwMGVcMDAwbFwwMDBsXDAwMG9cMDAwJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTE2LWJlJyksIGInXDAwMGhcMDAwZVwwMDBsXDAwMGxcMDAwbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ2xhdGluLTEnKSwgYidoZWxsbycpCiAKKyAgICAgICAgIyBEZWZhdWx0IGVuY29kaW5nIGlzIHV0Zi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MjYwMycuZW5jb2RlKCksIGInXHhlMlx4OThceDgzJykKKwogICAgICAgICAjIFJvdW5kdHJpcCBzYWZldHkgZm9yIEJNUCAoanVzdCB0aGUgZmlyc3QgMTAyNCBjaGFycykKICAgICAgICAgZm9yIGMgaW4gcmFuZ2UoMTAyNCk6CiAgICAgICAgICAgICB1ID0gY2hyKGMpCiAgICAgICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCd1dGYtNycsICd1dGYtOCcsICd1dGYtMTYnLCAndXRmLTE2LWxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3V0Zi0xNi1iZScsICdyYXdfdW5pY29kZV9lc2NhcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pY29kZV9lc2NhcGUnLCAndW5pY29kZV9pbnRlcm5hbCcpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQogCiAgICAgICAgICMgUm91bmR0cmlwIHNhZmV0eSBmb3IgQk1QIChqdXN0IHRoZSBmaXJzdCAyNTYgY2hhcnMpCiAgICAgICAgIGZvciBjIGluIHJhbmdlKDI1Nik6CkBAIC0xMzk1LDE4ICsxNDczLDIwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIAogICAgICAgICAjIFJvdW5kdHJpcCBzYWZldHkgZm9yIG5vbi1CTVAgKGp1c3QgYSBmZXcgY2hhcnMpCi0gICAgICAgIHUgPSAnXFUwMDAxMDAwMVxVMDAwMjAwMDJcVTAwMDMwMDAzXFUwMDA0MDAwNFxVMDAwNTAwMDUnCi0gICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywgJ3V0Zi0xNicsICd1dGYtMTYtbGUnLCAndXRmLTE2LWJlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAjJ3Jhd191bmljb2RlX2VzY2FwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVfZXNjYXBlJywgJ3VuaWNvZGVfaW50ZXJuYWwnKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAotICAgICAgICAjIFVURi04IG11c3QgYmUgcm91bmR0cmlwIHNhZmUgZm9yIGFsbCBVQ1MtMiBjb2RlIHBvaW50cwotICAgICAgICAjIFRoaXMgZXhjbHVkZXMgc3Vycm9nYXRlczogaW4gdGhlIGZ1bGwgcmFuZ2UsIHRoZXJlIHdvdWxkIGJlCi0gICAgICAgICMgYSBzdXJyb2dhdGUgcGFpciAoXHVkYmZmXHVkYzAwKSwgd2hpY2ggZ2V0cyBjb252ZXJ0ZWQgYmFjawotICAgICAgICAjIHRvIGEgbm9uLUJNUCBjaGFyYWN0ZXIgKFxVMDAxMGZjMDApCi0gICAgICAgIHUgPSAnJy5qb2luKG1hcChjaHIsIGxpc3QocmFuZ2UoMCwweGQ4MDApKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoMHhlMDAwLDB4MTAwMDApKSkpCisgICAgICAgICAgICB1ID0gJ1xVMDAwMTAwMDFcVTAwMDIwMDAyXFUwMDAzMDAwM1xVMDAwNDAwMDRcVTAwMDUwMDA1JworICAgICAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTgnLCAndXRmLTE2JywgJ3V0Zi0xNi1sZScsICd1dGYtMTYtYmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmF3X3VuaWNvZGVfZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVfZXNjYXBlJywgJ3VuaWNvZGVfaW50ZXJuYWwnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorCisgICAgICAgICMgVVRGLTggbXVzdCBiZSByb3VuZHRyaXAgc2FmZSBmb3IgYWxsIGNvZGUgcG9pbnRzCisgICAgICAgICMgKGV4Y2VwdCBzdXJyb2dhdGVzLCB3aGljaCBhcmUgZm9yYmlkZGVuKS4KKyAgICAgICAgdSA9ICcnLmpvaW4obWFwKGNociwgbGlzdChyYW5nZSgwLCAweGQ4MDApKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoMHhlMDAwLCAweDExMDAwMCkpKSkKICAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTgnLCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQogCkBAIC0xNTkxLDE3ICsxNjcxLDM5IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgJ3RcdHRcdCcuZXhwYW5kdGFicywgc3lzLm1heHNpemUpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9leHBhbmR0YWJzX29wdGltaXphdGlvbihzZWxmKToKKyAgICAgICAgcyA9ICdhYmMnCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocy5leHBhbmR0YWJzKCksIHMpCisKICAgICBkZWYgdGVzdF9yYWlzZU1lbUVycm9yKHNlbGYpOgotICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBmcmVlbGlzdCBjb250YWlucyBhIGNvbnNpc3RlbnQgb2JqZWN0LCBldmVuCi0gICAgICAgICMgd2hlbiBhIHN0cmluZyBhbGxvY2F0aW9uIGZhaWxzIHdpdGggYSBNZW1vcnlFcnJvci4KLSAgICAgICAgIyBUaGlzIHVzZWQgdG8gY3Jhc2ggdGhlIGludGVycHJldGVyLAotICAgICAgICAjIG9yIGxlYWsgcmVmZXJlbmNlcyB3aGVuIHRoZSBudW1iZXIgd2FzIHNtYWxsZXIuCi0gICAgICAgIGNoYXJ3aWR0aCA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPj0gMHgxMDAwMCBlbHNlIDIKLSAgICAgICAgIyBOb3RlOiBzeXMubWF4c2l6ZSBpcyBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4IGFsbG9jYXRpb24gYmVjYXVzZSBvZgotICAgICAgICAjIHRoZSBzaWduZWRuZXNzIG9mIFB5X3NzaXplX3QuCi0gICAgICAgIGFsbG9jID0gbGFtYmRhOiAiYSIgKiAoc3lzLm1heHNpemUgLy8gY2hhcndpZHRoICogMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNZW1vcnlFcnJvciwgYWxsb2MpCisgICAgICAgIGlmIHN0cnVjdC5jYWxjc2l6ZSgnUCcpID09IDg6CisgICAgICAgICAgICAjIDY0IGJpdHMgcG9pbnRlcnMKKyAgICAgICAgICAgIGFzY2lpX3N0cnVjdF9zaXplID0gNDgKKyAgICAgICAgICAgIGNvbXBhY3Rfc3RydWN0X3NpemUgPSA3MgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyAzMiBiaXRzIHBvaW50ZXJzCisgICAgICAgICAgICBhc2NpaV9zdHJ1Y3Rfc2l6ZSA9IDI0CisgICAgICAgICAgICBjb21wYWN0X3N0cnVjdF9zaXplID0gMzYKKworICAgICAgICBmb3IgY2hhciBpbiAoJ2EnLCAnXHhlOScsICdcdTIwYWMnLCAnXFUwMDEwZmZmZicpOgorICAgICAgICAgICAgY29kZSA9IG9yZChjaGFyKQorICAgICAgICAgICAgaWYgY29kZSA8IDB4MTAwOgorICAgICAgICAgICAgICAgIGNoYXJfc2l6ZSA9IDEgICMgc2l6ZW9mKFB5X1VDUzEpCisgICAgICAgICAgICAgICAgc3RydWN0X3NpemUgPSBhc2NpaV9zdHJ1Y3Rfc2l6ZQorICAgICAgICAgICAgZWxpZiBjb2RlIDwgMHgxMDAwMDoKKyAgICAgICAgICAgICAgICBjaGFyX3NpemUgPSAyICAjIHNpemVvZihQeV9VQ1MyKQorICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplID0gY29tcGFjdF9zdHJ1Y3Rfc2l6ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjaGFyX3NpemUgPSA0ICAjIHNpemVvZihQeV9VQ1M0KQorICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplID0gY29tcGFjdF9zdHJ1Y3Rfc2l6ZQorICAgICAgICAgICAgIyBOb3RlOiBzeXMubWF4c2l6ZSBpcyBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4IGFsbG9jYXRpb24gYmVjYXVzZSBvZgorICAgICAgICAgICAgIyB0aGUgc2lnbmVkbmVzcyBvZiBQeV9zc2l6ZV90LiBTdHJpbmdzIG9mIG1heGxlbi0xIHNob3VsZCBpbiBwcmluY2lwbGUKKyAgICAgICAgICAgICMgYmUgYWxsb2NhdGFibGUsIGdpdmVuIGVub3VnaCBtZW1vcnkuCisgICAgICAgICAgICBtYXhsZW4gPSAoKHN5cy5tYXhzaXplIC0gc3RydWN0X3NpemUpIC8vIGNoYXJfc2l6ZSkKKyAgICAgICAgICAgIGFsbG9jID0gbGFtYmRhOiBjaGFyICogbWF4bGVuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNZW1vcnlFcnJvciwgYWxsb2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNZW1vcnlFcnJvciwgYWxsb2MpCiAKICAgICBkZWYgdGVzdF9mb3JtYXRfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIFMoc3RyKToKQEAgLTE2MTQsMTEgKzE3MTYsMTAgQEAKICAgICAjIFRlc3QgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKQogICAgIGRlZiB0ZXN0X2Zyb21fZm9ybWF0KHNlbGYpOgogICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCi0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBweXRob25hcGksIHB5X29iamVjdCwgY19pbnQKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBuYW1lID0gIlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5hbWUgPSAiUHlVbmljb2RlVUNTNF9Gcm9tRm9ybWF0IgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgKHB5dGhvbmFwaSwgcHlfb2JqZWN0LAorICAgICAgICAgICAgY19pbnQsIGNfbG9uZywgY19sb25nbG9uZywgY19zc2l6ZV90LAorICAgICAgICAgICAgY191aW50LCBjX3Vsb25nLCBjX3Vsb25nbG9uZywgY19zaXplX3QpCisgICAgICAgIG5hbWUgPSAiUHlVbmljb2RlX0Zyb21Gb3JtYXQiCiAgICAgICAgIF9QeVVuaWNvZGVfRnJvbUZvcm1hdCA9IGdldGF0dHIocHl0aG9uYXBpLCBuYW1lKQogICAgICAgICBfUHlVbmljb2RlX0Zyb21Gb3JtYXQucmVzdHlwZSA9IHB5X29iamVjdAogCkBAIC0xNjM5LDEzICsxNzQwLDQwIEBACiAgICAgICAgICAgICAnc3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHhlOSQnLAogICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Gb3JtYXQsIGIndW5pY29kZVx4ZTk9JXMnLCAnYXNjaWknKQogCisgICAgICAgICMgdGVzdCAiJWMiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclYycsIGNfaW50KDB4YWJjZCkpLCAnXHVhYmNkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVjJywgY19pbnQoMHgxMGZmZmYpKSwgJ1xVMDAxMGZmZmYnKQogCi0gICAgICAgICMgb3RoZXIgdGVzdHMKKyAgICAgICAgIyB0ZXN0ICIlIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJScpLCAnJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJScpLCAnJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJXMnKSwgJyVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJ1slJV0nKSwgJ1slXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJSVzJywgYidhYmMnKSwgJyVhYmMnKQorCisgICAgICAgICMgdGVzdCBpbnRlZ2VyIGZvcm1hdHMgKCVpLCAlZCwgJXUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMDNpJywgY19pbnQoMTApKSwgJzAxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMC40aScsIGNfaW50KDEwKSksICcwMDEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVpJywgY19pbnQoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGknLCBjX2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGxpJywgY19sb25nbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV6aScsIGNfc3NpemVfdCgtMTIzKSksICctMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWQnLCBjX2ludCgtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsZCcsIGNfbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsbGQnLCBjX2xvbmdsb25nKC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXpkJywgY19zc2l6ZV90KC0xMjMpKSwgJy0xMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYicldScsIGNfdWludCgxMjMpKSwgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbHUnLCBjX3Vsb25nKDEyMykpLCAnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsbHUnLCBjX3Vsb25nbG9uZygxMjMpKSwgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclenUnLCBjX3NpemVfdCgxMjMpKSwgJzEyMycpCisKKyAgICAgICAgIyB0ZXN0ICVBCiAgICAgICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlQTolQScsICdhYmNceGU5XHVhYmNkXFUwMDEwZmZmZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgciIlQTonYWJjXHhlOVx1YWJjZFxVMDAxMGZmZmYnIikKIAorICAgICAgICAjIHRlc3QgJVYKICAgICAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGIncmVwcj0lVicsICdhYmMnLCBiJ3h5eicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgJ3JlcHI9YWJjJykKIApAQCAtMTY1OSw2ICsxNzg3LDEzIEBACiAgICAgICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJ3JlcHI9JVYnLCBOb25lLCBiJ2FiY1x4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICdyZXByPWFiY1x1ZmZmZCcpCiAKKyAgICAgICAgIyBub3Qgc3VwcG9ydGVkOiBjb3B5IHRoZSByYXcgZm9ybWF0IHN0cmluZy4gdGhlc2UgdGVzdHMgYXJlIGp1c3QgaGVyZQorICAgICAgICAjIHRvIGNoZWNrIGZvciBjcmFzaHMgYW5kIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBhcyBzcGVjaWZpY2F0aW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTElcycsIGInYWJjJyksICclcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMWFiYycpLCAnJTFhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJStpJywgY19pbnQoMTApKSwgJyUraScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclLiVzJywgYidhYmMnKSwgJyUuJXMnKQorCiAgICAgIyBUZXN0IFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkKICAgICBkZWYgdGVzdF9hc3dpZGVjaGFyKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV9hc3dpZGVjaGFyCkBAIC0xNzE5LDYgKzE4NTQsNTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBuY2hhcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Y2hhciwgbm9uYm1wICsgJ1wwJykKIAorICAgIGRlZiB0ZXN0X3N1YmNsYXNzX2FkZChzZWxmKToKKyAgICAgICAgY2xhc3MgUyhzdHIpOgorICAgICAgICAgICAgZGVmIF9fYWRkX18oc2VsZiwgbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICIzIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFMoIjQiKSArIFMoIjUiKSwgIjMiKQorICAgICAgICBjbGFzcyBTKHN0cik6CisgICAgICAgICAgICBkZWYgX19pYWRkX18oc2VsZiwgbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICIzIgorICAgICAgICBzID0gUygiMSIpCisgICAgICAgIHMgKz0gIjQiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIjMiKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2RlY2ltYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCB1bmljb2RlX2VuY29kZWRlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoJzEyMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzMuMTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInIDMuMTQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2VuY29kZWRlY2ltYWwsICIxMjNcdTIwYWMiLCAic3RyaWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsCisgICAgICAgICAgICAiXidkZWNpbWFsJyBjb2RlYyBjYW4ndCBlbmNvZGUgY2hhcmFjdGVyIiwKKyAgICAgICAgICAgIHVuaWNvZGVfZW5jb2RlZGVjaW1hbCwgIjEyM1x1MjBhYyIsICJyZXBsYWNlIikKKworICAgIGRlZiB0ZXN0X3RyYW5zZm9ybV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV90cmFuc2Zvcm1kZWNpbWFsdG9hc2NpaSBhcyB0cmFuc2Zvcm1fZGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCcxMjMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICczLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzXHUyMGFjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEyM1x1MjBhYycpCisKKyAgICBkZWYgdGVzdF9nZXRuZXdhcmdzKHNlbGYpOgorICAgICAgICB0ZXh0ID0gJ2FiYycKKyAgICAgICAgYXJncyA9IHRleHQuX19nZXRuZXdhcmdzX18oKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGFyZ3NbMF0sIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgdGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXJncyksIDEpCisKIAogY2xhc3MgU3RyaW5nTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZm9ybWF0dGVyX3BhcnNlcihzZWxmKToKQEAgLTE3NzAsNDIgKzE5NTAsNiBAQAogICAgICAgICAgICAgXV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3N0cmluZy5mb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdCwgMSkKIAotICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNpbWFsKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV9lbmNvZGVkZWNpbWFsCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCcxMjMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCdcdTA2NjMuXHUwNjYxXHUwNjY0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiczLjE0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJyAzLjE0ICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9lbmNvZGVkZWNpbWFsLCAiMTIzXHUyMGFjIiwgInN0cmljdCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAiaWdub3JlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgInhtbGNoYXJyZWZyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMmIzgzNjQ7JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhYyIsICJiYWNrc2xhc2hyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjNcXHUyMGFjJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhY1xOe0VNIFNQQUNFfSIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjM/ICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWNcdTIwYWMiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPz8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjXHUwNjYwIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8wJykKLQotICAgIGRlZiB0ZXN0X3RyYW5zZm9ybV9kZWNpbWFsKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV90cmFuc2Zvcm1kZWNpbWFsdG9hc2NpaSBhcyB0cmFuc2Zvcm1fZGVjaW1hbAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCcxMjMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICczLjE0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzXHUyMGFjJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEyM1x1MjBhYycpCi0KIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weQppbmRleCA2YzIwMTFhLi5mYWE4ZGEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weQpAQCAtNiw3ICs2LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgcm10cmVlLAotICAgIFRFU1RGTl9FTkNPRElORywgVEVTVEZOX1VOSUNPREUsIFRFU1RGTl9VTkVOQ09EQUJMRSkKKyAgICBURVNURk5fRU5DT0RJTkcsIFRFU1RGTl9VTklDT0RFLCBURVNURk5fVU5FTkNPREFCTEUsIGNyZWF0ZV9lbXB0eV9maWxlKQogCiBpZiBub3Qgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lczoKICAgICB0cnk6CkBAIC01NiwxNiArNTYsMjAgQEAKICAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byByZW5hbWUgdGhlIGZpbGUgdXNpbmcgZWl0aGVyIG5hbWUuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEpKSAjIG11c3QgZXhpc3QuCiAgICAgICAgIG9zLnJlbmFtZShmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSsiLm5ldyIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUxICsgIi5uZXciLCBmaWxlbmFtZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMikpCiAKICAgICAgICAgc2h1dGlsLmNvcHkoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCiAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZTEgKyAiLm5ldyIpICMgcmVtb3ZlIHVzaW5nIGVxdWl2IG5hbWUuCiAgICAgICAgICMgQW5kIGEgY291cGxlIG9mIG1vdmVzLCBvbmUgdXNpbmcgZWFjaCBuYW1lLgogICAgICAgICBzaHV0aWwubW92ZShmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBzaHV0aWwubW92ZShmaWxlbmFtZTEgKyAiLm5ldyIsIGZpbGVuYW1lMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIgKyAnLm5ldycpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUxKSkKICAgICAgICAgIyBOb3RlIC0gZHVlIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzaHV0aWwubW92ZSwKICAgICAgICAgIyBpdCB0cmllcyBhIHJlbmFtZSBmaXJzdC4gIFRoaXMgb25seSBmYWlscyBvbiBXaW5kb3dzIHdoZW4gb24KQEAgLTczLDEwICs3NywxMiBAQAogICAgICAgICAjIFNvIHdlIHRlc3QgdGhlIHNodXRpbC5jb3B5MiBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIHRoaW5nIG1vc3QKICAgICAgICAgIyBsaWtlbHkgdG8gZmFpbC4KICAgICAgICAgc2h1dGlsLmNvcHkyKGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lMSArICIubmV3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIgKyAnLm5ldycpKQogCiAgICAgZGVmIF9kb19kaXJlY3Rvcnkoc2VsZiwgbWFrZV9uYW1lLCBjaGRpcl9uYW1lKToKLSAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobWFrZV9uYW1lKToKICAgICAgICAgICAgIHJtdHJlZShtYWtlX25hbWUpCiAgICAgICAgIG9zLm1rZGlyKG1ha2VfbmFtZSkKQEAgLTk5LDggKzEwNSw3IEBACiAgICAgIyB0b3AtbGV2ZWwgJ3Rlc3QnIGZ1bmN0aW9ucyB3b3VsZCBiZSBpZiB0aGV5IGNvdWxkIHRha2UgcGFyYW1zCiAgICAgZGVmIF90ZXN0X3NpbmdsZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIHJlbW92ZV9pZl9leGlzdHMoZmlsZW5hbWUpCi0gICAgICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAidyIpCi0gICAgICAgIGYuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShmaWxlbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fZG9fc2luZ2xlKGZpbGVuYW1lKQogICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggOTc0NDI1Ni4uOTlhYTAwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0yMSw3ICsyMSw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzIxYjkwZjFhZWQwMDA4MWI4MWNhNzk0MmIyMjE5NmFmMDkwMDE1YTAnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdiZjdhNzhmMWE1MzI0MjFiNTAzMzYwMDEwMmUyM2E5MjA0NGRiYmE5JwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTgwLDcgKzgwLDcgQEAKIGNsYXNzIFVuaWNvZGVGdW5jdGlvbnNUZXN0KFVuaWNvZGVEYXRhYmFzZVRlc3QpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2MyM2RmYzBiNWVhZjNjYTJhYWQzMmQ3MzNkZTk2YmIxODJjY2RhNTAnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICcxN2ZlMmYxMmI3ODhlNGZmZjU0NzliNDY5YzQ0MDRiYjZlY2Y4NDFmJwogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBkYXRhID0gW10KICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC0xMDgsNiArMTA4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcdTIxNWInLCBOb25lKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcdTI0NjgnKSwgOSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcVTAwMDIwMDAwJywgTm9uZSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXFUwMDAxRDdGRCcpLCA3KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kaWdpdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRpZ2l0LCAneHgnKQpAQCAtMTIwLDYgKzEyMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcdTI0NjgnKSwgOS4wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXHVhNjI3JyksIDcuMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1xVMDAwMjAwMDAnLCBOb25lKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1xVMDAwMTAxMkEnKSwgOTAwMCkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIubnVtZXJpYykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLm51bWVyaWMsICd4eCcpCkBAIC0xMzEsNiArMTMzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1x1MjE1YicsIE5vbmUpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXHUyNDY4JywgTm9uZSksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcVTAwMDIwMDAwJywgTm9uZSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcVTAwMDFEN0ZEJyksIDcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRlY2ltYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kZWNpbWFsLCAneHgnKQpAQCAtMTQxLDYgKzE0NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnYScpLCAnTGwnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ0EnKSwgJ0x1JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdcVTAwMDIwMDAwJyksICdMbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnXFUwMDAxMDEyQScpLCAnTm8nKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5jYXRlZ29yeSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmNhdGVnb3J5LCAneHgnKQpAQCAtMzA4LDE0ICszMTIsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXHUlLjR4IHNob3VsZCBub3QgYmUgYSBsaW5lYnJlYWsiICUgaSkKIAotICAgIGRlZiB0ZXN0X1VDUzQoc2VsZik6Ci0gICAgICAgICMgdW5pY29kZWRhdGEgc2hvdWxkIHdvcmsgd2l0aCBjb2RlIHBvaW50cyBvdXRzaWRlIHRoZSBCTVAKLSAgICAgICAgIyBldmVuIG9uIGEgbmFycm93IFVuaWNvZGUgYnVpbGQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCJcVTAwMDEwMTJBIiksICJObyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCJcVTAwMDEwMTJBIiksIDkwMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCJcVTAwMDFEN0ZEIiksIDcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgiXFUwMDAxRDdGRCIpLCA3KQotCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVW5pY29kZU1pc2NUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQppbmRleCAzZmM0OTllLi42MjNlYjVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQpAQCAtMjcwLDEwICsyNzAsOSBAQAogCiAgICAgZGVmIHRlc3RfbWlzc2luZ19sb2NhbGZpbGUoc2VsZik6CiAgICAgICAgICMgVGVzdCBmb3IgIzEwODM2Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBlOgorICAgICAgICAjIDMuMyAtIFVSTEVycm9yIGlzIG5vdCBjYXB0dXJlZCwgZXhwbGljaXQgSU9FcnJvciBpcyByYWlzZWQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcik6CiAgICAgICAgICAgICB1cmxvcGVuKCdmaWxlOi8vbG9jYWxob3N0L2EvZmlsZS93aGljaC9kb2Vzbm90L2V4aXN0cy5weScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmV4Y2VwdGlvbi5maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLnJlYXNvbikKIAogICAgIGRlZiB0ZXN0X2ZpbGVfbm90ZXhpc3RzKHNlbGYpOgogICAgICAgICBmZCwgdG1wX2ZpbGUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKQEAgLTI4NiwyMSArMjg1LDIwIEBACiAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgICAgIG9zLnVubGluayh0bXBfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyh0bXBfZmlsZSkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKToKKyAgICAgICAgIyAzLjMgLSBJT0Vycm9yIGluc3RlYWQgb2YgVVJMRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKICAgICAgICAgICAgIHVybG9wZW4odG1wX2ZpbGV1cmwpCiAKICAgICBkZWYgdGVzdF9mdHBfbm9ob3N0KHNlbGYpOgogICAgICAgICB0ZXN0X2Z0cF91cmwgPSAnZnRwOi8vL3BhdGgnCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBlOgorICAgICAgICAjIDMuMyAtIElPRXJyb3IgaW5zdGVhZCBvZiBVUkxFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgogICAgICAgICAgICAgdXJsb3Blbih0ZXN0X2Z0cF91cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5leGNlcHRpb24uZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmV4Y2VwdGlvbi5yZWFzb24pCiAKICAgICBkZWYgdGVzdF9mdHBfbm9uZXhpc3Rpbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBlOgorICAgICAgICAjIDMuMyAtIElPRXJyb3IgaW5zdGVhZCBvZiBVUkxFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgogICAgICAgICAgICAgdXJsb3BlbignZnRwOi8vbG9jYWxob3N0L2EvZmlsZS93aGljaC9kb2Vzbm90L2V4aXN0cy5weScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5leGNlcHRpb24uZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmV4Y2VwdGlvbi5yZWFzb24pCiAKIAogICAgIGRlZiB0ZXN0X3VzZXJwYXNzX2ludXJsKHNlbGYpOgpAQCAtMzMzLDYgKzMzMSwxMCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi51bmZha2VodHRwKCkKIAorICAgIGRlZiB0ZXN0X1VSTG9wZW5lcl9kZXByZWNhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJyxEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lcigpCisKIGNsYXNzIHVybHJldHJpZXZlX0ZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB1cmxsaWIudXJscmV0cmlldmUoKSBvbiBsb2NhbCBmaWxlcyIiIgogCkBAIC0zNjYsNyArMzY4LDcgQEAKICAgICBkZWYgY29uc3RydWN0TG9jYWxGaWxlVXJsKHNlbGYsIGZpbGVQYXRoKToKICAgICAgICAgZmlsZVBhdGggPSBvcy5wYXRoLmFic3BhdGgoZmlsZVBhdGgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVQYXRoLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICBmaWxlUGF0aC5lbmNvZGUoInV0Zi04IikKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJmaWxlUGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogICAgICAgICByZXR1cm4gImZpbGU6Ly8lcyIgJSB1cmxsaWIucmVxdWVzdC5wYXRobmFtZTJ1cmwoZmlsZVBhdGgpCkBAIC00MTksMTEgKzQyMSwxMSBAQAogCiAgICAgZGVmIHRlc3RfcmVwb3J0aG9vayhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgcmVwb3J0aG9vayB3b3Jrcy4KLSAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUsIGNvdW50X2hvbGRlcj1bMF0pOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNvdW50LCBpbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYmxvY2tfc2l6ZSwgaW50KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRvdGFsX3NpemUsIGludCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291bnQsIGNvdW50X2hvbGRlclswXSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBjb3VudF9ob2xkZXI9WzBdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShibG9ja19jb3VudCwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJsb2NrX3JlYWRfc2l6ZSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbGVfc2l6ZSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChibG9ja19jb3VudCwgY291bnRfaG9sZGVyWzBdKQogICAgICAgICAgICAgY291bnRfaG9sZGVyWzBdID0gY291bnRfaG9sZGVyWzBdICsgMQogICAgICAgICBzZWNvbmRfdGVtcCA9ICIlcy4yIiAlIHN1cHBvcnQuVEVTVEZOCiAgICAgICAgIHNlbGYucmVnaXN0ZXJGaWxlRm9yQ2xlYW5VcChzZWNvbmRfdGVtcCkKQEAgLTQzNCw4ICs0MzYsOCBAQAogICAgIGRlZiB0ZXN0X3JlcG9ydGhvb2tfMF9ieXRlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IG9uIHplcm8gbGVuZ3RoIGZpbGUuIFNob3VsZCBjYWxsIHJlcG9ydGhvb2sgb25seSAxIHRpbWUuCiAgICAgICAgIHJlcG9ydCA9IFtdCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBfcmVwb3J0PXJlcG9ydCk6Ci0gICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKKyAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUpKQogICAgICAgICBzcmNGaWxlTmFtZSA9IHNlbGYuY3JlYXRlTmV3VGVtcEZpbGUoKQogICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZShzZWxmLmNvbnN0cnVjdExvY2FsRmlsZVVybChzcmNGaWxlTmFtZSksCiAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiwgaG9va3Rlc3RlcikKQEAgLTQ0NSwzMSArNDQ3LDMxIEBACiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va181X2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gNSBieXRlIGZpbGUuIFNob3VsZCBjYWxsIHJlcG9ydGhvb2sgb25seSAyIHRpbWVzIChvbmNlIHdoZW4KICAgICAgICAgIyB0aGUgIm5ldHdvcmsgY29ubmVjdGlvbiIgaXMgZXN0YWJsaXNoZWQgYW5kIG9uY2Ugd2hlbiB0aGUgYmxvY2sgaXMKLSAgICAgICAgIyByZWFkKS4gU2luY2UgdGhlIGJsb2NrIHNpemUgaXMgODE5MiBieXRlcywgb25seSBvbmUgYmxvY2sgcmVhZCBpcwotICAgICAgICAjIHJlcXVpcmVkIHRvIHJlYWQgdGhlIGVudGlyZSBmaWxlLgorICAgICAgICAjIHJlYWQpLgogICAgICAgICByZXBvcnQgPSBbXQotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgotICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplKSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBfcmVwb3J0PXJlcG9ydCk6CisgICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplKSkKICAgICAgICAgc3JjRmlsZU5hbWUgPSBzZWxmLmNyZWF0ZU5ld1RlbXBGaWxlKGIieCIgKiA1KQogICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZShzZWxmLmNvbnN0cnVjdExvY2FsRmlsZVVybChzcmNGaWxlTmFtZSksCiAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiwgaG9va3Rlc3RlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVwb3J0KSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMV0sIDgxOTIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzJdLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMV1bMV0sIDUpCiAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rXzgxOTNfYnl0ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBvbiA4MTkzIGJ5dGUgZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDMgdGltZXMgKG9uY2UKICAgICAgICAgIyB3aGVuIHRoZSAibmV0d29yayBjb25uZWN0aW9uIiBpcyBlc3RhYmxpc2hlZCwgb25jZSBmb3IgdGhlIG5leHQgODE5MgogICAgICAgICAjIGJ5dGVzLCBhbmQgb25jZSBmb3IgdGhlIGxhc3QgYnl0ZSkuCiAgICAgICAgIHJlcG9ydCA9IFtdCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBfcmVwb3J0PXJlcG9ydCk6Ci0gICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKKyAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUpKQogICAgICAgICBzcmNGaWxlTmFtZSA9IHNlbGYuY3JlYXRlTmV3VGVtcEZpbGUoYiJ4IiAqIDgxOTMpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXBvcnQpLCAzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgODE5MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMl0sIDgxOTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzFdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFsxXVsxXSwgODE5MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMl1bMV0sIDEpCiAKIAogY2xhc3MgdXJscmV0cmlldmVfSHR0cFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlLCBGYWtlSFRUUE1peGluKToKQEAgLTEyODAsNiArMTI4MiwyOCBAQAogIyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwLmZ0cC5zb2NrLmdldHRpbWVvdXQoKSwgMzApCiAjICAgICAgICAgZnRwLmNsb3NlKCkKIAorY2xhc3MgUmVxdWVzdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0LiIiIgorCisgICAgZGVmIHRlc3RfZGVmYXVsdF92YWx1ZXMoc2VsZik6CisgICAgICAgIFJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0CisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnR0VUJykKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnUE9TVCcpCisKKyAgICBkZWYgdGVzdF93aXRoX21ldGhvZF9hcmcoc2VsZik6CisgICAgICAgIFJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0CisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCBtZXRob2Q9J0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QubWV0aG9kLCAnSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdIRUFEJykKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIHt9LCBtZXRob2Q9J0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QubWV0aG9kLCAnSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdIRUFEJykKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIG1ldGhvZD0nR0VUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0dFVCcpCisgICAgICAgIHJlcXVlc3QubWV0aG9kID0gJ0hFQUQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdIRUFEJykKIAogCiBkZWYgdGVzdF9tYWluKCk6CkBAIC0xMjk2LDYgKzEzMjAsNyBAQAogICAgICAgICBVdGlsaXR5X1Rlc3RzLAogICAgICAgICBVUkxvcGVuZXJfVGVzdHMsCiAgICAgICAgICNGVFBXcmFwcGVyVGVzdHMsCisgICAgICAgIFJlcXVlc3RUZXN0cywKICAgICApCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CmluZGV4IDNhY2U2NmUuLjdhZTE1NTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBzb2NrZXQKIGltcG9ydCBhcnJheQoraW1wb3J0IHN5cwogCiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKICMgVGhlIHByb3h5IGJ5cGFzcyBtZXRob2QgaW1wb3J0ZWQgYmVsb3cgaGFzIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSBPU1gKQEAgLTE4LDYgKzE5LDIyIEBACiAjIHBhcnNlX2tlcXZfbGlzdCwgcGFyc2VfaHR0cF9saXN0LCBIVFRQRGlnZXN0QXV0aEhhbmRsZXIKIAogY2xhc3MgVHJpdmlhbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X19fYWxsX18oc2VsZik6CisgICAgICAgICMgVmVyaWZ5IHdoaWNoIG5hbWVzIGFyZSBleHBvc2VkCisgICAgICAgIGZvciBtb2R1bGUgaW4gJ3JlcXVlc3QnLCAncmVzcG9uc2UnLCAncGFyc2UnLCAnZXJyb3InLCAncm9ib3RwYXJzZXInOgorICAgICAgICAgICAgY29udGV4dCA9IHt9CisgICAgICAgICAgICBleGVjKCdmcm9tIHVybGxpYi4lcyBpbXBvcnQgKicgJSBtb2R1bGUsIGNvbnRleHQpCisgICAgICAgICAgICBkZWwgY29udGV4dFsnX19idWlsdGluc19fJ10KKyAgICAgICAgICAgIGlmIG1vZHVsZSA9PSAncmVxdWVzdCcgYW5kIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICAgICB1LCBwID0gY29udGV4dC5wb3AoJ3VybDJwYXRobmFtZScpLCBjb250ZXh0LnBvcCgncGF0aG5hbWUydXJsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUuX19tb2R1bGVfXywgJ250dXJsMnBhdGgnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5fX21vZHVsZV9fLCAnbnR1cmwycGF0aCcpCisgICAgICAgICAgICBmb3IgaywgdiBpbiBjb250ZXh0Lml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Ll9fbW9kdWxlX18sICd1cmxsaWIuJXMnICUgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAiJXIgaXMgZXhwb3NlZCBpbiAndXJsbGliLiVzJyBidXQgZGVmaW5lZCBpbiAlciIgJQorICAgICAgICAgICAgICAgICAgICAoaywgbW9kdWxlLCB2Ll9fbW9kdWxlX18pKQorCiAgICAgZGVmIHRlc3RfdHJpdmlhbChzZWxmKToKICAgICAgICAgIyBBIGNvdXBsZSB0cml2aWFsIHRlc3RzCiAKQEAgLTUzNiwxMCArNTUzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yLCBvLm9wZW4sIHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLmNhbGxzLCBbKGhhbmRsZXJzWzBdLCAiaHR0cF9vcGVuIiwgKHJlcSwpLCB7fSldKQogCi0jIyAgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6Ci0jIyAgICAgICAgICMgWFhYIHRoaXMgZG9lc24ndCBhY3R1YWxseSBzZWVtIHRvIGJlIHVzZWQgaW4gc3RhbmRhcmQgbGlicmFyeSwKLSMjICAgICAgICAgIyAgYnV0IHNob3VsZCByZWFsbHkgYmUgdGVzdGVkIGFueXdheS4uLgotCiAgICAgZGVmIHRlc3RfaHR0cF9lcnJvcihzZWxmKToKICAgICAgICAgIyBYWFggaHR0cF9lcnJvcl9kZWZhdWx0CiAgICAgICAgICMgaHR0cCBlcnJvcnMgYXJlIGEgc3BlY2lhbCBjYXNlCkBAIC01NjcsNiArNTgwLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGhhbmRsZXIsIG1ldGhvZF9uYW1lKSwgZ290WzoyXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgZ290WzJdKQogCisKICAgICBkZWYgdGVzdF9wcm9jZXNzb3JzKHNlbGYpOgogICAgICAgICAjICpfcmVxdWVzdCAvICpfcmVzcG9uc2UgbWV0aG9kcyBnZXQgY2FsbGVkIGFwcHJvcHJpYXRlbHkKICAgICAgICAgbyA9IE9wZW5lckRpcmVjdG9yKCkKQEAgLTYwMiwxMCArNjE2LDMwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyZ3NbMV0gaXMgTm9uZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFyZ3NbMV0sIE1vY2tSZXNwb25zZSkpCiAKKyAgICBkZWYgdGVzdF9tZXRob2RfZGVwcmVjYXRpb25zKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5hZGRfZGF0YSgiZGF0YSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9kYXRhKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuaGFzX2RhdGEoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfaG9zdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9zZWxlY3RvcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmlzX3VudmVyaWZpYWJsZSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9vcmlnaW5fcmVxX2hvc3QoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfdHlwZSgpCisKIAogZGVmIHNhbmVwYXRobmFtZTJ1cmwocGF0aCk6CiAgICAgdHJ5OgotICAgICAgICBwYXRoLmVuY29kZSgidXRmOCIpCisgICAgICAgIHBhdGguZW5jb2RlKCJ1dGYtOCIpCiAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInBhdGggaXMgbm90IGVuY29kYWJsZSB0byB1dGY4IikKICAgICB1cmxwYXRoID0gdXJsbGliLnJlcXVlc3QucGF0aG5hbWUydXJsKHBhdGgpCkBAIC05NTcsOCArOTkxLDggQEAKICAgICAgICAgbmV3cmVxID0gaC5odHRwX3JlcXVlc3QocmVxKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmFjaF9yZXEsIHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5hY2hfcmVxLCBuZXdyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9vcmlnaW5fcmVxX2hvc3QoKSwgImV4YW1wbGUuY29tIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEuaXNfdW52ZXJpZmlhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLm9yaWdpbl9yZXFfaG9zdCwgImV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEudW52ZXJpZmlhYmxlKQogICAgICAgICBuZXdyID0gaC5odHRwX3Jlc3BvbnNlKHJlcSwgcikKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5lY19yZXEsIHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5lY19yLCByKQpAQCAtOTkwLDcgKzEwMjQsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLnJlcS5nZXRfbWV0aG9kKCksICJHRVQiKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvLnJlcS5oYXNfZGF0YSgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG8ucmVxLmRhdGEpCiAKICAgICAgICAgICAgICAgICAjIG5vdyBpdCdzIGEgR0VULCB0aGVyZSBzaG91bGQgbm90IGJlIGhlYWRlcnMgcmVnYXJkaW5nIGNvbnRlbnQKICAgICAgICAgICAgICAgICAjIChwb3NzaWJseSBkcmFnZ2VkIGZyb20gYmVmb3JlIGJlaW5nIGEgUE9TVCkKQEAgLTExMDYsOSArMTE0MCw5IEBACiAgICAgICAgIGhhbmRsZXJzID0gYWRkX29yZGVyZWRfbW9ja19oYW5kbGVycyhvLCBtZXRoX3NwZWMpCiAKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgImFjbWUuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAiYWNtZS5leGFtcGxlLmNvbSIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoaGFuZGxlcnNbMF0sICJodHRwX29wZW4iKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1cFswOjJdIGZvciB0dXAgaW4gby5jYWxsc10pCkBAIC0xMTE5LDEzICsxMTUzLDEzIEBACiAgICAgICAgIHBoID0gdXJsbGliLnJlcXVlc3QuUHJveHlIYW5kbGVyKGRpY3QoaHR0cD0icHJveHkuZXhhbXBsZS5jb20iKSkKICAgICAgICAgby5hZGRfaGFuZGxlcihwaCkKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5wZXJsLm9yZy8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnBlcmwub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5wZXJsLm9yZyIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb20iKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgZGVsIG9zLmVudmlyb25bJ25vX3Byb3h5J10KIAogICAgIGRlZiB0ZXN0X3Byb3h5X25vX3Byb3h5X2FsbChzZWxmKToKQEAgLTExMzQsOSArMTE2OCw5IEBACiAgICAgICAgIHBoID0gdXJsbGliLnJlcXVlc3QuUHJveHlIYW5kbGVyKGRpY3QoaHR0cD0icHJveHkuZXhhbXBsZS5jb20iKSkKICAgICAgICAgby5hZGRfaGFuZGxlcihwaCkKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydub19wcm94eSddCiAKIApAQCAtMTE1MCw5ICsxMTg0LDkgQEAKICAgICAgICAgaGFuZGxlcnMgPSBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKG8sIG1ldGhfc3BlYykKIAogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwczovL3d3dy5leGFtcGxlLmNvbS8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5leGFtcGxlLmNvbSIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKGhhbmRsZXJzWzBdLCAiaHR0cHNfb3BlbiIpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVwWzA6Ml0gZm9yIHR1cCBpbiBvLmNhbGxzXSkKIApAQCAtMTE2NSw3ICsxMTk5LDcgQEAKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vIikKICAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlByb3h5LUF1dGhvcml6YXRpb24iLCJGb29CYXIiKQogICAgICAgICByZXEuYWRkX2hlYWRlcigiVXNlci1BZ2VudCIsIkdyYWlsIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cuZXhhbXBsZS5jb20iKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXEuX3R1bm5lbF9ob3N0KQogICAgICAgICByID0gby5vcGVuKHJlcSkKICAgICAgICAgIyBWZXJpZnkgUHJveHktQXV0aG9yaXphdGlvbiBnZXRzIHR1bm5lbGVkIHRvIHJlcXVlc3QuCkBAIC0xMTc2LDkgKzEyMTAsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigoIlVzZXItQWdlbnQiLCJHcmFpbCIpLAogICAgICAgICAgICAgICAgICAgICAgIGh0dHBzX2hhbmRsZXIuaHR0cGNvbm4ucmVxX2hlYWRlcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlcS5fdHVubmVsX2hvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaGVhZGVyKCJQcm94eS1hdXRob3JpemF0aW9uIiksIkZvb0JhciIpCiAKKyAgICAjIFRPRE86IFRoaXMgc2hvdWxkIGJlIG9ubHkgZm9yIE9TWAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgIm9ubHkgcmVsZXZhbnQgZm9yIE9TWCIpCiAgICAgZGVmIHRlc3Rfb3N4X3Byb3h5X2J5cGFzcyhzZWxmKToKICAgICAgICAgYnlwYXNzID0gewogICAgICAgICAgICAgJ2V4Y2x1ZGVfc2ltcGxlJzogRmFsc2UsCkBAIC0xMjk4LDYgKzEzMzQsMjYgQEAKICAgICAgICAgIyBfdGVzdF9iYXNpY19hdXRoIGNhbGxlZCAub3BlbigpIHR3aWNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5lci5yZWNvcmRlZCwgWyJkaWdlc3QiLCAiYmFzaWMiXSoyKQogCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfYXV0aF9kaWdlc3RfaGFuZGxlcihzZWxmKToKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICAjIFdoaWxlIHVzaW5nIERpZ2VzdEF1dGhIYW5kbGVyCisgICAgICAgIGRpZ2VzdF9hdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQRGlnZXN0QXV0aEhhbmRsZXIoTm9uZSkKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogS2VyYmVyb3NcclxuXHJcbicpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihkaWdlc3RfYXV0aF9oYW5kbGVyKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLG9wZW5lci5vcGVuLCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKworICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2F1dGhfYmFzaWNfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBXaGlsZSB1c2luZyBCYXNpY0F1dGhIYW5kbGVyCisgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKyAgICAgICAgYmFzaWNfYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIoTm9uZSkKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogTlRMTVxyXG5cclxuJykKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGJhc2ljX2F1dGhfaGFuZGxlcikKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixvcGVuZXIub3BlbiwiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisKICAgICBkZWYgX3Rlc3RfYmFzaWNfYXV0aChzZWxmLCBvcGVuZXIsIGF1dGhfaGFuZGxlciwgYXV0aF9oZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIGh0dHBfaGFuZGxlciwgcGFzc3dvcmRfbWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X3VybCwgcHJvdGVjdGVkX3VybCk6CkBAIC0xMzM1LDYgKzEzOTEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihodHRwX2hhbmRsZXIucmVxdWVzdHMpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0dHBfaGFuZGxlci5yZXF1ZXN0c1swXS5oYXNfaGVhZGVyKGF1dGhfaGVhZGVyKSkKIAorCiBjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYnVpbGRfb3BlbmVyKHNlbGYpOgpAQCAtMTM5MCwxMSArMTQ0NywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJQT1NUIiwgc2VsZi5wb3N0LmdldF9tZXRob2QoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiR0VUIiwgc2VsZi5nZXQuZ2V0X21ldGhvZCgpKQogCi0gICAgZGVmIHRlc3RfYWRkX2RhdGEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5nZXQuaGFzX2RhdGEoKSkKKyAgICBkZWYgdGVzdF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZ2V0LmRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkdFVCIsIHNlbGYuZ2V0LmdldF9tZXRob2QoKSkKLSAgICAgICAgc2VsZi5nZXQuYWRkX2RhdGEoInNwYW0iKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5nZXQuaGFzX2RhdGEoKSkKKyAgICAgICAgc2VsZi5nZXQuZGF0YSA9ICJzcGFtIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5nZXQuZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiUE9TVCIsIHNlbGYuZ2V0LmdldF9tZXRob2QoKSkKIAogICAgIGRlZiB0ZXN0X2dldF9mdWxsX3VybChzZWxmKToKQEAgLTE0MDIsMzYgKzE0NTksMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldC5nZXRfZnVsbF91cmwoKSkKIAogICAgIGRlZiB0ZXN0X3NlbGVjdG9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvfmplcmVteS8iLCBzZWxmLmdldC5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiL35qZXJlbXkvIiwgc2VsZi5nZXQuc2VsZWN0b3IpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLnNlbGVjdG9yKQogCiAgICAgZGVmIHRlc3RfZ2V0X3R5cGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0dHAiLCBzZWxmLmdldC5nZXRfdHlwZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodHRwIiwgc2VsZi5nZXQudHlwZSkKIAogICAgIGRlZiB0ZXN0X2dldF9ob3N0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0LmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQuaG9zdCkKIAogICAgIGRlZiB0ZXN0X2dldF9ob3N0X3VucXVvdGUoc2VsZik6CiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cuJTcweXRob24ub3JnLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmhvc3QpCiAKICAgICBkZWYgdGVzdF9wcm94eShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmdldC5oYXNfcHJveHkoKSkKICAgICAgICAgc2VsZi5nZXQuc2V0X3Byb3h5KCJ3d3cucGVybC5vcmciLCAiaHR0cCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmdldC5oYXNfcHJveHkoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5nZXRfb3JpZ2luX3JlcV9ob3N0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5wZXJsLm9yZyIsIHNlbGYuZ2V0LmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQub3JpZ2luX3JlcV9ob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucGVybC5vcmciLCBzZWxmLmdldC5ob3N0KQogCiAgICAgZGVmIHRlc3Rfd3JhcHBlZF91cmwoc2VsZik6CiAgICAgICAgIHJlcSA9IFJlcXVlc3QoIjxVUkw6aHR0cDovL3d3dy5weXRob24ub3JnPiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmhvc3QpCiAKICAgICBkZWYgdGVzdF91cmxfZnJhZ21lbnQoc2VsZik6CiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8/cXM9cXVlcnkjZnJhZ21lbnQ9dHJ1ZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8/cXM9cXVlcnkiLCByZXEuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8/cXM9cXVlcnkiLCByZXEuc2VsZWN0b3IpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8jZnVuPXRydWUiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLnNlbGVjdG9yKQogCiAgICAgICAgICMgSXNzdWUgMTE3MDM6IGdldHVybCgpIG9taXRzIGZyYWdtZW50IGluIHRoZSBvcmlnaW5hbCBVUkwuCiAgICAgICAgIHVybCA9ICdodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvdXJsbGliMi5odG1sI09LJwpAQCAtMTQ0Myw3ICsxNTAwLDkgQEAKICAgICBJc3N1ZSAxMzIxMSByZXZlYWxzIHRoYXQgSFRUUEVycm9yIGRpZG4ndCBpbXBsZW1lbnQgdGhlIFVSTEVycm9yCiAgICAgaW50ZXJmYWNlIGV2ZW4gdGhvdWdoIEhUVFBFcnJvciBpcyBhIHN1YmNsYXNzIG9mIFVSTEVycm9yLgogCi0gICAgPj4+IGVyciA9IHVybGxpYi5lcnJvci5IVFRQRXJyb3IobXNnPSdzb21ldGhpbmcgYmFkIGhhcHBlbmVkJywgdXJsPU5vbmUsIGNvZGU9Tm9uZSwgaGRycz1Ob25lLCBmcD1Ob25lKQorICAgID4+PiBtc2cgPSAnc29tZXRoaW5nIGJhZCBoYXBwZW5lZCcKKyAgICA+Pj4gdXJsID0gY29kZSA9IGhkcnMgPSBmcCA9IE5vbmUKKyAgICA+Pj4gZXJyID0gdXJsbGliLmVycm9yLkhUVFBFcnJvcih1cmwsIGNvZGUsIG1zZywgaGRycywgZnApCiAgICAgPj4+IGFzc2VydCBoYXNhdHRyKGVyciwgJ3JlYXNvbicpCiAgICAgPj4+IGVyci5yZWFzb24KICAgICAnc29tZXRoaW5nIGJhZCBoYXBwZW5lZCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQppbmRleCA5ZTFjZTViLi42ZWY0MjAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CkBAIC00NzQsNiArNDc0LDEzIEBACiAgICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKIAorICAgIGRlZiB0ZXN0X2h0dHBzX3dpdGhfY2FkZWZhdWx0KHNlbGYpOgorICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9sb2NhbGhvc3QpCisgICAgICAgICMgU2VsZi1zaWduZWQgY2VydCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24gd2l0aCBzeXN0ZW0gY2VydGlmaWNhdGUgc3RvcmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKKwogICAgIGRlZiB0ZXN0X3NlbmRpbmdfaGVhZGVycyhzZWxmKToKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfc2VydmVyKCkKICAgICAgICAgcmVxID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCgiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgaGFuZGxlci5wb3J0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CmluZGV4IDVmY2I0Y2IuLmZjNTUyN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKQEAgLTgzLDEyICs4MywxMyBAQAogICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgogICAgICAgICAjIGNhbGxpbmcgLmNsb3NlKCkgb24gdXJsbGliMidzIHJlc3BvbnNlIG9iamVjdHMgc2hvdWxkIGNsb3NlIHRoZQogICAgICAgICAjIHVuZGVybHlpbmcgc29ja2V0Ci0KLSAgICAgICAgcmVzcG9uc2UgPSBfdXJsb3Blbl93aXRoX3JldHJ5KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIikKLSAgICAgICAgc29jayA9IHJlc3BvbnNlLmZwCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc29jay5jbG9zZWQpCi0gICAgICAgIHJlc3BvbnNlLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvY2suY2xvc2VkKQorICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyIKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCh1cmwpOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBfdXJsb3Blbl93aXRoX3JldHJ5KHVybCkKKyAgICAgICAgICAgIHNvY2sgPSByZXNwb25zZS5mcAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBzb2NrLmNsb3NlZCkKKyAgICAgICAgICAgIHJlc3BvbnNlLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrLmNsb3NlZCkKIAogY2xhc3MgT3RoZXJOZXR3b3JrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CmluZGV4IDg2OGVkMjQuLjYzODEwNzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQpAQCAtNTIsNiArNTIsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGtleSkgKyAnISEhJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihUKCgxLDIpKSkpLCAiMCEhISIpCiAKKyAgICBkZWYgdGVzdF91c2VybGlzdF9jb3B5KHNlbGYpOgorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzYsIDgsIDEsIDksIDFdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUodSksIHR5cGUodikpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChVc2VyTGlzdFRlc3QpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQppbmRleCA3YThiOTMyLi5kNWQwYzg5IDEwMDc1NQotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CkBAIC0xNywxMSArMTcsMTEgQEAKICAgICAjIE92ZXJ3cml0ZSB0aGUgdGhyZWUgdGVzdGluZyBtZXRob2RzLCBiZWNhdXNlIFVzZXJTdHJpbmcKICAgICAjIGNhbid0IGNvcGUgd2l0aCBhcmd1bWVudHMgcHJvcGFnYXRlZCB0byBVc2VyU3RyaW5nCiAgICAgIyAoYW5kIHdlIGRvbid0IHRlc3Qgd2l0aCBzdWJjbGFzc2VzKQotICAgIGRlZiBjaGVja2VxdWFsKHNlbGYsIHJlc3VsdCwgb2JqZWN0LCBtZXRob2RuYW1lLCAqYXJncyk6CisgICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmplY3QsIG1ldGhvZG5hbWUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYuZml4dHlwZShyZXN1bHQpCiAgICAgICAgIG9iamVjdCA9IHNlbGYuZml4dHlwZShvYmplY3QpCiAgICAgICAgICMgd2UgZG9uJ3QgZml4IHRoZSBhcmd1bWVudHMsIGJlY2F1c2UgVXNlclN0cmluZyBjYW4ndCBjb3BlIHdpdGggaXQKLSAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqZWN0LCBtZXRob2RuYW1lKSgqYXJncykKKyAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqZWN0LCBtZXRob2RuYW1lKSgqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICByZXN1bHQsCiAgICAgICAgICAgICByZWFscmVzdWx0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3V1aWQucHkgYi9MaWIvdGVzdC90ZXN0X3V1aWQucHkKaW5kZXggNDNmYTY1Ni4uN2JjNTllZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91dWlkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQpAQCAtNDcxLDE0ICs0NzEsMTQgQEAKICAgICAgICAgaWYgcGlkID09IDA6CiAgICAgICAgICAgICBvcy5jbG9zZShmZHNbMF0pCiAgICAgICAgICAgICB2YWx1ZSA9IHV1aWQudXVpZDQoKQotICAgICAgICAgICAgb3Mud3JpdGUoZmRzWzFdLCB2YWx1ZS5oZXguZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAgICAgIG9zLndyaXRlKGZkc1sxXSwgdmFsdWUuaGV4LmVuY29kZSgnbGF0aW4tMScpKQogICAgICAgICAgICAgb3MuX2V4aXQoMCkKIAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3MuY2xvc2UoZmRzWzFdKQogICAgICAgICAgICAgcGFyZW50X3ZhbHVlID0gdXVpZC51dWlkNCgpLmhleAogICAgICAgICAgICAgb3Mud2FpdHBpZChwaWQsIDApCi0gICAgICAgICAgICBjaGlsZF92YWx1ZSA9IG9zLnJlYWQoZmRzWzBdLCAxMDApLmRlY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgIGNoaWxkX3ZhbHVlID0gb3MucmVhZChmZHNbMF0sIDEwMCkuZGVjb2RlKCdsYXRpbi0xJykKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwYXJlbnRfdmFsdWUsIGNoaWxkX3ZhbHVlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Njg0NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpAQCAtMCwwICsxLDIwMyBAQAorIiIiCitUZXN0IGhhcm5lc3MgZm9yIHRoZSB2ZW52IG1vZHVsZS4KKworQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmluYXkgU2FqaXAuCitMaWNlbnNlZCB0byB0aGUgUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmspCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB2ZW52CisKK2NsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciB2ZW52IHRlc3RzLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmVudl9kaXIgPSBvcy5wYXRoLnJlYWxwYXRoKHRlbXBmaWxlLm1rZHRlbXAoKSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSAnU2NyaXB0cycKKyAgICAgICAgICAgIHNlbGYucHlkb2NuYW1lID0gJ3B5ZG9jLnB5JworICAgICAgICAgICAgc2VsZi5saWIgPSAoJ0xpYicsKQorICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ0luY2x1ZGUnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmJpbmRpciA9ICdiaW4nCisgICAgICAgICAgICBzZWxmLnB5ZG9jbmFtZSA9ICdweWRvYycKKyAgICAgICAgICAgIHNlbGYubGliID0gKCdsaWInLCAncHl0aG9uJXMnICUgc3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ2luY2x1ZGUnCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIG9zLmVudmlyb246CisgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICAgICAgc2VsZi5leGUgPSBvcy5wYXRoLnNwbGl0KGV4ZWN1dGFibGUpWy0xXQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKworICAgIGRlZiBydW5fd2l0aF9jYXB0dXJlKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnJvcjoKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG91dHB1dC5nZXR2YWx1ZSgpLCBlcnJvci5nZXR2YWx1ZSgpCisKKyAgICBkZWYgZ2V0X2Vudl9maWxlKHNlbGYsICphcmdzKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmVudl9kaXIsICphcmdzKQorCisgICAgZGVmIGdldF90ZXh0X2ZpbGVfY29udGVudHMoc2VsZiwgKmFyZ3MpOgorICAgICAgICB3aXRoIG9wZW4oc2VsZi5nZXRfZW52X2ZpbGUoKmFyZ3MpLCAncicpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKK2NsYXNzIEJhc2ljVGVzdChCYXNlVGVzdCk6CisgICAgIiIiVGVzdCB2ZW52IG1vZHVsZSBmdW5jdGlvbmFsaXR5LiIiIgorCisgICAgZGVmIGlzZGlyKHNlbGYsICphcmdzKToKKyAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZSgqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZm4pKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoZSBjcmVhdGUgZnVuY3Rpb24gd2l0aCBkZWZhdWx0IGFyZ3VtZW50cy4KKyAgICAgICAgIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmJpbmRpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmluY2x1ZGUpCisgICAgICAgIHNlbGYuaXNkaXIoKnNlbGYubGliKQorICAgICAgICBkYXRhID0gc2VsZi5nZXRfdGV4dF9maWxlX2NvbnRlbnRzKCdweXZlbnYuY2ZnJykKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAoJ19fUFlWRU5WX0xBVU5DSEVSX18nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9zLmVudmlyb24pOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9ICBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQorICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2hvbWUgPSAlcycgJSBwYXRoLCBkYXRhKQorICAgICAgICBkYXRhID0gc2VsZi5nZXRfdGV4dF9maWxlX2NvbnRlbnRzKHNlbGYuYmluZGlyLCBzZWxmLnB5ZG9jbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRhdGEuc3RhcnRzd2l0aCgnIyElcyVzJyAlIChzZWxmLmVudl9kaXIsIG9zLnNlcCkpKQorICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZuKTogICMgZGlhZ25vc3RpY3MgZm9yIFdpbmRvd3MgYnVpbGRib3QgZmFpbHVyZXMKKyAgICAgICAgICAgIGJkID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIpCisgICAgICAgICAgICBwcmludCgnQ29udGVudHMgb2YgJXI6JyAlIGJkKQorICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnByZWZpeCAhPSBzeXMuYmFzZV9wcmVmaXgsICdUZXN0IG5vdCBhcHByb3ByaWF0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gYSB2ZW52JykKKyAgICBkZWYgdGVzdF9wcmVmaXhlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgcHJlZml4IHZhbHVlcyBhcmUgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICAjY2hlY2sgb3VyIHByZWZpeGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCBzeXMuZXhlY19wcmVmaXgpCisKKyAgICAgICAgIyBjaGVjayBhIHZlbnYncyBwcmVmaXhlcworICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIGVudnB5ID0gb3MucGF0aC5qb2luKHNlbGYuZW52X2Rpciwgc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBjbWQgPSBbZW52cHksICctYycsIE5vbmVdCisgICAgICAgIGZvciBwcmVmaXgsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgncHJlZml4Jywgc2VsZi5lbnZfZGlyKSwKKyAgICAgICAgICAgICgncHJlZml4Jywgc2VsZi5lbnZfZGlyKSwKKyAgICAgICAgICAgICgnYmFzZV9wcmVmaXgnLCBzeXMucHJlZml4KSwKKyAgICAgICAgICAgICgnYmFzZV9leGVjX3ByZWZpeCcsIHN5cy5leGVjX3ByZWZpeCkpOgorICAgICAgICAgICAgY21kWzJdID0gJ2ltcG9ydCBzeXM7IHByaW50KHN5cy4lcyknICUgcHJlZml4CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGV4cGVjdGVkLmVuY29kZSgpKQorCisgICAgZGVmIHRlc3Rfb3ZlcndyaXRlX2V4aXN0aW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjb250cm9sIG9mIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGVudmlyb25tZW50IGRpcmVjdG9yeS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSkKKyAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorCisgICAgZGVmIHRlc3RfdXBncmFkZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdXBncmFkaW5nIGFuIGV4aXN0aW5nIGVudmlyb25tZW50IGRpcmVjdG9yeS4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIodXBncmFkZT1UcnVlKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUoYnVpbGRlci5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmJpbmRpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmluY2x1ZGUpCisgICAgICAgIHNlbGYuaXNkaXIoKnNlbGYubGliKQorICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZuKTogICMgZGlhZ25vc3RpY3MgZm9yIFdpbmRvd3MgYnVpbGRib3QgZmFpbHVyZXMKKyAgICAgICAgICAgIGJkID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIpCisgICAgICAgICAgICBwcmludCgnQ29udGVudHMgb2YgJXI6JyAlIGJkKQorICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKKworICAgIGRlZiB0ZXN0X2lzb2xhdGlvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgaXNvbGF0aW9uIGZyb20gc3lzdGVtIHNpdGUtcGFja2FnZXMKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBzc3AsIHMgaW4gKChUcnVlLCAndHJ1ZScpLCAoRmFsc2UsICdmYWxzZScpKToKKyAgICAgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSwgc3lzdGVtX3NpdGVfcGFja2FnZXM9c3NwKQorICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RleHRfZmlsZV9jb250ZW50cygncHl2ZW52LmNmZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzID0gJXNcbicgJSBzLCBkYXRhKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX3N5bWxpbmsoKSwgJ05lZWRzIHN5bWxpbmtzJykKKyAgICBkZWYgdGVzdF9zeW1saW5raW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzeW1saW5raW5nIHdvcmtzIGFzIGV4cGVjdGVkCisgICAgICAgICIiIgorICAgICAgICBmb3IgdXNsIGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUsIHN5bWxpbmtzPXVzbCkKKyAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICAgICAgIyBEb24ndCB0ZXN0IHdoZW4gRmFsc2UsIGJlY2F1c2UgZS5nLiAncHl0aG9uJyBpcyBhbHdheXMKKyAgICAgICAgICAgICMgc3ltbGlua2VkIHRvICdweXRob24zLjMnIGluIHRoZSBlbnYsIGV2ZW4gd2hlbiBzeW1saW5raW5nIGluCisgICAgICAgICAgICAjIGdlbmVyYWwgaXNuJ3Qgd2FudGVkLgorICAgICAgICAgICAgaWYgdXNsOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhmbikpCisKKyAgICAjIElmIGEgdmVudiBpcyBjcmVhdGVkIGZyb20gYSBzb3VyY2UgYnVpbGQgYW5kIHRoYXQgdmVudiBpcyB1c2VkIHRvCisgICAgIyBydW4gdGhlIHRlc3QsIHRoZSBweXZlbnYuY2ZnIGluIHRoZSB2ZW52IGNyZWF0ZWQgaW4gdGhlIHRlc3Qgd2lsbAorICAgICMgcG9pbnQgdG8gdGhlIHZlbnYgYmVpbmcgdXNlZCB0byBydW4gdGhlIHRlc3QsIGFuZCB3ZSBsb3NlIHRoZSBsaW5rCisgICAgIyB0byB0aGUgc291cmNlIGJ1aWxkIC0gc28gUHl0aG9uIGNhbid0IGluaXRpYWxpc2UgcHJvcGVybHkuCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucHJlZml4ICE9IHN5cy5iYXNlX3ByZWZpeCwgJ1Rlc3Qgbm90IGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBhIHZlbnYnKQorICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHN5cy5leGVjdXRhYmxlIHZhbHVlIGlzIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZSh2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBlbnZweSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnJlYWxwYXRoKHNlbGYuZW52X2RpciksIHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgY21kID0gW2VudnB5LCAnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLmV4ZWN1dGFibGUpJ10KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBlbnZweS5lbmNvZGUoKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9zeW1saW5rKCksICdOZWVkcyBzeW1saW5rcycpCisgICAgZGVmIHRlc3RfZXhlY3V0YWJsZV9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgc3lzLmV4ZWN1dGFibGUgdmFsdWUgaXMgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlLCBzeW1saW5rcz1UcnVlKQorICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisgICAgICAgIGVudnB5ID0gb3MucGF0aC5qb2luKG9zLnBhdGgucmVhbHBhdGgoc2VsZi5lbnZfZGlyKSwgc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBjbWQgPSBbZW52cHksICctYycsICdpbXBvcnQgc3lzOyBwcmludChzeXMuZXhlY3V0YWJsZSknXQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGVudnB5LmVuY29kZSgpKQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KEJhc2ljVGVzdCkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YWl0My5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKaW5kZXggNzg2ZTYwYi4uYmQwNmM4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YWl0My5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CkBAIC0xOSwxMyArMTksMTYgQEAKIAogY2xhc3MgV2FpdDNUZXN0KEZvcmtXYWl0KToKICAgICBkZWYgd2FpdF9pbXBsKHNlbGYsIGNwaWQpOgotICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICMgVGhpcyBtYW55IGl0ZXJhdGlvbnMgY2FuIGJlIHJlcXVpcmVkLCBzaW5jZSBzb21lIHByZXZpb3VzbHkgcnVuCisgICAgICAgICMgdGVzdHMgKGUuZy4gdGVzdF9jdHlwZXMpIGNvdWxkIGhhdmUgc3Bhd25lZCBhIGxvdCBvZiBjaGlsZHJlbgorICAgICAgICAjIHZlcnkgcXVpY2tseS4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMzApOgogICAgICAgICAgICAgIyB3YWl0MygpIHNob3VsZG4ndCBoYW5nLCBidXQgc29tZSBvZiB0aGUgYnVpbGRib3RzIHNlZW0gdG8gaGFuZwogICAgICAgICAgICAgIyBpbiB0aGUgZm9ya2luZyB0ZXN0cy4gIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBmaXggdGhlIHByb2JsZW0uCiAgICAgICAgICAgICBzcGlkLCBzdGF0dXMsIHJ1c2FnZSA9IG9zLndhaXQzKG9zLldOT0hBTkcpCiAgICAgICAgICAgICBpZiBzcGlkID09IGNwaWQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMS4wKQorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGlkLCBjcGlkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgImNhdXNlID0gJWQsIGV4aXQgPSAlZCIgJSAoc3RhdHVzJjB4ZmYsIHN0YXR1cz4+OCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQppbmRleCA3OWJlODM1Li45NTNiMjgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKQEAgLTUxMiwxMiArNTEyLDExIEBACiAgICAgZGVmIHRlc3Rfc2hvd3dhcm5pbmdfbm90X2NhbGxhYmxlKHNlbGYpOgogICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCi0gICAgICAgICAgICBvbGRfc2hvd3dhcm5pbmcgPSBzZWxmLm1vZHVsZS5zaG93d2FybmluZworICAgICAgICAgICAgc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcgPSBwcmludAorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX291dHB1dCgnc3Rkb3V0Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignV2FybmluZyEnKQogICAgICAgICAgICAgc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcgPSAyMwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tb2R1bGUud2FybiwgIldhcm5pbmchIikKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcgPSBvbGRfc2hvd3dhcm5pbmcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tb2R1bGUud2FybiwgIldhcm5pbmchIikKIAogICAgIGRlZiB0ZXN0X3Nob3dfd2FybmluZ19vdXRwdXQoc2VsZik6CiAgICAgICAgICMgV2l0aCBzaG93YXJuaW5nKCkgbWlzc2luZywgbWFrZSBzdXJlIHRoYXQgb3V0cHV0IGlzIG9rYXkuCkBAIC01NDcsMTAgKzU0NiwxMyBAQAogICAgICAgICBnbG9iYWxzX2RpY3QgPSBnbG9iYWxzKCkKICAgICAgICAgb2xkZmlsZSA9IGdsb2JhbHNfZGljdFsnX19maWxlX18nXQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSkgYXMgdzoKKyAgICAgICAgICAgIGNhdGNoID0gb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZT1zZWxmLm1vZHVsZSkKKyAgICAgICAgICAgIHdpdGggY2F0Y2ggYXMgdzoKICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCiAgICAgICAgICAgICAgICAgZ2xvYmFsc19kaWN0WydfX2ZpbGVfXyddID0gTm9uZQogICAgICAgICAgICAgICAgIG9yaWdpbmFsX3dhcm5pbmdzLndhcm4oJ3Rlc3QnLCBVc2VyV2FybmluZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHcpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZ2xvYmFsc19kaWN0WydfX2ZpbGVfXyddID0gb2xkZmlsZQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYmJyb3dzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3dlYmJyb3dzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiOTM2NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2ViYnJvd3Nlci5weQpAQCAtMCwwICsxLDE5MiBAQAoraW1wb3J0IHdlYmJyb3dzZXIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN1YnByb2Nlc3MKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK1VSTCA9ICdodHRwOi8vd3d3LmV4YW1wbGUuY29tJworQ01EX05BTUUgPSAndGVzdCcKKworCitjbGFzcyBQb3Blbk1vY2sobW9jay5NYWdpY01vY2spOgorCisgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgd2FpdChzZWxmLCBzZWNvbmRzPU5vbmUpOgorICAgICAgICByZXR1cm4gMAorCisKK2NsYXNzIENvbW1hbmRUZXN0TWl4aW46CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgbWV0aCwgKiwgYXJncz1bVVJMXSwga3c9e30sIG9wdGlvbnMsIGFyZ3VtZW50cyk6CisgICAgICAgICIiIkdpdmVuIGEgd2ViIGJyb3dzZXIgaW5zdGFuY2UgbWV0aG9kIG5hbWUgYWxvbmcgd2l0aCBhcmd1bWVudHMgYW5kCisgICAgICAgIGtleXdvcmRzIGZvciBzYW1lICh3aGljaCBkZWZhdWx0cyB0byB0aGUgc2luZ2xlIGFyZ3VtZW50IFVSTCksIGNyZWF0ZXMKKyAgICAgICAgYSBicm93c2VyIGluc3RhbmNlIGZyb20gdGhlIGNsYXNzIHBvaW50ZWQgdG8gYnkgc2VsZi5icm93c2VyLCBjYWxscyB0aGUKKyAgICAgICAgaW5kaWNhdGVkIGluc3RhbmNlIG1ldGhvZCB3aXRoIHRoZSBpbmRpY2F0ZWQgYXJndW1lbnRzLCBhbmQgY29tcGFyZXMKKyAgICAgICAgdGhlIHJlc3VsdGluZyBvcHRpb25zIGFuZCBhcmd1bWVudHMgcGFzc2VkIHRvIFBvcGVuIGJ5IHRoZSBicm93c2VyCisgICAgICAgIGluc3RhbmNlIGFnYWluc3QgdGhlICdvcHRpb25zJyBhbmQgJ2FyZ3MnIGxpc3RzLiAgT3B0aW9ucyBhcmUgY29tcGFyZWQKKyAgICAgICAgaW4gYSBwb3NpdGlvbiBpbmRlcGVuZGVudCBmYXNoaW9uLCBhbmQgdGhlIGFyZ3VtZW50cyBhcmUgY29tcGFyZWQgaW4KKyAgICAgICAgc2VxdWVuY2Ugb3JkZXIgdG8gd2hhdGV2ZXIgaXMgbGVmdCBvdmVyIGFmdGVyIHJlbW92aW5nIHRoZSBvcHRpb25zLgorCisgICAgICAgICIiIgorICAgICAgICBwb3BlbiA9IFBvcGVuTW9jaygpCisgICAgICAgIHN1cHBvcnQucGF0Y2goc2VsZiwgc3VicHJvY2VzcywgJ1BvcGVuJywgcG9wZW4pCisgICAgICAgIGJyb3dzZXIgPSBzZWxmLmJyb3dzZXJfY2xhc3MobmFtZT1DTURfTkFNRSkKKyAgICAgICAgZ2V0YXR0cihicm93c2VyLCBtZXRoKSgqYXJncywgKiprdykKKyAgICAgICAgcG9wZW5fYXJncyA9IHN1YnByb2Nlc3MuUG9wZW4uY2FsbF9hcmdzWzBdWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9wZW5fYXJnc1swXSwgQ01EX05BTUUpCisgICAgICAgIHBvcGVuX2FyZ3MucG9wKDApCisgICAgICAgIGZvciBvcHRpb24gaW4gb3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3B0aW9uLCBwb3Blbl9hcmdzKQorICAgICAgICAgICAgcG9wZW5fYXJncy5wb3AocG9wZW5fYXJncy5pbmRleChvcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcGVuX2FyZ3MsIGFyZ3VtZW50cykKKworCitjbGFzcyBHZW5lcmljQnJvd3NlckNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkdlbmVyaWNCcm93c2VyCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworCitjbGFzcyBCYWNrZ3JvdW5kQnJvd3NlckNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkJhY2tncm91bmRCcm93c2VyCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworCitjbGFzcyBDaHJvbWVDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5DaHJvbWUKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9W10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIGt3PWRpY3QoYXV0b3JhaXNlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy0tbmV3LXdpbmRvdyddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworCitjbGFzcyBNb3ppbGxhQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuTW96aWxsYQorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1ub3JhaXNlJywgJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJhaXNlJywgJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy13aW5kb3cpJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctdGFiKScuZm9ybWF0KFVSTCldKQorCisKK2NsYXNzIEdhbGVvbkNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkdhbGVvbgorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1uJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIGt3PWRpY3QoYXV0b3JhaXNlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLW5vcmFpc2UnLCAnLW4nXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctdyddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXcnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgT3BlcmFDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5PcGVyYQorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIGt3PWRpY3QoYXV0b3JhaXNlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZScsICctbm9yYWlzZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctd2luZG93KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy1wYWdlKScuZm9ybWF0KFVSTCldKQorCisKK2NsYXNzIEVMaW5rc0NvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkVsaW5rcworCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXdpbmRvdyknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXRhYiknLmZvcm1hdChVUkwpXSkKKworCitpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CmluZGV4IDM0YzNkZWEuLmViN2Y3NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQpAQCAtMTYsMTYgKzE2LDEyIEBACiAgICAgdHJ5OgogICAgICAgICAjIEFzayB0aGUgbWl4ZXIgQVBJIGZvciB0aGUgbnVtYmVyIG9mIGRldmljZXMgaXQga25vd3MgYWJvdXQuCiAgICAgICAgICMgV2hlbiB0aGVyZSBhcmUgbm8gZGV2aWNlcywgUGxheVNvdW5kIHdpbGwgZmFpbC4KLSAgICAgICAgaWYgY3R5cGVzLndpbmRsbC53aW5tbS5taXhlckdldE51bURldnMoKSBpcyAwOgorICAgICAgICBpZiBjdHlwZXMud2luZGxsLndpbm1tLm1peGVyR2V0TnVtRGV2cygpID09IDA6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBrZXkgPSB3aW5yZWcuT3BlbktleUV4KHdpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwKICAgICAgICAgICAgICAgICAiQXBwRXZlbnRzXFNjaGVtZXNcQXBwc1wuRGVmYXVsdFx7MH1cLkRlZmF1bHQiLmZvcm1hdChzb3VuZCkpCi0gICAgICAgIHZhbHVlID0gd2lucmVnLkVudW1WYWx1ZShrZXksIDApWzFdCi0gICAgICAgIGlmIHZhbHVlIGlzIG5vdCAiIjoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHdpbnJlZy5FbnVtVmFsdWUoa2V5LCAwKVsxXSAhPSAiIgogICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CiAgICAgICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKaW5kZXggMDhmOGQ5YS4uMDVjMWY0ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQpAQCAtOSw2ICs5LDggQEAKIGZyb20gd3NnaXJlZi5zaW1wbGVfc2VydmVyIGltcG9ydCBtYWtlX3NlcnZlcgogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8sIEJ1ZmZlcmVkUmVhZGVyCiBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgQmFzZVNlcnZlcgorZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX2ltcGxlbWVudGF0aW9uCisKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCkBAIC0xMDAsOSArMTAyLDExIEBACiBjbGFzcyBJbnRlZ3JhdGlvblRlc3RzKFRlc3RDYXNlKToKIAogICAgIGRlZiBjaGVja19oZWxsbyhzZWxmLCBvdXQsIGhhc19sZW5ndGg9VHJ1ZSk6CisgICAgICAgIHB5dmVyID0gKHB5dGhvbl9pbXBsZW1lbnRhdGlvbigpICsgIi8iICsKKyAgICAgICAgICAgICAgICBzeXMudmVyc2lvbi5zcGxpdCgpWzBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwKICAgICAgICAgICAgICgiSFRUUC8xLjAgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICJTZXJ2ZXI6IFdTR0lTZXJ2ZXIvMC4yIFB5dGhvbi8iK3N5cy52ZXJzaW9uLnNwbGl0KClbMF0rIlxyXG4iCisgICAgICAgICAgICAiU2VydmVyOiBXU0dJU2VydmVyLzAuMiAiICsgcHl2ZXIgKyJcclxuIgogICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxyXG4iCiAgICAgICAgICAgICAiRGF0ZTogTW9uLCAwNSBKdW4gMjAwNiAxODo0OTo1NCBHTVRcclxuIiArCiAgICAgICAgICAgICAoaGFzX2xlbmd0aCBhbmQgICJDb250ZW50LUxlbmd0aDogMTNcclxuIiBvciAiIikgKwpAQCAtMTU2LDkgKzE2MCwxMSBAQAogICAgICAgICBvdXQsIGVyciA9IHJ1bl9hbW9jayh2YWxpZGF0b3IoYXBwKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5lbmRzd2l0aCgnIkdFVCAvIEhUVFAvMS4wIiAyMDAgNFxuJykpCiAgICAgICAgIHZlciA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0uZW5jb2RlKCdhc2NpaScpCisgICAgICAgIHB5ICA9IHB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBweXZlciA9IHB5ICsgYiIvIiArIHZlcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIGIiSFRUUC8xLjAgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAgICBiIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgUHl0aG9uLyIgKyB2ZXIgKyBiIlxyXG4iCisgICAgICAgICAgICAgICAgYiJTZXJ2ZXI6IFdTR0lTZXJ2ZXIvMC4yICIrIHB5dmVyICsgYiJcclxuIgogICAgICAgICAgICAgICAgIGIiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04XHJcbiIKICAgICAgICAgICAgICAgICBiIkRhdGU6IFdlZCwgMjQgRGVjIDIwMDggMTM6Mjk6MzIgR01UXHJcbiIKICAgICAgICAgICAgICAgICBiIlxyXG4iCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CmluZGV4IDMwOTJmM2IuLjljZWJjM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CkBAIC0xLDI4ICsxLDM0IEBACiAjIHhtbC5ldHJlZSB0ZXN0LiAgVGhpcyBmaWxlIGNvbnRhaW5zIGVub3VnaCB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdAogIyBhbGwgaW5jbHVkZWQgY29tcG9uZW50cyB3b3JrIGFzIHRoZXkgc2hvdWxkLgogIyBMYXJnZSBwYXJ0cyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHVwc3RyZWFtIHRlc3Qgc3VpdGUuCi0KLSMgSU1QT1JUQU5UOiB0aGUgc2FtZSBkb2N0ZXN0cyBhcmUgcnVuIGZyb20gInRlc3RfeG1sX2V0cmVlX2MiIGluCi0jIG9yZGVyIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBDIGltcGxlbWVudGF0aW9uIGFuZCB0aGUKLSMgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorIworIyBQTEVBU0Ugd3JpdGUgYWxsIG5ldyB0ZXN0cyB1c2luZyB0aGUgc3RhbmRhcmQgdW5pdHRlc3QgaW5mcmFzdHJ1Y3R1cmUgYW5kCisjIG5vdCBkb2N0ZXN0LgorIworIyBJTVBPUlRBTlQ6IHRoZSBzYW1lIHRlc3RzIGFyZSBydW4gZnJvbSAidGVzdF94bWxfZXRyZWVfYyIgaW4gb3JkZXIKKyMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIEMgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBQeXRob24KKyMgaW1wbGVtZW50YXRpb24uCiAjCiAjIEZvciB0aGlzIHB1cnBvc2UsIHRoZSBtb2R1bGUtbGV2ZWwgIkVUIiBzeW1ib2wgaXMgdGVtcG9yYXJpbHkKICMgbW9ua2V5LXBhdGNoZWQgd2hlbiBydW5uaW5nIHRoZSAidGVzdF94bWxfZXRyZWVfYyIgdGVzdCBzdWl0ZS4KICMgRG9uJ3QgcmUtaW1wb3J0ICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUiIG1vZHVsZSBpbiB0aGUgZG9jc3RyaW5nLAogIyBleGNlcHQgaWYgdGhlIHRlc3QgaXMgc3BlY2lmaWMgdG8gdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KIAotaW1wb3J0IHN5cwogaW1wb3J0IGh0bWwKK2ltcG9ydCBpbworaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgZmluZGZpbGUsIHVubGluaywgaW1wb3J0X2ZyZXNoX21vZHVsZSwgZ2NfY29sbGVjdAogCi1mcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgRVQKK3B5RVQgPSBOb25lCitFVCA9IE5vbmUKIAogU0lNUExFX1hNTEZJTEUgPSBmaW5kZmlsZSgic2ltcGxlLnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogdHJ5OgotICAgIFNJTVBMRV9YTUxGSUxFLmVuY29kZSgidXRmOCIpCisgICAgU0lNUExFX1hNTEZJTEUuZW5jb2RlKCJ1dGYtOCIpCiBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJmaWxlbmFtZSBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogU0lNUExFX05TX1hNTEZJTEUgPSBmaW5kZmlsZSgic2ltcGxlLW5zLnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQpAQCAtNTcsNiArNjMsMjIgQEAKIDwvYm9keT4KICIiIgogCitTQU1QTEVfWE1MX05TX0VMRU1TID0gIiIiCis8cm9vdD4KKzxoOnRhYmxlIHhtbG5zOmg9ImhlbGxvIj4KKyAgPGg6dHI+CisgICAgPGg6dGQ+QXBwbGVzPC9oOnRkPgorICAgIDxoOnRkPkJhbmFuYXM8L2g6dGQ+CisgIDwvaDp0cj4KKzwvaDp0YWJsZT4KKworPGY6dGFibGUgeG1sbnM6Zj0iZm9vIj4KKyAgPGY6bmFtZT5BZnJpY2FuIENvZmZlZSBUYWJsZTwvZjpuYW1lPgorICA8Zjp3aWR0aD44MDwvZjp3aWR0aD4KKyAgPGY6bGVuZ3RoPjEyMDwvZjpsZW5ndGg+Cis8L2Y6dGFibGU+Cis8L3Jvb3Q+CisiIiIKIAogZGVmIHNhbml0eSgpOgogICAgICIiIgpAQCAtMTg4LDEwICsyMTAsOCBAQAogCiAgICAgVGhlc2UgbWV0aG9kcyByZXR1cm4gYW4gaXRlcmFibGUuIFNlZSBidWcgNjQ3Mi4KIAotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyKCJ0YWciKS5fX25leHRfXykKICAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcmZpbmQoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCgiKiIpLl9fbmV4dF9fKQotICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyKCJ0YWciKS5fX25leHRfXykKICAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcmZpbmQoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyZmluZCgiKiIpLl9fbmV4dF9fKQogCkBAIC0yNzAsNDIgKzI5MCw2IEBACiAgICAgJzx0YWc+aGVsbG88L3RhZz4nCiAgICAgIiIiCiAKLSMgT25seSB3aXRoIFB5dGhvbiBpbXBsZW1lbnRhdGlvbgotZGVmIHNpbXBsZWZpbmQoKToKLSAgICAiIiIKLSAgICBUZXN0IGZpbmQgbWV0aG9kcyB1c2luZyB0aGUgZWxlbWVudHBhdGggZmFsbGJhY2suCi0KLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlCi0KLSAgICA+Pj4gQ3VycmVudEVsZW1lbnRQYXRoID0gRWxlbWVudFRyZWUuRWxlbWVudFBhdGgKLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFBhdGggPSBFbGVtZW50VHJlZS5fU2ltcGxlRWxlbWVudFBhdGgoKQotICAgID4+PiBlbGVtID0gRWxlbWVudFRyZWUuWE1MKFNBTVBMRV9YTUwpCi0gICAgPj4+IGVsZW0uZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidGFnIikKLSAgICAndGV4dCcKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidG9nIikKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidG9nIiwgImRlZmF1bHQiKQotICAgICdkZWZhdWx0JwotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgidGFnIikKLSAgICAndGV4dCcKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ0YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZycsICd0YWcnXQotCi0gICAgUGF0aCBzeW50YXggZG9lc24ndCB3b3JrIGluIHRoaXMgY2FzZS4KLQotICAgID4+PiBlbGVtLmZpbmQoInNlY3Rpb24vdGFnIikKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgic2VjdGlvbi90YWciKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vdGFnIikpCi0gICAgW10KLQotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEN1cnJlbnRFbGVtZW50UGF0aAotICAgICIiIgotCiBkZWYgZmluZCgpOgogICAgICIiIgogICAgIFRlc3QgZmluZCBtZXRob2RzIChpbmNsdWRpbmcgeHBhdGggc3ludGF4KS4KQEAgLTQ2MCwxNyArNDQ0LDE5IEBACiAgICAgIiIiCiAgICAgQ2hlY2sgdGhhdCB0aGUgcGF0aCBjYWNoZSBiZWhhdmVzIHNhbmVseS4KIAorICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKKwogICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCiAgICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gY2FjaGVfbGVuXzEwID0gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkKKyAgICA+Pj4gY2FjaGVfbGVuXzEwID0gbGVuKEVsZW1lbnRQYXRoLl9jYWNoZSkKICAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA9PSBjYWNoZV9sZW5fMTAKKyAgICA+Pj4gbGVuKEVsZW1lbnRQYXRoLl9jYWNoZSkgPT0gY2FjaGVfbGVuXzEwCiAgICAgVHJ1ZQogICAgID4+PiBmb3IgaSBpbiByYW5nZSgyMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpID4gY2FjaGVfbGVuXzEwCisgICAgPj4+IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpID4gY2FjaGVfbGVuXzEwCiAgICAgVHJ1ZQogICAgID4+PiBmb3IgaSBpbiByYW5nZSg2MDApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA8IDUwMAorICAgID4+PiBsZW4oRWxlbWVudFBhdGguX2NhY2hlKSA8IDUwMAogICAgIFRydWUKICAgICAiIiIKIApAQCAtOTAyLDY1ICs4ODgsNiBAQAogICAgICIiIgogICAgIEVULlhNTCgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz48eG1sIC8+IiAlIGVuY29kaW5nKQogCi1kZWYgZW5jb2RpbmcoKToKLSAgICByIiIiCi0gICAgVGVzdCBlbmNvZGluZyBpc3N1ZXMuCi0KLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCi0gICAgPj4+IGVsZW0udGV4dCA9ICJhYmMiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbjx0YWc+YWJjPC90YWc+IgotCi0gICAgPj4+IGVsZW0udGV4dCA9ICI8JlwiXCc+IgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpICMgY2RhdGEgY2hhcmFjdGVycwotICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGInPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLQotICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAiPCZcIlwnPiIKLSAgICA+Pj4gZWxlbS50ZXh0ID0gTm9uZQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYic8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0KLSAgICA+Pj4gZWxlbS50ZXh0ID0gJ1x4ZTVceGY2XHhmNjw+JwotICAgID4+PiBlbGVtLmF0dHJpYi5jbGVhcigpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPlx4ZTVceGY2XHhmNiZsdDsmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWc+XHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZz4mIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbjx0YWc+XHhlNVx4ZjZceGY2Jmx0OyZndDs8L3RhZz4iCi0KLSAgICA+Pj4gZWxlbS5hdHRyaWJbImtleSJdID0gJ1x4ZTVceGY2XHhmNjw+JwotICAgID4+PiBlbGVtLnRleHQgPSBOb25lCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnIGtleT0iXHhlNVx4ZjZceGY2Jmx0OyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWcga2V5PSJceGMzXHhhNVx4YzNceGI2XHhjM1x4YjYmbHQ7Jmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZyBrZXk9IiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiJzw/eG1sIHZlcnNpb249XCcxLjBcJyBlbmNvZGluZz1cJ2lzby04ODU5LTFcJz8+XG48dGFnIGtleT0iXHhlNVx4ZjZceGY2Jmx0OyZndDsiIC8+JwotICAgICIiIgotCiBkZWYgbWV0aG9kcygpOgogICAgIHIiIiIKICAgICBUZXN0IHNlcmlhbGl6YXRpb24gbWV0aG9kcy4KQEAgLTk3OSwzNiArOTA2LDYgQEAKICAgICAnMSA8IDJcbicKICAgICAiIiIKIAotZGVmIGl0ZXJhdG9ycygpOgotICAgICIiIgotICAgIFRlc3QgaXRlcmF0b3JzLgotCi0gICAgPj4+IGUgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlLml0ZXIoKSkKLSAgICBbJ2h0bWwnLCAnYm9keScsICdpJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZS5maW5kKCJib2R5IikuaXRlcigpKQotICAgIFsnYm9keScsICdpJ10KLSAgICA+Pj4gc3VtbWFyaXplKG5leHQoZS5pdGVyKCkpKQotICAgICdodG1sJwotICAgID4+PiAiIi5qb2luKGUuaXRlcnRleHQoKSkKLSAgICAndGhpcyBpcyBhIHBhcmFncmFwaC4uLicKLSAgICA+Pj4gIiIuam9pbihlLmZpbmQoImJvZHkiKS5pdGVydGV4dCgpKQotICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLicKLSAgICA+Pj4gbmV4dChlLml0ZXJ0ZXh0KCkpCi0gICAgJ3RoaXMgaXMgYSAnCi0KLSAgICBNZXRob2QgaXRlcnBhcnNlIHNob3VsZCByZXR1cm4gYW4gaXRlcmF0b3IuIFNlZSBidWcgNjQ3Mi4KLQotICAgID4+PiBzb3VyY2VmaWxlID0gc2VyaWFsaXplKGUsIHRvX3N0cmluZz1GYWxzZSkKLSAgICA+Pj4gbmV4dChFVC5pdGVycGFyc2Uoc291cmNlZmlsZSkpICAjIGRvY3Rlc3Q6ICtFTExJUFNJUwotICAgICgnZW5kJywgPEVsZW1lbnQgJ2knIGF0IDB4Li4uPikKLQotICAgID4+PiB0cmVlID0gRVQuRWxlbWVudFRyZWUoTm9uZSkKLSAgICA+Pj4gdHJlZS5pdGVyKCkKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgQXR0cmlidXRlRXJyb3I6ICdOb25lVHlwZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2l0ZXInCi0gICAgIiIiCi0KIEVOVElUWV9YTUwgPSAiIiJcCiA8IURPQ1RZUEUgcG9pbnRzIFsKIDwhRU5USVRZICUgdXNlci1lbnRpdGllcyBTWVNURU0gJ3VzZXItZW50aXRpZXMueG1sJz4KQEAgLTEwNDksMjYgKzk0Niw2IEBACiAgICAgJzxkb2N1bWVudD50ZXh0PC9kb2N1bWVudD4nCiAgICAgIiIiCiAKLWRlZiBlcnJvcih4bWwpOgotICAgICIiIgotCi0gICAgVGVzdCBlcnJvciBoYW5kbGluZy4KLQotICAgID4+PiBpc3N1YmNsYXNzKEVULlBhcnNlRXJyb3IsIFN5bnRheEVycm9yKQotICAgIFRydWUKLSAgICA+Pj4gZXJyb3IoImZvbyIpLnBvc2l0aW9uCi0gICAgKDEsIDApCi0gICAgPj4+IGVycm9yKCI8dGFnPiZmb287PC90YWc+IikucG9zaXRpb24KLSAgICAoMSwgNSkKLSAgICA+Pj4gZXJyb3IoImZvb2JhcjwiKS5wb3NpdGlvbgotICAgICgxLCA2KQotCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBFVC5YTUwoeG1sKQotICAgIGV4Y2VwdCBFVC5QYXJzZUVycm9yOgotICAgICAgICByZXR1cm4gc3lzLmV4Y19pbmZvKClbMV0KLQogZGVmIG5hbWVzcGFjZSgpOgogICAgICIiIgogICAgIFRlc3QgbmFtZXNwYWNlIGlzc3Vlcy4KQEAgLTEyNTYsOCArMTEzMyw4IEBACiAKICAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPicpKQogICAgIGInPD90ZXN0IDx0ZXN0aW5nJj4/PicKLSAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPlx4ZTMnKSwgJ2xhdGluMScpCi0gICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdsYXRpbjEnPz5cXG48P3Rlc3QgPHRlc3RpbmcmPlxceGUzPz4iCisgICAgPj4+IEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgJzx0ZXN0aW5nJj5ceGUzJyksICdsYXRpbi0xJykKKyAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluLTEnPz5cXG48P3Rlc3QgPHRlc3RpbmcmPlxceGUzPz4iCiAgICAgIiIiCiAKICMKQEAgLTEzMzYsMjEgKzEyMTMsMjAgQEAKIDwvZG9jdW1lbnQ+CiAiIiIuZm9ybWF0KGh0bWwuZXNjYXBlKFNJTVBMRV9YTUxGSUxFLCBUcnVlKSkKIAorCiBkZWYgeGluY2x1ZGVfbG9hZGVyKGhyZWYsIHBhcnNlPSJ4bWwiLCBlbmNvZGluZz1Ob25lKToKICAgICB0cnk6CiAgICAgICAgIGRhdGEgPSBYSU5DTFVERVtocmVmXQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcmFpc2UgSU9FcnJvcigicmVzb3VyY2Ugbm90IGZvdW5kIikKKyAgICAgICAgcmFpc2UgT1NFcnJvcigicmVzb3VyY2Ugbm90IGZvdW5kIikKICAgICBpZiBwYXJzZSA9PSAieG1sIjoKLSAgICAgICAgZnJvbSB4bWwuZXRyZWUuRWxlbWVudFRyZWUgaW1wb3J0IFhNTAotICAgICAgICByZXR1cm4gWE1MKGRhdGEpCisgICAgICAgIGRhdGEgPSBFVC5YTUwoZGF0YSkKICAgICByZXR1cm4gZGF0YQogCiBkZWYgeGluY2x1ZGUoKToKICAgICByIiIiCiAgICAgQmFzaWMgaW5jbHVzaW9uIGV4YW1wbGUgKFhJbmNsdWRlIEMuMSkKIAotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgRVQKICAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCiAKICAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkMxLnhtbCIpCkBAIC0xNDA1LDI2ICsxMjgxLDEwIEBACiAgICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDNS54bWwiKQogICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCB4aW5jbHVkZV9sb2FkZXIpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIElPRXJyb3I6IHJlc291cmNlIG5vdCBmb3VuZAorICAgIE9TRXJyb3I6IHJlc291cmNlIG5vdCBmb3VuZAogICAgID4+PiAjIHByaW50KHNlcmlhbGl6ZShkb2N1bWVudCkpICMgQzUKICAgICAiIiIKIAotZGVmIHhpbmNsdWRlX2RlZmF1bHQoKToKLSAgICAiIiIKLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCi0KLSAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoImRlZmF1bHQueG1sIikKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCkKLSAgICA+Pj4gcHJpbnQoc2VyaWFsaXplKGRvY3VtZW50KSkgIyBkZWZhdWx0Ci0gICAgPGRvY3VtZW50PgotICAgICAgPHA+RXhhbXBsZS48L3A+Ci0gICAgICA8cm9vdD4KLSAgICAgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgotICAgICAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAotICAgICAgIDxlbXB0eS1lbGVtZW50IC8+Ci0gICAgPC9yb290PgotICAgIDwvZG9jdW1lbnQ+Ci0gICAgIiIiCiAKICMKICMgYmFkbHkgZm9ybWF0dGVkIHhpOmluY2x1ZGUgdGFncwpAQCAtMTYxMiw3ICsxNDcyLDcgQEAKIAogY2xhc3MgRXhjZXB0aW9uRmlsZToKICAgICBkZWYgcmVhZChzZWxmLCB4KToKLSAgICAgICAgcmFpc2UgSU9FcnJvcgorICAgICAgICByYWlzZSBPU0Vycm9yCiAKIGRlZiB4bWx0b29sa2l0NjAoKToKICAgICAiIiIKQEAgLTE2MjAsNyArMTQ4MCw3IEBACiAgICAgSGFuZGxlIGNyYXNoIGluIHN0cmVhbSBzb3VyY2UuCiAgICAgPj4+IHRyZWUgPSBFVC5wYXJzZShFeGNlcHRpb25GaWxlKCkpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIElPRXJyb3IKKyAgICBPU0Vycm9yCiAKICAgICAiIiIKIApAQCAtMTg1MSwyNSArMTcxMSw3MDYgQEAKICAgICA+Pj4gRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCd0ZXN0MTA3NzcnLCAnaHR0cDovL215dXJpLycpCiAgICAgIiIiCiAKLWRlZiBjaGVja19odG1sX2VtcHR5X2VsZW1zX3NlcmlhbGl6YXRpb24oc2VsZik6Ci0gICAgIyBpc3N1ZSAxNTk3MAotICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2luZGV4L2VsZW1lbnRzLmh0bWwKLSAgICAiIiIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgID4+PiBlbXB0eV9lbGVtcyA9IFsnQVJFQScsICdCQVNFJywgJ0JBU0VGT05UJywgJ0JSJywgJ0NPTCcsICdGUkFNRScsICdIUicsCi0gICAgLi4uICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXQotICAgID4+PiBlbGVtcyA9ICcnLmpvaW4oJzwlcyAvPicgJSBlbGVtIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKLSAgICA+Pj4gZWxlbXMgPSAnJy5qb2luKCc8JXM+PC8lcz4nICUgKGVsZW0sIGVsZW0pIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKIAotICAgICIiIgorY2xhc3MgQmFzaWNFbGVtZW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYXVnbWVudGF0aW9uX3R5cGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBlID0gRVQuRWxlbWVudCgnam9lJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlLmFwcGVuZCwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuZXh0ZW5kLCBbRVQuRWxlbWVudCgnYmFyJyksICdmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlLmluc2VydCwgMCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9jeWNsaWNfZ2Moc2VsZik6CisgICAgICAgIGNsYXNzIER1bW15OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgVGVzdCB0aGUgc2hvcnRlc3QgY3ljbGU6IGQtPmVsZW1lbnQtPmQKKyAgICAgICAgZCA9IER1bW15KCkKKyAgICAgICAgZC5kdW1teXJlZiA9IEVULkVsZW1lbnQoJ2pvZScsIGF0dHI9ZCkKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGQpCisgICAgICAgIGRlbCBkCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCisKKyAgICAgICAgIyBBIGxvbmdlciBjeWNsZTogZC0+ZS0+ZTItPmQKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2pvZScpCisgICAgICAgIGQgPSBEdW1teSgpCisgICAgICAgIGQuZHVtbXlyZWYgPSBlCisgICAgICAgIHdyZWYgPSB3ZWFrcmVmLnJlZihkKQorICAgICAgICBlMiA9IEVULlN1YkVsZW1lbnQoZSwgJ2ZvbycsIGF0dHI9ZCkKKyAgICAgICAgZGVsIGQsIGUsIGUyCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCisKKyAgICAgICAgIyBBIGN5Y2xlIGJldHdlZW4gRWxlbWVudCBvYmplY3RzIGFzIGNoaWxkcmVuIG9mIG9uZSBhbm90aGVyCisgICAgICAgICMgZTEtPmUyLT5lMy0+ZTEKKyAgICAgICAgZTEgPSBFVC5FbGVtZW50KCdlMScpCisgICAgICAgIGUyID0gRVQuRWxlbWVudCgnZTInKQorICAgICAgICBlMyA9IEVULkVsZW1lbnQoJ2UzJykKKyAgICAgICAgZTEuYXBwZW5kKGUyKQorICAgICAgICBlMi5hcHBlbmQoZTIpCisgICAgICAgIGUzLmFwcGVuZChlMSkKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGUxKQorICAgICAgICBkZWwgZTEsIGUyLCBlMworICAgICAgICBnY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3JlZigpKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgZmxhZyA9IEZhbHNlCisgICAgICAgIGRlZiB3cmVmX2NiKHcpOgorICAgICAgICAgICAgbm9ubG9jYWwgZmxhZworICAgICAgICAgICAgZmxhZyA9IFRydWUKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2UnKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZSwgd3JlZl9jYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmVmKCkudGFnLCAnZScpCisgICAgICAgIGRlbCBlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmVmKCksIE5vbmUpCisKKworY2xhc3MgRWxlbWVudFRyZWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pc3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5QYXJzZUVycm9yLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuUU5hbWUsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5FbGVtZW50VHJlZSwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULkVsZW1lbnQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5UcmVlQnVpbGRlciwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlhNTFBhcnNlciwgdHlwZSkKKworICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfdHJpdmlhbChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgRVQuRWxlbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgTXlFbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50YWcsICdmb28nKQorCisgICAgICAgICMgdGVzdCB0aGF0IGF0dHJpYnV0ZSBhc3NpZ25tZW50IHdvcmtzIChpc3N1ZSAxNDg0OSkKKyAgICAgICAgbXllLnRleHQgPSAiam9lIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50ZXh0LCAiam9lIikKKworICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CisgICAgICAgICAgICAgICAgc3VwZXIoTXlFbGVtZW50LCBzZWxmKS5fX2luaXRfXyh0YWcgKyAnX18nLCBhdHRyaWIsICoqZXh0cmEpCisKKyAgICAgICAgbXllID0gTXlFbGVtZW50KCdmb28nLCB7J2EnOiAxLCAnYic6IDJ9LCBjPTMsIGQ9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUudGFnLCAnZm9vX18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChteWUuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCldKQorCisgICAgZGVmIHRlc3RfRWxlbWVudF9zdWJjbGFzc19uZXdfbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBkZWYgbmV3bWV0aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRhZworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnam9lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUubmV3bWV0aG9kKCksICdqb2UnKQorCisgICAgZGVmIHRlc3RfaHRtbF9lbXB0eV9lbGVtc19zZXJpYWxpemF0aW9uKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE1OTcwCisgICAgICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2luZGV4L2VsZW1lbnRzLmh0bWwKKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gWydBUkVBJywgJ0JBU0UnLCAnQkFTRUZPTlQnLCAnQlInLCAnQ09MJywgJ0ZSQU1FJywgJ0hSJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXToKKyAgICAgICAgICAgIGZvciBlbGVtIGluIFtlbGVtZW50LCBlbGVtZW50Lmxvd2VyKCldOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gJzwlcz4nICUgZWxlbQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUoRVQuWE1MKCc8JXMgLz4nICUgZWxlbSksIG1ldGhvZD0naHRtbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVkLCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkID0gc2VyaWFsaXplKEVULlhNTCgnPCVzPjwvJXM+JyAlIChlbGVtLGVsZW0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0naHRtbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVkLCBleHBlY3RlZCkKKworY2xhc3MgRWxlbWVudEl0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgX2lsaXN0KHNlbGYsIGVsZW0sIHRhZz1Ob25lKToKKyAgICAgICAgcmV0dXJuIHN1bW1hcml6ZV9saXN0KGVsZW0uaXRlcih0YWcpKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIGRvYyA9IEVULlhNTCgiPGh0bWw+PGJvZHk+dGhpcyBpcyBhIDxpPnBhcmFncmFwaDwvaT4uPC9ib2R5Pi4uPC9odG1sPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jKSwgWydodG1sJywgJ2JvZHknLCAnaSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYy5maW5kKCdib2R5JykpLCBbJ2JvZHknLCAnaSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZG9jLml0ZXIoKSkudGFnLCAnaHRtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihkb2MuaXRlcnRleHQoKSksICd0aGlzIGlzIGEgcGFyYWdyYXBoLi4uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGRvYy5maW5kKCdib2R5JykuaXRlcnRleHQoKSksCisgICAgICAgICAgICAndGhpcyBpcyBhIHBhcmFncmFwaC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZG9jLml0ZXJ0ZXh0KCkpLCAndGhpcyBpcyBhICcpCisKKyAgICAgICAgIyBpdGVycGFyc2Ugc2hvdWxkIHJldHVybiBhbiBpdGVyYXRvcgorICAgICAgICBzb3VyY2VmaWxlID0gc2VyaWFsaXplKGRvYywgdG9fc3RyaW5nPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoRVQuaXRlcnBhcnNlKHNvdXJjZWZpbGUpKVswXSwgJ2VuZCcpCisKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0cmVlLml0ZXIpCisKKyAgICBkZWYgdGVzdF9jb3JuZXJzKHNlbGYpOgorICAgICAgICAjIHNpbmdsZSByb290LCBubyBzdWJlbGVtZW50cworICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYSddKQorCisgICAgICAgICMgb25lIGNoaWxkCisgICAgICAgIGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2InXSkKKworICAgICAgICAjIG9uZSBjaGlsZCBhbmQgb25lIGdyYW5kY2hpbGQKKyAgICAgICAgYyA9IEVULlN1YkVsZW1lbnQoYiwgJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnYicsICdjJ10pCisKKyAgICAgICAgIyB0d28gY2hpbGRyZW4sIG9ubHkgZmlyc3Qgd2l0aCBncmFuZGNoaWxkCisgICAgICAgIGQgPSBFVC5TdWJFbGVtZW50KGEsICdkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2InLCAnYycsICdkJ10pCisKKyAgICAgICAgIyByZXBsYWNlIGZpcnN0IGNoaWxkIGJ5IHNlY29uZAorICAgICAgICBhWzBdID0gYVsxXQorICAgICAgICBkZWwgYVsxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnZCddKQorCisgICAgZGVmIHRlc3RfaXRlcl9ieV90YWcoc2VsZik6CisgICAgICAgIGRvYyA9IEVULlhNTCgnJycKKyAgICAgICAgICAgIDxkb2N1bWVudD4KKyAgICAgICAgICAgICAgICA8aG91c2U+CisgICAgICAgICAgICAgICAgICAgIDxyb29tPmJlZHJvb20xPC9yb29tPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tMjwvcm9vbT4KKyAgICAgICAgICAgICAgICA8L2hvdXNlPgorICAgICAgICAgICAgICAgIDxzaGVkPm5vdGhpbmcgaGVyZQorICAgICAgICAgICAgICAgIDwvc2hlZD4KKyAgICAgICAgICAgICAgICA8aG91c2U+CisgICAgICAgICAgICAgICAgICAgIDxyb29tPmJlZHJvb204PC9yb29tPgorICAgICAgICAgICAgICAgIDwvaG91c2U+CisgICAgICAgICAgICA8L2RvY3VtZW50PicnJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYywgJ3Jvb20nKSwgWydyb29tJ10gKiAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYywgJ2hvdXNlJyksIFsnaG91c2UnXSAqIDIpCisKKyAgICAgICAgIyBtYWtlIHN1cmUgYm90aCB0YWc9Tm9uZSBhbmQgdGFnPScqJyByZXR1cm4gYWxsIHRhZ3MKKyAgICAgICAgYWxsX3RhZ3MgPSBbJ2RvY3VtZW50JywgJ2hvdXNlJywgJ3Jvb20nLCAncm9vbScsCisgICAgICAgICAgICAgICAgICAgICdzaGVkJywgJ2hvdXNlJywgJ3Jvb20nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYyksIGFsbF90YWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYywgJyonKSwgYWxsX3RhZ3MpCisKKworY2xhc3MgVHJlZUJ1aWxkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBzYW1wbGUxID0gKCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMnCisgICAgICAgICcgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIicKKyAgICAgICAgJyAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+JworICAgICAgICAnPGh0bWw+dGV4dDxkaXY+c3VidGV4dDwvZGl2PnRhaWw8L2h0bWw+JykKKworICAgIHNhbXBsZTIgPSAnJyc8dG9wbGV2ZWw+c29tZXRleHQ8L3RvcGxldmVsPicnJworCisgICAgZGVmIF9jaGVja19zYW1wbGUxX2VsZW1lbnQoc2VsZiwgZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdodG1sJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRleHQsICd0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhaWwsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hdHRyaWIsIHt9KQorICAgICAgICBjaGlsZHJlbiA9IGxpc3QoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2hpbGRyZW4pLCAxKQorICAgICAgICBjaGlsZCA9IGNoaWxkcmVuWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQudGFnLCAnZGl2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZC50ZXh0LCAnc3VidGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQudGFpbCwgJ3RhaWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkLmF0dHJpYiwge30pCisKKyAgICBkZWYgdGVzdF9kdW1teV9idWlsZGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXNlRHVtbXlCdWlsZGVyOgorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA0MgorCisgICAgICAgIGNsYXNzIER1bW15QnVpbGRlcihCYXNlRHVtbXlCdWlsZGVyKToKKyAgICAgICAgICAgIGRhdGEgPSBzdGFydCA9IGVuZCA9IGxhbWJkYSAqYTogTm9uZQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9RHVtbXlCdWlsZGVyKCkpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKSwgNDIpCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1CYXNlRHVtbXlCdWlsZGVyKCkpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKSwgNDIpCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1vYmplY3QoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuY2xvc2UoKSkKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeVRyZWVCdWlsZGVyKEVULlRyZWVCdWlsZGVyKToKKyAgICAgICAgICAgIGRlZiBmb29iYXIoc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKiAyCisKKyAgICAgICAgdGIgPSBNeVRyZWVCdWlsZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Yi5mb29iYXIoMTApLCAyMCkKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisKKyAgICAgICAgZSA9IHBhcnNlci5jbG9zZSgpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZTFfZWxlbWVudChlKQorCisgICAgZGVmIHRlc3RfZWxlbWVudF9mYWN0b3J5KHNlbGYpOgorICAgICAgICBsc3QgPSBbXQorICAgICAgICBkZWYgbXlmYWN0b3J5KHRhZywgYXR0cmliKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGxzdAorICAgICAgICAgICAgbHN0LmFwcGVuZCh0YWcpCisgICAgICAgICAgICByZXR1cm4gRVQuRWxlbWVudCh0YWcsIGF0dHJpYikKKworICAgICAgICB0YiA9IEVULlRyZWVCdWlsZGVyKGVsZW1lbnRfZmFjdG9yeT1teWZhY3RvcnkpCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9dGIpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMikKKyAgICAgICAgcGFyc2VyLmNsb3NlKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgWyd0b3BsZXZlbCddKQorCisgICAgZGVmIF9jaGVja19lbGVtZW50X2ZhY3RvcnlfY2xhc3Moc2VsZiwgY2xzKToKKyAgICAgICAgdGIgPSBFVC5UcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9Y2xzKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9dGIpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgZSA9IHBhcnNlci5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLCBjbHMpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZTFfZWxlbWVudChlKQorCisgICAgZGVmIHRlc3RfZWxlbWVudF9mYWN0b3J5X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuX2NoZWNrX2VsZW1lbnRfZmFjdG9yeV9jbGFzcyhNeUVsZW1lbnQpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X2ZhY3RvcnlfcHVyZV9weXRob25fc3ViY2xhc3Moc2VsZik6CisgICAgICAgICMgTWltaWNrIFNpbXBsZVRBTCdzIGJlaGF2aW91ciAoaXNzdWUgIzE2MDg5KTogYm90aCB2ZXJzaW9ucyBvZgorICAgICAgICAjIFRyZWVCdWlsZGVyIHNob3VsZCBiZSBhYmxlIHRvIGNvcGUgd2l0aCBhIHN1YmNsYXNzIG9mIHRoZQorICAgICAgICAjIHB1cmUgUHl0aG9uIEVsZW1lbnQgY2xhc3MuCisgICAgICAgIGJhc2UgPSBFVC5fRWxlbWVudAorICAgICAgICAjIE5vdCBmcm9tIGEgQyBleHRlbnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlLl9fbW9kdWxlX18sICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKQorICAgICAgICAjIEZvcmNlIHNvbWUgbXVsdGlwbGUgaW5oZXJpdGFuY2Ugd2l0aCBhIEMgY2xhc3MgdG8gbWFrZSB0aGluZ3MKKyAgICAgICAgIyBtb3JlIGludGVyZXN0aW5nLgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoYmFzZSwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuX2NoZWNrX2VsZW1lbnRfZmFjdG9yeV9jbGFzcyhNeUVsZW1lbnQpCisKKyAgICBkZWYgdGVzdF9kb2N0eXBlKHNlbGYpOgorICAgICAgICBjbGFzcyBEb2N0eXBlUGFyc2VyOgorICAgICAgICAgICAgX2RvY3R5cGUgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBkb2N0eXBlKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOgorICAgICAgICAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSAobmFtZSwgcHViaWQsIHN5c3RlbSkKKworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kb2N0eXBlCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1Eb2N0eXBlUGFyc2VyKCkpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5jbG9zZSgpLAorICAgICAgICAgICAgKCdodG1sJywgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJywKKyAgICAgICAgICAgICAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCcpKQorCisKK2NsYXNzIFhpbmNsdWRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9teV9sb2FkZXIoc2VsZiwgaHJlZiwgcGFyc2UpOgorICAgICAgICAjIFVzZWQgdG8gYXZvaWQgYSB0ZXN0LWRlcGVuZGVuY3kgcHJvYmxlbSB3aGVyZSB0aGUgZGVmYXVsdCBsb2FkZXIKKyAgICAgICAgIyBvZiBFbGVtZW50SW5jbHVkZSB1c2VzIHRoZSBweUVUIHBhcnNlciBmb3IgY0VUIHRlc3RzLgorICAgICAgICBpZiBwYXJzZSA9PSAneG1sJzoKKyAgICAgICAgICAgIHdpdGggb3BlbihocmVmLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIHJldHVybiBFVC5wYXJzZShmKS5nZXRyb290KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdGVzdF94aW5jbHVkZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKKyAgICAgICAgZG9jID0geGluY2x1ZGVfbG9hZGVyKCdkZWZhdWx0LnhtbCcpCisgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jLCBzZWxmLl9teV9sb2FkZXIpCisgICAgICAgIHMgPSBzZXJpYWxpemUoZG9jKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc3RyaXAoKSwgJycnPGRvY3VtZW50PgorICA8cD5FeGFtcGxlLjwvcD4KKyAgPHJvb3Q+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+Zm9vPC9hPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5maW5kKCdhJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZHRleHQoJ2EnLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB4LmZpbmR0ZXh0KHBhdGg9J2EnLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5maW5kYWxsKCdhJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kYWxsKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoeC5pdGVyZmluZCgnYScsIE5vbmUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHguaXRlcmZpbmQocGF0aD0nYScsIG5hbWVzcGFjZXM9Tm9uZSkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuRWxlbWVudCgnYScpLmF0dHJpYiwge30pCisgICAgICAgIGVsZW1lbnRzID0gWworICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgYXR0cmliPWRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgZGljdChocmVmPSIjIiksIGlkPSJmb28iKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBocmVmPSIjIiwgaWQ9ImZvbyIpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSwgaHJlZj0iIyIsIGlkPSJmb28iKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgZSBpbiBlbGVtZW50czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hdHRyaWIsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSkKKworICAgICAgICBlMiA9IEVULlN1YkVsZW1lbnQoZWxlbWVudHNbMF0sICdmb29iYXInLCBhdHRyaWI9eydrZXkxJzogJ3ZhbHVlMSd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUyLmF0dHJpYlsna2V5MSddLCAndmFsdWUxJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbXVzdCBiZSBkaWN0LCBub3Qgc3RyJyk6CisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgIkknbSBub3QgYSBkaWN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ211c3QgYmUgZGljdCwgbm90IHN0cicpOgorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGF0dHJpYj0iSSdtIG5vdCBhIGRpY3QiKQorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHB5RVQsICdvbmx5IGZvciB0aGUgUHl0aG9uIHZlcnNpb24nKQorY2xhc3MgTm9BY2NlbGVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB0aGF0IHRoZSBDIGFjY2VsZXJhdG9yIHdhcyBub3QgaW1wb3J0ZWQgZm9yIHB5RVQKKyAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9weUVUKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5RVQuRWxlbWVudC5fX21vZHVsZV9fLCAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweUVULlN1YkVsZW1lbnQuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTg5Miw0NCArMjQzMyw2OSBAQAogICAgICAgICAgICAgKCJUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLiAgIgogICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLCBEZXByZWNhdGlvbldhcm5pbmcpLAogICAgICAgICAgICAgKCJUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLiAgIgotICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSwKLSAgICAgICAgICAgICMgWE1MUGFyc2VyLmRvY3R5cGUoKSBpcyBkZXByZWNhdGVkLgotICAgICAgICAgICAgKCJUaGlzIG1ldGhvZCBvZiBYTUxQYXJzZXIgaXMgZGVwcmVjYXRlZC4gIERlZmluZSBkb2N0eXBlLi4gIgotICAgICAgICAgICAgICJtZXRob2Qgb24gdGhlIFRyZWVCdWlsZGVyIHRhcmdldC4iLCBEZXByZWNhdGlvbldhcm5pbmcpKQorICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSkKICAgICAgICAgc2VsZi5jaGVja3dhcm5pbmdzID0gc3VwcG9ydC5jaGVja193YXJuaW5ncygqZGVwcmVjYXRpb25zLCBxdWlldD1xdWlldCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQotICAgICAgICBzZWxmLl9uc21hcCA9IEVsZW1lbnRUcmVlLl9uYW1lc3BhY2VfbWFwCi0gICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCisgICAgICAgIHNlbGYuX25zbWFwID0gRVQucmVnaXN0ZXJfbmFtZXNwYWNlLl9uYW1lc3BhY2VfbWFwCiAgICAgICAgICMgQ29weSB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgbWFwcGluZwotICAgICAgICBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcCA9IHNlbGYuX25zbWFwLmNvcHkoKQorICAgICAgICBzZWxmLl9uc21hcF9jb3B5ID0gc2VsZi5fbnNtYXAuY29weSgpCiAgICAgICAgICMgQ29weSB0aGUgcGF0aCBjYWNoZSAoc2hvdWxkIGJlIGVtcHR5KQotICAgICAgICBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlLmNvcHkoKQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gRWxlbWVudFBhdGguX2NhY2hlCisgICAgICAgIEVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUuY29weSgpCiAgICAgICAgIHNlbGYuY2hlY2t3YXJuaW5ncy5fX2VudGVyX18oKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAogICAgICAgICAjIFJlc3RvcmUgbWFwcGluZyBhbmQgcGF0aCBjYWNoZQotICAgICAgICBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcCA9IHNlbGYuX25zbWFwCi0gICAgICAgIEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKKyAgICAgICAgc2VsZi5fbnNtYXAuY2xlYXIoKQorICAgICAgICBzZWxmLl9uc21hcC51cGRhdGUoc2VsZi5fbnNtYXBfY29weSkKKyAgICAgICAgRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5fcGF0aF9jYWNoZQogICAgICAgICBzZWxmLmNoZWNrd2FybmluZ3MuX19leGl0X18oKmFyZ3MpCiAKIAotZGVmIHRlc3RfbWFpbihtb2R1bGVfbmFtZT0neG1sLmV0cmVlLkVsZW1lbnRUcmVlJyk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZQorZGVmIHRlc3RfbWFpbihtb2R1bGU9Tm9uZSk6CisgICAgIyBXaGVuIGludm9rZWQgd2l0aG91dCBhIG1vZHVsZSwgcnVucyB0aGUgUHl0aG9uIEVUIHRlc3RzIGJ5IGxvYWRpbmcgcHlFVC4KKyAgICAjIE90aGVyd2lzZSwgdXNlcyB0aGUgZ2l2ZW4gbW9kdWxlIGFzIHRoZSBFVC4KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgZ2xvYmFsIHB5RVQKKyAgICAgICAgcHlFVCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3htbC5ldHJlZS5FbGVtZW50VHJlZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQ9WydfZWxlbWVudHRyZWUnXSkKKyAgICAgICAgbW9kdWxlID0gcHlFVAogCi0gICAgdXNlX3B5X21vZHVsZSA9IChtb2R1bGVfbmFtZSA9PSAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKKyAgICBnbG9iYWwgRVQKKyAgICBFVCA9IG1vZHVsZQogCi0gICAgIyBUaGUgc2FtZSBkb2N0ZXN0cyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgUHl0aG9uIGFuZCB0aGUgQyBpbXBsZW1lbnRhdGlvbnMKLSAgICBhc3NlcnQgdGVzdF94bWxfZXRyZWUuRVQuX19uYW1lX18gPT0gbW9kdWxlX25hbWUKKyAgICB0ZXN0X2NsYXNzZXMgPSBbCisgICAgICAgIEVsZW1lbnRTbGljaW5nVGVzdCwKKyAgICAgICAgQmFzaWNFbGVtZW50VGVzdCwKKyAgICAgICAgSU9UZXN0LAorICAgICAgICBQYXJzZUVycm9yVGVzdCwKKyAgICAgICAgWGluY2x1ZGVUZXN0LAorICAgICAgICBFbGVtZW50VHJlZVRlc3QsCisgICAgICAgIEVsZW1lbnRJdGVyVGVzdCwKKyAgICAgICAgVHJlZUJ1aWxkZXJUZXN0LAorICAgICAgICBdCiAKLSAgICAjIFhYWCB0aGUgQyBtb2R1bGUgc2hvdWxkIGdpdmUgdGhlIHNhbWUgd2FybmluZ3MgYXMgdGhlIFB5dGhvbiBtb2R1bGUKLSAgICB3aXRoIENsZWFuQ29udGV4dChxdWlldD1ub3QgdXNlX3B5X21vZHVsZSk6Ci0gICAgICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF94bWxfZXRyZWUsIHZlcmJvc2l0eT1UcnVlKQorICAgICMgVGhlc2UgdGVzdHMgd2lsbCBvbmx5IHJ1biBmb3IgdGhlIHB1cmUtUHl0aG9uIHZlcnNpb24gdGhhdCBkb2Vzbid0IGltcG9ydAorICAgICMgX2VsZW1lbnR0cmVlLiBXZSBjYW4ndCB1c2Ugc2tpcFVubGVzcyBoZXJlLCBiZWNhdXNlIHB5RVQgaXMgZmlsbGVkIGluIG9ubHkKKyAgICAjIGFmdGVyIHRoZSBtb2R1bGUgaXMgbG9hZGVkLgorICAgIGlmIHB5RVQ6CisgICAgICAgIHRlc3RfY2xhc3Nlcy5leHRlbmQoWworICAgICAgICAgICAgTm9BY2NlbGVyYXRvclRlc3QsCisgICAgICAgICAgICBdKQogCi0gICAgIyBUaGUgbW9kdWxlIHNob3VsZCBub3QgYmUgY2hhbmdlZCBieSB0aGUgdGVzdHMKLSAgICBhc3NlcnQgdGVzdF94bWxfZXRyZWUuRVQuX19uYW1lX18gPT0gbW9kdWxlX25hbWUKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCisKKyAgICAgICAgIyBYWFggdGhlIEMgbW9kdWxlIHNob3VsZCBnaXZlIHRoZSBzYW1lIHdhcm5pbmdzIGFzIHRoZSBQeXRob24gbW9kdWxlCisgICAgICAgIHdpdGggQ2xlYW5Db250ZXh0KHF1aWV0PShtb2R1bGUgaXMgbm90IHB5RVQpKToKKyAgICAgICAgICAgIHN1cHBvcnQucnVuX2RvY3Rlc3Qoc3lzLm1vZHVsZXNbX19uYW1lX19dLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICBmaW5hbGx5OgorICAgICAgICAjIGRvbid0IGludGVyZmVyZSB3aXRoIHN1YnNlcXVlbnQgdGVzdHMKKyAgICAgICAgRVQgPSBweUVUID0gTm9uZQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CmluZGV4IDJmZjExOGYuLmU0NGM2Y2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQpAQCAtMSwzNiArMSwxMSBAQAogIyB4bWwuZXRyZWUgdGVzdCBmb3IgY0VsZW1lbnRUcmVlCi0KK2ltcG9ydCBzeXMsIHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgYmlnbWVtdGVzdCwgXzJHCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWNFVCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgneG1sLmV0cmVlLmNFbGVtZW50VHJlZScpCi0KLQotIyBjRWxlbWVudFRyZWUgc3BlY2lmaWMgdGVzdHMKLQotZGVmIHNhbml0eSgpOgotICAgIHIiIiIKLSAgICBJbXBvcnQgc2FuaXR5LgotCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBjRWxlbWVudFRyZWUKLQotICAgIElzc3VlICM2Njk3LgotCi0gICAgPj4+IGUgPSBjRWxlbWVudFRyZWUuRWxlbWVudCgnYScpCi0gICAgPj4+IGdldGF0dHIoZSwgJ1x1RDgwMCcpICAgICAgICAgICAjIGRvY3Rlc3Q6ICtFTExJUFNJUwotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgIC4uLgotICAgIFVuaWNvZGVFbmNvZGVFcnJvcjogLi4uCi0KLSAgICA+Pj4gcCA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoKQotICAgID4+PiBwLnZlcnNpb24uc3BsaXQoKVswXQotICAgICdFeHBhdCcKLSAgICA+Pj4gZ2V0YXR0cihwLCAnXHVEODAwJykKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIC4uLgotICAgIEF0dHJpYnV0ZUVycm9yOiAnWE1MUGFyc2VyJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnXHVkODAwJwotICAgICIiIgorY0VUID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgneG1sLmV0cmVlLkVsZW1lbnRUcmVlJywgZnJlc2g9WydfZWxlbWVudHRyZWUnXSkKK2NFVF9hbGlhcyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3htbC5ldHJlZS5jRWxlbWVudFRyZWUnLCBmcmVzaD1bJ19lbGVtZW50dHJlZScsICd4bWwuZXRyZWUnXSkKIAogCiBjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDcsMjcgKzIyLDY0IEBACiAgICAgICAgICAgICBkYXRhID0gTm9uZQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCitjbGFzcyBUZXN0QWxpYXNXb3JraW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdGhhdCB0aGUgY0VUIGFsaWFzIG1vZHVsZSBpcyBhbGl2ZQorICAgIGRlZiB0ZXN0X2FsaWFzX3dvcmtpbmcoc2VsZik6CisgICAgICAgIGUgPSBjRVRfYWxpYXMuRWxlbWVudCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2ZvbycpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY0VULCAncmVxdWlyZXMgX2VsZW1lbnR0cmVlJykKK2NsYXNzIFRlc3RBY2NlbGVyYXRvckltcG9ydGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdGhhdCB0aGUgQyBhY2NlbGVyYXRvciB3YXMgaW1wb3J0ZWQsIGFzIGV4cGVjdGVkCisgICAgZGVmIHRlc3RfY29ycmVjdF9pbXBvcnRfY0VUKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNFVC5TdWJFbGVtZW50Ll9fbW9kdWxlX18sICdfZWxlbWVudHRyZWUnKQorCisgICAgZGVmIHRlc3RfY29ycmVjdF9pbXBvcnRfY0VUX2FsaWFzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNFVF9hbGlhcy5TdWJFbGVtZW50Ll9fbW9kdWxlX18sICdfZWxlbWVudHRyZWUnKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCitAc3VwcG9ydC5jcHl0aG9uX29ubHkKK2NsYXNzIFNpemVvZlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5lbGVtZW50c2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzVQJykKKyAgICAgICAgIyBleHRyYQorICAgICAgICBzZWxmLmV4dHJhID0gc3RydWN0LmNhbGNzaXplKCdQaWlQNFAnKQorCisgICAgY2hlY2tfc2l6ZW9mID0gc3VwcG9ydC5jaGVja19zaXplb2YKKworICAgIGRlZiB0ZXN0X2VsZW1lbnQoc2VsZik6CisgICAgICAgIGUgPSBjRVQuRWxlbWVudCgnYScpCisgICAgICAgIHNlbGYuY2hlY2tfc2l6ZW9mKGUsIHNlbGYuZWxlbWVudHNpemUpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X3dpdGhfYXR0cmliKHNlbGYpOgorICAgICAgICBlID0gY0VULkVsZW1lbnQoJ2EnLCBocmVmPSdhYm91dDonKQorICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplICsgc2VsZi5leHRyYSkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfd2l0aF9jaGlsZHJlbihzZWxmKToKKyAgICAgICAgZSA9IGNFVC5FbGVtZW50KCdhJykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBjRVQuU3ViRWxlbWVudChlLCAnc3BhbicpCisgICAgICAgICMgc2hvdWxkIGhhdmUgc3BhY2UgZm9yIDggY2hpbGRyZW4gbm93CisgICAgICAgIHNlbGYuY2hlY2tfc2l6ZW9mKGUsIHNlbGYuZWxlbWVudHNpemUgKyBzZWxmLmV4dHJhICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmNhbGNzaXplKCc4UCcpKQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZSwgdGVzdF94bWxfZXRyZWVfYwogCiAgICAgIyBSdW4gdGhlIHRlc3RzIHNwZWNpZmljIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uCi0gICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3htbF9ldHJlZV9jLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgTWlzY1Rlc3RzLAorICAgICAgICBUZXN0QWxpYXNXb3JraW5nLAorICAgICAgICBUZXN0QWNjZWxlcmF0b3JJbXBvcnRlZCwKKyAgICAgICAgU2l6ZW9mVGVzdCwKKyAgICAgICAgKQogCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWlzY1Rlc3RzKQorICAgICMgUnVuIHRoZSBzYW1lIHRlc3Qgc3VpdGUgYXMgdGhlIFB5dGhvbiBtb2R1bGUKKyAgICB0ZXN0X3htbF9ldHJlZS50ZXN0X21haW4obW9kdWxlPWNFVCkKIAotICAgICMgQXNzaWduIHRoZSBDIGltcGxlbWVudGF0aW9uIGJlZm9yZSBydW5uaW5nIHRoZSBkb2N0ZXN0cwotICAgICMgUGF0Y2ggdGhlIF9fbmFtZV9fLCB0byBwcmV2ZW50IGNvbmZ1c2lvbiB3aXRoIHRoZSBwdXJlIFB5dGhvbiB0ZXN0Ci0gICAgcHlFVCA9IHRlc3RfeG1sX2V0cmVlLkVUCi0gICAgcHlfX25hbWVfXyA9IHRlc3RfeG1sX2V0cmVlLl9fbmFtZV9fCi0gICAgdGVzdF94bWxfZXRyZWUuRVQgPSBjRVQKLSAgICBpZiBfX25hbWVfXyAhPSAnX19tYWluX18nOgotICAgICAgICB0ZXN0X3htbF9ldHJlZS5fX25hbWVfXyA9IF9fbmFtZV9fCi0gICAgdHJ5OgotICAgICAgICAjIFJ1biB0aGUgc2FtZSB0ZXN0IHN1aXRlIGFzIHhtbC5ldHJlZS5FbGVtZW50VHJlZQotICAgICAgICB0ZXN0X3htbF9ldHJlZS50ZXN0X21haW4obW9kdWxlX25hbWU9J3htbC5ldHJlZS5jRWxlbWVudFRyZWUnKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHRlc3RfeG1sX2V0cmVlLkVUID0gcHlFVAotICAgICAgICB0ZXN0X3htbF9ldHJlZS5fX25hbWVfXyA9IHB5X19uYW1lX18KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQppbmRleCAzODE0MTkxLi4xNmY4NWM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQpAQCAtMjQsNiArMjQsOCBAQAogICAgICAgICAgICdhc2hvcnRsb25nJzogMiwKICAgICAgICAgICAnYW5vdGhlcmxpc3QnOiBbJy56eXguNDEnXSwKICAgICAgICAgICAnYWJhc2U2NCc6IHhtbHJwY2xpYi5CaW5hcnkoYiJteSBkb2cgaGFzIGZsZWFzIiksCisgICAgICAgICAgJ2I2NGJ5dGVzJzogYiJteSBkb2cgaGFzIGZsZWFzIiwKKyAgICAgICAgICAnYjY0Ynl0ZWFycmF5JzogYnl0ZWFycmF5KGIibXkgZG9nIGhhcyBmbGVhcyIpLAogICAgICAgICAgICdib29sZWFuJzogRmFsc2UsCiAgICAgICAgICAgJ3VuaWNvZGUnOiAnXHU0MDAwXHU2MDAwXHU4MDAwJywKICAgICAgICAgICAndWtleVx1NDAwMCc6ICdyZWd1bGFyIHZhbHVlJywKQEAgLTQ0LDI3ICs0Niw1NCBAQAogICAgIGRlZiB0ZXN0X2R1bXBfYmFyZV9kYXRldGltZShzZWxmKToKICAgICAgICAgIyBUaGlzIGNoZWNrcyB0aGF0IGFuIHVud3JhcHBlZCBkYXRldGltZS5kYXRlIG9iamVjdCBjYW4gYmUgaGFuZGxlZAogICAgICAgICAjIGJ5IHRoZSBtYXJzaGFsbGluZyBjb2RlLiAgVGhpcyBjYW4ndCBiZSBkb25lIHZpYSB0ZXN0X2R1bXBfbG9hZCgpCi0gICAgICAgICMgc2luY2Ugd2l0aCB1c2VfZGF0ZXRpbWUgc2V0IHRvIDEgdGhlIHVubWFyc2hhbGxlciB3b3VsZCBjcmVhdGUKKyAgICAgICAgIyBzaW5jZSB3aXRoIHVzZV9idWlsdGluX3R5cGVzIHNldCB0byAxIHRoZSB1bm1hcnNoYWxsZXIgd291bGQgY3JlYXRlCiAgICAgICAgICMgZGF0ZXRpbWUgb2JqZWN0cyBmb3IgdGhlICdkYXRldGltZVsxMjNdJyBrZXlzIGFzIHdlbGwKICAgICAgICAgZHQgPSBkYXRldGltZS5kYXRldGltZSgyMDA1LCAyLCAxMCwgMTEsIDQxLCAyMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQogICAgICAgICBzID0geG1scnBjbGliLmR1bXBzKChkdCwpKQotICAgICAgICAobmV3ZHQsKSwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9MSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgTm9uZSkKIAotICAgICAgICAobmV3ZHQsKSwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQorICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIHhtbHJwY2xpYi5EYXRlVGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPVRydWUpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPUZhbHNlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgeG1scnBjbGliLkRhdGVUaW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCiAKICAgICBkZWYgdGVzdF9kYXRldGltZV9iZWZvcmVfMTkwMChzZWxmKToKICAgICAgICAgIyBzYW1lIGFzIGJlZm9yZSBidXQgd2l0aCBhIGRhdGUgYmVmb3JlIDE5MDAKICAgICAgICAgZHQgPSBkYXRldGltZS5kYXRldGltZSgxLCAgMiwgMTAsIDExLCA0MSwgMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMDAwMTAyMTBUMTE6NDE6MjMnKSkKICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygoZHQsKSkKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIE5vbmUpCiAKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMDAwMTAyMTBUMTE6NDE6MjMnKSkKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCB4bWxycGNsaWIuRGF0ZVRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCiAKICAgICBkZWYgdGVzdF9idWdfMTE2NDkxMiAoc2VsZik6CiAgICAgICAgIGQgPSB4bWxycGNsaWIuRGF0ZVRpbWUoKQpAQCAtMTI1LDYgKzE1NCwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtLmR1bXBfaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxycGNsaWIuTUlOSU5ULTEsIGR1bW15X3dyaXRlKQogCisgICAgZGVmIHRlc3RfZHVtcF9kb3VibGUoc2VsZik6CisgICAgICAgIHhtbHJwY2xpYi5kdW1wcygoZmxvYXQoMiAqKiAzNCksKSkKKyAgICAgICAgeG1scnBjbGliLmR1bXBzKChmbG9hdCh4bWxycGNsaWIuTUFYSU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCh4bWxycGNsaWIuTUlOSU5UKSkpCisgICAgICAgIHhtbHJwY2xpYi5kdW1wcygoZmxvYXQoeG1scnBjbGliLk1BWElOVCArIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCh4bWxycGNsaWIuTUlOSU5UIC0gNDIpKSkKKworICAgICAgICBkZWYgZHVtbXlfd3JpdGUocyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbSA9IHhtbHJwY2xpYi5NYXJzaGFsbGVyKCkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUFYSU5ULCBkdW1teV93cml0ZSkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUlOSU5ULCBkdW1teV93cml0ZSkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUFYSU5UICsgNDIsIGR1bW15X3dyaXRlKQorICAgICAgICBtLmR1bXBfZG91YmxlKHhtbHJwY2xpYi5NSU5JTlQgLSA0MiwgZHVtbXlfd3JpdGUpCisKICAgICBkZWYgdGVzdF9kdW1wX25vbmUoc2VsZik6CiAgICAgICAgIHZhbHVlID0gYWxpc3QgKyBbTm9uZV0KICAgICAgICAgYXJnMSA9IChhbGlzdCArIFtOb25lXSwpCkBAIC0xMzMsNiArMTc4LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbHJwY2xpYi5sb2FkcyhzdHJnKVswXVswXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4bWxycGNsaWIuZHVtcHMsIChhcmcxLCkpCiAKKyAgICBkZWYgdGVzdF9kdW1wX2J5dGVzKHNlbGYpOgorICAgICAgICBzYW1wbGUgPSBiIm15IGRvZyBoYXMgZmxlYXMiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FtcGxlLCB4bWxycGNsaWIuQmluYXJ5KHNhbXBsZSkpCisgICAgICAgIGZvciB0eXBlXyBpbiBieXRlcywgYnl0ZWFycmF5LCB4bWxycGNsaWIuQmluYXJ5OgorICAgICAgICAgICAgdmFsdWUgPSB0eXBlXyhzYW1wbGUpCisgICAgICAgICAgICBzID0geG1scnBjbGliLmR1bXBzKCh2YWx1ZSwpKQorCisgICAgICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgICAgIChuZXd2YWx1ZSwpID0gcmVzdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3ZhbHVlLCBzYW1wbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3dmFsdWUpLCBieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKyAgICAgICAgICAgIChuZXd2YWx1ZSwpID0gcmVzdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3ZhbHVlLCBzYW1wbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3dmFsdWUpLCB4bWxycGNsaWIuQmluYXJ5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKwogICAgIGRlZiB0ZXN0X2dldF9ob3N0X2luZm8oc2VsZik6CiAgICAgICAgICMgc2VlIGJ1ZyAjMzYxMywgdGhpcyByYWlzZWQgYSBUeXBlRXJyb3IKICAgICAgICAgdHJhbnNwID0geG1scnBjLmNsaWVudC5UcmFuc3BvcnQoKQpAQCAtMTQwLDkgKzIwNCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaG9zdC50bGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQXV0aG9yaXphdGlvbicsICdCYXNpYyBkWE5sY2c9PScpXSwge30pKQogCi0gICAgZGVmIHRlc3RfZHVtcF9ieXRlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4bWxycGNsaWIuZHVtcHMsIChiIm15IGRvZyBoYXMgZmxlYXMiLCkpCi0KICAgICBkZWYgdGVzdF9zc2xfcHJlc2VuY2Uoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBzc2wKQEAgLTk4MCwxMCArMTA0MSw0NCBAQAogICAgICAgICAgICAgbGVuKGNvbnRlbnQpKQogCiAKK2NsYXNzIFVzZUJ1aWx0aW5UeXBlc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3VzZV9idWlsdGluX3R5cGVzKHNlbGYpOgorICAgICAgICAjIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18gYWNjZXB0cyB1c2VfYnVpbHRpbl90eXBlcywgd2hpY2gKKyAgICAgICAgIyBtYWtlcyBhbGwgZGlzcGF0Y2ggb2YgYmluYXJ5IGRhdGEgYXMgYnl0ZXMgaW5zdGFuY2VzLCBhbmQgYWxsCisgICAgICAgICMgZGlzcGF0Y2ggb2YgZGF0ZXRpbWUgYXJndW1lbnQgYXMgZGF0ZXRpbWUuZGF0ZXRpbWUgaW5zdGFuY2VzLgorICAgICAgICBzZWxmLmxvZyA9IFtdCisgICAgICAgIGV4cGVjdGVkX2J5dGVzID0gYiJteSBkb2cgaGFzIGZsZWFzIgorICAgICAgICBleHBlY3RlZF9kYXRlID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwOCwgNSwgMjYsIDE4LCAyNSwgMTIpCisgICAgICAgIG1hcnNoYWxlZCA9IHhtbHJwY2xpYi5kdW1wcygoZXhwZWN0ZWRfYnl0ZXMsIGV4cGVjdGVkX2RhdGUpLCAnZm9vYmFyJykKKyAgICAgICAgZGVmIGZvb2JhcigqYXJncyk6CisgICAgICAgICAgICBzZWxmLmxvZy5leHRlbmQoYXJncykKKyAgICAgICAgaGFuZGxlciA9IHhtbHJwYy5zZXJ2ZXIuU2ltcGxlWE1MUlBDRGlzcGF0Y2hlcigKKyAgICAgICAgICAgIGFsbG93X25vbmU9VHJ1ZSwgZW5jb2Rpbmc9Tm9uZSwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgaGFuZGxlci5yZWdpc3Rlcl9mdW5jdGlvbihmb29iYXIpCisgICAgICAgIGhhbmRsZXIuX21hcnNoYWxlZF9kaXNwYXRjaChtYXJzaGFsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYubG9nKSwgMikKKyAgICAgICAgbXlieXRlcywgbXlkYXRlID0gc2VsZi5sb2cKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvZywgW2V4cGVjdGVkX2J5dGVzLCBleHBlY3RlZF9kYXRlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG15ZGF0ZSksIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobXlieXRlcyksIGJ5dGVzKQorCisgICAgZGVmIHRlc3RfY2dpaGFuZGxlcl9oYXNfdXNlX2J1aWx0aW5fdHlwZXNfZmxhZyhzZWxmKToKKyAgICAgICAgaGFuZGxlciA9IHhtbHJwYy5zZXJ2ZXIuQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIodXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhbmRsZXIudXNlX2J1aWx0aW5fdHlwZXMpCisKKyAgICBkZWYgdGVzdF94bWxycGNzZXJ2ZXJfaGFzX3VzZV9idWlsdGluX3R5cGVzX2ZsYWcoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHhtbHJwYy5zZXJ2ZXIuU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgMCksCisgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci51c2VfYnVpbHRpbl90eXBlcykKKworCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKICAgICB4bWxycGNfdGVzdHMgPSBbWE1MUlBDVGVzdENhc2UsIEhlbHBlclRlc3RDYXNlLCBEYXRlVGltZVRlc3RDYXNlLAogICAgICAgICAgQmluYXJ5VGVzdENhc2UsIEZhdWx0VGVzdENhc2VdCisgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChVc2VCdWlsdGluVHlwZXNUZXN0Q2FzZSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKFNpbXBsZVNlcnZlclRlc3RDYXNlKQogICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoS2VlcGFsaXZlU2VydmVyVGVzdENhc2UxKQogICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoS2VlcGFsaXZlU2VydmVyVGVzdENhc2UyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CmluZGV4IGQ3MmY4YWMuLmRmYjVmOWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAKLWltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IGVycm5vCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAgICAgIyBQZXJmb3JtIGEgbWluaW1hbCBzYW5pdHkgY2hlY2sgb24gdGhlIHJlc3VsdCwganVzdCB0byBiZSBzdXJlCiAgICAgICAgICMgdGhlIHJlcXVlc3QgbWVhbnMgd2hhdCB3ZSB0aGluayBpdCBtZWFucy4KLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJ1aWxkZXJzLCBjb2xsZWN0aW9ucy5TZXF1ZW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJ1aWxkZXJzLCBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShbeCBmb3IgeCBpbiBidWlsZGVycyBpZiAiMy54IiBpbiB4XSwgYnVpbGRlcnMpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CmluZGV4IDUxZDhiNDUuLjJlNTJjNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKQEAgLTEsOSArMSwzIEBACi0jIFdlIGNhbiB0ZXN0IHBhcnQgb2YgdGhlIG1vZHVsZSB3aXRob3V0IHpsaWIuCi10cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCiBpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMTksNyArMTMsNyBAQAogZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQsIHJhbmRvbQogZnJvbSB1bml0dGVzdCBpbXBvcnQgc2tpcFVubGVzcwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgZmluZGZpbGUsIHVubGluaywgcmVxdWlyZXNfemxpYiwgcmVxdWlyZXNfYnoyLCByZXF1aXJlc19sem1hCiAKIFRFU1RGTjIgPSBURVNURk4gKyAiMiIKIFRFU1RGTkRJUiA9IFRFU1RGTiArICJkIgpAQCAtMjY5LDQ0ICsyNjMsNDQgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3Rfb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzc2MTA6IGNhbGxzIHRvIHJlYWRsaW5lKCkgaW50ZXJsZWF2ZWQgd2l0aCBjYWxscyB0byByZWFkKCkuCiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfbG93X2NvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiJDaGVjayBmb3IgY2FzZXMgd2hlcmUgY29tcHJlc3NlZCBkYXRhIGlzIGxhcmdlciB0aGFuIG9yaWdpbmFsLiIiIgogICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKQEAgLTMxOSw2ICszMTMsMTAzIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMScpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMicpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbl9iemlwMihzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgZm9yIGNhc2VzIHdoZXJlIGNvbXByZXNzZWQgZGF0YSBpcyBsYXJnZXIgdGhhbiBvcmlnaW5hbC4iIiIKKyAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfQlpJUDIpIGFzIHppcGZwOgorICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInN0cmZpbGUiLCAnMTInKQorCisgICAgICAgICMgR2V0IGFuIG9wZW4gb2JqZWN0IGZvciBzdHJmaWxlCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJyIiwgemlwZmlsZS5aSVBfQlpJUDIpIGFzIHppcGZwOgorICAgICAgICAgICAgd2l0aCB6aXBmcC5vcGVuKCJzdHJmaWxlIikgYXMgb3Blbm9iajoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicxJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicyJykKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3Rfb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfbHptYShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjNzYxMDogY2FsbHMgdG8gcmVhZGxpbmUoKSBpbnRlcmxlYXZlZCB3aXRoIGNhbGxzIHRvIHJlYWQoKS4KKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfbG93X2NvbXByZXNzaW9uX2x6bWEoc2VsZik6CisgICAgICAgICIiIkNoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21wcmVzc2VkIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3JpZ2luYWwuIiIiCisgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX0xaTUEpIGFzIHppcGZwOgorICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInN0cmZpbGUiLCAnMTInKQorCisgICAgICAgICMgR2V0IGFuIG9wZW4gb2JqZWN0IGZvciBzdHJmaWxlCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJyIiwgemlwZmlsZS5aSVBfTFpNQSkgYXMgemlwZnA6CisgICAgICAgICAgICB3aXRoIHppcGZwLm9wZW4oInN0cmZpbGUiKSBhcyBvcGVub2JqOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzInKQorCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfYXJjbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgIi9hYnNvbHV0ZSIpCkBAIC0zNzcsNyArNDY4LDcgQEAKICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmcC5yZWFkKFRFU1RGTiksIGYucmVhZCgpKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcGVyX2ZpbGVfY29tcHJlc3Npb24oc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgZmlsZXMgd2l0aGluIGEgWmlwIGFyY2hpdmUgY2FuIGhhdmUgZGlmZmVyZW50CiAgICAgICAgIGNvbXByZXNzaW9uIG9wdGlvbnMuIiIiCkBAIC00NDYsMTkgKzUzNywzMiBAQAogICAgICAgICAjIHJlbW92ZSB0aGUgdGVzdCBmaWxlIHN1YmRpcmVjdG9yaWVzCiAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCAnemlwdGVzdDJkaXInKSkKIAotICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uX3N0b3JlZChzZWxmKToKICAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQogICAgICAgICB6aXBmcC53cml0ZXN0cigiYS50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX1NUT1JFRCkKLSAgICAgICAgaWYgemxpYjoKLSAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfREVGTEFURUQpCi0KICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2EudHh0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgICAgICBpZiB6bGliOgotICAgICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKKyAgICBAcmVxdWlyZXNfemxpYgorICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uX2RlZmxhdGVkKHNlbGYpOgorICAgICAgICB6aXBmcCA9IHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIpCisgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfREVGTEFURUQpCisgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdiLnR4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9iemlwMihzZWxmKToKKyAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQorICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0JaSVAyKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uX2x6bWEoc2VsZik6CisgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKKyAgICAgICAgemlwZnAud3JpdGVzdHIoImIudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9MWk1BKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfTFpNQSkKIAogICAgIGRlZiB6aXBfdGVzdF93cml0ZXN0cl9wZXJtaXNzaW9ucyhzZWxmLCBmLCBjb21wcmVzc2lvbik6CiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd3JpdGVzdHIgY3JlYXRlcyBmaWxlcyB3aXRoIG1vZGUgMDYwMCwKQEAgLTUxNCw3ICs2MTgsMTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCiAKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKworCisKKworCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF91bmljb2RlX2ZpbGVuYW1lcyhzZWxmKToKICAgICAgICAgIyBidWcgIzEwODAxCiAgICAgICAgIGZuYW1lID0gZmluZGZpbGUoJ3ppcF9jcDQzN19oZWFkZXIuemlwJykKQEAgLTYyMywxMSArNzMyLDIxIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgdGVzdF9hYnNvbHV0ZV9hcmNuYW1lcyhzZWxmKToKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9TVE9SRUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93WmlwNjQ9VHJ1ZSkgYXMgemlwZnA6CkBAIC03NTYsOCArODc1LDQwIEBACiAgICAgICAgICAgICBiJ1x4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg4MFx4MDFceDAwXHgwMFx4MDAnCiAgICAgICAgICAgICBiJ1x4MDBhZmlsZVBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDAnCiAgICAgICAgICAgICBiJ1x4MDFceDAwM1x4MDBceDAwXHgwMDNceDAwXHgwMFx4MDBceDAwXHgwMCcpLAorICAgICAgICB6aXBmaWxlLlpJUF9CWklQMjogKAorICAgICAgICAgICAgYidQS1x4MDNceDA0XHgxNFx4MDNceDAwXHgwMFx4MGNceDAwbnVceDBjPUZBJworICAgICAgICAgICAgYidLRThceDAwXHgwMFx4MDBuXHgwMFx4MDBceDAwXHgwNVx4MDBceDAwXHgwMGFmJworICAgICAgICAgICAgYidpbGVCWmg5MUFZJlNZXHhkNFx4YThceGNhJworICAgICAgICAgICAgYidceDdmXHgwMFx4MDBceDBmXHgxMVx4ODBAXHgwMFx4MDZEXHg5MFx4ODAgXHgwMCBceGE1JworICAgICAgICAgICAgYidQXHhkOSFceDAzXHgwM1x4MTNceDEzXHgxM1x4ODlceGE5XHhhOVx4YzJ1NTpceDlmJworICAgICAgICAgICAgYidceDhiXHhiOSJceDljKEhqVGU/XHg4MFBLXHgwMVx4MDJceDE0JworICAgICAgICAgICAgYidceDAzXHgxNFx4MDNceDAwXHgwMFx4MGNceDAwbnVceDBjPUZBS0U4JworICAgICAgICAgICAgYidceDAwXHgwMFx4MDBuXHgwMFx4MDBceDAwXHgwNVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwJworICAgICAgICAgICAgYidceDAwIFx4ODBceDgwXHg4MVx4MDBceDAwXHgwMFx4MDBhZmlsZVBLJworICAgICAgICAgICAgYidceDA1XHgwNlx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwM1x4MDBceDAwXHgwMFtceDAwJworICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwJyksCisgICAgICAgIHppcGZpbGUuWklQX0xaTUE6ICgKKyAgICAgICAgICAgIGInUEtceDAzXHgwNFx4MTRceDAzXHgwMFx4MDBceDBlXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0VceDFiXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBhZicKKyAgICAgICAgICAgIGInaWxlXHRceDA0XHgwNVx4MDBdXHgwMFx4MDBceDAwXHgwNFx4MDA0XHgxOUknCisgICAgICAgICAgICBiJ1x4ZWVceDhkXHhlOVx4MTdceDg5OjNgXHRxIS44XHgwMFBLJworICAgICAgICAgICAgYidceDAxXHgwMlx4MTRceDAzXHgxNFx4MDNceDAwXHgwMFx4MGVceDAwbnVceDBjPUZBJworICAgICAgICAgICAgYidLRVx4MWJceDAwXHgwMFx4MDBuXHgwMFx4MDBceDAwXHgwNVx4MDBceDAwXHgwMFx4MDBceDAwJworICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwIFx4ODBceDgwXHg4MVx4MDBceDAwXHgwMFx4MDBhZmlsJworICAgICAgICAgICAgYidlUEtceDA1XHgwNlx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwM1x4MDBceDAwJworICAgICAgICAgICAgYidceDAwPlx4MDBceDAwXHgwMFx4MDBceDAwJyksCiAgICAgfQogCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIyBGaWxlIGhhcyBhbiBleHRyYWN0X3ZlcnNpb24gb2YgMTIwCisgICAgICAgIGRhdGEgPSAoYidQS1x4MDNceDA0eFx4MDBceDAwXHgwMFx4MDBceDAwIXBceGExQFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAweFBLXHgwMVx4MDJ4XHgwM3hceDAwXHgwMFx4MDBceDAwJworICAgICAgICBiJ1x4MDAhcFx4YTFAXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJworICAgICAgICBiJ1x4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDAxXHgwMFx4MDBceDAwXHgwMHhQS1x4MDVceDA2JworICAgICAgICBiJ1x4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwL1x4MDBceDAwXHgwMFx4MWZceDAwXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW8uQnl0ZXNJTyhkYXRhKSwgJ3InKQorCiAgICAgZGVmIHRlc3RfdW5pY29kZV9maWxlbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgInciKSBhcyB6ZjoKICAgICAgICAgICAgIHpmLndyaXRlc3RyKCJmb28udHh0IiwgIlRlc3QgZm9yIHVuaWNvZGUgZmlsZW5hbWUiKQpAQCAtOTIyLDYgKzEwNzMsMTcgQEAKICAgICAgICAgY2F1Z2h0LiIiIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOLCAidyIsIC0xKQogCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgICMgZGF0YSBpcyBkZWNsYXJlZCBhcyBzaHJ1bmssIGJ1dCBhY3R1YWxseSBkZWZsYXRlZAorICAgICAgICBkYXRhID0gKGInUEtceDAzXHgwNC5ceDAwXHgwMFx4MDBceDAxXHgwMFx4ZTRDXHhhMUBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwXHgwMHhceDAzXHgwMFBLXHgwMScKKyAgICAgICAgYidceDAyLlx4MDMuXHgwMFx4MDBceDAwXHgwMVx4MDBceGU0Q1x4YTFAXHgwMFx4MDBceDAwXHgwMFx4MDJceDAwXHgwMCcKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgYidceDgwXHgwMVx4MDBceDAwXHgwMFx4MDB4UEtceDA1XHgwNlx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwJworICAgICAgICBiJy9ceDAwXHgwMFx4MDAhXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShpby5CeXRlc0lPKGRhdGEpLCAncicpIGFzIHppcGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB6aXBmLm9wZW4sICd4JykKKwogICAgIGRlZiB0ZXN0X251bGxfYnl0ZV9pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBhIGZpbGVuYW1lIGNvbnRhaW5pbmcgYSBudWxsIGJ5dGUgaXMgcHJvcGVybHkKICAgICAgICAgdGVybWluYXRlZC4iIiIKQEAgLTEwMjMsMTAgKzExODUsMTggQEAKICAgICBkZWYgdGVzdF90ZXN0emlwX3dpdGhfYmFkX2NyY19zdG9yZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfYnppcDIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2x6bWEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiBjaGVja19yZWFkX3dpdGhfYmFkX2NyYyhzZWxmLCBjb21wcmVzc2lvbik6CiAgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZXMgd2l0aCBiYWQgQ1JDcyByYWlzZSBhIEJhZFppcEZpbGUgZXhjZXB0aW9uIHdoZW4gcmVhZC4iIiIKICAgICAgICAgemlwZGF0YSA9IHNlbGYuemlwc193aXRoX2JhZF9jcmNbY29tcHJlc3Npb25dCkBAIC0xMDUxLDEwICsxMjIxLDE4IEBACiAgICAgZGVmIHRlc3RfcmVhZF93aXRoX2JhZF9jcmNfc3RvcmVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19sem1hKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZShzZWxmLCBjb21wcmVzc2lvbik6CiAgICAgICAgICMgSXNzdWUgIzk4Mzc6IFppcEV4dEZpbGUucmVhZCgpIHNob3VsZG4ndCByZXR1cm4gbW9yZSBieXRlcwogICAgICAgICAjIHRoYW4gcmVxdWVzdGVkLgpAQCAtMTA3MSwxMCArMTI0OSwxOCBAQAogICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfc3RvcmVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZF9yZXR1cm5fc2l6ZV9kZWZsYXRlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfYnppcDIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZSh6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZF9yZXR1cm5fc2l6ZV9sem1hKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB0ZXN0X2VtcHR5X3ppcGZpbGUoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBjcmVhdGluZyBhIGZpbGUgaW4gJ3cnIG9yICdhJyBtb2RlIGFuZCBjbG9zaW5nIHdpdGhvdXQKICAgICAgICAgIyBhZGRpbmcgYW55IGZpbGVzIHRvIHRoZSBhcmNoaXZlcyBjcmVhdGVzIGEgdmFsaWQgZW1wdHkgWklQIGZpbGUKQEAgLTExNjEsNyArMTM0Nyw3IEBACiAgICAgICAgIHNlbGYuemlwMi5zZXRwYXNzd29yZChiInBlcmwiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYuemlwMi5yZWFkLCAiemVybyIpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9nb29kX3Bhc3N3b3JkKHNlbGYpOgogICAgICAgICBzZWxmLnppcC5zZXRwYXNzd29yZChiInB5dGhvbiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi56aXAucmVhZCgidGVzdC50eHQiKSwgc2VsZi5wbGFpbikKQEAgLTEyMTEsMTEgKzEzOTcsMjEgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB6aXBfb3Blbl90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKIApAQCAtMTI1MSwxMSArMTQ0NywyMSBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X29wZW5fZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3Rfb3Blbl9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3Rfb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgemlwX3JhbmRvbV9vcGVuX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQogCkBAIC0xMjc5LDEzICsxNDg1LDIzIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCiAKLUBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKworQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCkBAIC0xNDc3LDMyICsxNjkzLDgyIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzc2MTA6IGNhbGxzIHRvIHJlYWRsaW5lKCkgaW50ZXJsZWF2ZWQgd2l0aCBjYWxscyB0byByZWFkKCkuCiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6CiAgICAgICAgICAgICBvcy5yZW1vdmUoZm4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5CmluZGV4IDBlN2Q3M2YuLmE4ZmI3YWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5CkBAIC0xMSwxMiArMTEsNiBAQAogICAgICAgICAndGVzdCByZXF1aXJlcyBsb2FkcyBvZiBkaXNrLXNwYWNlIGJ5dGVzIGFuZCBhIGxvbmcgdGltZSB0byBydW4nCiAgICAgKQogCi0jIFdlIGNhbiB0ZXN0IHBhcnQgb2YgdGhlIG1vZHVsZSB3aXRob3V0IHpsaWIuCi10cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCiBpbXBvcnQgemlwZmlsZSwgb3MsIHVuaXR0ZXN0CiBpbXBvcnQgdGltZQogaW1wb3J0IHN5cwpAQCAtMjQsNyArMTgsNyBAQAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIHJlcXVpcmVzX3psaWIKIAogVEVTVEZOMiA9IFRFU1RGTiArICIyIgogCkBAIC04MSwxMiArNzUsMTIgQEAKICAgICAgICAgZm9yIGYgaW4gVGVtcG9yYXJ5RmlsZSgpLCBURVNURk4yOgogICAgICAgICAgICAgc2VsZi56aXBUZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIGlmIHpsaWI6Ci0gICAgICAgIGRlZiB0ZXN0RGVmbGF0ZWQoc2VsZik6Ci0gICAgICAgICAgICAjIFRyeSB0aGUgdGVtcCBmaWxlIGZpcnN0LiAgSWYgd2UgZG8gVEVTVEZOMiBmaXJzdCwgdGhlbiBpdCBob2dzCi0gICAgICAgICAgICAjIGdpZ2FieXRlcyBvZiBkaXNrIHNwYWNlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCi0gICAgICAgICAgICBmb3IgZiBpbiBUZW1wb3JhcnlGaWxlKCksIFRFU1RGTjI6Ci0gICAgICAgICAgICAgICAgc2VsZi56aXBUZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQorICAgIEByZXF1aXJlc196bGliCisgICAgZGVmIHRlc3REZWZsYXRlZChzZWxmKToKKyAgICAgICAgIyBUcnkgdGhlIHRlbXAgZmlsZSBmaXJzdC4gIElmIHdlIGRvIFRFU1RGTjIgZmlyc3QsIHRoZW4gaXQgaG9ncworICAgICAgICAjIGdpZ2FieXRlcyBvZiBkaXNrIHNwYWNlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCisgICAgICAgIGZvciBmIGluIFRlbXBvcmFyeUZpbGUoKSwgVEVTVEZOMjoKKyAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIGZuYW1lIGluIFRFU1RGTiwgVEVTVEZOMjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKaW5kZXggZGY1ZmY5ZC4uZjdjYjhiOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKQEAgLTksMTIgKzksNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QudGVzdF9pbXBvcnRob29rcyBpbXBvcnQgSW1wb3J0SG9va3NCYXNlVGVzdENhc2UsIHRlc3Rfc3JjLCB0ZXN0X2NvCiAKLSMgc29tZSB0ZXN0cyBjYW4gYmUgcmFuIGV2ZW4gd2l0aG91dCB6bGliCi10cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCiBmcm9tIHppcGZpbGUgaW1wb3J0IFppcEZpbGUsIFppcEluZm8sIFpJUF9TVE9SRUQsIFpJUF9ERUZMQVRFRAogCiBpbXBvcnQgemlwaW1wb3J0CkBAIC0yNSw3ICsxOSw3IEBACiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZXh0cmFjdF90YiwgZXh0cmFjdF9zdGFjaywgcHJpbnRfdGIKIHJhaXNlX3NyYyA9ICdkZWYgZG9fcmFpc2UoKTogcmFpc2UgVHlwZUVycm9yXG4nCiAKLWRlZiBtYWtlX3B5YyhjbywgbXRpbWUpOgorZGVmIG1ha2VfcHljKGNvLCBtdGltZSwgc2l6ZSk6CiAgICAgZGF0YSA9IG1hcnNoYWwuZHVtcHMoY28pCiAgICAgaWYgdHlwZShtdGltZSkgaXMgdHlwZSgwLjApOgogICAgICAgICAjIE1hYyBtdGltZXMgbmVlZCBhIGJpdCBvZiBzcGVjaWFsIGNhc2luZwpAQCAtMzMsMTQgKzI3LDE0IEBACiAgICAgICAgICAgICBtdGltZSA9IGludChtdGltZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG10aW1lID0gaW50KC0weDEwMDAwMDAwMCArIGludChtdGltZSkpCi0gICAgcHljID0gaW1wLmdldF9tYWdpYygpICsgc3RydWN0LnBhY2soIjxpIiwgaW50KG10aW1lKSkgKyBkYXRhCisgICAgcHljID0gaW1wLmdldF9tYWdpYygpICsgc3RydWN0LnBhY2soIjxpaSIsIGludChtdGltZSksIHNpemUgJiAweEZGRkZGRkZGKSArIGRhdGEKICAgICByZXR1cm4gcHljCiAKIGRlZiBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShwYXRoKToKICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKG9zLnNlcCwgJy4nKQogCiBOT1cgPSB0aW1lLnRpbWUoKQotdGVzdF9weWMgPSBtYWtlX3B5Yyh0ZXN0X2NvLCBOT1cpCit0ZXN0X3B5YyA9IG1ha2VfcHljKHRlc3RfY28sIE5PVywgbGVuKHRlc3Rfc3JjKSkKIAogCiBURVNUTU9EID0gInppcHRlc3Rtb2R1bGUiCkBAIC0yMTEsNiArMjA1LDEwIEBACiAgICAgICAgICAgICBtb2QgPSB6aS5sb2FkX21vZHVsZShURVNUUEFDSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZ2V0X2ZpbGVuYW1lKFRFU1RQQUNLKSwgbW9kLl9fZmlsZV9fKQogCisgICAgICAgICAgICBleGlzdGluZ19wYWNrX3BhdGggPSBfX2ltcG9ydF9fKFRFU1RQQUNLKS5fX3BhdGhfX1swXQorICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aF9wYXRoID0gb3MucGF0aC5qb2luKFRFTVBfWklQLCBURVNUUEFDSykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpc3RpbmdfcGFja19wYXRoLCBleHBlY3RlZF9wYXRoX3BhdGgpCisKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyICsgJ19faW5pdF9fJyksIEZhbHNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKHBhY2tkaXIgKyBURVNUUEFDSzIpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKHBhY2tkaXIyICsgVEVTVE1PRCksIEZhbHNlKQpAQCAtMjk5LDcgKzI5Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gX19maWxlX18KICAgICAgICAgaWYgX19sb2FkZXJfXy5nZXRfZGF0YSgic29tZS5kYXRhIikgIT0gYiJzb21lIGRhdGEiOgogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoImJhZCBkYXRhIilcbiIiIgotICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHNyYywgIjw/Pz8+IiwgImV4ZWMiKSwgTk9XKQorICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHNyYywgIjw/Pz8+IiwgImV4ZWMiKSwgTk9XLCBsZW4oc3JjKSkKICAgICAgICAgZmlsZXMgPSB7VEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHB5YyksCiAgICAgICAgICAgICAgICAgICJzb21lLmRhdGEiOiAoTk9XLCAic29tZSBkYXRhIil9CiAgICAgICAgIHNlbGYuZG9UZXN0KHB5Y19leHQsIGZpbGVzLCBURVNUTU9EKQpAQCAtMzE5LDcgKzMxNyw3IEBACiAgICAgICAgIHNlbGYuZG9UZXN0KCIucHkiLCBmaWxlcywgVEVTVE1PRCwgY2FsbD1zZWxmLmFzc2VydE1vZHVsZVNvdXJjZSkKIAogICAgIGRlZiB0ZXN0R2V0Q29tcGlsZWRTb3VyY2Uoc2VsZik6Ci0gICAgICAgIHB5YyA9IG1ha2VfcHljKGNvbXBpbGUodGVzdF9zcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVykKKyAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZSh0ZXN0X3NyYywgIjw/Pz8+IiwgImV4ZWMiKSwgTk9XLCBsZW4odGVzdF9zcmMpKQogICAgICAgICBmaWxlcyA9IHtURVNUTU9EICsgIi5weSI6IChOT1csIHRlc3Rfc3JjKSwKICAgICAgICAgICAgICAgICAgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHB5Yyl9CiAgICAgICAgIHNlbGYuZG9UZXN0KHB5Y19leHQsIGZpbGVzLCBURVNUTU9ELCBjYWxsPXNlbGYuYXNzZXJ0TW9kdWxlU291cmNlKQpAQCAtMzkyLDcgKzM5MCw3IEBACiAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorQHN1cHBvcnQucmVxdWlyZXNfemxpYgogY2xhc3MgQ29tcHJlc3NlZFppcEltcG9ydFRlc3RDYXNlKFVuY29tcHJlc3NlZFppcEltcG9ydFRlc3RDYXNlKToKICAgICBjb21wcmVzc2lvbiA9IFpJUF9ERUZMQVRFRAogCkBAIC00MTcsNyArNDE1LDcgQEAKIAogICAgIGRlZiB0ZXN0RW1wdHlGaWxlKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubGluayhURVNUTU9EKQotICAgICAgICBvcGVuKFRFU1RNT0QsICd3KycpLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShURVNUTU9EKQogICAgICAgICBzZWxmLmFzc2VydFppcEZhaWx1cmUoVEVTVE1PRCkKIAogICAgIGRlZiB0ZXN0RmlsZVVucmVhZGFibGUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQppbmRleCAwNjAxMDhmLi5mN2YzMzk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKQEAgLTE2NywyMCArMTY3LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9Eb2NUZXN0UnVubmVyLnZlcmJvc2VfZmxhZywKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0V4YW1wbGUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9kZWJ1ZywKLSAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZCwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3Rlc3Rzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90cmFpbGluZ19zcGFjZV9pbl90ZXN0LAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jVGVzdFN1aXRlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jVGVzdEZpbmRlciwKICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgIyBUaGVzZSByZW1haW5pbmcgdGVzdHMgYXJlIHRoZSBvbmVzIHdoaWNoIG5lZWQgYWNjZXNzCisgICAgICAgICAgICAgICAgIyBUaGVzZSB0ZXN0cyBhcmUgdGhlIG9uZXMgd2hpY2ggbmVlZCBhY2Nlc3MKICAgICAgICAgICAgICAgICAjIHRvIHRoZSBkYXRhIGZpbGVzLCBzbyB3ZSBkb24ndCBydW4gdGhlbQogICAgICAgICAgICAgICAgIGZhaWxfZHVlX3RvX21pc3NpbmdfZGF0YV9maWxlcyA9IFsKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY0ZpbGVTdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3Rlc3RmaWxlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfdW5pdHRlc3RfcmVwb3J0ZmxhZ3MsCiAgICAgICAgICAgICAgICAgXQorCiAgICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBrbm93bl9nb29kX3Rlc3RzOgogICAgICAgICAgICAgICAgICAgICBfcnVuX29iamVjdF9kb2N0ZXN0KG9iaiwgdGVzdF96aXBwZWRfZG9jdGVzdCkKICAgICAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNjAwODFlMi4uZDYzN2MyZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtNywxMCArNywxNiBAQAogCiB6bGliID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd6bGliJykKIAotdHJ5OgotICAgIGltcG9ydCBtbWFwCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgbW1hcCA9IE5vbmUKKworY2xhc3MgVmVyc2lvblRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xpYnJhcnlfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIG1ham9yIHZlcnNpb24gb2YgdGhlIGFjdHVhbCBsaWJyYXJ5IGluIHVzZSBtYXRjaGVzIHRoZQorICAgICAgICAjIG1ham9yIHZlcnNpb24gdGhhdCB3ZSB3ZXJlIGNvbXBpbGVkIGFnYWluc3QuIFdlIGNhbid0IGd1YXJhbnRlZSB0aGF0CisgICAgICAgICMgdGhlIG1pbm9yIHZlcnNpb25zIHdpbGwgbWF0Y2ggKGV2ZW4gb24gdGhlIG1hY2hpbmUgb24gd2hpY2ggdGhlIG1vZHVsZQorICAgICAgICAjIHdhcyBjb21waWxlZCksIGFuZCB0aGUgQVBJIGlzIHN0YWJsZSBiZXR3ZWVuIG1pbm9yIHZlcnNpb25zLCBzbworICAgICAgICAjIHRlc3Rpbmcgb25seSB0aGUgbWFqb3IgdmVyc2lvbnMgYXZvaWRzIHNwdXJpb3VzIGZhaWx1cmVzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuWkxJQl9SVU5USU1FX1ZFUlNJT05bMF0sIHpsaWIuWkxJQl9WRVJTSU9OWzBdKQogCiAKIGNsYXNzIENoZWNrc3VtVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTczLDEwICsxNzksOCBAQAogICAgIGRlZiB0ZXN0X2JpZ19kZWNvbXByZXNzX2J1ZmZlcihzZWxmLCBzaXplKToKICAgICAgICAgc2VsZi5jaGVja19iaWdfZGVjb21wcmVzc19idWZmZXIoc2l6ZSwgemxpYi5kZWNvbXByZXNzKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0xKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9sZW5ndGhfb3ZlcmZsb3coc2VsZiwgc2l6ZSk6Ci0gICAgICAgIGlmIHNpemUgPCBfNEcgKyAxMDA6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJub3QgZW5vdWdoIGZyZWUgbWVtb3J5LCBuZWVkIGF0IGxlYXN0IDQgR0IiKQogICAgICAgICBkYXRhID0gYid4JyAqIHNpemUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgemxpYi5jb21wcmVzcywgZGF0YSwgMSkKQEAgLTQyMSw2ICs0MjUsMzUgQEAKICAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28uZmx1c2goKSwgYiIiKSAjIFJldHVybnMgbm90aGluZwogCisgICAgZGVmIHRlc3RfZGljdGlvbmFyeShzZWxmKToKKyAgICAgICAgaCA9IEhBTUxFVF9TQ0VORQorICAgICAgICAjIEJ1aWxkIGEgc2ltdWxhdGVkIGRpY3Rpb25hcnkgb3V0IG9mIHRoZSB3b3JkcyBpbiBIQU1MRVQuCisgICAgICAgIHdvcmRzID0gaC5zcGxpdCgpCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKHdvcmRzKQorICAgICAgICB6ZGljdCA9IGInJy5qb2luKHdvcmRzKQorICAgICAgICAjIFVzZSBpdCB0byBjb21wcmVzcyBIQU1MRVQuCisgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6ZGljdD16ZGljdCkKKyAgICAgICAgY2QgPSBjby5jb21wcmVzcyhoKSArIGNvLmZsdXNoKCkKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBpdCB3aWxsIGRlY29tcHJlc3Mgd2l0aCB0aGUgZGljdGlvbmFyeS4KKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKHpkaWN0PXpkaWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRjby5kZWNvbXByZXNzKGNkKSArIGRjby5mbHVzaCgpLCBoKQorICAgICAgICAjIFZlcmlmeSB0aGF0IGl0IGZhaWxzIHdoZW4gbm90IGdpdmVuIHRoZSBkaWN0aW9uYXJ5LgorICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh6bGliLmVycm9yLCBkY28uZGVjb21wcmVzcywgY2QpCisKKyAgICBkZWYgdGVzdF9kaWN0aW9uYXJ5X3N0cmVhbWluZyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHNpbXVsYXRlcyB0aGUgcmV1c2Ugb2YgYSBjb21wcmVzc29yIG9iamVjdCBmb3IgY29tcHJlc3NpbmcKKyAgICAgICAgIyBzZXZlcmFsIHNlcGFyYXRlIGRhdGEgc3RyZWFtcy4KKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKHpkaWN0PUhBTUxFVF9TQ0VORSkKKyAgICAgICAgZG8gPSB6bGliLmRlY29tcHJlc3NvYmooemRpY3Q9SEFNTEVUX1NDRU5FKQorICAgICAgICBwaWVjZSA9IEhBTUxFVF9TQ0VORVsxMDAwOjE1MDBdCisgICAgICAgIGQwID0gY28uY29tcHJlc3MocGllY2UpICsgY28uZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGQxID0gY28uY29tcHJlc3MocGllY2VbMTAwOl0pICsgY28uZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGQyID0gY28uY29tcHJlc3MocGllY2VbOi0xMDBdKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvLmRlY29tcHJlc3MoZDApLCBwaWVjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkby5kZWNvbXByZXNzKGQxKSwgcGllY2VbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG8uZGVjb21wcmVzcyhkMiksIHBpZWNlWzotMTAwXSkKKwogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfaW5jb21wbGV0ZV9zdHJlYW0oc2VsZik6CiAgICAgICAgICMgVGhpcyBpcyAnZm9vJywgZGVmbGF0ZWQKICAgICAgICAgeCA9IGIneFx4OWNLXHhjYlx4Y2ZceDA3XHgwMFx4MDJceDgyXHgwMUUnCkBAIC00MzQsNiArNDY3LDI2IEBACiAgICAgICAgIHkgKz0gZGNvLmZsdXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCBiJ2ZvbycpCiAKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2VvZihzZWxmKToKKyAgICAgICAgeCA9IGIneFx4OWNLXHhjYlx4Y2ZceDA3XHgwMFx4MDJceDgyXHgwMUUnICAjICdmb28nCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKyAgICAgICAgZGNvLmRlY29tcHJlc3MoeFs6LTVdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5kZWNvbXByZXNzKHhbLTU6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRjby5lb2YpCisgICAgICAgIGRjby5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkY28uZW9mKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19lb2ZfaW5jb21wbGV0ZV9zdHJlYW0oc2VsZik6CisgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJyAgIyAnZm9vJworICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5kZWNvbXByZXNzKHhbOi01XSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisKICAgICBpZiBoYXNhdHRyKHpsaWIuY29tcHJlc3NvYmooKSwgImNvcHkiKToKICAgICAgICAgZGVmIHRlc3RfY29tcHJlc3Njb3B5KHNlbGYpOgogICAgICAgICAgICAgIyBUZXN0IGNvcHlpbmcgYSBjb21wcmVzc2lvbiBvYmplY3QKQEAgLTUxMCwxMCArNTYzLDggQEAKICAgICAgICAgZGVjb21wcmVzcyA9IGxhbWJkYSBzOiBkLmRlY29tcHJlc3MocykgKyBkLmZsdXNoKCkKICAgICAgICAgc2VsZi5jaGVja19iaWdfZGVjb21wcmVzc19idWZmZXIoc2l6ZSwgZGVjb21wcmVzcykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGVuZ3RoX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICBpZiBzaXplIDwgXzRHICsgMTAwOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm90IGVub3VnaCBmcmVlIG1lbW9yeSwgbmVlZCBhdCBsZWFzdCA0IEdCIikKICAgICAgICAgZGF0YSA9IGIneCcgKiBzaXplCiAgICAgICAgIGMgPSB6bGliLmNvbXByZXNzb2JqKDEpCiAgICAgICAgIGQgPSB6bGliLmRlY29tcHJlc3NvYmooKQpAQCAtNjE0LDYgKzY2NSw3IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgVmVyc2lvblRlc3RDYXNlLAogICAgICAgICBDaGVja3N1bVRlc3RDYXNlLAogICAgICAgICBDaGVja3N1bUJpZ0J1ZmZlclRlc3RDYXNlLAogICAgICAgICBFeGNlcHRpb25UZXN0Q2FzZSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RiejJfYmlnbWVtLmJ6MiBiL0xpYi90ZXN0L3Rlc3RiejJfYmlnbWVtLmJ6MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhNDYxNi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0YnoyX2JpZ21lbS5iejIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weSBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CmluZGV4IGFkZjAzZTMuLjU0ODRlNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CisrKyBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CkBAIC0zNSw4ICszNSwxMSBAQAogICAgICAgICAoIm9zLnBhdGguYWJzcGF0aCIsIG9zLnBhdGguYWJzcGF0aCwgKCcuJywpKSwKICAgICAgICAgXToKIAotICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKLSAgICB0LnN0YXJ0KCkKLSAgICB0LmpvaW4oVElNRU9VVCkKLSAgICBpZiB0LmlzX2FsaXZlKCk6Ci0gICAgICAgIGVycm9ycy5hcHBlbmQoIiVzIGFwcGVhcmVkIHRvIGhhbmciICUgbmFtZSkKKyAgICB0cnk6CisgICAgICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKKyAgICAgICAgdC5zdGFydCgpCisgICAgICAgIHQuam9pbihUSU1FT1VUKQorICAgICAgICBpZiB0LmlzX2FsaXZlKCk6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCIlcyBhcHBlYXJlZCB0byBoYW5nIiAlIG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgZGVsIHQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dCBiL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dAppbmRleCAwNmM4M2IwLi4yYzVmYjEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQKKysrIGIvTGliL3Rlc3QvdG9rZW5pemVfdGVzdHMudHh0CkBAIC0xMTQsOCArMTE0LDEyIEBACiB5ID0gYiJhYmMiICsgQiJBQkMiCiB4ID0gYnInYWJjJyArIEJyJ0FCQycgKyBiUidBQkMnICsgQlInQUJDJwogeSA9IGJyImFiYyIgKyBCciJBQkMiICsgYlIiQUJDIiArIEJSIkFCQyIKK3ggPSByYidhYmMnICsgckInQUJDJyArIFJiJ0FCQycgKyBSQidBQkMnCit5ID0gcmIiYWJjIiArIHJCIkFCQyIgKyBSYiJBQkMiICsgUkIiQUJDIgogeCA9IGJyJ1xcJyArIEJSJ1xcJworeCA9IHJiJ1xcJyArIFJCJ1xcJwogeCA9IGJyJ1wnJyArICcnCit4ID0gcmInXCcnICsgJycKIHkgPSBicicnJwogZm9vIGJhciBcXAogYmF6JycnICsgQlInJycKQEAgLTEyNCw2ICsxMjgsMTAgQEAKIGJhciBcXCBiYXoKICIiIiArIGJSJycnc3BhbQogJycnCit5ID0gckIiIiJmb28KK2JhciBcXCBiYXoKKyIiIiArIFJiJycnc3BhbQorJycnCiAKICMgSW5kZW50YXRpb24KIGlmIDE6CmRpZmYgLS1naXQgYS9MaWIvdGV4dHdyYXAucHkgYi9MaWIvdGV4dHdyYXAucHkKaW5kZXggZGZiNDAwNS4uNzAyNGQ0ZCAxMDA2NDQKLS0tIGEvTGliL3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXh0d3JhcC5weQpAQCAtNSw5ICs1LDkgQEAKICMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogIyBXcml0dGVuIGJ5IEdyZWcgV2FyZCA8Z3dhcmRAcHl0aG9uLm5ldD4KIAotaW1wb3J0IHN0cmluZywgcmUKK2ltcG9ydCByZQogCi1fX2FsbF9fID0gWydUZXh0V3JhcHBlcicsICd3cmFwJywgJ2ZpbGwnLCAnZGVkZW50J10KK19fYWxsX18gPSBbJ1RleHRXcmFwcGVyJywgJ3dyYXAnLCAnZmlsbCcsICdkZWRlbnQnLCAnaW5kZW50J10KIAogIyBIYXJkY29kZSB0aGUgcmVjb2duaXplZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgdG8gdGhlIFVTLUFTQ0lJCiAjIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4gIFRoZSBtYWluIHJlYXNvbiBmb3IgZG9pbmcgdGhpcyBpcyB0aGF0IGluCkBAIC0zOSw4ICszOSwxMSBAQAogICAgICAgICBvZiB3cmFwcGVkIG91dHB1dDsgYWxzbyBjb3VudHMgdG93YXJkcyBlYWNoIGxpbmUncyB3aWR0aC4KICAgICAgIGV4cGFuZF90YWJzIChkZWZhdWx0OiB0cnVlKQogICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIHNwYWNlcyBiZWZvcmUgZnVydGhlciBwcm9jZXNzaW5nLgotICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAxIC4uIDggc3BhY2VzLCBkZXBlbmRpbmcgb24gaXRzIHBvc2l0aW9uIGluCi0gICAgICAgIGl0cyBsaW5lLiAgSWYgZmFsc2UsIGVhY2ggdGFiIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLgorICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAwIC4uICd0YWJzaXplJyBzcGFjZXMsIGRlcGVuZGluZyBvbiBpdHMgcG9zaXRpb24KKyAgICAgICAgaW4gaXRzIGxpbmUuICBJZiBmYWxzZSwgZWFjaCB0YWIgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuCisgICAgICB0YWJzaXplIChkZWZhdWx0OiA4KQorICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIDAgLi4gJ3RhYnNpemUnIHNwYWNlcywgdW5sZXNzCisgICAgICAgICdleHBhbmRfdGFicycgaXMgZmFsc2UuCiAgICAgICByZXBsYWNlX3doaXRlc3BhY2UgKGRlZmF1bHQ6IHRydWUpCiAgICAgICAgIFJlcGxhY2UgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgaW5wdXQgdGV4dCBieSBzcGFjZXMKICAgICAgICAgYWZ0ZXIgdGFiIGV4cGFuc2lvbi4gIE5vdGUgdGhhdCBpZiBleHBhbmRfdGFicyBpcyBmYWxzZSBhbmQKQEAgLTEwMCw3ICsxMDMsOCBAQAogICAgICAgICAgICAgICAgICBmaXhfc2VudGVuY2VfZW5kaW5ncz1GYWxzZSwKICAgICAgICAgICAgICAgICAgYnJlYWtfbG9uZ193b3Jkcz1UcnVlLAogICAgICAgICAgICAgICAgICBkcm9wX3doaXRlc3BhY2U9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlKToKKyAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlLAorICAgICAgICAgICAgICAgICB0YWJzaXplPTgpOgogICAgICAgICBzZWxmLndpZHRoID0gd2lkdGgKICAgICAgICAgc2VsZi5pbml0aWFsX2luZGVudCA9IGluaXRpYWxfaW5kZW50CiAgICAgICAgIHNlbGYuc3Vic2VxdWVudF9pbmRlbnQgPSBzdWJzZXF1ZW50X2luZGVudApAQCAtMTEwLDYgKzExNCw3IEBACiAgICAgICAgIHNlbGYuYnJlYWtfbG9uZ193b3JkcyA9IGJyZWFrX2xvbmdfd29yZHMKICAgICAgICAgc2VsZi5kcm9wX3doaXRlc3BhY2UgPSBkcm9wX3doaXRlc3BhY2UKICAgICAgICAgc2VsZi5icmVha19vbl9oeXBoZW5zID0gYnJlYWtfb25faHlwaGVucworICAgICAgICBzZWxmLnRhYnNpemUgPSB0YWJzaXplCiAKIAogICAgICMgLS0gUHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjMsNyArMTI4LDcgQEAKICAgICAgICAgYmVjb21lcyAiIGZvbyAgICBiYXIgIGJheiIuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLmV4cGFuZF90YWJzOgotICAgICAgICAgICAgdGV4dCA9IHRleHQuZXhwYW5kdGFicygpCisgICAgICAgICAgICB0ZXh0ID0gdGV4dC5leHBhbmR0YWJzKHNlbGYudGFic2l6ZSkKICAgICAgICAgaWYgc2VsZi5yZXBsYWNlX3doaXRlc3BhY2U6CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmFuc2xhdGUoc2VsZi51bmljb2RlX3doaXRlc3BhY2VfdHJhbnMpCiAgICAgICAgIHJldHVybiB0ZXh0CkBAIC0zODEsNiArMzg2LDI1IEBACiAgICAgICAgIHRleHQgPSByZS5zdWIocicoP20pXicgKyBtYXJnaW4sICcnLCB0ZXh0KQogICAgIHJldHVybiB0ZXh0CiAKKworZGVmIGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZT1Ob25lKToKKyAgICAiIiJBZGRzICdwcmVmaXgnIHRvIHRoZSBiZWdpbm5pbmcgb2Ygc2VsZWN0ZWQgbGluZXMgaW4gJ3RleHQnLgorCisgICAgSWYgJ3ByZWRpY2F0ZScgaXMgcHJvdmlkZWQsICdwcmVmaXgnIHdpbGwgb25seSBiZSBhZGRlZCB0byB0aGUgbGluZXMKKyAgICB3aGVyZSAncHJlZGljYXRlKGxpbmUpJyBpcyBUcnVlLiBJZiAncHJlZGljYXRlJyBpcyBub3QgcHJvdmlkZWQsCisgICAgaXQgd2lsbCBkZWZhdWx0IHRvIGFkZGluZyAncHJlZml4JyB0byBhbGwgbm9uLWVtcHR5IGxpbmVzIHRoYXQgZG8gbm90CisgICAgY29uc2lzdCBzb2xlbHkgb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICIiIgorICAgIGlmIHByZWRpY2F0ZSBpcyBOb25lOgorICAgICAgICBkZWYgcHJlZGljYXRlKGxpbmUpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKQorCisgICAgZGVmIHByZWZpeGVkX2xpbmVzKCk6CisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhUcnVlKToKKyAgICAgICAgICAgIHlpZWxkIChwcmVmaXggKyBsaW5lIGlmIHByZWRpY2F0ZShsaW5lKSBlbHNlIGxpbmUpCisgICAgcmV0dXJuICcnLmpvaW4ocHJlZml4ZWRfbGluZXMoKSkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICNwcmludCBkZWRlbnQoIlx0Zm9vXG5cdGJhciIpCiAgICAgI3ByaW50IGRlZGVudCgiICBcdGhlbGxvIHRoZXJlXG4gIFx0ICBob3cgYXJlIHlvdT8iKQpkaWZmIC0tZ2l0IGEvTGliL3RocmVhZGluZy5weSBiL0xpYi90aHJlYWRpbmcucHkKaW5kZXggNThmZmE3ZS4uNmMzNGQ0OSAxMDA2NDQKLS0tIGEvTGliL3RocmVhZGluZy5weQorKysgYi9MaWIvdGhyZWFkaW5nLnB5CkBAIC0zLDcgKzMsMTEgQEAKIGltcG9ydCBzeXMgYXMgX3N5cwogaW1wb3J0IF90aHJlYWQKIAotZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lLCBzbGVlcCBhcyBfc2xlZXAKK2Zyb20gdGltZSBpbXBvcnQgc2xlZXAgYXMgX3NsZWVwCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjIGFzIF9mb3JtYXRfZXhjCiBmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CiAKQEAgLTE5LDEyICsyMywxMiBAQAogCiBfX2FsbF9fID0gWydhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywgJ2VudW1lcmF0ZScsICdFdmVudCcsCiAgICAgICAgICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ1RocmVhZCcsICdCYXJyaWVyJywKLSAgICAgICAgICAgJ1RpbWVyJywgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCisgICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQogCiAjIFJlbmFtZSBzb21lIHN0dWZmIHNvICJmcm9tIHRocmVhZGluZyBpbXBvcnQgKiIgaXMgc2FmZQogX3N0YXJ0X25ld190aHJlYWQgPSBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQKIF9hbGxvY2F0ZV9sb2NrID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrCi1fZ2V0X2lkZW50ID0gX3RocmVhZC5nZXRfaWRlbnQKK2dldF9pZGVudCA9IF90aHJlYWQuZ2V0X2lkZW50CiBUaHJlYWRFcnJvciA9IF90aHJlYWQuZXJyb3IKIHRyeToKICAgICBfQ1JMb2NrID0gX3RocmVhZC5STG9jawpAQCAtMzQsNDAgKzM4LDYgQEAKIGRlbCBfdGhyZWFkCiAKIAotIyBEZWJ1ZyBzdXBwb3J0IChhZGFwdGVkIGZyb20gaWhvb2tzLnB5KS4KLQotX1ZFUkJPU0UgPSBGYWxzZQotCi1pZiBfX2RlYnVnX186Ci0KLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICAgICAgaWYgdmVyYm9zZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBfVkVSQk9TRQotICAgICAgICAgICAgc2VsZi5fdmVyYm9zZSA9IHZlcmJvc2UKLQotICAgICAgICBkZWYgX25vdGUoc2VsZiwgZm9ybWF0LCAqYXJncyk6Ci0gICAgICAgICAgICBpZiBzZWxmLl92ZXJib3NlOgotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCAlIGFyZ3MKLSAgICAgICAgICAgICAgICAjIElzc3VlICM0MTg4OiBjYWxsaW5nIGN1cnJlbnRfdGhyZWFkKCkgY2FuIGluY3VyIGFuIGluZmluaXRlCi0gICAgICAgICAgICAgICAgIyByZWN1cnNpb24gaWYgaXQgaGFzIHRvIGNyZWF0ZSBhIER1bW15VGhyZWFkIG9uIHRoZSBmbHkuCi0gICAgICAgICAgICAgICAgaWRlbnQgPSBfZ2V0X2lkZW50KCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfYWN0aXZlW2lkZW50XS5uYW1lCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gIjxPUyB0aHJlYWQgJWQ+IiAlIGlkZW50Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gIiVzOiAlc1xuIiAlIChuYW1lLCBmb3JtYXQpCi0gICAgICAgICAgICAgICAgX3N5cy5zdGRlcnIud3JpdGUoZm9ybWF0KQotCi1lbHNlOgotICAgICMgRGlzYWJsZSB0aGlzIHdoZW4gdXNpbmcgInB5dGhvbiAtTyIKLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZGVmIF9ub3RlKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgIHBhc3MKLQogIyBTdXBwb3J0IGZvciBwcm9maWxlIGFuZCB0cmFjZSBob29rcwogCiBfcHJvZmlsZV9ob29rID0gTm9uZQpAQCAtODUsMTcgKzU1LDE0IEBACiAKIExvY2sgPSBfYWxsb2NhdGVfbG9jawogCi1kZWYgUkxvY2sodmVyYm9zZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAgIGlmIHZlcmJvc2UgaXMgTm9uZToKLSAgICAgICAgdmVyYm9zZSA9IF9WRVJCT1NFCi0gICAgaWYgKF9fZGVidWdfXyBhbmQgdmVyYm9zZSkgb3IgX0NSTG9jayBpcyBOb25lOgotICAgICAgICByZXR1cm4gX1B5UkxvY2sodmVyYm9zZSwgKmFyZ3MsICoqa3dhcmdzKQorZGVmIFJMb2NrKCphcmdzLCAqKmt3YXJncyk6CisgICAgaWYgX0NSTG9jayBpcyBOb25lOgorICAgICAgICByZXR1cm4gX1B5UkxvY2soKmFyZ3MsICoqa3dhcmdzKQogICAgIHJldHVybiBfQ1JMb2NrKCphcmdzLCAqKmt3YXJncykKIAotY2xhc3MgX1JMb2NrKF9WZXJib3NlKToKK2NsYXNzIF9STG9jazoKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5fYmxvY2sgPSBfYWxsb2NhdGVfbG9jaygpCiAgICAgICAgIHNlbGYuX293bmVyID0gTm9uZQogICAgICAgICBzZWxmLl9jb3VudCA9IDAKQEAgLTExMCwzNyArNzcsMjUgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgb3duZXIsIHNlbGYuX2NvdW50KQogCiAgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSk6Ci0gICAgICAgIG1lID0gX2dldF9pZGVudCgpCisgICAgICAgIG1lID0gZ2V0X2lkZW50KCkKICAgICAgICAgaWYgc2VsZi5fb3duZXIgPT0gbWU6CiAgICAgICAgICAgICBzZWxmLl9jb3VudCA9IHNlbGYuX2NvdW50ICsgMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiByZWN1cnNpdmUgc3VjY2VzcyIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgcmMgPSBzZWxmLl9ibG9jay5hY3F1aXJlKGJsb2NraW5nLCB0aW1lb3V0KQogICAgICAgICBpZiByYzoKICAgICAgICAgICAgIHNlbGYuX293bmVyID0gbWUKICAgICAgICAgICAgIHNlbGYuX2NvdW50ID0gMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiBpbml0aWFsIHN1Y2Nlc3MiLCBzZWxmLCBibG9ja2luZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogZmFpbHVyZSIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICByZXR1cm4gcmMKIAogICAgIF9fZW50ZXJfXyA9IGFjcXVpcmUKIAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9vd25lciAhPSBfZ2V0X2lkZW50KCk6CisgICAgICAgIGlmIHNlbGYuX293bmVyICE9IGdldF9pZGVudCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKICAgICAgICAgc2VsZi5fY291bnQgPSBjb3VudCA9IHNlbGYuX2NvdW50IC0gMQogICAgICAgICBpZiBub3QgY291bnQ6CiAgICAgICAgICAgICBzZWxmLl9vd25lciA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnJlbGVhc2UoKTogZmluYWwgcmVsZWFzZSIsIHNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMucmVsZWFzZSgpOiBub24tZmluYWwgcmVsZWFzZSIsIHNlbGYpCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgogICAgICAgICBzZWxmLnJlbGVhc2UoKQpAQCAtMTUwLDEyICsxMDUsMTAgQEAKICAgICBkZWYgX2FjcXVpcmVfcmVzdG9yZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHNlbGYuX2Jsb2NrLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl9jb3VudCwgc2VsZi5fb3duZXIgPSBzdGF0ZQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYWNxdWlyZV9yZXN0b3JlKCkiLCBzZWxmKQogCiAgICAgZGVmIF9yZWxlYXNlX3NhdmUoc2VsZik6Ci0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9yZWxlYXNlX3NhdmUoKSIsIHNlbGYpCisgICAgICAgIGlmIHNlbGYuX2NvdW50ID09IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQogICAgICAgICBjb3VudCA9IHNlbGYuX2NvdW50CiAgICAgICAgIHNlbGYuX2NvdW50ID0gMAogICAgICAgICBvd25lciA9IHNlbGYuX293bmVyCkBAIC0xNjQsMTggKzExNywxNCBAQAogICAgICAgICByZXR1cm4gKGNvdW50LCBvd25lcikKIAogICAgIGRlZiBfaXNfb3duZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vd25lciA9PSBfZ2V0X2lkZW50KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX293bmVyID09IGdldF9pZGVudCgpCiAKIF9QeVJMb2NrID0gX1JMb2NrCiAKIAotZGVmIENvbmRpdGlvbigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfQ29uZGl0aW9uKCphcmdzLCAqKmt3YXJncykKK2NsYXNzIENvbmRpdGlvbjoKIAotY2xhc3MgX0NvbmRpdGlvbihfVmVyYm9zZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jaz1Ob25lLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NrPU5vbmUpOgogICAgICAgICBpZiBsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICBsb2NrID0gUkxvY2soKQogICAgICAgICBzZWxmLl9sb2NrID0gbG9jawpAQCAtMjM0LDIzICsxODMsMTYgQEAKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB3YWl0ZXIuYWNxdWlyZSgpCiAgICAgICAgICAgICAgICAgZ290aXQgPSBUcnVlCi0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCk6IGdvdCBpdCIsIHNlbGYpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPiAwOgogICAgICAgICAgICAgICAgICAgICBnb3RpdCA9IHdhaXRlci5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZ290aXQgPSB3YWl0ZXIuYWNxdWlyZShGYWxzZSkKICAgICAgICAgICAgICAgICBpZiBub3QgZ290aXQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiB0aW1lZCBvdXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiBnb3QgaXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuIGdvdGl0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9hY3F1aXJlX3Jlc3RvcmUoc2F2ZWRfc3RhdGUpCkBAIC0yNjYsMTkgKzIwOCw5IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd2FpdHRpbWUgPSBlbmR0aW1lIC0gX3RpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXRfZm9yKCVyLCAlcik6IFRpbWVkIG91dC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0X2ZvciglciwgJXIpOiBXYWl0aW5nIHdpdGggdGltZW91dD0lcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0LCB3YWl0dGltZSkKICAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKICAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdF9mb3IoJXIsICVyKTogU3VjY2Vzcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CkBAIC0yODcsMTEgKzIxOSw3IEBACiAgICAgICAgIF9fd2FpdGVycyA9IHNlbGYuX3dhaXRlcnMKICAgICAgICAgd2FpdGVycyA9IF9fd2FpdGVyc1s6bl0KICAgICAgICAgaWYgbm90IHdhaXRlcnM6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMubm90aWZ5KCk6IG5vIHdhaXRlcnMiLCBzZWxmKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX25vdGUoIiVzLm5vdGlmeSgpOiBub3RpZnlpbmcgJWQgd2FpdGVyJXMiLCBzZWxmLCBuLAotICAgICAgICAgICAgICAgICAgIG4hPTEgYW5kICJzIiBvciAiIikKICAgICAgICAgZm9yIHdhaXRlciBpbiB3YWl0ZXJzOgogICAgICAgICAgICAgd2FpdGVyLnJlbGVhc2UoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMzA1LDE3ICsyMzMsMTMgQEAKICAgICBub3RpZnlBbGwgPSBub3RpZnlfYWxsCiAKIAotZGVmIFNlbWFwaG9yZSgqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX1NlbWFwaG9yZShfVmVyYm9zZSk6CitjbGFzcyBTZW1hcGhvcmU6CiAKICAgICAjIEFmdGVyIFRpbSBQZXRlcnMnIHNlbWFwaG9yZSBjbGFzcywgYnV0IG5vdCBxdWl0ZSB0aGUgc2FtZSAobm8gbWF4aW11bSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xLCB2ZXJib3NlPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xKToKICAgICAgICAgaWYgdmFsdWUgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VtYXBob3JlIGluaXRpYWwgdmFsdWUgbXVzdCBiZSA+PSAwIikKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsdWUKIApAQCAtMzI4LDkgKzI1Miw2IEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3ZhbHVlID09IDA6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogYmxvY2tlZCB3YWl0aW5nLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBibG9ja2luZywgc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CkBAIC0zNDEsOSArMjYyLDYgQEAKICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCh0aW1lb3V0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLl92YWx1ZSAtIDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLl92YWx1ZSkKICAgICAgICAgICAgIHJjID0gVHJ1ZQogICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogICAgICAgICByZXR1cm4gcmMKQEAgLTM1Myw5ICsyNzEsNiBAQAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl92YWx1ZSA9IHNlbGYuX3ZhbHVlICsgMQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5yZWxlYXNlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHNlbGYuX3ZhbHVlKQogICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKQEAgLTM2MywzMCArMjc4LDIzIEBACiAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKIAotZGVmIEJvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX0JvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfQm91bmRlZFNlbWFwaG9yZShfU2VtYXBob3JlKToKK2NsYXNzIEJvdW5kZWRTZW1hcGhvcmUoU2VtYXBob3JlKToKICAgICAiIiJTZW1hcGhvcmUgdGhhdCBjaGVja3MgdGhhdCAjIHJlbGVhc2VzIGlzIDw9ICMgYWNxdWlyZXMiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1NlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CisgICAgICAgIFNlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSkKICAgICAgICAgc2VsZi5faW5pdGlhbF92YWx1ZSA9IHZhbHVlCiAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5fdmFsdWUgPj0gc2VsZi5faW5pdGlhbF92YWx1ZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNlbWFwaG9yZSByZWxlYXNlZCB0b28gbWFueSB0aW1lcyIpCi0gICAgICAgIHJldHVybiBfU2VtYXBob3JlLnJlbGVhc2Uoc2VsZikKKyAgICAgICAgcmV0dXJuIFNlbWFwaG9yZS5yZWxlYXNlKHNlbGYpCiAKIAotZGVmIEV2ZW50KCphcmdzLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIF9FdmVudCgqYXJncywgKiprd2FyZ3MpCi0KLWNsYXNzIF9FdmVudChfVmVyYm9zZSk6CitjbGFzcyBFdmVudDoKIAogICAgICMgQWZ0ZXIgVGltIFBldGVycycgZXZlbnQgY2xhc3MgKHdpdGhvdXQgaXNfcG9zdGVkKCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl9mbGFnID0gRmFsc2UKIApAQCAtNDM2LDEzICszNDQsMTMgQEAKICMgc2luY2UgdGhlIHByZXZpb3VzIGN5Y2xlLiAgSW4gYWRkaXRpb24sIGEgJ3Jlc2V0dGluZycgc3RhdGUgZXhpc3RzIHdoaWNoIGlzCiAjIHNpbWlsYXIgdG8gJ2RyYWluaW5nJyBleGNlcHQgdGhhdCB0aHJlYWRzIGxlYXZlIHdpdGggYSBCcm9rZW5CYXJyaWVyRXJyb3IsCiAjIGFuZCBhICdicm9rZW4nIHN0YXRlIGluIHdoaWNoIGFsbCB0aHJlYWRzIGdldCB0aGUgZXhjZXB0aW9uLgotY2xhc3MgQmFycmllcihfVmVyYm9zZSk6CitjbGFzcyBCYXJyaWVyOgogICAgICIiIgogICAgIEJhcnJpZXIuICBVc2VmdWwgZm9yIHN5bmNocm9uaXppbmcgYSBmaXhlZCBudW1iZXIgb2YgdGhyZWFkcwogICAgIGF0IGtub3duIHN5bmNocm9uaXphdGlvbiBwb2ludHMuICBUaHJlYWRzIGJsb2NrIG9uICd3YWl0KCknIGFuZCBhcmUKICAgICBzaW11bHRhbmVvdXNseSBvbmNlIHRoZXkgaGF2ZSBhbGwgbWFkZSB0aGF0IGNhbGwuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGEgYmFycmllciwgaW5pdGlhbGlzZWQgdG8gJ3BhcnRpZXMnIHRocmVhZHMuCiAgICAgICAgICdhY3Rpb24nIGlzIGEgY2FsbGFibGUgd2hpY2gsIHdoZW4gc3VwcGxpZWQsIHdpbGwgYmUgY2FsbGVkCkBAIC00NTEsNyArMzU5LDYgQEAKICAgICAgICAgSWYgYSAndGltZW91dCcgaXMgcHJvdmlkZWQsIGl0IGlzIHVzZXMgYXMgdGhlIGRlZmF1bHQgZm9yCiAgICAgICAgIGFsbCBzdWJzZXF1ZW50ICd3YWl0KCknIGNhbGxzLgogICAgICAgICAiIiIKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX2FjdGlvbiA9IGFjdGlvbgogICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dApAQCAtNjEyLDcgKzUxOSw3IEBACiAKICMgTWFpbiBjbGFzcyBmb3IgdGhyZWFkcwogCi1jbGFzcyBUaHJlYWQoX1ZlcmJvc2UpOgorY2xhc3MgVGhyZWFkOgogCiAgICAgX19pbml0aWFsaXplZCA9IEZhbHNlCiAgICAgIyBOZWVkIHRvIHN0b3JlIGEgcmVmZXJlbmNlIHRvIHN5cy5leGNfaW5mbyBmb3IgcHJpbnRpbmcKQEAgLTYyNSwxNiArNTMyLDE4IEBACiAgICAgI1hYWCBfX2V4Y19jbGVhciA9IF9zeXMuZXhjX2NsZWFyCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYXJncz0oKSwga3dhcmdzPU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGFyZ3M9KCksIGt3YXJncz1Ob25lLCAqLCBkYWVtb249Tm9uZSk6CiAgICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lLCAiZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3ciCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIGlmIGt3YXJncyBpcyBOb25lOgogICAgICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgIHNlbGYuX25hbWUgPSBzdHIobmFtZSBvciBfbmV3bmFtZSgpKQogICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKLSAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBzZWxmLl9zZXRfZGFlbW9uKCkKKyAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gY3VycmVudF90aHJlYWQoKS5kYWVtb24KICAgICAgICAgc2VsZi5faWRlbnQgPSBOb25lCiAgICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBFdmVudCgpCiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBGYWxzZQpAQCAtNjUyLDEwICs1NjEsNiBAQAogICAgICAgICAgICAgc2VsZi5fYmxvY2suX19pbml0X18oKQogICAgICAgICBzZWxmLl9zdGFydGVkLl9yZXNldF9pbnRlcm5hbF9sb2NrcygpCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgICMgT3ZlcnJpZGRlbiBpbiBfTWFpblRocmVhZCBhbmQgX0R1bW15VGhyZWFkCi0gICAgICAgIHJldHVybiBjdXJyZW50X3RocmVhZCgpLmRhZW1vbgotCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5faW5pdGlhbGl6ZWQsICJUaHJlYWQuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCIKICAgICAgICAgc3RhdHVzID0gImluaXRpYWwiCkBAIC02NzUsOCArNTgwLDYgQEAKIAogICAgICAgICBpZiBzZWxmLl9zdGFydGVkLmlzX3NldCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ0aHJlYWRzIGNhbiBvbmx5IGJlIHN0YXJ0ZWQgb25jZSIpCi0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnN0YXJ0KCk6IHN0YXJ0aW5nIHRocmVhZCIsIHNlbGYpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2xpbWJvW3NlbGZdID0gc2VsZgogICAgICAgICB0cnk6CkBAIC03MTcsNyArNjIwLDcgQEAKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgX3NldF9pZGVudChzZWxmKToKLSAgICAgICAgc2VsZi5faWRlbnQgPSBfZ2V0X2lkZW50KCkKKyAgICAgICAgc2VsZi5faWRlbnQgPSBnZXRfaWRlbnQoKQogCiAgICAgZGVmIF9ib290c3RyYXBfaW5uZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTcyNiwyNCArNjI5LDE3IEBACiAgICAgICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgICAgICBfYWN0aXZlW3NlbGYuX2lkZW50XSA9IHNlbGYKICAgICAgICAgICAgICAgICBkZWwgX2xpbWJvW3NlbGZdCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiB0aHJlYWQgc3RhcnRlZCIsIHNlbGYpCiAKICAgICAgICAgICAgIGlmIF90cmFjZV9ob29rOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogcmVnaXN0ZXJpbmcgdHJhY2UgaG9vayIsIHNlbGYpCiAgICAgICAgICAgICAgICAgX3N5cy5zZXR0cmFjZShfdHJhY2VfaG9vaykKICAgICAgICAgICAgIGlmIF9wcm9maWxlX2hvb2s6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiByZWdpc3RlcmluZyBwcm9maWxlIGhvb2siLCBzZWxmKQogICAgICAgICAgICAgICAgIF9zeXMuc2V0cHJvZmlsZShfcHJvZmlsZV9ob29rKQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5ydW4oKQogICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHJhaXNlZCBTeXN0ZW1FeGl0Iiwgc2VsZikKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHVuaGFuZGxlZCBleGNlcHRpb24iLCBzZWxmKQogICAgICAgICAgICAgICAgICMgSWYgc3lzLnN0ZGVyciBpcyBubyBtb3JlIChtb3N0IGxpa2VseSBmcm9tIGludGVycHJldGVyCiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93bikgdXNlIHNlbGYuX3N0ZGVyci4gIE90aGVyd2lzZSBzdGlsbCB1c2Ugc3lzIChhcyBpbgogICAgICAgICAgICAgICAgICMgX3N5cykgaW4gY2FzZSBzeXMuc3RkZXJyIHdhcyByZWRlZmluZWQgc2luY2UgdGhlIGNyZWF0aW9uIG9mCkBAIC03NzQsOSArNjcwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBob2c7IGRlbGV0aW5nIGV2ZXJ5dGhpbmcgZWxzZSBpcyBqdXN0IGZvciB0aG9yb3VnaG5lc3MKICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IG5vcm1hbCByZXR1cm4iLCBzZWxmKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAjIFByZXZlbnQgYSByYWNlIGluCiAgICAgICAgICAgICAgICAgIyB0ZXN0X3RocmVhZGluZy50ZXN0X25vX3JlZmN5Y2xlX3Rocm91Z2hfdGFyZ2V0IHdoZW4KQEAgLTc5MCw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCBjYWxsIHNlbGYuX2RlbGV0ZSgpIGJlY2F1c2UgaXQgYWxzbwogICAgICAgICAgICAgICAgICAgICAjIGdyYWJzIF9hY3RpdmVfbGltYm9fbG9jay4KLSAgICAgICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgICAgICBkZWwgX2FjdGl2ZVtnZXRfaWRlbnQoKV0KICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIApAQCAtODI2LDcgKzcxOSw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6Ci0gICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgICAgICAgICAgICAgICMgVGhlcmUgbXVzdCBub3QgYmUgYW55IHB5dGhvbiBjb2RlIGJldHdlZW4gdGhlIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgICAgICAjIGFuZCBhZnRlciB0aGUgbG9jayBpcyByZWxlYXNlZC4gIE90aGVyd2lzZSBhIHRyYWNpbmcgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAjIGNvdWxkIHRyeSB0byBhY3F1aXJlIHRoZSBsb2NrIGFnYWluIGluIHRoZSBzYW1lIHRocmVhZCwgKGluCkBAIC04NDMsMjkgKzczNiwxOCBAQAogICAgICAgICBpZiBzZWxmIGlzIGN1cnJlbnRfdGhyZWFkKCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCBqb2luIGN1cnJlbnQgdGhyZWFkIikKIAotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc3RvcHBlZDoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHdhaXRpbmcgdW50aWwgdGhyZWFkIHN0b3BzIiwgc2VsZikKLQogICAgICAgICBzZWxmLl9ibG9jay5hY3F1aXJlKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wcGVkOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9ibG9jay53YWl0KCkKLSAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmpvaW4oKTogdGhyZWFkIHN0b3BwZWQiLCBzZWxmKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkZWFkbGluZSA9IF90aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BwZWQ6CiAgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gZGVhZGxpbmUgLSBfdGltZSgpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRlbGF5IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB0aW1lZCBvdXQiLCBzZWxmKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmxvY2sud2FpdChkZWxheSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHRocmVhZCBzdG9wcGVkIiwgc2VsZikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQogCkBAIC05MTcsMTAgKzc5OSw3IEBACiAKICMgVGhlIHRpbWVyIGNsYXNzIHdhcyBjb250cmlidXRlZCBieSBJdGFtYXIgU2h0dWxsLVRyYXVyaW5nCiAKLWRlZiBUaW1lcigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfVGltZXIoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfVGltZXIoVGhyZWFkKToKK2NsYXNzIFRpbWVyKFRocmVhZCk6CiAgICAgIiIiQ2FsbCBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzOgogCiAgICAgdCA9IFRpbWVyKDMwLjAsIGYsIGFyZ3M9W10sIGt3YXJncz17fSkKQEAgLTk1MiwyNiArODMxLDE4IEBACiBjbGFzcyBfTWFpblRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0iTWFpblRocmVhZCIpCisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPSJNYWluVGhyZWFkIiwgZGFlbW9uPUZhbHNlKQogICAgICAgICBzZWxmLl9zdGFydGVkLnNldCgpCiAgICAgICAgIHNlbGYuX3NldF9pZGVudCgpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgZGVmIF9leGl0ZnVuYyhzZWxmKToKICAgICAgICAgc2VsZi5fc3RvcCgpCiAgICAgICAgIHQgPSBfcGlja1NvbWVOb25EYWVtb25UaHJlYWQoKQotICAgICAgICBpZiB0OgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzOiB3YWl0aW5nIGZvciBvdGhlciB0aHJlYWRzIiwgc2VsZikKICAgICAgICAgd2hpbGUgdDoKICAgICAgICAgICAgIHQuam9pbigpCiAgICAgICAgICAgICB0ID0gX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCkKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXM6IGV4aXRpbmciLCBzZWxmKQogICAgICAgICBzZWxmLl9kZWxldGUoKQogCiBkZWYgX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCk6CkBAIC05OTIsNyArODYzLDcgQEAKIGNsYXNzIF9EdW1teVRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT1fbmV3bmFtZSgiRHVtbXktJWQiKSkKKyAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9X25ld25hbWUoIkR1bW15LSVkIiksIGRhZW1vbj1UcnVlKQogCiAgICAgICAgICMgVGhyZWFkLl9ibG9jayBjb25zdW1lcyBhbiBPUy1sZXZlbCBsb2NraW5nIHByaW1pdGl2ZSwgd2hpY2gKICAgICAgICAgIyBjYW4gbmV2ZXIgYmUgdXNlZCBieSBhIF9EdW1teVRocmVhZC4gIFNpbmNlIGEgX0R1bW15VGhyZWFkCkBAIC0xMDA0LDkgKzg3NSw2IEBACiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KICAgICBkZWYgX3N0b3Aoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMTAxOCw5ICs4ODYsOCBAQAogCiBkZWYgY3VycmVudF90aHJlYWQoKToKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgcmV0dXJuIF9hY3RpdmVbZ2V0X2lkZW50KCldCiAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAjI3ByaW50ICJjdXJyZW50X3RocmVhZCgpOiBubyBjdXJyZW50IHRocmVhZCBmb3IiLCBfZ2V0X2lkZW50KCkKICAgICAgICAgcmV0dXJuIF9EdW1teVRocmVhZCgpCiAKIGN1cnJlbnRUaHJlYWQgPSBjdXJyZW50X3RocmVhZApAQCAtMTA3Nyw3ICs5NDQsNyBAQAogICAgICAgICAgICAgaWYgdGhyZWFkIGlzIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgIyBUaGVyZSBpcyBvbmx5IG9uZSBhY3RpdmUgdGhyZWFkLiBXZSByZXNldCB0aGUgaWRlbnQgdG8KICAgICAgICAgICAgICAgICAjIGl0cyBuZXcgdmFsdWUgc2luY2UgaXQgY2FuIGhhdmUgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICBpZGVudCA9IF9nZXRfaWRlbnQoKQorICAgICAgICAgICAgICAgIGlkZW50ID0gZ2V0X2lkZW50KCkKICAgICAgICAgICAgICAgICB0aHJlYWQuX2lkZW50ID0gaWRlbnQKICAgICAgICAgICAgICAgICBuZXdfYWN0aXZlW2lkZW50XSA9IHRocmVhZAogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90aW1laXQucHkgYi9MaWIvdGltZWl0LnB5CmluZGV4IDFhZTU5ZTAuLjRmN2QyOGYgMTAwNjQ0Ci0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtOSwxNCArOSwxNSBAQAogTGlicmFyeSB1c2FnZTogc2VlIHRoZSBUaW1lciBjbGFzcy4KIAogQ29tbWFuZCBsaW5lIHVzYWdlOgotICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstaF0gWy0tXSBbc3RhdGVtZW50XQorICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstcF0gWy1oXSBbLS1dIFtzdGF0ZW1lbnRdCiAKIE9wdGlvbnM6CiAgIC1uLy0tbnVtYmVyIE46IGhvdyBtYW55IHRpbWVzIHRvIGV4ZWN1dGUgJ3N0YXRlbWVudCcgKGRlZmF1bHQ6IHNlZSBiZWxvdykKICAgLXIvLS1yZXBlYXQgTjogaG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0aW1lciAoZGVmYXVsdCAzKQogICAtcy8tLXNldHVwIFM6IHN0YXRlbWVudCB0byBiZSBleGVjdXRlZCBvbmNlIGluaXRpYWxseSAoZGVmYXVsdCAncGFzcycpCi0gIC10Ly0tdGltZTogdXNlIHRpbWUudGltZSgpIChkZWZhdWx0IG9uIFVuaXgpCi0gIC1jLy0tY2xvY2s6IHVzZSB0aW1lLmNsb2NrKCkgKGRlZmF1bHQgb24gV2luZG93cykKKyAgLXAvLS1wcm9jZXNzOiB1c2UgdGltZS5wcm9jZXNzX3RpbWUoKSAoZGVmYXVsdCBpcyB0aW1lLnBlcmZfY291bnRlcigpKQorICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVwcmVjYXRlZCkKKyAgLWMvLS1jbG9jazogdXNlIHRpbWUuY2xvY2soKSAoZGVwcmVjYXRlZCkKICAgLXYvLS12ZXJib3NlOiBwcmludCByYXcgdGltaW5nIHJlc3VsdHM7IHJlcGVhdCBmb3IgbW9yZSBkaWdpdHMgcHJlY2lzaW9uCiAgIC1oLy0taGVscDogcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlIGFuZCBleGl0CiAgIC0tOiBzZXBhcmF0ZSBvcHRpb25zIGZyb20gc3RhdGVtZW50LCB1c2Ugd2hlbiBzdGF0ZW1lbnQgc3RhcnRzIHdpdGggLQpAQCAtNjYsMjMgKzY3LDE3IEBACiBkdW1teV9zcmNfbmFtZSA9ICI8dGltZWl0LXNyYz4iCiBkZWZhdWx0X251bWJlciA9IDEwMDAwMDAKIGRlZmF1bHRfcmVwZWF0ID0gMwotCi1pZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAjIE9uIFdpbmRvd3MsIHRoZSBiZXN0IHRpbWVyIGlzIHRpbWUuY2xvY2soKQotICAgIGRlZmF1bHRfdGltZXIgPSB0aW1lLmNsb2NrCi1lbHNlOgotICAgICMgT24gbW9zdCBvdGhlciBwbGF0Zm9ybXMgdGhlIGJlc3QgdGltZXIgaXMgdGltZS50aW1lKCkKLSAgICBkZWZhdWx0X3RpbWVyID0gdGltZS50aW1lCitkZWZhdWx0X3RpbWVyID0gdGltZS5wZXJmX2NvdW50ZXIKIAogIyBEb24ndCBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZTsgdGhlIHJlaW5kZW50KCkgY2FsbHMKICMgaW4gVGltZXIuX19pbml0X18oKSBkZXBlbmQgb24gc2V0dXAgYmVpbmcgaW5kZW50ZWQgNCBzcGFjZXMgYW5kIHN0bXQKICMgYmVpbmcgaW5kZW50ZWQgOCBzcGFjZXMuCiB0ZW1wbGF0ZSA9ICIiIgogZGVmIGlubmVyKF9pdCwgX3RpbWVyKToKLSAgICAlKHNldHVwKXMKKyAgICB7c2V0dXB9CiAgICAgX3QwID0gX3RpbWVyKCkKICAgICBmb3IgX2kgaW4gX2l0OgotICAgICAgICAlKHN0bXQpcworICAgICAgICB7c3RtdH0KICAgICBfdDEgPSBfdGltZXIoKQogICAgIHJldHVybiBfdDEgLSBfdDAKICIiIgpAQCAtMTI2LDkgKzEyMSw5IEBACiAgICAgICAgICAgICBzdG10ID0gcmVpbmRlbnQoc3RtdCwgOCkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6CiAgICAgICAgICAgICAgICAgc2V0dXAgPSByZWluZGVudChzZXR1cCwgNCkKLSAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZSAlIHsnc3RtdCc6IHN0bXQsICdzZXR1cCc6IHNldHVwfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPXNldHVwKQogICAgICAgICAgICAgZWxpZiBjYWxsYWJsZShzZXR1cCk6Ci0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUgJSB7J3N0bXQnOiBzdG10LCAnc2V0dXAnOiAnX3NldHVwKCknfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPSdfc2V0dXAoKScpCiAgICAgICAgICAgICAgICAgbnNbJ19zZXR1cCddID0gc2V0dXAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2V0dXAgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQpAQCAtMjU1LDkgKzI1MCwxMCBAQAogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCiAgICAgaW1wb3J0IGdldG9wdAogICAgIHRyeToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46czpyOnRjdmgiLAorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjpzOnI6dGNwdmgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bWJlcj0iLCAic2V0dXA9IiwgInJlcGVhdD0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiLCAiY2xvY2siLCAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSIsICJjbG9jayIsICJwcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImhlbHAiXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGVycjoKICAgICAgICAgcHJpbnQoZXJyKQogICAgICAgICBwcmludCgidXNlIC1oLy0taGVscCBmb3IgY29tbWFuZCBsaW5lIGhlbHAiKQpAQCAtMjgyLDYgKzI3OCw4IEBACiAgICAgICAgICAgICB0aW1lciA9IHRpbWUudGltZQogICAgICAgICBpZiBvIGluICgiLWMiLCAiLS1jbG9jayIpOgogICAgICAgICAgICAgdGltZXIgPSB0aW1lLmNsb2NrCisgICAgICAgIGlmIG8gaW4gKCItcCIsICItLXByb2Nlc3MiKToKKyAgICAgICAgICAgIHRpbWVyID0gdGltZS5wcm9jZXNzX3RpbWUKICAgICAgICAgaWYgbyBpbiAoIi12IiwgIi0tdmVyYm9zZSIpOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmVjaXNpb24gKz0gMQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX19pbml0X18ucHkgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQppbmRleCBkZTg1YmY5Li44MDYzZGQ2IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weQorKysgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQpAQCAtMzAsMTYgKzMwLDE4IEBACiB0ay5tYWlubG9vcCgpCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cwogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgIyBBdHRlbXB0IHRvIGNvbmZpZ3VyZSBUY2wvVGsgd2l0aG91dCByZXF1aXJpbmcgUEFUSAogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZpeAorCitpbXBvcnQgd2FybmluZ3MKKwogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCiBUY2xFcnJvciA9IF90a2ludGVyLlRjbEVycm9yCiBmcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCAqCiAKKwogd2FudG9iamVjdHMgPSAxCiAKIFRrVmVyc2lvbiA9IGZsb2F0KF90a2ludGVyLlRLX1ZFUlNJT04pCkBAIC0xNTcsNiArMTU5LDcgQEAKICAgICBTdWJjbGFzc2VzIFN0cmluZ1ZhciwgSW50VmFyLCBEb3VibGVWYXIsIEJvb2xlYW5WYXIgYXJlIHNwZWNpYWxpemF0aW9ucwogICAgIHRoYXQgY29uc3RyYWluIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldCgpLiIiIgogICAgIF9kZWZhdWx0ID0gIiIKKyAgICBfdGsgPSBOb25lCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCB2YWx1ZT1Ob25lLCBuYW1lPU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYSB2YXJpYWJsZQogCkBAIC0xNjcsNiArMTcwLDExIEBACiAgICAgICAgIElmIE5BTUUgbWF0Y2hlcyBhbiBleGlzdGluZyB2YXJpYWJsZSBhbmQgVkFMVUUgaXMgb21pdHRlZAogICAgICAgICB0aGVuIHRoZSBleGlzdGluZyB2YWx1ZSBpcyByZXRhaW5lZC4KICAgICAgICAgIiIiCisgICAgICAgICMgY2hlY2sgZm9yIHR5cGUgb2YgTkFNRSBwYXJhbWV0ZXIgdG8gb3ZlcnJpZGUgd2VpcmQgZXJyb3IgbWVzc2FnZQorICAgICAgICAjIHJhaXNlZCBmcm9tIE1vZHVsZXMvX3RraW50ZXIuYzpTZXRWYXIgbGlrZToKKyAgICAgICAgIyBUeXBlRXJyb3I6IHNldHZhcigpIHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgKDIgZ2l2ZW4pCisgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgbXVzdCBiZSBhIHN0cmluZyIpCiAgICAgICAgIGdsb2JhbCBfdmFybnVtCiAgICAgICAgIGlmIG5vdCBtYXN0ZXI6CiAgICAgICAgICAgICBtYXN0ZXIgPSBfZGVmYXVsdF9yb290CkBAIC0xNzgsMTggKzE4NiwyMSBAQAogICAgICAgICAgICAgc2VsZi5fbmFtZSA9ICdQWV9WQVInICsgcmVwcihfdmFybnVtKQogICAgICAgICAgICAgX3Zhcm51bSArPSAxCiAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXQodmFsdWUpCisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUodmFsdWUpCiAgICAgICAgIGVsaWYgbm90IHNlbGYuX3RrLmNhbGwoImluZm8iLCAiZXhpc3RzIiwgc2VsZi5fbmFtZSk6Ci0gICAgICAgICAgICBzZWxmLnNldChzZWxmLl9kZWZhdWx0KQorICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplKHNlbGYuX2RlZmF1bHQpCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIlVuc2V0IHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCi0gICAgICAgIHNlbGYuX3RrLmdsb2JhbHVuc2V0dmFyKHNlbGYuX25hbWUpCisgICAgICAgIGlmIChzZWxmLl90ayBpcyBub3QgTm9uZSBhbmQgc2VsZi5fdGsuY2FsbCgiaW5mbyIsICJleGlzdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSkpOgorICAgICAgICAgICAgc2VsZi5fdGsuZ2xvYmFsdW5zZXR2YXIoc2VsZi5fbmFtZSkKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAgICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CiAgICAgICAgICIiIlNldCB0aGUgdmFyaWFibGUgdG8gVkFMVUUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90ay5nbG9iYWxzZXR2YXIoc2VsZi5fbmFtZSwgdmFsdWUpCisgICAgaW5pdGlhbGl6ZSA9IHNldAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB2YWx1ZSBvZiB2YXJpYWJsZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKQpAQCAtMjY0LDEyICsyNzUsNiBAQAogICAgICAgICAiIiIKICAgICAgICAgVmFyaWFibGUuX19pbml0X18oc2VsZiwgbWFzdGVyLCB2YWx1ZSwgbmFtZSkKIAotICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiJTZXQgdGhlIHZhcmlhYmxlIHRvIHZhbHVlLCBjb252ZXJ0aW5nIGJvb2xlYW5zIHRvIGludGVnZXJzLiIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKLSAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQotICAgICAgICByZXR1cm4gVmFyaWFibGUuc2V0KHNlbGYsIHZhbHVlKQotCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYW4gaW50ZWdlci4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCkBAIC0zMTAsNyArMzE1LDEwIEBACiAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhIGJvb2wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRib29sZWFuKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGJvb2xlYW4oc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQorICAgICAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGxpdGVyYWwgZm9yIGdldGJvb2xlYW4oKSIpCiAKIGRlZiBtYWlubG9vcChuPTApOgogICAgICIiIlJ1biB0aGUgbWFpbiBsb29wIG9mIFRjbC4iIiIKQEAgLTMyMiw3ICszMzAsMTAgQEAKIAogZGVmIGdldGJvb2xlYW4ocyk6CiAgICAgIiIiQ29udmVydCB0cnVlIGFuZCBmYWxzZSB0byBpbnRlZ2VyIHZhbHVlcyAxIGFuZCAwLiIiIgotICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKIAogIyBNZXRob2RzIGRlZmluZWQgb24gYm90aCB0b3BsZXZlbCBhbmQgaW50ZXJpb3Igd2lkZ2V0cwogY2xhc3MgTWlzYzoKQEAgLTQxMiw3ICs0MjMsMTAgQEAKICAgICBnZXRkb3VibGUgPSBmbG9hdAogICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHMpOgogICAgICAgICAiIiJSZXR1cm4gYSBib29sZWFuIHZhbHVlIGZvciBUY2wgYm9vbGVhbiB2YWx1ZXMgdHJ1ZSBhbmQgZmFsc2UgZ2l2ZW4gYXMgcGFyYW1ldGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4ocykKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBsaXRlcmFsIGZvciBnZXRib29sZWFuKCkiKQogICAgIGRlZiBmb2N1c19zZXQoc2VsZik6CiAgICAgICAgICIiIkRpcmVjdCBpbnB1dCBmb2N1cyB0byB0aGlzIHdpZGdldC4KIApAQCAtMTE4NSw3ICsxMTk5LDYgQEAKICAgICAgICAgcmV0dXJuIChlLCkKICAgICBkZWYgX3JlcG9ydF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgotICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGV4YywgdmFsLCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgIHJvb3QgPSBzZWxmLl9yb290KCkKICAgICAgICAgcm9vdC5yZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKGV4YywgdmFsLCB0YikKQEAgLTEyNjAsNiArMTI3MywxMyBAQAogICAgICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlJywgJ3NsYXZlcycsIHNlbGYuX3cpKV0KICAgICAjIEdyaWQgbWV0aG9kcyB0aGF0IGFwcGx5IHRvIHRoZSBtYXN0ZXIKKyAgICBkZWYgZ3JpZF9hbmNob3Ioc2VsZiwgYW5jaG9yPU5vbmUpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiVGhlIGFuY2hvciB2YWx1ZSBjb250cm9scyBob3cgdG8gcGxhY2UgdGhlIGdyaWQgd2l0aGluIHRoZQorICAgICAgICBtYXN0ZXIgd2hlbiBubyByb3cvY29sdW1uIGhhcyBhbnkgd2VpZ2h0LgorCisgICAgICAgIFRoZSBkZWZhdWx0IGFuY2hvciBpcyBudy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCdncmlkJywgJ2FuY2hvcicsIHNlbGYuX3csIGFuY2hvcikKKyAgICBhbmNob3IgPSBncmlkX2FuY2hvcgogICAgIGRlZiBncmlkX2Jib3goc2VsZiwgY29sdW1uPU5vbmUsIHJvdz1Ob25lLCBjb2wyPU5vbmUsIHJvdzI9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIGludGVnZXIgY29vcmRpbmF0ZXMgZm9yIHRoZSBib3VuZGluZwogICAgICAgICBib3ggb2YgdGhpcyB3aWRnZXQgY29udHJvbGxlZCBieSB0aGUgZ2VvbWV0cnkgbWFuYWdlciBncmlkLgpAQCAtMTI3OCw3ICsxMjk4LDYgQEAKICAgICAgICAgaWYgY29sMiBpcyBub3QgTm9uZSBhbmQgcm93MiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgKGNvbDIsIHJvdzIpCiAgICAgICAgIHJldHVybiBzZWxmLl9nZXRpbnRzKHNlbGYudGsuY2FsbCgqYXJncykpIG9yIE5vbmUKLQogICAgIGJib3ggPSBncmlkX2Jib3gKICAgICBkZWYgX2dyaWRfY29uZmlndXJlKHNlbGYsIGNvbW1hbmQsIGluZGV4LCBjbmYsIGt3KToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCkBAIC0xNTM3LDYgKzE1NTYsMTQgQEAKICAgICAgICAgdGhlIGZvY3VzLiBSZXR1cm4gY3VycmVudCBmb2N1cyBtb2RlbCBpZiBNT0RFTCBpcyBOb25lLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdmb2N1c21vZGVsJywgc2VsZi5fdywgbW9kZWwpCiAgICAgZm9jdXNtb2RlbCA9IHdtX2ZvY3VzbW9kZWwKKyAgICBkZWYgd21fZm9yZ2V0KHNlbGYsIHdpbmRvdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2luZG93IHdpbGwgYmUgdW5tYXBwZW5kIGZyb20gdGhlIHNjcmVlbiBhbmQgd2lsbCBubyBsb25nZXIKKyAgICAgICAgYmUgbWFuYWdlZCBieSB3bS4gdG9wbGV2ZWwgd2luZG93cyB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBmcmFtZQorICAgICAgICB3aW5kb3dzIG9uY2UgdGhleSBhcmUgbm8gbG9uZ2VyIG1hbmFnZWQgYnkgd20sIGhvd2V2ZXIsIHRoZSBtZW51CisgICAgICAgIG9wdGlvbiBjb25maWd1cmF0aW9uIHdpbGwgYmUgcmVtZW1iZXJlZCBhbmQgdGhlIG1lbnVzIHdpbGwgcmV0dXJuCisgICAgICAgIG9uY2UgdGhlIHdpZGdldCBpcyBtYW5hZ2VkIGFnYWluLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZvcmdldCcsIHdpbmRvdykKKyAgICBmb3JnZXQgPSB3bV9mb3JnZXQKICAgICBkZWYgd21fZnJhbWUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBpZGVudGlmaWVyIGZvciBkZWNvcmF0aXZlIGZyYW1lIG9mIHRoaXMgd2lkZ2V0IGlmIHByZXNlbnQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZyYW1lJywgc2VsZi5fdykKQEAgLTE1OTAsNiArMTYxNywzMSBAQAogICAgICAgICBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ubmFtZScsIHNlbGYuX3csIG5ld05hbWUpCiAgICAgaWNvbm5hbWUgPSB3bV9pY29ubmFtZQorICAgIGRlZiB3bV9pY29ucGhvdG8oc2VsZiwgZGVmYXVsdD1GYWxzZSwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiU2V0cyB0aGUgdGl0bGViYXIgaWNvbiBmb3IgdGhpcyB3aW5kb3cgYmFzZWQgb24gdGhlIG5hbWVkIHBob3RvCisgICAgICAgIGltYWdlcyBwYXNzZWQgdGhyb3VnaCBhcmdzLiBJZiBkZWZhdWx0IGlzIFRydWUsIHRoaXMgaXMgYXBwbGllZCB0bworICAgICAgICBhbGwgZnV0dXJlIGNyZWF0ZWQgdG9wbGV2ZWxzIGFzIHdlbGwuCisKKyAgICAgICAgVGhlIGRhdGEgaW4gdGhlIGltYWdlcyBpcyB0YWtlbiBhcyBhIHNuYXBzaG90IGF0IHRoZSB0aW1lIG9mCisgICAgICAgIGludm9jYXRpb24uIElmIHRoZSBpbWFnZXMgYXJlIGxhdGVyIGNoYW5nZWQsIHRoaXMgaXMgbm90IHJlZmxlY3RlZAorICAgICAgICB0byB0aGUgdGl0bGViYXIgaWNvbnMuIE11bHRpcGxlIGltYWdlcyBhcmUgYWNjZXB0ZWQgdG8gYWxsb3cKKyAgICAgICAgZGlmZmVyZW50IGltYWdlcyBzaXplcyB0byBiZSBwcm92aWRlZC4gVGhlIHdpbmRvdyBtYW5hZ2VyIG1heSBzY2FsZQorICAgICAgICBwcm92aWRlZCBpY29ucyB0byBhbiBhcHByb3ByaWF0ZSBzaXplLgorCisgICAgICAgIE9uIFdpbmRvd3MsIHRoZSBpbWFnZXMgYXJlIHBhY2tlZCBpbnRvIGEgV2luZG93cyBpY29uIHN0cnVjdHVyZS4KKyAgICAgICAgVGhpcyB3aWxsIG92ZXJyaWRlIGFuIGljb24gc3BlY2lmaWVkIHRvIHdtX2ljb25iaXRtYXAsIGFuZCB2aWNlCisgICAgICAgIHZlcnNhLgorCisgICAgICAgIE9uIFgsIHRoZSBpbWFnZXMgYXJlIGFycmFuZ2VkIGludG8gdGhlIF9ORVRfV01fSUNPTiBYIHByb3BlcnR5LAorICAgICAgICB3aGljaCBtb3N0IG1vZGVybiB3aW5kb3cgbWFuYWdlcnMgc3VwcG9ydC4gQW4gaWNvbiBzcGVjaWZpZWQgYnkKKyAgICAgICAgd21faWNvbmJpdG1hcCBtYXkgZXhpc3Qgc2ltdXVsdGFuZW91c2x5LgorCisgICAgICAgIE9uIE1hY2ludG9zaCwgdGhpcyBjdXJyZW50bHkgZG9lcyBub3RoaW5nLiIiIgorICAgICAgICBpZiBkZWZhdWx0OgorICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3bScsICdpY29ucGhvdG8nLCBzZWxmLl93LCAiLWRlZmF1bHQiLCAqYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd20nLCAnaWNvbnBob3RvJywgc2VsZi5fdywgKmFyZ3MpCisgICAgaWNvbnBob3RvID0gd21faWNvbnBob3RvCiAgICAgZGVmIHdtX2ljb25wb3NpdGlvbihzZWxmLCB4PU5vbmUsIHk9Tm9uZSk6CiAgICAgICAgICIiIlNldCB0aGUgcG9zaXRpb24gb2YgdGhlIGljb24gb2YgdGhpcyB3aWRnZXQgdG8gWCBhbmQgWS4gUmV0dXJuCiAgICAgICAgIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIFggYW5kIFggaWYgTm9uZSBpcyBnaXZlbi4iIiIKQEAgLTE2MDEsNiArMTY1MywxMiBAQAogICAgICAgICB2YWx1ZSBpZiBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ud2luZG93Jywgc2VsZi5fdywgcGF0aE5hbWUpCiAgICAgaWNvbndpbmRvdyA9IHdtX2ljb253aW5kb3cKKyAgICBkZWYgd21fbWFuYWdlKHNlbGYsIHdpZGdldCk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2lkZ2V0IHNwZWNpZmllZCB3aWxsIGJlY29tZSBhIHN0YW5kIGFsb25lIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgICAgIFRoZSB3aW5kb3cgd2lsbCBiZSBkZWNvcmF0ZWQgd2l0aCB0aGUgd2luZG93IG1hbmFnZXJzIHRpdGxlIGJhciwKKyAgICAgICAgZXRjLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ21hbmFnZScsIHdpZGdldCkKKyAgICBtYW5hZ2UgPSB3bV9tYW5hZ2UKICAgICBkZWYgd21fbWF4c2l6ZShzZWxmLCB3aWR0aD1Ob25lLCBoZWlnaHQ9Tm9uZSk6CiAgICAgICAgICIiIlNldCBtYXggV0lEVEggYW5kIEhFSUdIVCBmb3IgdGhpcyB3aWRnZXQuIElmIHRoZSB3aW5kb3cgaXMgZ3JpZGRlZAogICAgICAgICB0aGUgdmFsdWVzIGFyZSBnaXZlbiBpbiBncmlkIHVuaXRzLiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWVzIGlmIE5vbmUKQEAgLTE2ODksNyArMTc0Nyw3IEBACiAgICAgICAgICMgZW5zdXJlIHRoYXQgc2VsZi50ayBpcyBhbHdheXMgX3NvbWV0aGluZ18uCiAgICAgICAgIHNlbGYudGsgPSBOb25lCiAgICAgICAgIGlmIGJhc2VOYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgc3lzLCBvcworICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCiAgICAgICAgICAgICBiYXNlTmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlTmFtZSkKICAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CkBAIC0xNzYzLDcgKzE4MjEsNyBAQAogICAgICAgICAgICAgZXhlYyhvcGVuKGJhc2VfcHkpLnJlYWQoKSwgZGlyKQogICAgIGRlZiByZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKHNlbGYsIGV4YywgdmFsLCB0Yik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiBJdCByZXBvcnRzIGV4Y2VwdGlvbiBvbiBzeXMuc3RkZXJyLiIiIgotICAgICAgICBpbXBvcnQgdHJhY2ViYWNrLCBzeXMKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFeGNlcHRpb24gaW4gVGtpbnRlciBjYWxsYmFja1xuIikKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IGV4YwogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbApAQCAtMjA4OCwyNSArMjE0Niw0NSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChzZWxmLl93LCAnaW52b2tlJykKIAorCiAjIEluZGljZXM6CiAjIFhYWCBJIGRvbid0IGxpa2UgdGhlc2UgLS0gdGFrZSB0aGVtIGF3YXkKIGRlZiBBdEVuZCgpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRFbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ2VuZCcKKworCiBkZWYgQXRJbnNlcnQoKmFyZ3MpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRJbnNlcnQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBzID0gJ2luc2VydCcKICAgICBmb3IgYSBpbiBhcmdzOgogICAgICAgICBpZiBhOiBzID0gcyArICgnICcgKyBhKQogICAgIHJldHVybiBzCisKKwogZGVmIEF0U2VsRmlyc3QoKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0U2VsRmlyc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5maXJzdCcKKworCiBkZWYgQXRTZWxMYXN0KCk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdFNlbExhc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5sYXN0JworCisKIGRlZiBBdCh4LCB5PU5vbmUpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBpZiB5IGlzIE5vbmU6CiAgICAgICAgIHJldHVybiAnQCVyJyAlICh4LCkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gJ0AlciwlcicgJSAoeCwgeSkKIAorCiBjbGFzcyBDYW52YXMoV2lkZ2V0LCBYVmlldywgWVZpZXcpOgogICAgICIiIkNhbnZhcyB3aWRnZXQgdG8gZGlzcGxheSBncmFwaGljYWwgZWxlbWVudHMgbGlrZSBsaW5lcyBvciB0ZXh0LiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKQEAgLTI2OTIsNiArMjc3MCwxMCBAQAogICAgIGRlZiB1bnBvc3Qoc2VsZik6CiAgICAgICAgICIiIlVubWFwIGEgbWVudS4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICd1bnBvc3QnKQorICAgIGRlZiB4cG9zaXRpb24oc2VsZiwgaW5kZXgpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB4LXBvc2l0aW9uIG9mIHRoZSBsZWZ0bW9zdCBwaXhlbCBvZiB0aGUgbWVudSBpdGVtCisgICAgICAgIGF0IElOREVYLiIiIgorICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAneHBvc2l0aW9uJywgaW5kZXgpKQogICAgIGRlZiB5cG9zaXRpb24oc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHktcG9zaXRpb24gb2YgdGhlIHRvcG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbSBhdCBJTkRFWC4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCkBAIC0yODUxLDYgKzI5MzMsMjUgQEAKICAgICAgICAgcmVsYXRpb24gT1AgaXMgc2F0aXNmaWVkLiBPUCBpcyBvbmUgb2YgPCwgPD0sID09LCA+PSwgPiwgb3IgIT0uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4oc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NvbXBhcmUnLCBpbmRleDEsIG9wLCBpbmRleDIpKQorICAgIGRlZiBjb3VudChzZWxmLCBpbmRleDEsIGluZGV4MiwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiQ291bnRzIHRoZSBudW1iZXIgb2YgcmVsZXZhbnQgdGhpbmdzIGJldHdlZW4gdGhlIHR3byBpbmRpY2VzLgorICAgICAgICBJZiBpbmRleDEgaXMgYWZ0ZXIgaW5kZXgyLCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIKKyAgICAgICAgKGFuZCB0aGlzIGhvbGRzIGZvciBlYWNoIG9mIHRoZSBwb3NzaWJsZSBvcHRpb25zKS4KKworICAgICAgICBUaGUgYWN0dWFsIGl0ZW1zIHdoaWNoIGFyZSBjb3VudGVkIGRlcGVuZHMgb24gdGhlIG9wdGlvbnMgZ2l2ZW4gYnkKKyAgICAgICAgYXJncy4gVGhlIHJlc3VsdCBpcyBhIGxpc3Qgb2YgaW50ZWdlcnMsIG9uZSBmb3IgdGhlIHJlc3VsdCBvZiBlYWNoCisgICAgICAgIGNvdW50aW5nIG9wdGlvbiBnaXZlbi4gVmFsaWQgY291bnRpbmcgb3B0aW9ucyBhcmUgImNoYXJzIiwKKyAgICAgICAgImRpc3BsYXljaGFycyIsICJkaXNwbGF5aW5kaWNlcyIsICJkaXNwbGF5bGluZXMiLCAiaW5kaWNlcyIsCisgICAgICAgICJsaW5lcyIsICJ4cGl4ZWxzIiBhbmQgInlwaXhlbHMiLiBUaGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBvc3NpYmxlCisgICAgICAgIG9wdGlvbiAidXBkYXRlIiwgd2hpY2ggaWYgZ2l2ZW4gdGhlbiBhbGwgc3Vic2VxdWVudCBvcHRpb25zIGVuc3VyZQorICAgICAgICB0aGF0IGFueSBwb3NzaWJsZSBvdXQgb2YgZGF0ZSBpbmZvcm1hdGlvbiBpcyByZWNhbGN1bGF0ZWQuIiIiCisgICAgICAgIGFyZ3MgPSBbJy0lcycgJSBhcmcgZm9yIGFyZyBpbiBhcmdzIGlmIG5vdCBhcmcuc3RhcnRzd2l0aCgnLScpXQorICAgICAgICBhcmdzICs9IFtpbmRleDEsIGluZGV4Ml0KKyAgICAgICAgcmVzID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdjb3VudCcsICphcmdzKSBvciBOb25lCisgICAgICAgIGlmIHJlcyBpcyBub3QgTm9uZSBhbmQgbGVuKGFyZ3MpIDw9IDM6CisgICAgICAgICAgICByZXR1cm4gKHJlcywgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgIGRlZiBkZWJ1ZyhzZWxmLCBib29sZWFuPU5vbmUpOgogICAgICAgICAiIiJUdXJuIG9uIHRoZSBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3Mgb2YgdGhlIEItVHJlZSBpbnNpZGUgdGhlIHRleHQKICAgICAgICAgd2lkZ2V0IGFjY29yZGluZyB0byBCT09MRUFOLiIiIgpAQCAtMzAxMyw2ICszMTE0LDI0IEBACiAgICAgZGVmIG1hcmtfcHJldmlvdXMoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHByZXZpb3VzIG1hcmsgYmVmb3JlIElOREVYLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKHNlbGYuX3csICdtYXJrJywgJ3ByZXZpb3VzJywgaW5kZXgpIG9yIE5vbmUKKyAgICBkZWYgcGVlcl9jcmVhdGUoc2VsZiwgbmV3UGF0aE5hbWUsIGNuZj17fSwgKiprdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJDcmVhdGVzIGEgcGVlciB0ZXh0IHdpZGdldCB3aXRoIHRoZSBnaXZlbiBuZXdQYXRoTmFtZSwgYW5kIGFueQorICAgICAgICBvcHRpb25hbCBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJ5IGRlZmF1bHQgdGhlIHBlZXIgd2lsbAorICAgICAgICBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBhbmQgZW5kIGxpbmUgYXMgdGhlIHBhcmVudCB3aWRnZXQsIGJ1dAorICAgICAgICB0aGVzZSBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdwZWVyJywgJ2NyZWF0ZScsIG5ld1BhdGhOYW1lLAorICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoY25mLCBrdykpCisgICAgZGVmIHBlZXJfbmFtZXMoc2VsZik6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBwZWVycyBvZiB0aGlzIHdpZGdldCAodGhpcyBkb2VzIG5vdCBpbmNsdWRlCisgICAgICAgIHRoZSB3aWRnZXQgaXRzZWxmKS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGVlcicsICduYW1lcycpKQorICAgIGRlZiByZXBsYWNlKHNlbGYsIGluZGV4MSwgaW5kZXgyLCBjaGFycywgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmVwbGFjZXMgdGhlIHJhbmdlIG9mIGNoYXJhY3RlcnMgYmV0d2VlbiBpbmRleDEgYW5kIGluZGV4MiB3aXRoCisgICAgICAgIHRoZSBnaXZlbiBjaGFyYWN0ZXJzIGFuZCB0YWdzIHNwZWNpZmllZCBieSBhcmdzLgorCisgICAgICAgIFNlZSB0aGUgbWV0aG9kIGluc2VydCBmb3Igc29tZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGFyZ3MsIGFuZCB0aGUKKyAgICAgICAgbWV0aG9kIGRlbGV0ZSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluZGljZXMuIiIiCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAncmVwbGFjZScsIGluZGV4MSwgaW5kZXgyLCBjaGFycywgKmFyZ3MpCiAgICAgZGVmIHNjYW5fbWFyayhzZWxmLCB4LCB5KToKICAgICAgICAgIiIiUmVtZW1iZXIgdGhlIGN1cnJlbnQgWCwgWSBjb29yZGluYXRlcy4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdzY2FuJywgJ21hcmsnLCB4LCB5KQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX2ZpeC5weSBiL0xpYi90a2ludGVyL19maXgucHkKaW5kZXggNWE2OWQ4OS4uNWYzMmQyNSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX2ZpeC5weQorKysgYi9MaWIvdGtpbnRlci9fZml4LnB5CkBAIC00NiwxMCArNDYsMTAgQEAKICAgICAgICAgICAgIHMgPSAiXFwiICsgc1szOl0KICAgICAgICAgcmV0dXJuIHMKIAotcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsInRjbCIpCitwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCJ0Y2wiKQogaWYgbm90IG9zLnBhdGguZXhpc3RzKHByZWZpeCk6CiAgICAgIyBkZXZkaXIvLi4vdGNsdGsvbGliCi0gICAgcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsIG9zLnBhdGgucGFyZGlyLCAidGNsdGsiLCAibGliIikKKyAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCBvcy5wYXRoLnBhcmRpciwgInRjbHRrIiwgImxpYiIpCiAgICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKHByZWZpeCkKICMgaWYgdGhpcyBkb2VzIG5vdCBleGlzdCwgbm8gZnVydGhlciBzZWFyY2ggaXMgbmVlZGVkCiBpZiBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weSBiL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkKaW5kZXggOThkMmQ1Yy4uM2ZmYjI1MiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weQorKysgYi9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5CkBAIC0zMDYsNyArMzA2LDYgQEAKICAgICBkZWYgX2ZpeHJlc3VsdChzZWxmLCB3aWRnZXQsIHJlc3VsdCk6CiAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgICMga2VlcCBkaXJlY3RvcnkgYW5kIGZpbGVuYW1lIHVudGlsIG5leHQgdGltZQotICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICAjIGNvbnZlcnQgVGNsIHBhdGggb2JqZWN0cyB0byBzdHJpbmdzCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN0cmluZwpAQCAtMzMzLDcgKzMzMiw2IEBACiAgICAgICAgICAgICAjIG11bHRpcGxlIHJlc3VsdHM6CiAgICAgICAgICAgICByZXN1bHQgPSB0dXBsZShbZ2V0YXR0cihyLCAic3RyaW5nIiwgcikgZm9yIHIgaW4gcmVzdWx0XSkKICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgICAgICBwYXRoLCBmaWxlID0gb3MucGF0aC5zcGxpdChyZXN1bHRbMF0pCiAgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25zWyJpbml0aWFsZGlyIl0gPSBwYXRoCiAgICAgICAgICAgICAgICAgIyBkb24ndCBzZXQgaW5pdGlhbGZpbGUgb3IgZmlsZW5hbWUsIGFzIHdlIGhhdmUgbXVsdGlwbGUgb2YgdGhlc2UKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2ZvbnQucHkgYi9MaWIvdGtpbnRlci9mb250LnB5CmluZGV4IDU0MjViMDYuLjQ5MjkyNDEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2ZvbnQucHkKKysrIGIvTGliL3RraW50ZXIvZm9udC5weQpAQCAtMiwyNyArMiwyNyBAQAogIwogIyB3cml0dGVuIGJ5IEZyZWRyaWsgTHVuZGgsIEZlYnJ1YXJ5IDE5OTgKICMKLSMgRklYTUU6IHNob3VsZCBhZGQgJ2Rpc3BsYXlvZicgb3B0aW9uIHdoZXJlIHJlbGV2YW50IChhY3R1YWwsIGZhbWlsaWVzLAotIyAgICAgICAgbWVhc3VyZSwgYW5kIG1ldHJpY3MpCi0jCiAKIF9fdmVyc2lvbl9fID0gIjAuOSIKIAoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHRraW50ZXIKIAorCiAjIHdlaWdodC9zbGFudAogTk9STUFMID0gIm5vcm1hbCIKIFJPTUFOID0gInJvbWFuIgogQk9MRCAgID0gImJvbGQiCiBJVEFMSUMgPSAiaXRhbGljIgogCisKIGRlZiBuYW1ldG9mb250KG5hbWUpOgogICAgICIiIkdpdmVuIHRoZSBuYW1lIG9mIGEgdGsgbmFtZWQgZm9udCwgcmV0dXJucyBhIEZvbnQgcmVwcmVzZW50YXRpb24uCiAgICAgIiIiCiAgICAgcmV0dXJuIEZvbnQobmFtZT1uYW1lLCBleGlzdHM9VHJ1ZSkKIAotY2xhc3MgRm9udDoKIAorY2xhc3MgRm9udDoKICAgICAiIiJSZXByZXNlbnRzIGEgbmFtZWQgZm9udC4KIAogICAgIENvbnN0cnVjdG9yIG9wdGlvbnMgYXJlOgpAQCAtNDQsNiArNDQsOCBAQAogCiAgICAgIiIiCiAKKyAgICBjb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KDEpCisKICAgICBkZWYgX3NldChzZWxmLCBrdyk6CiAgICAgICAgIG9wdGlvbnMgPSBbXQogICAgICAgICBmb3IgaywgdiBpbiBrdy5pdGVtcygpOgpAQCAtNjMsNyArNjUsOCBAQAogICAgICAgICAgICAgb3B0aW9uc1thcmdzW2ldWzE6XV0gPSBhcmdzW2krMV0KICAgICAgICAgcmV0dXJuIG9wdGlvbnMKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290PU5vbmUsIGZvbnQ9Tm9uZSwgbmFtZT1Ob25lLCBleGlzdHM9RmFsc2UsICoqb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3Q9Tm9uZSwgZm9udD1Ob25lLCBuYW1lPU5vbmUsIGV4aXN0cz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgKipvcHRpb25zKToKICAgICAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgICAgICByb290ID0gdGtpbnRlci5fZGVmYXVsdF9yb290CiAgICAgICAgIGlmIGZvbnQ6CkBAIC03Miw3ICs3NSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmb250ID0gc2VsZi5fc2V0KG9wdGlvbnMpCiAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgbmFtZSA9ICJmb250IiArIHN0cihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSAiZm9udCIgKyBzdHIobmV4dChzZWxmLmNvdW50ZXIpKQogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgaWYgZXhpc3RzOgpAQCAtMTE4LDE0ICsxMjEsMTcgQEAKICAgICAgICAgIlJldHVybiBhIGRpc3RpbmN0IGNvcHkgb2YgdGhlIGN1cnJlbnQgZm9udCIKICAgICAgICAgcmV0dXJuIEZvbnQoc2VsZi5fcm9vdCwgKipzZWxmLmFjdHVhbCgpKQogCi0gICAgZGVmIGFjdHVhbChzZWxmLCBvcHRpb249Tm9uZSk6CisgICAgZGVmIGFjdHVhbChzZWxmLCBvcHRpb249Tm9uZSwgZGlzcGxheW9mPU5vbmUpOgogICAgICAgICAiUmV0dXJuIGFjdHVhbCBmb250IGF0dHJpYnV0ZXMiCisgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQogICAgICAgICBpZiBvcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUsICItIitvcHRpb24pCisgICAgICAgICAgICBhcmdzID0gYXJncyArICgnLScgKyBvcHRpb24sICkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSwgKmFyZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbWtkaWN0KAotICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiYWN0dWFsIiwgc2VsZi5uYW1lKSkKLSAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUsICphcmdzKSkpCiAKICAgICBkZWYgY2dldChzZWxmLCBvcHRpb24pOgogICAgICAgICAiR2V0IGZvbnQgYXR0cmlidXRlIgpAQCAtMTM4LDM3ICsxNDQsNDcgQEAKICAgICAgICAgICAgICAgICAgICpzZWxmLl9zZXQob3B0aW9ucykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbWtkaWN0KAotICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiY29uZmlnIiwgc2VsZi5uYW1lKSkKLSAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJjb25maWciLCBzZWxmLm5hbWUpKSkKIAogICAgIGNvbmZpZ3VyZSA9IGNvbmZpZwogCi0gICAgZGVmIG1lYXN1cmUoc2VsZiwgdGV4dCk6CisgICAgZGVmIG1lYXN1cmUoc2VsZiwgdGV4dCwgZGlzcGxheW9mPU5vbmUpOgogICAgICAgICAiUmV0dXJuIHRleHQgd2lkdGgiCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fY2FsbCgiZm9udCIsICJtZWFzdXJlIiwgc2VsZi5uYW1lLCB0ZXh0KSkKKyAgICAgICAgYXJncyA9ICh0ZXh0LCkKKyAgICAgICAgaWYgZGlzcGxheW9mOgorICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZiwgdGV4dCkKKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsICphcmdzKSkKIAotICAgIGRlZiBtZXRyaWNzKHNlbGYsICpvcHRpb25zKToKKyAgICBkZWYgbWV0cmljcyhzZWxmLCAqb3B0aW9ucywgKiprdyk6CiAgICAgICAgICIiIlJldHVybiBmb250IG1ldHJpY3MuCiAKICAgICAgICAgRm9yIGJlc3QgcGVyZm9ybWFuY2UsIGNyZWF0ZSBhIGR1bW15IHdpZGdldAogICAgICAgICB1c2luZyB0aGlzIGZvbnQgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QuIiIiCi0KKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGRpc3BsYXlvZiA9IGt3LnBvcCgnZGlzcGxheW9mJywgTm9uZSkKKyAgICAgICAgaWYgZGlzcGxheW9mOgorICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZikKICAgICAgICAgaWYgb3B0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgc2VsZi5fZ2V0KG9wdGlvbnMpCiAgICAgICAgICAgICByZXR1cm4gaW50KAotICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgc2VsZi5fZ2V0KG9wdGlvbnMpKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcyA9IHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSkpCisgICAgICAgICAgICByZXMgPSBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgICAgIG9wdGlvbnMgPSB7fQogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHJlcyksIDIpOgogICAgICAgICAgICAgICAgIG9wdGlvbnNbcmVzW2ldWzE6XV0gPSBpbnQocmVzW2krMV0pCiAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucwogCi1kZWYgZmFtaWxpZXMocm9vdD1Ob25lKToKKworZGVmIGZhbWlsaWVzKHJvb3Q9Tm9uZSwgZGlzcGxheW9mPU5vbmUpOgogICAgICJHZXQgZm9udCBmYW1pbGllcyAoYXMgYSB0dXBsZSkiCiAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgIHJvb3QgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKLSAgICByZXR1cm4gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCJmb250IiwgImZhbWlsaWVzIikpCisgICAgYXJncyA9ICgpCisgICAgaWYgZGlzcGxheW9mOgorICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQorICAgIHJldHVybiByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoImZvbnQiLCAiZmFtaWxpZXMiLCAqYXJncykpCisKIAogZGVmIG5hbWVzKHJvb3Q9Tm9uZSk6CiAgICAgIkdldCBuYW1lcyBvZiBkZWZpbmVkIGZvbnRzIChhcyBhIHR1cGxlKSIKQEAgLTE3Niw2ICsxOTIsNyBAQAogICAgICAgICByb290ID0gdGtpbnRlci5fZGVmYXVsdF9yb290CiAgICAgcmV0dXJuIHJvb3QudGsuc3BsaXRsaXN0KHJvb3QudGsuY2FsbCgiZm9udCIsICJuYW1lcyIpKQogCisKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgdGVzdCBzdHVmZgogCkBAIC0xOTgsMTAgKzIxNSwxMCBAQAogCiAgICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIpKQogCi0gICAgcHJpbnQoZi5tZXRyaWNzKCkpCisgICAgcHJpbnQoZi5tZXRyaWNzKGRpc3BsYXlvZj1yb290KSkKIAogICAgIGYgPSBGb250KGZvbnQ9KCJDb3VyaWVyIiwgMjAsICJib2xkIikpCi0gICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIpKQorICAgIHByaW50KGYubWVhc3VyZSgiaGVsbG8iKSwgZi5tZXRyaWNzKCJsaW5lc3BhY2UiLCBkaXNwbGF5b2Y9cm9vdCkpCiAKICAgICB3ID0gdGtpbnRlci5MYWJlbChyb290LCB0ZXh0PSJIZWxsbywgd29ybGQiLCBmb250PWYpCiAgICAgdy5wYWNrKCkKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc4Y2M5MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CkBAIC0wLDAgKzEsMTY1IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0a2ludGVyIGltcG9ydCBWYXJpYWJsZSwgU3RyaW5nVmFyLCBJbnRWYXIsIERvdWJsZVZhciwgQm9vbGVhblZhciwgVGsKKworCitjbGFzcyBWYXIoVmFyaWFibGUpOgorCisgICAgX2RlZmF1bHQgPSAiZGVmYXVsdCIKKyAgICBzaWRlX2VmZmVjdCA9IEZhbHNlCisKKyAgICBkZWYgc2V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5zaWRlX2VmZmVjdCA9IFRydWUKKyAgICAgICAgc3VwZXIoKS5zZXQodmFsdWUpCisKKworY2xhc3MgVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJvb3QgPSBUaygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYucm9vdC5kZXN0cm95KCkKKworCitjbGFzcyBUZXN0VmFyaWFibGUoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIodiksIHIiXlBZX1ZBUihcZCspJCIpCisKKyAgICBkZWYgdGVzdF9uYW1lX2FuZF92YWx1ZShzZWxmKToKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCwgInNhbXBsZSBzdHJpbmciLCAidmFybmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNhbXBsZSBzdHJpbmciLCB2LmdldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ2YXJuYW1lIiwgc3RyKHYpKQorCisgICAgZGVmIHRlc3RfX19kZWxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAidmFybmFtZSIpKQorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290LCAic2FtcGxlIHN0cmluZyIsICJ2YXJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIGRlbCB2CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKworICAgIGRlZiB0ZXN0X2RvbnRfdW5zZXRfbm90X2V4aXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIHYxID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgdjIgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBkZWwgdjEKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAibmFtZSIpKQorICAgICAgICAjIHNob3VsZG4ndCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZGVsIHYyCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgIm5hbWUiKSkKKworICAgIGRlZiB0ZXN0X19fZXFfXyhzZWxmKToKKyAgICAgICAgIyB2YWx1ZXMgZG9lc24ndCBtYXR0ZXIsIG9ubHkgY2xhc3MgYW5kIG5hbWUgYXJlIGNoZWNrZWQKKyAgICAgICAgdjEgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHYyID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYxLCB2MikKKworICAgICAgICB2MyA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0iYWJjIikKKyAgICAgICAgdjQgPSBTdHJpbmdWYXIoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYzLCB2NCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPTEyMykKKworICAgIGRlZiB0ZXN0X2luaXRpYWxpemUoc2VsZik6CisgICAgICAgIHYgPSBWYXIoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuc2lkZV9lZmZlY3QpCisgICAgICAgIHYuc2V0KCJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2LnNpZGVfZWZmZWN0KQorCisKK2NsYXNzIFRlc3RTdHJpbmdWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IFN0cmluZ1ZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHYgPSBTdHJpbmdWYXIoc2VsZi5yb290LCAiYWJjIiwgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmMiLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidmFsdWUiLCB2LmdldCgpKQorCisKK2NsYXNzIFRlc3RJbnRWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QsIDEyMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMywgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDM0NSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CisgICAgICAgIHYgPSBJbnRWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMzQ1LjAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK2NsYXNzIFRlc3REb3VibGVWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMC4wLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgMS4yMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDEuMjMsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMy40NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMy40NSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldF9mcm9tX2ludChzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QsIDEuMjMsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgxLjIzLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjMuNDUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDMuNDUsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiNDU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCg0NTYsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3ZhbHVlKHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK2NsYXNzIFRlc3RCb29sZWFuVmFyKFRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHYgPSBCb29sZWFuVmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IEJvb2xlYW5WYXIoc2VsZi5yb290LCBUcnVlLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoVHJ1ZSwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIwIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChGYWxzZSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWVfZG9tYWluKHNlbGYpOgorICAgICAgICB2ID0gQm9vbGVhblZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIxLjAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK3Rlc3RzX2d1aSA9IChUZXN0VmFyaWFibGUsIFRlc3RTdHJpbmdWYXIsIFRlc3RJbnRWYXIsCisgICAgICAgICAgICAgVGVzdERvdWJsZVZhciwgVGVzdEJvb2xlYW5WYXIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0c19ndWkpCmRpZmYgLS1naXQgYS9MaWIvdG9rZW4ucHkgYi9MaWIvdG9rZW4ucHkKaW5kZXggNmI1MzIwZC4uMzFmYWUwYSAxMDA3NTUKLS0tIGEvTGliL3Rva2VuLnB5CisrKyBiL0xpYi90b2tlbi5weQpAQCAtNzAsNyArNzAsNyBAQAogCiB0b2tfbmFtZSA9IHt2YWx1ZTogbmFtZQogICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGdsb2JhbHMoKS5pdGVtcygpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpfQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KSBhbmQgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpfQogX19hbGxfXy5leHRlbmQodG9rX25hbWUudmFsdWVzKCkpCiAKIGRlZiBJU1RFUk1JTkFMKHgpOgpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuaXplLnB5IGIvTGliL3Rva2VuaXplLnB5CmluZGV4IDU5MDgxZDMuLmQ2Njk0MTIgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbml6ZS5weQorKysgYi9MaWIvdG9rZW5pemUucHkKQEAgLTQ1LDYgKzQ1LDUxIEBACiBFTkNPRElORyA9IE5fVE9LRU5TICsgMgogdG9rX25hbWVbRU5DT0RJTkddID0gJ0VOQ09ESU5HJwogTl9UT0tFTlMgKz0gMworRVhBQ1RfVE9LRU5fVFlQRVMgPSB7CisgICAgJygnOiAgIExQQVIsCisgICAgJyknOiAgIFJQQVIsCisgICAgJ1snOiAgIExTUUIsCisgICAgJ10nOiAgIFJTUUIsCisgICAgJzonOiAgIENPTE9OLAorICAgICcsJzogICBDT01NQSwKKyAgICAnOyc6ICAgU0VNSSwKKyAgICAnKyc6ICAgUExVUywKKyAgICAnLSc6ICAgTUlOVVMsCisgICAgJyonOiAgIFNUQVIsCisgICAgJy8nOiAgIFNMQVNILAorICAgICd8JzogICBWQkFSLAorICAgICcmJzogICBBTVBFUiwKKyAgICAnPCc6ICAgTEVTUywKKyAgICAnPic6ICAgR1JFQVRFUiwKKyAgICAnPSc6ICAgRVFVQUwsCisgICAgJy4nOiAgIERPVCwKKyAgICAnJSc6ICAgUEVSQ0VOVCwKKyAgICAneyc6ICAgTEJSQUNFLAorICAgICd9JzogICBSQlJBQ0UsCisgICAgJz09JzogIEVRRVFVQUwsCisgICAgJyE9JzogIE5PVEVRVUFMLAorICAgICc8PSc6ICBMRVNTRVFVQUwsCisgICAgJz49JzogIEdSRUFURVJFUVVBTCwKKyAgICAnfic6ICAgVElMREUsCisgICAgJ14nOiAgIENJUkNVTUZMRVgsCisgICAgJzw8JzogIExFRlRTSElGVCwKKyAgICAnPj4nOiAgUklHSFRTSElGVCwKKyAgICAnKionOiAgRE9VQkxFU1RBUiwKKyAgICAnKz0nOiAgUExVU0VRVUFMLAorICAgICctPSc6ICBNSU5FUVVBTCwKKyAgICAnKj0nOiAgU1RBUkVRVUFMLAorICAgICcvPSc6ICBTTEFTSEVRVUFMLAorICAgICclPSc6ICBQRVJDRU5URVFVQUwsCisgICAgJyY9JzogIEFNUEVSRVFVQUwsCisgICAgJ3w9JzogIFZCQVJFUVVBTCwKKyAgICAnXj0nOiBDSVJDVU1GTEVYRVFVQUwsCisgICAgJzw8PSc6IExFRlRTSElGVEVRVUFMLAorICAgICc+Pj0nOiBSSUdIVFNISUZURVFVQUwsCisgICAgJyoqPSc6IERPVUJMRVNUQVJFUVVBTCwKKyAgICAnLy8nOiAgRE9VQkxFU0xBU0gsCisgICAgJy8vPSc6IERPVUJMRVNMQVNIRVFVQUwsCisgICAgJ0AnOiAgIEFUCit9CiAKIGNsYXNzIFRva2VuSW5mbyhjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdUb2tlbkluZm8nLCAndHlwZSBzdHJpbmcgc3RhcnQgZW5kIGxpbmUnKSk6CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtNTIsNiArOTcsMTMgQEAKICAgICAgICAgcmV0dXJuICgnVG9rZW5JbmZvKHR5cGU9JXMsIHN0cmluZz0lciwgc3RhcnQ9JXIsIGVuZD0lciwgbGluZT0lciknICUKICAgICAgICAgICAgICAgICBzZWxmLl9yZXBsYWNlKHR5cGU9YW5ub3RhdGVkX3R5cGUpKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGV4YWN0X3R5cGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYudHlwZSA9PSBPUCBhbmQgc2VsZi5zdHJpbmcgaW4gRVhBQ1RfVE9LRU5fVFlQRVM6CisgICAgICAgICAgICByZXR1cm4gRVhBQ1RfVE9LRU5fVFlQRVNbc2VsZi5zdHJpbmddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50eXBlCisKIGRlZiBncm91cCgqY2hvaWNlcyk6IHJldHVybiAnKCcgKyAnfCcuam9pbihjaG9pY2VzKSArICcpJwogZGVmIGFueSgqY2hvaWNlcyk6IHJldHVybiBncm91cCgqY2hvaWNlcykgKyAnKicKIGRlZiBtYXliZSgqY2hvaWNlcyk6IHJldHVybiBncm91cCgqY2hvaWNlcykgKyAnPycKQEAgLTc1LDYgKzEyNyw4IEBACiBJbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XStbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQogTnVtYmVyID0gZ3JvdXAoSW1hZ251bWJlciwgRmxvYXRudW1iZXIsIEludG51bWJlcikKIAorU3RyaW5nUHJlZml4ID0gcicoPzpbYkJdW3JSXT98W3JSXVtiQl0/fFt1VV0pPycKKwogIyBUYWlsIGVuZCBvZiAnIHN0cmluZy4KIFNpbmdsZSA9IHIiW14nXFxdKig/OlxcLlteJ1xcXSopKiciCiAjIFRhaWwgZW5kIG9mICIgc3RyaW5nLgpAQCAtODMsMTAgKzEzNywxMCBAQAogU2luZ2xlMyA9IHIiW14nXFxdKig/Oig/OlxcLnwnKD8hJycpKVteJ1xcXSopKicnJyIKICMgVGFpbCBlbmQgb2YgIiIiIHN0cmluZy4KIERvdWJsZTMgPSByJ1teIlxcXSooPzooPzpcXC58Iig/ISIiKSlbXiJcXF0qKSoiIiInCi1UcmlwbGUgPSBncm91cCgiW2JCXT9bclJdPycnJyIsICdbYkJdP1tyUl0/IiIiJykKK1RyaXBsZSA9IGdyb3VwKFN0cmluZ1ByZWZpeCArICInJyciLCBTdHJpbmdQcmVmaXggKyAnIiIiJykKICMgU2luZ2xlLWxpbmUgJyBvciAiIHN0cmluZy4KLVN0cmluZyA9IGdyb3VwKHIiW2JCXT9bclJdPydbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiciLAotICAgICAgICAgICAgICAgcidbYkJdP1tyUl0/IlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqIicpCitTdHJpbmcgPSBncm91cChTdHJpbmdQcmVmaXggKyByIidbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiciLAorICAgICAgICAgICAgICAgU3RyaW5nUHJlZml4ICsgciciW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSoiJykKIAogIyBCZWNhdXNlIG9mIGxlZnRtb3N0LXRoZW4tbG9uZ2VzdCBtYXRjaCBzZW1hbnRpY3MsIGJlIHN1cmUgdG8gcHV0IHRoZQogIyBsb25nZXN0IG9wZXJhdG9ycyBmaXJzdCAoZS5nLiwgaWYgPSBjYW1lIGJlZm9yZSA9PSwgPT0gd291bGQgZ2V0CkBAIC0xMDQsOSArMTU4LDkgQEAKIFRva2VuID0gSWdub3JlICsgUGxhaW5Ub2tlbgogCiAjIEZpcnN0IChvciBvbmx5KSBsaW5lIG9mICcgb3IgIiBzdHJpbmcuCi1Db250U3RyID0gZ3JvdXAociJbYkJdP1tyUl0/J1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqIiArCitDb250U3RyID0gZ3JvdXAoU3RyaW5nUHJlZml4ICsgciInW15cbidcXF0qKD86XFwuW15cbidcXF0qKSoiICsKICAgICAgICAgICAgICAgICBncm91cCgiJyIsIHInXFxccj9cbicpLAotICAgICAgICAgICAgICAgIHInW2JCXT9bclJdPyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKicgKworICAgICAgICAgICAgICAgIFN0cmluZ1ByZWZpeCArIHInIlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqJyArCiAgICAgICAgICAgICAgICAgZ3JvdXAoJyInLCByJ1xcXHI/XG4nKSkKIFBzZXVkb0V4dHJhcyA9IGdyb3VwKHInXFxccj9cbicsIENvbW1lbnQsIFRyaXBsZSkKIFBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKQEAgLTExNCwzNyArMTY4LDQ5IEBACiBkZWYgX2NvbXBpbGUoZXhwcik6CiAgICAgcmV0dXJuIHJlLmNvbXBpbGUoZXhwciwgcmUuVU5JQ09ERSkKIAotdG9rZW5wcm9nLCBwc2V1ZG9wcm9nLCBzaW5nbGUzcHJvZywgZG91YmxlM3Byb2cgPSBtYXAoCi0gICAgX2NvbXBpbGUsIChUb2tlbiwgUHNldWRvVG9rZW4sIFNpbmdsZTMsIERvdWJsZTMpKQotZW5kcHJvZ3MgPSB7IiciOiBfY29tcGlsZShTaW5nbGUpLCAnIic6IF9jb21waWxlKERvdWJsZSksCi0gICAgICAgICAgICAiJycnIjogc2luZ2xlM3Byb2csICciIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJyJycnIjogc2luZ2xlM3Byb2csICdyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYicnJyI6IHNpbmdsZTNwcm9nLCAnYiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgImJyJycnIjogc2luZ2xlM3Byb2csICdiciIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgIlInJyciOiBzaW5nbGUzcHJvZywgJ1IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJCJycnIjogc2luZ2xlM3Byb2csICdCIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYlInJyciOiBzaW5nbGUzcHJvZywgJ2JSIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiQnInJyciOiBzaW5nbGUzcHJvZywgJ0JyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiQlInJyciOiBzaW5nbGUzcHJvZywgJ0JSIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAncic6IE5vbmUsICdSJzogTm9uZSwgJ2InOiBOb25lLCAnQic6IE5vbmV9CitlbmRwYXRzID0geyInIjogU2luZ2xlLCAnIic6IERvdWJsZSwKKyAgICAgICAgICAgIicnJyI6IFNpbmdsZTMsICciIiInOiBEb3VibGUzLAorICAgICAgICAgICAicicnJyI6IFNpbmdsZTMsICdyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImInJyciOiBTaW5nbGUzLCAnYiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiQicnJyI6IFNpbmdsZTMsICdCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImJyJycnIjogU2luZ2xlMywgJ2JyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImJSJycnIjogU2luZ2xlMywgJ2JSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIkJyJycnIjogU2luZ2xlMywgJ0JyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIkJSJycnIjogU2luZ2xlMywgJ0JSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInJiJycnIjogU2luZ2xlMywgJ3JiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlJiJycnIjogU2luZ2xlMywgJ1JiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInJCJycnIjogU2luZ2xlMywgJ3JCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlJCJycnIjogU2luZ2xlMywgJ1JCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInUnJyciOiBTaW5nbGUzLCAndSIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiVScnJyI6IFNpbmdsZTMsICdVIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgJ3InOiBOb25lLCAnUic6IE5vbmUsICdiJzogTm9uZSwgJ0InOiBOb25lLAorICAgICAgICAgICAndSc6IE5vbmUsICdVJzogTm9uZX0KIAogdHJpcGxlX3F1b3RlZCA9IHt9CiBmb3IgdCBpbiAoIicnJyIsICciIiInLAogICAgICAgICAgICJyJycnIiwgJ3IiIiInLCAiUicnJyIsICdSIiIiJywKICAgICAgICAgICAiYicnJyIsICdiIiIiJywgIkInJyciLCAnQiIiIicsCiAgICAgICAgICAgImJyJycnIiwgJ2JyIiIiJywgIkJyJycnIiwgJ0JyIiIiJywKLSAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInKToKKyAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInLAorICAgICAgICAgICJyYicnJyIsICdyYiIiIicsICJyQicnJyIsICdyQiIiIicsCisgICAgICAgICAgIlJiJycnIiwgJ1JiIiIiJywgIlJCJycnIiwgJ1JCIiIiJywKKyAgICAgICAgICAidScnJyIsICd1IiIiJywgIlUnJyciLCAnVSIiIicsCisgICAgICAgICAgKToKICAgICB0cmlwbGVfcXVvdGVkW3RdID0gdAogc2luZ2xlX3F1b3RlZCA9IHt9CiBmb3IgdCBpbiAoIiciLCAnIicsCiAgICAgICAgICAgInInIiwgJ3IiJywgIlInIiwgJ1IiJywKICAgICAgICAgICAiYiciLCAnYiInLCAiQiciLCAnQiInLAogICAgICAgICAgICJiciciLCAnYnIiJywgIkJyJyIsICdCciInLAotICAgICAgICAgICJiUiciLCAnYlIiJywgIkJSJyIsICdCUiInICk6CisgICAgICAgICAgImJSJyIsICdiUiInLCAiQlInIiwgJ0JSIicgLAorICAgICAgICAgICJyYiciLCAncmIiJywgInJCJyIsICdyQiInLAorICAgICAgICAgICJSYiciLCAnUmIiJywgIlJCJyIsICdSQiInICwKKyAgICAgICAgICAidSciLCAndSInLCAiVSciLCAnVSInLAorICAgICAgICAgICk6CiAgICAgc2luZ2xlX3F1b3RlZFt0XSA9IHQKIAotZGVsIF9jb21waWxlCi0KIHRhYnNpemUgPSA4CiAKIGNsYXNzIFRva2VuRXJyb3IoRXhjZXB0aW9uKTogcGFzcwpAQCAtMjgxLDYgKzM0NywxMCBAQAogCiAgICAgSWYgbm8gZW5jb2RpbmcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBkZWZhdWx0IG9mICd1dGYtOCcgd2lsbCBiZSByZXR1cm5lZC4KICAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lID0gcmVhZGxpbmUuX19zZWxmX18ubmFtZQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgZmlsZW5hbWUgPSBOb25lCiAgICAgYm9tX2ZvdW5kID0gRmFsc2UKICAgICBlbmNvZGluZyA9IE5vbmUKICAgICBkZWZhdWx0ID0gJ3V0Zi04JwpAQCAtMjk3LDcgKzM2NywxMCBAQAogICAgICAgICAgICAgIyBwZXIgZGVmYXVsdCBlbmNvZGluZy4KICAgICAgICAgICAgIGxpbmVfc3RyaW5nID0gbGluZS5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJpbnZhbGlkIG9yIG1pc3NpbmcgZW5jb2RpbmcgZGVjbGFyYXRpb24iKQorICAgICAgICAgICAgbXNnID0gImludmFsaWQgb3IgbWlzc2luZyBlbmNvZGluZyBkZWNsYXJhdGlvbiIKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG1zZyA9ICd7fSBmb3IgeyFyfScuZm9ybWF0KG1zZywgZmlsZW5hbWUpCisgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCiAKICAgICAgICAgbWF0Y2hlcyA9IGNvb2tpZV9yZS5maW5kYWxsKGxpbmVfc3RyaW5nKQogICAgICAgICBpZiBub3QgbWF0Y2hlczoKQEAgLTMwNywxMiArMzgwLDIxIEBACiAgICAgICAgICAgICBjb2RlYyA9IGxvb2t1cChlbmNvZGluZykKICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgogICAgICAgICAgICAgIyBUaGlzIGJlaGF2aW91ciBtaW1pY3MgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgotICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoInVua25vd24gZW5jb2Rpbmc6ICIgKyBlbmNvZGluZykKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZW5jb2Rpbmc6ICIgKyBlbmNvZGluZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBlbmNvZGluZyBmb3IgeyFyfToge30iLmZvcm1hdChmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKQorICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IobXNnKQogCiAgICAgICAgIGlmIGJvbV9mb3VuZDoKICAgICAgICAgICAgIGlmIGVuY29kaW5nICE9ICd1dGYtOCc6CiAgICAgICAgICAgICAgICAgIyBUaGlzIGJlaGF2aW91ciBtaW1pY3MgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgotICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCdlbmNvZGluZyBwcm9ibGVtOiB1dGYtOCcpCisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2VuY29kaW5nIHByb2JsZW06IHV0Zi04JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdlbmNvZGluZyBwcm9ibGVtIGZvciB7IXJ9OiB1dGYtOCcuZm9ybWF0KGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKG1zZykKICAgICAgICAgICAgIGVuY29kaW5nICs9ICctc2lnJwogICAgICAgICByZXR1cm4gZW5jb2RpbmcKIApAQCAtNDY5LDcgKzU1MSw3IEBACiAgICAgICAgICAgICBjb250aW51ZWQgPSAwCiAKICAgICAgICAgd2hpbGUgcG9zIDwgbWF4OgotICAgICAgICAgICAgcHNldWRvbWF0Y2ggPSBwc2V1ZG9wcm9nLm1hdGNoKGxpbmUsIHBvcykKKyAgICAgICAgICAgIHBzZXVkb21hdGNoID0gX2NvbXBpbGUoUHNldWRvVG9rZW4pLm1hdGNoKGxpbmUsIHBvcykKICAgICAgICAgICAgIGlmIHBzZXVkb21hdGNoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzY2FuIGZvciB0b2tlbnMKICAgICAgICAgICAgICAgICBzdGFydCwgZW5kID0gcHNldWRvbWF0Y2guc3BhbigxKQogICAgICAgICAgICAgICAgIHNwb3MsIGVwb3MsIHBvcyA9IChsbnVtLCBzdGFydCksIChsbnVtLCBlbmQpLCBlbmQKQEAgLTQ4NSw3ICs1NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRva2VuLmVuZHN3aXRoKCJcbiIpCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBlbmRwcm9nc1t0b2tlbl0KKyAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbdG9rZW5dKQogICAgICAgICAgICAgICAgICAgICBlbmRtYXRjaCA9IGVuZHByb2cubWF0Y2gobGluZSwgcG9zKQogICAgICAgICAgICAgICAgICAgICBpZiBlbmRtYXRjaDogICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBvbiBvbmUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gZW5kbWF0Y2guZW5kKDApCkBAIC01MDEsOCArNTgzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuWy0xXSA9PSAnXG4nOiAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQgPSAobG51bSwgc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gKGVuZHByb2dzW2luaXRpYWxdIG9yIGVuZHByb2dzW3Rva2VuWzFdXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nc1t0b2tlblsyXV0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1tpbml0aWFsXSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMV1dIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsyXV0pCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250c3RyLCBuZWVkY29udCA9IGxpbmVbc3RhcnQ6XSwgMQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtNTMzLDI3ICs2MTYsNjUgQEAKIGRlZiBnZW5lcmF0ZV90b2tlbnMocmVhZGxpbmUpOgogICAgIHJldHVybiBfdG9rZW5pemUocmVhZGxpbmUsIE5vbmUpCiAKK2RlZiBtYWluKCk6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICAjIEhlbHBlciBlcnJvciBoYW5kbGluZyByb3V0aW5lcworICAgIGRlZiBwZXJyb3IobWVzc2FnZSk6CisgICAgICAgIHByaW50KG1lc3NhZ2UsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGRlZiBlcnJvcihtZXNzYWdlLCBmaWxlbmFtZT1Ob25lLCBsb2NhdGlvbj1Ob25lKToKKyAgICAgICAgaWYgbG9jYXRpb246CisgICAgICAgICAgICBhcmdzID0gKGZpbGVuYW1lLCkgKyBsb2NhdGlvbiArIChtZXNzYWdlLCkKKyAgICAgICAgICAgIHBlcnJvcigiJXM6JWQ6JWQ6IGVycm9yOiAlcyIgJSBhcmdzKQorICAgICAgICBlbGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgcGVycm9yKCIlczogZXJyb3I6ICVzIiAlIChmaWxlbmFtZSwgbWVzc2FnZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwZXJyb3IoImVycm9yOiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgIyBQYXJzZSB0aGUgYXJndW1lbnRzIGFuZCBvcHRpb25zCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0ncHl0aG9uIC1tIHRva2VuaXplJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9J2ZpbGVuYW1lJywgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0nZmlsZW5hbWUucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndGhlIGZpbGUgdG8gdG9rZW5pemU7IGRlZmF1bHRzIHRvIHN0ZGluJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsICctLWV4YWN0JywgZGVzdD0nZXhhY3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0b2tlbiBuYW1lcyB1c2luZyB0aGUgZXhhY3QgdHlwZScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHRyeToKKyAgICAgICAgIyBUb2tlbml6ZSB0aGUgaW5wdXQKKyAgICAgICAgaWYgYXJncy5maWxlbmFtZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gYXJncy5maWxlbmFtZQorICAgICAgICAgICAgd2l0aCBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIHRva2VucyA9IGxpc3QodG9rZW5pemUoZi5yZWFkbGluZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlbmFtZSA9ICI8c3RkaW4+IgorICAgICAgICAgICAgdG9rZW5zID0gX3Rva2VuaXplKHN5cy5zdGRpbi5yZWFkbGluZSwgTm9uZSkKKworICAgICAgICAjIE91dHB1dCB0aGUgdG9rZW5pemF0aW9uCisgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6CisgICAgICAgICAgICB0b2tlbl90eXBlID0gdG9rZW4udHlwZQorICAgICAgICAgICAgaWYgYXJncy5leGFjdDoKKyAgICAgICAgICAgICAgICB0b2tlbl90eXBlID0gdG9rZW4uZXhhY3RfdHlwZQorICAgICAgICAgICAgdG9rZW5fcmFuZ2UgPSAiJWQsJWQtJWQsJWQ6IiAlICh0b2tlbi5zdGFydCArIHRva2VuLmVuZCkKKyAgICAgICAgICAgIHByaW50KCIlLTIwcyUtMTVzJS0xNXIiICUKKyAgICAgICAgICAgICAgICAgICh0b2tlbl9yYW5nZSwgdG9rX25hbWVbdG9rZW5fdHlwZV0sIHRva2VuLnN0cmluZykpCisgICAgZXhjZXB0IEluZGVudGF0aW9uRXJyb3IgYXMgZXJyOgorICAgICAgICBsaW5lLCBjb2x1bW4gPSBlcnIuYXJnc1sxXVsxOjNdCisgICAgICAgIGVycm9yKGVyci5hcmdzWzBdLCBmaWxlbmFtZSwgKGxpbmUsIGNvbHVtbikpCisgICAgZXhjZXB0IFRva2VuRXJyb3IgYXMgZXJyOgorICAgICAgICBsaW5lLCBjb2x1bW4gPSBlcnIuYXJnc1sxXQorICAgICAgICBlcnJvcihlcnIuYXJnc1swXSwgZmlsZW5hbWUsIChsaW5lLCBjb2x1bW4pKQorICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlcnI6CisgICAgICAgIGVycm9yKGVyciwgZmlsZW5hbWUpCisgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBlcnJvcihlcnIpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwcmludCgiaW50ZXJydXB0ZWRcbiIpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgIHBlcnJvcigidW5leHBlY3RlZCBlcnJvcjogJXMiICUgZXJyKQorICAgICAgICByYWlzZQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICMgUXVpY2sgc2FuaXR5IGNoZWNrCi0gICAgcyA9IGInJydkZWYgcGFyc2VsaW5lKHNlbGYsIGxpbmUpOgotICAgICAgICAgICAgIiIiUGFyc2UgdGhlIGxpbmUgaW50byBhIGNvbW1hbmQgbmFtZSBhbmQgYSBzdHJpbmcgY29udGFpbmluZwotICAgICAgICAgICAgdGhlIGFyZ3VtZW50cy4gIFJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIChjb21tYW5kLCBhcmdzLCBsaW5lKS4KLSAgICAgICAgICAgICdjb21tYW5kJyBhbmQgJ2FyZ3MnIG1heSBiZSBOb25lIGlmIHRoZSBsaW5lIGNvdWxkbid0IGJlIHBhcnNlZC4KLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIGxpbmUKLSAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAnPyc6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICdoZWxwICcgKyBsaW5lWzE6XQotICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICchJzoKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdkb19zaGVsbCcpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gJ3NoZWxsICcgKyBsaW5lWzE6XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBsaW5lCi0gICAgICAgICAgICBpLCBuID0gMCwgbGVuKGxpbmUpCi0gICAgICAgICAgICB3aGlsZSBpIDwgbiBhbmQgbGluZVtpXSBpbiBzZWxmLmlkZW50Y2hhcnM6IGkgPSBpKzEKLSAgICAgICAgICAgIGNtZCwgYXJnID0gbGluZVs6aV0sIGxpbmVbaTpdLnN0cmlwKCkKLSAgICAgICAgICAgIHJldHVybiBjbWQsIGFyZywgbGluZQotICAgICcnJwotICAgIGZvciB0b2sgaW4gdG9rZW5pemUoaXRlcihzLnNwbGl0bGluZXMoKSkuX19uZXh0X18pOgotICAgICAgICBwcmludCh0b2spCisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2UucHkgYi9MaWIvdHJhY2UucHkKaW5kZXggODUwMzY5Yi4uMzE3YjVmZCAxMDA2NDQKLS0tIGEvTGliL3RyYWNlLnB5CisrKyBiL0xpYi90cmFjZS5weQpAQCAtMzksOCArMzksOCBAQAogCiAgICMgY3JlYXRlIGEgVHJhY2Ugb2JqZWN0LCB0ZWxsaW5nIGl0IHdoYXQgdG8gaWdub3JlLCBhbmQgd2hldGhlciB0bwogICAjIGRvIHRyYWNpbmcgb3IgbGluZS1jb3VudGluZyBvciBib3RoLgotICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsXSwgdHJhY2U9MCwKLSAgICAgICAgICAgICAgICAgICAgY291bnQ9MSkKKyAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAorICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQogICAjIHJ1biB0aGUgbmV3IGNvbW1hbmQgdXNpbmcgdGhlIGdpdmVuIHRyYWNlcgogICB0cmFjZXIucnVuKCdtYWluKCknKQogICAjIG1ha2UgYSByZXBvcnQsIHBsYWNpbmcgb3V0cHV0IGluIC90bXAKQEAgLTQ4LDE5ICs0OCwyMCBAQAogICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIGNvdmVyZGlyPSIvdG1wIikKICIiIgogX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KLWltcG9ydCBpbwogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdG9rZW4KIGltcG9ydCB0b2tlbml6ZQogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBnYwogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgordHJ5OgorICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0yNDQsOCArMjQ1LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGZpbGVuYW1lIGRvZXMgbm90IHJlZmVyIHRvIGEgZmlsZQogICAgICAgICB3ZSB3YW50IHRvIGhhdmUgcmVwb3J0ZWQuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKGZpbGVuYW1lID09ICI8c3RyaW5nPiIgb3IKLSAgICAgICAgICAgICAgICBmaWxlbmFtZS5zdGFydHN3aXRoKCI8ZG9jdGVzdCAiKSkKKyAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJzwnKSBhbmQgZmlsZW5hbWUuZW5kc3dpdGgoJz4nKQogCiAgICAgZGVmIHVwZGF0ZShzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIk1lcmdlIGluIHRoZSBkYXRhIGZyb20gYW5vdGhlciBDb3ZlcmFnZVJlc3VsdHMiIiIKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogICAgICAgICBzZWxmLl9jYWxsZXJfY2FjaGUgPSB7fQogICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCiAgICAgICAgIGlmIHRpbWluZzoKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBfdGltZSgpCiAgICAgICAgIGlmIGNvdW50Y2FsbGVyczoKICAgICAgICAgICAgIHNlbGYuZ2xvYmFsdHJhY2UgPSBzZWxmLmdsb2JhbHRyYWNlX3RyYWNrY2FsbGVycwogICAgICAgICBlbGlmIGNvdW50ZnVuY3M6CkBAIC02MTUsNyArNjE1LDcgQEAKICAgICAgICAgICAgIHNlbGYuY291bnRzW2tleV0gPSBzZWxmLmNvdW50cy5nZXQoa2V5LCAwKSArIDEKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGFydF90aW1lOgotICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlICh0aW1lLnRpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKF90aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQogICAgICAgICAgICAgYm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKQogICAgICAgICAgICAgcHJpbnQoIiVzKCVkKTogJXMiICUgKGJuYW1lLCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykpLCBlbmQ9JycpCkBAIC02MjgsNyArNjI4LDcgQEAKICAgICAgICAgICAgIGxpbmVubyA9IGZyYW1lLmZfbGluZW5vCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RhcnRfdGltZToKLSAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlIChfdGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKICAgICAgICAgICAgIGJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKICAgICAgICAgICAgIHByaW50KCIlcyglZCk6ICVzIiAlIChibmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pKSwgZW5kPScnKQpAQCAtNzUwLDEwICs3NTAsMTAgQEAKICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCiAKICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAibGliIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkZXhlY19wcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQogICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlYmFjay5weSBiL0xpYi90cmFjZWJhY2sucHkKaW5kZXggOGQ0ZTk2ZS4uZWViOWU3MyAxMDA2NDQKLS0tIGEvTGliL3RyYWNlYmFjay5weQorKysgYi9MaWIvdHJhY2ViYWNrLnB5CkBAIC0xMTksMTUgKzExOSwxNiBAQAogICAgICAgICBzZWVuID0gc2V0KCkKICAgICBzZWVuLmFkZChleGMpCiAgICAgaXRzID0gW10KKyAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCiAgICAgY2F1c2UgPSBleGMuX19jYXVzZV9fCiAgICAgaWYgY2F1c2UgaXMgbm90IE5vbmUgYW5kIGNhdXNlIG5vdCBpbiBzZWVuOgotICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNhdXNlLCBOb25lLCBzZWVuKSkKKyAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjYXVzZSwgRmFsc2UsIHNlZW4pKQogICAgICAgICBpdHMuYXBwZW5kKFsoX2NhdXNlX21lc3NhZ2UsIE5vbmUpXSkKLSAgICBlbHNlOgotICAgICAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCi0gICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNvbnRleHQgbm90IGluIHNlZW46Ci0gICAgICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNvbnRleHQsIE5vbmUsIHNlZW4pKQotICAgICAgICAgICAgaXRzLmFwcGVuZChbKF9jb250ZXh0X21lc3NhZ2UsIE5vbmUpXSkKKyAgICBlbGlmIChjb250ZXh0IGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgIG5vdCBleGMuX19zdXBwcmVzc19jb250ZXh0X18gYW5kCisgICAgICAgICAgY29udGV4dCBub3QgaW4gc2Vlbik6CisgICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY29udGV4dCwgTm9uZSwgc2VlbikpCisgICAgICAgIGl0cy5hcHBlbmQoWyhfY29udGV4dF9tZXNzYWdlLCBOb25lKV0pCiAgICAgaXRzLmFwcGVuZChbKGV4YywgY3VzdG9tX3RiIG9yIGV4Yy5fX3RyYWNlYmFja19fKV0pCiAgICAgIyBpdGVydG9vbHMuY2hhaW4gaXMgaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBhbmQgbWF5IGJlIHVuYXZhaWxhYmxlCiAgICAgZm9yIGl0IGluIGl0czoKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGUucHkgYi9MaWIvdHVydGxlLnB5CmluZGV4IGFjMGMzMmMuLmE0NDc0MzMgMTAwNjQ0Ci0tLSBhL0xpYi90dXJ0bGUucHkKKysrIGIvTGliL3R1cnRsZS5weQpAQCAtMTA4LDcgKzEwOCw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCBtYXRoCiBpbXBvcnQgdGltZQotaW1wb3J0IG9zCiBpbXBvcnQgaW5zcGVjdAogCiBmcm9tIG9zLnBhdGggaW1wb3J0IGlzZmlsZSwgc3BsaXQsIGpvaW4KZGlmZiAtLWdpdCBhL0xpYi90eXBlcy5weSBiL0xpYi90eXBlcy5weQppbmRleCBhYjM1NGQxLi5jZmQwOWVhIDEwMDY0NAotLS0gYS9MaWIvdHlwZXMucHkKKysrIGIvTGliL3R5cGVzLnB5CkBAIC0xMiw2ICsxMiw4IEBACiBGdW5jdGlvblR5cGUgPSB0eXBlKF9mKQogTGFtYmRhVHlwZSA9IHR5cGUobGFtYmRhOiBOb25lKSAgICAgICAgICMgU2FtZSBhcyBGdW5jdGlvblR5cGUKIENvZGVUeXBlID0gdHlwZShfZi5fX2NvZGVfXykKK01hcHBpbmdQcm94eVR5cGUgPSB0eXBlKHR5cGUuX19kaWN0X18pCitTaW1wbGVOYW1lc3BhY2UgPSB0eXBlKHN5cy5pbXBsZW1lbnRhdGlvbikKIAogZGVmIF9nKCk6CiAgICAgeWllbGQgMQpAQCAtMzksMyArNDEsNjEgQEAKIE1lbWJlckRlc2NyaXB0b3JUeXBlID0gdHlwZShGdW5jdGlvblR5cGUuX19nbG9iYWxzX18pCiAKIGRlbCBzeXMsIF9mLCBfZywgX0MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgZm9yIGV4cG9ydAorCisKKyMgUHJvdmlkZSBhIFBFUCAzMTE1IGNvbXBsaWFudCBtZWNoYW5pc20gZm9yIGNsYXNzIGNyZWF0aW9uCitkZWYgbmV3X2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUsIGV4ZWNfYm9keT1Ob25lKToKKyAgICAiIiJDcmVhdGUgYSBjbGFzcyBvYmplY3QgZHluYW1pY2FsbHkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcy4iIiIKKyAgICBtZXRhLCBucywga3dkcyA9IHByZXBhcmVfY2xhc3MobmFtZSwgYmFzZXMsIGt3ZHMpCisgICAgaWYgZXhlY19ib2R5IGlzIG5vdCBOb25lOgorICAgICAgICBleGVjX2JvZHkobnMpCisgICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIG5zLCAqKmt3ZHMpCisKK2RlZiBwcmVwYXJlX2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUpOgorICAgICIiIkNhbGwgdGhlIF9fcHJlcGFyZV9fIG1ldGhvZCBvZiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLgorCisgICAgUmV0dXJucyAobWV0YWNsYXNzLCBuYW1lc3BhY2UsIGt3ZHMpIGFzIGEgMy10dXBsZQorCisgICAgKm1ldGFjbGFzcyogaXMgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcworICAgICpuYW1lc3BhY2UqIGlzIHRoZSBwcmVwYXJlZCBjbGFzcyBuYW1lc3BhY2UKKyAgICAqa3dkcyogaXMgYW4gdXBkYXRlZCBjb3B5IG9mIHRoZSBwYXNzZWQgaW4ga3dkcyBhcmd1bWVudCB3aXRoIGFueQorICAgICdtZXRhY2xhc3MnIGVudHJ5IHJlbW92ZWQuIElmIG5vIGt3ZHMgYXJndW1lbnQgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwKKyAgICBiZSBhbiBlbXB0eSBkaWN0LgorICAgICIiIgorICAgIGlmIGt3ZHMgaXMgTm9uZToKKyAgICAgICAga3dkcyA9IHt9CisgICAgZWxzZToKKyAgICAgICAga3dkcyA9IGRpY3Qoa3dkcykgIyBEb24ndCBhbHRlciB0aGUgcHJvdmlkZWQgbWFwcGluZworICAgIGlmICdtZXRhY2xhc3MnIGluIGt3ZHM6CisgICAgICAgIG1ldGEgPSBrd2RzLnBvcCgnbWV0YWNsYXNzJykKKyAgICBlbHNlOgorICAgICAgICBpZiBiYXNlczoKKyAgICAgICAgICAgIG1ldGEgPSB0eXBlKGJhc2VzWzBdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWV0YSA9IHR5cGUKKyAgICBpZiBpc2luc3RhbmNlKG1ldGEsIHR5cGUpOgorICAgICAgICAjIHdoZW4gbWV0YSBpcyBhIHR5cGUsIHdlIGZpcnN0IGRldGVybWluZSB0aGUgbW9zdC1kZXJpdmVkIG1ldGFjbGFzcworICAgICAgICAjIGluc3RlYWQgb2YgaW52b2tpbmcgdGhlIGluaXRpYWwgY2FuZGlkYXRlIGRpcmVjdGx5CisgICAgICAgIG1ldGEgPSBfY2FsY3VsYXRlX21ldGEobWV0YSwgYmFzZXMpCisgICAgaWYgaGFzYXR0cihtZXRhLCAnX19wcmVwYXJlX18nKToKKyAgICAgICAgbnMgPSBtZXRhLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLCAqKmt3ZHMpCisgICAgZWxzZToKKyAgICAgICAgbnMgPSB7fQorICAgIHJldHVybiBtZXRhLCBucywga3dkcworCitkZWYgX2NhbGN1bGF0ZV9tZXRhKG1ldGEsIGJhc2VzKToKKyAgICAiIiJDYWxjdWxhdGUgdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MuIiIiCisgICAgd2lubmVyID0gbWV0YQorICAgIGZvciBiYXNlIGluIGJhc2VzOgorICAgICAgICBiYXNlX21ldGEgPSB0eXBlKGJhc2UpCisgICAgICAgIGlmIGlzc3ViY2xhc3Mod2lubmVyLCBiYXNlX21ldGEpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhiYXNlX21ldGEsIHdpbm5lcik6CisgICAgICAgICAgICB3aW5uZXIgPSBiYXNlX21ldGEKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtZXRhY2xhc3MgY29uZmxpY3Q6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgbWV0YWNsYXNzIG9mIGEgZGVyaXZlZCBjbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIChub24tc3RyaWN0KSBzdWJjbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAib2YgdGhlIG1ldGFjbGFzc2VzIG9mIGFsbCBpdHMgYmFzZXMiKQorICAgIHJldHVybiB3aW5uZXIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9fX21haW5fXy5weSBiL0xpYi91bml0dGVzdC9fX21haW5fXy5weQppbmRleCA3MzIwMDUwLi43OThlYmMwIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvX19tYWluX18ucHkKKysrIGIvTGliL3VuaXR0ZXN0L19fbWFpbl9fLnB5CkBAIC0yLDcgKzIsMTQgQEAKIAogaW1wb3J0IHN5cwogaWYgc3lzLmFyZ3ZbMF0uZW5kc3dpdGgoIl9fbWFpbl9fLnB5Iik6Ci0gICAgc3lzLmFyZ3ZbMF0gPSAicHl0aG9uIC1tIHVuaXR0ZXN0IgorICAgIGltcG9ydCBvcy5wYXRoCisgICAgIyBXZSBjaGFuZ2Ugc3lzLmFyZ3ZbMF0gdG8gbWFrZSBoZWxwIG1lc3NhZ2UgbW9yZSB1c2VmdWwKKyAgICAjIHVzZSBleGVjdXRhYmxlIHdpdGhvdXQgcGF0aCwgdW5xdW90ZWQKKyAgICAjIChpdCdzIGp1c3QgYSBoaW50IGFueXdheSkKKyAgICAjIChpZiB5b3UgaGF2ZSBzcGFjZXMgaW4geW91ciBleGVjdXRhYmxlIHlvdSBnZXQgd2hhdCB5b3UgZGVzZXJ2ZSEpCisgICAgZXhlY3V0YWJsZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmV4ZWN1dGFibGUpCisgICAgc3lzLmFyZ3ZbMF0gPSBleGVjdXRhYmxlICsgIiAtbSB1bml0dGVzdCIKKyAgICBkZWwgb3MKIAogX191bml0dGVzdCA9IFRydWUKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkgYi9MaWIvdW5pdHRlc3QvY2FzZS5weQppbmRleCBlNjI3Y2NhLi5mMzM0ODY1IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvY2FzZS5weQpAQCAtOSw4ICs5LDcgQEAKIGltcG9ydCBjb2xsZWN0aW9ucwogCiBmcm9tIC4gaW1wb3J0IHJlc3VsdAotZnJvbSAudXRpbCBpbXBvcnQgKHN0cmNsYXNzLCBzYWZlX3JlcHIsIHNvcnRlZF9saXN0X2RpZmZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgdW5vcmRlcmFibGVfbGlzdF9kaWZmZXJlbmNlLCBfY291bnRfZGlmZl9hbGxfcHVycG9zZSwKK2Zyb20gLnV0aWwgaW1wb3J0IChzdHJjbGFzcywgc2FmZV9yZXByLCBfY291bnRfZGlmZl9hbGxfcHVycG9zZSwKICAgICAgICAgICAgICAgICAgICBfY291bnRfZGlmZl9oYXNoYWJsZSkKIAogX191bml0dGVzdCA9IFRydWUKQEAgLTEwNCw5ICsxMDMsOSBAQAogY2xhc3MgX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWQsIHRlc3RfY2FzZSwgY2FsbGFibGVfb2JqPU5vbmUsCi0gICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleD1Ob25lKToKKyAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAotICAgICAgICBzZWxmLmZhaWx1cmVFeGNlcHRpb24gPSB0ZXN0X2Nhc2UuZmFpbHVyZUV4Y2VwdGlvbgorICAgICAgICBzZWxmLnRlc3RfY2FzZSA9IHRlc3RfY2FzZQogICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IGNhbGxhYmxlX29iai5fX25hbWVfXwpAQCAtMTE3LDYgKzExNiwyNCBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkX3JlZ2V4LCAoYnl0ZXMsIHN0cikpOgogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByZS5jb21waWxlKGV4cGVjdGVkX3JlZ2V4KQogICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4ID0gZXhwZWN0ZWRfcmVnZXgKKyAgICAgICAgc2VsZi5tc2cgPSBOb25lCisKKyAgICBkZWYgX3JhaXNlRmFpbHVyZShzZWxmLCBzdGFuZGFyZE1zZyk6CisgICAgICAgIG1zZyA9IHNlbGYudGVzdF9jYXNlLl9mb3JtYXRNZXNzYWdlKHNlbGYubXNnLCBzdGFuZGFyZE1zZykKKyAgICAgICAgcmFpc2Ugc2VsZi50ZXN0X2Nhc2UuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIElmIGNhbGxhYmxlX29iaiBpcyBOb25lLCBhc3NlcnRSYWlzZXMvV2FybnMgaXMgYmVpbmcgdXNlZCBhcyBhCisgICAgICAgIGNvbnRleHQgbWFuYWdlciwgc28gY2hlY2sgZm9yIGEgJ21zZycga3dhcmcgYW5kIHJldHVybiBzZWxmLgorICAgICAgICBJZiBjYWxsYWJsZV9vYmogaXMgbm90IE5vbmUsIGNhbGwgaXQgcGFzc2luZyBhcmdzIGFuZCBrd2FyZ3MuCisgICAgICAgICIiIgorICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYubXNnID0ga3dhcmdzLnBvcCgnbXNnJywgTm9uZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisKIAogCiBjbGFzcyBfQXNzZXJ0UmFpc2VzQ29udGV4dChfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQpOgpAQCAtMTMyLDExICsxNDksMTAgQEAKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICBleGNfbmFtZSA9IHN0cihzZWxmLmV4cGVjdGVkKQogICAgICAgICAgICAgaWYgc2VsZi5vYmpfbmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgcmFpc2VkIGJ5IHsxfSIKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChleGNfbmFtZSwgc2VsZi5vYmpfbmFtZSkpCisgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCJ7fSBub3QgcmFpc2VkIGJ5IHt9Ii5mb3JtYXQoZXhjX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigiezB9IG5vdCByYWlzZWQiCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUpKQorICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHJhaXNlZCIuZm9ybWF0KGV4Y19uYW1lKSkKICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MoZXhjX3R5cGUsIHNlbGYuZXhwZWN0ZWQpOgogICAgICAgICAgICAgIyBsZXQgdW5leHBlY3RlZCBleGNlcHRpb25zIHBhc3MgdGhyb3VnaAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xNDcsOCArMTYzLDggQEAKIAogICAgICAgICBleHBlY3RlZF9yZWdleCA9IHNlbGYuZXhwZWN0ZWRfcmVnZXgKICAgICAgICAgaWYgbm90IGV4cGVjdGVkX3JlZ2V4LnNlYXJjaChzdHIoZXhjX3ZhbHVlKSk6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oJyIlcyIgZG9lcyBub3QgbWF0Y2ggIiVzIicgJQotICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihleGNfdmFsdWUpKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgnInt9IiBkb2VzIG5vdCBtYXRjaCAie30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZXhjX3ZhbHVlKSkpCiAgICAgICAgIHJldHVybiBUcnVlCiAKIApAQCAtMTkyLDE0ICsyMDgsMTMgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICAjIE5vdyB3ZSBzaW1wbHkgdHJ5IHRvIGNob29zZSBhIGhlbHBmdWwgZmFpbHVyZSBtZXNzYWdlCiAgICAgICAgIGlmIGZpcnN0X21hdGNoaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCciJXMiIGRvZXMgbm90IG1hdGNoICIlcyInICUKLSAgICAgICAgICAgICAgICAgICAgIChzZWxmLmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihmaXJzdF9tYXRjaGluZykpKQorICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCcie30iIGRvZXMgbm90IG1hdGNoICJ7fSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGZpcnN0X21hdGNoaW5nKSkpCiAgICAgICAgIGlmIHNlbGYub2JqX25hbWU6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgdHJpZ2dlcmVkIGJ5IHsxfSIKLSAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lLCBzZWxmLm9ial9uYW1lKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHRyaWdnZXJlZCBieSB7fSIuZm9ybWF0KGV4Y19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgdHJpZ2dlcmVkIgotICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUpKQorICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCJ7fSBub3QgdHJpZ2dlcmVkIi5mb3JtYXQoZXhjX25hbWUpKQogCiAKIGNsYXNzIFRlc3RDYXNlKG9iamVjdCk6CkBAIC00NTIsNyArNDY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRlc3RSZXN1bHQgaGFzIG5vIGFkZEV4cGVjdGVkRmFpbHVyZSBtZXRob2QsIHJlcG9ydGluZyBhcyBwYXNzZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRTdWNjZXNzKHNlbGYpCi0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJlc3VsdC5zdG9wVGVzdChzZWxmKQogICAgICAgICAgICAgaWYgb3JpZ19yZXN1bHQgaXMgTm9uZToKQEAgLTUyNiw3ICs1NDEsNiBAQAogICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICAnJXMgOiAlcycgJSAoc2FmZV9yZXByKHN0YW5kYXJkTXNnKSwgc2FmZV9yZXByKG1zZykpCiAKLQogICAgIGRlZiBhc3NlcnRSYWlzZXMoc2VsZiwgZXhjQ2xhc3MsIGNhbGxhYmxlT2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkZhaWwgdW5sZXNzIGFuIGV4Y2VwdGlvbiBvZiBjbGFzcyBleGNDbGFzcyBpcyB0aHJvd24KICAgICAgICAgICAgYnkgY2FsbGFibGVPYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKQEAgLTU0MSw2ICs1NTUsOSBAQAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgICAgIGRvX3NvbWV0aGluZygpCiAKKyAgICAgICAgICAgQW4gb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAnbXNnJyBjYW4gYmUgcHJvdmlkZWQgd2hlbiBhc3NlcnRSYWlzZXMKKyAgICAgICAgICAgaXMgdXNlZCBhcyBhIGNvbnRleHQgb2JqZWN0LgorCiAgICAgICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIGV4Y2VwdGlvbiBhcwogICAgICAgICAgICB0aGUgJ2V4Y2VwdGlvbicgYXR0cmlidXRlLiBUaGlzIGFsbG93cyB5b3UgdG8gaW5zcGVjdCB0aGUKICAgICAgICAgICAgZXhjZXB0aW9uIGFmdGVyIHRoZSBhc3NlcnRpb246OgpAQCAtNTUxLDI1ICs1NjgsMjUgQEAKICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX2V4Y2VwdGlvbi5lcnJvcl9jb2RlLCAzKQogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4Y0NsYXNzLCBzZWxmLCBjYWxsYWJsZU9iaikKLSAgICAgICAgaWYgY2FsbGFibGVPYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlT2JqKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXMnLCBjYWxsYWJsZU9iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFdhcm5zKHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhIHdhcm5pbmcgb2YgY2xhc3Mgd2FybkNsYXNzIGlzIHRyaWdnZXJlZAotICAgICAgICAgICBieSBjYWxsYWJsZU9iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZAorICAgICAgICAgICBieSBjYWxsYWJsZV9vYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKICAgICAgICAgICAgYXJndW1lbnRzIGt3YXJncy4gIElmIGEgZGlmZmVyZW50IHR5cGUgb2Ygd2FybmluZyBpcwogICAgICAgICAgICB0cmlnZ2VyZWQsIGl0IHdpbGwgbm90IGJlIGhhbmRsZWQ6IGRlcGVuZGluZyBvbiB0aGUgb3RoZXIKICAgICAgICAgICAgd2FybmluZyBmaWx0ZXJpbmcgcnVsZXMgaW4gZWZmZWN0LCBpdCBtaWdodCBiZSBzaWxlbmNlZCwgcHJpbnRlZAogICAgICAgICAgICBvdXQsIG9yIHJhaXNlZCBhcyBhbiBleGNlcHRpb24uCiAKLSAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggY2FsbGFibGVPYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCisgICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlX29iaiBvbWl0dGVkIG9yIE5vbmUsIHdpbGwgcmV0dXJuIGEKICAgICAgICAgICAgY29udGV4dCBvYmplY3QgdXNlZCBsaWtlIHRoaXM6OgogCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFNvbWVXYXJuaW5nKToKICAgICAgICAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKIAorICAgICAgICAgICBBbiBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICdtc2cnIGNhbiBiZSBwcm92aWRlZCB3aGVuIGFzc2VydFdhcm5zCisgICAgICAgICAgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG9iamVjdC4KKwogICAgICAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBtYXRjaGluZwogICAgICAgICAgICB3YXJuaW5nIGFzIHRoZSAnd2FybmluZycgYXR0cmlidXRlOyBzaW1pbGFybHksIHRoZSAnZmlsZW5hbWUnCiAgICAgICAgICAgIGFuZCAnbGluZW5vJyBhdHRyaWJ1dGVzIGdpdmUgeW91IGluZm9ybWF0aW9uIGFib3V0IHRoZSBsaW5lCkBAIC01ODIsMTAgKzU5OSw3IEBACiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV93YXJuaW5nLnNvbWVfYXR0cmlidXRlLCAxNDcpCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBjYWxsYWJsZV9vYmopCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJucycsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIF9nZXRBc3NlcnRFcXVhbGl0eUZ1bmMoc2VsZiwgZmlyc3QsIHNlY29uZCk6CiAgICAgICAgICIiIkdldCBhIGRldGFpbGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHRoZSB0eXBlcyBvZiB0aGUgdHdvIGFyZ3MuCkBAIC03MjIsNyArNzM2LDcgQEAKICAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB0byB1c2Ugb24gZmFpbHVyZSBpbnN0ZWFkIG9mIGEgbGlzdCBvZgogICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlcy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlcV90eXBlICE9IE5vbmU6CisgICAgICAgIGlmIHNlcV90eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VxX3R5cGVfbmFtZSA9IHNlcV90eXBlLl9fbmFtZV9fCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZXExLCBzZXFfdHlwZSk6CiAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCdGaXJzdCBzZXF1ZW5jZSBpcyBub3QgYSAlczogJXMnCkBAIC05NTEsNDggKzk2NSw2IEBACiAKICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCiAKLSAgICBkZWYgYXNzZXJ0U2FtZUVsZW1lbnRzKHNlbGYsIGV4cGVjdGVkX3NlcSwgYWN0dWFsX3NlcSwgbXNnPU5vbmUpOgotICAgICAgICAiIiJBbiB1bm9yZGVyZWQgc2VxdWVuY2Ugc3BlY2lmaWMgY29tcGFyaXNvbi4KLQotICAgICAgICBSYWlzZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGxpc3Rpbmcgd2hpY2ggZWxlbWVudHMgb2YgZXhwZWN0ZWRfc2VxCi0gICAgICAgIGFyZSBtaXNzaW5nIGZyb20gYWN0dWFsX3NlcSBhbmQgdmljZSB2ZXJzYSBpZiBhbnkuCi0KLSAgICAgICAgRHVwbGljYXRlIGVsZW1lbnRzIGFyZSBpZ25vcmVkIHdoZW4gY29tcGFyaW5nICpleHBlY3RlZF9zZXEqIGFuZAotICAgICAgICAqYWN0dWFsX3NlcSouIEl0IGlzIHRoZSBlcXVpdmFsZW50IG9mIGBgYXNzZXJ0RXF1YWwoc2V0KGV4cGVjdGVkKSwKLSAgICAgICAgc2V0KGFjdHVhbCkpYGAgYnV0IGl0IHdvcmtzIHdpdGggc2VxdWVuY2VzIG9mIHVuaGFzaGFibGUgb2JqZWN0cyBhcwotICAgICAgICB3ZWxsLgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZ3Mud2FybignYXNzZXJ0U2FtZUVsZW1lbnRzIGlzIGRlcHJlY2F0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZXQoZXhwZWN0ZWRfc2VxKQotICAgICAgICAgICAgYWN0dWFsID0gc2V0KGFjdHVhbF9zZXEpCi0gICAgICAgICAgICBtaXNzaW5nID0gc29ydGVkKGV4cGVjdGVkLmRpZmZlcmVuY2UoYWN0dWFsKSkKLSAgICAgICAgICAgIHVuZXhwZWN0ZWQgPSBzb3J0ZWQoYWN0dWFsLmRpZmZlcmVuY2UoZXhwZWN0ZWQpKQotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgIyBGYWxsIGJhY2sgdG8gc2xvd2VyIGxpc3QtY29tcGFyZSBpZiBhbnkgb2YgdGhlIG9iamVjdHMgYXJlCi0gICAgICAgICAgICAjIG5vdCBoYXNoYWJsZS4KLSAgICAgICAgICAgIGV4cGVjdGVkID0gbGlzdChleHBlY3RlZF9zZXEpCi0gICAgICAgICAgICBhY3R1YWwgPSBsaXN0KGFjdHVhbF9zZXEpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWQuc29ydCgpCi0gICAgICAgICAgICAgICAgYWN0dWFsLnNvcnQoKQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICBtaXNzaW5nLCB1bmV4cGVjdGVkID0gdW5vcmRlcmFibGVfbGlzdF9kaWZmZXJlbmNlKGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtaXNzaW5nLCB1bmV4cGVjdGVkID0gc29ydGVkX2xpc3RfZGlmZmVyZW5jZShleHBlY3RlZCwgYWN0dWFsKQotICAgICAgICBlcnJvcnMgPSBbXQotICAgICAgICBpZiBtaXNzaW5nOgotICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgnRXhwZWN0ZWQsIGJ1dCBtaXNzaW5nOlxuICAgICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVfcmVwcihtaXNzaW5nKSkKLSAgICAgICAgaWYgdW5leHBlY3RlZDoKLSAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoJ1VuZXhwZWN0ZWQsIGJ1dCBwcmVzZW50OlxuICAgICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVfcmVwcih1bmV4cGVjdGVkKSkKLSAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnXG4nLmpvaW4oZXJyb3JzKQotICAgICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCi0KIAogICAgIGRlZiBhc3NlcnRDb3VudEVxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKToKICAgICAgICAgIiIiQW4gdW5vcmRlcmVkIHNlcXVlbmNlIGNvbXBhcmlzb24gYXNzZXJ0aW5nIHRoYXQgdGhlIHNhbWUgZWxlbWVudHMsCkBAIC0xMDM3LDggKzEwMDksOCBAQAogICAgICAgICAgICAgaWYgKGxlbihmaXJzdCkgPiBzZWxmLl9kaWZmVGhyZXNob2xkIG9yCiAgICAgICAgICAgICAgICAgbGVuKHNlY29uZCkgPiBzZWxmLl9kaWZmVGhyZXNob2xkKToKICAgICAgICAgICAgICAgICBzZWxmLl9iYXNlQXNzZXJ0RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnKQotICAgICAgICAgICAgZmlyc3RsaW5lcyA9IGZpcnN0LnNwbGl0bGluZXMoVHJ1ZSkKLSAgICAgICAgICAgIHNlY29uZGxpbmVzID0gc2Vjb25kLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIGZpcnN0bGluZXMgPSBmaXJzdC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgICAgICAgICBzZWNvbmRsaW5lcyA9IHNlY29uZC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICBpZiBsZW4oZmlyc3RsaW5lcykgPT0gMSBhbmQgZmlyc3Quc3RyaXAoJ1xyXG4nKSA9PSBmaXJzdDoKICAgICAgICAgICAgICAgICBmaXJzdGxpbmVzID0gW2ZpcnN0ICsgJ1xuJ10KICAgICAgICAgICAgICAgICBzZWNvbmRsaW5lcyA9IFtzZWNvbmQgKyAnXG4nXQpAQCAtMTEwNiwxNSArMTA3OCwxNSBAQAogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg6IFJlZ2V4IChyZSBwYXR0ZXJuIG9iamVjdCBvciBzdHJpbmcpIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgICAgICBjYWxsYWJsZV9vYmo6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4KKyAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB1c2VkIGluIGNhc2Ugb2YgZmFpbHVyZS4gQ2FuIG9ubHkgYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIGFzc2VydFJhaXNlc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAgICAgICAgICAgICBhcmdzOiBFeHRyYSBhcmdzLgogICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRfZXhjZXB0aW9uLCBzZWxmLCBjYWxsYWJsZV9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCkKLSAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotICAgICAgICB3aXRoIGNvbnRleHQ6Ci0gICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRXYXJuc1JlZ2V4KHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsIGV4cGVjdGVkX3JlZ2V4LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtMTEyOCwxNSArMTEwMCwxNCBAQAogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg6IFJlZ2V4IChyZSBwYXR0ZXJuIG9iamVjdCBvciBzdHJpbmcpIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgICAgICBjYWxsYWJsZV9vYmo6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4KKyAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB1c2VkIGluIGNhc2Ugb2YgZmFpbHVyZS4gQ2FuIG9ubHkgYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIGFzc2VydFdhcm5zUmVnZXggaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KICAgICAgICAgICAgIGFyZ3M6IEV4dHJhIGFyZ3MuCiAgICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGNhbGxhYmxlX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJuc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0UmVnZXgoc2VsZiwgdGV4dCwgZXhwZWN0ZWRfcmVnZXgsIG1zZz1Ob25lKToKICAgICAgICAgIiIiRmFpbCB0aGUgdGVzdCB1bmxlc3MgdGhlIHRleHQgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21haW4ucHkgYi9MaWIvdW5pdHRlc3QvbWFpbi5weQppbmRleCA1NWQ0ZTRiLi5hMjVhMmY4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbWFpbi5weQorKysgYi9MaWIvdW5pdHRlc3QvbWFpbi5weQpAQCAtMSw4ICsxLDggQEAKICIiIlVuaXR0ZXN0IG1haW4gcHJvZ3JhbSIiIgogCiBpbXBvcnQgc3lzCitpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwotaW1wb3J0IHR5cGVzCiAKIGZyb20gLiBpbXBvcnQgbG9hZGVyLCBydW5uZXIKIGZyb20gLnNpZ25hbHMgaW1wb3J0IGluc3RhbGxIYW5kbGVyCkBAIC03Nyw2ICs3Nyw3IEBACiBkZWYgX2NvbnZlcnRfbmFtZXMobmFtZXMpOgogICAgIHJldHVybiBbX2NvbnZlcnRfbmFtZShuYW1lKSBmb3IgbmFtZSBpbiBuYW1lc10KIAorCiBjbGFzcyBUZXN0UHJvZ3JhbShvYmplY3QpOgogICAgICIiIkEgY29tbWFuZC1saW5lIHByb2dyYW0gdGhhdCBydW5zIGEgc2V0IG9mIHRlc3RzOyB0aGlzIGlzIHByaW1hcmlseQogICAgICAgIGZvciBtYWtpbmcgdGVzdCBtb2R1bGVzIGNvbnZlbmllbnRseSBleGVjdXRhYmxlLgpAQCAtMTQzLDMzICsxNDQsOSBAQAogICAgICAgICAgICAgc2VsZi5fZG9fZGlzY292ZXJ5KGFyZ3ZbMjpdKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaW1wb3J0IGdldG9wdAotICAgICAgICBsb25nX29wdHMgPSBbJ2hlbHAnLCAndmVyYm9zZScsICdxdWlldCcsICdmYWlsZmFzdCcsICdjYXRjaCcsICdidWZmZXInXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcHRpb25zLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmd2WzE6XSwgJ2hIdnFmY2InLCBsb25nX29wdHMpCi0gICAgICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgotICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQobXNnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZm9yIG9wdCwgdmFsdWUgaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1oJywnLUgnLCctLWhlbHAnKToKLSAgICAgICAgICAgICAgICBzZWxmLnVzYWdlRXhpdCgpCi0gICAgICAgICAgICBpZiBvcHQgaW4gKCctcScsJy0tcXVpZXQnKToKLSAgICAgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDAKLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy12JywnLS12ZXJib3NlJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAyCi0gICAgICAgICAgICBpZiBvcHQgaW4gKCctZicsJy0tZmFpbGZhc3QnKToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmZhaWxmYXN0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbGZhc3QgPSBUcnVlCi0gICAgICAgICAgICAgICAgIyBTaG91bGQgdGhpcyByYWlzZSBhbiBleGNlcHRpb24gaWYgLWYgaXMgbm90IHZhbGlkPwotICAgICAgICAgICAgaWYgb3B0IGluICgnLWMnLCctLWNhdGNoJyk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jYXRjaGJyZWFrIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuY2F0Y2hicmVhayA9IFRydWUKLSAgICAgICAgICAgICAgICAjIFNob3VsZCB0aGlzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiAtYyBpcyBub3QgdmFsaWQ/Ci0gICAgICAgICAgICBpZiBvcHQgaW4gKCctYicsJy0tYnVmZmVyJyk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5idWZmZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBUcnVlCi0gICAgICAgICAgICAgICAgIyBTaG91bGQgdGhpcyByYWlzZSBhbiBleGNlcHRpb24gaWYgLWIgaXMgbm90IHZhbGlkPworICAgICAgICBwYXJzZXIgPSBzZWxmLl9nZXRPcHRQYXJzZXIoKQorICAgICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndlsxOl0pCisgICAgICAgIHNlbGYuX3NldEF0dHJpYnV0ZXNGcm9tT3B0aW9ucyhvcHRpb25zKQogCiAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAwIGFuZCBzZWxmLm1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICAgIyB0aGlzIGFsbG93cyAicHl0aG9uIC1tIHVuaXR0ZXN0IC12IiB0byBzdGlsbCB3b3JrIGZvcgpAQCAtMTk3LDE0ICsxNzQsMTQgQEAKICAgICAgICAgICAgIHNlbGYudGVzdCA9IHNlbGYudGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoc2VsZi50ZXN0TmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlKQogCi0gICAgZGVmIF9kb19kaXNjb3Zlcnkoc2VsZiwgYXJndiwgTG9hZGVyPWxvYWRlci5UZXN0TG9hZGVyKToKLSAgICAgICAgIyBoYW5kbGUgY29tbWFuZCBsaW5lIGFyZ3MgZm9yIHRlc3QgZGlzY292ZXJ5Ci0gICAgICAgIHNlbGYucHJvZ05hbWUgPSAnJXMgZGlzY292ZXInICUgc2VsZi5wcm9nTmFtZQotICAgICAgICBpbXBvcnQgb3B0cGFyc2UKKyAgICBkZWYgX2dldE9wdFBhcnNlcihzZWxmKToKICAgICAgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKICAgICAgICAgcGFyc2VyLnByb2cgPSBzZWxmLnByb2dOYW1lCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdicsICctLXZlcmJvc2UnLCBkZXN0PSd2ZXJib3NlJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVmVyYm9zZSBvdXRwdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3F1aWV0JywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUXVpZXQgb3V0cHV0JywgYWN0aW9uPSdzdG9yZV90cnVlJykKKwogICAgICAgICBpZiBzZWxmLmZhaWxmYXN0ICE9IEZhbHNlOgogICAgICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1mJywgJy0tZmFpbGZhc3QnLCBkZXN0PSdmYWlsZmFzdCcsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTdG9wIG9uIGZpcnN0IGZhaWwgb3IgZXJyb3InLApAQCAtMjE3LDIwICsxOTQsOSBAQAogICAgICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1iJywgJy0tYnVmZmVyJywgZGVzdD0nYnVmZmVyJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0J1ZmZlciBzdGRvdXQgYW5kIHN0ZGVyciBkdXJpbmcgdGVzdHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJykKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc3RhcnQtZGlyZWN0b3J5JywgZGVzdD0nc3RhcnQnLCBkZWZhdWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRGlyZWN0b3J5IHRvIHN0YXJ0IGRpc2NvdmVyeSAoJy4nIGRlZmF1bHQpIikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcGF0dGVybicsIGRlc3Q9J3BhdHRlcm4nLCBkZWZhdWx0PSd0ZXN0Ki5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdHRlcm4gdG8gbWF0Y2ggdGVzdHMgKCd0ZXN0Ki5weScgZGVmYXVsdCkiKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10b3AtbGV2ZWwtZGlyZWN0b3J5JywgZGVzdD0ndG9wJywgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUb3AgbGV2ZWwgZGlyZWN0b3J5IG9mIHByb2plY3QgKGRlZmF1bHRzIHRvIHN0YXJ0IGRpcmVjdG9yeSknKQorICAgICAgICByZXR1cm4gcGFyc2VyCiAKLSAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDM6Ci0gICAgICAgICAgICBzZWxmLnVzYWdlRXhpdCgpCi0KLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHppcCgoJ3N0YXJ0JywgJ3BhdHRlcm4nLCAndG9wJyksIGFyZ3MpOgotICAgICAgICAgICAgc2V0YXR0cihvcHRpb25zLCBuYW1lLCB2YWx1ZSkKLQorICAgIGRlZiBfc2V0QXR0cmlidXRlc0Zyb21PcHRpb25zKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICAjIG9ubHkgc2V0IG9wdGlvbnMgZnJvbSB0aGUgcGFyc2luZyBoZXJlCiAgICAgICAgICMgaWYgdGhleSB3ZXJlbid0IHNldCBleHBsaWNpdGx5IGluIHRoZSBjb25zdHJ1Y3RvcgogICAgICAgICBpZiBzZWxmLmZhaWxmYXN0IGlzIE5vbmU6CkBAIC0yNDIsNiArMjA4LDMxIEBACiAKICAgICAgICAgaWYgb3B0aW9ucy52ZXJib3NlOgogICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAyCisgICAgICAgIGVsaWYgb3B0aW9ucy5xdWlldDoKKyAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMAorCisgICAgZGVmIF9hZGREaXNjb3ZlcnlPcHRpb25zKHNlbGYsIHBhcnNlcik6CisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXN0YXJ0LWRpcmVjdG9yeScsIGRlc3Q9J3N0YXJ0JywgZGVmYXVsdD0nLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpcmVjdG9yeSB0byBzdGFydCBkaXNjb3ZlcnkgKCcuJyBkZWZhdWx0KSIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBhdHRlcm4nLCBkZXN0PSdwYXR0ZXJuJywgZGVmYXVsdD0ndGVzdCoucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXR0ZXJuIHRvIG1hdGNoIHRlc3RzICgndGVzdCoucHknIGRlZmF1bHQpIikKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdG9wLWxldmVsLWRpcmVjdG9yeScsIGRlc3Q9J3RvcCcsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVG9wIGxldmVsIGRpcmVjdG9yeSBvZiBwcm9qZWN0IChkZWZhdWx0cyB0byBzdGFydCBkaXJlY3RvcnkpJykKKworICAgIGRlZiBfZG9fZGlzY292ZXJ5KHNlbGYsIGFyZ3YsIExvYWRlcj1sb2FkZXIuVGVzdExvYWRlcik6CisgICAgICAgICMgaGFuZGxlIGNvbW1hbmQgbGluZSBhcmdzIGZvciB0ZXN0IGRpc2NvdmVyeQorICAgICAgICBzZWxmLnByb2dOYW1lID0gJyVzIGRpc2NvdmVyJyAlIHNlbGYucHJvZ05hbWUKKyAgICAgICAgcGFyc2VyID0gc2VsZi5fZ2V0T3B0UGFyc2VyKCkKKyAgICAgICAgc2VsZi5fYWRkRGlzY292ZXJ5T3B0aW9ucyhwYXJzZXIpCisKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDM6CisgICAgICAgICAgICBzZWxmLnVzYWdlRXhpdCgpCisKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHppcCgoJ3N0YXJ0JywgJ3BhdHRlcm4nLCAndG9wJyksIGFyZ3MpOgorICAgICAgICAgICAgc2V0YXR0cihvcHRpb25zLCBuYW1lLCB2YWx1ZSkKKworICAgICAgICBzZWxmLl9zZXRBdHRyaWJ1dGVzRnJvbU9wdGlvbnMob3B0aW9ucykKIAogICAgICAgICBzdGFydF9kaXIgPSBvcHRpb25zLnN0YXJ0CiAgICAgICAgIHBhdHRlcm4gPSBvcHRpb25zLnBhdHRlcm4KZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tb2NrLnB5IGIvTGliL3VuaXR0ZXN0L21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0Y2YzOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC9tb2NrLnB5CkBAIC0wLDAgKzEsMjIxMSBAQAorIyBtb2NrLnB5CisjIFRlc3QgdG9vbHMgZm9yIG1vY2tpbmcgYW5kIHBhdGNoaW5nLgorIyBNYWludGFpbmVkIGJ5IE1pY2hhZWwgRm9vcmQKKyMgQmFja3BvcnQgZm9yIG90aGVyIHZlcnNpb25zIG9mIFB5dGhvbiBhdmFpbGFibGUgZnJvbQorIyBodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbW9jaworCitfX2FsbF9fID0gKAorICAgICdNb2NrJywKKyAgICAnTWFnaWNNb2NrJywKKyAgICAncGF0Y2gnLAorICAgICdzZW50aW5lbCcsCisgICAgJ0RFRkFVTFQnLAorICAgICdBTlknLAorICAgICdjYWxsJywKKyAgICAnY3JlYXRlX2F1dG9zcGVjJywKKyAgICAnRklMVEVSX0RJUicsCisgICAgJ05vbkNhbGxhYmxlTW9jaycsCisgICAgJ05vbkNhbGxhYmxlTWFnaWNNb2NrJywKKyAgICAnbW9ja19vcGVuJywKKyAgICAnUHJvcGVydHlNb2NrJywKKykKKworCitfX3ZlcnNpb25fXyA9ICcxLjAnCisKKworaW1wb3J0IGluc3BlY3QKK2ltcG9ydCBwcHJpbnQKK2ltcG9ydCBzeXMKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK0Jhc2VFeGNlcHRpb25zID0gKEJhc2VFeGNlcHRpb24sKQoraWYgJ2phdmEnIGluIHN5cy5wbGF0Zm9ybToKKyAgICAjIGp5dGhvbgorICAgIGltcG9ydCBqYXZhCisgICAgQmFzZUV4Y2VwdGlvbnMgPSAoQmFzZUV4Y2VwdGlvbiwgamF2YS5sYW5nLlRocm93YWJsZSkKKworCitGSUxURVJfRElSID0gVHJ1ZQorCisjIFdvcmthcm91bmQgZm9yIGlzc3VlICMxMjM3MAorIyBXaXRob3V0IHRoaXMsIHRoZSBfX2NsYXNzX18gcHJvcGVydGllcyB3b3VsZG4ndCBiZSBzZXQgY29ycmVjdGx5Citfc2FmZV9zdXBlciA9IHN1cGVyCisKK2RlZiBfaXNfaW5zdGFuY2VfbW9jayhvYmopOgorICAgICMgY2FuJ3QgdXNlIGlzaW5zdGFuY2Ugb24gTW9jayBvYmplY3RzIGJlY2F1c2UgdGhleSBvdmVycmlkZSBfX2NsYXNzX18KKyAgICAjIFRoZSBiYXNlIGNsYXNzIGZvciBhbGwgbW9ja3MgaXMgTm9uQ2FsbGFibGVNb2NrCisgICAgcmV0dXJuIGlzc3ViY2xhc3ModHlwZShvYmopLCBOb25DYWxsYWJsZU1vY2spCisKKworZGVmIF9pc19leGNlcHRpb24ob2JqKToKKyAgICByZXR1cm4gKAorICAgICAgICBpc2luc3RhbmNlKG9iaiwgQmFzZUV4Y2VwdGlvbnMpIG9yCisgICAgICAgIGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhvYmosIEJhc2VFeGNlcHRpb25zKQorICAgICkKKworCitjbGFzcyBfc2xvdHRlZChvYmplY3QpOgorICAgIF9fc2xvdHNfXyA9IFsnYSddCisKKworRGVzY3JpcHRvclR5cGVzID0gKAorICAgIHR5cGUoX3Nsb3R0ZWQuYSksCisgICAgcHJvcGVydHksCispCisKKworZGVmIF9nZXRzaWduYXR1cmUoZnVuYywgc2tpcGZpcnN0LCBpbnN0YW5jZT1GYWxzZSk6CisgICAgaWYgaXNpbnN0YW5jZShmdW5jLCB0eXBlKSBhbmQgbm90IGluc3RhbmNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmdW5jID0gZnVuYy5fX2luaXRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2tpcGZpcnN0ID0gVHJ1ZQorICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZnVuYywgRnVuY3Rpb25UeXBlcyk6CisgICAgICAgICMgZm9yIGNsYXNzZXMgd2hlcmUgaW5zdGFuY2UgaXMgVHJ1ZSB3ZSBlbmQgdXAgaGVyZSB0b28KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnVuYyA9IGZ1bmMuX19jYWxsX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICB0cnk6CisgICAgICAgIGFyZ3NwZWMgPSBpbnNwZWN0LmdldGZ1bGxhcmdzcGVjKGZ1bmMpCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgIyBDIGZ1bmN0aW9uIC8gbWV0aG9kLCBwb3NzaWJseSBpbmhlcml0ZWQgb2JqZWN0KCkuX19pbml0X18KKyAgICAgICAgcmV0dXJuCisKKyAgICByZWdhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seSwga3dvbmx5ZGVmLCBhbm4gPSBhcmdzcGVjCisKKworICAgICMgaW5zdGFuY2UgbWV0aG9kcyBhbmQgY2xhc3NtZXRob2RzIG5lZWQgdG8gbG9zZSB0aGUgc2VsZiBhcmd1bWVudAorICAgIGlmIGdldGF0dHIoZnVuYywgJ19fc2VsZl9fJywgTm9uZSkgaXMgbm90IE5vbmU6CisgICAgICAgIHJlZ2FyZ3MgPSByZWdhcmdzWzE6XQorICAgIGlmIHNraXBmaXJzdDoKKyAgICAgICAgIyB0aGlzIGNvbmRpdGlvbiBhbmQgdGhlIGFib3ZlIG9uZSBhcmUgbmV2ZXIgYm90aCBUcnVlIC0gd2h5PworICAgICAgICByZWdhcmdzID0gcmVnYXJnc1sxOl0KKworICAgIHNpZ25hdHVyZSA9IGluc3BlY3QuZm9ybWF0YXJnc3BlYygKKyAgICAgICAgcmVnYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLAorICAgICAgICBrd29ubHksIGt3b25seWRlZiwgYW5uLCBmb3JtYXR2YWx1ZT1sYW1iZGEgdmFsdWU6ICIiKQorICAgIHJldHVybiBzaWduYXR1cmVbMTotMV0sIGZ1bmMKKworCitkZWYgX2NoZWNrX3NpZ25hdHVyZShmdW5jLCBtb2NrLCBza2lwZmlyc3QsIGluc3RhbmNlPUZhbHNlKToKKyAgICBpZiBub3QgX2NhbGxhYmxlKGZ1bmMpOgorICAgICAgICByZXR1cm4KKworICAgIHJlc3VsdCA9IF9nZXRzaWduYXR1cmUoZnVuYywgc2tpcGZpcnN0LCBpbnN0YW5jZSkKKyAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisgICAgc2lnbmF0dXJlLCBmdW5jID0gcmVzdWx0CisKKyAgICAjIGNhbid0IHVzZSBzZWxmIGJlY2F1c2UgInNlbGYiIGlzIGNvbW1vbiBhcyBhbiBhcmd1bWVudCBuYW1lCisgICAgIyB1bmZvcnR1bmF0ZWx5IGV2ZW4gbm90IGluIHRoZSBmaXJzdCBwbGFjZQorICAgIHNyYyA9ICJsYW1iZGEgX21vY2tfc2VsZiwgJXM6IE5vbmUiICUgc2lnbmF0dXJlCisgICAgY2hlY2tzaWcgPSBldmFsKHNyYywge30pCisgICAgX2NvcHlfZnVuY19kZXRhaWxzKGZ1bmMsIGNoZWNrc2lnKQorICAgIHR5cGUobW9jaykuX21vY2tfY2hlY2tfc2lnID0gY2hlY2tzaWcKKworCitkZWYgX2NvcHlfZnVuY19kZXRhaWxzKGZ1bmMsIGZ1bmNvcHkpOgorICAgIGZ1bmNvcHkuX19uYW1lX18gPSBmdW5jLl9fbmFtZV9fCisgICAgZnVuY29weS5fX2RvY19fID0gZnVuYy5fX2RvY19fCisgICAgIyB3ZSBleHBsaWNpdGx5IGRvbid0IGNvcHkgZnVuYy5fX2RpY3RfXyBpbnRvIHRoaXMgY29weSBhcyBpdCB3b3VsZAorICAgICMgZXhwb3NlIG9yaWdpbmFsIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgbW9ja2VkCisgICAgZnVuY29weS5fX21vZHVsZV9fID0gZnVuYy5fX21vZHVsZV9fCisgICAgZnVuY29weS5fX2RlZmF1bHRzX18gPSBmdW5jLl9fZGVmYXVsdHNfXworICAgIGZ1bmNvcHkuX19rd2RlZmF1bHRzX18gPSBmdW5jLl9fa3dkZWZhdWx0c19fCisKKworZGVmIF9jYWxsYWJsZShvYmopOgorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBpZiBnZXRhdHRyKG9iaiwgJ19fY2FsbF9fJywgTm9uZSkgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKKworZGVmIF9pc19saXN0KG9iaik6CisgICAgIyBjaGVja3MgZm9yIGxpc3Qgb3IgdHVwbGVzCisgICAgIyBYWFhYIGJhZGx5IG5hbWVkIQorICAgIHJldHVybiB0eXBlKG9iaikgaW4gKGxpc3QsIHR1cGxlKQorCisKK2RlZiBfaW5zdGFuY2VfY2FsbGFibGUob2JqKToKKyAgICAiIiJHaXZlbiBhbiBvYmplY3QsIHJldHVybiBUcnVlIGlmIHRoZSBvYmplY3QgaXMgY2FsbGFibGUuCisgICAgRm9yIGNsYXNzZXMsIHJldHVybiBUcnVlIGlmIGluc3RhbmNlcyB3b3VsZCBiZSBjYWxsYWJsZS4iIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAjIGFscmVhZHkgYW4gaW5zdGFuY2UKKyAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCAnX19jYWxsX18nLCBOb25lKSBpcyBub3QgTm9uZQorCisgICAgIyAqY291bGQqIGJlIGJyb2tlbiBieSBhIGNsYXNzIG92ZXJyaWRpbmcgX19tcm9fXyBvciBfX2RpY3RfXyB2aWEKKyAgICAjIGEgbWV0YWNsYXNzCisgICAgZm9yIGJhc2UgaW4gKG9iaiwpICsgb2JqLl9fbXJvX186CisgICAgICAgIGlmIGJhc2UuX19kaWN0X18uZ2V0KCdfX2NhbGxfXycpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworCitkZWYgX3NldF9zaWduYXR1cmUobW9jaywgb3JpZ2luYWwsIGluc3RhbmNlPUZhbHNlKToKKyAgICAjIGNyZWF0ZXMgYSBmdW5jdGlvbiB3aXRoIHNpZ25hdHVyZSAoKmFyZ3MsICoqa3dhcmdzKSB0aGF0IGRlbGVnYXRlcyB0byBhCisgICAgIyBtb2NrLiBJdCBzdGlsbCBkb2VzIHNpZ25hdHVyZSBjaGVja2luZyBieSBjYWxsaW5nIGEgbGFtYmRhIHdpdGggdGhlIHNhbWUKKyAgICAjIHNpZ25hdHVyZSBhcyB0aGUgb3JpZ2luYWwuCisgICAgaWYgbm90IF9jYWxsYWJsZShvcmlnaW5hbCk6CisgICAgICAgIHJldHVybgorCisgICAgc2tpcGZpcnN0ID0gaXNpbnN0YW5jZShvcmlnaW5hbCwgdHlwZSkKKyAgICByZXN1bHQgPSBfZ2V0c2lnbmF0dXJlKG9yaWdpbmFsLCBza2lwZmlyc3QsIGluc3RhbmNlKQorICAgIGlmIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAjIHdhcyBhIEMgZnVuY3Rpb24gKGUuZy4gb2JqZWN0KCkuX19pbml0X18gKSB0aGF0IGNhbid0IGJlIG1vY2tlZAorICAgICAgICByZXR1cm4KKworICAgIHNpZ25hdHVyZSwgZnVuYyA9IHJlc3VsdAorCisgICAgc3JjID0gImxhbWJkYSAlczogTm9uZSIgJSBzaWduYXR1cmUKKyAgICBjaGVja3NpZyA9IGV2YWwoc3JjLCB7fSkKKyAgICBfY29weV9mdW5jX2RldGFpbHMoZnVuYywgY2hlY2tzaWcpCisKKyAgICBuYW1lID0gb3JpZ2luYWwuX19uYW1lX18KKyAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKKyAgICAgICAgbmFtZSA9ICdmdW5jb3B5JworICAgIGNvbnRleHQgPSB7J19jaGVja3NpZ18nOiBjaGVja3NpZywgJ21vY2snOiBtb2NrfQorICAgIHNyYyA9ICIiImRlZiAlcygqYXJncywgKiprd2FyZ3MpOgorICAgIF9jaGVja3NpZ18oKmFyZ3MsICoqa3dhcmdzKQorICAgIHJldHVybiBtb2NrKCphcmdzLCAqKmt3YXJncykiIiIgJSBuYW1lCisgICAgZXhlYyAoc3JjLCBjb250ZXh0KQorICAgIGZ1bmNvcHkgPSBjb250ZXh0W25hbWVdCisgICAgX3NldHVwX2Z1bmMoZnVuY29weSwgbW9jaykKKyAgICByZXR1cm4gZnVuY29weQorCisKK2RlZiBfc2V0dXBfZnVuYyhmdW5jb3B5LCBtb2NrKToKKyAgICBmdW5jb3B5Lm1vY2sgPSBtb2NrCisKKyAgICAjIGNhbid0IHVzZSBpc2luc3RhbmNlIHdpdGggbW9ja3MKKyAgICBpZiBub3QgX2lzX2luc3RhbmNlX21vY2sobW9jayk6CisgICAgICAgIHJldHVybgorCisgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2hhc19jYWxscygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9hbnlfY2FsbCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiByZXNldF9tb2NrKCk6CisgICAgICAgIGZ1bmNvcHkubWV0aG9kX2NhbGxzID0gX0NhbGxMaXN0KCkKKyAgICAgICAgZnVuY29weS5tb2NrX2NhbGxzID0gX0NhbGxMaXN0KCkKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgcmV0ID0gZnVuY29weS5yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2socmV0KSBhbmQgbm90IHJldCBpcyBtb2NrOgorICAgICAgICAgICAgcmV0LnJlc2V0X21vY2soKQorCisgICAgZnVuY29weS5jYWxsZWQgPSBGYWxzZQorICAgIGZ1bmNvcHkuY2FsbF9jb3VudCA9IDAKKyAgICBmdW5jb3B5LmNhbGxfYXJncyA9IE5vbmUKKyAgICBmdW5jb3B5LmNhbGxfYXJnc19saXN0ID0gX0NhbGxMaXN0KCkKKyAgICBmdW5jb3B5Lm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgZnVuY29weS5tb2NrX2NhbGxzID0gX0NhbGxMaXN0KCkKKworICAgIGZ1bmNvcHkucmV0dXJuX3ZhbHVlID0gbW9jay5yZXR1cm5fdmFsdWUKKyAgICBmdW5jb3B5LnNpZGVfZWZmZWN0ID0gbW9jay5zaWRlX2VmZmVjdAorICAgIGZ1bmNvcHkuX21vY2tfY2hpbGRyZW4gPSBtb2NrLl9tb2NrX2NoaWxkcmVuCisKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfd2l0aCA9IGFzc2VydF9jYWxsZWRfd2l0aAorICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGggPSBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aAorICAgIGZ1bmNvcHkuYXNzZXJ0X2hhc19jYWxscyA9IGFzc2VydF9oYXNfY2FsbHMKKyAgICBmdW5jb3B5LmFzc2VydF9hbnlfY2FsbCA9IGFzc2VydF9hbnlfY2FsbAorICAgIGZ1bmNvcHkucmVzZXRfbW9jayA9IHJlc2V0X21vY2sKKworICAgIG1vY2suX21vY2tfZGVsZWdhdGUgPSBmdW5jb3B5CisKKworZGVmIF9pc19tYWdpYyhuYW1lKToKKyAgICByZXR1cm4gJ19fJXNfXycgJSBuYW1lWzI6LTJdID09IG5hbWUKKworCitjbGFzcyBfU2VudGluZWxPYmplY3Qob2JqZWN0KToKKyAgICAiQSB1bmlxdWUsIG5hbWVkLCBzZW50aW5lbCBvYmplY3QuIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ3NlbnRpbmVsLiVzJyAlIHNlbGYubmFtZQorCisKK2NsYXNzIF9TZW50aW5lbChvYmplY3QpOgorICAgICIiIkFjY2VzcyBhdHRyaWJ1dGVzIHRvIHJldHVybiBhIG5hbWVkIG9iamVjdCwgdXNhYmxlIGFzIGEgc2VudGluZWwuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9zZW50aW5lbHMgPSB7fQorCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lID09ICdfX2Jhc2VzX18nOgorICAgICAgICAgICAgIyBXaXRob3V0IHRoaXMgaGVscCh1bml0dGVzdC5tb2NrKSByYWlzZXMgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcgorICAgICAgICByZXR1cm4gc2VsZi5fc2VudGluZWxzLnNldGRlZmF1bHQobmFtZSwgX1NlbnRpbmVsT2JqZWN0KG5hbWUpKQorCisKK3NlbnRpbmVsID0gX1NlbnRpbmVsKCkKKworREVGQVVMVCA9IHNlbnRpbmVsLkRFRkFVTFQKK19taXNzaW5nID0gc2VudGluZWwuTUlTU0lORworX2RlbGV0ZWQgPSBzZW50aW5lbC5ERUxFVEVECisKKworZGVmIF9jb3B5KHZhbHVlKToKKyAgICBpZiB0eXBlKHZhbHVlKSBpbiAoZGljdCwgbGlzdCwgdHVwbGUsIHNldCk6CisgICAgICAgIHJldHVybiB0eXBlKHZhbHVlKSh2YWx1ZSkKKyAgICByZXR1cm4gdmFsdWUKKworCitfYWxsb3dlZF9uYW1lcyA9IHNldCgKKyAgICBbCisgICAgICAgICdyZXR1cm5fdmFsdWUnLCAnX21vY2tfcmV0dXJuX3ZhbHVlJywgJ3NpZGVfZWZmZWN0JywKKyAgICAgICAgJ19tb2NrX3NpZGVfZWZmZWN0JywgJ19tb2NrX3BhcmVudCcsICdfbW9ja19uZXdfcGFyZW50JywKKyAgICAgICAgJ19tb2NrX25hbWUnLCAnX21vY2tfbmV3X25hbWUnCisgICAgXQorKQorCisKK2RlZiBfZGVsZWdhdGluZ19wcm9wZXJ0eShuYW1lKToKKyAgICBfYWxsb3dlZF9uYW1lcy5hZGQobmFtZSkKKyAgICBfdGhlX25hbWUgPSAnX21vY2tfJyArIG5hbWUKKyAgICBkZWYgX2dldChzZWxmLCBuYW1lPW5hbWUsIF90aGVfbmFtZT1fdGhlX25hbWUpOgorICAgICAgICBzaWcgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIHNpZyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgX3RoZV9uYW1lKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzaWcsIG5hbWUpCisgICAgZGVmIF9zZXQoc2VsZiwgdmFsdWUsIG5hbWU9bmFtZSwgX3RoZV9uYW1lPV90aGVfbmFtZSk6CisgICAgICAgIHNpZyA9IHNlbGYuX21vY2tfZGVsZWdhdGUKKyAgICAgICAgaWYgc2lnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9fZGljdF9fW190aGVfbmFtZV0gPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2V0YXR0cihzaWcsIG5hbWUsIHZhbHVlKQorCisgICAgcmV0dXJuIHByb3BlcnR5KF9nZXQsIF9zZXQpCisKKworCitjbGFzcyBfQ2FsbExpc3QobGlzdCk6CisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAgICAgICAgICAgcmV0dXJuIGxpc3QuX19jb250YWluc19fKHNlbGYsIHZhbHVlKQorICAgICAgICBsZW5fdmFsdWUgPSBsZW4odmFsdWUpCisgICAgICAgIGxlbl9zZWxmID0gbGVuKHNlbGYpCisgICAgICAgIGlmIGxlbl92YWx1ZSA+IGxlbl9zZWxmOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuX3NlbGYgLSBsZW5fdmFsdWUgKyAxKToKKyAgICAgICAgICAgIHN1Yl9saXN0ID0gc2VsZltpOmkrbGVuX3ZhbHVlXQorICAgICAgICAgICAgaWYgc3ViX2xpc3QgPT0gdmFsdWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBwcHJpbnQucGZvcm1hdChsaXN0KHNlbGYpKQorCisKK2RlZiBfY2hlY2tfYW5kX3NldF9wYXJlbnQocGFyZW50LCB2YWx1ZSwgbmFtZSwgbmV3X25hbWUpOgorICAgIGlmIG5vdCBfaXNfaW5zdGFuY2VfbW9jayh2YWx1ZSk6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmICgodmFsdWUuX21vY2tfbmFtZSBvciB2YWx1ZS5fbW9ja19uZXdfbmFtZSkgb3IKKyAgICAgICAgKHZhbHVlLl9tb2NrX3BhcmVudCBpcyBub3QgTm9uZSkgb3IKKyAgICAgICAgKHZhbHVlLl9tb2NrX25ld19wYXJlbnQgaXMgbm90IE5vbmUpKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBfcGFyZW50ID0gcGFyZW50CisgICAgd2hpbGUgX3BhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgIyBzZXR0aW5nIGEgbW9jayAodmFsdWUpIGFzIGEgY2hpbGQgb3IgcmV0dXJuIHZhbHVlIG9mIGl0c2VsZgorICAgICAgICAjIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBtb2NrCisgICAgICAgIGlmIF9wYXJlbnQgaXMgdmFsdWU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgX3BhcmVudCA9IF9wYXJlbnQuX21vY2tfbmV3X3BhcmVudAorCisgICAgaWYgbmV3X25hbWU6CisgICAgICAgIHZhbHVlLl9tb2NrX25ld19wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgdmFsdWUuX21vY2tfbmV3X25hbWUgPSBuZXdfbmFtZQorICAgIGlmIG5hbWU6CisgICAgICAgIHZhbHVlLl9tb2NrX3BhcmVudCA9IHBhcmVudAorICAgICAgICB2YWx1ZS5fbW9ja19uYW1lID0gbmFtZQorICAgIHJldHVybiBUcnVlCisKKworCitjbGFzcyBCYXNlKG9iamVjdCk6CisgICAgX21vY2tfcmV0dXJuX3ZhbHVlID0gREVGQVVMVAorICAgIF9tb2NrX3NpZGVfZWZmZWN0ID0gTm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBwYXNzCisKKworCitjbGFzcyBOb25DYWxsYWJsZU1vY2soQmFzZSk6CisgICAgIiIiQSBub24tY2FsbGFibGUgdmVyc2lvbiBvZiBgTW9ja2AiIiIKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3cpOgorICAgICAgICAjIGV2ZXJ5IGluc3RhbmNlIGhhcyBpdHMgb3duIGNsYXNzCisgICAgICAgICMgc28gd2UgY2FuIGNyZWF0ZSBtYWdpYyBtZXRob2RzIG9uIHRoZQorICAgICAgICAjIGNsYXNzIHdpdGhvdXQgc3RvbXBpbmcgb24gb3RoZXIgbW9ja3MKKyAgICAgICAgbmV3ID0gdHlwZShjbHMuX19uYW1lX18sIChjbHMsKSwgeydfX2RvY19fJzogY2xzLl9fZG9jX199KQorICAgICAgICBpbnN0YW5jZSA9IG9iamVjdC5fX25ld19fKG5ldykKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlCisKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLAorICAgICAgICAgICAgcGFyZW50PU5vbmUsIF9zcGVjX3N0YXRlPU5vbmUsIF9uZXdfbmFtZT0nJywgX25ld19wYXJlbnQ9Tm9uZSwKKyAgICAgICAgICAgICoqa3dhcmdzCisgICAgICAgICk6CisgICAgICAgIGlmIF9uZXdfcGFyZW50IGlzIE5vbmU6CisgICAgICAgICAgICBfbmV3X3BhcmVudCA9IHBhcmVudAorCisgICAgICAgIF9fZGljdF9fID0gc2VsZi5fX2RpY3RfXworICAgICAgICBfX2RpY3RfX1snX21vY2tfcGFyZW50J10gPSBwYXJlbnQKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX25hbWUnXSA9IG5hbWUKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX25ld19uYW1lJ10gPSBfbmV3X25hbWUKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX25ld19wYXJlbnQnXSA9IF9uZXdfcGFyZW50CisKKyAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzcGVjID0gc3BlY19zZXQKKyAgICAgICAgICAgIHNwZWNfc2V0ID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NoaWxkcmVuJ10gPSB7fQorICAgICAgICBfX2RpY3RfX1snX21vY2tfd3JhcHMnXSA9IHdyYXBzCisgICAgICAgIF9fZGljdF9fWydfbW9ja19kZWxlZ2F0ZSddID0gTm9uZQorCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsZWQnXSA9IEZhbHNlCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2FyZ3MnXSA9IE5vbmUKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxfY291bnQnXSA9IDAKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxfYXJnc19saXN0J10gPSBfQ2FsbExpc3QoKQorICAgICAgICBfX2RpY3RfX1snX21vY2tfbW9ja19jYWxscyddID0gX0NhbGxMaXN0KCkKKworICAgICAgICBfX2RpY3RfX1snbWV0aG9kX2NhbGxzJ10gPSBfQ2FsbExpc3QoKQorCisgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX21vY2soKiprd2FyZ3MpCisKKyAgICAgICAgX3NhZmVfc3VwZXIoTm9uQ2FsbGFibGVNb2NrLCBzZWxmKS5fX2luaXRfXygKKyAgICAgICAgICAgIHNwZWMsIHdyYXBzLCBuYW1lLCBzcGVjX3NldCwgcGFyZW50LAorICAgICAgICAgICAgX3NwZWNfc3RhdGUKKyAgICAgICAgKQorCisKKyAgICBkZWYgYXR0YWNoX21vY2soc2VsZiwgbW9jaywgYXR0cmlidXRlKToKKyAgICAgICAgIiIiCisgICAgICAgIEF0dGFjaCBhIG1vY2sgYXMgYW4gYXR0cmlidXRlIG9mIHRoaXMgb25lLCByZXBsYWNpbmcgaXRzIG5hbWUgYW5kCisgICAgICAgIHBhcmVudC4gQ2FsbHMgdG8gdGhlIGF0dGFjaGVkIG1vY2sgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUKKyAgICAgICAgYG1ldGhvZF9jYWxsc2AgYW5kIGBtb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIG9mIHRoaXMgb25lLiIiIgorICAgICAgICBtb2NrLl9tb2NrX3BhcmVudCA9IE5vbmUKKyAgICAgICAgbW9jay5fbW9ja19uZXdfcGFyZW50ID0gTm9uZQorICAgICAgICBtb2NrLl9tb2NrX25hbWUgPSAnJworICAgICAgICBtb2NrLl9tb2NrX25ld19uYW1lID0gTm9uZQorCisgICAgICAgIHNldGF0dHIoc2VsZiwgYXR0cmlidXRlLCBtb2NrKQorCisKKyAgICBkZWYgbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSk6CisgICAgICAgICIiIkFkZCBhIHNwZWMgdG8gYSBtb2NrLiBgc3BlY2AgY2FuIGVpdGhlciBiZSBhbiBvYmplY3Qgb3IgYQorICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCisgICAgICAgIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbW9jay4KKworICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKKyAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCkKKworCisgICAgZGVmIF9tb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0KToKKyAgICAgICAgX3NwZWNfY2xhc3MgPSBOb25lCisKKyAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgbm90IF9pc19saXN0KHNwZWMpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjLCB0eXBlKToKKyAgICAgICAgICAgICAgICBfc3BlY19jbGFzcyA9IHNwZWMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgX3NwZWNfY2xhc3MgPSBfZ2V0X2NsYXNzKHNwZWMpCisKKyAgICAgICAgICAgIHNwZWMgPSBkaXIoc3BlYykKKworICAgICAgICBfX2RpY3RfXyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgX19kaWN0X19bJ19zcGVjX2NsYXNzJ10gPSBfc3BlY19jbGFzcworICAgICAgICBfX2RpY3RfX1snX3NwZWNfc2V0J10gPSBzcGVjX3NldAorICAgICAgICBfX2RpY3RfX1snX21vY2tfbWV0aG9kcyddID0gc3BlYworCisKKyAgICBkZWYgX19nZXRfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICByZXQgPSBzZWxmLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiBzZWxmLl9tb2NrX2RlbGVnYXRlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19kZWxlZ2F0ZS5yZXR1cm5fdmFsdWUKKworICAgICAgICBpZiByZXQgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJldCA9IHNlbGYuX2dldF9jaGlsZF9tb2NrKAorICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXNlbGYsIF9uZXdfbmFtZT0nKCknCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLnJldHVybl92YWx1ZSA9IHJldAorICAgICAgICByZXR1cm4gcmV0CisKKworICAgIGRlZiBfX3NldF9yZXR1cm5fdmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiBzZWxmLl9tb2NrX2RlbGVnYXRlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbW9ja19kZWxlZ2F0ZS5yZXR1cm5fdmFsdWUgPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBOb25lLCAnKCknKQorCisgICAgX19yZXR1cm5fdmFsdWVfZG9jID0gIlRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4iCisgICAgcmV0dXJuX3ZhbHVlID0gcHJvcGVydHkoX19nZXRfcmV0dXJuX3ZhbHVlLCBfX3NldF9yZXR1cm5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXR1cm5fdmFsdWVfZG9jKQorCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX19jbGFzc19fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9zcGVjX2NsYXNzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKQorICAgICAgICByZXR1cm4gc2VsZi5fc3BlY19jbGFzcworCisgICAgY2FsbGVkID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxlZCcpCisgICAgY2FsbF9jb3VudCA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsX2NvdW50JykKKyAgICBjYWxsX2FyZ3MgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9hcmdzJykKKyAgICBjYWxsX2FyZ3NfbGlzdCA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsX2FyZ3NfbGlzdCcpCisgICAgbW9ja19jYWxscyA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdtb2NrX2NhbGxzJykKKworCisgICAgZGVmIF9fZ2V0X3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBkZWxlZ2F0ZWQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIGRlbGVnYXRlZCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tfc2lkZV9lZmZlY3QKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZC5zaWRlX2VmZmVjdAorCisgICAgZGVmIF9fc2V0X3NpZGVfZWZmZWN0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgdmFsdWUgPSBfdHJ5X2l0ZXIodmFsdWUpCisgICAgICAgIGRlbGVnYXRlZCA9IHNlbGYuX21vY2tfZGVsZWdhdGUKKyAgICAgICAgaWYgZGVsZWdhdGVkIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0ID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlbGVnYXRlZC5zaWRlX2VmZmVjdCA9IHZhbHVlCisKKyAgICBzaWRlX2VmZmVjdCA9IHByb3BlcnR5KF9fZ2V0X3NpZGVfZWZmZWN0LCBfX3NldF9zaWRlX2VmZmVjdCkKKworCisgICAgZGVmIHJlc2V0X21vY2soc2VsZik6CisgICAgICAgICJSZXN0b3JlIHRoZSBtb2NrIG9iamVjdCB0byBpdHMgaW5pdGlhbCBzdGF0ZS4iCisgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3MgPSBOb25lCisgICAgICAgIHNlbGYuY2FsbF9jb3VudCA9IDAKKyAgICAgICAgc2VsZi5tb2NrX2NhbGxzID0gX0NhbGxMaXN0KCkKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCisgICAgICAgIHNlbGYubWV0aG9kX2NhbGxzID0gX0NhbGxMaXN0KCkKKworICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5fbW9ja19jaGlsZHJlbi52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hpbGQsIF9TcGVjU3RhdGUpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjaGlsZC5yZXNldF9tb2NrKCkKKworICAgICAgICByZXQgPSBzZWxmLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiBfaXNfaW5zdGFuY2VfbW9jayhyZXQpIGFuZCByZXQgaXMgbm90IHNlbGY6CisgICAgICAgICAgICByZXQucmVzZXRfbW9jaygpCisKKworICAgIGRlZiBjb25maWd1cmVfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICIiIlNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIHRocm91Z2gga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICAgQXR0cmlidXRlcyBwbHVzIHJldHVybiB2YWx1ZXMgYW5kIHNpZGUgZWZmZWN0cyBjYW4gYmUgc2V0IG9uIGNoaWxkCisgICAgICAgIG1vY2tzIHVzaW5nIHN0YW5kYXJkIGRvdCBub3RhdGlvbiBhbmQgdW5wYWNraW5nIGEgZGljdGlvbmFyeSBpbiB0aGUKKyAgICAgICAgbWV0aG9kIGNhbGw6CisKKyAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgID4+PiBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqYXR0cnMpIiIiCisgICAgICAgIGZvciBhcmcsIHZhbCBpbiBzb3J0ZWQoa3dhcmdzLml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBzb3J0IG9uIHRoZSBudW1iZXIgb2YgZG90cyBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGVzIGFyZSBzZXQgYmVmb3JlIHdlIHNldCBhdHRyaWJ1dGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWxhbWJkYSBlbnRyeTogZW50cnlbMF0uY291bnQoJy4nKSk6CisgICAgICAgICAgICBhcmdzID0gYXJnLnNwbGl0KCcuJykKKyAgICAgICAgICAgIGZpbmFsID0gYXJncy5wb3AoKQorICAgICAgICAgICAgb2JqID0gc2VsZgorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGFyZ3M6CisgICAgICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIGVudHJ5KQorICAgICAgICAgICAgc2V0YXR0cihvYmosIGZpbmFsLCB2YWwpCisKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSA9PSAnX21vY2tfbWV0aG9kcyc6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBlbGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kcyBvciBuYW1lIGluIF9hbGxfbWFnaWNzOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICVyIiAlIG5hbWUpCisgICAgICAgIGVsaWYgX2lzX21hZ2ljKG5hbWUpOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKworICAgICAgICByZXN1bHQgPSBzZWxmLl9tb2NrX2NoaWxkcmVuLmdldChuYW1lKQorICAgICAgICBpZiByZXN1bHQgaXMgX2RlbGV0ZWQ6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBlbGlmIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAgICAgd3JhcHMgPSBOb25lCisgICAgICAgICAgICBpZiBzZWxmLl9tb2NrX3dyYXBzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgWFhYWCBzaG91bGQgd2UgZ2V0IHRoZSBhdHRyaWJ1dGUgd2l0aG91dCB0cmlnZ2VyaW5nIGNvZGUKKyAgICAgICAgICAgICAgICAjIGV4ZWN1dGlvbj8KKyAgICAgICAgICAgICAgICB3cmFwcyA9IGdldGF0dHIoc2VsZi5fbW9ja193cmFwcywgbmFtZSkKKworICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X2NoaWxkX21vY2soCisgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYsIG5hbWU9bmFtZSwgd3JhcHM9d3JhcHMsIF9uZXdfbmFtZT1uYW1lLAorICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXNlbGYKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gID0gcmVzdWx0CisKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHJlc3VsdCwgX1NwZWNTdGF0ZSk6CisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVfYXV0b3NwZWMoCisgICAgICAgICAgICAgICAgcmVzdWx0LnNwZWMsIHJlc3VsdC5zcGVjX3NldCwgcmVzdWx0Lmluc3RhbmNlLAorICAgICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQsIHJlc3VsdC5uYW1lCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdICA9IHJlc3VsdAorCisgICAgICAgIHJldHVybiByZXN1bHQKKworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBfbmFtZV9saXN0ID0gW3NlbGYuX21vY2tfbmV3X25hbWVdCisgICAgICAgIF9wYXJlbnQgPSBzZWxmLl9tb2NrX25ld19wYXJlbnQKKyAgICAgICAgbGFzdCA9IHNlbGYKKworICAgICAgICBkb3QgPSAnLicKKyAgICAgICAgaWYgX25hbWVfbGlzdCA9PSBbJygpJ106CisgICAgICAgICAgICBkb3QgPSAnJworICAgICAgICBzZWVuID0gc2V0KCkKKyAgICAgICAgd2hpbGUgX3BhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxhc3QgPSBfcGFyZW50CisKKyAgICAgICAgICAgIF9uYW1lX2xpc3QuYXBwZW5kKF9wYXJlbnQuX21vY2tfbmV3X25hbWUgKyBkb3QpCisgICAgICAgICAgICBkb3QgPSAnLicKKyAgICAgICAgICAgIGlmIF9wYXJlbnQuX21vY2tfbmV3X25hbWUgPT0gJygpJzoKKyAgICAgICAgICAgICAgICBkb3QgPSAnJworCisgICAgICAgICAgICBfcGFyZW50ID0gX3BhcmVudC5fbW9ja19uZXdfcGFyZW50CisKKyAgICAgICAgICAgICMgdXNlIGlkcyBoZXJlIHNvIGFzIG5vdCB0byBjYWxsIF9faGFzaF9fIG9uIHRoZSBtb2NrcworICAgICAgICAgICAgaWYgaWQoX3BhcmVudCkgaW4gc2VlbjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2Vlbi5hZGQoaWQoX3BhcmVudCkpCisKKyAgICAgICAgX25hbWVfbGlzdCA9IGxpc3QocmV2ZXJzZWQoX25hbWVfbGlzdCkpCisgICAgICAgIF9maXJzdCA9IGxhc3QuX21vY2tfbmFtZSBvciAnbW9jaycKKyAgICAgICAgaWYgbGVuKF9uYW1lX2xpc3QpID4gMToKKyAgICAgICAgICAgIGlmIF9uYW1lX2xpc3RbMV0gbm90IGluICgnKCknLCAnKCkuJyk6CisgICAgICAgICAgICAgICAgX2ZpcnN0ICs9ICcuJworICAgICAgICBfbmFtZV9saXN0WzBdID0gX2ZpcnN0CisgICAgICAgIG5hbWUgPSAnJy5qb2luKF9uYW1lX2xpc3QpCisKKyAgICAgICAgbmFtZV9zdHJpbmcgPSAnJworICAgICAgICBpZiBuYW1lIG5vdCBpbiAoJ21vY2snLCAnbW9jay4nKToKKyAgICAgICAgICAgIG5hbWVfc3RyaW5nID0gJyBuYW1lPSVyJyAlIG5hbWUKKworICAgICAgICBzcGVjX3N0cmluZyA9ICcnCisgICAgICAgIGlmIHNlbGYuX3NwZWNfY2xhc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzcGVjX3N0cmluZyA9ICcgc3BlYz0lcicKKyAgICAgICAgICAgIGlmIHNlbGYuX3NwZWNfc2V0OgorICAgICAgICAgICAgICAgIHNwZWNfc3RyaW5nID0gJyBzcGVjX3NldD0lcicKKyAgICAgICAgICAgIHNwZWNfc3RyaW5nID0gc3BlY19zdHJpbmcgJSBzZWxmLl9zcGVjX2NsYXNzLl9fbmFtZV9fCisgICAgICAgIHJldHVybiAiPCVzJXMlcyBpZD0nJXMnPiIgJSAoCisgICAgICAgICAgICB0eXBlKHNlbGYpLl9fbmFtZV9fLAorICAgICAgICAgICAgbmFtZV9zdHJpbmcsCisgICAgICAgICAgICBzcGVjX3N0cmluZywKKyAgICAgICAgICAgIGlkKHNlbGYpCisgICAgICAgICkKKworCisgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAgICIiIkZpbHRlciB0aGUgb3V0cHV0IG9mIGBkaXIobW9jaylgIHRvIG9ubHkgdXNlZnVsIG1lbWJlcnMuIiIiCisgICAgICAgIGlmIG5vdCBGSUxURVJfRElSOgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2Rpcl9fKHNlbGYpCisKKyAgICAgICAgZXh0cmFzID0gc2VsZi5fbW9ja19tZXRob2RzIG9yIFtdCisgICAgICAgIGZyb21fdHlwZSA9IGRpcih0eXBlKHNlbGYpKQorICAgICAgICBmcm9tX2RpY3QgPSBsaXN0KHNlbGYuX19kaWN0X18pCisKKyAgICAgICAgZnJvbV90eXBlID0gW2UgZm9yIGUgaW4gZnJvbV90eXBlIGlmIG5vdCBlLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgZnJvbV9kaWN0ID0gW2UgZm9yIGUgaW4gZnJvbV9kaWN0IGlmIG5vdCBlLnN0YXJ0c3dpdGgoJ18nKSBvcgorICAgICAgICAgICAgICAgICAgICAgX2lzX21hZ2ljKGUpXQorICAgICAgICByZXR1cm4gc29ydGVkKHNldChleHRyYXMgKyBmcm9tX3R5cGUgKyBmcm9tX2RpY3QgKworICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHNlbGYuX21vY2tfY2hpbGRyZW4pKSkKKworCisgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaWYgbmFtZSBpbiBfYWxsb3dlZF9uYW1lczoKKyAgICAgICAgICAgICMgcHJvcGVydHkgc2V0dGVycyBnbyB0aHJvdWdoIGhlcmUKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisgICAgICAgIGVsaWYgKHNlbGYuX3NwZWNfc2V0IGFuZCBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgICBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHMgYW5kCisgICAgICAgICAgICBuYW1lIG5vdCBpbiBzZWxmLl9fZGljdF9fKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKyAgICAgICAgZWxpZiBuYW1lIGluIF91bnN1cHBvcnRlZF9tYWdpY3M6CisgICAgICAgICAgICBtc2cgPSAnQXR0ZW1wdGluZyB0byBzZXQgdW5zdXBwb3J0ZWQgbWFnaWMgbWV0aG9kICVyLicgJSBuYW1lCisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihtc2cpCisgICAgICAgIGVsaWYgbmFtZSBpbiBfYWxsX21hZ2ljczoKKyAgICAgICAgICAgIGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZSBhbmQgbmFtZSBub3QgaW4gc2VsZi5fbW9ja19tZXRob2RzOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgICAgICAgICAgaWYgbm90IF9pc19pbnN0YW5jZV9tb2NrKHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUsIF9nZXRfbWV0aG9kKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgICAgICBvcmlnaW5hbCA9IHZhbHVlCisgICAgICAgICAgICAgICAgdmFsdWUgPSBsYW1iZGEgKmFyZ3MsICoqa3c6IG9yaWdpbmFsKHNlbGYsICphcmdzLCAqKmt3KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIG9ubHkgc2V0IF9uZXdfbmFtZSBhbmQgbm90IG5hbWUgc28gdGhhdCBtb2NrX2NhbGxzIGlzIHRyYWNrZWQKKyAgICAgICAgICAgICAgICAjIGJ1dCBub3QgbWV0aG9kIGNhbGxzCisgICAgICAgICAgICAgICAgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBOb25lLCBuYW1lKQorICAgICAgICAgICAgICAgIHNldGF0dHIodHlwZShzZWxmKSwgbmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSA9IHZhbHVlCisgICAgICAgIGVsaWYgbmFtZSA9PSAnX19jbGFzc19fJzoKKyAgICAgICAgICAgIHNlbGYuX3NwZWNfY2xhc3MgPSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfY2hlY2tfYW5kX3NldF9wYXJlbnQoc2VsZiwgdmFsdWUsIG5hbWUsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSB2YWx1ZQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorCisKKyAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgaW4gX2FsbF9tYWdpY3MgYW5kIG5hbWUgaW4gdHlwZShzZWxmKS5fX2RpY3RfXzoKKyAgICAgICAgICAgIGRlbGF0dHIodHlwZShzZWxmKSwgbmFtZSkKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX19kaWN0X186CisgICAgICAgICAgICAgICAgIyBmb3IgbWFnaWMgbWV0aG9kcyB0aGF0IGFyZSBzdGlsbCBNYWdpY1Byb3h5IG9iamVjdHMgYW5kCisgICAgICAgICAgICAgICAgIyBub3Qgc2V0IG9uIHRoZSBpbnN0YW5jZSBpdHNlbGYKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBuYW1lIGluIHNlbGYuX19kaWN0X186CisgICAgICAgICAgICBvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSkKKworICAgICAgICBvYmogPSBzZWxmLl9tb2NrX2NoaWxkcmVuLmdldChuYW1lLCBfbWlzc2luZykKKyAgICAgICAgaWYgb2JqIGlzIF9kZWxldGVkOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgaWYgb2JqIGlzIG5vdCBfbWlzc2luZzoKKyAgICAgICAgICAgIGRlbCBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdCisgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSBfZGVsZXRlZAorCisKKworICAgIGRlZiBfZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoc2VsZiwgYXJncywga3dhcmdzKToKKyAgICAgICAgbmFtZSA9IHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKQorCisKKyAgICBkZWYgX2Zvcm1hdF9tb2NrX2ZhaWx1cmVfbWVzc2FnZShzZWxmLCBhcmdzLCBrd2FyZ3MpOgorICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgIGV4cGVjdGVkX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgY2FsbF9hcmdzID0gc2VsZi5jYWxsX2FyZ3MKKyAgICAgICAgaWYgbGVuKGNhbGxfYXJncykgPT0gMzoKKyAgICAgICAgICAgIGNhbGxfYXJncyA9IGNhbGxfYXJnc1sxOl0KKyAgICAgICAgYWN0dWFsX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKCpjYWxsX2FyZ3MpCisgICAgICAgIHJldHVybiBtZXNzYWdlICUgKGV4cGVjdGVkX3N0cmluZywgYWN0dWFsX3N0cmluZykKKworCisgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCisKKyAgICAgICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9yIGlmIHRoZSBhcmdzIGFuZCBrZXl3b3JkIGFyZ3MgcGFzc2VkIGluIGFyZQorICAgICAgICBkaWZmZXJlbnQgdG8gdGhlIGxhc3QgY2FsbCB0byB0aGUgbW9jay4iIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgc2VsZi5jYWxsX2FyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0V4cGVjdGVkIGNhbGw6ICVzXG5Ob3QgY2FsbGVkJyAlIChleHBlY3RlZCwpKQorCisgICAgICAgIGlmIHNlbGYuY2FsbF9hcmdzICE9IChhcmdzLCBrd2FyZ3MpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0X21vY2tfZmFpbHVyZV9tZXNzYWdlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKworCisgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZV93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlIGFuZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgYXJndW1lbnRzLiIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBub3Qgc2VsZi5jYWxsX2NvdW50ID09IDE6CisgICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAlcyB0aW1lcy4iICUKKyAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKworCisgICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoc2VsZiwgY2FsbHMsIGFueV9vcmRlcj1GYWxzZSk6CisgICAgICAgICIiImFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNhbGxzLgorICAgICAgICBUaGUgYG1vY2tfY2FsbHNgIGxpc3QgaXMgY2hlY2tlZCBmb3IgdGhlIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlbiB0aGUgY2FsbHMgbXVzdCBiZQorICAgICAgICBzZXF1ZW50aWFsLiBUaGVyZSBjYW4gYmUgZXh0cmEgY2FsbHMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICBzcGVjaWZpZWQgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgVHJ1ZSB0aGVuIHRoZSBjYWxscyBjYW4gYmUgaW4gYW55IG9yZGVyLCBidXQKKyAgICAgICAgdGhleSBtdXN0IGFsbCBhcHBlYXIgaW4gYG1vY2tfY2FsbHNgLiIiIgorICAgICAgICBpZiBub3QgYW55X29yZGVyOgorICAgICAgICAgICAgaWYgY2FsbHMgbm90IGluIHNlbGYubW9ja19jYWxsczoKKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0NhbGxzIG5vdCBmb3VuZC5cbkV4cGVjdGVkOiAlclxuJworICAgICAgICAgICAgICAgICAgICAnQWN0dWFsOiAlcicgJSAoY2FsbHMsIHNlbGYubW9ja19jYWxscykKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhbGxfY2FsbHMgPSBsaXN0KHNlbGYubW9ja19jYWxscykKKworICAgICAgICBub3RfZm91bmQgPSBbXQorICAgICAgICBmb3Iga2FsbCBpbiBjYWxsczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhbGxfY2FsbHMucmVtb3ZlKGthbGwpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBub3RfZm91bmQuYXBwZW5kKGthbGwpCisgICAgICAgIGlmIG5vdF9mb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICclciBub3QgYWxsIGZvdW5kIGluIGNhbGwgbGlzdCcgJSAodHVwbGUobm90X2ZvdW5kKSwpCisgICAgICAgICAgICApCisKKworICAgIGRlZiBhc3NlcnRfYW55X2NhbGwoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFRoZSBhc3NlcnQgcGFzc2VzIGlmIHRoZSBtb2NrIGhhcyAqZXZlciogYmVlbiBjYWxsZWQsIHVubGlrZQorICAgICAgICBgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgYGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCB0aGF0IG9ubHkgcGFzcyBpZgorICAgICAgICB0aGUgY2FsbCBpcyB0aGUgbW9zdCByZWNlbnQgb25lLiIiIgorICAgICAgICBrYWxsID0gY2FsbCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGlmIGthbGwgbm90IGluIHNlbGYuY2FsbF9hcmdzX2xpc3Q6CisgICAgICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAnJXMgY2FsbCBub3QgZm91bmQnICUgZXhwZWN0ZWRfc3RyaW5nCisgICAgICAgICAgICApCisKKworICAgIGRlZiBfZ2V0X2NoaWxkX21vY2soc2VsZiwgKiprdyk6CisgICAgICAgICIiIkNyZWF0ZSB0aGUgY2hpbGQgbW9ja3MgZm9yIGF0dHJpYnV0ZXMgYW5kIHJldHVybiB2YWx1ZS4KKyAgICAgICAgQnkgZGVmYXVsdCBjaGlsZCBtb2NrcyB3aWxsIGJlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIHBhcmVudC4KKyAgICAgICAgU3ViY2xhc3NlcyBvZiBNb2NrIG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMgdG8gY3VzdG9taXplIHRoZSB3YXkKKyAgICAgICAgY2hpbGQgbW9ja3MgYXJlIG1hZGUuCisKKyAgICAgICAgRm9yIG5vbi1jYWxsYWJsZSBtb2NrcyB0aGUgY2FsbGFibGUgdmFyaWFudCB3aWxsIGJlIHVzZWQgKHJhdGhlciB0aGFuCisgICAgICAgIGFueSBjdXN0b20gc3ViY2xhc3MpLiIiIgorICAgICAgICBfdHlwZSA9IHR5cGUoc2VsZikKKyAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MoX3R5cGUsIENhbGxhYmxlTWl4aW4pOgorICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhfdHlwZSwgTm9uQ2FsbGFibGVNYWdpY01vY2spOgorICAgICAgICAgICAgICAgIGtsYXNzID0gTWFnaWNNb2NrCisgICAgICAgICAgICBlbGlmIGlzc3ViY2xhc3MoX3R5cGUsIE5vbkNhbGxhYmxlTW9jaykgOgorICAgICAgICAgICAgICAgIGtsYXNzID0gTW9jaworICAgICAgICBlbHNlOgorICAgICAgICAgICAga2xhc3MgPSBfdHlwZS5fX21yb19fWzFdCisgICAgICAgIHJldHVybiBrbGFzcygqKmt3KQorCisKKworZGVmIF90cnlfaXRlcihvYmopOgorICAgIGlmIG9iaiBpcyBOb25lOgorICAgICAgICByZXR1cm4gb2JqCisgICAgaWYgX2lzX2V4Y2VwdGlvbihvYmopOgorICAgICAgICByZXR1cm4gb2JqCisgICAgaWYgX2NhbGxhYmxlKG9iaik6CisgICAgICAgIHJldHVybiBvYmoKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpdGVyKG9iaikKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAjIFhYWFggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKyAgICAgICAgIyBidXQgdGhpcyB3aWxsIGJsb3cgdXAgb24gZmlyc3QgY2FsbCAtIHNvIG1heWJlIHdlIHNob3VsZCBmYWlsIGVhcmx5PworICAgICAgICByZXR1cm4gb2JqCisKKworCitjbGFzcyBDYWxsYWJsZU1peGluKEJhc2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWM9Tm9uZSwgc2lkZV9lZmZlY3Q9Tm9uZSwgcmV0dXJuX3ZhbHVlPURFRkFVTFQsCisgICAgICAgICAgICAgICAgIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwgcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgIF9zcGVjX3N0YXRlPU5vbmUsIF9uZXdfbmFtZT0nJywgX25ld19wYXJlbnQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLl9fZGljdF9fWydfbW9ja19yZXR1cm5fdmFsdWUnXSA9IHJldHVybl92YWx1ZQorCisgICAgICAgIF9zYWZlX3N1cGVyKENhbGxhYmxlTWl4aW4sIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAgc3BlYywgd3JhcHMsIG5hbWUsIHNwZWNfc2V0LCBwYXJlbnQsCisgICAgICAgICAgICBfc3BlY19zdGF0ZSwgX25ld19uYW1lLCBfbmV3X3BhcmVudCwgKiprd2FyZ3MKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorCisKKyAgICBkZWYgX21vY2tfY2hlY2tfc2lnKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgc3R1YiBtZXRob2QgdGhhdCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBvbmUgd2l0aCBhIHNwZWNpZmljIHNpZ25hdHVyZQorICAgICAgICBwYXNzCisKKworICAgIGRlZiBfX2NhbGxfXyhfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIGNhbid0IHVzZSBzZWxmIGluLWNhc2UgYSBmdW5jdGlvbiAvIG1ldGhvZCB3ZSBhcmUgbW9ja2luZyB1c2VzIHNlbGYKKyAgICAgICAgIyBpbiB0aGUgc2lnbmF0dXJlCisgICAgICAgIF9tb2NrX3NlbGYuX21vY2tfY2hlY2tfc2lnKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIF9tb2NrX3NlbGYuX21vY2tfY2FsbCgqYXJncywgKiprd2FyZ3MpCisKKworICAgIGRlZiBfbW9ja19jYWxsKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQorICAgICAgICBzZWxmLmNhbGxfY291bnQgKz0gMQorICAgICAgICBzZWxmLmNhbGxfYXJncyA9IF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdC5hcHBlbmQoX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKSkKKworICAgICAgICBfbmV3X25hbWUgPSBzZWxmLl9tb2NrX25ld19uYW1lCisgICAgICAgIF9uZXdfcGFyZW50ID0gc2VsZi5fbW9ja19uZXdfcGFyZW50CisgICAgICAgIHNlbGYubW9ja19jYWxscy5hcHBlbmQoX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpKSkKKworICAgICAgICBzZWVuID0gc2V0KCkKKyAgICAgICAgc2tpcF9uZXh0X2RvdCA9IF9uZXdfbmFtZSA9PSAnKCknCisgICAgICAgIGRvX21ldGhvZF9jYWxscyA9IHNlbGYuX21vY2tfcGFyZW50IGlzIG5vdCBOb25lCisgICAgICAgIG5hbWUgPSBzZWxmLl9tb2NrX25hbWUKKyAgICAgICAgd2hpbGUgX25ld19wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aGlzX21vY2tfY2FsbCA9IF9DYWxsKChfbmV3X25hbWUsIGFyZ3MsIGt3YXJncykpCisgICAgICAgICAgICBpZiBfbmV3X3BhcmVudC5fbW9ja19uZXdfbmFtZToKKyAgICAgICAgICAgICAgICBkb3QgPSAnLicKKyAgICAgICAgICAgICAgICBpZiBza2lwX25leHRfZG90OgorICAgICAgICAgICAgICAgICAgICBkb3QgPSAnJworCisgICAgICAgICAgICAgICAgc2tpcF9uZXh0X2RvdCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgX25ld19wYXJlbnQuX21vY2tfbmV3X25hbWUgPT0gJygpJzoKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9uZXh0X2RvdCA9IFRydWUKKworICAgICAgICAgICAgICAgIF9uZXdfbmFtZSA9IF9uZXdfcGFyZW50Ll9tb2NrX25ld19uYW1lICsgZG90ICsgX25ld19uYW1lCisKKyAgICAgICAgICAgIGlmIGRvX21ldGhvZF9jYWxsczoKKyAgICAgICAgICAgICAgICBpZiBfbmV3X25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19tZXRob2RfY2FsbCA9IHRoaXNfbW9ja19jYWxsCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19tZXRob2RfY2FsbCA9IF9DYWxsKChuYW1lLCBhcmdzLCBrd2FyZ3MpKQorICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50Lm1ldGhvZF9jYWxscy5hcHBlbmQodGhpc19tZXRob2RfY2FsbCkKKworICAgICAgICAgICAgICAgIGRvX21ldGhvZF9jYWxscyA9IF9uZXdfcGFyZW50Ll9tb2NrX3BhcmVudCBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGlmIGRvX21ldGhvZF9jYWxsczoKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9uZXdfcGFyZW50Ll9tb2NrX25hbWUgKyAnLicgKyBuYW1lCisKKyAgICAgICAgICAgIF9uZXdfcGFyZW50Lm1vY2tfY2FsbHMuYXBwZW5kKHRoaXNfbW9ja19jYWxsKQorICAgICAgICAgICAgX25ld19wYXJlbnQgPSBfbmV3X3BhcmVudC5fbW9ja19uZXdfcGFyZW50CisKKyAgICAgICAgICAgICMgdXNlIGlkcyBoZXJlIHNvIGFzIG5vdCB0byBjYWxsIF9faGFzaF9fIG9uIHRoZSBtb2NrcworICAgICAgICAgICAgX25ld19wYXJlbnRfaWQgPSBpZChfbmV3X3BhcmVudCkKKyAgICAgICAgICAgIGlmIF9uZXdfcGFyZW50X2lkIGluIHNlZW46CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlZW4uYWRkKF9uZXdfcGFyZW50X2lkKQorCisgICAgICAgIHJldF92YWwgPSBERUZBVUxUCisgICAgICAgIGVmZmVjdCA9IHNlbGYuc2lkZV9lZmZlY3QKKyAgICAgICAgaWYgZWZmZWN0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihlZmZlY3QpOgorICAgICAgICAgICAgICAgIHJhaXNlIGVmZmVjdAorCisgICAgICAgICAgICBpZiBub3QgX2NhbGxhYmxlKGVmZmVjdCk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dChlZmZlY3QpCisgICAgICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihyZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSByZXN1bHQKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgICAgIHJldF92YWwgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgaWYgcmV0X3ZhbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJldF92YWwgPSBzZWxmLnJldHVybl92YWx1ZQorCisgICAgICAgIGlmIChzZWxmLl9tb2NrX3dyYXBzIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlIGlzIERFRkFVTFQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tfd3JhcHMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXRfdmFsID0gc2VsZi5yZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuIHJldF92YWwKKworCisKK2NsYXNzIE1vY2soQ2FsbGFibGVNaXhpbiwgTm9uQ2FsbGFibGVNb2NrKToKKyAgICAiIiIKKyAgICBDcmVhdGUgYSBuZXcgYE1vY2tgIG9iamVjdC4gYE1vY2tgIHRha2VzIHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzCisgICAgdGhhdCBzcGVjaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIE1vY2sgb2JqZWN0OgorCisgICAgKiBgc3BlY2A6IFRoaXMgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBhbiBleGlzdGluZyBvYmplY3QgKGEKKyAgICAgIGNsYXNzIG9yIGluc3RhbmNlKSB0aGF0IGFjdHMgYXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrIG9iamVjdC4gSWYKKyAgICAgIHlvdSBwYXNzIGluIGFuIG9iamVjdCB0aGVuIGEgbGlzdCBvZiBzdHJpbmdzIGlzIGZvcm1lZCBieSBjYWxsaW5nIGRpciBvbgorICAgICAgdGhlIG9iamVjdCAoZXhjbHVkaW5nIHVuc3VwcG9ydGVkIG1hZ2ljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMpLiBBY2Nlc3NpbmcKKyAgICAgIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAgIElmIGBzcGVjYCBpcyBhbiBvYmplY3QgKHJhdGhlciB0aGFuIGEgbGlzdCBvZiBzdHJpbmdzKSB0aGVuCisgICAgICBgbW9jay5fX2NsYXNzX19gIHJldHVybnMgdGhlIGNsYXNzIG9mIHRoZSBzcGVjIG9iamVjdC4gVGhpcyBhbGxvd3MgbW9ja3MKKyAgICAgIHRvIHBhc3MgYGlzaW5zdGFuY2VgIHRlc3RzLgorCisgICAgKiBgc3BlY19zZXRgOiBBIHN0cmljdGVyIHZhcmlhbnQgb2YgYHNwZWNgLiBJZiB1c2VkLCBhdHRlbXB0aW5nIHRvICpzZXQqCisgICAgICBvciBnZXQgYW4gYXR0cmlidXRlIG9uIHRoZSBtb2NrIHRoYXQgaXNuJ3Qgb24gdGhlIG9iamVjdCBwYXNzZWQgYXMKKyAgICAgIGBzcGVjX3NldGAgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgKiBgc2lkZV9lZmZlY3RgOiBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgTW9jayBpcyBjYWxsZWQuIFNlZQorICAgICAgdGhlIGBzaWRlX2VmZmVjdGAgYXR0cmlidXRlLiBVc2VmdWwgZm9yIHJhaXNpbmcgZXhjZXB0aW9ucyBvcgorICAgICAgZHluYW1pY2FsbHkgY2hhbmdpbmcgcmV0dXJuIHZhbHVlcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lCisgICAgICBhcmd1bWVudHMgYXMgdGhlIG1vY2ssIGFuZCB1bmxlc3MgaXQgcmV0dXJucyBgREVGQVVMVGAsIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlLgorCisgICAgICBJZiBgc2lkZV9lZmZlY3RgIGlzIGFuIGl0ZXJhYmxlIHRoZW4gZWFjaCBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZS4gSWYgYW55IG9mIHRoZSBtZW1iZXJzIG9mIHRoZSBpdGVyYWJsZQorICAgICAgYXJlIGV4Y2VwdGlvbnMgdGhleSB3aWxsIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIHJldHVybmVkLgorCisgICAgICBJZiBgc2lkZV9lZmZlY3RgIGlzIGFuIGl0ZXJhYmxlIHRoZW4gZWFjaCBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZS4KKworICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAorICAgICAgdGhpcyBpcyBhIG5ldyBNb2NrIChjcmVhdGVkIG9uIGZpcnN0IGFjY2VzcykuIFNlZSB0aGUKKyAgICAgIGByZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4KKworICAgICogYHdyYXBzYDogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmIGB3cmFwc2AgaXMgbm90IE5vbmUgdGhlbgorICAgICAgY2FsbGluZyB0aGUgTW9jayB3aWxsIHBhc3MgdGhlIGNhbGwgdGhyb3VnaCB0byB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChyZXR1cm5pbmcgdGhlIHJlYWwgcmVzdWx0KS4gQXR0cmlidXRlIGFjY2VzcyBvbiB0aGUgbW9jayB3aWxsIHJldHVybiBhCisgICAgICBNb2NrIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChzbyBhdHRlbXB0aW5nIHRvIGFjY2VzcyBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGV4aXN0IHdpbGwgcmFpc2UgYW4KKyAgICAgIGBBdHRyaWJ1dGVFcnJvcmApLgorCisgICAgICBJZiB0aGUgbW9jayBoYXMgYW4gZXhwbGljaXQgYHJldHVybl92YWx1ZWAgc2V0IHRoZW4gY2FsbHMgYXJlIG5vdCBwYXNzZWQKKyAgICAgIHRvIHRoZSB3cmFwcGVkIG9iamVjdCBhbmQgdGhlIGByZXR1cm5fdmFsdWVgIGlzIHJldHVybmVkIGluc3RlYWQuCisKKyAgICAqIGBuYW1lYDogSWYgdGhlIG1vY2sgaGFzIGEgbmFtZSB0aGVuIGl0IHdpbGwgYmUgdXNlZCBpbiB0aGUgcmVwciBvZiB0aGUKKyAgICAgIG1vY2suIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBUaGUgbmFtZSBpcyBwcm9wYWdhdGVkIHRvIGNoaWxkCisgICAgICBtb2Nrcy4KKworICAgIE1vY2tzIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZQorICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4KKyAgICAiIiIKKworCisKK2RlZiBfZG90X2xvb2t1cCh0aGluZywgY29tcCwgaW1wb3J0X3BhdGgpOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIodGhpbmcsIGNvbXApCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBfX2ltcG9ydF9fKGltcG9ydF9wYXRoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cih0aGluZywgY29tcCkKKworCitkZWYgX2ltcG9ydGVyKHRhcmdldCk6CisgICAgY29tcG9uZW50cyA9IHRhcmdldC5zcGxpdCgnLicpCisgICAgaW1wb3J0X3BhdGggPSBjb21wb25lbnRzLnBvcCgwKQorICAgIHRoaW5nID0gX19pbXBvcnRfXyhpbXBvcnRfcGF0aCkKKworICAgIGZvciBjb21wIGluIGNvbXBvbmVudHM6CisgICAgICAgIGltcG9ydF9wYXRoICs9ICIuJXMiICUgY29tcAorICAgICAgICB0aGluZyA9IF9kb3RfbG9va3VwKHRoaW5nLCBjb21wLCBpbXBvcnRfcGF0aCkKKyAgICByZXR1cm4gdGhpbmcKKworCitkZWYgX2lzX3N0YXJ0ZWQocGF0Y2hlcik6CisgICAgIyBYWFhYIGhvcnJpYmxlCisgICAgcmV0dXJuIGhhc2F0dHIocGF0Y2hlciwgJ2lzX2xvY2FsJykKKworCitjbGFzcyBfcGF0Y2gob2JqZWN0KToKKworICAgIGF0dHJpYnV0ZV9uYW1lID0gTm9uZQorICAgIF9hY3RpdmVfcGF0Y2hlcyA9IHNldCgpCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgICAgICBzZWxmLCBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsCisgICAgICAgICAgICBzcGVjX3NldCwgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwga3dhcmdzCisgICAgICAgICk6CisgICAgICAgIGlmIG5ld19jYWxsYWJsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5ldyBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnbmV3JyBhbmQgJ25ld19jYWxsYWJsZScgdG9nZXRoZXIiCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgYXV0b3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2F1dG9zcGVjJyBhbmQgJ25ld19jYWxsYWJsZScgdG9nZXRoZXIiCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuZ2V0dGVyID0gZ2V0dGVyCisgICAgICAgIHNlbGYuYXR0cmlidXRlID0gYXR0cmlidXRlCisgICAgICAgIHNlbGYubmV3ID0gbmV3CisgICAgICAgIHNlbGYubmV3X2NhbGxhYmxlID0gbmV3X2NhbGxhYmxlCisgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKyAgICAgICAgc2VsZi5jcmVhdGUgPSBjcmVhdGUKKyAgICAgICAgc2VsZi5oYXNfbG9jYWwgPSBGYWxzZQorICAgICAgICBzZWxmLnNwZWNfc2V0ID0gc3BlY19zZXQKKyAgICAgICAgc2VsZi5hdXRvc3BlYyA9IGF1dG9zcGVjCisgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCisgICAgICAgIHNlbGYuYWRkaXRpb25hbF9wYXRjaGVycyA9IFtdCisKKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gX3BhdGNoKAorICAgICAgICAgICAgc2VsZi5nZXR0ZXIsIHNlbGYuYXR0cmlidXRlLCBzZWxmLm5ldywgc2VsZi5zcGVjLAorICAgICAgICAgICAgc2VsZi5jcmVhdGUsIHNlbGYuc3BlY19zZXQsCisgICAgICAgICAgICBzZWxmLmF1dG9zcGVjLCBzZWxmLm5ld19jYWxsYWJsZSwgc2VsZi5rd2FyZ3MKKyAgICAgICAgKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gc2VsZi5hdHRyaWJ1dGVfbmFtZQorICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBbCisgICAgICAgICAgICBwLmNvcHkoKSBmb3IgcCBpbiBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMKKyAgICAgICAgXQorICAgICAgICByZXR1cm4gcGF0Y2hlcgorCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgZnVuYyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jbGFzcyhmdW5jKQorICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jYWxsYWJsZShmdW5jKQorCisKKyAgICBkZWYgZGVjb3JhdGVfY2xhc3Moc2VsZiwga2xhc3MpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoa2xhc3MpOgorICAgICAgICAgICAgaWYgbm90IGF0dHIuc3RhcnRzd2l0aChwYXRjaC5URVNUX1BSRUZJWCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIoa2xhc3MsIGF0dHIpCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBwYXRjaGVyID0gc2VsZi5jb3B5KCkKKyAgICAgICAgICAgIHNldGF0dHIoa2xhc3MsIGF0dHIsIHBhdGNoZXIoYXR0cl92YWx1ZSkpCisgICAgICAgIHJldHVybiBrbGFzcworCisKKyAgICBkZWYgZGVjb3JhdGVfY2FsbGFibGUoc2VsZiwgZnVuYyk6CisgICAgICAgIGlmIGhhc2F0dHIoZnVuYywgJ3BhdGNoaW5ncycpOgorICAgICAgICAgICAgZnVuYy5wYXRjaGluZ3MuYXBwZW5kKHNlbGYpCisgICAgICAgICAgICByZXR1cm4gZnVuYworCisgICAgICAgIEB3cmFwcyhmdW5jKQorICAgICAgICBkZWYgcGF0Y2hlZCgqYXJncywgKiprZXl3YXJncyk6CisgICAgICAgICAgICBleHRyYV9hcmdzID0gW10KKyAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMgPSBbXQorCisgICAgICAgICAgICBleGNfaW5mbyA9IHR1cGxlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcGF0Y2hpbmcgaW4gcGF0Y2hlZC5wYXRjaGluZ3M6CisgICAgICAgICAgICAgICAgICAgIGFyZyA9IHBhdGNoaW5nLl9fZW50ZXJfXygpCisgICAgICAgICAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMuYXBwZW5kKHBhdGNoaW5nKQorICAgICAgICAgICAgICAgICAgICBpZiBwYXRjaGluZy5hdHRyaWJ1dGVfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleXdhcmdzLnVwZGF0ZShhcmcpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGF0Y2hpbmcubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzLmFwcGVuZChhcmcpCisKKyAgICAgICAgICAgICAgICBhcmdzICs9IHR1cGxlKGV4dHJhX2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa2V5d2FyZ3MpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgaWYgKHBhdGNoaW5nIG5vdCBpbiBlbnRlcmVkX3BhdGNoZXJzIGFuZAorICAgICAgICAgICAgICAgICAgICBfaXNfc3RhcnRlZChwYXRjaGluZykpOgorICAgICAgICAgICAgICAgICAgICAjIHRoZSBwYXRjaGVyIG1heSBoYXZlIGJlZW4gc3RhcnRlZCwgYnV0IGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAjIHJhaXNlZCB3aGlsc3QgZW50ZXJpbmcgb25lIG9mIGl0cyBhZGRpdGlvbmFsX3BhdGNoZXJzCisgICAgICAgICAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMuYXBwZW5kKHBhdGNoaW5nKQorICAgICAgICAgICAgICAgICMgUGFzcyB0aGUgZXhjZXB0aW9uIHRvIF9fZXhpdF9fCisgICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICMgcmUtcmFpc2UgdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiByZXZlcnNlZChlbnRlcmVkX3BhdGNoZXJzKToKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hpbmcuX19leGl0X18oKmV4Y19pbmZvKQorCisgICAgICAgIHBhdGNoZWQucGF0Y2hpbmdzID0gW3NlbGZdCisgICAgICAgIHJldHVybiBwYXRjaGVkCisKKworICAgIGRlZiBnZXRfb3JpZ2luYWwoc2VsZik6CisgICAgICAgIHRhcmdldCA9IHNlbGYuZ2V0dGVyKCkKKyAgICAgICAgbmFtZSA9IHNlbGYuYXR0cmlidXRlCisKKyAgICAgICAgb3JpZ2luYWwgPSBERUZBVUxUCisgICAgICAgIGxvY2FsID0gRmFsc2UKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IHRhcmdldC5fX2RpY3RfX1tuYW1lXQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBLZXlFcnJvcik6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGdldGF0dHIodGFyZ2V0LCBuYW1lLCBERUZBVUxUKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9jYWwgPSBUcnVlCisKKyAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBvcmlnaW5hbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0ZSAlciIgJSAodGFyZ2V0LCBuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gb3JpZ2luYWwsIGxvY2FsCisKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICIiIlBlcmZvcm0gdGhlIHBhdGNoLiIiIgorICAgICAgICBuZXcsIHNwZWMsIHNwZWNfc2V0ID0gc2VsZi5uZXcsIHNlbGYuc3BlYywgc2VsZi5zcGVjX3NldAorICAgICAgICBhdXRvc3BlYywga3dhcmdzID0gc2VsZi5hdXRvc3BlYywgc2VsZi5rd2FyZ3MKKyAgICAgICAgbmV3X2NhbGxhYmxlID0gc2VsZi5uZXdfY2FsbGFibGUKKyAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLmdldHRlcigpCisKKyAgICAgICAgIyBub3JtYWxpc2UgRmFsc2UgdG8gTm9uZQorICAgICAgICBpZiBzcGVjIGlzIEZhbHNlOgorICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgaWYgc3BlY19zZXQgaXMgRmFsc2U6CisgICAgICAgICAgICBzcGVjX3NldCA9IE5vbmUKKyAgICAgICAgaWYgYXV0b3NwZWMgaXMgRmFsc2U6CisgICAgICAgICAgICBhdXRvc3BlYyA9IE5vbmUKKworICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBhdXRvc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3Qgc3BlY2lmeSBzcGVjIGFuZCBhdXRvc3BlYyIpCisgICAgICAgIGlmICgoc3BlYyBpcyBub3QgTm9uZSBvciBhdXRvc3BlYyBpcyBub3QgTm9uZSkgYW5kCisgICAgICAgICAgICBzcGVjX3NldCBub3QgaW4gKFRydWUsIE5vbmUpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgcHJvdmlkZSBleHBsaWNpdCBzcGVjX3NldCAqYW5kKiBzcGVjIG9yIGF1dG9zcGVjIikKKworICAgICAgICBvcmlnaW5hbCwgbG9jYWwgPSBzZWxmLmdldF9vcmlnaW5hbCgpCisKKyAgICAgICAgaWYgbmV3IGlzIERFRkFVTFQgYW5kIGF1dG9zcGVjIGlzIE5vbmU6CisgICAgICAgICAgICBpbmhlcml0ID0gRmFsc2UKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICAjIHNldCBzcGVjIHRvIHRoZSBvYmplY3Qgd2UgYXJlIHJlcGxhY2luZworICAgICAgICAgICAgICAgIHNwZWMgPSBvcmlnaW5hbAorICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNwZWNfc2V0ID0gb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzcGVjX3NldCA9IHNwZWMKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc3BlY19zZXQgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICBzcGVjX3NldCA9IG9yaWdpbmFsCisKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgb3Igc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgb3JpZ2luYWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ3NwZWMnIHdpdGggY3JlYXRlPVRydWUiKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3JpZ2luYWwsIHR5cGUpOgorICAgICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHBhdGNoaW5nIG91dCBhIGNsYXNzIGFuZCB0aGVyZSBpcyBhIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdCA9IFRydWUKKworICAgICAgICAgICAgS2xhc3MgPSBNYWdpY01vY2sKKyAgICAgICAgICAgIF9rd2FyZ3MgPSB7fQorICAgICAgICAgICAgaWYgbmV3X2NhbGxhYmxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIEtsYXNzID0gbmV3X2NhbGxhYmxlCisgICAgICAgICAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmUgb3Igc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlYworICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjX3NldAorICAgICAgICAgICAgICAgIGlmIF9pc19saXN0KHRoaXNfc3BlYyk6CisgICAgICAgICAgICAgICAgICAgIG5vdF9jYWxsYWJsZSA9ICdfX2NhbGxfXycgbm90IGluIHRoaXNfc3BlYworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5vdF9jYWxsYWJsZSA9IG5vdCBjYWxsYWJsZSh0aGlzX3NwZWMpCisgICAgICAgICAgICAgICAgaWYgbm90X2NhbGxhYmxlOgorICAgICAgICAgICAgICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snc3BlYyddID0gc3BlYworICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snc3BlY19zZXQnXSA9IHNwZWNfc2V0CisKKyAgICAgICAgICAgICMgYWRkIGEgbmFtZSB0byBtb2NrcworICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoS2xhc3MsIHR5cGUpIGFuZAorICAgICAgICAgICAgICAgIGlzc3ViY2xhc3MoS2xhc3MsIE5vbkNhbGxhYmxlTW9jaykgYW5kIHNlbGYuYXR0cmlidXRlKToKKyAgICAgICAgICAgICAgICBfa3dhcmdzWyduYW1lJ10gPSBzZWxmLmF0dHJpYnV0ZQorCisgICAgICAgICAgICBfa3dhcmdzLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgICAgICBuZXcgPSBLbGFzcygqKl9rd2FyZ3MpCisKKyAgICAgICAgICAgIGlmIGluaGVyaXQgYW5kIF9pc19pbnN0YW5jZV9tb2NrKG5ldyk6CisgICAgICAgICAgICAgICAgIyB3ZSBjYW4gb25seSB0ZWxsIGlmIHRoZSBpbnN0YW5jZSBzaG91bGQgYmUgY2FsbGFibGUgaWYgdGhlCisgICAgICAgICAgICAgICAgIyBzcGVjIGlzIG5vdCBhIGxpc3QKKyAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjCisgICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWNfc2V0CisgICAgICAgICAgICAgICAgaWYgKG5vdCBfaXNfbGlzdCh0aGlzX3NwZWMpIGFuZCBub3QKKyAgICAgICAgICAgICAgICAgICAgX2luc3RhbmNlX2NhbGxhYmxlKHRoaXNfc3BlYykpOgorICAgICAgICAgICAgICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisKKyAgICAgICAgICAgICAgICBfa3dhcmdzLnBvcCgnbmFtZScpCisgICAgICAgICAgICAgICAgbmV3LnJldHVybl92YWx1ZSA9IEtsYXNzKF9uZXdfcGFyZW50PW5ldywgX25ld19uYW1lPScoKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX2t3YXJncykKKyAgICAgICAgZWxpZiBhdXRvc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgc3BlYyBpcyBpZ25vcmVkLCBuZXcgKm11c3QqIGJlIGRlZmF1bHQsIHNwZWNfc2V0IGlzIHRyZWF0ZWQKKyAgICAgICAgICAgICMgYXMgYSBib29sZWFuLiBTaG91bGQgd2UgY2hlY2sgc3BlYyBpcyBub3QgTm9uZSBhbmQgdGhhdCBzcGVjX3NldAorICAgICAgICAgICAgIyBpcyBhIGJvb2w/CisgICAgICAgICAgICBpZiBuZXcgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiYXV0b3NwZWMgY3JlYXRlcyB0aGUgbW9jayBmb3IgeW91LiBDYW4ndCBzcGVjaWZ5ICIKKyAgICAgICAgICAgICAgICAgICAgImF1dG9zcGVjIGFuZCBuZXcuIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG9yaWdpbmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ2F1dG9zcGVjJyB3aXRoIGNyZWF0ZT1UcnVlIikKKyAgICAgICAgICAgIHNwZWNfc2V0ID0gYm9vbChzcGVjX3NldCkKKyAgICAgICAgICAgIGlmIGF1dG9zcGVjIGlzIFRydWU6CisgICAgICAgICAgICAgICAgYXV0b3NwZWMgPSBvcmlnaW5hbAorCisgICAgICAgICAgICBuZXcgPSBjcmVhdGVfYXV0b3NwZWMoYXV0b3NwZWMsIHNwZWNfc2V0PXNwZWNfc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uYW1lPXNlbGYuYXR0cmlidXRlLCAqKmt3YXJncykKKyAgICAgICAgZWxpZiBrd2FyZ3M6CisgICAgICAgICAgICAjIGNhbid0IHNldCBrZXl3b3JkIGFyZ3Mgd2hlbiB3ZSBhcmVuJ3QgY3JlYXRpbmcgdGhlIG1vY2sKKyAgICAgICAgICAgICMgWFhYWCBJZiBuZXcgaXMgYSBNb2NrIHdlIGNvdWxkIGNhbGwgbmV3LmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBwYXNzIGt3YXJncyB0byBhIG1vY2sgd2UgYXJlbid0IGNyZWF0aW5nIikKKworICAgICAgICBuZXdfYXR0ciA9IG5ldworCisgICAgICAgIHNlbGYudGVtcF9vcmlnaW5hbCA9IG9yaWdpbmFsCisgICAgICAgIHNlbGYuaXNfbG9jYWwgPSBsb2NhbAorICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgbmV3X2F0dHIpCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBleHRyYV9hcmdzID0ge30KKyAgICAgICAgICAgIGlmIHNlbGYubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgZXh0cmFfYXJnc1tzZWxmLmF0dHJpYnV0ZV9uYW1lXSA9ICBuZXcKKyAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnM6CisgICAgICAgICAgICAgICAgYXJnID0gcGF0Y2hpbmcuX19lbnRlcl9fKCkKKyAgICAgICAgICAgICAgICBpZiBwYXRjaGluZy5uZXcgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncy51cGRhdGUoYXJnKQorICAgICAgICAgICAgcmV0dXJuIGV4dHJhX2FyZ3MKKworICAgICAgICByZXR1cm4gbmV3CisKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgorICAgICAgICAiIiJVbmRvIHRoZSBwYXRjaC4iIiIKKyAgICAgICAgaWYgbm90IF9pc19zdGFydGVkKHNlbGYpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdzdG9wIGNhbGxlZCBvbiB1bnN0YXJ0ZWQgcGF0Y2hlcicpCisKKyAgICAgICAgaWYgc2VsZi5pc19sb2NhbCBhbmQgc2VsZi50ZW1wX29yaWdpbmFsIGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYudGVtcF9vcmlnaW5hbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlbGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBub3QgaGFzYXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUpOgorICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBwcm94eSBvYmplY3RzIGxpa2UgZGphbmdvIHNldHRpbmdzCisgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYudGVtcF9vcmlnaW5hbCkKKworICAgICAgICBkZWwgc2VsZi50ZW1wX29yaWdpbmFsCisgICAgICAgIGRlbCBzZWxmLmlzX2xvY2FsCisgICAgICAgIGRlbCBzZWxmLnRhcmdldAorICAgICAgICBmb3IgcGF0Y2hlciBpbiByZXZlcnNlZChzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMpOgorICAgICAgICAgICAgaWYgX2lzX3N0YXJ0ZWQocGF0Y2hlcik6CisgICAgICAgICAgICAgICAgcGF0Y2hlci5fX2V4aXRfXygqZXhjX2luZm8pCisKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIiIiQWN0aXZhdGUgYSBwYXRjaCwgcmV0dXJuaW5nIGFueSBjcmVhdGVkIG1vY2suIiIiCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19lbnRlcl9fKCkKKyAgICAgICAgc2VsZi5fYWN0aXZlX3BhdGNoZXMuYWRkKHNlbGYpCisgICAgICAgIHJldHVybiByZXN1bHQKKworCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICIiIlN0b3AgYW4gYWN0aXZlIHBhdGNoLiIiIgorICAgICAgICBzZWxmLl9hY3RpdmVfcGF0Y2hlcy5kaXNjYXJkKHNlbGYpCisgICAgICAgIHJldHVybiBzZWxmLl9fZXhpdF9fKCkKKworCisKK2RlZiBfZ2V0X3RhcmdldCh0YXJnZXQpOgorICAgIHRyeToKKyAgICAgICAgdGFyZ2V0LCBhdHRyaWJ1dGUgPSB0YXJnZXQucnNwbGl0KCcuJywgMSkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTmVlZCBhIHZhbGlkIHRhcmdldCB0byBwYXRjaC4gWW91IHN1cHBsaWVkOiAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldCwpKQorICAgIGdldHRlciA9IGxhbWJkYTogX2ltcG9ydGVyKHRhcmdldCkKKyAgICByZXR1cm4gZ2V0dGVyLCBhdHRyaWJ1dGUKKworCitkZWYgX3BhdGNoX29iamVjdCgKKyAgICAgICAgdGFyZ2V0LCBhdHRyaWJ1dGUsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsCisgICAgICAgIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwKKyAgICAgICAgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAiIiIKKyAgICBwYXRjaCB0aGUgbmFtZWQgbWVtYmVyIChgYXR0cmlidXRlYCkgb24gYW4gb2JqZWN0IChgdGFyZ2V0YCkgd2l0aCBhIG1vY2sKKyAgICBvYmplY3QuCisKKyAgICBgcGF0Y2gub2JqZWN0YCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEFyZ3VtZW50cyBgbmV3YCwgYHNwZWNgLCBgY3JlYXRlYCwgYHNwZWNfc2V0YCwKKyAgICBgYXV0b3NwZWNgIGFuZCBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIExpa2UKKyAgICBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgZm9yIGNvbmZpZ3VyaW5nCisgICAgdGhlIG1vY2sgb2JqZWN0IGl0IGNyZWF0ZXMuCisKKyAgICBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLm9iamVjdGAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKyAgICAiIiIKKyAgICBnZXR0ZXIgPSBsYW1iZGE6IHRhcmdldAorICAgIHJldHVybiBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKKyAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICkKKworCitkZWYgX3BhdGNoX211bHRpcGxlKHRhcmdldCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUGVyZm9ybSBtdWx0aXBsZSBwYXRjaGVzIGluIGEgc2luZ2xlIGNhbGwuIEl0IHRha2VzIHRoZSBvYmplY3QgdG8gYmUKKyAgICBwYXRjaGVkIChlaXRoZXIgYXMgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIHRvIGZldGNoIHRoZSBvYmplY3QgYnkgaW1wb3J0aW5nKQorICAgIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHBhdGNoZXM6OgorCisgICAgICAgIHdpdGggcGF0Y2gubXVsdGlwbGUoc2V0dGluZ3MsIEZJUlNUX1BBVENIPSdvbmUnLCBTRUNPTkRfUEFUQ0g9J3R3bycpOgorICAgICAgICAgICAgLi4uCisKKyAgICBVc2UgYERFRkFVTFRgIGFzIHRoZSB2YWx1ZSBpZiB5b3Ugd2FudCBgcGF0Y2gubXVsdGlwbGVgIHRvIGNyZWF0ZQorICAgIG1vY2tzIGZvciB5b3UuIEluIHRoaXMgY2FzZSB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gYSBkZWNvcmF0ZWQKKyAgICBmdW5jdGlvbiBieSBrZXl3b3JkLCBhbmQgYSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHdoZW4gYHBhdGNoLm11bHRpcGxlYCBpcworICAgIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgcGF0Y2gubXVsdGlwbGVgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gVGhlIGFyZ3VtZW50cyBgc3BlY2AsIGBzcGVjX3NldGAsIGBjcmVhdGVgLAorICAgIGBhdXRvc3BlY2AgYW5kIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gVGhlc2UKKyAgICBhcmd1bWVudHMgd2lsbCBiZSBhcHBsaWVkIHRvICphbGwqIHBhdGNoZXMgZG9uZSBieSBgcGF0Y2gubXVsdGlwbGVgLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5tdWx0aXBsZWAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKyAgICAiIiIKKyAgICBpZiB0eXBlKHRhcmdldCkgaXMgc3RyOgorICAgICAgICBnZXR0ZXIgPSBsYW1iZGE6IF9pbXBvcnRlcih0YXJnZXQpCisgICAgZWxzZToKKyAgICAgICAgZ2V0dGVyID0gbGFtYmRhOiB0YXJnZXQKKworICAgIGlmIG5vdCBrd2FyZ3M6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAnTXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIGtleXdvcmQgYXJndW1lbnQgd2l0aCBwYXRjaC5tdWx0aXBsZScKKyAgICAgICAgKQorICAgICMgbmVlZCB0byB3cmFwIGluIGEgbGlzdCBmb3IgcHl0aG9uIDMsIHdoZXJlIGl0ZW1zIGlzIGEgdmlldworICAgIGl0ZW1zID0gbGlzdChrd2FyZ3MuaXRlbXMoKSkKKyAgICBhdHRyaWJ1dGUsIG5ldyA9IGl0ZW1zWzBdCisgICAgcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLCBzcGVjX3NldCwKKyAgICAgICAgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwge30KKyAgICApCisgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IGF0dHJpYnV0ZQorICAgIGZvciBhdHRyaWJ1dGUsIG5ldyBpbiBpdGVtc1sxOl06CisgICAgICAgIHRoaXNfcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwgc3BlY19zZXQsCisgICAgICAgICAgICBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCB7fQorICAgICAgICApCisgICAgICAgIHRoaXNfcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IGF0dHJpYnV0ZQorICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMuYXBwZW5kKHRoaXNfcGF0Y2hlcikKKyAgICByZXR1cm4gcGF0Y2hlcgorCisKK2RlZiBwYXRjaCgKKyAgICAgICAgdGFyZ2V0LCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsCisgICAgICAgIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgIiIiCisgICAgYHBhdGNoYCBhY3RzIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gSW5zaWRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiBvciB3aXRoIHN0YXRlbWVudCwgdGhlIGB0YXJnZXRgCisgICAgaXMgcGF0Y2hlZCB3aXRoIGEgYG5ld2Agb2JqZWN0LiBXaGVuIHRoZSBmdW5jdGlvbi93aXRoIHN0YXRlbWVudCBleGl0cworICAgIHRoZSBwYXRjaCBpcyB1bmRvbmUuCisKKyAgICBJZiBgbmV3YCBpcyBvbWl0dGVkLCB0aGVuIHRoZSB0YXJnZXQgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgYE1hZ2ljTW9ja2AuIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGRlY29yYXRvciBhbmQgYG5ld2AgaXMKKyAgICBvbWl0dGVkLCB0aGUgY3JlYXRlZCBtb2NrIGlzIHBhc3NlZCBpbiBhcyBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUKKyAgICBkZWNvcmF0ZWQgZnVuY3Rpb24uIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0aGUgY3JlYXRlZAorICAgIG1vY2sgaXMgcmV0dXJuZWQgYnkgdGhlIGNvbnRleHQgbWFuYWdlci4KKworICAgIGB0YXJnZXRgIHNob3VsZCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSBgJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZSdgLiBUaGUKKyAgICBgdGFyZ2V0YCBpcyBpbXBvcnRlZCBhbmQgdGhlIHNwZWNpZmllZCBvYmplY3QgcmVwbGFjZWQgd2l0aCB0aGUgYG5ld2AKKyAgICBvYmplY3QsIHNvIHRoZSBgdGFyZ2V0YCBtdXN0IGJlIGltcG9ydGFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgeW91IGFyZQorICAgIGNhbGxpbmcgYHBhdGNoYCBmcm9tLiBUaGUgdGFyZ2V0IGlzIGltcG9ydGVkIHdoZW4gdGhlIGRlY29yYXRlZCBmdW5jdGlvbgorICAgIGlzIGV4ZWN1dGVkLCBub3QgYXQgZGVjb3JhdGlvbiB0aW1lLgorCisgICAgVGhlIGBzcGVjYCBhbmQgYHNwZWNfc2V0YCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBgTWFnaWNNb2NrYAorICAgIGlmIHBhdGNoIGlzIGNyZWF0aW5nIG9uZSBmb3IgeW91LgorCisgICAgSW4gYWRkaXRpb24geW91IGNhbiBwYXNzIGBzcGVjPVRydWVgIG9yIGBzcGVjX3NldD1UcnVlYCwgd2hpY2ggY2F1c2VzCisgICAgcGF0Y2ggdG8gcGFzcyBpbiB0aGUgb2JqZWN0IGJlaW5nIG1vY2tlZCBhcyB0aGUgc3BlYy9zcGVjX3NldCBvYmplY3QuCisKKyAgICBgbmV3X2NhbGxhYmxlYCBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgY2xhc3MsIG9yIGNhbGxhYmxlIG9iamVjdCwKKyAgICB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0aGUgYG5ld2Agb2JqZWN0LiBCeSBkZWZhdWx0IGBNYWdpY01vY2tgIGlzCisgICAgdXNlZC4KKworICAgIEEgbW9yZSBwb3dlcmZ1bCBmb3JtIG9mIGBzcGVjYCBpcyBgYXV0b3NwZWNgLiBJZiB5b3Ugc2V0IGBhdXRvc3BlYz1UcnVlYAorICAgIHRoZW4gdGhlIG1vY2sgd2l0aCBiZSBjcmVhdGVkIHdpdGggYSBzcGVjIGZyb20gdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4KKyAgICBBbGwgYXR0cmlidXRlcyBvZiB0aGUgbW9jayB3aWxsIGFsc28gaGF2ZSB0aGUgc3BlYyBvZiB0aGUgY29ycmVzcG9uZGluZworICAgIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLiBNZXRob2RzIGFuZCBmdW5jdGlvbnMgYmVpbmcKKyAgICBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkIGFuZCB3aWxsIHJhaXNlIGEgYFR5cGVFcnJvcmAgaWYKKyAgICB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgd3Jvbmcgc2lnbmF0dXJlLiBGb3IgbW9ja3MgcmVwbGFjaW5nIGEgY2xhc3MsCisgICAgdGhlaXIgcmV0dXJuIHZhbHVlICh0aGUgJ2luc3RhbmNlJykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMgYXMgdGhlIGNsYXNzLgorCisgICAgSW5zdGVhZCBvZiBgYXV0b3NwZWM9VHJ1ZWAgeW91IGNhbiBwYXNzIGBhdXRvc3BlYz1zb21lX29iamVjdGAgdG8gdXNlIGFuCisgICAgYXJiaXRyYXJ5IG9iamVjdCBhcyB0aGUgc3BlYyBpbnN0ZWFkIG9mIHRoZSBvbmUgYmVpbmcgcmVwbGFjZWQuCisKKyAgICBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBmYWlsIHRvIHJlcGxhY2UgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0LiBJZgorICAgIHlvdSBwYXNzIGluIGBjcmVhdGU9VHJ1ZWAsIGFuZCB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QsIHBhdGNoIHdpbGwKKyAgICBjcmVhdGUgdGhlIGF0dHJpYnV0ZSBmb3IgeW91IHdoZW4gdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCBhbmQKKyAgICBkZWxldGUgaXQgYWdhaW4gYWZ0ZXJ3YXJkcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdHMgYWdhaW5zdAorICAgIGF0dHJpYnV0ZXMgdGhhdCB5b3VyIHByb2R1Y3Rpb24gY29kZSBjcmVhdGVzIGF0IHJ1bnRpbWUuIEl0IGlzIG9mZiBieSBieQorICAgIGRlZmF1bHQgYmVjYXVzZSBpdCBjYW4gYmUgZGFuZ2Vyb3VzLiBXaXRoIGl0IHN3aXRjaGVkIG9uIHlvdSBjYW4gd3JpdGUKKyAgICBwYXNzaW5nIHRlc3RzIGFnYWluc3QgQVBJcyB0aGF0IGRvbid0IGFjdHVhbGx5IGV4aXN0IQorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBgVGVzdENhc2VgIGNsYXNzIGRlY29yYXRvci4gSXQgd29ya3MgYnkKKyAgICBkZWNvcmF0aW5nIGVhY2ggdGVzdCBtZXRob2QgaW4gdGhlIGNsYXNzLiBUaGlzIHJlZHVjZXMgdGhlIGJvaWxlcnBsYXRlCisgICAgY29kZSB3aGVuIHlvdXIgdGVzdCBtZXRob2RzIHNoYXJlIGEgY29tbW9uIHBhdGNoaW5ncyBzZXQuIGBwYXRjaGAgZmluZHMKKyAgICB0ZXN0cyBieSBsb29raW5nIGZvciBtZXRob2QgbmFtZXMgdGhhdCBzdGFydCB3aXRoIGBwYXRjaC5URVNUX1BSRUZJWGAuCisgICAgQnkgZGVmYXVsdCB0aGlzIGlzIGB0ZXN0YCwgd2hpY2ggbWF0Y2hlcyB0aGUgd2F5IGB1bml0dGVzdGAgZmluZHMgdGVzdHMuCisgICAgWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIHByZWZpeCBieSBzZXR0aW5nIGBwYXRjaC5URVNUX1BSRUZJWGAuCisKKyAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgd2l0aCB0aGUgd2l0aCBzdGF0ZW1lbnQuIEhlcmUgdGhlCisgICAgcGF0Y2hpbmcgYXBwbGllcyB0byB0aGUgaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50LiBJZiB5b3UKKyAgICB1c2UgImFzIiB0aGVuIHRoZSBwYXRjaGVkIG9iamVjdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBuYW1lIGFmdGVyIHRoZQorICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgorCisgICAgYHBhdGNoYCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUgcGFzc2VkIHRvCisgICAgdGhlIGBNb2NrYCAob3IgYG5ld19jYWxsYWJsZWApIG9uIGNvbnN0cnVjdGlvbi4KKworICAgIGBwYXRjaC5kaWN0KC4uLilgLCBgcGF0Y2gubXVsdGlwbGUoLi4uKWAgYW5kIGBwYXRjaC5vYmplY3QoLi4uKWAgYXJlCisgICAgYXZhaWxhYmxlIGZvciBhbHRlcm5hdGUgdXNlLWNhc2VzLgorICAgICIiIgorICAgIGdldHRlciwgYXR0cmlidXRlID0gX2dldF90YXJnZXQodGFyZ2V0KQorICAgIHJldHVybiBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKKyAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICkKKworCitjbGFzcyBfcGF0Y2hfZGljdChvYmplY3QpOgorICAgICIiIgorICAgIFBhdGNoIGEgZGljdGlvbmFyeSwgb3IgZGljdGlvbmFyeSBsaWtlIG9iamVjdCwgYW5kIHJlc3RvcmUgdGhlIGRpY3Rpb25hcnkKKyAgICB0byBpdHMgb3JpZ2luYWwgc3RhdGUgYWZ0ZXIgdGhlIHRlc3QuCisKKyAgICBgaW5fZGljdGAgY2FuIGJlIGEgZGljdGlvbmFyeSBvciBhIG1hcHBpbmcgbGlrZSBjb250YWluZXIuIElmIGl0IGlzIGEKKyAgICBtYXBwaW5nIHRoZW4gaXQgbXVzdCBhdCBsZWFzdCBzdXBwb3J0IGdldHRpbmcsIHNldHRpbmcgYW5kIGRlbGV0aW5nIGl0ZW1zCisgICAgcGx1cyBpdGVyYXRpbmcgb3ZlciBrZXlzLgorCisgICAgYGluX2RpY3RgIGNhbiBhbHNvIGJlIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIGRpY3Rpb25hcnksIHdoaWNoCisgICAgd2lsbCB0aGVuIGJlIGZldGNoZWQgYnkgaW1wb3J0aW5nIGl0LgorCisgICAgYHZhbHVlc2AgY2FuIGJlIGEgZGljdGlvbmFyeSBvZiB2YWx1ZXMgdG8gc2V0IGluIHRoZSBkaWN0aW9uYXJ5LiBgdmFsdWVzYAorICAgIGNhbiBhbHNvIGJlIGFuIGl0ZXJhYmxlIG9mIGAoa2V5LCB2YWx1ZSlgIHBhaXJzLgorCisgICAgSWYgYGNsZWFyYCBpcyBUcnVlIHRoZW4gdGhlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSB0aGUgbmV3CisgICAgdmFsdWVzIGFyZSBzZXQuCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGggYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRvIHNldAorICAgIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeTo6CisKKyAgICAgICAgd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIG15bW9kdWxlPU1vY2soKSwgb3RoZXJfbW9kdWxlPU1vY2soKSk6CisgICAgICAgICAgICAuLi4KKworICAgIGBwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgZGVjb3JhdG9yIG9yIGNsYXNzCisgICAgZGVjb3JhdG9yLiBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLmRpY3RgIGhvbm91cnMKKyAgICBgcGF0Y2guVEVTVF9QUkVGSVhgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5fZGljdCwgdmFsdWVzPSgpLCBjbGVhcj1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGluX2RpY3QsIHN0cik6CisgICAgICAgICAgICBpbl9kaWN0ID0gX2ltcG9ydGVyKGluX2RpY3QpCisgICAgICAgIHNlbGYuaW5fZGljdCA9IGluX2RpY3QKKyAgICAgICAgIyBzdXBwb3J0IGFueSBhcmd1bWVudCBzdXBwb3J0ZWQgYnkgZGljdCguLi4pIGNvbnN0cnVjdG9yCisgICAgICAgIHNlbGYudmFsdWVzID0gZGljdCh2YWx1ZXMpCisgICAgICAgIHNlbGYudmFsdWVzLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgorICAgICAgICBzZWxmLl9vcmlnaW5hbCA9IE5vbmUKKworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGYsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfY2xhc3MoZikKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiBfaW5uZXIoKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3cpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX3VucGF0Y2hfZGljdCgpCisKKyAgICAgICAgcmV0dXJuIF9pbm5lcgorCisKKyAgICBkZWYgZGVjb3JhdGVfY2xhc3Moc2VsZiwga2xhc3MpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoa2xhc3MpOgorICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIoa2xhc3MsIGF0dHIpCisgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKHBhdGNoLlRFU1RfUFJFRklYKSBhbmQKKyAgICAgICAgICAgICAgICAgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKSk6CisgICAgICAgICAgICAgICAgZGVjb3JhdG9yID0gX3BhdGNoX2RpY3Qoc2VsZi5pbl9kaWN0LCBzZWxmLnZhbHVlcywgc2VsZi5jbGVhcikKKyAgICAgICAgICAgICAgICBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IoYXR0cl92YWx1ZSkKKyAgICAgICAgICAgICAgICBzZXRhdHRyKGtsYXNzLCBhdHRyLCBkZWNvcmF0ZWQpCisgICAgICAgIHJldHVybiBrbGFzcworCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJQYXRjaCB0aGUgZGljdC4iIiIKKyAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCisKKworICAgIGRlZiBfcGF0Y2hfZGljdChzZWxmKToKKyAgICAgICAgdmFsdWVzID0gc2VsZi52YWx1ZXMKKyAgICAgICAgaW5fZGljdCA9IHNlbGYuaW5fZGljdAorICAgICAgICBjbGVhciA9IHNlbGYuY2xlYXIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGluX2RpY3QuY29weSgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgZGljdCBsaWtlIG9iamVjdCB3aXRoIG5vIGNvcHkgbWV0aG9kCisgICAgICAgICAgICAjIG11c3Qgc3VwcG9ydCBpdGVyYXRpb24gb3ZlciBrZXlzCisgICAgICAgICAgICBvcmlnaW5hbCA9IHt9CisgICAgICAgICAgICBmb3Iga2V5IGluIGluX2RpY3Q6CisgICAgICAgICAgICAgICAgb3JpZ2luYWxba2V5XSA9IGluX2RpY3Rba2V5XQorICAgICAgICBzZWxmLl9vcmlnaW5hbCA9IG9yaWdpbmFsCisKKyAgICAgICAgaWYgY2xlYXI6CisgICAgICAgICAgICBfY2xlYXJfZGljdChpbl9kaWN0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluX2RpY3QudXBkYXRlKHZhbHVlcykKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBkaWN0IGxpa2Ugb2JqZWN0IHdpdGggbm8gdXBkYXRlIG1ldGhvZAorICAgICAgICAgICAgZm9yIGtleSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgaW5fZGljdFtrZXldID0gdmFsdWVzW2tleV0KKworCisgICAgZGVmIF91bnBhdGNoX2RpY3Qoc2VsZik6CisgICAgICAgIGluX2RpY3QgPSBzZWxmLmluX2RpY3QKKyAgICAgICAgb3JpZ2luYWwgPSBzZWxmLl9vcmlnaW5hbAorCisgICAgICAgIF9jbGVhcl9kaWN0KGluX2RpY3QpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5fZGljdC51cGRhdGUob3JpZ2luYWwpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGZvciBrZXkgaW4gb3JpZ2luYWw6CisgICAgICAgICAgICAgICAgaW5fZGljdFtrZXldID0gb3JpZ2luYWxba2V5XQorCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAiIiJVbnBhdGNoIHRoZSBkaWN0LiIiIgorICAgICAgICBzZWxmLl91bnBhdGNoX2RpY3QoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHN0YXJ0ID0gX19lbnRlcl9fCisgICAgc3RvcCA9IF9fZXhpdF9fCisKKworZGVmIF9jbGVhcl9kaWN0KGluX2RpY3QpOgorICAgIHRyeToKKyAgICAgICAgaW5fZGljdC5jbGVhcigpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBrZXlzID0gbGlzdChpbl9kaWN0KQorICAgICAgICBmb3Iga2V5IGluIGtleXM6CisgICAgICAgICAgICBkZWwgaW5fZGljdFtrZXldCisKKworZGVmIF9wYXRjaF9zdG9wYWxsKCk6CisgICAgIiIiU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIiIiCisgICAgZm9yIHBhdGNoIGluIGxpc3QoX3BhdGNoLl9hY3RpdmVfcGF0Y2hlcyk6CisgICAgICAgIHBhdGNoLnN0b3AoKQorCisKK3BhdGNoLm9iamVjdCA9IF9wYXRjaF9vYmplY3QKK3BhdGNoLmRpY3QgPSBfcGF0Y2hfZGljdAorcGF0Y2gubXVsdGlwbGUgPSBfcGF0Y2hfbXVsdGlwbGUKK3BhdGNoLnN0b3BhbGwgPSBfcGF0Y2hfc3RvcGFsbAorcGF0Y2guVEVTVF9QUkVGSVggPSAndGVzdCcKKworbWFnaWNfbWV0aG9kcyA9ICgKKyAgICAibHQgbGUgZ3QgZ2UgZXEgbmUgIgorICAgICJnZXRpdGVtIHNldGl0ZW0gZGVsaXRlbSAiCisgICAgImxlbiBjb250YWlucyBpdGVyICIKKyAgICAiaGFzaCBzdHIgc2l6ZW9mICIKKyAgICAiZW50ZXIgZXhpdCAiCisgICAgImRpdm1vZCBuZWcgcG9zIGFicyBpbnZlcnQgIgorICAgICJjb21wbGV4IGludCBmbG9hdCBpbmRleCAiCisgICAgInRydW5jIGZsb29yIGNlaWwgIgorICAgICJib29sIG5leHQgIgorKQorCitudW1lcmljcyA9ICJhZGQgc3ViIG11bCBkaXYgZmxvb3JkaXYgbW9kIGxzaGlmdCByc2hpZnQgYW5kIHhvciBvciBwb3cgIgoraW5wbGFjZSA9ICcgJy5qb2luKCdpJXMnICUgbiBmb3IgbiBpbiBudW1lcmljcy5zcGxpdCgpKQorcmlnaHQgPSAnICcuam9pbignciVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKKworIyBub3QgaW5jbHVkaW5nIF9fcHJlcGFyZV9fLCBfX2luc3RhbmNlY2hlY2tfXywgX19zdWJjbGFzc2NoZWNrX18KKyMgKGFzIHRoZXkgYXJlIG1ldGFjbGFzcyBtZXRob2RzKQorIyBfX2RlbF9fIGlzIG5vdCBzdXBwb3J0ZWQgYXQgYWxsIGFzIGl0IGNhdXNlcyBwcm9ibGVtcyBpZiBpdCBleGlzdHMKKworX25vbl9kZWZhdWx0cyA9IHNldCgnX18lc19fJyAlIG1ldGhvZCBmb3IgbWV0aG9kIGluIFsKKyAgICAnZ2V0JywgJ3NldCcsICdkZWxldGUnLCAncmV2ZXJzZWQnLCAnbWlzc2luZycsICdyZWR1Y2UnLCAncmVkdWNlX2V4JywKKyAgICAnZ2V0aW5pdGFyZ3MnLCAnZ2V0bmV3YXJncycsICdnZXRzdGF0ZScsICdzZXRzdGF0ZScsICdnZXRmb3JtYXQnLAorICAgICdzZXRmb3JtYXQnLCAncmVwcicsICdkaXInLCAnc3ViY2xhc3NlcycsICdmb3JtYXQnLAorXSkKKworCitkZWYgX2dldF9tZXRob2QobmFtZSwgZnVuYyk6CisgICAgIlR1cm5zIGEgY2FsbGFibGUgb2JqZWN0IChsaWtlIGEgbW9jaykgaW50byBhIHJlYWwgZnVuY3Rpb24iCisgICAgZGVmIG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHJldHVybiBmdW5jKHNlbGYsICphcmdzLCAqKmt3KQorICAgIG1ldGhvZC5fX25hbWVfXyA9IG5hbWUKKyAgICByZXR1cm4gbWV0aG9kCisKKworX21hZ2ljcyA9IHNldCgKKyAgICAnX18lc19fJyAlIG1ldGhvZCBmb3IgbWV0aG9kIGluCisgICAgJyAnLmpvaW4oW21hZ2ljX21ldGhvZHMsIG51bWVyaWNzLCBpbnBsYWNlLCByaWdodF0pLnNwbGl0KCkKKykKKworX2FsbF9tYWdpY3MgPSBfbWFnaWNzIHwgX25vbl9kZWZhdWx0cworCitfdW5zdXBwb3J0ZWRfbWFnaWNzID0gc2V0KFsKKyAgICAnX19nZXRhdHRyX18nLCAnX19zZXRhdHRyX18nLAorICAgICdfX2luaXRfXycsICdfX25ld19fJywgJ19fcHJlcGFyZV9fJworICAgICdfX2luc3RhbmNlY2hlY2tfXycsICdfX3N1YmNsYXNzY2hlY2tfXycsCisgICAgJ19fZGVsX18nCitdKQorCitfY2FsY3VsYXRlX3JldHVybl92YWx1ZSA9IHsKKyAgICAnX19oYXNoX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9faGFzaF9fKHNlbGYpLAorICAgICdfX3N0cl9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX3N0cl9fKHNlbGYpLAorICAgICdfX3NpemVvZl9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX3NpemVvZl9fKHNlbGYpLAorfQorCitfcmV0dXJuX3ZhbHVlcyA9IHsKKyAgICAnX19sdF9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19fZ3RfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2xlX18nOiBOb3RJbXBsZW1lbnRlZCwKKyAgICAnX19nZV9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19faW50X18nOiAxLAorICAgICdfX2NvbnRhaW5zX18nOiBGYWxzZSwKKyAgICAnX19sZW5fXyc6IDAsCisgICAgJ19fZXhpdF9fJzogRmFsc2UsCisgICAgJ19fY29tcGxleF9fJzogMWosCisgICAgJ19fZmxvYXRfXyc6IDEuMCwKKyAgICAnX19ib29sX18nOiBUcnVlLAorICAgICdfX2luZGV4X18nOiAxLAorfQorCisKK2RlZiBfZ2V0X2VxKHNlbGYpOgorICAgIGRlZiBfX2VxX18ob3RoZXIpOgorICAgICAgICByZXRfdmFsID0gc2VsZi5fX2VxX18uX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIHJldF92YWwgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICByZXR1cm4gcmV0X3ZhbAorICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgorICAgIHJldHVybiBfX2VxX18KKworZGVmIF9nZXRfbmUoc2VsZik6CisgICAgZGVmIF9fbmVfXyhvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX19uZV9fLl9tb2NrX3JldHVybl92YWx1ZSBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgIHJldHVybiBERUZBVUxUCisgICAgICAgIHJldHVybiBzZWxmIGlzIG5vdCBvdGhlcgorICAgIHJldHVybiBfX25lX18KKworZGVmIF9nZXRfaXRlcihzZWxmKToKKyAgICBkZWYgX19pdGVyX18oKToKKyAgICAgICAgcmV0X3ZhbCA9IHNlbGYuX19pdGVyX18uX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIHJldF92YWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICAjIGlmIHJldF92YWwgd2FzIGFscmVhZHkgYW4gaXRlcmF0b3IsIHRoZW4gY2FsbGluZyBpdGVyIG9uIGl0IHNob3VsZAorICAgICAgICAjIHJldHVybiB0aGUgaXRlcmF0b3IgdW5jaGFuZ2VkCisgICAgICAgIHJldHVybiBpdGVyKHJldF92YWwpCisgICAgcmV0dXJuIF9faXRlcl9fCisKK19zaWRlX2VmZmVjdF9tZXRob2RzID0geworICAgICdfX2VxX18nOiBfZ2V0X2VxLAorICAgICdfX25lX18nOiBfZ2V0X25lLAorICAgICdfX2l0ZXJfXyc6IF9nZXRfaXRlciwKK30KKworCisKK2RlZiBfc2V0X3JldHVybl92YWx1ZShtb2NrLCBtZXRob2QsIG5hbWUpOgorICAgIGZpeGVkID0gX3JldHVybl92YWx1ZXMuZ2V0KG5hbWUsIERFRkFVTFQpCisgICAgaWYgZml4ZWQgaXMgbm90IERFRkFVTFQ6CisgICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSBmaXhlZAorICAgICAgICByZXR1cm4KKworICAgIHJldHVybl9jYWx1bGF0b3IgPSBfY2FsY3VsYXRlX3JldHVybl92YWx1ZS5nZXQobmFtZSkKKyAgICBpZiByZXR1cm5fY2FsdWxhdG9yIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSByZXR1cm5fY2FsdWxhdG9yKG1vY2spCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgWFhYWCB3aHkgZG8gd2UgcmV0dXJuIEF0dHJpYnV0ZUVycm9yIGhlcmU/CisgICAgICAgICAgICAjICAgICAgc2V0IGl0IGFzIGEgc2lkZV9lZmZlY3QgaW5zdGVhZD8KKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSByZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuCisKKyAgICBzaWRlX2VmZmVjdG9yID0gX3NpZGVfZWZmZWN0X21ldGhvZHMuZ2V0KG5hbWUpCisgICAgaWYgc2lkZV9lZmZlY3RvciBpcyBub3QgTm9uZToKKyAgICAgICAgbWV0aG9kLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3Rvcihtb2NrKQorCisKKworY2xhc3MgTWFnaWNNaXhpbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIF9zYWZlX3N1cGVyKE1hZ2ljTWl4aW4sIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKyAgICBkZWYgX21vY2tfc2V0X21hZ2ljcyhzZWxmKToKKyAgICAgICAgdGhlc2VfbWFnaWNzID0gX21hZ2ljcworCisgICAgICAgIGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRoZXNlX21hZ2ljcyA9IF9tYWdpY3MuaW50ZXJzZWN0aW9uKHNlbGYuX21vY2tfbWV0aG9kcykKKworICAgICAgICAgICAgcmVtb3ZlX21hZ2ljcyA9IHNldCgpCisgICAgICAgICAgICByZW1vdmVfbWFnaWNzID0gX21hZ2ljcyAtIHRoZXNlX21hZ2ljcworCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gcmVtb3ZlX21hZ2ljczoKKyAgICAgICAgICAgICAgICBpZiBlbnRyeSBpbiB0eXBlKHNlbGYpLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB1bm5lZWRlZCBtYWdpYyBtZXRob2RzCisgICAgICAgICAgICAgICAgICAgIGRlbGF0dHIoc2VsZiwgZW50cnkpCisKKyAgICAgICAgIyBkb24ndCBvdmVyd3JpdGUgZXhpc3RpbmcgYXR0cmlidXRlcyBpZiBjYWxsZWQgYSBzZWNvbmQgdGltZQorICAgICAgICB0aGVzZV9tYWdpY3MgPSB0aGVzZV9tYWdpY3MgLSBzZXQodHlwZShzZWxmKS5fX2RpY3RfXykKKworICAgICAgICBfdHlwZSA9IHR5cGUoc2VsZikKKyAgICAgICAgZm9yIGVudHJ5IGluIHRoZXNlX21hZ2ljczoKKyAgICAgICAgICAgIHNldGF0dHIoX3R5cGUsIGVudHJ5LCBNYWdpY1Byb3h5KGVudHJ5LCBzZWxmKSkKKworCisKK2NsYXNzIE5vbkNhbGxhYmxlTWFnaWNNb2NrKE1hZ2ljTWl4aW4sIE5vbkNhbGxhYmxlTW9jayk6CisgICAgIiIiQSB2ZXJzaW9uIG9mIGBNYWdpY01vY2tgIHRoYXQgaXNuJ3QgY2FsbGFibGUuIiIiCisgICAgZGVmIG1vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UpOgorICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gb25seSBhdHRyaWJ1dGVzIG9uIHRoZSBzcGVjIGNhbiBiZSBzZXQuIiIiCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisgICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpCisKKworCitjbGFzcyBNYWdpY01vY2soTWFnaWNNaXhpbiwgTW9jayk6CisgICAgIiIiCisgICAgTWFnaWNNb2NrIGlzIGEgc3ViY2xhc3Mgb2YgTW9jayB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCisgICAgb2YgbW9zdCBvZiB0aGUgbWFnaWMgbWV0aG9kcy4gWW91IGNhbiB1c2UgTWFnaWNNb2NrIHdpdGhvdXQgaGF2aW5nIHRvCisgICAgY29uZmlndXJlIHRoZSBtYWdpYyBtZXRob2RzIHlvdXJzZWxmLgorCisgICAgSWYgeW91IHVzZSB0aGUgYHNwZWNgIG9yIGBzcGVjX3NldGAgYXJndW1lbnRzIHRoZW4gKm9ubHkqIG1hZ2ljCisgICAgbWV0aG9kcyB0aGF0IGV4aXN0IGluIHRoZSBzcGVjIHdpbGwgYmUgY3JlYXRlZC4KKworICAgIEF0dHJpYnV0ZXMgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBgTWFnaWNNb2NrYCB3aWxsIGFsc28gYmUgYE1hZ2ljTW9ja3NgLgorICAgICIiIgorICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKKyAgICAgICAgIiIiQWRkIGEgc3BlYyB0byBhIG1vY2suIGBzcGVjYCBjYW4gZWl0aGVyIGJlIGFuIG9iamVjdCBvciBhCisgICAgICAgIGxpc3Qgb2Ygc3RyaW5ncy4gT25seSBhdHRyaWJ1dGVzIG9uIHRoZSBgc3BlY2AgY2FuIGJlIGZldGNoZWQgYXMKKyAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgorCisgICAgICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LiIiIgorICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKworY2xhc3MgTWFnaWNQcm94eShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXJlbnQpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgbSA9IHNlbGYuY3JlYXRlX21vY2soKQorICAgICAgICByZXR1cm4gbSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgY3JlYXRlX21vY2soc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5uYW1lCisgICAgICAgIHBhcmVudCA9IHNlbGYucGFyZW50CisgICAgICAgIG0gPSBwYXJlbnQuX2dldF9jaGlsZF9tb2NrKG5hbWU9ZW50cnksIF9uZXdfbmFtZT1lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9cGFyZW50KQorICAgICAgICBzZXRhdHRyKHBhcmVudCwgZW50cnksIG0pCisgICAgICAgIF9zZXRfcmV0dXJuX3ZhbHVlKHBhcmVudCwgbSwgZW50cnkpCisgICAgICAgIHJldHVybiBtCisKKyAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIF90eXBlPU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5jcmVhdGVfbW9jaygpCisKKworCitjbGFzcyBfQU5ZKG9iamVjdCk6CisgICAgIkEgaGVscGVyIG9iamVjdCB0aGF0IGNvbXBhcmVzIGVxdWFsIHRvIGV2ZXJ5dGhpbmcuIgorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPEFOWT4nCisKK0FOWSA9IF9BTlkoKQorCisKKworZGVmIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKToKKyAgICBtZXNzYWdlID0gJyVzKCUlcyknICUgbmFtZQorICAgIGZvcm1hdHRlZF9hcmdzID0gJycKKyAgICBhcmdzX3N0cmluZyA9ICcsICcuam9pbihbcmVwcihhcmcpIGZvciBhcmcgaW4gYXJnc10pCisgICAga3dhcmdzX3N0cmluZyA9ICcsICcuam9pbihbCisgICAgICAgICclcz0lcicgJSAoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCkKKyAgICBdKQorICAgIGlmIGFyZ3Nfc3RyaW5nOgorICAgICAgICBmb3JtYXR0ZWRfYXJncyA9IGFyZ3Nfc3RyaW5nCisgICAgaWYga3dhcmdzX3N0cmluZzoKKyAgICAgICAgaWYgZm9ybWF0dGVkX2FyZ3M6CisgICAgICAgICAgICBmb3JtYXR0ZWRfYXJncyArPSAnLCAnCisgICAgICAgIGZvcm1hdHRlZF9hcmdzICs9IGt3YXJnc19zdHJpbmcKKworICAgIHJldHVybiBtZXNzYWdlICUgZm9ybWF0dGVkX2FyZ3MKKworCisKK2NsYXNzIF9DYWxsKHR1cGxlKToKKyAgICAiIiIKKyAgICBBIHR1cGxlIGZvciBob2xkaW5nIHRoZSByZXN1bHRzIG9mIGEgY2FsbCB0byBhIG1vY2ssIGVpdGhlciBpbiB0aGUgZm9ybQorICAgIGAoYXJncywga3dhcmdzKWAgb3IgYChuYW1lLCBhcmdzLCBrd2FyZ3MpYC4KKworICAgIElmIGFyZ3Mgb3Iga3dhcmdzIGFyZSBlbXB0eSB0aGVuIGEgY2FsbCB0dXBsZSB3aWxsIGNvbXBhcmUgZXF1YWwgdG8KKyAgICBhIHR1cGxlIHdpdGhvdXQgdGhvc2UgdmFsdWVzLiBUaGlzIG1ha2VzIGNvbXBhcmlzb25zIGxlc3MgdmVyYm9zZTo6CisKKyAgICAgICAgX0NhbGwoKCduYW1lJywgKCksIHt9KSkgPT0gKCduYW1lJywpCisgICAgICAgIF9DYWxsKCgnbmFtZScsICgxLCksIHt9KSkgPT0gKCduYW1lJywgKDEsKSkKKyAgICAgICAgX0NhbGwoKCgpLCB7J2EnOiAnYid9KSkgPT0gKHsnYSc6ICdiJ30sKQorCisgICAgVGhlIGBfQ2FsbGAgb2JqZWN0IHByb3ZpZGVzIGEgdXNlZnVsIHNob3J0Y3V0IGZvciBjb21wYXJpbmcgd2l0aCBjYWxsOjoKKworICAgICAgICBfQ2FsbCgoKDEsIDIpLCB7J2EnOiAzfSkpID09IGNhbGwoMSwgMiwgYT0zKQorICAgICAgICBfQ2FsbCgoJ2ZvbycsICgxLCAyKSwgeydhJzogM30pKSA9PSBjYWxsLmZvbygxLCAyLCBhPTMpCisKKyAgICBJZiB0aGUgX0NhbGwgaGFzIG5vIG5hbWUgdGhlbiBpdCB3aWxsIG1hdGNoIGFueSBuYW1lLgorICAgICIiIgorICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9KCksIG5hbWU9Tm9uZSwgcGFyZW50PU5vbmUsIHR3bz1GYWxzZSwKKyAgICAgICAgICAgICAgICBmcm9tX2thbGw9VHJ1ZSk6CisgICAgICAgIG5hbWUgPSAnJworICAgICAgICBhcmdzID0gKCkKKyAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAgX2xlbiA9IGxlbih2YWx1ZSkKKyAgICAgICAgaWYgX2xlbiA9PSAzOgorICAgICAgICAgICAgbmFtZSwgYXJncywga3dhcmdzID0gdmFsdWUKKyAgICAgICAgZWxpZiBfbGVuID09IDI6CisgICAgICAgICAgICBmaXJzdCwgc2Vjb25kID0gdmFsdWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlyc3QsIHN0cik6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZpcnN0CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWNvbmQsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9IHNlY29uZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IHNlY29uZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBmaXJzdCwgc2Vjb25kCisgICAgICAgIGVsaWYgX2xlbiA9PSAxOgorICAgICAgICAgICAgdmFsdWUsID0gdmFsdWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAga3dhcmdzID0gdmFsdWUKKworICAgICAgICBpZiB0d286CisgICAgICAgICAgICByZXR1cm4gdHVwbGUuX19uZXdfXyhjbHMsIChhcmdzLCBrd2FyZ3MpKQorCisgICAgICAgIHJldHVybiB0dXBsZS5fX25ld19fKGNscywgKG5hbWUsIGFyZ3MsIGt3YXJncykpCisKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0oKSwgbmFtZT1Ob25lLCBwYXJlbnQ9Tm9uZSwgdHdvPUZhbHNlLAorICAgICAgICAgICAgICAgICBmcm9tX2thbGw9VHJ1ZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5mcm9tX2thbGwgPSBmcm9tX2thbGwKKworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG90aGVyIGlzIEFOWToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxlbl9vdGhlciA9IGxlbihvdGhlcikKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlbGZfbmFtZSA9ICcnCisgICAgICAgIGlmIGxlbihzZWxmKSA9PSAyOgorICAgICAgICAgICAgc2VsZl9hcmdzLCBzZWxmX2t3YXJncyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGZfbmFtZSwgc2VsZl9hcmdzLCBzZWxmX2t3YXJncyA9IHNlbGYKKworICAgICAgICBvdGhlcl9uYW1lID0gJycKKyAgICAgICAgaWYgbGVuX290aGVyID09IDA6CisgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwge30KKyAgICAgICAgZWxpZiBsZW5fb3RoZXIgPT0gMzoKKyAgICAgICAgICAgIG90aGVyX25hbWUsIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IG90aGVyCisgICAgICAgIGVsaWYgbGVuX290aGVyID09IDE6CisgICAgICAgICAgICB2YWx1ZSwgPSBvdGhlcgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSB2YWx1ZQorICAgICAgICAgICAgICAgIG90aGVyX2t3YXJncyA9IHt9CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgb3RoZXJfbmFtZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gKCksIHt9CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSAoKQorICAgICAgICAgICAgICAgIG90aGVyX2t3YXJncyA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGxlbiAyCisgICAgICAgICAgICAjIGNvdWxkIGJlIChuYW1lLCBhcmdzKSBvciAobmFtZSwga3dhcmdzKSBvciAoYXJncywga3dhcmdzKQorICAgICAgICAgICAgZmlyc3QsIHNlY29uZCA9IG90aGVyCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpcnN0LCBzdHIpOgorICAgICAgICAgICAgICAgIG90aGVyX25hbWUgPSBmaXJzdAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2Vjb25kLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IHNlY29uZCwge30KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwgc2Vjb25kCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IGZpcnN0LCBzZWNvbmQKKworICAgICAgICBpZiBzZWxmX25hbWUgYW5kIG90aGVyX25hbWUgIT0gc2VsZl9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyB0aGlzIG9yZGVyIGlzIGltcG9ydGFudCBmb3IgQU5ZIHRvIHdvcmshCisgICAgICAgIHJldHVybiAob3RoZXJfYXJncywgb3RoZXJfa3dhcmdzKSA9PSAoc2VsZl9hcmdzLCBzZWxmX2t3YXJncykKKworCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfQ2FsbCgoJycsIGFyZ3MsIGt3YXJncyksIG5hbWU9JygpJykKKworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJygpJworICAgICAgICByZXR1cm4gX0NhbGwoKHNlbGYubmFtZSwgYXJncywga3dhcmdzKSwgbmFtZT1uYW1lLCBwYXJlbnQ9c2VsZikKKworCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfQ2FsbChuYW1lPWF0dHIsIGZyb21fa2FsbD1GYWxzZSkKKyAgICAgICAgbmFtZSA9ICclcy4lcycgJSAoc2VsZi5uYW1lLCBhdHRyKQorICAgICAgICByZXR1cm4gX0NhbGwobmFtZT1uYW1lLCBwYXJlbnQ9c2VsZiwgZnJvbV9rYWxsPUZhbHNlKQorCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLmZyb21fa2FsbDoKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgb3IgJ2NhbGwnCisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJygpJyk6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsJXMnICUgbmFtZQorICAgICAgICAgICAgcmV0dXJuIG5hbWUKKworICAgICAgICBpZiBsZW4oc2VsZikgPT0gMjoKKyAgICAgICAgICAgIG5hbWUgPSAnY2FsbCcKKyAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUsIGFyZ3MsIGt3YXJncyA9IHNlbGYKKyAgICAgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbCcKKyAgICAgICAgICAgIGVsaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnKCknKToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwuJXMnICUgbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwlcycgJSBuYW1lCisgICAgICAgIHJldHVybiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncykKKworCisgICAgZGVmIGNhbGxfbGlzdChzZWxmKToKKyAgICAgICAgIiIiRm9yIGEgY2FsbCBvYmplY3QgdGhhdCByZXByZXNlbnRzIG11bHRpcGxlIGNhbGxzLCBgY2FsbF9saXN0YAorICAgICAgICByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGludGVybWVkaWF0ZSBjYWxscyBhcyB3ZWxsIGFzIHRoZQorICAgICAgICBmaW5hbCBjYWxsLiIiIgorICAgICAgICB2YWxzID0gW10KKyAgICAgICAgdGhpbmcgPSBzZWxmCisgICAgICAgIHdoaWxlIHRoaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgdGhpbmcuZnJvbV9rYWxsOgorICAgICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHRoaW5nKQorICAgICAgICAgICAgdGhpbmcgPSB0aGluZy5wYXJlbnQKKyAgICAgICAgcmV0dXJuIF9DYWxsTGlzdChyZXZlcnNlZCh2YWxzKSkKKworCitjYWxsID0gX0NhbGwoZnJvbV9rYWxsPUZhbHNlKQorCisKKworZGVmIGNyZWF0ZV9hdXRvc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSwgaW5zdGFuY2U9RmFsc2UsIF9wYXJlbnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgX25hbWU9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIkNyZWF0ZSBhIG1vY2sgb2JqZWN0IHVzaW5nIGFub3RoZXIgb2JqZWN0IGFzIGEgc3BlYy4gQXR0cmlidXRlcyBvbiB0aGUKKyAgICBtb2NrIHdpbGwgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvbiB0aGUgYHNwZWNgIG9iamVjdCBhcyB0aGVpcgorICAgIHNwZWMuCisKKyAgICBGdW5jdGlvbnMgb3IgbWV0aG9kcyBiZWluZyBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkCisgICAgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBzaWduYXR1cmUuCisKKyAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBhdHRlbXB0aW5nIHRvIHNldCBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3QKKyAgICBvbiB0aGUgc3BlYyBvYmplY3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgSWYgYSBjbGFzcyBpcyB1c2VkIGFzIGEgc3BlYyB0aGVuIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIG1vY2sgKHRoZQorICAgIGluc3RhbmNlIG9mIHRoZSBjbGFzcykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMuIFlvdSBjYW4gdXNlIGEgY2xhc3MgYXMgdGhlCisgICAgc3BlYyBmb3IgYW4gaW5zdGFuY2Ugb2JqZWN0IGJ5IHBhc3NpbmcgYGluc3RhbmNlPVRydWVgLiBUaGUgcmV0dXJuZWQgbW9jaworICAgIHdpbGwgb25seSBiZSBjYWxsYWJsZSBpZiBpbnN0YW5jZXMgb2YgdGhlIG1vY2sgYXJlIGNhbGxhYmxlLgorCisgICAgYGNyZWF0ZV9hdXRvc3BlY2AgYWxzbyB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvCisgICAgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBjcmVhdGVkIG1vY2suIiIiCisgICAgaWYgX2lzX2xpc3Qoc3BlYyk6CisgICAgICAgICMgY2FuJ3QgcGFzcyBhIGxpc3QgaW5zdGFuY2UgdG8gdGhlIG1vY2sgY29uc3RydWN0b3IgYXMgaXQgd2lsbCBiZQorICAgICAgICAjIGludGVycHJldGVkIGFzIGEgbGlzdCBvZiBzdHJpbmdzCisgICAgICAgIHNwZWMgPSB0eXBlKHNwZWMpCisKKyAgICBpc190eXBlID0gaXNpbnN0YW5jZShzcGVjLCB0eXBlKQorCisgICAgX2t3YXJncyA9IHsnc3BlYyc6IHNwZWN9CisgICAgaWYgc3BlY19zZXQ6CisgICAgICAgIF9rd2FyZ3MgPSB7J3NwZWNfc2V0Jzogc3BlY30KKyAgICBlbGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgIyBOb25lIHdlIG1vY2sgd2l0aCBhIG5vcm1hbCBtb2NrIHdpdGhvdXQgYSBzcGVjCisgICAgICAgIF9rd2FyZ3MgPSB7fQorCisgICAgX2t3YXJncy51cGRhdGUoa3dhcmdzKQorCisgICAgS2xhc3MgPSBNYWdpY01vY2sKKyAgICBpZiB0eXBlKHNwZWMpIGluIERlc2NyaXB0b3JUeXBlczoKKyAgICAgICAgIyBkZXNjcmlwdG9ycyBkb24ndCBoYXZlIGEgc3BlYworICAgICAgICAjIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHR5cGUgdGhleSByZXR1cm4KKyAgICAgICAgX2t3YXJncyA9IHt9CisgICAgZWxpZiBub3QgX2NhbGxhYmxlKHNwZWMpOgorICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgZWxpZiBpc190eXBlIGFuZCBpbnN0YW5jZSBhbmQgbm90IF9pbnN0YW5jZV9jYWxsYWJsZShzcGVjKToKKyAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworCisgICAgX25ld19uYW1lID0gX25hbWUKKyAgICBpZiBfcGFyZW50IGlzIE5vbmU6CisgICAgICAgICMgZm9yIGEgdG9wIGxldmVsIG9iamVjdCBubyBfbmV3X25hbWUgc2hvdWxkIGJlIHNldAorICAgICAgICBfbmV3X25hbWUgPSAnJworCisgICAgbW9jayA9IEtsYXNzKHBhcmVudD1fcGFyZW50LCBfbmV3X3BhcmVudD1fcGFyZW50LCBfbmV3X25hbWU9X25ld19uYW1lLAorICAgICAgICAgICAgICAgICBuYW1lPV9uYW1lLCAqKl9rd2FyZ3MpCisKKyAgICBpZiBpc2luc3RhbmNlKHNwZWMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAjIHNob3VsZCBvbmx5IGhhcHBlbiBhdCB0aGUgdG9wIGxldmVsIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAgICAgIyByZWN1cnNlIGZvciBmdW5jdGlvbnMKKyAgICAgICAgbW9jayA9IF9zZXRfc2lnbmF0dXJlKG1vY2ssIHNwZWMpCisgICAgZWxzZToKKyAgICAgICAgX2NoZWNrX3NpZ25hdHVyZShzcGVjLCBtb2NrLCBpc190eXBlLCBpbnN0YW5jZSkKKworICAgIGlmIF9wYXJlbnQgaXMgbm90IE5vbmUgYW5kIG5vdCBpbnN0YW5jZToKKyAgICAgICAgX3BhcmVudC5fbW9ja19jaGlsZHJlbltfbmFtZV0gPSBtb2NrCisKKyAgICBpZiBpc190eXBlIGFuZCBub3QgaW5zdGFuY2UgYW5kICdyZXR1cm5fdmFsdWUnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0LCBpbnN0YW5jZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZT0nKCknLCBfcGFyZW50PW1vY2spCisKKyAgICBmb3IgZW50cnkgaW4gZGlyKHNwZWMpOgorICAgICAgICBpZiBfaXNfbWFnaWMoZW50cnkpOgorICAgICAgICAgICAgIyBNYWdpY01vY2sgYWxyZWFkeSBkb2VzIHRoZSB1c2VmdWwgbWFnaWMgbWV0aG9kcyBmb3IgdXMKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBYWFhYIGRvIHdlIG5lZWQgYSBiZXR0ZXIgd2F5IG9mIGdldHRpbmcgYXR0cmlidXRlcyB3aXRob3V0CisgICAgICAgICMgdHJpZ2dlcmluZyBjb2RlIGV4ZWN1dGlvbiAoPykgUHJvYmFibHkgbm90IC0gd2UgbmVlZCB0aGUgYWN0dWFsCisgICAgICAgICMgb2JqZWN0IHRvIG1vY2sgaXQgc28gd2Ugd291bGQgcmF0aGVyIHRyaWdnZXIgYSBwcm9wZXJ0eSB0aGFuIG1vY2sKKyAgICAgICAgIyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvci4gTGlrZXdpc2Ugd2Ugd2FudCB0byBtb2NrIG91dCBkeW5hbWljYWxseQorICAgICAgICAjIHByb3ZpZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgICMgWFhYWCB3aGF0IGFib3V0IGF0dHJpYnV0ZXMgdGhhdCByYWlzZSBleGNlcHRpb25zIG90aGVyIHRoYW4KKyAgICAgICAgIyBBdHRyaWJ1dGVFcnJvciBvbiBiZWluZyBmZXRjaGVkPworICAgICAgICAjIHdlIGNvdWxkIGJlIHJlc2lsaWVudCBhZ2FpbnN0IGl0LCBvciBjYXRjaCBhbmQgcHJvcGFnYXRlIHRoZQorICAgICAgICAjIGV4Y2VwdGlvbiB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBtb2NrCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdpbmFsID0gZ2V0YXR0cihzcGVjLCBlbnRyeSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBrd2FyZ3MgPSB7J3NwZWMnOiBvcmlnaW5hbH0KKyAgICAgICAgaWYgc3BlY19zZXQ6CisgICAgICAgICAgICBrd2FyZ3MgPSB7J3NwZWNfc2V0Jzogb3JpZ2luYWx9CisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3JpZ2luYWwsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgbmV3ID0gX1NwZWNTdGF0ZShvcmlnaW5hbCwgc3BlY19zZXQsIG1vY2ssIGVudHJ5LCBpbnN0YW5jZSkKKyAgICAgICAgICAgIG1vY2suX21vY2tfY2hpbGRyZW5bZW50cnldID0gbmV3CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXJlbnQgPSBtb2NrCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNwZWMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgICAgIHBhcmVudCA9IG1vY2subW9jaworCisgICAgICAgICAgICBuZXcgPSBNYWdpY01vY2socGFyZW50PXBhcmVudCwgbmFtZT1lbnRyeSwgX25ld19uYW1lPWVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXBhcmVudCwgKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrLl9tb2NrX2NoaWxkcmVuW2VudHJ5XSA9IG5ldworICAgICAgICAgICAgc2tpcGZpcnN0ID0gX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSkKKyAgICAgICAgICAgIF9jaGVja19zaWduYXR1cmUob3JpZ2luYWwsIG5ldywgc2tpcGZpcnN0PXNraXBmaXJzdCkKKworICAgICAgICAjIHNvIGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggX3NldF9zaWduYXR1cmUgYmVjb21lIGluc3RhbmNlIGF0dHJpYnV0ZXMsCisgICAgICAgICMgKnBsdXMqIHRoZWlyIHVuZGVybHlpbmcgbW9jayBleGlzdHMgaW4gX21vY2tfY2hpbGRyZW4gb2YgdGhlIHBhcmVudAorICAgICAgICAjIG1vY2suIEFkZGluZyB0byBfbW9ja19jaGlsZHJlbiBtYXkgYmUgdW5uZWNlc3Nhcnkgd2hlcmUgd2UgYXJlIGFsc28KKyAgICAgICAgIyBzZXR0aW5nIGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZT8KKyAgICAgICAgaWYgaXNpbnN0YW5jZShuZXcsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgc2V0YXR0cihtb2NrLCBlbnRyeSwgbmV3KQorCisgICAgcmV0dXJuIG1vY2sKKworCitkZWYgX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSk6CisgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3BlYywgdHlwZSk6CisgICAgICAgIGlmIGVudHJ5IGluIGdldGF0dHIoc3BlYywgJ19fZGljdF9fJywge30pOgorICAgICAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGUgLSBzaG91bGRuJ3Qgc2tpcAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHNwZWMgPSBzcGVjLl9fY2xhc3NfXworCisgICAgZm9yIGtsYXNzIGluIHNwZWMuX19tcm9fXzoKKyAgICAgICAgcmVzdWx0ID0ga2xhc3MuX19kaWN0X18uZ2V0KGVudHJ5LCBERUZBVUxUKQorICAgICAgICBpZiByZXN1bHQgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCAoc3RhdGljbWV0aG9kLCBjbGFzc21ldGhvZCkpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBpc190eXBlCisKKyAgICAjIHNob3VsZG4ndCBnZXQgaGVyZSB1bmxlc3MgZnVuY3Rpb24gaXMgYSBkeW5hbWljYWxseSBwcm92aWRlZCBhdHRyaWJ1dGUKKyAgICAjIFhYWFggdW50ZXN0ZWQgYmVoYXZpb3VyCisgICAgcmV0dXJuIGlzX3R5cGUKKworCitkZWYgX2dldF9jbGFzcyhvYmopOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIG9iai5fX2NsYXNzX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICMgaXQgaXMgcG9zc2libGUgZm9yIG9iamVjdHMgdG8gaGF2ZSBubyBfX2NsYXNzX18KKyAgICAgICAgcmV0dXJuIHR5cGUob2JqKQorCisKK2NsYXNzIF9TcGVjU3RhdGUob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSwgcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgIG5hbWU9Tm9uZSwgaWRzPU5vbmUsIGluc3RhbmNlPUZhbHNlKToKKyAgICAgICAgc2VsZi5zcGVjID0gc3BlYworICAgICAgICBzZWxmLmlkcyA9IGlkcworICAgICAgICBzZWxmLnNwZWNfc2V0ID0gc3BlY19zZXQKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IGluc3RhbmNlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworCitGdW5jdGlvblR5cGVzID0gKAorICAgICMgcHl0aG9uIGZ1bmN0aW9uCisgICAgdHlwZShjcmVhdGVfYXV0b3NwZWMpLAorICAgICMgaW5zdGFuY2UgbWV0aG9kCisgICAgdHlwZShBTlkuX19lcV9fKSwKKykKKworCitmaWxlX3NwZWMgPSBOb25lCisKKworZGVmIG1vY2tfb3Blbihtb2NrPU5vbmUsIHJlYWRfZGF0YT0nJyk6CisgICAgIiIiCisgICAgQSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbW9jayB0byByZXBsYWNlIHRoZSB1c2Ugb2YgYG9wZW5gLiBJdCB3b3JrcworICAgIGZvciBgb3BlbmAgY2FsbGVkIGRpcmVjdGx5IG9yIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBUaGUgYG1vY2tgIGFyZ3VtZW50IGlzIHRoZSBtb2NrIG9iamVjdCB0byBjb25maWd1cmUuIElmIGBOb25lYCAodGhlCisgICAgZGVmYXVsdCkgdGhlbiBhIGBNYWdpY01vY2tgIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LCB3aXRoIHRoZSBBUEkgbGltaXRlZAorICAgIHRvIG1ldGhvZHMgb3IgYXR0cmlidXRlcyBhdmFpbGFibGUgb24gc3RhbmRhcmQgZmlsZSBoYW5kbGVzLgorCisgICAgYHJlYWRfZGF0YWAgaXMgYSBzdHJpbmcgZm9yIHRoZSBgcmVhZGAgbWV0aG9kIG9mIHRoZSBmaWxlIGhhbmRsZSB0byByZXR1cm4uCisgICAgVGhpcyBpcyBhbiBlbXB0eSBzdHJpbmcgYnkgZGVmYXVsdC4KKyAgICAiIiIKKyAgICBnbG9iYWwgZmlsZV9zcGVjCisgICAgaWYgZmlsZV9zcGVjIGlzIE5vbmU6CisgICAgICAgIGltcG9ydCBfaW8KKyAgICAgICAgZmlsZV9zcGVjID0gbGlzdChzZXQoZGlyKF9pby5UZXh0SU9XcmFwcGVyKSkudW5pb24oc2V0KGRpcihfaW8uQnl0ZXNJTykpKSkKKworICAgIGlmIG1vY2sgaXMgTm9uZToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhuYW1lPSdvcGVuJywgc3BlYz1vcGVuKQorCisgICAgaGFuZGxlID0gTWFnaWNNb2NrKHNwZWM9ZmlsZV9zcGVjKQorICAgIGhhbmRsZS53cml0ZS5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgaGFuZGxlLl9fZW50ZXJfXy5yZXR1cm5fdmFsdWUgPSBoYW5kbGUKKyAgICBoYW5kbGUucmVhZC5yZXR1cm5fdmFsdWUgPSByZWFkX2RhdGEKKworICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gaGFuZGxlCisgICAgcmV0dXJuIG1vY2sKKworCitjbGFzcyBQcm9wZXJ0eU1vY2soTW9jayk6CisgICAgIiIiCisgICAgQSBtb2NrIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9wZXJ0eSwgb3Igb3RoZXIgZGVzY3JpcHRvciwgb24gYSBjbGFzcy4KKyAgICBgUHJvcGVydHlNb2NrYCBwcm92aWRlcyBgX19nZXRfX2AgYW5kIGBfX3NldF9fYCBtZXRob2RzIHNvIHlvdSBjYW4gc3BlY2lmeQorICAgIGEgcmV0dXJuIHZhbHVlIHdoZW4gaXQgaXMgZmV0Y2hlZC4KKworICAgIEZldGNoaW5nIGEgYFByb3BlcnR5TW9ja2AgaW5zdGFuY2UgZnJvbSBhbiBvYmplY3QgY2FsbHMgdGhlIG1vY2ssIHdpdGgKKyAgICBubyBhcmdzLiBTZXR0aW5nIGl0IGNhbGxzIHRoZSBtb2NrIHdpdGggdGhlIHZhbHVlIGJlaW5nIHNldC4KKyAgICAiIiIKKyAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIE1hZ2ljTW9jaygqKmt3YXJncykKKworICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgb2JqX3R5cGUpOgorICAgICAgICByZXR1cm4gc2VsZigpCisgICAgZGVmIF9fc2V0X18oc2VsZiwgb2JqLCB2YWwpOgorICAgICAgICBzZWxmKHZhbCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkgYi9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CmluZGV4IDQ0YmYxODYuLjk3ZTU0MjYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3QgcmVzdWx0IG9iamVjdCIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCBpbwogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQppbmRleCA5OWI3MzBiLi5jZGFlOGE3IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQpAQCAtMTQsNiArMTQsNyBAQAogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQogICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKSkKKyAgICBzdWl0ZS5hZGRUZXN0KGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3QudGVzdC50ZXN0bW9jaycpKQogICAgIHJldHVybiBzdWl0ZQogCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKaW5kZXggZDBiZTE4ZC4uNWNiZmI1MyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKQEAgLTEwLDcgKzEwLDYgQEAKIFNlZSAjMTA1MzUuCiAiIiIKIAotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CmluZGV4IGExZDIwZWIuLmQ0M2ZlNWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcHJvZHVjdAogCiAKIGNsYXNzIFRlc3RfQXNzZXJ0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDUsNiArMTQ2LDE0IEBACiAgICAgICAgIHNlbGYudGVzdGFibGVUcnVlLl9mb3JtYXRNZXNzYWdlKG9uZSwgJ1x1RkZGRCcpCiAKICAgICBkZWYgYXNzZXJ0TWVzc2FnZXMoc2VsZiwgbWV0aG9kTmFtZSwgYXJncywgZXJyb3JzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgbWV0aG9kTmFtZSgqYXJncykgcmFpc2VzIHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2VzLgorICAgICAgICBlcnJvcnMgc2hvdWxkIGJlIGEgbGlzdCBvZiA0IHJlZ2V4IHRoYXQgbWF0Y2ggdGhlIGVycm9yIHdoZW46CisgICAgICAgICAgMSkgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICAyKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAgIDMpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICA0KSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICIiIgogICAgICAgICBkZWYgZ2V0TWV0aG9kKGkpOgogICAgICAgICAgICAgdXNlVGVzdGFibGVGYWxzZSAgPSBpIDwgMgogICAgICAgICAgICAgaWYgdXNlVGVzdGFibGVGYWxzZToKQEAgLTI4NCwzICsyOTMsNjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lJCIsICJeb29wcyQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXnVuZXhwZWN0ZWRseSBpZGVudGljYWw6IE5vbmUkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lIDogb29wcyQiXSkKKworCisgICAgZGVmIGFzc2VydE1lc3NhZ2VzQ00oc2VsZiwgbWV0aG9kTmFtZSwgYXJncywgZnVuYywgZXJyb3JzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZXMgYXJlIHJhaXNlZCB3aGlsZSBleGVjdXRpbmc6CisgICAgICAgICAgd2l0aCBtZXRob2QoKmFyZ3MpOgorICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgKmVycm9ycyogc2hvdWxkIGJlIGEgbGlzdCBvZiA0IHJlZ2V4IHRoYXQgbWF0Y2ggdGhlIGVycm9yIHdoZW46CisgICAgICAgICAgMSkgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICAyKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAgIDMpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICA0KSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICIiIgorICAgICAgICBwID0gcHJvZHVjdCgoc2VsZi50ZXN0YWJsZUZhbHNlLCBzZWxmLnRlc3RhYmxlVHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICh7fSwgeyJtc2ciOiAib29wcyJ9KSkKKyAgICAgICAgZm9yIChjbHMsIGt3YXJncyksIGVyciBpbiB6aXAocCwgZXJyb3JzKToKKyAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoY2xzLCBtZXRob2ROYW1lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGNscy5mYWlsdXJlRXhjZXB0aW9uLCBlcnIpOgorICAgICAgICAgICAgICAgIHdpdGggbWV0aG9kKCphcmdzLCAqKmt3YXJncykgYXMgY206CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorCisgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0UmFpc2VzJywgKFR5cGVFcnJvciwpLCBsYW1iZGE6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlR5cGVFcnJvciBub3QgcmFpc2VkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCA6IG9vcHMkJ10pCisKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlc1JlZ2V4KHNlbGYpOgorICAgICAgICAjIHRlc3QgZXJyb3Igbm90IHJhaXNlZAorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFJhaXNlc1JlZ2V4JywgKFR5cGVFcnJvciwgJ3VudXNlZCByZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVHlwZUVycm9yIG5vdCByYWlzZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQgOiBvb3BzJCddKQorICAgICAgICAjIHRlc3QgZXJyb3IgcmFpc2VkIGJ1dCB3aXRoIHdyb25nIG1lc3NhZ2UKKyAgICAgICAgZGVmIHJhaXNlX3dyb25nX21lc3NhZ2UoKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRSYWlzZXNSZWdleCcsIChUeXBlRXJyb3IsICdyZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfd3JvbmdfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iIDogb29wcyQnXSkKKworICAgIGRlZiB0ZXN0QXNzZXJ0V2FybnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0V2FybnMnLCAoVXNlcldhcm5pbmcsKSwgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQgOiBvb3BzJCddKQorCisgICAgZGVmIHRlc3RBc3NlcnRXYXJuc1JlZ2V4KHNlbGYpOgorICAgICAgICAjIHRlc3QgZXJyb3Igbm90IHJhaXNlZAorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFdhcm5zUmVnZXgnLCAoVXNlcldhcm5pbmcsICd1bnVzZWQgcmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkIDogb29wcyQnXSkKKyAgICAgICAgIyB0ZXN0IHdhcm5pbmcgcmFpc2VkIGJ1dCB3aXRoIHdyb25nIG1lc3NhZ2UKKyAgICAgICAgZGVmIHJhaXNlX3dyb25nX21lc3NhZ2UoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0V2FybnNSZWdleCcsIChVc2VyV2FybmluZywgJ3JlZ2V4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV93cm9uZ19tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIgOiBvb3BzJCddKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CmluZGV4IGM3NGE1MzkuLmZkYjJlNzggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKQEAgLTQsNiArNCw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBpbnNwZWN0CiAKIGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKQEAgLTM4NiwyNyArMzg3LDYyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShGb28oKS5pZCgpLCBzdHIpCiAKIAotICAgICMgIklmIHJlc3VsdCBpcyBvbWl0dGVkIG9yIE5vbmUsIGEgdGVtcG9yYXJ5IHJlc3VsdCBvYmplY3QgaXMgY3JlYXRlZAotICAgICMgYW5kIHVzZWQsIGJ1dCBpcyBub3QgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGNhbGxlci4gQXMgVGVzdENhc2Ugb3ducyB0aGUKKyAgICAjICJJZiByZXN1bHQgaXMgb21pdHRlZCBvciBOb25lLCBhIHRlbXBvcmFyeSByZXN1bHQgb2JqZWN0IGlzIGNyZWF0ZWQsCisgICAgIyB1c2VkLCBhbmQgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGNhbGxlci4gQXMgVGVzdENhc2Ugb3ducyB0aGUKICAgICAjIHRlbXBvcmFyeSByZXN1bHQgc3RhcnRUZXN0UnVuIGFuZCBzdG9wVGVzdFJ1biBhcmUgY2FsbGVkLgogCiAgICAgZGVmIHRlc3RfcnVuX191c2VzX2RlZmF1bHRUZXN0UmVzdWx0KHNlbGYpOgogICAgICAgICBldmVudHMgPSBbXQorICAgICAgICBkZWZhdWx0UmVzdWx0ID0gTG9nZ2luZ1Jlc3VsdChldmVudHMpCiAKICAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgogICAgICAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoJ3Rlc3QnKQogCiAgICAgICAgICAgICBkZWYgZGVmYXVsdFRlc3RSZXN1bHQoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExvZ2dpbmdSZXN1bHQoZXZlbnRzKQorICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0UmVzdWx0CiAKICAgICAgICAgIyBNYWtlIHJ1bigpIGZpbmQgYSByZXN1bHQgb2JqZWN0IG9uIGl0cyBvd24KLSAgICAgICAgRm9vKCd0ZXN0JykucnVuKCkKKyAgICAgICAgcmVzdWx0ID0gRm9vKCd0ZXN0JykucnVuKCkKIAorICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdCwgZGVmYXVsdFJlc3VsdCkKICAgICAgICAgZXhwZWN0ZWQgPSBbJ3N0YXJ0VGVzdFJ1bicsICdzdGFydFRlc3QnLCAndGVzdCcsICdhZGRTdWNjZXNzJywKICAgICAgICAgICAgICdzdG9wVGVzdCcsICdzdG9wVGVzdFJ1biddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzLCBleHBlY3RlZCkKIAorCisgICAgIyAiVGhlIHJlc3VsdCBvYmplY3QgaXMgcmV0dXJuZWQgdG8gcnVuJ3MgY2FsbGVyIgorICAgIGRlZiB0ZXN0X3J1bl9fcmV0dXJuc19naXZlbl9yZXN1bHQoc2VsZik6CisKKyAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKworICAgICAgICByZXR2YWwgPSBGb28oJ3Rlc3QnKS5ydW4ocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgcmVzdWx0KQorCisKKyAgICAjICJUaGUgc2FtZSBlZmZlY3QgW2FzIG1ldGhvZCBydW5dIG1heSBiZSBoYWQgYnkgc2ltcGx5IGNhbGxpbmcgdGhlCisgICAgIyBUZXN0Q2FzZSBpbnN0YW5jZS4iCisgICAgZGVmIHRlc3RfY2FsbF9faW52b2tpbmdfYW5faW5zdGFuY2VfZGVsZWdhdGVzX3RvX3J1bihzZWxmKToKKyAgICAgICAgcmVzdWx0SW4gPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgcmVzdWx0T3V0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisKKyAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIHJ1bihzZWxmLCByZXN1bHQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVzdWx0LCByZXN1bHRJbikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0T3V0CisKKyAgICAgICAgcmV0dmFsID0gRm9vKCd0ZXN0JykocmVzdWx0SW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIHJlc3VsdE91dCkKKworCiAgICAgZGVmIHRlc3RTaG9ydERlc2NyaXB0aW9uV2l0aG91dERvY3N0cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5zaG9ydERlc2NyaXB0aW9uKCkpCiAKQEAgLTExNDAsNyArMTE3Niw2IEBACiAgICAgICAgICAgICAoc2VsZi5hc3NlcnRfLCAoVHJ1ZSwpKSwKICAgICAgICAgICAgIChzZWxmLmZhaWxVbmxlc3NSYWlzZXMsIChUeXBlRXJyb3IsIGxhbWJkYSBfOiAzLjE0ICsgJ3NwYW0nKSksCiAgICAgICAgICAgICAoc2VsZi5mYWlsSWYsIChGYWxzZSwpKSwKLSAgICAgICAgICAgIChzZWxmLmFzc2VydFNhbWVFbGVtZW50cywgKFsxLCAxLCAyLCAzXSwgWzEsIDIsIDNdKSksCiAgICAgICAgICAgICAoc2VsZi5hc3NlcnREaWN0Q29udGFpbnNTdWJzZXQsIChkaWN0KGE9MSwgYj0yKSwgZGljdChhPTEsIGI9MiwgYz0zKSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwLCAoS2V5RXJyb3IsICdmb28nLCBsYW1iZGE6IHt9Wydmb28nXSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcywgKCdiYXInLCAnYmFyJykpLApAQCAtMTE0OSwxOCArMTE4NCwyMCBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICAgICAgbWV0aCgqYXJncykKIAotICAgIGRlZiB0ZXN0RGVwcmVjYXRlZEZhaWxNZXRob2RzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGRlcHJlY2F0ZWQgZmFpbCogbWV0aG9kcyBnZXQgcmVtb3ZlZCBpbiAzLjMiIiIKKyAgICAjIGRpc2FibGUgdGhpcyB0ZXN0IGZvciBub3cuIFdoZW4gdGhlIHZlcnNpb24gd2hlcmUgdGhlIGZhaWwqIG1ldGhvZHMgd2lsbAorICAgICMgYmUgcmVtb3ZlZCBpcyBkZWNpZGVkLCByZS1lbmFibGUgaXQgYW5kIHVwZGF0ZSB0aGUgdmVyc2lvbgorICAgIGRlZiBfdGVzdERlcHJlY2F0ZWRGYWlsTWV0aG9kcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBkZXByZWNhdGVkIGZhaWwqIG1ldGhvZHMgZ2V0IHJlbW92ZWQgaW4gMy54IiIiCiAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRlcHJlY2F0ZWRfbmFtZXMgPSBbCiAgICAgICAgICAgICAnZmFpbElmRXF1YWwnLCAnZmFpbFVubGVzc0VxdWFsJywgJ2ZhaWxVbmxlc3NBbG1vc3RFcXVhbCcsCiAgICAgICAgICAgICAnZmFpbElmQWxtb3N0RXF1YWwnLCAnZmFpbFVubGVzcycsICdmYWlsVW5sZXNzUmFpc2VzJywgJ2ZhaWxJZicsCi0gICAgICAgICAgICAnYXNzZXJ0U2FtZUVsZW1lbnRzJywgJ2Fzc2VydERpY3RDb250YWluc1N1YnNldCcsCisgICAgICAgICAgICAnYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0JywKICAgICAgICAgXQogICAgICAgICBmb3IgZGVwcmVjYXRlZF9uYW1lIGluIGRlcHJlY2F0ZWRfbmFtZXM6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIGRlcHJlY2F0ZWRfbmFtZSkgICMgcmVtb3ZlIHRoZXNlIGluIDMuMworICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgZGVwcmVjYXRlZF9uYW1lKSAgIyByZW1vdmUgdGhlc2UgaW4gMy54CiAKICAgICBkZWYgdGVzdERlZXBjb3B5KHNlbGYpOgogICAgICAgICAjIElzc3VlOiA1NjYwCkBAIC0xMjY4LDMgKzEzMDUsMTEgQEAKICAgICAgICAgICAgIGtsYXNzKCd0ZXN0X3NvbWV0aGluZycpLnJ1bihyZXN1bHQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHQuZXJyb3JzKSwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRlc3RzUnVuLCAxKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3ROb0N5Y2xlcyhzZWxmKToKKyAgICAgICAgY2FzZSA9IHVuaXR0ZXN0LlRlc3RDYXNlKCkKKyAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihjYXNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuZGlzYWJsZV9nYygpOgorICAgICAgICAgICAgZGVsIGNhc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod3IoKSkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKaW5kZXggZjdlMzFhNS4uZDFiOWVmNSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKQEAgLTIzOSw3ICsyMzksNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgc2Rhc2Zhc2Zhc2RmIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkICdzZGFzZmFzZmFzZGYnIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQogCkBAIC02MTksNyArNjE5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3NkYXNmYXNmYXNkZiddKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkIHNkYXNmYXNmYXNkZiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCAnc2Rhc2Zhc2Zhc2RmJyIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzIGZhaWxlZCB0byByYWlzZSBJbXBvcnRFcnJvciIpCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQppbmRleCBkNWQwZjVhLi45Nzk0ODY4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CkBAIC0xMzEsMjMgKzEzMSw2IEBACiAgICAgICAgIEZha2VSdW5uZXIudGVzdCA9IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gRmFsc2UKIAotICAgIGRlZiB0ZXN0SGVscEFuZFVua25vd24oc2VsZik6Ci0gICAgICAgIHByb2dyYW0gPSBzZWxmLnByb2dyYW0KLSAgICAgICAgZGVmIHVzYWdlRXhpdChtc2c9Tm9uZSk6Ci0gICAgICAgICAgICBwcm9ncmFtLm1zZyA9IG1zZwotICAgICAgICAgICAgcHJvZ3JhbS5leGl0ID0gVHJ1ZQotICAgICAgICBwcm9ncmFtLnVzYWdlRXhpdCA9IHVzYWdlRXhpdAotCi0gICAgICAgIGZvciBvcHQgaW4gJy1oJywgJy1IJywgJy0taGVscCc6Ci0gICAgICAgICAgICBwcm9ncmFtLmV4aXQgPSBGYWxzZQotICAgICAgICAgICAgcHJvZ3JhbS5wYXJzZUFyZ3MoW05vbmUsIG9wdF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvZ3JhbS5leGl0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvZ3JhbS5tc2cpCi0KLSAgICAgICAgcHJvZ3JhbS5wYXJzZUFyZ3MoW05vbmUsICctJCddKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvZ3JhbS5leGl0KQotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwcm9ncmFtLm1zZykKLQogICAgIGRlZiB0ZXN0VmVyYm9zaXR5KHNlbGYpOgogICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkN2FlOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKK2xvYWRlciA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyCisKK2RlZiBsb2FkX3Rlc3RzKCphcmdzKToKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZm9yIGZuIGluIG9zLmxpc3RkaXIoaGVyZSk6CisgICAgICAgIGlmIGZuLnN0YXJ0c3dpdGgoInRlc3QiKSBhbmQgZm4uZW5kc3dpdGgoIi5weSIpOgorICAgICAgICAgICAgbW9kbmFtZSA9ICJ1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLiIgKyBmbls6LTNdCisgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZG5hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2RuYW1lXQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUpKQorICAgIHJldHVybiBzdWl0ZQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ3Mzg3OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IHN5cworCitkZWYgaXNfaW5zdGFuY2Uob2JqLCBrbGFzcyk6CisgICAgIiIiVmVyc2lvbiBvZiBpc19pbnN0YW5jZSB0aGF0IGRvZXNuJ3QgYWNjZXNzIF9fY2xhc3NfXyIiIgorICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwga2xhc3MpCisKKworY2xhc3MgU29tZUNsYXNzKG9iamVjdCk6CisgICAgY2xhc3NfYXR0cmlidXRlID0gTm9uZQorCisgICAgZGVmIHdpYmJsZShzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFgob2JqZWN0KToKKyAgICBwYXNzCisKKworZGVmIGV4YW1pbmVfd2FybmluZ3MoZnVuYyk6CisgICAgZGVmIHdyYXBwZXIoKToKKyAgICAgICAgd2l0aCBjYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgd3M6CisgICAgICAgICAgICBmdW5jKHdzKQorICAgIHJldHVybiB3cmFwcGVyCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IyZGQwMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RjYWxsYWJsZS5weQpAQCAtMCwwICsxLDE0NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMiBNaWNoYWVsIEZvb3JkICYgdGhlIG1vY2sgdGVhbQorIyBFLW1haWw6IGZ1enp5bWFuIEFUIHZvaWRzcGFjZSBET1Qgb3JnIERPVCB1aworIyBodHRwOi8vd3d3LnZvaWRzcGFjZS5vcmcudWsvcHl0aG9uL21vY2svCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlLCBYLCBTb21lQ2xhc3MKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywKKyAgICBOb25DYWxsYWJsZU1vY2ssIHBhdGNoLCBjcmVhdGVfYXV0b3NwZWMsCisgICAgQ2FsbGFibGVNaXhpbgorKQorCisKKworY2xhc3MgVGVzdENhbGxhYmxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBhc3NlcnROb3RDYWxsYWJsZShzZWxmLCBtb2NrKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19pbnN0YW5jZShtb2NrLCBDYWxsYWJsZU1peGluKSkKKworCisgICAgZGVmIHRlc3Rfbm9uX2NhbGxhYmxlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBOb25DYWxsYWJsZU1hZ2ljTW9jaygpLCBOb25DYWxsYWJsZU1vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19jYWxsX18nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9jay5fX2NsYXNzX18uX19uYW1lX18sIHJlcHIobW9jaykpCisKKworICAgIGRlZiB0ZXN0X2hlaXJhcmNoeShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFnaWNNb2NrLCBNb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaykpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIG9uZSA9IE5vbkNhbGxhYmxlTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUob25lLm9uZSksIE1vY2spKQorCisgICAgICAgIHR3byA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh0d28udHdvKSwgTWFnaWNNb2NrKSkKKworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTW9ja1N1YihNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBvbmUgPSBNb2NrU3ViKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZShvbmUub25lKSwgTW9ja1N1YikpCisKKyAgICAgICAgY2xhc3MgTWFnaWNTdWIoTWFnaWNNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0d28gPSBNYWdpY1N1YigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUodHdvLnR3byksIE1hZ2ljU3ViKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlYyhzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19pbnN0YW5jZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjPVgoKSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX3NldF9pbnN0YW5jZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1YKCkpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19jYWxsYWJsZV9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ2FsbGFibGVYKFgpOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBTdWIoQ2FsbGFibGVYKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNdWx0aShTb21lQ2xhc3MsIFN1Yik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGFyZyBpbiAnc3BlYycsICdzcGVjX3NldCc6CisgICAgICAgICAgICBmb3IgS2xhc3MgaW4gQ2FsbGFibGVYLCBTdWIsIE11bHRpOgorICAgICAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLlgnICUgX19uYW1lX18sICoqe2FyZzogS2xhc3N9KSBhcyBtb2NrOgorICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoaW5zdGFuY2UsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICAgICAgICAgICMgaW5oZXJpdGVkIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyYmF6JykKKworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBpbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICMgaW5zdGFuY2UgaXMgY2FsbGFibGUsIHJlc3VsdCBoYXMgbm8gc3BlYworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0KDMsIDIsIDEpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgzLCAyLCAxKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuZm9vKDMsIDIsIDEpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMywgMiwgMSkKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9wc2VjKHNlbGYpOgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFgpCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhYKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX2luc3RhbmNlKHNlbGYpOgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFNvbWVDbGFzcywgaW5zdGFuY2U9VHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2sud2liYmxlKCkKKyAgICAgICAgbW9jay53aWJibGUuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay53aWJibGUsICdzb21lJywgICdhcmdzJykKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGhlbHBlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJmYjI5MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CkBAIC0wLDAgKzEsODg5IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgY2FsbCwgX0NhbGwsIGNyZWF0ZV9hdXRvc3BlYywgTWFnaWNNb2NrLAorICAgIE1vY2ssIEFOWSwgX0NhbGxMaXN0LCBwYXRjaCwgUHJvcGVydHlNb2NrCispCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisKK2NsYXNzIFNvbWVDbGFzcyhvYmplY3QpOgorICAgIGRlZiBvbmUoc2VsZiwgYSwgYik6CisgICAgICAgIHBhc3MKKyAgICBkZWYgdHdvKHNlbGYpOgorICAgICAgICBwYXNzCisgICAgZGVmIHRocmVlKHNlbGYsIGE9Tm9uZSk6CisgICAgICAgIHBhc3MKKworCisKK2NsYXNzIEFueVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFOWSwgb2JqZWN0KCkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKEFOWSkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoQU5ZKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhmb289QU5ZKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChmb289QU5ZKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEFOWSksICc8QU5ZPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKEFOWSksICc8QU5ZPicpCisKKworICAgIGRlZiB0ZXN0X2FueV9hbmRfZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhkYXRldGltZS5ub3coKSwgZm9vPWRhdGV0aW1lLm5vdygpKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKEFOWSwgZm9vPUFOWSkKKworCisgICAgZGVmIHRlc3RfYW55X21vY2tfY2FsbHNfY29tcGFyaXNvbl9vcmRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkID0gZGF0ZXRpbWUubm93KCkKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZm9yIGQgaW4gZGF0ZXRpbWUubm93KCksIEZvbygpOgorICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICAgICAgbW9jayhkLCBmb289ZCwgYmFyPWQpCisgICAgICAgICAgICBtb2NrLm1ldGhvZChkLCB6aW5nYT1kLCBhbHBoYT1kKQorICAgICAgICAgICAgbW9jaygpLm1ldGhvZChhMT1kLCB6OTk9ZCkKKworICAgICAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAgICAgY2FsbChBTlksIGZvbz1BTlksIGJhcj1BTlkpLAorICAgICAgICAgICAgICAgIGNhbGwubWV0aG9kKEFOWSwgemluZ2E9QU5ZLCBhbHBoYT1BTlkpLAorICAgICAgICAgICAgICAgIGNhbGwoKSwgY2FsbCgpLm1ldGhvZChhMT1BTlksIHo5OT1BTlkpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBtb2NrLm1vY2tfY2FsbHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisKKworCitjbGFzcyBDYWxsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfY2FsbChzZWxmKToKKyAgICAgICAga2FsbCA9IF9DYWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKCksKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKHt9LCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoKSwge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ2ZvbycsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXInLCAoKSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnYmF6Jywge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ3NwYW0nLCAoKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCAzKSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoMSwgMiwgMyksKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMykpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKDEsIDIsIDMpLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpLCB7fSkpKQorCisgICAgICAgIGthbGwgPSBfQ2FsbCgoKDEsIDIsIDQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMykpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCAzKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCdmb28nLCAoMSwgMiwgNCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCA0KSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDQpLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnYmFyJywgKDEsIDIsIDQpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXInLCAoMSwgMiwgNCksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCh7J2EnOiAzfSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCksIHsnYSc6IDN9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCB7J2EnOiAzfSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoKSwgeydhJzogM30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoeydhJzogM30sKSkpCisKKworICAgIGRlZiB0ZXN0X2VtcHR5X19DYWxsKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCgpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKHt9LCkpCisKKworICAgIGRlZiB0ZXN0X25hbWVkX2VtcHR5X2NhbGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoJ2ZvbycsICgpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoKSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICh7fSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywge30pKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfYXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCB7fSkpCisKKworICAgIGRlZiB0ZXN0X25hbWVkX2NhbGxfd2l0aF9hcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKDEsIDIsIDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSwge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgxLCAyLCAzKSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksIHt9KSkKKworCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2t3YXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKGRpY3QoYT0zLCBiPTQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCBkaWN0KGE9MywgYj00KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoKSwgZGljdChhPTMsIGI9NCkpKQorCisKKyAgICBkZWYgdGVzdF9uYW1lZF9jYWxsX3dpdGhfa3dhcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCBkaWN0KGE9MywgYj00KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKGRpY3QoYT0zLCBiPTQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgpLCBkaWN0KGE9MywgYj00KSkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9hcmdzX2NhbGxfZW1wdHlfbmFtZShzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiwgMyksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBjYWxsKDEsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSwgMiwgMyksIGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxsKDEsIDIsIDMpIGluIFthcmdzXSkKKworCisgICAgZGVmIHRlc3RfY2FsbF9uZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChfQ2FsbCgoKDEsIDIsIDMpLCkpLCBjYWxsKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF9DYWxsKCgoMSwgMiwgMyksKSkgIT0gY2FsbCgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9DYWxsKCgoMSwgMiksIHt9KSkgIT0gY2FsbCgxLCAyLCAzKSkKKworCisgICAgZGVmIHRlc3RfY2FsbF9ub25fdHVwbGVzKHNlbGYpOgorICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCAzKSwpKQorICAgICAgICBmb3IgdmFsdWUgaW4gMSwgTm9uZSwgc2VsZiwgaW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa2FsbCA9PSB2YWx1ZSkKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCkpLCAnY2FsbCgpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCgnZm9vJywpKSksICdjYWxsLmZvbygpJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKCgxLCAyLCAzKSwgeydhJzogJ2InfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbCgxLCAyLCAzLCBhPSdiJykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKCdiYXInLCAoMSwgMiwgMyksIHsnYSc6ICdiJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwuYmFyKDEsIDIsIDMsIGE9J2InKSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwpLCAnY2FsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNhbGwpLCAnY2FsbCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKSksICdjYWxsKCknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgxKSksICdjYWxsKDEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoeno9J3RoaW5nJykpLCAiY2FsbCh6ej0ndGhpbmcnKSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKS5mb28pLCAnY2FsbCgpLmZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKDEpLmZvby5iYXIoYT0zKS5iaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbCgpLmZvby5iYXIoKS5iaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoY2FsbCgpLmZvbygxLCAyLCBhPTMpKSwKKyAgICAgICAgICAgICJjYWxsKCkuZm9vKDEsIDIsIGE9MykiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKSgpKSwgImNhbGwoKSgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoMSkoMikpLCAiY2FsbCgpKDIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoY2FsbCgpKCkuYmFyKCkuYmF6LmJlZXAoMSkpLAorICAgICAgICAgICAgImNhbGwoKSgpLmJhcigpLmJhei5iZWVwKDEpIgorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgpLCAoJycsICgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgnZm9vJywgJ2JhcicsIG9uZT0zLCB0d289NCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCcnLCAoJ2ZvbycsICdiYXInKSwgeydvbmUnOiAzLCAndHdvJzogNH0pKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyLCAzKQorICAgICAgICBtb2NrKGE9MywgYj02KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGwoMSwgMiwgMyksIGNhbGwoYT0zLCBiPTYpXSkKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9jYWxsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwuZm9vKDEpLCAoJ2ZvbycsICgxLCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLmJhci5iYXooZmlzaD0nZWdncycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFyLmJheicsICgpLCB7J2Zpc2gnOiAnZWdncyd9KSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suZm9vKDEsIDIgLDMpCisgICAgICAgIG1vY2suYmFyLmJheihhPTMsIGI9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsbC5mb28oMSwgMiwgMyksIGNhbGwuYmFyLmJheihhPTMsIGI9NildKQorCisKKyAgICBkZWYgdGVzdF9leHRlbmRlZF9jYWxsKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBjYWxsKDEpLmZvbygyKS5iYXIoMywgYT00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgKCcoKS5mb28oKS5iYXInLCAoMywpLCBkaWN0KGE9NCkpKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEsIDIsIGE9MywgYj00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCBjYWxsKDEsIDIsIGE9MywgYj00KSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtb2NrLmNhbGxfYXJncywgY2FsbCgxLCAyLCAzKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFtjYWxsKDEsIDIsIGE9MywgYj00KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgxLCAyLCBhPTMsIGI9NCldKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrLmZvbygxKS5iYXIoKSgpLmJhei5iZWVwKGE9NikKKworICAgICAgICBsYXN0X2NhbGwgPSBjYWxsLmZvbygxKS5iYXIoKSgpLmJhei5iZWVwKGE9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHNbLTFdLCBsYXN0X2NhbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBsYXN0X2NhbGwuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbGlzdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEpLmNhbGxfbGlzdCgpLCBtb2NrLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSkubWV0aG9kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgxKS5tZXRob2QoMikuY2FsbF9saXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2NhbGxzKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEpLm1ldGhvZCgyKSgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSkubWV0aG9kKDIpKDMpLmNhbGxfbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19jYWxscykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgaW50KG1vY2soMSkubWV0aG9kKDIpKDMpLmZvby5iYXIuYmF6KDQpKDUpKQorICAgICAgICBrYWxsID0gY2FsbCgxKS5tZXRob2QoMikoMykuZm9vLmJhci5iYXooNCkoNSkuX19pbnRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbC5jYWxsX2xpc3QoKSwgbW9jay5tb2NrX2NhbGxzKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLCBBTlkpCisKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIGludChtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgW0FOWV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0FOWV0sIG0ubW9ja19jYWxscykKKworCisgICAgZGVmIHRlc3RfdHdvX2FyZ3NfY2FsbChzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiksIHsnYSc6IDN9KSwgdHdvPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFyZ3MpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzFdLCB7J2EnOiAzfSkKKworICAgICAgICBvdGhlcl9hcmdzID0gX0NhbGwoKCgxLCAyKSwgeydhJzogM30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIG90aGVyX2FyZ3MpCisKKworY2xhc3MgU3BlY1NpZ25hdHVyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9jaGVja19zb21lY2xhc3NfbW9jayhzZWxmLCBtb2NrKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdmb28nKQorICAgICAgICBtb2NrLm9uZSgxLCAyKQorICAgICAgICBtb2NrLm9uZS5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sub25lLmFzc2VydF9jYWxsZWRfd2l0aCwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLm9uZSwgMSkKKworICAgICAgICBtb2NrLnR3bygpCisgICAgICAgIG1vY2sudHdvLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLnR3by5hc3NlcnRfY2FsbGVkX3dpdGgsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay50d28sIDEpCisKKyAgICAgICAgbW9jay50aHJlZSgpCisgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sudGhyZWUsIDMsIDIpCisKKyAgICAgICAgbW9jay50aHJlZSgxKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorCisgICAgICAgIG1vY2sudGhyZWUoYT0xKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aChhPTEpCisKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBmb3Igc3BlYyBpbiAoU29tZUNsYXNzLCBTb21lQ2xhc3MoKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYsIHJldHVybl92YWx1ZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksICdmb28nKQorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vLCByZXR1cm5fdmFsdWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfcmVzZXRfbW9jayhzZWxmKToKKyAgICAgICAgbSA9IGNyZWF0ZV9hdXRvc3BlYyhpbnQpCisgICAgICAgIGludChtKQorICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19pbnRfXy5jYWxsX2NvdW50LCAwKQorCisKKyAgICBkZWYgdGVzdF9tb2NraW5nX3VuYm91bmRfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIGZvbyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBwID0gcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycpCisgICAgICAgIG1vY2tfZm9vID0gcC5zdGFydCgpCisgICAgICAgIEZvbygpLmZvbygxKQorCisgICAgICAgIG1vY2tfZm9vLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfdW5ib3VuZF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIHNlZSBtb2NrIGlzc3VlIDEyOAorICAgICAgICAjIHRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbCB1bnRpbCB0aGUgaXNzdWUgaXMgZml4ZWQKKyAgICAgICAgcmV0dXJuCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAga2xhc3MgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBpbnN0YW5jZSA9IGtsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZS5mb28sIDEpCisKKyAgICAgICAgIyBOb3RlOiBubyB0eXBlIGNoZWNraW5nIG9uIHRoZSAic2VsZiIgcGFyYW1ldGVyCisgICAgICAgIGtsYXNzLmZvbygxKQorICAgICAgICBrbGFzcy5mb28uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwga2xhc3MuZm9vKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfa2V5d29yZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgYSA9IDMKKyAgICAgICAgbSA9IGNyZWF0ZV9hdXRvc3BlYyhGb28sIGE9JzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYSwgJzMnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfa2V5d29yZF9vbmx5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCAqLCBiPU5vbmUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG0gPSBjcmVhdGVfYXV0b3NwZWMoZm9vKQorICAgICAgICBtKDEpCisgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbSwgMSwgMikKKworICAgICAgICBtKDIsIGI9MykKKyAgICAgICAgbS5hc3NlcnRfY2FsbGVkX3dpdGgoMiwgYj0zKQorCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9hc19pbnN0YW5jZV9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIG9iaiA9IFNvbWVDbGFzcygpCisgICAgICAgIGRlZiBmKGEpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBvYmouZiA9IGYKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKG9iaikKKyAgICAgICAgbW9jay5mKCdiaW5nJykKKyAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfd2l0aCgnYmluZycpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgIyBiZWNhdXNlIHNwZWMgYXMgYSBsaXN0IG9mIHN0cmluZ3MgaW4gdGhlIG1vY2sgY29uc3RydWN0b3IgbWVhbnMKKyAgICAgICAgIyBzb21ldGhpbmcgdmVyeSBkaWZmZXJlbnQgd2UgdHJlYXQgYSBsaXN0IGluc3RhbmNlIGFzIHRoZSB0eXBlLgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFtdKQorICAgICAgICBtb2NrLmFwcGVuZCgnZm9vJykKKyAgICAgICAgbW9jay5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKCdmb28nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9IFtdCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG1vY2suZm9vLmFwcGVuZCgzKQorICAgICAgICBtb2NrLmZvby5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmZvbywgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihTb21lQ2xhc3MpOgorICAgICAgICAgICAgYXR0ciA9IFNvbWVDbGFzcygpCisKKyAgICAgICAgc3ViX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU3ViKQorCisgICAgICAgIGZvciBtb2NrIGluIChzdWJfbW9jaywgc3ViX21vY2suYXR0cik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uc190eXBlcyhzZWxmKToKKyAgICAgICAgIyB3ZSBjb3VsZCByZXBsYWNlIGJ1aWx0aW4gZnVuY3Rpb25zIC8gbWV0aG9kcyB3aXRoIGEgZnVuY3Rpb24KKyAgICAgICAgIyB3aXRoICphcmdzIC8gKiprd2FyZ3Mgc2lnbmF0dXJlLiBVc2luZyB0aGUgYnVpbHRpbiBtZXRob2QgdHlwZQorICAgICAgICAjIGFzIGEgc3BlYyBzZWVtcyB0byB3b3JrIGZhaXJseSB3ZWxsIHRob3VnaC4KKyAgICAgICAgY2xhc3MgQnVpbHRpblN1YmNsYXNzKGxpc3QpOgorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNvcnRlZCA9IHNvcnRlZAorICAgICAgICAgICAgYXR0ciA9IHt9CisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhCdWlsdGluU3ViY2xhc3MpCisgICAgICAgIG1vY2suYXBwZW5kKDMpCisgICAgICAgIG1vY2suYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5hcHBlbmQsICdmb28nKQorCisgICAgICAgIG1vY2suYmFyKCdmb28nKQorICAgICAgICBtb2NrLmJhci5hc3NlcnRfY2FsbGVkX3dpdGgoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5iYXIsICdmb28nLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suYmFyLCAnZm9vJykKKworICAgICAgICBtb2NrLnNvcnRlZChbMSwgMl0pCisgICAgICAgIG1vY2suc29ydGVkLmFzc2VydF9jYWxsZWRfd2l0aChbMSwgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLnNvcnRlZCwgJ2ZvbycpCisKKyAgICAgICAgbW9jay5hdHRyLnBvcCgzKQorICAgICAgICBtb2NrLmF0dHIucG9wLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5hdHRyLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU3ViKQorICAgICAgICBtb2NrLm9uZSgxLCAyKQorICAgICAgICBtb2NrLnR3bygpCisgICAgICAgIG1vY2sudGhyZWUoMykKKworICAgICAgICBleHBlY3RlZCA9IFtjYWxsLm9uZSgxLCAyKSwgY2FsbC50d28oKSwgY2FsbC50aHJlZSgzKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgZXhwZWN0ZWQpCisKKyAgICAgICAgbW9jay5hdHRyLm9uZSgxLCAyKQorICAgICAgICBtb2NrLmF0dHIudHdvKCkKKyAgICAgICAgbW9jay5hdHRyLnRocmVlKDMpCisKKyAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKAorICAgICAgICAgICAgW2NhbGwuYXR0ci5vbmUoMSwgMiksIGNhbGwuYXR0ci50d28oKSwgY2FsbC5hdHRyLnRocmVlKDMpXQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIGV4cGVjdGVkKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBjbGFzcyBCdWlsdGluU3ViY2xhc3MobGlzdCk6CisgICAgICAgICAgICBhdHRyID0ge30KKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEJ1aWx0aW5TdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnQsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrLmF0dHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2tbJ2ZvbyddLCBNYWdpY01vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmF0dHJbJ2ZvbyddLCBNYWdpY01vY2spCisKKworICAgIGRlZiB0ZXN0X3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIGZvciBzcGVjIGluIChTdWIsIFN1YigpKToKKyAgICAgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NvbWVjbGFzc19tb2NrKG1vY2spCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jay5hdHRyLCAnZm9vJywgJ2JhcicpCisKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGYoY2xzLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZyhhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmFyKEZvbyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmF6KFNvbWVDbGFzcywgQmFyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3Igc3BlYyBpbiAoRm9vLCBGb28oKSwgQmFyLCBCYXIoKSwgQmF6LCBCYXooKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMpCisgICAgICAgICAgICBtb2NrLmYoMSwgMikKKyAgICAgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyKQorCisgICAgICAgICAgICBtb2NrLmcoMywgNCkKKyAgICAgICAgICAgIG1vY2suZy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgzLCA0KQorCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZvbyA9ICdmb28gYmFyIGJheicKKyAgICAgICAgICAgIGJhciA9IGZvbworCisgICAgICAgIEEuQiA9IEEKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhBKQorCisgICAgICAgIG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suQi5jYWxsZWQpCisKKyAgICAgICAgbW9jay5hKCkKKyAgICAgICAgbW9jay5CLmEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbY2FsbC5hKCksIGNhbGwuQi5hKCldKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5mb28sIEEuYmFyKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vY2suZm9vLCBtb2NrLmJhcikKKyAgICAgICAgbW9jay5mb28ubG93ZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5iYXIubG93ZXIuYXNzZXJ0X2NhbGxlZF93aXRoKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2luaGVyaXRhbmNlX2Zvcl9jbGFzc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3NfbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjbGFzc19tb2NrLCBjbGFzc19tb2NrKCkpCisKKyAgICAgICAgZm9yIHRoaXNfbW9jayBpbiBjbGFzc19tb2NrLCBjbGFzc19tb2NrKCk6CisgICAgICAgICAgICB0aGlzX21vY2suYSgpCisgICAgICAgICAgICB0aGlzX21vY2suYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aGlzX21vY2suYSwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgdGhpc19tb2NrLCAnYicpCisKKyAgICAgICAgaW5zdGFuY2VfbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28oKSkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5hKCkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2VfbW9jay5hLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlX21vY2ssICdiJykKKworICAgICAgICAjIFRoZSByZXR1cm4gdmFsdWUgaXNuJ3QgaXNuJ3QgY2FsbGFibGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZV9tb2NrKQorCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyLmYoKQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhci5mLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZV9tb2NrLkJhciwgJ2cnKQorCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZigpCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZi5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2VfbW9jay5CYXIoKSwgJ2cnKQorCisKKyAgICBkZWYgdGVzdF9pbmhlcml0KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGEgPSAzCisKKyAgICAgICAgRm9vLkZvbyA9IEZvbworCisgICAgICAgICMgY2xhc3MKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwgJ2InKQorCisgICAgICAgIGF0dHJfaW5zdGFuY2UgPSBtb2NrLkZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBhdHRyX2luc3RhbmNlLCAnYicpCisKKyAgICAgICAgIyBpbnN0YW5jZQorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKyAgICAgICAgIyBhdHRyaWJ1dGUgaW5zdGFuY2UKKyAgICAgICAgY2FsbF9yZXN1bHQgPSBtb2NrLkZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBjYWxsX3Jlc3VsdCwgJ2InKQorCisKKyAgICBkZWYgdGVzdF9idWlsdGlucyhzZWxmKToKKyAgICAgICAgIyB1c2VkIHRvIGZhaWwgd2l0aCBpbmZpbml0ZSByZWN1cnNpb24KKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKDEpCisKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGludCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKCdmb28nKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc3RyKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoe30pCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhkaWN0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoW10pCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhsaXN0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc2V0KCkpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhzZXQpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygxLjApCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhmbG9hdCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKDFqKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoY29tcGxleCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKEZhbHNlKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoVHJ1ZSkKKworCisgICAgZGVmIHRlc3RfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIGRlZiBmKGEsIGIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIpCisKKyAgICAgICAgZi5mID0gZgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5mKQorICAgICAgICBtb2NrLmYoMywgNCkKKyAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfd2l0aCgzLCA0KQorCisKKyAgICBkZWYgdGVzdF9za2lwX2F0dHJpYnV0ZWVycm9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgUmFpc2VyKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIHR5cGU9Tm9uZSk6CisgICAgICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdDYW4gb25seSBiZSBhY2Nlc3NlZCB2aWEgYW4gaW5zdGFuY2UnKQorCisgICAgICAgIGNsYXNzIFJhaXNlckNsYXNzKG9iamVjdCk6CisgICAgICAgICAgICByYWlzZXIgPSBSYWlzZXIoKQorCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZXhpc3RpbmcoYSwgYik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgKyBiCisKKyAgICAgICAgcyA9IGNyZWF0ZV9hdXRvc3BlYyhSYWlzZXJDbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGEgeDogcy5leGlzdGluZygxLCAyLCAzKSkKKyAgICAgICAgcy5leGlzdGluZygxLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBzLm5vbmV4aXN0aW5nKQorCisgICAgICAgICMgY2hlY2sgd2UgY2FuIGZldGNoIHRoZSByYWlzZXIgYXR0cmlidXRlIGFuZCBpdCBoYXMgbm8gc3BlYworICAgICAgICBvYmogPSBzLnJhaXNlcgorICAgICAgICBvYmouZm9vLCBvYmouYmFyCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYSwgYj0zKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKDEpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSkKKworICAgICAgICBtb2NrKDQsIDUpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDQsIDUpCisKKworICAgIGRlZiB0ZXN0X2NsYXNzX3dpdGhfbm9faW5pdChzZWxmKToKKyAgICAgICAgIyB0aGlzIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICMgZHVlIHRvIHRyeWluZyB0byBnZXQgYSBzaWduYXR1cmUgZnJvbSBvYmplY3QuX19pbml0X18KKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ2FsbGFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQ2FsbGFibGUpCisgICAgICAgIG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnYScpCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKyAgICAgICAgaW5zdGFuY2UoYT0nYScpCisgICAgICAgIGluc3RhbmNlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9J2EnKQorICAgICAgICBpbnN0YW5jZSgnYScpCisgICAgICAgIGluc3RhbmNlLmFzc2VydF9jYWxsZWRfd2l0aCgnYScpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhDYWxsYWJsZSgpKQorICAgICAgICBtb2NrKGE9J2EnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9J2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2soJ2EnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgnYScpCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ub25jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgTm9uQ2FsbGFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhOb25DYWxsYWJsZSkKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlLCAnYScpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhOb25DYWxsYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfbm9uZShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBiYXIgPSBOb25lCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG5vbmUgPSBtb2NrLmJhcgorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uobm9uZSwgdHlwZShOb25lKSkKKworICAgICAgICBub25lLmZvbygpCisgICAgICAgIG5vbmUuZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfZnVuY3Rpb25zX3dpdGhfc2VsZl9pbl9vZGRfcGxhY2Uoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGYoYSwgc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGEgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBhLmYoc2VsZj0xMCkKKyAgICAgICAgYS5mLmFzc2VydF9jYWxsZWRfd2l0aChzZWxmPTEwKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19wcm9wZXJ0eShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDMKKworICAgICAgICBmb28gPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBtb2NrX3Byb3BlcnR5ID0gZm9vLmZvbworCisgICAgICAgICMgbm8gc3BlYyBvbiBwcm9wZXJ0aWVzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2tfcHJvcGVydHksIE1hZ2ljTW9jaykpCisgICAgICAgIG1vY2tfcHJvcGVydHkoMSwgMiwgMykKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hYmMoNCwgNSwgNikKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Byb3BlcnR5LmFiYy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCg0LCA1LCA2KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19zbG90cyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSBbJ2EnXQorCisgICAgICAgIGZvbyA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG1vY2tfc2xvdCA9IGZvby5hCisKKyAgICAgICAgIyBubyBzcGVjIG9uIHNsb3RzCisgICAgICAgIG1vY2tfc2xvdCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Nsb3QuYWJjKDQsIDUsIDYpCisgICAgICAgIG1vY2tfc2xvdC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Nsb3QuYWJjLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDQsIDUsIDYpCisKKworY2xhc3MgVGVzdENhbGxMaXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FyZ3NfbGlzdF9jb250YWluc19jYWxsX2xpc3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suY2FsbF9hcmdzX2xpc3QsIF9DYWxsTGlzdCkKKworICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2soYT0zKQorICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgIG1vY2soYj02KQorCisgICAgICAgIGZvciBrYWxsIGluIGNhbGwoMSwgMiksIGNhbGwoYT0zKSwgY2FsbCgzLCA0KSwgY2FsbChiPTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGthbGwgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKworICAgICAgICBjYWxscyA9IFtjYWxsKGE9MyksIGNhbGwoMywgNCldCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDEsIDIpLCBjYWxsKGE9MyldCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDMsIDQpLCBjYWxsKGI9NildCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDMsIDQpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNhbGwoJ2Zpc2gnKSBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFtjYWxsKCdmaXNoJyldIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbGlzdF9zdHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrLmZvbyhhPTMpCisgICAgICAgIG1vY2suZm9vLmJhcigpLmJheignZmlzaCcsIGNhdD0nZG9nJykKKworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAgICJbY2FsbCgxLCAyKSxcbiIKKyAgICAgICAgICAgICIgY2FsbC5mb28oYT0zKSxcbiIKKyAgICAgICAgICAgICIgY2FsbC5mb28uYmFyKCksXG4iCisgICAgICAgICAgICAiIGNhbGwuZm9vLmJhcigpLmJheignZmlzaCcsIGNhdD0nZG9nJyldIgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2subW9ja19jYWxscyksIGV4cGVjdGVkKQorCisKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eW1vY2soc2VsZik6CisgICAgICAgIHAgPSBwYXRjaCgnJXMuU29tZUNsYXNzLm9uZScgJSBfX25hbWVfXywgbmV3X2NhbGxhYmxlPVByb3BlcnR5TW9jaykKKyAgICAgICAgbW9jayA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBTb21lQ2xhc3Mub25lCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICAgICAgcyA9IFNvbWVDbGFzcygpCisgICAgICAgICAgICBzLm9uZQorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKV0pCisKKyAgICAgICAgICAgIHMub25lID0gMworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKSwgY2FsbCgzKV0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eW1vY2tfcmV0dXJudmFsdWUoc2VsZik6CisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICBwID0gUHJvcGVydHlNb2NrKCkKKyAgICAgICAgdHlwZShtKS5mb28gPSBwCisKKyAgICAgICAgcmV0dXJuZWQgPSBtLmZvbworICAgICAgICBwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldHVybmVkLCBNYWdpY01vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShyZXR1cm5lZCwgUHJvcGVydHlNb2NrKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmNmMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpAQCAtMCwwICsxLDQwMyBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBNYWdpY01vY2ssIF9tYWdpY3MKKworCisKK2NsYXNzIFRlc3RNb2NraW5nTWFnaWNNZXRob2RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2RlbGV0aW5nX21hZ2ljX21ldGhvZHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9jaywgJ19fZ2V0aXRlbV9fJykpCisKKyAgICAgICAgZGVsIG1vY2suX19nZXRpdGVtX18KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2tfZGVsKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgIyBiZWZvcmUgdXNpbmcgZ2V0aXRlbQorICAgICAgICBkZWwgbW9jay5fX2dldGl0ZW1fXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgICMgdGhpcyB0aW1lIHVzZSBpdCBmaXJzdAorICAgICAgICBtb2NrWydmb28nXQorICAgICAgICBkZWwgbW9jay5fX2dldGl0ZW1fXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZF93cmFwcGluZyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgZihzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLCAnZmlzaCcKKworICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gZgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suX19nZXRpdGVtX18gaXMgZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrWydmb28nXSwgKG1vY2ssICdmaXNoJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fX2dldGl0ZW1fXygnZm9vJyksIChtb2NrLCAnZmlzaCcpKQorCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBtb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fZ2V0aXRlbV9fIGlzIG1vY2spCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfaXNvbGF0ZWRfYmV0d2Vlbl9tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jazEgPSBNb2NrKCkKKyAgICAgICAgbW9jazIgPSBNb2NrKCkKKworICAgICAgICBtb2NrMS5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jazEpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxpc3QobW9jazIpKQorCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2NrKSwgIjxNb2NrIGlkPSclcyc+IiAlIGlkKG1vY2spKQorICAgICAgICBtb2NrLl9fcmVwcl9fID0gbGFtYmRhIHM6ICdmb28nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2NrKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgb2JqZWN0Ll9fc3RyX18obW9jaykpCisgICAgICAgIG1vY2suX19zdHJfXyA9IGxhbWJkYSBzOiAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2RpY3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKyAgICAgICAgZGVmIF9kZWwoKToKKyAgICAgICAgICAgIGRlbCBtb2NrWydmb28nXQorICAgICAgICBkZWYgX3NldCgpOgorICAgICAgICAgICAgbW9ja1snZm9vJ10gPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX2RlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfc2V0KQorCisgICAgICAgIF9kaWN0ID0ge30KKyAgICAgICAgZGVmIGdldGl0ZW0ocywgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gX2RpY3RbbmFtZV0KKyAgICAgICAgZGVmIHNldGl0ZW0ocywgbmFtZSwgdmFsdWUpOgorICAgICAgICAgICAgX2RpY3RbbmFtZV0gPSB2YWx1ZQorICAgICAgICBkZWYgZGVsaXRlbShzLCBuYW1lKToKKyAgICAgICAgICAgIGRlbCBfZGljdFtuYW1lXQorCisgICAgICAgIG1vY2suX19zZXRpdGVtX18gPSBzZXRpdGVtCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBnZXRpdGVtCisgICAgICAgIG1vY2suX19kZWxpdGVtX18gPSBkZWxpdGVtCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisgICAgICAgIG1vY2tbJ2ZvbyddID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZGljdCwgeydmb28nOiAnYmFyJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1snZm9vJ10sICdiYXInKQorICAgICAgICBkZWwgbW9ja1snZm9vJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZGljdCwge30pCisKKworICAgIGRlZiB0ZXN0X251bWVyaWMoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnZhbHVlID0gMAorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrICsgMykKKworICAgICAgICBkZWYgYWRkKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgIG1vY2sudmFsdWUgKz0gb3RoZXIKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIG1vY2suX19hZGRfXyA9IGFkZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgKyAzLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sudmFsdWUsIDMpCisKKyAgICAgICAgZGVsIG1vY2suX19hZGRfXworICAgICAgICBkZWYgaWFkZChtb2NrKToKKyAgICAgICAgICAgIG1vY2sgKz0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlhZGQsIG1vY2spCisgICAgICAgIG1vY2suX19pYWRkX18gPSBhZGQKKyAgICAgICAgbW9jayArPSA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaywgb3JpZ2luYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay52YWx1ZSwgOSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogMyArIG1vY2spCisgICAgICAgIG1vY2suX19yYWRkX18gPSBhZGQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3ICsgbW9jaywgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnZhbHVlLCAxNikKKworCisgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICAjIHRlc3QgZGVsZWdhdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobW9jayksIE1vY2suX19oYXNoX18obW9jaykpCisKKyAgICAgICAgZGVmIF9oYXNoKHMpOgorICAgICAgICAgICAgcmV0dXJuIDMKKyAgICAgICAgbW9jay5fX2hhc2hfXyA9IF9oYXNoCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtb2NrKSwgMykKKworCisgICAgZGVmIHRlc3Rfbm9uemVybyhzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChtKSkKKworICAgICAgICBtLl9fYm9vbF9fID0gbGFtYmRhIHM6IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChtKSkKKworCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgY29tcChzLCBvKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIG1vY2suX19sdF9fID0gbW9jay5fX2d0X18gPSBtb2NrLl9fbGVfXyA9IG1vY2suX19nZV9fID0gY29tcAorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPCAzKQorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPiAzKQorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPD0gMykKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrID49IDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA8IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPCBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID4gb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA+IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPiBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDw9IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPD0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8PSBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID49IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPj0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+PSBNYWdpY01vY2soKSkKKworCisgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gbW9jaywgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrID09IG1vY2ssIGJvb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gbW9jaywgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayAhPSBtb2NrLCBib29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG9iamVjdCgpLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBvYmplY3QoKSwgVHJ1ZSkKKworICAgICAgICAgICAgZGVmIGVxKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPT0gMworICAgICAgICAgICAgbW9jay5fX2VxX18gPSBlcQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2sgPT0gMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jayA9PSA0KQorCisgICAgICAgICAgICBkZWYgbmUoc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA9PSAzCisgICAgICAgICAgICBtb2NrLl9fbmVfXyA9IG5lCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jayAhPSAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrICE9IDQpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2suX19lcV9fLnJldHVybl92YWx1ZSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgPT0gMywgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IDMsIFRydWUpCisKKyAgICAgICAgbW9jay5fX25lX18ucmV0dXJuX3ZhbHVlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gMywgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IDMsIEZhbHNlKQorCisKKyAgICBkZWYgdGVzdF9sZW5fY29udGFpbnNfaXRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGVuLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAnZm9vJyBpbiBtb2NrKQorCisgICAgICAgIG1vY2suX19sZW5fXyA9IGxhbWJkYSBzOiA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2spLCA2KQorCisgICAgICAgIG1vY2suX19jb250YWluc19fID0gbGFtYmRhIHMsIG86IG8gPT0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4gbW9jaykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gbGFtYmRhIHM6IGl0ZXIoJ2Zvb2JhcmJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgbGlzdCgnZm9vYmFyYmF6JykpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbMSwgMiwgM10pCisKKyAgICAgICAgZ2V0YXR0cihtb2NrLCAnX19ib29sX18nKS5yZXR1cm5fdmFsdWUgPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19fbm9uemVyb19fJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChtb2NrKSkKKworICAgICAgICBmb3IgZW50cnkgaW4gX21hZ2ljczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssIGVudHJ5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2ltYWdpbmVyeV9fJykpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21vY2tfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayA9PSBvYmplY3QoKSwgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gb2JqZWN0KCksIGJvb2wpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG9iamVjdCgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG9iamVjdCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gbW9jaywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG1vY2ssIEZhbHNlKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2tfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtb2NrKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4KG1vY2spLCAxaikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChtb2NrKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9iamVjdCgpLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2NrKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1vY2spLCBvYmplY3QuX19oYXNoX18obW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2spLCBvYmplY3QuX19zdHJfXyhtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wobW9jaykpCisKKyAgICAgICAgIyBpbiBQeXRob24gMyBvY3QgYW5kIGhleCB1c2UgX19pbmRleF9fCisgICAgICAgICMgc28gdGhlc2UgdGVzdHMgYXJlIGZvciBfX2luZGV4X18gaW4gcHkzaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChtb2NrKSwgJzBvMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4KG1vY2spLCAnMHgxJykKKyAgICAgICAgIyBob3cgdG8gdGVzdCBfX3NpemVvZl9fID8KKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19hbmRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgY2xhc3MgTm9uSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1Ob25JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBkZWYgc2V0X2ludCgpOgorICAgICAgICAgICAgbW9jay5fX2ludF9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfaW50KQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc3BlYz1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfYW5kX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBJdGVyYWJsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgY2xhc3MgTm9uSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9Tm9uSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgZGVmIHNldF9pbnQoKToKKyAgICAgICAgICAgIG1vY2suX19pbnRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNwZWNfc2V0PUl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworCisgICAgZGVmIHRlc3Rfc2V0dGluZ191bnN1cHBvcnRlZF9tYWdpY19tZXRob2Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBkZWYgc2V0X3NldGF0dHIoKToKKyAgICAgICAgICAgIG1vY2suX19zZXRhdHRyX18gPSBsYW1iZGEgc2VsZiwgbmFtZTogTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2V0IHVuc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZCAnX19zZXRhdHRyX18nLiIsCisgICAgICAgICAgICBzZXRfc2V0YXR0cgorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfYW5kX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIGF0dHIgPSBtb2NrLmZvbworICAgICAgICBkZWYgX2dldF90eXBlKG9iaik6CisgICAgICAgICAgICAjIHRoZSB0eXBlIG9mIGV2ZXJ5IG1vY2sgKG9yIG1hZ2ljbW9jaykgaXMgYSBjdXN0b20gc3ViY2xhc3MKKyAgICAgICAgICAgICMgc28gdGhlIHJlYWwgdHlwZSBpcyB0aGUgc2Vjb25kIGluIHRoZSBtcm8KKyAgICAgICAgICAgIHJldHVybiB0eXBlKG9iaikuX19tcm9fX1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9nZXRfdHlwZShhdHRyKSwgTWFnaWNNb2NrKQorCisgICAgICAgIHJldHVybmVkID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2dldF90eXBlKHJldHVybmVkKSwgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2FyZV9tYWdpY19tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLl9fZ2V0aXRlbV9fLCBNYWdpY01vY2spCisKKyAgICAgICAgbW9ja1sxXVsyXS5fX2dldGl0ZW1fXy5yZXR1cm5fdmFsdWUgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1sxXVsyXVszXSwgMykKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kX3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzdHIobW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suX19zdHJfXy5jYWxsZWQpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5fX3N0cl9fLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3RfZGlyKHNlbGYpOgorICAgICAgICAjIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIGRlZiBfZGlyKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBbJ2ZvbyddCisgICAgICAgICAgICBtb2NrLl9fZGlyX18gPSBfZGlyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihtb2NrKSwgWydmb28nXSkKKworCisgICAgQHVuaXR0ZXN0LnNraXBJZignUHlQeScgaW4gc3lzLnZlcnNpb24sICJUaGlzIGZhaWxzIGRpZmZlcmVudGx5IG9uIHB5cHkiKQorICAgIGRlZiB0ZXN0X2JvdW5kX21ldGhvZHMoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKworICAgICAgICAjIFhYWFggc2hvdWxkIHRoaXMgYmUgYW4gZXhwZWN0ZWQgZmFpbHVyZSBpbnN0ZWFkPworCisgICAgICAgICMgdGhpcyBzZWVtcyBsaWtlIGl0IHNob3VsZCB3b3JrLCBidXQgaXMgaGFyZCB0byBkbyB3aXRob3V0IGludHJvZHVjaW5nCisgICAgICAgICMgb3RoZXIgYXBpIGluY29uc2lzdGVuY2llcy4gRmFpbHVyZSBtZXNzYWdlIGNvdWxkIGJlIGJldHRlciB0aG91Z2guCisgICAgICAgIG0uX19pdGVyX18gPSBbM10uX19pdGVyX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpdGVyLCBtKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RfdHlwZShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKE1hZ2ljTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvby5fX2ludF9fLCBGb28pCisKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JfZnJvbV9jbGFzcyhzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIHR5cGUobSkuX19zdHJfXy5yZXR1cm5fdmFsdWUgPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2l0ZXJhYmxlX2FzX2l0ZXJfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbS5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBbMSwgMiwgM10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG0pLCBbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzEsIDIsIDNdKQorCisgICAgICAgIG0uX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gaXRlcihbNCwgNSwgNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzQsIDUsIDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFtdKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNmYxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpAQCAtMCwwICsxLDEyNzUgQEAKK2ltcG9ydCBjb3B5CitpbXBvcnQgc3lzCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBjYWxsLCBERUZBVUxULCBwYXRjaCwgc2VudGluZWwsCisgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1vY2ssCisgICAgTm9uQ2FsbGFibGVNYWdpY01vY2ssIF9DYWxsTGlzdCwKKyAgICBjcmVhdGVfYXV0b3NwZWMKKykKKworCitjbGFzcyBJdGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRoaW5nID0gaXRlcihbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIG5leHQoc2VsZik6CisgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGhpbmcpCisKKyAgICBfX25leHRfXyA9IG5leHQKKworCisKK2NsYXNzIE1vY2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgIyBpZiBfX2FsbF9fIGlzIGJhZGx5IGRlZmluZWQgdGhlbiBpbXBvcnQgKiB3aWxsIHJhaXNlIGFuIGVycm9yCisgICAgICAgICMgV2UgaGF2ZSB0byBleGVjIGl0IGJlY2F1c2UgeW91IGNhbid0IGltcG9ydCAqIGluc2lkZSBhIG1ldGhvZAorICAgICAgICAjIGluIFB5dGhvbiAzCisgICAgICAgIGV4ZWMoImZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKiIpCisKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLmNhbGxlZCwgImNhbGxlZCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfY291bnQgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrLnJldHVybl92YWx1ZSwgTW9jayksCisgICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuX3ZhbHVlIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJncyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzX2xpc3Qgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kX2NhbGxzIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgICMgQ2FuJ3QgdXNlIGhhc2F0dHIgZm9yIHRoaXMgdGVzdCBhcyBpdCBhbHdheXMgcmV0dXJucyBUcnVlIG9uIGEgbW9jaworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdfaXRlbXMnIGluIG1vY2suX19kaWN0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQgbW9jayBzaG91bGQgbm90IGhhdmUgJ19pdGVtcycgYXR0cmlidXRlIikKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb2NrLl9tb2NrX3BhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmVudCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5fbW9ja19tZXRob2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX2NoaWxkcmVuLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gbm90IGluaXRpYWxpc2VkIGluY29ycmVjdGx5IikKKworCisgICAgZGVmIHRlc3RfcmV0dXJuX3ZhbHVlX2luX2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5yZXR1cm5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gdmFsdWUgaW4gY29uc3RydWN0b3Igbm90IGhvbm91cmVkIikKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZm9vJywgcmVwcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiJyVzJyIgJSBpZChtb2NrKSwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrcyA9IFsoTW9jaygpLCAnbW9jaycpLCAoTW9jayhuYW1lPSdiYXInKSwgJ2JhcicpXQorICAgICAgICBmb3IgbW9jaywgbmFtZSBpbiBtb2NrczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzLmJhcicgJSBuYW1lLCByZXByKG1vY2suYmFyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzLmZvbygpJyAlIG5hbWUsIHJlcHIobW9jay5mb28oKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcy5mb28oKS5iaW5nJyAlIG5hbWUsIHJlcHIobW9jay5mb28oKS5iaW5nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzKCknICUgbmFtZSwgcmVwcihtb2NrKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMoKSgpJyAlIG5hbWUsIHJlcHIobW9jaygpKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMoKSgpLmZvby5iYXIuYmF6KCkuYmluZycgJSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG1vY2soKSgpLmZvby5iYXIuYmF6KCkuYmluZykpCisKKworICAgIGRlZiB0ZXN0X3JlcHJfd2l0aF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBYKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgc3BlYz0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWNfc2V0PSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWNfc2V0PSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCwgbmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdmb28nICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic3BlYyIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJzcGVjIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNwZWMiLCByZXByKG1vY2spKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIGRlZiBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCdrYWJsb29pZScpCisKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IGVmZmVjdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvciwgbW9jaywgMSwgMiwgZmlzaD0zKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisKKyAgICAgICAgcmVzdWx0cyA9IFsxLCAyLCAzXQorICAgICAgICBkZWYgZWZmZWN0KCk6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0cy5wb3AoKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gZWZmZWN0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFszLCAyLCAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGUgZWZmZWN0IG5vdCB1c2VkIGNvcnJlY3RseSIpCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2VudGluZWwuU2lkZUVmZmVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNpZGVfZWZmZWN0LCBzZW50aW5lbC5TaWRlRWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZSBlZmZlY3QgaW4gY29uc3RydWN0b3Igbm90IHVzZWQiKQorCisgICAgICAgIGRlZiBzaWRlX2VmZmVjdCgpOgorICAgICAgICAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2lkZV9lZmZlY3QsIHJldHVybl92YWx1ZT1zZW50aW5lbC5SRVRVUk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCBzZW50aW5lbC5SRVRVUk4pCisKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCdqYXZhJyBpbiBzeXMucGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRlc3Qgb25seSBhcHBsaWVzIHRvIEp5dGhvbicpCisgICAgZGVmIHRlc3RfamF2YV9leGNlcHRpb25fc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIGltcG9ydCBqYXZhCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PWphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uKCJCb29tISIpKQorCisgICAgICAgICMgY2FuJ3QgdXNlIGFzc2VydFJhaXNlcyB3aXRoIGphdmEgZXhjZXB0aW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2NrKDEsIDIsIGZpc2g9MykKKyAgICAgICAgZXhjZXB0IGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdqYXZhIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwyLCBmaXNoPTMpCisKKworICAgIGRlZiB0ZXN0X3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIHBhcmVudCA9IE1vY2soKQorICAgICAgICBzcGVjID0gWyJzb21ldGhpbmciXQorICAgICAgICBtb2NrID0gTW9jayhuYW1lPSJjaGlsZCIsIHBhcmVudD1wYXJlbnQsIHNwZWM9c3BlYykKKyAgICAgICAgbW9jayhzZW50aW5lbC5Tb21ldGhpbmcsIHNvbWV0aGluZz1zZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworICAgICAgICBtb2NrLnNvbWV0aGluZygpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBzZW50aW5lbC5TaWRlRWZmZWN0CisgICAgICAgIHJldHVybl92YWx1ZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgICAgIHJldHVybl92YWx1ZSgpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfbmFtZSwgImNoaWxkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19wYXJlbnQsIHBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGFyZW50IGluY29ycmVjdGx5IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX21ldGhvZHMsIHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgaW5jb3JyZWN0bHkgcmVzZXQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5jYWxsZWQsICJjYWxsZWQgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDAsICJjYWxsX2NvdW50IG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsIE5vbmUsICJjYWxsX2FyZ3Mgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbXSwgImNhbGxfYXJnc19saXN0IG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZF9jYWxscyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5OiAlciAhPSAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKG1vY2subWV0aG9kX2NhbGxzLCBbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc2lkZV9lZmZlY3QsIHNlbnRpbmVsLlNpZGVFZmZlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWRlX2VmZmVjdCBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5yZXR1cm5fdmFsdWUsIHJldHVybl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybl92YWx1ZSBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmV0dXJuX3ZhbHVlLmNhbGxlZCwgInJldHVybiB2YWx1ZSBtb2NrIG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19jaGlsZHJlbiwgeydzb21ldGhpbmcnOiBzb21ldGhpbmd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gcmVzZXQgaW5jb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nLCBzb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZHJlbiBpbmNvcnJlY3RseSBjbGVhcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLnNvbWV0aGluZy5jYWxsZWQsICJjaGlsZCBub3QgcmVzZXQiKQorCisKKyAgICBkZWYgdGVzdF9yZXNldF9tb2NrX3JlY3Vyc2lvbihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IG1vY2sKKworICAgICAgICAjIHVzZWQgdG8gY2F1c2UgcmVjdXJzaW9uCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2sucmV0dXJuX3ZhbHVlLCBNb2NrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJEZWZhdWx0IHJldHVybl92YWx1ZSBzaG91bGQgYmUgYSBNb2NrIikKKworICAgICAgICByZXN1bHQgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyZW50IHJlc3VsdCBmcm9tIGNvbnNlY3V0aXZlIGNhbGxzIikKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICByZXRfdmFsID0gbW9jayhzZW50aW5lbC5BcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLmNhbGxlZCwgImNhbGxlZCBub3Qgc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDEsICJjYWxsX2NvdW50IGluY29yZWVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsICgoc2VudGluZWwuQXJnLCksIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzIG5vdCBzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsoKHNlbnRpbmVsLkFyZywpLCB7fSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3NfbGlzdCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKworICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IHNlbnRpbmVsLlJldHVyblZhbHVlCisgICAgICAgIHJldF92YWwgPSBtb2NrKHNlbnRpbmVsLkFyZywga2V5PXNlbnRpbmVsLktleUFyZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXRfdmFsLCBzZW50aW5lbC5SZXR1cm5WYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb3JyZWN0IHJldHVybiB2YWx1ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDIsICJjYWxsX2NvdW50IGluY29ycmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeydrZXknOiBzZW50aW5lbC5LZXlBcmd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzIG5vdCBzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHt9KSwKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsna2V5Jzogc2VudGluZWwuS2V5QXJnfSkKKyAgICAgICAgXSwKKyAgICAgICAgICAgICJjYWxsX2FyZ3NfbGlzdCBub3Qgc2V0IikKKworCisgICAgZGVmIHRlc3RfY2FsbF9hcmdzX2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygpCisgICAgICAgIG1vY2soc2VudGluZWwuQXJnKQorICAgICAgICBtb2NrKGt3PXNlbnRpbmVsLkt3YXJnKQorICAgICAgICBtb2NrKHNlbnRpbmVsLkFyZywga3c9c2VudGluZWwuS3dhcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgWworICAgICAgICAgICAgKCksCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCksCisgICAgICAgICAgICAoeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSwpLAorICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSkKKyAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7Imt3Ijogc2VudGluZWwuS3dhcmd9KSkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorCisgICAgICAgICMgV2lsbCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgZmFpbHMKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgsIDEpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKQorCisgICAgICAgIG1vY2soMSwgMiwgMywgYT0nZmlzaCcsIGI9J25vdGhpbmcnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzLCBhPSdmaXNoJywgYj0nbm90aGluZycpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfb25jZV93aXRoKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorCisgICAgICAgICMgV2lsbCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgZmFpbHMKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKQorCisgICAgICAgIG1vY2soJ2ZvbycsICdiYXInLCBiYXo9MikKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgJ2JhcicsIGJhej0yKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIG1vY2soJ2ZvbycsICdiYXInLCBiYXo9MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIGxhbWJkYTogbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnYm9iJywgJ2JhcicsIGJhej0yKQorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9hY2Nlc3NfcmV0dXJuc19tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2Uoc29tZXRoaW5nLCBNb2NrKSwgImF0dHJpYnV0ZSBpc24ndCBhIG1vY2siKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nLCBzb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBhdHRyaWJ1dGVzIHJldHVybmVkIGZvciBzYW1lIG5hbWUiKQorCisgICAgICAgICMgVXNhZ2UgZXhhbXBsZQorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nLnJldHVybl92YWx1ZSA9IDMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nKCksIDMsICJtZXRob2QgcmV0dXJuZWQgd3JvbmcgdmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5zb21ldGhpbmcuY2FsbGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCBkaWRuJ3QgcmVjb3JkIGJlaW5nIGNhbGxlZCIpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfaGF2ZV9uYW1lX2FuZF9wYXJlbnRfc2V0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNvbWV0aGluZyA9IG1vY2suc29tZXRoaW5nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuX21vY2tfbmFtZSwgInNvbWV0aGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBuYW1lIG5vdCBzZXQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuX21vY2tfcGFyZW50LCBtb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgcGFyZW50IG5vdCBzZXQgY29ycmVjdGx5IikKKworCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxzX3JlY29yZGVkKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKDMsIGZpc2g9Tm9uZSkKKyAgICAgICAgbW9jay5zb21ldGhpbmdfZWxzZS5zb21ldGhpbmcoNiwgY2FrZT1zZW50aW5lbC5DYWtlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zb21ldGhpbmdfZWxzZS5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsoInNvbWV0aGluZyIsICg2LCksIHsnY2FrZSc6IHNlbnRpbmVsLkNha2V9KV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgY2FsbHMgbm90IHJlY29yZGVkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsKKyAgICAgICAgICAgICgic29tZXRoaW5nIiwgKDMsKSwgeydmaXNoJzogTm9uZX0pLAorICAgICAgICAgICAgKCJzb21ldGhpbmdfZWxzZS5zb21ldGhpbmciLCAoNiwpLCB7J2Nha2UnOiBzZW50aW5lbC5DYWtlfSkKKyAgICAgICAgXSwKKyAgICAgICAgICAgICJtZXRob2QgY2FsbHMgbm90IHJlY29yZGVkIGNvcnJlY3RseSIpCisKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsc19jb21wYXJlX2Vhc2lseShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgpLCB7fSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoJ2RpZmZlcmVudCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnc29tZXRoaW5nJywgKCdkaWZmZXJlbnQnLCksIHt9KV0pCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZyh4PTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsIHsneCc6IDF9KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgpLCB7J3gnOiAxfSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoJ2RpZmZlcmVudCcsIHNvbWU9J21vcmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbCisgICAgICAgICAgICAoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpLCB7J3NvbWUnOiAnbW9yZSd9KQorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9vbmx5X2FsbG93ZWRfbWV0aG9kc19leGlzdChzZWxmKToKKyAgICAgICAgZm9yIHNwZWMgaW4gWydzb21ldGhpbmcnXSwgKCdzb21ldGhpbmcnLCk6CisgICAgICAgICAgICBmb3IgYXJnIGluICdzcGVjJywgJ3NwZWNfc2V0JzoKKyAgICAgICAgICAgICAgICBtb2NrID0gTW9jaygqKnthcmc6IHNwZWN9KQorCisgICAgICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBiZSBhbGxvd2VkCisgICAgICAgICAgICAgICAgbW9jay5zb21ldGhpbmcKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NvbWV0aGluZ19lbHNlJyIsCisgICAgICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICdzb21ldGhpbmdfZWxzZScKKyAgICAgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2Zyb21fc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICB4ID0gMworICAgICAgICAgICAgX19zb21ldGhpbmdfXyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiB5KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKG1vY2spOgorICAgICAgICAgICAgIyBzaG91bGQgd29yaworICAgICAgICAgICAgbW9jay54CisgICAgICAgICAgICBtb2NrLnkKKyAgICAgICAgICAgIG1vY2suX19zb21ldGhpbmdfXworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAneiciLAorICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICd6JworICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnX19mb29iYXJfXyciLAorICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICdfX2Zvb2Jhcl9fJworICAgICAgICAgICAgKQorCisgICAgICAgIHRlc3RfYXR0cmlidXRlcyhNb2NrKHNwZWM9U29tZXRoaW5nKSkKKyAgICAgICAgdGVzdF9hdHRyaWJ1dGVzKE1vY2soc3BlYz1Tb21ldGhpbmcoKSkpCisKKworICAgIGRlZiB0ZXN0X3dyYXBzX2NhbGxzKHNlbGYpOgorICAgICAgICByZWFsID0gTW9jaygpCisKKyAgICAgICAgbW9jayA9IE1vY2sod3JhcHM9cmVhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIHJlYWwoKSkKKworICAgICAgICByZWFsLnJlc2V0X21vY2soKQorCisgICAgICAgIG1vY2soMSwgMiwgZmlzaD0zKQorICAgICAgICByZWFsLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisKKworICAgIGRlZiB0ZXN0X3dyYXBzX2NhbGxfd2l0aF9ub25kZWZhdWx0X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcmVhbCA9IE1vY2soKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHdyYXBzPXJlYWwpCisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gMworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlYWwuY2FsbGVkKQorCisKKyAgICBkZWYgdGVzdF93cmFwc19hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBSZWFsKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBNb2NrKCkKKworICAgICAgICByZWFsID0gUmVhbCgpCisKKyAgICAgICAgbW9jayA9IE1vY2sod3JhcHM9cmVhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmF0dHJpYnV0ZSgpLCByZWFsLmF0dHJpYnV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLmZpc2gpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtb2NrLmF0dHJpYnV0ZSwgcmVhbC5hdHRyaWJ1dGUpCisgICAgICAgIHJlc3VsdCA9IG1vY2suYXR0cmlidXRlLmZyb2coMSwgMiwgZmlzaD0zKQorICAgICAgICBSZWFsLmF0dHJpYnV0ZS5mcm9nLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBSZWFsLmF0dHJpYnV0ZS5mcm9nKCkpCisKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbmFsX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1BdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9QXR0cmlidXRlRXJyb3IoJ2ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfYmFzZWV4Y2VwdGlvbmFsX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1LZXlib2FyZEludGVycnVwdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5Ym9hcmRJbnRlcnJ1cHQoJ2ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVwdCwgbW9jaykKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBc3NlcnRpb25FcnJvciwgJ05vdCBjYWxsZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhfbWVzc2FnZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZ2VvZmZyZXknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgciJFeHBlY3RlZCAnZ2VvZmZyZXknIHRvIGJlIGNhbGxlZCBvbmNlXC4iLAorICAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCkKKworCisgICAgZGVmIHRlc3RfX25hbWVfXyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9fbmFtZV9fKQorCisgICAgICAgIG1vY2suX19uYW1lX18gPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX19uYW1lX18sICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2xpc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihsaXN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1TdWIoWydmb28nXSkpCisKKyAgICAgICAgbW9jay5hcHBlbmQoMykKKyAgICAgICAgbW9jay5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKworCisgICAgZGVmIHRlc3Rfc3BlY19jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5fX2NsYXNzX18sIFgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9jaygpLl9fY2xhc3NfXy5fX25hbWVfXywgJ01vY2snKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfYXR0cmlidXRlX3dpdGhfc3BlY19zZXQoc2VsZik6CisgICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgICAgIHkgPSAzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKQorICAgICAgICBtb2NrLnggPSAnZm9vJworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIGRlZiBzZXRfYXR0cigpOgorICAgICAgICAgICAgbW9jay54ID0gJ2ZvbycKKworICAgICAgICBtb2NrLnkgPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2F0dHIpCisKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGN1cnJlbnQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHJlY3Vyc2lvbmxpbWl0LCBjdXJyZW50KQorCisgICAgICAgICMgY2FuJ3QgdXNlIHN5cy5tYXhpbnQgYXMgdGhpcyBkb2Vzbid0IGV4aXN0IGluIFB5dGhvbiAzCisgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChpbnQoMTBlOCkpCisgICAgICAgICMgdGhpcyBzZWdmYXVsdHMgd2l0aG91dCB0aGUgZml4IGluIHBsYWNlCisgICAgICAgIGNvcHkuY29weShNb2NrKCkpCisKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzX3dpdGhfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViQ2xhc3MoTW9jayk6CisgICAgICAgICAgICBkZWYgX2dldChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMworICAgICAgICAgICAgZGVmIF9zZXQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignc3RyYW5nZSBlcnJvcicpCisgICAgICAgICAgICBzb21lX2F0dHJpYnV0ZSA9IHByb3BlcnR5KF9nZXQsIF9zZXQpCisKKyAgICAgICAgcyA9IFN1YkNsYXNzKHNwZWNfc2V0PVN1YkNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29tZV9hdHRyaWJ1dGUsIDMpCisKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHMuc29tZV9hdHRyaWJ1dGUgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgdGVzdCkKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcy5mb28gPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3Rfc2V0dGluZ19jYWxsKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX2NhbGwoYSkKKworICAgICAgICB0eXBlKG1vY2spLl9fY2FsbF9fID0gX19jYWxsX18KKyAgICAgICAgbW9jaygnb25lJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJ29uZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnb25lJywgJ3R3bycpCisKKworICAgIGRlZiB0ZXN0X2RpcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBhdHRycyA9IHNldChkaXIobW9jaykpCisgICAgICAgIHR5cGVfYXR0cnMgPSBzZXQoW20gZm9yIG0gaW4gZGlyKE1vY2spIGlmIG5vdCBtLnN0YXJ0c3dpdGgoJ18nKV0pCisKKyAgICAgICAgIyBhbGwgcHVibGljIGF0dHJpYnV0ZXMgZnJvbSB0aGUgdHlwZSBhcmUgaW5jbHVkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdHlwZV9hdHRycyAtIGF0dHJzKQorCisgICAgICAgICMgY3JlYXRlcyB0aGVzZSBhdHRyaWJ1dGVzCisgICAgICAgIG1vY2suYSwgbW9jay5iCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2EnLCBkaXIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2InLCBkaXIobW9jaykpCisKKyAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGVzCisgICAgICAgIG1vY2suYyA9IG1vY2suZCA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYycsIGRpcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZCcsIGRpcihtb2NrKSkKKworICAgICAgICAjIG1hZ2ljIG1ldGhvZHMKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IGxhbWJkYSBzOiBpdGVyKFtdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdfX2l0ZXJfXycsIGRpcihtb2NrKSkKKworCisgICAgZGVmIHRlc3RfZGlyX2Zyb21fc3BlYyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz11bml0dGVzdC5UZXN0Q2FzZSkKKyAgICAgICAgdGVzdGNhc2VfYXR0cnMgPSBzZXQoZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKSkKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKG1vY2spKQorCisgICAgICAgICMgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc3BlYyBhcmUgaW5jbHVkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdGVzdGNhc2VfYXR0cnMgLSBhdHRycykKKworICAgICAgICAjIHNoYWRvdyBhIHN5cyBhdHRyaWJ1dGUKKyAgICAgICAgbW9jay52ZXJzaW9uID0gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihtb2NrKS5jb3VudCgndmVyc2lvbicpLCAxKQorCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfZGlyKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KG1vY2ssICdGSUxURVJfRElSJywgRmFsc2UpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBhdHRycyA9IHNldChkaXIoTW9jaygpKSkKKyAgICAgICAgICAgIHR5cGVfYXR0cnMgPSBzZXQoZGlyKE1vY2spKQorCisgICAgICAgICAgICAjIEFMTCBhdHRyaWJ1dGVzIGZyb20gdGhlIHR5cGUgYXJlIGluY2x1ZGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCB0eXBlX2F0dHJzIC0gYXR0cnMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9jb25maWd1cmVfbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soZm9vPSdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLCAnYmFyJykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKGZvbz0nYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAga3dhcmdzID0geydzaWRlX2VmZmVjdCc6IEtleUVycm9yLCAnZm9vLmJhci5yZXR1cm5fdmFsdWUnOiAzMywKKyAgICAgICAgICAgICAgICAgICdmb28nOiBNYWdpY01vY2soKX0KKyAgICAgICAgbW9jayA9IE1vY2soKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLmJhcigpLCAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBNYWdpY01vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgYXNzZXJ0UmFpc2VzV2l0aE1zZyhzZWxmLCBleGNlcHRpb24sIG1lc3NhZ2UsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgbmVlZGVkIGJlY2F1c2UgYXNzZXJ0UmFpc2VzUmVnZXggZG9lc24ndCB3b3JrIGVhc2lseSB3aXRoIG5ld2xpbmVzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpbnN0YW5jZSA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5zdGFuY2UsIGV4Y2VwdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnRXhjZXB0aW9uICVyIG5vdCByYWlzZWQnICUgKGV4Y2VwdGlvbiwpKQorCisgICAgICAgIG1zZyA9IHN0cihpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIG1lc3NhZ2UpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aF9mYWlsdXJlX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBOb25DYWxsYWJsZU1vY2soKQorCisgICAgICAgIGV4cGVjdGVkID0gIm1vY2soMSwgJzInLCAzLCBiYXI9J2ZvbycpIgorICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5Ob3QgY2FsbGVkJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwpLAorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgsIDEsICcyJywgMywgYmFyPSdmb28nCisgICAgICAgICkKKworICAgICAgICBtb2NrLmZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykKKworCisgICAgICAgIGFzc2VydGVycyA9IFsKKyAgICAgICAgICAgIG1vY2suZm9vLmFzc2VydF9jYWxsZWRfd2l0aCwgbW9jay5mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgKKyAgICAgICAgXQorICAgICAgICBmb3IgbWV0aCBpbiBhc3NlcnRlcnM6CisgICAgICAgICAgICBhY3R1YWwgPSAiZm9vKDEsICcyJywgMywgZm9vPSdmb28nKSIKKyAgICAgICAgICAgIGV4cGVjdGVkID0gImZvbygxLCAnMicsIDMsIGJhcj0nZm9vJykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgMSwgJzInLCAzLCBiYXI9J2ZvbycKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGp1c3Qga3dhcmdzCisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKGJhcj0nZm9vJykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgYmFyPSdmb28nCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBqdXN0IGFyZ3MKKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oMSwgMiwgMykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgMSwgMiwgMworICAgICAgICAgICAgKQorCisgICAgICAgICMgZW1wdHkKKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oKSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbkFjdHVhbCBjYWxsOiAlcycKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzV2l0aE1zZygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwgYWN0dWFsKSwgbWV0aAorICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2NhbGxzKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKworICAgICAgICAjIG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIE1hZ2ljTW9jay5tb2NrX2NhbGxzIHVzZWQgdG8ganVzdCByZXR1cm4KKyAgICAgICAgIyBhIE1hZ2ljTW9jayB3aGljaCBhbHNvIHJldHVybmVkIGEgTWFnaWNNb2NrIHdoZW4gX19lcV9fIHdhcyBjYWxsZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLm1vY2tfY2FsbHMgPT0gW10sIFRydWUpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soKQorICAgICAgICBleHBlY3RlZCA9IFsoJycsICgpLCB7fSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKworICAgICAgICBtb2NrLmZvbygpCisgICAgICAgIGV4cGVjdGVkLmFwcGVuZChjYWxsLmZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgICMgaW50ZXJtZWRpYXRlIG1vY2tfY2FsbHMgd29yayB0b28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5tb2NrX2NhbGxzLCBbKCcnLCAoKSwge30pXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygpLmZvbygxLCAyLCAzLCBhPTQsIGI9NSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJycsICgpLCB7fSksICgnKCkuZm9vJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSkKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5yZXR1cm5fdmFsdWUuZm9vLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sucmV0dXJuX3ZhbHVlLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnZm9vJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSldKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKCkuZm9vLmJhcigpLmJheigpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCcnLCAoKSwge30pLCAoJygpLmZvby5iYXInLCAoKSwge30pLAorICAgICAgICAgICAgKCcoKS5mb28uYmFyKCkuYmF6JywgKCksIHt9KQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmZvby5iYXIoKS5iYXooKS5jYWxsX2xpc3QoKSkKKworICAgICAgICBmb3Iga3dhcmdzIGluIGRpY3QoKSwgZGljdChuYW1lPSdiYXInKToKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBpbnQobW9jay5mb28pCisgICAgICAgICAgICBleHBlY3RlZCA9IFsoJ2Zvby5fX2ludF9fJywgKCksIHt9KV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKworICAgICAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIG1vY2suYSgpKCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gWygnYScsICgpLCB7fSksICgnYSgpJywgKCksIHt9KV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5hKCkubW9ja19jYWxscywgW2NhbGwoKV0pCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrKDEpKDIpKDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgY2FsbCgxKSgyKSgzKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsIGNhbGwoMikoMykuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSgpLm1vY2tfY2FsbHMsIGNhbGwoMykuY2FsbF9saXN0KCkpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrKDEpKDIpKDMpLmEuYi5jKDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgxKSgyKSgzKS5hLmIuYyg0KS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMikoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSgpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBpbnQobW9jaygpLmZvby5iYXIoKS5iYXooKSkKKyAgICAgICAgICAgIGxhc3RfY2FsbCA9ICgnKCkuZm9vLmJhcigpLmJheigpLl9faW50X18nLCAoKSwge30pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxsc1stMV0sIGxhc3RfY2FsbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwuZm9vLmJhcigpLmJheigpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLmZvby5iYXIoKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmJheigpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLmZvby5iYXIoKS5iYXoubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YmNsYXNzKE1vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBTdWJjbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrKCksIFN1YmNsYXNzKQorCisgICAgICAgIGNsYXNzIFN1YmNsYXNzKE1vY2spOgorICAgICAgICAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2soKiprd2FyZ3MpCisKKyAgICAgICAgbW9jayA9IFN1YmNsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2suZm9vLCBTdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2soKSwgU3ViY2xhc3MpCisKKworICAgIGRlZiB0ZXN0X2FyZ19saXN0cyhzZWxmKToKKyAgICAgICAgbW9ja3MgPSBbCisgICAgICAgICAgICBNb2NrKCksCisgICAgICAgICAgICBNYWdpY01vY2soKSwKKyAgICAgICAgICAgIE5vbkNhbGxhYmxlTW9jaygpLAorICAgICAgICAgICAgTm9uQ2FsbGFibGVNYWdpY01vY2soKQorICAgICAgICBdCisKKyAgICAgICAgZGVmIGFzc2VydF9hdHRycyhtb2NrKToKKyAgICAgICAgICAgIG5hbWVzID0gJ2NhbGxfYXJnc19saXN0JywgJ21ldGhvZF9jYWxscycsICdtb2NrX2NhbGxzJworICAgICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHIobW9jaywgbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYXR0ciwgX0NhbGxMaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhdHRyLCBsaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0ciwgW10pCisKKyAgICAgICAgZm9yIG1vY2sgaW4gbW9ja3M6CisgICAgICAgICAgICBhc3NlcnRfYXR0cnMobW9jaykKKworICAgICAgICAgICAgaWYgY2FsbGFibGUobW9jayk6CisgICAgICAgICAgICAgICAgbW9jaygpCisgICAgICAgICAgICAgICAgbW9jaygxLCAyKQorICAgICAgICAgICAgICAgIG1vY2soYT0zKQorCisgICAgICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cnMobW9jaykKKworICAgICAgICAgICAgbW9jay5mb28oKQorICAgICAgICAgICAgbW9jay5mb28uYmFyKDEsIGE9MykKKyAgICAgICAgICAgIG1vY2suZm9vKDEpLmJhcigpLmJheigzKQorCisgICAgICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHJzKG1vY2spCisKKworICAgIGRlZiB0ZXN0X2NhbGxfYXJnc190d29fdHVwbGUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCBhPTMpCisgICAgICAgIG1vY2soMiwgYj00KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suY2FsbF9hcmdzKSwgMikKKyAgICAgICAgYXJncywga3dhcmdzID0gbW9jay5jYWxsX2FyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoMiwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGt3YXJncywgZGljdChiPTQpKQorCisgICAgICAgIGV4cGVjdGVkX2xpc3QgPSBbKCgxLCksIGRpY3QoYT0zKSksICgoMiwpLCBkaWN0KGI9NCkpXQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGNhbGxfYXJncyBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgbW9jay5jYWxsX2FyZ3NfbGlzdCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYWxsX2FyZ3MpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFswXSwgY2FsbF9hcmdzWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFsxXSwgY2FsbF9hcmdzWzFdKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pdGVyYXRvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9aXRlcihbMSwgMiwgM10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9WydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PSdnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydnJywgJ2gnLCAnaSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PUZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2soKSwgRm9vKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUl0ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKSwgbW9jaygpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pdGVyYXRvcl9leGNlcHRpb25zKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgaXRlcmFibGUgPSAoVmFsdWVFcnJvciwgMywgS2V5RXJyb3IsIDYpCisgICAgICAgICAgICBtID0gS2xhc3Moc2lkZV9lZmZlY3Q9aXRlcmFibGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtKCksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSgpLCA2KQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9zZXR0aW5nX2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKyAgICAgICAgc2lkZV9lZmZlY3QgPSBtb2NrLnNpZGVfZWZmZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWRlX2VmZmVjdCwgdHlwZShpdGVyKFtdKSkpCisKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IFsnYScsICdiJywgJ2MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorICAgICAgICBzaWRlX2VmZmVjdCA9IG1vY2suc2lkZV9lZmZlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZGVfZWZmZWN0LCB0eXBlKGl0ZXIoW10pKSkKKworICAgICAgICB0aGlzX2l0ZXIgPSBJdGVyKCkKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IHRoaXNfaXRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpLCBtb2NrKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndGhpcycsICdpcycsICdhbicsICdpdGVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5zaWRlX2VmZmVjdCwgdGhpc19pdGVyKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfaGFzX2NhbGxzX2FueV9vcmRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2soYT0zKQorICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgIG1vY2soYj02KQorICAgICAgICBtb2NrKGI9NikKKworICAgICAgICBrYWxscyA9IFsKKyAgICAgICAgICAgIGNhbGwoMSwgMiksICh7J2EnOiAzfSwpLAorICAgICAgICAgICAgKCgzLCA0KSwpLCAoKCksIHsnYSc6IDN9KSwKKyAgICAgICAgICAgICgnJywgKDEsIDIpKSwgKCcnLCB7J2EnOiAzfSksCisgICAgICAgICAgICAoJycsICgxLCAyKSwge30pLCAoJycsICgpLCB7J2EnOiAzfSkKKyAgICAgICAgXQorICAgICAgICBmb3Iga2FsbCBpbiBrYWxsczoKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhba2FsbF0sIGFueV9vcmRlcj1UcnVlKQorCisgICAgICAgIGZvciBrYWxsIGluIGNhbGwoMSwgJzInKSwgY2FsbChiPTMpLCBjYWxsKCksIDMsIE5vbmUsICdmb28nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICBba2FsbF0sIGFueV9vcmRlcj1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAga2FsbF9saXN0cyA9IFsKKyAgICAgICAgICAgIFtjYWxsKDEsIDIpLCBjYWxsKGI9NildLAorICAgICAgICAgICAgW2NhbGwoMywgNCksIGNhbGwoMSwgMildLAorICAgICAgICAgICAgW2NhbGwoYj02KSwgY2FsbChiPTYpXSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBrYWxsX2xpc3QgaW4ga2FsbF9saXN0czoKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhrYWxsX2xpc3QsIGFueV9vcmRlcj1UcnVlKQorCisgICAgICAgIGthbGxfbGlzdHMgPSBbCisgICAgICAgICAgICBbY2FsbChiPTYpLCBjYWxsKGI9NiksIGNhbGwoYj02KV0sCisgICAgICAgICAgICBbY2FsbCgxLCAyKSwgY2FsbCgxLCAyKV0sCisgICAgICAgICAgICBbY2FsbCgzLCA0KSwgY2FsbCgxLCAyKSwgY2FsbCg1LCA3KV0sCisgICAgICAgICAgICBbY2FsbChiPTYpLCBjYWxsKDMsIDQpLCBjYWxsKGI9NiksIGNhbGwoMSwgMiksIGNhbGwoYj02KV0sCisgICAgICAgIF0KKyAgICAgICAgZm9yIGthbGxfbGlzdCBpbiBrYWxsX2xpc3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICBrYWxsX2xpc3QsIGFueV9vcmRlcj1UcnVlCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfaGFzX2NhbGxzKHNlbGYpOgorICAgICAgICBrYWxsczEgPSBbCisgICAgICAgICAgICAgICAgY2FsbCgxLCAyKSwgKHsnYSc6IDN9LCksCisgICAgICAgICAgICAgICAgKCgzLCA0KSwpLCBjYWxsKGI9NiksCisgICAgICAgICAgICAgICAgKCcnLCAoMSwpLCB7J2InOiA2fSksCisgICAgICAgIF0KKyAgICAgICAga2FsbHMyID0gW2NhbGwuZm9vKCksIGNhbGwuYmFyKDEpXQorICAgICAgICBrYWxsczIuZXh0ZW5kKGNhbGwuc3BhbSgpLmJheihhPTMpLmNhbGxfbGlzdCgpKQorICAgICAgICBrYWxsczIuZXh0ZW5kKGNhbGwuYmFtKHNldCgpLCBmb289e30pLmZpc2goWzFdKS5jYWxsX2xpc3QoKSkKKworICAgICAgICBtb2NrcyA9IFtdCisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgICAgIG1vY2soMywgNCkKKyAgICAgICAgICAgIG1vY2soYj02KQorICAgICAgICAgICAgbW9jaygxLCBiPTYpCisgICAgICAgICAgICBtb2Nrcy5hcHBlbmQoKG1vY2ssIGthbGxzMSkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmZvbygpCisgICAgICAgIG1vY2suYmFyKDEpCisgICAgICAgIG1vY2suc3BhbSgpLmJheihhPTMpCisgICAgICAgIG1vY2suYmFtKHNldCgpLCBmb289e30pLmZpc2goWzFdKQorICAgICAgICBtb2Nrcy5hcHBlbmQoKG1vY2ssIGthbGxzMikpCisKKyAgICAgICAgZm9yIG1vY2ssIGthbGxzIGluIG1vY2tzOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGthbGxzKSk6CisgICAgICAgICAgICAgICAgZm9yIHN0ZXAgaW4gMSwgMiwgMzoKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgPSBrYWxsc1tpOmkrc3RlcF0KKyAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzKHRoZXNlKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbih0aGVzZSkgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmV2ZXJzZWQodGhlc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfYW55X2NhbGwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgbW9jaygxLCBiPTYpCisKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoMSwgMikKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoYT0zKQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCBiPTYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsLAorICAgICAgICAgICAgMSwgMworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCwKKyAgICAgICAgICAgIGE9NAorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X21vY2tfY2FsbHNfY3JlYXRlX2F1dG9zcGVjKHNlbGYpOgorICAgICAgICBkZWYgZihhLCBiKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgb2JqID0gSXRlcigpCisgICAgICAgIG9iai5mID0gZgorCisgICAgICAgIGZ1bmNzID0gWworICAgICAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGYpLAorICAgICAgICAgICAgY3JlYXRlX2F1dG9zcGVjKG9iaikuZgorICAgICAgICBdCisgICAgICAgIGZvciBmdW5jIGluIGZ1bmNzOgorICAgICAgICAgICAgZnVuYygxLCAyKQorICAgICAgICAgICAgZnVuYygzLCA0KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGZ1bmMubW9ja19jYWxscywgW2NhbGwoMSwgMiksIGNhbGwoMywgNCldCisgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X21vY2tfYWRkX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIF9PbmUob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9IDEKKyAgICAgICAgY2xhc3MgX1R3byhvYmplY3QpOgorICAgICAgICAgICAgdHdvID0gMgorICAgICAgICBjbGFzcyBBbnl0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgb25lID0gdHdvID0gdGhyZWUgPSAnZm91cicKKworICAgICAgICBrbGFzc2VzID0gWworICAgICAgICAgICAgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgICAgIF0KKyAgICAgICAgZm9yIEtsYXNzIGluIGxpc3Qoa2xhc3Nlcyk6CisgICAgICAgICAgICBrbGFzc2VzLmFwcGVuZChsYW1iZGEgSz1LbGFzczogSyhzcGVjPUFueXRoaW5nKSkKKyAgICAgICAgICAgIGtsYXNzZXMuYXBwZW5kKGxhbWJkYSBLPUtsYXNzOiBLKHNwZWNfc2V0PUFueXRoaW5nKSkKKworICAgICAgICBmb3IgS2xhc3MgaW4ga2xhc3NlczoKKyAgICAgICAgICAgIGZvciBrd2FyZ3MgaW4gZGljdCgpLCBkaWN0KHNwZWNfc2V0PVRydWUpOgorICAgICAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICAgICAgI25vIGVycm9yCisgICAgICAgICAgICAgICAgbW9jay5vbmUsIG1vY2sudHdvLCBtb2NrLnRocmVlCisKKyAgICAgICAgICAgICAgICBmb3IgT25lLCBUd28gaW4gWyhfT25lLCBfVHdvKSwgKFsnb25lJ10sIFsndHdvJ10pXToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJncyBpbiBkaWN0KCksIGRpY3Qoc3BlY19zZXQ9VHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm1vY2tfYWRkX3NwZWMoT25lLCAqKmt3YXJncykKKworICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAndHdvJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICd0aHJlZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdzcGVjX3NldCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jaywgJ3RocmVlJywgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKFR3bywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ29uZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sudHdvCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ3RocmVlJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3NwZWNfc2V0JyBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLCAndGhyZWUnLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBub3RlIHRoYXQgY3JlYXRpbmcgYSBtb2NrLCBzZXR0aW5nIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgYW5kCisgICAgICAgICAgICAjICp0aGVuKiBzZXR0aW5nIGEgc3BlYyBkb2Vzbid0IHdvcmsuIE5vdCB0aGUgaW50ZW5kZWQgdXNlIGNhc2UKKworCisgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlY19tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jazoKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBpbnQobW9jaykKKworICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKG9iamVjdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrKQorCisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9ja1snZm9vJ10KKyAgICAgICAgICAgIG1vY2suX19pbnRfXy5yZXR1cm5fdmFsdWUgPTQKKworICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG1vY2spLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorCisKKyAgICBkZWYgdGVzdF9hZGRpbmdfY2hpbGRfbW9jayhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE5vbkNhbGxhYmxlTW9jaywgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jazoKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisKKyAgICAgICAgICAgIG1vY2suZm9vID0gTW9jaygpCisgICAgICAgICAgICBtb2NrLmZvbygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtjYWxsLmZvbygpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbC5mb28oKV0pCisKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrLmJhciA9IE1vY2sobmFtZT0nbmFtZScpCisgICAgICAgICAgICBtb2NrLmJhcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworICAgICAgICAgICAgIyBtb2NrIHdpdGggYW4gZXhpc3RpbmcgX25ld19wYXJlbnQgYnV0IG5vIG5hbWUKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrLmJheiA9IE1hZ2ljTW9jaygpKCkKKyAgICAgICAgICAgIG1vY2suYmF6KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtdKQorCisKKyAgICBkZWYgdGVzdF9hZGRpbmdfcmV0dXJuX3ZhbHVlX21vY2soc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBNYWdpY01vY2soKQorCisgICAgICAgICAgICBtb2NrKCkoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKSgpXSkKKworCisgICAgZGVmIHRlc3RfbWFuYWdlcl9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9ICdvbmUnCisgICAgICAgICAgICB0d28gPSAndHdvJworICAgICAgICBtYW5hZ2VyID0gTW9jaygpCisgICAgICAgIHAxID0gcGF0Y2gub2JqZWN0KEZvbywgJ29uZScpCisgICAgICAgIHAyID0gcGF0Y2gub2JqZWN0KEZvbywgJ3R3bycpCisKKyAgICAgICAgbW9ja19vbmUgPSBwMS5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwMS5zdG9wKQorICAgICAgICBtb2NrX3R3byA9IHAyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAyLnN0b3ApCisKKyAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhtb2NrX29uZSwgJ29uZScpCisgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2sobW9ja190d28sICd0d28nKQorCisgICAgICAgIEZvby50d28oKQorICAgICAgICBGb28ub25lKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIubW9ja19jYWxscywgW2NhbGwudHdvKCksIGNhbGwub25lKCldKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX21vY2tfY2FsbHMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgbS5fX2ludF9fID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgIG0uX19mbG9hdF9fID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT0zLjApCisgICAgICAgICAgICBpbnQobSkKKyAgICAgICAgICAgIGZsb2F0KG0pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBbY2FsbC5fX2ludF9fKCksIGNhbGwuX19mbG9hdF9fKCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxscywgW10pCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9kZWxldGlvbihzZWxmKToKKyAgICAgICAgIyB0aGlzIGJlaGF2aW91ciBpc24ndCAqdXNlZnVsKiwgYnV0IGF0IGxlYXN0IGl0J3Mgbm93IHRlc3RlZC4uLgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrOgorICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gbS5mb28KKyAgICAgICAgICAgIG0uZm9vID0gMworICAgICAgICAgICAgZGVsIG0uZm9vCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZm9vLCBvcmlnaW5hbCkKKworICAgICAgICAgICAgbmV3ID0gbS5mb28gPSBNb2NrKCkKKyAgICAgICAgICAgIGRlbCBtLmZvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvbywgbmV3KQorCisKKyAgICBkZWYgdGVzdF9tb2NrX3BhcmVudHMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgb3JpZ2luYWxfcmVwciA9IHJlcHIobSkKKyAgICAgICAgICAgIG0ucmV0dXJuX3ZhbHVlID0gbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtKCksIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisKKyAgICAgICAgICAgIG0ucmVzZXRfbW9jaygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0oKSwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgb3JpZ2luYWxfcmVwcikKKworICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG0uYiA9IG0uYQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5iKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYSkpCisgICAgICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5iKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYSkpCisKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBvcmlnaW5hbF9yZXByID0gcmVwcihtKQorICAgICAgICAgICAgbS5hID0gbSgpCisgICAgICAgICAgICBtLmEucmV0dXJuX3ZhbHVlID0gbQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobS5hKCkpLCBvcmlnaW5hbF9yZXByKQorCisKKyAgICBkZWYgdGVzdF9hdHRhY2hfbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3NlcyA9IE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaworICAgICAgICBmb3IgS2xhc3MgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIGZvciBLbGFzczIgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBtID0gS2xhc3MoKQorCisgICAgICAgICAgICAgICAgbTIgPSBLbGFzczIobmFtZT0nZm9vJykKKyAgICAgICAgICAgICAgICBtLmF0dGFjaF9tb2NrKG0yLCAnYmFyJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5iYXIsIG0yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYmFyJyIsIHJlcHIobTIpKQorCisgICAgICAgICAgICAgICAgbS5iYXIuYmF6KDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIFtjYWxsLmJhci5iYXooMSldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIFtjYWxsLmJhci5iYXooMSldKQorCisKKyAgICBkZWYgdGVzdF9hdHRhY2hfbW9ja19yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIGNsYXNzZXMgPSBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2sKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIGZvciBLbGFzczIgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBtID0gS2xhc3MoKQorCisgICAgICAgICAgICAgICAgbTIgPSBLbGFzczIobmFtZT0nZm9vJykKKyAgICAgICAgICAgICAgICBtLmF0dGFjaF9tb2NrKG0yLCAncmV0dXJuX3ZhbHVlJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobSgpLCBtMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrKCknIiwgcmVwcihtMikpCisKKyAgICAgICAgICAgICAgICBtMi5mb28oKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBjYWxsKCkuZm9vKCkuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9kZWxldGlvbihzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssICdtJykpCisKKyAgICAgICAgICAgIGRlbCBtb2NrLm0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnbScpKQorCisgICAgICAgICAgICBkZWwgbW9jay5mCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ2YnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZicpCisKKworICAgIGRlZiB0ZXN0X2NsYXNzX2Fzc2lnbmFibGUoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UobW9jaywgaW50KQorCisgICAgICAgICAgICBtb2NrLl9fY2xhc3NfXyA9IGludAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIGludCkKKyAgICAgICAgICAgIG1vY2suZm9vCisKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMDkxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTAsMCArMSwxNzg1IEBACisjIENvcHlyaWdodCAoQykgMjAwNy0yMDEyIE1pY2hhZWwgRm9vcmQgJiB0aGUgbW9jayB0ZWFtCisjIEUtbWFpbDogZnV6enltYW4gQVQgdm9pZHNwYWNlIERPVCBvcmcgRE9UIHVrCisjIGh0dHA6Ly93d3cudm9pZHNwYWNlLm9yZy51ay9weXRob24vbW9jay8KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrIGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgU29tZUNsYXNzLCBpc19pbnN0YW5jZQorCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBOb25DYWxsYWJsZU1vY2ssIENhbGxhYmxlTWl4aW4sIHBhdGNoLCBzZW50aW5lbCwKKyAgICBNYWdpY01vY2ssIE1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBwYXRjaCwgX3BhdGNoLAorICAgIERFRkFVTFQsIGNhbGwsIF9nZXRfdGFyZ2V0CispCisKKworYnVpbHRpbl9zdHJpbmcgPSAnYnVpbHRpbnMnCisKK1BUTW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCitNT0ROQU1FID0gJyVzLlBUTW9kdWxlJyAlIF9fbmFtZV9fCisKKworZGVmIF9nZXRfcHJveHkob2JqLCBnZXRfb25seT1UcnVlKToKKyAgICBjbGFzcyBQcm94eShvYmplY3QpOgorICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmosIG5hbWUpCisgICAgaWYgbm90IGdldF9vbmx5OgorICAgICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlKQorICAgICAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBkZWxhdHRyKG9iaiwgbmFtZSkKKyAgICAgICAgUHJveHkuX19zZXRhdHRyX18gPSBfX3NldGF0dHJfXworICAgICAgICBQcm94eS5fX2RlbGF0dHJfXyA9IF9fZGVsYXR0cl9fCisgICAgcmV0dXJuIFByb3h5KCkKKworCisjIGZvciB1c2UgaW4gdGhlIHRlc3QKK3NvbWV0aGluZyAgPSBzZW50aW5lbC5Tb21ldGhpbmcKK3NvbWV0aGluZ19lbHNlICA9IHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UKKworCitjbGFzcyBGb28ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYSk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgZihzZWxmLCBhKToKKyAgICAgICAgcGFzcworICAgIGRlZiBnKHNlbGYpOgorICAgICAgICBwYXNzCisgICAgZm9vID0gJ2JhcicKKworICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworZm9vX25hbWUgPSAnJXMuRm9vJyAlIF9fbmFtZV9fCisKKworZGVmIGZ1bmN0aW9uKGEsIGI9Rm9vKToKKyAgICBwYXNzCisKKworY2xhc3MgQ29udGFpbmVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnZhbHVlcyA9IHt9CisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlc1tuYW1lXQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZXNbbmFtZV0gPSB2YWx1ZQorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIG5hbWUpOgorICAgICAgICBkZWwgc2VsZi52YWx1ZXNbbmFtZV0KKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi52YWx1ZXMpCisKKworCitjbGFzcyBQYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGFzc2VydE5vdENhbGxhYmxlKHNlbGYsIG9iaiwgbWFnaWM9VHJ1ZSk6CisgICAgICAgIE1vY2tDbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgICAgIGlmIG5vdCBtYWdpYzoKKyAgICAgICAgICAgIE1vY2tDbGFzcyA9IE5vbkNhbGxhYmxlTW9jaworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb2JqKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2Uob2JqLCBNb2NrQ2xhc3MpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2luc3RhbmNlKG9iaiwgQ2FsbGFibGVNaXhpbikpCisKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9wYXRjaG9iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfbm9uZShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgTm9uZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFNvbWV0aGluZy5hdHRyaWJ1dGUsICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9wYXRjaG9iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbDIKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnbmV4dF9hdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkMikKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5uZXh0X2F0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5uZXh0X2F0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9vYmplY3RfbG9va3VwX2lzX3F1aXRlX2xhenkoc2VsZik6CisgICAgICAgIGdsb2JhbCBzb21ldGhpbmcKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgQHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29tZXRoaW5nID0gc2VudGluZWwucmVwbGFjZW1lbnRfdmFsdWUKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLnJlcGxhY2VtZW50X3ZhbHVlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc29tZXRoaW5nID0gb3JpZ2luYWwKKworCisgICAgZGVmIHRlc3RfcGF0Y2goc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworICAgICAgICAjIFRlc3QgdGhlIHBhdGNoaW5nIGFuZCByZXN0b3Jpbmcgd29ya3MgYSBzZWNvbmQgdGltZQorICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5IYW5kbGUKKyAgICAgICAgQHBhdGNoKCclcy5vcGVuJyAlIGJ1aWx0aW5fc3RyaW5nLCBtb2NrKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuKCdmaWxlbmFtZScsICdyJyksIHNlbnRpbmVsLkhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZW4gbm90IHBhdGNoZWQiKQorICAgICAgICB0ZXN0KCkKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcGVuLCBtb2NrLCAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUnICUgX19uYW1lX18sCisgICAgICAgICAgICAgICBzZW50aW5lbC5DbGFzc0F0dHJpYnV0ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGluZWwuQ2xhc3NBdHRyaWJ1dGUsICJ1bnBhdGNoZWQiKQorICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShQVE1vZHVsZS5Tb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9kZWZhdWx0X21vY2soc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Qob2JqZWN0KToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHNlbnRpbmVsLk9yaWdpbmFsCisgICAgICAgICAgICBzb21ldGhpbmcyID0gc2VudGluZWwuT3JpZ2luYWwyCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChUZXN0LCAnc29tZXRoaW5nJykKKyAgICAgICAgZGVmIHRlc3QobW9jayk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2ssIFRlc3Quc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9jayBub3QgcGFzc2VkIGludG8gdGVzdCBmdW5jdGlvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgTWFnaWNNb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCB3aXRoIHR3byBhcmd1bWVudHMgZGlkIG5vdCBjcmVhdGUgYSBtb2NrIikKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFRlc3QsICdzb21ldGhpbmcnKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFRlc3QsICdzb21ldGhpbmcyJykKKyAgICAgICAgZGVmIHRlc3QodGhpczEsIHRoaXMyLCBtb2NrMSwgbW9jazIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGlzMSwgc2VudGluZWwudGhpczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaGVkIGZ1bmN0aW9uIGRpZG4ndCByZWNlaXZlIGluaXRpYWwgYXJndW1lbnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGlzMiwgc2VudGluZWwudGhpczIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaGVkIGZ1bmN0aW9uIGRpZG4ndCByZWNlaXZlIHNlY29uZCBhcmd1bWVudCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sxLCBUZXN0LnNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2NrIG5vdCBwYXNzZWQgaW50byB0ZXN0IGZ1bmN0aW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jazIsIFRlc3Quc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Vjb25kIE1vY2sgbm90IHBhc3NlZCBpbnRvIHRlc3QgZnVuY3Rpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2syLCBNYWdpY01vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIHdpdGggdHdvIGFyZ3VtZW50cyBkaWQgbm90IGNyZWF0ZSBhIG1vY2siKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2syLCBNYWdpY01vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIHdpdGggdHdvIGFyZ3VtZW50cyBkaWQgbm90IGNyZWF0ZSBhIG1vY2siKQorCisgICAgICAgICAgICAjIEEgaGFjayB0byB0ZXN0IHRoYXQgbmV3IG1vY2tzIGFyZSBwYXNzZWQgdGhlIHNlY29uZCB0aW1lCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG91dGVyTW9jazEsIG1vY2sxLCAidW5leHBlY3RlZCB2YWx1ZSBmb3IgbW9jazEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvdXRlck1vY2syLCBtb2NrMiwgInVuZXhwZWN0ZWQgdmFsdWUgZm9yIG1vY2sxIikKKyAgICAgICAgICAgIHJldHVybiBtb2NrMSwgbW9jazIKKworICAgICAgICBvdXRlck1vY2sxID0gb3V0ZXJNb2NrMiA9IE5vbmUKKyAgICAgICAgb3V0ZXJNb2NrMSwgb3V0ZXJNb2NrMiA9IHRlc3Qoc2VudGluZWwudGhpczEsIHNlbnRpbmVsLnRoaXMyKQorCisgICAgICAgICMgVGVzdCB0aGF0IGV4ZWN1dGluZyBhIHNlY29uZCB0aW1lIGNyZWF0ZXMgbmV3IG1vY2tzCisgICAgICAgIHRlc3Qoc2VudGluZWwudGhpczEsIHNlbnRpbmVsLnRoaXMyKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3NwZWMoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVNvbWVDbGFzcykKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3Mud2liYmxlLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfc3BlYyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19hdHRyaWJ1dGUnLCBzcGVjPVNvbWVDbGFzcykKKyAgICAgICAgZGVmIHRlc3QoTW9ja0F0dHJpYnV0ZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUsIE1vY2tBdHRyaWJ1dGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZS53aWJibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19hdHRyaWJ1dGUnLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tBdHRyaWJ1dGUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLCBNb2NrQXR0cmlidXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUud2liYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X25lc3RlZF9wYXRjaF93aXRoX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgIyByZWdyZXNzaW9uIHRlc3QgZm9yIG5lc3RlZCBkZWNvcmF0b3JzCisgICAgICAgIEBwYXRjaCgnJXMub3BlbicgJSBidWlsdGluX3N0cmluZykKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9Wyd3aWJibGUnXSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcywgTW9ja09wZW4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjX2FzX2Jvb2xlYW4oc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBNb2NrU29tZUNsYXNzLndpYmJsZQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBNb2NrU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX29iamVjdF93aXRoX3NwZWNfYXNfYm9vbGVhbihzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChQVE1vZHVsZSwgJ1NvbWVDbGFzcycsIHNwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgICMgU2hvdWxkIG5vdCByYWlzZSBhdHRyaWJ1dGUgZXJyb3IKKyAgICAgICAgICAgIE1vY2tTb21lQ2xhc3Mud2liYmxlCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IE1vY2tTb21lQ2xhc3Mubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfYWN0c193aXRoX3NwZWNfaXNfaW5oZXJpdGVkKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShNb2NrU29tZUNsYXNzLCBNYWdpY01vY2spKQorICAgICAgICAgICAgaW5zdGFuY2UgPSBNb2NrU29tZUNsYXNzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUoaW5zdGFuY2UpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBpbnN0YW5jZS53aWJibGUKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogaW5zdGFuY2Uubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9jcmVhdGVfbW9ja3Nfbm9uX2V4aXN0ZW50X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuZnJvb2JsZScgJSBidWlsdGluX3N0cmluZywgc2VudGluZWwuRnJvb2JsZSwgY3JlYXRlPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyb29ibGUsIHNlbnRpbmVsLkZyb29ibGUpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBmcm9vYmxlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX2NyZWF0ZV9tb2Nrc19ub25fZXhpc3RlbnRfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdmcm9vYmxlJywgc2VudGluZWwuRnJvb2JsZSwgY3JlYXRlPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5mcm9vYmxlLCBzZW50aW5lbC5Gcm9vYmxlKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93b250X2NyZWF0ZV9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBAcGF0Y2goJyVzLmZyb29ibGUnICUgYnVpbHRpbl9zdHJpbmcsIHNlbnRpbmVsLkZyb29ibGUpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJvb2JsZSwgc2VudGluZWwuRnJvb2JsZSkKKworICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBmcm9vYmxlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93b250X2NyZWF0ZV9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2Zyb29ibGUnLCBzZW50aW5lbC5Gcm9vYmxlKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKKworICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3N0YXRpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiB3b290KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRpbmVsLlN0YXRpYworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnd29vdCcsIHN0YXRpY21ldGhvZChsYW1iZGE6IHNlbnRpbmVsLlBhdGNoZWQpKQorICAgICAgICBkZWYgYW5vbnltb3VzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby53b290KCksIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28ud29vdCgpLCBzZW50aW5lbC5TdGF0aWMpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2xvY2FsKHNlbGYpOgorICAgICAgICBmb28gPSBzZW50aW5lbC5Gb28KKyAgICAgICAgQHBhdGNoLm9iamVjdChzZW50aW5lbCwgJ0ZvbycsICdGb28nKQorICAgICAgICBkZWYgYW5vbnltb3VzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnRpbmVsLkZvbywgJ0ZvbycpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC5Gb28sIGZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc2xvdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCdGb28nLCkKKworICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBmb28uRm9vID0gc2VudGluZWwuRm9vCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChmb28sICdGb28nLCAnRm9vJykKKyAgICAgICAgZGVmIGFub255bW91cygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uRm9vLCAnRm9vJykKKyAgICAgICAgYW5vbnltb3VzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5Gb28sIHNlbnRpbmVsLkZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3RfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qob3RoZXJfc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBkZWYgbm90X3Rlc3RfbWV0aG9kKG90aGVyX3NlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXRlc3QgbWV0aG9kIHBhdGNoZWQiKQorCisgICAgICAgIEZvbyA9IHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKShGb28pCisKKyAgICAgICAgZiA9IEZvbygpCisgICAgICAgIGYudGVzdF9tZXRob2QoKQorICAgICAgICBmLm5vdF90ZXN0X21ldGhvZCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qob3RoZXJfc2VsZiwgbW9ja19zb21ldGhpbmcpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgZGVmIG5vdF90ZXN0X21ldGhvZChvdGhlcl9zZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi10ZXN0IG1ldGhvZCBwYXRjaGVkIikKKyAgICAgICAgRm9vID0gcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykoRm9vKQorCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLnRlc3RfbWV0aG9kKCkKKyAgICAgICAgZi5ub3RfdGVzdF9tZXRob2QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3R3aWNlKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsMgorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLCAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0KHNlbGYpOgorICAgICAgICBmb28gPSB7J2luaXRpYWwnOiBvYmplY3QoKSwgJ290aGVyJzogJ3NvbWV0aGluZyd9CisgICAgICAgIG9yaWdpbmFsID0gZm9vLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZGVsIGZvb1snaW5pdGlhbCddCisgICAgICAgICAgICBmb29bJ290aGVyJ10gPSAnc29tZXRoaW5nIGVsc2UnCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvbyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgWygnYScsICdiJyldKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9vKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vWydhJ10sICdiJykKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jb250YWluZXJfb2JqZWN0KHNlbGYpOgorICAgICAgICBmb28gPSBDb250YWluZXIoKQorICAgICAgICBmb29bJ2luaXRpYWwnXSA9IG9iamVjdCgpCisgICAgICAgIGZvb1snb3RoZXInXSA9ICAnc29tZXRoaW5nJworCisgICAgICAgIG9yaWdpbmFsID0gZm9vLnZhbHVlcy5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGRlbCBmb29bJ2luaXRpYWwnXQorICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9vLnZhbHVlcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF93aXRoX2NsZWFyKHNlbGYpOgorICAgICAgICBmb28gPSB7J2luaXRpYWwnOiBvYmplY3QoKSwgJ290aGVyJzogJ3NvbWV0aGluZyd9CisgICAgICAgIG9yaWdpbmFsID0gZm9vLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBbKCdhJywgJ2InKV0sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jb250YWluZXJfb2JqZWN0X2FuZF9jbGVhcihzZWxmKToKKyAgICAgICAgZm9vID0gQ29udGFpbmVyKCkKKyAgICAgICAgZm9vWydpbml0aWFsJ10gPSBvYmplY3QoKQorICAgICAgICBmb29bJ290aGVyJ10gPSAgJ3NvbWV0aGluZycKKworICAgICAgICBvcmlnaW5hbCA9IGZvby52YWx1ZXMuY29weSgpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCB7fSkKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9LCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCB7J2EnOiAnYid9KQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X25hbWVfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBmb28gPSB7fQorCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBvYmplY3QoKSkKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIG9iamVjdCgpLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgb2JqZWN0KCkpCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgZGVmIHNvbWVfbmFtZSgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZV9uYW1lLl9fbmFtZV9fLCAnc29tZV9uYW1lJykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGZvbyA9IHt9CisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdLb25yYWQnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTmFtZUVycm9yIG5vdCByYWlzZWQgYnkgdGVzdCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfc3RyaW5nKHNlbGYpOgorICAgICAgICBAcGF0Y2guZGljdCgnb3MuZW52aXJvbicsIHsna29ucmFkX2RlbG9uZyc6ICdzb21lIHZhbHVlJ30pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdrb25yYWRfZGVsb25nJywgb3MuZW52aXJvbikKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGVzY3JpcHRvcihzZWxmKToKKyAgICAgICAgIyB3b3VsZCBiZSBzb21lIGVmZm9ydCB0byBmaXggdGhpcyAtIHdlIGNvdWxkIHNwZWNpYWwgY2FzZSB0aGUKKyAgICAgICAgIyBidWlsdGluIGRlc2NyaXB0b3JzOiBjbGFzc21ldGhvZCwgcHJvcGVydHksIHN0YXRpY21ldGhvZAorICAgICAgICByZXR1cm4KKyAgICAgICAgY2xhc3MgTm90aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0gTm9uZQorCisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0ge30KKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChOb3RoaW5nLCAnZm9vJywgMikKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGtsYXNzKGNscyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjbHMsIFNvbWV0aGluZykKKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChOb3RoaW5nLCAnZm9vJywgMikKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBzdGF0aWMoYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnCisKKyAgICAgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGtsYXNzX2RpY3QoY2xzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNscywgU29tZXRoaW5nKQorCisgICAgICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgc3RhdGljX2RpY3QoYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnCisKKyAgICAgICAgIyB0aGVzZSB3aWxsIHJhaXNlIGV4Y2VwdGlvbnMgaWYgcGF0Y2hpbmcgZGVzY3JpcHRvcnMgaXMgYnJva2VuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLnN0YXRpYygnZjAwJyksICdmMDAnKQorICAgICAgICBTb21ldGhpbmcua2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5zdGF0aWNfZGljdCgnZjAwJyksICdmMDAnKQorICAgICAgICBTb21ldGhpbmcua2xhc3NfZGljdCgpCisKKyAgICAgICAgc29tZXRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuc3RhdGljKCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIHNvbWV0aGluZy5rbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLnN0YXRpY19kaWN0KCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIHNvbWV0aGluZy5rbGFzc19kaWN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19zZXQoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVNvbWVDbGFzcywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworICAgICAgICBAcGF0Y2gub2JqZWN0KHN1cHBvcnQsICdTb21lQ2xhc3MnLCBzcGVjPVNvbWVDbGFzcywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChzdXBwb3J0LCAnU29tZUNsYXNzJywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19zZXRfaW5oZXJpdChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBpbnN0YW5jZSA9IE1vY2tDbGFzcygpCisgICAgICAgICAgICBpbnN0YW5jZS56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3RhcnRfc3RvcChzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBvcmlnaW5hbCkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vY2ssIG9yaWdpbmFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG1vY2spCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3N0b3Bfd2l0aG91dF9zdGFydChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCAnYmFyJywgMykKKworICAgICAgICAjIGNhbGxpbmcgc3RvcCB3aXRob3V0IHN0YXJ0IHVzZWQgdG8gcHJvZHVjZSBhIHZlcnkgb2JzY3VyZSBlcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHBhdGNoZXIuc3RvcCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfc3RhcnRfc3RvcChzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChQVE1vZHVsZSwgJ3NvbWV0aGluZycsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisgICAgICAgIHJlcGxhY2VkID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwbGFjZWQsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIHJlcGxhY2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3N0YXJ0X3N0b3Aoc2VsZik6CisgICAgICAgIGQgPSB7J2Zvbyc6ICdiYXInfQorICAgICAgICBvcmlnaW5hbCA9IGQuY29weSgpCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5kaWN0KGQsIFsoJ3NwYW0nLCAnZWdncycpXSwgY2xlYXI9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7J3NwYW0nOiAnZWdncyd9KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9jbGFzc19kZWNvcmF0b3Ioc2VsZik6CisgICAgICAgIHRoaXMgPSBzZWxmCisgICAgICAgIGQgPSB7J3NwYW0nOiAnZWdncyd9CisgICAgICAgIG9yaWdpbmFsID0gZC5jb3B5KCkKKworICAgICAgICBjbGFzcyBUZXN0KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9maXJzdChzZWxmKToKKyAgICAgICAgICAgICAgICB0aGlzLmFzc2VydEVxdWFsKGQsIHsnZm9vJzogJ2Jhcid9KQorICAgICAgICAgICAgZGVmIHRlc3Rfc2Vjb25kKHNlbGYpOgorICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWwoZCwgeydmb28nOiAnYmFyJ30pCisKKyAgICAgICAgVGVzdCA9IHBhdGNoLmRpY3QoZCwgeydmb28nOiAnYmFyJ30sIGNsZWFyPVRydWUpKFRlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdCA9IFRlc3QoKQorCisgICAgICAgIHRlc3QudGVzdF9maXJzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdC50ZXN0X3NlY29uZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdCA9IFRlc3QoKQorCisgICAgICAgIHRlc3QudGVzdF9maXJzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdC50ZXN0X3NlY29uZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X2dldF9vbmx5X3Byb3h5KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisgICAgICAgIGNsYXNzIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBmb28gPSAnZm9vJworCisgICAgICAgIGZvciB0aGluZyBpbiBTb21ldGhpbmcsIFNvbWV0aGluZ0Vsc2UsIFNvbWV0aGluZygpLCBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgcHJveHkgPSBfZ2V0X3Byb3h5KHRoaW5nKQorCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KHByb3h5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnYmFyJykKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGluZy5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZm9vJywgcHJveHkuX19kaWN0X18pCisKKworICAgIGRlZiB0ZXN0X2dldF9zZXRfZGVsZXRlX3Byb3h5KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisgICAgICAgIGNsYXNzIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBmb28gPSAnZm9vJworCisgICAgICAgIGZvciB0aGluZyBpbiBTb21ldGhpbmcsIFNvbWV0aGluZ0Vsc2UsIFNvbWV0aGluZygpLCBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgcHJveHkgPSBfZ2V0X3Byb3h5KFNvbWV0aGluZywgZ2V0X29ubHk9RmFsc2UpCisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QocHJveHksICdmb28nLCAnYmFyJykKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdiYXInKQorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3h5LmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoaW5nLmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdmb28nLCBwcm94eS5fX2RpY3RfXykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3NpZGVfZWZmZWN0JzogS2V5RXJyb3IsICdmb28uYmFyLnJldHVybl92YWx1ZSc6IDMzLAorICAgICAgICAgICAgICAgICAgJ2Zvbyc6IE1hZ2ljTW9jaygpfQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9vYmplY3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3NpZGVfZWZmZWN0JzogS2V5RXJyb3IsICdmb28uYmFyLnJldHVybl92YWx1ZSc6IDMzLAorICAgICAgICAgICAgICAgICAgJ2Zvbyc6IE1hZ2ljTW9jaygpfQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsICoqa3dhcmdzKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0geydmb28nOiAnYmFyJ30KKyAgICAgICAgY29weSA9IG9yaWdpbmFsLmNvcHkoKQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5kaWN0KG9yaWdpbmFsLCBmb289MywgYmFyPTQsIGJhej01KQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdpbmFsLCBkaWN0KGZvbz0zLCBiYXI9NCwgYmF6PTUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdpbmFsLCBjb3B5KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgQm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGYoc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGcoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZm9vID0gJ2JhcicKKworICAgICAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIGEoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgX3Rlc3QobW9jayk6CisgICAgICAgICAgICBtb2NrKDEpCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisgICAgICAgIGRlZiBfdGVzdDIobW9jayk6CisgICAgICAgICAgICBtb2NrLmYoMSkKKyAgICAgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5mKQorCisgICAgICAgICAgICBtb2NrLmcoKQorICAgICAgICAgICAgbW9jay5nLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suZywgMSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdoJykKKworICAgICAgICAgICAgbW9jay5mb28ubG93ZXIoKQorICAgICAgICAgICAgbW9jay5mb28ubG93ZXIuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAgICAgIG1vY2suQmFyKCkKKyAgICAgICAgICAgIG1vY2suQmFyLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKKyAgICAgICAgICAgIG1vY2suQmFyLmEoKQorICAgICAgICAgICAgbW9jay5CYXIuYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLkJhci5hLCAxKQorCisgICAgICAgICAgICBtb2NrLkJhcigpLmEoKQorICAgICAgICAgICAgbW9jay5CYXIoKS5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suQmFyKCkuYSwgMSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suQmFyLCAnYicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5CYXIoKSwgJ2InKQorCisgICAgICAgIGRlZiBmdW5jdGlvbihtb2NrKToKKyAgICAgICAgICAgIF90ZXN0KG1vY2spCisgICAgICAgICAgICBfdGVzdDIobW9jaykKKyAgICAgICAgICAgIF90ZXN0Mihtb2NrKDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLCBGb28pCisgICAgICAgICAgICByZXR1cm4gbW9jaworCisgICAgICAgIHRlc3QgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9VHJ1ZSkoZnVuY3Rpb24pCisKKyAgICAgICAgbW9jayA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZvbywgbW9jaykKKyAgICAgICAgIyB0ZXN0IHBhdGNoaW5nIGEgc2Vjb25kIHRpbWUgd29ya3MKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCisgICAgICAgIHRlc3QgPSBwYXRjaC5vYmplY3QobW9kdWxlLCAnRm9vJywgYXV0b3NwZWM9VHJ1ZSkoZnVuY3Rpb24pCisKKyAgICAgICAgbW9jayA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZvbywgbW9jaykKKyAgICAgICAgIyB0ZXN0IHBhdGNoaW5nIGEgc2Vjb25kIHRpbWUgd29ya3MKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChtb2NrKToKKyAgICAgICAgICAgIGZ1bmN0aW9uKDEpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKDIsIDMpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMiwgMykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmdW5jdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBmdW5jdGlvbiwgJ2ZvbycpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2tleXdvcmRzKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBhdXRvc3BlYz1UcnVlLAorICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPTMpCisgICAgICAgIGRlZiB0ZXN0KG1vY2tfZnVuY3Rpb24pOgorICAgICAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwoZnVuY3Rpb24uYWJjLCAnZm9vJykKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigxLCAyKQorCisgICAgICAgIHJlc3VsdCA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMykKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfd2l0aF9uZXcoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIG5ldz0zLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBhdGNoZXIuc3RhcnQpCisKKyAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QobW9kdWxlLCAnZnVuY3Rpb24nLCBuZXc9MywgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXRjaGVyLnN0YXJ0KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY193aXRoX29iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKEZvbyk6CisgICAgICAgICAgICBleHRyYSA9IFtdCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBhdXRvc3BlYz1CYXIpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIEJhcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmV4dHJhLCBsaXN0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfaW5oZXJpdHMoc2VsZik6CisgICAgICAgIEZvb0NsYXNzID0gRm9vCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgRm9vQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaygzKSwgRm9vQ2xhc3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19uYW1lKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vJyIsIHJlcHIobW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vLmYnIiwgcmVwcihtb2NrLmYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0ZvbygpJyIsIHJlcHIobW9jayhOb25lKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vKCkuZiciLCByZXByKG1vY2soTm9uZSkuZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF90cmFjZWJhY2tzKHNlbGYpOgorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCBvYmplY3QoKSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBlcnIgPSBzeXMuZXhjX2luZm8oKQorCisgICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0KE5vbmUsIE5vbmUsIDApCisgICAgICAgIHRyYWNlYmFjayA9IHJlc3VsdC5fZXhjX2luZm9fdG9fc3RyaW5nKGVyciwgc2VsZikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigncmFpc2UgQXNzZXJ0aW9uRXJyb3InLCB0cmFjZWJhY2spCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9wYXRjaChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNYWdpY01vY2spCisKKyAgICAgICAgbTEgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgbTIgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KG0xLCBtMikKKyAgICAgICAgZm9yIG1vY2sgaW4gbTEsIG0yOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtMSkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX3BhdGNoX29iamVjdChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTWFnaWNNb2NrKQorCisgICAgICAgIG0xID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIG0yID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtMSwgbTIpCisgICAgICAgIGZvciBtb2NrIGluIG0xLCBtMjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobTEpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9rZXl3b3JkX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICBrd2FyZ3MgPSBOb25lCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIEJhci5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIGFyZzE9MSwgYXJnMj0yKQorICAgICAgICBtID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShtKSwgQmFyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXIua3dhcmdzLCBkaWN0KGFyZzE9MSwgYXJnMj0yKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgICAgIGt3YXJncyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgQmFyLmt3YXJncyA9IGt3YXJncworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUJhciwgc3BlYz1CYXIpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJhci5rd2FyZ3MsIGRpY3Qoc3BlYz1CYXIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIHNwZWNfc2V0PUJhcikKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmFyLmt3YXJncywgZGljdChzcGVjX3NldD1CYXIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2NyZWF0ZShzZWxmKToKKyAgICAgICAgbm9uX2V4aXN0ZW50X2F0dHIgPSAnJXMud2VlZWVlJyAlIGZvb19uYW1lCisgICAgICAgIHAgPSBwYXRjaChub25fZXhpc3RlbnRfYXR0ciwgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHAuc3RhcnQpCisKKyAgICAgICAgcCA9IHBhdGNoKG5vbl9leGlzdGVudF9hdHRyLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNb2NrLAorICAgICAgICAgICAgICAgICAgY3JlYXRlPVRydWUpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtLCBtYWdpYz1GYWxzZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmNvbXBhdGlibGVfd2l0aF9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gsIGZvb19uYW1lLCBuZXc9b2JqZWN0KCksIG5ld19jYWxsYWJsZT1NYWdpY01vY2sKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLm9iamVjdCwgRm9vLCAnZicsIG5ldz1vYmplY3QoKSwKKyAgICAgICAgICAgIG5ld19jYWxsYWJsZT1NYWdpY01vY2sKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5jb21wYXRpYmxlX3dpdGhfYXV0b3NwZWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gsIGZvb19uYW1lLCBuZXdfY2FsbGFibGU9TWFnaWNNb2NrLAorICAgICAgICAgICAgYXV0b3NwZWM9VHJ1ZQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gub2JqZWN0LCBGb28sICdmJywgbmV3X2NhbGxhYmxlPU1hZ2ljTW9jaywKKyAgICAgICAgICAgIGF1dG9zcGVjPVRydWUKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5oZXJpdF9mb3JfbW9ja3Moc2VsZik6CisgICAgICAgIGNsYXNzIE1vY2tTdWIoTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgTW9ja0NsYXNzZXMgPSAoCisgICAgICAgICAgICBOb25DYWxsYWJsZU1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBNYWdpY01vY2ssIE1vY2ssIE1vY2tTdWIKKyAgICAgICAgKQorICAgICAgICBmb3IgS2xhc3MgaW4gTW9ja0NsYXNzZXM6CisgICAgICAgICAgICBmb3IgYXJnIGluICdzcGVjJywgJ3NwZWNfc2V0JzoKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSB7YXJnOiBUcnVlfQorICAgICAgICAgICAgICAgIHAgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUtsYXNzLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG0ucmV0dXJuX3ZhbHVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwgJ3gnKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmhlcml0X25vbl9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBOb3RBTW9jayhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKworICAgICAgICBwID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1Ob3RBTW9jaywgc3BlYz1UcnVlKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtLCBOb3RBTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbSwgJ3JldHVybl92YWx1ZScpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zcGVjLCBGb28pCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9jbGFzc19kZWNvcmF0aW5nKHNlbGYpOgorICAgICAgICB0ZXN0ID0gc2VsZgorICAgICAgICBvcmlnaW5hbCA9IEZvbworICAgICAgICBjbGFzcyBTb21lVGVzdChvYmplY3QpOgorCisgICAgICAgICAgICBkZWYgX3Rlc3Qoc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXNOb3QoRm9vLCBvcmlnaW5hbCkKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvbywgbW9ja19mb28pCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJc0luc3RhbmNlKEZvbywgU29tZUNsYXNzKQorCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QobW9ja19mb28pCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QobW9ja19mb28pCisKKyAgICAgICAgU29tZVRlc3QgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPVNvbWVDbGFzcykoU29tZVRlc3QpCisgICAgICAgIFNvbWVUZXN0KCkudGVzdF9vbmUoKQorICAgICAgICBTb21lVGVzdCgpLnRlc3RfdHdvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyMSA9IHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPTEsIGc9MikKKyAgICAgICAgcGF0Y2hlcjIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGY9MSwgZz0yKQorCisgICAgICAgIGZvciBwYXRjaGVyIGluIHBhdGNoZXIxLCBwYXRjaGVyMjoKKyAgICAgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCAyKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9MywgZz00KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCA0KQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9ub19rd2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhdGNoLm11bHRpcGxlLCBmb29fbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGF0Y2gubXVsdGlwbGUsIEZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlX21vY2tzKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdChmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZm9vLCBmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2Nrc19kaWZmZXJlbnRfb3JkZXIoc2VsZik6CisgICAgICAgICMgYnVnIHJldmVhbGVkIGJ5IEp5dGhvbiEKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDMpCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSAnZicKKworICAgICAgICBvdGhlciA9IHBhdGNoLm9iamVjdChGb28sICdnJywgREVGQVVMVCkKKyAgICAgICAgb3RoZXIuYXR0cmlidXRlX25hbWUgPSAnZycKKyAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gW290aGVyXQorCisgICAgICAgIEBwYXRjaGVyCisgICAgICAgIGRlZiB0ZXN0KGcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZywgZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDMpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX3N0YWNrZWRfZGVjb3JhdG9ycyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCkKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmb289REVGQVVMVCkKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgZGVmIHRlc3QxKGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIF90ZXN0KGcsICoqa3dhcmdzKQorCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxUKQorICAgICAgICBAcGF0Y2goZm9vX25hbWUgKyAnLmcnKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdDIoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgX3Rlc3QoZywgKiprd2FyZ3MpCisKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZm9vPURFRkFVTFQpCisgICAgICAgIGRlZiB0ZXN0MyhnLCAqKmt3YXJncyk6CisgICAgICAgICAgICBfdGVzdChnLCAqKmt3YXJncykKKworICAgICAgICBkZWYgX3Rlc3QoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgZiA9IGt3YXJncy5wb3AoJ2YnKQorICAgICAgICAgICAgZm9vID0ga3dhcmdzLnBvcCgnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmcsIGcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGcsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorCisgICAgICAgIHRlc3QxKCkKKyAgICAgICAgdGVzdDIoKQorICAgICAgICB0ZXN0MygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2Nrc19wYXRjaGVyKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUKQorCisgICAgICAgIHJlc3VsdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gcmVzdWx0WydmJ10KKyAgICAgICAgICAgIGZvbyA9IHJlc3VsdFsnZm9vJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHJlc3VsdCksIHNldChbJ2YnLCAnZm9vJ10pKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGYsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9kZWNvcmF0aW5nX2NsYXNzKHNlbGYpOgorICAgICAgICB0ZXN0ID0gc2VsZgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIGNsYXNzIFNvbWVUZXN0KG9iamVjdCk6CisKKyAgICAgICAgICAgIGRlZiBfdGVzdChzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydEVxdWFsKEZvby5nLCAzKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QoZiwgZm9vKQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIGYsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdChmLCBmb28pCisKKyAgICAgICAgU29tZVRlc3QgPSBwYXRjaC5tdWx0aXBsZSgKKyAgICAgICAgICAgIGZvb19uYW1lLCBmPURFRkFVTFQsIGc9MywgZm9vPURFRkFVTFQKKyAgICAgICAgKShTb21lVGVzdCkKKworICAgICAgICB0aGluZyA9IFNvbWVUZXN0KCkKKyAgICAgICAgdGhpbmcudGVzdF9vbmUoKQorICAgICAgICB0aGluZy50ZXN0X3R3bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoRm9vLCBibGFtPSdibGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHBhdGNoZXIuc3RhcnQpCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgYmxhbT0nYmxhbScsIGNyZWF0ZT1UcnVlKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uYmxhbSwgJ2JsYW0nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoRm9vLCAnYmxhbScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9zcGVjX3NldChzZWxmKToKKyAgICAgICAgIyBpZiBzcGVjX3NldCB3b3JrcyB0aGVuIHdlIGNhbiBhc3N1bWUgdGhhdCBzcGVjIGFuZCBhdXRvc3BlYyBhbHNvCisgICAgICAgICMgd29yayBhcyB0aGUgdW5kZXJseWluZyBtYWNoaW5lcnkgaXMgdGhlIHNhbWUKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgZm9vPURFRkFVTFQsIHNwZWNfc2V0PVsnYScsICdiJ10pCisgICAgICAgIHJlc3VsdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mb28sIHJlc3VsdFsnZm9vJ10pCisgICAgICAgICAgICBGb28uZm9vLmEoMSkKKyAgICAgICAgICAgIEZvby5mb28uYigyKQorICAgICAgICAgICAgRm9vLmZvby5hLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgRm9vLmZvby5iLmFzc2VydF9jYWxsZWRfd2l0aCgyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIEZvby5mb28sICdjJywgTm9uZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX25ld19jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgVGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoCisgICAgICAgICAgICBGb28sIGY9REVGQVVMVCwgZz1ERUZBVUxULCBuZXdfY2FsbGFibGU9VGhpbmcKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgcmVzdWx0WydmJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5nLCByZXN1bHRbJ2cnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShGb28uZiwgVGhpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRm9vLmcsIFRoaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGb28uZiwgRm9vLmcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfcGF0Y2hfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzEoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ21pc3NpbmcnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcyKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBmdW5jIGluIHRoaW5nMSwgdGhpbmcyLCB0aGluZzM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28uZm9vCisKKyAgICAgICAgZGVmIGNyYXNoZXIoKToKKyAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignY3Jhc2hlcicpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMSgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgbmV3X2NhbGxhYmxlPWNyYXNoZXIpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzIoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBkZWYgdGhpbmczKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGZ1bmMgaW4gdGhpbmcxLCB0aGluZzIsIHRoaW5nMzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCBvcmlnaW5hbF9mb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2YnCisKKyAgICAgICAgZ29vZCA9IHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgZ29vZC5hdHRyaWJ1dGVfbmFtZSA9ICdnJworCisgICAgICAgIGJhZCA9IHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgYmFkLmF0dHJpYnV0ZV9uYW1lID0gJ21pc3NpbmcnCisKKyAgICAgICAgZm9yIGFkZGl0aW9uYWxzIGluIFtnb29kLCBiYWRdLCBbYmFkLCBnb29kXToKKyAgICAgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IGFkZGl0aW9uYWxzCisKKyAgICAgICAgICAgIEBwYXRjaGVyCisgICAgICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfbmV3X2NhbGxhYmxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vLmZvbworCisgICAgICAgIGRlZiBjcmFzaGVyKCk6CisgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ2NyYXNoZXInKQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSAnZicKKworICAgICAgICBnb29kID0gcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBnb29kLmF0dHJpYnV0ZV9uYW1lID0gJ2cnCisKKyAgICAgICAgYmFkID0gcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBiYWQuYXR0cmlidXRlX25hbWUgPSAnZm9vJworCisgICAgICAgIGZvciBhZGRpdGlvbmFscyBpbiBbZ29vZCwgYmFkXSwgW2JhZCwgZ29vZF06CisgICAgICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBhZGRpdGlvbmFscworCisgICAgICAgICAgICBAcGF0Y2hlcgorICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCBvcmlnaW5hbF9mb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX3N0cmluZ19zdWJjbGFzc2VzKHNlbGYpOgorICAgICAgICBGb28gPSB0eXBlKCdGb28nLCAoc3RyLCksIHsnZmlzaCc6ICd0YXN0eSd9KQorICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vLCBmaXNoPSduZWFybHkgZ29uZScpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5maXNoLCAnbmVhcmx5IGdvbmUnKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5maXNoLCAndGFzdHknKQorCisKKyAgICBAcGF0Y2goJ3VuaXR0ZXN0Lm1vY2sucGF0Y2guVEVTVF9QUkVGSVgnLCAnZm9vJykKKyAgICBkZWYgdGVzdF9wYXRjaF90ZXN0X3ByZWZpeChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICB0aGluZyA9ICdvcmlnaW5hbCcKKworICAgICAgICAgICAgZGVmIGZvb19vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKyAgICAgICAgICAgIGRlZiBmb29fdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aGluZworCisgICAgICAgIEZvbyA9IHBhdGNoLm9iamVjdChGb28sICd0aGluZycsICdjaGFuZ2VkJykoRm9vKQorCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmZvb19vbmUoKSwgJ2NoYW5nZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5mb29fdHdvKCksICdjaGFuZ2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF9vbmUoKSwgJ29yaWdpbmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF90d28oKSwgJ29yaWdpbmFsJykKKworCisgICAgQHBhdGNoKCd1bml0dGVzdC5tb2NrLnBhdGNoLlRFU1RfUFJFRklYJywgJ2JhcicpCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF90ZXN0X3ByZWZpeChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgYmFyX29uZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKyAgICAgICAgICAgIGRlZiBiYXJfdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorICAgICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorCisgICAgICAgIHRoZV9kaWN0ID0geydrZXknOiAnb3JpZ2luYWwnfQorICAgICAgICBGb28gPSBwYXRjaC5kaWN0KHRoZV9kaWN0LCBrZXk9J2NoYW5nZWQnKShGb28pCisKKyAgICAgICAgZm9vID1Gb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5iYXJfb25lKCksIHsna2V5JzogJ2NoYW5nZWQnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyX3R3bygpLCB7J2tleSc6ICdjaGFuZ2VkJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3Rfb25lKCksIHsna2V5JzogJ29yaWdpbmFsJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3RfdHdvKCksIHsna2V5JzogJ29yaWdpbmFsJ30pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlY19tb2NrX3JlcHIoc2VsZik6CisgICAgICAgIGZvciBhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgKip7YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nU29tZUNsYXNzJyIsIHJlcHIobSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobS5jbGFzc19hdHRyaWJ1dGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MoKSciLCByZXByKG0oKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcygpLmNsYXNzX2F0dHJpYnV0ZSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtKCkuY2xhc3NfYXR0cmlidXRlKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbmVzdGVkX2F1dG9zcGVjX3JlcHIoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJ3VuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCcsIGF1dG9zcGVjPVRydWUpIGFzIG06CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nc3VwcG9ydC5Tb21lQ2xhc3Mud2liYmxlKCknIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtLlNvbWVDbGFzcy53aWJibGUoKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nc3VwcG9ydC5Tb21lQ2xhc3MoKS53aWJibGUoKSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG0uU29tZUNsYXNzKCkud2liYmxlKCkpKQorCisKKworICAgIGRlZiB0ZXN0X21vY2tfY2FsbHNfd2l0aF9wYXRjaChzZWxmKToKKyAgICAgICAgZm9yIGFyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnLCAnc3BlY19zZXQnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCAqKnthcmc6IFRydWV9KQorICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG0ud2liYmxlKCkKKworICAgICAgICAgICAgICAgIGthbGxzID0gW2NhbGwud2liYmxlKCldCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGthbGxzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIGthbGxzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS53aWJibGUubW9ja19jYWxscywgW2NhbGwoKV0pCisKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtKCkKKyAgICAgICAgICAgICAgICBrYWxscy5hcHBlbmQoY2FsbCgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBrYWxscykKKworICAgICAgICAgICAgICAgIHJlc3VsdC53aWJibGUoKQorICAgICAgICAgICAgICAgIGthbGxzLmFwcGVuZChjYWxsKCkud2liYmxlKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGthbGxzKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubW9ja19jYWxscywgW2NhbGwud2liYmxlKCldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LndpYmJsZS5tb2NrX2NhbGxzLCBbY2FsbCgpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5tZXRob2RfY2FsbHMsIFtjYWxsLndpYmJsZSgpXSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfaW1wb3J0c19sYXppbHkoc2VsZik6CisgICAgICAgIHN5cy5tb2R1bGVzLnBvcCgnc3F1aXp6JywgTm9uZSkKKworICAgICAgICBwMSA9IHBhdGNoKCdzcXVpenouc3F1b3p6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IsIHAxLnN0YXJ0KQorCisgICAgICAgIHNxdWl6eiA9IE1vY2soKQorICAgICAgICBzcXVpenouc3F1b3p6ID0gNgorICAgICAgICBzeXMubW9kdWxlc1snc3F1aXp6J10gPSBzcXVpenoKKyAgICAgICAgcDEgPSBwYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIHNxdWl6ei5zcXVvenogPSAzCisgICAgICAgIHAxLnN0YXJ0KCkKKyAgICAgICAgcDEuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1aXp6LnNxdW96eiwgMykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfcHJvcG9ncmF0ZXNfZXhjX29uX2V4aXQoc2VsZik6CisgICAgICAgIGNsYXNzIGhvbGRlcjoKKyAgICAgICAgICAgIGV4Y19pbmZvID0gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgICAgIGNsYXNzIGN1c3RvbV9wYXRjaChfcGF0Y2gpOgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV0eXBlPU5vbmUsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBfcGF0Y2guX19leGl0X18oc2VsZiwgZXR5cGUsIHZhbCwgdGIpCisgICAgICAgICAgICAgICAgaG9sZGVyLmV4Y19pbmZvID0gZXR5cGUsIHZhbCwgdGIKKyAgICAgICAgICAgIHN0b3AgPSBfX2V4aXRfXworCisgICAgICAgIGRlZiB3aXRoX2N1c3RvbV9wYXRjaCh0YXJnZXQpOgorICAgICAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUgPSBfZ2V0X3RhcmdldCh0YXJnZXQpCisgICAgICAgICAgICByZXR1cm4gY3VzdG9tX3BhdGNoKAorICAgICAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBERUZBVUxULCBOb25lLCBGYWxzZSwgTm9uZSwKKyAgICAgICAgICAgICAgICBOb25lLCBOb25lLCB7fQorICAgICAgICAgICAgKQorCisgICAgICAgIEB3aXRoX2N1c3RvbV9wYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB0ZXN0KQorICAgICAgICBzZWxmLmFzc2VydElzKGhvbGRlci5leGNfaW5mb1swXSwgUnVudGltZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShob2xkZXIuZXhjX2luZm9bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB2YWx1ZSBub3QgcHJvcGdhdGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaG9sZGVyLmV4Y19pbmZvWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24gdHJhY2ViYWNrIG5vdCBwcm9wZ2F0ZWQnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYW5kX3NwZWNzKHNlbGYpOgorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ3NwZWNfc2V0JywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLmRvZXNub3RleGlzdCcgJSBfX25hbWVfXywgY3JlYXRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgKip7a3dhcmc6IFRydWV9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBsYW1iZGE6IGRvZXNub3RleGlzdCkKKworICAgICAgICAgICAgIyBjaGVjayB0aGF0IHNwZWMgd2l0aCBjcmVhdGUgaXMgaW5ub2N1b3VzIGlmIHRoZSBvcmlnaW5hbCBleGlzdHMKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBjcmVhdGU9VHJ1ZSwgKip7a3dhcmc6IFRydWV9KQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9zcGVjcyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBQVE1vZHVsZQorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgYXV0b3NwZWM9MCwgKip7a3dhcmc6IDB9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQVE1vZHVsZSwgb3JpZ2luYWwpCisKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWNfc2V0PTAsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUFRNb2R1bGUsIG9yaWdpbmFsKQorCisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWNfc2V0JywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz0wLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAuc3RhcnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBUTW9kdWxlLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3Rfc3BlY3NfZmFsc2VfaW5zdGVhZF9vZl9ub25lKHNlbGYpOgorICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz1GYWxzZSwgc3BlY19zZXQ9RmFsc2UsIGF1dG9zcGVjPUZhbHNlKQorICAgICAgICBtb2NrID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgbm8gc3BlYyBzaG91bGQgaGF2ZSBiZWVuIHNldCwgc28gYXR0cmlidXRlIGFjY2VzcyBzaG91bGQgbm90IGZhaWwKKyAgICAgICAgICAgIG1vY2suZG9lc19ub3RfZXhpc3QKKyAgICAgICAgICAgIG1vY2suZG9lc19ub3RfZXhpc3QgPSAzCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9mYWxzZXlfc3BlYyhzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbSwgJ2RvZXNub3RleGl0JykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19zZXRfdHJ1ZShzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWNfc2V0PVRydWUsICoqe2t3YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9lc25vdGV4aXN0JywgJ3NvbWV0aGluZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG0sICdkb2Vzbm90ZXhpc3QnKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIHNwZWMgPSAoJ19fY2FsbF9fJywpCisgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPXNwZWMpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxhYmxlKG0pKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3Rfbm90X2NhbGxhYmxlX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgc3BlYyA9ICgnZm9vJywgJ2JhcicpCisgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPXNwZWMpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjYWxsYWJsZShtKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3N0b3BhbGwoc2VsZik6CisgICAgICAgIHVubGluayA9IG9zLnVubGluaworICAgICAgICBjaGRpciA9IG9zLmNoZGlyCisgICAgICAgIHBhdGggPSBvcy5wYXRoCisgICAgICAgIHBhdGNoKCdvcy51bmxpbmsnLCBzb21ldGhpbmcpLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2goJ29zLmNoZGlyJywgc29tZXRoaW5nX2Vsc2UpLnN0YXJ0KCkKKworICAgICAgICBAcGF0Y2goJ29zLnBhdGgnKQorICAgICAgICBkZWYgcGF0Y2hlZChtb2NrX3BhdGgpOgorICAgICAgICAgICAgcGF0Y2guc3RvcGFsbCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLnBhdGgsIG1vY2tfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MudW5saW5rLCB1bmxpbmspCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLmNoZGlyLCBjaGRpcikKKworICAgICAgICBwYXRjaGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy5wYXRoLCBwYXRoKQorCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmRhNjhlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHNlbnRpbmVsLnB5CkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBzZW50aW5lbCwgREVGQVVMVAorCisKK2NsYXNzIFNlbnRpbmVsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdFNlbnRpbmVscyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC53aGF0ZXZlciwgc2VudGluZWwud2hhdGV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnRpbmVsIG5vdCBzdG9yZWQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlbnRpbmVsLndoYXRldmVyLCBzZW50aW5lbC53aGF0ZXZlcmVsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnRpbmVsIHNob3VsZCBiZSB1bmlxdWUnKQorCisKKyAgICBkZWYgdGVzdFNlbnRpbmVsTmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VudGluZWwud2hhdGV2ZXIpLCAnc2VudGluZWwud2hhdGV2ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzZW50aW5lbCBuYW1lIGluY29ycmVjdCcpCisKKworICAgIGRlZiB0ZXN0REVGQVVMVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERFRkFVTFQgaXMgc2VudGluZWwuREVGQVVMVCkKKworICAgIGRlZiB0ZXN0QmFzZXMoc2VsZik6CisgICAgICAgICMgSWYgdGhpcyBkb2Vzbid0IHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yIHRoZW4gaGVscChtb2NrKSBpcyBicm9rZW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogc2VudGluZWwuX19iYXNlc19fKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMGNmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weQpAQCAtMCwwICsxLDE3NiBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHdhcm5pbmdzIGltcG9ydCBjYXRjaF93YXJuaW5ncworCitmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgaXNfaW5zdGFuY2UKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTWFnaWNNb2NrLCBNb2NrLCBwYXRjaCwgc2VudGluZWwsIG1vY2tfb3BlbiwgY2FsbAorCisKKworc29tZXRoaW5nICA9IHNlbnRpbmVsLlNvbWV0aGluZworc29tZXRoaW5nX2Vsc2UgID0gc2VudGluZWwuU29tZXRoaW5nRWxzZQorCisKKworY2xhc3MgV2l0aFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwgInVucGF0Y2hlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwgInVucGF0Y2hlZCIpCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdwb3cnKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJwYXRjaCBzd2FsbG93ZWQgZXhjZXB0aW9uIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfYXMoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2tfc29tZXRoaW5nLCBNYWdpY01vY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaGluZyB3cm9uZyB0eXBlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfb2JqZWN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9ICdmb28nCisgICAgICAgIG9yaWdpbmFsID0gRm9vLnNvbWV0aGluZworICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChGb28sICdzb21ldGhpbmcnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRm9vLnNvbWV0aGluZywgb3JpZ2luYWwsICJ1bnBhdGNoZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5zb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9uZXN0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpOgorICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZywgcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZ19lbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmdfZWxzZSwgbW9ja19zb21ldGhpbmdfZWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X3NwZWNpZmllZChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5QYXRjaGVkKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tfc29tZXRoaW5nLCBzZW50aW5lbC5QYXRjaGVkLCAid3JvbmcgcGF0Y2giKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorCisKKyAgICBkZWYgdGVzdENvbnRleHRNYW5hZ2VyTW9ja2luZyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZW50ZXJfXyA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZXhpdF9fID0gTW9jaygpCisgICAgICAgIG1vY2suX19leGl0X18ucmV0dXJuX3ZhbHVlID0gRmFsc2UKKworICAgICAgICB3aXRoIG1vY2sgYXMgbToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbW9jay5fX2VudGVyX18ucmV0dXJuX3ZhbHVlKQorICAgICAgICBtb2NrLl9fZW50ZXJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBtb2NrLl9fZXhpdF9fLmFzc2VydF9jYWxsZWRfd2l0aChOb25lLCBOb25lLCBOb25lKQorCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfd2l0aF9tYWdpY19tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICAgICAgJ2ZvbycgKyAzCisgICAgICAgIG1vY2suX19lbnRlcl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fZXhpdF9fLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfc2FtZV9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuUGF0Y2hlZCkgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pIGFzIG1vY2tfYWdhaW46CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfYWdhaW4sICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN0b3JlZCB3aXRoIHdyb25nIGluc3RhbmNlIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLCAibm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfaW1icmljYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZ19lbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIG1vY2tfc29tZXRoaW5nX2Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorCisKKyAgICBkZWYgdGVzdF9kaWN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgZm9vID0ge30KKyAgICAgICAgd2l0aCBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIHdpdGggcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignS29ucmFkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywge30pCisKKworCitjbGFzcyBUZXN0TW9ja09wZW4odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbW9ja19vcGVuKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKCkKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpIGFzIHBhdGNoZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBhdGNoZWQsIG1vY2spCisgICAgICAgICAgICBvcGVuKCdmb28nKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X21vY2tfb3Blbl9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4oKQorICAgICAgICBoYW5kbGUgPSBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGY6CisgICAgICAgICAgICAgICAgZi5yZWFkKCkKKworICAgICAgICBleHBlY3RlZF9jYWxscyA9IFtjYWxsKCdmb28nKSwgY2FsbCgpLl9fZW50ZXJfXygpLCBjYWxsKCkucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKCkuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZF9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmLCBoYW5kbGUpCisKKworICAgIGRlZiB0ZXN0X2V4cGxpY2l0X21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrX29wZW4obW9jaykKKworICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSkgYXMgcGF0Y2hlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocGF0Y2hlZCwgbW9jaykKKyAgICAgICAgICAgIG9wZW4oJ2ZvbycpCisKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKworCisgICAgZGVmIHRlc3RfcmVhZF9kYXRhKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKHJlYWRfZGF0YT0nZm9vJykKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgaCA9IG9wZW4oJ2JhcicpCisgICAgICAgICAgICByZXN1bHQgPSBoLnJlYWQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnZm9vJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9lcnJvci5weSBiL0xpYi91cmxsaWIvZXJyb3IucHkKaW5kZXggNDBhZGQ0MS4uYzFkZmM0MCAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9lcnJvci5weQorKysgYi9MaWIvdXJsbGliL2Vycm9yLnB5CkBAIC0xMyw2ICsxMyw5IEBACiAKIGltcG9ydCB1cmxsaWIucmVzcG9uc2UKIAorX19hbGxfXyA9IFsnVVJMRXJyb3InLCAnSFRUUEVycm9yJywgJ0NvbnRlbnRUb29TaG9ydEVycm9yJ10KKworCiAjIGRvIHRoZXNlIGVycm9yIGNsYXNzZXMgbWFrZSBzZW5zZT8KICMgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSU9FcnJvciBzdHVmZiBpcyBvdmVycmlkZGVuLiAgd2UganVzdCB3YW50IHRvIGJlCiAjIHN1YnR5cGVzLgpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IGViNDVjN2UuLjI3YWIyYjkgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTg5LDE0ICs4OSwxNiBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBwb3NpeHBhdGgKLWltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHdhcm5pbmdzCiAKKwogZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IFVSTEVycm9yLCBIVFRQRXJyb3IsIENvbnRlbnRUb29TaG9ydEVycm9yCiBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgKAogICAgIHVybHBhcnNlLCB1cmxzcGxpdCwgdXJsam9pbiwgdW53cmFwLCBxdW90ZSwgdW5xdW90ZSwKQEAgLTExMiwyMSArMTE0LDQwIEBACiBlbHNlOgogICAgIF9oYXZlX3NzbCA9IFRydWUKIAorX19hbGxfXyA9IFsKKyAgICAjIENsYXNzZXMKKyAgICAnUmVxdWVzdCcsICdPcGVuZXJEaXJlY3RvcicsICdCYXNlSGFuZGxlcicsICdIVFRQRGVmYXVsdEVycm9ySGFuZGxlcicsCisgICAgJ0hUVFBSZWRpcmVjdEhhbmRsZXInLCAnSFRUUENvb2tpZVByb2Nlc3NvcicsICdQcm94eUhhbmRsZXInLAorICAgICdIVFRQUGFzc3dvcmRNZ3InLCAnSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbScsCisgICAgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsICdIVFRQQmFzaWNBdXRoSGFuZGxlcicsICdQcm94eUJhc2ljQXV0aEhhbmRsZXInLAorICAgICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywKKyAgICAnSFRUUEhhbmRsZXInLCAnRmlsZUhhbmRsZXInLCAnRlRQSGFuZGxlcicsICdDYWNoZUZUUEhhbmRsZXInLAorICAgICdVbmtub3duSGFuZGxlcicsICdIVFRQRXJyb3JQcm9jZXNzb3InLAorICAgICMgRnVuY3Rpb25zCisgICAgJ3VybG9wZW4nLCAnaW5zdGFsbF9vcGVuZXInLCAnYnVpbGRfb3BlbmVyJywKKyAgICAncGF0aG5hbWUydXJsJywgJ3VybDJwYXRobmFtZScsICdnZXRwcm94aWVzJywKKyAgICAjIExlZ2FjeSBpbnRlcmZhY2UKKyAgICAndXJscmV0cmlldmUnLCAndXJsY2xlYW51cCcsICdVUkxvcGVuZXInLCAnRmFuY3lVUkxvcGVuZXInLAorXQorCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAogX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KIAogX29wZW5lciA9IE5vbmUKIGRlZiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKLSAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSk6CisgICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1GYWxzZSk6CiAgICAgZ2xvYmFsIF9vcGVuZXIKLSAgICBpZiBjYWZpbGUgb3IgY2FwYXRoOgorICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgogICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU1NMIHN1cHBvcnQgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1NTTHYyCi0gICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGg6CisgICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgogICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGUsIGNhcGF0aCkKKyAgICAgICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGg6CisgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlLCBjYXBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWUgPSBGYWxzZQpAQCAtMTQyLDE3ICsxNjMsNzggQEAKICAgICBnbG9iYWwgX29wZW5lcgogICAgIF9vcGVuZXIgPSBvcGVuZXIKIAotIyBUT0RPKGpoeWx0b24pOiBNYWtlIHRoaXMgd29yayB3aXRoIHRoZSBzYW1lIGdsb2JhbCBvcGVuZXIuCi1fdXJsb3BlbmVyID0gTm9uZQorX3VybF90ZW1wZmlsZXMgPSBbXQogZGVmIHVybHJldHJpZXZlKHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpOgotICAgIGdsb2JhbCBfdXJsb3BlbmVyCi0gICAgaWYgbm90IF91cmxvcGVuZXI6Ci0gICAgICAgIF91cmxvcGVuZXIgPSBGYW5jeVVSTG9wZW5lcigpCi0gICAgcmV0dXJuIF91cmxvcGVuZXIucmV0cmlldmUodXJsLCBmaWxlbmFtZSwgcmVwb3J0aG9vaywgZGF0YSkKKyAgICAiIiIKKyAgICBSZXRyaWV2ZSBhIFVSTCBpbnRvIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIG9uIGRpc2suCisKKyAgICBSZXF1aXJlcyBhIFVSTCBhcmd1bWVudC4gSWYgYSBmaWxlbmFtZSBpcyBwYXNzZWQsIGl0IGlzIHVzZWQgYXMKKyAgICB0aGUgdGVtcG9yYXJ5IGZpbGUgbG9jYXRpb24uIFRoZSByZXBvcnRob29rIGFyZ3VtZW50IHNob3VsZCBiZQorICAgIGEgY2FsbGFibGUgdGhhdCBhY2NlcHRzIGEgYmxvY2sgbnVtYmVyLCBhIHJlYWQgc2l6ZSwgYW5kIHRoZQorICAgIHRvdGFsIGZpbGUgc2l6ZSBvZiB0aGUgVVJMIHRhcmdldC4gVGhlIGRhdGEgYXJndW1lbnQgc2hvdWxkIGJlCisgICAgdmFsaWQgVVJMIGVuY29kZWQgZGF0YS4KKworICAgIElmIGEgZmlsZW5hbWUgaXMgcGFzc2VkIGFuZCB0aGUgVVJMIHBvaW50cyB0byBhIGxvY2FsIHJlc291cmNlLAorICAgIHRoZSByZXN1bHQgaXMgYSBjb3B5IGZyb20gbG9jYWwgZmlsZSB0byBuZXcgZmlsZS4KKworICAgIFJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkCisgICAgZGF0YSBmaWxlIGFzIHdlbGwgYXMgdGhlIHJlc3VsdGluZyBIVFRQTWVzc2FnZSBvYmplY3QuCisgICAgIiIiCisgICAgdXJsX3R5cGUsIHBhdGggPSBzcGxpdHR5cGUodXJsKQorCisgICAgd2l0aCBjb250ZXh0bGliLmNsb3NpbmcodXJsb3Blbih1cmwsIGRhdGEpKSBhcyBmcDoKKyAgICAgICAgaGVhZGVycyA9IGZwLmluZm8oKQorCisgICAgICAgICMgSnVzdCByZXR1cm4gdGhlIGxvY2FsIHBhdGggYW5kIHRoZSAiaGVhZGVycyIgZm9yIGZpbGU6Ly8KKyAgICAgICAgIyBVUkxzLiBObyBzZW5zZSBpbiBwZXJmb3JtaW5nIGEgY29weSB1bmxlc3MgcmVxdWVzdGVkLgorICAgICAgICBpZiB1cmxfdHlwZSA9PSAiZmlsZSIgYW5kIG5vdCBmaWxlbmFtZToKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHBhdGgpLCBoZWFkZXJzCisKKyAgICAgICAgIyBIYW5kbGUgdGVtcG9yYXJ5IGZpbGUgc2V0dXAuCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgdGZwID0gb3BlbihmaWxlbmFtZSwgJ3diJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRmcCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpCisgICAgICAgICAgICBmaWxlbmFtZSA9IHRmcC5uYW1lCisgICAgICAgICAgICBfdXJsX3RlbXBmaWxlcy5hcHBlbmQoZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCB0ZnA6CisgICAgICAgICAgICByZXN1bHQgPSBmaWxlbmFtZSwgaGVhZGVycworICAgICAgICAgICAgYnMgPSAxMDI0KjgKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICAgICAgcmVhZCA9IDAKKyAgICAgICAgICAgIGJsb2NrbnVtID0gMAorICAgICAgICAgICAgaWYgImNvbnRlbnQtbGVuZ3RoIiBpbiBoZWFkZXJzOgorICAgICAgICAgICAgICAgIHNpemUgPSBpbnQoaGVhZGVyc1siQ29udGVudC1MZW5ndGgiXSkKKworICAgICAgICAgICAgaWYgcmVwb3J0aG9vazoKKyAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCAwLCBzaXplKQorCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGJsb2NrID0gZnAucmVhZChicykKKyAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcmVhZCArPSBsZW4oYmxvY2spCisgICAgICAgICAgICAgICAgdGZwLndyaXRlKGJsb2NrKQorICAgICAgICAgICAgICAgIGJsb2NrbnVtICs9IDEKKyAgICAgICAgICAgICAgICBpZiByZXBvcnRob29rOgorICAgICAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCBsZW4oYmxvY2spLCBzaXplKQorCisgICAgaWYgc2l6ZSA+PSAwIGFuZCByZWFkIDwgc2l6ZToKKyAgICAgICAgcmFpc2UgQ29udGVudFRvb1Nob3J0RXJyb3IoCisgICAgICAgICAgICAicmV0cmlldmFsIGluY29tcGxldGU6IGdvdCBvbmx5ICVpIG91dCBvZiAlaSBieXRlcyIKKyAgICAgICAgICAgICUgKHJlYWQsIHNpemUpLCByZXN1bHQpCisKKyAgICByZXR1cm4gcmVzdWx0CiAKIGRlZiB1cmxjbGVhbnVwKCk6Ci0gICAgaWYgX3VybG9wZW5lcjoKLSAgICAgICAgX3VybG9wZW5lci5jbGVhbnVwKCkKKyAgICBmb3IgdGVtcF9maWxlIGluIF91cmxfdGVtcGZpbGVzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy51bmxpbmsodGVtcF9maWxlKQorICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlbCBfdXJsX3RlbXBmaWxlc1s6XQogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgaWYgX29wZW5lcjoKICAgICAgICAgX29wZW5lciA9IE5vbmUKQEAgLTE3OCw3ICsyNjAsOCBAQAogY2xhc3MgUmVxdWVzdDoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwKLSAgICAgICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0PU5vbmUsIHVudmVyaWZpYWJsZT1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIG1ldGhvZD1Ob25lKToKICAgICAgICAgIyB1bndyYXAoJzxVUkw6dHlwZTovL2hvc3QvcGF0aD4nKSAtLT4gJ3R5cGU6Ly9ob3N0L3BhdGgnCiAgICAgICAgIHNlbGYuZnVsbF91cmwgPSB1bndyYXAodXJsKQogICAgICAgICBzZWxmLmZ1bGxfdXJsLCBzZWxmLmZyYWdtZW50ID0gc3BsaXR0YWcoc2VsZi5mdWxsX3VybCkKQEAgLTE5Miw2ICsyNzUsNyBAQAogICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0ID0gcmVxdWVzdF9ob3N0KHNlbGYpCiAgICAgICAgIHNlbGYub3JpZ2luX3JlcV9ob3N0ID0gb3JpZ2luX3JlcV9ob3N0CiAgICAgICAgIHNlbGYudW52ZXJpZmlhYmxlID0gdW52ZXJpZmlhYmxlCisgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCiAgICAgICAgIHNlbGYuX3BhcnNlKCkKIAogICAgIGRlZiBfcGFyc2Uoc2VsZik6CkBAIC0yMDMsNDEgKzI4Nyw2MCBAQAogICAgICAgICAgICAgc2VsZi5ob3N0ID0gdW5xdW90ZShzZWxmLmhvc3QpCiAKICAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4iIiIKKyAgICAgICAgaWYgc2VsZi5tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5tZXRob2QKKyAgICAgICAgZWxpZiBzZWxmLmRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gIlBPU1QiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gIkdFVCIKIAotICAgICMgQmVnaW4gZGVwcmVjYXRlZCBtZXRob2RzCi0KLSAgICBkZWYgYWRkX2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLQotICAgIGRlZiBoYXNfZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQotCi0gICAgZGVmIGdldF9kYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5kYXRhCi0KICAgICBkZWYgZ2V0X2Z1bGxfdXJsKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmZyYWdtZW50OgogICAgICAgICAgICAgcmV0dXJuICclcyMlcycgJSAoc2VsZi5mdWxsX3VybCwgc2VsZi5mcmFnbWVudCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bGxfdXJsCiAKKyAgICAjIEJlZ2luIGRlcHJlY2F0ZWQgbWV0aG9kcworCisgICAgZGVmIGFkZF9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5hZGRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIGhhc19kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5oYXNfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQorCiAgICAgZGVmIGdldF90eXBlKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfdHlwZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYudHlwZQogCiAgICAgZGVmIGdldF9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfaG9zdCBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdAogCiAgICAgZGVmIGdldF9zZWxlY3RvcihzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X3NlbGVjdG9yIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5zZWxlY3RvcgogCiAgICAgZGVmIGlzX3VudmVyaWZpYWJsZShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi51bnZlcmlmaWFibGUKIAogICAgIGRlZiBnZXRfb3JpZ2luX3JlcV9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfb3JpZ2luX3JlcV9ob3N0IG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5vcmlnaW5fcmVxX2hvc3QKIAogICAgICMgRW5kIGRlcHJlY2F0ZWQgbWV0aG9kcwpAQCAtNjgyLDggKzc4NSw4IEBACiAgICAgICAgIHNlbGYucHJveGllcyA9IHByb3hpZXMKICAgICAgICAgZm9yIHR5cGUsIHVybCBpbiBwcm94aWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICclc19vcGVuJyAlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46IFwKLSAgICAgICAgICAgICAgICAgICAgbWV0aChyLCBwcm94eSwgdHlwZSkpCisgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBtZXRoKHIsIHByb3h5LCB0eXBlKSkKIAogICAgIGRlZiBwcm94eV9vcGVuKHNlbGYsIHJlcSwgcHJveHksIHR5cGUpOgogICAgICAgICBvcmlnX3R5cGUgPSByZXEudHlwZQpAQCAtODI1LDE3ICs5MjgsMjMgQEAKICAgICAgICAgICAgIHNlbGYucmV0cmllZCArPSAxCiAKICAgICAgICAgaWYgYXV0aHJlcToKLSAgICAgICAgICAgIG1vID0gQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnJ4LnNlYXJjaChhdXRocmVxKQotICAgICAgICAgICAgaWYgbW86Ci0gICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQotICAgICAgICAgICAgICAgIGlmIHF1b3RlIG5vdCBpbiBbIiciLCAnIiddOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDIpCi0gICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJldHJ5X2h0dHBfYmFzaWNfYXV0aChob3N0LCByZXEsIHJlYWxtKQotICAgICAgICAgICAgICAgICAgICBpZiByZXNwb25zZSBhbmQgcmVzcG9uc2UuY29kZSAhPSA0MDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZQorICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCisgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBkb2VzIG5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKKyAgICAgICAgICAgICAgICBpZiBtbzoKKyAgICAgICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQorICAgICAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywiJyJdOgorICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlIGFuZCByZXNwb25zZS5jb2RlICE9IDQwMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAogICAgIGRlZiByZXRyeV9odHRwX2Jhc2ljX2F1dGgoc2VsZiwgaG9zdCwgcmVxLCByZWFsbSk6CiAgICAgICAgIHVzZXIsIHB3ID0gc2VsZi5wYXNzd2QuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBob3N0KQpAQCAtODc4LDkgKzk4Nyw5IEBACiAgICAgICAgIHJldHVybiByZXNwb25zZQogCiAKLWRlZiByYW5kb21ieXRlcyhuKToKLSAgICAiIiJSZXR1cm4gbiByYW5kb20gYnl0ZXMuIiIiCi0gICAgcmV0dXJuIG9zLnVyYW5kb20obikKKyMgUmV0dXJuIG4gcmFuZG9tIGJ5dGVzLgorX3JhbmRvbWJ5dGVzID0gb3MudXJhbmRvbQorCiAKIGNsYXNzIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXI6CiAgICAgIyBEaWdlc3QgYXV0aGVudGljYXRpb24gaXMgc3BlY2lmaWVkIGluIFJGQyAyNjE3LgpAQCAtOTIxLDYgKzEwMzAsOSBAQAogICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCiAgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSA9PSAnZGlnZXN0JzoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHJlcSwgYXV0aHJlcSkKKyAgICAgICAgICAgIGVsaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyIGRvZXMgbm90IHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRoZSBmb2xsb3dpbmcgc2NoZW1lOiAnJXMnIiAlIHNjaGVtZSkKIAogICAgIGRlZiByZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHNlbGYsIHJlcSwgYXV0aCk6CiAgICAgICAgIHRva2VuLCBjaGFsbGVuZ2UgPSBhdXRoLnNwbGl0KCcgJywgMSkKQEAgLTk0MSw3ICsxMDUzLDcgQEAKICAgICAgICAgIyBhdXRoZW50aWNhdGlvbiwgYW5kIHRvIHByb3ZpZGUgc29tZSBtZXNzYWdlIGludGVncml0eSBwcm90ZWN0aW9uLgogICAgICAgICAjIFRoaXMgaXNuJ3QgYSBmYWJ1bG91cyBlZmZvcnQsIGJ1dCBpdCdzIHByb2JhYmx5IEdvb2QgRW5vdWdoLgogICAgICAgICBzID0gIiVzOiVzOiVzOiIgJSAoc2VsZi5ub25jZV9jb3VudCwgbm9uY2UsIHRpbWUuY3RpbWUoKSkKLSAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgcmFuZG9tYnl0ZXMoOCkKKyAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgX3JhbmRvbWJ5dGVzKDgpCiAgICAgICAgIGRpZyA9IGhhc2hsaWIuc2hhMShiKS5oZXhkaWdlc3QoKQogICAgICAgICByZXR1cm4gZGlnWzoxNl0KIApAQCAtMTA2Niw3ICsxMTc4LDcgQEAKICAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC5kYXRhCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICJcCisgICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICIgXAogICAgICAgICAgICAgICAgICAgICAgICJJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LXR5cGUnKToKQEAgLTExNjIsNyArMTI3NCw2IEBACiAgICAgaHR0cF9yZXF1ZXN0ID0gQWJzdHJhY3RIVFRQSGFuZGxlci5kb19yZXF1ZXN0XwogCiBpZiBoYXNhdHRyKGh0dHAuY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyk6Ci0gICAgaW1wb3J0IHNzbAogCiAgICAgY2xhc3MgSFRUUFNIYW5kbGVyKEFic3RyYWN0SFRUUEhhbmRsZXIpOgogCkBAIC0xMTc3LDYgKzEyODgsOCBAQAogCiAgICAgICAgIGh0dHBzX3JlcXVlc3QgPSBBYnN0cmFjdEhUVFBIYW5kbGVyLmRvX3JlcXVlc3RfCiAKKyAgICBfX2FsbF9fLmFwcGVuZCgnSFRUUFNIYW5kbGVyJykKKwogY2xhc3MgSFRUUENvb2tpZVByb2Nlc3NvcihCYXNlSGFuZGxlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tpZWphcj1Ob25lKToKICAgICAgICAgaW1wb3J0IGh0dHAuY29va2llamFyCkBAIC0xNDYzLDYgKzE1NzYsOSBAQAogCiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm94aWVzPU5vbmUsICoqeDUwOSk6CisgICAgICAgIG1zZyA9ICIlKGNsYXNzKXMgc3R5bGUgb2YgaW52b2tpbmcgcmVxdWVzdHMgaXMgZGVwcmVjYXRlZC4gIiBcCisgICAgICAgICAgICAgICJVc2UgbmV3ZXIgdXJsb3BlbiBmdW5jdGlvbnMvbWV0aG9kcyIgJSB7J2NsYXNzJzogc2VsZi5fX2NsYXNzX18uX19uYW1lX199CisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgaWYgcHJveGllcyBpcyBOb25lOgogICAgICAgICAgICAgcHJveGllcyA9IGdldHByb3hpZXMoKQogICAgICAgICBhc3NlcnQgaGFzYXR0cihwcm94aWVzLCAna2V5cycpLCAicHJveGllcyBtdXN0IGJlIGEgbWFwcGluZyIKQEAgLTE1NDIsNiArMTY1OCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBuYW1lKSh1cmwsIGRhdGEpCisgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3I6CisgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ3NvY2tldCBlcnJvcicsIG1zZykud2l0aF90cmFjZWJhY2soc3lzLmV4Y19pbmZvKClbMl0pCiAKQEAgLTE3NjAsOCArMTg3OCw4IEBACiAKICAgICBkZWYgb3Blbl9sb2NhbF9maWxlKHNlbGYsIHVybCk6CiAgICAgICAgICIiIlVzZSBsb2NhbCBmaWxlLiIiIgotICAgICAgICBpbXBvcnQgbWltZXR5cGVzLCBlbWFpbC51dGlscwotICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgICAgICBpbXBvcnQgZW1haWwudXRpbHMKKyAgICAgICAgaW1wb3J0IG1pbWV0eXBlcwogICAgICAgICBob3N0LCBmaWxlID0gc3BsaXRob3N0KHVybCkKICAgICAgICAgbG9jYWxuYW1lID0gdXJsMnBhdGhuYW1lKGZpbGUpCiAgICAgICAgIHRyeToKQEAgLTE4NzcsNyArMTk5NSw3IEBACiAgICAgICAgIG1zZy5hcHBlbmQoJ0NvbnRlbnQtdHlwZTogJXMnICUgdHlwZSkKICAgICAgICAgaWYgZW5jb2RpbmcgPT0gJ2Jhc2U2NCc6CiAgICAgICAgICAgICAjIFhYWCBpcyB0aGlzIGVuY29kaW5nL2RlY29kaW5nIG9rPwotICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhLmVuY29kZSgnYXNjaWknKSkuZGVjb2RlKCdsYXRpbjEnKQorICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhLmVuY29kZSgnYXNjaWknKSkuZGVjb2RlKCdsYXRpbi0xJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRhdGEgPSB1bnF1b3RlKGRhdGEpCiAgICAgICAgIG1zZy5hcHBlbmQoJ0NvbnRlbnQtTGVuZ3RoOiAlZCcgJSBsZW4oZGF0YSkpCkBAIC0xOTcwLDcgKzIwODgsNiBAQAogICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpCiAgICAgICAgIHN0dWZmID0gaGVhZGVyc1snd3d3LWF1dGhlbnRpY2F0ZSddCi0gICAgICAgIGltcG9ydCByZQogICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCdbIFx0XSooW14gXHRdKylbIFx0XStyZWFsbT0iKFteIl0qKSInLCBzdHVmZikKICAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLApAQCAtMTk5Niw3ICsyMTEzLDYgQEAKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgICBzdHVmZiA9IGhlYWRlcnNbJ3Byb3h5LWF1dGhlbnRpY2F0ZSddCi0gICAgICAgIGltcG9ydCByZQogICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCdbIFx0XSooW14gXHRdKylbIFx0XStyZWFsbT0iKFteIl0qKSInLCBzdHVmZikKICAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLApAQCAtMjI4Miw4ICsyMzk4LDYgQEAKICAgICAgICdleGNlcHRpb25zJzogWydmb28uYmFyJywgJyouYmFyLmNvbScsICcxMjcuMC4wLjEnLCAnMTAuMScsICcxMC4wLzE2J10KICAgICB9CiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCi0gICAgaW1wb3J0IHNvY2tldAogICAgIGZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiAgICAgaG9zdG9ubHksIHBvcnQgPSBzcGxpdHBvcnQoaG9zdCkKQEAgLTIzODYsNyArMjUwMCw2IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHByb3h5U2VydmVyLnNwbGl0KCc7Jyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCwgYWRkcmVzcyA9IHAuc3BsaXQoJz0nLCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaWYgYWRkcmVzcyBoYXMgYSB0eXBlOi8vIHByZWZpeAotICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmUubWF0Y2goJ14oW14vOl0rKTovLycsIGFkZHJlc3MpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgPSAnJXM6Ly8lcycgJSAocHJvdG9jb2wsIGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm94aWVzW3Byb3RvY29sXSA9IGFkZHJlc3MKQEAgLTI0MTgsNyArMjUzMSw2IEBACiAgICAgZGVmIHByb3h5X2J5cGFzc19yZWdpc3RyeShob3N0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHdpbnJlZwotICAgICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICMgU3RkIG1vZHVsZXMsIHNvIHNob3VsZCBiZSBhcm91bmQgLSBidXQgeW91IG5ldmVyIGtub3chCiAgICAgICAgICAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXNwb25zZS5weSBiL0xpYi91cmxsaWIvcmVzcG9uc2UucHkKaW5kZXggZmZhYTVmYS4uMWNmMWQxYSAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yZXNwb25zZS5weQorKysgYi9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5CkBAIC0zNywxMiArMzcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLCBzZWxmLmZwKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmZwOgorICAgICAgICAgICAgc2VsZi5mcC5jbG9zZSgpCisgICAgICAgIHNlbGYuZnAgPSBOb25lCiAgICAgICAgIHNlbGYucmVhZCA9IE5vbmUKICAgICAgICAgc2VsZi5yZWFkbGluZSA9IE5vbmUKICAgICAgICAgc2VsZi5yZWFkbGluZXMgPSBOb25lCiAgICAgICAgIHNlbGYuZmlsZW5vID0gTm9uZQotICAgICAgICBpZiBzZWxmLmZwOiBzZWxmLmZwLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5fX25leHRfXyA9IE5vbmUKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggNTY4NGFkNy4uMGRmMDc0MyAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTQ0MCw3ICs0NDAsNyBAQAogICAgIGltcG9ydCBzeXMKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGltcG9ydCBvcwotICAgICAgICBpZiBpbnQob3MudW5hbWUoKVsyXS5zcGxpdCgnLicpWzBdKSA+PSA5OgorICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pID49IDk6CiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gPSBfdXVpZF9nZW5lcmF0ZV90aW1lID0gTm9uZQogCiAgICAgIyBPbiBXaW5kb3dzIHByaW9yIHRvIDIwMDAsIFV1aWRDcmVhdGUgZ2l2ZXMgYSBVVUlEIGNvbnRhaW5pbmcgdGhlCmRpZmYgLS1naXQgYS9MaWIvdmVudi9fX2luaXRfXy5weSBiL0xpYi92ZW52L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMmRlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9fX2luaXRfXy5weQpAQCAtMCwwICsxLDM5OCBAQAorIiIiCitWaXJ0dWFsIGVudmlyb25tZW50ICh2ZW52KSBwYWNrYWdlIGZvciBQeXRob24uIEJhc2VkIG9uIFBFUCA0MDUuCisKK0NvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpbmF5IFNhamlwLgorTGljZW5zZWQgdG8gdGhlIFBTRiB1bmRlciBhIGNvbnRyaWJ1dG9yIGFncmVlbWVudC4KKwordXNhZ2U6IHB5dGhvbiAtbSB2ZW52IFstaF0gWy0tc3lzdGVtLXNpdGUtcGFja2FnZXNdIFstLXN5bWxpbmtzXSBbLS1jbGVhcl0KKyAgICAgICAgICAgIFstLXVwZ3JhZGVdCisgICAgICAgICAgICBFTlZfRElSIFtFTlZfRElSIC4uLl0KKworQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgorCitwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgRU5WX0RJUiAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisKK29wdGlvbmFsIGFyZ3VtZW50czoKKyAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCisgIC0tc3ltbGlua3MgICAgICAgICAgICBBdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weS4KKyAgLS1jbGVhciAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCBhbmQgdGhlIGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZWQuCisgIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCisiIiIKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBpbworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworY2xhc3MgQ29udGV4dDoKKyAgICAiIiIKKyAgICBIb2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhIGN1cnJlbnQgdmVudiBjcmVhdGlvbi91cGdyYWRlIHJlcXVlc3QuCisgICAgIiIiCisgICAgcGFzcworCisKK2NsYXNzIEVudkJ1aWxkZXI6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBleGlzdHMgdG8gYWxsb3cgdmlydHVhbCBlbnZpcm9ubWVudCBjcmVhdGlvbiB0byBiZQorICAgIGN1c3RvbWlzZWQuIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGRldGVybWluZSB0aGUgYnVpbGRlcidzCisgICAgYmVoYXZpb3VyIHdoZW4gY2FsbGVkIHVwb24gdG8gY3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KKworICAgIEJ5IGRlZmF1bHQsIHRoZSBidWlsZGVyIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIKKyAgICBhdmFpbGFibGUgdG8gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisKKyAgICBCeSBkZWZhdWx0LCB0aGUgY3JlYXRpb24gcHJvY2VzcyB1c2VzIHN5bWxpbmtzIHdoZXJldmVyIHBvc3NpYmxlLgorCisgICAgOnBhcmFtIHN5c3RlbV9zaXRlX3BhY2thZ2VzOiBJZiBUcnVlLCB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpciBpcyBhdmFpbGFibGUgdG8gY3JlYXRlZCBlbnZpcm9ubWVudHMuCisgICAgOnBhcmFtIGNsZWFyOiBJZiBUcnVlIGFuZCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMsIGl0IGlzIGRlbGV0ZWQuCisgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIGlmIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgYW4gZXJyb3IgaXMKKyAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgICA6cGFyYW0gc3ltbGlua3M6IElmIFRydWUsIGF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5IGZpbGVzIGludG8KKyAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgOnBhcmFtIHVwZ3JhZGU6IElmIFRydWUsIHVwZ3JhZGUgYW4gZXhpc3RpbmcgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCisgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlKToKKyAgICAgICAgc2VsZi5zeXN0ZW1fc2l0ZV9wYWNrYWdlcyA9IHN5c3RlbV9zaXRlX3BhY2thZ2VzCisgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgorICAgICAgICBzZWxmLnN5bWxpbmtzID0gc3ltbGlua3MKKyAgICAgICAgc2VsZi51cGdyYWRlID0gdXBncmFkZQorCisgICAgZGVmIGNyZWF0ZShzZWxmLCBlbnZfZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuCisKKyAgICAgICAgOnBhcmFtIGVudl9kaXI6IFRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KKworICAgICAgICAiIiIKKyAgICAgICAgZW52X2RpciA9IG9zLnBhdGguYWJzcGF0aChlbnZfZGlyKQorICAgICAgICBjb250ZXh0ID0gc2VsZi5lbnN1cmVfZGlyZWN0b3JpZXMoZW52X2RpcikKKyAgICAgICAgc2VsZi5jcmVhdGVfY29uZmlndXJhdGlvbihjb250ZXh0KQorICAgICAgICBzZWxmLnNldHVwX3B5dGhvbihjb250ZXh0KQorICAgICAgICBpZiBub3Qgc2VsZi51cGdyYWRlOgorICAgICAgICAgICAgc2VsZi5zZXR1cF9zY3JpcHRzKGNvbnRleHQpCisgICAgICAgICAgICBzZWxmLnBvc3Rfc2V0dXAoY29udGV4dCkKKworICAgIGRlZiBlbnN1cmVfZGlyZWN0b3JpZXMoc2VsZiwgZW52X2Rpcik6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgdGhlIGRpcmVjdG9yaWVzIGZvciB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgUmV0dXJucyBhIGNvbnRleHQgb2JqZWN0IHdoaWNoIGhvbGRzIHBhdGhzIGluIHRoZSBlbnZpcm9ubWVudCwKKyAgICAgICAgZm9yIHVzZSBieSBzdWJzZXF1ZW50IGxvZ2ljLgorICAgICAgICAiIiIKKworICAgICAgICBkZWYgY3JlYXRlX2lmX25lZWRlZChkKToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkKToKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkKQorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGVudl9kaXIpIGFuZCBub3QgKHNlbGYuY2xlYXIgb3Igc2VsZi51cGdyYWRlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0RpcmVjdG9yeSBleGlzdHM6ICVzJyAlIGVudl9kaXIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGVudl9kaXIpIGFuZCBzZWxmLmNsZWFyOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShlbnZfZGlyKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIGNvbnRleHQuZW52X2RpciA9IGVudl9kaXIKKyAgICAgICAgY29udGV4dC5lbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoZW52X2RpcilbMV0KKyAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKGVudl9kaXIpCisgICAgICAgIGVudiA9IG9zLmVudmlyb24KKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gZW52OgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgICAgIGRpcm5hbWUsIGV4ZW5hbWUgPSBvcy5wYXRoLnNwbGl0KG9zLnBhdGguYWJzcGF0aChleGVjdXRhYmxlKSkKKyAgICAgICAgY29udGV4dC5leGVjdXRhYmxlID0gZXhlY3V0YWJsZQorICAgICAgICBjb250ZXh0LnB5dGhvbl9kaXIgPSBkaXJuYW1lCisgICAgICAgIGNvbnRleHQucHl0aG9uX2V4ZSA9IGV4ZW5hbWUKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBiaW5uYW1lID0gJ1NjcmlwdHMnCisgICAgICAgICAgICBpbmNwYXRoID0gJ0luY2x1ZGUnCisgICAgICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsICdMaWInLCAnc2l0ZS1wYWNrYWdlcycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiaW5uYW1lID0gJ2JpbicKKyAgICAgICAgICAgIGluY3BhdGggPSAnaW5jbHVkZScKKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgJ2xpYicsICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwgJ3NpdGUtcGFja2FnZXMnKQorICAgICAgICBjb250ZXh0LmluY19wYXRoID0gcGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCBpbmNwYXRoKQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKHBhdGgpCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQobGlicGF0aCkKKyAgICAgICAgY29udGV4dC5iaW5fcGF0aCA9IGJpbnBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgYmlubmFtZSkKKyAgICAgICAgY29udGV4dC5iaW5fbmFtZSA9IGJpbm5hbWUKKyAgICAgICAgY29udGV4dC5lbnZfZXhlID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGV4ZW5hbWUpCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQoYmlucGF0aCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQKKworICAgIGRlZiBjcmVhdGVfY29uZmlndXJhdGlvbihzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSBpbmRpY2F0aW5nIHdoZXJlIHRoZSBlbnZpcm9ubWVudCdzIFB5dGhvbgorICAgICAgICB3YXMgY29waWVkIGZyb20sIGFuZCB3aGV0aGVyIHRoZSBzeXN0ZW0gc2l0ZS1wYWNrYWdlcyBzaG91bGQgYmUgbWFkZQorICAgICAgICBhdmFpbGFibGUgaW4gdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICBjb250ZXh0LmNmZ19wYXRoID0gcGF0aCA9IG9zLnBhdGguam9pbihjb250ZXh0LmVudl9kaXIsICdweXZlbnYuY2ZnJykKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ2hvbWUgPSAlc1xuJyAlIGNvbnRleHQucHl0aG9uX2RpcikKKyAgICAgICAgICAgIGlmIHNlbGYuc3lzdGVtX3NpdGVfcGFja2FnZXM6CisgICAgICAgICAgICAgICAgaW5jbCA9ICd0cnVlJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbmNsID0gJ2ZhbHNlJworICAgICAgICAgICAgZi53cml0ZSgnaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyA9ICVzXG4nICUgaW5jbCkKKyAgICAgICAgICAgIGYud3JpdGUoJ3ZlcnNpb24gPSAlZC4lZC4lZFxuJyAlIHN5cy52ZXJzaW9uX2luZm9bOjNdKQorCisgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICBkZWYgaW5jbHVkZV9iaW5hcnkoc2VsZiwgZik6CisgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCgnLnB5ZCcsICcuZGxsJykpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5zdGFydHN3aXRoKCdweXRob24nKSBhbmQgZi5lbmRzd2l0aCgnLmV4ZScpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgc3ltbGlua19vcl9jb3B5KHNlbGYsIHNyYywgZHN0KToKKyAgICAgICAgIiIiCisgICAgICAgIFRyeSBzeW1saW5raW5nIGEgZmlsZSwgYW5kIGlmIHRoYXQgZmFpbHMsIGZhbGwgYmFjayB0byBjb3B5aW5nLgorICAgICAgICAiIiIKKyAgICAgICAgZm9yY2VfY29weSA9IG5vdCBzZWxmLnN5bWxpbmtzCisgICAgICAgIGlmIG5vdCBmb3JjZV9jb3B5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhkc3QpOiAjIGNhbid0IGxpbmsgdG8gaXRzZWxmIQorICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjogICAjIG1heSBuZWVkIHRvIHVzZSBhIG1vcmUgc3BlY2lmaWMgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1VuYWJsZSB0byBzeW1saW5rICVyIHRvICVyJywgc3JjLCBkc3QpCisgICAgICAgICAgICAgICAgZm9yY2VfY29weSA9IFRydWUKKyAgICAgICAgaWYgZm9yY2VfY29weToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmMsIGRzdCkKKworICAgIGRlZiBzZXR1cF9weXRob24oc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBTZXQgdXAgYSBQeXRob24gZXhlY3V0YWJsZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCisgICAgICAgIGV4ZW5hbWUgPSBjb250ZXh0LnB5dGhvbl9leGUKKyAgICAgICAgcGF0aCA9IGNvbnRleHQuZW52X2V4ZQorICAgICAgICBjb3BpZXIgPSBzZWxmLnN5bWxpbmtfb3JfY29weQorICAgICAgICBjb3BpZXIoY29udGV4dC5leGVjdXRhYmxlLCBwYXRoKQorICAgICAgICBkaXJuYW1lID0gY29udGV4dC5weXRob25fZGlyCisgICAgICAgIGlmIG9zLm5hbWUgIT0gJ250JzoKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhwYXRoKToKKyAgICAgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCAwbzc1NSkKKyAgICAgICAgICAgIGZvciBzdWZmaXggaW4gKCdweXRob24nLCAncHl0aG9uMycpOgorICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhleGVuYW1lLCBwYXRoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3ViZGlyID0gJ0RMTHMnCisgICAgICAgICAgICBpbmNsdWRlID0gc2VsZi5pbmNsdWRlX2JpbmFyeQorICAgICAgICAgICAgZmlsZXMgPSBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKGRpcm5hbWUpIGlmIGluY2x1ZGUoZildCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZikKKyAgICAgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZikKKyAgICAgICAgICAgICAgICBpZiBkc3QgIT0gY29udGV4dC5lbnZfZXhlOiAgIyBhbHJlYWR5IGRvbmUsIGFib3ZlCisgICAgICAgICAgICAgICAgICAgIGNvcGllcihzcmMsIGRzdCkKKyAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgc3ViZGlyKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihkaXJuYW1lKToKKyAgICAgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIG9zLmxpc3RkaXIoZGlybmFtZSkgaWYgaW5jbHVkZShmKV0KKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGYpCisgICAgICAgICAgICAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmKQorICAgICAgICAgICAgICAgICAgICBjb3BpZXIoc3JjLCBkc3QpCisgICAgICAgICAgICAjIGNvcHkgaW5pdC50Y2wgb3ZlcgorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoY29udGV4dC5weXRob25fZGlyKToKKyAgICAgICAgICAgICAgICBpZiAnaW5pdC50Y2wnIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICB0Y2xkaXIgPSBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpCisgICAgICAgICAgICAgICAgICAgIHRjbGRpciA9IG9zLnBhdGguam9pbihjb250ZXh0LmVudl9kaXIsICdMaWInLCB0Y2xkaXIpCisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHRjbGRpcikKKyAgICAgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHJvb3QsICdpbml0LnRjbCcpCisgICAgICAgICAgICAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0Y2xkaXIsICdpbml0LnRjbCcpCisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmMsIGRzdCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBzZXR1cF9zY3JpcHRzKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgU2V0IHVwIHNjcmlwdHMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudCBmcm9tIGEgZGlyZWN0b3J5LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGluc3RhbGxzIHRoZSBkZWZhdWx0IHNjcmlwdHMgaW50byB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgYmVpbmcgY3JlYXRlZC4gWW91IGNhbiBwcmV2ZW50IHRoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBieSBvdmVycmlkaW5nCisgICAgICAgIHRoaXMgbWV0aG9kIGlmIHlvdSByZWFsbHkgbmVlZCB0bywgb3IgaWYgeW91IG5lZWQgdG8gc3BlY2lmeQorICAgICAgICBhIGRpZmZlcmVudCBsb2NhdGlvbiBmb3IgdGhlIHNjcmlwdHMgdG8gaW5zdGFsbC4gQnkgZGVmYXVsdCwgdGhlCisgICAgICAgICdzY3JpcHRzJyBkaXJlY3RvcnkgaW4gdGhlIHZlbnYgcGFja2FnZSBpcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YKKyAgICAgICAgc2NyaXB0cyB0byBpbnN0YWxsLgorICAgICAgICAiIiIKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsICdzY3JpcHRzJykKKyAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdHMoY29udGV4dCwgcGF0aCkKKworICAgIGRlZiBwb3N0X3NldHVwKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgSG9vayBmb3IgcG9zdC1zZXR1cCBtb2RpZmljYXRpb24gb2YgdGhlIHZlbnYuIFN1YmNsYXNzZXMgbWF5IGluc3RhbGwKKyAgICAgICAgYWRkaXRpb25hbCBwYWNrYWdlcyBvciBzY3JpcHRzIGhlcmUsIGFkZCBhY3RpdmF0aW9uIHNoZWxsIHNjcmlwdHMsIGV0Yy4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlcGxhY2VfdmFyaWFibGVzKHNlbGYsIHRleHQsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVwbGFjZSB2YXJpYWJsZSBwbGFjZWhvbGRlcnMgaW4gc2NyaXB0IHRleHQgd2l0aCBjb250ZXh0LXNwZWNpZmljCisgICAgICAgIHZhcmlhYmxlcy4KKworICAgICAgICBSZXR1cm4gdGhlIHRleHQgcGFzc2VkIGluICwgYnV0IHdpdGggdmFyaWFibGVzIHJlcGxhY2VkLgorCisgICAgICAgIDpwYXJhbSB0ZXh0OiBUaGUgdGV4dCBpbiB3aGljaCB0byByZXBsYWNlIHBsYWNlaG9sZGVyIHZhcmlhYmxlcy4KKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9ESVJfXycsIGNvbnRleHQuZW52X2RpcikKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX05BTUVfXycsIGNvbnRleHQucHJvbXB0KQorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfQklOX05BTUVfXycsIGNvbnRleHQuYmluX25hbWUpCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9QWVRIT05fXycsIGNvbnRleHQuZW52X2V4ZSkKKyAgICAgICAgcmV0dXJuIHRleHQKKworICAgIGRlZiBpbnN0YWxsX3NjcmlwdHMoc2VsZiwgY29udGV4dCwgcGF0aCk6CisgICAgICAgICIiIgorICAgICAgICBJbnN0YWxsIHNjcmlwdHMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudCBmcm9tIGEgZGlyZWN0b3J5LgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgIDpwYXJhbSBwYXRoOiAgICBBYnNvbHV0ZSBwYXRobmFtZSBvZiBhIGRpcmVjdG9yeSBjb250YWluaW5nIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdHMgaW4gdGhlICdjb21tb24nIHN1YmRpcmVjdG9yeSBvZiB0aGlzIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aG9zZSBpbiB0aGUgZGlyZWN0b3J5IG5hbWVkIGZvciB0aGUgcGxhdGZvcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHJ1biBvbiwgYXJlIGluc3RhbGxlZCBpbiB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBsYWNlaG9sZGVyIHZhcmlhYmxlcyBhcmUgcmVwbGFjZWQgd2l0aCBlbnZpcm9ubWVudC0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHZhbHVlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCisgICAgICAgIHBsZW4gPSBsZW4ocGF0aCkKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCk6CisgICAgICAgICAgICBpZiByb290ID09IHBhdGg6ICMgYXQgdG9wLWxldmVsLCByZW1vdmUgaXJyZWxldmFudCBkaXJzCisgICAgICAgICAgICAgICAgZm9yIGQgaW4gZGlyc1s6XToKKyAgICAgICAgICAgICAgICAgICAgaWYgZCBub3QgaW4gKCdjb21tb24nLCBvcy5uYW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKGQpCisgICAgICAgICAgICAgICAgY29udGludWUgIyBpZ25vcmUgZmlsZXMgaW4gdG9wIGxldmVsCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBzcmNmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCisgICAgICAgICAgICAgICAgc3VmZml4ID0gcm9vdFtwbGVuOl0uc3BsaXQob3Muc2VwKVsyOl0KKyAgICAgICAgICAgICAgICBpZiBub3Qgc3VmZml4OgorICAgICAgICAgICAgICAgICAgICBkc3RkaXIgPSBiaW5wYXRoCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZHN0ZGlyID0gb3MucGF0aC5qb2luKGJpbnBhdGgsICpzdWZmaXgpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdGRpcik6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRzdGRpcikKKyAgICAgICAgICAgICAgICBkc3RmaWxlID0gb3MucGF0aC5qb2luKGRzdGRpciwgZikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisgICAgICAgICAgICAgICAgaWYgc3JjZmlsZS5lbmRzd2l0aCgnLmV4ZScpOgorICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3diJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAndycKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlcGxhY2VfdmFyaWFibGVzKGRhdGEsIGNvbnRleHQpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRzdGZpbGUsIG1vZGUpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjZmlsZSwgZHN0ZmlsZSkKKworCitkZWYgY3JlYXRlKGVudl9kaXIsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgc3ltbGlua3M9RmFsc2UpOgorICAgICIiIgorICAgIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuCisKKyAgICBCeSBkZWZhdWx0LCBtYWtlcyB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMgZGlyIGF2YWlsYWJsZSB0bworICAgIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LgorCisgICAgOnBhcmFtIGVudl9kaXI6IFRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KKyAgICA6cGFyYW0gc3lzdGVtX3NpdGVfcGFja2FnZXM6IElmIFRydWUsIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyIGlzIGF2YWlsYWJsZSB0byB0aGUgZW52aXJvbm1lbnQuCisgICAgOnBhcmFtIGNsZWFyOiBJZiBUcnVlIGFuZCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMsIGl0IGlzIGRlbGV0ZWQuCisgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIGlmIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgYW4gZXJyb3IgaXMKKyAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgICA6cGFyYW0gc3ltbGlua3M6IElmIFRydWUsIGF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5IGZpbGVzIGludG8KKyAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgIiIiCisgICAgYnVpbGRlciA9IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9c3lzdGVtX3NpdGVfcGFja2FnZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPWNsZWFyLCBzeW1saW5rcz1zeW1saW5rcykKKyAgICBidWlsZGVyLmNyZWF0ZShlbnZfZGlyKQorCitkZWYgbWFpbihhcmdzPU5vbmUpOgorICAgIGNvbXBhdGlibGUgPSBUcnVlCisgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICAgICAgY29tcGF0aWJsZSA9IEZhbHNlCisgICAgZWxpZiBub3QgaGFzYXR0cihzeXMsICdiYXNlX3ByZWZpeCcpOgorICAgICAgICBjb21wYXRpYmxlID0gRmFsc2UKKyAgICBpZiBub3QgY29tcGF0aWJsZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVGhpcyBzY3JpcHQgaXMgb25seSBmb3IgdXNlIHdpdGggUHl0aG9uIDMuMycpCisgICAgZWxzZToKKyAgICAgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz1fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J0NyZWF0ZXMgdmlydHVhbCBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnRzIGluIG9uZSBvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3JlIHRhcmdldCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3Rvcmllcy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J09uY2UgYW4gZW52aXJvbm1lbnQgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQsIHlvdSBtYXkgd2lzaCB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZhdGUgaXQsIGUuZy4gYnkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjaW5nIGFuIGFjdGl2YXRlIHNjcmlwdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4gaXRzIGJpbiBkaXJlY3RvcnkuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZGlycycsIG1ldGF2YXI9J0VOVl9ESVInLCBuYXJncz0nKycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN5c3RlbS1zaXRlLXBhY2thZ2VzJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdzeXN0ZW1fc2l0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0gc2l0ZS1wYWNrYWdlcyBkaXIuJykKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgdXNlX3N5bWxpbmtzID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVzZV9zeW1saW5rcyA9IFRydWUKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zeW1saW5rcycsIGRlZmF1bHQ9dXNlX3N5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3N5bWxpbmtzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3doZW4gc3ltbGlua3MgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBwbGF0Zm9ybS4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNsZWFyJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjbGVhcicsIGhlbHA9J0RlbGV0ZSB0aGUgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RzLiBJZiBub3Qgc3BlY2lmaWVkIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZGlyZWN0b3J5IGV4aXN0cywgYW4gZXJyb3InCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgaXMgcmFpc2VkLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdXBncmFkZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIGVudmlyb25tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLicpCisgICAgICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorICAgICAgICBpZiBvcHRpb25zLnVwZ3JhZGUgYW5kIG9wdGlvbnMuY2xlYXI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5b3UgY2Fubm90IHN1cHBseSAtLXVwZ3JhZGUgYW5kIC0tY2xlYXIgdG9nZXRoZXIuJykKKyAgICAgICAgYnVpbGRlciA9IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9b3B0aW9ucy5zeXN0ZW1fc2l0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9b3B0aW9ucy5jbGVhciwgc3ltbGlua3M9b3B0aW9ucy5zeW1saW5rcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBncmFkZT1vcHRpb25zLnVwZ3JhZGUpCisgICAgICAgIGZvciBkIGluIG9wdGlvbnMuZGlyczoKKyAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKGQpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgcmMgPSAxCisgICAgdHJ5OgorICAgICAgICBtYWluKCkKKyAgICAgICAgcmMgPSAwCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCgnRXJyb3I6ICVzJyAlIGUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdChyYykKZGlmZiAtLWdpdCBhL0xpYi92ZW52L19fbWFpbl9fLnB5IGIvTGliL3ZlbnYvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEyNDIzZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCBzeXMKK2Zyb20gLiBpbXBvcnQgbWFpbgorCityYyA9IDEKK3RyeToKKyAgICBtYWluKCkKKyAgICByYyA9IDAKK2V4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICBwcmludCgnRXJyb3I6ICVzJyAlIGUsIGZpbGU9c3lzLnN0ZGVycikKK3N5cy5leGl0KHJjKQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9BY3RpdmF0ZS5wczEgYi9MaWIvdmVudi9zY3JpcHRzL250L0FjdGl2YXRlLnBzMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzVlZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9BY3RpdmF0ZS5wczEKQEAgLTAsMCArMSwzNCBAQAorJGVudjpWSVJUVUFMX0VOVj0iX19WRU5WX0RJUl9fIg0KKw0KKyMgUmV2ZXJ0IHRvIG9yaWdpbmFsIHZhbHVlcw0KK2lmIChUZXN0LVBhdGggZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVCkgew0KKyAgICBjb3B5LWl0ZW0gZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVCBmdW5jdGlvbjpwcm9tcHQNCisgICAgcmVtb3ZlLWl0ZW0gZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVA0KK30NCisNCitpZiAoVGVzdC1QYXRoIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSkgew0KKyAgICBjb3B5LWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FIGVudjpQWVRIT05IT01FDQorICAgIHJlbW92ZS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRQ0KK30NCisNCitpZiAoVGVzdC1QYXRoIGVudjpfT0xEX1ZJUlRVQUxfUEFUSCkgew0KKyAgICBjb3B5LWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIIGVudjpQQVRIDQorICAgIHJlbW92ZS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUEFUSA0KK30NCisNCisjIFNldCB0aGUgcHJvbXB0IHRvIGluY2x1ZGUgdGhlIGVudiBuYW1lDQorY29weS1pdGVtIGZ1bmN0aW9uOnByb21wdCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQorZnVuY3Rpb24gcHJvbXB0IHsNCisgICAgV3JpdGUtSG9zdCAtTm9OZXdsaW5lIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4gJ1tfX1ZFTlZfTkFNRV9fXScNCisgICAgX09MRF9WSVJUVUFMX1BST01QVA0KK30NCisNCisjIENsZWFyIFBZVEhPTkhPTUUNCitpZiAoVGVzdC1QYXRoIGVudjpQWVRIT05IT01FKSB7DQorICAgIGNvcHktaXRlbSBlbnY6UFlUSE9OSE9NRSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUNCisgICAgcmVtb3ZlLWl0ZW0gZW52OlBZVEhPTkhPTUUNCit9DQorDQorIyBBZGQgdGhlIHZlbnYgdG8gdGhlIFBBVEgNCitjb3B5LWl0ZW0gZW52OlBBVEggZW52Ol9PTERfVklSVFVBTF9QQVRIDQorJGVudjpQQVRIID0gIiRlbnY6VklSVFVBTF9FTlZcX19WRU5WX0JJTl9OQU1FX187JGVudjpQQVRIIg0KZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvRGVhY3RpdmF0ZS5wczEgYi9MaWIvdmVudi9zY3JpcHRzL250L0RlYWN0aXZhdGUucHMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMWU5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L0RlYWN0aXZhdGUucHMxCkBAIC0wLDAgKzEsMTkgQEAKKyMgUmV2ZXJ0IHRvIG9yaWdpbmFsIHZhbHVlcw0KK2lmIChUZXN0LVBhdGggZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVCkgew0KKyAgICBjb3B5LWl0ZW0gZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVCBmdW5jdGlvbjpwcm9tcHQNCisgICAgcmVtb3ZlLWl0ZW0gZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVA0KK30NCisNCitpZiAoVGVzdC1QYXRoIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSkgew0KKyAgICBjb3B5LWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FIGVudjpQWVRIT05IT01FDQorICAgIHJlbW92ZS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRQ0KK30NCisNCitpZiAoVGVzdC1QYXRoIGVudjpfT0xEX1ZJUlRVQUxfUEFUSCkgew0KKyAgICBjb3B5LWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIIGVudjpQQVRIDQorICAgIHJlbW92ZS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUEFUSA0KK30NCisNCitpZiAoVGVzdC1QYXRoIGVudjpWSVJUVUFMX0VOVikgew0KKyAgICByZW1vdmUtaXRlbSBlbnY6VklSVFVBTF9FTlYNCit9DQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9hY3RpdmF0ZS5iYXQgYi9MaWIvdmVudi9zY3JpcHRzL250L2FjdGl2YXRlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDVlNjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9hY3RpdmF0ZS5iYXQKQEAgLTAsMCArMSwzMSBAQAorQGVjaG8gb2ZmDQorc2V0IFZJUlRVQUxfRU5WPV9fVkVOVl9ESVJfXw0KKw0KK2lmIG5vdCBkZWZpbmVkIFBST01QVCAoDQorICAgIHNldCBQUk9NUFQ9JFAkRw0KKykNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QUk9NUFQgKA0KKyAgICBzZXQgUFJPTVBUPSVfT0xEX1ZJUlRVQUxfUFJPTVBUJQ0KKykNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QWVRIT05IT01FICgNCisgICAgIHNldCBQWVRIT05IT01FPSVfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSUNCispDQorDQorc2V0IF9PTERfVklSVFVBTF9QUk9NUFQ9JVBST01QVCUNCitzZXQgUFJPTVBUPV9fVkVOVl9OQU1FX18lUFJPTVBUJQ0KKw0KK2lmIGRlZmluZWQgUFlUSE9OSE9NRSAoDQorICAgICBzZXQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUU9JVBZVEhPTkhPTUUlDQorICAgICBzZXQgUFlUSE9OSE9NRT0NCispDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUEFUSCBzZXQgUEFUSD0lX09MRF9WSVJUVUFMX1BBVEglOyBnb3RvIFNLSVBQQVRIDQorDQorc2V0IF9PTERfVklSVFVBTF9QQVRIPSVQQVRIJQ0KKw0KKzpTS0lQUEFUSA0KK3NldCBQQVRIPSVWSVJUVUFMX0VOViVcX19WRU5WX0JJTl9OQU1FX187JVBBVEglDQorDQorOkVORA0KZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvZGVhY3RpdmF0ZS5iYXQgYi9MaWIvdmVudi9zY3JpcHRzL250L2RlYWN0aXZhdGUuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZGE1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L2RlYWN0aXZhdGUuYmF0CkBAIC0wLDAgKzEsMTcgQEAKK0BlY2hvIG9mZg0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BST01QVCAoDQorICAgIHNldCBQUk9NUFQ9JV9PTERfVklSVFVBTF9QUk9NUFQlDQorKQ0KK3NldCBfT0xEX1ZJUlRVQUxfUFJPTVBUPQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgKA0KKyAgICAgc2V0IFBZVEhPTkhPTUU9JV9PTERfVklSVFVBTF9QWVRIT05IT01FJQ0KKyAgICAgc2V0IF9PTERfVklSVFVBTF9QWVRIT05IT01FPQ0KKykNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QQVRIIHNldCBQQVRIPSVfT0xEX1ZJUlRVQUxfUEFUSCUNCisNCitzZXQgX09MRF9WSVJUVUFMX1BBVEg9DQorDQorOkVORA0KZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvcHlkb2MucHkgYi9MaWIvdmVudi9zY3JpcHRzL250L3B5ZG9jLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZjJkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L3B5ZG9jLnB5CkBAIC0wLDAgKzEsNCBAQAorIyFfX1ZFTlZfUFlUSE9OX18KK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cywgcHlkb2MKKyAgICBzeXMuZXhpdChweWRvYy5jbGkoKSkKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L2FjdGl2YXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNDE0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L2FjdGl2YXRlCkBAIC0wLDAgKzEsNzYgQEAKKyMgVGhpcyBmaWxlIG11c3QgYmUgdXNlZCB3aXRoICJzb3VyY2UgYmluL2FjdGl2YXRlIiAqZnJvbSBiYXNoKgorIyB5b3UgY2Fubm90IHJ1biBpdCBkaXJlY3RseQorCitkZWFjdGl2YXRlICgpIHsKKyAgICAjIHJlc2V0IG9sZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICBpZiBbIC1uICIkX09MRF9WSVJUVUFMX1BBVEgiIF0gOyB0aGVuCisgICAgICAgIFBBVEg9IiRfT0xEX1ZJUlRVQUxfUEFUSCIKKyAgICAgICAgZXhwb3J0IFBBVEgKKyAgICAgICAgdW5zZXQgX09MRF9WSVJUVUFMX1BBVEgKKyAgICBmaQorICAgIGlmIFsgLW4gIiRfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSIgXSA7IHRoZW4KKyAgICAgICAgUFlUSE9OSE9NRT0iJF9PTERfVklSVFVBTF9QWVRIT05IT01FIgorICAgICAgICBleHBvcnQgUFlUSE9OSE9NRQorICAgICAgICB1bnNldCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRQorICAgIGZpCisKKyAgICAjIFRoaXMgc2hvdWxkIGRldGVjdCBiYXNoIGFuZCB6c2gsIHdoaWNoIGhhdmUgYSBoYXNoIGNvbW1hbmQgdGhhdCBtdXN0CisgICAgIyBiZSBjYWxsZWQgdG8gZ2V0IGl0IHRvIGZvcmdldCBwYXN0IGNvbW1hbmRzLiAgV2l0aG91dCBmb3JnZXR0aW5nCisgICAgIyBwYXN0IGNvbW1hbmRzIHRoZSAkUEFUSCBjaGFuZ2VzIHdlIG1hZGUgbWF5IG5vdCBiZSByZXNwZWN0ZWQKKyAgICBpZiBbIC1uICIkQkFTSCIgLW8gLW4gIiRaU0hfVkVSU0lPTiIgXSA7IHRoZW4KKyAgICAgICAgaGFzaCAtcgorICAgIGZpCisKKyAgICBpZiBbIC1uICIkX09MRF9WSVJUVUFMX1BTMSIgXSA7IHRoZW4KKyAgICAgICAgUFMxPSIkX09MRF9WSVJUVUFMX1BTMSIKKyAgICAgICAgZXhwb3J0IFBTMQorICAgICAgICB1bnNldCBfT0xEX1ZJUlRVQUxfUFMxCisgICAgZmkKKworICAgIHVuc2V0IFZJUlRVQUxfRU5WCisgICAgaWYgWyAhICIkMSIgPSAibm9uZGVzdHJ1Y3RpdmUiIF0gOyB0aGVuCisgICAgIyBTZWxmIGRlc3RydWN0IQorICAgICAgICB1bnNldCAtZiBkZWFjdGl2YXRlCisgICAgZmkKK30KKworIyB1bnNldCBpcnJlbGF2ZW50IHZhcmlhYmxlcworZGVhY3RpdmF0ZSBub25kZXN0cnVjdGl2ZQorCitWSVJUVUFMX0VOVj0iX19WRU5WX0RJUl9fIgorZXhwb3J0IFZJUlRVQUxfRU5WCisKK19PTERfVklSVFVBTF9QQVRIPSIkUEFUSCIKK1BBVEg9IiRWSVJUVUFMX0VOVi9fX1ZFTlZfQklOX05BTUVfXzokUEFUSCIKK2V4cG9ydCBQQVRICisKKyMgdW5zZXQgUFlUSE9OSE9NRSBpZiBzZXQKKyMgdGhpcyB3aWxsIGZhaWwgaWYgUFlUSE9OSE9NRSBpcyBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyAod2hpY2ggaXMgYmFkIGFueXdheSkKKyMgY291bGQgdXNlIGBpZiAoc2V0IC11OyA6ICRQWVRIT05IT01FKSA7YCBpbiBiYXNoCitpZiBbIC1uICIkUFlUSE9OSE9NRSIgXSA7IHRoZW4KKyAgICBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRT0iJFBZVEhPTkhPTUUiCisgICAgdW5zZXQgUFlUSE9OSE9NRQorZmkKKworaWYgWyAteiAiJFZJUlRVQUxfRU5WX0RJU0FCTEVfUFJPTVBUIiBdIDsgdGhlbgorICAgIF9PTERfVklSVFVBTF9QUzE9IiRQUzEiCisgICAgaWYgWyAieF9fVkVOVl9OQU1FX18iICE9IHggXSA7IHRoZW4KKwlQUzE9Il9fVkVOVl9OQU1FX18kUFMxIgorICAgIGVsc2UKKyAgICBpZiBbICJgYmFzZW5hbWUgXCIkVklSVFVBTF9FTlZcImAiID0gIl9fIiBdIDsgdGhlbgorICAgICAgICAjIHNwZWNpYWwgY2FzZSBmb3IgQXNwZW4gbWFnaWMgZGlyZWN0b3JpZXMKKyAgICAgICAgIyBzZWUgaHR0cDovL3d3dy56ZXRhZGV2LmNvbS9zb2Z0d2FyZS9hc3Blbi8KKyAgICAgICAgUFMxPSJbYGJhc2VuYW1lIFxgZGlybmFtZSBcIiRWSVJUVUFMX0VOVlwiXGBgXSAkUFMxIgorICAgIGVsc2UKKyAgICAgICAgUFMxPSIoYGJhc2VuYW1lIFwiJFZJUlRVQUxfRU5WXCJgKSRQUzEiCisgICAgZmkKKyAgICBmaQorICAgIGV4cG9ydCBQUzEKK2ZpCisKKyMgVGhpcyBzaG91bGQgZGV0ZWN0IGJhc2ggYW5kIHpzaCwgd2hpY2ggaGF2ZSBhIGhhc2ggY29tbWFuZCB0aGF0IG11c3QKKyMgYmUgY2FsbGVkIHRvIGdldCBpdCB0byBmb3JnZXQgcGFzdCBjb21tYW5kcy4gIFdpdGhvdXQgZm9yZ2V0dGluZworIyBwYXN0IGNvbW1hbmRzIHRoZSAkUEFUSCBjaGFuZ2VzIHdlIG1hZGUgbWF5IG5vdCBiZSByZXNwZWN0ZWQKK2lmIFsgLW4gIiRCQVNIIiAtbyAtbiAiJFpTSF9WRVJTSU9OIiBdIDsgdGhlbgorICAgIGhhc2ggLXIKK2ZpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L3B5ZG9jIGIvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9weWRvYwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MjMzNzcxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9weWRvYwpAQCAtMCwwICsxLDUgQEAKKyMhX19WRU5WX1BZVEhPTl9fCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMsIHB5ZG9jCisgICAgc3lzLmV4aXQocHlkb2MuY2xpKCkpCisKZGlmZiAtLWdpdCBhL0xpYi93ZWJicm93c2VyLnB5IGIvTGliL3dlYmJyb3dzZXIucHkKaW5kZXggMjAyZjM0YS4uOTRkNGFkNCAxMDA2NDQKLS0tIGEvTGliL3dlYmJyb3dzZXIucHkKKysrIGIvTGliL3dlYmJyb3dzZXIucHkKQEAgLTIzMCw3ICsyMzAsNyBAQAogICAgICAgICBjbWRsaW5lID0gW3NlbGYubmFtZV0gKyByYWlzZV9vcHQgKyBhcmdzCiAKICAgICAgICAgaWYgcmVtb3RlIG9yIHNlbGYuYmFja2dyb3VuZDoKLSAgICAgICAgICAgIGlub3V0ID0gaW8ub3Blbihvcy5kZXZudWxsLCAicisiKQorICAgICAgICAgICAgaW5vdXQgPSBzdWJwcm9jZXNzLkRFVk5VTEwKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZm9yIFRUWSBicm93c2Vycywgd2UgbmVlZCBzdGRpbi9vdXQKICAgICAgICAgICAgIGlub3V0ID0gTm9uZQpAQCAtMjM4LDE3ICsyMzgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PShzZWxmLnJlZGlyZWN0X3N0ZG91dCBhbmQgaW5vdXQgb3IgTm9uZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1pbm91dCwgc3RhcnRfbmV3X3Nlc3Npb249VHJ1ZSkKICAgICAgICAgaWYgcmVtb3RlOgotICAgICAgICAgICAgIyB3YWl0IGZpdmUgc2Vjb25kcy4gSWYgdGhlIHN1YnByb2Nlc3MgaXMgbm90IGZpbmlzaGVkLCB0aGUKKyAgICAgICAgICAgICMgd2FpdCBhdCBtb3N0IGZpdmUgc2Vjb25kcy4gSWYgdGhlIHN1YnByb2Nlc3MgaXMgbm90IGZpbmlzaGVkLCB0aGUKICAgICAgICAgICAgICMgcmVtb3RlIGludm9jYXRpb24gaGFzIChob3BlZnVsbHkpIHN0YXJ0ZWQgYSBuZXcgaW5zdGFuY2UuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgICAgICByYyA9IHAucG9sbCgpCi0gICAgICAgICAgICBpZiByYyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoNCkKLSAgICAgICAgICAgICAgICByYyA9IHAucG9sbCgpCi0gICAgICAgICAgICAgICAgaWYgcmMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICMgaWYgcmVtb3RlIGNhbGwgZmFpbGVkLCBvcGVuKCkgd2lsbCB0cnkgZGlyZWN0IGludm9jYXRpb24KLSAgICAgICAgICAgIHJldHVybiBub3QgcmMKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYyA9IHAud2FpdCg1KQorICAgICAgICAgICAgICAgICMgaWYgcmVtb3RlIGNhbGwgZmFpbGVkLCBvcGVuKCkgd2lsbCB0cnkgZGlyZWN0IGludm9jYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4gbm90IHJjCisgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIHNlbGYuYmFja2dyb3VuZDoKICAgICAgICAgICAgIGlmIHAucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTMwNiw2ICszMDMsMTggQEAKICAgICBiYWNrZ3JvdW5kID0gVHJ1ZQogCiAKK2NsYXNzIENocm9tZShVbml4QnJvd3Nlcik6CisgICAgIkxhdW5jaGVyIGNsYXNzIGZvciBHb29nbGUgQ2hyb21lIGJyb3dzZXIuIgorCisgICAgcmVtb3RlX2FyZ3MgPSBbJyVhY3Rpb24nLCAnJXMnXQorICAgIHJlbW90ZV9hY3Rpb24gPSAiIgorICAgIHJlbW90ZV9hY3Rpb25fbmV3d2luID0gIi0tbmV3LXdpbmRvdyIKKyAgICByZW1vdGVfYWN0aW9uX25ld3RhYiA9ICIiCisgICAgYmFja2dyb3VuZCA9IFRydWUKKworQ2hyb21pdW0gPSBDaHJvbWUKKworCiBjbGFzcyBPcGVyYShVbml4QnJvd3Nlcik6CiAgICAgIkxhdW5jaGVyIGNsYXNzIGZvciBPcGVyYSBicm93c2VyLiIKIApAQCAtMzQ1LDcgKzM1NCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhY3Rpb24gPSAib3BlblVSTCIKIAotICAgICAgICBkZXZudWxsID0gaW8ub3Blbihvcy5kZXZudWxsLCAicisiKQorICAgICAgICBkZXZudWxsID0gc3VicHJvY2Vzcy5ERVZOVUxMCiAgICAgICAgICMgaWYgcG9zc2libGUsIHB1dCBicm93c2VyIGluIHNlcGFyYXRlIHByb2Nlc3MgZ3JvdXAsIHNvCiAgICAgICAgICMga2V5Ym9hcmQgaW50ZXJydXB0cyBkb24ndCBhZmZlY3QgYnJvd3NlciBhcyB3ZWxsIGFzIFB5dGhvbgogICAgICAgICBzZXRzaWQgPSBnZXRhdHRyKG9zLCAnc2V0c2lkJywgTm9uZSkKQEAgLTQ0Myw2ICs0NTIsMTQgQEAKIAogZGVmIHJlZ2lzdGVyX1hfYnJvd3NlcnMoKToKIAorICAgICMgdXNlIHhkZy1vcGVuIGlmIGFyb3VuZAorICAgIGlmIF9pc2NvbW1hbmQoInhkZy1vcGVuIik6CisgICAgICAgIHJlZ2lzdGVyKCJ4ZGctb3BlbiIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJ4ZGctb3BlbiIpKQorCisgICAgIyBUaGUgZGVmYXVsdCBHTk9NRTMgYnJvd3NlcgorICAgIGlmICJHTk9NRV9ERVNLVE9QX1NFU1NJT05fSUQiIGluIG9zLmVudmlyb24gYW5kIF9pc2NvbW1hbmQoImd2ZnMtb3BlbiIpOgorICAgICAgICByZWdpc3RlcigiZ3Zmcy1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoImd2ZnMtb3BlbiIpKQorCiAgICAgIyBUaGUgZGVmYXVsdCBHTk9NRSBicm93c2VyCiAgICAgaWYgIkdOT01FX0RFU0tUT1BfU0VTU0lPTl9JRCIgaW4gb3MuZW52aXJvbiBhbmQgX2lzY29tbWFuZCgiZ25vbWUtb3BlbiIpOgogICAgICAgICByZWdpc3RlcigiZ25vbWUtb3BlbiIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJnbm9tZS1vcGVuIikpCkBAIC00NzMsNiArNDkwLDExIEBACiAgICAgaWYgX2lzY29tbWFuZCgic2tpcHN0b25lIik6CiAgICAgICAgIHJlZ2lzdGVyKCJza2lwc3RvbmUiLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3Nlcigic2tpcHN0b25lIikpCiAKKyAgICAjIEdvb2dsZSBDaHJvbWUvQ2hyb21pdW0gYnJvd3NlcnMKKyAgICBmb3IgYnJvd3NlciBpbiAoImdvb2dsZS1jaHJvbWUiLCAiY2hyb21lIiwgImNocm9taXVtIiwgImNocm9taXVtLWJyb3dzZXIiKToKKyAgICAgICAgaWYgX2lzY29tbWFuZChicm93c2VyKToKKyAgICAgICAgICAgIHJlZ2lzdGVyKGJyb3dzZXIsIE5vbmUsIENocm9tZShicm93c2VyKSkKKwogICAgICMgT3BlcmEsIHF1aXRlIHBvcHVsYXIKICAgICBpZiBfaXNjb21tYW5kKCJvcGVyYSIpOgogICAgICAgICByZWdpc3Rlcigib3BlcmEiLCBOb25lLCBPcGVyYSgib3BlcmEiKSkKZGlmZiAtLWdpdCBhL0xpYi93c2dpcmVmLmVnZy1pbmZvIGIvTGliL3dzZ2lyZWYuZWdnLWluZm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwYjc4OTMuLjAwMDAwMDAKLS0tIGEvTGliL3dzZ2lyZWYuZWdnLWluZm8KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLU1ldGFkYXRhLVZlcnNpb246IDEuMAotTmFtZTogd3NnaXJlZgotVmVyc2lvbjogMC4xLjIKLVN1bW1hcnk6IFdTR0kgKFBFUCAzMzMpIFJlZmVyZW5jZSBMaWJyYXJ5Ci1BdXRob3I6IFBoaWxsaXAgSi4gRWJ5Ci1BdXRob3ItZW1haWw6IHdlYi1zaWdAcHl0aG9uLm9yZwotTGljZW5zZTogUFNGIG9yIFpQTAotUGxhdGZvcm06IFVOS05PV04KZGlmZiAtLWdpdCBhL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CmluZGV4IGFmODJmOTUuLmE2MDE1ZmIgMTAwNjQ0Ci0tLSBhL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKKysrIGIvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQpAQCAtMTQsMTMgKzE0LDE0IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdXJsbGliLnBhcnNlCiBmcm9tIHdzZ2lyZWYuaGFuZGxlcnMgaW1wb3J0IFNpbXBsZUhhbmRsZXIKK2Zyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl9pbXBsZW1lbnRhdGlvbgogCiBfX3ZlcnNpb25fXyA9ICIwLjIiCiBfX2FsbF9fID0gWydXU0dJU2VydmVyJywgJ1dTR0lSZXF1ZXN0SGFuZGxlcicsICdkZW1vX2FwcCcsICdtYWtlX3NlcnZlciddCiAKIAogc2VydmVyX3ZlcnNpb24gPSAiV1NHSVNlcnZlci8iICsgX192ZXJzaW9uX18KLXN5c192ZXJzaW9uID0gIlB5dGhvbi8iICsgc3lzLnZlcnNpb24uc3BsaXQoKVswXQorc3lzX3ZlcnNpb24gPSBweXRob25faW1wbGVtZW50YXRpb24oKSArICIvIiArIHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KIHNvZnR3YXJlX3ZlcnNpb24gPSBzZXJ2ZXJfdmVyc2lvbiArICcgJyArIHN5c192ZXJzaW9uCiAKIApkaWZmIC0tZ2l0IGEvTGliL3hkcmxpYi5weSBiL0xpYi94ZHJsaWIucHkKaW5kZXggNGU0ODY3Ny4uODZlNjI0ZiAxMDA2NDQKLS0tIGEvTGliL3hkcmxpYi5weQorKysgYi9MaWIveGRybGliLnB5CkBAIC0xNDEsMTEgKzE0MSw3IEBACiAgICAgICAgIGRhdGEgPSBzZWxmLl9fYnVmW2k6al0KICAgICAgICAgaWYgbGVuKGRhdGEpIDwgNDoKICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCi0gICAgICAgIHggPSBzdHJ1Y3QudW5wYWNrKCc+TCcsIGRhdGEpWzBdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbnQoeCkKLSAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4geAorICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjaygnPkwnLCBkYXRhKVswXQogCiAgICAgZGVmIHVucGFja19pbnQoc2VsZik6CiAgICAgICAgIGkgPSBzZWxmLl9fcG9zCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9fX2luaXRfXy5weSBiL0xpYi94bWwvZG9tL19faW5pdF9fLnB5CmluZGV4IDQ0MDFiZGYuLjk3Y2Y5YTYgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL19faW5pdF9fLnB5CisrKyBiL0xpYi94bWwvZG9tL19faW5pdF9fLnB5CkBAIC0xNyw2ICsxNyw3IEBACiAKIGNsYXNzIE5vZGU6CiAgICAgIiIiQ2xhc3MgZ2l2aW5nIHRoZSBOb2RlVHlwZSBjb25zdGFudHMuIiIiCisgICAgX19zbG90c19fID0gKCkKIAogICAgICMgRE9NIGltcGxlbWVudGF0aW9ucyBtYXkgdXNlIHRoaXMgYXMgYSBiYXNlIGNsYXNzIGZvciB0aGVpciBvd24KICAgICAjIE5vZGUgaW1wbGVtZW50YXRpb25zLiAgSWYgdGhleSBkb24ndCwgdGhlIGNvbnN0YW50cyBkZWZpbmVkIGhlcmUKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL2RvbXJlZy5weSBiL0xpYi94bWwvZG9tL2RvbXJlZy5weQppbmRleCBjYjM1YmIwLi44YzNkOTAxIDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9kb21yZWcucHkKKysrIGIvTGliL3htbC9kb20vZG9tcmVnLnB5CkBAIC0yLDggKzIsNiBAQAogZGlyZWN0bHkuIEluc3RlYWQsIHRoZSBmdW5jdGlvbnMgZ2V0RE9NSW1wbGVtZW50YXRpb24gYW5kCiByZWdpc3RlckRPTUltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBpbXBvcnRlZCBmcm9tIHhtbC5kb20uIiIiCiAKLWZyb20geG1sLmRvbS5taW5pY29tcGF0IGltcG9ydCAqICAjIGlzaW5zdGFuY2UsIFN0cmluZ1R5cGVzCi0KICMgVGhpcyBpcyBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpbXBsZW1lbnRhdGlvbnMuICBXZWxsLWtub3duIG5hbWVzCiAjIHNob3VsZCBiZSBwdWJsaXNoZWQgYnkgcG9zdGluZyB0byB4bWwtc2lnQHB5dGhvbi5vcmcsIGFuZCBhcmUKICMgc3Vic2VxdWVudGx5IHJlY29yZGVkIGluIHRoaXMgZmlsZS4KZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weSBiL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weQppbmRleCBhOThmZTAzLi5mMDc0YWI5IDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkKKysrIGIvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5CkBAIC0zMyw4ICszMyw2IEBACiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgX2FwcGVuZF9jaGlsZCwgX3NldF9hdHRyaWJ1dGVfbm9kZQogZnJvbSB4bWwuZG9tLk5vZGVGaWx0ZXIgaW1wb3J0IE5vZGVGaWx0ZXIKIAotZnJvbSB4bWwuZG9tLm1pbmljb21wYXQgaW1wb3J0ICoKLQogVEVYVF9OT0RFID0gTm9kZS5URVhUX05PREUKIENEQVRBX1NFQ1RJT05fTk9ERSA9IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFCiBET0NVTUVOVF9OT0RFID0gTm9kZS5ET0NVTUVOVF9OT0RFCkBAIC0yODMsMjcgKzI4MSwyMyBAQAogICAgICAgICBlbGlmIGNoaWxkTm9kZXMgYW5kIGNoaWxkTm9kZXNbLTFdLm5vZGVUeXBlID09IFRFWFRfTk9ERToKICAgICAgICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzWy0xXQogICAgICAgICAgICAgdmFsdWUgPSBub2RlLmRhdGEgKyBkYXRhCi0gICAgICAgICAgICBkID0gbm9kZS5fX2RpY3RfXwotICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQorICAgICAgICAgICAgbm9kZS5kYXRhID0gdmFsdWUKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbm9kZSA9IG1pbmlkb20uVGV4dCgpCi0gICAgICAgICAgICBkID0gbm9kZS5fX2RpY3RfXwotICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSBkYXRhCi0gICAgICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50CisgICAgICAgICAgICBub2RlLmRhdGEgPSBkYXRhCisgICAgICAgICAgICBub2RlLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgIF9hcHBlbmRfY2hpbGQoc2VsZi5jdXJOb2RlLCBub2RlKQogCiAgICAgZGVmIGNoYXJhY3Rlcl9kYXRhX2hhbmRsZXIoc2VsZiwgZGF0YSk6CiAgICAgICAgIGNoaWxkTm9kZXMgPSBzZWxmLmN1ck5vZGUuY2hpbGROb2RlcwogICAgICAgICBpZiBjaGlsZE5vZGVzIGFuZCBjaGlsZE5vZGVzWy0xXS5ub2RlVHlwZSA9PSBURVhUX05PREU6CiAgICAgICAgICAgICBub2RlID0gY2hpbGROb2Rlc1stMV0KLSAgICAgICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IG5vZGUuZGF0YSArIGRhdGEKKyAgICAgICAgICAgIG5vZGUuZGF0YSA9IG5vZGUuZGF0YSArIGRhdGEKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBub2RlID0gbWluaWRvbS5UZXh0KCkKLSAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSBub2RlLmRhdGEgKyBkYXRhCi0gICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgbm9kZS5kYXRhID0gbm9kZS5kYXRhICsgZGF0YQorICAgICAgICBub2RlLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgIF9hcHBlbmRfY2hpbGQoc2VsZi5jdXJOb2RlLCBub2RlKQogCiAgICAgZGVmIGVudGl0eV9kZWNsX2hhbmRsZXIoc2VsZiwgZW50aXR5TmFtZSwgaXNfcGFyYW1ldGVyX2VudGl0eSwgdmFsdWUsCkBAIC0zNjMsMTEgKzM1Nyw4IEBACiAgICAgICAgICAgICAgICAgYSA9IG1pbmlkb20uQXR0cihhdHRyaWJ1dGVzW2ldLCBFTVBUWV9OQU1FU1BBQ0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBFTVBUWV9QUkVGSVgpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzW2krMV0KLSAgICAgICAgICAgICAgICBkID0gYS5jaGlsZE5vZGVzWzBdLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGQgPSBhLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsndmFsdWUnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50CisgICAgICAgICAgICAgICAgYS52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgYS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgICAgICAgICAgIF9zZXRfYXR0cmlidXRlX25vZGUobm9kZSwgYSkKIAogICAgICAgICBpZiBub2RlIGlzIG5vdCBzZWxmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDoKQEAgLTc2MSwxNSArNzUyLDEzIEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgYSA9IG1pbmlkb20uQXR0cigieG1sbnMiLCBYTUxOU19OQU1FU1BBQ0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zIiwgRU1QVFlfUFJFRklYKQotICAgICAgICAgICAgICAgIGQgPSBhLmNoaWxkTm9kZXNbMF0uX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHVyaQotICAgICAgICAgICAgICAgIGQgPSBhLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsndmFsdWUnXSA9IGRbJ25vZGVWYWx1ZSddID0gdXJpCi0gICAgICAgICAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICAgICAgICAgIGEudmFsdWUgPSB1cmkKKyAgICAgICAgICAgICAgICBhLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgICAgICAgICAgX3NldF9hdHRyaWJ1dGVfbm9kZShub2RlLCBhKQogICAgICAgICAgICAgZGVsIHNlbGYuX25zX29yZGVyZWRfcHJlZml4ZXNbOl0KIAogICAgICAgICBpZiBhdHRyaWJ1dGVzOgorICAgICAgICAgICAgbm9kZS5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICAgICAgX2F0dHJzID0gbm9kZS5fYXR0cnMKICAgICAgICAgICAgIF9hdHRyc05TID0gbm9kZS5fYXR0cnNOUwogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGF0dHJpYnV0ZXMpLCAyKToKQEAgLTc4NSwxMiArNzc0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmFtZSwgRU1QVFlfUFJFRklYKQogICAgICAgICAgICAgICAgICAgICBfYXR0cnNbYW5hbWVdID0gYQogICAgICAgICAgICAgICAgICAgICBfYXR0cnNOU1soRU1QVFlfTkFNRVNQQUNFLCBhbmFtZSldID0gYQotICAgICAgICAgICAgICAgIGQgPSBhLmNoaWxkTm9kZXNbMF0uX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZCA9IGEuX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50Ci0gICAgICAgICAgICAgICAgZFsndmFsdWUnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgICAgICAgICBkWydvd25lckVsZW1lbnQnXSA9IG5vZGUKKyAgICAgICAgICAgICAgICBhLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CisgICAgICAgICAgICAgICAgYS52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgYS5vd25lckVsZW1lbnQgPSBub2RlCiAKICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICMgVGhpcyBvbmx5IGFkZHMgc29tZSBhc3NlcnRzIHRvIHRoZSBvcmlnaW5hbApkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vbWluaWRvbS5weSBiL0xpYi94bWwvZG9tL21pbmlkb20ucHkKaW5kZXggZjIzYWQwNS4uMjhlNTAzMCAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vbWluaWRvbS5weQorKysgYi9MaWIveG1sL2RvbS9taW5pZG9tLnB5CkBAIC0xNCw3ICsxNCw2IEBACiAgKiBTQVggMiBuYW1lc3BhY2VzCiAiIiIKIAotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGlvCiBpbXBvcnQgeG1sLmRvbQogCkBAIC00NywyNSArNDYsMjUgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudG9wcmV0dHl4bWwoIiIsICIiLCBlbmNvZGluZykKIAogICAgIGRlZiB0b3ByZXR0eXhtbChzZWxmLCBpbmRlbnQ9Ilx0IiwgbmV3bD0iXG4iLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgIyBpbmRlbnQgPSB0aGUgaW5kZW50YXRpb24gc3RyaW5nIHRvIHByZXBlbmQsIHBlciBsZXZlbAotICAgICAgICAjIG5ld2wgPSB0aGUgbmV3bGluZSBzdHJpbmcgdG8gYXBwZW5kCi0gICAgICAgIHVzZV9lbmNvZGluZyA9ICJ1dGYtOCIgaWYgZW5jb2RpbmcgaXMgTm9uZSBlbHNlIGVuY29kaW5nCi0gICAgICAgIHdyaXRlciA9IGNvZGVjcy5nZXR3cml0ZXIodXNlX2VuY29kaW5nKShpby5CeXRlc0lPKCkpCisgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CisgICAgICAgICAgICB3cml0ZXIgPSBpby5TdHJpbmdJTygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3cml0ZXIgPSBpby5UZXh0SU9XcmFwcGVyKGlvLkJ5dGVzSU8oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0ieG1sY2hhcnJlZnJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPSdcbicpCiAgICAgICAgIGlmIHNlbGYubm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9OT0RFOgogICAgICAgICAgICAgIyBDYW4gcGFzcyBlbmNvZGluZyBvbmx5IHRvIGRvY3VtZW50LCB0byBwdXQgaXQgaW50byBYTUwgaGVhZGVyCiAgICAgICAgICAgICBzZWxmLndyaXRleG1sKHdyaXRlciwgIiIsIGluZGVudCwgbmV3bCwgZW5jb2RpbmcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLndyaXRleG1sKHdyaXRlciwgIiIsIGluZGVudCwgbmV3bCkKICAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiB3cml0ZXIuc3RyZWFtLmdldHZhbHVlKCkuZGVjb2RlKHVzZV9lbmNvZGluZykKKyAgICAgICAgICAgIHJldHVybiB3cml0ZXIuZ2V0dmFsdWUoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5zdHJlYW0uZ2V0dmFsdWUoKQorICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5kZXRhY2goKS5nZXR2YWx1ZSgpCiAKICAgICBkZWYgaGFzQ2hpbGROb2RlcyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jaGlsZE5vZGVzOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gYm9vbChzZWxmLmNoaWxkTm9kZXMpCiAKICAgICBkZWYgX2dldF9jaGlsZE5vZGVzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5jaGlsZE5vZGVzCkBAIC0yODYsMTAgKzI4NSwxMCBAQAogICAgIGNoaWxkTm9kZXMgPSBzZWxmLmNoaWxkTm9kZXMKICAgICBpZiBjaGlsZE5vZGVzOgogICAgICAgICBsYXN0ID0gY2hpbGROb2Rlc1stMV0KLSAgICAgICAgbm9kZS5fX2RpY3RfX1sicHJldmlvdXNTaWJsaW5nIl0gPSBsYXN0Ci0gICAgICAgIGxhc3QuX19kaWN0X19bIm5leHRTaWJsaW5nIl0gPSBub2RlCisgICAgICAgIG5vZGUucHJldmlvdXNTaWJsaW5nID0gbGFzdAorICAgICAgICBsYXN0Lm5leHRTaWJsaW5nID0gbm9kZQogICAgIGNoaWxkTm9kZXMuYXBwZW5kKG5vZGUpCi0gICAgbm9kZS5fX2RpY3RfX1sicGFyZW50Tm9kZSJdID0gc2VsZgorICAgIG5vZGUucGFyZW50Tm9kZSA9IHNlbGYKIAogZGVmIF9pbl9kb2N1bWVudChub2RlKToKICAgICAjIHJldHVybiBUcnVlIGlmZiBub2RlIGlzIHBhcnQgb2YgYSBkb2N1bWVudCB0cmVlCkBAIC0zNDIsOSArMzQxLDEwIEBACiAKIAogY2xhc3MgQXR0cihOb2RlKToKKyAgICBfX3Nsb3RzX189KCdfbmFtZScsICdfdmFsdWUnLCAnbmFtZXNwYWNlVVJJJywKKyAgICAgICAgICAgICAgICdfcHJlZml4JywgJ2NoaWxkTm9kZXMnLCAnX2xvY2FsTmFtZScsICdvd25lckRvY3VtZW50JywgJ293bmVyRWxlbWVudCcpCiAgICAgbm9kZVR5cGUgPSBOb2RlLkFUVFJJQlVURV9OT0RFCiAgICAgYXR0cmlidXRlcyA9IE5vbmUKLSAgICBvd25lckVsZW1lbnQgPSBOb25lCiAgICAgc3BlY2lmaWVkID0gRmFsc2UKICAgICBfaXNfaWQgPSBGYWxzZQogCkBAIC0zNTIsMTIgKzM1MiwxMSBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHFOYW1lLCBuYW1lc3BhY2VVUkk9RU1QVFlfTkFNRVNQQUNFLCBsb2NhbE5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICAgcHJlZml4PU5vbmUpOgotICAgICAgICAjIHNraXAgc2V0YXR0ciBmb3IgcGVyZm9ybWFuY2UKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsibm9kZU5hbWUiXSA9IGRbIm5hbWUiXSA9IHFOYW1lCi0gICAgICAgIGRbIm5hbWVzcGFjZVVSSSJdID0gbmFtZXNwYWNlVVJJCi0gICAgICAgIGRbInByZWZpeCJdID0gcHJlZml4Ci0gICAgICAgIGRbJ2NoaWxkTm9kZXMnXSA9IE5vZGVMaXN0KCkKKyAgICAgICAgc2VsZi5vd25lckVsZW1lbnQgPSBOb25lCisgICAgICAgIHNlbGYuX25hbWUgPSBxTmFtZQorICAgICAgICBzZWxmLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSQorICAgICAgICBzZWxmLl9wcmVmaXggPSBwcmVmaXgKKyAgICAgICAgc2VsZi5jaGlsZE5vZGVzID0gTm9kZUxpc3QoKQogCiAgICAgICAgICMgQWRkIHRoZSBzaW5nbGUgY2hpbGQgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mIHRoZSBhdHRyCiAgICAgICAgIHNlbGYuY2hpbGROb2Rlcy5hcHBlbmQoVGV4dCgpKQpAQCAtMzY1LDkgKzM2NCwxMCBAQAogICAgICAgICAjIG5vZGVWYWx1ZSBhbmQgdmFsdWUgYXJlIHNldCBlbHNld2hlcmUKIAogICAgIGRlZiBfZ2V0X2xvY2FsTmFtZShzZWxmKToKLSAgICAgICAgaWYgJ2xvY2FsTmFtZScgaW4gc2VsZi5fX2RpY3RfXzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fWydsb2NhbE5hbWUnXQotICAgICAgICByZXR1cm4gc2VsZi5ub2RlTmFtZS5zcGxpdCgiOiIsIDEpWy0xXQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9jYWxOYW1lCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5vZGVOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCiAKICAgICBkZWYgX2dldF9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCkBAIC0zNzUsMjAgKzM3NSwzMCBAQAogICAgIGRlZiBfZ2V0X3NwZWNpZmllZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuc3BlY2lmaWVkCiAKLSAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBpZiBuYW1lIGluICgidmFsdWUiLCAibm9kZVZhbHVlIik6Ci0gICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQotICAgICAgICAgICAgZDIgPSBzZWxmLmNoaWxkTm9kZXNbMF0uX19kaWN0X18KLSAgICAgICAgICAgIGQyWyJkYXRhIl0gPSBkMlsibm9kZVZhbHVlIl0gPSB2YWx1ZQotICAgICAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBlbGlmIG5hbWUgaW4gKCJuYW1lIiwgIm5vZGVOYW1lIik6Ci0gICAgICAgICAgICBkWyJuYW1lIl0gPSBkWyJub2RlTmFtZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRbbmFtZV0gPSB2YWx1ZQorICAgIGRlZiBfZ2V0X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgX3NldF9uYW1lKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IHZhbHVlCisgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQorCisgICAgbm9kZU5hbWUgPSBuYW1lID0gcHJvcGVydHkoX2dldF9uYW1lLCBfc2V0X25hbWUpCisKKyAgICBkZWYgX2dldF92YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlCisKKyAgICBkZWYgX3NldF92YWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLmRhdGEgPSB2YWx1ZQorICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKKyAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLmRhdGEgPSB2YWx1ZQorCisgICAgbm9kZVZhbHVlID0gdmFsdWUgPSBwcm9wZXJ0eShfZ2V0X3ZhbHVlLCBfc2V0X3ZhbHVlKQorCisgICAgZGVmIF9nZXRfcHJlZml4KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4CiAKICAgICBkZWYgX3NldF9wcmVmaXgoc2VsZiwgcHJlZml4KToKICAgICAgICAgbnN1cmkgPSBzZWxmLm5hbWVzcGFjZVVSSQpAQCAtMzk2LDIyICs0MDYsMTYgQEAKICAgICAgICAgICAgIGlmIG5zdXJpIGFuZCBuc3VyaSAhPSBYTUxOU19OQU1FU1BBQ0U6CiAgICAgICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5OYW1lc3BhY2VFcnIoCiAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHVzZSBvZiAneG1sbnMnIHByZWZpeCBmb3IgdGhlIHdyb25nIG5hbWVzcGFjZSIpCi0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ3ByZWZpeCddID0gcHJlZml4CisgICAgICAgIHNlbGYuX3ByZWZpeCA9IHByZWZpeAogICAgICAgICBpZiBwcmVmaXggaXMgTm9uZToKICAgICAgICAgICAgIG5ld05hbWUgPSBzZWxmLmxvY2FsTmFtZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbmV3TmFtZSA9ICIlczolcyIgJSAocHJlZml4LCBzZWxmLmxvY2FsTmFtZSkKICAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQ6CiAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCi0gICAgICAgIGRbJ25vZGVOYW1lJ10gPSBkWyduYW1lJ10gPSBuZXdOYW1lCisgICAgICAgIHNlbGYubmFtZSA9IG5ld05hbWUKIAotICAgIGRlZiBfc2V0X3ZhbHVlKHNlbGYsIHZhbHVlKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsndmFsdWUnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQ6Ci0gICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCi0gICAgICAgIHNlbGYuY2hpbGROb2Rlc1swXS5kYXRhID0gdmFsdWUKKyAgICBwcmVmaXggPSBwcm9wZXJ0eShfZ2V0X3ByZWZpeCwgX3NldF9wcmVmaXgpCiAKICAgICBkZWYgdW5saW5rKHNlbGYpOgogICAgICAgICAjIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgY2FsbCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbgpAQCAtNTg2LDggKzU5MCw4IEBACiAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5fb3duZXJFbGVtZW50KQogICAgICAgICAgICAgZGVsIHNlbGYuX2F0dHJzW24ubm9kZU5hbWVdCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNOU1sobi5uYW1lc3BhY2VVUkksIG4ubG9jYWxOYW1lKV0KLSAgICAgICAgICAgIGlmICdvd25lckVsZW1lbnQnIGluIG4uX19kaWN0X186Ci0gICAgICAgICAgICAgICAgbi5fX2RpY3RfX1snb3duZXJFbGVtZW50J10gPSBOb25lCisgICAgICAgICAgICBpZiBoYXNhdHRyKG4sICdvd25lckVsZW1lbnQnKToKKyAgICAgICAgICAgICAgICBuLm93bmVyRWxlbWVudCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKQEAgLTU5OCw4ICs2MDIsOCBAQAogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYuX293bmVyRWxlbWVudCkKICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc05TWyhuLm5hbWVzcGFjZVVSSSwgbi5sb2NhbE5hbWUpXQogICAgICAgICAgICAgZGVsIHNlbGYuX2F0dHJzW24ubm9kZU5hbWVdCi0gICAgICAgICAgICBpZiAnb3duZXJFbGVtZW50JyBpbiBuLl9fZGljdF9fOgotICAgICAgICAgICAgICAgIG4uX19kaWN0X19bJ293bmVyRWxlbWVudCddID0gTm9uZQorICAgICAgICAgICAgaWYgaGFzYXR0cihuLCAnb3duZXJFbGVtZW50Jyk6CisgICAgICAgICAgICAgICAgbi5vd25lckVsZW1lbnQgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCkBAIC02NTksNiArNjYzLDkgQEAKIF9ub190eXBlID0gVHlwZUluZm8oTm9uZSwgTm9uZSkKIAogY2xhc3MgRWxlbWVudChOb2RlKToKKyAgICBfX3Nsb3RzX189KCdvd25lckRvY3VtZW50JywgJ3BhcmVudE5vZGUnLCAndGFnTmFtZScsICdub2RlTmFtZScsICdwcmVmaXgnLAorICAgICAgICAgICAgICAgJ25hbWVzcGFjZVVSSScsICdfbG9jYWxOYW1lJywgJ2NoaWxkTm9kZXMnLCAnX2F0dHJzJywgJ19hdHRyc05TJywKKyAgICAgICAgICAgICAgICduZXh0U2libGluZycsICdwcmV2aW91c1NpYmxpbmcnKQogICAgIG5vZGVUeXBlID0gTm9kZS5FTEVNRU5UX05PREUKICAgICBub2RlVmFsdWUgPSBOb25lCiAgICAgc2NoZW1hVHlwZSA9IF9ub190eXBlCkBAIC02NzQsNDEgKzY4MSw1NyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhZ05hbWUsIG5hbWVzcGFjZVVSST1FTVBUWV9OQU1FU1BBQ0UsIHByZWZpeD1Ob25lLAogICAgICAgICAgICAgICAgICBsb2NhbE5hbWU9Tm9uZSk6CisgICAgICAgIHNlbGYucGFyZW50Tm9kZSA9IE5vbmUKICAgICAgICAgc2VsZi50YWdOYW1lID0gc2VsZi5ub2RlTmFtZSA9IHRhZ05hbWUKICAgICAgICAgc2VsZi5wcmVmaXggPSBwcmVmaXgKICAgICAgICAgc2VsZi5uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkkKICAgICAgICAgc2VsZi5jaGlsZE5vZGVzID0gTm9kZUxpc3QoKQorICAgICAgICBzZWxmLm5leHRTaWJsaW5nID0gc2VsZi5wcmV2aW91c1NpYmxpbmcgPSBOb25lCiAKLSAgICAgICAgc2VsZi5fYXR0cnMgPSB7fSAgICMgYXR0cmlidXRlcyBhcmUgZG91YmxlLWluZGV4ZWQ6Ci0gICAgICAgIHNlbGYuX2F0dHJzTlMgPSB7fSAjICAgIHRhZ05hbWUgLT4gQXR0cmlidXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIFVSSSxsb2NhbE5hbWUgLT4gQXR0cmlidXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBmdXR1cmU6IGNvbnNpZGVyIGxhenkgZ2VuZXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiBhdHRyaWJ1dGUgb2JqZWN0cyB0aGlzIGlzIHRvbyB0cmlja3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIG5vdyBiZWNhdXNlIG9mIGhlYWRhY2hlcyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5hbWVzcGFjZXMuCisgICAgICAgICMgQXR0cmlidXRlIGRpY3Rpb25hcmllcyBhcmUgbGF6aWx5IGNyZWF0ZWQKKyAgICAgICAgIyBhdHRyaWJ1dGVzIGFyZSBkb3VibGUtaW5kZXhlZDoKKyAgICAgICAgIyAgICB0YWdOYW1lIC0+IEF0dHJpYnV0ZQorICAgICAgICAjICAgIFVSSSxsb2NhbE5hbWUgLT4gQXR0cmlidXRlCisgICAgICAgICMgaW4gdGhlIGZ1dHVyZTogY29uc2lkZXIgbGF6eSBnZW5lcmF0aW9uCisgICAgICAgICMgb2YgYXR0cmlidXRlIG9iamVjdHMgdGhpcyBpcyB0b28gdHJpY2t5CisgICAgICAgICMgZm9yIG5vdyBiZWNhdXNlIG9mIGhlYWRhY2hlcyB3aXRoCisgICAgICAgICMgbmFtZXNwYWNlcy4KKyAgICAgICAgc2VsZi5fYXR0cnMgPSBOb25lCisgICAgICAgIHNlbGYuX2F0dHJzTlMgPSBOb25lCisKKyAgICBkZWYgX2Vuc3VyZV9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9hdHRycyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fYXR0cnMgPSB7fQorICAgICAgICAgICAgc2VsZi5fYXR0cnNOUyA9IHt9CiAKICAgICBkZWYgX2dldF9sb2NhbE5hbWUoc2VsZik6Ci0gICAgICAgIGlmICdsb2NhbE5hbWUnIGluIHNlbGYuX19kaWN0X186Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1snbG9jYWxOYW1lJ10KLSAgICAgICAgcmV0dXJuIHNlbGYudGFnTmFtZS5zcGxpdCgiOiIsIDEpWy0xXQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9jYWxOYW1lCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRhZ05hbWUuc3BsaXQoIjoiLCAxKVstMV0KIAogICAgIGRlZiBfZ2V0X3RhZ05hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnRhZ05hbWUKIAogICAgIGRlZiB1bmxpbmsoc2VsZik6Ci0gICAgICAgIGZvciBhdHRyIGluIGxpc3Qoc2VsZi5fYXR0cnMudmFsdWVzKCkpOgotICAgICAgICAgICAgYXR0ci51bmxpbmsoKQorICAgICAgICBpZiBzZWxmLl9hdHRycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGxpc3Qoc2VsZi5fYXR0cnMudmFsdWVzKCkpOgorICAgICAgICAgICAgICAgIGF0dHIudW5saW5rKCkKICAgICAgICAgc2VsZi5fYXR0cnMgPSBOb25lCiAgICAgICAgIHNlbGYuX2F0dHJzTlMgPSBOb25lCiAgICAgICAgIE5vZGUudW5saW5rKHNlbGYpCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlKHNlbGYsIGF0dG5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRycyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc1thdHRuYW1lXS52YWx1ZQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gIiIKIAogICAgIGRlZiBnZXRBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNOU1sobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpXS52YWx1ZQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC03MTgsMTQgKzc0MSwxMSBAQAogICAgICAgICBhdHRyID0gc2VsZi5nZXRBdHRyaWJ1dGVOb2RlKGF0dG5hbWUpCiAgICAgICAgIGlmIGF0dHIgaXMgTm9uZToKICAgICAgICAgICAgIGF0dHIgPSBBdHRyKGF0dG5hbWUpCi0gICAgICAgICAgICAjIGZvciBwZXJmb3JtYW5jZQotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBkWyJvd25lckRvY3VtZW50Il0gPSBzZWxmLm93bmVyRG9jdW1lbnQKKyAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZSAjIGFsc28gc2V0cyBub2RlVmFsdWUKKyAgICAgICAgICAgIGF0dHIub3duZXJEb2N1bWVudCA9IHNlbGYub3duZXJEb2N1bWVudAogICAgICAgICAgICAgc2VsZi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpCiAgICAgICAgIGVsaWYgdmFsdWUgIT0gYXR0ci52YWx1ZToKLSAgICAgICAgICAgIGQgPSBhdHRyLl9fZGljdF9fCi0gICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQorICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlCiAgICAgICAgICAgICBpZiBhdHRyLmlzSWQ6CiAgICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCiAKQEAgLTczMywzMyArNzUzLDMzIEBACiAgICAgICAgIHByZWZpeCwgbG9jYWxuYW1lID0gX25zc3BsaXQocXVhbGlmaWVkTmFtZSkKICAgICAgICAgYXR0ciA9IHNlbGYuZ2V0QXR0cmlidXRlTm9kZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxuYW1lKQogICAgICAgICBpZiBhdHRyIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIGZvciBwZXJmb3JtYW5jZQogICAgICAgICAgICAgYXR0ciA9IEF0dHIocXVhbGlmaWVkTmFtZSwgbmFtZXNwYWNlVVJJLCBsb2NhbG5hbWUsIHByZWZpeCkKLSAgICAgICAgICAgIGQgPSBhdHRyLl9fZGljdF9fCi0gICAgICAgICAgICBkWyJwcmVmaXgiXSA9IHByZWZpeAotICAgICAgICAgICAgZFsibm9kZU5hbWUiXSA9IHF1YWxpZmllZE5hbWUKLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBkWyJvd25lckRvY3VtZW50Il0gPSBzZWxmLm93bmVyRG9jdW1lbnQKKyAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgYXR0ci5vd25lckRvY3VtZW50ID0gc2VsZi5vd25lckRvY3VtZW50CiAgICAgICAgICAgICBzZWxmLnNldEF0dHJpYnV0ZU5vZGUoYXR0cikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGQgPSBhdHRyLl9fZGljdF9fCiAgICAgICAgICAgICBpZiB2YWx1ZSAhPSBhdHRyLnZhbHVlOgotICAgICAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlCiAgICAgICAgICAgICAgICAgaWYgYXR0ci5pc0lkOgogICAgICAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKICAgICAgICAgICAgIGlmIGF0dHIucHJlZml4ICE9IHByZWZpeDoKLSAgICAgICAgICAgICAgICBkWyJwcmVmaXgiXSA9IHByZWZpeAotICAgICAgICAgICAgICAgIGRbIm5vZGVOYW1lIl0gPSBxdWFsaWZpZWROYW1lCisgICAgICAgICAgICAgICAgYXR0ci5wcmVmaXggPSBwcmVmaXgKKyAgICAgICAgICAgICAgICBhdHRyLm5vZGVOYW1lID0gcXVhbGlmaWVkTmFtZQogCiAgICAgZGVmIGdldEF0dHJpYnV0ZU5vZGUoc2VsZiwgYXR0cm5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRycyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzLmdldChhdHRybmFtZSkKIAogICAgIGRlZiBnZXRBdHRyaWJ1dGVOb2RlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNOUy5nZXQoKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSkKIAogICAgIGRlZiBzZXRBdHRyaWJ1dGVOb2RlKHNlbGYsIGF0dHIpOgogICAgICAgICBpZiBhdHRyLm93bmVyRWxlbWVudCBub3QgaW4gKE5vbmUsIHNlbGYpOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5JbnVzZUF0dHJpYnV0ZUVycigiYXR0cmlidXRlIG5vZGUgYWxyZWFkeSBvd25lZCIpCisgICAgICAgIHNlbGYuX2Vuc3VyZV9hdHRyaWJ1dGVzKCkKICAgICAgICAgb2xkMSA9IHNlbGYuX2F0dHJzLmdldChhdHRyLm5hbWUsIE5vbmUpCiAgICAgICAgIGlmIG9sZDEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnJlbW92ZUF0dHJpYnV0ZU5vZGUob2xkMSkKQEAgLTc3OCw2ICs3OTgsOCBAQAogICAgIHNldEF0dHJpYnV0ZU5vZGVOUyA9IHNldEF0dHJpYnV0ZU5vZGUKIAogICAgIGRlZiByZW1vdmVBdHRyaWJ1dGUoc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBhdHRyID0gc2VsZi5fYXR0cnNbbmFtZV0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNzg1LDYgKzgwNyw4IEBACiAgICAgICAgIHNlbGYucmVtb3ZlQXR0cmlidXRlTm9kZShhdHRyKQogCiAgICAgZGVmIHJlbW92ZUF0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGF0dHIgPSBzZWxmLl9hdHRyc05TWyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSldCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTgwNyw5ICs4MzEsMTMgQEAKICAgICByZW1vdmVBdHRyaWJ1dGVOb2RlTlMgPSByZW1vdmVBdHRyaWJ1dGVOb2RlCiAKICAgICBkZWYgaGFzQXR0cmlidXRlKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRycyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBuYW1lIGluIHNlbGYuX2F0dHJzCiAKICAgICBkZWYgaGFzQXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIChuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkgaW4gc2VsZi5fYXR0cnNOUwogCiAgICAgZGVmIGdldEVsZW1lbnRzQnlUYWdOYW1lKHNlbGYsIG5hbWUpOgpAQCAtODUwLDYgKzg3OCw3IEBACiAgICAgICAgICAgICB3cml0ZXIud3JpdGUoIi8+JXMiJShuZXdsKSkKIAogICAgIGRlZiBfZ2V0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9hdHRyaWJ1dGVzKCkKICAgICAgICAgcmV0dXJuIE5hbWVkTm9kZU1hcChzZWxmLl9hdHRycywgc2VsZi5fYXR0cnNOUywgc2VsZikKIAogICAgIGRlZiBoYXNBdHRyaWJ1dGVzKHNlbGYpOgpAQCAtODc0LDcgKzkwMyw3IEBACiAgICAgICAgIGlmIF9nZXRfY29udGFpbmluZ19lbnRyZWYoc2VsZikgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycigpCiAgICAgICAgIGlmIG5vdCBpZEF0dHIuX2lzX2lkOgotICAgICAgICAgICAgaWRBdHRyLl9fZGljdF9fWydfaXNfaWQnXSA9IFRydWUKKyAgICAgICAgICAgIGlkQXR0ci5faXNfaWQgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9tYWdpY19pZF9ub2RlcyArPSAxCiAgICAgICAgICAgICBzZWxmLm93bmVyRG9jdW1lbnQuX21hZ2ljX2lkX2NvdW50ICs9IDEKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQpAQCAtODg3LDE5ICs5MTYsMjAgQEAKIAogZGVmIF9zZXRfYXR0cmlidXRlX25vZGUoZWxlbWVudCwgYXR0cik6CiAgICAgX2NsZWFyX2lkX2NhY2hlKGVsZW1lbnQpCisgICAgZWxlbWVudC5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgIGVsZW1lbnQuX2F0dHJzW2F0dHIubmFtZV0gPSBhdHRyCiAgICAgZWxlbWVudC5fYXR0cnNOU1soYXR0ci5uYW1lc3BhY2VVUkksIGF0dHIubG9jYWxOYW1lKV0gPSBhdHRyCiAKICAgICAjIFRoaXMgY3JlYXRlcyBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgYnV0IEVsZW1lbnQudW5saW5rKCkKICAgICAjIGJyZWFrcyB0aGUgY3ljbGUgc2luY2UgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIGF0dHJpYnV0ZQogICAgICMgZGljdGlvbmFyaWVzIGFyZSB0b3NzZWQuCi0gICAgYXR0ci5fX2RpY3RfX1snb3duZXJFbGVtZW50J10gPSBlbGVtZW50Ci0KKyAgICBhdHRyLm93bmVyRWxlbWVudCA9IGVsZW1lbnQKIAogY2xhc3MgQ2hpbGRsZXNzOgogICAgICIiIk1peGluIHRoYXQgbWFrZXMgY2hpbGRsZXNzLW5lc3MgZWFzeSB0byBpbXBsZW1lbnQgYW5kIGF2b2lkcwogICAgIHRoZSBjb21wbGV4aXR5IG9mIHRoZSBOb2RlIG1ldGhvZHMgdGhhdCBkZWFsIHdpdGggY2hpbGRyZW4uCiAgICAgIiIiCisgICAgX19zbG90c19fID0gKCkKIAogICAgIGF0dHJpYnV0ZXMgPSBOb25lCiAgICAgY2hpbGROb2RlcyA9IEVtcHR5Tm9kZUxpc3QoKQpAQCAtOTM4LDU0ICs5NjgsNDkgQEAKIAogY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uKENoaWxkbGVzcywgTm9kZSk6CiAgICAgbm9kZVR5cGUgPSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERQorICAgIF9fc2xvdHNfXyA9ICgndGFyZ2V0JywgJ2RhdGEnKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldCwgZGF0YSk6Ci0gICAgICAgIHNlbGYudGFyZ2V0ID0gc2VsZi5ub2RlTmFtZSA9IHRhcmdldAotICAgICAgICBzZWxmLmRhdGEgPSBzZWxmLm5vZGVWYWx1ZSA9IGRhdGEKKyAgICAgICAgc2VsZi50YXJnZXQgPSB0YXJnZXQKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQogCi0gICAgZGVmIF9nZXRfZGF0YShzZWxmKToKKyAgICAjIG5vZGVWYWx1ZSBpcyBhbiBhbGlhcyBmb3IgZGF0YQorICAgIGRlZiBfZ2V0X25vZGVWYWx1ZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQotICAgIGRlZiBfc2V0X2RhdGEoc2VsZiwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCisgICAgZGVmIF9zZXRfbm9kZVZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorICAgIG5vZGVWYWx1ZSA9IHByb3BlcnR5KF9nZXRfbm9kZVZhbHVlLCBfc2V0X25vZGVWYWx1ZSkKIAotICAgIGRlZiBfZ2V0X3RhcmdldChzZWxmKToKKyAgICAjIG5vZGVOYW1lIGlzIGFuIGFsaWFzIGZvciB0YXJnZXQKKyAgICBkZWYgX2dldF9ub2RlTmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0Ci0gICAgZGVmIF9zZXRfdGFyZ2V0KHNlbGYsIHZhbHVlKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsndGFyZ2V0J10gPSBkWydub2RlTmFtZSddID0gdmFsdWUKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgPT0gImRhdGEiIG9yIG5hbWUgPT0gIm5vZGVWYWx1ZSI6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fWydkYXRhJ10gPSBzZWxmLl9fZGljdF9fWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgIGVsaWYgbmFtZSA9PSAidGFyZ2V0IiBvciBuYW1lID09ICJub2RlTmFtZSI6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fWyd0YXJnZXQnXSA9IHNlbGYuX19kaWN0X19bJ25vZGVOYW1lJ10gPSB2YWx1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IHZhbHVlCisgICAgZGVmIF9zZXRfbm9kZU5hbWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnRhcmdldCA9IHZhbHVlCisgICAgbm9kZU5hbWUgPSBwcm9wZXJ0eShfZ2V0X25vZGVOYW1lLCBfc2V0X25vZGVOYW1lKQogCiAgICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIpOgogICAgICAgICB3cml0ZXIud3JpdGUoIiVzPD8lcyAlcz8+JXMiICUgKGluZGVudCxzZWxmLnRhcmdldCwgc2VsZi5kYXRhLCBuZXdsKSkKIAogCiBjbGFzcyBDaGFyYWN0ZXJEYXRhKENoaWxkbGVzcywgTm9kZSk6CisgICAgX19zbG90c19fPSgnX2RhdGEnLCAnb3duZXJEb2N1bWVudCcsJ3BhcmVudE5vZGUnLCAncHJldmlvdXNTaWJsaW5nJywgJ25leHRTaWJsaW5nJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5vd25lckRvY3VtZW50ID0gc2VsZi5wYXJlbnROb2RlID0gTm9uZQorICAgICAgICBzZWxmLnByZXZpb3VzU2libGluZyA9IHNlbGYubmV4dFNpYmxpbmcgPSBOb25lCisgICAgICAgIHNlbGYuX2RhdGEgPSAnJworICAgICAgICBOb2RlLl9faW5pdF9fKHNlbGYpCisKICAgICBkZWYgX2dldF9sZW5ndGgoc2VsZik6CiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5kYXRhKQogICAgIF9fbGVuX18gPSBfZ2V0X2xlbmd0aAogCiAgICAgZGVmIF9nZXRfZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X19bJ2RhdGEnXQorICAgICAgICByZXR1cm4gc2VsZi5fZGF0YQogICAgIGRlZiBfc2V0X2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gZGF0YQorICAgICAgICBzZWxmLl9kYXRhID0gZGF0YQogCi0gICAgX2dldF9ub2RlVmFsdWUgPSBfZ2V0X2RhdGEKLSAgICBfc2V0X25vZGVWYWx1ZSA9IF9zZXRfZGF0YQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgbmFtZSA9PSAiZGF0YSIgb3IgbmFtZSA9PSAibm9kZVZhbHVlIjoKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bJ2RhdGEnXSA9IHNlbGYuX19kaWN0X19bJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bbmFtZV0gPSB2YWx1ZQorICAgIGRhdGEgPSBub2RlVmFsdWUgPSBwcm9wZXJ0eShfZ2V0X2RhdGEsIF9zZXRfZGF0YSkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgZGF0YSA9IHNlbGYuZGF0YQpAQCAtMTA0MiwxMCArMTA2Nyw3IEBACiAKIAogY2xhc3MgVGV4dChDaGFyYWN0ZXJEYXRhKToKLSAgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgYW4gaW5zdGFuY2UgX19kaWN0X18gaWYgd2UgZG9uJ3QgYWxyZWFkeQotICAgICMgaGF2ZSBvbmUsIGF0IGxlYXN0IHdoZW4gdGhhdCdzIHBvc3NpYmxlOgotICAgICMgWFhYIHRoaXMgZG9lcyBub3Qgd29yaywgQ2hhcmFjdGVyRGF0YSBpcyBhbiBvbGQtc3R5bGUgY2xhc3MKLSAgICAjIF9fc2xvdHNfXyA9ICgpCisgICAgX19zbG90c19fID0gKCkKIAogICAgIG5vZGVUeXBlID0gTm9kZS5URVhUX05PREUKICAgICBub2RlTmFtZSA9ICIjdGV4dCIKQEAgLTExMTIsOSArMTEzNCw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGlmIGNvbnRlbnQ6Ci0gICAgICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICAgICAgZFsnZGF0YSddID0gY29udGVudAotICAgICAgICAgICAgZFsnbm9kZVZhbHVlJ10gPSBjb250ZW50CisgICAgICAgICAgICBzZWxmLmRhdGEgPSBjb250ZW50CiAgICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTExNjAsNyArMTE4MCw4IEBACiAgICAgbm9kZU5hbWUgPSAiI2NvbW1lbnQiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IHNlbGYubm9kZVZhbHVlID0gZGF0YQorICAgICAgICBDaGFyYWN0ZXJEYXRhLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX2RhdGEgPSBkYXRhCiAKICAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIik6CiAgICAgICAgIGlmICItLSIgaW4gc2VsZi5kYXRhOgpAQCAtMTE2OSwxMCArMTE5MCw3IEBACiAKIAogY2xhc3MgQ0RBVEFTZWN0aW9uKFRleHQpOgotICAgICMgTWFrZSBzdXJlIHdlIGRvbid0IGFkZCBhbiBpbnN0YW5jZSBfX2RpY3RfXyBpZiB3ZSBkb24ndCBhbHJlYWR5Ci0gICAgIyBoYXZlIG9uZSwgYXQgbGVhc3Qgd2hlbiB0aGF0J3MgcG9zc2libGU6Ci0gICAgIyBYWFggdGhpcyBkb2VzIG5vdCB3b3JrLCBUZXh0IGlzIGFuIG9sZC1zdHlsZSBjbGFzcwotICAgICMgX19zbG90c19fID0gKCkKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgbm9kZVR5cGUgPSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERQogICAgIG5vZGVOYW1lID0gIiNjZGF0YS1zZWN0aW9uIgpAQCAtMTI1Miw4ICsxMjcwLDcgQEAKIGNsYXNzIElkZW50aWZpZWQ6CiAgICAgIiIiTWl4LWluIGNsYXNzIHRoYXQgc3VwcG9ydHMgdGhlIHB1YmxpY0lkIGFuZCBzeXN0ZW1JZCBhdHRyaWJ1dGVzLiIiIgogCi0gICAgIyBYWFggdGhpcyBkb2VzIG5vdCB3b3JrLCB0aGlzIGlzIGFuIG9sZC1zdHlsZSBjbGFzcwotICAgICMgX19zbG90c19fID0gJ3B1YmxpY0lkJywgJ3N5c3RlbUlkJworICAgIF9fc2xvdHNfXyA9ICdwdWJsaWNJZCcsICdzeXN0ZW1JZCcKIAogICAgIGRlZiBfaWRlbnRpZmllZF9taXhpbl9pbml0KHNlbGYsIHB1YmxpY0lkLCBzeXN0ZW1JZCk6CiAgICAgICAgIHNlbGYucHVibGljSWQgPSBwdWJsaWNJZApAQCAtMTUwNCwxOCArMTUyMSwxOSBAQAogICAgICAgICBub2RlLm93bmVyRG9jdW1lbnQuX2lkX3NlYXJjaF9zdGFjaz0gTm9uZQogCiBjbGFzcyBEb2N1bWVudChOb2RlLCBEb2N1bWVudExTKToKKyAgICBfX3Nsb3RzX18gPSAoJ19lbGVtX2luZm8nLCAnZG9jdHlwZScsCisgICAgICAgICAgICAgICAgICdfaWRfc2VhcmNoX3N0YWNrJywgJ2NoaWxkTm9kZXMnLCAnX2lkX2NhY2hlJykKICAgICBfY2hpbGRfbm9kZV90eXBlcyA9IChOb2RlLkVMRU1FTlRfTk9ERSwgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZS5DT01NRU5UX05PREUsIE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFKQogCisgICAgaW1wbGVtZW50YXRpb24gPSBET01JbXBsZW1lbnRhdGlvbigpCiAgICAgbm9kZVR5cGUgPSBOb2RlLkRPQ1VNRU5UX05PREUKICAgICBub2RlTmFtZSA9ICIjZG9jdW1lbnQiCiAgICAgbm9kZVZhbHVlID0gTm9uZQogICAgIGF0dHJpYnV0ZXMgPSBOb25lCi0gICAgZG9jdHlwZSA9IE5vbmUKICAgICBwYXJlbnROb2RlID0gTm9uZQogICAgIHByZXZpb3VzU2libGluZyA9IG5leHRTaWJsaW5nID0gTm9uZQogCi0gICAgaW1wbGVtZW50YXRpb24gPSBET01JbXBsZW1lbnRhdGlvbigpCiAKICAgICAjIERvY3VtZW50IGF0dHJpYnV0ZXMgZnJvbSBMZXZlbCAzIChXRCA5IEFwcmlsIDIwMDIpCiAKQEAgLTE1MzAsNiArMTU0OCw3IEBACiAgICAgX21hZ2ljX2lkX2NvdW50ID0gMAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmRvY3R5cGUgPSBOb25lCiAgICAgICAgIHNlbGYuY2hpbGROb2RlcyA9IE5vZGVMaXN0KCkKICAgICAgICAgIyBtYXBwaW5nIG9mIChuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkgLT4gRWxlbWVudEluZm8KICAgICAgICAgIyAgICAgICAgYW5kIHRhZ05hbWUgLT4gRWxlbWVudEluZm8KQEAgLTE3NzEsMTIgKzE3OTAsMTIgQEAKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90U3VwcG9ydGVkRXJyKCJjYW5ub3QgaW1wb3J0IGRvY3VtZW50IHR5cGUgbm9kZXMiKQogICAgICAgICByZXR1cm4gX2Nsb25lX25vZGUobm9kZSwgZGVlcCwgc2VsZikKIAotICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiLAotICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUpOgorICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiLCBlbmNvZGluZz1Ob25lKToKICAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKICAgICAgICAgICAgIHdyaXRlci53cml0ZSgnPD94bWwgdmVyc2lvbj0iMS4wIiA/PicrbmV3bCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdyaXRlci53cml0ZSgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iJXMiPz4lcycgJSAoZW5jb2RpbmcsIG5ld2wpKQorICAgICAgICAgICAgd3JpdGVyLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSIlcyI/PiVzJyAlICgKKyAgICAgICAgICAgICAgICBlbmNvZGluZywgbmV3bCkpCiAgICAgICAgIGZvciBub2RlIGluIHNlbGYuY2hpbGROb2RlczoKICAgICAgICAgICAgIG5vZGUud3JpdGV4bWwod3JpdGVyLCBpbmRlbnQsIGFkZGluZGVudCwgbmV3bCkKIApAQCAtMTgxNSwxNyArMTgzNCwxNSBAQAogICAgICAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlTm9kZShuKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZWxlbWVudCA9IE5vbmUKLSAgICAgICAgIyBhdm9pZCBfX3NldGF0dHJfXwotICAgICAgICBkID0gbi5fX2RpY3RfXwotICAgICAgICBkWydwcmVmaXgnXSA9IHByZWZpeAotICAgICAgICBkWydsb2NhbE5hbWUnXSA9IGxvY2FsTmFtZQotICAgICAgICBkWyduYW1lc3BhY2VVUkknXSA9IG5hbWVzcGFjZVVSSQotICAgICAgICBkWydub2RlTmFtZSddID0gbmFtZQorICAgICAgICBuLnByZWZpeCA9IHByZWZpeAorICAgICAgICBuLl9sb2NhbE5hbWUgPSBsb2NhbE5hbWUKKyAgICAgICAgbi5uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkkKKyAgICAgICAgbi5ub2RlTmFtZSA9IG5hbWUKICAgICAgICAgaWYgbi5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGRbJ3RhZ05hbWUnXSA9IG5hbWUKKyAgICAgICAgICAgIG4udGFnTmFtZSA9IG5hbWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgYXR0cmlidXRlIG5vZGUKLSAgICAgICAgICAgIGRbJ25hbWUnXSA9IG5hbWUKKyAgICAgICAgICAgIG4ubmFtZSA9IG5hbWUKICAgICAgICAgICAgIGlmIGVsZW1lbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOb2RlKG4pCiAgICAgICAgICAgICAgICAgaWYgaXNfaWQ6CmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9wdWxsZG9tLnB5IGIvTGliL3htbC9kb20vcHVsbGRvbS5weQppbmRleCBkNWFjOGIyLi40MzUwNGY3IDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9wdWxsZG9tLnB5CisrKyBiL0xpYi94bWwvZG9tL3B1bGxkb20ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgeG1sLnNheAogaW1wb3J0IHhtbC5zYXguaGFuZGxlcgotaW1wb3J0IHR5cGVzCiAKIFNUQVJUX0VMRU1FTlQgPSAiU1RBUlRfRUxFTUVOVCIKIEVORF9FTEVNRU5UID0gIkVORF9FTEVNRU5UIgpAQCAtMzM0LDEwICszMzMsNyBAQAogICAgIHJldHVybiBET01FdmVudFN0cmVhbShzdHJlYW0sIHBhcnNlciwgYnVmc2l6ZSkKIAogZGVmIHBhcnNlU3RyaW5nKHN0cmluZywgcGFyc2VyPU5vbmUpOgotICAgIHRyeToKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAogICAgIGJ1ZnNpemUgPSBsZW4oc3RyaW5nKQogICAgIGJ1ZiA9IFN0cmluZ0lPKHN0cmluZykKZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CmluZGV4IDk3NDJmMzIuLjk1NTNjNTEgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQpAQCAtNjgsOCArNjgsOSBAQAogICAgICJ0b3N0cmluZyIsICJ0b3N0cmluZ2xpc3QiLAogICAgICJUcmVlQnVpbGRlciIsCiAgICAgIlZFUlNJT04iLAotICAgICJYTUwiLAorICAgICJYTUwiLCAiWE1MSUQiLAogICAgICJYTUxQYXJzZXIiLCAiWE1MVHJlZUJ1aWxkZXIiLAorICAgICJyZWdpc3Rlcl9uYW1lc3BhY2UiLAogICAgIF0KIAogVkVSU0lPTiA9ICIxLjMuMCIKQEAgLTk5LDM0ICsxMDAsMTEgQEAKIGltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgaW8KK2ltcG9ydCBjb250ZXh0bGliCiAKK2Zyb20gLiBpbXBvcnQgRWxlbWVudFBhdGgKIAotY2xhc3MgX1NpbXBsZUVsZW1lbnRQYXRoOgotICAgICMgZW11bGF0ZSBwcmUtMS4yIGZpbmQvZmluZHRleHQvZmluZGFsbCBiZWhhdmlvdXIKLSAgICBkZWYgZmluZChzZWxmLCBlbGVtZW50LCB0YWcsIG5hbWVzcGFjZXM9Tm9uZSk6Ci0gICAgICAgIGZvciBlbGVtIGluIGVsZW1lbnQ6Ci0gICAgICAgICAgICBpZiBlbGVtLnRhZyA9PSB0YWc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0KLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBkZWYgZmluZHRleHQoc2VsZiwgZWxlbWVudCwgdGFnLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSk6Ci0gICAgICAgIGVsZW0gPSBzZWxmLmZpbmQoZWxlbWVudCwgdGFnKQotICAgICAgICBpZiBlbGVtIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gZGVmYXVsdAotICAgICAgICByZXR1cm4gZWxlbS50ZXh0IG9yICIiCi0gICAgZGVmIGl0ZXJmaW5kKHNlbGYsIGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgaWYgdGFnWzozXSA9PSAiLi8vIjoKLSAgICAgICAgICAgIGZvciBlbGVtIGluIGVsZW1lbnQuaXRlcih0YWdbMzpdKToKLSAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCi0gICAgICAgIGZvciBlbGVtIGluIGVsZW1lbnQ6Ci0gICAgICAgICAgICBpZiBlbGVtLnRhZyA9PSB0YWc6Ci0gICAgICAgICAgICAgICAgeWllbGQgZWxlbQotICAgIGRlZiBmaW5kYWxsKHNlbGYsIGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5pdGVyZmluZChlbGVtZW50LCB0YWcsIG5hbWVzcGFjZXMpKQotCi10cnk6Ci0gICAgZnJvbSAuIGltcG9ydCBFbGVtZW50UGF0aAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIEVsZW1lbnRQYXRoID0gX1NpbXBsZUVsZW1lbnRQYXRoKCkKIAogIyMKICMgUGFyc2VyIGVycm9yLiAgVGhpcyBpcyBhIHN1YmNsYXNzIG9mIDxiPlN5bnRheEVycm9yPC9iPi4KQEAgLTE0OCw5ICsxMjYsOSBAQAogIyBAZGVmcmV0dXJuIGZsYWcKIAogZGVmIGlzZWxlbWVudChlbGVtZW50KToKLSAgICAjIEZJWE1FOiBub3Qgc3VyZSBhYm91dCB0aGlzOyBtaWdodCBiZSBhIGJldHRlciBpZGVhIHRvIGxvb2sKLSAgICAjIGZvciB0YWcvYXR0cmliL3RleHQgYXR0cmlidXRlcwotICAgIHJldHVybiBpc2luc3RhbmNlKGVsZW1lbnQsIEVsZW1lbnQpIG9yIGhhc2F0dHIoZWxlbWVudCwgInRhZyIpCisgICAgIyBGSVhNRTogbm90IHN1cmUgYWJvdXQgdGhpczsKKyAgICAjIGlzaW5zdGFuY2UoZWxlbWVudCwgRWxlbWVudCkgb3IgbG9vayBmb3IgdGFnL2F0dHJpYi90ZXh0IGF0dHJpYnV0ZXMKKyAgICByZXR1cm4gaGFzYXR0cihlbGVtZW50LCAndGFnJykKIAogIyMKICMgRWxlbWVudCBjbGFzcy4gIFRoaXMgY2xhc3MgZGVmaW5lcyB0aGUgRWxlbWVudCBpbnRlcmZhY2UsIGFuZApAQCAtMjA1LDYgKzE4Myw5IEBACiAgICAgIyBjb25zdHJ1Y3RvcgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhZywgYXR0cmliPXt9LCAqKmV4dHJhKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXR0cmliLCBkaWN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXR0cmliIG11c3QgYmUgZGljdCwgbm90ICVzIiAlICgKKyAgICAgICAgICAgICAgICBhdHRyaWIuX19jbGFzc19fLl9fbmFtZV9fLCkpCiAgICAgICAgIGF0dHJpYiA9IGF0dHJpYi5jb3B5KCkKICAgICAgICAgYXR0cmliLnVwZGF0ZShleHRyYSkKICAgICAgICAgc2VsZi50YWcgPSB0YWcKQEAgLTI5OCw3ICsyNzksNyBAQAogICAgICMgQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gYWRkLgogCiAgICAgZGVmIGFwcGVuZChzZWxmLCBlbGVtZW50KToKLSAgICAgICAgIyBhc3NlcnQgaXNlbGVtZW50KGVsZW1lbnQpCisgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgIHNlbGYuX2NoaWxkcmVuLmFwcGVuZChlbGVtZW50KQogCiAgICAgIyMKQEAgLTMwOCw4ICsyODksOCBAQAogICAgICMgQHNpbmNlIDEuMwogCiAgICAgZGVmIGV4dGVuZChzZWxmLCBlbGVtZW50cyk6Ci0gICAgICAgICMgZm9yIGVsZW1lbnQgaW4gZWxlbWVudHM6Ci0gICAgICAgICMgICAgIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gZWxlbWVudHM6CisgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChlbGVtZW50KQogICAgICAgICBzZWxmLl9jaGlsZHJlbi5leHRlbmQoZWxlbWVudHMpCiAKICAgICAjIwpAQCAtMzE4LDkgKzI5OSwxNSBAQAogICAgICMgQHBhcmFtIGluZGV4IFdoZXJlIHRvIGluc2VydCB0aGUgbmV3IHN1YmVsZW1lbnQuCiAKICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCBlbGVtZW50KToKLSAgICAgICAgIyBhc3NlcnQgaXNlbGVtZW50KGVsZW1lbnQpCisgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgIHNlbGYuX2NoaWxkcmVuLmluc2VydChpbmRleCwgZWxlbWVudCkKIAorICAgIGRlZiBfYXNzZXJ0X2lzX2VsZW1lbnQoc2VsZiwgZSk6CisgICAgICAgICMgTmVlZCB0byByZWZlciB0byB0aGUgYWN0dWFsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiwgbm90IHRoZQorICAgICAgICAjIHNoYWRvd2luZyBDIGltcGxlbWVudGF0aW9uLgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlLCBfRWxlbWVudCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGFuIEVsZW1lbnQsIG5vdCAlcycgJSB0eXBlKGUpLl9fbmFtZV9fKQorCiAgICAgIyMKICAgICAjIFJlbW92ZXMgYSBtYXRjaGluZyBzdWJlbGVtZW50LiAgVW5saWtlIHRoZSA8Yj5maW5kPC9iPiBtZXRob2RzLAogICAgICMgdGhpcyBtZXRob2QgY29tcGFyZXMgZWxlbWVudHMgYmFzZWQgb24gaWRlbnRpdHksIG5vdCBvbiB0YWcKQEAgLTgwOSw1OSArNzk2LDM4IEBACiAgICAgIyAgICAgTm9uZSBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZS4gIE5vbmUgaXMgZGVmYXVsdC4KIAogICAgIGRlZiB3cml0ZShzZWxmLCBmaWxlX29yX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgIHhtbF9kZWNsYXJhdGlvbj1Ob25lLAogICAgICAgICAgICAgICBkZWZhdWx0X25hbWVzcGFjZT1Ob25lLAogICAgICAgICAgICAgICBtZXRob2Q9Tm9uZSk6Ci0gICAgICAgICMgYXNzZXJ0IHNlbGYuX3Jvb3QgaXMgbm90IE5vbmUKICAgICAgICAgaWYgbm90IG1ldGhvZDoKICAgICAgICAgICAgIG1ldGhvZCA9ICJ4bWwiCiAgICAgICAgIGVsaWYgbWV0aG9kIG5vdCBpbiBfc2VyaWFsaXplOgotICAgICAgICAgICAgIyBGSVhNRTogcmFpc2UgYW4gSW1wb3J0RXJyb3IgZm9yIGMxNG4gaWYgRWxlbWVudEMxNE4gaXMgbWlzc2luZz8KICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gbWV0aG9kICVyIiAlIG1ldGhvZCkKICAgICAgICAgaWYgbm90IGVuY29kaW5nOgogICAgICAgICAgICAgaWYgbWV0aG9kID09ICJjMTRuIjoKICAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAidXMtYXNjaWkiCi0gICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gc3RyOiAgIyBseG1sLmV0cmVlIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICBlbmNvZGluZyA9ICJ1bmljb2RlIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5sb3dlcigpCi0gICAgICAgIGlmIGhhc2F0dHIoZmlsZV9vcl9maWxlbmFtZSwgIndyaXRlIik6Ci0gICAgICAgICAgICBmaWxlID0gZmlsZV9vcl9maWxlbmFtZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZW5jb2RpbmcgIT0gInVuaWNvZGUiOgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3YiIpCisgICAgICAgIHdpdGggX2dldF93cml0ZXIoZmlsZV9vcl9maWxlbmFtZSwgZW5jb2RpbmcpIGFzIHdyaXRlOgorICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ4bWwiIGFuZCAoeG1sX2RlY2xhcmF0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgICh4bWxfZGVjbGFyYXRpb24gaXMgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nIG5vdCBpbiAoInV0Zi04IiwgInVzLWFzY2lpIiwgInVuaWNvZGUiKSkpOgorICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgICAgICAgICBpZiBlbmNvZGluZyA9PSAidW5pY29kZSI6CisgICAgICAgICAgICAgICAgICAgICMgUmV0cmlldmUgdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIHRoZSB4bWwgZGVjbGFyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgICAgICAgICAgd3JpdGUoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iICUgKAorICAgICAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZywpKQorICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ0ZXh0IjoKKyAgICAgICAgICAgICAgICBfc2VyaWFsaXplX3RleHQod3JpdGUsIHNlbGYuX3Jvb3QpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3IikKLSAgICAgICAgaWYgZW5jb2RpbmcgIT0gInVuaWNvZGUiOgotICAgICAgICAgICAgZGVmIHdyaXRlKHRleHQpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUud3JpdGUodGV4dC5lbmNvZGUoZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHRleHQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3cml0ZSA9IGZpbGUud3JpdGUKLSAgICAgICAgaWYgbWV0aG9kID09ICJ4bWwiIGFuZCAoeG1sX2RlY2xhcmF0aW9uIG9yCi0gICAgICAgICAgICAgICAgKHhtbF9kZWNsYXJhdGlvbiBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgICBlbmNvZGluZyBub3QgaW4gKCJ1dGYtOCIsICJ1cy1hc2NpaSIsICJ1bmljb2RlIikpKToKLSAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gZW5jb2RpbmcKLSAgICAgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKLSAgICAgICAgICAgICAgICAjIFJldHJpZXZlIHRoZSBkZWZhdWx0IGVuY29kaW5nIGZvciB0aGUgeG1sIGRlY2xhcmF0aW9uCi0gICAgICAgICAgICAgICAgaW1wb3J0IGxvY2FsZQotICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKLSAgICAgICAgICAgIHdyaXRlKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIiAlIGRlY2xhcmVkX2VuY29kaW5nKQotICAgICAgICBpZiBtZXRob2QgPT0gInRleHQiOgotICAgICAgICAgICAgX3NlcmlhbGl6ZV90ZXh0KHdyaXRlLCBzZWxmLl9yb290KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcW5hbWVzLCBuYW1lc3BhY2VzID0gX25hbWVzcGFjZXMoc2VsZi5fcm9vdCwgZGVmYXVsdF9uYW1lc3BhY2UpCi0gICAgICAgICAgICBzZXJpYWxpemUgPSBfc2VyaWFsaXplW21ldGhvZF0KLSAgICAgICAgICAgIHNlcmlhbGl6ZSh3cml0ZSwgc2VsZi5fcm9vdCwgcW5hbWVzLCBuYW1lc3BhY2VzKQotICAgICAgICBpZiBmaWxlX29yX2ZpbGVuYW1lIGlzIG5vdCBmaWxlOgotICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgcW5hbWVzLCBuYW1lc3BhY2VzID0gX25hbWVzcGFjZXMoc2VsZi5fcm9vdCwgZGVmYXVsdF9uYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplID0gX3NlcmlhbGl6ZVttZXRob2RdCisgICAgICAgICAgICAgICAgc2VyaWFsaXplKHdyaXRlLCBzZWxmLl9yb290LCBxbmFtZXMsIG5hbWVzcGFjZXMpCiAKICAgICBkZWYgd3JpdGVfYzE0bihzZWxmLCBmaWxlKToKICAgICAgICAgIyBseG1sLmV0cmVlIGNvbXBhdGliaWxpdHkuICB1c2Ugb3V0cHV0IG1ldGhvZCBpbnN0ZWFkCkBAIC04NzAsNiArODM2LDU4IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIHNlcmlhbGl6YXRpb24gc3VwcG9ydAogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIF9nZXRfd3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUsIGVuY29kaW5nKToKKyAgICAjIHJldHVybnMgdGV4dCB3cml0ZSBtZXRob2QgYW5kIHJlbGVhc2UgYWxsIHJlc291cnNlcyBhZnRlciB1c2luZworICAgIHRyeToKKyAgICAgICAgd3JpdGUgPSBmaWxlX29yX2ZpbGVuYW1lLndyaXRlCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAjIGZpbGVfb3JfZmlsZW5hbWUgaXMgYSBmaWxlIG5hbWUKKyAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciLCBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0ieG1sY2hhcnJlZnJlcGxhY2UiKQorICAgICAgICB3aXRoIGZpbGU6CisgICAgICAgICAgICB5aWVsZCBmaWxlLndyaXRlCisgICAgZWxzZToKKyAgICAgICAgIyBmaWxlX29yX2ZpbGVuYW1lIGlzIGEgZmlsZS1saWtlIG9iamVjdAorICAgICAgICAjIGVuY29kaW5nIGRldGVybWluZXMgaWYgaXQgaXMgYSB0ZXh0IG9yIGJpbmFyeSB3cml0ZXIKKyAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgIyB1c2UgYSB0ZXh0IHdyaXRlciBhcyBpcworICAgICAgICAgICAgeWllbGQgd3JpdGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgd3JhcCBhIGJpbmFyeSB3cml0ZXIgd2l0aCBUZXh0SU9XcmFwcGVyCisgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlX29yX2ZpbGVuYW1lLCBpby5CdWZmZXJlZElPQmFzZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxlX29yX2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVfb3JfZmlsZW5hbWUsIGlvLlJhd0lPQmFzZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5CdWZmZXJlZFdyaXRlcihmaWxlX29yX2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgb3BlbiB3aGVuIHRoZSBCdWZmZXJlZFdyaXRlciBpcworICAgICAgICAgICAgICAgICAgICAjIGRlc3Ryb3llZAorICAgICAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhmaWxlLmRldGFjaCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgdG8gaGFuZGxlIHBhc3NlZCBvYmplY3RzIHRoYXQgYXJlbid0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAjIElPQmFzZSBoaWVyYXJjaHksIGJ1dCBqdXN0IGhhdmUgYSB3cml0ZSBtZXRob2QKKyAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLkJ1ZmZlcmVkSU9CYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgZmlsZS53cml0YWJsZSA9IGxhbWJkYTogVHJ1ZQorICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlID0gd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUZXh0SU9XcmFwcGVyIHVzZXMgdGhpcyBtZXRob2RzIHRvIGRldGVybWluZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBCT00gKGZvciBVVEYtMTYsIGV0Yykgc2hvdWxkIGJlIGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnNlZWthYmxlID0gZmlsZV9vcl9maWxlbmFtZS5zZWVrYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS50ZWxsID0gZmlsZV9vcl9maWxlbmFtZS50ZWxsCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmaWxlID0gaW8uVGV4dElPV3JhcHBlcihmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0ieG1sY2hhcnJlZnJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9IlxuIikKKyAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgb3BlbiB3aGVuIHRoZSBUZXh0SU9XcmFwcGVyIGlzCisgICAgICAgICAgICAgICAgIyBkZXN0cm95ZWQKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhmaWxlLmRldGFjaCkKKyAgICAgICAgICAgICAgICB5aWVsZCBmaWxlLndyaXRlCisKIGRlZiBfbmFtZXNwYWNlcyhlbGVtLCBkZWZhdWx0X25hbWVzcGFjZT1Ob25lKToKICAgICAjIGlkZW50aWZ5IG5hbWVzcGFjZXMgdXNlZCBpbiB0aGlzIHRyZWUKIApAQCAtOTA5LDExICs5MjcsNyBAQAogICAgICAgICAgICAgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IocW5hbWUpCiAKICAgICAjIHBvcHVsYXRlIHFuYW1lIGFuZCBuYW1lc3BhY2VzIHRhYmxlCi0gICAgdHJ5OgotICAgICAgICBpdGVyYXRlID0gZWxlbS5pdGVyCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBpdGVyYXRlID0gZWxlbS5nZXRpdGVyYXRvciAjIGNFVCBjb21wYXRpYmlsaXR5Ci0gICAgZm9yIGVsZW0gaW4gaXRlcmF0ZSgpOgorICAgIGZvciBlbGVtIGluIGVsZW0uaXRlcigpOgogICAgICAgICB0YWcgPSBlbGVtLnRhZwogICAgICAgICBpZiBpc2luc3RhbmNlKHRhZywgUU5hbWUpOgogICAgICAgICAgICAgaWYgdGFnLnRleHQgbm90IGluIHFuYW1lczoKQEAgLTEwODUsNiArMTA5OSw4IEBACiAgICAgIyBkdWJsaW4gY29yZQogICAgICJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI6ICJkYyIsCiB9CisjIEZvciB0ZXN0cyBhbmQgdHJvdWJsZXNob290aW5nCityZWdpc3Rlcl9uYW1lc3BhY2UuX25hbWVzcGFjZV9tYXAgPSBfbmFtZXNwYWNlX21hcAogCiBkZWYgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IodGV4dCk6CiAgICAgcmFpc2UgVHlwZUVycm9yKApAQCAtMTE1MywyMiArMTE2OSwxMyBAQAogIyBAZGVmcmV0dXJuIHN0cmluZwogCiBkZWYgdG9zdHJpbmcoZWxlbWVudCwgZW5jb2Rpbmc9Tm9uZSwgbWV0aG9kPU5vbmUpOgotICAgIGNsYXNzIGR1bW15OgotICAgICAgICBwYXNzCi0gICAgZGF0YSA9IFtdCi0gICAgZmlsZSA9IGR1bW15KCkKLSAgICBmaWxlLndyaXRlID0gZGF0YS5hcHBlbmQKLSAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShmaWxlLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKLSAgICBpZiBlbmNvZGluZyBpbiAoc3RyLCAidW5pY29kZSIpOgotICAgICAgICByZXR1cm4gIiIuam9pbihkYXRhKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBiIiIuam9pbihkYXRhKQorICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkgaWYgZW5jb2RpbmcgPT0gJ3VuaWNvZGUnIGVsc2UgaW8uQnl0ZXNJTygpCisgICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKKyAgICByZXR1cm4gc3RyZWFtLmdldHZhbHVlKCkKIAogIyMKICMgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBlbGVtZW50LCBpbmNsdWRpbmcgYWxsCi0jIHN1YmVsZW1lbnRzLiAgSWYgZW5jb2RpbmcgaXMgRmFsc2UsIHRoZSBzdHJpbmcgaXMgcmV0dXJuZWQgYXMgYQotIyBzZXF1ZW5jZSBvZiBzdHJpbmcgZnJhZ21lbnRzOyBvdGhlcndpc2UgaXQgaXMgYSBzZXF1ZW5jZSBvZgotIyBieXRlc3RyaW5ncy4KKyMgc3ViZWxlbWVudHMuCiAjCiAjIEBwYXJhbSBlbGVtZW50IEFuIEVsZW1lbnQgaW5zdGFuY2UuCiAjIEBrZXlwYXJhbSBlbmNvZGluZyBPcHRpb25hbCBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgpAQCAtMTE3OSwxNSArMTE4NiwyOSBAQAogIyBAZGVmcmV0dXJuIHNlcXVlbmNlCiAjIEBzaW5jZSAxLjMKIAorY2xhc3MgX0xpc3REYXRhU3RyZWFtKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICAiIiIgQW4gYXV4aWxpYXJ5IHN0cmVhbSBhY2N1bXVsYXRpbmcgaW50byBhIGxpc3QgcmVmZXJlbmNlCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxzdCk6CisgICAgICAgIHNlbGYubHN0ID0gbHN0CisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgYik6CisgICAgICAgIHNlbGYubHN0LmFwcGVuZChiKQorCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCisKIGRlZiB0b3N0cmluZ2xpc3QoZWxlbWVudCwgZW5jb2Rpbmc9Tm9uZSwgbWV0aG9kPU5vbmUpOgotICAgIGNsYXNzIGR1bW15OgotICAgICAgICBwYXNzCi0gICAgZGF0YSA9IFtdCi0gICAgZmlsZSA9IGR1bW15KCkKLSAgICBmaWxlLndyaXRlID0gZGF0YS5hcHBlbmQKLSAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShmaWxlLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKLSAgICAjIEZJWE1FOiBtZXJnZSBzbWFsbCBmcmFnbWVudHMgaW50byBsYXJnZXIgcGFydHMKLSAgICByZXR1cm4gZGF0YQorICAgIGxzdCA9IFtdCisgICAgc3RyZWFtID0gX0xpc3REYXRhU3RyZWFtKGxzdCkKKyAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzdHJlYW0sIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kKQorICAgIHJldHVybiBsc3QKIAogIyMKICMgV3JpdGVzIGFuIGVsZW1lbnQgdHJlZSBvciBlbGVtZW50IHN0cnVjdHVyZSB0byBzeXMuc3Rkb3V0LiAgVGhpcwpAQCAtMTUwOSwyNCArMTUzMCwzMCBAQAogICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYuX3RhcmdldCA9IHRhcmdldAogICAgICAgICBzZWxmLl9lcnJvciA9IGV4cGF0LmVycm9yCiAgICAgICAgIHNlbGYuX25hbWVzID0ge30gIyBuYW1lIG1lbW8gY2FjaGUKLSAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgIyBtYWluIGNhbGxiYWNrcwogICAgICAgICBwYXJzZXIuRGVmYXVsdEhhbmRsZXJFeHBhbmQgPSBzZWxmLl9kZWZhdWx0Ci0gICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnQKLSAgICAgICAgcGFyc2VyLkVuZEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fZW5kCi0gICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHNlbGYuX2RhdGEKLSAgICAgICAgIyBvcHRpb25hbCBjYWxsYmFja3MKLSAgICAgICAgcGFyc2VyLkNvbW1lbnRIYW5kbGVyID0gc2VsZi5fY29tbWVudAotICAgICAgICBwYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHNlbGYuX3BpCisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnc3RhcnQnKToKKyAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnQKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdlbmQnKToKKyAgICAgICAgICAgIHBhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuX2VuZAorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2RhdGEnKToKKyAgICAgICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHRhcmdldC5kYXRhCisgICAgICAgICMgbWlzY2VsbGFuZW91cyBjYWxsYmFja3MKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdjb21tZW50Jyk6CisgICAgICAgICAgICBwYXJzZXIuQ29tbWVudEhhbmRsZXIgPSB0YXJnZXQuY29tbWVudAorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3BpJyk6CisgICAgICAgICAgICBwYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHRhcmdldC5waQogICAgICAgICAjIGxldCBleHBhdCBkbyB0aGUgYnVmZmVyaW5nLCBpZiBzdXBwb3J0ZWQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLmJ1ZmZlcl90ZXh0ID0gMQorICAgICAgICAgICAgcGFyc2VyLmJ1ZmZlcl90ZXh0ID0gMQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgdXNlIG5ldy1zdHlsZSBhdHRyaWJ1dGUgaGFuZGxpbmcsIGlmIHN1cHBvcnRlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wYXJzZXIub3JkZXJlZF9hdHRyaWJ1dGVzID0gMQotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gMQotICAgICAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLl9zdGFydF9saXN0CisgICAgICAgICAgICBwYXJzZXIub3JkZXJlZF9hdHRyaWJ1dGVzID0gMQorICAgICAgICAgICAgcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gMQorICAgICAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdzdGFydCcpOgorICAgICAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnRfbGlzdAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSBOb25lCkBAIC0xNTcwLDQ0ICsxNTk3LDI5IEBACiAgICAgICAgICAgICAgICAgYXR0cmliW2ZpeG5hbWUoYXR0cmliX2luW2ldKV0gPSBhdHRyaWJfaW5baSsxXQogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuc3RhcnQodGFnLCBhdHRyaWIpCiAKLSAgICBkZWYgX2RhdGEoc2VsZiwgdGV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLnRhcmdldC5kYXRhKHRleHQpCi0KICAgICBkZWYgX2VuZChzZWxmLCB0YWcpOgogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuZW5kKHNlbGYuX2ZpeG5hbWUodGFnKSkKIAotICAgIGRlZiBfY29tbWVudChzZWxmLCBkYXRhKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tbWVudCA9IHNlbGYudGFyZ2V0LmNvbW1lbnQKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNvbW1lbnQoZGF0YSkKLQotICAgIGRlZiBfcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGkgPSBzZWxmLnRhcmdldC5waQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcGkodGFyZ2V0LCBkYXRhKQotCiAgICAgZGVmIF9kZWZhdWx0KHNlbGYsIHRleHQpOgogICAgICAgICBwcmVmaXggPSB0ZXh0WzoxXQogICAgICAgICBpZiBwcmVmaXggPT0gIiYiOgogICAgICAgICAgICAgIyBkZWFsIHdpdGggdW5kZWZpbmVkIGVudGl0aWVzCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi50YXJnZXQuZGF0YShzZWxmLmVudGl0eVt0ZXh0WzE6LTFdXSkKKyAgICAgICAgICAgICAgICBkYXRhX2hhbmRsZXIgPSBzZWxmLnRhcmdldC5kYXRhCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YV9oYW5kbGVyKHNlbGYuZW50aXR5W3RleHRbMTotMV1dKQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CiAgICAgICAgICAgICAgICAgZXJyID0gZXhwYXQuZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICJ1bmRlZmluZWQgZW50aXR5ICVzOiBsaW5lICVkLCBjb2x1bW4gJWQiICUKLSAgICAgICAgICAgICAgICAgICAgKHRleHQsIHNlbGYuX3BhcnNlci5FcnJvckxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5FcnJvckNvbHVtbk51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgKHRleHQsIHNlbGYucGFyc2VyLkVycm9yTGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBlcnIuY29kZSA9IDExICMgWE1MX0VSUk9SX1VOREVGSU5FRF9FTlRJVFkKLSAgICAgICAgICAgICAgICBlcnIubGluZW5vID0gc2VsZi5fcGFyc2VyLkVycm9yTGluZU51bWJlcgotICAgICAgICAgICAgICAgIGVyci5vZmZzZXQgPSBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKKyAgICAgICAgICAgICAgICBlcnIubGluZW5vID0gc2VsZi5wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCisgICAgICAgICAgICAgICAgZXJyLm9mZnNldCA9IHNlbGYucGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyCiAgICAgICAgIGVsaWYgcHJlZml4ID09ICI8IiBhbmQgdGV4dFs6OV0gPT0gIjwhRE9DVFlQRSI6CiAgICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gW10gIyBpbnNpZGUgYSBkb2N0eXBlIGRlY2xhcmF0aW9uCkBAIC0xNjI1LDE2ICsxNjM3LDE2IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IHNlbGYuX2RvY3R5cGVbMV0KICAgICAgICAgICAgICAgICBpZiB0eXBlID09ICJQVUJMSUMiIGFuZCBuID09IDQ6CiAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHR5cGUsIHB1YmlkLCBzeXN0ZW0gPSBzZWxmLl9kb2N0eXBlCisgICAgICAgICAgICAgICAgICAgIGlmIHB1YmlkOgorICAgICAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBwdWJpZFsxOi0xXQogICAgICAgICAgICAgICAgIGVsaWYgdHlwZSA9PSAiU1lTVEVNIiBhbmQgbiA9PSAzOgogICAgICAgICAgICAgICAgICAgICBuYW1lLCB0eXBlLCBzeXN0ZW0gPSBzZWxmLl9kb2N0eXBlCiAgICAgICAgICAgICAgICAgICAgIHB1YmlkID0gTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIHB1YmlkOgotICAgICAgICAgICAgICAgICAgICBwdWJpZCA9IHB1YmlkWzE6LTFdCiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnRhcmdldCwgImRvY3R5cGUiKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXQuZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5kb2N0eXBlIGlzIG5vdCBzZWxmLl9YTUxQYXJzZXJfX2RvY3R5cGU6CisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLmRvY3R5cGUgIT0gc2VsZi5fWE1MUGFyc2VyX19kb2N0eXBlOgogICAgICAgICAgICAgICAgICAgICAjIHdhcm4gYWJvdXQgZGVwcmVjYXRlZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1hNTFBhcnNlcl9fZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmRvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKQEAgLTE2NjUsNyArMTY3Nyw3IEBACiAKICAgICBkZWYgZmVlZChzZWxmLCBkYXRhKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlBhcnNlKGRhdGEsIDApCisgICAgICAgICAgICBzZWxmLnBhcnNlci5QYXJzZShkYXRhLCAwKQogICAgICAgICBleGNlcHQgc2VsZi5fZXJyb3IgYXMgdjoKICAgICAgICAgICAgIHNlbGYuX3JhaXNlZXJyb3IodikKIApAQCAtMTY3NywxMiArMTY4OSwxMDAgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlBhcnNlKCIiLCAxKSAjIGVuZCBvZiBkYXRhCisgICAgICAgICAgICBzZWxmLnBhcnNlci5QYXJzZSgiIiwgMSkgIyBlbmQgb2YgZGF0YQogICAgICAgICBleGNlcHQgc2VsZi5fZXJyb3IgYXMgdjoKICAgICAgICAgICAgIHNlbGYuX3JhaXNlZXJyb3IodikKLSAgICAgICAgdHJlZSA9IHNlbGYudGFyZ2V0LmNsb3NlKCkKLSAgICAgICAgZGVsIHNlbGYudGFyZ2V0LCBzZWxmLl9wYXJzZXIgIyBnZXQgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMKLSAgICAgICAgcmV0dXJuIHRyZWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2xvc2VfaGFuZGxlciA9IHNlbGYudGFyZ2V0LmNsb3NlCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBjbG9zZV9oYW5kbGVyKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgZ2V0IHJpZCBvZiBjaXJjdWxhciByZWZlcmVuY2VzCisgICAgICAgICAgICBkZWwgc2VsZi5wYXJzZXIsIHNlbGYuX3BhcnNlcgorICAgICAgICAgICAgZGVsIHNlbGYudGFyZ2V0LCBzZWxmLl90YXJnZXQKKworCisjIEltcG9ydCB0aGUgQyBhY2NlbGVyYXRvcnMKK3RyeToKKyAgICAjIEVsZW1lbnQsIFN1YkVsZW1lbnQsIFBhcnNlRXJyb3IsIFRyZWVCdWlsZGVyLCBYTUxQYXJzZXIKKyAgICBmcm9tIF9lbGVtZW50dHJlZSBpbXBvcnQgKgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgIyBPdmVyd3JpdGUgJ0VsZW1lbnRUcmVlLnBhcnNlJyBhbmQgJ2l0ZXJwYXJzZScgdG8gdXNlIHRoZSBDIFhNTFBhcnNlcgorCisgICAgY2xhc3MgRWxlbWVudFRyZWUoRWxlbWVudFRyZWUpOgorICAgICAgICBkZWYgcGFyc2Uoc2VsZiwgc291cmNlLCBwYXJzZXI9Tm9uZSk6CisgICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAncmVhZCcpOgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAncmInKQorICAgICAgICAgICAgICAgIGNsb3NlX3NvdXJjZSA9IFRydWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBwYXJzZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc291cmNlLnJlYWQoNjU1MzYpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5fcGFyc2Uoc291cmNlKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb290CisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIGNsb3NlX3NvdXJjZToKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKKworICAgIGNsYXNzIGl0ZXJwYXJzZToKKyAgICAgICAgcm9vdCA9IE5vbmUKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIGV2ZW50cz1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZmlsZSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAncmInKQorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9maWxlID0gZmlsZQorICAgICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKyAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCisgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZQorICAgICAgICAgICAgYiA9IFRyZWVCdWlsZGVyKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IFhNTFBhcnNlcihiKQorICAgICAgICAgICAgc2VsZi5fcGFyc2VyLl9zZXRldmVudHMoc2VsZi5fZXZlbnRzLCBldmVudHMpCisKKyAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBzZWxmLl9ldmVudHNbc2VsZi5faW5kZXhdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yOgorICAgICAgICAgICAgICAgICAgICBlID0gc2VsZi5fZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9wYXJzZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdAorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICAjIGxvYWQgZXZlbnQgYnVmZmVyCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2V2ZW50c1s6XQorICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQoMTYzODQpCisgICAgICAgICAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yID0gZXhjCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmUKKworICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAjIGNvbXBhdGliaWxpdHkKIFhNTFRyZWVCdWlsZGVyID0gWE1MUGFyc2VyCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL2NFbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CmluZGV4IGE2ZjEyN2EuLjM2OGU2NzkgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CkBAIC0xLDMgKzEsMyBAQAotIyBXcmFwcGVyIG1vZHVsZSBmb3IgX2VsZW1lbnR0cmVlCisjIERlcHJlY2F0ZWQgYWxpYXMgZm9yIHhtbC5ldHJlZS5FbGVtZW50VHJlZQogCi1mcm9tIF9lbGVtZW50dHJlZSBpbXBvcnQgKgorZnJvbSB4bWwuZXRyZWUuRWxlbWVudFRyZWUgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weSBiL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weQppbmRleCBhODA1YjgyLi5iY2JlOWZiIDEwMDY0NAotLS0gYS9MaWIveG1sL3BhcnNlcnMvZXhwYXQucHkKKysrIGIvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5CkBAIC0xLDYgKzEsNCBAQAogIiIiSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBub24tdmFsaWRhdGluZyBYTUwgcGFyc2VyLiIiIgotX192ZXJzaW9uX18gPSAnJFJldmlzaW9uJCcKLQogaW1wb3J0IHN5cwogCiBmcm9tIHB5ZXhwYXQgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggOTdkNWFhYy4uYTc3OWU2NiAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTEyOCw4ICsxMjgsMTEgQEAKICIiIgogCiBpbXBvcnQgYmFzZTY0CitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBodHRwLmNsaWVudAoraW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBlcnJubwpAQCAtMTQyLDE3ICsxNDUsMTMgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgSW50ZXJuYWwgc3R1ZmYKIAotdHJ5OgotICAgIGltcG9ydCBkYXRldGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGRhdGV0aW1lID0gTm9uZQotCiBkZWYgZXNjYXBlKHMpOgogICAgIHMgPSBzLnJlcGxhY2UoIiYiLCAiJmFtcDsiKQogICAgIHMgPSBzLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgcmV0dXJuIHMucmVwbGFjZSgiPiIsICImZ3Q7IiwpCiAKLV9fdmVyc2lvbl9fID0gIjEuMC4xIgorIyB1c2VkIGluIFVzZXItQWdlbnQgaGVhZGVyIHNlbnQKK19fdmVyc2lvbl9fID0gc3lzLnZlcnNpb25bOjNdCiAKICMgeG1scnBjIGludGVnZXIgbGltaXRzCiBNQVhJTlQgPSAgMioqMzEtMQpAQCAtMjUyLDIxICsyNTEsMzMgQEAKICMgV3JhcHBlciBmb3IgWE1MLVJQQyBEYXRlVGltZSB2YWx1ZXMuICBUaGlzIGNvbnZlcnRzIGEgdGltZSB2YWx1ZSB0bwogIyB0aGUgZm9ybWF0IHVzZWQgYnkgWE1MLVJQQy4KICMgPHA+Ci0jIFRoZSB2YWx1ZSBjYW4gYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdAotIyAieXl5eW1tZGRUaGg6bW06c3MiLCBhcyBhIDktaXRlbSB0aW1lIHR1cGxlIChhcyByZXR1cm5lZCBieQorIyBUaGUgdmFsdWUgY2FuIGJlIGdpdmVuIGFzIGEgZGF0ZXRpbWUgb2JqZWN0LCBhcyBhIHN0cmluZyBpbiB0aGUKKyMgZm9ybWF0ICJ5eXl5bW1kZFRoaDptbTpzcyIsIGFzIGEgOS1pdGVtIHRpbWUgdHVwbGUgKGFzIHJldHVybmVkIGJ5CiAjIHRpbWUubG9jYWx0aW1lKCkpLCBvciBhbiBpbnRlZ2VyIHZhbHVlIChhcyByZXR1cm5lZCBieSB0aW1lLnRpbWUoKSkuCiAjIFRoZSB3cmFwcGVyIHVzZXMgdGltZS5sb2NhbHRpbWUoKSB0byBjb252ZXJ0IGFuIGludGVnZXIgdG8gYSB0aW1lCiAjIHR1cGxlLgogIwotIyBAcGFyYW0gdmFsdWUgVGhlIHRpbWUsIGdpdmVuIGFzIGFuIElTTyA4NjAxIHN0cmluZywgYSB0aW1lCi0jICAgICAgICAgICAgICB0dXBsZSwgb3IgYSBpbnRlZ2VyIHRpbWUgdmFsdWUuCisjIEBwYXJhbSB2YWx1ZSBUaGUgdGltZSwgZ2l2ZW4gYXMgYSBkYXRldGltZSBvYmplY3QsIGFuIElTTyA4NjAxIHN0cmluZywKKyMgICAgICAgICAgICAgIGEgdGltZSB0dXBsZSwgb3IgYW4gaW50ZWdlciB0aW1lIHZhbHVlLgorCisKKyMgSXNzdWUgIzEzMzA1OiBkaWZmZXJlbnQgZm9ybWF0IGNvZGVzIGFjcm9zcyBwbGF0Zm9ybXMKK19kYXkwID0gZGF0ZXRpbWUoMSwgMSwgMSkKK2lmIF9kYXkwLnN0cmZ0aW1lKCclWScpID09ICcwMDAxJzogICAgICAjIE1hYyBPUyBYCisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJVklbSVkVCVIOiVNOiVTIikKK2VsaWYgX2RheTAuc3RyZnRpbWUoJyU0WScpID09ICcwMDAxJzogICAjIExpbnV4CisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJTRZJW0lZFQlSDolTTolUyIpCitlbHNlOgorICAgIGRlZiBfaXNvODYwMV9mb3JtYXQodmFsdWUpOgorICAgICAgICByZXR1cm4gdmFsdWUuc3RyZnRpbWUoIiVZJW0lZFQlSDolTTolUyIpLnpmaWxsKDE3KQorZGVsIF9kYXkwCisKIAogZGVmIF9zdHJmdGltZSh2YWx1ZSk6Ci0gICAgaWYgZGF0ZXRpbWU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRhdGV0aW1lLmRhdGV0aW1lKToKLSAgICAgICAgICAgIHJldHVybiAiJTA0ZCUwMmQlMDJkVCUwMmQ6JTAyZDolMDJkIiAlICgKLSAgICAgICAgICAgICAgICB2YWx1ZS55ZWFyLCB2YWx1ZS5tb250aCwgdmFsdWUuZGF5LAotICAgICAgICAgICAgICAgIHZhbHVlLmhvdXIsIHZhbHVlLm1pbnV0ZSwgdmFsdWUuc2Vjb25kKQorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRhdGV0aW1lKToKKyAgICAgICAgcmV0dXJuIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSkKIAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAodHVwbGUsIHRpbWUuc3RydWN0X3RpbWUpKToKICAgICAgICAgaWYgdmFsdWUgPT0gMDoKQEAgLTI5MSw5ICszMDIsOSBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEYXRlVGltZSk6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQogICAgICAgICAgICAgbyA9IG90aGVyLnZhbHVlCi0gICAgICAgIGVsaWYgZGF0ZXRpbWUgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lLmRhdGV0aW1lKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQotICAgICAgICAgICAgbyA9IG90aGVyLnN0cmZ0aW1lKCIlWSVtJWRUJUg6JU06JVMiKQorICAgICAgICAgICAgbyA9IF9pc284NjAxX2Zvcm1hdChvdGhlcikKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCBzdHIpOgogICAgICAgICAgICAgcyA9IHNlbGYudmFsdWUKICAgICAgICAgICAgIG8gPSBvdGhlcgpAQCAtMzYxLDggKzM3Miw3IEBACiAgICAgcmV0dXJuIHZhbHVlCiAKIGRlZiBfZGF0ZXRpbWVfdHlwZShkYXRhKToKLSAgICB0ID0gdGltZS5zdHJwdGltZShkYXRhLCAiJVklbSVkVCVIOiVNOiVTIikKLSAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKnR1cGxlKHQpWzo2XSkKKyAgICByZXR1cm4gZGF0ZXRpbWUuc3RycHRpbWUoZGF0YSwgIiVZJW0lZFQlSDolTTolUyIpCiAKICMjCiAjIFdyYXBwZXIgZm9yIGJpbmFyeSBkYXRhLiAgVGhpcyBjYW4gYmUgdXNlZCB0byB0cmFuc3BvcnQgYW55IGtpbmQKQEAgLTM3Nyw4ICszODcsOCBAQAogICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICBkYXRhID0gYiIiCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMgb3IgYnl0ZWFycmF5LCBub3QgJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBkYXRhID0gYnl0ZXMoZGF0YSkgICMgTWFrZSBhIGNvcHkgb2YgdGhlIGJ5dGVzIQogICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCkBAIC00MDgsNyArNDE4LDYgQEAKICAgICAgICAgb3V0LndyaXRlKCI8dmFsdWU+PGJhc2U2ND5cbiIpCiAgICAgICAgIGVuY29kZWQgPSBiYXNlNjQuZW5jb2RlYnl0ZXMoc2VsZi5kYXRhKQogICAgICAgICBvdXQud3JpdGUoZW5jb2RlZC5kZWNvZGUoJ2FzY2lpJykpCi0gICAgICAgIG91dC53cml0ZSgnXG4nKQogICAgICAgICBvdXQud3JpdGUoIjwvYmFzZTY0PjwvdmFsdWU+XG4iKQogCiBkZWYgX2JpbmFyeShkYXRhKToKQEAgLTUyMiwxNSArNTMxLDYgQEAKICAgICAgICAgd3JpdGUoIjx2YWx1ZT48bmlsLz48L3ZhbHVlPiIpCiAgICAgZGlzcGF0Y2hbdHlwZShOb25lKV0gPSBkdW1wX25pbAogCi0gICAgZGVmIGR1bXBfaW50KHNlbGYsIHZhbHVlLCB3cml0ZSk6Ci0gICAgICAgICMgaW4gY2FzZSBpbnRzIGFyZSA+IDMyIGJpdHMKLSAgICAgICAgaWYgdmFsdWUgPiBNQVhJTlQgb3IgdmFsdWUgPCBNSU5JTlQ6Ci0gICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJpbnQgZXhjZWVkcyBYTUwtUlBDIGxpbWl0cyIpCi0gICAgICAgIHdyaXRlKCI8dmFsdWU+PGludD4iKQotICAgICAgICB3cml0ZShzdHIodmFsdWUpKQotICAgICAgICB3cml0ZSgiPC9pbnQ+PC92YWx1ZT5cbiIpCi0gICAgI2Rpc3BhdGNoW2ludF0gPSBkdW1wX2ludAotCiAgICAgZGVmIGR1bXBfYm9vbChzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICB3cml0ZSgiPHZhbHVlPjxib29sZWFuPiIpCiAgICAgICAgIHdyaXRlKHZhbHVlIGFuZCAiMSIgb3IgIjAiKQpAQCAtNTQ1LDYgKzU0NSw5IEBACiAgICAgICAgIHdyaXRlKCI8L2ludD48L3ZhbHVlPlxuIikKICAgICBkaXNwYXRjaFtpbnRdID0gZHVtcF9sb25nCiAKKyAgICAjIGJhY2t3YXJkIGNvbXBhdGlibGUKKyAgICBkdW1wX2ludCA9IGR1bXBfbG9uZworCiAgICAgZGVmIGR1bXBfZG91YmxlKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgIHdyaXRlKCI8dmFsdWU+PGRvdWJsZT4iKQogICAgICAgICB3cml0ZShyZXByKHZhbHVlKSkKQEAgLTU1Nyw2ICs1NjAsMTQgQEAKICAgICAgICAgd3JpdGUoIjwvc3RyaW5nPjwvdmFsdWU+XG4iKQogICAgIGRpc3BhdGNoW3N0cl0gPSBkdW1wX3VuaWNvZGUKIAorICAgIGRlZiBkdW1wX2J5dGVzKHNlbGYsIHZhbHVlLCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCI8dmFsdWU+PGJhc2U2ND5cbiIpCisgICAgICAgIGVuY29kZWQgPSBiYXNlNjQuZW5jb2RlYnl0ZXModmFsdWUpCisgICAgICAgIHdyaXRlKGVuY29kZWQuZGVjb2RlKCdhc2NpaScpKQorICAgICAgICB3cml0ZSgiPC9iYXNlNjQ+PC92YWx1ZT5cbiIpCisgICAgZGlzcGF0Y2hbYnl0ZXNdID0gZHVtcF9ieXRlcworICAgIGRpc3BhdGNoW2J5dGVhcnJheV0gPSBkdW1wX2J5dGVzCisKICAgICBkZWYgZHVtcF9hcnJheShzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICBpID0gaWQodmFsdWUpCiAgICAgICAgIGlmIGkgaW4gc2VsZi5tZW1vOgpAQCAtNTg5LDEyICs2MDAsMTEgQEAKICAgICAgICAgZGVsIHNlbGYubWVtb1tpXQogICAgIGRpc3BhdGNoW2RpY3RdID0gZHVtcF9zdHJ1Y3QKIAotICAgIGlmIGRhdGV0aW1lOgotICAgICAgICBkZWYgZHVtcF9kYXRldGltZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgotICAgICAgICAgICAgd3JpdGUoIjx2YWx1ZT48ZGF0ZVRpbWUuaXNvODYwMT4iKQotICAgICAgICAgICAgd3JpdGUoX3N0cmZ0aW1lKHZhbHVlKSkKLSAgICAgICAgICAgIHdyaXRlKCI8L2RhdGVUaW1lLmlzbzg2MDE+PC92YWx1ZT5cbiIpCi0gICAgICAgIGRpc3BhdGNoW2RhdGV0aW1lLmRhdGV0aW1lXSA9IGR1bXBfZGF0ZXRpbWUKKyAgICBkZWYgZHVtcF9kYXRldGltZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgorICAgICAgICB3cml0ZSgiPHZhbHVlPjxkYXRlVGltZS5pc284NjAxPiIpCisgICAgICAgIHdyaXRlKF9zdHJmdGltZSh2YWx1ZSkpCisgICAgICAgIHdyaXRlKCI8L2RhdGVUaW1lLmlzbzg2MDE+PC92YWx1ZT5cbiIpCisgICAgZGlzcGF0Y2hbZGF0ZXRpbWVdID0gZHVtcF9kYXRldGltZQogCiAgICAgZGVmIGR1bXBfaW5zdGFuY2Uoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICAgIyBjaGVjayBmb3Igc3BlY2lhbCB3cmFwcGVycwpAQCAtNjI4LDcgKzYzOCw3IEBACiAgICAgIyBhbmQgYWdhaW4sIGlmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiBpbiBoZXJlLAogICAgICMgdGhhdCdzIHBlcmZlY3RseSBvay4KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5fdHlwZSA9IE5vbmUKICAgICAgICAgc2VsZi5fc3RhY2sgPSBbXQogICAgICAgICBzZWxmLl9tYXJrcyA9IFtdCkBAIC02MzYsOSArNjQ2LDggQEAKICAgICAgICAgc2VsZi5fbWV0aG9kbmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5fc3RhY2suYXBwZW5kCi0gICAgICAgIHNlbGYuX3VzZV9kYXRldGltZSA9IHVzZV9kYXRldGltZQotICAgICAgICBpZiB1c2VfZGF0ZXRpbWUgYW5kIG5vdCBkYXRldGltZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBkYXRldGltZSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisgICAgICAgIHNlbGYuX3VzZV9kYXRldGltZSA9IHVzZV9idWlsdGluX3R5cGVzIG9yIHVzZV9kYXRldGltZQorICAgICAgICBzZWxmLl91c2VfYnl0ZXMgPSB1c2VfYnVpbHRpbl90eXBlcwogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAjIHJldHVybiByZXNwb25zZSB0dXBsZSBhbmQgdGFyZ2V0IG1ldGhvZApAQCAtNzUwLDYgKzc1OSw4IEBACiAgICAgZGVmIGVuZF9iYXNlNjQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHZhbHVlID0gQmluYXJ5KCkKICAgICAgICAgdmFsdWUuZGVjb2RlKGRhdGEuZW5jb2RlKCJhc2NpaSIpKQorICAgICAgICBpZiBzZWxmLl91c2VfYnl0ZXM6CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRhdGEKICAgICAgICAgc2VsZi5hcHBlbmQodmFsdWUpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gMAogICAgIGRpc3BhdGNoWyJiYXNlNjQiXSA9IGVuZF9iYXNlNjQKQEAgLTg2MSwyMyArODcyLDI2IEBACiAjCiAjIHJldHVybiBBIChwYXJzZXIsIHVubWFyc2hhbGxlcikgdHVwbGUuCiAKLWRlZiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPUZhbHNlKToKK2RlZiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgIiIiZ2V0cGFyc2VyKCkgLT4gcGFyc2VyLCB1bm1hcnNoYWxsZXIKIAogICAgIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgZmFzdGVzdCBhdmFpbGFibGUgcGFyc2VyLCBhbmQgYXR0YWNoIGl0CiAgICAgdG8gYW4gdW5tYXJzaGFsbGluZyBvYmplY3QuICBSZXR1cm4gYm90aCBvYmplY3RzLgogICAgICIiIgotICAgIGlmIHVzZV9kYXRldGltZSBhbmQgbm90IGRhdGV0aW1lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgZGF0ZXRpbWUgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKQogICAgIGlmIEZhc3RQYXJzZXIgYW5kIEZhc3RVbm1hcnNoYWxsZXI6Ci0gICAgICAgIGlmIHVzZV9kYXRldGltZToKKyAgICAgICAgaWYgdXNlX2J1aWx0aW5fdHlwZXM6CiAgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKKyAgICAgICAgICAgIG1rYnl0ZXMgPSBiYXNlNjQuZGVjb2RlYnl0ZXMKKyAgICAgICAgZWxpZiB1c2VfZGF0ZXRpbWU6CisgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKKyAgICAgICAgICAgIG1rYnl0ZXMgPSBfYmluYXJ5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lCi0gICAgICAgIHRhcmdldCA9IEZhc3RVbm1hcnNoYWxsZXIoVHJ1ZSwgRmFsc2UsIF9iaW5hcnksIG1rZGF0ZXRpbWUsIEZhdWx0KQorICAgICAgICAgICAgbWtieXRlcyA9IF9iaW5hcnkKKyAgICAgICAgdGFyZ2V0ID0gRmFzdFVubWFyc2hhbGxlcihUcnVlLCBGYWxzZSwgbWtieXRlcywgbWtkYXRldGltZSwgRmF1bHQpCiAgICAgICAgIHBhcnNlciA9IEZhc3RQYXJzZXIodGFyZ2V0KQogICAgIGVsc2U6Ci0gICAgICAgIHRhcmdldCA9IFVubWFyc2hhbGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgICAgICB0YXJnZXQgPSBVbm1hcnNoYWxsZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSwgdXNlX2J1aWx0aW5fdHlwZXM9dXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIGlmIEZhc3RQYXJzZXI6CiAgICAgICAgICAgICBwYXJzZXIgPSBGYXN0UGFyc2VyKHRhcmdldCkKICAgICAgICAgZWxzZToKQEAgLTkxNSw3ICs5MjksNyBAQAogCiAgICAgICAgIGVuY29kaW5nOiB0aGUgcGFja2V0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVURi04KQogCi0gICAgQWxsIDgtYml0IHN0cmluZ3MgaW4gdGhlIGRhdGEgc3RydWN0dXJlIGFyZSBhc3N1bWVkIHRvIHVzZSB0aGUKKyAgICBBbGwgYnl0ZSBzdHJpbmdzIGluIHRoZSBkYXRhIHN0cnVjdHVyZSBhcmUgYXNzdW1lZCB0byB1c2UgdGhlCiAgICAgcGFja2V0IGVuY29kaW5nLiAgVW5pY29kZSBzdHJpbmdzIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCwKICAgICB3aGVyZSBuZWNlc3NhcnkuCiAgICAgIiIiCkBAIC05NzQsNyArOTg4LDcgQEAKICMgICAgIChOb25lIGlmIG5vdCBwcmVzZW50KS4KICMgQHNlZSBGYXVsdAogCi1kZWYgbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlKToKK2RlZiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAiIiJkYXRhIC0+IHVubWFyc2hhbGxlZCBkYXRhLCBtZXRob2QgbmFtZQogCiAgICAgQ29udmVydCBhbiBYTUwtUlBDIHBhY2tldCB0byB1bm1hcnNoYWxsZWQgZGF0YSBwbHVzIGEgbWV0aG9kCkBAIC05ODMsNyArOTk3LDcgQEAKICAgICBJZiB0aGUgWE1MLVJQQyBwYWNrZXQgcmVwcmVzZW50cyBhIGZhdWx0IGNvbmRpdGlvbiwgdGhpcyBmdW5jdGlvbgogICAgIHJhaXNlcyBhIEZhdWx0IGV4Y2VwdGlvbi4KICAgICAiIiIKLSAgICBwLCB1ID0gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUpCisgICAgcCwgdSA9IGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLCB1c2VfYnVpbHRpbl90eXBlcz11c2VfYnVpbHRpbl90eXBlcykKICAgICBwLmZlZWQoZGF0YSkKICAgICBwLmNsb3NlKCkKICAgICByZXR1cm4gdS5jbG9zZSgpLCB1LmdldG1ldGhvZG5hbWUoKQpAQCAtMTA4NSw3ICsxMDk5LDcgQEAKICAgICAiIiJIYW5kbGVzIGFuIEhUVFAgdHJhbnNhY3Rpb24gdG8gYW4gWE1MLVJQQyBzZXJ2ZXIuIiIiCiAKICAgICAjIGNsaWVudCBpZGVudGlmaWVyIChtYXkgYmUgb3ZlcnJpZGRlbikKLSAgICB1c2VyX2FnZW50ID0gInhtbHJwY2xpYi5weS8lcyAoYnkgd3d3LnB5dGhvbndhcmUuY29tKSIgJSBfX3ZlcnNpb25fXworICAgIHVzZXJfYWdlbnQgPSAiUHl0aG9uLXhtbHJwYy8lcyIgJSBfX3ZlcnNpb25fXwogCiAgICAgI2lmIHRydWUsIHdlJ2xsIHJlcXVlc3QgZ3ppcCBlbmNvZGluZwogICAgIGFjY2VwdF9nemlwX2VuY29kaW5nID0gVHJ1ZQpAQCAtMTA5NSw4ICsxMTA5LDkgQEAKICAgICAjIHRoYXQgdGhleSBjYW4gZGVjb2RlIHN1Y2ggYSByZXF1ZXN0CiAgICAgZW5jb2RlX3RocmVzaG9sZCA9IE5vbmUgI05vbmUgPSBkb24ndCBlbmNvZGUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2RhdGV0aW1lCisgICAgICAgIHNlbGYuX3VzZV9idWlsdGluX3R5cGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKICAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IChOb25lLCBOb25lKQogICAgICAgICBzZWxmLl9leHRyYV9oZWFkZXJzID0gW10KIApAQCAtMTE1Nyw3ICsxMTcyLDggQEAKIAogICAgIGRlZiBnZXRwYXJzZXIoc2VsZik6CiAgICAgICAgICMgZ2V0IHBhcnNlciBhbmQgdW5tYXJzaGFsbGVyCi0gICAgICAgIHJldHVybiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXNlbGYuX3VzZV9kYXRldGltZSkKKyAgICAgICAgcmV0dXJuIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9c2VsZi5fdXNlX2RhdGV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXNlbGYuX3VzZV9idWlsdGluX3R5cGVzKQogCiAgICAgIyMKICAgICAjIEdldCBhdXRob3JpemF0aW9uIGluZm8gZnJvbSBob3N0IHBhcmFtZXRlcgpAQCAtMTE3NSw3ICsxMTkxLDYgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShob3N0LCB0dXBsZSk6CiAgICAgICAgICAgICBob3N0LCB4NTA5ID0gaG9zdAogCi0gICAgICAgIGltcG9ydCB1cmxsaWIucGFyc2UKICAgICAgICAgYXV0aCwgaG9zdCA9IHVybGxpYi5wYXJzZS5zcGxpdHVzZXIoaG9zdCkKIAogICAgICAgICBpZiBhdXRoOgpAQCAtMTM2NCwxMSArMTM3OSwxMCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaSwgdHJhbnNwb3J0PU5vbmUsIGVuY29kaW5nPU5vbmUsIHZlcmJvc2U9RmFsc2UsCi0gICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSk6CisgICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICAjIGVzdGFibGlzaCBhICJsb2dpY2FsIiBzZXJ2ZXIgY29ubmVjdGlvbgogCiAgICAgICAgICMgZ2V0IHRoZSB1cmwKLSAgICAgICAgaW1wb3J0IHVybGxpYi5wYXJzZQogICAgICAgICB0eXBlLCB1cmkgPSB1cmxsaWIucGFyc2Uuc3BsaXR0eXBlKHVyaSkKICAgICAgICAgaWYgdHlwZSBub3QgaW4gKCJodHRwIiwgImh0dHBzIik6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJ1bnN1cHBvcnRlZCBYTUwtUlBDIHByb3RvY29sIikKQEAgLTEzNzgsOSArMTM5MiwxMSBAQAogCiAgICAgICAgIGlmIHRyYW5zcG9ydCBpcyBOb25lOgogICAgICAgICAgICAgaWYgdHlwZSA9PSAiaHR0cHMiOgotICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IFNhZmVUcmFuc3BvcnQodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gU2FmZVRyYW5zcG9ydAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cmFuc3BvcnQgPSBUcmFuc3BvcnQodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gVHJhbnNwb3J0CisgICAgICAgICAgICB0cmFuc3BvcnQgPSBoYW5kbGVyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzZWxmLl9fdHJhbnNwb3J0ID0gdHJhbnNwb3J0CiAKICAgICAgICAgc2VsZi5fX2VuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JwpkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9zZXJ2ZXIucHkgYi9MaWIveG1scnBjL3NlcnZlci5weQppbmRleCBmZDE3MDI2Li41NGUxNzI2IDEwMDY0NAotLS0gYS9MaWIveG1scnBjL3NlcnZlci5weQorKysgYi9MaWIveG1scnBjL3NlcnZlci5weQpAQCAtMTYwLDExICsxNjAsMTMgQEAKICAgICBjYW4gYmUgaW5zdGFuY2VkIHdoZW4gdXNlZCBieSB0aGUgTXVsdGlQYXRoWE1MUlBDU2VydmVyCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsCisgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5mdW5jcyA9IHt9CiAgICAgICAgIHNlbGYuaW5zdGFuY2UgPSBOb25lCiAgICAgICAgIHNlbGYuYWxsb3dfbm9uZSA9IGFsbG93X25vbmUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nIG9yICd1dGYtOCcKKyAgICAgICAgc2VsZi51c2VfYnVpbHRpbl90eXBlcyA9IHVzZV9idWlsdGluX3R5cGVzCiAKICAgICBkZWYgcmVnaXN0ZXJfaW5zdGFuY2Uoc2VsZiwgaW5zdGFuY2UsIGFsbG93X2RvdHRlZF9uYW1lcz1GYWxzZSk6CiAgICAgICAgICIiIlJlZ2lzdGVycyBhbiBpbnN0YW5jZSB0byByZXNwb25kIHRvIFhNTC1SUEMgcmVxdWVzdHMuCkBAIC0yNDUsNyArMjQ3LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGFyYW1zLCBtZXRob2QgPSBsb2FkcyhkYXRhKQorICAgICAgICAgICAgcGFyYW1zLCBtZXRob2QgPSBsb2FkcyhkYXRhLCB1c2VfYnVpbHRpbl90eXBlcz1zZWxmLnVzZV9idWlsdGluX3R5cGVzKQogCiAgICAgICAgICAgICAjIGdlbmVyYXRlIHJlc3BvbnNlCiAgICAgICAgICAgICBpZiBkaXNwYXRjaF9tZXRob2QgaXMgbm90IE5vbmU6CkBAIC01NzUsMTAgKzU3NywxMSBAQAogICAgIF9zZW5kX3RyYWNlYmFja19oZWFkZXIgPSBGYWxzZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLmxvZ1JlcXVlc3RzID0gbG9nUmVxdWVzdHMKIAotICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nKQorICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nLCB1c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgYmluZF9hbmRfYWN0aXZhdGUpCiAKICAgICAgICAgIyBbQnVnICMxMjIyNzkwXSBJZiBwb3NzaWJsZSwgc2V0IGNsb3NlLW9uLWV4ZWMgZmxhZzsgaWYgYQpAQCAtNTk4LDEwICs2MDEsMTEgQEAKICAgICBNYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdEhhbmRsZXIgYWNjZXB0cyB0aGUgcGF0aHMgaW4gcXVlc3Rpb24uCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogCiAgICAgICAgIFNpbXBsZVhNTFJQQ1NlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHMsIGFsbG93X25vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUsIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzZWxmLmRpc3BhdGNoZXJzID0ge30KICAgICAgICAgc2VsZi5hbGxvd19ub25lID0gYWxsb3dfbm9uZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JwpAQCAtNjMxLDggKzYzNSw4IEBACiBjbGFzcyBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcihTaW1wbGVYTUxSUENEaXNwYXRjaGVyKToKICAgICAiIiJTaW1wbGUgaGFuZGxlciBmb3IgWE1MLVJQQyBkYXRhIHBhc3NlZCB0aHJvdWdoIENHSS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBhbGxvd19ub25lLCBlbmNvZGluZykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgorICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nLCB1c2VfYnVpbHRpbl90eXBlcykKIAogICAgIGRlZiBoYW5kbGVfeG1scnBjKHNlbGYsIHJlcXVlc3RfdGV4dCk6CiAgICAgICAgICIiIkhhbmRsZSBhIHNpbmdsZSBYTUwtUlBDIHJlcXVlc3QiIiIKQEAgLTkyNyw5ICs5MzEsMTAgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlciwKICAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgU2ltcGxlWE1MUlBDU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyLCBsb2dSZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmUsIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmUsIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBYTUxSUENEb2NHZW5lcmF0b3IuX19pbml0X18oc2VsZikKIAogY2xhc3MgRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoICAgQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIsCkBAIC05NTksOCArOTY0LDEzIEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwcmludCgnUnVubmluZyBYTUwtUlBDIHNlcnZlciBvbiBwb3J0IDgwMDAnKQogICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQogICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCiAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCisgICAgdHJ5OgorICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHN5cy5leGl0KDApCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDQzNWEzZTkuLjIwOWRjNGEgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC0yMiw3ICsyMiwxOCBAQAogICAgIHpsaWIgPSBOb25lCiAgICAgY3JjMzIgPSBiaW5hc2NpaS5jcmMzMgogCi1fX2FsbF9fID0gWyJCYWRaaXBGaWxlIiwgIkJhZFppcGZpbGUiLCAiZXJyb3IiLCAiWklQX1NUT1JFRCIsICJaSVBfREVGTEFURUQiLAordHJ5OgorICAgIGltcG9ydCBiejIgIyBXZSBtYXkgbmVlZCBpdHMgY29tcHJlc3Npb24gbWV0aG9kCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEgIyBXZSBtYXkgbmVlZCBpdHMgY29tcHJlc3Npb24gbWV0aG9kCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbHptYSA9IE5vbmUKKworX19hbGxfXyA9IFsiQmFkWmlwRmlsZSIsICJCYWRaaXBmaWxlIiwgImVycm9yIiwKKyAgICAgICAgICAgIlpJUF9TVE9SRUQiLCAiWklQX0RFRkxBVEVEIiwgIlpJUF9CWklQMiIsICJaSVBfTFpNQSIsCiAgICAgICAgICAgICJpc196aXBmaWxlIiwgIlppcEluZm8iLCAiWmlwRmlsZSIsICJQeVppcEZpbGUiLCAiTGFyZ2VaaXBGaWxlIl0KIAogY2xhc3MgQmFkWmlwRmlsZShFeGNlcHRpb24pOgpAQCAtNDUsOCArNTYsMTcgQEAKICMgY29uc3RhbnRzIGZvciBaaXAgZmlsZSBjb21wcmVzc2lvbiBtZXRob2RzCiBaSVBfU1RPUkVEID0gMAogWklQX0RFRkxBVEVEID0gOAorWklQX0JaSVAyID0gMTIKK1pJUF9MWk1BID0gMTQKICMgT3RoZXIgWklQIGNvbXByZXNzaW9uIG1ldGhvZHMgbm90IHN1cHBvcnRlZAogCitERUZBVUxUX1ZFUlNJT04gPSAyMAorWklQNjRfVkVSU0lPTiA9IDQ1CitCWklQMl9WRVJTSU9OID0gNDYKK0xaTUFfVkVSU0lPTiA9IDYzCisjIHdlIHJlY29nbml6ZSAoYnV0IG5vdCBuZWNlc3NhcmlseSBzdXBwb3J0KSBhbGwgZmVhdHVyZXMgdXAgdG8gdGhhdCB2ZXJzaW9uCitNQVhfRVhUUkFDVF9WRVJTSU9OID0gNjMKKwogIyBCZWxvdyBhcmUgc29tZSBmb3JtYXRzIGFuZCBhc3NvY2lhdGVkIGRhdGEgZm9yIHJlYWRpbmcvd3JpdGluZyBoZWFkZXJzIHVzaW5nCiAjIHRoZSBzdHJ1Y3QgbW9kdWxlLiAgVGhlIG5hbWVzIGFuZCBzdHJ1Y3R1cmVzIG9mIGhlYWRlcnMvcmVjb3JkcyBhcmUgdGhvc2UgdXNlZAogIyBpbiB0aGUgUEtXQVJFIGRlc2NyaXB0aW9uIG9mIHRoZSBaSVAgZmlsZSBmb3JtYXQ6CkBAIC0zMTMsOCArMzMzLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSBpcyB1bml4LXkKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3N5c3RlbSA9IDMgICAgICAgICAgIyBTeXN0ZW0gd2hpY2ggY3JlYXRlZCBaSVAgYXJjaGl2ZQotICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gMjAgICAgICAgICMgVmVyc2lvbiB3aGljaCBjcmVhdGVkIFpJUCBhcmNoaXZlCi0gICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uID0gMjAgICAgICAgIyBWZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0IGFyY2hpdmUKKyAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IERFRkFVTFRfVkVSU0lPTiAgIyBWZXJzaW9uIHdoaWNoIGNyZWF0ZWQgWklQIGFyY2hpdmUKKyAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBERUZBVUxUX1ZFUlNJT04gIyBWZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0IGFyY2hpdmUKICAgICAgICAgc2VsZi5yZXNlcnZlZCA9IDAgICAgICAgICAgICAgICAjIE11c3QgYmUgemVybwogICAgICAgICBzZWxmLmZsYWdfYml0cyA9IDAgICAgICAgICAgICAgICMgWklQIGZsYWcgYml0cwogICAgICAgICBzZWxmLnZvbHVtZSA9IDAgICAgICAgICAgICAgICAgICMgVm9sdW1lIG51bWJlciBvZiBmaWxlIGhlYWRlcgpAQCAtMzQxLDYgKzM2MSw3IEBACiAKICAgICAgICAgZXh0cmEgPSBzZWxmLmV4dHJhCiAKKyAgICAgICAgbWluX3ZlcnNpb24gPSAwCiAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKICAgICAgICAgICAgICMgRmlsZSBpcyBsYXJnZXIgdGhhbiB3aGF0IGZpdHMgaW50byBhIDQgYnl0ZSBpbnRlZ2VyLAogICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gdGhlIFpJUDY0IGV4dGVuc2lvbgpAQCAtMzQ5LDkgKzM3MCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAxLCBzdHJ1Y3QuY2FsY3NpemUoZm10KS00LCBmaWxlX3NpemUsIGNvbXByZXNzX3NpemUpCiAgICAgICAgICAgICBmaWxlX3NpemUgPSAweGZmZmZmZmZmCiAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gMHhmZmZmZmZmZgotICAgICAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBtYXgoNDUsIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQotICAgICAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IG1heCg0NSwgc2VsZi5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IFpJUDY0X1ZFUlNJT04KIAorICAgICAgICBpZiBzZWxmLmNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgIGVsaWYgc2VsZi5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgc2VsZi5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHNlbGYuY3JlYXRlX3ZlcnNpb24pCiAgICAgICAgIGZpbGVuYW1lLCBmbGFnX2JpdHMgPSBzZWxmLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKICAgICAgICAgaGVhZGVyID0gc3RydWN0LnBhY2soc3RydWN0RmlsZUhlYWRlciwgc3RyaW5nRmlsZUhlYWRlciwKICAgICAgICAgICAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24sIHNlbGYucmVzZXJ2ZWQsIGZsYWdfYml0cywKQEAgLTQ2MSw2ICs0ODgsMTI2IEBACiAgICAgICAgIHNlbGYuX1VwZGF0ZUtleXMoYykKICAgICAgICAgcmV0dXJuIGMKIAorCitjbGFzcyBMWk1BQ29tcHJlc3NvcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fY29tcCA9IE5vbmUKKworICAgIGRlZiBfaW5pdChzZWxmKToKKyAgICAgICAgcHJvcHMgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeydpZCc6IGx6bWEuRklMVEVSX0xaTUExfSkKKyAgICAgICAgc2VsZi5fY29tcCA9IGx6bWEuTFpNQUNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPVsKKyAgICAgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfTFpNQTEsIHByb3BzKQorICAgICAgICBdKQorICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJzxCQkgnLCA5LCA0LCBsZW4ocHJvcHMpKSArIHByb3BzCisKKyAgICBkZWYgY29tcHJlc3Moc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIHNlbGYuX2NvbXAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbml0KCkgKyBzZWxmLl9jb21wLmNvbXByZXNzKGRhdGEpCisgICAgICAgIHJldHVybiBzZWxmLl9jb21wLmNvbXByZXNzKGRhdGEpCisKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2NvbXAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbml0KCkgKyBzZWxmLl9jb21wLmZsdXNoKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXAuZmx1c2goKQorCisKK2NsYXNzIExaTUFEZWNvbXByZXNzb3I6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2RlY29tcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLmVvZiA9IEZhbHNlCisKKyAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgc2VsZi5fZGVjb21wIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkICs9IGRhdGEKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl91bmNvbnN1bWVkKSA8PSA0OgorICAgICAgICAgICAgICAgIHJldHVybiBiJycKKyAgICAgICAgICAgIHBzaXplLCA9IHN0cnVjdC51bnBhY2soJzxIJywgc2VsZi5fdW5jb25zdW1lZFsyOjRdKQorICAgICAgICAgICAgaWYgbGVuKHNlbGYuX3VuY29uc3VtZWQpIDw9IDQgKyBwc2l6ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisKKyAgICAgICAgICAgIHNlbGYuX2RlY29tcCA9IGx6bWEuTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9WworICAgICAgICAgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfTFpNQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZFs0OjQgKyBwc2l6ZV0pCisgICAgICAgICAgICBdKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3VuY29uc3VtZWRbNCArIHBzaXplOl0KKyAgICAgICAgICAgIGRlbCBzZWxmLl91bmNvbnN1bWVkCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVjb21wLmRlY29tcHJlc3MoZGF0YSkKKyAgICAgICAgc2VsZi5lb2YgPSBzZWxmLl9kZWNvbXAuZW9mCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitjb21wcmVzc29yX25hbWVzID0geworICAgIDA6ICdzdG9yZScsCisgICAgMTogJ3NocmluaycsCisgICAgMjogJ3JlZHVjZScsCisgICAgMzogJ3JlZHVjZScsCisgICAgNDogJ3JlZHVjZScsCisgICAgNTogJ3JlZHVjZScsCisgICAgNjogJ2ltcGxvZGUnLAorICAgIDc6ICd0b2tlbml6ZScsCisgICAgODogJ2RlZmxhdGUnLAorICAgIDk6ICdkZWZsYXRlNjQnLAorICAgIDEwOiAnaW1wbG9kZScsCisgICAgMTI6ICdiemlwMicsCisgICAgMTQ6ICdsem1hJywKKyAgICAxODogJ3RlcnNlJywKKyAgICAxOTogJ2x6NzcnLAorICAgIDk3OiAnd2F2cGFjaycsCisgICAgOTg6ICdwcG1kJywKK30KKworZGVmIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbik6CisgICAgaWYgY29tcHJlc3Npb24gPT0gWklQX1NUT1JFRDoKKyAgICAgICAgcGFzcworICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0RFRkxBVEVEOgorICAgICAgICBpZiBub3QgemxpYjoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQorICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0JaSVAyOgorICAgICAgICBpZiBub3QgYnoyOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ29tcHJlc3Npb24gcmVxdWlyZXMgdGhlIChtaXNzaW5nKSBiejIgbW9kdWxlIikKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9MWk1BOgorICAgICAgICBpZiBub3QgbHptYToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgbHptYSBtb2R1bGUiKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisKKworZGVmIF9nZXRfY29tcHJlc3Nvcihjb21wcmVzc190eXBlKToKKyAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgcmV0dXJuIHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLTE1KQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgIHJldHVybiBiejIuQloyQ29tcHJlc3NvcigpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICByZXR1cm4gTFpNQUNvbXByZXNzb3IoKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKworZGVmIF9nZXRfZGVjb21wcmVzc29yKGNvbXByZXNzX3R5cGUpOgorICAgIGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICByZXR1cm4gemxpYi5kZWNvbXByZXNzb2JqKC0xNSkKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gYnoyLkJaMkRlY29tcHJlc3NvcigpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICByZXR1cm4gTFpNQURlY29tcHJlc3NvcigpCisgICAgZWxzZToKKyAgICAgICAgZGVzY3IgPSBjb21wcmVzc29yX25hbWVzLmdldChjb21wcmVzc190eXBlKQorICAgICAgICBpZiBkZXNjcjoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQgKCVzKSIgJSAoY29tcHJlc3NfdHlwZSwgZGVzY3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCIgJSAoY29tcHJlc3NfdHlwZSwpKQorCisKIGNsYXNzIFppcEV4dEZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgogICAgICIiIkZpbGUtbGlrZSBvYmplY3QgZm9yIHJlYWRpbmcgYW4gYXJjaGl2ZSBtZW1iZXIuCiAgICAgICAgSXMgcmV0dXJuZWQgYnkgWmlwRmlsZS5vcGVuKCkuCkBAIC00ODIsMTMgKzYyOSwxMiBAQAogICAgICAgICBzZWxmLl9jbG9zZV9maWxlb2JqID0gY2xvc2VfZmlsZW9iagogCiAgICAgICAgIHNlbGYuX2NvbXByZXNzX3R5cGUgPSB6aXBpbmZvLmNvbXByZXNzX3R5cGUKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSA9IHppcGluZm8uY29tcHJlc3Nfc2l6ZQogICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0ID0gemlwaW5mby5jb21wcmVzc19zaXplCisgICAgICAgIHNlbGYuX2xlZnQgPSB6aXBpbmZvLmZpbGVfc2l6ZQogCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gemxpYi5kZWNvbXByZXNzb2JqKC0xNSkKLSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBfZ2V0X2RlY29tcHJlc3NvcihzZWxmLl9jb21wcmVzc190eXBlKQogCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCkBAIC01NjMsNyArNzA5LDExIEBACiAgICAgICAgICIiIlJldHVybnMgYnVmZmVyZWQgYnl0ZXMgd2l0aG91dCBhZHZhbmNpbmcgdGhlIHBvc2l0aW9uLiIiIgogICAgICAgICBpZiBuID4gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0OgogICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJlYWQobikKLSAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCisgICAgICAgICAgICBpZiBsZW4oY2h1bmspID4gc2VsZi5fb2Zmc2V0OgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBjaHVuayArIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0KKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCiAKICAgICAgICAgIyBSZXR1cm4gdXAgdG8gNTEyIGJ5dGVzIHRvIHJlZHVjZSBhbGxvY2F0aW9uIG92ZXJoZWFkIGZvciB0aWdodCBsb29wcy4KICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0OiBzZWxmLl9vZmZzZXQgKyA1MTJdCkBAIC01NzUsODAgKzcyNSwxMjMgQEAKICAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHVwIHRvIG4gYnl0ZXMuCiAgICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4uCiAgICAgICAgICIiIgotICAgICAgICBidWYgPSBiJycKLSAgICAgICAgaWYgbiBpcyBOb25lOgotICAgICAgICAgICAgbiA9IC0xCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBuIDwgMDoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShuKQotICAgICAgICAgICAgZWxpZiBuID4gbGVuKGJ1Zik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZDEobiAtIGxlbihidWYpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBidWYgKz0gZGF0YQorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fZW9mOgorICAgICAgICAgICAgICAgIGJ1ZiArPSBzZWxmLl9yZWFkMShzZWxmLk1BWF9OKQorICAgICAgICAgICAgcmV0dXJuIGJ1ZgogCi0gICAgZGVmIF91cGRhdGVfY3JjKHNlbGYsIG5ld2RhdGEsIGVvZik6CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICB3aGlsZSBuID4gMCBhbmQgbm90IHNlbGYuX2VvZjoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBidWYgKz0gZGF0YVs6bl0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVmICs9IGRhdGEKKyAgICAgICAgICAgIG4gLT0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfdXBkYXRlX2NyYyhzZWxmLCBuZXdkYXRhKToKICAgICAgICAgIyBVcGRhdGUgdGhlIENSQyB1c2luZyB0aGUgZ2l2ZW4gZGF0YS4KICAgICAgICAgaWYgc2VsZi5fZXhwZWN0ZWRfY3JjIGlzIE5vbmU6CiAgICAgICAgICAgICAjIE5vIG5lZWQgdG8gY29tcHV0ZSB0aGUgQ1JDIGlmIHdlIGRvbid0IGhhdmUgYSByZWZlcmVuY2UgdmFsdWUKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKG5ld2RhdGEsIHNlbGYuX3J1bm5pbmdfY3JjKSAmIDB4ZmZmZmZmZmYKICAgICAgICAgIyBDaGVjayB0aGUgQ1JDIGlmIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKLSAgICAgICAgaWYgZW9mIGFuZCBzZWxmLl9ydW5uaW5nX2NyYyAhPSBzZWxmLl9leHBlY3RlZF9jcmM6CisgICAgICAgIGlmIHNlbGYuX2VvZiBhbmQgc2VsZi5fcnVubmluZ19jcmMgIT0gc2VsZi5fZXhwZWN0ZWRfY3JjOgogICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQmFkIENSQy0zMiBmb3IgZmlsZSAlciIgJSBzZWxmLm5hbWUpCiAKICAgICBkZWYgcmVhZDEoc2VsZiwgbik6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gbiBieXRlcyB3aXRoIGF0IG1vc3Qgb25lIHJlYWQoKSBzeXN0ZW0gY2FsbC4iIiIKIAotICAgICAgICAjIFNpbXBsaWZ5IGFsZ29yaXRobSAoYnJhbmNoaW5nKSBieSB0cmFuc2Zvcm1pbmcgbmVnYXRpdmUgbiB0byBsYXJnZSBuLgotICAgICAgICBpZiBuIDwgMCBvciBuIGlzIE5vbmU6Ci0gICAgICAgICAgICBuID0gc2VsZi5NQVhfTgorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEoc2VsZi5NQVhfTikKKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgICAgICByZXR1cm4gYnVmCiAKLSAgICAgICAgIyBCeXRlcyBhdmFpbGFibGUgaW4gcmVhZCBidWZmZXIuCi0gICAgICAgIGxlbl9yZWFkYnVmZmVyID0gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICBpZiBuID4gMDoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVs6bl0KKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfcmVhZDEoc2VsZiwgbik6CisgICAgICAgICMgUmVhZCB1cCB0byBuIGNvbXByZXNzZWQgYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwsCisgICAgICAgICMgZGVjcnlwdCBhbmQgZGVjb21wcmVzcyB0aGVtLgorICAgICAgICBpZiBzZWxmLl9lb2Ygb3IgbiA8PSAwOgorICAgICAgICAgICAgcmV0dXJuIGInJwogCiAgICAgICAgICMgUmVhZCBmcm9tIGZpbGUuCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPiAwIGFuZCBuID4gbGVuX3JlYWRidWZmZXIgKyBsZW4oc2VsZi5fdW5jb25zdW1lZCk6Ci0gICAgICAgICAgICBuYnl0ZXMgPSBuIC0gbGVuX3JlYWRidWZmZXIgLSBsZW4oc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1heChuYnl0ZXMsIHNlbGYuTUlOX1JFQURfU0laRSkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1pbihuYnl0ZXMsIHNlbGYuX2NvbXByZXNzX2xlZnQpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICAgICAgIyMgSGFuZGxlIHVuY29uc3VtZWQgZGF0YS4KKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsCisgICAgICAgICAgICBpZiBuID4gbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fcmVhZDIobiAtIGxlbihkYXRhKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMihuKQogCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZW9iai5yZWFkKG5ieXRlcykKLSAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgLT0gbGVuKGRhdGEpCi0KLSAgICAgICAgICAgIGlmIGRhdGEgYW5kIHNlbGYuX2RlY3J5cHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfY3JjKGRhdGEsIGVvZj0oc2VsZi5fY29tcHJlc3NfbGVmdD09MCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFByZXBhcmUgZGVmbGF0ZWQgYnl0ZXMgZm9yIGRlY29tcHJlc3Npb24uCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCi0KLSAgICAgICAgIyBIYW5kbGUgdW5jb25zdW1lZCBkYXRhLgotICAgICAgICBpZiAobGVuKHNlbGYuX3VuY29uc3VtZWQpID4gMCBhbmQgbiA+IGxlbl9yZWFkYnVmZmVyIGFuZAotICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQsCi0gICAgICAgICAgICAgICAgbWF4KG4gLSBsZW5fcmVhZGJ1ZmZlciwgc2VsZi5NSU5fUkVBRF9TSVpFKQotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgZW9mID0gbGVuKHNlbGYuX3VuY29uc3VtZWQpID09IDAgYW5kIHNlbGYuX2NvbXByZXNzX2xlZnQgPT0gMAotICAgICAgICAgICAgaWYgZW9mOgorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKKyAgICAgICAgZWxpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgICAgIG4gPSBtYXgobiwgc2VsZi5NSU5fUkVBRF9TSVpFKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGRhdGEsIG4pCisgICAgICAgICAgICBzZWxmLl9lb2YgPSAoc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsKQorICAgICAgICAgICAgaWYgc2VsZi5fZW9mOgogICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fZW9mID0gc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvciBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKIAotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2NyYyhkYXRhLCBlb2Y9ZW9mKQotICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgIGRhdGEgPSBkYXRhWzpzZWxmLl9sZWZ0XQorICAgICAgICBzZWxmLl9sZWZ0IC09IGxlbihkYXRhKQorICAgICAgICBpZiBzZWxmLl9sZWZ0IDw9IDA6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCisgICAgICAgIHNlbGYuX3VwZGF0ZV9jcmMoZGF0YSkKKyAgICAgICAgcmV0dXJuIGRhdGEKIAotICAgICAgICAjIFJlYWQgZnJvbSBidWZmZXIuCi0gICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDogc2VsZi5fb2Zmc2V0ICsgbl0KLSAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihkYXRhKQorICAgIGRlZiBfcmVhZDIoc2VsZiwgbik6CisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPD0gMDoKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICBuID0gbWF4KG4sIHNlbGYuTUlOX1JFQURfU0laRSkKKyAgICAgICAgbiA9IG1pbihuLCBzZWxmLl9jb21wcmVzc19sZWZ0KQorCisgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlb2JqLnJlYWQobikKKyAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCAtPSBsZW4oZGF0YSkKKworICAgICAgICBpZiBzZWxmLl9kZWNyeXB0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBkYXRhCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CkBAIC02NjcsNyArODYwLDggQEAKICAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgICBJZiBpdCBpcyBhIHBhdGgsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGFuZCBjbG9zZWQgYnkgWmlwRmlsZS4KICAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4KLSAgICBjb21wcmVzc2lvbjogWklQX1NUT1JFRCAobm8gY29tcHJlc3Npb24pIG9yIFpJUF9ERUZMQVRFRCAocmVxdWlyZXMgemxpYikuCisgICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSwgWklQX0RFRkxBVEVEIChyZXF1aXJlcyB6bGliKSwKKyAgICAgICAgICAgICAgICAgWklQX0JaSVAyIChyZXF1aXJlcyBiejIpIG9yIFpJUF9MWk1BIChyZXF1aXJlcyBsem1hKS4KICAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgICAgICAgICAgICAgICBuZWVkZWQsIG90aGVyd2lzZSBpdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoaXMgd291bGQKICAgICAgICAgICAgICAgICBiZSBuZWNlc3NhcnkuCkBAIC02ODEsMTQgKzg3NSw3IEBACiAgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgImEiKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignWmlwRmlsZSgpIHJlcXVpcmVzIG1vZGUgInIiLCAidyIsIG9yICJhIicpCiAKLSAgICAgICAgaWYgY29tcHJlc3Npb24gPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfREVGTEFURUQ6Ci0gICAgICAgICAgICBpZiBub3QgemxpYjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKQogCiAgICAgICAgIHNlbGYuX2FsbG93WmlwNjQgPSBhbGxvd1ppcDY0CiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IEZhbHNlCkBAIC04MTQsNiArMTAwMSw5IEBACiAgICAgICAgICAgICAoeC5jcmVhdGVfdmVyc2lvbiwgeC5jcmVhdGVfc3lzdGVtLCB4LmV4dHJhY3RfdmVyc2lvbiwgeC5yZXNlcnZlZCwKICAgICAgICAgICAgICAgICB4LmZsYWdfYml0cywgeC5jb21wcmVzc190eXBlLCB0LCBkLAogICAgICAgICAgICAgICAgIHguQ1JDLCB4LmNvbXByZXNzX3NpemUsIHguZmlsZV9zaXplKSA9IGNlbnRkaXJbMToxMl0KKyAgICAgICAgICAgIGlmIHguZXh0cmFjdF92ZXJzaW9uID4gTUFYX0VYVFJBQ1RfVkVSU0lPTjoKKyAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJ6aXAgZmlsZSB2ZXJzaW9uICUuMWYiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LmV4dHJhY3RfdmVyc2lvbiAvIDEwKSkKICAgICAgICAgICAgIHgudm9sdW1lLCB4LmludGVybmFsX2F0dHIsIHguZXh0ZXJuYWxfYXR0ciA9IGNlbnRkaXJbMTU6MThdCiAgICAgICAgICAgICAjIENvbnZlcnQgZGF0ZS90aW1lIGNvZGUgdG8gKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjKQogICAgICAgICAgICAgeC5fcmF3X3RpbWUgPSB0CkBAIC04MzYsMTAgKzEwMjYsNyBAQAogCiAgICAgZGVmIG5hbWVsaXN0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZpbGUgbmFtZXMgaW4gdGhlIGFyY2hpdmUuIiIiCi0gICAgICAgIGwgPSBbXQotICAgICAgICBmb3IgZGF0YSBpbiBzZWxmLmZpbGVsaXN0OgotICAgICAgICAgICAgbC5hcHBlbmQoZGF0YS5maWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGwKKyAgICAgICAgcmV0dXJuIFtkYXRhLmZpbGVuYW1lIGZvciBkYXRhIGluIHNlbGYuZmlsZWxpc3RdCiAKICAgICBkZWYgaW5mb2xpc3Qoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY2xhc3MgWmlwSW5mbyBpbnN0YW5jZXMgZm9yIGZpbGVzIGluIHRoZQpAQCAtOTUwLDYgKzExMzcsMTQgQEAKICAgICAgICAgaWYgZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXToKICAgICAgICAgICAgIHplZl9maWxlLnJlYWQoZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXSkKIAorICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDIwOgorICAgICAgICAgICAgIyBaaXAgMi43OiBjb21wcmVzc2VkIHBhdGNoZWQgZGF0YQorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3NlZCBwYXRjaGVkIGRhdGEgKGZsYWcgYml0IDUpIikKKworICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDQwOgorICAgICAgICAgICAgIyBzdHJvbmcgZW5jcnlwdGlvbgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3Ryb25nIGVuY3J5cHRpb24gKGZsYWcgYml0IDYpIikKKwogICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDgwMDoKICAgICAgICAgICAgICMgVVRGLTggZmlsZW5hbWUKICAgICAgICAgICAgIGZuYW1lX3N0ciA9IGZuYW1lLmRlY29kZSgidXRmLTgiKQpAQCAtMTA3MCwxMSArMTI2NSw3IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRCBhbmQgbm90IHpsaWI6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgICAiQ29tcHJlc3Npb24gcmVxdWlyZXMgdGhlIChtaXNzaW5nKSB6bGliIG1vZHVsZSIpCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgbm90IGluIChaSVBfU1RPUkVELCBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIGlmIHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93WmlwNjQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQpAQCAtMTExMiw2ICsxMzAzLDkgQEAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQogICAgICAgICB6aW5mby5mbGFnX2JpdHMgPSAweDAwCiAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQpAQCAtMTEyNSwxNyArMTMxOSwxMyBAQAogICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKCkpCiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICAjIE11c3Qgb3ZlcndyaXRlIENSQyBhbmQgc2l6ZXMgd2l0aCBjb3JyZWN0IGRhdGEgbGF0ZXIKICAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAogICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gZmlsZV9zaXplID0gMAogICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKCkpCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgICAgICBjbXByID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY21wciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgpAQCAtMTE4OCwxMyArMTM3OCwxNSBAQAogICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQogICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCiAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKICAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAotICAgICAgICAgICAgICAgICB6bGliLkRFRkxBVEVELCAtMTUpCisgICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgIGlmIGNvOgogICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQogICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQogICAgICAgICBlbHNlOgpAQCAtMTI0NiwxOCArMTQzOCwyMiBAQAogICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gemluZm8uaGVhZGVyX29mZnNldAogCiAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHppbmZvLmV4dHJhCisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSAwCiAgICAgICAgICAgICAgICAgaWYgZXh0cmE6CiAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGEgWklQNjQgZmllbGQgdG8gdGhlIGV4dHJhJ3MKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHN0cnVjdC5wYWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8SEgnICsgJ1EnKmxlbihleHRyYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQogCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IG1heCg0NSwgemluZm8uZXh0cmFjdF92ZXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IG1heCg0NSwgemluZm8uY3JlYXRlX3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gemluZm8uZXh0cmFjdF92ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gemluZm8uY3JlYXRlX3ZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChMWk1BX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorCisgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZsYWdfYml0cyA9IHppbmZvLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKICAgICAgICAgICAgICAgICAgICAgY2VudGRpciA9IHN0cnVjdC5wYWNrKHN0cnVjdENlbnRyYWxEaXIsCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CmluZGV4IGRlMmY1Y2IuLmZhMDRiOTcgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CkBAIC04LDcwICs4LDEyNSBAQAogYW4gSW5zdGFsbGVyIHBhY2thZ2UgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIHBsdXMgb3RoZXIgZmlsZXMgaW4gYGByZXNvdXJjZXNgYCAKIGFuZCBgYHNjcmlwdHNgYCBhbmQgcGxhY2VkIHRoYXQgb24gYSBgYC5kbWdgYCBkaXNrIGltYWdlLgogCi1BcyBvZiBQeXRob24gMi43LnggYW5kIDMuMiwgUFNGIHByYWN0aWNlIGlzIHRvIGJ1aWxkIHR3byBpbnN0YWxsZXIgdmFyaWFudHMKLWZvciBlYWNoIHJlbGVhc2U6CitBcyBvZiBQeXRob24gMy4zLjAsIFBTRiBwcmFjdGljZSBpcyB0byBidWlsZCB0d28gaW5zdGFsbGVyIHZhcmlhbnRzCitmb3IgZWFjaCByZWxlYXNlLgogCiAxLiAgMzItYml0LW9ubHksIGkzODYgYW5kIFBQQyB1bml2ZXJzYWwsIGNhcGFibGUgb24gcnVubmluZyBvbiBhbGwgbWFjaGluZXMKLSAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42OjoKKyAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuNSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuODo6CiAKLSAgICAgICAgcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCisgICAgICAgIC91c3IvYmluL3B5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAorICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsgXAorICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9MzItYml0IFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC41CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjE5KSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNS44IEludGVsIG9yIFBQQworICAgICAgICAqIFhjb2RlIDMuMS40CisgICAgICAgICogYGBNYWNPU1gxMC41YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNWBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogTWFjIE9TIFggMTAuNi44IHdpdGggWGNvZGUgMy4yLjYKKyAgICAgICAgICAgIC0gbmVlZCB0byBjaGFuZ2UgYGAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy97VGNsLFRrfS5mcmFtZXdvcmsvVmVyc2lvbi9DdXJyZW50YGAgdG8gYGA4LjRgYAorICAgICAgICAqIE5vdGUgWGNvZGUgNC4qIGRvZXMgbm90IHN1cHBvcnQgYnVpbGRpbmcgZm9yIFBQQyBzbyBjYW5ub3QgYmUgdXNlZCBmb3IgdGhpcyBidWlsZAorCisyLiAgNjQtYml0IC8gMzItYml0LCB4ODZfNjQgYW5kIGkzODYgdW5pdmVyc2FsLCBmb3IgT1MgWCAxMC42IChhbmQgbGF0ZXIpOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjYuc2RrIFwKKyAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPWludGVsIFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC42CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUuOSAob3IgbGF0ZXIpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKKworICAgIC0gcmVjb21tZW5kZWQgYnVpbGQgZW52aXJvbm1lbnQ6CisKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42LjggKG9yIGxhdGVyKQorICAgICAgICAqIFhjb2RlIDMuMi42CisgICAgICAgICogYGBNYWNPU1gxMC42YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNmBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNiBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogbm9uZS4gIFhjb2RlIDQueCBjdXJyZW50bHkgc3VwcGxpZXMgdHdvIEMgY29tcGlsZXJzLgorICAgICAgICAgIGBgbGx2bS1nY2MtNC4yLjFgYCBoYXMgYmVlbiBmb3VuZCB0byBtaXNjb21waWxlIFB5dGhvbiAzLjMueCBhbmQKKyAgICAgICAgICBwcm9kdWNlIGEgbm9uLWZ1bmN0aW9uYWwgUHl0aG9uIGV4ZWN1dGFibGUuICBBcyBpdCBhcHBlYXJzIHRvIGJlCisgICAgICAgICAgY29uc2lkZXJlZCBhIG1pZ3JhdGlvbiBhaWQgYnkgQXBwbGUgYW5kIGlzIG5vdCBsaWtlbHkgdG8gYmUgZml4ZWQsCisgICAgICAgICAgaXRzIHVzZSBzaG91bGQgYmUgYXZvaWRlZC4gIFRoZSBvdGhlciBjb21waWxlciwgYGBjbGFuZ2BgLCBoYXMgYmVlbgorICAgICAgICAgIHVuZGVyZ29pbmcgcmFwaWQgZGV2ZWxvcG1lbnQuICBXaGlsZSBpdCBhcHBlYXJzIHRvIGhhdmUgYmVjb21lCisgICAgICAgICAgcHJvZHVjdGlvbi1yZWFkeSBpbiB0aGUgbW9zdCByZWNlbnQgWGNvZGUgNCByZWxlYXNlcyAoWGNvZGUgNC40LjEKKyAgICAgICAgICBhcyBvZiB0aGlzIHdyaXRpbmcpLCB0aGVyZSBhcmUgc3RpbGwgc29tZSBvcGVuIGlzc3VlcyB3aGVuCisgICAgICAgICAgYnVpbGRpbmcgUHl0aG9uIGFuZCB0aGVyZSBoYXMgbm90IHlldCBiZWVuIHRoZSBsZXZlbCBvZiBleHBvc3VyZSBpbgorICAgICAgICAgIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHRoYXQgdGhlIFhjb2RlIDMgZ2NjLTQuMiBjb21waWxlciBoYXMgaGFkLgorCisKKyogICBGb3IgUHl0aG9uIDIuNy54IGFuZCAzLjIueCwgdGhlIDMyLWJpdC1vbmx5IGluc3RhbGxlciB3YXMgY29uZmlndXJlZCB0bworICAgIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42LiAgQmVjYXVzZSBpdCBpcworICAgIGJlbGlldmVkIHRoYXQgdGhlcmUgYXJlIGZldyBzeXN0ZW1zIHN0aWxsIHJ1bm5pbmcgT1MgWCAxMC4zIG9yIDEwLjQKKyAgICBhbmQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIGluY3JlYXNpbmdseSBkaWZmaWN1bHQgdG8gdGVzdCBhbmQKKyAgICBzdXBwb3J0IHRoZSBkaWZmZXJlbmNlcyBpbiB0aGVzZSBlYXJsaWVyIHN5c3RlbXMsIGFzIG9mIFB5dGhvbiAzLjMuMCB0aGUgUFNGCisgICAgMzItYml0IGluc3RhbGxlciBubyBsb25nZXIgc3VwcG9ydHMgdGhlbS4gIEZvciByZWZlcmVuY2UgaW4gYnVpbGRpbmcgc3VjaAorICAgIGFuIGluc3RhbGxlciB5b3Vyc2VsZiwgdGhlIGRldGFpbHMgYXJlOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKICAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayBcCiAgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz0zMi1iaXQgXAogICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjMgCi0gICAgICAgICAgICAjIFRoZXNlIGFyZSB0aGUgY3VycmVudCBkZWZhdWx0IG9wdGlvbnMKIAogICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKICAgICAgICAgKiBCemlwMgotICAgICAgICAqIFpsaWIgMS4yLjMKKyAgICAgICAgKiBOQ3Vyc2VzCiAgICAgICAgICogR05VIFJlYWRsaW5lIChHUEwpCiAgICAgICAgICogU1FMaXRlIDMKLSAgICAgICAgKiBOQ3Vyc2VzCisgICAgICAgICogWFoKKyAgICAgICAgKiBabGliIDEuMi4zCiAgICAgICAgICogT3JhY2xlIFNsZWVweWNhdCBEQiA0LjggKFB5dGhvbiAyLnggb25seSkKIAogICAgIC0gcmVxdWlyZXMgQWN0aXZlU3RhdGUgYGBUY2wvVGsgOC40YGAgKGN1cnJlbnRseSA4LjQuMTkpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKIAotICAgIC0gY3VycmVudCB0YXJnZXQgYnVpbGQgZW52aXJvbm1lbnQ6CisgICAgLSByZWNvbW1lbmRlZCBidWlsZCBlbnZpcm9ubWVudDoKICAgICAgICAgCiAgICAgICAgICogTWFjIE9TIFggMTAuNS44IFBQQyBvciBJbnRlbAogICAgICAgICAqIFhjb2RlIDMuMS40IChvciBsYXRlcikKICAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQogICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAogICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCi0gICAgICAgICogUHl0aG9uIDIubiAobiA+PSA0KSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorICAgICAgICAqIHN5c3RlbSBQeXRob24gMi41IGZvciBkb2N1bWVudGF0aW9uIGJ1aWxkIHdpdGggU3BoaW54CiAKICAgICAtIGFsdGVybmF0ZSBidWlsZCBlbnZpcm9ubWVudHM6CiAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC40LjExIHdpdGggWGNvZGUgMi41Ci0gICAgICAgICogTWFjIE9TIFggMTAuNi42IHdpdGggWGNvZGUgMy4yLjUKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42Ljggd2l0aCBYY29kZSAzLjIuNgogICAgICAgICAgICAgLSBuZWVkIHRvIGNoYW5nZSBgYC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL3tUY2wsVGt9LmZyYW1ld29yay9WZXJzaW9uL0N1cnJlbnRgYCB0byBgYDguNGBgCiAKLTIuICA2NC1iaXQgLyAzMi1iaXQsIHg4Nl82NCBhbmQgaTM4NiB1bml2ZXJzYWwsIGZvciBPUyBYIDEwLjYgKGFuZCBsYXRlcik6OgotCi0gICAgICAgIHB5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAotICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNi5zZGsgXAotICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9aW50ZWwgXAotICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjYKLQotICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCi0gICAgCi0gICAgICAgICogcmVhZGxpbmUgbW9kdWxlIGxpbmtzIHdpdGggQXBwbGUgQlNEIGVkaXRsaW5lIChsaWJlZGl0KQotICAgICAgICAqIGJ1aWxkcyBPcmFjbGUgU2xlZXB5Y2F0IERCIDQuOCAoUHl0aG9uIDIueCBvbmx5KQotCi0gICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LjkgKG9yIGxhdGVyKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCi0KLSAgICAtIGN1cnJlbnQgdGFyZ2V0IGJ1aWxkIGVudmlyb25tZW50OgotICAgICAgICAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC42LjYgKG9yIGxhdGVyKQotICAgICAgICAqIFhjb2RlIDMuMi41IChvciBsYXRlcikKLSAgICAgICAgKiBgYE1hY09TWDEwLjZgYCBTREsKLSAgICAgICAgKiBgYE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC42YGAKLSAgICAgICAgKiBBcHBsZSBgYGdjYy00LjJgYAotICAgICAgICAqIFB5dGhvbiAyLm4gKG4gPj0gNCkgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKLQotICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKLQotICAgICAgICAqIG5vbmUKIAogCiBHZW5lcmFsIFByZXJlcXVpc2l0ZXMKQEAgLTg3LDYgKzE0MiwxMSBAQAogKiBJdCBpcyBzYWZlc3QgdG8gc3RhcnQgZWFjaCB2YXJpYW50IGJ1aWxkIHdpdGggYW4gZW1wdHkgc291cmNlIGRpcmVjdG9yeQogICBwb3B1bGF0ZWQgd2l0aCBhIGZyZXNoIGNvcHkgb2YgdGhlIHVudGFycmVkIHNvdXJjZS4KIAorKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSByZW1vdmUgYW55IGV4aXN0aW5nIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZQorICBQeXRob24gYmVpbmcgYnVpbHQ6OgorCisgICAgICBzdWRvIHJtIC1yZiAvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvbi5uCisKIAogVGhlIFJlY2lwZQogLS0tLS0tLS0tLQpAQCAtMTA3LDkgKzE2Nyw5IEBACiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGJ1aWxkIGEgNC13YXkgdW5pdmVyc2FsIGluc3RhbGxlciB0aGF0IHJ1bnMgb24gCi1PUyBYIExlb3BhcmQgb3IgbGF0ZXI6OgorT1MgWCAxMC41IExlb3BhcmQgb3IgbGF0ZXI6OgogCi0gIHB5dGhvbiAyLjYgL2J1aWxkLWluc3RhbGxlci5weSBcCisgICAgL3Vzci9iaW4vcHl0aG9uIC9idWlsZC1pbnN0YWxsZXIucHkgXAogICAgICAgICAtLWRlcC10YXJnZXQ9MTAuNQogICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz1hbGwKICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsKQEAgLTEyMCw3ICsxODAsOCBAQAogdmFyaWFudHMgY2FuIG9ubHkgYmUgcnVuIG9uIEc1IG1hY2hpbmVzIHJ1bm5pbmcgMTAuNS4gIE5vdGUgdGhhdCwKIHdoaWxlIE9TIFggMTAuNiBpcyBvbmx5IHN1cHBvcnRlZCBvbiBJbnRlbC1iYXNlZCBtYWNoaW5lcywgaXQgaXMgcG9zc2libGUKIHRvIHJ1biBgYHBwY2BgICgzMi1iaXQpIGV4ZWN1dGFibGVzIHVubW9kaWZpZWQgdGhhbmtzIHRvIHRoZSBSb3NldHRhIHBwYwotZW11bGF0aW9uIGluIE9TIFggMTAuNSBhbmQgMTAuNi4KK2VtdWxhdGlvbiBpbiBPUyBYIDEwLjUgYW5kIDEwLjYuICBUaGUgNC13YXkgaW5zdGFsbGVyIHZhcmlhbnQgbXVzdCBiZQorYnVpbHQgd2l0aCBYY29kZSAzLiAgSXQgaXMgbm90IHJlZ3VsYXJseSBidWlsdCBvciB0ZXN0ZWQuCiAKIE90aGVyIGBgLS11bml2ZXJzYWwtYXJjaHNgYCBvcHRpb25zIGFyZSBgYDY0LWJpdGBgIChgYHg4Nl82NGBgLCBgYHBwYzY0YGApLAogYW5kIGBgMy13YXlgYCAoYGBwcGNgYCwgYGBpMzg2YGAsIGBgeDg2XzY0YGApLiAgTm9uZSBvZiB0aGVzZSBvcHRpb25zCkBAIC0xMzMsMTUgKzE5NCwyMSBAQAogSWRlYWxseSwgdGhlIHJlc3VsdGluZyBiaW5hcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkIGFuZCB0aGUgdGVzdCBzdWl0ZSBydW4KIG9uIGFsbCBzdXBwb3J0ZWQgT1MgWCByZWxlYXNlcyBhbmQgYXJjaGl0ZWN0dXJlcy4gIEFzIGEgcHJhY3RpY2FsIG1hdHRlciwKIHRoYXQgaXMgZ2VuZXJhbGx5IG5vdCBwb3NzaWJsZS4gIEF0IGEgbWluaW11bSwgdmFyaWFudCAxIHNob3VsZCBiZSBydW4gb24KLWF0IGxlYXN0IG9uZSBJbnRlbCwgb25lIFBQQyBHNCwgYW5kIG9uZSBQUEMgRzMgc3lzdGVtIGFuZCBvbmUgZWFjaCBvZiAKLU9TIFggMTAuNiwgMTAuNSwgMTAuNCwgYW5kIDEwLjMuOS4gIE5vdCBhbGwgdGVzdHMgcnVuIG9uIDEwLjMuOS4KLVZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjYgaW4gYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBtb2Rlcy46OgorYSBQUEMgRzQgc3lzdGVtIHdpdGggT1MgWCAxMC41IGFuZCBhdCBsZWFzdCBvbmUgSW50ZWwgc3lzdGVtIHJ1bm5pbmcgT1MgWAorMTAuOCwgMTAuNywgMTAuNiwgb3IgMTAuNS4gIFZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjgsIDEwLjcsIGFuZCAxMC42CitzeXN0ZW1zIGluIGJvdGggMzItYml0IGFuZCA2NC1iaXQgbW9kZXMuOjoKIAotICAgIGFyY2ggLWkzODYgL3Vzci9sb2NhbC9iaW4vcHl0aG9ubi5uIC1tIHRlc3QucmVncnRlc3QgLXcgLXUgYWxsIAotICAgIGFyY2ggLVg4Nl82NCAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdC5yZWdydGVzdCAtdyAtdSBhbGwKKyAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdCAtdyAtdSBhbGwsLWxhcmdlZmlsZQorICAgIC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubi0zMiAtbSB0ZXN0IC13IC11IGFsbAogICAgIAogQ2VydGFpbiB0ZXN0cyB3aWxsIGJlIHNraXBwZWQgYW5kIHNvbWUgY2F1c2UgdGhlIGludGVycHJldGVyIHRvIGZhaWwKIHdoaWNoIHdpbGwgbGlrZWx5IGdlbmVyYXRlIGBgUHl0aG9uIHF1aXQgdW5leHBlY3RlZGx5YGAgYWxlcnQgbWVzc2FnZXMKLXRvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGNhbgotYmUgaWdub3JlZC4KK3RvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGFyZSBub3JtYWwKK2R1cmluZyB0ZXN0aW5nIGFuZCBjYW4gYmUgaWdub3JlZC4KKworSXQgaXMgYWxzbyByZWNvbW1lbmQgdG8gbGF1bmNoIElETEUgYW5kIHZlcmlmeSB0aGF0IGl0IGlzIGF0IGxlYXN0CitmdW5jdGlvbmFsLiAgRG91YmxlLWNsaWNrIG9uIHRoZSBJRExFIGFwcCBpY29uIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob25uLm5gYC4KK0l0IHNob3VsZCBhbHNvIGJlIHRlc3RlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmU6OgorCisgICAgL3Vzci9sb2NhbC9iaW4vaWRsZW4ubgogCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCBiYTkyMDEyLi5iZDBjNDc2IDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTEsNyArMSw3IEBACi0jIS91c3IvYmluL3B5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAiIiIKIFRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gYnVpbGQgIm9mZmljaWFsIiB1bml2ZXJzYWwgaW5zdGFsbGVycyBvbiBNYWMgT1MgWC4KLUl0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjQsIFhjb2RlIDIuMiBhbmQgdGhlIDEwLjR1IFNESyBmb3IKK0l0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjUsIFhjb2RlIDMsIGFuZCB0aGUgMTAuNHUgU0RLIGZvcgogMzItYml0IGJ1aWxkcy4gIDY0LWJpdCBvciBmb3VyLXdheSB1bml2ZXJzYWwgYnVpbGRzIHJlcXVpcmUgYXQgbGVhc3QKIE9TIFggMTAuNSBhbmQgdGhlIDEwLjUgU0RLLgogCkBAIC0xMCwxOCArMTAsNDEgQEAKIHdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24sIGN1cnJlbnRseSByZXF1aXJlcyBhdCBsZWFzdAogUHl0aG9uIDIuNC4KIAorSW4gYWRkaXRpb24gdG8gd2hhdCBpcyBzdXBwbGllZCB3aXRoIE9TIFggMTAuNSsgYW5kIFhjb2RlIDMrLCB0aGUgc2NyaXB0CityZXF1aXJlcyBhbiBpbnN0YWxsZWQgdmVyc2lvbiBvZiBoZyBhbmQgYSB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mCitUY2wvVGsgOC40IChmb3IgT1MgWCAxMC40IGFuZCAxMC41IGRlcGxveW1lbnQgdGFyZ2V0cykgb3IgVGNsL1RLIDguNQorKGZvciAxMC42IG9yIGxhdGVyKSBpbnN0YWxsZWQgaW4gL0xpYnJhcnkvRnJhbWV3b3Jrcy4gIFdoZW4gaW5zdGFsbGVkLAordGhlIFB5dGhvbiBidWlsdCBieSB0aGlzIHNjcmlwdCB3aWxsIGF0dGVtcHQgdG8gZHluYW1pY2FsbHkgbGluayBmaXJzdCB0bworVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluIC9MaWJyYXJ5L0ZyYW1ld29ya3MgaWYgYXZhaWxhYmxlIG90aGVyd2lzZSBmYWxsCitiYWNrIHRvIHRoZSBvbmVzIGluIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmsuICBGb3IgdGhlIGJ1aWxkLCB3ZSByZWNvbW1lbmQKK2luc3RhbGxpbmcgdGhlIG1vc3QgcmVjZW50IEFjdGl2ZVRjbCA4LjQgb3IgOC41IHZlcnNpb24uCisKKzMyLWJpdC1vbmx5IGluc3RhbGxlciBidWlsZHMgYXJlIHN0aWxsIHBvc3NpYmxlIG9uIE9TIFggMTAuNCB3aXRoIFhjb2RlIDIuNQorYW5kIHRoZSBpbnN0YWxsYXRpb24gb2YgYWRkaXRpb25hbCBjb21wb25lbnRzLCBzdWNoIGFzIGEgbmV3ZXIgUHl0aG9uCisoMi41IGlzIG5lZWRlZCBmb3IgUHl0aG9uIHBhcnNlciB1cGRhdGVzKSwgaGcsIGFuZCBzdm4gKGZvciB0aGUgZG9jdW1lbnRhdGlvbgorYnVpbGQpLgorCiBVc2FnZTogc2VlIFVTQUdFIHZhcmlhYmxlIGluIHRoZSBzY3JpcHQuCiAiIiIKLWltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCB1cmxsaWIyLCBzdGF0LCB0aW1lLCBwd2QKLWltcG9ydCBncnAKK2ltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCBzdGF0LCB0aW1lLCBwd2QsIGdycAordHJ5OgorICAgIGltcG9ydCB1cmxsaWIyIGFzIHVybGxpYl9yZXF1ZXN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0IGFzIHVybGxpYl9yZXF1ZXN0CisKK1NUQVRfMG83NTUgPSAoIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiB8IHN0YXQuU19JWFVTUgorICAgICAgICAgICAgIHwgc3RhdC5TX0lSR1JQIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYR1JQCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJPVEggfCAgICAgICAgICAgICAgICBzdGF0LlNfSVhPVEggKQorCitTVEFUXzBvNzc1ID0gKCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IgfCBzdGF0LlNfSVhVU1IKKyAgICAgICAgICAgICB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JV0dSUCB8IHN0YXQuU19JWEdSUAorICAgICAgICAgICAgIHwgc3RhdC5TX0lST1RIIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYT1RIICkKIAogSU5DTFVERV9USU1FU1RBTVAgPSAxCiBWRVJCT1NFID0gMQogCiBmcm9tIHBsaXN0bGliIGltcG9ydCBQbGlzdAogCi1pbXBvcnQgTWFjT1MKLQogdHJ5OgogICAgIGZyb20gcGxpc3RsaWIgaW1wb3J0IHdyaXRlUGxpc3QKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQyLDIwICs2NSwzNSBAQAogICAgICAgICBpZiBsbi5zdGFydHN3aXRoKHZhcmlhYmxlKToKICAgICAgICAgICAgIHZhbHVlID0gbG5bbGVuKHZhcmlhYmxlKTpdLnN0cmlwKCkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsxOi0xXQotICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0KKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0pCisKK19jYWNoZV9nZXRWZXJzaW9uID0gTm9uZQogCiBkZWYgZ2V0VmVyc2lvbigpOgotICAgIHJldHVybiBncmVwVmFsdWUob3MucGF0aC5qb2luKFNSQ0RJUiwgJ2NvbmZpZ3VyZScpLCAnUEFDS0FHRV9WRVJTSU9OJykKKyAgICBnbG9iYWwgX2NhY2hlX2dldFZlcnNpb24KKyAgICBpZiBfY2FjaGVfZ2V0VmVyc2lvbiBpcyBOb25lOgorICAgICAgICBfY2FjaGVfZ2V0VmVyc2lvbiA9IGdyZXBWYWx1ZSgKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihTUkNESVIsICdjb25maWd1cmUnKSwgJ1BBQ0tBR0VfVkVSU0lPTicpCisgICAgcmV0dXJuIF9jYWNoZV9nZXRWZXJzaW9uCiAKIGRlZiBnZXRWZXJzaW9uVHVwbGUoKToKICAgICByZXR1cm4gdHVwbGUoW2ludChuKSBmb3IgbiBpbiBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nKV0pCiAKK2RlZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpOgorICAgIHJldHVybiB0dXBsZShbaW50KG4pIGZvciBuIGluIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpXSkKKworX2NhY2hlX2dldEZ1bGxWZXJzaW9uID0gTm9uZQorCiBkZWYgZ2V0RnVsbFZlcnNpb24oKToKKyAgICBnbG9iYWwgX2NhY2hlX2dldEZ1bGxWZXJzaW9uCisgICAgaWYgX2NhY2hlX2dldEZ1bGxWZXJzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gX2NhY2hlX2dldEZ1bGxWZXJzaW9uCiAgICAgZm4gPSBvcy5wYXRoLmpvaW4oU1JDRElSLCAnSW5jbHVkZScsICdwYXRjaGxldmVsLmgnKQogICAgIGZvciBsbiBpbiBvcGVuKGZuKToKICAgICAgICAgaWYgJ1BZX1ZFUlNJT04nIGluIGxuOgotICAgICAgICAgICAgcmV0dXJuIGxuLnNwbGl0KClbLTFdWzE6LTFdCi0gICAgcmFpc2UgUnVudGltZUVycm9yLCAiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iCisgICAgICAgICAgICBfY2FjaGVfZ2V0RnVsbFZlcnNpb24gPSBsbi5zcGxpdCgpWy0xXVsxOi0xXQorICAgICAgICAgICAgcmV0dXJuIF9jYWNoZV9nZXRGdWxsVmVyc2lvbgorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iKQogCiAjIFRoZSBkaXJlY3Rvcnkgd2UnbGwgdXNlIHRvIGNyZWF0ZSB0aGUgYnVpbGQgKHdpbGwgYmUgZXJhc2VkIGFuZCByZWNyZWF0ZWQpCiBXT1JLRElSID0gIi90bXAvX3B5IgpAQCAtMTExLDEzICsxNDksMTUgQEAKIERFUFRBUkdFVCA9ICcxMC4zJwogCiB0YXJnZXRfY2NfbWFwID0gewotICAgICAgICAnMTAuMyc6ICdnY2MtNC4wJywKLSAgICAgICAgJzEwLjQnOiAnZ2NjLTQuMCcsCi0gICAgICAgICcxMC41JzogJ2djYy00LjAnLAotICAgICAgICAnMTAuNic6ICdnY2MtNC4yJywKKyAgICAgICAgJzEwLjMnOiAoJ2djYy00LjAnLCAnZysrLTQuMCcpLAorICAgICAgICAnMTAuNCc6ICgnZ2NjLTQuMCcsICdnKystNC4wJyksCisgICAgICAgICcxMC41JzogKCdnY2MtNC4yJywgJ2crKy00LjInKSwKKyAgICAgICAgJzEwLjYnOiAoJ2djYy00LjInLCAnZysrLTQuMicpLAorICAgICAgICAnMTAuNyc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAorICAgICAgICAnMTAuOCc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAogfQogCi1DQyA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQorQ0MsIENYWCA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCiBQWVRIT05fMyA9IGdldFZlcnNpb25UdXBsZSgpID49ICgzLCAwKQogCkBAIC0xMzUsNiArMTc1LDEzIEBACiAgICAgLS11bml2ZXJzYWwtYXJjaHM9eCAgdW5pdmVyc2FsIGFyY2hpdGVjdHVyZXMgKG9wdGlvbnM6ICUoVU5JVkVSU0FMT1BUUylyLCBkZWZhdWx0OiAlKFVOSVZFUlNBTEFSQ0hTKXIpCiAiIiIpJSBnbG9iYWxzKCkKIAorIyBEaWN0IG9mIG9iamVjdCBmaWxlIG5hbWVzIHdpdGggc2hhcmVkIGxpYnJhcnkgbmFtZXMgdG8gY2hlY2sgYWZ0ZXIgYnVpbGRpbmcuCisjIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgd2UgZW5kZWQgdXAgZHluYW1pY2FsbHkgbGlua2luZyB3aXRoIHRoZSBzaGFyZWQKKyMgbGlicmFyeSBwYXRocyBhbmQgdmVyc2lvbnMgd2UgZXhwZWN0ZWQuICBGb3IgZXhhbXBsZToKKyMgICBFWFBFQ1RFRF9TSEFSRURfTElCU1snX3RraW50ZXIuc28nXSA9IFsKKyMgICAgICAgICAgICAgICAgICAgICAgICcvTGlicmFyeS9GcmFtZXdvcmtzL1RjbC5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RjbCcsCisjICAgICAgICAgICAgICAgICAgICAgICAnL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RrJ10KK0VYUEVDVEVEX1NIQVJFRF9MSUJTID0ge30KIAogIyBJbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIGxpYnJhcmllcyB0aGF0IGFyZSBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEKICMgYmF0dGVyaWVzIGluY2x1ZGVkIHB5dGhvbi4KQEAgLTE0Myw2ICsxOTAsNzEgQEAKIGRlZiBsaWJyYXJ5X3JlY2lwZXMoKToKICAgICByZXN1bHQgPSBbXQogCisgICAgTFRfMTBfNSA9IGJvb2woREVQVEFSR0VUIDwgJzEwLjUnKQorCisgICAgcmVzdWx0LmV4dGVuZChbCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4wLjMiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjAuMy50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nZmVmZTUyZjllY2Q1MjFkZTJhOGNlMzhjMjFhMjc1NzQnLAorICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKKyAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICApLAorICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS45IiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS45LnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc4Y2I5YzQxMmU1ZjJkOTZiYzZmNDU5YWE4YzYyODJhMScsCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4LWJpbmRpbmciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1hZGEiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCisgICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtZGVidWciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1ub3JtYWwiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC10ZXN0cyIsCisgICAgICAgICAgICAgICAgICAiLS13aXRob3V0LW1hbnBhZ2VzIiwKKyAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCisgICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAorICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKKyAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCisgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHBhdGNoc2NyaXB0cz1bCisgICAgICAgICAgICAgICAgICAoImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvLzUuOS9uY3Vyc2VzLTUuOS0yMDEyMDYxNi1wYXRjaC5zaC5iejIiLAorICAgICAgICAgICAgICAgICAgICJmNTRiZjAyYTM0OWY5NmE3YzRmMGQwMDkyMmYzYTBkNCIpLAorICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHVzZUxERmxhZ3M9RmFsc2UsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgJiYgbWFrZSBpbnN0YWxsIERFU1RESVI9JXMgJiYgY2QgJXMvdXNyL2xvY2FsL2xpYiAmJiBsbiAtZnMgLi4vLi4vLi4vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliL2xpYiogLiclKAorICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKKyAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCisgICAgICAgICAgICAgICAgICBnZXRWZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICksCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy4xMyIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL3d3dy5zcWxpdGUub3JnL3NxbGl0ZS1hdXRvY29uZi0zMDcxMzAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSdjOTdkZjQwM2U4YTNkNWI2N2JiNDA4ZmNkNmFhYmQ4ZScsCisgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzNfUEFSRU5USEVTSVMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfUlRSRUUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9UQ0w9MCAnCisgICAgICAgICAgICAgICAgICclcycgJSAoJycsJy1EU1FMSVRFX1dJVEhPVVRfWk9ORU1BTExPQyAnKVtMVF8xMF81XSksCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAorICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCisgICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCisgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKKyAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICApLAorICAgICAgICBdKQorCiAgICAgaWYgREVQVEFSR0VUIDwgJzEwLjUnOgogICAgICAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KApAQCAtMTUwLDggKzI2Miw4IEBACiAgICAgICAgICAgICAgIHVybD0iaHR0cDovL2J6aXAub3JnLzEuMC42L2J6aXAyLTEuMC42LnRhci5neiIsCiAgICAgICAgICAgICAgIGNoZWNrc3VtPScwMGI1MTZmNDcwNGQ0YTdjYjUwYTFkOTdlNmU4ZTE1YicsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAotICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIGluc3RhbGwgQ0M9JXMgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCi0gICAgICAgICAgICAgICAgICBDQywKKyAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIENYWD0lcywgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCisgICAgICAgICAgICAgICAgICBDQywgQ1hYLAogICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKEFSQ0hMSVNUKSwKICAgICAgICAgICAgICAgICAgIFNES1BBVEgsCkBAIC0xNjIsOCArMjc0LDggQEAKICAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3Lmd6aXAub3JnL3psaWIvemxpYi0xLjIuMy50YXIuZ3oiLAogICAgICAgICAgICAgICBjaGVja3N1bT0nZGViYzYyNzU4NzE2YTE2OWRmOWY2MmU2YWIyYmM2MzQnLAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAotICAgICAgICAgICAgICAgICAgQ0MsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgaW5zdGFsbCBDQz0lcyBDWFg9JXMsIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAorICAgICAgICAgICAgICAgICAgQ0MsIENYWCwKICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCiAgICAgICAgICAgICAgICAgICAnIC1hcmNoICcuam9pbihBUkNITElTVCksCiAgICAgICAgICAgICAgICAgICBTREtQQVRILApAQCAtMTc4LDU4ICsyOTAsMTIgQEAKICAgICAgICAgICAgICAgcGF0Y2hlcz1bCiAgICAgICAgICAgICAgICAgICAjIFRoZSByZWFkbGluZSBtYWludGFpbmVycyBkb24ndCBkbyBhY3R1YWwgbWljcm8gcmVsZWFzZXMsIGJ1dAogICAgICAgICAgICAgICAgICAgIyBqdXN0IHNoaXAgYSBzZXQgb2YgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCi0gICAgICAgICAgICAgICAgICAnaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNi4xLXBhdGNoZXMvcmVhZGxpbmU2MS0wMDInLAorICAgICAgICAgICAgICAgICAgKCdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCisgICAgICAgICAgICAgICAgICAgJ2M2NDJmMmU4NGQ4MjA4ODRiMGJmOWZkMTc2YmM2YzNmJyksCisgICAgICAgICAgICAgICAgICAoJ2h0dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L3JlYWRsaW5lL3JlYWRsaW5lLTYuMS1wYXRjaGVzL3JlYWRsaW5lNjEtMDAyJywKKyAgICAgICAgICAgICAgICAgICAnMWE3Njc4MWExZWE3MzRlODMxNTg4Mjg1ZGI3ZWM5YjEnKSwKICAgICAgICAgICAgICAgXQogICAgICAgICAgICksCi0gICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy40IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnNxbGl0ZS5vcmcvc3FsaXRlLWF1dG9jb25mLTMwNzA0MDAudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzhmMGM2OTBiZmIzM2MzY2JiYzI0NzFjM2Q5YmEwMTU4JywKLSAgICAgICAgICAgICAgY29uZmlndXJlX2Vudj0oJ0NGTEFHUz0iLU9zJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLURTUUxJVEVfRU5BQkxFX0ZUUzMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX0VOQUJMRV9SVFJFRScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX1RDTD0wJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCi0gICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCi0gICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKLSAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICApLAotICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS41LnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPSdlNzNjMWFjMTBiNGJmYzQ2ZGI0M2IyZGRmZDYyNDRlZicsCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtYWRhIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCi0gICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAotICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKLSAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtdGVybWNhcCIsCi0gICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgIHBhdGNoZXM9WwotICAgICAgICAgICAgICAgICAgIm5jdXJzZXMtNS41LnBhdGNoIiwKLSAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgdXNlTERGbGFncz1GYWxzZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSAmJiBtYWtlIGluc3RhbGwgREVTVERJUj0lcyAmJiBjZCAlcy91c3IvbG9jYWwvbGliICYmIGxuIC1mcyAuLi8uLi8uLi9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8lcy9saWIvbGliKiAuJyUoCi0gICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAotICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKLSAgICAgICAgICAgICAgICAgIGdldFZlcnNpb24oKSwKLSAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgKSwKICAgICAgICAgXSkKIAogICAgIGlmIG5vdCBQWVRIT05fMzoKQEAgLTI5OCw5ICszNjQsNyBAQAogICAgICAgICAgICAgc291cmNlPSIvcHlkb2NzIiwKICAgICAgICAgICAgIHJlYWRtZT0iIiJcCiAgICAgICAgICAgICAgICAgVGhpcyBwYWNrYWdlIGluc3RhbGxzIHRoZSBweXRob24gZG9jdW1lbnRhdGlvbiBhdCBhIGxvY2F0aW9uCi0gICAgICAgICAgICAgICAgdGhhdCBpcyB1c2VhYmxlIGZvciBweWRvYyBhbmQgSURMRS4gSWYgeW91IGhhdmUgaW5zdGFsbGVkIFhjb2RlCi0gICAgICAgICAgICAgICAgaXQgd2lsbCBhbHNvIGluc3RhbGwgYSBsaW5rIHRvIHRoZSBkb2N1bWVudGF0aW9uIGluCi0gICAgICAgICAgICAgICAgL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uL1B5dGhvbgorICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlYWJsZSBmb3IgcHlkb2MgYW5kIElETEUuCiAgICAgICAgICAgICAgICAgIiIiLAogICAgICAgICAgICAgcG9zdGZsaWdodD0ic2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCkBAIC0zMjYsNyArMzkwLDcgQEAKICAgICAgICAgKSwKICAgICBdCiAKLSAgICBpZiBERVBUQVJHRVQgPCAnMTAuNCc6CisgICAgaWYgREVQVEFSR0VUIDwgJzEwLjQnIGFuZCBub3QgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoCiAgICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICAgIG5hbWU9IlB5dGhvblN5c3RlbUZpeGVzIiwKQEAgLTM1OCw3ICs0MjIsNyBAQAogICAgICIiIgogICAgIFJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIG5hbWVkIGZpbGUKICAgICAiIiIKLSAgICByZXR1cm4gb3BlbihmbiwgJ3JiJykucmVhZCgpCisgICAgcmV0dXJuIG9wZW4oZm4sICdyJykucmVhZCgpCiAKIGRlZiBydW5Db21tYW5kKGNvbW1hbmRsaW5lKToKICAgICAiIiIKQEAgLTM3MCw3ICs0MzQsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICBpZiBWRVJCT1NFOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpOyBzeXMuc3Rkb3V0LmZsdXNoKCkKQEAgLTM4MSw3ICs0NDUsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICByZXR1cm4gZGF0YQogCkBAIC00MjMsMzkgKzQ4Nyw2MCBAQAogICAgICMgQmVjYXVzZSB3ZSBvbmx5IHN1cHBvcnQgZHluYW1pYyBsb2FkIG9mIG9ubHkgb25lIG1ham9yL21pbm9yIHZlcnNpb24gb2YKICAgICAjIFRjbC9UaywgZW5zdXJlOgogICAgICMgMS4gdGhlcmUgYXJlIG5vIHVzZXItaW5zdGFsbGVkIGZyYW1ld29ya3Mgb2YgVGNsL1RrIHdpdGggdmVyc2lvbgotICAgICMgICAgICAgaGlnaGVyIHRoYW4gdGhlIEFwcGxlLXN1cHBsaWVkIHN5c3RlbSB2ZXJzaW9uCi0gICAgIyAyLiB0aGVyZSBpcyBhIHVzZXItaW5zdGFsbGVkIGZyYW1ld29yayBpbiAvTGlicmFyeS9GcmFtZXdvcmtzIHdpdGggdGhlCi0gICAgIyAgICAgICBzYW1lIHZlcnNpb24gYXMgdGhlIHN5c3RlbSB2ZXJzaW9uLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gY2hvb3NlCi0gICAgIyAgICAgICB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCisgICAgIyAgICAgICBoaWdoZXIgdGhhbiB0aGUgQXBwbGUtc3VwcGxpZWQgc3lzdGVtIHZlcnNpb24gaW4KKyAgICAjICAgICAgIFNES1JPT1QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcworICAgICMgMi4gdGhlcmUgaXMgYSB1c2VyLWluc3RhbGxlZCBmcmFtZXdvcmsgKHVzdWFsbHkgQWN0aXZlVGNsKSBpbiAob3IgbGlua2VkCisgICAgIyAgICAgICBpbikgU0RLUk9PVC9MaWJyYXJ5L0ZyYW1ld29ya3Mgd2l0aCB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZSBzeXN0ZW0KKyAgICAjICAgICAgIHZlcnNpb24uIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGNob29zZSB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCiAKKyAgICBmcmFtZXdvcmtzID0ge30KICAgICBmb3IgZnJhbWV3b3JrIGluIFsnVGNsJywgJ1RrJ106Ci0gICAgICAgICNmdyA9IGRpY3QobG93ZXI9ZnJhbWV3b3JrLmxvd2VyKCksCi0gICAgICAgICMgICAgICAgICAgICB1cHBlcj1mcmFtZXdvcmsudXBwZXIoKSwKLSAgICAgICAgIyAgICAgICAgICAgIGNhcD1mcmFtZXdvcmsuY2FwaXRhbGl6ZSgpKQotICAgICAgICAjZndwdGggPSAiTGlicmFyeS9GcmFtZXdvcmtzLyUoY2FwKXMuZnJhbWV3b3JrLyUobG93ZXIpc0NvbmZpZy5zaCIgJSBmdwotICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy9DdXJyZW50JworICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvJXMuZnJhbWV3b3JrL1ZlcnNpb25zL0N1cnJlbnQnICUgZnJhbWV3b3JrCiAgICAgICAgIHN5c2Z3ID0gb3MucGF0aC5qb2luKFNES1BBVEgsICdTeXN0ZW0nLCBmd3B0aCkKLSAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oJy8nLCBmd3B0aCkKKyAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oU0RLUEFUSCwgZndwdGgpCiAgICAgICAgIHVzcmZ3ID0gb3MucGF0aC5qb2luKG9zLmdldGVudignSE9NRScpLCBmd3B0aCkKLSAgICAgICAgI3ZlcnNpb24gPSAiJSh1cHBlcilzX1ZFUlNJT04iICUgZncKKyAgICAgICAgZnJhbWV3b3Jrc1tmcmFtZXdvcmtdID0gb3MucmVhZGxpbmsoc3lzZncpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaWJmdyk6CisgICAgICAgICAgICBmYXRhbCgiUGxlYXNlIGluc3RhbGwgYSBsaW5rIHRvIGEgY3VycmVudCAlcyAlcyBhcyAlcyBzbyAiCisgICAgICAgICAgICAgICAgICAgICJ0aGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSBmcmFtZXdvcmsuIgorICAgICAgICAgICAgICAgICAgICAlIChmcmFtZXdvcmssIGZyYW1ld29ya3NbZnJhbWV3b3JrXSwgbGliZncpKQogICAgICAgICBpZiBvcy5yZWFkbGluayhsaWJmdykgIT0gb3MucmVhZGxpbmsoc3lzZncpOgogICAgICAgICAgICAgZmF0YWwoIlZlcnNpb24gb2YgJXMgbXVzdCBtYXRjaCAlcyIgJSAobGliZncsIHN5c2Z3KSApCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVzcmZ3KToKICAgICAgICAgICAgIGZhdGFsKCJQbGVhc2UgcmVuYW1lICVzIHRvIGF2b2lkIHBvc3NpYmxlIGR5bmFtaWMgbG9hZCBpc3N1ZXMuIgogICAgICAgICAgICAgICAgICAgICAlIHVzcmZ3KQogCisgICAgaWYgZnJhbWV3b3Jrc1snVGNsJ10gIT0gZnJhbWV3b3Jrc1snVGsnXToKKyAgICAgICAgZmF0YWwoIlRoZSBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLiIpCisKKyAgICAjIGFkZCBmaWxlcyB0byBjaGVjayBhZnRlciBidWlsZAorICAgIEVYUEVDVEVEX1NIQVJFRF9MSUJTWydfdGtpbnRlci5zbyddID0gWworICAgICAgICAgICAgIi9MaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UY2wiCisgICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUY2wnXSwKKyAgICAgICAgICAgICIvTGlicmFyeS9GcmFtZXdvcmtzL1RrLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UayIKKyAgICAgICAgICAgICAgICAlIGZyYW1ld29ya3NbJ1RrJ10sCisgICAgICAgICAgICBdCisKICAgICAjIFJlbW92ZSBpbmhlcml0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIG1pZ2h0IGluZmx1ZW5jZSBidWlsZAogICAgIGVudmlyb25fdmFyX3ByZWZpeGVzID0gWydDUEFUSCcsICdDX0lOQ0xVREVfJywgJ0RZTERfJywgJ0xBTkcnLCAnTENfJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTERfJywgJ0xJQlJBUllfJywgJ1BBVEgnLCAnUFlUSE9OJ10KICAgICBmb3IgZXYgaW4gbGlzdChvcy5lbnZpcm9uKToKICAgICAgICAgZm9yIHByZWZpeCBpbiBlbnZpcm9uX3Zhcl9wcmVmaXhlczoKICAgICAgICAgICAgIGlmIGV2LnN0YXJ0c3dpdGgocHJlZml4KSA6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pCisgICAgICAgICAgICAgICAgcHJpbnQoIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pKQogICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2V2XQogCi0gICAgb3MuZW52aXJvblsnUEFUSCddID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJwotICAgIHByaW50ICJTZXR0aW5nIGRlZmF1bHQgUEFUSDogJXMiJShvcy5lbnZpcm9uWydQQVRIJ10pCisgICAgYmFzZV9wYXRoID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJworICAgIGlmICdTREtfVE9PTFNfQklOJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBiYXNlX3BhdGggPSBvcy5lbnZpcm9uWydTREtfVE9PTFNfQklOJ10gKyAnOicgKyBiYXNlX3BhdGgKKyAgICAjIFhjb2RlIDIuNSBvbiBPUyBYIDEwLjQgZG9lcyBub3QgaW5jbHVkZSBTZXRGaWxlIGluIGl0cyB1c3IvYmluOworICAgICMgYWRkIGl0cyBmaXhlZCBsb2NhdGlvbiBoZXJlIGlmIGl0IGV4aXN0cworICAgIE9MRF9ERVZFTE9QRVJfVE9PTFMgPSAnL0RldmVsb3Blci9Ub29scycKKyAgICBpZiBvcy5wYXRoLmlzZGlyKE9MRF9ERVZFTE9QRVJfVE9PTFMpOgorICAgICAgICBiYXNlX3BhdGggPSBiYXNlX3BhdGggKyAnOicgKyBPTERfREVWRUxPUEVSX1RPT0xTCisgICAgb3MuZW52aXJvblsnUEFUSCddID0gYmFzZV9wYXRoCisgICAgcHJpbnQoIlNldHRpbmcgZGVmYXVsdCBQQVRIOiAlcyIlKG9zLmVudmlyb25bJ1BBVEgnXSkpCiAKIAogZGVmIHBhcnNlT3B0aW9ucyhhcmdzPU5vbmUpOgpAQCAtNDYzLDcgKzU0OCw3IEBACiAgICAgUGFyc2UgYXJndW1lbnRzIGFuZCB1cGRhdGUgZ2xvYmFsIHNldHRpbmdzLgogICAgICIiIgogICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCi0gICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MKKyAgICBnbG9iYWwgVU5JVkVSU0FMT1BUUywgVU5JVkVSU0FMQVJDSFMsIEFSQ0hMSVNULCBDQywgQ1hYCiAKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KQEAgLTQ3MiwxOCArNTU3LDE4IEBACiAgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICc/aGInLAogICAgICAgICAgICAgICAgIFsgJ2J1aWxkLWRpcj0nLCAndGhpcmQtcGFydHk9JywgJ3Nkay1wYXRoPScgLCAnc3JjLWRpcj0nLAogICAgICAgICAgICAgICAgICAgJ2RlcC10YXJnZXQ9JywgJ3VuaXZlcnNhbC1hcmNocz0nLCAnaGVscCcgXSkKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6Ci0gICAgICAgIHByaW50IG1zZworICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6CisgICAgICAgIHByaW50KHN5cy5leGNfaW5mbygpWzFdKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgaWYgYXJnczoKLSAgICAgICAgcHJpbnQgIkFkZGl0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICBwcmludCgiQWRkaXRpb25hbCBhcmd1bWVudHMiKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgZGVwdGFyZ2V0ID0gTm9uZQogICAgIGZvciBrLCB2IGluIG9wdGlvbnM6CiAgICAgICAgIGlmIGsgaW4gKCctaCcsICctPycsICctLWhlbHAnKToKLSAgICAgICAgICAgIHByaW50IFVTQUdFCisgICAgICAgICAgICBwcmludChVU0FHRSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAKICAgICAgICAgZWxpZiBrIGluICgnLWQnLCAnLS1idWlsZC1kaXInKToKQEAgLTUxMSwyNyArNTk2LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICMgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCA9IGRlZmF1bHRfdGFyZ2V0X21hcC5nZXQodiwgJzEwLjMnKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCB2CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcih2KQogCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCBrCisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKGspCiAKICAgICBTUkNESVI9b3MucGF0aC5hYnNwYXRoKFNSQ0RJUikKICAgICBXT1JLRElSPW9zLnBhdGguYWJzcGF0aChXT1JLRElSKQogICAgIFNES1BBVEg9b3MucGF0aC5hYnNwYXRoKFNES1BBVEgpCiAgICAgREVQU1JDPW9zLnBhdGguYWJzcGF0aChERVBTUkMpCiAKLSAgICBDQz10YXJnZXRfY2NfbWFwW0RFUFRBUkdFVF0KKyAgICBDQywgQ1hYPXRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCi0gICAgcHJpbnQgIlNldHRpbmdzOiIKLSAgICBwcmludCAiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIKLSAgICBwcmludCAiICogQnVpbGQgZGlyZWN0b3J5OiAiLCBXT1JLRElSCi0gICAgcHJpbnQgIiAqIFNESyBsb2NhdGlvbjogICAgIiwgU0RLUEFUSAotICAgIHByaW50ICIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDCi0gICAgcHJpbnQgIiAqIERlcGxveW1lbnQgdGFyZ2V0OiIsIERFUFRBUkdFVAotICAgIHByaW50ICIgKiBVbml2ZXJzYWwgYXJjaGl0ZWN0dXJlczoiLCBBUkNITElTVAotICAgIHByaW50ICIgKiBDIGNvbXBpbGVyOiIsIENDCi0gICAgcHJpbnQgIiIKKyAgICBwcmludCgiU2V0dGluZ3M6IikKKyAgICBwcmludCgiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIpCisgICAgcHJpbnQoIiAqIEJ1aWxkIGRpcmVjdG9yeTogIiwgV09SS0RJUikKKyAgICBwcmludCgiICogU0RLIGxvY2F0aW9uOiAgICAiLCBTREtQQVRIKQorICAgIHByaW50KCIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDKQorICAgIHByaW50KCIgKiBEZXBsb3ltZW50IHRhcmdldDoiLCBERVBUQVJHRVQpCisgICAgcHJpbnQoIiAqIFVuaXZlcnNhbCBhcmNoaXRlY3R1cmVzOiIsIEFSQ0hMSVNUKQorICAgIHByaW50KCIgKiBDIGNvbXBpbGVyOiIsIENDKQorICAgIHByaW50KCIgKiBDKysgY29tcGlsZXI6IiwgQ1hYKQorICAgIHByaW50KCIiKQogCiAKIApAQCAtNTc2LDMxICs2NjIsMTggQEAKICAgICAgICAgeGl0ID0gZnAuY2xvc2UoKQogICAgICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpCi0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICJDYW5ub3QgZXh0cmFjdCAlcyIlKGFyY2hpdmVOYW1lLCkKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGV4dHJhY3QgJXMiJShhcmNoaXZlTmFtZSwpKQogCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHJldHZhbCkKIAogICAgIGZpbmFsbHk6CiAgICAgICAgIG9zLmNoZGlyKGN1cmRpcikKIAotS05PV05TSVpFUyA9IHsKLSAgICAiaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNS4xLnRhci5neiI6IDc5NTI3NDIsCi0gICAgImh0dHA6Ly9kb3dubG9hZHMuc2xlZXB5Y2F0LmNvbS9kYi00LjQuMjAudGFyLmd6IjogMjAzMDI3NiwKLX0KLQogZGVmIGRvd25sb2FkVVJMKHVybCwgZm5hbWUpOgogICAgICIiIgogICAgIERvd25sb2FkIHRoZSBjb250ZW50cyBvZiB0aGUgdXJsIGludG8gdGhlIGZpbGUuCiAgICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBzaXplID0gb3MucGF0aC5nZXRzaXplKGZuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgaWYgS05PV05TSVpFUy5nZXQodXJsKSA9PSBzaXplOgotICAgICAgICAgICAgcHJpbnQgIlVzaW5nIGV4aXN0aW5nIGZpbGUgZm9yIiwgdXJsCi0gICAgICAgICAgICByZXR1cm4KLSAgICBmcEluID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICBmcEluID0gdXJsbGliX3JlcXVlc3QudXJsb3Blbih1cmwpCiAgICAgZnBPdXQgPSBvcGVuKGZuYW1lLCAnd2InKQogICAgIGJsb2NrID0gZnBJbi5yZWFkKDEwMjQwKQogICAgIHRyeToKQEAgLTYxNSw2ICs2ODgsMjQgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcwogCitkZWYgdmVyaWZ5VGhpcmRQYXJ0eUZpbGUodXJsLCBjaGVja3N1bSwgZm5hbWUpOgorICAgICIiIgorICAgIERvd25sb2FkIGZpbGUgZnJvbSB1cmwgdG8gZmlsZW5hbWUgZm5hbWUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKyAgICBBYm9ydCBpZiBmaWxlIGNvbnRlbnRzIGRvZXMgbm90IG1hdGNoIHN1cHBsaWVkIG1kNSBjaGVja3N1bS4KKyAgICAiIiIKKyAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmbmFtZSkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbmFtZSk6CisgICAgICAgIHByaW50KCJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCJEaWQgbm90IGZpbmQgbG9jYWwgY29weSBvZiAlcyIlKG5hbWUsKSkKKyAgICAgICAgcHJpbnQoIkRvd25sb2FkaW5nICVzIiUobmFtZSwpKQorICAgICAgICBkb3dubG9hZFVSTCh1cmwsIGZuYW1lKQorICAgICAgICBwcmludCgiQXJjaGl2ZSBmb3IgJXMgc3RvcmVkIGFzICVzIiUobmFtZSwgZm5hbWUpKQorICAgIGlmIG9zLnN5c3RlbSgKKyAgICAgICAgICAgICdNRDU9JChvcGVuc3NsIG1kNSAlcykgOyB0ZXN0ICIke01ENSMjKj0gfSIgPSAiJXMiJworICAgICAgICAgICAgICAgICUgKHNoZWxsUXVvdGUoZm5hbWUpLCBjaGVja3N1bSkgKToKKyAgICAgICAgZmF0YWwoJ01ENSBjaGVja3N1bSBtaXNtYXRjaCBmb3IgZmlsZSAlcycgJSBmbmFtZSkKKwogZGVmIGJ1aWxkUmVjaXBlKHJlY2lwZSwgYmFzZWRpciwgYXJjaExpc3QpOgogICAgICIiIgogICAgIEJ1aWxkIHNvZnR3YXJlIHVzaW5nIGEgcmVjaXBlLiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlCkBAIC02MzUsMTcgKzcyNiw4IEBACiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKERFUFNSQyk6CiAgICAgICAgIG9zLm1rZGlyKERFUFNSQykKIAotCi0gICAgaWYgb3MucGF0aC5leGlzdHMoc291cmNlQXJjaGl2ZSk6Ci0gICAgICAgIHByaW50ICJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpCi0KLSAgICBlbHNlOgotICAgICAgICBwcmludCAiRGlkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgJXMiJShuYW1lLCkKLSAgICAgICAgcHJpbnQgIkRvd25sb2FkaW5nICVzIiUobmFtZSwpCi0gICAgICAgIGRvd25sb2FkVVJMKHVybCwgc291cmNlQXJjaGl2ZSkKLSAgICAgICAgcHJpbnQgIkFyY2hpdmUgZm9yICVzIHN0b3JlZCBhcyAlcyIlKG5hbWUsIHNvdXJjZUFyY2hpdmUpCi0KLSAgICBwcmludCAiRXh0cmFjdGluZyBhcmNoaXZlIGZvciAlcyIlKG5hbWUsKQorICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgcmVjaXBlWydjaGVja3N1bSddLCBzb3VyY2VBcmNoaXZlKQorICAgIHByaW50KCJFeHRyYWN0aW5nIGFyY2hpdmUgZm9yICVzIiUobmFtZSwpKQogICAgIGJ1aWxkRGlyPW9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkRGlyKToKICAgICAgICAgb3MubWtkaXIoYnVpbGREaXIpCkBAIC02NTUsMTggKzczNywzMSBAQAogICAgIGlmICdidWlsZERpcicgaW4gcmVjaXBlOgogICAgICAgICBvcy5jaGRpcihyZWNpcGVbJ2J1aWxkRGlyJ10pCiAKLQotICAgIGZvciBmbiBpbiByZWNpcGUuZ2V0KCdwYXRjaGVzJywgKCkpOgotICAgICAgICBpZiBmbi5zdGFydHN3aXRoKCdodHRwOi8vJyk6Ci0gICAgICAgICAgICAjIERvd25sb2FkIHRoZSBwYXRjaCBiZWZvcmUgYXBwbHlpbmcgaXQuCi0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKERFUFNSQywgb3MucGF0aC5iYXNlbmFtZShmbikpCi0gICAgICAgICAgICBkb3dubG9hZFVSTChmbiwgcGF0aCkKLSAgICAgICAgICAgIGZuID0gcGF0aAotCi0gICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgZm4pCisgICAgZm9yIHBhdGNoIGluIHJlY2lwZS5nZXQoJ3BhdGNoZXMnLCAoKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0Y2gsIHR1cGxlKToKKyAgICAgICAgICAgIHVybCwgY2hlY2tzdW0gPSBwYXRjaAorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oREVQU1JDLCBvcy5wYXRoLmJhc2VuYW1lKHVybCkpCisgICAgICAgICAgICB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIGNoZWNrc3VtLCBmbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGF0Y2ggaXMgYSBmaWxlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihjdXJkaXIsIHBhdGNoKQogICAgICAgICBydW5Db21tYW5kKCdwYXRjaCAtcCVzIDwgJXMnJShyZWNpcGUuZ2V0KCdwYXRjaGxldmVsJywgMSksCiAgICAgICAgICAgICBzaGVsbFF1b3RlKGZuKSwpKQogCisgICAgZm9yIHBhdGNoc2NyaXB0IGluIHJlY2lwZS5nZXQoJ3BhdGNoc2NyaXB0cycsICgpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRjaHNjcmlwdCwgdHVwbGUpOgorICAgICAgICAgICAgdXJsLCBjaGVja3N1bSA9IHBhdGNoc2NyaXB0CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihERVBTUkMsIG9zLnBhdGguYmFzZW5hbWUodXJsKSkKKyAgICAgICAgICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBwYXRjaCBpcyBhIGZpbGUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgcGF0Y2hzY3JpcHQpCisgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcuYnoyJyk6CisgICAgICAgICAgICBydW5Db21tYW5kKCdidW56aXAyIC1mayAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgICAgIGZuID0gZm5bOi00XQorICAgICAgICBydW5Db21tYW5kKCdzaCAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgb3MudW5saW5rKGZuKQorCiAgICAgaWYgY29uZmlndXJlIGlzIG5vdCBOb25lOgogICAgICAgICBjb25maWd1cmVfYXJncyA9IFsKICAgICAgICAgICAgICItLXByZWZpeD0vdXNyL2xvY2FsIiwKQEAgLTY4NSw0MCArNzgwLDQ0IEBACiAKICAgICAgICAgaWYgcmVjaXBlLmdldCgndXNlTERGbGFncycsIDEpOgogICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MuZXh0ZW5kKFsKLSAgICAgICAgICAgICAgICAiQ0ZMQUdTPS1hcmNoICVzIC1pc3lzcm9vdCAlcyAtSSVzL3Vzci9sb2NhbC9pbmNsdWRlIiUoCisgICAgICAgICAgICAgICAgIkNGTEFHUz0lcy1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1hcmNoICVzIC1pc3lzcm9vdCAlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5nZXQoJ2V4dHJhX2NmbGFncycsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKGFyY2hMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoU0RLUEFUSClbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJhc2VkaXIpWzE6LTFdLCksCi0gICAgICAgICAgICAgICAgIkxERkxBR1M9LXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgIkxERkxBR1M9LW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShiYXNlZGlyKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWd1cmVfYXJncy5leHRlbmQoWwotICAgICAgICAgICAgICAgICJDRkxBR1M9LWFyY2ggJXMgLWlzeXNyb290ICVzIC1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAiQ0ZMQUdTPSVzLW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLWFyY2ggJXMgLWlzeXNyb290ICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUklcy91c3IvbG9jYWwvaW5jbHVkZSIlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmdldCgnZXh0cmFfY2ZsYWdzJywgJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgREVQVEFSR0VULAogICAgICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoYmFzZWRpcilbMTotMV0sKSwKICAgICAgICAgICAgIF0pCiAKICAgICAgICAgaWYgJ2NvbmZpZ3VyZV9wb3N0JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzID0gbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCisgICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzICsgbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCiAKICAgICAgICAgY29uZmlndXJlX2FyZ3MuaW5zZXJ0KDAsIGNvbmZpZ3VyZSkKICAgICAgICAgY29uZmlndXJlX2FyZ3MgPSBbIHNoZWxsUXVvdGUoYSkgZm9yIGEgaW4gY29uZmlndXJlX2FyZ3MgXQogCi0gICAgICAgIGlmICdjb25maWd1cmVfZW52JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncy5pbnNlcnQoMCwgcmVjaXBlWydjb25maWd1cmVfZW52J10pCi0KLSAgICAgICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlIGZvciAlcyIlKG5hbWUsKQorICAgICAgICBwcmludCgiUnVubmluZyBjb25maWd1cmUgZm9yICVzIiUobmFtZSwpKQogICAgICAgICBydW5Db21tYW5kKCcgJy5qb2luKGNvbmZpZ3VyZV9hcmdzKSArICcgMj4mMScpCiAKLSAgICBwcmludCAiUnVubmluZyBpbnN0YWxsIGZvciAlcyIlKG5hbWUsKQorICAgIHByaW50KCJSdW5uaW5nIGluc3RhbGwgZm9yICVzIiUobmFtZSwpKQogICAgIHJ1bkNvbW1hbmQoJ3sgJyArIGluc3RhbGwgKyAnIDt9IDI+JjEnKQogCi0gICAgcHJpbnQgIkRvbmUgJXMiJShuYW1lLCkKLSAgICBwcmludCAiIgorICAgIHByaW50KCJEb25lICVzIiUobmFtZSwpKQorICAgIHByaW50KCIiKQogCiAgICAgb3MuY2hkaXIoY3VyZGlyKQogCkBAIC03MjYsOSArODI1LDkgQEAKICAgICAiIiIKICAgICBCdWlsZCBvdXIgZGVwZW5kZW5jaWVzIGludG8gJFdPUktESVIvbGlicmFyaWVzL3Vzci9sb2NhbAogICAgICIiIgotICAgIHByaW50ICIiCi0gICAgcHJpbnQgIkJ1aWxkaW5nIHJlcXVpcmVkIGxpYnJhcmllcyIKLSAgICBwcmludCAiIgorICAgIHByaW50KCIiKQorICAgIHByaW50KCJCdWlsZGluZyByZXF1aXJlZCBsaWJyYXJpZXMiKQorICAgIHByaW50KCIiKQogICAgIHVuaXZlcnNhbCA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykKICAgICBvcy5ta2Rpcih1bml2ZXJzYWwpCiAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKHVuaXZlcnNhbCwgJ3VzcicsICdsb2NhbCcsICdsaWInKSkKQEAgLTc0Miw3ICs4NDEsNyBAQAogZGVmIGJ1aWxkUHl0aG9uRG9jcygpOgogICAgICMgVGhpcyBzdG9yZXMgdGhlIGRvY3VtZW50YXRpb24gYXMgUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbgogICAgICMgaW5zaWRlIHRoZSBmcmFtd29yay4gcHlkb2MgYW5kIElETEUgd2lsbCBwaWNrIGl0IHVwIHRoZXJlLgotICAgIHByaW50ICJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIgorICAgIHByaW50KCJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIikKICAgICByb290RGlyID0gb3MucGF0aC5qb2luKFdPUktESVIsICdfcm9vdCcpCiAgICAgYnVpbGREaXIgPSBvcy5wYXRoLmpvaW4oJy4uLy4uL0RvYycpCiAgICAgZG9jZGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdweWRvY3MnKQpAQCAtNzU3LDcgKzg1Niw3IEBACiAKIAogZGVmIGJ1aWxkUHl0aG9uKCk6Ci0gICAgcHJpbnQgIkJ1aWxkaW5nIGEgdW5pdmVyc2FsIHB5dGhvbiBmb3IgJXMgYXJjaGl0ZWN0dXJlcyIgJSBVTklWRVJTQUxBUkNIUworICAgIHByaW50KCJCdWlsZGluZyBhIHVuaXZlcnNhbCBweXRob24gZm9yICVzIGFyY2hpdGVjdHVyZXMiICUgVU5JVkVSU0FMQVJDSFMpCiAKICAgICBidWlsZERpciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcsICdweXRob24nKQogICAgIHJvb3REaXIgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ19yb290JykKQEAgLTc4NSw3ICs4ODQsNyBAQAogICAgICMgd2lsbCBmaW5kIHRoZW0gZHVyaW5nIGl0cyBleHRlbnNpb24gaW1wb3J0IHNhbml0eSBjaGVja3MuCiAgICAgb3MuZW52aXJvblsnRFlMRF9MSUJSQVJZX1BBVEgnXSA9IG9zLnBhdGguam9pbihXT1JLRElSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnLCAndXNyJywgJ2xvY2FsJywgJ2xpYicpCi0gICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlLi4uIgorICAgIHByaW50KCJSdW5uaW5nIGNvbmZpZ3VyZS4uLiIpCiAgICAgcnVuQ29tbWFuZCgiJXMgLUMgLS1lbmFibGUtZnJhbWV3b3JrIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz0lcyAiCiAgICAgICAgICAgICAgICAiLS13aXRoLXVuaXZlcnNhbC1hcmNocz0lcyAiCiAgICAgICAgICAgICAgICAiJXMgIgpAQCAtNzk3LDE5ICs4OTYsMTkgQEAKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSwKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UiKQogICAgIHJ1bkNvbW1hbmQoIm1ha2UiKQogCi0gICAgcHJpbnQgIlJ1bm5pbmcgbWFrZSBpbnN0YWxsIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UgaW5zdGFsbCIpCiAgICAgcnVuQ29tbWFuZCgibWFrZSBpbnN0YWxsIERFU1RESVI9JXMiJSgKICAgICAgICAgc2hlbGxRdW90ZShyb290RGlyKSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMiCisgICAgcHJpbnQoIlJ1bm5pbmcgbWFrZSBmcmFtZXdvcmtpbnN0YWxsZXh0cmFzIikKICAgICBydW5Db21tYW5kKCJtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMgREVTVERJUj0lcyIlKAogICAgICAgICBzaGVsbFF1b3RlKHJvb3REaXIpKSkKIAogICAgIGRlbCBvcy5lbnZpcm9uWydEWUxEX0xJQlJBUllfUEFUSCddCi0gICAgcHJpbnQgIkNvcHlpbmcgcmVxdWlyZWQgc2hhcmVkIGxpYnJhcmllcyIKKyAgICBwcmludCgiQ29weWluZyByZXF1aXJlZCBzaGFyZWQgbGlicmFyaWVzIikKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycsICdMaWJyYXJ5JykpOgogICAgICAgICBydW5Db21tYW5kKCJtdiAlcy8qICVzIiUoCiAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbigKQEAgLTgyMCwxNiArOTE5LDE2IEBACiAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgJ2xpYicpKSkpCiAKLSAgICBwcmludCAiRml4IGZpbGUgbW9kZXMiCisgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKICAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKKyAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKGZybURpcik6CiAgICAgICAgIGZvciBkbiBpbiBkaXJuYW1lczoKLSAgICAgICAgICAgIG9zLmNobW9kKG9zLnBhdGguam9pbihkaXJwYXRoLCBkbiksIDA3NzUpCisgICAgICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZG4pLCBTVEFUXzBvNzc1KQogICAgICAgICAgICAgb3MuY2hvd24ob3MucGF0aC5qb2luKGRpcnBhdGgsIGRuKSwgLTEsIGdpZCkKIAotCiAgICAgICAgIGZvciBmbiBpbiBmaWxlbmFtZXM6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhmbik6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTg0MCw2ICs5MzksMTkgQEAKICAgICAgICAgICAgIG9zLmNobW9kKHAsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSB8IHN0YXQuU19JV0dSUCkKICAgICAgICAgICAgIG9zLmNob3duKHAsIC0xLCBnaWQpCiAKKyAgICAgICAgICAgIGlmIGZuIGluIEVYUEVDVEVEX1NIQVJFRF9MSUJTOgorICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIHRoYXQgdGhpcyBmaWxlIHdhcyBsaW5rZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAjIGV4cGVjdGVkIGxpYnJhcnkgcGF0aCBhbmQgdmVyc2lvbgorICAgICAgICAgICAgICAgIGRhdGEgPSBjYXB0dXJlQ29tbWFuZCgib3Rvb2wgLUwgJXMiICUgc2hlbGxRdW90ZShwKSkKKyAgICAgICAgICAgICAgICBmb3Igc2wgaW4gRVhQRUNURURfU0hBUkVEX0xJQlNbZm5dOgorICAgICAgICAgICAgICAgICAgICBpZiAoIlx0JXMgIiAlIHNsKSBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJFeHBlY3RlZCBzaGFyZWQgbGliICVzIHdhcyBub3QgbGlua2VkIHdpdGggJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNsLCBwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9saWJfZXJyb3IgPSBUcnVlCisKKyAgICBpZiBzaGFyZWRfbGliX2Vycm9yOgorICAgICAgICBmYXRhbCgiVW5leHBlY3RlZCBzaGFyZWQgbGlicmFyeSBlcnJvcnMuIikKKwogICAgIGlmIFBZVEhPTl8zOgogICAgICAgICBMRFZFUlNJT049Tm9uZQogICAgICAgICBWRVJTSU9OPU5vbmUKQEAgLTg2MywxOSArOTc1LDI2IEBACiAKICAgICAjIFdlIGFkZGVkIHNvbWUgZGlyZWN0b3JpZXMgdG8gdGhlIHNlYXJjaCBwYXRoIGR1cmluZyB0aGUgY29uZmlndXJlCiAgICAgIyBwaGFzZS4gUmVtb3ZlIHRob3NlIGJlY2F1c2UgdGhvc2UgZGlyZWN0b3JpZXMgd29uJ3QgYmUgdGhlcmUgb24KLSAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLgotICAgIHBhdGggPW9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnLAotICAgICAgICAgICAgICAgICdWZXJzaW9ucycsIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCksCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgKyBjb25maWdfc3VmZml4LCAnTWFrZWZpbGUnKQotICAgIGZwID0gb3BlbihwYXRoLCAncicpCi0gICAgZGF0YSA9IGZwLnJlYWQoKQotICAgIGZwLmNsb3NlKCkKKyAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLiBBbHNvIHJlbW92ZSB0aGUgZGlyZWN0b3JpZXMgZnJvbSBfc3lzY29uZmlnZGF0YS5weQorICAgICMgKGFkZGVkIGluIDMuMykgaWYgaXQgZXhpc3RzLgogCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUwlcy9saWJyYXJpZXMvdXNyL2xvY2FsL2xpYiclKFdPUktESVIsKSwgJycpCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQotICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgZnAud3JpdGUoZGF0YSkKLSAgICBmcC5jbG9zZSgpCisgICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwgJ2xpYicsICdweXRob24lcyclKHZlcnNpb24sKSkKKyAgICBwYXRocyA9IFtvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdjb25maWcnICsgY29uZmlnX3N1ZmZpeCwgJ01ha2VmaWxlJyksCisgICAgICAgICAgICAgb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGEucHknKV0KKyAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBmcC5jbG9zZSgpCisKKyAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnIC1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWInJShXT1JLRElSLCksICcnKQorICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCcgLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQorICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQorICAgICAgICBmcC53cml0ZShkYXRhKQorICAgICAgICBmcC5jbG9zZSgpCiAKICAgICAjIEFkZCBzeW1saW5rcyBpbiAvdXNyL2xvY2FsL2JpbiwgdXNpbmcgcmVsYXRpdmUgbGlua3MKICAgICB1c3JfbG9jYWxfYmluID0gb3MucGF0aC5qb2luKHJvb3REaXIsICd1c3InLCAnbG9jYWwnLCAnYmluJykKQEAgLTkwNywxNyArMTAyNiwxNyBAQAogCiAgICAgIyBUaGlzIG9uZSBpcyBub3QgaGFuZHkgYXMgYSB0ZW1wbGF0ZSB2YXJpYWJsZQogICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJyRQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSJywgJy9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yaycpCi0gICAgZnAgPSBvcGVuKG91dFBhdGgsICd3YicpCisgICAgZnAgPSBvcGVuKG91dFBhdGgsICd3JykKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKIAogZGVmIHBhdGNoU2NyaXB0KGluUGF0aCwgb3V0UGF0aCk6CiAgICAgZGF0YSA9IGZpbGVDb250ZW50cyhpblBhdGgpCiAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnQFBZVkVSQCcsIGdldFZlcnNpb24oKSkKLSAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3diJykKKyAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3cnKQogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKG91dFBhdGgsIDA3NTUpCisgICAgb3MuY2htb2Qob3V0UGF0aCwgU1RBVF8wbzc1NSkKIAogCiAKQEAgLTkzNCw3ICsxMDUzLDcgQEAKICAgICAgICAgcmVhZG1lID0gdGV4dHdyYXAuZGVkZW50KHJlY2lwZVsncmVhZG1lJ10pCiAgICAgICAgIGlzUmVxdWlyZWQgPSByZWNpcGUuZ2V0KCdyZXF1aXJlZCcsIFRydWUpCiAKLSAgICAgICAgcHJpbnQgIi0gYnVpbGRpbmcgcGFja2FnZSAlcyIlKHBrZ25hbWUsKQorICAgICAgICBwcmludCgiLSBidWlsZGluZyBwYWNrYWdlICVzIiUocGtnbmFtZSwpKQogCiAgICAgICAgICMgU3Vic3RpdHV0ZSBzb21lIHZhcmlhYmxlcwogICAgICAgICB0ZXh0dmFycyA9IGRpY3QoCkBAIC05NzksNyArMTA5OCw3IEBACiAgICAgICAgICAgICBwYXRjaFNjcmlwdChwb3N0ZmxpZ2h0LCBvcy5wYXRoLmpvaW4ocnNyY0RpciwgJ3Bvc3RmbGlnaHQnKSkKIAogICAgICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgICAgICBtYWpvciwgbWlub3IgPSBtYXAoaW50LCBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nLCAyKSkKKyAgICAgICAgbWFqb3IsIG1pbm9yID0gZ2V0VmVyc2lvbk1ham9yTWlub3IoKQogICAgICAgICBwbCA9IFBsaXN0KAogICAgICAgICAgICAgICAgIENGQnVuZGxlR2V0SW5mb1N0cmluZz0iUHl0aG9uLiVzICVzIiUocGtnbmFtZSwgdmVycywpLAogICAgICAgICAgICAgICAgIENGQnVuZGxlSWRlbnRpZmllcj0nb3JnLnB5dGhvbi5QeXRob24uJXMnJShwa2duYW1lLCksCkBAIC0xMDE2LDcgKzExMzUsNyBAQAogZGVmIG1ha2VNcGtnUGxpc3QocGF0aCk6CiAKICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgIG1ham9yLCBtaW5vciA9IG1hcChpbnQsIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpKQorICAgIG1ham9yLCBtaW5vciA9IGdldFZlcnNpb25NYWpvck1pbm9yKCkKIAogICAgIHBsID0gUGxpc3QoCiAgICAgICAgICAgICBDRkJ1bmRsZUdldEluZm9TdHJpbmc9IlB5dGhvbiAlcyIlKHZlcnMsKSwKQEAgLTExMjcsNyArMTI0Niw3IEBACiAgICAgIyBDdXN0b20gaWNvbiBmb3IgdGhlIERNRywgc2hvd24gd2hlbiB0aGUgRE1HIGlzIG1vdW50ZWQuCiAgICAgc2h1dGlsLmNvcHkoIi4uL0ljb25zL0Rpc2sgSW1hZ2UuaWNucyIsCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUsICIuVm9sdW1lSWNvbi5pY25zIikpCi0gICAgcnVuQ29tbWFuZCgiL0RldmVsb3Blci9Ub29scy9TZXRGaWxlIC1hIEMgJXMvIiUoCisgICAgcnVuQ29tbWFuZCgiU2V0RmlsZSAtYSBDICVzLyIlKAogICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUpKSwpKQogCiAgICAgcnVuQ29tbWFuZCgiaGRpdXRpbCBkZXRhY2ggJXMiJShzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAibW50Iiwgdm9sbmFtZSkpKSkKQEAgLTExNjgsNiArMTI4Nyw3IEBACiAKICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9IERFUFRBUkdFVAogICAgIG9zLmVudmlyb25bJ0NDJ10gPSBDQworICAgIG9zLmVudmlyb25bJ0NYWCddID0gQ1hYCiAKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhXT1JLRElSKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShXT1JLRElSKQpAQCAtMTE5OCw3ICsxMzE4LDcgQEAKIAogICAgIGZvbGRlciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAiX3Jvb3QiLCAiQXBwbGljYXRpb25zIiwgIlB5dGhvbiAlcyIlKAogICAgICAgICBnZXRWZXJzaW9uKCksKSkKLSAgICBvcy5jaG1vZChmb2xkZXIsIDA3NTUpCisgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIAogICAgICMgQ3JlYXRlIHRoZSBpbnN0YWxsZXIKQEAgLTEyMTEsOSArMTMzMSw5IEBACiAgICAgc2h1dGlsLmNvcHkoJy4uLy4uL0xJQ0VOU0UnLCBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2luc3RhbGxlcicsICdMaWNlbnNlLnR4dCcpKQogCiAgICAgZnAgPSBvcGVuKG9zLnBhdGguam9pbihXT1JLRElSLCAnaW5zdGFsbGVyJywgJ0J1aWxkLnR4dCcpLCAndycpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJVSUxEIElORk8iCi0gICAgcHJpbnQgPj4gZnAsICIjIERhdGU6IiwgdGltZS5jdGltZSgpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJ5OiIsIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MKKyAgICBmcC53cml0ZSgiIyBCVUlMRCBJTkZPXG4iKQorICAgIGZwLndyaXRlKCIjIERhdGU6ICVzXG4iICUgdGltZS5jdGltZSgpKQorICAgIGZwLndyaXRlKCIjIEJ5OiAlc1xuIiAlIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MpCiAgICAgZnAuY2xvc2UoKQogCiAgICAgIyBBbmQgY29weSBpdCB0byBhIERNRwpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoIGIvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWFiM2QzLi4wMDAwMDAwCi0tLSBhL01hYy9CdWlsZFNjcmlwdC9uY3Vyc2VzLTUuNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLWRpZmYgLXIgLXUgbmN1cnNlcy01LjUtb3JpZy90ZXN0L01ha2VmaWxlLmluIG5jdXJzZXMtNS41L3Rlc3QvTWFrZWZpbGUuaW4KLS0tLSBuY3Vyc2VzLTUuNS1vcmlnL3Rlc3QvTWFrZWZpbGUuaW4JMjAwNi0wMy0yNCAxMjo0Nzo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBuY3Vyc2VzLTUuNS90ZXN0L01ha2VmaWxlLmluCTIwMDYtMDMtMjQgMTI6NDc6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtNzUsNyArNzUsNyBAQAotIE1BVEhfTElCCT0gQE1BVEhfTElCQAotIAotIExECQk9IEBMREAKLS1MSU5LCQk9IEBMSU5LX1RFU1RTQCAkKExJQlRPT0xfTElOSykgJChDQykgJChDRkxBR1MpCi0rTElOSwkJPSBATElOS19URVNUU0AgJChMSUJUT09MX0xJTkspICQoQ0MpIAotIAotIHVzRkxBR1MJCT0gQExEX01PREVMQCBATE9DQUxfTERGTEFHU0AgQExERkxBR1NACi0gCi1kaWZmIC1ydSBuY3Vyc2VzLTUuNS1vcmlnL25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9uY3Vyc2VzL3RpbmZvL3JlYWRfZW50cnkuYyAyMDA0LTAxLTExIDAyOjU3OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jICAgICAgMjAwNi0wMy0yNSAyMjo0OTozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NzQsNyArNDc0LDcgQEAKLSAgICAgfQotIAotICAgICAvKiB0cnVuY2F0ZSB0aGUgdGVybWluYWwgbmFtZSB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyAqLwotLSAgICAodm9pZCkgc3ByaW50Zih0dG4sICIlYy8lLipzIiwgKnRuLCAoaW50KSBzaXplb2YodHRuKSAtIDMsIHRuKTsKLSsgICAgKHZvaWQpIHNwcmludGYodHRuLCAiJXgvJS4qcyIsICp0biwgKGludCkgc2l6ZW9mKHR0bikgLSAzLCB0bik7Ci0gCi0gICAgIC8qIFRoaXMgaXMgU3lzdGVtIFYgYmVoYXZpb3IsIGluIGNvbmp1bmN0aW9uIHdpdGggb3VyIHJlcXVpcmVtZW50cyBmb3IKLSAgICAgICogd3JpdGluZyB0ZXJtaW5mbyBlbnRyaWVzLgotZGlmZiAtcnUgbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUgbmN1cnNlcy01LjUvY29uZmlndXJlCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUJMjAwNS0wOS0yNCAyMzo1MDo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBuY3Vyc2VzLTUuNS9jb25maWd1cmUJMjAwNi0wMy0yNiAyMjoyNDo1OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01MDI3LDcgKzUwMjcsNyBAQAotIAlkYXJ3aW4qKQotIAkJRVhUUkFfQ0ZMQUdTPSItbm8tY3BwLXByZWNvbXAiCi0gCQlDQ19TSEFSRURfT1BUUz0iLWR5bmFtaWMiCi0tCQlNS19TSEFSRURfTElCPSckKENDKSAtZHluYW1pY2xpYiAtaW5zdGFsbF9uYW1lICQoREVTVERJUikkKGxpYmRpcikvYGJhc2VuYW1lICRAYCAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1jdXJyZW50X3ZlcnNpb24gJChBQklfVkVSU0lPTikgLW8gJEAnCi0rCQlNS19TSEFSRURfTElCPSckKENDKSAkKENGTEFHUykgLWR5bmFtaWNsaWIgLWluc3RhbGxfbmFtZSAkKERFU1RESVIpJChsaWJkaXIpL2BiYXNlbmFtZSAkQGAgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKEFCSV9WRVJTSU9OKSAtY3VycmVudF92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1vICRAJwotIAkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPWFiaQotIAkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD15ZXMKLSAJCTs7CmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQKaW5kZXggZjFiZWRhMC4uOWFjNTJkMCAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnR4dApAQCAtNSw4ICs1LDE1IEBACiBJbnN0YWxsYXRpb24gcmVxdWlyZXMgYXBwcm94aW1hdGVseSAkSU5TVEFMTF9TSVpFIE1CIG9mIGRpc2sgc3BhY2UsCiBpZ25vcmUgdGhlIG1lc3NhZ2UgdGhhdCBpdCB3aWxsIHRha2UgemVybyBieXRlcy4KIAotWW91IG11c3QgaW5zdGFsbCBvbnRvIHlvdXIgY3VycmVudCBib290IGRpc2ssIGV2ZW4gdGhvdWdoIHRoZQotaW5zdGFsbGVyIGRvZXMgbm90IGVuZm9yY2UgdGhpcywgb3RoZXJ3aXNlIHRoaW5ncyB3aWxsIG5vdCB3b3JrLgorSWYgeW91IGFyZSBhdHRlbXB0aW5nIHRvIGluc3RhbGwgb24gYW4gT1MgWCAxMC44IHN5c3RlbSwgeW91IG1heQorc2VlIGEgbWVzc2FnZSB0aGF0IFB5dGhvbiBjYW4ndCBiZSBpbnN0YWxsZWQgYmVjYXVzZSBpdCBpcyBmcm9tIGFuCit1bmlkZW50aWZpZWQgZGV2ZWxvcGVyLiAgVGhpcyBpcyBiZWNhdXNlIHRoaXMgUHl0aG9uIGluc3RhbGxlcgorcGFja2FnZSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCB0aGUgR2F0ZWtlZXBlciBzZWN1cml0eSBmZWF0dXJlCitpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gIFRvIGFsbG93IFB5dGhvbiB0byBiZSBpbnN0YWxsZWQsIHlvdQorY2FuIG92ZXJyaWRlIHRoZSBHYXRla2VlcGVyIHBvbGljeSBmb3IgdGhpcyBpbnN0YWxsLiAgSW4gdGhlIEZpbmRlciwKK2luc3RlYWQgb2YgZG91YmxlLWNsaWNraW5nLCBjb250cm9sLWNsaWNrIG9yIHJpZ2h0IGNsaWNrIHRoZSAiUHl0aG9uIgoraW5zdGFsbGVyIHBhY2thZ2UgaWNvbi4gIFRoZW4gc2VsZWN0ICJPcGVuIHVzaW5nIC4uLiBJbnN0YWxsZXIiIGZyb20KK3RoZSBjb250ZXh0dWFsIG1lbnUgdGhhdCBhcHBlYXJzLgogCiBQeXRob24gY29uc2lzdHMgb2YgdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSBpbnRlcnByZXRlciwgcGx1cwogYSBzZXQgb2YgcHJvZ3JhbXMgdG8gYWxsb3cgZWFzeSBhY2Nlc3MgdG8gaXQgZm9yIE1hYyB1c2VycyBpbmNsdWRpbmcKQEAgLTE2LDEwICsyMywxMSBAQAogCiAgICAgICAgICAgICAgICAgICAgICoqKiogSU1QT1JUQU5UICoqKioKICAgICAgICAgICAgICAgICAgICAgCi1CZWZvcmUgdXNpbmcgSURMRSBvciBvdGhlciBwcm9ncmFtcyB1c2luZyB0aGUgdGtpbnRlciBncmFwaGljYWwgdXNlcgotaW50ZXJmYWNlIHRvb2xraXQsIHZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCi1mb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zCi1vZiBUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIE1hYyBPUyBYLgorVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIHRraW50ZXIgZ3JhcGhpY2FsIHVzZXIKK2ludGVyZmFjZSB0b29sa2l0LCB5b3UgbWF5IG5lZWQgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YKK3RoZSBUY2wvVGsgZnJhbWV3b3Jrcy4gIFZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCitmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mCitUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLgogCiAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioKIApAQCAtMzIsNSArNDAsMTMgQEAKIHdlbGwuIERvdWJsZS1jbGljayBvbiB0aGUgIlVwZGF0ZSBTaGVsbCBQcm9maWxlIiBjb21tYW5kIHRvIGFkZCB0aGUKICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayB0byB5b3VyIHNoZWxsJ3Mgc2VhcmNoIHBhdGguCiAKK1lvdSBtdXN0IGluc3RhbGwgb250byB5b3VyIGN1cnJlbnQgYm9vdCBkaXNrLCBldmVuIHRob3VnaCB0aGUKK2luc3RhbGxlciBkb2VzIG5vdCBlbmZvcmNlIHRoaXMsIG90aGVyd2lzZSB0aGluZ3Mgd2lsbCBub3Qgd29yay4KKworWW91IGNhbiB2ZXJpZnkgdGhlIGludGVncml0eSBvZiB0aGUgZGlzayBpbWFnZSBmaWxlIGNvbnRhaW5pbmcgdGhlCitpbnN0YWxsZXIgcGFja2FnZSBhbmQgdGhpcyBSZWFkTWUgZmlsZSBieSBjb21wYXJpbmcgaXRzIG1kNSBjaGVja3N1bQorYW5kIHNpemUgd2l0aCB0aGUgdmFsdWVzIHB1Ymxpc2hlZCBvbiB0aGUgcmVsZWFzZSBwYWdlIGxpbmtlZCBhdAoraHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkLworCiBNb3JlIGluZm9ybWF0aW9uIG9uIFB5dGhvbiBpbiBnZW5lcmFsIGNhbiBiZSBmb3VuZCBhdAogaHR0cDovL3d3dy5weXRob24ub3JnLgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKaW5kZXggZDIwOWIxMC4uODZmYmY2MyAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCkBAIC0xLDggKzEsOCBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMDM4XGNvY29hc3VicnRmMzUwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjExMzhcY29jb2FzdWJydGY0NzAKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9CiBccGFwZXJ3MTE5MDRccGFwZXJoMTY4MzZcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzk2NDBcdmlld2gxMDYyMFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccWxccW5hdHVyYWwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTIwLDkgKzIwLDkgQEAKIFwKIAogXGIgTk9URTogCi1cYjAgVGhpcyBwYWNrYWdlIHdpbGwgYnkgZGVmYXVsdCBub3QgdXBkYXRlIHlvdXIgc2hlbGwgcHJvZmlsZSBhbmQgd2lsbCBhbHNvIG5vdCBpbnN0YWxsIGZpbGVzIGluIC91c3IvbG9jYWwuICBEb3VibGUtY2xpY2sgCitcYjAgVGhpcyBwYWNrYWdlIHdpbGwgbm90IHVwZGF0ZSB5b3VyIHNoZWxsIHByb2ZpbGUgYnkgZGVmYXVsdC4gIERvdWJsZS1jbGljayAKIFxiIFVwZGF0ZSBTaGVsbCBQcm9maWxlCi1cYjAgIGF0IGFueSB0aW1lIHRvIG1ha2UgJEZVTExfVkVSU0lPTiB0aGUgZGVmYXVsdCBQeXRob24uXAorXGIwICBhdCBhbnkgdGltZSB0byBtYWtlICRGVUxMX1ZFUlNJT04gdGhlIGRlZmF1bHQgUHl0aG9uIDMgdmVyc2lvbi4gIFRoaXMgdmVyc2lvbiBjYW4gY28tZXhpc3Qgd2l0aCBvdGhlciBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgUHl0aG9uIDMgYW5kIFB5dGhvbiAyLlwKIFwKIAogXGIgSU1QT1JUQU5UOgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uCmluZGV4IDMxZmJmMmYuLmM0YmE2MTYgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZG9jdW1lbnRhdGlvbgorKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24KQEAgLTUsMTkgKzUsMTAgQEAKIEZXS19ET0NESVJfU1VCUEFUSD0iUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbiIKIEZXS19ET0NESVI9IiR7RldLfS8ke0ZXS19ET0NESVJfU1VCUEFUSH0iCiBBUFBESVI9Ii9BcHBsaWNhdGlvbnMvUHl0aG9uICR7UFlWRVJ9IgotREVWX0RPQ0RJUj0iL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uIgogU0hBUkVfRElSPSIke0ZXS30vc2hhcmUiCiBTSEFSRV9ET0NESVI9IiR7U0hBUkVfRElSfS9kb2MvcHl0aG9uJHtQWVZFUn0iCiBTSEFSRV9ET0NESVJfVE9fRldLPSIuLi8uLi8uLiIKIAotIyBtYWtlIGxpbmsgaW4gL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uLyBmb3IgWGNvZGUgdXNlcnMKLWlmIFsgLWQgIiR7REVWX0RPQ0RJUn0iIF07IHRoZW4KLSAgICBpZiBbICEgLWQgIiR7REVWX0RPQ0RJUn0vUHl0aG9uIiBdOyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICIke0RFVl9ET0NESVJ9L1B5dGhvbiIKLSAgICBmaQotICAgIGxuIC1maHMgIiR7RldLX0RPQ0RJUn0iICIke0RFVl9ET0NESVJ9L1B5dGhvbi9SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAke1BZVkVSfSIKLWZpCi0KICMgbWFrZSBsaW5rIGluIC9BcHBsaWNhdGlvbnMvUHl0aG9uIG0ubi8gZm9yIEZpbmRlciB1c2VycwogaWYgWyAtZCAiJHtBUFBESVJ9IiBdOyB0aGVuCiAgICAgbG4gLWZocyAiJHtGV0tfRE9DRElSfS9pbmRleC5odG1sIiAiJHtBUFBESVJ9L1B5dGhvbiBEb2N1bWVudGF0aW9uLmh0bWwiCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yayBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCmluZGV4IDlmYzkxNTEuLmViMDgyOTcgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCisrKyBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCkBAIC04LDE0ICs4LDI0IEBACiAKICIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAotICAgIC14IGJhZHN5bnRheCAteCBzaXRlLXBhY2thZ2VzIFwKKyAgICAtZiAteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfSIKIAogIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCi0gICAgLXggYmFkc3ludGF4IC14IHNpdGUtcGFja2FnZXMgXAorICAgIC1mIC14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9IgogCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyAgICAtZiAteCBiYWRzeW50YXggXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L3NpdGUtcGFja2FnZXMiCisKKyIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSAtTyBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorICAgIC1mIC14IGJhZHN5bnRheCBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKKwogY2hncnAgLVIgYWRtaW4gIiR7RldLfSIKIGNobW9kIC1SIGcrdyAiJHtGV0t9IgogCmRpZmYgLS1naXQgYS9NYWMvTWFrZWZpbGUuaW4gYi9NYWMvTWFrZWZpbGUuaW4KaW5kZXggOGE2MmE5MC4uMzU0YzFmZCAxMDA2NDQKLS0tIGEvTWFjL01ha2VmaWxlLmluCisrKyBiL01hYy9NYWtlZmlsZS5pbgpAQCAtNDAsMTQgKzQwLDEzIEBACiBJTlNUQUxMX0RBVEE9QElOU1RBTExfREFUQUAKIExOPUBMTkAKIFNUUklQRkxBRz0tcwotQ1BNQUM9L0RldmVsb3Blci9Ub29scy9DcE1hYworQ1BNQUM9Q3BNYWMKIAogQVBQVEVNUExBVEU9JChzcmNkaXIpL1Jlc291cmNlcy9hcHAKLUFQUFNVQkRJUlM9TWFjT1MgUmVzb3VyY2VzIAorQVBQU1VCRElSUz1NYWNPUyBSZXNvdXJjZXMKIGNvbXBpbGVhbGw9JChzcmNkaXIpLy4uL0xpYi9jb21waWxlYWxsLnB5CiAKLWluc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUgXAotCWNoZWNrYXBwbGVweXRob24KK2luc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUKIAogaW5zdGFsbF9weXRob253OiBweXRob253CiAJJChJTlNUQUxMX1BST0dSQU0pICQoU1RSSVBGTEFHKSBweXRob253ICIkKERFU1RESVIpJChwcmVmaXgpL2Jpbi9weXRob253JChWRVJTSU9OKSIKQEAgLTcyLDcgKzcxLDcgQEAKIAlmb3IgZm4gaW4gcHl0aG9uMyBweXRob253MyBpZGxlMyBweWRvYzMgcHl0aG9uMy1jb25maWcgXAogCQkgIHB5dGhvbiQoVkVSU0lPTikgcHl0aG9udyQoVkVSU0lPTikgaWRsZSQoVkVSU0lPTikgXAogCQkgIHB5ZG9jJChWRVJTSU9OKSBweXRob24kKFZFUlNJT04pLWNvbmZpZyAydG8zIFwKLQkJICAydG8zLSQoVkVSU0lPTikgO1wKKwkJICAydG8zLSQoVkVSU0lPTikgcHl2ZW52IHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTkzLDcgKzkyLDcgQEAKIAkJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICIkKERFU1RESVIpJChGUkFNRVdPUktVTklYVE9PTFNQUkVGSVgpL2JpbiIgO1wKIAlmaQogCWZvciBmbiBpbiBweXRob24kKFZFUlNJT04pIHB5dGhvbnckKFZFUlNJT04pIGlkbGUkKFZFUlNJT04pIFwKLQkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pO1wKKwkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pIHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTE5NiwxNCArMTk1LDYgQEAKIAkJIiQoREVTVERJUikkKHByZWZpeCkvc2hhcmUvZG9jL3B5dGhvbiQoVkVSU0lPTikvZXhhbXBsZXMvVG9vbHMiIDsgXAogCQljaG1vZCAtUiB1Z28rclgsZ28tdyAiJChERVNURElSKSQocHJlZml4KS9zaGFyZS9kb2MvcHl0aG9uJChWRVJTSU9OKS9leGFtcGxlcy9Ub29scyIKIAotCi1jaGVja2FwcGxlcHl0aG9uOiAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weQotCUBpZiAhICQoUlVOU0hBUkVEKSAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSAtbjsgdGhlbiBcCi0JCWVjaG8gIiogV0FSTklORzogQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgd2lsbCBoYXZlIHRyb3VibGUgYnVpbGRpbmcgZXh0ZW5zaW9ucyBmcm9tIG5vdyBvbi4iOyBcCi0JCWVjaG8gIiogV0FSTklORzogUnVuICQoc3JjZGlyKS9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5IHdpdGggXCJzdWRvXCIgdG8gZml4IHRoaXMuIjsgXAotCWZpCi0KLQogY2xlYW46CiAJcm0gcHl0aG9udwogCWNkIFB5dGhvbkxhdW5jaGVyICYmIG1ha2UgY2xlYW4KZGlmZiAtLWdpdCBhL01hYy9SRUFETUUgYi9NYWMvUkVBRE1FCmluZGV4IDY4NTNkYjQuLmY3YmM2YzMgMTAwNjQ0Ci0tLSBhL01hYy9SRUFETUUKKysrIGIvTWFjL1JFQURNRQpAQCAtMSw2ICsxLDEzIEBACi09PT09PT09PT09PT0KLU1hY09TWCBOb3RlcwotPT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09CitQeXRob24gb24gTWFjIE9TIFggUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKzpBdXRob3JzOgorICAgIEphY2sgSmFuc2VuICgyMDA0LTA3KSwKKyAgICBSb25hbGQgT3Vzc29yZW4gKDIwMTAtMDQpLAorICAgIE5lZCBEZWlseSAoMjAxMi0wNikKKworOlZlcnNpb246IDMuMy4wCiAKIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBzb21lIE1hYyBPUyBYIHNwZWNpZmljIGZlYXR1cmVzIGluCiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KQEAgLTEyLDExICsxOSwxMSBAQAogICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAogICBpbmZvcm1hdGlvbiBvbiBmcmFtZXdvcmtzLgogCi0gIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXQgaW5zdGFsbGVkCisgIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXMgaW5zdGFsbGVkCiAgIGludG8gdGhhdCBkaXJlY3RvcnkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbCBhIHB5dGhvbiBmcmFtZXdvcmsgaW50bwogICB5b3VyIGhvbWUgZGlyZWN0b3J5OjoKIAotICAgICAkIGNvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAgJCAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKICAgICAgJCBtYWtlICYmIG1ha2UgaW5zdGFsbAogCiAgIFRoaXMgd2lsbCBpbnN0YWxsIHRoZSBmcmFtZXdvcmsgaXRzZWxmIGluIGBgL1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3NgYCwKQEAgLTMzLDkgKzQwLDEwIEBACiAgIENyZWF0ZSBhIHVuaXZlcnNhbCBiaW5hcnkgYnVpbGQgb2Ygb2YgUHl0aG9uLiBUaGlzIGNhbiBiZSB1c2VkIHdpdGggYm90aAogICByZWd1bGFyIGFuZCBmcmFtZXdvcmsgYnVpbGRzLgogCi0gIFRoZSBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXMgd2hpY2ggT1NYIFNESyBzaG91bGQgYmUgdXNlZCB0byBwZXJmb3JtIHRoZQotICBidWlsZC4gVGhpcyBkZWZhdWx0cyB0byBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAsIHNwZWNpZnkgCi0gIGBgL2BgIHdoZW4gYnVpbGRpbmcgb24gYSAxMC41IHN5c3RlbSwgZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIDY0LWJpdCBjb2RlLgorICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVzIHdoaWNoIE9TIFggU0RLIHNob3VsZCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlCisgIGJ1aWxkLiAgSWYgeGNvZGVidWlsZCBpcyBhdmFpbGFibGUgYW5kIGNvbmZpZ3VyZWQsIHRoaXMgZGVmYXVsdHMgdG8KKyAgdGhlIFhjb2RlIGRlZmF1bHQgTWFjT1MgWCBTREssIG90aGVyd2lzZSBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAKKyAgaWYgYXZhaWxhYmxlIG9yIGBgL2BgIGlmIG5vdC4KIAogICBTZWUgdGhlIHNlY3Rpb24gX2BCdWlsZGluZyBhbmQgdXNpbmcgYSB1bml2ZXJzYWwgYmluYXJ5IG9mIFB5dGhvbiBvbiBNYWMgT1MgWGAKICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC00Myw3ICs1MSw5IEBACiAqIGBgLS13aXRoLXVuaXZlcmFsLWFyY2hzPVZBTFVFYGAKIAogICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMgCi0gIG9ubHkgdmFsaWQgd2hlbiBgYC0tZW5hYmxlLXVuaXZlcnNhbHNka2BgIGlzIHNwZWNpZmllZC4KKyAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKKyAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cworICB0byBgYGludGVsYGAuCiAKIAogQnVpbGRpbmcgYW5kIHVzaW5nIGEgdW5pdmVyc2FsIGJpbmFyeSBvZiBQeXRob24gb24gTWFjIE9TIFgKQEAgLTUyLDkgKzYyLDE0IEBACiAxLiBXaGF0IGlzIGEgdW5pdmVyc2FsIGJpbmFyeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgYm90aCBQUEMgYW5kIGkzODYKLWFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUgc3BlZWQgb24gYm90aCBjbGFzc2ljIHBvd2VycGMgYmFzZWQgbWFjcyBhbmQKLXRoZSBuZXdlciBpbnRlbCBiYXNlZCBtYWNzLgorQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgbW9yZSB0aGFuIG9uZQorQ1BVIGFyY2hpdGVjdHVyZS4gIEEgdW5pdmVyc2FsIE9TIFggZXhlY3V0YWJsZSBmaWxlIG9yIGxpYnJhcnkgY29tYmluZXMgdGhlCithcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBpbnRvIG9uZSBmaWxlIGFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUKK3NwZWVkIG9uIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4gIFVuaXZlcnNhbCBmaWxlcyB3ZXJlIGludHJvZHVjZWQgaW4KK09TIFggMTAuNCB0byBhZGQgc3VwcG9ydCBmb3IgSW50ZWwtYmFzZWQgTWFjcyB0byB0aGUgZXhpc3RpbmcgUG93ZXJQQyAoUFBDKQorbWFjaGluZXMuICBJbiBPUyBYIDEwLjUgc3VwcG9ydCB3YXMgZXh0ZW5kZWQgdG8gNjQtYml0IEludGVsIGFuZCA2NC1iaXQgUFBDCithcmNoaXRlY3R1cmVzLiAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKK29mIGFyY2hpdGVjdHVyZXMgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCB0b29scyBhbmQgT1MgWCB2ZXJzaW9uIGluIHVzZS4KIAogMi4gSG93IGRvIEkgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3LDM4ICs4Miw1NSBAQAogICAkIG1ha2UgaW5zdGFsbAogCiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgd2l0aCBhIGZyYW1ld29yayBidWlsZCBvZiBweXRob24sIGJ1dCBhbHNvIHdpdGggYSBjbGFzc2ljCi11bml4IGJ1aWxkLiBFaXRoZXIgd2F5IHlvdSB3aWxsIGhhdmUgdG8gYnVpbGQgcHl0aG9uIG9uIE1hYyBPUyBYIDEwLjQgKG9yIGxhdGVyKQotd2l0aCBYY29kZSAyLjEgKG9yIGxhdGVyKS4gWW91IGFsc28gaGF2ZSB0byBpbnN0YWxsIHRoZSAxMC40dSBTREsgd2hlbiAKLWluc3RhbGxpbmcgWGNvZGUuCit1bml4IGJ1aWxkLiBVbml2ZXJzYWwgYnVpbGRzIHdlcmUgZmlyc3Qgc3VwcG9ydGVkIHdpdGggT1MgWCAxMC40IHdpdGggWGNvZGUgMi4xCithbmQgdGhlIDEwLjR1IFNESy4gIFN0YXJ0aW5nIHdpdGggWGNvZGUgMyBhbmQgT1MgWCAxMC41LCBtb3JlIGNvbmZpZ3VyYXRpb25zIGFyZQorYXZhaWxhYmxlLgogCi0yLjEgRmxhdm91cnMgb2YgdW5pdmVyc2FsIGJpbmFyaWVzCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisyLjEgRmxhdm9ycyBvZiB1bml2ZXJzYWwgYmluYXJpZXMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1JdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3VycyBvZiB0aGUgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCwKLXRoZSBkZWZhdWx0IGlzIGEgMzItYml0IG9ubHkgYmluYXJ5IChpMzg2IGFuZCBwcGMpLiBUaGUgZmxhdm91ciBjYW4gYmUKLXNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz1WQUxVRWBgLiBUaGUgZm9sbG93aW5nCitJdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3JzIG9mIHRoZSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkLAordGhlIGRlZmF1bHQgaXMgYSAzMi1iaXQgb25seSBiaW5hcnkgKGkzODYgYW5kIHBwYykgaW4gYnVpbGQgZW52aXJvbm1lbnRzIHRoYXQKK3N1cHBvcnQgcHBjICgxMC40IHdpdGggWGNvZGUgMiwgMTAuNSBhbmQgMTAuNiB3aXRoIFhjb2RlIDMpIG9yIGFuCitJbnRlbC0zMi8tNjQtYml0IGJpbmFyeSAoaTM4NiBhbmQgWDg2XzY0KSBpbiBidWlsZCBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QKK3N1cHBvcnQgcHBjIChYY29kZSA0IG9uIDEwLjYgYW5kIGxhdGVyIHN5c3RlbXMpLiAgVGhlIGZsYXZvciBjYW4gYmUgc3BlY2lmaWVkCit1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbiBgYC0td2l0aC11bml2ZXJzYWwtYXJjaHM9VkFMVUVgYC4gVGhlIGZvbGxvd2luZwogdmFsdWVzIGFyZSBhdmFpbGFibGU6CiAKKyAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKKwogICAqIGBgMzItYml0YGA6ICAgYGBwcGNgYCwgYGBpMzg2YGAKIAorICAqIGBgMy13YXlgYDoJICBgYGkzODZgYCwgYGB4ODZfNjRgYCwgYGBwcGNgYAorCiAgICogYGA2NC1iaXRgYDogICBgYHBwYzY0YGAsIGBgeDg2XzY0YGAKIAogICAqIGBgYWxsYGA6ICAgICAgYGBwcGNgYCwgYGBwcGM2NGBgLCBgYGkzODZgYCwgYGB4ODZfNjRgYAogCi0gICogYGAzLXdheWBgOgkgIGBgcHBjYGAsIGBgaTM4NmBgIGFuZCBgYHg4Nl82NGBgCi0KLSAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKLQogVG8gYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgaW5jbHVkZXMgYSA2NC1iaXQgYXJjaGl0ZWN0dXJlLCB5b3UgbXVzdCBidWlsZAotb24gYSBzeXN0ZW0gcnVubmluZyBPU1ggMTAuNSBvciBsYXRlci4gVGhlIGBgYWxsYGAgZmxhdm91ciBjYW4gb25seSBiZSBidWlsdCBvbgotT1NYIDEwLjUuCitvbiBhIHN5c3RlbSBydW5uaW5nIE9TIFggMTAuNSBvciBsYXRlci4gIFRoZSBgYGFsbGBgIGFuZCBgYDY0LWJpdGBgIGZsYXZvcnMgY2FuCitvbmx5IGJlIGJ1aWx0IHdpdGggYW4gMTAuNSBTREsgYmVjYXVzZSBgYHBwYzY0YGAgc3VwcG9ydCB3YXMgb25seSBpbmNsdWRlZCB3aXRoCitPUyBYIDEwLjUuICBBbHRob3VnaCBsZWdhY3kgYGBwcGNgYCBzdXBwb3J0IHdhcyBpbmNsdWRlZCB3aXRoIFhjb2RlIDMgb24gT1MgWAorMTAuNiwgaXQgd2FzIHJlbW92ZWQgaW4gWGNvZGUgNCwgdmVyc2lvbnMgb2Ygd2hpY2ggd2VyZSByZWxlYXNlZCBvbiBPUyBYIDEwLjYKK2FuZCB3aGljaCBpcyB0aGUgY3VycmVudCBzdGFuZGFyZCBmb3IgT1MgWCAxMC43IGFuZCAxMC44LiAgVG8gc3VtbWFyaXplLCB0aGUKK2ZvbGxvd2luZyBjb21iaW5hdGlvbnMgb2YgU0RLcyBhbmQgdW5pdmVyc2FsLWFyY2hzIGZsYXZvcnMgYXJlIGF2YWlsYWJsZToKIAotVGhlIG1ha2VmaWxlIGZvciBhIGZyYW1ld29yayBidWlsZCB3aWxsIGluc3RhbGwgYGBweXRob24zMmBgIGFuZCBgYHB5dGhvbnczMmBgIAotYmluYXJpZXMgd2hlbiB0aGUgdW5pdmVyc2FsIGFyY2hpdGVjdXJlcyBpbmNsdWRlcyBhdCBsZWFzdCBvbmUgMzItYml0IGFyY2hpdGVjdHVyZQotKHRoYXQgaXMsIGZvciBhbGwgZmxhdm91cnMgYnV0IGBgNjQtYml0YGApLgorICAqIDEwLjR1IFNESyB3aXRoIFhjb2RlIDIgc3VwcG9ydHMgYGAzMi1iaXRgYCBvbmx5CiAKLVJ1bm5pbmcgYSBzcGVjaWZpYyBhcmNoaWN0dXJlCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorICAqIDEwLjUgU0RLIHdpdGggWGNvZGUgMy4xLnggc3VwcG9ydHMgYWxsIGZsYXZvcnMKKworICAqIDEwLjYgU0RLIHdpdGggWGNvZGUgMy4yLnggc3VwcG9ydHMgYGBpbnRlbGBgLCBgYDMtd2F5YGAsIGFuZCBgYDMyLWJpdGBgCisKKyAgKiAxMC42IFNESyB3aXRoIFhjb2RlIDQgc3VwcG9ydHMgYGBpbnRlbGBgIG9ubHkKKworICAqIDEwLjcgYW5kIDEwLjggU0RLcyB3aXRoIFhjb2RlIDQgc3VwcG9ydCBgYGludGVsYGAgb25seQorCitUaGUgbWFrZWZpbGUgZm9yIGEgZnJhbWV3b3JrIGJ1aWxkIHdpbGwgYWxzbyBpbnN0YWxsIGBgcHl0aG9uMy4zLTMyYGAKK2JpbmFyaWVzIHdoZW4gdGhlIHVuaXZlcnNhbCBhcmNoaXRlY3R1cmUgaW5jbHVkZXMgYXQgbGVhc3Qgb25lIDMyLWJpdAorYXJjaGl0ZWN0dXJlICh0aGF0IGlzLCBmb3IgYWxsIGZsYXZvcnMgYnV0IGBgNjQtYml0YGApLgorCitSdW5uaW5nIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIFlvdSBjYW4gcnVuIGNvZGUgdXNpbmcgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgdXNpbmcgdGhlIGBgYXJjaGBgIGNvbW1hbmQ6OgogCkBAIC0xMTMsNiArMTQ1LDE0IEBACiB3cmFwcGVyIHRvb2xzIHRoYXQgZXhlY3V0ZSB0aGUgcmVhbCBpbnRlcnByZXRlciB3aXRob3V0IGVuc3VyaW5nIHRoYXQgdGhlCiByZWFsIGludGVycHJldGVyIHJ1bnMgd2l0aCB0aGUgc2FtZSBhcmNoaXRlY3R1cmUuCiAKK1VzaW5nIGBgYXJjaGBgIGlzIG5vdCBhIHBlcmZlY3Qgc29sdXRpb24gYXMgdGhlIHNlbGVjdGVkIGFyY2hpdGVjdHVyZSB3aWxsCitub3QgYXV0b21hdGljYWxseSBjYXJyeSB0aHJvdWdoIHRvIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBwcm9ncmFtcyBhbmQgdGVzdHMKK3VuZGVyIHRoYXQgUHl0aG9uLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgUHl0aG9uIGludGVycHJldGVycyBsYXVuY2hlZCBpbgorc3VicHJvY2Vzc2VzIGFsc28gcnVuIGluIDMyLWJpdC1tb2RlIGlmIHRoZSBtYWluIGludGVycHJldGVyIGRvZXMsIHVzZQorYSBgYHB5dGhvbjMuMy0zMmBgIGJpbmFyeSBhbmQgdXNlIHRoZSB2YWx1ZSBvZiBgYHN5cy5leGVjdXRhYmxlYGAgYXMgdGhlCitgYHN1YnByb2Nlc3NgYCBgYFBvcGVuYGAgZXhlY3V0YWJsZSB2YWx1ZS4KKworCiBCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYLgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMTIyLDE3ICsxNjIsMTcgQEAKIAogVGhlIG1haW4gcmVhc29uIGlzIGJlY2F1c2UgeW91IHdhbnQgdG8gY3JlYXRlIEdVSSBwcm9ncmFtcyBpbiBQeXRob24uIFdpdGggdGhlCiBleGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4gCi1mcm9tIGEgZnVsbGJsb3duIE1hY09TWCBhcHBsaWNhdGlvbiAoYSAiLmFwcCIgYnVuZGxlKS4KK2Zyb20gYSBNYWMgT1NYIGFwcGxpY2F0aW9uIGJ1bmRsZSAoIi5hcHAiKS4KIAogV2hpbGUgaXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY3JlYXRlIGEgLmFwcCB3aXRob3V0IHVzaW5nIGZyYW1ld29ya3MgeW91CiB3aWxsIGhhdmUgdG8gZG8gdGhlIHdvcmsgeW91cnNlbGYgaWYgeW91IHJlYWxseSB3YW50IHRoaXMuCiAKIEEgc2Vjb25kIHJlYXNvbiBmb3IgdXNpbmcgZnJhbWV3b3JrcyBpcyB0aGF0IHRoZXkgcHV0IFB5dGhvbi1yZWxhdGVkIGl0ZW1zIGluCiBvbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kIAotIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMi42IiwKLSIzLjEiLCBldGMuLiAgVGhpcyBzaW1wbGlmaWVzIG1hdHRlcnMgZm9yIHVzZXJzIGluc3RhbGxpbmcgCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiB3aGVyZSBgYDxWRVJTSU9OPmBgIGNhbiBiZSBlLmcuICIzLjMiLAorIjIuNyIsIGV0Yy4gIFRoaXMgc2ltcGxpZmllcyBtYXR0ZXJzIGZvciB1c2VycyBpbnN0YWxsaW5nCiBQeXRob24gZnJvbSBhIGJpbmFyeSBkaXN0cmlidXRpb24gaWYgdGhleSB3YW50IHRvIGdldCByaWQgb2YgaXQgYWdhaW4uIE1vcmVvdmVyLAotZHVlIHRvIHRoZSB3YXkgZnJhbWV3b3JrcyB3b3JrIGEgdXNlciB3aXRob3V0IGFkbWluIHByaXZpbGVnZXMgY2FuIGluc3RhbGwgYSAKK2R1ZSB0byB0aGUgd2F5IGZyYW1ld29ya3Mgd29yaywgYSB1c2VyIHdpdGhvdXQgYWRtaW4gcHJpdmlsZWdlcyBjYW4gaW5zdGFsbCBhCiBiaW5hcnkgZGlzdHJpYnV0aW9uIGluIGhpcyBvciBoZXIgaG9tZSBkaXJlY3Rvcnkgd2l0aG91dCByZWNvbXBpbGF0aW9uLgogCiAyLiBIb3cgZG9lcyBhIGZyYW1ld29yayBQeXRob24gZGlmZmVyIGZyb20gYSBub3JtYWwgc3RhdGljIFB5dGhvbj8KQEAgLTE0OCwxOCArMTg4LDI1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFllcywgcHJvYmFibHkuICBJZiB5b3Ugd2FudCBUa2ludGVyIHN1cHBvcnQgeW91IG5lZWQgdG8gZ2V0IHRoZSBPU1ggQXF1YVRrIAotZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuIElmCi15b3Ugd2FudCB3eFB5dGhvbiB5b3UgbmVlZCB0byBnZXQgdGhhdC4gSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0Ci1QeU9iakMuIAorZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuICBCZQorYXdhcmUsIHRob3VnaCwgdGhhdCB0aGUgQ29jb2EtYmFzZWQgQXF1YVRrJ3Mgc3VwcGxpZWQgc3RhcnRpbmcgd2l0aCBPUyBYCisxMC42IGhhdmUgcHJvdmVuIHRvIGJlIHVuc3RhYmxlLiAgSWYgcG9zc2libGUsIHlvdSBzaG91bGQgY29uc2lkZXIKK2luc3RhbGxpbmcgYSBuZXdlciB2ZXJzaW9uIGJlZm9yZSBidWlsZGluZyBvbiBPUyBYIDEwLjYgb3IgbGF0ZXIsIHN1Y2ggYXMKK3RoZSBBY3RpdmVUY2wgOC41LiAgU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvLiAgSWYgeW91CithcmUgYnVpbGRpbmcgd2l0aCBhbiBTREssIGVuc3VyZSB0aGF0IHRoZSBuZXdlciBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlCitzZWVuIGluIHRoZSBTREsncyBgYExpYnJhcnkvRnJhbWV3b3Jrc2BgIGRpcmVjdG9yeTsgeW91IG1heSBuZWVkIHRvCittYW51YWxseSBjcmVhdGUgc3ltbGlua3MgdG8gdGhlaXIgaW5zdGFsbGVkIGxvY2F0aW9uLCBgYC9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK0lmIHlvdSB3YW50IHd4UHl0aG9uIHlvdSBuZWVkIHRvIGdldCB0aGF0LgorSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0IFB5T2JqQy4KIAogNC4gSG93IGRvIEkgYnVpbGQgYSBmcmFtZXdvcmsgUHl0aG9uPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgd2lsbCBjcmVhdGUgYSBjb3VwbGUgb2YgcHl0aG9uLXJlbGF0ZWQKLWFwcGxpY2F0aW9ucyAoZnVsbGJsb3duIE9TWCAuYXBwIGFwcGxpY2F0aW9ucywgdGhhdCBpcykgaW4KLSIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iLCBhbmQgYSBoaWRkZW4gaGVscGVyIGFwcGxpY2F0aW9uIFB5dGhvbi5hcHAgCi1pbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50byAKLS91c3IvbG9jYWwvYmluLiAgSW4gYWRkaXRpb24gaXQgaGFzIGEgdGFyZ2V0ICJpbnN0YWxsbWFjc3VidHJlZSIgdGhhdCBpbnN0YWxscyAKK2FwcGxpY2F0aW9ucyAoZnVsbC1ibG93biBPU1ggLmFwcCBhcHBsaWNhdGlvbnMsIHRoYXQgaXMpIGluCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiwgYW5kIGEgaGlkZGVuIGhlbHBlciBhcHBsaWNhdGlvbiBQeXRob24uYXBwCitpbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50bworL3Vzci9sb2NhbC9iaW4uICBJbiBhZGRpdGlvbiBpdCBoYXMgYSB0YXJnZXQgImluc3RhbGxtYWNzdWJ0cmVlIiB0aGF0IGluc3RhbGxzCiB0aGUgcmVsZXZhbnQgcG9ydGlvbnMgb2YgdGhlIE1hYyBzdWJ0cmVlIGludG8gdGhlIFB5dGhvbi5mcmFtZXdvcmsuCiAKIEl0IGlzIG5vcm1hbGx5IGludm9rZWQgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBtYWluIE1ha2VmaWxlLCBhcyB0aGUgbGFzdCBzdGVwCkBAIC0xNzEsMTcgKzIxOCwxNSBAQAogIAogIDMuIG1ha2UgaW5zdGFsbAogCi1UaGlzIHNlcXVlbmNlIHdpbGwgcHV0IHRoZSBmcmFtZXdvcmsgaW4gL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmssCi10aGUgYXBwbGljYXRpb25zIGluICIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iIGFuZCB0aGUgdW5peCB0b29scyBpbiAKLS91c3IvbG9jYWwvYmluLgorVGhpcyBzZXF1ZW5jZSB3aWxsIHB1dCB0aGUgZnJhbWV3b3JrIGluIGBgL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmtgYCwKK3RoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4gCitgYC91c3IvbG9jYWwvYmluYGAuCiAKLUluc3RhbGxpbmcgaW4gYW5vdGhlciBwbGFjZSwgZm9yIGluc3RhbmNlICRIT01FL0xpYnJhcnkvRnJhbWV3b3JrcyBpZiB5b3UgaGF2ZQotbm8gYWRtaW4gcHJpdmlsZWdlcyBvbiB5b3VyIG1hY2hpbmUsIGhhcyBvbmx5IGJlZW4gdGVzdGVkIHZlcnkgbGlnaHRseS4gVGhpcwotY2FuIGJlIGRvbmUgYnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZS1mcmFtZXdvcms9JEhPTUUvTGlicmFyeS9GcmFtZXdvcmtzLgotVGhlIG90aGVyIHR3byBkaXJlY3RvcmllcywgIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uLTxWRVJTSU9OPiIgYW5kCi0vdXNyL2xvY2FsL2Jpbiwgd2lsbCB0aGVuIGFsc28gYmUgZGVwb3NpdGVkIGluICRIT01FLiBUaGlzIGlzIHN1Yi1vcHRpbWFsIGZvcgotdGhlIHVuaXggdG9vbHMsIHdoaWNoIHlvdSB3b3VsZCB3YW50IGluICRIT01FL2JpbiwgYnV0IHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvCi1maXggdGhpcyByaWdodCBub3cuCitJbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSBgYCRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrc2BgIGlmIHlvdQoraGF2ZSBubyBhZG1pbiBwcml2aWxlZ2VzIG9uIHlvdXIgbWFjaGluZSwgaXMgcG9zc2libGUuIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAorYnkgY29uZmlndXJpbmcgd2l0aCBgYC0tZW5hYmxlLWZyYW1ld29yaz0kSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK1RoZSBvdGhlciB0d28gZGlyZWN0b3JpZXMgd2lsbCB0aGVuIGFsc28gYmUgaW5zdGFsbGVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnksCithdCBgYCRIT01FL0FwcGxpY2F0aW9ucy9QeXRob24tPFZFUlNJT04+YGAgYW5kIGBgJEhPTUUvYmluYGAuCiAKIElmIHlvdSB3YW50IHRvIGluc3RhbGwgc29tZSBwYXJ0LCBidXQgbm90IGFsbCwgcmVhZCB0aGUgbWFpbiBNYWtlZmlsZS4gVGhlCiBmcmFtZXdvcmtpbnN0YWxsIGlzIGNvbXBvc2VkIG9mIGEgY291cGxlIG9mIHN1Yi10YXJnZXRzIHRoYXQgaW5zdGFsbCB0aGUKQEAgLTE4OSw3ICsyMzQsNyBAQAogCiBUaGVyZSBpcyBhbiBleHRyYSB0YXJnZXQgZnJhbWV3b3JraW5zdGFsbGV4dHJhcyB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZQogbm9ybWFsIGZyYW1ld29ya2luc3RhbGwgd2hpY2ggaW5zdGFsbHMgdGhlIFRvb2xzIGRpcmVjdG9yeSBpbnRvCi0iL0FwcGxpY2F0aW9ucy9NYWNQeXRob24gPFZFUlNJT04+IiwgdGhpcyBpcyB1c2VmdWwgZm9yIGJpbmFyeQorIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIsIHRoaXMgaXMgdXNlZnVsIGZvciBiaW5hcnkKIGRpc3RyaWJ1dGlvbnMuCiAKIFdoYXQgZG8gYWxsIHRoZXNlIHByb2dyYW1zIGRvPwpAQCAtMjAyLDI0ICsyNDcsNDEgQEAKIGRvdWJsZS1jbGljayBhIC5weSwgLnB5YyBvciAucHl3IGZpbGUuIEZvciB0aGUgZmlyc3QgdHdvIGl0IGNyZWF0ZXMgYSBUZXJtaW5hbAogd2luZG93IGFuZCBydW5zIHRoZSBzY3JpcHRzIHdpdGggdGhlIG5vcm1hbCBjb21tYW5kLWxpbmUgUHl0aG9uLiBGb3IgdGhlCiBsYXR0ZXIgaXQgcnVucyB0aGUgc2NyaXB0IGluIHRoZSBQeXRob24uYXBwIGludGVycHJldGVyIHNvIHRoZSBzY3JpcHQgY2FuIGRvCi1HVUktdGhpbmdzLiBLZWVwIHRoZSAiYWx0IiBrZXkgZGVwcmVzc2VkIHdoaWxlIGRyYWdnaW5nIG9yIGRvdWJsZS1jbGlja2luZyBhCi1zY3JpcHQgdG8gc2V0IHJ1bnRpbWUgb3B0aW9ucy4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgc2V0IG9uY2UgYW5kIGZvciBhbGwKK0dVSS10aGluZ3MuIEtlZXAgdGhlIGBgT3B0aW9uYGAga2V5IGRlcHJlc3NlZCB3aGlsZSBkcmFnZ2luZyBvciBkb3VibGUtY2xpY2tpbmcKK2Egc2NyaXB0IHRvIHNldCBydW50aW1lIG9wdGlvbnMuIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHNldCBwZXJzaXN0ZW50bHkKIHRocm91Z2ggUHl0aG9uTGF1bmNoZXIncyBwcmVmZXJlbmNlcyBkaWFsb2cuCiAKLVRoZSBjb21tYW5kbGluZSBzY3JpcHRzIC91c3IvbG9jYWwvYmluL3B5dGhvbiBhbmQgcHl0aG9udyBjYW4gYmUgdXNlZCB0byBydW4KLW5vbi1HVUkgYW5kIEdVSSBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHJlc3BlY3RpdmVseS4KK1RoZSBwcm9ncmFtIGBgcHl0aG9ueC54YGAgcnVucyBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBWYXJpb3VzCitjb21wYXRpYmlsaXR5IGFsaWFzZXMgYXJlIGFsc28gaW5zdGFsbGVkLCBpbmNsdWRpbmcgYGBweXRob253eC54YGAgd2hpY2gKK2luIGVhcmx5IHJlbGVhc2VzIG9mIFB5dGhvbiBvbiBPUyBYIHdhcyByZXF1aXJlZCB0byBydW4gR1VJIHByb2dyYW1zLiAgSW4KK2N1cnJlbnQgcmVsZWFzZXMsIHRoZSBgYHB5dGhvbngueGBgIGFuZCBgYHB5dGhvbnd4LnhgYCBjb21tYW5kcyBhcmUgaWRlbnRpY2FsLgogCiBIb3cgZG8gSSBjcmVhdGUgYSBiaW5hcnkgZGlzdHJpYnV0aW9uPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotR28gdG8gdGhlIGRpcmVjdG9yeSAiTWFjL09TWC9CdWlsZFNjcmlwdCIuIFRoZXJlIHlvdSdsbCBmaW5kIGEgc2NyaXB0IAotImJ1aWxkLWluc3RhbGxlci5weSIgdGhhdCBkb2VzIGFsbCB0aGUgd29yay4gVGhpcyB3aWxsIGRvd25sb2FkIGFuZCBidWlsZAorRG93bmxvYWQgYW5kIHVucGFjayB0aGUgc291cmNlIHJlbGVhc2UgZnJvbSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvLgorR28gdG8gdGhlIGRpcmVjdG9yeSBgYE1hYy9CdWlsZFNjcmlwdGBgLiBUaGVyZSB5b3Ugd2lsbCBmaW5kIGEgc2NyaXB0CitgYGJ1aWxkLWluc3RhbGxlci5weWBgIHRoYXQgZG9lcyBhbGwgdGhlIHdvcmsuIFRoaXMgd2lsbCBkb3dubG9hZCBhbmQgYnVpbGQKIGEgbnVtYmVyIG9mIDNyZC1wYXJ0eSBsaWJhcmllcywgY29uZmlndXJlcyBhbmQgYnVpbGRzIGEgZnJhbWV3b3JrIFB5dGhvbiwKIGluc3RhbGxzIGl0LCBjcmVhdGVzIHRoZSBpbnN0YWxsZXIgcGFja2FnZSBmaWxlcyBhbmQgdGhlbiBwYWNrcyB0aGlzIGluIGEKLURNRyBpbWFnZS4KK0RNRyBpbWFnZS4gIFRoZSBzY3JpcHQgYWxzbyBidWlsZHMgYW4gSFRNTCBjb3B5IG9mIHRoZSBjdXJyZW50IFB5dGhvbgorZG9jdW1lbnRhdGlvbiBzZXQgZm9yIHRoaXMgcmVsZWFzZSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmcmFtZXdvcmsuICBUaGUKK2luc3RhbGxlciBwYWNrYWdlIHdpbGwgY3JlYXRlIGxpbmtzIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB1c2UgYnkgSURMRSwKK3B5ZG9jLCBzaGVsbCB1c2VycywgYW5kIEZpbmRlciB1c2VyLgogCi1UaGUgc2NyaXB0IHdpbGwgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5LCB5b3UnbGwgdGhlcmVmb3JlIGhhdmUgdG8gcnVuIHRoaXMKK1RoZSBzY3JpcHQgd2lsbCBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgc28geW91J2xsIHRoZXJlZm9yZSBoYXZlIHRvIHJ1biB0aGlzCiBzY3JpcHQgb24gTWFjIE9TIFggMTAuNCBvciBsYXRlciBhbmQgd2l0aCBYY29kZSAyLjEgb3IgbGF0ZXIgaW5zdGFsbGVkLgorSG93ZXZlciwgdGhlIFB5dGhvbiBidWlsZCBwcm9jZXNzIGl0c2VsZiBoYXMgc2V2ZXJhbCBidWlsZCBkZXBlbmRlbmNpZXMgbm90CithdmFpbGFibGUgb3V0IG9mIHRoZSBib3ggd2l0aCBPUyBYIDEwLjQgc28geW91IG1heSBoYXZlIHRvIGluc3RhbGwKK2FkZGl0aW9uYWwgc29mdHdhcmUgYmV5b25kIHdoYXQgaXMgcHJvdmlkZWQgd2l0aCBYY29kZSAyLiAgT1MgWCAxMC41Citwcm92aWRlcyBhIHJlY2VudCBlbm91Z2ggc3lzdGVtIFB5dGhvbiAoaW4gYGAvdXNyL2JpbmBgKSB0byBidWlsZAordGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIHNldC4gIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB1c2UgU0RLcyBhbmQvb3Igb2xkZXIKK3ZlcnNpb25zIG9mIFhjb2RlIHRvIGJ1aWxkIGluc3RhbGxlcnMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHN5c3RlbXMKK29uIGEgbmV3ZXIgc3lzdGVtIGJ1dCB0aGlzIG1heSBub3QgYmUgY29tcGxldGVseSBmb29scHJvb2Ygc28gdGhlIHJlc3VsdGluZworZXhlY3V0YWJsZXMsIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCBgYC5zb2BgIGJ1bmRsZXMgc2hvdWxkIGJlIGNhcmVmdWxseQorZXhhbWluZWQgYW5kIHRlc3RlZCBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgZm9yIHByb3BlciBkeW5hbWljIGxpbmtpbmcKK2RlcGVuZGVuY2llcy4gIEl0IGlzIHNhZmVzdCB0byBidWlsZCB0aGUgZGlzdHJpYnV0aW9uIG9uIGEgc3lzdGVtIHJ1bm5pbmcgdGhlCittaW5pbXVtIE9TIFggdmVyc2lvbiBzdXBwb3J0ZWQuCiAKIEFsbCBvZiB0aGlzIGlzIG5vcm1hbGx5IGRvbmUgY29tcGxldGVseSBpc29sYXRlZCBpbiAvdG1wL19weSwgc28gaXQgZG9lcyBub3QKIHVzZSB5b3VyIG5vcm1hbCBidWlsZCBkaXJlY3Rvcnkgbm9yIGRvZXMgaXQgaW5zdGFsbCBpbnRvIC8uCkBAIC0yNDQsNyArMzA2LDcgQEAKICAgIGNvbmZpZ3VyZTogV0FSTklORzogICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAKIFRoaXMgYWxtb3N0IGFsd2F5cyBtZWFucyB5b3UgYXJlIHRyeWluZyB0byBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgZm9yCi1QeXRob24gYW5kIGhhdmUgbGliYXJpZXMgaW4gYGAvdXNyL2xvY2FsYGAgdGhhdCBkb24ndCBjb250YWluIHRoZSByZXF1aXJlZAorUHl0aG9uIGFuZCBoYXZlIGxpYnJhcmllcyBpbiBgYC91c3IvbG9jYWxgYCB0aGF0IGRvbid0IGNvbnRhaW4gdGhlIHJlcXVpcmVkCiBhcmNoaXRlY3R1cmVzLiBUZW1wb3JhcmlseSBtb3ZlIGBgL3Vzci9sb2NhbGBgIGFzaWRlIHRvIGZpbmlzaCB0aGUgYnVpbGQuCiAKIApAQCAtMjUzLDcgKzMxNSw3IEBACiAKIFVuaW5zdGFsbGluZyBhIGZyYW1ld29yayBjYW4gYmUgZG9uZSBieSBtYW51YWxseSByZW1vdmluZyBhbGwgYml0cyB0aGF0IGdvdCBpbnN0YWxsZWQuCiBUaGF0J3MgdHJ1ZSBmb3IgYm90aCBpbnN0YWxsYXRpb25zIGZyb20gc291cmNlIGFuZCBpbnN0YWxsYXRpb25zIHVzaW5nIHRoZSBiaW5hcnkgaW5zdGFsbGVyLgotU2FkbHkgZW5vdWdoIE9TWCBkb2VzIG5vdCBoYXZlIGEgY2VudHJhbCB1bmluc3RhbGxlci4KK09TIFggZG9lcyBub3QgcHJvdmlkZSBhIGNlbnRyYWwgdW5pbnN0YWxsZXIuCiAKIFRoZSBtYWluIGJpdCBvZiBhIGZyYW1ld29yayBpbnN0YWxsIGlzIHRoZSBmcmFtZXdvcmsgaXRzZWxmLCBpbnN0YWxsZWQgaW4KIGBgL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrYGAuIFRoaXMgY2FuIGNvbnRhaW4gbXVsdGlwbGUgdmVyc2lvbnMKQEAgLTI2NywxNCArMzI5LDEyIEBACiBBbmQgbGFzdGx5IGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBpbnN0YWxscyBmaWxlcyBpbiBgYC91c3IvbG9jYWwvYmluYGAsIGFsbCBvZgogdGhlbSBzeW1ib2xpYyBsaW5rcyB0byBmaWxlcyBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9YLlkvYmluYGAuCiAKLU9kZHMgYW5kIGVuZHMKLT09PT09PT09PT09PT0KIAotU29tZXRoaW5nIHRvIHRha2Ugbm90ZSBvZiBpcyB0aGF0IHRoZSAiLnJzcmMiIGZpbGVzIGluIHRoZSBkaXN0cmlidXRpb24gYXJlCi1ub3QgYWN0dWFsbHkgcmVzb3VyY2UgZmlsZXMsIHRoZXkncmUgQXBwbGVTaW5nbGUgZW5jb2RlZCByZXNvdXJjZSBmaWxlcy4gVGhlCi1tYWNyZXNvdXJjZSBtb2R1bGUgYW5kIHRoZSBNYWMvT1NYL01ha2VmaWxlIGNhdGVyIGZvciB0aGlzLCBhbmQgY3JlYXRlCi0iLnJzcmMuZGYucnNyYyIgZmlsZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3JtYWwgZGF0YWZvcmstYmFzZWQgcmVzb3VyY2UKLWZpbGVzLgorUmVzb3VyY2VzCis9PT09PT09PT0KIAotCUphY2sgSmFuc2VuLCBKYWNrLkphbnNlbkBjd2kubmwsIDE1LUp1bC0yMDA0LgotCVJvbmFsZCBPdXNzb3JlbiwgUm9uYWxkT3Vzc29yZW5AbWFjLmNvbSwgMzAtQXByaWwtMjAxMAorICAqICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjLworCisgICogIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9jb21tdW5pdHkvc2lncy9jdXJyZW50L3B5dGhvbm1hYy1zaWcvCisKKyAgKiAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSBiL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGI5NWIzLi4wMDAwMDAwCi0tLSBhL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0iIiJmaXhhcHBsZXB5dGhvbjIzIC0gRml4IEFwcGxlLWluc3RhbGxlZCBQeXRob24gMi4zIChvbiBNYWMgT1MgWCAxMC4zKQotCi1QeXRob24gMi4zIChhbmQgMi4zLlggZm9yIFg8NSkgaGF2ZSB0aGUgcHJvYmxlbSB0aGF0IGJ1aWxkaW5nIGFuIGV4dGVuc2lvbgotZm9yIGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBtYXkgYWNjaWRlbnRhbGx5IHBpY2sgdXAgdGhlIGZyYW1ld29yawotb2YgYSBuZXdlciBQeXRob24sIGluIHN0ZWFkIG9mIHRoZSBvbmUgdGhhdCB3YXMgdXNlZCB0byBidWlsZCB0aGUgZXh0ZW5zaW9uLgotCi1UaGlzIHNjcmlwdCBtb2RpZmllcyB0aGUgTWFrZWZpbGUgKGluIC4uLi9saWIvcHl0aG9uMi4zL2NvbmZpZykgdG8gdXNlCi10aGUgbmV3ZXIgbWV0aG9kIG9mIGxpbmtpbmcgZXh0ZW5zaW9ucyB3aXRoICItdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwIgotd2hpY2ggZml4ZXMgdGhpcyBwcm9ibGVtLgotCi1UaGUgc2NyaXB0IHdpbGwgZmlyc3QgY2hlY2sgYWxsIHByZXJlcXVpc2l0ZXMsIGFuZCByZXR1cm4gYSB6ZXJvIGV4aXQKLXN0YXR1cyBhbHNvIHdoZW4gbm90aGluZyBuZWVkcyB0byBiZSBmaXhlZC4KLSIiIgotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLQotTUFLRUZJTEU9Jy9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvMi4zL2xpYi9weXRob24yLjMvY29uZmlnL01ha2VmaWxlJwotQ0hBTkdFUz0oKAotICAgICdMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtZnJhbWV3b3JrICQoUFlUSE9ORlJBTUVXT1JLKVxuJywKLSAgICAnTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cFxuJwotICAgICksKAotICAgICdCTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLWZyYW1ld29yayAkKFBZVEhPTkZSQU1FV09SSylcbicsCi0gICAgJ0JMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwXG4nCi0gICAgKSwoCi0gICAgJ0NDPVx0XHRnY2NcbicsCi0gICAgJ0NDPVx0XHQvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2NcbicKLSAgICApLCgKLSAgICAnQ1hYPVx0XHRjKytcbicsCi0gICAgJ0NYWD1cdFx0L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjMvbGliL3B5dGhvbjIuMy9jb25maWcvUGFudGhlclB5dGhvbkZpeC9ydW4tZysrXG4nCi0pKQotCi1HQ0NfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2MnCi1HWFhfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nKysnCi1TQ1JJUFQ9IiIiIyEvYmluL3NoCi1leHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjMKLWV4ZWMgJXMgIiR7QH0iCi0iIiIKLQotZGVmIGZpbmRsaW5lKGxpbmVzLCBzdGFydCk6Ci0gICAgIiIicmV0dXJuIGxpbmUgc3RhcnRpbmcgd2l0aCBnaXZlbiBzdHJpbmcgb3IgLTEiIiIKLSAgICBmb3IgaSBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgaWYgbGluZXNbaV1bOmxlbihzdGFydCldID09IHN0YXJ0OgotICAgICAgICAgICAgcmV0dXJuIGkKLSAgICByZXR1cm4gLTEKLQotZGVmIGZpeChtYWtlZmlsZSwgZG9fYXBwbHkpOgotICAgICIiIkZpeCB0aGUgTWFrZWZpbGUsIGlmIHJlcXVpcmVkLiIiIgotICAgIGZpeGVkID0gRmFsc2UKLSAgICBsaW5lcyA9IG9wZW4obWFrZWZpbGUpLnJlYWRsaW5lcygpCi0KLSAgICBmb3Igb2xkLCBuZXcgaW4gQ0hBTkdFUzoKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBuZXcpCi0gICAgICAgIGlmIGkgPj0gMDoKLSAgICAgICAgICAgICMgQWxyZWFkeSBmaXhlZAotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBvbGQpCi0gICAgICAgIGlmIGkgPCAwOgotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IFB5dGhvbiBpbnN0YWxsYXRpb24gbm90IGZpeGVkIChhcHBlYXJzIGJyb2tlbiknKQotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG1pc3NpbmcgbGluZTonLCBvbGQpCi0gICAgICAgICAgICByZXR1cm4gMgotICAgICAgICBsaW5lc1tpXSA9IG5ldwotICAgICAgICBmaXhlZCA9IFRydWUKLQotICAgIGlmIGZpeGVkOgotICAgICAgICBpZiBkb19hcHBseToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgYXBwbGllZCcpCi0gICAgICAgICAgICBvcy5yZW5hbWUobWFrZWZpbGUsIG1ha2VmaWxlICsgJ34nKQotICAgICAgICAgICAgb3BlbihtYWtlZmlsZSwgJ3cnKS53cml0ZWxpbmVzKGxpbmVzKQotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgc2hvdWxkIGJlIGFwcGxpZWQnKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICBlbHNlOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogTm8gZml4IG5lZWRlZCwgYXBwZWFycyB0byBoYXZlIGJlZW4gYXBwbGllZCBiZWZvcmUnKQotICAgICAgICByZXR1cm4gMAotCi1kZWYgbWFrZXNjcmlwdChmaWxlbmFtZSwgY29tcGlsZXIpOgotICAgICIiIkNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0IGZvciBhIGNvbXBpbGVyIiIiCi0gICAgZGlybmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdCi0gICAgaWYgbm90IG9zLmFjY2VzcyhkaXJuYW1lLCBvcy5YX09LKToKLSAgICAgICAgb3MubWtkaXIoZGlybmFtZSwgMG83NTUpCi0gICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgZnAud3JpdGUoU0NSSVBUICUgY29tcGlsZXIpCi0gICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKGZpbGVuYW1lLCAwbzc1NSkKLSAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogQ3JlYXRlZCcsIGZpbGVuYW1lKQotCi1kZWYgbWFpbigpOgotICAgICMgQ2hlY2sgZm9yIC1uIG9wdGlvbgotICAgIGlmIGxlbihzeXMuYXJndikgPiAxIGFuZCBzeXMuYXJndlsxXSA9PSAnLW4nOgotICAgICAgICBkb19hcHBseSA9IEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgZG9fYXBwbHkgPSBUcnVlCi0gICAgIyBGaXJzdCBjaGVjayBPUyB2ZXJzaW9uCi0gICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAnbGl0dGxlJzoKLSAgICAgICAgIyBBbGwgaW50ZWwgbWFjcyBhcmUgZmluZQotICAgICAgICBwcmludCgiZml4YXBwbHlweXRob24yMzogbm8gZml4IGlzIG5lZWRlZCBvbiBNYWNPU1ggb24gSW50ZWwiKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgb3N2ZXIgPSAgcGxhdGZvcm0ubWFjX3ZlcigpCi0gICAgaWYgb3N2ZXIgIT0gJzEwLjMnIGFuZCBvcy52ZXIgPCAnMTAuMy4nOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogbm8gZml4IG5lZWRlZCBvbiBNYWNPU1ggPCAxMC4zJykKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGlmIG9zdmVyID49ICcxMC40JzoKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG5vIGZpeCBuZWVkZWQgb24gTWFjT1NYID49IDEwLjQnKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgIyBUZXN0IHRoYXQgYSBmcmFtZXdvcmsgUHl0aG9uIGlzIGluZGVlZCBpbnN0YWxsZWQKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoTUFLRUZJTEUpOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogUHl0aG9uIGZyYW1ld29yayBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW5zdGFsbGVkICg/KSwgbm90aGluZyBmaXhlZCcpCi0gICAgICAgIHN5cy5leGl0KDApCi0gICAgIyBDaGVjayB0aGF0IHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0aGUgZmlsZQotICAgIGlmIGRvX2FwcGx5IGFuZCBub3Qgb3MuYWNjZXNzKE1BS0VGSUxFLCBvcy5XX09LKToKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IE5vIHdyaXRlIHBlcm1pc3Npb24sIHBsZWFzZSBydW4gd2l0aCAic3VkbyInKQotICAgICAgICBzeXMuZXhpdCgyKQotICAgICMgQ3JlYXRlIHRoZSBzaGVsbCBzY3JpcHRzCi0gICAgaWYgZG9fYXBwbHk6Ci0gICAgICAgIGlmIG5vdCBvcy5hY2Nlc3MoR0NDX1NDUklQVCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICBtYWtlc2NyaXB0KEdDQ19TQ1JJUFQsICJnY2MiKQotICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKEdYWF9TQ1JJUFQsIG9zLlhfT0spOgotICAgICAgICAgICAgbWFrZXNjcmlwdChHWFhfU0NSSVBULCAiZysrIikKLSAgICAjICBGaW5hbGx5IGZpeCB0aGUgbWFrZWZpbGUKLSAgICBydiA9IGZpeChNQUtFRklMRSwgZG9fYXBwbHkpCi0gICAgI3N5cy5leGl0KHJ2KQotICAgIHN5cy5leGl0KDApCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvcHl0aG9udy5jIGIvTWFjL1Rvb2xzL3B5dGhvbncuYwppbmRleCAzMGM4MmFjLi4xZDJkYjM4IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvcHl0aG9udy5jCisrKyBiL01hYy9Ub29scy9weXRob253LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+CiAKIAogZXh0ZXJuIGNoYXIqKiBlbnZpcm9uOwpAQCAtMTUwLDYgKzE1MSw1MyBAQAogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgIGNoYXIqIGV4ZWNfcGF0aCA9IGdldF9weXRob25fcGF0aCgpOworICAgIHN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBzdGF0aWMgY2hhciByZWFsX3BhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBpbnQgc3RhdHVzOworICAgIHVpbnQzMl90IHNpemUgPSBQQVRIX01BWCAqIDI7CisKKyAgICAvKiBTZXQgdGhlIG9yaWdpbmFsIGV4ZWN1dGFibGUgcGF0aCBpbiB0aGUgZW52aXJvbm1lbnQuICovCisgICAgc3RhdHVzID0gX05TR2V0RXhlY3V0YWJsZVBhdGgocGF0aCwgJnNpemUpOworICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBOb3RlOiBkb24ndCBjYWxsICdyZWFscGF0aCcsIHRoYXQgd2lsbAorICAgICAgICAgKiBlcmFzZSBzeW1saW5rIGluZm9ybWF0aW9uLCBhbmQgdGhhdAorICAgICAgICAgKiBicmVha3MgInB5dmVudiAtLXN5bWxpbmsiCisgICAgICAgICAqCisgICAgICAgICAqIEl0IGlzIG5pY2UgdG8gaGF2ZSB0aGUgZGlyZWN0b3J5IG5hbWUKKyAgICAgICAgICogYXMgYSBjbGVhbmVkIHVwIGFic29sdXRlIHBhdGggdGhvdWdoLAorICAgICAgICAgKiB0aGVyZWZvcmUgY2FsbCByZWFscGF0aCBvbiBkaXJuYW1lKHBhdGgpCisgICAgICAgICAqLworICAgICAgICBjaGFyKiBzbGFzaCA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICAgICAgaWYgKHNsYXNoKSB7CisgICAgICAgICAgICBjaGFyICByZXBsYWNlZDsKKyAgICAgICAgICAgIHJlcGxhY2VkID0gc2xhc2hbMV07CisgICAgICAgICAgICBzbGFzaFsxXSA9IDA7CisgICAgICAgICAgICBpZiAocmVhbHBhdGgocGF0aCwgcmVhbF9wYXRoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJyKDEsICJyZWFscGF0aDogJXMiLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsYXNoWzFdID0gcmVwbGFjZWQ7CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsIHNsYXNoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyZWFscGF0aCgiLiIsIHJlYWxfcGF0aCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsICIvIiwgc2l6ZW9mKHJlYWxfcGF0aCkpID4gc2l6ZW9mKHJlYWxfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxjYXQocmVhbF9wYXRoLCBwYXRoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iLCByZWFsX3BhdGgsIDEpOworICAgIH0KIAogICAgIC8qCiAgICAgICogTGV0IGFyZ3ZbMF0gcmVmZXIgdG8gdGhlIG5ldyBpbnRlcnByZXRlci4gVGhpcyBpcyBuZWVkZWQgdG8KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCA0NGMxZjE1Li5jNDI0M2YzIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC0zNyw3ICszNyw3IEBACiBMSU5LQ0M9CQlATElOS0NDQAogQVI9CQlAQVJACiBSQU5MSUI9CQlAUkFOTElCQAotU1ZOVkVSU0lPTj0JQFNWTlZFUlNJT05ACitSRUFERUxGPQlAUkVBREVMRkAKIFNPQUJJPQkJQFNPQUJJQAogTERWRVJTSU9OPQlATERWRVJTSU9OQAogSEdWRVJTSU9OPQlASEdWRVJTSU9OQApAQCAtMTk4LDYgKzE5OCwxMCBAQAogUFlUSE9OPQkJcHl0aG9uJChFWEUpCiBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKIAorUFlUSE9OX0ZPUl9CVUlMRD1AUFlUSE9OX0ZPUl9CVUlMREAKK19QWVRIT05fSE9TVF9QTEFURk9STT1AX1BZVEhPTl9IT1NUX1BMQVRGT1JNQAorSE9TVF9HTlVfVFlQRT0gIEBob3N0QAorCiAjIFRoZSB0YXNrIHRvIHJ1biB3aGlsZSBpbnN0cnVtZW50IHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldAogUFJPRklMRV9UQVNLPQkkKHNyY2RpcikvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5IC1uIDIgLS13aXRoLWdjIC0td2l0aC1zeXNjaGVjawogI1BST0ZJTEVfVEFTSz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yNDAsMjAgKzI0NCw0MSBAQAogIyBQYXJzZXIKIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogCitQU1JDUz0JCVwKKwkJUGFyc2VyL2FjY2VsZXIuYyBcCisJCVBhcnNlci9ncmFtbWFyMS5jIFwKKwkJUGFyc2VyL2xpc3Rub2RlLmMgXAorCQlQYXJzZXIvbm9kZS5jIFwKKwkJUGFyc2VyL3BhcnNlci5jIFwKKwkJUGFyc2VyL2JpdHNldC5jIFwKKwkJUGFyc2VyL21ldGFncmFtbWFyLmMgXAorCQlQYXJzZXIvZmlyc3RzZXRzLmMgXAorCQlQYXJzZXIvZ3JhbW1hci5jIFwKKwkJUGFyc2VyL3BnZW4uYworCiBQT0JKUz0JCVwKIAkJUGFyc2VyL2FjY2VsZXIubyBcCiAJCVBhcnNlci9ncmFtbWFyMS5vIFwKIAkJUGFyc2VyL2xpc3Rub2RlLm8gXAogCQlQYXJzZXIvbm9kZS5vIFwKIAkJUGFyc2VyL3BhcnNlci5vIFwKLQkJUGFyc2VyL3BhcnNldG9rLm8gXAogCQlQYXJzZXIvYml0c2V0Lm8gXAogCQlQYXJzZXIvbWV0YWdyYW1tYXIubyBcCiAJCVBhcnNlci9maXJzdHNldHMubyBcCiAJCVBhcnNlci9ncmFtbWFyLm8gXAogCQlQYXJzZXIvcGdlbi5vCiAKLVBBUlNFUl9PQkpTPQkkKFBPQkpTKSBQYXJzZXIvbXlyZWFkbGluZS5vIFBhcnNlci90b2tlbml6ZXIubworUEFSU0VSX09CSlM9CSQoUE9CSlMpIFBhcnNlci9teXJlYWRsaW5lLm8gUGFyc2VyL3BhcnNldG9rLm8gUGFyc2VyL3Rva2VuaXplci5vCisKK1BHU1JDUz0JCVwKKwkJT2JqZWN0cy9vYm1hbGxvYy5jIFwKKwkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMuYyBcCisJCVB5dGhvbi9teXNucHJpbnRmLmMgXAorCQlQeXRob24vcHljdHlwZS5jIFwKKwkJUGFyc2VyL3Rva2VuaXplcl9wZ2VuLmMgXAorCQlQYXJzZXIvcHJpbnRncmFtbWFyLmMgXAorCQlQYXJzZXIvcGFyc2V0b2tfcGdlbi5jIFwKKwkJUGFyc2VyL3BnZW5tYWluLmMKIAogUEdPQkpTPQkJXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXApAQCAtMjYyLDEzICsyODcsMTYgQEAKIAkJUHl0aG9uL3B5Y3R5cGUubyBcCiAJCVBhcnNlci90b2tlbml6ZXJfcGdlbi5vIFwKIAkJUGFyc2VyL3ByaW50Z3JhbW1hci5vIFwKKwkJUGFyc2VyL3BhcnNldG9rX3BnZW4ubyBcCiAJCVBhcnNlci9wZ2VubWFpbi5vCiAKIFBBUlNFUl9IRUFERVJTPSBcCi0JCVBhcnNlci9wYXJzZXIuaCBcCi0JCVBhcnNlci90b2tlbml6ZXIuaAorCQkkKHNyY2RpcikvUGFyc2VyL3BhcnNlci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcGFyc2V0b2suaCBcCisJCSQoc3JjZGlyKS9QYXJzZXIvdG9rZW5pemVyLmgKIAotUEdFTk9CSlM9CSQoUEdFTk1BSU4pICQoUE9CSlMpICQoUEdPQkpTKQorUEdFTlNSQ1M9CSQoUFNSQ1MpICQoUEdTUkNTKQorUEdFTk9CSlM9CSQoUE9CSlMpICQoUEdPQkpTKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBBU1QKQEAgLTMwNSw3ICszMzMsNiBAQAogCQlQeXRob24vY29kZWNzLm8gXAogCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5vIFwKIAkJUHl0aG9uL2Vycm9ycy5vIFwKLQkJUHl0aG9uL2Zyb3plbi5vIFwKIAkJUHl0aG9uL2Zyb3plbm1haW4ubyBcCiAJCVB5dGhvbi9mdXR1cmUubyBcCiAJCVB5dGhvbi9nZXRhcmdzLm8gXApAQCAtMzczLDExICs0MDAsMTIgQEAKIAkJT2JqZWN0cy9tZW1vcnlvYmplY3QubyBcCiAJCU9iamVjdHMvbWV0aG9kb2JqZWN0Lm8gXAogCQlPYmplY3RzL21vZHVsZW9iamVjdC5vIFwKKwkJT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QubyBcCiAJCU9iamVjdHMvb2JqZWN0Lm8gXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXAogCQlPYmplY3RzL2NhcHN1bGUubyBcCiAJCU9iamVjdHMvcmFuZ2VvYmplY3QubyBcCi0gICAgICAgICAgICAgICAgT2JqZWN0cy9zZXRvYmplY3QubyBcCisJCU9iamVjdHMvc2V0b2JqZWN0Lm8gXAogCQlPYmplY3RzL3NsaWNlb2JqZWN0Lm8gXAogCQlPYmplY3RzL3N0cnVjdHNlcS5vIFwKIAkJT2JqZWN0cy90dXBsZW9iamVjdC5vIFwKQEAgLTM4NiwxMCArNDE0LDkgQEAKIAkJT2JqZWN0cy91bmljb2RlY3R5cGUubyBcCiAJCU9iamVjdHMvd2Vha3JlZm9iamVjdC5vCiAKLQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgb2JqZWN0cyB0aGF0IGdldCBsaW5rZWQgaW50byB0aGUgUHl0aG9uIGxpYnJhcnkKLUxJQlJBUllfT0JKUz0JXAorTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOPQlcCiAJCU1vZHVsZXMvZ2V0YnVpbGRpbmZvLm8gXAogCQkkKFBBUlNFUl9PQkpTKSBcCiAJCSQoT0JKRUNUX09CSlMpIFwKQEAgLTM5OCw2ICs0MjUsMTAgQEAKIAkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpCiAKK0xJQlJBUllfT0JKUz0JXAorCQkkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgXAorCQlQeXRob24vZnJvemVuLm8KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBSdWxlcwogCkBAIC00MjEsMTAgKzQ1MiwxMSBAQAogCSQoTUFLRSkgYWxsIENGTEFHUz0iJChDRkxBR1MpIC1mcHJvZmlsZS1nZW5lcmF0ZSIgTElCUz0iJChMSUJTKSAtbGdjb3YiCiAKIHJ1bl9wcm9maWxlX3Rhc2s6Ci0JLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykKKwk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAorCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKQogCiBidWlsZF9hbGxfdXNlX3Byb2ZpbGU6Ci0JJChNQUtFKSBhbGwgQ0ZMQUdTPSIkKENGTEFHUykgLWZwcm9maWxlLXVzZSIKKwkkKE1BS0UpIGFsbCBDRkxBR1M9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtdXNlIC1mcHJvZmlsZS1jb3JyZWN0aW9uIgogCiBjb3ZlcmFnZToKIAlAZWNobyAiQnVpbGRpbmcgd2l0aCBzdXBwb3J0IGZvciBjb3ZlcmFnZSBjaGVja2luZzoiCkBAIC00MzYsMjAgKzQ2OCwyNSBAQAogJChCVUlMRFBZVEhPTik6CU1vZHVsZXMvcHl0aG9uLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCi1wbGF0Zm9ybTogJChCVUlMRFBZVEhPTikKLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtRSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQorcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KIAorIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KKyMgcHlidWlsZGRpci50eHQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGJ1aWxkIGRpciBhbmQgaXMgdXNlZCBmb3IKKyMgc3lzLnBhdGggZml4dXAgLS0gc2VlIE1vZHVsZXMvZ2V0cGF0aC5jLgorcHlidWlsZGRpci50eHQ6ICQoQlVJTERQWVRIT04pCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLVMgLW0gc3lzY29uZmlnIC0tZ2VuZXJhdGUtcG9zaXgtdmFycwogCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBNQUtFRkxBR1MgYXJlIHNvcnRlZCBhbmQgbm9ybWFsaXplZC4gVW5kZXIgR05VIG1ha2UgdGhlICdzJyBmb3IKICMgLXMsIC0tc2lsZW50IG9yIC0tcXVpZXQgaXMgYWx3YXlzIHRoZSBmaXJzdCBjaGFyLgotc2hhcmVkbW9kczogJChCVUlMRFBZVEhPTikKK3NoYXJlZG1vZHM6ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0CiAJQGNhc2UgIiQkTUFLRUZMQUdTIiBpbiBcCiAJICAgIHMqKSBxdWlldD0iLXEiOzsgXAogCSAgICAqKSBxdWlldD0iIjs7IFwKIAllc2FjOyBcCiAJJChSVU5TSEFSRUQpIENDPSckKENDKScgTERTSEFSRUQ9JyQoQkxEU0hBUkVEKScgT1BUPSckKE9QVCknIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtRSAkKHNyY2Rpcikvc2V0dXAucHkgJCRxdWlldCBidWlsZAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCiAKICMgQnVpbGQgc3RhdGljIGxpYnJhcnkKICMgYXZvaWQgbG9uZyBjb21tYW5kIGxpbmVzLCBzYW1lIGFzIExJQlJBUllfT0JKUwpAQCAtNDU4LDcgKzQ5NSw3IEBACiAJJChBUikgJChBUkZMQUdTKSAkQCBNb2R1bGVzL2dldGJ1aWxkaW5mby5vCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBBUlNFUl9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpFQ1RfT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoUFlUSE9OX09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKSBQeXRob24vZnJvemVuLm8KIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpICQoU0lHTkFMX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRE9CSlMpCiAJJChSQU5MSUIpICRACkBAIC01MDUsNyArNTQyLDcgQEAKIAkJLWluc3RhbGxfbmFtZSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy8kKFZFUlNJT04pLyQoUFlUSE9ORlJBTUVXT1JLKSBcCiAJCS1jb21wYXRpYmlsaXR5X3ZlcnNpb24gJChWRVJTSU9OKSBcCiAJCS1jdXJyZW50X3ZlcnNpb24gJChWRVJTSU9OKSBcCi0JCS1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gJChMSUJTKTsgCisJCS1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gJChMSUJTKTsKIAkkKElOU1RBTEwpIC1kIC1tICQoRElSTU9ERSkgIFwKIAkJJChQWVRIT05GUkFNRVdPUktESVIpL1ZlcnNpb25zLyQoVkVSU0lPTikvUmVzb3VyY2VzL0VuZ2xpc2gubHByb2oKIAkkKElOU1RBTExfREFUQSkgJChSRVNTUkNESVIpL0luZm8ucGxpc3QgXApAQCAtNTU2LDYgKzU5MywxOCBAQAogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9fdGVzdGVtYmVkLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbXBvcnRsaWIKKworTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYjogTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKQorCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpIC1vICRAIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCisKK1B5dGhvbi9pbXBvcnRsaWIuaDogJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKKwkkKE1BS0UpIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKKwkuL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAorCQkkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9pbXBvcnRsaWIuaAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU3BlY2lhbCBydWxlcyBmb3Igb2JqZWN0IGZpbGVzCiAKIE1vZHVsZXMvZ2V0YnVpbGRpbmZvLm86ICQoUEFSU0VSX09CSlMpIFwKQEAgLTU2Niw3ICs2MTUsNiBAQAogCQkkKE1PRE9CSlMpIFwKIAkJJChzcmNkaXIpL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCi0JICAgICAgLURTVk5WRVJTSU9OPSJcImBMQ19BTEw9QyAkKFNWTlZFUlNJT04pYFwiIiBcCiAJICAgICAgLURIR1ZFUlNJT049IlwiYExDX0FMTD1DICQoSEdWRVJTSU9OKWBcIiIgXAogCSAgICAgIC1ESEdUQUc9IlwiYExDX0FMTD1DICQoSEdUQUcpYFwiIiBcCiAJICAgICAgLURIR0JSQU5DSD0iXCJgTENfQUxMPUMgJChIR0JSQU5DSClgXCIiIFwKQEAgLTU4Myw2ICs2MzEsOSBAQAogTW9kdWxlcy9weXRob24ubzogJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKIAkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKIAorTW9kdWxlcy9fdGVzdGVtYmVkLm86ICQoc3JjZGlyKS9Nb2R1bGVzL190ZXN0ZW1iZWQuYworCSQoTUFJTkNDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKKwogUHl0aG9uL2R5bmxvYWRfc2hsaWIubzogJChzcmNkaXIpL1B5dGhvbi9keW5sb2FkX3NobGliLmMgTWFrZWZpbGUKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCiAJCS1EU09BQkk9JyIkKFNPQUJJKSInIFwKQEAgLTU5NSwxMiArNjQ2LDEzIEBACiAKICQoSU9fT0JKUyk6ICQoSU9fSCkKIAotIyBVc2UgYSBzdGFtcCBmaWxlIHRvIHByZXZlbnQgbWFrZSAtaiBpbnZva2luZyBwZ2VuIHR3aWNlCi0kKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpOiBQYXJzZXIvcGdlbi5zdGFtcAotUGFyc2VyL3BnZW4uc3RhbXA6ICQoUEdFTikgJChHUkFNTUFSX0lOUFVUKQotCQktQCQoSU5TVEFMTCkgLWQgSW5jbHVkZQorJChHUkFNTUFSX0gpOiAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTlNSQ1MpCisJCUAkKE1LRElSX1ApIEluY2x1ZGUKKwkJJChNQUtFKSAkKFBHRU4pCiAJCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCi0JCS10b3VjaCBQYXJzZXIvcGdlbi5zdGFtcAorJChHUkFNTUFSX0MpOiAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0lOUFVUKSAkKFBHRU5TUkNTKQorCQkkKE1BS0UpICQoR1JBTU1BUl9IKQorCQl0b3VjaCAkKEdSQU1NQVJfQykKIAogJChQR0VOKToJJChQR0VOT0JKUykKIAkJJChDQykgJChPUFQpICQoUFlfTERGTEFHUykgJChQR0VOT0JKUykgJChMSUJTKSAtbyAkKFBHRU4pCkBAIC02MTEsNiArNjYzLDggQEAKIFBhcnNlci9tZXRhZ3JhbW1hci5vOgkkKHNyY2RpcikvUGFyc2VyL21ldGFncmFtbWFyLmMKIAogUGFyc2VyL3Rva2VuaXplcl9wZ2VuLm86CSQoc3JjZGlyKS9QYXJzZXIvdG9rZW5pemVyLmMKK1BhcnNlci9wYXJzZXRva19wZ2VuLm86CSQoc3JjZGlyKS9QYXJzZXIvcGFyc2V0b2suYworUGFyc2VyL3ByaW50Z3JhbW1hci5vOiAkKHNyY2RpcikvUGFyc2VyL3ByaW50Z3JhbW1hci5jCiAKIFBhcnNlci9wZ2VubWFpbi5vOgkkKHNyY2RpcikvSW5jbHVkZS9wYXJzZXRvay5oCiAKQEAgLTYxOCw3ICs2NzIsNyBAQAogCSQoTUtESVJfUCkgJChBU1RfSF9ESVIpCiAJJChBU0RMR0VOKSAtaCAkKEFTVF9IX0RJUikgJChBU1RfQVNETCkKIAotJChBU1RfQyk6ICQoQVNUX0FTREwpICQoQVNETEdFTl9GSUxFUykKKyQoQVNUX0MpOiAkKEFTVF9IKSAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCiAJJChNS0RJUl9QKSAkKEFTVF9DX0RJUikKIAkkKEFTRExHRU4pIC1jICQoQVNUX0NfRElSKSAkKEFTVF9BU0RMKQogCkBAIC02NDAsMjAgKzY5NCwyOSBAQAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaCBcCi0JCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaCBcCi0JCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oCisKK1VOSUNPREVfREVQUyA9ICQoQllURVNUUl9ERVBTKSBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VjczFsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaAogCiBPYmplY3RzL2J5dGVzb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgJChCWVRFU1RSX0RFUFMpCiAKIE9iamVjdHMvYnl0ZWFycmF5b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jICQoQllURVNUUl9ERVBTKQogCi1PYmplY3RzL3VuaWNvZGVvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvdW5pY29kZW9iamVjdC5jIFwKLQkJCQkkKEJZVEVTVFJfREVQUykKK09iamVjdHMvdW5pY29kZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgJChVTklDT0RFX0RFUFMpCiAKIE9iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAogT2JqZWN0cy9zZXRvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKQEAgLTY2MSwxMSArNzI0LDEyIEBACiAkKE9QQ09ERVRBUkdFVFNfSCk6ICQoT1BDT0RFVEFSR0VUR0VOX0ZJTEVTKQogCSQoT1BDT0RFVEFSR0VUR0VOKSAkKE9QQ09ERVRBUkdFVFNfSCkKIAotUHl0aG9uL2NldmFsLm86ICQoT1BDT0RFVEFSR0VUU19IKSBQeXRob24vY2V2YWxfZ2lsLmgKK1B5dGhvbi9jZXZhbC5vOiAkKE9QQ09ERVRBUkdFVFNfSCkgJChzcmNkaXIpL1B5dGhvbi9jZXZhbF9naWwuaAogCiBQeXRob24vZm9ybWF0dGVyX3VuaWNvZGUubzogJChzcmNkaXIpL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIFwKLQkJCQkkKEJZVEVTVFJfREVQUykgXAotCQkJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9mb3JtYXR0ZXIuaAorCQkJCSQoQllURVNUUl9ERVBTKQorCitQeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaAogCiBPYmplY3RzL3R5cGVvYmplY3QubzogT2JqZWN0cy90eXBlc2xvdHMuaW5jCiBPYmplY3RzL3R5cGVzbG90cy5pbmM6ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weQpAQCAtNjc1LDg5ICs3MzksODkgQEAKICMgSGVhZGVyIGZpbGVzCiAKIFBZVEhPTl9IRUFERVJTPSBcCi0JCUluY2x1ZGUvUHl0aG9uLWFzdC5oIFwKLQkJSW5jbHVkZS9QeXRob24uaCBcCi0JCUluY2x1ZGUvYWJzdHJhY3QuaCBcCi0JCUluY2x1ZGUvYWNjdS5oIFwKLQkJSW5jbHVkZS9hc2RsLmggXAotCQlJbmNsdWRlL2FzdC5oIFwKLSAgICAgICAgICAgICAgICBJbmNsdWRlL2JsdGlubW9kdWxlLmggXAotCQlJbmNsdWRlL2JpdHNldC5oIFwKLQkJSW5jbHVkZS9ib29sb2JqZWN0LmggXAotCQlJbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBcCi0JCUluY2x1ZGUvYnl0ZWFycmF5b2JqZWN0LmggXAotCQlJbmNsdWRlL2J5dGVzb2JqZWN0LmggXAotCQlJbmNsdWRlL2NlbGxvYmplY3QuaCBcCi0JCUluY2x1ZGUvY2V2YWwuaCBcCi0JCUluY2x1ZGUvY2xhc3NvYmplY3QuaCBcCi0JCUluY2x1ZGUvY29kZS5oIFwKLQkJSW5jbHVkZS9jb2RlY3MuaCBcCi0JCUluY2x1ZGUvY29tcGlsZS5oIFwKLQkJSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggXAotCQlJbmNsdWRlL2Rlc2Nyb2JqZWN0LmggXAotCQlJbmNsdWRlL2RpY3RvYmplY3QuaCBcCi0JCUluY2x1ZGUvZHRvYS5oIFwKLQkJSW5jbHVkZS9keW5hbWljX2Fubm90YXRpb25zLmggXAotCQlJbmNsdWRlL2VudW1vYmplY3QuaCBcCi0JCUluY2x1ZGUvZXJyY29kZS5oIFwKLQkJSW5jbHVkZS9ldmFsLmggXAotCQlJbmNsdWRlL2ZpbGVvYmplY3QuaCBcCi0JCUluY2x1ZGUvZmlsZXV0aWxzLmggXAotCQlJbmNsdWRlL2Zsb2F0b2JqZWN0LmggXAotCQlJbmNsdWRlL2ZyYW1lb2JqZWN0LmggXAotCQlJbmNsdWRlL2Z1bmNvYmplY3QuaCBcCi0JCUluY2x1ZGUvZ2Vub2JqZWN0LmggXAotCQlJbmNsdWRlL2ltcG9ydC5oIFwKLQkJSW5jbHVkZS9pbnRyY2hlY2suaCBcCi0JCUluY2x1ZGUvaXRlcm9iamVjdC5oIFwKLQkJSW5jbHVkZS9saXN0b2JqZWN0LmggXAotCQlJbmNsdWRlL2xvbmdpbnRyZXByLmggXAotCQlJbmNsdWRlL2xvbmdvYmplY3QuaCBcCi0JCUluY2x1ZGUvbWFyc2hhbC5oIFwKLQkJSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBcCi0JCUluY2x1ZGUvbWV0YWdyYW1tYXIuaCBcCi0JCUluY2x1ZGUvbWV0aG9kb2JqZWN0LmggXAotCQlJbmNsdWRlL21vZHN1cHBvcnQuaCBcCi0JCUluY2x1ZGUvbW9kdWxlb2JqZWN0LmggXAotCQlJbmNsdWRlL25vZGUuaCBcCi0JCUluY2x1ZGUvb2JqZWN0LmggXAotCQlJbmNsdWRlL29iamltcGwuaCBcCi0JCUluY2x1ZGUvb3Bjb2RlLmggXAotCQlJbmNsdWRlL29zZGVmcy5oIFwKLQkJSW5jbHVkZS9wYXJzZXRvay5oIFwKLQkJSW5jbHVkZS9wYXRjaGxldmVsLmggXAotCQlJbmNsdWRlL3BnZW4uaCBcCi0JCUluY2x1ZGUvcGdlbmhlYWRlcnMuaCBcCi0JCUluY2x1ZGUvcHlhcmVuYS5oIFwKLQkJSW5jbHVkZS9weWF0b21pYy5oIFwKLQkJSW5jbHVkZS9weWNhcHN1bGUuaCBcCi0JCUluY2x1ZGUvcHljdHlwZS5oIFwKLQkJSW5jbHVkZS9weWRlYnVnLmggXAotCQlJbmNsdWRlL3B5ZXJyb3JzLmggXAotCQlJbmNsdWRlL3B5ZnBlLmggXAotCQlJbmNsdWRlL3B5bWF0aC5oIFwKLQkJSW5jbHVkZS9weWdldG9wdC5oIFwKLQkJSW5jbHVkZS9weW1lbS5oIFwKLQkJSW5jbHVkZS9weXBvcnQuaCBcCi0JCUluY2x1ZGUvcHlzdGF0ZS5oIFwKLQkJSW5jbHVkZS9weXN0cmNtcC5oIFwKLQkJSW5jbHVkZS9weXN0cnRvZC5oIFwKLQkJSW5jbHVkZS9weXRob25ydW4uaCBcCi0JCUluY2x1ZGUvcHl0aHJlYWQuaCBcCi0JCUluY2x1ZGUvcHl0aW1lLmggXAotCQlJbmNsdWRlL3Jhbmdlb2JqZWN0LmggXAotCQlJbmNsdWRlL3NldG9iamVjdC5oIFwKLQkJSW5jbHVkZS9zbGljZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBcCi0JCUluY2x1ZGUvc3RydWN0c2VxLmggXAotCQlJbmNsdWRlL3N5bXRhYmxlLmggXAotCQlJbmNsdWRlL3N5c21vZHVsZS5oIFwKLQkJSW5jbHVkZS90cmFjZWJhY2suaCBcCi0JCUluY2x1ZGUvdHVwbGVvYmplY3QuaCBcCi0JCUluY2x1ZGUvdWNuaGFzaC5oIFwKLQkJSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggXAotCQlJbmNsdWRlL3dhcm5pbmdzLmggXAotCQlJbmNsdWRlL3dlYWtyZWZvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYWJzdHJhY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2FjY3UuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2FzZGwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2FzdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYmx0aW5tb2R1bGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2JpdHNldC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYm9vbG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYnl0ZWFycmF5b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ieXRlc29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY2VsbG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY2V2YWwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NsYXNzb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb2RlY3MuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NvbXBpbGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9kaWN0b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9kdG9hLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9keW5hbWljX2Fubm90YXRpb25zLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9lbnVtb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9lcnJjb2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ldmFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9maWxlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9maWxldXRpbHMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9mcmFtZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZnVuY29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZ2Vub2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9pbXBvcnQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2ludHJjaGVjay5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvaXRlcm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbGlzdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbG9uZ2ludHJlcHIuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xvbmdvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21hcnNoYWwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21lbW9yeW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbWV0YWdyYW1tYXIuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21ldGhvZG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbW9kc3VwcG9ydC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL25vZGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb2JqaW1wbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb3Bjb2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vc2RlZnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW4uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW5oZWFkZXJzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWFyZW5hLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWF0b21pYy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHljYXBzdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWN0eXBlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWRlYnVnLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWVycm9ycy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlmcGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWF0aC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlnZXRvcHQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWFjcm8uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWVtLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXBvcnQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RhdGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RyY21wLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cnRvZC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aG9ucnVuLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXRocmVhZC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aW1lLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9yYW5nZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc2V0b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zbGljZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3RydWN0bWVtYmVyLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zdHJ1Y3RzZXEuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3N5bXRhYmxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zeXNtb2R1bGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3RyYWNlYmFjay5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvdHVwbGVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3Vjbmhhc2guaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3dhcm5pbmdzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAogCQlweWNvbmZpZy5oIFwKIAkJJChQQVJTRVJfSEVBREVSUykKIApAQCAtNzY2LDY1ICs4MzAsNTYgQEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0jIFRlc3QgdGhlIGludGVycHJldGVyICh0d2ljZSwgb25jZSB3aXRob3V0IC5weWMgZmlsZXMsIG9uY2Ugd2l0aCkKK1RFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCitURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQorVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKK1RFU1RUSU1FT1VUPQkzNjAwCisKKyMgUnVuIGEgYmFzaWMgc2V0IG9mIHJlZ3Jlc3Npb24gdGVzdHMuCisjIFRoaXMgZXhjbHVkZXMgc29tZSB0ZXN0cyB0aGF0IGFyZSBwYXJ0aWN1bGFybHkgcmVzb3VyY2UtaW50ZW5zaXZlLgordGVzdDoJCWFsbCBwbGF0Zm9ybQorCQkkKFRFU1RSVU5ORVIpICQoVEVTVE9QVFMpCisKKyMgUnVuIHRoZSBmdWxsIHRlc3Qgc3VpdGUgdHdpY2UgLSBvbmNlIHdpdGhvdXQgLnB5YyBmaWxlcywgYW5kIG9uY2Ugd2l0aC4KICMgSW4gdGhlIHBhc3QsIHdlJ3ZlIGhhZCBwcm9ibGVtcyB3aGVyZSBidWdzIGluIHRoZSBtYXJzaGFsbGluZyBvcgogIyBlbHNld2hlcmUgY2F1c2VkIGJ5dGVjb2RlIHJlYWQgZnJvbSAucHljIGZpbGVzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseQogIyB0aGFuIGJ5dGVjb2RlIGdlbmVyYXRlZCBkaXJlY3RseSBmcm9tIGEgLnB5IHNvdXJjZSBmaWxlLiAgU29tZXRpbWVzCi0jIHRoZSBieXRlY29kZSByZWFkIGZyb20gYSAucHljIGZpbGUgaGFkIHRoZSBidWcsIHNvbXRpbWVzIHRoZSBkaXJlY3RseQorIyB0aGUgYnl0ZWNvZGUgcmVhZCBmcm9tIGEgLnB5YyBmaWxlIGhhZCB0aGUgYnVnLCBzb21ldGltZXMgdGhlIGRpcmVjdGx5CiAjIGdlbmVyYXRlZCBieXRlY29kZS4gIFRoaXMgaXMgc29tZXRpbWVzIGEgdmVyeSBzaHkgYnVnIG5lZWRpbmcgYSBsb3Qgb2YKICMgc2FtcGxlIGRhdGEuCi0KLVRFU1RPUFRTPQktbCAkKEVYVFJBVEVTVE9QVFMpCi1URVNUUFJPRz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5Ci1URVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtV2QgLUUgLVIgLWJiICQoVEVTVFBZVEhPTk9QVFMpCi10ZXN0OgkJYWxsIHBsYXRmb3JtCi0JCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoVEVTVE9QVFMpCi0KIHRlc3RhbGw6CWFsbCBwbGF0Zm9ybQogCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJJChURVNUUFlUSE9OKSAkKHNyY2RpcikvTGliL2NvbXBpbGVhbGwucHkKKwkJJChURVNUUFlUSE9OKSAtRSAkKHNyY2RpcikvTGliL2NvbXBpbGVhbGwucHkKIAkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKKwkJLSQoVEVTVFJVTk5FUikgLXUgYWxsICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLXUgYWxsICQoVEVTVE9QVFMpCiAKLSMgIFJ1biB0aGUgdW5pdGVzdHMgZm9yIGJvdGggYXJjaGl0ZWN0dXJlcyBpbiBhIFVuaXZlcnNhbCBidWlsZCBvbiBPU1gKLSMgIE11c3QgYmUgcnVuIG9uIGFuIEludGVsIGJveC4KKyMgUnVuIHRoZSB0ZXN0IHN1aXRlIGZvciBib3RoIGFyY2hpdGVjdHVyZXMgaW4gYSBVbml2ZXJzYWwgYnVpbGQgb24gT1NYLgorIyBNdXN0IGJlIHJ1biBvbiBhbiBJbnRlbCBib3guCiB0ZXN0dW5pdmVyc2FsOglhbGwgcGxhdGZvcm0KIAkJaWYgWyBgYXJjaGAgIT0gJ2kzODYnIF07dGhlbiBcCiAJCQllY2hvICJUaGlzIGNhbiBvbmx5IGJlIHVzZWQgb24gT1NYL2kzODYiIDtcCiAJCQlleGl0IDEgO1wKIAkJZmkKLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKLQkJJChSVU5TSEFSRUQpIC91c3IvbGliZXhlYy9vYWgvdHJhbnNsYXRlIC4vJChCVUlMRFBZVEhPTikgLUUgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtdSBhbGwgJChURVNUT1BUUykKKwkJJChSVU5TSEFSRUQpIC91c3IvbGliZXhlYy9vYWgvdHJhbnNsYXRlIFwKKwkJCS4vJChCVUlMRFBZVEhPTikgLUUgLW0gdGVzdCAtaiAwIC11IGFsbCAkKFRFU1RPUFRTKQogCi0KLSMgTGlrZSB0ZXN0YWxsLCBidXQgd2l0aCBhIHNpbmdsZSBwYXNzIG9ubHkKLSMgcnVuIGFuIG9wdGlvbmFsIHNjcmlwdCB0byBpbmNsdWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIGVudmlyb25tZW50CisjIExpa2UgdGVzdGFsbCwgYnV0IHdpdGggb25seSBvbmUgcGFzcyBhbmQgd2l0aG91dCBtdWx0aXBsZSBwcm9jZXNzZXMuCisjIFJ1biBhbiBvcHRpb25hbCBzY3JpcHQgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQgZW52aXJvbm1lbnQuCiBidWlsZGJvdHRlc3Q6CWFsbCBwbGF0Zm9ybQogCQktQGlmIHdoaWNoIHB5YnVpbGRib3QuaWRlbnRpZnkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKIAkJCXB5YnVpbGRib3QuaWRlbnRpZnkgIkNDPSckKENDKSciICJDWFg9JyQoQ1hYKSciOyBcCiAJCWZpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgLXJ3VyAkKFRFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpIC1qIDEgLXUgYWxsIC1XIC0tdGltZW91dD0kKFRFU1RUSU1FT1VUKSAkKFRFU1RPUFRTKQogCiBRVUlDS1RFU1RPUFRTPQkkKFRFU1RPUFRTKSAteCB0ZXN0X3N1YnByb2Nlc3MgdGVzdF9pbyB0ZXN0X2xpYjJ0bzMgXAogCQl0ZXN0X211bHRpYnl0ZWNvZGVjIHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0X2l0ZXJ0b29scyBcCiAJCXRlc3RfbXVsdGlwcm9jZXNzaW5nIHRlc3RfbWFpbGJveCB0ZXN0X3NvY2tldCB0ZXN0X3BvbGwgXAotCQl0ZXN0X3NlbGVjdCB0ZXN0X3ppcGZpbGUKKwkJdGVzdF9zZWxlY3QgdGVzdF96aXBmaWxlIHRlc3RfY29uY3VycmVudF9mdXR1cmVzCiBxdWlja3Rlc3Q6CWFsbCBwbGF0Zm9ybQotCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChRVUlDS1RFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoUVVJQ0tURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAkKFFVSUNLVEVTVE9QVFMpCiAKLU1FTVRFU1RPUFRTPSAgICAkKFFVSUNLVEVTVE9QVFMpIC14IHRlc3RfZGwgdGVzdF9fX2FsbF9fIHRlc3RfZm9yazEgXAotCQl0ZXN0X2xvbmdleHAKLW1lbXRlc3Q6CWFsbCBwbGF0Zm9ybQotCQktcm0gLWYgJChzcmNkaXIpL0xpYi90ZXN0LyoucHlbY29dCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoTUVNVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChNRU1URVNUT1BUUykKIAogaW5zdGFsbDogYWx0aW5zdGFsbCBiaW5pbnN0YWxsCiAKQEAgLTg2NSw3ICs5MjAsNyBAQAogCWRvbmUKIAkkKElOU1RBTExfUFJPR1JBTSkgJChCVUlMRFBZVEhPTikgJChERVNURElSKSQoQklORElSKS9weXRob24kKExEVkVSU0lPTikkKEVYRSkKIAktaWYgdGVzdCAiJChWRVJTSU9OKSIgIT0gIiQoTERWRVJTSU9OKSI7IHRoZW4gXAotCQlpZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pJChWRVJTSU9OKSQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKSQoVkVSU0lPTikkKEVYRSk7IFwKKwkJaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoVkVSU0lPTikkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpOyBcCiAJCXRoZW4gcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpOyBcCiAJCWZpOyBcCiAJCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSBweXRob24kKExEVkVSU0lPTikkKEVYRSkgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSk7IFwKQEAgLTg4NiwxMSArOTQxLDExIEBACiAJZmkKIAogYmluaW5zdGFsbDogYWx0YmluaW5zdGFsbAotCS1pZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pMyQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKTMkKEVYRSk7IFwKLQl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pMyQoRVhFKTsgXAorCS1pZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbjMkKEVYRSk7IFwKKwl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKTsgXAogCWVsc2UgdHJ1ZTsgXAogCWZpCi0JKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIHB5dGhvbiQoVkVSU0lPTikkKEVYRSkgJChQWVRIT04pMyQoRVhFKSkKKwkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSBweXRob24zJChFWEUpKQogCS1pZiB0ZXN0ICIkKFZFUlNJT04pIiAhPSAiJChMRFZFUlNJT04pIjsgdGhlbiBcCiAJCXJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKS1jb25maWc7IFwKIAkJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5dGhvbiQoTERWRVJTSU9OKS1jb25maWcgcHl0aG9uJChWRVJTSU9OKS1jb25maWcpOyBcCkBAIC05MDcsNiArOTYyLDggQEAKIAkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHlkb2MkKFZFUlNJT04pIHB5ZG9jMykKIAktcm0gLWYgJChERVNURElSKSQoQklORElSKS8ydG8zCiAJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIDJ0bzMtJChWRVJTSU9OKSAydG8zKQorCS1ybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dmVudgorCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyBweXZlbnYtJChWRVJTSU9OKSBweXZlbnYpCiAKICMgSW5zdGFsbCB0aGUgbWFudWFsIHBhZ2UKIG1hbmluc3RhbGw6CkBAIC05MzIsMjEgKzk4OSw0MyBAQAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKIAkJdGVzdC9zdWJwcm9jZXNzZGF0YSB0ZXN0L3NuZGhkcmRhdGEgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgdGVzdC9lbmNvZGVkX21vZHVsZXMgXAotCQljb25jdXJyZW50IGNvbmN1cnJlbnQvZnV0dXJlcyBlbmNvZGluZ3MgXAotCQllbWFpbCBlbWFpbC9taW1lIGVtYWlsL3Rlc3QgZW1haWwvdGVzdC9kYXRhIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMSBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMiBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MSBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50IFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MS9wYXJlbnQvY2hpbGQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0Mi9wYXJlbnQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzL3BhcmVudCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkIFwKKyAgICAgICAgICAgICAgICB0ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UgXAorICAgICAgICAgICAgICAgIHRlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QgXAorCQljb2xsZWN0aW9ucyBjb25jdXJyZW50IGNvbmN1cnJlbnQvZnV0dXJlcyBlbmNvZGluZ3MgXAorCQllbWFpbCBlbWFpbC9taW1lIHRlc3QvdGVzdF9lbWFpbCB0ZXN0L3Rlc3RfZW1haWwvZGF0YSBcCiAJCWh0bWwganNvbiB0ZXN0L2pzb25fdGVzdHMgaHR0cCBkYm0geG1scnBjIFwKIAkJc3FsaXRlMyBzcWxpdGUzL3Rlc3QgXAogCQlsb2dnaW5nIGNzdiB3c2dpcmVmIHVybGxpYiBcCiAJCWxpYjJ0bzMgbGliMnRvMy9maXhlcyBsaWIydG8zL3BnZW4yIGxpYjJ0bzMvdGVzdHMgXAotCQlsaWIydG8zL3Rlc3RzL2RhdGEgbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycyBsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzL215Zml4ZXMgXAorCQlsaWIydG8zL3Rlc3RzL2RhdGEgbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycyBcCisJCWxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMvbXlmaXhlcyBcCiAJCWN0eXBlcyBjdHlwZXMvdGVzdCBjdHlwZXMvbWFjaG9saWIgaWRsZWxpYiBpZGxlbGliL0ljb25zIFwKIAkJZGlzdHV0aWxzIGRpc3R1dGlscy9jb21tYW5kIGRpc3R1dGlscy90ZXN0cyAkKFhNTExJQlNVQkRJUlMpIFwKLQkJaW1wb3J0bGliIGltcG9ydGxpYi90ZXN0IGltcG9ydGxpYi90ZXN0L2J1aWx0aW4gXAotCQlpbXBvcnRsaWIvdGVzdC9leHRlbnNpb24gaW1wb3J0bGliL3Rlc3QvZnJvemVuIFwKLQkJaW1wb3J0bGliL3Rlc3QvaW1wb3J0XyBpbXBvcnRsaWIvdGVzdC9zb3VyY2UgXAorCQlpbXBvcnRsaWIgdGVzdC90ZXN0X2ltcG9ydGxpYiB0ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4gXAorCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbiB0ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbiBcCisJCXRlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0XyB0ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZSBcCiAJCXR1cnRsZWRlbW8gXAogCQltdWx0aXByb2Nlc3NpbmcgbXVsdGlwcm9jZXNzaW5nL2R1bW15IFwKLQkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCBcCisJCXVuaXR0ZXN0IHVuaXR0ZXN0L3Rlc3QgdW5pdHRlc3QvdGVzdC90ZXN0bW9jayBcCisJCXZlbnYgdmVudi9zY3JpcHRzIHZlbnYvc2NyaXB0cy9wb3NpeCBcCiAJCWN1cnNlcyBweWRvY19kYXRhICQoTUFDSERFUFMpCiBsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKIAlAZm9yIGkgaW4gJChTQ1JJUFRESVIpICQoTElCREVTVCk7IFwKQEAgLTk2OCw3ICsxMDQ3LDcgQEAKIAkJZWxzZQl0cnVlOyBcCiAJCWZpOyBcCiAJZG9uZQotCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgJChzcmNkaXIpL0xpYi8qLmVnZy1pbmZvIDsgXAorCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGEucHk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgLXggJCRpOyB0aGVuIFwKIAkJCSQoSU5TVEFMTF9TQ1JJUFQpICQkaSAkKERFU1RESVIpJChMSUJERVNUKTsgXApAQCAtMTAwOSwyNyArMTA4OCwyNyBAQAogCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXAogCWZpCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCiAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKIAogIyBDcmVhdGUgdGhlIFBMQVRESVIgc291cmNlIGRpcmVjdG9yeSwgaWYgb25lIHdhc24ndCBkaXN0cmlidXRlZC4uCiAkKHNyY2RpcikvTGliLyQoUExBVERJUik6CkBAIC0xMTIzLDExICsxMjAyLDEzIEBACiAjIEluc3RhbGwgdGhlIGR5bmFtaWNhbGx5IGxvYWRhYmxlIG1vZHVsZXMKICMgVGhpcyBnb2VzIGludG8gJChleGVjX3ByZWZpeCkKIHNoYXJlZGluc3RhbGw6IHNoYXJlZG1vZHMKLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtRSAkKHNyY2Rpcikvc2V0dXAucHkgaW5zdGFsbCBcCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL3NldHVwLnB5IGluc3RhbGwgXAogCSAgIAktLXByZWZpeD0kKHByZWZpeCkgXAogCQktLWluc3RhbGwtc2NyaXB0cz0kKEJJTkRJUikgXAogCQktLWluc3RhbGwtcGxhdGxpYj0kKERFU1RTSEFSRUQpIFwKIAkJLS1yb290PSQoREVTVERJUikvCisJLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhLnB5CisJLXJtIC1yICQoREVTVERJUikkKERFU1RTSEFSRUQpL19fcHljYWNoZV9fCiAKICMgSGVyZSBhcmUgYSBjb3VwbGUgb2YgdGFyZ2V0cyBmb3IgTWFjT1NYIGFnYWluLCB0byBpbnN0YWxsIGEgZnVsbAogIyBmcmFtZXdvcmstYmFzZWQgUHl0aG9uLiBmcmFtZXdvcmtpbnN0YWxsIGluc3RhbGxzIGV2ZXJ5dGhpbmcsIHRoZQpAQCAtMTE5OCwxMyArMTI3OSwxMyBAQAogIyBUaGlzIGluc3RhbGxzIGEgZmV3IG9mIHRoZSB1c2VmdWwgc2NyaXB0cyBpbiBUb29scy9zY3JpcHRzCiBzY3JpcHRzaW5zdGFsbDoKIAlTUkNESVI9JChzcmNkaXIpICQoUlVOU0hBUkVEKSBcCi0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9zZXR1cC5weSBpbnN0YWxsIFwKKwkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3NldHVwLnB5IGluc3RhbGwgXAogCS0tcHJlZml4PSQocHJlZml4KSBcCiAJLS1pbnN0YWxsLXNjcmlwdHM9JChCSU5ESVIpIFwKIAktLXJvb3Q9JChERVNURElSKS8KIAogIyBCdWlsZCB0aGUgdG9wbGV2ZWwgTWFrZWZpbGUKLU1ha2VmaWxlLnByZTogTWFrZWZpbGUucHJlLmluIGNvbmZpZy5zdGF0dXMKK01ha2VmaWxlLnByZTogJChzcmNkaXIpL01ha2VmaWxlLnByZS5pbiBjb25maWcuc3RhdHVzCiAJQ09ORklHX0ZJTEVTPU1ha2VmaWxlLnByZSBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgY29uZmlnLnN0YXR1cwogCSQoTUFLRSkgLWYgTWFrZWZpbGUucHJlIE1ha2VmaWxlCiAKQEAgLTEyNDcsNiArMTMyOCwxMCBAQAogCWV0YWdzIEluY2x1ZGUvKi5oOyBcCiAJZm9yIGkgaW4gJChTUkNESVJTKTsgZG8gZXRhZ3MgLWEgJCRpLyouW2NoXTsgZG9uZQogCisjIFRvdWNoIGdlbmVyYXRlZCBmaWxlcwordG91Y2g6CisJaGcgLS1jb25maWcgZXh0ZW5zaW9ucy50b3VjaD1Ub29scy9oZy9oZ3RvdWNoLnB5IHRvdWNoIC12CisKICMgU2FuaXRhdGlvbiB0YXJnZXRzIC0tIGNsZWFuIGxlYXZlcyBsaWJyYXJpZXMsIGV4ZWN1dGFibGVzIGFuZCB0YWdzCiAjIGZpbGVzLCB3aGljaCBjbG9iYmVyIHJlbW92ZXMgYXMgd2VsbAogcHljcmVtb3ZhbDoKQEAgLTEyNjksMTYgKzEzNTQsMTggQEAKIAlmaW5kIC4gLW5hbWUgJyouc1tvbF0nIC1leGVjIHJtIC1mIHt9ICc7JwogCWZpbmQgLiAtbmFtZSAnKi5zby5bMC05XSouWzAtOV0qJyAtZXhlYyBybSAtZiB7fSAnOycKIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcuaCcgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKLQlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisJZmluZCBidWlsZCAtbmFtZSAnKi5weScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKKwlmaW5kIGJ1aWxkIC1uYW1lICcqLnB5W2NvXScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKKwktcm0gLWYgcHlidWlsZGRpci50eHQKIAktcm0gLWYgTGliL2xpYjJ0bzMvKkdyYW1tYXIqLnBpY2tsZQotCS1ybSAtZiBNb2R1bGVzL190ZXN0ZW1iZWQKKwktcm0gLWYgTW9kdWxlcy9fdGVzdGVtYmVkIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKIAogcHJvZmlsZS1yZW1vdmFsOgogCWZpbmQgLiAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKIAogY2xvYmJlcjogY2xlYW4gcHJvZmlsZS1yZW1vdmFsCiAJLXJtIC1mICQoQlVJTERQWVRIT04pICQoUEdFTikgJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChETExMSUJSQVJZKSBcCi0JCXRhZ3MgVEFHUyBQYXJzZXIvcGdlbi5zdGFtcCBcCisJCXRhZ3MgVEFHUyBcCiAJCWNvbmZpZy5jYWNoZSBjb25maWcubG9nIHB5Y29uZmlnLmggTW9kdWxlcy9jb25maWcuYwogCS1ybSAtcmYgYnVpbGQgcGxhdGZvcm0KIAktcm0gLXJmICQoUFlUSE9ORlJBTUVXT1JLRElSKQpAQCAtMTI5NCw3ICsxMzgxLDYgQEAKIAkJTW9kdWxlcy9TZXR1cCBNb2R1bGVzL1NldHVwLmxvY2FsIE1vZHVsZXMvU2V0dXAuY29uZmlnIFwKIAkJTW9kdWxlcy9sZF9zb19haXggTW9kdWxlcy9weXRob24uZXhwIE1pc2MvcHl0aG9uLnBjCiAJLXJtIC1mIHB5dGhvbiotZ2RiLnB5Ci0JLXJtIC1mIHB5YnVpbGRkaXIudHh0CiAJZmluZCAkKHNyY2RpcikgJygnIC1uYW1lICcqLmZkYycgLW8gLW5hbWUgJyp+JyBcCiAJCQkgICAtbyAtbmFtZSAnW0AsI10qJyAtbyAtbmFtZSAnKi5vbGQnIFwKIAkJCSAgIC1vIC1uYW1lICcqLm9yaWcnIC1vIC1uYW1lICcqLnJlaicgXApAQCAtMTMwOSw4ICsxMzk1LDcgQEAKICMgRmluZCBmaWxlcyB3aXRoIGZ1bm55IG5hbWVzCiBmdW5ueToKIAlmaW5kICQoU1VCRElSUykgJChTVUJESVJTVE9PKSBcCi0JCS1uYW1lIC5zdm4gLXBydW5lIFwKLQkJLW8gLXR5cGUgZCBcCisJCS10eXBlIGQgXAogCQktbyAtbmFtZSAnKi5bY2hzXScgXAogCQktbyAtbmFtZSAnKi5weScgXAogCQktbyAtbmFtZSAnKi5weXcnIFwKQEAgLTEzNDksMTMgKzE0MzQsMTMgQEAKIFB5dGhvbi90aHJlYWQubzogQFRIUkVBREhFQURFUlNACiAKICMgRGVjbGFyZSB0YXJnZXRzIHRoYXQgYXJlbid0IHJlYWwgZmlsZXMKLS5QSE9OWTogYWxsIGJ1aWxkX2FsbCBzaGFyZWRtb2RzIG9sZHNoYXJlZG1vZHMgdGVzdCBxdWlja3Rlc3QgbWVtdGVzdAorLlBIT05ZOiBhbGwgYnVpbGRfYWxsIHNoYXJlZG1vZHMgb2xkc2hhcmVkbW9kcyB0ZXN0IHF1aWNrdGVzdAogLlBIT05ZOiBpbnN0YWxsIGFsdGluc3RhbGwgb2xkc2hhcmVkaW5zdGFsbCBiaW5pbnN0YWxsIGFsdGJpbmluc3RhbGwKIC5QSE9OWTogbWFuaW5zdGFsbCBsaWJpbnN0YWxsIGluY2xpbnN0YWxsIGxpYmFpbnN0YWxsIHNoYXJlZGluc3RhbGwKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbCBmcmFtZXdvcmtpbnN0YWxsZnJhbWV3b3JrIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmUKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbG1hY2xpYiBmcmFtZXdvcmtpbnN0YWxsYXBwcyBmcmFtZXdvcmtpbnN0YWxsdW5peHRvb2xzCiAuUEhPTlk6IGZyYW1ld29ya2FsdGluc3RhbGx1bml4dG9vbHMgcmVjaGVjayBhdXRvY29uZiBjbGVhbiBjbG9iYmVyIGRpc3RjbGVhbgotLlBIT05ZOiBzbWVsbHkgZnVubnkgcGF0Y2hjaGVjaworLlBIT05ZOiBzbWVsbHkgZnVubnkgcGF0Y2hjaGVjayB0b3VjaAogLlBIT05ZOiBnZGJob29rcwogCiAjIElGIFlPVSBQVVQgQU5ZVEhJTkcgSEVSRSBJVCBXSUxMIEdPIEFXQVkKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCAyYjk3ZjUxLi4zOTY2YmE2IDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xMyw4ICsxMywxMSBAQAogCiBBYWh6CiBNaWNoYWVsIEFiYm90dAorUmFqaXYgQWJyYWhhbQogRGF2aWQgQWJyYWhhbXMKK01hcmMgQWJyYW1vd2l0egogUm9uIEFkYW0KK0FsaSBBZnNoYXIKIEppbSBBaGxzdHJvbQogRmFyaGFuIEFobWFkCiBNYXR0aGV3IEFocmVucwpAQCAtMzYsNiArMzksNyBAQAogRXJpayBBbmRlcnPDqW4KIE9saXZlciBBbmRyaWNoCiBSb3NzIEFuZHJ1cworSnVhbmNhcmxvIEHDsWV6CiBKw6lyw6lteSBBbmdlcgogSm9uIEFuZ2xpbgogSGVpZGkgQW5uZXhzdGFkCkBAIC00NCwxMyArNDgsMTMgQEAKIEphc29uIEFzYmFocgogRGF2aWQgQXNjaGVyCiBDaHJpcyBBdExlZQorQXltZXJpYyBBdWd1c3RpbgogSm9obiBBeWNvY2sKLUphbi1IZWluIELDvGhybWFuCiBEb25vdmFuIEJhYXJkYQogQXJuZSBCYWJlbmhhdXNlcmhlaWRlCiBBdHRpbGEgQmFibwotQWxmb25zbyBCYWNpZXJvCiBNYXJjaW4gQmFjaHJ5CitBbGZvbnNvIEJhY2llcm8KIER3YXluZSBCYWlsZXkKIFN0aWcgQmFra2VuCiBHcmVnIEJhbGwKQEAgLTY1LDIxICs2OSwyMyBAQAogQW50b24gQmFya292c2t5CiBOaWNrIEJhcm5lcwogUXVlbnRpbiBCYXJuZXMKK0RhdmlkIEJhcm5ldHQKIFJpY2hhcmQgQmFycmFuCiBDZXNhciBFZHVhcmRvIEJhcnJvcwogRGVzIEJhcnJ5CiBVbGYgQmFydGVsdAogRG9uIEJhc2hmb3JkCitQaW9yIEJhc3RpZGEKIE5pY2sgQmFzdGluCiBKZWZmIEJhdWVyCi1NaWtlIEJheWVyCiBNaWNoYWVsIFIgQmF4CiBBbnRob255IEJheHRlcgorTWlrZSBCYXllcgogU2FtdWVsIEwuIEJheWVyCiBEb25hbGQgQmVhdWRyeQogRGF2aWQgQmVhemxleQotUm9iaW4gQmVja2VyCiBOZWFsIEJlY2tlcgorUm9iaW4gQmVja2VyCiBUb3JzdGVuIEJlY2tlcgogQmlsbCBCZWRmb3JkCiBTdGVmYW4gQmVobmVsCkBAIC05Miw5ICs5OCwxMSBAQAogQW5kcmV3IEJlbm5ldHRzCiBBbmR5IEJlbnNreQogQmVubmV0dCBCZW5zb24KK0V6cmEgQmVyY2gKIE1pY2hlbCBWYW4gZGVuIEJlcmdoCiBKdWxpYW4gQmVybWFuCiBCcmljZSBCZXJuYQorT2xpdmllciBCZXJuYXJkCiBFcmljIEJlc2VyCiBTdGV2ZW4gQmV0aGFyZAogU3RlcGhlbiBCZXZhbgpAQCAtMTA3LDYgKzExNSw3IEBACiBTdHVhcnQgQmlzaG9wCiBSb3kgQml4bGVyCiBKb25hdGhhbiBCbGFjaworUmVuYXVkIEJsYW5jaAogTWlrZSBCbGFuZAogTWFydGluIEJsZXNzCiBQYWJsbyBCbGV5ZXIKQEAgLTExNywxMSArMTI2LDEzIEBACiBNYXR0aGV3IEJvZWRpY2tlcgogUm9iaW4gQm9lcmRpamsKIERhdmlkIEJvbGVuCi1Gb3Jlc3QgQm9uZAogR2F3YWluIEJvbHRvbgorRm9yZXN0IEJvbmQKIEdyZWdvcnkgQm9uZAorTWF0aWFzIEJvcmRlc2UKIEp1cmplbiBCb3MKIFBldGVyIEJvc2NoCitEYW4gQm9zd2VsbAogRXJpYyBCb3VjawogVGhpZXJyeSBCb3VzY2gKIFNlYmFzdGlhbiBCb3ZpbmcKQEAgLTEzMiw5ICsxNDMsMTEgQEAKIEdlb3JnIEJyYW5kbAogQ2hyaXN0b3BoZXIgQnJhbm5vbgogVGVycmVuY2UgQnJhbm5vbgorRXJpayBCcmF5CiBCcmlhbiBCcmF6aWwKIERhdmUgQnJlbm5hbgogVG9tIEJyaWRnbWFuCitBbnRob255IEJyaWdncwogS2VpdGggQnJpZ2dzCiBUb2JpYXMgQnJpbmsKIFJpY2hhcmQgQnJvZGllCkBAIC0xNDIsNiArMTU1LDcgQEAKIERhbmllbCBCcm90c2t5CiBKZWFuIEJyb3V3ZXJzCiBHYXJ5IFMuIEJyb3duCitUaXR1cyBCcm93bgogT2xlZyBCcm95dG1hbm4KIERhdmUgQnJ1ZWNrCiBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpCkBAIC0xNDksNiArMTYzLDcgQEAKIEZsb3JpcyBCcnV5bm9vZ2hlCiBTdGFuIEJ1YnJvdXNraQogRXJpayBkZSBCdWVnZXIKK0phbi1IZWluIELDvGhybWFuCiBEaWNrIEJ1bHRlcm1hbgogQmlsbCBCdW1nYXJuZXIKIEppbW15IEJ1cmdldHQKQEAgLTE1OCwxNCArMTczLDE1IEBACiBUYXJuIFdlaXNuZXIgQnVydG9uCiBMZWUgQnVzYnkKIFJhbHBoIEJ1dGxlcgorTmljb2xhcyBDYWRvdQogSnAgQ2FsZGVyb25lCiBBcm5hdWQgQ2FsbWV0dGVzCiBEYW5pZWwgQ2FsdmVsbwogVG9ueSBDYW1wYmVsbAogQnJldHQgQ2Fubm9uCiBNaWtlIENhcmx0b24KK1BpZXJyZSBDYXJyaWVyCiBUZXJyeSBDYXJyb2xsCi1EYW1pZW4gQ2Fzc291CiBMb3JlbnpvIE0uIENhdHVjY2kKIERvbm4gQ2F2ZQogQ2hhcmxlcyBDYXphYm9uCkBAIC0xNzgsOSArMTk0LDEwIEBACiBKb2huIENoYW5kbGVyCiBIeWUtU2hpayBDaGFuZwogSmVmZnJleSBDaGFuZwotTWl0Y2ggQ2hhcG1hbgotR3JlZyBDaGFwbWFuCitHb2RlZnJvaWQgQ2hhcGVsbGUKIEJyYWQgQ2hhcG1hbgorR3JlZyBDaGFwbWFuCitNaXRjaCBDaGFwbWFuCiBEYXZpZCBDaGF1bQogTmljb2xhcyBDaGF1dmF0CiBKZXJyeSBDaGVuCkBAIC0xOTUsOSArMjEyLDExIEBACiBEYXZpZCBDaW5lZ2UKIENyYWlnIENpdHJvCiBHaWxsZXMgQ2l2YXJpbworQ2hyaXMgQ2xhcmsKIE1pa2UgQ2xhcmtzb24KIEFuZHJldyBDbGVnZwogQnJhZCBDbGVtZW50cworUm9iYmllIENsZW1vbnMKIFN0ZXZlIENsaWZ0CiBIZXJ2w6kgQ29hdGFuaGF5CiBOaWNrIENvZ2hsYW4KQEAgLTIwOCw4ICsyMjcsOSBAQAogSmVmZmVyeSBDb2xsaW5zCiBSb2JlcnQgQ29sbGlucwogUGF1bCBDb2xvbWlldHMKLURlbnZlciBDb25leWJlYXJlCitDaHJpc3RvcGhlIENvbWJlbGxlcwogR2VyZW15IENvbmRyYQorRGVudmVyIENvbmV5YmVhcmUKIEp1YW4gSm9zw6kgQ29udGkKIE1hdHQgQ29ud2F5CiBEYXZpZCBNLiBDb29rZQpAQCAtMjM3LDYgKzI1Nyw3IEBACiBBbnRvbmlvIEN1bmkKIEJyaWFuIEN1cnRpbgogTGlzYW5kcm8gRGFsY2luCitEYXJyZW4gRGFsZQogQW5kcmV3IERhbGtlCiBMYXJzIERhbWVyb3cKIEV2YW4gRGFuZHJlYQpAQCAtMjQ1LDEwICsyNjYsMTMgQEAKIEJlbiBEYXJuZWxsCiBLdXNoYWwgRGFzCiBKb25hdGhhbiBEYXN0ZWVsCitQaWVycmUtWXZlcyBEYXZpZAorWGF2aWVyIGRlIEdheWUKIEpvaG4gRGVHb29kCiBOZWQgRGVpbHkKIFZpbmNlbnQgRGVsZnQKIEFybmF1ZCBEZWxvYmVsbGUKK0tvbnJhZCBEZWxvbmcKIEVyaWsgRGVtYWluZQogSm9obiBEZW5uaXMKIEwuIFBldGVyIERldXRzY2gKQEAgLTI2NSw2ICsyODksNyBAQAogSHVtYmVydG8gRGlvZ2VuZXMKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgorSm9zaXAgRGpvbG9uZ2EKIEphcm9taXIgRG9sZWNlawogSXNtYWlsIERvbm1legogUm9iZXJ0IERvbm9odWUKQEAgLTI5MSw2ICszMTYsNyBAQAogV2FsdGVyIETDtnJ3YWxkCiBIYW5zIEVja2FyZHQKIFJvZG9scGhvIEVja2hhcmR0CitKb2huIEVkbW9uZHMKIEdyYW50IEVkd2FyZHMKIEpvaG4gRWhyZXNtYW4KIFRhbCBFaW5hdApAQCAtMjk4LDI5ICszMjQsMzUgQEAKIEFuZHJldyBFbGFuZAogSnVsaWVuIMOJbGllCiBMYW5jZSBFbGxpbmdoYXVzCitEYW5pZWwgRWxsaXMKIERhdmlkIEVseQogSmVmZiBFcGxlcgorSmVmZiBNY05laWwKIFRvbSBFcHBlcmx5CiBTdG9mZmVsIEVyYXNtdXMKIErDvHJnZW4gQS4gRXJoYXJkCiBNaWNoYWVsIEVybnN0CiBCZW4gRXNjb3RvCiBBbmR5IEVza2lsc3NvbgorQW5kcsOpIEVzcGF6ZQogU3RlZmFuIEVzc2VyCiBOaWNvbGFzIEVzdGliYWxzCi1TdGVwaGVuIEQgRXZhbnMKIENhcmV5IEV2YW5zCitTdGVwaGVuIEQgRXZhbnMKIFRpbSBFdmVyZXR0CiBQYXVsIEV2ZXJpdHQKIERhdmlkIEV2ZXJseQogRGFuaWVsIEV2ZXJzCitXaW5zdG9uIEV3ZXJ0CiBHcmVnIEV3aW5nCiBNYXJ0aWpuIEZhYXNzZW4KIENsb3ZpcyBGYWJyaWNpbwogQW5kcmVhcyBGYWVyYmVyCiBCaWxsIEZhbmNoZXIKK01pY2hhZWwgRmFycmVsbAogVHJveSBKLiBGYXJyZWxsCiBNYXJrIEZhdmFzCitCb3JpcyBGZWxkCiBOaWVscyBGZXJndXNvbgogU2ViYXN0aWFuIEZlcm5hbmRlegogRmxvcmlhbiBGZXN0aQpAQCAtMzQwLDExICszNzIsMTQgQEAKIEFtYXVyeSBGb3JnZW90IGQnQXJjCiBEb3VnIEZvcnQKIEpvaG4gRm91aHkKK0FuZHJldyBGcmFuY2lzCiBTdGVmYW4gRnJhbmtlCiBNYXJ0aW4gRnJhbmtsaW4KK0JydWNlIEZyZWRlcmlrc2VuCiBSb2JpbiBGcmllZHJpY2gKIEJyYWRsZXkgRnJvZWhsZQogSXZhbiBGcm9obmUKK01hdHRoaWFzIEZ1Y2hzCiBKaW0gRnVsdG9uCiBUYWRheW9zaGkgRnVuYWJhCiBHeXJvIEZ1bmNoCkBAIC0zODEsMTAgKzQxNiwxMyBAQAogSm9uYXRoYW4gR2lkZHkKIEpvaGFubmVzIEdpanNiZXJzCiBNaWNoYWVsIEdpbGZpeAorWWFubmljayBHaW5ncmFzCiBNYXR0IEdpdWNhCitNaWNoYWVsIEdvZGVyYmF1ZXIKIENocmlzdG9waCBHb2hsa2UKIFRpbSBHb2xkZW4KIEd1aWxoZXJtZSBHb27Dp2FsdmVzCitUaWFnbyBHb27Dp2FsdmVzCiBDaHJpcyBHb25uZXJtYW4KIFNoZWxsZXkgR29vY2gKIERhdmlkIEdvb2RnZXIKQEAgLTQwMSwxNSArNDM5LDE4IEBACiBNaWNoYWVsIEd1cmF2YWdlCiBMYXJzIEd1c3TDpGJlbAogVGhvbWFzIEfDvHR0bGVyCitKb25hcyBILgogQmFycnkgSGFkZG93CiBQaGlsaXBwIEhhZ2VtZWlzdGVyCiBQYXVsIHRlbiBIYWdlbgogUmFzbXVzIEhhaG4KIFBldGVyIEhhaWdodAogVsOhY2xhdiBIYWlzbWFuCitXYWxrZXIgSGFsZSBJVgogQm9iIEhhbGxleQogSmVzc2UgSGFsbGlvCiBKdW4gSGFtYW5vCitBbGV4YW5kcmUgSGFtZWxpbgogQW5kZXJzIEhhbW1hcnF1aXN0CiBNYXJrIEhhbW1vbmQKIEhhcmFsZCBIYW5jaGUtT2xzZW4KQEAgLTQyMSw2ICs0NjIsNyBAQAogRGVyZWsgSGFybGFuZAogSmFzb24gSGFycGVyCiBCcmlhbiBIYXJyaW5nCitKb25hdGhhbiBIYXJ0bGV5CiBUcmF2aXMgQi4gSGFydHdlbGwKIExhcnJ5IEhhc3RpbmdzCiBUaW0gSGF0Y2gKQEAgLTQzNCw2ICs0NzYsNyBAQAogTWFsdGUgSGVsbWVydAogTGFuY2UgRmlubiBIZWxzdGVuCiBKb25hdGhhbiBIZW5kcnkKK01pY2hhZWwgSGVucnkKIEphbWVzIEhlbnN0cmlkZ2UKIEthc3VuIEhlcmF0aAogQ2hyaXMgSGVyYm9ydGgKQEAgLTQ0NSwxMCArNDg4LDEwIEBACiBNYWdudXMgTC4gSGV0bGFuZAogUmF5bW9uZCBIZXR0aW5nZXIKIEtldmFuIEhleWRvbgorS2Vsc2V5IEhpZ2h0b3dlcgogSmFzb24gSGlsZGVicmFuZAogUmljaGllIEhpbmRsZQogS29ucmFkIEhpbnNlbgotTWljaGFlbCBIZW5yeQogRGF2aWQgSG9ibGV5CiBUaW0gSG9jaGJlcmcKIEpvZXJnLUN5cmlsIEhvZWhsZQpAQCAtNDY0LDYgKzUwNyw3IEBACiBHZXJyaXQgSG9sbAogU2hhbmUgSG9sbG93YXkKIFJ1bmUgSG9sbQorVGhvbWFzIEhvbG1lcwogUGhpbGlwIEhvbWJ1cmcKIE5hb2Z1bWkgSG9uZGEKIEplZmZyZXkgSG9uaWcKQEAgLTQ3MiwyMiArNTE2LDI3IEBACiBCcmlhbiBIb29wZXIKIFJhbmRhbGwgSG9wcGVyCiBOYWRhdiBIb3Jlc2gKK0Fsb24gSG9yZXYKIEphbiBIb3NhbmcKIEtlbiBIb3dhcmQKIEJyYWQgSG93ZXMKIE1pa2UgSG95CiBDaGloLUhhbyBIdWFuZworQ2hyaXN0aWFuIEh1ZG9uCiBMYXdyZW5jZSBIdWRzb24KIE1pY2hhZWwgSHVkc29uCiBKaW0gSHVndW5pbgogR3JlZyBIdW1waHJleXMKIEVyaWMgSHVzcworVGFpaHl1biBId2FuZwogSmVyZW15IEh5bHRvbgogTHVkd2lnIEjDpGhuZQogR2VyaGFyZCBIw6RyaW5nCiBGcmVkcmlrIEjDpcOlcmQKK0NhdGFsaW4gSWFjb2IKIE1paGFpIEliYW5lc2N1CiBBbGkgSWtpbmNpCitBYXJvbiBJbGVzCiBMYXJzIEltbWlzY2gKIEJvYmJ5IEltcG9sbG9uaWEKIE1lYWRvciBJbmdlCkBAIC01MDcsMTIgKzU1NiwxNSBAQAogSmFjayBKYW5zZW4KIEJpbGwgSmFuc3NlbgogVGhvbWFzIEphcm9zY2gKLVpieXN6ZWsgSsSZZHJ6ZWpld3NraS1Tem1laworSnVoYW5hIEphdWhpYWluZW4KK1piaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsKK0p1bGllbiBKZWhhbm5ldAogRHJldyBKZW5raW5zCiBGbGVtbWluZyBLasOmciBKZW5zZW4KIFBoaWxpcCBILiBKZW5zZW4KIE11blNpYyBKZW9uZwogQ2hyaXMgSmVyZG9uZWsKK0ppbSBKZXdldHQKIFBlZHJvIERpYXogSmltZW5legogT3JqYW4gSm9oYW5zZW4KIEZyZWRyaWsgSm9oYW5zc29uCkBAIC01MjIsMTMgKzU3NCwxNSBAQAogTWF0dCBKb2luZXIKIFRob21hcyBKb2xsYW5zCiBOaWNvbGFzIEpvbHkKK0JyaWFuIEsuIEpvbmVzCiBFdmFuIEpvbmVzCiBKZXJlbXkgSm9uZXMKIFJpY2hhcmQgSm9uZXMKIElybWVuIGRlIEpvbmcKIEx1Y2FzIGRlIEpvbmdlCi1Kb2huIEpvcmdlbnNlbgorS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uCiBKZW5zIEIuIEpvcmdlbnNlbgorSm9obiBKb3JnZW5zZW4KIFNpamluIEpvc2VwaAogQW5kcmVhcyBKdW5nCiBUYXR0b28gTWFib256byBLLgpAQCAtNTM2LDIyICs1OTAsMjUgQEAKIEJvYiBLYWhuCiBLdXJ0IEIuIEthaXNlcgogVGFtaXRvIEthaml5YW1hCitKYW4gS2FsaXN6ZXdza2kKIFBldGVyIHZhbiBLYW1wZW4KIFJhZmUgS2FwbGFuCiBKYWNvYiBLYXBsYW4tTW9zcwotSmFuIEthbGlzemV3c2tpCitKYW5uZSBLYXJpbGEKK1BlciDDmHl2aW5kIEthcmxzZW4KIExvdSBLYXRlcwogSGlyb2FraSBLYXdhaQogU2ViYXN0aWVuIEtlaW0KIFJ5YW4gS2VsbHkKIERhbiBLZW5pZ3NiZXJnCi1Sb2JlcnQgS2VybgogUmFuZGFsbCBLZXJuCitSb2JlcnQgS2VybgogSmltIEtlcnIKIE1hZ251cyBLZXNzbGVyCiBMYXdyZW5jZSBLZXN0ZWxvb3QKIFZpdmVrIEtoZXJhCiBNYWRzIEtpaWxlcmljaAorSmFzb24gS2lsbGVuCiBKYW4gS2ltCiBUYWVrIEpvbyBLaW0KIFcuIFRyZXZvciBLaW5nCkBAIC01NzUsNiArNjMyLDggQEAKIERhbW9uIEtvaGxlcgogTWFya28gS29odGFsYQogR3VpZG8gS29sbGVyaWUKK0phY2VrIEtvbmllY3pueQor0JzQsNGA0Log0JrQvtGA0LXQvdCx0LXRgNCzCiBBcmthZHkgS29wbHlhcm92CiBQZXRlciBBLiBLb3JlbgogVmxhZCBLb3JvbGV2CkBAIC01ODgsMzQgKzY0NywzOSBAQAogTWljaGFlbCBLcmVtZXIKIEZhYmlhbiBLcmV1dHoKIEPDqWRyaWMgS3JpZXIKK1BlZHJvIEtyb2dlcgogSGFubnUgS3Jvc2luZwogQW5kcmVqIEtycGljCiBJdmFuIEtyc3RpxIcKIEFuZHJldyBLdWNobGluZwogRGF2ZSBLdWhsbWFuCitKb24gS3VobgogVmxhZGltaXIgS3VzaG5pcgogRXJubyBLdXVzZWxhCiBSb3NzIExhZ2Vyd2FsbAogQ2FtZXJvbiBMYWlyZAogVGhvbWFzIExhbWIKIEplYW4tQmFwdGlzdGUgIkppYmEiIExhbXkKK1JvbmFuIExhbXkKIFRvcnN0ZW4gTGFuZHNjaG9mZgogxYF1a2FzeiBMYW5nYQogVGlubyBMYW5nZQogQW5kcmV3IExhbmdtZWFkCiBEZXRsZWYgTGFubmVydAogU29yZW4gTGFyc2VuCitBbW9zIExhdHRlaWVyCiBQaWVycyBMYXVkZXIKIEJlbiBMYXVyaWUKIFNpbW9uIExhdwogSnVsaWEgTGF3YWxsCiBDaHJpcyBMYXdyZW5jZQogQnJpYW4gTGVhaXIKK01hdGhpZXUgTGVkdWMtSGFtZWwKK0NocmlzdG9waGVyIExlZQorSW55ZW9sIExlZQogSmFtZXMgTGVlCiBKb2huIEouIExlZQotSW55ZW9sIExlZQogVGhvbWFzIExlZQotQ2hyaXN0b3BoZXIgTGVlCiBUZW5uZXNzZWUgTGVldXdlbmJ1cmcKIEx1YyBMZWZlYnZyZQogR2x5cGggTGVma293aXR6CkBAIC02MjksNiArNjkzLDcgQEAKIE1hcmMtQW5kcsOpIExlbWJ1cmcKIEpvaG4gTGVudG9uCiBDaHJpc3RvcGhlciBUdXIgTGVzbmlld3NraS1MYWFzCitBbGFpbiBMZXVmcm95CiBNYXJrIExldmluc29uCiBXaWxsaWFtIExld2lzCiBBa2lyYSBMaQpAQCAtNjQ5LDYgKzcxNCw3IEBACiBNaXJrbyBMaXNzCiBOaWNrIExvY2t3b29kCiBTdGVwaGFuaWUgTG9ja3dvb2QKK0h1Z28gTG9wZXMgVGF2YXJlcwogQW5uZSBMb3JkCiBUb20gTG9yZWRvCiBKdXN0aW4gTG92ZQpAQCAtNjYyLDYgKzcyOCw3IEBACiBKaW0gTHluY2gKIE1pa2FlbCBMeW5ndmlnCiBNYXJ0aW4gdm9uIEzDtndpcworR3VpbGxlcm1vIEzDs3Blei1BbmdsYWRhCiBKZWZmIE1hY0RvbmFsZAogSm9obiBNYWNoaW4KIEFuZHJldyBJIE1hY0ludHlyZQpAQCAtNjczLDYgKzc0MCw3IEBACiBEYXZpZCBNYWxjb2xtCiBLZW4gTWFuaGVpbWVyCiBWbGFkaW1pciBNYXJhbmdvem92CitDb2xpbiBNYXJjCiBWaW5jZW50IE1hcmNoZXR0aQogRGF2aWQgTWFyZWsKIERvdWcgTWFyaWVuCkBAIC02ODIsOCArNzUwLDEwIEBACiBPd2VuIE1hcnRpbgogV2VzdGxleSBNYXJ0w61uZXoKIFPDqWJhc3RpZW4gTWFydGluaQorU2lkbmV5IFNhbiBNYXJ0w61uCiBSb2dlciBNYXNzZQogTmljayBNYXRoZXdzb24KK1NpbW9uIE1hdGhpZXUKIExhdXJhIE1hdHNvbgogR3JhaGFtIE1hdHRoZXdzCiBEaWV0ZXIgTWF1cmVyCkBAIC02OTcsOCArNzY3LDggQEAKIE1pY2hhZWwgTWNMYXkKIE1hcmsgTWMgTWFob24KIEdvcmRvbiBNY01pbGxhbgotQ2FvbGFuIE1jTmFtYXJhCiBBbmRyZXcgTWNOYW1hcmEKK0Nhb2xhbiBNY05hbWFyYQogSmVmZiBNY05laWwKIENyYWlnIE1jUGhlZXRlcnMKIExhbWJlcnQgTWVlcnRlbnMKQEAgLTcxMCw2ICs3ODAsOCBAQAogTHVrZSBNZXdidXJuCiBDYXJsIE1leWVyCiBNaWtlIE1leWVyCitQaW90ciBNZXllcgorQWxleGlzIE3DqXRhaXJlYXUKIFN0ZXZlbiBNaWFsZQogVHJlbnQgTWljawogVG9tIE1pZGRsZXRvbgpAQCAtNzE3LDMyICs3ODksMzcgQEAKIFN0ZWZhbiBNaWhhaWxhCiBBcmlzdG90ZWxpcyBNaWtyb3BvdWxvcwogUGFvbG8gTWlsYW5pCi1EYW1pZW4gTWlsbGVyCiBDaGFkIE1pbGxlcgorRGFtaWVuIE1pbGxlcgogSmFzb24gVi4gTWlsbGVyCiBKYXkgVC4gTWlsbGVyCiBSb21hbiBNaWxuZXIKK0p1bGllbiBNaW90dGUKIEFuZHJpaSBWLiBNaXNoa292c2t5aQotRHVzdGluIEouIE1pdGNoZWxsCiBEb20gTWl0Y2hlbGwKK0R1c3RpbiBKLiBNaXRjaGVsbAorWnViaW4gTWl0aHJhCiBGbG9yaWFuIE1sYWRpdHNjaAogRG91ZyBNb2VuCiBUaGUgRHJhZ29uIERlIE1vbnN5bmUKIFNraXAgTW9udGFuYXJvCitQZXRlciBNb29keQogUGF1bCBNb29yZQogUm9zcyBNb29yZQogRGVyZWsgTW9ycgogSmFtZXMgQSBNb3JyaXNvbgorRGVyZWsgTWNUYXZpc2ggTW91bmNlCiBBbGVzc2FuZHJvIE1vdXJhCiBQYWJsbyBNb3V6bwogTWhlciBNb3ZzaXN5YW4KIFJ1c2xhbiBNc3RvaQotU2pvZXJkIE11bGxlbmRlcgorTWljaGFlbCBNdWxpY2gKIFNhcGUgTXVsbGVuZGVyCitTam9lcmQgTXVsbGVuZGVyCiBNaWNoYWVsIE11bGxlcgogTmVpbCBNdWxsZXIKK0xvdWlzIE11bnJvCiBSLiBEYXZpZCBNdXJyYXkKLVBpb3RyIE1leWVyCiBEYWxlIE5hZ2F0YQogSm9obiBOYWdsZQogVGFrYWhpcm8gTmFrYXlhbWEKQEAgLTc1MCwxMyArODI3LDE0IEBACiBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkKIFZpbG1vcyBOZWJlaGFqCiBGcmVkcmlrIE5laHIKLVRyZW50IE5lbHNvbgogVG9ueSBOZWxzb24KK1RyZW50IE5lbHNvbgogQ2hhZCBOZXR6ZXIKIE1heCBOZXVuaMO2ZmZlcgogR2VvcmdlIE5ldmlsbGUtTmVpbAogSm9oYW5uZXMgTmljb2xhaQogU2FtdWVsIE5pY29sYXJ5CitKb25hdGhhbiBOaWVob2YKIEd1c3Rhdm8gTmllbWV5ZXIKIE9zY2FyIE5pZXJzdHJhc3oKIEhydm9qZSBOaWtzaWMKQEAgLTc3NSw2ICs4NTMsOCBAQAogS2V2aW4gTydDb25ub3IKIFRpbSBPJ01hbGxleQogWm9va28gTydXaGllbGFjcm9ueAorSmFtZXMgT2FrbGV5CitKb24gT2JlcmhlaWRlCiBQYXNjYWwgT2Jlcm5kb2VyZmVyCiBKZWZmcmV5IE9sbGllCiBBZGFtIE9sc2VuCkBAIC04MDQsMTMgKzg4NCwxOCBAQAogRGFuIFBhcmlzaWVuCiBXaWxsaWFtIFBhcmsKIEhhcnJpIFBhc2FuZW4KK0dhw6tsIFBhc2dyaW1hdWQKIEJvIFBlbmcKIEpvZSBQZXRlcnNvbgogUmFuZHkgUGF1c2NoCiBTYW11ZWxlIFBlZHJvbmkKK0p1c3RpbiBQZWVsCiBNYXJjZWwgdmFuIGRlciBQZWlqbAorQmVya2VyIFBla3NhZwogU3RldmVuIFBlbWJlcnRvbgogU2FudGlhZ28gUGVyZXPDs24KK0dlb3JnZSBQZXJpc3RlcmFraXMKK01hdGhpZXUgUGVycmVhdWx0CiBNYXJrIFBlcnJlZ28KIFRyZXZvciBQZXJyaW4KIEdhYnJpZWwgZGUgUGVydGh1aXMKQEAgLTgyMCw2ICs5MDUsNyBAQAogQ2hyaXMgUGV0cmlsbGkKIEJqb3JuIFBldHRlcnNlbgogSnVzdGluIEQuIFBldHRpdAorUm9ubnkgUGZhbm5zY2htaWR0CiBHZW9mZiBQaGlsYnJpY2sKIEdhdnJpZSBQaGlsaXBzb24KIEFkcmlhbiBQaGlsbGlwcwpAQCAtODM1LDYgKzkyMSw3IEBACiBBbnRvaW5lIFBpdHJvdQogSmVhbi1GcmFuw6dvaXMgUGnDqXJvbm5lCiBPbGVnIFBsYWtob3RueXVrCitSZW1pIFBvaW50ZWwKIEd1aWxoZXJtZSBQb2xvCiBNaWNoYWVsIFBvbXJhbmluZwogSXVzdGluIFBvcApAQCAtODQzLDEzICs5MzAsMTUgQEAKIEFtcml0IFByZW0KIFBhdWwgUHJlc2NvZAogRG9ub3ZhbiBQcmVzdG9uCitQYXVsIFByaWNlCiBKeXJraSBQdWxsaWFpbmVuCiBTdGV2ZSBQdXJjZWxsCi1GZXJuYW5kbyBQw6lyZXoKIEVkdWFyZG8gUMOpcmV6CitGZXJuYW5kbyBQw6lyZXoKIFBpZXJyZSBRdWVudGVsCiBCcmlhbiBRdWlubGFuCiBBbmRlcnMgUXZpc3QKK0rDqXLDtG1lIFJhZGl4CiBCdXJ0b24gUmFkb25zCiBKZWZmIFJhbW5hbmkKIEJyb2RpZSBSYW8KQEAgLTg2NSwxNyArOTU0LDIxIEBACiBHYXJldGggUmVlcwogU3RldmUgUmVldmVzCiBMZW5uYXJ0IFJlZ2Vicm8KK0pvaG4gUmVnZWhyCitGZWRlcmljbyBSZWdoZW56YW5pCiBPZmlyIFJlaWNoZW5iZXJnCiBTZWFuIFJlaWZzY2huZWlkZXIKIE1pY2hhZWwgUC4gUmVpbGx5CiBCZXJuaGFyZCBSZWl0ZXIKIFN0ZXZlbiBSZWl6CiBSb2VsYW5kIFJlbmdlbGluaworQW50b2luZSBSZXZlcnNhdAogRmzDoXZpbyBSaWJlaXJvCi1UaW0gUmljZQogRnJhbmNlc2NvIFJpY2NpYXJkaQorVGltIFJpY2UKIEphbiBQaWV0ZXIgUmllZ2VsCiBBcm1pbiBSaWdvCitBcmMgUmlsZXkKIE5pY2hvbGFzIFJpbGV5CiBKZWFuLUNsYXVkZSBSaW1iYXVsdAogVmxhZCBSaXNjdXRpYQpAQCAtODg1LDE3ICs5NzgsMjEgQEAKIEFudGhvbnkgUm9hY2gKIENhcmwgUm9iYmVuCiBNYXJrIFJvYmVydHMKLUppbSBSb2JpbnNvbgogQW5keSBSb2JpbnNvbgorSmltIFJvYmluc29uCiBNYXJrIFJvZGR5CiBLZXZpbiBSb2RnZXJzCiBHaWFtcGFvbG8gUm9kb2xhCitFbHNvbiBSb2RyaWd1ZXoKIEFkaSBSb2liYW4KK0x1aXMgUm9qYXMKIE1pa2UgUm9tYmVyZwogQXJtaW4gUm9uYWNoZXIKIENhc2UgUm9vbGUKIFRpbW90aHkgUm9zY29lCitFcmlrIFJvc2UKIEppbSBSb3NraW5kCitCcmlhbiBSb3NuZXIKIEd1aWRvIHZhbiBSb3NzdW0KIEp1c3QgdmFuIFJvc3N1bQogSHVnbyB2YW4gUm9zc3VtCkBAIC05MTMsOSArMTAxMCwxMSBAQAogSmVmZiBSdXNoCiBTYW0gUnVzaGluZwogTWFyayBSdXNzZWxsCitSdXN0eSBSdXNzZWxsCiBOaWNrIFJ1c3NvCiBDaHJpcyBSeWxhbmQKIENvbnN0YW50aW5hIFMuCitQYXRyaWNrIFNhYmluCiBTw6liYXN0aWVuIFNhYmzDqQogU3VtYW4gU2FoYQogSGFqaW1lIFNhaXRvdQpAQCAtOTIzLDYgKzEwMjIsNyBAQAogUmljaCBTYWx6CiBLZXZpbiBTYW1ib3JuCiBBZHJpYW4gU2FtcHNvbgorSmFtZXMgU2FuZGVycwogSWx5YSBTYW5kbGVyCiBNYXJrIFNhcGlybwogVHkgU2FybmEKQEAgLTk1MCwxNSArMTA1MCwxNiBAQAogU3RlZmFuIFNjaHdhcnplcgogRGlldG1hciBTY2h3ZXJ0YmVyZ2VyCiBGZWRlcmljbyBTY2h3aW5kdAotU3RldmVuIFNjb3R0CiBCYXJyeSBTY290dAorU3RldmVuIFNjb3R0CiBOaWNrIFNlaWRlbm1hbgogxb1pZ2EgU2VpbG5hY2h0CiBZdXJ5IFNlbGl2YW5vdgogRnJlZCBTZWxscwogSml3b24gU2VvCitJw7FpZ28gU2VybmEKIEpvYWtpbSBTZXJuYnJhbnQKLVJvZ2VyIFNlcnd5CitSb2dlciBELiBTZXJ3eQogSmVycnkgU2V1dHRlcgogUGV0ZSBTZXZhbmRlcgogRGVuaXMgU2V2ZXJzb24KQEAgLTk4NCwyMCArMTA4NSwyNCBAQAogSW9uZWwgU2ltaW9uZXNjdQogS2lyaWxsIFNpbW9ub3YKIE5hdGhhbiBQYXVsIFNpbW9ucworQWRhbSBTaW1wa2lucwogSmFubmUgU2lua2tvbmVuCiBOZyBQaGVuZyBTaW9uZwogR2VvcmdlIFNpcGUKIEouIFNpcHByZWxsCiBLcmFnZW4gU2l0YWtlcgogTWljaGFlbCBTbG9hbgotRXJpYyBWLiBTbWl0aAogQ2hyaXN0b3BoZXIgU21pdGgKK0VyaWMgVi4gU21pdGgKIEdyZWdvcnkgUC4gU21pdGgKK01hcmsgU21pdGgKIFJveSBTbWl0aAogUmFmYWwgU21vdHJ6eWsKK0VyaWMgU25vdwogRGlyayBTb2VkZQogUGF1bCBTb2tvbG92c2t5CiBDb2R5IFNvbWVydmlsbGUKK0Vkb2FyZG8gU3BhZG9saW5pCiBDbGF5IFNwZW5jZQogU3RlZmFuIFNwZXJsaW5nCiBOaWNob2xhcyBTcGllcwpAQCAtMTAwOSwxMCArMTExNCwxMyBAQAogVGFnZSBTdGFiZWxsLUt1bG8KIFF1ZW50aW4gU3RhZmZvcmQtRnJhc2VyCiBGcmFuayBTdGFqYW5vCitKb2VsIFN0YW5sZXkKIEFudGhvbnkgU3RhcmtzCiBPbGl2ZXIgU3RlZWxlCiBHcmVnIFN0ZWluCitCYXJ1Y2ggU3RlcmluCiBDaHJpcyBTdGVybgorQWxleCBTdGV3YXJ0CiBWaWN0b3IgU3Rpbm5lcgogUmljaGFyZCBTdG9ha2xleQogUGV0ZXIgU3RvZWhyCkBAIC0xMDI4LDYgKzExMzYsNyBAQAogTmF0aGFuIFN1bGxpdmFuCiBNYXJrIFN1bW1lcmZpZWxkCiBSZXViZW4gU3VtbmVyCitNYXJlayDFoHVwcGEKIEhpc2FvIFN1enVraQogS2FsbGUgU3ZlbnNzb24KIEFuZHJldyBTdmV0bG92CkBAIC0xMDQxLDggKzExNTAsOCBAQAogV2lsbGlhbSBUYW5rc2xleQogQ2hyaXN0aWFuIFRhbnplcgogU3RldmVuIFRhc2NodWsKLU1vbnR5IFRheWxvcgogQW15IFRheWxvcgorTW9udHkgVGF5bG9yCiBBbmF0b2x5IFRlY2h0b25pawogTWlraGFpbCBUZXJla2hvdgogUmljaGFyZCBNLiBUZXcKQEAgLTEwNjAsMTMgKzExNjksMTcgQEAKIENocmlzdGlhbiBUaXNtZXIKIEppbSBUaXR0c2xlcgogRnJhbmsgSi4gVG9iaW4KLVIgTGluZHNheSBUb2RkCiBCZW5uZXR0IFRvZGQKK1IgTGluZHNheSBUb2RkCitFdWdlbmUgVG9kZXIKIEVyaWsgVG9sbGVydWQKIE1hdGlhcyBUb3JjaGluc2t5CiBTYW5kcm8gVG9zaQogUmljaGFyZCBUb3duc2VuZAorRGF2aWQgVG93bnNoZW5kCiBMYXVyZW5jZSBUcmF0dAorQWxiZXJ0byBUcmV2aW5vCitNYXR0aGlhcyBUcm9mZmFlcwogSm9obiBUcm9tcAogSmFzb24gVHJvd2JyaWRnZQogQnJlbnQgVHViYnMKQEAgLTExMDIsNiArMTIxNSw3IEBACiBLYW5uYW4gVmlqYXlhbgogS3VydCBWaWxlCiBOb3JtYW4gVmluZQorUGF1bGkgVmlydGFuZW4KIEZyYW5rIFZpc3NlcgogSm9oYW5uZXMgVm9nZWwKIE1hcnRpam4gVnJpZXMKQEAgLTExNDAsMTAgKzEyNTQsMTAgQEAKIEJyeWNlICJab29rbyIgV2lsY294LU8nSGVhcm4KIFRpbW90aHkgV2lsZAogSmFrdWIgV2lsaworR2VyYWxkIFMuIFdpbGxpYW1zCiBKYXNvbiBXaWxsaWFtcwogSm9obiBXaWxsaWFtcwogU3VlIFdpbGxpYW1zCi1HZXJhbGQgUy4gV2lsbGlhbXMKIFN0ZXZlbiBXaWxsaXMKIEZyYW5rIFdpbGxpc29uCiBHcmVnIFYuIFdpbHNvbgpAQCAtMTE2NSw4ICsxMjc5LDggQEAKIFJpY2hhcmQgV29sZmYKIEFkYW0gV29vZGJlY2sKIFN0ZXZlbiBXb3JrCi1EYXJyZW4gV29ycmFsbAogR29yZG9uIFdvcmxleQorRGFycmVuIFdvcnJhbGwKIFRob21hcyBXb3V0ZXJzCiBIZWlrbyBXdW5kcmFtCiBEb3VnIFd5YXR0CkBAIC0xMTc1LDYgKzEyODksNyBAQAogSGlyb2thenUgWWFtYW1vdG8KIEthLVBpbmcgWWVlCiBKYXNvbiBZZW8KK0V1bmdKdW4gWWkKIEJvYiBZb2Rsb3dza2kKIERhbm55IFlvbwogUm9yeSBZb3JrZQpkaWZmIC0tZ2l0IGEvTWlzYy9ISVNUT1JZIGIvTWlzYy9ISVNUT1JZCmluZGV4IGE3ZmJhMmIuLjgzMjdkY2EgMTAwNjQ0Ci0tLSBhL01pc2MvSElTVE9SWQorKysgYi9NaXNjL0hJU1RPUlkKQEAgLTEwLDYgKzEwLDU0MDMgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwLUZlYi0yMDExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTEyNDk6IEZpeCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzaW5nIHRoZSBsaW1pdGVkIEFQSS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzExMjIyOiBGaXggbm9uLWZyYW1ld29yayBzaGFyZWQgbGlicmFyeSBidWlsZCBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjMTExODQ6IEZpeCBsYXJnZS1maWxlIHN1cHBvcnQgb24gQUlYLgorCistIElzc3VlICM5NDEzNDY6IEZpeCBicm9rZW4gc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gQUlYLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNzA5OiBBZGQgdXBkYXRlZCBBSVggbm90ZXMgaW4gTWlzYy9SRUFETUUuQUlYLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDEzLUZlYi0yMDExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTExMzQ6IEFkZCBtaXNzaW5nIGZpZWxkcyB0byB0eXBlc2xvdHMuaC4KKworLSBJc3N1ZSAjMTExMzU6IFJlbW92ZSByZWR1bmRhbnQgZG9jIGZpZWxkIGZyb20gUHlUeXBlX1NwZWMuCisKKy0gSXNzdWUgIzExMDY3OiBBZGQgUHlUeXBlX0dldEZsYWdzLCB0byBzdXBwb3J0IFB5VW5pY29kZV9DaGVjayBpbiB0aGUgbGltaXRlZAorICBBQkkuCisKKy0gSXNzdWUgIzExMTE4OiBGaXggYm9ndXMgZXhwb3J0IG9mIE5vbmUgaW4gcHl0aG9uMy5kbGwuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTExMTY6IGFueSBlcnJvciBkdXJpbmcgYWRkaXRpb24gb2YgYSBtZXNzYWdlIHRvIGEgbWFpbGJveCBub3cgY2F1c2VzIGEKKyAgcm9sbGJhY2ssIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgbWFpbGJveCBwYXJ0aWFsbHkgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzExMTMyOiBGaXggcGFzc2luZyBvZiAib3B0aW1pemUiIHBhcmFtZXRlciB3aGVuIHJlY3Vyc2luZyBpbgorICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKCkuCisKKy0gSXNzdWUgIzExMTEwOiBGaXggYSBwb3RlbnRpYWwgZGVjcmVmIG9mIGEgTlVMTCBpbiBzcWxpdGUzLgorCistIElzc3VlICM4Mjc1OiBGaXggcGFzc2luZyBvZiBjYWxsYmFjayBhcmd1bWVudHMgd2l0aCBjdHlwZXMgdW5kZXIgV2luNjQuICBQYXRjaAorICBieSBTdGFuIE1paGFpLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTEwNzk6IFRoZSAvQXBwbGljYXRpb25zL1B5dGhvbiB4LnggZm9sZGVyIGNyZWF0ZWQgYnkgdGhlIE1hYyBPUyBYCisgIGluc3RhbGxlcnMgbm93IGluY2x1ZGVzIGEgbGluayB0byB0aGUgaW5zdGFsbGVkIGRvY3VtZW50YXRpb24gYW5kIG5vIGxvbmdlcgorICBpbmNsdWRlcyBhbiBFeHRyYXMgZGlyZWN0b3J5LiAgVGhlIFRvb2xzIGRpcmVjdG9yeSBpcyBub3cgaW5zdGFsbGVkIGluIHRoZQorICBmcmFtZXdvcmsgdW5kZXIgc2hhcmUvZG9jLgorCistIElzc3VlICMxMTEyMTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtc2hhcmVkLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTA5NzE6IHRlc3RfemlwaW1wb3J0X3N1cHBvcnQgaXMgb25jZSBhZ2FpbiBjb21wYXRpYmxlIHdpdGggdGhlIHJlZmxlYWsKKyAgaHVudGVyIGZlYXR1cmUgb2YgdGVzdC5yZWdydGVzdC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAzMC1KYW4tMjAxMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNDUxOiBtZW1vcnl2aWV3IG9iamVjdHMgY291bGQgYWxsb3cgdG8gbXV0YXRlIGEgcmVhZGFibGUgYnVmZmVyLgorICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzkxMjQ6IG1haWxib3ggbm93IGFjY2VwdHMgYmluYXJ5IGlucHV0IGFuZCByZWFkcyBhbmQgd3JpdGVzIG1haWxib3gKKyAgZmlsZXMgaW4gYmluYXJ5IG1vZGUsIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlJ3MgYmluYXJ5IHN1cHBvcnQgdG8gcGFyc2UKKyAgYXJiaXRyYXJ5IGVtYWlsIG1lc3NhZ2VzLiAgU3RyaW5nSU8gYW5kIHRleHQgZmlsZSBpbnB1dCBpcyBkZXByZWNhdGVkLAorICBhbmQgc3RyaW5nIGlucHV0IGZhaWxzIGVhcmx5IGlmIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFyZSB1c2VkLCB3aGVyZQorICBwcmV2aW91c2x5IGl0IHdvdWxkIGZhaWwgd2hlbiB0aGUgZW1haWwgd2FzIHByb2Nlc3NlZCBpbiBhIGxhdGVyIHN0ZXAuCisKKy0gSXNzdWUgIzEwODQ1OiBNaXRpZ2F0ZSB0aGUgaW5jb21wYXRpYmlsaXR5IGJldHdlZW4gdGhlIG11bHRpcHJvY2Vzc2luZworICBtb2R1bGUgb24gV2luZG93cyBhbmQgdGhlIHVzZSBvZiBwYWNrYWdlLCB6aXBmaWxlIG9yIGRpcmVjdG9yeSBleGVjdXRpb24KKyAgYnkgc3BlY2lhbCBjYXNpbmcgbWFpbiBtb2R1bGVzIHRoYXQgYWN0dWFsbHkgKmFyZSogY2FsbGVkIF9fbWFpbl9fLnB5LgorCistIElzc3VlICMxMTA0NTogUHJvdGVjdCBsb2dnaW5nIGNhbGwgYWdhaW5zdCBOb25lIGFyZ3VtZW50LgorCistIElzc3VlICMxMTA1MjogQ29ycmVjdCBJRExFIG1lbnUgYWNjZWxlcmF0b3JzIG9uIE1hYyBPUyBYIGZvciBTYXZlCisgIGNvbW1hbmRzLgorCistIElzc3VlICMxMTA1MzogRml4IElETEUgIlN5bnRheCBFcnJvciIgd2luZG93cyB0byBiZWhhdmUgYXMgaW4gMi54LAorICBwcmV2ZW50aW5nIGEgY29uZnVzaW5nIGh1bmcgYXBwZWFyYW5jZSBvbiBPUyBYIHdpdGggdGhlIHdpbmRvd3MKKyAgb2JzY3VyZWQuCisKKy0gSXNzdWUgIzEwOTQwOiBXb3JrYXJvdW5kIGFuIElETEUgaGFuZyBvbiBNYWMgT1MgWCAxMC42IHdoZW4gdXNpbmcgdGhlCisgIG1lbnUgYWNjZWxlcmF0b3JzIGZvciBPcGVuIE1vZHVsZSwgR28gdG8gTGluZSwgYW5kIE5ldyBJbmRlbnQgV2lkdGguCisgIFRoZSBhY2NlbGVyYXRvcnMgc3RpbGwgd29yayBidXQgbm8gbG9uZ2VyIGFwcGVhciBpbiB0aGUgbWVudSBpdGVtcy4KKworLSBJc3N1ZSAjMTA5ODk6IEZpeCBhIGNyYXNoIG9uIFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKE5vbmUsIFRydWUpLgorCistIElzc3VlICMxMTAyMDogQ29tbWFuZC1saW5lIHB5Y2xiciB3YXMgYnJva2VuIGJlY2F1c2Ugb2YgbWlzc2luZyAyLXRvLTMKKyAgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjMTEwMTk6IEZpeGVkIEJ5dGVzR2VuZXJhdG9yIHNvIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgYSBNZXNzYWdlCisgIHdpdGggYSBOb25lIGJvZHkuCisKKy0gSXNzdWUgIzExMDE0OiBNYWtlICdmaWx0ZXInIGFyZ3VtZW50IGluIHRhcmZpbGUuVGFyZmlsZS5hZGQoKSBpbnRvIGEKKyAga2V5d29yZC1vbmx5IGFyZ3VtZW50LiAgVGhlIHByZWNlZGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50IHdhcyBkZXByZWNhdGVkLAorICBzbyBpdCBtYWRlIG5vIHNlbnNlIHRvIGFkZCBmaWx0ZXIgYXMgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LgorCistIElzc3VlICMxMTAwNDogUmVwYWlyZWQgZWRnZSBjYXNlIGluIGRlcXVlLmNvdW50KCkuCisKKy0gSXNzdWUgIzEwOTc0OiBJRExFIG5vIGxvbmdlciBjcmFzaGVzIGlmIGl0cyByZWNlbnQgZmlsZXMgbGlzdCBpbmNsdWRlcyBmaWxlcworICB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZWlyIHBhdGggbmFtZXMuCisKKy0gSGF2ZSBoYXNobGliLmFsZ29yaXRobXNfYXZhaWxhYmxlIGFuZCBoYXNobGliLmFsZ29yaXRobXNfZ3VhcmFudGVlZCBib3RoCisgIHJldHVybiBzZXRzIGluc3RlYWQgb2Ygb25lIHJldHVybmluZyBhIHR1cGxlIGFuZCB0aGUgb3RoZXIgYSBmcm96ZW5zZXQuCisKKy0gSXNzdWUgIzEwOTg3OiBGaXggdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYW5kbGluZyBpbiB0aGUgX3BpY2tsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEwOTgzOiBGaXggc2V2ZXJhbCBidWdzIG1ha2luZyB0dW5uZWwgcmVxdWVzdHMgaW4gaHR0cC5jbGllbnQuCisKKy0gSXNzdWUgIzEwOTU1OiB6aXBpbXBvcnQgdXNlcyBBU0NJSSBlbmNvZGluZyBpbnN0ZWFkIG9mIGNwNDM3IHRvIGRlY29kZQorICBmaWxlbmFtZXMsIGF0IGJvb3RzdHJhcCwgaWYgdGhlIGNvZGVjIHJlZ2lzdHJ5IGlzIG5vdCByZWFkeSB5ZXQuIEl0IGlzIHN0aWxsCisgIHBvc3NpYmxlIHRvIGhhdmUgbm9uLUFTQ0lJIGZpbGVuYW1lcyB1c2luZyB0aGUgVW5pY29kZSBmbGFnIChVVEYtOCBlbmNvZGluZykKKyAgZm9yIGFsbCBmaWxlIGVudHJpZXMgaW4gdGhlIFpJUCBmaWxlLgorCistIElzc3VlICMxMDk0OTogSW1wcm92ZWQgcm9idXN0bmVzcyBvZiByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgorCistIElzc3VlICMxMDk1NTogRml4IGEgcG90ZW50aWFsIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIG1tYXAoKSBhIGZpbGUgcGFzdCBpdHMKKyAgbGVuZ3RoLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjMTA4OTg6IEFsbG93IGNvbXBpbGluZyB0aGUgcG9zaXggbW9kdWxlIHdoZW4gdGhlIEMgbGlicmFyeSBkZWZpbmVzCisgIGEgc3ltYm9sIG5hbWVkIEZTVEFULgorCistIElzc3VlICMxMDk4MDogdGhlIEhUVFAgc2VydmVyIG5vdyBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpCisgIGVuY29kaW5nLiAgVGhpcyBpcyB0aGUgcHJlZmVycmVkIGVuY29kaW5nIG9mIFBFUCAzMzMzIGFuZCB0aGUgYmFzZSBlbmNvZGluZworICBvZiBIVFRQIDEuMS4KKworLSBUbyBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIEhUVFAgc2VydmVyLCB0aGUgSFRUUCBjbGllbnQgbGlicmFyeSBub3cgYWxzbworICBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpIGVuY29kaW5nLiAgSXQgd2FzIGFscmVhZHkgZG9pbmcKKyAgdGhhdCBmb3IgaW5jb21pbmcgaGVhZGVycyB3aGljaCBtYWtlcyB0aGlzIGJlaGF2aW91ciBub3cgY29uc2lzdGVudCBpbgorICBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZyBkaXJlY3Rpb24uCisKKy0gSXNzdWUgIzk1MDk6IGFyZ3BhcnNlIG5vdyBwcm9wZXJseSBoYW5kbGVzIElPRXJyb3JzIHJhaXNlZCBieQorICBhcmdwYXJzZS5GaWxlVHlwZS4KKworLSBJc3N1ZSAjMTA5NjE6IFRoZSBuZXcgcHlkb2Mgc2VydmVyIG5vdyBiZXR0ZXIgaGFuZGxlcyBleGNlcHRpb25zIHJhaXNlZAorICBkdXJpbmcgcmVxdWVzdCBoYW5kbGluZy4KKworLSBJc3N1ZSAjMTA2ODA6IEZpeCBtdXR1YWxseSBleGNsdXNpdmUgYXJndW1lbnRzIGZvciBhcmd1bWVudCBncm91cHMgaW4KKyAgYXJncGFyc2UuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMTA1NDogQWxsb3cgTWFjIE9TIFggaW5zdGFsbGVyIGJ1aWxkcyB0byBhZ2FpbiB3b3JrIG9uIDEwLjUgd2l0aAorICB0aGUgc3lzdGVtLXByb3ZpZGVkIFB5dGhvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTYtSmFuLTIwMTEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMDg4OTogcmFuZ2UgaW5kZXhpbmcgYW5kIHNsaWNpbmcgbm93IHdvcmtzIGNvcnJlY3RseSBvbiByYW5nZXMgd2l0aAorICBhIGxlbmd0aCB0aGF0IGV4Y2VlZHMgc3lzLm1heHNpemUuCisKKy0gSXNzdWUgIzEwODkyOiBEb24ndCBzZWdmYXVsdCB3aGVuIHRyeWluZyB0byBkZWxldGUgX19hYnN0cmFjdG1ldGhvZHNfXyBmcm9tIGEKKyAgY2xhc3MuCisKKy0gSXNzdWUgIzgwMjA6IEF2b2lkIGEgY3Jhc2ggd2hlcmUgdGhlIHNtYWxsIG9iamVjdHMgYWxsb2NhdG9yIHdvdWxkIHJlYWQKKyAgbm9uLVB5dGhvbiBtYW5hZ2VkIG1lbW9yeSB3aGlsZSBpdCBpcyBiZWluZyBtb2RpZmllZCBieSBhbm90aGVyIHRocmVhZC4gIFBhdGNoCisgIGJ5IE1hdHQgQmFuZHkuCisKKy0gSXNzdWUgIzEwODQxOiBPbiBXaW5kb3dzLCBzZXQgdGhlIGJpbmFyeSBtb2RlIG9uIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciBhbmQgYWxsCisgIGlvLkZpbGVJTyBvYmplY3RzICh0byBub3QgdHJhbnNsYXRlIG5ld2xpbmVzLCBcclxuIDw9PiBcbikuICBUaGUgUHl0aG9uIHBhcnNlcgorICB0cmFuc2xhdGVzIG5ld2xpbmVzIChcclxuID0+IFxuKS4KKworLSBSZW1vdmUgYnVmZmVyIEFQSSBmcm9tIHN0YWJsZSBBQkkgZm9yIG5vdywgc2VlICMxMDE4MS4KKworLSBJc3N1ZSAjODY1MTogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGFuIE92ZXJmbG93RXJyb3IgaWYgdGhlIGZpbGUKKyAgZG9lc24ndCBoYXZlIFBZX1NTSVpFX1RfQ0xFQU4gZGVmaW5lIGFuZCB0aGUgc2l6ZSBkb2Vzbid0IGZpdCBpbiBhbiBpbnQKKyAgKGxlbmd0aCBiaWdnZXIgdGhhbiAyXjMxLTEgYnl0ZXMpLgorCistIElzc3VlICM5MDE1LCAjOTYxMTogRmlsZUlPLnJlYWRpbnRvKCksIEZpbGVJTy53cml0ZSgpLCBvcy53cml0ZSgpIGFuZAorICBzdGRwcmludGVyLndyaXRlKCkgY2xhbXAgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzgyNzg6IE9uIFdpbmRvd3MgYW5kIHdpdGggYSBOVEZTIGZpbGVzeXN0ZW0sIG9zLnN0YXQoKSBhbmQgb3MudXRpbWUoKQorICBjYW4gbm93IGhhbmRsZSBkYXRlcyBhZnRlciAyMDM4LgorCistIElzc3VlICMxMDc4MDogUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBhbmQKKyAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBkZWNvZGUgdGhlIGZpbGVuYW1lIGZyb20gdGhlCisgIGZpbGVzeXN0ZW0gZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKworLSBJc3N1ZSAjMTA3Nzk6IFB5RXJyX1dhcm5FeHBsaWNpdCgpIGRlY29kZXMgdGhlIGZpbGVuYW1lIGZyb20gdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKworLSBBZGQgc3lzLmZsYWdzIGF0dHJpYnV0ZSBmb3IgdGhlIG5ldyAtcSBjb21tYW5kLWxpbmUgb3B0aW9uLgorCistIElzc3VlICMxMTUwNjogVHJ5aW5nIHRvIGFzc2lnbiB0byBhIGJ5dGVzIGxpdGVyYWwgc2hvdWxkIHJlc3VsdCBpbiBhCisgIFN5bnRheEVycm9yLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEwOTE2OiBtbWFwIHNob3VsZCBub3Qgc2VnZmF1bHQgd2hlbiBhIGZpbGUgaXMgbWFwcGVkIHVzaW5nIDAgYXMgbGVuZ3RoCisgIGFuZCBhIG5vbi16ZXJvIG9mZnNldCwgYW5kIGFuIGF0dGVtcHQgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgZmlsZSBpcyBtYWRlCisgIChJbmRleEVycm9yIGlzIHJhaXNlZCBpbnN0ZWFkKS4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICMxMDE1NCwgIzEwMDkwOiBjaGFuZ2UgdGhlIG5vcm1hbGl6YXRpb24gb2YgVVRGLTggdG8gIlVURi04IiBpbnN0ZWFkCisgIG9mICJVVEY4IiBpbiB0aGUgbG9jYWxlIG1vZHVsZSBhcyB0aGUgbGF0dGVyIGlzIG5vdCBzdXBwb3J0ZWQgTWFjT1NYIGFuZCBPcGVuQlNELgorCistIElzc3VlICMxMDkwNzogV2FybiBPUyBYIDEwLjYgSURMRSB1c2VycyB0byB1c2UgQWN0aXZlU3RhdGUgVGNsL1RrIDguNSwgcmF0aGVyCisgIHRoYW4gdGhlIGN1cnJlbnRseSBwcm9ibGVtYXRpYyBBcHBsZS1zdXBwbGllZCBvbmUsIHdoZW4gcnVubmluZyB3aXRoIHRoZQorICA2NC0vMzItYml0IGluc3RhbGxlciB2YXJpYW50LgorCistIElzc3VlICM0OTUzOiBjZ2kuRmllbGRTdG9yYWdlIGFuZCBjZ2kucGFyc2UoKSBwYXJzZSB0aGUgcmVxdWVzdCBhcyBieXRlcywgbm90CisgIGFzIHVuaWNvZGUsIGFuZCBhY2NlcHQgYmluYXJ5IGZpbGVzLiBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhdHRyaWJ1dGVzIHRvCisgIGNnaS5GaWVsZFN0b3JhZ2UuIFBhdGNoIHdyaXR0ZW4gYnkgUGllcnJlIFF1ZW50ZWwgKHdpdGggbWFueSBpbnB1dHMgYnkgR2xlbm4KKyAgTGluZGVybWFuKS4KKworLSBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhcmd1bWVudHMgdG8gdXJsbGliLnBhcnNlX3FzKCkgYW5kIHVybGxpYi5wYXJzZV9xc2woKS4KKworLSBJc3N1ZSAjMTA4OTk6IE5vIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuICBSZW1vdmVkCisgIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgZnJvbSBfcHlpby5weS4KKworLSBJc3N1ZSAjMTA4NzU6IFVwZGF0ZSBSZWd1bGFyIEV4cHJlc3Npb24gSE9XVE87IHBhdGNoIGJ5ICdTaWxlbnRHaG9zdCcuCisKKy0gSXNzdWUgIzEwODcyOiBUaGUgcmVwcigpIG9mIFRleHRJT1dyYXBwZXIgb2JqZWN0cyBub3cgaW5jbHVkZXMgdGhlIG1vZGUKKyAgaWYgYXZhaWxhYmxlLgorCistIElzc3VlICMxMDg2OTogRml4ZWQgYnVnIHdoZXJlIGFzdC5pbmNyZW1lbnRfbGluZW5vIG1vZGlmaWVkIHRoZSByb290IG5vZGUKKyAgdHdpY2UuCisKKy0gSXNzdWUgIzU4NzE6IGVtYWlsLmhlYWRlci5IZWFkZXIuZW5jb2RlIG5vdyByYWlzZXMgYW4gZXJyb3IgaWYgYW55CisgIGNvbnRpbnVhdGlvbiBsaW5lIGluIHRoZSBmb3JtYXR0ZWQgdmFsdWUgaGFzIG5vIGxlYWRpbmcgd2hpdGUgc3BhY2UgYW5kIGxvb2tzCisgIGxpa2UgYSBoZWFkZXIuICBTaW5jZSBHZW5lcmF0b3IgdXNlcyBIZWFkZXIgdG8gZm9ybWF0IGFsbCBoZWFkZXJzLCB0aGlzIGNoZWNrCisgIGlzIG1hZGUgZm9yIGFsbCBoZWFkZXJzIGluIGFueSBzZXJpYWxpemVkIG1lc3NhZ2UgYXQgc2VyaWFsaXphdGlvbiB0aW1lLiAgVGhpcworICBwcm92aWRlcyBwcm90ZWN0aW9uIGFnYWluc3QgaGVhZGVyIGluamVjdGlvbiBhdHRhY2tzLgorCistIElzc3VlICMxMDg1OTogTWFrZSBgYGNvbnRleHRsaWIuR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYCBvZmZpY2lhbGx5CisgIHByaXZhdGUgYnkgcmVuYW1pbmcgaXQgdG8gYGBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYC4KKworLSBJc3N1ZSAjMTAwNDI6IEZpeGVkIHRoZSB0b3RhbF9vcmRlcmluZyBkZWNvcmF0b3IgdG8gaGFuZGxlIGNyb3NzLXR5cGUKKyAgY29tcGFyaXNvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi4KKworLSBJc3N1ZSAjMTA2ODY6IHRoZSBlbWFpbCBwYWNrYWdlIG5vdyA6cmZjOmAyMDQ3YFwgLWVuY29kZXMgaGVhZGVycyB3aXRoCisgIG5vbi1BU0NJSSBieXRlcyAocGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIpIHdoZW4gZG9pbmcgY29udmVyc2lvbiB0byA3Yml0LWNsZWFuCisgIHByZXNlbnRhdGlvbiwgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbSB3aXRoID9zLgorCistIGVtYWlsLmhlYWRlci5IZWFkZXIgd2FzIGluY29ycmVjdGx5IGVuY29kaW5nIGZvbGRpbmcgd2hpdGVzcGFjZSB3aGVuCisgIHJmYzIwNDctZW5jb2RpbmcgaGVhZGVyIHZhbHVlcyB3aXRoIGVtYmVkZGVkIG5ld2xpbmVzLCBsZWF2aW5nIHRoZW0gd2l0aG91dAorICBmb2xkaW5nIHdoaXRlc3BhY2UuICBJdCBub3cgdXNlcyB0aGUgY29udGludWF0aW9uX3dzLCBhcyBpdCBkb2VzIGZvcgorICBjb250aW51YXRpb24gbGluZXMgdGhhdCBpdCBjcmVhdGVzIGl0c2VsZi4KKworLSBJc3N1ZSAjMTc3NzQxMiwgIzEwODI3OiBDaGFuZ2VkIHRoZSBydWxlcyBmb3IgMi1kaWdpdCB5ZWFycy4gVGhlCisgIHRpbWUuYXNjdGltZSgpLCB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuc3RyZnRpbWUoKSBmdW5jdGlvbnMgd2lsbCBub3cgZm9ybWF0CisgIGFueSB5ZWFyIHdoZW4gYGB0aW1lLmFjY2VwdDJkeWVhcmBgIGlzIEZhbHNlIGFuZCB3aWxsIGFjY2VwdCB5ZWFycyA+PSAxMDAwCisgIG90aGVyd2lzZS4gYGB0aW1lLm1rdGltZWBgIGFuZCBgYHRpbWUuc3RyZnRpbWVgYCBub3cgYWNjZXB0IGZ1bGwgcmFuZ2UKKyAgc3VwcG9ydGVkIGJ5IHRoZSBPUy4gV2l0aCBWaXN1YWwgU3R1ZGlvIG9yIG9uIFNvbGFyaXMsIHRoZSB5ZWFyIGlzIGxpbWl0ZWQgdG8KKyAgdGhlIHJhbmdlIFsxOyA5OTk5XS4gQ29udmVyc2lvbiBvZiAyLWRpZ2l0IHllYXJzIHRvIDQtZGlnaXQgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjNzg1ODogUmFpc2UgYW4gZXJyb3IgcHJvcGVybHkgd2hlbiBvcy51dGltZSgpIGZhaWxzIHVuZGVyIFdpbmRvd3MKKyAgb24gYW4gZXhpc3RpbmcgZmlsZS4KKworLSBJc3N1ZSAjMzgzOTogd3NnaXJlZiBzaG91bGQgbm90IG92ZXJyaWRlIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHNldCBieQorICB0aGUgYXBwbGljYXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IENsb3ZpcyBGYWJyaWNpby4KKworLSBJc3N1ZSAjMTA0OTI6IGJkYi5CZGIucnVuKCkgb25seSB0cmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSwgbm90IHRoZQorICBjb21waWxhdGlvbiAoaWYgdGhlIGlucHV0IGlzIGEgc3RyaW5nKS4KKworLSBJc3N1ZSAjNzk5NTogV2hlbiBjYWxsaW5nIGFjY2VwdCgpIG9uIGEgc29ja2V0IHdpdGggYSB0aW1lb3V0LCB0aGUgcmV0dXJuZWQKKyAgc29ja2V0IGlzIG5vdyBhbHdheXMgYmxvY2tpbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCisKKy0gSXNzdWUgIzEwNzU2OiBhdGV4aXQgbm9ybWFsaXplcyB0aGUgZXhjZXB0aW9uIGJlZm9yZSBkaXNwbGF5aW5nIGl0LiBQYXRjaCBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzEwNzkwOiBlbWFpbC5oZWFkZXIuSGVhZGVyLmFwcGVuZCdzIGNoYXJzZXQgbG9naWMgbm93IHdvcmtzIGNvcnJlY3RseQorICBmb3IgY2hhcnNldHMgd2hvc2Ugb3V0cHV0IGNvZGVjIGlzIGRpZmZlcmVudCBmcm9tIGl0cyBpbnB1dCBjb2RlYy4KKworLSBJc3N1ZSAjMTA4MTk6IFNvY2tldElPLm5hbWUgcHJvcGVydHkgcmV0dXJucyAtMSB3aGVuIGl0cyBjbG9zZWQsIGluc3RlYWQgb2YKKyAgcmFpc2luZyBhIFZhbHVlRXJyb3IsIHRvIGZpeCByZXByKCkuCisKKy0gSXNzdWUgIzg2NTA6IHpsaWIuY29tcHJlc3MoKSBhbmQgemxpYi5kZWNvbXByZXNzKCkgcmFpc2UgYW4gT3ZlcmZsb3dFcnJvciBpZgorICB0aGUgaW5wdXQgYnVmZmVyIGxlbmd0aCBkb2Vzbid0IGZpdCBpbnRvIGFuIHVuc2lnbmVkIGludCAobGVuZ3RoIGJpZ2dlciB0aGFuCisgIDJeMzItMSBieXRlcykuCisKKy0gSXNzdWUgIzY2NDM6IFJlaW5pdGlhbGl6ZSBsb2NrcyBoZWxkIHdpdGhpbiB0aGUgdGhyZWFkaW5nIG1vZHVsZSBhZnRlciBmb3JrIHRvCisgIGF2b2lkIGEgcG90ZW50aWFsIHJhcmUgZGVhZGxvY2sgb3IgY3Jhc2ggb24gc29tZSBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzEwODA2LCBpc3N1ZSAjOTkwNTogRml4IHN1YnByb2Nlc3MgcGlwZXMgd2hlbiBzb21lIG9mIHRoZSBzdGFuZGFyZCBmaWxlCisgIGRlc2NyaXB0b3JzICgwLCAxLCAyKSBhcmUgY2xvc2VkIGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcworICBMYWdlcndhbGwuCisKKy0gYHVuaXR0ZXN0LlRlc3RDYXNlYCBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgYSBtZXRob2QgbmFtZTsgZm9yIHNpbXBsZXIKKyAgZXhwbG9yYXRpb24gZnJvbSB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzEwNzk4OiBSZWplY3Qgc3VwcG9ydGluZyBjb25jdXJyZW50LmZ1dHVyZXMgaWYgdGhlIHN5c3RlbSBoYXMgdG9vCisgIGZldyBQT1NJWCBzZW1hcGhvcmVzLgorCistIElzc3VlICMxMDgwNzogUmVtb3ZlIGJhc2U2NCwgYnoyLCBoZXgsIHF1b3ByaSwgcm90MTMsIHV1IGFuZCB6bGliIGNvZGVjcyBmcm9tCisgIHRoZSBjb2RlYyBhbGlhc2VzLiBUaGV5IGFyZSBzdGlsbCBhY2Nlc3NpYmxlIHZpYSBjb2RlY3MubG9va3VwKCkuCisKKy0gSXNzdWUgIzEwODAxOiBJbiB6aXBmaWxlLCBzdXBwb3J0IGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBoZWFkZXIgYW5kIHRoZQorICBmaWxlbmFtZXMuCisKKy0gSXNzdWUgIzYyODU6IElETEUgbm8gbG9uZ2VyIGNyYXNoZXMgb24gbWlzc2luZyBoZWxwIGZpbGU7IHBhdGNoIGJ5IFNjb3R0CisgIERhdmlkIERhbmllbHMuCisKKy0gRml4IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LnNldGRlZmF1bHQoKSBzbyB0aGF0IGl0IHdvcmtzIGluIHN1YmNsYXNzZXMgdGhhdAorICBkZWZpbmUgX19taXNzaW5nX18oKS4KKworLSBJc3N1ZSAjMTA3ODY6IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyIGRlZmF1bHQgc3RyZWFtIG5vIGxvbmdlciBib3VuZCBhdCBpbXBvcnQKKyAgdGltZS4gYHN5cy5zdGRlcnJgIG5vdyBsb29rZWQgdXAgYXQgaW5zdGFudGlhdGlvbiB0aW1lLiAgRml4IGNvbnRyaWJ1dGVkIGJ5CisgIE1hcmsgUm9kZHkuCisKKy0gSXNzdWUgIzEwNzUzOiBDaGFyYWN0ZXJzICc7JywgJz0nIGFuZCAnLCcgaW4gdGhlIFBBVEhfSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICB3b24ndCBiZSBxdW90ZWQgd2hlbiB0aGUgVVJJIGlzIGNvbnN0cnVjdGVkIGJ5IHRoZSB3c2dpcmVmLnV0aWwncyByZXF1ZXN0X3VyaQorICBtZXRob2QuIEFjY29yZGluZyB0byBSRkMgMzk4NiwgdGhlc2UgY2hhcmFjdGVycyBjYW4gYmUgYSBwYXJ0IG9mIHBhcmFtcyBpbgorICBQQVRIIGNvbXBvbmVudCBvZiBVUkkgYW5kIG5lZWQgbm90IGJlIHF1b3RlZC4KKworLSBJc3N1ZSAjMTA3Mzg6IEZpeCB3ZWJicm93c2VyLk9wZXJhLnJhaXNlX29wdHMuCisKKy0gSXNzdWUgIzk4MjQ6IFNpbXBsZUNvb2tpZSBub3cgZW5jb2RlcyAsIGFuZCA7IGluIHZhbHVlcyB0byBjYXRlciB0byBob3cKKyAgYnJvd3NlcnMgYWN0dWFsbHkgcGFyc2UgY29va2llcy4KKworLSBJc3N1ZSAjOTMzMzogb3Muc3ltbGluayBub3cgYXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2YgdXNlciBwcml2aWxlZ2VzLiAgVGhlCisgIGZ1bmN0aW9uIG5vdyByYWlzZXMgT1NFcnJvciBvbiBXaW5kb3dzID49Ni4wIHdoZW4gdGhlIHVzZXIgaXMgdW5hYmxlIHRvIGNyZWF0ZQorICBzeW1ib2xpYyBsaW5rcy4gWFAgYW5kIDIwMDMgc3RpbGwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KKworLSBJc3N1ZSAjMTA3ODM6IHN0cnVjdC5wYWNrKCkgbm8gbG9uZ2VyIGltcGxpY2l0bHkgZW5jb2RlcyB1bmljb2RlIHRvIFVURi04LgorCistIElzc3VlICMxMDczMDogQWRkIFNWRyBtaW1lIHR5cGVzIHRvIG1pbWV0eXBlcyBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNzY4OiBNYWtlIHRoZSBUa2ludGVyIFNjcm9sbGVkVGV4dCB3aWRnZXQgd29yayBhZ2Fpbi4KKworLSBJc3N1ZSAjMTA3Nzc6IEZpeCAiZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIgYnVnIGluCisgIEVsZW1lbnRUcmVlIHJlZ2lzdGVyX25hbWVzcGFjZSgpLgorCistIElzc3VlICMxMDYyNjogdGVzdF9sb2dnaW5nIG5vdyBwcmVzZXJ2ZXMgbG9nZ2VyIGRpc2FibGVkIHN0YXRlcy4KKworLSBJc3N1ZSAjMTA3NzQ6IHRlc3RfbG9nZ2luZyBub3cgcmVtb3ZlcyB0ZW1wIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRlc3RzLgorCistIElzc3VlICM1MjU4LyMxMDY0MjogaWYgc2l0ZS5weSBlbmNvdW50ZXJzIGEgLnB0aCBmaWxlIHRoYXQgZ2VuZXJhdGVzIGFuIGVycm9yLAorICBpdCBub3cgcHJpbnRzIHRoZSBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0cmFjZWJhY2sgdG8gc3RkZXJyIGFuZCBza2lwcworICB0aGUgcmVzdCBvZiB0aGF0IGluZGl2aWR1YWwgZmlsZSwgaW5zdGVhZCBvZiBzdG9wcGluZyBwcm9jZXNzaW5nIGVudGlyZWx5LgorCistIElzc3VlICMxMDc2Mzogc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIGNsb3NlcyBzdGRvdXQgYW5kIHN0ZGVyciBpZiBib3RoIGFyZQorICBwaXBlcyAoYnVnIHNwZWNpZmljIHRvIFdpbmRvd3MpLgorCistIElzc3VlICMxNjkzNTQ2OiBmaXggZW1haWwubWVzc2FnZSBSRkMgMjIzMSBwYXJhbWV0ZXIgZW5jb2RpbmcgdG8gYmUgaW4gYmV0dGVyCisgIGNvbXBsaWFuY2UgKG5vICJzIGFyb3VuZCBlbmNvZGVkIHZhbHVlcykuCisKKy0gSW1wcm92ZWQgdGhlIGRpZmYgbWVzc2FnZSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlJ3MgYXNzZXJ0Q291bnRFcXVhbCgpLgorCistIElzc3VlICMxMTU1MzYyOiBlbWFpbC51dGlscy5wYXJzZWRhdGVfdHogbm93IGhhbmRsZXMgYSBtaXNzaW5nIHNwYWNlIGJlZm9yZQorICB0aGUgJy0nIG9mIGEgdGltZXpvbmUgZmllbGQgYXMgd2VsbCBhcyBiZWZvcmUgYSAnKycuCisKKy0gSXNzdWUgIzQ4NzE6IFRoZSB6aXBmaWxlIG1vZHVsZSBub3cgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlmCisgIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGUgYXJjaGl2ZSBwYXNzd29yZC4KKworLSBJc3N1ZSAjMTA3NTA6IFRoZSBgYHJhd2BgIGF0dHJpYnV0ZSBvZiBidWZmZXJlZCBJTyBvYmplY3RzIGlzIG5vdyByZWFkLW9ubHkuCisKKy0gRGVwcmVjYXRlZCBhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoKSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlLgorCitDLUFQSQorLS0tLS0KKworLSBQeU9iamVjdF9DYWxsTWV0aG9kIG5vdyBwYXNzZXMgYWxvbmcgYW55IHVuZGVybHlpbmcgQXR0cmlidXRlRXJyb3IgZnJvbQorICBQeU9iamVjdF9HZXRBdHRyLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB3aXRoIHNvbWV0aGluZyBsZXNzIGluZm9ybWF0aXZlCisKKy0gSXNzdWUgIzEwOTEzOiBEZXByZWNhdGUgbWlzbGVhZGluZyBmdW5jdGlvbnMgUHlFdmFsX0FjcXVpcmVMb2NrKCkgYW5kCisgIFB5RXZhbF9SZWxlYXNlTG9jaygpLiAgVGhlIHRocmVhZC1zdGF0ZSBhd2FyZSBBUElzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKKy0gSXNzdWUgIzEwMzMzOiBSZW1vdmUgYW5jaWVudCBHQyBBUEksIHdoaWNoIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uCisgIDIuMi4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwODQzOiBVcGRhdGUgdGhpcmQtcGFydHkgbGlicmFyeSB2ZXJzaW9ucyB1c2VkIGluIE9TIFggMzItYml0CisgIGluc3RhbGxlciBidWlsZHM6IGJ6aXAyIDEuMC42LCByZWFkbGluZSA2LjEuMiwgU1FMaXRlIDMuNy40ICh3aXRoIEZUUzMvRlRTNAorICBhbmQgUlRSRUUgZW5hYmxlZCksIGFuZCBuY3Vyc2VzdyA1LjUgKHdpZGUtY2hhciBzdXBwb3J0IGVuYWJsZWQpLgorCistIElzc3VlICMxMDgyMDogRml4IE9TIFggZnJhbWV3b3JrIGluc3RhbGxzIHRvIHN1cHBvcnQgdmVyc2lvbi1zcGVjaWZpYworICBzY3JpcHRzICgjMTA2NzkpLgorCistIElzc3VlICM3NzE2OiBVbmRlciBTb2xhcmlzLCBkb24ndCBhc3N1bWUgZXhpc3RlbmNlIG9mIC91c3IveHBnNC9iaW4vZ3JlcCBpbgorICB0aGUgY29uZmlndXJlIHNjcmlwdCBidXQgdXNlICRHUkVQIGluc3RlYWQuICBQYXRjaCBieSBGYWJpYW4gR3JvZmZlbi4KKworLSBJc3N1ZSAjMTA0NzU6IERvbid0IGhhcmRjb2RlIGNvbXBpbGVycyBmb3IgTERTSEFSRUQvTERDWFhTSEFSRUQgb24gTmV0QlNECisgIGFuZCBEcmFnb25GbHkgQlNELiAgUGF0Y2ggYnkgTmljb2xhcyBKb2x5LgorCistIElzc3VlICMxMDY3OTogVGhlICJpZGxlIiwgInB5ZG9jIiBhbmQgIjJ0bzMiIHNjcmlwdHMgYXJlIG5vdyBpbnN0YWxsZWQgd2l0aAorICBhIHZlcnNpb24tc3BlY2lmaWMgc3VmZml4IG9uICJtYWtlIGFsdGluc3RhbGwiLgorCistIElzc3VlICMxMDY1NTogRml4IHRoZSBidWlsZCBvbiBQb3dlclBDIG9uIExpbnV4IHdpdGggR0NDIHdoZW4gYnVpbGRpbmcgd2l0aAorICB0aW1lc3RhbXAgcHJvZmlsaW5nICgtLXdpdGgtdHNjKTogdGhlIHByZXByb2Nlc3NvciB0ZXN0IGZvciB0aGUgUG93ZXJQQworICBzdXBwb3J0IG5vdyBsb29rcyBmb3IgIl9fcG93ZXJwY19fIiBhcyB3ZWxsIGFzICJfX3BwY19fIjogdGhlIGxhdHRlciBzZWVtcyB0bworICBvbmx5IGJlIHByZXNlbnQgb24gT1MgWDsgdGhlIGZvcm1lciBpcyB0aGUgY29ycmVjdCBvbmUgZm9yIExpbnV4IHdpdGggR0NDLgorCistIElzc3VlICMxMDk5OiBGaXggdGhlIGJ1aWxkIG9uIE1hY09TWCB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggcHlkZWJ1ZworICB1c2luZyBHQ0MgNC4wLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTA4NDM6IEluc3RhbGwgdGhlIFRvb2xzIGRpcmVjdG9yeSBvbiBPUyBYIGluIHRoZSBhcHBsaWNhdGlvbnMgRXh0cmFzCisgICgvQXBwbGljYXRpb25zL1B5dGhvbiAzLm4vRXh0cmFzLykgd2hlcmUgdGhlIERlbW8gZGlyZWN0b3J5IGhhZCBwcmV2aW91cyBiZWVuCisgIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjNzk2MjogVGhlIERlbW8gZGlyZWN0b3J5IGlzIGdvbmUuICBNb3N0IG9mIHRoZSBvbGQgYW5kIHVubWFpbnRhaW5lZAorICBkZW1vcyBoYXZlIGJlZW4gcmVtb3ZlZCwgb3RoZXJzIGludGVncmF0ZWQgaW4gZG9jdW1lbnRhdGlvbiBvciBhIG5ldworICBUb29scy9kZW1vIHN1YmRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTA1MDI6IEFkZGl0aW9uIG9mIHRoZSB1bml0dGVzdGd1aSB0b29sLiBPcmlnaW5hbGx5IGJ5IFN0ZXZlIFB1cmNlbGwuCisgIFVwZGF0ZWQgZm9yIHRlc3QgZGlzY292ZXJ5IGJ5IE1hcmsgUm9kZHkgYW5kIFB5dGhvbiAzIGNvbXBhdGliaWxpdHkgYnkgQnJpYW4KKyAgQ3VydGluLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTE5MTA6IEZpeCB0ZXN0X2hlYXBxIHRvIHNraXAgdGhlIEMgdGVzdHMgd2hlbiBfaGVhcHEgaXMgbWlzc2luZy4KKworLSBGaXggdGVzdF9zdGFydGZpbGUgdG8gd2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUgYmVmb3JlIGZpbmlzaGluZy4KKworLSBJc3N1ZSAjMTA4MjI6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCisgIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIE1ha2UgdGhlIC0tY292ZXJhZ2UgZmxhZyB3b3JrIGZvciB0ZXN0LnJlZ3J0ZXN0LgorCistIElzc3VlICMxNjc3Njk0OiBSZWZhY3RvciBhbmQgaW1wcm92ZSB0ZXN0X3RpbWVvdXQuICBPcmlnaW5hbCBwYXRjaCBieQorICBCasO2cm4gTGluZHF2aXN0LgorCistIElzc3VlICM1NDg1OiBBZGQgdGVzdHMgZm9yIHRoZSBVc2VGb3JlaWduRFREIG1ldGhvZCBvZiBleHBhdCBwYXJzZXIgb2JqZWN0cy4KKyAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZSBhbmQgU2FuZHJvIFRvc2kuCisKKy0gSXNzdWUgIzYyOTM6IEhhdmUgcmVncnRlc3QucHkgZWNobyBiYWNrIHN5cy5mbGFncy4gIFRoaXMgaXMgZG9uZSBieSBkZWZhdWx0IGluCisgIHdob2xlIHJ1bnMgYW5kIGVuYWJsZWQgc2VsZWN0aXZlbHkgdXNpbmcgYGAtLWhlYWRlcmBgIHdoZW4gcnVubmluZyBhbiBleHBsaWNpdAorICBsaXN0IG9mIHRlc3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ29sbGluIFdpbnRlci4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTktRGVjLTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM4ODQ0OiBSZWd1bGFyIGFuZCByZWN1cnNpdmUgbG9jayBhY3F1aXNpdGlvbnMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZAorICBieSBzaWduYWxzIG9uIHBsYXRmb3JtcyB1c2luZyBwdGhyZWFkcy4gIFBhdGNoIGJ5IFJlaWQgS2xlY2tuZXIuCisKKy0gSXNzdWUgIzQyMzY6IFB5TW9kdWxlX0NyZWF0ZTIgbm93IGNoZWNrcyB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkaXJlY3RseQorICByYXRoZXIgdGhhbiB0aGUgUHlfSXNJbml0aWFsaXplZCBmbGFnLCBhdm9pZGluZyBhIEZhdGFsIFB5dGhvbgorICBlcnJvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbiBhbiBpbXBvcnQgaXMgZG9uZSBpbiBfX2RlbF9fLgorCistIElzc3VlICM1NTg3OiBhZGQgYSByZXByIHRvIGRpY3RfcHJveHkgb2JqZWN0cy4gIFBhdGNoIGJ5IERhdmlkIFN0YW5layBhbmQKKyAgRGFuaWVsIFVyYmFuLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzMyNDM6ICBTdXBwb3J0IGl0ZXJhYmxlIGJvZGllcyBpbiBodHRwbGliLiBQYXRjaCBDb250cmlidXRpb25zIGJ5CisgIFh1YW5qaSBMaSBhbmQgQ2hyaXMgQXRMZWUuCisKKy0gSXNzdWUgIzEwNjExOiBTeXN0ZW1FeGl0IGV4Y2VwdGlvbiB3aWxsIG5vIGxvbmdlciBraWxsIGEgdW5pdHRlc3QgcnVuLgorCistIElzc3VlICM5ODU3OiBJdCBpcyBub3cgcG9zc2libGUgdG8gc2tpcCBhIHRlc3QgaW4gYSBzZXRVcCwgdGVhckRvd24gb3IgY2xlYW4KKyAgdXAgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwNTczOiB1c2UgYWN0dWFsL2V4cGVjdGVkIGNvbnNpc3RlbnRseSBpbiB1bml0dGVzdCBtZXRob2RzLgorICBUaGUgb3JkZXIgb2YgdGhlIGFyZ3Mgb2YgYXNzZXJ0Q291bnRFcXVhbCBpcyBhbHNvIGNoYW5nZWQuCisKKy0gSXNzdWUgIzkyODY6IGVtYWlsLnV0aWxzLnBhcnNlYWRkciBubyBsb25nZXIgY29uY2F0ZW5hdGVzIGJsYW5rLXNlcGFyYXRlZAorICB3b3JkcyBpbiB0aGUgbG9jYWwgcGFydCBvZiBlbWFpbCBhZGRyZXNzZXMsIHRoZXJlYnkgcHJlc2VydmluZyB0aGUgaW5wdXQuCisKKy0gSXNzdWUgIzY3OTE6IExpbWl0IGhlYWRlciBsaW5lIGxlbmd0aCAodG8gNjU1MzUgYnl0ZXMpIGluIGh0dHAuY2xpZW50CisgIGFuZCBodHRwLnNlcnZlciwgdG8gYXZvaWQgZGVuaWFsIG9mIHNlcnZpY2VzIGZyb20gdGhlIG90aGVyIHBhcnR5LgorCistIElzc3VlICMxMDQwNDogVXNlIGN0bC1idXR0b24tMSBvbiBPU1ggZm9yIHRoZSBjb250ZXh0IG1lbnUgaW4gSWRsZS4KKworLSBJc3N1ZSAjOTkwNzogRml4IHRhYiBoYW5kbGluZyBvbiBPU1ggd2hlbiB1c2luZyBlZGl0bGluZSBieSBjYWxsaW5nCisgIHJsX2luaXRpYWxpemUgZmlyc3QsIHRoZW4gc2V0dGluZyBvdXIgY3VzdG9tIGRlZmF1bHRzLCB0aGVuIHJlYWRpbmcgLmVkaXRyYy4KKworLSBJc3N1ZSAjNDE4ODogQXZvaWQgY3JlYXRpbmcgZHVtbXkgdGhyZWFkIG9iamVjdHMgd2hlbiBsb2dnaW5nIG9wZXJhdGlvbnMKKyAgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZSAod2l0aCB0aGUgaW50ZXJuYWwgdmVyYm9zZSBmbGFnIGFjdGl2YXRlZCkuCisKKy0gSXNzdWUgIzEwNzExOiBSZW1vdmUgSFRUUCAwLjkgc3VwcG9ydCBmcm9tIGh0dHAuY2xpZW50LiAgVGhlIGBgc3RyaWN0YGAKKyAgcGFyYW1ldGVyIHRvIEhUVFBDb25uZWN0aW9uIGFuZCBmcmllbmRzIGlzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzk3MjE6IEZpeCB0aGUgYmVoYXZpb3Igb2YgdXJsam9pbiB3aGVuIHRoZSByZWxhdGl2ZSB1cmwgc3RhcnRzIHdpdGggYQorICAnOycgY2hhcmFjdGVyLiBQYXRjaCBieSBXZXMgQ2hvdy4KKworLSBJc3N1ZSAjMTA3MTQ6IExpbWl0IGxlbmd0aCBvZiBpbmNvbWluZyByZXF1ZXN0IGluIGh0dHAuc2VydmVyIHRvIDY1NTM2IGJ5dGVzCisgIGZvciBzZWN1cml0eSByZWFzb25zLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjOTU1ODogRml4IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCB3aXRoIFZTIDguMC4KKworLSBJc3N1ZSAjMTA2Njc6IEZhc3QgcGF0aCBmb3IgY29sbGVjdGlvbnMuQ291bnRlcigpLgorCistIElzc3VlICMxMDY5NTogcGFzc2luZyB0aGUgcG9ydCBhcyBhIHN0cmluZyB2YWx1ZSB0byB0ZWxuZXRsaWIgbm8gbG9uZ2VyCisgIGNhdXNlcyBkZWJ1ZyBtb2RlIHRvIGZhaWwuCisKKy0gSXNzdWUgIzEwNzg5MTk6IGFkZF9oZWFkZXIgbm93IGF1dG9tYXRpY2FsbHkgUkZDMjIzMSBlbmNvZGVzIHBhcmFtZXRlcnMKKyAgdGhhdCBjb250YWluIG5vbi1hc2NpaSB2YWx1ZXMuCisKKy0gSXNzdWUgIzEwMTg4IChwYXJ0aWFsIHJlc29sdXRpb24pOiB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkgZW1pdHMKKyAgYSB3YXJuaW5nIG9uIHN5cy5zdGRlcnIgcmF0aGVyIHRoYW4gdGhyb3dpbmcgYSBtaXNsZWFkaW5nIGV4Y2VwdGlvbgorICBpZiBjbGVhbnVwIGZhaWxzIGR1ZSB0byBudWxsaW5nIG91dCBvZiBtb2R1bGVzIGR1cmluZyBzaHV0ZG93bi4KKyAgQWxzbyBhdm9pZHMgYW4gQXR0cmlidXRlRXJyb3Igd2hlbiBta2R0ZW1wIGNhbGwgZmFpbHMgYW5kIGlzc3VlcworICBhIFJlc291cmNlV2FybmluZyBvbiBpbXBsaWNpdCBjbGVhbnVwIHZpYSBfX2RlbF9fLgorCistIElzc3VlICMxMDEwNzogV2FybiBhYm91dCB1bnNhdmVkIGZpbGVzIGluIElETEUgb24gT1NYLgorCistIElzc3VlICM3MjEzOiBzdWJwcm9jZXNzLlBvcGVuJ3MgZGVmYXVsdCBmb3IgY2xvc2VfZmRzIGhhcyBiZWVuIGNoYW5nZWQuCisgIEl0IGlzIG5vdyBUcnVlIGluIG1vc3QgY2FzZXMgb3RoZXIgdGhhbiBvbiBXaW5kb3dzIHdoZW4gaW5wdXQsIG91dHB1dCBvcgorICBlcnJvciBoYW5kbGVzIGFyZSBwcm92aWRlZC4KKworLSBJc3N1ZSAjNjU1OTogc3VicHJvY2Vzcy5Qb3BlbiBoYXMgYSBuZXcgcGFzc19mZHMgcGFyYW1ldGVyIChhY3R1YWxseQorICBhZGRlZCBpbiAzLjJiZXRhMSkgdG8gYWxsb3cgc3BlY2lmeWluZyBhIHNwZWNpZmljIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycworICB0byBrZWVwIG9wZW4gaW4gdGhlIGNoaWxkIHByb2Nlc3MuCisKKy0gSXNzdWUgIzE3MzE3MTc6IEZpeGVkIHRoZSBwcm9ibGVtIHdoZXJlIHN1YnByb2Nlc3Mud2FpdCgpIGNvdWxkIGNhdXNlIGFuCisgIE9TRXJyb3IgZXhjZXB0aW9uIHdoZW4gVGhlIE9TIGhhZCBiZWVuIHRvbGQgdG8gaWdub3JlIFNJR0NMRCBpbiBvdXIgcHJvY2VzcworICBvciBvdGhlcndpc2Ugbm90IHdhaXQgZm9yIGV4aXRpbmcgY2hpbGQgcHJvY2Vzc2VzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjNzc1OTY0OiB0ZXN0X2dycCBub3cgc2tpcHMgWVAvTklTIGVudHJpZXMgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4KKyAgZW5jb3VudGVyaW5nIHRoZW0uCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM2MDc1OiBJRExFIG9uIE1hYyBPUyBYIG5vdyB3b3JrcyB3aXRoIGJvdGggQ2FyYm9uIEFxdWFUayBhbmQKKyAgQ29jb2EgQXF1YVRrLgorCistIElzc3VlICMxMDcxMDogYGBNaXNjL3NldHVpZC1wcm9nLmNgYCBpcyByZW1vdmVkIGZyb20gdGhlIHNvdXJjZSB0cmVlLgorCistIElzc3VlICMxMDcwNjogUmVtb3ZlIG91dGRhdGVkIHNjcmlwdCBydW50ZXN0cy5zaC4gIEVpdGhlciBgYG1ha2UgdGVzdGBgCisgIG9yIGBgcHl0aG9uIC1tIHRlc3RgYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorCitCdWlsZAorLS0tLS0KKworLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBUY2wvVGsgOC41LjkgYW5kIHNxbGl0ZTMgMy43LjQuCisKKy0gSXNzdWUgIzkyMzQ6IGFyZ3BhcnNlIHN1cHBvcnRzIGFsaWFzIG5hbWVzIGZvciBzdWJwYXJzZXJzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBCZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwNS1EZWMtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNjMwOiBSZXR1cm4gZGljdCB2aWV3cyBmcm9tIHRoZSBkaWN0IHByb3h5IGtleXMoKS92YWx1ZXMoKS9pdGVtcygpCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzEwNTk2OiBGaXggZmxvYXQuX19tb2RfXyB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBmbG9hdC5fX2Rpdm1vZF9fCisgIHdpdGggcmVzcGVjdCB0byBzaWduZWQgemVyb3MuICAtNC4wICUgNC4wIHNob3VsZCBiZSAwLjAsIG5vdCAtMC4wLgorCistIElzc3VlICMxNzcyODMzOiBBZGQgdGhlIC1xIGNvbW1hbmQtbGluZSBvcHRpb24gdG8gc3VwcHJlc3MgY29weXJpZ2h0IGFuZAorICB2ZXJzaW9uIG91dHB1dCBpbiBpbnRlcmFjdGl2ZSBtb2RlLgorCistIFByb3ZpZGUgYW4gKm9wdGltaXplKiBwYXJhbWV0ZXIgaW4gdGhlIGJ1aWx0LWluIGNvbXBpbGUoKSBmdW5jdGlvbi4KKworLSBGaXhlZCBzZXZlcmFsIGNvcm5lciBjYXNlIGlzc3VlcyBvbiBXaW5kb3dzIGluIG9zLnN0YXQvb3MubHN0YXQgcmVsYXRlZCB0bworICByZXBhcnNlIHBvaW50cy4KKworLSBQRVAgMzg0IChEZWZpbmluZyBhIFN0YWJsZSBBQkkpIGlzIGltcGxlbWVudGVkLgorCistIElzc3VlICMyNjkwOiBSYW5nZSBvYmplY3RzIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZy4KKworLSBJc3N1ZSAjOTkxNTogU3BlZWQgdXAgc29ydGluZyB3aXRoIGEga2V5LgorCistIElzc3VlICM4Njg1OiBTcGVlZCB1cCBzZXQgZGlmZmVyZW5jZSBgYGEgLSBiYGAgd2hlbiBzb3VyY2Ugc2V0IGBgYWBgIGlzIG11Y2gKKyAgbGFyZ2VyIHRoYW4gb3BlcmFuZCBgYGJgYC4gIFBhdGNoIGJ5IEFuZHJldyBCZW5uZXR0cy4KKworLSBJc3N1ZSAjMTA1MTg6IEJyaW5nIGJhY2sgdGhlIGNhbGxhYmxlKCkgYnVpbHRpbi4KKworLSBJc3N1ZSAjNzA5NDogQWRkZWQgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgKHNwZWNpZmllZCBieSAnIycpIHRvIGBgX19mb3JtYXRfX2BgCisgIG1ldGhvZCBvZiBmbG9hdCwgY29tcGxleCwgYW5kIERlY2ltYWwuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBjb250cm9sIG92ZXIKKyAgd2hlbiBkZWNpbWFsIHBvaW50cyBhcmUgZGlzcGxheWVkLgorCistIElzc3VlICMxMDQ3NDogcmFuZ2UuY291bnQoKSBzaG91bGQgcmV0dXJuIGludGVnZXJzLgorCistIElzc3VlICMxNTc0MjE3OiBpc2luc3RhbmNlIG5vdyBjYXRjaGVzIG9ubHkgQXR0cmlidXRlRXJyb3IsIHJhdGhlciB0aGFuCisgIG1hc2tpbmcgYWxsIGVycm9ycy4KKworTGlicmFyeQorLS0tLS0tLQorCistIGxvZ2dpbmc6IGFkZGVkICJoYW5kbGVyIG9mIGxhc3QgcmVzb3J0Ii4gU2VlIGh0dHA6Ly9iaXQubHkvbGFzdC1yZXNvcnQtaGFuZGxlcgorCistIHRlc3Quc3VwcG9ydDogQWRkZWQgVGVzdEhhbmRsZXIgYW5kIE1hdGNoZXIgY2xhc3NlcyBmb3IgYmV0dGVyIHN1cHBvcnQgb2YKKyAgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgorCistIElzc3VlICM0MzkxOiBVc2UgcHJvcGVyIHBsdXJhbCBmb3JtcyBpbiBhcmdwYXJzZS4KKworLSBJc3N1ZSAjMTA2MDE6IHN5cy5kaXNwbGF5aG9vayB1c2VzICdiYWNrc2xhc2hyZXBsYWNlJyBlcnJvciBoYW5kbGVyIG9uCisgIFVuaWNvZGVFbmNvZGVFcnJvci4KKworLSBBZGQgdGhlICJkaXNwbGF5IiBhbmQgInVuZGlzcGxheSIgcGRiIGNvbW1hbmRzLgorCistIElzc3VlICM3MjQ1OiBBZGQgYSBTSUdJTlQgaGFuZGxlciBpbiBwZGIgdGhhdCBhbGxvd3MgdG8gYnJlYWsgYSBwcm9ncmFtIGFnYWluCisgIGFmdGVyIGEgImNvbnRpbnVlIiBjb21tYW5kLgorCistIEFkZCB0aGUgImludGVyYWN0IiBwZGIgY29tbWFuZC4KKworLSBJc3N1ZSAjNzkwNTogQWN0dWFsbHkgcmVzcGVjdCB0aGUga2V5ZW5jb2RpbmcgcGFyYW1ldGVyIHRvIHNoZWx2ZS5TaGVsZi4KKworLSBJc3N1ZSAjMTU2OTI5MTogU3BlZWQgdXAgYXJyYXkucmVwZWF0KCkuCisKKy0gUHJvdmlkZSBhbiBpbnRlcmZhY2UgdG8gc2V0IHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgb2YgY29tcGlsYXRpb24gaW4KKyAgcHlfY29tcGlsZSwgY29tcGlsZWFsbCBhbmQgemlwZmlsZS5QeVppcEZpbGUuCisKKy0gSXNzdWUgIzc5MDQ6IENoYW5nZXMgdG8gdXJsbGliLnBhcnNlLnVybHNwbGl0IHRvIGhhbmRsZSBzY2hlbWVzIGFzIGRlZmluZWQgYnkKKyAgUkZDMzk4Ni4gQW55dGhpbmcgYmVmb3JlIDovLyBpcyBjb25zaWRlcmVkIGEgc2NoZW1lIGFuZCBpcyBmb2xsb3dlZCBieSBhbgorICBhdXRob3JpdHkgKG9yIG5ldGxvYykgYW5kIGJ5ICcvJyBsZWQgcGF0aCwgd2hpY2ggaXMgb3B0aW9uYWwuCisKKy0gSXNzdWUgIzYwNDU6IGRibS5nbnUgZGF0YWJhc2VzIG5vdyBzdXBwb3J0IGdldCgpIGFuZCBzZXRkZWZhdWx0KCkgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTA2MjA6IGBweXRob24gLW0gdW5pdHRlc3RgIGNhbiBhY2NlcHQgZmlsZSBwYXRocyBpbnN0ZWFkIG9mIG1vZHVsZQorICBuYW1lcyBmb3IgcnVubmluZyBzcGVjaWZpYyB0ZXN0cy4KKworLSBJc3N1ZSAjOTQyNDogRGVwcmVjYXRlIHRoZSBgdW5pdHRlc3QuVGVzdENhc2VgIG1ldGhvZHMgYGFzc2VydEVxdWFsc2AsCisgIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0QWxtb3N0RXF1YWxzYCwgYGFzc2VydE5vdEFsbW9zdEVxdWFsc2AgYW5kIGBhc3NlcnRfYAorICBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIGNvcnJlY3QgbWV0aG9kcyBpbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCisKKy0gSXNzdWUgIzEwMjcyOiBUaGUgc3NsIG1vZHVsZSBub3cgcmFpc2VzIHNvY2tldC50aW1lb3V0IGluc3RlYWQgb2YgYSBnZW5lcmljCisgIFNTTEVycm9yIG9uIHNvY2tldCB0aW1lb3V0cy4KKworLSBJc3N1ZSAjMTA1Mjg6IEFsbG93IHRyYW5zbGF0b3JzIHRvIHJlb3JkZXIgcGxhY2Vob2xkZXJzIGluIGxvY2FsaXphYmxlCisgIG1lc3NhZ2VzIGZyb20gYXJncGFyc2UuCisKKy0gSXNzdWUgIzEwNDk3OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBnZXR0ZXh0IGluIGFyZ3BhcnNlLgorCistIElzc3VlICMxMDQ3ODogUmVlbnRyYW50IGNhbGxzIGluc2lkZSBidWZmZXJlZCBJTyBvYmplY3RzIChmb3IgZXhhbXBsZSBieQorICB3YXkgb2YgYSBzaWduYWwgaGFuZGxlcikgbm93IHJhaXNlIGEgUnVudGltZUVycm9yIGluc3RlYWQgb2YgZnJlZXppbmcgdGhlCisgIGN1cnJlbnQgcHJvY2Vzcy4KKworLSBsb2dnaW5nOiBBZGRlZCBnZXRMb2dSZWNvcmRGYWN0b3J5L3NldExvZ1JlY29yZEZhY3Rvcnkgd2l0aCBkb2NzIGFuZCB0ZXN0cy4KKworLSBJc3N1ZSAjMTA1NDk6IEZpeCBweWRvYyB0cmFjZWJhY2sgd2hlbiB0ZXh0LWRvY3VtZW50aW5nIGNlcnRhaW4gY2xhc3Nlcy4KKworLSBJc3N1ZSAjMjAwMTogTmV3IEhUTUwgc2VydmVyIHdpdGggZW5oYW5jZWQgV2ViIHBhZ2UgZmVhdHVyZXMuICBQYXRjaCBieSBSb24KKyAgQWRhbS4KKworLSBJc3N1ZSAjMTAzNjA6IEluIFdlYWtTZXQsIGRvIG5vdCByYWlzZSBUeXBlRXJyb3JzIHdoZW4gdGVzdGluZyBmb3IgbWVtYmVyc2hpcAorICBvZiBub24td2Vha3JlZmFibGUgb2JqZWN0cy4KKworLSBJc3N1ZSAjOTQwMjg2OiBweWRvYy5IZWxwZXIuaGVscCgpIGlnbm9yZXMgaW5wdXQvb3V0cHV0IGluaXQgcGFyYW1ldGVycy4KKworLSBJc3N1ZSAjMTc0NTAzNTogQWRkIGEgY29tbWFuZCBzaXplIGFuZCBkYXRhIHNpemUgbGltaXQgdG8gc210cGQucHksIHRvIHByZXZlbnQKKyAgRG9TIGF0dGFja3MuICBQYXRjaCBieSBTYXZpbyBTZW5hLgorCistIElzc3VlICM0OTI1OiBBZGQgZmlsZW5hbWUgdG8gZXJyb3IgbWVzc2FnZSB3aGVuIGV4ZWN1dGFibGUgY2FuJ3QgYmUgZm91bmQgaW4KKyAgc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMTAzOTE6IERvbid0IGRlcmVmZXJlbmNlIGludmFsaWQgbWVtb3J5IGluIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBhc3QKKyAgbW9kdWxlLgorCistIElzc3VlICMxMDAyNzogc3Rfbmxpbmsgd2FzIG5vdCBiZWluZyBzZXQgb24gV2luZG93cyBjYWxscyB0byBvcy5zdGF0IG9yCisgIG9zLmxzdGF0LiBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjOTMzMzogRXhwb3NlIG9zLnN5bWxpbmsgb25seSB3aGVuIHRoZSBTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSBpcworICBoZWxkIGJ5IHRoZSB1c2VyJ3MgYWNjb3VudCwgaS5lLiwgd2hlbiB0aGUgZnVuY3Rpb24gY2FuIGFjdHVhbGx5IGJlIHVzZWQuCisKKy0gSXNzdWUgIzg4Nzk6IEFkZCBvcy5saW5rIHN1cHBvcnQgZm9yIFdpbmRvd3MuCisKKy0gSXNzdWUgIzc5MTE6IGBgdW5pdHRlc3QuVGVzdENhc2UubG9uZ01lc3NhZ2VgYCBkZWZhdWx0cyB0byBUcnVlIGZvciBpbXByb3ZlZAorICBmYWlsdXJlIG1lc3NhZ2VzIGJ5IGRlZmF1bHQuIFBhdGNoIGJ5IE1hcmsgUm9kZHkuCisKKy0gSXNzdWUgIzE0ODY3MTM6IEhUTUxQYXJzZXIgbm93IGhhcyBhbiBvcHRpb25hbCB0b2xlcmFudCBtb2RlIHdoZXJlIGl0IHRyaWVzIHRvCisgIGd1ZXNzIGF0IHRoZSBjb3JyZWN0IHBhcnNpbmcgb2YgaW52YWxpZCBodG1sLgorCistIElzc3VlICMxMDU1NDogQWRkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0IHRvIHN1YnByb2Nlc3MuUG9wZW4gb2JqZWN0cy4KKworLSBJc3N1ZSAjODk4OTogZW1haWwudXRpbHMubWFrZV9tc2dpZCBub3cgaGFzIGEgZG9tYWluIHBhcmFtZXRlciB0aGF0IGNhbgorICBvdmVycmlkZSB0aGUgZG9tYWluIG5hbWUgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIG1zZ2lkLgorCistIElzc3VlICM5Mjk5OiBBZGQgZXhpc3Rfb2sgcGFyYW1ldGVyIHRvIG9zLm1ha2VkaXJzIHRvIHN1cHByZXNzIHRoZSAnRmlsZQorICBleGlzdHMnIGV4Y2VwdGlvbiB3aGVuIGEgdGFyZ2V0IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgbW9kZS4gUGF0Y2ggYnkgUmF5IEFsbGVuLgorCistIElzc3VlICM5NTczOiBvcy5mb3JrKCkgbm93IHdvcmtzIGNvcnJlY3RseSB3aGVuIHRyaWdnZXJlZCBhcyBhIHNpZGUgZWZmZWN0IG9mCisgIGEgbW9kdWxlIGltcG9ydC4KKworLSBJc3N1ZSAjMTA0NjQ6IG5ldHJjIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBsaW5lcyB3aXRoIGVtYmVkZGVkICcjJyBjaGFyYWN0ZXJzLgorCistIEFkZGVkIGl0ZXJ0b29scy5hY2N1bXVsYXRlKCkuCisKKy0gSXNzdWUgIzQxMTM6IEFkZGVkIGN1c3RvbSBgYF9fcmVwcl9fYGAgbWV0aG9kIHRvIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgorCistIElzc3VlICMxMDI3MzogUmVuYW1lIGBhc3NlcnRSZWdleHBNYXRjaGVzYCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4cGAgdG8KKyAgYGFzc2VydFJlZ2V4YCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4YC4KKworLSBJc3N1ZSAjMTA1MzU6IEVuYWJsZSBzaWxlbmNlZCB3YXJuaW5ncyBpbiB1bml0dGVzdCBieSBkZWZhdWx0LgorCistIElzc3VlICM5ODczOiBUaGUgVVJMIHBhcnNpbmcgZnVuY3Rpb25zIGluIHVybGxpYi5wYXJzZSBub3cgYWNjZXB0IEFTQ0lJIGJ5dGUKKyAgc2VxdWVuY2VzIGFzIGlucHV0IGluIGFkZGl0aW9uIHRvIGNoYXJhY3RlciBzdHJpbmdzLgorCistIElzc3VlICMxMDU4NjogVGhlIHN0YXRpc3RpY3MgQVBJIGZvciB0aGUgbmV3IGZ1bmN0b29scy5scnVfY2FjaGUgaGFzIGJlZW4KKyAgY2hhbmdlZCB0byBhIHNpbmdsZSBjYWNoZV9pbmZvKCkgbWV0aG9kIHJldHVybmluZyBhIG5hbWVkIHR1cGxlLgorCistIElzc3VlICMxMDMyMzogaXRlcnRvb2xzLmlzbGljZSgpIG5vdyBjb25zdW1lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgaW5wdXRzCisgIGJlZm9yZSBzdG9wcGluZy4gIEZvcm1lcmx5LCB0aGUgZmluYWwgc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3Igd2FzCisgIHVuZGVmaW5lZC4KKworLSBJc3N1ZSAjMTA1NjU6IFRoZSBjb2xsZWN0aW9ucy5JdGVyYXRvciBBQkMgbm93IGNoZWNrcyBmb3IgYm90aCBfX2l0ZXJfXyBhbmQKKyAgX19uZXh0X18uCisKKy0gSXNzdWUgIzEwMjQyOiBGaXhlZCBpbXBsZW1lbnRhdGlvbiBvZiB1bml0dGVzdC5JdGVtc0VxdWFsIGFuZCBnYXZlIGl0IGEgbmV3CisgIG1vcmUgaW5mb3JtYXRpdmUgbmFtZSwgdW5pdHRlc3QuQ291bnRFcXVhbC4KKworLSBJc3N1ZSAjMTA1NjE6IEluIHBkYiwgY2xlYXIgdGhlIGJyZWFrcG9pbnRzIGJ5IHRoZSBicmVha3BvaW50IG51bWJlci4KKworLSBJc3N1ZSAjMjk4NjogZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgZ2V0cyBhIG5ldyBwYXJhbWV0ZXIsIGF1dG9qdW5rLCB3aGljaCBjYW4KKyAgYmUgc2V0IHRvIEZhbHNlIHRvIHR1cm4gb2ZmIHRoZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCAncG9wdWxhcml0eScKKyAgaGV1cmlzdGljLiBQYXRjaCBieSBUZXJyeSBSZWVkeSBhbmQgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjMTA1MzQ6IGluIGRpZmZsaWIsIGV4cG9zZSBianVuayBhbmQgYnBvcHVsYXIgc2V0czsgZGVwcmVjYXRlCisgIHVuZG9jdW1lbnRlZCBhbmQgbm93IHJlZHVuZGFudCBpc2JqdW5rIGFuZCBpc2Jwb3B1bGFyIG1ldGhvZHMuCisKKy0gSXNzdWUgIzk4NDY6IHppcGZpbGUgaXMgbm93IGNvcnJlY3RseSBjbG9zaW5nIHVuZGVybHlpbmcgZmlsZSBvYmplY3RzLgorCistIElzc3VlICMxMDQ1OTogVXBkYXRlIENKSyBjaGFyYWN0ZXIgbmFtZXMgdG8gVW5pY29kZSA2LjAuCisKKy0gSXNzdWUgIzQ0OTM6IHVybGxpYi5yZXF1ZXN0IGFkZHMgJy8nIGluIGZyb250IG9mIHBhdGggY29tcG9uZW50cyB3aGljaCBkb2VzIG5vdAorICBzdGFydCB3aXRoICcvLiBDb21tb24gYmVoYXZpb3IgZXhoaWJpdGVkIGJ5IGJyb3dzZXJzIGFuZCBvdGhlciBjbGllbnRzLgorCistIElzc3VlICM2Mzc4OiBpZGxlLmJhdCBub3cgcnVucyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBQeXRob24gdmVyc2lvbiByYXRoZXIgdGhhbgorICB0aGUgc3lzdGVtIGRlZmF1bHQuIFBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjMTA0NzA6ICdweXRob24gLW0gdW5pdHRlc3QnIHdpbGwgbm93IHJ1biB0ZXN0IGRpc2NvdmVyeSBieSBkZWZhdWx0LAorICB3aGVuIG5vIGV4dHJhIGFyZ3VtZW50cyBoYXZlIGJlZW4gcHJvdmlkZWQuCisKKy0gSXNzdWUgIzM3MDk6IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIgd2lsbCBidWZmZXIgdGhlIGhlYWRlcnMgYW5kIHdyaXRlIHRvCisgIG91dHB1dCBzdHJlYW0gb25seSB3aGVuIGVuZF9oZWFkZXJzIGlzIGludm9rZWQuIFRoaXMgaXMgYSBzcGVlZHVwIGFuZCBhbgorICBpbnRlcm5hbCBvcHRpbWl6YXRpb24uICBQYXRjaCBieSBBbmRyZXcgU2hhYWYuCisKKy0gSXNzdWUgIzEwMjIwOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlLiBJbml0aWFsIHBhdGNoIGJ5IFJvZG9scGhvCisgIEVja2hhcmR0LgorCistIElzc3VlICMxMDQ1MzogY29tcGlsZWFsbCBub3cgdXNlcyBhcmdwYXJzZSBpbnN0ZWFkIG9mIGdldG9wdCwgYW5kIHRodXMKKyAgcHJvdmlkZXMgY2xlYW4gb3V0cHV0IHdoZW4gY2FsbGVkIHdpdGggJy1oJy4KKworLSBJc3N1ZSAjODA3ODogQWRkIGNvbnN0YW50cyBmb3IgaGlnaGVyIGJhdWQgcmF0ZXMgaW4gdGhlIHRlcm1pb3MgbW9kdWxlLiAgUGF0Y2gKKyAgYnkgUm9kb2xwaG8gRWNraGFyZHQuCisKKy0gSXNzdWUgIzEwNDA3OiBGaXggdHdvIE5hbWVFcnJvcnMgaW4gZGlzdHV0aWxzLgorCistIElzc3VlICMxMDM3MTogRGVwcmVjYXRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIGluIHRoZSB0cmFjZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNDY3OiBGaXggQnl0ZXNJTy5yZWFkaW50bygpIGFmdGVyIHNlZWtpbmcgaW50byBhIHBvc2l0aW9uIGFmdGVyIHRoZQorICBlbmQgb2YgdGhlIGZpbGUuCisKKy0gY29uZmlncGFyc2VyOiAxMDAlIHRlc3QgY292ZXJhZ2UuCisKKy0gSXNzdWUgIzEwNDk5OiBjb25maWdwYXJzZXIgc3VwcG9ydHMgcGx1Z2dhYmxlIGludGVycG9sYXRpb24gaGFuZGxlcnMuIFRoZQorICBkZWZhdWx0IGNsYXNzaWMgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBCYXNpY0ludGVycG9sYXRpb24uIEFub3RoZXIKKyAgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGFkZGVkIChFeHRlbmRlZEludGVycG9sYXRpb24pIHdoaWNoIHN1cHBvcnRzIHRoZSBzeW50YXgKKyAgdXNlZCBieSB6Yy5idWlsZG91dCAoZS5nLiBpbnRlcnBvbGF0aW9uIGJldHdlZW4gc2VjdGlvbnMpLgorCistIGNvbmZpZ3BhcnNlcjogdGhlIFNhZmVDb25maWdQYXJzZXIgY2xhc3MgaGFzIGJlZW4gcmVuYW1lZCB0byBDb25maWdQYXJzZXIuCisgIFRoZSBsZWdhY3kgQ29uZmlnUGFyc2VyIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQgYnV0IGl0cyBpbnRlcnBvbGF0aW9uIG1lY2hhbmlzbQorICBpcyBzdGlsbCBhdmFpbGFibGUgYXMgTGVnYWN5SW50ZXJwb2xhdGlvbi4KKworLSBjb25maWdwYXJzZXI6IFVzYWdlIG9mIFJhd0NvbmZpZ1BhcnNlciBpcyBub3cgZGlzY291cmFnZWQgZm9yIG5ldyBwcm9qZWN0cworICBpbiBmYXZvciBvZiBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1Ob25lKS4KKworLSBJc3N1ZSAjMTY4Mjk0MjogY29uZmlncGFyc2VyIHN1cHBvcnRzIGFsdGVybmF0aXZlIG9wdGlvbi92YWx1ZSBkZWxpbWl0ZXJzLgorCistIElzc3VlICM1NDEyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgbWFwcGluZyBwcm90b2NvbCBhY2Nlc3MuCisKKy0gSXNzdWUgIzk0MTE6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBzcGVjaWZ5aW5nIGVuY29kaW5nIGZvciByZWFkIG9wZXJhdGlvbnMuCisKKy0gSXNzdWUgIzk0MjE6IGNvbmZpZ3BhcnNlcidzIGdldGludCgpLCBnZXRmbG9hdCgpIGFuZCBnZXRib29sZWFuKCkgbWV0aG9kcworICBhY2NlcHQgdmFycyBhbmQgZGVmYXVsdCBhcmd1bWVudHMganVzdCBsaWtlIGdldCgpIGRvZXMuCisKKy0gSXNzdWUgIzk0NTI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyByZWFkaW5nIGZyb20gc3RyaW5ncyBhbmQgZGljdGlvbmFyaWVzCisgICh0aGFua3MgdG8gdGhlIG1hcHBpbmcgcHJvdG9jb2wgQVBJLCB0aGUgbGF0dGVyIGNhbiBiZSB1c2VkIHRvIGNvcHkgZGF0YQorICBiZXR3ZWVuIHBhcnNlcnMpLgorCistIGNvbmZpZ3BhcnNlcjogYWNjZXB0ZWQgSU5JIGZpbGUgc3RydWN0dXJlIGlzIG5vdyBjdXN0b21pemFibGUsIGluY2x1ZGluZworICBjb21tZW50IHByZWZpeGVzLCBuYW1lIG9mIHRoZSBERUZBVUxUIHNlY3Rpb24sIGVtcHR5IGxpbmVzIGluIG11bHRpbGluZQorICB2YWx1ZXMsIGFuZCBpbmRlbnRhdGlvbi4KKworLSBJc3N1ZSAjMTAzMjY6IHVuaXR0ZXN0LlRlc3RDYXNlIGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZC4KKworLSBJc3N1ZSAjOTkyNjogV3JhcHBlZCBUZXN0U3VpdGUgc3ViY2xhc3MgZG9lcyBub3QgZ2V0IF9fY2FsbF9fIGV4ZWN1dGVkLgorCistIElzc3VlICM5OTIwOiBTa2lwIHRlc3RzIGZvciBjbWF0aC5hdGFuIGFuZCBjbWF0aC5hdGFuaCBhcHBsaWVkIHRvIGNvbXBsZXgKKyAgemVyb3Mgb24gc3lzdGVtcyB3aGVyZSB0aGUgbG9nMXAgZnVuY3Rpb24gZmFpbHMgdG8gcmVzcGVjdCB0aGUgc2lnbiBvZiB6ZXJvLgorICBUaGlzIGZpeGVzIGEgdGVzdCBmYWlsdXJlIG9uIEFJWC4KKworLSBJc3N1ZSAjOTczMjogQWRkaXRpb24gb2YgZ2V0YXR0cl9zdGF0aWMgdG8gdGhlIGluc3BlY3QgbW9kdWxlLgorCistIElzc3VlICMxMDQ0NjogTW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGVkIGJ5IHB5ZG9jIG5vdyBsaW5rcyB0byBhCisgIHZlcnNpb24tc3BlY2lmaWMgb25saW5lIHJlZmVyZW5jZSBtYW51YWwuCisKKy0gTWFrZSB0aGUgJ05vIG1vZHVsZSBuYW1lZCcgZXhjZXB0aW9uIG1lc3NhZ2UgZnJvbSBpbXBvcnRsaWIgY29uc2lzdGVudC4KKworLSBJc3N1ZSAjMTA0NDM6IEFkZCB0aGUgU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSBtZXRob2QuCisKKy0gSXNzdWUgIzEwNDQwOiBTdXBwb3J0IFJVU0FHRV9USFJFQUQgYXMgYSBjb25zdGFudCBpbiB0aGUgcmVzb3VyY2UgbW9kdWxlLgorICBQYXRjaCBieSBSb2JlcnQgQ29sbGlucy4KKworLSBJc3N1ZSAjMTA0Mjk6IElNQVAuc3RhcnR0bHMoKSBzdG9yZWQgdGhlIGNhcGFiaWxpdGllcyBhcyBieXRlcyBvYmplY3RzLCByYXRoZXIKKyAgdGhhbiBzdHJpbmdzLgorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTA1NTc6IEFkZGVkIGEgbmV3IEFQSSBmdW5jdGlvbiwgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKCksCisgIHdoaWNoIHRyYW5zZm9ybXMgbm9uLUFTQ0lJIGRlY2ltYWwgZGlnaXRzIGluIGEgVW5pY29kZSBzdHJpbmcgdG8gdGhlaXIgQVNDSUkKKyAgZXF1aXZhbGVudHMuCisKKy0gSXNzdWUgIzk1MTg6IEV4dGVuZCB0aGUgUHlNb2R1bGVEZWZfSEVBRF9JTklUIG1hY3JvIHRvIGV4cGxpY2l0bHkKKyAgemVyby1pbml0aWFsaXplIGFsbCBmaWVsZHMsIGZpeGluZyBjb21waWxlciB3YXJuaW5ncyBzZWVuIHdoZW4gYnVpbGRpbmcKKyAgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBnY2Mgd2l0aCAiLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIgKGltcGxpZWQgYnkKKyAgIi1XIikuCisKKy0gSXNzdWUgIzEwMjU1OiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gUHlfSW5pdGlhbGl6ZUV4KCkuICBQYXRjaCBieSBOZWlsCisgIFNjaGVtZW5hdWVyLgorCistIHN0cnVjdHNlcS5oIGlzIG5vdyBpbmNsdWRlZCBpbiBQeXRob24uaC4KKworLSBMb29zZW4gUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzIHRvIGFsbG93IGRpY3Qgc3ViY2xhc3Nlcy4KKworVGVzdHMKKy0tLS0tCisKKy0gcmVncnRlc3QucHkgb25jZSBhZ2FpbiBlbnN1cmVzIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyByZW1vdmVkIGZyb20gc3lzLnBhdGgKKyAgd2hlbiBpdCBpcyBpbnZva2VkIGRpcmVjdGx5IGFzIHRoZSBfX21haW5fXyBtb2R1bGUuCisKKy0gYHB5dGhvbiAtbSB0ZXN0YCBjYW4gYmUgdXNlZCB0byBydW4gdGhlIHRlc3Qgc3VpdGUgYXMgd2VsbCBhcyBgcHl0aG9uIC1tCisgIHRlc3QucmVncnRlc3RgLgorCistIERvIG5vdCBmYWlsIHRlc3Rfc29ja2V0IHdoZW4gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGhvc3RuYW1lIGNhbm5vdCBiZQorICBsb29rZWQgdXAuCisKKy0gSXNzdWUgIzg4ODY6IFVzZSBjb250ZXh0IG1hbmFnZXJzIHRocm91Z2hvdXQgdGVzdF96aXBmaWxlLiBQYXRjaCBieSBFcmljCisgIENhcnN0ZW5zZW4uCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMDMyNTogRml4IHR3byBpc3N1ZXMgaW4gdGhlIGZhbGxiYWNrIGRlZmluaXRpb25zIGZvciBQWV9VTExPTkdfTUFYIGFuZAorICBQWV9MTE9OR19NQVggdGhhdCBtYWRlIHRoZW0gdW5zdWl0YWJsZSBmb3IgdXNlIGluIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTAyOTk6IExpc3QgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiBhIHRhYmxlIGluIGZ1bmN0aW9ucy5yc3QuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTMtTm92LTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMDM3MjogSW1wb3J0IHRoZSB3YXJuaW5ncyBtb2R1bGUgb25seSBhZnRlciB0aGUgSU8gbGlicmFyeSBpcworICBpbml0aWFsaXplZCwgc28gYXMgdG8gYXZvaWQgYm9vdHN0cmFwIGlzc3VlcyB3aXRoIHRoZSAnLVcnIG9wdGlvbi4KKworLSBJc3N1ZSAjMTAyOTM6IFJlbW92ZSBvYnNvbGV0ZSBmaWVsZCBpbiB0aGUgUHlNZW1vcnlWaWV3IHN0cnVjdHVyZSwgdW51c2VkCisgIHVuZG9jdW1lbnRlZCB2YWx1ZSBQeUJVRl9TSEFET1csIGFuZCBzdHJhbmdlbHktbG9va2luZyBjb2RlIGluCisgIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzLgorCistIElzc3VlICM2MDgxOiBBZGQgc3RyLmZvcm1hdF9tYXAoKSwgc2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLgorCistIElmIEZpbGVJTy5fX2luaXRfXyBmYWlscywgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjMTAyMjE6IGRpY3QucG9wKGspIG5vdyBoYXMgYSBrZXkgZXJyb3IgbWVzc2FnZSB0aGF0IGluY2x1ZGVzIHRoZQorICBtaXNzaW5nIGtleSAoc2FtZSBtZXNzYWdlIGRba10gcmV0dXJucyBmb3IgbWlzc2luZyBrZXlzKS4KKworLSBJc3N1ZSAjNTQzNzogQSBwcmVhbGxvY2F0ZWQgTWVtb3J5RXJyb3IgaW5zdGFuY2Ugc2hvdWxkIG5vdCBrZWVwIHRyYWNlYmFjaworICBkYXRhIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzIGNhdWdodCBpbiB0aGUgc3RhY2sgdHJhY2UpIGFsaXZlIGluZmluaXRlbHkuCisKKy0gSXNzdWUgIzEwMTg2OiBGaXggdGhlIFN5bnRheEVycm9yIGNhcmV0IHdoZW4gdGhlIG9mZnNldCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoCisgIG9mIHRoZSBvZmZlbmRpbmcgbGluZS4KKworLSBJc3N1ZSAjMTAwODk6IEFkZCBzdXBwb3J0IGZvciBhcmJpdHJhcnkgLVggb3B0aW9ucyBvbiB0aGUgY29tbWFuZCBsaW5lLiAgVGhleQorICBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggYSBuZXcgYXR0cmlidXRlIGBgc3lzLl94b3B0aW9uc2BgLgorCistIElzc3VlICM0Mzg4OiBPbiBNYWMgT1MgWCwgZGVjb2RlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBVVEYtOCwgaW5zdGVhZCBvZgorICB0aGUgbG9jYWxlIGVuY29kaW5nLiAgSWYgdGhlIExBTkcgKGFuZCBMQ19BTEwgYW5kIExDX0NUWVBFKSBlbnZpcm9ubWVudAorICB2YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzIElTTy04ODU5LTEsIHdoZXJlYXMgbW9zdCBwcm9ncmFtcworICAoaW5jbHVkaW5nIFB5dGhvbikgZXhwZWN0IFVURi04LiAgUHl0aG9uIGFscmVhZHkgdXNlcyBVVEYtOCBmb3IgdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgYW5kIHRvIGVuY29kZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIHRoaXMgT1MuCisKKy0gSXNzdWUgIzk3MTMsICMxMDExNDogUGFyc2VyIGZ1bmN0aW9ucyAoZS5nLiBQeVBhcnNlcl9BU1RGcm9tRmlsZSkgZXhwZWN0CisgIGZpbGVuYW1lcyBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvcgorICBoYW5kbGVyICh0byBzdXBwb3J0IHVuZGVjb2RhYmxlIGJ5dGVzKSwgaW5zdGVhZCBvZiBVVEYtOCBpbiBzdHJpY3QgbW9kZS4KKworLSBJc3N1ZSAjOTk5NzogRG9uJ3QgbGV0IHRoZSBuYW1lICJ0b3AiIGhhdmUgc3BlY2lhbCBzaWduaWZpY2FuY2UgaW4gc2NvcGUKKyAgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjOTg2MjogQ29tcGVuc2F0ZSBmb3IgYnJva2VuIFBJUEVfQlVGIGluIEFJWCBieSBoYXJkIGNvZGluZyBpdHMgdmFsdWUgYXMKKyAgdGhlIGRlZmF1bHQgNTEyIHdoZW4gY29tcGlsaW5nIG9uIEFJWC4KKworLSBVc2UgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTggdG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZW5hbWVzIGlmCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXMgbm90IHNldC4KKworLSBJc3N1ZSAjMTAwOTU6IGZwX3NldHJlYWRsKCkgZG9lc24ndCByZW9wZW4gdGhlIGZpbGUsIGluc3RlYWQgcmV1c2UgdGhlIGZpbGUKKyAgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjOTQxODogTW92ZWQgcHJpdmF0ZSBzdHJpbmcgbWV0aG9kcyBgYF9mb3JtYXR0ZXJfcGFyc2VyYGAgYW5kCisgIGBgX2Zvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0YGAgaW50byBhIG5ldyBgYF9zdHJpbmdgYCBtb2R1bGUuCisKKy0gSXNzdWUgIzk5OTI6IFJlbW92ZSBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEyOTQzOiBweXRob24gLW0gdG9rZW5pemUgc3VwcG9ydCBoYXMgYmVlbiBhZGRlZCB0byB0b2tlbml6ZS4KKworLSBJc3N1ZSAjMTA0NjU6IGZpeCBicm9rZW4gZGVsZWdhdGluZyBvZiBhdHRyaWJ1dGVzIGJ5IGd6aXAuX1BhZGRlZEZpbGUuCisKKy0gSXNzdWUgIzEwMzU2OiBEZWNpbWFsLl9faGFzaF9fKC0xKSBzaG91bGQgcmV0dXJuIC0yLgorCistIElzc3VlICMxNTUzMzc1OiBsb2dnaW5nOiBBZGRlZCBzdGFja19pbmZvIGt3YXJnIHRvIGRpc3BsYXkgc3RhY2sgaW5mb3JtYXRpb24uCisKKy0gSXNzdWUgIzUxMTE6IElQdjYgSG9zdCBpbiB0aGUgSGVhZGVyIGlzIHdyYXBwZWQgaW5zaWRlIFsgXS4gUGF0Y2ggYnkgQ2hhbmRydS4KKworLSBGaXggRnJhY3Rpb24uX19oYXNoX18gc28gdGhhdCBGcmFjdGlvbi5fX2hhc2hfXygtMSkgaXMgLTIuICAoU2VlIGFsc28gaXNzdWUKKyAgIzEwMzU2LikKKworLSBJc3N1ZSAjNDQ3MTogQWRkIHRoZSBJTUFQLnN0YXJ0dGxzKCkgbWV0aG9kIHRvIGVuYWJsZSBlbmNyeXB0aW9uIG9uIHN0YW5kYXJkCisgIElNQVA0IGNvbm5lY3Rpb25zLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTG9yZW56byBNLiBDYXR1Y2NpLgorCistIElzc3VlICMxNDY2MDY1OiBBZGQgJ3ZhbGlkYXRlJyBvcHRpb24gdG8gYmFzZTY0LmI2NGRlY29kZSB0byByYWlzZSBhbiBlcnJvciBpZgorICB0aGVyZSBhcmUgbm9uLWJhc2U2NCBhbHBoYWJldCBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dC4KKworLSBJc3N1ZSAjMTAzODY6IEFkZCBfX2FsbF9fIHRvIHRva2VuIG1vZHVsZTsgdGhpcyBzaW1wbGlmaWVzIGltcG9ydGluZyBpbgorICB0b2tlbml6ZSBtb2R1bGUgYW5kIHByZXZlbnRzIGxlYWtpbmcgb2YgcHJpdmF0ZSBuYW1lcyB0aHJvdWdoIGBgaW1wb3J0ICpgYC4KKworLSBJc3N1ZSAjNDQ3MTogUHJvcGVybHkgc2h1dGRvd24gc29ja2V0IGluIElNQVAuc2h1dGRvd24oKS4gIFBhdGNoIGJ5IExvcmVuem8KKyAgTS4gQ2F0dWNjaS4KKworLSBGaXggSU1BUC5sb2dpbigpIHRvIHdvcmsgcHJvcGVybHkuCisKKy0gSXNzdWUgIzkyNDQ6IG11bHRpcHJvY2Vzc2luZyBwb29sIHdvcmtlciBwcm9jZXNzZXMgY291bGQgdGVybWluYXRlCisgIHVuZXhwZWN0ZWRseSBpZiB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgdGFzayBjb3VsZCBub3QgYmUgcGlja2xlZC4gIE9ubHkgdGhlCisgIGBgcmVwcmBgIG9mIHN1Y2ggZXJyb3JzIGFyZSBub3cgc2VudCBiYWNrLCB3cmFwcGVkIGluIGFuCisgIGBgTWF5YmVFbmNvZGluZ0Vycm9yYGAgZXhjZXB0aW9uLgorCistIElzc3VlICM5MjQ0OiBUaGUgYGBhcHBseV9hc3luYygpYGAgYW5kIGBgbWFwX2FzeW5jKClgYCBtZXRob2RzIG9mCisgIGBgbXVsdGlwcm9jZXNzaW5nLlBvb2xgYCBub3cgYWNjZXB0cyBhIGBgZXJyb3JfY2FsbGJhY2tgYCBhcmd1bWVudC4gIFRoaXMgY2FuCisgIGJlIGEgY2FsbGJhY2sgd2l0aCB0aGUgc2lnbmF0dXJlIGBgY2FsbGJhY2soZXhjKWBgLCB3aGljaCB3aWxsIGJlIGNhbGxlZCBpZgorICB0aGUgdGFyZ2V0IHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzEwMDIyOiBUaGUgZGljdGlvbmFyeSByZXR1cm5lZCBieSB0aGUgYGBnZXRwZWVyY2VydCgpYGAgbWV0aG9kIG9mIFNTTAorICBzb2NrZXRzIG5vdyBoYXMgYWRkaXRpb25hbCBpdGVtcyBzdWNoIGFzIGBgaXNzdWVyYGAgYW5kIGBgbm90QmVmb3JlYGAuCisKKy0gYGB1c2VuZXRyY2BgIGlzIG5vdyBmYWxzZSBieSBkZWZhdWx0IGZvciBOTlRQIG9iamVjdHMuCisKKy0gSXNzdWUgIzE5MjY6IEFkZCBzdXBwb3J0IGZvciBOTlRQIG92ZXIgU1NMIG9uIHBvcnQgNTYzLCBhcyB3ZWxsIGFzIFNUQVJUVExTLgorICBQYXRjaCBieSBBbmRyZXcgVmFudC4KKworLSBJc3N1ZSAjMTAzMzU6IEFkZCB0b2tlbml6ZS5vcGVuKCksIGRldGVjdCB0aGUgZmlsZSBlbmNvZGluZyB1c2luZworICB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBhbmQgb3BlbiBpdCBpbiByZWFkIG9ubHkgbW9kZS4KKworLSBJc3N1ZSAjMTAzMjE6IEFkZCBzdXBwb3J0IGZvciBiaW5hcnkgZGF0YSB0byBzbXRwbGliLlNNVFAuc2VuZG1haWwsIGFuZCBhIG5ldworICBtZXRob2Qgc2VuZF9tZXNzYWdlIHRvIHNlbmQgYW4gZW1haWwubWVzc2FnZS5NZXNzYWdlIG9iamVjdC4KKworLSBJc3N1ZSAjNjAxMTogc3lzY29uZmlnIGFuZCBkaXN0dXRpbHMuc3lzY29uZmlnIHVzZSB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yCisgIGhhbmRsZXIgdG8gcGFyc2UgdGhlIE1ha2VmaWxlIGZpbGUuICBBdm9pZCBhIFVuaWNvZGVEZWNvZGVFcnJvciBpZiB0aGUgc291cmNlCisgIGNvZGUgZGlyZWN0b3J5IG5hbWUgY29udGFpbnMgYSBub24tQVNDSUkgY2hhcmFjdGVyIGFuZCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzCisgIEFTQ0lJLgorCistIElzc3VlICMxMDMyOTogVGhlIHRyYWNlIG1vZHVsZSB3cml0ZXMgcmVwb3J0cyB1c2luZyB0aGUgaW5wdXQgUHl0aG9uIHNjcmlwdAorICBlbmNvZGluZywgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLiAgUGF0Y2ggd3JpdHRlbiBieSBBbGV4YW5kZXIKKyAgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjMTAxMjY6IEZpeCBkaXN0dXRpbHMnIHRlc3RfYnVpbGQgd2hlbiBQeXRob24gd2FzIGJ1aWx0IHdpdGgKKyAgLS1lbmFibGUtc2hhcmVkLgorCistIElzc3VlICM5MjgxOiBQcmV2ZW50IHJhY2UgY29uZGl0aW9uIHdpdGggbWtkaXIgaW4gZGlzdHV0aWxzLiAgUGF0Y2ggYnkKKyAgQXJmcmV2ZXIuCisKKy0gSXNzdWUgIzEwMjI5OiBGaXggY2FjaGluZyBlcnJvciBpbiBnZXR0ZXh0LgorCistIElzc3VlICMxMDI1MjogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiBkaXN0dXRpbHMgY29kZSBhbmQKKyAgdGVzdHMuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwsIGNvbXBsZXRlZCBieSDDiXJpYyBBcmF1am8uCisKKy0gSXNzdWUgIzEwMTgwOiBQaWNrbGluZyBmaWxlIG9iamVjdHMgaXMgbm93IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBzaW5jZQorICB1bnBpY2tsaW5nIHRoZW0gcHJvZHVjZWQgbm9uc2Vuc2ljYWwgcmVzdWx0cy4KKworLSBJc3N1ZSAjMTAzMTE6IFRoZSBzaWduYWwgbW9kdWxlIG5vdyByZXN0b3JlcyBlcnJubyBiZWZvcmUgcmV0dXJuaW5nIGZyb20gaXRzCisgIGxvdy1sZXZlbCBzaWduYWwgaGFuZGxlci4gIFBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCisKKy0gSXNzdWUgIzEwMjgyOiBBZGQgYSBgYG5udHBfaW1wbGVtZW50YXRpb25gYCBhdHRyaWJ1dGUgdG8gTk5UUCBvYmplY3RzLgorCistIElzc3VlICMxMDI4MzogQWRkIGEgYGBncm91cF9wYXR0ZXJuYGAgYXJndW1lbnQgdG8gTk5UUC5saXN0KCkuCisKKy0gSXNzdWUgIzEwMTU1OiBBZGQgSUlTQ0dJSGFuZGxlciB0byB3c2dpcmVmLmhhbmRsZXJzIHRvIHN1cHBvcnQgSUlTIENHSQorICBlbnZpcm9ubWVudCBiZXR0ZXIsIGFuZCB0byBjb3JyZWN0IHVuaWNvZGUgZW52aXJvbm1lbnQgdmFsdWVzIGZvciBXU0dJIDEuMC4xLgorCistIElzc3VlICMxMDI4MTogbm50cGxpYiBub3cgcmV0dXJucyBOb25lIGZvciBhYnNlbnQgZmllbGRzIGluIHRoZSBPVkVSL1hPVkVSCisgIHJlc3BvbnNlLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uLgorCistIHdzZ2lyZWYgbm93IGltcGxlbWVudHMgYW5kIHZhbGlkYXRlcyBQRVAgMzMzMywgcmF0aGVyIHRoYW4gYW4gZXhwZXJpbWVudGFsCisgIGV4dGVuc2lvbiBvZiBQRVAgMzMzLiAgKE5vdGU6IGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uIDMueCBtYXkgaGF2ZQorICBpbmNvcnJlY3RseSB2YWxpZGF0ZWQgc29tZSBub24tY29tcGxpYW50IGFwcGxpY2F0aW9ucyBhcyBXU0dJIGNvbXBsaWFudDsgaWYKKyAgeW91ciBhcHAgdmFsaWRhdGVzIHdpdGggUHl0aG9uIDwzLjJiMSssIGJ1dCBub3Qgb24gdGhpcyB2ZXJzaW9uLCBpdCBpcyBsaWtlbHkKKyAgdGhlIGNhc2UgdGhhdCB5b3VyIGFwcCB3YXMgbm90IGNvbXBsaWFudC4pCisKKy0gSXNzdWUgIzEwMjgwOiBOTlRQLm5udHBfdmVyc2lvbiBzaG91bGQgcmVmbGVjdCB0aGUgaGlnaGVzdCB2ZXJzaW9uIGFkdmVydGlzZWQKKyAgYnkgdGhlIHNlcnZlci4KKworLSBJc3N1ZSAjMTAxODQ6IFRvdWNoIGRpcmVjdG9yaWVzIG9ubHkgb25jZSB3aGVuIGV4dHJhY3RpbmcgYSB0YXJmaWxlLgorCistIElzc3VlICMxMDE5OTogTmV3IHBhY2thZ2UsIGBgdHVydGxlZGVtb2BgIG5vdyBjb250YWlucyBzZWxlY3RlZCBkZW1vIHNjcmlwdHMKKyAgdGhhdCB3ZXJlIGZvcm1lcmx5IGZvdW5kIHVuZGVyIERlbW8vdHVydGxlLgorCistIElzc3VlICMxMDI2NTogQ2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgaW4gc3VuYXUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzEwMjY2OiB1dS5kZWNvZGUgZGlkbid0IGNsb3NlIGluX2ZpbGUgZXhwbGljaXRseSB3aGVuIGl0IHdhcyBnaXZlbiBhcyBhCisgIGZpbGVuYW1lLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIElzc3VlICMxMDExMDogUXVldWUgb2JqZWN0cyBkaWRuJ3QgcmVjb2duaXplIGZ1bGwgcXVldWVzIHdoZW4gdGhlIG1heHNpemUKKyAgcGFyYW1ldGVyIGhhZCBiZWVuIHJlZHVjZWQuCisKKy0gSXNzdWUgIzEwMTYwOiBTcGVlZCB1cCBvcGVyYXRvci5hdHRyZ2V0dGVyLiAgUGF0Y2ggYnkgQ2hyaXN0b3MgR2Vvcmdpb3UuCisKKy0gbG9nZ2luZzogQWRkZWQgc3R5bGUgb3B0aW9uIHRvIGJhc2ljQ29uZmlnKCkgdG8gYWxsb3cgJSwge30gb3IgJC1mb3JtYXR0aW5nLgorCistIElzc3VlICM1NzI5OiBqc29uLmR1bXBzKCkgbm93IHN1cHBvcnRzIHVzaW5nIGEgc3RyaW5nIHN1Y2ggYXMgJ1x0JyBmb3IKKyAgcHJldHR5LXByaW50aW5nIG11bHRpbGV2ZWwgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTAyNTM6IEZpbGVJTyBsZWFrcyBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIHRyeWluZyB0byBvcGVuIGEgZmlsZSBmb3IKKyAgYXBwZW5kIHRoYXQgaXNuJ3Qgc2Vla2FibGUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gU3VwcG9ydCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIGZpbGUtbGlrZSBvYmplY3RzIHJldHVybmVkIGJ5IG1haWxib3gKKyAgYGBnZXRfZmlsZSgpYGAgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTAyNDY6IHV1LmVuY29kZSBkaWRuJ3QgY2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgd2hlbiBmaWxlbmFtZXMKKyAgd2VyZSBnaXZlbiB0byBpdC4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KKworLSBJc3N1ZSAjMTAxOTg6IGZpeCBkdXBsaWNhdGUgaGVhZGVyIHdyaXR0ZW4gdG8gd2F2ZSBmaWxlcyB3aGVuIHdyaXRlZnJhbWVzKCkgaXMKKyAgY2FsbGVkIHdpdGhvdXQgZGF0YS4KKworLSBDbG9zZSBmaWxlIG9iamVjdHMgaW4gbW9kdWxlZmluZGVyIGluIGEgdGltZWx5IG1hbm5lci4KKworLSBDbG9zZSBhIGlvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGluIGVtYWlsLnBhcnNlciBpbiBhIHRpbWVseSBtYW5uZXIuCisKKy0gQ2xvc2UgYSBmaWxlIG9iamVjdCBpbiBkaXN0dXRpbHMuc3lzY29uZmlnIGluIGEgdGltZWx5IG1hbm5lci4KKworLSBDbG9zZSBhIGZpbGUgb2JqZWN0IGluIHBrZ3V0aWwgaW4gYSB0aW1lbHkgbWFubmVyLgorCistIElzc3VlICMxMDIzMzogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiB0aGUgdGFyZmlsZSBtb2R1bGUgYW5kCisgIGl0cyB0ZXN0IHN1aXRlLgorCistIElzc3VlICMxMDA5MzogUmVzb3VyY2VXYXJuaW5ncyBhcmUgbm93IGlzc3VlZCB3aGVuIGZpbGVzIGFuZCBzb2NrZXRzIGFyZQorICBkZWFsbG9jYXRlZCB3aXRob3V0IGV4cGxpY2l0IGNsb3NpbmcuICBUaGVzZSB3YXJuaW5ncyBhcmUgc2lsZW5jZWQgYnkgZGVmYXVsdCwKKyAgZXhjZXB0IGluIHB5ZGVidWcgbW9kZS4KKworLSB0YXJmaWxlLnB5OiBBZGQgc3VwcG9ydCBmb3IgYWxsIG1pc3NpbmcgdmFyaWFudHMgb2YgdGhlIEdOVSBzcGFyc2UgZXh0ZW5zaW9ucworICBhbmQgY3JlYXRlIGZpbGVzIHdpdGggaG9sZXMgd2hlbiBleHRyYWN0aW5nIHNwYXJzZSBtZW1iZXJzLgorCistIElzc3VlICMxMDIxODogUmV0dXJuIHRpbWVvdXQgc3RhdHVzIGZyb20gYGBDb25kaXRpb24ud2FpdGBgIGluIHRocmVhZGluZy4KKworLSBJc3N1ZSAjNzM1MTogQWRkIGBgemlwZmlsZS5CYWRaaXBGaWxlYGAgc3BlbGxpbmcgb2YgdGhlIGV4Y2VwdGlvbiBuYW1lIGFuZAorICBkZXByZWNhdGUgdGhlIG9sZCBuYW1lIGBgemlwZmlsZS5CYWRaaXBmaWxlYGAuCisKKy0gSXNzdWUgIzUwMjc6IFRoZSBzdGFuZGFyZCBgYHhtbGBgIG5hbWVzcGFjZSBpcyBub3cgdW5kZXJzdG9vZCBieQorICB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBhcyBiZWluZyBib3VuZCB0bworICBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UuICBQYXRjaCBieSBUcm95IEouIEZhcnJlbGwuCisKKy0gSXNzdWUgIzU5NzU6IEFkZCBjc3YudW5peF9kaWFsZWN0IGNsYXNzLgorCistIElzc3VlICM3NzYxOiB0ZWxuZXRsaWIuaW50ZXJhY3QgZmFpbHVyZXMgb24gV2luZG93cyBmaXhlZC4KKworLSBsb2dnaW5nOiBBZGRlZCBzdHlsZSBvcHRpb24gdG8gRm9ybWF0dGVyIHRvIGFsbG93ICUsIHt9IG9yICQtZm9ybWF0dGluZy4KKworLSBJc3N1ZSAjNTE3ODogQWRkZWQgdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGNsYXNzIHRoYXQgY2FuIGJlIHVzZWQgYXMgYQorICBjb250ZXh0IG1hbmFnZXIuCisKKy0gSXNzdWUgIzEzNDkxMDY6IEdlbmVyYXRvciAoYW5kIEJ5dGVzR2VuZXJhdG9yKSBmbGF0dGVuIG1ldGhvZCBhbmQgSGVhZGVyCisgIGVuY29kZSBtZXRob2Qgbm93IHN1cHBvcnQgYSAnbGluZXNlcCcgYXJndW1lbnQuCisKKy0gSXNzdWUgIzU2Mzk6IEFkZCBhICpzZXJ2ZXJfaG9zdG5hbWUqIGFyZ3VtZW50IHRvIGBgU1NMQ29udGV4dC53cmFwX3NvY2tldGBgIGluCisgIG9yZGVyIHRvIHN1cHBvcnQgdGhlIFRMUyBTTkkgZXh0ZW5zaW9uLiAgYGBIVFRQU0Nvbm5lY3Rpb25gYCBhbmQgYGB1cmxvcGVuKClgYAorICBhbHNvIHVzZSB0aGlzIGFyZ3VtZW50LCBzbyB0aGF0IEhUVFBTIHZpcnR1YWwgaG9zdHMgYXJlIG5vdyBzdXBwb3J0ZWQuCisKKy0gSXNzdWUgIzEwMTY2OiBBdm9pZCByZWN1cnNpb24gaW4gcHN0YXRzIFN0YXRzLmFkZCgpIGZvciBtYW55IHN0YXRzIGl0ZW1zLgorCistIElzc3VlICMxMDE2MzogU2tpcCB1bnJlYWRhYmxlIHJlZ2lzdHJ5IGtleXMgZHVyaW5nIG1pbWV0eXBlcyBpbml0aWFsaXphdGlvbi4KKworLSBsb2dnaW5nOiBNYWRlIFN0cmVhbUhhbmRsZXIgdGVybWluYXRvciBjb25maWd1cmFibGUuCisKKy0gbG9nZ2luZzogQWxsb3dlZCBmaWx0ZXJzIHRvIGJlIGp1c3QgY2FsbGFibGVzLgorCistIGxvZ2dpbmc6IEFkZGVkIHRlc3RzIGZvciBfbG9nUmVjb3JkQ2xhc3MgY2hhbmdlcy4KKworLSBJc3N1ZSAjMTAwOTI6IFByb3Blcmx5IHJlc2V0IGxvY2FsZSBpbiBjYWxlbmRhci5Mb2NhbGUqQ2FsZW5kYXIgY2xhc3Nlcy4KKworLSBsb2dnaW5nOiBBZGRlZCBfbG9nUmVjb3JkQ2xhc3MsIGdldExvZ1JlY29yZENsYXNzLCBzZXRMb2dSZWNvcmRDbGFzcyB0bworICBpbmNyZWFzZSBmbGV4aWJpbGl0eSBvZiBMb2dSZWNvcmQgY3JlYXRpb24uCisKKy0gSXNzdWUgIzUxMTc6IENhc2Ugbm9ybWFsaXphdGlvbiB3YXMgbmVlZGVkIG9uIG50cGF0aC5yZWxwYXRoKCkuICBBbHNvIGZpeGVkCisgIHJvb3QgZGlyZWN0b3J5IGlzc3VlIG9uIHBvc2l4cGF0aC5yZWxwYXRoKCkuICAoUG9ydGVkIHdvcmtpbmcgZml4ZXMgZnJvbQorICBudHBhdGguKQorCistIElzc3VlICMxMzQzOiB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBub3cgaGFzIGFuIG9wdGlvbgorICBzaG9ydF9lbXB0eV9lbGVtZW50cyB0byBkaXJlY3QgaXQgdG8gdXNlIHNlbGYtY2xvc2luZyB0YWdzIHdoZW4gYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzk4MDcgKHBhcnQgMSk6IEV4cG9zZSB0aGUgQUJJIGZsYWdzIGluIHN5cy5hYmlmbGFncy4gIEFkZCAtLWFiaWZsYWdzCisgIHN3aXRjaCB0byBweXRob24tY29uZmlnIGZvciBjb21tYW5kIGxpbmUgYWNjZXNzLgorCistIElzc3VlICM2MDk4OiBEb24ndCBjbGFpbSBET00gbGV2ZWwgMyBjb25mb3JtYW5jZSBpbiBtaW5pZG9tLgorCistIElzc3VlICM1NzYyOiBGaXggQXR0cmlidXRlRXJyb3IgcmFpc2VkIGJ5IGBgeG1sLmRvbS5taW5pZG9tYGAgd2hlbiBhbiBlbXB0eQorICBYTUwgbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyBlbmNvdW50ZXJlZC4KKworLSBJc3N1ZSAjMjgzMDogQWRkIHRoZSBgYGh0bWwuZXNjYXBlKClgYCBmdW5jdGlvbiwgd2hpY2ggcXVvdGVzIGFsbCBwcm9ibGVtYXRpYworICBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQuICBEZXByZWNhdGUgYGBjZ2kuZXNjYXBlKClgYC4KKworLSBJc3N1ZSAjOTQwOTogRml4IHRoZSByZWdleCB0byBtYXRjaCBhbGwga2luZCBvZiBmaWxlbmFtZXMsIGZvciBpbnRlcmFjdGl2ZQorICBkZWJ1Z2dpbmcgaW4gZG9jdGVzdHMuCisKKy0gSXNzdWUgIzkxODM6IGBgZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKDApKWBgIHdpbGwgbm93IHJldHVybiB0aGUKKyAgc2FtZSBpbnN0YW5jZSBhcyBgYGRhdGV0aW1lLnRpbWV6b25lLnV0Y2BgLgorCistIElzc3VlICM3NTIzOiBBZGQgU09DS19DTE9FWEVDIGFuZCBTT0NLX05PTkJMT0NLIHRvIHRoZSBzb2NrZXQgbW9kdWxlLCB3aGVyZQorICBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCisKKy0gSXNzdWUgIzEwMDYzOiBmaWxlOi8vIHNjaGVtZSB3aWxsIHN0b3AgYWNjZXNzaW5nIHJlbW90ZSBob3N0cyB2aWEgZnRwCisgIHByb3RvY29sLiBmaWxlOi8vIHVybHMgaGFkIGZhbGxiYWNrIHRvIGFjY2VzcyByZW1vdGUgaG9zdHMgdmlhIGZ0cC4gVGhpcyB3YXMKKyAgbm90IGNvcnJlY3QsIGNoYW5nZSBpcyBtYWRlIHRvIHJhaXNlIGEgVVJMRXJyb3Igd2hlbiBhIHJlbW90ZSBob3N0IGlzIHRyaWVkIHRvCisgIGFjY2VzcyB2aWEgZmlsZTovLyBzY2hlbWUuCisKKy0gSXNzdWUgIzE3MTA3MDM6IFdyaXRlIHN0cnVjdHVyZXMgZm9yIGFuIGVtcHR5IFpJUCBhcmNoaXZlIHdoZW4gYSBaaXBGaWxlIGlzCisgIGNyZWF0ZWQgaW4gbW9kZXMgJ2EnIG9yICd3JyBhbmQgdGhlbiBjbG9zZWQgd2l0aG91dCBhZGRpbmcgYW55IGZpbGVzLiBSYWlzZQorICBCYWRaaXBmaWxlIChyYXRoZXIgdGhhbiBJT0Vycm9yKSB3aGVuIG9wZW5pbmcgc21hbGwgbm9uLVpJUCBmaWxlcy4KKworLSBJc3N1ZSAjMTAwNDE6IFRoZSBzaWduYXR1cmUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzIGluIHNvY2tldC5tYWtlZmlsZSgpIGRpZG4ndAorICBtYXRjaCB0aGF0IG9mIGlvLm9wZW4oKSwgYW5kIHRoZXkgYWxzbyBkaWRuJ3QgZ2V0IGZvcndhcmRlZCBwcm9wZXJseSB0bworICBUZXh0SU9XcmFwcGVyIGluIHRleHQgbW9kZS4gIFBhdGNoIGJ5IEthaSBaaHUuCisKKy0gSXNzdWUgIzkwMDM6IGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiwgdXJsbGliLnJlcXVlc3QuSFRUUFNIYW5kbGVyIGFuZAorICB1cmxsaWIucmVxdWVzdC51cmxvcGVuIG5vdyB0YWtlIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBhbGxvdyBmb3Igc2VydmVyCisgIGNlcnRpZmljYXRlIGNoZWNraW5nLCBhcyByZWNvbW1lbmRlZCBpbiBwdWJsaWMgdXNlcyBvZiBIVFRQUy4KKworLSBJc3N1ZSAjNjYxMjogRml4IHNpdGUgYW5kIHN5c2NvbmZpZyB0byBjYXRjaCBvcy5nZXRjd2QoKSBlcnJvciwgZWcuIGlmIHRoZQorICBjdXJyZW50IGRpcmVjdG9yeSB3YXMgZGVsZXRlZC4gUGF0Y2ggd3JpdHRlbiBieSBXLiBUcmV2b3IgS2luZy4KKworLSBJc3N1ZSAjMzg3MzogU3BlZWQgdXAgdW5waWNrbGluZyBmcm9tIGZpbGUgb2JqZWN0cyB0aGF0IGhhdmUgYSBwZWVrKCkgbWV0aG9kLgorCistIElzc3VlICMxMDA3NTogQWRkIGEgc2Vzc2lvbl9zdGF0cygpIG1ldGhvZCB0byBTU0xDb250ZXh0IG9iamVjdHMuCisKKy0gSXNzdWUgIzk5NDg6IEZpeGVkIHByb2JsZW0gb2YgbG9zaW5nIGZpbGVuYW1lIGNhc2UgaW5mb3JtYXRpb24uCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1MTA5OiBhcnJheS5hcnJheSBjb25zdHJ1Y3RvciB3aWxsIG5vdyB1c2UgZmFzdCBjb2RlIHdoZW4KKyAgaW5pdGlhbCBkYXRhIGlzIHByb3ZpZGVkIGluIGFuIGFycmF5IG9iamVjdCB3aXRoIGNvcnJlY3QgdHlwZS4KKworLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBvbmx5IGFjY2VwdHMgdW5pY29kZS4KKworLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBjYW4gYWNjZXB0IG5vbiBhc2NpaSBmaWxlbmFtZS4KKworLSBJc3N1ZSAjOTM3NzogVXNlIFVuaWNvZGUgQVBJIGZvciBnZXRob3N0bmFtZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxMDE0MzogVXBkYXRlICJvcy5wYXRoY29uZiIgdmFsdWVzLgorCistIElzc3VlICM2NTE4OiBTdXBwb3J0IGNvbnRleHQgbWFuYWdlciBwcm90Y29sIGZvciBvc3NhdWRpb2RldiB0eXBlcy4KKworLSBJc3N1ZSAjNjc4MjUwOiBNYWtlIG1tYXAgZmx1c2ggYSBub29wIG9uIEFDQ0VTU19SRUFEIGFuZCBBQ0NFU1NfQ09QWS4KKworLSBJc3N1ZSAjOTA1NDogRml4IGEgY3Jhc2ggb2NjdXJyaW5nIHdoZW4gdXNpbmcgdGhlIHB5ZXhwYXQgbW9kdWxlIHdpdGggZXhwYXQKKyAgdmVyc2lvbiAyLjAuMS4KKworLSBJc3N1ZSAjNTM1NTogUHJvdmlkZSBtYXBwaW5ncyBmcm9tIEV4cGF0IGVycm9yIG51bWJlcnMgdG8gc3RyaW5nIGRlc2NyaXB0aW9ucworICBhbmQgYmFja3dhcmRzLCBpbiBvcmRlciB0byBhY3R1YWxseSBtYWtlIGl0IHBvc3NpYmxlIHRvIGFuYWx5emUgZXJyb3IgY29kZXMKKyAgcHJvdmlkZWQgYnkgRXhwYXRFcnJvci4KKworLSBUaGUgVW5pY29kZSBkYXRhYmFzZSB3YXMgdXBkYXRlZCB0byA2LjAuMC4KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzEwMjg4OiBUaGUgZGVwcmVjYXRlZCBmYW1pbHkgb2YgImNoYXIiLWhhbmRsaW5nIG1hY3JvcworICAoSVNMT1dFUigpL0lTVVBQRVIoKS9ldGMpIGhhdmUgbm93IGJlZW4gcmVtb3ZlZDogdXNlIFB5X0lTTE9XRVIoKSBldGMgaW5zdGVhZC4KKworLSBJc3N1ZSAjOTc3ODogSGFzaCB2YWx1ZXMgYXJlIG5vdyBhbHdheXMgdGhlIHNpemUgb2YgcG9pbnRlcnMuIEEgbmV3IFB5X2hhc2hfdAorICB0eXBlIGhhcyBiZWVuIGludHJvZHVjZWQuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxMDExNzogVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBub3cgYWNjZXB0cyBzb3VyY2UgZmlsZXMgdGhhdCB1c2UKKyAgZW5jb2Rpbmcgb3RoZXIgdGhhbiBBU0NJSSBvciBVVEYtOC4gIFNvdXJjZSBlbmNvZGluZyBpcyBwcmVzZXJ2ZWQgd2hlbgorICByZWluZGVudGVkIGNvZGUgaXMgd3JpdHRlbiB0byBhIGZpbGUuCisKKy0gSXNzdWUgIzcyODc6IERlbW8vaW1wdXRpbC9rbmVlLnB5IHdhcyByZW1vdmVkLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMzY5OTogRml4IHRlc3RfYmlnYWRkcnNwYWNlIGFuZCBleHRlbmQgaXQgdG8gdGVzdCBieXRlc3RyaW5ncyBhcyB3ZWxsCisgIGFzIHVuaWNvZGUgc3RyaW5ncy4gIEluaXRpYWwgcGF0Y2ggYnkgU2FuZHJvIFRvc2kuCisKKy0gSXNzdWUgIzEwMjk0OiBSZW1vdmUgZGVhZCBjb2RlIGZvcm0gdGVzdF91bmljb2RlX2ZpbGUuCisKKy0gSXNzdWUgIzEwMTIzOiBEb24ndCB1c2Ugbm9uLWFzY2lpIGZpbGVuYW1lcyBpbiB0ZXN0X2RvY3Rlc3QgdGVzdHMuIEFkZCBhIG5ldworICB0ZXN0IHNwZWNpZmljIHRvIHVuaWNvZGUgKG5vbi1hc2NpaSBuYW1lIGFuZCBmaWxlbmFtZSkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMDI2ODogQWRkIGEgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMgb3B0aW9uIHRvIGNvbmZpZ3VyZS4KKworLSBJc3N1ZSAjODg1MjogQWxsb3cgdGhlIHNvY2tldCBtb2R1bGUgdG8gYnVpbGQgb24gT3BlblNvbGFyaXMuCisKKy0gRHJvcCAtT1BUOk9saW1pdCBjb21waWxlciBvcHRpb24uCisKKy0gSXNzdWUgIzEwMDk0OiBVc2UgdmVyc2lvbmVkIC5zbyBmaWxlcyBvbiBHTlUva2ZyZWVCU0QgYW5kIHRoZSBHTlUgSHVyZC4KKworLSBBY2NlcHQgT3JhY2xlIEJlcmtlbGV5IERCIDUuMCBhbmQgNS4xIGFzIGJhY2tlbmQgZm9yIHRoZSBkYm0gZXh0ZW5zaW9uLgorCistIElzc3VlICM3NDczOiBhdm9pZCBsaW5rIGVycm9ycyB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggYSBkaWZmZXJlbnQgc2V0CisgIG9mIGFyY2hpdGVjdHVyZXMgdGhhbiB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGluc3RhbGxlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwOS1PY3QtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwMDY4OiBHbG9iYWwgb2JqZWN0cyB3aGljaCBoYXZlIHJlZmVyZW5jZSBjeWNsZXMgd2l0aCB0aGVpciBtb2R1bGUncworICBkaWN0IGFyZSBub3cgY2xlYXJlZCBhZ2Fpbi4gVGhpcyBjYXVzZXMgaXNzdWUgIzcxNDAgdG8gYXBwZWFyIGFnYWluLgorCistIElzc3VlICM5NzM4OiBEb2N1bWVudCBQeUVycl9TZXRTdHJpbmcoKSBhbmQgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKCkKKyAgZW5jb2RpbmdzLgorCistIGFzdC5saXRlcmFsX2V2YWwoKSBjYW4gbm93IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzLiAgSXQgaXMgYWxzbyBhIGxpdHRsZSBtb3JlCisgIGxpYmVyYWwgaW4gd2hhdCBpdCBhY2NlcHRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRoZSBzYWZldHkgb2YgdGhlIGV2YWx1YXRpb24uCisgIEZvciBleGFtcGxlLCAzais0IGFuZCAzKzQrNSBhcmUgYm90aCBhY2NlcHRlZC4KKworLSBJc3N1ZSAjMTAwMDY6IHR5cGUuX19hYnN0cmFjdG1ldGhvZHNfXyBub3cgcmFpc2VzIGFuIEF0dHJpYnV0ZUVycm9yLiAgQXMgYQorICByZXN1bHQgbWV0YWNsYXNzZXMgY2FuIG5vdyBiZSBBQkNzIChzZWUgIzk1MzMpLgorCistIElzc3VlICM4NjcwOiBjdHlwZXMuY193Y2hhciBzdXBwb3J0cyBub24tQk1QIGNoYXJhY3RlcnMgd2l0aCAzMiBiaXRzIHdjaGFyX3QuCisKKy0gSXNzdWUgIzg2NzA6IFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgYW5kIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKCkgcmVwbGFjZQorICBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzIGJ5IHNpbmdsZSBub24tQk1QIGNoYXJhY3RlcnMgZm9yIDE2IGJpdHMgUHlfVU5JQ09ERSBhbmQKKyAgMzIgYml0cyB3Y2hhcl90IChlZy4gTGludXggaW4gbmFycm93IGJ1aWxkKS4KKworLSBJc3N1ZSAjMTAwMDM6IEFsbG93IGhhbmRsaW5nIG9mIFNJR0JSRUFLIG9uIFdpbmRvd3MuIEZpeGVzIGEgcmVncmVzc2lvbgorICBpbnRyb2R1Y2VkIGJ5IGlzc3VlICM5MzI0LgorCistIElzc3VlICM5OTc5OiBDcmVhdGUgZnVuY3Rpb24gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKS4KKworLSBJc3N1ZSAjNzM5NzogTWVudGlvbiB0aGF0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkgaXMgcHJvYmFibHkgd2hhdCBzb21lb25lCisgIHJlYWxseSB3YW50cyB0byBiZSB1c2luZyBpbiBfX2ltcG9ydF9fJ3MgZG9jc3RyaW5nLgorCistIElzc3VlICM4NTIxOiBBbGxvdyBDcmVhdGVLZXlFeCwgT3BlbktleUV4LCBhbmQgRGVsZXRlS2V5RXggZnVuY3Rpb25zIG9mIHdpbnJlZworICB0byB1c2UgbmFtZWQgYXJndW1lbnRzLgorCistIElzc3VlICM5OTMwOiBSZW1vdmUgYm9ndXMgc3VidHlwZSBjaGVjayB0aGF0IHdhcyBjYXVzaW5nIChlLmcuKQorICBmbG9hdC5fX3JkaXZfXygyLjAsIDMpIHRvIHJldHVybiBOb3RJbXBsZW1lbnRlZCBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAxLjUuCisKKy0gSXNzdWUgIzk4MDg6IEltcGxlbWVudCBvcy5nZXRsb2dpbiBmb3IgV2luZG93cy4gUGF0Y2ggYnkgSm9uIEFuZ2xpbi4KKworLSBJc3N1ZSAjOTkwMTogRGVzdHJveWluZyB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCkgY2FuIGZhaWwgaWYgc29tZSBvdGhlcgorICB0aHJlYWRzIGFyZSBzdGlsbCBydW5uaW5nLiAgSW5zdGVhZCwgcmVpbml0aWFsaXplIHRoZSBHSUwgb24gYSBzZWNvbmQgY2FsbCB0bworICBQeV9Jbml0aWFsaXplKCkuCisKKy0gQWxsIFN5bnRheEVycm9ycyBub3cgaGF2ZSBhIGNvbHVtbiBvZmZzZXQgYW5kIHRoZXJlZm9yZSBhIGNhcmV0IHdoZW4gdGhlIGVycm9yCisgIGlzIHByaW50ZWQuCisKKy0gSXNzdWUgIzkyNTI6IFB5SW1wb3J0X0ltcG9ydCBubyBsb25nZXIgdXNlcyBhIGZyb21saXN0IGhhY2sgdG8gcmV0dXJuIHRoZQorICBtb2R1bGUgdGhhdCB3YXMgaW1wb3J0ZWQsIGJ1dCBpbnN0ZWFkIGdldHMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzLgorCistIElzc3VlICM5MjEzOiBUaGUgcmFuZ2UgdHlwZV9pdGVtcyBub3cgcHJvdmlkZXMgaW5kZXgoKSBhbmQgY291bnQoKSBtZXRob2RzLCB0bworICBjb25mb3JtIHRvIHRoZSBTZXF1ZW5jZSBBQkMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4gYW5kIERhbmllbCBTdHV0emJhY2guCisKKy0gSXNzdWUgIzc5OTQ6IElzc3VlIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpZiBvYmplY3QuX19mb3JtYXRfXyBpcyBjYWxsZWQKKyAgd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nLiAgVGhpcyBpcyBhbiBlZmZvcnQgdG8gZnV0dXJlLXByb29mIHVzZXIKKyAgY29kZS4gSWYgYSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnQgX19mb3JtYXRfXyBidXQgbGF0ZXIKKyAgYWRkcyBpdHMgb3duIF9fZm9ybWF0X18sIGl0IHdvdWxkIG1vc3QgbGlrZWx5IGJyZWFrIHVzZXIgY29kZSB0aGF0IGhhZAorICBzdXBwbGllZCBhIGZvcm1hdCBzdHJpbmcuICBUaGlzIHdpbGwgYmUgY2hhbmdlZCB0byBhIERlcHJlY2F0aW9uV2FyaW5nIGluCisgIFB5dGhvbiAzLjMgYW5kIGl0IHdpbGwgYmUgYW4gZXJyb3IgaW4gUHl0aG9uIDMuNC4KKworLSBJc3N1ZSAjOTgyODogRGVzdHJveSB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCksIHNvIHRoYXQgaXQgZ2V0cyBwcm9wZXJseQorICByZS1jcmVhdGVkIG9uIGEgc3Vic2VxdWVudCBjYWxsIHRvIFB5X0luaXRpYWxpemUoKS4gIFRoZSBwcm9ibGVtIChhIGNyYXNoKQorICB3b3VsZG4ndCBhcHBlYXIgaW4gMy4xIG9yIDIuNyB3aGVyZSB0aGUgR0lMJ3Mgc3RydWN0dXJlIGlzIG1vcmUgdHJpdmlhbC4KKworLSBJc3N1ZSAjOTIxMDogQ29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2N0eXBlLWZ1bmN0aW9ucyB3YXMgcmVtb3ZlZC4gIFVzaW5nIHRoZQorICBmdW5jdGlvbnMgZnJvbSB0aGUgbGliYyBjYXVzZWQgdGhlIG1ldGhvZHMgLnVwcGVyKCkgYW5kIGxvd2VyKCkgdG8gYmVjb21lCisgIGxvY2FsZSBhd2FyZSBhbmQgY3JlYXRlZCBzdWJ0bHkgd3JvbmcgcmVzdWx0cy4KKworLSBJc3N1ZSAjOTczODogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBhbmQgUHlFcnJfRm9ybWF0KCkgcmFpc2UgYW4gZXJyb3Igb24gYQorICBub24tQVNDSUkgYnl0ZSBpbiB0aGUgZm9ybWF0IHN0cmluZy4KKworLSBJc3N1ZSAjNDYxNzogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lIGZyb20gdGhlIGxvY2FsCisgIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkIGJsb2NrLiAgVGhpcyBsaW1pdGF0aW9uCisgIG9mIHRoZSBjb21waWxlciBoYXMgYmVlbiBsaWZ0ZWQsIGFuZCBhIG5ldyBvcGNvZGUgaW50cm9kdWNlZCAoREVMRVRFX0RFUkVGKS4KKworLSBJc3N1ZSAjOTgwNDogYXNjaWkoKSBub3cgYWx3YXlzIHJlcHJlc2VudHMgdW5pY29kZSBzdXJyb2dhdGUgcGFpcnMgYXMgYSBzaW5nbGUKKyAgYGBcVVhYWFhYWFhYYGAsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIHByaW50YWJsZSBvciBub3QuCisgIEFsc28sIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IgaGFuZGxlciBub3cgam9pbnMgc3Vycm9nYXRlIHBhaXJzIGludG8gYQorICBzaW5nbGUgY2hhcmFjdGVyIG9uIFVDUy0yIGJ1aWxkcy4KKworLSBJc3N1ZSAjOTc1NzogbWVtb3J5dmlldyBvYmplY3RzIGdldCBhIHJlbGVhc2UoKSBtZXRob2QgdG8gcmVsZWFzZSB0aGUKKyAgdW5kZXJseWluZyBidWZmZXIgKHByZXZpb3VzbHkgdGhpcyB3YXMgb25seSBkb25lIHdoZW4gZGVhbGxvY2F0aW5nIHRoZQorICBtZW1vcnl2aWV3KSwgYW5kIGdhaW4gc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KKworLSBJc3N1ZSAjOTc5NzogcHlzdGF0ZS5jIHdyb25nbHkgYXNzdW1lZCB0aGF0IHplcm8gY291bGRuJ3QgYmUgYSB2YWxpZAorICB0aHJlYWQtbG9jYWwgc3RvcmFnZSBrZXkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjIzNjogZGlzdHV0aWxzJyBta3BhdGggaWdub3JlZCB0aGUgbW9kZSBwYXJhbWV0ZXIuCisKKy0gRml4IHR5cG8gaW4gb25lIHNkaXN0IG9wdGlvbiAobWVkYXRhLWNoZWNrKS4KKworLSBJc3N1ZSAjOTE5OTogRml4IGluY29ycmVjdCB1c2Ugb2YgZGlzdHV0aWxzLmNtZC5Db21tYW5kLmFubm91bmNlLgorCistIElzc3VlICMxNzE4NTc0OiBGaXggb3B0aW9ucyB0aGF0IHdlcmUgc3VwcG9zZWQgdG8gYWNjZXB0IGFyZ3VtZW50cyBidXQgZGlkCisgIG5vdCBpbiBidWlsZF9jbGliLgorCistIElzc3VlICM5NDM3OiBGaXggYnVpbGRpbmcgQyBleHRlbnNpb25zIHdpdGggbm9uLWRlZmF1bHQgTERGTEFHUy4KKworLSBJc3N1ZSAjNDY2MTogZW1haWwgY2FuIG5vdyBwYXJzZSBieXRlcyBpbnB1dCBhbmQgZ2VuZXJhdGUgZWl0aGVyIGNvbnZlcnRlZAorICA3Yml0IG91dHB1dCBvciBieXRlcyBvdXRwdXQuICBFbWFpbCB2ZXJzaW9uIGJ1bXBlZCB0byA1LjEuMC4KKworLSBJc3N1ZSAjMTU4OTogQWRkIHNzbC5tYXRjaF9ob3N0bmFtZSgpLCB0byBoZWxwIGltcGxlbWVudCBzZXJ2ZXIgaWRlbnRpdHkKKyAgdmVyaWZpY2F0aW9uIGZvciBoaWdoZXItbGV2ZWwgcHJvdG9jb2xzLgorCistIElzc3VlICM5NzU5OiBHemlwRmlsZSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhbiBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkCisgIGFmdGVyIHRoZSBmaWxlIGlzIGNsb3NlZC4gIFBhdGNoIGJ5IEplZmZyZXkgRmlua2Vsc3RlaW4uCisKKy0gSXNzdWUgIzkwNDI6IEZpeCBpbnRlcmFjdGlvbiBvZiBjdXN0b20gdHJhbnNsYXRpb24gY2xhc3NlcyBhbmQgY2FjaGluZyBpbgorICBnZXR0ZXh0LgorCistIElzc3VlICM2NzA2OiBhc3luY29yZS5kaXNwYXRjaGVyIG5vdyBwcm92aWRlcyBhIGhhbmRsZV9hY2NlcHRlZCgpIG1ldGhvZAorICByZXR1cm5pbmcgYSAoc29jaywgYWRkcikgcGFpciB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KKyAgZXN0YWJsaXNoZWQgd2l0aCBhIG5ldyByZW1vdGUgZW5kcG9pbnQuICBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgYXMgYQorICByZXBsYWNlbWVudCBmb3Igb2xkIGhhbmRsZV9hY2NlcHQoKSBhbmQgYXZvaWRzIHRoZSB1c2VyIHRvIGNhbGwgYWNjZXB0KCkKKyAgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzkwNjU6IHRhcmZpbGUgbm8gbG9uZ2VyIHVzZXMgInJvb3QiIGFzIHRoZSBkZWZhdWx0IGZvciB0aGUgdW5hbWUgYW5kCisgIGduYW1lIGZpZWxkLgorCistIElzc3VlICM4OTgwOiBGaXhlZCBhIGZhaWx1cmUgaW4gZGlzdHV0aWxzLmNvbW1hbmQgY2hlY2sgdGhhdCB3YXMgc2hhZG93ZWQgYnkKKyAgYW4gZW52aXJvbm1lbnQgdGhhdCBkb2VzIG5vdCBoYXZlIGRvY3V0aWxzLiAgUGF0Y2ggYnkgQXJmcmV2ZXIuCisKKy0gSXNzdWUgIzEwNTAyNjg6IHBhcnNlYWRkciBub3cgY29ycmVjdGx5IHF1b3RlcyBkb3VibGUgcXVvdGUgYW5kIGJhY2tzbGFzaAorICBjaGFyYWN0ZXJzIHRoYXQgYXBwZWFyIGluc2lkZSBxdW90ZWQgc3RyaW5ncyBpbiBlbWFpbCBhZGRyZXNzZXMuCisKKy0gSXNzdWUgIzEwMDA0OiBxdW9wcmltaW1lIG5vIGxvbmdlciBnZW5lcmF0ZXMgYSB0cmFjZWJhY2sgd2hlbiBjb25mcm9udGVkIHdpdGgKKyAgaW52YWxpZCBjaGFyYWN0ZXJzIGFmdGVyICc9JyBpbiBhIFEtZW5jb2RlZCB3b3JkLgorCistIElzc3VlICMxNDkxOiBCYXNlSFRUUFNlcnZlciBub3dzIHNlbmQgYSBgYDEwMCBDb250aW51ZWBgIHJlc3BvbnNlIGJlZm9yZQorICBzZW5kaW5nIGEgMjAwIE9LIGZvciB0aGUgRXhwZWN0OiAxMDAtY29udGludWUgcmVxdWVzdCBoZWFkZXIuCisKKy0gSXNzdWUgIzkzNjA6IENsZWFudXAgYW5kIGltcHJvdmVtZW50cyB0byB0aGUgbm50cGxpYiBtb2R1bGUuICBUaGUgQVBJIG5vdworICBjb25mb3JtcyB0byB0aGUgcGhpbG9zb3BoeSBvZiBieXRlcyBhbmQgdW5pY29kZSBzZXBhcmF0aW9uIGluIFB5dGhvbiAzLiAgQQorICB0ZXN0IHN1aXRlIGhhcyBhbHNvIGJlZW4gYWRkZWQuCisKKy0gSXNzdWUgIzk5NjI6IEd6aXBGaWxlIG5vdyBoYXMgdGhlIHBlZWsoKSBtZXRob2QuCisKKy0gSXNzdWUgIzkwOTA6IFdoZW4gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQgZmFpbHMgd2l0aCBFV09VTERCTE9DSyBvciBFQUdBSU4sCisgIHJldHJ5IHRoZSBzZWxlY3QoKSBsb29wIGluc3RlYWQgb2YgYmFpbGluZyBvdXQuICBUaGlzIGlzIGJlY2F1c2Ugc2VsZWN0KCkgY2FuCisgIGluY29ycmVjdGx5IHJlcG9ydCBhIHNvY2tldCBhcyByZWFkeSBmb3IgcmVhZGluZyAoZm9yIGV4YW1wbGUsIGlmIGl0IHJlY2VpdmVkCisgIHNvbWUgZGF0YSB3aXRoIGFuIGludmFsaWQgY2hlY2tzdW0pLgorCistIElzc3VlICMzNjEyOiBBZGRlZCBuZXcgdHlwZXMgdG8gY3R5cGVzLndpbnR5cGVzLiAoQ0hBUiBhbmQgcG9pbnRlcnMpCisKKy0gSXNzdWUgIzk5NTA6IEZpeCBzb2NrZXQuc2VuZGFsbCgpIGNyYXNoIG9yIG1pc2JlaGF2aW91ciB3aGVuIGEgc2lnbmFsIGlzCisgIHJlY2VpdmVkLiAgTm93IHNlbmRhbGwoKSBwcm9wZXJseSBjYWxscyBzaWduYWwgaGFuZGxlcnMgaWYgbmVjZXNzYXJ5LCBhbmQKKyAgcmV0cmllcyBzZW5kaW5nIGlmIHRoZXNlIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgaW5jbHVkaW5nIG9uIHNvY2tldHMgd2l0aCBhCisgIHRpbWVvdXQuCisKKy0gSXNzdWUgIzk5NDc6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVnIGluIHN0b3BMaXN0ZW5pbmcuCisKKy0gSXNzdWUgIzk5NDU6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVncyBpbiBhZGRIYW5kbGVyL3JlbW92ZUhhbmRsZXIuCisKKy0gSXNzdWUgIzk5MzY6IEZpeGVkIGV4ZWN1dGFibGUgbGluZXMnIHNlYXJjaCBpbiB0aGUgdHJhY2UgbW9kdWxlLgorCistIElzc3VlICM5NzkwOiBSZXdvcmsgaW1wb3J0cyBuZWNlc3NhcnkgZm9yIHNhbWVmaWxlIGFuZCBzYW1lb3BlbmZpbGUKKyAgaW4gbnRwYXRoLgorCistIElzc3VlICM5OTI4OiBQcm9wZXJseSBpbml0aWFsaXplIHRoZSB0eXBlcyBleHBvcnRlZCBieSB0aGUgYnoyIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY3NTk1MTogQWxsb3cgR3ppcEZpbGUgdG8gd29yayB3aXRoIHVuc2Vla2FibGUgZmlsZSBvYmplY3RzLiAgUGF0Y2ggYnkKKyAgRmxvcmlhbiBGZXN0aS4KKworLSBMb2dnaW5nOiBBZGRlZCBRdWV1ZUxpc3RlbmVyIGNsYXNzIHRvIGZhY2lsaXRhdGUgbG9nZ2luZyB1c2FnZSBmb3IKKyAgcGVyZm9ybWFuY2UtY3JpdGljYWwgdGhyZWFkcy4KKworLSBJc3N1ZSAjOTkxNjogQWRkIHNvbWUgbWlzc2luZyBlcnJubyBzeW1ib2xzLgorCistIElzc3VlICM5ODc3OiBFeHBvc2Ugc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSgpCisKKy0gbG9nZ2luZzogQWRkZWQgaGFzSGFuZGxlcnMoKSBtZXRob2QgdG8gTG9nZ2VyIGFuZCBMb2dnZXJBZGFwdGVyLgorCistIElzc3VlICM5OTA4OiBGaXggb3Muc3RhdCgpIG9uIGJ5dGVzIHBhdGhzIHVuZGVyIFdpbmRvd3MgNy4KKworLSBJc3N1ZSAjMjY0MzogbXN5bmMoKSBpcyBub3QgY2FsbGVkIGFueW1vcmUgd2hlbiBkZWFsbG9jYXRpbmcgYW4gb3BlbiBtbWFwCisgIG9iamVjdCwgb25seSBtdW5tYXAoKS4KKworLSBsb2dnaW5nOiBDaGFuZ2VkIExvZ2dlckFkYXB0ZXIgaW1wbGVtZW50YXRpb24gaW50ZXJuYWxseSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8KKyAgc3ViY2xhc3MgaW4gYSB1c2VmdWwgd2F5LgorCistIGxvZ2dpbmc6IGhhc0hhbmRsZXJzIG1ldGhvZCB3YXMgYWRkZWQgdG8gTG9nZ2VyLCBhbmQgaXNFbmFibGVkRm9yLAorICBnZXRFZmZlY3RpdmVMZXZlbCwgaGFzSGFuZGxlcnMgYW5kIHNldExldmVsIHdlcmUgYWRkZWQgdG8gTG9nZ2VyQWRhcHRlci4KKyAgTG9nZ2VyQWRhcHRlciB3YXMgaW50cm9kdWNlZCBpbnRvIHRoZSB1bml0IHRlc3RzIGZvciBsb2dnaW5nLgorCistIElzc3VlICMxNjg2OiBGaXggc3RyaW5nLlRlbXBsYXRlIHdoZW4gb3ZlcnJpZGluZyB0aGUgcGF0dGVybiBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzk4NTQ6IFNvY2tldElPIG9iamVjdHMgbm93IG9ic2VydmUgdGhlIFJhd0lPQmFzZSBpbnRlcmZhY2UgaW4KKyAgbm9uLWJsb2NraW5nIG1vZGU6IHRoZXkgcmV0dXJuIE5vbmUgd2hlbiBhbiBvcGVyYXRpb24gd291bGQgYmxvY2sgKGluc3RlYWQgb2YKKyAgcmFpc2luZyBhbiBleGNlcHRpb24pLgorCistIElzc3VlICMxNzMwMTM2OiBGaXggdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBhIHRrLmZvbnQuRm9udCBhbmQgYW4gb2JqZWN0IG9mCisgIGFub3RoZXIga2luZC4KKworLSBJc3N1ZSAjOTQ0MTogbG9nZ2luZyBoYXMgYmV0dGVyIGNvdmVyYWdlIGZvciByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgorCistIElzc3VlICM5ODY1OiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgaGFzIGEgX19zaXplb2ZfXyBtZXRob2QuCisKKy0gSXNzdWUgIzk4NTQ6IFRoZSBkZWZhdWx0IHJlYWQoKSBpbXBsZW1lbnRhdGlvbiBpbiBpby5SYXdJT0Jhc2Ugbm93IGhhbmRsZXMKKyAgbm9uLWJsb2NraW5nIHJlYWRpbnRvKCkgcmV0dXJuaW5nIE5vbmUgY29ycmVjdGx5LgorCistIElzc3VlICMxNTUyOiBzb2NrZXQuc29ja2V0cGFpcigpIG5vdyByZXR1cm5zIHJlZ3VsYXIgc29ja2V0LnNvY2tldCBvYmplY3RzCisgIHN1cHBvcnRpbmcgdGhlIHdob2xlIHNvY2tldCBBUEkgKHJhdGhlciB0aGFuIHRoZSAicmF3IiBfc29ja2V0LnNvY2tldAorICBvYmplY3RzKS4KKworLSBJc3N1ZSAjOTg1MzogRml4IHRoZSBzaWduYXR1cmUgb2YgU1NMU29ja2V0LnJlY3Zmcm9tKCkgYW5kIFNTTFNvY2tldC5zZW5kdG8oKQorICB0byBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBzb2NrZXQgbWV0aG9kcy4KKworLSBJc3N1ZSAjOTg0MDogQWRkZWQgYSBkZWNvcmF0b3IgdG8gcmVwcmxpYiBmb3Igd3JhcHBpbmcgX19yZXByX18gbWV0aG9kcyB0byBtYWtlCisgIHRoZW0gaGFuZGxlIHJlY3Vyc2l2ZSBjYWxscyB3aXRoaW4gdGhlIHNhbWUgdGhyZWFkLgorCistIGxvZ2dpbmc6IEVuaGFuY2VkIEhUVFBIYW5kbGVyIHdpdGggc2VjdXJlIGFuZCBjcmVkZW50aWFscyBpbml0aWFsaXplcnMuCisKKy0gSXNzdWUgIzc2NzY0NTogU2V0IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgdG8gVHJ1ZSBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjOTgzNzogVGhlIHJlYWQoKSBtZXRob2Qgb2YgWmlwRXh0RmlsZSBvYmplY3RzIChhcyByZXR1cm5lZCBieQorICBaaXBGaWxlLm9wZW4oKSkgY291bGQgcmV0dXJuIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCisKKy0gSXNzdWUgIzk4MjY6IE9yZGVyZWREaWN0Ll9fcmVwcl9fIGNhbiBub3cgaGFuZGxlIHNlbGYtcmVmZXJlbnRpYWwgdmFsdWVzOgorICBkWyd4J10gPSBkLgorCistIElzc3VlICM5ODI1OiBVc2luZyBfX2RlbF9fIGluIHRoZSBkZWZpbml0aW9uIG9mIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG1hZGUKKyAgaXQgcG9zc2libGUgZm9yIHRoZSB1c2VyIHRvIGNyZWF0ZSBzZWxmLXJlZmVyZW5jaW5nIG9yZGVyZWQgZGljdGlvbmFyaWVzIHdoaWNoCisgIGJlY29tZSBwZXJtYW5lbnRseSB1bmNvbGxlY3RhYmxlIEdDIGdhcmJhZ2UuICBSZWluc3RhdGVkIHRoZSBQeXRob24gMy4xCisgIGFwcHJvYWNoIG9mIHVzaW5nIHdlYWtyZWYgcHJveGllcyBzbyB0aGF0IHJlZmVyZW5jZSBjeWNsZXMgbmV2ZXIgZ2V0IGNyZWF0ZWQKKyAgaW4gdGhlIGZpcnN0IHBsYWNlLgorCistIElzc3VlICM5NTc5LCAjOTU4MDogRml4IG9zLmNvbmZzdHIoKSBmb3IgdmFsdWUgbG9uZ2VyIHRoYW4gMjU1IGJ5dGVzIGFuZAorICBlbmNvZGUgdGhlIHZhbHVlIHdpdGggZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIChpbnN0ZWFkIG9mCisgIHV0Zi04IGluIHN0cmljdCBtb2RlKSAuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjMyOiBSZW1vdmUgc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIGZ1bmN0aW9uOiB1c2UgUFlUSE9ORlNFTkNPRElORworICBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYXQgUHl0aG9uIHN0YXJ0dXAuCisgIHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSBjcmVhdGVzIGluY29uc2lzdGVuY2llcyBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0bworICByZWVuY29kZSBhbGwgZmlsZW5hbWVzIGluIGFsbCBvYmplY3RzLgorCistIElzc3VlICM5NDEwOiBWYXJpb3VzIG9wdGltaXphdGlvbnMgdG8gdGhlIHBpY2tsZSBtb2R1bGUsIGxlYWRpbmcgdG8gc3BlZWR1cHMKKyAgdXAgdG8gNHggKGRlcGVuZGluZyBvbiB0aGUgYmVuY2htYXJrKS4gIE1vc3RseSBwb3J0ZWQgZnJvbSBVbmxhZGVuIFN3YWxsb3c7CisgIGluaXRpYWwgcGF0Y2ggYnkgQWxleGFuZHJlIFZhc3NhbG90dGkuCisKKy0gVGhlIHBwcmludCBtb2R1bGUgbm93IHN1cHBvcnRzIHByaW50aW5nIE9yZGVyZWREaWN0cyBpbiB0aGVpciBnaXZlbiBvcmRlcgorICAoZm9ybWVybHksIGl0IHdvdWxkIHNvcnQgdGhlIGtleXMpLgorCistIExvZ2dpbmc6IEFkZGVkIFF1ZXVlSGFuZGxlciBjbGFzcyB0byBmYWNpbGl0YXRlIGxvZ2dpbmcgdXNhZ2Ugd2l0aAorICBtdWx0aXByb2Nlc3NpbmcuCisKKy0gSXNzdWUgIzk3MDc6IFJld3JpdHRlbiByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhyZWFkaW5nLmxvY2FsIHdoaWNoIGlzCisgIGZyaWVuZGxpZXIgdG93YXJkcyByZWZlcmVuY2UgY3ljbGVzLiAgVGhpcyBjaGFuZ2UgaXMgbm90IG5vcm1hbGx5IHZpc2libGUKKyAgc2luY2UgYW4gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb24gKF90aHJlYWQuX2xvY2FsKSBpcyB1c2VkIGluc3RlYWQuCisKKy0gSXNzdWUgIzYzOTQ6IG9zLmdldHBwaWQoKSBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MuICBOb3RlIHRoYXQgaXQgd2lsbAorICBzdGlsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgcHJvY2VzcyBhZnRlciBpdCBoYXMgZXhpdGVkLiAgVGhpcyBwcm9jZXNzCisgIGlkIG1heSBldmVuIGhhdmUgYmVlbiByZXVzZWQgYnkgYW5vdGhlciB1bnJlbGF0ZWQgcHJvY2Vzcy4KKworLSBJc3N1ZSAjOTc5MjogSW4gY2FzZSBvZiBjb25uZWN0aW9uIGZhaWx1cmUsIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigpIHdvdWxkCisgIHN3YWxsb3cgdGhlIGV4Y2VwdGlvbiBhbmQgcmFpc2UgYSBuZXcgb25lLCBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBmZXRjaCB0aGUKKyAgb3JpZ2luYWwgZXJybm8sIG9yIHRvIGZpbHRlciB0aW1lb3V0IGVycm9ycy4gIE5vdyB0aGUgb3JpZ2luYWwgZXJyb3IgaXMKKyAgcmUtcmFpc2VkLgorCistIElzc3VlICM5NzU4OiBXaGVuIGZjbnRsLmlvY3RsKCkgd2FzIGNhbGxlZCB3aXRoIG11dGFibGVfZmxhZyBzZXQgdG8gVHJ1ZSwgYW5kCisgIHRoZSBwYXNzZWQgYnVmZmVyIHdhcyBleGFjdGx5IDEwMjQgYnl0ZXMgbG9uZywgdGhlIGJ1ZmZlciB3b3VsZG4ndCBiZSB1cGRhdGVkCisgIGJhY2sgYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIFVwZGF0ZXMgdG8gdGhlIHJhbmRvbSBtb2R1bGU6CisKKyAgKiBEb2N1bWVudCB3aGljaCBwYXJ0cyBvZiB0aGUgbW9kdWxlIGFyZSBndWFyYW50ZWVkIHRvIHN0YXkgdGhlIHNhbWUgYWNyb3NzCisgICAgdmVyc2lvbnMgYW5kIHdoaWNoIHBhcnRzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZS4KKworICAqIFVwZGF0ZSB0aGUgc2VlZCgpIG1ldGhvZCB0byB1c2UgYWxsIG9mIHRoZSBiaXRzIGluIGEgc3RyaW5nIGluc3RlYWQgb2YganVzdAorICAgIHRoZSBoYXNoIHZhbHVlLiAgVGhpcyBtYWtlcyBiZXR0ZXIgdXNlIG9mIHRoZSBzZWVkIHZhbHVlIGFuZCBhc3N1cmVzIHRoZQorICAgIHNlZWRpbmcgaXMgcGxhdGZvcm0gaW5kZXBlbmRlbnQuICBJc3N1ZSAjNzg4OS4KKworICAqIEltcHJvdmVkIHRoZSByYW5kb20oKS0tPmludGVnZXIgYWxnb3JpdGhtIHVzZWQgaW4gY2hvaWNlKCksIHNodWZmbGUoKSwKKyAgICBzYW1wbGUoKSwgcmFuZHJhbmdlKCksIGFuZCByYW5kaW50KCkuICBGb3JtZXJseSwgaXQgdXNlZCBpbnQobipyYW5kb20oKSkKKyAgICB3aGljaCBoYXMgYSBzbGlnaHQgYmlhcyB3aGVuZXZlciBuIGlzIG5vdCBhIHBvd2VyIG9mIHR3by4gIElzc3VlICM5MDI1LgorCisgICogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBvZiBhcmd1bWVudHMgdG8gcmFuZHJhbmdlKCkuICBJc3N1ZSAjOTM3OS4KKworLSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgc3VwcG9ydHMgYSBuZXcgbWV0aG9kIGZvciByZXBvc2l0aW9uaW5nIGtleXMgdG8KKyAgZWl0aGVyIGVuZC4KKworLSBJc3N1ZSAjOTc1NDogU2ltaWxhcmx5IHRvIGFzc2VydFJhaXNlcyBhbmQgYXNzZXJ0UmFpc2VzUmVnZXhwLCB1bml0dGVzdCB0ZXN0CisgIGNhc2VzIG5vdyBhbHNvIGhhdmUgYXNzZXJ0V2FybnMgYW5kIGFzc2VydFdhcm5zUmVnZXhwIG1ldGhvZHMgdG8gY2hlY2sgdGhhdCBhCisgIGdpdmVuIHdhcm5pbmcgdHlwZSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCisKKy0gSXNzdWUgIzU1MDY6IEJ5dGVzSU8gb2JqZWN0cyBub3cgaGF2ZSBhIGdldGJ1ZmZlcigpIG1ldGhvZCBleHBvcnRpbmcgYSB2aWV3IG9mCisgIHRoZWlyIGNvbnRlbnRzIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlbS4gIFRoZSB2aWV3IGlzIGJvdGggcmVhZGFibGUgYW5kCisgIHdyaXRhYmxlLgorCistIElzc3VlICM3NTY2OiBJbXBsZW1lbnQgb3MucGF0aC5zYW1lb3BlbmZpbGUgZm9yIFdpbmRvd3MuCisKKy0gSXNzdWUgIzkyOTM6IEkvTyBzdHJlYW1zIG5vdyByYWlzZSBgYGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uYGAgd2hlbiBhbgorICB1bnN1cHBvcnRlZCBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkIChmb3IgZXhhbXBsZSwgd3JpdGluZyB0byBhIGZpbGUgb3BlbiBvbmx5CisgIGZvciByZWFkaW5nKS4KKworLSBoYXNobGliIGhhcyB0d28gbmV3IGNvbnN0YW50IGF0dHJpYnV0ZXM6IGFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQKKyAgYWxnb3JpdGhtc19hdmFpYWJsZSB0aGF0IHJlc3BlY3RpdmVseSBsaXN0IHRoZSBuYW1lcyBvZiBoYXNoIGFsZ29yaXRobXMKKyAgZ3VhcmFudGVlZCB0byBleGlzdCBpbiBhbGwgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBhbmQgdGhlIG5hbWVzIG9mIGhhc2gKKyAgYWxnb3JpdGhtcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy4KKworLSBBIG5ldyBwYWNrYWdlIGBgY29uY3VycmVudC5mdXR1cmVzYGAgYXMgZGVmaW5lZCBieSBQRVAgMzE0OC4KKworQy1BUEkKKy0tLS0tCisKKy0gQWRkIFB5RXJyX1N5bnRheExvY2F0aW9uRXgsIHdoaWNoIHN1cHBvcnRzIHBhc3NpbmcgYSBjb2x1bW4gb2Zmc2V0LgorCistIElzc3VlICM5ODM0OiBEb24ndCBzZWdmYXVsdCBpbiBQeVNlcXVlbmNlX0dldFNsaWNlLCBQeVNlcXVlbmNlX1NldFNsaWNlLCBvcgorICBQeVNlcXVlbmNlX0RlbFNsaWNlIHdoZW4gdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYW55IG1hcHBpbmcgb3BlcmF0aW9ucworICBkZWZpbmVkLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTE4ODogVGhlIGdkYiBleHRlbnNpb24gbm93IGhhbmRsZXMgY29ycmVjdGx5IG5hcnJvdyAoVUNTMikgYXMgd2VsbCBhcworICB3aWRlIChVQ1M0KSB1bmljb2RlIGJ1aWxkcyBmb3IgYm90aCB0aGUgaG9zdCBpbnRlcnByZXRlciAoZW1iZWRkZWQgaW5zaWRlIGdkYikKKyAgYW5kIHRoZSBpbnRlcnByZXRlciB1bmRlciB0ZXN0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTMwODogQWRkZWQgdGVzdHMgZm9yIGltcG9ydGluZyBlbmNvZGVkIG1vZHVsZXMgdGhhdCBkbyBub3QKKyAgZGVwZW5kIG9uIHNwZWNpZmljIHN0ZGxpYiBtb2R1bGVzIGJlaW5nIGVuY29kZWQgaW4gYSBjZXJ0YWluIHdheS4KKworLSBJc3N1ZSAjMTA1MTogQWRkIGEgc2NyaXB0IChMaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weSkgdG8gZ2VuZXJhdGUgdGhlIGN1c3RvbQorICBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgZmlsZXMgdXNlZCBieSBTU0wtcmVsYXRlZCBjZXJ0cy4KKworLSBJc3N1ZSAjOTk3ODogV2FpdCB1bnRpbCBzdWJwcm9jZXNzIGNvbXBsZXRlcyBpbml0aWFsaXphdGlvbi4gKFdpbjMyS2lsbFRlc3RzCisgIGluIHRlc3Rfb3MpCisKKy0gSXNzdWUgIzcxMTA6IHJlZ3J0ZXN0IG5vdyBzZW5kcyB0ZXN0IGZhaWx1cmUgcmVwb3J0cyBhbmQgc2luZ2xlLWZhaWx1cmUKKyAgdHJhY2ViYWNrcyB0byBzdGRlcnIgcmF0aGVyIHRoYW4gc3Rkb3V0LgorCistIElzc3VlICM5NjI4OiBmaXggcnVudGVzdHMuc2ggLXggb3B0aW9uIHNvIG1vcmUgdGhhbiBvbmUgdGVzdCBjYW4gYmUgZXhjbHVkZWQuCisKKy0gSXNzdWUgIzk4OTk6IEZpeCB0ZXN0X3RraW50ZXIudGVzdF9mb250IG9uIHZhcmlvdXMgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgTmVkCisgIERlaWx5LgorCistIElzc3VlICM5ODk0OiBEbyBub3QgaGFyZGNvZGUgRU5PRU5UIGluIHRlc3Rfc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjOTMxNTogQWRkZWQgdGVzdHMgZm9yIHRoZSB0cmFjZSBtb2R1bGUuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgorCistIElzc3VlICM5MzIzOiBNYWtlIHRlc3QucmVncnRlc3QuX19maWxlX18gYWJzb2x1dGUsIHRoaXMgd2FzIG5vdCBhbHdheXMgdGhlCisgIGNhc2Ugd2hlbiBydW5uaW5nIHByb2ZpbGUgb3IgdHJhY2UsIGZvciBleGFtcGxlLgorCistIElzc3VlICM5NTY4OiBGaXggdGVzdF91cmxsaWIyX2xvY2FsbmV0IG9uIE9TIFggMTAuMy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwMDYyOiBBbGxvdyBidWlsZGluZyBvbiBwbGF0Zm9ybXMgd2hpY2ggZG8gbm90IGhhdmUgc2VtX3RpbWVkd2FpdC4KKworLSBJc3N1ZSAjMTAwNTQ6IFNvbWUgcGxhdGZvcm1zIHByb3ZpZGUgdWludHB0cl90IGluIGludHR5cGVzLmguICBQYXRjaCBieSBBa2lyYQorICBLaXRhZGEuCisKKy0gSXNzdWUgIzEwMDU1OiBNYWtlIGpzb24gQzg5LWNvbXBsaWFudCBpbiBVQ1M0IG1vZGUuCisKKy0gSXNzdWUgIzk1NTI6IEF2b2lkIHVubmVjZXNzYXJ5IHJlYnVpbGQgb2YgT3BlblNTTC4gKFdpbmRvd3MpCisKKy0gSXNzdWUgIzE2MzM4NjM6IERvbid0IGlnbm9yZSAkQ0MgdW5kZXIgQUlYLgorCistIElzc3VlICM5ODEwOiBDb21waWxlIGJ6aXAyIHNvdXJjZSBmaWxlcyBpbiBQeXRob24ncyBwcm9qZWN0IGZpbGUgZGlyZWN0bHkuIEl0CisgIHVzZWQgdG8gYmUgYnVpbHQgd2l0aCBiemlwMidzIG1ha2VmaWxlLgorCistIElzc3VlICM5ODQ4OiBTdG9wcGluZyB0cnlpbmcgdG8gYnVpbGQgX3dlYWtyZWYgaW4gc2V0dXAucHkgYXMgaXQgaXMgYSBidWlsdC1pbgorICBtb2R1bGUuCisKKy0gSXNzdWUgIzk4MDY6IHB5dGhvbi1jb25maWcgbm93IGhhcyBhbiBgYC0tZXh0ZW5zaW9uLXN1ZmZpeGBgIG9wdGlvbiB0aGF0CisgIG91dHB1dHMgdGhlIHN1ZmZpeCBmb3IgZHluYW1pYyBsaWJyYXJpZXMgaW5jbHVkaW5nIHRoZSBBQkkgdmVyc2lvbiBuYW1lCisgIGRlZmluZWQgYnkgUEVQIDMxNDkuCisKKy0gSXNzdWUgIzk0MTM0NjogSW1wcm92ZSB0aGUgYnVpbGQgcHJvY2VzcyB1bmRlciBBSVggYW5kIGFsbG93IFB5dGhvbiB0byBiZQorICBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCisKKy0gSXNzdWUgIzQwMjY6IE1ha2UgdGhlIGZjbnRsIGV4dGVuc2lvbiBidWlsZCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuCisgIFNhYmzDqS4KKworLSBJc3N1ZSAjOTcwMTogVGhlIE1hY09TWCBpbnN0YWxsZXIgY2FuIHBhdGNoIHRoZSBzaGVsbCBwcm9maWxlIHRvIGVuc3VyZSB0aGF0CisgIHRoZSAiYmluIiBkaXJlY3RvcnkgaW5zaWRlIHRoZSBmcmFtZXdvcmsgaXMgb24gdGhlIHNoZWxsJ3Mgc2VhcmNoIHBhdGguIFRoaXMKKyAgZmVhdHVyZSBub3cgYWxzbyBzdXBwb3J0cyB0aGUgWlNIIHNoZWxsLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA1LVNlcC0yMDEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTIyNTogUmVtb3ZlIHRoZSBST1RfRk9VUiBhbmQgRFVQX1RPUFggb3Bjb2RlLCB0aGUgbGF0dGVyIHJlcGxhY2VkIGJ5CisgIHRoZSBuZXcgKGFuZCBzaW1wbGVyKSBEVVBfVE9QX1RXTy4gIFBlcmZvcm1hbmNlIGlzbid0IGNoYW5nZWQsIGJ1dCBvdXIKKyAgYnl0ZWNvZGUgaXMgYSBiaXQgc2ltcGxpZmllZC4gIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICM5NzY2OiBSZW5hbWUgcG9vcmx5IG5hbWVkIHZhcmlhYmxlcyBleHBvc2VkIGJ5IF93YXJuaW5ncyB0byBwcmV2ZW50CisgIGNvbmZ1c2lvbiB3aXRoIHRoZSBwcm9wZXIgdmFyaWFibGVzIG5hbWVzIGZyb20gJ3dhcm5pbmdzJyBpdHNlbGYuCisKKy0gSXNzdWUgIzkyMTI6IGRpY3Rfa2V5cyBhbmQgZGljdF9pdGVtcyBub3cgcHJvdmlkZSB0aGUgaXNkaXNqb2ludCgpIG1ldGhvZCwgdG8KKyAgY29uZm9ybSB0byB0aGUgU2V0IEFCQy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KKworLSBJc3N1ZSAjOTczNzogRml4IGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgc2xpY2Ugb3IgYW4gaXRlbSBmcm9tIGEKKyAgbWVtb3J5dmlldyBvYmplY3QuCisKKy0gSXNzdWUgIzk1NDk6IHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoKSBhbmQgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZygpIGFyZQorICBub3cgcmVtb3ZlZCwgc2luY2UgdGhlaXIgZWZmZWN0IHdhcyBpbmV4aXN0ZW50IGluIDMueCAodGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMKKyAgaGFyZGNvZGVkIHRvIHV0Zi04IGFuZCBjYW5ub3QgYmUgY2hhbmdlZCkuCisKKy0gSXNzdWUgIzc0MTU6IFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgpIG5vdyB1c2VzIHRoZSBuZXcgYnVmZmVyIEFQSQorICBwcm9wZXJseS4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzU1NTM6IFRoZSBQeV9MT0NBTF9JTkxJTkUgbWFjcm8gbm93IHJlc3VsdHMgaW4gaW5saW5pbmcgb24gbW9zdAorICBwbGF0Zm9ybXMuICBQcmV2aW91c2x5LCBpdCBpbmxpbmVkIG9ubHkgd2hlbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMuCisKKy0gSXNzdWUgIzk3MTI6IEZpeCB0b2tlbml6ZSBvbiBpZGVudGlmaWVycyB0aGF0IHN0YXJ0IHdpdGggbm9uLWFzY2lpIG5hbWVzLgorCistIElzc3VlICM5Njg4OiBfX2Jhc2ljc2l6ZV9fIGFuZCBfX2l0ZW1zaXplX18gbXVzdCBiZSBhY2Nlc3NlZCBhcyBQeV9zc2l6ZV90LgorCistIElzc3VlICM5Njg0OiBBZGRlZCBhIGRlZmluaXRpb24gZm9yIFNJWkVPRl9XQ0hBUl9UIHRvIFBDL3B5Y29uZmlnLmgsIHRvIG1hdGNoCisgIHRoZSBweWNvbmZpZy5oIGdlbmVyYXRlZCBieSBjb25maWd1cmUgb24gb3RoZXIgc3lzdGVtcy4KKworLSBJc3N1ZSAjOTY2NjogT25seSBjYXRjaCBBdHRyaWJ1dGVFcnJvciBpbiBoYXNhdHRyKCkuIEFsbCBvdGhlciBleGNlcHRpb25zIHRoYXQKKyAgb2NjdXIgZHVyaW5nIGF0dHJpYnV0ZSBsb29rdXAgYXJlIG5vdyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuCisKKy0gSXNzdWUgIzg2MjI6IEFkZCBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJyaWRlIHRoZQorICBmaWxlc3lzdGVtIGVuY29kaW5nLgorCistIElzc3VlICM1MTI3OiBUaGUgQyBmdW5jdGlvbnMgdGhhdCBhY2Nlc3MgdGhlIFVuaWNvZGUgRGF0YWJhc2Ugbm93IGFjY2VwdCBhbmQKKyAgcmV0dXJuIGNoYXJhY3RlcnMgZnJvbSB0aGUgZnVsbCBVbmljb2RlIHJhbmdlLCBldmVuIG9uIG5hcnJvdyB1bmljb2RlIGJ1aWxkcworICAoUHlfVU5JQ09ERV9UT0xPV0VSLCBQeV9VTklDT0RFX0lTREVDSU1BTCwgYW5kIG90aGVycykuICBBIHZpc2libGUgZGlmZmVyZW5jZQorICBpbiBQeXRob24gaXMgdGhhdCB1bmljb2RlZGF0YS5udW1lcmljKCkgbm93IHJldHVybnMgdGhlIGNvcnJlY3QgdmFsdWUgZm9yCisgIGxhcmdlIGNvZGUgcG9pbnRzLCBhbmQgcmVwcigpIG1heSBjb25zaWRlciBtb3JlIGNoYXJhY3RlcnMgYXMgcHJpbnRhYmxlLgorCistIElzc3VlICM5NDI1OiBDcmVhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoKSBmdW5jdGlvbiB0byBnZXQgdGhlIGZpbGVuYW1lCisgIGFzIGEgdW5pY29kZSBvYmplY3QsIGluc3RlYWQgb2YgYSBieXRlIHN0cmluZy4gRnVuY3Rpb24gbmVlZGVkIHRvIHN1cHBvcnQKKyAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLiBEZXByZWNhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWUoKSBpbiBmYXZvciBvbiB0aGUgbmV3CisgIGZ1bmN0aW9uLgorCistIElzc3VlICM4MDYzOiBDYWxsIF9QeUdJTFN0YXRlX0luaXQoKSBlYXJsaWVyIGluIFB5X0luaXRpYWxpemVFeCgpLgorCistIElzc3VlICM5NjEyOiBUaGUgc2V0IG9iamVjdCBpcyBub3cgNjQtYml0IGNsZWFuIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzgyMDI6IHN5cy5hcmd2WzBdIGlzIG5vdyBzZXQgdG8gJy1tJyBpbnN0ZWFkIG9mICctYycgd2hlbiBzZWFyY2hpbmcgZm9yCisgIHRoZSBtb2R1bGUgZmlsZSB0byBiZSBleGVjdXRlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgb3B0aW9uLgorCistIElzc3VlICM5NTk5OiBDcmVhdGUgUHlTeXNfRm9ybWF0U3Rkb3V0KCkgYW5kIFB5U3lzX0Zvcm1hdFN0ZGVycigpIGZ1bmN0aW9ucyB0bworICB3cml0ZSBhIG1lc3NhZ2UgZm9ybWF0dGVkIGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIHRvIHN5cy5zdGRvdXQgYW5kCisgIHN5cy5zdGRlcnIuCisKKy0gSXNzdWUgIzk1NDI6IENyZWF0ZSBQeVVuaWNvZGVfRlNEZWNvZGVyKCkgZnVuY3Rpb24sIGEgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6CisgIGRlY29kZSBieXRlcyBvYmplY3RzIHRvIHVuaWNvZGUgdXNpbmcgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKTsgc3RyCisgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KKworLSBJc3N1ZSAjOTIwMzogQ29tcHV0ZWQgZ290b3MgYXJlIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gc3VwcG9ydGVkIGNvbXBpbGVycworICAod2hpY2ggYXJlIGRldGVjdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0KS4gIFRoZXkgY2FuIHN0aWxsIGJlIGRpc2FibGUKKyAgc2VsZWN0aXZlbHkgYnkgc3BlY2lmeWluZyAtLXdpdGhvdXQtY29tcHV0ZWQtZ290b3MuCisKKy0gSXNzdWUgIzk0MjU6IENyZWF0ZSBQeUVycl9XYXJuRm9ybWF0KCkgZnVuY3Rpb24sIHNpbWlsYXIgdG8gUHlFcnJfV2FybkV4KCkgYnV0CisgIHVzZSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSB0byBmb3JtYXQgdGhlIHdhcm5pbmcgbWVzc2FnZS4KKworLSBJc3N1ZSAjODUzMDogUHJldmVudCBzdHJpbmdsaWIgZmFzdHNlYXJjaCBmcm9tIHJlYWRpbmcgYmV5b25kIHRoZSBmcm9udCBvZiBhbgorICBhcnJheS4KKworLSBJc3N1ZSAjNTMxOTogUHJpbnQgYW4gZXJyb3IgaWYgZmx1c2hpbmcgc3Rkb3V0IGZhaWxzIGF0IGludGVycHJldGVyIHNodXRkb3duLgorCistIElzc3VlICM5MzM3OiBUaGUgc3RyKCkgb2YgYSBmbG9hdCBvciBjb21wbGV4IG51bWJlciBpcyBub3cgaWRlbnRpY2FsIHRvIGl0cworICByZXByKCkuCisKKy0gSXNzdWUgIzk0MTY6IEZpeCBzb21lIGlzc3VlcyB3aXRoIGNvbXBsZXggZm9ybWF0dGluZyB3aGVyZSB0aGUgb3V0cHV0IHdpdGggbm8KKyAgdHlwZSBzcGVjaWZpZXIgZmFpbGVkIHRvIG1hdGNoIHRoZSBzdHIgb3V0cHV0OgorCisgICAgLSBmb3JtYXQoY29tcGxleCgtMC4wLCAyLjApLCAnLScpIG9taXR0ZWQgdGhlIHJlYWwgcGFydCBmcm9tIHRoZSBvdXRwdXQsCisgICAgLSBmb3JtYXQoY29tcGxleCgwLjAsIDIuMCksICctJykgaW5jbHVkZWQgYSBzaWduIGFuZCBwYXJlbnRoZXNlcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzgwMTM6IHRpbWUuYXNjdGltZSBhbmQgdGltZS5jdGltZSBubyBsb25nZXIgY2FsbCBzeXN0ZW0KKyAgYXNjdGltZSBhbmQgY3RpbWUgZnVuY3Rpb25zLiAgVGhlIHllYXIgcmFuZ2UgZm9yIHRpbWUuYXNjdGltZSBpcyBub3cKKyAgMTkwMCB0aHJvdWdoIG1heGludC4gIFRoZSByYW5nZSBmb3IgdGltZS5jdGltZSBpcyB0aGUgc2FtZSBhcyBmb3IKKyAgdGltZS5sb2NhbHRpbWUuICBUaGUgc3RyaW5nIHByb2R1Y2VkIGJ5IHRoZXNlIGZ1bmN0aW9ucyBpcyBsb25nZXIKKyAgdGhhbiAyNCBjaGFyYWN0ZXJzIHdoZW4geWVhciBpcyBncmVhdGVyIHRoYW4gOTk5OS4KKworLSBJc3N1ZSAjNjYwODogdGltZS5hc2N0aW1lIGlzIG5vdyBjaGVja2luZyBzdHJ1Y3QgdG0gZmllbGRzIGl0cyBpbnB1dAorICBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgc3lzdGVtIGFzY3RpbWUuICBQYXRjaCBieSBNdW5TaWMgSmVvbmcuCisKKy0gSXNzdWUgIzg3MzQ6IEF2b2lkIGNyYXNoIGluIG1zdmNydC5nZXRfb3NmaGFuZGxlKCkgd2hlbiBhbiBpbnZhbGlkIGZpbGUKKyAgZGVzY3JpcHRvciBpcyBwcm92aWRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCistIElzc3VlICM3NzM2OiBSZWxlYXNlIHRoZSBHSUwgYXJvdW5kIGNhbGxzIHRvIG9wZW5kaXIoKSBhbmQgY2xvc2VkaXIoKSBpbiB0aGUKKyAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjNDgzNTogbWFrZSBQeUxvbmdfRnJvbVNvY2tldF90KCkgYW5kIFB5TG9uZ19Bc1NvY2tldF90KCkgcHJpdmF0ZSB0byB0aGUKKyAgc29ja2V0IG1vZHVsZSwgYW5kIGZpeCB0aGUgd2lkdGggb2Ygc29ja2V0IGRlc2NyaXB0b3JzIHRvIGJlIGNvcnJlY3RseQorICBkZXRlY3RlZCB1bmRlciA2NC1iaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMTAyNzIwNjogU3VwcG9ydCBJRE5BIGluIGdldGhvc3RieW5hbWUsIGdldGhvc3RieW5hbWVfZXgsIGdldGFkZHJpbmZvCisgIGFuZCBnZXRob3N0YnlhZGRyLiAgZ2V0bmFtZWluZm8gaXMgbm93IHJlc3RyaWN0ZWQgdG8gbnVtZXJpYyBhZGRyZXNzZXMgYXMKKyAgaW5wdXQuCisKKy0gSXNzdWUgIzkyMTQ6IFNldCBvcGVyYXRpb25zIG9uIGEgS2V5c1ZpZXcgb3IgSXRlbXNWaWV3IGluIGNvbGxlY3Rpb25zIG5vdworICBjb3JyZWN0bHkgcmV0dXJuIGEgc2V0LiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjNTczNzogQWRkIFNvbGFyaXMtc3BlY2lmaWMgbW5lbW9uaWNzIGluIHRoZSBlcnJubyBtb2R1bGUuICBQYXRjaCBieQorICBNYXR0aGV3IEFocmVucy4KKworLSBSZXN0b3JlIEdJTCBpbiBuaXNfY2F0IGluIGNhc2Ugb2YgZXJyb3IuIERlY29kZSBOSVMgZGF0YSB0byBmcyBlbmNvZGluZywgdXNpbmcKKyAgdGhlIHN1cnJvZ2F0ZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM2NjU3NjE6IGBgZnVuY3Rvb2xzLnJlZHVjZSgpYGAgd2lsbCBubyBsb25nZXIgbWFzayBleGNlcHRpb25zIG90aGVyCisgIHRoYW4gYGBUeXBlRXJyb3JgYCByYWlzZWQgYnkgdGhlIGl0ZXJhdG9yIGFyZ3VtZW50LgorCistIElzc3VlICM5NTcwOiBVc2UgUEVQIDM4MyBkZWNvZGluZyBpbiBvcy5ta25vZCBhbmQgb3MubWtmaWZvLgorCistIElzc3VlICM2OTE1OiBVbmRlciBXaW5kb3dzLCBvcy5saXN0ZGlyKCkgZGlkbid0IHJlbGVhc2UgdGhlIEdsb2JhbCBJbnRlcnByZXRlcgorICBMb2NrIGFyb3VuZCBhbGwgc3lzdGVtIGNhbGxzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUnlhbiBLZWxseS4KKworLSBJc3N1ZSAjODUyNDogQWRkIGEgZGV0YWNoKCkgbWV0aG9kIHRvIHNvY2tldCBvYmplY3RzLCBzbyBhcyB0byBwdXQgdGhlIHNvY2tldAorICBpbnRvIHRoZSBjbG9zZWQgc3RhdGUgd2l0aG91dCBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjNDc3ODYzOiBFbWl0IGEgUmVzb3VyY2VXYXJuaW5nIGF0IHNodXRkb3duIGlmIGdjLmdhcmJhZ2UgaXMgbm90IGVtcHR5LgorCistIElzc3VlICM2ODY5OiBGaXggYSByZWZjb3VudCBwcm9ibGVtIGluIHRoZSBfY3R5cGVzIGV4dGVuc2lvbi4KKworLSBJc3N1ZSAjNTUwNDogY3R5cGVzIHNob3VsZCBub3cgd29yayB3aXRoIHN5c3RlbXMgd2hlcmUgbW1hcCBjYW4ndCBiZQorICBQUk9UX1dSSVRFIGFuZCBQUk9UX0VYRUMuCisKKy0gSXNzdWUgIzk1MDc6IE5hbWVkIHR1cGxlIHJlcHIgd2lsbCBub3cgYXV0b21hdGljYWxseSBkaXNwbGF5IHRoZSByaWdodCBuYW1lIGluCisgIGEgdHVwbGUgc3ViY2xhc3MuCisKKy0gSXNzdWUgIzkzMjQ6IEFkZCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byBzaWduYWwuc2lnbmFsIG9uIFdpbmRvd3MgaW4gb3JkZXIgdG8KKyAgcHJldmVudCBjcmFzaGVzLgorCistIElzc3VlICM5NTI2OiBSZW1vdmUgc29tZSBvdXRkYXRlZCAoaW50KSBjYXN0cyB0aGF0IHdlcmUgcHJldmVudGluZyB0aGUgYXJyYXkKKyAgbW9kdWxlIGZyb20gd29ya2luZyBjb3JyZWN0bHkgd2l0aCBhcnJheXMgb2YgbW9yZSB0aGFuIDIqKjMxIGVsZW1lbnRzLgorCistIEZpeCBtZW1vcnkgbGVhayBpbiBzc2wuX3NzbC5fdGVzdF9kZWNvZGVfY2VydC4KKworLSBJc3N1ZSAjODA2NTogRml4IG1lbW9yeSBsZWFrIGluIHJlYWRsaW5lIG1vZHVsZSAoZnJvbSBmYWlsdXJlIHRvIGZyZWUgdGhlCisgIHJlc3VsdCBvZiBoaXN0b3J5X2dldF9oaXN0b3J5X3N0YXRlKCkpLgorCistIElzc3VlICM5NDUwOiBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUucmVwbGFjZV9oaXN0b3J5X2l0ZW0gYW5kCisgIHJlYWRsaW5lLnJlbW92ZV9oaXN0b3J5X2l0ZW0gZm9yIHJlYWRsaW5lIHZlcnNpb24gPj0gNS4wLgorCistIElzc3VlICM4MTA1OiBWYWxpZGF0ZSBmaWxlIGRlc2NyaXB0b3IgcGFzc2VkIHRvIG1tYXAubW1hcCBvbiBXaW5kb3dzLgorCistIElzc3VlICM4MDQ2OiBBZGQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHN1cHBvcnQgYW5kIC5jbG9zZWQgcHJvcGVydHkgdG8gbW1hcAorICBvYmplY3RzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzc0NTE6IEltcHJvdmUgZGVjb2RpbmcgcGVyZm9ybWFuY2Ugb2YgSlNPTiBvYmplY3RzLCBhbmQgcmVkdWNlIHRoZQorICBtZW1vcnkgY29uc3VtcHRpb24gb2Ygc2FpZCBkZWNvZGVkIG9iamVjdHMgd2hlbiB0aGV5IHVzZSB0aGUgc2FtZSBzdHJpbmdzIGFzCisgIGtleXMuCisKKy0gSXNzdWUgIzExMDA1NjI6IEZpeCBkZWVwLWNvcHlpbmcgb2Ygb2JqZWN0cyBkZXJpdmVkIGZyb20gdGhlIGxpc3QgYW5kIGRpY3QKKyAgdHlwZXMuICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5IGFuZCBCasO2cm4gTGluZHF2aXN0LgorCistIElzc3VlICM5NzUzOiBGaXhlZCBzb2NrZXQuZHVwLCB3aGljaCBkaWQgbm90IGFsd2F5cyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLgorCistIElzc3VlICM5NDIxOiBNYWRlIHRoZSBnZXQ8dHlwZT4gbWV0aG9kcyBjb25zaXN0ZW50bHkgYWNjZXB0IHRoZSB2YXJzIGFuZAorICBkZWZhdWx0IGFyZ3VtZW50cyBvbiBhbGwgcGFyc2VyIGNsYXNzZXMuCisKKy0gSXNzdWUgIzcwMDU6IEZpeGVkIG91dHB1dCBvZiBOb25lIHZhbHVlcyBmb3IgUmF3Q29uZmlnUGFyc2VyLndyaXRlIGFuZAorICBDb25maWdQYXJzZXIud3JpdGUuCisKKy0gSXNzdWUgIzg5OTA6IGFycmF5LmZyb21zdHJpbmcoKSBhbmQgYXJyYXkudG9zdHJpbmcoKSBnZXQgcmVuYW1lZCB0bworICBmcm9tYnl0ZXMoKSBhbmQgdG9ieXRlcygpLCByZXNwZWN0aXZlbHksIHRvIGF2b2lkIGNvbmZ1c2lvbi4gIEZ1cnRoZXJtb3JlLAorICBhcnJheS5mcm9tYnl0ZXMoKSwgYXJyYXkuZXh0ZW5kKCkgYXMgd2VsbCBhcyB0aGUgYXJyYXkuYXJyYXkoKSBjb25zdHJ1Y3RvciBub3cKKyAgYWNjZXB0IGJ5dGVhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkgVGhvbWFzIEpvbGxhbnMuCisKKy0gSXNzdWUgIzgwODE2NDogRml4ZWQgc29ja2V0LmNsb3NlIHRvIGF2b2lkIHJlZmVyZW5jZXMgdG8gZ2xvYmFscywgdG8gYXZvaWQKKyAgaXNzdWVzIHdoZW4gc29ja2V0LmNsb3NlIGlzIGNhbGxlZCBmcm9tIGEgX19kZWxfXyBtZXRob2QuCisKKy0gSXNzdWUgIzk3MDY6IHNzbCBtb2R1bGUgcHJvdmlkZXMgYSBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcgaW4gdmFyaW91cworICBjaXJjdW1zdGFuY2VzLgorCistIElzc3VlICMxODY4OiBFbGltaW5hdGUgc3VidGxlIHRpbWluZyBpc3N1ZXMgaW4gdGhyZWFkLWxvY2FsIG9iamVjdHMgYnkgZ2V0dGluZworICByaWQgb2YgdGhlIGNhY2hlZCBjb3B5IG9mIHRocmVhZC1sb2NhbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4KKworLSBJc3N1ZSAjMTUxMjc5MTogSW4gc2V0ZnJhbWVyYXRlKCkgaW4gdGhlIHdhdmUgbW9kdWxlLCBub24taW50ZWdyYWwgZnJhbWUgcmF0ZXMKKyAgYXJlIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlci4KKworLSBJc3N1ZSAjODc5NzogdXJsbGliMiBkb2VzIGEgcmV0cnkgZm9yIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGZhaWx1cmUgaW5zdGVhZCBvZgorICBmYWxsaW5nIGludG8gcmVjdXJzaW9uLgorCistIElzc3VlICMxMTk0MjIyOiBlbWFpbC51dGlscy5wYXJzZWRhdGUgbm93IHJldHVybnMgUkZDMjgyMiBjb21wbGlhbnQgZm91cgorICBjaGFyYWN0ZXIgeWVhcnMgZXZlbiBpZiB0aGUgbWVzc2FnZSBjb250YWlucyBSRkM4MjIgdHdvIGNoYXJhY3RlciB5ZWFycy4KKworLSBJc3N1ZSAjODc1MDogRml4ZWQgTXV0YWJsZVNldCdzIG1ldGhvZHMgdG8gY29ycmVjdGx5IGhhbmRsZSByZWZsZXhpdmUKKyAgb3BlcmF0aW9ucyBvbiBpdHMgc2VsZiwgbmFtZWx5IHggLT0geCBhbmQgeCBePSB4LgorCistIElzc3VlICM5MTI5OiBzbXRwZC5weSBpcyB2dWxuZXJhYmxlIHRvIERvUyBhdHRhY2tzIGRlcml2aW5nIGZyb20gbWlzc2luZyBlcnJvcgorICBoYW5kbGluZyB3aGVuIGFjY2VwdGluZyBhIG5ldyBjb25uZWN0aW9uLgorCistIElzc3VlICM5NjAxOiBmdHBsaWIgbm93IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3Igbm9uLWNvbXBsaWFudAorICBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyBJSVMgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgc2VydmVyIDIwMDMgcmV0dXJuaW5nIGludmFsaWQKKyAgcmVzcG9uc2UgY29kZXMgZm9yIE1LRCBhbmQgUFdEIGNvbW1hbmRzLgorCistIElzc3VlICM2NTg3NDk6IGFzeW5jb3JlJ3MgY29ubmVjdCgpIG1ldGhvZCBub3cgY29ycmVjdGx5IGludGVycHJldHMgd2luc29jaworICBlcnJvcnMuCisKKy0gSXNzdWUgIzk1MDE6IEZpeGVkIGxvZ2dpbmcgcmVncmVzc2lvbnMgaW4gY2xlYW51cCBjb2RlLgorCistIEZpeCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSB0byBza2lwIG1ldGhvZHMgaW5oZXJpdGVkIGZyb20gb2JqZWN0LgorCistIElzc3VlICM5NTcyOiBJbXBvcnRsaWIgc2hvdWxkIG5vdCByYWlzZSBhbiBleGNlcHRpb24gaWYgYSBkaXJlY3RvcnkgaXQgdGhvdWdodAorICBpdCBuZWVkZWQgdG8gY3JlYXRlIHdhcyBkb25lIGNvbmN1cnJlbnRseSBieSBhbm90aGVyIHByb2Nlc3MuCisKKy0gSXNzdWUgIzk2MTc6IFNpZ25hbHMgcmVjZWl2ZWQgZHVyaW5nIGEgbG93LWxldmVsIHdyaXRlIG9wZXJhdGlvbiBhcmVuJ3QKKyAgaWdub3JlZCBieSB0aGUgYnVmZmVyZWQgSU8gbGF5ZXIgYW55bW9yZS4KKworLSBJc3N1ZSAjODQzNTkwOiBNYWtlICJtYWNpbnRvc2giIGFuIGFsaWFzIHRvIHRoZSAibWFjX3JvbWFuIiBlbmNvZGluZy4KKworLSBDcmVhdGUgb3MuZnNkZWNvZGUoKTogZGVjb2RlIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUKKyAgZXJyb3IgaGFuZGxlciwgb3Igc3RyaWN0IGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMzQ4ODogUHJvdmlkZSBjb252ZW5pZW50IHNob3J0aGFuZCBmdW5jdGlvbnMgYGBnemlwLmNvbXByZXNzYGAgYW5kCisgIGBgZ3ppcC5kZWNvbXByZXNzYGAuICBPcmlnaW5hbCBwYXRjaCBieSBBbmFuZCBCLiBQaWxsYWkuCisKKy0gSXNzdWUgIzg4MDc6IHBvcGxpYi5QT1AzX1NTTCBjbGFzcyBub3cgYWNjZXB0cyBhIGNvbnRleHQgcGFyYW1ldGVyLCB3aGljaCBpcyBhCisgIHNzbC5TU0xDb250ZXh0IG9iamVjdCBhbGxvd2luZyBidW5kbGluZyBTU0wgY29uZmlndXJhdGlvbiBvcHRpb25zLAorICBjZXJ0aWZpY2F0ZXMgYW5kIHByaXZhdGUga2V5cyBpbnRvIGEgc2luZ2xlIChwb3RlbnRpYWxseSBsb25nLWxpdmVkKQorICBzdHJ1Y3R1cmUuCisKKy0gSXNzdWUgIzg4NjY6IHBhcmFtZXRlcnMgcGFzc2VkIHRvIHNvY2tldC5nZXRhZGRyaW5mbyBjYW4gbm93IGJlIHNwZWNpZmllZCBhcworICBzaW5nbGUga2V5d29yZCBhcmd1bWVudHMuCisKKy0gQWRkcmVzcyBYWFggY29tbWVudCBpbiBkaXMucHkgYnkgaGF2aW5nIGluc3BlY3QucHkgcHJlZmVyIHRvIHJldXNlIHRoZSBkaXMucHkKKyAgY29tcGlsZXIgZmxhZyB2YWx1ZXMgb3ZlciBkZWZpbmluZyBpdHMgb3duLgorCistIElzc3VlICM5MTQ3OiBBZGRlZCBkaXMuY29kZV9pbmZvKCkgd2hpY2ggaXMgc2ltaWxhciB0byBzaG93X2NvZGUoKSBidXQgcmV0dXJucworICBmb3JtYXR0ZWQgY29kZSBpbmZvcm1hdGlvbiBpbiBhIHN0cmluZyByYXRoZXIgdGhhbiBkaXNwbGF5aW5nIG9uIHNjcmVlbi4KKworLSBJc3N1ZSAjOTU2NzogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyBhZGRzIGEgX193cmFwcGVkX18gYXR0cmlidXRlCisgIHBvaW50aW5nIHRvIHRoZSBvcmlnaW5hbCBjYWxsYWJsZS4KKworLSBJc3N1ZSAjMzQ0NTogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyB0b2xlcmF0ZXMgbWlzc2luZyBhdHRyaWJ1dGVzIG9uCisgIHdyYXBwZWQgY2FsbGFibGVzLgorCistIElzc3VlICM1ODY3OiBBZGQgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QgYW5kIGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZC4KKworLSBJc3N1ZSAjOTYwNTogcG9zaXguZ2V0bG9naW4oKSBkZWNvZGVzIHRoZSB1c2VybmFtZSB3aXRoIGZpbGUgZmlsZXN5c3RlbQorICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjA0OiBwb3NpeC5pbml0Z3JvdXBzKCkgZW5jb2RlcyB0aGUgdXNlcm5hbWUgdXNpbmcgdGhlIGZpbGV5c3RlbQorICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjAzOiBwb3NpeC50dHluYW1lKCkgYW5kIHBvc2l4LmN0ZXJtaWQoKSBkZWNvZGUgdGhlIHRlcm1pbmFsIG5hbWUKKyAgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLiBQYXRjaCB3cml0dGVuCisgIGJ5IERhdmlkIFdhdHNvbi4KKworLSBJc3N1ZSAjNzY0NzogVGhlIHBvc2l4IG1vZHVsZSBub3cgaGFzIHRoZSBTVF9SRE9OTFkgYW5kIFNUX05PU1VJRCBjb25zdGFudHMsCisgIGZvciB1c2Ugd2l0aCB0aGUgc3RhdHZmcygpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgQWRhbSBKYWNrc29uLgorCistIElzc3VlICM4Njg4OiBNQU5JRkVTVCBmaWxlcyBjcmVhdGVkIGJ5IGRpc3R1dGlscyBub3cgaW5jbHVkZSBhIG1hZ2ljIGNvbW1lbnQKKyAgaW5kaWNhdGluZyB0aGV5IGFyZSBnZW5lcmF0ZWQuICBNYW51YWxseSBtYWludGFpbmVkIE1BTklGRVNUcyB3aXRob3V0IHRoaXMKKyAgbWFya2VyIHdpbGwgbm90IGJlIG92ZXJ3cml0dGVuIG9yIHJlbW92ZWQuCisKKy0gSXNzdWUgIzc0Njc6IHdoZW4gcmVhZGluZyBhIGZpbGUgZnJvbSBhIFpJUCBhcmNoaXZlLCBpdHMgQ1JDIGlzIGNoZWNrZWQgYW5kIGEKKyAgQmFkWmlwZmlsZSBlcnJvciBpcyByYWlzZWQgaWYgaXQgZG9lc24ndCBtYXRjaCAoYXMgdXNlZCB0byBiZSB0aGUgY2FzZSBpbgorICBQeXRob24gMi41IGFuZCBlYXJsaWVyKS4KKworLSBJc3N1ZSAjOTU1MDogYSBCdWZmZXJlZFJlYWRlciBjb3VsZCBpc3N1ZSBhbiBhZGRpdGlvbmFsIHJlYWQgd2hlbiB0aGUgb3JpZ2luYWwKKyAgcmVhZCByZXF1ZXN0IGhhZCBiZWVuIHNhdGlzZmllZCwgd2hpY2ggY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IHdoZW4gdGhlCisgIHVuZGVybHlpbmcgcmF3IElPIGNoYW5uZWwgd2FzIGUuZy4gYSBzb2NrZXQuICBSZXBvcnQgYW5kIG9yaWdpbmFsIHBhdGNoIGJ5CisgIEphc29uIFYuIE1pbGxlci4KKworLSBJc3N1ZSAjMzc1NzogdGhyZWFkLWxvY2FsIG9iamVjdHMgbm93IHN1cHBvcnQgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbi4KKyAgVGhyZWFkLWxvY2FsIG9iamVjdHMgaW52b2x2ZWQgaW4gcmVmZXJlbmNlIGN5Y2xlcyB3aWxsIGJlIGRlYWxsb2NhdGVkIHRpbWVseQorICBieSB0aGUgY3ljbGljIEdDLCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCistIElzc3VlICM5NDUyOiBBZGQgcmVhZF9maWxlLCByZWFkX3N0cmluZywgYW5kIHJlYWRfZGljdCB0byB0aGUgY29uZmlncGFyc2VyCisgIEFQSTsgbmV3IHNvdXJjZSBhdHRyaWJ1dGUgdG8gZXhjZXB0aW9ucy4KKworLSBJc3N1ZSAjNjIzMTogRml4IHhtbC5ldHJlZS5FbGVtZW50SW5jbHVkZSB0byBpbmNsdWRlIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50CisgIG5vZGUuCisKKy0gSXNzdWUgIzgwNDc6IEZpeCB0aGUgeG1sLmV0cmVlIHNlcmlhbGl6ZXIgdG8gcmV0dXJuIGJ5dGVzIGJ5IGRlZmF1bHQuICBVc2UKKyAgYGBlbmNvZGluZz0idW5pY29kZSJgYCB0byBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nLgorCistIElzc3VlICM4MjgwOiB1cmxsaWIyJ3MgUmVxdWVzdCBtZXRob2Qgd2lsbCByZW1vdmUgZnJhZ21lbnRzIGluIHRoZSB1cmwuICBUaGlzCisgIGlzIGhvdyBpdCBpcyBzdXBwb3NlZCB0byB3b3JrLCB3Z2V0IGFuZCBjdXJsIGRvIHRoZSBzYW1lLiAgUHJldmlvdXMgYmVoYXZpb3IKKyAgd2FzIHdyb25nLgorCistIElzc3VlICM2NjgzOiBGb3IgU01UUCBsb2dpbnMgd2Ugbm93IHRyeSBhbGwgYXV0aGVudGljYXRpb24gbWV0aG9kcyBhZHZlcnRpc2VkCisgIGJ5IHRoZSBzZXJ2ZXIuICBNYW55IHNlcnZlcnMgYXJlIGJ1Z2d5IGFuZCBhZHZlcnRpc2UgYXV0aGVudGljYXRpb24gbWV0aG9kcworICB0aGV5IGRvIG5vdCBzdXBwb3J0IGluIHJlYWxpdHkuCisKKy0gSXNzdWUgIzg4MTQ6IGZ1bmN0aW9uIGFubm90YXRpb25zICh0aGUgYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUpIGFyZSBub3cKKyAgaW5jbHVkZWQgaW4gdGhlIHNldCBvZiBhdHRyaWJ1dGVzIGNvcGllZCBieSBkZWZhdWx0IGJ5IGZ1bmN0b29scy53cmFwcyBhbmQKKyAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyLiAgUGF0Y2ggYnkgVGVycmVuY2UgQ29sZS4KKworLSBJc3N1ZSAjMjk0NDogYXN5bmNvcmUgZG9lc24ndCBoYW5kbGUgY29ubmVjdGlvbiByZWZ1c2VkIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjNDE4NDogUHJpdmF0ZSBhdHRyaWJ1dGVzIG9uIHNtdHBkLlNNVFBDaGFubmVsIG1hZGUgcHVibGljIGFuZCBkZXByZWNhdGUKKyAgdGhlIHByaXZhdGUgYXR0cmlidXRlcy4gQWRkIHRlc3RzIGZvciBzbXRwZCBtb2R1bGUuCisKKy0gSXNzdWUgIzMxOTY6IGVtYWlsIGhlYWRlciBkZWNvZGluZyBpcyBub3cgZm9yZ2l2aW5nIGlmIGFuIFJGQzIwNDcgZW5jb2RlZCB3b3JkCisgIGVuY29kZWQgaW4gYmFzZTY0IGlzIGxhY2tpbmcgcGFkZGluZy4KKworLSBJc3N1ZSAjOTQ0NDogQXJncGFyc2Ugbm93IHVzZXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgcHJlZml4X2NoYXJzIGFzIHRoZSBvcHRpb24KKyAgY2hhcmFjdGVyIGZvciB0aGUgYWRkZWQgJ2gvaGVscCcgb3B0aW9uIGlmIHByZWZpeF9jaGFycyBkb2VzIG5vdCBjb250YWluIGEKKyAgJy0nLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzczNzI6IEZpeCBwc3RhdHMgcmVncmVzc2lvbiB3aGVuIHN0cmlwcGluZyBwYXRocyBmcm9tIHByb2ZpbGUgZGF0YQorICBnZW5lcmF0ZWQgd2l0aCB0aGUgcHJvZmlsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzk0Mjg6IEZpeCBydW5uaW5nIHNjcmlwdHMgd2l0aCB0aGUgcHJvZmlsZS9jUHJvZmlsZSBtb2R1bGVzIGZyb20gdGhlCisgIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjNzc4MTogRml4IHJlc3RyaWN0aW5nIHN0YXRzIGJ5IGVudHJ5IGNvdW50cyBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlCisgIGJyb3dzZXIuCisKKy0gSXNzdWUgIzkyMDk6IERvIG5vdCBjcmFzaCBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIgb24gaW52YWxpZCByZWd1bGFyCisgIGV4cHJlc3Npb25zLgorCistIFVwZGF0ZSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCB0byBtYXRjaCB0aGUgaW1wbGVtZW50YXRpb24gaW4gUHkyLjcgKGJhc2VkIG9uCisgIGxpc3RzIGluc3RlYWQgb2Ygd2Vha2x5IHJlZmVyZW5jZWQgTGluayBvYmplY3RzKS4KKworLSBJc3N1ZSAjODM5NzogUmFpc2UgYW4gZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIG1peCBpdGVyYXRpb24gYW5kIHJlZ3VsYXIgcmVhZHMKKyAgb24gYSBCWjJGaWxlIG9iamVjdCwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGluY29ycmVjdCByZXN1bHRzLgorCistIElzc3VlICM5NDQ4OiBGaXggYSBsZWFrIG9mIE9TIHJlc291cmNlcyAobXV0ZXhlcyBvciBzZW1hcGhvcmVzKSB3aGVuCisgIHJlLWluaXRpYWxpemluZyBhIGJ1ZmZlcmVkIElPIG9iamVjdCBieSBjYWxsaW5nIGl0cyBgYF9faW5pdF9fYGAgbWV0aG9kLgorCistIElzc3VlICMxNzEzOiBGaXggb3MucGF0aC5pc21vdW50KCksIHdoaWNoIHJldHVybmVkIHRydWUgZm9yIHN5bWJvbGljIGxpbmtzCisgIGFjcm9zcyBkZXZpY2VzLgorCistIElzc3VlICM4ODI2OiBQcm9wZXJseSBsb2FkIG9sZC1zdHlsZSAiZXhwaXJlcyIgYXR0cmlidXRlIGluIGh0dHAuY29va2llcy4KKworLSBJc3N1ZSAjMTY5MDEwMzogRml4IGluaXRpYWwgbmFtZXNwYWNlIGZvciBjb2RlIHJ1biB3aXRoIHRyYWNlLm1haW4oKS4KKworLSBJc3N1ZSAjNzM5NTogRml4IHRyYWNlYmFja3MgaW4gcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIuCisKKy0gSXNzdWUgIzgyMzA6IEZpeCBMaWIvdGVzdC9zb3J0cGVyZi5weS4KKworLSBJc3N1ZSAjODYyMDogd2hlbiBhIGNtZC5DbWQoKSBpcyBmZWQgaW5wdXQgdGhhdCByZWFjaGVzIEVPRiB3aXRob3V0IGEgZmluYWwKKyAgbmV3bGluZSwgaXQgbm8gbG9uZ2VyIHRydW5jYXRlcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhc3QgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM1MTQ2OiBIYW5kbGUgVUlEIFRIUkVBRCBjb21tYW5kIGNvcnJlY3RseSBpbiBpbWFwbGliLgorCistIElzc3VlICM1MTQ3OiBGaXggdGhlIGhlYWRlciBnZW5lcmF0ZWQgZm9yIGNvb2tpZSBmaWxlcyB3cml0dGVuIGJ5CisgIGh0dHAuY29va2llamFyLk1vemlsbGFDb29raWVKYXIuCisKKy0gSXNzdWUgIzgxOTg6IEluIHB5ZG9jLCBvdXRwdXQgYWxsIGhlbHAgdGV4dCB0byB0aGUgY29ycmVjdCBzdHJlYW0gd2hlbgorICBzeXMuc3Rkb3V0IGlzIHJlYXNzaWduZWQuCisKKy0gSXNzdWUgIzc5MDk6IERvIG5vdCB0b3VjaCBwYXRocyB3aXRoIHRoZSBzcGVjaWFsIHByZWZpeGVzIGBgXFwuXGBgIG9yIGBgXFw/XGBgCisgIGluIG50cGF0aC5ub3JtcGF0aCgpLgorCistIElzc3VlICMxMjg2OiBBbGxvdyB1c2luZyBmaWxlaW5wdXQuRmlsZUlucHV0IGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCistIEFkZCBscnVfY2FjaGUoKSBkZWNvcmF0b3IgdG8gdGhlIGZ1bmN0b29scyBtb2R1bGUuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIEZpeCBgYFRvb2xzL3NjcmlwdHMvY2hlY2tweWMucHlgYCBhZnRlciBQRVAgMzE0Ny4KKworLSBJc3N1ZSAjODg2NzogRml4IGBgVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weWBgIHRvIHdvcmsgd2l0aCBmaWxlcyBjb250YWluaW5nCisgIG5vbi1BU0NJSSBjb250ZW50LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTYwMTogUHJvdmlkZSBhIHRlc3QgY2FzZSBmb3IgZnRwbGliLnBhcnNlMjU3LgorCistIElzc3VlICM4ODU3OiBQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBzb2NrZXQuZ2V0YWRkcmluZm8uCisKKy0gSXNzdWUgIzc1NjQ6IFNraXAgdGVzdF9pb2N0bCBpZiBhbm90aGVyIHByb2Nlc3MgaXMgYXR0YWNoZWQgdG8gL2Rldi90dHkuCisKKy0gSXNzdWUgIzg0MzM6IEZpeCB0ZXN0X2N1cnNlcyBmYWlsdXJlIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbmN1cnNlcy4KKworLSBJc3N1ZSAjOTQ5NjogUHJvdmlkZSBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBybGNvbXBsZXRlciBtb2R1bGUuICBQYXRjaCBieQorICBNaWNoZWxlIE9ycsO5LgorCistIElzc3VlICM4Njg3OiBwcm92aWRlIGEgdGVzdCBzdWl0ZSBmb3Igc2NoZWQucHkgbW9kdWxlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTMwMzQzNDogR2VuZXJhdGUgWklQIGZpbGUgY29udGFpbmluZyBhbGwgUERCcy4KKworLSBJc3N1ZSAjOTE5MzogUEVQIDMxNDkgaXMgYWNjZXB0ZWQuCisKKy0gSXNzdWUgIzMxMDE6IEhlbHBlciBmdW5jdGlvbnMgX2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfYWRkX29uZV90b19pbmRleF9GKCkKKyAgYmVjb21lIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoKSBhbmQgX1B5X2FkZF9vbmVfdG9faW5kZXhfRigpLCByZXNwZWN0aXZlbHkuCisKKy0gSXNzdWUgIzk3MDA6IGRlZmluZSBIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTIHVuZGVyIEFJWCA2LnguICBQYXRjaCBieQorICBTw6liYXN0aWVuIFNhYmzDqS4KKworLSBEb24ndCBydW4gcGdlbiB0d2ljZSB3aGVuIHVzaW5nIG1ha2UgLWouCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDEtQXVnLTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM4OTkxOiBjb252ZXJ0YnVmZmVyKCkgcmVqZWN0cyBkaXNjb250aWdpb3VzIGJ1ZmZlcnMuCisKKy0gSXNzdWUgIzc2MTY6IEZpeCBjb3B5aW5nIG9mIG92ZXJsYXBwaW5nIG1lbW9yeXZpZXcgc2xpY2VzIHdpdGggdGhlIEludGVsCisgIGNvbXBpbGVyLgorCistIElzc3VlICM4NDEzOiBzdHJ1Y3RzZXF1ZW5jZSBub3cgc3ViY2xhc3NlcyB0dXBsZS4KKworLSBJc3N1ZSAjODI3MTogZHVyaW5nIHRoZSBkZWNvZGluZyBvZiBhbiBpbnZhbGlkIFVURi04IGJ5dGUgc2VxdWVuY2UsIG9ubHkgdGhlCisgIHN0YXJ0IGJ5dGUgYW5kIHRoZSBjb250aW51YXRpb24gYnl0ZShzKSBhcmUgbm93IGNvbnNpZGVyZWQgaW52YWxpZCwgaW5zdGVhZCBvZgorICB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNwZWNpZmllZCBieSB0aGUgc3RhcnQgYnl0ZS4gIEUuZy46CisgICdceGYxXHg4MEFCJy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKSBub3cgcmV0dXJucyB1J1x1ZmZmZEFCJyBhbmQgcmVwbGFjZXMKKyAgd2l0aCBVK0ZGRkQgb25seSB0aGUgc3RhcnQgYnl0ZSAoJ1x4ZjEnKSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlICgnXHg4MCcpCisgIGV2ZW4gaWYgJ1x4ZjEnIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgNC1ieXRlcyBzZXF1ZW5jZS4gIFByZXZpb3VzIHZlcnNpb25zCisgIHJldHVybmVkIGEgc2luZ2xlIHUnXHVmZmZkJy4KKworLSBJc3N1ZSAjOTAxMTogQSBuZWdhdGVkIGltYWdpbmFyeSBsaXRlcmFsIChlLmcuLCAiLTdqIikgbm93IGhhcyByZWFsIHBhcnQgLTAuMAorICByYXRoZXIgdGhhbiAwLjAuICBTbyAiLTdqIiBpcyBub3cgZXhhY3RseSBlcXVpdmFsZW50IHRvICItKDdqKSIuCisKKy0gQmUgbW9yZSBzcGVjaWZpYyBpbiBlcnJvciBtZXNzYWdlcyBhYm91dCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjODk0OTogInoiIGZvcm1hdCBvZiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgZG9lc24ndCBhY2NlcHQgYnl0ZXMKKyAgb2JqZWN0cywgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM2NTQzOiBXcml0ZSB0aGUgdHJhY2ViYWNrIGluIHRoZSB0ZXJtaW5hbCBlbmNvZGluZyBpbnN0ZWFkIG9mIHV0Zi04LgorICBGaXggdGhlIGVuY29kaW5nIG9mIHRoZSBtb2R1bGVzIGZpbGVuYW1lLiAgUGF0Y2ggd3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdAorICBkJ0FyYy4KKworLSBJc3N1ZSAjOTAxMTogUmVtb3ZlIGJ1Z2d5IGFuZCB1bm5lY2Vzc2FyeSAoaW4gMy54KSBTVC0+QVNUIGNvbXBpbGF0aW9uIGNvZGUKKyAgZGVhbGluZyB3aXRoIHVuYXJ5IG1pbnVzIGFwcGxpZWQgdG8gYSBjb25zdGFudC4gIFRoZSByZW1vdmVkIGNvZGUgd2FzIG11dGF0aW5nCisgIHRoZSBTVCwgY2F1c2luZyBhIHNlY29uZCBjb21waWxhdGlvbiB0byBmYWlsLgorCistIElzc3VlICM4NTA5OTc6IG1iY3MgZW5jb2RpbmcgKFdpbmRvd3Mgb25seSkgaGFuZGxlcyBlcnJvcnMgYXJndW1lbnQ6IHN0cmljdAorICBtb2RlIHJhaXNlcyB1bmljb2RlIGVycm9ycy4gIFRoZSBlbmNvZGVyIG9ubHkgc3VwcG9ydHMgInN0cmljdCIgYW5kICJyZXBsYWNlIgorICBlcnJvciBoYW5kbGVycywgdGhlIGRlY29kZXIgb25seSBzdXBwb3J0cyAic3RyaWN0IiBhbmQgImlnbm9yZSIgZXJyb3IKKyAgaGFuZGxlcnMuICBQYXRjaCB3cml0dGVuIGJ5IE1hcmsgSGFtbW9uZC4KKworLSBJc3N1ZSAjODg1MDogUmVtb3ZlICJ3IiBhbmQgIncjIiBmb3JtYXRzIGZyb20gUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLCB1c2UKKyAgIncqIiBmb3JtYXQgaW5zdGVhZC4gQWRkIHRlc3RzIGZvciAidyoiIGZvcm1hdC4KKworLSBJc3N1ZSAjODU5MjogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGEgVHlwZUVycm9yIGZvciAieSIsICJ1IiBhbmQgIloiCisgIGZvcm1hdHMgaWYgdGhlIHN0cmluZyBjb250YWlucyBhIG51bGwgYnl0ZS9jaGFyYWN0ZXIuICBXcml0ZSB1bml0IHRlc3RzIGZvcgorICBzdHJpbmcgZm9ybWF0cy4KKworLSBJc3N1ZSAjNzQ5MDogVG8gZmFjaWxpdGF0ZSBzaGFyaW5nIG9mIGRvY3Rlc3RzIGJldHdlZW4gMi54IGFuZCAzLnggdGVzdAorICBzdWl0ZXMsIHRoZSBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTCBkaXJlY3RpdmUgbm93IGFsc28gaWdub3JlcyB0aGUgbW9kdWxlCisgIGxvY2F0aW9uIG9mIHRoZSByYWlzZWQgZXhjZXB0aW9uLgorCistIElzc3VlICM4OTY5OiBPbiBXaW5kb3dzLCB1c2UgbWJjcyBjb2RlYyBpbiBzdHJpY3QgbW9kZSB0byBlbmNvZGUgYW5kIGRlY29kZQorICBmaWxlbmFtZXMgYW5kIGVuYWJsZSBvcy5mc2VuY29kZSgpLgorCistIElzc3VlICM5MDU4OiBSZW1vdmUgYXNzZXJ0aW9ucyBhYm91dCBJTlRfTUFYIGluIFVuaWNvZGVEZWNvZGVFcnJvci4KKworLSBJc3N1ZSAjODk0MTogRGVjb2RpbmcgYmlnIGVuZGlhbiBVVEYtMzIgZGF0YSBpbiBVQ1MtMiBidWlsZHMgY291bGQgY3Jhc2ggdGhlCisgIGludGVycHJldGVyIHdpdGggY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKGhpZ2hlciB0aGFuCisgIDB4MTAwMDApLgorCistIElzc3VlICM4OTUwOiAoU2VlIGFsc28gaXNzdWUgIzUwODApLiAgUHlfQXJnUGFyc2UqKCkgZnVuY3Rpb25zIG5vdyByYWlzZQorICBUeXBlRXJyb3IgaW5zdGVhZCBvZiBnaXZpbmcgYSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhIGZsb2F0IGlzIHBhcnNlZCB1c2luZworICB0aGUgJ0wnIGNvZGUgKGZvciBsb25nIGxvbmcpLiAgKEFsbCBvdGhlciBpbnRlZ2VyIGNvZGVzIGFscmVhZHkgcmFpc2UKKyAgVHlwZUVycm9yIGluIHRoaXMgY2FzZS4pCisKKy0gSXNzdWUgIzg5MjI6IE5vcm1hbGl6ZSB0aGUgZW5jb2RpbmcgbmFtZSBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgdG8KKyAgZW5hYmxlIHNob3J0Y3V0cyBmb3IgdXBwZXIgY2FzZSBlbmNvZGluZyBuYW1lLiBBZGQgYWxzbyBhIHNob3J0Y3V0IGZvcgorICAiaXNvLTg4NTktMSIgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGFuZCBQeVVuaWNvZGVfRGVjb2RlKCkuCisKKy0gSXNzdWUgIzg4Mzg6IFJlbW92ZSBjb2RlY3MuY2hhcmJ1ZmZlcl9lbmNvZGUoKSBmdW5jdGlvbi4gIFRoZSBidWZmZXIgcHJvdG9jb2wKKyAgZG9lc24ndCBzdXBwb3J0ICJjaGFyIGJ1ZmZlciIgYW55bW9yZSBpbiBQeXRob24gMy4KKworLSBJc3N1ZSAjODMzOTogUmVtb3ZlICJ0IyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucywgdXNlICJzIyIgb3IgInMqIgorICBpbnN0ZWFkLiAgY29kZWNzLmNoYXJidWZmZXJfZW5jb2RlKCkgbm93IGFjY2VwdHMgbW9kaWZpYWJsZSBidWZmZXIgb2JqZWN0cworICBsaWtlIGJ5dGVhcnJheS4KKworLSBJc3N1ZSAjODgzNzogUmVtb3ZlICJPPyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucy4gIFRoZSBmb3JtYXQgaXMgbm8KKyAgdXNlZCBhbnltb3JlIGFuZCBpdCB3YXMgbmV2ZXIgZG9jdW1lbnRlZC4KKworLSBJbiBzdHIuZm9ybWF0KCksIHJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGluZGV4ZXMgdG8gYXJndW1lbnRzIGFyZSB0b28gbGFyZ2UuCisKKy0gSXNzdWUgIzI4NDQ6IE1ha2UgaW50KCc0MicsIG4pIGNvbnNpc3RlbnRseSByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkCisgIGludGVnZXJzIG4gKGluY2x1ZGluZyBuID0gLTkwOSkuCisKKy0gSXNzdWUgIzgxODg6IEludHJvZHVjZSBhIG5ldyBzY2hlbWUgZm9yIGNvbXB1dGluZyBoYXNoZXMgb2YgbnVtYmVycyAoaW5zdGFuY2VzCisgIG9mIGludCwgZmxvYXQsIGNvbXBsZXgsIGRlY2ltYWwuRGVjaW1hbCBhbmQgZnJhY3Rpb25zLkZyYWN0aW9uKSB0aGF0IG1ha2VzIGl0CisgIGVhc3kgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGhhc2goeCkgPT0gaGFzaCh5KSB3aGVuZXZlciB4IGFuZCB5IGhhdmUKKyAgZXF1YWwgdmFsdWUuCisKKy0gSXNzdWUgIzg3NDg6IEZpeCB0d28gaXNzdWVzIHdpdGggY29tcGFyaXNvbnMgYmV0d2VlbiBjb21wbGV4IGFuZCBpbnRlZ2VyCisgIG9iamVjdHMuICAoMSkgVGhlIGNvbXBhcmlzb24gY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIFRydWUgaW4gc29tZSBjYXNlcworICAoMioqNTMrMSA9PSBjb21wbGV4KDIqKjUzKSA9PSAyKio1MyksIGJyZWFraW5nIHRyYW5zaXRpdml0eSBvZiBlcXVhbGl0eS4KKyAgKDIpIFRoZSBjb21wYXJpc29uIHJhaXNlZCBhbiBPdmVyZmxvd0Vycm9yIGZvciBsYXJnZSBpbnRlZ2VycywgbGVhZGluZyB0bworICB1bnByZWRpY3RhYmxlIGV4Y2VwdGlvbnMgd2hlbiBjb21iaW5pbmcgaW50ZWdlcnMgYW5kIGNvbXBsZXggb2JqZWN0cyBpbiBzZXRzCisgIG9yIGRpY3RzLgorCistIElzc3VlICM4NzY2OiBJbml0aWFsaXplIF93YXJuaW5ncyBtb2R1bGUgYmVmb3JlIGltcG9ydGluZyB0aGUgZmlyc3QgbW9kdWxlLgorICBGaXggYSBjcmFzaCBpZiBhbiBlbXB0eSBkaXJlY3RvcnkgY2FsbGVkICJlbmNvZGluZ3MiIGV4aXN0cyBpbiBzeXMucGF0aC4KKworLSBJc3N1ZSAjODU4OTogRGVjb2RlIFBZVEhPTldBUk5JTkdTIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlIGZpbGUgc3lzdGVtCisgIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgdG8KKyAgYmUgY29uc2lzdGVudCB3aXRoIG9zLmVudmlyb24uICBBZGQgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUoKSBmdW5jdGlvbi4KKworLSBQeU9iamVjdF9EdW1wKCkgZW5jb2RlcyB1bmljb2RlIG9iamVjdHMgdG8gdXRmOCB3aXRoIGJhY2tzbGFzaHJlcGxhY2UgKGluc3RlYWQKKyAgb2Ygc3RyaWN0KSBlcnJvciBoYW5kbGVyIHRvIGVzY2FwZSBzdXJyb2dhdGVzLgorCistIElzc3VlICM4NzE1OiBDcmVhdGUgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpIGZ1bmN0aW9uOiBFbmNvZGUgYSBVbmljb2RlCisgIG9iamVjdCB0byBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIHdpdGggdGhlICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yCisgIGhhbmRsZXIsIGFuZCByZXR1cm4gYnl0ZXMuICBJZiBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIGlzIG5vdCBzZXQsIGZhbGwKKyAgYmFjayB0byBVVEYtOC4KKworLSBFbmFibGUgc2hvcnRjdXRzIGZvciBjb21tb24gZW5jb2RpbmdzIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBmb3IgYW55CisgIGVycm9yIGhhbmRsZXIsIG5vdCBvbmx5IHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgKHN0cmljdCkuCisKKy0gSXNzdWUgIzg2MTA6IExvYWQgZmlsZSBzeXN0ZW0gY29kZWMgYXQgc3RhcnR1cCwgYW5kIGRpc3BsYXkgYSBmYXRhbCBlcnJvciBvbgorICBmYWlsdXJlLiAgU2V0IHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyB0byB1dGYtOCAoaW5zdGVhZCBvZiBOb25lKSBpZiBnZXR0aW5nCisgIHRoZSBsb2NhbGUgZW5jb2RpbmcgZmFpbGVkLCBvciBpZiBubF9sYW5naW5mbyhDT0RFU0VUKSBmdW5jdGlvbiBpcyBtaXNzaW5nLgorCistIFB5RmlsZV9Gcm9tRmQoKSB1c2VzIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpbnN0ZWFkIG9mCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCkgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZSBmaWxlbmFtZSBhbmQgdXNlIHRoZSByaWdodAorICBlbmNvZGluZy4KKworLSBJc3N1ZSAjNzUwNzogUXVvdGUgIiEiIGluIHBpcGVzLnF1b3RlKCk7IGl0IGlzIHNwZWNpYWwgdG8gc29tZSBzaGVsbHMuCisKKy0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKSB1c2VzIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM4NDE5OiBQcmV2ZW50IHRoZSBkaWN0IGNvbnN0cnVjdG9yIGZyb20gYWNjZXB0aW5nIG5vbi1zdHJpbmcga2V5d29yZAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzgxMjQ6IFB5U3lzX1dyaXRlU3Rkb3V0KCkgYW5kIFB5U3lzX1dyaXRlU3RkZXJyKCkgZG9uJ3QgZXhlY3V0ZQorICBpbmRpcmVjdGx5IFB5dGhvbiBzaWduYWwgaGFuZGxlcnMgYW55bW9yZSBiZWNhdXNlIG15d3JpdGUoKSBpZ25vcmVzIGV4Y2VwdGlvbnMKKyAgKEtleWJvYXJkSW50ZXJydXB0KS4KKworLSBJc3N1ZSAjODA5MjogRml4IFB5VW5pY29kZV9FbmNvZGVVVEY4KCkgdG8gc3VwcG9ydCBlcnJvciBoYW5kbGVyIHByb2R1Y2luZworICB1bmljb2RlIHN0cmluZyAoZWcuIGJhY2tzbGFzaHJlcGxhY2UpLgorCistIElzc3VlICM4NDg1OiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoKSBkb2Vzbid0IGFjY2VwdCBieXRlZWFycmF5IG9iamVjdHMKKyAgYW55bW9yZSwgeW91IGhhdmUgdG8gY29udmVydCB5b3VyIGJ5dGVhcnJheSBmaWxlbmFtZXMgdG8gYnl0ZXMuCisKKy0gSXNzdWUgIzczMzI6IFJlbW92ZSB0aGUgMTZLQiBzdGFjay1iYXNlZCBidWZmZXIgaW4KKyAgUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUsIHdoaWNoIGRvZXNuJ3QgYnJpbmcgYW55IG5vdGljZWFibGUgYmVuZWZpdAorICBjb21wYXJlZCB0byB0aGUgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiBmYWxsYmFjay4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzCisgIE5hdGFsaS4KKworLSBJc3N1ZSAjODQxNzogUmFpc2UgYW4gT3ZlcmZsb3dFcnJvciB3aGVuIGFuIGludGVnZXIgbGFyZ2VyIHRoYW4gc3lzLm1heHNpemUgaXMKKyAgcGFzc2VkIHRvIGJ5dGVzIG9yIGJ5dGVhcnJheS4KKworLSBJc3N1ZSAjNzMwMTogQWRkIGVudmlyb25tZW50IHZhcmlhYmxlICRQWVRIT05XQVJOSU5HUy4KKworLSBJc3N1ZSAjODMyOTogRG9uJ3QgcmV0dXJuIHRoZSBzYW1lIGxpc3RzIGZyb20gc2VsZWN0LnNlbGVjdCB3aGVuIG5vIGZkcyBhcmUKKyAgY2hhbmdlZC4KKworLSBJc3N1ZSAjODI1OTogMUwgPDwgKDIqKjMxKSBubyBsb25nZXIgcHJvZHVjZXMgYW4gJ291dHJhZ2VvdXMgc2hpZnQgZXJyb3InIG9uCisgIDY0LWJpdCBtYWNoaW5lcy4gIFRoZSBzaGlmdCBjb3VudCBmb3IgZWl0aGVyIGxlZnQgb3IgcmlnaHQgc2hpZnQgaXMgcGVybWl0dGVkCisgIHRvIGJlIHVwIHRvIHN5cy5tYXhzaXplLgorCistIEVuc3VyZSB0aGF0IHRva2VuaXphdGlvbiBvZiBpZGVudGlmaWVycyBpcyBub3QgYWZmZWN0ZWQgYnkgbG9jYWxlLgorCistIElzc3VlICMxMjIyNTg1OiBBZGRlZCBMRENYWFNIQVJFRCBmb3IgQysrIHN1cHBvcnQuIFBhdGNoIGJ5IEFyZnJldmVyLgorCistIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhIFRfU1RSSU5HX0lOUExBQ0Ugc3RydWN0IG1lbWJlci4KKworLSBJc3N1ZSAjODIxMTogU2F2ZS9yZXN0b3JlIENGTEFHUyBhcm91bmQgQUNfUFJPR19DQyBpbiBjb25maWd1cmUuaW4sIGluIGNhc2UgaXQKKyAgaXMgc2V0LgorCistIElzc3VlICM4MjI2OiBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgTG9va3VwRXJyb3IgaWYgdGhlIGVuY29kaW5nCisgIGlzIHVua25vd24uCisKKy0gSXNzdWUgIzE1ODM4NjM6IEEgc3RyIHN1YmNsYXNzIGNhbiBub3cgb3ZlcnJpZGUgdGhlIF9fc3RyX18gbWV0aG9kLgorCistIElzc3VlICM4MDE0OiBTZXR0aW5nIGEgVF9VSU5UIG9yIFRfUFlTU0laRVQgYXR0cmlidXRlIG9mIGFuIG9iamVjdCB3aXRoCisgIFB5TWVtYmVyRGVmcyBjb3VsZCBwcm9kdWNlIGFuIGludGVybmFsIGVycm9yOyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZC4KKworLSBJc3N1ZSAjNzg0NTogUmljaCBjb21wYXJpc29uIG1ldGhvZHMgb24gdGhlIGNvbXBsZXggdHlwZSBub3cgcmV0dXJuCisgIE5vdEltcGxlbWVudGVkIHJhdGhlciB0aGFuIHJhaXNpbmcgYSBUeXBlRXJyb3Igd2hlbiBjb21wYXJpbmcgd2l0aCBhbgorICBpbmNvbXBhdGlibGUgdHlwZTsgdGhpcyBhbGxvd3MgdXNlci1kZWZpbmVkIGNsYXNzZXMgdG8gaW1wbGVtZW50IHRoZWlyIG93bgorICBjb21wYXJpc29ucyB3aXRoIGNvbXBsZXguCisKKy0gSXNzdWUgIzMxMzc6IERvbid0IGlnbm9yZSBlcnJvcnMgYXQgc3RhcnR1cCwgZXNwZWNpYWxseSBhIGtleWJvYXJkIGludGVycnVwdAorICAoU0lHSU5UKS4gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGltcG9ydGluZyB0aGUgc2l0ZSBtb2R1bGUsIHRoZSBlcnJvciBpcworICBwcmludGVkIGFuZCBQeXRob24gZXhpdHMuIEluaXRpYWxpemUgdGhlIEdJTCBiZWZvcmUgaW1wb3J0aW5nIHRoZSBzaXRlIG1vZHVsZS4KKworLSBJc3N1ZSAjNzE3MzogR2VuZXJhdG9yIGZpbmFsaXphdGlvbiBjb3VsZCBpbnZhbGlkYXRlIHN5cy5leGNfaW5mbygpLgorCistIElzc3VlICM3NTQ0OiBQcmVhbGxvY2F0ZSB0aHJlYWQgbWVtb3J5IGJlZm9yZSBjcmVhdGluZyB0aGUgdGhyZWFkIHRvIGF2b2lkIGEKKyAgZmF0YWwgZXJyb3IgaW4gbG93IG1lbW9yeSBjb25kaXRpb24uCisKKy0gSXNzdWUgIzc4MjA6IFRoZSBwYXJzZXIgdG9rZW5pemVyIHJlc3RvcmVzIGFsbCBieXRlcyBpbiB0aGUgcmlnaHQgaWYgdGhlIEJPTQorICBjaGVjayBmYWlscy4KKworLSBIYW5kbGUgZXJyb3JzIGZyb20gbG9va2luZyB1cCBfX3ByZXBhcmVfXyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzU5Mzk6IEFkZCBhZGRpdGlvbmFsIHJ1bnRpbWUgY2hlY2tpbmcgdG8gZW5zdXJlIGEgdmFsaWQgY2Fwc3VsZSBpbgorICBNb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYy4KKworLSBJc3N1ZSAjNzMwOTogRml4IHVuY2hlY2tlZCBhdHRyaWJ1dGUgYWNjZXNzIHdoZW4gY29udmVydGluZworICBVbmljb2RlRW5jb2RlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciwgYW5kIFVuaWNvZGVUcmFuc2xhdGVFcnJvciB0byBzdHJpbmdzLgorCistIElzc3VlICM2OTAyOiBGaXggcHJvYmxlbSB3aXRoIGJ1aWx0LWluIHR5cGVzIGZvcm1hdCBpbmNvcnJlY3RseSB3aXRoIDAKKyAgcGFkZGluZy4KKworLSBJc3N1ZSAjNzk4ODogRml4IGRlZmF1bHQgYWxpZ25tZW50IHRvIGJlIHJpZ2h0IGFsaWduZWQgZm9yIGNvbXBsZXguX19mb3JtYXRfXy4KKyAgTm93IGl0IG1hdGNoZXMgb3RoZXIgbnVtZXJpYyB0eXBlcy4KKworLSBJc3N1ZSAjNTk4ODogUmVtb3ZlIGRlcHJlY2F0ZWQgZnVuY3Rpb25zIFB5T1NfYXNjaWlfZm9ybWF0ZCwKKyAgUHlPU19hc2NpaV9zdHJ0b2QsIGFuZCBQeU9TX2FzY2lpX2F0b2YuICBVc2UgUHlPU19kb3VibGVfdG9fc3RyaW5nIGFuZAorICBQeU9TX3N0cmluZ190b19kb3VibGUgaW5zdGVhZC4gIFNlZSBpc3N1ZSAjNTgzNSBmb3IgdGhlIG9yaWdpbmFsIGRlcHJlY2F0aW9ucy4KKworLSBJc3N1ZSAjNzM4NTogRml4IGEgY3Jhc2ggaW4gYE1lbW9yeVZpZXdfRnJvbU9iamVjdGAgd2hlbiBgUHlPYmplY3RfR2V0QnVmZmVyYAorICBmYWlscy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLSBJc3N1ZSAjNzc4ODogRml4IGFuIGludGVycHJldGVyIGNyYXNoIHByb2R1Y2VkIGJ5IGRlbGV0aW5nIGEgbGlzdCBzbGljZSB3aXRoCisgIHZlcnkgbGFyZ2Ugc3RlcCB2YWx1ZS4KKworLSBJc3N1ZSAjNzc2NjogQ2hhbmdlIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpIHJldHVybiB2YWx1ZSB0byBhIG5hbWVkIHR1cGxlIGFuZAorICBhZGQgdGhlIGFkZGl0aW9uYWwgbWVtYmVycyByZXR1cm5lZCBpbiBhbiBPU1ZFUlNJT05JTkZPRVggc3RydWN0dXJlLiAgVGhlIG5ldworICBtZW1iZXJzIGFyZSBzZXJ2aWNlX3BhY2tfbWFqb3IsIHNlcnZpY2VfcGFja19taW5vciwgc3VpdGVfbWFzaywgYW5kCisgIHByb2R1Y3RfdHlwZS4KKworLSBJc3N1ZSAjNzU2MTogT3BlcmF0aW9ucyBvbiBlbXB0eSBieXRlYXJyYXlzIChzdWNoIGFzIGBpbnQoYnl0ZWFycmF5KCkpYCkgY291bGQKKyAgY3Jhc2ggaW4gbWFueSBwbGFjZXMgYmVjYXVzZSBvZiB0aGUgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKCkgbWFjcm8gcmV0dXJuaW5nCisgIE5VTEwuICBUaGUgbWFjcm8gbm93IHJldHVybnMgYSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBlbXB0eSBzdHJpbmcgaW5zdGVhZC4KKworLSBJc3N1ZSAjNjY5MDogT3B0aW1pemUgdGhlIGJ5dGVjb2RlIGZvciBleHByZXNzaW9ucyBzdWNoIGFzIGB4IGluIHsxLCAyLCAzfWAsCisgIHdoZXJlIHRoZSByaWdodCBoYW5kIG9wZXJhbmQgaXMgYSBzZXQgb2YgY29uc3RhbnRzLCBieSB0dXJuaW5nIHRoZSBzZXQgaW50byBhCisgIGZyb3plbnNldCBhbmQgcHJlLWJ1aWxkaW5nIGl0IGFzIGEgY29uc3RhbnQuICBUaGUgY29tcGFyaXNvbiBvcGVyYXRpb24gaXMgbWFkZQorICBhZ2FpbnN0IHRoZSBjb25zdGFudCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIGEgbmV3IHNldCBlYWNoIHRpbWUgaXQgaXMgZXhlY3V0ZWQgKGEKKyAgc2ltaWxhciBvcHRpbWl6YXRpb24gYWxyZWFkeSBleGlzdGVkIHdoaWNoIHR1cm5lZCBhIGxpc3Qgb2YgY29uc3RhbnRzIGludG8gYQorICBwcmUtYnVpbHQgdHVwbGUpLiAgUGF0Y2ggYW5kIGFkZGl0aW9uYWwgdGVzdHMgYnkgRGF2ZSBNYWxjb2xtLgorCistIElzc3VlICM3NjIyOiBJbXByb3ZlIHRoZSBzcGxpdCgpLCByc3BsaXQoKSwgc3BsaXRsaW5lcygpIGFuZCByZXBsYWNlKCkgbWV0aG9kcworICBvZiBieXRlcywgYnl0ZWFycmF5IGFuZCB1bmljb2RlIG9iamVjdHMgYnkgdXNpbmcgYSBjb21tb24gaW1wbGVtZW50YXRpb24gYmFzZWQKKyAgb24gc3RyaW5nbGliJ3MgZmFzdCBzZWFyY2guICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzc2MzI6IEZpeCB2YXJpb3VzIHN0ciAtPiBmbG9hdCBjb252ZXJzaW9uIGJ1Z3MgcHJlc2VudCBpbiAyLjcgYWxwaGEgMiwKKyAgaW5jbHVkaW5nOiAoMSkgYSBzZXJpb3VzICd3cm9uZyBvdXRwdXQnIGJ1ZyB0aGF0IGNvdWxkIG9jY3VyIGZvciBsb25nICg+IDQwCisgIGRpZ2l0KSBpbnB1dCBzdHJpbmdzLCAoMikgYSBjcmFzaCBpbiBkdG9hLmMgdGhhdCBvY2N1cnJlZCBpbiBkZWJ1ZyBidWlsZHMgd2hlbgorICBwYXJzaW5nIGNlcnRhaW4gbG9uZyBudW1lcmljIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byBzdWJub3JtYWwgdmFsdWVzLCAoMykgYQorICBtZW1vcnkgbGVhayBmb3Igc29tZSB2YWx1ZXMgbGFyZ2UgZW5vdWdoIHRvIGNhdXNlIG92ZXJmbG93LCBhbmQgKDQpIGEgbnVtYmVyCisgIG9mIGZsYXdzIHRoYXQgY291bGQgbGVhZCB0byBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdHMuCisKKy0gVGhlIF9fY29tcGxleF9fIG1ldGhvZCBpcyBub3cgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBvZiBpbnN0YW5jZXMgdG8gbWFrZSBpdAorICBjb25zaXN0ZW50IHdpdGggb3RoZXIgc3BlY2lhbCBtZXRob2RzLgorCistIElzc3VlICM3NDYyOiBJbXBsZW1lbnQgdGhlIHN0cmluZ2xpYiBmYXN0IHNlYXJjaCBhbGdvcml0aG0gZm9yIHRoZSBgcmZpbmRgLAorICBgcmluZGV4YCwgYHJzcGxpdGAgYW5kIGBycGFydGl0aW9uYCBtZXRob2RzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgorCistIElzc3VlICM3NjA0OiBEZWxldGluZyBhbiB1bnNldCBzbG90dGVkIGF0dHJpYnV0ZSBkaWQgbm90IHJhaXNlIGFuCisgIEF0dHJpYnV0ZUVycm9yLgorCistIElzc3VlICM3NTM0OiBGaXggaGFuZGxpbmcgb2YgSUVFRSBzcGVjaWFscyAoaW5maW5pdGllcywgbmFucywgbmVnYXRpdmUgemVybykKKyAgaW4gKiogb3BlcmF0b3IuICBUaGUgYmVoYXZpb3VyIG5vdyBjb25mb3JtcyB0byB0aGF0IGRlc2NyaWJlZCBpbiBDOTkgQW5uZXggRi4KKworLSBJc3N1ZSAjMTgxMTogaW1wcm92ZSBhY2N1cmFjeSBhbmQgY3Jvc3MtcGxhdGZvcm0gY29uc2lzdGVuY3kgZm9yIHRydWUgZGl2aXNpb24KKyAgb2YgaW50ZWdlcnM6IHRoZSByZXN1bHQgb2YgYS9iIGlzIG5vdyBjb3JyZWN0bHkgcm91bmRlZCBmb3IgaW50cyBhIGFuZCBiIChhdAorICBsZWFzdCBvbiBJRUVFIDc1NCBwbGF0Zm9ybXMpLCBhbmQgaW4gcGFydGljdWxhciBkb2VzIG5vdCBkZXBlbmQgb24gdGhlCisgIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludC4KKworLSBJc3N1ZSAjNjgzNDogcmVwbGFjZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAncHl0aG9uJyBhbmQgJ3B5dGhvbncnCisgIGV4ZWN1dGFibGVzIG9uIE9TWC4KKworICBUaGVzZSBleGVjdXRhYmxlcyBub3cgd29yayBwcm9wZXJseSB3aXRoIHRoZSBhcmNoKDEpIGNvbW1hbmQ6IGBgYXJjaCAtcHBjCisgIHB5dGhvbmBgIHdpbGwgc3RhcnQgYSB1bml2ZXJzYWwgYmluYXJ5IHZlcnNpb24gb2YgcHl0aG9uIGluIFBQQyBtb2RlICh1bmxpa2UKKyAgcHJldmlvdXMgcmVsZWFzZXMpLgorCistIElzc3VlICM3NDY2OiBTZWdtZW50YXRpb24gZmF1bHQgd2hlbiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgY2FsbGVkIGluIHRoZQorICBtaWRkbGUgb2YgcG9wdWxhdGluZyBhIHR1cGxlLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgorCistIElzc3VlICM3NDE5OiBzZXRsb2NhbGUoKSBjb3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgb24gV2luZG93cyB3aGVuIGNhbGxlZAorICB3aXRoIGludmFsaWQgdmFsdWVzLgorCistIElzc3VlICM2MDc3OiBPbiBXaW5kb3dzLCBmaWxlcyBvcGVuZWQgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlIGluICJ3dCsiCisgIG1vZGUgd291bGQgYXBwZWFyIHRydW5jYXRlZCBvbiB0aGUgZmlyc3QgJzB4MWEnIGJ5dGUgKGFrYS4gQ3RybCtaKS4KKworLSBJc3N1ZSAjNzA4NTogRml4IGNyYXNoIHdoZW4gaW1wb3J0aW5nIHNvbWUgZXh0ZW5zaW9ucyBpbiBhIHRocmVhZCBvbiBNYWNPU1gKKyAgMTAuNi4KKworLSBJc3N1ZSAjMTc1NzEyNjogRml4IHRoZSBjeXJpbGxpYy1hc2lhbiBhbGlhcyBmb3IgdGhlIHB0Y3AxNTQgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzY5NzA6IFJlbW92ZSByZWR1bmRhbnQgY2FsbHMgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyB0aGF0IGRvbid0CisgIGltcGxlbWVudCB0aGUgcmVsZXZhbnQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMuCisKKy0gSXNzdWUgIzcyOTg6IEZpeGVzIGZvciByYW5nZSBhbmQgcmV2ZXJzZWQocmFuZ2UoLi4uKSkuICBJdGVyYXRpb24gb3ZlcgorICByYW5nZShhLCBiLCBjKSBpbmNvcnJlY3RseSBnYXZlIGFuIGVtcHR5IGl0ZXJhdG9yIHdoZW4gYSwgYiBhbmQgYyBmaXQgaW4gQworICBsb25nIGJ1dCB0aGUgbGVuZ3RoIG9mIHRoZSByYW5nZSBkaWQgbm90LiAgQWxzbyBmaXggc2V2ZXJhbCBjYXNlcyB3aGVyZQorICByZXZlcnNlZChyYW5nZShhLCBiLCBjKSkgZ2F2ZSB3cm9uZyByZXN1bHRzLCBhbmQgZml4IGEgcmVmbGVhayBmb3IKKyAgcmV2ZXJzZWQocmFuZ2UoYSwgYiwgYykpIHdpdGggbGFyZ2UgYXJndW1lbnRzLgorCistIElzc3VlICM3MjQ0OiBpdGVydG9vbHMuaXppcF9sb25nZXN0KCkgbm8gbG9uZ2VyIGlnbm9yZXMgZXhjZXB0aW9ucyByYWlzZWQKKyAgZHVyaW5nIHRoZSBmb3JtYXRpb24gb2YgYW4gb3V0cHV0IHR1cGxlLgorCistIElzc3VlICMzMjk3OiBPbiB3aWRlIHVuaWNvZGUgYnVpbGRzLCBkbyBub3Qgc3BsaXQgdW5pY29kZSBjaGFyYWN0ZXJzIGludG8KKyAgc3Vycm9nYXRlcy4KKworLSBSZW1vdmUgbGVuZ3RoIGxpbWl0YXRpb24gd2hlbiBjb25zdHJ1Y3RpbmcgYSBjb21wbGV4IG51bWJlciBmcm9tIGEgc3RyaW5nLgorCistIElzc3VlICMxMDg3NDE4OiBCb29zdCBwZXJmb3JtYW5jZSBvZiBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yIGxvbmdzLgorCistIFN1cHBvcnQgZm9yIEF0aGVPUyBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQgZnJvbSB0aGUgY29kZSBiYXNlLiBJdCB3YXMKKyAgZGlzYWJsZWQgc2luY2UgUHl0aG9uIDMuMC4KKworLSBTdXBwb3J0IGZvciBzZXZlcmFsIGxlZ2FjeSB0aHJlYWRpbmcgbGlicmFyaWVzIGhhcyBiZWVuIGRpc2FibGVkLiBUaGVzZQorICBsaWJyYXJpZXMgYXJlOiBNYWNoIEMgdGhyZWFkcywgU3VuT1MgTFdQLCBHTlUgcHRoLCBJcml4IHRocmVhZHMuIFN1cHBvcnQgY29kZQorICB3aWxsIGJlIGVudGlyZWx5IHJlbW92ZWQgaW4gMy4zLgorCistIFN1cHBvcnQgZm9yIE9TRiogaGFzIGJlZW4gZGlzYWJsZWQuIElmIG5vYm9keSBzdGFuZHMgdXAsIHN1cHBvcnQgd2lsbCBiZQorICByZW1vdmVkIGluIDMuMy4gU2VlIDxodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNj4uCisKKy0gUGVlcGhvbGUgY29uc3RhbnQgZm9sZGluZyBoYWQgbWlzc2VkIFVOQVJZX1BPU0lUSVZFLgorCistIElzc3VlICMxNzIyMzQ0OiB0aHJlYWRpbmcuX3NodXRkb3duKCkgaXMgbm93IGNhbGxlZCBpbiBQeV9GaW5hbGl6ZSgpLCB3aGljaAorICBmaXhlcyB0aGUgcHJvYmxlbSBvZiBzb21lIGV4Y2VwdGlvbnMgYmVpbmcgdGhyb3duIGF0IHNodXRkb3duIHdoZW4gdGhlCisgIGludGVycHJldGVyIGlzIGtpbGxlZC4gUGF0Y2ggYnkgQWRhbSBPbHNlbi4KKworLSBJc3N1ZSAjNzE0NzogUmVtb3ZlIHN1cHBvcnQgZm9yIGNvbXBpbGluZyBQeXRob24gd2l0aG91dCBjb21wbGV4IG51bWJlcgorICBzdXBwb3J0LgorCistIElzc3VlICM3MTIwOiBsb2dnaW5nOiBSZW1vdmVkIGltcG9ydCBvZiBtdWx0aXByb2Nlc3Npbmcgd2hpY2ggaXMgY2F1c2luZyBjcmFzaAorICBpbiBHQUUuCisKKy0gSXNzdWUgIzE3NTQwOTQ6IEltcHJvdmUgdGhlIHN0YWNrIGRlcHRoIGNhbGN1bGF0aW9uIGluIHRoZSBjb21waWxlci4gIFRoZXJlCisgIHNob3VsZCBiZSBubyBvdGhlciBlZmZlY3QgdGhhbiBhIHNtYWxsIGRlY3JlYXNlIGluIG1lbW9yeSB1c2UuICBQYXRjaCBieQorICBDaHJpc3RvcGhlciBUdXIgTGVzbmlld3NraS1MYWFzLgorCistIElzc3VlICM3MDY1OiBGaXggYSBjcmFzaCBpbiBieXRlcy5tYWtldHJhbnMgYW5kIGJ5dGVhcnJheS5tYWtldHJhbnMgd2hlbiB1c2luZworICBieXRlIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkgRGVyayBEcnVra2VyLgorCistIElzc3VlICMxNTcxMTg0OiBUaGUgVW5pY29kZSBkYXRhYmFzZSBjb250YWlucyBwcm9wZXJ0aWVzIGZvciBtb3JlIGNoYXJhY3RlcnMuCisgIFRoZSB0YWJsZXMgZm9yIGNvZGUgcG9pbnRzIHJlcHJlc2VudGluZyBudW1lcmljIHZhbHVlcywgd2hpdGUgc3BhY2VzIG9yIGxpbmUKKyAgYnJlYWtzIGFyZSBub3cgZ2VuZXJhdGVkIGZyb20gdGhlIG9mZmljaWFsIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGZpbGVzLAorICBhbmQgaW5jbHVkZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBVbmloYW4udHh0IGZpbGUuCisKKy0gSXNzdWUgIzcwMTk6IFJhaXNlIFZhbHVlRXJyb3Igd2hlbiB1bm1hcnNoYWxsaW5nIGJhZCBsb25nIGRhdGEsIGluc3RlYWQgb2YKKyAgcHJvZHVjaW5nIGludGVybmFsbHkgaW5jb25zaXN0ZW50IFB5dGhvbiBsb25ncy4KKworLSBJc3N1ZSAjNjk5MDogRml4IHRocmVhZGluZy5sb2NhbCBzdWJjbGFzc2VzIGxlYXZpbmcgb2xkIHN0YXRlIGFyb3VuZCBhZnRlciBhCisgIHJlZmVyZW5jZSBjeWNsZSBHQyB3aGljaCBjb3VsZCBiZSByZWN5Y2xlZCBieSBuZXcgbG9jYWxzLgorCistIElzc3VlICM1NDYwOiBGaXggYW4gYW1iaWd1aXR5IGluIHRoZSBncmFtbWFyLgorCistIElzc3VlICMxNzY2MzA0OiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIG1lbWJlcnNoaXAgdGVzdHMgb24gcmFuZ2Ugb2JqZWN0cy4KKworLSBJc3N1ZSAjNjcxMzogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBpbnRlZ2VyIC0+IHN0cmluZyBjb252ZXJzaW9ucy4KKworLSBJc3N1ZSAjNjg0NjogRml4IGJ1ZyB3aGVyZSBieXRlYXJyYXkucG9wKCkgcmV0dXJucyBuZWdhdGl2ZSBpbnRlZ2Vycy4KKworLSBJc3N1ZSAjNjc1MDogQSB0ZXh0IGZpbGUgb3BlbmVkIHdpdGggaW8ub3BlbigpIGNvdWxkIGR1cGxpY2F0ZSBpdHMgb3V0cHV0IHdoZW4KKyAgd3JpdGluZyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZS4KKworLSBJc3N1ZSAjNjcwNzogZGlyKCkgb24gYW4gdW5pbml0aWFsaXplZCBtb2R1bGUgY2F1c2VkIGEgY3Jhc2guCisKKy0gSXNzdWUgIzY1NDA6IEZpeGVkIGNyYXNoIGZvciBieXRlYXJyYXkudHJhbnNsYXRlKCkgd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMuCisKKy0gSXNzdWUgIzY1NzM6IHNldC51bmlvbigpIHN0b3BwZWQgcHJvY2Vzc2luZyBpbnB1dHMgaWYgYW4gaW5zdGFuY2Ugb2Ygc2VsZgorICBvY2N1cnJlZCBpbiB0aGUgYXJndW1lbnQgY2hhaW4uCisKKy0gSXNzdWUgIzYwNzA6IE9uIHBvc2l4IHBsYXRmb3JtcyBpbXBvcnQgbm8gbG9uZ2VyIGNvcGllcyB0aGUgZXhlY3V0ZSBiaXQgZnJvbQorICB0aGUgLnB5IGZpbGUgdG8gdGhlIC5weWMgZmlsZSBpZiBpdCBpcyBzZXQuCisKKy0gSXNzdWUgIzE2MTY5Nzk6IEFkZGVkIHRoZSBjcDcyMCAoQXJhYmljIERPUykgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzY0Mjg6IFNpbmNlIFB5dGhvbiAzLjAsIHRoZSBfX2Jvb2xfXyBtZXRob2QgbXVzdCByZXR1cm4gYSBib29sIG9iamVjdCwKKyAgYW5kIG5vdCBhbiBpbnQuICBGaXggdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uLgorCistIFRoZSBkZXByZWNhdGVkIFB5Q09iamVjdCBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM2MzQ3OiBJbmNsdWRlIGludHR5cGVzLmggYXMgd2VsbCBhcyBzdGRpbnQuaCBpbiBweXBvcnQuaC4gIFRoaXMgZml4ZXMgYQorICBidWlsZCBmYWlsdXJlIG9uIEhQLVVYOiBpbnQzMl90IGFuZCB1aW50MzJfdCBhcmUgZGVmaW5lZCBpbiBpbnR0eXBlcy5oIGluc3RlYWQKKyAgb2Ygc3RkaW50Lmggb24gdGhhdCBwbGF0Zm9ybS4KKworLSBJc3N1ZSAjNjM3MzogRml4ZWQgYSBTeXN0ZW1FcnJvciB3aGVuIGVuY29kaW5nIHdpdGggdGhlIGxhdGluLTEgY29kZWMgYW5kIHRoZQorICAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCBhIHN0cmluZyB3aGljaCBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzLgorCistIElzc3VlICM0ODU2OiBSZW1vdmUgY2hlY2tzIGZvciB3aW4gTlQuCisKKy0gSXNzdWUgIzY2ODc6IFB5Qnl0ZXNfRnJvbU9iamVjdCgpIG5vIGxvbmdlciBhY2NlcHRzIGFuIGludGVnZXIgYXMgaXRzIGFyZ3VtZW50CisgIHRvIGNvbnN0cnVjdCBhIG51bGwtaW5pdGlhbGl6ZWQgYnl0ZXMgb2JqZWN0LgorCistIElzc3VlICMxMDIzMjkwOiBBZGQgZnJvbV9ieXRlcygpIGFuZCB0b19ieXRlcygpIG1ldGhvZHMgdG8gaW50ZWdlcnMuICBUaGVzZQorICBtZXRob2RzIGFsbG93IHRoZSBjb252ZXJzaW9uIG9mIGludGVnZXJzIHRvIGJ5dGVzLCBhbmQgdmljZS12ZXJzYS4KKworLSBJc3N1ZSAjNzM4MjogRml4IGJ1ZyBpbiBieXRlcy5fX2dldG5ld2FyZ3NfXyB0aGF0IHByZXZlbnRlZCBieXRlcyBpbnN0YW5jZXMKKyAgZnJvbSBiZWluZyBjb3BpZWQgd2l0aCBjb3B5LmNvcHkoKSwgYW5kIGJ5dGVzIHN1YmNsYXNzZXMgZnJvbSBiZWluZyBwaWNrbGVkCisgIHByb3Blcmx5LgorCistIENvZGUgb2JqZWN0cyBub3cgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMuCisKKy0gSXNzdWUgIzcwNzI6IGlzc3BhY2UoMHhhMCkgaXMgdHJ1ZSBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjODA4NDogUEVQIDM3MCBub3cgY29uZm9ybXMgdG8gc3lzdGVtIGNvbnZlbnRpb25zIGZvciBmcmFtZXdvcmsgYnVpbGRzCisgIG9uIE1hY09TIFguIFRoYXQgaXMsICJweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIiIHdpbGwgaW5zdGFsbCBpbnRvCisgICJ+L0xpYnJhcnkvUHl0aG9uLzIuNyIgaW5zdGVhZCBvZiAifi8ubG9jYWwiLgorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjQ0MzogQSBuZXcgbWFjcm8sIGBQeV9WQV9DT1BZYCwgY29waWVzIHRoZSBzdGF0ZSBvZiB0aGUKKyAgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4gIGBQeV9WQV9DT1BZYCBpcyBlcXVpdmFsZW50IHRvIEM5OQorICBgdmFfY29weWAsIGJ1dCBhdmFpbGFibGUgb24gYWxsIHB5dGhvbiBwbGF0Zm9ybXMuCisKKy0gUHlTbGljZV9HZXRJbmRpY2VzRXggbm93IGNsaXBzIHRoZSBzdGVwIHRvIFstUFlfU1NJWkVfVF9NQVgsIFBZX1NTSVpFX1RfTUFYXQorICBpbnN0ZWFkIG9mIFstUFlfU1NJWkVfVF9NQVgtMSwgUFlfU1NJWkVfVF9NQVhdLiAgVGhpcyBtYWtlcyBpdCBzYWZlIHRvIGRvCisgICJzdGVwID0gLXN0ZXAiIHdoZW4gcmV2ZXJzaW5nIGEgc2xpY2UuCisKKy0gSXNzdWUgIzU3NTM6IEEgbmV3IEMgQVBJIGZ1bmN0aW9uLCBgUHlTeXNfU2V0QXJndkV4YCwgYWxsb3dzIGVtYmVkZGVycyBvZiB0aGUKKyAgaW50ZXJwcmV0ZXIgdG8gc2V0IHN5cy5hcmd2IHdpdGhvdXQgYWxzbyBtb2RpZnlpbmcgc3lzLnBhdGguICBUaGlzIGhlbHBzIGZpeAorICBgQ1ZFLTIwMDgtNTk4MworICA8aHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDA4LTU5ODM+YF8uCisKKy0gQWRkIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cywgd2hpY2ggY2hlY2tzIGlmIGFsbCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUKKyAgc3RyaW5ncyBpbiBhbiBlZmZpY2llbnQgbWFubmVyLgorCistIElzc3VlICM4Mjc2OiBQeUV2YWxfQ2FsbE9iamVjdCgpIGlzIG5vdyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNybyBmb3JtLiAgVGhlCisgIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCB3aGljaCB3YXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgaXMKKyAgbm93IHJlbW92ZWQgKHRoZSBtYWNybyB3YXMgaW50cm9kdWNlZCBpbiAxOTk3ISkuCisKKy0gSXNzdWUgIzc3Njc6IE5ldyBmdW5jdGlvbiBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93IGFkZGVkLCBhbmFsb2dvdXMgdG8KKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93LgorCistIE1ha2UgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgcmV0dXJuIG5vdCBlcXVhbCBpZiB0aGUgUHl0aG9uIHN0cmluZworICBoYXMgJ1wwJyBhdCB0aGUgZW5kLgorCistIElzc3VlICM1MDgwOiBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgUHlBcmdfUGFyc2VUdXBsZSwKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzLCBQeUFyZ19WYVBhcnNlLCBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyBhbmQKKyAgUHlBcmdfUGFyc2Ugbm93IHJhaXNlIGEgRGVwcmVjYXRpb25XYXJuaW5nIGZvciBmbG9hdCBhcmd1bWVudHMgcGFzc2VkIHdpdGggdGhlCisgICdMJyBmb3JtYXQgY29kZS4gIFRoaXMgd2lsbCBiZWNvbWUgYSBUeXBlRXJyb3IgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24sCisgIHRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIG90aGVyIGludGVnZXIgZm9ybWF0IGNvZGVzLgorCistIElzc3VlICM3MDMzOiBGdW5jdGlvbiBgYFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoKWBgIGFkZGVkLgorCistIElzc3VlICM3NDE0OiAnQycgY29kZSB3YXNuJ3QgYmVpbmcgc2tpcHBlZCBwcm9wZXJseSAoZm9yIGtleXdvcmQgYXJndW1lbnRzKSBpbgorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMuCisKKy0gSXNzdWUgIzcyMjg6IEFkZCAnJWxsZCcgYW5kICclbGx1JyBzdXBwb3J0IHRvIFB5U3RyaW5nX0Zyb21Gb3JtYXQoVikgYW5kCisgIFB5RXJyX0Zvcm1hdCwgb24gbWFjaGluZXMgd2l0aCBIQVZFX0xPTkdfTE9ORyBkZWZpbmVkLgorCistIElzc3VlICM2MTUxOiBNYWRlIFB5RGVzY3JfQ09NTU9OIGNvbmZvcm0gdG8gc3RhbmRhcmQgQyAobGlrZSBQeU9iamVjdF9IRUFEIGluCisgIFBFUCAzMTIzKS4gIFRoZSBQeURlc2NyX1RZUEUgYW5kIFB5RGVzY3JfTkFNRSBtYWNyb3Mgc2hvdWxkIGJlIHNob3VsZCB1c2VkIGZvcgorICBhY2Nlc3NpbmcgdGhlIGRfdHlwZSBhbmQgZF9uYW1lIG1lbWJlcnMgb2Ygc3RydWN0dXJlcyB1c2luZyBQeURlc2NyX0NPTU1PTi4KKworLSBJc3N1ZSAjNjQwNTogUmVtb3ZlIGR1cGxpY2F0ZSB0eXBlIGRlY2xhcmF0aW9ucyBpbiBkZXNjcm9iamVjdC5oLgorCistIFRoZSBjb2RlIGZsYWdzIGZvciBvbGQgX19mdXR1cmVfXyBmZWF0dXJlcyBhcmUgbm93IGF2YWlsYWJsZSBhZ2Fpbi4KKworLSBJc3N1ZSAjNTk1NDogQWRkIGEgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgZnVuY3Rpb24gdG8gcmVwbGFjZSBtb3N0IHVzZXMgb2YKKyAgUHlDb2RlX0FkZHIyTGluZSgpLgorCistIElzc3VlICM1OTU5OiBBZGQgYSBQeUNvZGVfTmV3RW1wdHkoKSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgZW1wdHkgY29kZQorICBvYmplY3QgYXQgYSBzcGVjaWZpZWQgZmlsZSwgZnVuY3Rpb24sIGFuZCBsaW5lIG51bWJlci4KKworLSBJc3N1ZSAjMTQxOTY1MjogQ2hhbmdlIHRoZSBmaXJzdCBhcmd1bWVudCB0byBQeUltcG9ydF9BcHBlbmRJbml0dGFiKCkgdG8KKyAgYGBjb25zdCBjaGFyICpgYCBhcyB0aGUgc3RyaW5nIGlzIHN0b3JlZCBiZXlvbmQgdGhlIGNhbGwuCisKKy0gSXNzdWUgIzI0MjI6IFdoZW4gY29tcGlsZWQgd2l0aCB0aGUgYGAtLXdpdGgtdmFsZ3JpbmRgYCBvcHRpb24sIHRoZSBweW1hbGxvYworICBhbGxvY2F0b3Igd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZC4gIFRoaXMKKyAgZ2l2ZXMgaW1wcm92ZWQgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZCwgd2hpbGUgdGFraW5nCisgIGFkdmFudGFnZSBvZiBweW1hbGxvYyBhdCBvdGhlciB0aW1lcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIEluIHBkYiwgd2hlbiBDdHJsLUMgaXMgZW50ZXJlZCB3aGlsZSBkZWZpbmluZyBjb21tYW5kcyBmb3IgYSBicmVha3BvaW50LCB0aGUKKyAgb2xkIGNvbW1hbmRzIGFyZSByZXN0b3JlZC4KKworLSBGb3IgdHJhY2ViYWNrIGRlYnVnZ2luZywgdGhlIHBkYiBsaXN0aW5nIG5vdyBhbHNvIHNob3dzIHRoZSBsb2NhdGlvbnMgd2hlcmUKKyAgdGhlIGV4Y2VwdGlvbiB3YXMgb3JpZ2luYWxseSAocmUpcmFpc2VkLCBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIGxhc3QgbGluZQorICBleGVjdXRlZCAoZS5nLiBpbiBjYXNlIG9mIGZpbmFsbHkgY2xhdXNlcykuCisKKy0gVGhlIHBkYiBjb21tYW5kICJzb3VyY2UiIGhhcyBiZWVuIGFkZGVkLiAgSXQgZGlzcGxheXMgdGhlIHNvdXJjZSBjb2RlIGZvciBhCisgIGdpdmVuIG9iamVjdCwgaWYgcG9zc2libGUuCisKKy0gVGhlIHBkYiBjb21tYW5kICJsb25nbGlzdCIgaGFzIGJlZW4gYWRkZWQuICBJdCBkaXNwbGF5cyB0aGUgd2hvbGUgc291cmNlIGNvZGUKKyAgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorCistIElzc3VlICMxNTAzNTAyOiBNYWtlIHBkYi5QZGIgZWFzaWVyIHRvIHN1YmNsYXNzIGJ5IHB1dHRpbmcgbWVzc2FnZSBhbmQgZXJyb3IKKyAgb3V0cHV0IGludG8gbWV0aG9kcy4KKworLSBJc3N1ZSAjODA5ODg3OiBNYWtlIHRoZSBvdXRwdXQgb2YgcGRiJ3MgYnJlYWtwb2ludCBkZWxldGlvbnMgbW9yZSBjb25zaXN0ZW50OworICBlbWl0IGEgbWVzc2FnZSB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorCistIElzc3VlICM1Mjk0OiBGaXggdGhlIGJlaGF2aW9yIG9mIHBkYidzICJjb250aW51ZSIgY29tbWFuZCB3aGVuIGNhbGxlZCBpbiB0aGUKKyAgdG9wLWxldmVsIGRlYnVnZ2VkIGZyYW1lLgorCistIElzc3VlICM1NzI3OiBSZXN0b3JlIHRoZSBhYmlsaXR5IHRvIHVzZSByZWFkbGluZSB3aGVuIGNhbGxpbmcgaW50byBwZGIgaW4KKyAgZG9jdGVzdHMuCisKKy0gSXNzdWUgIzY3MTk6IEluIHBkYiwgZG8gbm90IHN0b3Agc29tZXdoZXJlIGluIHRoZSBlbmNvZGluZ3MgbWFjaGluZXJ5IGlmIHRoZQorICBzb3VyY2UgZmlsZSB0byBiZSBkZWJ1Z2dlZCBpcyBpbiBhIG5vbi1idWlsdGluIGVuY29kaW5nLgorCistIElzc3VlICM4MDQ4OiBQcmV2ZW50IGRvY3Rlc3RzIGZyb20gZmFpbGluZyB3aGVuIHN5cy5kaXNwbGF5aG9vayBoYXMgYmVlbgorICByZWFzc2lnbmVkLgorCistIElzc3VlICM4MDE1OiBJbiBwZGIsIGRvIG5vdCBjcmFzaCB3aGVuIGFuIGVtcHR5IGxpbmUgaXMgZW50ZXJlZCBhcyBhCisgIGJyZWFrcG9pbnQgY29tbWFuZC4KKworLSBJbiBwZGIsIGFsbG93IGdpdmluZyBhIGxpbmUgbnVtYmVyIHRvIHRoZSAidW50aWwiIGNvbW1hbmQuCisKKy0gSXNzdWUgIzE0MzcwNTE6IEZvciBwZGIsIGFsbG93ICJjb250aW51ZSIgYW5kIHJlbGF0ZWQgY29tbWFuZHMgaW4gLnBkYnJjCisgIGZpbGVzLiAgQWxzbywgYWRkIGEgY29tbWFuZC1saW5lIG9wdGlvbiAiLWMiIHRoYXQgcnVucyBhIGNvbW1hbmQgYXMgaWYgZ2l2ZW4KKyAgaW4gLnBkYnJjLgorCistIElzc3VlICM0MTc5OiBJbiBwZGIsIGFsbG93ICJsaXN0IC4iIGFzIGEgY29tbWFuZCB0byByZXR1cm4gdG8gdGhlIGN1cnJlbnRseQorICBkZWJ1Z2dlZCBsaW5lLgorCistIElzc3VlICM0MTA4OiBJbiB1cmxsaWIucm9ib3RwYXJzZXIsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBgYFVzZXItYWdlbnQ6ICpgYAorICBlbnRyaWVzLCBjb25zaWRlciB0aGUgZmlyc3Qgb25lLgorCistIElzc3VlICM2NjMwOiBBbGxvdyBjdXN0b21pemluZyByZWdleCBmbGFncyB3aGVuIHN1YmNsYXNzaW5nIHRoZQorICBzdHJpbmcuVGVtcGxhdGUgY2xhc3MuCisKKy0gSXNzdWUgIzk0MTE6IEFsbG93IHNwZWNpZnlpbmcgYW4gZW5jb2RpbmcgZm9yIGNvbmZpZyBmaWxlcyBpbiB0aGUgY29uZmlncGFyc2VyCisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY4Mjk0MjogSW1wcm92ZW1lbnRzIHRvIGNvbmZpZ3BhcnNlcjogc3VwcG9ydCBhbHRlcm5hdGUgZGVsaW1pdGVycywKKyAgYWx0ZXJuYXRlIGNvbW1lbnQgcHJlZml4ZXMgYW5kIGVtcHR5IGxpbmVzIGluIHZhbHVlcy4KKworLSBJc3N1ZSAjOTM1NDogUHJvdmlkZSBnZXRzb2Nrb3B0KCkgaW4gYXN5bmNvcmUncyBmaWxlX3dyYXBwZXIuCisKKy0gSXNzdWUgIzg5NjY6IGN0eXBlczogUmVtb3ZlIGltcGxpY2l0IGJ5dGVzLXVuaWNvZGUgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjOTM3ODogcHl0aG9uIC1tIHBpY2tsZSA8cGlja2xlIGZpbGU+IHdpbGwgbm93IGxvYWQgYW5kIGRpc3BsYXkgdGhlCisgIGZpcnN0IG9iamVjdCBpbiB0aGUgcGlja2xlIGZpbGUuCisKKy0gSXNzdWUgIzQ3NzA6IFJlc3RyaWN0IGJpbmFzY2lpIG1vZHVsZSB0byBhY2NlcHQgb25seSBieXRlcyAoYXMgc3BlY2lmaWVkKS4KKyAgQW5kIGZpeCB0aGUgZW1haWwgcGFja2FnZSB0byBlbmNvZGUgdG8gQVNDSUkgaW5zdGVhZCBvZiBgYHJhdy11bmljb2RlLWVzY2FwZWBgCisgIGJlZm9yZSBBU0NJSS10by1iaW5hcnkgZGVjb2RpbmcuCisKKy0gSXNzdWUgIzkzODQ6IGBgcHl0aG9uIC1tIHRraW50ZXJgYCB3aWxsIG5vdyBkaXNwbGF5IGEgc2ltcGxlIGRlbW8gYXBwbGV0LgorCistIFRoZSBkZWZhdWx0IHNpemUgb2YgdGhlIHJlIG1vZHVsZSdzIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYWNoZSBoYXMgYmVlbgorICBpbmNyZWFzZWQgZnJvbSAxMDAgdG8gNTAwIGFuZCB0aGUgY2FjaGUgcmVwbGFjZW1lbnQgcG9saWN5IGhhcyBjaGFuZ2VkIGZyb20KKyAgc2ltcGx5IGNsZWFyaW5nIHRoZSBlbnRpcmUgY2FjaGUgb24gb3ZlcmZsb3cgdG8gZm9yZ2V0dGluZyB0aGUgbGVhc3QgcmVjZW50bHkKKyAgdXNlZCBjYWNoZWQgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucy4gIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSB3aW4gZm9yCisgIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSBhIGxvdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBsaW1pdHMgdGhlIGltcGFjdCBvZgorICB0aGUgcGVyZm9ybWFuY2UgaGl0IGFueXRpbWUgdGhlIGNhY2hlIGlzIGV4Y2VlZGVkLgorCistIElzc3VlICM3MTEzOiBTcGVlZCB1cCBsb2FkaW5nIGluIGNvbmZpZ3BhcnNlci4gUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KKworLSBJc3N1ZSAjOTAzMjogWE1MLVJQQyBjbGllbnQgcmV0cmllcyB0aGUgcmVxdWVzdCBvbiBFUElQRSBlcnJvci4gIFRoZSBFUElQRQorICBlcnJvciBvY2N1cnMgd2hlbiB0aGUgc2VydmVyIGNsb3NlcyB0aGUgc29ja2V0IGFuZCB0aGUgY2xpZW50IHNlbmRzIGEgYmlnCisgIFhNTC1SUEMgcmVxdWVzdC4KKworLSBJc3N1ZSAjNDYyOTogZ2V0b3B0IHJhaXNlcyBhbiBlcnJvciBpZiBhbiBhcmd1bWVudCBlbmRzIHdpdGggIj0iLCB3aGVyZWFzCisgIGdldG9wdCBkb2Vzbid0IGFjY2VwdCBhIHZhbHVlIChlZy4gLS1oZWxwPSBpcyByZWplY3RlZCBpZiBnZXRvcHQgdXNlcworICBbJ2hlbHA9J10gbG9uZyBvcHRpb25zKS4KKworLSBJc3N1ZSAjNzk4OTogQWRkZWQgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBkYXRldGltZWAgbW9kdWxlLiAgVGhlIEMKKyAgbW9kdWxlIGlzIHJlbmFtZWQgdG8gYF9kYXRldGltZWAgYW5kIGlmIGF2YWlsYWJsZSwgb3ZlcnJpZGVzIGFsbCBjbGFzc2VzCisgIGRlZmluZWQgaW4gZGF0ZXRpbWUgd2l0aCBmYXN0IEMgaW1wZW1lbnRhdGlvbi4gIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZAorICBvbiB0aGUgb3JpZ2luYWwgcHl0aG9uIHByb3RvdHlwZSBmb3IgdGhlIGRhdGV0aW1lIG1vZHVsZSBieSBUaW0gUGV0ZXJzIHdpdGgKKyAgbWlub3IgbW9kaWZpY2F0aW9ucyBieSB0aGUgUHlQeSBwcm9qZWN0LiAgVGhlIHRlc3Qgc3VpdGUgbm93IHRlc3RzIGBkYXRldGltZWAKKyAgbW9kdWxlIHdpdGggYW5kIHdpdGhvdXQgYF9kYXRldGltZWAgYWNjZWxlcmF0aW9uIHVzaW5nIHRoZSBzYW1lIHRlc3QgY2FzZXMuCisKKy0gSXNzdWUgIzc4OTU6IHBsYXRmb3JtLm1hY192ZXIoKSBubyBsb25nZXIgY3Jhc2hlcyBhZnRlciBjYWxsaW5nIG9zLmZvcmsoKS4KKworLSBJc3N1ZSAjOTMyMzogRml4ZWQgYSBidWcgaW4gdHJhY2UucHkgdGhhdCByZXN1bHRlZCBpbiBsb29zaW5nIHRoZSBuYW1lIG9mIHRoZQorICBzY3JpcHQgYmVpbmcgdHJhY2VkLiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjOTI4MjogRml4ZWQgLS1saXN0ZnVuY3Mgb3B0aW9uIG9mIHRyYWNlLnB5LiAgVGhhbmtzIEVsaSBCZW5kZXJza3kgZm9yCisgIHRoZSBwYXRjaC4KKworLSBJc3N1ZSAjMzcwNDogaHR0cC5jb29raWVqYXIgd2FzIG5vdCBwcm9wZXJseSBoYW5kbGluZyBVUkxzIHdpdGggYSAvIGluIHRoZQorICBwYXJhbWV0ZXJzLgorCistIElzc3VlICM5MjY4OiBgYHBpY2tsZXRvb2xzLmRpcygpYGAgbm93IGhhcyBhbiBvcHRpb25hbCAqYW5ub3RhdGUqIGFyZ3VtZW50CisgIHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIG9wY29kZSBkZXNjcmlwdGlvbnMgaW4gYGBkaXMoKWBgIG91dHB1dC4KKworLSBJc3N1ZSAjMTU1NTU3MDogZW1haWwgbm8gbG9uZ2VyIGluc2VydHMgZXh0cmEgYmxhbmsgbGluZXMgd2hlbiBhIFxyXG4gY29tYm8KKyAgY3Jvc3NlcyBhbiA4MTkyIGJ5dGUgYm91bmRhcnkuCisKKy0gSXNzdWUgIzkyNDM6IEZpeCBzbmRoZHIgbW9kdWxlIGFuZCBhZGQgdW5pdCB0ZXN0cywgY29udHJpYnV0ZWQgYnkgSmFtZXMgTGVlLgorCistIGBgYXN0LmxpdGVyYWxfZXZhbCgpYGAgbm93IGFsbG93cyBieXRlIGxpdGVyYWxzLgorCistIElzc3VlICM5MTM3OiBGaXggaXNzdWUgaW4gTXV0YWJsZU1hcHBpbmcudXBkYXRlLCB3aGljaCBpbmNvcnJlY3RseSB0cmVhdGVkCisgIGtleXdvcmQgYXJndW1lbnRzIGNhbGxlZCAnc2VsZicgb3IgJ290aGVyJyBzcGVjaWFsbHkuCisKKy0gYGBhc3QubGl0ZXJhbF9ldmFsKClgYCBub3cgYWxsb3dzIHNldCBsaXRlcmFscy4KKworLSBJc3N1ZSAjOTE2NDogRW5zdXJlIHRoYXQgc3lzY29uZmlnIGhhbmRsZXMgZHVwbGljYXRlIC1hcmNoIGZsYWdzIGluIENGTEFHUy4KKworLSBJc3N1ZSAjNzY0NjogVGhlIGZubWF0Y2ggcGF0dGVybiBjYWNoZSBubyBsb25nZXIgZ3Jvd3Mgd2l0aG91dCBib3VuZC4KKworLSBJc3N1ZSAjOTEzNjogRml4ICdkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uJyBSdW50aW1lRXJyb3IKKyAgcHJvZHVjZWQgd2hlbiBwcm9maWxpbmcgdGhlIGRlY2ltYWwgbW9kdWxlLiAgVGhpcyB3YXMgZHVlIHRvIGEgZGFuZ2Vyb3VzCisgIGl0ZXJhdGlvbiBvdmVyICdsb2NhbHMoKScgaW4gQ29udGV4dC5fX2luaXRfXy4KKworLSBGaXggZXh0cmVtZSBzcGVlZCBpc3N1ZSBpbiBEZWNpbWFsLnBvdyB3aGVuIHRoZSBiYXNlIGlzIGFuIGV4YWN0IHBvd2VyIG9mIDEwCisgIGFuZCB0aGUgZXhwb25lbnQgaXMgdGlueSAoZm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgxMCkgKioKKyAgRGVjaW1hbCgnMWUtOTk5OTk5OTk5JylgYCkuCisKKy0gSXNzdWUgIzkxODY6IEZpeCBtYXRoLmxvZzFwKC0xLjApIHRvIHJhaXNlIFZhbHVlRXJyb3IsIG5vdCBPdmVyZmxvd0Vycm9yLgorCistIElzc3VlICM5MTMwOiBGaXggdmFsaWRhdGlvbiBvZiByZWxhdGl2ZSBpbXBvcnRzIGluIHBhcnNlciBtb2R1bGUuCisKKy0gSXNzdWUgIzkxMjg6IEZpeCB2YWxpZGF0aW9uIG9mIGNsYXNzIGRlY29yYXRvcnMgaW4gcGFyc2VyIG1vZHVsZS4KKworLSBJc3N1ZSAjOTA5NDogcHl0aG9uIC1tIHBpY2tsZXRvb2xzIHdpbGwgbm93IGRpc2Fzc2VtYmxlIHBpY2tsZSBmaWxlcyBsaXN0ZWQgaW4KKyAgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZWUgb3V0cHV0IG9mIHB5dGhvbiAtbSBwaWNrbGV0b29scyAtaCBmb3IgbW9yZQorICBkZXRhaWxzLgorCistIElzc3VlICM1NDY4OiB1cmxlbmNvZGUgdG8gaGFuZGxlIGJ5dGVzIHR5cGUgYW5kIG90aGVyIGVuY29kaW5ncyBpbiBpdHMgcXVlcnkKKyAgcGFyYW1ldGVyLiBQYXRjaCBieSBEYW4gTWFobi4KKworLSBJc3N1ZSAjNzY3MzogRml4IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgKENWRS0yMDEwLTIwODkpIGluIHRoZSBhdWRpb29wIG1vZHVsZSwKKyAgZW5zdXJlIHRoYXQgdGhlIGlucHV0IHN0cmluZyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiB0aGUgZnJhbWUgc2l6ZS4KKworLSBJc3N1ZSAjNjUwNzogQWNjZXB0IHNvdXJjZSBzdHJpbmdzIGluIGRpcy5kaXMoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IERhbmllbAorICBVcmJhbi4KKworLSBJc3N1ZSAjNzgyOTogQ2xlYXJseSBkb2N1bWVudCB0aGF0IHRoZSBkaXMgbW9kdWxlIGlzIGV4cG9zaW5nIGFuCisgIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IGlzIG5vdCBzdGFibGUgYmV0d2VlbiBQeXRob24gVk1zIG9yIHJlbGVhc2VzLgorCistIElzc3VlICM2NTg5OiBjbGVhbnVwIGFzeW5jb3JlLnNvY2tldF9tYXAgaW4gY2FzZSBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9yCisgIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzkxMTA6IEFkZGl0aW9uIG9mIENvbnRleHREZWNvcmF0b3IgdG8gY29udGV4dGxpYiwgZm9yIGNyZWF0aW5nIEFQSXMKKyAgdGhhdCBhY3QgYXMgYm90aCBjb250ZXh0IG1hbmFnZXJzIGFuZCBkZWNvcmF0b3JzLiBjb250ZXh0bWFuYWdlciBjaGFuZ2VzIHRvCisgIHVzZSBDb250ZXh0RGVjb3JhdG9yLgorCistIEltcGxlbWVudCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlciBhbmQgZGVwcmVjYXRlIFB5TG9hZGVyIGFuZCBQeVB5Y0xvYWRlcgorICBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy40LgorCistIElzc3VlICM5MDY0OiBwZGIncyAidXAiIGFuZCAiZG93biIgY29tbWFuZHMgbm93IGFjY2VwdCBhbiBvcHRpb25hbCBhcmd1bWVudAorICBnaXZpbmcgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gZ28uCisKKy0gSXNzdWUgIzkwMTg6IG9zLnBhdGgubm9ybWNhc2UoKSBub3cgcmFpc2VzIGEgVHlwZUVycm9yIGlmIHRoZSBhcmd1bWVudCBpcyBub3QKKyAgYGBzdHJgYCBvciBgYGJ5dGVzYGAuCisKKy0gSXNzdWUgIzkwNzU6IEluIHRoZSBzc2wgbW9kdWxlLCByZW1vdmUgdGhlIHNldHRpbmcgb2YgYSBgYGRlYnVnYGAgZmxhZyBvbiBhbgorICBPcGVuU1NMIHN0cnVjdHVyZS4KKworLSBJc3N1ZSAjODY4MjogVGhlIHNzbCBtb2R1bGUgbm93IHRlbXBvcmFyeSBpbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgYQorICBzb2NrZXQgb2JqZWN0IGdvdCB0aHJvdWdoIGBgUHlXZWFrcmVmX0dldE9iamVjdGBgLCBzbyBhcyB0byBhdm9pZCBwb3NzaWJsZQorICBkZWFsbG9jYXRpb24gd2hpbGUgdGhlIG9iamVjdCBpcyBzdGlsbCBiZWluZyB1c2VkLgorCistIElzc3VlICMxMzY4MzY4OiBGYW5jeVVSTE9wZW5lciBjbGFzcyBjaGFuZ2VkIHRvIHRocm93IGFuIEV4Y2VwdGlvbiBvbiB3cm9uZworICBwYXNzd29yZCBpbnN0ZWFkIG9mIHByZXNlbnRpbmcgYW4gaW50ZXJhY3RpdmUgcHJvbXB0LiAgT2xkZXIgYmVoYXZpb3IgY2FuIGJlCisgIG9idGFpbmVkIGJ5IHBhc3NpbmcgcmV0cnk9VHJ1ZSB0byBodHRwX2Vycm9yX3h4eCBtZXRob2RzIG9mIEZhbmN5VVJMT3BlbmVyLgorCistIElzc3VlICM4NzIwOiBGaXggcmVncmVzc2lvbiBjYXVzZWQgYnkgZml4IGZvciAjNDA1MCBieSBtYWtpbmcgZ2V0c291cmNlZmlsZQorICBzbWFydCBlbm91Z2ggdG8gZmluZCBzb3VyY2UgZmlsZXMgaW4gdGhlIGxpbmVjYWNoZS4KKworLSBJc3N1ZSAjNTYxMDogZmVlZHBhcnNlciBubyBsb25nZXIgZWF0cyBleHRyYSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQgb2YgYSBib2R5CisgIHBhcnQgaWYgdGhlIGJvZHkgcGFydCBlbmRzIHdpdGggYSBgYFxyXG5gYC4KKworLSBJc3N1ZSAjODk4NjogbWF0aC5lcmZjIHdhcyBpbmNvcnJlY3RseSByYWlzaW5nIE92ZXJmbG93RXJyb3IgZm9yIHZhbHVlcworICBiZXR3ZWVuIC0yNy4zIGFuZCAtMzAuMCBvbiBzb21lIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjODc4NDogU2V0IHRhcmZpbGUgZGVmYXVsdCBlbmNvZGluZyB0byAndXRmLTgnIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzg5NjY6IElmIGEgY3R5cGVzIHN0cnVjdHVyZSBmaWVsZCBpcyBhbiBhcnJheSBvZiBjX2NoYXIsIGNvbnZlcnQgaXRzCisgIHZhbHVlIHRvIGJ5dGVzIGluc3RlYWQgb2Ygc3RyIChhcyBkb25lIGZvciBjX2NoYXIgYW5kIGNfY2hhcl9wKS4KKworLSBJc3N1ZSAjODE4ODogQ29tcGFyaXNvbnMgYmV0d2VlbiBEZWNpbWFsIGFuZCBGcmFjdGlvbiBvYmplY3RzIGFyZSBub3cKKyAgcGVybWl0dGVkLCByZXR1cm5pbmcgYSByZXN1bHQgYmFzZWQgb24gdGhlIGV4YWN0IG51bWVyaWNhbCB2YWx1ZXMgb2YgdGhlCisgIG9wZXJhbmRzLiAgVGhpcyBidWlsZHMgb24gaXNzdWUgIzI1MzEsIHdoaWNoIGFsbG93ZWQgRGVjaW1hbC10by1mbG9hdAorICBjb21wYXJpc29uczsgYWxsIGNvbXBhcmlzb25zIGludm9sdmluZyBudW1lcmljIHR5cGVzIChib29sLCBpbnQsIGZsb2F0LAorICBjb21wbGV4LCBEZWNpbWFsLCBGcmFjdGlvbikgc2hvdWxkIG5vdyBhY3QgYXMgZXhwZWN0ZWQuCisKKy0gSXNzdWUgIzg4OTc6IEZpeCBzdW5hdSBtb2R1bGUsIHVzZSBieXRlcyB0byB3cml0ZSB0aGUgaGVhZGVyLiBQYXRjaCB3cml0dGVuIGJ5CisgIFRob21hcyBKb2xsYW5zLgorCistIElzc3VlICM4ODk5OiB0aW1lLnN0cnVjdF90aW1lIG5vdyBoYXMgY2xhc3MgYW5kIGF0dHJpYnV0ZSBkb2NzdHJpbmdzLgorCistIElzc3VlICM2NDcwOiBEcm9wIFVOQyBwcmVmaXggaW4gRml4VGsuCisKKy0gSXNzdWUgIzQ3Njg6IGJhc2U2NCBlbmNvZGVkIGVtYWlsIGJvZHkgcGFydHMgd2VyZSBpbmNvcnJlY3RseSBzdG9yZWQgYXMgYmluYXJ5CisgIHN0cmluZ3MuICBUaGV5IGFyZSBub3cgY29ycmVjdGx5IGNvbnZlcnRlZCB0byBzdHJpbmdzLgorCistIElzc3VlICM4ODMzOiB0YXJmaWxlIGNyZWF0ZWQgaGFyZCBsaW5rIGVudHJpZXMgd2l0aCBhIHNpemUgZmllbGQgIT0gMCBieQorICBtaXN0YWtlLgorCistIENoYXJzZXQuYm9keV9lbmNvZGUgbm93IGNvcnJlY3RseSBoYW5kbGVzIGJhc2U2NCBlbmNvZGluZyBieSBlbmNvZGluZyB3aXRoIHRoZQorICBvdXRwdXRfY2hhcnNldCBiZWZvcmUgY2FsbGluZyBiYXNlNjRtaW1lLmVuY29kZS4gIFBhc3NlcyB0aGUgdGVzdHMgZnJvbSAyLngKKyAgaXNzdWUgIzEzNjgyNDcuCisKKy0gSXNzdWUgIzg4NDU6IHNxbGl0ZTMgQ29ubmVjdGlvbiBvYmplY3RzIG5vdyBoYXZlIGEgcmVhZC1vbmx5IGluX3RyYW5zYWN0aW9uCisgIGF0dHJpYnV0ZSB0aGF0IGlzIFRydWUgaWZmIHRoZXJlIGFyZSB1bmNvbW1pdHRlZCBjaGFuZ2VzLgorCistIElzc3VlICMxMjg5MTE4OiBkYXRldGltZS50aW1lZGVsdGEgb2JqZWN0cyBjYW4gbm93IGJlIG11bHRpcGxpZWQgYnkgZmxvYXQgYW5kCisgIGRpdmlkZWQgYnkgZmxvYXQgYW5kIGludCBvYmplY3RzLiAgUmVzdWx0cyBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZQorICBvZiB0aW1lZGVsdGEucmVzb2x1dGlvbiB3aXRoIHRpZXMgcmVzb2x2ZWQgdXNpbmcgcm91bmQtaGFsZi10by1ldmVuIG1ldGhvZC4KKworLSBJc3N1ZSAjNzE1MDogUmFpc2UgT3ZlcmZsb3dFcnJvciBpZiB0aGUgcmVzdWx0IG9mIGFkZGluZyBvciBzdWJ0cmFjdGluZworICB0aW1lZGVsdGEgZnJvbSBkYXRlIG9yIGRhdGV0aW1lIGZhbGxzIG91dHNpZGUgb2YgdGhlIE1JTllFQVI6TUFYWUVBUiByYW5nZS4KKworLSBJc3N1ZSAjODgwNjogYWRkIFNTTCBjb250ZXh0cyBzdXBwb3J0IHRvIGZ0cGxpYi4KKworLSBJc3N1ZSAjNDc2OTogRml4IG1haW4oKSBmdW5jdGlvbiBvZiB0aGUgYmFzZTY0IG1vZHVsZSwgdXNlIHN5cy5zdGRpbi5idWZmZXIKKyAgYW5kIHN5cy5zdGRvdXQuYnVmZmVyIChpbnN0ZWFkIG9mIHN5cy5zdGRpbiBhbmQgc3lzLnN0ZG91dCkgdG8gdXNlIHRoZSBieXRlcworICBBUEkuCisKKy0gSXNzdWUgIzg3NzA6IE5vdyBzeXNjb25maWcgZGlzcGxheXMgaW5mb3JtYXRpb24gd2hlbiBpdCdzIGNhbGxlZCBhcyBhIHNjcmlwdC4KKyAgSW5pdGlhbCBpZGVhIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjNjY2MjogRml4IHBhcnNpbmcgb2YgbWFsZm9ybWF0dGVkIGNoYXJyZWYgKCYjYmFkOyksIHBhdGNoIHdyaXR0ZW4gYnkKKyAgRnJlZHJpayBIw6XDpXJkLgorCistIElzc3VlICM4NTQwOiBEZWNpbWFsIG1vZHVsZTogcmVuYW1lIHRoZSBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgdG8KKyAgQ29udGV4dC5jbGFtcCBhbmQgbWFrZSBpdCBwdWJsaWMuICBUaGlzIGlzIHVzZWZ1bCBpbiBjcmVhdGluZyBjb250ZXh0cyB0aGF0CisgIGNvcnJlc3BvbmQgdG8gdGhlIGRlY2ltYWwgaW50ZXJjaGFuZ2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gSUVFRSA3NTQuCisKKy0gSXNzdWUgIzYyNjg6IEZpeCBzZWVrKCkgbWV0aG9kIG9mIGNvZGVjcy5vcGVuKCksIGRvbid0IHJlYWQgb3Igd3JpdGUgdGhlIEJPTQorICB0d2ljZSBhZnRlciBzZWVrKDApLiBGaXggYWxzbyByZXNldCgpIG1ldGhvZCBvZiBjb2RlY3MsIFVURi0xNiwgVVRGLTMyIGFuZAorICBTdHJlYW1Xcml0ZXIgY2xhc3Nlcy4KKworLSBJc3N1ZSAjMzc5ODogc3lzLmV4aXQobWVzc2FnZSkgd3JpdGVzIHRoZSBtZXNzYWdlIHRvIHN5cy5zdGRlcnIgZmlsZSwgaW5zdGVhZAorICBvZiB0aGUgQyBmaWxlIHN0ZGVyciwgdG8gdXNlIHN0ZGVyciBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjODc4MjogQWRkIGEgdHJhaWxpbmcgbmV3bGluZSBpbiBsaW5lY2FjaGUudXBkYXRlY2FjaGUgdG8gdGhlIGxhc3QgbGluZQorICBvZiBmaWxlcyB3aXRob3V0IG9uZS4KKworLSBJc3N1ZSAjODcyOTogUmV0dXJuIE5vdEltcGxlbWVudGVkIGZyb20gY29sbGVjdGlvbnMuTWFwcGluZy5fX2VxX18gd2hlbgorICBjb21wYXJpbmcgdG8gYSBub24tbWFwcGluZy4KKworLSBJc3N1ZSAjODc3NDogdGFibmFubnkgdXNlcyB0aGUgZW5jb2RpbmcgY29va2llICgjY29kaW5nOi4uLikgdG8gdXNlIHRoZQorICBjb3JyZWN0IGVuY29kaW5nLgorCistIElzc3VlICM0ODcwOiBBZGQgYW4gYG9wdGlvbnNgIGF0dHJpYnV0ZSB0byBTU0wgY29udGV4dHMsIGFzIHdlbGwgYXMgc2V2ZXJhbAorICBgYE9QXypgYCBjb25zdGFudHMgdG8gdGhlIGBzc2xgIG1vZHVsZS4gIFRoaXMgYWxsb3dzIHRvIHNlbGVjdGl2ZWx5IGRpc2FibGUKKyAgcHJvdG9jb2wgdmVyc2lvbnMsIHdoZW4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBQUk9UT0NPTF9TU0x2MjNgLgorCistIElzc3VlICM4NzU5OiBGaXhlZCB1c2VyIHBhdGhzIGluIHN5c2NvbmZpZyBmb3IgcG9zaXggYW5kIG9zMiBzY2hlbWVzLgorCistIElzc3VlICM4NjYzOiBkaXN0dXRpbHMubG9nIGVtdWxhdGVzIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4gRml4CisgIGNvbXBpbGF0aW9uIGluIGEgbm9uLUFTQ0lJIGRpcmVjdG9yeSBpZiBzdGRvdXQgZW5jb2RpbmcgaXMgQVNDSUkgKGVnLiBpZgorICBzdGRvdXQgaXMgbm90IGEgVFRZKS4KKworLSBJc3N1ZSAjODUxMzogb3MuZ2V0X2V4ZWNfcGF0aCgpIHN1cHBvcnRzIGInUEFUSCcga2V5IGFuZCBieXRlcyB2YWx1ZS4KKyAgc3VicHJvY2Vzcy5Qb3BlbigpIGFuZCBvcy5fZXhlY3ZwZSgpIHN1cHBvcnQgYnl0ZXMgcHJvZ3JhbSBuYW1lLiBBZGQKKyAgb3Muc3VwcG9ydHNfYnl0ZXNfZW52aXJvbiBmbGFnOiBUcnVlIGlmIHRoZSBuYXRpdmUgT1MgdHlwZSBvZiB0aGUgZW52aXJvbm1lbnQKKyAgaXMgYnl0ZXMgKGVnLiBGYWxzZSBvbiBXaW5kb3dzKS4KKworLSBJc3N1ZSAjODYzMzogdGFyZmlsZSBpcyBub3cgYWJsZSB0byByZWFkIGFuZCB3cml0ZSBhcmNoaXZlcyB3aXRoICJyYXciIGJpbmFyeQorICBwYXggaGVhZGVycyBhcyBkZXNjcmliZWQgaW4gUE9TSVguMS0yMDA4LgorCistIElzc3VlICMxMjg1MDg2OiBTcGVlZCB1cCB1cmxsaWIucGFyc2UgZnVuY3Rpb25zOiBxdW90ZSwgcXVvdGVfZnJvbV9ieXRlcywKKyAgdW5xdW90ZSwgdW5xdW90ZV90b19ieXRlcy4KKworLSBJc3N1ZSAjODY4ODogRGlzdHV0aWxzIG5vdyByZWNhbGN1bGF0ZXMgTUFOSUZFU1QgZXZlcnl0aW1lLgorCistIElzc3VlICM4NDc3OiBzc2wuUkFORF9lZ2QoKSBhbmQgc3NsLl90ZXN0X2RlY29kZV9jZXJ0KCkgc3VwcG9ydCBzdHIgd2l0aAorICBzdXJyb2dhdGVzIGFuZCBieXRlcyBmb3IgdGhlIGZpbGVuYW1lLgorCistIElzc3VlICM4NTUwOiBBZGQgZmlyc3QgY2xhc3MgYGBTU0xDb250ZXh0YGAgb2JqZWN0cyB0byB0aGUgc3NsIG1vZHVsZS4KKworLSBJc3N1ZSAjODY4MTogTWFrZSB0aGUgemxpYiBtb2R1bGUncyBlcnJvciBtZXNzYWdlcyBtb3JlIGluZm9ybWF0aXZlIHdoZW4gdGhlCisgIHpsaWIgaXRzZWxmIGRvZXNuJ3QgZ2l2ZSBhbnkgZGV0YWlsZWQgZXhwbGFuYXRpb24uCisKKy0gVGhlIGF1ZGlvb3AgbW9kdWxlIG5vdyBzdXBwb3J0cyBzb3VuZCBmcmFnbWVudHMgb2YgbGVuZ3RoIGdyZWF0ZXIgdGhhbiAyKiozMQorICBieXRlcyBvbiA2NC1iaXQgbWFjaGluZXMsIGFuZCBpcyBQWV9TU0laRV9UX0NMRUFOLgorCistIElzc3VlICM0OTcyOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0byB0aGUgZnRwbGliLkZUUAorICBjbGFzcy4KKworLSBJc3N1ZSAjODY2NDogSW4gcHlfY29tcGlsZSwgY3JlYXRlIF9fcHljYWNoZV9fIHdoZW4gdGhlIGNvbXBpbGVkIHBhdGggaXMKKyAgZ2l2ZW4uCisKKy0gSXNzdWUgIzg1MTQ6IEFkZCBvcy5mc2VuY29kZSgpIGZ1bmN0aW9uIChVbml4IG9ubHkpOiBlbmNvZGUgYSBzdHJpbmcgdG8gYnl0ZXMKKyAgZm9yIHVzZSBpbiB0aGUgZmlsZSBzeXN0ZW0sIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM4NTcxOiBGaXggYW4gaW50ZXJuYWwgZXJyb3Igd2hlbiBjb21wcmVzc2luZyBvciBkZWNvbXByZXNzaW5nIGEgY2h1bmsKKyAgbGFyZ2VyIHRoYW4gMUdCIHdpdGggdGhlIHpsaWIgbW9kdWxlJ3MgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG9iamVjdHMuCisKKy0gSXNzdWUgIzg2MDM6IFN1cHBvcnQgYnl0ZXMgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgb24gVW5peDogQWRkIG9zLmVudmlyb25iCisgIG1hcHBpbmcgYW5kIG9zLmdldGVudmIoKSBmdW5jdGlvbi4gb3MudW5zZXRlbnYoKSBlbmNvZGVzIHN0ciBhcmd1bWVudCB0byB0aGUKKyAgZmlsZSBzeXN0ZW0gZW5jb2Rpbmcgd2l0aCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgKGluc3RlYWQgb2YKKyAgdXRmOC9zdHJpY3QpIGFuZCBhY2NlcHRzIGJ5dGVzLiBwb3NpeC5lbnZpcm9uIGtleXMgYW5kIHZhbHVlcyBhcmUgbm93IGJ5dGVzLgorCistIElzc3VlICM4NTczOiBhc3luY29yZSBfc3RyZXJyb3IoKSBmdW5jdGlvbiBtaWdodCB0aHJvdyBWYWx1ZUVycm9yLgorCistIElzc3VlICM4NDgzOiBhc3luY29yZS5kaXNwYXRjaGVyJ3MgX19nZXRhdHRyX18gbWV0aG9kIHByb2R1Y2VkIGNvbmZ1c2luZyBlcnJvcgorICBtZXNzYWdlcyB3aGVuIGFjY2Vzc2luZyB1bmRlZmluZWQgY2xhc3MgYXR0cmlidXRlcyBiZWNhdXNlIG9mIHRoZSBjaGVhcAorICBpbmhlcml0YW5jZSB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuICBUaGUgY2hlYXAgaW5oZXJpdGFuY2UgaGFzIGJlZW4KKyAgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjNDI2NTogc2h1dGlsLmNvcHlmaWxlKCkgd2FzIGxlYWtpbmcgZmlsZSBkZXNjcmlwdG9ycyB3aGVuIGRpc2sgZmlsbHMuCisgIFBhdGNoIGJ5IFRyZXMgU2VhdmVyLgorCistIElzc3VlICM4MzkwOiB0YXJmaWxlIHVzZXMgc3Vycm9nYXRlZXNjYXBlIGFzIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIKKyAgKGluc3RlYWQgb2YgcmVwbGFjZSBpbiByZWFkIG1vZGUgb3Igc3RyaWN0IGluIHdyaXRlIG1vZGUpLgorCistIElzc3VlICM3NzU1OiBVc2UgYW4gdW5lbmN1bWJlcmVkIGF1ZGlvIGZpbGUgZm9yIHRlc3RzLgorCistIElzc3VlICM4NjIxOiB1dWlkLnV1aWQ0KCkgcmV0dXJuZWQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzIGluIHRoZSBwYXJlbnQKKyAgYW5kIGFueSBjaGlsZHJlbiBjcmVhdGVkIHVzaW5nIGBgb3MuZm9ya2BgIG9uIE1hY09TIFggMTAuNi4KKworLSBJc3N1ZSAjODU2NzogRml4IHByZWNlZGVuY2Ugb2Ygc2lnbmFscyBpbiBEZWNpbWFsIG1vZHVsZTogd2hlbiBhIERlY2ltYWwKKyAgb3BlcmF0aW9uIHJhaXNlcyBtdWx0aXBsZSBzaWduYWxzIGFuZCBtb3JlIHRoYW4gb25lIG9mIHRob3NlIHNpZ25hbHMgaXMKKyAgdHJhcHBlZCwgdGhlIHNwZWNpZmljYXRpb24gZGV0ZXJtaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHNpZ25hbHMgc2hvdWxkIGJlCisgIGhhbmRsZWQuICBJbiBtYW55IGNhc2VzIHRoaXMgb3JkZXIgd2Fzbid0IGJlaW5nIGZvbGxvd2VkLCBsZWFkaW5nIHRvIHRoZSB3cm9uZworICBQeXRob24gZXhjZXB0aW9uIGJlaW5nIHJhaXNlZC4KKworLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIGBgaW9gYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdworICBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgaW1wbGljaXQgZmx1c2goKS4gIEFsc28gcWVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKQorICBzZXZlcmFsIHRpbWVzIGlzIHN1cHBvcnRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCistIElzc3VlICM0Njg3OiBGaXggYWNjdXJhY3kgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnRpbWVzIGRpc3BsYXllZCB3aXRoCisgIGdjLkRFQlVHX1NUQVRTLgorCistIElzc3VlICM4MzU0OiBUaGUgc2lnaW50ZXJydXB0IHNldHRpbmcgaXMgbm93IHByZXNlcnZlZCBmb3IgYWxsIHNpZ25hbHMsIG5vdAorICBqdXN0IFNJR0NITEQuCisKKy0gSXNzdWUgIzcxOTI6IHdlYmJyb3dzZXIuZ2V0KCJmaXJlZm94Iikgbm93IHdvcmtzIG9uIE1hYyBPUyBYLCBhcyBkb2VzCisgIHdlYmJyb3dzZXIuZ2V0KCJzYWZhcmkiKS4KKworLSBJc3N1ZSAjODQ2NDogdGFyZmlsZSBubyBsb25nZXIgY3JlYXRlcyBmaWxlcyB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbnMgc2V0IHdoZW4KKyAgbW9kZT0id3wiIGlzIHVzZWQuCisKKy0gSXNzdWUgIzc4MzQ6IEZpeCBjb25uZWN0KCkgb2YgQmx1ZXRvb3RoIEwyQ0FQIHNvY2tldHMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YKKyAgdGhlIExpbnV4IGtlcm5lbC4gIFBhdGNoIGJ5IFlhbml2IEFrbmluLgorCistIElzc3VlICM4Mjk1OiBBZGRlZCBzaHV0aWwudW5wYWNrX2FyY2hpdmUuCisKKy0gSXNzdWUgIzYzMTI6IEZpeGVkIGh0dHAgSEVBRCByZXF1ZXN0IHdoZW4gdGhlIHRyYW5zZmVyIGVuY29kaW5nIGlzIGNodW5rZWQuCisgIEl0IHNob3VsZCBjb3JyZWN0bHkgcmV0dXJuIGFuIGVtcHR5IHJlc3BvbnNlIG5vdy4KKworLSBJc3N1ZSAjODU0NjogUmVqZWN0IE5vbmUgZ2l2ZW4gYXMgdGhlIGJ1ZmZlcmluZyBhcmd1bWVudCB0byBfcHlpby5vcGVuLgorCistIElzc3VlICM4NTQ5OiBGaXggY29tcGlsaW5nIHRoZSBfc3NsIGV4dGVuc2lvbiB1bmRlciBBSVguICBQYXRjaCBieQorICBTcmlkaGFyIFJhdG5ha3VtYXIuCisKKy0gSXNzdWUgIzY2NTY6IGZpeCBsb2NhbGUuZm9ybWF0X3N0cmluZyB0byBoYW5kbGUgZXNjYXBlZCBwZXJjZW50cworICBhbmQgbWFwcGluZ3MuCisKKy0gSXNzdWUgIzIzMDI6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIFNvY2tldFNlcnZlci5CYXNlU2VydmVyLnNodXRkb3duLCB3aGVyZQorICB0aGUgbWV0aG9kIGNvdWxkIGJsb2NrIGluZGVmaW5pdGVseSBpZiBjYWxsZWQganVzdCBiZWZvcmUgdGhlIGV2ZW50IGxvb3AKKyAgc3RhcnRlZCBydW5uaW5nLiAgVGhpcyBhbHNvIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIGZyZWV6ZXMgd2l0bmVzc2VkIGluCisgIHRlc3RfaHR0cHNlcnZlcnMuCisKKy0gSXNzdWUgIzg1MjQ6IFdoZW4gY3JlYXRpbmcgYW4gU1NMIHNvY2tldCwgdGhlIHRpbWVvdXQgdmFsdWUgb2YgdGhlIG9yaWdpbmFsCisgIHNvY2tldCB3YXNuJ3QgcmV0YWluZWQgKGluc3RlYWQsIGEgc29ja2V0IHdpdGggYSBwb3NpdGl2ZSB0aW1lb3V0IHdvdWxkIGJlCisgIHR1cm5lZCBpbnRvIGEgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXQpLgorCistIElzc3VlICM1MTAzOiBTU0wgaGFuZHNoYWtlIHdvdWxkIGlnbm9yZSB0aGUgc29ja2V0IHRpbWVvdXQgYW5kIGJsb2NrCisgIGluZGVmaW5pdGVseSBpZiB0aGUgb3RoZXIgZW5kIGRpZG4ndCByZXNwb25kLgorCistIFRoZSBkb19oYW5kc2hha2UoKSBtZXRob2Qgb2YgU1NMIG9iamVjdHMgbm93IGFkanVzdHMgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlCisgIFNTTCBzdHJ1Y3R1cmUgaWYgbmVjZXNzYXJ5IChhcyBvdGhlciBtZXRob2RzIGFscmVhZHkgZG8pLgorCistIElzc3VlICM4MzkxOiBvcy5leGVjdnBlKCkgYW5kIG9zLmdldGVudigpIHN1cHBvcnRzIHVuaWNvZGUgd2l0aCBzdXJyb2dhdGVzIGFuZAorICBieXRlcyBzdHJpbmdzIGZvciBlbnZpcm9ubWVudCBrZXlzIGFuZCB2YWx1ZXMuCisKKy0gSXNzdWUgIzg0Njc6IFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHN1YnByb2Nlc3MgZW5jb2RlcyB0aGUgZXJyb3IKKyAgbWVzc2FnZSB1c2luZyBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZQorICBtZXNzYWdlLgorCistIElzc3VlICM4NDY4OiBiejIuQloyRmlsZSgpIGFjY2VwdHMgc3RyIHdpdGggc3Vycm9nYXRlcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLgorCistIElzc3VlICM4NDUxOiBTeXNsb2cgbW9kdWxlIG5vdyB1c2VzIGJhc2VuYW1lKHN5cy5hcmd2WzBdKSBpbnN0ZWFkIG9mIHRoZQorICBzdHJpbmcgInB5dGhvbiIgYXMgdGhlICppZGVudCouICBvcGVubG9nKCkgYXJndW1lbnRzIGFyZSBhbGwgb3B0aW9uYWwgYW5kCisgIGtleXdvcmRzLgorCistIElzc3VlICM4MTA4OiBGaXggdGhlIHVud3JhcCgpIG1ldGhvZCBvZiBTU0wgb2JqZWN0cyB3aGVuIHRoZSBzb2NrZXQgaGFzIGEKKyAgbm9uLWluZmluaXRlIHRpbWVvdXQuICBBbHNvIG1ha2UgdGhhdCBtZXRob2QgZnJpZW5kbGllciB3aXRoIGFwcGxpY2F0aW9ucworICB3YW50aW5nIHRvIGNvbnRpbnVlIHVzaW5nIHRoZSBzb2NrZXQgaW4gY2xlYXItdGV4dCBtb2RlLCBieSBkaXNhYmxpbmcKKyAgT3BlblNTTCdzIGludGVybmFsIHJlYWRhaGVhZC4gIFRoYW5rcyB0byBEYXJyeWwgTWlsZXMgZm9yIGd1aWRhbmNlLgorCistIElzc3VlICM4NDk2OiBtYWtlIG1haWxjYXAubG9va3VwKCkgYWx3YXlzIHJldHVybiBhIGxpc3QsIHJhdGhlciB0aGFuIGFuCisgIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgR3JlZ29yeSBOb2ZpLgorCistIElzc3VlICM4MTk1OiBGaXggYSBjcmFzaCBpbiBzcWxpdGUgQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkgaWYgdGhlCisgIGNvbGxhdGlvbiBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjODQ4NDogTG9hZCBhbGwgY2lwaGVycyBhbmQgZGlnZXN0IGFsZ29yaXRobXMgd2hlbiBpbml0aWFsaXppbmcgdGhlIF9zc2wKKyAgZXh0ZW5zaW9uLCBzdWNoIHRoYXQgdmVyaWZpY2F0aW9uIG9mIHNvbWUgU1NMIGNlcnRpZmljYXRlcyBkb2Vzbid0IGZhaWwKKyAgYmVjYXVzZSBvZiBhbiAidW5rbm93biBhbGdvcml0aG0iLgorCistIElzc3VlICM2NTQ3OiBBZGRlZCB0aGUgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzIG9wdGlvbiB0byBzaHV0aWwuY29weXRyZWUuCisKKy0gSXNzdWUgIzE1NDAxMTI6IE5vdyBhbGxvd2luZyB0aGUgY2hvaWNlIG9mIGEgY29weSBmdW5jdGlvbiBpbiBzaHV0aWwuY29weXRyZWUuCisKKy0gSXNzdWUgIzQ4MTQ6IHRpbWVvdXQgcGFyYW1ldGVyIGlzIG5vdyBhcHBsaWVkIGFsc28gZm9yIGNvbm5lY3Rpb25zIHJlc3VsdGluZworICBmcm9tIFBPUlQvRVBSVCBjb21tYW5kcy4KKworLSBJc3N1ZSAjODQ2MzogYWRkZWQgbWlzc2luZyByZWZlcmVuY2UgdG8gYnp0YXIgaW4gc2h1dGlsJ3MgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjNzE1NDogdXJsbGliLnJlcXVlc3QgY2FuIG5vdyBkZXRlY3QgdGhlIHByb3h5IHNldHRpbmdzIG9uIE9TWCAxMC42IChhcworICBsb25nIGFzIHRoZSB1c2VyIGRpZG4ndCBzcGVjaWZ5ICdhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbicpLgorCistIElzc3VlICMzODE3OiBmdHBsaWIuRlRQLmFib3J0KCkgbWV0aG9kIG5vdyBjb25zaWRlcnMgMjI1IGEgdmFsaWQgcmVzcG9uc2UgY29kZQorICBhcyBzdGF0ZWQgaW4gUkZDLTk1OSBhdCBjaGFwdGVyIDUuNC4KKworLSBJc3N1ZSAjODM5NDogX2N0eXBlcy5kbG9wZW4oKSBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoCisgIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzg1MDcyODogQWRkIGEgKnRpbWVvdXQqIHBhcmFtZXRlciB0byB0aGUgYGFjcXVpcmUoKWAgbWV0aG9kIG9mCisgIGB0aHJlYWRpbmcuU2VtYXBob3JlYCBvYmplY3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgorCistIElzc3VlICM4MzIyOiBBZGQgYSAqY2lwaGVycyogYXJndW1lbnQgdG8gU1NMIHNvY2tldHMsIHNvIGFzIHRvIGNoYW5nZSB0aGUKKyAgYXZhaWxhYmxlIGNpcGhlciBsaXN0LiAgSGVscHMgZml4IHRlc3Rfc3NsIHdpdGggT3BlblNTTCAxLjAuMC4KKworLSBJc3N1ZSAjODM5Mzogc3VicHJvY2VzcyBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoIHN1cnJvZ2F0ZXMgZm9yCisgIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorCistIElzc3VlICM3NjA2OiBYTUwtUlBDIHRyYWNlYmFjayBzdG9yZWQgaW4gWC10cmFjZWJhY2sgaXMgbm93IGVuY29kZWQgdG8gQVNDSUkKKyAgdXNpbmcgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM4NDEyOiBvcy5zeXN0ZW0oKSBub3cgYWNjZXB0cyBieXRlcywgYnl0ZWFycmF5IGFuZCBzdHIgd2l0aCBzdXJyb2dhdGVzLgorCistIElzc3VlICMyOTg3OiBSRkMyNzMyIHN1cHBvcnQgZm9yIHVybHBhcnNlIChJUHY2IGFkZHJlc3NlcykuIFBhdGNoIGJ5IFRvbnkKKyAgTG9ja2UgYW5kIEhhbnMgVWxyaWNoIE5pZWRlcm1hbm4uCisKKy0gSXNzdWUgIzUyNzc6IEZpeCBxdW90ZSBjb3VudGluZyB3aGVuIHBhcnNpbmcgUkZDIDIyMzEgZW5jb2RlZCBwYXJhbWV0ZXJzLgorCistIElzc3VlICM3MzE2OiBUaGUgYWNxdWlyZSgpIG1ldGhvZCBvZiBsb2NrIG9iamVjdHMgaW4gdGhlIGBgdGhyZWFkaW5nYGAKKyAgbW9kdWxlIG5vdyB0YWtlcyBhbiBvcHRpb25hbCB0aW1lb3V0IGFyZ3VtZW50IGluIHNlY29uZHMuICBUaW1lb3V0IHN1cHBvcnQKKyAgcmVsaWVzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIGxpYnJhcnksIHNvIGFzIHRvIGF2b2lkIGEgc2VtaS1idXN5IHdhaXQgbG9vcC4KKworLSBJc3N1ZSAjODM4MzogcGlja2xlIGFuZCBwaWNrbGV0b29scyB1c2Ugc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyIHdoZW4KKyAgZW5jb2RpbmcgdW5pY29kZSBhcyB1dGY4IHRvIHN1cHBvcnQgbG9uZSBzdXJyb2dhdGVzIGFuZCBzdGF5IGNvbXBhdGlibGUgd2l0aAorICBQeXRob24gMi54IGFuZCAzLnguCisKKy0gSXNzdWUgIzc1ODU6IGRpZmZsaWIgY29udGV4dCBhbmQgdW5pZmllZCBkaWZmcyBub3cgcGxhY2UgYSB0YWIgYmV0d2VlbgorICBmaWxlbmFtZSBhbmQgZGF0ZSwgY29uZm9ybWluZyB0byB0aGUgJ3N0YW5kYXJkcycgdGhleSB3ZXJlIG9yaWdpbmFsbHkgZGVzaWduZWQKKyAgdG8gZm9sbG93LiAgVGhpcyBpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggcGF0Y2ggdG9vbHMuCisKKy0gSXNzdWUgIzc0NzI6IEZpeGVkIHR5cG8gaW4gZW1haWwuZW5jb2RlcnMgbW9kdWxlOyBtZXNzYWdlcyB1c2luZyBJU08tMjAyMgorICBjaGFyYWN0ZXIgc2V0cyB3aWxsIG5vdyBjb25zaXN0ZW50bHkgdXNlIGEgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBvZiA3Yml0CisgIHJhdGhlciB0aGFuIHNvbWV0aW1lcyBiZWluZyBtYXJrZWQgYXMgOGJpdC4KKworLSBJc3N1ZSAjODM3NTogdGVzdF9kaXN0dXRpbHMgbm93IGNoZWNrcyBpZiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhcmUgc3RpbGwKKyAgcHJlc2VudCBiZWZvcmUgaXQgY2xlYW5zIHRoZW0uCisKKy0gSXNzdWUgIzgzNzQ6IFVwZGF0ZSB0aGUgaW50ZXJuYWwgYWxpYXMgdGFibGUgaW4gdGhlIGBgbG9jYWxlYGAgbW9kdWxlIHRvCisgIGNvdmVyIHJlY2VudCBsb2NhbGUgY2hhbmdlcyBhbmQgYWRkaXRpb25zLgorCistIElzc3VlICM4MzIxOiBHaXZlIGFjY2VzcyB0byBPcGVuU1NMIHZlcnNpb24gbnVtYmVycyBmcm9tIHRoZSBgc3NsYCBtb2R1bGUsCisgIHVzaW5nIHRoZSBuZXcgYXR0cmlidXRlcyBgc3NsLk9QRU5TU0xfVkVSU0lPTmAsIGBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk9gIGFuZAorICBgc3NsLk9QRU5TU0xfVkVSU0lPTl9OVU1CRVJgLgorCistIEFkZCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSBhbmQgZnVuY3Rvb2xzLmNtcF90b19rZXkoKS4KKworLSBJc3N1ZSAjODI1NzogVGhlIERlY2ltYWwgY29uc3RydWN0IG5vdyBhY2NlcHRzIGEgZmxvYXQgaW5zdGFuY2UgZGlyZWN0bHksCisgIGNvbnZlcnRpbmcgdGhhdCBmbG9hdCB0byBhIERlY2ltYWwgb2YgZXF1YWwgdmFsdWU6CisKKyAgICAgPj4+IERlY2ltYWwoMS4xKQorICAgICBEZWNpbWFsKCcxLjEwMDAwMDAwMDAwMDAwMDA4ODgxNzg0MTk3MDAxMjUyMzIzMzg5MDUzMzQ0NzI2NTYyNScpCisKKy0gSXNzdWUgIzgyOTQ6IFRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBEZWNpbWFsIGFuZCBmbG9hdCBpbnN0YW5jZXMKKyAgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzcyNzk6IENvbXBhcmlzb25zIGludm9sdmluZyBhIERlY2ltYWwgc2lnbmFsaW5nIE5hTiBub3cgc2lnbmFsCisgIEludmFsaWRPcGVyYXRpb24gaW5zdGVhZCBvZiByZXR1cm5pbmcgRmFsc2UuICAoQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQKKyAgTmFOIGFyZSB1bmNoYW5nZWQuKSAgQWxzbywgRGVjaW1hbCBxdWlldCBOYU5zIGFyZSBub3cgaGFzaGFibGU7IERlY2ltYWwKKyAgc2lnbmFsaW5nIE5hTnMgcmVtYWluIHVuaGFzaGFibGUuCisKKy0gSXNzdWUgIzI1MzE6IENvbXBhcmlzb24gb3BlcmF0aW9ucyBiZXR3ZWVuIGZsb2F0cyBhbmQgRGVjaW1hbCBpbnN0YW5jZXMgbm93CisgIHJldHVybiBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzOyBwcmV2aW91c2x5IHRoZXkKKyAgcmV0dXJuZWQgYW4gYXJiaXRyYXJ5IHJlc3VsdCBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgaWQoZmxvYXQpIGFuZAorICBpZChEZWNpbWFsKS4gIFNlZSBhbHNvIGlzc3VlICM4MTg4LCB3aGljaCBhZGRzIERlY2ltYWwtdG8tRnJhY3Rpb24KKyAgY29tcGFyaXNvbnMuCisKKy0gQWRkZWQgYSBzdWJ0cmFjdCgpIG1ldGhvZCB0byBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCisKKy0gSXNzdWUgIzgyMzM6IFdoZW4gcnVuIGFzIGEgc2NyaXB0LCBweV9jb21waWxlLnB5IG9wdGlvbmFsbHkgdGFrZXMgYSBzaW5nbGUKKyAgYXJndW1lbnQgYC1gIHdoaWNoIHRlbGxzIGl0IHRvIHJlYWQgZmlsZXMgdG8gY29tcGlsZSBmcm9tIHN0ZGluLiAgRWFjaCBsaW5lIGlzCisgIHJlYWQgb24gZGVtYW5kIGFuZCB0aGUgbmFtZWQgZmlsZSBpcyBjb21waWxlZCBpbW1lZGlhdGVseS4gIChPcmlnaW5hbCBwYXRjaCBieQorICBQaW90ciBPxbxhcm93c2tpKS4KKworLSBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZTogVW5pY29kZSBjb2RlcG9pbnRzIGxpbmUgdGFidWxhdGlvbiAoMHgwQikgYW5kCisgIGZvcm0gZmVlZCAoMHgwQykgYXJlIG5vdyBjb25zaWRlcmVkIGxpbmVicmVha3MsIGFzIHNwZWNpZmllZCBpbiBVbmljb2RlCisgIFN0YW5kYXJkIEFubmV4ICMxNC4gIFNlZSBpc3N1ZSAjNzY0My4gIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjE0LworCistIENvbXBhcmlzb25zIHVzaW5nIG9uZSBvZiA8LCA8PSwgPiwgPj0gYmV0d2VlbiBhIGNvbXBsZXggaW5zdGFuY2UgYW5kIGEKKyAgRnJhY3Rpb25zIGluc3RhbmNlIG5vdyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgVHJ1ZS9GYWxzZS4gIFRoaXMKKyAgbWFrZXMgRnJhY3Rpb24gPD0+IGNvbXBsZXggY29tcGFyaXNvbnMgY29uc2lzdGVudCB3aXRoIGludCA8PT4gY29tcGxleCwgZmxvYXQKKyAgPD0+IGNvbXBsZXgsIGFuZCBjb21wbGV4IDw9PiBjb21wbGV4IGNvbXBhcmlzb25zLgorCistIElzc3VlICM4MTM5OiBvc3NhdWRpb2RldiBkaWRuJ3QgaW5pdGlhbGl6ZSBpdHMgdHlwZXMgcHJvcGVybHksIHRoZXJlZm9yZSBzb21lCisgIG1ldGhvZHMgKHN1Y2ggYXMgb3NzX21peGVyX2RldmljZS5maWxlbm8oKSkgd2VyZSBub3QgYXZhaWxhYmxlLiAgSW5pdGlhbCBwYXRjaAorICBieSBCZXJ0cmFuZCBKYW5pbi4KKworLSBJc3N1ZSAjODIwNTogUmVtb3ZlIHRoZSAiTW9kdWxlcyIgZGlyZWN0b3J5IGZyb20gc3lzLnBhdGggd2hlbiBQeXRob24gaXMKKyAgcnVubmluZyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkgKFBPU0lYIG9ubHkpLgorCistIElzc3VlICM3NTEyOiBzaHV0aWwuY29weXN0YXQoKSBjb3VsZCByYWlzZSBhbiBPU0Vycm9yIHdoZW4gdGhlIGZpbGVzeXN0ZW0KKyAgZGlkbid0IHN1cHBvcnQgY2hmbGFncygpIChmb3IgZXhhbXBsZSBaRlMgdW5kZXIgRnJlZUJTRCkuICBUaGUgZXJyb3IgaXMgbm93CisgIHNpbGVuY2VkLgorCistIElzc3VlICM3ODYwOiBwbGF0Zm9ybS51bmFtZSBub3cgcmVwb3J0cyB0aGUgY29ycmVjdCAnbWFjaGluZScgdHlwZSB3aGVuIFB5dGhvbgorICBpcyBydW5uaW5nIGluIFdPVzY0IG1vZGUgb24gNjQgYml0IFdpbmRvd3MuCisKKy0gSXNzdWUgIzM4OTAsICM4MjIyOiBGaXggcmVjdigpIGFuZCByZWN2X2ludG8oKSBvbiBub24tYmxvY2tpbmcgU1NMIHNvY2tldHMuCisgIEFsc28sIGVuYWJsZSB0aGUgU1NMX01PREVfQVVUT19SRVRSWSBmbGFnIG9uIFNTTCBzb2NrZXRzLCBzbyB0aGF0IGJsb2NraW5nCisgIHJlYWRzIGFuZCB3cml0ZXMgYXJlIGFsd2F5cyByZXRyaWVkIGJ5IE9wZW5TU0wgaXRzZWxmLgorCistIElzc3VlICM0MjgyOiBGaXggdGhlIG1haW4gZnVuY3Rpb24gb2YgdGhlIHByb2ZpbGUgbW9kdWxlIGZvciBhIG5vbi1BU0NJSQorICBzY3JpcHQsIG9wZW4gdGhlIGZpbGUgaW4gYmluYXJ5IG1vZGUgYW5kIG5vdCBpbiB0ZXh0IG1vZGUgd2l0aCB0aGUgZGVmYXVsdAorICAodXRmOCkgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzgxNzk6IEZpeCBtYWNwYXRoLnJlYWxwYXRoKCkgb24gYSBub24tZXhpc3RpbmcgcGF0aC4KKworLSBJc3N1ZSAjODAyNDogVXBkYXRlIHRoZSBVbmljb2RlIGRhdGFiYXNlIHRvIDUuMi4KKworLSBJc3N1ZSAjODE2ODogcHlfY29tcGlsZSBub3cgaGFuZGxlcyBmaWxlcyB3aXRoIHV0Zi04IEJPTVMuCisKKy0gYGB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmdgYCBub3cgcmV0dXJucyBgYCd1dGYtOC1zaWcnYGAgd2hlbiBhIFVURi04IEJPTSBpcworICBkZXRlY3RlZC4KKworLSBJc3N1ZSAjNjcxNi8yOiBCYWNrc2xhc2gtcmVwbGFjZSBlcnJvciBvdXRwdXQgaW4gY29tcGlsYWxsLgorCistIElzc3VlICM0OTYxOiBJbmNvbnNpc3RlbnQvd3JvbmcgcmVzdWx0IG9mIGFza3llc25vIGZ1bmN0aW9uIGluIHRrTWVzc2FnZUJveAorICB3aXRoIFRjbC9Uay04LjUuCisKKy0gSXNzdWUgIzgxNDA6IGV4dGVuZCBjb21waWxlYWxsIHRvIGNvbXBpbGUgc2luZ2xlIGZpbGVzLiAgQWRkIC1pIG9wdGlvbi4KKworLSBJc3N1ZSAjNzM1NjogY3R5cGVzLnV0aWw6IE1ha2UgcGFyc2luZyBvZiBsZGNvbmZpZyBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCisgIGxvY2FsZS4KKworLSBUaGUgaW50ZXJuYWxzIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBvbiBQT1NJWCBzeXN0ZW1zIGhhdmUgYmVlbiByZXBsYWNlZCBieQorICBhbiBleHRlbnNpb24gbW9kdWxlIChfcG9zaXhzdWJwcm9jZXNzKSBzbyB0aGF0IHRoZSBmb3JrKCkrZXhlYygpIGNhbiBiZSBkb25lCisgIHNhZmVseSB3aXRob3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBkZWFkbG9jayBpbiBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9ucy4KKworLSBzdWJwcm9jZXNzLlBvcGVuIG5vdyBoYXMgcmVzdG9yZV9zaWduYWxzIGFuZCBzdGFydF9uZXdfc2Vzc2lvbiBmZWF0dXJlcy4gIFRoZQorICBkZWZhdWx0IG9mIHJlc3RvcmVfc2lnbmFscz1UcnVlIGlzIGEgbmV3IGJlaGF2aW9yIGNvbXBhcmVkIHRvIGVhcmxpZXIgUHl0aG9uCisgIHZlcnNpb25zLiAgVGhpcyBtZWFucyB0aGF0IHNpZ25hbHMgc3VjaCBhcyBTSUdQSVBFIGFyZSBub3QgaWdub3JlZCBieSBkZWZhdWx0CisgIGluIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBQeXRob24gKElzc3VlICMxNjUyKS4KKworLSBJc3N1ZSAjNjQ3MjogVGhlIHhtbC5ldHJlZSBwYWNrYWdlIGlzIHVwZGF0ZWQgdG8gRWxlbWVudFRyZWUgMS4zLiAgVGhlCisgIGNFbGVtZW50VHJlZSBtb2R1bGUgaXMgdXBkYXRlZCB0b28uCisKKy0gSXNzdWUgIzc3NzQ6IFNldCBzeXMuZXhlY3V0YWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgaWYgYXJndlswXSBoYXMgYmVlbiBzZXQgdG8KKyAgYW4gbm9uIGV4aXN0ZW50IHByb2dyYW0gbmFtZSBhbmQgUHl0aG9uIGlzIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtCisgIG5hbWUuCisKKy0gSXNzdWUgIzc4ODA6IEZpeCBzeXNjb25maWcgd2hlbiB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgaXMgYSBzeW1ib2xpYyBsaW5rLgorCistIElzc3VlICM2NTA5OiBmaXggcmUuc3ViIHRvIHdvcmsgcHJvcGVybHkgd2hlbiB0aGUgcGF0dGVybiwgdGhlIHN0cmluZywgYW5kIHRoZQorICByZXBsYWNlbWVudCB3ZXJlIGFsbCBieXRlcy4gIFBhdGNoIGJ5IEFudG9pbmUgUGl0cm91LgorCistIFRoZSBzcWxpdGUzIG1vZHVsZSB3YXMgdXBkYXRlZCB0byBweXNxbGl0ZSAyLjYuMC4gVGhpcyBmaXhlcyBzZXZlcmFsIG9ic2N1cmUKKyAgYnVncyBhbmQgYWxsb3dzIGxvYWRpbmcgU1FMaXRlIGV4dGVuc2lvbnMgZnJvbSBzaGFyZWQgbGlicmFyaWVzLgorCistIElzc3VlICMxMDU0OTQzOiBGaXggYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoJ05GQycsIHRleHQpYGAgZm9yIHRoZSBQdWJsaWMKKyAgUmV2aWV3IElzc3VlICMyOSAoaHR0cDovL3VuaWNvZGUub3JnL3Jldmlldy9wci0yOS5odG1sKS4KKworLSBJc3N1ZSAjNzQ5NDogZml4IGEgY3Jhc2ggaW4gX2xzcHJvZiAoY1Byb2ZpbGUpIGFmdGVyIGNsZWFyaW5nIHRoZSBwcm9maWxlciwKKyAgcmVzZXQgYWxzbyB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBwb2ludGVyIGNvbnRleHQuCisKKy0gSXNzdWUgIzcyMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvIHRoZSBUYXJGaWxlCisgIGNsYXNzLgorCistIElzc3VlICM3MjUwOiBGaXggaW5mbyBsZWFrIG9mIG9zLmVudmlyb24gYWNyb3NzIG11bHRpLXJ1biB1c2VzIG9mCisgIHdzZ2lyZWYuaGFuZGxlcnMuQ0dJSGFuZGxlci4KKworLSBJc3N1ZSAjMTcyOTMwNTogRml4IGRvY3Rlc3QgdG8gaGFuZGxlIGVuY29kZSBlcnJvciB3aXRoICJiYWNrc2xhc2hyZXBsYWNlIi4KKworLSBJc3N1ZSAjNjkxMjkxOiBjb2RlY3Mub3BlbigpIHNob3VsZCBub3QgY29udmVydCBlbmQgb2YgbGluZXMgb24gcmVhZGluZyBhbmQKKyAgd3JpdGluZy4KKworLSBJc3N1ZSAjNzg2OTogbG9nZ2luZzogaW1wcm92ZWQgZGlhZ25vc3RpYyBmb3IgZm9ybWF0LXRpbWUgZXJyb3JzLgorCistIElzc3VlICM3ODY4OiBsb2dnaW5nOiBhZGRlZCBsb2dnZXJDbGFzcyBhdHRyaWJ1dGUgdG8gTWFuYWdlci4KKworLSBsb2dnaW5nOiBJbXBsZW1lbnRlZCBQRVAgMzkxLgorCistIElzc3VlICMxNTM3NzIxOiBBZGQgYSB3cml0ZWhlYWRlcigpIG1ldGhvZCB0byBjc3YuRGljdFdyaXRlci4KKworLSBJc3N1ZSAjNzk1OTogY3R5cGVzIGNhbGxiYWNrIGZ1bmN0aW9ucyBhcmUgbm93IHJlZ2lzdGVyZWQgY29ycmVjdGx5IHdpdGggdGhlCisgIGN5Y2xlIGdhcmJhZ2UgY29sbGVjdG9yLgorCistIElzc3VlICM1ODAxOiByZW1vdmVkIHNwdXJpb3VzIGVtcHR5IGxpbmVzIGluIHdzZ2lyZWYuCisKKy0gSXNzdWUgIzY2NjY6IGZpeCBidWcgaW4gdHJhY2UucHkgdGhhdCBhcHBsaWVkIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlCisgIGlnbm9yZWQgb25seSB0byB0aGUgZmlyc3QgZmlsZS4gIE5vdGVkIGJ5IEJvZ2RhbiBPcGFuY2h1ay4KKworLSBJc3N1ZSAjNzU5NzogY3Vyc2VzLnVzZV9lbnYoKSBjYW4gbm93IGJlIGNhbGxlZCBiZWZvcmUgaW5pdHNjcigpLiAgTm90ZWQgYnkKKyAgS2FuLVJ1IENoZW4uCisKKy0gSXNzdWUgIzczMTA6IGZpeCB0aGUgX19yZXByX18gb2Ygb3MuZW52aXJvbiB0byBzaG93IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisKKy0gSXNzdWUgIzc5NzA6IGVtYWlsLkdlbmVyYXRvci5mbGF0dGVuIG5vdyBjb3JyZWN0bHkgZmxhdHRlbnMgbWVzc2FnZS9yZmM4MjIKKyAgbWVzc2FnZXMgcGFyc2VkIGJ5IGVtYWlsLlBhcnNlci5IZWFkZXJQYXJzZXIuCisKKy0gSXNzdWUgIzczNjE6IEltcG9ydGxpYiB3YXMgbm90IHByb3Blcmx5IGNoZWNraW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4KKyAgYnl0ZWNvZGUgZmlsZSB3aGVuIGl0IHdhcyBsZXNzIHRoZW4gOCBieXRlcy4KKworLSBJc3N1ZSAjNzYzMzogSW4gdGhlIGRlY2ltYWwgbW9kdWxlLCBDb250ZXh0IGNsYXNzIG1ldGhvZHMgKHdpdGggdGhlIGV4Y2VwdGlvbgorICBvZiBjYW5vbmljYWwgYW5kIGlzX2Nhbm9uaWNhbCkgbm93IGFjY2VwdCBpbnN0YW5jZXMgb2YgaW50IGFuZCBsb25nIHdoZXJldmVyIGEKKyAgRGVjaW1hbCBpbnN0YW5jZSBpcyBhY2NlcHRlZCwgYW5kIGltcGxpY2l0bHkgY29udmVydCB0aGF0IGFyZ3VtZW50IHRvIERlY2ltYWwuCisgIFByZXZpb3VzbHkgb25seSBzb21lIGFyZ3VtZW50cyB3ZXJlIGNvbnZlcnRlZC4KKworLSBJc3N1ZSAjNzgzNTogc2hlbHZlIHNob3VsZCBubyBsb25nZXIgcHJvZHVjZSBteXN0ZXJpb3VzIHdhcm5pbmdzIGR1cmluZworICBpbnRlcnByZXRlciBzaHV0ZG93bi4KKworLSBJc3N1ZSAjMjc0NjogRG9uJ3QgZXNjYXBlIGFtcGVyc2FuZHMgYW5kIGFuZ2xlIGJyYWNrZXRzICgiJiIsICI8IiwgIj4iKSBpbiBYTUwKKyAgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYW5kIGNvbW1lbnRzLiAgVGhlc2UgcmF3IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnkgdGhlCisgIFhNTCBzcGVjaWZpY2F0aW9uLCBhbmQgYXJlIG5lY2Vzc2FyeSB3aGVuIG91dHB1dHRpbmcgZS5nLiAgUEhQIGNvZGUgaW4gYQorICBwcm9jZXNzaW5nIGluc3RydWN0aW9uLiAgUGF0Y2ggYnkgTmVpbCBNdWxsZXIuCisKKy0gSXNzdWUgIzYyMzM6IEVsZW1lbnRUcmVlIGZhaWxlZCBjb252ZXJ0aW5nIHVuaWNvZGUgY2hhcmFjdGVycyB0byBYTUwgZW50aXRpZXMKKyAgd2hlbiB0aGV5IGNvdWxkJ3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHJlcXVlc3RlZCBvdXRwdXQgZW5jb2RpbmcuICBQYXRjaCBieQorICBKZXJyeSBDaGVuLgorCistIElzc3VlICM2MDAzOiBhZGQgYW4gYXJndW1lbnQgdG8gYGB6aXBmaWxlLlppcGZpbGUud3JpdGVzdHJgYCB0byBzcGVjaWZ5IHRoZQorICBjb21wcmVzc2lvbiB0eXBlLgorCistIElzc3VlICM0NzcyOiBSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBhbiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCBpcworICBzcGVjaWZpZWQsIHJhdGhlciB0aGFuIGZhbGwgdGhyb3VnaCB0byBBRl9QQUNLRVQgKGluIHRoZSBgc29ja2V0YCBtb2R1bGUpLgorICBBbHNvLCByYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFR5cGVFcnJvciB3aGVuIGFuIHVua25vd24gVElQQyBhZGRyZXNzIHR5cGUKKyAgaXMgc3BlY2lmaWVkLiAgUGF0Y2ggYnkgQnJpYW4gQ3VydGluLgorCistIElzc3VlICM2OTM5OiBGaXggZmlsZSBJL08gb2JqZWN0cyBpbiB0aGUgYGlvYCBtb2R1bGUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgZmlsZQorICBwb3NpdGlvbiB3aGVuIGNhbGxpbmcgYHRydW5jYXRlKClgLiAgSXQgd291bGQgcHJldmlvdXNseSBjaGFuZ2UgdGhlIGZpbGUKKyAgcG9zaXRpb24gdG8gdGhlIGdpdmVuIGFyZ3VtZW50LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIHRyYWRpdGlvbiBvZgorICBmdHJ1bmNhdGUoKSBhbmQgb3RoZXIgdHJ1bmNhdGlvbiBBUElzLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCisKKy0gSXNzdWUgIzc2MTA6IFJld29ya2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcm5hbAorICBgYHppcGZpbGUuWmlwRXh0RmlsZWBgIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGZpbGVzIHN0b3JlZCBpbnNpZGUgYW4KKyAgYXJjaGl2ZS4gIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgYW5kIGNhbiBiZSB3cmFwcGVkIGluCisgIGEgYGBpby5CdWZmZXJlZFJlYWRlcmBgIG9iamVjdCBmb3IgbW9yZSBzcGVlZHVwcy4gIEl0IGFsc28gc29sdmVzIGFuCisgIGlzc3VlIHdoZXJlIGludGVybGVhdmVkIGNhbGxzIHRvIGByZWFkKClgIGFuZCBgcmVhZGxpbmUoKWAgZ2l2ZSB3cm9uZyByZXN1bHRzLgorICBQYXRjaCBieSBOaXIgQWlkZXMuCisKKy0gSXNzdWUgIzY5NjM6IEFkZGVkICJtYXh0YXNrc3BlcmNoaWxkIiBhcmd1bWVudCB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbCwKKyAgYWxsb3dpbmcgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgdGFza3Mgd2l0aGluIHRoZSBwb29sIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUKKyAgd29ya2VyIGJlZm9yZSB0aGF0IHdvcmtlciBpcyB0ZXJtaW5hdGVkLCBhbmQgYSBuZXcgb25lIGNyZWF0ZWQgdG8gcmVwbGFjZSBpdC4KKworLSBJc3N1ZSAjNzc5MjogUmVnaXN0ZXJpbmcgbm9uLWNsYXNzZXMgdG8gQUJDcyByYWlzZWQgYW4gb2JzY3VyZSBlcnJvci4KKworLSBJc3N1ZSAjNzc4NTogRG9uJ3QgYWNjZXB0IGJ5dGVzIGluIEZpbGVJTy53cml0ZSgpLgorCistIFJlbW92ZWQgdGhlIGZ1bmN0aW9ucyAndmVyaWZ5JyBhbmQgJ3ZlcmVxJyBmcm9tIExpYi90ZXN0L3N1cHBvcnQucHkuCisKKy0gSXNzdWUgIzc3NzM6IEZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSB3aGVuCisgIHRoZSByZWxlYXNlIGZpbGUgaXMgZW1wdHkuCisKKy0gSXNzdWUgIzc1NjE6IEZpeCBjcmFzaGVzIHdoZW4gdXNpbmcgYnl0ZWFycmF5IG9iamVjdHMgd2l0aCB0aGUgcG9zaXgKKyAgbW9kdWxlLgorCistIElzc3VlICMxNjcwNzY1OiBQcmV2ZW50IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IgZnJvbSByZS13cmFwcGluZyBoZWFkZXJzIGluCisgIG11bHRpcGFydC9zaWduZWQgTUlNRSBwYXJ0cywgd2hpY2ggZml4ZXMgb25lIG9mIHRoZSBzb3VyY2VzIG9mIGludmFsaWQKKyAgbW9kaWZpY2F0aW9ucyB0byBzdWNoIHBhcnRzIGJ5IEdlbmVyYXRvci4KKworLSBJc3N1ZSAjNzcwMzogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYnVmZmVyIEFQSSB0byBgYmluYXNjaWkuYTJiaHF4YC4gIFBhdGNoCisgIGJ5IEZsb3JlbnQgWGljbHVuYSwgYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCisKKy0gSXNzdWUgIzc3MDE6IEZpeCBjcmFzaCBpbiBiaW5hc2NpaS5iMmFfdXUoKSBpbiBkZWJ1ZyBtb2RlIHdoZW4gZ2l2ZW4gYSAxLWJ5dGUKKyAgYXJndW1lbnQuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjMzI5OTogRml4IHBvc3NpYmxlIGNyYXNoIGluIHRoZSBfc3JlIG1vZHVsZSB3aGVuIGdpdmVuIGJhZCBhcmd1bWVudAorICB2YWx1ZXMgaW4gZGVidWcgbW9kZS4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMyODQ2OiBBZGQgc3VwcG9ydCBmb3IgZ3ppcC5HemlwRmlsZSByZWFkaW5nIHplcm8tcGFkZGVkIGZpbGVzLiAgUGF0Y2gKKyAgYnkgQnJpYW4gQ3VydGluLgorCistIElzc3VlICM3NjgxOiBVc2UgZmxvb3IgZGl2aXNpb24gaW4gYXBwcm9waWF0ZSBwbGFjZXMgaW4gdGhlIHdhdmUgbW9kdWxlLgorCistIElzc3VlICM1MzcyOiBEcm9wIHRoZSByZXVzZSBvZiAubyBmaWxlcyBpbiBEaXN0dXRpbHMnIGNjb21waWxlciAoc2luY2UKKyAgRXh0ZW5zaW9uIGV4dHJhIG9wdGlvbnMgbWF5IGNoYW5nZSB0aGUgb3V0cHV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIC5jCisgIGZpbGUpLiBJbml0aWFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCisKKy0gSXNzdWUgIzc2MTc6IE1ha2Ugc3VyZSBkaXN0dXRpbHMudW5peGNjb21waWxlci5Vbml4Q0NvbXBpbGVyIHJlY29nbml6ZXMgZ2NjCisgIHdoZW4gaXQgaGFzIGEgZnVsbHkgcXVhbGlmaWVkIGNvbmZpZ3VyYXRpb24gcHJlZml4LiBJbml0aWFsIHBhdGNoIGJ5IEFyZnJldmVyLgorCistIElzc3VlICM3MTA1OiBNYWtlIFdlYWtLZXlEaWN0aW9uYXJ5IGFuZCBXZWFrVmFsdWVEaWN0aW9uYXJ5IHJvYnVzdCBhZ2FpbnN0IHRoZQorICBkZXN0cnVjdGlvbiBvZiB3ZWFrcmVmJ2VkIG9iamVjdHMgd2hpbGUgaXRlcmF0aW5nLgorCistIElzc3VlICM3NDU1OiBGaXggcG9zc2libGUgY3Jhc2ggaW4gY1BpY2tsZSBvbiBpbnZhbGlkIGlucHV0LiAgUGF0Y2ggYnkgVmljdG9yCisgIFN0aW5uZXIuCisKKy0gSXNzdWUgIzE2MjgyMDU6IFNvY2tldCBmaWxlIG9iamVjdHMgcmV0dXJuZWQgYnkgc29ja2V0LnNvY2tldC5tYWtlZmlsZSgpIG5vdworICBwcm9wZXJseSBoYW5kbGVzIEVJTlRSIHdpdGhpbiB0aGUgcmVhZCwgcmVhZGxpbmUsIHdyaXRlICYgZmx1c2ggbWV0aG9kcy4gIFRoZQorICBzb2NrZXQuc2VuZGFsbCgpIG1ldGhvZCBub3cgcHJvcGVybHkgaGFuZGxlcyBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbHMuCisKKy0gSXNzdWUgIzc0NzE6IEltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEd6aXBGaWxlJ3MgYnVmZmVyaW5nIG1lY2hhbmlzbSwgYW5kCisgIG1ha2UgaXQgaW1wbGVtZW50IHRoZSBgaW8uQnVmZmVyZWRJT0Jhc2VgIEFCQyB0byBhbGxvdyBmb3IgZnVydGhlciBzcGVlZHVwcyBieQorICB3cmFwcGluZyBpdCBpbiBhbiBgaW8uQnVmZmVyZWRSZWFkZXJgLiAgUGF0Y2ggYnkgTmlyIEFpZGVzLgorCistIElzc3VlICMzOTcyOiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcworICBwYXJhbWV0ZXIgdG8gYWxsb3cgc3BlY2lmeWluZyB3aGVyZSB5b3VyIGNvbm5lY3Rpb25zIGNvbWUgZnJvbS4KKworLSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyLgorCistIElzc3VlICM1NTExOiBub3cgemlwZmlsZS5aaXBGaWxlIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLiAgSW5pdGlhbAorICBwYXRjaCBieSBCcmlhbiBDdXJ0aW4uCisKKy0gSXNzdWUgIzc1NTY6IE1ha2Ugc3VyZSBEaXN0dXRpbHMnIG1zdmM5Y29tcGlsZSByZWFkcyBhbmQgd3JpdGVzIHRoZSBNU1ZDIFhNTAorICBNYW5pZmVzdCBmaWxlIGluIHRleHQgbW9kZSBzbyBzdHJpbmcgcGF0dGVybnMgY2FuIGJlIHVzZWQgaW4gcmVndWxhcgorICBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjNzU1MjogUmVtb3ZlZCBsaW5lIGZlZWQgaW4gdGhlIGJhc2U2NCBBdXRob3JpemF0aW9uIGhlYWRlciBpbiB0aGUKKyAgRGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIHRvIGF2b2lkIGFuIGVycm9yIHdoZW4gUHlQSSByZWFkcyBpdC4gIFRoaXMgb2NjdXJzIG9uCisgIGxvbmcgcGFzc3dvcmRzLiBJbml0aWFsIHBhdGNoIGJ5IEpQIFN0LiBQaWVycmUuCisKKy0gSXNzdWUgIzcyMzE6IHVybGxpYjIgY2Fubm90IGhhbmRsZSBodHRwcyB3aXRoIHByb3h5IHJlcXVpcmluZyBhdXRoLiAgUGF0Y2ggYnkKKyAgVGF0c3VoaXJvIFRzdWppa2F3YS4KKworLSBJc3N1ZSAjNDc1NzogYHpsaWIuY29tcHJlc3NgIGFuZCBvdGhlciBtZXRob2RzIGluIHRoZSB6bGliIG1vZHVsZSBub3cgcmFpc2UgYQorICBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiBgc3RyYCBvYmplY3QgKHJhdGhlciB0aGFuIGEgYGJ5dGVzYC1saWtlIG9iamVjdCkuCisgIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyIGFuZCBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzczNDk6IE1ha2UgbWV0aG9kcyBvZiBmaWxlIG9iamVjdHMgaW4gdGhlIGlvIG1vZHVsZSBhY2NlcHQgTm9uZSBhcyBhbgorICBhcmd1bWVudCB3aGVyZSBmaWxlLWxpa2Ugb2JqZWN0cyAoaWUgU3RyaW5nSU8gYW5kIEJ5dGVzSU8pIGFjY2VwdCB0aGVtIHRvIG1lYW4KKyAgdGhlIHNhbWUgYXMgcGFzc2luZyBubyBhcmd1bWVudC4KKworLSBJc3N1ZSAjNzM1NzogdGFyZmlsZSBubyBsb25nZXIgc3VwcHJlc3NlcyBmYXRhbCBleHRyYWN0aW9uIGVycm9ycyBieSBkZWZhdWx0LgorCistIElzc3VlICM1OTQ5OiBhZGRlZCBjaGVjayBmb3IgY29ycmVjdCBsaW5lZW5kcyBpbiBpbnB1dCBmcm9tIElNQVAgc2VydmVyIGluCisgIGltYXBsaWIuCisKKy0gQWRkIGNvdW50KCkgYW5kIHJldmVyc2UoKSBtZXRob2RzIHRvIGNvbGxlY3Rpb25zLmRlcXVlKCkuCisKKy0gRml4IHZhcmlhdGlvbnMgb2YgZXh0ZW5kaW5nIGRlcXVlczogIGQuZXh0ZW5kKGQpICBkLmV4dGVuZGxlZnQoZCkgIGQrPWQKKworLSBJc3N1ZSAjNjk4NjogRml4IGNyYXNoIGluIHRoZSBKU09OIEMgYWNjZWxlcmF0b3Igd2hlbiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKKyAgcGFyYW1ldGVyIHR5cGVzLiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzc0NTc6IGFkZGVkIGEgcmVhZF9wa2dfZmlsZSBtZXRob2QgdG8KKyAgZGlzdHV0aWxzLmRpc3QuRGlzdHJpYnV0aW9uTWV0YWRhdGEuCisKKy0gbG9nZ2luZzogQWRkZWQgb3B0aW9uYWwgYHNlY3VyZWAgcGFyYW1ldGVyIHRvIFNNVFBIYW5kbGVyLCB0byBlbmFibGUgdXNlIG9mCisgIFRMUyB3aXRoIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgorCistIElzc3VlICMxOTIzOiBGaXhlZCB0aGUgcmVtb3ZhbCBvZiBtZWFuaW5nZnVsIHNwYWNlcyB3aGVuIFBLRy1JTkZPIGlzIGdlbmVyYXRlZAorICBpbiBEaXN0dXRpbHMuICBQYXRjaCBieSBTdGVwaGVuIEVtc2xpZS4KKworLSBJc3N1ZSAjNDEyMDogRHJvcCByZWZlcmVuY2UgdG8gQ1JUIGZyb20gbWFuaWZlc3Qgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIHdpdGgKKyAgbXN2Yzljb21waWxlci4KKworLSBJc3N1ZSAjNzMzMzogVGhlIGBwb3NpeGAgbW9kdWxlIGdhaW5zIGFuIGBpbml0Z3JvdXBzKClgIGZ1bmN0aW9uIHByb3ZpZGluZworICBhY2Nlc3MgdG8gdGhlIGluaXRncm91cHMoMykgQyBsaWJyYXJ5IGNhbGwgb24gVW5peCBzeXN0ZW1zIHdoaWNoIGltcGxlbWVudCBpdC4KKyAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZS4KKworLSBJc3N1ZSAjNzQwODogRml4ZWQgZGlzdHV0aWxzLnRlc3RzLnNkaXN0IHNvIGl0IGRvZXNuJ3QgY2hlY2sgZm9yIGdyb3VwCisgIG93bmVyc2hpcCB3aGVuIHRoZSBncm91cCBpcyBub3QgZm9yY2VkLCBiZWNhdXNlIHRoZSBncm91cCBtYXkgYmUgZGlmZmVyZW50CisgIGZyb20gdGhlIHVzZXIncyBncm91cCBhbmQgaW5oZXJpdCBmcm9tIGl0cyBjb250YWluZXIgd2hlbiB0aGUgdGVzdCBpcyBydW4uCisKKy0gSXNzdWUgIzQ0ODY6IFdoZW4gYW4gZXhjZXB0aW9uIGhhcyBhbiBleHBsaWNpdCBjYXVzZSwgZG8gbm90IHByaW50IGl0cworICBpbXBsaWNpdCBjb250ZXh0IHRvby4gIFRoaXMgYWZmZWN0cyB0aGUgYHRyYWNlYmFja2AgbW9kdWxlIGFzIHdlbGwgYXMgYnVpbHQtaW4KKyAgZXhjZXB0aW9uIHByaW50aW5nLgorCistIElzc3VlICMxNTE1OiBFbmFibGUgdXNlIG9mIGRlZXBjb3B5KCkgd2l0aCBpbnN0YW5jZSBtZXRob2RzLiAgUGF0Y2ggYnkgUm9iZXJ0CisgIENvbGxpbnMuCisKKy0gSXNzdWUgIzc0MDM6IGxvZ2dpbmc6IEZpeGVkIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGluIGxvY2sgY3JlYXRpb24uCisKKy0gSXNzdWUgIzY4NDU6IEFkZCByZXN0YXJ0IHN1cHBvcnQgZm9yIGJpbmFyeSB1cGxvYWQgaW4gZnRwbGliLiAgVGhlCisgIGBzdG9yYmluYXJ5KClgIG1ldGhvZCBvZiBGVFAgYW5kIEZUUF9UTFMgb2JqZWN0cyBnYWlucyBhbiBvcHRpb25hbCBgcmVzdGAKKyAgYXJndW1lbnQuICBQYXRjaCBieSBQYWJsbyBNb3V6by4KKworLSBJc3N1ZSAjNTc4ODogYGRhdGV0aW1lLnRpbWVkZWx0YWAgb2JqZWN0cyBnZXQgYSBuZXcgYHRvdGFsX3NlY29uZHMoKWAgbWV0aG9kCisgIHJldHVybmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGR1cmF0aW9uLiAgUGF0Y2ggYnkgQnJpYW4KKyAgUXVpbmxhbi4KKworLSBJc3N1ZSAjNzEzMzogU1NMIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIG5ldyBidWZmZXIgQVBJLgorCistIElzc3VlICMxNDg4OTQzOiBkaWZmbGliLkRpZmZlcigpIGRvZXNuJ3QgYWx3YXlzIGFkZCBoaW50cyBmb3IgdGFiIGNoYXJhY3RlcnMuCisKKy0gSXNzdWUgIzYxMjM6IHRhcmZpbGUgbm93IG9wZW5zIGVtcHR5IGFyY2hpdmVzIGNvcnJlY3RseSBhbmQgY29uc2lzdGVudGx5CisgIHJhaXNlcyBSZWFkRXJyb3Igb24gZW1wdHkgZmlsZXMuCisKKy0gSXNzdWUgIzczNTQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X21zdmM5Y29tcGlsZXIgLSBkcmFnZnVsbHdpbmRvd3MgY2FuIGJlIDIuCisKKy0gSXNzdWUgIzUwMzc6IFByb3h5IHRoZSBfX2J5dGVzX18gc3BlY2lhbCBtZXRob2QgaW5zdGVhZCB0byBfX2J5dGVzX18gaW5zdGVhZAorICBvZiBfX3N0cl9fLgorCistIElzc3VlICM3MzQxOiBDbG9zZSB0aGUgaW50ZXJuYWwgZmlsZSBvYmplY3QgaW4gdGhlIFRhckZpbGUgY29uc3RydWN0b3IgaW4gY2FzZQorICBvZiBhbiBlcnJvci4KKworLSBJc3N1ZSAjNzI5MzogZGlzdHV0aWxzLnRlc3RfbXN2Yzljb21waWxlciBpcyBmaXhlZCB0byB3b3JrIG9uIGFueSBmcmVzaAorICBXaW5kb3dzIGJveC4gSGVscCBwcm92aWRlZCBieSBEYXZpZCBCb2xlbi4KKworLSBJc3N1ZSAjMjA1NDogZnRwbGliIG5vdyBwcm92aWRlcyBhbiBGVFBfVExTIGNsYXNzIHRvIGRvIHNlY3VyZSBGVFAgdXNpbmcgVExTCisgIG9yIFNTTC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICM3MzI4OiBweWRvYyBubyBsb25nZXIgY29ycnVwdHMgc3lzLnBhdGggd2hlbiBydW4gd2l0aCB0aGUgJy1tJyBzd2l0Y2guCisKKy0gSXNzdWUgIzQ5Njk6IFRoZSBtaW1ldHlwZXMgbW9kdWxlIG5vdyByZWFkcyB0aGUgTUlNRSBkYXRhYmFzZSBmcm9tIHRoZQorICByZWdpc3RyeSB1bmRlciBXaW5kb3dzLiAgUGF0Y2ggYnkgR2FicmllbCBHZW5lbGxpbmEuCisKKy0gSXNzdWUgIzY4MTY6IHJ1bnB5IG5vdyBwcm92aWRlcyBhIHJ1bl9wYXRoIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIFB5dGhvbiBjb2RlIHRvCisgIGV4ZWN1dGUgZmlsZSBwYXRocyB0aGF0IHJlZmVyIHRvIHNvdXJjZSBvciBjb21waWxlZCBQeXRob24gZmlsZXMgYXMgd2VsbCBhcworICB6aXBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIG90aGVyIHZhbGlkIHN5cy5wYXRoIGVudHJpZXMgdGhhdCBjb250YWluIGEKKyAgX19tYWluX18ucHkgZmlsZS4gIFRoaXMgYWxsb3dzIGFwcGxpY2F0aW9ucyB0aGF0IHJ1biBvdGhlciBQeXRob24gc2NyaXB0cyB0bworICBzdXBwb3J0IHRoZSBzYW1lIGZsZXhpYmlsaXR5IGFzIHRoZSBDUHl0aG9uIGNvbW1hbmQgbGluZSBpdHNlbGYuCisKKy0gSXNzdWUgIzczMTg6IG11bHRpcHJvY2Vzc2luZyBub3cgdXNlcyBhIHRpbWVvdXQgd2hlbiBpdCBmYWlscyB0byBlc3RhYmxpc2ggYQorICBjb25uZWN0aW9uIHdpdGggYW5vdGhlciBwcm9jZXNzLCByYXRoZXIgdGhhbiBsb29waW5nIGVuZGxlc3NseS4gIFRoZSBkZWZhdWx0CisgIHRpbWVvdXQgaXMgMjAgc2Vjb25kcywgd2hpY2ggc2hvdWxkIGJlIGFtcGx5IHN1ZmZpY2llbnQgZm9yIGxvY2FsIGNvbm5lY3Rpb25zLgorCistIElzc3VlICM3MTk3OiBBbGxvdyB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lciBvYmplY3RzIHRvIGJlIHBpY2tsZWQgYW5kCisgIHVucGlja2xlZC4gIFRoaXMgZml4ZXMgY3Jhc2hlcyB1bmRlciBXaW5kb3dzIHdoZW4gdHJ5aW5nIHRvIHJ1bgorICB0ZXN0X211bHRpcHJvY2Vzc2luZyBpbiB2ZXJib3NlIG1vZGUuCisKKy0gSXNzdWUgIzc4OTM6IGBgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHRgYCBpcyBtYWRlIHB1YmxpYyBhbmQgYSBgYHJlc3VsdGNsYXNzYGAKKyAgYXJndW1lbnQgYWRkZWQgdG8gdGhlIFRleHRUZXN0UnVubmVyIGNvbnN0cnVjdG9yIGFsbG93aW5nIGEgZGlmZmVyZW50IHJlc3VsdAorICBjbGFzcyB0byBiZSB1c2VkIHdpdGhvdXQgaGF2aW5nIHRvIHN1YmNsYXNzLgorCistIElzc3VlICM3NTg4OiBgYHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0LmdldERlc2NyaXB0aW9uYGAgbm93IGluY2x1ZGVzIHRoZSB0ZXN0CisgIG5hbWUgaW4gZmFpbHVyZSByZXBvcnRzIGV2ZW4gaWYgdGhlIHRlc3QgaGFzIGEgZG9jc3RyaW5nLgorCistIElzc3VlICMzMDAxOiBBZGQgYSBDIGltcGxlbWVudGF0aW9uIG9mIHJlY3Vyc2l2ZSBsb2NrcyB3aGljaCBpcyB1c2VkIGJ5CisgIGRlZmF1bHQgd2hlbiBpbnN0YW50aWF0aW5nIGEgYHRocmVhZGluZy5STG9ja2Agb2JqZWN0LiBUaGlzIG1ha2VzIHJlY3Vyc2l2ZQorICBsb2NrcyBhcyBmYXN0IGFzIHJlZ3VsYXIgbm9uLXJlY3Vyc2l2ZSBsb2NrcyAocHJldmlvdXNseSwgdGhleSB3ZXJlIHNsb3dlciBieQorICAxMHggdG8gMTV4KS4KKworLSBJc3N1ZSAjNzI4MjogRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBhbiBSTG9jayB3YXMgdXNlZCBpbiBhIHRocmVhZCBvdGhlciB0aGFuCisgIHRob3NlIHN0YXJ0ZWQgdGhyb3VnaCBgdGhyZWFkaW5nLlRocmVhZGAgKGZvciBleGFtcGxlLCB1c2luZworICBgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKClgKS4KKworLSBJc3N1ZSAjNzE4NzogSW1wb3J0bGliIHdvdWxkIG5vdCBzaWxlbmNlIHRoZSBJT0Vycm9yIHJhaXNlZCB3aGVuIHRyeWluZyB0bworICB3cml0ZSBuZXcgYnl0ZWNvZGUgd2hlbiBpdCB3YXMgbWFkZSByZWFkLW9ubHkuCisKKy0gSXNzdWUgIzcyNjQ6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gZGVhbGxvY2F0aW5nIHRocmVhZC1sb2NhbCBvYmplY3RzCisgIHdoaWNoIGFyZSBwYXJ0IG9mIGEgcmVmZXJlbmNlIGN5Y2xlLgorCistIElzc3VlICM3MjExOiBBbGxvdyA2NC1iaXQgdmFsdWVzIGZvciB0aGUgYGlkZW50YCBhbmQgYGRhdGFgIGZpZWxkcyBvZiBrZXZlbnQKKyAgb2JqZWN0cyBvbiA2NC1iaXQgc3lzdGVtcy4gIFBhdGNoIGJ5IE1pY2hhZWwgQnJvZ2h0b24uCisKKy0gSXNzdWUgIzY4OTY6IG1haWxib3guTWFpbGRpciBub3cgaW52YWxpZGF0ZXMgaXRzIGludGVybmFsIGNhY2hlIGVhY2ggdGltZSBhCisgIG1vZGlmaWNhdGlvbiBpcyBkb25lIHRocm91Z2ggaXQuICBUaGlzIGZpeGVzIGluY29uc2lzdGVuY2llcyBhbmQgdGVzdCBmYWlsdXJlcworICBvbiBzeXN0ZW1zIHdpdGggc2xpZ2h0bHkgYm9ndXMgbXRpbWUgYmVoYXZpb3VyLgorCistIElzc3VlICM3MjQ2ICYgSXNzdWUgIzcyMDg6IGdldHBhc3Mgbm93IHByb3Blcmx5IGZsdXNoZXMgaW5wdXQgYmVmb3JlIHJlYWRpbmcKKyAgZnJvbSBzdGRpbiBzbyB0aGF0IGV4aXN0aW5nIGlucHV0IGRvZXMgbm90IGNvbmZ1c2UgaXQgYW5kIGxlYWQgdG8gaW5jb3JyZWN0CisgIGVudHJ5IG9yIGFuIElPRXJyb3IuICBJdCBhbHNvIHByb3Blcmx5IGZsdXNoZXMgaXQgYWZ0ZXJ3YXJkcyB0byBhdm9pZCB0aGUKKyAgdGVybWluYWwgZWNob2luZyB0aGUgaW5wdXQgYWZ0ZXJ3YXJkcyBvbiBPU2VzIHN1Y2ggYXMgU29sYXJpcy4KKworLSBJc3N1ZSAjNzIzMzogRml4IGEgbnVtYmVyIG9mIHR3by1hcmd1bWVudCBEZWNpbWFsIG1ldGhvZHMgdG8gbWFrZSBzdXJlIHRoYXQKKyAgdGhleSBhY2NlcHQgYW4gaW50IG9yIGxvbmcgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4gIEFsc28gZml4IGJ1Z2d5IGhhbmRsaW5nIG9mCisgIGxhcmdlIGFyZ3VtZW50cyAodGhvc2Ugd2l0aCBjb2VmZmljaWVudCBsb25nZXIgdGhhbiB0aGUgY3VycmVudCBwcmVjaXNpb24pIGluCisgIHNoaWZ0IGFuZCByb3RhdGUuCisKKy0gSXNzdWUgIzQ3NTA6IFN0b3JlIHRoZSBiYXNlbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaW4gdGhlIGd6aXAgRk5BTUUKKyAgaGVhZGVyIGFzIHJlcXVpcmVkIGJ5IFJGQyAxOTUyLgorCistIElzc3VlICMxMTgwOiBBZGRlZCBhIG5ldyBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZSB+Ly5weWRpc3R1dGlscy5jZmcgaW4KKyAgRGlzdHV0aWxzLgorCistIElzc3VlICM3MjE4OiBGaXggdGVzdF9zaXRlIGZvciB3aW4zMiwgdGhlIGRpcmVjdG9yeSBjb21wYXJpc29uIHdhcyBkb25lIHdpdGgKKyAgYW4gdXBwZXJjYXNlLgorCistIElzc3VlICM3MjA1OiBGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIHVzaW5nIGEgQloyRmlsZSBvYmplY3QgZnJvbQorICBzZXZlcmFsIHRocmVhZHMgYXQgb25jZS4KKworLSBJc3N1ZSAjNzA3NzogbG9nZ2luZzogU3lzTG9nSGFuZGxlciBub3cgdHJlYXRzIFVuaWNvZGUgYXMgcGVyIFJGQyA1NDI0LgorCistIElzc3VlICM3MDk5OiBEZWNpbWFsLmlzX25vcm1hbCBub3cgcmV0dXJucyBUcnVlIGZvciBudW1iZXJzIHdpdGggZXhwb25lbnQKKyAgbGFyZ2VyIHRoYW4gZW1heC4KKworLSBJc3N1ZSAjNzA4MDogbG9jYWxlLnN0cnhmcm0oKSByYWlzZXMgYSBNZW1vcnlFcnJvciBvbiA2NC1iaXQgbm9uLVdpbmRvd3MKKyAgcGxhdGZvcm1zLCBhbmQgYXNzb3J0ZWQgbG9jYWxlIGZpeGVzIGJ5IERlcmsgRHJ1a2tlci4KKworLSBJc3N1ZSAjNTgzMzogRml4IGV4dHJhIHNwYWNlIGNoYXJhY3RlciBpbiByZWFkbGluZSBjb21wbGV0aW9uIHdpdGggdGhlIEdOVQorICByZWFkbGluZSBsaWJyYXJ5IHZlcnNpb24gNi4wLgorCistIElzc3VlICM2ODk0OiBGaXhlZCB0aGUgaXNzdWUgdXJsbGliMiBkb2Vzbid0IHJlc3BlY3QgIm5vX3Byb3h5IiBlbnZpcm9ubWVudC4KKworLSBJc3N1ZSAjNzA4NjogQWRkZWQgVENQIHN1cHBvcnQgdG8gU3lzTG9nSGFuZGxlciwgYW5kIHRpZGllZCB1cCBzb21lCisgIGFuYWNocm9uaXNtcyBpbiB0aGUgY29kZSB3aGljaCB3ZXJlIGEgcmVsaWMgb2YgMS41LjIgY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjNzA4MjogV2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIE1JTUUgJ25hbWUnIHBhcmFtZXRlciwgdGhlIGNvcnJlY3QgcGxhY2UKKyAgdG8gbG9vayBmb3IgaXQgaXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCisKKy0gTWFrZSB0b2tlbml6ZS5kZXRlY3RfY29kaW5nKCkgbm9ybWFsaXplIHV0Zi04IGFuZCBpc28tODg1OS0xIHZhcmlhbnRzIGxpa2UgdGhlCisgIGJ1aWx0aW4gdG9rZW5pemVyLgorCistIElzc3VlICM3MDQ4OiBGb3JjZSBEZWNpbWFsLmxvZ2IgdG8gcm91bmQgaXRzIHJlc3VsdCB3aGVuIHRoYXQgcmVzdWx0IGlzIHRvbworICBsYXJnZSB0byBmaXQgaW4gdGhlIGN1cnJlbnQgcHJlY2lzaW9uLgorCistIElzc3VlICM2MjM2LCAjNjM0ODogRml4IHZhcmlvdXMgZmFpbHVyZXMgaW4gdGhlIEkvTyBsaWJyYXJ5IHVuZGVyIEFJWCBhbmQKKyAgb3RoZXIgcGxhdGZvcm1zLCB3aGVuIHVzaW5nIGEgbm9uLWdjYyBjb21waWxlci4gUGF0Y2ggYnkgRGVyayBEcnVra2VyLgorCistIElzc3VlICM0NjA2OiBQYXNzaW5nICdOb25lJyBpZiBjdHlwZXMgYXJndHlwZSBpcyBzZXQgdG8gUE9JTlRFUiguLi4pICBkb2VzIG5vdworICBhbHdheXMgcmVzdWx0IGluIE5VTEwuCisKKy0gSXNzdWUgIzUwNDI6IFN0cnVjdHVyZSBzdWItc3ViY2xhc3MgZG9lcyBub3cgaW5pdGlhbGl6ZSBjb3JyZWN0bHkgd2l0aCBiYXNlCisgIGNsYXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCistIElzc3VlICM2ODgyOiBJbXBvcnQgdXVpZCBjcmVhdGVzIHpvbWJpZXMgcHJvY2Vzc2VzLgorCistIElzc3VlICM2NjM1OiBGaXggcHJvZmlsZXIgcHJpbnRpbmcgdXNhZ2UgbWVzc2FnZS4KKworLSBJc3N1ZSAjNjg1NjogQWRkIGEgZmlsdGVyIGtleXdvcmQgYXJndW1lbnQgdG8gVGFyRmlsZS5hZGQoKS4KKworLSBJc3N1ZSAjNjg4ODogcGRiJ3MgYWxpYXMgY29tbWFuZCB3YXMgYnJva2VuIHdoZW4gbm8gYXJndW1lbnRzIHdlcmUgZ2l2ZW4uCisKKy0gSXNzdWUgIzY4NTc6IERlZmF1bHQgZm9ybWF0KCkgYWxpZ25tZW50IHNob3VsZCBiZSAnPicgZm9yIERlY2ltYWwgaW5zdGFuY2VzLgorCistIElzc3VlICM2Nzk1OiBpbnQoRGVjaW1hbCgnbmFuJykpIG5vdyByYWlzZXMgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZworICBOYU4gb3IgcmFpc2luZyBJbnZhbGlkQ29udGV4dC4gIEFsc28sIGZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4KKyAgbG9uZyhEZWNpbWFsKCduYW4nKSkuCisKKy0gSXNzdWUgIzY4NTA6IEZpeCBidWcgaW4gRGVjaW1hbC5fcGFyc2VfZm9ybWF0X3NwZWNpZmllciBmb3IgZm9ybWF0cyB3aXRoIG5vCisgIHR5cGUgc3BlY2lmaWVyLgorCistIElzc3VlICM2MjM5OiBjdHlwZXMuY19jaGFyX3AgcmV0dXJuIHZhbHVlIG11c3QgcmV0dXJuIGJ5dGVzLgorCistIElzc3VlICM2ODM4OiBVc2UgYSBsaXN0IHRvIGFjY3VtdWxhdGUgdGhlIHZhbHVlIGluc3RlYWQgb2YgcmVwZWF0ZWRseQorICBjb25jYXRlbmF0aW5nIHN0cmluZ3MgaW4gaHR0cC5jbGllbnQncyBIVFRQUmVzcG9uc2UuX3JlYWRfY2h1bmtlZCBwcm92aWRpbmcgYQorICBzaWduaWZpY2FudCBzcGVlZCBpbmNyZWFzZSB3aGVuIGRvd25sb2FkaW5nIGxhcmdlIGZpbGVzIHNlcnZlbmQgd2l0aCBhCisgIFRyYW5zZmVyLUVuY29kaW5nIG9mICdjaHVua2VkJy4KKworLSBUcnlpbmcgdG8gaW1wb3J0IGEgc3VibW9kdWxlIGZyb20gYSBtb2R1bGUgdGhhdCBpcyBub3QgYSBwYWNrYWdlLCBJbXBvcnRFcnJvcgorICBzaG91bGQgYmUgcmFpc2VkLCBub3QgQXR0cmlidXRlRXJyb3IuCisKKy0gV2hlbiB0aGUgZ2xvYmFscyBwYXN0IHRvIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgaGFzIF9fcGFja2FnZV9fIHNldCB0byBOb25lLAorICBmYWxsIGJhY2sgdG8gY29tcHV0aW5nIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlIGluc3RlYWQgb2YgZ2l2aW5nIHVwLgorCistIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdGhlIG5hbWUgb2YgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgZm9yCisgIGltcG9ydGxpYi5fX2ltcG9ydF9fIGlzIG5vdCBhIHN0cmluZyAod2FzIHJhaXNpbmcgYW4gQXR0cmlidXRlRXJyb3IgYmVmb3JlKS4KKworLSBBbGxvdyB0aGUgZnJvbWxpc3QgcGFzc2VkIGludG8gaW1wb3J0bGliLl9faW1wb3J0X18gdG8gYmUgYW55IGl0ZXJhYmxlLgorCistIEhhdmUgaW1wb3J0bGliIHJhaXNlIEltcG9ydEVycm9yIGlmIE5vbmUgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMuCisKKy0gSXNzdWUgIzYwNTQ6IERvIG5vdCBub3JtYWxpemUgc3RvcmVkIHBhdGhuYW1lcyBpbiB0YXJmaWxlLgorCistIElzc3VlICM2Nzk0OiBGaXggRGVjaW1hbC5jb21wYXJlX3RvdGFsIGFuZCBEZWNpbWFsLmNvbXBhcmVfdG90YWxfbWFnOiBOYU4KKyAgcGF5bG9hZHMgYXJlIG5vdyBvcmRlcmVkIGJ5IGludGVnZXIgdmFsdWUgcmF0aGVyIHRoYW4gbGV4aWNvZ3JhcGhpY2FsbHkuCisKKy0gSXNzdWUgIzEzNTY5Njk6IEFkZCBtaXNzaW5nIGluZm8gbWV0aG9kcyBpbiB0aXguSExpc3QuCisKKy0gSXNzdWUgIzE1MjI1ODc6IE5ldyBjb25zdGFudHMgYW5kIG1ldGhvZHMgZm9yIHRoZSB0aXguR3JpZCB3aWRnZXQuCisKKy0gSXNzdWUgIzEyNTA0Njk6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRpeC5QYW5lZFdpbmRvdy5wYW5lcy4KKworLSBJc3N1ZSAjMTExOTY3MzogRG8gbm90IG92ZXJyaWRlIHRraW50ZXIuVGV4dCBtZXRob2RzIHdoZW4gY3JlYXRpbmcgYQorICBTY3JvbGxlZFRleHQuCisKKy0gSXNzdWUgIzY2NjU6IEZpeCBmbm1hdGNoIHRvIHByb3Blcmx5IG1hdGNoIGZpbGVuYW1lcyB3aXRoIG5ld2xpbmVzIGluIHRoZW0uCisKKy0gSXNzdWUgIzExMzU6IEFkZCB0aGUgWFZpZXcgYW5kIFlWaWV3IG1peC1pbnMgdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIHh2aWV3KgorICBhbmQgeXZpZXcqIG1ldGhvZHMuCisKKy0gSXNzdWUgIzY2Mjk6IEZpeCBhIGRhdGEgY29ycnVwdGlvbiBpc3N1ZSBpbiB0aGUgbmV3IEkvTyBsaWJyYXJ5LCB3aGljaCBjb3VsZAorICBvY2N1ciB3aGVuIHdyaXRpbmcgdG8gYSBCdWZmZXJlZFJhbmRvbSBvYmplY3QgKGUuZy4gYSBmaWxlIG9wZW5lZCBpbiAicmIrIiBvcgorICAid2IrIiBtb2RlKSBhZnRlciBoYXZpbmcgYnVmZmVyZWQgYSBjZXJ0YWluIGFtb3VudCBvZiBkYXRhIGZvciByZWFkaW5nLiBUaGlzCisgIGJ1ZyB3YXMgbm90IHByZXNlbnQgaW4gdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICM2NjIyOiBGaXggImxvY2FsIHZhcmlhYmxlICdzZWNyZXQnIHJlZmVyZW5jZWQgYmVmb3JlIGFzc2lnbm1lbnQiIGJ1ZyBpbgorICBQT1AzLmFwb3AuCisKKy0gSXNzdWUgIzI3MTU6IFJlbW92ZSByZW1uYW50cyBvZiBDYXJib24uRmlsZSBmcm9tIGJpbmhleCBtb2R1bGUuCisKKy0gSXNzdWUgIzY1OTU6IFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgYXJiaXRyYXJ5IFVuaWNvZGUgZGVjaW1hbAorICBkaWdpdHMgaW4gaW5wdXQsIGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBzdGFuZGFyZC4gIFByZXZpb3VzbHkgaXQgd2FzIHJlc3RyaWN0ZWQKKyAgdG8gYWNjZXB0aW5nIFswLTldLgorCistIElzc3VlICM2MTA2OiB0ZWxuZXRsaWIuVGVsbmV0LnByb2Nlc3NfcmF3cSBkb2Vzbid0IGhhbmRsZSBkZWZhdWx0IFdJTEwvV09OVAorICBETy9ET05UIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTQyNDE1MjogRml4IGZvciBodHRwLmNsaWVudCwgdXJsbGliLnJlcXVlc3QgdG8gc3VwcG9ydCBTU0wgd2hpbGUKKyAgd29ya2luZyB0aHJvdWdoIHByb3h5LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXN0b3BoZXIgTGksIGNoYW5nZXMgbWFkZSBieQorICBTZW50aGlsIEt1bWFyYW4uCisKKy0gQWRkIGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyIHRvIHJlcHJlc2VudCB0aGUgUEVQIDMwMiBwcm90b2NvbCBmb3IKKyAgbG9hZGVycyB0aGF0IGFsbG93IGZvciBtb2R1bGVzIHRvIGJlIGV4ZWN1dGVkLiBCb3RoIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgYW5kCisgIFB5UHljTG9hZGVyIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzIGFuZCBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBpbiByZWxhdGlvbiB0bworICBvdGhlciBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBBQkNzLgorCistIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgZGlkIG5vdCBpbmhlcml0IGZyb20gaW1wb3J0bGliLmFiYy5SZXNvdXJjZUxvYWRlciBsaWtlCisgIHRoZSBkb2N1bWVudGF0aW9uIHNhaWQgaXQgZGlkIGV2ZW4gdGhvdWdoIHRoZSBjb2RlIGluIFB5TG9hZGVyIHJlbGllZCBvbiB0aGUKKyAgYWJzdHJhY3QgbWV0aG9kIHJlcXVpcmVkIGJ5IFJlc291cmNlTG9hZGVyLgorCistIElzc3VlICM2NDMxOiBNYWtlIEZyYWN0aW9uIHR5cGUgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4gaXQgZG9lc24ndCBrbm93IGhvdworICB0byBoYW5kbGUgYSBjb21wYXJpc29uIHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBBbHNvIGFkZCBjb3JyZWN0IGhhbmRsaW5nCisgIG9mIGluZmluaXRpZXMgYW5kIG5hbnMgZm9yIGNvbXBhcmlzb25zIHdpdGggZmxvYXQuCisKKy0gSXNzdWUgIzY0MTU6IEZpeGVkIHdhcm5pbmdzLndhcm4gc2VnZmF1bHQgb24gYmFkIGZvcm1hdHRlZCBzdHJpbmcuCisKKy0gSXNzdWUgIzYzNTg6IFRoZSBleGl0IHN0YXR1cyBvZiBhIGNvbW1hbmQgc3RhcnRlZCB3aXRoIG9zLnBvcGVuKCkgd2FzIHJlcG9ydGVkCisgIGRpZmZlcmVudGx5IHRoYW4gaXQgZGlkIHdpdGggcHl0aG9uIDIueC4KKworLSBJc3N1ZSAjNjMyMzogVGhlIHBkYiBkZWJ1Z2dlciBkaWQgbm90IGV4aXQgd2hlbiBydW5uaW5nIGEgc2NyaXB0IHdpdGggYSBzeW50YXgKKyAgZXJyb3IuCisKKy0gSXNzdWUgIzMzOTI6IFRoZSBzdWJwcm9jZXNzIGNvbW11bmljYXRlKCkgbWV0aG9kIG5vIGxvbmdlciBmYWlscyBpbiBzZWxlY3QoKQorICB3aGVuIGZpbGUgZGVzY3JpcHRvcnMgYXJlIGxhcmdlOyBjb21tdW5pY2F0ZSgpIG5vdyB1c2VzIHBvbGwoKSB3aGVuIHBvc3NpYmxlLgorCistIElzc3VlICM2MzY5OiBGaXggYW4gUkxFIGRlY29tcHJlc3Npb24gYnVnIGluIHRoZSBiaW5oZXggbW9kdWxlLgorCistIElzc3VlICM2MzQ0OiBGaXhlZCBhIGNyYXNoIG9mIG1tYXAucmVhZCgpIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgYXJndW1lbnQuCisKKy0gVGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gc3RyaW5nLm1ha2V0cmFucyBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM0MDA1OiBGaXhlZCBhIGNyYXNoIG9mIHB5ZG9jIHdoZW4gdGhlcmUgd2FzIGEgemlwIGZpbGUgcHJlc2VudCBpbgorICBzeXMucGF0aC4KKworLSBJc3N1ZSAjNjIxODogaW8uU3RyaW5nSU8gYW5kIGlvLkJ5dGVzSU8gaW5zdGFuY2VzIGFyZSBub3cgcGlja2xhYmxlLgorCistIFRoZSBvcy5nZXRfZXhlY19wYXRoKCkgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZQorICBzZWFyY2hlZCBmb3IgYW4gZXhlY3V0YWJsZSB3aGVuIGxhdW5jaGluZyBhIHN1YnByb2Nlc3Mgd2FzIGFkZGVkLgorCistIElzc3VlICM3NDgxOiBXaGVuIGEgdGhyZWFkaW5nLlRocmVhZCBmYWlsZWQgdG8gc3RhcnQgaXQgd291bGQgbGVhdmUgdGhlCisgIGluc3RhbmNlIHN0dWNrIGluIGluaXRpYWwgc3RhdGUgYW5kIHByZXNlbnQgaW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgpLgorCistIElzc3VlICMxMDY4MjY4OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGhhbmRsZXMgRUlOVFIgaW4gaW50ZXJuYWwgb3Mud2FpdHBpZAorICBhbmQgb3MucmVhZCBzeXN0ZW0gY2FsbHMgd2hlcmUgYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzY3Mjk6IEFkZGVkIGN0eXBlcy5jX3NzaXplX3QgdG8gcmVwcmVzZW50IHNzaXplX3QuCisKKy0gSXNzdWUgIzYyNDc6IFRoZSBhcmdwYXJzZSBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisKKy0gSXNzdWUgIzgyMzU6IF9zb2NrZXQ6IEFkZCB0aGUgY29uc3RhbnQgYGBTT19TRVRGSUJgYC4gIFNPX1NFVEZJQiBpcyBhIHNvY2tldAorICBvcHRpb24gYXZhaWxhYmxlIG9uIEZyZWVCU0QgNy4xIGFuZCBuZXdlci4KKworLSBJc3N1ZSAjOTMxNTogRml4IGZvciB0aGUgdHJhY2UgbW9kdWxlIHRvIHJlY29yZCBjb3JyZWN0IGNsYXNzIG5hbWUKKyAgZm9yIHRyYWNpbmcgbWV0aG9kcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzk5NTk6IFR3ZWFrIGZvcm11bGEgdXNlZCBmb3IgY29tcHV0aW5nIG1hdGgubG9nIG9mIGFuIGludGVnZXIsCisgIG1ha2luZyBpdCBtYXJnaW5hbGx5IG1vcmUgYWNjdXJhdGUgZm9yIGV4YWN0IHBvd2VycyBvZiAyLgorCistIElzc3VlICM5NDIyOiBGaXggbWVtb3J5IGxlYWsgd2hlbiByZS1pbml0aWFsaXppbmcgYSBzdHJ1Y3QuU3RydWN0IG9iamVjdC4KKworLSBJc3N1ZSAjNzkwMDogVGhlIGdldGdyb3VwcygyKSBzeXN0ZW0gY2FsbCBvbiBNYWNPU1ggYmVoYXZlcyByYXRoZXIgb2RkbHkKKyAgY29tcGFyZWQgdG8gb3RoZXIgdW5peCBzeXN0ZW1zLiBJbiBwYXJ0aWN1bGFyLCBvcy5nZXRncm91cHMoKSBkb2VzIG5vdCByZWZsZWN0CisgIGFueSBjaGFuZ2VzIG1hZGUgdXNpbmcgb3Muc2V0Z3JvdXBzKCkgYnV0IGJhc2ljbHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKKyAgaW5mb3JtYXRpb24gYXMgdGhlIGlkIGNvbW1hbmQuIG9zLmdldGdyb3VwcygpIGNhbiBub3cgcmV0dXJuIG1vcmUgdGhhbiAxNgorICBncm91cHMgb24gTWFjT1NYLgorCistIElzc3VlICM2MDk1OiBNYWtlIGRpcmVjdG9yeSBhcmd1bWVudCB0byBvcy5saXN0ZGlyIG9wdGlvbmFsLgorCistIElzc3VlICM5Mjc3OiBGaXggYnVnIGluIHN0cnVjdC5wYWNrIGZvciBib29scyBpbiBzdGFuZGFyZCBtb2RlIChlLmcuLAorICBzdHJ1Y3QucGFjaygnPj8nKSk6IGlmIGNvbnZlcnNpb24gdG8gYm9vbCByYWlzZWQgYW4gZXhjZXB0aW9uIHRoZW4gdGhhdAorICBleGNlcHRpb24gd2Fzbid0IHByb3Blcmx5IHByb3BhZ2F0ZWQgb24gbWFjaGluZXMgd2hlcmUgY2hhciBpcyB1bnNpZ25lZC4KKworLSBJc3N1ZSAjNTE4MDogRml4ZWQgYSBidWcgdGhhdCBwcmV2ZW50ZWQgbG9hZGluZyAyLnggcGlja2xlcyBpbiAzLnggcHl0aG9uIHdoZW4KKyAgdGhleSBjb250YWluIGluc3RhbmNlcyBvZiBvbGQtc3R5bGUgY2xhc3Nlcy4KKworLSBJc3N1ZSAjOTE2NTogQWRkIG5ldyBmdW5jdGlvbnMgbWF0aC5pc2Zpbml0ZSBhbmQgY21hdGguaXNmaW5pdGUsIHRvIGFjY29tcGFueQorICBleGlzdGluZyBpc2luZiBhbmQgaXNuYW4gZnVuY3Rpb25zLgorCistIElzc3VlICMxNTc4MjY5OiBJbXBsZW1lbnQgb3Muc3ltbGluayBmb3IgV2luZG93cyA2LjArLiAgUGF0Y2ggYnkgSmFzb24KKyAgUi4gQ29vbWJzLgorCistIEluIHN0cnVjdC5wYWNrLCBjb3JyZWN0bHkgcHJvcG9nYXRlIGV4Y2VwdGlvbnMgZnJvbSBjb21wdXRpbmcgdGhlIHRydXRoIG9mIGFuCisgIG9iamVjdCBpbiB0aGUgJz8nIGZvcm1hdC4KKworLSBJc3N1ZSAjOTAwMDogZGF0ZXRpbWUudGltZXpvbmUgb2JqZWN0cyBub3cgaGF2ZSBldmFsLWZyaWVuZGx5IHJlcHIuCisKKy0gSW4gdGhlIG1hdGggbW9kdWxlLCBjb3JyZWN0bHkgbG9va3VwIF9fdHJ1bmNfXywgX19jZWlsX18sIGFuZCBfX2Zsb29yX18gYXMKKyAgc3BlY2lhbCBtZXRob2RzLgorCistIElzc3VlICM5MDA1OiBQcmV2ZW50IHV0Y3RpbWV0dXBsZSgpIGZyb20gcHJvZHVjaW5nIHllYXIgMCBvciB5ZWFyIDEwLDAwMC4KKyAgUHJpb3IgdG8gdGhpcyBjaGFuZ2UsIHRpbWV6b25lIGFkanVzdG1lbnQgaW4gdXRjdGltZXR1cGxlKCkgY291bGQgcHJvZHVjZQorICB0bV95ZWFyIHZhbHVlIG9mIDAgb3IgMTAsMDAwLiAgTm93IGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGluIHRoZXNlIGVkZ2UKKyAgY2FzZXMuCisKKy0gSXNzdWUgIzY2NDE6IFRoZSBgYGRhdGV0aW1lLnN0cnB0aW1lYGAgbWV0aG9kIG5vdyBzdXBwb3J0cyB0aGUgYGAlemBgCisgIGRpcmVjdGl2ZS4gIFdoZW4gdGhlIGBgJXpgYCBkaXJlY3RpdmUgaXMgcHJlc2VudCBpbiB0aGUgZm9ybWF0IHN0cmluZywgYW4KKyAgYXdhcmUgYGBkYXRldGltZWBgIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIGBgdHppbmZvYGAgYm91bmQgdG8gYQorICBgYGRhdGV0aW1lLnRpbWV6b25lYGAgaW5zdGFuY2UgY29uc3RydWN0ZWQgZnJvbSB0aGUgcGFyc2VkIG9mZnNldC4gIElmIGJvdGgKKyAgYGAlemBgIGFuZCBgYCVaYGAgYXJlIHByZXNlbnQsIHRoZSBkYXRhIGluIGBgJVpgYCBmaWVsZCBpcyB1c2VkIGZvciB0aW1lem9uZQorICBuYW1lLCBidXQgYGAlWmBgIGRhdGEgd2l0aG91dCBgYCV6YGAgaXMgZGlzY2FyZGVkLgorCistIElzc3VlICM1MDk0OiBUaGUgYGBkYXRldGltZWBgIG1vZHVsZSBub3cgaGFzIGEgc2ltcGxlIGNvbmNyZXRlIGNsYXNzCisgIGltcGxlbWVudGluZyBgYGRhdGV0aW1lLnR6aW5mb2BgIGludGVyZmFjZS4gIEluc3RhbmNlcyBvZiB0aGUgbmV3IGNsYXNzLAorICBgYGRhdGV0aW1lLnRpbWV6b25lYGAsIHJldHVybiBmaXhlZCBuYW1lIGFuZCBVVEMgb2Zmc2V0IGZyb20gdGhlaXIKKyAgYGB0em5hbWUoZHQpYGAgYW5kIGBgdXRjb2Zmc2V0KGR0KWBgIG1ldGhvZHMuICBUaGUgYGBkc3QoZHQpYGAgbWV0aG9kIGFsd2F5cworICByZXR1cm5zIGBgTm9uZWBgLiAgQSBjbGFzcyBhdHRyaWJ1dGUsIGBgdXRjYGAgY29udGFpbnMgYW4gaW5zdGFuY2UKKyAgcmVwcmVzZW50aW5nIHRoZSBVVEMgdGltZXpvbmUuICBPcmlnaW5hbCBwYXRjaCBieSBSYWZlIEthcGxhbi4KKworLSBJc3N1ZSAjODk3MzogQWRkIF9fYWxsX18gdG8gc3RydWN0IG1vZHVsZTsgdGhpcyBlbnN1cmVzIHRoYXQgaGVscChzdHJ1Y3QpCisgIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzdHJ1Y3QuU3RydWN0IGNsYXNzLgorCistIElzc3VlICMzMTI5OiBUcmFpbGluZyBkaWdpdHMgaW4gc3RydWN0IGZvcm1hdCBzdHJpbmcgYXJlIG5vIGxvbmdlciBpZ25vcmVkLgorICBGb3IgZXhhbXBsZSwgIjEiIG9yICJpbGliMTIzIiBhcmUgbm93IGludmFsaWQgZm9ybWF0cyBhbmQgY2F1c2UKKyAgYGBzdHJ1Y3QuZXJyb3JgYCB0byBiZSByYWlzZWQuICBQYXRjaCBieSBDYWxlYiBEZXZlcmF1eC4KKworLSBJc3N1ZSAjNzM4NDogSWYgdGhlIHN5c3RlbSByZWFkbGluZSBsaWJyYXJ5IGlzIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMsIHRoZQorICBjdXJzZXMgbW9kdWxlIG11c3QgYmUgbGlua2VkIGFnYWluc3QgbmN1cnNlcyBhcyB3ZWxsLiBPdGhlcndpc2UgaXQgaXMgbm90IHNhZmUKKyAgdG8gbG9hZCBib3RoIHRoZSByZWFkbGluZSBhbmQgY3Vyc2VzIG1vZHVsZXMgaW4gYW4gYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzI4MTA6IEZpeCBjYXNlcyB3aGVyZSB0aGUgV2luZG93cyByZWdpc3RyeSBBUEkgcmV0dXJucyBFUlJPUl9NT1JFX0RBVEEsCisgIHJlcXVpcmluZyBhIHJlLXRyeSBpbiBvcmRlciB0byBnZXQgdGhlIGNvbXBsZXRlIHJlc3VsdC4KKworLSBJc3N1ZSAjODY5MjogT3B0aW1pemUgbWF0aC5mYWN0b3JpYWw6IHJlcGxhY2UgdGhlIHByZXZpb3VzIG5haXZlIGFsZ29yaXRobQorICB3aXRoIGFuIGltcHJvdmVkICdiaW5hcnktc3BsaXQnIGFsZ29yaXRobSB0aGF0IHVzZXMgZmV3ZXIgbXVsdGlwbGljYXRpb25zIGFuZAorICBhbGxvd3MgbWFueSBvZiB0aGUgbXVsdGlwbGljYXRpb25zIHRvIGJlIHBlcmZvcm1lZCB1c2luZyBwbGFpbiBDIGludGVnZXIKKyAgYXJpdGhtZXRpYyBpbnN0ZWFkIG9mIFB5TG9uZyBhcml0aG1ldGljLiAgQWxzbyB1c2VzIGEgbG9va3VwIHRhYmxlIGZvciBzbWFsbAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzg2NzQ6IEZpeGVkIGEgbnVtYmVyIG9mIGluY29ycmVjdCBvciB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nCisgIG92ZXJmbG93IGNoZWNrcyBpbiB0aGUgYXVkaW9vcCBtb2R1bGUuCisKKy0gSXNzdWUgIzg2NDQ6IFRoZSBhY2N1cmFjeSBvZiB0ZC50b3RhbF9zZWNvbmRzKCkgaGFzIGJlZW4gaW1wcm92ZWQgKGJ5CisgIGNhbGN1bGF0aW5nIHdpdGggaW50ZWdlciBhcml0aG1ldGljIGluc3RlYWQgb2YgZmxvYXQgYXJpdGhtZXRpYyBpbnRlcm5hbGx5KToKKyAgdGhlIHJlc3VsdCBpcyBub3cgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLCBhbmQgaXMgZXF1aXZhbGVudCB0byBgYHRkIC8KKyAgdGltZWRlbHRhKHNlY29uZHM9MSlgYC4KKworLSBJc3N1ZSAjMjcwNjogQWxsb3cgZGl2aXNpb24gb2YgYSB0aW1lZGVsdGEgYnkgYW5vdGhlciB0aW1lZGVsdGE6IHRpbWVkZWx0YSAvCisgIHRpbWVkZWx0YSwgdGltZWRlbHRhICUgdGltZWRlbHRhLCB0aW1lZGVsdGEgLy8gdGltZWRlbHRhIGFuZCBkaXZtb2QodGltZWRlbHRhLAorICB0aW1lZGVsdGEpIGFyZSBhbGwgc3VwcG9ydGVkLgorCistIElzc3VlICM4MzE0OiBGaXggdW5zaWduZWQgbG9uZyBsb25nIGJ1ZyBpbiBsaWJmZmkgb24gU3BhcmMgdjguCisKKy0gSXNzdWUgIzgzMDA6IFdoZW4gcGFzc2luZyBhIG5vbi1pbnRlZ2VyIGFyZ3VtZW50IHRvIHN0cnVjdC5wYWNrIHdpdGggYW55CisgIGludGVnZXIgZm9ybWF0IGNvZGUsIHN0cnVjdC5wYWNrIGZpcnN0IGF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIG5vbi1pbnRlZ2VyCisgIHVzaW5nIGl0cyBfX2luZGV4X18gbWV0aG9kLiAgSWYgdGhhdCBtZXRob2QgaXMgbm9uLWV4aXN0ZW50IG9yIHJhaXNlcworICBUeXBlRXJyb3IgaXQgZ29lcyBvbiB0byB0cnkgdGhlIF9faW50X18gbWV0aG9kLCBhcyBkZXNjcmliZWQgYmVsb3cuCisKKy0gSXNzdWUgIzgxNDI6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC45IHJlbGVhc2UuCisKKy0gSXNzdWUgIzY5NDk6IEFsbG93IHRoZSBfZGJtIGV4dGVuc2lvbiB0byBiZSBidWlsdCB3aXRoIGRiIDQuOC54LgorCistIElzc3VlICM2NTQ0OiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiB0aGUga3F1ZXVlIGltcGxlbWVudGF0aW9uJ3MgZXJyb3IKKyAgaGFuZGxpbmcuCisKKy0gU3RvcCBwcm92aWRpbmcgY3J0YXNzZW0uaCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLCBhcworICBtc3ZjcjEwMC5kbGwgaXMgbm90IGEgcGxhdGZvcm0gYXNzZW1ibHkgYW55bW9yZS4KKworLSBJc3N1ZSAjNjUwODogQWRkIHBvc2l4LntnZXRyZXN1aWQsZ2V0cmVzZ2lkLHNldHJlc3VpZCxzZXRyZXNnaWR9LgorCistIElzc3VlICM3MDc4OiBTZXQgc3RydWN0Ll9fZG9jX18gZnJvbSBfc3RydWN0Ll9fZG9jX18uCisKKy0gSXNzdWUgIzMzNjY6IEFkZCBlcmYsIGVyZmMsIGV4cG0xLCBnYW1tYSwgbGdhbW1hIGZ1bmN0aW9ucyB0byBtYXRoIG1vZHVsZS4KKworLSBJc3N1ZSAjNjg3NzogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGxpbmsgdGhlIHJlYWRsaW5lIGV4dGVuc2lvbiB0byB0aGUgbGliZWRpdAorICByZWFkbGluZSBlbXVsYXRpb24gb24gT1NYIDEwLjUgb3IgbGF0ZXIuCisKKy0gSXNzdWUgIzY4NDg6IEZpeCBjdXJzZXMgbW9kdWxlIGJ1aWxkIGZhaWx1cmUgb24gT1MgWCAxMC42LgorCistIEZpeCBhIHNlZ2ZhdWx0IHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGV4cGF0IHdpdGggc3BlY2lhbGx5IGZvcm1lZCBpbnB1dC4KKworLSBJc3N1ZSAjNjU2MTogJ1xkJyBpbiBhIHJlZ2V4IG5vdyBtYXRjaGVzIG9ubHkgY2hhcmFjdGVycyB3aXRoIFVuaWNvZGUgY2F0ZWdvcnkKKyAgJ05kJyAoTnVtYmVyLCBEZWNpbWFsIERpZ2l0KS4gIFByZXZpb3VzbHkgaXQgYWxzbyBtYXRjaGVkIGNoYXJhY3RlcnMgd2l0aAorICBjYXRlZ29yeSAnTm8nLgorCistIElzc3VlICM0NTA5OiBBcnJheSBvYmplY3RzIGFyZSBubyBsb25nZXIgbW9kaWZpZWQgYWZ0ZXIgYW4gb3BlcmF0aW9uIGZhaWxpbmcKKyAgZHVlIHRvIHRoZSByZXNpemUgcmVzdHJpY3Rpb24gaW4tcGxhY2Ugd2hlbiB0aGUgb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzLgorCistIElzc3VlICMyMzg5OiBBcnJheSBvYmplY3RzIGFyZSBub3cgcGlja2xlZCBpbiBhIHBvcnRhYmxlIG1hbm5lci4KKworLSBFeHBhdDogRml4IERvUyB2aWEgWE1MIGRvY3VtZW50IHdpdGggbWFsZm9ybWVkIFVURi04IHNlcXVlbmNlcworICAoQ1ZFXzIwMDlfMzU2MCkuCisKKy0gSXNzdWUgIzcyNDI6IE9uIFNvbGFyaXMgOSBhbmQgZWFybGllciBjYWxsaW5nIG9zLmZvcmsoKSBmcm9tIHdpdGhpbiBhIHRocmVhZAorICBjb3VsZCByYWlzZSBhbiBpbmNvcnJlY3QgUnVudGltZUVycm9yIGFib3V0IG5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jay4gIFRoZQorICBpbXBvcnQgbG9jayBpcyBub3cgcmVpbml0aWFsaXplZCBhZnRlciBmb3JrLgorCistIElzc3VlICM3OTk5OiBvcy5zZXRyZXVpZCgpIGFuZCBvcy5zZXRyZWdpZCgpIHdvdWxkIHJlZnVzZSB0byBhY2NlcHQgYSAtMQorICBwYXJhbWV0ZXIgb24gc29tZSBwbGF0Zm9ybXMgc3VjaCBhcyBPUyBYLgorCistIEJ1aWxkIHRoZSBvc3NhdWRpbyBleHRlbnNpb24gb24gR05VL2tGcmVlQlNELgorCistIElzc3VlICM3MzQ3OiB3aW5yZWc6IEFkZCBDcmVhdGVLZXlFeCBhbmQgRGVsZXRlS2V5RXgsIGFzIHdlbGwgYXMgZml4IGEgYnVnIGluCisgIHRoZSByZXR1cm4gdmFsdWUgb2YgUXVlcnlSZWZsZWN0aW9uS2V5LgorCistIElzc3VlICM3NTY3OiBQeUN1cnNlc19zZXR1cHRlcm06IERvbid0IGNhbGwgYGBzZXR1cHRlcm1gYCB0d2ljZS4KKworQnVpbGQKKy0tLS0tCisKKy0gVXNlIE9wZW5TU0wgMS4wLjBhIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzkyODA6IE1ha2Ugc2hhcmVkaW5zdGFsbCBkZXBlbmQgb24gc2hhcmVkbW9kcy4KKworLSBJc3N1ZSAjOTE4OTogTWFrZSBhIHVzZXItc3BlY2lmaWVkIENGTEFHUywgQ1BQRkxBR1MsIG9yIExERkxBR1Mgc2V0dGluZworICBvdmVycmlkZSB0aGUgY29uZmlndXJlIGFuZCBtYWtlZmlsZSBkZWZhdWx0cywgd2l0aG91dCBkZWxldGluZyBvcHRpb25zIHRoZQorICB1c2VyIGRpZG4ndCBpbnRlbmQgdG8gb3ZlcnJpZGUuICBEZXZlbG9wZXJzIHNob3VsZCBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5CisgIE9QVCBvciBFWFRSQV9DRkxBR1MsIGFsdGhvdWdoIHRob3NlIHZhcmlhYmxlcyBhcmUgc3RpbGwgcHJlc2VudCBmb3IKKyAgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjODg1NDogRml4IGZpbmRpbmcgVmlzdWFsIFN0dWRpbyAyMDA4IG9uIFdpbmRvd3MgeDY0LgorCistIElzc3VlICMxNzU5MTY5LCAjODg2NDogRHJvcCBfWE9QRU5fU09VUkNFIG9uIFNvbGFyaXMsIGRlZmluZSBpdCBmb3IKKyAgbXVsdGlwcm9jZXNzaW5nIG9ubHkuCisKKy0gSXNzdWUgIzg2MjU6IFR1cm4gb2ZmIG9wdGltaXphdGlvbiBpbiAtLXdpdGgtcHlkZWJ1ZyBidWlsZHMgd2l0aCBnY2MuCisgIChPcHRpbWl6YXRpb24gd2FzIHVuaW50ZW50aW9uYWxseSB0dXJuZWQgb24gaW4gZ2NjIC0td2l0aC1weWRlYnVnIGJ1aWxkcyBhcyBhCisgIHJlc3VsdCBvZiB0aGUgaXNzdWUgIzE2Mjg0ODQgZml4LCBjb21iaW5lZCB3aXRoIGF1dG9jb25mJ3Mgc3RyYW5nZSBjaG9pY2Ugb2YKKyAgZGVmYXVsdCBDRkxBR1MgcHJvZHVjZWQgYnkgQUNfUFJPR19DQyBmb3IgZ2NjLikKKworLSBJc3N1ZSAjMzY0NjogSXQgaXMgbm93IGVhc2lseSBwb3NzaWJsZSB0byBpbnN0YWxsIGEgUHl0aG9uIGZyYW1ld29yayBpbnRvIHlvdXIKKyAgaG9tZSBkaXJlY3Rvcnkgb24gTWFjT1NYLCBzZWUgTWFjL1JFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjMzkyODogb3MubWtub2QoKSBub3cgYXZhaWxhYmxlIGluIFNvbGFyaXMsIGFsc28uCisKKy0gSXNzdWUgIzMzMjY6IEJ1aWxkIFB5dGhvbiB3aXRob3V0IC1mbm8tc3RyaWN0LWFsaWFzaW5nIHdoZW4gdGhlIGdjYyBkb2VzIG5vdAorICBnaXZlIGZhbHNlIHdhcm5pbmdzLgorCistIElzc3VlICMxNjI4NDg0OiBUaGUgTWFrZWZpbGUgZG9lc24ndCBpZ25vcmUgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICBhbnltb3JlLiAgSXQgYWxzbyBmb3J3YXJkcyB0aGUgTERGTEFHUyBzZXR0aW5ncyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgYQorICBzaGFyZWQgbGlicmFyeS4KKworLSBJc3N1ZSAjNjcxNjogUXVvdGUgLXggYXJndW1lbnRzIG9mIGNvbXBpbGVhbGwgaW4gTVNJIGluc3RhbGxlci4gIEV4Y2x1ZGUgMnRvMworICB0ZXN0cyBmcm9tIGNvbXBpbGVhbGwuCisKKy0gSXNzdWUgIzM5MjAsICM3OTAzOiBEZWZpbmUgX0JTRF9TT1VSQ0Ugb24gT3BlbkJTRCA0LjQgdGhyb3VnaCA0LjkuCisKKy0gSXNzdWUgIzc2MzI6IFdoZW4gUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSIGlzIGRlZmluZWQsIGRpc2FibGUgdGhlIHByaXZhdGUKKyAgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIGluIGR0b2EuYyBhbmQgdXNlIFB5TWVtX01hbGxvYyBhbmQgUHlNZW1fRnJlZQorICBpbnN0ZWFkLiAgQWxzbyBkaXNhYmxlIGNhY2hpbmcgb2YgcG93ZXJzIG9mIDUuCisKKy0gSXNzdWUgIzY0OTE6IEFsbG93IC0td2l0aC1kYm1saWJvcmRlciB0byBzcGVjaWZ5IHRoYXQgbm8gZGJtcyB3aWxsIGJlIGJ1aWx0LgorCistIElzc3VlICM2OTQzOiBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIHRoZSBsaWJmZmkgaGVhZGVycyB3aGVuIHRoZQorICAtLXdpdGgtc3lzdGVtLWZmaSBmbGFnIGlzIHVzZWQuCisKKy0gSXNzdWUgIzc2MDk6IEFkZCBhIC0td2l0aC1zeXN0ZW0tZXhwYXQgb3B0aW9uIHRoYXQgY2F1c2VzIHRoZSBzeXN0ZW0ncyBleHBhdAorICBsaWJyYXJ5IHRvIGJlIHVzZWQgZm9yIHRoZSBweWV4cGF0IG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW5jbHVkZWQgd2l0aAorICBQeXRob24uCisKKy0gSXNzdWUgIzc1ODk6IE9ubHkgYnVpbGQgdGhlIG5pcyBtb2R1bGUgd2hlbiB0aGUgY29ycmVjdCBoZWFkZXIgZmlsZXMgYXJlCisgIGZvdW5kLgorCistIFN3aXRjaCB0byBPcGVuU1NMIDAuOS44bCBhbmQgc3FsaXRlIDMuNi4yMSBvbiBXaW5kb3dzLgorCistIElzc3VlICM1NzkyOiBFeHRlbmQgdGhlIHNob3J0IGZsb2F0IHJlcHIgc3VwcG9ydCB0byB4ODYgc3lzdGVtcyB1c2luZworICBpY2Mgb3Igc3VuY2MuCisKKy0gSXNzdWUgIzY2MDM6IENoYW5nZSBSRUFEX1RJTUVTVEFNUCBtYWNybyBpbiBjZXZhbC5jIHNvIHRoYXQgaXQgY29tcGlsZXMKKyAgY29ycmVjdGx5IHVuZGVyIGdjYyBvbiB4ODYtNjQuICBUaGlzIGZpeGVzIGEgcmVwb3J0ZWQgcHJvYmxlbSB3aXRoIHRoZQorICAtLXdpdGgtdHNjIGJ1aWxkIG9uIHg4Ni02NC4KKworLSBJc3N1ZSAjNjgwMjogRml4IGJ1aWxkIGlzc3VlcyBvbiBNYWNPU1ggMTAuNi4KKworLSBJc3N1ZSAjNjI0NDogQWxsb3cgZGV0ZWN0X3RraW50ZXIgdG8gbG9vayBmb3IgVGNsL1RrIDguNi4KKworLSBJc3N1ZSAjNDYwMTogJ21ha2UgaW5zdGFsbCcgZGlkIG5vdCBzZXQgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIG9uCisgIGRpcmVjdG9yaWVzLgorCistIElzc3VlICM1MzkwOiBBZGQgdW5pbnN0YWxsIGljb24gaW5kZXBlbmRlbnQgb2Ygd2hldGhlciBmaWxlIGV4dGVuc2lvbnMgYXJlCisgIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjNzU0MTogV2hlbiB1c2luZyBgYHB5dGhvbi1jb25maWdgYCB3aXRoIGEgZnJhbWV3b3JrIGluc3RhbGwgdGhlCisgIGNvbXBpbGVyIG1pZ2h0IHVzZSB0aGUgd3JvbmcgbGlicmFyeS4KKworLSBweXRob24tY29uZmlnIG5vdyBzdXBwb3J0cyBtdWx0aXBsZSBvcHRpb25zIG9uIHRoZSBzYW1lIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjODUwOTogRml4IHF1b3RpbmcgaW4gaGVscCBzdHJpbmdzIGFuZCBjb2RlIHNuaXBwZXRzIGluIGNvbmZpZ3VyZS5pbi4KKworLSBJc3N1ZSAjODUxMDogVXBkYXRlIHRvIGF1dG9jb25mMi42NS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM5ODE3OiBBZGQgZXhwYXQgQ09QWUlORyBmaWxlOyBhZGQgZXhwYXQsIGxpYmZmaSBhbmQgZXhwYXQgbGljZW5zZXMKKyAgdG8gRG9jL2xpY2Vuc2UucnN0LgorCistIElzc3VlICM5NTI0OiBEb2N1bWVudCB0aGF0IHR3byBDVFJMKiBzaWduYWxzIGFyZSBtZWFudCBmb3IgdXNlIG9ubHkKKyAgd2l0aCBvcy5raWxsLgorCistIElzc3VlICM5MjU1OiBEb2N1bWVudCB0aGF0IHRoZSAndGVzdCcgcGFja2FnZSBpcyBtZWFudCBmb3IgaW50ZXJuYWwgUHl0aG9uIHVzZQorICBvbmx5LgorCistIEEgc21hbGwgV1NHSSBzZXJ2ZXIgd2FzIGFkZGVkIGFzIFRvb2xzL3NjcmlwdHMvc2VydmUucHksIGFuZCBpcyB1c2VkIHRvCisgIGltcGxlbWVudCBhIGxvY2FsIGRvY3VtZW50YXRpb24gc2VydmVyIHZpYSAnbWFrZSBzZXJ2ZScgaW4gdGhlIGRvYyBkaXJlY3RvcnkuCisKKy0gVXBkYXRpbmcgYFVzaW5nIFB5dGhvbmAgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIGRlc2NyaXB0aW9uIG9mIENQeXRob24ncyAtSgorICBhbmQgLVggb3B0aW9ucy4KKworLSBEb2N1bWVudCB0aGF0IGltcG9ydGluZyBhIG1vZHVsZSB0aGF0IGhhcyBOb25lIGluIHN5cy5tb2R1bGVzIHRyaWdnZXJzIGFuCisgIEltcG9ydEVycm9yLgorCistIElzc3VlICM2NTU2OiBGaXhlZCB0aGUgRGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9jYXRpb24gZXhwbGFuYXRpb24gZm9yCisgIFdpbmRvd3MuCisKKy0gVXBkYXRlIHB5dGhvbiBtYW51YWwgcGFnZSAob3B0aW9ucyAtQiwgLU8wLCAtcywgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFLCBQWVRIT05OT1VTRVJTSVRFKS4KKworLSBJc3N1ZSAjODkwOTogQWRkZWQgdGhlIHNpemUgb2YgdGhlIGJpdG1hcCB1c2VkIGluIHRoZSBpbnN0YWxsZXIgY3JlYXRlZCBieQorICBkaXN0dXRpbHMnIGJkaXN0X3dpbmluc3QuIFBhdGNoIGJ5IEFuYXRvbHkgVGVjaHRvbmlrLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTI1MTogdGVzdF90aHJlYWRlZF9pbXBvcnQgZGlkbid0IGZhaWwgd2hlbiBydW4gdGhyb3VnaCByZWdydGVzdCBpZiB0aGUKKyAgaW1wb3J0IGxvY2sgd2FzIGRpc2FibGVkLgorCistIElzc3VlICM4NjA1OiBTa2lwIHRlc3RfZ2RiIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMuCisKKy0gSXNzdWUgIzc0NDk6IFNraXAgdGVzdF9zb2NrZXRzZXJ2ZXIgaWYgdGhyZWFkaW5nIHN1cHBvcnQgaXMgZGlzYWJsZWQuCisKKy0gSXNzdWUgIzg2NzI6IEFkZCBhIHpsaWIgdGVzdCBlbnN1cmluZyB0aGF0IGFuIGluY29tcGxldGUgc3RyZWFtIGNhbiBiZSBoYW5kbGVkCisgIGJ5IGEgZGVjb21wcmVzc29yIG9iamVjdCB3aXRob3V0IGVycm9ycyAoaXQgcmV0dXJucyBpbmNvbXBsZXRlIHVuY29tcHJlc3NlZAorICBkYXRhKS4KKworLSBJc3N1ZSAjODUzMzogcmVncnRlc3QgdXNlcyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIgZm9yIHN0ZG91dCB0byBhdm9pZAorICBVbmljb2RlRW5jb2RlRXJyb3IgKHdyaXRlIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdG8gc3Rkb3V0IHVzaW5nIEFTQ0lJIGVuY29kaW5nKS4KKworLSBJc3N1ZSAjODU3NjogUmVtb3ZlIHVzZSBvZiBmaW5kX3VudXNlZF9wb3J0KCkgaW4gdGVzdF9zbXRwbGliIGFuZAorICB0ZXN0X211bHRpcHJvY2Vzc2luZy4gIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy0gSXNzdWUgIzc0NDk6IEZpeCBtYW55IHRlc3RzIHRvIHN1cHBvcnQgUHl0aG9uIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkCisgIHN1cHBvcnQuIFBhdGNoZXMgd3JpdHRlbiBieSBKZXJyeSBTZXV0dGVyLgorCistIElzc3VlICM4MTA4OiB0ZXN0X2Z0cGxpYidzIG5vbi1ibG9ja2luZyBTU0wgc2VydmVyIG5vdyBoYXMgcHJvcGVyIGhhbmRsaW5nIG9mCisgIFNTTCBzaHV0ZG93bnMuCisKKy0gSXNzdWVzICM4Mjc5LCAjODMzMCwgIzg0MzcsICM4NDgwLCAjODQ5NTogRml4IHRlc3RfZ2RiIGZhaWx1cmVzLCBwYXRjaCB3cml0dGVuCisgIGJ5IERhdmUgTWFsY29sbS4KKworLSBJc3N1ZSAjMzg2NDogU2tpcCB0aHJlZSB0ZXN0X3NpZ25hbCB0ZXN0cyBvbiBmcmVlYnNkNiBiZWNhdXNlIHRoZXkgZmFpbCBpZiBhbnkKKyAgdGhyZWFkIHdhcyBwcmV2aW91c2x5IHN0YXJ0ZWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBhIHBsYXRmb3JtIGJ1Zy4KKworLSBJc3N1ZSAjODE5MzogRml4IHRlc3RfemxpYiBmYWlsdXJlIHdpdGggemxpYiAxLjIuNC4KKworLSBJc3N1ZSAjODI0ODogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBib29sIHR5cGUuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCisKKy0gSXNzdWUgIzgyNjM6IE5vdyByZWdydGVzdC5weSB3aWxsIHJlcG9ydCBhIGZhaWx1cmUgaWYgaXQgcmVjZWl2ZXMgYQorICBLZXlib2FyZEludGVycnVwdCAoU0lHSU5UKS4KKworLSBJc3N1ZSAjODE4MCBhbmQgIzgyMDc6IEZpeCB0ZXN0X3BlcDI3NyBvbiBPUyBYIGFuZCBhZGQgbW9yZSB0ZXN0cyBmb3Igc3BlY2lhbAorICBVbmljb2RlIG5vcm1hbGl6YXRpb24gY2FzZXMuCisKKy0gSXNzdWUgIzc3ODM6IHRlc3Quc3VwcG9ydC5vcGVuX3VybHJlc291cmNlIGludmFsaWRhdGVzIHRoZSBvdXRkYXRlZCBmaWxlcyBmcm9tCisgIHRoZSBsb2NhbCBjYWNoZS4KKworLSBJc3N1ZSAjNzg0OTogTm93IHRoZSB1dGlsaXR5IGBgY2hlY2tfd2FybmluZ3NgYCB2ZXJpZmllcyBpZiB0aGUgd2FybmluZ3MgYXJlCisgIGVmZmVjdGl2ZWx5IHJhaXNlZC4KKworLSBUaGUgZm91ciBwYXRoIG1vZHVsZXMgKGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGgsIHBvc2l4cGF0aCkgc2hhcmUgYSBjb21tb24KKyAgVGVzdENhc2UgZm9yIHNvbWUgdGVzdHM6IHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdC4KKworLSBQcmludCBwbGF0Zm9ybSBpbmZvcm1hdGlvbiB3aGVuIHJ1bm5pbmcgdGhlIHdob2xlIHRlc3Qgc3VpdGUsIG9yIHVzaW5nIHRoZQorICAtLXZlcmJvc2UgZmxhZy4KKworLSBJc3N1ZSAjNzY3Njc1OiBlbmFibGUgdGVzdF9wZXAyNzcgb24gUE9TSVggcGxhdGZvcm1zIHdpdGggVW5pY29kZS1mcmllbmRseQorICBmaWxlc3lzdGVtIGVuY29kaW5nLgorCistIElzc3VlICM2MjkyOiBmb3IgdGhlIG1vbWVudCBhdCBsZWFzdCwgdGhlIHRlc3Qgc3VpdGUgcnVucyBjbGVhbmx5IGlmIHB5dGhvbiBpcworICBydW4gd2l0aCB0aGUgLU9PIGZsYWcuICBUZXN0cyByZXF1aXJpbmcgZG9jc3RyaW5ncyBhcmUgc2tpcHBlZC4KKworLSBJc3N1ZSAjNzcxMjogdGVzdC5zdXBwb3J0IGdhaW5lZCBhIG5ldyBgdGVtcF9jd2RgIGNvbnRleHQgbWFuYWdlciB3aGljaCBpcyBub3cKKyAgYWxzbyB1c2VkIGJ5IHJlZ3J0ZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoZQorICBvcmlnaW5hbCBDV0QgaXMgc2F2ZWQgaW4gYHN1cHBvcnQuU0FWRURDV0RgLiAgVGhhbmtzIHRvIEZsb3JlbnQgWGljbHVuYSB3aG8KKyAgaGVscGVkIHdpdGggdGhlIHBhdGNoLgorCistIElzc3VlICM3OTI0OiBGaXggYW4gaW50ZXJtaXR0ZW50ICdYWFggdW5kZXRlY3RlZCBlcnJvcicgZmFpbHVyZSBpbiB0ZXN0X2NhcGkKKyAgKG9ubHkgc2VlbiBzbyBmYXIgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjdXJzZXMgbW9kdWxlIHdhc24ndCBidWlsdCksIGR1ZSB0bworICBhbiB1bmNsZWFyZWQgZXhjZXB0aW9uLgorCistIElzc3VlICM3NzI4OiB0ZXN0X3RpbWVvdXQgd2FzIGNoYW5nZWQgdG8gdXNlIHN1cHBvcnQuYmluZF9wb3J0IGluc3RlYWQgb2YgYQorICBoYXJkIGNvZGVkIHBvcnQuCisKKy0gSXNzdWUgIzczNzY6IEluc3RlYWQgb2YgcnVubmluZyBhIHNlbGYtdGVzdCAod2hpY2ggd2FzIGZhaWxpbmcpIHdoZW4gY2FsbGVkCisgIHdpdGggbm8gYXJndW1lbnRzLCBkb2N0ZXN0LnB5IG5vdyBnaXZlcyBhIHVzYWdlIG1lc3NhZ2UuCisKKy0gSXNzdWUgIzczOTY6IGZpeCByZWdydGVzdCAtcywgd2hpY2ggd2FzIGJyb2tlbiBieSB0aGUgLWogZW5oYW5jZW1lbnQuCisKKy0gSXNzdWUgIzc0OTg6IHRlc3RfbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIHRlc3Quc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0CisgIGluc3RlYWQgb2YgYSBoYXJkY29kZWQgcG9ydCBudW1iZXIgaW4gdGVzdF9yYXBpZF9yZXN0YXJ0LgorCistIElzc3VlICM3NDMxOiBVc2UgVEVTVEZOIGluIHRlc3RfbGluZWNhY2hlIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGNyZWF0ZSBhIGZpbGUKKyAgaW4gdGhlIExpYi90ZXN0IGRpcmVjdG9yeSwgd2hpY2ggbWlnaHQgYmUgcmVhZC1vbmx5IGZvciB0aGUgdXNlciBydW5uaW5nIHRoZQorICB0ZXN0cy4KKworLSBJc3N1ZSAjNzMyNDogQWRkIGEgc2FuaXR5IGNoZWNrIHRvIHJlZ3J0ZXN0IGFyZ3VtZW50IHBhcnNpbmcgdG8gY2F0Y2ggdGhlIGNhc2UKKyAgb2YgYW4gb3B0aW9uIHdpdGggbm8gaGFuZGxlci4KKworLSBJc3N1ZSAjNzMxMjogQWRkIGEgLUYgZmxhZyB0byBydW4gdGhlIHNlbGVjdGVkIHRlc3RzIGluIGEgbG9vcCB1bnRpbCBhIHRlc3QKKyAgZmFpbHMuICBDYW4gYmUgY29tYmluZWQgd2l0aCAtai4KKworLSBJc3N1ZSAjNjU1MTogdGVzdF96aXBpbXBvcnQgY291bGQgaW1wb3J0IGFuZCB0aGVuIGRlc3Ryb3kgc29tZSBtb2R1bGVzIG9mIHRoZQorICBlbmNvZGluZ3MgcGFja2FnZSwgd2hpY2ggd291bGQgbWFrZSBvdGhlciB0ZXN0cyBmYWlsIGZ1cnRoZXIgZG93biB0aGUgcm9hZAorICBiZWNhdXNlIHRoZSBpbnRlcm5hbGx5IGNhY2hlZCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgd291bGQgcG9pbnQgdG8gZW1wdHkKKyAgZ2xvYmFsIHZhcmlhYmxlcy4KKworLSBJc3N1ZSAjNzI5NTogRG8gbm90IHVzZSBhIGhhcmRjb2RlZCBmaWxlIG5hbWUgaW4gdGVzdF90YXJmaWxlLgorCistIElzc3VlICM3MjcwOiBBZGQgc29tZSBkZWRpY2F0ZWQgdW5pdCB0ZXN0cyBmb3IgbXVsdGktdGhyZWFkIHN5bmNocm9uaXphdGlvbgorICBwcmltaXRpdmVzIHN1Y2ggYXMgTG9jaywgUkxvY2ssIENvbmRpdGlvbiwgRXZlbnQgYW5kIFNlbWFwaG9yZS4KKworLSBJc3N1ZSAjNzI0OCAocGFydCAyKTogVXNlIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGltcG9ydGxpYiBzb3VyY2UKKyAgdGVzdHMgaW5zdGVhZCBvZiB0ZW1wZmlsZS50ZW1wZGlyLiBUaGlzIHByZXZlbnRzIHRoZSB0ZXN0cyBmcm9tIHNoYXJpbmcgc3RhdGUKKyAgYmV0d2VlbiBjb25jdXJyZW50IGV4ZWN1dGlvbnMgb24gdGhlIHNhbWUgc3lzdGVtLgorCistIElzc3VlICM3MjQ4OiBJbiBpbXBvcnRsaWIudGVzdC5zb3VyY2UudXRpbCBhIHRyeS9maW5hbGx5IGJsb2NrIGRpZCBub3QgbWFrZQorICBzdXJlIHRoYXQgc29tZSByZWZlcmVuY2VkIG9iamVjdHMgYWN0dWFsbHkgd2VyZSBjcmVhdGVkIGluIHRoZSBibG9jayBiZWZvcmUKKyAgY2FsbGluZyBtZXRob2RzIG9uIHRoZSBvYmplY3QuCisKKy0gSXNzdWUgIzcyMjI6IE1ha2UgdGhyZWFkICJyZWFwaW5nIiBtb3JlIHJlbGlhYmxlIHNvIHRoYXQgcmVmZXJlbmNlCisgIGxlYWstY2hhc2luZyB0ZXN0IHJ1bnMgZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiAgVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCisgIHRocmVhZHMgY291bGQgcmV0dXJuIHN1Y2Nlc3NmdWxseSB3aGlsZSBzb21lIFRocmVhZCBvYmplY3RzIHdlcmUgc3RpbGwKKyAgcmVmZXJlbmNlZC4gIFRoaXMgYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IHByaXZhdGUgZnVuY3Rpb246CisgIGBgX3RocmVhZC5fY291bnQoKWBgLgorCistIElzc3VlICM3MTUxOiBGaXhlZCByZWdydGVzdCAtaiBzbyB0aGF0IG91dHB1dCB0byBzdGRlcnIgZnJvbSBhIHRlc3Qgbm8gbG9uZ2VyCisgIHJ1bnMgdGhlIHJpc2sgb2YgY2F1c2luZyB0aGUgd29ya2VyIHRocmVhZCB0byBmYWlsLgorCistIElzc3VlICM3MDU1OiB0ZXN0X19fYWxsX18gbm93IGdyZWVkaWx5IGRldGVjdHMgYWxsIG1vZHVsZXMgd2hpY2ggaGF2ZSBhbgorICBfX2FsbF9fIGF0dHJpYnV0ZSwgcmF0aGVyIHRoYW4gdXNpbmcgYSBoYXJkY29kZWQgYW5kIGluY29tcGxldGUgbGlzdC4KKworLSBJc3N1ZSAjNzA1ODogQWRkZWQgc2F2ZS9yZXN0b3JlIGZvciB0aGluZ3MgbGlrZSBzeXMuYXJndiBhbmQgY3dkIHRvCisgIHJ1bnRlc3RfaW5uZXIgaW4gcmVncnRlc3QsIHdpdGggd2FybmluZ3MgaWYgdGhlIGNhbGxlZCB0ZXN0IG1vZGlmaWVzIHRoZW0sIGFuZAorICBhIG5ldyBzZWN0aW9uIGluIHRoZSBzdW1tYXJ5IHJlcG9ydCBhdCB0aGUgZW5kLgorCistIElzc3VlICM3MDQyOiBGaXggdGVzdF9zaWduYWwgKHRlc3RfaXRpbWVyX3ZpcnR1YWwpIGZhaWx1cmUgb24gT1MgWCAxMC42LgorCistIEZpeGVkIHRlc3RzIGluIGltcG9ydGxpYi50ZXN0LnNvdXJjZS50ZXN0X2FiY19sb2FkZXIgdGhhdCB3ZXJlIG1hc2tpbmcgdGhlCisgIHByb3BlciBleGNlcHRpb25zIHRoYXQgc2hvdWxkIGJlIHJhaXNlZCBmb3IgbWlzc2luZyBvciBpbXByb3BlciBjb2RlIG9iamVjdAorICBieXRlY29kZS4KKworLSBSZW1vdmVkIGltcG9ydGxpYidzIGN1c3RvbSB0ZXN0IGRpc2NvdmVyeSBjb2RlIGFuZCBzd2l0Y2hlZCB0bworICB1bml0dGVzdC5UZXN0TG9hZGVyLmRpc2NvdmVyKCkuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM1NDY0LCAjODk3NDogSW1wbGVtZW50IHBsdXJhbCBmb3JtcyBpbiBtc2dmbXQucHkuCisKKy0gaW9iZW5jaCAoYSBmaWxlIEkvTyBiZW5jaG1hcmspIGFuZCBjY2JlbmNoIChhIGNvbmN1cnJlbmN5IGJlbmNobWFyaykgd2VyZQorICBhZGRlZCB0byB0aGUgYFRvb2xzL2AgZGlyZWN0b3J5LiAgVGhleSB3ZXJlIHByZXZpb3VzbHkgbGl2aW5nIGluIHRoZSBzYW5kYm94LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjctSnVuZS0yMDA5KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjMzNDogRml4IGJ1ZyBpbiByYW5nZSBsZW5ndGggY2FsY3VsYXRpb24gZm9yIHJhbmdlcyB3aXRoCisgIGxhcmdlIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjNjMyOTogRml4ZWQgaXRlcmF0aW9uIGZvciBtZW1vcnl2aWV3IG9iamVjdHMgKGl0IHdhcyBiZWluZyBibG9ja2VkCisgIGJlY2F1c2UgaXQgd2Fzbid0IHJlY29nbml6ZWQgYXMgYSBzZXF1ZW5jZSkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjNjEyNjogRml4ZWQgcGRiIGNvbW1hbmQtbGluZSB1c2FnZS4KKworLSBJc3N1ZSAjNjMxNDogbG9nZ2luZzogcGVyZm9ybXMgZXh0cmEgY2hlY2tzIG9uIHRoZSAibGV2ZWwiIGFyZ3VtZW50LgorCistIElzc3VlICM2Mjc0OiBGaXhlZCBwb3NzaWJsZSBmaWxlIGRlc2NyaXB0b3JzIGxlYWsgaW4gc3VicHJvY2Vzcy5weQorCistIEFjY2Vzc2luZyBpby5TdHJpbmdJTy5idWZmZXIgbm93IHJhaXNlcyBhbiBBdHRyaWJ1dGVFcnJvciBpbnN0ZWFkIG9mCisgIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLgorCistIElzc3VlICM2MjcxOiBtbWFwIHRyaWVkIHRvIGNsb3NlIGludmFsaWQgZmlsZSBoYW5kbGUgKC0xKSB3aGVuIGFub255bW91cy4KKyAgKE9uIFVuaXgpCisKKy0gSXNzdWUgIzEyMDI6IHppcGZpbGUgbW9kdWxlIHdvdWxkIGNhdXNlIGEgc3RydWN0LmVycm9yIHdoZW4gYXR0ZW1wdGluZyB0bworICBzdG9yZSBmaWxlcyB3aXRoIGEgQ1JDMzIgPiAyKiozMS0xLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTU5MDogUmVtb3ZlIHVudXNlZCBnbG9iYWwgdmFyaWFibGUgaW4gcHlleHBhdCBleHRlbnNpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTMtSnVuZS0yMDA5KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXhlZCBTeXN0ZW1FcnJvciB0cmlnZ2VyZWQgYnkgInJhbmdlKFtdLCAxLCAtMSkiLgorCistIElzc3VlICM1OTI0OiBPbiBXaW5kb3dzLCBhIGxhcmdlIFBZVEhPTlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgKG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycykgd291bGQgYmUgY29tcGxldGVseSBpZ25vcmVkLgorCistIElzc3VlICM0NTQ3OiBXaGVuIGRlYnVnZ2luZyBhIHZlcnkgbGFyZ2UgZnVuY3Rpb24sIGl0IHdhcyBub3QgYWx3YXlzCisgIHBvc3NpYmxlIHRvIHVwZGF0ZSB0aGUgbGluZW5vIGF0dHJpYnV0ZSBvZiB0aGUgY3VycmVudCBmcmFtZS4KKworLSBJc3N1ZSAjNTMzMDogQyBmdW5jdGlvbnMgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMgd2VyZSBub3QgcmVwb3J0ZWQgYnkKKyAgdGhlIHZhcmlvdXMgcHJvZmlsaW5nIG1vZHVsZXMgKHByb2ZpbGUsIGNQcm9maWxlKS4gUGF0Y2ggYnkgSGFnZW4gRsO8cnN0ZW5hdS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM2NDM4OiBGaXhlZCBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyLmdldF92ZXJzaW9ucyA6IHRoZSByZWd1bGFyCisgIGV4cHJlc3Npb24gc3RyaW5nIHBhdHRlcm4gd2FzIHRyeWluZyB0byBtYXRjaCBhZ2FpbnN0IGEgYnl0ZXMgcmV0dXJuZWQgYnkKKyAgUG9wZW4uIFRlc3RlZCB1bmRlciB3aW4zMiB0byBidWlsZCB0aGUgcHktcG9zdGdyZXNxbCBwcm9qZWN0LgorCistIElzc3VlICM2MjU4OiBTdXBwb3J0IEFNRDY0IGluIGJkaXN0X21zaS4KKworLSBJc3N1ZSAjNjE5NTogZml4ZWQgZG9jdGVzdCB0byBubyBsb25nZXIgdHJ5IHRvIHJlYWQgJ3NvdXJjZScgZGF0YSBmcm9tCisgIGJpbmFyeSBmaWxlcy4KKworLSBJc3N1ZSAjNTI2MjogRml4ZWQgYnVnIGluIG5leHQgcm9sbG92ZXIgdGltZSBjb21wdXRhdGlvbiBpbgorICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIuCisKKy0gSXNzdWUgIzYyMTc6IFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGlvLlRleHRJT1dyYXBwZXIgZGlkbid0IGluY2x1ZGUgdGhlCisgIGVycm9ycyBwcm9wZXJ0eS4gIEFkZGl0aW9uYWxseSwgdGhlIGVycm9ycyBhbmQgZW5jb2RpbmcgcHJvcGVydGllcyBvZiBTdHJpbmdJTworICBhcmUgYWx3YXlzIE5vbmUgbm93LgorCistIElzc3VlICM2MTM3OiBUaGUgcGlja2xlIG1vZHVsZSBub3cgdHJhbnNsYXRlcyBtb2R1bGUgbmFtZXMgd2hlbiBsb2FkaW5nCisgIG9yIGR1bXBpbmcgcGlja2xlcyB3aXRoIGEgMi54LWNvbXBhdGlibGUgcHJvdG9jb2wsIGluIG9yZGVyIHRvIG1ha2UgZGF0YQorICBzaGFyaW5nIGFuZCBtaWdyYXRpb24gZWFzaWVyLiBUaGlzIGJlaGF2aW91ciBjYW4gYmUgZGlzYWJsZWQgdXNpbmcgdGhlCisgIG5ldyBgZml4X2ltcG9ydHNgIG9wdGlvbmFsIGFyZ3VtZW50LgorCistIFJlbW92ZWQgdGhlIGlwYWRkciBtb2R1bGUuCisKKy0gSXNzdWUgIzM2MTM6IGJhc2U2NC57ZW5jb2RlLGRlY29kZX1zdHJpbmcgYXJlIG5vdyBjYWxsZWQKKyAgYmFzZTY0LntlbmNvZGUsZGVjb2RlfWJ5dGVzIHdoaWNoIHJlZmxlY3RzIHdoYXQgdHlwZSB0aGV5IGFjY2VwdCBhbmQgcmV0dXJuLgorICBUaGUgb2xkIG5hbWVzIGFyZSBzdGlsbCB0aGVyZSBhcyBkZXByZWNhdGVkIGFsaWFzZXMuCisKKy0gSXNzdWUgIzU3Njc6IFJlbW92ZSBzZ21sb3Agc3VwcG9ydCBmcm9tIHhtbHJwYy5jbGllbnQuCisKKy0gSXNzdWUgIzYxNTA6IEZpeCB0ZXN0X3VuaWNvZGUgb24gd2lkZS11bmljb2RlIGJ1aWxkcy4KKworLSBJc3N1ZSAjNjE0OTogRml4IGluaXRpYWxpemF0aW9uIG9mIFdlYWtWYWx1ZURpY3Rpb25hcnkgb2JqZWN0cyBmcm9tIG5vbi1lbXB0eQorICBwYXJhbWV0ZXJzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzYyMjE6IERlbGV0ZSB0ZXN0IHJlZ2lzdHJ5IGtleSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdC4KKworLSBJc3N1ZSAjNjE1ODogUGFja2FnZSBTaW5lLTEwMDBIei0zMDBtcy5haWYgaW4gTVNJIGZpbGUuCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICM1NzM1OiBQeXRob24gY29tcGlsZWQgd2l0aCAtLXdpdGgtcHlkZWJ1ZyBzaG91bGQgdGhyb3cgYW4KKyAgSW1wb3J0RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IG1vZHVsZXMgY29tcGlsZWQgd2l0aG91dAorICAtLXdpdGgtcHlkZWJ1ZywgYW5kIHZpY2UtdmVyc2EuCisKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzYxNTQ6IE1ha2Ugc3VyZSB0aGUgaW50bCBsaWJyYXJ5IGlzIGFkZGVkIHRvIExJQlMgaWYgbmVlZGVkLiBBbHNvCisgIGFkZGVkIExJQlMgdG8gT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgorCistIElzc3VlICM1ODA5OiBTcGVjaWZ5aW5nIGJvdGggLS1lbmFibGUtZnJhbWV3b3JrIGFuZCAtLWVuYWJsZS1zaGFyZWQgaXMKKyAgYW4gZXJyb3IuIENvbmZpZ3VyZSBub3cgZXhwbGljaXR5IHRlbGxzIHlvdSBhYm91dCB0aGlzLgorCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAwOS0wNS0zMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzYwOTc6IEVzY2FwZSBVVEYtOCBzdXJyb2dhdGVzIHJlc3VsdGluZyBmcm9tIG1ic3RvY3MgY29udmVyc2lvbgorICBvZiB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM2MDEyOiBBZGQgY2xlYW51cCBzdXBwb3J0IHRvIE8mIGFyZ3VtZW50IHBhcnNpbmcuCisKKy0gSXNzdWUgIzYwODk6IEZpeGVkIHN0ci5mb3JtYXQgd2l0aCBjZXJ0YWluIGludmFsaWQgZmllbGQgc3BlY2lmaWVycworICB0aGF0IHdvdWxkIHJhaXNlIFN5c3RlbUVycm9yLgorCistIElzc3VlICM1OTgyOiBzdGF0aWNtZXRob2QgYW5kIGNsYXNzbWV0aG9kIG5vdyBleHBvc2UgdGhlIHdyYXBwZWQKKyAgZnVuY3Rpb24gd2l0aCBfX2Z1bmNfXy4KKworLSBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IG1hbmFnZXJzIGluIHRoZSBzYW1lIHdpdGgtc3RhdGVtZW50LgorICBEZXByZWNhdGVkIGNvbnRleHRsaWIubmVzdGVkKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKworLSBJc3N1ZSAjNTgyOTogY29tcGxleCgiMWU1MDAiKSBubyBsb25nZXIgcmFpc2VzIE92ZXJmbG93RXJyb3IuICBUaGlzCisgIG1ha2VzIGl0IGNvbnNpc3RlbnQgd2l0aCBmbG9hdCgiMWU1MDAiKSBhbmQgaW50ZXJwcmV0YXRpb24gb2YgcmVhbAorICBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzLgorCistIElzc3VlICMzNTI3OiBSZW1vdmVkIFB5X1dJTl9XSURFX0ZJTEVOQU1FUyB3aGljaCBpcyBub3QgdXNlZCBhbnkgbW9yZS4KKworLSBJc3N1ZSAjNTk5NDogdGhlIG1hcnNoYWwgbW9kdWxlIG5vdyBoYXMgZG9jc3RyaW5ncy4KKworLSBJc3N1ZSAjNTk4MTogRml4IHRocmVlIG1pbm9yIGluZi9uYW4gaXNzdWVzIGluIGZsb2F0LmZyb21oZXg6CisgICgxKSBpbmYgYW5kIG5hbiBzdHJpbmdzIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB3ZXJlIGluY29ycmVjdGx5CisgIHJlamVjdGVkOyAgKDIpIHBhcnNpbmcgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgaW5maW5pdGllcyBhbmQgbmFucworICB3YXMgbG9jYWxlIGF3YXJlOyBhbmQgKDMpIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmcm9taGV4KCctbmFuJykKKyAgZGlkbid0IG1hdGNoIHRoYXQgb2YgZmxvYXQoJy1uYW4nKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM0ODU5OiBJbXBsZW1lbnQgUEVQIDM4MyBmb3IgcHdkLCBzcHdkLCBhbmQgZ3JwLgorCistIHNtdHBsaWIgJ2xvZ2luJyBhbmQgJ2NyYW0tbWQ1JyBsb2dpbiBhcmUgYWxzbyBmaXhlZCAoc2VlIElzc3VlICM1MjU5KS4KKworLSBJc3N1ZSAjNjEyMTogcHlkb2Mgbm93IGlnbm9yZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIGluIHRoZQorICBhcmd1bWVudCB0byB0aGUgJ2hlbHAnIGZ1bmN0aW9uLgorCistIElzc3VlICM2MTE4OiB1cmxsaWIucGFyc2UucXVvdGVfcGx1cyBpZ25vcmVkIHRoZSBlbmNvZGluZyBhbmQgZXJyb3JzCisgIGFyZ3VtZW50cyBmb3Igc3RyaW5ncyB3aXRoIGEgc3BhY2UgaW4gdGhlbS4KKworLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgd2FzIG5vdCB3b3JraW5nIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZAorICBuYW1lczogIGNscywgc2VsZiwgdHVwbGUsIGl0ZW1nZXR0ZXIsIGFuZCBwcm9wZXJ0eS4KKworLSBJbiB1bml0dGVzdCwgdXNpbmcgYSBza2lwcGluZyBkZWNvcmF0b3Igb24gYSBjbGFzcyBpcyBub3cgZXF1aXZhbGVudCB0bworICBza2lwcGluZyBldmVyeSB0ZXN0IG9uIHRoZSBjbGFzcy4gIFRoZSBDbGFzc1Rlc3RTdWl0ZSBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM2MDUwOiBEb24ndCBmYWlsIGV4dHJhY3RpbmcgYSBkaXJlY3RvcnkgZnJvbSBhIHppcGZpbGUgaWYKKyAgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy4KKworLSBJc3N1ZSAjMTMwOTM1MjogZmNudGwgbm93IGNvbnZlcnRzIGl0cyB0aGlyZCBhcmd1bWVudHMgdG8gYSBDIGBsb25nYCByYXRoZXIKKyAgdGhhbiBhbiBpbnQsIHdoaWNoIG1ha2VzIHNvbWUgb3BlcmF0aW9ucyBwb3NzaWJsZSB1bmRlciA2NC1iaXQgTGludXggKGUuZy4KKyAgRE5fTVVMVElTSE9UIHdpdGggRl9OT1RJRlkpLgorCistIElzc3VlICM1NzYxOiBBZGQgdGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcgZmlsZSB0byB0aGUgcmVwcigpIG9mIHZhcmlvdXMKKyAgSU8gb2JqZWN0cy4KKworLSBJc3N1ZSAjNTI1OTogc210cGxpYiBwbGFpbiBhdXRoIGxvZ2luIG5vIGxvbmdlciBnaXZlcyBhIHRyYWNlYmFjay4gIEZpeAorICBieSBNdXNhc2hpIFRhbXVyYSwgdGVzdHMgYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjMTk4MzogRml4IGZ1bmN0aW9ucyB0YWtpbmcgb3IgcmV0dXJuaW5nIGEgcHJvY2VzcyBpZGVudGlmaWVyIHRvIHVzZQorICB0aGUgZGVkaWNhdGVkIEMgdHlwZSBgYHBpZF90YGAgaW5zdGVhZCBvZiBhIEMgYGBpbnRgYC4gU29tZSBwbGF0Zm9ybXMgaGF2ZQorICBhIHByb2Nlc3MgaWRlbnRpZmllciB0eXBlIHdpZGVyIHRoYW4gdGhlIHN0YW5kYXJkIEMgaW50ZWdlciB0eXBlLgorCistIElzc3VlICM0MDY2OiBzbXRwbGliLlNNVFBfU1NMLl9nZXRfc29ja2V0IG5vdyBjb3JyZWN0bHkgcmV0dXJucyB0aGUgc29ja2V0LgorICBQYXRjaCBieSBGYXJoYW4gQWhtYWQsIHRlc3QgYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjMjExNjogV2VhayByZWZlcmVuY2VzIGFuZCB3ZWFrIGRpY3Rpb25hcmllcyBub3cgc3VwcG9ydCBjb3B5KClpbmcgYW5kCisgIGRlZXBjb3B5KClpbmcuCisKKy0gSXNzdWUgIzE2NTU6IE1ha2UgaW1hcGxpYiBJUHY2LWNhcGFibGUuIFBhdGNoIGJ5IERlcmVrIE1vcnIuCisKKy0gSXNzdWUgIzU5MTg6IEZpeCBhIGNyYXNoIGluIHRoZSBwYXJzZXIgbW9kdWxlLgorCistIElzc3VlICMxNjY0OiBNYWtlIG5udHBsaWIgSVB2Ni1jYXBhYmxlLiBQYXRjaCBieSBEZXJlayBNb3JyLgorCistIElzc3VlICM1MDA2OiBCZXR0ZXIgaGFuZGxpbmcgb2YgdW5pY29kZSBieXRlLW9yZGVyIG1hcmtzIChCT00pIGluIHRoZSBpbworICBsaWJyYXJ5LiBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCBvcGVuaW5nIGFuIFVURi0xNiB0ZXh0IGZpbGUgaW4KKyAgYXBwZW5kIG1vZGUgZG9lc24ndCBhZGQgYSBCT00gYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiB0aGUgZmlsZSBpc24ndAorICBlbXB0eS4KKworLSBJc3N1ZSAjNDA1MDogaW5zcGVjdC5maW5kc291cmNlL2dldHNvdXJjZSBub3cgcmFpc2UgYW4gSU9FcnJvciBpZiB0aGUgJ3NvdXJjZScKKyAgZmlsZSBpcyBhIGJpbmFyeS4gIFBhdGNoIGJ5IEJyb2RpZSBSYW8sIHRlc3RzIGJ5IERhbmllbCBEaW5pei4gIFRoaXMgZml4CisgIGNvcnJlY3RzIGEgcHlkb2MgcmVncmVzc2lvbi4KKworLSBJc3N1ZSAjNTk1NTogYWlmYydzIGNsb3NlIG1ldGhvZCBkaWQgbm90IGNsb3NlIHRoZSBmaWxlIGl0IHdyYXBwZWQsCisgIG5vdyBpdCBkb2VzLiAgVGhpcyBhbHNvIG1lYW5zIGdldGZwIG1ldGhvZCBub3cgcmV0dXJucyB0aGUgcmVhbCBmcC4KKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjA0NzogZnVsbGluc3RhbGwgaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIFB5dGhvbiAzJ3MgZXhlY3V0YWJsZSB3aWxsCisgIG5vdyBiZSBrbm93biBhcyBweXRob24zLgorCistIExpYi9zbXRwZC5weSBpcyBubyBsb25nZXIgaW5zdGFsbGVkIGFzIGEgc2NyaXB0LgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMzA2MTogVXNlIHdjc2Z0aW1lIGZvciB0aW1lLnN0cmZ0aW1lIHdoZXJlIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjNDg3MzogRml4IHJlc291cmNlIGxlYWtzIGluIGVycm9yIGNhc2VzIG9mIHB3ZCBhbmQgZ3JwLgorCistIElzc3VlICM2MDkzOiBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBsb2NhbGUuc3RyeGZybS4KKworLSBUaGUgX2Z1bmN0b29scyBhbmQgX2xvY2FsZSBtb2R1bGVzIGFyZSBub3cgYnVpbHQgaW50byB0aGUgbGlicHl0aG9uIHNoYXJlZAorICBsaWJyYXJ5IGluc3RlYWQgb2YgYXMgZXh0ZW5zaW9uIG1vZHVsZXMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMzNTg1OiBBZGQgcGtnLWNvbmZpZyBzdXBwb3J0LiBJdCBjcmVhdGVzIGEgcHl0aG9uLTIuNy5wYyBmaWxlCisgIGFuZCBhIHB5dGhvbjMucGMgc3ltbGluayBpbiB0aGUgJChMSUJESVIpL3BrZ2NvbmZpZyBkaXJlY3RvcnkuIFBhdGNoIGJ5CisgIENsaW50b24gUm95LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjNTQ0MjogVGVzdHMgZm9yIGltcG9ydGxpYiB3ZXJlIG5vdCBwcm9wZXJseSBza2lwcGluZyBjYXNlLXNlbnNpdGl2aXR5CisgIHRlc3RzIG9uIGRhcndpbiBldmVuIHdoZW4gdGhlIE9TIHdhcyBpbnN0YWxsZWQgb24gYSBjYXNlLXNlbnNpdGl2ZQorICBmaWxlc3lzdGVtLiBBbHNvIGZpeGVkIHRlc3RzIHRoYXQgc2hvdWxkIG5vdCBiZSBydW4gd2hlbgorICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBpcyB0cnVlLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBiZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDA5LTA1LTA2KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTkxNDogQWRkIG5ldyBDIEFQSSBmdW5jdGlvbiBQeU9TX3N0cmluZ190b19kb3VibGUsIGFuZAorICBkZXByZWNhdGUgUHlPU19hc2NpaV9zdHJ0b2QgYW5kIFB5T1NfYXNjaWlfYXRvZi4KKworLSBJc3N1ZSAjMzM4MjogZmxvYXQuX19mb3JtYXRfXywgY29tcGxleC5fX2Zvcm1hdF9fLCBhbmQgJS1mb3JtYXR0aW5nCisgIG5vIGxvbmdlciBtYXAgJ0YnIHRvICdmJy4gQmVjYXVzZSBvZiBpc3N1ZSAjNTg1OSAoYmVsb3cpLCB0aGlzIG9ubHkKKyAgYWZmZWN0cyBuYW4gLT4gTkFOIGFuZCBpbmYgLT4gSU5GLgorCistIElzc3VlICM1Nzk5OiBudHBhdGggKGllLCBvcy5wYXRoIG9uIFdpbmRvd3MpIGZ1bGx5IHN1cHBvcnRzIFVOQyBwYXRobmFtZXMKKyAgaW4gYWxsIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzcGxpdGRyaXZlLCBzcGxpdCwgZXRjLiAgc3BsaXR1bmMoKSBub3cgaXNzdWVzCisgIGEgUGVuZGluZ0RlcHJlY2F0aW9uIHdhcm5pbmcuCisKKy0gSXNzdWUgIzU5MjA6IEZvciBmbG9hdC5fX2Zvcm1hdF9fLCBjaGFuZ2UgdGhlIGJlaGF2aW9yIHdpdGggdGhlCisgIGVtcHR5IHByZXNlbnRhdGlvbiB0eXBlICh0aGF0IGlzLCBub3Qgb25lIG9mICdlJywgJ2YnLCAnZycsIG9yICduJykKKyAgdG8gYmUgbGlrZSAnZycgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwgcG9pbnQgYW5kIHdpdGggYQorICBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gUHJldmlvdXNseSwgdGhlIGJlaGF2aW9yIHRoZSBzYW1lIGJ1dCB3aXRoCisgIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgNi4gIFRoaXMgbW9yZSBjbG9zZWx5IG1hdGNoZXMgc3RyKCksIGFuZAorICByZWR1Y2VzIHN1cnByaXNlcyB3aGVuIGFkZGluZyBhbGlnbm1lbnQgZmxhZ3MgdG8gdGhlIGVtcHR5CisgIHByZXNlbnRhdGlvbiB0eXBlLiBUaGlzIGFsc28gYWZmZWN0cyB0aGUgbmV3IGNvbXBsZXguX19mb3JtYXRfXyBpbgorICB0aGUgc2FtZSB3YXkuCisKKy0gSW1wbGVtZW50IFBFUCAzODMsIE5vbi1kZWNvZGFibGUgQnl0ZXMgaW4gU3lzdGVtIENoYXJhY3RlciBJbnRlcmZhY2VzLgorCistIElzc3VlICM1ODkwOiBpbiBzdWJjbGFzc2VzIG9mICdwcm9wZXJ0eScgdGhlIF9fZG9jX18gYXR0cmlidXRlIHdhcworICBzaGFkb3dlZCBieSBjbGFzc3R5cGUncywgZXZlbiBpZiBpdCB3YXMgTm9uZS4gIHByb3BlcnR5IG5vdworICBpbnNlcnRzIHRoZSBfX2RvY19fIGludG8gdGhlIHN1YmNsYXNzIGluc3RhbmNlIF9fZGljdF9fLgorCistIElzc3VlICM0NDI2OiBUaGUgVVRGLTcgZGVjb2RlciB3YXMgdG9vIHN0cmljdCBhbmQgZGlkbid0IGFjY2VwdCBzb21lIGxlZ2FsCisgIHNlcXVlbmNlcy4gUGF0Y2ggYnkgTmljayBCYXJuZXMgYW5kIFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMzNjcyOiBSZWplY3Qgc3Vycm9nYXRlcyBpbiB1dGYtOCBjb2RlYzsgYWRkIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjNTg4MzogSW4gdGhlIGlvIG1vZHVsZSwgdGhlIEJ1ZmZlcmVkSU9CYXNlIGFuZCBUZXh0SU9CYXNlIEFCQ3MgaGF2ZQorICByZWNlaXZlZCBhIG5ldyBtZXRob2QsIGRldGFjaCgpLiAgZGV0YWNoKCkgZGlzY29ubmVjdHMgdGhlIHVuZGVybHlpbmcgc3RyZWFtCisgIGZyb20gdGhlIGJ1ZmZlciBvciB0ZXh0IElPIGFuZCByZXR1cm5zIGl0LgorCistIElzc3VlICM1ODU5OiBSZW1vdmUgc3dpdGNoIGZyb20gJyVmJyB0byAnJWcnLXN0eWxlIGZvcm1hdHRpbmcgZm9yCisgIGZsb2F0cyB3aXRoIGFic29sdXRlIHZhbHVlIG92ZXIgMWU1MC4gIEFsc28gcmVtb3ZlIGxlbmd0aAorICByZXN0cmljdGlvbnMgZm9yIGZsb2F0IGZvcm1hdHRpbmc6ICclLjY3ZicgJSAxMi4zNCBhbmQgJyUuMTIwZScgJQorICAxMi4zNCBubyBsb25nZXIgcmFpc2UgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICMxNTg4OiBBZGQgY29tcGxleC5fX2Zvcm1hdF9fLiBGb3IgZXhhbXBsZSwKKyAgZm9ybWF0KGNvbXBsZXgoMSwgMi4vMyksICcuNScpIG5vdyBwcm9kdWNlcyBhIHNlbnNpYmxlIHJlc3VsdC4KKworLSBJc3N1ZSAjNTg2NDogRml4IGVtcHR5IGZvcm1hdCBjb2RlIGZvcm1hdHRpbmcgZm9yIGZsb2F0cyBzbyB0aGF0IGl0CisgIG5ldmVyIGdpdmVzIG1vcmUgdGhhbiB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMuCisKKy0gSXNzdWUgIzU3OTM6IFJhdGlvbmFsaXplIGlzZGlnaXQgLyBpc2FscGhhIC8gdG9sb3dlciwgZXRjLiBJbmNsdWRlcworICBuZXcgUHlfSVNESUdJVCAvIFB5X0lTQUxQSEEgLyBQeV9UT0xPV0VSLCBldGMuIGluIHBjdHlwZXMuaC4KKworLSBJc3N1ZSAjNTgzNTogRGVwcmVjYXRlIFB5T1NfYXNjaWlfZm9ybWF0ZC4KKworLSBJc3N1ZSAjNDk3MTogRml4IHRpdGxlY2FzZSBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSB0aGVpciBvd24KKyAgdGl0bGVjYXNlLCBidXQgbm90IHRoZWlyIG93biB1cHBlcmNhc2UuCisKKy0gSXNzdWUgIzUyODM6IFNldHRpbmcgX19jbGFzc19fIGluIF9fZGVsX18gY2F1c2VkIGEgc2VnZmF1bHQuCisKKy0gSXNzdWUgIzU4MTY6IGNvbXBsZXgocmVwcih6KSkgbm93IHJlY292ZXJzIHogZXhhY3RseSwgZXZlbiB3aGVuCisgIHogaW52b2x2ZXMgbmFucywgaW5mcyBvciBuZWdhdGl2ZSB6ZXJvcy4KKworLSBJc3N1ZSAjMzE2NjogTWFrZSBpbnQgLT4gZmxvYXQgY29udmVyc2lvbnMgY29ycmVjdGx5IHJvdW5kZWQuCisKKy0gSXNzdWUgIzE4NjkgKGFuZCBtYW55IGR1cGxpY2F0ZXMpOiBtYWtlIHJvdW5kKHgsIG4pIGNvcnJlY3RseQorICByb3VuZGVkIGZvciBhIGZsb2F0IHgsIGJ5IHVzaW5nIHRoZSBkZWNpbWFsIDwtPiBiaW5hcnkgY29udmVyc2lvbnMKKyAgZnJvbSBQeXRob24vZHRvYS5jLiAgQXMgYSBjb25zZXF1ZW5jZSwgKGUuZy4pIHJvdW5kKHgsIDIpIG5vdworICBjb25zaXN0ZW50bHkgYWdyZWVzIHdpdGggZm9ybWF0KHgsICcuMmYnKS4KKworLSBJc3N1ZSAjNTc4Nzogb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc29tZV90eXBlLCAiX19iYXNlc19fIikgc2VnZmF1bHRlZCBvbgorICBzb21lIGJ1aWx0aW4gdHlwZXMuCisKKy0gSXNzdWUgIzU3NzI6IGZvcm1hdCgxZTEwMCwgJzwnKSBwcm9kdWNlcyAnMWUrMTAwJywgbm90ICcxLjBlKzEwMCcuCisKKy0gSXNzdWUgIzU1MTU6IHN0ci5mb3JtYXQoKSB0eXBlICduJyBjb21iaW5lZCB3aXRoIGNvbW1hcyBhbmQgbGVhZGluZworICB6ZXJvcyBubyBsb25nZXIgZ2l2ZXMgb2RkIHJlc3VsdHMgd2l0aCBpbnRzIGFuZCBmbG9hdHMuCisKKy0gSW1wbGVtZW50IFBFUCAzNzgsIEZvcm1hdCBTcGVjaWZpZXIgZm9yIFRob3VzYW5kcyBTZXBhcmF0b3IsIGZvcgorICBmbG9hdHMuCisKKy0gVGhlIHN0ciBmdW5jdGlvbiBzd2l0Y2hlcyB0byBleHBvbmVudGlhbCBub3RhdGlvbiBhdAorICAxZTExLCBub3QgMWUxMi4gIFRoaXMgYXZvaWRzIHByaW50aW5nIDEzIHNpZ25pZmljYW50IGRpZ2l0cyBpbgorICBzaXR1YXRpb25zIHdoZXJlIG9ubHkgMTIgb2YgdGhlbSBhcmUgY29ycmVjdC4gIEV4YW1wbGUgcHJvYmxlbQorICB2YWx1ZTogc3RyKDFlMTEgKyAwLjUpLiAgKFRoaXMgbWlub3IgaXNzdWUgaGFzIGV4aXN0ZWQgaW4gMi54IGZvciBhCisgIGxvbmcgdGltZS4pCisKKy0gSXNzdWUgIzE1ODA6IE9uIG1vc3QgcGxhdGZvcm1zLCB1c2UgYSAnc2hvcnQnIGZsb2F0IHJlcHI6IGZvciBhCisgIGZpbml0ZSBmbG9hdCB4LCByZXByKHgpIG5vdyBvdXRwdXRzIGEgc3RyaW5nIGJhc2VkIG9uIHRoZSBzaG9ydGVzdAorICBzZXF1ZW5jZSBvZiBkZWNpbWFsIGRpZ2l0cyB0aGF0IHJvdW5kcyB0byB4LiAgUHJldmlvdXMgYmVoYXZpb3VyIHdhcworICB0byBvdXRwdXQgMTcgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuIHN0cmlwIHRyYWlsaW5nIHplcm9zLgorICBBbm90aGVyIG1pbm9yIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgbmV3IHJlcHIgc3dpdGNoZXMgdG8KKyAgZXhwb25lbnRpYWwgbm90YXRpb24gYXQgMWUxNiBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyAxZTE3OyB0aGlzCisgIGF2b2lkcyBtaXNsZWFkaW5nIG91dHB1dCBpbiBzb21lIGNhc2VzLgorCisgIFRoZXJlJ3MgYSBuZXcgc3lzIGF0dHJpYnV0ZSBzeXMuZmxvYXRfcmVwcl9zdHlsZSwgd2hpY2ggdGFrZXMKKyAgdGhlIHZhbHVlICdzaG9ydCcgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSB1c2luZyBzaG9ydCBmbG9hdCByZXByLAorICBhbmQgJ2xlZ2FjeScgaWYgdGhlIHNob3J0IGZsb2F0IHJlcHIgaXNuJ3QgYXZhaWxhYmxlIGZvciBvbmUKKyAgcmVhc29uIG9yIGFub3RoZXIuCisKKyAgVGhlIGZsb2F0IHJlcHIgY2hhbmdlIGludm9sdmVzIGluY29ycG9yYXRpbmcgRGF2aWQgR2F5J3MgJ3BlcmZlY3QKKyAgcm91bmRpbmcnIGNvZGUgaW50byB0aGUgUHl0aG9uIGNvcmUgKGl0J3MgaW4gUHl0aG9uL2R0b2EuYykuICBBcyBhCisgIHNlY29uZGFyeSBjb25zZXF1ZW5jZSwgYWxsIHN0cmluZy10by1mbG9hdCBhbmQgZmxvYXQtdG8tc3RyaW5nCisgIGNvbnZlcnNpb25zIChpbmNsdWRpbmcgYWxsIGZsb2F0IGZvcm1hdHRpbmcgb3BlcmF0aW9ucykgd2lsbCBiZQorICBjb3JyZWN0bHkgcm91bmRlZCBvbiB0aGVzZSBwbGF0Zm9ybXMuCisKKyAgU2VlIGlzc3VlICMxNTgwIGRpc2N1c3Npb25zIGZvciBkZXRhaWxzIG9mIHBsYXRmb3JtcyBmb3Igd2hpY2gKKyAgdGhpcyBjaGFuZ2UgZG9lcyBub3QgYXBwbHkuCisKKy0gSXNzdWUgIzU3NTk6IGZsb2F0KCkgZGlkbid0IGNhbGwgX19mbG9hdF9fIG9uIHN0ciBzdWJjbGFzc2VzLgorCistIFRoZSBzdHJpbmcubWFrZXRyYW5zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdGhlcmUgaXMgYSBuZXcgc3RhdGljIG1ldGhvZAorICBtYWtldHJhbnMoKSBvbiB0aGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSBjbGFzc2VzLiAgVGhpcyByZW1vdmVzIGNvbmZ1c2lvbiBhYm91dAorICB0aGUgdHlwZXMgc3RyaW5nLm1ha2V0cmFucygpIGlzIHN1cHBvc2VkIHRvIHdvcmsgd2l0aCwgYW5kIG1pcnJvcnMgdGhlCisgIG1ldGhvZHMgYXZhaWxhYmxlIG9uIHRoZSBzdHIgY2xhc3MuCisKKy0gSXNzdWUgIzIxNzA6IHJlZmFjdG9yZWQgeG1sLmRvbS5taW5pZG9tLm5vcm1hbGl6ZSwgaW5jcmVhc2luZyBib3RoCisgIGl0cyBjbGFyaXR5IGFuZCBpdHMgc3BlZWQuCisKKy0gSXNzdWUgIzExMTMyNDQ6IFB5X1hJTkNSRUYsIFB5X0RFQ1JFRiwgUHlfWERFQ1JFRjogQWRkIGBgZG8geyAuLi4gfSB3aGlsZSAoMClgYAorICB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KKworLSBJc3N1ZSAjMzczOTogVGhlIHVuaWNvZGUtaW50ZXJuYWwgZW5jb2RlciBub3cgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKKyAgY29uc3VtZWQgbGlrZSBhbnkgb3RoZXIgZW5jb2RlciAoaW5zdGVhZCBvZiB0aGUgbnVtYmVyIG9mIGJ5dGVzKS4KKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTc1NjogSW5zdGFsbCBpZGxlIGFuZCBweWRvYyB3aXRoIGEgMyBzdWZmaXguCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjODIwMzogRml4IElETEUgQ3JlZGl0cyBkaWFsb2c6IHZpZXdfZmlsZSgpIHVzZXMgaXRzIGVuY29kaW5nIGFyZ3VtZW50LgorCistIElzc3VlICM1MzExOiBiZGlzdF9tc2kgY2FuIG5vdyBidWlsZCBwYWNrYWdlcyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gYQorICBzcGVjaWZpYyBQeXRob24gdmVyc2lvbi4KKworLSBJc3N1ZSAjNTE1MDogSURMRSdzIGZvcm1hdCBtZW51IG5vdyBoYXMgYW4gb3B0aW9uIHRvIHN0cmlwIHRyYWlsaW5nCisgIHdoaXRlc3BhY2UuCisKKy0gSXNzdWUgIzU5NDA6IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2NsaWIuY2hlY2tfbGlicmFyeV9saXN0IHdhcyBub3QgZG9pbmcKKyAgdGhlIHJpZ2h0IHR5cGUgY2hlY2tpbmdzIGFueW1vcmUuCisKKy0gSXNzdWUgIzQ4NzU6IE9uIHdpbjMyLCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgZG9lcyBubyBsb25nZXIKKyAgcmV0dXJuIGRpcmVjdG9yaWVzLgorCistIElzc3VlICM1MTQyOiBBZGQgdGhlIGFiaWxpdHkgdG8gc2tpcCBtb2R1bGVzIHdoaWxlIHN0ZXBwaW5nIHRvIHBkYi4KKworLSBJc3N1ZSAjMTMwOTU2NzogRml4IGxpbmVjYWNoZSBiZWhhdmlvciBvZiBzdHJpcHBpbmcgc3ViZGlyZWN0b3JpZXMgd2hlbgorICBsb29raW5nIGZvciBmaWxlcyBnaXZlbiBieSBhIHJlbGF0aXZlIGZpbGVuYW1lLgorCistIElzc3VlICM1OTIzOiBVcGRhdGUgdGhlIGBgdHVydGxlYGAgbW9kdWxlIHRvIHZlcnNpb24gMS4xLCBhZGQgdHdvIG5ldworICB0dXJ0bGUgZGVtb3MgaW4gRGVtby90dXJ0bGUuCisKKy0gSXNzdWUgIzU2OTI6IEluIGBgemlwZmlsZS5aaXBmaWxlYGAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KKyAgZXh0cmFjdGluZyBhIGZpbGUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LgorCistIElzc3VlICM1OTEzOiBvcy5saXN0ZGlyKCkgc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHBhdGggb24gd2luZG93cy4KKworLSBJc3N1ZSAjNTA4NDogdW5waWNrbGluZyBub3cgaW50ZXJucyB0aGUgYXR0cmlidXRlIG5hbWVzIG9mIHBpY2tsZWQgb2JqZWN0cywKKyAgc2F2aW5nIG1lbW9yeSBhbmQgYXZvaWRpbmcgZ3Jvd3RoIGluIHNpemUgb2Ygc3Vic2VxdWVudCBwaWNrbGVzLiBQcm9wb3NhbAorICBhbmQgb3JpZ2luYWwgcGF0Y2ggYnkgSmFrZSBNY0d1aXJlLgorCistIFRoZSBqc29uIG1vZHVsZSBub3cgd29ya3MgZXhjbHVzaXZlbHkgd2l0aCBzdHIgYW5kIG5vdCBieXRlcy4KKworLSBJc3N1ZSAjMzk1OTogVGhlIGlwYWRkciBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisgIENvbnRyaWJ1dGVkIGJ5IEdvb2dsZS4KKworLSBJc3N1ZSAjMzAwMjogYGBzaHV0aWwuY29weWZpbGUoKWBgIGFuZCBgYHNodXRpbC5jb3B5dHJlZSgpYGAgbm93IHJhaXNlIGFuCisgIGVycm9yIHdoZW4gYSBuYW1lZCBwaXBlIGlzIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBibG9ja2luZyBpbmZpbml0ZWx5LgorCistIElzc3VlICM1ODU3OiB0b2tlbml6ZS50b2tlbml6ZSgpIG5vdyByZXR1cm5zIG5hbWVkIHR1cGxlcy4KKworLSBJc3N1ZSAjNDMwNTogY3R5cGVzIHNob3VsZCBub3cgYnVpbGQgYWdhaW4gb24gbWlwc2VsLWxpbnV4LWdudQorCistIElzc3VlICMxNzM0MjM0OiBNYXNzaXZlbHkgc3BlZWR1cCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpYGAgd2hlbiB0aGUKKyAgc3RyaW5nIGlzIGFscmVhZHkgaW4gbm9ybWFsaXplZCBmb3JtLCBieSBwZXJmb3JtaW5nIGEgcXVpY2sgY2hlY2sgYmVmb3JlaGFuZC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgUmF1bGkgUnVvaG9uZW4uCisKKy0gSXNzdWUgIzU4NTM6IGNhbGxpbmcgYSBmdW5jdGlvbiBvZiB0aGUgbWltZXR5cGVzIG1vZHVsZSBmcm9tIHNldmVyYWwgdGhyZWFkcworICBhdCBvbmNlIGNvdWxkIGhpdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlmIHRoZSBtaW1ldHlwZXMgZGF0YWJhc2UgaGFkbid0IGJlZW4KKyAgaW5pdGlhbGl6ZWQgYmVmb3JlLgorCistIElzc3VlICM1ODU0OiBVcGRhdGVkIF9fYWxsX18gdG8gaW5jbHVkZSBzb21lIG1pc3NpbmcgbmFtZXMgYW5kIHJlbW92ZSBzb21lCisgIG5hbWVzIHdoaWNoIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQuCisKKy0gSXNzdWUgIzMxMDI6ICBBbGwgZ2xvYmFsIHN5bWJvbHMgdGhhdCB0aGUgX2N0eXBlcyBleHRlbnNpb24gZGVmaW5lcworICBhcmUgbm93IHByZWZpeGVkIHdpdGggJ1B5JyBvciAnX2N0eXBlcycuCisKKy0gSXNzdWUgIzUwNDE6IGN0eXBlcyBkb2VzIG5vdyBhbGxvdyBwaWNrbGluZyB3aWRlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjNTgxMjogRm9yIHRoZSB0d28tYXJndW1lbnQgZm9ybSBvZiB0aGUgRnJhY3Rpb24gY29uc3RydWN0b3IsCisgIEZyYWN0aW9uKG0sIG4pLCBtIGFuZCBuIGFyZSBwZXJtaXR0ZWQgdG8gYmUgYXJiaXRyYXJ5IFJhdGlvbmFsCisgIGluc3RhbmNlcy4KKworLSBJc3N1ZSAjNTgxMjogRnJhY3Rpb24oJzFlNicpIGlzIHZhbGlkOiBtb3JlIGdlbmVyYWxseSwgYW55IHN0cmluZworICB0aGF0J3MgdmFsaWQgZm9yIGZsb2F0KCkgaXMgbm93IHZhbGlkIGZvciBGcmFjdGlvbigpLCB3aXRoIHRoZQorICBleGNlcHRpb24gb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgTmFOcyBhbmQgaW5maW5pdGllcy4KKworLSBJc3N1ZSAjNTczNDogQnVmZmVyZWRSV1BhaXIgd2FzIHBvb3JseSB0ZXN0ZWQgYW5kIGhhZCBzZXZlcmFsIGdsYXJpbmcKKyAgYnVncy4gUGF0Y2ggYnkgQnJpYW4gUXVpbmxhbi4KKworLSBJc3N1ZSAjMTE2MTAzMTogZml4IHJlYWR3cml0ZSBzZWxlY3QgZmxhZyBoYW5kbGluZzogUE9MTFBSSSBub3cKKyAgcmVzdWx0cyBpbiBhIGhhbmRsZV9leHB0X2V2ZW50IGNhbGwsIG5vdCBoYW5kbGVfcmVhZF9ldmVudCwgYW5kIFBPTExFUlIKKyAgYW5kIFBPTExOVkFMIG5vdyBjYWxsIGhhbmRsZV9jbG9zZSwgbm90IGhhbmRsZV9leHB0X2V2ZW50LiAgQWxzbywKKyAgZGlzcGF0Y2hlciBub3cgaGFzIGFuICdpZ25vcmVfbG9nX3R5cGVzJyBhdHRyaWJ1dGUgZm9yIHN1cHByZXNzaW5nCisgIGxvZyBtZXNzYWdlcywgd2hpY2ggaXMgc2V0IHRvICd3YXJuaW5nJyBieSBkZWZhdWx0LgorCistIElzc3VlICMyNzAzOiBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fOiBQcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvcgorICBuZXcgYXJndW1lbnRzIGludHJvZHVjZWQgaW4gMi41LgorCistIElzc3VlICM1ODI4IChJbnZhbGlkIGJlaGF2aW9yIG9mIHVuaWNvZGUubG93ZXIpOiBGaXhlZCBib2d1cyBsb2dpYyBpbgorICBtYWtldW5pY29kZWRhdGEucHkgYW5kIHJlZ2VuZXJhdGVkIHRoZSBVbmljb2RlIGRhdGFiYXNlIChUaGlzIGZpeGVzCisgIHUnXHUxZDc5Jy5sb3dlcigpID09ICdceDAwJykuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1ODgxOiBSZW1vdmUgb2xkIHVuZG9jdW1lbnRlZCBjb21wYXRpYmlsaXR5IGludGVyZmFjZXMgaW4gaGFzaGxpYiBhbmQKKyAgcHdkLgorCistIElzc3VlICM1NDYzOiBJbiBzdHJ1Y3QgbW9kdWxlLCByZW1vdmUgZGVwcmVjYXRlZCBmbG9hdCBjb2VyY2lvbgorICBmb3IgaW50ZWdlciB0eXBlIGNvZGVzOiBzdHJ1Y3QucGFjaygnTCcsIDAuMykgc2hvdWxkIG5vdyByYWlzZQorICBhbiBlcnJvci4gIFRoZSBfUFlfU1RSVUNUX0ZMT0FUX0NPRVJDRSBjb25zdGFudCBoYXMgYmVlbiByZW1vdmVkLgorICBUaGUgdmVyc2lvbiBudW1iZXIgaGFzIGJlZW4gYnVtcGVkIHRvIDAuMy4KKworLSBJc3N1ZSAjNTM1OTogUmVhZGQgdGhlIEJlcmtlbGV5IERCIGRldGVjdGlvbiBjb2RlIHRvIGFsbG93IF9kYm0gYmUgYnVpbHQKKyAgdXNpbmcgQmVya2VsZXkgREIuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM1MzU0OiBOZXcgdGVzdCBzdXBwb3J0IGZ1bmN0aW9uIGltcG9ydF9mcmVzaF9tb2R1bGUoKSBtYWtlcworICBpdCBlYXN5IHRvIGltcG9ydCBib3RoIG5vcm1hbCBhbmQgb3B0aW1pc2VkIHZlcnNpb25zIG9mIG1vZHVsZXMuCisgIHRlc3RfaGVhcHEgYW5kIHRlc3Rfd2FybmluZ3MgaGF2ZSBiZWVuIGFkanVzdGVkIHRvIHVzZSBpdCwgdGVzdHMgZm9yCisgIG90aGVyIG1vZHVsZXMgd2l0aCBib3RoIEMgYW5kIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHN0ZGxpYgorICBjYW4gYmUgYWRqdXN0ZWQgdG8gdXNlIGl0IG92ZXIgdGltZS4KKworLSBJc3N1ZSAjNTgzNzogQ2VydGFpbiBzZXF1ZW5jZXMgb2YgY2FsbHMgdG8gc2V0KCkgYW5kIHVuc2V0KCkgZm9yCisgIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCBvYmplY3RzIHJlc3RvcmVkIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgaW5jb3JyZWN0bHkgb24gX19leGl0X18uCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICM1NjMwOiBBIHJlcGxhY2VtZW50IFB5Q09iamVjdCBBUEksIFB5Q2Fwc3VsZSwgaGFzIGJlZW4gYWRkZWQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAwOS00LTQqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIEltcGxlbWVudCBQRVAgMzc4LCBGb3JtYXQgU3BlY2lmaWVyIGZvciBUaG91c2FuZHMgU2VwYXJhdG9yLCBmb3IKKyAgaW50ZWdlcnMuCisKKy0gSXNzdWUgIzU2NjY6IFB5X0J1aWxkVmFsdWUncyAnYycgY29kZSBzaG91bGQgY3JlYXRlIGJ5dGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjNTQ5OTogVGhlICdjJyBjb2RlIGZvciBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBub3cgb25seSBhY2NlcHRzIGEKKyAgYnl0ZSwgYW5kIHRoZSAnQycgY29kZSBvbmx5IGFjY2VwdHMgYSB1bmljb2RlIGNoYXJhY3Rlci4KKworLSBGaXggYSBwcm9ibGVtIGluIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbiB0aGF0IGxlYWRzIHRvICJ1bmRldGVjdGVkIGVycm9ycyIKKyAgd2hlbiBoaXR0aW5nIHRoZSByZWN1cnNpb24gbGltaXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLgorCistIElzc3VlICMxNjY1MjA2OiBSZW1vdmUgdGhlIGxhc3QgZWFnZXIgaW1wb3J0IGluIF93YXJuaW5ncy5jIGFuZCBtYWtlIGl0IGxhenkuCisKKy0gRml4IGEgc2VnZmF1bHQgd2hlbiBydW5uaW5nIHRlc3RfZXhjZXB0aW9ucyB3aXRoIGNvdmVyYWdlLCBjYXVzZWQgYnkKKyAgaW5zdWZmaWNpZW50IGNoZWNrcyBpbiBhY2Nlc3NvcnMgb2YgRXhjZXB0aW9uLl9fY29udGV4dF9fLgorCistIElzc3VlICM1NjA0OiBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBtb2R1bGUgbmFtZSBwYXNzZWQgdG8KKyAgaW1wLmZpbmRfbW9kdWxlKCkgd2VyZSBjb252ZXJ0ZWQgdG8gVVRGLTggd2hpbGUgdGhlIHBhdGggaXMKKyAgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcsIGNhdXNpbmcgbm9uc2Vuc2UuCisKKy0gSXNzdWUgIzUxMjY6IHN0ci5pc3ByaW50YWJsZSgpIHJldHVybmVkIEZhbHNlIGZvciBzcGFjZSBjaGFyYWN0ZXJzLgorCistIElzc3VlICM0ODY1OiBPbiBNYWNPU1ggL0xpYnJhcnkvUHl0aG9uLzIuNy9zaXRlLXBhY2thZ2VzIGlzIGFkZGVkIHRvCisgIHRoZSBlbmQgc3lzLnBhdGgsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHN5c3RlbSBpbnN0YWxsIG9mIFB5dGhvbi4KKworLSBJc3N1ZSAjNDY4ODogQWRkIGEgaGV1cmlzdGljIHNvIHRoYXQgdHVwbGVzIGFuZCBkaWN0cyBjb250YWluaW5nIG9ubHkKKyAgdW50cmFja2FibGUgb2JqZWN0cyBhcmUgbm90IHRyYWNrZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiBUaGlzIGNhbgorICByZWR1Y2UgdGhlIHNpemUgb2YgY29sbGVjdGlvbnMgYW5kIHRoZXJlZm9yZSB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIG92ZXJoZWFkCisgIG9uIGxvbmctcnVubmluZyBwcm9ncmFtcywgZGVwZW5kaW5nIG9uIHRoZWlyIHBhcnRpY3VsYXIgdXNlIG9mIGRhdGF0eXBlcy4KKworLSBJc3N1ZSAjNTUxMjogUmV3cml0ZSBQeUxvbmcgbG9uZyBkaXZpc2lvbiBhbGdvcml0aG0gKHhfZGl2cmVtKSB0bworICBpbXByb3ZlIGl0cyBwZXJmb3JtYW5jZS4gIExvbmcgZGl2aXNpb25zIGFuZCByZW1haW5kZXIgb3BlcmF0aW9ucworICBhcmUgbm93IGJldHdlZW4gNTAlIGFuZCAxNTAlIGZhc3Rlci4KKworLSBJc3N1ZSAjNDI1ODogTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgYmFzZSAyKiozMCBpbnN0ZWFkIG9mIGJhc2UKKyAgMioqMTUgZm9yIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2VycywgZm9yIHBlcmZvcm1hbmNlCisgIHJlYXNvbnMuICBCYXNlIDIqKjMwIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiA2NC1iaXQgbWFjaGluZXMuICBBZGQKKyAgLS1lbmFibGUtYmlnLWRpZ2l0cyBvcHRpb24gdG8gY29uZmlndXJlLCB3aGljaCBvdmVycmlkZXMgdGhlCisgIGRlZmF1bHQuICBBZGQgc3lzLmludF9pbmZvIHN0cnVjdHNlcSB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0CisgIHRoZSBpbnRlcm5hbCBmb3JtYXQuCisKKy0gSXNzdWUgIzQ0NzQ6IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgbm93IGNvbnZlcnRzIGNoYXJhY3RlcnMgb3V0c2lkZQorICB0aGUgQk1QIHRvIHN1cnJvZ2F0ZSBwYWlycywgb24gc3lzdGVtcyB3aXRoIHNpemVvZih3Y2hhcl90KSA9PSA0CisgIGFuZCBzaXplb2YoUHlfVU5JQ09ERSkgPT0gMi4KKworLSBJc3N1ZSAjNTIzNzogQWxsb3cgYXV0by1udW1iZXJlZCBmaWVsZHMgaW4gc3RyLmZvcm1hdCgpLiBGb3IKKyAgZXhhbXBsZTogJ3t9IHt9Jy5mb3JtYXQoMSwgMikgPT0gJzEgMicuCisKKy0gSXNzdWUgIzUzOTI6IHdoZW4gYSB2ZXJ5IGxvdyByZWN1cnNpb24gbGltaXQgd2FzIHNldCwgdGhlIGludGVycHJldGVyIHdvdWxkCisgIGFib3J0IHdpdGggYSBmYXRhbCBlcnJvciBhZnRlciB0aGUgcmVjdXJzaW9uIGxpbWl0IHdhcyBoaXQgdHdpY2UuCisKKy0gSXNzdWUgIzM4NDU6IEluIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzIGF2b2lkIGludmFsaWQgbWVtb3J5IGFjY2VzcyB3aXRoCisgIHNob3J0IGZpbGUgbmFtZXMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjYyNTogYWRkZWQgbWlzc2luZyBpdGVtcygpIGNhbGwgdG8gdGhlIGZvciBsb29wIGluCisgIG1haWxib3guTUguZ2V0X21lc3NhZ2UoKS4KKworLSBJc3N1ZSAjNTY0MDogRml4IF9tdWx0aWJ5dGVjb2RlYyBzbyB0aGF0IENKSyBjb2RlY3MgZG9uJ3QgcmVwZWF0CisgIGVycm9yIHN1YnN0aXR1dGlvbnMgZnJvbSBub24tc3RyaWN0IGNvZGVjIGVycm9yIGNhbGxiYWNrcyBpbgorICBpbmNyZW1lbnRhbGVuY29kZXIgYW5kIFN0cmVhbVdyaXRlci4KKworLSBJc3N1ZSAjNTY1NjogRml4IHRoZSBjb3ZlcmFnZSByZXBvcnRpbmcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIHdpdGgKKyAgdGhlIC1UIGFyZ3VtZW50LgorCistIElzc3VlICM1NjQ3OiBNdXRhYmxlU2V0Ll9faWFuZF9fKCkgbm8gbG9uZ2VyIG11dGF0ZXMgc2VsZiBkdXJpbmcgaXRlcmF0aW9uLgorCistIElzc3VlICM1NjI0OiBGaXggdGhlIF93aW5yZWcgbW9kdWxlIG5hbWUgc3RpbGwgdXNlZCBpbiBzZXZlcmFsIG1vZHVsZXMuCisKKy0gSXNzdWUgIzU2Mjg6IEZpeCBpby5UZXh0SU9XcmFwcGVyLnJlYWQoKSB3aXRoIGEgdW5yZWFkYWJsZSBidWZmZXIuCisKKy0gSXNzdWUgIzU2MTk6IE11bHRpcHJvY2Vzc2luZyBjaGlsZHJlbiBkaXNvYmV5IHRoZSBkZWJ1ZyBmbGFnIGFuZCBjYXVzZXMKKyAgcG9wdXBzIG9uIHdpbmRvd3MgYnVpbGRib3RzLiBQYXRjaCBhcHBsaWVkIHRvIHdvcmsgYXJvdW5kIHRoaXMgaXNzdWUuCisKKy0gSXNzdWUgIzU0MDA6IEFkZGVkIHBhdGNoIGZvciBtdWx0aXByb2Nlc3Npbmcgb24gbmV0YnNkIGNvbXBpbGF0aW9uL3N1cHBvcnQKKworLSBJc3N1ZSAjNTM4NzogRml4ZWQgbW1hcC5tb3ZlIGNyYXNoIGJ5IGludGVnZXIgb3ZlcmZsb3cuCisKKy0gSXNzdWUgIzUyNjE6IFBhdGNoIG11bHRpcHJvY2Vzc2luZydzIHNlbWFwaG9yZS5jIHRvIHN1cHBvcnQgY29udGV4dAorICBtYW5hZ2VyIHVzZTogIndpdGggbXVsdGlwcm9jZXNzaW5nLkxvY2soKSIgd29ya3Mgbm93LgorCistIElzc3VlICM1MjM2OiBDaGFuZ2UgdGltZS5zdHJwdGltZSgpIHRvIG9ubHkgdGFrZSBzdHJpbmdzLiBEaWRuJ3Qgd29yayB3aXRoCisgIGJ5dGVzIGFscmVhZHkgYnV0IHRoZSBmYWlsdXJlIHdhcyBub24tb2J2aW91cy4KKworLSBJc3N1ZSAjNTE3NzogTXVsdGlwcm9jZXNzaW5nJ3MgU29ja2V0TGlzdGVuZXIgY2xhc3Mgbm93IHVzZXMKKyAgc29ja2V0LlNPX1JFVVNFQUREUiBvbiBhbGwgY29ubmVjdGlvbnMgc28gdGhhdCB0aGUgdXNlciBubyBsb25nZXIgbmVlZHMKKyAgdG8gd2FpdCAxMjAgc2Vjb25kcyBmb3IgdGhlIHNvY2tldCB0byBleHBpcmUuCisKKy0gSXNzdWUgIzU1OTU6IEZpeCBVbmJvdW5kZWRMb2NhbEVycm9yIGluIG50cGF0aC5pc21vdW50KCkuCisKKy0gSXNzdWUgIzExNzQ2MDY6IENhbGxpbmcgcmVhZCgpIHdpdGhvdXQgYXJndW1lbnRzIG9mIGFuIHVuYm91bmRlZCBmaWxlCisgICh0eXBpY2FsbHkgL2Rldi96ZXJvIHVuZGVyIFVuaXgpIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlci4KKworLSBUaGUgbWF4X2J1ZmZlcl9zaXplIGFyZ3VtZW50cyBvZiBpby5CdWZmZXJlZFdyaXRlciwgaW8uQnVmZmVyZWRSV1BhaXIsIGFuZAorICBpby5CdWZmZXJlZFJhbmRvbSBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4yLgorCistIElzc3VlICM1MDY4OiBGaXhlZCB0aGUgdGFyZmlsZS5fQloyUHJveHkucmVhZCgpIG1ldGhvZCB0aGF0IHdvdWxkIGxvb3AKKyAgZm9yZXZlciBvbiBpbmNvbXBsZXRlIGlucHV0LiBUaGF0IGNhdXNlZCB0YXJmaWxlLm9wZW4oKSB0byBoYW5nIHdoZW4gdXNlZAorICB3aXRoIG1vZGUgJ3InIG9yICdyOmJ6MicgYW5kIGEgZmlsZW9iaiBhcmd1bWVudCB0aGF0IGNvbnRhaW5lZCBubyBkYXRhIG9yCisgIHBhcnRpYWwgYnppcDIgY29tcHJlc3NlZCBkYXRhLgorCistIElzc3VlICMyMTEwOiBBZGQgc3VwcG9ydCBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvciBhbmQgJ24nIHR5cGUKKyAgc3BlY2lmaWVyIHRvIERlY2ltYWwuX19mb3JtYXRfXworCistIEZpeCBEZWNpbWFsLl9fZm9ybWF0X18gYnVnIHRoYXQgc3dhcHBlZCB0aGUgbWVhbmluZ3Mgb2YgdGhlICc8JyBhbmQKKyAgJz4nIGFsaWdubWVudCBjaGFyYWN0ZXJzLgorCistIFRoZSBlcnJvciBkZXRlY3Rpb24gY29kZSBpbiBGaWxlSU8uY2xvc2UoKSBjb3VsZCBmYWlsIHRvIHJlZmxlY3QgdGhlIGBlcnJub2AKKyAgdmFsdWUsIGFuZCByZXBvcnQgaXQgYXMgLTEgaW5zdGVhZC4KKworLSBJc3N1ZSAjNTAxNjogRmlsZUlPLnNlZWthYmxlKCkgY291bGQgcmV0dXJuIEZhbHNlIGlmIHRoZSBmaWxlIHBvc2l0aW9uCisgIHdhcyBuZWdhdGl2ZSB3aGVuIHRydW5jYXRlZCB0byBhIEMgaW50LiBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzUzOTE6IG1tYXAgbm93IGRlYWxzIGV4Y2x1c2l2ZWx5IHdpdGggYnl0ZXMuCisKKy0gSXNzdWUgIzU0NjM6IEluIHN0cnVjdCBtb2R1bGUsIHJlbW92ZSBkZXByZWNhdGVkIG92ZXJmbG93IHdyYXBwaW5nCisgIHdoZW4gcGFja2luZyBhbiBpbnRlZ2VyOiBzdHJ1Y3QucGFjaygnPUwnLCAtMSkgbm93IHJhaXNlcworICBzdHJ1Y3QuZXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgYidceGZmXHhmZlx4ZmZceGZmJy4gIFRoZQorICBfUFlfU1RSVUNUX1JBTkdFX0NIRUNLSU5HIGFuZCBfUFlfU1RSVUNUX09WRVJGTE9XX01BU0tJTkcgY29uc3RhbnRzCisgIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN0cnVjdCBtb2R1bGUuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMDktMDMtMDcqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIFRoZSBpbyBtb2R1bGUgaGFzIGJlZW4gcmVpbXBsZW1lbnRlZCBpbiBDIGZvciBzcGVlZC4KKworLSBHaXZlIGRpY3Qgdmlld3MgYW4gaW5mb3JtYXRpdmUgX19yZXByX18uCisKKy0gSXNzdWUgIzUyNDc6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHVua25vd24gZm9ybWF0IGNvZGVzIGFyZQorICB1c2VkIHdoZW4gdXNpbmcgc3RyLmZvcm1hdCgpIHdpdGggc3RyLCBpbnQsIGFuZCBmbG9hdCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzUyNDk6IHRpbWUuc3RyZnRpbWUgcmV0dXJuZWQgbWFsZm9ybWVkIHN0cmluZyB3aGVuIGZvcm1hdCBzdHJpbmcKKyAgY29udGFpbmVkIG5vbiBhc2NpaSBjaGFyYWN0ZXIgb24gd2luZG93cy4KKworLSBJc3N1ZSAjNDYyNjogY29tcGlsZSgpLCBleGVjKCksIGFuZCBldmFsKCkgaWdub3JlIHRoZSBjb2RpbmcgY29va2llIGlmIHRoZQorICBzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBkZWNvZGVkIGludG8gc3RyLgorCistIElzc3VlICM1MTg2OiBSZWR1Y2UgaGFzaCBjb2xsaXNpb25zIGZvciBvYmplY3RzIHdpdGggbm8gX19oYXNoX18gbWV0aG9kIGJ5CisgIHJvdGF0aW5nIHRoZSBvYmplY3QgcG9pbnRlciBieSA0IGJpdHMgdG8gdGhlIHJpZ2h0LgorCistIElzc3VlICM0NTc1OiBGaXggUHlfSVNfSU5GSU5JVFkgbWFjcm8gdG8gd29yayBjb3JyZWN0bHkgb24geDg3IEZQVXM6CisgIGl0IG5vdyBmb3JjZXMgaXRzIGFyZ3VtZW50IHRvIGRvdWJsZSBiZWZvcmUgdGVzdGluZyBmb3IgaW5maW5pdHkuCisKKy0gSXNzdWUgIzUxMzc6IE1ha2UgbGVuKCkgY29ycmVjdGx5IHJhaXNlIGEgVHlwZUVycm9yIHdoZW4gYSBfX2xlbl9fIG1ldGhvZAorICByZXR1cm5zIGEgbm9uLW51bWJlciB0eXBlLgorCistIElzc3VlICM1MTgyOiBSZW1vdmVkIG1lbW9yeXZpZXcuX19zdHJfXy4KKworLSBJc3N1ZSAjMTcxNzogUmVtb3ZlZCBidWlsdGluIGNtcCgpIGZ1bmN0aW9uLCBkcm9wcGVkIHRwX2NvbXBhcmUKKyAgc2xvdCwgdGhlIEMgQVBJIGZ1bmN0aW9ucyBQeU9iamVjdF9Db21wYXJlIGFuZCBQeVVuaWNvZGVfQ29tcGFyZSBhbmQKKyAgdGhlIHR5cGUgZGVmaW5pdGlvbiBjbXBmdW5jLiAgVGhlIHRwX2NvbXBhcmUgc2xvdCBoYXMgYmVlbiByZW5hbWVkCisgIHRvIHRwX3Jlc2VydmVkLCBhbmQgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2FnZS4KKworLSBJc3N1ZSAjMTI0MjY1NzogdGhlIF9fbGVuX18oKSBhbmQgX19sZW5ndGhfaGludF9fKCkgY2FsbHMgaW4gc2V2ZXJhbCB0b29scworICB3ZXJlIHN1cHByZXNzaW5nIGFsbCBleGNlcHRpb25zLiAgVGhlc2UgaW5jbHVkZSBsaXN0KCkgYW5kIGJ5dGVhcnJheSgpLgorCistIElzc3VlICM0NzA3OiByb3VuZCh4LCBuKSBub3cgcmV0dXJucyBhbiBpbnRlZ2VyIGlmIHggaXMgYW4gaW50ZWdlci4KKyAgUHJldmlvdXNseSBpdCByZXR1cm5lZCBhIGZsb2F0LgorCistIElzc3VlICM0NzUzOiBCeSBlbmFibGluZyBhIGNvbmZpZ3VyZSBvcHRpb24gbmFtZWQgJy0td2l0aC1jb21wdXRlZC1nb3RvcycKKyAgb24gY29tcGlsZXJzIHRoYXQgc3VwcG9ydCBpdCAobm90YWJseTogZ2NjLCBTdW5Qcm8sIGljYyksIHRoZSBieXRlY29kZQorICBldmFsdWF0aW9uIGxvb3AgaXMgY29tcGlsZWQgd2l0aCBhIG5ldyBkaXNwYXRjaCBtZWNoYW5pc20gd2hpY2ggZ2l2ZXMKKyAgc3BlZWR1cHMgb2YgdXAgdG8gMjAlLCBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb24gdmFyaW91cyBiZW5jaG1hcmtzLgorCistIElzc3VlICM0ODc0OiBNb3N0IGJ1aWx0aW4gZGVjb2RlcnMgbm93IHJlamVjdCB1bmljb2RlIGlucHV0LgorCistIElzc3VlICM0ODQyOiBEb24ndCBhbGxvdyB0cmFpbGluZyAnTCcgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gaW50ZWdlcgorICBmcm9tIGEgc3RyaW5nLgorCistIElzc3VlICM0OTkxOiBvcy5mZG9wZW4gbm93IHJhaXNlcyBhbiBPU0Vycm9yIGZvciBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCisKKy0gSXNzdWUgIzQ4Mzg6IFdoZW4gYSBtb2R1bGUgaXMgZGVhbGxvY2F0ZWQsIGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZQorICBvcHRpb25hbCBtb2R1bGUgc3RhdGUgZGF0YS4KKworLSBJc3N1ZSAjNDkxMDogUmVuYW1lIG5iX2xvbmcgc2xvdCB0byBuYl9yZXNlcnZlZCwgYW5kIGNoYW5nZSBpdHMKKyAgdHlwZSB0byBgYCh2b2lkICopYGAuCisKKy0gSXNzdWUgIzQ5MzU6IFRoZSBvdmVyZmxvdyBjaGVja2luZyBjb2RlIGluIHRoZSBleHBhbmR0YWJzKCkgbWV0aG9kIGNvbW1vbgorICB0byBzdHIsIGJ5dGVzIGFuZCBieXRlYXJyYXkgY291bGQgYmUgb3B0aW1pemVkIGF3YXkgYnkgdGhlIGNvbXBpbGVyLCBsZXR0aW5nCisgIHRoZSBpbnRlcnByZXRlciBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzM3MjA6IEZpeCBhIGNyYXNoIHdoZW4gYW4gaXRlcmF0b3IgbW9kaWZpZXMgaXRzIGNsYXNzIGFuZCByZW1vdmVzIGl0cworICBfX25leHRfXyBtZXRob2QuCisKKy0gSXNzdWUgIzQ5MTA6IEJ1aWx0aW4gaW50KCkgZnVuY3Rpb24gYW5kIFB5TnVtYmVyX0xvbmcvUHlOdW1iZXJfSW50IEFQSQorICBmdW5jdGlvbiBubyBsb25nZXIgYXR0ZW1wdCB0byBjYWxsIHRoZSBfX2xvbmdfXyBzbG90IHRvIGNvbnZlcnQgYW4gb2JqZWN0CisgIHRvIGFuIGludGVnZXIuICBPbmx5IHRoZSBfX2ludF9fIGFuZCBfX3RydW5jX18gc2xvdHMgYXJlIGV4YW1pbmVkLgorCistIElzc3VlICM0ODkzOiBVc2UgTlQgdGhyZWFkaW5nIG9uIENFLgorCistIElzc3VlICM0OTE1OiBQb3J0IHN5c21vZHVsZSB0byBXaW5kb3dzIENFLgorCistIElzc3VlICM0ODY4OiB1dGYtOCwgdXRmLTE2IGFuZCBsYXRpbjEgZGVjb2RpbmcgYXJlIG5vdyAyeCB0byA0eCBmYXN0ZXIuIFRoZQorICBjb21tb24gY2FzZXMgYXJlIG9wdGltaXplZCB0aGFua3MgdG8gYSBkZWRpY2F0ZWQgZmFzdCBwYXRoIGFuZCBhIG1vZGVyYXRlCisgIGFtb3VudCBvZiBsb29wIHVucm9sbGluZy4KKworLSBJc3N1ZSAjNDA3NDogQ2hhbmdlIHRoZSBjcml0ZXJpYSBmb3IgZG9pbmcgYSBmdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiAoaS5lLgorICBjb2xsZWN0aW5nIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbikgc28gdGhhdCBhbGxvY2F0aW5nIGxvdHMgb2Ygb2JqZWN0cyB3aXRob3V0CisgIGRlc3Ryb3lpbmcgdGhlbSBkb2VzIG5vdCBzaG93IHF1YWRyYXRpYyBwZXJmb3JtYW5jZS4gQmFzZWQgb24gYSBwcm9wb3NhbCBieQorICBNYXJ0aW4gdm9uIEzDtndpcyBhdAorICBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDgtSnVuZS8wODA1NzkuaHRtbC4KKworLSBJc3N1ZSAjNDYwNDogU29tZSBvYmplY3RzIG9mIHRoZSBJL08gbGlicmFyeSBjb3VsZCBzdGlsbCBiZSB1c2VkIGFmdGVyCisgIGhhdmluZyBiZWVuIGNsb3NlZCAoZm9yIGluc3RhbmNlLCBhIHJlYWQoKSBjYWxsIGNvdWxkIHJldHVybiBzb21lCisgIHByZXZpb3VzbHkgYnVmZmVyZWQgZGF0YSkuIFBhdGNoIGJ5IERtaXRyeSBWYXNpbGlldi4KKworLSBJc3N1ZSAjNDcwNTogRml4IHRoZSAtdSAoInVuYnVmZmVyZWQgYmluYXJ5IHN0ZG91dCBhbmQgc3RkZXJyIikgY29tbWFuZC1saW5lCisgIGZsYWcgdG8gd29yayBwcm9wZXJseS4gRnVydGhlcm1vcmUsIHdoZW4gc3BlY2lmeWluZyAtdSwgdGhlIHRleHQgc3Rkb3V0CisgIGFuZCBzdGRlcnIgc3RyZWFtcyBoYXZlIGxpbmUtYnktbGluZSBidWZmZXJpbmcgZW5hYmxlZCAodGhlIGRlZmF1bHQgYmVpbmcKKyAgdG8gYnVmZmVyIGFyYml0cmFyeSBjaHVua3Mgb2YgZGF0YSkuCisKKy0gVGhlIGludGVybmFsIHRhYmxlLCBfUHlMb25nX0RpZ2l0VmFsdWUsIGlzIG5vdyBhbiBhcnJheSBvZiB1bnNpZ25lZCBjaGFycworICBpbnN0ZWFkIG9mIGludHMgKHJlZHVjaW5nIGl0cyBzaXplIGZyb20gNCB0byA4IHRpbWVzIHRoZXJlYnkgcmVkdWNpbmcKKyAgUHl0aG9uJ3Mgb3ZlcmFsbCBtZW1vcnkpLgorCistIElzc3VlICMxMTgwMTkzOiBXaGVuIGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgLnB5YyAob3IgLnB5bykgZmlsZSB3aXRoCisgIGFuIGV4aXN0aW5nIC5weSBjb3VudGVycGFydCwgb3ZlcnJpZGUgdGhlIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZXMgb2YgYWxsCisgIGNvZGUgb2JqZWN0cyBpZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaXMgb2Jzb2xldGUgKHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhlCisgIGZpbGUgaGFzIGJlZW4gcmVuYW1lZCwgbW92ZWQsIG9yIGlmIGl0IGlzIGFjY2Vzc2VkIHRocm91Z2ggZGlmZmVyZW50IHBhdGhzKS4KKyAgUGF0Y2ggYnkgWmlnYSBTZWlsbmFjaHQgYW5kIEplYW4tUGF1bCBDYWxkZXJvbmUuCisKKy0gSXNzdWUgIzQ1ODA6IEZpeCBzbGljaW5nIG9mIG1lbW9yeXZpZXdzIHdoZW4gdGhlIGl0ZW0gc2l6ZSBpcyBncmVhdGVyIHRoYW4KKyAgb25lIGJ5dGUuIEFsc28gZml4ZXMgdGhlIG1lYW5pbmcgb2YgbGVuKCkgc28gdGhhdCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAgaXRlbXMsIHJhdGhlciB0aGFuIHRoZSBzaXplIGluIGJ5dGVzLgorCistIElzc3VlICM0MDc1OiBVc2UgT3V0cHV0RGVidWdTdHJpbmdXIGluIFB5X0ZhdGFsRXJyb3IuCisKKy0gSXNzdWUgIzQ3NDc6IFdoZW4gdGhlIHRlcm1pbmFsIGRvZXMgbm90IHVzZSB1dGYtOCwgZXhlY3V0aW5nIGEgc2NyaXB0IHdpdGgKKyAgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUgY291bGQgZmFpbCB3aXRoIGEgIlN5bnRheEVycm9yOiBOb25lIiBlcnJvci4KKworLSBJc3N1ZSAjNDc5NzogSU9FcnJvci5maWxlbmFtZSB3YXMgbm90IHNldCB3aGVuIGBgX2ZpbGVpby5GaWxlSU9gYCBmYWlsZWQKKyAgdG8gb3BlbiBmaWxlIHdpdGggYSBieXRlcyBmaWxlbmFtZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMzNjgwOiBSZWZlcmVuY2UgY3ljbGVzIGNyZWF0ZWQgdGhyb3VnaCBhIGRpY3QsIHNldCBvciBkZXF1ZSBpdGVyYXRvcgorICBkaWQgbm90IGdldCBjb2xsZWN0ZWQuCisKKy0gSXNzdWUgIzQ3MDE6IFB5T2JqZWN0X0hhc2ggbm93IGltcGxpY2l0bHkgY2FsbHMgUHlUeXBlX1JlYWR5IG9uIHR5cGVzCisgIHdoZXJlIHRoZSB0cF9oYXNoIGFuZCB0cF9kaWN0IHNsb3RzIGFyZSBib3RoIE5VTEwuCisKKy0gSXNzdWUgIzQ3NTk6IE5vbmUgaXMgbm93IGFsbG93ZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mCisgIGJ5dGVhcnJheS50cmFuc2xhdGUoKS4gIEl0IHdhcyBhbHdheXMgYWxsb3dlZCBmb3IgYnl0ZXMudHJhbnNsYXRlKCkuCisKKy0gQWRkZWQgdGVzdCBjYXNlIHRvIGVuc3VyZSBhdHRlbXB0cyB0byByZWFkIGZyb20gYSBmaWxlIG9wZW5lZCBmb3Igd3JpdGluZworICBmYWlsLgorCistIElzc3VlICMzMTA2OiBTcGVlZHVwIHNvbWUgY29tcGFyaXNvbnMgKHN0ci9zdHIgYW5kIGludC9pbnQpLgorCistIElzc3VlICMyMTgzOiBTaW1wbGlmeSBhbmQgb3B0aW1pemUgYnl0ZWNvZGUgZm9yIGxpc3QsIGRpY3QgYW5kIHNldAorICBjb21wcmVoZW5zaW9ucy4gT3JpZ2luYWwgcGF0Y2ggZm9yIGxpc3QgY29tcHJlaGVuc2lvbnMgYnkgTmVhbCBOb3J3aXR6LgorCistIElzc3VlICMyNDY3OiBnYy5ERUJVR19TVEFUUyByZXBvcnRlZCBpbnZhbGlkIGVsYXBzZWQgdGltZXMuIEFsc28sIGFsd2F5cworICBwcmludCBlbGFwc2VkIHRpbWVzLCBub3Qgb25seSB3aGVuIHNvbWUgb2JqZWN0cyBhcmUgdW5jb2xsZWN0YWJsZSAvCisgIHVucmVhY2hhYmxlLiBPcmlnaW5hbCBwYXRjaCBieSBOZWlsIFNjaGVtZW5hdWVyLgorCistIElzc3VlICMzNDM5OiBBZGQgYSBiaXRfbGVuZ3RoIG1ldGhvZCB0byBpbnQuCisKKy0gSXNzdWUgIzIxNzM6IFdoZW4gZ2V0dGluZyBkZXZpY2UgZW5jb2RpbmcsIGNoZWNrIHRoYXQgcmV0dXJuIHZhbHVlIG9mCisgIG5sX2xhbmdpbmZvIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLiAgVGhpcyB3YXMgY2F1c2luZyBzaWxlbnQgYnVpbGQKKyAgZmFpbHVyZXMgb24gT1MgWC4KKworLSBJc3N1ZSAjNDU5NzogRml4ZWQgc2V2ZXJhbCBvcGNvZGVzIHRoYXQgd2VyZW4ndCBhbHdheXMgcHJvcGFnYXRpbmcKKyAgZXhjZXB0aW9ucy4KKworLSBJc3N1ZSAjNDU4OTogRml4ZWQgZXhjZXB0aW9uIGhhbmRsaW5nIHdoZW4gdGhlIF9fZXhpdF9fIGZ1bmN0aW9uIG9mIGEKKyAgY29udGV4dCBtYW5hZ2VyIHJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBib29sLgorCistIElzc3VlICM0NDQ1OiBSZXBsYWNlICJzaXplb2YoUHlCeXRlc09iamVjdCkiIHdpdGgKKyAgIm9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSIgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IKKyAgYnl0ZXMgaW5zdGFuY2VzLiAgT24gYSB0eXBpY2FsIG1hY2hpbmUgdGhpcyBzYXZlcyAzIGJ5dGVzIG9mIG1lbW9yeQorICAob24gYXZlcmFnZSkgcGVyIGFsbG9jYXRpb24gb2YgYSBieXRlcyBpbnN0YW5jZS4KKworLSBJc3N1ZSAjNDUzMzogRmlsZSByZWFkIG9wZXJhdGlvbiB3YXMgZHJlYWRmdWxseSBzbG93IGR1ZSB0byBhIHNsb3dseQorICBncm93aW5nIHJlYWQgYnVmZmVyLiBGaXhlZCBieSB1c2luZyB0aGUgc2FtZSBncm93dGggcmF0ZSBhbGdvcml0aG0gYXMKKyAgUHl0aG9uIDIueC4KKworLSBJc3N1ZSAjNDUwOTogVmFyaW91cyBpc3N1ZXMgc3Vycm91bmRpbmcgcmVzaXplIG9mIGJ5dGVhcnJheSBvYmplY3RzIHRvCisgIHdoaWNoIHRoZXJlIGFyZSBidWZmZXIgZXhwb3J0cyAoZS5nLiBtZW1vcnl2aWV3IGluc3RhbmNlcykuCisKKy0gSXNzdWUgIzQyMzM6IENoYW5nZWQgc2VtYW50aWMgb2YgYGBfZmlsZWlvLkZpbGVJT2BgJ3MgYGBjbG9zZSgpYGAKKyAgbWV0aG9kIG9uIGZpbGUgb2JqZWN0cyB3aXRoIGNsb3NlZmQ9RmFsc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgc3RpbGwKKyAga2VwdCBvcGVuIGJ1dCB0aGUgZmlsZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgY2xvc2VkIGZpbGUuIFRoZSBgYEZpbGVJT2BgCisgIG9iamVjdCBhbHNvIGdvdCBhIG5ldyByZWFkb25seSBhdHRyaWJ1dGUgYGBjbG9zZWZkYGAuCisKKy0gSXNzdWUgIzQ1Njk6IEludGVycHJldGVyIGNyYXNoIHdoZW4gbXV0YXRpbmcgYSBtZW1vcnl2aWV3IHdpdGggYW4gaXRlbSBzaXplCisgIGxhcmdlciB0aGFuIDEuCisKKy0gSXNzdWUgIzQ3NDg6IExhbWJkYSBnZW5lcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYSB2YWx1ZS4KKworLSBUaGUgcmUuc3ViKCksIHJlLnN1Ym4oKSBhbmQgcmUuc3BsaXQoKSBmdW5jdGlvbnMgbm93IGFjY2VwdCBhIGZsYWdzIHBhcmFtZXRlci4KKworLSBJc3N1ZSAjNTEwODogSGFuZGxlICVzIGxpa2UgJVMsICVSIGFuZCAlQSBpbiBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKTogQ2FsbAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpIG9uY2UsIHJlbWVtYmVyIHRoZSByZXN1bHQgYW5kIG91dHB1dCBpdCBpbiBhIHNlY29uZAorICBzdGVwLiBUaGlzIGF2b2lkcyBwcm9ibGVtcyB3aXRoIGNvdW50aW5nIFVURi04IGJ5dGVzIHRoYXQgaWdub3JlcyB0aGUgZWZmZWN0CisgIG9mIHVzaW5nIHRoZSByZXBsYWNlIGVycm9yIGhhbmRsZXIgaW4gUHlVbmljb2RlX0RlY29kZVVURjgoKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM3MDcxOiBieXRlLWNvbXBpbGF0aW9uIGluIERpc3R1dGlscyBpcyBub3cgZG9uZSB3aXRoIHJlc3BlY3QgdG8KKyAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUuCisKKy0gSXNzdWUgIzcwNjY6IGFyY2hpdmVfdXRpbC5tYWtlX2FyY2hpdmUgbm93IHJlc3RvcmVzIHRoZSBjd2QgaWYgYW4gZXJyb3IgaXMKKyAgcmFpc2VkLiBJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjNjUxNjogQWRkZWQgb3duZXIvZ3JvdXAgc3VwcG9ydCB3aGVuIGNyZWF0aW5nIHRhciBhcmNoaXZlcyBpbgorICBEaXN0dXRpbHMuCisKKy0gSXNzdWUgIzY5NTQ6IEZpeGVkIGNyYXNoIHdoZW4gdXNpbmcgRElTVFVUSUxTX0RFQlVHIGZsYWcgaW4gRGlzdHV0aWxzLgorCistIElzc3VlICM2MTYzOiBGaXhlZCBIUC1VWCBydW50aW1lIGxpYnJhcnkgZGlyIG9wdGlvbnMgaW4KKyAgZGlzdHV0aWxzLnVuaXhjb21waWxlci4gSW5pdGlhbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIgYW5kCisgIE1pY2hhZWwgSGF1YmVud2FsbG5lci4KKworLSBJc3N1ZSAjNjY5MzogTmV3IGZ1bmN0aW9ucyBpbiBzaXRlLnB5IHRvIGdldCB1c2VyL2dsb2JhbCBzaXRlIHBhY2thZ2VzIHBhdGhzLgorCistIElzc3VlICM2NTExOiBaaXBGaWxlIG5vdyByYWlzZXMgQmFkWmlwZmlsZSAoaW5zdGVhZCBvZiBhbiBJT0Vycm9yKSB3aGVuCisgIG9wZW5pbmcgYW4gZW1wdHkgb3IgdmVyeSBzbWFsbCBmaWxlLgorCistIElzc3VlICM2NTQ1OiBSZW1vdmVkIGFzc2VydCBzdGF0ZW1lbnRzIGluIGRpc3R1dGlscy5FeHRlbnNpb24sIHNvIHRoZQorICBiZWhhdmlvciBpcyBzaW1pbGFyIHdoZW4gdXNlZCB3aXRoIC1PLgorCistIHVuaXR0ZXN0IGhhcyBiZWVuIHNwbGl0IHVwIGludG8gYSBwYWNrYWdlLiAgQWxsIG9sZCBuYW1lcyBzaG91bGQgc3RpbGwgd29yay4KKworLSBJc3N1ZSAjNjQ2Njogbm93IGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgYW5kIGRpc3R1dGlscy5lbXhjY29tcGlsZXIKKyAgdXNlcyB0aGUgc2FtZSByZWZhY3RvcmVkIGZ1bmN0aW9uIHRvIGdldCBnY2MvbGQvZGxsd3JhcCB2ZXJzaW9ucyBudW1iZXJzLgorICBJdCdzIGBkaXN0dXRpbHMudXRpbC5nZXRfY29tcGlsZXJfdmVyc2lvbnNgLiBBZGRlZCBkZXByZWNhdGlvbiB3YXJuaW5ncworICBmb3IgdGhlIG9ic29sZXRlIGdldF92ZXJzaW9ucygpIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjNjQzMzogZml4ZWQgaXNzdWVzIHdpdGggbXVsdGlwcm9jZXNzaW5nLnBvb2wubWFwIGhhbmdpbmcgb24gZW1wdHkgbGlzdAorCistIElzc3VlICM2MzE0OiBsb2dnaW5nOiBFeHRyYSBjaGVja3Mgb24gdGhlICJsZXZlbCIgYXJndW1lbnQgaW4gbW9yZSBwbGFjZXMuCisKKy0gSXNzdWUgIzI2MjI6IEZpeGVkIGFuIEltcG9ydEVycm9yIHdoZW4gaW1wb3J0aW5nIGVtYWlsLm1lc3NhZ2UgZnJvbSBhCisgIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gYnVpbHQgd2l0aCBweTJleGUgb3IgcHkyYXBwLgorCistIElzc3VlICM2NDU1OiBGaXhlZCB0ZXN0X2J1aWxkX2V4dCB1bmRlciB3aW4zMi4KKworLSBJc3N1ZSAjNjM3NzogRW5hYmxlZCB0aGUgY29tcGlsZXIgb3B0aW9uLCBhbmQgZGVwcmVjYXRlIGl0cyB1c2FnZSBhcyBhbgorICBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzY0MTM6IEZpeGVkIHRoZSBsb2cgbGV2ZWwgaW4gZGlzdHV0aWxzLmRpc3QgZm9yIGFubm91bmNlLgorCistIElzc3VlICM2NDAzOiBGaXhlZCBwYWNrYWdlIHBhdGggdXNhZ2UgaW4gYnVpbGRfZXh0LgorCistIElzc3VlcyAjNTE1NSwgNTMxMywgNTMzMTogbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX2Jvb3RzdHJhcCB3YXMKKyAgdW5jb25kaXRpb25hbGx5IGNhbGxpbmcgIm9zLmNsb3NlKHN5cy5zdGRpbi5maWxlbm8oKSkiIHJlc3VsdGluZyBpbiBmaWxlCisgIGRlc2NyaXB0b3IgZXJyb3JzCisKKy0gSXNzdWUgIzYzNjU6IERpc3R1dGlscyBidWlsZF9leHQgaW5wbGFjZSBtb2RlIHdhcyBjb3B5aW5nIHRoZSBjb21waWxlZAorICBleHRlbnNpb24gaW4gYSBzdWJkaXJlY3RvcnkgaWYgdGhlIGV4dGVuc2lvbiBuYW1lIGhhZCBkb3RzLgorCistIElzc3VlICM2MTY0OiBBZGRlZCBhbiBBSVggc3BlY2lmaWMgbGlua2VyIGFyZ3VtZW50IGluIERpc3R1dGlscworICB1bml4Y29tcGlsZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjNjI4NjogTm93IERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBpcyBiYXNlZCBvbiB1cmxsaWIyIGluc3RlYWQgb2YKKyAgaHR0cGxpYiwgYWxsb3dpbmcgdGhlIHVzYWdlIG9mIGh0dHBfcHJveHkuCisKKy0gSXNzdWUgIzYyODc6IEFkZGVkIHRoZSBsaWNlbnNlIGZpZWxkIGluIERpc3R1dGlscyBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM2MjYzOiBGaXhlZCBzeW50YXggZXJyb3IgaW4gZGlzdHV0aWxzLmN5Z3dpbmNvbXBpbGVyLgorCistIElzc3VlICM1MjAxOiBkaXN0dXRpbHMuc3lzY29uZmlnLnBhcnNlX21ha2VmaWxlKCkgbm93IHVuZGVyc3RhbmRzIGAkJGAKKyAgaW4gTWFrZWZpbGVzLiBUaGlzIHByZXZlbnRzIGNvbXBpbGUgZXJyb3JzIHdoZW4gdXNpbmcgc3ludGF4IGxpa2U6CisgIGBMREZMQUdTPSctcnBhdGg9XCQkTElCOi9zb21lL290aGVyL3BhdGgnYC4gUGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCisKKy0gSXNzdWUgIzYxMzE6IHRlc3RfbW9kdWxlZmluZGVyIGxlYWtlZCB3aGVuIHJ1biBhZnRlciB0ZXN0X2Rpc3R1dGlscy4KKyAgUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzYwNDg6IE5vdyBEaXN0dXRpbHMgdXNlcyB0aGUgdGFyZmlsZSBtb2R1bGUgaW4gYXJjaGl2ZV91dGlsLgorCistIElzc3VlICM2MDYyOiBJbiBkaXN0dXRpbHMsIGZpeGVkIHRoZSBwYWNrYWdlIG9wdGlvbiBvZiBidWlsZF9leHQuIEZlZWRiYWNrCisgIGFuZCB0ZXN0cyBvbiBweXdpbjMyIGJ5IFRpbSBHb2xkZW4uCisKKy0gSXNzdWUgIzYwNTM6IEZpeGVkIGRpc3R1dGlscyB0ZXN0cyBvbiB3aW4zMi4gcGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzYwNDY6IEZpeGVkIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiB3aGVuIGRpc3R1dGlscyBidWlsZF9leHQgaXMgdXNlZAorICBpbnBsYWNlLiBJbml0aWFsIHBhdGNoIGJ5IFJvdW1lbiBQZXRyb3YuCisKKy0gSXNzdWUgIzYwNDE6IE5vdyBkaXN0dXRpbHMgYHNkaXN0YCBhbmQgYHJlZ2lzdGVyYCBjb21tYW5kcyB1c2UgYGNoZWNrYCBhcyBhCisgIHN1YmNvbW1hbmQuCisKKy0gSXNzdWUgIzYwMjI6IGEgdGVzdCBmaWxlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGJ5CisgIHRlc3RfZ2V0X291dHB1dHMgaW4gRGlzdHV0aWxzLgorCistIElzc3VlICM1OTc3OiBkaXN0dXRpbHMgYnVpbGRfZXh0LmdldF9vdXRwdXRzIHdhcyBub3QgdGFraW5nIGludG8gYWNjb3VudCB0aGUKKyAgaW5wbGFjZSBvcHRpb24uIEluaXRpYWwgcGF0Y2ggYnkga3hyb2JlcnRvLgorCistIElzc3VlICM1OTg0OiBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQuY2hlY2tfZXh0ZW5zaW9uc19saXN0IGNoZWNrcyB3ZXJlIGJyb2tlbgorICBmb3Igb2xkLXN0eWxlIGV4dGVuc2lvbnMuCisKKy0gSXNzdWUgIzU5NzY6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2NoZWNrX2Vudmlyb24uCisKKy0gSXNzdWUgIzU5NDE6IERpc3R1dGlscyBidWlsZF9jbGliIGNvbW1hbmQgd2FzIG5vdCB3b3JraW5nIGFueW1vcmUgYmVjYXVzZQorICBvZiBhbiBpbmNvbXBsZXRlIGNvc3R1bWl6YXRpb24gb2YgdGhlIGFyY2hpdmVyIGNvbW1hbmQuIEFkZGVkIEFSRkxBR1MgaW4gdGhlCisgIE1ha2VmaWxlIGJlc2lkZXMgQVIgYW5kIG1ha2UgRGlzdHV0aWxzIHVzZSBpdC4gT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQKKyAgQ291cm5hcGVhdS4KKworLSBJc3N1ZSAjMjI0NTogYWlmYyBub3cgc2tpcHMgY2h1bmsgdHlwZXMgaXQgZG9lc24ndCByZWNvZ25pemUsIHBlciBzcGVjLgorCistIElzc3VlICM1ODc0OiBkaXN0dXRpbHMudGVzdHMudGVzdF9jb25maWdfY21kIGlzIG5vdCBsb2NhbGUtc2Vuc2l0aXZlCisgIGFueW1vcmUuCisKKy0gSXNzdWUgIzU4MTA6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2J1aWxkX3NjcmlwdHMgc28gaXQgdXNlcworICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzLgorCistIElzc3VlICM0OTUxOiBGaXhlZCBmYWlsdXJlIGluIHRlc3RfaHR0cHNlcnZlcnMuCisKKy0gSXNzdWUgIzU3OTU6IEZpeGVkIHRlc3RfZGlzdHV0aWxzIGZhaWx1cmUgb24gRGViaWFuIHBwYy4KKworLSBJc3N1ZSAjNTYwNzogZml4ZWQgRGlzdHV0aWxzIHRlc3RfZ2V0X3BsYXRmb3JtIGZvciBNYWMgT1MgWCBmYXQgYmluYXJpZXMuCisKKy0gSXNzdWUgIzU3NDE6IGRvbid0IGRpc2FsbG93ICIlJSIgKHdoaWNoIGlzIGFuIGVzY2FwZSBmb3IgIiUiKSB3aGVuIHNldHRpbmcKKyAgYSB2YWx1ZSBpbiBTYWZlQ29uZmlnUGFyc2VyLgorCistIElzc3VlICM1NzMyOiBhZGRlZCBhIG5ldyBjb21tYW5kIGluIERpc3R1dGlsczogY2hlY2suCisKKy0gSXNzdWUgIzU3MzE6IERpc3R1dGlscyBiZGlzdF93aW5pbnN0IG5vIGxvbmdlciB3b3JrZWQgb24gbm9uLVdpbmRvd3MKKyAgcGxhdGZvcm1zLiBJbml0aWFsIHBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy0gSXNzdWUgIzUwOTU6IEFkZGVkIGJkaXN0X21zaSB0byB0aGUgbGlzdCBvZiBiZGlzdCBzdXBwb3J0ZWQgZm9ybWF0cy4KKyAgSW5pdGlhbCBmaXggYnkgU3RldmVuIEJldGhhcmQuCisKKy0gSXNzdWUgIzE0OTE0MzE6IEZpeGVkIGRpc3R1dGlscy5maWxlbGlzdC5nbG9iX3RvX3JlIGZvciBlZGdlIGNhc2VzLgorICBJbml0aWFsIGZpeCBieSBXYXluZSBEYXZpc29uLgorCistIElzc3VlICM1Njk0OiByZW1vdmVkIHNwdXJpb3VzIHRlc3Qgb3V0cHV0IGluIERpc3R1dGlscyAodGVzdF9jbGVhbikuCisKKy0gSXNzdWUgIzEzMjYwNzc6IGZpeCB0aGUgZm9ybWF0dGluZyBvZiBTeW50YXhFcnJvcnMgYnkgdGhlIHRyYWNlYmFjayBtb2R1bGUuCisKKy0gSXNzdWUgIzE2NjUyMDYgKHBhcnRpYWxseSk6IE1vdmUgaW1wb3J0cyBpbiBjZ2l0YiB0byB0aGUgdG9wIG9mIHRoZSBtb2R1bGUKKyAgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIHRoZW0gaW4gZnVuY3Rpb25zLiBIZWxwcyBwcmV2ZW50IGltcG9ydCBkZWFkbG9ja2luZyBpbgorICB0aHJlYWRzLgorCistIElzc3VlICMyNTIyOiBsb2NhbGUuZm9ybWF0IG5vdyBjaGVja3MgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGVuc3VyZSBpdCBoYXMKKyAgYmVlbiBwYXNzZWQgb25seSBvbmUgcGF0dGVybiwgYXZvaWRpbmcgbXlzdGVyaW91cyBlcnJvcnMgd2hlcmUgaXQgYXBwZWFyZWQKKyAgdGhhdCBpdCB3YXMgZmFpbGluZyB0byBkbyBsb2NhbGl6YXRpb24uCisKKy0gSXNzdWUgIzU1ODM6IEFkZGVkIG9wdGlvbmFsIEV4dGVuc2lvbnMgaW4gRGlzdHV0aWxzLiBJbml0aWFsIHBhdGNoIGJ5IEdlb3JnCisgIEJyYW5kbC4KKworLSBJc3N1ZSAjMTIyMjogbG9jYWxlLmZvcm1hdCgpIGJ1ZyB3aGVuIHRoZSB0aG91c2FuZHMgc2VwYXJhdG9yIGlzIGEgc3BhY2UKKyAgY2hhcmFjdGVyLgorCistIElzc3VlICM1NDcyOiBGaXhlZCBkaXN0dXRpbHMudGVzdF91dGlsIHRlYXIgZG93bi4gT3JpZ2luYWwgcGF0Y2ggYnkKKyAgVGltIEdvbGRlbi4KKworLSBjb2xsZWN0aW9ucy5kZXF1ZSgpIG9iamVjdHMgbm93IGhhdmUgYSByZWFkLW9ubHkgYXR0cmlidXRlIGNhbGxlZCBtYXhsZW4uCisKKy0gSXNzdWUgIzI2Mzg6IFNob3cgYSB3aW5kb3cgY29uc3RydWN0ZWQgd2l0aCB0a1NpbXBsZURpYWxvZy5EaWFsb2cgb25seSBhZnRlcgorICBpdCBpcyBoYXMgYmVlbiBwb3B1bGF0ZWQgYW5kIHByb3Blcmx5IGNvbmZpZ3VyZWQgaW4gb3JkZXIgdG8gcHJldmVudAorICB3aW5kb3cgZmxhc2hpbmcuCisKKy0gSXNzdWUgIzQ3OTI6IFByZXZlbnQgYSBzZWdmYXVsdCBpbiBfdGtpbnRlciBieSB1c2luZyB0aGUKKyAgZ3VhcmFudGVlZCB0byBiZSBzYWZlIGludGVycCBhcmd1bWVudCBnaXZlbiB0byB0aGUgUHl0aG9uQ21kIGluIHBsYWNlIG9mCisgIHRoZSBUY2wgaW50ZXJwcmV0ZXIgdGFrZW4gZnJvbSBhIFB5dGhvbkNtZF9DbGllbnREYXRhLgorCistIElzc3VlICM1MTkzOiBHdWFyYW50ZWUgdGhhdCB0a2ludGVyLlRleHQuc2VhcmNoIHJldHVybnMgYSBzdHJpbmcuCisKKy0gSXNzdWUgIzUzOTQ6IHJlbW92ZWQgPiAyLjMgc3ludGF4IGZyb20gZGlzdHV0aWxzLm1zdmM5Y29tcGlsZXIuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFraXJhIEtpdGFkYS4KKworLSBJc3N1ZSAjNTMzNDogYXJyYXkuZnJvbWZpbGUoKSBmYWlsZWQgdG8gaW5zZXJ0IHZhbHVlcyB3aGVuIEVPRkVycm9yIHdhcyByYWlzZWQuCisKKy0gSXNzdWUgIzUzODU6IEZpeGVkIG1tYXAgY3Jhc2ggYWZ0ZXIgcmVzaXplIGZhaWx1cmUgb24gd2luZG93cy4KKworLSBJc3N1ZSAjNTE3OTogRml4ZWQgc3VicHJvY2VzcyBoYW5kbGUgbGVhayBvbiBmYWlsdXJlIG9uIHdpbmRvd3MuCisKKy0gUEVQIDM3MjogIEFkZGVkIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkuCisKKy0gVGhlIF9hc2RpY3QoKSBmb3IgbWV0aG9kIGZvciBuYW1lZHR1cGxlcyBub3cgcmV0dXJucyBhbiBPcmRlcmVkRGljdCgpLgorCistIGNvbmZpZ3BhcnNlciBub3cgZGVmYXVsdHMgdG8gdXNpbmcgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LgorCistIElzc3VlICM1NDAxOiBGaXhlZCBhIHBlcmZvcm1hbmNlIHByb2JsZW0gaW4gbWltZXR5cGVzIHdoZW4gYGBmcm9tIG1pbWV0eXBlcworICBpbXBvcnQgZ3Vlc3NfZXh0ZW5zaW9uYGAgd2FzIHVzZWQuCisKKy0gSXNzdWUgIzE3MzM5ODY6IEZpeGVkIG1tYXAgY3Jhc2ggaW4gYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHNlY29uZCBtYXAgb2JqZWN0CisgIHdpdGggc2FtZSB0YWduYW1lIGJ1dCBsYXJnZXIgc2l6ZSB0aGFuIGZpcnN0IG1hcC4gKFdpbmRvd3MpCisKKy0gSXNzdWUgIzUzODY6IG1tYXAud3JpdGVfYnl0ZSBkaWRuJ3QgY2hlY2sgbWFwIHNpemUsIHNvIGl0IGNvdWxkIGNhdXNlIGJ1ZmZlcgorICBvdmVycnVuLgorCistIElzc3VlICMxNTMzMTY0OiBJbnN0YWxsZWQgYnV0IG5vdCBsaXN0ZWQgYGAqLnB5b2BgIHdhcyBicmVha2luZyBEaXN0dXRpbHMKKyAgYmRpc3RfcnBtIGNvbW1hbmQuCisKKy0gSXNzdWUgIzUzNzg6IGFkZGVkIC0tcXVpZXQgb3B0aW9uIHRvIERpc3R1dGlscyBiZGlzdF9ycG0gY29tbWFuZC4KKworLSBJc3N1ZSAjNTA1MjogbWFrZSBEaXN0dXRpbHMgY29tcGF0aWJsZSB3aXRoIDIuMyBhZ2Fpbi4KKworLSBJc3N1ZSAjNTMxNjogRml4ZWQgYnVpbGRib3QgZmFpbHVyZXMgaW50cm9kdWNlZCBieSBtdWx0aXBsZSBpbmhlcml0YW5jZQorICBpbiBEaXN0dXRpbHMgdGVzdHMuCisKKy0gSXNzdWUgIzUyODc6IEFkZCBleGNlcHRpb24gaGFuZGxpbmcgYXJvdW5kIGZpbmRDYWxsZXIoKSBjYWxsIHRvIGhlbHAgb3V0CisgIElyb25QeXRob24uCisKKy0gSXNzdWUgIzUyODI6IEZpeGVkIG1tYXAgcmVzaXplIG9uIDMyYml0IHdpbmRvd3MgYW5kIHVuaXguIFdoZW4gb2Zmc2V0ID4gMCwKKyAgVGhlIGZpbGUgd2FzIHJlc2l6ZWQgdG8gd3Jvbmcgc2l6ZS4KKworLSBJc3N1ZSAjNTI5MjogRml4ZWQgbW1hcCBjcmFzaCBvbiBpdHMgYm91bmRhcnkgYWNjZXNzIG1bbGVuKG0pXS4KKworLSBJc3N1ZSAjMjI3OTogZGlzdHV0aWxzLnNkaXN0LmFkZF9kZWZhdWx0cyBub3cgYWRkIGZpbGVzCisgIGZyb20gdGhlIHBhY2thZ2VfZGF0YSBhbmQgdGhlIGRhdGFfZmlsZXMgbWV0YWRhdGEuCisKKy0gSXNzdWUgIzUyNTc6IHJlZmFjdG9yZWQgYWxsIHRlc3RzIGluIGRpc3R1dGlscywgc28gdGhleSB1c2UKKyAgc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwgdG8gYXZvaWQgd3JpdGluZyBpbiB0aGUgdGVzdHMgZGlyZWN0b3J5LgorCistIElzc3VlICM0NTI0OiBkaXN0dXRpbHMgYnVpbGRfc2NyaXB0IGNvbW1hbmQgZmFpbGVkIHdpdGggLS13aXRoLXN1ZmZpeD0zLgorICBJbml0aWFsIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgorCistIElzc3VlICMyNDYxOiBhZGRlZCB0ZXN0cyBmb3IgZGlzdHV0aWxzLnV0aWwKKworLSBJc3N1ZSAjNDk5ODogVGhlIG1lbW9yeSBzYXZpbmcgZWZmZWN0IG9mIF9fc2xvdHNfXyBoYWQgYmVlbiBsb3N0IG9uIEZyYWN0aW9ucworICB3aGljaCBpbmhlcml0ZWQgZnJvbSBudW1iZXJzLnB5IHdoaWNoIGRpZCBub3QgaGF2ZSBfX3Nsb3RzX18gZGVmaW5lZC4gIFRoZQorICBudW1iZXJzIGhpZXJhcmNoeSBub3cgaGFzIGl0cyBvd24gX19zbG90c19fIGRlY2xhcmF0aW9ucy4KKworLSBJc3N1ZSAjNDYzMTogRml4IHVybG9wZW4oKSByZXN1bHQgd2hlbiBhbiBIVFRQIHJlc3BvbnNlIHVzZXMgY2h1bmtlZAorICBlbmNvZGluZy4KKworLSBJc3N1ZSAjNTIwMzogRml4ZWQgY3R5cGVzIHNlZ2ZhdWx0cyB3aGVuIHBhc3NpbmcgYSB1bmljb2RlIHN0cmluZyB0byBhCisgIGZ1bmN0aW9uIHdpdGhvdXQgYXJndHlwZXMgKG9ubHkgb2NjdXJzIGlmIEhBVkVfVVNBQkxFX1dDSEFSX1QgaXMgZmFsc2UpLgorCistIElzc3VlICMzMzg2OiBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliIHByZWZpeCBhcmd1bWVudCB3YXMgaWdub3JlZAorICB1bmRlciBOVCBhbmQgT1MyLiBQYXRjaCBieSBQaGlsaXAgSmVudmV5LgorCistIElzc3VlICM1MTI4OiBNYWtlIGNvbXBpbGVhbGwgcHJvcGVybHkgaW5zcGVjdCBieXRlY29kZSB0byBkZXRlcm1pbmUgaWYgbmVlZHMKKyAgdG8gYmUgcmVjcmVhdGVkLiBUaGlzIGF2b2lkcyBhIHRpbWluZyBob2xlIHRoYW5rcyB0byB0aGUgb2xkIHJlbGlhbmNlIG9uIHRoZQorICBjdGltZSBvZiB0aGUgZmlsZXMgaW52b2x2ZWQuCisKKy0gSXNzdWUgIzUxMjI6IFN5bmNocm9uaXplIHRrIGxvYWQgZmFpbHVyZSBjaGVjayB0byBwcmV2ZW50IGEgcG90ZW50aWFsCisgIGRlYWRsb2NrLgorCistIElzc3VlICMxODE4OiBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IHN1cHBvcnRzIGEga2V5d29yZCBhcmd1bWVudAorICAncmVuYW1lJyB3aGljaCBsZXRzIGludmFsaWQgZmllbGRuYW1lcyBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0bworICBwb3NpdGlvbmFsIG5hbWVzIGluIHRoZSBmb3JtLCBfMSwgXzIsIC4uLgorCistIElzc3VlICM0ODkwOiBIYW5kbGUgZW1wdHkgdGV4dCBzZWFyY2ggcGF0dGVybiBpbiBUa2ludGVyLlRleHQuc2VhcmNoLgorCistIElzc3VlICM0NTEyIChwYXJ0IDIpOiBQcm9tb3RlIGBgWmlwSW1wb3J0ZXIuX2dldF9maWxlbmFtZSgpYGAgdG8gYmUgYQorICBwdWJsaWMgZG9jdW1lbnRlZCBtZXRob2QgYGBaaXBJbXBvcnRlci5nZXRfZmlsZW5hbWUoKWBgLgorCistIElzc3VlICM0MTk1OiBUaGUgYGBydW5weWBgIG1vZHVsZSAoYW5kIHRoZSBgYC1tYGAgc3dpdGNoKSBub3cgc3VwcG9ydAorICB0aGUgZXhlY3V0aW9uIG9mIHBhY2thZ2VzIGJ5IGxvb2tpbmcgZm9yIGFuZCBleGVjdXRpbmcgYSBgYF9fbWFpbl9fYGAKKyAgc3VibW9kdWxlIHdoZW4gYSBwYWNrYWdlIG5hbWUgaXMgc3VwcGxpZWQuIEluaXRpYWwgcGF0Y2ggYnkgQW5kaQorICBWYWpkYS4KKworLSBJc3N1ZSAjMTczMTcwNjogQ2FsbCBUY2xfQ29uZGl0aW9uRmluYWxpemUgZm9yIFRjbF9Db25kaXRpb25zIHRoYXQgd2lsbAorICBub3QgYmUgdXNlZCBhZ2FpbiAodGhpcyByZXF1aXJlcyBUY2wvVGsgOC4zLjEpLCBhbHNvIGZpeCBhIG1lbW9yeSBsZWFrIGluCisgIFRrYXBwX0NhbGwgd2hlbiBjYWxsaW5nIGZyb20gYSB0aHJlYWQgZGlmZmVyZW50IHRoYW4gdGhlIG9uZSB0aGF0IGNyZWF0ZWQKKyAgdGhlIFRjbCBpbnRlcnByZXRlci4gUGF0Y2ggYnkgUm9iZXJ0IEhhbmNvY2suCisKKy0gSXNzdWUgIzQyODU6IENoYW5nZSBzeXMudmVyc2lvbl9pbmZvIHRvIGJlIGEgbmFtZWQgdHVwbGUuIFBhdGNoIGJ5CisgIFJvc3MgTGlnaHQuCisKKy0gSXNzdWUgIzE1MjA4Nzc6IE5vdyBkaXN0dXRpbHMuc3lzY29uZmlnIHJlYWRzICRBUiBmcm9tIHRoZQorICBlbnZpcm9ubWVudC9NYWtlZmlsZS4gUGF0Y2ggYnkgRG91Z2xhcyBHcmVpbWFuLgorCistIElzc3VlICMxMjc2NzY4OiBUaGUgdmVyYm9zZSBvcHRpb24gd2FzIG5vdCB1c2VkIGluIHRoZSBjb2RlIG9mCisgIGRpc3R1dGlscy5maWxlX3V0aWwgYW5kIGRpc3R1dGlscy5kaXJfdXRpbC4KKworLSBJc3N1ZSAjNTEzMjogRml4ZWQgdHJvdWJsZSBidWlsZGluZyBleHRlbnNpb25zIHVuZGVyIFNvbGFyaXMgd2l0aAorICAtLWVuYWJsZWQtc2hhcmVkIGFjdGl2YXRlZC4gSW5pdGlhbCBwYXRjaCBieSBEYXZlIFBldGVyc29uLgorCistIElzc3VlICMxNTgxNDc2OiBBbHdheXMgdXNlIHRoZSBUY2wgZ2xvYmFsIG5hbWVzcGFjZSB3aGVuIGNhbGxpbmcgaW50byBUY2wuCisKKy0gVGhlIHNoZWx2ZSBtb2R1bGUgbm93IGRlZmF1bHRzIHRvIHBpY2tsZSBwcm90b2NvbCAzLgorCistIEZpeCBhIGJ1ZyBpbiB0aGUgdHJhY2UgbW9kdWxlIHdoZXJlIGEgYnl0ZXMgb2JqZWN0IGZyb20gY29fbG5vdGFiIGhhZCBpdHMKKyAgaXRlbXMgYmVpbmcgcGFzc2VkIHRocm91Z2ggb3JkKCkuCisKKy0gSXNzdWUgIzIwNDc6IHNodXRpbC5tb3ZlKCkgY291bGQgYmVsaWV2ZSB0aGF0IGl0cyBkZXN0aW5hdGlvbiBwYXRoIHdhcworICBpbnNpZGUgaXRzIHNvdXJjZSBwYXRoIGlmIGl0IGJlZ2FuIHdpdGggdGhlIHNhbWUgbGV0dGVycyAoZS5nLiAic3JjIiB2cy4KKyAgInNyYy5uZXciKS4KKworLSBBZGRlZCB0aGUgdHRrIG1vZHVsZS4gU2VlIGlzc3VlICMyOTgzOiBUdGsgc3VwcG9ydCBmb3IgVGtpbnRlci4KKworLSBSZW1vdmVkIGlzU2VxdWVuY2VUeXBlKCksIGlzTWFwcGluZ1R5cGUsIGFuZCBpc051bWJlclR5cGUoKSBmcm9tIHRoZQorICBvcGVyYXRvciBtb2R1bGU7IHVzZSB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGluc3RlYWQuICBBbHNvIHJlbW92ZWQKKyAgdGhlIHJlcGVhdCgpIGZ1bmN0aW9uOyB1c2UgbXVsKCkgaW5zdGVhZC4KKworLSBJc3N1ZSAjNTAyMTogIGRvY3Rlc3QudGVzdGZpbGUoKSBkaWQgbm90IGNyZWF0ZSBfX25hbWVfXyBhbmQKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIHJlbGllZCBvbiBfX25hbWVfXyBiZWluZyBkZWZpbmVkLgorCistIEJhY2twb3J0IGltcG9ydGxpYiBmcm9tIFB5dGhvbiAzLjEuIE9ubHkgdGhlIGltcG9ydF9tb2R1bGUoKSBmdW5jdGlvbiBoYXMKKyAgYmVlbiBiYWNrcG9ydGVkIHRvIGhlbHAgZmFjaWxpdGF0ZSB0cmFuc2l0aW9ucyBmcm9tIDIuNyB0byAzLjEuCisKKy0gSXNzdWUgIzE4ODU6IGRpc3R1dGlscy4gV2hlbiBydW5uaW5nIHNkaXN0IHdpdGggLS1mb3JtYXRzPXRhcixnenRhcgorICB0aGUgdGFyIGZpbGUgd2FzIG92ZXJyaWRlbiBieSB0aGUgZ3p0YXIgb25lLgorCistIElzc3VlICM0ODYzOiBkaXN0dXRpbHMubXdlcmtzY29tcGlsZXIgaGFzIGJlZW4gcmVtb3ZlZC4KKworLSBBZGRlZCBhIG5ldyBpdGVydG9vbHMgZnVuY3Rpb25zOiAgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoKQorICBhbmQgY29tcHJlc3MoKS4KKworLSBJc3N1ZSAjNTAzMjogIGFkZGVkIGEgc3RlcCBhcmd1bWVudCB0byBpdGVydG9vbHMuY291bnQoKSBhbmQKKyAgYWxsb3dlZCBub24taW50ZWdlciBhcmd1bWVudHMuCisKKy0gRml4IGFuZCBwcm9wZXJseSBkb2N1bWVudCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSdzIGxvZ2dpbmcKKyAgc3VwcG9ydCwgZXhwb3NlIHRoZSBpbnRlcm5hbCBsZXZlbHMgYW5kIHByb3ZpZGUgcHJvcGVyIHVzYWdlCisgIGV4YW1wbGVzLgorCistIElzc3VlICMxNjcyMzMyOiBmaXggdW5waWNrbGluZyBvZiBzdWJub3JtYWwgZmxvYXRzLCB3aGljaCB3YXMKKyAgcHJvZHVjaW5nIGEgVmFsdWVFcnJvciBvbiBzb21lIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMzg4MTogSGVscCBUY2wgdG8gbG9hZCBldmVuIHdoZW4gc3RhcnRlZCB0aHJvdWdoIHRoZQorICB1bnJlYWRhYmxlIGxvY2FsIHN5bWxpbmsgdG8gIlByb2dyYW0gRmlsZXMiIG9uIFZpc3RhLgorCistIElzc3VlICM0NzEwOiBFeHRyYWN0IGRpcmVjdG9yaWVzIHByb3Blcmx5IGluIHRoZSB6aXBmaWxlIG1vZHVsZTsKKyAgYWxsb3cgYWRkaW5nIGRpcmVjdG9yaWVzIHRvIGEgemlwZmlsZS4KKworLSBJc3N1ZSAjMzgwNzogX211bHRpcHJvY2Vzc2luZyBidWlsZCBmYWlscyB3aGVuIGNvbmZpZ3VyZSBpcyBwYXNzZWQKKyAgLS13aXRob3V0LXRocmVhZHMgYXJndW1lbnQuIFdoZW4gdGhpcyBvY2N1cnMsIF9tdWx0aXByb2Nlc3Npbmcgd2lsbAorICBiZSBkaXNhYmxlZCwgYW5kIG5vdCBjb21waWxlZC4KKworLSBJc3N1ZSAjNTAwODogV2hlbiBhIGZpbGUgaXMgb3BlbmVkIGluIGFwcGVuZCBtb2RlIHdpdGggdGhlIG5ldyBJTyBsaWJyYXJ5LAorICBkbyBhbiBleHBsaWNpdCBzZWVrIHRvIHRoZSBlbmQgb2YgZmlsZSAoc28gdGhhdCBlLmcuIHRlbGwoKSByZXR1cm5zIHRoZQorICBmaWxlIHNpemUgcmF0aGVyIHRoYW4gMCkuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvdXIgb2YgdGhlCisgIHRyYWRpdGlvbmFsIDIueCBmaWxlIG9iamVjdC4KKworLSBJc3N1ZSAjNTAxMzogRml4ZWQgYSBidWcgaW4gRmlsZUhhbmRsZXIgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgZGVsYXkKKyAgcGFyYW1ldGVyIHdhcyBzZXQuCisKKy0gSXNzdWUgIzQ4NDI6IEFsd2F5cyBhcHBlbmQgYSB0cmFpbGluZyAnTCcgd2hlbiBwaWNrbGluZyBsb25ncyB1c2luZworICBwaWNrbGUgcHJvdG9jb2wgMC4gIFdoZW4gcmVhZGluZywgdGhlICdMJyBpcyBvcHRpb25hbC4KKworLSBBZGQgdGhlIGltcG9ydGxpYiBwYWNrYWdlLgorCistIElzc3VlICM0MzAxOiBQYXRjaCB0aGUgbG9nZ2luZyBtb2R1bGUgdG8gYWRkIHByb2Nlc3NOYW1lIHN1cHBvcnQsIHJlbW92ZQorICBfY2hlY2tfbG9nZ2VyX2NsYXNzIGZyb20gbXVsdGlwcm9jZXNzaW5nLgorCistIElzc3VlICMzMzI1OiBSZW1vdmUgcHl0aG9uMi54IHRyeTogZXhjZXB0OiBpbXBvcnRzIGZvciBvbGQgY1BpY2tsZSBmcm9tCisgIG11bHRpcHJvY2Vzc2luZy4KKworLSBJc3N1ZSAjNDk1OTogaW5zcGVjdC5mb3JtYXRhcmdzcGVjIG5vdyB3b3JrcyBmb3Iga2V5d29yZCBvbmx5IGFyZ3VtZW50cworICB3aXRob3V0IGRlZmF1bHRzLgorCistIElzc3VlICMzMzIxOiBgYF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigpYGAgZG9lc24ndCBjaGVjayBoYW5kbGU7IGFkZGVkIGNoZWNrcworICBmb3IgVW5peCBtYWNoaW5lcyBmb3IgbmVnYXRpdmUgaGFuZGxlcyBhbmQgbGFyZ2UgaW50IGhhbmRsZXMuIFdpdGhvdXQgdGhpcyBjaGVjaworICBpdCBpcyBwb3NzaWJsZSB0byBzZWdmYXVsdCB0aGUgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzQ0NDk6IEFzc2VydGlvbkVycm9yIGluIG1wX2JlbmNobWFya3MucHksIGNhdXNlZCBieSBhbiB1bmRlcmx5aW5nIGlzc3VlCisgIGluIHNoYXJlZGN0eXBlcy5weS4KKworLSBJc3N1ZSAjMTIyNTEwNzogaW5zcGVjdC5pc2NsYXNzKCkgcmV0dXJuZWQgVHJ1ZSBmb3IgaW5zdGFuY2VzIHdpdGggYSBjdXN0b20KKyAgX19nZXRhdHRyX18uCisKKy0gSXNzdWUgIzM4MjYgYW5kICM0NzkxOiBUaGUgc29ja2V0IG1vZHVsZSBub3cgY2xvc2VzIHRoZSB1bmRlcmx5aW5nIHNvY2tldAorICBhcHByb3ByaWF0ZWx5IHdoZW4gaXQgaXMgYmVpbmcgdXNlZCB2aWEgc29ja2V0Lm1ha2VmaWxlKCkgb2JqZWN0cworICByYXRoZXIgdGhhbiBkZWxheWluZyB0aGUgY2xvc2UgYnkgd2FpdGluZyBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uIHRvIGRvIGl0LgorCistIElzc3VlICMxNjk2MTk5OiAgQWRkIGNvbGxlY3Rpb25zLkNvdW50ZXIoKSBmb3IgcmFwaWQgYW5kIGNvbnZlbmllbnQKKyAgY291bnRpbmcuCisKKy0gSXNzdWUgIzM4NjA6IEd6aXBGaWxlIGFuZCBCWjJGaWxlIG5vdyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wuCisKKy0gSXNzdWUgIzQ4Njc6IEZpeGVkIGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gcGFzc2luZyBhIHN0cmluZyB0byBhCisgIGZ1bmN0aW9uIHdpdGhvdXQgZGVmaW5pbmcgYXJndHlwZXMuCisKKy0gSXNzdWUgIzQyNzI6IEFkZCBhbiBvcHRpb25hbCBhcmd1bWVudCB0byB0aGUgR3ppcEZpbGUgY29uc3RydWN0b3IgdG8gb3ZlcnJpZGUKKyAgdGhlIHRpbWVzdGFtcCBpbiB0aGUgZ3ppcCBzdHJlYW0uIFRoZSBkZWZhdWx0IHZhbHVlIHJlbWFpbnMgdGhlIGN1cnJlbnQgdGltZS4KKyAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIGJ5IGUuZy4gZ3VuemlwIHdoZW4gZGVjb21wcmVzc2luZy4gUGF0Y2ggYnkKKyAgSmFjcXVlcyBGcmVjaGV0LgorCistIFJlc3RvcmUgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5IGZvciBkZWNpbWFsLnB5LgorCistIElzc3VlICMzNjM4OiBSZW1vdmUgZnVuY3Rpb25zIGZyb20gX3RraW50ZXIgbW9kdWxlIGxldmVsIHRoYXQgZGVwZW5kIG9uCisgIFRrYXBwT2JqZWN0IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgorCistIElzc3VlICM0NzE4OiBBZGFwdCB0aGUgd3NnaXJlZiBwYWNrYWdlIHNvIHRoYXQgaXQgYWN0dWFsbHkgd29ya3Mgd2l0aAorICBQeXRob24gMy54LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGBvZmZpY2lhbCBhbWVuZG1lbnRzIG9mIHRoZSBzcGVjCisgIDxodHRwOi8vd3d3LndzZ2kub3JnL3dzZ2kvQW1lbmRtZW50c18xLjA+YF8uCisKKy0gSXNzdWUgIzQ3OTY6IEFkZGVkIERlY2ltYWwuZnJvbV9mbG9hdCgpIGFuZCBDb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKQorICB0byB0aGUgZGVjaW1hbCBtb2R1bGUuCisKKy0gRnJhY3Rpb25zLmZyb21fZmxvYXQoKSBubyBsb25nZXIgbG9zZXMgcHJlY2lzaW9uIGZvciBpbnRlZ2VycyB0b28gYmlnIHRvCisgIGNhc3QgYXMgZmxvYXRzLgorCistIElzc3VlICM0ODEyOiBhZGQgbWlzc2luZyB1bmRlcnNjb3JlIHByZWZpeCB0byBzb21lIGludGVybmFsLXVzZS1vbmx5CisgIGNvbnN0YW50cyBpbiB0aGUgZGVjaW1hbCBtb2R1bGUuICAoRGVjXzAgYmVjb21lcyBfRGVjXzAsIGV0Yy4pCisKKy0gSXNzdWUgIzQ3OTA6IFRoZSBuc21hbGxlc3QoKSBhbmQgbmxhcmdlc3QoKSBmdW5jdGlvbnMgaW4gdGhlIGhlYXBxIG1vZHVsZQorICBkaWQgdW5uZWNlc3Nhcnkgd29yayBpbiB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgbm8ga2V5IGZ1bmN0aW9uIHdhcyBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzQ3OTU6IGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbigpIHJldHVybnMgRmFsc2UgaW5zdGVhZCBvZiBOb25lIHdoZW4KKyAgdGhlIGZ1bmN0aW9uIGlzIG5vdCBhIGdlbmVyYXRvci4KKworLSBJc3N1ZSAjNDcwMjogVGhyb3dpbmcgYSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yIGluc3RlYWQgb2YgSU9FcnJvciBpbiBjYXNlCisgIG5vIE1TVkMgY29tcGlsZXIgaXMgZm91bmQgdW5kZXIgV2luZG93cy4gT3JpZ2luYWwgcGF0Y2ggYnkgUGhpbGlwIEplbnZleS4KKworLSBJc3N1ZSAjNDY0NjogZGlzdHV0aWxzIHdhcyBjaG9raW5nIG9uIGVtcHR5IG9wdGlvbnMgYXJnIGluIHRoZSBzZXR1cAorICBmdW5jdGlvbi4gT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEhlbGxlci4KKworLSBJc3N1ZSAjMzc2NzogQ29udmVydCBUayBvYmplY3QgdG8gc3RyaW5nIGluIHRrQ29sb3JDaG9vc2VyLgorCistIElzc3VlICMzMjQ4OiBBbGxvdyBwbGFjaW5nIFNjcm9sbGVkVGV4dCBpbiBhIFBhbmVkV2luZG93LgorCistIElzc3VlICM0NDQ0OiBBbGxvdyBhc3NlcnRSYWlzZXMoKSB0byBiZSB1c2VkIGFzIGEgY29udGV4dCBoYW5kbGVyLCBzbyB0aGF0CisgIHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4gaW5saW5lIGlmIG1vcmUgcHJhY3RpY2FsLgorCistIElzc3VlICM0NzM5OiBBZGQgcHlkb2MgaGVscCB0b3BpY3MgZm9yIHN5bWJvbHMsIHNvIHRoYXQgZS5nLiBoZWxwKCdAJykKKyAgd29ya3MgYXMgZXhwZWN0ZWQgaW4gdGhlIGludGVyYWN0aXZlIGVudmlyb25tZW50LgorCistIElzc3VlICM0NzU2OiB6aXBmaWxlLmlzX3ppcGZpbGUoKSBub3cgc3VwcG9ydHMgZmlsZS1saWtlIG9iamVjdHMuIFBhdGNoIGJ5CisgIEdhYnJpZWwgR2VuZWxsaW5hLgorCistIElzc3VlICM0NTc0OiByZWFkaW5nIGFuIFVURjE2LWVuY29kZWQgdGV4dCBmaWxlIGNyYXNoZXMgaWYgXHIgb24gNjQtY2hhcgorICBib3VuZGFyeS4KKworLSBJc3N1ZSAjNDIyMzogaW5zcGVjdC5nZXRzb3VyY2UoKSB3aWxsIG5vdyBjb3JyZWN0bHkgZGlzcGxheSBzb3VyY2UgY29kZQorICBmb3IgcGFja2FnZXMgbG9hZGVkIHZpYSB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBjb25mb3JtYW50IFBFUCAzMDIKKyAgbG9hZGVyKS4gT3JpZ2luYWwgcGF0Y2ggYnkgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzQyMDE6IHBkYiBjYW4gbm93IGFjY2VzcyBhbmQgZGlzcGxheSBzb3VyY2UgY29kZSBsb2FkZWQgdmlhCisgIHppcGltcG9ydCAob3IgYW55IG90aGVyIGNvbmZvcm1hbnQgUEVQIDMwMiBsb2FkZXIpLiBPcmlnaW5hbCBwYXRjaCBieQorICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjNDE5NzogZG9jdGVzdHMgaW4gbW9kdWxlcyBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55IG90aGVyIFBFUAorICAzMDIgY29uZm9ybWFudCBsb2FkZXIpIHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IGluIG1vc3QgY2FzZXMgKHRoZXkKKyAgYXJlIHN0aWxsIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnRzIHRoYXQgZXhpc3QgZm9yIGFsbCBjb2RlIHJ1bm5pbmcKKyAgZnJvbSBpbnNpZGUgYSBtb2R1bGUgbG9hZGVkIHZpYSBhIFBFUCAzMDIgbG9hZGVyIGFuZCBhdHRlbXB0aW5nIHRvCisgIHBlcmZvcm0gSU8gb3BlcmF0aW9ucyBiYXNlZCBvbiBfX2ZpbGVfXykuIE9yaWdpbmFsIHBhdGNoIGJ5CisgIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlcyAjNDA4MiBhbmQgIzQ1MTI6IEFkZCBydW5weSBzdXBwb3J0IHRvIHppcGltcG9ydCBpbiBhIG1hbm5lciB0aGF0CisgIGFsbG93cyBiYWNrcG9ydGluZyB0byBtYWludGVuYW5jZSBicmFuY2hlcy4gT3JpZ2luYWwgcGF0Y2ggYnkKKyAgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzQxNjM6IHRleHR3cmFwIG1vZHVsZTogYWxsb3cgd29yZCBzcGxpdHRpbmcgb24gYSBoeXBoZW4gcHJlY2VkZWQgYnkKKyAgYSBub24tQVNDSUkgbGV0dGVyLgorCistIElzc3VlICM0NjE2OiBUYXJGaWxlLnV0aW1lKCk6IFJlc3RvcmUgZGlyZWN0b3J5IHRpbWVzIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzQwMjE6IHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIG5vdyByYWlzZXMgYSBTeW50YXhFcnJvciB3aGVuIHRoZQorICBjb2RlYyBjYW5ub3QgYmUgZm91bmQuICBUaGlzIGlzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGJ1aWx0aW4gYmVoYXZpb3IuCisKKy0gSXNzdWUgIzQwODQ6IEZpeCBtYXgsIG1pbiwgbWF4X21hZyBhbmQgbWluX21hZyBEZWNpbWFsIG1ldGhvZHMgdG8KKyAgZ2l2ZSBjb3JyZWN0IHJlc3VsdHMgaW4gdGhlIGNhc2Ugd2hlcmUgb25lIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOCisgIGFuZCB0aGUgb3RoZXIgaXMgYSBmaW5pdGUgbnVtYmVyIHRoYXQgcmVxdWlyZXMgcm91bmRpbmcuCisKKy0gSXNzdWUgIzQ0ODM6IF9kYm0gbW9kdWxlIG5vdyBidWlsZHMgb24gc3lzdGVtcyB3aXRoIGdkYm0gJiBnZGJtX2NvbXBhdAorICBsaWJzLgorCistIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX2NhbGxfb3V0cHV0KCkgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IG91dHB1dAorICBmcm9tIGEgc3VicHJvY2VzcyBvbiBzdWNjZXNzIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLSBJc3N1ZSAjMTA1NTIzNDogY2dpLnBhcnNlX2hlYWRlcigpOiBGaXhlZCBwYXJzaW5nIG9mIGhlYWRlciBwYXJhbWV0ZXJzIHRvCisgIHN1cHBvcnQgdW51c3VhbCBmaWxlbmFtZXMgKHN1Y2ggYXMgdGhvc2UgY29udGFpbmluZyBzZW1pLWNvbG9ucykgaW4KKyAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXJzLgorCistIElzc3VlICM0Mzg0OiBBZGRlZCBsb2dnaW5nIGludGVncmF0aW9uIHdpdGggd2FybmluZ3MgbW9kdWxlIHVzaW5nCisgIGNhcHR1cmVXYXJuaW5ncygpLiBUaGlzIGNoYW5nZSBpbmNsdWRlcyBhIE51bGxIYW5kbGVyIHdoaWNoIGRvZXMgbm90aGluZzsKKyAgaXQgd2lsbCBiZSBvZiB1c2UgdG8gbGlicmFyeSBkZXZlbG9wZXJzIHdobyB3YW50IHRvIGF2b2lkIHRoZSAiTm8gaGFuZGxlcnMKKyAgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciBYWFgiIG1lc3NhZ2Ugd2hpY2ggY2FuIGFwcGVhciBpZiB0aGUgbGlicmFyeSB1c2VyCisgIGRvZXNuJ3QgY29uZmlndXJlIGxvZ2dpbmcuCisKKy0gSXNzdWUgIzM3NDE6IERJU1RVVElMU19VU0VfU0RLIHNldCBjYXVzZXMgbXN2Yzljb21waWxlci5weSB0byByYWlzZSBhbgorICBleGNlcHRpb24uCisKKy0gSXNzdWUgIzQ1Mjk6IGZpeCB0aGUgcGFyc2VyIG1vZHVsZSdzIHZhbGlkYXRpb24gb2YgdHJ5LWV4Y2VwdC1maW5hbGx5CisgIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzQ0NTg6IGdldG9wdC5nbnVfZ2V0b3B0KCkgbm93IHJlY29nbml6ZXMgYSBzaW5nbGUgIi0iIGFzIGFuIGFyZ3VtZW50LAorICBub3QgYSBtYWxmb3JtZWQgb3B0aW9uLgorCistIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgpIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBvdXRwdXQKKyAgZnJvbSBhIHN1YnByb2Nlc3Mgb24gc3VjY2VzcyBvciByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuCisKKy0gSXNzdWUgIzQ1NDI6IE9uIFdpbmRvd3MsIGJpbmFzY2lpLmNyYzMyIHN0aWxsIGFjY2VwdGVkIHN0ciBhcyBiaW5hcnkgaW5wdXQ7CisgIHRoZSBjb3JyZXNwb25kaW5nIHRlc3RzIG5vdyBwYXNzLgorCistIElzc3VlICM0NTM3OiB3ZWJicm93c2VyLlVuaXhCcm93c2VyIHdvdWxkIGZhaWwgdG8gb3BlbiB0aGUgYnJvd3NlciBiZWNhdXNlCisgIGl0IHdhcyBjYWxsaW5nIHRoZSB3cm9uZyBvcGVuKCkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwNTUyMzQ6IGNnaS5wYXJzZV9oZWFkZXIoKTogRml4ZWQgcGFyc2luZyBvZiBoZWFkZXIgcGFyYW1ldGVycyB0bworICBzdXBwb3J0IHVudXN1YWwgZmlsZW5hbWVzIChzdWNoIGFzIHRob3NlIGNvbnRhaW5pbmcgc2VtaS1jb2xvbnMpIGluCisgIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVycy4KKworLSBJc3N1ZSAjNDg2MTogY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCk6IFJvYnVzdGlmeS4gRml4IGxpYnJhcnkgZGV0ZWN0aW9uIG9uCisgIGJpYXJjaCBzeXN0ZW1zLiBUcnkgdG8gcmVseSBvbiBsZGNvbmZpZyBvbmx5LCB3aXRob3V0IHVzaW5nIG9iamR1bXAgYW5kIGdjYy4KKworLSBJc3N1ZSAjNTEwNDogVGhlIHNvY2tldCBtb2R1bGUgbm93IHJhaXNlcyBPdmVyZmxvd0Vycm9yIHdoZW4gMTYtYml0IHBvcnQgYW5kCisgIHByb3RvY29sIG51bWJlcnMgYXJlIHN1cHBsaWVkIG91dHNpZGUgdGhlIGFsbG93ZWQgMC02NTUzNiByYW5nZSBvbiBiaW5kKCkKKyAgYW5kIGdldHNlcnZieXBvcnQoKS4KKworLSBXaW5kb3dzIGxvY2FsZSBtYXBwaW5nIHVwZGF0ZWQgdG8gVmlzdGEuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM0NzA0OiByZW1vdmUgdXNlIG9mIGNtcCgpIGluIHB5YmVuY2gsIGJ1bXAgaXRzIHZlcnNpb24gbnVtYmVyIHRvIDIuMSwKKyAgYW5kIG1ha2UgaXQgMi42LWNvbXBhdGlibGUuCisKKy0gVHRrIGRlbW9zIGFkZGVkIGluIERlbW8vdGtpbnRlci90dGsvCisKKy0gSXNzdWUgIzQ2Nzc6IGFkZCB0d28gbGlzdCBjb21wcmVoZW5zaW9uIHRlc3RzIHRvIHB5YmVuY2guCisKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzYwOTQ6IEJ1aWxkIGNvcnJlY3RseSB3aXRoIFN1YnZlcnNpb24gMS43LgorCistIElzc3VlICM1ODQ3OiBSZW1vdmUgLW4gc3dpdGNoIG9uICJFZGl0IHdpdGggSURMRSIgbWVudSBpdGVtLgorCistIElzc3VlICM1NzI2OiBNYWtlIE1vZHVsZXMvbGRfc29fYWl4IHJldHVybiB0aGUgYWN0dWFsIGV4aXQgY29kZSBvZiB0aGUKKyAgbGlua2VyLCByYXRoZXIgdGhhbiBhbHdheXMgZXhpdCBzdWNjZXNzZnVsbHkuIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgorCistIElzc3VlICM0NTg3OiBBZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4gdG8gc3BlY2lmeQorICB0aGUgb3JkZXIgdGhhdCBiYWNrZW5kcyBmb3IgdGhlIGRibSBleHRlbnNpb24gYXJlIGNoZWNrZWQuCisKKy0gTGluayB0aGUgc2hhcmVkIHB5dGhvbiBsaWJyYXJ5IHdpdGggJChNT0RMSUJTKS4KKworLSBJc3N1ZSAjNTEzNDogU2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBzcWxpdGUgd2l0aCBWQysrLgorCistIElzc3VlICM0NDk0OiBGaXggYnVpbGQgd2l0aCBQeV9OT19FTkFCTEVfU0hBUkVEIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzQ4OTU6IFVzZSBfc3RyZHVwIG9uIFdpbmRvd3MgQ0UuCisKKy0gSXNzdWUgIzQ0NzI6ICJjb25maWd1cmUgLS1lbmFibGUtc2hhcmVkIiBub3cgd29ya3Mgb24gT1NYCisKKy0gSXNzdWVzICM0NzI4IGFuZCAjNDA2MDogV09SRFNfQklHRURJQU4gaXMgbm93IGNvcnJlY3QgaW4gVW5pdmVyc2FsIGJ1aWxkcy4KKworLSBJc3N1ZSAjNDM4OTogQWRkIGljb24gdG8gdGhlIHVuaW5zdGFsbCBlbnRyeSBpbiAiYWRkLWFuZC1yZW1vdmUtcHJvZ3JhbXMiLgorCistIElzc3VlICM0Mjg5OiBSZW1vdmUgQ2FuY2VsIGJ1dHRvbiBmcm9tIEFkdmFuY2VkRGxnLgorCistIElzc3VlICMxNjU2Njc1OiBSZWdpc3RlciBhIGRyb3AgaGFuZGxlciBmb3IgLnB5KiBmaWxlcyBvbiBXaW5kb3dzLgorCistIElzc3VlICM0MTIwOiBFeGNsdWRlIG1hbmlmZXN0IGZyb20gZXh0ZW5zaW9uIG1vZHVsZXMgaW4gVlMyMDA4LgorCistIElzc3VlICM0MDkxOiBJbnN0YWxsIHB5dGhvbnh5LmRsbCBpbiBzeXN0ZW0zMiBhZ2Fpbi4KKworLSBJc3N1ZSAjNDAxODogRGlzYWJsZSAiZm9yIG1lIiBpbnN0YWxsYXRpb25zIG9uIFZpc3RhLgorCistIElzc3VlICMzNzU4OiBBZGQgYGBwYXRjaGNoZWNrYGAgYnVpbGQgdGFyZ2V0IHRvIC5QSE9OWS4KKworLSBJc3N1ZSAjNDIwNDogRml4ZWQgbW9kdWxlIGJ1aWxkIGVycm9ycyBvbiBGcmVlQlNEIDQuCisKKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzY2MjQ6IHlBcmdfUGFyc2VUdXBsZSB3aXRoICJzIiBmb3JtYXQgd2hlbiBwYXJzaW5nIGFyZ3VtZW50IHdpdGgKKyAgTlVMOiBCb2d1cyBUeXBlRXJyb3IgZGV0YWlsIHN0cmluZy4KKworLSBJc3N1ZSAjNTE3NTogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3IKKyAgZm9yIG5lZ2F0aXZlIGFyZ3VtZW50cy4gIFByZXZpb3VzbHksIGl0IHJhaXNlZCBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzQ3MjA6IFRoZSBmb3JtYXQgZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBjYW4gYmVnaW4gd2l0aCAnfCcuCisKKy0gSXNzdWUgIzM2MzI6IGZyb20gdGhlIGdkYiBkZWJ1Z2dlciwgdGhlICdweW8nIG1hY3JvIGNhbiBub3cgYmUgY2FsbGVkIHdoZW4KKyAgdGhlIEdJTCBpcyByZWxlYXNlZCwgb3Igb3duZWQgYnkgYW5vdGhlciB0aHJlYWQuCisKKy0gSXNzdWUgIzQxMjI6IE9uIFdpbmRvd3MsIGZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNpbmcgdGhlCisgIFB5X1VOSUNPREVfSVNTUEFDRSBtYWNybyBpbiBhbiBleHRlbnNpb24gbW9kdWxlLgorCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMzNzQ1OiBGaXggaGFzaGxpYiB0byBhbHdheXMgcmVqZWN0IHVuaWNvZGUgYW5kIG5vbiBidWZmZXItYXBpCisgIHN1cHBvcnRpbmcgb2JqZWN0cyBhcyBpbnB1dCBubyBtYXR0ZXIgaG93IGl0IHdhcyBjb21waWxlZCAoYnVpbHQgaW4KKyAgaW1wbGVtZW50YXRpb25zIG9yIGV4dGVybmFsIG9wZW5zc2wgbGlicmFyeSkuCisKKy0gSXNzdWUgIzQzOTc6IEZpeCBvY2Nhc2lvbmFsIHRlc3Rfc29ja2V0IGZhaWx1cmUgb24gT1MgWC4KKworLSBJc3N1ZSAjNDI3OTogRml4IGJ1aWxkIG9mIHBhcnNlcm1vZHVsZSB1bmRlciBDeWd3aW4uCisKKy0gSXNzdWUgIzQ3NTE6IGhhc2hsaWIgbm93IHJlbGVhc2VzIHRoZSBHSUwgd2hlbiBoYXNoaW5nIGxhcmdlIGJ1ZmZlcnMKKyAgKHdpdGggYSBoYXJkd2lyZWQgdGhyZXNob2xkIG9mIDIwNDggYnl0ZXMpLCBhbGxvd2luZyBiZXR0ZXIgcGFyYWxsZWxpemF0aW9uCisgIG9uIG11bHRpLUNQVSBzeXN0ZW1zLiBDb250cmlidXRlZCBieSBMdWthcyBMdWVnIChlYmZlKSBhbmQgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzQwNTE6IFByZXZlbnQgY29uZmxpY3Qgb2YgVU5JQ09ERSBtYWNyb3MgaW4gY1BpY2tsZS4KKworLSBJc3N1ZSAjNDczODogRWFjaCB6bGliIG9iamVjdCBub3cgaGFzIGEgc2VwYXJhdGUgbG9jaywgYWxsb3dpbmcgdG8gY29tcHJlc3MKKyAgb3IgZGVjb21wcmVzcyBzZXZlcmFsIHN0cmVhbXMgYXQgb25jZSBvbiBtdWx0aS1DUFUgc3lzdGVtcy4gQWxzbywgdGhlIEdJTAorICBpcyBub3cgcmVsZWFzZWQgd2hlbiBjb21wdXRpbmcgdGhlIENSQyBvZiBhIGxhcmdlIGJ1ZmZlci4gUGF0Y2ggYnkgZWJmZS4KKworLSBJc3N1ZSAjNDIyODogUGFjayBuZWdhdGl2ZSB2YWx1ZXMgdGhlIHNhbWUgd2F5IGFzIDIuNCBpbiBzdHJ1Y3QncyBMIGZvcm1hdC4KKworLSBJc3N1ZSAjMTA0MDAyNjogRml4IG9zLnRpbWVzIHJlc3VsdCBvbiBzeXN0ZW1zIHdoZXJlIEhaIGlzIGluY29ycmVjdC4KKworLSBJc3N1ZXMgIzMxNjcsICMzNjgyOiBGaXggdGVzdF9tYXRoIGZhaWx1cmVzIGZvciBsb2csIGxvZzEwIG9uIFNvbGFyaXMsCisgIE9wZW5CU0QuCisKKy0gSXNzdWUgIzQ1ODM6IGFycmF5LmFycmF5IHdvdWxkIG5vdCBhbHdheXMgcHJvaGliaXQgcmVzaXppbmcgd2hlbiBhIGJ1ZmZlcgorICBoYXMgYmVlbiBleHBvcnRlZCwgcmVzdWx0aW5nIGluIGFuIGludGVycHJldGVyIGNyYXNoIHdoZW4gYWNjZXNzaW5nIHRoZQorICBidWZmZXIuCisKKworLSBJc3N1ZSAjNTIyODogTWFrZSBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzIGNhbiBub3cgYmUgcGlja2xlZC4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzYxNTI6IE5ldyBvcHRpb24gJy1qJy8nLS1tdWx0aXByb2Nlc3MnIGZvciByZWdydGVzdCBhbGxvd3MgcnVubmluZworICByZWdyZXNzaW9uIHRlc3RzIGluIHBhcmFsbGVsLCBzaG9ydGVuaW5nIHRoZSB0b3RhbCBydW50aW1lLgorCistIElzc3VlICM1NDUwOiBNb3ZlZCB0ZXN0cyBpbnZvbHZpbmcgbG9hZGluZyB0ayBmcm9tIExpYi90ZXN0L3Rlc3RfdGNsIHRvCisgIExpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbG9hZHRrLiBXaXRoIHRoaXMsIHRoZXNlIHRlc3RzIGRlbW9uc3RyYXRlCisgIHRoZSBzYW1lIGJlaGF2aW91ciBhcyB0ZXN0X3R0a2d1aW9ubHkgKGFuZCBub3cgYWxzbyB0ZXN0X3RrKSB3aGljaCBpcyB0bworICBza2lwIHRoZSB0ZXN0cyBpZiBESVNQTEFZIGlzIGRlZmluZWQgYnV0IGNhbid0IGJlIHVzZWQuCisKKy0gcmVncnRlc3Qgbm8gbG9uZ2VyIHRyZWF0cyBJbXBvcnRFcnJvciBhcyBlcXVpdmFsZW50IHRvIFNraXBUZXN0LiAgSW1wb3J0cworICB0aGF0IHNob3VsZCBjYXVzZSBhIHRlc3QgdG8gYmUgc2tpcHBlZCBhcmUgbm93IGRvbmUgdXNpbmcgaW1wb3J0X21vZHVsZQorICBmcm9tIHRlc3Qgc3VwcG9ydCwgd2hpY2ggZG9lcyB0aGUgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjNTA4MzogTmV3ICdndWknIHJlc291cmNlIGZvciByZWdydGVzdC4KKworCitEb2NzCistLS0tCisKKwogV2hhdCdzIE5ldyBpbiBQeXRob24gMy4wIGZpbmFsCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCmluZGV4IDZjMzA2ZDguLjFkYjU4NDMgMTAwNjQ0Ci0tLSBhL01pc2MvTkVXUworKysgYi9NaXNjL05FV1MKQEAgLTIsMTMyICsyLDQ5IEBACiBQeXRob24gTmV3cwogKysrKysrKysrKysKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjQKLT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0qUmVsZWFzZSBkYXRlOiBYWC1YWC1YWFhYKgorKk5vdCB5ZXQgcmVsZWFzZWQsIHNlZSBzZWN0aW9ucyBiZWxvdyBmb3IgY2hhbmdlcyByZWxlYXNlZCBpbiAzLjMuMCoKKworLi4gKlJlbGVhc2UgZGF0ZTogWFgtWFhYLTIwMTIqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxNjI0MTogRG9jdW1lbnQgLVggZmF1bHRoYW5kbGVyIGNvbW1hbmQgbGluZSBvcHRpb24uCisgIFBhdGNoIGJ5IE1hcmVrIMWgdXBwYS4KKwogLSBJc3N1ZSAjNjA3NDogRW5zdXJlIGNhY2hlZCBieXRlY29kZSBmaWxlcyBjYW4gYWx3YXlzIGJlIHVwZGF0ZWQgYnkgdGhlCiAgIHVzZXIgdGhhdCBjcmVhdGVkIHRoZW0sIGV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgcmVhZC1vbmx5LgogCiAtIElzc3VlICMxNDc4MzogSW1wcm92ZSBpbnQoKSBkb2NzdHJpbmcgYW5kIHN3aXRjaCBkb2NzdHJpbmdzIGZvciBzdHIoKSwKICAgcmFuZ2UoKSwgYW5kIHNsaWNlKCkgdG8gdXNlIG11bHRpLWxpbmUgc2lnbmF0dXJlcy4KIAorLSBJc3N1ZSAjMTYxNjA6IFN1YmNsYXNzIHN1cHBvcnQgbm93IHdvcmtzIGZvciB0eXBlcy5TaW1wbGVOYW1lc3BhY2UuCisKIC0gSXNzdWUgIzE1Mzc5OiBGaXggcGFzc2luZyBvZiBub24tQk1QIGNoYXJhY3RlcnMgYXMgaW50ZWdlcnMgZm9yIHRoZSBjaGFybWFwCiAgIGRlY29kZXIgKGFscmVhZHkgd29ya2luZyBhcyB1bmljb2RlIHN0cmluZ3MpLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCi0gIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yCi0gIGNoYWlucyByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lcgotICB0eXBlcy4KKy0gSXNzdWUgIzE1MTQ0OiBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGhhbmRsaW5nIHBvaW50ZXJzIGFzIGludGVnZXIKKyAgdmFsdWVzLCBieSB1c2luZyBgUHlfdWludHB0cl90YCBpbnN0ZWFkIG9mIGBzaXplX3RgLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTU4NDY6IEZpeCBTeXN0ZW1FcnJvciB3aGljaCBoYXBwZW5lZCB3aGVuIHVzaW5nIGFzdC5wYXJzZSBpbiBhbgorLSBJc3N1ZSAjMTU5NjU6IEV4cGxpY2l0bHkgY2FzdCBgQVRfRkRDV0RgIGFzIChpbnQpLiAgUmVxdWlyZWQgb24gU29sYXJpcyAxMAorICAod2hpY2ggZGVmaW5lcyBgQVRfRkRDV0RgIGFzIGBgMHhmZmQxOTU1M2BgKSwgaGFybWxlc3Mgb24gb3RoZXIgcGxhdGZvcm1zLgorCistIElzc3VlICMxNTgzOTogQ29udmVydCBTeXN0ZW1FcnJvcnMgaW4gYHN1cGVyKClgIHRvIFJ1bnRpbWVFcnJvcnMuCisKKy0gSXNzdWUgIzE1ODQ2OiBGaXggU3lzdGVtRXJyb3Igd2hpY2ggaGFwcGVuZWQgd2hlbiB1c2luZyBgYXN0LnBhcnNlKClgIGluIGFuCiAgIGV4Y2VwdGlvbiBoYW5kbGVyIG9uIGNvZGUgd2l0aCBzeW50YXggZXJyb3JzLgogCi0tIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gUFlUSE9ORVhFQ1VUQUJMRSBpcyBzZXQgb24gTWFjIE9TIFguCi0KIC0gSXNzdWUgIzE1ODAxOiBNYWtlIHN1cmUgbWFwcGluZ3MgcGFzc2VkIHRvICclJyBmb3JtYXR0aW5nIGFyZSBhY3R1YWxseQogICBzdWJzY3JpcHRhYmxlLgogCi0tIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLgotICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCistIElzc3VlICMxNTExMTogX19pbXBvcnRfXyBzaG91bGQgbGV0IEltcG9ydEVycm9yIHByb3BhZ2F0ZSB3aGVuIGEgbW9kdWxlIHRoYXQKKyAgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB1c2luZyBmcm9tbGlzdCB0cmllcyB0byBpbXBvcnQgYSBtb2R1bGUKKyAgdGhhdCBjYW5ub3QgYmUgZm91bmQuCiAKLS0gSXNzdWUgIzE1NjA0OiBVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQotICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTMxMTk6IHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgotICBXaW5kb3dzLCBhcyBQeXRob24gMi4KLQotLSBJc3N1ZSAjMTQ1Nzk6IEZpeCBDVkUtMjAxMi0yMTM1OiB2dWxuZXJhYmlsaXR5IGluIHRoZSB1dGYtMTYgZGVjb2RlciBhZnRlcgotICBlcnJvciBoYW5kbGluZy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDA0OiBSZWZsZWFrIGluIFB5TWV0aG9kT2JqZWN0IHJlcHIuCi0KLS0gSXNzdWUgIzE1Mzk0OiBBbiBpc3N1ZSBpbiBQeU1vZHVsZV9DcmVhdGUgdGhhdCBjYXVzZWQgcmVmZXJlbmNlcyB0bwotICBiZSBsZWFrZWQgb24gc29tZSBlcnJvciBwYXRocyBoYXMgYmVlbiBmaXhlZC4gIFBhdGNoIGJ5IEp1bGlhIExhd2FsbC4KLQotLSBJc3N1ZSAjMTUzNjg6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIGJ5dGVjb2RlIGdlbmVyYXRpb24gdG8gYmUKLSAgbm9uLWRldGVybWluaXN0aWMgd2hlbiB1c2luZyByYW5kb21pemVkIGhhc2hpbmcgKC1SKSBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUwMjA6IFRoZSBwcm9ncmFtIG5hbWUgdXNlZCB0byBzZWFyY2ggZm9yIFB5dGhvbidzIHBhdGggaXMgbm93Ci0gICJweXRob24zIiB1bmRlciBVbml4LCBub3QgInB5dGhvbiIuCi0KLS0gSXNzdWUgIzE1ODk3OiB6aXBpbXBvcnQuYyBkb2Vzbid0IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2VlaygpLgotICBQYXRjaCBieSBGZWxpcGUgQ3J1ei4KLQotLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRoLAotICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCi0KLS0gSXNzdWUgIzEyMjY4OiBGaWxlIHJlYWRsaW5lLCByZWFkbGluZXMgYW5kIHJlYWQoKSBvciByZWFkYWxsKCkgbWV0aG9kcwotICBubyBsb25nZXIgbG9zZSBkYXRhIHdoZW4gYW4gdW5kZXJseWluZyByZWFkIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkLgotICBJT0Vycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgZHVlIHRvIGEgcmVhZCBzeXN0ZW0gY2FsbCByZXR1cm5pbmcgRUlOVFIKLSAgZnJvbSB3aXRoaW4gdGhlc2UgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTUxNDI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIGRlYWxsb2NhdGluZyBpbnN0YW5jZXMgb2YgdHlwZXMKLSAgY3JlYXRlZCB1c2luZyBQeVR5cGVfRnJvbVNwZWMoKS4KLQotLSBJc3N1ZSAjMTAwNTM6IERvbid0IGNsb3NlIEZEcyB3aGVuIEZpbGVJTy5fX2luaXRfXyBmYWlscy4gTG9vc2VseSBiYXNlZCBvbgotICB0aGUgd29yayBieSBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjMTQ3NzU6IEZpeCBhIHBvdGVudGlhbCBxdWFkcmF0aWMgZGljdCBidWlsZC11cCBkdWUgdG8gdGhlIGdhcmJhZ2UKLSAgY29sbGVjdG9yIHJlcGVhdGVkbHkgdHJ5aW5nIHRvIHVudHJhY2sgZGljdHMuCi0KLS0gSXNzdWUgIzE0NDk0OiBGaXggX19mdXR1cmVfXy5weSBhbmQgaXRzIGRvY3VtZW50YXRpb24gdG8gbm90ZSB0aGF0Ci0gIGFic29sdXRlIGltcG9ydHMgYXJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIDMuMCBpbnN0ZWFkIG9mIDIuNy4KLSAgUGF0Y2ggYnkgU3ZlbiBNYXJuYWNoLgotCi0tIElzc3VlICMxNDc2MTogRml4IHBvdGVudGlhbCBsZWFrIG9uIGFuIGVycm9yIGNhc2UgaW4gdGhlIGltcG9ydCBtYWNoaW5lcnkuCi0KLS0gSXNzdWUgIzE0Njk5OiBGaXggY2FsbGluZyB0aGUgY2xhc3NtZXRob2QgZGVzY3JpcHRvciBkaXJlY3RseS4KLQotLSBJc3N1ZSAjMTQ0MzM6IFByZXZlbnQgbXN2Y3J0IGNyYXNoIGluIGludGVyYWN0aXZlIHByb21wdCB3aGVuIHN0ZGluCi0gIGlzIGNsb3NlZC4KLQotLSBJc3N1ZSAjMTE2MDMgKGFnYWluKTogU2V0dGluZyBfX3JlcHJfXyB0byBfX3N0cl9fIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IKLSAgd2hlbiByZXByKCkgb3Igc3RyKCkgaXMgY2FsbGVkIG9uIHN1Y2ggYW4gb2JqZWN0LgotCi0tIElzc3VlICMxNDY1ODogRml4IGJpbmRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBhIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24gb2YgYQotICBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCi0KLS0gSXNzdWUgIzE0NjMwOiBGaXggYSBtZW1vcnkgYWNjZXNzIGJ1ZyBmb3IgaW5zdGFuY2VzIG9mIGEgc3ViY2xhc3Mgb2YgaW50Ci0gIHdpdGggdmFsdWUgMC4KLQotLSBJc3N1ZSAjMTQ2MTI6IEZpeCBqdW1waW5nIGFyb3VuZCB3aXRoIGJsb2NrcyBieSBzZXR0aW5nIGZfbGluZW5vLgotCi0tIElzc3VlICMxNDYwNzogRml4IGtleXdvcmQtb25seSBhcmd1bWVudHMgd2hpY2ggc3RhcnRlZCB3aXRoIGBgX19gYC4KLQotLSBJc3N1ZSAjMTM4ODk6IENoZWNrIGFuZCAoaWYgbmVjZXNzYXJ5KSBzZXQgRlBVIGNvbnRyb2wgd29yZCBiZWZvcmUgY2FsbGluZwotICBhbnkgb2YgdGhlIGR0b2EuYyBzdHJpbmcgPC0+IGZsb2F0IGNvbnZlcnNpb24gZnVuY3Rpb25zLCBvbiBNU1ZDIGJ1aWxkcyBvZgotICBQeXRob24uICBUaGlzIGZpeGVzIGlzc3VlcyB3aGVuIGVtYmVkZGluZyBQeXRob24gaW4gYSBEZWxwaGkgYXBwLgotCi0tIElzc3VlICMxNDQ3NDogU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKQotICB3aGlsZSB3cml0aW5nIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHRocmVhZCBsZWF2ZXMgYSB1bmhhbmRsZWQgZXhjZXB0aW9uLgotCi0tIElzc3VlICMxMzAxOTogRml4IHBvdGVudGlhbCByZWZlcmVuY2UgbGVha3MgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2gKLSAgYnkgU3VtYW4gU2FoYS4KLQotLSBJc3N1ZSAjMTQzNzg6IEZpeCBjb21waWxpbmcgYXN0LkltcG9ydEZyb20gbm9kZXMgd2l0aCBhICJfX2Z1dHVyZV9fIiBzdHJpbmcgYXMKLSAgdGhlIG1vZHVsZSBuYW1lIHRoYXQgd2FzIG5vdCBpbnRlcm5lZC4KLQotLSBJc3N1ZSAjMTQzMzE6IFVzZSBzaWduaWZpY2FudGx5IGxlc3Mgc3RhY2sgc3BhY2Ugd2hlbiBpbXBvcnRpbmcgbW9kdWxlcyBieQotICBhbGxvY2F0aW5nIHBhdGggYnVmZmVycyBvbiB0aGUgaGVhcCBpbnN0ZWFkIG9mIHRoZSBzdGFjay4KLQotLSBJc3N1ZSAjMTQzMzQ6IFByZXZlbnQgaW4gYSBzZWdmYXVsdCBpbiB0eXBlLl9fZ2V0YXR0cmlidXRlX18gd2hlbiBpdCB3YXMgbm90Ci0gIHBhc3NlZCBzdHJpbmdzLgotCi0tIElzc3VlICMxNDY5NjI5OiBBbGxvdyBjeWNsZXMgdGhyb3VnaCBhbiBvYmplY3QncyBfX2RpY3RfXyBzbG90IHRvIGJlCi0gIGNvbGxlY3RlZC4gKEZvciBleGFtcGxlIGlmIGBgeC5fX2RpY3RfXyBpcyB4YGApLgotCi0tIElzc3VlICMxNDE3MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gbWFyc2hhbGxpbmcgYSBidWZmZXItbGlrZSBvYmplY3QKLSAgKG90aGVyIHRoYW4gYSBieXRlcyBvYmplY3QpLgotCi0tIElzc3VlICMxMzUyMTogZGljdC5zZXRkZWZhdWx0KCkgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LAotICBtYWtpbmcgaXQgImF0b21pYyIgZm9yIG1hbnkgcHVycG9zZXMuICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgotCi0tIElzc3VlICMxNDQ3MTogRml4IGEgcG9zc2libGUgYnVmZmVyIG92ZXJydW4gaW4gdGhlIHdpbnJlZyBtb2R1bGUuCiAKIExpYnJhcnkKIC0tLS0tLS0KQEAgLTEzNSwxMCArNTIsMTUgQEAKIC0gSXNzdWUgIzEyODkwOiBjZ2l0YiBubyBsb25nZXIgcHJpbnRzIHNwdXJpb3VzIDxwPiB0YWdzIGluIHRleHQKICAgbW9kZSB3aGVuIHRoZSBsb2dkaXIgb3B0aW9uIGlzIHNwZWNpZmllZC4KIAorLSBJc3N1ZSAjMTYzMDc6IEZpeCBtdWx0aXByb2Nlc3NpbmcuUG9vbC5tYXBfYXN5bmMgbm90IGNhbGxpbmcgaXRzIGNhbGxiYWNrcy4KKyAgUGF0Y2ggYnkgSmFubmUgS2FyaWxhLgorCiAtIElzc3VlICMxNjI1MDogRml4IFVSTEVycm9yIGludm9jYXRpb24gd2l0aCBwcm9wZXIgYXJncy4KIAotLSBJc3N1ZSAjMTYzMDU6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvY2N1cnJpbmcgd2hlbiBpbnRlcnJ1cHRpbmcKLSAgbWF0aC5mYWN0b3JpYWwuCistIElzc3VlICMxNjExNjogRml4IGluY2x1ZGUgYW5kIGxpYnJhcnkgcGF0aHMgdG8gYmUgY29ycmVjdCB3aGVuIGJ1aWxkaW5nIEMKKyAgZXh0ZW5zaW9ucyBpbiB2ZW52cy4KKworLSBJc3N1ZSAjMTYyNDU6IEZpeCB0aGUgdmFsdWUgb2YgYSBmZXcgZW50aXRpZXMgaW4gaHRtbC5lbnRpdGllcy5odG1sNS4KIAogLSBJc3N1ZSAjMTQzOTg6IEZpeCBzaXplIHRydW5jYXRpb24gYW5kIG92ZXJmbG93IGJ1Z3MgaW4gdGhlIGJ6MiBtb2R1bGUuCiAKQEAgLTE1MCw5NCArNzIsODI2IEBACiAKIC0gSXNzdWUgIzE2MTc2OiBQcm9wZXJseSBpZGVudGlmeSBXaW5kb3dzIDggdmlhIHBsYXRmb3JtLnBsYXRmb3JtKCkKIAotLSBJc3N1ZSAjMTYxMTQ6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgcHJvdmlkZXMgYSBtaXNsZWFkaW5nCi0gIGVycm9yIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IGFyZ3NbMF0gZGlkIG5vdCBleGlzdCB3aGVuIGVpdGhlciB0aGUgY3dkIG9yCi0gIGV4ZWN1dGFibGUga2V5d29yZCBhcmd1bWVudHMgc3BlY2lmaWVkIGEgcGF0aCB0aGF0IGRpZCBub3QgZXhpc3QuCistIElzc3VlICMxNjExNDogVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vIGxvbmdlciBwcm92aWRlcyBhIG1pc2xlYWRpbmcgZXJyb3IKKyAgbWVzc2FnZSBzdGF0aW5nIHRoYXQgYXJnc1swXSBkaWQgbm90IGV4aXN0IHdoZW4gZWl0aGVyIHRoZSBjd2Qgb3IgZXhlY3V0YWJsZQorICBrZXl3b3JkIGFyZ3VtZW50cyBzcGVjaWZpZWQgYSBwYXRoIHRoYXQgZGlkIG5vdCBleGlzdC4KIAotLSBJc3N1ZSAjMTU3NTY6IHN1YnByb2Nlc3MucG9sbCgpIG5vdyBwcm9wZXJseSBoYW5kbGVzIGVycm5vLkVDSElMRCB0bwotICByZXR1cm4gYSByZXR1cm5jb2RlIG9mIDAgd2hlbiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkIG9yIGNhbm5vdAotICBiZSB3YWl0ZWQgb24uCistIElzc3VlICMxNjE2OTogRml4IGN0eXBlcy5XaW5FcnJvcigpJ3MgY29uZnVzaW9uIGJldHdlZW4gZXJybm8gYW5kIHdpbmVycm9yLgogCi0tIElzc3VlICMxMjM3NjogUGFzcyBvbiBwYXJhbWV0ZXJzIGluIFRleHRUZXN0UmVzdWx0Ll9faW5pdF9fIHN1cGVyIGNhbGwKKy0gSXNzdWUgIzE2MDg5OiBBbGxvdyBFbGVtZW50VHJlZS5UcmVlQnVpbGRlciB0byB3b3JrIGFnYWluIHdpdGggYSBub24tRWxlbWVudAorICBlbGVtZW50X2ZhY3RvcnkgKGZpeGVzIGEgcmVncmVzc2lvbiBpbiBTaW1wbGVUQUwpLgogCi0tIElzc3VlICMxNTIyMjogSW5zZXJ0IGJsYW5rIGxpbmUgYWZ0ZXIgZWFjaCBtZXNzYWdlIGluIG1ib3ggbWFpbGJveGVzCi0KLS0gSXNzdWUgIzE2MDEzOiBGaXggQ1NWIFJlYWRlciBwYXJzaW5nIGlzc3VlIHdpdGggZW5kaW5nIHF1b3RlIGNoYXJhY3RlcnMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDIxOiBmaXggYW4gT3ZlcmZsb3dFcnJvciBpbiBDYWxlbmRhci5pdGVybW9udGhkYXRlcygpIGFmdGVyCi0gIGRhdGV0aW1lLk1BWFlFQVIuICBQYXRjaCBieSBDw6lkcmljIEtyaWVyLgotCi0tIElzc3VlICMxNTk3MDogeG1sLmV0cmVlLkVsZW1lbnRUcmVlIG5vdyBzZXJpYWxpemVzIGNvcnJlY3RseSB0aGUgZW1wdHkgSFRNTAotICBlbGVtZW50cyAnbWV0YScgYW5kICdwYXJhbScuCi0KLS0gSXNzdWUgIzE1ODQyOiB0aGUgU29ja2V0SU8ue3JlYWRhYmxlLHdyaXRhYmxlLHNlZWthYmxlfSBtZXRob2RzIG5vdwotICByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgY2xvc2VkLiAgUGF0Y2ggYnkgQWxlc3NhbmRybwotICBNb3VyYS4KLQotLSBJc3N1ZSAjMTU4ODE6IEZpeGVkIGF0ZXhpdCBob29rIGluIG11bHRpcHJvY2Vzc2luZy4gIE9yaWdpbmFsIHBhdGNoCi0gIGJ5IENocmlzIE1jRG9ub3VnaC4KLQotLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiAvZGV2L3VyYW5kb20gY2Fubm90Ci0gIGJlIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KLQotLSBJc3N1ZSAjMTU4NDE6IFRoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YgQnl0ZXNJTwotICBhbmQgU3RyaW5nSU8gb2JqZWN0cyBub3cgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBvYmplY3QgaGFzIGJlZW4gY2xvc2VkLgotICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgotCi0tIElzc3VlICMxNTUwOTogd2ViYnJvd3Nlci5Vbml4QnJvd3NlciBubyBsb25nZXIgcGFzc2VzIGVtcHR5IGFyZ3VtZW50cyB0bwotICBQb3BlbiB3aGVuICVhY3Rpb24gc3Vic3RpdHV0aW9ucyBwcm9kdWNlIGVtcHR5IHN0cmluZ3MuCistIElzc3VlICMxNjAzNDogRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGluIHRoZSBuZXcgYGJ6Mi5CWjJGaWxlYAorICBpbXBsZW1lbnRhdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAogLSBJc3N1ZSAjMTYxMTI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSBkb2VzIG5vdCBjb3JyZWN0bHkgZXNjYXBlIGFyZ3VtZW50IHRvCiAgIC91c3IvYmluL2ZpbGUuICBQYXRjaCBieSBEYXZpZCBCZW5qYW1pbi4KIAotLSBJc3N1ZSAjMTI3NzYsIzExODM5OiBjYWxsIGFyZ3BhcnNlIHR5cGUgZnVuY3Rpb24gKHNwZWNpZmllZCBieSBhZGRfYXJndW1lbnQpCi0gIG9ubHkgb25jZS4gQmVmb3JlLCB0aGUgdHlwZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHR3aWNlIGluIHRoZSBjYXNlIHdoZXJlIHRoZQotICBkZWZhdWx0IHdhcyBzcGVjaWZpZWQgYW5kIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4gYXMgd2VsbC4gIFRoaXMgd2FzCi0gIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgZm9yIHRoZSBGaWxlVHlwZSB0eXBlLCBhcyBhIGRlZmF1bHQgZmlsZSB3b3VsZCBhbHdheXMKLSAgYmUgb3BlbmVkLCBldmVuIGlmIGEgZmlsZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCistIElzc3VlICMxNTc1NjogYHN1YnByb2Nlc3MucG9sbCgpYCBub3cgcHJvcGVybHkgaGFuZGxlcyBgZXJybm8uRUNISUxEYCB0bworICByZXR1cm4gYSByZXR1cm5jb2RlIG9mIDAgd2hlbiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkIG9yIGNhbm5vdCBiZSB3YWl0ZWQKKyAgb24uCiAKLS0gSXNzdWUgIzE1OTA2OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKLSAgd2hlbiBhY3Rpb249J2FwcGVuZCcsIHR5cGU9J3N0cicgYW5kIGRlZmF1bHQ9W10uCistIElzc3VlICMxNTMyMzogSW1wcm92ZSBmYWlsdXJlIG1lc3NhZ2Ugb2YgYE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKWAuCiAKLS0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMKLSAgY29tcGlsZWQgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyCistIElzc3VlICMxNjA2NDogYGB1bml0dGVzdCAtbWBgIGNsYWltcyBleGVjdXRhYmxlIGlzICJweXRob24iLCBub3QgInB5dGhvbjMiLgorCistIElzc3VlICMxMjM3NjogUGFzcyBvbiBwYXJhbWV0ZXJzIGluIGBUZXh0VGVzdFJlc3VsdC5fX2luaXRfXygpYCBzdXBlciBjYWxsLgorCistIElzc3VlICMxNTIyMjogSW5zZXJ0IGJsYW5rIGxpbmUgYWZ0ZXIgZWFjaCBtZXNzYWdlIGluIG1ib3ggbWFpbGJveGVzLgorCistIElzc3VlICMxNjAxMzogRml4IGBjc3YuUmVhZGVyYCBwYXJzaW5nIGlzc3VlIHdpdGggZW5kaW5nIHF1b3RlIGNoYXJhY3RlcnMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1NDIxOiBGaXggYW4gT3ZlcmZsb3dFcnJvciBpbiBgQ2FsZW5kYXIuaXRlcm1vbnRoZGF0ZXMoKWAgYWZ0ZXIKKyAgYGRhdGV0aW1lLk1BWFlFQVJgLiAgUGF0Y2ggYnkgQ8OpZHJpYyBLcmllci4KKworLSBJc3N1ZSAjMTU5NzA6IGB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG5vdyBzZXJpYWxpemVzIGNvcnJlY3RseSB0aGUgZW1wdHkgSFRNTAorICBlbGVtZW50cyAnbWV0YScgYW5kICdwYXJhbScuCisKKy0gSXNzdWUgIzE1ODQyOiBUaGUgYFNvY2tldElPLntyZWFkYWJsZSx3cml0YWJsZSxzZWVrYWJsZX1gIG1ldGhvZHMgbm93IHJhaXNlCisgIFZhbHVlRXJyb3Igd2hlbiB0aGUgZmlsZS1saWtlIG9iamVjdCBpcyBjbG9zZWQuICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgorCistIElzc3VlICMxNTg3NjogRml4IGEgcmVmbGVhayBpbiB0aGUgYGN1cnNlc2AgbW9kdWxlOiB3aW5kb3cuZW5jb2RpbmcuCisKKy0gSXNzdWUgIzE1ODgxOiBGaXggYGF0ZXhpdGAgaG9vayBpbiBgbXVsdGlwcm9jZXNzaW5nYC4gIE9yaWdpbmFsIHBhdGNoIGJ5IENocmlzCisgIE1jRG9ub3VnaC4KKworLSBJc3N1ZSAjMTU4NDE6IFRoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YKKyAgYGlvLkJ5dGVzSU9gIGFuZCBgaW8uU3RyaW5nSU9gIG9iamVjdHMgbm93IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgb2JqZWN0CisgIGhhcyBiZWVuIGNsb3NlZC4gIFBhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEuCisKKy0gSXNzdWUgIzE2MTI2OiBQeUVycl9Gb3JtYXQgZm9ybWF0IG1pc21hdGNoIGluIF90ZXN0Y2FwaW1vZHVsZS5jLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQ0NzogVXNlIGBzdWJwcm9jZXNzLkRFVk5VTExgIGluIHdlYmJyb3dzZXIsIGluc3RlYWQgb2Ygb3BlbmluZworICBgb3MuZGV2bnVsbGAgZXhwbGljaXRseSBhbmQgbGVhdmluZyBpdCBvcGVuLgorCistIElzc3VlICMxNTUwOTogYHdlYmJyb3dzZXIuVW5peEJyb3dzZXJgIG5vIGxvbmdlciBwYXNzZXMgZW1wdHkgYXJndW1lbnRzIHRvCisgIFBvcGVuIHdoZW4gYGAlYWN0aW9uYGAgc3Vic3RpdHV0aW9ucyBwcm9kdWNlIGVtcHR5IHN0cmluZ3MuCisKKy0gSXNzdWUgIzEyNzc2LCBpc3N1ZSAjMTE4Mzk6IENhbGwgYGFyZ3BhcnNlYCB0eXBlIGZ1bmN0aW9uIChzcGVjaWZpZWQgYnkKKyAgYWRkX2FyZ3VtZW50KSBvbmx5IG9uY2UuICBCZWZvcmUsIHRoZSB0eXBlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgdHdpY2UgaW4gdGhlCisgIGNhc2Ugd2hlcmUgdGhlIGRlZmF1bHQgd2FzIHNwZWNpZmllZCBhbmQgdGhlIGFyZ3VtZW50IHdhcyBnaXZlbiBhcyB3ZWxsLiAgVGhpcworICB3YXMgZXNwZWNpYWxseSBwcm9ibGVtYXRpYyBmb3IgdGhlIEZpbGVUeXBlIHR5cGUsIGFzIGEgZGVmYXVsdCBmaWxlIHdvdWxkCisgIGFsd2F5cyBiZSBvcGVuZWQsIGV2ZW4gaWYgYSBmaWxlIGFyZ3VtZW50IHdhcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjMTU5MDY6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGFyZ3BhcnNlYCBjYXVzZWQgYnkgdGhlIHByZWNlZGluZyBjaGFuZ2UsCisgIHdoZW4gYGBhY3Rpb249J2FwcGVuZCdgYCwgYGB0eXBlPSdzdHInYGAgYW5kIGBgZGVmYXVsdD1bXWBgLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTYxMTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCB0bworICBzdWJwcm9jZXNzLlBvcGVuKCkuICBJbml0aWFsIHBhdGNoIGJ5IEt1c2hhbCBEYXMuCisKKy0gSXNzdWUgIzE1MzA0OiBGaXggd2FybmluZyBtZXNzYWdlIHdoZW4gYG9zLmNoZGlyKClgIGZhaWxzIGluc2lkZQorICBgdGVzdC5zdXBwb3J0LnRlbXBfY3dkKClgLiAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBgVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wKClgLiBQYXRjaCBieQorICBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTU1NzogQWRkIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIGB3ZWJicm93c2VyYCBtb2R1bGUsIHRoYW5rcyB0byBBbnRvbgorICBCYXJrb3Zza3kuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNjI2MjogZml4IG91dC1vZi1zcmMtdHJlZSBidWlsZHMsIGlmIG1lcmN1cmlhbCBpcyBub3QgaW5zdGFsbGVkLgorCistIElzc3VlICMxNTI5ODogZW5zdXJlIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBpbiBidWlsZCBkaXJlY3RvcnksIG5vdAorICBzb3VyY2UgZGlyZWN0b3J5LgorCistIElzc3VlICMxNTgzMzogRml4IGEgcmVncmVzc2lvbiBpbiAzLjMgdGhhdCByZXN1bHRlZCBpbiBleGNlcHRpb25zIGJlaW5nCisgIHJhaXNlZCBpZiBpbXBvcnRsaWIgZmFpbGVkIHRvIHdyaXRlIGJ5dGUtY29tcGlsZWQgZmlsZXMuICBUaGlzIGFmZmVjdGVkCisgIGF0dGVtcHRzIHRvIGJ1aWxkIFB5dGhvbiBvdXQtb2YtdHJlZSBmcm9tIGEgcmVhZC1vbmx5IHNvdXJjZSBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE1OTIzOiBGaXggYSBtaXN0YWtlIGluIGBgYXNkbF9jLnB5YGAgdGhhdCByZXN1bHRlZCBpbiBhIFR5cGVFcnJvcgorICBhZnRlciAyODAxYmY4NzVhMjQgKHNlZSAjMTU4MDEpLgorCistIElzc3VlICMxNTgxOTogTWFrZSBzdXJlIHdlIGNhbiBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWQtb25seQorICBzb3VyY2UgZGlyZWN0b3J5LiAgKFNvbWV3aGF0IHJlbGF0ZWQgdG8gaXNzdWUgIzk4NjAuKQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzgwNDA6IGFkZGVkIGEgdmVyc2lvbiBzd2l0Y2hlciB0byB0aGUgZG9jdW1lbnRhdGlvbi4gIFBhdGNoIGJ5CisgIFl1cnkgU2VsaXZhbm92LgorCistIEFkZGl0aW9uYWwgY29tbWVudHMgYW5kIHNvbWUgc3R5bGUgY2hhbmdlcyBpbiB0aGUgY29uY3VycmVudC5mdXR1cmVzIFVSTAorICByZXRyaWV2YWwgZXhhbXBsZQorCistIElzc3VlICMxNjExNTogSW1wcm92ZSBzdWJwcm9jZXNzLlBvcGVuKCkgZG9jdW1lbnRhdGlvbiBhcm91bmQgYXJncywgc2hlbGwsCisgIGFuZCBleGVjdXRhYmxlIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTU1MzM6IENsYXJpZnkgZG9jcyBhbmQgYWRkIHRlc3RzIGZvciBgc3VicHJvY2Vzcy5Qb3BlbigpYCdzIGN3ZAorICBhcmd1bWVudC4KKworLSBJc3N1ZSAjMTU5Nzk6IEltcHJvdmUgdGltZWl0IGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE2MDM2OiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgYnVpbHQtaW4gYGludCgpYCdzIHNpZ25hdHVyZSBhbmQKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMxNTkzNTogQ2xhcmlmaWNhdGlvbiBvZiBgYXJncGFyc2VgIGRvY3MsIHJlOiBhZGRfYXJndW1lbnQoKSB0eXBlIGFuZAorICBkZWZhdWx0IGFyZ3VtZW50cy4gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxMTk2NDogRG9jdW1lbnQgYSBjaGFuZ2UgaW4gdjMuMiB0byB0aGUgYmVoYXZpb3Igb2YgdGhlIGluZGVudAorICBwYXJhbWV0ZXIgb2YganNvbiBlbmNvZGluZyBvcGVyYXRpb25zLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTUzNzg6IEZpeCBUb29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDI5LVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTYwNDY6IEZpeCBsb2FkaW5nIHNvdXJjZWxlc3MgbGVnYWN5IC5weW8gZmlsZXMuCisKKy0gSXNzdWUgIzE2MDYwOiBGaXggcmVmY291bnRpbmcgYnVnIHdoZW4gYF9fdHJ1bmNfXygpYCByZXR1cm5zIGFuIG9iamVjdCB3aG9zZQorICBgX19pbnRfXygpYCBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBgVXNlRm9yZWlnbkRURCgpYAorICBtZXRob2QgZG9lc24ndCByZXF1aXJlIGFuIGFyZ3VtZW50IGFnYWluLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMy1TZXAtMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1OTAwOiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gYFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKClgLgorCistIElzc3VlICMxNTkyNjogRml4IGNyYXNoIGFmdGVyIG11bHRpcGxlIHJlaW5pdGlhbGl6YXRpb25zIG9mIHRoZSBpbnRlcnByZXRlci4KKworLSBJc3N1ZSAjMTU4OTU6IEZpeCBGSUxFIHBvaW50ZXIgbGVhayBpbiBvbmUgZXJyb3IgYnJhbmNoIG9mCisgIGBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncygpYCB3aGVuIGZpbGVuYW1lIHBvaW50cyB0byBhIHB5Yy9weW8gZmlsZSwgY2xvc2VpdCBpcworICBmYWxzZSBhbiBhbmQgc2V0X21haW5fbG9hZGVyKCkgZmFpbHMuCisKKy0gRml4ZXMgZm9yIGEgZmV3IGNyYXNoIGFuZCBtZW1vcnkgbGVhayByZWdyZXNzaW9ucyBmb3VuZCBieSBDb3Zlcml0eS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNTg4MjogQ2hhbmdlIGBfZGVjaW1hbGAgdG8gYWNjZXB0IGFueSBjb2VmZmljaWVudCB0dXBsZSB3aGVuCisgIGNvbnN0cnVjdGluZyBpbmZpbml0aWVzLiBUaGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAgZGVjaW1hbC5weTogSW5maW5pdHkgY29lZmZpY2llbnRzIGFyZSB1bmRlZmluZWQgaW4gX2RlY2ltYWwgKGluIGFjY29yZGFuY2UKKyAgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbikuCisKKy0gSXNzdWUgIzE1OTI1OiBGaXggYSByZWdyZXNzaW9uIGluIGBlbWFpbC51dGlsYCB3aGVyZSB0aGUgYHBhcnNlZGF0ZSgpYCBhbmQKKyAgYHBhcnNlZGF0ZV90eigpYCBmdW5jdGlvbnMgZGlkIG5vdCByZXR1cm4gTm9uZSBhbnltb3JlIHdoZW4gdGhlIGFyZ3VtZW50IGNvdWxkCisgIG5vdCBiZSBwYXJzZWQuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTk3MzogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gY29tcGFyaW5nIGRhdGV0aW1lIHRpbWV6b25lCisgIG9iamVjdHMuCisKKy0gSXNzdWUgIzE1OTc3OiBGaXggbWVtb3J5IGxlYWsgaW4gTW9kdWxlcy9fc3NsLmMgd2hlbiB0aGUgZnVuY3Rpb24KKyAgX3NldF9ucG5fcHJvdG9jb2xzKCkgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aGFua3MgdG8gRGFuaWVsIFNvbW1lcm1hbm4uCisKKy0gSXNzdWUgIzE1OTY5OiBgZmF1bHRoYW5kbGVyYCBtb2R1bGU6IHJlbmFtZSBkdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bworICBkdW1wX3RyYWNlYmFja19sYXRlcigpIGFuZCBjYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KKyAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkuCisKKy0gX2RlY2ltYWwgbW9kdWxlOiB1c2Ugb25seSBDIDg5IHN0eWxlIGNvbW1lbnRzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwOS1TZXAtMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEzOTkyOiBUaGUgdHJhc2hjYW4gbWVjaGFuaXNtIGlzIG5vdyB0aHJlYWQtc2FmZS4gIFRoaXMgZWxpbWluYXRlcworICBzcG9yYWRpYyBjcmFzaGVzIGluIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvciBjaGFpbnMKKyAgcmFuIGNvbmN1cnJlbnRseSBhbmQgaW52b2x2ZWQgc3ViY2xhc3NlcyBvZiBidWlsdC1pbiBjb250YWluZXIgdHlwZXMuCisKKy0gSXNzdWUgIzE1Nzg0OiBNb2RpZnkgYE9TRXJyb3JgLl9fc3RyX18oKSB0byBiZXR0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbiBlcnJubworICBlcnJvciBudW1iZXJzIGFuZCBXaW5kb3dzIGVycm9yIG51bWJlcnMuCisKKy0gSXNzdWUgIzE1NzgxOiBGaXggdHdvIHNtYWxsIHJhY2UgY29uZGl0aW9ucyBpbiBpbXBvcnQncyBtb2R1bGUgbG9ja2luZy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNTg0NzogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSwgd2hpY2ggZGlkIG5vdCBhY2NlcHQgdHVwbGVzIGFzCisgIGFyZ3VtZW50IGxpc3RzIGFueW1vcmUuCisKKy0gSXNzdWUgIzE1ODI4OiBSZXN0b3JlIHN1cHBvcnQgZm9yIEMgZXh0ZW5zaW9ucyBpbiBgaW1wLmxvYWRfbW9kdWxlKClgLgorCistIElzc3VlICMxNTM0MDogRml4IGltcG9ydGluZyB0aGUgcmFuZG9tIG1vZHVsZSB3aGVuIGBgL2Rldi91cmFuZG9tYGAgY2Fubm90IGJlCisgIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KKworLSBJc3N1ZSAjMTA2NTA6IERlcHJlY2F0ZSB0aGUgd2F0Y2hleHAgcGFyYW1ldGVyIG9mIHRoZSBgRGVjaW1hbC5xdWFudGl6ZSgpYAorICBtZXRob2QuCisKKy0gSXNzdWUgIzE1Nzg1OiBNb2RpZnkgYHdpbmRvdy5nZXRfd2NoKClgIEFQSSBvZiB0aGUgY3Vyc2VzIG1vZHVsZTogcmV0dXJuIGEKKyAgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIGFuZCBhbiBpbnRlZ2VyIGZvciBzcGVjaWFsIGtleXMsIGluc3RlYWQgb2YgYWx3YXlzCisgIHJldHVybmluZyBhbiBpbnRlZ2VyLiBTbyBpdCBpcyBub3cgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggc3BlY2lhbCBrZXlzIGxpa2UKKyAga2V5cGFkIGtleXMuCisKKy0gSXNzdWUgIzE0MjIzOiBGaXggYHdpbmRvdy5hZGRjaCgpYCBvZiB0aGUgY3Vyc2VzIG1vZHVsZSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXJzCisgIGxpa2UgY3Vyc2VzLkFDU19ITElORTogdGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChpbnQpIGFuZCBhZGRjaChieXRlcykgaXMgbm93CisgIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZGNoKCkvbXZ3YWRkY2goKSAoYXMgaXQgd2FzIGRvbmUgaW4gUHl0aG9uIDMuMiksCisgIGluc3RlYWQgb2Ygd2FkZF93Y2goKS9tdndhZGRfd2NoKCkuIFRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goc3RyKSBpcyBzdGlsbAorICBjYWxsaW5nIHRoZSBDIGZ1bmN0aW9uIHdhZGRfd2NoKCkvbXZ3YWRkX3djaCgpIGlmIHRoZSBQeXRob24gY3Vyc2VzIGlzIGxpbmtlZAorICB0byBsaWJuY3Vyc2Vzdy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE1ODIyOiBSZWFsbHkgZW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQKKyAgKHJlcGxhY2VzIGZpeGVzIGZvciBJc3N1ZSAjMTU2NDUpLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1ODE0OiBUaGUgbWVtb3J5dmlldyBlbmhhbmNlbWVudHMgaW4gMy4zLjAgYWNjaWRlbnRhbGx5IHBlcm1pdHRlZCB0aGUKKyAgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnZpZXdzIGFuZCBtZW1vcnl2aWV3cyB3aXRoIG11bHRpLWJ5dGUgaXRlbQorICBmb3JtYXRzLiBUaGUgaW50ZW5kZWQgcmVzdHJpY3Rpb25zIGhhdmUgbm93IGJlZW4gZG9jdW1lbnRlZCAtIHRoZXkgd2lsbCBiZQorICBjb3JyZWN0bHkgZW5mb3JjZWQgaW4gMy4zLjEuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDI1LUF1Zy0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1NzM6IG1lbW9yeXZpZXcgY29tcGFyaXNvbnMgYXJlIG5vdyBwZXJmb3JtZWQgYnkgdmFsdWUgd2l0aCBmdWxsCisgIHN1cHBvcnQgZm9yIGFueSB2YWxpZCBzdHJ1Y3QgbW9kdWxlIGZvcm1hdCBkZWZpbml0aW9uLgorCistIElzc3VlICMxNTMxNjogV2hlbiBhbiBpdGVtIGluIHRoZSBmcm9tbGlzdCBmb3IgYF9faW1wb3J0X18oKWAgZG9lc24ndCBleGlzdCwKKyAgZG9uJ3QgcmFpc2UgYW4gZXJyb3IsIGJ1dCBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFzIHBhcnQgb2YgYW4gaW1wb3J0IGRvCisgIGxldCB0aGF0IHByb3BhZ2F0ZS4KKworLSBJc3N1ZSAjMTU3Nzg6IEVuc3VyZSB0aGF0IGBgc3RyKEltcG9ydEVycm9yKG1zZykpYGAgcmV0dXJucyBhIHN0ciBldmVuIHdoZW4KKyAgbXNnIGlzbid0IGEgc3RyLgorCistIElzc3VlICMyMDUxOiBTb3VyY2UgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIG9uY2UgYWdhaW4gY29ycmVjdGx5IGNvcGllZCB0bworICB0aGUgY2FjaGVkIGJ5dGVjb2RlIGZpbGUuIChUaGUgbWlncmF0aW9uIHRvIGltcG9ydGxpYiByZWludHJvZHVjZWQgdGhpcworICBwcm9ibGVtIGJlY2F1c2UgdGhlc2Ugd2FzIG5vIHJlZ3Jlc3Npb24gdGVzdC4gQSB0ZXN0IGhhcyBiZWVuIGFkZGVkIGFzIHBhcnQgb2YKKyAgdGhpcyBwYXRjaCkKKworLSBJc3N1ZSAjMTU3NjE6IEZpeCBjcmFzaCB3aGVuIGBgUFlUSE9ORVhFQ1VUQUJMRWBgIGlzIHNldCBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4gIFBhdGNoIGJ5CisgIFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIGBQeU9iamVjdF9Jc1RydWUoKWAgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKKyAgZXJyb3JzIGNvcnJlY3RseS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0ODQ2OiBgaW1wb3J0bGliLkZpbGVGaW5kZXJgIG5vdyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBkaXJlY3RvcnkKKyAgYmVpbmcgc2VhcmNoZWQgaXMgcmVtb3ZlZCBhZnRlciBhIHByZXZpb3VzIGltcG9ydCBhdHRlbXB0LgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMgY29tcGlsZWQKKyAgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyLgorCistIElzc3VlICMxMzA3MjogVGhlIGFycmF5IG1vZHVsZSdzICd1JyBmb3JtYXQgY29kZSBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZQorICByZW1vdmVkIGluIFB5dGhvbiA0LjAuCiAKIC0gSXNzdWUgIzE1NTQ0OiBGaXggRGVjaW1hbC5fX2Zsb2F0X18gdG8gd29yayB3aXRoIHBheWxvYWQtY2FycnlpbmcgTmFOcy4KIAotLSBJc3N1ZSAjMTUyNDk6IEJ5dGVzR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgbWFuZ2xlcyBGcm9tIGxpbmVzICh3aGVuCistIElzc3VlICMxNTc3NjogQWxsb3cgcHl2ZW52IHRvIHdvcmsgaW4gZXhpc3RpbmcgZGlyZWN0b3J5IHdpdGggLS1jbGVhbi4KKworLSBJc3N1ZSAjMTUyNDk6IGVtYWlsJ3MgQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KICAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgogCiAtIElzc3VlICMxNTc3NzogRml4IGEgcmVmbGVhayBpbiBfcG9zaXhzdWJwcm9jZXNzLgogCistIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgYGVtYWlsLnV0aWxzLmxvY2FsdGltZWAgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCisgIGNvcnJlY3RseSBoYW5kbGUgaGlzdG9yaWMgY2hhbmdlcyBpbiBVVEMgb2Zmc2V0cy4KKwogLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KICAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgogCi0tIElzc3VlICMxMzU3OTogc3RyaW5nLkZvcm1hdHRlciBub3cgdW5kZXJzdGFuZHMgdGhlICdhJyBjb252ZXJzaW9uIHNwZWNpZmllci4KKy0gSXNzdWUgIzEyNjQzOiBgY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGVgIG5vdyByZXNwZWN0cyBgc3lzLmV4Y2VwdGhvb2tgIHdoZW4KKyAgZGlzcGxheWluZyBleGNlcHRpb25zLiAgUGF0Y2ggYnkgQWFyb24gSWxlcy4KIAotLSBJc3N1ZSAjMTU3OTM6IFN0YWNrIGNvcnJ1cHRpb24gaW4gc3NsLlJBTkRfZWdkKCkuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxMzU3OTogYHN0cmluZy5Gb3JtYXR0ZXJgIG5vdyB1bmRlcnN0YW5kcyB0aGUgJ2EnIGNvbnZlcnNpb24gc3BlY2lmaWVyLgogCi0tIElzc3VlICMxNTU5NTogRml4IHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCi0gIGZvciBjZXJ0YWluIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorLSBJc3N1ZSAjMTU1OTU6IEZpeCBgYHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpYGAgZm9yIGNlcnRhaW4KKyAgbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCiAKIC0gSXNzdWUgIzE1NDc3OiBJbiBjbWF0aCBhbmQgbWF0aCBtb2R1bGVzLCBhZGQgd29ya2Fyb3VuZCBmb3IgcGxhdGZvcm1zIHdob3NlCiAgIHN5c3RlbS1zdXBwbGllZCBsb2cxcCBmdW5jdGlvbiBkb2Vzbid0IHJlc3BlY3Qgc2lnbnMgb2YgemVyb3MuCiAKKy0gSXNzdWUgIzE1NzE1OiBgaW1wb3J0bGliLl9faW1wb3J0X18oKWAgd2lsbCBzaWxlbmNlIGFuIEltcG9ydEVycm9yIHdoZW4gdGhlCisgIHVzZSBvZiBmcm9tbGlzdCBsZWFkcyB0byBhIGZhaWxlZCBpbXBvcnQuCisKKy0gSXNzdWUgIzE0NjY5OiBGaXggcGlja2xpbmcgb2YgY29ubmVjdGlvbnMgYW5kIHNvY2tldHMgb24gTWFjIE9TIFggYnkKKyAgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgorICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjIE9TIFguCisKIC0gSXNzdWUgIzExMDYyOiBGaXggYWRkaW5nIGEgbWVzc2FnZSBmcm9tIGZpbGUgdG8gQmFieWwgbWFpbGJveC4KIAotLSBJc3N1ZSAjMTU2NDY6IFByZXZlbnQgZXF1aXZhbGVudCBvZiBhIGZvcmsgYm9tYiB3aGVuIHVzaW5nCi0gIG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nIgotICBpZGlvbS4KKy0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZyBgbXVsdGlwcm9jZXNzaW5nYAorICBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlIGBgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJ2BgIGlkaW9tLgogCi0tIElzc3VlICMxNTQyNDogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4KLSAgUGF0Y2ggYnkgTHVkd2lnIEjDpGhuZS4KKy0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZSAoMy4zLjBiMgorICByZWdyZXNzaW9uKS4KKworQyBBUEkKKy0tLS0tCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUgYGpzb25gIG1vZHVsZSdzIHN0YW5kYXJkIGNvbXBsaWFuY2UuCisgIFBhdGNoIGJ5IENocmlzIFJlYmVydC4KKworLSBDcmVhdGUgYSAnQ29uY3VycmVudCBFeGVjdXRpb24nIHNlY3Rpb24gaW4gdGhlIGRvY3MsIGFuZCBzcGxpdCB1cCB0aGUKKyAgJ09wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMnIHNlY3Rpb24gdG8gdXNlIGEgbW9yZSB1c2VyLWNlbnRyaWMKKyAgY2xhc3NpZmljYXRpb24gc2NoZW1lIChzcGxpdHRpbmcgdGhlbSBhY3Jvc3MgdGhlIG5ldyBDRSBzZWN0aW9uLCBJUEMgYW5kIHRleHQKKyAgcHJvY2Vzc2luZykuIE9wZXJhdGluZyBzeXN0ZW0gbGltaXRhdG9ucyBjYW4gYmUgcmVmbGVjdGVkIHdpdGggdGhlIFNwaGlueAorICBgYDpwbGF0Zm9ybTpgYCB0YWcsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBhcyBwYXJ0IG9mIHRoZSBUYWJsZSBvZiBDb250ZW50cy4KKworLSBJc3N1ZSAjNDk2NjogQnJpbmcgdGhlIHNlcXVlbmNlIGRvY3MgdXAgdG8gZGF0ZSBmb3IgdGhlIFB5M2sgdHJhbnNpdGlvbiBhbmQKKyAgdGhlIG1hbnkgbGFuZ3VhZ2UgZW5oYW5jZW1lbnRzIHNpbmNlIHRoZXkgd2VyZSBvcmlnaW5hbCB3cml0dGVuLgorCistIFRoZSAicGF0aCBpbXBvcnRlciIgbWlzbm9tZXIgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBFcmljIFNub3cncworICBtb3JlLWF3a3dhcmQtYnV0LWF0LWxlYXN0LW5vdC13cm9uZyBzdWdnZXN0aW9uIG9mICJwYXRoIGJhc2VkIGZpbmRlciIgaW4gdGhlCisgIGltcG9ydCBzeXN0ZW0gcmVmZXJlbmNlIGRvY3MuCisKKy0gSXNzdWUgIzE1NjQwOiBEb2N1bWVudCBgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzE1NjMwOiBBZGQgYW4gZXhhbXBsZSBmb3IgImNvbnRpbnVlIiBzdG10IGluIHRoZSB0dXRvcmlhbC4gIFBhdGNoIGJ5CisgIERhbmllbCBFbGxpcy4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQorICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQgdGVzdHMgaW4KKyAgdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgorCistIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcgdHdvCisgIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUgb2YgdGVzdC4KKworLSBJc3N1ZSAjMTU3NDM6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtZXRob2QgdXNhZ2UgaW4gYHVybGxpYmAgdGVzdHMuIFBhdGNoIGJ5CisgIEplZmYgS251cHAuCisKKy0gSXNzdWUgIzE1NjE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGBqc29uYCBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkIGlucHV0CisgIGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgorCitCdWlsZAorLS0tLS0KKworLSBPdXRwdXQgbGliIGZpbGVzIGZvciBQR08gYnVpbGQgaW50byBQR08gZGlyZWN0b3J5LgorCistIFBpY2sgdXAgMzItYml0IGxhdW5jaGVyIGZyb20gUEdPIGRpcmVjdG9yeSBvbiA2NC1iaXQgUEdPIGJ1aWxkLgorCistIERyb3AgYGBQQ1xweXRob25fbnQuaGBgIGFzIGl0J3Mgbm90IHVzZWQuICBBZGQgaW5wdXQgZGVwZW5kZW5jeSBvbiBjdXN0b20KKyAgYnVpbGQgc3RlcC4KKworLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbCBhbWQ2NAorICBjb25maWd1cmF0aW9uLgorCistIEFkZCBtaXNzaW5nIFBHSS9QR08gY29uZmlndXJhdGlvbnMgZm9yIHB5d2xhdW5jaGVyLgorCistIElzc3VlICMxNTY0NTogRW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAxMi1BdWctMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NTY4OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiBgYHlpZWxkIGZyb21gYCB3aGVuIFN0b3BJdGVyYXRpb24gaXMKKyAgcmFpc2VkIGJ5IGEgY3VzdG9tIGl0ZXJhdG9yLgorCistIElzc3VlICMxMzExOTogYHN5cy5zdGRvdXRgIGFuZCBgc3lzLnN0ZGVycmAgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgorICBXaW5kb3dzLCBhcyBQeXRob24gMi4KKworLSBJc3N1ZSAjMTU1MzQ6IEZpeCB0aGUgZmFzdC1zZWFyY2ggZnVuY3Rpb24gZm9yIG5vbi1BU0NJSSBVbmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzE1NTA4OiBGaXggdGhlIGRvY3N0cmluZyBmb3IgYF9faW1wb3J0X18oKWAgdG8gaGF2ZSB0aGUgcHJvcGVyIGRlZmF1bHQKKyAgdmFsdWUgb2YgMCBmb3IgJ2xldmVsJyBhbmQgdG8gbm90IG1lbnRpb24gbmVnYXRpdmUgbGV2ZWxzIHNpbmNlIHRoZXkgYXJlIG5vdAorICBzdXBwb3J0ZWQuCisKKy0gSXNzdWUgIzE1NDI1OiBFbGltaW5hdGVkIHRyYWNlYmFjayBub2lzZSBmcm9tIG1vcmUgc2l0dWF0aW9ucyBpbnZvbHZpbmcKKyAgaW1wb3J0bGliLgorCistIElzc3VlICMxNDU3ODogU3VwcG9ydCBtb2R1bGVzIHJlZ2lzdGVyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkgYWdhaW4uCisKKy0gSXNzdWUgIzE1NDY2OiBTdG9wIHVzaW5nIFRZUEVfSU5UNjQgaW4gbWFyc2hhbCwgdG8gbWFrZSBpbXBvcnRsaWIuaCAoYW5kIG90aGVyCisgIGJ5dGUgY29kZSBmaWxlcykgZXF1YWwgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBzeXN0ZW1zLgorCistIElzc3VlICMxNjkyMzM1OiBNb3ZlIGluaXRpYWwgZXhjZXB0aW9uIGFyZ3MgYXNzaWdubWVudCB0bworICBgQmFzZUV4Y2VwdGlvbi5fX25ld19fKClgIHRvIGhlbHAgcGlja2xpbmcgb2YgbmFpdmUgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTI4MzQ6IEZpeCBgUHlCdWZmZXJfVG9Db250aWd1b3VzKClgIGZvciBub24tY29udGlndW91cyBhcnJheXMuCisKKy0gSXNzdWUgIzE1NDU2OiBGaXggY29kZSBgX19zaXplb2ZfXygpYCBhZnRlciAjMTIzOTkgY2hhbmdlLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KKworLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIGBQeU1vZHVsZV9DcmVhdGUoKWAgdGhhdCBjYXVzZWQgcmVmZXJlbmNlcyB0byBiZQorICBsZWFrZWQgb24gc29tZSBlcnJvciBwYXRocyBoYXMgYmVlbiBmaXhlZC4gIFBhdGNoIGJ5IEp1bGlhIExhd2FsbC4KKworLSBJc3N1ZSAjMTUzNjg6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIGJ5dGVjb2RlIGdlbmVyYXRpb24gdG8gYmUgbm9uLWRldGVybWluaXN0aWMKKyAgaGFzIGJlZW4gZml4ZWQuCisKKy0gSXNzdWUgIzE1MjAyOiBDb25zaXN0ZW50bHkgdXNlIHRoZSBuYW1lICJmb2xsb3dfc3ltbGlua3MiIGZvciBuZXcgcGFyYW1ldGVycworICBpbiBvcyBhbmQgc2h1dGlsIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTUzMTQ6IGBgX19tYWluX18uX19sb2FkZXJfX2BgIGlzIG5vdyBzZXQgY29ycmVjdGx5IGR1cmluZyBpbnRlcnByZXRlcgorICBzdGFydHVwLgorCistIElzc3VlICMxNTExMTogV2hlbiBhIG1vZHVsZSBpbXBvcnRlZCB1c2luZyAnZnJvbSBpbXBvcnQnIGhhcyBhbiBJbXBvcnRFcnJvcgorICBpbnNpZGUgaXRzZWxmLCBkb24ndCBtYXNrIHRoYXQgZmFjdCBiZWhpbmQgYSBnZW5lcmljIEltcG9ydEVycm9yIGZvciB0aGUKKyAgbW9kdWxlIGl0c2VsZi4KKworLSBJc3N1ZSAjMTUyOTM6IEFkZCBHQyBzdXBwb3J0IHRvIHRoZSBBU1QgYmFzZSBub2RlIHR5cGUuCisKKy0gSXNzdWUgIzE1MjkxOiBGaXggYSBtZW1vcnkgbGVhayB3aGVyZSBBU1Qgbm9kZXMgd2hlcmUgbm90IHByb3Blcmx5CisgIGRlYWxsb2NhdGVkLgorCistIElzc3VlICMxNTExMDogRml4IHRoZSB0cmFjZWJhY2tzIGdlbmVyYXRlZCBieSAiaW1wb3J0IHh4eCIgdG8gbm90IHNob3cgdGhlCisgIGltcG9ydGxpYiBzdGFjayBmcmFtZXMuCisKKy0gSXNzdWUgIzE1MDIwOiBUaGUgcHJvZ3JhbSBuYW1lIHVzZWQgdG8gc2VhcmNoIGZvciBQeXRob24ncyBwYXRoIGlzIG5vdworICAicHl0aG9uMyIgdW5kZXIgVW5peCwgbm90ICJweXRob24iLgorCistIElzc3VlICMxNTg5NzogemlwaW1wb3J0LmMgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUgb2YgZnNlZWsoKS4KKyAgUGF0Y2ggYnkgRmVsaXBlIENydXouCisKKy0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0aCwKKyAgcmV0dXJuIHRoZSBwcm9wZXIgZmFpbHVyZSByZXR1cm4gdmFsdWUgKDEpLiBQYXRjaCBjb250cmlidXRlZCBieSBKZWZmIEtudXBwLgorCistIElzc3VlICMxNTIyOTogQW4gYE9TRXJyb3JgIHN1YmNsYXNzIHdob3NlIF9faW5pdF9fIGRvZXNuJ3QgY2FsbCBiYWNrCisgIE9TRXJyb3IuX19pbml0X18gY291bGQgcHJvZHVjZSBpbmNvbXBsZXRlIGluc3RhbmNlcywgbGVhZGluZyB0byBjcmFzaGVzIHdoZW4KKyAgY2FsbGluZyBzdHIoKSBvbiB0aGVtLgorCistIElzc3VlIDE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgorICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIGBfX3NpemVvZl9fKClgIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkKKyAgTHVkd2lnIEjDpGhuZS4KKworLSBJc3N1ZSAjMTU1NzY6IEFsbG93IGV4dGVuc2lvbiBtb2R1bGVzIHRvIGFjdCBhcyBhIHBhY2thZ2UncyBfX2luaXRfXyBtb2R1bGUuCisKKy0gSXNzdWUgIzE1NTAyOiBIYXZlIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgd29yayBvbiBgc3lzLm1ldGFfcGF0aGAKKyAgaW5zdGVhZCBvZiBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLgorCistIElzc3VlICMxNTE2MzogUHlkb2Mgc2hvdWxkbid0IGxpc3QgX19sb2FkZXJfXyBhcyBtb2R1bGUgZGF0YS4KKworLSBJc3N1ZSAjMTU0NzE6IERvIG5vdCB1c2UgbXV0YWJsZSBvYmplY3RzIGFzIGRlZmF1bHRzIGZvcgorICBgaW1wb3J0bGliLl9faW1wb3J0X18oKWAuCisKKy0gSXNzdWUgIzE1NTU5OiBUbyBhdm9pZCBhIHByb2JsZW1hdGljIGZhaWx1cmUgbW9kZSB3aGVuIHBhc3NlZCB0byB0aGUgYnl0ZXMKKyAgY29uc3RydWN0b3IsIG9iamVjdHMgaW4gdGhlIGlwYWRkcmVzcyBtb2R1bGUgbm8gbG9uZ2VyIGltcGxlbWVudCBgX19pbmRleF9fKClgCisgICh0aGV5IHN0aWxsIGltcGxlbWVudCBgX19pbnRfXygpYCBhcyBhcHByb3ByaWF0ZSkuCisKKy0gSXNzdWUgIzE1NTQ2OiBGaXggaGFuZGxpbmcgb2YgcGF0aG9sb2dpY2FsIGlucHV0IGRhdGEgaW4gdGhlIHBlZWsoKSBhbmQKKyAgcmVhZDEoKSBtZXRob2RzIG9mIHRoZSBCWjJGaWxlLCBHemlwRmlsZSBhbmQgTFpNQUZpbGUgY2xhc3Nlcy4KIAogLSBJc3N1ZSAjMTMwNTI6IEZpeCBJRExFIGNyYXNoaW5nIHdoZW4gcmVwbGFjZSBzdHJpbmcgaW4gU2VhcmNoL1JlcGxhY2UgZGlhbG9nCi0gIGVuZGVkIHdpdGggJ1wnLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKyAgZW5kZWQgd2l0aCBgYFxgYC4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgogCi0tIElzc3VlICMxNTUzODogRml4IGNvbXBpbGF0aW9uIG9mIHRoZSBnZXRuYW1laW5mbygpIC8gZ2V0YWRkcmluZm8oKQotICBlbXVsYXRpb24gY29kZS4gIFBhdGNoIGJ5IFBoaWxpcHAgSGFnZW1laXN0ZXIuCistIElzc3VlICMxMjY1NTogSW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjdXN0b20gdHlwZSwgYG9zLnNjaGVkX2dldGFmZmluaXR5KClgIGFuZAorICBgb3Muc2NoZWRfc2V0YWZmaW5pdHkoKWAgbm93IHVzZSByZWd1bGFyIHNldHMgb2YgaW50ZWdlcnMgdG8gcmVwcmVzZW50IHRoZQorICBDUFVzIGEgcHJvY2VzcyBpcyByZXN0cmljdGVkIHRvLgorCistIElzc3VlICMxNTUzODogRml4IGNvbXBpbGF0aW9uIG9mIHRoZSBgc29ja2V0LmdldG5hbWVpbmZvKClgIC8KKyAgYHNvY2tldC5nZXRhZGRyaW5mbygpYCBlbXVsYXRpb24gY29kZS4gIFBhdGNoIGJ5IFBoaWxpcHAgSGFnZW1laXN0ZXIuCisKKy0gSXNzdWUgIzE1NTE5OiBQcm9wZXJseSBleHBvc2UgV2luZG93c1JlZ2lzdHJ5RmluZGVyIGluIGltcG9ydGxpYiAoYW5kIHVzZSB0aGUKKyAgY29ycmVjdCB0ZXJtIGZvciBpdCkuICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCisKKy0gSXNzdWUgIzE1NTAyOiBCcmluZyB0aGUgaW1wb3J0bGliIEFCQ3MgaW50byBsaW5lIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCisgIGltcG9ydCBwcm90b2NvbHMgZ2l2ZW4gUEVQIDQyMC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKworLSBJc3N1ZSAjMTU0OTk6IExhdW5jaGluZyBhIHdlYmJyb3dzZXIgaW4gVW5peCB1c2VkIHRvIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzLgorICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvbiBCYXJrb3Zza3kuCisKKy0gSXNzdWUgIzE1NDYzOiBUaGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0cnVuY2F0ZXMgc3RyaW5ncyB0byA1MDAgY2hhcmFjdGVycywKKyAgaW5zdGVhZCBvZiAxMDAsIHRvIGJlIGFibGUgdG8gZGlzcGxheSBsb25nIGZpbGUgcGF0aHMuCisKKy0gSXNzdWUgIzYwNTY6IE1ha2UgYG11bHRpcHJvY2Vzc2luZ2AgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZSBzb2NrZXRzIGl0CisgIHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KKworLSBJc3N1ZSAjMTUzNjQ6IEZpeCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCisKKy0gSXNzdWUgIzE1MDQxOiBVcGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTU0MTM6IGBvcy50aW1lcygpYCBoYWQgZGlzYXBwZWFyZWQgdW5kZXIgV2luZG93cy4KKworLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIGBzeXMuZ2V0c2l6ZW9mKClgIHRvCisgIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuICBJbml0aWFsCisgIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MjMyOiBXaGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGBlbWFpbC5HZW5lcmF0b3JgIG5vdyBjb3JyZWN0bHkKKyAgbWFuZ2xlcyBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggJ0Zyb20gJyB0aGF0IG9jY3VyIGluIGEgTUlNRSBwcmVhbWJsZSBvcgorICBlcGlsb2d1ZS4KKworLSBJc3N1ZSAjMTUwOTQ6IEluY29ycmVjdGx5IHBsYWNlZCAjZW5kaWYgaW4gX3RraW50ZXIuYy4gIFBhdGNoIGJ5IFNlcmhpeQorICBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzEzOTIyOiBgYXJncGFyc2VgIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIgYWZ0ZXIKKyAgdGhlIGZpcnN0IG9uZS4KKworLSBJc3N1ZSAjMTIzNTM6IGBhcmdwYXJzZWAgbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgorCistIElzc3VlICMxMDAxNywgaXNzdWUgIzE0OTk4OiBGaXggVHlwZUVycm9yIHVzaW5nIHBwcmludCBvbiBkaWN0aW9uYXJpZXMgd2l0aAorICB1c2VyLWRlZmluZWQgdHlwZXMgYXMga2V5cyBvciBvdGhlciB1bm9yZGVyYWJsZSBrZXlzLgorCistIElzc3VlICMxNTM5NzogYGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpYCBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gaW1wb3J0bGliIHZpYQorICBhIG5ldyBgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKWAgQVBJLgorCistIElzc3VlICMxNDYzNTogYHRlbG5ldGxpYmAgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUgdG8KKyAgYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KKworLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzLgorCistIElzc3VlICMxNTM0MzogcGtndXRpbCBub3cgaW5jbHVkZXMgYW4gaXRlcl9pbXBvcnRlcl9tb2R1bGVzIGltcGxlbWVudGF0aW9uIGZvcgorICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgKHNpbWlsYXIgdG8gdGhlIHdheSBpdCBhbHJlYWR5IGhhbmRsZWQKKyAgemlwaW1wb3J0LnppcGltcG9ydGVyKS4KKworLSBJc3N1ZSAjMTUzMTQ6IHJ1bnB5IG5vdyBzZXRzIF9fbWFpbl9fLl9fbG9hZGVyX18gY29ycmVjdGx5LgorCistIElzc3VlICMxNTM1NzogVGhlIGltcG9ydCBlbXVsYXRpb24gaW4gcGtndXRpbCBpcyBub3cgZGVwcmVjYXRlZC4gcGtndXRpbCB1c2VzCisgIGltcG9ydGxpYiBpbnRlcm5hbGx5IHJhdGhlciB0aGFuIHRoZSBlbXVsYXRpb24uCisKKy0gSXNzdWUgIzE1MjMzOiBQeXRob24gbm93IGd1YXJhbnRlZXMgdGhhdCBjYWxsYWJsZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBhdGV4aXQKKyAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGluIGEgZGV0ZXJtaW5pc3RpYyBvcmRlci4KKworLSBJc3N1ZSAjMTUyMzg6IGBzaHV0aWwuY29weXN0YXQoKWAgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCisKKy0gSXNzdWUgIzE1MjMwOiBydW5weS5ydW5fcGF0aCBub3cgY29ycmVjdGx5IHNldHMgX19wYWNrYWdlX18gYXMgZGVzY3JpYmVkIGluCisgIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNTMxNTogU3VwcG9ydCBWUyAyMDEwIGluIGRpc3R1dGlscyBjeWd3aW5jb21waWxlci4KKworLSBJc3N1ZSAjMTUyOTQ6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcGtndXRpbC5leHRlbmRfcGF0aCgpJ3MgaGFuZGxpbmcgb2YgbmVzdGVkCisgIG5hbWVzcGFjZSBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMTUwNTY6IGBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKWAgYW5kIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgcmFpc2UKKyAgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBzZXQgdG8gTm9uZS4KKworLSBJc3N1ZSAjMTUyNTY6IEdyYW1tYXRpY2FsIG1pc3Rha2UgaW4gZXhjZXB0aW9uIHJhaXNlZCBieSBgaW1wLmZpbmRfbW9kdWxlKClgLgorCistIElzc3VlICM1OTMxOiBgd3NnaXJlZmAgZW52aXJvbiB2YXJpYWJsZSBTRVJWRVJfU09GVFdBUkUgd2lsbCBzcGVjaWZ5IGFuCisgIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRlcm0gbGlrZSBDUHl0aG9uLCBKeXRob24gaW5zdGVhZCBvZiBnZW5lcmljICJQeXRob24iLgorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJtYXhfYnVmZmVyX3NpemUiIG9mIEJ1ZmZlcmVkV3JpdGVyIGFuZAorICBCdWZmZXJlZFJXUGFpciwgZnJvbSB0aGUgaW8gbW9kdWxlLgorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJ2ZXJzaW9uIiBvZiBgYXJncGFyc2UuQXJndW1lbnRQYXJzZXJgLgorCistIElzc3VlICMxNDgxNDogSW1wbGVtZW50IG1vcmUgY29uc2lzdGVudCBvcmRlcmluZyBhbmQgc29ydGluZyBiZWhhdmlvdXIgZm9yCisgIGlwYWRkcmVzcyBvYmplY3RzLgorCistIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2AgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgorICBjb21wYXJlZCB0byBhcmJpdHJhcnkgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhaXNpbmcgVHlwZUVycm9yLgorCistIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nIGRlY2xhcmF0aW9uLgorCistIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2Agbm93IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgd2hlbgorICBjb25zdHJ1Y3RpbmcgaW5zdGFuY2VzIGRpcmVjdGx5IChjaGFuZ2VzIHBlcm1pdHRlZCBkdXJpbmcgYmV0YSBkdWUgdG8KKyAgcHJvdmlzaW9uYWwgQVBJIHN0YXR1cykuCisKKy0gSXNzdWUgIzE1MjQ3OiBgaW8uRmlsZUlPYCBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IKKyAgcG9pbnRpbmcgdG8gYSBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE1MjYxOiBTdG9wIG9zLnN0YXQoZmQpIGNyYXNoaW5nIG9uIFdpbmRvd3Mgd2hlbiBmZCBub3Qgb3Blbi4KKworLSBJc3N1ZSAjMTUxNjY6IEltcGxlbWVudCBgaW1wLmdldF90YWcoKWAgdXNpbmcgYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgLgorCistIElzc3VlICMxNTIxMDogQ2F0Y2ggS2V5RXJyb3Igd2hlbiBgaW1wb3J0bGliLl9faW5pdF9fKClgIGNhbid0IGZpbmQKKyAgX2Zyb3plbl9pbXBvcnRsaWIgaW4gc3lzLm1vZHVsZXMsIG5vdCBJbXBvcnRFcnJvci4KKworLSBJc3N1ZSAjMTUwMzA6IGBpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyYCBub3cgc3VwcG9ydHMgdGhlIG5ldyBzb3VyY2Ugc2l6ZQorICBoZWFkZXIgZmllbGQgaW4gLnB5YyBmaWxlcy4KKworLSBJc3N1ZSAjNTM0NjogUHJlc2VydmUgcGVybWlzc2lvbnMgb2YgbWJveCwgTU1ERiBhbmQgQmFieWwgbWFpbGJveCBmaWxlcyBvbgorICBmbHVzaCgpLgorCistIElzc3VlICMxMDU3MTogRml4IHRoZSAiLS1zaWduIiBvcHRpb24gb2YgZGlzdHV0aWxzJyB1cGxvYWQgY29tbWFuZC4gIFBhdGNoIGJ5CisgIEpha3ViIFdpbGsuCisKKy0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIgY3JlYXRlZCBhbmQKKyAgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuIG1ib3gsIE1NREYgb3IgQmFieWwKKyAgbWFpbGJveC4KKworLSBJc3N1ZSAxMDkyNDogRml4ZWQgYGNyeXB0Lm1rc2FsdCgpYCB0byB1c2UgYSBSTkcgdGhhdCBpcyBzdWl0YWJsZSBmb3IKKyAgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlLgorCistIElzc3VlICMxNTE4NDogRW5zdXJlIGNvbnNpc3RlbnQgcmVzdWx0cyBvZiBPUyBYIGNvbmZpZ3VyYXRpb24gdGFpbG9yaW5nIGZvcgorICB1bml2ZXJzYWwgYnVpbGRzIGJ5IGZhY3RvcmluZyBvdXQgY29tbW9uIE9TIFgtc3BlY2lmaWMgY3VzdG9taXphdGlvbnMgZnJvbQorICBzeXNjb25maWcsIGRpc3R1dGlscy5zeXNjb25maWcsIGRpc3R1dGlscy51dGlsLCBhbmQgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIKKyAgaW50byBhIG5ldyBtb2R1bGUgX29zeF9zdXBwb3J0LgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTU2MTA6IGBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCgpYCBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgorCistIElzc3VlICMxNTE2OSwgaXNzdWUgIzE0NTk5OiBTdHJpcCBvdXQgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGFuZAorICB1c2VkIHRoZSBQeXRob24gY29kZSBpbnN0ZWFkLiBMZWFkcyB0byBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdCgpIHRvIG5vdAorICB0cnkgdG8gaW5mZXIgdGhlIHNvdXJjZSBwYXRoIGZyb20gdGhlIGJ5dGVjb2RlIHBhdGggYXMKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgZG9lcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzY0OTM6IEFuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMgb2YKKyAgdHlwZSBgY3R5cGVzLmNfdWludDMyYCBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICMxNTE5NDogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjExIHJlbGVhc2UuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNTQ1ODogcHl0aG9uLWNvbmZpZyBnZXRzIGEgbmV3IG9wdGlvbiAtLWNvbmZpZ2RpciB0byBwcmludCB0aGUgJExJQlBMCisgIHZhbHVlLgorCistIE1vdmUgaW1wb3J0bGliLnRlc3QuYmVuY2htYXJrIHRvIFRvb2xzL2ltcG9ydGJlbmNoLgorCistIElzc3VlICMxMjYwNTogVGhlIGdkYiBob29rcyBmb3IgZGVidWdnaW5nIENQeXRob24gKHdpdGhpbiBUb29scy9nZGIpIGhhdmUgYmVlbgorICBlbmhhbmNlZCB0byBzaG93IGluZm9ybWF0aW9uIG9uIG1vcmUgQyBmcmFtZXMgcmVsZXZhbnQgdG8gQ1B5dGhvbiB3aXRoaW4gdGhlCisgICJweS1idCIgYW5kICJweS1idC1mdWxsIiBjb21tYW5kczoKKworICAqIEMgZnJhbWVzIHRoYXQgYXJlIHdhaXRpbmcgb24gdGhlIEdJTAorICAqIEMgZnJhbWVzIHRoYXQgYXJlIGdhcmJhZ2UtY29sbGVjdGluZworICAqIEMgZnJhbWVzIHRoYXQgYXJlIGR1ZSB0byB0aGUgaW52b2NhdGlvbiBvZiBhIFB5Q0Z1bmN0aW9uCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1Mjk1OiBSZW9yZ2FuaXplIGFuZCByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbXBvcnQgc3lzdGVtLgorCistIElzc3VlICMxNTIzMDogQ2xlYXJseSBkb2N1bWVudCBzb21lIG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgcnVucHkgbW9kdWxlIGFuZAorICBudWRnZSByZWFkZXJzIHRvd2FyZHMgaW1wb3J0bGliIHdoZW4gYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzE1MDUzOiBDb3B5IFB5dGhvbiAzLjMgaW1wb3J0IGxvY2sgY2hhbmdlIG5vdGljZSB0byBhbGwgcmVsZXZhbnQKKyAgZnVuY3Rpb25zIGluIGltcCBpbnN0ZWFkIG9mIGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgcmVsZXZhbnQgc2VjdGlvbi4KKworLSBJc3N1ZSAjMTUyODg6IExpbmsgdG8gdGhlIHRlcm0gImxvYWRlciIgaW4gbm90ZXMgaW4gcGtndXRpbCBhYm91dCBob3cgdGhpbmdzCisgIHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQgaW4gUHl0aG9uIDMuMyBhbmQgbWFyayB0aGUgcmVxdWlzaXRlIGZ1bmN0aW9ucyBhcworICAiY2hhbmdlZCIgc2luY2UgdGhleSB3aWxsIG5vIGxvbmdlciB3b3JrIHdpdGggbW9kdWxlcyBkaXJlY3RseSBpbXBvcnRlZCBieQorICBpbXBvcnQgaXRzZWxmLgorCistIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBgZXhlYygpYCBvcgorICBgZXhlY2ZpbGUoKWAuCisKKy0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGBmaWxlY21wLmRpcmNtcCgpYCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCisgIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgYF9fc2l6ZW9mX18oKWAgdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nIHRlc3RzCisgIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTUxNjg6IE1vdmUgYGltcG9ydGxpYi50ZXN0YCB0byBgdGVzdC50ZXN0X2ltcG9ydGxpYmAuCisKKy0gSXNzdWUgIzE1MDkxOiBSZWFjdGl2YXRlIGEgdGVzdCBvbiBVTklYIHdoaWNoIHdhcyBmYWlsaW5nIHRoYW5rcyB0byBhCisgIGZvcmdvdHRlbiBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIGNhbGwuCisKKy0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cy4KKworLSBJc3N1ZSAjMTUzMDA6IEVuc3VyZSB0aGUgdGVtcG9yYXJ5IHRlc3Qgd29ya2luZyBkaXJlY3RvcmllcyBhcmUgaW4gdGhlIHNhbWUKKyAgcGFyZW50IGZvbGRlciB3aGVuIHJ1bm5pbmcgdGVzdHMgaW4gbXVsdGlwcm9jZXNzIG1vZGUgZnJvbSBhIFB5dGhvbiBidWlsZC4KKyAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzE1Mjg0OiBTa2lwIHtzZW5kLHJlY3Z9bXNnIHRlc3RzIGluIHRlc3Rfc29ja2V0IHdoZW4gSVB2NiBpcyBub3QKKyAgZW5hYmxlZC4gUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIElzc3VlICMxNTI3NzogRml4IGEgcmVzb3VyY2UgbGVhayBpbiBzdXBwb3J0LnB5IHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4gIFBhdGNoCisgIGJ5IEJyaWFuIEJyYXppbC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzExNzE1OiBGaXggbXVsdGlhcmNoIGRldGVjdGlvbiB3aXRob3V0IGhhdmluZyBEZWJpYW4gZGV2ZWxvcG1lbnQgdG9vbHMKKyAgKGRwa2ctZGV2KSBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzE1MDM3OiBCdWlsZCBPUyBYIGluc3RhbGxlcnMgd2l0aCBsb2NhbCBjb3B5IG9mIG5jdXJzZXMgNS45IGxpYnJhcmllcworICB0byBhdm9pZCBjdXJzZXMudW5nZXRfd2NoIGJ1ZyBwcmVzZW50IGluIG9sZGVyIHZlcnNpb25zIG9mIG5jdXJzZXMgc3VjaCBhcworICB0aG9zZSBzaGlwcGVkIHdpdGggT1MgWC4KKworLSBJc3N1ZSAjMTU1NjA6IEZpeCBidWlsZGluZyBfc3FsaXRlMyBleHRlbnNpb24gb24gT1MgWCB3aXRoIGFuIFNESy4gIEFsc28sIGZvcgorICBPUyBYIGluc3RhbGxlcnMsIGVuc3VyZSBjb25zaXN0ZW50IHNxbGl0ZTMgYmVoYXZpb3IgYW5kIGZlYXR1cmUgYXZhaWxhYmlsaXR5CisgIGJ5IGJ1aWxkaW5nIGEgbG9jYWwgY29weSBvZiBsaWJzcWxpdGUzIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGUgd2lkZSByYW5nZQorICBvZiB2ZXJzaW9ucyBzdXBwbGllZCB3aXRoIHZhcmlvdXMgT1MgWCByZWxlYXNlcy4KKworLSBJc3N1ZSAjODg0NzogRGlzYWJsZSBDT01EQVQgZm9sZGluZyBpbiBXaW5kb3dzIFBHTyBidWlsZHMuCisKKy0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgorCistIElzc3VlICMxNTQzMTogQWRkIF9mcmVlemVfaW1wb3J0bGliIHByb2plY3QgdG8gcmVnZW5lcmF0ZSBpbXBvcnRsaWIuaCBvbgorICBXaW5kb3dzLiBQYXRjaCBieSBLcmlzdGrDoW4gVmFsdXIgSsOzbnNzb24uCisKKy0gSXNzdWUgIzE0MTk3OiBGb3IgT1MgWCBmcmFtZXdvcmsgYnVpbGRzLCBlbnN1cmUgbGlua3MgdG8gdGhlIHNoYXJlZCBsaWJyYXJ5CisgIGFyZSBjcmVhdGVkIHdpdGggdGhlIHByb3BlciBBQkkgc3VmZml4LgorCistIElzc3VlICMxNDMzMDogRm9yIGNyb3NzIGJ1aWxkcywgZG9uJ3QgdXNlIGhvc3QgcHl0aG9uLCB1c2UgaG9zdCBzZWFyY2ggcGF0aHMKKyAgZm9yIGhvc3QgY29tcGlsZXIuCisKKy0gSXNzdWUgIzE1MjM1OiBBbGxvdyBCZXJrbGV5IERCIHZlcnNpb25zIHVwIHRvIDUuMyB0byBidWlsZCB0aGUgZGJtIG1vZHVsZS4KKworLSBJc3N1ZSAjMTUyNjg6IFNlYXJjaCBjdXJzZXMuaCBpbiAvdXNyL2luY2x1ZGUvbmN1cnNlc3cuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQmV0YSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyNy1KdW4tMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gRml4IGEgKG1vc3QgbGlrZWx5KSB2ZXJ5IHJhcmUgbWVtb3J5IGxlYWsgd2hlbiBjYWxsaW5nIG1haW4oKSBhbmQgbm90IGJlaW5nCisgIGFibGUgdG8gZGVjb2RlIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50LgorCistIElzc3VlICMxNDgxNTogVXNlIFB5X3NzaXplX3QgaW5zdGVhZCBvZiBsb25nIGZvciB0aGUgb2JqZWN0IGhhc2gsIHRvCisgIHByZXNlcnZlIGFsbCA2NCBiaXRzIG9mIGhhc2ggb24gV2luNjQuCisKKy0gSXNzdWUgIzEyMjY4OiBGaWxlIHJlYWRsaW5lLCByZWFkbGluZXMgYW5kIHJlYWQoKSBvciByZWFkYWxsKCkgbWV0aG9kcworICBubyBsb25nZXIgbG9zZSBkYXRhIHdoZW4gYW4gdW5kZXJseWluZyByZWFkIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkLgorICBJT0Vycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgZHVlIHRvIGEgcmVhZCBzeXN0ZW0gY2FsbCByZXR1cm5pbmcgRUlOVFIKKyAgZnJvbSB3aXRoaW4gdGhlc2UgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTE2MjY6IEFkZCBfU2l6ZVQgZnVuY3Rpb25zIHRvIHN0YWJsZSBBQkkuCisKKy0gSXNzdWUgIzE1MTQ2OiBBZGQgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE1MTQyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgaW5zdGFuY2VzIG9mIHR5cGVzCisgIGNyZWF0ZWQgdXNpbmcgUHlUeXBlX0Zyb21TcGVjKCkuCisKKy0gSXNzdWUgIzE1MDQyOiBBZGQgUHlTdGF0ZV9BZGRNb2R1bGUgYW5kIFB5U3RhdGVfUmVtb3ZlTW9kdWxlLiBBZGQgdmVyc2lvbgorICBndWFyZCBmb3IgUHlfTElNSVRFRF9BUEkgYWRkaXRpb25zLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzEwMDUzOiBEb24ndCBjbG9zZSBGRHMgd2hlbiBGaWxlSU8uX19pbml0X18gZmFpbHMuIExvb3NlbHkgYmFzZWQgb24KKyAgdGhlIHdvcmsgYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzE1MDk2OiBSZW1vdmVkIHN1cHBvcnQgZm9yIHVyJycgYXMgdGhlIHJhdyBub3RhdGlvbiBpc24ndAorICBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIueCdzIHJhdyB1bmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzNzgzOiBHZW5lcmF0b3Igb2JqZWN0cyBub3cgdXNlIHRoZSBpZGVudGlmaWVyIEFQSXMgaW50ZXJuYWxseQorCistIElzc3VlICMxNDg3NDogUmVzdG9yZSBjaGFybWFwIGRlY29kaW5nIHNwZWVkIHRvIHByZS1QRVAgMzkzIGxldmVscy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUwMjY6IHV0Zi0xNiBlbmNvZGluZyBpcyBub3cgc2lnbmlmaWNhbnRseSBmYXN0ZXIgKHVwIHRvIDEweCkuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzExMDIyOiBvcGVuKCkgYW5kIGlvLlRleHRJT1dyYXBwZXIgYXJlIG5vdyBjYWxsaW5nCisgIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgaW5zdGVhZCBvZiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorICBpbiB0ZXh0IG1vZGUgaWYgdGhlIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQuIERvbid0IGNoYW5nZSB0ZW1wb3JhcnkgdGhlCisgIGxvY2FsZSBlbmNvZGluZyB1c2luZyBsb2NhbGUuc2V0bG9jYWxlKCksIHVzZSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcKKyAgaW5zdGVhZCBvZiB0aGUgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzE0NjczOiBBZGQgRXJpYyBTbm93J3Mgc3lzLmltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxNTAzODogT3B0aW1pemUgcHl0aG9uIExvY2tzIG9uIFdpbmRvd3MuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTYzMDU6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvY2N1cnJpbmcgd2hlbiBpbnRlcnJ1cHRpbmcKKyAgbWF0aC5mYWN0b3JpYWwuCiAKIC0gSXNzdWUgIzk4MDM6IERvbid0IGNsb3NlIElETEUgb24gc2F2aW5nIGlmIGJyZWFrcG9pbnQgaXMgb3Blbi4KICAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCkBAIC0yNTcsNjMgKzkxMSwxNTAgQEAKIC0gSXNzdWUgIzE1NDg3OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBidWZmZXJlZCBJL08gb2JqZWN0cy4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjNjA1NjogTWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZQotICBzb2NrZXRzIGl0IHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KKy0gSXNzdWUgIzE1NTE0OiBDb3JyZWN0IF9fc2l6ZW9mX18gc3VwcG9ydCBmb3IgY3B1X3NldC4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTUwNDE6IHVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTUxODc6IEJ1Z2ZpeDogcmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB0ZXN0X3NodXRpbCB3YXMgbGVhdmluZworICBiZWhpbmQuCiAKLS0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBzeXMuZ2V0c2l6ZW9mIHRvCi0gIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuCi0gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE1MTc3OiBBZGRlZCBkaXJfZmQgcGFyYW1ldGVyIHRvIG9zLmZ3YWxrKCkuCiAKLS0gSXNzdWUgIzE1MjMyOiB3aGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGVtYWlsLkdlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMKLSAgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IgZXBpbG9ndWUuCistIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KKyAgb2Ygb3MubGlzdGRpcigpLgogCi0tIElzc3VlICMxMzkyMjogYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhcgotICBhZnRlciB0aGUgZmlyc3Qgb25lLgorLSBJc3N1ZSAjMTUwNjE6IFJlLWltcGxlbWVudGVkIGhtYWMuY29tcGFyZV9kaWdlc3QoKSBpbiBDIHRvIHByZXZlbnQgZnVydGhlcgorICB0aW1pbmcgYW5hbHlzaXMgYW5kIHRvIHN1cHBvcnQgYWxsIGJ1ZmZlciBwcm90b2NvbCBhd2FyZSBvYmplY3RzIGFzIHdlbGwgYXMKKyAgQVNDSUkgb25seSBzdHIgaW5zdGFuY2VzIHNhZmVseS4KIAotLSBJc3N1ZSAjMTIzNTM6IGFyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKy0gSXNzdWUgIzE1MTY0OiBDaGFuZ2UgcmV0dXJuIHZhbHVlIG9mIHBsYXRmb3JtLnVuYW1lKCkgZnJvbSBhCisgIHBsYWluIHR1cGxlIHRvIGEgY29sbGVjdGlvbnMubmFtZWR0dXBsZS4KIAotLSBJc3N1ZXMgIzEwMDE3IGFuZCAjMTQ5OTg6IEZpeCBUeXBlRXJyb3IgdXNpbmcgcHByaW50IG9uIGRpY3Rpb25hcmllcyB3aXRoCi0gIHVzZXItZGVmaW5lZCB0eXBlcyBhcyBrZXlzIG9yIG90aGVyIHVub3JkZXJhYmxlIGtleXMuCistIFN1cHBvcnQgTWFnZWlhIExpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCiAKLS0gSXNzdWUgIzE0NjM1OiB0ZWxuZXRsaWIgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUKLSAgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KKy0gSXNzdWUgIzExNjc4OiBTdXBwb3J0IEFyY2ggbGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KIAotLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzCistIElzc3VlICMxNTExODogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBvcy51bmFtZSgpIGFuZCBvcy50aW1lcygpIGZyb20KKyAgcGxhaW4gdHVwbGVzIHRvIGltbXV0YWJsZSBpdGVyYWJsZSBvYmplY3RzIHdpdGggbmFtZWQgYXR0cmlidXRlcworICAoc3RydWN0c2VxIG9iamVjdHMpLgogCi0tIElzc3VlICMxNTIzMDogcnVucHkucnVuX3BhdGggbm93IGNvcnJlY3RseSBzZXRzIF9fcGFja2FnZV9fIGFzIGRlc2NyaWJlZAotICBpbiB0aGUgZG9jdW1lbnRhdGlvbgorLSBTcGVlZCB1cCBfZGVjaW1hbCBieSBhbm90aGVyIDEwLTE1JSBieSBjYWNoaW5nIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICB0aGF0IHdhcyBsYXN0IGFjY2Vzc2VkLiBJbiB0aGUgcGkgYmVuY2htYXJrICg2NC1iaXQgcGxhdGZvcm0sIHByZWM9OSksCisgIF9kZWNpbWFsIGlzIG5vdyBvbmx5IDEuNXggc2xvd2VyIHRoYW4gZmxvYXQuCiAKLS0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcKLSAgZGVjbGFyYXRpb24uCistIFJlbW92ZSB0aGUgcGFja2FnaW5nIG1vZHVsZSwgd2hpY2ggaXMgbm90IHJlYWR5IGZvciBwcmltZSB0aW1lLgogCi0tIElzc3VlICMxNTI0NzogRmlsZUlPIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvcgotICBwb2ludGluZyB0byBhIGRpcmVjdG9yeS4KKy0gSXNzdWUgIzE1MTU0OiBBZGQgImRpcl9mZCIgcGFyYW1ldGVyIHRvIG9zLnJtZGlyLCByZW1vdmUgInJtZGlyIgorICBwYXJhbWV0ZXIgZnJvbSBvcy5yZW1vdmUgLyBvcy51bmxpbmsuCiAKLS0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3gKLSAgZmlsZXMgb24gZmx1c2goKS4KKy0gSXNzdWUgIzQ0ODk6IEFkZCBhIHNodXRpbC5ybXRyZWUgdGhhdCBpc24ndCBzdXNjZXB0aWJsZSB0byBzeW1saW5rIGF0dGFja3MuCisgIEl0IGlzIHVzZWQgYXV0b21hdGljYWxseSBvbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0aGUgbmVjZXNzYXJ5IG9zLm9wZW5hdCgpCisgIGFuZCBvcy51bmxpbmthdCgpIGZ1bmN0aW9ucy4gTWFpbiBjb2RlIGJ5IE1hcnRpbiB2b24gTMO2d2lzLgogCi0tIElzc3VlICMxMDU3MTogRml4IHRoZSAiLS1zaWduIiBvcHRpb24gb2YgZGlzdHV0aWxzJyB1cGxvYWQgY29tbWFuZC4KLSAgUGF0Y2ggYnkgSmFrdWIgV2lsay4KKy0gSXNzdWUgIzE1MTU2OiBIVE1MUGFyc2VyIG5vdyB1c2VzIHRoZSBuZXcgImh0bWwuZW50aXRpZXMuaHRtbDUiIGRpY3Rpb25hcnkuCiAKLS0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIKLSAgY3JlYXRlZCBhbmQgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuCi0gIG1ib3gsIE1NREYgb3IgQmFieWwgbWFpbGJveC4KKy0gSXNzdWUgIzExMTEzOiBhZGQgYSBuZXcgImh0bWw1IiBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG5hbWVkIGNoYXJhY3RlcgorICByZWZlcmVuY2VzIGRlZmluZWQgYnkgdGhlIEhUTUw1IHN0YW5kYXJkIGFuZCB0aGUgZXF1aXZhbGVudCBVbmljb2RlCisgIGNoYXJhY3RlcihzKSB0byB0aGUgaHRtbC5lbnRpdGllcyBtb2R1bGUuCisKKy0gSXNzdWUgIzE1MTE0OiB0aGUgc3RyaWN0IG1vZGUgb2YgSFRNTFBhcnNlciBhbmQgdGhlIEhUTUxQYXJzZUVycm9yIGV4Y2VwdGlvbgorICBhcmUgZGVwcmVjYXRlZCBub3cgdGhhdCB0aGUgcGFyc2VyIGlzIGFibGUgdG8gcGFyc2UgaW52YWxpZCBtYXJrdXAuCisKKy0gSXNzdWUgIzM2NjU6IFx1IGFuZCBcVSBlc2NhcGVzIGFyZSBub3cgc3VwcG9ydGVkIGluIHVuaWNvZGUgcmVndWxhcgorICBleHByZXNzaW9ucy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MTUzOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyB0byBzaW1wbGlmeSB3aGl0ZSBib3gKKyAgdGVzdGluZyBvZiBnZW5lcmF0b3Igc3RhdGUgdXBkYXRlcworCistIElzc3VlICMxMzA2MjogQWRkZWQgaW5zcGVjdC5nZXRjbG9zdXJldmFycyB0byBzaW1wbGlmeSB0ZXN0aW5nIHN0YXRlZnVsCisgIGNsb3N1cmVzCisKKy0gSXNzdWUgIzExMDI0OiBGaXhlcyBhbmQgYWRkaXRpb25hbCB0ZXN0cyBmb3IgVGltZTJJbnRlcm5hbGRhdGUuCisKKy0gSXNzdWUgIzE0NjI2OiBMYXJnZSByZWZhY3RvcmluZyBvZiBmdW5jdGlvbnMgLyBwYXJhbWV0ZXJzIGluIHRoZSBvcyBtb2R1bGUuCisgIE1hbnkgZnVuY3Rpb25zIG5vdyBzdXBwb3J0ICJkaXJfZmQiIGFuZCAiZm9sbG93X3N5bWxpbmtzIiBwYXJhbWV0ZXJzOworICBzb21lIGFsc28gc3VwcG9ydCBhY2NlcHRpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgaW4gcGxhY2Ugb2Ygb2YgYSBwYXRoCisgIHN0cmluZy4gIEFkZGVkIG9zLnN1cHBvcnRfKiBjb2xsZWN0aW9ucyBhcyBMQllMIGhlbHBlcnMuICBSZW1vdmVkIG1hbnkKKyAgZnVuY3Rpb25zIG9ubHkgcHJldmlvdXNseSBzZWVuIGluIDMuMyBhbHBoYSByZWxlYXNlcyAob2Z0ZW4gc3RhcnRpbmcgd2l0aAorICAiZiIgb3IgImwiLCBvciBlbmRpbmcgd2l0aCAiYXQiKS4gIE9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFNlcmhpeSBTdG9yY2hha2E7CisgIGltcGxlbWVudGVkIGJ5IExhcnJ5IEhhc3RpbmdzLgorCistIElzc3VlICMxNTAwODogSW1wbGVtZW50IFBFUCAzNjIgIlNpZ25hdHVyZSBPYmplY3RzIi4KKyAgUGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWU6ICMxNTEzODogYmFzZTY0LnVybHNhZmVfe2VuLGRlfWNvZGUoKSBhcmUgbm93IDMtNHggZmFzdGVyLgorCistIElzc3VlICM0NDQ1ODI6IEFkZCBzaHV0aWwud2hpY2gsIGZvciBmaW5kaW5nIHByb2dyYW1zIG9uIHRoZSBzeXN0ZW0gcGF0aC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBEZW1haW5lLCB3aXRoIGxhdGVyIGl0ZXJhdGlvbnMgYnkgSmFuIEtpbGxpYW4KKyAgYW5kIEJyaWFuIEN1cnRpbi4KKworLSBJc3N1ZSAjMTQ4Mzc6IFNTTCBlcnJvcnMgbm93IGhhdmUgYGBsaWJyYXJ5YGAgYW5kIGBgcmVhc29uYGAgYXR0cmlidXRlcworICBkZXNjcmliaW5nIHByZWNpc2VseSB3aGF0IGhhcHBlbmVkIGFuZCBpbiB3aGljaCBPcGVuU1NMIHN1Ym1vZHVsZS4gIFRoZQorICBzdHIoKSBvZiBhIFNTTEVycm9yIGlzIGFsc28gZW5oYW5jZWQgYWNjb3JkaW5nbHkuCisKKy0gSXNzdWUgIzk1Mjc6IGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2Qgd2lsbCBub3cgc3VwcGx5IGEgY2xhc3MKKyAgdGltZXpvbmUgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgc3lzdGVtIGxvY2FsIHRpbWV6b25lIHdoZW4KKyAgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLgogCiAtIElzc3VlICMxNDY1MzogZW1haWwudXRpbHMubWt0aW1lX3R6KCkgbm8gbG9uZ2VyIHJlbGllcyBvbiBzeXN0ZW0KICAgbWt0aW1lKCkgd2hlbiB0aW1lem9uZSBvZmZlc3QgaXMgc3VwcGxpZWQuCiAKKy0gSXNzdWUgIzE0Njg0OiB6bGliLmNvbXByZXNzb2JqKCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpIG5vdyBzdXBwb3J0IHRoZSB1c2UKKyAgb2YgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJpZXMuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbSBSdXNoaW5nLgorCiAtIEZpeCBHemlwRmlsZSdzIGhhbmRsaW5nIG9mIGZpbGVuYW1lcyBnaXZlbiBhcyBieXRlcyBvYmplY3RzLgogCistIElzc3VlICMxNDc3MjogUmV0dXJuIGRlc3RpbmF0aW9uIHZhbHVlcyBmcm9tIHNvbWUgc2h1dGlsIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTUwNjQ6IEltcGxlbWVudCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIG11bHRpcHJvY2Vzc2luZyB0eXBlcworCiAtIElzc3VlICMxNTEwMTogTWFrZSBwb29sIGZpbmFsaXplciBhdm9pZCBqb2luaW5nIGN1cnJlbnQgdGhyZWFkLgogCistIElzc3VlICMxNDY1NzogVGhlIGZyb3plbiBpbnN0YW5jZSBvZiBpbXBvcnRsaWIgdXNlZCBmb3IgYm9vdHN0cmFwIGlzIG5vdworICBhbHNvIHRoZSBtb2R1bGUgaW1wb3J0ZWQgYXMgaW1wb3J0bGliLl9ib290c3RyYXAuCisKKy0gSXNzdWUgIzE0MDU1OiBBZGQgX19zaXplb2ZfXyBzdXBwb3J0IHRvIF9lbGVtZW50dHJlZS4KKworLSBJc3N1ZSAjMTUwNTQ6IEEgYnVnIGluIHRva2VuaXplLnRva2VuaXplIHRoYXQgY2F1c2VkIHN0cmluZyBsaXRlcmFscworICB3aXRoICdiJyBwcmVmaXhlcyB0byBiZSBpbmNvcnJlY3RseSB0b2tlbml6ZWQgaGFzIGJlZW4gZml4ZWQuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MDA2OiBBbGxvdyBlcXVhbGl0eSBjb21wYXJpc29uIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlCisgIHRpbWUgb3IgZGF0ZXRpbWUgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKKyAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKKyAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCisKIC0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCiAgIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCiAgIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KIAotLSBJc3N1ZSAjMTAxMzM6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGRlYWxsb2NhdGUgYnVmZmVyIGlmIHNvY2tldCByZWFkCi0gIGZhaWxzLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KKy0gSXNzdWUgIzE0MDU5OiBJbXBsZW1lbnQgbXVsdGlwcm9jZXNzaW5nLkJhcnJpZXIuCisKKy0gSXNzdWUgIzE1MDYxOiBUaGUgaW5hcHByb3ByaWF0ZWx5IG5hbWVkIGhtYWMuc2VjdXJlX2NvbXBhcmUgaGFzIGJlZW4KKyAgcmVuYW1lZCB0byBobWFjLmNvbXBhcmVfZGlnZXN0LCByZXN0cmljdGVkIHRvIG9wZXJhdGluZyBvbiBieXRlcyBpbnB1dHMKKyAgb25seSBhbmQgaGFkIGl0cyBkb2N1bWVudGF0aW9uIHVwZGF0ZWQgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgYm90aCBpdHMKKyAgaW50ZW50IGFuZCBpdHMgbGltaXRhdGlvbnMKKworLSBJc3N1ZSAjMTM4NDE6IE1ha2UgY2hpbGQgcHJvY2Vzc2VzIGV4aXQgdXNpbmcgc3lzLmV4aXQoKSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxNDkzNjogY3Vyc2VzX3BhbmVsIHdhcyBjb252ZXJ0ZWQgdG8gUEVQIDMxMjEgYW5kIFBFUCAzODQgQVBJLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE2Njc1NDY6IE9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRtX3pvbmUgYW5kIHRtX2dtdG9mZiBmaWVsZHMKKyAgaW4gc3RydWN0IHRtLCB0aW1lLnN0cnVjdF90aW1lIG9iamVjdHMgcmV0dXJuZWQgYnkgdGltZS5nbXRpbWUoKSwKKyAgdGltZS5sb2NhbHRpbWUoKSBhbmQgdGltZS5zdHJwdGltZSgpIGZ1bmN0aW9ucyBub3cgaGF2ZSB0bV96b25lIGFuZAorICB0bV9nbXRvZmYgYXR0cmlidXRlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFBhdWwgQm9kZGllLgorCistIFJlbmFtZSBhZGp1c3RlZCBhdHRyaWJ1dGUgdG8gYWRqdXN0YWJsZSBpbiB0aW1lLmdldF9jbG9ja19pbmZvKCkgcmVzdWx0LgorCistIElzc3VlICMzNTE4OiBSZW1vdmUgcmVmZXJlbmNlcyB0byBub24tZXhpc3RlbnQgQmFzZU1hbmFnZXIuZnJvbV9hZGRyZXNzKCkKKyAgbWV0aG9kLgorCistIElzc3VlICMxMzg1NzogQWRkZWQgdGV4dHdyYXAuaW5kZW50KCkgZnVuY3Rpb24gKGluaXRpYWwgcGF0Y2ggYnkgRXpyYQorICBCZXJjaCkKKworLSBJc3N1ZSAjMjczNjogQWRkZWQgZGF0ZXRpbWUudGltZXN0YW1wKCkgbWV0aG9kLgogCiAtIElzc3VlICMxMzg1NDogTWFrZSBtdWx0aXByb2Nlc3NpbmcgcHJvcGVybHkgaGFuZGxlIG5vbi1pbnRlZ2VyCiAgIG5vbi1zdHJpbmcgYXJndW1lbnQgdG8gU3lzdGVtRXhpdC4KQEAgLTMyMSwxNCArMTA2MiwxNzEgQEAKIC0gSXNzdWUgIzEyMTU3OiBNYWtlIHBvb2wubWFwKCkgZW1wdHkgaXRlcmFibGVzIGNvcnJlY3RseS4gIEluaXRpYWwKICAgcGF0Y2ggYnkgbW91YWQuCiAKKy0gSXNzdWUgIzExODIzOiBkaXNhc3NlbWJseSBub3cgc2hvd3MgYXJndW1lbnQgY291bnRzIG9uIGNhbGxzIHdpdGgga2V5d29yZCBhcmdzLgorCistIElzc3VlICMxNDcxMTogb3Muc3RhdF9mbG9hdF90aW1lcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKKy0gTFpNQUZpbGUgbm93IGFjY2VwdHMgdGhlIG1vZGVzICJyYiIvIndiIi8iYWIiIGFzIHN5bm9ueW1zIG9mICJyIi8idyIvImEiLgorCistIFRoZSBiejIgYW5kIGx6bWEgbW9kdWxlcyBub3cgZWFjaCBjb250YWluIGFuIG9wZW4oKSBmdW5jdGlvbiwgYWxsb3dpbmcKKyAgY29tcHJlc3NlZCBmaWxlcyB0byByZWFkaWx5IGJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYXMgd2VsbCBhcyBiaW5hcnkgbW9kZS4KKworLSBCWjJGaWxlLl9faW5pdF9fKCkgYW5kIExaTUFGaWxlLl9faW5pdF9fKCkgbm93IGFjY2VwdCBhIGZpbGUgb2JqZWN0IGFzIHRoZWlyCisgIGZpcnN0IGFyZ3VtZW50LCByYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSAiZmlsZW9iaiIgYXJndW1lbnQuCisKKy0gZ3ppcC5vcGVuKCkgbm93IGFjY2VwdHMgZmlsZSBvYmplY3RzIGFzIHdlbGwgYXMgZmlsZW5hbWVzLgorCiAtIElzc3VlICMxNDk5Mjogb3MubWFrZWRpcnMocGF0aCwgZXhpc3Rfb2s9VHJ1ZSkgd291bGQgcmFpc2UgYW4gT1NFcnJvcgogICB3aGVuIHRoZSBwYXRoIGV4aXN0ZWQgYW5kIGhhZCB0aGUgU19JU0dJRCBtb2RlIGJpdCBzZXQgd2hlbiBpdCB3YXMKICAgbm90IGV4cGxpY2l0bHkgYXNrZWQgZm9yLiAgVGhpcyBpcyBubyBsb25nZXIgYW4gZXhjZXB0aW9uIGFzIG1rZGlyCiAgIGNhbm5vdCBjb250cm9sIGlmIHRoZSBPUyBzZXRzIHRoYXQgYml0IGZvciBpdCBvciBub3QuCiAKKy0gSXNzdWUgIzE0OTg5OiBNYWtlIHRoZSBDR0kgZW5hYmxlIG9wdGlvbiB0byBodHRwLnNlcnZlciBhdmFpbGFibGUgdmlhIGNvbW1hbmQKKyAgbGluZS4KKworLSBJc3N1ZSAjMTQ5ODc6IEFkZCBhIG1pc3NpbmcgaW1wb3J0IHN0YXRlbWVudCB0byBpbnNwZWN0LgorCistIElzc3VlICMxMDc5OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBub3cgY29ycmVjdGx5IHBhcnNlcyBhbGwgdGhlIGV4YW1wbGVzCisgIGluIFJGQzIwNDcuICBUaGVyZSBpcyBhIG5lY2Vzc2FyeSB2aXNpYmxlIGJlaGF2aW9yIGNoYW5nZTogdGhlIGxlYWRpbmcgYW5kL29yCisgIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb24gQVNDSUkgcGFydHMgaXMgbm93IHByZXNlcnZlZC4KKworLSBJc3N1ZSAjMTQ5Njk6IEJldHRlciBoYW5kbGluZyBvZiBleGNlcHRpb24gY2hhaW5pbmcgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sKKwogLSBJc3N1ZSAjMTQ5NjI6IFVwZGF0ZSB0ZXh0IGNvbG9yaW5nIGluIElETEUgc2hlbGwgd2luZG93IGFmdGVyIGNoYW5naW5nCiAgIG9wdGlvbnMuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTQ5NjM6IENvbnZlcnQgY29udGV4dGxpYi5FeGl0U3RhY2suX19leGl0X18gdG8gdXNlIGFuIGl0ZXJhdGl2ZQorICBhbGdvcml0aG0gKFBhdGNoIGJ5IEFsb24gSG9yZXYpCisKKy0gSXNzdWUgIzE0Nzg1OiBBZGQgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkgdG8gaGVscCBkZWJ1ZyBsb3ctbGV2ZWwgbWVtb3J5CisgIGFsbG9jYXRpb24gaXNzdWVzCisKKy0gSXNzdWUgIzE0NDQzOiBFbnN1cmUgdGhhdCAucHkgZmlsZXMgYXJlIGJ5dGUtY29tcGlsZWQgd2l0aCB0aGUgY29ycmVjdCBQeXRob24KKyAgZXhlY3V0YWJsZSB3aXRoaW4gYmRpc3RfcnBtIGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgUlBNCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICMxMzc4MzogSW5hZHZlcnRlbnQgYWRkaXRpb25zIHRvIHRoZSBwdWJsaWMgQyBBUEkgaW4gdGhlIFBFUCAzODAKKyAgaW1wbGVtZW50YXRpb24gaGF2ZSBlaXRoZXIgYmVlbiByZW1vdmVkIG9yIG1hcmtlZCBhcyBwcml2YXRlIGludGVyZmFjZXMuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTUwODE6IERvY3VtZW50IFB5U3RhdGVfRmluZE1vZHVsZS4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNDgxNDogQWRkZWQgZmlyc3QgZHJhZnQgb2YgaXBhZGRyZXNzIG1vZHVsZSBBUEkgcmVmZXJlbmNlCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNDc2OTogdGVzdF9jYXBpIG5vdyBoYXMgU2tpcGl0ZW1UZXN0LCB3aGljaCBjbGV2ZXJseSBjaGVja3MKKyAgZm9yICJwYXJpdHkiIGJldHdlZW4gUHlBcmdfUGFyc2VUdXBsZSgpIGFuZCB0aGUgUHl0aG9uL2dldGFyZ3MuYyBzdGF0aWMKKyAgZnVuY3Rpb24gc2tpcGl0ZW0oKSBmb3IgYWxsIHBvc3NpYmxlICJmb3JtYXQgdW5pdHMiLgorCistIHRlc3Rfbm50cGxpYiBub3cgdG9sZXJhdGVzIGJlaW5nIHJ1biBmcm9tIGJlaGluZCBOTlRQIGdhdGV3YXlzIHRoYXQgYWRkCisgICJYLUFudGl2aXJ1cyIgaGVhZGVycyB0byBhcnRpY2xlcworCistIElzc3VlICMxNTA0MzogdGVzdF9nZGIgaXMgbm93IHNraXBwZWQgZW50aXJlbHkgaWYgZ2RiIHNlY3VyaXR5IHNldHRpbmdzCisgIGJsb2NrIGxvYWRpbmcgb2YgdGhlIGdkYiBob29rcworCistIElzc3VlICMxNDk2MzogQWRkIHRlc3QgY2FzZXMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBiZWhhdmlvdXIKKyAgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sgKEluaXRpYWwgcGF0Y2ggYnkgQWxvbiBIb3JldikKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEzNTkwOiBJbXByb3ZlIHN1cHBvcnQgZm9yIE9TIFggWGNvZGUgNDoKKyAgICAqIFRyeSB0byBhdm9pZCBidWlsZGluZyBQeXRob24gb3IgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBwcm9ibGVtYXRpYworICAgICAgbGx2bS1nY2MgY29tcGlsZXIuCisgICAgKiBTaW5jZSBYY29kZSA0IHJlbW92ZXMgcHBjIHN1cHBvcnQsIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdworICAgICAgY2hlY2sgZm9yIHBwYyBjb21waWxlciBzdXBwb3J0IGFuZCBhdXRvbWF0aWNhbGx5IHJlbW92ZSBwcGMgYW5kCisgICAgICBwcGM2NCBhcmNocyB3aGVuIG5vdCBhdmFpbGFibGUuCisgICAgKiBTaW5jZSBYY29kZSA0IG5vIGxvbmdlciBpbnN0YWxsIFNES3MgaW4gZGVmYXVsdCBsb2NhdGlvbnMsCisgICAgICBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyBub3cgcmV2ZXJ0IHRvIHVzaW5nIGluc3RhbGxlZCBoZWFkZXJzCisgICAgICBhbmQgbGlicyBpZiB0aGUgU0RLIHVzZWQgdG8gYnVpbGQgdGhlIGludGVycHJldGVyIGlzIG5vdAorICAgICAgYXZhaWxhYmxlLgorICAgICogVXBkYXRlIC4vY29uZmlndXJlIHRvIHVzZSBiZXR0ZXIgZGVmYXVsdHMgZm9yIHVuaXZlcnNhbCBidWlsZHM7CisgICAgICBpbiBwYXJ0aWN1bGFyLCAtLWVuYWJsZS11bml2ZXJzYWxzZGs9eWVzIHVzZXMgdGhlIFhjb2RlIGRlZmF1bHQKKyAgICAgIFNESyBhbmQgLS13aXRoLXVuaXZlcnNhbC1hcmNocyBub3cgZGVmYXVsdHMgdG8gImludGVsIiBpZiBwcGMKKyAgICAgIG5vdCBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzE0MjI1OiBGaXggVW5pY29kZSBzdXBwb3J0IGZvciBjdXJzZXMgKCMxMjU2Nykgb24gT1MgWAorCistIElzc3VlICMxNDkyODogRml4IGltcG9ydGxpYiBib290c3RyYXAgaXNzdWVzIGJ5IHVzaW5nIGEgY3VzdG9tIGV4ZWN1dGFibGUKKyAgKE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIpIHRvIGJ1aWxkIFB5dGhvbi9pbXBvcnRsaWIuaC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSA0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMzEtTWF5LTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDgzNTogTWFrZSBwbGlzdGxpYiBvdXRwdXQgZW1wdHkgYXJyYXlzICYgZGljdHMgbGlrZSBPUyBYLgorICBQYXRjaCBieSBTaWRuZXkgU2FuIE1hcnTDrW4uCisKKy0gSXNzdWUgIzE0NzQ0OiBVc2UgdGhlIG5ldyBfUHlVbmljb2RlV3JpdGVyIGludGVybmFsIEFQSSB0byBzcGVlZCB1cAorICBzdHIlYXJncyBhbmQgc3RyLmZvcm1hdChhcmdzKS4KKworLSBJc3N1ZSAjMTQ5MzA6IE1ha2UgbWVtb3J5dmlldyBvYmplY3RzIHdlYWtyZWZhYmxlLgorCistIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQorICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KKworLSBJc3N1ZSAjMTQ4NTc6IGZpeCByZWdyZXNzaW9uIGluIHJlZmVyZW5jZXMgdG8gUEVQIDMxMzUgaW1wbGljaXQgX19jbGFzc19fCisgIGNsb3N1cmUgdmFyaWFibGUgKFJlb3BlbnMgaXNzdWUgIzEyMzcwKQorCistIElzc3VlICMxNDcxMiAoUEVQIDQwNSk6IFZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbXBsZW1lbnRlZCBieSBWaW5heSBTYWppcC4KKworLSBJc3N1ZSAjMTQ2NjAgKFBFUCA0MjApOiBOYW1lc3BhY2UgcGFja2FnZXMuIEltcGxlbWVudGVkIGJ5IEVyaWMgU21pdGguCisKKy0gSXNzdWUgIzE0NDk0OiBGaXggX19mdXR1cmVfXy5weSBhbmQgaXRzIGRvY3VtZW50YXRpb24gdG8gbm90ZSB0aGF0CisgIGFic29sdXRlIGltcG9ydHMgYXJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIDMuMCBpbnN0ZWFkIG9mIDIuNy4KKyAgUGF0Y2ggYnkgU3ZlbiBNYXJuYWNoLgorCistIElzc3VlICM5MjYwOiBBIGZpbmVyLWdyYWluZWQgaW1wb3J0IGxvY2suICBNb3N0IG9mIHRoZSBpbXBvcnQgc2VxdWVuY2UKKyAgbm93IHVzZXMgcGVyLW1vZHVsZSBsb2NrcyByYXRoZXIgdGhhbiB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrLCBlbGltaW5hdGluZworICB3ZWxsLWtub3duIGlzc3VlcyB3aXRoIHRocmVhZHMgYW5kIGltcG9ydHMuCisKKy0gSXNzdWUgIzE0NjI0OiBVVEYtMTYgZGVjb2RpbmcgaXMgbm93IDN4IHRvIDR4IGZhc3RlciBvbiB2YXJpb3VzIGlucHV0cy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBhc2RsX3NlcSBhbmQgYXNkbF9pbnRfc2VxIGFyZSBub3cgUHlfc3NpemVfdCBzaXplZC4KKworLSBJc3N1ZSAjMTQxMzMgKFBFUCA0MTUpOiBJbXBsZW1lbnQgc3VwcHJlc3Npb24gb2YgX19jb250ZXh0X18gZGlzcGxheSB3aXRoIGFuCisgIGF0dHJpYnV0ZSBvbiBCYXNlRXhjZXB0aW9uLiBUaGlzIHJlcGxhY2VzIHRoZSBvcmlnaW5hbCBtZWNoYW5pc20gb2YgUEVQIDQwOS4KKworLSBJc3N1ZSAjMTQ0MTc6IE11dGF0aW5nIGEgZGljdCBkdXJpbmcgbG9va3VwIG5vdyByZXN0YXJ0cyB0aGUgbG9va3VwIGluc3RlYWQKKyAgb2YgcmFpc2luZyBhIFJ1bnRpbWVFcnJvciAodW5kb2VzIGlzc3VlICMxNDIwNSkuCisKKy0gSXNzdWUgIzE0NzM4OiBTcGVlZC11cCBVVEYtOCBkZWNvZGluZyBvbiBub24tQVNDSUkgZGF0YS4gIFBhdGNoIGJ5IFNlcmhpeQorICBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0NzAwOiBGaXggdHdvIGJyb2tlbiBhbmQgdW5kZWZpbmVkLWJlaGF2aW91ci1pbmR1Y2luZyBvdmVyZmxvdyBjaGVja3MKKyAgaW4gb2xkLXN0eWxlIHN0cmluZyBmb3JtYXR0aW5nLgorCistIElzc3VlICMxNDcwNTogVGhlIFB5QXJnX1BhcnNlKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCB0aGUgJ3AnIGZvcm1hdAorICB1bml0LCB3aGljaCBhY2NlcHRzIGEgImJvb2xlYW4gcHJlZGljYXRlIiBhcmd1bWVudC4gIEl0IGNvbnZlcnRzIGFueSBQeXRob24KKyAgdmFsdWUgaW50byBhbiBpbnRlZ2VyLS0wIGlmIGl0IGlzICJmYWxzZSIsIGFuZCAxIG90aGVyd2lzZS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDY5MDogVXNlIG1vbm90b25pYyBjbG9jayBpbnN0ZWFkIG9mIHN5c3RlbSBjbG9jayBpbiB0aGUgc2NoZWQsCisgIHN1YnByb2Nlc3MgYW5kIHRyYWNlIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE0OTU4OiBDaGFuZ2UgSURMRSBzeXN0YXggaGlnaGxpZ2h0aW5nIHRvIHJlY29nbml6ZSBhbGwgc3RyaW5nIGFuZAorICBieXRlIGxpdGVyYWxzIHN1cHBvcnRlZCBpbiBQeXRob24gMy4zLgorCiAtIElzc3VlICMxMDk5NzogUHJldmVudCBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBJRExFJ3MgIlJlY2VudCBGaWxlcyIgbWVudS4KIAogLSBJc3N1ZSAjMTQ0NDM6IFRlbGwgcnBtYnVpbGQgdG8gdXNlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgUHl0aG9uIGluCkBAIC0zMzcsMjkgKzEyMzUsNzAgQEAKIC0gSXNzdWUgIzE0OTI5OiBTdG9wIElkbGUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgogICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzEyNTE1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IGlmIGl0IGdldHMgdG8gRU9GIHdoaWxlIHBhcnNpbmcKKyAgYSBNSU1FIHBhcnQgd2l0aG91dCBzZWVpbmcgdGhlIGNsb3NpbmcgTUlNRSBib3VuZGFyeS4KKwogLSBJc3N1ZSAjMTI1MTA6IEF0dGVtcHRpbmcgdG8gZ2V0IGludmFsaWQgdG9vbHRpcCBubyBsb25nZXIgY2xvc2VzIElkbGUuCiAgIE90aGVyIHRvb2x0aXBzcyBoYXZlIGJlZW4gY29ycmVjdGVkIG9yIGltcHJvdmVkIGFuZCB0aGUgbnVtYmVyIG9mIHRlc3RzCiAgIGhhcyBiZWVuIHRyaXBsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgogCistIElzc3VlICMxNjcyNTY4OiBlbWFpbCBub3cgYWx3YXlzIGRlY29kZXMgYmFzZTY0IHBheWxvYWRzLCBhZGRpbmcgcGFkZGluZyBhbmQKKyAgaWdub3Jpbmcgbm9uLWJhc2U2NC1hbHBoYWJldCBjaGFyYWN0ZXJzIGlmIG5lZWRlZCwgYW5kIHJlZ2lzdGVyaW5nIGRlZmVjdHMKKyAgZm9yIGFueSBzdWNoIHByb2JsZW1zLgorCistIElzc3VlICMxNDkyNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCB3aGVuIHRoZSBwYXJzZXIgZGVjaWRlcyB0aGF0IHRoZXJlCisgIGlzIGEgbWlzc2luZyBoZWFkZXIvYm9keSBzZXBhcmF0b3IgbGluZS4gIE1hbGZvcm1lZEhlYWRlckRlZmVjdCwgd2hpY2ggdGhlCisgIGV4aXN0aW5nIGNvZGUgd291bGQgbmV2ZXIgYWN0dWFsbHkgZ2VuZXJhdGUsIGlzIGRlcHJlY2F0ZWQuCisKIC0gSXNzdWUgIzEwMzY1OiBGaWxlIG9wZW4gZGlhbG9nIG5vdyB3b3JrcyBpbnN0ZWFkIG9mIGNyYXNoaW5nIGV2ZW4gd2hlbgogICB0aGUgcGFyZW50IHdpbmRvdyBpcyBjbG9zZWQgYmVmb3JlIHRoZSBkaWFsb2cuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgogCistIElzc3VlICM4NzM5OiBVcGRhdGVkIHNtdHBkIHRvIHN1cHBvcnQgUkZDIDUzMjEsIGFuZCBhZGRlZCBzdXBwb3J0IGZvciB0aGUKKyAgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uCisKKy0gSXNzdWUgIzY2NTE5NDogQWRkZWQgYSBsb2NhbHRpbWUgZnVuY3Rpb24gdG8gZW1haWwudXRpbHMgdG8gcHJvdmlkZSBhbgorICBhd2FyZSBsb2NhbCBkYXRldGltZSBmb3IgdXNlIGluIHNldHRpbmcgRGF0ZSBoZWFkZXJzLgorCistIElzc3VlICMxMjU4NjogQWRkZWQgbmV3IHByb3Zpc2lvbmFsIHBvbGljaWVzIHRoYXQgaW1wbGVtZW50IGNvbnZlbmllbnQKKyAgdW5pY29kZSBzdXBwb3J0IGZvciBlbWFpbCBoZWFkZXJzLiAgU2VlIFdoYXQncyBOZXcgZm9yIGRldGFpbHMuCisKKy0gSXNzdWUgIzE0NzMxOiBSZWZhY3RvcmVkIGVtYWlsIFBvbGljeSBmcmFtZXdvcmsgdG8gc3VwcG9ydCBmdWxsIGJhY2t3YXJkCisgIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yIGJ5IGRlZmF1bHQgeWV0IGFsbG93IGZvciB0aGUgaW50cm9kdWN0aW9uIG9mCisgIG5ldyBmZWF0dXJlcyB0aHJvdWdoIG5ldyBwb2xpY2llcy4gIE5vdGUgdGhhdCBQb2xpY3kubXVzdF9iZV83Yml0IGlzIHJlbmFtZWQKKyAgdG8gY3RlX3R5cGUuCisKIC0gSXNzdWUgIzE0ODc2OiBVc2UgdXNlci1zZWxlY3RlZCBmb250IGZvciBoaWdobGlnaHQgY29uZmlndXJhdGlvbi4KIAogLSBJc3N1ZSAjMTQ5MjA6IEZpeCB0aGUgaGVscCh1cmxsaWIucGFyc2UpIGZhaWx1cmUgb24gbG9jYWxlIEMgb24gdGVybWluYWxzLgogICBIYXZlIGFzY2lpIGNoYXJhY3RlcnMgaW4gaGVscC4KIAorLSBJc3N1ZSAjMTQ1NDg6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGZpbmFsaXplcnMgY2hlY2sgcGlkIGJlZm9yZQorICBydW5uaW5nIHRvIGNvcGUgd2l0aCBwb3NzaWJpbGl0eSBvZiBnYyBydW5uaW5nIGp1c3QgYWZ0ZXIgZm9yay4KKwogLSBJc3N1ZSAjMTQ4NjM6IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBvcy5mZG9wZW4oKSB0byByZWZsZWN0IHRoZQogICBmYWN0IHRoYXQgaXQncyBvbmx5IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBvcGVuKCkgYW55bW9yZS4KIAogLSBJc3N1ZSAjMTQwMzY6IEFkZCBhbiBhZGRpdGlvbmFsIGNoZWNrIHRvIHZhbGlkYXRlIHRoYXQgcG9ydCBpbiB1cmxwYXJzZSBkb2VzCiAgIG5vdCBnbyBpbiBpbGxlZ2FsIHJhbmdlIGFuZCByZXR1cm5zIE5vbmUuCiAKKy0gSXNzdWUgIzE0ODYyOiBBZGQgbWlzc2luZyBuYW1lcyB0byBvcy5fX2FsbF9fCisKIC0gSXNzdWUgIzE0ODc1OiBVc2UgZmxvYXQoJ2luZicpIGluc3RlYWQgb2YgZmxvYXQoJzFlNjY2NjYnKSBpbiB0aGUganNvbiBtb2R1bGUuCiAKKy0gSXNzdWUgIzEzNTg1OiBBZGRlZCBjb250ZXh0bGliLkV4aXRTdGFjaworCistIFBFUCAzMTQ0LCBJc3N1ZSAjMTQ4MTQ6IEFkZGVkIHRoZSBpcGFkZHJlc3MgbW9kdWxlCisKIC0gSXNzdWUgIzE0NDI2OiBDb3JyZWN0IHRoZSBEYXRlIGZvcm1hdCBpbiBFeHBpcmVzIGF0dHJpYnV0ZSBvZiBTZXQtQ29va2llCiAgIEhlYWRlciBpbiBDb29raWUucHkuCiAKKy0gSXNzdWUgIzE0NTg4OiBUaGUgdHlwZXMgbW9kdWxlIG5vdyBwcm92aWRlIG5ld19jbGFzcygpIGFuZCBwcmVwYXJlX2NsYXNzKCkKKyAgZnVuY3Rpb25zIHRvIHN1cHBvcnQgUEVQIDMxMTUgY29tcGxpYW50IGR5bmFtaWMgY2xhc3MgY3JlYXRpb24uIFBhdGNoIGJ5CisgIERhbmllbCBVcmJhbiBhbmQgTmljayBDb2dobGFuLgorCistIElzc3VlICMxMzE1MjogQWxsb3cgdG8gc3BlY2lmeSBhIGN1c3RvbSB0YWJzaXplIGZvciBleHBhbmRpbmcgdGFicyBpbgorICB0ZXh0d3JhcC4gUGF0Y2ggYnkgSm9obiBGZXVlcnN0ZWluLgorCiAtIElzc3VlICMxNDcyMTogU2VuZCB0aGUgY29ycmVjdCAnQ29udGVudC1sZW5ndGg6IDAnIGhlYWRlciB3aGVuIHRoZSBib2R5IGlzIGFuCiAgIGVtcHR5IHN0cmluZyAnJy4gSW5pdGlhbCBQYXRjaCBjb250cmlidXRlZCBieSBBcnZlIEtudWRzZW4uCiAKQEAgLTM3MywyNSArMTMxMiw3NiBAQAogICB3aGVuIHRoZSBmaXJzdCBwYXJ0IG9mIGEgZG90dGVkIG5hbWUgaXMgbm90IGEgcGFja2FnZS4gUGF0Y2ggYnkKICAgWGF2aWVyIGRlIEdheWUuCiAKKy0gSXNzdWUgIzEyMDk4OiBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyBub3cgc3RhcnRzIGNoaWxkIHByb2Nlc3NlcworICB1c2luZyB0aGUgc2FtZSBzeXMuZmxhZ3MgYXMgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkKKyAgU2VyZ2V5IE1lemVudHNldi4KKworLSBJc3N1ZSAjMTMwMzE6IFNtYWxsIHNwZWVkLXVwIGZvciB0YXJmaWxlIHdoZW4gdW56aXBwaW5nIHRhcmZpbGVzLgorICBQYXRjaCBieSBKdXN0aW4gUGVlbC4KKworLSBJc3N1ZSAjMTQ3ODA6IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oKSBub3cgaGFzIGEgYGBjYWRlZmF1bHRgYCBhcmd1bWVudAorICB0byB1c2UgdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUuICBJbml0aWFsIHBhdGNoIGJ5IEphbWVzIE9ha2xleS4KKwogLSBJc3N1ZSAjMTQ4Mjk6IEZpeCBiaXNlY3QgYW5kIHJhbmdlKCkgaW5kZXhpbmcgd2l0aCBsYXJnZSBpbmRpY2VzCiAgICg+PSAyICoqIDMyKSB1bmRlciA2NC1iaXQgV2luZG93cy4KIAorLSBJc3N1ZSAjMTQ3MzI6IFRoZSBfY3N2IG1vZHVsZSBub3cgdXNlcyBQRVAgMzEyMSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTQ4MDk6IEFkZCBIVFRQIHN0YXR1cyBjb2RlcyBpbnRyb2R1Y2VkIGJ5IFJGQyA2NTg1IHRvIGh0dHAuc2VydmVyCisgIGFuZCBodHRwLmNsaWVudC4gUGF0Y2ggYnkgRXVuZ0p1biBZaS4KKwogLSBJc3N1ZSAjMTQ3Nzc6IHRraW50ZXIgbWF5IHJldHVybiB1bmRlY29kZWQgVVRGLTggYnl0ZXMgYXMgYSBzdHJpbmcgd2hlbgogICBhY2Nlc3NpbmcgdGhlIFRrIGNsaXBib2FyZC4gIE1vZGlmeSBjbGlwYm9hZF9nZXQoKSB0byBmaXJzdCByZXF1ZXN0IHR5cGUKICAgVVRGOF9TVFJJTkcgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHJlcXVlc3RlZCBpbiBhbiBYMTEgd2luZG93aW5nCiAgIGVudmlyb25tZW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGN1cnJlbnQgZGVmYXVsdCB0eXBlIFNUUklORyBpZiB0aGF0IGZhaWxzLgogICBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KIAorLSBJc3N1ZSAjMTQ3NzM6IEZpeCBvcy5md2FsaygpIGZhaWxpbmcgb24gZGFuZ2xpbmcgc3ltbGlua3MuCisKIC0gSXNzdWUgIzEyNTQxOiBCZSBsZW5pZW50IHdpdGggcXVvdGVzIGFyb3VuZCBSZWFsbSBmaWVsZCBvZiBIVFRQIEJhc2ljCiAgIEF1dGhlbnRhdGlvbiBpbiB1cmxsaWIyLgogCistIElzc3VlICMxNDgwNzogbW92ZSB1bmRvY3VtZW50ZWQgdGFyZmlsZS5maWxlbW9kZSgpIHRvIHN0YXQuZmlsZW1vZGUoKSBhbmQgYWRkCisgIGRvYyBlbnRyeS4gQWRkIHRhcmZpbGUuZmlsZW1vZGUgYWxpYXMgd2l0aCBkZXByZWNhdGlvbiB3YXJuaW5nLgorCistIElzc3VlICMxMzgxNTogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIG5vdyByZXR1cm5zIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0NTMyOiBBZGQgYSBzZWN1cmVfY29tcGFyZSgpIGhlbHBlciB0byB0aGUgaG1hYyBtb2R1bGUsIHRvIG1pdGlnYXRlCisgIHRpbWluZyBhdHRhY2tzLiBQYXRjaCBieSBKb24gT2JlcmhlaWRlLgorCistIEFkZCBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKS4KKworLSBJc3N1ZSAjMTQzNjY6IFN1cHBvcnQgbHptYSBjb21wcmVzc2lvbiBpbiB6aXAgZmlsZXMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzEzOTU5OiBJbnRyb2R1Y2UgaW1wb3J0bGliLmZpbmRfbG9hZGVyKCkgYW5kIGRvY3VtZW50CisgIGltcC5maW5kX21vZHVsZS9sb2FkX21vZHVsZSBhcyBkZXByZWNhdGVkLgorCistIElzc3VlICMxNDA4Mjogc2h1dGlsLmNvcHkyKCkgbm93IGNvcGllcyBleHRlbmRlZCBhdHRyaWJ1dGVzLCBpZiBwb3NzaWJsZS4KKyAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxMzk1OTogTWFrZSBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKS9nZXRfZmlsZW5hbWUoKSBhbmQKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyLmxvYWRfbW9kdWxlKCkgaGF2ZSB0aGVpciBzaW5nbGUKKyAgYXJndW1lbnQgYmUgb3B0aW9uYWwuIEFsbG93cyBmb3IgdGhlIHJlcGxhY2VtZW50IChhbmQgdGh1cyBkZXByZWNhdGlvbikgb2YKKyAgaW1wLmxvYWRfc291cmNlKCkvbG9hZF9wYWNrYWdlKCkvbG9hZF9jb21waWxlZCgpLgorCistIElzc3VlICMxMzk1OTogaW1wLmdldF9zdWZmaXhlcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHRoZSBuZXcKKyAgYXR0cmlidXRlcyBvbiBpbXBvcnRsaWIubWFjaGluZXJ5OiBTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLCBhbmQgRVhURU5TSU9OX1NVRkZJWEVTLiBUaGlzCisgIGxlZCB0byBhbiBpbmRpcmVjdCBkZXByZWNhdGlvbiBvZiBpbnNwZWN0LmdldG1vZHVsZWluZm8oKS4KKwogLSBJc3N1ZSAjMTQ2NjI6IFByZXZlbnQgc2h1dGlsIGZhaWx1cmVzIG9uIE9TIFggd2hlbiBkZXN0aW5hdGlvbiBkb2VzIG5vdAogICBzdXBwb3J0IGNoZmxhZyBvcGVyYXRpb25zLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCiAtIElzc3VlICMxNDE1NzogRml4IHRpbWUuc3RycHRpbWUgZmFpbGluZyB3aXRob3V0IGEgeWVhciBvbiBGZWJydWFyeSAyOXRoLgogICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKLS0gSXNzdWUgIzE0NzY4OiBvcy5wYXRoLmV4cGFuZHVzZXIoJ34vYScpIGRvZXNuJ3Qgd29ya3MgY29ycmVjdGx5IHdoZW4gSE9NRSBpcyAnLycuCistIElzc3VlICMxNDc1MzogTWFrZSBtdWx0aXByb2Nlc3NpbmcncyBoYW5kbGluZyBvZiBuZWdhdGl2ZSB0aW1lb3V0cworICB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uIDMuMi4KKworLSBJc3N1ZSAjMTQ1ODM6IEZpeCBpbXBvcnRsaWIgYnVnIHdoZW4gYSBwYWNrYWdlJ3MgX19pbml0X18ucHkgd291bGQgZmlyc3QKKyAgaW1wb3J0IG9uZSBvZiBpdHMgbW9kdWxlcyB0aGVuIHJhaXNlIGFuIGVycm9yLgogCiAtIElzc3VlICMxNDc0MTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgRWxsaXBzaXMgKCcuLi4nKSBpbiBwYXJzZXIgbW9kdWxlLgogCkBAIC00MDAsNiArMTM5MCwxMzggQEAKIAogLSBJc3N1ZSAjMTQ3MDE6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yICdyYWlzZSAuLi4gZnJvbScgaW4gcGFyc2VyIG1vZHVsZS4KIAorLSBBZGQgc3VwcG9ydCBmb3IgdGltZW91dHMgdG8gdGhlIGFjcXVpcmUoKSBtZXRob2RzIG9mCisgIG11bHRpcHJvY2Vzc2luZydzIGxvY2svc2VtYXBob3JlL2NvbmRpdGlvbiBwcm94aWVzLgorCistIElzc3VlICMxMzk4OTogQWRkIHN1cHBvcnQgZm9yIHRleHQgbW9kZSB0byBnemlwLm9wZW4oKS4KKworLSBJc3N1ZSAjMTQxMjc6IFRoZSBvcy5zdGF0KCkgcmVzdWx0IG9iamVjdCBub3cgcHJvdmlkZXMgdGhyZWUgYWRkaXRpb25hbAorICBmaWVsZHM6IHN0X2N0aW1lX25zLCBzdF9tdGltZV9ucywgYW5kIHN0X2F0aW1lX25zLCBwcm92aWRpbmcgdGhvc2UgdGltZXMgYXMgYW4KKyAgaW50ZWdlciB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4gIFRoZSBmdW5jdGlvbnMgb3MudXRpbWUoKSwgb3MubHV0aW1lcygpLAorICBhbmQgb3MuZnV0aW1lcygpIG5vdyBhY2NlcHQgYSBuZXcgcGFyYW1ldGVyLCBucywgd2hpY2ggYWNjZXB0cyBtdGltZSBhbmQgYXRpbWUKKyAgYXMgaW50ZWdlcnMgd2l0aCBuYW5vc2Vjb25kIHJlc29sdXRpb24uCisKKy0gSXNzdWUgIzE0MTI3IGFuZCAjMTAxNDg6IHNodXRpbC5jb3B5c3RhdCBub3cgcHJlc2VydmVzIGV4YWN0IG10aW1lIGFuZCBhdGltZQorICBvbiBmaWxlc3lzdGVtcyBwcm92aWRpbmcgbmFub3NlY29uZCByZXNvbHV0aW9uLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQ2OTU6IEJyaW5nIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5IHN1cHBvcnQgdXAgdG8gZGF0ZSB3aXRoCisgIHRoZSBQeXRob24gMy4zIEdyYW1tYXIuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNDQ3MjogVXBkYXRlIC5naXRpZ25vcmUuIFBhdGNoIGJ5IE1hdGVqIENlcGwuCisKKy0gVXBncmFkZSBXaW5kb3dzIGxpYnJhcnkgdmVyc2lvbnM6IGJ6aXAgMS4wLjYsIE9wZW5TU0wgMS4wLjFjLgorCistIElzc3VlICMxNDY5MzogVW5kZXIgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBoYXNobGliJ3MgZmFsbGJhY2sgbW9kdWxlcyBhcmUKKyAgYWx3YXlzIGNvbXBpbGVkLCBldmVuIGlmIE9wZW5TU0wgaXMgcHJlc2VudCBhdCBidWlsZCB0aW1lLgorCistIElzc3VlICMxMzIxMDogV2luZG93cyBidWlsZCBub3cgdXNlcyBWUzIwMTAsIHBvcnRlZCBmcm9tIFZTMjAwOC4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDU4ODogVGhlIGxhbmd1YWdlIHJlZmVyZW5jZSBub3cgYWNjdXJhdGVseSBkb2N1bWVudHMgdGhlIFB5dGhvbiAzCisgIGNsYXNzIGRlZmluaXRpb24gcHJvY2Vzcy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLgorCistIElzc3VlICMxNDk0MzogQ29ycmVjdCBhIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHdpbnJlZy5PcGVuS2V5CisgIGFuZCBjb3JyZWN0bHkgbGlzdCB0aGUgYXJndW1lbnQgbmFtZXMgaW4gdGhlIGZ1bmN0aW9uJ3MgZXhwbGFuYXRpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDAxLU1heS0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgorCistIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4gaXMgY2xvc2VkLgorCistIElzc3VlICMxNDUyMTogTWFrZSByZXN1bHQgb2YgZmxvYXQoJ25hbicpIGFuZCBmbG9hdCgnLW5hbicpIG1vcmUgY29uc2lzdGVudAorICBhY3Jvc3MgcGxhdGZvcm1zLgorCistIElzc3VlICMxNDY0NjogX19pbXBvcnRfXygpIHNldHMgX19sb2FkZXJfXyBpZiB0aGUgbG9hZGVyIGRpZCBub3QuCisKKy0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5tZXRhX3BhdGguIElmCisgIHN5cy5tZXRhX3BhdGggaXMgZm91bmQgdG8gYmUgZW1wdHksIHJhaXNlIEltcG9ydFdhcm5pbmcuCisKKy0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5wYXRoX2hvb2tzLiBJZgorICBzeXMucGF0aF9ob29rcyBpcyBmb3VuZCB0byBiZSBlbXB0eSwgYSB3YXJuaW5nIHdpbGwgYmUgcmFpc2VkLiBOb25lIGlzIG5vdworICBpbnNlcnRlZCBpbnRvIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlmIG5vIGZpbmRlciB3YXMgZGlzY292ZXJlZC4gVGhpcyBhbHNvCisgIG1lYW5zIGltcC5OdWxsSW1wb3J0ZXIgaXMgbm8gbG9uZ2VyIGltcGxpY2l0bHkgdXNlZC4KKworLSBJc3N1ZSAjMTM5MDM6IEltcGxlbWVudCBQRVAgNDEyLiBJbmRpdmlkdWFsIGRpY3Rpb25hcnkgaW5zdGFuY2VzIGNhbiBub3cgc2hhcmUKKyAgdGhlaXIga2V5cyB3aXRoIG90aGVyIGRpY3Rpb25hcmllcy4gQ2xhc3NlcyB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIHRvIHNoYXJlCisgIHRoZWlyIGluc3RhbmNlIGRpY3Rpb25hcnkga2V5cyBmb3IgaW1wcm92ZWQgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZS4KKworLSBJc3N1ZSAjMTE2MDMgKGFnYWluKTogU2V0dGluZyBfX3JlcHJfXyB0byBfX3N0cl9fIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IKKyAgd2hlbiByZXByKCkgb3Igc3RyKCkgaXMgY2FsbGVkIG9uIHN1Y2ggYW4gb2JqZWN0LgorCistIElzc3VlICMxNDY1ODogRml4IGJpbmRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBhIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24gb2YgYQorICBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisKKy0gSXNzdWUgIzE0NjMwOiBGaXggYSBtZW1vcnkgYWNjZXNzIGJ1ZyBmb3IgaW5zdGFuY2VzIG9mIGEgc3ViY2xhc3Mgb2YgaW50CisgIHdpdGggdmFsdWUgMC4KKworLSBJc3N1ZSAjMTQzMzk6IFNwZWVkIGltcHJvdmVtZW50cyB0byBiaW4sIG9jdCBhbmQgaGV4IGZ1bmN0aW9ucy4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0MDk4OiBOZXcgZnVuY3Rpb25zIFB5RXJyX0dldEV4Y0luZm8gYW5kIFB5RXJyX1NldEV4Y0luZm8uCisgIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzE0Mzg1OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIGEgY3VzdG9tIHR5cGUgZm9yIHRoZSBfX2J1aWx0aW5zX18KKyAgbmFtZXNwYWNlLCBpbnN0ZWFkIG9mIGEgZGljdC4gSXQgY2FuIGJlIHVzZWQgZm9yIHNhbmRib3hpbmcgZm9yIGV4YW1wbGUuCisgIFJhaXNlIGFsc28gYSBOYW1lRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvciBpZiBfX2J1aWxkX2NsYXNzX18gbmFtZSBpZiBub3QKKyAgZm91bmQgaW4gX19idWlsdGluc19fLgorCistIElzc3VlICMxMjU5OTogQmUgbW9yZSBzdHJpY3QgaW4gYWNjZXB0aW5nIE5vbmUgY29tcGFyZWQgdG8gYSBmYWxzZS1saWtlCisgIG9iamVjdCBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIgYW5kCisgIGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci4KKworLSBJc3N1ZSAjMTQ2MTI6IEZpeCBqdW1waW5nIGFyb3VuZCB3aXRoIGJsb2NrcyBieSBzZXR0aW5nIGZfbGluZW5vLgorCistIElzc3VlICMxNDU5MjogQXR0ZW1wdGluZyBhIHJlbGF0aXZlIGltcG9ydCB3L28gX19wYWNrYWdlX18gb3IgX19uYW1lX18gc2V0IGluCisgIGdsb2JhbHMgcmFpc2VzIGEgS2V5RXJyb3IuCisKKy0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgorCistIElzc3VlICMxMDg1NDogVGhlIEltcG9ydEVycm9yIHJhaXNlZCB3aGVuIGFuIGV4dGVuc2lvbiBtb2R1bGUgb24gV2luZG93cworICBmYWlscyB0byBpbXBvcnQgbm93IHVzZXMgdGhlIG5ldyBwYXRoIGFuZCBuYW1lIGF0dHJpYnV0ZXMgZnJvbQorICBJc3N1ZSAjMTU1OTU0OS4KKworLSBJc3N1ZSAjMTM4ODk6IENoZWNrIGFuZCAoaWYgbmVjZXNzYXJ5KSBzZXQgRlBVIGNvbnRyb2wgd29yZCBiZWZvcmUgY2FsbGluZworICBhbnkgb2YgdGhlIGR0b2EuYyBzdHJpbmcgPC0+IGZsb2F0IGNvbnZlcnNpb24gZnVuY3Rpb25zLCBvbiBNU1ZDIGJ1aWxkcyBvZgorICBQeXRob24uICBUaGlzIGZpeGVzIGlzc3VlcyB3aGVuIGVtYmVkZGluZyBQeXRob24gaW4gYSBEZWxwaGkgYXBwLgorCistIF9faW1wb3J0X18oKSBub3cgbWF0Y2hlcyBQRVAgMzI4IGFuZCBkb2N1bWVudGF0aW9uIGJ5IGRlZmF1bHRpbmcgJ2luZGV4JyB0byAwCisgIGluc3RlYWQgb2YgLTEgYW5kIHJlbW92aW5nIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIHZhbHVlcy4KKworLSBJc3N1ZSAjMjM3NzogTWFrZSBpbXBvcnRsaWIgdGhlIGltcGxlbWVudGF0aW9uIG9mIF9faW1wb3J0X18oKS4KKworLSBJc3N1ZSAjMTU1OTU0OTogSW1wb3J0RXJyb3Igbm93IGhhcyAnbmFtZScgYW5kICdwYXRoJyBhdHRyaWJ1dGVzIHRoYXQgYXJlIHNldAorICB1c2luZyBrZXl3b3JkIGFyZ3VtZW50cyB0byBpdHMgY29uc3RydWN0b3IuIFRoZXkgYXJlIGN1cnJlbnRseSBub3Qgc2V0IGJ5CisgIGltcG9ydCBhcyB0aGV5IGFyZSBtZWFudCBmb3IgdXNlIGJ5IGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTQ0NzQ6IFNhdmUgYW5kIHJlc3RvcmUgZXhjZXB0aW9uIHN0YXRlIGluIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkKKyAgd2hpbGUgd3JpdGluZyBlcnJvciBtZXNzYWdlIGlmIHRoZSB0aHJlYWQgbGVhdmVzIGEgdW5oYW5kbGVkIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMTMwMTk6IEZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoCisgIGJ5IFN1bWFuIFNhaGEuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KKworLSBJc3N1ZSAjMTQzNzE6IFN1cHBvcnQgYnppcDIgaW4gemlwZmlsZSBtb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCiAtIElzc3VlICMxMzE4MzogRml4IHBkYiBza2lwcGluZyBmcmFtZXMgYWZ0ZXIgaGl0dGluZyBhIGJyZWFrcG9pbnQgYW5kIHJ1bm5pbmcKICAgc3RlcC4gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCkBAIC00MTAsOSArMTUzMiwyNSBAQAogCiAtIElzc3VlICM5MTU0OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kIGZ1bmN0aW9uIGFubm90YXRpb25zLgogCistIElzc3VlICM2MDg1OiBJbiBodHRwLnNlcnZlci5weSBTaW1wbGVIVFRQU2VydmVyLmFkZHJlc3Nfc3RyaW5nIHJldHVybnMgdGhlCisgIGNsaWVudCBpcCBhZGRyZXNzIGluc3RlYWQgY2xpZW50IGhvc3RuYW1lLiBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzE0MzA5OiBEZXByZWNhdGUgdGltZS5jbG9jaygpLCB1c2UgdGltZS5wZXJmX2NvdW50ZXIoKSBvcgorICB0aW1lLnByb2Nlc3NfdGltZSgpIGluc3RlYWQuCisKKy0gSXNzdWUgIzE0NDI4OiBJbXBsZW1lbnQgdGhlIFBFUCA0MTguIEFkZCB0aW1lLmdldF9jbG9ja19pbmZvKCksCisgIHRpbWUucGVyZl9jb3VudGVyKCkgYW5kIHRpbWUucHJvY2Vzc190aW1lKCkgZnVuY3Rpb25zLCBhbmQgcmVuYW1lCisgIHRpbWUuc3RlYWR5KCkgdG8gdGltZS5tb25vdG9uaWMoKS4KKworLSBJc3N1ZSAjMTQ2NDY6IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyKCkgbm93IHNldHMgX19sb2FkZXJfXyBhbmQKKyAgX19wYWNrYWdlX18gKHdoZW4gcG9zc2libGUpLgorCiAtIElzc3VlICMxNDY2NDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBAdW5pdHRlc3Quc2tpcHtJZixVbmxlc3N9IG9uIGEKICAgdGVzdCBjbGFzcyB0aGF0IGRvZXNuJ3QgaW5oZXJpdCBmcm9tIFRlc3RDYXNlIChpLmUuIGEgbWl4aW4pLgogCistIElzc3VlICM0ODkyOiBtdWx0aXByb2Nlc3NpbmcgQ29ubmVjdGlvbnMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBvdmVyCisgIG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucy4gIFBhdGNoIGJ5IFJpY2hhcmQgT3Vka2VyayAoc2J0KS4KKwogLSBJc3N1ZSAjMTQxNjA6IFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQgdG8gcmVzb2x2ZSBzeW1ib2xpYyBsaW5rcyB3aGVuCiAgIHRoZSBsaW5rcyB3ZXJlIG5vdCBsb2NhdGVkIGluIGFuIGFyY2hpdmUgc3ViZGlyZWN0b3J5LgogCkBAIC00MjIsMTcwICsxNTYwLDEwMCBAQAogLSBJc3N1ZSAjMTM2ODQ6IEZpeCBodHRwbGliIHR1bm5lbCBpc3N1ZSBvZiBpbmZpbml0ZSBsb29wcyBmb3IgY2VydGFpbiBzaXRlcwogICB3aGljaCBzZW5kIEVPRiB3aXRob3V0IHRyYWlsaW5nIFxyXG4uCiAKKy0gSXNzdWUgIzE0NjA1OiBBZGQgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyLCBpbXBvcnRsaWIubWFjaGluZXJ5LihGaWxlRmluZGVyLAorICBTb3VyY2VGaWxlTG9hZGVyLCBTb3VyY2VsZXNzRmlsZUxvYWRlciwgRXh0ZW5zaW9uRmlsZUxvYWRlcikuCisKKy0gSXNzdWUgIzEzOTU5OiBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKS9zb3VyY2VfZnJvbV9jYWNoZSgpIG5vdyBmb2xsb3cKKyAgb3MucGF0aC5qb2luKCkvc3BsaXQoKSBzZW1hbnRpY3MgZm9yIHBhdGggbWFuaXB1bGF0aW9uIGluc3RlYWQgb2YgaXRzIHByaW9yLAorICBjdXN0b20gc2VtYW50aWNzIG9mIGNhcmluZyB0aGUgcmlnaHQtbW9zdCBwYXRoIHNlcGFyYXRvciBmb3J3YXJkIGluIHBhdGgKKyAgam9pbmluZy4KKworLSBJc3N1ZSAjMjE5MzogQWxsb3cgIjoiIGNoYXJhY3RlciBpbiBDb29raWUgTkFNRSB2YWx1ZXMuCisKKy0gSXNzdWUgIzE0NjI5OiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIHdpbGwgc3BlY2lmeSB0aGUgZmlsZW5hbWUgaW4gdGhlCisgIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpZiBmb3VuZCBhdCByZWFkbGluZS5fX3NlbGZfXy5uYW1lLgorCiAtIElzc3VlICMxNDYyOTogUmFpc2UgU3ludGF4RXJyb3IgaW4gdG9rZW5pemVyLmRldGVjdF9lbmNvZGluZyBpZiB0aGUKICAgZmlyc3QgdHdvIGxpbmVzIGhhdmUgbm9uLVVURi04IGNoYXJhY3RlcnMgd2l0aG91dCBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbi4KIAogLSBJc3N1ZSAjMTQzMDg6IEZpeCBhbiBleGNlcHRpb24gd2hlbiBhICJkdW1teSIgdGhyZWFkIGlzIGluIHRoZSB0aHJlYWRpbmcKICAgbW9kdWxlJ3MgYWN0aXZlIGxpc3QgYWZ0ZXIgYSBmb3JrKCkuCiAKKy0gSXNzdWUgIzExNzUwOiBUaGUgV2luZG93cyBBUEkgZnVuY3Rpb25zIHNjYXR0ZXJlZCBpbiB0aGUgX3N1YnByb2Nlc3MgYW5kCisgIF9tdWx0aXByb2Nlc3Npbmcud2luMzIgbW9kdWxlcyBub3cgbGl2ZSBpbiBhIHNpbmdsZSBtb2R1bGUgIl93aW5hcGkiLgorICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MDg3OiBtdWx0aXByb2Nlc3Npbmc6IGFkZCBDb25kaXRpb24ud2FpdF9mb3IoKS4gUGF0Y2ggYnkgc2J0LgorCiAtIElzc3VlICMxNDUzODogSFRNTFBhcnNlciBjYW4gbm93IHBhcnNlIGNvcnJlY3RseSBzdGFydCB0YWdzIHRoYXQgY29udGFpbgogICBhIGJhcmUgJy8nLgogCiAtIElzc3VlICMxNDQ1MjogU3lzTG9nSGFuZGxlciBubyBsb25nZXIgaW5zZXJ0cyBhIFVURi04IEJPTSBpbnRvIHRoZSBtZXNzYWdlLgogCistIElzc3VlICMxNDM4NjogRXhwb3NlIHRoZSBkaWN0X3Byb3h5IGludGVybmFsIHR5cGUgYXMgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZS4KKworLSBJc3N1ZSAjMTM5NTk6IE1ha2UgaW1wLnJlbG9hZCgpIGFsd2F5cyB1c2UgYSBtb2R1bGUncyBfX2xvYWRlcl9fIHRvIHBlcmZvcm0KKyAgdGhlIHJlbG9hZC4KKworLSBJc3N1ZSAjMTM5NTk6IEFkZCBpbXAucHkgYW5kIHJlbmFtZSB0aGUgYnVpbHQtaW4gbW9kdWxlIHRvIF9pbXAsIGFsbG93aW5nIGZvcgorICByZS1pbXBsZW1lbnRpbmcgcGFydHMgb2YgdGhlIG1vZHVsZSBpbiBwdXJlIFB5dGhvbi4KKwogLSBJc3N1ZSAjMTM0OTY6IEZpeCBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gYmlzZWN0LmJpc2VjdCBhbGdvcml0aG0gd2hlbiBhcHBsaWVkCiAgIHRvIGEgY29sbGVjdGlvbiBvZiBzaXplID4gc3lzLm1heHNpemUgLyAyLgogCistIEhhdmUgaW1wb3J0bGliIHRha2UgYWR2YW50YWdlIG9mIEltcG9ydEVycm9yJ3MgbmV3ICduYW1lJyBhbmQgJ3BhdGgnCisgIGF0dHJpYnV0ZXMuCisKIC0gSXNzdWUgIzE0Mzk5OiB6aXBmaWxlIG5vdyByZWNvZ25pemVzIHRoYXQgdGhlIGFyY2hpdmUgaGFzIGJlZW4gbW9kaWZpZWQgZXZlbgogICBpZiBvbmx5IHRoZSBjb21tZW50IGlzIGNoYW5nZWQuICBJbiBhZGRpdGlvbiwgdGhlIFR5cGVFcnJvciB0aGF0IHJlc3VsdHMgZnJvbQogICB0cnlpbmcgdG8gc2V0IGEgbm9uLWJpbmFyeSB2YWx1ZSBhcyBhIGNvbW1lbnQgaXMgbm93IG5vdyByYWlzZWQgYXQgdGhlIHRpbWUKICAgdGhlIGNvbW1lbnQgaXMgc2V0IHJhdGhlciB0aGFuIGF0IHRoZSB0aW1lIHRoZSB6aXBmaWxlIGlzIHdyaXR0ZW4uCiAKKy0gdHJhY2UuQ292ZXJhZ2VSZXN1bHRzLmlzX2lnbm9yZWRfZmlsZW5hbWUoKSBub3cgaWdub3JlcyBhbnkgbmFtZSB0aGF0IHN0YXJ0cworICB3aXRoICI8IiBhbmQgZW5kcyB3aXRoICI+IiBpbnN0ZWFkIG9mIHNwZWNpYWwtY2FzaW5nICI8c3RyaW5nPiIgYW5kCisgICI8ZG9jdGVzdCAiLgorCistIElzc3VlICMxMjUzNzogVGhlIG1haWxib3ggbW9kdWxlIG5vIGxvbmdlciBkZXBlbmRzIG9uIGtub3dsZWRnZSBvZiBpbnRlcm5hbAorICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBlbWFpbCBwYWNrYWdlIE1lc3NhZ2Ugb2JqZWN0LgorCiAtIElzc3VlICM3OTc4OiBzb2NrZXRzZXJ2ZXIgbm93IHJlc3RhcnRzIHRoZSBzZWxlY3QoKSBjYWxsIHdoZW4gRUlOVFIgaXMKICAgcmV0dXJuZWQuICBUaGlzIGF2b2lkcyBjcmFzaGluZyB0aGUgc2VydmVyIGxvb3Agd2hlbiBhIHNpZ25hbCBpcyByZWNlaXZlZC4KICAgUGF0Y2ggYnkgSmVyenkgS296ZXJhLgogCistIElzc3VlICMxNDUyMjogQXZvaWQgZHVwbGljYXRpbmcgc29ja2V0IGhhbmRsZXMgaW4gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uCisgIFBhdGNoIGJ5IHNidC4KKworLSBEb24ndCBQeV9ERUNSRUYgTlVMTCB2YXJpYWJsZSBpbiBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLgorCistIElzc3VlICM4NTE1OiBTZXQgX19maWxlX18gd2hlbiBydW4gZmlsZSBpbiBJRExFLgorICBJbml0aWFsIHBhdGNoIGJ5IEJydWNlIEZyZWRlcmlrc2VuLgorCiAtIElzc3VlICMxNDQ5NjogRml4IHdyb25nIG5hbWUgaW4gaWRsZWxpYi90YWJiZWRwYWdlcy5weS4KICAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgogCistIElzc3VlICMzMDMzOiBBZGQgZGlzcGxheW9mIHBhcmFtZXRlciB0byB0a2ludGVyIGZvbnQuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgorCiAtIElzc3VlICMxNDQ4MjogUmFpc2UgYSBWYWx1ZUVycm9yLCBub3QgYSBOYW1lRXJyb3IsIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZQogICBhIG11bHRpcHJvY2Vzc2luZyBDbGllbnQgb3IgTGlzdGVuZXIgd2l0aCBhbiBBRl9VTklYIHR5cGUgYWRkcmVzcyB1bmRlcgogICBXaW5kb3dzLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgogCistIElzc3VlICM4MDIzMTA6IEdlbmVyYXRlIGFsd2F5cyB1bmlxdWUgdGtpbnRlciBmb250IG5hbWVzIGlmIG5vdCBkaXJlY3RseSBwYXNzZWQuCisKIC0gSXNzdWUgIzE0MTUxOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCiAgIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1BJUEUgdHlwZSBhZGRyZXNzIHVuZGVyCiAgIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KIAotLSBJc3N1ZSAjMTM4NzI6IHNvY2tldC5kZXRhY2goKSBub3cgbWFya3MgdGhlIHNvY2tldCBjbG9zZWQgKGFzIG1pcnJvcmVkCi0gIGluIHRoZSBzb2NrZXQgcmVwcigpKS4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorLSBJc3N1ZSAjMTQ0OTM6IFVzZSBndmZzLW9wZW4gb3IgeGRnLW9wZW4gaW4gd2ViYnJvd3Nlci4KIAotLSBJc3N1ZSAjMTQ0MDY6IEZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gdXNpbmcgYGBjb25jdXJyZW50LmZ1dHVyZXMud2FpdCgKLSAgcmV0dXJuX3doZW49QUxMX0NPTVBMRVRFRClgYC4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorQnVpbGQKKy0tLS0tCiAKLS0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93Ci0gIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKLSAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCi0gIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCi0KLS0gSXNzdWUgIzEwMzQwOiBhc3luY29yZSAtIHByb3Blcmx5IGhhbmRsZSBFSU5WQUwgaW4gZGlzcGF0Y2hlciBjb25zdHJ1Y3RvciBvbgotICBPU1g7IGF2b2lkIHRvIGNhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2gKLSAgd2FzIG5vdCBtZWFudCB0byBjb25uZWN0LgotCi0tIElzc3VlICMxMjc1NzogRml4IHRoZSBza2lwcGluZyBvZiBkb2N0ZXN0cyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08gc28KLSAgdGhhdCBpdCB3b3JrcyBpbiB1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCi0KLS0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKLSAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQotCi0tIElzc3VlICMxMzY5NDogYXN5bmNocm9ub3VzIGNvbm5lY3QgaW4gYXN5bmNvcmUuZGlzcGF0Y2hlciBkb2VzIG5vdCBzZXQgYWRkcgotICBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzExNjg2OiBBZGRlZCBtaXNzaW5nIGVudHJpZXMgdG8gZW1haWwgcGFja2FnZSBfX2FsbF9fIGxpc3RzCi0gIChtb3N0bHkgdGhlIG5ldyBCeXRlcyBjbGFzc2VzKS4KLQotLSBJc3N1ZSAjMTA0ODQ6IEZpeCB0aGUgQ0dJSFRUUFNlcnZlcidzIFBBVEhfSU5GTyBoYW5kbGluZyBwcm9ibGVtLgotCi0tIElzc3VlICMxMTE5OTogRml4IHRoZSB3aXRoIHVybGxpYiB3aGljaCBoYW5ncyBvbiBwYXJ0aWN1bGFyIGZ0cCB1cmxzLgotCi0tIElzc3VlICMxNDA2MjogSGVhZGVyIG9iamVjdHMgbm93IGNvcnJlY3RseSByZXNwZWN0IHRoZSAnbGluZXNlcCcgc2V0dGluZwotICB3aGVuIHByb2Nlc3NlZCBieSBCeXRlc1BhcnNlciAod2hpY2ggc210cGxpYi5TTVRQLnNlbmRfbWVzc2FnZSB1c2VzKS4KLQotLSBJc3N1ZSAjMTQyOTE6IEVtYWlsIG5vdyBkZWZhdWx0cyB0byB1dGYtOCBmb3Igbm9uLUFTQ0lJIHVuaWNvZGUgaGVhZGVycwotICBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byAyLjcuCi0KLS0gSXNzdWUgIzUyMTk6IFByZXZlbnQgZXZlbnQgaGFuZGxlciBjYXNjYWRlIGluIElETEUuCi0KLS0gSXNzdWUgIzE0MTg0OiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgotICBNYWMgT1MgWCB0byBhdm9pZCBpbnRlcnByZXRlciBjcmFzaGVzIHdoZW4gdXNpbmcgdGhyZWFkcyBvbiAxMC43LgotCi0tIElzc3VlICMxMDU0MzogRml4IHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHdpdGggSnl0aG9uIGJ5dGVjb2RlIGZpbGVzLgotCi0tIElzc3VlICMxNDI1MjogRml4IHN1YnByb2Nlc3MuUG9wZW4udGVybWluYXRlKCkgdG8gbm90IHJhaXNlIGFuIGVycm9yIHVuZGVyCi0gIFdpbmRvd3Mgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQuCi0KLS0gSXNzdWUgIzE0MTk1OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCB3ZWFrcmVmLldlYWtTZXQgaW5zdGFuY2VzIHRvIGluY29ycmVjdGx5Ci0gIHJldHVybiBUcnVlIGZvciBhIFdlYWtTZXQgaW5zdGFuY2UgJ2EnIGluIGJvdGggJ2EgPCBhJyBhbmQgJ2EgPiBhJyBoYXMgYmVlbgotICBmaXhlZC4KLQotLSBJc3N1ZSAjMTQxNzc6IG1hcnNoYWwubG9hZHMoKSBub3cgcmFpc2VzIFR5cGVFcnJvciB3aGVuIGdpdmVuIGFuIHVuaWNvZGUKLSAgc3RyaW5nLiAgUGF0Y2ggYnkgR3VpbGhlcm1lIEdvbsOnYWx2ZXMuCi0KLS0gSXNzdWUgIzE0MTU5OiBGaXggdGhlIGxlbigpIG9mIHdlYWsgY29udGFpbmVycyAoV2Vha1NldCwgV2Vha0tleURpY3Rpb25hcnksCi0gIFdlYWtWYWx1ZURpY3Rpb25hcnkpIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uIHdoZW4gc29tZSBvYmplY3RzCi0gIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgotICBPKG4pLgotCi0tIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KLSAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgotCi0tIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKLSAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgotCi0tIElzc3VlICM4MDMzOiBzcWxpdGUzOiBGaXggNjQtYml0IGludGVnZXIgaGFuZGxpbmcgaW4gdXNlciBmdW5jdGlvbnMKLSAgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuIEluaXRpYWwgcGF0Y2ggYnkgUGhpbGlwcGUgRGV2YWxrZW5lZXIuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjAxMjogRml4IGEgcmVncmVzc2lvbiBpbiBweWV4cGF0LiBUaGUgcGFyc2VyJ3MgVXNlRm9yZWlnbkRURCgpCi0gIG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW4gYXJndW1lbnQgYWdhaW4uCi0KLS0gSXNzdWUgIzE1Njc2OiBOb3cgIm1tYXAiIGNoZWNrIGZvciBlbXB0eSBmaWxlcyBiZWZvcmUgZG9pbmcgdGhlCi0gIG9mZnNldCBjaGVjay4gIFBhdGNoIGJ5IFN0ZXZlbiBXaWxsaXMuCi0KLS0gSXNzdWUgIzY0OTM6IEFuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMKLSAgb2YgdHlwZSBjdHlwZXMuY191aW50MzIgYW5kIHdpZHRoIDMyIHRvIGluY29ycmVjdGx5IGJlIHNldCBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUwMDA6IFN1cHBvcnQgdGhlICJ1bmlxdWUiIHgzMiBhcmNoaXRlY3R1cmUgaW4gX3Bvc2l4c3VicHJvY2Vzcy5jLgotCi0tIElzc3VlICM5MDQxOiBBbiBpc3N1ZSBpbiBjdHlwZXMuY19sb25nZG91YmxlLCBjdHlwZXMuY19kb3VibGUsIGFuZAotICBjdHlwZXMuY19mbG9hdCB0aGF0IGNhdXNlZCBhbiBpbmNvcnJlY3QgZXhjZXB0aW9uIHRvIGJlIHJldHVybmVkIGluIHRoZQotICBjYXNlIG9mIG92ZXJmbG93IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNDIxMjogVGhlIHJlIG1vZHVsZSBkaWRuJ3QgcmV0YWluIGEgcmVmZXJlbmNlIHRvIGJ1ZmZlcnMgaXQgd2FzCi0gIHNjYW5uaW5nLCByZXN1bHRpbmcgaW4gc2VnZmF1bHRzLgorLSAibWFrZSB0b3VjaCIgd2lsbCBub3cgdG91Y2ggZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIGNoZWNrZWQgaW50byBNZXJjdXJpYWwsCisgIGFmdGVyIGEgImhnIHVwZGF0ZSIgd2hpY2ggZmFpbGVkIHRvIGJyaW5nIHRoZSB0aW1lc3RhbXBzIGludG8gdGhlIHJpZ2h0IG9yZGVyLgogCiBUZXN0cwogLS0tLS0KIAotLSBJc3N1ZSAjMTUzMDQ6IEZpeCB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiBvcy5jaGRpcigpIGZhaWxzIGluc2lkZQotICB0ZXN0LnN1cHBvcnQudGVtcF9jd2QoKS4gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTgwMjogRml4IHRlc3QgbG9naWMgaW4gVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wLiBQYXRjaAotICBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTc0NzogWkZTIGFsd2F5cyByZXR1cm5zIEVPUE5PVFNVUFAgd2hlbiBhdHRlbXB0aW5nIHRvIHNldCB0aGUKLSAgVUZfSU1NVVRBQkxFIGZsYWcgKHZpYSBlaXRoZXIgY2hmbGFncyBvciBsY2hmbGFncyk7IHJlZmFjdG9yIGFmZmVjdGVkCi0gIHRlc3RzIGluIHRlc3RfcG9zaXgucHkgdG8gYWNjb3VudCBmb3IgdGhpcy4KLQotLSBJc3N1ZSAjMTUyODU6IFJlZmFjdG9yIHRoZSBhcHByb2FjaCBmb3IgdGVzdGluZyBjb25uZWN0IHRpbWVvdXRzIHVzaW5nCi0gIHR3byBleHRlcm5hbCBob3N0cyB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgdGhpcyB0eXBlCi0gIG9mIHRlc3QuCi0KLS0gSXNzdWUgIzE1NjE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGpzb24gbW9kdWxlJ3MgaGFuZGxpbmcgb2YgaW52YWxpZAotICBpbnB1dCBkYXRhLiAgUGF0Y2ggYnkgS3VzaGFsIERhcy4KLQotLSBJc3N1ZSAjMTU0OTY6IEFkZCBkaXJlY3RvcnkgcmVtb3ZhbCBoZWxwZXJzIGZvciB0ZXN0cyBvbiBXaW5kb3dzLgotICBQYXRjaCBieSBKZXJlbXkgS2xvdGguCi0KLS0gSXNzdWUgIzE1NDY3OiBNb3ZlIGhlbHBlcnMgZm9yIF9fc2l6ZW9mX18gdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MzIwOiBNYWtlIGl0ZXJhdGluZyB0aGUgbGlzdCBvZiB0ZXN0cyB0aHJlYWQtc2FmZSB3aGVuIHJ1bm5pbmcKLSAgdGVzdHMgaW4gbXVsdGlwcm9jZXNzIG1vZGUuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTIzMDogQWRvcHRlZCBhIG1vcmUgc3lzdGVtYXRpYyBhcHByb2FjaCBpbiB0aGUgcnVucHkgdGVzdHMKLQotLSBJc3N1ZSAjMTUzMDA6IEVuc3VyZSB0aGUgdGVtcG9yYXJ5IHRlc3Qgd29ya2luZyBkaXJlY3RvcmllcyBhcmUgaW4gdGhlIHNhbWUKLSAgcGFyZW50IGZvbGRlciB3aGVuIHJ1bm5pbmcgdGVzdHMgaW4gbXVsdGlwcm9jZXNzIG1vZGUgZnJvbSBhIFB5dGhvbiBidWlsZC4KLSAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gdGVzdF9ubnRwbGliIG5vdyB0b2xlcmF0ZXMgYmVpbmcgcnVuIGZyb20gYmVoaW5kIE5OVFAgZ2F0ZXdheXMgdGhhdCBhZGQKLSAgIlgtQW50aXZpcnVzIiBoZWFkZXJzIHRvIGFydGljbGVzCi0KLS0gSXNzdWUgIzE1MDQzOiB0ZXN0X2dkYiBpcyBub3cgc2tpcHBlZCBlbnRpcmVseSBpZiBnZGIgc2VjdXJpdHkgc2V0dGluZ3MKLSAgYmxvY2sgbG9hZGluZyBvZiB0aGUgZ2RiIGhvb2tzCi0KIC0gSXNzdWUgIzE0MDI2OiBJbiB0ZXN0X2NtZF9saW5lX3NjcmlwdCwgY2hlY2sgdGhhdCBzeXMuYXJndiBpcyBwb3B1bGF0ZWQKICAgY29ycmVjdGx5IGZvciB0aGUgdmFyaW91cyBpbnZvY2F0aW9uIGFwcHJvYWNoZXMgKFBhdGNoIGJ5IEphc29uIFllbykKIApAQCAtNTk1LDE1NSArMTY2MywzMTAgQEAKIC0gSXNzdWUgIzE0NTg5OiBVcGRhdGUgY2VydGlmaWNhdGUgY2hhaW4gZm9yIHNoYTI1Ni50YnMtaW50ZXJuZXQuY29tLCBmaXhpbmcKICAgYSB0ZXN0IGZhaWx1cmUgaW4gdGVzdF9zc2wuCiAKLUJ1aWxkCi0tLS0tLQorLSBJc3N1ZSAjMTQzNTU6IFJlZ3J0ZXN0IG5vdyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLCBhbmQKKyAgd2lsbCB1c2UgaXQgaWYgYSB0ZXN0IGZpbGUgY29udGFpbnMgbm8gYHRlc3RfbWFpbmAgbWV0aG9kLgogCi0tIElzc3VlICMxNjI2MjogZml4IG91dC1vZi1zcmMtdHJlZSBidWlsZHMsIGlmIG1lcmN1cmlhbCBpcyBub3QgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxNTkyMzogZml4IGEgbWlzdGFrZSBpbiBhc2RsX2MucHkgdGhhdCByZXN1bHRlZCBpbiBhIFR5cGVFcnJvciBhZnRlcgotICAyODAxYmY4NzVhMjQgKHNlZSAjMTU4MDEpLgotCi0tIElzc3VlICMxMTcxNTogRml4IG11bHRpYXJjaCBkZXRlY3Rpb24gd2l0aG91dCBoYXZpbmcgRGViaWFuIGRldmVsb3BtZW50Ci0gIHRvb2xzIChkcGtnLWRldikgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxNTgxOTogTWFrZSBzdXJlIHdlIGNhbiBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWRvbmx5Ci0gIHNvdXJjZSBkaXJlY3RvcnkuICAoU29tZXdoYXQgcmVsYXRlZCB0byBJc3N1ZSAjOTg2MC4pCi0KLS0gSXNzdWUgIzE1ODIyOiBFbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTU1NjA6IEZpeCBidWlsZGluZyBfc3FsaXRlMyBleHRlbnNpb24gb24gT1MgWCB3aXRoIGFuIFNESy4KLQotLSBJc3N1ZSAjODg0NzogRGlzYWJsZSBDT01EQVQgZm9sZGluZyBpbiBXaW5kb3dzIFBHTyBidWlsZHMuCi0KLS0gSXNzdWUgIzE0MTk3OiBGb3IgT1MgWCBmcmFtZXdvcmsgYnVpbGRzLCBlbnN1cmUgbGlua3MgdG8gdGhlIHNoYXJlZAotICBsaWJyYXJ5IGFyZSBjcmVhdGVkIHdpdGggdGhlIHByb3BlciBBQkkgc3VmZml4LgotCi0tIElzc3VlICMxNDQ3MjogVXBkYXRlIC5naXRpZ25vcmUuIFBhdGNoIGJ5IE1hdGVqIENlcGwuCi0KLS0gVGhlIFdpbmRvd3MgYnVpbGQgbm93IHVzZXMgT3BlblNTTCAxLjAuMGogYW5kIGJ6aXAyIDEuMC42LgotCi0tIElzc3VlICMxNDU1NzogRml4IGV4dGVuc2lvbnMgYnVpbGQgb24gSFAtVVguIFBhdGNoIGJ5IEFkaSBSb2liYW4uCi0KLS0gSXNzdWUgIzE0NDM3OiBGaXggYnVpbGRpbmcgdGhlIF9pbyBtb2R1bGUgdW5kZXIgQ3lnd2luLgotCi0tIElzc3VlICMxNDM4NzogRG8gbm90IGluY2x1ZGUgYWNjdS5oIGZyb20gUHl0aG9uLmguCi0KLS0gSXNzdWUgIzE0MzU5OiBPbmx5IHVzZSBPX0NMT0VYRUMgaW4gX3Bvc2l4bW9kdWxlLmMgaWYgaXQgaXMgZGVmaW5lZC4KLSAgQmFzZWQgb24gcGF0Y2ggZnJvbSBIZXJ2w6kgQ29hdGFuaGF5LgotCi0tIElzc3VlICMxNDAxODogRml4IE9TIFggVGNsL1RrIGZyYW1ld29yayBjaGVja2luZyB3aGVuIHVzaW5nIE9TIFggU0RLcy4KLQotRG9jdW1lbnRhdGlvbgorVG9vbHMgLyBEZW1vcwogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICM4MDQwOiBhZGRlZCBhIHZlcnNpb24gc3dpdGNoZXIgdG8gdGhlIGRvY3VtZW50YXRpb24uICBQYXRjaCBieQotICBZdXJ5IFNlbGl2YW5vdi4KKy0gSXNzdWUgIzM1NjE6IFRoZSBXaW5kb3dzIGluc3RhbGxlciBub3cgaGFzIGFuIG9wdGlvbiwgb2ZmIGJ5IGRlZmF1bHQsIGZvcgorICBwbGFjaW5nIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGludG8gdGhlIHN5c3RlbSAiUGF0aCIgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKLS0gSXNzdWUgIzE2MTE1OiBJbXByb3ZlIHN1YnByb2Nlc3MuUG9wZW4oKSBkb2N1bWVudGF0aW9uIGFyb3VuZCBhcmdzLCBzaGVsbCwKLSAgYW5kIGV4ZWN1dGFibGUgYXJndW1lbnRzLgotCi0tIElzc3VlICMxMzQ5ODogQ2xhcmlmeSBkb2NzIG9mIG9zLm1ha2VkaXJzKCkncyBleGlzdF9vayBhcmd1bWVudC4gIERvbmUgd2l0aAotICBncmVhdCBuYXRpdmUtc3BlYWtlciBoZWxwIGZyb20gUi4gRGF2aWQgTXVycmF5LgotCi0tIElzc3VlICMxNTUzMzogQ2xhcmlmeSBkb2NzIGFuZCBhZGQgdGVzdHMgZm9yIHN1YnByb2Nlc3MuUG9wZW4oKSdzIGN3ZAotICBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTU5Nzk6IEltcHJvdmUgdGltZWl0IGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE2MDM2OiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgYnVpbHQtaW4gaW50KCkncyBzaWduYXR1cmUgYW5kCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTU5MzU6IENsYXJpZmljYXRpb24gb2YgYXJncGFyc2UgZG9jcywgcmU6IGFkZF9hcmd1bWVudCgpIHR5cGUgYW5kCi0gIGRlZmF1bHQgYXJndW1lbnRzLiAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzExOTY0OiBEb2N1bWVudCBhIGNoYW5nZSBpbiB2My4yIHRvIHRoZSBiZWhhdmlvciBvZiB0aGUgaW5kZW50Ci0gIHBhcmFtZXRlciBvZiBqc29uIGVuY29kaW5nIG9wZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBqc29uIG1vZHVsZSdzIHN0YW5kYXJkIGNvbXBsaWFuY2UuCi0gIFBhdGNoIGJ5IENocmlzIFJlYmVydC4KLQotLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiBQYXRjaCBieQotICBEYW5pZWwgRWxsaXMuCi0KLS0gSXNzdWUgIzE1NDQ0OiBVc2UgcHJvcGVyIHNwZWxsaW5nIGZvciBub24tQVNDSUkgY29udHJpYnV0b3IgbmFtZXMuICBQYXRjaAotICBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlIDE1NDgyOiBQcm9wZXJseSBkb2N1bWVudCB0aGUgZGVmYXVsdCAnbGV2ZWwnIHZhbHVlIGZvciBfX2ltcG9ydF9fKCkKLSAgd2hpbGUgd2FybmluZyBhYm91dCB1c2luZyBuZWdhdGl2ZSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weQotICBtb2R1bGUgYW5kIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gZXhlYyBvcgotICBleGVjZmlsZSgpLgotCi0tIElzc3VlICM4Nzk5OiBGaXggYW5kIGltcHJvdmUgdGhlIHRocmVhZGluZy5Db25kaXRpb24gZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTQ5NDM6IENvcnJlY3QgYSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlIGZvciB3aW5yZWcuT3BlbktleQotICBhbmQgY29ycmVjdGx5IGxpc3QgdGhlIGFyZ3VtZW50IG5hbWVzIGluIHRoZSBmdW5jdGlvbidzIGV4cGxhbmF0aW9uLgotCi0tIElzc3VlICMxNDAzNDogYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgotCi0tIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBmaWxlY21wLmRpcmNtcCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCi0gIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTUzNzg6IEZpeCBUb29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNDY5NTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3Igc3RhcnJlZCBhc3NpZ25tZW50cyBpbgotICBUb29scy9wYXJzZXIvdW5wYXJzZS5weS4KKy0gSXNzdWUgIzEzMTY1OiBzdHJpbmdiZW5jaCBpcyBub3cgYXZhaWxhYmxlIGluIHRoZSBUb29scy9zdHJpbmdiZW5jaCBmb2xkZXIuCisgIEl0IHVzZWQgdG8gbGl2ZSBpbiBpdHMgb3duIFNWTiBwcm9qZWN0LgogCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotKlJlbGVhc2UgZGF0ZTogMTAtQXByLTIwMTIqCisqUmVsZWFzZSBkYXRlOiAwMS1BcHItMjAxMioKIAotQnVpbGQKLS0tLS0tCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTQzODc6IFdvcmsgYXJvdW5kIGEgcHJvYmxlbSBidWlsZGluZyBleHRlbnNpb24gbW9kdWxlcyB1bmRlciBXaW5kb3dzCi0gIGJ5IHVuZGVmaW5pbmcgYGBzbWFsbGBgIGJlZm9yZSB1c2UgaW4gdGhlIFB5dGhvbiBoZWFkZXJzLgorLSBJc3N1ZSAjMTY4MzM2ODogb2JqZWN0Ll9fbmV3X18gYW5kIG9iamVjdC5fX2luaXRfXyByYWlzZSBhIFR5cGVFcnJvciBpZiB0aGV5CisgIGFyZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVpciBjb21wbGVtZW50YXJ5IG1ldGhvZCBpcyBub3Qgb3ZlcnJpZGRlbi4KIAorLSBJc3N1ZSAjMTQzNzg6IEZpeCBjb21waWxpbmcgYXN0LkltcG9ydEZyb20gbm9kZXMgd2l0aCBhICJfX2Z1dHVyZV9fIiBzdHJpbmcgYXMKKyAgdGhlIG1vZHVsZSBuYW1lIHRoYXQgd2FzIG5vdCBpbnRlcm5lZC4KIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjMgcmVsZWFzZSBjYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistIElzc3VlICMxNDMzMTogVXNlIHNpZ25pZmljYW50bHkgbGVzcyBzdGFjayBzcGFjZSB3aGVuIGltcG9ydGluZyBtb2R1bGVzIGJ5CisgIGFsbG9jYXRpbmcgcGF0aCBidWZmZXJzIG9uIHRoZSBoZWFwIGluc3RlYWQgb2YgdGhlIHN0YWNrLgogCi0qUmVsZWFzZSBkYXRlOiAxOC1NYXItMjAxMioKKy0gSXNzdWUgIzE0MzM0OiBQcmV2ZW50IGluIGEgc2VnZmF1bHQgaW4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fIHdoZW4gaXQgd2FzIG5vdAorICBwYXNzZWQgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTQ2OTYyOTogQWxsb3cgY3ljbGVzIHRocm91Z2ggYW4gb2JqZWN0J3MgX19kaWN0X18gc2xvdCB0byBiZQorICBjb2xsZWN0ZWQuIChGb3IgZXhhbXBsZSBpZiBgYHguX19kaWN0X18gaXMgeGBgKS4KKworLSBJc3N1ZSAjMTQyMDU6IGRpY3QgbG9va3VwIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUgZGljdCBpcyBtb2RpZmllZAorICBkdXJpbmcgYSBsb29rdXAuCisKKy0gSXNzdWUgIzE0MjIwOiBXaGVuIGEgZ2VuZXJhdG9yIGlzIGRlbGVnYXRpbmcgdG8gYW5vdGhlciBpdGVyYXRvciB3aXRoIHRoZQorICB5aWVsZCBmcm9tIHN5bnRheCwgaXQgbmVlZHMgdG8gaGF2ZSBpdHMgYGBnaV9ydW5uaW5nYGAgZmxhZyBzZXQgdG8gVHJ1ZS4KKworLSBJc3N1ZSAjMTQ0MzU6IFJlbW92ZSBkZWRpY2F0ZWQgYmxvY2sgYWxsb2NhdG9yIGZyb20gZmxvYXRvYmplY3QuYyBhbmQgcmVseQorICBvbiB0aGUgUHlPYmplY3RfTWFsbG9jKCkgYXBpIGxpa2UgYWxsIG90aGVyIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KKworLSBJc3N1ZSAjMTQyODg6IEFsbG93IHRoZSBzZXJpYWxpemF0aW9uIG9mIGJ1aWx0aW4gaXRlcmF0b3JzCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCi0gIG9uIFdpbmRvd3MuCistIElzc3VlICMxNDMwMDogVW5kZXIgV2luZG93cywgc29ja2V0cyBjcmVhdGVkIHVzaW5nIHNvY2tldC5kdXAoKSBub3cgYWxsb3cKKyAgb3ZlcmxhcHBlZCBJL08uICBQYXRjaCBieSBzYnQuCiAKLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjMTM4NzI6IHNvY2tldC5kZXRhY2goKSBub3cgbWFya3MgdGhlIHNvY2tldCBjbG9zZWQgKGFzIG1pcnJvcmVkCisgIGluIHRoZSBzb2NrZXQgcmVwcigpKS4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorCistIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAorICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCisKKy0gSXNzdWUgIzUxMzY6IGRlcHJlY2F0ZSBvbGQsIHVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyLgorCistIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdworICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCisgIGhhcyB0byB1c2UgdGhlIGJ1aWx0LWluIGRlZmF1bHQga2V5IGJpbmRpbmdzLgorICBUaGVyZSB3YXMgcHJldmlvdXNseSBhIGJ1ZyBpbiBvbmUgb2YgdGhlIGRlZmF1bHRzLgorCistIElzc3VlICMxNDQxNjogc3lzbG9nIG5vdyBkZWZpbmVzIHRoZSBMT0dfT0RFTEFZIGFuZCBMT0dfQVVUSFBSSVYgY29uc3RhbnRzCisgIGlmIHRoZXkgYXJlIGRlZmluZWQgaW4gPHN5c2xvZy5oPi4KKworLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBweXRob24gLW0gaWRsZWxpYgorCistIElzc3VlICMxNDI5NTogQWRkIHVuaXR0ZXN0Lm1vY2sKKworLSBJc3N1ZSAjNzY1MjogQWRkIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgb3B0aW9uIHRvIGNvbmZpZ3VyZSBmb3IgbGlua2luZworICB0aGUgX2RlY2ltYWwgbW9kdWxlIGFnYWluc3QgYW4gaW5zdGFsbGVkIGxpYm1wZGVjLgorCistIElzc3VlICMxNDM4MDogTUlNRVRleHQgbm93IGRlZmF1bHRzIHRvIHV0Zi04IHdoZW4gcGFzc2VkIG5vbi1BU0NJSSB1bmljb2RlCisgIHdpdGggbm8gY2hhcnNldCBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzEwMzQwOiBhc3luY29yZSAtIHByb3Blcmx5IGhhbmRsZSBFSU5WQUwgaW4gZGlzcGF0Y2hlciBjb25zdHJ1Y3RvciBvbgorICBPU1g7IGF2b2lkIHRvIGNhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2gKKyAgd2FzIG5vdCBtZWFudCB0byBjb25uZWN0LgorCistIElzc3VlICMxNDIwNDogVGhlIHNzbCBtb2R1bGUgbm93IGhhcyBzdXBwb3J0IGZvciB0aGUgTmV4dCBQcm90b2NvbAorICBOZWdvdGlhdGlvbiBleHRlbnNpb24sIGlmIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZyBPcGVuU1NMIGxpYnJhcnkuCisgIFBhdGNoIGJ5IENvbGluIE1hcmMuCisKKy0gSXNzdWUgIzMwMzU6IFVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyIGFyZSBtYXJrZWQgYXMgcGVuZGluZyBkZXByZWNhdGVkLgorCistIElzc3VlICMxMjc1NzogRml4IHRoZSBza2lwcGluZyBvZiBkb2N0ZXN0cyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08gc28KKyAgdGhhdCBpdCB3b3JrcyBpbiB1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCisKKy0gSXNzdWUgIzc2NTI6IEludGVncmF0ZSB0aGUgZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaWJtcGRlYyBsaWJyYXJ5IHRvIHNwZWVkCisgIHVwIHRoZSBkZWNpbWFsIG1vZHVsZS4gUGVyZm9ybWFuY2UgZ2FpbnMgb2YgdGhlIG5ldyBDIGltcGxlbWVudGF0aW9uIGFyZQorICBiZXR3ZWVuIDEweCBhbmQgMTAweCwgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncworICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCisKKy0gSXNzdWUgIzE0MjY5OiBTTVRQRCBub3cgY29uZm9ybXMgdG8gdGhlIFJGQyBhbmQgcmVxdWlyZXMgYSBIRUxPIGNvbW1hbmQKKyAgYmVmb3JlIE1BSUwsIFJDUFQsIG9yIERBVEEuCisKKy0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCisgIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMTQzNDQ6IGZpeGVkIHRoZSByZXByIG9mIGVtYWlsLnBvbGljeSBvYmplY3RzLgorCistIElzc3VlICMxMTY4NjogQWRkZWQgbWlzc2luZyBlbnRyaWVzIHRvIGVtYWlsIHBhY2thZ2UgX19hbGxfXyBsaXN0cworICAobW9zdGx5IHRoZSBuZXcgQnl0ZXMgY2xhc3NlcykuCisKKy0gSXNzdWUgIzE0MzM1OiBtdWx0aXByb2Nlc3NpbmcncyBjdXN0b20gUGlja2xlciBzdWJjbGFzcyBub3cgaW5oZXJpdHMgZnJvbQorICB0aGUgQy1hY2NlbGVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTA0ODQ6IEZpeCB0aGUgQ0dJSFRUUFNlcnZlcidzIFBBVEhfSU5GTyBoYW5kbGluZyBwcm9ibGVtLgorCistIElzc3VlICMxMTE5OTogRml4IHRoZSB3aXRoIHVybGxpYiB3aGljaCBoYW5ncyBvbiBwYXJ0aWN1bGFyIGZ0cCB1cmxzLgorCistIEltcHJvdmUgdGhlIG1lbW9yeSB1dGlsaXphdGlvbiBhbmQgc3BlZWQgb2YgZnVuY3Rvb2xzLmxydV9jYWNoZS4KKworLSBJc3N1ZSAjMTQyMjI6IFVzZSB0aGUgbmV3IHRpbWUuc3RlYWR5KCkgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aW1lLnRpbWUoKSBmb3IKKyAgdGltZW91dCBpbiBxdWV1ZSBhbmQgdGhyZWFkaW5nIG1vZHVsZXMgdG8gbm90IGJlIGFmZmVjdGVkIG9mIHN5c3RlbSB0aW1lCisgIHVwZGF0ZS4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBsaWIydG8zLnB5dHJlZS5CYXNlLmdldF9wcmVmaXgvc2V0X3ByZWZpeC4KIAogLSBJc3N1ZSAjMTQyMzQ6IENWRS0yMDEyLTA4NzY6IFJhbmRvbWl6ZSBoYXNoZXMgb2YgeG1sIGF0dHJpYnV0ZXMgaW4gdGhlIGhhc2gKICAgdGFibGUgaW50ZXJuYWwgdG8gdGhlIHB5ZXhwYXQgbW9kdWxlJ3MgY29weSBvZiB0aGUgZXhwYXQgbGlicmFyeSB0byBhdm9pZCBhCiAgIGRlbmlhbCBvZiBzZXJ2aWNlIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtIHdpdGggc29tZQogICBtb2RpZmljYXRpb25zIGJ5IHRoZSBleHBhdCBwcm9qZWN0LgogCistIElzc3VlICMxNDIwMDogSWRsZSBzaGVsbCBjcmFzaCBvbiBwcmludGluZyBub24tQk1QIHVuaWNvZGUgY2hhcmFjdGVyLgogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMyByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSXNzdWUgIzEyODE4OiBmb3JtYXQgYWRkcmVzcyBubyBsb25nZXIgbmVlZGxlc3NseSBcIGVzY2FwZXMgKClzIGluIG5hbWVzIHdoZW4KKyAgdGhlIG5hbWUgZW5kcyB1cCBiZWluZyBxdW90ZWQuCiAKLSpSZWxlYXNlIGRhdGU6IDI0LUZlYi0yMDEyKgorLSBJc3N1ZSAjMTQwNjI6IEJ5dGVzR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgZm9sZHMgSGVhZGVyIG9iamVjdHMsCisgIGluY2x1ZGluZyB1c2luZyBsaW5lc2VwIHdoZW4gZm9sZGluZy4KKworLSBJc3N1ZSAjMTM4Mzk6IFdoZW4gaW52b2tlZCBvbiB0aGUgY29tbWFuZC1saW5lLCB0aGUgcHN0YXRzIG1vZHVsZSBub3cKKyAgYWNjZXB0cyBzZXZlcmFsIGZpbGVuYW1lcyBvZiBwcm9maWxlIHN0YXQgZmlsZXMgYW5kIG1lcmdlcyB0aGVtIGFsbC4KKyAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCisKKy0gSXNzdWUgIzE0MjkxOiBFbWFpbCBub3cgZGVmYXVsdHMgdG8gdXRmLTggZm9yIG5vbi1BU0NJSSB1bmljb2RlIGhlYWRlcnMKKyAgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gMi43LgorCistIElzc3VlICM5ODk3MTI6IFN1cHBvcnQgdXNpbmcgVGsgd2l0aG91dCBhIG1haW5sb29wLgorCistIElzc3VlICM1MjE5OiBQcmV2ZW50IGV2ZW50IGhhbmRsZXIgY2FzY2FkZSBpbiBJRExFLgorCistIElzc3VlICMzODM1OiBSZWZ1c2UgdG8gdXNlIHVudGhyZWFkZWQgVGNsIGluIHRocmVhZGVkIFB5dGhvbi4KKworLSBJc3N1ZSAjMjg0MzogQWRkIG5ldyBUayBBUEkgdG8gVGtpbnRlci4KKworLSBJc3N1ZSAjMTQxODQ6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCisgIE1hYyBPUyBYIHRvIGF2b2lkIGludGVycHJldGVyIGNyYXNoZXMgd2hlbiB1c2luZyB0aHJlYWRzIG9uIDEwLjcuCisKKy0gSXNzdWUgIzE0MTgwOiBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwKKyAgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZCBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkKKyAgbm93IHJhaXNlIGFuIE9TRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yIGlmIGxvY2FsdGltZSgpIG9yIGdtdGltZSgpIGZhaWxlZC4KKworLSBJc3N1ZSAjMTQxODA6IHRpbWUuY3RpbWUoKSwgZ210aW1lKCksIHRpbWUubG9jYWx0aW1lKCksCisgIGRhdGV0aW1lLmRhdGUuZnJvbXRpbWVzdGFtcCgpLCBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kCisgIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IsIGluc3RlYWQgb2YKKyAgYSBWYWx1ZUVycm9yLCBpZiB0aGUgdGltZXN0YW1wIGRvZXMgbm90IGZpdCBpbiB0aW1lX3QuCisKKy0gSXNzdWUgIzE0MTgwOiBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kCisgIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKSBub3cgcm91bmQgbWljcm9zZWNvbmRzIHRvd2FyZHMgemVybworICBpbnN0ZWFkIG9mIHJvdW5kaW5nIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIGF3YXkgZnJvbSB6ZXJvLgorCistIElzc3VlICMxMDU0MzogRml4IHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHdpdGggSnl0aG9uIGJ5dGVjb2RlIGZpbGVzLgorCistIElzc3VlICMxMTc4ODYzOiBTZXBhcmF0ZSBpbml0aWFsaXNhdGlvbiBmcm9tIHNldHRpbmcgd2hlbiBpbml0aWFsaXppbmcKKyAgVGtpbnRlci5WYXJpYWJsZXM7IGhhcm1vbml6ZSBleGNlcHRpb25zIHRvIFZhbHVlRXJyb3I7IG9ubHkgZGVsZXRlIHZhcmlhYmxlcworICB0aGF0IGhhdmUgbm90IGJlZW4gZGVsZXRlZDsgYXNzZXJ0IHRoYXQgdmFyaWFibGUgbmFtZXMgYXJlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzE0MTA0OiBJbXBsZW1lbnQgdGltZS5tb25vdG9uaWMoKSBvbiBNYWMgT1MgWCwgcGF0Y2ggd3JpdHRlbiBieQorICBOaWNob2xhcyBSaWxleS4KKworLSBJc3N1ZSAjMTMzOTQ6IHRoZSBhaWZjIG1vZHVsZSBub3cgdXNlcyB3YXJuaW5ncy53YXJuKCkgdG8gc2lnbmFsIHdhcm5pbmdzLgorCistIElzc3VlICMxNDI1MjogRml4IHN1YnByb2Nlc3MuUG9wZW4udGVybWluYXRlKCkgdG8gbm90IHJhaXNlIGFuIGVycm9yIHVuZGVyCisgIFdpbmRvd3Mgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQuCisKKy0gSXNzdWUgIzE0MjIzOiBjdXJzZXMuYWRkY2goKSBpcyBubyBtb3JlIGxpbWl0ZWQgdG8gdGhlIHJhbmdlIDAtMjU1IHdoZW4gdGhlCisgIFB5dGhvbiBjdXJzZXMgaXMgbm90IGxpbmtlZCB0byBsaWJuY3Vyc2Vzdy4gSXQgd2FzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkCisgIGluIFB5dGhvbiAzLjNhMS4KKworLSBJc3N1ZSAjMTQxNjg6IENoZWNrIGZvciBwcmVzZW5jZSBvZiBFbGVtZW50Ll9hdHRycyBpbiBtaW5pZG9tIGJlZm9yZQorICBhY2Nlc3NpbmcgaXQuCisKKy0gSXNzdWUgIzEyMzI4OiBGaXggbXVsdGlwcm9jZXNzaW5nJ3MgdXNlIG9mIG92ZXJsYXBwZWQgSS9PIG9uIFdpbmRvd3MuCisgIEFsc28sIGFkZCBhIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLndhaXQocmxpc3QsIHRpbWVvdXQ9Tm9uZSkgZnVuY3Rpb24KKyAgZm9yIHBvbGxpbmcgbXVsdGlwbGUgb2JqZWN0cyBhdCBvbmNlLiAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxNDAwNzogQWNjZXB0IGluY29tcGxldGUgVHJlZUJ1aWxkZXIgb2JqZWN0cyAobWlzc2luZyBzdGFydCwgZW5kLAorICBkYXRhIG9yIGNsb3NlIG1ldGhvZCkgZm9yIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gYXMgd2VsbC4KKyAgRHJvcCB0aGUgbm8tb3AgVHJlZUJ1aWxkZXIoKS54bWwoKSBtZXRob2QgZnJvbSB0aGUgQyBpbXBsZW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTQyMTA6IHBkYiBub3cgaGFzIHRhYi1jb21wbGV0aW9uIG5vdCBvbmx5IGZvciBjb21tYW5kIG5hbWVzLCBidXQKKyAgYWxzbyBmb3IgdGhlaXIgYXJndW1lbnRzLCB3aGVyZXZlciBwb3NzaWJsZS4KKworLSBJc3N1ZSAjMTQzMTA6IFNvY2tldHMgY2FuIG5vdyBiZSB3aXRoIG90aGVyIHByb2Nlc3NlcyBvbiBXaW5kb3dzIHVzaW5nCisgIHRoZSBhcGkgc29ja2V0LnNvY2tldC5zaGFyZSgpIGFuZCBzb2NrZXQuZnJvbXNoYXJlKCkuCisKKy0gSXNzdWUgIzEwNTc2OiBUaGUgZ2MgbW9kdWxlIG5vdyBoYXMgYSAnY2FsbGJhY2tzJyBtZW1iZXIgdGhhdCB3aWxsIGdldAorICBjYWxsZWQgd2hlbiBnYXJiYWdlIGNvbGxlY3Rpb24gdGFrZXMgcGxhY2UuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNDU1NzogRml4IGV4dGVuc2lvbnMgYnVpbGQgb24gSFAtVVguIFBhdGNoIGJ5IEFkaSBSb2liYW4uCisKKy0gSXNzdWUgIzE0Mzg3OiBEbyBub3QgaW5jbHVkZSBhY2N1LmggZnJvbSBQeXRob24uaC4KKworLSBJc3N1ZSAjMTQzNTk6IE9ubHkgdXNlIE9fQ0xPRVhFQyBpbiBfcG9zaXhtb2R1bGUuYyBpZiBpdCBpcyBkZWZpbmVkLgorICBCYXNlZCBvbiBwYXRjaCBmcm9tIEhlcnbDqSBDb2F0YW5oYXkuCisKKy0gSXNzdWUgIzE0MzIxOiBEbyBub3QgcnVuIHBnZW4gZHVyaW5nIHRoZSBidWlsZCBpZiBmaWxlcyBhcmUgdXAgdG8gZGF0ZS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDAzNDogYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgorCistIElzc3VlICMxNDMyNDogRml4IGNvbmZpZ3VyZSB0ZXN0cyBmb3IgY3Jvc3MgYnVpbGRzLgorCistIElzc3VlICMxNDMyNzogQ2FsbCBBQ19DQU5PTklDQUxfSE9TVCBpbiBjb25maWd1cmUuYWMgYW5kIGNoZWNrIGluCisgIGNvbmZpZy57Z3Vlc3Msc3VifS4gRG9uJ3QgdXNlIHVuYW1lIGNhbGxzIGZvciBjcm9zcyBidWlsZHMuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM5MDQxOiBBbiBpc3N1ZSBpbiBjdHlwZXMuY19sb25nZG91YmxlLCBjdHlwZXMuY19kb3VibGUsIGFuZAorICBjdHlwZXMuY19mbG9hdCB0aGF0IGNhdXNlZCBhbiBpbmNvcnJlY3QgZXhjZXB0aW9uIHRvIGJlIHJldHVybmVkIGluIHRoZQorICBjYXNlIG9mIG92ZXJmbG93IGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICMxNDIxMjogVGhlIHJlIG1vZHVsZSBkaWRuJ3QgcmV0YWluIGEgcmVmZXJlbmNlIHRvIGJ1ZmZlcnMgaXQgd2FzCisgIHNjYW5uaW5nLCByZXN1bHRpbmcgaW4gc2VnZmF1bHRzLgorCistIElzc3VlICMxNDI1OTogVGhlIGZpbmRpdGVyKCkgbWV0aG9kIG9mIHJlIG9iamVjdHMgZGlkIG5vdCB0YWtlIGFueQorICBrZXl3b3JkIGFyZ3VtZW50cywgY29udHJhcnkgdG8gdGhlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzEwMTQyOiBTdXBwb3J0IGZvciBTRUVLX0hPTEUvU0VFS19EQVRBIChmb3IgZXhhbXBsZSwgdW5kZXIgWkZTKS4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE0NDQyOiBBZGQgbWlzc2luZyBlcnJubyBpbXBvcnQgaW4gdGVzdF9zbXRwbGliLgorCistIElzc3VlICM4MzE1OiAocGFydGlhbCBmaXgpIHB5dGhvbiAtbSB1bml0dGVzdCB0ZXN0LnRlc3RfZW1haWwgbm93IHdvcmtzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwNS1NYXItMjAxMioKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzEzNzAzOiBvQ0VSVC0yMDExLTAwMzogYWRkIC1SIGNvbW1hbmQtbGluZSBvcHRpb24gYW5kIFBZVEhPTkhBU0hTRUVECi0gIGVudmlyb25tZW50IHZhcmlhYmxlLCB0byBwcm92aWRlIGFuIG9wdC1pbiB3YXkgdG8gcHJvdGVjdCBhZ2FpbnN0IGRlbmlhbCBvZgotICBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kIHNldCB0eXBlcy4gIFBhdGNoCi0gIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCistIElzc3VlICMxNDE3MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gbWFyc2hhbGxpbmcgYSBidWZmZXItbGlrZSBvYmplY3QKKyAgKG90aGVyIHRoYW4gYSBieXRlcyBvYmplY3QpLgorCistIElzc3VlICMxMzUyMTogZGljdC5zZXRkZWZhdWx0KCkgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LAorICBtYWtpbmcgaXQgImF0b21pYyIgZm9yIG1hbnkgcHVycG9zZXMuICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIFBFUCA0MDksIElzc3VlICM2MjEwOiAicmFpc2UgWCBmcm9tIE5vbmUiIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBtZWFucyBvZgorICBzdXBwcmVzc2luZyB0aGUgZGlzcGxheSBvZiB0aGUgY2hhaW5lZCBleGNlcHRpb24gY29udGV4dC4gVGhlIGNoYWluZWQKKyAgY29udGV4dCBzdGlsbCByZW1haW5zIGF2YWlsYWJsZSBhcyB0aGUgX19jb250ZXh0X18gYXR0cmlidXRlLgorCistIElzc3VlICMxMDE4MTogTmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gZml4ZXMgbXVsdGlwbGUgb3duZXJzaGlwCisgIGFuZCBsaWZldGltZSBpc3N1ZXMgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIFB5X2J1ZmZlciBtZW1iZXJzICgjOTk5MCkKKyAgYXMgd2VsbCBhcyBjcmFzaGVzICgjODMwNSwgIzc0MzMpLiBNYW55IG5ldyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQKKyAgKFNlZSB3aGF0c25ldy8zLjMpLCBhbmQgdGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCBleHRlbnNpdmVseS4KKyAgVGhlIG5kYXJyYXkgdGVzdCBvYmplY3QgZnJvbSBfdGVzdGJ1ZmZlci5jIGltcGxlbWVudHMgYWxsIGFzcGVjdHMgb2YKKyAgUEVQLTMxMTgsIHNvIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgdG93YXJkcyB0aGUgY29tcGxldGUgaW1wbGVtZW50YXRpb24KKyAgb2YgdGhlIFBFUCBjYW4gcHJvY2VlZCBpbiBhIHRlc3QtZHJpdmVuIG1hbm5lci4KKworICBUaGFua3MgdG8gTmljayBDb2dobGFuLCBBbnRvaW5lIFBpdHJvdSBhbmQgUGF1bGkgVmlydGFuZW4gZm9yIHJldmlldworICBhbmQgbWFueSBpZGVhcy4KKworLSBJc3N1ZSAjMTI4MzQ6IEZpeCBpbmNvcnJlY3QgcmVzdWx0cyBvZiBtZW1vcnl2aWV3LnRvYnl0ZXMoKSBmb3IKKyAgbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgorCistIElzc3VlICM1MjMxOiBJbnRyb2R1Y2UgbWVtb3J5dmlldy5jYXN0KCkgbWV0aG9kIHRoYXQgYWxsb3dzIGNoYW5naW5nCisgIGZvcm1hdCBhbmQgc2hhcGUgd2l0aG91dCBtYWtpbmcgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4KIAogLSBJc3N1ZSAjMTQwODQ6IEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIHdpdGggYQogICBiYWQgZW5jb2RpbmcuCiAKKy0gVXBncmFkZSBVbmljb2RlIGRhdGEgdG8gVW5pY29kZSA2LjEuCisKKy0gSXNzdWUgIzE0MDQwOiBSZW1vdmUgcmFyZWx5IHVzZWQgZmlsZSBuYW1lIHN1ZmZpeGVzIGZvciBDIGV4dGVuc2lvbnMKKyAgKHVuZGVyIFBPU0lYIG1haW5seSkuCisKKy0gSXNzdWUgIzE0MDUxOiBBbGxvdyBhcmJpdHJhcnkgYXR0cmlidXRlcyB0byBiZSBzZXQgb2YgY2xhc3NtZXRob2QgYW5kCisgIHN0YXRpY21ldGhvZC4KKworLSBJc3N1ZSAjMTM3MDM6IG9DRVJULTIwMTEtMDAzOiBSYW5kb21pemUgaGFzaGVzIG9mIHN0ciBhbmQgYnl0ZXMgdG8gcHJvdGVjdAorICBhZ2FpbnN0IGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kCisgIHNldCB0eXBlcy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCisKIC0gSXNzdWUgIzEzMDIwOiBGaXggYSByZWZlcmVuY2UgbGVhayB3aGVuIGFsbG9jYXRpbmcgYSBzdHJ1Y3RzZXF1ZW5jZSBvYmplY3QKICAgZmFpbHMuICBQYXRjaCBieSBTdW1hbiBTYWhhLgogCkBAIC03NTIsNiArMTk3NSw5IEBACiAtIElzc3VlICMxMTIzNTogRml4IE92ZXJmbG93RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IGEgc291cmNlIGZpbGUgd2hvc2UKICAgbW9kaWZpY2F0aW9uIHRpbWUgZG9lc24ndCBmaXQgaW4gYSAzMi1iaXQgdGltZXN0YW1wLgogCistIElzc3VlICMxMjcwNTogQSBTeW50YXhFcnJvciBleGNlcHRpb24gaXMgbm93IHJhaXNlZCB3aGVuIGF0dGVtcHRpbmcgdG8KKyAgY29tcGlsZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFzIGEgc2luZ2xlIGludGVyYWN0aXZlIHN0YXRlbWVudC4KKwogLSBGaXggdGhlIGJ1aWx0aW4gbW9kdWxlIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gc3RvcmUgdGhlIGluaXQgZnVuY3Rpb24gZm9yCiAgIGZ1dHVyZSByZWluaXRpYWxpemF0aW9uLgogCkBAIC03NjMsNiArMTk4OSwzNyBAQAogLSBJc3N1ZSAjMTM2Mjk6IFJlbnVtYmVyIHRoZSB0b2tlbnMgaW4gdG9rZW4uaCBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIGluZGV4ZXMKICAgaW50byBfUHlQYXJzZXJfVG9rZW5OYW1lcy4KIAorLSBJc3N1ZSAjMTM3NTI6IEFkZCBhIGNhc2Vmb2xkKCkgbWV0aG9kIHRvIHN0ci4KKworLSBJc3N1ZSAjMTM3NjE6IEFkZCBhICJmbHVzaCIga2V5d29yZCBhcmd1bWVudCB0byB0aGUgcHJpbnQoKSBmdW5jdGlvbiwKKyAgdXNlZCB0byBlbnN1cmUgZmx1c2hpbmcgdGhlIG91dHB1dCBzdHJlYW0uCisKKy0gSXNzdWUgIzEzNjQ1OiBweWMgZmlsZXMgbm93IGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlCisgIGNvZGUsIHRvIGF2b2lkIHRpbWVzdGFtcCBjb2xsaXNpb25zIChlc3BlY2lhbGx5IG9uIGZpbGVzeXN0ZW1zIHdpdGggYSBsb3cKKyAgdGltZXN0YW1wIHJlc29sdXRpb24pIHdoZW4gY2hlY2tpbmcgZm9yIGZyZXNobmVzcyBvZiB0aGUgYnl0ZWNvZGUuCisKKy0gUEVQIDM4MCwgSXNzdWUgIzExNjgyOiBBZGQgInlpZWxkIGZyb20gPHg+IiB0byBzdXBwb3J0IGVhc3kgZGVsZWdhdGlvbiB0bworICBzdWJnZW5lcmF0b3JzIChpbml0aWFsIHBhdGNoIGJ5IEdyZWcgRXdpbmcsIGludGVncmF0aW9uIGludG8gMy4zIGJ5CisgIFJlbmF1ZCBCbGFuY2gsIFJ5YW4gS2VsbHksIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbikKKworLSBJc3N1ZSAjMTM3NDg6IFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aCB0aGUgYGByYmBgIHByZWZpeAorICBhcyB3ZWxsIGFzIGBgYnJgYC4KKworLSBJc3N1ZSAjMTI3MzY6IFVzZSBmdWxsIHVuaWNvZGUgY2FzZSBtYXBwaW5ncyBmb3IgdXBwZXIsIGxvd2VyLCBhbmQgdGl0bGUgY2FzZS4KKworLSBJc3N1ZSAjMTI3NjA6IEFkZCBhIGNyZWF0ZSBtb2RlIHRvIG9wZW4oKS4gUGF0Y2ggYnkgRGF2aWQgVG93bnNoZW5kLgorCistIElzc3VlICMxMzczODogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgYnl0ZXMubG93ZXIoKSBhbmQgYnl0ZXMudXBwZXIoKS4KKworLSBJc3N1ZSAjMTM1Nzc6IEJ1aWx0LWluIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBub3cgaGF2ZSBhIF9fcXVhbG5hbWVfXy4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICM2Njk1OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBydW5zIG5vdyBjbGVhciB0aGUgZnJlZWxpc3Qgb2Ygc2V0CisgIG9iamVjdHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdHRoaWFzIFRyb2ZmYWVzLgorCistIEZpeCBPU0Vycm9yLl9faW5pdF9fIGFuZCBPU0Vycm9yLl9fbmV3X18gc28gdGhhdCBlYWNoIG9mIHRoZW0gY2FuIGJlCisgIG92ZXJyaWRlbiBhbmQgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoZm9sbG93dXAgdG8gaXNzdWUgIzEyNTU1KS4KKwogLSBGaXggdGhlIGZpeCBmb3IgaXNzdWUgIzEyMTQ5OiBpdCB3YXMgaW5jb3JyZWN0LCBhbHRob3VnaCBpdCBoYWQgdGhlIHNpZGUKICAgZWZmZWN0IG9mIGFwcGVhcmluZyB0byByZXNvbHZlIHRoZSBpc3N1ZS4gIFRoYW5rcyB0byBNYXJrIFNoYW5ub24gZm9yCiAgIG5vdGljaW5nLgpAQCAtNzczLDI2ICsyMDMwLDY4IEBACiAtIElzc3VlICMxMTE0NzogRml4IGFuIHVudXNlZCBhcmd1bWVudCBpbiBfUHlfQU5OT1RBVEVfTUVNT1JZX09SREVSLiAgKEZpeAogICBnaXZlbiBieSBDYW1wYmVsbCBCYXJ0b24pLgogCistIElzc3VlICMxMzUwMzogVXNlIGEgbW9yZSBlZmZpY2llbnQgcmVkdWN0aW9uIGZvcm1hdCBmb3IgYnl0ZWFycmF5cyB3aXRoCisgIHBpY2tsZSBwcm90b2NvbCA+PSAzLiAgVGhlIG9sZCByZWR1Y3Rpb24gZm9ybWF0IGlzIGtlcHQgd2l0aCBvbGRlciBwcm90b2NvbHMKKyAgaW4gb3JkZXIgdG8gYWxsb3cgdW5waWNrbGluZyB1bmRlciBQeXRob24gMi4gIFBhdGNoIGJ5IElybWVuIGRlIEpvbmcuCisKIC0gSXNzdWUgIzcxMTE6IFB5dGhvbiBjYW4gbm93IGJlIHJ1biB3aXRob3V0IGEgc3RkaW4sIHN0ZG91dCBvciBzdGRlcnIKICAgc3RyZWFtLiAgSXQgd2FzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCBQeXRob24gMi4gIEhvd2V2ZXIsIHRoZSBjb3JyZXNwb25kaW5nCiAgIHN5cyBtb2R1bGUgZW50cmllcyBhcmUgbm93IHNldCB0byBOb25lIChpbnN0ZWFkIG9mIGFuIHVudXNhYmxlIGZpbGUgb2JqZWN0KS4KIAorLSBJc3N1ZSAjMTE4NDk6IEVuc3VyZSB0aGF0IGZyZWUoKWQgbWVtb3J5IGFyZW5hcyBhcmUgcmVhbGx5IHJlbGVhc2VkCisgIG9uIFBPU0lYIHN5c3RlbXMgc3VwcG9ydGluZyBhbm9ueW1vdXMgbWVtb3J5IG1hcHBpbmdzLiAgUGF0Y2ggYnkKKyAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMzQ1MjogUHlVbmljb2RlX0VuY29kZURlY2ltYWwoKSBkb2Vzbid0IHN1cHBvcnQgZXJyb3IgaGFuZGxlcnMKKyAgZGlmZmVyZW50IHRoYW4gInN0cmljdCIgYW55bW9yZS4gVGhlIGNhbGxlciB3YXMgdW5hYmxlIHRvIGNvbXB1dGUgdGhlCisgIHNpemUgb2YgdGhlIG91dHB1dCBidWZmZXI6IGl0IGRlcGVuZHMgb24gdGhlIGVycm9yIGhhbmRsZXIuCisKKy0gUEVQIDMxNTUgLyBpc3N1ZSAjMTM0NDg6IFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCisKIC0gSXNzdWUgIzEzNDM2OiBGaXggYSBib2d1cyBlcnJvciBtZXNzYWdlIHdoZW4gYW4gQVNUIG9iamVjdCB3YXMgcGFzc2VkCiAgIGFuIGludmFsaWQgaW50ZWdlciB2YWx1ZS4KIAorLSBJc3N1ZSAjMTM0MTE6IG1lbW9yeXZpZXcgb2JqZWN0cyBhcmUgbm93IGhhc2hhYmxlIHdoZW4gdGhlIHVuZGVybHlpbmcKKyAgb2JqZWN0IGlzIGhhc2hhYmxlLgorCiAtIElzc3VlICMxMzMzODogSGFuZGxlIGFsbCBlbnVtZXJhdGlvbnMgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUgogICB0byBhbGxvdyBjb21waWxpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCAtV3N3aXRjaC1lbnVtIG9uIGdjYy4KICAgSW5pdGlhbCBwYXRjaCBieSBGbG9yaXMgQnJ1eW5vb2doZS4KIAorLSBJc3N1ZSAjMTAyMjc6IEFkZCBhbiBhbGxvY2F0aW9uIGNhY2hlIGZvciBhIHNpbmdsZSBzbGljZSBvYmplY3QuICBQYXRjaCBieQorICBTdGVmYW4gQmVobmVsLgorCistIElzc3VlICMxMzM5MzogQnVmZmVyZWRSZWFkZXIucmVhZDEoKSBub3cgYXNrcyB0aGUgZnVsbCByZXF1ZXN0ZWQgc2l6ZSB0bworICB0aGUgcmF3IHN0cmVhbSBpbnN0ZWFkIG9mIGxpbWl0aW5nIGl0c2VsZiB0byB0aGUgYnVmZmVyIHNpemUuCisKKy0gSXNzdWUgIzEzMzkyOiBXcml0aW5nIGEgcHljIGZpbGUgc2hvdWxkIG5vdyBiZSBhdG9taWMgdW5kZXIgV2luZG93cyBhcyB3ZWxsLgorCiAtIElzc3VlICMxMzMzMzogVGhlIFVURi03IGRlY29kZXIgbm93IGFjY2VwdHMgbG9uZSBzdXJyb2dhdGVzICh0aGUgZW5jb2RlcgogICBhbHJlYWR5IGFjY2VwdHMgdGhlbSkuCiAKKy0gSXNzdWUgIzEzMzg5OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXNzZXMgbm93IGNsZWFyIHRoZSBmcmVlbGlzdHMgZm9yCisgIGxpc3QgYW5kIGRpY3Qgb2JqZWN0cy4gIFRoZXkgYWxyZWFkeSBjbGVhcmVkIG90aGVyIGZyZWVsaXN0cyBpbiB0aGUKKyAgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzEzMzI3OiBSZW1vdmUgdGhlIG5lZWQgZm9yIGFuIGV4cGxpY2l0IE5vbmUgYXMgdGhlIHNlY29uZCBhcmd1bWVudAorICB0byBvcy51dGltZSwgb3MubHV0aW1lcywgb3MuZnV0aW1lcywgb3MuZnV0aW1lbnMsIG9zLmZ1dGltZXNhdCwgaW4KKyAgb3JkZXIgdG8gdXBkYXRlIHRvIHRoZSBjdXJyZW50IHRpbWUuIEFsc28gYWRkZWQga2V5d29yZCBhcmd1bWVudAorICBoYW5kbGluZyB0byBvcy51dGltZW5zYXQgaW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSBuZWVkIGZvciBleHBsaWNpdCBOb25lLgorCistIElzc3VlICMxMzM1MDogU2ltcGxpZnkgc29tZSBDIGNvZGUgYnkgcmVwbGFjaW5nIG1vc3QgdXNhZ2VzIG9mCisgIFB5VW5pY29kZV9Gb3JtYXQgYnkgUHlVbmljb2RlX0Zyb21Gb3JtYXQuCisKIC0gSXNzdWUgIzEzMzQyOiBpbnB1dCgpIHVzZWQgdG8gaWdub3JlIHN5cy5zdGRpbidzIGFuZCBzeXMuc3Rkb3V0J3MgdW5pY29kZQogICBlcnJvciBoYW5kbGVyIGluIGludGVyYWN0aXZlIG1vZGUgKHdoZW4gY2FsbGluZyBpbnRvIFB5T1NfUmVhZGxpbmUoKSkuCiAKKy0gSXNzdWUgIzk4OTY6IEFkZCBzdGFydCwgc3RvcCwgYW5kIHN0ZXAgYXR0cmlidXRlcyB0byByYW5nZSBvYmplY3RzLgorCiAtIElzc3VlICMxMzM0MzogRml4IGEgU3lzdGVtRXJyb3Igd2hlbiBhIGxhbWJkYSBleHByZXNzaW9uIHVzZXMgYSBnbG9iYWwKLSAgdmFyaWFibGUgaW4gdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQ6Ci0gIChsYW1iZGEgKiwgYXJnPUdMT0JBTF9OQU1FOiBOb25lKQorICB2YXJpYWJsZSBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGtleXdvcmQtb25seSBhcmd1bWVudDogYGBsYW1iZGEgKiwKKyAgYXJnPUdMT0JBTF9OQU1FOiBOb25lYGAKKworLSBJc3N1ZSAjMTI3OTc6IEFkZGVkIGN1c3RvbSBvcGVuZXIgcGFyYW1ldGVyIHRvIGJ1aWx0aW4gb3BlbigpIGFuZAorICBGaWxlSU8ub3BlbigpLgogCiAtIElzc3VlICMxMDUxOTogQXZvaWQgdW5uZWNlc3NhcnkgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGluCiAgIHNldG9iamVjdC5jLgpAQCAtODAyLDIxICsyMTAxLDQ3IEBACiAtIElzc3VlICMxMzAxODogRml4IHJlZmVyZW5jZSBsZWFrcyBpbiBlcnJvciBwYXRocyBpbiBkaWN0b2JqZWN0LmMuCiAgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKKy0gSXNzdWUgIzEzMjAxOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24KKyAgdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KKyAgb2JqZWN0IGlkZW50aXR5KS4KKwogLSBJc3N1ZSAjMTI5NDIzMjogSW4gYSBmZXcgY2FzZXMgaW52b2x2aW5nIG1ldGFjbGFzcyBpbmhlcml0YW5jZSwgdGhlCiAgIGludGVycHJldGVyIHdvdWxkIHNvbWV0aW1lcyBpbnZva2UgdGhlIHdyb25nIG1ldGFjbGFzcyB3aGVuIGJ1aWxkaW5nIGEgbmV3CiAgIGNsYXNzIG9iamVjdC4gVGhlc2UgY2FzZXMgbm93IGJlaGF2ZSBjb3JyZWN0bHkuIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KIAorLSBJc3N1ZSAjMTI3NTM6IEFkZCBzdXBwb3J0IGZvciBVbmljb2RlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLgorICBCb3RoIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCBhbmQgJ1xOey4uLn0nIG5vdyByZXNvbHZlIGFsaWFzZXMsCisgIGFuZCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworLSBJc3N1ZSAjMTIxNzA6IFRoZSBjb3VudCgpLCBmaW5kKCksIHJmaW5kKCksIGluZGV4KCkgYW5kIHJpbmRleCgpIG1ldGhvZHMKKyAgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIG5vdyBhY2NlcHQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDI1NQorICBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgorCiAtIElzc3VlICMxMjYwNDogVlRSQUNFIG1hY3JvIGV4cGFuZGVkIHRvIG5vLW9wIGluIF9zcmUuYyB0byBhdm9pZCBjb21waWxlcgogICB3YXJuaW5ncy4gUGF0Y2ggYnkgSm9zaCBUcmlwbGV0dCBhbmQgUGV0cmkgTGVodGluZW4uCiAKKy0gSXNzdWUgIzEyMjgxOiBSZXdyaXRlIHRoZSBNQkNTIGNvZGVjIHRvIGhhbmRsZSBjb3JyZWN0bHkgcmVwbGFjZSBhbmQgaWdub3JlCisgIGVycm9yIGhhbmRsZXJzIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLiBUaGUgTUJDUyBjb2RlYyBpcyBub3cgc3VwcG9ydGluZyBhbGwKKyAgZXJyb3IgaGFuZGxlcnMsIGluc3RlYWQgb2Ygb25seSByZXBsYWNlIHRvIGVuY29kZSBhbmQgaWdub3JlIHRvIGRlY29kZS4KKwogLSBJc3N1ZSAjMTMxODg6IFdoZW4gY2FsbGVkIHdpdGhvdXQgYW4gZXhwbGljaXQgdHJhY2ViYWNrIGFyZ3VtZW50LAogICBnZW5lcmF0b3IudGhyb3coKSBub3cgZ2V0cyB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIHBhc3NlZCBleGNlcHRpb24ncwogICBgYF9fdHJhY2ViYWNrX19gYCBhdHRyaWJ1dGUuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KIAorLSBJc3N1ZSAjMTMxNDY6IFdyaXRpbmcgYSBweWMgZmlsZSBpcyBub3cgYXRvbWljIHVuZGVyIFBPU0lYLgorCiAtIElzc3VlICM3ODMzOiBFeHRlbnNpb24gbW9kdWxlcyBidWlsdCB1c2luZyBkaXN0dXRpbHMgb24gV2luZG93cyB3aWxsIG5vCiAgIGxvbmdlciBpbmNsdWRlIGEgIm1hbmlmZXN0IiB0byBwcmV2ZW50IHRoZW0gZmFpbGluZyBhdCBpbXBvcnQgdGltZSBpbiBzb21lCiAgIGVtYmVkZGVkIHNpdHVhdGlvbnMuCiAKKy0gUEVQIDMxNTEgLyBpc3N1ZSAjMTI1NTU6IHJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkuCisKKy0gSXNzdWUgIzEzNTYwOiBBZGQgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgpLCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpCisgIGFuZCBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKCkgZnVuY3Rpb25zIHRvIHRoZSBDIEFQSSB0byBkZWNvZGUvZW5jb2RlIGZyb20vdG8KKyAgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLgorCistIEFkZCBpbnRlcm5hbCBBUEkgZm9yIHN0YXRpYyBzdHJpbmdzIChfUHlfaWRlbnRpZmllciBldCBhbC4pLgorCiAtIElzc3VlICMxMzA2MzogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfTk9fREFUQSAobnVtYmVyZWQgMjMyIGFuZCBkZXNjcmliZWQKICAgYXMgIlRoZSBwaXBlIGlzIGJlaW5nIGNsb3NlZCIpIGlzIG5vdyBtYXBwZWQgdG8gUE9TSVggZXJybm8gRVBJUEUKICAgKHByZXZpb3VzbHkgRUlOVkFMKS4KQEAgLTgyNCw2ICsyMTQ5LDE2IEBACiAtIElzc3VlICMxMjkxMTogRml4IG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSByZXByKCkgb2YgaHVnZQogICB0dXBsZXMgb3IgbGlzdHMuCiAKKy0gUEVQIDM5MzogZmxleGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBUaGFua3MgdG8gVG9yc3RlbiBCZWNrZXIgZm9yIHRoZQorICBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbmQgVmljdG9yIFN0aW5uZXIgZm9yIHZhcmlvdXMgYnVnIGZpeGVzLgorCistIElzc3VlICMxNDA4MTogVGhlICdzZXAnIGFuZCAnbWF4c3BsaXQnIHBhcmFtZXRlciB0byBzdHIuc3BsaXQsIGJ5dGVzLnNwbGl0LAorICBhbmQgYnl0ZWFycmF5LnNwbGl0IG1heSBub3cgYmUgcGFzc2VkIGFzIGtleXdvcmQgYXJndW1lbnRzLgorCistIElzc3VlICMxMzAxMjogVGhlICdrZWVwZW5kcycgcGFyYW1ldGVyIHRvIHN0ci5zcGxpdGxpbmVzIG1heSBub3cgYmUgcGFzc2VkCisgIGFzIGEga2V5d29yZCBhcmd1bWVudDogICJteV9zdHJpbmcuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSIuICBUaGUgc2FtZQorICBjaGFuZ2UgYWxzbyBhcHBsaWVzIHRvIGJ5dGVzLnNwbGl0bGluZXMgYW5kIGJ5dGVhcnJheS5zcGxpdGxpbmVzLgorCiAtIElzc3VlICM3NzMyOiBEb24ndCBvcGVuIGEgZGlyZWN0b3J5IGFzIGEgZmlsZSBhbnltb3JlIHdoaWxlIGltcG9ydGluZyBhCiAgIG1vZHVsZS4gSWdub3JlIHRoZSBkaXJlY290cnkgaWYgaXRzIG5hbWUgbWF0Y2hzIHRoZSBtb2R1bGUgbmFtZSAoZS5nLgogICAiX19pbml0X18ucHkiKSBhbmQgcmFpc2UgYSBJbXBvcnRFcnJvciBpbnN0ZWFkLgpAQCAtODM1LDYgKzIxNzAsOSBAQAogICBsaXN0X3JlcGVhdCAobGlzdG9iamVjdC5jKSBhbmQgaXNsaWNlX25leHQgKGl0ZXJ0b29sc21vZHVsZS5jKS4gIFRoZXNlIGJ1Z3MKICAgY2F1c2VkIHRlc3QgZmFpbHVyZXMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgQ2xhbmcuCiAKKy0gSXNzdWUgIzEyOTA0OiBvcy51dGltZSwgb3MuZnV0aW1lcywgb3MubHV0aW1lcywgYW5kIG9zLmZ1dGltZXNhdCBub3cgd3JpdGUKKyAgYXRpbWUgYW5kIG10aW1lIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24gb24gbW9kZXJuIFBPU0lYIHBsYXRmb3Jtcy4KKwogLSBJc3N1ZSAjMTI4MDI6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX0RJUkVDVE9SWSAobnVtYmVyZWQgMjY3KSBpcyBub3cKICAgbWFwcGVkIHRvIFBPU0lYIGVycm5vIEVOT1RESVIgKHByZXZpb3VzbHkgRUlOVkFMKS4KIApAQCAtODQ0LDM3ICsyMTgyLDMyOSBAQAogLSBJc3N1ZSAjMTI3OTE6IEJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgZWFybHkgd2hlbiBhIGdlbmVyYXRvciBleGl0cyB3aXRoCiAgIGFuIGV4Y2VwdGlvbi4KIAorLSBJc3N1ZSAjMTI3NzM6IE1ha2UgX19kb2NfXyBtdXRhYmxlIG9uIHVzZXItZGVmaW5lZCBjbGFzc2VzLgorCistIElzc3VlICMxMjc2NjogUmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gY3JlYXRpbmcgYSBjbGFzcyB3aXRoIGEgY2xhc3MgdmFyaWFibGUKKyAgdGhhdCBjb25mbGljdHMgd2l0aCBhIG5hbWUgaW4gX19zbG90c19fLgorCiAtIElzc3VlICMxMjI2NjogRml4IHN0ci5jYXBpdGFsaXplKCkgdG8gY29ycmVjdGx5IHVwcGVyY2FzZS9sb3dlcmNhc2UKICAgdGl0bGVjYXNlZCBhbmQgY2FzZWQgbm9uLWxldHRlciBjaGFyYWN0ZXJzLgogCistIElzc3VlICMxMjczMjogSW4gbmFycm93IHVuaWNvZGUgYnVpbGRzLCBhbGxvdyBVbmljb2RlIGlkZW50aWZpZXJzIHdoaWNoIGZhbGwKKyAgb3V0c2lkZSB0aGUgQk1QLgorCistIElzc3VlICMxMjU3NTogVmFsaWRhdGUgdXNlci1nZW5lcmF0ZWQgQVNUIGJlZm9yZSBpdCBpcyBjb21waWxlZC4KKworLSBNYWtlIHR5cGUoTm9uZSksIHR5cGUoRWxsaXBzaXMpLCBhbmQgdHlwZShOb3RJbXBsZW1lbnRlZCkgY2FsbGFibGUuIFRoZXkKKyAgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHNpbmdsZXRvbiBpbnN0YW5jZXMuCisKKy0gRm9yYmlkIHN1bW1pbmcgYnl0ZXMgd2l0aCBzdW0oKS4KKworLSBWZXJpZnkgdGhlIHR5cGVzIG9mIEFTVCBzdHJpbmdzIGFuZCBpZGVudGlmaWVycyBwcm92aWRlZCBieSB0aGUgdXNlciBiZWZvcmUKKyAgY29tcGlsaW5nIHRoZW0uCisKKy0gSXNzdWUgIzEyNjQ3OiBUaGUgTm9uZSBvYmplY3Qgbm93IGhhcyBhIF9fYm9vbF9fKCkgbWV0aG9kIHRoYXQgcmV0dXJucyBGYWxzZS4KKyAgRm9ybWVybHksIGJvb2woTm9uZSkgcmV0dXJuZWQgRmFsc2Ugb25seSBiZWNhdXNlIG9mIHNwZWNpYWwgY2FzZSBsb2dpYworICBpbiBQeU9iamVjdF9Jc1RydWUoKS4KKworLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCisgIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQorICBKdWxpYW4gQmVybWFuLgorCistIElzc3VlICMxMDI3MTogQWxsb3cgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSBiZSBhbnkgY2FsbGFibGUuCisKKy0gSXNzdWUgIzExNjI3OiBGaXggc2VnZmF1bHQgd2hlbiBfX25ld19fIG9uIGEgZXhjZXB0aW9uIHJldHVybnMgYQorICBub24tZXhjZXB0aW9uIGNsYXNzLgorCistIElzc3VlICMxMjE0OTogVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbmFyeSBnZXRzCisgIGNsZWFyZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgVGhpcyBmaXhlcyBhIHNlZ2ZhdWx0IHdoZW4gYW4gaW5zdGFuY2UKKyAgYW5kIGl0cyB0eXBlIGdldCBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUsIGFuZCB0aGUgaW5zdGFuY2UncworICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZworICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCisKKy0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKworLSBJc3N1ZSAjOTY0MjogVW5pZm9ybWl6ZSB0aGUgdGVzdHMgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgbWJjcyBjb2RlYywgYWRkCisgIGEgbmV3IEhBVkVfTUJDUyBkZWZpbmUuCisKKy0gSXNzdWUgIzk2NDI6IEZpeCBmaWxlc3lzdGVtIGVuY29kaW5nIGluaXRpYWxpemF0aW9uOiB1c2UgdGhlIEFOU0kgY29kZSBwYWdlCisgIG9uIFdpbmRvd3MgaWYgdGhlIG1iY3MgY29kZWMgaXMgbm90IGF2YWlsYWJsZSwgYW5kIGZhaWwgd2l0aCBhIGZhdGFsIGVycm9yIGlmCisgIHdlIGNhbm5vdCBnZXQgdGhlIGxvY2FsZSBlbmNvZGluZyAoaWYgbmxfbGFuZ2luZm8oQ09ERVNFVCkgaXMgbm90IGF2YWlsYWJsZSkKKyAgaW5zdGVhZCBvZiB1c2luZyBVVEYtOC4KKworLSBXaGVuIGEgZ2VuZXJhdG9yIHlpZWxkcywgZG8gbm90IHJldGFpbiB0aGUgY2FsbGVyJ3MgZXhjZXB0aW9uIHN0YXRlIG9uIHRoZQorICBnZW5lcmF0b3IuCisKKy0gSXNzdWUgIzEyNDc1OiBQcmV2ZW50IGdlbmVyYXRvcnMgZnJvbSBsZWFraW5nIHRoZWlyIGV4Y2VwdGlvbiBzdGF0ZSBpbnRvIHRoZQorICBjYWxsZXIncyBmcmFtZSBhcyB0aGV5IHJldHVybiBmb3IgdGhlIGxhc3QgdGltZS4KKworLSBJc3N1ZSAjMTIyOTE6IFlvdSBjYW4gbm93IGxvYWQgbXVsdGlwbGUgbWFyc2hhbGxlZCBvYmplY3RzIGZyb20gYSBzdHJlYW0sCisgIHdpdGggb3RoZXIgZGF0YSBpbnRlcmxlYXZlZCBiZXR3ZWVuIG1hcnNoYWxsZWQgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTIzNTY6IFdoZW4gcmVxdWlyZWQgcG9zaXRpb25hbCBvciBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFyZSBub3QKKyAgZ2l2ZW4sIHByb2R1Y2UgYSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlIHdoaWNoIGluY2x1ZGVzIHRoZSBuYW1lKHMpIG9mIHRoZQorICBtaXNzaW5nIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTIzNzA6IEZpeCBzdXBlciB3aXRoIG5vIGFyZ3VtZW50cyB3aGVuIF9fY2xhc3NfXyBpcyBvdmVycmlkZW4gaW4gdGhlCisgIGNsYXNzIGJvZHkuCisKKy0gSXNzdWUgIzEyMDg0OiBvcy5zdGF0IG9uIFdpbmRvd3Mgbm93IHdvcmtzIHByb3Blcmx5IHdpdGggcmVsYXRpdmUgc3ltYm9saWMKKyAgbGlua3Mgd2hlbiBjYWxsZWQgZnJvbSBhbnkgZGlyZWN0b3J5LgorCistIExvb3NlbiB0eXBlIHJlc3RyaWN0aW9ucyBvbiB0aGUgX19kaXJfXyBtZXRob2QuIF9fZGlyX18gY2FuIG5vdyByZXR1cm4gYW55CisgIHNlcXVlbmNlLCB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIGxpc3QgYW5kIHNvcnRlZCBieSBkaXIoKS4KKworLSBJc3N1ZSAjMTIyNjU6IE1ha2UgZXJyb3IgbWVzc2FnZXMgcHJvZHVjZWQgYnkgcGFzc2luZyBhbiBpbnZhbGlkIHNldCBvZgorICBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiBtb3JlIGluZm9ybWF0aXZlLgorCistIElzc3VlICMxMjIyNTogU3RpbGwgYWxsb3cgUHl0aG9uIHRvIGJ1aWxkIGlmIFB5dGhvbiBpcyBub3QgaW4gaXRzIGhnIHJlcG8gb3IKKyAgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAorICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAorICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCisKKy0gSXNzdWUgIzEyMjE2OiBBbGxvdyB1bmV4cGVjdGVkIEVPRiBlcnJvcnMgdG8gaGFwcGVuIG9uIGFueSBsaW5lIG9mIHRoZSBmaWxlLgorCistIElzc3VlICMxMjE5OTogVGhlIFRyeUV4Y2VwdCBhbmQgVHJ5RmluYWxseSBhbmQgQVNUIG5vZGVzIGhhdmUgYmVlbiB1bmlmaWVkCisgIGludG8gYSBUcnkgbm9kZS4KKworLSBJc3N1ZSAjOTY3MDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KKyAgTWFjIE9TIFggYW5kIEZyZWVCU0QgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIGEgY3Jhc2ggaW5zdGVhZCBvZiBhCisgICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCIgUnVudGltZUVycm9yIGV4Y2VwdGlvbi4KKyAgKHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKKworLSBJc3N1ZSAjMTIxMDY6IFRoZSB1c2Ugb2YgdGhlIG11bHRpcGxlLXdpdGggc2hvcnRoYW5kIHN5bnRheCBpcyBub3cgcmVmbGVjdGVkCisgIGluIHRoZSBBU1QuCisKKy0gSXNzdWUgIzEyMTkwOiBUcnkgdG8gdXNlIHRoZSBzYW1lIGZpbGVuYW1lIG9iamVjdCB3aGVuIGNvbXBpbGluZyB1bm1hcnNoYWxsaW5nCisgIGEgY29kZSBvYmplY3RzIGluIHRoZSBzYW1lIGZpbGUuCisKKy0gSXNzdWUgIzEyMTY2OiBNb3ZlIGltcGxlbWVudGF0aW9ucyBvZiBkaXIoKSBzcGVjaWFsaXplZCBmb3IgdmFyaW91cyB0eXBlcyBpbnRvCisgIHRoZSBfX2Rpcl9fKCkgbWV0aG9kcyBvZiB0aG9zZSB0eXBlcy4KKworLSBJc3N1ZSAjNTcxNTogSW4gc29ja2V0c2VydmVyLCBjbG9zZSB0aGUgc2VydmVyIHNvY2tldCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KKworLSBDb3JyZWN0IGxvb2t1cCBvZiBfX2Rpcl9fIG9uIG9iamVjdHMuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBjYXVzZXMgZXJyb3JzCisgIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlIHByb3BhZ2F0ZWQuCisKKy0gSXNzdWUgIzEyMDYwOiBVc2Ugc2lnX2F0b21pY190IHR5cGUgYW5kIHZvbGF0aWxlIGtleXdvcmQgaW4gdGhlIHNpZ25hbAorICBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxNzQ2NjU2OiBBZGRlZCB0aGUgaWZfbmFtZWluZGV4LCBpZl9pbmRleHRvbmFtZSwgaWZfbmFtZXRvaW5kZXgKKyAgbWV0aG9kcyB0byB0aGUgc29ja2V0IG1vZHVsZS4KKworLSBJc3N1ZSAjMTIwNDQ6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4gd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRvCisgIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGVuZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgdG8gYXZvaWQgdW5pbnRlbnRpb25hbGx5CisgIGxlYXZpbmcgem9tYmllIHByb2Nlc3NlcyBhcm91bmQuCisKKy0gSXNzdWUgIzExOTU6IEZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsCisgIGNsZWFyIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgYWZ0ZXIgQ1RSTCtkLgorCistIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQorICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4KKyAgdGhleSB0cnkgdG8gdGFrZSB0aGUgR0lMLgorCistIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAorICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgorICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCisgIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzEwNTE3OiBBZnRlciBmb3JrKCksIHJlaW5pdGlhbGl6ZSB0aGUgVExTIHVzZWQgYnkgdGhlIFB5R0lMU3RhdGVfKgorICBBUElzLCB0byBhdm9pZCBhIGNyYXNoIHdpdGggdGhlIHB0aHJlYWQgaW1wbGVtZW50YXRpb24gaW4gUkhFTCA1LiAgUGF0Y2gKKyAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMDkxNDogSW5pdGlhbGl6ZSBjb3JyZWN0bHkgdGhlIGZpbGVzeXN0ZW0gY29kZWMgd2hlbiBjcmVhdGluZyBhIG5ldworICBzdWJpbnRlcnByZXRlciB0byBmaXggYSBib290c3RyYXAgaXNzdWUgd2l0aCBjb2RlY3MgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBhcworICB0aGUgSVNPLTg4NTktMTUgY29kZWMuCisKKy0gSXNzdWUgIzExOTE4OiBPUy8yIGFuZCBWTVMgYXJlIG5vIG1vcmUgc3VwcG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGxhY2sgb2YKKyAgbWFpbnRhaW5lci4KKworLSBJc3N1ZSAjNjc4MDogZml4IHN0YXJ0cy9lbmRzd2l0aCBlcnJvciBtZXNzYWdlIHRvIG1lbnRpb24gdGhhdCB0dXBsZXMgYXJlCisgIGFjY2VwdGVkIHRvby4KKworLSBJc3N1ZSAjNTA1NzogZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcworICBiZXR3ZWVuIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgd2hpbGUgb3B0aW1pemluZyBCSU5BUllfU1VCU0NSIG9uIG5vbi1CTVAKKyAgY2hhcnMgKGUuZy4gIlxVMDAwMTIzNDUiWzBdKS4KKworLSBJc3N1ZSAjMTE4NDU6IEZpeCB0eXBvIGluIHJhbmdlb2JqZWN0LmMgdGhhdCBjYXVzZWQgYSBjcmFzaCBpbgorICBjb21wdXRlX3NsaWNlX2luZGljZXMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCisKKy0gSXNzdWUgIzU2NzM6IEFkZGVkIGEgYHRpbWVvdXRgIGtleXdvcmQgYXJndW1lbnQgdG8gc3VicHJvY2Vzcy5Qb3Blbi53YWl0LAorICBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlZCwgc3VicHJvY2Vzcy5jYWxsLCBzdWJwcm9jZXNzLmNoZWNrX2NhbGwsIGFuZAorICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dC4gIElmIHRoZSBibG9ja2luZyBvcGVyYXRpb24gdGFrZXMgbW9yZSB0aGFuIGB0aW1lb3V0YAorICBzZWNvbmRzLCB0aGUgYHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKy0gSXNzdWUgIzExNjUwOiBQeU9TX1N0ZGlvUmVhZGxpbmUoKSByZXRyaWVzIGZnZXRzKCkgaWYgaXQgd2FzIGludGVycnVwdGVkCisgIChFSU5UUiksIGZvciBleGFtcGxlIGlmIHRoZSBwcm9ncmFtIGlzIHN0b3BwZWQgd2l0aCBDVFJMK3ogb24gTWFjIE9TIFguIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzkzMTk6IEluY2x1ZGUgdGhlIGZpbGVuYW1lIGluICJOb24tVVRGOCBjb2RlIC4uLiIgc3ludGF4IGVycm9yLgorCistIElzc3VlICMxMDc4NTogU3RvcmUgdGhlIGZpbGVuYW1lIGFzIFVuaWNvZGUgaW4gdGhlIFB5dGhvbiBwYXJzZXIuCisKKy0gSXNzdWUgIzExNjE5OiBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoKSBkb2Vzbid0IGVuY29kZSB0aGUgcGF0aCB0byBieXRlcworICBvbiBXaW5kb3dzLgorCistIElzc3VlICMxMDk5ODogUmVtb3ZlIG1lbnRpb25zIG9mIC1RLCBzeXMuZmxhZ3MuZGl2aXNpb25fd2FybmluZyBhbmQKKyAgUHlfRGl2aXNpb25XYXJuaW5nRmxhZyBsZWZ0IG92ZXIgZnJvbSBQeXRob24gMi4KKworLSBJc3N1ZSAjMTEyNDQ6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBwZWVwaG9sZXIgY2hlY2sgdGhhdCB3YXMgcHJldmVudGluZworICBuZWdhdGl2ZSB6ZXJvcyBmcm9tIGJlaW5nIGNvbnN0YW50LWZvbGRlZCBwcm9wZXJseS4KKworLSBJc3N1ZSAjMTEzOTU6IGlvLkZpbGVJTygpLndyaXRlKCkgY2xhbXBzIHRoZSBkYXRhIGxlbmd0aCB0byAzMiw3NjcgYnl0ZXMgb24KKyAgV2luZG93cyBpZiB0aGUgZmlsZSBpcyBhIFRUWSB0byB3b3JrYXJvdW5kIGEgV2luZG93cyBidWcuIFRoZSBXaW5kb3dzIGNvbnNvbGUKKyAgcmV0dXJucyBhbiBlcnJvciAoMTI6IG5vdCBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYKKyAgc3Rkb3V0IG1vZGUgaXMgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCisgIGRlcGVuZGluZyBvbiBoZWFwIHVzYWdlKS4KKworLSBJc3N1ZSAjMTEzMjA6IGZpeCBib2d1cyBtZW1vcnkgbWFuYWdlbWVudCBpbiBNb2R1bGVzL2dldHBhdGguYywgbGVhZGluZyB0bworICBhIHBvc3NpYmxlIGNyYXNoIHdoZW4gY2FsbGluZyBQeV9TZXRQYXRoKCkuCisKKy0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAorICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCisgIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KKworLSBJc3N1ZSAjOTg1NjogQ2hhbmdlIG9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZworICB0byBiZSBhIERlcHJlY2F0aW9uV2FybmluZy4gSW4gMy4yIGl0IHdhcyBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisgIEluIDMuNCBpdCB3aWxsIGJlIGEgVHlwZUVycm9yLgorCistIElzc3VlICMxMTI0NDogVGhlIHBlZXBob2xlIG9wdGltaXplciBpcyBub3cgYWJsZSB0byBjb25zdGFudC1mb2xkCisgIGFyYml0cmFyaWx5IGNvbXBsZXggZXhwcmVzc2lvbnMuICBUaGlzIGFsc28gZml4ZXMgYSAzLjIgcmVncmVzc2lvbiB3aGVyZQorICBvcGVyYXRpb25zIGludm9sdmluZyBuZWdhdGl2ZSBudW1iZXJzIHdlcmUgbm90IGNvbnN0YW50LWZvbGRlZC4KKworLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuCisgIHRoZXJlIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCisKKy0gSXNzdWUgIzExMzM1OiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIGxpc3Quc29ydCB3aGVuIHRoZSBrZXkgZnVuY3Rpb24KKyAgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjODkyMzogV2hlbiBhIHN0cmluZyBpcyBlbmNvZGVkIHRvIFVURi04IGluIHN0cmljdCBtb2RlLCB0aGUgcmVzdWx0IGlzCisgIGNhY2hlZCBpbnRvIHRoZSBvYmplY3QuIEV4YW1wbGVzOiBzdHIuZW5jb2RlKCksIHN0ci5lbmNvZGUoJ3V0Zi04JyksCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLCAidXRmLTgiLAorICBOVUxMKS4KKworLSBJc3N1ZSAjMTA4MzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgc3VwcG9ydHMgJWxpLCAlbGxpIGFuZCAlemkgZm9ybWF0cy4KKworLSBJc3N1ZSAjMTA4Mjk6IFJlZmFjdG9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCksIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0byBwYXJzZQorICB0aGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgMyBzdGVwcywgZml4IGNyYXNocyBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzLgorCistIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCisKKy0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCisgIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCisgIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgorCistIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoCisgIGEgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KKworLSBJc3N1ZSAjMTEyNzI6IE9uIFdpbmRvd3MsIGlucHV0KCkgc3RyaXBzICdccicgKGFuZCBub3Qgb25seSAnXG4nKSwgYW5kCisgIHN5cy5zdGRpbiB1c2VzIHVuaXZlcnNhbCBuZXdsaW5lIChyZXBsYWNlICdcclxuJyBieSAnXG4nKS4KKworLSBJc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIG5vdyBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4KKyAgUGF0Y2ggYnkgVG9yc3RlbiBCZWNrZXIuCisKKy0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KKyAgbmFycm93IGJ1aWxkLgorCistIElzc3VlICMxMTE2ODogUmVtb3ZlIGZpbGVuYW1lIGRlYnVnIHZhcmlhYmxlIGZyb20gUHlFdmFsX0V2YWxGcmFtZUV4KCkuCisgIEl0IGVuY29kZWQgdGhlIFVuaWNvZGUgZmlsZW5hbWUgdG8gVVRGLTgsIGJ1dCB0aGUgZW5jb2RpbmcgZmFpbHMgb24KKyAgdW5kZWNvZGFibGUgZmlsZW5hbWUgKG9uIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzKSB3aGljaCByYWlzZXMgYW4gdW5leHBlY3RlZAorICBVbmljb2RlRW5jb2RlRXJyb3Igb24gcmVjdXJzaW9uIGxpbWl0LgorCistIElzc3VlICMxMTE4NzogUmVtb3ZlIGJvb3RzdHJhcCBjb2RlICh1c2UgQVNDSUkpIG9mCisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSwgaXQgd2FzIHJlcGxhY2VkIGJ5IGEgYmV0dGVyIGZhbGxiYWNrICh1c2UgdGhlCisgIGxvY2FsZSBlbmNvZGluZykgaW4gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLgorCistIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCisKKy0gSXNzdWUgIzEwNTE2OiBOZXcgY29weSgpIGFuZCBjbGVhcigpIG1ldGhvZHMgZm9yIGxpc3RzIGFuZCBieXRlYXJyYXlzLgorCistIElzc3VlICMxMTM4NjogYnl0ZWFycmF5LnBvcCgpIG5vdyB0aHJvd3MgSW5kZXhFcnJvciB3aGVuIHRoZSBieXRlYXJyYXkgaXMKKyAgZW1wdHksIGluc3RlYWQgb2YgT3ZlcmZsb3dFcnJvci4KKworLSBJc3N1ZSAjMTIzODA6IFRoZSByanVzdCwgbGp1c3QgYW5kIGNlbnRlciBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgbm93IGFjY2VwdCBhIGJ5dGVhcnJheSBhcmd1bWVudC4KKwogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxNDE5NTogQW4gaXNzdWUgdGhhdCBjYXVzZWQgd2Vha3JlZi5XZWFrU2V0IGluc3RhbmNlcyB0byBpbmNvcnJlY3RseQorICByZXR1cm4gVHJ1ZSBmb3IgYSBXZWFrU2V0IGluc3RhbmNlICdhJyBpbiBib3RoICdhIDwgYScgYW5kICdhID4gYScgaGFzIGJlZW4KKyAgZml4ZWQuCisKKy0gSXNzdWUgIzE0MTY2OiBQaWNrbGVyIG9iamVjdHMgbm93IGhhdmUgYW4gb3B0aW9uYWwgYGBkaXNwYXRjaF90YWJsZWBgCisgIGF0dHJpYnV0ZSB3aGljaCBhbGxvd3MgdG8gc2V0IGN1c3RvbSBwZXItcGlja2xlciByZWR1Y3Rpb24gZnVuY3Rpb25zLgorICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MTc3OiBtYXJzaGFsLmxvYWRzKCkgbm93IHJhaXNlcyBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiB1bmljb2RlCisgIHN0cmluZy4gIFBhdGNoIGJ5IEd1aWxoZXJtZSBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzU1MDogUmVtb3ZlIHRoZSBkZWJ1ZyBtYWNoaW5lcnkgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZTogcmVtb3ZlCisgIHZlcmJvc2UgYXJndW1lbnRzIGZyb20gYWxsIHRocmVhZGluZyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE0MTU5OiBGaXggdGhlIGxlbigpIG9mIHdlYWsgY29udGFpbmVycyAoV2Vha1NldCwgV2Vha0tleURpY3Rpb25hcnksCisgIFdlYWtWYWx1ZURpY3Rpb25hcnkpIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uIHdoZW4gc29tZSBvYmplY3RzCisgIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgorICBPKG4pLgorCistIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KKyAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgorCistIElzc3VlICMxMTg0MTogRml4IGNvbXBhcmlzb24gYnVnIHdpdGggJ3JjJyB2ZXJzaW9ucyBpbiBwYWNrYWdpbmcudmVyc2lvbi4KKyAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KKworLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCisgIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCisgIG9uIFdpbmRvd3MuICBBbHNvIGZpeGVkIGluIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjODAzMzogc3FsaXRlMzogRml4IDY0LWJpdCBpbnRlZ2VyIGhhbmRsaW5nIGluIHVzZXIgZnVuY3Rpb25zCisgIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBJbml0aWFsIHBhdGNoIGJ5IFBoaWxpcHBlIERldmFsa2VuZWVyLgorCiAtIEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIHNsYXNoZXMgaW4gdGhlIHN0YXJ0IHRhZy4KIAorLSBJc3N1ZSAjMTM2NDE6IERlY29kaW5nIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZTY0IG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKKyAgdW5pY29kZSBzdHJpbmdzLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KKworLSBJc3N1ZSAjMTQwNDM6IFNwZWVkIHVwIGltcG9ydGxpYidzIF9GaWxlRmluZGVyIGJ5IGF0IGxlYXN0IDh4LCBhbmQgYWRkIGEKKyAgbmV3IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIGZ1bmN0aW9uLgorCiAtIElzc3VlICMxNDAwMTogQ1ZFLTIwMTItMDg0NTogeG1scnBjOiBGaXggYW4gZW5kbGVzcyBsb29wIGluCiAgIFNpbXBsZVhNTFJQQ1NlcnZlciB1cG9uIG1hbGZvcm1lZCBQT1NUIHJlcXVlc3QuCiAKKy0gSXNzdWUgIzEzOTYxOiBNb3ZlIGltcG9ydGxpYiBvdmVyIHRvIHVzaW5nIG9zLnJlcGxhY2UoKSBmb3IgYXRvbWljIHJlbmFtaW5nLgorCistIERvIGF3YXkgd2l0aCBhbWJpZ3VvdXMgbGV2ZWwgdmFsdWVzIChhcyBzdWdnZXN0ZWQgYnkgUEVQIDMyOCkgaW4KKyAgaW1wb3J0bGliLl9faW1wb3J0X18oKSBieSByYWlzaW5nIFZhbHVlRXJyb3Igd2hlbiBsZXZlbCA8IDAuCisKIC0gSXNzdWUgIzI0ODk6IHB0eS5zcGF3biBjb3VsZCBjb25zdW1lIDEwMCUgY3B1IHdoZW4gaXQgZW5jb3VudGVyZWQgYW4gRU9GLgogCiAtIElzc3VlICMxMzAxNDogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkuCiAKKy0gSXNzdWUgIzEzNzc3OiBBZGQgUEZfU1lTVEVNIHNvY2tldHMgb24gT1MgWC4KKyAgUGF0Y2ggYnkgTWljaGFlbCBHb2RlcmJhdWVyLgorCiAtIElzc3VlICMxMzAxNTogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gZGVmYXVsdGRpY3QuX19yZXByX18uCiAgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKLS0gSXNzdWUgIzEzMjYxMTM6IGRpc3R1dGlscycgYnVpbGRfZXh0IGNvbW1hbmQgLS1saWJyYXJpZXMgb3B0aW9uIG5vdwotICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBvciBjb21tYXMuCistIElzc3VlICMxMzI2MTEzOiBkaXN0dXRpbHMnIGFuZCBwYWNrYWdpbmcncyBidWlsZF9leHQgY29tbWFuZHMgb3B0aW9uIG5vdworICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyAoc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzKSBnaXZlbgorICB0byB0aGVpciAtLWxpYnJhcmllcyBvcHRpb24uCiAKIC0gSXNzdWUgIzEwMjg3OiBubnRwbGliIG5vdyBxdWVyaWVzIHRoZSBzZXJ2ZXIncyBDQVBBQklMSVRJRVMgZmlyc3QgYmVmb3JlCiAgIHNlbmRpbmcgTU9ERSBSRUFERVIsIGFuZCBvbmx5IHNlbmRzIGl0IGlmIG5vdCBhbHJlYWR5IGluIFJFQURFUiBtb2RlLgogICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKLS0gSXNzdWUgIzEzOTc5OiBBIGJ1ZyBpbiBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgdGhhdCBjYXVzZWQKLSAgdGhlIHdyb25nIGxpYnJhcnkgbmFtZSB0byBiZSByZXR1cm5lZCBoYXMgYmVlbiBmaXhlZC4KLQogLSBJc3N1ZSAjMTM5OTM6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBlbmQgdGFncyB3aGVuCiAgIHN0cmljdD1GYWxzZS4KIAorLSBJc3N1ZSAjMTM5MzA6IGxpYjJ0bzMgbm93IHN1cHBvcnRzIHdyaXRpbmcgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCisgIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCisgIHN1ZmZpeC4KKwogLSBJc3N1ZSAjOTc1MDogRml4IHNxbGl0ZTMuQ29ubmVjdGlvbi5pdGVyZHVtcCBvbiB0YWJsZXMgYW5kIGZpZWxkcwogICB3aXRoIGEgbmFtZSB0aGF0IGlzIGEga2V5d29yZCBvciBjb250YWlucyBxdW90ZXMuIFBhdGNoIGJ5IE1hcmtvCiAgIEtvaHRhbGEuCkBAIC05MDIsMTAgKzI1MzIsMjcgQEAKIC0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMgd2hlbgogICBzdHJpY3Q9RmFsc2UuCiAKLS0gSXNzdWUgIzkwMjE6IEFkZCBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvcHkgbW9kdWxlIGRvY3VtZW50YXRpb24uCistIElzc3VlICMxMzkyMTogVW5kb2N1bWVudCBhbmQgY2xlYW4gdXAgc3FsaXRlMy5PcHRpbWl6ZWRVbmljb2RlLAorICB3aGljaCBpcyBvYnNvbGV0ZSBpbiBQeXRob24gMy54LiBJdCdzIG5vdyBhbGlhc2VkIHRvIHN0ciBmb3IKKyAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAKLS0gSXNzdWUgIzYwMDU6IEV4YW1wbGVzIGluIHRoZSBzb2NrZXQgbGlicmFyeSBkb2N1bWVudGF0aW9uIHVzZSBzZW5kYWxsLCB3aGVyZQotICByZWxldmFudCwgaW5zdGVhZCBzZW5kIG1ldGhvZC4KKy0gV2hlbiAnJyBpcyBhIHBhdGggKGUuZy4gaW4gc3lzLnBhdGgpLCBtYWtlIHN1cmUgX19maWxlX18gdXNlcyB0aGUgY3VycmVudAorICB3b3JraW5nIGRpcmVjdG9yeSBpbnN0ZWFkIG9mICcnIGluIGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTM2MDk6IEFkZCB0d28gZnVuY3Rpb25zIHRvIHF1ZXJ5IHRoZSB0ZXJtaW5hbCBzaXplOgorICBvcy5nZXRfdGVybWluYWxfc2l6ZSAobG93IGxldmVsKSBhbmQgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplIChoaWdoIGxldmVsKS4KKyAgUGF0Y2ggYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lay4KKworLSBJc3N1ZSAjMTM4NDU6IE9uIFdpbmRvd3MsIHRpbWUudGltZSgpIG5vdyB1c2VzIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkKKyAgaW5zdGVhZCBvZiBmdGltZSgpIHRvIGhhdmUgYSByZXNvbHV0aW9uIG9mIDEwMCBucyBpbnN0ZWFkIG9mIDEgbXMgKHRoZSBjbG9jaworICBhY2N1cmFjeSBpcyBiZXR3ZWVuIDAuNSBtcyBhbmQgMTUgbXMpLgorCistIElzc3VlICMxMzg0NjogQWRkIHRpbWUubW9ub3RvbmljKCksIG1vbm90b25pYyBjbG9jay4KKworLSBJc3N1ZSAjODE4NDogbXVsdGlwcm9jZXNzaW5nOiBPbiBXaW5kb3dzLCBkb24ndCBzZXQgU09fUkVVU0VBRERSIG9uCisgIENvbm5lY3Rpb24gc29ja2V0cywgYW5kIHNldCBGSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSBvbiBuYW1lZCBwaXBlcywgdG8KKyAgbWFrZSBzdXJlIHR3byBsaXN0ZW5lcnMgY2FuJ3QgYmluZCB0byB0aGUgc2FtZSBzb2NrZXQvcGlwZSAob3IgYW55IGV4aXN0aW5nCisgIHNvY2tldC9waXBlKS4KIAogLSBJc3N1ZSAjMTA4MTE6IEZpeCByZWN1cnNpdmUgdXNhZ2Ugb2YgY3Vyc29ycy4gSW5zdGVhZCBvZiBjcmFzaGluZywKICAgcmFpc2UgYSBQcm9ncmFtbWluZ0Vycm9yIG5vdy4KQEAgLTkxNSw4ICsyNTYyLDE1IEBACiAtIElzc3VlICM5NjQ0Mzc6IE1ha2UgSURMRSBoZWxwIHdpbmRvdyBub24tbW9kYWwuCiAgIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvIGFuZCBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTM3MzQ6IEFkZCBvcy5md2FsaygpLCBhIGRpcmVjdG9yeSB3YWxraW5nIGZ1bmN0aW9uIHlpZWxkaW5nIGZpbGUKKyAgZGVzY3JpcHRvcnMuCisKIC0gSXNzdWUgIzI5NDU6IE1ha2UgdGhlIGRpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBhd2FyZSBvZiBiZGlzdF9ycG0gcHJvZHVjdHMuCiAKKy0gSXNzdWUgIzEzNzEyOiBweXNldHVwIGNyZWF0ZSBzaG91bGQgbm90IGNvbnZlcnQgcGFja2FnZV9kYXRhIHRvIGV4dHJhX2ZpbGVzLgorCistIElzc3VlICMxMTgwNTogcGFja2FnZV9kYXRhIGluIHNldHVwLmNmZyBzaG91bGQgYWxsb3cgbW9yZSB0aGFuIG9uZSB2YWx1ZS4KKwogLSBJc3N1ZSAjMTM5MzM6IElETEUgYXV0by1jb21wbGV0ZSBkaWQgbm90IHdvcmsgd2l0aCBzb21lIGltcG9ydGVkCiAgIG1vZHVsZSwgbGlrZSBoYXNobGliLiAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQogCkBAIC05MjcsNiArMjU4MSw5IEBACiAtIElzc3VlICMxMzUwNjogQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgogICBPcmlnaW5hbCBwYXRjaGVzIGJ5IE1hcmNvIFNjYXRhZ2xpbmkgYW5kIFJvZ2VyIFNlcnd5LgogCistIElzc3VlICM4ODI4OiBBZGQgbmV3IGZ1bmN0aW9uIG9zLnJlcGxhY2UoKSwgZm9yIGNyb3NzLXBsYXRmb3JtIHJlbmFtaW5nCisgIHdpdGggb3ZlcndyaXRpbmcuCisKIC0gSXNzdWUgIzEzODQ4OiBvcGVuKCkgYW5kIHRoZSBGaWxlSU8gY29uc3RydWN0b3Igbm93IGNoZWNrIGZvciBOVUwKICAgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBuYW1lLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCkBAIC05MzksNiArMjU5NiwxNyBAQAogLSBJc3N1ZSAjMTM4ODU6IENWRS0yMDExLTMzODk6IHRoZSBfc3NsIG1vZHVsZSB3b3VsZCBhbHdheXMgZGlzYWJsZSB0aGUgQ0JDCiAgIElWIGF0dGFjayBjb3VudGVybWVhc3VyZS4KIAorLSBJc3N1ZSAjMTM4NDc6IHRpbWUubG9jYWx0aW1lKCkgYW5kIHRpbWUuZ210aW1lKCkgbm93IHJhaXNlIGFuIE9TRXJyb3IgaW5zdGVhZAorICBvZiBWYWx1ZUVycm9yIG9uIGZhaWx1cmUuIHRpbWUuY3RpbWUoKSBhbmQgdGltZS5hc2N0aW1lKCkgbm93IHJhaXNlcyBhbgorICBPU0Vycm9yIGlmIGxvY2FsdGltZSgpIGZhaWxlZC4gdGltZS5jbG9jaygpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCisgIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSBvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkCisKKy0gSXNzdWUgIzEzODYyOiBGaXggc3B1cmlvdXMgZmFpbHVyZSBpbiB0ZXN0X3psaWIgZHVlIHRvIHJ1bnRpbWUvY29tcGlsZSB0aW1lCisgIG1pbm9yIHZlcnNpb25zIG5vdCBtYXRjaGluZy4KKworLSBJc3N1ZSAjMTI4MDQ6IEZpeCB0ZXN0X3NvY2tldCBhbmQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0cworICBvbiBhIHN5c3RlbSB3aXRob3V0IGludGVybmV0IGFjY2Vzcy4KKwogLSBJc3N1ZSAjMTM3NzI6IEluIG9zLnN5bWxpbmsoKSB1bmRlciBXaW5kb3dzLCBkbyBub3QgdHJ5IHRvIGd1ZXNzIHRoZSBsaW5rCiAgIHRhcmdldCdzIHR5cGUgKGZpbGUgb3IgZGlyZWN0b3J5KS4gIFRoZSBkZXRlY3Rpb24gd2FzIGJ1Z2d5IGFuZCBtYWRlIHRoZQogICBjYWxsIG5vbi1hdG9taWMgKHRoZXJlZm9yZSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMpLgpAQCAtOTU0LDYgKzI2MjIsMTEgQEAKIC0gSXNzdWUgIzEzODAzOiBVbmRlciBTb2xhcmlzLCBkaXN0dXRpbHMgZG9lc24ndCBpbmNsdWRlIGJpdG5lc3MKICAgaW4gdGhlIGRpcmVjdG9yeSBuYW1lLgogCistIElzc3VlICMxMDI3ODogQWRkIHRpbWUud2FsbGNsb2NrKCkgZnVuY3Rpb24sIG1vbm90b25pYyBjbG9jay4KKworLSBJc3N1ZSAjMTM4MDk6IEZpeCByZWdyZXNzaW9uIHdoZXJlIGJ6MiBtb2R1bGUgd291bGRuJ3Qgd29yayB3aGVuIHRocmVhZHMgYXJlCisgIGRpc2FibGVkLiBPcmlnaW5hbCBwYXRjaCBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KKwogLSBJc3N1ZSAjMTM1ODk6IEZpeCBzb21lIHNlcmlhbGl6YXRpb24gcHJpbWl0aXZlcyBpbiB0aGUgYWlmYyBtb2R1bGUuCiAgIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCiAKQEAgLTk3MCw2ICsyNjQzLDExIEBACiAtIElzc3VlICMxMzUwMjogdGhyZWFkaW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBFdmVudC53YWl0KCkgdGhhdCBtYWRlIGl0CiAgIHJldHVybiBGYWxzZSB3aGVuIHRoZSBldmVudCB3YXMgc2V0IGFuZCBjbGVhcmVkIHJpZ2h0IGFmdGVyLgogCistIElzc3VlICM5OTkzOiBXaGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMsCisgIGFuZCB0aGUgc291cmNlIGlzIGEgc3ltbGluaywgc2h1dGlsLm1vdmUoKSBub3cgcmVjcmVhdGVzIGEgc3ltbGluayBvbiB0aGUKKyAgZGVzdGluYXRpb24gaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlIGNvbnRlbnRzLiAgUGF0Y2ggYnkgSm9uYXRoYW4gTmllaG9mCisgIGFuZCBIeW5layBTY2hsYXdhY2suCisKIC0gSXNzdWUgIzEyOTI2OiBGaXggYSBidWcgaW4gdGFyZmlsZSdzIGxpbmsgZXh0cmFjdGlvbi4KIAogLSBJc3N1ZSAjMTM2OTY6IEZpeCB0aGUgMzAyIFJlbGF0aXZlIFVSTCBSZWRpcmVjdGlvbiBwcm9ibGVtLgpAQCAtOTc3LDE1ICsyNjU1LDQyIEBACiAtIElzc3VlICMxMzYzNjogV2VhayBjaXBoZXJzIGFyZSBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUgc3NsIG1vZHVsZQogICAoZXhjZXB0IHdoZW4gU1NMdjIgaXMgZXhwbGljaXRseSBhc2tlZCBmb3IpLgogCi0tIElzc3VlICMxMjc5ODogVXBkYXRlZCB0aGUgbWltZXR5cGVzIGRvY3VtZW50YXRpb24uCistIElzc3VlICMxMjcxNTogQWRkIGFuIG9wdGlvbmFsIHN5bWxpbmtzIGFyZ3VtZW50IHRvIHNodXRpbCBmdW5jdGlvbnMKKyAgKGNvcHlmaWxlLCBjb3B5bW9kZSwgY29weXN0YXQsIGNvcHksIGNvcHkyKS4gIFdoZW4gdGhhdCBwYXJhbWV0ZXIgaXMKKyAgdHJ1ZSwgc3ltbGlua3MgYXJlbid0IGRlcmVmZXJlbmNlZCBhbmQgdGhlIG9wZXJhdGlvbiBpbnN0ZWFkIGFjdHMgb24gdGhlCisgIHN5bWxpbmsgaXRzZWxmIChvciBjcmVhdGVzIG9uZSwgaWYgcmVsZXZhbnQpLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIEFkZCBhIGZsYWdzIHBhcmFtZXRlciB0byBzZWxlY3QuZXBvbGwuCisKKy0gSXNzdWUgIzEzNjI2OiBBZGQgc3VwcG9ydCBmb3IgU1NMIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUKKyAgU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcygpIG1ldGhvZCBhbmQgdGhlIHNzbC5PUF9TSU5HTEVfREhfVVNFIG9wdGlvbi4KIAogLSBJc3N1ZSAjMTEwMDY6IERvbid0IGlzc3VlIGxvdyBsZXZlbCB3YXJuaW5nIGluIHN1YnByb2Nlc3Mgd2hlbiBwaXBlMigpIGZhaWxzLgogCistIElzc3VlICMxMzYyMDogU3VwcG9ydCBmb3IgQ2hyb21lIGJyb3dzZXIgaW4gd2ViYnJvd3Nlci4gIFBhdGNoIGNvbnRyaWJ1dGVkCisgIGJ5IEFybmF1ZCBDYWxtZXR0ZXMuCisKIC0gSXNzdWUgIzExODI5OiBGaXggY29kZSBleGVjdXRpb24gaG9sZXMgaW4gaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IKICAgbWV0YWNsYXNzZXMgd2l0aCBtZXRhY2xhc3Nlcy4gUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgogCistIElzc3VlICMxMjcwODogQWRkIHN0YXJtYXAoKSBhbmQgc3Rhcm1hcF9hc3luYygpIG1ldGhvZHMgKHNpbWlsYXIgdG8KKyAgaXRlcnRvb2xzLnN0YXJtYXAoKSkgdG8gbXVsdGlwcm9jZXNzaW5nLlBvb2wuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKIC0gSXNzdWUgIzE3ODU6IEZpeCBpbnNwZWN0IGFuZCBweWRvYyB3aXRoIG1pc2JlaGF2aW5nIGRlc2NyaXB0b3JzLgogCistIElzc3VlICMxMzYzNzogImEyYiIgZnVuY3Rpb25zIGluIHRoZSBiaW5hc2NpaSBtb2R1bGUgbm93IGFjY2VwdCBBU0NJSS1vbmx5CisgIHVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTM2MzQ6IEFkZCBzdXBwb3J0IGZvciBxdWVyeWluZyBhbmQgZGlzYWJsaW5nIFNTTCBjb21wcmVzc2lvbi4KKworLSBJc3N1ZSAjMTM2Mjc6IEFkZCBzdXBwb3J0IGZvciBTU0wgRWxsaXB0aWMgQ3VydmUtYmFzZWQgRGlmZmllLUhlbGxtYW4KKyAga2V5IGV4Y2hhbmdlLCB0aHJvdWdoIHRoZSBTU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlKCkgbWV0aG9kIGFuZCB0aGUKKyAgc3NsLk9QX1NJTkdMRV9FQ0RIX1VTRSBvcHRpb24uCisKKy0gSXNzdWUgIzEzNjM1OiBBZGQgc3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgc28gdGhhdCBTU0wgc2VydmVycworICBjaG9vc2UgdGhlIGNpcGhlciBiYXNlZCBvbiB0aGVpciBvd24gcHJlZmVyZW5jZXMsIHJhdGhlciB0aGFuIG9uIHRoZQorICBjbGllbnQncy4KKwogLSBJc3N1ZSAjMTE4MTM6IEZpeCBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGZvciBtb2R1bGVzLiBQYXRjaCBieSBBbmRyZWFzCiAgIFN0w7xocmsuCiAKQEAgLTk5OCwyNyArMjcwMyw1OCBAQAogLSBJc3N1ZSAjODAzNTogdXJsbGliOiBGaXggYSBidWcgd2hlcmUgdGhlIGNsaWVudCBjb3VsZCByZW1haW4gc3R1Y2sgYWZ0ZXIgYQogICByZWRpcmVjdGlvbiBvciBhbiBlcnJvci4KIAorLSBJc3N1ZSAjMTM1NjA6IG9zLnN0cmVycm9yKCkgbm93IHVzZXMgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YKKyAgVVRGLTguCisKKy0gSXNzdWUgIzgzNzM6IFRoZSBmaWxlc3lzdGVtIHBhdGggb2YgQUZfVU5JWCBzb2NrZXRzIG5vdyB1c2VzIHRoZSBmaWxlc3lzdGVtCisgIGVuY29kaW5nIGFuZCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsIHJhdGhlciB0aGFuIFVURi04LiAgUGF0Y2gKKyAgYnkgRGF2aWQgV2F0c29uLgorCiAtIElzc3VlICMxMDM1MDogUmVhZCBhbmQgc2F2ZSBlcnJubyBiZWZvcmUgY2FsbGluZyBhIGZ1bmN0aW9uIHdoaWNoIG1pZ2h0CiAgIG92ZXJ3cml0ZSBpdC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCiAKKy0gSXNzdWUgIzExNjEwOiBJbnRyb2R1Y2UgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGRlY2xhcmUgYWJzdHJhY3QgcHJvcGVydGllcy4KKwogLSBJc3N1ZSAjMTM1OTE6IEEgYnVnIGluIGltcG9ydGxpYiBoYXMgYmVlbiBmaXhlZCB0aGF0IGNhdXNlZCBpbXBvcnRfbW9kdWxlCiAgIHRvIGxvYWQgYSBtb2R1bGUgdHdpY2UuCiAKLS0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50Ci0gIGZpbGVzLCBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guCi0gIChvcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eSkKKy0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLAorICBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guICBPcmlnaW5hbCBwYXRjaCBieQorICBSb2dlciBTZXJ3eS4KIAotLSBJc3N1ZSAjNTkwNTogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCBpbnN0ZWFkIG9mCi0gIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgorLSBJc3N1ZSAjMTM0NDkgc2NoZWQuc2NoZWR1bGVyLnJ1bigpIG1ldGhvZCBoYXMgYSBuZXcgImJsb2NraW5nIiBwYXJhbWV0ZXIgd2hpY2gKKyAgd2hlbiBzZXQgdG8gRmFsc2UgbWFrZXMgcnVuKCkgZXhlY3V0ZSB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlCisgIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sw6AuCisKKy0gSXNzdWUgIzg2ODQgc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZAorICBlbnZpcm9ubWVudHMuICBQYXRjaCBieSBKb3NpYWggQ2FybHNvbiBhbmQgR2lhbXBhb2xvIFJvZG9sw6AuCisKKy0gQWxpYXMgcmVzb3VyY2UuZXJyb3IgdG8gT1NFcnJvciBhbGEgUEVQIDMxNTEuCisKKy0gSXNzdWUgIzU2ODk6IEFkZCBzdXBwb3J0IGZvciBsem1hIGNvbXByZXNzaW9uIHRvIHRoZSB0YXJmaWxlIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyNDg6IFR1cm4gMy4yJ3MgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpbnRvIDMuMydzCisgIERlcHJlY2F0aW9uV2FybmluZy4gIEl0IGNvdmVycyAnY2dpLmVzY2FwZScsICdpbXBvcnRsaWIuYWJjLlB5TG9hZGVyJywKKyAgJ2ltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXInLCAnbm50cGxpYi5OTlRQLnhndGl0bGUnLCAnbm50cGxpYi5OTlRQLnhwYXRoJywKKyAgYW5kIHByaXZhdGUgYXR0cmlidXRlcyBvZiAnc210cGQuU01UUENoYW5uZWwnLgorCistIElzc3VlICM1OTA1LCAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCisgIGVuY29kaW5nLCBpbnN0ZWFkIG9mIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgogCiAtIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KICAgUGF0Y2ggYnkgVGFsIEVpbmF0LgogCistIElzc3VlICMxMzQ2NDogQWRkIGEgcmVhZGludG8oKSBtZXRob2QgdG8gaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlLiAgUGF0Y2gKKyAgYnkgSm9uIEt1aG4uCisKIC0gdGFyZmlsZS5weTogQ29ycmVjdGx5IGRldGVjdCBiemlwMiBjb21wcmVzc2VkIHN0cmVhbXMgd2l0aCBibG9ja3NpemVzCiAgIG90aGVyIHRoYW4gOTAway4KIAogLSBJc3N1ZSAjMTM0Mzk6IEZpeCBtYW55IGVycm9ycyBpbiB0dXJ0bGUgZG9jc3RyaW5ncy4KIAorLSBJc3N1ZSAjNjcxNTogQWRkIGEgbW9kdWxlICdsem1hJyBmb3IgY29tcHJlc3Npb24gdXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtLgorICBUaGFua3MgdG8gUGVyIMOYeXZpbmQgS2FybHNlbiBmb3IgdGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24uCisKIC0gSXNzdWUgIzEzNDg3OiBNYWtlIGluc3BlY3QuZ2V0bW9kdWxlIHJvYnVzdCBhZ2FpbnN0IGNoYW5nZXMgZG9uZSB0bwogICBzeXMubW9kdWxlcyB3aGlsZSBpdCBpcyBpdGVyYXRpbmcgb3ZlciBpdC4KIApAQCAtMTAyOCwxNSArMjc2NCwzMSBAQAogLSBJc3N1ZSAjMTM0NDQ6IFdoZW4gc3Rkb3V0IGhhcyBiZWVuIGNsb3NlZCBleHBsaWNpdGx5LCB3ZSBzaG91bGQgbm90IGF0dGVtcHQKICAgdG8gZmx1c2ggaXQgYXQgc2h1dGRvd24gYW5kIHByaW50IGFuIGVycm9yLgogCistIElzc3VlICMxMjU2NzogVGhlIGN1cnNlcyBtb2R1bGUgdXNlcyBVbmljb2RlIGZ1bmN0aW9ucyBmb3IgVW5pY29kZSBhcmd1bWVudHMKKyAgd2hlbiBpdCBpcyBsaW5rZWQgdG8gdGhlIG5jdXJzZXMgbGlicmFyeS4gSXQgZW5jb2RlcyBhbHNvIFVuaWNvZGUgc3RyaW5ncyB0bworICB0aGUgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTguCisKIC0gSXNzdWUgIzEyODU2OiBFbnN1cmUgY2hpbGQgcHJvY2Vzc2VzIGRvIG5vdCBpbmhlcml0IHRoZSBwYXJlbnQncyByYW5kb20KICAgc2VlZCBmb3IgZmlsZW5hbWUgZ2VuZXJhdGlvbiBpbiB0aGUgdGVtcGZpbGUgbW9kdWxlLiAgUGF0Y2ggYnkgQnJpYW4KICAgSGFycmluZy4KIAorLSBJc3N1ZSAjOTk1NzogU3Bvb2xlZFRlbXBvcmFyeUZpbGUudHJ1bmNhdGUoKSBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzaXplCisgIHBhcmFtZXRlciwgYXMgb3RoZXIgZmlsZS1saWtlIG9iamVjdHMuICBQYXRjaCBieSBSeWFuIEtlbGx5LgorCiAtIElzc3VlICMxMzQ1ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gdGhlIHNzbCBtb2R1bGUgd2hlbiBkZWNvZGluZyBhCiAgIGNlcnRpZmljYXRlIHdpdGggYSBzdWJqZWN0QWx0TmFtZS4gIFBhdGNoIGJ5IFJvYmVydCBYaWFvLgogCiAtIElzc3VlICMxMzQxNTogb3MudW5zZXRlbnYoKSBkb2Vzbid0IGlnbm9yZSBlcnJvcnMgYW55bW9yZS4KIAorLSBJc3N1ZSAjMTMyNDU6IHNjaGVkLnNjaGVkdWxlciBjbGFzcyBjb25zdHJ1Y3RvcidzIHRpbWVmdW5jIGFuZAorICBkZWxheWZ1bmN0IHBhcmFtZXRlcnMgYXJlIG5vdyBvcHRpb25hbC4KKyAgc2NoZWR1bGVyLmVudGVyIGFuZCBzY2hlZHVsZXIuZW50ZXJhYnMgbWV0aG9kcyBnYWluZWQgYSBuZXcga3dhcmdzIHBhcmFtZXRlci4KKyAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsuCisKKy0gSXNzdWUgIzEyMzI4OiBVbmRlciBXaW5kb3dzLCByZWZhY3RvciBoYW5kbGluZyBvZiBDdHJsLUMgZXZlbnRzIGFuZAorICBtYWtlIF9tdWx0aXByb2Nlc3Npbmcud2luMzIuV2FpdEZvck11bHRpcGxlT2JqZWN0cyBpbnRlcnJ1cHRpYmxlIHdoZW4KKyAgdGhlIHdhaXRfZmxhZyBwYXJhbWV0ZXIgaXMgZmFsc2UuICBQYXRjaCBieSBzYnQuCisKIC0gSXNzdWUgIzEzMzIyOiBGaXggQnVmZmVyZWRXcml0ZXIud3JpdGUoKSB0byBlbnN1cmUgdGhhdCBCbG9ja2luZ0lPRXJyb3IgaXMKICAgcmFpc2VkIHdoZW4gdGhlIHdyYXBwZWQgcmF3IGZpbGUgaXMgbm9uLWJsb2NraW5nIGFuZCB0aGUgd3JpdGUgd291bGQgYmxvY2suCiAgIFByZXZpb3VzIGNvZGUgYXNzdW1lZCB0aGF0IHRoZSByYXcgd3JpdGUoKSB3b3VsZCByYWlzZSBCbG9ja2luZ0lPRXJyb3IsIGJ1dApAQCAtMTA0OSwxMyArMjgwMSwyNSBAQAogICBub2RlIHdoZW4gaXQgaXMgdGhlIG9ubHkgY2hpbGQgb2YgYW4gZWxlbWVudC4gIEluaXRpYWwgcGF0Y2ggYnkgRGFuCiAgIEtlbmlnc2JlcmcuCiAKKy0gSXNzdWUgIzEzMzc0OiBUaGUgV2luZG93cyBieXRlcyBBUEkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB0aGUgb3MgbW9kdWxlLiBVc2UKKyAgVW5pY29kZSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBieXRlcyBmaWxlbmFtZXMgdG8gbm90IGRlcGVuZCBvbiB0aGUgQU5TSSBjb2RlCisgIHBhZ2UgYW55bW9yZSBhbmQgdG8gc3VwcG9ydCBhbnkgZmlsZW5hbWUuCisKKy0gSXNzdWUgIzEzMjk3OiBVc2UgYnl0ZXMgdHlwZSB0byBzZW5kIGFuZCByZWNlaXZlIGJpbmFyeSBkYXRhIHRocm91Z2ggWE1MUlBDLgorCistIElzc3VlICM2Mzk3OiBTdXBwb3J0ICIvZGV2L3BvbGwiIHBvbGxpbmcgb2JqZWN0cyBpbiBzZWxlY3QgbW9kdWxlLAorICB1bmRlciBTb2xhcmlzICYgZGVyaXZhdGl2ZXMuCisKIC0gSXNzdWVzICMxNzQ1NzYxLCAjNzU1NjcwLCAjMTMzNTcsICMxMjYyOSwgIzEyMDAzMTM6IEhUTUxQYXJzZXIgbm93IGNvcnJlY3RseQogICBoYW5kbGVzIG5vbi12YWxpZCBhdHRyaWJ1dGVzLCBpbmNsdWRpbmcgYWRqYWNlbnQgYW5kIHVucXVvdGVkIGF0dHJpYnV0ZXMuCiAKLS0gSXNzdWUgIzEzMTkzOiBGaXggZGlzdHV0aWxzLmZpbGVsaXN0LkZpbGVMaXN0IHVuZGVyIFdpbmRvd3MuCistIElzc3VlICMxMzE5MzogRml4IGRpc3R1dGlscy5maWxlbGlzdC5GaWxlTGlzdCBhbmQgcGFja2FnaW5nLm1hbmlmZXN0Lk1hbmlmZXN0CisgIHVuZGVyIFdpbmRvd3MuCiAKIC0gSXNzdWUgIzEzMzg0OiBSZW1vdmUgdW5uZWNlc3NhcnkgX19mdXR1cmVfXyBpbXBvcnQgaW4gTGliL3JhbmRvbS5weQogCistIElzc3VlICMxMzE0OTogU3BlZWQgdXAgYXBwZW5kLW9ubHkgU3RyaW5nSU8gb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTMzNzM6IG11bHRpcHJvY2Vzc2luZy5RdWV1ZS5nZXQoKSBjb3VsZCBzb21ldGltZXMgYmxvY2sgaW5kZWZpbml0ZWx5CiAgIHdoZW4gY2FsbGVkIHdpdGggYSB0aW1lb3V0LiAgUGF0Y2ggYnkgQXJuYXVkIFlzbWFsLgogCkBAIC0xMDcxLDExICsyODM1LDIwIEBACiAtIElzc3VlICMxMzMzOTogRml4IGNvbXBpbGUgZXJyb3IgaW4gcG9zaXhtb2R1bGUuYyBkdWUgdG8gbWlzc2luZyBzZW1pY29sb24uCiAgIFRoYW5rcyB0byBSb2JlcnQgWGlhby4KIAorLSBCeXRlIGNvbXBpbGF0aW9uIGluIHBhY2thZ2luZyBpcyBub3cgaXNvbGF0ZWQgZnJvbSB0aGUgY2FsbGluZyBQeXRob24gLUIgb3IKKyAgLU8gb3B0aW9ucywgaW5zdGVhZCBvZiBiZWluZyBkaXNhbGxvd2VkIHVuZGVyIC1CIG9yIGJ1Z2d5IHVuZGVyIC1PLgorCiAtIElzc3VlICMxMDU3MDogY3Vyc2VzLnB1dHAoKSBhbmQgY3Vyc2VzLnRwYXJtKCkgYXJlIG5vdyBleHBlY3RpbmcgYSBieXRlCiAgIHN0cmluZywgaW5zdGVhZCBvZiBhIFVuaWNvZGUgc3RyaW5nLgogCistIElzc3VlICMxMzI5NTogaHR0cC5zZXJ2ZXIgbm93IHByb2R1Y2VzIHZhbGlkIEhUTUwgNC4wMSBzdHJpY3QuCisKIC0gSXNzdWUgIzI4OTI6IHByZXNlcnZlIGl0ZXJwYXJzZSBldmVudHMgaW4gY2FzZSBvZiBTeW50YXhFcnJvci4KIAorLSBJc3N1ZSAjMTMyODc6IHVybGxpYi5yZXF1ZXN0IGFuZCB1cmxsaWIuZXJyb3Igbm93IGNvbnRhaW5zIGFuIF9fYWxsX18KKyAgYXR0cmlidXRlIHRvIGV4cG9zZSBvbmx5IHJlbGV2YW50IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4gIFBhdGNoIGJ5IEZsb3JlbnQKKyAgWGljbHVuYS4KKwogLSBJc3N1ZSAjNjcwNjY0OiBGaXggSFRNTFBhcnNlciB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBjb250ZW50IG9mCiAgIGBgPHNjcmlwdD4uLi48L3NjcmlwdD5gYCBhbmQgYGA8c3R5bGU+Li4uPC9zdHlsZT5gYC4KIApAQCAtMTA4NSw2ICsyODU4LDkgQEAKIC0gSXNzdWUgIzEzMjk2OiBGaXggSURMRSB0byBjbGVhciBjb21waWxlIF9fZnV0dXJlX18gZmxhZ3Mgb24gc2hlbGwgcmVzdGFydC4KICAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQogCistIEZpeCB0aGUgeG1scnBjLmNsaWVudCB1c2VyIGFnZW50IHRvIHJldHVybiBzb21ldGhpbmcgc2ltaWxhciB0bworICB1cmxsaWIucmVxdWVzdCB1c2VyIGFnZW50OiAiUHl0aG9uLXhtbHJwYy8zLjMiLgorCiAtIElzc3VlICMxMzI5MzogQmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiB0cnlpbmcgdG8gbWFyc2hhbCBieXRlcyB1c2luZwogICB4bWxycGMuY2xpZW50LgogCkBAIC0xMDk1LDUxICsyODcxLDgxIEBACiAtIElzc3VlICMxMzI3MzogZml4IGEgYnVnIHRoYXQgcHJldmVudGVkIEhUTUxQYXJzZXIgdG8gcHJvcGVybHkgZGV0ZWN0IHNvbWUKICAgdGFncyB3aGVuIHN0cmljdD1GYWxzZS4KIAorLSBJc3N1ZSAjMTExODM6IEFkZCBmaW5lci1ncmFpbmVkIGV4Y2VwdGlvbnMgdG8gdGhlIHNzbCBtb2R1bGUsIHNvIHRoYXQKKyAgeW91IGRvbid0IGhhdmUgdG8gaW5zcGVjdCB0aGUgZXhjZXB0aW9uJ3MgYXR0cmlidXRlcyBpbiB0aGUgY29tbW9uIGNhc2UuCisKKy0gSXNzdWUgIzEzMjE2OiBBZGQgY3A2NTAwMSBjb2RlYywgdGhlIFdpbmRvd3MgVVRGLTggKENQX1VURjgpLgorCistIElzc3VlICMxMzIyNjogQWRkIFJUTERfeHh4IGNvbnN0YW50cyB0byB0aGUgb3MgbW9kdWxlLiBUaGVzZSBjb25zdGFudHMgY2FuIGJlCisgIHVzZWQgd2l0aCBzeXMuc2V0ZGxvcGVuZmxhZ3MoKS4KKworLSBJc3N1ZSAjMTAyNzg6IEFkZCBjbG9ja19nZXRyZXMoKSwgY2xvY2tfZ2V0dGltZSgpIGFuZCBDTE9DS194eHggY29uc3RhbnRzIHRvCisgIHRoZSB0aW1lIG1vZHVsZS4gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKSBwcm92aWRlcyBhCisgIG1vbm90b25pYyBjbG9jaworCiAtIElzc3VlICMxMDMzMjogbXVsdGlwcm9jZXNzaW5nOiBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIGEgUG9vbCBpcyBjbG9zZWQKICAgYmVmb3JlIGFsbCB0YXNrcyBoYXZlIGNvbXBsZXRlZC4KIAogLSBJc3N1ZSAjMTMyNTU6IHdyb25nIGRvY3N0cmluZ3MgaW4gYXJyYXkgbW9kdWxlLgogCistIElzc3VlICM4NTQwOiBSZW1vdmUgZGVwcmVjYXRlZCBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgaW4gRGVjaW1hbCBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjM1OiBBZGRlZCBEZXByZWNhdGlvbldhcm5pbmcgdG8gbG9nZ2luZy53YXJuKCkgbWV0aG9kIGFuZCBmdW5jdGlvbi4KKwogLSBJc3N1ZSAjOTE2ODogbm93IHNtdHBkIGlzIGFibGUgdG8gYmluZCBwcml2aWxlZ2VkIHBvcnQuCiAKIC0gSXNzdWUgIzEyNTI5OiBmaXggY2dpLnBhcnNlX2hlYWRlciBpc3N1ZSBvbiBzdHJpbmdzIHdpdGggZG91YmxlLXF1b3RlcyBhbmQKICAgc2VtaWNvbG9ucyB0b2dldGhlci4gUGF0Y2ggYnkgQmVuIERhcm5lbGwgYW5kIFBldHJpIExlaHRpbmVuLgogCi0tIElzc3VlICMxMjQ0ODogc210cGxpYiBub3cgZmx1c2hlcyBzdGRvdXQgd2hpbGUgcnVubmluZyBgYHB5dGhvbiAtbSBzbXRwbGliYGAKLSAgaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgcHJvbXB0IGNvcnJlY3RseS4KKy0gSXNzdWUgIzEzMjI3OiBmdW5jdG9vbHMubHJ1X2NhY2hlKCkgbm93IGhhcyBhIG9wdGlvbiB0byBkaXN0aW5ndWlzaAorICBjYWxscyB3aXRoIGRpZmZlcmVudCBhcmd1bWVudCB0eXBlcy4KIAogLSBJc3N1ZSAjNjA5MDogemlwZmlsZSByYWlzZXMgYSBWYWx1ZUVycm9yIHdoZW4gYSBkb2N1bWVudCB3aXRoIGEgdGltZXN0YW1wCiAgIGVhcmxpZXIgdGhhbiAxOTgwIGlzIHByb3ZpZGVkLiBQYXRjaCBjb250cmlidXRlZCBieSBQZXRyaSBMZWh0aW5lbi4KIAorLSBJc3N1ZSAjMTMxNTA6IHN5c2NvbmZpZyBubyBsb25nZXIgcGFyc2VzIHRoZSBNYWtlZmlsZSBhbmQgY29uZmlnLmggZmlsZXMKKyAgd2hlbiBpbXBvcnRlZCwgaW5zdGVhZCBkb2luZyBpdCBhdCBidWlsZCB0aW1lLiAgVGhpcyBtYWtlcyBpbXBvcnRpbmcKKyAgc3lzY29uZmlnIGZhc3RlciBhbmQgcmVkdWNlcyBQeXRob24gc3RhcnR1cCB0aW1lIGJ5IDIwJS4KKworLSBJc3N1ZSAjMTI0NDg6IHNtdHBsaWIgbm93IGZsdXNoZXMgc3Rkb3V0IHdoaWxlIHJ1bm5pbmcgYGBweXRob24gLW0gc210cGxpYmBgCisgIGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHByb21wdCBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzEyNDU0OiBUaGUgbWFpbGJveCBtb2R1bGUgaXMgbm93IHVzaW5nIEFTQ0lJLCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUKKyAgZW5jb2RpbmcsIHRvIHJlYWQgYW5kIHdyaXRlIC5taF9zZXF1ZW5jZXMgZmlsZXMuCisKIC0gSXNzdWUgIzEzMTk0OiB6bGliLmNvbXByZXNzb2JqKCkuY29weSgpIGFuZCB6bGliLmRlY29tcHJlc3NvYmooKS5jb3B5KCkgYXJlCiAgIG5vdyBhdmFpbGFibGUgb24gV2luZG93cy4KIAorLSBJc3N1ZSAjMTY3MzAwNzogdXJsbGliLnJlcXVlc3Qgbm93IHN1cHBvcnRzIEhFQUQgcmVxdWVzdCB2aWEgbmV3IG1ldGhvZCBhcmd1bWVudC4KKyAgUGF0Y2ggY29udHJpYnV0aW9ucyBieSBEYXZpZCBTdGFuZWssIFBhdHJpY2sgV2VzdGVyaG9mZiBhbmQgRXppbyBNZWxvdHRpLgorCistIElzc3VlICMxMjM4NjogcGFja2FnaW5nIGRvZXMgbm90IGZhaWwgYW55bW9yZSB3aGVuIHdyaXRpbmcgdGhlIFJFU09VUkNFUworICBmaWxlLgorCiAtIElzc3VlICMxMzE1ODogRml4IGRlY29kaW5nIGFuZCBlbmNvZGluZyBvZiBHTlUgdGFyIHNwZWNpZmljIGJhc2UtMjU2IG51bWJlcgogICBmaWVsZHMgaW4gdGFyZmlsZS4KIAotLSBJc3N1ZSAjMTMxNzc6ICBGdW5jdG9vbHMgbHJ1X2NhY2hlKCkgbm8gbG9uZ2VyIGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbgotICBpbnNpZGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIuICBUaGlzIG1ha2VzIHRyYWNlYmFja3MgZWFzaWVyIHRvIHJlYWQgYmVjYXVzZQotICBjaGFpbmVkIGV4Y2VwdGlvbnMgYXJlIGF2b2lkZWQuCi0KIC0gSXNzdWUgIzEzMDI1OiBtaW1ldHlwZXMgaXMgbm93IHJlYWRpbmcgTUlNRSB0eXBlcyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcsCiAgIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAogLSBJc3N1ZSAjMTA2NTM6IE9uIFdpbmRvd3MsIHVzZSBzdHJmdGltZSgpIGluc3RlYWQgb2Ygd2NzZnRpbWUoKSBiZWNhdXNlCiAgIHdjc2Z0aW1lKCkgZG9lc24ndCBmb3JtYXQgdGltZSB6b25lIGNvcnJlY3RseS4KIAorLSBJc3N1ZSAjMTMxNTA6IFRoZSB0b2tlbml6ZSBtb2R1bGUgZG9lc24ndCBjb21waWxlIGxhcmdlIHJlZ3VsYXIgZXhwcmVzc2lvbnMKKyAgYXQgc3RhcnR1cCBhbnltb3JlLgorCiAtIElzc3VlICMxMTE3MTogRml4IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lIHdoZW4gUHl0aG9uIHdhcwogICBjb25maWd1cmVkIHdpdGggZGlmZmVyZW50IHByZWZpeCBhbmQgZXhlYy1wcmVmaXguCiAKLS0gSXNzdWUgIzExMjU0OiBUZWFjaCBkaXN0dXRpbHMgdG8gY29tcGlsZSAucHljIGFuZCAucHlvIGZpbGVzIGluCistIElzc3VlICMxMTI1NDogVGVhY2ggZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgdG8gY29tcGlsZSAucHljIGFuZCAucHlvIGZpbGVzIGluCiAgIFBFUCAzMTQ3LWNvbXBsaWFudCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4KIAotLSBJc3N1ZSAjMTEyNTA6IEJhY2sgcG9ydCBmaXggZnJvbSAzLjMgYnJhbmNoLCBzbyB0aGF0IDJ0bzMgY2FuIGhhbmRsZSBmaWxlcwotICB3aXRoIGxpbmUgZmVlZHMuICBUaGlzIHdhcyBwb3J0ZWQgZnJvbSB0aGUgc2FuZGJveCB0byB0aGUgMy4zIGJyYW5jaCwgYnV0Ci0gIGRpZG4ndCBtYWtlIGl0IGludG8gMy4yLgotCiAtIElzc3VlICM3MzY3OiBGaXggcGtndXRpbC53YWxrX3BhdGhzIHRvIHNraXAgZGlyZWN0b3JpZXMgd2hvc2UKICAgY29udGVudHMgY2Fubm90IGJlIHJlYWQuCiAKKy0gSXNzdWUgIzMxNjM6IFRoZSBzdHJ1Y3QgbW9kdWxlIGdldHMgbmV3IGZvcm1hdCBjaGFyYWN0ZXJzICduJyBhbmQgJ04nCisgIHN1cHBvcnRpbmcgQyBpbnRlZ2VyIHR5cGVzIGBgc3NpemVfdGBgIGFuZCBgYHNpemVfdGBgLCByZXNwZWN0aXZlbHkuCisKIC0gSXNzdWUgIzEzMDk5OiBGaXggc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkIHVuZGVyIGEgVHVya2lzaCBsb2NhbGUuCiAgIFJlcG9ydGVkIGFuZCBkaWFnbm9zZWQgYnkgVGhvbWFzIEtsdXl2ZXIuCiAKQEAgLTExNTEsOCArMjk1Nyw2IEBACiAgIG1ldGFjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggY29weXJlZy4gIFBhdGNoIGJ5IE5pY29sYXMgTS4gVGhpw6lyeSBhbmQgQ3JhaWcKICAgQ2l0cm8uCiAKLS0gSXNzdWUgIzQxNDc6IG1pbmlkb20ncyB0b3ByZXR0eXhtbCBubyBsb25nZXIgYWRkcyB3aGl0ZXNwYWNlIHRvIHRleHQgbm9kZXMuCi0KIC0gSXNzdWUgIzEzMDM0OiBXaGVuIGRlY29kaW5nIHNvbWUgU1NMIGNlcnRpZmljYXRlcywgdGhlIHN1YmplY3RBbHROYW1lCiAgIGV4dGVuc2lvbiBjb3VsZCBiZSB1bnJlcG9ydGVkLgogCkBAIC0xMTYwLDEzICsyOTY0LDI5IEBACiAgIHdpdGggaW52YWxpZCBoZXggZXNjYXBlIHNlcXVlbmNlcywgbGlrZSBiJ1x4MCcuCiAgIChPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuKQogCi0tIElzc3VlICM4OTMzOiBkaXN0dXRpbHMnIFBLRy1JTkZPIGZpbGVzIHdpbGwgbm93IGNvcnJlY3RseSByZXBvcnQKLSAgTWV0YWRhdGEtVmVyc2lvbjogMS4xIGluc3RlYWQgb2YgMS4wIGlmIGEgQ2xhc3NpZmllciBvciBEb3dubG9hZC1VUkwgZmllbGQgaXMKLSAgcHJlc2VudC4KKy0gSXNzdWUgIzEyMzA2OiBFeHBvc2UgdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgemxpYiBDIGxpYnJhcnkgYXMgYSBjb25zdGFudCwKKyAgWkxJQl9SVU5USU1FX1ZFUlNJT04sIGluIHRoZSB6bGliIG1vZHVsZS4gUGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgogCi0tIElzc3VlICM5NTYxOiBkaXN0dXRpbHMgbm93IHJlYWRzIGFuZCB3cml0ZXMgZWdnLWluZm8gZmlsZXMgdXNpbmcgVVRGLTgsCistIElzc3VlICMxMjk1OTogQWRkIGNvbGxlY3Rpb25zLkNoYWluTWFwIHRvIGNvbGxlY3Rpb25zLl9fYWxsX18uCisKKy0gSXNzdWUgIzg5MzM6IGRpc3R1dGlscycgUEtHLUlORk8gZmlsZXMgYW5kIHBhY2thZ2luZydzIE1FVEFEQVRBIGZpbGVzIHdpbGwKKyAgbm93IGNvcnJlY3RseSByZXBvcnQgTWV0YWRhdGEtVmVyc2lvbjogMS4xIGluc3RlYWQgb2YgMS4wIGlmIGEgQ2xhc3NpZmllciBvcgorICBEb3dubG9hZC1VUkwgZmllbGQgaXMgcHJlc2VudC4KKworLSBJc3N1ZSAjMTI1Njc6IEFkZCBjdXJzZXMudW5nZXRfd2NoKCkgZnVuY3Rpb24uIFB1c2ggYSBjaGFyYWN0ZXIgc28gdGhlIG5leHQKKyAgZ2V0X3djaCgpIHdpbGwgcmV0dXJuIGl0LgorCistIElzc3VlICM5NTYxOiBkaXN0dXRpbHMgYW5kIHBhY2thZ2luZyBub3cgd3JpdGVzIGVnZy1pbmZvIGZpbGVzIHVzaW5nIFVURi04LAogICBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuCiAKKy0gSXNzdWUgIzgyODY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZCBzZGlzdCB3aWxsIHByaW50IGEgd2FybmluZyBtZXNzYWdlIGluc3RlYWQKKyAgb2YgY3Jhc2hpbmcgd2hlbiBhbiBpbnZhbGlkIHBhdGggaXMgZ2l2ZW4gaW4gdGhlIG1hbmlmZXN0IHRlbXBsYXRlLgorCistIElzc3VlICMxMjg0MTogdGFyZmlsZSB1bm5lY2Vzc2FyaWx5IGNoZWNrZWQgdGhlIGV4aXN0ZW5jZSBvZiBudW1lcmljYWwgdXNlcgorICBhbmQgZ3JvdXAgaWRzIG9uIGV4dHJhY3Rpb24uIElmIG9uZSBvZiB0aGVtIGRpZCBub3QgZXhpc3QgdGhlIHJlc3BlY3RpdmUgaWQKKyAgb2YgdGhlIGN1cnJlbnQgdXNlciAoaS5lLiByb290KSB3YXMgdXNlZCBmb3IgdGhlIGZpbGUgYW5kIG93bmVyc2hpcAorICBpbmZvcm1hdGlvbiB3YXMgbG9zdC4KKwogLSBJc3N1ZSAjMTI4ODg6IEZpeCBhIGJ1ZyBpbiBIVE1MUGFyc2VyLnVuZXNjYXBlIHRoYXQgcHJldmVudGVkIGl0IHRvIGVzY2FwZQogICBtb3JlIHRoYW4gMTI4IGVudGl0aWVzLiAgUGF0Y2ggYnkgUGV0ZXIgT3R0ZW4uCiAKQEAgLTExNzQsNiArMjk5NCwxNiBAQAogCiAtIElzc3VlICMxMjYzNjogSURMRSByZWFkcyB0aGUgY29kaW5nIGNvb2tpZSB3aGVuIGV4ZWN1dGluZyBhIFB5dGhvbiBzY3JpcHQuCiAKKy0gSXNzdWUgIzEyNDk0OiBPbiBlcnJvciwgY2FsbCgpLCBjaGVja19jYWxsKCksIGNoZWNrX291dHB1dCgpIGFuZAorICBnZXRzdGF0dXNvdXRwdXQoKSBmdW5jdGlvbnMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyBraWxsIHRoZSBwcm9jZXNzLAorICByZWFkIGl0cyBzdGF0dXMgKHRvIGF2b2lkIHpvbWJpcykgYW5kIGNsb3NlIHBpcGVzLgorCistIElzc3VlICMxMjcyMDogRXhwb3NlIGxvdy1sZXZlbCBMaW51eCBleHRlbmRlZCBmaWxlIGF0dHJpYnV0ZSBmdW5jdGlvbnMgaW4gb3MuCisKKy0gSXNzdWUgIzEwOTQ2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmRzIGJkaXN0X2R1bWIsIGJkaXN0X3dpbmluc3QgYW5kIGJkaXN0X21zaQorICBub3cgcmVzcGVjdCBhIC0tc2tpcC1idWlsZCBvcHRpb24gZ2l2ZW4gdG8gYmRpc3QuICBUaGUgcGFja2FnaW5nIGNvbW1hbmRzCisgIHdlcmUgZml4ZWQgdG9vLgorCiAtIElzc3VlICMxMjg0NzogRml4IGEgY3Jhc2ggd2l0aCBuZWdhdGl2ZSBQVVQgYW5kIExPTkdfQklOUFVUIGFyZ3VtZW50cyBpbgogICB0aGUgQyBwaWNrbGUgaW1wbGVtZW50YXRpb24uCiAKQEAgLTExODMsMjAxICszMDEzLDQ3IEBACiAtIElzc3VlICMxMjI4NzogRml4IGEgc3RhY2sgY29ycnVwdGlvbiBpbiBvc3NhdWRpb2RldiBtb2R1bGUgd2hlbiB0aGUgRkQgaXMKICAgZ3JlYXRlciB0aGFuIEZEX1NFVFNJWkUuCiAKKy0gSXNzdWUgIzEyODM5OiBGaXggY3Jhc2ggaW4gemxpYiBtb2R1bGUgZHVlIHRvIHZlcnNpb24gbWlzbWF0Y2guCisgIEZpeCBieSBSaWNoYXJkIE0uIFRldy4KKworLSBJc3N1ZSAjOTkyMzogVGhlIG1haWxjYXAgbW9kdWxlIG5vdyBjb3JyZWN0bHkgdXNlcyB0aGUgcGxhdGZvcm0gcGF0aAorICBzZXBhcmF0b3IgZm9yIHRoZSBNQUlMQ0FQIGVudmlyb25tZW50IHZhcmlhYmxlIG9uIG5vbi1QT1NJWCBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzEyODM1OiBGb2xsb3cgdXAgdG8gIzY1NjAgdGhhdCB1bmNvbmRpdGlvbmFsbHkgcHJldmVudHMgdXNlIG9mIHRoZQorICB1bmVuY3J5cHRlZCBzZW5kbXNnL3JlY3Ztc2cgQVBJcyBvbiBTU0wgd3JhcHBlZCBzb2NrZXRzLiBQYXRjaCBieSBEYXZpZAorICBXYXRzb24uCisKKy0gSXNzdWUgIzEyODAzOiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIG5vdyBhY2NlcHRzIGEgcGFzc3dvcmQgYXJndW1lbnQKKyAgdG8gYmUgdXNlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgZW5jcnlwdGVkLiAgUGF0Y2ggYnkgQWRhbSBTaW1wa2lucy4KKwogLSBJc3N1ZSAjMTE2NTc6IEZpeCBzZW5kaW5nIGZpbGUgZGVzY3JpcHRvcnMgb3ZlciAyNTUgb3ZlciBhIG11bHRpcHJvY2Vzc2luZwogICBQaXBlLgogCi0tIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCistIElzc3VlICMxMjgxMTogdGFibmFubnkuY2hlY2soKSBub3cgcHJvbXB0bHkgY2xvc2VzIGNoZWNrZWQgZmlsZXMuIFBhdGNoIGJ5CisgIEFudGhvbnkgQnJpZ2dzLgorCistIElzc3VlICM2NTYwOiBUaGUgc2VuZG1zZy9yZWN2bXNnIEFQSSBpcyBub3cgZXhwb3NlZCBieSB0aGUgc29ja2V0IG1vZHVsZQorICB3aGVuIHByb3ZpZGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLCBzdXBwb3J0aW5nIHByb2Nlc3Npbmcgb2YKKyAgYW5jaWxsYXJ5IGRhdGEgaW4gcHVyZSBQeXRob24gY29kZS4gUGF0Y2ggYnkgRGF2aWQgV2F0c29uIGFuZCBIZWlrbyBXdW5kcmFtLgorCistIElzc3VlICMxMjMyNjogT24gTGludXgsIHN5cy5wbGF0Zm9ybSBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24KKyAgYW55bW9yZS4gSXQgaXMgbm93IGFsd2F5cyAnbGludXgnLCBpbnN0ZWFkIG9mICdsaW51eDInIG9yICdsaW51eDMnIGRlcGVuZGluZworICBvbiB0aGUgTGludXggdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIFB5dGhvbi4KIAogLSBJc3N1ZSAjMTIyMTM6IEZpeCBhIGJ1ZmZlcmluZyBidWcgd2l0aCBpbnRlcmxlYXZlZCByZWFkcyBhbmQgd3JpdGVzIHRoYXQKICAgY291bGQgYXBwZWFyIG9uIEJ1ZmZlcmVkUmFuZG9tIHN0cmVhbXMuCiAKKy0gSXNzdWUgIzEyNzc4OiBSZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uIHdoZW4gSlNPTi1lbmNvZGluZyBhIGxhcmdlCisgIGNvbnRhaW5lciBvZiBtYW55IHNtYWxsIG9iamVjdHMuCisKIC0gSXNzdWUgIzEyNjUwOiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBhIHN1YnByb2Nlc3MuUG9wZW4gY291bGQgbGVhawogICByZXNvdXJjZXMgKEZEL3pvbWJpZSkgd2hlbiBraWxsZWQgYXQgdGhlIHdyb25nIHRpbWUuCiAKLS0gSXNzdWUgIzEwODYwOiBodHRwLmNsaWVudCBub3cgY29ycmVjdGx5IGhhbmRsZXMgYW4gZW1wdHkgcG9ydCBhZnRlciBwb3J0Ci0gIGRlbGltaXRlciBpbiBVUkxzLgorLSBJc3N1ZSAjMTI3NDQ6IEZpeCBpbmVmZmljaWVudCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2VycyBiZXR3ZWVuIDIqKjMxIGFuZAorICAyKio2MyBvbiBzeXN0ZW1zIHdpdGggYSA2NC1iaXQgQyAibG9uZyIuCiAKLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM2ODA3OiBSdW4gbXNpc3VwcG9ydC5tYWsgZWFybGllci4KLQotLSBJc3N1ZSAjMTA1ODA6IE1pbm9yIGdyYW1tYXIgY2hhbmdlIGluIFdpbmRvd3MgaW5zdGFsbGVyLgotCi0tIElzc3VlICMxMzMyNjogQ2xlYW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29ycmVjdGx5IG9uIE9wZW5CU0QuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDA1MzogcGF0Y2hjaGVjay5weSAoIm1ha2UgcGF0Y2hjaGVjayIpIG5vdyB3b3JrcyB3aXRoIE1RIHBhdGNoZXMuCi0gIFBhdGNoIGJ5IEZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kuCi0KLS0gSXNzdWUgIzEzOTMwOiAydG8zIGlzIG5vdyBhYmxlIHRvIHdyaXRlIGl0cyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKLSAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKLSAgc3VmZml4LiAgU2VlIGl0cyBuZXcgLW8sIC1XIGFuZCAtLWFkZC1zdWZmaXggb3B0aW9ucy4gIFRoaXMgbWFrZXMgaXQgbW9yZQotICB1c2VmdWwgaW4gbWFueSBhdXRvbWF0ZWQgY29kZSB0cmFuc2xhdGlvbiB3b3JrZmxvd3MuCi0KLS0gSXNzdWUgIzEzNjI4OiBweXRob24tZ2RiLnB5IGlzIG5vdyBhYmxlIHRvIHJldHJpZXZlIG1vcmUgZnJhbWVzIGluIHRoZSBQeXRob24KLSAgdHJhY2ViYWNrIGlmIFB5dGhvbiBpcyBvcHRpbWl6ZWQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKLQotLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KLQotLSBJc3N1ZSAjMTM3MjU6IEZpeCByZWdydGVzdCB0byByZWNvZ25pemUgdGhlIGRvY3VtZW50ZWQgLWQgZmxhZy4KLSAgUGF0Y2ggYnkgRXJubyBUdWtpYS4KLQotLSBJc3N1ZSAjMTMzMDQ6IFNraXAgdGVzdCBjYXNlIGlmIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXNhYmxlZCAoLXMgb3IKLSAgUFlUSE9OTk9VU0VSU0lURSkuICAoUGF0Y2ggYnkgQ2FybCBNZXllcikKLQotLSBJc3N1ZSAjMTMyMTg6IEZpeCB0ZXN0X3NzbCBmYWlsdXJlcyBvbiBEZWJpYW4vVWJ1bnR1LgotCi0tIElzc3VlICMxMjgyMTogRml4IHRlc3RfZmNudGwgZmFpbHVyZXMgb24gT3BlbkJTRCA1LgotCi0tIFJlLWVuYWJsZSBsaWIydG8zJ3MgdGVzdF9wYXJzZXIucHkgdGVzdHMsIHRob3VnaCB3aXRoIGFuIGV4cGVjdGVkIGZhaWx1cmUKLSAgKHNlZSBpc3N1ZSAxMzEyNSkuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCi0gIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjOTk3NTogc29ja2V0OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBmbG93aW5mbyBhbmQgc2NvcGVfaWQuIFBhdGNoIGJ5Ci0gIFZpbG1vcyBOZWJlaGFqLgotCi0tIElzc3VlICMxMzE1OTogRmlsZUlPIGFuZCBCWjJGaWxlIG5vdyB1c2UgYSBsaW5lYXItdGltZSBidWZmZXIgZ3Jvd3RoCi0gIHN0cmF0ZWd5IGluc3RlYWQgb2YgYSBxdWFkcmF0aWMtdGltZSBvbmUuCi0KLS0gSXNzdWUgIzEzMDcwOiBGaXggYSBjcmFzaCB3aGVuIGEgVGV4dElPV3JhcHBlciBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUKLSAgd291bGQgYmUgZmluYWxpemVkIGFmdGVyIHRoZSByZWZlcmVuY2UgdG8gaXRzIHVuZGVybHlpbmcgQnVmZmVyZWRSV1BhaXIncwotICB3cml0ZXIgZ290IGNsZWFyZWQgYnkgdGhlIEdDLgotCi0tIElzc3VlICMxMjg4MTogY3R5cGVzOiBGaXggc2VnZmF1bHQgd2l0aCBsYXJnZSBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMuCi0KLS0gSXNzdWUgIzEzMDU4OiBvc3NhdWRpb2RldjogZml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgb24gZXJyb3IuIFBhdGNoIGJ5Ci0gIFRob21hcyBKYXJvc2NoLgotCi0tIElzc3VlICMxMzAxMzogY3R5cGVzOiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiBQeUNBcnJheVR5cGVfZnJvbV9jdHlwZS4KLSAgVGhhbmtzIHRvIFN1bWFuIFNhaGEgZm9yIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcHJvdmlkaW5nIGEgcGF0Y2guCi0KLS0gSXNzdWUgIzEzMDIyOiBGaXg6IF9tdWx0aXByb2Nlc3NpbmcucmVjdmZkKCkgZG9lc24ndCBjaGVjayB0aGF0Ci0gIGZpbGUgZGVzY3JpcHRvciB3YXMgYWN0dWFsbHkgcmVjZWl2ZWQuCi0KLS0gSXNzdWUgIzEyNDgzOiBjdHlwZXM6IEZpeCBhIGNyYXNoIHdoZW4gdGhlIGRlc3RydWN0aW9uIG9mIGEgY2FsbGJhY2sKLSAgb2JqZWN0IHRyaWdnZXJzIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KLQotLSBJc3N1ZSAjMTI5NTA6IEZpeCBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvcnMgaW4gbXVsdGlwcm9jZXNzaW5nLCB1bmRlcgotICBPcGVuSW5kaWFuYS9JbGx1bW9zLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgotICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCi0KLS0gSXNzdWUgIzEzNDAyOiBEb2N1bWVudCBhYnNvbHV0ZW5lc3Mgb2Ygc3lzLmV4ZWN1dGFibGUuCi0KLS0gSXNzdWUgIzEzODgzOiBQWVRIT05DQVNFT0sgYWxzbyB1c2VkIG9uIE9TIFggYW5kIE9TLzIuCi0KLS0gSXNzdWUgIzEyOTQ5OiBEb2N1bWVudCB0aGUga3dvbmx5YXJnY291bnQgYXJndW1lbnQgZm9yIHRoZSBQeUNvZGVfTmV3Ci0gIEMgQVBJIGZ1bmN0aW9uLgotCi0tIElzc3VlICMyMTM0OiBUaGUgdG9rZW5pemUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBjbGFyaWZpZWQgdG8gZXhwbGFpbiB3aHkKLSAgYWxsIG9wZXJhdG9yIGFuZCBkZWxpbWl0ZXIgdG9rZW5zIGFyZSB0cmVhdGVkIGFzIHRva2VuLk9QIHRva2Vucy4KLQotLSBJc3N1ZSAjMTM1MTM6IEZpeCBpby5JT0Jhc2UgZG9jdW1lbnRhdGlvbiB0byBjb3JyZWN0bHkgbGluayB0byB0aGUKLSAgaW8uSU9CYXNlLnJlYWRsaW5lIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMjM3OiBSZW9yZ2FuaXNlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbiB0byBlbXBoYXNpc2UgY29udmVuaWVuY2UKLSAgZnVuY3Rpb25zIGFuZCB0aGUgbW9zdCBjb21tb25seSBuZWVkZWQgYXJndW1lbnRzIHRvIFBvcGVuLgotCi0tIElzc3VlICMxMzE0MTogRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIHNvY2tldHNlcnZlciBleGFtcGxlcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMy1TZXAtMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMzI2OiBzeXMucGxhdGZvcm0gaXMgbm93IGFsd2F5cyAnbGludXgyJyBvbiBMaW51eCwgZXZlbiBpZiBQeXRob24KLSAgaXMgY29tcGlsZWQgb24gTGludXggMy4KLQotLSBBY2NlcHQgYnl0ZXMgZm9yIHRoZSBBU1Qgc3RyaW5nIHR5cGUuIFRoaXMgaXMgdGVtcG9yYXJ5IHVudGlsIGEgcHJvcGVyIGZpeCBpbgotICAzLjMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjODI4NjogVGhlIGRpc3R1dGlscyBjb21tYW5kIHNkaXN0IHdpbGwgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgaW5zdGVhZAotICBvZiBjcmFzaGluZyB3aGVuIGFuIGludmFsaWQgcGF0aCBpcyBnaXZlbiBpbiB0aGUgbWFuaWZlc3QgdGVtcGxhdGUuCi0KLS0gSXNzdWUgIzEyODQxOiB0YXJmaWxlIHVubmVjZXNzYXJpbHkgY2hlY2tlZCB0aGUgZXhpc3RlbmNlIG9mIG51bWVyaWNhbCB1c2VyCi0gIGFuZCBncm91cCBpZHMgb24gZXh0cmFjdGlvbi4gSWYgb25lIG9mIHRoZW0gZGlkIG5vdCBleGlzdCB0aGUgcmVzcGVjdGl2ZSBpZAotICBvZiB0aGUgY3VycmVudCB1c2VyIChpLmUuIHJvb3QpIHdhcyB1c2VkIGZvciB0aGUgZmlsZSBhbmQgb3duZXJzaGlwCi0gIGluZm9ybWF0aW9uIHdhcyBsb3N0LgotCi0tIElzc3VlICMxMDk0NjogVGhlIGRpc3R1dGlscyBjb21tYW5kcyBiZGlzdF9kdW1iLCBiZGlzdF93aW5pbnN0IGFuZCBiZGlzdF9tc2kKLSAgbm93IHJlc3BlY3QgYSAtLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LgotCi0tIElzc3VlICMxMjgzOTogRml4IGNyYXNoIGluIHpsaWIgbW9kdWxlIGR1ZSB0byB2ZXJzaW9uIG1pc21hdGNoLgotICBGaXggYnkgUmljaGFyZCBNLiBUZXcuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5NjUxOiBGaXggYSBjcmFzaCB3aGVuIGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcigwKSB3YXMgcGFzc2VkIHRvCi0gIHNvbWUgZnVuY3Rpb25zIGxpa2UgZmlsZS53cml0ZSgpLgotCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjIgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE0LUF1Zy0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTI3MzI6IEluIG5hcnJvdyB1bmljb2RlIGJ1aWxkcywgYWxsb3cgVW5pY29kZSBpZGVudGlmaWVycyB3aGljaCBmYWxsCi0gIG91dHNpZGUgdGhlIEJNUC4KLQotLSBJc3N1ZSAjMTE2MDM6IEZpeCBhIGNyYXNoIHdoZW4gX19zdHJfXyBpcyByZWJvdW5kIGFzIF9fcmVwcl9fLiAgUGF0Y2ggYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMTMyMTogRml4IGEgY3Jhc2ggd2l0aCBtdWx0aXBsZSBpbXBvcnRzIG9mIHRoZSBfcGlja2xlIG1vZHVsZSB3aGVuCi0gIGVtYmVkZGluZyBQeXRob24uICBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gVmVyaWZ5IHRoZSB0eXBlcyBvZiBBU1Qgc3RyaW5ncyBhbmQgaWRlbnRpZmllcnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgYmVmb3JlCi0gIGNvbXBpbGluZyB0aGVtLgotCi0tIElzc3VlICMxMjU3OTogc3RyLmZvcm1hdF9tYXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB1c2VkIG9uIGEKLSAgZm9ybWF0IHN0cmluZyB0aGF0IGNvbnRhaW5zIHBvc2l0aW9uYWwgZmllbGRzLiBJbml0aWFsIHBhdGNoIGJ5Ci0gIEp1bGlhbiBCZXJtYW4uCi0KLS0gSXNzdWUgIzExNjI3OiBGaXggc2VnZmF1bHQgd2hlbiBfX25ld19fIG9uIGEgZXhjZXB0aW9uIHJldHVybnMgYQotICBub24tZXhjZXB0aW9uIGNsYXNzLgotCi0tIElzc3VlICMxMjE0OTogVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbmFyeSBnZXRzCi0gIGNsZWFyZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgVGhpcyBmaXhlcyBhIHNlZ2ZhdWx0IHdoZW4gYW4gaW5zdGFuY2UKLSAgYW5kIGl0cyB0eXBlIGdldCBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUsIGFuZCB0aGUgaW5zdGFuY2UncwotICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZwotICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCi0KLS0gV2hlbiBhIGdlbmVyYXRvciB5aWVsZHMsIGRvIG5vdCByZXRhaW4gdGhlIGNhbGxlcidzIGV4Y2VwdGlvbiBzdGF0ZSBvbiB0aGUKLSAgZ2VuZXJhdG9yLgotCi0tIElzc3VlICMxMjQ3NTogUHJldmVudCBnZW5lcmF0b3JzIGZyb20gbGVha2luZyB0aGVpciBleGNlcHRpb24gc3RhdGUgaW50byB0aGUKLSAgY2FsbGVyJ3MgZnJhbWUgYXMgdGhleSByZXR1cm4gZm9yIHRoZSBsYXN0IHRpbWUuCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzEyNjQ2OiBBZGQgYW4gJ2VvZicgYXR0cmlidXRlIHRvIHpsaWIuRGVjb21wcmVzcywgdG8gbWFrZSBpdCBlYXNpZXIgdG8KKyAgZGV0ZWN0IHRydW5jYXRlZCBpbnB1dCBzdHJlYW1zLgogCiAtIElzc3VlICMxMTUxMzogRml4IGV4Y2VwdGlvbiBoYW5kbGluZyBgYHRhcmZpbGUuVGFyRmlsZS5nem9wZW4oKWBgIHdoZW4KICAgdGhlIGZpbGUgY2Fubm90IGJlIG9wZW5lZC4KQEAgLTEzOTAsMTggKzMwNjYsNDMgQEAKIC0gSXNzdWUgIzEyNTQwOiBQcmV2ZW50IHpvbWJpZSBJRExFIHByb2Nlc3NlcyBvbiBXaW5kb3dzIGR1ZSB0byBjaGFuZ2VzCiAgIGluIG9zLmtpbGwoKS4KIAorLSBJc3N1ZSAjMTMxMjE6IGFkZCBzdXBwb3J0IGZvciBpbnBsYWNlIG1hdGggb3BlcmF0b3JzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCisKKy0gQWRkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMgYW5kIHVuYXJ5IG1pbnVzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCisKIC0gSXNzdWUgIzEyNjgzOiB1cmxwYXJzZSB1cGRhdGVkIHRvIGluY2x1ZGUgc3ZuIGFzIHNjaGVtZXMgdGhhdCB1c2VzIHJlbGF0aXZlCiAgIHBhdGhzLiAoc3ZuIGZyb20gMS41IG9ud2FyZHMgc3VwcG9ydCByZWxhdGl2ZSBwYXRoKS4KIAorLSBJc3N1ZSAjMTI2NTU6IEV4cG9zZSBmdW5jdGlvbnMgZnJvbSBzY2hlZC5oIGluIHRoZSBvcyBtb2R1bGU6IHNjaGVkX3lpZWxkKCksCisgIHNjaGVkX3NldHNjaGVkdWxlcigpLCBzY2hlZF9nZXRzY2hlZHVsZXIoKSwgc2NoZWRfc2V0cGFyYW0oKSwKKyAgc2NoZWRfZ2V0X21pbl9wcmlvcml0eSgpLCBzY2hlZF9nZXRfbWF4X3ByaW9yaXR5KCksIHNjaGVkX3JyX2dldF9pbnRlcnZhbCgpLAorICBzY2hlZF9nZXRhZmZpbml0eSgpLCBzY2hlZF9zZXRhZmZpbml0eSgpLgorCistIEFkZCBUaHJlYWRFcnJvciB0byB0aHJlYWRpbmcuX19hbGxfXy4KKwogLSBJc3N1ZXMgIzExMTA0LCAjODY4ODogRml4IHRoZSBiZWhhdmlvciBvZiBkaXN0dXRpbHMnIHNkaXN0IGNvbW1hbmQgd2l0aAogICBtYW51YWxseS1tYWludGFpbmVkIE1BTklGRVNUIGZpbGVzLgogCistIElzc3VlICMxMTI4MTogc210cGxpYi5TVE1QIGdldHMgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyLCB3aGljaCBhZGRzIHRoZQorICBhYmlsaXR5IHRvIGJpbmQgdG8gc3BlY2lmaWMgc291cmNlIGFkZHJlc3Mgb24gYSBtYWNoaW5lIHdpdGggbXVsdGlwbGUKKyAgaW50ZXJmYWNlcy4gUGF0Y2ggYnkgUGF1bG8gU2NhcmRpbmUuCisKIC0gSXNzdWUgIzEyNDY0OiB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkuY2xlYW51cCgpIHNob3VsZCBub3QgZm9sbG93CiAgIHN5bWxpbmtzOiBmaXggaXQuIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgogCiAtIElzc3VlICM4ODg3OiAicHlkb2Mgc29tZWJ1aWx0aW4uc29tZW1ldGhvZCIgKG9yIGhlbHAoJ3NvbWVidWlsdGluLnNvbWVtZXRob2QnKQogICBpbiBQeXRob24gY29kZSkgbm93IGZpbmRzIHRoZSBkb2Mgb2YgdGhlIG1ldGhvZC4KIAorLSBJc3N1ZSAjMTA5Njg6IFJlbW92ZSBpbmRpcmVjdGlvbiBpbiB0aHJlYWRpbmcuICBUaGUgcHVibGljIG5hbWVzIChFdmVudCwKKyAgQ29uZGl0aW9uLCBldGMuKSB1c2VkIHRvIGJlIGZhY3RvcnkgZnVuY3Rpb25zIHJldHVybmluZyBpbnN0YW5jZXMgb2YgaGlkZGVuCisgIGNsYXNzZXMgKF9FdmVudCwgX0NvbmRpdGlvbiwgZXRjLiksIGJlY2F1c2UgKGlmIEd1aWRvIHJlY2FsbHMgY29ycmVjdGx5KSB0aGlzCisgIGNvZGUgcHJlLWRhdGVzIHRoZSBhYmlsaXR5IHRvIHN1YmNsYXNzIGV4dGVuc2lvbiB0eXBlcy4gIEl0IGlzIG5vdyBwb3NzaWJsZQorICB0byBpbmhlcml0IGZyb20gdGhlc2UgY2xhc3Nlcywgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZSBwcml2YXRlCisgIHVuZGVyc2NvcmVkIG5hbWVzIGxpa2UgbXVsdGlwcm9jZXNzaW5nIGRpZC4KKworLSBJc3N1ZSAjOTcyMzogQWRkIHNobGV4LnF1b3RlIGZ1bmN0aW9ucywgdG8gZXNjYXBlIGZpbGVuYW1lcyBhbmQgY29tbWFuZAorICBsaW5lcy4KKwogLSBJc3N1ZSAjMTI2MDM6IEZpeCBweWRvYy5zeW5vcHNpcygpIG9uIGZpbGVzIHdpdGggbm9uLW5lZ2F0aXZlIHN0X210aW1lLgogCiAtIElzc3VlICMxMjUxNDogVXNlIHRyeS9maW5hbGx5IHRvIGFzc3VyZSB0aGUgdGltZWl0IG1vZHVsZSByZXN0b3JlcyBnYXJiYWdlCkBAIC0xNDE2LDE5ICszMTE3LDM1IEBACiAtIElzc3VlICMxMjU3NjogRml4IHVybG9wZW4gYmVoYXZpb3Igb24gc2l0ZXMgd2hpY2ggZG8gbm90IHNlbmQgKG9yIG9iZnVzY2F0ZXMpCiAgIENvbm5lY3Rpb246Y2xvc2UgaGVhZGVyLgogCistIElzc3VlICMxMjEwMjogRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQKKyAgd2l0aCBtbWFwLiBQYXRjaCBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorCistIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KKwogLSBJc3N1ZSAjMTgxMzogRml4IGNvZGVjIGxvb2t1cCB1bmRlciBUdXJraXNoIGxvY2FsZXMuCiAKIC0gSXNzdWUgIzEyNTkxOiBJbXByb3ZlIHN1cHBvcnQgb2YgInVuaXZlcnNhbCBuZXdsaW5lcyIgaW4gdGhlIHN1YnByb2Nlc3MKICAgbW9kdWxlOiB0aGUgcGlwZWQgc3RyZWFtcyBjYW4gbm93IGJlIHByb3Blcmx5IHJlYWQgZnJvbSBvciB3cml0dGVuIHRvLgogCiAtIElzc3VlICMxMjU5MTogQWxsb3cgaW8uVGV4dElPV3JhcHBlciB0byB3b3JrIHdpdGggcmF3IElPIG9iamVjdHMgKHdpdGhvdXQKLSAgYSByZWFkMSgpIG1ldGhvZCksIGFuZCBhZGQgYW4gdW5kb2N1bWVudGVkICp3cml0ZV90aHJvdWdoKiBwYXJhbWV0ZXIgdG8KLSAgbWFuZGF0ZSB1bmJ1ZmZlcmVkIHdyaXRlcy4KLQotLSBJc3N1ZSAjOTYxMSwgIzkwMTU6IEZpbGVJTy5yZWFkKCkgY2xhbXBzIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgorICBhIHJlYWQxKCkgbWV0aG9kKSwgYW5kIGFkZCBhICp3cml0ZV90aHJvdWdoKiBwYXJhbWV0ZXIgdG8gbWFuZGF0ZQorICB1bmJ1ZmZlcmVkIHdyaXRlcy4KIAogLSBJc3N1ZSAjMTA4ODM6IEZpeCBzb2NrZXQgbGVha3MgaW4gdXJsbGliLnJlcXVlc3Qgd2hlbiB1c2luZyBGVFAuCiAKKy0gSXNzdWUgIzEyNTkyOiBNYWtlIFB5dGhvbiBidWlsZCBvbiBPcGVuQlNEIDUgKGFuZCBmdXR1cmUgbWFqb3IgcmVsZWFzZXMpLgorCistIElzc3VlICMxMjM3MjogUE9TSVggc2VtYXBob3JlcyBhcmUgYnJva2VuIG9uIEFJWDogZG9uJ3QgdXNlIHRoZW0uCisKKy0gSXNzdWUgIzEyNTUxOiBQcm92aWRlIGEgZ2V0X2NoYW5uZWxfYmluZGluZygpIG1ldGhvZCBvbiBTU0wgc29ja2V0cyBzbyBhcworICB0byBnZXQgY2hhbm5lbCBiaW5kaW5nIGRhdGEgZm9yIHRoZSBjdXJyZW50IFNTTCBzZXNzaW9uIChvbmx5IHRoZQorICAidGxzLXVuaXF1ZSIgY2hhbm5lbCBiaW5kaW5nIGlzIGltcGxlbWVudGVkKS4gIFRoaXMgYWxsb3dzIHRoZSBpbXBsZW1lbnRhdGlvbgorICBvZiBjZXJ0YWluIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgc3VjaCBhcyBTQ1JBTS1TSEEtMS1QTFVTLiAgUGF0Y2ggYnkKKyAgSmFjZWsgS29uaWVjem55LgorCistIElzc3VlICM2NjUxOTQ6IGVtYWlsLnV0aWxzIG5vdyBoYXMgZm9ybWF0X2RhdGV0aW1lIGFuZCBwYXJzZWRhdGVfdG9fZGF0ZXRpbWUKKyAgZnVuY3Rpb25zLCBhbGxvd2luZyBmb3Igcm91bmQgdHJpcHBpbmcgb2YgUkZDMjgyMiBmb3JtYXQgZGF0ZXMuCisKIC0gSXNzdWUgIzEyNTcxOiBBZGQgYSBwbGF0LWxpbnV4MyBkaXJlY3RvcnkgbWlycm9yaW5nIHRoZSBwbGF0LWxpbnV4MgogICBkaXJlY3RvcnksIHNvIHRoYXQgImltcG9ydCBETEZDTiIgYW5kIG90aGVyIHNpbWlsYXIgaW1wb3J0cyB3b3JrIG9uCiAgIExpbnV4IDMuMC4KQEAgLTE0MzYsMTg0ICszMTUzLDkxIEBACiAtIElzc3VlICM3NDg0OiBzbXRwbGliIG5vIGxvbmdlciBwdXRzIDw+IGFyb3VuZCBhZGRyZXNzZXMgaW4gVlJGWSBhbmQgRVhQTgogICBjb21tYW5kczsgdGhleSBhcmVuJ3QgcmVxdWlyZWQgYW5kIGluIGZhY3QgcG9zdGZpeCBkb2Vzbid0IHN1cHBvcnQgdGhhdCBmb3JtLgogCi0tIENsb3NlIHRoZSBjYWxsIHF1ZXVlIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yIHdoZW4KLSAgc2h1dGRvd24oKSBpcyBjYWxsZWQsIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHRvIGtpY2sgaW4uCistIElzc3VlICMxMjI3MzogUmVtb3ZlIGFzdC5fX3ZlcnNpb25fXy4gQVNUIGNoYW5nZXMgY2FuIGJlIGFjY291bnRlZCBmb3IgYnkKKyAgY2hlY2tpbmcgc3lzLnZlcnNpb25faW5mbyBvciBzeXMuX21lcmN1cmlhbC4KKworLSBTaWxlbmNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIgdHJhY2ViYWNrcyB3aGVuIHNodXR0aW5nIGRvd24gYQorICBQcm9jZXNzUG9vbEV4ZWN1dG9yLgorCistIEZpeCBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IKKyAgYnkgam9pbmluZyBhbGwgcXVldWVzIGFuZCBwcm9jZXNzZXMgd2hlbiBzaHV0ZG93bigpIGlzIGNhbGxlZC4KKworLSBJc3N1ZSAjMTE2MDM6IEZpeCBhIGNyYXNoIHdoZW4gX19zdHJfXyBpcyByZWJvdW5kIGFzIF9fcmVwcl9fLiAgUGF0Y2ggYnkKKyAgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICMxMTMyMTogRml4IGEgY3Jhc2ggd2l0aCBtdWx0aXBsZSBpbXBvcnRzIG9mIHRoZSBfcGlja2xlIG1vZHVsZSB3aGVuCisgIGVtYmVkZGluZyBQeXRob24uICBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzY3NTU6IEFkZCBnZXRfd2NoKCkgbWV0aG9kIHRvIGN1cnNlcy53aW5kb3cgY2xhc3MuIFBhdGNoIGJ5IEnDsWlnbworICBTZXJuYS4KKworLSBBZGQgY2dpLmNsb3NlbG9nKCkgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIGxvZyBmaWxlLgogCiAtIElzc3VlICMxMjUwMjogYXN5bmNvcmU6IGZpeCBwb2xsaW5nIGxvb3Agd2l0aCBBRl9VTklYIHNvY2tldHMuCiAKLS0gSXNzdWUgIzQzNzY6IGN0eXBlcyBub3cgc3VwcG9ydHMgbmVzdGVkIHN0cnVjdHVyZXMgd2l0aCBhbiBlbmRpYW5uZXNzCi0gIGRpZmZlcmVudCB0aGFuIHRoYXQgb2YgdGhlIHBhcmVudCBzdHJ1Y3R1cmUuICBQYXRjaCBieSBWbGFkIFJpc2N1dGlhLgorLSBJc3N1ZSAjNDM3NjogY3R5cGVzIG5vdyBzdXBwb3J0cyBuZXN0ZWQgc3RydWN0dXJlcyBpbiBhIGVuZGlhbiBkaWZmZXJlbnQgdGhhbgorICB0aGUgcGFyZW50IHN0cnVjdHVyZS4gUGF0Y2ggYnkgVmxhZCBSaXNjdXRpYS4KIAogLSBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlIF9DSFVOS19TSVpFIGF0dHJpYnV0ZSBvZiBhCiAgIFRleHRJT1dyYXBwZXIgdG8gYSBodWdlIHZhbHVlLCBub3QgVHlwZUVycm9yLgogCi0tIElzc3VlICMxMjQ5Mzogc3VicHJvY2VzczogUG9wZW4uY29tbXVuaWNhdGUoKSBub3cgYWxzbyBoYW5kbGVzIEVJTlRSIGVycm9ycwotICBpZiB0aGUgcHJvY2VzcyBoYXMgb25seSBvbmUgcGlwZS4KKy0gSXNzdWUgIzEyNTA0OiBDbG9zZSBmaWxlIGhhbmRsZXMgaW4gYSB0aW1lbHkgbWFubmVyIGluIHBhY2thZ2luZy5kYXRhYmFzZS4KKyAgVGhpcyBmaXhlcyBhIGJ1ZyB3aXRoIHRoZSByZW1vdmUgKHVuaW5zdGFsbCkgZmVhdHVyZSBvbiBXaW5kb3dzLgorCistIElzc3VlcyAjMTIxNjkgYW5kICMxMDUxMDogRmFjdG9yIG91dCBjb2RlIHVzZWQgYnkgdmFyaW91cyBwYWNrYWdpbmcgY29tbWFuZHMKKyAgdG8gbWFrZSBIVFRQIFBPU1QgcmVxdWVzdHMsIGFuZCBtYWtlIHN1cmUgaXQgdXNlcyBDUkxGLgorCistIElzc3VlICMxMjAxNjogTXVsdGlieXRlIENKSyBkZWNvZGVycyBub3cgcmVzeW5jaHJvbml6ZSBmYXN0ZXIuIFRoZXkgb25seQorICBpZ25vcmUgdGhlIGZpcnN0IGJ5dGUgb2YgYW4gaW52YWxpZCBieXRlIHNlcXVlbmNlLiBGb3IgZXhhbXBsZSwKKyAgYidceGZmXG4nLmRlY29kZSgnZ2IyMzEyJywgJ3JlcGxhY2UnKSBnaXZlcyAnXHVmZmZkXG4nIGluc3RlYWQgb2YgJ1x1ZmZmZCcuCisKKy0gSXNzdWUgIzEyNDU5OiB0aW1lLnNsZWVwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdGhlIHNsZWVwIGxlbmd0aCBpcworICBuZWdhdGl2ZSwgaW5zdGVhZCBvZiBhbiBpbmZpbml0ZSBzbGVlcCBvbiBXaW5kb3dzIG9yIHJhaXNpbmcgYW4gSU9FcnJvciBvbgorICBMaW51eCBmb3IgZXhhbXBsZSwgdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgb24gYWxsIHBsYXRmb3Jtcy4KIAogLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBodG1sX2dldGZpbGUoKSBub3cgdXNlcyB0b2tlbml6ZS5vcGVuKCkgdG8gc3VwcG9ydAotICBQeXRob24gbW9kdWxlcyB1c2luZyBhIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIFVURi04IChyZWFkaW5nIHRoZSBjb2RpbmcKLSAgY29va2llIG9mIHRoZSBtb2R1bGUpLgorICBQeXRob24gc2NyaXB0cyB1c2luZyBhIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIFVURi04IChyZWFkIHRoZSBjb2RpbmcgY29va2llCisgIG9mIHRoZSBzY3JpcHQpLgogCi0tIElzc3VlICMxMjQ1MTogcHlkb2M6IGltcG9ydGZpbGUoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBtb2R1bGUgaW4gYmluYXJ5IG1vZGUsCi0gIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTI0NTE6IHJ1bnB5OiBydW5fcGF0aCgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIG1vZHVsZSBpbiBiaW5hcnkgbW9kZSwKLSAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gc3VwcG9ydCBvdGhlciBlbmNvZGluZ3MKLSAgdGhhbiBVVEYtOCAobW9kdWxlcyB1c2luZyB0aGUgY29kaW5nIGNvb2tpZSkuCi0KLS0gSXNzdWUgIzEyNDUxOiB4bWwuZG9tLnB1bGxkb206IHBhcnNlKCkgbm93IG9wZW5zIGZpbGVzIGluIGJpbmFyeSBtb2RlIGluc3RlYWQKLSAgb2YgdGhlIHRleHQgbW9kZSAodXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZykgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxNDQ0MzogRW5zdXJlIHRoYXQgLnB5IGZpbGVzIGFyZSBieXRlLWNvbXBpbGVkIHdpdGggdGhlIGNvcnJlY3QgUHl0aG9uCi0gIGV4ZWN1dGFibGUgd2l0aGluIGJkaXN0X3JwbSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIFJQTQotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTI3NjQ6IEZpeCBhIGNyYXNoIGluIGN0eXBlcyB3aGVuIHRoZSBuYW1lIG9mIGEgU3RydWN0dXJlIGZpZWxkIGlzIG5vdAotICBhIHN0cmluZy4KLQotLSBJc3N1ZSAjMTEyNDE6IHN1YmNsYXNzZXMgb2YgY3R5cGVzLkFycmF5IGNhbiBub3cgYmUgc3ViY2xhc3NlZC4KLQotLSBJc3N1ZSAjMTAzMDk6IERlZmluZSBfR05VX1NPVVJDRSBzbyB0aGF0IG1yZW1hcCgpIGdldHMgdGhlIHByb3BlcgotICBzaWduYXR1cmUuICBXaXRob3V0IHRoaXMsIGFyY2hpdGVjdHVyZXMgd2hlcmUgc2l6ZW9mIHZvaWQqICE9IHNpemVvZiBpbnQgYXJlCi0gIGJyb2tlbi4gIFBhdGNoIGdpdmVuIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCi0KLUMtQVBJCi0tLS0tLQotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiAgUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgotCi0tIElzc3VlICMxMjU5MjogTWFrZSBQeXRob24gYnVpbGQgb24gT3BlbkJTRCA1IChhbmQgZnV0dXJlIG1ham9yIHJlbGVhc2VzKS4KLQotLSBJc3N1ZSAjMTIzNzI6IFBPU0lYIHNlbWFwaG9yZXMgYXJlIGJyb2tlbiBvbiBBSVg6IGRvbid0IHVzZSB0aGVtLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA2Mzk6IHJlaW5kZW50LnB5IG5vIGxvbmdlciBjb252ZXJ0cyBuZXdsaW5lcyBhbmQgd2lsbCByYWlzZQotICBhbiBlcnJvciBpZiBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgYSBmaWxlIHdpdGggbWl4ZWQgbmV3bGluZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKLSAgUHl0aG9uLgotCi0tIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCi0gIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcwotICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCi0gIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCi0gIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCi0gIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcwotICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KLSAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQotCi0tIFRyeSBoYXJkZXIgdG8gcmVhcCBkYW5nbGluZyB0aHJlYWRzIGluIHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMoKS4KLQotLSBJc3N1ZSAjMTI1NzM6IEFkZCByZXNvdXJjZSBjaGVja3MgZm9yIGRhbmdsaW5nIFRocmVhZCBhbmQgUHJvY2VzcyBvYmplY3RzLgotCi0tIElzc3VlICMxMjU0OTogQ29ycmVjdCB0ZXN0X3BsYXRmb3JtIHRvIG5vdCBmYWlsIHdoZW4gT1MgWCByZXR1cm5zICd4ODZfNjQnCi0gIGFzIHRoZSBwcm9jZXNzb3IgdHlwZSBvbiBzb21lIE1hYyBzeXN0ZW1zLgotCi0tIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF9yb2JvdHBhcnNlciB3aGVuIG11ZWJsZXNtb3JhbGVkYS5jb20gaXMgZmxha3kgYW5kCi0gIGFuIG92ZXJ6ZWFsb3VzIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlZGlyZWN0cyB0byBhIHBsYWNlaG9sZGVyCi0gIFdlYiBzaXRlLgotCi0tIElzc3VlICMxMjQ0MDogV2hlbiB0ZXN0aW5nIHdoZXRoZXIgc29tZSBiaXRzIGluIFNTTENvbnRleHQub3B0aW9ucyBjYW4gYmUKLSAgcmVzZXQsIGNoZWNrIHRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGhlYWRlcnMgUHl0aG9uIHdhcyBjb21waWxlZCBhZ2FpbnN0LAotICByYXRoZXIgdGhhbiB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzEyNDk3OiBJbnN0YWxsIHRlc3QvZGF0YSB0byBwcmV2ZW50IGZhaWx1cmVzIG9mIHRoZSB2YXJpb3VzIGNvZGVjbWFwcwotICB0ZXN0cy4KLQotLSBJc3N1ZSAjMTI0OTY6IEluc3RhbGwgdGVzdC9jYXBhdGggZGlyZWN0b3J5IHRvIHByZXZlbnQgdGVzdF9jb25uZWN0X2NhcGF0aAotICB0ZXN0Y2FzZSBmYWlsdXJlIGluIHRlc3Rfc3NsLgotCi0tIElzc3VlICMxMjQ2OTogUnVuICJ3YWtldXAiIHNpZ25hbCB0ZXN0cyBpbiBzdWJwcm9jZXNzIHRvIHJ1biB0aGUgdGVzdCBpbiBhCi0gIGZyZXNoIHByb2Nlc3Mgd2l0aCBvbmx5IG9uZSB0aHJlYWQgYW5kIHRvIG5vdCBjaGFuZ2Ugc2lnbmFsIGhhbmRsaW5nIG9mIHRoZQotICBwYXJlbnQgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjODcxNjogQXZvaWQgY3Jhc2hlcyBjYXVzZWQgYnkgQXF1YSBUayBvbiBPU1ggd2hlbiBhdHRlbXB0aW5nIHRvIHJ1bgotICB0ZXN0X3RrIG9yIHRlc3RfdHRrX2d1aW9ubHkgdW5kZXIgYSB1c2VybmFtZSB0aGF0IGlzIG5vdCBjdXJyZW50bHkgbG9nZ2VkCi0gIGluIHRvIHRoZSBjb25zb2xlIHdpbmRvd3NlcnZlciAoYXMgbWF5IGJlIHRoZSBjYXNlIHVuZGVyIGJ1aWxkYm90IG9yIHNzaCkuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTAtSnVsLTIwMTEqCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzEyNDkzOiBzdWJwcm9jZXNzOiBQb3Blbi5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGhhbmRsZXMgRUlOVFIgZXJyb3JzCisgIGlmIHRoZSBwcm9jZXNzIGhhcyBvbmx5IG9uZSBwaXBlLgogCiAtIElzc3VlICMxMjQ2Nzogd2FybmluZ3M6IGZpeCBhIHJhY2UgY29uZGl0aW9uIGlmIGEgd2FybmluZyBpcyBlbWl0dGVkIGF0CiAgIHNodXRkb3duLCBpZiBnbG9iYWxzKClbJ19fZmlsZV9fJ10gaXMgTm9uZS4KIAotVGVzdHMKLS0tLS0tCistIElzc3VlICMxMjQ1MTogcHlkb2M6IGltcG9ydGZpbGUoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCisgIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KIAotLSBTa2lwIG5ldHdvcmsgdGVzdHMgd2hlbiBnZXRhZGRyaW5mbygpIHJldHVybnMgRUFJX0FHQUlOLCBtZWFuaW5nIGEgdGVtcG9yYXJ5Ci0gIGZhaWx1cmUgaW4gbmFtZSByZXNvbHV0aW9uLgorLSBJc3N1ZSAjMTI0NTE6IHJ1bnB5OiBydW5fcGF0aCgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSwKKyAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gc3VwcG9ydCBvdGhlciBlbmNvZGluZ3MKKyAgdGhhbiBVVEYtOCAoc2NyaXB0cyB1c2luZyB0aGUgY29kaW5nIGNvb2tpZSkuCiAKLS0gSXNzdWUgIzExODEyOiBTb2x2ZSB0cmFuc2llbnQgc29ja2V0IGZhaWx1cmUgdG8gY29ubmVjdCB0byAnbG9jYWxob3N0JwotICBpbiB0ZXN0X3RlbG5ldGxpYi5weS4KLQotLSBTb2x2ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaW4gdGVzdF90ZWxuZXRsaWIucHkuIFJlbGF0ZWQgdG8gaXNzdWUgIzExODEyLgotCi0tIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF91cmxsaWJuZXQudGVzdF9iYWRfYWRkcmVzcyB3aGVuIHNvbWUgb3ZlcnplYWxvdXMKLSAgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVzb2x2ZXMgYSBub24tZXhpc3RlbnQgZG9tYWluIG5hbWUuICBUaGUgdGVzdAotICBpcyBub3cgc2tpcHBlZCBpbnN0ZWFkLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xIHJlbGVhc2UgY2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMy1KdWwtMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMjkxOiBZb3UgY2FuIG5vdyBsb2FkIG11bHRpcGxlIG1hcnNoYWxsZWQgb2JqZWN0cyBmcm9tIGEgc3RyZWFtLCB3aXRoCi0gIG90aGVyIGRhdGEgaW50ZXJsZWF2ZWQgYmV0d2VlbiBtYXJzaGFsbGVkIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyMDg0OiBvcy5zdGF0IG9uIFdpbmRvd3Mgbm93IHdvcmtzIHByb3Blcmx5IHdpdGggcmVsYXRpdmUgc3ltYm9saWMKLSAgbGlua3Mgd2hlbiBjYWxsZWQgZnJvbSBhbnkgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxMTk1OiBteV9mZ2V0cygpIG5vdyBhbHdheXMgY2xlYXJzIGVycm9ycyBiZWZvcmUgY2FsbGluZyBmZ2V0cygpLiBGaXgKLSAgdGhlIGZvbGxvd2luZyBjYXNlOiBzeXMuc3RkaW4ucmVhZCgpIHN0b3BwZWQgd2l0aCBDVFJMK2QgKGVuZCBvZiBmaWxlKSwKLSAgcmF3X2lucHV0KCkgaW50ZXJydXB0ZWQgYnkgQ1RSTCtjLgotCi0tIElzc3VlICM5NjcwOiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbiBNYWMgT1MgWAotICBhbmQgRnJlZUJTRCB0byByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSBjcmFzaCBpbnN0ZWFkIG9mIGEgIm1heGltdW0gcmVjdXJzaW9uCi0gIGRlcHRoIiBSdW50aW1lRXJyb3IgZXhjZXB0aW9uIChwYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxMjQ1MTogeG1sLmRvbS5wdWxsZG9tOiBwYXJzZSgpIG5vdyBvcGVucyBmaWxlcyBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkCisgIG9mIHRoZSB0ZXh0IG1vZGUgKHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcpIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KIAogLSBJc3N1ZSAjMTIxNDc6IEFkanVzdCB0aGUgbmV3LWluLTMuMiBzbXRwbGliLnNlbmRfbWVzc2FnZSBtZXRob2QgZm9yIGJldHRlcgotICBjb25mb3JtYW5jZSB0byB0aGUgUkZDczogY29ycmVjdGx5IGhhbmRsZSBTZW5kZXIgYW5kIFJlc2VudCBoZWFkZXJzLgorICBjb25mb3JtYW5jZSB0byB0aGUgUkZDczogIGNvcnJlY3RseSBoYW5kbGUgU2VuZGVyIGFuZCBSZXNlbnQtIGhlYWRlcnMuCiAKIC0gSXNzdWUgIzEyMzUyOiBGaXggYSBkZWFkbG9jayBpbiBtdWx0aXByb2Nlc3NpbmcuSGVhcCB3aGVuIGEgYmxvY2sgaXMgZnJlZWQgYnkKICAgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHdoaWxlIHRoZSBIZWFwIGxvY2sgaXMgaGVsZC4KIAorLSBJc3N1ZSAjMTI0NjI6IHRpbWUuc2xlZXAoKSBub3cgaW1tZWRpYXRlbHkgY2FsbHMgdGhlIChQeXRob24pIHNpZ25hbCBoYW5kbGVyCisgIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBpbnN0ZWFkIG9mIGhhdmluZyB0byB3YWl0IHVudGlsIHRoZSBuZXh0CisgIGluc3RydWN0aW9uLgorCistIElzc3VlICMxMjQ0MjogbmV3IHNodXRpbC5kaXNrX3VzYWdlIGZ1bmN0aW9uLCBwcm92aWRpbmcgdG90YWwsIHVzZWQgYW5kIGZyZWUKKyAgZGlzayBzcGFjZSBzdGF0aXN0aWNzLgorCiAtIElzc3VlICMxMjQ1MTogVGhlIFhJbmNsdWRlIGRlZmF1bHQgbG9hZGVyIG9mIHhtbC5ldHJlZSBub3cgZGVjb2RlcyBmaWxlcyBmcm9tCiAgIFVURi04IGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZyBpZiB0aGUgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gSXQgbm93Ci0gIGFsc28gb3BlbnMgWE1MIGZpbGVzIGZvciB0aGUgcGFyc2VyIGluIGJpbmFyeSBtb2RlIGluc3RlYWQgb2YgdGhlIHRleHQgbW9kZSB0bwotICBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBkb2N0ZXN0LmRlYnVnX3NjcmlwdCgpIGRvZXNuJ3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgYW55bW9yZQorICBhbHNvIG9wZW5zIFhNTCBmaWxlcyBmb3IgdGhlIHBhcnNlciBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkIG9mIHRoZSB0ZXh0IG1vZGUKICAgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgogCi0tIElzc3VlICMxMjQ1MTogcHlkb2Muc3lub3BzaXMoKSBub3cgcmVhZHMgdGhlIGVuY29kaW5nIGNvb2tpZSBpZiBhdmFpbGFibGUsIHRvCi0gIHJlYWQgdGhlIFB5dGhvbiBtb2R1bGUgZnJvbSB0aGUgcmlnaHQgZW5jb2RpbmcuCistIElzc3VlICMxMjQ1MTogZG9jdGVzdC5kZWJ1Z19zY3JpcHQoKSBkb2Vzbid0IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlCisgIGFueW1vcmUgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgorCistIElzc3VlICMxMjQ1MTogcHlkb2Muc3lub3BzaXMoKSBub3cgcmVhZHMgdGhlIGVuY29kaW5nIGNvb2tpZSBpZiBhdmFpbGFibGUsCisgIHRvIHJlYWQgdGhlIFB5dGhvbiBzY3JpcHQgZnJvbSB0aGUgcmlnaHQgZW5jb2RpbmcuCiAKIC0gSXNzdWUgIzEyNDUxOiBkaXN0dXRpbHMgbm93IG9wZW5zIHRoZSBzZXR1cCBzY3JpcHQgaW4gYmluYXJ5IG1vZGUgdG8gcmVhZCB0aGUKICAgZW5jb2RpbmcgY29va2llLCBpbnN0ZWFkIG9mIG9wZW5pbmcgaXQgaW4gVVRGLTguCkBAIC0xNjI3LDE0ICszMjUxLDMyIEBACiAgIHN0aWxsIHBvc3NpYmxlIHRvIGdsb2JhbGx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJ5IHNldHRpbmcKICAgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGJlZm9yZSBsYXVuY2hpbmcgdGhlIGludGVycHJldGVyOyBpdHMgdmFsdWUgbXVzdCBiZQogICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBkZWZhdWx0IHZhbHVlLCB0aGUgdmFsdWUgd2l0aCB3aGljaCB0aGUgaW50ZXJwcmV0ZXIKLSAgd2FzIGJ1aWx0LgorICB3YXMgYnVpbHQuICBBbHNvLCBpbXBsZW1lbnQgdGhlIHNhbWUgaGFuZGxpbmcgaW4gcGFja2FnaW5nLgorCistIElzc3VlICMxMjQyMjogSW4gdGhlIGNvcHkgbW9kdWxlLCBkb24ndCBzdG9yZSBvYmplY3RzIHRoYXQgYXJlIHRoZWlyIG93biBjb3B5CisgIGluIHRoZSBtZW1vIGRpY3QuCisKKy0gSXNzdWUgIzEyMzAzOiBBZGQgc2lnd2FpdGluZm8oKSBhbmQgc2lndGltZWR3YWl0KCkgdG8gdGhlIHNpZ25hbCBtb2R1bGUuCisKKy0gSXNzdWUgIzEyNDA0OiBSZW1vdmUgQzg5IGluY29tcGF0aWJsZSBjb2RlIGZyb20gbW1hcCBtb2R1bGUuIFBhdGNoIGJ5IEFraXJhCisgIEtpdGFkYS4KKworLSBJc3N1ZSAjMTg3NDogZW1haWwgbm93IGRldGVjdHMgYW5kIHJlcG9ydHMgYXMgYSBkZWZlY3QgdGhlIHByZXNlbmNlIG9mCisgIGFueSBDVEUgb3RoZXIgdGhhbiA3Yml0LCA4Yml0LCBvciBiaW5hcnkgb24gYSBtdWx0aXBhcnQuCiAKIC0gSXNzdWUgIzEyMzgzOiBGaXggc3VicHJvY2VzcyBtb2R1bGUgd2l0aCBlbnY9e306IGRvbid0IGNvcHkgdGhlIGVudmlyb25tZW50CiAgIHZhcmlhYmxlcywgc3RhcnQgd2l0aCBhbiBlbXB0eSBlbnZpcm9ubWVudC4KIAotLSBJc3N1ZSAjMTE1ODQ6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vIGxvbmdlciBmYWlscyBpZiB0aGUgaGVhZGVyIHBhc3NlZAotICB0byBpdCBpcyBhIEhlYWRlciBvYmplY3QsIGFuZCBIZWFkZXIvbWFrZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWwgaWYgZ2l2ZW4KLSAgYmluYXJ5IHVua25vd24tOGJpdCBpbnB1dC4KKy0gSXNzdWUgIzExNjM3OiBGaXggc3VwcG9ydCBmb3IgaW1wb3J0aW5nIHBhY2thZ2luZyBzZXR1cCBob29rcyBmcm9tIHRoZQorICBwcm9qZWN0IGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjNjc3MTogTW92ZWQgdGhlIGN1cnNlcy53cmFwcGVyIGZ1bmN0aW9uIGZyb20gdGhlIHNpbmdsZS1mdW5jdGlvbgorICB3cmFwcGVyIG1vZHVsZSBpbnRvIF9faW5pdF9fLCBlbGltaW5hdGluZyB0aGUgbW9kdWxlLiAgU2luY2UgX19pbml0X18gd2FzCisgIGFscmVhZHkgaW1wb3J0aW5nIHRoZSBmdW5jdGlvbiB0byBjdXJzZXMud3JhcHBlciwgdGhlcmUgaXMgbm8gQVBJIGNoYW5nZS4KKworLSBJc3N1ZSAjMTE1ODQ6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vIGxvbmdlciBmYWlscyBpZiB0aGUgaGVhZGVyCisgIHBhc3NlZCB0byBpdCBpcyBhIEhlYWRlciBvYmplY3QsIGFuZCBIZWFkZXIvbWFrZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWwKKyAgaWYgZ2l2ZW4gYmluYXJ5IHVua25vd24tOGJpdCBpbnB1dC4KIAogLSBJc3N1ZSAjMTE3MDA6IG1haWxib3ggcHJveHkgb2JqZWN0IGNsb3NlIG1ldGhvZHMgY2FuIG5vdyBiZSBjYWxsZWQgbXVsdGlwbGUKICAgdGltZXMgd2l0aG91dCBlcnJvci4KQEAgLTE2NDUsMzUgKzMyODcsMTA1IEBACiAgIGNvbm5lY3Rpb24gaWYgaXRzIGdldHJlc3BvbnNlKCkgbWV0aG9kIGZhaWxzIHdpdGggYSBzb2NrZXQgZXJyb3IuIFBhdGNoCiAgIHdyaXR0ZW4gYnkgRXppbyBNZWxvdHRpLgogCistIElzc3VlICMxMjI0MDogQWxsb3cgbXVsdGlwbGUgc2V0dXAgaG9va3MgaW4gcGFja2FnaW5nJ3Mgc2V0dXAuY2ZnIGZpbGVzLgorICBPcmlnaW5hbCBwYXRjaCBieSBFcmlrIEJyYXkuCisKIC0gSXNzdWUgIzkyODQ6IEFsbG93IGluc3BlY3QuZmluZHNvdXJjZSgpIHRvIGZpbmQgdGhlIHNvdXJjZSBvZiBkb2N0ZXN0CiAgIGZ1bmN0aW9ucy4KIAorLSBJc3N1ZSAjMTE1OTU6IEZpeCBhc3NvcnRlZCBidWdzIGluIHBhY2thZ2luZy51dGlsLmNmZ190b19hcmdzLCBhCisgIGNvbXBhdGliaWxpdHkgaGVscGVyIGZvciB0aGUgZGlzdHV0aWxzLXBhY2thZ2luZyB0cmFuc2l0aW9uLiAgT3JpZ2luYWwgcGF0Y2gKKyAgYnkgRXJpayBCcmF5LgorCistIElzc3VlICMxMjI4NzogSW4gb3NzYXVkaW9kZXYsIGNoZWNrIHRoYXQgdGhlIGRldmljZSBpc24ndCBjbG9zZWQgaW4gc2V2ZXJhbAorICBtZXRob2RzLgorCiAtIElzc3VlICMxMjAwOTogRml4ZWQgcmVncmVzc2lvbiBpbiBuZXRyYyBmaWxlIGNvbW1lbnQgaGFuZGxpbmcuCiAKKy0gSXNzdWUgIzEyMjQ2OiBXYXJuIGFuZCBmYWlsIHdoZW4gdHJ5aW5nIHRvIGluc3RhbGwgYSB0aGlyZC1wYXJ0eSBwcm9qZWN0IGZyb20KKyAgYW4gdW5pbnN0YWxsZWQgUHl0aG9uIChidWlsdCBpbiBhIHNvdXJjZSBjaGVja291dCkuICBPcmlnaW5hbCBwYXRjaCBieQorICBUc2hlcGFuZyBMZWtob25raG9iZS4KKwogLSBJc3N1ZSAjMTA2OTQ6IHppcGZpbGUgbm93IGlnbm9yZXMgZ2FyYmFnZSBhdCB0aGUgZW5kIG9mIGEgemlwZmlsZS4KIAogLSBJc3N1ZSAjMTIyODM6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gc210cGxpYiBxdW90aW5nIG9mIGxlYWRpbmcgZG90cyBpbiBEQVRBLgogCistIElzc3VlICMxMDQyNDogQXJncGFyc2Ugbm93IGluY2x1ZGVzIHRoZSBuYW1lcyBvZiB0aGUgbWlzc2luZyByZXF1aXJlZAorICBhcmd1bWVudHMgaW4gdGhlIG1pc3NpbmcgYXJndW1lbnRzIGVycm9yIG1lc3NhZ2UuCisKIC0gSXNzdWUgIzEyMTY4OiBTeXNMb2dIYW5kbGVyIG5vdyBhbGxvd3MgTlVMIHRlcm1pbmF0aW9uIHRvIGJlIGNvbnRyb2xsZWQgdXNpbmcKICAgYSBuZXcgJ2FwcGVuZF9udWwnIGF0dHJpYnV0ZSBvbiB0aGUgaGFuZGxlci4KIAogLSBJc3N1ZSAjMTE1ODM6IFNwZWVkIHVwIG9zLnBhdGguaXNkaXIgb24gV2luZG93cyBieSB1c2luZyBHZXRGaWxlQXR0cmlidXRlcwogICBpbnN0ZWFkIG9mIG9zLnN0YXQuCiAKKy0gSXNzdWUgIzEyMDIxOiBNYWtlIG1tYXAncyByZWFkKCkgbWV0aG9kIGFyZ3VtZW50IG9wdGlvbmFsLiBQYXRjaCBieSBQZXRyaQorICBMZWh0aW5lbi4KKworLSBJc3N1ZSAjOTIwNTogY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3Igbm93IGRldGVjdHMga2lsbGVkCisgIGNoaWxkcmVuIGFuZCByYWlzZXMgQnJva2VuUHJvY2Vzc1Bvb2wgaW4gc3VjaCBhIHNpdHVhdGlvbi4gIFByZXZpb3VzbHkgaXQKKyAgd291bGQgcmVsaWFibHkgZnJlZXplL2RlYWRsb2NrLgorCistIElzc3VlICMxMjA0MDogRXhwb3NlIGEgbmV3IGF0dHJpYnV0ZSBgYHNlbnRpbmVsYGAgb24gaW5zdGFuY2VzIG9mCisgIGBgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgYC4gIEFsc28sIGZpeCBQcm9jZXNzLmpvaW4oKSB0byBub3QgdXNlIHBvbGxpbmcKKyAgYW55bW9yZSwgd2hlbiBnaXZlbiBhIHRpbWVvdXQuCisKKy0gSXNzdWUgIzExODkzOiBSZW1vdmUgb2Jzb2xldGUgaW50ZXJuYWwgd3JhcHBlciBjbGFzcyBgYFNTTEZha2VGaWxlYGAgaW4gdGhlCisgIHNtdHBsaWIgbW9kdWxlLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KKworLSBJc3N1ZSAjMTIwODA6IEZpeCBhIERlY2ltYWwucG93ZXIoKSBjYXNlIHRoYXQgdG9vayBhbiB1bnJlYXNvbmFibHkgbG9uZyB0aW1lCisgIHRvIGNvbXB1dGUuCisKKy0gSXNzdWUgIzEyMjIxOiBSZW1vdmUgX192ZXJzaW9uX18gYXR0cmlidXRlcyBmcm9tIHB5ZXhwYXQsIHBpY2tsZSwgdGFyZmlsZSwKKyAgcHlkb2MsIHRraW50ZXIsIGFuZCB4bWwucGFyc2Vycy5leHBhdC4gVGhpcyB3ZXJlIHVzZWxlc3MgdmVyc2lvbiBjb25zdGFudHMKKyAgbGVmdCBvdmVyIGZyb20gdGhlIE1lcmN1cmlhbCB0cmFuc2l0aW9uCisKIC0gTmFtZWQgdHVwbGVzIG5vdyB3b3JrIGNvcnJlY3RseSB3aXRoIHZhcnMoKS4KIAogLSBJc3N1ZSAjMTIwODU6IEZpeCBhbiBhdHRyaWJ1dGUgZXJyb3IgaW4gc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIGlmIHRoZQogICBjb25zdHJ1Y3RvciBoYXMgZmFpbGVkLCBlLmcuIGJlY2F1c2Ugb2YgYW4gdW5kZWNsYXJlZCBrZXl3b3JkIGFyZ3VtZW50LiBQYXRjaAogICB3cml0dGVuIGJ5IE9sZWcgT3NobXlhbi4KIAotLSBJc3N1ZSAjOTg1MDY0OiBNYWtlIHBsaXN0bGliIG1vcmUgcmVzaWxpZW50IHRvIGZhdWx0eSBpbnB1dCBwbGlzdHMuICBQYXRjaCBieQotICBNaGVyIE1vdnNpc3lhbi4KKy0gSXNzdWUgIzEyMDI4OiBNYWtlIHRocmVhZGluZy5fZ2V0X2lkZW50KCkgcHVibGljLCByZW5hbWUgaXQgdG8KKyAgdGhyZWFkaW5nLmdldF9pZGVudCgpIGFuZCBkb2N1bWVudCBpdC4gVGhpcyBmdW5jdGlvbiB3YXMgYWxyZWFkeSB1c2VkIHVzaW5nCisgIF90aHJlYWQuZ2V0X2lkZW50KCkuCisKKy0gSXNzdWUgIzEyMTcxOiBJbmNyZW1lbnRhbEVuY29kZXIucmVzZXQoKSBvZiBDSksgY29kZWNzIChtdWx0aWJ5dGVjb2RlYykgY2FsbHMKKyAgZW5jcmVzZXQoKSBpbnN0ZWFkIG9mIGRlY3Jlc2V0KCkuCisKKy0gSXNzdWUgIzEyMjE4OiBSZW1vdmVkIHdzZ2lyZWYuZWdnLWluZm8uCisKKy0gSXNzdWUgIzEyMTk2OiBBZGQgcGlwZTIoKSB0byB0aGUgb3MgbW9kdWxlLgorCistIElzc3VlICM5ODUwNjQ6IE1ha2UgcGxpc3RsaWIgbW9yZSByZXNpbGllbnQgdG8gZmF1bHR5IGlucHV0IHBsaXN0cy4KKyAgUGF0Y2ggYnkgTWhlciBNb3ZzaXN5YW4uCisKKy0gSXNzdWUgIzE2MjU6IEJaMkZpbGUgYW5kIGJ6Mi5kZWNvbXByZXNzKCkgbm93IHN1cHBvcnQgbXVsdGktc3RyZWFtIGZpbGVzLgorICBJbml0aWFsIHBhdGNoIGJ5IE5pciBBaWRlcy4KKworLSBJc3N1ZSAjMTIxNzU6IEJ1ZmZlcmVkUmVhZGVyLnJlYWQoLTEpIG5vdyBjYWxscyByYXcucmVhZGFsbCgpIGlmIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IG9ubHkgcmVhZHMgdGhlIGZpbGUgcG9zaXRpb24gYW5kIHNpemUKKyAgb25jZS4KIAogLSBJc3N1ZSAjMTIxNzU6IFJhd0lPQmFzZS5yZWFkYWxsKCkgbm93IHJldHVybnMgTm9uZSBpZiByZWFkKCkgcmV0dXJucyBOb25lLgogCiAtIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIGFuIElPRXJyb3IKICAgaWYgdGhlIGZpbGUgaXMgY2xvc2VkLgogCistIElzc3VlICMxMTEwOTogTmV3IHNlcnZpY2VfYWN0aW9uIG1ldGhvZCBmb3IgQmFzZVNlcnZlciwgdXNlZCBieSBGb3JraW5nTWl4aW4KKyAgY2xhc3MgZm9yIGNsZWFudXAuIEluaXRpYWwgUGF0Y2ggYnkgSnVzdGluIFdhcmtlbnRpbi4KKworLSBJc3N1ZSAjMTIwNDU6IEF2b2lkIGR1cGxpY2F0ZSBleGVjdXRpb24gb2YgY29tbWFuZCBpbgorICBjdHlwZXMudXRpbC5fZ2V0X3NvbmFtZSgpLiAgUGF0Y2ggYnkgU2lqaW4gSm9zZXBoLgorCistIElzc3VlICMxMDgxODogUmVtb3ZlIHRoZSBUayBHVUkgYW5kIHRoZSBzZXJ2ZSgpIGZ1bmN0aW9uIG9mIHRoZSBweWRvYyBtb2R1bGUsCisgIHB5ZG9jIC1nIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMiBhbmQgaXQgaGFzIGEgbmV3IGVuaGFuY2VkIHdlYgorICBzZXJ2ZXIuCisKKy0gSXNzdWUgIzE0NDE1MzA6IEluIGltYXBsaWIsIHJlYWQgdGhlIGRhdGEgaW4gb25lIGNodW5rIHRvIHNwZWVkIHVwIGxhcmdlCisgIHJlYWRzIGFuZCBzaW1wbGlmeSBjb2RlLgorCiAtIElzc3VlICMxMjA3MDogRml4IHRoZSBNYWtlZmlsZSBwYXJzZXIgb2YgdGhlIHN5c2NvbmZpZyBtb2R1bGUgdG8gaGFuZGxlCiAgIGNvcnJlY3RseSByZWZlcmVuY2VzIHRvICJib2d1cyB2YXJpYWJsZSIgKGUuZy4gInByZWZpeD0kL29wdC9weXRob24iKS4KIApAQCAtMTY4MSw4MSArMzM5MywzMCBAQAogICB0aGVpciBlbmNvZGUoKSBtZXRob2QgYW55bW9yZSwgYnV0IGNvbnRpbnVlIHRvIGNhbGwgdGhlIHJlc2V0KCkgbWV0aG9kIGlmIHRoZQogICBmaW5hbCBhcmd1bWVudCBpcyBUcnVlLgogCi0tIElzc3VlICM1NzE1OiBJbiBzb2NrZXRzZXJ2ZXIsIGNsb3NlIHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZCBwcm9jZXNzLgorLSBJc3N1ZSAjMTIwNDk6IEFkZCBSQU5EX2J5dGVzKCkgYW5kIFJBTkRfcHNldWRvX2J5dGVzKCkgZnVuY3Rpb25zIHRvIHRoZSBzc2wKKyAgbW9kdWxlLgogCi0tIENvcnJlY3QgbG9va3VwIG9mIF9fZGlyX18gb24gb2JqZWN0cy4gQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGNhdXNlcyBlcnJvcnMKLSAgYmVzaWRlcyBBdHRyaWJ1dGVFcnJvciBmb3VuZCBvbiBsb29rdXAgdG8gYmUgcHJvcGFnYXRlZC4KKy0gSXNzdWUgIzY1MDE6IG9zLmRldmljZV9lbmNvZGluZygpIHJldHVybnMgTm9uZSBvbiBXaW5kb3dzIGlmIHRoZSBhcHBsaWNhdGlvbgorICBoYXMgbm8gY29uc29sZS4KKworLSBJc3N1ZSAjMTIxMDU6IEFkZCBPX0NMT0VYRUMgdG8gdGhlIG9zIG1vZHVsZS4KKworLSBJc3N1ZSAjMTIwNzk6IERlY2ltYWwoJ0luZmluaXR5JykuZm1hKERlY2ltYWwoJzAnKSwgKDMuOTEyMjQzMTgxMjY3ODZlKzE5KzBqKSkKKyAgbm93IHJhaXNlcyBUeXBlRXJyb3IgKHJlZmxlY3RpbmcgdGhlIGludmFsaWQgdHlwZSBvZiB0aGUgM3JkIGFyZ3VtZW50KSByYXRoZXIKKyAgdGhhbiBEZWNpbWFsLkludmFsaWRPcGVyYXRpb24uCiAKIC0gSXNzdWUgIzEyMTI0OiB6aXBpbXBvcnQgZG9lc24ndCBrZWVwIGEgcmVmZXJlbmNlIHRvIHpsaWIuZGVjb21wcmVzcygpIGFueW1vcmUKICAgdG8gYmUgYWJsZSB0byB1bmxvYWQgdGhlIG1vZHVsZS4KIAorLSBBZGQgdGhlIHBhY2thZ2luZyBtb2R1bGUsIGFuIGltcHJvdmVkIGZvcmsgb2YgZGlzdHV0aWxzIChhbHNvIGtub3duIGFzCisgIGRpc3R1dGlsczIpLgorCiAtIElzc3VlICMxMjA2NTogY29ubmVjdF9leCgpIG9uIGFuIFNTTCBzb2NrZXQgbm93IHJldHVybnMgdGhlIG9yaWdpbmFsIGVycm5vCiAgIHdoZW4gdGhlIHNvY2tldCdzIHRpbWVvdXQgZXhwaXJlcyAoaXQgdXNlZCB0byByZXR1cm4gTm9uZSkuCiAKLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQotICBLaXRhZGEuCi0KLS0gSXNzdWUgIzEyMjIxOiBSZXBsYWNlIHB5ZXhwYXQuX192ZXJzaW9uX18gd2l0aCB0aGUgUHl0aG9uIHZlcnNpb24uCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAotICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlIGZ1bmN0aW9ucwotICAoKkJTRCBhbmQgT1MgWCkuICBBbHNvIGFkZCBuZXcgc3RhdCBmaWxlIGZsYWdzIGZvciBPUyBYIChVRl9ISURERU4gYW5kCi0gIFVGX0NPTVBSRVNTRUQpLgotCi0tIElzc3VlICMxMTIxNzogRm9yIDY0LWJpdC8zMi1iaXQgTWFjIE9TIFggdW5pdmVyc2FsIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZQotICAibWFrZSBpbnN0YWxsIiBjcmVhdGVzIHN5bWxpbmtzIGluIC0tcHJlZml4IGJpbiBmb3IgdGhlICItMzIiIGZpbGVzIGluIHRoZQotICBmcmFtZXdvcmsgYmluIGRpcmVjdG9yeSBsaWtlIHRoZSBpbnN0YWxsZXIgZG9lcy4KLQotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTI0MDc6IEV4cGxpY2l0bHkgc2tpcCB0ZXN0X2NhcGkuRW1iZWRkaW5nVGVzdCB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxMjQwMDogcmVncnRlc3QgLVcgZG9lc24ndCByZXJ1biB0aGUgdGVzdHMgdHdpY2UgYW55bW9yZSwgYnV0IGNhcHR1cmVzCi0gIHRoZSBvdXRwdXQgYW5kIGRpc3BsYXlzIGl0IG9uIGZhaWx1cmUgaW5zdGVhZC4gcmVncnRlc3QgLXYgZG9lc24ndCBwcmludCB0aGUKLSAgZXJyb3IgdHdpY2UgYW55bW9yZSBpZiB0aGVyZSBpcyBvbmx5IG9uZSBlcnJvci4KLQotLSBJc3N1ZSAjMTIxNDE6IEluc3RhbGwgYSBjb3B5IG9mIHRlbXBsYXRlIEMgbW9kdWxlIGZpbGUgc28gdGhhdCB0ZXN0X2J1aWxkX2V4dAotICBvZiB0ZXN0X2Rpc3R1dGlscyBpcyBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQKLSAgZGlyZWN0b3J5LgotCi0tIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLiAgUGF0Y2gKLSAgYnkgR2FycmV0dCBDb29wZXIuCi0KLS0gSXNzdWUgIzEwNzM2OiBGaXggdGVzdF90dGsgdGVzdF93aWRnZXRzIGZhaWx1cmVzIHdpdGggQ29jb2EgVGsgOC41Ljkgb24gTWFjCi0gIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQotCi0tIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKLSAgaXNvMjAyMl9rcikuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjEgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE1LU1heS0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIwNjA6IFVzZSBzaWdfYXRvbWljX3QgdHlwZSBhbmQgdm9sYXRpbGUga2V5d29yZCBpbiB0aGUgc2lnbmFsCi0gIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzEyMDQ0OiBGaXhlZCBzdWJwcm9jZXNzLlBvcGVuIHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0bwotICB3YWl0IGZvciB0aGUgcHJvY2VzcyB0byBlbmQgd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0IHRvIGF2b2lkIHVuaW50ZW50aW9uYWxseQotICBsZWF2aW5nIHpvbWJpZSBwcm9jZXNzZXMgYXJvdW5kLgotCi0tIElzc3VlICMxMTk1OiBGaXggaW5wdXQoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBDVFJMK2QgYW5kIHRoZW4gQ1RSTCtjLAotICBjbGVhciB0aGUgZW5kLW9mLWZpbGUgaW5kaWNhdG9yIGFmdGVyIENUUkwrZC4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjODgwOTogVGhlIFNNVFBfU1NMIGNvbnN0cnVjdG9yIGFuZCBTTVRQLnN0YXJ0dGxzKCkgbm93IHN1cHBvcnQKKyAgcGFzc2luZyBhIGBgY29udGV4dGBgIGFyZ3VtZW50IHBvaW50aW5nIHRvIGFuIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlLgorICBQYXRjaCBieSBLYXN1biBIZXJhdGguCiAKIC0gSXNzdWUgIzExMDg4OiBkb24ndCBjcmFzaCB3aGVuIHVzaW5nIEY1IHRvIHJ1biBhIHNjcmlwdCBpbiBJRExFIG9uIE1hY09TWAogICB3aXRoIFRrIDguNS4KQEAgLTE3NjMsOCArMzQyNCw2IEBACiAtIElzc3VlICM5NTE2OiBJc3N1ZSAjOTUxNjogYXZvaWQgZXJyb3JzIGluIHN5c2NvbmZpZyB3aGVuIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogICBpcyBzZXQgaW4gc2hlbGwuCiAKLS0gSXNzdWUgIzEyMDEyOiBzc2wuUFJPVE9DT0xfU1NMdjIgYmVjb21lcyBvcHRpb25hbC4KLQogLSBJc3N1ZSAjODY1MDogTWFrZSB6bGliIG1vZHVsZSA2NC1iaXQgY2xlYW4uIGNvbXByZXNzKCksIGRlY29tcHJlc3MoKSBhbmQKICAgdGhlaXIgaW5jcmVtZW50YWwgY291bnRlcnBhcnRzIG5vdyByYWlzZSBPdmVyZmxvd0Vycm9yIGlmIGdpdmVuIGFuIGlucHV0CiAgIGxhcmdlciB0aGFuIDRHQiwgaW5zdGVhZCBvZiBzaWxlbnRseSB0cnVuY2F0aW5nIHRoZSBpbnB1dCBhbmQgcmV0dXJuaW5nCkBAIC0xNzc4LDEyICszNDM3LDE2IEBACiAgIHdyaXRpbmcsIHRoZW4gc2Vla2luZyBiZWZvcmUgdGhlIHByZXZpb3VzIHdyaXRlIGJ1dCBzdGlsbCB3aXRoaW4gYnVmZmVyZWQKICAgZGF0YSwgYW5kIHdyaXRpbmcgYWdhaW4pLgogCistIElzc3VlICM5OTcxOiBXcml0ZSBhbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgQnVmZmVyZWRSZWFkZXIucmVhZGludG8oKS4KKyAgUGF0Y2ggYnkgSm9obiBPJ0Nvbm5vci4KKwogLSBJc3N1ZSAjMTAyODogVGsgcmV0dXJucyBpbnZhbGlkIFVuaWNvZGUgbnVsbCBpbiAlQTogVW5pY29kZURlY29kZUVycm9yLgogICBXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkCiAgIElETEUgdG8gZXhpdC4gIENvbnZlcnRlZCB0byB2YWxpZCBVbmljb2RlIG51bGwgaW4gUHl0aG9uQ21kKCkuCiAKLS0gSXNzdWUgIzExMTY5OiBjb21waWxlYWxsIG1vZHVsZSB1c2VzIHJlcHIoKSB0byBmb3JtYXQgZmlsZW5hbWVzIGFuZCBwYXRocyB0bwotICBlc2NhcGUgc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHNob3cgc3BhY2VzLgorLSBJc3N1ZSAjMTE3OTk6IHVybGxpYi5yZXF1ZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXJzIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yCisgIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gdW5zdXBwb3J0ZWQgQXV0aGVudGljYXRpb24gU2NoZW1lLiBQYXRjaCBjb250cmlidXRlZAorICBieSBZdXZhbCBHcmVlbmZpZWxkLgogCiAtIElzc3VlICMxMDQxOSwgIzYwMTE6IGJ1aWxkX3NjcmlwdHMgY29tbWFuZCBvZiBkaXN0dXRpbHMgaGFuZGxlcyBjb3JyZWN0bHkKICAgbm9uLUFTQ0lJIHBhdGggKHBhdGggdG8gdGhlIFB5dGhvbiBleGVjdXRhYmxlKS4gT3BlbiBhbmQgd3JpdGUgdGhlIHNjcmlwdCBpbgpAQCAtMTc5MywxMzMgKzM0NTYsNjggQEAKIC0gSXNzdWUgIzg0OTg6IEluIHNvY2tldC5hY2NlcHQoKSwgYWxsb3cgdG8gc3BlY2lmeSAwIGFzIGEgYmFja2xvZyB2YWx1ZSBpbgogICBvcmRlciB0byBhY2NlcHQgZXhhY3RseSBvbmUgY29ubmVjdGlvbi4gIFBhdGNoIGJ5IERhbmllbCBFdmVycy4KIAorLSBJc3N1ZSAjMTIwMTE6IHNpZ25hbC5zaWduYWwoKSBhbmQgc2lnbmFsLnNpZ2ludGVycnVwdCgpIHJhaXNlIGFuIE9TRXJyb3IsCisgIGluc3RlYWQgb2YgYSBSdW50aW1lRXJyb3I6IE9TRXJyb3IgaGFzIGFuIGVycm5vIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMzcwOTogYWRkIGEgZmx1c2hfaGVhZGVycyBtZXRob2QgdG8gQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgd2hpY2gKKyAgbWFuYWdlcyB0aGUgc2VuZGluZyBvZiBoZWFkZXJzIHRvIG91dHB1dCBzdHJlYW0gYW5kIGZsdXNoaW5nIHRoZSBpbnRlcm5hbAorICBoZWFkZXJzIGJ1ZmZlci4gUGF0Y2ggY29udHJpYnV0aW9uIGJ5IEFuZHJldyBTY2hhYWYKKworLSBJc3N1ZSAjMTE3NDM6IFJld3JpdGUgbXVsdGlwcm9jZXNzaW5nIGNvbm5lY3Rpb24gY2xhc3NlcyBpbiBwdXJlIFB5dGhvbi4KKwogLSBJc3N1ZSAjMTExNjQ6IFN0b3AgdHJ5aW5nIHRvIHVzZSBfeG1scGx1cyBpbiB0aGUgeG1sIG1vZHVsZS4KIAotQnVpbGQKLS0tLS0tCistIElzc3VlICMxMTg4ODogQWRkIGxvZzIgZnVuY3Rpb24gdG8gbWF0aCBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgTWFyaworICBEaWNraW5zb24uCiAKLS0gSXNzdWUgIzExMzQ3OiBVc2UgLS1uby1hcy1uZWVkZWQgd2hlbiBsaW5raW5nIGxpYnB5dGhvbjMuc28uCistIElzc3VlICMxMjAxMjogc3NsLlBST1RPQ09MX1NTTHYyIGJlY29tZXMgb3B0aW9uYWwuCiAKLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjODQwNzogVGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyB0aGUgc2lnbmFsIG51bWJlciBhcyBhIHNpbmdsZSBieXRlCisgIGluc3RlYWQgb2YgYSBudWwgYnl0ZSBpbnRvIHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yLiBTbyBpdCBpcyBwb3NzaWJsZSB0bworICB3YWl0IG1vcmUgdGhhbiBvbmUgc2lnbmFsIGFuZCBrbm93IHdoaWNoIHNpZ25hbHMgd2VyZSByYWlzZWQuCiAKLS0gSXNzdWUgIzExOTk2OiBsaWJweXRob24gKGdkYiksIHJlcGxhY2UgInB5LWJ0IiBjb21tYW5kIGJ5ICJweS1idC1mdWxsIiBhbmQKLSAgYWRkIGEgc21hcnRlciAicHktYnQiIGNvbW1hbmQgcHJpbnRpbmcgYSBjbGFzc2ljIFB5dGhvbiB0cmFjZWJhY2suCistIElzc3VlICM4NDA3OiBBZGQgcHRocmVhZF9raWxsKCksIHNpZ3BlbmRpbmcoKSBhbmQgc2lnd2FpdCgpIGZ1bmN0aW9ucyB0byB0aGUKKyAgc2lnbmFsIG1vZHVsZS4KIAotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzExOTEwOiBGaXggdGVzdF9oZWFwcSB0byBza2lwIHRoZSBDIHRlc3RzIHdoZW4gX2hlYXBxIGlzIG1pc3NpbmcuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjEgYmV0YSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwOC1NYXktMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE4NTY6IEF2b2lkIGNyYXNoZXMgYW5kIGxvY2t1cHMgd2hlbiBkYWVtb24gdGhyZWFkcyBydW4gd2hpbGUgdGhlCi0gIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd247IGluc3RlYWQsIHRoZXNlIHRocmVhZHMgYXJlIG5vdyBraWxsZWQgd2hlbiB0aGV5Ci0gIHRyeSB0byB0YWtlIHRoZSBHSUwuCi0KLS0gSXNzdWUgIzk3NTY6IFdoZW4gY2FsbGluZyBhIG1ldGhvZCBkZXNjcmlwdG9yIG9yIGEgc2xvdCB3cmFwcGVyIGRlc2NyaXB0b3IsCi0gIHRoZSBjaGVjayBvZiB0aGUgb2JqZWN0IHR5cGUgZG9lc24ndCByZWFkIHRoZSBfX2NsYXNzX18gYXR0cmlidXRlIGFueW1vcmUuCi0gIEZpeCBhIGNyYXNoIGlmIGEgY2xhc3Mgb3ZlcnJpZGUgaXRzIF9fY2xhc3NfXyBhdHRyaWJ1dGUgKGUuZy4gYSBwcm94eSBvZiB0aGUKLSAgc3RyIHR5cGUpLiBQYXRjaCB3cml0dGVuIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTA5MTQ6IEluaXRpYWxpemUgY29ycmVjdGx5IHRoZSBmaWxlc3lzdGVtIGNvZGVjIHdoZW4gY3JlYXRpbmcgYSBuZXcKLSAgc3ViaW50ZXJwcmV0ZXIgdG8gZml4IGEgYm9vdHN0cmFwIGlzc3VlIHdpdGggY29kZWNzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgYXMKLSAgdGhlIElTTy04ODU5LTE1IGNvZGVjLgotCi0tIElzc3VlICMxMDUxNzogQWZ0ZXIgZm9yaygpLCByZWluaXRpYWxpemUgdGhlIFRMUyB1c2VkIGJ5IHRoZSBQeUdJTFN0YXRlXyoKLSAgQVBJcywgdG8gYXZvaWQgYSBjcmFzaCB3aXRoIHRoZSBwdGhyZWFkIGltcGxlbWVudGF0aW9uIGluIFJIRUwgNS4gIFBhdGNoIGJ5Ci0gIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjNjc4MDogZml4IHN0YXJ0cy9lbmRzd2l0aCBlcnJvciBtZXNzYWdlIHRvIG1lbnRpb24gdGhhdCB0dXBsZXMgYXJlCi0gIGFjY2VwdGVkIHRvby4KLQotLSBJc3N1ZSAjNTA1NzogZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcwotICBiZXR3ZWVuIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgd2hpbGUgb3B0aW1pemluZyBCSU5BUllfU1VCU0NSIG9uIG5vbi1CTVAgY2hhcnMKLSAgKGUuZy4gIlxVMDAwMTIzNDUiWzBdKS4KLQotLSBJc3N1ZSAjMTE4NDU6IEZpeCB0eXBvIGluIHJhbmdlb2JqZWN0LmMgdGhhdCBjYXVzZWQgYSBjcmFzaCBpbgotICBjb21wdXRlX3NsaWNlX2luZGljZXMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzExNjUwOiBQeU9TX1N0ZGlvUmVhZGxpbmUoKSByZXRyaWVzIGZnZXRzKCkgaWYgaXQgd2FzIGludGVycnVwdGVkCi0gIChFSU5UUiksIGZvciBleGFtcGxlIGlmIHRoZSBwcm9ncmFtIGlzIHN0b3BwZWQgd2l0aCBDVFJMK3ogb24gTWFjIE9TIFguIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExMzk1OiBpby5GaWxlSU8oKS53cml0ZSgpIGNsYW1wcyB0aGUgZGF0YSBsZW5ndGggdG8gMzIsNzY3IGJ5dGVzIG9uCi0gIFdpbmRvd3MgaWYgdGhlIGZpbGUgaXMgYSBUVFkgdG8gd29ya2Fyb3VuZCBhIFdpbmRvd3MgYnVnLiBUaGUgV2luZG93cyBjb25zb2xlCi0gIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QgZW5vdWdoIHNwYWNlIGVycm9yKSBvbiB3cml0aW5nIGludG8gc3Rkb3V0IGlmIHN0ZG91dAotICBtb2RlIGlzIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLCBkZXBlbmRpbmcKLSAgb24gaGVhcCB1c2FnZSkuCi0KLS0gSXNzdWUgIzExMzIwOiBmaXggYm9ndXMgbWVtb3J5IG1hbmFnZW1lbnQgaW4gTW9kdWxlcy9nZXRwYXRoLmMsIGxlYWRpbmcgdG8gYQotICBwb3NzaWJsZSBjcmFzaCB3aGVuIGNhbGxpbmcgUHlfU2V0UGF0aCgpLgotCi0tIElzc3VlICMxMTUxMDogRml4ZWQgb3B0aW1pemVyIGJ1ZyB3aGljaCB0dXJuZWQgImEsYj17MSwxfSIgaW50byAiYSxiPSgxLDEpIi4KLQotLSBJc3N1ZSAjMTE0MzI6IEEgYnVnIHdhcyBpbnRyb2R1Y2VkIGluIHN1YnByb2Nlc3MuUG9wZW4gb24gcG9zaXggc3lzdGVtcyB3aXRoCi0gIDMuMi4wIHdoZXJlIHRoZSBzdGRvdXQgb3Igc3RkZXJyIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0aGUgc2FtZSBhcyB0aGUgc3RkaW4KLSAgZmlsZSBkZXNjcmlwdG9yIHdvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbi4gd2ViYnJvd3Nlci5vcGVuIHdvdWxkIGZhaWwuIGZpeGVkLgotCi0tIElzc3VlICMxMTQ1MDogRG9uJ3QgdHJ1bmNhdGUgaGcgdmVyc2lvbiBpbmZvIGluIFB5X0dldEJ1aWxkSW5mbygpIHdoZW4gdGhlcmUKLSAgYXJlIG1hbnkgdGFncyAoZS5nLiB3aGVuIHVzaW5nIG1xKS4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTEyNDY6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVYiKSB0byBkZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGZyb20KLSAgVVRGLTggKHdpdGggcmVwbGFjZSBlcnJvciBoYW5kbGVyKSBpbnN0ZWFkIG9mIElTTy04ODU5LTEgKGluIHN0cmljdCBtb2RlKS4KLSAgUGF0Y2ggd3JpdHRlbiBieSBSYXkgQWxsZW4uCi0KLS0gSXNzdWUgIzExMjg2OiBSYWlzZSBhIFZhbHVlRXJyb3IgZnJvbSBjYWxsaW5nIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyIHdpdGggYQotICBidWZmZXIgc3RydWN0IGhhdmluZyBhIE5VTEwgZGF0YSBwb2ludGVyLgotCi0tIElzc3VlICMxMTI3MjogT24gV2luZG93cywgaW5wdXQoKSBzdHJpcHMgJ1xyJyAoYW5kIG5vdCBvbmx5ICdcbicpLCBhbmQKLSAgc3lzLnN0ZGluIHVzZXMgdW5pdmVyc2FsIG5ld2xpbmUgKHJlcGxhY2UgJ1xyXG4nIGJ5ICdcbicpLgotCi0tIGlzc3VlICMxMTgyODogc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggZG9uJ3QgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguICBQYXRjaAotICBieSBUb3JzdGVuIEJlY2tlci4KLQotLSBJc3N1ZSAjMTA4MzA6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoIiVjIikgZm9yIG5vbi1CTVAgY2hhcmFjdGVycyBvbgotICBuYXJyb3cgYnVpbGQuCi0KLS0gQ2hlY2sgZm9yIE5VTEwgcmVzdWx0IGluIFB5VHlwZV9Gcm9tU3BlYy4KLQotLSBJc3N1ZSAjMTEzODY6IGJ5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzCi0gIGVtcHR5LCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTE5Mjc6IFNNVFBfU1NMIG5vdyB1c2VzIHBvcnQgNDY1IGJ5IGRlZmF1bHQgYXMgZG9jdW1lbnRlZC4gIFBhdGNoIGJ5Ci0gIEthc3VuIEhlcmF0aC4KKy0gSXNzdWUgIzExOTI3OiBTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaAorICBieSBLYXN1biBIZXJhdGguCiAKIC0gSXNzdWUgIzEyMDAyOiBmdHBsaWIncyBhYm9ydCgpIG1ldGhvZCByYWlzZXMgVHlwZUVycm9yLgogCistIElzc3VlICMxMTkxNjogQWRkIGEgbnVtYmVyIG9mIE1hY09TWCBzcGVjaWZpYyBkZWZpbml0aW9ucyB0byB0aGUgZXJybm8gbW9kdWxlLgorICBQYXRjaCBieSBQaWVycmUgQ2Fycmllci4KKwogLSBJc3N1ZSAjMTE5OTk6IGZpeGVkIHNwb3JhZGljIHN5bmMgZmFpbHVyZSBtYWlsYm94Lk1haWxkaXIgZHVlIHRvIGl0cyB0cnlpbmcgdG8KICAgZGV0ZWN0IG10aW1lIGNoYW5nZXMgYnkgY29tcGFyaW5nIHRvIHRoZSBzeXN0ZW0gY2xvY2sgaW5zdGVhZCBvZiB0byB0aGUKICAgcHJldmlvdXMgdmFsdWUgb2YgdGhlIG10aW1lLgogCistIElzc3VlICMxMTA3MjogYWRkZWQgTUxTRCBjb21tYW5kIChSRkMtMzY1OSkgc3VwcG9ydCB0byBmdHBsaWIuCisKKy0gSXNzdWUgIzg4MDg6IFRoZSBJTUFQNF9TU0wgY29uc3RydWN0b3Igbm93IGFsbG93cyBwYXNzaW5nIGFuIFNTTENvbnRleHQKKyAgcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlIGNoYW5uZWwuICBQYXRjaCBieSBTaWppbgorICBKb3NlcGguCisKIC0gbnRwYXRoLnNhbWVmaWxlIGZhaWxlZCB0byBub3RpY2UgdGhhdCAiYS50eHQiIGFuZCAiQS5UWFQiIHJlZmVyIHRvIHRoZSBzYW1lCiAgIGZpbGUgb24gV2luZG93cyBYUC4gQXMgbm90aWNlZCBpbiBpc3N1ZSAjMTA2ODQuCiAKLS0gSXNzdWUgIzEyMDAwOiBXaGVuIGEgU1NMIGNlcnRpZmljYXRlIGhhcyBhIHN1YmplY3RBbHROYW1lIHdpdGhvdXQgYW55IGROU05hbWUKLSAgZW50cnksIHNzbC5tYXRjaF9ob3N0bmFtZSgpIHNob3VsZCB1c2UgdGhlIHN1YmplY3QncyBjb21tb25OYW1lLiAgUGF0Y2ggYnkKLSAgTmljb2xhcyBCYXJlaWwuCistIElzc3VlICMxMjAwMDogV2hlbiBhIFNTTCBjZXJ0aWZpY2F0ZSBoYXMgYSBzdWJqZWN0QWx0TmFtZSB3aXRob3V0IGFueQorICBkTlNOYW1lIGVudHJ5LCBzc2wubWF0Y2hfaG9zdG5hbWUoKSBzaG91bGQgdXNlIHRoZSBzdWJqZWN0J3MgY29tbW9uTmFtZS4KKyAgUGF0Y2ggYnkgTmljb2xhcyBCYXJlaWwuCiAKLS0gSXNzdWUgIzExNjQ3OiBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgY29udGV4dGxpYi5jb250ZXh0bWFuYWdlciBub3cgc3VwcG9ydCBtb3JlCi0gIHRoYW4gb25lIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gdXNlZCBhcyBhIGRlY29yYXRvci4gSW5pdGlhbCBwYXRjaCBieSBZc2oKLSAgUmF5LgorLSBJc3N1ZSAjMTA3NzU6IGFzc2VydFJhaXNlcywgYXNzZXJ0UmFpc2VzUmVnZXgsIGFzc2VydFdhcm5zLCBhbmQKKyAgYXNzZXJ0V2FybnNSZWdleCBub3cgYWNjZXB0IGEga2V5d29yZCBhcmd1bWVudCAnbXNnJyB3aGVuIHVzZWQgYXMgY29udGV4dAorICBtYW5hZ2Vycy4gIEluaXRpYWwgcGF0Y2ggYnkgV2luc3RvbiBFd2VydC4KKworLSBJc3N1ZSAjMTA2ODQ6IHNodXRpbC5tb3ZlIHVzZWQgdG8gZGVsZXRlIGEgZm9sZGVyIG9uIGNhc2UgaW5zZW5zaXRpdmUKKyAgZmlsZXN5c3RlbXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBuYW1lIHdoZXJlIHRoZSBzYW1lIGV4Y2VwdAorICBmb3IgdGhlIGNhc2UuCisKKy0gSXNzdWUgIzExNjQ3OiBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgY29udGV4dGxpYi5jb250ZXh0bWFuYWdlciBub3cgc3VwcG9ydAorICBtb3JlIHRoYW4gb25lIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gdXNlZCBhcyBhIGRlY29yYXRvci4gSW5pdGlhbCBwYXRjaAorICBieSBZc2ogUmF5LgorCistIElzc3VlICMxMTkzMDogUmVtb3ZlZCBkZXByZWNhdGVkIHRpbWUuYWNjZXB0MmR5ZWFyIHZhcmlhYmxlLgorICBSZW1vdmVkIHllYXIgPj0gMTAwMCByZXN0cmljdGlvbiBmcm9tIGRhdGV0aW1lLnN0cmZ0aW1lLgogCiAtIGxvZ2dpbmc6IGRvbid0IGRlZmluZSBRdWV1ZUxpc3RlbmVyIGlmIFB5dGhvbiBoYXMgbm8gdGhyZWFkIHN1cHBvcnQuCiAKQEAgLTE5MjgsMTYgKzM1MjYsMzkgQEAKIC0gSXNzdWUgIzExMjc3OiBtbWFwLm1tYXAoKSBjYWxscyBmY250bChmZCwgRl9GVUxMRlNZTkMpIG9uIE1hYyBPUyBYIHRvIGdldAogICBhcm91bmQgYSBtbWFwIGJ1ZyB3aXRoIHNwYXJzZSBmaWxlcy4gUGF0Y2ggd3JpdHRlbiBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgogCistIElzc3VlICM4NDA3OiBBZGQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpIGZ1bmN0aW9uIHRvIGZldGNoIGFuZC9vciBjaGFuZ2UgdGhlCisgIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KKwogLSBJc3N1ZSAjMTE4NTg6IGNvbmZpZ3BhcnNlci5FeHRlbmRlZEludGVycG9sYXRpb24gZXhwZWN0ZWQgbG93ZXItY2FzZSBzZWN0aW9uCiAgIG5hbWVzLgogCiAtIElzc3VlICMxMTMyNDogQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSkgbm93IHdvcmtzIGNvcnJlY3RseS4KIAorLSBJc3N1ZSAjMTE4MTE6IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCkgaXMgbm93IElQdjYtY29tcGF0aWJsZS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKwogLSBJc3N1ZSAjMTE3NjM6IGRvbid0IHVzZSBkaWZmbGliIGluIFRlc3RDYXNlLmFzc2VydE11bHRpTGluZUVxdWFsIGlmIHRoZQogICBzdHJpbmdzIGFyZSB0b28gbG9uZy4KIAogLSBJc3N1ZSAjMTEyMzY6IGdldHBhc3MuZ2V0cGFzcyByZXNwb25kcyB0byBjdHJsLWMgb3IgY3RybC16IG9uIHRlcm1pbmFsLgogCistIElzc3VlICMxMTg1NjogU3BlZWQgdXAgcGFyc2luZyBvZiBKU09OIG51bWJlcnMuCisKKy0gSXNzdWUgIzExMDA1OiB0aHJlYWRpbmcuUkxvY2soKS5fcmVsZWFzZV9zYXZlKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQorICBsb2NrIHdhcyBub3QgYWNxdWlyZWQuCisKKy0gSXNzdWUgIzExMjU4OiBTcGVlZCB1cCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKSB1bmRlciBMaW51eCBieSBhIGZhY3RvcgorICBvZiA1IHRvIDEwLiAgSW5pdGlhbCBwYXRjaCBieSBKb25hcyBILgorCistIElzc3VlICMxMTM4MjogVHJpdmlhbCBzeXN0ZW0gY2FsbHMsIHN1Y2ggYXMgZHVwKCkgb3IgcGlwZSgpLCBuZWVkbid0CisgIHJlbGVhc2UgdGhlIEdJTC4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTEyMjM6IEFkZCB0aHJlYWRpbmcuX2luZm8oKSBmdW5jdGlvbiBwcm92aWRpbmcgaW5mb3JtYXRpb25zIGFib3V0CisgIHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzExNzMxOiBzaW1wbGlmeS9lbmhhbmNlIGVtYWlsIHBhcnNlci9nZW5lcmF0b3IgQVBJIGJ5IGludHJvZHVjaW5nCisgIHBvbGljeSBvYmplY3RzLgorCiAtIElzc3VlICMxMTc2ODogVGhlIHNpZ25hbCBoYW5kbGVyIG9mIHRoZSBzaWduYWwgbW9kdWxlIG9ubHkgY2FsbHMKICAgUHlfQWRkUGVuZGluZ0NhbGwoKSBmb3IgdGhlIGZpcnN0IHNpZ25hbCB0byBmaXggYSBkZWFkbG9jayBvbiByZWVudHJhbnQgb3IKICAgcGFyYWxsZWwgY2FsbHMuIFB5RXJyX1NldEludGVycnVwdCgpIHdyaXRlcyBhbHNvIGludG8gdGhlIHdha2UgdXAgZmlsZS4KQEAgLTE5NTcsNiArMzU3OCwxMCBAQAogLSBJc3N1ZSAjMTE0NzQ6IEZpeCB0aGUgYnVnIHdpdGggdXJsMnBhdGhuYW1lKCkgaGFuZGxpbmcgb2YgJy9DfC8nIG9uIFdpbmRvd3MuCiAgIFBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgogCistIElzc3VlICMxMTY4NDogY29tcGxldGUgZW1haWwucGFyc2VyIGJ5dGVzIEFQSSBieSBhZGRpbmcgQnl0ZXNIZWFkZXJQYXJzZXIuCisKKy0gVGhlIGJ6MiBtb2R1bGUgbm93IGhhbmRsZXMgNEdpQisgaW5wdXQgYnVmZmVycyBjb3JyZWN0bHkuCisKIC0gSXNzdWUgIzkyMzM6IEZpeCBqc29uLmxvYWRzKCd7fScpIHRvIHJldHVybiBhIGRpY3QgKGluc3RlYWQgb2YgYSBsaXN0KSwgd2hlbgogICBfanNvbiBpcyBub3QgYXZhaWxhYmxlLgogCkBAIC0xOTY4LDE3ICszNTkzLDMzIEBACiAtIElzc3VlICMxMDAxOTogRml4ZWQgcmVncmVzc2lvbiBpbiBqc29uIG1vZHVsZSB3aGVyZSBhbiBpbmRlbnQgb2YgMCBzdG9wcGVkCiAgIGFkZGluZyBuZXdsaW5lcyBhbmQgYWN0ZWQgaW5zdGVhZCBsaWtlICdOb25lJy4KIAorLSBJc3N1ZSAjMTExODY6IHB5ZG9jIGlnbm9yZXMgYSBtb2R1bGUgaWYgaXRzIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUKKyAgY2hhcmFjdGVyIGluIHRoZSBpbmRleCBvZiBtb2R1bGVzLgorCistIElzc3VlICMxMTgxNTogVXNlIGEgbGlnaHQtd2VpZ2h0IFNpbXBsZVF1ZXVlIGZvciB0aGUgcmVzdWx0IHF1ZXVlIGluCisgIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgorCiAtIElzc3VlICM1MTYyOiBUcmVhdCBzZXJ2aWNlcyBsaWtlIGZyb3plbiBleGVjdXRhYmxlcyB0byBhbGxvdyBjaGlsZCBzcGF3bmluZwogICBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIG9uIFdpbmRvd3MuCiAKKy0gbG9nZ2luZy5iYXNpY0NvbmZpZyBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgJ2hhbmRsZXJzJyBhcmd1bWVudCB0YWtpbmcgYW4KKyAgaXRlcmFibGUgb2YgaGFuZGxlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIHJvb3QgbG9nZ2VyLiBBZGRpdGlvbmFsIHBhcmFtZXRlcgorICBjaGVja3Mgd2VyZSBhbHNvIGFkZGVkIHRvIGJhc2ljQ29uZmlnLgorCiAtIElzc3VlICMxMTgxNDogRml4IGxpa2VseSB0eXBvIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sLl90ZXJtaW5hdGUoKS4KIAogLSBJc3N1ZSAjMTE3NDc6IEZpeCByYW5nZSBmb3JtYXR0aW5nIGluIGRpZmZsaWIuY29udGV4dF9kaWZmKCkgYW5kCiAgIGRpZmZsaWIudW5pZmllZF9kaWZmKCkuCiAKIC0gSXNzdWUgIzg0Mjg6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sIHdoZW4gdGVybWluYXRpbmcKLSAgd29ya2VyIHByb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nIHNodXQKLSAgZG93bi4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKyAgd29ya2VyIHByb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nCisgIHNodXQgZG93bi4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMjY1MDogcmUuZXNjYXBlKCkgbm8gbG9uZ2VyIGVzY2FwZXMgdGhlICdfJy4KKworLSBJc3N1ZSAjMTE3NTc6IHNlbGVjdC5zZWxlY3QoKSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhIG5lZ2F0aXZlIHRpbWVvdXQKKyAgaXMgcGFzc2VkIChwcmV2aW91c2x5LCBhIHNlbGVjdC5lcnJvciB3aXRoIEVJTlZBTCB3b3VsZCBiZSByYWlzZWQpLiAgUGF0Y2gKKyAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgogCiAtIElzc3VlICM3MzExOiBmaXggaHRtbC5wYXJzZXIgdG8gYWNjZXB0IG5vbi1BU0NJSSBhdHRyaWJ1dGUgdmFsdWVzLgogCkBAIC0xOTg2LDIxICszNjI3LDUwIEBACiAgIG11bHRpcGFydCBzdWJwYXJ0cyB3aXRoIGFuIDgtYml0IENURSBpbnRvIHVuaWNvZGUgaW5zdGVhZCBvZiBwcmVzZXJ2aW5nIHRoZQogICBieXRlcy4KIAorLSBJc3N1ZSAjMTY5MDYwODogZW1haWwudXRpbC5mb3JtYXRhZGRyIGlzIG5vdyBSRkMgMjA0NyBhd2FyZTogIGl0IG5vdyBoYXMgYQorICBjaGFyc2V0IHBhcmFtZXRlciB0aGF0IGRlZmF1bHRzIHRvIHV0Zi04IGFuZCBpcyB1c2VkIGFzIHRoZSBjaGFyc2V0IGZvciBSRkMKKyAgMjA0NyBlbmNvZGluZyB3aGVuIHRoZSByZWFsbmFtZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycy4KKwogLSBJc3N1ZSAjMTA5NjM6IEVuc3VyZSB0aGF0IHN1YnByb2Nlc3MuY29tbXVuaWNhdGUoKSBuZXZlciByYWlzZXMgRVBJUEUuCiAKKy0gSXNzdWUgIzEwNzkxOiBJbXBsZW1lbnQgbWlzc2luZyBtZXRob2QgR3ppcEZpbGUucmVhZDEoKSwgYWxsb3dpbmcgR3ppcEZpbGUKKyAgdG8gYmUgd3JhcHBlZCBpbiBhIFRleHRJT1dyYXBwZXIuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCisKKy0gSXNzdWUgIzExNzA3OiBBZGRlZCBhIGZhc3QgQyB2ZXJzaW9uIG9mIGZ1bmN0b29scy5jbXBfdG9fa2V5KCkuCisgIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzExNjg4OiBBZGQgc3FsaXRlMy5Db25uZWN0aW9uLnNldF90cmFjZV9jYWxsYmFjaygpLiAgUGF0Y2ggYnkKKyAgVG9yc3RlbiBMYW5kc2Nob2ZmLgorCiAtIElzc3VlICMxMTc0NjogRml4IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKCkgdG8gYWNjZXB0IGVsbGlwdGljIGN1cnZlCiAgIHByaXZhdGUga2V5cy4KIAorLSBJc3N1ZSAjNTg2MzogUmV3cml0ZSBCWjJGaWxlIGluIHB1cmUgUHl0aG9uLCBhbmQgYWxsb3cgaXQgdG8gYWNjZXB0CisgIGZpbGUtbGlrZSBvYmplY3RzIHVzaW5nIGEgbmV3IGBgZmlsZW9iamBgIGNvbnN0cnVjdG9yIGFyZ3VtZW50LiAgUGF0Y2ggYnkKKyAgTmFkZWVtIFZhd2RhLgorCistIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFNhbWVFbGVtZW50cyBoYXMgYmVlbiByZW1vdmVkLgorCiAtIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgaW5pdGZzZW5jb2RpbmcoKSB3YXMgbm90CiAgIGNhbGxlZCB5ZXQ6IGRldGVjdCBib290c3RyYXAgKHN0YXJ0dXApIGlzc3VlcyBlYXJsaWVyLgogCistIElzc3VlICMxMTM5MzogQWRkIHRoZSBuZXcgZmF1bHRoYW5kbGVyIG1vZHVsZS4KKwogLSBJc3N1ZSAjMTE2MTg6IEZpeCB0aGUgdGltZW91dCBsb2dpYyBpbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCkgdW5kZXIgV2luZG93cy4KIAorLSBSZW1vdmVkIHRoZSAnc3RyaWN0JyBhcmd1bWVudCB0byBlbWFpbC5wYXJzZXIuUGFyc2VyLCB3aGljaCBoYXMgYmVlbgorICBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAyLjQuCisKIC0gSXNzdWUgIzExMjU2OiBGaXggaW5zcGVjdC5nZXRjYWxsYXJncyBvbiBmdW5jdGlvbnMgdGhhdCB0YWtlIG9ubHkga2V5d29yZAogICBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzExNjk2OiBGaXggSUQgZ2VuZXJhdGlvbiBpbiBtc2lsaWIuCiAKKy0gaXRlcnRvb2xzLmFjY3VtdWxhdGUgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICpmdW5jKiBhcmd1bWVudCBmb3IKKyAgYSB1c2VyLXN1cHBsaWVkIGJpbmFyeSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTE2OTI6IFJlbW92ZSB1bm5lY2Vzc2FyeSBkZW1vIGZ1bmN0aW9ucyBpbiBzdWJwcm9jZXNzIG1vZHVsZS4KKwogLSBJc3N1ZSAjOTY5NjogRml4IGV4Y2VwdGlvbiBpbmNvcnJlY3RseSByYWlzZWQgYnkgeGRybGliLlBhY2tlci5wYWNrX2ludCB3aGVuCiAgIHRyeWluZyB0byBwYWNrIGEgbmVnYXRpdmUgKGluLXJhbmdlKSBpbnRlZ2VyLgogCkBAIC0yMDE2LDcgKzM2ODYsMjYgQEAKIC0gSXNzdWUgIzExNjM1OiBEb24ndCB1c2UgcG9sbGluZyBpbiB3b3JrZXIgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGxhdW5jaGVkIGJ5CiAgIGNvbmN1cnJlbnQuZnV0dXJlcy4KIAotLSBJc3N1ZSAjMTE2Mjg6IGNtcF90b19rZXkgZ2VuZXJhdGVkIGNsYXNzIHNob3VsZCB1c2UgX19zbG90c19fCistIElzc3VlICM2ODExOiBBbGxvdyBpbXBvcnRsaWIgdG8gY2hhbmdlIGEgY29kZSBvYmplY3QncyBjb19maWxlbmFtZSBhdHRyaWJ1dGUKKyAgdG8gbWF0Y2ggdGhlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGN1cnJlbnRseSBpcywgbm90IHdoZXJlIHRoZSBjb2RlCisgIG9iamVjdCBvcmlnaW5hbGx5IGNhbWUgZnJvbS4KKworLSBJc3N1ZSAjODc1NDogSGF2ZSBpbXBvcnRsaWIgdXNlIHRoZSByZXByIG9mIGEgbW9kdWxlIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMuCisKKy0gSXNzdWUgIzExNTkxOiBQcmV2ZW50ICJpbXBvcnQgc2l0ZSIgZnJvbSBtb2RpZnlpbmcgc3lzLnBhdGggd2hlbiBweXRob24KKyAgd2FzIHN0YXJ0ZWQgd2l0aCAtUy4KKworLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IGFkZHMgYSBfc291cmNlIGF0dHJpYnV0ZSB0byB0aGUgZ2VuZXJhdGVkCisgIGNsYXNzLiAgVGhpcyBtYWtlIHRoZSBzb3VyY2UgbW9yZSBhY2Nlc3NpYmxlIHRoYW4gdGhlIG91dGRhdGVkCisgICJ2ZXJib3NlIiBvcHRpb24gd2hpY2ggcHJpbnRzIHRvIHN0ZG91dCBidXQgZG9lc24ndCBtYWtlIHRoZSBzb3VyY2UKKyAgc3RyaW5nIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMTEzNzE6IE1hcmsgZ2V0b3B0IGVycm9yIG1lc3NhZ2VzIGFzIGxvY2FsaXphYmxlLiAgUGF0Y2ggYnkgRmlsaXAKKyAgR3J1c3pjennFhHNraS4KKworLSBJc3N1ZSAjMTEzMzM6IEFkZCBfX3Nsb3RzX18gdG8gY29sbGVjdGlvbnMgQUJDcy4KKworLSBJc3N1ZSAjMTE2Mjg6IGNtcF90b19rZXkgZ2VuZXJhdGVkIGNsYXNzIHNob3VsZCB1c2UgX19zbG90c19fLgogCiAtIElzc3VlICMxMTY2NjogbGV0IGhlbHAoKSBkaXNwbGF5IG5hbWVkIHR1cGxlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMKICAgdGhhdCBzdGFydCB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlLgpAQCAtMjAyNyw2ICszNzE2LDEwIEBACiAtIElzc3VlICM1NTM3OiBGaXggdGltZTJpc296KCkgYW5kIHRpbWUybmV0c2NhcGUoKSBmdW5jdGlvbnMgb2YKICAgaHR0cGxpYi5jb29raWVqYXIgZm9yIGV4cGlyYXRpb24geWVhciBncmVhdGVyIHRoYW4gMjAzOCBvbiAzMi1iaXQgc3lzdGVtcy4KIAorLSBJc3N1ZSAjNDM5MTogVXNlIHByb3BlciBnZXR0ZXh0IHBsdXJhbCBmb3JtcyBpbiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMTExMjc6IFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIHBpY2tsZSBhIHNvY2tldCBvYmplY3QuCisKIC0gSXNzdWUgIzExNTYzOiBDb25uZWN0aW9uOmNsb3NlIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgogICBjbGFzcyB3aGljaCBoZWxwcyBpbiBjbG9zaW5nIG9mIHNvY2tldHMgYWZ0ZXIgY29ubmVjdGlvbiBpcyBvdmVyLiBQYXRjaAogICBjb250cmlidXRpb25zIGJ5IEplZmYgTWNOZWlsIGFuZCBOYWRlZW0gVmF3ZGEuCkBAIC0yMDM3LDYgKzM3MzAsOCBAQAogLSBJc3N1ZSAjNTQyMTogRml4IG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIG9uZSBvZiBzb2NrZXQuc2VuZHRvKCkncwogICBhcmd1bWVudHMgaGFzIHRoZSB3cm9uZyB0eXBlLiAgUGF0Y2ggYnkgTmlraXRhIFZldG9zaGtpbi4KIAorLSBJc3N1ZSAjMTA4MTI6IEFkZCBzb21lIGV4dHJhIHBvc2l4IGZ1bmN0aW9ucyB0byB0aGUgb3MgbW9kdWxlLgorCiAtIElzc3VlICMxMDk3OTogdW5pdHRlc3Qgc3Rkb3V0IGJ1ZmZlcmluZyBub3cgd29ya3Mgd2l0aCBjbGFzcyBhbmQgbW9kdWxlCiAgIHNldHVwIGFuZCB0ZWFyZG93bi4KIApAQCAtMjA0OSw3NSArMzc0NCwxNTQgQEAKICAgcmVsYXRpdmUgdG8gUHl0aG9uMiBhbmQgdGhlIHJlc3VsdCBpcyBub3cgdGhlIHNhbWUgYXMgaXQgd2FzIGluIFB5dGhvbjIuCiAKIC0gSXNzdWUgIzkyOTg6IGJhc2U2NCBib2RpZXMgd2VyZW4ndCBiZWluZyBmb2xkZWQgdG8gbGluZSBsZW5ndGhzIGxlc3MgdGhhbiA3OCwKLSAgd2hpY2ggd2FzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24yLiAgVW5saWtlIFB5dGhvbjIsIHRoZSBsYXN0IGxpbmUgb2YKLSAgdGhlIGZvbGRlZCBib2R5IG5vdyBlbmRzIHdpdGggYSBjYXJyaWFnZSByZXR1cm4uCisgIHdoaWNoIHdhcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMi4gIFVubGlrZSBQeXRob24yLCB0aGUgbGFzdCBsaW5lCisgIG9mIHRoZSBmb2xkZWQgYm9keSBub3cgZW5kcyB3aXRoIGEgY2FycmlhZ2UgcmV0dXJuLgogCiAtIElzc3VlICMxMTU2MDogc2h1dGlsLnVucGFja19hcmNoaXZlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgZm9ybWF0CiAgIHBhcmFtZXRlci4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgogCistIElzc3VlICM1ODcwOiBBZGQgYHN1YnByb2Nlc3MuREVWTlVMTGAgY29uc3RhbnQuCisKIC0gSXNzdWUgIzExMTMzOiBmaXggdHdvIGNhc2VzIHdoZXJlIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgY2FuIHRyaWdnZXIgY29kZQogICBleGVjdXRpb24uIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KIAogLSBJc3N1ZSAjMTE1Njk6IHVzZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBzeXNjdGwgY29tbWFuZCBpbiBtdWx0aXByb2Nlc3NpbmcgdG8KLSAgZW5zdXJlIHRoYXQgaXQgd2lsbCBiZSBmb3VuZCByZWdhcmRsZXNzIG9mIHRoZSBzaGVsbCBQQVRILiBUaGlzIGVuc3VyZXMgdGhhdAotICBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50IHdvcmtzIG9uIGRlZmF1bHQgaW5zdGFsbHMgb2YgTWFjT1NYLgorICBlbnN1cmUgdGhhdCBpdCB3aWxsIGJlIGZvdW5kIHJlZ2FyZGxlc3Mgb2YgdGhlIHNoZWxsIFBBVEguIFRoaXMgZW5zdXJlcworICB0aGF0IG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQgd29ya3Mgb24gZGVmYXVsdCBpbnN0YWxscyBvZiBNYWNPU1guCiAKIC0gSXNzdWUgIzExNTAxOiBkaXN1dGlscy5hcmNoaXZlX3V0aWxzLm1ha2VfemlwZmlsZSBubyBsb25nZXIgZmFpbHMgaWYgemxpYiBpcwogICBub3QgaW5zdGFsbGVkLiBJbnN0ZWFkLCB0aGUgemlwZmlsZS5aSVBfU1RPUkVEIGNvbXByZXNzaW9uIGlzIHVzZWQgdG8gY3JlYXRlCiAgIHRoZSBaaXBGaWxlLiBQYXRjaCBieSBOYXRhbGlhIEIuIEJpZGFydC4KIAorLSBJc3N1ZSAjMTEyODk6IGBzbXRwLlNNVFBgIGNsYXNzIGlzIG5vdyBhIGNvbnRleHQgbWFuYWdlciBzbyBpdCBjYW4gYmUgdXNlZAorICBpbiBhIGB3aXRoYCBzdGF0ZW1lbnQuICBDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2xhLgorCiAtIElzc3VlICMxMTU1NDogRml4ZWQgc3VwcG9ydCBmb3IgSmFwYW5lc2UgY29kZWNzOyBwcmV2aW91c2x5IHRoZSBib2R5IG91dHB1dAogICBlbmNvZGluZyB3YXMgbm90IGRvbmUgaWYgZXVjLWpwIG9yIHNoaWZ0LWppcyB3YXMgc3BlY2lmaWVkIGFzIHRoZSBjaGFyc2V0LgogCi0tIElzc3VlICMxMTUwMDogRml4ZWQgYSBidWcgaW4gdGhlIG9zIHggcHJveHkgYnlwYXNzIGNvZGUgZm9yIGZ1bGx5IHF1YWxpZmllZCBJUAotICBhZGRyZXNzZXMgaW4gdGhlIHByb3h5IGV4Y2VwdGlvbiBsaXN0LgorLSBJc3N1ZSAjMTE1MDk6IFNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGVzdCBjb3ZlcmFnZSBvZiBmaWxlaW5wdXQuCisgIFBhdGNoIGJ5IERlbnZlciBDb25leWJlYXJlIGF0IFB5Q29uIDIwMTEgU3ByaW50cy4KIAotLSBJc3N1ZSAjMTE0OTE6IGRibS5lcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIHdoZW4gZGJtLm9wZW4gaXMgY2FsbGVkIHdpdGggdGhlCi0gICJuIiBhcyB0aGUgZmxhZyBhcmd1bWVudCBhbmQgdGhlIGZpbGUgZXhpc3RzLiBUaGUgYmVoYXZpb3IgbWF0Y2hlcyB0aGUKLSAgZG9jdW1lbnRhdGlvbiBhbmQgZ2VuZXJhbCBsb2dpYy4KKy0gSXNzdWUgIzExNDA3OiBgVGVzdENhc2UucnVuYCByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0IHVzZWQgb3IgY3JlYXRlZC4KKyAgQ29udHJpYnV0ZWQgYnkgSmFuYXRoYW4gSGFydGxleS4KIAotLSBJc3N1ZSAjMTExMzE6IEZpeCBzaWduIG9mIHplcm8gaW4gZGVjaW1hbC5EZWNpbWFsIHBsdXMgYW5kIG1pbnVzIG9wZXJhdGlvbnMKLSAgd2hlbiB0aGUgcm91bmRpbmcgbW9kZSBpcyBST1VORF9GTE9PUi4KKy0gSXNzdWUgIzExNTAwOiBGaXhlZCBhIGJ1ZyBpbiB0aGUgT1MgWCBwcm94eSBieXBhc3MgY29kZSBmb3IgZnVsbHkgcXVhbGlmaWVkCisgIElQIGFkZHJlc3NlcyBpbiB0aGUgcHJveHkgZXhjZXB0aW9uIGxpc3QuCisKKy0gSXNzdWUgIzExNDkxOiBkYm0uZXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCB3aGVuIGRibS5vcGVuIGlzIGNhbGxlZCB3aXRoCisgIHRoZSAibiIgYXMgdGhlIGZsYWcgYXJndW1lbnQgYW5kIHRoZSBmaWxlIGV4aXN0cy4gVGhlIGJlaGF2aW9yIG1hdGNoZXMKKyAgdGhlIGRvY3VtZW50YXRpb24gYW5kIGdlbmVyYWwgbG9naWMuCisKKy0gSXNzdWUgIzExNjI0Nzc6IFBvc3RlbCBQcmluY2lwbGUgYWRqdXN0bWVudCB0byBlbWFpbCBkYXRlIHBhcnNpbmc6IGhhbmRsZSB0aGUKKyAgZmFjdCB0aGF0IHNvbWUgbm9uLWNvbXBsaWFudCBNVUFzIHVzZSAnLicgaW5zdGVhZCBvZiAnOicgaW4gdGltZSBzcGVjcy4KKworLSBJc3N1ZSAjMTExMzE6IEZpeCBzaWduIG9mIHplcm8gaW4gZGVjaW1hbC5EZWNpbWFsIHBsdXMgYW5kIG1pbnVzCisgIG9wZXJhdGlvbnMgd2hlbiB0aGUgcm91bmRpbmcgbW9kZSBpcyBST1VORF9GTE9PUi4KKworLSBJc3N1ZSAjOTkzNTogU3BlZWQgdXAgcGlja2xpbmcgb2YgaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLgogCiAtIElzc3VlICM1NjIyOiBGaXggY3Vyc2VzLndyYXBwZXIgdG8gcmFpc2UgY29ycmVjdCBleGNlcHRpb24gaWYgY3Vyc2VzCiAgIGluaXRpYWxpemF0aW9uIGZhaWxzLgogCistIElzc3VlICMxMTQwODogSW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpLCBvbmx5IGNhbGwgZ2V0dGltZW9mZGF5KCkgd2hlbgorICByZWFsbHkgbmVjZXNzYXJ5LiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCiAtIElzc3VlICMxMTM5MTogV3JpdGluZyB0byBhIG1tYXAgb2JqZWN0IGNyZWF0ZWQgd2l0aAogICBgYG1tYXAuUFJPVF9SRUFEfG1tYXAuUFJPVF9FWEVDYGAgd291bGQgc2VnZmF1bHQgaW5zdGVhZCBvZiByYWlzaW5nIGEKICAgVHlwZUVycm9yLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgogCi0tIElzc3VlICMxMTMwNjogbWFpbGJveCBpbiBjZXJ0YWluIGNhc2VzIGFkYXB0cyB0byBhbiBpbmFiaWxpdHkgdG8gb3BlbiBjZXJ0YWluCi0gIGZpbGVzIGluIHJlYWQtd3JpdGUgbW9kZS4gIFByZXZpb3VzbHkgaXQgZGV0ZWN0ZWQgdGhpcyBieSBjaGVja2luZyBmb3IgRUFDQ0VTLAotICBub3cgaXQgYWxzbyBjaGVja3MgZm9yIEVST0ZTLgorLSBJc3N1ZSAjOTc5NTogYWRkIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBzdXBwb3J0IGZvciBubnRwbGliLk5OVFAgY2xhc3MuCiAKLS0gSXNzdWUgIzExMjY1OiBhc3luY29yZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgRVBJUEUsIEVCQURGIGFuZCBFQUdBSU4gZXJyb3JzIG9uCi0gIGFjY2VwdCgpLCBzZW5kKCkgYW5kIHJlY3YoKS4KKy0gSXNzdWUgIzExMzA2OiBtYWlsYm94IGluIGNlcnRhaW4gY2FzZXMgYWRhcHRzIHRvIGFuIGluYWJpbGl0eSB0byBvcGVuCisgIGNlcnRhaW4gZmlsZXMgaW4gcmVhZC13cml0ZSBtb2RlLiAgUHJldmlvdXNseSBpdCBkZXRlY3RlZCB0aGlzIGJ5CisgIGNoZWNraW5nIGZvciBFQUNDRVMsIG5vdyBpdCBhbHNvIGNoZWNrcyBmb3IgRVJPRlMuCisKKy0gSXNzdWUgIzExMjY1OiBhc3luY29yZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgRVBJUEUsIEVCQURGIGFuZCBFQUdBSU4gZXJyb3JzCisgIG9uIGFjY2VwdCgpLCBzZW5kKCkgYW5kIHJlY3YoKS4KKworLSBJc3N1ZSAjMTEzNzc6IERlcHJlY2F0ZSBwbGF0Zm9ybS5wb3BlbigpIGFuZCByZWltcGxlbWVudCBpdCB3aXRoIG9zLnBvcGVuKCkuCisKKy0gSXNzdWUgIzg1MTM6IE9uIFVOSVgsIHN1YnByb2Nlc3Mgc3VwcG9ydHMgYnl0ZXMgY29tbWFuZCBzdHJpbmcuCisKKy0gSXNzdWUgIzEwODY2OiBBZGQgc29ja2V0LnNldGhvc3RuYW1lKCkuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICMxMTE0MDogTG9jay5yZWxlYXNlKCkgbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvciB3aGVuIGF0dGVtcHRpbmcKKyAgdG8gcmVsZWFzZSBhbiB1bmFjcXVpcmVkIGxvY2ssIGFzIGNsYWltZWQgaW4gdGhlIHRocmVhZGluZyBkb2N1bWVudGF0aW9uLgorICBUaGUgX3RocmVhZC5lcnJvciBleGNlcHRpb24gaXMgbm93IGFuIGFsaWFzIG9mIFJ1bnRpbWVFcnJvci4gIFBhdGNoIGJ5CisgIEZpbGlwIEdydXN6Y3p5xYRza2kuICBQYXRjaCBmb3IgX2R1bW15X3RocmVhZCBieSBBeW1lcmljIEF1Z3VzdGluLgorCistIElzc3VlICM4NTk0OiBmdHBsaWIgbm93IHByb3ZpZGVzIGEgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIHRvIHNwZWNpZnkgd2hpY2gKKyAgKGFkZHJlc3MsIHBvcnQpIHRvIGJpbmQgdG8gYmVmb3JlIGNvbm5lY3RpbmcuCiAKIC0gSXNzdWUgIzExMzI2OiBBZGQgdGhlIG1pc3NpbmcgY29ubmVjdF9leCgpIGltcGxlbWVudGF0aW9uIGZvciBTU0wgc29ja2V0cywKICAgYW5kIG1ha2UgaXQgd29yayBmb3Igbm9uLWJsb2NraW5nIGNvbm5lY3RzLgogCistIElzc3VlICMxMTI5NzogQWRkIGNvbGxlY3Rpb25zLkNoYWluTWFwKCkuCisKKy0gSXNzdWUgIzEwNzU1OiBBZGQgdGhlIHBvc2l4LmZsaXN0ZGlyKCkgZnVuY3Rpb24uICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjNDc2MTogQWRkIHRoZSBgYCphdCgpYGAgZmFtaWx5IG9mIGZ1bmN0aW9ucyAob3BlbmF0KCksIGV0Yy4pIHRvIHRoZQorICBwb3NpeCBtb2R1bGUuICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKwogLSBJc3N1ZSAjNzMyMjogVHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHNvY2tldCdzIGZpbGUtbGlrZSBvYmplY3QgYWZ0ZXIgYSB0aW1lb3V0CiAgIG9jY3VycmVkIG5vdyByYWlzZXMgYW4gZXJyb3IgaW5zdGVhZCBvZiBzaWxlbnRseSBsb3NpbmcgZGF0YS4KIAorLSBJc3N1ZSAjMTEyOTE6IHBvcGxpYi5QT1Agbm8gbG9uZ2VyIHN1cHByZXNzZXMgZXJyb3JzIG9uIHF1aXQoKS4KKworLSBJc3N1ZSAjMTExNzc6IGFzeW5jb3JlJ3MgY3JlYXRlX3NvY2tldCgpIGFyZ3VtZW50cyBjYW4gbm93IGJlIG9taXR0ZWQuCisKKy0gSXNzdWUgIzYwNjQ6IEFkZCBhIGBgZGFlbW9uYGAga2V5d29yZCBhcmd1bWVudCB0byB0aGUgdGhyZWFkaW5nLlRocmVhZAorICBhbmQgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MgY29uc3RydWN0b3JzIGluIG9yZGVyIHRvIG92ZXJyaWRlIHRoZQorICBkZWZhdWx0IGJlaGF2aW91ciBvZiBpbmhlcml0aW5nIHRoZSBkYWVtb25pYyBwcm9wZXJ0eSBmcm9tIHRoZSBjdXJyZW50CisgIHRocmVhZC9wcm9jZXNzLgorCiAtIElzc3VlICMxMDk1NjogQnVmZmVyZWQgSS9PIGNsYXNzZXMgcmV0cnkgcmVhZGluZyBvciB3cml0aW5nIGFmdGVyIGEgc2lnbmFsCiAgIGhhcyBhcnJpdmVkIGFuZCB0aGUgaGFuZGxlciByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCiAKKy0gSXNzdWUgIzEwNzg0OiBOZXcgb3MuZ2V0cHJpb3JpdHkoKSBhbmQgb3Muc2V0cHJpb3JpdHkoKSBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzExMTE0OiBGaXggY2F0YXN0cm9waGljIHBlcmZvcm1hbmNlIG9mIHRlbGwoKSBvbiB0ZXh0IGZpbGVzICh1cAorICB0byAxMDAweCBmYXN0ZXIgaW4gc29tZSBjYXNlcykuICBJdCBpcyBzdGlsbCBvbmUgdG8gdHdvIG9yZGVyIG9mIG1hZ25pdHVkZXMKKyAgc2xvd2VyIHRoYW4gYmluYXJ5IHRlbGwoKS4KKworLSBJc3N1ZSAjMTA4ODI6IEFkZCBvcy5zZW5kZmlsZSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTA4Njg6IEFsbG93IHVzYWdlIG9mIHRoZSByZWdpc3RlciBtZXRob2Qgb2YgYW4gQUJDIGFzIGEgY2xhc3MKKyAgZGVjb3JhdG9yLgorCiAtIElzc3VlICMxMTIyNDogRml4ZWQgYSByZWdyZXNzaW9uIGluIHRhcmZpbGUgdGhhdCBhZmZlY3RlZCB0aGUgZmlsZS1saWtlCiAgIG9iamVjdHMgcmV0dXJuZWQgYnkgVGFyRmlsZS5leHRyYWN0ZmlsZSgpIHJlZ2FyZGluZyBwZXJmb3JtYW5jZSwgbWVtb3J5CiAgIGNvbnN1bXB0aW9uIGFuZCBmYWlsdXJlcyB3aXRoIHRoZSBzdHJlYW0gaW50ZXJmYWNlLgogCistIElzc3VlICMxMDkyNDogQWRkaW5nIHNhbHQgYW5kIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IHRvIGNyeXB0IGxpYnJhcnkuCisgIE1vdmVkIG9sZCBDIHdyYXBwZXIgdG8gX2NyeXB0LCBhbmQgYWRkZWQgYSBQeXRob24gd3JhcHBlciB3aXRoCisgIGVuaGFuY2VkIHNhbHQgZ2VuZXJhdGlvbiBhbmQgc2ltcGxlciBBUEkgZm9yIHBhc3N3b3JkIGdlbmVyYXRpb24uCisKIC0gSXNzdWUgIzExMDc0OiBNYWtlICd0b2tlbml6ZScgc28gaXQgY2FuIGJlIHJlbG9hZGVkLgogCistIElzc3VlICMxMTA4NTogTW92ZWQgY29sbGVjdGlvbnMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGludG8gYSBzZXBhcmF0ZQorICBtb2R1bGUgY2FsbGVkIGNvbGxlY3Rpb25zLmFiYywgZm9sbG93aW5nIHRoZSBwYXR0ZXJuIHVzZWQgYnkgaW1wb3J0bGliLmFiYy4KKyAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGNvbGxlY3Rpb25zCisgIG1vZHVsZS4KKwogLSBJc3N1ZSAjNDY4MTogQWxsb3cgbW1hcCgpIHRvIHdvcmsgb24gZmlsZSBzaXplcyBhbmQgb2Zmc2V0cyBsYXJnZXIgdGhhbgogICA0R0IsIGV2ZW4gb24gMzItYml0IGJ1aWxkcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwsIGFkYXB0ZWQgZm9yCiAgIDMyLWJpdCBXaW5kb3dzLgogCistIElzc3VlICMxMTE2OTogY29tcGlsZWFsbCBtb2R1bGUgdXNlcyByZXByKCkgdG8gZm9ybWF0IGZpbGVuYW1lcyBhbmQgcGF0aHMgdG8KKyAgZXNjYXBlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCBzaG93IHNwYWNlcy4KKwogLSBJc3N1ZSAjMTEwODk6IEZpeCBwZXJmb3JtYW5jZSBpc3N1ZSBsaW1pdGluZyB0aGUgdXNlIG9mIENvbmZpZ1BhcnNlcigpCiAgIHdpdGggbGFyZ2UgY29uZmlnIGZpbGVzLgogCiAtIElzc3VlICMxMDI3NjogRml4IHRoZSByZXN1bHRzIG9mIHpsaWIuY3JjMzIoKSBhbmQgemxpYi5hZGxlcjMyKCkgb24gYnVmZmVycwogICBsYXJnZXIgdGhhbiA0R0IuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCiAKKy0gSXNzdWUgIzExMzg4OiBBZGRlZCBhIGNsZWFyKCkgbWV0aG9kIHRvIE11dGFibGVTZXF1ZW5jZQorCistIElzc3VlICMxMTE3NDogQWRkIGFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlciwgd2hpY2ggdXNlcyB0eXBlIG5hbWVzCisgIGZvciB0aGUgbmFtZXMgb2Ygb3B0aW9uYWwgYW5kIHBvc2l0aW9uYWwgYXJndW1lbnRzIGluIGhlbHAgbWVzc2FnZXMuCisKIC0gSXNzdWUgIzkzNDg6IFJhaXNlIGFuIGVhcmx5IGVycm9yIGlmIGFyZ3BhcnNlIG5hcmdzIGFuZCBtZXRhdmFyIGRvbid0IG1hdGNoLgogCiAtIElzc3VlICM4OTgyOiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXJncGFyc2UgTmFtZXNwYWNlIG9iamVjdC4KQEAgLTIxMjksMjggKzM5MDMsMTM3IEBACiAKIC0gSXNzdWUgIzkzNDc6IEZpeCBmb3JtYXR0aW5nIGZvciB0dXBsZXMgaW4gYXJncGFyc2UgdHlwZT0gZXJyb3IgbWVzc2FnZXMuCiAKKy0gSXNzdWUgIzEyMTkxOiBBZGRlZCBzaHV0aWwuY2hvd24oKSB0byBjaGFuZ2UgdXNlciBhbmQvb3IgZ3JvdXAgb3duZXIgb2YgYQorICBnaXZlbiBwYXRoIGFsc28gc3BlY2lmeWluZyB0aGVpciBuYW1lcy4KKworLSBJc3N1ZSAjMTM5ODg6IFRoZSBfZWxlbWVudHRyZWUgYWNjZWxlcmF0b3IgaXMgdXNlZCB3aGVuZXZlciBhdmFpbGFibGUuCisgIE5vdyB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlIGJlY29tZXMgYSBkZXByZWNhdGVkIGFsaWFzIHRvIEVsZW1lbnRUcmVlLgorCiBCdWlsZAogLS0tLS0KIAorLSBJc3N1ZSAjNjgwNzogUnVuIG1zaXN1cHBvcnQubWFrIGVhcmxpZXIuCisKKy0gSXNzdWUgIzEwNTgwOiBNaW5vciBncmFtbWFyIGNoYW5nZSBpbiBXaW5kb3dzIGluc3RhbGxlci4KKworLSBJc3N1ZSAjMTMzMjY6IENsZWFuIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvcnJlY3RseSBvbiBPcGVuQlNELgorCistIFBFUCAzOTM6IHRoZSBjb25maWd1cmUgb3B0aW9uIC0td2l0aC13aWRlLXVuaWNvZGUgaXMgcmVtb3ZlZC4KKworLSBJc3N1ZSAjMTI4NTI6IFNldCBfWE9QRU5fU09VUkNFIHRvIDcwMCwgaW5zdGVhZCBvZiA2MDAsIHRvIGdldCBQT1NJWCAyMDA4CisgIGZ1bmN0aW9ucyBvbiBPcGVuQlNEIChlLmcuIGZkb3BlbmRpcikuCisKKy0gSXNzdWUgIzExODYzOiBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IHN5c3RlbXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yCisgIChmb2xsb3dpbmcgUEVQIDExKS4gIFRoZXNlIHN5c3RlbXMgYXJlIHN5c3RlbXMgdXNpbmcgTWFjaCBDIFRocmVhZHMsCisgIFN1bk9TIGxpZ2h0d2VpZ2h0IHByb2Nlc3NlcywgR05VIHB0aCB0aHJlYWRzIGFuZCBJUklYIHRocmVhZHMuCisKKy0gSXNzdWUgIzg3NDY6IENvcnJlY3QgZmF1bHR5IGNvbmZpZ3VyZSBjaGVja3Mgc28gdGhhdCBvcy5jaGZsYWdzKCkgYW5kCisgIG9zLmxjaGZsYWdzKCkgYXJlIG9uY2UgYWdhaW4gYnVpbHQgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgdGhlc2UKKyAgZnVuY3Rpb25zIChCU0QgYW5kIE9TIFgpLiAgQWxzbyBhZGQgbmV3IHN0YXQgZmlsZSBmbGFncyBmb3IgT1MgWAorICAoVUZfSElEREVOIGFuZCBVRl9DT01QUkVTU0VEKS4KKworLSBJc3N1ZSAjMTA2NDU6IEluc3RhbGxpbmcgUHl0aG9uIG5vIGxvbmdlciBjcmVhdGVzIGEKKyAgUHl0aG9uLVguWS5aLXB5WC5ZLmVnZy1pbmZvIGZpbGUgaW4gdGhlIGxpYi1keW5sb2FkIGRpcmVjdG9yeS4KKworLSBEbyBub3QgYWNjaWRlbnRhbGx5IGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHNxbGl0ZS5oIHR3aWNlIHdoZW4KKyAgYnVpbGRpbmcgc3FsaXRlMy4KKworLSBJc3N1ZSAjMTEyMTc6IEZvciA2NC1iaXQvMzItYml0IE1hYyBPUyBYIHVuaXZlcnNhbCBmcmFtZXdvcmsgYnVpbGRzLAorICBlbnN1cmUgIm1ha2UgaW5zdGFsbCIgY3JlYXRlcyBzeW1saW5rcyBpbiAtLXByZWZpeCBiaW4gZm9yIHRoZSAiLTMyIgorICBmaWxlcyBpbiB0aGUgZnJhbWV3b3JrIGJpbiBkaXJlY3RvcnkgbGlrZSB0aGUgaW5zdGFsbGVyIGRvZXMuCisKKy0gSXNzdWUgIzExMzQ3OiBVc2UgLS1uby1hcy1uZWVkZWQgd2hlbiBsaW5raW5nIGxpYnB5dGhvbjMuc28uCisKIC0gSXNzdWUgIzExNDExOiBGaXggJ21ha2UgREVTVERJUj0nIHdpdGggYSByZWxhdGl2ZSBkZXN0aW5hdGlvbi4KIAotLSBJc3N1ZSAjMTEyNjg6IFByZXZlbnQgTWFjIE9TIFggSW5zdGFsbGVyIGZhaWx1cmUgaWYgRG9jdW1lbnRhdGlvbiBwYWNrYWdlIGhhZAotICBwcmV2aW91c2x5IGJlZW4gaW5zdGFsbGVkLgorLSBJc3N1ZSAjMTEyNjg6IFByZXZlbnQgTWFjIE9TIFggSW5zdGFsbGVyIGZhaWx1cmUgaWYgRG9jdW1lbnRhdGlvbgorICBwYWNrYWdlIGhhZCBwcmV2aW91c2x5IGJlZW4gaW5zdGFsbGVkLgorCistIElzc3VlICMxMTQ5NTogT1NGIHN1cHBvcnQgaXMgZWxpbWluYXRlZC4gSXQgd2FzIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMi4KKwogCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzExNzE4OiBJRExFJ3Mgb3BlbiBtb2R1bGUgZGlhbG9nIGNvdWxkbid0IGZpbmQgdGhlIF9faW5pdF9fLnB5IGZpbGUgaW4KLSAgYSBwYWNrYWdlLgorLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKKyAgZmlsZSBpbiBhIHBhY2thZ2UuCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCistIElzc3VlICMxNDA1MzogcGF0Y2hjaGVjay5weSAoIm1ha2UgcGF0Y2hjaGVjayIpIG5vdyB3b3JrcyB3aXRoIE1RIHBhdGNoZXMuCisgIFBhdGNoIGJ5IEZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kuCisKKy0gSXNzdWUgIzEzOTMwOiAydG8zIGlzIG5vdyBhYmxlIHRvIHdyaXRlIGl0cyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKKyAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKKyAgc3VmZml4LiAgU2VlIGl0cyBuZXcgLW8sIC1XIGFuZCAtLWFkZC1zdWZmaXggb3B0aW9ucy4gIFRoaXMgbWFrZXMgaXQgbW9yZQorICB1c2VmdWwgaW4gbWFueSBhdXRvbWF0ZWQgY29kZSB0cmFuc2xhdGlvbiB3b3JrZmxvd3MuCisKKy0gSXNzdWUgIzEzNjI4OiBweXRob24tZ2RiLnB5IGlzIG5vdyBhYmxlIHRvIHJldHJpZXZlIG1vcmUgZnJhbWVzIGluIHRoZSBQeXRob24KKyAgdHJhY2ViYWNrIGlmIFB5dGhvbiBpcyBvcHRpbWl6ZWQuCisKKy0gSXNzdWUgIzExOTk2OiBsaWJweXRob24gKGdkYiksIHJlcGxhY2UgInB5LWJ0IiBjb21tYW5kIGJ5ICJweS1idC1mdWxsIiBhbmQKKyAgYWRkIGEgc21hcnRlciAicHktYnQiIGNvbW1hbmQgcHJpbnRpbmcgYSBjbGFzc2ljIFB5dGhvbiB0cmFjZWJhY2suCisKIC0gSXNzdWUgIzExMTc5OiBNYWtlIGNjYmVuY2ggd29yayB1bmRlciBQeXRob24gMy4xIGFuZCAyLjcgYWdhaW4uCiAKKy0gSXNzdWUgIzEwNjM5OiByZWluZGVudC5weSBubyBsb25nZXIgY29udmVydHMgbmV3bGluZXMgYW5kIHdpbGwgcmFpc2UKKyAgYW4gZXJyb3IgaWYgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGEgZmlsZSB3aXRoIG1peGVkIG5ld2xpbmVzLgorICAiLS1uZXdsaW5lIiBvcHRpb24gYWRkZWQgdG8gc3BlY2lmeSBuZXcgbGluZSBjaGFyYWN0ZXIuCisKIEV4dGVuc2lvbiBNb2R1bGVzCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCisgIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjOTk3NTogc29ja2V0OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBmbG93aW5mbyBhbmQgc2NvcGVfaWQuIFBhdGNoIGJ5CisgIFZpbG1vcyBOZWJlaGFqLgorCistIElzc3VlICM3Nzc3OiBzb2NrZXQ6IEFkZCBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzIChQRl9SRFMpIHN1cHBvcnQuCisKKy0gSXNzdWUgIzEzMTU5OiBGaWxlSU8gYW5kIEJaMkNvbXByZXNzb3IvQloyRGVjb21wcmVzc29yIG5vdyB1c2UgYSBsaW5lYXItdGltZQorICBidWZmZXIgZ3Jvd3RoIHN0cmF0ZWd5IGluc3RlYWQgb2YgYSBxdWFkcmF0aWMtdGltZSBvbmUuCisKKy0gSXNzdWUgIzEwMTQxOiBzb2NrZXQ6IEFkZCBTb2NrZXRDQU4gKFBGX0NBTikgc3VwcG9ydC4gSW5pdGlhbCBwYXRjaCBieQorICBNYXR0aGlhcyBGdWNocywgdXBkYXRlZCBieSBUaWFnbyBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCisgIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKKyAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KKworLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgorCistIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQorICBUaG9tYXMgSmFyb3NjaC4KKworLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCisgIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgorCistIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAorICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgorCistIElzc3VlICMxMTcyNzExOiBBZGQgJ2xvbmcgbG9uZycgc3VwcG9ydCB0byB0aGUgYXJyYXkgbW9kdWxlLgorICBJbml0aWFsIHBhdGNoIGJ5IE9yZW4gVGlyb3NoIGFuZCBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjaworICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgorCistIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCisgIE9wZW5JbmRpYW5hL0lsbHVtb3MuCisKKy0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKKyAgYSBzdHJpbmcuCisKKy0gSXNzdWUgIzExMjQxOiBzdWJjbGFzc2VzIG9mIGN0eXBlcy5BcnJheSBjYW4gbm93IGJlIHN1YmNsYXNzZWQuCisKKy0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KKyAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCisKKy0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKKyAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQorICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgorCiAtIElzc3VlICMxMjA1MTogRml4IHNlZ2ZhdWx0IGluIGpzb24uZHVtcHMoKSB3aGlsZSBlbmNvZGluZyBoaWdobHktbmVzdGVkCiAgIG9iamVjdHMgdXNpbmcgdGhlIEMgYWNjZWxlcmF0aW9ucy4KIApAQCAtMjE2MywzNSArNDA0NiwxODQgQEAKIFRlc3RzCiAtLS0tLQogCistIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKKworLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KKworLSBJc3N1ZSAjMTM3MjU6IEZpeCByZWdydGVzdCB0byByZWNvZ25pemUgdGhlIGRvY3VtZW50ZWQgLWQgZmxhZy4KKyAgUGF0Y2ggYnkgRXJubyBUdWtpYS4KKworLSBJc3N1ZSAjMTMzMDQ6IFNraXAgdGVzdCBjYXNlIGlmIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXNhYmxlZCAoLXMgb3IKKyAgUFlUSE9OTk9VU0VSU0lURSkuICAoUGF0Y2ggYnkgQ2FybCBNZXllcikKKworLSBJc3N1ZSAjNTY2MTogQWRkIGEgdGVzdCBmb3IgRUNPTk5SRVNFVC9FUElQRSBoYW5kbGluZyB0byB0ZXN0X2FzeW5jb3JlLiBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMTMyMTg6IEZpeCB0ZXN0X3NzbCBmYWlsdXJlcyBvbiBEZWJpYW4vVWJ1bnR1LgorCistIFJlLWVuYWJsZSBsaWIydG8zJ3MgdGVzdF9wYXJzZXIucHkgdGVzdHMsIHRob3VnaCB3aXRoIGFuIGV4cGVjdGVkIGZhaWx1cmUKKyAgKHNlZSBpc3N1ZSAxMzEyNSkuCisKKy0gSXNzdWUgIzEyNjU2OiBBZGQgdGVzdHMgZm9yIElQdjYgYW5kIFVuaXggc29ja2V0cyB0byB0ZXN0X2FzeW5jb3JlLgorCistIElzc3VlICM2NDg0OiBBZGQgdW5pdCB0ZXN0cyBmb3IgbWFpbGNhcCBtb2R1bGUgKHBhdGNoIGJ5IEdyZWdvcnkgTm9maSkKKworLSBJc3N1ZSAjMTE2NTE6IEltcHJvdmUgdGhlIE1ha2VmaWxlIHRlc3QgdGFyZ2V0cyB0byBydW4gbW9yZSBvZiB0aGUgdGVzdCBzdWl0ZQorICBtb3JlIHF1aWNrbHkuIFRoZSAtLW11bHRpcHJvY2VzcyBvcHRpb24gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgcmVkdWNpbmcKKyAgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHRlc3RzLiAibWFrZSB0ZXN0IiBhbmQgIm1ha2UgcXVpY2t0ZXN0IgorICBub3cgaW5jbHVkZSBzb21lIHJlc291cmNlLWludGVuc2l2ZSB0ZXN0cywgYnV0IG5vIGxvbmdlciBydW4gdGhlIHRlc3Qgc3VpdGUKKyAgdHdpY2UgdG8gY2hlY2sgZm9yIGJ1Z3MgaW4gLnB5YyBnZW5lcmF0aW9uLiBUb29scy9zY3JpcHRzL3J1bl90ZXN0LnB5IHByb3ZpZGVzCisgIGFuIGVhc3kgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5IHRvIHJ1biB0ZXN0IHN1aXRlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHBhY2thZ2luZyBtb2R1bGUgY2FuIG5vdyBydW4gZnJvbSBhbgorICBpbnN0YWxsZWQgUHl0aG9uLgorCistIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKKyAgUHl0aG9uLgorCistIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCisgIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcworICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCisgIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCisgIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCisgIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcworICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgorCistIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KKyAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQorCistIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKKyAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCisKKy0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQorICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCisgIGluIHRlc3RfdGVsbmV0bGliLnB5LgorCistIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKKyAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKKyAgV2ViIHNpdGUuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cworICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0CisgIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCisKKy0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQorICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCisgIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KKworLSBJc3N1ZSAjMTE1MTI6IEFkZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBjZ2l0YiBtb2R1bGUuIFBhdGNoIGJ5IFJvYmJpZSBDbGVtb25zLgorCistIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKKyAgdGVzdHMuCisKKy0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKKyAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KKworLSBJc3N1ZSAjMTI0Njk6IFJ1biB3YWtldXAgYW5kIHBlbmRpbmcgc2lnbmFsIHRlc3RzIGluIGEgc3VicHJvY2VzcyB0byBydW4gdGhlCisgIHRlc3QgaW4gYSBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAorICBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MuCisKKy0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KKyAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAorICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgorCistIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKKyAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQorICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgorCistIElzc3VlICMxMjE0MTogSW5zdGFsbCBjb3BpZXMgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0CisgIHRlc3RfYnVpbGRfZXh0IG9mIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2NvbW1hbmRfYnVpbGRfZXh0IG9mCisgIHRlc3RfcGFja2FnaW5nIGFyZSBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuCisgIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQgZGlyZWN0b3J5LgorCistIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLgorICBQYXRjaCBieSBHYXJyZXR0IENvb3Blci4KKworLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOQorICAyLjggKyAgb24gTWFjIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQorCistIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKKyAgaXNvMjAyMl9rcikuCisKKy0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKKyAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCisKKy0gSXNzdWUgIzEyMDQxOiBNYWtlIHRlc3Rfd2FpdDMgbW9yZSByb2J1c3QuCisKIC0gSXNzdWUgIzExODczOiBDaGFuZ2UgcmVnZXggaW4gdGVzdF9jb21waWxlYWxsIHRvIGZpeCBvY2Nhc2lvbmFsIGZhaWx1cmVzIHdoZW4KICAgd2hlbiB0aGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHRlbXBvcmFyeSBwYXRoIGhhcHBlbmVkIHRvIG1hdGNoIHRoZSByZWdleC4KIAorLSBJc3N1ZSAjMTE5NTg6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0Ii4KKyAgUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjODQwNywgIzExODU5OiBGaXggdGVzdHMgb2YgdGVzdF9pbyB1c2luZyB0aHJlYWRzIGFuZCBhbiBhbGFybTogdXNlCisgIHB0aHJlYWRfc2lnbWFzaygpIHRvIGVuc3VyZSB0aGF0IHRoZSBTSUdBTFJNIHNpZ25hbCBpcyByZWNlaXZlZCBieSB0aGUgbWFpbgorICB0aHJlYWQuCisKKy0gSXNzdWUgIzExODExOiBGYWN0b3Igb3V0IGRldGVjdGlvbiBvZiBJUHY2IHN1cHBvcnQgb24gdGhlIGN1cnJlbnQgaG9zdAorICBhbmQgbWFrZSBpdCBhdmFpbGFibGUgYXMgYGB0ZXN0LnN1cHBvcnQuSVBWNl9FTkFCTEVEYGAuICBQYXRjaCBieQorICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzEwOTE0OiBBZGQgYSBtaW5pbWFsIGVtYmVkZGluZyB0ZXN0IHRvIHRlc3RfY2FwaS4KIAotLSBJc3N1ZSAjMTE3OTA6IEZpeCBzcG9yYWRpYyBmYWlsdXJlcyBpbgotICB0ZXN0X211bHRpcHJvY2Vzc2luZy5XaXRoUHJvY2Vzc2VzVGVzdENvbmRpdGlvbi4KKy0gSXNzdWUgIzExMjIzOiBTa2lwIHRlc3RfbG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIGFuZAorICB0ZXN0X3Jsb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgb2YgdGVzdF90aHJlYWRzaWduYWxzIGlmIGEgdGhyZWFkIGxvY2sgaXMKKyAgaW1wbGVtZW50ZWQgdXNpbmcgYSBQT1NJWCBtdXRleCBhbmQgYSBQT1NJWCBjb25kaXRpb24gdmFyaWFibGUuIEEgUE9TSVgKKyAgY29uZGl0aW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZS5nLiBvbiBMaW51eCwgdGhlCisgIGZ1dGV4IHN5c3RlbSBjYWxsIGlzIHJlc3RhcnRlZCkuCisKKy0gSXNzdWUgIzExNzkwOiBGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCiAKIC0gRml4IHBvc3NpYmxlICJmaWxlIGFscmVhZHkgZXhpc3RzIiBlcnJvciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGluIHBhcmFsbGVsLgogCiAtIElzc3VlICMxMTcxOTogRml4IG1lc3NhZ2UgYWJvdXQgdW5leHBlY3RlZCB0ZXN0X21zaWxpYiBza2lwIG9uIG5vbi1XaW5kb3dzCiAgIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgogCistIElzc3VlICMxMTcyNzogQWRkIGEgLS10aW1lb3V0IG9wdGlvbiB0byByZWdydGVzdDogaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgorICBUSU1FT1VUIHNlY29uZHMsIGR1bXBzIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgYW5kIGV4aXRzLgorCiAtIElzc3VlICMxMTY1MzogZml4IC1XIHdpdGggLWogaW4gcmVncnRlc3QuCiAKKy0gVGhlIGVtYWlsIHRlc3Qgc3VpdGUgbm93IGxpdmVzIGluIHRoZSBMaWIvdGVzdC90ZXN0X2VtYWlsIHBhY2thZ2UuICBUaGUgdGVzdAorICBoYXJuZXNzIGNvZGUgaGFzIGFsc28gYmVlbiBtb2Rlcm5pemVkIHRvIGFsbG93IHVzZSBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMuCisKKy0gcmVncnRlc3Qgbm93IGRpc2NvdmVycyB0ZXN0IHBhY2thZ2VzIGFzIHdlbGwgYXMgdGVzdCBtb2R1bGVzLgorCiAtIElzc3VlICMxMTU3NzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIGJpbmhleC5weS4gUGF0Y2ggYnkgQXJrYWR5IEtvcGx5YXJvdi4KIAorLSBOZXcgdGVzdF9jcmFzaGVycyBhZGRlZCB0byBleGVyY2lzZSB0aGUgc2NyaXB0cyBpbiB0aGUgTGliL3Rlc3QvY3Jhc2hlcnMKKyAgZGlyZWN0b3J5IGFuZCBjb25maXJtIHRoZXkgZmFpbCBhcyBleHBlY3RlZAorCiAtIElzc3VlICMxMTU3ODogYWRkZWQgdGVzdCBmb3IgdGhlIHRpbWVpdCBtb2R1bGUuICBQYXRjaCBieSBNaWNoYWVsIEhlbnJ5LgogCiAtIElzc3VlICMxMTUwMzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHBvc2l4cGF0aC5weS4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgogCi0tIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQotICBBcmxlbi4KKy0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weSwgaW5jcmVhc2VzIGdyYW51bGFyaXR5IG9mCisgIHN0cmluZy5Gb3JtYXR0ZXIgdGVzdHMuIEluaXRpYWwgcGF0Y2ggYnkgQWxpY2lhIEFybGVuLgogCiAtIElzc3VlICMxMTU0ODogSW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHRoZSBzaHV0aWwgbW9kdWxlLiBQYXRjaCBieQogICBFdmFuIERhbmRyZWEuCiAKIC0gSXNzdWUgIzExNTU0OiBSZWFjdGl2YXRlZCB0ZXN0X2VtYWlsX2NvZGVjcy4KIAorLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKKyAgQXJsZW4KKwogLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzczp0ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCiAgIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aCBpcyBpbmFjY2Vzc2libGUuCiAKQEAgLTIyMDQsNTQwNyArNDIzNiw3MiBAQAogLSBJc3N1ZSAjOTkzMTogRml4IGhhbmdzIGluIEdVSSB0ZXN0cyB1bmRlciBXaW5kb3dzIGluIGNlcnRhaW4gY29uZGl0aW9ucy4KICAgUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCiAKKy0gSXNzdWUgIzEwNTEyOiBQcm9wZXJseSBjbG9zZSBzb2NrZXRzIHVuZGVyIHRlc3QudGVzdF9jZ2kuCisKKy0gSXNzdWUgIzEwOTkyOiBNYWtlIHRlc3RzIHBhc3MgdW5kZXIgY292ZXJhZ2UuCisKIC0gSXNzdWUgIzEwODI2OiBQcmV2ZW50IHNwb3JhZGljIGZhaWx1cmUgaW4gdGVzdF9zdWJwcm9jZXNzIG9uIFNvbGFyaXMgZHVlCiAgIHRvIG9wZW4gZG9vciBmaWxlcy4KIAorLSBJc3N1ZSAjMTA5OTA6IFByZXZlbnQgdGVzdHMgZnJvbSBjbG9iYmVyaW5nIGEgc2V0IHRyYWNlIGZ1bmN0aW9uLgorCitDLUFQSQorLS0tLS0KKworLSBBZGQgUHlPYmplY3RfR2VuZXJpY0dldERpY3QgYW5kIFB5T2JqZWN0X0dlbmVyaVNldERpY3QuIFRoZXkgYXJlIGdlbmVyaWMKKyAgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvciBvZiBDCisgIHR5cGVzLgorCistIElzc3VlICMxMzcyNzogQWRkIDMgbWFjcm9zIHRvIGFjY2VzcyBQeURhdGVUaW1lX0RlbHRhIG1lbWJlcnM6CisgIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMsIFB5RGF0ZVRpbWVfREVMVEFfR0VUX1NFQ09ORFMsCisgIFB5RGF0ZVRpbWVfREVMVEFfR0VUX01JQ1JPU0VDT05EUy4KKworLSBJc3N1ZSAjMTA1NDI6IEFkZCA0IG1hY3JvcyB0byB3b3JrIHdpdGggc3Vycm9nYXRlczogUHlfVU5JQ09ERV9JU19TVVJST0dBVEUsCisgIFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUsIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURSwKKyAgUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMuCisKKy0gSXNzdWUgIzEyNzI0OiBBZGQgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEIG1hY3JvIGZvciByZXR1cm5pbmcgTm90SW1wbGVtZW50ZWQuCisKKy0gUFlfUEFUQ0hMRVZFTF9SRVZJU0lPTiBoYXMgYmVlbiByZW1vdmVkLCBzaW5jZSBpdCdzIG1lYW5pbmdsZXNzIHdpdGgKKyAgTWVyY3VyaWFsLgorCistIElzc3VlICMxMjE3MzogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsIGlzIG5vdyBgY29uc3QKKyAgY2hhciAqYCBpbnN0ZWFkIG9mIGBjaGFyICpgLgorCistIElzc3VlICMxMjM4MDogUHlBcmdfUGFyc2VUdXBsZSBub3cgYWNjZXB0cyBhIGJ5dGVhcnJheSBmb3IgdGhlICdjJyBmb3JtYXQuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTM0OTg6IENsYXJpZnkgZG9jcyBvZiBvcy5tYWtlZGlycygpJ3MgZXhpc3Rfb2sgYXJndW1lbnQuICBEb25lIHdpdGgKKyAgZ3JlYXQgbmF0aXZlLXNwZWFrZXIgaGVscCBmcm9tIFIuIERhdmlkIE11cnJheS4KKworLSBJc3N1ZXMgIzEzNDkxIGFuZCAjMTM5OTU6IEZpeCBtYW55IGVycm9ycyBpbiBzcWxpdGUzIGRvY3VtZW50YXRpb24uCisgIEluaXRpYWwgcGF0Y2ggZm9yICMxMzQ5MSBieSBKb2hhbm5lcyBWb2dlbC4KKworLSBJc3N1ZSAjMTM0MDI6IERvY3VtZW50IGFic29sdXRlbmVzcyBvZiBzeXMuZXhlY3V0YWJsZS4KKworLSBJc3N1ZSAjMTM4ODM6IFBZVEhPTkNBU0VPSyBhbHNvIHdvcmtzIG9uIE9TIFguCisKKy0gSXNzdWUgIzkwMjE6IEFkZCBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvcHkgbW9kdWxlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzYwMDU6IEV4YW1wbGVzIGluIHRoZSBzb2NrZXQgbGlicmFyeSBkb2N1bWVudGF0aW9uIHVzZSBzZW5kYWxsLCB3aGVyZQorICByZWxldmFudCwgaW5zdGVhZCBzZW5kIG1ldGhvZC4KKworLSBJc3N1ZSAjMTI3OTg6IFVwZGF0ZWQgdGhlIG1pbWV0eXBlcyBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldworICBDIEFQSSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTM1MTM6IEZpeCBpby5JT0Jhc2UgZG9jdW1lbnRhdGlvbiB0byBjb3JyZWN0bHkgbGluayB0byB0aGUKKyAgaW8uSU9CYXNlLnJlYWRsaW5lIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjM3OiBSZW9yZ2FuaXNlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbiB0byBlbXBoYXNpc2UgY29udmVuaWVuY2UKKyAgZnVuY3Rpb25zIGFuZCB0aGUgbW9zdCBjb21tb25seSBuZWVkZWQgYXJndW1lbnRzIHRvIFBvcGVuLgorCistIElzc3VlICMxMzE0MTogRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIHNvY2tldHNlcnZlciBleGFtcGxlcy4KKwogLSBJc3N1ZSAjMTE4MTg6IEZpeCB0ZW1wZmlsZSBleGFtcGxlcyBmb3IgUHl0aG9uIDMuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMC1GZWItMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzExMjQ5OiBGaXggcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2luZyB0aGUgbGltaXRlZCBBUEkuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMTIyMjogRml4IG5vbi1mcmFtZXdvcmsgc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gTWFjIE9TIFguCi0KLS0gSXNzdWUgIzExMTg0OiBGaXggbGFyZ2UtZmlsZSBzdXBwb3J0IG9uIEFJWC4KLQotLSBJc3N1ZSAjOTQxMzQ2OiBGaXggYnJva2VuIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkIG9uIEFJWC4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDcwOTogQWRkIHVwZGF0ZWQgQUlYIG5vdGVzIGluIE1pc2MvUkVBRE1FLkFJWC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMy1GZWItMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzExMTM0OiBBZGQgbWlzc2luZyBmaWVsZHMgdG8gdHlwZXNsb3RzLmguCi0KLS0gSXNzdWUgIzExMTM1OiBSZW1vdmUgcmVkdW5kYW50IGRvYyBmaWVsZCBmcm9tIFB5VHlwZV9TcGVjLgotCi0tIElzc3VlICMxMTA2NzogQWRkIFB5VHlwZV9HZXRGbGFncywgdG8gc3VwcG9ydCBQeVVuaWNvZGVfQ2hlY2sgaW4gdGhlIGxpbWl0ZWQKLSAgQUJJLgotCi0tIElzc3VlICMxMTExODogRml4IGJvZ3VzIGV4cG9ydCBvZiBOb25lIGluIHB5dGhvbjMuZGxsLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzExMTE2OiBhbnkgZXJyb3IgZHVyaW5nIGFkZGl0aW9uIG9mIGEgbWVzc2FnZSB0byBhIG1haWxib3ggbm93IGNhdXNlcyBhCi0gIHJvbGxiYWNrLCBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIG1haWxib3ggcGFydGlhbGx5IG1vZGlmaWVkLgotCi0tIElzc3VlICMxMTEzMjogRml4IHBhc3Npbmcgb2YgIm9wdGltaXplIiBwYXJhbWV0ZXIgd2hlbiByZWN1cnNpbmcgaW4KLSAgY29tcGlsZWFsbC5jb21waWxlX2RpcigpLgotCi0tIElzc3VlICMxMTExMDogRml4IGEgcG90ZW50aWFsIGRlY3JlZiBvZiBhIE5VTEwgaW4gc3FsaXRlMy4KLQotLSBJc3N1ZSAjODI3NTogRml4IHBhc3Npbmcgb2YgY2FsbGJhY2sgYXJndW1lbnRzIHdpdGggY3R5cGVzIHVuZGVyIFdpbjY0LiAgUGF0Y2gKLSAgYnkgU3RhbiBNaWhhaS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzExMDc5OiBUaGUgL0FwcGxpY2F0aW9ucy9QeXRob24geC54IGZvbGRlciBjcmVhdGVkIGJ5IHRoZSBNYWMgT1MgWAotICBpbnN0YWxsZXJzIG5vdyBpbmNsdWRlcyBhIGxpbmsgdG8gdGhlIGluc3RhbGxlZCBkb2N1bWVudGF0aW9uIGFuZCBubyBsb25nZXIKLSAgaW5jbHVkZXMgYW4gRXh0cmFzIGRpcmVjdG9yeS4gIFRoZSBUb29scyBkaXJlY3RvcnkgaXMgbm93IGluc3RhbGxlZCBpbiB0aGUKLSAgZnJhbWV3b3JrIHVuZGVyIHNoYXJlL2RvYy4KLQotLSBJc3N1ZSAjMTExMjE6IEZpeCBidWlsZGluZyB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEwOTcxOiB0ZXN0X3ppcGltcG9ydF9zdXBwb3J0IGlzIG9uY2UgYWdhaW4gY29tcGF0aWJsZSB3aXRoIHRoZSByZWZsZWFrCi0gIGh1bnRlciBmZWF0dXJlIG9mIHRlc3QucmVncnRlc3QuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMzAtSmFuLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDQ1MTogbWVtb3J5dmlldyBvYmplY3RzIGNvdWxkIGFsbG93IHRvIG11dGF0ZSBhIHJlYWRhYmxlIGJ1ZmZlci4KLSAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM5MTI0OiBtYWlsYm94IG5vdyBhY2NlcHRzIGJpbmFyeSBpbnB1dCBhbmQgcmVhZHMgYW5kIHdyaXRlcyBtYWlsYm94Ci0gIGZpbGVzIGluIGJpbmFyeSBtb2RlLCB1c2luZyB0aGUgZW1haWwgcGFja2FnZSdzIGJpbmFyeSBzdXBwb3J0IHRvIHBhcnNlCi0gIGFyYml0cmFyeSBlbWFpbCBtZXNzYWdlcy4gIFN0cmluZ0lPIGFuZCB0ZXh0IGZpbGUgaW5wdXQgaXMgZGVwcmVjYXRlZCwKLSAgYW5kIHN0cmluZyBpbnB1dCBmYWlscyBlYXJseSBpZiBub24tQVNDSUkgY2hhcmFjdGVycyBhcmUgdXNlZCwgd2hlcmUKLSAgcHJldmlvdXNseSBpdCB3b3VsZCBmYWlsIHdoZW4gdGhlIGVtYWlsIHdhcyBwcm9jZXNzZWQgaW4gYSBsYXRlciBzdGVwLgotCi0tIElzc3VlICMxMDg0NTogTWl0aWdhdGUgdGhlIGluY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHRoZSBtdWx0aXByb2Nlc3NpbmcKLSAgbW9kdWxlIG9uIFdpbmRvd3MgYW5kIHRoZSB1c2Ugb2YgcGFja2FnZSwgemlwZmlsZSBvciBkaXJlY3RvcnkgZXhlY3V0aW9uCi0gIGJ5IHNwZWNpYWwgY2FzaW5nIG1haW4gbW9kdWxlcyB0aGF0IGFjdHVhbGx5ICphcmUqIGNhbGxlZCBfX21haW5fXy5weS4KLQotLSBJc3N1ZSAjMTEwNDU6IFByb3RlY3QgbG9nZ2luZyBjYWxsIGFnYWluc3QgTm9uZSBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTEwNTI6IENvcnJlY3QgSURMRSBtZW51IGFjY2VsZXJhdG9ycyBvbiBNYWMgT1MgWCBmb3IgU2F2ZQotICBjb21tYW5kcy4KLQotLSBJc3N1ZSAjMTEwNTM6IEZpeCBJRExFICJTeW50YXggRXJyb3IiIHdpbmRvd3MgdG8gYmVoYXZlIGFzIGluIDIueCwKLSAgcHJldmVudGluZyBhIGNvbmZ1c2luZyBodW5nIGFwcGVhcmFuY2Ugb24gT1MgWCB3aXRoIHRoZSB3aW5kb3dzCi0gIG9ic2N1cmVkLgotCi0tIElzc3VlICMxMDk0MDogV29ya2Fyb3VuZCBhbiBJRExFIGhhbmcgb24gTWFjIE9TIFggMTAuNiB3aGVuIHVzaW5nIHRoZQotICBtZW51IGFjY2VsZXJhdG9ycyBmb3IgT3BlbiBNb2R1bGUsIEdvIHRvIExpbmUsIGFuZCBOZXcgSW5kZW50IFdpZHRoLgotICBUaGUgYWNjZWxlcmF0b3JzIHN0aWxsIHdvcmsgYnV0IG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIG1lbnUgaXRlbXMuCi0KLS0gSXNzdWUgIzEwOTg5OiBGaXggYSBjcmFzaCBvbiBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhOb25lLCBUcnVlKS4KLQotLSBJc3N1ZSAjMTEwMjA6IENvbW1hbmQtbGluZSBweWNsYnIgd2FzIGJyb2tlbiBiZWNhdXNlIG9mIG1pc3NpbmcgMi10by0zCi0gIGNvbnZlcnNpb24uCi0KLS0gSXNzdWUgIzExMDE5OiBGaXhlZCBCeXRlc0dlbmVyYXRvciBzbyB0aGF0IGl0IGNvcnJlY3RseSBoYW5kbGVzIGEgTWVzc2FnZQotICB3aXRoIGEgTm9uZSBib2R5LgotCi0tIElzc3VlICMxMTAxNDogTWFrZSAnZmlsdGVyJyBhcmd1bWVudCBpbiB0YXJmaWxlLlRhcmZpbGUuYWRkKCkgaW50byBhCi0gIGtleXdvcmQtb25seSBhcmd1bWVudC4gIFRoZSBwcmVjZWRpbmcgcG9zaXRpb25hbCBhcmd1bWVudCB3YXMgZGVwcmVjYXRlZCwKLSAgc28gaXQgbWFkZSBubyBzZW5zZSB0byBhZGQgZmlsdGVyIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTEwMDQ6IFJlcGFpcmVkIGVkZ2UgY2FzZSBpbiBkZXF1ZS5jb3VudCgpLgotCi0tIElzc3VlICMxMDk3NDogSURMRSBubyBsb25nZXIgY3Jhc2hlcyBpZiBpdHMgcmVjZW50IGZpbGVzIGxpc3QgaW5jbHVkZXMgZmlsZXMKLSAgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGVpciBwYXRoIG5hbWVzLgotCi0tIEhhdmUgaGFzaGxpYi5hbGdvcml0aG1zX2F2YWlsYWJsZSBhbmQgaGFzaGxpYi5hbGdvcml0aG1zX2d1YXJhbnRlZWQgYm90aAotICByZXR1cm4gc2V0cyBpbnN0ZWFkIG9mIG9uZSByZXR1cm5pbmcgYSB0dXBsZSBhbmQgdGhlIG90aGVyIGEgZnJvemVuc2V0LgotCi0tIElzc3VlICMxMDk4NzogRml4IHRoZSByZWN1cnNpb24gbGltaXQgaGFuZGxpbmcgaW4gdGhlIF9waWNrbGUgbW9kdWxlLgotCi0tIElzc3VlICMxMDk4MzogRml4IHNldmVyYWwgYnVncyBtYWtpbmcgdHVubmVsIHJlcXVlc3RzIGluIGh0dHAuY2xpZW50LgotCi0tIElzc3VlICMxMDk1NTogemlwaW1wb3J0IHVzZXMgQVNDSUkgZW5jb2RpbmcgaW5zdGVhZCBvZiBjcDQzNyB0byBkZWNvZGUKLSAgZmlsZW5hbWVzLCBhdCBib290c3RyYXAsIGlmIHRoZSBjb2RlYyByZWdpc3RyeSBpcyBub3QgcmVhZHkgeWV0LiBJdCBpcyBzdGlsbAotICBwb3NzaWJsZSB0byBoYXZlIG5vbi1BU0NJSSBmaWxlbmFtZXMgdXNpbmcgdGhlIFVuaWNvZGUgZmxhZyAoVVRGLTggZW5jb2RpbmcpCi0gIGZvciBhbGwgZmlsZSBlbnRyaWVzIGluIHRoZSBaSVAgZmlsZS4KLQotLSBJc3N1ZSAjMTA5NDk6IEltcHJvdmVkIHJvYnVzdG5lc3Mgb2Ygcm90YXRpbmcgZmlsZSBoYW5kbGVycy4KLQotLSBJc3N1ZSAjMTA5NTU6IEZpeCBhIHBvdGVudGlhbCBjcmFzaCB3aGVuIHRyeWluZyB0byBtbWFwKCkgYSBmaWxlIHBhc3QgaXRzCi0gIGxlbmd0aC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzEwODk4OiBBbGxvdyBjb21waWxpbmcgdGhlIHBvc2l4IG1vZHVsZSB3aGVuIHRoZSBDIGxpYnJhcnkgZGVmaW5lcwotICBhIHN5bWJvbCBuYW1lZCBGU1RBVC4KLQotLSBJc3N1ZSAjMTA5ODA6IHRoZSBIVFRQIHNlcnZlciBub3cgZW5jb2RlcyBoZWFkZXJzIHdpdGggaXNvLTg4NTktMSAobGF0aW4xKQotICBlbmNvZGluZy4gIFRoaXMgaXMgdGhlIHByZWZlcnJlZCBlbmNvZGluZyBvZiBQRVAgMzMzMyBhbmQgdGhlIGJhc2UgZW5jb2RpbmcKLSAgb2YgSFRUUCAxLjEuCi0KLS0gVG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiBIVFRQIHNlcnZlciwgdGhlIEhUVFAgY2xpZW50IGxpYnJhcnkgbm93IGFsc28KLSAgZW5jb2RlcyBoZWFkZXJzIHdpdGggaXNvLTg4NTktMSAobGF0aW4xKSBlbmNvZGluZy4gIEl0IHdhcyBhbHJlYWR5IGRvaW5nCi0gIHRoYXQgZm9yIGluY29taW5nIGhlYWRlcnMgd2hpY2ggbWFrZXMgdGhpcyBiZWhhdmlvdXIgbm93IGNvbnNpc3RlbnQgaW4KLSAgYm90aCBpbmNvbWluZyBhbmQgb3V0Z29pbmcgZGlyZWN0aW9uLgotCi0tIElzc3VlICM5NTA5OiBhcmdwYXJzZSBub3cgcHJvcGVybHkgaGFuZGxlcyBJT0Vycm9ycyByYWlzZWQgYnkKLSAgYXJncGFyc2UuRmlsZVR5cGUuCi0KLS0gSXNzdWUgIzEwOTYxOiBUaGUgbmV3IHB5ZG9jIHNlcnZlciBub3cgYmV0dGVyIGhhbmRsZXMgZXhjZXB0aW9ucyByYWlzZWQKLSAgZHVyaW5nIHJlcXVlc3QgaGFuZGxpbmcuCi0KLS0gSXNzdWUgIzEwNjgwOiBGaXggbXV0dWFsbHkgZXhjbHVzaXZlIGFyZ3VtZW50cyBmb3IgYXJndW1lbnQgZ3JvdXBzIGluCi0gIGFyZ3BhcnNlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTEwNTQ6IEFsbG93IE1hYyBPUyBYIGluc3RhbGxlciBidWlsZHMgdG8gYWdhaW4gd29yayBvbiAxMC41IHdpdGgKLSAgdGhlIHN5c3RlbS1wcm92aWRlZCBQeXRob24uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIFJlbGVhc2UgQ2FuZGlkYXRlIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE2LUphbi0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA4ODk6IHJhbmdlIGluZGV4aW5nIGFuZCBzbGljaW5nIG5vdyB3b3JrcyBjb3JyZWN0bHkgb24gcmFuZ2VzIHdpdGgKLSAgYSBsZW5ndGggdGhhdCBleGNlZWRzIHN5cy5tYXhzaXplLgotCi0tIElzc3VlICMxMDg5MjogRG9uJ3Qgc2VnZmF1bHQgd2hlbiB0cnlpbmcgdG8gZGVsZXRlIF9fYWJzdHJhY3RtZXRob2RzX18gZnJvbSBhCi0gIGNsYXNzLgotCi0tIElzc3VlICM4MDIwOiBBdm9pZCBhIGNyYXNoIHdoZXJlIHRoZSBzbWFsbCBvYmplY3RzIGFsbG9jYXRvciB3b3VsZCByZWFkCi0gIG5vbi1QeXRob24gbWFuYWdlZCBtZW1vcnkgd2hpbGUgaXQgaXMgYmVpbmcgbW9kaWZpZWQgYnkgYW5vdGhlciB0aHJlYWQuICBQYXRjaAotICBieSBNYXR0IEJhbmR5LgotCi0tIElzc3VlICMxMDg0MTogT24gV2luZG93cywgc2V0IHRoZSBiaW5hcnkgbW9kZSBvbiBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYW5kIGFsbAotICBpby5GaWxlSU8gb2JqZWN0cyAodG8gbm90IHRyYW5zbGF0ZSBuZXdsaW5lcywgXHJcbiA8PT4gXG4pLiAgVGhlIFB5dGhvbiBwYXJzZXIKLSAgdHJhbnNsYXRlcyBuZXdsaW5lcyAoXHJcbiA9PiBcbikuCi0KLS0gUmVtb3ZlIGJ1ZmZlciBBUEkgZnJvbSBzdGFibGUgQUJJIGZvciBub3csIHNlZSAjMTAxODEuCi0KLS0gSXNzdWUgIzg2NTE6IFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucyByYWlzZSBhbiBPdmVyZmxvd0Vycm9yIGlmIHRoZSBmaWxlCi0gIGRvZXNuJ3QgaGF2ZSBQWV9TU0laRV9UX0NMRUFOIGRlZmluZSBhbmQgdGhlIHNpemUgZG9lc24ndCBmaXQgaW4gYW4gaW50Ci0gIChsZW5ndGggYmlnZ2VyIHRoYW4gMl4zMS0xIGJ5dGVzKS4KLQotLSBJc3N1ZSAjOTAxNSwgIzk2MTE6IEZpbGVJTy5yZWFkaW50bygpLCBGaWxlSU8ud3JpdGUoKSwgb3Mud3JpdGUoKSBhbmQKLSAgc3RkcHJpbnRlci53cml0ZSgpIGNsYW1wIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM4Mjc4OiBPbiBXaW5kb3dzIGFuZCB3aXRoIGEgTlRGUyBmaWxlc3lzdGVtLCBvcy5zdGF0KCkgYW5kIG9zLnV0aW1lKCkKLSAgY2FuIG5vdyBoYW5kbGUgZGF0ZXMgYWZ0ZXIgMjAzOC4KLQotLSBJc3N1ZSAjMTA3ODA6IFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKCkgYW5kCi0gIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKCkgZGVjb2RlIHRoZSBmaWxlbmFtZSBmcm9tIHRoZQotICBmaWxlc3lzdGVtIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTguCi0KLS0gSXNzdWUgIzEwNzc5OiBQeUVycl9XYXJuRXhwbGljaXQoKSBkZWNvZGVzIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTguCi0KLS0gQWRkIHN5cy5mbGFncyBhdHRyaWJ1dGUgZm9yIHRoZSBuZXcgLXEgY29tbWFuZC1saW5lIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTE1MDY6IFRyeWluZyB0byBhc3NpZ24gdG8gYSBieXRlcyBsaXRlcmFsIHNob3VsZCByZXN1bHQgaW4gYQotICBTeW50YXhFcnJvci4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMDkxNjogbW1hcCBzaG91bGQgbm90IHNlZ2ZhdWx0IHdoZW4gYSBmaWxlIGlzIG1hcHBlZCB1c2luZyAwIGFzIGxlbmd0aAotICBhbmQgYSBub24temVybyBvZmZzZXQsIGFuZCBhbiBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIGZpbGUgaXMgbWFkZQotICAoSW5kZXhFcnJvciBpcyByYWlzZWQgaW5zdGVhZCkuICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjMTAxNTQsICMxMDA5MDogY2hhbmdlIHRoZSBub3JtYWxpemF0aW9uIG9mIFVURi04IHRvICJVVEYtOCIgaW5zdGVhZAotICBvZiAiVVRGOCIgaW4gdGhlIGxvY2FsZSBtb2R1bGUgYXMgdGhlIGxhdHRlciBpcyBub3Qgc3VwcG9ydGVkIE1hY09TWCBhbmQgT3BlbkJTRC4KLQotLSBJc3N1ZSAjMTA2ODQ6IHNodXRpbC5tb3ZlIHVzZWQgdG8gZGVsZXRlIGEgZm9sZGVyIG9uIGNhc2UgaW5zZW5zaXRpdmUKLSAgZmlsZXN5c3RlbXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBuYW1lIHdoZXJlIHRoZSBzYW1lIGV4Y2VwdAotICBmb3IgdGhlIGNhc2UuCi0KLS0gSXNzdWUgIzEwOTA3OiBXYXJuIE9TIFggMTAuNiBJRExFIHVzZXJzIHRvIHVzZSBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LCByYXRoZXIKLSAgdGhhbiB0aGUgY3VycmVudGx5IHByb2JsZW1hdGljIEFwcGxlLXN1cHBsaWVkIG9uZSwgd2hlbiBydW5uaW5nIHdpdGggdGhlCi0gIDY0LS8zMi1iaXQgaW5zdGFsbGVyIHZhcmlhbnQuCi0KLS0gSXNzdWUgIzQ5NTM6IGNnaS5GaWVsZFN0b3JhZ2UgYW5kIGNnaS5wYXJzZSgpIHBhcnNlIHRoZSByZXF1ZXN0IGFzIGJ5dGVzLCBub3QKLSAgYXMgdW5pY29kZSwgYW5kIGFjY2VwdCBiaW5hcnkgZmlsZXMuIEFkZCBlbmNvZGluZyBhbmQgZXJyb3JzIGF0dHJpYnV0ZXMgdG8KLSAgY2dpLkZpZWxkU3RvcmFnZS4gUGF0Y2ggd3JpdHRlbiBieSBQaWVycmUgUXVlbnRlbCAod2l0aCBtYW55IGlucHV0cyBieSBHbGVubgotICBMaW5kZXJtYW4pLgotCi0tIEFkZCBlbmNvZGluZyBhbmQgZXJyb3JzIGFyZ3VtZW50cyB0byB1cmxsaWIucGFyc2VfcXMoKSBhbmQgdXJsbGliLnBhcnNlX3FzbCgpLgotCi0tIElzc3VlICMxMDg5OTogTm8gZnVuY3Rpb24gdHlwZSBhbm5vdGF0aW9ucyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIFJlbW92ZWQKLSAgZnVuY3Rpb24gdHlwZSBhbm5vdGF0aW9ucyBmcm9tIF9weWlvLnB5LgotCi0tIElzc3VlICMxMDg3NTogVXBkYXRlIFJlZ3VsYXIgRXhwcmVzc2lvbiBIT1dUTzsgcGF0Y2ggYnkgJ1NpbGVudEdob3N0Jy4KLQotLSBJc3N1ZSAjMTA4NzI6IFRoZSByZXByKCkgb2YgVGV4dElPV3JhcHBlciBvYmplY3RzIG5vdyBpbmNsdWRlcyB0aGUgbW9kZQotICBpZiBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzEwODY5OiBGaXhlZCBidWcgd2hlcmUgYXN0LmluY3JlbWVudF9saW5lbm8gbW9kaWZpZWQgdGhlIHJvb3Qgbm9kZQotICB0d2ljZS4KLQotLSBJc3N1ZSAjNTg3MTogZW1haWwuaGVhZGVyLkhlYWRlci5lbmNvZGUgbm93IHJhaXNlcyBhbiBlcnJvciBpZiBhbnkKLSAgY29udGludWF0aW9uIGxpbmUgaW4gdGhlIGZvcm1hdHRlZCB2YWx1ZSBoYXMgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBhbmQgbG9va3MKLSAgbGlrZSBhIGhlYWRlci4gIFNpbmNlIEdlbmVyYXRvciB1c2VzIEhlYWRlciB0byBmb3JtYXQgYWxsIGhlYWRlcnMsIHRoaXMgY2hlY2sKLSAgaXMgbWFkZSBmb3IgYWxsIGhlYWRlcnMgaW4gYW55IHNlcmlhbGl6ZWQgbWVzc2FnZSBhdCBzZXJpYWxpemF0aW9uIHRpbWUuICBUaGlzCi0gIHByb3ZpZGVzIHByb3RlY3Rpb24gYWdhaW5zdCBoZWFkZXIgaW5qZWN0aW9uIGF0dGFja3MuCi0KLS0gSXNzdWUgIzEwODU5OiBNYWtlIGBgY29udGV4dGxpYi5HZW5lcmF0b3JDb250ZXh0TWFuYWdlcmBgIG9mZmljaWFsbHkKLSAgcHJpdmF0ZSBieSByZW5hbWluZyBpdCB0byBgYF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlcmBgLgotCi0tIElzc3VlICMxMDA0MjogRml4ZWQgdGhlIHRvdGFsX29yZGVyaW5nIGRlY29yYXRvciB0byBoYW5kbGUgY3Jvc3MtdHlwZQotICBjb21wYXJpc29ucyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLgotCi0tIElzc3VlICMxMDY4NjogdGhlIGVtYWlsIHBhY2thZ2Ugbm93IDpyZmM6YDIwNDdgXCAtZW5jb2RlcyBoZWFkZXJzIHdpdGgKLSAgbm9uLUFTQ0lJIGJ5dGVzIChwYXJzZWQgYnkgYSBCeXRlc1BhcnNlcikgd2hlbiBkb2luZyBjb252ZXJzaW9uIHRvIDdiaXQtY2xlYW4KLSAgcHJlc2VudGF0aW9uLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0aGVtIHdpdGggP3MuCi0KLS0gZW1haWwuaGVhZGVyLkhlYWRlciB3YXMgaW5jb3JyZWN0bHkgZW5jb2RpbmcgZm9sZGluZyB3aGl0ZXNwYWNlIHdoZW4KLSAgcmZjMjA0Ny1lbmNvZGluZyBoZWFkZXIgdmFsdWVzIHdpdGggZW1iZWRkZWQgbmV3bGluZXMsIGxlYXZpbmcgdGhlbSB3aXRob3V0Ci0gIGZvbGRpbmcgd2hpdGVzcGFjZS4gIEl0IG5vdyB1c2VzIHRoZSBjb250aW51YXRpb25fd3MsIGFzIGl0IGRvZXMgZm9yCi0gIGNvbnRpbnVhdGlvbiBsaW5lcyB0aGF0IGl0IGNyZWF0ZXMgaXRzZWxmLgotCi0tIElzc3VlICMxNzc3NDEyLCAjMTA4Mjc6IENoYW5nZWQgdGhlIHJ1bGVzIGZvciAyLWRpZ2l0IHllYXJzLiBUaGUKLSAgdGltZS5hc2N0aW1lKCksIHRpbWUuY3RpbWUoKSBhbmQgdGltZS5zdHJmdGltZSgpIGZ1bmN0aW9ucyB3aWxsIG5vdyBmb3JtYXQKLSAgYW55IHllYXIgd2hlbiBgYHRpbWUuYWNjZXB0MmR5ZWFyYGAgaXMgRmFsc2UgYW5kIHdpbGwgYWNjZXB0IHllYXJzID49IDEwMDAKLSAgb3RoZXJ3aXNlLiBgYHRpbWUubWt0aW1lYGAgYW5kIGBgdGltZS5zdHJmdGltZWBgIG5vdyBhY2NlcHQgZnVsbCByYW5nZQotICBzdXBwb3J0ZWQgYnkgdGhlIE9TLiBXaXRoIFZpc3VhbCBTdHVkaW8gb3Igb24gU29sYXJpcywgdGhlIHllYXIgaXMgbGltaXRlZCB0bwotICB0aGUgcmFuZ2UgWzE7IDk5OTldLiBDb252ZXJzaW9uIG9mIDItZGlnaXQgeWVhcnMgdG8gNC1kaWdpdCBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICM3ODU4OiBSYWlzZSBhbiBlcnJvciBwcm9wZXJseSB3aGVuIG9zLnV0aW1lKCkgZmFpbHMgdW5kZXIgV2luZG93cwotICBvbiBhbiBleGlzdGluZyBmaWxlLgotCi0tIElzc3VlICMzODM5OiB3c2dpcmVmIHNob3VsZCBub3Qgb3ZlcnJpZGUgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgc2V0IGJ5Ci0gIHRoZSBhcHBsaWNhdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkgQ2xvdmlzIEZhYnJpY2lvLgotCi0tIElzc3VlICMxMDQ5MjogYmRiLkJkYi5ydW4oKSBvbmx5IHRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb2RlLCBub3QgdGhlCi0gIGNvbXBpbGF0aW9uIChpZiB0aGUgaW5wdXQgaXMgYSBzdHJpbmcpLgotCi0tIElzc3VlICM3OTk1OiBXaGVuIGNhbGxpbmcgYWNjZXB0KCkgb24gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQsIHRoZSByZXR1cm5lZAotICBzb2NrZXQgaXMgbm93IGFsd2F5cyBibG9ja2luZywgcmVnYXJkbGVzcyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KLQotLSBJc3N1ZSAjMTA3NTY6IGF0ZXhpdCBub3JtYWxpemVzIHRoZSBleGNlcHRpb24gYmVmb3JlIGRpc3BsYXlpbmcgaXQuIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTA3OTA6IGVtYWlsLmhlYWRlci5IZWFkZXIuYXBwZW5kJ3MgY2hhcnNldCBsb2dpYyBub3cgd29ya3MgY29ycmVjdGx5Ci0gIGZvciBjaGFyc2V0cyB3aG9zZSBvdXRwdXQgY29kZWMgaXMgZGlmZmVyZW50IGZyb20gaXRzIGlucHV0IGNvZGVjLgotCi0tIElzc3VlICMxMDgxOTogU29ja2V0SU8ubmFtZSBwcm9wZXJ0eSByZXR1cm5zIC0xIHdoZW4gaXRzIGNsb3NlZCwgaW5zdGVhZCBvZgotICByYWlzaW5nIGEgVmFsdWVFcnJvciwgdG8gZml4IHJlcHIoKS4KLQotLSBJc3N1ZSAjODY1MDogemxpYi5jb21wcmVzcygpIGFuZCB6bGliLmRlY29tcHJlc3MoKSByYWlzZSBhbiBPdmVyZmxvd0Vycm9yIGlmCi0gIHRoZSBpbnB1dCBidWZmZXIgbGVuZ3RoIGRvZXNuJ3QgZml0IGludG8gYW4gdW5zaWduZWQgaW50IChsZW5ndGggYmlnZ2VyIHRoYW4KLSAgMl4zMi0xIGJ5dGVzKS4KLQotLSBJc3N1ZSAjNjY0MzogUmVpbml0aWFsaXplIGxvY2tzIGhlbGQgd2l0aGluIHRoZSB0aHJlYWRpbmcgbW9kdWxlIGFmdGVyIGZvcmsgdG8KLSAgYXZvaWQgYSBwb3RlbnRpYWwgcmFyZSBkZWFkbG9jayBvciBjcmFzaCBvbiBzb21lIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTA4MDYsIGlzc3VlICM5OTA1OiBGaXggc3VicHJvY2VzcyBwaXBlcyB3aGVuIHNvbWUgb2YgdGhlIHN0YW5kYXJkIGZpbGUKLSAgZGVzY3JpcHRvcnMgKDAsIDEsIDIpIGFyZSBjbG9zZWQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzCi0gIExhZ2Vyd2FsbC4KLQotLSBgdW5pdHRlc3QuVGVzdENhc2VgIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCBhIG1ldGhvZCBuYW1lOyBmb3Igc2ltcGxlcgotICBleHBsb3JhdGlvbiBmcm9tIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMTA3OTg6IFJlamVjdCBzdXBwb3J0aW5nIGNvbmN1cnJlbnQuZnV0dXJlcyBpZiB0aGUgc3lzdGVtIGhhcyB0b28KLSAgZmV3IFBPU0lYIHNlbWFwaG9yZXMuCi0KLS0gSXNzdWUgIzEwODA3OiBSZW1vdmUgYmFzZTY0LCBiejIsIGhleCwgcXVvcHJpLCByb3QxMywgdXUgYW5kIHpsaWIgY29kZWNzIGZyb20KLSAgdGhlIGNvZGVjIGFsaWFzZXMuIFRoZXkgYXJlIHN0aWxsIGFjY2Vzc2libGUgdmlhIGNvZGVjcy5sb29rdXAoKS4KLQotLSBJc3N1ZSAjMTA4MDE6IEluIHppcGZpbGUsIHN1cHBvcnQgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIGhlYWRlciBhbmQgdGhlCi0gIGZpbGVuYW1lcy4KLQotLSBJc3N1ZSAjNjI4NTogSURMRSBubyBsb25nZXIgY3Jhc2hlcyBvbiBtaXNzaW5nIGhlbHAgZmlsZTsgcGF0Y2ggYnkgU2NvdHQKLSAgRGF2aWQgRGFuaWVscy4KLQotLSBGaXggY29sbGVjdGlvbnMuT3JkZXJlZERpY3Quc2V0ZGVmYXVsdCgpIHNvIHRoYXQgaXQgd29ya3MgaW4gc3ViY2xhc3NlcyB0aGF0Ci0gIGRlZmluZSBfX21pc3NpbmdfXygpLgotCi0tIElzc3VlICMxMDc4NjogdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIgZGVmYXVsdCBzdHJlYW0gbm8gbG9uZ2VyIGJvdW5kIGF0IGltcG9ydAotICB0aW1lLiBgc3lzLnN0ZGVycmAgbm93IGxvb2tlZCB1cCBhdCBpbnN0YW50aWF0aW9uIHRpbWUuICBGaXggY29udHJpYnV0ZWQgYnkKLSAgTWFyayBSb2RkeS4KLQotLSBJc3N1ZSAjMTA3NTM6IENoYXJhY3RlcnMgJzsnLCAnPScgYW5kICcsJyBpbiB0aGUgUEFUSF9JTkZPIGVudmlyb25tZW50IHZhcmlhYmxlCi0gIHdvbid0IGJlIHF1b3RlZCB3aGVuIHRoZSBVUkkgaXMgY29uc3RydWN0ZWQgYnkgdGhlIHdzZ2lyZWYudXRpbCdzIHJlcXVlc3RfdXJpCi0gIG1ldGhvZC4gQWNjb3JkaW5nIHRvIFJGQyAzOTg2LCB0aGVzZSBjaGFyYWN0ZXJzIGNhbiBiZSBhIHBhcnQgb2YgcGFyYW1zIGluCi0gIFBBVEggY29tcG9uZW50IG9mIFVSSSBhbmQgbmVlZCBub3QgYmUgcXVvdGVkLgotCi0tIElzc3VlICMxMDczODogRml4IHdlYmJyb3dzZXIuT3BlcmEucmFpc2Vfb3B0cy4KLQotLSBJc3N1ZSAjOTgyNDogU2ltcGxlQ29va2llIG5vdyBlbmNvZGVzICwgYW5kIDsgaW4gdmFsdWVzIHRvIGNhdGVyIHRvIGhvdwotICBicm93c2VycyBhY3R1YWxseSBwYXJzZSBjb29raWVzLgotCi0tIElzc3VlICM5MzMzOiBvcy5zeW1saW5rIG5vdyBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiB1c2VyIHByaXZpbGVnZXMuICBUaGUKLSAgZnVuY3Rpb24gbm93IHJhaXNlcyBPU0Vycm9yIG9uIFdpbmRvd3MgPj02LjAgd2hlbiB0aGUgdXNlciBpcyB1bmFibGUgdG8gY3JlYXRlCi0gIHN5bWJvbGljIGxpbmtzLiBYUCBhbmQgMjAwMyBzdGlsbCByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLgotCi0tIElzc3VlICMxMDc4Mzogc3RydWN0LnBhY2soKSBubyBsb25nZXIgaW1wbGljaXRseSBlbmNvZGVzIHVuaWNvZGUgdG8gVVRGLTguCi0KLS0gSXNzdWUgIzEwNzMwOiBBZGQgU1ZHIG1pbWUgdHlwZXMgdG8gbWltZXR5cGVzIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA3Njg6IE1ha2UgdGhlIFRraW50ZXIgU2Nyb2xsZWRUZXh0IHdpZGdldCB3b3JrIGFnYWluLgotCi0tIElzc3VlICMxMDc3NzogRml4ICJkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIiBidWcgaW4KLSAgRWxlbWVudFRyZWUgcmVnaXN0ZXJfbmFtZXNwYWNlKCkuCi0KLS0gSXNzdWUgIzEwNjI2OiB0ZXN0X2xvZ2dpbmcgbm93IHByZXNlcnZlcyBsb2dnZXIgZGlzYWJsZWQgc3RhdGVzLgotCi0tIElzc3VlICMxMDc3NDogdGVzdF9sb2dnaW5nIG5vdyByZW1vdmVzIHRlbXAgZmlsZXMgY3JlYXRlZCBkdXJpbmcgdGVzdHMuCi0KLS0gSXNzdWUgIzUyNTgvIzEwNjQyOiBpZiBzaXRlLnB5IGVuY291bnRlcnMgYSAucHRoIGZpbGUgdGhhdCBnZW5lcmF0ZXMgYW4gZXJyb3IsCi0gIGl0IG5vdyBwcmludHMgdGhlIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRyYWNlYmFjayB0byBzdGRlcnIgYW5kIHNraXBzCi0gIHRoZSByZXN0IG9mIHRoYXQgaW5kaXZpZHVhbCBmaWxlLCBpbnN0ZWFkIG9mIHN0b3BwaW5nIHByb2Nlc3NpbmcgZW50aXJlbHkuCi0KLS0gSXNzdWUgIzEwNzYzOiBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgY2xvc2VzIHN0ZG91dCBhbmQgc3RkZXJyIGlmIGJvdGggYXJlCi0gIHBpcGVzIChidWcgc3BlY2lmaWMgdG8gV2luZG93cykuCi0KLS0gSXNzdWUgIzE2OTM1NDY6IGZpeCBlbWFpbC5tZXNzYWdlIFJGQyAyMjMxIHBhcmFtZXRlciBlbmNvZGluZyB0byBiZSBpbiBiZXR0ZXIKLSAgY29tcGxpYW5jZSAobm8gInMgYXJvdW5kIGVuY29kZWQgdmFsdWVzKS4KLQotLSBJbXByb3ZlZCB0aGUgZGlmZiBtZXNzYWdlIGluIHRoZSB1bml0dGVzdCBtb2R1bGUncyBhc3NlcnRDb3VudEVxdWFsKCkuCi0KLS0gSXNzdWUgIzExNTUzNjI6IGVtYWlsLnV0aWxzLnBhcnNlZGF0ZV90eiBub3cgaGFuZGxlcyBhIG1pc3Npbmcgc3BhY2UgYmVmb3JlCi0gIHRoZSAnLScgb2YgYSB0aW1lem9uZSBmaWVsZCBhcyB3ZWxsIGFzIGJlZm9yZSBhICcrJy4KLQotLSBJc3N1ZSAjNDg3MTogVGhlIHppcGZpbGUgbW9kdWxlIG5vdyBnaXZlcyBhIG1vcmUgdXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYKLSAgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSBhIHN0cmluZyB0byBzcGVjaWZ5IHRoZSBhcmNoaXZlIHBhc3N3b3JkLgotCi0tIElzc3VlICMxMDc1MDogVGhlIGBgcmF3YGAgYXR0cmlidXRlIG9mIGJ1ZmZlcmVkIElPIG9iamVjdHMgaXMgbm93IHJlYWQtb25seS4KLQotLSBEZXByZWNhdGVkIGFzc2VydERpY3RDb250YWluc1N1YnNldCgpIGluIHRoZSB1bml0dGVzdCBtb2R1bGUuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxMDkxMzogRGVwcmVjYXRlIG1pc2xlYWRpbmcgZnVuY3Rpb25zIFB5RXZhbF9BY3F1aXJlTG9jaygpIGFuZAotICBQeUV2YWxfUmVsZWFzZUxvY2soKS4gIFRoZSB0aHJlYWQtc3RhdGUgYXdhcmUgQVBJcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgotCi0tIElzc3VlICMxMDMzMzogUmVtb3ZlIGFuY2llbnQgR0MgQVBJLCB3aGljaCBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbgotICAyLjIuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMDg0MzogVXBkYXRlIHRoaXJkLXBhcnR5IGxpYnJhcnkgdmVyc2lvbnMgdXNlZCBpbiBPUyBYIDMyLWJpdAotICBpbnN0YWxsZXIgYnVpbGRzOiBiemlwMiAxLjAuNiwgcmVhZGxpbmUgNi4xLjIsIFNRTGl0ZSAzLjcuNCAod2l0aCBGVFMzL0ZUUzQKLSAgYW5kIFJUUkVFIGVuYWJsZWQpLCBhbmQgbmN1cnNlc3cgNS41ICh3aWRlLWNoYXIgc3VwcG9ydCBlbmFibGVkKS4KLQotLSBJc3N1ZSAjMTA4MjA6IEZpeCBPUyBYIGZyYW1ld29yayBpbnN0YWxscyB0byBzdXBwb3J0IHZlcnNpb24tc3BlY2lmaWMKLSAgc2NyaXB0cyAoIzEwNjc5KS4KLQotLSBJc3N1ZSAjNzcxNjogVW5kZXIgU29sYXJpcywgZG9uJ3QgYXNzdW1lIGV4aXN0ZW5jZSBvZiAvdXNyL3hwZzQvYmluL2dyZXAgaW4KLSAgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnV0IHVzZSAkR1JFUCBpbnN0ZWFkLiAgUGF0Y2ggYnkgRmFiaWFuIEdyb2ZmZW4uCi0KLS0gSXNzdWUgIzEwNDc1OiBEb24ndCBoYXJkY29kZSBjb21waWxlcnMgZm9yIExEU0hBUkVEL0xEQ1hYU0hBUkVEIG9uIE5ldEJTRAotICBhbmQgRHJhZ29uRmx5IEJTRC4gIFBhdGNoIGJ5IE5pY29sYXMgSm9seS4KLQotLSBJc3N1ZSAjMTA2Nzk6IFRoZSAiaWRsZSIsICJweWRvYyIgYW5kICIydG8zIiBzY3JpcHRzIGFyZSBub3cgaW5zdGFsbGVkIHdpdGgKLSAgYSB2ZXJzaW9uLXNwZWNpZmljIHN1ZmZpeCBvbiAibWFrZSBhbHRpbnN0YWxsIi4KLQotLSBJc3N1ZSAjMTA2NTU6IEZpeCB0aGUgYnVpbGQgb24gUG93ZXJQQyBvbiBMaW51eCB3aXRoIEdDQyB3aGVuIGJ1aWxkaW5nIHdpdGgKLSAgdGltZXN0YW1wIHByb2ZpbGluZyAoLS13aXRoLXRzYyk6IHRoZSBwcmVwcm9jZXNzb3IgdGVzdCBmb3IgdGhlIFBvd2VyUEMKLSAgc3VwcG9ydCBub3cgbG9va3MgZm9yICJfX3Bvd2VycGNfXyIgYXMgd2VsbCBhcyAiX19wcGNfXyI6IHRoZSBsYXR0ZXIgc2VlbXMgdG8KLSAgb25seSBiZSBwcmVzZW50IG9uIE9TIFg7IHRoZSBmb3JtZXIgaXMgdGhlIGNvcnJlY3Qgb25lIGZvciBMaW51eCB3aXRoIEdDQy4KLQotLSBJc3N1ZSAjMTA5OTogRml4IHRoZSBidWlsZCBvbiBNYWNPU1ggd2hlbiBidWlsZGluZyBhIGZyYW1ld29yayB3aXRoIHB5ZGVidWcKLSAgdXNpbmcgR0NDIDQuMC4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwODQzOiBJbnN0YWxsIHRoZSBUb29scyBkaXJlY3Rvcnkgb24gT1MgWCBpbiB0aGUgYXBwbGljYXRpb25zIEV4dHJhcwotICAoL0FwcGxpY2F0aW9ucy9QeXRob24gMy5uL0V4dHJhcy8pIHdoZXJlIHRoZSBEZW1vIGRpcmVjdG9yeSBoYWQgcHJldmlvdXMgYmVlbgotICBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzc5NjI6IFRoZSBEZW1vIGRpcmVjdG9yeSBpcyBnb25lLiAgTW9zdCBvZiB0aGUgb2xkIGFuZCB1bm1haW50YWluZWQKLSAgZGVtb3MgaGF2ZSBiZWVuIHJlbW92ZWQsIG90aGVycyBpbnRlZ3JhdGVkIGluIGRvY3VtZW50YXRpb24gb3IgYSBuZXcKLSAgVG9vbHMvZGVtbyBzdWJkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzEwNTAyOiBBZGRpdGlvbiBvZiB0aGUgdW5pdHRlc3RndWkgdG9vbC4gT3JpZ2luYWxseSBieSBTdGV2ZSBQdXJjZWxsLgotICBVcGRhdGVkIGZvciB0ZXN0IGRpc2NvdmVyeSBieSBNYXJrIFJvZGR5IGFuZCBQeXRob24gMyBjb21wYXRpYmlsaXR5IGJ5IEJyaWFuCi0gIEN1cnRpbi4KLQotVGVzdHMKLS0tLS0tCi0KLS0gRml4IHRlc3Rfc3RhcnRmaWxlIHRvIHdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlIGJlZm9yZSBmaW5pc2hpbmcuCi0KLS0gSXNzdWUgIzEwODIyOiBGaXggdGVzdF9wb3NpeDp0ZXN0X2dldGdyb3VwcyBmYWlsdXJlIHVuZGVyIFNvbGFyaXMuICBQYXRjaAotICBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBNYWtlIHRoZSAtLWNvdmVyYWdlIGZsYWcgd29yayBmb3IgdGVzdC5yZWdydGVzdC4KLQotLSBJc3N1ZSAjMTY3NzY5NDogUmVmYWN0b3IgYW5kIGltcHJvdmUgdGVzdF90aW1lb3V0LiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQmrDtnJuIExpbmRxdmlzdC4KLQotLSBJc3N1ZSAjNTQ4NTogQWRkIHRlc3RzIGZvciB0aGUgVXNlRm9yZWlnbkRURCBtZXRob2Qgb2YgZXhwYXQgcGFyc2VyIG9iamVjdHMuCi0gIFBhdGNoIGJ5IEplYW4tUGF1bCBDYWxkZXJvbmUgYW5kIFNhbmRybyBUb3NpLgotCi0tIElzc3VlICM2MjkzOiBIYXZlIHJlZ3J0ZXN0LnB5IGVjaG8gYmFjayBzeXMuZmxhZ3MuICBUaGlzIGlzIGRvbmUgYnkgZGVmYXVsdCBpbgotICB3aG9sZSBydW5zIGFuZCBlbmFibGVkIHNlbGVjdGl2ZWx5IHVzaW5nIGBgLS1oZWFkZXJgYCB3aGVuIHJ1bm5pbmcgYW4gZXhwbGljaXQKLSAgbGlzdCBvZiB0ZXN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEJldGEgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE5LURlYy0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjODg0NDogUmVndWxhciBhbmQgcmVjdXJzaXZlIGxvY2sgYWNxdWlzaXRpb25zIGNhbiBub3cgYmUgaW50ZXJydXB0ZWQKLSAgYnkgc2lnbmFscyBvbiBwbGF0Zm9ybXMgdXNpbmcgcHRocmVhZHMuICBQYXRjaCBieSBSZWlkIEtsZWNrbmVyLgotCi0tIElzc3VlICM0MjM2OiBQeU1vZHVsZV9DcmVhdGUyIG5vdyBjaGVja3MgdGhlIGltcG9ydCBtYWNoaW5lcnkgZGlyZWN0bHkKLSAgcmF0aGVyIHRoYW4gdGhlIFB5X0lzSW5pdGlhbGl6ZWQgZmxhZywgYXZvaWRpbmcgYSBGYXRhbCBQeXRob24KLSAgZXJyb3IgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIHdoZW4gYW4gaW1wb3J0IGlzIGRvbmUgaW4gX19kZWxfXy4KLQotLSBJc3N1ZSAjNTU4NzogYWRkIGEgcmVwciB0byBkaWN0X3Byb3h5IG9iamVjdHMuICBQYXRjaCBieSBEYXZpZCBTdGFuZWsgYW5kCi0gIERhbmllbCBVcmJhbi4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMzMjQzOiAgU3VwcG9ydCBpdGVyYWJsZSBib2RpZXMgaW4gaHR0cGxpYi4gUGF0Y2ggQ29udHJpYnV0aW9ucyBieQotICBYdWFuamkgTGkgYW5kIENocmlzIEF0TGVlLgotCi0tIElzc3VlICMxMDYxMTogU3lzdGVtRXhpdCBleGNlcHRpb24gd2lsbCBubyBsb25nZXIga2lsbCBhIHVuaXR0ZXN0IHJ1bi4KLQotLSBJc3N1ZSAjOTg1NzogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHNraXAgYSB0ZXN0IGluIGEgc2V0VXAsIHRlYXJEb3duIG9yIGNsZWFuCi0gIHVwIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMDU3MzogdXNlIGFjdHVhbC9leHBlY3RlZCBjb25zaXN0ZW50bHkgaW4gdW5pdHRlc3QgbWV0aG9kcy4KLSAgVGhlIG9yZGVyIG9mIHRoZSBhcmdzIG9mIGFzc2VydENvdW50RXF1YWwgaXMgYWxzbyBjaGFuZ2VkLgotCi0tIElzc3VlICM5Mjg2OiBlbWFpbC51dGlscy5wYXJzZWFkZHIgbm8gbG9uZ2VyIGNvbmNhdGVuYXRlcyBibGFuay1zZXBhcmF0ZWQKLSAgd29yZHMgaW4gdGhlIGxvY2FsIHBhcnQgb2YgZW1haWwgYWRkcmVzc2VzLCB0aGVyZWJ5IHByZXNlcnZpbmcgdGhlIGlucHV0LgotCi0tIElzc3VlICM2NzkxOiBMaW1pdCBoZWFkZXIgbGluZSBsZW5ndGggKHRvIDY1NTM1IGJ5dGVzKSBpbiBodHRwLmNsaWVudAotICBhbmQgaHR0cC5zZXJ2ZXIsIHRvIGF2b2lkIGRlbmlhbCBvZiBzZXJ2aWNlcyBmcm9tIHRoZSBvdGhlciBwYXJ0eS4KLQotLSBJc3N1ZSAjMTA0MDQ6IFVzZSBjdGwtYnV0dG9uLTEgb24gT1NYIGZvciB0aGUgY29udGV4dCBtZW51IGluIElkbGUuCi0KLS0gSXNzdWUgIzk5MDc6IEZpeCB0YWIgaGFuZGxpbmcgb24gT1NYIHdoZW4gdXNpbmcgZWRpdGxpbmUgYnkgY2FsbGluZwotICBybF9pbml0aWFsaXplIGZpcnN0LCB0aGVuIHNldHRpbmcgb3VyIGN1c3RvbSBkZWZhdWx0cywgdGhlbiByZWFkaW5nIC5lZGl0cmMuCi0KLS0gSXNzdWUgIzQxODg6IEF2b2lkIGNyZWF0aW5nIGR1bW15IHRocmVhZCBvYmplY3RzIHdoZW4gbG9nZ2luZyBvcGVyYXRpb25zCi0gIGZyb20gdGhlIHRocmVhZGluZyBtb2R1bGUgKHdpdGggdGhlIGludGVybmFsIHZlcmJvc2UgZmxhZyBhY3RpdmF0ZWQpLgotCi0tIElzc3VlICMxMDcxMTogUmVtb3ZlIEhUVFAgMC45IHN1cHBvcnQgZnJvbSBodHRwLmNsaWVudC4gIFRoZSBgYHN0cmljdGBgCi0gIHBhcmFtZXRlciB0byBIVFRQQ29ubmVjdGlvbiBhbmQgZnJpZW5kcyBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICM5NzIxOiBGaXggdGhlIGJlaGF2aW9yIG9mIHVybGpvaW4gd2hlbiB0aGUgcmVsYXRpdmUgdXJsIHN0YXJ0cyB3aXRoIGEKLSAgJzsnIGNoYXJhY3Rlci4gUGF0Y2ggYnkgV2VzIENob3cuCi0KLS0gSXNzdWUgIzEwNzE0OiBMaW1pdCBsZW5ndGggb2YgaW5jb21pbmcgcmVxdWVzdCBpbiBodHRwLnNlcnZlciB0byA2NTUzNiBieXRlcwotICBmb3Igc2VjdXJpdHkgcmVhc29ucy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzk1NTg6IEZpeCBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQgd2l0aCBWUyA4LjAuCi0KLS0gSXNzdWUgIzEwNjY3OiBGYXN0IHBhdGggZm9yIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS4KLQotLSBJc3N1ZSAjMTA2OTU6IHBhc3NpbmcgdGhlIHBvcnQgYXMgYSBzdHJpbmcgdmFsdWUgdG8gdGVsbmV0bGliIG5vIGxvbmdlcgotICBjYXVzZXMgZGVidWcgbW9kZSB0byBmYWlsLgotCi0tIElzc3VlICMxMDc4OTE5OiBhZGRfaGVhZGVyIG5vdyBhdXRvbWF0aWNhbGx5IFJGQzIyMzEgZW5jb2RlcyBwYXJhbWV0ZXJzCi0gIHRoYXQgY29udGFpbiBub24tYXNjaWkgdmFsdWVzLgotCi0tIElzc3VlICMxMDE4OCAocGFydGlhbCByZXNvbHV0aW9uKTogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGVtaXRzCi0gIGEgd2FybmluZyBvbiBzeXMuc3RkZXJyIHJhdGhlciB0aGFuIHRocm93aW5nIGEgbWlzbGVhZGluZyBleGNlcHRpb24KLSAgaWYgY2xlYW51cCBmYWlscyBkdWUgdG8gbnVsbGluZyBvdXQgb2YgbW9kdWxlcyBkdXJpbmcgc2h1dGRvd24uCi0gIEFsc28gYXZvaWRzIGFuIEF0dHJpYnV0ZUVycm9yIHdoZW4gbWtkdGVtcCBjYWxsIGZhaWxzIGFuZCBpc3N1ZXMKLSAgYSBSZXNvdXJjZVdhcm5pbmcgb24gaW1wbGljaXQgY2xlYW51cCB2aWEgX19kZWxfXy4KLQotLSBJc3N1ZSAjMTAxMDc6IFdhcm4gYWJvdXQgdW5zYXZlZCBmaWxlcyBpbiBJRExFIG9uIE9TWC4KLQotLSBJc3N1ZSAjNzIxMzogc3VicHJvY2Vzcy5Qb3BlbidzIGRlZmF1bHQgZm9yIGNsb3NlX2ZkcyBoYXMgYmVlbiBjaGFuZ2VkLgotICBJdCBpcyBub3cgVHJ1ZSBpbiBtb3N0IGNhc2VzIG90aGVyIHRoYW4gb24gV2luZG93cyB3aGVuIGlucHV0LCBvdXRwdXQgb3IKLSAgZXJyb3IgaGFuZGxlcyBhcmUgcHJvdmlkZWQuCi0KLS0gSXNzdWUgIzY1NTk6IHN1YnByb2Nlc3MuUG9wZW4gaGFzIGEgbmV3IHBhc3NfZmRzIHBhcmFtZXRlciAoYWN0dWFsbHkKLSAgYWRkZWQgaW4gMy4yYmV0YTEpIHRvIGFsbG93IHNwZWNpZnlpbmcgYSBzcGVjaWZpYyBsaXN0IG9mIGZpbGUgZGVzY3JpcHRvcnMKLSAgdG8ga2VlcCBvcGVuIGluIHRoZSBjaGlsZCBwcm9jZXNzLgotCi0tIElzc3VlICMxNzMxNzE3OiBGaXhlZCB0aGUgcHJvYmxlbSB3aGVyZSBzdWJwcm9jZXNzLndhaXQoKSBjb3VsZCBjYXVzZSBhbgotICBPU0Vycm9yIGV4Y2VwdGlvbiB3aGVuIFRoZSBPUyBoYWQgYmVlbiB0b2xkIHRvIGlnbm9yZSBTSUdDTEQgaW4gb3VyIHByb2Nlc3MKLSAgb3Igb3RoZXJ3aXNlIG5vdCB3YWl0IGZvciBleGl0aW5nIGNoaWxkIHByb2Nlc3Nlcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzc3NTk2NDogdGVzdF9ncnAgbm93IHNraXBzIFlQL05JUyBlbnRyaWVzIGluc3RlYWQgb2YgZmFpbGluZyB3aGVuCi0gIGVuY291bnRlcmluZyB0aGVtLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjA3NTogSURMRSBvbiBNYWMgT1MgWCBub3cgd29ya3Mgd2l0aCBib3RoIENhcmJvbiBBcXVhVGsgYW5kCi0gIENvY29hIEFxdWFUay4KLQotLSBJc3N1ZSAjMTA3MTA6IGBgTWlzYy9zZXR1aWQtcHJvZy5jYGAgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMTA3MDY6IFJlbW92ZSBvdXRkYXRlZCBzY3JpcHQgcnVudGVzdHMuc2guICBFaXRoZXIgYGBtYWtlIHRlc3RgYAotICBvciBgYHB5dGhvbiAtbSB0ZXN0YGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gVGhlIFdpbmRvd3MgYnVpbGQgbm93IHVzZXMgVGNsL1RrIDguNS45IGFuZCBzcWxpdGUzIDMuNy40LgotCi0tIElzc3VlICM5MjM0OiBhcmdwYXJzZSBzdXBwb3J0cyBhbGlhcyBuYW1lcyBmb3Igc3VicGFyc2Vycy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQmV0YSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDUtRGVjLTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDYzMDogUmV0dXJuIGRpY3Qgdmlld3MgZnJvbSB0aGUgZGljdCBwcm94eSBrZXlzKCkvdmFsdWVzKCkvaXRlbXMoKQotICBtZXRob2RzLgotCi0tIElzc3VlICMxMDU5NjogRml4IGZsb2F0Ll9fbW9kX18gdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgZmxvYXQuX19kaXZtb2RfXwotICB3aXRoIHJlc3BlY3QgdG8gc2lnbmVkIHplcm9zLiAgLTQuMCAlIDQuMCBzaG91bGQgYmUgMC4wLCBub3QgLTAuMC4KLQotLSBJc3N1ZSAjMTc3MjgzMzogQWRkIHRoZSAtcSBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIHN1cHByZXNzIGNvcHlyaWdodCBhbmQKLSAgdmVyc2lvbiBvdXRwdXQgaW4gaW50ZXJhY3RpdmUgbW9kZS4KLQotLSBQcm92aWRlIGFuICpvcHRpbWl6ZSogcGFyYW1ldGVyIGluIHRoZSBidWlsdC1pbiBjb21waWxlKCkgZnVuY3Rpb24uCi0KLS0gRml4ZWQgc2V2ZXJhbCBjb3JuZXIgY2FzZSBpc3N1ZXMgb24gV2luZG93cyBpbiBvcy5zdGF0L29zLmxzdGF0IHJlbGF0ZWQgdG8KLSAgcmVwYXJzZSBwb2ludHMuCi0KLS0gUEVQIDM4NCAoRGVmaW5pbmcgYSBTdGFibGUgQUJJKSBpcyBpbXBsZW1lbnRlZC4KLQotLSBJc3N1ZSAjMjY5MDogUmFuZ2Ugb2JqZWN0cyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcuCi0KLS0gSXNzdWUgIzk5MTU6IFNwZWVkIHVwIHNvcnRpbmcgd2l0aCBhIGtleS4KLQotLSBJc3N1ZSAjODY4NTogU3BlZWQgdXAgc2V0IGRpZmZlcmVuY2UgYGBhIC0gYmBgIHdoZW4gc291cmNlIHNldCBgYGFgYCBpcyBtdWNoCi0gIGxhcmdlciB0aGFuIG9wZXJhbmQgYGBiYGAuICBQYXRjaCBieSBBbmRyZXcgQmVubmV0dHMuCi0KLS0gSXNzdWUgIzEwNTE4OiBCcmluZyBiYWNrIHRoZSBjYWxsYWJsZSgpIGJ1aWx0aW4uCi0KLS0gSXNzdWUgIzcwOTQ6IEFkZGVkIGFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgJyMnKSB0byBgYF9fZm9ybWF0X19gYAotICBtZXRob2Qgb2YgZmxvYXQsIGNvbXBsZXgsIGFuZCBEZWNpbWFsLiBUaGlzIGFsbG93cyBtb3JlIHByZWNpc2UgY29udHJvbCBvdmVyCi0gIHdoZW4gZGVjaW1hbCBwb2ludHMgYXJlIGRpc3BsYXllZC4KLQotLSBJc3N1ZSAjMTA0NzQ6IHJhbmdlLmNvdW50KCkgc2hvdWxkIHJldHVybiBpbnRlZ2Vycy4KLQotLSBJc3N1ZSAjMTU3NDIxNzogaXNpbnN0YW5jZSBub3cgY2F0Y2hlcyBvbmx5IEF0dHJpYnV0ZUVycm9yLCByYXRoZXIgdGhhbgotICBtYXNraW5nIGFsbCBlcnJvcnMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBsb2dnaW5nOiBhZGRlZCAiaGFuZGxlciBvZiBsYXN0IHJlc29ydCIuIFNlZSBodHRwOi8vYml0Lmx5L2xhc3QtcmVzb3J0LWhhbmRsZXIKLQotLSB0ZXN0LnN1cHBvcnQ6IEFkZGVkIFRlc3RIYW5kbGVyIGFuZCBNYXRjaGVyIGNsYXNzZXMgZm9yIGJldHRlciBzdXBwb3J0IG9mCi0gIGFzc2VydGlvbnMgYWJvdXQgbG9nZ2luZy4KLQotLSBJc3N1ZSAjNDM5MTogVXNlIHByb3BlciBwbHVyYWwgZm9ybXMgaW4gYXJncGFyc2UuCi0KLS0gSXNzdWUgIzEwNjAxOiBzeXMuZGlzcGxheWhvb2sgdXNlcyAnYmFja3NsYXNocmVwbGFjZScgZXJyb3IgaGFuZGxlciBvbgotICBVbmljb2RlRW5jb2RlRXJyb3IuCi0KLS0gQWRkIHRoZSAiZGlzcGxheSIgYW5kICJ1bmRpc3BsYXkiIHBkYiBjb21tYW5kcy4KLQotLSBJc3N1ZSAjNzI0NTogQWRkIGEgU0lHSU5UIGhhbmRsZXIgaW4gcGRiIHRoYXQgYWxsb3dzIHRvIGJyZWFrIGEgcHJvZ3JhbSBhZ2FpbgotICBhZnRlciBhICJjb250aW51ZSIgY29tbWFuZC4KLQotLSBBZGQgdGhlICJpbnRlcmFjdCIgcGRiIGNvbW1hbmQuCi0KLS0gSXNzdWUgIzc5MDU6IEFjdHVhbGx5IHJlc3BlY3QgdGhlIGtleWVuY29kaW5nIHBhcmFtZXRlciB0byBzaGVsdmUuU2hlbGYuCi0KLS0gSXNzdWUgIzE1NjkyOTE6IFNwZWVkIHVwIGFycmF5LnJlcGVhdCgpLgotCi0tIFByb3ZpZGUgYW4gaW50ZXJmYWNlIHRvIHNldCB0aGUgb3B0aW1pemF0aW9uIGxldmVsIG9mIGNvbXBpbGF0aW9uIGluCi0gIHB5X2NvbXBpbGUsIGNvbXBpbGVhbGwgYW5kIHppcGZpbGUuUHlaaXBGaWxlLgotCi0tIElzc3VlICM3OTA0OiBDaGFuZ2VzIHRvIHVybGxpYi5wYXJzZS51cmxzcGxpdCB0byBoYW5kbGUgc2NoZW1lcyBhcyBkZWZpbmVkIGJ5Ci0gIFJGQzM5ODYuIEFueXRoaW5nIGJlZm9yZSA6Ly8gaXMgY29uc2lkZXJlZCBhIHNjaGVtZSBhbmQgaXMgZm9sbG93ZWQgYnkgYW4KLSAgYXV0aG9yaXR5IChvciBuZXRsb2MpIGFuZCBieSAnLycgbGVkIHBhdGgsIHdoaWNoIGlzIG9wdGlvbmFsLgotCi0tIElzc3VlICM2MDQ1OiBkYm0uZ251IGRhdGFiYXNlcyBub3cgc3VwcG9ydCBnZXQoKSBhbmQgc2V0ZGVmYXVsdCgpIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzEwNjIwOiBgcHl0aG9uIC1tIHVuaXR0ZXN0YCBjYW4gYWNjZXB0IGZpbGUgcGF0aHMgaW5zdGVhZCBvZiBtb2R1bGUKLSAgbmFtZXMgZm9yIHJ1bm5pbmcgc3BlY2lmaWMgdGVzdHMuCi0KLS0gSXNzdWUgIzk0MjQ6IERlcHJlY2F0ZSB0aGUgYHVuaXR0ZXN0LlRlc3RDYXNlYCBtZXRob2RzIGBhc3NlcnRFcXVhbHNgLAotICBgYXNzZXJ0Tm90RXF1YWxzYCwgYGFzc2VydEFsbW9zdEVxdWFsc2AsIGBhc3NlcnROb3RBbG1vc3RFcXVhbHNgIGFuZCBgYXNzZXJ0X2AKLSAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBjb3JyZWN0IG1ldGhvZHMgaW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLgotCi0tIElzc3VlICMxMDI3MjogVGhlIHNzbCBtb2R1bGUgbm93IHJhaXNlcyBzb2NrZXQudGltZW91dCBpbnN0ZWFkIG9mIGEgZ2VuZXJpYwotICBTU0xFcnJvciBvbiBzb2NrZXQgdGltZW91dHMuCi0KLS0gSXNzdWUgIzEwNTI4OiBBbGxvdyB0cmFuc2xhdG9ycyB0byByZW9yZGVyIHBsYWNlaG9sZGVycyBpbiBsb2NhbGl6YWJsZQotICBtZXNzYWdlcyBmcm9tIGFyZ3BhcnNlLgotCi0tIElzc3VlICMxMDQ5NzogRml4IGluY29ycmVjdCB1c2Ugb2YgZ2V0dGV4dCBpbiBhcmdwYXJzZS4KLQotLSBJc3N1ZSAjMTA0Nzg6IFJlZW50cmFudCBjYWxscyBpbnNpZGUgYnVmZmVyZWQgSU8gb2JqZWN0cyAoZm9yIGV4YW1wbGUgYnkKLSAgd2F5IG9mIGEgc2lnbmFsIGhhbmRsZXIpIG5vdyByYWlzZSBhIFJ1bnRpbWVFcnJvciBpbnN0ZWFkIG9mIGZyZWV6aW5nIHRoZQotICBjdXJyZW50IHByb2Nlc3MuCi0KLS0gbG9nZ2luZzogQWRkZWQgZ2V0TG9nUmVjb3JkRmFjdG9yeS9zZXRMb2dSZWNvcmRGYWN0b3J5IHdpdGggZG9jcyBhbmQgdGVzdHMuCi0KLS0gSXNzdWUgIzEwNTQ5OiBGaXggcHlkb2MgdHJhY2ViYWNrIHdoZW4gdGV4dC1kb2N1bWVudGluZyBjZXJ0YWluIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzIwMDE6IE5ldyBIVE1MIHNlcnZlciB3aXRoIGVuaGFuY2VkIFdlYiBwYWdlIGZlYXR1cmVzLiAgUGF0Y2ggYnkgUm9uCi0gIEFkYW0uCi0KLS0gSXNzdWUgIzEwMzYwOiBJbiBXZWFrU2V0LCBkbyBub3QgcmFpc2UgVHlwZUVycm9ycyB3aGVuIHRlc3RpbmcgZm9yIG1lbWJlcnNoaXAKLSAgb2Ygbm9uLXdlYWtyZWZhYmxlIG9iamVjdHMuCi0KLS0gSXNzdWUgIzk0MDI4NjogcHlkb2MuSGVscGVyLmhlbHAoKSBpZ25vcmVzIGlucHV0L291dHB1dCBpbml0IHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzE3NDUwMzU6IEFkZCBhIGNvbW1hbmQgc2l6ZSBhbmQgZGF0YSBzaXplIGxpbWl0IHRvIHNtdHBkLnB5LCB0byBwcmV2ZW50Ci0gIERvUyBhdHRhY2tzLiAgUGF0Y2ggYnkgU2F2aW8gU2VuYS4KLQotLSBJc3N1ZSAjNDkyNTogQWRkIGZpbGVuYW1lIHRvIGVycm9yIG1lc3NhZ2Ugd2hlbiBleGVjdXRhYmxlIGNhbid0IGJlIGZvdW5kIGluCi0gIHN1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEwMzkxOiBEb24ndCBkZXJlZmVyZW5jZSBpbnZhbGlkIG1lbW9yeSBpbiBlcnJvciBtZXNzYWdlcyBpbiB0aGUgYXN0Ci0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTAwMjc6IHN0X25saW5rIHdhcyBub3QgYmVpbmcgc2V0IG9uIFdpbmRvd3MgY2FsbHMgdG8gb3Muc3RhdCBvcgotICBvcy5sc3RhdC4gUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzkzMzM6IEV4cG9zZSBvcy5zeW1saW5rIG9ubHkgd2hlbiB0aGUgU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UgaXMKLSAgaGVsZCBieSB0aGUgdXNlcidzIGFjY291bnQsIGkuZS4sIHdoZW4gdGhlIGZ1bmN0aW9uIGNhbiBhY3R1YWxseSBiZSB1c2VkLgotCi0tIElzc3VlICM4ODc5OiBBZGQgb3MubGluayBzdXBwb3J0IGZvciBXaW5kb3dzLgotCi0tIElzc3VlICM3OTExOiBgYHVuaXR0ZXN0LlRlc3RDYXNlLmxvbmdNZXNzYWdlYGAgZGVmYXVsdHMgdG8gVHJ1ZSBmb3IgaW1wcm92ZWQKLSAgZmFpbHVyZSBtZXNzYWdlcyBieSBkZWZhdWx0LiBQYXRjaCBieSBNYXJrIFJvZGR5LgotCi0tIElzc3VlICMxNDg2NzEzOiBIVE1MUGFyc2VyIG5vdyBoYXMgYW4gb3B0aW9uYWwgdG9sZXJhbnQgbW9kZSB3aGVyZSBpdCB0cmllcyB0bwotICBndWVzcyBhdCB0aGUgY29ycmVjdCBwYXJzaW5nIG9mIGludmFsaWQgaHRtbC4KLQotLSBJc3N1ZSAjMTA1NTQ6IEFkZCBjb250ZXh0IG1hbmFnZXIgc3VwcG9ydCB0byBzdWJwcm9jZXNzLlBvcGVuIG9iamVjdHMuCi0KLS0gSXNzdWUgIzg5ODk6IGVtYWlsLnV0aWxzLm1ha2VfbXNnaWQgbm93IGhhcyBhIGRvbWFpbiBwYXJhbWV0ZXIgdGhhdCBjYW4KLSAgb3ZlcnJpZGUgdGhlIGRvbWFpbiBuYW1lIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBtc2dpZC4KLQotLSBJc3N1ZSAjOTI5OTogQWRkIGV4aXN0X29rIHBhcmFtZXRlciB0byBvcy5tYWtlZGlycyB0byBzdXBwcmVzcyB0aGUgJ0ZpbGUKLSAgZXhpc3RzJyBleGNlcHRpb24gd2hlbiBhIHRhcmdldCBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGUgc3BlY2lmaWVkCi0gIG1vZGUuIFBhdGNoIGJ5IFJheSBBbGxlbi4KLQotLSBJc3N1ZSAjOTU3Mzogb3MuZm9yaygpIG5vdyB3b3JrcyBjb3JyZWN0bHkgd2hlbiB0cmlnZ2VyZWQgYXMgYSBzaWRlIGVmZmVjdCBvZgotICBhIG1vZHVsZSBpbXBvcnQuCi0KLS0gSXNzdWUgIzEwNDY0OiBuZXRyYyBub3cgY29ycmVjdGx5IGhhbmRsZXMgbGluZXMgd2l0aCBlbWJlZGRlZCAnIycgY2hhcmFjdGVycy4KLQotLSBBZGRlZCBpdGVydG9vbHMuYWNjdW11bGF0ZSgpLgotCi0tIElzc3VlICM0MTEzOiBBZGRlZCBjdXN0b20gYGBfX3JlcHJfX2BgIG1ldGhvZCB0byBgYGZ1bmN0b29scy5wYXJ0aWFsYGAuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IERhbmllbCBVcmJhbi4KLQotLSBJc3N1ZSAjMTAyNzM6IFJlbmFtZSBgYXNzZXJ0UmVnZXhwTWF0Y2hlc2AgYW5kIGBhc3NlcnRSYWlzZXNSZWdleHBgIHRvCi0gIGBhc3NlcnRSZWdleGAgYW5kIGBhc3NlcnRSYWlzZXNSZWdleGAuCi0KLS0gSXNzdWUgIzEwNTM1OiBFbmFibGUgc2lsZW5jZWQgd2FybmluZ3MgaW4gdW5pdHRlc3QgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjOTg3MzogVGhlIFVSTCBwYXJzaW5nIGZ1bmN0aW9ucyBpbiB1cmxsaWIucGFyc2Ugbm93IGFjY2VwdCBBU0NJSSBieXRlCi0gIHNlcXVlbmNlcyBhcyBpbnB1dCBpbiBhZGRpdGlvbiB0byBjaGFyYWN0ZXIgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTA1ODY6IFRoZSBzdGF0aXN0aWNzIEFQSSBmb3IgdGhlIG5ldyBmdW5jdG9vbHMubHJ1X2NhY2hlIGhhcyBiZWVuCi0gIGNoYW5nZWQgdG8gYSBzaW5nbGUgY2FjaGVfaW5mbygpIG1ldGhvZCByZXR1cm5pbmcgYSBuYW1lZCB0dXBsZS4KLQotLSBJc3N1ZSAjMTAzMjM6IGl0ZXJ0b29scy5pc2xpY2UoKSBub3cgY29uc3VtZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGlucHV0cwotICBiZWZvcmUgc3RvcHBpbmcuICBGb3JtZXJseSwgdGhlIGZpbmFsIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIHdhcwotICB1bmRlZmluZWQuCi0KLS0gSXNzdWUgIzEwNTY1OiBUaGUgY29sbGVjdGlvbnMuSXRlcmF0b3IgQUJDIG5vdyBjaGVja3MgZm9yIGJvdGggX19pdGVyX18gYW5kCi0gIF9fbmV4dF9fLgotCi0tIElzc3VlICMxMDI0MjogRml4ZWQgaW1wbGVtZW50YXRpb24gb2YgdW5pdHRlc3QuSXRlbXNFcXVhbCBhbmQgZ2F2ZSBpdCBhIG5ldwotICBtb3JlIGluZm9ybWF0aXZlIG5hbWUsIHVuaXR0ZXN0LkNvdW50RXF1YWwuCi0KLS0gSXNzdWUgIzEwNTYxOiBJbiBwZGIsIGNsZWFyIHRoZSBicmVha3BvaW50cyBieSB0aGUgYnJlYWtwb2ludCBudW1iZXIuCi0KLS0gSXNzdWUgIzI5ODY6IGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyIGdldHMgYSBuZXcgcGFyYW1ldGVyLCBhdXRvanVuaywgd2hpY2ggY2FuCi0gIGJlIHNldCB0byBGYWxzZSB0byB0dXJuIG9mZiB0aGUgcHJldmlvdXNseSB1bmRvY3VtZW50ZWQgJ3BvcHVsYXJpdHknCi0gIGhldXJpc3RpYy4gUGF0Y2ggYnkgVGVycnkgUmVlZHkgYW5kIEVsaSBCZW5kZXJza3kuCi0KLS0gSXNzdWUgIzEwNTM0OiBpbiBkaWZmbGliLCBleHBvc2UgYmp1bmsgYW5kIGJwb3B1bGFyIHNldHM7IGRlcHJlY2F0ZQotICB1bmRvY3VtZW50ZWQgYW5kIG5vdyByZWR1bmRhbnQgaXNianVuayBhbmQgaXNicG9wdWxhciBtZXRob2RzLgotCi0tIElzc3VlICM5ODQ2OiB6aXBmaWxlIGlzIG5vdyBjb3JyZWN0bHkgY2xvc2luZyB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTA0NTk6IFVwZGF0ZSBDSksgY2hhcmFjdGVyIG5hbWVzIHRvIFVuaWNvZGUgNi4wLgotCi0tIElzc3VlICM0NDkzOiB1cmxsaWIucmVxdWVzdCBhZGRzICcvJyBpbiBmcm9udCBvZiBwYXRoIGNvbXBvbmVudHMgd2hpY2ggZG9lcyBub3QKLSAgc3RhcnQgd2l0aCAnLy4gQ29tbW9uIGJlaGF2aW9yIGV4aGliaXRlZCBieSBicm93c2VycyBhbmQgb3RoZXIgY2xpZW50cy4KLQotLSBJc3N1ZSAjNjM3ODogaWRsZS5iYXQgbm93IHJ1bnMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgUHl0aG9uIHZlcnNpb24gcmF0aGVyIHRoYW4KLSAgdGhlIHN5c3RlbSBkZWZhdWx0LiBQYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLS0gSXNzdWUgIzEwNDcwOiAncHl0aG9uIC1tIHVuaXR0ZXN0JyB3aWxsIG5vdyBydW4gdGVzdCBkaXNjb3ZlcnkgYnkgZGVmYXVsdCwKLSAgd2hlbiBubyBleHRyYSBhcmd1bWVudHMgaGF2ZSBiZWVuIHByb3ZpZGVkLgotCi0tIElzc3VlICMzNzA5OiBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyIHdpbGwgYnVmZmVyIHRoZSBoZWFkZXJzIGFuZCB3cml0ZSB0bwotICBvdXRwdXQgc3RyZWFtIG9ubHkgd2hlbiBlbmRfaGVhZGVycyBpcyBpbnZva2VkLiBUaGlzIGlzIGEgc3BlZWR1cCBhbmQgYW4KLSAgaW50ZXJuYWwgb3B0aW1pemF0aW9uLiAgUGF0Y2ggYnkgZW5kaWFuLgotCi0tIElzc3VlICMxMDIyMDogQWRkZWQgaW5zcGVjdC5nZXRnZW5lcmF0b3JzdGF0ZS4gSW5pdGlhbCBwYXRjaCBieSBSb2RvbHBobwotICBFY2toYXJkdC4KLQotLSBJc3N1ZSAjMTA0NTM6IGNvbXBpbGVhbGwgbm93IHVzZXMgYXJncGFyc2UgaW5zdGVhZCBvZiBnZXRvcHQsIGFuZCB0aHVzCi0gIHByb3ZpZGVzIGNsZWFuIG91dHB1dCB3aGVuIGNhbGxlZCB3aXRoICctaCcuCi0KLS0gSXNzdWUgIzgwNzg6IEFkZCBjb25zdGFudHMgZm9yIGhpZ2hlciBiYXVkIHJhdGVzIGluIHRoZSB0ZXJtaW9zIG1vZHVsZS4gIFBhdGNoCi0gIGJ5IFJvZG9scGhvIEVja2hhcmR0LgotCi0tIElzc3VlICMxMDQwNzogRml4IHR3byBOYW1lRXJyb3JzIGluIGRpc3R1dGlscy4KLQotLSBJc3N1ZSAjMTAzNzE6IERlcHJlY2F0ZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBpbiB0aGUgdHJhY2UgbW9kdWxlLgotCi0tIElzc3VlICMxMDQ2NzogRml4IEJ5dGVzSU8ucmVhZGludG8oKSBhZnRlciBzZWVraW5nIGludG8gYSBwb3NpdGlvbiBhZnRlciB0aGUKLSAgZW5kIG9mIHRoZSBmaWxlLgotCi0tIGNvbmZpZ3BhcnNlcjogMTAwJSB0ZXN0IGNvdmVyYWdlLgotCi0tIElzc3VlICMxMDQ5OTogY29uZmlncGFyc2VyIHN1cHBvcnRzIHBsdWdnYWJsZSBpbnRlcnBvbGF0aW9uIGhhbmRsZXJzLiBUaGUKLSAgZGVmYXVsdCBjbGFzc2ljIGludGVycG9sYXRpb24gaGFuZGxlciBpcyBjYWxsZWQgQmFzaWNJbnRlcnBvbGF0aW9uLiBBbm90aGVyCi0gIGludGVycG9sYXRpb24gaGFuZGxlciBhZGRlZCAoRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKSB3aGljaCBzdXBwb3J0cyB0aGUgc3ludGF4Ci0gIHVzZWQgYnkgemMuYnVpbGRvdXQgKGUuZy4gaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHNlY3Rpb25zKS4KLQotLSBjb25maWdwYXJzZXI6IHRoZSBTYWZlQ29uZmlnUGFyc2VyIGNsYXNzIGhhcyBiZWVuIHJlbmFtZWQgdG8gQ29uZmlnUGFyc2VyLgotICBUaGUgbGVnYWN5IENvbmZpZ1BhcnNlciBjbGFzcyBoYXMgYmVlbiByZW1vdmVkIGJ1dCBpdHMgaW50ZXJwb2xhdGlvbiBtZWNoYW5pc20KLSAgaXMgc3RpbGwgYXZhaWxhYmxlIGFzIExlZ2FjeUludGVycG9sYXRpb24uCi0KLS0gY29uZmlncGFyc2VyOiBVc2FnZSBvZiBSYXdDb25maWdQYXJzZXIgaXMgbm93IGRpc2NvdXJhZ2VkIGZvciBuZXcgcHJvamVjdHMKLSAgaW4gZmF2b3Igb2YgQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSkuCi0KLS0gSXNzdWUgIzE2ODI5NDI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBhbHRlcm5hdGl2ZSBvcHRpb24vdmFsdWUgZGVsaW1pdGVycy4KLQotLSBJc3N1ZSAjNTQxMjogY29uZmlncGFyc2VyIHN1cHBvcnRzIG1hcHBpbmcgcHJvdG9jb2wgYWNjZXNzLgotCi0tIElzc3VlICM5NDExOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgc3BlY2lmeWluZyBlbmNvZGluZyBmb3IgcmVhZCBvcGVyYXRpb25zLgotCi0tIElzc3VlICM5NDIxOiBjb25maWdwYXJzZXIncyBnZXRpbnQoKSwgZ2V0ZmxvYXQoKSBhbmQgZ2V0Ym9vbGVhbigpIG1ldGhvZHMKLSAgYWNjZXB0IHZhcnMgYW5kIGRlZmF1bHQgYXJndW1lbnRzIGp1c3QgbGlrZSBnZXQoKSBkb2VzLgotCi0tIElzc3VlICM5NDUyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgcmVhZGluZyBmcm9tIHN0cmluZ3MgYW5kIGRpY3Rpb25hcmllcwotICAodGhhbmtzIHRvIHRoZSBtYXBwaW5nIHByb3RvY29sIEFQSSwgdGhlIGxhdHRlciBjYW4gYmUgdXNlZCB0byBjb3B5IGRhdGEKLSAgYmV0d2VlbiBwYXJzZXJzKS4KLQotLSBjb25maWdwYXJzZXI6IGFjY2VwdGVkIElOSSBmaWxlIHN0cnVjdHVyZSBpcyBub3cgY3VzdG9taXphYmxlLCBpbmNsdWRpbmcKLSAgY29tbWVudCBwcmVmaXhlcywgbmFtZSBvZiB0aGUgREVGQVVMVCBzZWN0aW9uLCBlbXB0eSBsaW5lcyBpbiBtdWx0aWxpbmUKLSAgdmFsdWVzLCBhbmQgaW5kZW50YXRpb24uCi0KLS0gSXNzdWUgIzEwMzI2OiB1bml0dGVzdC5UZXN0Q2FzZSBpbnN0YW5jZXMgY2FuIGJlIHBpY2tsZWQuCi0KLS0gSXNzdWUgIzk5MjY6IFdyYXBwZWQgVGVzdFN1aXRlIHN1YmNsYXNzIGRvZXMgbm90IGdldCBfX2NhbGxfXyBleGVjdXRlZC4KLQotLSBJc3N1ZSAjOTkyMDogU2tpcCB0ZXN0cyBmb3IgY21hdGguYXRhbiBhbmQgY21hdGguYXRhbmggYXBwbGllZCB0byBjb21wbGV4Ci0gIHplcm9zIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGxvZzFwIGZ1bmN0aW9uIGZhaWxzIHRvIHJlc3BlY3QgdGhlIHNpZ24gb2YgemVyby4KLSAgVGhpcyBmaXhlcyBhIHRlc3QgZmFpbHVyZSBvbiBBSVguCi0KLS0gSXNzdWUgIzk3MzI6IEFkZGl0aW9uIG9mIGdldGF0dHJfc3RhdGljIHRvIHRoZSBpbnNwZWN0IG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA0NDY6IE1vZHVsZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZCBieSBweWRvYyBub3cgbGlua3MgdG8gYQotICB2ZXJzaW9uLXNwZWNpZmljIG9ubGluZSByZWZlcmVuY2UgbWFudWFsLgotCi0tIE1ha2UgdGhlICdObyBtb2R1bGUgbmFtZWQnIGV4Y2VwdGlvbiBtZXNzYWdlIGZyb20gaW1wb3J0bGliIGNvbnNpc3RlbnQuCi0KLS0gSXNzdWUgIzEwNDQzOiBBZGQgdGhlIFNTTENvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkgbWV0aG9kLgotCi0tIElzc3VlICMxMDQ0MDogU3VwcG9ydCBSVVNBR0VfVEhSRUFEIGFzIGEgY29uc3RhbnQgaW4gdGhlIHJlc291cmNlIG1vZHVsZS4KLSAgUGF0Y2ggYnkgUm9iZXJ0IENvbGxpbnMuCi0KLS0gSXNzdWUgIzEwNDI5OiBJTUFQLnN0YXJ0dGxzKCkgc3RvcmVkIHRoZSBjYXBhYmlsaXRpZXMgYXMgYnl0ZXMgb2JqZWN0cywgcmF0aGVyCi0gIHRoYW4gc3RyaW5ncy4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzEwNTU3OiBBZGRlZCBhIG5ldyBBUEkgZnVuY3Rpb24sIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSSgpLAotICB3aGljaCB0cmFuc2Zvcm1zIG5vbi1BU0NJSSBkZWNpbWFsIGRpZ2l0cyBpbiBhIFVuaWNvZGUgc3RyaW5nIHRvIHRoZWlyIEFTQ0lJCi0gIGVxdWl2YWxlbnRzLgotCi0tIElzc3VlICM5NTE4OiBFeHRlbmQgdGhlIFB5TW9kdWxlRGVmX0hFQURfSU5JVCBtYWNybyB0byBleHBsaWNpdGx5Ci0gIHplcm8taW5pdGlhbGl6ZSBhbGwgZmllbGRzLCBmaXhpbmcgY29tcGlsZXIgd2FybmluZ3Mgc2VlbiB3aGVuIGJ1aWxkaW5nCi0gIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggZ2NjIHdpdGggIi1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiIChpbXBsaWVkIGJ5Ci0gICItVyIpLgotCi0tIElzc3VlICMxMDI1NTogRml4IHJlZmVyZW5jZSBsZWFrIGluIFB5X0luaXRpYWxpemVFeCgpLiAgUGF0Y2ggYnkgTmVpbAotICBTY2hlbWVuYXVlci4KLQotLSBzdHJ1Y3RzZXEuaCBpcyBub3cgaW5jbHVkZWQgaW4gUHl0aG9uLmguCi0KLS0gTG9vc2VuIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cyB0byBhbGxvdyBkaWN0IHN1YmNsYXNzZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIHJlZ3J0ZXN0LnB5IG9uY2UgYWdhaW4gZW5zdXJlcyB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgcmVtb3ZlZCBmcm9tIHN5cy5wYXRoCi0gIHdoZW4gaXQgaXMgaW52b2tlZCBkaXJlY3RseSBhcyB0aGUgX19tYWluX18gbW9kdWxlLgotCi0tIGBweXRob24gLW0gdGVzdGAgY2FuIGJlIHVzZWQgdG8gcnVuIHRoZSB0ZXN0IHN1aXRlIGFzIHdlbGwgYXMgYHB5dGhvbiAtbQotICB0ZXN0LnJlZ3J0ZXN0YC4KLQotLSBEbyBub3QgZmFpbCB0ZXN0X3NvY2tldCB3aGVuIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBob3N0bmFtZSBjYW5ub3QgYmUKLSAgbG9va2VkIHVwLgotCi0tIElzc3VlICM4ODg2OiBVc2UgY29udGV4dCBtYW5hZ2VycyB0aHJvdWdob3V0IHRlc3RfemlwZmlsZS4gUGF0Y2ggYnkgRXJpYwotICBDYXJzdGVuc2VuLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTAzMjU6IEZpeCB0d28gaXNzdWVzIGluIHRoZSBmYWxsYmFjayBkZWZpbml0aW9ucyBmb3IgUFlfVUxMT05HX01BWCBhbmQKLSAgUFlfTExPTkdfTUFYIHRoYXQgbWFkZSB0aGVtIHVuc3VpdGFibGUgZm9yIHVzZSBpbiBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwMjk5OiBMaXN0IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgaW4gYSB0YWJsZSBpbiBmdW5jdGlvbnMucnN0LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSA0PwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEzLU5vdi0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAzNzI6IEltcG9ydCB0aGUgd2FybmluZ3MgbW9kdWxlIG9ubHkgYWZ0ZXIgdGhlIElPIGxpYnJhcnkgaXMKLSAgaW5pdGlhbGl6ZWQsIHNvIGFzIHRvIGF2b2lkIGJvb3RzdHJhcCBpc3N1ZXMgd2l0aCB0aGUgJy1XJyBvcHRpb24uCi0KLS0gSXNzdWUgIzEwMjkzOiBSZW1vdmUgb2Jzb2xldGUgZmllbGQgaW4gdGhlIFB5TWVtb3J5VmlldyBzdHJ1Y3R1cmUsIHVudXNlZAotICB1bmRvY3VtZW50ZWQgdmFsdWUgUHlCVUZfU0hBRE9XLCBhbmQgc3RyYW5nZWx5LWxvb2tpbmcgY29kZSBpbgotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cy4KLQotLSBJc3N1ZSAjNjA4MTogQWRkIHN0ci5mb3JtYXRfbWFwKCksIHNpbWlsYXIgdG8gYGBzdHIuZm9ybWF0KCoqbWFwcGluZylgYC4KLQotLSBJZiBGaWxlSU8uX19pbml0X18gZmFpbHMsIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IuCi0KLS0gSXNzdWUgIzEwMjIxOiBkaWN0LnBvcChrKSBub3cgaGFzIGEga2V5IGVycm9yIG1lc3NhZ2UgdGhhdCBpbmNsdWRlcyB0aGUKLSAgbWlzc2luZyBrZXkgKHNhbWUgbWVzc2FnZSBkW2tdIHJldHVybnMgZm9yIG1pc3Npbmcga2V5cykuCi0KLS0gSXNzdWUgIzU0Mzc6IEEgcHJlYWxsb2NhdGVkIE1lbW9yeUVycm9yIGluc3RhbmNlIHNob3VsZCBub3Qga2VlcCB0cmFjZWJhY2sKLSAgZGF0YSAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyBjYXVnaHQgaW4gdGhlIHN0YWNrIHRyYWNlKSBhbGl2ZSBpbmZpbml0ZWx5LgotCi0tIElzc3VlICMxMDE4NjogRml4IHRoZSBTeW50YXhFcnJvciBjYXJldCB3aGVuIHRoZSBvZmZzZXQgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aAotICBvZiB0aGUgb2ZmZW5kaW5nIGxpbmUuCi0KLS0gSXNzdWUgIzEwMDg5OiBBZGQgc3VwcG9ydCBmb3IgYXJiaXRyYXJ5IC1YIG9wdGlvbnMgb24gdGhlIGNvbW1hbmQgbGluZS4gIFRoZXkKLSAgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIGEgbmV3IGF0dHJpYnV0ZSBgYHN5cy5feG9wdGlvbnNgYC4KLQotLSBJc3N1ZSAjNDM4ODogT24gTWFjIE9TIFgsIGRlY29kZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZyb20gVVRGLTgsIGluc3RlYWQgb2YKLSAgdGhlIGxvY2FsZSBlbmNvZGluZy4gIElmIHRoZSBMQU5HIChhbmQgTENfQUxMIGFuZCBMQ19DVFlQRSkgZW52aXJvbm1lbnQKLSAgdmFyaWFibGUgaXMgbm90IHNldCwgdGhlIGxvY2FsZSBlbmNvZGluZyBpcyBJU08tODg1OS0xLCB3aGVyZWFzIG1vc3QgcHJvZ3JhbXMKLSAgKGluY2x1ZGluZyBQeXRob24pIGV4cGVjdCBVVEYtOC4gIFB5dGhvbiBhbHJlYWR5IHVzZXMgVVRGLTggZm9yIHRoZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIGFuZCB0byBlbmNvZGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvbiB0aGlzIE9TLgotCi0tIElzc3VlICM5NzEzLCAjMTAxMTQ6IFBhcnNlciBmdW5jdGlvbnMgKGUuZy4gUHlQYXJzZXJfQVNURnJvbUZpbGUpIGV4cGVjdAotICBmaWxlbmFtZXMgZW5jb2RlZCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKLSAgaGFuZGxlciAodG8gc3VwcG9ydCB1bmRlY29kYWJsZSBieXRlcyksIGluc3RlYWQgb2YgVVRGLTggaW4gc3RyaWN0IG1vZGUuCi0KLS0gSXNzdWUgIzk5OTc6IERvbid0IGxldCB0aGUgbmFtZSAidG9wIiBoYXZlIHNwZWNpYWwgc2lnbmlmaWNhbmNlIGluIHNjb3BlCi0gIHJlc29sdXRpb24uCi0KLS0gSXNzdWUgIzk4NjI6IENvbXBlbnNhdGUgZm9yIGJyb2tlbiBQSVBFX0JVRiBpbiBBSVggYnkgaGFyZCBjb2RpbmcgaXRzIHZhbHVlIGFzCi0gIHRoZSBkZWZhdWx0IDUxMiB3aGVuIGNvbXBpbGluZyBvbiBBSVguCi0KLS0gVXNlIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04IHRvIGVuY29kZSBhbmQgZGVjb2RlIGZpbGVuYW1lcyBpZgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIGlzIG5vdCBzZXQuCi0KLS0gSXNzdWUgIzEwMDk1OiBmcF9zZXRyZWFkbCgpIGRvZXNuJ3QgcmVvcGVuIHRoZSBmaWxlLCBpbnN0ZWFkIHJldXNlIHRoZSBmaWxlCi0gIGRlc2NyaXB0b3IuCi0KLS0gSXNzdWUgIzk0MTg6IE1vdmVkIHByaXZhdGUgc3RyaW5nIG1ldGhvZHMgYGBfZm9ybWF0dGVyX3BhcnNlcmBgIGFuZAotICBgYF9mb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdGBgIGludG8gYSBuZXcgYGBfc3RyaW5nYGAgbW9kdWxlLgotCi0tIElzc3VlICM5OTkyOiBSZW1vdmUgUFlUSE9ORlNFTkNPRElORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMDQ2NTogZml4IGJyb2tlbiBkZWxlZ2F0aW5nIG9mIGF0dHJpYnV0ZXMgYnkgZ3ppcC5fUGFkZGVkRmlsZS4KLQotLSBJc3N1ZSAjMTAzNTY6IERlY2ltYWwuX19oYXNoX18oLTEpIHNob3VsZCByZXR1cm4gLTIuCi0KLS0gSXNzdWUgIzE1NTMzNzU6IGxvZ2dpbmc6IEFkZGVkIHN0YWNrX2luZm8ga3dhcmcgdG8gZGlzcGxheSBzdGFjayBpbmZvcm1hdGlvbi4KLQotLSBJc3N1ZSAjNTExMTogSVB2NiBIb3N0IGluIHRoZSBIZWFkZXIgaXMgd3JhcHBlZCBpbnNpZGUgWyBdLiBQYXRjaCBieSBDaGFuZHJ1LgotCi0tIEZpeCBGcmFjdGlvbi5fX2hhc2hfXyBzbyB0aGF0IEZyYWN0aW9uLl9faGFzaF9fKC0xKSBpcyAtMi4gIChTZWUgYWxzbyBpc3N1ZQotICAjMTAzNTYuKQotCi0tIElzc3VlICM0NDcxOiBBZGQgdGhlIElNQVAuc3RhcnR0bHMoKSBtZXRob2QgdG8gZW5hYmxlIGVuY3J5cHRpb24gb24gc3RhbmRhcmQKLSAgSU1BUDQgY29ubmVjdGlvbnMuICBPcmlnaW5hbCBwYXRjaCBieSBMb3JlbnpvIE0uIENhdHVjY2kuCi0KLS0gSXNzdWUgIzE0NjYwNjU6IEFkZCAndmFsaWRhdGUnIG9wdGlvbiB0byBiYXNlNjQuYjY0ZGVjb2RlIHRvIHJhaXNlIGFuIGVycm9yIGlmCi0gIHRoZXJlIGFyZSBub24tYmFzZTY0IGFscGhhYmV0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0LgotCi0tIElzc3VlICMxMDM4NjogQWRkIF9fYWxsX18gdG8gdG9rZW4gbW9kdWxlOyB0aGlzIHNpbXBsaWZpZXMgaW1wb3J0aW5nIGluCi0gIHRva2VuaXplIG1vZHVsZSBhbmQgcHJldmVudHMgbGVha2luZyBvZiBwcml2YXRlIG5hbWVzIHRocm91Z2ggYGBpbXBvcnQgKmBgLgotCi0tIElzc3VlICM0NDcxOiBQcm9wZXJseSBzaHV0ZG93biBzb2NrZXQgaW4gSU1BUC5zaHV0ZG93bigpLiAgUGF0Y2ggYnkgTG9yZW56bwotICBNLiBDYXR1Y2NpLgotCi0tIEZpeCBJTUFQLmxvZ2luKCkgdG8gd29yayBwcm9wZXJseS4KLQotLSBJc3N1ZSAjOTI0NDogbXVsdGlwcm9jZXNzaW5nIHBvb2wgd29ya2VyIHByb2Nlc3NlcyBjb3VsZCB0ZXJtaW5hdGUKLSAgdW5leHBlY3RlZGx5IGlmIHRoZSByZXR1cm4gdmFsdWUgb2YgYSB0YXNrIGNvdWxkIG5vdCBiZSBwaWNrbGVkLiAgT25seSB0aGUKLSAgYGByZXByYGAgb2Ygc3VjaCBlcnJvcnMgYXJlIG5vdyBzZW50IGJhY2ssIHdyYXBwZWQgaW4gYW4KLSAgYGBNYXliZUVuY29kaW5nRXJyb3JgYCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzkyNDQ6IFRoZSBgYGFwcGx5X2FzeW5jKClgYCBhbmQgYGBtYXBfYXN5bmMoKWBgIG1ldGhvZHMgb2YKLSAgYGBtdWx0aXByb2Nlc3NpbmcuUG9vbGBgIG5vdyBhY2NlcHRzIGEgYGBlcnJvcl9jYWxsYmFja2BgIGFyZ3VtZW50LiAgVGhpcyBjYW4KLSAgYmUgYSBjYWxsYmFjayB3aXRoIHRoZSBzaWduYXR1cmUgYGBjYWxsYmFjayhleGMpYGAsIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGlmCi0gIHRoZSB0YXJnZXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTAwMjI6IFRoZSBkaWN0aW9uYXJ5IHJldHVybmVkIGJ5IHRoZSBgYGdldHBlZXJjZXJ0KClgYCBtZXRob2Qgb2YgU1NMCi0gIHNvY2tldHMgbm93IGhhcyBhZGRpdGlvbmFsIGl0ZW1zIHN1Y2ggYXMgYGBpc3N1ZXJgYCBhbmQgYGBub3RCZWZvcmVgYC4KLQotLSBgYHVzZW5ldHJjYGAgaXMgbm93IGZhbHNlIGJ5IGRlZmF1bHQgZm9yIE5OVFAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTkyNjogQWRkIHN1cHBvcnQgZm9yIE5OVFAgb3ZlciBTU0wgb24gcG9ydCA1NjMsIGFzIHdlbGwgYXMgU1RBUlRUTFMuCi0gIFBhdGNoIGJ5IEFuZHJldyBWYW50LgotCi0tIElzc3VlICMxMDMzNTogQWRkIHRva2VuaXplLm9wZW4oKSwgZGV0ZWN0IHRoZSBmaWxlIGVuY29kaW5nIHVzaW5nCi0gIHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIGFuZCBvcGVuIGl0IGluIHJlYWQgb25seSBtb2RlLgotCi0tIElzc3VlICMxMDMyMTogQWRkIHN1cHBvcnQgZm9yIGJpbmFyeSBkYXRhIHRvIHNtdHBsaWIuU01UUC5zZW5kbWFpbCwgYW5kIGEgbmV3Ci0gIG1ldGhvZCBzZW5kX21lc3NhZ2UgdG8gc2VuZCBhbiBlbWFpbC5tZXNzYWdlLk1lc3NhZ2Ugb2JqZWN0LgotCi0tIElzc3VlICM2MDExOiBzeXNjb25maWcgYW5kIGRpc3R1dGlscy5zeXNjb25maWcgdXNlIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKLSAgaGFuZGxlciB0byBwYXJzZSB0aGUgTWFrZWZpbGUgZmlsZS4gIEF2b2lkIGEgVW5pY29kZURlY29kZUVycm9yIGlmIHRoZSBzb3VyY2UKLSAgY29kZSBkaXJlY3RvcnkgbmFtZSBjb250YWlucyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgYW5kIHRoZSBsb2NhbGUgZW5jb2RpbmcgaXMKLSAgQVNDSUkuCi0KLS0gSXNzdWUgIzEwMzI5OiBUaGUgdHJhY2UgbW9kdWxlIHdyaXRlcyByZXBvcnRzIHVzaW5nIHRoZSBpbnB1dCBQeXRob24gc2NyaXB0Ci0gIGVuY29kaW5nLCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuICBQYXRjaCB3cml0dGVuIGJ5IEFsZXhhbmRlcgotICBCZWxvcG9sc2t5LgotCi0tIElzc3VlICMxMDEyNjogRml4IGRpc3R1dGlscycgdGVzdF9idWlsZCB3aGVuIFB5dGhvbiB3YXMgYnVpbHQgd2l0aAotICAtLWVuYWJsZS1zaGFyZWQuCi0KLS0gSXNzdWUgIzkyODE6IFByZXZlbnQgcmFjZSBjb25kaXRpb24gd2l0aCBta2RpciBpbiBkaXN0dXRpbHMuICBQYXRjaCBieQotICBBcmZyZXZlci4KLQotLSBJc3N1ZSAjMTAyMjk6IEZpeCBjYWNoaW5nIGVycm9yIGluIGdldHRleHQuCi0KLS0gSXNzdWUgIzEwMjUyOiBDbG9zZSBmaWxlIG9iamVjdHMgaW4gYSB0aW1lbHkgbWFubmVyIGluIGRpc3R1dGlscyBjb2RlIGFuZAotICB0ZXN0cy4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbCwgY29tcGxldGVkIGJ5IMOJcmljIEFyYXVqby4KLQotLSBJc3N1ZSAjMTAxODA6IFBpY2tsaW5nIGZpbGUgb2JqZWN0cyBpcyBub3cgZXhwbGljaXRseSBmb3JiaWRkZW4sIHNpbmNlCi0gIHVucGlja2xpbmcgdGhlbSBwcm9kdWNlZCBub25zZW5zaWNhbCByZXN1bHRzLgotCi0tIElzc3VlICMxMDMxMTogVGhlIHNpZ25hbCBtb2R1bGUgbm93IHJlc3RvcmVzIGVycm5vIGJlZm9yZSByZXR1cm5pbmcgZnJvbSBpdHMKLSAgbG93LWxldmVsIHNpZ25hbCBoYW5kbGVyLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotLSBJc3N1ZSAjMTAyODI6IEFkZCBhIGBgbm50cF9pbXBsZW1lbnRhdGlvbmBgIGF0dHJpYnV0ZSB0byBOTlRQIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEwMjgzOiBBZGQgYSBgYGdyb3VwX3BhdHRlcm5gYCBhcmd1bWVudCB0byBOTlRQLmxpc3QoKS4KLQotLSBJc3N1ZSAjMTAxNTU6IEFkZCBJSVNDR0lIYW5kbGVyIHRvIHdzZ2lyZWYuaGFuZGxlcnMgdG8gc3VwcG9ydCBJSVMgQ0dJCi0gIGVudmlyb25tZW50IGJldHRlciwgYW5kIHRvIGNvcnJlY3QgdW5pY29kZSBlbnZpcm9ubWVudCB2YWx1ZXMgZm9yIFdTR0kgMS4wLjEuCi0KLS0gSXNzdWUgIzEwMjgxOiBubnRwbGliIG5vdyByZXR1cm5zIE5vbmUgZm9yIGFic2VudCBmaWVsZHMgaW4gdGhlIE9WRVIvWE9WRVIKLSAgcmVzcG9uc2UsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCi0KLS0gd3NnaXJlZiBub3cgaW1wbGVtZW50cyBhbmQgdmFsaWRhdGVzIFBFUCAzMzMzLCByYXRoZXIgdGhhbiBhbiBleHBlcmltZW50YWwKLSAgZXh0ZW5zaW9uIG9mIFBFUCAzMzMuICAoTm90ZTogZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gMy54IG1heSBoYXZlCi0gIGluY29ycmVjdGx5IHZhbGlkYXRlZCBzb21lIG5vbi1jb21wbGlhbnQgYXBwbGljYXRpb25zIGFzIFdTR0kgY29tcGxpYW50OyBpZgotICB5b3VyIGFwcCB2YWxpZGF0ZXMgd2l0aCBQeXRob24gPDMuMmIxKywgYnV0IG5vdCBvbiB0aGlzIHZlcnNpb24sIGl0IGlzIGxpa2VseQotICB0aGUgY2FzZSB0aGF0IHlvdXIgYXBwIHdhcyBub3QgY29tcGxpYW50LikKLQotLSBJc3N1ZSAjMTAyODA6IE5OVFAubm50cF92ZXJzaW9uIHNob3VsZCByZWZsZWN0IHRoZSBoaWdoZXN0IHZlcnNpb24gYWR2ZXJ0aXNlZAotICBieSB0aGUgc2VydmVyLgotCi0tIElzc3VlICMxMDE4NDogVG91Y2ggZGlyZWN0b3JpZXMgb25seSBvbmNlIHdoZW4gZXh0cmFjdGluZyBhIHRhcmZpbGUuCi0KLS0gSXNzdWUgIzEwMTk5OiBOZXcgcGFja2FnZSwgYGB0dXJ0bGVkZW1vYGAgbm93IGNvbnRhaW5zIHNlbGVjdGVkIGRlbW8gc2NyaXB0cwotICB0aGF0IHdlcmUgZm9ybWVybHkgZm91bmQgdW5kZXIgRGVtby90dXJ0bGUuCi0KLS0gSXNzdWUgIzEwMjY1OiBDbG9zZSBmaWxlIG9iamVjdHMgZXhwbGljaXRseSBpbiBzdW5hdS4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBJc3N1ZSAjMTAyNjY6IHV1LmRlY29kZSBkaWRuJ3QgY2xvc2UgaW5fZmlsZSBleHBsaWNpdGx5IHdoZW4gaXQgd2FzIGdpdmVuIGFzIGEKLSAgZmlsZW5hbWUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzEwMTEwOiBRdWV1ZSBvYmplY3RzIGRpZG4ndCByZWNvZ25pemUgZnVsbCBxdWV1ZXMgd2hlbiB0aGUgbWF4c2l6ZQotICBwYXJhbWV0ZXIgaGFkIGJlZW4gcmVkdWNlZC4KLQotLSBJc3N1ZSAjMTAxNjA6IFNwZWVkIHVwIG9wZXJhdG9yLmF0dHJnZXR0ZXIuICBQYXRjaCBieSBDaHJpc3RvcyBHZW9yZ2lvdS4KLQotLSBsb2dnaW5nOiBBZGRlZCBzdHlsZSBvcHRpb24gdG8gYmFzaWNDb25maWcoKSB0byBhbGxvdyAlLCB7fSBvciAkLWZvcm1hdHRpbmcuCi0KLS0gSXNzdWUgIzU3Mjk6IGpzb24uZHVtcHMoKSBub3cgc3VwcG9ydHMgdXNpbmcgYSBzdHJpbmcgc3VjaCBhcyAnXHQnIGZvcgotICBwcmV0dHktcHJpbnRpbmcgbXVsdGlsZXZlbCBvYmplY3RzLgotCi0tIElzc3VlICMxMDI1MzogRmlsZUlPIGxlYWtzIGEgZmlsZSBkZXNjcmlwdG9yIHdoZW4gdHJ5aW5nIHRvIG9wZW4gYSBmaWxlIGZvcgotICBhcHBlbmQgdGhhdCBpc24ndCBzZWVrYWJsZS4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBTdXBwb3J0IGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBmb3IgZmlsZS1saWtlIG9iamVjdHMgcmV0dXJuZWQgYnkgbWFpbGJveAotICBgYGdldF9maWxlKClgYCBtZXRob2RzLgotCi0tIElzc3VlICMxMDI0NjogdXUuZW5jb2RlIGRpZG4ndCBjbG9zZSBmaWxlIG9iamVjdHMgZXhwbGljaXRseSB3aGVuIGZpbGVuYW1lcwotICB3ZXJlIGdpdmVuIHRvIGl0LiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICMxMDE5ODogZml4IGR1cGxpY2F0ZSBoZWFkZXIgd3JpdHRlbiB0byB3YXZlIGZpbGVzIHdoZW4gd3JpdGVmcmFtZXMoKSBpcwotICBjYWxsZWQgd2l0aG91dCBkYXRhLgotCi0tIENsb3NlIGZpbGUgb2JqZWN0cyBpbiBtb2R1bGVmaW5kZXIgaW4gYSB0aW1lbHkgbWFubmVyLgotCi0tIENsb3NlIGEgaW8uVGV4dElPV3JhcHBlciBvYmplY3QgaW4gZW1haWwucGFyc2VyIGluIGEgdGltZWx5IG1hbm5lci4KLQotLSBDbG9zZSBhIGZpbGUgb2JqZWN0IGluIGRpc3R1dGlscy5zeXNjb25maWcgaW4gYSB0aW1lbHkgbWFubmVyLgotCi0tIENsb3NlIGEgZmlsZSBvYmplY3QgaW4gcGtndXRpbCBpbiBhIHRpbWVseSBtYW5uZXIuCi0KLS0gSXNzdWUgIzEwMjMzOiBDbG9zZSBmaWxlIG9iamVjdHMgaW4gYSB0aW1lbHkgbWFubmVyIGluIHRoZSB0YXJmaWxlIG1vZHVsZSBhbmQKLSAgaXRzIHRlc3Qgc3VpdGUuCi0KLS0gSXNzdWUgIzEwMDkzOiBSZXNvdXJjZVdhcm5pbmdzIGFyZSBub3cgaXNzdWVkIHdoZW4gZmlsZXMgYW5kIHNvY2tldHMgYXJlCi0gIGRlYWxsb2NhdGVkIHdpdGhvdXQgZXhwbGljaXQgY2xvc2luZy4gIFRoZXNlIHdhcm5pbmdzIGFyZSBzaWxlbmNlZCBieSBkZWZhdWx0LAotICBleGNlcHQgaW4gcHlkZWJ1ZyBtb2RlLgotCi0tIHRhcmZpbGUucHk6IEFkZCBzdXBwb3J0IGZvciBhbGwgbWlzc2luZyB2YXJpYW50cyBvZiB0aGUgR05VIHNwYXJzZSBleHRlbnNpb25zCi0gIGFuZCBjcmVhdGUgZmlsZXMgd2l0aCBob2xlcyB3aGVuIGV4dHJhY3Rpbmcgc3BhcnNlIG1lbWJlcnMuCi0KLS0gSXNzdWUgIzEwMjE4OiBSZXR1cm4gdGltZW91dCBzdGF0dXMgZnJvbSBgYENvbmRpdGlvbi53YWl0YGAgaW4gdGhyZWFkaW5nLgotCi0tIElzc3VlICM3MzUxOiBBZGQgYGB6aXBmaWxlLkJhZFppcEZpbGVgYCBzcGVsbGluZyBvZiB0aGUgZXhjZXB0aW9uIG5hbWUgYW5kCi0gIGRlcHJlY2F0ZSB0aGUgb2xkIG5hbWUgYGB6aXBmaWxlLkJhZFppcGZpbGVgYC4KLQotLSBJc3N1ZSAjNTAyNzogVGhlIHN0YW5kYXJkIGBgeG1sYGAgbmFtZXNwYWNlIGlzIG5vdyB1bmRlcnN0b29kIGJ5Ci0gIHhtbC5zYXguc2F4dXRpbHMuWE1MR2VuZXJhdG9yIGFzIGJlaW5nIGJvdW5kIHRvCi0gIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS4gIFBhdGNoIGJ5IFRyb3kgSi4gRmFycmVsbC4KLQotLSBJc3N1ZSAjNTk3NTogQWRkIGNzdi51bml4X2RpYWxlY3QgY2xhc3MuCi0KLS0gSXNzdWUgIzc3NjE6IHRlbG5ldGxpYi5pbnRlcmFjdCBmYWlsdXJlcyBvbiBXaW5kb3dzIGZpeGVkLgotCi0tIGxvZ2dpbmc6IEFkZGVkIHN0eWxlIG9wdGlvbiB0byBGb3JtYXR0ZXIgdG8gYWxsb3cgJSwge30gb3IgJC1mb3JtYXR0aW5nLgotCi0tIElzc3VlICM1MTc4OiBBZGRlZCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkgY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCBhcyBhCi0gIGNvbnRleHQgbWFuYWdlci4KLQotLSBJc3N1ZSAjMTM0OTEwNjogR2VuZXJhdG9yIChhbmQgQnl0ZXNHZW5lcmF0b3IpIGZsYXR0ZW4gbWV0aG9kIGFuZCBIZWFkZXIKLSAgZW5jb2RlIG1ldGhvZCBub3cgc3VwcG9ydCBhICdsaW5lc2VwJyBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNTYzOTogQWRkIGEgKnNlcnZlcl9ob3N0bmFtZSogYXJndW1lbnQgdG8gYGBTU0xDb250ZXh0LndyYXBfc29ja2V0YGAgaW4KLSAgb3JkZXIgdG8gc3VwcG9ydCB0aGUgVExTIFNOSSBleHRlbnNpb24uICBgYEhUVFBTQ29ubmVjdGlvbmBgIGFuZCBgYHVybG9wZW4oKWBgCi0gIGFsc28gdXNlIHRoaXMgYXJndW1lbnQsIHNvIHRoYXQgSFRUUFMgdmlydHVhbCBob3N0cyBhcmUgbm93IHN1cHBvcnRlZC4KLQotLSBJc3N1ZSAjMTAxNjY6IEF2b2lkIHJlY3Vyc2lvbiBpbiBwc3RhdHMgU3RhdHMuYWRkKCkgZm9yIG1hbnkgc3RhdHMgaXRlbXMuCi0KLS0gSXNzdWUgIzEwMTYzOiBTa2lwIHVucmVhZGFibGUgcmVnaXN0cnkga2V5cyBkdXJpbmcgbWltZXR5cGVzIGluaXRpYWxpemF0aW9uLgotCi0tIGxvZ2dpbmc6IE1hZGUgU3RyZWFtSGFuZGxlciB0ZXJtaW5hdG9yIGNvbmZpZ3VyYWJsZS4KLQotLSBsb2dnaW5nOiBBbGxvd2VkIGZpbHRlcnMgdG8gYmUganVzdCBjYWxsYWJsZXMuCi0KLS0gbG9nZ2luZzogQWRkZWQgdGVzdHMgZm9yIF9sb2dSZWNvcmRDbGFzcyBjaGFuZ2VzLgotCi0tIElzc3VlICMxMDA5MjogUHJvcGVybHkgcmVzZXQgbG9jYWxlIGluIGNhbGVuZGFyLkxvY2FsZSpDYWxlbmRhciBjbGFzc2VzLgotCi0tIGxvZ2dpbmc6IEFkZGVkIF9sb2dSZWNvcmRDbGFzcywgZ2V0TG9nUmVjb3JkQ2xhc3MsIHNldExvZ1JlY29yZENsYXNzIHRvCi0gIGluY3JlYXNlIGZsZXhpYmlsaXR5IG9mIExvZ1JlY29yZCBjcmVhdGlvbi4KLQotLSBJc3N1ZSAjNTExNzogQ2FzZSBub3JtYWxpemF0aW9uIHdhcyBuZWVkZWQgb24gbnRwYXRoLnJlbHBhdGgoKS4gIEFsc28gZml4ZWQKLSAgcm9vdCBkaXJlY3RvcnkgaXNzdWUgb24gcG9zaXhwYXRoLnJlbHBhdGgoKS4gIChQb3J0ZWQgd29ya2luZyBmaXhlcyBmcm9tCi0gIG50cGF0aC4pCi0KLS0gSXNzdWUgIzEzNDM6IHhtbC5zYXguc2F4dXRpbHMuWE1MR2VuZXJhdG9yIG5vdyBoYXMgYW4gb3B0aW9uCi0gIHNob3J0X2VtcHR5X2VsZW1lbnRzIHRvIGRpcmVjdCBpdCB0byB1c2Ugc2VsZi1jbG9zaW5nIHRhZ3Mgd2hlbiBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjOTgwNyAocGFydCAxKTogRXhwb3NlIHRoZSBBQkkgZmxhZ3MgaW4gc3lzLmFiaWZsYWdzLiAgQWRkIC0tYWJpZmxhZ3MKLSAgc3dpdGNoIHRvIHB5dGhvbi1jb25maWcgZm9yIGNvbW1hbmQgbGluZSBhY2Nlc3MuCi0KLS0gSXNzdWUgIzYwOTg6IERvbid0IGNsYWltIERPTSBsZXZlbCAzIGNvbmZvcm1hbmNlIGluIG1pbmlkb20uCi0KLS0gSXNzdWUgIzU3NjI6IEZpeCBBdHRyaWJ1dGVFcnJvciByYWlzZWQgYnkgYGB4bWwuZG9tLm1pbmlkb21gYCB3aGVuIGFuIGVtcHR5Ci0gIFhNTCBuYW1lc3BhY2UgYXR0cmlidXRlIGlzIGVuY291bnRlcmVkLgotCi0tIElzc3VlICMyODMwOiBBZGQgdGhlIGBgaHRtbC5lc2NhcGUoKWBgIGZ1bmN0aW9uLCB3aGljaCBxdW90ZXMgYWxsIHByb2JsZW1hdGljCi0gIGNoYXJhY3RlcnMgYnkgZGVmYXVsdC4gIERlcHJlY2F0ZSBgYGNnaS5lc2NhcGUoKWBgLgotCi0tIElzc3VlICM5NDA5OiBGaXggdGhlIHJlZ2V4IHRvIG1hdGNoIGFsbCBraW5kIG9mIGZpbGVuYW1lcywgZm9yIGludGVyYWN0aXZlCi0gIGRlYnVnZ2luZyBpbiBkb2N0ZXN0cy4KLQotLSBJc3N1ZSAjOTE4MzogYGBkYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoMCkpYGAgd2lsbCBub3cgcmV0dXJuIHRoZQotICBzYW1lIGluc3RhbmNlIGFzIGBgZGF0ZXRpbWUudGltZXpvbmUudXRjYGAuCi0KLS0gSXNzdWUgIzc1MjM6IEFkZCBTT0NLX0NMT0VYRUMgYW5kIFNPQ0tfTk9OQkxPQ0sgdG8gdGhlIHNvY2tldCBtb2R1bGUsIHdoZXJlCi0gIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtLiAgUGF0Y2ggYnkgTmlraXRhIFZldG9zaGtpbi4KLQotLSBJc3N1ZSAjMTAwNjM6IGZpbGU6Ly8gc2NoZW1lIHdpbGwgc3RvcCBhY2Nlc3NpbmcgcmVtb3RlIGhvc3RzIHZpYSBmdHAKLSAgcHJvdG9jb2wuIGZpbGU6Ly8gdXJscyBoYWQgZmFsbGJhY2sgdG8gYWNjZXNzIHJlbW90ZSBob3N0cyB2aWEgZnRwLiBUaGlzIHdhcwotICBub3QgY29ycmVjdCwgY2hhbmdlIGlzIG1hZGUgdG8gcmFpc2UgYSBVUkxFcnJvciB3aGVuIGEgcmVtb3RlIGhvc3QgaXMgdHJpZWQgdG8KLSAgYWNjZXNzIHZpYSBmaWxlOi8vIHNjaGVtZS4KLQotLSBJc3N1ZSAjMTcxMDcwMzogV3JpdGUgc3RydWN0dXJlcyBmb3IgYW4gZW1wdHkgWklQIGFyY2hpdmUgd2hlbiBhIFppcEZpbGUgaXMKLSAgY3JlYXRlZCBpbiBtb2RlcyAnYScgb3IgJ3cnIGFuZCB0aGVuIGNsb3NlZCB3aXRob3V0IGFkZGluZyBhbnkgZmlsZXMuIFJhaXNlCi0gIEJhZFppcGZpbGUgKHJhdGhlciB0aGFuIElPRXJyb3IpIHdoZW4gb3BlbmluZyBzbWFsbCBub24tWklQIGZpbGVzLgotCi0tIElzc3VlICMxMDA0MTogVGhlIHNpZ25hdHVyZSBvZiBvcHRpb25hbCBhcmd1bWVudHMgaW4gc29ja2V0Lm1ha2VmaWxlKCkgZGlkbid0Ci0gIG1hdGNoIHRoYXQgb2YgaW8ub3BlbigpLCBhbmQgdGhleSBhbHNvIGRpZG4ndCBnZXQgZm9yd2FyZGVkIHByb3Blcmx5IHRvCi0gIFRleHRJT1dyYXBwZXIgaW4gdGV4dCBtb2RlLiAgUGF0Y2ggYnkgS2FpIFpodS4KLQotLSBJc3N1ZSAjOTAwMzogaHR0cC5jbGllbnQuSFRUUFNDb25uZWN0aW9uLCB1cmxsaWIucmVxdWVzdC5IVFRQU0hhbmRsZXIgYW5kCi0gIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4gbm93IHRha2Ugb3B0aW9uYWwgYXJndW1lbnRzIHRvIGFsbG93IGZvciBzZXJ2ZXIKLSAgY2VydGlmaWNhdGUgY2hlY2tpbmcsIGFzIHJlY29tbWVuZGVkIGluIHB1YmxpYyB1c2VzIG9mIEhUVFBTLgotCi0tIElzc3VlICM2NjEyOiBGaXggc2l0ZSBhbmQgc3lzY29uZmlnIHRvIGNhdGNoIG9zLmdldGN3ZCgpIGVycm9yLCBlZy4gaWYgdGhlCi0gIGN1cnJlbnQgZGlyZWN0b3J5IHdhcyBkZWxldGVkLiBQYXRjaCB3cml0dGVuIGJ5IFcuIFRyZXZvciBLaW5nLgotCi0tIElzc3VlICMzODczOiBTcGVlZCB1cCB1bnBpY2tsaW5nIGZyb20gZmlsZSBvYmplY3RzIHRoYXQgaGF2ZSBhIHBlZWsoKSBtZXRob2QuCi0KLS0gSXNzdWUgIzEwMDc1OiBBZGQgYSBzZXNzaW9uX3N0YXRzKCkgbWV0aG9kIHRvIFNTTENvbnRleHQgb2JqZWN0cy4KLQotLSBJc3N1ZSAjOTk0ODogRml4ZWQgcHJvYmxlbSBvZiBsb3NpbmcgZmlsZW5hbWUgY2FzZSBpbmZvcm1hdGlvbi4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzUxMDk6IGFycmF5LmFycmF5IGNvbnN0cnVjdG9yIHdpbGwgbm93IHVzZSBmYXN0IGNvZGUgd2hlbgotICBpbml0aWFsIGRhdGEgaXMgcHJvdmlkZWQgaW4gYW4gYXJyYXkgb2JqZWN0IHdpdGggY29ycmVjdCB0eXBlLgotCi0tIElzc3VlICM2MzE3OiBOb3cgd2luc291bmQuUGxheVNvdW5kIG9ubHkgYWNjZXB0cyB1bmljb2RlLgotCi0tIElzc3VlICM2MzE3OiBOb3cgd2luc291bmQuUGxheVNvdW5kIGNhbiBhY2NlcHQgbm9uIGFzY2lpIGZpbGVuYW1lLgotCi0tIElzc3VlICM5Mzc3OiBVc2UgVW5pY29kZSBBUEkgZm9yIGdldGhvc3RuYW1lIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEwMTQzOiBVcGRhdGUgIm9zLnBhdGhjb25mIiB2YWx1ZXMuCi0KLS0gSXNzdWUgIzY1MTg6IFN1cHBvcnQgY29udGV4dCBtYW5hZ2VyIHByb3Rjb2wgZm9yIG9zc2F1ZGlvZGV2IHR5cGVzLgotCi0tIElzc3VlICM2NzgyNTA6IE1ha2UgbW1hcCBmbHVzaCBhIG5vb3Agb24gQUNDRVNTX1JFQUQgYW5kIEFDQ0VTU19DT1BZLgotCi0tIElzc3VlICM5MDU0OiBGaXggYSBjcmFzaCBvY2N1cnJpbmcgd2hlbiB1c2luZyB0aGUgcHlleHBhdCBtb2R1bGUgd2l0aCBleHBhdAotICB2ZXJzaW9uIDIuMC4xLgotCi0tIElzc3VlICM1MzU1OiBQcm92aWRlIG1hcHBpbmdzIGZyb20gRXhwYXQgZXJyb3IgbnVtYmVycyB0byBzdHJpbmcgZGVzY3JpcHRpb25zCi0gIGFuZCBiYWNrd2FyZHMsIGluIG9yZGVyIHRvIGFjdHVhbGx5IG1ha2UgaXQgcG9zc2libGUgdG8gYW5hbHl6ZSBlcnJvciBjb2RlcwotICBwcm92aWRlZCBieSBFeHBhdEVycm9yLgotCi0tIFRoZSBVbmljb2RlIGRhdGFiYXNlIHdhcyB1cGRhdGVkIHRvIDYuMC4wLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTAyODg6IFRoZSBkZXByZWNhdGVkIGZhbWlseSBvZiAiY2hhciItaGFuZGxpbmcgbWFjcm9zCi0gIChJU0xPV0VSKCkvSVNVUFBFUigpL2V0YykgaGF2ZSBub3cgYmVlbiByZW1vdmVkOiB1c2UgUHlfSVNMT1dFUigpIGV0YyBpbnN0ZWFkLgotCi0tIElzc3VlICM5Nzc4OiBIYXNoIHZhbHVlcyBhcmUgbm93IGFsd2F5cyB0aGUgc2l6ZSBvZiBwb2ludGVycy4gQSBuZXcgUHlfaGFzaF90Ci0gIHR5cGUgaGFzIGJlZW4gaW50cm9kdWNlZC4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwMTE3OiBUb29scy9zY3JpcHRzL3JlaW5kZW50LnB5IG5vdyBhY2NlcHRzIHNvdXJjZSBmaWxlcyB0aGF0IHVzZQotICBlbmNvZGluZyBvdGhlciB0aGFuIEFTQ0lJIG9yIFVURi04LiAgU291cmNlIGVuY29kaW5nIGlzIHByZXNlcnZlZCB3aGVuCi0gIHJlaW5kZW50ZWQgY29kZSBpcyB3cml0dGVuIHRvIGEgZmlsZS4KLQotLSBJc3N1ZSAjNzI4NzogRGVtby9pbXB1dGlsL2tuZWUucHkgd2FzIHJlbW92ZWQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMzNjk5OiBGaXggdGVzdF9iaWdhZGRyc3BhY2UgYW5kIGV4dGVuZCBpdCB0byB0ZXN0IGJ5dGVzdHJpbmdzIGFzIHdlbGwKLSAgYXMgdW5pY29kZSBzdHJpbmdzLiAgSW5pdGlhbCBwYXRjaCBieSBTYW5kcm8gVG9zaS4KLQotLSBJc3N1ZSAjMTAyOTQ6IFJlbW92ZSBkZWFkIGNvZGUgZm9ybSB0ZXN0X3VuaWNvZGVfZmlsZS4KLQotLSBJc3N1ZSAjMTAxMjM6IERvbid0IHVzZSBub24tYXNjaWkgZmlsZW5hbWVzIGluIHRlc3RfZG9jdGVzdCB0ZXN0cy4gQWRkIGEgbmV3Ci0gIHRlc3Qgc3BlY2lmaWMgdG8gdW5pY29kZSAobm9uLWFzY2lpIG5hbWUgYW5kIGZpbGVuYW1lKS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEwMjY4OiBBZGQgYSAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucyBvcHRpb24gdG8gY29uZmlndXJlLgotCi0tIElzc3VlICM4ODUyOiBBbGxvdyB0aGUgc29ja2V0IG1vZHVsZSB0byBidWlsZCBvbiBPcGVuU29sYXJpcy4KLQotLSBEcm9wIC1PUFQ6T2xpbWl0IGNvbXBpbGVyIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTAwOTQ6IFVzZSB2ZXJzaW9uZWQgLnNvIGZpbGVzIG9uIEdOVS9rZnJlZUJTRCBhbmQgdGhlIEdOVSBIdXJkLgotCi0tIEFjY2VwdCBPcmFjbGUgQmVya2VsZXkgREIgNS4wIGFuZCA1LjEgYXMgYmFja2VuZCBmb3IgdGhlIGRibSBleHRlbnNpb24uCi0KLS0gSXNzdWUgIzc0NzM6IGF2b2lkIGxpbmsgZXJyb3JzIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBhIGRpZmZlcmVudCBzZXQKLSAgb2YgYXJjaGl0ZWN0dXJlcyB0aGFuIHRoZSBvbmUgdGhhdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAzPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA5LU9jdC0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAwNjg6IEdsb2JhbCBvYmplY3RzIHdoaWNoIGhhdmUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoIHRoZWlyIG1vZHVsZSdzCi0gIGRpY3QgYXJlIG5vdyBjbGVhcmVkIGFnYWluLiBUaGlzIGNhdXNlcyBpc3N1ZSAjNzE0MCB0byBhcHBlYXIgYWdhaW4uCi0KLS0gSXNzdWUgIzk3Mzg6IERvY3VtZW50IFB5RXJyX1NldFN0cmluZygpIGFuZCBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoKQotICBlbmNvZGluZ3MuCi0KLS0gYXN0LmxpdGVyYWxfZXZhbCgpIGNhbiBub3cgaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMuICBJdCBpcyBhbHNvIGEgbGl0dGxlIG1vcmUKLSAgbGliZXJhbCBpbiB3aGF0IGl0IGFjY2VwdHMgd2l0aG91dCBjb21wcm9taXNpbmcgdGhlIHNhZmV0eSBvZiB0aGUgZXZhbHVhdGlvbi4KLSAgRm9yIGV4YW1wbGUsIDNqKzQgYW5kIDMrNCs1IGFyZSBib3RoIGFjY2VwdGVkLgotCi0tIElzc3VlICMxMDAwNjogdHlwZS5fX2Fic3RyYWN0bWV0aG9kc19fIG5vdyByYWlzZXMgYW4gQXR0cmlidXRlRXJyb3IuICBBcyBhCi0gIHJlc3VsdCBtZXRhY2xhc3NlcyBjYW4gbm93IGJlIEFCQ3MgKHNlZSAjOTUzMykuCi0KLS0gSXNzdWUgIzg2NzA6IGN0eXBlcy5jX3djaGFyIHN1cHBvcnRzIG5vbi1CTVAgY2hhcmFjdGVycyB3aXRoIDMyIGJpdHMgd2NoYXJfdC4KLQotLSBJc3N1ZSAjODY3MDogUHlVbmljb2RlX0FzV2lkZUNoYXIoKSBhbmQgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKSByZXBsYWNlCi0gIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgYnkgc2luZ2xlIG5vbi1CTVAgY2hhcmFjdGVycyBmb3IgMTYgYml0cyBQeV9VTklDT0RFIGFuZAotICAzMiBiaXRzIHdjaGFyX3QgKGVnLiBMaW51eCBpbiBuYXJyb3cgYnVpbGQpLgotCi0tIElzc3VlICMxMDAwMzogQWxsb3cgaGFuZGxpbmcgb2YgU0lHQlJFQUsgb24gV2luZG93cy4gRml4ZXMgYSByZWdyZXNzaW9uCi0gIGludHJvZHVjZWQgYnkgaXNzdWUgIzkzMjQuCi0KLS0gSXNzdWUgIzk5Nzk6IENyZWF0ZSBmdW5jdGlvbiBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZygpLgotCi0tIElzc3VlICM3Mzk3OiBNZW50aW9uIHRoYXQgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSBpcyBwcm9iYWJseSB3aGF0IHNvbWVvbmUKLSAgcmVhbGx5IHdhbnRzIHRvIGJlIHVzaW5nIGluIF9faW1wb3J0X18ncyBkb2NzdHJpbmcuCi0KLS0gSXNzdWUgIzg1MjE6IEFsbG93IENyZWF0ZUtleUV4LCBPcGVuS2V5RXgsIGFuZCBEZWxldGVLZXlFeCBmdW5jdGlvbnMgb2Ygd2lucmVnCi0gIHRvIHVzZSBuYW1lZCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzk5MzA6IFJlbW92ZSBib2d1cyBzdWJ0eXBlIGNoZWNrIHRoYXQgd2FzIGNhdXNpbmcgKGUuZy4pCi0gIGZsb2F0Ll9fcmRpdl9fKDIuMCwgMykgdG8gcmV0dXJuIE5vdEltcGxlbWVudGVkIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIDEuNS4KLQotLSBJc3N1ZSAjOTgwODogSW1wbGVtZW50IG9zLmdldGxvZ2luIGZvciBXaW5kb3dzLiBQYXRjaCBieSBKb24gQW5nbGluLgotCi0tIElzc3VlICM5OTAxOiBEZXN0cm95aW5nIHRoZSBHSUwgaW4gUHlfRmluYWxpemUoKSBjYW4gZmFpbCBpZiBzb21lIG90aGVyCi0gIHRocmVhZHMgYXJlIHN0aWxsIHJ1bm5pbmcuICBJbnN0ZWFkLCByZWluaXRpYWxpemUgdGhlIEdJTCBvbiBhIHNlY29uZCBjYWxsIHRvCi0gIFB5X0luaXRpYWxpemUoKS4KLQotLSBBbGwgU3ludGF4RXJyb3JzIG5vdyBoYXZlIGEgY29sdW1uIG9mZnNldCBhbmQgdGhlcmVmb3JlIGEgY2FyZXQgd2hlbiB0aGUgZXJyb3IKLSAgaXMgcHJpbnRlZC4KLQotLSBJc3N1ZSAjOTI1MjogUHlJbXBvcnRfSW1wb3J0IG5vIGxvbmdlciB1c2VzIGEgZnJvbWxpc3QgaGFjayB0byByZXR1cm4gdGhlCi0gIG1vZHVsZSB0aGF0IHdhcyBpbXBvcnRlZCwgYnV0IGluc3RlYWQgZ2V0cyB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMuCi0KLS0gSXNzdWUgIzkyMTM6IFRoZSByYW5nZSB0eXBlX2l0ZW1zIG5vdyBwcm92aWRlcyBpbmRleCgpIGFuZCBjb3VudCgpIG1ldGhvZHMsIHRvCi0gIGNvbmZvcm0gdG8gdGhlIFNlcXVlbmNlIEFCQy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbiBhbmQgRGFuaWVsIFN0dXR6YmFjaC4KLQotLSBJc3N1ZSAjNzk5NDogSXNzdWUgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGlmIG9iamVjdC5fX2Zvcm1hdF9fIGlzIGNhbGxlZAotICB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcuICBUaGlzIGlzIGFuIGVmZm9ydCB0byBmdXR1cmUtcHJvb2YgdXNlcgotICBjb2RlLiBJZiBhIGRlcml2ZWQgY2xhc3MgZG9lcyBub3QgY3VycmVudGx5IGltcGxlbWVudCBfX2Zvcm1hdF9fIGJ1dCBsYXRlcgotICBhZGRzIGl0cyBvd24gX19mb3JtYXRfXywgaXQgd291bGQgbW9zdCBsaWtlbHkgYnJlYWsgdXNlciBjb2RlIHRoYXQgaGFkCi0gIHN1cHBsaWVkIGEgZm9ybWF0IHN0cmluZy4gIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvIGEgRGVwcmVjYXRpb25XYXJpbmcgaW4KLSAgUHl0aG9uIDMuMyBhbmQgaXQgd2lsbCBiZSBhbiBlcnJvciBpbiBQeXRob24gMy40LgotCi0tIElzc3VlICM5ODI4OiBEZXN0cm95IHRoZSBHSUwgaW4gUHlfRmluYWxpemUoKSwgc28gdGhhdCBpdCBnZXRzIHByb3Blcmx5Ci0gIHJlLWNyZWF0ZWQgb24gYSBzdWJzZXF1ZW50IGNhbGwgdG8gUHlfSW5pdGlhbGl6ZSgpLiAgVGhlIHByb2JsZW0gKGEgY3Jhc2gpCi0gIHdvdWxkbid0IGFwcGVhciBpbiAzLjEgb3IgMi43IHdoZXJlIHRoZSBHSUwncyBzdHJ1Y3R1cmUgaXMgbW9yZSB0cml2aWFsLgotCi0tIElzc3VlICM5MjEwOiBDb25maWd1cmUgb3B0aW9uIC0td2l0aC13Y3R5cGUtZnVuY3Rpb25zIHdhcyByZW1vdmVkLiAgVXNpbmcgdGhlCi0gIGZ1bmN0aW9ucyBmcm9tIHRoZSBsaWJjIGNhdXNlZCB0aGUgbWV0aG9kcyAudXBwZXIoKSBhbmQgbG93ZXIoKSB0byBiZWNvbWUKLSAgbG9jYWxlIGF3YXJlIGFuZCBjcmVhdGVkIHN1YnRseSB3cm9uZyByZXN1bHRzLgotCi0tIElzc3VlICM5NzM4OiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGFuZCBQeUVycl9Gb3JtYXQoKSByYWlzZSBhbiBlcnJvciBvbiBhCi0gIG5vbi1BU0NJSSBieXRlIGluIHRoZSBmb3JtYXQgc3RyaW5nLgotCi0tIElzc3VlICM0NjE3OiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWUgZnJvbSB0aGUgbG9jYWwKLSAgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWQgYmxvY2suICBUaGlzIGxpbWl0YXRpb24KLSAgb2YgdGhlIGNvbXBpbGVyIGhhcyBiZWVuIGxpZnRlZCwgYW5kIGEgbmV3IG9wY29kZSBpbnRyb2R1Y2VkIChERUxFVEVfREVSRUYpLgotCi0tIElzc3VlICM5ODA0OiBhc2NpaSgpIG5vdyBhbHdheXMgcmVwcmVzZW50cyB1bmljb2RlIHN1cnJvZ2F0ZSBwYWlycyBhcyBhIHNpbmdsZQotICBgYFxVWFhYWFhYWFhgYCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgcHJpbnRhYmxlIG9yIG5vdC4KLSAgQWxzbywgdGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvciBoYW5kbGVyIG5vdyBqb2lucyBzdXJyb2dhdGUgcGFpcnMgaW50byBhCi0gIHNpbmdsZSBjaGFyYWN0ZXIgb24gVUNTLTIgYnVpbGRzLgotCi0tIElzc3VlICM5NzU3OiBtZW1vcnl2aWV3IG9iamVjdHMgZ2V0IGEgcmVsZWFzZSgpIG1ldGhvZCB0byByZWxlYXNlIHRoZQotICB1bmRlcmx5aW5nIGJ1ZmZlciAocHJldmlvdXNseSB0aGlzIHdhcyBvbmx5IGRvbmUgd2hlbiBkZWFsbG9jYXRpbmcgdGhlCi0gIG1lbW9yeXZpZXcpLCBhbmQgZ2FpbiBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgotCi0tIElzc3VlICM5Nzk3OiBweXN0YXRlLmMgd3JvbmdseSBhc3N1bWVkIHRoYXQgemVybyBjb3VsZG4ndCBiZSBhIHZhbGlkCi0gIHRocmVhZC1sb2NhbCBzdG9yYWdlIGtleS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyMjM2OiBkaXN0dXRpbHMnIG1rcGF0aCBpZ25vcmVkIHRoZSBtb2RlIHBhcmFtZXRlci4KLQotLSBGaXggdHlwbyBpbiBvbmUgc2Rpc3Qgb3B0aW9uIChtZWRhdGEtY2hlY2spLgotCi0tIElzc3VlICM5MTk5OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBkaXN0dXRpbHMuY21kLkNvbW1hbmQuYW5ub3VuY2UuCi0KLS0gSXNzdWUgIzE3MTg1NzQ6IEZpeCBvcHRpb25zIHRoYXQgd2VyZSBzdXBwb3NlZCB0byBhY2NlcHQgYXJndW1lbnRzIGJ1dCBkaWQKLSAgbm90IGluIGJ1aWxkX2NsaWIuCi0KLS0gSXNzdWUgIzk0Mzc6IEZpeCBidWlsZGluZyBDIGV4dGVuc2lvbnMgd2l0aCBub24tZGVmYXVsdCBMREZMQUdTLgotCi0tIElzc3VlICM0NjYxOiBlbWFpbCBjYW4gbm93IHBhcnNlIGJ5dGVzIGlucHV0IGFuZCBnZW5lcmF0ZSBlaXRoZXIgY29udmVydGVkCi0gIDdiaXQgb3V0cHV0IG9yIGJ5dGVzIG91dHB1dC4gIEVtYWlsIHZlcnNpb24gYnVtcGVkIHRvIDUuMS4wLgotCi0tIElzc3VlICMxNTg5OiBBZGQgc3NsLm1hdGNoX2hvc3RuYW1lKCksIHRvIGhlbHAgaW1wbGVtZW50IHNlcnZlciBpZGVudGl0eQotICB2ZXJpZmljYXRpb24gZm9yIGhpZ2hlci1sZXZlbCBwcm90b2NvbHMuCi0KLS0gSXNzdWUgIzk3NTk6IEd6aXBGaWxlIG5vdyByYWlzZXMgVmFsdWVFcnJvciB3aGVuIGFuIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQKLSAgYWZ0ZXIgdGhlIGZpbGUgaXMgY2xvc2VkLiAgUGF0Y2ggYnkgSmVmZnJleSBGaW5rZWxzdGVpbi4KLQotLSBJc3N1ZSAjOTA0MjogRml4IGludGVyYWN0aW9uIG9mIGN1c3RvbSB0cmFuc2xhdGlvbiBjbGFzc2VzIGFuZCBjYWNoaW5nIGluCi0gIGdldHRleHQuCi0KLS0gSXNzdWUgIzY3MDY6IGFzeW5jb3JlLmRpc3BhdGNoZXIgbm93IHByb3ZpZGVzIGEgaGFuZGxlX2FjY2VwdGVkKCkgbWV0aG9kCi0gIHJldHVybmluZyBhIChzb2NrLCBhZGRyKSBwYWlyIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGEgY29ubmVjdGlvbiBoYXMgYmVlbgotICBlc3RhYmxpc2hlZCB3aXRoIGEgbmV3IHJlbW90ZSBlbmRwb2ludC4gIFRoaXMgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhcyBhCi0gIHJlcGxhY2VtZW50IGZvciBvbGQgaGFuZGxlX2FjY2VwdCgpIGFuZCBhdm9pZHMgdGhlIHVzZXIgdG8gY2FsbCBhY2NlcHQoKQotICBkaXJlY3RseS4KLQotLSBJc3N1ZSAjOTA2NTogdGFyZmlsZSBubyBsb25nZXIgdXNlcyAicm9vdCIgYXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB1bmFtZSBhbmQKLSAgZ25hbWUgZmllbGQuCi0KLS0gSXNzdWUgIzg5ODA6IEZpeGVkIGEgZmFpbHVyZSBpbiBkaXN0dXRpbHMuY29tbWFuZCBjaGVjayB0aGF0IHdhcyBzaGFkb3dlZCBieQotICBhbiBlbnZpcm9ubWVudCB0aGF0IGRvZXMgbm90IGhhdmUgZG9jdXRpbHMuICBQYXRjaCBieSBBcmZyZXZlci4KLQotLSBJc3N1ZSAjMTA1MDI2ODogcGFyc2VhZGRyIG5vdyBjb3JyZWN0bHkgcXVvdGVzIGRvdWJsZSBxdW90ZSBhbmQgYmFja3NsYXNoCi0gIGNoYXJhY3RlcnMgdGhhdCBhcHBlYXIgaW5zaWRlIHF1b3RlZCBzdHJpbmdzIGluIGVtYWlsIGFkZHJlc3Nlcy4KLQotLSBJc3N1ZSAjMTAwMDQ6IHF1b3ByaW1pbWUgbm8gbG9uZ2VyIGdlbmVyYXRlcyBhIHRyYWNlYmFjayB3aGVuIGNvbmZyb250ZWQgd2l0aAotICBpbnZhbGlkIGNoYXJhY3RlcnMgYWZ0ZXIgJz0nIGluIGEgUS1lbmNvZGVkIHdvcmQuCi0KLS0gSXNzdWUgIzE0OTE6IEJhc2VIVFRQU2VydmVyIG5vd3Mgc2VuZCBhIGBgMTAwIENvbnRpbnVlYGAgcmVzcG9uc2UgYmVmb3JlCi0gIHNlbmRpbmcgYSAyMDAgT0sgZm9yIHRoZSBFeHBlY3Q6IDEwMC1jb250aW51ZSByZXF1ZXN0IGhlYWRlci4KLQotLSBJc3N1ZSAjOTM2MDogQ2xlYW51cCBhbmQgaW1wcm92ZW1lbnRzIHRvIHRoZSBubnRwbGliIG1vZHVsZS4gIFRoZSBBUEkgbm93Ci0gIGNvbmZvcm1zIHRvIHRoZSBwaGlsb3NvcGh5IG9mIGJ5dGVzIGFuZCB1bmljb2RlIHNlcGFyYXRpb24gaW4gUHl0aG9uIDMuICBBCi0gIHRlc3Qgc3VpdGUgaGFzIGFsc28gYmVlbiBhZGRlZC4KLQotLSBJc3N1ZSAjOTk2MjogR3ppcEZpbGUgbm93IGhhcyB0aGUgcGVlaygpIG1ldGhvZC4KLQotLSBJc3N1ZSAjOTA5MDogV2hlbiBhIHNvY2tldCB3aXRoIGEgdGltZW91dCBmYWlscyB3aXRoIEVXT1VMREJMT0NLIG9yIEVBR0FJTiwKLSAgcmV0cnkgdGhlIHNlbGVjdCgpIGxvb3AgaW5zdGVhZCBvZiBiYWlsaW5nIG91dC4gIFRoaXMgaXMgYmVjYXVzZSBzZWxlY3QoKSBjYW4KLSAgaW5jb3JyZWN0bHkgcmVwb3J0IGEgc29ja2V0IGFzIHJlYWR5IGZvciByZWFkaW5nIChmb3IgZXhhbXBsZSwgaWYgaXQgcmVjZWl2ZWQKLSAgc29tZSBkYXRhIHdpdGggYW4gaW52YWxpZCBjaGVja3N1bSkuCi0KLS0gSXNzdWUgIzM2MTI6IEFkZGVkIG5ldyB0eXBlcyB0byBjdHlwZXMud2ludHlwZXMuIChDSEFSIGFuZCBwb2ludGVycykKLQotLSBJc3N1ZSAjOTk1MDogRml4IHNvY2tldC5zZW5kYWxsKCkgY3Jhc2ggb3IgbWlzYmVoYXZpb3VyIHdoZW4gYSBzaWduYWwgaXMKLSAgcmVjZWl2ZWQuICBOb3cgc2VuZGFsbCgpIHByb3Blcmx5IGNhbGxzIHNpZ25hbCBoYW5kbGVycyBpZiBuZWNlc3NhcnksIGFuZAotICByZXRyaWVzIHNlbmRpbmcgaWYgdGhlc2UgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBpbmNsdWRpbmcgb24gc29ja2V0cyB3aXRoIGEKLSAgdGltZW91dC4KLQotLSBJc3N1ZSAjOTk0NzogbG9nZ2luZzogRml4ZWQgbG9ja2luZyBidWcgaW4gc3RvcExpc3RlbmluZy4KLQotLSBJc3N1ZSAjOTk0NTogbG9nZ2luZzogRml4ZWQgbG9ja2luZyBidWdzIGluIGFkZEhhbmRsZXIvcmVtb3ZlSGFuZGxlci4KLQotLSBJc3N1ZSAjOTkzNjogRml4ZWQgZXhlY3V0YWJsZSBsaW5lcycgc2VhcmNoIGluIHRoZSB0cmFjZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzk3OTA6IFJld29yayBpbXBvcnRzIG5lY2Vzc2FyeSBmb3Igc2FtZWZpbGUgYW5kIHNhbWVvcGVuZmlsZQotICBpbiBudHBhdGguCi0KLS0gSXNzdWUgIzk5Mjg6IFByb3Blcmx5IGluaXRpYWxpemUgdGhlIHR5cGVzIGV4cG9ydGVkIGJ5IHRoZSBiejIgbW9kdWxlLgotCi0tIElzc3VlICMxNjc1OTUxOiBBbGxvdyBHemlwRmlsZSB0byB3b3JrIHdpdGggdW5zZWVrYWJsZSBmaWxlIG9iamVjdHMuICBQYXRjaCBieQotICBGbG9yaWFuIEZlc3RpLgotCi0tIExvZ2dpbmc6IEFkZGVkIFF1ZXVlTGlzdGVuZXIgY2xhc3MgdG8gZmFjaWxpdGF0ZSBsb2dnaW5nIHVzYWdlIGZvcgotICBwZXJmb3JtYW5jZS1jcml0aWNhbCB0aHJlYWRzLgotCi0tIElzc3VlICM5OTE2OiBBZGQgc29tZSBtaXNzaW5nIGVycm5vIHN5bWJvbHMuCi0KLS0gSXNzdWUgIzk4Nzc6IEV4cG9zZSBzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKLQotLSBsb2dnaW5nOiBBZGRlZCBoYXNIYW5kbGVycygpIG1ldGhvZCB0byBMb2dnZXIgYW5kIExvZ2dlckFkYXB0ZXIuCi0KLS0gSXNzdWUgIzk5MDg6IEZpeCBvcy5zdGF0KCkgb24gYnl0ZXMgcGF0aHMgdW5kZXIgV2luZG93cyA3LgotCi0tIElzc3VlICMyNjQzOiBtc3luYygpIGlzIG5vdCBjYWxsZWQgYW55bW9yZSB3aGVuIGRlYWxsb2NhdGluZyBhbiBvcGVuIG1tYXAKLSAgb2JqZWN0LCBvbmx5IG11bm1hcCgpLgotCi0tIGxvZ2dpbmc6IENoYW5nZWQgTG9nZ2VyQWRhcHRlciBpbXBsZW1lbnRhdGlvbiBpbnRlcm5hbGx5LCB0byBtYWtlIGl0IGVhc2llciB0bwotICBzdWJjbGFzcyBpbiBhIHVzZWZ1bCB3YXkuCi0KLS0gbG9nZ2luZzogaGFzSGFuZGxlcnMgbWV0aG9kIHdhcyBhZGRlZCB0byBMb2dnZXIsIGFuZCBpc0VuYWJsZWRGb3IsCi0gIGdldEVmZmVjdGl2ZUxldmVsLCBoYXNIYW5kbGVycyBhbmQgc2V0TGV2ZWwgd2VyZSBhZGRlZCB0byBMb2dnZXJBZGFwdGVyLgotICBMb2dnZXJBZGFwdGVyIHdhcyBpbnRyb2R1Y2VkIGludG8gdGhlIHVuaXQgdGVzdHMgZm9yIGxvZ2dpbmcuCi0KLS0gSXNzdWUgIzE2ODY6IEZpeCBzdHJpbmcuVGVtcGxhdGUgd2hlbiBvdmVycmlkaW5nIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjOTg1NDogU29ja2V0SU8gb2JqZWN0cyBub3cgb2JzZXJ2ZSB0aGUgUmF3SU9CYXNlIGludGVyZmFjZSBpbgotICBub24tYmxvY2tpbmcgbW9kZTogdGhleSByZXR1cm4gTm9uZSB3aGVuIGFuIG9wZXJhdGlvbiB3b3VsZCBibG9jayAoaW5zdGVhZCBvZgotICByYWlzaW5nIGFuIGV4Y2VwdGlvbikuCi0KLS0gSXNzdWUgIzE3MzAxMzY6IEZpeCB0aGUgY29tcGFyaXNvbiBiZXR3ZWVuIGEgdGsuZm9udC5Gb250IGFuZCBhbiBvYmplY3Qgb2YKLSAgYW5vdGhlciBraW5kLgotCi0tIElzc3VlICM5NDQxOiBsb2dnaW5nIGhhcyBiZXR0ZXIgY292ZXJhZ2UgZm9yIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMuCi0KLS0gSXNzdWUgIzk4NjU6IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG5vdyBoYXMgYSBfX3NpemVvZl9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjOTg1NDogVGhlIGRlZmF1bHQgcmVhZCgpIGltcGxlbWVudGF0aW9uIGluIGlvLlJhd0lPQmFzZSBub3cgaGFuZGxlcwotICBub24tYmxvY2tpbmcgcmVhZGludG8oKSByZXR1cm5pbmcgTm9uZSBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzE1NTI6IHNvY2tldC5zb2NrZXRwYWlyKCkgbm93IHJldHVybnMgcmVndWxhciBzb2NrZXQuc29ja2V0IG9iamVjdHMKLSAgc3VwcG9ydGluZyB0aGUgd2hvbGUgc29ja2V0IEFQSSAocmF0aGVyIHRoYW4gdGhlICJyYXciIF9zb2NrZXQuc29ja2V0Ci0gIG9iamVjdHMpLgotCi0tIElzc3VlICM5ODUzOiBGaXggdGhlIHNpZ25hdHVyZSBvZiBTU0xTb2NrZXQucmVjdmZyb20oKSBhbmQgU1NMU29ja2V0LnNlbmR0bygpCi0gIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIHNvY2tldCBtZXRob2RzLgotCi0tIElzc3VlICM5ODQwOiBBZGRlZCBhIGRlY29yYXRvciB0byByZXBybGliIGZvciB3cmFwcGluZyBfX3JlcHJfXyBtZXRob2RzIHRvIG1ha2UKLSAgdGhlbSBoYW5kbGUgcmVjdXJzaXZlIGNhbGxzIHdpdGhpbiB0aGUgc2FtZSB0aHJlYWQuCi0KLS0gbG9nZ2luZzogRW5oYW5jZWQgSFRUUEhhbmRsZXIgd2l0aCBzZWN1cmUgYW5kIGNyZWRlbnRpYWxzIGluaXRpYWxpemVycy4KLQotLSBJc3N1ZSAjNzY3NjQ1OiBTZXQgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyB0byBUcnVlIG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICM5ODM3OiBUaGUgcmVhZCgpIG1ldGhvZCBvZiBaaXBFeHRGaWxlIG9iamVjdHMgKGFzIHJldHVybmVkIGJ5Ci0gIFppcEZpbGUub3BlbigpKSBjb3VsZCByZXR1cm4gbW9yZSBieXRlcyB0aGFuIHJlcXVlc3RlZC4KLQotLSBJc3N1ZSAjOTgyNjogT3JkZXJlZERpY3QuX19yZXByX18gY2FuIG5vdyBoYW5kbGUgc2VsZi1yZWZlcmVudGlhbCB2YWx1ZXM6Ci0gIGRbJ3gnXSA9IGQuCi0KLS0gSXNzdWUgIzk4MjU6IFVzaW5nIF9fZGVsX18gaW4gdGhlIGRlZmluaXRpb24gb2YgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QgbWFkZQotICBpdCBwb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8gY3JlYXRlIHNlbGYtcmVmZXJlbmNpbmcgb3JkZXJlZCBkaWN0aW9uYXJpZXMgd2hpY2gKLSAgYmVjb21lIHBlcm1hbmVudGx5IHVuY29sbGVjdGFibGUgR0MgZ2FyYmFnZS4gIFJlaW5zdGF0ZWQgdGhlIFB5dGhvbiAzLjEKLSAgYXBwcm9hY2ggb2YgdXNpbmcgd2Vha3JlZiBwcm94aWVzIHNvIHRoYXQgcmVmZXJlbmNlIGN5Y2xlcyBuZXZlciBnZXQgY3JlYXRlZAotICBpbiB0aGUgZmlyc3QgcGxhY2UuCi0KLS0gSXNzdWUgIzk1NzksICM5NTgwOiBGaXggb3MuY29uZnN0cigpIGZvciB2YWx1ZSBsb25nZXIgdGhhbiAyNTUgYnl0ZXMgYW5kCi0gIGVuY29kZSB0aGUgdmFsdWUgd2l0aCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgKGluc3RlYWQgb2YKLSAgdXRmLTggaW4gc3RyaWN0IG1vZGUpIC4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzk2MzI6IFJlbW92ZSBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgZnVuY3Rpb246IHVzZSBQWVRIT05GU0VOQ09ESU5HCi0gIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhdCBQeXRob24gc3RhcnR1cC4KLSAgc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIGNyZWF0ZXMgaW5jb25zaXN0ZW5jaWVzIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvCi0gIHJlZW5jb2RlIGFsbCBmaWxlbmFtZXMgaW4gYWxsIG9iamVjdHMuCi0KLS0gSXNzdWUgIzk0MTA6IFZhcmlvdXMgb3B0aW1pemF0aW9ucyB0byB0aGUgcGlja2xlIG1vZHVsZSwgbGVhZGluZyB0byBzcGVlZHVwcwotICB1cCB0byA0eCAoZGVwZW5kaW5nIG9uIHRoZSBiZW5jaG1hcmspLiAgTW9zdGx5IHBvcnRlZCBmcm9tIFVubGFkZW4gU3dhbGxvdzsKLSAgaW5pdGlhbCBwYXRjaCBieSBBbGV4YW5kcmUgVmFzc2Fsb3R0aS4KLQotLSBUaGUgcHByaW50IG1vZHVsZSBub3cgc3VwcG9ydHMgcHJpbnRpbmcgT3JkZXJlZERpY3RzIGluIHRoZWlyIGdpdmVuIG9yZGVyCi0gIChmb3JtZXJseSwgaXQgd291bGQgc29ydCB0aGUga2V5cykuCi0KLS0gTG9nZ2luZzogQWRkZWQgUXVldWVIYW5kbGVyIGNsYXNzIHRvIGZhY2lsaXRhdGUgbG9nZ2luZyB1c2FnZSB3aXRoCi0gIG11bHRpcHJvY2Vzc2luZy4KLQotLSBJc3N1ZSAjOTcwNzogUmV3cml0dGVuIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aHJlYWRpbmcubG9jYWwgd2hpY2ggaXMKLSAgZnJpZW5kbGllciB0b3dhcmRzIHJlZmVyZW5jZSBjeWNsZXMuICBUaGlzIGNoYW5nZSBpcyBub3Qgbm9ybWFsbHkgdmlzaWJsZQotICBzaW5jZSBhbiBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbiAoX3RocmVhZC5fbG9jYWwpIGlzIHVzZWQgaW5zdGVhZC4KLQotLSBJc3N1ZSAjNjM5NDogb3MuZ2V0cHBpZCgpIGlzIG5vdyBzdXBwb3J0ZWQgb24gV2luZG93cy4gIE5vdGUgdGhhdCBpdCB3aWxsCi0gIHN0aWxsIHJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBwcm9jZXNzIGFmdGVyIGl0IGhhcyBleGl0ZWQuICBUaGlzIHByb2Nlc3MKLSAgaWQgbWF5IGV2ZW4gaGF2ZSBiZWVuIHJldXNlZCBieSBhbm90aGVyIHVucmVsYXRlZCBwcm9jZXNzLgotCi0tIElzc3VlICM5NzkyOiBJbiBjYXNlIG9mIGNvbm5lY3Rpb24gZmFpbHVyZSwgc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKCkgd291bGQKLSAgc3dhbGxvdyB0aGUgZXhjZXB0aW9uIGFuZCByYWlzZSBhIG5ldyBvbmUsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIGZldGNoIHRoZQotICBvcmlnaW5hbCBlcnJubywgb3IgdG8gZmlsdGVyIHRpbWVvdXQgZXJyb3JzLiAgTm93IHRoZSBvcmlnaW5hbCBlcnJvciBpcwotICByZS1yYWlzZWQuCi0KLS0gSXNzdWUgIzk3NTg6IFdoZW4gZmNudGwuaW9jdGwoKSB3YXMgY2FsbGVkIHdpdGggbXV0YWJsZV9mbGFnIHNldCB0byBUcnVlLCBhbmQKLSAgdGhlIHBhc3NlZCBidWZmZXIgd2FzIGV4YWN0bHkgMTAyNCBieXRlcyBsb25nLCB0aGUgYnVmZmVyIHdvdWxkbid0IGJlIHVwZGF0ZWQKLSAgYmFjayBhZnRlciB0aGUgc3lzdGVtIGNhbGwuICBPcmlnaW5hbCBwYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gVXBkYXRlcyB0byB0aGUgcmFuZG9tIG1vZHVsZToKLQotICAqIERvY3VtZW50IHdoaWNoIHBhcnRzIG9mIHRoZSBtb2R1bGUgYXJlIGd1YXJhbnRlZWQgdG8gc3RheSB0aGUgc2FtZSBhY3Jvc3MKLSAgICB2ZXJzaW9ucyBhbmQgd2hpY2ggcGFydHMgYXJlIHN1YmplY3QgdG8gY2hhbmdlLgotCi0gICogVXBkYXRlIHRoZSBzZWVkKCkgbWV0aG9kIHRvIHVzZSBhbGwgb2YgdGhlIGJpdHMgaW4gYSBzdHJpbmcgaW5zdGVhZCBvZiBqdXN0Ci0gICAgdGhlIGhhc2ggdmFsdWUuICBUaGlzIG1ha2VzIGJldHRlciB1c2Ugb2YgdGhlIHNlZWQgdmFsdWUgYW5kIGFzc3VyZXMgdGhlCi0gICAgc2VlZGluZyBpcyBwbGF0Zm9ybSBpbmRlcGVuZGVudC4gIElzc3VlICM3ODg5LgotCi0gICogSW1wcm92ZWQgdGhlIHJhbmRvbSgpLS0+aW50ZWdlciBhbGdvcml0aG0gdXNlZCBpbiBjaG9pY2UoKSwgc2h1ZmZsZSgpLAotICAgIHNhbXBsZSgpLCByYW5kcmFuZ2UoKSwgYW5kIHJhbmRpbnQoKS4gIEZvcm1lcmx5LCBpdCB1c2VkIGludChuKnJhbmRvbSgpKQotICAgIHdoaWNoIGhhcyBhIHNsaWdodCBiaWFzIHdoZW5ldmVyIG4gaXMgbm90IGEgcG93ZXIgb2YgdHdvLiAgSXNzdWUgIzkwMjUuCi0KLSAgKiBJbXByb3ZlZCBkb2N1bWVudGF0aW9uIG9mIGFyZ3VtZW50cyB0byByYW5kcmFuZ2UoKS4gIElzc3VlICM5Mzc5LgotCi0tIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG5vdyBzdXBwb3J0cyBhIG5ldyBtZXRob2QgZm9yIHJlcG9zaXRpb25pbmcga2V5cyB0bwotICBlaXRoZXIgZW5kLgotCi0tIElzc3VlICM5NzU0OiBTaW1pbGFybHkgdG8gYXNzZXJ0UmFpc2VzIGFuZCBhc3NlcnRSYWlzZXNSZWdleHAsIHVuaXR0ZXN0IHRlc3QKLSAgY2FzZXMgbm93IGFsc28gaGF2ZSBhc3NlcnRXYXJucyBhbmQgYXNzZXJ0V2FybnNSZWdleHAgbWV0aG9kcyB0byBjaGVjayB0aGF0IGEKLSAgZ2l2ZW4gd2FybmluZyB0eXBlIHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4KLQotLSBJc3N1ZSAjNTUwNjogQnl0ZXNJTyBvYmplY3RzIG5vdyBoYXZlIGEgZ2V0YnVmZmVyKCkgbWV0aG9kIGV4cG9ydGluZyBhIHZpZXcgb2YKLSAgdGhlaXIgY29udGVudHMgd2l0aG91dCBkdXBsaWNhdGluZyB0aGVtLiAgVGhlIHZpZXcgaXMgYm90aCByZWFkYWJsZSBhbmQKLSAgd3JpdGFibGUuCi0KLS0gSXNzdWUgIzc1NjY6IEltcGxlbWVudCBvcy5wYXRoLnNhbWVvcGVuZmlsZSBmb3IgV2luZG93cy4KLQotLSBJc3N1ZSAjOTI5MzogSS9PIHN0cmVhbXMgbm93IHJhaXNlIGBgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb25gYCB3aGVuIGFuCi0gIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQgKGZvciBleGFtcGxlLCB3cml0aW5nIHRvIGEgZmlsZSBvcGVuIG9ubHkKLSAgZm9yIHJlYWRpbmcpLgotCi0tIGhhc2hsaWIgaGFzIHR3byBuZXcgY29uc3RhbnQgYXR0cmlidXRlczogYWxnb3JpdGhtc19ndWFyYW50ZWVkIGFuZAotICBhbGdvcml0aG1zX2F2YWlhYmxlIHRoYXQgcmVzcGVjdGl2ZWx5IGxpc3QgdGhlIG5hbWVzIG9mIGhhc2ggYWxnb3JpdGhtcwotICBndWFyYW50ZWVkIHRvIGV4aXN0IGluIGFsbCBQeXRob24gaW1wbGVtZW50YXRpb25zIGFuZCB0aGUgbmFtZXMgb2YgaGFzaAotICBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwcm9jZXNzLgotCi0tIEEgbmV3IHBhY2thZ2UgYGBjb25jdXJyZW50LmZ1dHVyZXNgYCBhcyBkZWZpbmVkIGJ5IFBFUCAzMTQ4LgotCi1DLUFQSQotLS0tLS0KLQotLSBBZGQgUHlFcnJfU3ludGF4TG9jYXRpb25FeCwgd2hpY2ggc3VwcG9ydHMgcGFzc2luZyBhIGNvbHVtbiBvZmZzZXQuCi0KLS0gSXNzdWUgIzk4MzQ6IERvbid0IHNlZ2ZhdWx0IGluIFB5U2VxdWVuY2VfR2V0U2xpY2UsIFB5U2VxdWVuY2VfU2V0U2xpY2UsIG9yCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2Ugd2hlbiB0aGUgb2JqZWN0IGRvZXNuJ3QgaGF2ZSBhbnkgbWFwcGluZyBvcGVyYXRpb25zCi0gIGRlZmluZWQuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5MTg4OiBUaGUgZ2RiIGV4dGVuc2lvbiBub3cgaGFuZGxlcyBjb3JyZWN0bHkgbmFycm93IChVQ1MyKSBhcyB3ZWxsIGFzCi0gIHdpZGUgKFVDUzQpIHVuaWNvZGUgYnVpbGRzIGZvciBib3RoIHRoZSBob3N0IGludGVycHJldGVyIChlbWJlZGRlZCBpbnNpZGUgZ2RiKQotICBhbmQgdGhlIGludGVycHJldGVyIHVuZGVyIHRlc3QuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM5MzA4OiBBZGRlZCB0ZXN0cyBmb3IgaW1wb3J0aW5nIGVuY29kZWQgbW9kdWxlcyB0aGF0IGRvIG5vdAotICBkZXBlbmQgb24gc3BlY2lmaWMgc3RkbGliIG1vZHVsZXMgYmVpbmcgZW5jb2RlZCBpbiBhIGNlcnRhaW4gd2F5LgotCi0tIElzc3VlICMxMDUxOiBBZGQgYSBzY3JpcHQgKExpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5KSB0byBnZW5lcmF0ZSB0aGUgY3VzdG9tCi0gIGNlcnRpZmljYXRlIGFuZCBwcml2YXRlIGtleSBmaWxlcyB1c2VkIGJ5IFNTTC1yZWxhdGVkIGNlcnRzLgotCi0tIElzc3VlICM5OTc4OiBXYWl0IHVudGlsIHN1YnByb2Nlc3MgY29tcGxldGVzIGluaXRpYWxpemF0aW9uLiAoV2luMzJLaWxsVGVzdHMKLSAgaW4gdGVzdF9vcykKLQotLSBJc3N1ZSAjNzExMDogcmVncnRlc3Qgbm93IHNlbmRzIHRlc3QgZmFpbHVyZSByZXBvcnRzIGFuZCBzaW5nbGUtZmFpbHVyZQotICB0cmFjZWJhY2tzIHRvIHN0ZGVyciByYXRoZXIgdGhhbiBzdGRvdXQuCi0KLS0gSXNzdWUgIzk2Mjg6IGZpeCBydW50ZXN0cy5zaCAteCBvcHRpb24gc28gbW9yZSB0aGFuIG9uZSB0ZXN0IGNhbiBiZSBleGNsdWRlZC4KLQotLSBJc3N1ZSAjOTg5OTogRml4IHRlc3RfdGtpbnRlci50ZXN0X2ZvbnQgb24gdmFyaW91cyBwbGF0Zm9ybXMuICBQYXRjaCBieSBOZWQKLSAgRGVpbHkuCi0KLS0gSXNzdWUgIzk4OTQ6IERvIG5vdCBoYXJkY29kZSBFTk9FTlQgaW4gdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICM5MzE1OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHRyYWNlIG1vZHVsZS4gIFBhdGNoIGJ5IEVsaSBCZW5kZXJza3kuCi0KLS0gSXNzdWUgIzkzMjM6IE1ha2UgdGVzdC5yZWdydGVzdC5fX2ZpbGVfXyBhYnNvbHV0ZSwgdGhpcyB3YXMgbm90IGFsd2F5cyB0aGUKLSAgY2FzZSB3aGVuIHJ1bm5pbmcgcHJvZmlsZSBvciB0cmFjZSwgZm9yIGV4YW1wbGUuCi0KLS0gSXNzdWUgIzk1Njg6IEZpeCB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgb24gT1MgWCAxMC4zLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTAwNjI6IEFsbG93IGJ1aWxkaW5nIG9uIHBsYXRmb3JtcyB3aGljaCBkbyBub3QgaGF2ZSBzZW1fdGltZWR3YWl0LgotCi0tIElzc3VlICMxMDA1NDogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSB1aW50cHRyX3QgaW4gaW50dHlwZXMuaC4gIFBhdGNoIGJ5IEFraXJhCi0gIEtpdGFkYS4KLQotLSBJc3N1ZSAjMTAwNTU6IE1ha2UganNvbiBDODktY29tcGxpYW50IGluIFVDUzQgbW9kZS4KLQotLSBJc3N1ZSAjOTU1MjogQXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZCBvZiBPcGVuU1NMLiAoV2luZG93cykKLQotLSBJc3N1ZSAjMTYzMzg2MzogRG9uJ3QgaWdub3JlICRDQyB1bmRlciBBSVguCi0KLS0gSXNzdWUgIzk4MTA6IENvbXBpbGUgYnppcDIgc291cmNlIGZpbGVzIGluIFB5dGhvbidzIHByb2plY3QgZmlsZSBkaXJlY3RseS4gSXQKLSAgdXNlZCB0byBiZSBidWlsdCB3aXRoIGJ6aXAyJ3MgbWFrZWZpbGUuCi0KLS0gSXNzdWUgIzk4NDg6IFN0b3BwaW5nIHRyeWluZyB0byBidWlsZCBfd2Vha3JlZiBpbiBzZXR1cC5weSBhcyBpdCBpcyBhIGJ1aWx0LWluCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTgwNjogcHl0aG9uLWNvbmZpZyBub3cgaGFzIGFuIGBgLS1leHRlbnNpb24tc3VmZml4YGAgb3B0aW9uIHRoYXQKLSAgb3V0cHV0cyB0aGUgc3VmZml4IGZvciBkeW5hbWljIGxpYnJhcmllcyBpbmNsdWRpbmcgdGhlIEFCSSB2ZXJzaW9uIG5hbWUKLSAgZGVmaW5lZCBieSBQRVAgMzE0OS4KLQotLSBJc3N1ZSAjOTQxMzQ2OiBJbXByb3ZlIHRoZSBidWlsZCBwcm9jZXNzIHVuZGVyIEFJWCBhbmQgYWxsb3cgUHl0aG9uIHRvIGJlCi0gIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnkuICBQYXRjaCBieSBTw6liYXN0aWVuIFNhYmzDqS4KLQotLSBJc3N1ZSAjNDAyNjogTWFrZSB0aGUgZmNudGwgZXh0ZW5zaW9uIGJ1aWxkIHVuZGVyIEFJWC4gIFBhdGNoIGJ5IFPDqWJhc3RpZW4KLSAgU2FibMOpLgotCi0tIElzc3VlICM5NzAxOiBUaGUgTWFjT1NYIGluc3RhbGxlciBjYW4gcGF0Y2ggdGhlIHNoZWxsIHByb2ZpbGUgdG8gZW5zdXJlIHRoYXQKLSAgdGhlICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayBpcyBvbiB0aGUgc2hlbGwncyBzZWFyY2ggcGF0aC4gVGhpcwotICBmZWF0dXJlIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBaU0ggc2hlbGwuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDUtU2VwLTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5MjI1OiBSZW1vdmUgdGhlIFJPVF9GT1VSIGFuZCBEVVBfVE9QWCBvcGNvZGUsIHRoZSBsYXR0ZXIgcmVwbGFjZWQgYnkKLSAgdGhlIG5ldyAoYW5kIHNpbXBsZXIpIERVUF9UT1BfVFdPLiAgUGVyZm9ybWFuY2UgaXNuJ3QgY2hhbmdlZCwgYnV0IG91cgotICBieXRlY29kZSBpcyBhIGJpdCBzaW1wbGlmaWVkLiAgUGF0Y2ggYnkgRGVtdXIgUnVtZWQuCi0KLS0gSXNzdWUgIzk3NjY6IFJlbmFtZSBwb29ybHkgbmFtZWQgdmFyaWFibGVzIGV4cG9zZWQgYnkgX3dhcm5pbmdzIHRvIHByZXZlbnQKLSAgY29uZnVzaW9uIHdpdGggdGhlIHByb3BlciB2YXJpYWJsZXMgbmFtZXMgZnJvbSAnd2FybmluZ3MnIGl0c2VsZi4KLQotLSBJc3N1ZSAjOTIxMjogZGljdF9rZXlzIGFuZCBkaWN0X2l0ZW1zIG5vdyBwcm92aWRlIHRoZSBpc2Rpc2pvaW50KCkgbWV0aG9kLCB0bwotICBjb25mb3JtIHRvIHRoZSBTZXQgQUJDLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICM5NzM3OiBGaXggYSBjcmFzaCB3aGVuIHRyeWluZyB0byBkZWxldGUgYSBzbGljZSBvciBhbiBpdGVtIGZyb20gYQotICBtZW1vcnl2aWV3IG9iamVjdC4KLQotLSBJc3N1ZSAjOTU0OTogc3lzLnNldGRlZmF1bHRlbmNvZGluZygpIGFuZCBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nKCkgYXJlCi0gIG5vdyByZW1vdmVkLCBzaW5jZSB0aGVpciBlZmZlY3Qgd2FzIGluZXhpc3RlbnQgaW4gMy54ICh0aGUgZGVmYXVsdCBlbmNvZGluZyBpcwotICBoYXJkY29kZWQgdG8gdXRmLTggYW5kIGNhbm5vdCBiZSBjaGFuZ2VkKS4KLQotLSBJc3N1ZSAjNzQxNTogUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KCkgbm93IHVzZXMgdGhlIG5ldyBidWZmZXIgQVBJCi0gIHByb3Blcmx5LiAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KLQotLSBJc3N1ZSAjNTU1MzogVGhlIFB5X0xPQ0FMX0lOTElORSBtYWNybyBub3cgcmVzdWx0cyBpbiBpbmxpbmluZyBvbiBtb3N0Ci0gIHBsYXRmb3Jtcy4gIFByZXZpb3VzbHksIGl0IGlubGluZWQgb25seSB3aGVuIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQy4KLQotLSBJc3N1ZSAjOTcxMjogRml4IHRva2VuaXplIG9uIGlkZW50aWZpZXJzIHRoYXQgc3RhcnQgd2l0aCBub24tYXNjaWkgbmFtZXMuCi0KLS0gSXNzdWUgIzk2ODg6IF9fYmFzaWNzaXplX18gYW5kIF9faXRlbXNpemVfXyBtdXN0IGJlIGFjY2Vzc2VkIGFzIFB5X3NzaXplX3QuCi0KLS0gSXNzdWUgIzk2ODQ6IEFkZGVkIGEgZGVmaW5pdGlvbiBmb3IgU0laRU9GX1dDSEFSX1QgdG8gUEMvcHljb25maWcuaCwgdG8gbWF0Y2gKLSAgdGhlIHB5Y29uZmlnLmggZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBvbiBvdGhlciBzeXN0ZW1zLgotCi0tIElzc3VlICM5NjY2OiBPbmx5IGNhdGNoIEF0dHJpYnV0ZUVycm9yIGluIGhhc2F0dHIoKS4gQWxsIG90aGVyIGV4Y2VwdGlvbnMgdGhhdAotICBvY2N1ciBkdXJpbmcgYXR0cmlidXRlIGxvb2t1cCBhcmUgbm93IHByb3BhZ2F0ZWQgdG8gdGhlIGNhbGxlci4KLQotLSBJc3N1ZSAjODYyMjogQWRkIFBZVEhPTkZTRU5DT0RJTkcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3ZlcnJpZGUgdGhlCi0gIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzUxMjc6IFRoZSBDIGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyB0aGUgVW5pY29kZSBEYXRhYmFzZSBub3cgYWNjZXB0IGFuZAotICByZXR1cm4gY2hhcmFjdGVycyBmcm9tIHRoZSBmdWxsIFVuaWNvZGUgcmFuZ2UsIGV2ZW4gb24gbmFycm93IHVuaWNvZGUgYnVpbGRzCi0gIChQeV9VTklDT0RFX1RPTE9XRVIsIFB5X1VOSUNPREVfSVNERUNJTUFMLCBhbmQgb3RoZXJzKS4gIEEgdmlzaWJsZSBkaWZmZXJlbmNlCi0gIGluIFB5dGhvbiBpcyB0aGF0IHVuaWNvZGVkYXRhLm51bWVyaWMoKSBub3cgcmV0dXJucyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IKLSAgbGFyZ2UgY29kZSBwb2ludHMsIGFuZCByZXByKCkgbWF5IGNvbnNpZGVyIG1vcmUgY2hhcmFjdGVycyBhcyBwcmludGFibGUuCi0KLS0gSXNzdWUgIzk0MjU6IENyZWF0ZSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdCgpIGZ1bmN0aW9uIHRvIGdldCB0aGUgZmlsZW5hbWUKLSAgYXMgYSB1bmljb2RlIG9iamVjdCwgaW5zdGVhZCBvZiBhIGJ5dGUgc3RyaW5nLiBGdW5jdGlvbiBuZWVkZWQgdG8gc3VwcG9ydAotICB1bmVuY29kYWJsZSBmaWxlbmFtZXMuIERlcHJlY2F0ZSBQeU1vZHVsZV9HZXRGaWxlbmFtZSgpIGluIGZhdm9yIG9uIHRoZSBuZXcKLSAgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzgwNjM6IENhbGwgX1B5R0lMU3RhdGVfSW5pdCgpIGVhcmxpZXIgaW4gUHlfSW5pdGlhbGl6ZUV4KCkuCi0KLS0gSXNzdWUgIzk2MTI6IFRoZSBzZXQgb2JqZWN0IGlzIG5vdyA2NC1iaXQgY2xlYW4gdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjODIwMjogc3lzLmFyZ3ZbMF0gaXMgbm93IHNldCB0byAnLW0nIGluc3RlYWQgb2YgJy1jJyB3aGVuIHNlYXJjaGluZyBmb3IKLSAgdGhlIG1vZHVsZSBmaWxlIHRvIGJlIGV4ZWN1dGVkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBvcHRpb24uCi0KLS0gSXNzdWUgIzk1OTk6IENyZWF0ZSBQeVN5c19Gb3JtYXRTdGRvdXQoKSBhbmQgUHlTeXNfRm9ybWF0U3RkZXJyKCkgZnVuY3Rpb25zIHRvCi0gIHdyaXRlIGEgbWVzc2FnZSBmb3JtYXR0ZWQgYnkgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgdG8gc3lzLnN0ZG91dCBhbmQKLSAgc3lzLnN0ZGVyci4KLQotLSBJc3N1ZSAjOTU0MjogQ3JlYXRlIFB5VW5pY29kZV9GU0RlY29kZXIoKSBmdW5jdGlvbiwgYSBQYXJzZVR1cGxlIGNvbnZlcnRlcjoKLSAgZGVjb2RlIGJ5dGVzIG9iamVjdHMgdG8gdW5pY29kZSB1c2luZyBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSgpOyBzdHIKLSAgb2JqZWN0cyBhcmUgb3V0cHV0IGFzLWlzLgotCi0tIElzc3VlICM5MjAzOiBDb21wdXRlZCBnb3RvcyBhcmUgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBzdXBwb3J0ZWQgY29tcGlsZXJzCi0gICh3aGljaCBhcmUgZGV0ZWN0ZWQgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQpLiAgVGhleSBjYW4gc3RpbGwgYmUgZGlzYWJsZQotICBzZWxlY3RpdmVseSBieSBzcGVjaWZ5aW5nIC0td2l0aG91dC1jb21wdXRlZC1nb3Rvcy4KLQotLSBJc3N1ZSAjOTQyNTogQ3JlYXRlIFB5RXJyX1dhcm5Gb3JtYXQoKSBmdW5jdGlvbiwgc2ltaWxhciB0byBQeUVycl9XYXJuRXgoKSBidXQKLSAgdXNlIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIHRvIGZvcm1hdCB0aGUgd2FybmluZyBtZXNzYWdlLgotCi0tIElzc3VlICM4NTMwOiBQcmV2ZW50IHN0cmluZ2xpYiBmYXN0c2VhcmNoIGZyb20gcmVhZGluZyBiZXlvbmQgdGhlIGZyb250IG9mIGFuCi0gIGFycmF5LgotCi0tIElzc3VlICM1MzE5OiBQcmludCBhbiBlcnJvciBpZiBmbHVzaGluZyBzdGRvdXQgZmFpbHMgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCi0KLS0gSXNzdWUgIzkzMzc6IFRoZSBzdHIoKSBvZiBhIGZsb2F0IG9yIGNvbXBsZXggbnVtYmVyIGlzIG5vdyBpZGVudGljYWwgdG8gaXRzCi0gIHJlcHIoKS4KLQotLSBJc3N1ZSAjOTQxNjogRml4IHNvbWUgaXNzdWVzIHdpdGggY29tcGxleCBmb3JtYXR0aW5nIHdoZXJlIHRoZSBvdXRwdXQgd2l0aCBubwotICB0eXBlIHNwZWNpZmllciBmYWlsZWQgdG8gbWF0Y2ggdGhlIHN0ciBvdXRwdXQ6Ci0KLSAgICAtIGZvcm1hdChjb21wbGV4KC0wLjAsIDIuMCksICctJykgb21pdHRlZCB0aGUgcmVhbCBwYXJ0IGZyb20gdGhlIG91dHB1dCwKLSAgICAtIGZvcm1hdChjb21wbGV4KDAuMCwgMi4wKSwgJy0nKSBpbmNsdWRlZCBhIHNpZ24gYW5kIHBhcmVudGhlc2VzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjODAxMzogdGltZS5hc2N0aW1lIGFuZCB0aW1lLmN0aW1lIG5vIGxvbmdlciBjYWxsIHN5c3RlbQotICBhc2N0aW1lIGFuZCBjdGltZSBmdW5jdGlvbnMuICBUaGUgeWVhciByYW5nZSBmb3IgdGltZS5hc2N0aW1lIGlzIG5vdwotICAxOTAwIHRocm91Z2ggbWF4aW50LiAgVGhlIHJhbmdlIGZvciB0aW1lLmN0aW1lIGlzIHRoZSBzYW1lIGFzIGZvcgotICB0aW1lLmxvY2FsdGltZS4gIFRoZSBzdHJpbmcgcHJvZHVjZWQgYnkgdGhlc2UgZnVuY3Rpb25zIGlzIGxvbmdlcgotICB0aGFuIDI0IGNoYXJhY3RlcnMgd2hlbiB5ZWFyIGlzIGdyZWF0ZXIgdGhhbiA5OTk5LgotCi0tIElzc3VlICM2NjA4OiB0aW1lLmFzY3RpbWUgaXMgbm93IGNoZWNraW5nIHN0cnVjdCB0bSBmaWVsZHMgaXRzIGlucHV0Ci0gIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHRoZSBzeXN0ZW0gYXNjdGltZS4gIFBhdGNoIGJ5IE11blNpYyBKZW9uZy4KLQotLSBJc3N1ZSAjODczNDogQXZvaWQgY3Jhc2ggaW4gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoKSB3aGVuIGFuIGludmFsaWQgZmlsZQotICBkZXNjcmlwdG9yIGlzIHByb3ZpZGVkLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCi0KLS0gSXNzdWUgIzc3MzY6IFJlbGVhc2UgdGhlIEdJTCBhcm91bmQgY2FsbHMgdG8gb3BlbmRpcigpIGFuZCBjbG9zZWRpcigpIGluIHRoZQotICBwb3NpeCBtb2R1bGUuICBQYXRjaCBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIElzc3VlICM0ODM1OiBtYWtlIFB5TG9uZ19Gcm9tU29ja2V0X3QoKSBhbmQgUHlMb25nX0FzU29ja2V0X3QoKSBwcml2YXRlIHRvIHRoZQotICBzb2NrZXQgbW9kdWxlLCBhbmQgZml4IHRoZSB3aWR0aCBvZiBzb2NrZXQgZGVzY3JpcHRvcnMgdG8gYmUgY29ycmVjdGx5Ci0gIGRldGVjdGVkIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxMDI3MjA2OiBTdXBwb3J0IElETkEgaW4gZ2V0aG9zdGJ5bmFtZSwgZ2V0aG9zdGJ5bmFtZV9leCwgZ2V0YWRkcmluZm8KLSAgYW5kIGdldGhvc3RieWFkZHIuICBnZXRuYW1laW5mbyBpcyBub3cgcmVzdHJpY3RlZCB0byBudW1lcmljIGFkZHJlc3NlcyBhcwotICBpbnB1dC4KLQotLSBJc3N1ZSAjOTIxNDogU2V0IG9wZXJhdGlvbnMgb24gYSBLZXlzVmlldyBvciBJdGVtc1ZpZXcgaW4gY29sbGVjdGlvbnMgbm93Ci0gIGNvcnJlY3RseSByZXR1cm4gYSBzZXQuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgotCi0tIElzc3VlICM1NzM3OiBBZGQgU29sYXJpcy1zcGVjaWZpYyBtbmVtb25pY3MgaW4gdGhlIGVycm5vIG1vZHVsZS4gIFBhdGNoIGJ5Ci0gIE1hdHRoZXcgQWhyZW5zLgotCi0tIFJlc3RvcmUgR0lMIGluIG5pc19jYXQgaW4gY2FzZSBvZiBlcnJvci4gRGVjb2RlIE5JUyBkYXRhIHRvIGZzIGVuY29kaW5nLCB1c2luZwotICB0aGUgc3Vycm9nYXRlIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzY2NTc2MTogYGBmdW5jdG9vbHMucmVkdWNlKClgYCB3aWxsIG5vIGxvbmdlciBtYXNrIGV4Y2VwdGlvbnMgb3RoZXIKLSAgdGhhbiBgYFR5cGVFcnJvcmBgIHJhaXNlZCBieSB0aGUgaXRlcmF0b3IgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzk1NzA6IFVzZSBQRVAgMzgzIGRlY29kaW5nIGluIG9zLm1rbm9kIGFuZCBvcy5ta2ZpZm8uCi0KLS0gSXNzdWUgIzY5MTU6IFVuZGVyIFdpbmRvd3MsIG9zLmxpc3RkaXIoKSBkaWRuJ3QgcmVsZWFzZSB0aGUgR2xvYmFsIEludGVycHJldGVyCi0gIExvY2sgYXJvdW5kIGFsbCBzeXN0ZW0gY2FsbHMuICBPcmlnaW5hbCBwYXRjaCBieSBSeWFuIEtlbGx5LgotCi0tIElzc3VlICM4NTI0OiBBZGQgYSBkZXRhY2goKSBtZXRob2QgdG8gc29ja2V0IG9iamVjdHMsIHNvIGFzIHRvIHB1dCB0aGUgc29ja2V0Ci0gIGludG8gdGhlIGNsb3NlZCBzdGF0ZSB3aXRob3V0IGNsb3NpbmcgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yLgotCi0tIElzc3VlICM0Nzc4NjM6IEVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgYXQgc2h1dGRvd24gaWYgZ2MuZ2FyYmFnZSBpcyBub3QgZW1wdHkuCi0KLS0gSXNzdWUgIzY4Njk6IEZpeCBhIHJlZmNvdW50IHByb2JsZW0gaW4gdGhlIF9jdHlwZXMgZXh0ZW5zaW9uLgotCi0tIElzc3VlICM1NTA0OiBjdHlwZXMgc2hvdWxkIG5vdyB3b3JrIHdpdGggc3lzdGVtcyB3aGVyZSBtbWFwIGNhbid0IGJlCi0gIFBST1RfV1JJVEUgYW5kIFBST1RfRVhFQy4KLQotLSBJc3N1ZSAjOTUwNzogTmFtZWQgdHVwbGUgcmVwciB3aWxsIG5vdyBhdXRvbWF0aWNhbGx5IGRpc3BsYXkgdGhlIHJpZ2h0IG5hbWUgaW4KLSAgYSB0dXBsZSBzdWJjbGFzcy4KLQotLSBJc3N1ZSAjOTMyNDogQWRkIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHNpZ25hbC5zaWduYWwgb24gV2luZG93cyBpbiBvcmRlciB0bwotICBwcmV2ZW50IGNyYXNoZXMuCi0KLS0gSXNzdWUgIzk1MjY6IFJlbW92ZSBzb21lIG91dGRhdGVkIChpbnQpIGNhc3RzIHRoYXQgd2VyZSBwcmV2ZW50aW5nIHRoZSBhcnJheQotICBtb2R1bGUgZnJvbSB3b3JraW5nIGNvcnJlY3RseSB3aXRoIGFycmF5cyBvZiBtb3JlIHRoYW4gMioqMzEgZWxlbWVudHMuCi0KLS0gRml4IG1lbW9yeSBsZWFrIGluIHNzbC5fc3NsLl90ZXN0X2RlY29kZV9jZXJ0LgotCi0tIElzc3VlICM4MDY1OiBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUgbW9kdWxlIChmcm9tIGZhaWx1cmUgdG8gZnJlZSB0aGUKLSAgcmVzdWx0IG9mIGhpc3RvcnlfZ2V0X2hpc3Rvcnlfc3RhdGUoKSkuCi0KLS0gSXNzdWUgIzk0NTA6IEZpeCBtZW1vcnkgbGVhayBpbiByZWFkbGluZS5yZXBsYWNlX2hpc3RvcnlfaXRlbSBhbmQKLSAgcmVhZGxpbmUucmVtb3ZlX2hpc3RvcnlfaXRlbSBmb3IgcmVhZGxpbmUgdmVyc2lvbiA+PSA1LjAuCi0KLS0gSXNzdWUgIzgxMDU6IFZhbGlkYXRlIGZpbGUgZGVzY3JpcHRvciBwYXNzZWQgdG8gbW1hcC5tbWFwIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzgwNDY6IEFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBhbmQgLmNsb3NlZCBwcm9wZXJ0eSB0byBtbWFwCi0gIG9iamVjdHMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNzQ1MTogSW1wcm92ZSBkZWNvZGluZyBwZXJmb3JtYW5jZSBvZiBKU09OIG9iamVjdHMsIGFuZCByZWR1Y2UgdGhlCi0gIG1lbW9yeSBjb25zdW1wdGlvbiBvZiBzYWlkIGRlY29kZWQgb2JqZWN0cyB3aGVuIHRoZXkgdXNlIHRoZSBzYW1lIHN0cmluZ3MgYXMKLSAga2V5cy4KLQotLSBJc3N1ZSAjMTEwMDU2MjogRml4IGRlZXAtY29weWluZyBvZiBvYmplY3RzIGRlcml2ZWQgZnJvbSB0aGUgbGlzdCBhbmQgZGljdAotICB0eXBlcy4gIFBhdGNoIGJ5IE1pY2hlbGUgT3Jyw7kgYW5kIEJqw7ZybiBMaW5kcXZpc3QuCi0KLS0gSXNzdWUgIzk3NTM6IEZpeGVkIHNvY2tldC5kdXAsIHdoaWNoIGRpZCBub3QgYWx3YXlzIHdvcmsgY29ycmVjdGx5IG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzk0MjE6IE1hZGUgdGhlIGdldDx0eXBlPiBtZXRob2RzIGNvbnNpc3RlbnRseSBhY2NlcHQgdGhlIHZhcnMgYW5kCi0gIGRlZmF1bHQgYXJndW1lbnRzIG9uIGFsbCBwYXJzZXIgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjNzAwNTogRml4ZWQgb3V0cHV0IG9mIE5vbmUgdmFsdWVzIGZvciBSYXdDb25maWdQYXJzZXIud3JpdGUgYW5kCi0gIENvbmZpZ1BhcnNlci53cml0ZS4KLQotLSBJc3N1ZSAjODk5MDogYXJyYXkuZnJvbXN0cmluZygpIGFuZCBhcnJheS50b3N0cmluZygpIGdldCByZW5hbWVkIHRvCi0gIGZyb21ieXRlcygpIGFuZCB0b2J5dGVzKCksIHJlc3BlY3RpdmVseSwgdG8gYXZvaWQgY29uZnVzaW9uLiAgRnVydGhlcm1vcmUsCi0gIGFycmF5LmZyb21ieXRlcygpLCBhcnJheS5leHRlbmQoKSBhcyB3ZWxsIGFzIHRoZSBhcnJheS5hcnJheSgpIGNvbnN0cnVjdG9yIG5vdwotICBhY2NlcHQgYnl0ZWFycmF5IG9iamVjdHMuICBQYXRjaCBieSBUaG9tYXMgSm9sbGFucy4KLQotLSBJc3N1ZSAjODA4MTY0OiBGaXhlZCBzb2NrZXQuY2xvc2UgdG8gYXZvaWQgcmVmZXJlbmNlcyB0byBnbG9iYWxzLCB0byBhdm9pZAotICBpc3N1ZXMgd2hlbiBzb2NrZXQuY2xvc2UgaXMgY2FsbGVkIGZyb20gYSBfX2RlbF9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjOTcwNjogc3NsIG1vZHVsZSBwcm92aWRlcyBhIGJldHRlciBlcnJvciBoYW5kbGluZyBpbiB2YXJpb3VzCi0gIGNpcmN1bXN0YW5jZXMuCi0KLS0gSXNzdWUgIzE4Njg6IEVsaW1pbmF0ZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBpbiB0aHJlYWQtbG9jYWwgb2JqZWN0cyBieSBnZXR0aW5nCi0gIHJpZCBvZiB0aGUgY2FjaGVkIGNvcHkgb2YgdGhyZWFkLWxvY2FsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxNTEyNzkxOiBJbiBzZXRmcmFtZXJhdGUoKSBpbiB0aGUgd2F2ZSBtb2R1bGUsIG5vbi1pbnRlZ3JhbCBmcmFtZSByYXRlcwotICBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLgotCi0tIElzc3VlICM4Nzk3OiB1cmxsaWIyIGRvZXMgYSByZXRyeSBmb3IgQmFzaWMgQXV0aGVudGljYXRpb24gZmFpbHVyZSBpbnN0ZWFkIG9mCi0gIGZhbGxpbmcgaW50byByZWN1cnNpb24uCi0KLS0gSXNzdWUgIzExOTQyMjI6IGVtYWlsLnV0aWxzLnBhcnNlZGF0ZSBub3cgcmV0dXJucyBSRkMyODIyIGNvbXBsaWFudCBmb3VyCi0gIGNoYXJhY3RlciB5ZWFycyBldmVuIGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIFJGQzgyMiB0d28gY2hhcmFjdGVyIHllYXJzLgotCi0tIElzc3VlICM4NzUwOiBGaXhlZCBNdXRhYmxlU2V0J3MgbWV0aG9kcyB0byBjb3JyZWN0bHkgaGFuZGxlIHJlZmxleGl2ZQotICBvcGVyYXRpb25zIG9uIGl0cyBzZWxmLCBuYW1lbHkgeCAtPSB4IGFuZCB4IF49IHguCi0KLS0gSXNzdWUgIzkxMjk6IHNtdHBkLnB5IGlzIHZ1bG5lcmFibGUgdG8gRG9TIGF0dGFja3MgZGVyaXZpbmcgZnJvbSBtaXNzaW5nIGVycm9yCi0gIGhhbmRsaW5nIHdoZW4gYWNjZXB0aW5nIGEgbmV3IGNvbm5lY3Rpb24uCi0KLS0gSXNzdWUgIzk2MDE6IGZ0cGxpYiBub3cgcHJvdmlkZXMgYSB3b3JrYXJvdW5kIGZvciBub24tY29tcGxpYW50Ci0gIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIElJUyBzaGlwcGVkIHdpdGggV2luZG93cyBzZXJ2ZXIgMjAwMyByZXR1cm5pbmcgaW52YWxpZAotICByZXNwb25zZSBjb2RlcyBmb3IgTUtEIGFuZCBQV0QgY29tbWFuZHMuCi0KLS0gSXNzdWUgIzY1ODc0OTogYXN5bmNvcmUncyBjb25uZWN0KCkgbWV0aG9kIG5vdyBjb3JyZWN0bHkgaW50ZXJwcmV0cyB3aW5zb2NrCi0gIGVycm9ycy4KLQotLSBJc3N1ZSAjOTUwMTogRml4ZWQgbG9nZ2luZyByZWdyZXNzaW9ucyBpbiBjbGVhbnVwIGNvZGUuCi0KLS0gRml4IGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIHRvIHNraXAgbWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBvYmplY3QuCi0KLS0gSXNzdWUgIzk1NzI6IEltcG9ydGxpYiBzaG91bGQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBhIGRpcmVjdG9yeSBpdCB0aG91Z2h0Ci0gIGl0IG5lZWRlZCB0byBjcmVhdGUgd2FzIGRvbmUgY29uY3VycmVudGx5IGJ5IGFub3RoZXIgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjOTYxNzogU2lnbmFscyByZWNlaXZlZCBkdXJpbmcgYSBsb3ctbGV2ZWwgd3JpdGUgb3BlcmF0aW9uIGFyZW4ndAotICBpZ25vcmVkIGJ5IHRoZSBidWZmZXJlZCBJTyBsYXllciBhbnltb3JlLgotCi0tIElzc3VlICM4NDM1OTA6IE1ha2UgIm1hY2ludG9zaCIgYW4gYWxpYXMgdG8gdGhlICJtYWNfcm9tYW4iIGVuY29kaW5nLgotCi0tIENyZWF0ZSBvcy5mc2RlY29kZSgpOiBkZWNvZGUgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZQotICBlcnJvciBoYW5kbGVyLCBvciBzdHJpY3QgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMzNDg4OiBQcm92aWRlIGNvbnZlbmllbnQgc2hvcnRoYW5kIGZ1bmN0aW9ucyBgYGd6aXAuY29tcHJlc3NgYCBhbmQKLSAgYGBnemlwLmRlY29tcHJlc3NgYC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFuYW5kIEIuIFBpbGxhaS4KLQotLSBJc3N1ZSAjODgwNzogcG9wbGliLlBPUDNfU1NMIGNsYXNzIG5vdyBhY2NlcHRzIGEgY29udGV4dCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEKLSAgc3NsLlNTTENvbnRleHQgb2JqZWN0IGFsbG93aW5nIGJ1bmRsaW5nIFNTTCBjb25maWd1cmF0aW9uIG9wdGlvbnMsCi0gIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYSBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpCi0gIHN0cnVjdHVyZS4KLQotLSBJc3N1ZSAjODg2NjogcGFyYW1ldGVycyBwYXNzZWQgdG8gc29ja2V0LmdldGFkZHJpbmZvIGNhbiBub3cgYmUgc3BlY2lmaWVkIGFzCi0gIHNpbmdsZSBrZXl3b3JkIGFyZ3VtZW50cy4KLQotLSBBZGRyZXNzIFhYWCBjb21tZW50IGluIGRpcy5weSBieSBoYXZpbmcgaW5zcGVjdC5weSBwcmVmZXIgdG8gcmV1c2UgdGhlIGRpcy5weQotICBjb21waWxlciBmbGFnIHZhbHVlcyBvdmVyIGRlZmluaW5nIGl0cyBvd24uCi0KLS0gSXNzdWUgIzkxNDc6IEFkZGVkIGRpcy5jb2RlX2luZm8oKSB3aGljaCBpcyBzaW1pbGFyIHRvIHNob3dfY29kZSgpIGJ1dCByZXR1cm5zCi0gIGZvcm1hdHRlZCBjb2RlIGluZm9ybWF0aW9uIGluIGEgc3RyaW5nIHJhdGhlciB0aGFuIGRpc3BsYXlpbmcgb24gc2NyZWVuLgotCi0tIElzc3VlICM5NTY3OiBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIgbm93IGFkZHMgYSBfX3dyYXBwZWRfXyBhdHRyaWJ1dGUKLSAgcG9pbnRpbmcgdG8gdGhlIG9yaWdpbmFsIGNhbGxhYmxlLgotCi0tIElzc3VlICMzNDQ1OiBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIgbm93IHRvbGVyYXRlcyBtaXNzaW5nIGF0dHJpYnV0ZXMgb24KLSAgd3JhcHBlZCBjYWxsYWJsZXMuCi0KLS0gSXNzdWUgIzU4Njc6IEFkZCBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZCBhbmQgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kLgotCi0tIElzc3VlICM5NjA1OiBwb3NpeC5nZXRsb2dpbigpIGRlY29kZXMgdGhlIHVzZXJuYW1lIHdpdGggZmlsZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzk2MDQ6IHBvc2l4LmluaXRncm91cHMoKSBlbmNvZGVzIHRoZSB1c2VybmFtZSB1c2luZyB0aGUgZmlsZXlzdGVtCi0gIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzk2MDM6IHBvc2l4LnR0eW5hbWUoKSBhbmQgcG9zaXguY3Rlcm1pZCgpIGRlY29kZSB0aGUgdGVybWluYWwgbmFtZQotICB1c2luZyB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4KLSAgYnkgRGF2aWQgV2F0c29uLgotCi0tIElzc3VlICM3NjQ3OiBUaGUgcG9zaXggbW9kdWxlIG5vdyBoYXMgdGhlIFNUX1JET05MWSBhbmQgU1RfTk9TVUlEIGNvbnN0YW50cywKLSAgZm9yIHVzZSB3aXRoIHRoZSBzdGF0dmZzKCkgZnVuY3Rpb24uICBQYXRjaCBieSBBZGFtIEphY2tzb24uCi0KLS0gSXNzdWUgIzg2ODg6IE1BTklGRVNUIGZpbGVzIGNyZWF0ZWQgYnkgZGlzdHV0aWxzIG5vdyBpbmNsdWRlIGEgbWFnaWMgY29tbWVudAotICBpbmRpY2F0aW5nIHRoZXkgYXJlIGdlbmVyYXRlZC4gIE1hbnVhbGx5IG1haW50YWluZWQgTUFOSUZFU1RzIHdpdGhvdXQgdGhpcwotICBtYXJrZXIgd2lsbCBub3QgYmUgb3ZlcndyaXR0ZW4gb3IgcmVtb3ZlZC4KLQotLSBJc3N1ZSAjNzQ2Nzogd2hlbiByZWFkaW5nIGEgZmlsZSBmcm9tIGEgWklQIGFyY2hpdmUsIGl0cyBDUkMgaXMgY2hlY2tlZCBhbmQgYQotICBCYWRaaXBmaWxlIGVycm9yIGlzIHJhaXNlZCBpZiBpdCBkb2Vzbid0IG1hdGNoIChhcyB1c2VkIHRvIGJlIHRoZSBjYXNlIGluCi0gIFB5dGhvbiAyLjUgYW5kIGVhcmxpZXIpLgotCi0tIElzc3VlICM5NTUwOiBhIEJ1ZmZlcmVkUmVhZGVyIGNvdWxkIGlzc3VlIGFuIGFkZGl0aW9uYWwgcmVhZCB3aGVuIHRoZSBvcmlnaW5hbAotICByZWFkIHJlcXVlc3QgaGFkIGJlZW4gc2F0aXNmaWVkLCB3aGljaCBjb3VsZCBibG9jayBpbmRlZmluaXRlbHkgd2hlbiB0aGUKLSAgdW5kZXJseWluZyByYXcgSU8gY2hhbm5lbCB3YXMgZS5nLiBhIHNvY2tldC4gIFJlcG9ydCBhbmQgb3JpZ2luYWwgcGF0Y2ggYnkKLSAgSmFzb24gVi4gTWlsbGVyLgotCi0tIElzc3VlICMzNzU3OiB0aHJlYWQtbG9jYWwgb2JqZWN0cyBub3cgc3VwcG9ydCBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0aW9uLgotICBUaHJlYWQtbG9jYWwgb2JqZWN0cyBpbnZvbHZlZCBpbiByZWZlcmVuY2UgY3ljbGVzIHdpbGwgYmUgZGVhbGxvY2F0ZWQgdGltZWx5Ci0gIGJ5IHRoZSBjeWNsaWMgR0MsIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCi0KLS0gSXNzdWUgIzk0NTI6IEFkZCByZWFkX2ZpbGUsIHJlYWRfc3RyaW5nLCBhbmQgcmVhZF9kaWN0IHRvIHRoZSBjb25maWdwYXJzZXIKLSAgQVBJOyBuZXcgc291cmNlIGF0dHJpYnV0ZSB0byBleGNlcHRpb25zLgotCi0tIElzc3VlICM2MjMxOiBGaXggeG1sLmV0cmVlLkVsZW1lbnRJbmNsdWRlIHRvIGluY2x1ZGUgdGhlIHRhaWwgb2YgdGhlIGN1cnJlbnQKLSAgbm9kZS4KLQotLSBJc3N1ZSAjODA0NzogRml4IHRoZSB4bWwuZXRyZWUgc2VyaWFsaXplciB0byByZXR1cm4gYnl0ZXMgYnkgZGVmYXVsdC4gIFVzZQotICBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcuCi0KLS0gSXNzdWUgIzgyODA6IHVybGxpYjIncyBSZXF1ZXN0IG1ldGhvZCB3aWxsIHJlbW92ZSBmcmFnbWVudHMgaW4gdGhlIHVybC4gIFRoaXMKLSAgaXMgaG93IGl0IGlzIHN1cHBvc2VkIHRvIHdvcmssIHdnZXQgYW5kIGN1cmwgZG8gdGhlIHNhbWUuICBQcmV2aW91cyBiZWhhdmlvcgotICB3YXMgd3JvbmcuCi0KLS0gSXNzdWUgIzY2ODM6IEZvciBTTVRQIGxvZ2lucyB3ZSBub3cgdHJ5IGFsbCBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGFkdmVydGlzZWQKLSAgYnkgdGhlIHNlcnZlci4gIE1hbnkgc2VydmVycyBhcmUgYnVnZ3kgYW5kIGFkdmVydGlzZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzCi0gIHRoZXkgZG8gbm90IHN1cHBvcnQgaW4gcmVhbGl0eS4KLQotLSBJc3N1ZSAjODgxNDogZnVuY3Rpb24gYW5ub3RhdGlvbnMgKHRoZSBgYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSkgYXJlIG5vdwotICBpbmNsdWRlZCBpbiB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMgY29waWVkIGJ5IGRlZmF1bHQgYnkgZnVuY3Rvb2xzLndyYXBzIGFuZAotICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuICBQYXRjaCBieSBUZXJyZW5jZSBDb2xlLgotCi0tIElzc3VlICMyOTQ0OiBhc3luY29yZSBkb2Vzbid0IGhhbmRsZSBjb25uZWN0aW9uIHJlZnVzZWQgY29ycmVjdGx5LgotCi0tIElzc3VlICM0MTg0OiBQcml2YXRlIGF0dHJpYnV0ZXMgb24gc210cGQuU01UUENoYW5uZWwgbWFkZSBwdWJsaWMgYW5kIGRlcHJlY2F0ZQotICB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGVzLiBBZGQgdGVzdHMgZm9yIHNtdHBkIG1vZHVsZS4KLQotLSBJc3N1ZSAjMzE5NjogZW1haWwgaGVhZGVyIGRlY29kaW5nIGlzIG5vdyBmb3JnaXZpbmcgaWYgYW4gUkZDMjA0NyBlbmNvZGVkIHdvcmQKLSAgZW5jb2RlZCBpbiBiYXNlNjQgaXMgbGFja2luZyBwYWRkaW5nLgotCi0tIElzc3VlICM5NDQ0OiBBcmdwYXJzZSBub3cgdXNlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBwcmVmaXhfY2hhcnMgYXMgdGhlIG9wdGlvbgotICBjaGFyYWN0ZXIgZm9yIHRoZSBhZGRlZCAnaC9oZWxwJyBvcHRpb24gaWYgcHJlZml4X2NoYXJzIGRvZXMgbm90IGNvbnRhaW4gYQotICAnLScsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KLQotLSBJc3N1ZSAjNzM3MjogRml4IHBzdGF0cyByZWdyZXNzaW9uIHdoZW4gc3RyaXBwaW5nIHBhdGhzIGZyb20gcHJvZmlsZSBkYXRhCi0gIGdlbmVyYXRlZCB3aXRoIHRoZSBwcm9maWxlIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTQyODogRml4IHJ1bm5pbmcgc2NyaXB0cyB3aXRoIHRoZSBwcm9maWxlL2NQcm9maWxlIG1vZHVsZXMgZnJvbSB0aGUKLSAgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM3NzgxOiBGaXggcmVzdHJpY3Rpbmcgc3RhdHMgYnkgZW50cnkgY291bnRzIGluIHRoZSBwc3RhdHMgaW50ZXJhY3RpdmUKLSAgYnJvd3Nlci4KLQotLSBJc3N1ZSAjOTIwOTogRG8gbm90IGNyYXNoIGluIHRoZSBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3NlciBvbiBpbnZhbGlkIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbnMuCi0KLS0gVXBkYXRlIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IHRvIG1hdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBQeTIuNyAoYmFzZWQgb24KLSAgbGlzdHMgaW5zdGVhZCBvZiB3ZWFrbHkgcmVmZXJlbmNlZCBMaW5rIG9iamVjdHMpLgotCi0tIElzc3VlICM4Mzk3OiBSYWlzZSBhbiBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gbWl4IGl0ZXJhdGlvbiBhbmQgcmVndWxhciByZWFkcwotICBvbiBhIEJaMkZpbGUgb2JqZWN0LCByYXRoZXIgdGhhbiByZXR1cm5pbmcgaW5jb3JyZWN0IHJlc3VsdHMuCi0KLS0gSXNzdWUgIzk0NDg6IEZpeCBhIGxlYWsgb2YgT1MgcmVzb3VyY2VzIChtdXRleGVzIG9yIHNlbWFwaG9yZXMpIHdoZW4KLSAgcmUtaW5pdGlhbGl6aW5nIGEgYnVmZmVyZWQgSU8gb2JqZWN0IGJ5IGNhbGxpbmcgaXRzIGBgX19pbml0X19gYCBtZXRob2QuCi0KLS0gSXNzdWUgIzE3MTM6IEZpeCBvcy5wYXRoLmlzbW91bnQoKSwgd2hpY2ggcmV0dXJuZWQgdHJ1ZSBmb3Igc3ltYm9saWMgbGlua3MKLSAgYWNyb3NzIGRldmljZXMuCi0KLS0gSXNzdWUgIzg4MjY6IFByb3Blcmx5IGxvYWQgb2xkLXN0eWxlICJleHBpcmVzIiBhdHRyaWJ1dGUgaW4gaHR0cC5jb29raWVzLgotCi0tIElzc3VlICMxNjkwMTAzOiBGaXggaW5pdGlhbCBuYW1lc3BhY2UgZm9yIGNvZGUgcnVuIHdpdGggdHJhY2UubWFpbigpLgotCi0tIElzc3VlICM3Mzk1OiBGaXggdHJhY2ViYWNrcyBpbiBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3Nlci4KLQotLSBJc3N1ZSAjODIzMDogRml4IExpYi90ZXN0L3NvcnRwZXJmLnB5LgotCi0tIElzc3VlICM4NjIwOiB3aGVuIGEgY21kLkNtZCgpIGlzIGZlZCBpbnB1dCB0aGF0IHJlYWNoZXMgRU9GIHdpdGhvdXQgYSBmaW5hbAotICBuZXdsaW5lLCBpdCBubyBsb25nZXIgdHJ1bmNhdGVzIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgbGFzdCBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzUxNDY6IEhhbmRsZSBVSUQgVEhSRUFEIGNvbW1hbmQgY29ycmVjdGx5IGluIGltYXBsaWIuCi0KLS0gSXNzdWUgIzUxNDc6IEZpeCB0aGUgaGVhZGVyIGdlbmVyYXRlZCBmb3IgY29va2llIGZpbGVzIHdyaXR0ZW4gYnkKLSAgaHR0cC5jb29raWVqYXIuTW96aWxsYUNvb2tpZUphci4KLQotLSBJc3N1ZSAjODE5ODogSW4gcHlkb2MsIG91dHB1dCBhbGwgaGVscCB0ZXh0IHRvIHRoZSBjb3JyZWN0IHN0cmVhbSB3aGVuCi0gIHN5cy5zdGRvdXQgaXMgcmVhc3NpZ25lZC4KLQotLSBJc3N1ZSAjNzkwOTogRG8gbm90IHRvdWNoIHBhdGhzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4ZXMgYGBcXC5cYGAgb3IgYGBcXD9cYGAKLSAgaW4gbnRwYXRoLm5vcm1wYXRoKCkuCi0KLS0gSXNzdWUgIzEyODY6IEFsbG93IHVzaW5nIGZpbGVpbnB1dC5GaWxlSW5wdXQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCi0KLS0gQWRkIGxydV9jYWNoZSgpIGRlY29yYXRvciB0byB0aGUgZnVuY3Rvb2xzIG1vZHVsZS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gRml4IGBgVG9vbHMvc2NyaXB0cy9jaGVja3B5Yy5weWBgIGFmdGVyIFBFUCAzMTQ3LgotCi0tIElzc3VlICM4ODY3OiBGaXggYGBUb29scy9zY3JpcHRzL3NlcnZlLnB5YGAgdG8gd29yayB3aXRoIGZpbGVzIGNvbnRhaW5pbmcKLSAgbm9uLUFTQ0lJIGNvbnRlbnQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM5NjAxOiBQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBmdHBsaWIucGFyc2UyNTcuCi0KLS0gSXNzdWUgIzg4NTc6IFByb3ZpZGUgYSB0ZXN0IGNhc2UgZm9yIHNvY2tldC5nZXRhZGRyaW5mby4KLQotLSBJc3N1ZSAjNzU2NDogU2tpcCB0ZXN0X2lvY3RsIGlmIGFub3RoZXIgcHJvY2VzcyBpcyBhdHRhY2hlZCB0byAvZGV2L3R0eS4KLQotLSBJc3N1ZSAjODQzMzogRml4IHRlc3RfY3Vyc2VzIGZhaWx1cmUgd2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBuY3Vyc2VzLgotCi0tIElzc3VlICM5NDk2OiBQcm92aWRlIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIHJsY29tcGxldGVyIG1vZHVsZS4gIFBhdGNoIGJ5Ci0gIE1pY2hlbGUgT3Jyw7kuCi0KLS0gSXNzdWUgIzg2ODc6IHByb3ZpZGUgYSB0ZXN0IHN1aXRlIGZvciBzY2hlZC5weSBtb2R1bGUuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMzAzNDM0OiBHZW5lcmF0ZSBaSVAgZmlsZSBjb250YWluaW5nIGFsbCBQREJzLgotCi0tIElzc3VlICM5MTkzOiBQRVAgMzE0OSBpcyBhY2NlcHRlZC4KLQotLSBJc3N1ZSAjMzEwMTogSGVscGVyIGZ1bmN0aW9ucyBfYWRkX29uZV90b19pbmRleF9DKCkgYW5kIF9hZGRfb25lX3RvX2luZGV4X0YoKQotICBiZWNvbWUgX1B5X2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfUHlfYWRkX29uZV90b19pbmRleF9GKCksIHJlc3BlY3RpdmVseS4KLQotLSBJc3N1ZSAjOTcwMDogZGVmaW5lIEhBVkVfQlJPS0VOX1BPU0lYX1NFTUFQSE9SRVMgdW5kZXIgQUlYIDYueC4gIFBhdGNoIGJ5Ci0gIFPDqWJhc3RpZW4gU2FibMOpLgotCi0tIERvbid0IHJ1biBwZ2VuIHR3aWNlIHdoZW4gdXNpbmcgbWFrZSAtai4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMS1BdWctMjAxMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzg5OTE6IGNvbnZlcnRidWZmZXIoKSByZWplY3RzIGRpc2NvbnRpZ2lvdXMgYnVmZmVycy4KLQotLSBJc3N1ZSAjNzYxNjogRml4IGNvcHlpbmcgb2Ygb3ZlcmxhcHBpbmcgbWVtb3J5dmlldyBzbGljZXMgd2l0aCB0aGUgSW50ZWwKLSAgY29tcGlsZXIuCi0KLS0gSXNzdWUgIzg0MTM6IHN0cnVjdHNlcXVlbmNlIG5vdyBzdWJjbGFzc2VzIHR1cGxlLgotCi0tIElzc3VlICM4MjcxOiBkdXJpbmcgdGhlIGRlY29kaW5nIG9mIGFuIGludmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZSwgb25seSB0aGUKLSAgc3RhcnQgYnl0ZSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlKHMpIGFyZSBub3cgY29uc2lkZXJlZCBpbnZhbGlkLCBpbnN0ZWFkIG9mCi0gIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGJ5IHRoZSBzdGFydCBieXRlLiAgRS5nLjoKLSAgJ1x4ZjFceDgwQUInLmRlY29kZSgndXRmLTgnLCAncmVwbGFjZScpIG5vdyByZXR1cm5zIHUnXHVmZmZkQUInIGFuZCByZXBsYWNlcwotICB3aXRoIFUrRkZGRCBvbmx5IHRoZSBzdGFydCBieXRlICgnXHhmMScpIGFuZCB0aGUgY29udGludWF0aW9uIGJ5dGUgKCdceDgwJykKLSAgZXZlbiBpZiAnXHhmMScgaXMgdGhlIHN0YXJ0IGJ5dGUgb2YgYSA0LWJ5dGVzIHNlcXVlbmNlLiAgUHJldmlvdXMgdmVyc2lvbnMKLSAgcmV0dXJuZWQgYSBzaW5nbGUgdSdcdWZmZmQnLgotCi0tIElzc3VlICM5MDExOiBBIG5lZ2F0ZWQgaW1hZ2luYXJ5IGxpdGVyYWwgKGUuZy4sICItN2oiKSBub3cgaGFzIHJlYWwgcGFydCAtMC4wCi0gIHJhdGhlciB0aGFuIDAuMC4gIFNvICItN2oiIGlzIG5vdyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gIi0oN2opIi4KLQotLSBCZSBtb3JlIHNwZWNpZmljIGluIGVycm9yIG1lc3NhZ2VzIGFib3V0IHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0tIElzc3VlICM4OTQ5OiAieiIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucyBkb2Vzbid0IGFjY2VwdCBieXRlcwotICBvYmplY3RzLCBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzY1NDM6IFdyaXRlIHRoZSB0cmFjZWJhY2sgaW4gdGhlIHRlcm1pbmFsIGVuY29kaW5nIGluc3RlYWQgb2YgdXRmLTguCi0gIEZpeCB0aGUgZW5jb2Rpbmcgb2YgdGhlIG1vZHVsZXMgZmlsZW5hbWUuICBQYXRjaCB3cml0dGVuIGJ5IEFtYXVyeSBGb3JnZW90Ci0gIGQnQXJjLgotCi0tIElzc3VlICM5MDExOiBSZW1vdmUgYnVnZ3kgYW5kIHVubmVjZXNzYXJ5IChpbiAzLngpIFNULT5BU1QgY29tcGlsYXRpb24gY29kZQotICBkZWFsaW5nIHdpdGggdW5hcnkgbWludXMgYXBwbGllZCB0byBhIGNvbnN0YW50LiAgVGhlIHJlbW92ZWQgY29kZSB3YXMgbXV0YXRpbmcKLSAgdGhlIFNULCBjYXVzaW5nIGEgc2Vjb25kIGNvbXBpbGF0aW9uIHRvIGZhaWwuCi0KLS0gSXNzdWUgIzg1MDk5NzogbWJjcyBlbmNvZGluZyAoV2luZG93cyBvbmx5KSBoYW5kbGVzIGVycm9ycyBhcmd1bWVudDogc3RyaWN0Ci0gIG1vZGUgcmFpc2VzIHVuaWNvZGUgZXJyb3JzLiAgVGhlIGVuY29kZXIgb25seSBzdXBwb3J0cyAic3RyaWN0IiBhbmQgInJlcGxhY2UiCi0gIGVycm9yIGhhbmRsZXJzLCB0aGUgZGVjb2RlciBvbmx5IHN1cHBvcnRzICJzdHJpY3QiIGFuZCAiaWdub3JlIiBlcnJvcgotICBoYW5kbGVycy4gIFBhdGNoIHdyaXR0ZW4gYnkgTWFyayBIYW1tb25kLgotCi0tIElzc3VlICM4ODUwOiBSZW1vdmUgInciIGFuZCAidyMiIGZvcm1hdHMgZnJvbSBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMsIHVzZQotICAidyoiIGZvcm1hdCBpbnN0ZWFkLiBBZGQgdGVzdHMgZm9yICJ3KiIgZm9ybWF0LgotCi0tIElzc3VlICM4NTkyOiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgcmFpc2UgYSBUeXBlRXJyb3IgZm9yICJ5IiwgInUiIGFuZCAiWiIKLSAgZm9ybWF0cyBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGEgbnVsbCBieXRlL2NoYXJhY3Rlci4gIFdyaXRlIHVuaXQgdGVzdHMgZm9yCi0gIHN0cmluZyBmb3JtYXRzLgotCi0tIElzc3VlICM3NDkwOiBUbyBmYWNpbGl0YXRlIHNoYXJpbmcgb2YgZG9jdGVzdHMgYmV0d2VlbiAyLnggYW5kIDMueCB0ZXN0Ci0gIHN1aXRlcywgdGhlIElHTk9SRV9FWENFUFRJT05fREVUQUlMIGRpcmVjdGl2ZSBub3cgYWxzbyBpZ25vcmVzIHRoZSBtb2R1bGUKLSAgbG9jYXRpb24gb2YgdGhlIHJhaXNlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzg5Njk6IE9uIFdpbmRvd3MsIHVzZSBtYmNzIGNvZGVjIGluIHN0cmljdCBtb2RlIHRvIGVuY29kZSBhbmQgZGVjb2RlCi0gIGZpbGVuYW1lcyBhbmQgZW5hYmxlIG9zLmZzZW5jb2RlKCkuCi0KLS0gSXNzdWUgIzkwNTg6IFJlbW92ZSBhc3NlcnRpb25zIGFib3V0IElOVF9NQVggaW4gVW5pY29kZURlY29kZUVycm9yLgotCi0tIElzc3VlICM4OTQxOiBEZWNvZGluZyBiaWcgZW5kaWFuIFVURi0zMiBkYXRhIGluIFVDUy0yIGJ1aWxkcyBjb3VsZCBjcmFzaCB0aGUKLSAgaW50ZXJwcmV0ZXIgd2l0aCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoaGlnaGVyIHRoYW4KLSAgMHgxMDAwMCkuCi0KLS0gSXNzdWUgIzg5NTA6IChTZWUgYWxzbyBpc3N1ZSAjNTA4MCkuICBQeV9BcmdQYXJzZSooKSBmdW5jdGlvbnMgbm93IHJhaXNlCi0gIFR5cGVFcnJvciBpbnN0ZWFkIG9mIGdpdmluZyBhIERlcHJlY2F0aW9uV2FybmluZyB3aGVuIGEgZmxvYXQgaXMgcGFyc2VkIHVzaW5nCi0gIHRoZSAnTCcgY29kZSAoZm9yIGxvbmcgbG9uZykuICAoQWxsIG90aGVyIGludGVnZXIgY29kZXMgYWxyZWFkeSByYWlzZQotICBUeXBlRXJyb3IgaW4gdGhpcyBjYXNlLikKLQotLSBJc3N1ZSAjODkyMjogTm9ybWFsaXplIHRoZSBlbmNvZGluZyBuYW1lIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSB0bwotICBlbmFibGUgc2hvcnRjdXRzIGZvciB1cHBlciBjYXNlIGVuY29kaW5nIG5hbWUuIEFkZCBhbHNvIGEgc2hvcnRjdXQgZm9yCi0gICJpc28tODg1OS0xIiBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgYW5kIFB5VW5pY29kZV9EZWNvZGUoKS4KLQotLSBJc3N1ZSAjODgzODogUmVtb3ZlIGNvZGVjcy5jaGFyYnVmZmVyX2VuY29kZSgpIGZ1bmN0aW9uLiAgVGhlIGJ1ZmZlciBwcm90b2NvbAotICBkb2Vzbid0IHN1cHBvcnQgImNoYXIgYnVmZmVyIiBhbnltb3JlIGluIFB5dGhvbiAzLgotCi0tIElzc3VlICM4MzM5OiBSZW1vdmUgInQjIiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLCB1c2UgInMjIiBvciAicyoiCi0gIGluc3RlYWQuICBjb2RlY3MuY2hhcmJ1ZmZlcl9lbmNvZGUoKSBub3cgYWNjZXB0cyBtb2RpZmlhYmxlIGJ1ZmZlciBvYmplY3RzCi0gIGxpa2UgYnl0ZWFycmF5LgotCi0tIElzc3VlICM4ODM3OiBSZW1vdmUgIk8/IiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLiAgVGhlIGZvcm1hdCBpcyBubwotICB1c2VkIGFueW1vcmUgYW5kIGl0IHdhcyBuZXZlciBkb2N1bWVudGVkLgotCi0tIEluIHN0ci5mb3JtYXQoKSwgcmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gaW5kZXhlcyB0byBhcmd1bWVudHMgYXJlIHRvbyBsYXJnZS4KLQotLSBJc3N1ZSAjMjg0NDogTWFrZSBpbnQoJzQyJywgbikgY29uc2lzdGVudGx5IHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQKLSAgaW50ZWdlcnMgbiAoaW5jbHVkaW5nIG4gPSAtOTA5KS4KLQotLSBJc3N1ZSAjODE4ODogSW50cm9kdWNlIGEgbmV3IHNjaGVtZSBmb3IgY29tcHV0aW5nIGhhc2hlcyBvZiBudW1iZXJzIChpbnN0YW5jZXMKLSAgb2YgaW50LCBmbG9hdCwgY29tcGxleCwgZGVjaW1hbC5EZWNpbWFsIGFuZCBmcmFjdGlvbnMuRnJhY3Rpb24pIHRoYXQgbWFrZXMgaXQKLSAgZWFzeSB0byBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgaGFzaCh4KSA9PSBoYXNoKHkpIHdoZW5ldmVyIHggYW5kIHkgaGF2ZQotICBlcXVhbCB2YWx1ZS4KLQotLSBJc3N1ZSAjODc0ODogRml4IHR3byBpc3N1ZXMgd2l0aCBjb21wYXJpc29ucyBiZXR3ZWVuIGNvbXBsZXggYW5kIGludGVnZXIKLSAgb2JqZWN0cy4gICgxKSBUaGUgY29tcGFyaXNvbiBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gVHJ1ZSBpbiBzb21lIGNhc2VzCi0gICgyKio1MysxID09IGNvbXBsZXgoMioqNTMpID09IDIqKjUzKSwgYnJlYWtpbmcgdHJhbnNpdGl2aXR5IG9mIGVxdWFsaXR5LgotICAoMikgVGhlIGNvbXBhcmlzb24gcmFpc2VkIGFuIE92ZXJmbG93RXJyb3IgZm9yIGxhcmdlIGludGVnZXJzLCBsZWFkaW5nIHRvCi0gIHVucHJlZGljdGFibGUgZXhjZXB0aW9ucyB3aGVuIGNvbWJpbmluZyBpbnRlZ2VycyBhbmQgY29tcGxleCBvYmplY3RzIGluIHNldHMKLSAgb3IgZGljdHMuCi0KLS0gSXNzdWUgIzg3NjY6IEluaXRpYWxpemUgX3dhcm5pbmdzIG1vZHVsZSBiZWZvcmUgaW1wb3J0aW5nIHRoZSBmaXJzdCBtb2R1bGUuCi0gIEZpeCBhIGNyYXNoIGlmIGFuIGVtcHR5IGRpcmVjdG9yeSBjYWxsZWQgImVuY29kaW5ncyIgZXhpc3RzIGluIHN5cy5wYXRoLgotCi0tIElzc3VlICM4NTg5OiBEZWNvZGUgUFlUSE9OV0FSTklOR1MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCB0aGUgZmlsZSBzeXN0ZW0KLSAgZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZyB0bwotICBiZSBjb25zaXN0ZW50IHdpdGggb3MuZW52aXJvbi4gIEFkZCBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZSgpIGZ1bmN0aW9uLgotCi0tIFB5T2JqZWN0X0R1bXAoKSBlbmNvZGVzIHVuaWNvZGUgb2JqZWN0cyB0byB1dGY4IHdpdGggYmFja3NsYXNocmVwbGFjZSAoaW5zdGVhZAotICBvZiBzdHJpY3QpIGVycm9yIGhhbmRsZXIgdG8gZXNjYXBlIHN1cnJvZ2F0ZXMuCi0KLS0gSXNzdWUgIzg3MTU6IENyZWF0ZSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KCkgZnVuY3Rpb246IEVuY29kZSBhIFVuaWNvZGUKLSAgb2JqZWN0IHRvIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmcgd2l0aCB0aGUgInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IKLSAgaGFuZGxlciwgYW5kIHJldHVybiBieXRlcy4gIElmIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXMgbm90IHNldCwgZmFsbAotICBiYWNrIHRvIFVURi04LgotCi0tIEVuYWJsZSBzaG9ydGN1dHMgZm9yIGNvbW1vbiBlbmNvZGluZ3MgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGZvciBhbnkKLSAgZXJyb3IgaGFuZGxlciwgbm90IG9ubHkgdGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlciAoc3RyaWN0KS4KLQotLSBJc3N1ZSAjODYxMDogTG9hZCBmaWxlIHN5c3RlbSBjb2RlYyBhdCBzdGFydHVwLCBhbmQgZGlzcGxheSBhIGZhdGFsIGVycm9yIG9uCi0gIGZhaWx1cmUuICBTZXQgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIHRvIHV0Zi04IChpbnN0ZWFkIG9mIE5vbmUpIGlmIGdldHRpbmcKLSAgdGhlIGxvY2FsZSBlbmNvZGluZyBmYWlsZWQsIG9yIGlmIG5sX2xhbmdpbmZvKENPREVTRVQpIGZ1bmN0aW9uIGlzIG1pc3NpbmcuCi0KLS0gUHlGaWxlX0Zyb21GZCgpIHVzZXMgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCgpIGluc3RlYWQgb2YKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmcoKSB0byBzdXBwb3J0IHN1cnJvZ2F0ZXMgaW4gdGhlIGZpbGVuYW1lIGFuZCB1c2UgdGhlIHJpZ2h0Ci0gIGVuY29kaW5nLgotCi0tIElzc3VlICM3NTA3OiBRdW90ZSAiISIgaW4gcGlwZXMucXVvdGUoKTsgaXQgaXMgc3BlY2lhbCB0byBzb21lIHNoZWxscy4KLQotLSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSgpIHVzZXMgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzg0MTk6IFByZXZlbnQgdGhlIGRpY3QgY29uc3RydWN0b3IgZnJvbSBhY2NlcHRpbmcgbm9uLXN0cmluZyBrZXl3b3JkCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjODEyNDogUHlTeXNfV3JpdGVTdGRvdXQoKSBhbmQgUHlTeXNfV3JpdGVTdGRlcnIoKSBkb24ndCBleGVjdXRlCi0gIGluZGlyZWN0bHkgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyBhbnltb3JlIGJlY2F1c2UgbXl3cml0ZSgpIGlnbm9yZXMgZXhjZXB0aW9ucwotICAoS2V5Ym9hcmRJbnRlcnJ1cHQpLgotCi0tIElzc3VlICM4MDkyOiBGaXggUHlVbmljb2RlX0VuY29kZVVURjgoKSB0byBzdXBwb3J0IGVycm9yIGhhbmRsZXIgcHJvZHVjaW5nCi0gIHVuaWNvZGUgc3RyaW5nIChlZy4gYmFja3NsYXNocmVwbGFjZSkuCi0KLS0gSXNzdWUgIzg0ODU6IFB5VW5pY29kZV9GU0NvbnZlcnRlcigpIGRvZXNuJ3QgYWNjZXB0IGJ5dGVlYXJyYXkgb2JqZWN0cwotICBhbnltb3JlLCB5b3UgaGF2ZSB0byBjb252ZXJ0IHlvdXIgYnl0ZWFycmF5IGZpbGVuYW1lcyB0byBieXRlcy4KLQotLSBJc3N1ZSAjNzMzMjogUmVtb3ZlIHRoZSAxNktCIHN0YWNrLWJhc2VkIGJ1ZmZlciBpbgotICBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZSwgd2hpY2ggZG9lc24ndCBicmluZyBhbnkgbm90aWNlYWJsZSBiZW5lZml0Ci0gIGNvbXBhcmVkIHRvIHRoZSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIGZhbGxiYWNrLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMKLSAgTmF0YWxpLgotCi0tIElzc3VlICM4NDE3OiBSYWlzZSBhbiBPdmVyZmxvd0Vycm9yIHdoZW4gYW4gaW50ZWdlciBsYXJnZXIgdGhhbiBzeXMubWF4c2l6ZSBpcwotICBwYXNzZWQgdG8gYnl0ZXMgb3IgYnl0ZWFycmF5LgotCi0tIElzc3VlICM3MzAxOiBBZGQgZW52aXJvbm1lbnQgdmFyaWFibGUgJFBZVEhPTldBUk5JTkdTLgotCi0tIElzc3VlICM4MzI5OiBEb24ndCByZXR1cm4gdGhlIHNhbWUgbGlzdHMgZnJvbSBzZWxlY3Quc2VsZWN0IHdoZW4gbm8gZmRzIGFyZQotICBjaGFuZ2VkLgotCi0tIElzc3VlICM4MjU5OiAxTCA8PCAoMioqMzEpIG5vIGxvbmdlciBwcm9kdWNlcyBhbiAnb3V0cmFnZW91cyBzaGlmdCBlcnJvcicgb24KLSAgNjQtYml0IG1hY2hpbmVzLiAgVGhlIHNoaWZ0IGNvdW50IGZvciBlaXRoZXIgbGVmdCBvciByaWdodCBzaGlmdCBpcyBwZXJtaXR0ZWQKLSAgdG8gYmUgdXAgdG8gc3lzLm1heHNpemUuCi0KLS0gRW5zdXJlIHRoYXQgdG9rZW5pemF0aW9uIG9mIGlkZW50aWZpZXJzIGlzIG5vdCBhZmZlY3RlZCBieSBsb2NhbGUuCi0KLS0gSXNzdWUgIzEyMjI1ODU6IEFkZGVkIExEQ1hYU0hBUkVEIGZvciBDKysgc3VwcG9ydC4gUGF0Y2ggYnkgQXJmcmV2ZXIuCi0KLS0gUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgVF9TVFJJTkdfSU5QTEFDRSBzdHJ1Y3QgbWVtYmVyLgotCi0tIElzc3VlICM4MjExOiBTYXZlL3Jlc3RvcmUgQ0ZMQUdTIGFyb3VuZCBBQ19QUk9HX0NDIGluIGNvbmZpZ3VyZS5pbiwgaW4gY2FzZSBpdAotICBpcyBzZXQuCi0KLS0gSXNzdWUgIzgyMjY6IHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSByYWlzZXMgYSBMb29rdXBFcnJvciBpZiB0aGUgZW5jb2RpbmcKLSAgaXMgdW5rbm93bi4KLQotLSBJc3N1ZSAjMTU4Mzg2MzogQSBzdHIgc3ViY2xhc3MgY2FuIG5vdyBvdmVycmlkZSB0aGUgX19zdHJfXyBtZXRob2QuCi0KLS0gSXNzdWUgIzgwMTQ6IFNldHRpbmcgYSBUX1VJTlQgb3IgVF9QWVNTSVpFVCBhdHRyaWJ1dGUgb2YgYW4gb2JqZWN0IHdpdGgKLSAgUHlNZW1iZXJEZWZzIGNvdWxkIHByb2R1Y2UgYW4gaW50ZXJuYWwgZXJyb3I7IHJhaXNlIFR5cGVFcnJvciBpbnN0ZWFkLgotCi0tIElzc3VlICM3ODQ1OiBSaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBvbiB0aGUgY29tcGxleCB0eXBlIG5vdyByZXR1cm4KLSAgTm90SW1wbGVtZW50ZWQgcmF0aGVyIHRoYW4gcmFpc2luZyBhIFR5cGVFcnJvciB3aGVuIGNvbXBhcmluZyB3aXRoIGFuCi0gIGluY29tcGF0aWJsZSB0eXBlOyB0aGlzIGFsbG93cyB1c2VyLWRlZmluZWQgY2xhc3NlcyB0byBpbXBsZW1lbnQgdGhlaXIgb3duCi0gIGNvbXBhcmlzb25zIHdpdGggY29tcGxleC4KLQotLSBJc3N1ZSAjMzEzNzogRG9uJ3QgaWdub3JlIGVycm9ycyBhdCBzdGFydHVwLCBlc3BlY2lhbGx5IGEga2V5Ym9hcmQgaW50ZXJydXB0Ci0gIChTSUdJTlQpLiBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaW1wb3J0aW5nIHRoZSBzaXRlIG1vZHVsZSwgdGhlIGVycm9yIGlzCi0gIHByaW50ZWQgYW5kIFB5dGhvbiBleGl0cy4gSW5pdGlhbGl6ZSB0aGUgR0lMIGJlZm9yZSBpbXBvcnRpbmcgdGhlIHNpdGUgbW9kdWxlLgotCi0tIElzc3VlICM3MTczOiBHZW5lcmF0b3IgZmluYWxpemF0aW9uIGNvdWxkIGludmFsaWRhdGUgc3lzLmV4Y19pbmZvKCkuCi0KLS0gSXNzdWUgIzc1NDQ6IFByZWFsbG9jYXRlIHRocmVhZCBtZW1vcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSB0aHJlYWQgdG8gYXZvaWQgYQotICBmYXRhbCBlcnJvciBpbiBsb3cgbWVtb3J5IGNvbmRpdGlvbi4KLQotLSBJc3N1ZSAjNzgyMDogVGhlIHBhcnNlciB0b2tlbml6ZXIgcmVzdG9yZXMgYWxsIGJ5dGVzIGluIHRoZSByaWdodCBpZiB0aGUgQk9NCi0gIGNoZWNrIGZhaWxzLgotCi0tIEhhbmRsZSBlcnJvcnMgZnJvbSBsb29raW5nIHVwIF9fcHJlcGFyZV9fIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjNTkzOTogQWRkIGFkZGl0aW9uYWwgcnVudGltZSBjaGVja2luZyB0byBlbnN1cmUgYSB2YWxpZCBjYXBzdWxlIGluCi0gIE1vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jLgotCi0tIElzc3VlICM3MzA5OiBGaXggdW5jaGVja2VkIGF0dHJpYnV0ZSBhY2Nlc3Mgd2hlbiBjb252ZXJ0aW5nCi0gIFVuaWNvZGVFbmNvZGVFcnJvciwgVW5pY29kZURlY29kZUVycm9yLCBhbmQgVW5pY29kZVRyYW5zbGF0ZUVycm9yIHRvIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzY5MDI6IEZpeCBwcm9ibGVtIHdpdGggYnVpbHQtaW4gdHlwZXMgZm9ybWF0IGluY29ycmVjdGx5IHdpdGggMAotICBwYWRkaW5nLgotCi0tIElzc3VlICM3OTg4OiBGaXggZGVmYXVsdCBhbGlnbm1lbnQgdG8gYmUgcmlnaHQgYWxpZ25lZCBmb3IgY29tcGxleC5fX2Zvcm1hdF9fLgotICBOb3cgaXQgbWF0Y2hlcyBvdGhlciBudW1lcmljIHR5cGVzLgotCi0tIElzc3VlICM1OTg4OiBSZW1vdmUgZGVwcmVjYXRlZCBmdW5jdGlvbnMgUHlPU19hc2NpaV9mb3JtYXRkLAotICBQeU9TX2FzY2lpX3N0cnRvZCwgYW5kIFB5T1NfYXNjaWlfYXRvZi4gIFVzZSBQeU9TX2RvdWJsZV90b19zdHJpbmcgYW5kCi0gIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZSBpbnN0ZWFkLiAgU2VlIGlzc3VlICM1ODM1IGZvciB0aGUgb3JpZ2luYWwgZGVwcmVjYXRpb25zLgotCi0tIElzc3VlICM3Mzg1OiBGaXggYSBjcmFzaCBpbiBgTWVtb3J5Vmlld19Gcm9tT2JqZWN0YCB3aGVuIGBQeU9iamVjdF9HZXRCdWZmZXJgCi0gIGZhaWxzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3Nzg4OiBGaXggYW4gaW50ZXJwcmV0ZXIgY3Jhc2ggcHJvZHVjZWQgYnkgZGVsZXRpbmcgYSBsaXN0IHNsaWNlIHdpdGgKLSAgdmVyeSBsYXJnZSBzdGVwIHZhbHVlLgotCi0tIElzc3VlICM3NzY2OiBDaGFuZ2Ugc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkgcmV0dXJuIHZhbHVlIHRvIGEgbmFtZWQgdHVwbGUgYW5kCi0gIGFkZCB0aGUgYWRkaXRpb25hbCBtZW1iZXJzIHJldHVybmVkIGluIGFuIE9TVkVSU0lPTklORk9FWCBzdHJ1Y3R1cmUuICBUaGUgbmV3Ci0gIG1lbWJlcnMgYXJlIHNlcnZpY2VfcGFja19tYWpvciwgc2VydmljZV9wYWNrX21pbm9yLCBzdWl0ZV9tYXNrLCBhbmQKLSAgcHJvZHVjdF90eXBlLgotCi0tIElzc3VlICM3NTYxOiBPcGVyYXRpb25zIG9uIGVtcHR5IGJ5dGVhcnJheXMgKHN1Y2ggYXMgYGludChieXRlYXJyYXkoKSlgKSBjb3VsZAotICBjcmFzaCBpbiBtYW55IHBsYWNlcyBiZWNhdXNlIG9mIHRoZSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoKSBtYWNybyByZXR1cm5pbmcKLSAgTlVMTC4gIFRoZSBtYWNybyBub3cgcmV0dXJucyBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGVtcHR5IHN0cmluZyBpbnN0ZWFkLgotCi0tIElzc3VlICM2NjkwOiBPcHRpbWl6ZSB0aGUgYnl0ZWNvZGUgZm9yIGV4cHJlc3Npb25zIHN1Y2ggYXMgYHggaW4gezEsIDIsIDN9YCwKLSAgd2hlcmUgdGhlIHJpZ2h0IGhhbmQgb3BlcmFuZCBpcyBhIHNldCBvZiBjb25zdGFudHMsIGJ5IHR1cm5pbmcgdGhlIHNldCBpbnRvIGEKLSAgZnJvemVuc2V0IGFuZCBwcmUtYnVpbGRpbmcgaXQgYXMgYSBjb25zdGFudC4gIFRoZSBjb21wYXJpc29uIG9wZXJhdGlvbiBpcyBtYWRlCi0gIGFnYWluc3QgdGhlIGNvbnN0YW50IGluc3RlYWQgb2YgYnVpbGRpbmcgYSBuZXcgc2V0IGVhY2ggdGltZSBpdCBpcyBleGVjdXRlZCAoYQotICBzaW1pbGFyIG9wdGltaXphdGlvbiBhbHJlYWR5IGV4aXN0ZWQgd2hpY2ggdHVybmVkIGEgbGlzdCBvZiBjb25zdGFudHMgaW50byBhCi0gIHByZS1idWlsdCB0dXBsZSkuICBQYXRjaCBhbmQgYWRkaXRpb25hbCB0ZXN0cyBieSBEYXZlIE1hbGNvbG0uCi0KLS0gSXNzdWUgIzc2MjI6IEltcHJvdmUgdGhlIHNwbGl0KCksIHJzcGxpdCgpLCBzcGxpdGxpbmVzKCkgYW5kIHJlcGxhY2UoKSBtZXRob2RzCi0gIG9mIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHVuaWNvZGUgb2JqZWN0cyBieSB1c2luZyBhIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBiYXNlZAotICBvbiBzdHJpbmdsaWIncyBmYXN0IHNlYXJjaC4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzYzMjogRml4IHZhcmlvdXMgc3RyIC0+IGZsb2F0IGNvbnZlcnNpb24gYnVncyBwcmVzZW50IGluIDIuNyBhbHBoYSAyLAotICBpbmNsdWRpbmc6ICgxKSBhIHNlcmlvdXMgJ3dyb25nIG91dHB1dCcgYnVnIHRoYXQgY291bGQgb2NjdXIgZm9yIGxvbmcgKD4gNDAKLSAgZGlnaXQpIGlucHV0IHN0cmluZ3MsICgyKSBhIGNyYXNoIGluIGR0b2EuYyB0aGF0IG9jY3VycmVkIGluIGRlYnVnIGJ1aWxkcyB3aGVuCi0gIHBhcnNpbmcgY2VydGFpbiBsb25nIG51bWVyaWMgc3RyaW5ncyBjb3JyZXNwb25kaW5nIHRvIHN1Ym5vcm1hbCB2YWx1ZXMsICgzKSBhCi0gIG1lbW9yeSBsZWFrIGZvciBzb21lIHZhbHVlcyBsYXJnZSBlbm91Z2ggdG8gY2F1c2Ugb3ZlcmZsb3csIGFuZCAoNCkgYSBudW1iZXIKLSAgb2YgZmxhd3MgdGhhdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0cy4KLQotLSBUaGUgX19jb21wbGV4X18gbWV0aG9kIGlzIG5vdyBsb29rZWQgdXAgb24gdGhlIGNsYXNzIG9mIGluc3RhbmNlcyB0byBtYWtlIGl0Ci0gIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBzcGVjaWFsIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzc0NjI6IEltcGxlbWVudCB0aGUgc3RyaW5nbGliIGZhc3Qgc2VhcmNoIGFsZ29yaXRobSBmb3IgdGhlIGByZmluZGAsCi0gIGByaW5kZXhgLCBgcnNwbGl0YCBhbmQgYHJwYXJ0aXRpb25gIG1ldGhvZHMuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzc2MDQ6IERlbGV0aW5nIGFuIHVuc2V0IHNsb3R0ZWQgYXR0cmlidXRlIGRpZCBub3QgcmFpc2UgYW4KLSAgQXR0cmlidXRlRXJyb3IuCi0KLS0gSXNzdWUgIzc1MzQ6IEZpeCBoYW5kbGluZyBvZiBJRUVFIHNwZWNpYWxzIChpbmZpbml0aWVzLCBuYW5zLCBuZWdhdGl2ZSB6ZXJvKQotICBpbiAqKiBvcGVyYXRvci4gIFRoZSBiZWhhdmlvdXIgbm93IGNvbmZvcm1zIHRvIHRoYXQgZGVzY3JpYmVkIGluIEM5OSBBbm5leCBGLgotCi0tIElzc3VlICMxODExOiBpbXByb3ZlIGFjY3VyYWN5IGFuZCBjcm9zcy1wbGF0Zm9ybSBjb25zaXN0ZW5jeSBmb3IgdHJ1ZSBkaXZpc2lvbgotICBvZiBpbnRlZ2VyczogdGhlIHJlc3VsdCBvZiBhL2IgaXMgbm93IGNvcnJlY3RseSByb3VuZGVkIGZvciBpbnRzIGEgYW5kIGIgKGF0Ci0gIGxlYXN0IG9uIElFRUUgNzU0IHBsYXRmb3JtcyksIGFuZCBpbiBwYXJ0aWN1bGFyIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUKLSAgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50LgotCi0tIElzc3VlICM2ODM0OiByZXBsYWNlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICdweXRob24nIGFuZCAncHl0aG9udycKLSAgZXhlY3V0YWJsZXMgb24gT1NYLgotCi0gIFRoZXNlIGV4ZWN1dGFibGVzIG5vdyB3b3JrIHByb3Blcmx5IHdpdGggdGhlIGFyY2goMSkgY29tbWFuZDogYGBhcmNoIC1wcGMKLSAgcHl0aG9uYGAgd2lsbCBzdGFydCBhIHVuaXZlcnNhbCBiaW5hcnkgdmVyc2lvbiBvZiBweXRob24gaW4gUFBDIG1vZGUgKHVubGlrZQotICBwcmV2aW91cyByZWxlYXNlcykuCi0KLS0gSXNzdWUgIzc0NjY6IFNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBpcyBjYWxsZWQgaW4gdGhlCi0gIG1pZGRsZSBvZiBwb3B1bGF0aW5nIGEgdHVwbGUuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzc0MTk6IHNldGxvY2FsZSgpIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciBvbiBXaW5kb3dzIHdoZW4gY2FsbGVkCi0gIHdpdGggaW52YWxpZCB2YWx1ZXMuCi0KLS0gSXNzdWUgIzYwNzc6IE9uIFdpbmRvd3MsIGZpbGVzIG9wZW5lZCB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUgaW4gInd0KyIKLSAgbW9kZSB3b3VsZCBhcHBlYXIgdHJ1bmNhdGVkIG9uIHRoZSBmaXJzdCAnMHgxYScgYnl0ZSAoYWthLiBDdHJsK1opLgotCi0tIElzc3VlICM3MDg1OiBGaXggY3Jhc2ggd2hlbiBpbXBvcnRpbmcgc29tZSBleHRlbnNpb25zIGluIGEgdGhyZWFkIG9uIE1hY09TWAotICAxMC42LgotCi0tIElzc3VlICMxNzU3MTI2OiBGaXggdGhlIGN5cmlsbGljLWFzaWFuIGFsaWFzIGZvciB0aGUgcHRjcDE1NCBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNjk3MDogUmVtb3ZlIHJlZHVuZGFudCBjYWxscyB3aGVuIGNvbXBhcmluZyBvYmplY3RzIHRoYXQgZG9uJ3QKLSAgaW1wbGVtZW50IHRoZSByZWxldmFudCByaWNoIGNvbXBhcmlzb24gbWV0aG9kcy4KLQotLSBJc3N1ZSAjNzI5ODogRml4ZXMgZm9yIHJhbmdlIGFuZCByZXZlcnNlZChyYW5nZSguLi4pKS4gIEl0ZXJhdGlvbiBvdmVyCi0gIHJhbmdlKGEsIGIsIGMpIGluY29ycmVjdGx5IGdhdmUgYW4gZW1wdHkgaXRlcmF0b3Igd2hlbiBhLCBiIGFuZCBjIGZpdCBpbiBDCi0gIGxvbmcgYnV0IHRoZSBsZW5ndGggb2YgdGhlIHJhbmdlIGRpZCBub3QuICBBbHNvIGZpeCBzZXZlcmFsIGNhc2VzIHdoZXJlCi0gIHJldmVyc2VkKHJhbmdlKGEsIGIsIGMpKSBnYXZlIHdyb25nIHJlc3VsdHMsIGFuZCBmaXggYSByZWZsZWFrIGZvcgotICByZXZlcnNlZChyYW5nZShhLCBiLCBjKSkgd2l0aCBsYXJnZSBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzcyNDQ6IGl0ZXJ0b29scy5pemlwX2xvbmdlc3QoKSBubyBsb25nZXIgaWdub3JlcyBleGNlcHRpb25zIHJhaXNlZAotICBkdXJpbmcgdGhlIGZvcm1hdGlvbiBvZiBhbiBvdXRwdXQgdHVwbGUuCi0KLS0gSXNzdWUgIzMyOTc6IE9uIHdpZGUgdW5pY29kZSBidWlsZHMsIGRvIG5vdCBzcGxpdCB1bmljb2RlIGNoYXJhY3RlcnMgaW50bwotICBzdXJyb2dhdGVzLgotCi0tIFJlbW92ZSBsZW5ndGggbGltaXRhdGlvbiB3aGVuIGNvbnN0cnVjdGluZyBhIGNvbXBsZXggbnVtYmVyIGZyb20gYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzEwODc0MTg6IEJvb3N0IHBlcmZvcm1hbmNlIG9mIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3IgbG9uZ3MuCi0KLS0gU3VwcG9ydCBmb3IgQXRoZU9TIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZCBmcm9tIHRoZSBjb2RlIGJhc2UuIEl0IHdhcwotICBkaXNhYmxlZCBzaW5jZSBQeXRob24gMy4wLgotCi0tIFN1cHBvcnQgZm9yIHNldmVyYWwgbGVnYWN5IHRocmVhZGluZyBsaWJyYXJpZXMgaGFzIGJlZW4gZGlzYWJsZWQuIFRoZXNlCi0gIGxpYnJhcmllcyBhcmU6IE1hY2ggQyB0aHJlYWRzLCBTdW5PUyBMV1AsIEdOVSBwdGgsIElyaXggdGhyZWFkcy4gU3VwcG9ydCBjb2RlCi0gIHdpbGwgYmUgZW50aXJlbHkgcmVtb3ZlZCBpbiAzLjMuCi0KLS0gU3VwcG9ydCBmb3IgT1NGKiBoYXMgYmVlbiBkaXNhYmxlZC4gSWYgbm9ib2R5IHN0YW5kcyB1cCwgc3VwcG9ydCB3aWxsIGJlCi0gIHJlbW92ZWQgaW4gMy4zLiBTZWUgPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4NjA2Pi4KLQotLSBQZWVwaG9sZSBjb25zdGFudCBmb2xkaW5nIGhhZCBtaXNzZWQgVU5BUllfUE9TSVRJVkUuCi0KLS0gSXNzdWUgIzE3MjIzNDQ6IHRocmVhZGluZy5fc2h1dGRvd24oKSBpcyBub3cgY2FsbGVkIGluIFB5X0ZpbmFsaXplKCksIHdoaWNoCi0gIGZpeGVzIHRoZSBwcm9ibGVtIG9mIHNvbWUgZXhjZXB0aW9ucyBiZWluZyB0aHJvd24gYXQgc2h1dGRvd24gd2hlbiB0aGUKLSAgaW50ZXJwcmV0ZXIgaXMga2lsbGVkLiBQYXRjaCBieSBBZGFtIE9sc2VuLgotCi0tIElzc3VlICM3MTQ3OiBSZW1vdmUgc3VwcG9ydCBmb3IgY29tcGlsaW5nIFB5dGhvbiB3aXRob3V0IGNvbXBsZXggbnVtYmVyCi0gIHN1cHBvcnQuCi0KLS0gSXNzdWUgIzcxMjA6IGxvZ2dpbmc6IFJlbW92ZWQgaW1wb3J0IG9mIG11bHRpcHJvY2Vzc2luZyB3aGljaCBpcyBjYXVzaW5nIGNyYXNoCi0gIGluIEdBRS4KLQotLSBJc3N1ZSAjMTc1NDA5NDogSW1wcm92ZSB0aGUgc3RhY2sgZGVwdGggY2FsY3VsYXRpb24gaW4gdGhlIGNvbXBpbGVyLiAgVGhlcmUKLSAgc2hvdWxkIGJlIG5vIG90aGVyIGVmZmVjdCB0aGFuIGEgc21hbGwgZGVjcmVhc2UgaW4gbWVtb3J5IHVzZS4gIFBhdGNoIGJ5Ci0gIENocmlzdG9waGVyIFR1ciBMZXNuaWV3c2tpLUxhYXMuCi0KLS0gSXNzdWUgIzcwNjU6IEZpeCBhIGNyYXNoIGluIGJ5dGVzLm1ha2V0cmFucyBhbmQgYnl0ZWFycmF5Lm1ha2V0cmFucyB3aGVuIHVzaW5nCi0gIGJ5dGUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAxMjcuICBQYXRjaCBieSBEZXJrIERydWtrZXIuCi0KLS0gSXNzdWUgIzE1NzExODQ6IFRoZSBVbmljb2RlIGRhdGFiYXNlIGNvbnRhaW5zIHByb3BlcnRpZXMgZm9yIG1vcmUgY2hhcmFjdGVycy4KLSAgVGhlIHRhYmxlcyBmb3IgY29kZSBwb2ludHMgcmVwcmVzZW50aW5nIG51bWVyaWMgdmFsdWVzLCB3aGl0ZSBzcGFjZXMgb3IgbGluZQotICBicmVha3MgYXJlIG5vdyBnZW5lcmF0ZWQgZnJvbSB0aGUgb2ZmaWNpYWwgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgZmlsZXMsCi0gIGFuZCBpbmNsdWRlIGluZm9ybWF0aW9uIGZyb20gdGhlIFVuaWhhbi50eHQgZmlsZS4KLQotLSBJc3N1ZSAjNzAxOTogUmFpc2UgVmFsdWVFcnJvciB3aGVuIHVubWFyc2hhbGxpbmcgYmFkIGxvbmcgZGF0YSwgaW5zdGVhZCBvZgotICBwcm9kdWNpbmcgaW50ZXJuYWxseSBpbmNvbnNpc3RlbnQgUHl0aG9uIGxvbmdzLgotCi0tIElzc3VlICM2OTkwOiBGaXggdGhyZWFkaW5nLmxvY2FsIHN1YmNsYXNzZXMgbGVhdmluZyBvbGQgc3RhdGUgYXJvdW5kIGFmdGVyIGEKLSAgcmVmZXJlbmNlIGN5Y2xlIEdDIHdoaWNoIGNvdWxkIGJlIHJlY3ljbGVkIGJ5IG5ldyBsb2NhbHMuCi0KLS0gSXNzdWUgIzU0NjA6IEZpeCBhbiBhbWJpZ3VpdHkgaW4gdGhlIGdyYW1tYXIuCi0KLS0gSXNzdWUgIzE3NjYzMDQ6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgbWVtYmVyc2hpcCB0ZXN0cyBvbiByYW5nZSBvYmplY3RzLgotCi0tIElzc3VlICM2NzEzOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGludGVnZXIgLT4gc3RyaW5nIGNvbnZlcnNpb25zLgotCi0tIElzc3VlICM2ODQ2OiBGaXggYnVnIHdoZXJlIGJ5dGVhcnJheS5wb3AoKSByZXR1cm5zIG5lZ2F0aXZlIGludGVnZXJzLgotCi0tIElzc3VlICM2NzUwOiBBIHRleHQgZmlsZSBvcGVuZWQgd2l0aCBpby5vcGVuKCkgY291bGQgZHVwbGljYXRlIGl0cyBvdXRwdXQgd2hlbgotICB3cml0aW5nIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhdCB0aGUgc2FtZSB0aW1lLgotCi0tIElzc3VlICM2NzA3OiBkaXIoKSBvbiBhbiB1bmluaXRpYWxpemVkIG1vZHVsZSBjYXVzZWQgYSBjcmFzaC4KLQotLSBJc3N1ZSAjNjU0MDogRml4ZWQgY3Jhc2ggZm9yIGJ5dGVhcnJheS50cmFuc2xhdGUoKSB3aXRoIGludmFsaWQgcGFyYW1ldGVycy4KLQotLSBJc3N1ZSAjNjU3Mzogc2V0LnVuaW9uKCkgc3RvcHBlZCBwcm9jZXNzaW5nIGlucHV0cyBpZiBhbiBpbnN0YW5jZSBvZiBzZWxmCi0gIG9jY3VycmVkIGluIHRoZSBhcmd1bWVudCBjaGFpbi4KLQotLSBJc3N1ZSAjNjA3MDogT24gcG9zaXggcGxhdGZvcm1zIGltcG9ydCBubyBsb25nZXIgY29waWVzIHRoZSBleGVjdXRlIGJpdCBmcm9tCi0gIHRoZSAucHkgZmlsZSB0byB0aGUgLnB5YyBmaWxlIGlmIGl0IGlzIHNldC4KLQotLSBJc3N1ZSAjMTYxNjk3OTogQWRkZWQgdGhlIGNwNzIwIChBcmFiaWMgRE9TKSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNjQyODogU2luY2UgUHl0aG9uIDMuMCwgdGhlIF9fYm9vbF9fIG1ldGhvZCBtdXN0IHJldHVybiBhIGJvb2wgb2JqZWN0LAotICBhbmQgbm90IGFuIGludC4gIEZpeCB0aGUgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlLCBhbmQgdGhlIGRvY3VtZW50YXRpb24uCi0KLS0gVGhlIGRlcHJlY2F0ZWQgUHlDT2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzYzNDc6IEluY2x1ZGUgaW50dHlwZXMuaCBhcyB3ZWxsIGFzIHN0ZGludC5oIGluIHB5cG9ydC5oLiAgVGhpcyBmaXhlcyBhCi0gIGJ1aWxkIGZhaWx1cmUgb24gSFAtVVg6IGludDMyX3QgYW5kIHVpbnQzMl90IGFyZSBkZWZpbmVkIGluIGludHR5cGVzLmggaW5zdGVhZAotICBvZiBzdGRpbnQuaCBvbiB0aGF0IHBsYXRmb3JtLgotCi0tIElzc3VlICM2MzczOiBGaXhlZCBhIFN5c3RlbUVycm9yIHdoZW4gZW5jb2Rpbmcgd2l0aCB0aGUgbGF0aW4tMSBjb2RlYyBhbmQgdGhlCi0gICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIGEgc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHVucGFpcmVkIHN1cnJvZ2F0ZXMuCi0KLS0gSXNzdWUgIzQ4NTY6IFJlbW92ZSBjaGVja3MgZm9yIHdpbiBOVC4KLQotLSBJc3N1ZSAjNjY4NzogUHlCeXRlc19Gcm9tT2JqZWN0KCkgbm8gbG9uZ2VyIGFjY2VwdHMgYW4gaW50ZWdlciBhcyBpdHMgYXJndW1lbnQKLSAgdG8gY29uc3RydWN0IGEgbnVsbC1pbml0aWFsaXplZCBieXRlcyBvYmplY3QuCi0KLS0gSXNzdWUgIzEwMjMyOTA6IEFkZCBmcm9tX2J5dGVzKCkgYW5kIHRvX2J5dGVzKCkgbWV0aG9kcyB0byBpbnRlZ2Vycy4gIFRoZXNlCi0gIG1ldGhvZHMgYWxsb3cgdGhlIGNvbnZlcnNpb24gb2YgaW50ZWdlcnMgdG8gYnl0ZXMsIGFuZCB2aWNlLXZlcnNhLgotCi0tIElzc3VlICM3MzgyOiBGaXggYnVnIGluIGJ5dGVzLl9fZ2V0bmV3YXJnc19fIHRoYXQgcHJldmVudGVkIGJ5dGVzIGluc3RhbmNlcwotICBmcm9tIGJlaW5nIGNvcGllZCB3aXRoIGNvcHkuY29weSgpLCBhbmQgYnl0ZXMgc3ViY2xhc3NlcyBmcm9tIGJlaW5nIHBpY2tsZWQKLSAgcHJvcGVybHkuCi0KLS0gQ29kZSBvYmplY3RzIG5vdyBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcy4KLQotLSBJc3N1ZSAjNzA3MjogaXNzcGFjZSgweGEwKSBpcyB0cnVlIG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICM4MDg0OiBQRVAgMzcwIG5vdyBjb25mb3JtcyB0byBzeXN0ZW0gY29udmVudGlvbnMgZm9yIGZyYW1ld29yayBidWlsZHMKLSAgb24gTWFjT1MgWC4gVGhhdCBpcywgInB5dGhvbiBzZXR1cC5weSBpbnN0YWxsIC0tdXNlciIgd2lsbCBpbnN0YWxsIGludG8KLSAgIn4vTGlicmFyeS9QeXRob24vMi43IiBpbnN0ZWFkIG9mICJ+Ly5sb2NhbCIuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMyNDQzOiBBIG5ldyBtYWNybywgYFB5X1ZBX0NPUFlgLCBjb3BpZXMgdGhlIHN0YXRlIG9mIHRoZQotICB2YXJpYWJsZSBhcmd1bWVudCBsaXN0LiAgYFB5X1ZBX0NPUFlgIGlzIGVxdWl2YWxlbnQgdG8gQzk5Ci0gIGB2YV9jb3B5YCwgYnV0IGF2YWlsYWJsZSBvbiBhbGwgcHl0aG9uIHBsYXRmb3Jtcy4KLQotLSBQeVNsaWNlX0dldEluZGljZXNFeCBub3cgY2xpcHMgdGhlIHN0ZXAgdG8gWy1QWV9TU0laRV9UX01BWCwgUFlfU1NJWkVfVF9NQVhdCi0gIGluc3RlYWQgb2YgWy1QWV9TU0laRV9UX01BWC0xLCBQWV9TU0laRV9UX01BWF0uICBUaGlzIG1ha2VzIGl0IHNhZmUgdG8gZG8KLSAgInN0ZXAgPSAtc3RlcCIgd2hlbiByZXZlcnNpbmcgYSBzbGljZS4KLQotLSBJc3N1ZSAjNTc1MzogQSBuZXcgQyBBUEkgZnVuY3Rpb24sIGBQeVN5c19TZXRBcmd2RXhgLCBhbGxvd3MgZW1iZWRkZXJzIG9mIHRoZQotICBpbnRlcnByZXRlciB0byBzZXQgc3lzLmFyZ3Ygd2l0aG91dCBhbHNvIG1vZGlmeWluZyBzeXMucGF0aC4gIFRoaXMgaGVscHMgZml4Ci0gIGBDVkUtMjAwOC01OTgzCi0gIDxodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMDgtNTk4Mz5gXy4KLQotLSBBZGQgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzLCB3aGljaCBjaGVja3MgaWYgYWxsIGtleXdvcmQgYXJndW1lbnRzIGFyZQotICBzdHJpbmdzIGluIGFuIGVmZmljaWVudCBtYW5uZXIuCi0KLS0gSXNzdWUgIzgyNzY6IFB5RXZhbF9DYWxsT2JqZWN0KCkgaXMgbm93IG9ubHkgYXZhaWxhYmxlIGluIG1hY3JvIGZvcm0uICBUaGUKLSAgZnVuY3Rpb24gZGVjbGFyYXRpb24sIHdoaWNoIHdhcyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBpcwotICBub3cgcmVtb3ZlZCAodGhlIG1hY3JvIHdhcyBpbnRyb2R1Y2VkIGluIDE5OTchKS4KLQotLSBJc3N1ZSAjNzc2NzogTmV3IGZ1bmN0aW9uIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cgYWRkZWQsIGFuYWxvZ291cyB0bwotICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cuCi0KLS0gTWFrZSBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyByZXR1cm4gbm90IGVxdWFsIGlmIHRoZSBQeXRob24gc3RyaW5nCi0gIGhhcyAnXDAnIGF0IHRoZSBlbmQuCi0KLS0gSXNzdWUgIzUwODA6IFRoZSBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBQeUFyZ19QYXJzZVR1cGxlLAotICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMsIFB5QXJnX1ZhUGFyc2UsIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzIGFuZAotICBQeUFyZ19QYXJzZSBub3cgcmFpc2UgYSBEZXByZWNhdGlvbldhcm5pbmcgZm9yIGZsb2F0IGFyZ3VtZW50cyBwYXNzZWQgd2l0aCB0aGUKLSAgJ0wnIGZvcm1hdCBjb2RlLiAgVGhpcyB3aWxsIGJlY29tZSBhIFR5cGVFcnJvciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbiwKLSAgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiB0aGUgb3RoZXIgaW50ZWdlciBmb3JtYXQgY29kZXMuCi0KLS0gSXNzdWUgIzcwMzM6IEZ1bmN0aW9uIGBgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygpYGAgYWRkZWQuCi0KLS0gSXNzdWUgIzc0MTQ6ICdDJyBjb2RlIHdhc24ndCBiZWluZyBza2lwcGVkIHByb3Blcmx5IChmb3Iga2V5d29yZCBhcmd1bWVudHMpIGluCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcy4KLQotLSBJc3N1ZSAjNzIyODogQWRkICclbGxkJyBhbmQgJyVsbHUnIHN1cHBvcnQgdG8gUHlTdHJpbmdfRnJvbUZvcm1hdChWKSBhbmQKLSAgUHlFcnJfRm9ybWF0LCBvbiBtYWNoaW5lcyB3aXRoIEhBVkVfTE9OR19MT05HIGRlZmluZWQuCi0KLS0gSXNzdWUgIzYxNTE6IE1hZGUgUHlEZXNjcl9DT01NT04gY29uZm9ybSB0byBzdGFuZGFyZCBDIChsaWtlIFB5T2JqZWN0X0hFQUQgaW4KLSAgUEVQIDMxMjMpLiAgVGhlIFB5RGVzY3JfVFlQRSBhbmQgUHlEZXNjcl9OQU1FIG1hY3JvcyBzaG91bGQgYmUgc2hvdWxkIHVzZWQgZm9yCi0gIGFjY2Vzc2luZyB0aGUgZF90eXBlIGFuZCBkX25hbWUgbWVtYmVycyBvZiBzdHJ1Y3R1cmVzIHVzaW5nIFB5RGVzY3JfQ09NTU9OLgotCi0tIElzc3VlICM2NDA1OiBSZW1vdmUgZHVwbGljYXRlIHR5cGUgZGVjbGFyYXRpb25zIGluIGRlc2Nyb2JqZWN0LmguCi0KLS0gVGhlIGNvZGUgZmxhZ3MgZm9yIG9sZCBfX2Z1dHVyZV9fIGZlYXR1cmVzIGFyZSBub3cgYXZhaWxhYmxlIGFnYWluLgotCi0tIElzc3VlICM1OTU0OiBBZGQgYSBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSBmdW5jdGlvbiB0byByZXBsYWNlIG1vc3QgdXNlcyBvZgotICBQeUNvZGVfQWRkcjJMaW5lKCkuCi0KLS0gSXNzdWUgIzU5NTk6IEFkZCBhIFB5Q29kZV9OZXdFbXB0eSgpIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBlbXB0eSBjb2RlCi0gIG9iamVjdCBhdCBhIHNwZWNpZmllZCBmaWxlLCBmdW5jdGlvbiwgYW5kIGxpbmUgbnVtYmVyLgotCi0tIElzc3VlICMxNDE5NjUyOiBDaGFuZ2UgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIFB5SW1wb3J0X0FwcGVuZEluaXR0YWIoKSB0bwotICBgYGNvbnN0IGNoYXIgKmBgIGFzIHRoZSBzdHJpbmcgaXMgc3RvcmVkIGJleW9uZCB0aGUgY2FsbC4KLQotLSBJc3N1ZSAjMjQyMjogV2hlbiBjb21waWxlZCB3aXRoIHRoZSBgYC0td2l0aC12YWxncmluZGBgIG9wdGlvbiwgdGhlIHB5bWFsbG9jCi0gIGFsbG9jYXRvciB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgd2hlbiBydW5uaW5nIHVuZGVyIFZhbGdyaW5kLiAgVGhpcwotICBnaXZlcyBpbXByb3ZlZCBtZW1vcnkgbGVhayBkZXRlY3Rpb24gd2hlbiBydW5uaW5nIHVuZGVyIFZhbGdyaW5kLCB3aGlsZSB0YWtpbmcKLSAgYWR2YW50YWdlIG9mIHB5bWFsbG9jIGF0IG90aGVyIHRpbWVzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSW4gcGRiLCB3aGVuIEN0cmwtQyBpcyBlbnRlcmVkIHdoaWxlIGRlZmluaW5nIGNvbW1hbmRzIGZvciBhIGJyZWFrcG9pbnQsIHRoZQotICBvbGQgY29tbWFuZHMgYXJlIHJlc3RvcmVkLgotCi0tIEZvciB0cmFjZWJhY2sgZGVidWdnaW5nLCB0aGUgcGRiIGxpc3Rpbmcgbm93IGFsc28gc2hvd3MgdGhlIGxvY2F0aW9ucyB3aGVyZQotICB0aGUgZXhjZXB0aW9uIHdhcyBvcmlnaW5hbGx5IChyZSlyYWlzZWQsIGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgbGFzdCBsaW5lCi0gIGV4ZWN1dGVkIChlLmcuIGluIGNhc2Ugb2YgZmluYWxseSBjbGF1c2VzKS4KLQotLSBUaGUgcGRiIGNvbW1hbmQgInNvdXJjZSIgaGFzIGJlZW4gYWRkZWQuICBJdCBkaXNwbGF5cyB0aGUgc291cmNlIGNvZGUgZm9yIGEKLSAgZ2l2ZW4gb2JqZWN0LCBpZiBwb3NzaWJsZS4KLQotLSBUaGUgcGRiIGNvbW1hbmQgImxvbmdsaXN0IiBoYXMgYmVlbiBhZGRlZC4gIEl0IGRpc3BsYXlzIHRoZSB3aG9sZSBzb3VyY2UgY29kZQotICBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzE1MDM1MDI6IE1ha2UgcGRiLlBkYiBlYXNpZXIgdG8gc3ViY2xhc3MgYnkgcHV0dGluZyBtZXNzYWdlIGFuZCBlcnJvcgotICBvdXRwdXQgaW50byBtZXRob2RzLgotCi0tIElzc3VlICM4MDk4ODc6IE1ha2UgdGhlIG91dHB1dCBvZiBwZGIncyBicmVha3BvaW50IGRlbGV0aW9ucyBtb3JlIGNvbnNpc3RlbnQ7Ci0gIGVtaXQgYSBtZXNzYWdlIHdoZW4gYSBicmVha3BvaW50IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0KLS0gSXNzdWUgIzUyOTQ6IEZpeCB0aGUgYmVoYXZpb3Igb2YgcGRiJ3MgImNvbnRpbnVlIiBjb21tYW5kIHdoZW4gY2FsbGVkIGluIHRoZQotICB0b3AtbGV2ZWwgZGVidWdnZWQgZnJhbWUuCi0KLS0gSXNzdWUgIzU3Mjc6IFJlc3RvcmUgdGhlIGFiaWxpdHkgdG8gdXNlIHJlYWRsaW5lIHdoZW4gY2FsbGluZyBpbnRvIHBkYiBpbgotICBkb2N0ZXN0cy4KLQotLSBJc3N1ZSAjNjcxOTogSW4gcGRiLCBkbyBub3Qgc3RvcCBzb21ld2hlcmUgaW4gdGhlIGVuY29kaW5ncyBtYWNoaW5lcnkgaWYgdGhlCi0gIHNvdXJjZSBmaWxlIHRvIGJlIGRlYnVnZ2VkIGlzIGluIGEgbm9uLWJ1aWx0aW4gZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzgwNDg6IFByZXZlbnQgZG9jdGVzdHMgZnJvbSBmYWlsaW5nIHdoZW4gc3lzLmRpc3BsYXlob29rIGhhcyBiZWVuCi0gIHJlYXNzaWduZWQuCi0KLS0gSXNzdWUgIzgwMTU6IEluIHBkYiwgZG8gbm90IGNyYXNoIHdoZW4gYW4gZW1wdHkgbGluZSBpcyBlbnRlcmVkIGFzIGEKLSAgYnJlYWtwb2ludCBjb21tYW5kLgotCi0tIEluIHBkYiwgYWxsb3cgZ2l2aW5nIGEgbGluZSBudW1iZXIgdG8gdGhlICJ1bnRpbCIgY29tbWFuZC4KLQotLSBJc3N1ZSAjMTQzNzA1MTogRm9yIHBkYiwgYWxsb3cgImNvbnRpbnVlIiBhbmQgcmVsYXRlZCBjb21tYW5kcyBpbiAucGRicmMKLSAgZmlsZXMuICBBbHNvLCBhZGQgYSBjb21tYW5kLWxpbmUgb3B0aW9uICItYyIgdGhhdCBydW5zIGEgY29tbWFuZCBhcyBpZiBnaXZlbgotICBpbiAucGRicmMuCi0KLS0gSXNzdWUgIzQxNzk6IEluIHBkYiwgYWxsb3cgImxpc3QgLiIgYXMgYSBjb21tYW5kIHRvIHJldHVybiB0byB0aGUgY3VycmVudGx5Ci0gIGRlYnVnZ2VkIGxpbmUuCi0KLS0gSXNzdWUgIzQxMDg6IEluIHVybGxpYi5yb2JvdHBhcnNlciwgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGBgVXNlci1hZ2VudDogKmBgCi0gIGVudHJpZXMsIGNvbnNpZGVyIHRoZSBmaXJzdCBvbmUuCi0KLS0gSXNzdWUgIzY2MzA6IEFsbG93IGN1c3RvbWl6aW5nIHJlZ2V4IGZsYWdzIHdoZW4gc3ViY2xhc3NpbmcgdGhlCi0gIHN0cmluZy5UZW1wbGF0ZSBjbGFzcy4KLQotLSBJc3N1ZSAjOTQxMTogQWxsb3cgc3BlY2lmeWluZyBhbiBlbmNvZGluZyBmb3IgY29uZmlnIGZpbGVzIGluIHRoZSBjb25maWdwYXJzZXIKLSAgbW9kdWxlLgotCi0tIElzc3VlICMxNjgyOTQyOiBJbXByb3ZlbWVudHMgdG8gY29uZmlncGFyc2VyOiBzdXBwb3J0IGFsdGVybmF0ZSBkZWxpbWl0ZXJzLAotICBhbHRlcm5hdGUgY29tbWVudCBwcmVmaXhlcyBhbmQgZW1wdHkgbGluZXMgaW4gdmFsdWVzLgotCi0tIElzc3VlICM5MzU0OiBQcm92aWRlIGdldHNvY2tvcHQoKSBpbiBhc3luY29yZSdzIGZpbGVfd3JhcHBlci4KLQotLSBJc3N1ZSAjODk2NjogY3R5cGVzOiBSZW1vdmUgaW1wbGljaXQgYnl0ZXMtdW5pY29kZSBjb252ZXJzaW9uLgotCi0tIElzc3VlICM5Mzc4OiBweXRob24gLW0gcGlja2xlIDxwaWNrbGUgZmlsZT4gd2lsbCBub3cgbG9hZCBhbmQgZGlzcGxheSB0aGUKLSAgZmlyc3Qgb2JqZWN0IGluIHRoZSBwaWNrbGUgZmlsZS4KLQotLSBJc3N1ZSAjNDc3MDogUmVzdHJpY3QgYmluYXNjaWkgbW9kdWxlIHRvIGFjY2VwdCBvbmx5IGJ5dGVzIChhcyBzcGVjaWZpZWQpLgotICBBbmQgZml4IHRoZSBlbWFpbCBwYWNrYWdlIHRvIGVuY29kZSB0byBBU0NJSSBpbnN0ZWFkIG9mIGBgcmF3LXVuaWNvZGUtZXNjYXBlYGAKLSAgYmVmb3JlIEFTQ0lJLXRvLWJpbmFyeSBkZWNvZGluZy4KLQotLSBJc3N1ZSAjOTM4NDogYGBweXRob24gLW0gdGtpbnRlcmBgIHdpbGwgbm93IGRpc3BsYXkgYSBzaW1wbGUgZGVtbyBhcHBsZXQuCi0KLS0gVGhlIGRlZmF1bHQgc2l6ZSBvZiB0aGUgcmUgbW9kdWxlJ3MgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIGNhY2hlIGhhcyBiZWVuCi0gIGluY3JlYXNlZCBmcm9tIDEwMCB0byA1MDAgYW5kIHRoZSBjYWNoZSByZXBsYWNlbWVudCBwb2xpY3kgaGFzIGNoYW5nZWQgZnJvbQotICBzaW1wbHkgY2xlYXJpbmcgdGhlIGVudGlyZSBjYWNoZSBvbiBvdmVyZmxvdyB0byBmb3JnZXR0aW5nIHRoZSBsZWFzdCByZWNlbnRseQotICB1c2VkIGNhY2hlZCBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zLiAgVGhpcyBpcyBhIHBlcmZvcm1hbmNlIHdpbiBmb3IKLSAgYXBwbGljYXRpb25zIHRoYXQgdXNlIGEgbG90IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIGxpbWl0cyB0aGUgaW1wYWN0IG9mCi0gIHRoZSBwZXJmb3JtYW5jZSBoaXQgYW55dGltZSB0aGUgY2FjaGUgaXMgZXhjZWVkZWQuCi0KLS0gSXNzdWUgIzcxMTM6IFNwZWVkIHVwIGxvYWRpbmcgaW4gY29uZmlncGFyc2VyLiBQYXRjaCBieSDFgXVrYXN6IExhbmdhLgotCi0tIElzc3VlICM5MDMyOiBYTUwtUlBDIGNsaWVudCByZXRyaWVzIHRoZSByZXF1ZXN0IG9uIEVQSVBFIGVycm9yLiAgVGhlIEVQSVBFCi0gIGVycm9yIG9jY3VycyB3aGVuIHRoZSBzZXJ2ZXIgY2xvc2VzIHRoZSBzb2NrZXQgYW5kIHRoZSBjbGllbnQgc2VuZHMgYSBiaWcKLSAgWE1MLVJQQyByZXF1ZXN0LgotCi0tIElzc3VlICM0NjI5OiBnZXRvcHQgcmFpc2VzIGFuIGVycm9yIGlmIGFuIGFyZ3VtZW50IGVuZHMgd2l0aCAiPSIsIHdoZXJlYXMKLSAgZ2V0b3B0IGRvZXNuJ3QgYWNjZXB0IGEgdmFsdWUgKGVnLiAtLWhlbHA9IGlzIHJlamVjdGVkIGlmIGdldG9wdCB1c2VzCi0gIFsnaGVscD0nXSBsb25nIG9wdGlvbnMpLgotCi0tIElzc3VlICM3OTg5OiBBZGRlZCBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGRhdGV0aW1lYCBtb2R1bGUuICBUaGUgQwotICBtb2R1bGUgaXMgcmVuYW1lZCB0byBgX2RhdGV0aW1lYCBhbmQgaWYgYXZhaWxhYmxlLCBvdmVycmlkZXMgYWxsIGNsYXNzZXMKLSAgZGVmaW5lZCBpbiBkYXRldGltZSB3aXRoIGZhc3QgQyBpbXBlbWVudGF0aW9uLiAgUHl0aG9uIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkCi0gIG9uIHRoZSBvcmlnaW5hbCBweXRob24gcHJvdG90eXBlIGZvciB0aGUgZGF0ZXRpbWUgbW9kdWxlIGJ5IFRpbSBQZXRlcnMgd2l0aAotICBtaW5vciBtb2RpZmljYXRpb25zIGJ5IHRoZSBQeVB5IHByb2plY3QuICBUaGUgdGVzdCBzdWl0ZSBub3cgdGVzdHMgYGRhdGV0aW1lYAotICBtb2R1bGUgd2l0aCBhbmQgd2l0aG91dCBgX2RhdGV0aW1lYCBhY2NlbGVyYXRpb24gdXNpbmcgdGhlIHNhbWUgdGVzdCBjYXNlcy4KLQotLSBJc3N1ZSAjNzg5NTogcGxhdGZvcm0ubWFjX3ZlcigpIG5vIGxvbmdlciBjcmFzaGVzIGFmdGVyIGNhbGxpbmcgb3MuZm9yaygpLgotCi0tIElzc3VlICM5MzIzOiBGaXhlZCBhIGJ1ZyBpbiB0cmFjZS5weSB0aGF0IHJlc3VsdGVkIGluIGxvb3NpbmcgdGhlIG5hbWUgb2YgdGhlCi0gIHNjcmlwdCBiZWluZyB0cmFjZWQuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgotCi0tIElzc3VlICM5MjgyOiBGaXhlZCAtLWxpc3RmdW5jcyBvcHRpb24gb2YgdHJhY2UucHkuICBUaGFua3MgRWxpIEJlbmRlcnNreSBmb3IKLSAgdGhlIHBhdGNoLgotCi0tIElzc3VlICMzNzA0OiBodHRwLmNvb2tpZWphciB3YXMgbm90IHByb3Blcmx5IGhhbmRsaW5nIFVSTHMgd2l0aCBhIC8gaW4gdGhlCi0gIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzkyNjg6IGBgcGlja2xldG9vbHMuZGlzKClgYCBub3cgaGFzIGFuIG9wdGlvbmFsICphbm5vdGF0ZSogYXJndW1lbnQKLSAgd2hpY2ggY29udHJvbHMgcHJpbnRpbmcgb2Ygb3Bjb2RlIGRlc2NyaXB0aW9ucyBpbiBgYGRpcygpYGAgb3V0cHV0LgotCi0tIElzc3VlICMxNTU1NTcwOiBlbWFpbCBubyBsb25nZXIgaW5zZXJ0cyBleHRyYSBibGFuayBsaW5lcyB3aGVuIGEgXHJcbiBjb21ibwotICBjcm9zc2VzIGFuIDgxOTIgYnl0ZSBib3VuZGFyeS4KLQotLSBJc3N1ZSAjOTI0MzogRml4IHNuZGhkciBtb2R1bGUgYW5kIGFkZCB1bml0IHRlc3RzLCBjb250cmlidXRlZCBieSBKYW1lcyBMZWUuCi0KLS0gYGBhc3QubGl0ZXJhbF9ldmFsKClgYCBub3cgYWxsb3dzIGJ5dGUgbGl0ZXJhbHMuCi0KLS0gSXNzdWUgIzkxMzc6IEZpeCBpc3N1ZSBpbiBNdXRhYmxlTWFwcGluZy51cGRhdGUsIHdoaWNoIGluY29ycmVjdGx5IHRyZWF0ZWQKLSAga2V5d29yZCBhcmd1bWVudHMgY2FsbGVkICdzZWxmJyBvciAnb3RoZXInIHNwZWNpYWxseS4KLQotLSBgYGFzdC5saXRlcmFsX2V2YWwoKWBgIG5vdyBhbGxvd3Mgc2V0IGxpdGVyYWxzLgotCi0tIElzc3VlICM5MTY0OiBFbnN1cmUgdGhhdCBzeXNjb25maWcgaGFuZGxlcyBkdXBsaWNhdGUgLWFyY2ggZmxhZ3MgaW4gQ0ZMQUdTLgotCi0tIElzc3VlICM3NjQ2OiBUaGUgZm5tYXRjaCBwYXR0ZXJuIGNhY2hlIG5vIGxvbmdlciBncm93cyB3aXRob3V0IGJvdW5kLgotCi0tIElzc3VlICM5MTM2OiBGaXggJ2RpY3Rpb25hcnkgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24nIFJ1bnRpbWVFcnJvcgotICBwcm9kdWNlZCB3aGVuIHByb2ZpbGluZyB0aGUgZGVjaW1hbCBtb2R1bGUuICBUaGlzIHdhcyBkdWUgdG8gYSBkYW5nZXJvdXMKLSAgaXRlcmF0aW9uIG92ZXIgJ2xvY2FscygpJyBpbiBDb250ZXh0Ll9faW5pdF9fLgotCi0tIEZpeCBleHRyZW1lIHNwZWVkIGlzc3VlIGluIERlY2ltYWwucG93IHdoZW4gdGhlIGJhc2UgaXMgYW4gZXhhY3QgcG93ZXIgb2YgMTAKLSAgYW5kIHRoZSBleHBvbmVudCBpcyB0aW55IChmb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDEwKSAqKgotICBEZWNpbWFsKCcxZS05OTk5OTk5OTknKWBgKS4KLQotLSBJc3N1ZSAjOTE4NjogRml4IG1hdGgubG9nMXAoLTEuMCkgdG8gcmFpc2UgVmFsdWVFcnJvciwgbm90IE92ZXJmbG93RXJyb3IuCi0KLS0gSXNzdWUgIzkxMzA6IEZpeCB2YWxpZGF0aW9uIG9mIHJlbGF0aXZlIGltcG9ydHMgaW4gcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTEyODogRml4IHZhbGlkYXRpb24gb2YgY2xhc3MgZGVjb3JhdG9ycyBpbiBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICM5MDk0OiBweXRob24gLW0gcGlja2xldG9vbHMgd2lsbCBub3cgZGlzYXNzZW1ibGUgcGlja2xlIGZpbGVzIGxpc3RlZCBpbgotICB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNlZSBvdXRwdXQgb2YgcHl0aG9uIC1tIHBpY2tsZXRvb2xzIC1oIGZvciBtb3JlCi0gIGRldGFpbHMuCi0KLS0gSXNzdWUgIzU0Njg6IHVybGVuY29kZSB0byBoYW5kbGUgYnl0ZXMgdHlwZSBhbmQgb3RoZXIgZW5jb2RpbmdzIGluIGl0cyBxdWVyeQotICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IERhbiBNYWhuLgotCi0tIElzc3VlICM3NjczOiBGaXggc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSAoQ1ZFLTIwMTAtMjA4OSkgaW4gdGhlIGF1ZGlvb3AgbW9kdWxlLAotICBlbnN1cmUgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIGxlbmd0aCBpcyBhIG11bHRpcGxlIG9mIHRoZSBmcmFtZSBzaXplLgotCi0tIElzc3VlICM2NTA3OiBBY2NlcHQgc291cmNlIHN0cmluZ3MgaW4gZGlzLmRpcygpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRGFuaWVsCi0gIFVyYmFuLgotCi0tIElzc3VlICM3ODI5OiBDbGVhcmx5IGRvY3VtZW50IHRoYXQgdGhlIGRpcyBtb2R1bGUgaXMgZXhwb3NpbmcgYW4KLSAgaW1wbGVtZW50YXRpb24gZGV0YWlsIHRoYXQgaXMgbm90IHN0YWJsZSBiZXR3ZWVuIFB5dGhvbiBWTXMgb3IgcmVsZWFzZXMuCi0KLS0gSXNzdWUgIzY1ODk6IGNsZWFudXAgYXN5bmNvcmUuc29ja2V0X21hcCBpbiBjYXNlIHNtdHBkLlNNVFBTZXJ2ZXIgY29uc3RydWN0b3IKLSAgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjOTExMDogQWRkaXRpb24gb2YgQ29udGV4dERlY29yYXRvciB0byBjb250ZXh0bGliLCBmb3IgY3JlYXRpbmcgQVBJcwotICB0aGF0IGFjdCBhcyBib3RoIGNvbnRleHQgbWFuYWdlcnMgYW5kIGRlY29yYXRvcnMuIGNvbnRleHRtYW5hZ2VyIGNoYW5nZXMgdG8KLSAgdXNlIENvbnRleHREZWNvcmF0b3IuCi0KLS0gSW1wbGVtZW50IGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyIGFuZCBkZXByZWNhdGUgUHlMb2FkZXIgYW5kIFB5UHljTG9hZGVyCi0gIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjQuCi0KLS0gSXNzdWUgIzkwNjQ6IHBkYidzICJ1cCIgYW5kICJkb3duIiBjb21tYW5kcyBub3cgYWNjZXB0IGFuIG9wdGlvbmFsIGFyZ3VtZW50Ci0gIGdpdmluZyB0aGUgbnVtYmVyIG9mIGZyYW1lcyB0byBnby4KLQotLSBJc3N1ZSAjOTAxODogb3MucGF0aC5ub3JtY2FzZSgpIG5vdyByYWlzZXMgYSBUeXBlRXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdAotICBgYHN0cmBgIG9yIGBgYnl0ZXNgYC4KLQotLSBJc3N1ZSAjOTA3NTogSW4gdGhlIHNzbCBtb2R1bGUsIHJlbW92ZSB0aGUgc2V0dGluZyBvZiBhIGBgZGVidWdgYCBmbGFnIG9uIGFuCi0gIE9wZW5TU0wgc3RydWN0dXJlLgotCi0tIElzc3VlICM4NjgyOiBUaGUgc3NsIG1vZHVsZSBub3cgdGVtcG9yYXJ5IGluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhCi0gIHNvY2tldCBvYmplY3QgZ290IHRocm91Z2ggYGBQeVdlYWtyZWZfR2V0T2JqZWN0YGAsIHNvIGFzIHRvIGF2b2lkIHBvc3NpYmxlCi0gIGRlYWxsb2NhdGlvbiB3aGlsZSB0aGUgb2JqZWN0IGlzIHN0aWxsIGJlaW5nIHVzZWQuCi0KLS0gSXNzdWUgIzEzNjgzNjg6IEZhbmN5VVJMT3BlbmVyIGNsYXNzIGNoYW5nZWQgdG8gdGhyb3cgYW4gRXhjZXB0aW9uIG9uIHdyb25nCi0gIHBhc3N3b3JkIGluc3RlYWQgb2YgcHJlc2VudGluZyBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQuICBPbGRlciBiZWhhdmlvciBjYW4gYmUKLSAgb2J0YWluZWQgYnkgcGFzc2luZyByZXRyeT1UcnVlIHRvIGh0dHBfZXJyb3JfeHh4IG1ldGhvZHMgb2YgRmFuY3lVUkxPcGVuZXIuCi0KLS0gSXNzdWUgIzg3MjA6IEZpeCByZWdyZXNzaW9uIGNhdXNlZCBieSBmaXggZm9yICM0MDUwIGJ5IG1ha2luZyBnZXRzb3VyY2VmaWxlCi0gIHNtYXJ0IGVub3VnaCB0byBmaW5kIHNvdXJjZSBmaWxlcyBpbiB0aGUgbGluZWNhY2hlLgotCi0tIElzc3VlICM1NjEwOiBmZWVkcGFyc2VyIG5vIGxvbmdlciBlYXRzIGV4dHJhIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBhIGJvZHkKLSAgcGFydCBpZiB0aGUgYm9keSBwYXJ0IGVuZHMgd2l0aCBhIGBgXHJcbmBgLgotCi0tIElzc3VlICM4OTg2OiBtYXRoLmVyZmMgd2FzIGluY29ycmVjdGx5IHJhaXNpbmcgT3ZlcmZsb3dFcnJvciBmb3IgdmFsdWVzCi0gIGJldHdlZW4gLTI3LjMgYW5kIC0zMC4wIG9uIHNvbWUgcGxhdGZvcm1zLgotCi0tIElzc3VlICM4Nzg0OiBTZXQgdGFyZmlsZSBkZWZhdWx0IGVuY29kaW5nIHRvICd1dGYtOCcgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjODk2NjogSWYgYSBjdHlwZXMgc3RydWN0dXJlIGZpZWxkIGlzIGFuIGFycmF5IG9mIGNfY2hhciwgY29udmVydCBpdHMKLSAgdmFsdWUgdG8gYnl0ZXMgaW5zdGVhZCBvZiBzdHIgKGFzIGRvbmUgZm9yIGNfY2hhciBhbmQgY19jaGFyX3ApLgotCi0tIElzc3VlICM4MTg4OiBDb21wYXJpc29ucyBiZXR3ZWVuIERlY2ltYWwgYW5kIEZyYWN0aW9uIG9iamVjdHMgYXJlIG5vdwotICBwZXJtaXR0ZWQsIHJldHVybmluZyBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgZXhhY3QgbnVtZXJpY2FsIHZhbHVlcyBvZiB0aGUKLSAgb3BlcmFuZHMuICBUaGlzIGJ1aWxkcyBvbiBpc3N1ZSAjMjUzMSwgd2hpY2ggYWxsb3dlZCBEZWNpbWFsLXRvLWZsb2F0Ci0gIGNvbXBhcmlzb25zOyBhbGwgY29tcGFyaXNvbnMgaW52b2x2aW5nIG51bWVyaWMgdHlwZXMgKGJvb2wsIGludCwgZmxvYXQsCi0gIGNvbXBsZXgsIERlY2ltYWwsIEZyYWN0aW9uKSBzaG91bGQgbm93IGFjdCBhcyBleHBlY3RlZC4KLQotLSBJc3N1ZSAjODg5NzogRml4IHN1bmF1IG1vZHVsZSwgdXNlIGJ5dGVzIHRvIHdyaXRlIHRoZSBoZWFkZXIuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgVGhvbWFzIEpvbGxhbnMuCi0KLS0gSXNzdWUgIzg4OTk6IHRpbWUuc3RydWN0X3RpbWUgbm93IGhhcyBjbGFzcyBhbmQgYXR0cmlidXRlIGRvY3N0cmluZ3MuCi0KLS0gSXNzdWUgIzY0NzA6IERyb3AgVU5DIHByZWZpeCBpbiBGaXhUay4KLQotLSBJc3N1ZSAjNDc2ODogYmFzZTY0IGVuY29kZWQgZW1haWwgYm9keSBwYXJ0cyB3ZXJlIGluY29ycmVjdGx5IHN0b3JlZCBhcyBiaW5hcnkKLSAgc3RyaW5ncy4gIFRoZXkgYXJlIG5vdyBjb3JyZWN0bHkgY29udmVydGVkIHRvIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzg4MzM6IHRhcmZpbGUgY3JlYXRlZCBoYXJkIGxpbmsgZW50cmllcyB3aXRoIGEgc2l6ZSBmaWVsZCAhPSAwIGJ5Ci0gIG1pc3Rha2UuCi0KLS0gQ2hhcnNldC5ib2R5X2VuY29kZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgYmFzZTY0IGVuY29kaW5nIGJ5IGVuY29kaW5nIHdpdGggdGhlCi0gIG91dHB1dF9jaGFyc2V0IGJlZm9yZSBjYWxsaW5nIGJhc2U2NG1pbWUuZW5jb2RlLiAgUGFzc2VzIHRoZSB0ZXN0cyBmcm9tIDIueAotICBpc3N1ZSAjMTM2ODI0Ny4KLQotLSBJc3N1ZSAjODg0NTogc3FsaXRlMyBDb25uZWN0aW9uIG9iamVjdHMgbm93IGhhdmUgYSByZWFkLW9ubHkgaW5fdHJhbnNhY3Rpb24KLSAgYXR0cmlidXRlIHRoYXQgaXMgVHJ1ZSBpZmYgdGhlcmUgYXJlIHVuY29tbWl0dGVkIGNoYW5nZXMuCi0KLS0gSXNzdWUgIzEyODkxMTg6IGRhdGV0aW1lLnRpbWVkZWx0YSBvYmplY3RzIGNhbiBub3cgYmUgbXVsdGlwbGllZCBieSBmbG9hdCBhbmQKLSAgZGl2aWRlZCBieSBmbG9hdCBhbmQgaW50IG9iamVjdHMuICBSZXN1bHRzIGFyZSByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlCi0gIG9mIHRpbWVkZWx0YS5yZXNvbHV0aW9uIHdpdGggdGllcyByZXNvbHZlZCB1c2luZyByb3VuZC1oYWxmLXRvLWV2ZW4gbWV0aG9kLgotCi0tIElzc3VlICM3MTUwOiBSYWlzZSBPdmVyZmxvd0Vycm9yIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nIG9yIHN1YnRyYWN0aW5nCi0gIHRpbWVkZWx0YSBmcm9tIGRhdGUgb3IgZGF0ZXRpbWUgZmFsbHMgb3V0c2lkZSBvZiB0aGUgTUlOWUVBUjpNQVhZRUFSIHJhbmdlLgotCi0tIElzc3VlICM4ODA2OiBhZGQgU1NMIGNvbnRleHRzIHN1cHBvcnQgdG8gZnRwbGliLgotCi0tIElzc3VlICM0NzY5OiBGaXggbWFpbigpIGZ1bmN0aW9uIG9mIHRoZSBiYXNlNjQgbW9kdWxlLCB1c2Ugc3lzLnN0ZGluLmJ1ZmZlcgotICBhbmQgc3lzLnN0ZG91dC5idWZmZXIgKGluc3RlYWQgb2Ygc3lzLnN0ZGluIGFuZCBzeXMuc3Rkb3V0KSB0byB1c2UgdGhlIGJ5dGVzCi0gIEFQSS4KLQotLSBJc3N1ZSAjODc3MDogTm93IHN5c2NvbmZpZyBkaXNwbGF5cyBpbmZvcm1hdGlvbiB3aGVuIGl0J3MgY2FsbGVkIGFzIGEgc2NyaXB0LgotICBJbml0aWFsIGlkZWEgYnkgU3JpZGhhciBSYXRuYWt1bWFyLgotCi0tIElzc3VlICM2NjYyOiBGaXggcGFyc2luZyBvZiBtYWxmb3JtYXR0ZWQgY2hhcnJlZiAoJiNiYWQ7KSwgcGF0Y2ggd3JpdHRlbiBieQotICBGcmVkcmlrIEjDpcOlcmQuCi0KLS0gSXNzdWUgIzg1NDA6IERlY2ltYWwgbW9kdWxlOiByZW5hbWUgdGhlIENvbnRleHQuX2NsYW1wIGF0dHJpYnV0ZSB0bwotICBDb250ZXh0LmNsYW1wIGFuZCBtYWtlIGl0IHB1YmxpYy4gIFRoaXMgaXMgdXNlZnVsIGluIGNyZWF0aW5nIGNvbnRleHRzIHRoYXQKLSAgY29ycmVzcG9uZCB0byB0aGUgZGVjaW1hbCBpbnRlcmNoYW5nZSBmb3JtYXRzIHNwZWNpZmllZCBpbiBJRUVFIDc1NC4KLQotLSBJc3N1ZSAjNjI2ODogRml4IHNlZWsoKSBtZXRob2Qgb2YgY29kZWNzLm9wZW4oKSwgZG9uJ3QgcmVhZCBvciB3cml0ZSB0aGUgQk9NCi0gIHR3aWNlIGFmdGVyIHNlZWsoMCkuIEZpeCBhbHNvIHJlc2V0KCkgbWV0aG9kIG9mIGNvZGVjcywgVVRGLTE2LCBVVEYtMzIgYW5kCi0gIFN0cmVhbVdyaXRlciBjbGFzc2VzLgotCi0tIElzc3VlICMzNzk4OiBzeXMuZXhpdChtZXNzYWdlKSB3cml0ZXMgdGhlIG1lc3NhZ2UgdG8gc3lzLnN0ZGVyciBmaWxlLCBpbnN0ZWFkCi0gIG9mIHRoZSBDIGZpbGUgc3RkZXJyLCB0byB1c2Ugc3RkZXJyIGVuY29kaW5nIGFuZCBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICM4NzgyOiBBZGQgYSB0cmFpbGluZyBuZXdsaW5lIGluIGxpbmVjYWNoZS51cGRhdGVjYWNoZSB0byB0aGUgbGFzdCBsaW5lCi0gIG9mIGZpbGVzIHdpdGhvdXQgb25lLgotCi0tIElzc3VlICM4NzI5OiBSZXR1cm4gTm90SW1wbGVtZW50ZWQgZnJvbSBjb2xsZWN0aW9ucy5NYXBwaW5nLl9fZXFfXyB3aGVuCi0gIGNvbXBhcmluZyB0byBhIG5vbi1tYXBwaW5nLgotCi0tIElzc3VlICM4Nzc0OiB0YWJuYW5ueSB1c2VzIHRoZSBlbmNvZGluZyBjb29raWUgKCNjb2Rpbmc6Li4uKSB0byB1c2UgdGhlCi0gIGNvcnJlY3QgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzQ4NzA6IEFkZCBhbiBgb3B0aW9uc2AgYXR0cmlidXRlIHRvIFNTTCBjb250ZXh0cywgYXMgd2VsbCBhcyBzZXZlcmFsCi0gIGBgT1BfKmBgIGNvbnN0YW50cyB0byB0aGUgYHNzbGAgbW9kdWxlLiAgVGhpcyBhbGxvd3MgdG8gc2VsZWN0aXZlbHkgZGlzYWJsZQotICBwcm90b2NvbCB2ZXJzaW9ucywgd2hlbiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYFBST1RPQ09MX1NTTHYyM2AuCi0KLS0gSXNzdWUgIzg3NTk6IEZpeGVkIHVzZXIgcGF0aHMgaW4gc3lzY29uZmlnIGZvciBwb3NpeCBhbmQgb3MyIHNjaGVtZXMuCi0KLS0gSXNzdWUgIzg2NjM6IGRpc3R1dGlscy5sb2cgZW11bGF0ZXMgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLiBGaXgKLSAgY29tcGlsYXRpb24gaW4gYSBub24tQVNDSUkgZGlyZWN0b3J5IGlmIHN0ZG91dCBlbmNvZGluZyBpcyBBU0NJSSAoZWcuIGlmCi0gIHN0ZG91dCBpcyBub3QgYSBUVFkpLgotCi0tIElzc3VlICM4NTEzOiBvcy5nZXRfZXhlY19wYXRoKCkgc3VwcG9ydHMgYidQQVRIJyBrZXkgYW5kIGJ5dGVzIHZhbHVlLgotICBzdWJwcm9jZXNzLlBvcGVuKCkgYW5kIG9zLl9leGVjdnBlKCkgc3VwcG9ydCBieXRlcyBwcm9ncmFtIG5hbWUuIEFkZAotICBvcy5zdXBwb3J0c19ieXRlc19lbnZpcm9uIGZsYWc6IFRydWUgaWYgdGhlIG5hdGl2ZSBPUyB0eXBlIG9mIHRoZSBlbnZpcm9ubWVudAotICBpcyBieXRlcyAoZWcuIEZhbHNlIG9uIFdpbmRvd3MpLgotCi0tIElzc3VlICM4NjMzOiB0YXJmaWxlIGlzIG5vdyBhYmxlIHRvIHJlYWQgYW5kIHdyaXRlIGFyY2hpdmVzIHdpdGggInJhdyIgYmluYXJ5Ci0gIHBheCBoZWFkZXJzIGFzIGRlc2NyaWJlZCBpbiBQT1NJWC4xLTIwMDguCi0KLS0gSXNzdWUgIzEyODUwODY6IFNwZWVkIHVwIHVybGxpYi5wYXJzZSBmdW5jdGlvbnM6IHF1b3RlLCBxdW90ZV9mcm9tX2J5dGVzLAotICB1bnF1b3RlLCB1bnF1b3RlX3RvX2J5dGVzLgotCi0tIElzc3VlICM4Njg4OiBEaXN0dXRpbHMgbm93IHJlY2FsY3VsYXRlcyBNQU5JRkVTVCBldmVyeXRpbWUuCi0KLS0gSXNzdWUgIzg0Nzc6IHNzbC5SQU5EX2VnZCgpIGFuZCBzc2wuX3Rlc3RfZGVjb2RlX2NlcnQoKSBzdXBwb3J0IHN0ciB3aXRoCi0gIHN1cnJvZ2F0ZXMgYW5kIGJ5dGVzIGZvciB0aGUgZmlsZW5hbWUuCi0KLS0gSXNzdWUgIzg1NTA6IEFkZCBmaXJzdCBjbGFzcyBgYFNTTENvbnRleHRgYCBvYmplY3RzIHRvIHRoZSBzc2wgbW9kdWxlLgotCi0tIElzc3VlICM4NjgxOiBNYWtlIHRoZSB6bGliIG1vZHVsZSdzIGVycm9yIG1lc3NhZ2VzIG1vcmUgaW5mb3JtYXRpdmUgd2hlbiB0aGUKLSAgemxpYiBpdHNlbGYgZG9lc24ndCBnaXZlIGFueSBkZXRhaWxlZCBleHBsYW5hdGlvbi4KLQotLSBUaGUgYXVkaW9vcCBtb2R1bGUgbm93IHN1cHBvcnRzIHNvdW5kIGZyYWdtZW50cyBvZiBsZW5ndGggZ3JlYXRlciB0aGFuIDIqKjMxCi0gIGJ5dGVzIG9uIDY0LWJpdCBtYWNoaW5lcywgYW5kIGlzIFBZX1NTSVpFX1RfQ0xFQU4uCi0KLS0gSXNzdWUgIzQ5NzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvIHRoZSBmdHBsaWIuRlRQCi0gIGNsYXNzLgotCi0tIElzc3VlICM4NjY0OiBJbiBweV9jb21waWxlLCBjcmVhdGUgX19weWNhY2hlX18gd2hlbiB0aGUgY29tcGlsZWQgcGF0aCBpcwotICBnaXZlbi4KLQotLSBJc3N1ZSAjODUxNDogQWRkIG9zLmZzZW5jb2RlKCkgZnVuY3Rpb24gKFVuaXggb25seSk6IGVuY29kZSBhIHN0cmluZyB0byBieXRlcwotICBmb3IgdXNlIGluIHRoZSBmaWxlIHN5c3RlbSwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHRoZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzg1NzE6IEZpeCBhbiBpbnRlcm5hbCBlcnJvciB3aGVuIGNvbXByZXNzaW5nIG9yIGRlY29tcHJlc3NpbmcgYSBjaHVuawotICBsYXJnZXIgdGhhbiAxR0Igd2l0aCB0aGUgemxpYiBtb2R1bGUncyBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3Igb2JqZWN0cy4KLQotLSBJc3N1ZSAjODYwMzogU3VwcG9ydCBieXRlcyBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBvbiBVbml4OiBBZGQgb3MuZW52aXJvbmIKLSAgbWFwcGluZyBhbmQgb3MuZ2V0ZW52YigpIGZ1bmN0aW9uLiBvcy51bnNldGVudigpIGVuY29kZXMgc3RyIGFyZ3VtZW50IHRvIHRoZQotICBmaWxlIHN5c3RlbSBlbmNvZGluZyB3aXRoIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciAoaW5zdGVhZCBvZgotICB1dGY4L3N0cmljdCkgYW5kIGFjY2VwdHMgYnl0ZXMuIHBvc2l4LmVudmlyb24ga2V5cyBhbmQgdmFsdWVzIGFyZSBub3cgYnl0ZXMuCi0KLS0gSXNzdWUgIzg1NzM6IGFzeW5jb3JlIF9zdHJlcnJvcigpIGZ1bmN0aW9uIG1pZ2h0IHRocm93IFZhbHVlRXJyb3IuCi0KLS0gSXNzdWUgIzg0ODM6IGFzeW5jb3JlLmRpc3BhdGNoZXIncyBfX2dldGF0dHJfXyBtZXRob2QgcHJvZHVjZWQgY29uZnVzaW5nIGVycm9yCi0gIG1lc3NhZ2VzIHdoZW4gYWNjZXNzaW5nIHVuZGVmaW5lZCBjbGFzcyBhdHRyaWJ1dGVzIGJlY2F1c2Ugb2YgdGhlIGNoZWFwCi0gIGluaGVyaXRhbmNlIHdpdGggdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4gIFRoZSBjaGVhcCBpbmhlcml0YW5jZSBoYXMgYmVlbgotICBkZXByZWNhdGVkLgotCi0tIElzc3VlICM0MjY1OiBzaHV0aWwuY29weWZpbGUoKSB3YXMgbGVha2luZyBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gZGlzayBmaWxscy4KLSAgUGF0Y2ggYnkgVHJlcyBTZWF2ZXIuCi0KLS0gSXNzdWUgIzgzOTA6IHRhcmZpbGUgdXNlcyBzdXJyb2dhdGVlc2NhcGUgYXMgdGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlcgotICAoaW5zdGVhZCBvZiByZXBsYWNlIGluIHJlYWQgbW9kZSBvciBzdHJpY3QgaW4gd3JpdGUgbW9kZSkuCi0KLS0gSXNzdWUgIzc3NTU6IFVzZSBhbiB1bmVuY3VtYmVyZWQgYXVkaW8gZmlsZSBmb3IgdGVzdHMuCi0KLS0gSXNzdWUgIzg2MjE6IHV1aWQudXVpZDQoKSByZXR1cm5lZCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgaW4gdGhlIHBhcmVudAotICBhbmQgYW55IGNoaWxkcmVuIGNyZWF0ZWQgdXNpbmcgYGBvcy5mb3JrYGAgb24gTWFjT1MgWCAxMC42LgotCi0tIElzc3VlICM4NTY3OiBGaXggcHJlY2VkZW5jZSBvZiBzaWduYWxzIGluIERlY2ltYWwgbW9kdWxlOiB3aGVuIGEgRGVjaW1hbAotICBvcGVyYXRpb24gcmFpc2VzIG11bHRpcGxlIHNpZ25hbHMgYW5kIG1vcmUgdGhhbiBvbmUgb2YgdGhvc2Ugc2lnbmFscyBpcwotICB0cmFwcGVkLCB0aGUgc3BlY2lmaWNhdGlvbiBkZXRlcm1pbmVzIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgc2lnbmFscyBzaG91bGQgYmUKLSAgaGFuZGxlZC4gIEluIG1hbnkgY2FzZXMgdGhpcyBvcmRlciB3YXNuJ3QgYmVpbmcgZm9sbG93ZWQsIGxlYWRpbmcgdG8gdGhlIHdyb25nCi0gIFB5dGhvbiBleGNlcHRpb24gYmVpbmcgcmFpc2VkLgotCi0tIElzc3VlICM3ODY1OiBUaGUgY2xvc2UoKSBtZXRob2Qgb2YgOm1vZDpgaW9gIG9iamVjdHMgc2hvdWxkIG5vdCBzd2FsbG93Ci0gIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSBpbXBsaWNpdCBmbHVzaCgpLiAgQWxzbyBxZW5zdXJlIHRoYXQgY2FsbGluZyBjbG9zZSgpCi0gIHNldmVyYWwgdGltZXMgaXMgc3VwcG9ydGVkLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCi0KLS0gSXNzdWUgIzQ2ODc6IEZpeCBhY2N1cmFjeSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gcnVudGltZXMgZGlzcGxheWVkIHdpdGgKLSAgZ2MuREVCVUdfU1RBVFMuCi0KLS0gSXNzdWUgIzgzNTQ6IFRoZSBzaWdpbnRlcnJ1cHQgc2V0dGluZyBpcyBub3cgcHJlc2VydmVkIGZvciBhbGwgc2lnbmFscywgbm90Ci0gIGp1c3QgU0lHQ0hMRC4KLQotLSBJc3N1ZSAjNzE5Mjogd2ViYnJvd3Nlci5nZXQoImZpcmVmb3giKSBub3cgd29ya3Mgb24gTWFjIE9TIFgsIGFzIGRvZXMKLSAgd2ViYnJvd3Nlci5nZXQoInNhZmFyaSIpLgotCi0tIElzc3VlICM4NDY0OiB0YXJmaWxlIG5vIGxvbmdlciBjcmVhdGVzIGZpbGVzIHdpdGggZXhlY3V0ZSBwZXJtaXNzaW9ucyBzZXQgd2hlbgotICBtb2RlPSJ3fCIgaXMgdXNlZC4KLQotLSBJc3N1ZSAjNzgzNDogRml4IGNvbm5lY3QoKSBvZiBCbHVldG9vdGggTDJDQVAgc29ja2V0cyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZgotICB0aGUgTGludXgga2VybmVsLiAgUGF0Y2ggYnkgWWFuaXYgQWtuaW4uCi0KLS0gSXNzdWUgIzgyOTU6IEFkZGVkIHNodXRpbC51bnBhY2tfYXJjaGl2ZS4KLQotLSBJc3N1ZSAjNjMxMjogRml4ZWQgaHR0cCBIRUFEIHJlcXVlc3Qgd2hlbiB0aGUgdHJhbnNmZXIgZW5jb2RpbmcgaXMgY2h1bmtlZC4KLSAgSXQgc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gYW4gZW1wdHkgcmVzcG9uc2Ugbm93LgotCi0tIElzc3VlICM4NTQ2OiBSZWplY3QgTm9uZSBnaXZlbiBhcyB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IHRvIF9weWlvLm9wZW4uCi0KLS0gSXNzdWUgIzg1NDk6IEZpeCBjb21waWxpbmcgdGhlIF9zc2wgZXh0ZW5zaW9uIHVuZGVyIEFJWC4gIFBhdGNoIGJ5Ci0gIFNyaWRoYXIgUmF0bmFrdW1hci4KLQotLSBJc3N1ZSAjNjY1NjogZml4IGxvY2FsZS5mb3JtYXRfc3RyaW5nIHRvIGhhbmRsZSBlc2NhcGVkIHBlcmNlbnRzCi0gIGFuZCBtYXBwaW5ncy4KLQotLSBJc3N1ZSAjMjMwMjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2h1dGRvd24sIHdoZXJlCi0gIHRoZSBtZXRob2QgY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IGlmIGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgZXZlbnQgbG9vcAotICBzdGFydGVkIHJ1bm5pbmcuICBUaGlzIGFsc28gZml4ZXMgdGhlIG9jY2FzaW9uYWwgZnJlZXplcyB3aXRuZXNzZWQgaW4KLSAgdGVzdF9odHRwc2VydmVycy4KLQotLSBJc3N1ZSAjODUyNDogV2hlbiBjcmVhdGluZyBhbiBTU0wgc29ja2V0LCB0aGUgdGltZW91dCB2YWx1ZSBvZiB0aGUgb3JpZ2luYWwKLSAgc29ja2V0IHdhc24ndCByZXRhaW5lZCAoaW5zdGVhZCwgYSBzb2NrZXQgd2l0aCBhIHBvc2l0aXZlIHRpbWVvdXQgd291bGQgYmUKLSAgdHVybmVkIGludG8gYSBub24tYmxvY2tpbmcgU1NMIHNvY2tldCkuCi0KLS0gSXNzdWUgIzUxMDM6IFNTTCBoYW5kc2hha2Ugd291bGQgaWdub3JlIHRoZSBzb2NrZXQgdGltZW91dCBhbmQgYmxvY2sKLSAgaW5kZWZpbml0ZWx5IGlmIHRoZSBvdGhlciBlbmQgZGlkbid0IHJlc3BvbmQuCi0KLS0gVGhlIGRvX2hhbmRzaGFrZSgpIG1ldGhvZCBvZiBTU0wgb2JqZWN0cyBub3cgYWRqdXN0cyB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUKLSAgU1NMIHN0cnVjdHVyZSBpZiBuZWNlc3NhcnkgKGFzIG90aGVyIG1ldGhvZHMgYWxyZWFkeSBkbykuCi0KLS0gSXNzdWUgIzgzOTE6IG9zLmV4ZWN2cGUoKSBhbmQgb3MuZ2V0ZW52KCkgc3VwcG9ydHMgdW5pY29kZSB3aXRoIHN1cnJvZ2F0ZXMgYW5kCi0gIGJ5dGVzIHN0cmluZ3MgZm9yIGVudmlyb25tZW50IGtleXMgYW5kIHZhbHVlcy4KLQotLSBJc3N1ZSAjODQ2NzogUHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygc3VicHJvY2VzcyBlbmNvZGVzIHRoZSBlcnJvcgotICBtZXNzYWdlIHVzaW5nIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlciB0byBzdXBwb3J0IHN1cnJvZ2F0ZXMgaW4gdGhlCi0gIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzg0Njg6IGJ6Mi5CWjJGaWxlKCkgYWNjZXB0cyBzdHIgd2l0aCBzdXJyb2dhdGVzIGFuZCBieXRlcyBmaWxlbmFtZXMuCi0KLS0gSXNzdWUgIzg0NTE6IFN5c2xvZyBtb2R1bGUgbm93IHVzZXMgYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pIGluc3RlYWQgb2YgdGhlCi0gIHN0cmluZyAicHl0aG9uIiBhcyB0aGUgKmlkZW50Ki4gIG9wZW5sb2coKSBhcmd1bWVudHMgYXJlIGFsbCBvcHRpb25hbCBhbmQKLSAga2V5d29yZHMuCi0KLS0gSXNzdWUgIzgxMDg6IEZpeCB0aGUgdW53cmFwKCkgbWV0aG9kIG9mIFNTTCBvYmplY3RzIHdoZW4gdGhlIHNvY2tldCBoYXMgYQotICBub24taW5maW5pdGUgdGltZW91dC4gIEFsc28gbWFrZSB0aGF0IG1ldGhvZCBmcmllbmRsaWVyIHdpdGggYXBwbGljYXRpb25zCi0gIHdhbnRpbmcgdG8gY29udGludWUgdXNpbmcgdGhlIHNvY2tldCBpbiBjbGVhci10ZXh0IG1vZGUsIGJ5IGRpc2FibGluZwotICBPcGVuU1NMJ3MgaW50ZXJuYWwgcmVhZGFoZWFkLiAgVGhhbmtzIHRvIERhcnJ5bCBNaWxlcyBmb3IgZ3VpZGFuY2UuCi0KLS0gSXNzdWUgIzg0OTY6IG1ha2UgbWFpbGNhcC5sb29rdXAoKSBhbHdheXMgcmV0dXJuIGEgbGlzdCwgcmF0aGVyIHRoYW4gYW4KLSAgaXRlcmF0b3IuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCi0KLS0gSXNzdWUgIzgxOTU6IEZpeCBhIGNyYXNoIGluIHNxbGl0ZSBDb25uZWN0aW9uLmNyZWF0ZV9jb2xsYXRpb24oKSBpZiB0aGUKLSAgY29sbGF0aW9uIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyLgotCi0tIElzc3VlICM4NDg0OiBMb2FkIGFsbCBjaXBoZXJzIGFuZCBkaWdlc3QgYWxnb3JpdGhtcyB3aGVuIGluaXRpYWxpemluZyB0aGUgX3NzbAotICBleHRlbnNpb24sIHN1Y2ggdGhhdCB2ZXJpZmljYXRpb24gb2Ygc29tZSBTU0wgY2VydGlmaWNhdGVzIGRvZXNuJ3QgZmFpbAotICBiZWNhdXNlIG9mIGFuICJ1bmtub3duIGFsZ29yaXRobSIuCi0KLS0gSXNzdWUgIzY1NDc6IEFkZGVkIHRoZSBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3Mgb3B0aW9uIHRvIHNodXRpbC5jb3B5dHJlZS4KLQotLSBJc3N1ZSAjMTU0MDExMjogTm93IGFsbG93aW5nIHRoZSBjaG9pY2Ugb2YgYSBjb3B5IGZ1bmN0aW9uIGluIHNodXRpbC5jb3B5dHJlZS4KLQotLSBJc3N1ZSAjNDgxNDogdGltZW91dCBwYXJhbWV0ZXIgaXMgbm93IGFwcGxpZWQgYWxzbyBmb3IgY29ubmVjdGlvbnMgcmVzdWx0aW5nCi0gIGZyb20gUE9SVC9FUFJUIGNvbW1hbmRzLgotCi0tIElzc3VlICM4NDYzOiBhZGRlZCBtaXNzaW5nIHJlZmVyZW5jZSB0byBienRhciBpbiBzaHV0aWwncyBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM3MTU0OiB1cmxsaWIucmVxdWVzdCBjYW4gbm93IGRldGVjdCB0aGUgcHJveHkgc2V0dGluZ3Mgb24gT1NYIDEwLjYgKGFzCi0gIGxvbmcgYXMgdGhlIHVzZXIgZGlkbid0IHNwZWNpZnkgJ2F1dG9tYXRpYyBwcm94eSBjb25maWd1cmF0aW9uJykuCi0KLS0gSXNzdWUgIzM4MTc6IGZ0cGxpYi5GVFAuYWJvcnQoKSBtZXRob2Qgbm93IGNvbnNpZGVycyAyMjUgYSB2YWxpZCByZXNwb25zZSBjb2RlCi0gIGFzIHN0YXRlZCBpbiBSRkMtOTU5IGF0IGNoYXB0ZXIgNS40LgotCi0tIElzc3VlICM4Mzk0OiBfY3R5cGVzLmRsb3BlbigpIGFjY2VwdHMgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgc3RyIHdpdGgKLSAgc3Vycm9nYXRlcy4KLQotLSBJc3N1ZSAjODUwNzI4OiBBZGQgYSAqdGltZW91dCogcGFyYW1ldGVyIHRvIHRoZSBgYWNxdWlyZSgpYCBtZXRob2Qgb2YKLSAgYHRocmVhZGluZy5TZW1hcGhvcmVgIG9iamVjdHMuICBPcmlnaW5hbCBwYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCi0KLS0gSXNzdWUgIzgzMjI6IEFkZCBhICpjaXBoZXJzKiBhcmd1bWVudCB0byBTU0wgc29ja2V0cywgc28gYXMgdG8gY2hhbmdlIHRoZQotICBhdmFpbGFibGUgY2lwaGVyIGxpc3QuICBIZWxwcyBmaXggdGVzdF9zc2wgd2l0aCBPcGVuU1NMIDEuMC4wLgotCi0tIElzc3VlICM4MzkzOiBzdWJwcm9jZXNzIGFjY2VwdHMgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgc3RyIHdpdGggc3Vycm9nYXRlcyBmb3IKLSAgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzc2MDY6IFhNTC1SUEMgdHJhY2ViYWNrIHN0b3JlZCBpbiBYLXRyYWNlYmFjayBpcyBub3cgZW5jb2RlZCB0byBBU0NJSQotICB1c2luZyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzg0MTI6IG9zLnN5c3RlbSgpIG5vdyBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoIHN1cnJvZ2F0ZXMuCi0KLS0gSXNzdWUgIzI5ODc6IFJGQzI3MzIgc3VwcG9ydCBmb3IgdXJscGFyc2UgKElQdjYgYWRkcmVzc2VzKS4gUGF0Y2ggYnkgVG9ueQotICBMb2NrZSBhbmQgSGFucyBVbHJpY2ggTmllZGVybWFubi4KLQotLSBJc3N1ZSAjNTI3NzogRml4IHF1b3RlIGNvdW50aW5nIHdoZW4gcGFyc2luZyBSRkMgMjIzMSBlbmNvZGVkIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzczMTY6IFRoZSBhY3F1aXJlKCkgbWV0aG9kIG9mIGxvY2sgb2JqZWN0cyBpbiB0aGUgOm1vZDpgdGhyZWFkaW5nYAotICBtb2R1bGUgbm93IHRha2VzIGFuIG9wdGlvbmFsIHRpbWVvdXQgYXJndW1lbnQgaW4gc2Vjb25kcy4gIFRpbWVvdXQgc3VwcG9ydAotICByZWxpZXMgb24gdGhlIHN5c3RlbSB0aHJlYWRpbmcgbGlicmFyeSwgc28gYXMgdG8gYXZvaWQgYSBzZW1pLWJ1c3kgd2FpdCBsb29wLgotCi0tIElzc3VlICM4MzgzOiBwaWNrbGUgYW5kIHBpY2tsZXRvb2xzIHVzZSBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgd2hlbgotICBlbmNvZGluZyB1bmljb2RlIGFzIHV0ZjggdG8gc3VwcG9ydCBsb25lIHN1cnJvZ2F0ZXMgYW5kIHN0YXkgY29tcGF0aWJsZSB3aXRoCi0gIFB5dGhvbiAyLnggYW5kIDMueC4KLQotLSBJc3N1ZSAjNzU4NTogZGlmZmxpYiBjb250ZXh0IGFuZCB1bmlmaWVkIGRpZmZzIG5vdyBwbGFjZSBhIHRhYiBiZXR3ZWVuCi0gIGZpbGVuYW1lIGFuZCBkYXRlLCBjb25mb3JtaW5nIHRvIHRoZSAnc3RhbmRhcmRzJyB0aGV5IHdlcmUgb3JpZ2luYWxseSBkZXNpZ25lZAotICB0byBmb2xsb3cuICBUaGlzIGltcHJvdmVzIGNvbXBhdGliaWxpdHkgd2l0aCBwYXRjaCB0b29scy4KLQotLSBJc3N1ZSAjNzQ3MjogRml4ZWQgdHlwbyBpbiBlbWFpbC5lbmNvZGVycyBtb2R1bGU7IG1lc3NhZ2VzIHVzaW5nIElTTy0yMDIyCi0gIGNoYXJhY3RlciBzZXRzIHdpbGwgbm93IGNvbnNpc3RlbnRseSB1c2UgYSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIG9mIDdiaXQKLSAgcmF0aGVyIHRoYW4gc29tZXRpbWVzIGJlaW5nIG1hcmtlZCBhcyA4Yml0LgotCi0tIElzc3VlICM4Mzc1OiB0ZXN0X2Rpc3R1dGlscyBub3cgY2hlY2tzIGlmIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFyZSBzdGlsbAotICBwcmVzZW50IGJlZm9yZSBpdCBjbGVhbnMgdGhlbS4KLQotLSBJc3N1ZSAjODM3NDogVXBkYXRlIHRoZSBpbnRlcm5hbCBhbGlhcyB0YWJsZSBpbiB0aGUgOm1vZDpgbG9jYWxlYCBtb2R1bGUgdG8KLSAgY292ZXIgcmVjZW50IGxvY2FsZSBjaGFuZ2VzIGFuZCBhZGRpdGlvbnMuCi0KLS0gSXNzdWUgIzgzMjE6IEdpdmUgYWNjZXNzIHRvIE9wZW5TU0wgdmVyc2lvbiBudW1iZXJzIGZyb20gdGhlIGBzc2xgIG1vZHVsZSwKLSAgdXNpbmcgdGhlIG5ldyBhdHRyaWJ1dGVzIGBzc2wuT1BFTlNTTF9WRVJTSU9OYCwgYHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GT2AgYW5kCi0gIGBzc2wuT1BFTlNTTF9WRVJTSU9OX05VTUJFUmAuCi0KLS0gQWRkIGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIGFuZCBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgotCi0tIElzc3VlICM4MjU3OiBUaGUgRGVjaW1hbCBjb25zdHJ1Y3Qgbm93IGFjY2VwdHMgYSBmbG9hdCBpbnN0YW5jZSBkaXJlY3RseSwKLSAgY29udmVydGluZyB0aGF0IGZsb2F0IHRvIGEgRGVjaW1hbCBvZiBlcXVhbCB2YWx1ZToKLQotICAgICA+Pj4gRGVjaW1hbCgxLjEpCi0gICAgIERlY2ltYWwoJzEuMTAwMDAwMDAwMDAwMDAwMDg4ODE3ODQxOTcwMDEyNTIzMjMzODkwNTMzNDQ3MjY1NjI1JykKLQotLSBJc3N1ZSAjODI5NDogVGhlIEZyYWN0aW9uIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIERlY2ltYWwgYW5kIGZsb2F0IGluc3RhbmNlcwotICBkaXJlY3RseS4KLQotLSBJc3N1ZSAjNzI3OTogQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgRGVjaW1hbCBzaWduYWxpbmcgTmFOIG5vdyBzaWduYWwKLSAgSW52YWxpZE9wZXJhdGlvbiBpbnN0ZWFkIG9mIHJldHVybmluZyBGYWxzZS4gIChDb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldAotICBOYU4gYXJlIHVuY2hhbmdlZC4pICBBbHNvLCBEZWNpbWFsIHF1aWV0IE5hTnMgYXJlIG5vdyBoYXNoYWJsZTsgRGVjaW1hbAotICBzaWduYWxpbmcgTmFOcyByZW1haW4gdW5oYXNoYWJsZS4KLQotLSBJc3N1ZSAjMjUzMTogQ29tcGFyaXNvbiBvcGVyYXRpb25zIGJldHdlZW4gZmxvYXRzIGFuZCBEZWNpbWFsIGluc3RhbmNlcyBub3cKLSAgcmV0dXJuIGEgcmVzdWx0IGJhc2VkIG9uIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHM7IHByZXZpb3VzbHkgdGhleQotICByZXR1cm5lZCBhbiBhcmJpdHJhcnkgcmVzdWx0IGJhc2VkIG9uIHRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiBpZChmbG9hdCkgYW5kCi0gIGlkKERlY2ltYWwpLiAgU2VlIGFsc28gaXNzdWUgIzgxODgsIHdoaWNoIGFkZHMgRGVjaW1hbC10by1GcmFjdGlvbgotICBjb21wYXJpc29ucy4KLQotLSBBZGRlZCBhIHN1YnRyYWN0KCkgbWV0aG9kIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS4KLQotLSBJc3N1ZSAjODIzMzogV2hlbiBydW4gYXMgYSBzY3JpcHQsIHB5X2NvbXBpbGUucHkgb3B0aW9uYWxseSB0YWtlcyBhIHNpbmdsZQotICBhcmd1bWVudCBgLWAgd2hpY2ggdGVsbHMgaXQgdG8gcmVhZCBmaWxlcyB0byBjb21waWxlIGZyb20gc3RkaW4uICBFYWNoIGxpbmUgaXMKLSAgcmVhZCBvbiBkZW1hbmQgYW5kIHRoZSBuYW1lZCBmaWxlIGlzIGNvbXBpbGVkIGltbWVkaWF0ZWx5LiAgKE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFBpb3RyIE/FvGFyb3dza2kpLgotCi0tIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlOiBVbmljb2RlIGNvZGVwb2ludHMgbGluZSB0YWJ1bGF0aW9uICgweDBCKSBhbmQKLSAgZm9ybSBmZWVkICgweDBDKSBhcmUgbm93IGNvbnNpZGVyZWQgbGluZWJyZWFrcywgYXMgc3BlY2lmaWVkIGluIFVuaWNvZGUKLSAgU3RhbmRhcmQgQW5uZXggIzE0LiAgU2VlIGlzc3VlICM3NjQzLiAgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMTQvCi0KLS0gQ29tcGFyaXNvbnMgdXNpbmcgb25lIG9mIDwsIDw9LCA+LCA+PSBiZXR3ZWVuIGEgY29tcGxleCBpbnN0YW5jZSBhbmQgYQotICBGcmFjdGlvbnMgaW5zdGFuY2Ugbm93IHJhaXNlIFR5cGVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyBUcnVlL0ZhbHNlLiAgVGhpcwotICBtYWtlcyBGcmFjdGlvbiA8PT4gY29tcGxleCBjb21wYXJpc29ucyBjb25zaXN0ZW50IHdpdGggaW50IDw9PiBjb21wbGV4LCBmbG9hdAotICA8PT4gY29tcGxleCwgYW5kIGNvbXBsZXggPD0+IGNvbXBsZXggY29tcGFyaXNvbnMuCi0KLS0gSXNzdWUgIzgxMzk6IG9zc2F1ZGlvZGV2IGRpZG4ndCBpbml0aWFsaXplIGl0cyB0eXBlcyBwcm9wZXJseSwgdGhlcmVmb3JlIHNvbWUKLSAgbWV0aG9kcyAoc3VjaCBhcyBvc3NfbWl4ZXJfZGV2aWNlLmZpbGVubygpKSB3ZXJlIG5vdCBhdmFpbGFibGUuICBJbml0aWFsIHBhdGNoCi0gIGJ5IEJlcnRyYW5kIEphbmluLgotCi0tIElzc3VlICM4MjA1OiBSZW1vdmUgdGhlICJNb2R1bGVzIiBkaXJlY3RvcnkgZnJvbSBzeXMucGF0aCB3aGVuIFB5dGhvbiBpcwotICBydW5uaW5nIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeSAoUE9TSVggb25seSkuCi0KLS0gSXNzdWUgIzc1MTI6IHNodXRpbC5jb3B5c3RhdCgpIGNvdWxkIHJhaXNlIGFuIE9TRXJyb3Igd2hlbiB0aGUgZmlsZXN5c3RlbQotICBkaWRuJ3Qgc3VwcG9ydCBjaGZsYWdzKCkgKGZvciBleGFtcGxlIFpGUyB1bmRlciBGcmVlQlNEKS4gIFRoZSBlcnJvciBpcyBub3cKLSAgc2lsZW5jZWQuCi0KLS0gSXNzdWUgIzc4NjA6IHBsYXRmb3JtLnVuYW1lIG5vdyByZXBvcnRzIHRoZSBjb3JyZWN0ICdtYWNoaW5lJyB0eXBlIHdoZW4gUHl0aG9uCi0gIGlzIHJ1bm5pbmcgaW4gV09XNjQgbW9kZSBvbiA2NCBiaXQgV2luZG93cy4KLQotLSBJc3N1ZSAjMzg5MCwgIzgyMjI6IEZpeCByZWN2KCkgYW5kIHJlY3ZfaW50bygpIG9uIG5vbi1ibG9ja2luZyBTU0wgc29ja2V0cy4KLSAgQWxzbywgZW5hYmxlIHRoZSBTU0xfTU9ERV9BVVRPX1JFVFJZIGZsYWcgb24gU1NMIHNvY2tldHMsIHNvIHRoYXQgYmxvY2tpbmcKLSAgcmVhZHMgYW5kIHdyaXRlcyBhcmUgYWx3YXlzIHJldHJpZWQgYnkgT3BlblNTTCBpdHNlbGYuCi0KLS0gSXNzdWUgIzQyODI6IEZpeCB0aGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgcHJvZmlsZSBtb2R1bGUgZm9yIGEgbm9uLUFTQ0lJCi0gIHNjcmlwdCwgb3BlbiB0aGUgZmlsZSBpbiBiaW5hcnkgbW9kZSBhbmQgbm90IGluIHRleHQgbW9kZSB3aXRoIHRoZSBkZWZhdWx0Ci0gICh1dGY4KSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjODE3OTogRml4IG1hY3BhdGgucmVhbHBhdGgoKSBvbiBhIG5vbi1leGlzdGluZyBwYXRoLgotCi0tIElzc3VlICM4MDI0OiBVcGRhdGUgdGhlIFVuaWNvZGUgZGF0YWJhc2UgdG8gNS4yLgotCi0tIElzc3VlICM4MTY4OiBweV9jb21waWxlIG5vdyBoYW5kbGVzIGZpbGVzIHdpdGggdXRmLTggQk9NUy4KLQotLSBgYHRva2VuaXplLmRldGVjdF9lbmNvZGluZ2BgIG5vdyByZXR1cm5zIGBgJ3V0Zi04LXNpZydgYCB3aGVuIGEgVVRGLTggQk9NIGlzCi0gIGRldGVjdGVkLgotCi0tIElzc3VlICM2NzE2LzI6IEJhY2tzbGFzaC1yZXBsYWNlIGVycm9yIG91dHB1dCBpbiBjb21waWxhbGwuCi0KLS0gSXNzdWUgIzQ5NjE6IEluY29uc2lzdGVudC93cm9uZyByZXN1bHQgb2YgYXNreWVzbm8gZnVuY3Rpb24gaW4gdGtNZXNzYWdlQm94Ci0gIHdpdGggVGNsL1RrLTguNS4KLQotLSBJc3N1ZSAjODE0MDogZXh0ZW5kIGNvbXBpbGVhbGwgdG8gY29tcGlsZSBzaW5nbGUgZmlsZXMuICBBZGQgLWkgb3B0aW9uLgotCi0tIElzc3VlICM3MzU2OiBjdHlwZXMudXRpbDogTWFrZSBwYXJzaW5nIG9mIGxkY29uZmlnIG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUKLSAgbG9jYWxlLgotCi0tIFRoZSBpbnRlcm5hbHMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG9uIFBPU0lYIHN5c3RlbXMgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5Ci0gIGFuIGV4dGVuc2lvbiBtb2R1bGUgKF9wb3NpeHN1YnByb2Nlc3MpIHNvIHRoYXQgdGhlIGZvcmsoKStleGVjKCkgY2FuIGJlIGRvbmUKLSAgc2FmZWx5IHdpdGhvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGRlYWRsb2NrIGluIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zLgotCi0tIHN1YnByb2Nlc3MuUG9wZW4gbm93IGhhcyByZXN0b3JlX3NpZ25hbHMgYW5kIHN0YXJ0X25ld19zZXNzaW9uIGZlYXR1cmVzLiAgVGhlCi0gIGRlZmF1bHQgb2YgcmVzdG9yZV9zaWduYWxzPVRydWUgaXMgYSBuZXcgYmVoYXZpb3IgY29tcGFyZWQgdG8gZWFybGllciBQeXRob24KLSAgdmVyc2lvbnMuICBUaGlzIG1lYW5zIHRoYXQgc2lnbmFscyBzdWNoIGFzIFNJR1BJUEUgYXJlIG5vdCBpZ25vcmVkIGJ5IGRlZmF1bHQKLSAgaW4gc3VicHJvY2Vzc2VzIGxhdW5jaGVkIGJ5IFB5dGhvbiAoSXNzdWUgIzE2NTIpLgotCi0tIElzc3VlICM2NDcyOiBUaGUgeG1sLmV0cmVlIHBhY2thZ2UgaXMgdXBkYXRlZCB0byBFbGVtZW50VHJlZSAxLjMuICBUaGUKLSAgY0VsZW1lbnRUcmVlIG1vZHVsZSBpcyB1cGRhdGVkIHRvby4KLQotLSBJc3N1ZSAjNzc3NDogU2V0IHN5cy5leGVjdXRhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBpZiBhcmd2WzBdIGhhcyBiZWVuIHNldCB0bwotICBhbiBub24gZXhpc3RlbnQgcHJvZ3JhbSBuYW1lIGFuZCBQeXRob24gaXMgdW5hYmxlIHRvIHJldHJpZXZlIHRoZSByZWFsIHByb2dyYW0KLSAgbmFtZS4KLQotLSBJc3N1ZSAjNzg4MDogRml4IHN5c2NvbmZpZyB3aGVuIHRoZSBweXRob24gZXhlY3V0YWJsZSBpcyBhIHN5bWJvbGljIGxpbmsuCi0KLS0gSXNzdWUgIzY1MDk6IGZpeCByZS5zdWIgdG8gd29yayBwcm9wZXJseSB3aGVuIHRoZSBwYXR0ZXJuLCB0aGUgc3RyaW5nLCBhbmQgdGhlCi0gIHJlcGxhY2VtZW50IHdlcmUgYWxsIGJ5dGVzLiAgUGF0Y2ggYnkgQW50b2luZSBQaXRyb3UuCi0KLS0gVGhlIHNxbGl0ZTMgbW9kdWxlIHdhcyB1cGRhdGVkIHRvIHB5c3FsaXRlIDIuNi4wLiBUaGlzIGZpeGVzIHNldmVyYWwgb2JzY3VyZQotICBidWdzIGFuZCBhbGxvd3MgbG9hZGluZyBTUUxpdGUgZXh0ZW5zaW9ucyBmcm9tIHNoYXJlZCBsaWJyYXJpZXMuCi0KLS0gSXNzdWUgIzEwNTQ5NDM6IEZpeCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgdGV4dClgYCBmb3IgdGhlIFB1YmxpYwotICBSZXZpZXcgSXNzdWUgIzI5IChodHRwOi8vdW5pY29kZS5vcmcvcmV2aWV3L3ByLTI5Lmh0bWwpLgotCi0tIElzc3VlICM3NDk0OiBmaXggYSBjcmFzaCBpbiBfbHNwcm9mIChjUHJvZmlsZSkgYWZ0ZXIgY2xlYXJpbmcgdGhlIHByb2ZpbGVyLAotICByZXNldCBhbHNvIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHBvaW50ZXIgY29udGV4dC4KLQotLSBJc3N1ZSAjNzIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgdG8gdGhlIFRhckZpbGUKLSAgY2xhc3MuCi0KLS0gSXNzdWUgIzcyNTA6IEZpeCBpbmZvIGxlYWsgb2Ygb3MuZW52aXJvbiBhY3Jvc3MgbXVsdGktcnVuIHVzZXMgb2YKLSAgd3NnaXJlZi5oYW5kbGVycy5DR0lIYW5kbGVyLgotCi0tIElzc3VlICMxNzI5MzA1OiBGaXggZG9jdGVzdCB0byBoYW5kbGUgZW5jb2RlIGVycm9yIHdpdGggImJhY2tzbGFzaHJlcGxhY2UiLgotCi0tIElzc3VlICM2OTEyOTE6IGNvZGVjcy5vcGVuKCkgc2hvdWxkIG5vdCBjb252ZXJ0IGVuZCBvZiBsaW5lcyBvbiByZWFkaW5nIGFuZAotICB3cml0aW5nLgotCi0tIElzc3VlICM3ODY5OiBsb2dnaW5nOiBpbXByb3ZlZCBkaWFnbm9zdGljIGZvciBmb3JtYXQtdGltZSBlcnJvcnMuCi0KLS0gSXNzdWUgIzc4Njg6IGxvZ2dpbmc6IGFkZGVkIGxvZ2dlckNsYXNzIGF0dHJpYnV0ZSB0byBNYW5hZ2VyLgotCi0tIGxvZ2dpbmc6IEltcGxlbWVudGVkIFBFUCAzOTEuCi0KLS0gSXNzdWUgIzE1Mzc3MjE6IEFkZCBhIHdyaXRlaGVhZGVyKCkgbWV0aG9kIHRvIGNzdi5EaWN0V3JpdGVyLgotCi0tIElzc3VlICM3OTU5OiBjdHlwZXMgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBub3cgcmVnaXN0ZXJlZCBjb3JyZWN0bHkgd2l0aCB0aGUKLSAgY3ljbGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi0KLS0gSXNzdWUgIzU4MDE6IHJlbW92ZWQgc3B1cmlvdXMgZW1wdHkgbGluZXMgaW4gd3NnaXJlZi4KLQotLSBJc3N1ZSAjNjY2NjogZml4IGJ1ZyBpbiB0cmFjZS5weSB0aGF0IGFwcGxpZWQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYmUKLSAgaWdub3JlZCBvbmx5IHRvIHRoZSBmaXJzdCBmaWxlLiAgTm90ZWQgYnkgQm9nZGFuIE9wYW5jaHVrLgotCi0tIElzc3VlICM3NTk3OiBjdXJzZXMudXNlX2VudigpIGNhbiBub3cgYmUgY2FsbGVkIGJlZm9yZSBpbml0c2NyKCkuICBOb3RlZCBieQotICBLYW4tUnUgQ2hlbi4KLQotLSBJc3N1ZSAjNzMxMDogZml4IHRoZSBfX3JlcHJfXyBvZiBvcy5lbnZpcm9uIHRvIHNob3cgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLQotLSBJc3N1ZSAjNzk3MDogZW1haWwuR2VuZXJhdG9yLmZsYXR0ZW4gbm93IGNvcnJlY3RseSBmbGF0dGVucyBtZXNzYWdlL3JmYzgyMgotICBtZXNzYWdlcyBwYXJzZWQgYnkgZW1haWwuUGFyc2VyLkhlYWRlclBhcnNlci4KLQotLSBJc3N1ZSAjNzM2MTogSW1wb3J0bGliIHdhcyBub3QgcHJvcGVybHkgY2hlY2tpbmcgdGhlIG51bWJlciBvZiBieXRlcyBpbgotICBieXRlY29kZSBmaWxlIHdoZW4gaXQgd2FzIGxlc3MgdGhlbiA4IGJ5dGVzLgotCi0tIElzc3VlICM3NjMzOiBJbiB0aGUgZGVjaW1hbCBtb2R1bGUsIENvbnRleHQgY2xhc3MgbWV0aG9kcyAod2l0aCB0aGUgZXhjZXB0aW9uCi0gIG9mIGNhbm9uaWNhbCBhbmQgaXNfY2Fub25pY2FsKSBub3cgYWNjZXB0IGluc3RhbmNlcyBvZiBpbnQgYW5kIGxvbmcgd2hlcmV2ZXIgYQotICBEZWNpbWFsIGluc3RhbmNlIGlzIGFjY2VwdGVkLCBhbmQgaW1wbGljaXRseSBjb252ZXJ0IHRoYXQgYXJndW1lbnQgdG8gRGVjaW1hbC4KLSAgUHJldmlvdXNseSBvbmx5IHNvbWUgYXJndW1lbnRzIHdlcmUgY29udmVydGVkLgotCi0tIElzc3VlICM3ODM1OiBzaGVsdmUgc2hvdWxkIG5vIGxvbmdlciBwcm9kdWNlIG15c3RlcmlvdXMgd2FybmluZ3MgZHVyaW5nCi0gIGludGVycHJldGVyIHNodXRkb3duLgotCi0tIElzc3VlICMyNzQ2OiBEb24ndCBlc2NhcGUgYW1wZXJzYW5kcyBhbmQgYW5nbGUgYnJhY2tldHMgKCImIiwgIjwiLCAiPiIpIGluIFhNTAotICBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyBhbmQgY29tbWVudHMuICBUaGVzZSByYXcgY2hhcmFjdGVycyBhcmUgYWxsb3dlZCBieSB0aGUKLSAgWE1MIHNwZWNpZmljYXRpb24sIGFuZCBhcmUgbmVjZXNzYXJ5IHdoZW4gb3V0cHV0dGluZyBlLmcuICBQSFAgY29kZSBpbiBhCi0gIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uICBQYXRjaCBieSBOZWlsIE11bGxlci4KLQotLSBJc3N1ZSAjNjIzMzogRWxlbWVudFRyZWUgZmFpbGVkIGNvbnZlcnRpbmcgdW5pY29kZSBjaGFyYWN0ZXJzIHRvIFhNTCBlbnRpdGllcwotICB3aGVuIHRoZXkgY291bGQndCBiZSByZXByZXNlbnRlZCBpbiB0aGUgcmVxdWVzdGVkIG91dHB1dCBlbmNvZGluZy4gIFBhdGNoIGJ5Ci0gIEplcnJ5IENoZW4uCi0KLS0gSXNzdWUgIzYwMDM6IGFkZCBhbiBhcmd1bWVudCB0byBgYHppcGZpbGUuWmlwZmlsZS53cml0ZXN0cmBgIHRvIHNwZWNpZnkgdGhlCi0gIGNvbXByZXNzaW9uIHR5cGUuCi0KLS0gSXNzdWUgIzQ3NzI6IFJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGFuIHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIGlzCi0gIHNwZWNpZmllZCwgcmF0aGVyIHRoYW4gZmFsbCB0aHJvdWdoIHRvIEFGX1BBQ0tFVCAoaW4gdGhlIGBzb2NrZXRgIG1vZHVsZSkuCi0gIEFsc28sIHJhaXNlIFZhbHVlRXJyb3IgcmF0aGVyIHRoYW4gVHlwZUVycm9yIHdoZW4gYW4gdW5rbm93biBUSVBDIGFkZHJlc3MgdHlwZQotICBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzY5Mzk6IEZpeCBmaWxlIEkvTyBvYmplY3RzIGluIHRoZSBgaW9gIG1vZHVsZSB0byBrZWVwIHRoZSBvcmlnaW5hbCBmaWxlCi0gIHBvc2l0aW9uIHdoZW4gY2FsbGluZyBgdHJ1bmNhdGUoKWAuICBJdCB3b3VsZCBwcmV2aW91c2x5IGNoYW5nZSB0aGUgZmlsZQotICBwb3NpdGlvbiB0byB0aGUgZ2l2ZW4gYXJndW1lbnQsIHdoaWNoIGdvZXMgYWdhaW5zdCB0aGUgdHJhZGl0aW9uIG9mCi0gIGZ0cnVuY2F0ZSgpIGFuZCBvdGhlciB0cnVuY2F0aW9uIEFQSXMuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KLQotLSBJc3N1ZSAjNzYxMDogUmV3b3JrZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVybmFsCi0gIDpjbGFzczpgemlwZmlsZS5aaXBFeHRGaWxlYCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBmaWxlcyBzdG9yZWQgaW5zaWRlIGFuCi0gIGFyY2hpdmUuICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIGFuZCBjYW4gYmUgd3JhcHBlZCBpbgotICBhIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdCBmb3IgbW9yZSBzcGVlZHVwcy4gIEl0IGFsc28gc29sdmVzIGFuCi0gIGlzc3VlIHdoZXJlIGludGVybGVhdmVkIGNhbGxzIHRvIGByZWFkKClgIGFuZCBgcmVhZGxpbmUoKWAgZ2l2ZSB3cm9uZyByZXN1bHRzLgotICBQYXRjaCBieSBOaXIgQWlkZXMuCi0KLS0gSXNzdWUgIzY5NjM6IEFkZGVkICJtYXh0YXNrc3BlcmNoaWxkIiBhcmd1bWVudCB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbCwKLSAgYWxsb3dpbmcgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgdGFza3Mgd2l0aGluIHRoZSBwb29sIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUKLSAgd29ya2VyIGJlZm9yZSB0aGF0IHdvcmtlciBpcyB0ZXJtaW5hdGVkLCBhbmQgYSBuZXcgb25lIGNyZWF0ZWQgdG8gcmVwbGFjZSBpdC4KLQotLSBJc3N1ZSAjNzc5MjogUmVnaXN0ZXJpbmcgbm9uLWNsYXNzZXMgdG8gQUJDcyByYWlzZWQgYW4gb2JzY3VyZSBlcnJvci4KLQotLSBJc3N1ZSAjNzc4NTogRG9uJ3QgYWNjZXB0IGJ5dGVzIGluIEZpbGVJTy53cml0ZSgpLgotCi0tIFJlbW92ZWQgdGhlIGZ1bmN0aW9ucyAndmVyaWZ5JyBhbmQgJ3ZlcmVxJyBmcm9tIExpYi90ZXN0L3N1cHBvcnQucHkuCi0KLS0gSXNzdWUgIzc3NzM6IEZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSB3aGVuCi0gIHRoZSByZWxlYXNlIGZpbGUgaXMgZW1wdHkuCi0KLS0gSXNzdWUgIzc1NjE6IEZpeCBjcmFzaGVzIHdoZW4gdXNpbmcgYnl0ZWFycmF5IG9iamVjdHMgd2l0aCB0aGUgcG9zaXgKLSAgbW9kdWxlLgotCi0tIElzc3VlICMxNjcwNzY1OiBQcmV2ZW50IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IgZnJvbSByZS13cmFwcGluZyBoZWFkZXJzIGluCi0gIG11bHRpcGFydC9zaWduZWQgTUlNRSBwYXJ0cywgd2hpY2ggZml4ZXMgb25lIG9mIHRoZSBzb3VyY2VzIG9mIGludmFsaWQKLSAgbW9kaWZpY2F0aW9ucyB0byBzdWNoIHBhcnRzIGJ5IEdlbmVyYXRvci4KLQotLSBJc3N1ZSAjNzcwMzogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYnVmZmVyIEFQSSB0byBgYmluYXNjaWkuYTJiaHF4YC4gIFBhdGNoCi0gIGJ5IEZsb3JlbnQgWGljbHVuYSwgYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCi0KLS0gSXNzdWUgIzc3MDE6IEZpeCBjcmFzaCBpbiBiaW5hc2NpaS5iMmFfdXUoKSBpbiBkZWJ1ZyBtb2RlIHdoZW4gZ2l2ZW4gYSAxLWJ5dGUKLSAgYXJndW1lbnQuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjMzI5OTogRml4IHBvc3NpYmxlIGNyYXNoIGluIHRoZSBfc3JlIG1vZHVsZSB3aGVuIGdpdmVuIGJhZCBhcmd1bWVudAotICB2YWx1ZXMgaW4gZGVidWcgbW9kZS4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICMyODQ2OiBBZGQgc3VwcG9ydCBmb3IgZ3ppcC5HemlwRmlsZSByZWFkaW5nIHplcm8tcGFkZGVkIGZpbGVzLiAgUGF0Y2gKLSAgYnkgQnJpYW4gQ3VydGluLgotCi0tIElzc3VlICM3NjgxOiBVc2UgZmxvb3IgZGl2aXNpb24gaW4gYXBwcm9waWF0ZSBwbGFjZXMgaW4gdGhlIHdhdmUgbW9kdWxlLgotCi0tIElzc3VlICM1MzcyOiBEcm9wIHRoZSByZXVzZSBvZiAubyBmaWxlcyBpbiBEaXN0dXRpbHMnIGNjb21waWxlciAoc2luY2UKLSAgRXh0ZW5zaW9uIGV4dHJhIG9wdGlvbnMgbWF5IGNoYW5nZSB0aGUgb3V0cHV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIC5jCi0gIGZpbGUpLiBJbml0aWFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCi0KLS0gSXNzdWUgIzc2MTc6IE1ha2Ugc3VyZSBkaXN0dXRpbHMudW5peGNjb21waWxlci5Vbml4Q0NvbXBpbGVyIHJlY29nbml6ZXMgZ2NjCi0gIHdoZW4gaXQgaGFzIGEgZnVsbHkgcXVhbGlmaWVkIGNvbmZpZ3VyYXRpb24gcHJlZml4LiBJbml0aWFsIHBhdGNoIGJ5IEFyZnJldmVyLgotCi0tIElzc3VlICM3MTA1OiBNYWtlIFdlYWtLZXlEaWN0aW9uYXJ5IGFuZCBXZWFrVmFsdWVEaWN0aW9uYXJ5IHJvYnVzdCBhZ2FpbnN0IHRoZQotICBkZXN0cnVjdGlvbiBvZiB3ZWFrcmVmJ2VkIG9iamVjdHMgd2hpbGUgaXRlcmF0aW5nLgotCi0tIElzc3VlICM3NDU1OiBGaXggcG9zc2libGUgY3Jhc2ggaW4gY1BpY2tsZSBvbiBpbnZhbGlkIGlucHV0LiAgUGF0Y2ggYnkgVmljdG9yCi0gIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzE2MjgyMDU6IFNvY2tldCBmaWxlIG9iamVjdHMgcmV0dXJuZWQgYnkgc29ja2V0LnNvY2tldC5tYWtlZmlsZSgpIG5vdwotICBwcm9wZXJseSBoYW5kbGVzIEVJTlRSIHdpdGhpbiB0aGUgcmVhZCwgcmVhZGxpbmUsIHdyaXRlICYgZmx1c2ggbWV0aG9kcy4gIFRoZQotICBzb2NrZXQuc2VuZGFsbCgpIG1ldGhvZCBub3cgcHJvcGVybHkgaGFuZGxlcyBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbHMuCi0KLS0gSXNzdWUgIzc0NzE6IEltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEd6aXBGaWxlJ3MgYnVmZmVyaW5nIG1lY2hhbmlzbSwgYW5kCi0gIG1ha2UgaXQgaW1wbGVtZW50IHRoZSBgaW8uQnVmZmVyZWRJT0Jhc2VgIEFCQyB0byBhbGxvdyBmb3IgZnVydGhlciBzcGVlZHVwcyBieQotICB3cmFwcGluZyBpdCBpbiBhbiBgaW8uQnVmZmVyZWRSZWFkZXJgLiAgUGF0Y2ggYnkgTmlyIEFpZGVzLgotCi0tIElzc3VlICMzOTcyOiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcwotICBwYXJhbWV0ZXIgdG8gYWxsb3cgc3BlY2lmeWluZyB3aGVyZSB5b3VyIGNvbm5lY3Rpb25zIGNvbWUgZnJvbS4KLQotLSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyLgotCi0tIElzc3VlICM1NTExOiBub3cgemlwZmlsZS5aaXBGaWxlIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLiAgSW5pdGlhbAotICBwYXRjaCBieSBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzc1NTY6IE1ha2Ugc3VyZSBEaXN0dXRpbHMnIG1zdmM5Y29tcGlsZSByZWFkcyBhbmQgd3JpdGVzIHRoZSBNU1ZDIFhNTAotICBNYW5pZmVzdCBmaWxlIGluIHRleHQgbW9kZSBzbyBzdHJpbmcgcGF0dGVybnMgY2FuIGJlIHVzZWQgaW4gcmVndWxhcgotICBleHByZXNzaW9ucy4KLQotLSBJc3N1ZSAjNzU1MjogUmVtb3ZlZCBsaW5lIGZlZWQgaW4gdGhlIGJhc2U2NCBBdXRob3JpemF0aW9uIGhlYWRlciBpbiB0aGUKLSAgRGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIHRvIGF2b2lkIGFuIGVycm9yIHdoZW4gUHlQSSByZWFkcyBpdC4gIFRoaXMgb2NjdXJzIG9uCi0gIGxvbmcgcGFzc3dvcmRzLiBJbml0aWFsIHBhdGNoIGJ5IEpQIFN0LiBQaWVycmUuCi0KLS0gSXNzdWUgIzcyMzE6IHVybGxpYjIgY2Fubm90IGhhbmRsZSBodHRwcyB3aXRoIHByb3h5IHJlcXVpcmluZyBhdXRoLiAgUGF0Y2ggYnkKLSAgVGF0c3VoaXJvIFRzdWppa2F3YS4KLQotLSBJc3N1ZSAjNDc1NzogYHpsaWIuY29tcHJlc3NgIGFuZCBvdGhlciBtZXRob2RzIGluIHRoZSB6bGliIG1vZHVsZSBub3cgcmFpc2UgYQotICBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiBgc3RyYCBvYmplY3QgKHJhdGhlciB0aGFuIGEgYGJ5dGVzYC1saWtlIG9iamVjdCkuCi0gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyIGFuZCBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzczNDk6IE1ha2UgbWV0aG9kcyBvZiBmaWxlIG9iamVjdHMgaW4gdGhlIGlvIG1vZHVsZSBhY2NlcHQgTm9uZSBhcyBhbgotICBhcmd1bWVudCB3aGVyZSBmaWxlLWxpa2Ugb2JqZWN0cyAoaWUgU3RyaW5nSU8gYW5kIEJ5dGVzSU8pIGFjY2VwdCB0aGVtIHRvIG1lYW4KLSAgdGhlIHNhbWUgYXMgcGFzc2luZyBubyBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNzM1NzogdGFyZmlsZSBubyBsb25nZXIgc3VwcHJlc3NlcyBmYXRhbCBleHRyYWN0aW9uIGVycm9ycyBieSBkZWZhdWx0LgotCi0tIElzc3VlICM1OTQ5OiBhZGRlZCBjaGVjayBmb3IgY29ycmVjdCBsaW5lZW5kcyBpbiBpbnB1dCBmcm9tIElNQVAgc2VydmVyIGluCi0gIGltYXBsaWIuCi0KLS0gQWRkIGNvdW50KCkgYW5kIHJldmVyc2UoKSBtZXRob2RzIHRvIGNvbGxlY3Rpb25zLmRlcXVlKCkuCi0KLS0gRml4IHZhcmlhdGlvbnMgb2YgZXh0ZW5kaW5nIGRlcXVlczogIGQuZXh0ZW5kKGQpICBkLmV4dGVuZGxlZnQoZCkgIGQrPWQKLQotLSBJc3N1ZSAjNjk4NjogRml4IGNyYXNoIGluIHRoZSBKU09OIEMgYWNjZWxlcmF0b3Igd2hlbiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKLSAgcGFyYW1ldGVyIHR5cGVzLiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzc0NTc6IGFkZGVkIGEgcmVhZF9wa2dfZmlsZSBtZXRob2QgdG8KLSAgZGlzdHV0aWxzLmRpc3QuRGlzdHJpYnV0aW9uTWV0YWRhdGEuCi0KLS0gbG9nZ2luZzogQWRkZWQgb3B0aW9uYWwgYHNlY3VyZWAgcGFyYW1ldGVyIHRvIFNNVFBIYW5kbGVyLCB0byBlbmFibGUgdXNlIG9mCi0gIFRMUyB3aXRoIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgotCi0tIElzc3VlICMxOTIzOiBGaXhlZCB0aGUgcmVtb3ZhbCBvZiBtZWFuaW5nZnVsIHNwYWNlcyB3aGVuIFBLRy1JTkZPIGlzIGdlbmVyYXRlZAotICBpbiBEaXN0dXRpbHMuICBQYXRjaCBieSBTdGVwaGVuIEVtc2xpZS4KLQotLSBJc3N1ZSAjNDEyMDogRHJvcCByZWZlcmVuY2UgdG8gQ1JUIGZyb20gbWFuaWZlc3Qgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIHdpdGgKLSAgbXN2Yzljb21waWxlci4KLQotLSBJc3N1ZSAjNzMzMzogVGhlIGBwb3NpeGAgbW9kdWxlIGdhaW5zIGFuIGBpbml0Z3JvdXBzKClgIGZ1bmN0aW9uIHByb3ZpZGluZwotICBhY2Nlc3MgdG8gdGhlIGluaXRncm91cHMoMykgQyBsaWJyYXJ5IGNhbGwgb24gVW5peCBzeXN0ZW1zIHdoaWNoIGltcGxlbWVudCBpdC4KLSAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZS4KLQotLSBJc3N1ZSAjNzQwODogRml4ZWQgZGlzdHV0aWxzLnRlc3RzLnNkaXN0IHNvIGl0IGRvZXNuJ3QgY2hlY2sgZm9yIGdyb3VwCi0gIG93bmVyc2hpcCB3aGVuIHRoZSBncm91cCBpcyBub3QgZm9yY2VkLCBiZWNhdXNlIHRoZSBncm91cCBtYXkgYmUgZGlmZmVyZW50Ci0gIGZyb20gdGhlIHVzZXIncyBncm91cCBhbmQgaW5oZXJpdCBmcm9tIGl0cyBjb250YWluZXIgd2hlbiB0aGUgdGVzdCBpcyBydW4uCi0KLS0gSXNzdWUgIzQ0ODY6IFdoZW4gYW4gZXhjZXB0aW9uIGhhcyBhbiBleHBsaWNpdCBjYXVzZSwgZG8gbm90IHByaW50IGl0cwotICBpbXBsaWNpdCBjb250ZXh0IHRvby4gIFRoaXMgYWZmZWN0cyB0aGUgYHRyYWNlYmFja2AgbW9kdWxlIGFzIHdlbGwgYXMgYnVpbHQtaW4KLSAgZXhjZXB0aW9uIHByaW50aW5nLgotCi0tIElzc3VlICMxNTE1OiBFbmFibGUgdXNlIG9mIGRlZXBjb3B5KCkgd2l0aCBpbnN0YW5jZSBtZXRob2RzLiAgUGF0Y2ggYnkgUm9iZXJ0Ci0gIENvbGxpbnMuCi0KLS0gSXNzdWUgIzc0MDM6IGxvZ2dpbmc6IEZpeGVkIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGluIGxvY2sgY3JlYXRpb24uCi0KLS0gSXNzdWUgIzY4NDU6IEFkZCByZXN0YXJ0IHN1cHBvcnQgZm9yIGJpbmFyeSB1cGxvYWQgaW4gZnRwbGliLiAgVGhlCi0gIGBzdG9yYmluYXJ5KClgIG1ldGhvZCBvZiBGVFAgYW5kIEZUUF9UTFMgb2JqZWN0cyBnYWlucyBhbiBvcHRpb25hbCBgcmVzdGAKLSAgYXJndW1lbnQuICBQYXRjaCBieSBQYWJsbyBNb3V6by4KLQotLSBJc3N1ZSAjNTc4ODogYGRhdGV0aW1lLnRpbWVkZWx0YWAgb2JqZWN0cyBnZXQgYSBuZXcgYHRvdGFsX3NlY29uZHMoKWAgbWV0aG9kCi0gIHJldHVybmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGR1cmF0aW9uLiAgUGF0Y2ggYnkgQnJpYW4KLSAgUXVpbmxhbi4KLQotLSBJc3N1ZSAjNzEzMzogU1NMIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIG5ldyBidWZmZXIgQVBJLgotCi0tIElzc3VlICMxNDg4OTQzOiBkaWZmbGliLkRpZmZlcigpIGRvZXNuJ3QgYWx3YXlzIGFkZCBoaW50cyBmb3IgdGFiIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzYxMjM6IHRhcmZpbGUgbm93IG9wZW5zIGVtcHR5IGFyY2hpdmVzIGNvcnJlY3RseSBhbmQgY29uc2lzdGVudGx5Ci0gIHJhaXNlcyBSZWFkRXJyb3Igb24gZW1wdHkgZmlsZXMuCi0KLS0gSXNzdWUgIzczNTQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X21zdmM5Y29tcGlsZXIgLSBkcmFnZnVsbHdpbmRvd3MgY2FuIGJlIDIuCi0KLS0gSXNzdWUgIzUwMzc6IFByb3h5IHRoZSBfX2J5dGVzX18gc3BlY2lhbCBtZXRob2QgaW5zdGVhZCB0byBfX2J5dGVzX18gaW5zdGVhZAotICBvZiBfX3N0cl9fLgotCi0tIElzc3VlICM3MzQxOiBDbG9zZSB0aGUgaW50ZXJuYWwgZmlsZSBvYmplY3QgaW4gdGhlIFRhckZpbGUgY29uc3RydWN0b3IgaW4gY2FzZQotICBvZiBhbiBlcnJvci4KLQotLSBJc3N1ZSAjNzI5MzogZGlzdHV0aWxzLnRlc3RfbXN2Yzljb21waWxlciBpcyBmaXhlZCB0byB3b3JrIG9uIGFueSBmcmVzaAotICBXaW5kb3dzIGJveC4gSGVscCBwcm92aWRlZCBieSBEYXZpZCBCb2xlbi4KLQotLSBJc3N1ZSAjMjA1NDogZnRwbGliIG5vdyBwcm92aWRlcyBhbiBGVFBfVExTIGNsYXNzIHRvIGRvIHNlY3VyZSBGVFAgdXNpbmcgVExTCi0gIG9yIFNTTC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgotCi0tIElzc3VlICM3MzI4OiBweWRvYyBubyBsb25nZXIgY29ycnVwdHMgc3lzLnBhdGggd2hlbiBydW4gd2l0aCB0aGUgJy1tJyBzd2l0Y2guCi0KLS0gSXNzdWUgIzQ5Njk6IFRoZSBtaW1ldHlwZXMgbW9kdWxlIG5vdyByZWFkcyB0aGUgTUlNRSBkYXRhYmFzZSBmcm9tIHRoZQotICByZWdpc3RyeSB1bmRlciBXaW5kb3dzLiAgUGF0Y2ggYnkgR2FicmllbCBHZW5lbGxpbmEuCi0KLS0gSXNzdWUgIzY4MTY6IHJ1bnB5IG5vdyBwcm92aWRlcyBhIHJ1bl9wYXRoIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIFB5dGhvbiBjb2RlIHRvCi0gIGV4ZWN1dGUgZmlsZSBwYXRocyB0aGF0IHJlZmVyIHRvIHNvdXJjZSBvciBjb21waWxlZCBQeXRob24gZmlsZXMgYXMgd2VsbCBhcwotICB6aXBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIG90aGVyIHZhbGlkIHN5cy5wYXRoIGVudHJpZXMgdGhhdCBjb250YWluIGEKLSAgX19tYWluX18ucHkgZmlsZS4gIFRoaXMgYWxsb3dzIGFwcGxpY2F0aW9ucyB0aGF0IHJ1biBvdGhlciBQeXRob24gc2NyaXB0cyB0bwotICBzdXBwb3J0IHRoZSBzYW1lIGZsZXhpYmlsaXR5IGFzIHRoZSBDUHl0aG9uIGNvbW1hbmQgbGluZSBpdHNlbGYuCi0KLS0gSXNzdWUgIzczMTg6IG11bHRpcHJvY2Vzc2luZyBub3cgdXNlcyBhIHRpbWVvdXQgd2hlbiBpdCBmYWlscyB0byBlc3RhYmxpc2ggYQotICBjb25uZWN0aW9uIHdpdGggYW5vdGhlciBwcm9jZXNzLCByYXRoZXIgdGhhbiBsb29waW5nIGVuZGxlc3NseS4gIFRoZSBkZWZhdWx0Ci0gIHRpbWVvdXQgaXMgMjAgc2Vjb25kcywgd2hpY2ggc2hvdWxkIGJlIGFtcGx5IHN1ZmZpY2llbnQgZm9yIGxvY2FsIGNvbm5lY3Rpb25zLgotCi0tIElzc3VlICM3MTk3OiBBbGxvdyB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lciBvYmplY3RzIHRvIGJlIHBpY2tsZWQgYW5kCi0gIHVucGlja2xlZC4gIFRoaXMgZml4ZXMgY3Jhc2hlcyB1bmRlciBXaW5kb3dzIHdoZW4gdHJ5aW5nIHRvIHJ1bgotICB0ZXN0X211bHRpcHJvY2Vzc2luZyBpbiB2ZXJib3NlIG1vZGUuCi0KLS0gSXNzdWUgIzc4OTM6IGBgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHRgYCBpcyBtYWRlIHB1YmxpYyBhbmQgYSBgYHJlc3VsdGNsYXNzYGAKLSAgYXJndW1lbnQgYWRkZWQgdG8gdGhlIFRleHRUZXN0UnVubmVyIGNvbnN0cnVjdG9yIGFsbG93aW5nIGEgZGlmZmVyZW50IHJlc3VsdAotICBjbGFzcyB0byBiZSB1c2VkIHdpdGhvdXQgaGF2aW5nIHRvIHN1YmNsYXNzLgotCi0tIElzc3VlICM3NTg4OiBgYHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0LmdldERlc2NyaXB0aW9uYGAgbm93IGluY2x1ZGVzIHRoZSB0ZXN0Ci0gIG5hbWUgaW4gZmFpbHVyZSByZXBvcnRzIGV2ZW4gaWYgdGhlIHRlc3QgaGFzIGEgZG9jc3RyaW5nLgotCi0tIElzc3VlICMzMDAxOiBBZGQgYSBDIGltcGxlbWVudGF0aW9uIG9mIHJlY3Vyc2l2ZSBsb2NrcyB3aGljaCBpcyB1c2VkIGJ5Ci0gIGRlZmF1bHQgd2hlbiBpbnN0YW50aWF0aW5nIGEgYHRocmVhZGluZy5STG9ja2Agb2JqZWN0LiBUaGlzIG1ha2VzIHJlY3Vyc2l2ZQotICBsb2NrcyBhcyBmYXN0IGFzIHJlZ3VsYXIgbm9uLXJlY3Vyc2l2ZSBsb2NrcyAocHJldmlvdXNseSwgdGhleSB3ZXJlIHNsb3dlciBieQotICAxMHggdG8gMTV4KS4KLQotLSBJc3N1ZSAjNzI4MjogRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBhbiBSTG9jayB3YXMgdXNlZCBpbiBhIHRocmVhZCBvdGhlciB0aGFuCi0gIHRob3NlIHN0YXJ0ZWQgdGhyb3VnaCBgdGhyZWFkaW5nLlRocmVhZGAgKGZvciBleGFtcGxlLCB1c2luZwotICBgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKClgKS4KLQotLSBJc3N1ZSAjNzE4NzogSW1wb3J0bGliIHdvdWxkIG5vdCBzaWxlbmNlIHRoZSBJT0Vycm9yIHJhaXNlZCB3aGVuIHRyeWluZyB0bwotICB3cml0ZSBuZXcgYnl0ZWNvZGUgd2hlbiBpdCB3YXMgbWFkZSByZWFkLW9ubHkuCi0KLS0gSXNzdWUgIzcyNjQ6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gZGVhbGxvY2F0aW5nIHRocmVhZC1sb2NhbCBvYmplY3RzCi0gIHdoaWNoIGFyZSBwYXJ0IG9mIGEgcmVmZXJlbmNlIGN5Y2xlLgotCi0tIElzc3VlICM3MjExOiBBbGxvdyA2NC1iaXQgdmFsdWVzIGZvciB0aGUgYGlkZW50YCBhbmQgYGRhdGFgIGZpZWxkcyBvZiBrZXZlbnQKLSAgb2JqZWN0cyBvbiA2NC1iaXQgc3lzdGVtcy4gIFBhdGNoIGJ5IE1pY2hhZWwgQnJvZ2h0b24uCi0KLS0gSXNzdWUgIzY4OTY6IG1haWxib3guTWFpbGRpciBub3cgaW52YWxpZGF0ZXMgaXRzIGludGVybmFsIGNhY2hlIGVhY2ggdGltZSBhCi0gIG1vZGlmaWNhdGlvbiBpcyBkb25lIHRocm91Z2ggaXQuICBUaGlzIGZpeGVzIGluY29uc2lzdGVuY2llcyBhbmQgdGVzdCBmYWlsdXJlcwotICBvbiBzeXN0ZW1zIHdpdGggc2xpZ2h0bHkgYm9ndXMgbXRpbWUgYmVoYXZpb3VyLgotCi0tIElzc3VlICM3MjQ2ICYgSXNzdWUgIzcyMDg6IGdldHBhc3Mgbm93IHByb3Blcmx5IGZsdXNoZXMgaW5wdXQgYmVmb3JlIHJlYWRpbmcKLSAgZnJvbSBzdGRpbiBzbyB0aGF0IGV4aXN0aW5nIGlucHV0IGRvZXMgbm90IGNvbmZ1c2UgaXQgYW5kIGxlYWQgdG8gaW5jb3JyZWN0Ci0gIGVudHJ5IG9yIGFuIElPRXJyb3IuICBJdCBhbHNvIHByb3Blcmx5IGZsdXNoZXMgaXQgYWZ0ZXJ3YXJkcyB0byBhdm9pZCB0aGUKLSAgdGVybWluYWwgZWNob2luZyB0aGUgaW5wdXQgYWZ0ZXJ3YXJkcyBvbiBPU2VzIHN1Y2ggYXMgU29sYXJpcy4KLQotLSBJc3N1ZSAjNzIzMzogRml4IGEgbnVtYmVyIG9mIHR3by1hcmd1bWVudCBEZWNpbWFsIG1ldGhvZHMgdG8gbWFrZSBzdXJlIHRoYXQKLSAgdGhleSBhY2NlcHQgYW4gaW50IG9yIGxvbmcgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4gIEFsc28gZml4IGJ1Z2d5IGhhbmRsaW5nIG9mCi0gIGxhcmdlIGFyZ3VtZW50cyAodGhvc2Ugd2l0aCBjb2VmZmljaWVudCBsb25nZXIgdGhhbiB0aGUgY3VycmVudCBwcmVjaXNpb24pIGluCi0gIHNoaWZ0IGFuZCByb3RhdGUuCi0KLS0gSXNzdWUgIzQ3NTA6IFN0b3JlIHRoZSBiYXNlbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaW4gdGhlIGd6aXAgRk5BTUUKLSAgaGVhZGVyIGFzIHJlcXVpcmVkIGJ5IFJGQyAxOTUyLgotCi0tIElzc3VlICMxMTgwOiBBZGRlZCBhIG5ldyBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZSB+Ly5weWRpc3R1dGlscy5jZmcgaW4KLSAgRGlzdHV0aWxzLgotCi0tIElzc3VlICM3MjE4OiBGaXggdGVzdF9zaXRlIGZvciB3aW4zMiwgdGhlIGRpcmVjdG9yeSBjb21wYXJpc29uIHdhcyBkb25lIHdpdGgKLSAgYW4gdXBwZXJjYXNlLgotCi0tIElzc3VlICM3MjA1OiBGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIHVzaW5nIGEgQloyRmlsZSBvYmplY3QgZnJvbQotICBzZXZlcmFsIHRocmVhZHMgYXQgb25jZS4KLQotLSBJc3N1ZSAjNzA3NzogbG9nZ2luZzogU3lzTG9nSGFuZGxlciBub3cgdHJlYXRzIFVuaWNvZGUgYXMgcGVyIFJGQyA1NDI0LgotCi0tIElzc3VlICM3MDk5OiBEZWNpbWFsLmlzX25vcm1hbCBub3cgcmV0dXJucyBUcnVlIGZvciBudW1iZXJzIHdpdGggZXhwb25lbnQKLSAgbGFyZ2VyIHRoYW4gZW1heC4KLQotLSBJc3N1ZSAjNzA4MDogbG9jYWxlLnN0cnhmcm0oKSByYWlzZXMgYSBNZW1vcnlFcnJvciBvbiA2NC1iaXQgbm9uLVdpbmRvd3MKLSAgcGxhdGZvcm1zLCBhbmQgYXNzb3J0ZWQgbG9jYWxlIGZpeGVzIGJ5IERlcmsgRHJ1a2tlci4KLQotLSBJc3N1ZSAjNTgzMzogRml4IGV4dHJhIHNwYWNlIGNoYXJhY3RlciBpbiByZWFkbGluZSBjb21wbGV0aW9uIHdpdGggdGhlIEdOVQotICByZWFkbGluZSBsaWJyYXJ5IHZlcnNpb24gNi4wLgotCi0tIElzc3VlICM2ODk0OiBGaXhlZCB0aGUgaXNzdWUgdXJsbGliMiBkb2Vzbid0IHJlc3BlY3QgIm5vX3Byb3h5IiBlbnZpcm9ubWVudC4KLQotLSBJc3N1ZSAjNzA4NjogQWRkZWQgVENQIHN1cHBvcnQgdG8gU3lzTG9nSGFuZGxlciwgYW5kIHRpZGllZCB1cCBzb21lCi0gIGFuYWNocm9uaXNtcyBpbiB0aGUgY29kZSB3aGljaCB3ZXJlIGEgcmVsaWMgb2YgMS41LjIgY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjNzA4MjogV2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIE1JTUUgJ25hbWUnIHBhcmFtZXRlciwgdGhlIGNvcnJlY3QgcGxhY2UKLSAgdG8gbG9vayBmb3IgaXQgaXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCi0KLS0gTWFrZSB0b2tlbml6ZS5kZXRlY3RfY29kaW5nKCkgbm9ybWFsaXplIHV0Zi04IGFuZCBpc28tODg1OS0xIHZhcmlhbnRzIGxpa2UgdGhlCi0gIGJ1aWx0aW4gdG9rZW5pemVyLgotCi0tIElzc3VlICM3MDQ4OiBGb3JjZSBEZWNpbWFsLmxvZ2IgdG8gcm91bmQgaXRzIHJlc3VsdCB3aGVuIHRoYXQgcmVzdWx0IGlzIHRvbwotICBsYXJnZSB0byBmaXQgaW4gdGhlIGN1cnJlbnQgcHJlY2lzaW9uLgotCi0tIElzc3VlICM2MjM2LCAjNjM0ODogRml4IHZhcmlvdXMgZmFpbHVyZXMgaW4gdGhlIEkvTyBsaWJyYXJ5IHVuZGVyIEFJWCBhbmQKLSAgb3RoZXIgcGxhdGZvcm1zLCB3aGVuIHVzaW5nIGEgbm9uLWdjYyBjb21waWxlci4gUGF0Y2ggYnkgRGVyayBEcnVra2VyLgotCi0tIElzc3VlICM0NjA2OiBQYXNzaW5nICdOb25lJyBpZiBjdHlwZXMgYXJndHlwZSBpcyBzZXQgdG8gUE9JTlRFUiguLi4pICBkb2VzIG5vdwotICBhbHdheXMgcmVzdWx0IGluIE5VTEwuCi0KLS0gSXNzdWUgIzUwNDI6IFN0cnVjdHVyZSBzdWItc3ViY2xhc3MgZG9lcyBub3cgaW5pdGlhbGl6ZSBjb3JyZWN0bHkgd2l0aCBiYXNlCi0gIGNsYXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0tIElzc3VlICM2ODgyOiBJbXBvcnQgdXVpZCBjcmVhdGVzIHpvbWJpZXMgcHJvY2Vzc2VzLgotCi0tIElzc3VlICM2NjM1OiBGaXggcHJvZmlsZXIgcHJpbnRpbmcgdXNhZ2UgbWVzc2FnZS4KLQotLSBJc3N1ZSAjNjg1NjogQWRkIGEgZmlsdGVyIGtleXdvcmQgYXJndW1lbnQgdG8gVGFyRmlsZS5hZGQoKS4KLQotLSBJc3N1ZSAjNjg4ODogcGRiJ3MgYWxpYXMgY29tbWFuZCB3YXMgYnJva2VuIHdoZW4gbm8gYXJndW1lbnRzIHdlcmUgZ2l2ZW4uCi0KLS0gSXNzdWUgIzY4NTc6IERlZmF1bHQgZm9ybWF0KCkgYWxpZ25tZW50IHNob3VsZCBiZSAnPicgZm9yIERlY2ltYWwgaW5zdGFuY2VzLgotCi0tIElzc3VlICM2Nzk1OiBpbnQoRGVjaW1hbCgnbmFuJykpIG5vdyByYWlzZXMgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZwotICBOYU4gb3IgcmFpc2luZyBJbnZhbGlkQ29udGV4dC4gIEFsc28sIGZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4KLSAgbG9uZyhEZWNpbWFsKCduYW4nKSkuCi0KLS0gSXNzdWUgIzY4NTA6IEZpeCBidWcgaW4gRGVjaW1hbC5fcGFyc2VfZm9ybWF0X3NwZWNpZmllciBmb3IgZm9ybWF0cyB3aXRoIG5vCi0gIHR5cGUgc3BlY2lmaWVyLgotCi0tIElzc3VlICM2MjM5OiBjdHlwZXMuY19jaGFyX3AgcmV0dXJuIHZhbHVlIG11c3QgcmV0dXJuIGJ5dGVzLgotCi0tIElzc3VlICM2ODM4OiBVc2UgYSBsaXN0IHRvIGFjY3VtdWxhdGUgdGhlIHZhbHVlIGluc3RlYWQgb2YgcmVwZWF0ZWRseQotICBjb25jYXRlbmF0aW5nIHN0cmluZ3MgaW4gaHR0cC5jbGllbnQncyBIVFRQUmVzcG9uc2UuX3JlYWRfY2h1bmtlZCBwcm92aWRpbmcgYQotICBzaWduaWZpY2FudCBzcGVlZCBpbmNyZWFzZSB3aGVuIGRvd25sb2FkaW5nIGxhcmdlIGZpbGVzIHNlcnZlbmQgd2l0aCBhCi0gIFRyYW5zZmVyLUVuY29kaW5nIG9mICdjaHVua2VkJy4KLQotLSBUcnlpbmcgdG8gaW1wb3J0IGEgc3VibW9kdWxlIGZyb20gYSBtb2R1bGUgdGhhdCBpcyBub3QgYSBwYWNrYWdlLCBJbXBvcnRFcnJvcgotICBzaG91bGQgYmUgcmFpc2VkLCBub3QgQXR0cmlidXRlRXJyb3IuCi0KLS0gV2hlbiB0aGUgZ2xvYmFscyBwYXN0IHRvIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgaGFzIF9fcGFja2FnZV9fIHNldCB0byBOb25lLAotICBmYWxsIGJhY2sgdG8gY29tcHV0aW5nIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlIGluc3RlYWQgb2YgZ2l2aW5nIHVwLgotCi0tIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdGhlIG5hbWUgb2YgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgZm9yCi0gIGltcG9ydGxpYi5fX2ltcG9ydF9fIGlzIG5vdCBhIHN0cmluZyAod2FzIHJhaXNpbmcgYW4gQXR0cmlidXRlRXJyb3IgYmVmb3JlKS4KLQotLSBBbGxvdyB0aGUgZnJvbWxpc3QgcGFzc2VkIGludG8gaW1wb3J0bGliLl9faW1wb3J0X18gdG8gYmUgYW55IGl0ZXJhYmxlLgotCi0tIEhhdmUgaW1wb3J0bGliIHJhaXNlIEltcG9ydEVycm9yIGlmIE5vbmUgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMuCi0KLS0gSXNzdWUgIzYwNTQ6IERvIG5vdCBub3JtYWxpemUgc3RvcmVkIHBhdGhuYW1lcyBpbiB0YXJmaWxlLgotCi0tIElzc3VlICM2Nzk0OiBGaXggRGVjaW1hbC5jb21wYXJlX3RvdGFsIGFuZCBEZWNpbWFsLmNvbXBhcmVfdG90YWxfbWFnOiBOYU4KLSAgcGF5bG9hZHMgYXJlIG5vdyBvcmRlcmVkIGJ5IGludGVnZXIgdmFsdWUgcmF0aGVyIHRoYW4gbGV4aWNvZ3JhcGhpY2FsbHkuCi0KLS0gSXNzdWUgIzEzNTY5Njk6IEFkZCBtaXNzaW5nIGluZm8gbWV0aG9kcyBpbiB0aXguSExpc3QuCi0KLS0gSXNzdWUgIzE1MjI1ODc6IE5ldyBjb25zdGFudHMgYW5kIG1ldGhvZHMgZm9yIHRoZSB0aXguR3JpZCB3aWRnZXQuCi0KLS0gSXNzdWUgIzEyNTA0Njk6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRpeC5QYW5lZFdpbmRvdy5wYW5lcy4KLQotLSBJc3N1ZSAjMTExOTY3MzogRG8gbm90IG92ZXJyaWRlIHRraW50ZXIuVGV4dCBtZXRob2RzIHdoZW4gY3JlYXRpbmcgYQotICBTY3JvbGxlZFRleHQuCi0KLS0gSXNzdWUgIzY2NjU6IEZpeCBmbm1hdGNoIHRvIHByb3Blcmx5IG1hdGNoIGZpbGVuYW1lcyB3aXRoIG5ld2xpbmVzIGluIHRoZW0uCi0KLS0gSXNzdWUgIzExMzU6IEFkZCB0aGUgWFZpZXcgYW5kIFlWaWV3IG1peC1pbnMgdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIHh2aWV3KgotICBhbmQgeXZpZXcqIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzY2Mjk6IEZpeCBhIGRhdGEgY29ycnVwdGlvbiBpc3N1ZSBpbiB0aGUgbmV3IEkvTyBsaWJyYXJ5LCB3aGljaCBjb3VsZAotICBvY2N1ciB3aGVuIHdyaXRpbmcgdG8gYSBCdWZmZXJlZFJhbmRvbSBvYmplY3QgKGUuZy4gYSBmaWxlIG9wZW5lZCBpbiAicmIrIiBvcgotICAid2IrIiBtb2RlKSBhZnRlciBoYXZpbmcgYnVmZmVyZWQgYSBjZXJ0YWluIGFtb3VudCBvZiBkYXRhIGZvciByZWFkaW5nLiBUaGlzCi0gIGJ1ZyB3YXMgbm90IHByZXNlbnQgaW4gdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICM2NjIyOiBGaXggImxvY2FsIHZhcmlhYmxlICdzZWNyZXQnIHJlZmVyZW5jZWQgYmVmb3JlIGFzc2lnbm1lbnQiIGJ1ZyBpbgotICBQT1AzLmFwb3AuCi0KLS0gSXNzdWUgIzI3MTU6IFJlbW92ZSByZW1uYW50cyBvZiBDYXJib24uRmlsZSBmcm9tIGJpbmhleCBtb2R1bGUuCi0KLS0gSXNzdWUgIzY1OTU6IFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgYXJiaXRyYXJ5IFVuaWNvZGUgZGVjaW1hbAotICBkaWdpdHMgaW4gaW5wdXQsIGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBzdGFuZGFyZC4gIFByZXZpb3VzbHkgaXQgd2FzIHJlc3RyaWN0ZWQKLSAgdG8gYWNjZXB0aW5nIFswLTldLgotCi0tIElzc3VlICM2MTA2OiB0ZWxuZXRsaWIuVGVsbmV0LnByb2Nlc3NfcmF3cSBkb2Vzbid0IGhhbmRsZSBkZWZhdWx0IFdJTEwvV09OVAotICBETy9ET05UIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTQyNDE1MjogRml4IGZvciBodHRwLmNsaWVudCwgdXJsbGliLnJlcXVlc3QgdG8gc3VwcG9ydCBTU0wgd2hpbGUKLSAgd29ya2luZyB0aHJvdWdoIHByb3h5LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXN0b3BoZXIgTGksIGNoYW5nZXMgbWFkZSBieQotICBTZW50aGlsIEt1bWFyYW4uCi0KLS0gQWRkIGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyIHRvIHJlcHJlc2VudCB0aGUgUEVQIDMwMiBwcm90b2NvbCBmb3IKLSAgbG9hZGVycyB0aGF0IGFsbG93IGZvciBtb2R1bGVzIHRvIGJlIGV4ZWN1dGVkLiBCb3RoIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgYW5kCi0gIFB5UHljTG9hZGVyIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzIGFuZCBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBpbiByZWxhdGlvbiB0bwotICBvdGhlciBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBBQkNzLgotCi0tIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgZGlkIG5vdCBpbmhlcml0IGZyb20gaW1wb3J0bGliLmFiYy5SZXNvdXJjZUxvYWRlciBsaWtlCi0gIHRoZSBkb2N1bWVudGF0aW9uIHNhaWQgaXQgZGlkIGV2ZW4gdGhvdWdoIHRoZSBjb2RlIGluIFB5TG9hZGVyIHJlbGllZCBvbiB0aGUKLSAgYWJzdHJhY3QgbWV0aG9kIHJlcXVpcmVkIGJ5IFJlc291cmNlTG9hZGVyLgotCi0tIElzc3VlICM2NDMxOiBNYWtlIEZyYWN0aW9uIHR5cGUgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4gaXQgZG9lc24ndCBrbm93IGhvdwotICB0byBoYW5kbGUgYSBjb21wYXJpc29uIHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBBbHNvIGFkZCBjb3JyZWN0IGhhbmRsaW5nCi0gIG9mIGluZmluaXRpZXMgYW5kIG5hbnMgZm9yIGNvbXBhcmlzb25zIHdpdGggZmxvYXQuCi0KLS0gSXNzdWUgIzY0MTU6IEZpeGVkIHdhcm5pbmdzLndhcm4gc2VnZmF1bHQgb24gYmFkIGZvcm1hdHRlZCBzdHJpbmcuCi0KLS0gSXNzdWUgIzYzNTg6IFRoZSBleGl0IHN0YXR1cyBvZiBhIGNvbW1hbmQgc3RhcnRlZCB3aXRoIG9zLnBvcGVuKCkgd2FzIHJlcG9ydGVkCi0gIGRpZmZlcmVudGx5IHRoYW4gaXQgZGlkIHdpdGggcHl0aG9uIDIueC4KLQotLSBJc3N1ZSAjNjMyMzogVGhlIHBkYiBkZWJ1Z2dlciBkaWQgbm90IGV4aXQgd2hlbiBydW5uaW5nIGEgc2NyaXB0IHdpdGggYSBzeW50YXgKLSAgZXJyb3IuCi0KLS0gSXNzdWUgIzMzOTI6IFRoZSBzdWJwcm9jZXNzIGNvbW11bmljYXRlKCkgbWV0aG9kIG5vIGxvbmdlciBmYWlscyBpbiBzZWxlY3QoKQotICB3aGVuIGZpbGUgZGVzY3JpcHRvcnMgYXJlIGxhcmdlOyBjb21tdW5pY2F0ZSgpIG5vdyB1c2VzIHBvbGwoKSB3aGVuIHBvc3NpYmxlLgotCi0tIElzc3VlICM2MzY5OiBGaXggYW4gUkxFIGRlY29tcHJlc3Npb24gYnVnIGluIHRoZSBiaW5oZXggbW9kdWxlLgotCi0tIElzc3VlICM2MzQ0OiBGaXhlZCBhIGNyYXNoIG9mIG1tYXAucmVhZCgpIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgYXJndW1lbnQuCi0KLS0gVGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gc3RyaW5nLm1ha2V0cmFucyBoYXMgYmVlbiByZW1vdmVkLgotCi0tIElzc3VlICM0MDA1OiBGaXhlZCBhIGNyYXNoIG9mIHB5ZG9jIHdoZW4gdGhlcmUgd2FzIGEgemlwIGZpbGUgcHJlc2VudCBpbgotICBzeXMucGF0aC4KLQotLSBJc3N1ZSAjNjIxODogaW8uU3RyaW5nSU8gYW5kIGlvLkJ5dGVzSU8gaW5zdGFuY2VzIGFyZSBub3cgcGlja2xhYmxlLgotCi0tIFRoZSBvcy5nZXRfZXhlY19wYXRoKCkgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZQotICBzZWFyY2hlZCBmb3IgYW4gZXhlY3V0YWJsZSB3aGVuIGxhdW5jaGluZyBhIHN1YnByb2Nlc3Mgd2FzIGFkZGVkLgotCi0tIElzc3VlICM3NDgxOiBXaGVuIGEgdGhyZWFkaW5nLlRocmVhZCBmYWlsZWQgdG8gc3RhcnQgaXQgd291bGQgbGVhdmUgdGhlCi0gIGluc3RhbmNlIHN0dWNrIGluIGluaXRpYWwgc3RhdGUgYW5kIHByZXNlbnQgaW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgpLgotCi0tIElzc3VlICMxMDY4MjY4OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGhhbmRsZXMgRUlOVFIgaW4gaW50ZXJuYWwgb3Mud2FpdHBpZAotICBhbmQgb3MucmVhZCBzeXN0ZW0gY2FsbHMgd2hlcmUgYXBwcm9wcmlhdGUuCi0KLS0gSXNzdWUgIzY3Mjk6IEFkZGVkIGN0eXBlcy5jX3NzaXplX3QgdG8gcmVwcmVzZW50IHNzaXplX3QuCi0KLS0gSXNzdWUgIzYyNDc6IFRoZSBhcmdwYXJzZSBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzgyMzU6IF9zb2NrZXQ6IEFkZCB0aGUgY29uc3RhbnQgYGBTT19TRVRGSUJgYC4gIFNPX1NFVEZJQiBpcyBhIHNvY2tldAotICBvcHRpb24gYXZhaWxhYmxlIG9uIEZyZWVCU0QgNy4xIGFuZCBuZXdlci4KLQotLSBJc3N1ZSAjOTMxNTogRml4IGZvciB0aGUgdHJhY2UgbW9kdWxlIHRvIHJlY29yZCBjb3JyZWN0IGNsYXNzIG5hbWUKLSAgZm9yIHRyYWNpbmcgbWV0aG9kcy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzk5NTk6IFR3ZWFrIGZvcm11bGEgdXNlZCBmb3IgY29tcHV0aW5nIG1hdGgubG9nIG9mIGFuIGludGVnZXIsCi0gIG1ha2luZyBpdCBtYXJnaW5hbGx5IG1vcmUgYWNjdXJhdGUgZm9yIGV4YWN0IHBvd2VycyBvZiAyLgotCi0tIElzc3VlICM5NDIyOiBGaXggbWVtb3J5IGxlYWsgd2hlbiByZS1pbml0aWFsaXppbmcgYSBzdHJ1Y3QuU3RydWN0IG9iamVjdC4KLQotLSBJc3N1ZSAjNzkwMDogVGhlIGdldGdyb3VwcygyKSBzeXN0ZW0gY2FsbCBvbiBNYWNPU1ggYmVoYXZlcyByYXRoZXIgb2RkbHkKLSAgY29tcGFyZWQgdG8gb3RoZXIgdW5peCBzeXN0ZW1zLiBJbiBwYXJ0aWN1bGFyLCBvcy5nZXRncm91cHMoKSBkb2VzIG5vdCByZWZsZWN0Ci0gIGFueSBjaGFuZ2VzIG1hZGUgdXNpbmcgb3Muc2V0Z3JvdXBzKCkgYnV0IGJhc2ljbHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKLSAgaW5mb3JtYXRpb24gYXMgdGhlIGlkIGNvbW1hbmQuIG9zLmdldGdyb3VwcygpIGNhbiBub3cgcmV0dXJuIG1vcmUgdGhhbiAxNgotICBncm91cHMgb24gTWFjT1NYLgotCi0tIElzc3VlICM2MDk1OiBNYWtlIGRpcmVjdG9yeSBhcmd1bWVudCB0byBvcy5saXN0ZGlyIG9wdGlvbmFsLgotCi0tIElzc3VlICM5Mjc3OiBGaXggYnVnIGluIHN0cnVjdC5wYWNrIGZvciBib29scyBpbiBzdGFuZGFyZCBtb2RlIChlLmcuLAotICBzdHJ1Y3QucGFjaygnPj8nKSk6IGlmIGNvbnZlcnNpb24gdG8gYm9vbCByYWlzZWQgYW4gZXhjZXB0aW9uIHRoZW4gdGhhdAotICBleGNlcHRpb24gd2Fzbid0IHByb3Blcmx5IHByb3BhZ2F0ZWQgb24gbWFjaGluZXMgd2hlcmUgY2hhciBpcyB1bnNpZ25lZC4KLQotLSBJc3N1ZSAjNTE4MDogRml4ZWQgYSBidWcgdGhhdCBwcmV2ZW50ZWQgbG9hZGluZyAyLnggcGlja2xlcyBpbiAzLnggcHl0aG9uIHdoZW4KLSAgdGhleSBjb250YWluIGluc3RhbmNlcyBvZiBvbGQtc3R5bGUgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjOTE2NTogQWRkIG5ldyBmdW5jdGlvbnMgbWF0aC5pc2Zpbml0ZSBhbmQgY21hdGguaXNmaW5pdGUsIHRvIGFjY29tcGFueQotICBleGlzdGluZyBpc2luZiBhbmQgaXNuYW4gZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNTc4MjY5OiBJbXBsZW1lbnQgb3Muc3ltbGluayBmb3IgV2luZG93cyA2LjArLiAgUGF0Y2ggYnkgSmFzb24KLSAgUi4gQ29vbWJzLgotCi0tIEluIHN0cnVjdC5wYWNrLCBjb3JyZWN0bHkgcHJvcG9nYXRlIGV4Y2VwdGlvbnMgZnJvbSBjb21wdXRpbmcgdGhlIHRydXRoIG9mIGFuCi0gIG9iamVjdCBpbiB0aGUgJz8nIGZvcm1hdC4KLQotLSBJc3N1ZSAjOTAwMDogZGF0ZXRpbWUudGltZXpvbmUgb2JqZWN0cyBub3cgaGF2ZSBldmFsLWZyaWVuZGx5IHJlcHIuCi0KLS0gSW4gdGhlIG1hdGggbW9kdWxlLCBjb3JyZWN0bHkgbG9va3VwIF9fdHJ1bmNfXywgX19jZWlsX18sIGFuZCBfX2Zsb29yX18gYXMKLSAgc3BlY2lhbCBtZXRob2RzLgotCi0tIElzc3VlICM5MDA1OiBQcmV2ZW50IHV0Y3RpbWV0dXBsZSgpIGZyb20gcHJvZHVjaW5nIHllYXIgMCBvciB5ZWFyIDEwLDAwMC4KLSAgUHJpb3IgdG8gdGhpcyBjaGFuZ2UsIHRpbWV6b25lIGFkanVzdG1lbnQgaW4gdXRjdGltZXR1cGxlKCkgY291bGQgcHJvZHVjZQotICB0bV95ZWFyIHZhbHVlIG9mIDAgb3IgMTAsMDAwLiAgTm93IGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGluIHRoZXNlIGVkZ2UKLSAgY2FzZXMuCi0KLS0gSXNzdWUgIzY2NDE6IFRoZSBgYGRhdGV0aW1lLnN0cnB0aW1lYGAgbWV0aG9kIG5vdyBzdXBwb3J0cyB0aGUgYGAlemBgCi0gIGRpcmVjdGl2ZS4gIFdoZW4gdGhlIGBgJXpgYCBkaXJlY3RpdmUgaXMgcHJlc2VudCBpbiB0aGUgZm9ybWF0IHN0cmluZywgYW4KLSAgYXdhcmUgYGBkYXRldGltZWBgIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIGBgdHppbmZvYGAgYm91bmQgdG8gYQotICBgYGRhdGV0aW1lLnRpbWV6b25lYGAgaW5zdGFuY2UgY29uc3RydWN0ZWQgZnJvbSB0aGUgcGFyc2VkIG9mZnNldC4gIElmIGJvdGgKLSAgYGAlemBgIGFuZCBgYCVaYGAgYXJlIHByZXNlbnQsIHRoZSBkYXRhIGluIGBgJVpgYCBmaWVsZCBpcyB1c2VkIGZvciB0aW1lem9uZQotICBuYW1lLCBidXQgYGAlWmBgIGRhdGEgd2l0aG91dCBgYCV6YGAgaXMgZGlzY2FyZGVkLgotCi0tIElzc3VlICM1MDk0OiBUaGUgYGBkYXRldGltZWBgIG1vZHVsZSBub3cgaGFzIGEgc2ltcGxlIGNvbmNyZXRlIGNsYXNzCi0gIGltcGxlbWVudGluZyBgYGRhdGV0aW1lLnR6aW5mb2BgIGludGVyZmFjZS4gIEluc3RhbmNlcyBvZiB0aGUgbmV3IGNsYXNzLAotICBgYGRhdGV0aW1lLnRpbWV6b25lYGAsIHJldHVybiBmaXhlZCBuYW1lIGFuZCBVVEMgb2Zmc2V0IGZyb20gdGhlaXIKLSAgYGB0em5hbWUoZHQpYGAgYW5kIGBgdXRjb2Zmc2V0KGR0KWBgIG1ldGhvZHMuICBUaGUgYGBkc3QoZHQpYGAgbWV0aG9kIGFsd2F5cwotICByZXR1cm5zIGBgTm9uZWBgLiAgQSBjbGFzcyBhdHRyaWJ1dGUsIGBgdXRjYGAgY29udGFpbnMgYW4gaW5zdGFuY2UKLSAgcmVwcmVzZW50aW5nIHRoZSBVVEMgdGltZXpvbmUuICBPcmlnaW5hbCBwYXRjaCBieSBSYWZlIEthcGxhbi4KLQotLSBJc3N1ZSAjODk3MzogQWRkIF9fYWxsX18gdG8gc3RydWN0IG1vZHVsZTsgdGhpcyBlbnN1cmVzIHRoYXQgaGVscChzdHJ1Y3QpCi0gIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzdHJ1Y3QuU3RydWN0IGNsYXNzLgotCi0tIElzc3VlICMzMTI5OiBUcmFpbGluZyBkaWdpdHMgaW4gc3RydWN0IGZvcm1hdCBzdHJpbmcgYXJlIG5vIGxvbmdlciBpZ25vcmVkLgotICBGb3IgZXhhbXBsZSwgIjEiIG9yICJpbGliMTIzIiBhcmUgbm93IGludmFsaWQgZm9ybWF0cyBhbmQgY2F1c2UKLSAgYGBzdHJ1Y3QuZXJyb3JgYCB0byBiZSByYWlzZWQuICBQYXRjaCBieSBDYWxlYiBEZXZlcmF1eC4KLQotLSBJc3N1ZSAjNzM4NDogSWYgdGhlIHN5c3RlbSByZWFkbGluZSBsaWJyYXJ5IGlzIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMsIHRoZQotICBjdXJzZXMgbW9kdWxlIG11c3QgYmUgbGlua2VkIGFnYWluc3QgbmN1cnNlcyBhcyB3ZWxsLiBPdGhlcndpc2UgaXQgaXMgbm90IHNhZmUKLSAgdG8gbG9hZCBib3RoIHRoZSByZWFkbGluZSBhbmQgY3Vyc2VzIG1vZHVsZXMgaW4gYW4gYXBwbGljYXRpb24uCi0KLS0gSXNzdWUgIzI4MTA6IEZpeCBjYXNlcyB3aGVyZSB0aGUgV2luZG93cyByZWdpc3RyeSBBUEkgcmV0dXJucyBFUlJPUl9NT1JFX0RBVEEsCi0gIHJlcXVpcmluZyBhIHJlLXRyeSBpbiBvcmRlciB0byBnZXQgdGhlIGNvbXBsZXRlIHJlc3VsdC4KLQotLSBJc3N1ZSAjODY5MjogT3B0aW1pemUgbWF0aC5mYWN0b3JpYWw6IHJlcGxhY2UgdGhlIHByZXZpb3VzIG5haXZlIGFsZ29yaXRobQotICB3aXRoIGFuIGltcHJvdmVkICdiaW5hcnktc3BsaXQnIGFsZ29yaXRobSB0aGF0IHVzZXMgZmV3ZXIgbXVsdGlwbGljYXRpb25zIGFuZAotICBhbGxvd3MgbWFueSBvZiB0aGUgbXVsdGlwbGljYXRpb25zIHRvIGJlIHBlcmZvcm1lZCB1c2luZyBwbGFpbiBDIGludGVnZXIKLSAgYXJpdGhtZXRpYyBpbnN0ZWFkIG9mIFB5TG9uZyBhcml0aG1ldGljLiAgQWxzbyB1c2VzIGEgbG9va3VwIHRhYmxlIGZvciBzbWFsbAotICBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzg2NzQ6IEZpeGVkIGEgbnVtYmVyIG9mIGluY29ycmVjdCBvciB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nCi0gIG92ZXJmbG93IGNoZWNrcyBpbiB0aGUgYXVkaW9vcCBtb2R1bGUuCi0KLS0gSXNzdWUgIzg2NDQ6IFRoZSBhY2N1cmFjeSBvZiB0ZC50b3RhbF9zZWNvbmRzKCkgaGFzIGJlZW4gaW1wcm92ZWQgKGJ5Ci0gIGNhbGN1bGF0aW5nIHdpdGggaW50ZWdlciBhcml0aG1ldGljIGluc3RlYWQgb2YgZmxvYXQgYXJpdGhtZXRpYyBpbnRlcm5hbGx5KToKLSAgdGhlIHJlc3VsdCBpcyBub3cgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLCBhbmQgaXMgZXF1aXZhbGVudCB0byBgYHRkIC8KLSAgdGltZWRlbHRhKHNlY29uZHM9MSlgYC4KLQotLSBJc3N1ZSAjMjcwNjogQWxsb3cgZGl2aXNpb24gb2YgYSB0aW1lZGVsdGEgYnkgYW5vdGhlciB0aW1lZGVsdGE6IHRpbWVkZWx0YSAvCi0gIHRpbWVkZWx0YSwgdGltZWRlbHRhICUgdGltZWRlbHRhLCB0aW1lZGVsdGEgLy8gdGltZWRlbHRhIGFuZCBkaXZtb2QodGltZWRlbHRhLAotICB0aW1lZGVsdGEpIGFyZSBhbGwgc3VwcG9ydGVkLgotCi0tIElzc3VlICM4MzE0OiBGaXggdW5zaWduZWQgbG9uZyBsb25nIGJ1ZyBpbiBsaWJmZmkgb24gU3BhcmMgdjguCi0KLS0gSXNzdWUgIzgzMDA6IFdoZW4gcGFzc2luZyBhIG5vbi1pbnRlZ2VyIGFyZ3VtZW50IHRvIHN0cnVjdC5wYWNrIHdpdGggYW55Ci0gIGludGVnZXIgZm9ybWF0IGNvZGUsIHN0cnVjdC5wYWNrIGZpcnN0IGF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIG5vbi1pbnRlZ2VyCi0gIHVzaW5nIGl0cyBfX2luZGV4X18gbWV0aG9kLiAgSWYgdGhhdCBtZXRob2QgaXMgbm9uLWV4aXN0ZW50IG9yIHJhaXNlcwotICBUeXBlRXJyb3IgaXQgZ29lcyBvbiB0byB0cnkgdGhlIF9faW50X18gbWV0aG9kLCBhcyBkZXNjcmliZWQgYmVsb3cuCi0KLS0gSXNzdWUgIzgxNDI6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC45IHJlbGVhc2UuCi0KLS0gSXNzdWUgIzY5NDk6IEFsbG93IHRoZSBfZGJtIGV4dGVuc2lvbiB0byBiZSBidWlsdCB3aXRoIGRiIDQuOC54LgotCi0tIElzc3VlICM2NTQ0OiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiB0aGUga3F1ZXVlIGltcGxlbWVudGF0aW9uJ3MgZXJyb3IKLSAgaGFuZGxpbmcuCi0KLS0gU3RvcCBwcm92aWRpbmcgY3J0YXNzZW0uaCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLCBhcwotICBtc3ZjcjEwMC5kbGwgaXMgbm90IGEgcGxhdGZvcm0gYXNzZW1ibHkgYW55bW9yZS4KLQotLSBJc3N1ZSAjNjUwODogQWRkIHBvc2l4LntnZXRyZXN1aWQsZ2V0cmVzZ2lkLHNldHJlc3VpZCxzZXRyZXNnaWR9LgotCi0tIElzc3VlICM3MDc4OiBTZXQgc3RydWN0Ll9fZG9jX18gZnJvbSBfc3RydWN0Ll9fZG9jX18uCi0KLS0gSXNzdWUgIzMzNjY6IEFkZCBlcmYsIGVyZmMsIGV4cG0xLCBnYW1tYSwgbGdhbW1hIGZ1bmN0aW9ucyB0byBtYXRoIG1vZHVsZS4KLQotLSBJc3N1ZSAjNjg3NzogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGxpbmsgdGhlIHJlYWRsaW5lIGV4dGVuc2lvbiB0byB0aGUgbGliZWRpdAotICByZWFkbGluZSBlbXVsYXRpb24gb24gT1NYIDEwLjUgb3IgbGF0ZXIuCi0KLS0gSXNzdWUgIzY4NDg6IEZpeCBjdXJzZXMgbW9kdWxlIGJ1aWxkIGZhaWx1cmUgb24gT1MgWCAxMC42LgotCi0tIEZpeCBhIHNlZ2ZhdWx0IHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGV4cGF0IHdpdGggc3BlY2lhbGx5IGZvcm1lZCBpbnB1dC4KLQotLSBJc3N1ZSAjNjU2MTogJ1xkJyBpbiBhIHJlZ2V4IG5vdyBtYXRjaGVzIG9ubHkgY2hhcmFjdGVycyB3aXRoIFVuaWNvZGUgY2F0ZWdvcnkKLSAgJ05kJyAoTnVtYmVyLCBEZWNpbWFsIERpZ2l0KS4gIFByZXZpb3VzbHkgaXQgYWxzbyBtYXRjaGVkIGNoYXJhY3RlcnMgd2l0aAotICBjYXRlZ29yeSAnTm8nLgotCi0tIElzc3VlICM0NTA5OiBBcnJheSBvYmplY3RzIGFyZSBubyBsb25nZXIgbW9kaWZpZWQgYWZ0ZXIgYW4gb3BlcmF0aW9uIGZhaWxpbmcKLSAgZHVlIHRvIHRoZSByZXNpemUgcmVzdHJpY3Rpb24gaW4tcGxhY2Ugd2hlbiB0aGUgb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzLgotCi0tIElzc3VlICMyMzg5OiBBcnJheSBvYmplY3RzIGFyZSBub3cgcGlja2xlZCBpbiBhIHBvcnRhYmxlIG1hbm5lci4KLQotLSBFeHBhdDogRml4IERvUyB2aWEgWE1MIGRvY3VtZW50IHdpdGggbWFsZm9ybWVkIFVURi04IHNlcXVlbmNlcwotICAoQ1ZFXzIwMDlfMzU2MCkuCi0KLS0gSXNzdWUgIzcyNDI6IE9uIFNvbGFyaXMgOSBhbmQgZWFybGllciBjYWxsaW5nIG9zLmZvcmsoKSBmcm9tIHdpdGhpbiBhIHRocmVhZAotICBjb3VsZCByYWlzZSBhbiBpbmNvcnJlY3QgUnVudGltZUVycm9yIGFib3V0IG5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jay4gIFRoZQotICBpbXBvcnQgbG9jayBpcyBub3cgcmVpbml0aWFsaXplZCBhZnRlciBmb3JrLgotCi0tIElzc3VlICM3OTk5OiBvcy5zZXRyZXVpZCgpIGFuZCBvcy5zZXRyZWdpZCgpIHdvdWxkIHJlZnVzZSB0byBhY2NlcHQgYSAtMQotICBwYXJhbWV0ZXIgb24gc29tZSBwbGF0Zm9ybXMgc3VjaCBhcyBPUyBYLgotCi0tIEJ1aWxkIHRoZSBvc3NhdWRpbyBleHRlbnNpb24gb24gR05VL2tGcmVlQlNELgotCi0tIElzc3VlICM3MzQ3OiB3aW5yZWc6IEFkZCBDcmVhdGVLZXlFeCBhbmQgRGVsZXRlS2V5RXgsIGFzIHdlbGwgYXMgZml4IGEgYnVnIGluCi0gIHRoZSByZXR1cm4gdmFsdWUgb2YgUXVlcnlSZWZsZWN0aW9uS2V5LgotCi0tIElzc3VlICM3NTY3OiBQeUN1cnNlc19zZXR1cHRlcm06IERvbid0IGNhbGwgYGBzZXR1cHRlcm1gYCB0d2ljZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gVXNlIE9wZW5TU0wgMS4wLjBhIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzkyODA6IE1ha2Ugc2hhcmVkaW5zdGFsbCBkZXBlbmQgb24gc2hhcmVkbW9kcy4KLQotLSBJc3N1ZSAjOTE4OTogTWFrZSBhIHVzZXItc3BlY2lmaWVkIENGTEFHUywgQ1BQRkxBR1MsIG9yIExERkxBR1Mgc2V0dGluZwotICBvdmVycmlkZSB0aGUgY29uZmlndXJlIGFuZCBtYWtlZmlsZSBkZWZhdWx0cywgd2l0aG91dCBkZWxldGluZyBvcHRpb25zIHRoZQotICB1c2VyIGRpZG4ndCBpbnRlbmQgdG8gb3ZlcnJpZGUuICBEZXZlbG9wZXJzIHNob3VsZCBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5Ci0gIE9QVCBvciBFWFRSQV9DRkxBR1MsIGFsdGhvdWdoIHRob3NlIHZhcmlhYmxlcyBhcmUgc3RpbGwgcHJlc2VudCBmb3IKLSAgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjODg1NDogRml4IGZpbmRpbmcgVmlzdWFsIFN0dWRpbyAyMDA4IG9uIFdpbmRvd3MgeDY0LgotCi0tIElzc3VlICMxNzU5MTY5LCAjODg2NDogRHJvcCBfWE9QRU5fU09VUkNFIG9uIFNvbGFyaXMsIGRlZmluZSBpdCBmb3IKLSAgbXVsdGlwcm9jZXNzaW5nIG9ubHkuCi0KLS0gSXNzdWUgIzg2MjU6IFR1cm4gb2ZmIG9wdGltaXphdGlvbiBpbiAtLXdpdGgtcHlkZWJ1ZyBidWlsZHMgd2l0aCBnY2MuCi0gIChPcHRpbWl6YXRpb24gd2FzIHVuaW50ZW50aW9uYWxseSB0dXJuZWQgb24gaW4gZ2NjIC0td2l0aC1weWRlYnVnIGJ1aWxkcyBhcyBhCi0gIHJlc3VsdCBvZiB0aGUgaXNzdWUgIzE2Mjg0ODQgZml4LCBjb21iaW5lZCB3aXRoIGF1dG9jb25mJ3Mgc3RyYW5nZSBjaG9pY2Ugb2YKLSAgZGVmYXVsdCBDRkxBR1MgcHJvZHVjZWQgYnkgQUNfUFJPR19DQyBmb3IgZ2NjLikKLQotLSBJc3N1ZSAjMzY0NjogSXQgaXMgbm93IGVhc2lseSBwb3NzaWJsZSB0byBpbnN0YWxsIGEgUHl0aG9uIGZyYW1ld29yayBpbnRvIHlvdXIKLSAgaG9tZSBkaXJlY3Rvcnkgb24gTWFjT1NYLCBzZWUgTWFjL1JFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotLSBJc3N1ZSAjMzkyODogb3MubWtub2QoKSBub3cgYXZhaWxhYmxlIGluIFNvbGFyaXMsIGFsc28uCi0KLS0gSXNzdWUgIzMzMjY6IEJ1aWxkIFB5dGhvbiB3aXRob3V0IC1mbm8tc3RyaWN0LWFsaWFzaW5nIHdoZW4gdGhlIGdjYyBkb2VzIG5vdAotICBnaXZlIGZhbHNlIHdhcm5pbmdzLgotCi0tIElzc3VlICMxNjI4NDg0OiBUaGUgTWFrZWZpbGUgZG9lc24ndCBpZ25vcmUgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQotICBhbnltb3JlLiAgSXQgYWxzbyBmb3J3YXJkcyB0aGUgTERGTEFHUyBzZXR0aW5ncyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgYQotICBzaGFyZWQgbGlicmFyeS4KLQotLSBJc3N1ZSAjNjcxNjogUXVvdGUgLXggYXJndW1lbnRzIG9mIGNvbXBpbGVhbGwgaW4gTVNJIGluc3RhbGxlci4gIEV4Y2x1ZGUgMnRvMwotICB0ZXN0cyBmcm9tIGNvbXBpbGVhbGwuCi0KLS0gSXNzdWUgIzM5MjAsICM3OTAzOiBEZWZpbmUgX0JTRF9TT1VSQ0Ugb24gT3BlbkJTRCA0LjQgdGhyb3VnaCA0LjkuCi0KLS0gSXNzdWUgIzc2MzI6IFdoZW4gUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSIGlzIGRlZmluZWQsIGRpc2FibGUgdGhlIHByaXZhdGUKLSAgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIGluIGR0b2EuYyBhbmQgdXNlIFB5TWVtX01hbGxvYyBhbmQgUHlNZW1fRnJlZQotICBpbnN0ZWFkLiAgQWxzbyBkaXNhYmxlIGNhY2hpbmcgb2YgcG93ZXJzIG9mIDUuCi0KLS0gSXNzdWUgIzY0OTE6IEFsbG93IC0td2l0aC1kYm1saWJvcmRlciB0byBzcGVjaWZ5IHRoYXQgbm8gZGJtcyB3aWxsIGJlIGJ1aWx0LgotCi0tIElzc3VlICM2OTQzOiBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIHRoZSBsaWJmZmkgaGVhZGVycyB3aGVuIHRoZQotICAtLXdpdGgtc3lzdGVtLWZmaSBmbGFnIGlzIHVzZWQuCi0KLS0gSXNzdWUgIzc2MDk6IEFkZCBhIC0td2l0aC1zeXN0ZW0tZXhwYXQgb3B0aW9uIHRoYXQgY2F1c2VzIHRoZSBzeXN0ZW0ncyBleHBhdAotICBsaWJyYXJ5IHRvIGJlIHVzZWQgZm9yIHRoZSBweWV4cGF0IG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW5jbHVkZWQgd2l0aAotICBQeXRob24uCi0KLS0gSXNzdWUgIzc1ODk6IE9ubHkgYnVpbGQgdGhlIG5pcyBtb2R1bGUgd2hlbiB0aGUgY29ycmVjdCBoZWFkZXIgZmlsZXMgYXJlCi0gIGZvdW5kLgotCi0tIFN3aXRjaCB0byBPcGVuU1NMIDAuOS44bCBhbmQgc3FsaXRlIDMuNi4yMSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM1NzkyOiBFeHRlbmQgdGhlIHNob3J0IGZsb2F0IHJlcHIgc3VwcG9ydCB0byB4ODYgc3lzdGVtcyB1c2luZwotICBpY2Mgb3Igc3VuY2MuCi0KLS0gSXNzdWUgIzY2MDM6IENoYW5nZSBSRUFEX1RJTUVTVEFNUCBtYWNybyBpbiBjZXZhbC5jIHNvIHRoYXQgaXQgY29tcGlsZXMKLSAgY29ycmVjdGx5IHVuZGVyIGdjYyBvbiB4ODYtNjQuICBUaGlzIGZpeGVzIGEgcmVwb3J0ZWQgcHJvYmxlbSB3aXRoIHRoZQotICAtLXdpdGgtdHNjIGJ1aWxkIG9uIHg4Ni02NC4KLQotLSBJc3N1ZSAjNjgwMjogRml4IGJ1aWxkIGlzc3VlcyBvbiBNYWNPU1ggMTAuNi4KLQotLSBJc3N1ZSAjNjI0NDogQWxsb3cgZGV0ZWN0X3RraW50ZXIgdG8gbG9vayBmb3IgVGNsL1RrIDguNi4KLQotLSBJc3N1ZSAjNDYwMTogJ21ha2UgaW5zdGFsbCcgZGlkIG5vdCBzZXQgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIG9uCi0gIGRpcmVjdG9yaWVzLgotCi0tIElzc3VlICM1MzkwOiBBZGQgdW5pbnN0YWxsIGljb24gaW5kZXBlbmRlbnQgb2Ygd2hldGhlciBmaWxlIGV4dGVuc2lvbnMgYXJlCi0gIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjNzU0MTogV2hlbiB1c2luZyBgYHB5dGhvbi1jb25maWdgYCB3aXRoIGEgZnJhbWV3b3JrIGluc3RhbGwgdGhlCi0gIGNvbXBpbGVyIG1pZ2h0IHVzZSB0aGUgd3JvbmcgbGlicmFyeS4KLQotLSBweXRob24tY29uZmlnIG5vdyBzdXBwb3J0cyBtdWx0aXBsZSBvcHRpb25zIG9uIHRoZSBzYW1lIGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjODUwOTogRml4IHF1b3RpbmcgaW4gaGVscCBzdHJpbmdzIGFuZCBjb2RlIHNuaXBwZXRzIGluIGNvbmZpZ3VyZS5pbi4KLQotLSBJc3N1ZSAjODUxMDogVXBkYXRlIHRvIGF1dG9jb25mMi42NS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5ODE3OiBBZGQgZXhwYXQgQ09QWUlORyBmaWxlOyBhZGQgZXhwYXQsIGxpYmZmaSBhbmQgZXhwYXQgbGljZW5zZXMKLSAgdG8gRG9jL2xpY2Vuc2UucnN0LgotCi0tIElzc3VlICM5NTI0OiBEb2N1bWVudCB0aGF0IHR3byBDVFJMKiBzaWduYWxzIGFyZSBtZWFudCBmb3IgdXNlIG9ubHkKLSAgd2l0aCBvcy5raWxsLgotCi0tIElzc3VlICM5MjU1OiBEb2N1bWVudCB0aGF0IHRoZSAndGVzdCcgcGFja2FnZSBpcyBtZWFudCBmb3IgaW50ZXJuYWwgUHl0aG9uIHVzZQotICBvbmx5LgotCi0tIEEgc21hbGwgV1NHSSBzZXJ2ZXIgd2FzIGFkZGVkIGFzIFRvb2xzL3NjcmlwdHMvc2VydmUucHksIGFuZCBpcyB1c2VkIHRvCi0gIGltcGxlbWVudCBhIGxvY2FsIGRvY3VtZW50YXRpb24gc2VydmVyIHZpYSAnbWFrZSBzZXJ2ZScgaW4gdGhlIGRvYyBkaXJlY3RvcnkuCi0KLS0gVXBkYXRpbmcgYFVzaW5nIFB5dGhvbmAgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIGRlc2NyaXB0aW9uIG9mIENQeXRob24ncyAtSgotICBhbmQgLVggb3B0aW9ucy4KLQotLSBEb2N1bWVudCB0aGF0IGltcG9ydGluZyBhIG1vZHVsZSB0aGF0IGhhcyBOb25lIGluIHN5cy5tb2R1bGVzIHRyaWdnZXJzIGFuCi0gIEltcG9ydEVycm9yLgotCi0tIElzc3VlICM2NTU2OiBGaXhlZCB0aGUgRGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9jYXRpb24gZXhwbGFuYXRpb24gZm9yCi0gIFdpbmRvd3MuCi0KLS0gVXBkYXRlIHB5dGhvbiBtYW51YWwgcGFnZSAob3B0aW9ucyAtQiwgLU8wLCAtcywgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFLCBQWVRIT05OT1VTRVJTSVRFKS4KLQotLSBJc3N1ZSAjODkwOTogQWRkZWQgdGhlIHNpemUgb2YgdGhlIGJpdG1hcCB1c2VkIGluIHRoZSBpbnN0YWxsZXIgY3JlYXRlZCBieQotICBkaXN0dXRpbHMnIGJkaXN0X3dpbmluc3QuIFBhdGNoIGJ5IEFuYXRvbHkgVGVjaHRvbmlrLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjOTI1MTogdGVzdF90aHJlYWRlZF9pbXBvcnQgZGlkbid0IGZhaWwgd2hlbiBydW4gdGhyb3VnaCByZWdydGVzdCBpZiB0aGUKLSAgaW1wb3J0IGxvY2sgd2FzIGRpc2FibGVkLgotCi0tIElzc3VlICM4NjA1OiBTa2lwIHRlc3RfZ2RiIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMuCi0KLS0gSXNzdWUgIzc0NDk6IFNraXAgdGVzdF9zb2NrZXRzZXJ2ZXIgaWYgdGhyZWFkaW5nIHN1cHBvcnQgaXMgZGlzYWJsZWQuCi0KLS0gSXNzdWUgIzg2NzI6IEFkZCBhIHpsaWIgdGVzdCBlbnN1cmluZyB0aGF0IGFuIGluY29tcGxldGUgc3RyZWFtIGNhbiBiZSBoYW5kbGVkCi0gIGJ5IGEgZGVjb21wcmVzc29yIG9iamVjdCB3aXRob3V0IGVycm9ycyAoaXQgcmV0dXJucyBpbmNvbXBsZXRlIHVuY29tcHJlc3NlZAotICBkYXRhKS4KLQotLSBJc3N1ZSAjODUzMzogcmVncnRlc3QgdXNlcyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIgZm9yIHN0ZG91dCB0byBhdm9pZAotICBVbmljb2RlRW5jb2RlRXJyb3IgKHdyaXRlIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdG8gc3Rkb3V0IHVzaW5nIEFTQ0lJIGVuY29kaW5nKS4KLQotLSBJc3N1ZSAjODU3NjogUmVtb3ZlIHVzZSBvZiBmaW5kX3VudXNlZF9wb3J0KCkgaW4gdGVzdF9zbXRwbGliIGFuZAotICB0ZXN0X211bHRpcHJvY2Vzc2luZy4gIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCi0KLS0gSXNzdWUgIzc0NDk6IEZpeCBtYW55IHRlc3RzIHRvIHN1cHBvcnQgUHl0aG9uIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkCi0gIHN1cHBvcnQuIFBhdGNoZXMgd3JpdHRlbiBieSBKZXJyeSBTZXV0dGVyLgotCi0tIElzc3VlICM4MTA4OiB0ZXN0X2Z0cGxpYidzIG5vbi1ibG9ja2luZyBTU0wgc2VydmVyIG5vdyBoYXMgcHJvcGVyIGhhbmRsaW5nIG9mCi0gIFNTTCBzaHV0ZG93bnMuCi0KLS0gSXNzdWVzICM4Mjc5LCAjODMzMCwgIzg0MzcsICM4NDgwLCAjODQ5NTogRml4IHRlc3RfZ2RiIGZhaWx1cmVzLCBwYXRjaCB3cml0dGVuCi0gIGJ5IERhdmUgTWFsY29sbS4KLQotLSBJc3N1ZSAjMzg2NDogU2tpcCB0aHJlZSB0ZXN0X3NpZ25hbCB0ZXN0cyBvbiBmcmVlYnNkNiBiZWNhdXNlIHRoZXkgZmFpbCBpZiBhbnkKLSAgdGhyZWFkIHdhcyBwcmV2aW91c2x5IHN0YXJ0ZWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBhIHBsYXRmb3JtIGJ1Zy4KLQotLSBJc3N1ZSAjODE5MzogRml4IHRlc3RfemxpYiBmYWlsdXJlIHdpdGggemxpYiAxLjIuNC4KLQotLSBJc3N1ZSAjODI0ODogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBib29sIHR5cGUuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCi0KLS0gSXNzdWUgIzgyNjM6IE5vdyByZWdydGVzdC5weSB3aWxsIHJlcG9ydCBhIGZhaWx1cmUgaWYgaXQgcmVjZWl2ZXMgYQotICBLZXlib2FyZEludGVycnVwdCAoU0lHSU5UKS4KLQotLSBJc3N1ZSAjODE4MCBhbmQgIzgyMDc6IEZpeCB0ZXN0X3BlcDI3NyBvbiBPUyBYIGFuZCBhZGQgbW9yZSB0ZXN0cyBmb3Igc3BlY2lhbAotICBVbmljb2RlIG5vcm1hbGl6YXRpb24gY2FzZXMuCi0KLS0gSXNzdWUgIzc3ODM6IHRlc3Quc3VwcG9ydC5vcGVuX3VybHJlc291cmNlIGludmFsaWRhdGVzIHRoZSBvdXRkYXRlZCBmaWxlcyBmcm9tCi0gIHRoZSBsb2NhbCBjYWNoZS4KLQotLSBJc3N1ZSAjNzg0OTogTm93IHRoZSB1dGlsaXR5IGBgY2hlY2tfd2FybmluZ3NgYCB2ZXJpZmllcyBpZiB0aGUgd2FybmluZ3MgYXJlCi0gIGVmZmVjdGl2ZWx5IHJhaXNlZC4KLQotLSBUaGUgZm91ciBwYXRoIG1vZHVsZXMgKGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGgsIHBvc2l4cGF0aCkgc2hhcmUgYSBjb21tb24KLSAgVGVzdENhc2UgZm9yIHNvbWUgdGVzdHM6IHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdC4KLQotLSBQcmludCBwbGF0Zm9ybSBpbmZvcm1hdGlvbiB3aGVuIHJ1bm5pbmcgdGhlIHdob2xlIHRlc3Qgc3VpdGUsIG9yIHVzaW5nIHRoZQotICAtLXZlcmJvc2UgZmxhZy4KLQotLSBJc3N1ZSAjNzY3Njc1OiBlbmFibGUgdGVzdF9wZXAyNzcgb24gUE9TSVggcGxhdGZvcm1zIHdpdGggVW5pY29kZS1mcmllbmRseQotICBmaWxlc3lzdGVtIGVuY29kaW5nLgotCi0tIElzc3VlICM2MjkyOiBmb3IgdGhlIG1vbWVudCBhdCBsZWFzdCwgdGhlIHRlc3Qgc3VpdGUgcnVucyBjbGVhbmx5IGlmIHB5dGhvbiBpcwotICBydW4gd2l0aCB0aGUgLU9PIGZsYWcuICBUZXN0cyByZXF1aXJpbmcgZG9jc3RyaW5ncyBhcmUgc2tpcHBlZC4KLQotLSBJc3N1ZSAjNzcxMjogdGVzdC5zdXBwb3J0IGdhaW5lZCBhIG5ldyBgdGVtcF9jd2RgIGNvbnRleHQgbWFuYWdlciB3aGljaCBpcyBub3cKLSAgYWxzbyB1c2VkIGJ5IHJlZ3J0ZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoZQotICBvcmlnaW5hbCBDV0QgaXMgc2F2ZWQgaW4gYHN1cHBvcnQuU0FWRURDV0RgLiAgVGhhbmtzIHRvIEZsb3JlbnQgWGljbHVuYSB3aG8KLSAgaGVscGVkIHdpdGggdGhlIHBhdGNoLgotCi0tIElzc3VlICM3OTI0OiBGaXggYW4gaW50ZXJtaXR0ZW50ICdYWFggdW5kZXRlY3RlZCBlcnJvcicgZmFpbHVyZSBpbiB0ZXN0X2NhcGkKLSAgKG9ubHkgc2VlbiBzbyBmYXIgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjdXJzZXMgbW9kdWxlIHdhc24ndCBidWlsdCksIGR1ZSB0bwotICBhbiB1bmNsZWFyZWQgZXhjZXB0aW9uLgotCi0tIElzc3VlICM3NzI4OiB0ZXN0X3RpbWVvdXQgd2FzIGNoYW5nZWQgdG8gdXNlIHN1cHBvcnQuYmluZF9wb3J0IGluc3RlYWQgb2YgYQotICBoYXJkIGNvZGVkIHBvcnQuCi0KLS0gSXNzdWUgIzczNzY6IEluc3RlYWQgb2YgcnVubmluZyBhIHNlbGYtdGVzdCAod2hpY2ggd2FzIGZhaWxpbmcpIHdoZW4gY2FsbGVkCi0gIHdpdGggbm8gYXJndW1lbnRzLCBkb2N0ZXN0LnB5IG5vdyBnaXZlcyBhIHVzYWdlIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzczOTY6IGZpeCByZWdydGVzdCAtcywgd2hpY2ggd2FzIGJyb2tlbiBieSB0aGUgLWogZW5oYW5jZW1lbnQuCi0KLS0gSXNzdWUgIzc0OTg6IHRlc3RfbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIHRlc3Quc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0Ci0gIGluc3RlYWQgb2YgYSBoYXJkY29kZWQgcG9ydCBudW1iZXIgaW4gdGVzdF9yYXBpZF9yZXN0YXJ0LgotCi0tIElzc3VlICM3NDMxOiBVc2UgVEVTVEZOIGluIHRlc3RfbGluZWNhY2hlIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGNyZWF0ZSBhIGZpbGUKLSAgaW4gdGhlIExpYi90ZXN0IGRpcmVjdG9yeSwgd2hpY2ggbWlnaHQgYmUgcmVhZC1vbmx5IGZvciB0aGUgdXNlciBydW5uaW5nIHRoZQotICB0ZXN0cy4KLQotLSBJc3N1ZSAjNzMyNDogQWRkIGEgc2FuaXR5IGNoZWNrIHRvIHJlZ3J0ZXN0IGFyZ3VtZW50IHBhcnNpbmcgdG8gY2F0Y2ggdGhlIGNhc2UKLSAgb2YgYW4gb3B0aW9uIHdpdGggbm8gaGFuZGxlci4KLQotLSBJc3N1ZSAjNzMxMjogQWRkIGEgLUYgZmxhZyB0byBydW4gdGhlIHNlbGVjdGVkIHRlc3RzIGluIGEgbG9vcCB1bnRpbCBhIHRlc3QKLSAgZmFpbHMuICBDYW4gYmUgY29tYmluZWQgd2l0aCAtai4KLQotLSBJc3N1ZSAjNjU1MTogdGVzdF96aXBpbXBvcnQgY291bGQgaW1wb3J0IGFuZCB0aGVuIGRlc3Ryb3kgc29tZSBtb2R1bGVzIG9mIHRoZQotICBlbmNvZGluZ3MgcGFja2FnZSwgd2hpY2ggd291bGQgbWFrZSBvdGhlciB0ZXN0cyBmYWlsIGZ1cnRoZXIgZG93biB0aGUgcm9hZAotICBiZWNhdXNlIHRoZSBpbnRlcm5hbGx5IGNhY2hlZCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgd291bGQgcG9pbnQgdG8gZW1wdHkKLSAgZ2xvYmFsIHZhcmlhYmxlcy4KLQotLSBJc3N1ZSAjNzI5NTogRG8gbm90IHVzZSBhIGhhcmRjb2RlZCBmaWxlIG5hbWUgaW4gdGVzdF90YXJmaWxlLgotCi0tIElzc3VlICM3MjcwOiBBZGQgc29tZSBkZWRpY2F0ZWQgdW5pdCB0ZXN0cyBmb3IgbXVsdGktdGhyZWFkIHN5bmNocm9uaXphdGlvbgotICBwcmltaXRpdmVzIHN1Y2ggYXMgTG9jaywgUkxvY2ssIENvbmRpdGlvbiwgRXZlbnQgYW5kIFNlbWFwaG9yZS4KLQotLSBJc3N1ZSAjNzI0OCAocGFydCAyKTogVXNlIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGltcG9ydGxpYiBzb3VyY2UKLSAgdGVzdHMgaW5zdGVhZCBvZiB0ZW1wZmlsZS50ZW1wZGlyLiBUaGlzIHByZXZlbnRzIHRoZSB0ZXN0cyBmcm9tIHNoYXJpbmcgc3RhdGUKLSAgYmV0d2VlbiBjb25jdXJyZW50IGV4ZWN1dGlvbnMgb24gdGhlIHNhbWUgc3lzdGVtLgotCi0tIElzc3VlICM3MjQ4OiBJbiBpbXBvcnRsaWIudGVzdC5zb3VyY2UudXRpbCBhIHRyeS9maW5hbGx5IGJsb2NrIGRpZCBub3QgbWFrZQotICBzdXJlIHRoYXQgc29tZSByZWZlcmVuY2VkIG9iamVjdHMgYWN0dWFsbHkgd2VyZSBjcmVhdGVkIGluIHRoZSBibG9jayBiZWZvcmUKLSAgY2FsbGluZyBtZXRob2RzIG9uIHRoZSBvYmplY3QuCi0KLS0gSXNzdWUgIzcyMjI6IE1ha2UgdGhyZWFkICJyZWFwaW5nIiBtb3JlIHJlbGlhYmxlIHNvIHRoYXQgcmVmZXJlbmNlCi0gIGxlYWstY2hhc2luZyB0ZXN0IHJ1bnMgZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiBUaGUgcHJldmlvdXMgbWV0aG9kIG9mIHJlYXBpbmcKLSAgdGhyZWFkcyBjb3VsZCByZXR1cm4gc3VjY2Vzc2Z1bGx5IHdoaWxlIHNvbWUgVGhyZWFkIG9iamVjdHMgd2VyZSBzdGlsbAotICByZWZlcmVuY2VkLiBUaGlzIGFsc28gaW50cm9kdWNlcyBhIG5ldyBwcml2YXRlIGZ1bmN0aW9uOgotICA6ZnVuYzpgX3RocmVhZC5fY291bnQoKWAuCi0KLS0gSXNzdWUgIzcxNTE6IEZpeGVkIHJlZ3J0ZXN0IC1qIHNvIHRoYXQgb3V0cHV0IHRvIHN0ZGVyciBmcm9tIGEgdGVzdCBubyBsb25nZXIKLSAgcnVucyB0aGUgcmlzayBvZiBjYXVzaW5nIHRoZSB3b3JrZXIgdGhyZWFkIHRvIGZhaWwuCi0KLS0gSXNzdWUgIzcwNTU6IHRlc3RfX19hbGxfXyBub3cgZ3JlZWRpbHkgZGV0ZWN0cyBhbGwgbW9kdWxlcyB3aGljaCBoYXZlIGFuCi0gIF9fYWxsX18gYXR0cmlidXRlLCByYXRoZXIgdGhhbiB1c2luZyBhIGhhcmRjb2RlZCBhbmQgaW5jb21wbGV0ZSBsaXN0LgotCi0tIElzc3VlICM3MDU4OiBBZGRlZCBzYXZlL3Jlc3RvcmUgZm9yIHRoaW5ncyBsaWtlIHN5cy5hcmd2IGFuZCBjd2QgdG8KLSAgcnVudGVzdF9pbm5lciBpbiByZWdydGVzdCwgd2l0aCB3YXJuaW5ncyBpZiB0aGUgY2FsbGVkIHRlc3QgbW9kaWZpZXMgdGhlbSwgYW5kCi0gIGEgbmV3IHNlY3Rpb24gaW4gdGhlIHN1bW1hcnkgcmVwb3J0IGF0IHRoZSBlbmQuCi0KLS0gSXNzdWUgIzcwNDI6IEZpeCB0ZXN0X3NpZ25hbCAodGVzdF9pdGltZXJfdmlydHVhbCkgZmFpbHVyZSBvbiBPUyBYIDEwLjYuCi0KLS0gRml4ZWQgdGVzdHMgaW4gaW1wb3J0bGliLnRlc3Quc291cmNlLnRlc3RfYWJjX2xvYWRlciB0aGF0IHdlcmUgbWFza2luZyB0aGUKLSAgcHJvcGVyIGV4Y2VwdGlvbnMgdGhhdCBzaG91bGQgYmUgcmFpc2VkIGZvciBtaXNzaW5nIG9yIGltcHJvcGVyIGNvZGUgb2JqZWN0Ci0gIGJ5dGVjb2RlLgotCi0tIFJlbW92ZWQgaW1wb3J0bGliJ3MgY3VzdG9tIHRlc3QgZGlzY292ZXJ5IGNvZGUgYW5kIHN3aXRjaGVkIHRvCi0gIHVuaXR0ZXN0LlRlc3RMb2FkZXIuZGlzY292ZXIoKS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzU0NjQsICM4OTc0OiBJbXBsZW1lbnQgcGx1cmFsIGZvcm1zIGluIG1zZ2ZtdC5weS4KLQotLSBpb2JlbmNoIChhIGZpbGUgSS9PIGJlbmNobWFyaykgYW5kIGNjYmVuY2ggKGEgY29uY3VycmVuY3kgYmVuY2htYXJrKSB3ZXJlCi0gIGFkZGVkIHRvIHRoZSBgVG9vbHMvYCBkaXJlY3RvcnkuICBUaGV5IHdlcmUgcHJldmlvdXNseSBsaXZpbmcgaW4gdGhlIHNhbmRib3guCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyNy1KdW5lLTIwMDkqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2MzM0OiBGaXggYnVnIGluIHJhbmdlIGxlbmd0aCBjYWxjdWxhdGlvbiBmb3IgcmFuZ2VzIHdpdGgKLSAgbGFyZ2UgYXJndW1lbnRzLgotCi0tIElzc3VlICM2MzI5OiBGaXhlZCBpdGVyYXRpb24gZm9yIG1lbW9yeXZpZXcgb2JqZWN0cyAoaXQgd2FzIGJlaW5nIGJsb2NrZWQKLSAgYmVjYXVzZSBpdCB3YXNuJ3QgcmVjb2duaXplZCBhcyBhIHNlcXVlbmNlKS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM2MTI2OiBGaXhlZCBwZGIgY29tbWFuZC1saW5lIHVzYWdlLgotCi0tIElzc3VlICM2MzE0OiBsb2dnaW5nOiBwZXJmb3JtcyBleHRyYSBjaGVja3Mgb24gdGhlICJsZXZlbCIgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzYyNzQ6IEZpeGVkIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgbGVhayBpbiBzdWJwcm9jZXNzLnB5Ci0KLS0gQWNjZXNzaW5nIGlvLlN0cmluZ0lPLmJ1ZmZlciBub3cgcmFpc2VzIGFuIEF0dHJpYnV0ZUVycm9yIGluc3RlYWQgb2YKLSAgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24uCi0KLS0gSXNzdWUgIzYyNzE6IG1tYXAgdHJpZWQgdG8gY2xvc2UgaW52YWxpZCBmaWxlIGhhbmRsZSAoLTEpIHdoZW4gYW5vbnltb3VzLgotICAoT24gVW5peCkKLQotLSBJc3N1ZSAjMTIwMjogemlwZmlsZSBtb2R1bGUgd291bGQgY2F1c2UgYSBzdHJ1Y3QuZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvCi0gIHN0b3JlIGZpbGVzIHdpdGggYSBDUkMzMiA+IDIqKjMxLTEuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1NTkwOiBSZW1vdmUgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBpbiBweWV4cGF0IGV4dGVuc2lvbi4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgUmVsZWFzZSBDYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMy1KdW5lLTIwMDkqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEZpeGVkIFN5c3RlbUVycm9yIHRyaWdnZXJlZCBieSAicmFuZ2UoW10sIDEsIC0xKSIuCi0KLS0gSXNzdWUgIzU5MjQ6IE9uIFdpbmRvd3MsIGEgbGFyZ2UgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAobW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzKSB3b3VsZCBiZSBjb21wbGV0ZWx5IGlnbm9yZWQuCi0KLS0gSXNzdWUgIzQ1NDc6IFdoZW4gZGVidWdnaW5nIGEgdmVyeSBsYXJnZSBmdW5jdGlvbiwgaXQgd2FzIG5vdCBhbHdheXMKLSAgcG9zc2libGUgdG8gdXBkYXRlIHRoZSBsaW5lbm8gYXR0cmlidXRlIG9mIHRoZSBjdXJyZW50IGZyYW1lLgotCi0tIElzc3VlICM1MzMwOiBDIGZ1bmN0aW9ucyBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyB3ZXJlIG5vdCByZXBvcnRlZCBieQotICB0aGUgdmFyaW91cyBwcm9maWxpbmcgbW9kdWxlcyAocHJvZmlsZSwgY1Byb2ZpbGUpLiBQYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzY0Mzg6IEZpeGVkIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIuZ2V0X3ZlcnNpb25zIDogdGhlIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbiBzdHJpbmcgcGF0dGVybiB3YXMgdHJ5aW5nIHRvIG1hdGNoIGFnYWluc3QgYSBieXRlcyByZXR1cm5lZCBieQotICBQb3Blbi4gVGVzdGVkIHVuZGVyIHdpbjMyIHRvIGJ1aWxkIHRoZSBweS1wb3N0Z3Jlc3FsIHByb2plY3QuCi0KLS0gSXNzdWUgIzYyNTg6IFN1cHBvcnQgQU1ENjQgaW4gYmRpc3RfbXNpLgotCi0tIElzc3VlICM2MTk1OiBmaXhlZCBkb2N0ZXN0IHRvIG5vIGxvbmdlciB0cnkgdG8gcmVhZCAnc291cmNlJyBkYXRhIGZyb20KLSAgYmluYXJ5IGZpbGVzLgotCi0tIElzc3VlICM1MjYyOiBGaXhlZCBidWcgaW4gbmV4dCByb2xsb3ZlciB0aW1lIGNvbXB1dGF0aW9uIGluCi0gIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlci4KLQotLSBJc3N1ZSAjNjIxNzogVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgaW8uVGV4dElPV3JhcHBlciBkaWRuJ3QgaW5jbHVkZSB0aGUKLSAgZXJyb3JzIHByb3BlcnR5LiAgQWRkaXRpb25hbGx5LCB0aGUgZXJyb3JzIGFuZCBlbmNvZGluZyBwcm9wZXJ0aWVzIG9mIFN0cmluZ0lPCi0gIGFyZSBhbHdheXMgTm9uZSBub3cuCi0KLS0gSXNzdWUgIzYxMzc6IFRoZSBwaWNrbGUgbW9kdWxlIG5vdyB0cmFuc2xhdGVzIG1vZHVsZSBuYW1lcyB3aGVuIGxvYWRpbmcKLSAgb3IgZHVtcGluZyBwaWNrbGVzIHdpdGggYSAyLngtY29tcGF0aWJsZSBwcm90b2NvbCwgaW4gb3JkZXIgdG8gbWFrZSBkYXRhCi0gIHNoYXJpbmcgYW5kIG1pZ3JhdGlvbiBlYXNpZXIuIFRoaXMgYmVoYXZpb3VyIGNhbiBiZSBkaXNhYmxlZCB1c2luZyB0aGUKLSAgbmV3IGBmaXhfaW1wb3J0c2Agb3B0aW9uYWwgYXJndW1lbnQuCi0KLS0gUmVtb3ZlZCB0aGUgaXBhZGRyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMzYxMzogYmFzZTY0LntlbmNvZGUsZGVjb2RlfXN0cmluZyBhcmUgbm93IGNhbGxlZAotICBiYXNlNjQue2VuY29kZSxkZWNvZGV9Ynl0ZXMgd2hpY2ggcmVmbGVjdHMgd2hhdCB0eXBlIHRoZXkgYWNjZXB0IGFuZCByZXR1cm4uCi0gIFRoZSBvbGQgbmFtZXMgYXJlIHN0aWxsIHRoZXJlIGFzIGRlcHJlY2F0ZWQgYWxpYXNlcy4KLQotLSBJc3N1ZSAjNTc2NzogUmVtb3ZlIHNnbWxvcCBzdXBwb3J0IGZyb20geG1scnBjLmNsaWVudC4KLQotLSBJc3N1ZSAjNjE1MDogRml4IHRlc3RfdW5pY29kZSBvbiB3aWRlLXVuaWNvZGUgYnVpbGRzLgotCi0tIElzc3VlICM2MTQ5OiBGaXggaW5pdGlhbGl6YXRpb24gb2YgV2Vha1ZhbHVlRGljdGlvbmFyeSBvYmplY3RzIGZyb20gbm9uLWVtcHR5Ci0gIHBhcmFtZXRlcnMuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjIyMTogRGVsZXRlIHRlc3QgcmVnaXN0cnkga2V5IGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0LgotCi0tIElzc3VlICM2MTU4OiBQYWNrYWdlIFNpbmUtMTAwMEh6LTMwMG1zLmFpZiBpbiBNU0kgZmlsZS4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzU3MzU6IFB5dGhvbiBjb21waWxlZCB3aXRoIC0td2l0aC1weWRlYnVnIHNob3VsZCB0aHJvdyBhbgotICBJbXBvcnRFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgbW9kdWxlcyBjb21waWxlZCB3aXRob3V0Ci0gIC0td2l0aC1weWRlYnVnLCBhbmQgdmljZS12ZXJzYS4KLQotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjE1NDogTWFrZSBzdXJlIHRoZSBpbnRsIGxpYnJhcnkgaXMgYWRkZWQgdG8gTElCUyBpZiBuZWVkZWQuIEFsc28KLSAgYWRkZWQgTElCUyB0byBPUyBYIGZyYW1ld29yayBidWlsZHMuCi0KLS0gSXNzdWUgIzU4MDk6IFNwZWNpZnlpbmcgYm90aCAtLWVuYWJsZS1mcmFtZXdvcmsgYW5kIC0tZW5hYmxlLXNoYXJlZCBpcwotICBhbiBlcnJvci4gQ29uZmlndXJlIG5vdyBleHBsaWNpdHkgdGVsbHMgeW91IGFib3V0IHRoaXMuCi0KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDA5LTA1LTMwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjA5NzogRXNjYXBlIFVURi04IHN1cnJvZ2F0ZXMgcmVzdWx0aW5nIGZyb20gbWJzdG9jcyBjb252ZXJzaW9uCi0gIG9mIHRoZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzYwMTI6IEFkZCBjbGVhbnVwIHN1cHBvcnQgdG8gTyYgYXJndW1lbnQgcGFyc2luZy4KLQotLSBJc3N1ZSAjNjA4OTogRml4ZWQgc3RyLmZvcm1hdCB3aXRoIGNlcnRhaW4gaW52YWxpZCBmaWVsZCBzcGVjaWZpZXJzCi0gIHRoYXQgd291bGQgcmFpc2UgU3lzdGVtRXJyb3IuCi0KLS0gSXNzdWUgIzU5ODI6IHN0YXRpY21ldGhvZCBhbmQgY2xhc3NtZXRob2Qgbm93IGV4cG9zZSB0aGUgd3JhcHBlZAotICBmdW5jdGlvbiB3aXRoIF9fZnVuY19fLgotCi0tIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgbWFuYWdlcnMgaW4gdGhlIHNhbWUgd2l0aC1zdGF0ZW1lbnQuCi0gIERlcHJlY2F0ZWQgY29udGV4dGxpYi5uZXN0ZWQoKSB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkLgotCi0tIElzc3VlICM1ODI5OiBjb21wbGV4KCIxZTUwMCIpIG5vIGxvbmdlciByYWlzZXMgT3ZlcmZsb3dFcnJvci4gIFRoaXMKLSAgbWFrZXMgaXQgY29uc2lzdGVudCB3aXRoIGZsb2F0KCIxZTUwMCIpIGFuZCBpbnRlcnByZXRhdGlvbiBvZiByZWFsCi0gIGFuZCBpbWFnaW5hcnkgbGl0ZXJhbHMuCi0KLS0gSXNzdWUgIzM1Mjc6IFJlbW92ZWQgUHlfV0lOX1dJREVfRklMRU5BTUVTIHdoaWNoIGlzIG5vdCB1c2VkIGFueSBtb3JlLgotCi0tIElzc3VlICM1OTk0OiB0aGUgbWFyc2hhbCBtb2R1bGUgbm93IGhhcyBkb2NzdHJpbmdzLgotCi0tIElzc3VlICM1OTgxOiBGaXggdGhyZWUgbWlub3IgaW5mL25hbiBpc3N1ZXMgaW4gZmxvYXQuZnJvbWhleDoKLSAgKDEpIGluZiBhbmQgbmFuIHN0cmluZ3Mgd2l0aCB0cmFpbGluZyB3aGl0ZXNwYWNlIHdlcmUgaW5jb3JyZWN0bHkKLSAgcmVqZWN0ZWQ7ICAoMikgcGFyc2luZyBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyBpbmZpbml0aWVzIGFuZCBuYW5zCi0gIHdhcyBsb2NhbGUgYXdhcmU7IGFuZCAoMykgdGhlIGludGVycHJldGF0aW9uIG9mIGZyb21oZXgoJy1uYW4nKQotICBkaWRuJ3QgbWF0Y2ggdGhhdCBvZiBmbG9hdCgnLW5hbicpLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzQ4NTk6IEltcGxlbWVudCBQRVAgMzgzIGZvciBwd2QsIHNwd2QsIGFuZCBncnAuCi0KLS0gc210cGxpYiAnbG9naW4nIGFuZCAnY3JhbS1tZDUnIGxvZ2luIGFyZSBhbHNvIGZpeGVkIChzZWUgSXNzdWUgIzUyNTkpLgotCi0tIElzc3VlICM2MTIxOiBweWRvYyBub3cgaWdub3JlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgaW4gdGhlCi0gIGFyZ3VtZW50IHRvIHRoZSAnaGVscCcgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzYxMTg6IHVybGxpYi5wYXJzZS5xdW90ZV9wbHVzIGlnbm9yZWQgdGhlIGVuY29kaW5nIGFuZCBlcnJvcnMKLSAgYXJndW1lbnRzIGZvciBzdHJpbmdzIHdpdGggYSBzcGFjZSBpbiB0aGVtLgotCi0tIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSB3YXMgbm90IHdvcmtpbmcgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkCi0gIG5hbWVzOiAgY2xzLCBzZWxmLCB0dXBsZSwgaXRlbWdldHRlciwgYW5kIHByb3BlcnR5LgotCi0tIEluIHVuaXR0ZXN0LCB1c2luZyBhIHNraXBwaW5nIGRlY29yYXRvciBvbiBhIGNsYXNzIGlzIG5vdyBlcXVpdmFsZW50IHRvCi0gIHNraXBwaW5nIGV2ZXJ5IHRlc3Qgb24gdGhlIGNsYXNzLiAgVGhlIENsYXNzVGVzdFN1aXRlIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzYwNTA6IERvbid0IGZhaWwgZXh0cmFjdGluZyBhIGRpcmVjdG9yeSBmcm9tIGEgemlwZmlsZSBpZgotICB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLgotCi0tIElzc3VlICMxMzA5MzUyOiBmY250bCBub3cgY29udmVydHMgaXRzIHRoaXJkIGFyZ3VtZW50cyB0byBhIEMgYGxvbmdgIHJhdGhlcgotICB0aGFuIGFuIGludCwgd2hpY2ggbWFrZXMgc29tZSBvcGVyYXRpb25zIHBvc3NpYmxlIHVuZGVyIDY0LWJpdCBMaW51eCAoZS5nLgotICBETl9NVUxUSVNIT1Qgd2l0aCBGX05PVElGWSkuCi0KLS0gSXNzdWUgIzU3NjE6IEFkZCB0aGUgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBmaWxlIHRvIHRoZSByZXByKCkgb2YgdmFyaW91cwotICBJTyBvYmplY3RzLgotCi0tIElzc3VlICM1MjU5OiBzbXRwbGliIHBsYWluIGF1dGggbG9naW4gbm8gbG9uZ2VyIGdpdmVzIGEgdHJhY2ViYWNrLiAgRml4Ci0gIGJ5IE11c2FzaGkgVGFtdXJhLCB0ZXN0cyBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIElzc3VlICMxOTgzOiBGaXggZnVuY3Rpb25zIHRha2luZyBvciByZXR1cm5pbmcgYSBwcm9jZXNzIGlkZW50aWZpZXIgdG8gdXNlCi0gIHRoZSBkZWRpY2F0ZWQgQyB0eXBlIGBgcGlkX3RgYCBpbnN0ZWFkIG9mIGEgQyBgYGludGBgLiBTb21lIHBsYXRmb3JtcyBoYXZlCi0gIGEgcHJvY2VzcyBpZGVudGlmaWVyIHR5cGUgd2lkZXIgdGhhbiB0aGUgc3RhbmRhcmQgQyBpbnRlZ2VyIHR5cGUuCi0KLS0gSXNzdWUgIzQwNjY6IHNtdHBsaWIuU01UUF9TU0wuX2dldF9zb2NrZXQgbm93IGNvcnJlY3RseSByZXR1cm5zIHRoZSBzb2NrZXQuCi0gIFBhdGNoIGJ5IEZhcmhhbiBBaG1hZCwgdGVzdCBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIElzc3VlICMyMTE2OiBXZWFrIHJlZmVyZW5jZXMgYW5kIHdlYWsgZGljdGlvbmFyaWVzIG5vdyBzdXBwb3J0IGNvcHkoKWluZyBhbmQKLSAgZGVlcGNvcHkoKWluZy4KLQotLSBJc3N1ZSAjMTY1NTogTWFrZSBpbWFwbGliIElQdjYtY2FwYWJsZS4gUGF0Y2ggYnkgRGVyZWsgTW9yci4KLQotLSBJc3N1ZSAjNTkxODogRml4IGEgY3Jhc2ggaW4gdGhlIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2NjQ6IE1ha2Ugbm50cGxpYiBJUHY2LWNhcGFibGUuIFBhdGNoIGJ5IERlcmVrIE1vcnIuCi0KLS0gSXNzdWUgIzUwMDY6IEJldHRlciBoYW5kbGluZyBvZiB1bmljb2RlIGJ5dGUtb3JkZXIgbWFya3MgKEJPTSkgaW4gdGhlIGlvCi0gIGxpYnJhcnkuIFRoaXMgbWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IG9wZW5pbmcgYW4gVVRGLTE2IHRleHQgZmlsZSBpbgotICBhcHBlbmQgbW9kZSBkb2Vzbid0IGFkZCBhIEJPTSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIHRoZSBmaWxlIGlzbid0Ci0gIGVtcHR5LgotCi0tIElzc3VlICM0MDUwOiBpbnNwZWN0LmZpbmRzb3VyY2UvZ2V0c291cmNlIG5vdyByYWlzZSBhbiBJT0Vycm9yIGlmIHRoZSAnc291cmNlJwotICBmaWxlIGlzIGEgYmluYXJ5LiAgUGF0Y2ggYnkgQnJvZGllIFJhbywgdGVzdHMgYnkgRGFuaWVsIERpbml6LiAgVGhpcyBmaXgKLSAgY29ycmVjdHMgYSBweWRvYyByZWdyZXNzaW9uLgotCi0tIElzc3VlICM1OTU1OiBhaWZjJ3MgY2xvc2UgbWV0aG9kIGRpZCBub3QgY2xvc2UgdGhlIGZpbGUgaXQgd3JhcHBlZCwKLSAgbm93IGl0IGRvZXMuICBUaGlzIGFsc28gbWVhbnMgZ2V0ZnAgbWV0aG9kIG5vdyByZXR1cm5zIHRoZSByZWFsIGZwLgotCi1JbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2MDQ3OiBmdWxsaW5zdGFsbCBoYXMgYmVlbiByZW1vdmVkIGJlY2F1c2UgUHl0aG9uIDMncyBleGVjdXRhYmxlIHdpbGwKLSAgbm93IGJlIGtub3duIGFzIHB5dGhvbjMuCi0KLS0gTGliL3NtdHBkLnB5IGlzIG5vIGxvbmdlciBpbnN0YWxsZWQgYXMgYSBzY3JpcHQuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMzMDYxOiBVc2Ugd2NzZnRpbWUgZm9yIHRpbWUuc3RyZnRpbWUgd2hlcmUgYXZhaWxhYmxlLgotCi0tIElzc3VlICM0ODczOiBGaXggcmVzb3VyY2UgbGVha3MgaW4gZXJyb3IgY2FzZXMgb2YgcHdkIGFuZCBncnAuCi0KLS0gSXNzdWUgIzYwOTM6IEZpeCBvZmYtYnktb25lIGVycm9yIGluIGxvY2FsZS5zdHJ4ZnJtLgotCi0tIFRoZSBfZnVuY3Rvb2xzIGFuZCBfbG9jYWxlIG1vZHVsZXMgYXJlIG5vdyBidWlsdCBpbnRvIHRoZSBsaWJweXRob24gc2hhcmVkCi0gIGxpYnJhcnkgaW5zdGVhZCBvZiBhcyBleHRlbnNpb24gbW9kdWxlcy4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzM1ODU6IEFkZCBwa2ctY29uZmlnIHN1cHBvcnQuIEl0IGNyZWF0ZXMgYSBweXRob24tMi43LnBjIGZpbGUKLSAgYW5kIGEgcHl0aG9uMy5wYyBzeW1saW5rIGluIHRoZSAkKExJQkRJUikvcGtnY29uZmlnIGRpcmVjdG9yeS4gUGF0Y2ggYnkKLSAgQ2xpbnRvbiBSb3kuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM1NDQyOiBUZXN0cyBmb3IgaW1wb3J0bGliIHdlcmUgbm90IHByb3Blcmx5IHNraXBwaW5nIGNhc2Utc2Vuc2l0aXZpdHkKLSAgdGVzdHMgb24gZGFyd2luIGV2ZW4gd2hlbiB0aGUgT1Mgd2FzIGluc3RhbGxlZCBvbiBhIGNhc2Utc2Vuc2l0aXZlCi0gIGZpbGVzeXN0ZW0uIEFsc28gZml4ZWQgdGVzdHMgdGhhdCBzaG91bGQgbm90IGJlIHJ1biB3aGVuCi0gIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIHRydWUuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMDktMDUtMDYqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1OTE0OiBBZGQgbmV3IEMgQVBJIGZ1bmN0aW9uIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZSwgYW5kCi0gIGRlcHJlY2F0ZSBQeU9TX2FzY2lpX3N0cnRvZCBhbmQgUHlPU19hc2NpaV9hdG9mLgotCi0tIElzc3VlICMzMzgyOiBmbG9hdC5fX2Zvcm1hdF9fLCBjb21wbGV4Ll9fZm9ybWF0X18sIGFuZCAlLWZvcm1hdHRpbmcKLSAgbm8gbG9uZ2VyIG1hcCAnRicgdG8gJ2YnLiBCZWNhdXNlIG9mIGlzc3VlICM1ODU5IChiZWxvdyksIHRoaXMgb25seQotICBhZmZlY3RzIG5hbiAtPiBOQU4gYW5kIGluZiAtPiBJTkYuCi0KLS0gSXNzdWUgIzU3OTk6IG50cGF0aCAoaWUsIG9zLnBhdGggb24gV2luZG93cykgZnVsbHkgc3VwcG9ydHMgVU5DIHBhdGhuYW1lcwotICBpbiBhbGwgb3BlcmF0aW9ucywgaW5jbHVkaW5nIHNwbGl0ZHJpdmUsIHNwbGl0LCBldGMuICBzcGxpdHVuYygpIG5vdyBpc3N1ZXMKLSAgYSBQZW5kaW5nRGVwcmVjYXRpb24gd2FybmluZy4KLQotLSBJc3N1ZSAjNTkyMDogRm9yIGZsb2F0Ll9fZm9ybWF0X18sIGNoYW5nZSB0aGUgYmVoYXZpb3Igd2l0aCB0aGUKLSAgZW1wdHkgcHJlc2VudGF0aW9uIHR5cGUgKHRoYXQgaXMsIG5vdCBvbmUgb2YgJ2UnLCAnZicsICdnJywgb3IgJ24nKQotICB0byBiZSBsaWtlICdnJyBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbCBwb2ludCBhbmQgd2l0aCBhCi0gIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBQcmV2aW91c2x5LCB0aGUgYmVoYXZpb3IgdGhlIHNhbWUgYnV0IHdpdGgKLSAgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiA2LiAgVGhpcyBtb3JlIGNsb3NlbHkgbWF0Y2hlcyBzdHIoKSwgYW5kCi0gIHJlZHVjZXMgc3VycHJpc2VzIHdoZW4gYWRkaW5nIGFsaWdubWVudCBmbGFncyB0byB0aGUgZW1wdHkKLSAgcHJlc2VudGF0aW9uIHR5cGUuIFRoaXMgYWxzbyBhZmZlY3RzIHRoZSBuZXcgY29tcGxleC5fX2Zvcm1hdF9fIGluCi0gIHRoZSBzYW1lIHdheS4KLQotLSBJbXBsZW1lbnQgUEVQIDM4MywgTm9uLWRlY29kYWJsZSBCeXRlcyBpbiBTeXN0ZW0gQ2hhcmFjdGVyIEludGVyZmFjZXMuCi0KLS0gSXNzdWUgIzU4OTA6IGluIHN1YmNsYXNzZXMgb2YgJ3Byb3BlcnR5JyB0aGUgX19kb2NfXyBhdHRyaWJ1dGUgd2FzCi0gIHNoYWRvd2VkIGJ5IGNsYXNzdHlwZSdzLCBldmVuIGlmIGl0IHdhcyBOb25lLiAgcHJvcGVydHkgbm93Ci0gIGluc2VydHMgdGhlIF9fZG9jX18gaW50byB0aGUgc3ViY2xhc3MgaW5zdGFuY2UgX19kaWN0X18uCi0KLS0gSXNzdWUgIzQ0MjY6IFRoZSBVVEYtNyBkZWNvZGVyIHdhcyB0b28gc3RyaWN0IGFuZCBkaWRuJ3QgYWNjZXB0IHNvbWUgbGVnYWwKLSAgc2VxdWVuY2VzLiBQYXRjaCBieSBOaWNrIEJhcm5lcyBhbmQgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzM2NzI6IFJlamVjdCBzdXJyb2dhdGVzIGluIHV0Zi04IGNvZGVjOyBhZGQgc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICM1ODgzOiBJbiB0aGUgaW8gbW9kdWxlLCB0aGUgQnVmZmVyZWRJT0Jhc2UgYW5kIFRleHRJT0Jhc2UgQUJDcyBoYXZlCi0gIHJlY2VpdmVkIGEgbmV3IG1ldGhvZCwgZGV0YWNoKCkuICBkZXRhY2goKSBkaXNjb25uZWN0cyB0aGUgdW5kZXJseWluZyBzdHJlYW0KLSAgZnJvbSB0aGUgYnVmZmVyIG9yIHRleHQgSU8gYW5kIHJldHVybnMgaXQuCi0KLS0gSXNzdWUgIzU4NTk6IFJlbW92ZSBzd2l0Y2ggZnJvbSAnJWYnIHRvICclZyctc3R5bGUgZm9ybWF0dGluZyBmb3IKLSAgZmxvYXRzIHdpdGggYWJzb2x1dGUgdmFsdWUgb3ZlciAxZTUwLiAgQWxzbyByZW1vdmUgbGVuZ3RoCi0gIHJlc3RyaWN0aW9ucyBmb3IgZmxvYXQgZm9ybWF0dGluZzogJyUuNjdmJyAlIDEyLjM0IGFuZCAnJS4xMjBlJyAlCi0gIDEyLjM0IG5vIGxvbmdlciByYWlzZSBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzE1ODg6IEFkZCBjb21wbGV4Ll9fZm9ybWF0X18uIEZvciBleGFtcGxlLAotICBmb3JtYXQoY29tcGxleCgxLCAyLi8zKSwgJy41Jykgbm93IHByb2R1Y2VzIGEgc2Vuc2libGUgcmVzdWx0LgotCi0tIElzc3VlICM1ODY0OiBGaXggZW1wdHkgZm9ybWF0IGNvZGUgZm9ybWF0dGluZyBmb3IgZmxvYXRzIHNvIHRoYXQgaXQKLSAgbmV2ZXIgZ2l2ZXMgbW9yZSB0aGFuIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cy4KLQotLSBJc3N1ZSAjNTc5MzogUmF0aW9uYWxpemUgaXNkaWdpdCAvIGlzYWxwaGEgLyB0b2xvd2VyLCBldGMuIEluY2x1ZGVzCi0gIG5ldyBQeV9JU0RJR0lUIC8gUHlfSVNBTFBIQSAvIFB5X1RPTE9XRVIsIGV0Yy4gaW4gcGN0eXBlcy5oLgotCi0tIElzc3VlICM1ODM1OiBEZXByZWNhdGUgUHlPU19hc2NpaV9mb3JtYXRkLgotCi0tIElzc3VlICM0OTcxOiBGaXggdGl0bGVjYXNlIGZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIHRoZWlyIG93bgotICB0aXRsZWNhc2UsIGJ1dCBub3QgdGhlaXIgb3duIHVwcGVyY2FzZS4KLQotLSBJc3N1ZSAjNTI4MzogU2V0dGluZyBfX2NsYXNzX18gaW4gX19kZWxfXyBjYXVzZWQgYSBzZWdmYXVsdC4KLQotLSBJc3N1ZSAjNTgxNjogY29tcGxleChyZXByKHopKSBub3cgcmVjb3ZlcnMgeiBleGFjdGx5LCBldmVuIHdoZW4KLSAgeiBpbnZvbHZlcyBuYW5zLCBpbmZzIG9yIG5lZ2F0aXZlIHplcm9zLgotCi0tIElzc3VlICMzMTY2OiBNYWtlIGludCAtPiBmbG9hdCBjb252ZXJzaW9ucyBjb3JyZWN0bHkgcm91bmRlZC4KLQotLSBJc3N1ZSAjMTg2OSAoYW5kIG1hbnkgZHVwbGljYXRlcyk6IG1ha2Ugcm91bmQoeCwgbikgY29ycmVjdGx5Ci0gIHJvdW5kZWQgZm9yIGEgZmxvYXQgeCwgYnkgdXNpbmcgdGhlIGRlY2ltYWwgPC0+IGJpbmFyeSBjb252ZXJzaW9ucwotICBmcm9tIFB5dGhvbi9kdG9hLmMuICBBcyBhIGNvbnNlcXVlbmNlLCAoZS5nLikgcm91bmQoeCwgMikgbm93Ci0gIGNvbnNpc3RlbnRseSBhZ3JlZXMgd2l0aCBmb3JtYXQoeCwgJy4yZicpLgotCi0tIElzc3VlICM1Nzg3OiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzb21lX3R5cGUsICJfX2Jhc2VzX18iKSBzZWdmYXVsdGVkIG9uCi0gIHNvbWUgYnVpbHRpbiB0eXBlcy4KLQotLSBJc3N1ZSAjNTc3MjogZm9ybWF0KDFlMTAwLCAnPCcpIHByb2R1Y2VzICcxZSsxMDAnLCBub3QgJzEuMGUrMTAwJy4KLQotLSBJc3N1ZSAjNTUxNTogc3RyLmZvcm1hdCgpIHR5cGUgJ24nIGNvbWJpbmVkIHdpdGggY29tbWFzIGFuZCBsZWFkaW5nCi0gIHplcm9zIG5vIGxvbmdlciBnaXZlcyBvZGQgcmVzdWx0cyB3aXRoIGludHMgYW5kIGZsb2F0cy4KLQotLSBJbXBsZW1lbnQgUEVQIDM3OCwgRm9ybWF0IFNwZWNpZmllciBmb3IgVGhvdXNhbmRzIFNlcGFyYXRvciwgZm9yCi0gIGZsb2F0cy4KLQotLSBUaGUgc3RyIGZ1bmN0aW9uIHN3aXRjaGVzIHRvIGV4cG9uZW50aWFsIG5vdGF0aW9uIGF0Ci0gIDFlMTEsIG5vdCAxZTEyLiAgVGhpcyBhdm9pZHMgcHJpbnRpbmcgMTMgc2lnbmlmaWNhbnQgZGlnaXRzIGluCi0gIHNpdHVhdGlvbnMgd2hlcmUgb25seSAxMiBvZiB0aGVtIGFyZSBjb3JyZWN0LiAgRXhhbXBsZSBwcm9ibGVtCi0gIHZhbHVlOiBzdHIoMWUxMSArIDAuNSkuICAoVGhpcyBtaW5vciBpc3N1ZSBoYXMgZXhpc3RlZCBpbiAyLnggZm9yIGEKLSAgbG9uZyB0aW1lLikKLQotLSBJc3N1ZSAjMTU4MDogT24gbW9zdCBwbGF0Zm9ybXMsIHVzZSBhICdzaG9ydCcgZmxvYXQgcmVwcjogZm9yIGEKLSAgZmluaXRlIGZsb2F0IHgsIHJlcHIoeCkgbm93IG91dHB1dHMgYSBzdHJpbmcgYmFzZWQgb24gdGhlIHNob3J0ZXN0Ci0gIHNlcXVlbmNlIG9mIGRlY2ltYWwgZGlnaXRzIHRoYXQgcm91bmRzIHRvIHguICBQcmV2aW91cyBiZWhhdmlvdXIgd2FzCi0gIHRvIG91dHB1dCAxNyBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gc3RyaXAgdHJhaWxpbmcgemVyb3MuCi0gIEFub3RoZXIgbWlub3IgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBuZXcgcmVwciBzd2l0Y2hlcyB0bwotICBleHBvbmVudGlhbCBub3RhdGlvbiBhdCAxZTE2IGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIDFlMTc7IHRoaXMKLSAgYXZvaWRzIG1pc2xlYWRpbmcgb3V0cHV0IGluIHNvbWUgY2FzZXMuCi0KLSAgVGhlcmUncyBhIG5ldyBzeXMgYXR0cmlidXRlIHN5cy5mbG9hdF9yZXByX3N0eWxlLCB3aGljaCB0YWtlcwotICB0aGUgdmFsdWUgJ3Nob3J0JyB0byBpbmRpY2F0ZSB0aGF0IHdlJ3JlIHVzaW5nIHNob3J0IGZsb2F0IHJlcHIsCi0gIGFuZCAnbGVnYWN5JyBpZiB0aGUgc2hvcnQgZmxvYXQgcmVwciBpc24ndCBhdmFpbGFibGUgZm9yIG9uZQotICByZWFzb24gb3IgYW5vdGhlci4KLQotICBUaGUgZmxvYXQgcmVwciBjaGFuZ2UgaW52b2x2ZXMgaW5jb3Jwb3JhdGluZyBEYXZpZCBHYXkncyAncGVyZmVjdAotICByb3VuZGluZycgY29kZSBpbnRvIHRoZSBQeXRob24gY29yZSAoaXQncyBpbiBQeXRob24vZHRvYS5jKS4gIEFzIGEKLSAgc2Vjb25kYXJ5IGNvbnNlcXVlbmNlLCBhbGwgc3RyaW5nLXRvLWZsb2F0IGFuZCBmbG9hdC10by1zdHJpbmcKLSAgY29udmVyc2lvbnMgKGluY2x1ZGluZyBhbGwgZmxvYXQgZm9ybWF0dGluZyBvcGVyYXRpb25zKSB3aWxsIGJlCi0gIGNvcnJlY3RseSByb3VuZGVkIG9uIHRoZXNlIHBsYXRmb3Jtcy4KLQotICBTZWUgaXNzdWUgIzE1ODAgZGlzY3Vzc2lvbnMgZm9yIGRldGFpbHMgb2YgcGxhdGZvcm1zIGZvciB3aGljaAotICB0aGlzIGNoYW5nZSBkb2VzIG5vdCBhcHBseS4KLQotLSBJc3N1ZSAjNTc1OTogZmxvYXQoKSBkaWRuJ3QgY2FsbCBfX2Zsb2F0X18gb24gc3RyIHN1YmNsYXNzZXMuCi0KLS0gVGhlIHN0cmluZy5tYWtldHJhbnMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOyB0aGVyZSBpcyBhIG5ldyBzdGF0aWMgbWV0aG9kCi0gIG1ha2V0cmFucygpIG9uIHRoZSBieXRlcyBhbmQgYnl0ZWFycmF5IGNsYXNzZXMuICBUaGlzIHJlbW92ZXMgY29uZnVzaW9uIGFib3V0Ci0gIHRoZSB0eXBlcyBzdHJpbmcubWFrZXRyYW5zKCkgaXMgc3VwcG9zZWQgdG8gd29yayB3aXRoLCBhbmQgbWlycm9ycyB0aGUKLSAgbWV0aG9kcyBhdmFpbGFibGUgb24gdGhlIHN0ciBjbGFzcy4KLQotLSBJc3N1ZSAjMjE3MDogcmVmYWN0b3JlZCB4bWwuZG9tLm1pbmlkb20ubm9ybWFsaXplLCBpbmNyZWFzaW5nIGJvdGgKLSAgaXRzIGNsYXJpdHkgYW5kIGl0cyBzcGVlZC4KLQotLSBJc3N1ZSAjMTExMzI0NDogUHlfWElOQ1JFRiwgUHlfREVDUkVGLCBQeV9YREVDUkVGOiBBZGQgYGBkbyB7IC4uLiB9IHdoaWxlICgwKWBgCi0gIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgotCi0tIElzc3VlICMzNzM5OiBUaGUgdW5pY29kZS1pbnRlcm5hbCBlbmNvZGVyIG5vdyByZXBvcnRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycwotICBjb25zdW1lZCBsaWtlIGFueSBvdGhlciBlbmNvZGVyIChpbnN0ZWFkIG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMpLgotCi1JbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1NzU2OiBJbnN0YWxsIGlkbGUgYW5kIHB5ZG9jIHdpdGggYSAzIHN1ZmZpeC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM4MjAzOiBGaXggSURMRSBDcmVkaXRzIGRpYWxvZzogdmlld19maWxlKCkgdXNlcyBpdHMgZW5jb2RpbmcgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzUzMTE6IGJkaXN0X21zaSBjYW4gbm93IGJ1aWxkIHBhY2thZ2VzIHRoYXQgZG8gbm90IGRlcGVuZCBvbiBhCi0gIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLgotCi0tIElzc3VlICM1MTUwOiBJRExFJ3MgZm9ybWF0IG1lbnUgbm93IGhhcyBhbiBvcHRpb24gdG8gc3RyaXAgdHJhaWxpbmcKLSAgd2hpdGVzcGFjZS4KLQotLSBJc3N1ZSAjNTk0MDogZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfY2xpYi5jaGVja19saWJyYXJ5X2xpc3Qgd2FzIG5vdCBkb2luZwotICB0aGUgcmlnaHQgdHlwZSBjaGVja2luZ3MgYW55bW9yZS4KLQotLSBJc3N1ZSAjNDg3NTogT24gd2luMzIsIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBkb2VzIG5vIGxvbmdlcgotICByZXR1cm4gZGlyZWN0b3JpZXMuCi0KLS0gSXNzdWUgIzUxNDI6IEFkZCB0aGUgYWJpbGl0eSB0byBza2lwIG1vZHVsZXMgd2hpbGUgc3RlcHBpbmcgdG8gcGRiLgotCi0tIElzc3VlICMxMzA5NTY3OiBGaXggbGluZWNhY2hlIGJlaGF2aW9yIG9mIHN0cmlwcGluZyBzdWJkaXJlY3RvcmllcyB3aGVuCi0gIGxvb2tpbmcgZm9yIGZpbGVzIGdpdmVuIGJ5IGEgcmVsYXRpdmUgZmlsZW5hbWUuCi0KLS0gSXNzdWUgIzU5MjM6IFVwZGF0ZSB0aGUgYGB0dXJ0bGVgYCBtb2R1bGUgdG8gdmVyc2lvbiAxLjEsIGFkZCB0d28gbmV3Ci0gIHR1cnRsZSBkZW1vcyBpbiBEZW1vL3R1cnRsZS4KLQotLSBJc3N1ZSAjNTY5MjogSW4gOmNsYXNzOmB6aXBmaWxlLlppcGZpbGVgLCBmaXggd3JvbmcgcGF0aCBjYWxjdWxhdGlvbiB3aGVuCi0gIGV4dHJhY3RpbmcgYSBmaWxlIHRvIHRoZSByb290IGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjNTkxMzogb3MubGlzdGRpcigpIHNob3VsZCBmYWlsIGZvciBlbXB0eSBwYXRoIG9uIHdpbmRvd3MuCi0KLS0gSXNzdWUgIzUwODQ6IHVucGlja2xpbmcgbm93IGludGVybnMgdGhlIGF0dHJpYnV0ZSBuYW1lcyBvZiBwaWNrbGVkIG9iamVjdHMsCi0gIHNhdmluZyBtZW1vcnkgYW5kIGF2b2lkaW5nIGdyb3d0aCBpbiBzaXplIG9mIHN1YnNlcXVlbnQgcGlja2xlcy4gUHJvcG9zYWwKLSAgYW5kIG9yaWdpbmFsIHBhdGNoIGJ5IEpha2UgTWNHdWlyZS4KLQotLSBUaGUganNvbiBtb2R1bGUgbm93IHdvcmtzIGV4Y2x1c2l2ZWx5IHdpdGggc3RyIGFuZCBub3QgYnl0ZXMuCi0KLS0gSXNzdWUgIzM5NTk6IFRoZSBpcGFkZHIgbW9kdWxlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotICBDb250cmlidXRlZCBieSBHb29nbGUuCi0KLS0gSXNzdWUgIzMwMDI6IGBgc2h1dGlsLmNvcHlmaWxlKClgYCBhbmQgYGBzaHV0aWwuY29weXRyZWUoKWBgIG5vdyByYWlzZSBhbgotICBlcnJvciB3aGVuIGEgbmFtZWQgcGlwZSBpcyBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gYmxvY2tpbmcgaW5maW5pdGVseS4KLQotLSBJc3N1ZSAjNTg1NzogdG9rZW5pemUudG9rZW5pemUoKSBub3cgcmV0dXJucyBuYW1lZCB0dXBsZXMuCi0KLS0gSXNzdWUgIzQzMDU6IGN0eXBlcyBzaG91bGQgbm93IGJ1aWxkIGFnYWluIG9uIG1pcHNlbC1saW51eC1nbnUKLQotLSBJc3N1ZSAjMTczNDIzNDogTWFzc2l2ZWx5IHNwZWVkdXAgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgIHdoZW4gdGhlCi0gIHN0cmluZyBpcyBhbHJlYWR5IGluIG5vcm1hbGl6ZWQgZm9ybSwgYnkgcGVyZm9ybWluZyBhIHF1aWNrIGNoZWNrIGJlZm9yZWhhbmQuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFJhdWxpIFJ1b2hvbmVuLgotCi0tIElzc3VlICM1ODUzOiBjYWxsaW5nIGEgZnVuY3Rpb24gb2YgdGhlIG1pbWV0eXBlcyBtb2R1bGUgZnJvbSBzZXZlcmFsIHRocmVhZHMKLSAgYXQgb25jZSBjb3VsZCBoaXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpZiB0aGUgbWltZXR5cGVzIGRhdGFiYXNlIGhhZG4ndCBiZWVuCi0gIGluaXRpYWxpemVkIGJlZm9yZS4KLQotLSBJc3N1ZSAjNTg1NDogVXBkYXRlZCBfX2FsbF9fIHRvIGluY2x1ZGUgc29tZSBtaXNzaW5nIG5hbWVzIGFuZCByZW1vdmUgc29tZQotICBuYW1lcyB3aGljaCBzaG91bGQgbm90IGJlIGV4cG9ydGVkLgotCi0tIElzc3VlICMzMTAyOiAgQWxsIGdsb2JhbCBzeW1ib2xzIHRoYXQgdGhlIF9jdHlwZXMgZXh0ZW5zaW9uIGRlZmluZXMKLSAgYXJlIG5vdyBwcmVmaXhlZCB3aXRoICdQeScgb3IgJ19jdHlwZXMnLgotCi0tIElzc3VlICM1MDQxOiBjdHlwZXMgZG9lcyBub3cgYWxsb3cgcGlja2xpbmcgd2lkZSBjaGFyYWN0ZXIuCi0KLS0gSXNzdWUgIzU4MTI6IEZvciB0aGUgdHdvLWFyZ3VtZW50IGZvcm0gb2YgdGhlIEZyYWN0aW9uIGNvbnN0cnVjdG9yLAotICBGcmFjdGlvbihtLCBuKSwgbSBhbmQgbiBhcmUgcGVybWl0dGVkIHRvIGJlIGFyYml0cmFyeSBSYXRpb25hbAotICBpbnN0YW5jZXMuCi0KLS0gSXNzdWUgIzU4MTI6IEZyYWN0aW9uKCcxZTYnKSBpcyB2YWxpZDogbW9yZSBnZW5lcmFsbHksIGFueSBzdHJpbmcKLSAgdGhhdCdzIHZhbGlkIGZvciBmbG9hdCgpIGlzIG5vdyB2YWxpZCBmb3IgRnJhY3Rpb24oKSwgd2l0aCB0aGUKLSAgZXhjZXB0aW9uIG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIE5hTnMgYW5kIGluZmluaXRpZXMuCi0KLS0gSXNzdWUgIzU3MzQ6IEJ1ZmZlcmVkUldQYWlyIHdhcyBwb29ybHkgdGVzdGVkIGFuZCBoYWQgc2V2ZXJhbCBnbGFyaW5nCi0gIGJ1Z3MuIFBhdGNoIGJ5IEJyaWFuIFF1aW5sYW4uCi0KLS0gSXNzdWUgIzExNjEwMzE6IGZpeCByZWFkd3JpdGUgc2VsZWN0IGZsYWcgaGFuZGxpbmc6IFBPTExQUkkgbm93Ci0gIHJlc3VsdHMgaW4gYSBoYW5kbGVfZXhwdF9ldmVudCBjYWxsLCBub3QgaGFuZGxlX3JlYWRfZXZlbnQsIGFuZCBQT0xMRVJSCi0gIGFuZCBQT0xMTlZBTCBub3cgY2FsbCBoYW5kbGVfY2xvc2UsIG5vdCBoYW5kbGVfZXhwdF9ldmVudC4gIEFsc28sCi0gIGRpc3BhdGNoZXIgbm93IGhhcyBhbiAnaWdub3JlX2xvZ190eXBlcycgYXR0cmlidXRlIGZvciBzdXBwcmVzc2luZwotICBsb2cgbWVzc2FnZXMsIHdoaWNoIGlzIHNldCB0byAnd2FybmluZycgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjMjcwMzogU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXzogUHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IKLSAgbmV3IGFyZ3VtZW50cyBpbnRyb2R1Y2VkIGluIDIuNS4KLQotLSBJc3N1ZSAjNTgyOCAoSW52YWxpZCBiZWhhdmlvciBvZiB1bmljb2RlLmxvd2VyKTogRml4ZWQgYm9ndXMgbG9naWMgaW4KLSAgbWFrZXVuaWNvZGVkYXRhLnB5IGFuZCByZWdlbmVyYXRlZCB0aGUgVW5pY29kZSBkYXRhYmFzZSAoVGhpcyBmaXhlcwotICB1J1x1MWQ3OScubG93ZXIoKSA9PSAnXHgwMCcpLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTg4MTogUmVtb3ZlIG9sZCB1bmRvY3VtZW50ZWQgY29tcGF0aWJpbGl0eSBpbnRlcmZhY2VzIGluIGhhc2hsaWIgYW5kCi0gIHB3ZC4KLQotLSBJc3N1ZSAjNTQ2MzogSW4gc3RydWN0IG1vZHVsZSwgcmVtb3ZlIGRlcHJlY2F0ZWQgZmxvYXQgY29lcmNpb24KLSAgZm9yIGludGVnZXIgdHlwZSBjb2Rlczogc3RydWN0LnBhY2soJ0wnLCAwLjMpIHNob3VsZCBub3cgcmFpc2UKLSAgYW4gZXJyb3IuICBUaGUgX1BZX1NUUlVDVF9GTE9BVF9DT0VSQ0UgY29uc3RhbnQgaGFzIGJlZW4gcmVtb3ZlZC4KLSAgVGhlIHZlcnNpb24gbnVtYmVyIGhhcyBiZWVuIGJ1bXBlZCB0byAwLjMuCi0KLS0gSXNzdWUgIzUzNTk6IFJlYWRkIHRoZSBCZXJrZWxleSBEQiBkZXRlY3Rpb24gY29kZSB0byBhbGxvdyBfZGJtIGJlIGJ1aWx0Ci0gIHVzaW5nIEJlcmtlbGV5IERCLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjNTM1NDogTmV3IHRlc3Qgc3VwcG9ydCBmdW5jdGlvbiBpbXBvcnRfZnJlc2hfbW9kdWxlKCkgbWFrZXMKLSAgaXQgZWFzeSB0byBpbXBvcnQgYm90aCBub3JtYWwgYW5kIG9wdGltaXNlZCB2ZXJzaW9ucyBvZiBtb2R1bGVzLgotICB0ZXN0X2hlYXBxIGFuZCB0ZXN0X3dhcm5pbmdzIGhhdmUgYmVlbiBhZGp1c3RlZCB0byB1c2UgaXQsIHRlc3RzIGZvcgotICBvdGhlciBtb2R1bGVzIHdpdGggYm90aCBDIGFuZCBQeXRob24gaW1wbGVtZW50YXRpb25zIGluIHRoZSBzdGRsaWIKLSAgY2FuIGJlIGFkanVzdGVkIHRvIHVzZSBpdCBvdmVyIHRpbWUuCi0KLS0gSXNzdWUgIzU4Mzc6IENlcnRhaW4gc2VxdWVuY2VzIG9mIGNhbGxzIHRvIHNldCgpIGFuZCB1bnNldCgpIGZvcgotICBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQgb2JqZWN0cyByZXN0b3JlZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gIGluY29ycmVjdGx5IG9uIF9fZXhpdF9fLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjNTYzMDogQSByZXBsYWNlbWVudCBQeUNPYmplY3QgQVBJLCBQeUNhcHN1bGUsIGhhcyBiZWVuIGFkZGVkLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBhbHBoYSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMDktNC00KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJbXBsZW1lbnQgUEVQIDM3OCwgRm9ybWF0IFNwZWNpZmllciBmb3IgVGhvdXNhbmRzIFNlcGFyYXRvciwgZm9yCi0gIGludGVnZXJzLgotCi0tIElzc3VlICM1NjY2OiBQeV9CdWlsZFZhbHVlJ3MgJ2MnIGNvZGUgc2hvdWxkIGNyZWF0ZSBieXRlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzU0OTk6IFRoZSAnYycgY29kZSBmb3IgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgbm93IG9ubHkgYWNjZXB0cyBhCi0gIGJ5dGUsIGFuZCB0aGUgJ0MnIGNvZGUgb25seSBhY2NlcHRzIGEgdW5pY29kZSBjaGFyYWN0ZXIuCi0KLS0gRml4IGEgcHJvYmxlbSBpbiBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24gdGhhdCBsZWFkcyB0byAidW5kZXRlY3RlZCBlcnJvcnMiCi0gIHdoZW4gaGl0dGluZyB0aGUgcmVjdXJzaW9uIGxpbWl0IHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KLQotLSBJc3N1ZSAjMTY2NTIwNjogUmVtb3ZlIHRoZSBsYXN0IGVhZ2VyIGltcG9ydCBpbiBfd2FybmluZ3MuYyBhbmQgbWFrZSBpdCBsYXp5LgotCi0tIEZpeCBhIHNlZ2ZhdWx0IHdoZW4gcnVubmluZyB0ZXN0X2V4Y2VwdGlvbnMgd2l0aCBjb3ZlcmFnZSwgY2F1c2VkIGJ5Ci0gIGluc3VmZmljaWVudCBjaGVja3MgaW4gYWNjZXNzb3JzIG9mIEV4Y2VwdGlvbi5fX2NvbnRleHRfXy4KLQotLSBJc3N1ZSAjNTYwNDogbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gbW9kdWxlIG5hbWUgcGFzc2VkIHRvCi0gIGltcC5maW5kX21vZHVsZSgpIHdlcmUgY29udmVydGVkIHRvIFVURi04IHdoaWxlIHRoZSBwYXRoIGlzCi0gIGNvbnZlcnRlZCB0byB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nLCBjYXVzaW5nIG5vbnNlbnNlLgotCi0tIElzc3VlICM1MTI2OiBzdHIuaXNwcmludGFibGUoKSByZXR1cm5lZCBGYWxzZSBmb3Igc3BhY2UgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjNDg2NTogT24gTWFjT1NYIC9MaWJyYXJ5L1B5dGhvbi8yLjcvc2l0ZS1wYWNrYWdlcyBpcyBhZGRlZCB0bwotICB0aGUgZW5kIHN5cy5wYXRoLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzeXN0ZW0gaW5zdGFsbCBvZiBQeXRob24uCi0KLS0gSXNzdWUgIzQ2ODg6IEFkZCBhIGhldXJpc3RpYyBzbyB0aGF0IHR1cGxlcyBhbmQgZGljdHMgY29udGFpbmluZyBvbmx5Ci0gIHVudHJhY2thYmxlIG9iamVjdHMgYXJlIG5vdCB0cmFja2VkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gVGhpcyBjYW4KLSAgcmVkdWNlIHRoZSBzaXplIG9mIGNvbGxlY3Rpb25zIGFuZCB0aGVyZWZvcmUgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBvdmVyaGVhZAotICBvbiBsb25nLXJ1bm5pbmcgcHJvZ3JhbXMsIGRlcGVuZGluZyBvbiB0aGVpciBwYXJ0aWN1bGFyIHVzZSBvZiBkYXRhdHlwZXMuCi0KLS0gSXNzdWUgIzU1MTI6IFJld3JpdGUgUHlMb25nIGxvbmcgZGl2aXNpb24gYWxnb3JpdGhtICh4X2RpdnJlbSkgdG8KLSAgaW1wcm92ZSBpdHMgcGVyZm9ybWFuY2UuICBMb25nIGRpdmlzaW9ucyBhbmQgcmVtYWluZGVyIG9wZXJhdGlvbnMKLSAgYXJlIG5vdyBiZXR3ZWVuIDUwJSBhbmQgMTUwJSBmYXN0ZXIuCi0KLS0gSXNzdWUgIzQyNTg6IE1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGJhc2UgMioqMzAgaW5zdGVhZCBvZiBiYXNlCi0gIDIqKjE1IGZvciB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMsIGZvciBwZXJmb3JtYW5jZQotICByZWFzb25zLiAgQmFzZSAyKiozMCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gNjQtYml0IG1hY2hpbmVzLiAgQWRkCi0gIC0tZW5hYmxlLWJpZy1kaWdpdHMgb3B0aW9uIHRvIGNvbmZpZ3VyZSwgd2hpY2ggb3ZlcnJpZGVzIHRoZQotICBkZWZhdWx0LiAgQWRkIHN5cy5pbnRfaW5mbyBzdHJ1Y3RzZXEgdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dAotICB0aGUgaW50ZXJuYWwgZm9ybWF0LgotCi0tIElzc3VlICM0NDc0OiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyIG5vdyBjb252ZXJ0cyBjaGFyYWN0ZXJzIG91dHNpZGUKLSAgdGhlIEJNUCB0byBzdXJyb2dhdGUgcGFpcnMsIG9uIHN5c3RlbXMgd2l0aCBzaXplb2Yod2NoYXJfdCkgPT0gNAotICBhbmQgc2l6ZW9mKFB5X1VOSUNPREUpID09IDIuCi0KLS0gSXNzdWUgIzUyMzc6IEFsbG93IGF1dG8tbnVtYmVyZWQgZmllbGRzIGluIHN0ci5mb3JtYXQoKS4gRm9yCi0gIGV4YW1wbGU6ICd7fSB7fScuZm9ybWF0KDEsIDIpID09ICcxIDInLgotCi0tIElzc3VlICM1MzkyOiB3aGVuIGEgdmVyeSBsb3cgcmVjdXJzaW9uIGxpbWl0IHdhcyBzZXQsIHRoZSBpbnRlcnByZXRlciB3b3VsZAotICBhYm9ydCB3aXRoIGEgZmF0YWwgZXJyb3IgYWZ0ZXIgdGhlIHJlY3Vyc2lvbiBsaW1pdCB3YXMgaGl0IHR3aWNlLgotCi0tIElzc3VlICMzODQ1OiBJbiBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncyBhdm9pZCBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Mgd2l0aAotICBzaG9ydCBmaWxlIG5hbWVzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzI2MjU6IGFkZGVkIG1pc3NpbmcgaXRlbXMoKSBjYWxsIHRvIHRoZSBmb3IgbG9vcCBpbgotICBtYWlsYm94Lk1ILmdldF9tZXNzYWdlKCkuCi0KLS0gSXNzdWUgIzU2NDA6IEZpeCBfbXVsdGlieXRlY29kZWMgc28gdGhhdCBDSksgY29kZWNzIGRvbid0IHJlcGVhdAotICBlcnJvciBzdWJzdGl0dXRpb25zIGZyb20gbm9uLXN0cmljdCBjb2RlYyBlcnJvciBjYWxsYmFja3MgaW4KLSAgaW5jcmVtZW50YWxlbmNvZGVyIGFuZCBTdHJlYW1Xcml0ZXIuCi0KLS0gSXNzdWUgIzU2NTY6IEZpeCB0aGUgY292ZXJhZ2UgcmVwb3J0aW5nIHdoZW4gcnVubmluZyB0aGUgdGVzdCBzdWl0ZSB3aXRoCi0gIHRoZSAtVCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNTY0NzogTXV0YWJsZVNldC5fX2lhbmRfXygpIG5vIGxvbmdlciBtdXRhdGVzIHNlbGYgZHVyaW5nIGl0ZXJhdGlvbi4KLQotLSBJc3N1ZSAjNTYyNDogRml4IHRoZSBfd2lucmVnIG1vZHVsZSBuYW1lIHN0aWxsIHVzZWQgaW4gc2V2ZXJhbCBtb2R1bGVzLgotCi0tIElzc3VlICM1NjI4OiBGaXggaW8uVGV4dElPV3JhcHBlci5yZWFkKCkgd2l0aCBhIHVucmVhZGFibGUgYnVmZmVyLgotCi0tIElzc3VlICM1NjE5OiBNdWx0aXByb2Nlc3NpbmcgY2hpbGRyZW4gZGlzb2JleSB0aGUgZGVidWcgZmxhZyBhbmQgY2F1c2VzCi0gIHBvcHVwcyBvbiB3aW5kb3dzIGJ1aWxkYm90cy4gUGF0Y2ggYXBwbGllZCB0byB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLgotCi0tIElzc3VlICM1NDAwOiBBZGRlZCBwYXRjaCBmb3IgbXVsdGlwcm9jZXNzaW5nIG9uIG5ldGJzZCBjb21waWxhdGlvbi9zdXBwb3J0Ci0KLS0gSXNzdWUgIzUzODc6IEZpeGVkIG1tYXAubW92ZSBjcmFzaCBieSBpbnRlZ2VyIG92ZXJmbG93LgotCi0tIElzc3VlICM1MjYxOiBQYXRjaCBtdWx0aXByb2Nlc3NpbmcncyBzZW1hcGhvcmUuYyB0byBzdXBwb3J0IGNvbnRleHQKLSAgbWFuYWdlciB1c2U6ICJ3aXRoIG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkiIHdvcmtzIG5vdy4KLQotLSBJc3N1ZSAjNTIzNjogQ2hhbmdlIHRpbWUuc3RycHRpbWUoKSB0byBvbmx5IHRha2Ugc3RyaW5ncy4gRGlkbid0IHdvcmsgd2l0aAotICBieXRlcyBhbHJlYWR5IGJ1dCB0aGUgZmFpbHVyZSB3YXMgbm9uLW9idmlvdXMuCi0KLS0gSXNzdWUgIzUxNzc6IE11bHRpcHJvY2Vzc2luZydzIFNvY2tldExpc3RlbmVyIGNsYXNzIG5vdyB1c2VzCi0gIHNvY2tldC5TT19SRVVTRUFERFIgb24gYWxsIGNvbm5lY3Rpb25zIHNvIHRoYXQgdGhlIHVzZXIgbm8gbG9uZ2VyIG5lZWRzCi0gIHRvIHdhaXQgMTIwIHNlY29uZHMgZm9yIHRoZSBzb2NrZXQgdG8gZXhwaXJlLgotCi0tIElzc3VlICM1NTk1OiBGaXggVW5ib3VuZGVkTG9jYWxFcnJvciBpbiBudHBhdGguaXNtb3VudCgpLgotCi0tIElzc3VlICMxMTc0NjA2OiBDYWxsaW5nIHJlYWQoKSB3aXRob3V0IGFyZ3VtZW50cyBvZiBhbiB1bmJvdW5kZWQgZmlsZQotICAodHlwaWNhbGx5IC9kZXYvemVybyB1bmRlciBVbml4KSBjb3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIuCi0KLS0gVGhlIG1heF9idWZmZXJfc2l6ZSBhcmd1bWVudHMgb2YgaW8uQnVmZmVyZWRXcml0ZXIsIGlvLkJ1ZmZlcmVkUldQYWlyLCBhbmQKLSAgaW8uQnVmZmVyZWRSYW5kb20gaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMi4KLQotLSBJc3N1ZSAjNTA2ODogRml4ZWQgdGhlIHRhcmZpbGUuX0JaMlByb3h5LnJlYWQoKSBtZXRob2QgdGhhdCB3b3VsZCBsb29wCi0gIGZvcmV2ZXIgb24gaW5jb21wbGV0ZSBpbnB1dC4gVGhhdCBjYXVzZWQgdGFyZmlsZS5vcGVuKCkgdG8gaGFuZyB3aGVuIHVzZWQKLSAgd2l0aCBtb2RlICdyJyBvciAncjpiejInIGFuZCBhIGZpbGVvYmogYXJndW1lbnQgdGhhdCBjb250YWluZWQgbm8gZGF0YSBvcgotICBwYXJ0aWFsIGJ6aXAyIGNvbXByZXNzZWQgZGF0YS4KLQotLSBJc3N1ZSAjMjExMDogQWRkIHN1cHBvcnQgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3IgYW5kICduJyB0eXBlCi0gIHNwZWNpZmllciB0byBEZWNpbWFsLl9fZm9ybWF0X18KLQotLSBGaXggRGVjaW1hbC5fX2Zvcm1hdF9fIGJ1ZyB0aGF0IHN3YXBwZWQgdGhlIG1lYW5pbmdzIG9mIHRoZSAnPCcgYW5kCi0gICc+JyBhbGlnbm1lbnQgY2hhcmFjdGVycy4KLQotLSBUaGUgZXJyb3IgZGV0ZWN0aW9uIGNvZGUgaW4gRmlsZUlPLmNsb3NlKCkgY291bGQgZmFpbCB0byByZWZsZWN0IHRoZSBgZXJybm9gCi0gIHZhbHVlLCBhbmQgcmVwb3J0IGl0IGFzIC0xIGluc3RlYWQuCi0KLS0gSXNzdWUgIzUwMTY6IEZpbGVJTy5zZWVrYWJsZSgpIGNvdWxkIHJldHVybiBGYWxzZSBpZiB0aGUgZmlsZSBwb3NpdGlvbgotICB3YXMgbmVnYXRpdmUgd2hlbiB0cnVuY2F0ZWQgdG8gYSBDIGludC4gUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1MzkxOiBtbWFwIG5vdyBkZWFscyBleGNsdXNpdmVseSB3aXRoIGJ5dGVzLgotCi0tIElzc3VlICM1NDYzOiBJbiBzdHJ1Y3QgbW9kdWxlLCByZW1vdmUgZGVwcmVjYXRlZCBvdmVyZmxvdyB3cmFwcGluZwotICB3aGVuIHBhY2tpbmcgYW4gaW50ZWdlcjogc3RydWN0LnBhY2soJz1MJywgLTEpIG5vdyByYWlzZXMKLSAgc3RydWN0LmVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIGInXHhmZlx4ZmZceGZmXHhmZicuICBUaGUKLSAgX1BZX1NUUlVDVF9SQU5HRV9DSEVDS0lORyBhbmQgX1BZX1NUUlVDVF9PVkVSRkxPV19NQVNLSU5HIGNvbnN0YW50cwotICBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzdHJ1Y3QgbW9kdWxlLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBhbHBoYSAxCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDA5LTAzLTA3KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBUaGUgaW8gbW9kdWxlIGhhcyBiZWVuIHJlaW1wbGVtZW50ZWQgaW4gQyBmb3Igc3BlZWQuCi0KLS0gR2l2ZSBkaWN0IHZpZXdzIGFuIGluZm9ybWF0aXZlIF9fcmVwcl9fLgotCi0tIElzc3VlICM1MjQ3OiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiB1bmtub3duIGZvcm1hdCBjb2RlcyBhcmUKLSAgdXNlZCB3aGVuIHVzaW5nIHN0ci5mb3JtYXQoKSB3aXRoIHN0ciwgaW50LCBhbmQgZmxvYXQgYXJndW1lbnRzLgotCi0tIElzc3VlICM1MjQ5OiB0aW1lLnN0cmZ0aW1lIHJldHVybmVkIG1hbGZvcm1lZCBzdHJpbmcgd2hlbiBmb3JtYXQgc3RyaW5nCi0gIGNvbnRhaW5lZCBub24gYXNjaWkgY2hhcmFjdGVyIG9uIHdpbmRvd3MuCi0KLS0gSXNzdWUgIzQ2MjY6IGNvbXBpbGUoKSwgZXhlYygpLCBhbmQgZXZhbCgpIGlnbm9yZSB0aGUgY29kaW5nIGNvb2tpZSBpZiB0aGUKLSAgc291cmNlIGhhcyBhbHJlYWR5IGJlZW4gZGVjb2RlZCBpbnRvIHN0ci4KLQotLSBJc3N1ZSAjNTE4NjogUmVkdWNlIGhhc2ggY29sbGlzaW9ucyBmb3Igb2JqZWN0cyB3aXRoIG5vIF9faGFzaF9fIG1ldGhvZCBieQotICByb3RhdGluZyB0aGUgb2JqZWN0IHBvaW50ZXIgYnkgNCBiaXRzIHRvIHRoZSByaWdodC4KLQotLSBJc3N1ZSAjNDU3NTogRml4IFB5X0lTX0lORklOSVRZIG1hY3JvIHRvIHdvcmsgY29ycmVjdGx5IG9uIHg4NyBGUFVzOgotICBpdCBub3cgZm9yY2VzIGl0cyBhcmd1bWVudCB0byBkb3VibGUgYmVmb3JlIHRlc3RpbmcgZm9yIGluZmluaXR5LgotCi0tIElzc3VlICM1MTM3OiBNYWtlIGxlbigpIGNvcnJlY3RseSByYWlzZSBhIFR5cGVFcnJvciB3aGVuIGEgX19sZW5fXyBtZXRob2QKLSAgcmV0dXJucyBhIG5vbi1udW1iZXIgdHlwZS4KLQotLSBJc3N1ZSAjNTE4MjogUmVtb3ZlZCBtZW1vcnl2aWV3Ll9fc3RyX18uCi0KLS0gSXNzdWUgIzE3MTc6IFJlbW92ZWQgYnVpbHRpbiBjbXAoKSBmdW5jdGlvbiwgZHJvcHBlZCB0cF9jb21wYXJlCi0gIHNsb3QsIHRoZSBDIEFQSSBmdW5jdGlvbnMgUHlPYmplY3RfQ29tcGFyZSBhbmQgUHlVbmljb2RlX0NvbXBhcmUgYW5kCi0gIHRoZSB0eXBlIGRlZmluaXRpb24gY21wZnVuYy4gIFRoZSB0cF9jb21wYXJlIHNsb3QgaGFzIGJlZW4gcmVuYW1lZAotICB0byB0cF9yZXNlcnZlZCwgYW5kIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNhZ2UuCi0KLS0gSXNzdWUgIzEyNDI2NTc6IHRoZSBfX2xlbl9fKCkgYW5kIF9fbGVuZ3RoX2hpbnRfXygpIGNhbGxzIGluIHNldmVyYWwgdG9vbHMKLSAgd2VyZSBzdXBwcmVzc2luZyBhbGwgZXhjZXB0aW9ucy4gIFRoZXNlIGluY2x1ZGUgbGlzdCgpIGFuZCBieXRlYXJyYXkoKS4KLQotLSBJc3N1ZSAjNDcwNzogcm91bmQoeCwgbikgbm93IHJldHVybnMgYW4gaW50ZWdlciBpZiB4IGlzIGFuIGludGVnZXIuCi0gIFByZXZpb3VzbHkgaXQgcmV0dXJuZWQgYSBmbG9hdC4KLQotLSBJc3N1ZSAjNDc1MzogQnkgZW5hYmxpbmcgYSBjb25maWd1cmUgb3B0aW9uIG5hbWVkICctLXdpdGgtY29tcHV0ZWQtZ290b3MnCi0gIG9uIGNvbXBpbGVycyB0aGF0IHN1cHBvcnQgaXQgKG5vdGFibHk6IGdjYywgU3VuUHJvLCBpY2MpLCB0aGUgYnl0ZWNvZGUKLSAgZXZhbHVhdGlvbiBsb29wIGlzIGNvbXBpbGVkIHdpdGggYSBuZXcgZGlzcGF0Y2ggbWVjaGFuaXNtIHdoaWNoIGdpdmVzCi0gIHNwZWVkdXBzIG9mIHVwIHRvIDIwJSwgZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0sIG9uIHZhcmlvdXMgYmVuY2htYXJrcy4KLQotLSBJc3N1ZSAjNDg3NDogTW9zdCBidWlsdGluIGRlY29kZXJzIG5vdyByZWplY3QgdW5pY29kZSBpbnB1dC4KLQotLSBJc3N1ZSAjNDg0MjogRG9uJ3QgYWxsb3cgdHJhaWxpbmcgJ0wnIHdoZW4gY29uc3RydWN0aW5nIGFuIGludGVnZXIKLSAgZnJvbSBhIHN0cmluZy4KLQotLSBJc3N1ZSAjNDk5MTogb3MuZmRvcGVuIG5vdyByYWlzZXMgYW4gT1NFcnJvciBmb3IgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLgotCi0tIElzc3VlICM0ODM4OiBXaGVuIGEgbW9kdWxlIGlzIGRlYWxsb2NhdGVkLCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUKLSAgb3B0aW9uYWwgbW9kdWxlIHN0YXRlIGRhdGEuCi0KLS0gSXNzdWUgIzQ5MTA6IFJlbmFtZSBuYl9sb25nIHNsb3QgdG8gbmJfcmVzZXJ2ZWQsIGFuZCBjaGFuZ2UgaXRzCi0gIHR5cGUgdG8gYGAodm9pZCAqKWBgLgotCi0tIElzc3VlICM0OTM1OiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgY29kZSBpbiB0aGUgZXhwYW5kdGFicygpIG1ldGhvZCBjb21tb24KLSAgdG8gc3RyLCBieXRlcyBhbmQgYnl0ZWFycmF5IGNvdWxkIGJlIG9wdGltaXplZCBhd2F5IGJ5IHRoZSBjb21waWxlciwgbGV0dGluZwotICB0aGUgaW50ZXJwcmV0ZXIgc2VnZmF1bHQgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLgotCi0tIElzc3VlICMzNzIwOiBGaXggYSBjcmFzaCB3aGVuIGFuIGl0ZXJhdG9yIG1vZGlmaWVzIGl0cyBjbGFzcyBhbmQgcmVtb3ZlcyBpdHMKLSAgX19uZXh0X18gbWV0aG9kLgotCi0tIElzc3VlICM0OTEwOiBCdWlsdGluIGludCgpIGZ1bmN0aW9uIGFuZCBQeU51bWJlcl9Mb25nL1B5TnVtYmVyX0ludCBBUEkKLSAgZnVuY3Rpb24gbm8gbG9uZ2VyIGF0dGVtcHQgdG8gY2FsbCB0aGUgX19sb25nX18gc2xvdCB0byBjb252ZXJ0IGFuIG9iamVjdAotICB0byBhbiBpbnRlZ2VyLiAgT25seSB0aGUgX19pbnRfXyBhbmQgX190cnVuY19fIHNsb3RzIGFyZSBleGFtaW5lZC4KLQotLSBJc3N1ZSAjNDg5MzogVXNlIE5UIHRocmVhZGluZyBvbiBDRS4KLQotLSBJc3N1ZSAjNDkxNTogUG9ydCBzeXNtb2R1bGUgdG8gV2luZG93cyBDRS4KLQotLSBJc3N1ZSAjNDg2ODogdXRmLTgsIHV0Zi0xNiBhbmQgbGF0aW4xIGRlY29kaW5nIGFyZSBub3cgMnggdG8gNHggZmFzdGVyLiBUaGUKLSAgY29tbW9uIGNhc2VzIGFyZSBvcHRpbWl6ZWQgdGhhbmtzIHRvIGEgZGVkaWNhdGVkIGZhc3QgcGF0aCBhbmQgYSBtb2RlcmF0ZQotICBhbW91bnQgb2YgbG9vcCB1bnJvbGxpbmcuCi0KLS0gSXNzdWUgIzQwNzQ6IENoYW5nZSB0aGUgY3JpdGVyaWEgZm9yIGRvaW5nIGEgZnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gKGkuZS4KLSAgY29sbGVjdGluZyB0aGUgb2xkZXN0IGdlbmVyYXRpb24pIHNvIHRoYXQgYWxsb2NhdGluZyBsb3RzIG9mIG9iamVjdHMgd2l0aG91dAotICBkZXN0cm95aW5nIHRoZW0gZG9lcyBub3Qgc2hvdyBxdWFkcmF0aWMgcGVyZm9ybWFuY2UuIEJhc2VkIG9uIGEgcHJvcG9zYWwgYnkKLSAgTWFydGluIHZvbiBMw7Z3aXMgYXQKLSAgaHR0cDovL21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWRldi8yMDA4LUp1bmUvMDgwNTc5Lmh0bWwuCi0KLS0gSXNzdWUgIzQ2MDQ6IFNvbWUgb2JqZWN0cyBvZiB0aGUgSS9PIGxpYnJhcnkgY291bGQgc3RpbGwgYmUgdXNlZCBhZnRlcgotICBoYXZpbmcgYmVlbiBjbG9zZWQgKGZvciBpbnN0YW5jZSwgYSByZWFkKCkgY2FsbCBjb3VsZCByZXR1cm4gc29tZQotICBwcmV2aW91c2x5IGJ1ZmZlcmVkIGRhdGEpLiBQYXRjaCBieSBEbWl0cnkgVmFzaWxpZXYuCi0KLS0gSXNzdWUgIzQ3MDU6IEZpeCB0aGUgLXUgKCJ1bmJ1ZmZlcmVkIGJpbmFyeSBzdGRvdXQgYW5kIHN0ZGVyciIpIGNvbW1hbmQtbGluZQotICBmbGFnIHRvIHdvcmsgcHJvcGVybHkuIEZ1cnRoZXJtb3JlLCB3aGVuIHNwZWNpZnlpbmcgLXUsIHRoZSB0ZXh0IHN0ZG91dAotICBhbmQgc3RkZXJyIHN0cmVhbXMgaGF2ZSBsaW5lLWJ5LWxpbmUgYnVmZmVyaW5nIGVuYWJsZWQgKHRoZSBkZWZhdWx0IGJlaW5nCi0gIHRvIGJ1ZmZlciBhcmJpdHJhcnkgY2h1bmtzIG9mIGRhdGEpLgotCi0tIFRoZSBpbnRlcm5hbCB0YWJsZSwgX1B5TG9uZ19EaWdpdFZhbHVlLCBpcyBub3cgYW4gYXJyYXkgb2YgdW5zaWduZWQgY2hhcnMKLSAgaW5zdGVhZCBvZiBpbnRzIChyZWR1Y2luZyBpdHMgc2l6ZSBmcm9tIDQgdG8gOCB0aW1lcyB0aGVyZWJ5IHJlZHVjaW5nCi0gIFB5dGhvbidzIG92ZXJhbGwgbWVtb3J5KS4KLQotLSBJc3N1ZSAjMTE4MDE5MzogV2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIC5weWMgKG9yIC5weW8pIGZpbGUgd2l0aAotICBhbiBleGlzdGluZyAucHkgY291bnRlcnBhcnQsIG92ZXJyaWRlIHRoZSBjb19maWxlbmFtZSBhdHRyaWJ1dGVzIG9mIGFsbAotICBjb2RlIG9iamVjdHMgaWYgdGhlIG9yaWdpbmFsIGZpbGVuYW1lIGlzIG9ic29sZXRlICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoZQotICBmaWxlIGhhcyBiZWVuIHJlbmFtZWQsIG1vdmVkLCBvciBpZiBpdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGRpZmZlcmVudCBwYXRocykuCi0gIFBhdGNoIGJ5IFppZ2EgU2VpbG5hY2h0IGFuZCBKZWFuLVBhdWwgQ2FsZGVyb25lLgotCi0tIElzc3VlICM0NTgwOiBGaXggc2xpY2luZyBvZiBtZW1vcnl2aWV3cyB3aGVuIHRoZSBpdGVtIHNpemUgaXMgZ3JlYXRlciB0aGFuCi0gIG9uZSBieXRlLiBBbHNvIGZpeGVzIHRoZSBtZWFuaW5nIG9mIGxlbigpIHNvIHRoYXQgaXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mCi0gIGl0ZW1zLCByYXRoZXIgdGhhbiB0aGUgc2l6ZSBpbiBieXRlcy4KLQotLSBJc3N1ZSAjNDA3NTogVXNlIE91dHB1dERlYnVnU3RyaW5nVyBpbiBQeV9GYXRhbEVycm9yLgotCi0tIElzc3VlICM0NzQ3OiBXaGVuIHRoZSB0ZXJtaW5hbCBkb2VzIG5vdCB1c2UgdXRmLTgsIGV4ZWN1dGluZyBhIHNjcmlwdCB3aXRoCi0gIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lIGNvdWxkIGZhaWwgd2l0aCBhICJTeW50YXhFcnJvcjogTm9uZSIgZXJyb3IuCi0KLS0gSXNzdWUgIzQ3OTc6IElPRXJyb3IuZmlsZW5hbWUgd2FzIG5vdCBzZXQgd2hlbiBgYF9maWxlaW8uRmlsZUlPYGAgZmFpbGVkCi0gIHRvIG9wZW4gZmlsZSB3aXRoIGEgYnl0ZXMgZmlsZW5hbWUgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMzY4MDogUmVmZXJlbmNlIGN5Y2xlcyBjcmVhdGVkIHRocm91Z2ggYSBkaWN0LCBzZXQgb3IgZGVxdWUgaXRlcmF0b3IKLSAgZGlkIG5vdCBnZXQgY29sbGVjdGVkLgotCi0tIElzc3VlICM0NzAxOiBQeU9iamVjdF9IYXNoIG5vdyBpbXBsaWNpdGx5IGNhbGxzIFB5VHlwZV9SZWFkeSBvbiB0eXBlcwotICB3aGVyZSB0aGUgdHBfaGFzaCBhbmQgdHBfZGljdCBzbG90cyBhcmUgYm90aCBOVUxMLgotCi0tIElzc3VlICM0NzU5OiBOb25lIGlzIG5vdyBhbGxvd2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBvZgotICBieXRlYXJyYXkudHJhbnNsYXRlKCkuICBJdCB3YXMgYWx3YXlzIGFsbG93ZWQgZm9yIGJ5dGVzLnRyYW5zbGF0ZSgpLgotCi0tIEFkZGVkIHRlc3QgY2FzZSB0byBlbnN1cmUgYXR0ZW1wdHMgdG8gcmVhZCBmcm9tIGEgZmlsZSBvcGVuZWQgZm9yIHdyaXRpbmcKLSAgZmFpbC4KLQotLSBJc3N1ZSAjMzEwNjogU3BlZWR1cCBzb21lIGNvbXBhcmlzb25zIChzdHIvc3RyIGFuZCBpbnQvaW50KS4KLQotLSBJc3N1ZSAjMjE4MzogU2ltcGxpZnkgYW5kIG9wdGltaXplIGJ5dGVjb2RlIGZvciBsaXN0LCBkaWN0IGFuZCBzZXQKLSAgY29tcHJlaGVuc2lvbnMuIE9yaWdpbmFsIHBhdGNoIGZvciBsaXN0IGNvbXByZWhlbnNpb25zIGJ5IE5lYWwgTm9yd2l0ei4KLQotLSBJc3N1ZSAjMjQ2NzogZ2MuREVCVUdfU1RBVFMgcmVwb3J0ZWQgaW52YWxpZCBlbGFwc2VkIHRpbWVzLiBBbHNvLCBhbHdheXMKLSAgcHJpbnQgZWxhcHNlZCB0aW1lcywgbm90IG9ubHkgd2hlbiBzb21lIG9iamVjdHMgYXJlIHVuY29sbGVjdGFibGUgLwotICB1bnJlYWNoYWJsZS4gT3JpZ2luYWwgcGF0Y2ggYnkgTmVpbCBTY2hlbWVuYXVlci4KLQotLSBJc3N1ZSAjMzQzOTogQWRkIGEgYml0X2xlbmd0aCBtZXRob2QgdG8gaW50LgotCi0tIElzc3VlICMyMTczOiBXaGVuIGdldHRpbmcgZGV2aWNlIGVuY29kaW5nLCBjaGVjayB0aGF0IHJldHVybiB2YWx1ZSBvZgotICBubF9sYW5naW5mbyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZy4gIFRoaXMgd2FzIGNhdXNpbmcgc2lsZW50IGJ1aWxkCi0gIGZhaWx1cmVzIG9uIE9TIFguCi0KLS0gSXNzdWUgIzQ1OTc6IEZpeGVkIHNldmVyYWwgb3Bjb2RlcyB0aGF0IHdlcmVuJ3QgYWx3YXlzIHByb3BhZ2F0aW5nCi0gIGV4Y2VwdGlvbnMuCi0KLS0gSXNzdWUgIzQ1ODk6IEZpeGVkIGV4Y2VwdGlvbiBoYW5kbGluZyB3aGVuIHRoZSBfX2V4aXRfXyBmdW5jdGlvbiBvZiBhCi0gIGNvbnRleHQgbWFuYWdlciByZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgYm9vbC4KLQotLSBJc3N1ZSAjNDQ0NTogUmVwbGFjZSAic2l6ZW9mKFB5Qnl0ZXNPYmplY3QpIiB3aXRoCi0gICJvZmZzZXRvZihQeUJ5dGVzT2JqZWN0LCBvYl9zdmFsKSArIDEiIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yCi0gIGJ5dGVzIGluc3RhbmNlcy4gIE9uIGEgdHlwaWNhbCBtYWNoaW5lIHRoaXMgc2F2ZXMgMyBieXRlcyBvZiBtZW1vcnkKLSAgKG9uIGF2ZXJhZ2UpIHBlciBhbGxvY2F0aW9uIG9mIGEgYnl0ZXMgaW5zdGFuY2UuCi0KLS0gSXNzdWUgIzQ1MzM6IEZpbGUgcmVhZCBvcGVyYXRpb24gd2FzIGRyZWFkZnVsbHkgc2xvdyBkdWUgdG8gYSBzbG93bHkKLSAgZ3Jvd2luZyByZWFkIGJ1ZmZlci4gRml4ZWQgYnkgdXNpbmcgdGhlIHNhbWUgZ3Jvd3RoIHJhdGUgYWxnb3JpdGhtIGFzCi0gIFB5dGhvbiAyLnguCi0KLS0gSXNzdWUgIzQ1MDk6IFZhcmlvdXMgaXNzdWVzIHN1cnJvdW5kaW5nIHJlc2l6ZSBvZiBieXRlYXJyYXkgb2JqZWN0cyB0bwotICB3aGljaCB0aGVyZSBhcmUgYnVmZmVyIGV4cG9ydHMgKGUuZy4gbWVtb3J5dmlldyBpbnN0YW5jZXMpLgotCi0tIElzc3VlICM0MjMzOiBDaGFuZ2VkIHNlbWFudGljIG9mIGBgX2ZpbGVpby5GaWxlSU9gYCdzIGBgY2xvc2UoKWBgCi0gIG1ldGhvZCBvbiBmaWxlIG9iamVjdHMgd2l0aCBjbG9zZWZkPUZhbHNlLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIHN0aWxsCi0gIGtlcHQgb3BlbiBidXQgdGhlIGZpbGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGNsb3NlZCBmaWxlLiBUaGUgYGBGaWxlSU9gYAotICBvYmplY3QgYWxzbyBnb3QgYSBuZXcgcmVhZG9ubHkgYXR0cmlidXRlIGBgY2xvc2VmZGBgLgotCi0tIElzc3VlICM0NTY5OiBJbnRlcnByZXRlciBjcmFzaCB3aGVuIG11dGF0aW5nIGEgbWVtb3J5dmlldyB3aXRoIGFuIGl0ZW0gc2l6ZQotICBsYXJnZXIgdGhhbiAxLgotCi0tIElzc3VlICM0NzQ4OiBMYW1iZGEgZ2VuZXJhdG9ycyBubyBsb25nZXIgcmV0dXJuIGEgdmFsdWUuCi0KLS0gVGhlIHJlLnN1YigpLCByZS5zdWJuKCkgYW5kIHJlLnNwbGl0KCkgZnVuY3Rpb25zIG5vdyBhY2NlcHQgYSBmbGFncyBwYXJhbWV0ZXIuCi0KLS0gSXNzdWUgIzUxMDg6IEhhbmRsZSAlcyBsaWtlICVTLCAlUiBhbmQgJUEgaW4gUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCk6IENhbGwKLSAgUHlVbmljb2RlX0RlY29kZVVURjgoKSBvbmNlLCByZW1lbWJlciB0aGUgcmVzdWx0IGFuZCBvdXRwdXQgaXQgaW4gYSBzZWNvbmQKLSAgc3RlcC4gVGhpcyBhdm9pZHMgcHJvYmxlbXMgd2l0aCBjb3VudGluZyBVVEYtOCBieXRlcyB0aGF0IGlnbm9yZXMgdGhlIGVmZmVjdAotICBvZiB1c2luZyB0aGUgcmVwbGFjZSBlcnJvciBoYW5kbGVyIGluIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNzA3MTogYnl0ZS1jb21waWxhdGlvbiBpbiBEaXN0dXRpbHMgaXMgbm93IGRvbmUgd2l0aCByZXNwZWN0IHRvCi0gIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlLgotCi0tIElzc3VlICM3MDY2OiBhcmNoaXZlX3V0aWwubWFrZV9hcmNoaXZlIG5vdyByZXN0b3JlcyB0aGUgY3dkIGlmIGFuIGVycm9yIGlzCi0gIHJhaXNlZC4gSW5pdGlhbCBwYXRjaCBieSBFemlvIE1lbG90dGkuCi0KLS0gSXNzdWUgIzY1MTY6IEFkZGVkIG93bmVyL2dyb3VwIHN1cHBvcnQgd2hlbiBjcmVhdGluZyB0YXIgYXJjaGl2ZXMgaW4KLSAgRGlzdHV0aWxzLgotCi0tIElzc3VlICM2OTU0OiBGaXhlZCBjcmFzaCB3aGVuIHVzaW5nIERJU1RVVElMU19ERUJVRyBmbGFnIGluIERpc3R1dGlscy4KLQotLSBJc3N1ZSAjNjE2MzogRml4ZWQgSFAtVVggcnVudGltZSBsaWJyYXJ5IGRpciBvcHRpb25zIGluCi0gIGRpc3R1dGlscy51bml4Y29tcGlsZXIuIEluaXRpYWwgcGF0Y2ggYnkgU3JpZGhhciBSYXRuYWt1bWFyIGFuZAotICBNaWNoYWVsIEhhdWJlbndhbGxuZXIuCi0KLS0gSXNzdWUgIzY2OTM6IE5ldyBmdW5jdGlvbnMgaW4gc2l0ZS5weSB0byBnZXQgdXNlci9nbG9iYWwgc2l0ZSBwYWNrYWdlcyBwYXRocy4KLQotLSBJc3N1ZSAjNjUxMTogWmlwRmlsZSBub3cgcmFpc2VzIEJhZFppcGZpbGUgKGluc3RlYWQgb2YgYW4gSU9FcnJvcikgd2hlbgotICBvcGVuaW5nIGFuIGVtcHR5IG9yIHZlcnkgc21hbGwgZmlsZS4KLQotLSBJc3N1ZSAjNjU0NTogUmVtb3ZlZCBhc3NlcnQgc3RhdGVtZW50cyBpbiBkaXN0dXRpbHMuRXh0ZW5zaW9uLCBzbyB0aGUKLSAgYmVoYXZpb3IgaXMgc2ltaWxhciB3aGVuIHVzZWQgd2l0aCAtTy4KLQotLSB1bml0dGVzdCBoYXMgYmVlbiBzcGxpdCB1cCBpbnRvIGEgcGFja2FnZS4gIEFsbCBvbGQgbmFtZXMgc2hvdWxkIHN0aWxsIHdvcmsuCi0KLS0gSXNzdWUgIzY0NjY6IG5vdyBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGFuZCBkaXN0dXRpbHMuZW14Y2NvbXBpbGVyCi0gIHVzZXMgdGhlIHNhbWUgcmVmYWN0b3JlZCBmdW5jdGlvbiB0byBnZXQgZ2NjL2xkL2RsbHdyYXAgdmVyc2lvbnMgbnVtYmVycy4KLSAgSXQncyBgZGlzdHV0aWxzLnV0aWwuZ2V0X2NvbXBpbGVyX3ZlcnNpb25zYC4gQWRkZWQgZGVwcmVjYXRpb24gd2FybmluZ3MKLSAgZm9yIHRoZSBvYnNvbGV0ZSBnZXRfdmVyc2lvbnMoKSBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzY0MzM6IGZpeGVkIGlzc3VlcyB3aXRoIG11bHRpcHJvY2Vzc2luZy5wb29sLm1hcCBoYW5naW5nIG9uIGVtcHR5IGxpc3QKLQotLSBJc3N1ZSAjNjMxNDogbG9nZ2luZzogRXh0cmEgY2hlY2tzIG9uIHRoZSAibGV2ZWwiIGFyZ3VtZW50IGluIG1vcmUgcGxhY2VzLgotCi0tIElzc3VlICMyNjIyOiBGaXhlZCBhbiBJbXBvcnRFcnJvciB3aGVuIGltcG9ydGluZyBlbWFpbC5tZXNzYWdlIGZyb20gYQotICBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIGJ1aWx0IHdpdGggcHkyZXhlIG9yIHB5MmFwcC4KLQotLSBJc3N1ZSAjNjQ1NTogRml4ZWQgdGVzdF9idWlsZF9leHQgdW5kZXIgd2luMzIuCi0KLS0gSXNzdWUgIzYzNzc6IEVuYWJsZWQgdGhlIGNvbXBpbGVyIG9wdGlvbiwgYW5kIGRlcHJlY2F0ZSBpdHMgdXNhZ2UgYXMgYW4KLSAgYXR0cmlidXRlLgotCi0tIElzc3VlICM2NDEzOiBGaXhlZCB0aGUgbG9nIGxldmVsIGluIGRpc3R1dGlscy5kaXN0IGZvciBhbm5vdW5jZS4KLQotLSBJc3N1ZSAjNjQwMzogRml4ZWQgcGFja2FnZSBwYXRoIHVzYWdlIGluIGJ1aWxkX2V4dC4KLQotLSBJc3N1ZXMgIzUxNTUsIDUzMTMsIDUzMzE6IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9ib290c3RyYXAgd2FzCi0gIHVuY29uZGl0aW9uYWxseSBjYWxsaW5nICJvcy5jbG9zZShzeXMuc3RkaW4uZmlsZW5vKCkpIiByZXN1bHRpbmcgaW4gZmlsZQotICBkZXNjcmlwdG9yIGVycm9ycwotCi0tIElzc3VlICM2MzY1OiBEaXN0dXRpbHMgYnVpbGRfZXh0IGlucGxhY2UgbW9kZSB3YXMgY29weWluZyB0aGUgY29tcGlsZWQKLSAgZXh0ZW5zaW9uIGluIGEgc3ViZGlyZWN0b3J5IGlmIHRoZSBleHRlbnNpb24gbmFtZSBoYWQgZG90cy4KLQotLSBJc3N1ZSAjNjE2NDogQWRkZWQgYW4gQUlYIHNwZWNpZmljIGxpbmtlciBhcmd1bWVudCBpbiBEaXN0dXRpbHMKLSAgdW5peGNvbXBpbGVyLiBPcmlnaW5hbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLS0gSXNzdWUgIzYyODY6IE5vdyBEaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgaXMgYmFzZWQgb24gdXJsbGliMiBpbnN0ZWFkIG9mCi0gIGh0dHBsaWIsIGFsbG93aW5nIHRoZSB1c2FnZSBvZiBodHRwX3Byb3h5LgotCi0tIElzc3VlICM2Mjg3OiBBZGRlZCB0aGUgbGljZW5zZSBmaWVsZCBpbiBEaXN0dXRpbHMgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNjI2MzogRml4ZWQgc3ludGF4IGVycm9yIGluIGRpc3R1dGlscy5jeWd3aW5jb21waWxlci4KLQotLSBJc3N1ZSAjNTIwMTogZGlzdHV0aWxzLnN5c2NvbmZpZy5wYXJzZV9tYWtlZmlsZSgpIG5vdyB1bmRlcnN0YW5kcyBgJCRgCi0gIGluIE1ha2VmaWxlcy4gVGhpcyBwcmV2ZW50cyBjb21waWxlIGVycm9ycyB3aGVuIHVzaW5nIHN5bnRheCBsaWtlOgotICBgTERGTEFHUz0nLXJwYXRoPVwkJExJQjovc29tZS9vdGhlci9wYXRoJ2AuIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIElzc3VlICM2MTMxOiB0ZXN0X21vZHVsZWZpbmRlciBsZWFrZWQgd2hlbiBydW4gYWZ0ZXIgdGVzdF9kaXN0dXRpbHMuCi0gIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICM2MDQ4OiBOb3cgRGlzdHV0aWxzIHVzZXMgdGhlIHRhcmZpbGUgbW9kdWxlIGluIGFyY2hpdmVfdXRpbC4KLQotLSBJc3N1ZSAjNjA2MjogSW4gZGlzdHV0aWxzLCBmaXhlZCB0aGUgcGFja2FnZSBvcHRpb24gb2YgYnVpbGRfZXh0LiBGZWVkYmFjawotICBhbmQgdGVzdHMgb24gcHl3aW4zMiBieSBUaW0gR29sZGVuLgotCi0tIElzc3VlICM2MDUzOiBGaXhlZCBkaXN0dXRpbHMgdGVzdHMgb24gd2luMzIuIHBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICM2MDQ2OiBGaXhlZCB0aGUgbGlicmFyeSBleHRlbnNpb24gd2hlbiBkaXN0dXRpbHMgYnVpbGRfZXh0IGlzIHVzZWQKLSAgaW5wbGFjZS4gSW5pdGlhbCBwYXRjaCBieSBSb3VtZW4gUGV0cm92LgotCi0tIElzc3VlICM2MDQxOiBOb3cgZGlzdHV0aWxzIGBzZGlzdGAgYW5kIGByZWdpc3RlcmAgY29tbWFuZHMgdXNlIGBjaGVja2AgYXMgYQotICBzdWJjb21tYW5kLgotCi0tIElzc3VlICM2MDIyOiBhIHRlc3QgZmlsZSB3YXMgY3JlYXRlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBieQotICB0ZXN0X2dldF9vdXRwdXRzIGluIERpc3R1dGlscy4KLQotLSBJc3N1ZSAjNTk3NzogZGlzdHV0aWxzIGJ1aWxkX2V4dC5nZXRfb3V0cHV0cyB3YXMgbm90IHRha2luZyBpbnRvIGFjY291bnQgdGhlCi0gIGlucGxhY2Ugb3B0aW9uLiBJbml0aWFsIHBhdGNoIGJ5IGt4cm9iZXJ0by4KLQotLSBJc3N1ZSAjNTk4NDogZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfZXh0LmNoZWNrX2V4dGVuc2lvbnNfbGlzdCBjaGVja3Mgd2VyZSBicm9rZW4KLSAgZm9yIG9sZC1zdHlsZSBleHRlbnNpb25zLgotCi0tIElzc3VlICM1OTc2OiBGaXhlZCBEaXN0dXRpbHMgdGVzdF9jaGVja19lbnZpcm9uLgotCi0tIElzc3VlICM1OTQxOiBEaXN0dXRpbHMgYnVpbGRfY2xpYiBjb21tYW5kIHdhcyBub3Qgd29ya2luZyBhbnltb3JlIGJlY2F1c2UKLSAgb2YgYW4gaW5jb21wbGV0ZSBjb3N0dW1pemF0aW9uIG9mIHRoZSBhcmNoaXZlciBjb21tYW5kLiBBZGRlZCBBUkZMQUdTIGluIHRoZQotICBNYWtlZmlsZSBiZXNpZGVzIEFSIGFuZCBtYWtlIERpc3R1dGlscyB1c2UgaXQuIE9yaWdpbmFsIHBhdGNoIGJ5IERhdmlkCi0gIENvdXJuYXBlYXUuCi0KLS0gSXNzdWUgIzIyNDU6IGFpZmMgbm93IHNraXBzIGNodW5rIHR5cGVzIGl0IGRvZXNuJ3QgcmVjb2duaXplLCBwZXIgc3BlYy4KLQotLSBJc3N1ZSAjNTg3NDogZGlzdHV0aWxzLnRlc3RzLnRlc3RfY29uZmlnX2NtZCBpcyBub3QgbG9jYWxlLXNlbnNpdGl2ZQotICBhbnltb3JlLgotCi0tIElzc3VlICM1ODEwOiBGaXhlZCBEaXN0dXRpbHMgdGVzdF9idWlsZF9zY3JpcHRzIHNvIGl0IHVzZXMKLSAgc3lzY29uZmlnLmdldF9jb25maWdfdmFycy4KLQotLSBJc3N1ZSAjNDk1MTogRml4ZWQgZmFpbHVyZSBpbiB0ZXN0X2h0dHBzZXJ2ZXJzLgotCi0tIElzc3VlICM1Nzk1OiBGaXhlZCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlIG9uIERlYmlhbiBwcGMuCi0KLS0gSXNzdWUgIzU2MDc6IGZpeGVkIERpc3R1dGlscyB0ZXN0X2dldF9wbGF0Zm9ybSBmb3IgTWFjIE9TIFggZmF0IGJpbmFyaWVzLgotCi0tIElzc3VlICM1NzQxOiBkb24ndCBkaXNhbGxvdyAiJSUiICh3aGljaCBpcyBhbiBlc2NhcGUgZm9yICIlIikgd2hlbiBzZXR0aW5nCi0gIGEgdmFsdWUgaW4gU2FmZUNvbmZpZ1BhcnNlci4KLQotLSBJc3N1ZSAjNTczMjogYWRkZWQgYSBuZXcgY29tbWFuZCBpbiBEaXN0dXRpbHM6IGNoZWNrLgotCi0tIElzc3VlICM1NzMxOiBEaXN0dXRpbHMgYmRpc3Rfd2luaW5zdCBubyBsb25nZXIgd29ya2VkIG9uIG5vbi1XaW5kb3dzCi0gIHBsYXRmb3Jtcy4gSW5pdGlhbCBwYXRjaCBieSBQYXVsIE1vb3JlLgotCi0tIElzc3VlICM1MDk1OiBBZGRlZCBiZGlzdF9tc2kgdG8gdGhlIGxpc3Qgb2YgYmRpc3Qgc3VwcG9ydGVkIGZvcm1hdHMuCi0gIEluaXRpYWwgZml4IGJ5IFN0ZXZlbiBCZXRoYXJkLgotCi0tIElzc3VlICMxNDkxNDMxOiBGaXhlZCBkaXN0dXRpbHMuZmlsZWxpc3QuZ2xvYl90b19yZSBmb3IgZWRnZSBjYXNlcy4KLSAgSW5pdGlhbCBmaXggYnkgV2F5bmUgRGF2aXNvbi4KLQotLSBJc3N1ZSAjNTY5NDogcmVtb3ZlZCBzcHVyaW91cyB0ZXN0IG91dHB1dCBpbiBEaXN0dXRpbHMgKHRlc3RfY2xlYW4pLgotCi0tIElzc3VlICMxMzI2MDc3OiBmaXggdGhlIGZvcm1hdHRpbmcgb2YgU3ludGF4RXJyb3JzIGJ5IHRoZSB0cmFjZWJhY2sgbW9kdWxlLgotCi0tIElzc3VlICMxNjY1MjA2IChwYXJ0aWFsbHkpOiBNb3ZlIGltcG9ydHMgaW4gY2dpdGIgdG8gdGhlIHRvcCBvZiB0aGUgbW9kdWxlCi0gIGluc3RlYWQgb2YgcGVyZm9ybWluZyB0aGVtIGluIGZ1bmN0aW9ucy4gSGVscHMgcHJldmVudCBpbXBvcnQgZGVhZGxvY2tpbmcgaW4KLSAgdGhyZWFkcy4KLQotLSBJc3N1ZSAjMjUyMjogbG9jYWxlLmZvcm1hdCBub3cgY2hlY2tzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBlbnN1cmUgaXQgaGFzCi0gIGJlZW4gcGFzc2VkIG9ubHkgb25lIHBhdHRlcm4sIGF2b2lkaW5nIG15c3RlcmlvdXMgZXJyb3JzIHdoZXJlIGl0IGFwcGVhcmVkCi0gIHRoYXQgaXQgd2FzIGZhaWxpbmcgdG8gZG8gbG9jYWxpemF0aW9uLgotCi0tIElzc3VlICM1NTgzOiBBZGRlZCBvcHRpb25hbCBFeHRlbnNpb25zIGluIERpc3R1dGlscy4gSW5pdGlhbCBwYXRjaCBieSBHZW9yZwotICBCcmFuZGwuCi0KLS0gSXNzdWUgIzEyMjI6IGxvY2FsZS5mb3JtYXQoKSBidWcgd2hlbiB0aGUgdGhvdXNhbmRzIHNlcGFyYXRvciBpcyBhIHNwYWNlCi0gIGNoYXJhY3Rlci4KLQotLSBJc3N1ZSAjNTQ3MjogRml4ZWQgZGlzdHV0aWxzLnRlc3RfdXRpbCB0ZWFyIGRvd24uIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFRpbSBHb2xkZW4uCi0KLS0gY29sbGVjdGlvbnMuZGVxdWUoKSBvYmplY3RzIG5vdyBoYXZlIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZSBjYWxsZWQgbWF4bGVuLgotCi0tIElzc3VlICMyNjM4OiBTaG93IGEgd2luZG93IGNvbnN0cnVjdGVkIHdpdGggdGtTaW1wbGVEaWFsb2cuRGlhbG9nIG9ubHkgYWZ0ZXIKLSAgaXQgaXMgaGFzIGJlZW4gcG9wdWxhdGVkIGFuZCBwcm9wZXJseSBjb25maWd1cmVkIGluIG9yZGVyIHRvIHByZXZlbnQKLSAgd2luZG93IGZsYXNoaW5nLgotCi0tIElzc3VlICM0NzkyOiBQcmV2ZW50IGEgc2VnZmF1bHQgaW4gX3RraW50ZXIgYnkgdXNpbmcgdGhlCi0gIGd1YXJhbnRlZWQgdG8gYmUgc2FmZSBpbnRlcnAgYXJndW1lbnQgZ2l2ZW4gdG8gdGhlIFB5dGhvbkNtZCBpbiBwbGFjZSBvZgotICB0aGUgVGNsIGludGVycHJldGVyIHRha2VuIGZyb20gYSBQeXRob25DbWRfQ2xpZW50RGF0YS4KLQotLSBJc3N1ZSAjNTE5MzogR3VhcmFudGVlIHRoYXQgdGtpbnRlci5UZXh0LnNlYXJjaCByZXR1cm5zIGEgc3RyaW5nLgotCi0tIElzc3VlICM1Mzk0OiByZW1vdmVkID4gMi4zIHN5bnRheCBmcm9tIGRpc3R1dGlscy5tc3ZjOWNvbXBpbGVyLgotICBPcmlnaW5hbCBwYXRjaCBieSBBa2lyYSBLaXRhZGEuCi0KLS0gSXNzdWUgIzUzMzQ6IGFycmF5LmZyb21maWxlKCkgZmFpbGVkIHRvIGluc2VydCB2YWx1ZXMgd2hlbiBFT0ZFcnJvciB3YXMgcmFpc2VkLgotCi0tIElzc3VlICM1Mzg1OiBGaXhlZCBtbWFwIGNyYXNoIGFmdGVyIHJlc2l6ZSBmYWlsdXJlIG9uIHdpbmRvd3MuCi0KLS0gSXNzdWUgIzUxNzk6IEZpeGVkIHN1YnByb2Nlc3MgaGFuZGxlIGxlYWsgb24gZmFpbHVyZSBvbiB3aW5kb3dzLgotCi0tIFBFUCAzNzI6ICBBZGRlZCBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpLgotCi0tIFRoZSBfYXNkaWN0KCkgZm9yIG1ldGhvZCBmb3IgbmFtZWR0dXBsZXMgbm93IHJldHVybnMgYW4gT3JkZXJlZERpY3QoKS4KLQotLSBjb25maWdwYXJzZXIgbm93IGRlZmF1bHRzIHRvIHVzaW5nIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4KLQotLSBJc3N1ZSAjNTQwMTogRml4ZWQgYSBwZXJmb3JtYW5jZSBwcm9ibGVtIGluIG1pbWV0eXBlcyB3aGVuIGBgZnJvbSBtaW1ldHlwZXMKLSAgaW1wb3J0IGd1ZXNzX2V4dGVuc2lvbmBgIHdhcyB1c2VkLgotCi0tIElzc3VlICMxNzMzOTg2OiBGaXhlZCBtbWFwIGNyYXNoIGluIGFjY2Vzc2luZyBlbGVtZW50cyBvZiBzZWNvbmQgbWFwIG9iamVjdAotICB3aXRoIHNhbWUgdGFnbmFtZSBidXQgbGFyZ2VyIHNpemUgdGhhbiBmaXJzdCBtYXAuIChXaW5kb3dzKQotCi0tIElzc3VlICM1Mzg2OiBtbWFwLndyaXRlX2J5dGUgZGlkbid0IGNoZWNrIG1hcCBzaXplLCBzbyBpdCBjb3VsZCBjYXVzZSBidWZmZXIKLSAgb3ZlcnJ1bi4KLQotLSBJc3N1ZSAjMTUzMzE2NDogSW5zdGFsbGVkIGJ1dCBub3QgbGlzdGVkIGBgKi5weW9gYCB3YXMgYnJlYWtpbmcgRGlzdHV0aWxzCi0gIGJkaXN0X3JwbSBjb21tYW5kLgotCi0tIElzc3VlICM1Mzc4OiBhZGRlZCAtLXF1aWV0IG9wdGlvbiB0byBEaXN0dXRpbHMgYmRpc3RfcnBtIGNvbW1hbmQuCi0KLS0gSXNzdWUgIzUwNTI6IG1ha2UgRGlzdHV0aWxzIGNvbXBhdGlibGUgd2l0aCAyLjMgYWdhaW4uCi0KLS0gSXNzdWUgIzUzMTY6IEZpeGVkIGJ1aWxkYm90IGZhaWx1cmVzIGludHJvZHVjZWQgYnkgbXVsdGlwbGUgaW5oZXJpdGFuY2UKLSAgaW4gRGlzdHV0aWxzIHRlc3RzLgotCi0tIElzc3VlICM1Mjg3OiBBZGQgZXhjZXB0aW9uIGhhbmRsaW5nIGFyb3VuZCBmaW5kQ2FsbGVyKCkgY2FsbCB0byBoZWxwIG91dAotICBJcm9uUHl0aG9uLgotCi0tIElzc3VlICM1MjgyOiBGaXhlZCBtbWFwIHJlc2l6ZSBvbiAzMmJpdCB3aW5kb3dzIGFuZCB1bml4LiBXaGVuIG9mZnNldCA+IDAsCi0gIFRoZSBmaWxlIHdhcyByZXNpemVkIHRvIHdyb25nIHNpemUuCi0KLS0gSXNzdWUgIzUyOTI6IEZpeGVkIG1tYXAgY3Jhc2ggb24gaXRzIGJvdW5kYXJ5IGFjY2VzcyBtW2xlbihtKV0uCi0KLS0gSXNzdWUgIzIyNzk6IGRpc3R1dGlscy5zZGlzdC5hZGRfZGVmYXVsdHMgbm93IGFkZCBmaWxlcwotICBmcm9tIHRoZSBwYWNrYWdlX2RhdGEgYW5kIHRoZSBkYXRhX2ZpbGVzIG1ldGFkYXRhLgotCi0tIElzc3VlICM1MjU3OiByZWZhY3RvcmVkIGFsbCB0ZXN0cyBpbiBkaXN0dXRpbHMsIHNvIHRoZXkgdXNlCi0gIHN1cHBvcnQuVGVtcGRpck1hbmFnZXIsIHRvIGF2b2lkIHdyaXRpbmcgaW4gdGhlIHRlc3RzIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjNDUyNDogZGlzdHV0aWxzIGJ1aWxkX3NjcmlwdCBjb21tYW5kIGZhaWxlZCB3aXRoIC0td2l0aC1zdWZmaXg9My4KLSAgSW5pdGlhbCBwYXRjaCBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KLQotLSBJc3N1ZSAjMjQ2MTogYWRkZWQgdGVzdHMgZm9yIGRpc3R1dGlscy51dGlsCi0KLS0gSXNzdWUgIzQ5OTg6IFRoZSBtZW1vcnkgc2F2aW5nIGVmZmVjdCBvZiBfX3Nsb3RzX18gaGFkIGJlZW4gbG9zdCBvbiBGcmFjdGlvbnMKLSAgd2hpY2ggaW5oZXJpdGVkIGZyb20gbnVtYmVycy5weSB3aGljaCBkaWQgbm90IGhhdmUgX19zbG90c19fIGRlZmluZWQuICBUaGUKLSAgbnVtYmVycyBoaWVyYXJjaHkgbm93IGhhcyBpdHMgb3duIF9fc2xvdHNfXyBkZWNsYXJhdGlvbnMuCi0KLS0gSXNzdWUgIzQ2MzE6IEZpeCB1cmxvcGVuKCkgcmVzdWx0IHdoZW4gYW4gSFRUUCByZXNwb25zZSB1c2VzIGNodW5rZWQKLSAgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzUyMDM6IEZpeGVkIGN0eXBlcyBzZWdmYXVsdHMgd2hlbiBwYXNzaW5nIGEgdW5pY29kZSBzdHJpbmcgdG8gYQotICBmdW5jdGlvbiB3aXRob3V0IGFyZ3R5cGVzIChvbmx5IG9jY3VycyBpZiBIQVZFX1VTQUJMRV9XQ0hBUl9UIGlzIGZhbHNlKS4KLQotLSBJc3N1ZSAjMzM4NjogZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYiBwcmVmaXggYXJndW1lbnQgd2FzIGlnbm9yZWQKLSAgdW5kZXIgTlQgYW5kIE9TMi4gUGF0Y2ggYnkgUGhpbGlwIEplbnZleS4KLQotLSBJc3N1ZSAjNTEyODogTWFrZSBjb21waWxlYWxsIHByb3Blcmx5IGluc3BlY3QgYnl0ZWNvZGUgdG8gZGV0ZXJtaW5lIGlmIG5lZWRzCi0gIHRvIGJlIHJlY3JlYXRlZC4gVGhpcyBhdm9pZHMgYSB0aW1pbmcgaG9sZSB0aGFua3MgdG8gdGhlIG9sZCByZWxpYW5jZSBvbiB0aGUKLSAgY3RpbWUgb2YgdGhlIGZpbGVzIGludm9sdmVkLgotCi0tIElzc3VlICM1MTIyOiBTeW5jaHJvbml6ZSB0ayBsb2FkIGZhaWx1cmUgY2hlY2sgdG8gcHJldmVudCBhIHBvdGVudGlhbAotICBkZWFkbG9jay4KLQotLSBJc3N1ZSAjMTgxODogY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIG5vdyBzdXBwb3J0cyBhIGtleXdvcmQgYXJndW1lbnQKLSAgJ3JlbmFtZScgd2hpY2ggbGV0cyBpbnZhbGlkIGZpZWxkbmFtZXMgYmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8KLSAgcG9zaXRpb25hbCBuYW1lcyBpbiB0aGUgZm9ybSwgXzEsIF8yLCAuLi4KLQotLSBJc3N1ZSAjNDg5MDogSGFuZGxlIGVtcHR5IHRleHQgc2VhcmNoIHBhdHRlcm4gaW4gVGtpbnRlci5UZXh0LnNlYXJjaC4KLQotLSBJc3N1ZSAjNDUxMiAocGFydCAyKTogUHJvbW90ZSBgYFppcEltcG9ydGVyLl9nZXRfZmlsZW5hbWUoKWBgIHRvIGJlIGEKLSAgcHVibGljIGRvY3VtZW50ZWQgbWV0aG9kIGBgWmlwSW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lKClgYC4KLQotLSBJc3N1ZSAjNDE5NTogVGhlIGBgcnVucHlgYCBtb2R1bGUgKGFuZCB0aGUgYGAtbWBgIHN3aXRjaCkgbm93IHN1cHBvcnQKLSAgdGhlIGV4ZWN1dGlvbiBvZiBwYWNrYWdlcyBieSBsb29raW5nIGZvciBhbmQgZXhlY3V0aW5nIGEgYGBfX21haW5fX2BgCi0gIHN1Ym1vZHVsZSB3aGVuIGEgcGFja2FnZSBuYW1lIGlzIHN1cHBsaWVkLiBJbml0aWFsIHBhdGNoIGJ5IEFuZGkKLSAgVmFqZGEuCi0KLS0gSXNzdWUgIzE3MzE3MDY6IENhbGwgVGNsX0NvbmRpdGlvbkZpbmFsaXplIGZvciBUY2xfQ29uZGl0aW9ucyB0aGF0IHdpbGwKLSAgbm90IGJlIHVzZWQgYWdhaW4gKHRoaXMgcmVxdWlyZXMgVGNsL1RrIDguMy4xKSwgYWxzbyBmaXggYSBtZW1vcnkgbGVhayBpbgotICBUa2FwcF9DYWxsIHdoZW4gY2FsbGluZyBmcm9tIGEgdGhyZWFkIGRpZmZlcmVudCB0aGFuIHRoZSBvbmUgdGhhdCBjcmVhdGVkCi0gIHRoZSBUY2wgaW50ZXJwcmV0ZXIuIFBhdGNoIGJ5IFJvYmVydCBIYW5jb2NrLgotCi0tIElzc3VlICM0Mjg1OiBDaGFuZ2Ugc3lzLnZlcnNpb25faW5mbyB0byBiZSBhIG5hbWVkIHR1cGxlLiBQYXRjaCBieQotICBSb3NzIExpZ2h0LgotCi0tIElzc3VlICMxNTIwODc3OiBOb3cgZGlzdHV0aWxzLnN5c2NvbmZpZyByZWFkcyAkQVIgZnJvbSB0aGUKLSAgZW52aXJvbm1lbnQvTWFrZWZpbGUuIFBhdGNoIGJ5IERvdWdsYXMgR3JlaW1hbi4KLQotLSBJc3N1ZSAjMTI3Njc2ODogVGhlIHZlcmJvc2Ugb3B0aW9uIHdhcyBub3QgdXNlZCBpbiB0aGUgY29kZSBvZgotICBkaXN0dXRpbHMuZmlsZV91dGlsIGFuZCBkaXN0dXRpbHMuZGlyX3V0aWwuCi0KLS0gSXNzdWUgIzUxMzI6IEZpeGVkIHRyb3VibGUgYnVpbGRpbmcgZXh0ZW5zaW9ucyB1bmRlciBTb2xhcmlzIHdpdGgKLSAgLS1lbmFibGVkLXNoYXJlZCBhY3RpdmF0ZWQuIEluaXRpYWwgcGF0Y2ggYnkgRGF2ZSBQZXRlcnNvbi4KLQotLSBJc3N1ZSAjMTU4MTQ3NjogQWx3YXlzIHVzZSB0aGUgVGNsIGdsb2JhbCBuYW1lc3BhY2Ugd2hlbiBjYWxsaW5nIGludG8gVGNsLgotCi0tIFRoZSBzaGVsdmUgbW9kdWxlIG5vdyBkZWZhdWx0cyB0byBwaWNrbGUgcHJvdG9jb2wgMy4KLQotLSBGaXggYSBidWcgaW4gdGhlIHRyYWNlIG1vZHVsZSB3aGVyZSBhIGJ5dGVzIG9iamVjdCBmcm9tIGNvX2xub3RhYiBoYWQgaXRzCi0gIGl0ZW1zIGJlaW5nIHBhc3NlZCB0aHJvdWdoIG9yZCgpLgotCi0tIElzc3VlICMyMDQ3OiBzaHV0aWwubW92ZSgpIGNvdWxkIGJlbGlldmUgdGhhdCBpdHMgZGVzdGluYXRpb24gcGF0aCB3YXMKLSAgaW5zaWRlIGl0cyBzb3VyY2UgcGF0aCBpZiBpdCBiZWdhbiB3aXRoIHRoZSBzYW1lIGxldHRlcnMgKGUuZy4gInNyYyIgdnMuCi0gICJzcmMubmV3IikuCi0KLS0gQWRkZWQgdGhlIHR0ayBtb2R1bGUuIFNlZSBpc3N1ZSAjMjk4MzogVHRrIHN1cHBvcnQgZm9yIFRraW50ZXIuCi0KLS0gUmVtb3ZlZCBpc1NlcXVlbmNlVHlwZSgpLCBpc01hcHBpbmdUeXBlLCBhbmQgaXNOdW1iZXJUeXBlKCkgZnJvbSB0aGUKLSAgb3BlcmF0b3IgbW9kdWxlOyB1c2UgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBpbnN0ZWFkLiAgQWxzbyByZW1vdmVkCi0gIHRoZSByZXBlYXQoKSBmdW5jdGlvbjsgdXNlIG11bCgpIGluc3RlYWQuCi0KLS0gSXNzdWUgIzUwMjE6ICBkb2N0ZXN0LnRlc3RmaWxlKCkgZGlkIG5vdCBjcmVhdGUgX19uYW1lX18gYW5kCi0gIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSByZWxpZWQgb24gX19uYW1lX18gYmVpbmcgZGVmaW5lZC4KLQotLSBCYWNrcG9ydCBpbXBvcnRsaWIgZnJvbSBQeXRob24gMy4xLiBPbmx5IHRoZSBpbXBvcnRfbW9kdWxlKCkgZnVuY3Rpb24gaGFzCi0gIGJlZW4gYmFja3BvcnRlZCB0byBoZWxwIGZhY2lsaXRhdGUgdHJhbnNpdGlvbnMgZnJvbSAyLjcgdG8gMy4xLgotCi0tIElzc3VlICMxODg1OiBkaXN0dXRpbHMuIFdoZW4gcnVubmluZyBzZGlzdCB3aXRoIC0tZm9ybWF0cz10YXIsZ3p0YXIKLSAgdGhlIHRhciBmaWxlIHdhcyBvdmVycmlkZW4gYnkgdGhlIGd6dGFyIG9uZS4KLQotLSBJc3N1ZSAjNDg2MzogZGlzdHV0aWxzLm13ZXJrc2NvbXBpbGVyIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gQWRkZWQgYSBuZXcgaXRlcnRvb2xzIGZ1bmN0aW9uczogIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCkKLSAgYW5kIGNvbXByZXNzKCkuCi0KLS0gSXNzdWUgIzUwMzI6ICBhZGRlZCBhIHN0ZXAgYXJndW1lbnQgdG8gaXRlcnRvb2xzLmNvdW50KCkgYW5kCi0gIGFsbG93ZWQgbm9uLWludGVnZXIgYXJndW1lbnRzLgotCi0tIEZpeCBhbmQgcHJvcGVybHkgZG9jdW1lbnQgdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUncyBsb2dnaW5nCi0gIHN1cHBvcnQsIGV4cG9zZSB0aGUgaW50ZXJuYWwgbGV2ZWxzIGFuZCBwcm92aWRlIHByb3BlciB1c2FnZQotICBleGFtcGxlcy4KLQotLSBJc3N1ZSAjMTY3MjMzMjogZml4IHVucGlja2xpbmcgb2Ygc3Vibm9ybWFsIGZsb2F0cywgd2hpY2ggd2FzCi0gIHByb2R1Y2luZyBhIFZhbHVlRXJyb3Igb24gc29tZSBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzM4ODE6IEhlbHAgVGNsIHRvIGxvYWQgZXZlbiB3aGVuIHN0YXJ0ZWQgdGhyb3VnaCB0aGUKLSAgdW5yZWFkYWJsZSBsb2NhbCBzeW1saW5rIHRvICJQcm9ncmFtIEZpbGVzIiBvbiBWaXN0YS4KLQotLSBJc3N1ZSAjNDcxMDogRXh0cmFjdCBkaXJlY3RvcmllcyBwcm9wZXJseSBpbiB0aGUgemlwZmlsZSBtb2R1bGU7Ci0gIGFsbG93IGFkZGluZyBkaXJlY3RvcmllcyB0byBhIHppcGZpbGUuCi0KLS0gSXNzdWUgIzM4MDc6IF9tdWx0aXByb2Nlc3NpbmcgYnVpbGQgZmFpbHMgd2hlbiBjb25maWd1cmUgaXMgcGFzc2VkCi0gIC0td2l0aG91dC10aHJlYWRzIGFyZ3VtZW50LiBXaGVuIHRoaXMgb2NjdXJzLCBfbXVsdGlwcm9jZXNzaW5nIHdpbGwKLSAgYmUgZGlzYWJsZWQsIGFuZCBub3QgY29tcGlsZWQuCi0KLS0gSXNzdWUgIzUwMDg6IFdoZW4gYSBmaWxlIGlzIG9wZW5lZCBpbiBhcHBlbmQgbW9kZSB3aXRoIHRoZSBuZXcgSU8gbGlicmFyeSwKLSAgZG8gYW4gZXhwbGljaXQgc2VlayB0byB0aGUgZW5kIG9mIGZpbGUgKHNvIHRoYXQgZS5nLiB0ZWxsKCkgcmV0dXJucyB0aGUKLSAgZmlsZSBzaXplIHJhdGhlciB0aGFuIDApLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYmVoYXZpb3VyIG9mIHRoZQotICB0cmFkaXRpb25hbCAyLnggZmlsZSBvYmplY3QuCi0KLS0gSXNzdWUgIzUwMTM6IEZpeGVkIGEgYnVnIGluIEZpbGVIYW5kbGVyIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIGRlbGF5Ci0gIHBhcmFtZXRlciB3YXMgc2V0LgotCi0tIElzc3VlICM0ODQyOiBBbHdheXMgYXBwZW5kIGEgdHJhaWxpbmcgJ0wnIHdoZW4gcGlja2xpbmcgbG9uZ3MgdXNpbmcKLSAgcGlja2xlIHByb3RvY29sIDAuICBXaGVuIHJlYWRpbmcsIHRoZSAnTCcgaXMgb3B0aW9uYWwuCi0KLS0gQWRkIHRoZSBpbXBvcnRsaWIgcGFja2FnZS4KLQotLSBJc3N1ZSAjNDMwMTogUGF0Y2ggdGhlIGxvZ2dpbmcgbW9kdWxlIHRvIGFkZCBwcm9jZXNzTmFtZSBzdXBwb3J0LCByZW1vdmUKLSAgX2NoZWNrX2xvZ2dlcl9jbGFzcyBmcm9tIG11bHRpcHJvY2Vzc2luZy4KLQotLSBJc3N1ZSAjMzMyNTogUmVtb3ZlIHB5dGhvbjIueCB0cnk6IGV4Y2VwdDogaW1wb3J0cyBmb3Igb2xkIGNQaWNrbGUgZnJvbQotICBtdWx0aXByb2Nlc3NpbmcuCi0KLS0gSXNzdWUgIzQ5NTk6IGluc3BlY3QuZm9ybWF0YXJnc3BlYyBub3cgd29ya3MgZm9yIGtleXdvcmQgb25seSBhcmd1bWVudHMKLSAgd2l0aG91dCBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMzMyMTogYGBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oKWBgIGRvZXNuJ3QgY2hlY2sgaGFuZGxlOyBhZGRlZCBjaGVja3MKLSAgZm9yIFVuaXggbWFjaGluZXMgZm9yIG5lZ2F0aXZlIGhhbmRsZXMgYW5kIGxhcmdlIGludCBoYW5kbGVzLiBXaXRob3V0IHRoaXMgY2hlY2sKLSAgaXQgaXMgcG9zc2libGUgdG8gc2VnZmF1bHQgdGhlIGludGVycHJldGVyLgotCi0tIElzc3VlICM0NDQ5OiBBc3NlcnRpb25FcnJvciBpbiBtcF9iZW5jaG1hcmtzLnB5LCBjYXVzZWQgYnkgYW4gdW5kZXJseWluZyBpc3N1ZQotICBpbiBzaGFyZWRjdHlwZXMucHkuCi0KLS0gSXNzdWUgIzEyMjUxMDc6IGluc3BlY3QuaXNjbGFzcygpIHJldHVybmVkIFRydWUgZm9yIGluc3RhbmNlcyB3aXRoIGEgY3VzdG9tCi0gIF9fZ2V0YXR0cl9fLgotCi0tIElzc3VlICMzODI2IGFuZCAjNDc5MTogVGhlIHNvY2tldCBtb2R1bGUgbm93IGNsb3NlcyB0aGUgdW5kZXJseWluZyBzb2NrZXQKLSAgYXBwcm9wcmlhdGVseSB3aGVuIGl0IGlzIGJlaW5nIHVzZWQgdmlhIHNvY2tldC5tYWtlZmlsZSgpIG9iamVjdHMKLSAgcmF0aGVyIHRoYW4gZGVsYXlpbmcgdGhlIGNsb3NlIGJ5IHdhaXRpbmcgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkbyBpdC4KLQotLSBJc3N1ZSAjMTY5NjE5OTogIEFkZCBjb2xsZWN0aW9ucy5Db3VudGVyKCkgZm9yIHJhcGlkIGFuZCBjb252ZW5pZW50Ci0gIGNvdW50aW5nLgotCi0tIElzc3VlICMzODYwOiBHemlwRmlsZSBhbmQgQloyRmlsZSBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sLgotCi0tIElzc3VlICM0ODY3OiBGaXhlZCBhIGNyYXNoIGluIGN0eXBlcyB3aGVuIHBhc3NpbmcgYSBzdHJpbmcgdG8gYQotICBmdW5jdGlvbiB3aXRob3V0IGRlZmluaW5nIGFyZ3R5cGVzLgotCi0tIElzc3VlICM0MjcyOiBBZGQgYW4gb3B0aW9uYWwgYXJndW1lbnQgdG8gdGhlIEd6aXBGaWxlIGNvbnN0cnVjdG9yIHRvIG92ZXJyaWRlCi0gIHRoZSB0aW1lc3RhbXAgaW4gdGhlIGd6aXAgc3RyZWFtLiBUaGUgZGVmYXVsdCB2YWx1ZSByZW1haW5zIHRoZSBjdXJyZW50IHRpbWUuCi0gIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCBieSBlLmcuIGd1bnppcCB3aGVuIGRlY29tcHJlc3NpbmcuIFBhdGNoIGJ5Ci0gIEphY3F1ZXMgRnJlY2hldC4KLQotLSBSZXN0b3JlIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eSBmb3IgZGVjaW1hbC5weS4KLQotLSBJc3N1ZSAjMzYzODogUmVtb3ZlIGZ1bmN0aW9ucyBmcm9tIF90a2ludGVyIG1vZHVsZSBsZXZlbCB0aGF0IGRlcGVuZCBvbgotICBUa2FwcE9iamVjdCB0byB3b3JrIHdpdGggbXVsdGlwbGUgdGhyZWFkcy4KLQotLSBJc3N1ZSAjNDcxODogQWRhcHQgdGhlIHdzZ2lyZWYgcGFja2FnZSBzbyB0aGF0IGl0IGFjdHVhbGx5IHdvcmtzIHdpdGgKLSAgUHl0aG9uIDMueCwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBgb2ZmaWNpYWwgYW1lbmRtZW50cyBvZiB0aGUgc3BlYwotICA8aHR0cDovL3d3dy53c2dpLm9yZy93c2dpL0FtZW5kbWVudHNfMS4wPmBfLgotCi0tIElzc3VlICM0Nzk2OiBBZGRlZCBEZWNpbWFsLmZyb21fZmxvYXQoKSBhbmQgQ29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCkKLSAgdG8gdGhlIGRlY2ltYWwgbW9kdWxlLgotCi0tIEZyYWN0aW9ucy5mcm9tX2Zsb2F0KCkgbm8gbG9uZ2VyIGxvc2VzIHByZWNpc2lvbiBmb3IgaW50ZWdlcnMgdG9vIGJpZyB0bwotICBjYXN0IGFzIGZsb2F0cy4KLQotLSBJc3N1ZSAjNDgxMjogYWRkIG1pc3NpbmcgdW5kZXJzY29yZSBwcmVmaXggdG8gc29tZSBpbnRlcm5hbC11c2Utb25seQotICBjb25zdGFudHMgaW4gdGhlIGRlY2ltYWwgbW9kdWxlLiAgKERlY18wIGJlY29tZXMgX0RlY18wLCBldGMuKQotCi0tIElzc3VlICM0NzkwOiBUaGUgbnNtYWxsZXN0KCkgYW5kIG5sYXJnZXN0KCkgZnVuY3Rpb25zIGluIHRoZSBoZWFwcSBtb2R1bGUKLSAgZGlkIHVubmVjZXNzYXJ5IHdvcmsgaW4gdGhlIGNvbW1vbiBjYXNlIHdoZXJlIG5vIGtleSBmdW5jdGlvbiB3YXMgc3BlY2lmaWVkLgotCi0tIElzc3VlICM0Nzk1OiBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24oKSByZXR1cm5zIEZhbHNlIGluc3RlYWQgb2YgTm9uZSB3aGVuCi0gIHRoZSBmdW5jdGlvbiBpcyBub3QgYSBnZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzQ3MDI6IFRocm93aW5nIGEgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciBpbnN0ZWFkIG9mIElPRXJyb3IgaW4gY2FzZQotICBubyBNU1ZDIGNvbXBpbGVyIGlzIGZvdW5kIHVuZGVyIFdpbmRvd3MuIE9yaWdpbmFsIHBhdGNoIGJ5IFBoaWxpcCBKZW52ZXkuCi0KLS0gSXNzdWUgIzQ2NDY6IGRpc3R1dGlscyB3YXMgY2hva2luZyBvbiBlbXB0eSBvcHRpb25zIGFyZyBpbiB0aGUgc2V0dXAKLSAgZnVuY3Rpb24uIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBIZWxsZXIuCi0KLS0gSXNzdWUgIzM3Njc6IENvbnZlcnQgVGsgb2JqZWN0IHRvIHN0cmluZyBpbiB0a0NvbG9yQ2hvb3Nlci4KLQotLSBJc3N1ZSAjMzI0ODogQWxsb3cgcGxhY2luZyBTY3JvbGxlZFRleHQgaW4gYSBQYW5lZFdpbmRvdy4KLQotLSBJc3N1ZSAjNDQ0NDogQWxsb3cgYXNzZXJ0UmFpc2VzKCkgdG8gYmUgdXNlZCBhcyBhIGNvbnRleHQgaGFuZGxlciwgc28gdGhhdAotICB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSBpZiBtb3JlIHByYWN0aWNhbC4KLQotLSBJc3N1ZSAjNDczOTogQWRkIHB5ZG9jIGhlbHAgdG9waWNzIGZvciBzeW1ib2xzLCBzbyB0aGF0IGUuZy4gaGVscCgnQCcpCi0gIHdvcmtzIGFzIGV4cGVjdGVkIGluIHRoZSBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudC4KLQotLSBJc3N1ZSAjNDc1NjogemlwZmlsZS5pc196aXBmaWxlKCkgbm93IHN1cHBvcnRzIGZpbGUtbGlrZSBvYmplY3RzLiBQYXRjaCBieQotICBHYWJyaWVsIEdlbmVsbGluYS4KLQotLSBJc3N1ZSAjNDU3NDogcmVhZGluZyBhbiBVVEYxNi1lbmNvZGVkIHRleHQgZmlsZSBjcmFzaGVzIGlmIFxyIG9uIDY0LWNoYXIKLSAgYm91bmRhcnkuCi0KLS0gSXNzdWUgIzQyMjM6IGluc3BlY3QuZ2V0c291cmNlKCkgd2lsbCBub3cgY29ycmVjdGx5IGRpc3BsYXkgc291cmNlIGNvZGUKLSAgZm9yIHBhY2thZ2VzIGxvYWRlZCB2aWEgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgY29uZm9ybWFudCBQRVAgMzAyCi0gIGxvYWRlcikuIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MjAxOiBwZGIgY2FuIG5vdyBhY2Nlc3MgYW5kIGRpc3BsYXkgc291cmNlIGNvZGUgbG9hZGVkIHZpYQotICB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBjb25mb3JtYW50IFBFUCAzMDIgbG9hZGVyKS4gT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQWxleGFuZGVyIEJlbG9wb2xza3kuCi0KLS0gSXNzdWUgIzQxOTc6IGRvY3Rlc3RzIGluIG1vZHVsZXMgbG9hZGVkIHZpYSB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBQRVAKLSAgMzAyIGNvbmZvcm1hbnQgbG9hZGVyKSB3aWxsIG5vdyB3b3JrIGNvcnJlY3RseSBpbiBtb3N0IGNhc2VzICh0aGV5Ci0gIGFyZSBzdGlsbCBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50cyB0aGF0IGV4aXN0IGZvciBhbGwgY29kZSBydW5uaW5nCi0gIGZyb20gaW5zaWRlIGEgbW9kdWxlIGxvYWRlZCB2aWEgYSBQRVAgMzAyIGxvYWRlciBhbmQgYXR0ZW1wdGluZyB0bwotICBwZXJmb3JtIElPIG9wZXJhdGlvbnMgYmFzZWQgb24gX19maWxlX18pLiBPcmlnaW5hbCBwYXRjaCBieQotICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KLQotLSBJc3N1ZXMgIzQwODIgYW5kICM0NTEyOiBBZGQgcnVucHkgc3VwcG9ydCB0byB6aXBpbXBvcnQgaW4gYSBtYW5uZXIgdGhhdAotICBhbGxvd3MgYmFja3BvcnRpbmcgdG8gbWFpbnRlbmFuY2UgYnJhbmNoZXMuIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MTYzOiB0ZXh0d3JhcCBtb2R1bGU6IGFsbG93IHdvcmQgc3BsaXR0aW5nIG9uIGEgaHlwaGVuIHByZWNlZGVkIGJ5Ci0gIGEgbm9uLUFTQ0lJIGxldHRlci4KLQotLSBJc3N1ZSAjNDYxNjogVGFyRmlsZS51dGltZSgpOiBSZXN0b3JlIGRpcmVjdG9yeSB0aW1lcyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM0MDIxOiB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBub3cgcmFpc2VzIGEgU3ludGF4RXJyb3Igd2hlbiB0aGUKLSAgY29kZWMgY2Fubm90IGJlIGZvdW5kLiAgVGhpcyBpcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBidWlsdGluIGJlaGF2aW9yLgotCi0tIElzc3VlICM0MDg0OiBGaXggbWF4LCBtaW4sIG1heF9tYWcgYW5kIG1pbl9tYWcgRGVjaW1hbCBtZXRob2RzIHRvCi0gIGdpdmUgY29ycmVjdCByZXN1bHRzIGluIHRoZSBjYXNlIHdoZXJlIG9uZSBhcmd1bWVudCBpcyBhIHF1aWV0IE5hTgotICBhbmQgdGhlIG90aGVyIGlzIGEgZmluaXRlIG51bWJlciB0aGF0IHJlcXVpcmVzIHJvdW5kaW5nLgotCi0tIElzc3VlICM0NDgzOiBfZGJtIG1vZHVsZSBub3cgYnVpbGRzIG9uIHN5c3RlbXMgd2l0aCBnZGJtICYgZ2RibV9jb21wYXQKLSAgbGlicy4KLQotLSBBZGRlZCB0aGUgc3VicHJvY2Vzcy5jaGVja19jYWxsX291dHB1dCgpIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBvdXRwdXQKLSAgZnJvbSBhIHN1YnByb2Nlc3Mgb24gc3VjY2VzcyBvciByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuCi0KLS0gSXNzdWUgIzEwNTUyMzQ6IGNnaS5wYXJzZV9oZWFkZXIoKTogRml4ZWQgcGFyc2luZyBvZiBoZWFkZXIgcGFyYW1ldGVycyB0bwotICBzdXBwb3J0IHVudXN1YWwgZmlsZW5hbWVzIChzdWNoIGFzIHRob3NlIGNvbnRhaW5pbmcgc2VtaS1jb2xvbnMpIGluCi0gIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVycy4KLQotLSBJc3N1ZSAjNDM4NDogQWRkZWQgbG9nZ2luZyBpbnRlZ3JhdGlvbiB3aXRoIHdhcm5pbmdzIG1vZHVsZSB1c2luZwotICBjYXB0dXJlV2FybmluZ3MoKS4gVGhpcyBjaGFuZ2UgaW5jbHVkZXMgYSBOdWxsSGFuZGxlciB3aGljaCBkb2VzIG5vdGhpbmc7Ci0gIGl0IHdpbGwgYmUgb2YgdXNlIHRvIGxpYnJhcnkgZGV2ZWxvcGVycyB3aG8gd2FudCB0byBhdm9pZCB0aGUgIk5vIGhhbmRsZXJzCi0gIGNvdWxkIGJlIGZvdW5kIGZvciBsb2dnZXIgWFhYIiBtZXNzYWdlIHdoaWNoIGNhbiBhcHBlYXIgaWYgdGhlIGxpYnJhcnkgdXNlcgotICBkb2Vzbid0IGNvbmZpZ3VyZSBsb2dnaW5nLgotCi0tIElzc3VlICMzNzQxOiBESVNUVVRJTFNfVVNFX1NESyBzZXQgY2F1c2VzIG1zdmM5Y29tcGlsZXIucHkgdG8gcmFpc2UgYW4KLSAgZXhjZXB0aW9uLgotCi0tIElzc3VlICM0NTI5OiBmaXggdGhlIHBhcnNlciBtb2R1bGUncyB2YWxpZGF0aW9uIG9mIHRyeS1leGNlcHQtZmluYWxseQotICBzdGF0ZW1lbnRzLgotCi0tIElzc3VlICM0NDU4OiBnZXRvcHQuZ251X2dldG9wdCgpIG5vdyByZWNvZ25pemVzIGEgc2luZ2xlICItIiBhcyBhbiBhcmd1bWVudCwKLSAgbm90IGEgbWFsZm9ybWVkIG9wdGlvbi4KLQotLSBBZGRlZCB0aGUgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgb3V0cHV0Ci0gIGZyb20gYSBzdWJwcm9jZXNzIG9uIHN1Y2Nlc3Mgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLgotCi0tIElzc3VlICM0NTQyOiBPbiBXaW5kb3dzLCBiaW5hc2NpaS5jcmMzMiBzdGlsbCBhY2NlcHRlZCBzdHIgYXMgYmluYXJ5IGlucHV0OwotICB0aGUgY29ycmVzcG9uZGluZyB0ZXN0cyBub3cgcGFzcy4KLQotLSBJc3N1ZSAjNDUzNzogd2ViYnJvd3Nlci5Vbml4QnJvd3NlciB3b3VsZCBmYWlsIHRvIG9wZW4gdGhlIGJyb3dzZXIgYmVjYXVzZQotICBpdCB3YXMgY2FsbGluZyB0aGUgd3Jvbmcgb3BlbigpIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMDU1MjM0OiBjZ2kucGFyc2VfaGVhZGVyKCk6IEZpeGVkIHBhcnNpbmcgb2YgaGVhZGVyIHBhcmFtZXRlcnMgdG8KLSAgc3VwcG9ydCB1bnVzdWFsIGZpbGVuYW1lcyAoc3VjaCBhcyB0aG9zZSBjb250YWluaW5nIHNlbWktY29sb25zKSBpbgotICBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzQ4NjE6IGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpOiBSb2J1c3RpZnkuIEZpeCBsaWJyYXJ5IGRldGVjdGlvbiBvbgotICBiaWFyY2ggc3lzdGVtcy4gVHJ5IHRvIHJlbHkgb24gbGRjb25maWcgb25seSwgd2l0aG91dCB1c2luZyBvYmpkdW1wIGFuZCBnY2MuCi0KLS0gSXNzdWUgIzUxMDQ6IFRoZSBzb2NrZXQgbW9kdWxlIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvciB3aGVuIDE2LWJpdCBwb3J0IGFuZAotICBwcm90b2NvbCBudW1iZXJzIGFyZSBzdXBwbGllZCBvdXRzaWRlIHRoZSBhbGxvd2VkIDAtNjU1MzYgcmFuZ2Ugb24gYmluZCgpCi0gIGFuZCBnZXRzZXJ2Ynlwb3J0KCkuCi0KLS0gV2luZG93cyBsb2NhbGUgbWFwcGluZyB1cGRhdGVkIHRvIFZpc3RhLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNDcwNDogcmVtb3ZlIHVzZSBvZiBjbXAoKSBpbiBweWJlbmNoLCBidW1wIGl0cyB2ZXJzaW9uIG51bWJlciB0byAyLjEsCi0gIGFuZCBtYWtlIGl0IDIuNi1jb21wYXRpYmxlLgotCi0tIFR0ayBkZW1vcyBhZGRlZCBpbiBEZW1vL3RraW50ZXIvdHRrLwotCi0tIElzc3VlICM0Njc3OiBhZGQgdHdvIGxpc3QgY29tcHJlaGVuc2lvbiB0ZXN0cyB0byBweWJlbmNoLgotCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM2MDk0OiBCdWlsZCBjb3JyZWN0bHkgd2l0aCBTdWJ2ZXJzaW9uIDEuNy4KLQotLSBJc3N1ZSAjNTg0NzogUmVtb3ZlIC1uIHN3aXRjaCBvbiAiRWRpdCB3aXRoIElETEUiIG1lbnUgaXRlbS4KLQotLSBJc3N1ZSAjNTcyNjogTWFrZSBNb2R1bGVzL2xkX3NvX2FpeCByZXR1cm4gdGhlIGFjdHVhbCBleGl0IGNvZGUgb2YgdGhlCi0gIGxpbmtlciwgcmF0aGVyIHRoYW4gYWx3YXlzIGV4aXQgc3VjY2Vzc2Z1bGx5LiBQYXRjaCBieSBGbG9yaXMgQnJ1eW5vb2doZS4KLQotLSBJc3N1ZSAjNDU4NzogQWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWRibWxpYm9yZGVyPWRiMTpkYjI6Li4uIHRvIHNwZWNpZnkKLSAgdGhlIG9yZGVyIHRoYXQgYmFja2VuZHMgZm9yIHRoZSBkYm0gZXh0ZW5zaW9uIGFyZSBjaGVja2VkLgotCi0tIExpbmsgdGhlIHNoYXJlZCBweXRob24gbGlicmFyeSB3aXRoICQoTU9ETElCUykuCi0KLS0gSXNzdWUgIzUxMzQ6IFNpbGVuY2UgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgc3FsaXRlIHdpdGggVkMrKy4KLQotLSBJc3N1ZSAjNDQ5NDogRml4IGJ1aWxkIHdpdGggUHlfTk9fRU5BQkxFX1NIQVJFRCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM0ODk1OiBVc2UgX3N0cmR1cCBvbiBXaW5kb3dzIENFLgotCi0tIElzc3VlICM0NDcyOiAiY29uZmlndXJlIC0tZW5hYmxlLXNoYXJlZCIgbm93IHdvcmtzIG9uIE9TWAotCi0tIElzc3VlcyAjNDcyOCBhbmQgIzQwNjA6IFdPUkRTX0JJR0VESUFOIGlzIG5vdyBjb3JyZWN0IGluIFVuaXZlcnNhbCBidWlsZHMuCi0KLS0gSXNzdWUgIzQzODk6IEFkZCBpY29uIHRvIHRoZSB1bmluc3RhbGwgZW50cnkgaW4gImFkZC1hbmQtcmVtb3ZlLXByb2dyYW1zIi4KLQotLSBJc3N1ZSAjNDI4OTogUmVtb3ZlIENhbmNlbCBidXR0b24gZnJvbSBBZHZhbmNlZERsZy4KLQotLSBJc3N1ZSAjMTY1NjY3NTogUmVnaXN0ZXIgYSBkcm9wIGhhbmRsZXIgZm9yIC5weSogZmlsZXMgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNDEyMDogRXhjbHVkZSBtYW5pZmVzdCBmcm9tIGV4dGVuc2lvbiBtb2R1bGVzIGluIFZTMjAwOC4KLQotLSBJc3N1ZSAjNDA5MTogSW5zdGFsbCBweXRob254eS5kbGwgaW4gc3lzdGVtMzIgYWdhaW4uCi0KLS0gSXNzdWUgIzQwMTg6IERpc2FibGUgImZvciBtZSIgaW5zdGFsbGF0aW9ucyBvbiBWaXN0YS4KLQotLSBJc3N1ZSAjMzc1ODogQWRkIGBgcGF0Y2hjaGVja2BgIGJ1aWxkIHRhcmdldCB0byAuUEhPTlkuCi0KLS0gSXNzdWUgIzQyMDQ6IEZpeGVkIG1vZHVsZSBidWlsZCBlcnJvcnMgb24gRnJlZUJTRCA0LgotCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICM2NjI0OiB5QXJnX1BhcnNlVHVwbGUgd2l0aCAicyIgZm9ybWF0IHdoZW4gcGFyc2luZyBhcmd1bWVudCB3aXRoCi0gIE5VTDogQm9ndXMgVHlwZUVycm9yIGRldGFpbCBzdHJpbmcuCi0KLS0gSXNzdWUgIzUxNzU6IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcgbm93IHJhaXNlcyBPdmVyZmxvd0Vycm9yCi0gIGZvciBuZWdhdGl2ZSBhcmd1bWVudHMuICBQcmV2aW91c2x5LCBpdCByYWlzZWQgVHlwZUVycm9yLgotCi0tIElzc3VlICM0NzIwOiBUaGUgZm9ybWF0IGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgY2FuIGJlZ2luIHdpdGggJ3wnLgotCi0tIElzc3VlICMzNjMyOiBmcm9tIHRoZSBnZGIgZGVidWdnZXIsIHRoZSAncHlvJyBtYWNybyBjYW4gbm93IGJlIGNhbGxlZCB3aGVuCi0gIHRoZSBHSUwgaXMgcmVsZWFzZWQsIG9yIG93bmVkIGJ5IGFub3RoZXIgdGhyZWFkLgotCi0tIElzc3VlICM0MTIyOiBPbiBXaW5kb3dzLCBmaXggYSBjb21waWxhdGlvbiBlcnJvciB3aGVuIHVzaW5nIHRoZQotICBQeV9VTklDT0RFX0lTU1BBQ0UgbWFjcm8gaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZS4KLQotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzc0NTogRml4IGhhc2hsaWIgdG8gYWx3YXlzIHJlamVjdCB1bmljb2RlIGFuZCBub24gYnVmZmVyLWFwaQotICBzdXBwb3J0aW5nIG9iamVjdHMgYXMgaW5wdXQgbm8gbWF0dGVyIGhvdyBpdCB3YXMgY29tcGlsZWQgKGJ1aWx0IGluCi0gIGltcGxlbWVudGF0aW9ucyBvciBleHRlcm5hbCBvcGVuc3NsIGxpYnJhcnkpLgotCi0tIElzc3VlICM0Mzk3OiBGaXggb2NjYXNpb25hbCB0ZXN0X3NvY2tldCBmYWlsdXJlIG9uIE9TIFguCi0KLS0gSXNzdWUgIzQyNzk6IEZpeCBidWlsZCBvZiBwYXJzZXJtb2R1bGUgdW5kZXIgQ3lnd2luLgotCi0tIElzc3VlICM0NzUxOiBoYXNobGliIG5vdyByZWxlYXNlcyB0aGUgR0lMIHdoZW4gaGFzaGluZyBsYXJnZSBidWZmZXJzCi0gICh3aXRoIGEgaGFyZHdpcmVkIHRocmVzaG9sZCBvZiAyMDQ4IGJ5dGVzKSwgYWxsb3dpbmcgYmV0dGVyIHBhcmFsbGVsaXphdGlvbgotICBvbiBtdWx0aS1DUFUgc3lzdGVtcy4gQ29udHJpYnV0ZWQgYnkgTHVrYXMgTHVlZyAoZWJmZSkgYW5kIFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICM0MDUxOiBQcmV2ZW50IGNvbmZsaWN0IG9mIFVOSUNPREUgbWFjcm9zIGluIGNQaWNrbGUuCi0KLS0gSXNzdWUgIzQ3Mzg6IEVhY2ggemxpYiBvYmplY3Qgbm93IGhhcyBhIHNlcGFyYXRlIGxvY2ssIGFsbG93aW5nIHRvIGNvbXByZXNzCi0gIG9yIGRlY29tcHJlc3Mgc2V2ZXJhbCBzdHJlYW1zIGF0IG9uY2Ugb24gbXVsdGktQ1BVIHN5c3RlbXMuIEFsc28sIHRoZSBHSUwKLSAgaXMgbm93IHJlbGVhc2VkIHdoZW4gY29tcHV0aW5nIHRoZSBDUkMgb2YgYSBsYXJnZSBidWZmZXIuIFBhdGNoIGJ5IGViZmUuCi0KLS0gSXNzdWUgIzQyMjg6IFBhY2sgbmVnYXRpdmUgdmFsdWVzIHRoZSBzYW1lIHdheSBhcyAyLjQgaW4gc3RydWN0J3MgTCBmb3JtYXQuCi0KLS0gSXNzdWUgIzEwNDAwMjY6IEZpeCBvcy50aW1lcyByZXN1bHQgb24gc3lzdGVtcyB3aGVyZSBIWiBpcyBpbmNvcnJlY3QuCi0KLS0gSXNzdWVzICMzMTY3LCAjMzY4MjogRml4IHRlc3RfbWF0aCBmYWlsdXJlcyBmb3IgbG9nLCBsb2cxMCBvbiBTb2xhcmlzLAotICBPcGVuQlNELgotCi0tIElzc3VlICM0NTgzOiBhcnJheS5hcnJheSB3b3VsZCBub3QgYWx3YXlzIHByb2hpYml0IHJlc2l6aW5nIHdoZW4gYSBidWZmZXIKLSAgaGFzIGJlZW4gZXhwb3J0ZWQsIHJlc3VsdGluZyBpbiBhbiBpbnRlcnByZXRlciBjcmFzaCB3aGVuIGFjY2Vzc2luZyB0aGUKLSAgYnVmZmVyLgotCi0KLS0gSXNzdWUgIzUyMjg6IE1ha2UgZnVuY3Rvb2xzLnBhcnRpYWwgb2JqZWN0cyBjYW4gbm93IGJlIHBpY2tsZWQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM2MTUyOiBOZXcgb3B0aW9uICctaicvJy0tbXVsdGlwcm9jZXNzJyBmb3IgcmVncnRlc3QgYWxsb3dzIHJ1bm5pbmcKLSAgcmVncmVzc2lvbiB0ZXN0cyBpbiBwYXJhbGxlbCwgc2hvcnRlbmluZyB0aGUgdG90YWwgcnVudGltZS4KLQotLSBJc3N1ZSAjNTQ1MDogTW92ZWQgdGVzdHMgaW52b2x2aW5nIGxvYWRpbmcgdGsgZnJvbSBMaWIvdGVzdC90ZXN0X3RjbCB0bwotICBMaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X2xvYWR0ay4gV2l0aCB0aGlzLCB0aGVzZSB0ZXN0cyBkZW1vbnN0cmF0ZQotICB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgdGVzdF90dGtndWlvbmx5IChhbmQgbm93IGFsc28gdGVzdF90aykgd2hpY2ggaXMgdG8KLSAgc2tpcCB0aGUgdGVzdHMgaWYgRElTUExBWSBpcyBkZWZpbmVkIGJ1dCBjYW4ndCBiZSB1c2VkLgotCi0tIHJlZ3J0ZXN0IG5vIGxvbmdlciB0cmVhdHMgSW1wb3J0RXJyb3IgYXMgZXF1aXZhbGVudCB0byBTa2lwVGVzdC4gIEltcG9ydHMKLSAgdGhhdCBzaG91bGQgY2F1c2UgYSB0ZXN0IHRvIGJlIHNraXBwZWQgYXJlIG5vdyBkb25lIHVzaW5nIGltcG9ydF9tb2R1bGUKLSAgZnJvbSB0ZXN0IHN1cHBvcnQsIHdoaWNoIGRvZXMgdGhlIGNvbnZlcnNpb24uCi0KLS0gSXNzdWUgIzUwODM6IE5ldyAnZ3VpJyByZXNvdXJjZSBmb3IgcmVncnRlc3QuCi0KLQotRG9jcwotLS0tLQotCi0KICoqKEZvciBpbmZvcm1hdGlvbiBhYm91dCBvbGRlciB2ZXJzaW9ucywgY29uc3VsdCB0aGUgSElTVE9SWSBmaWxlLikqKgpkaWZmIC0tZ2l0IGEvTWlzYy9SRUFETUUgYi9NaXNjL1JFQURNRQppbmRleCBiMjM5Y2VlLi4xMThmNmM3IDEwMDY0NAotLS0gYS9NaXNjL1JFQURNRQorKysgYi9NaXNjL1JFQURNRQpAQCAtOCw3ICs4LDYgQEAKIC0tLS0tLS0tLS0tLS0tLS0KIAogQUNLUyAgICAgICAgICAgICAgICAgICAgQWNrbm93bGVkZ2VtZW50cwotYnVpbGQuc2ggICAgICAgICAgICAgICAgU2NyaXB0IHRvIGJ1aWxkIGFuZCB0ZXN0IGxhdGVzdCBQeXRob24gZnJvbSB0aGUgcmVwb3NpdG9yeQogZ2RiaW5pdCAgICAgICAgICAgICAgICAgSGFuZHkgc3R1ZmYgdG8gcHV0IGluIHlvdXIgLmdkYmluaXQgZmlsZSwgaWYgeW91IHVzZSBnZGIKIEhJU1RPUlkgICAgICAgICAgICAgICAgIE5ld3MgZnJvbSBwcmV2aW91cyByZWxlYXNlcyAtLSBvbGRlc3QgbGFzdAogaW5kZW50LnBybyAgICAgICAgICAgICAgR05VIGluZGVudCBwcm9maWxlIGFwcHJveGltYXRpbmcgbXkgQyBzdHlsZQpAQCAtMTksOCArMTgsMTEgQEAKIHB5dGhvbi5wYy5pbiAgICAgICAgICAgIFBhY2thZ2UgY29uZmlndXJhdGlvbiBpbmZvIHRlbXBsYXRlIGZvciBwa2ctY29uZmlnCiBweXRob24td2luZyoud3ByICAgICAgICBXaW5nIElERSBwcm9qZWN0IGZpbGUKIFJFQURNRSAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHlvdSdyZSByZWFkaW5nIG5vdworUkVBRE1FLkFJWCAgICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgUHl0aG9uIG9uIEFJWAorUkVBRE1FLmNvdmVyaXR5ICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgcnVubmluZyBDb3Zlcml0eSdzIFByZXZlbnQgb24gUHl0aG9uCiBSRUFETUUudmFsZ3JpbmQgICAgICAgICBJbmZvcm1hdGlvbiBmb3IgVmFsZ3JpbmQgdXNlcnMsIHNlZSB2YWxncmluZC1weXRob24uc3VwcAogUlBNICAgICAgICAgICAgICAgICAgICAgKE9sZCkgdG9vbHMgdG8gYnVpbGQgUlBNcworc3ZubWFwLnR4dCAgICAgICAgICAgICAgTWFwIG9mIG9sZCBTVk4gcmV2cyBhbmQgYnJhbmNoZXMgdG8gaGcgY2hhbmdlc2V0IGlkcwogU3BlY2lhbEJ1aWxkcy50eHQgICAgICAgRGVzY3JpYmVzIGV4dHJhIHN5bWJvbHMgeW91IGNhbiBzZXQgZm9yIGRlYnVnIGJ1aWxkcwogVGV4dE1hdGUgICAgICAgICAgICAgICAgQSBUZXh0TWF0ZSBidW5kbGUgZm9yIFB5dGhvbiBkZXZlbG9wbWVudAogdmFsZ3JpbmQtcHl0aG9uLnN1cHAgICAgVmFsZ3JpbmQgc3VwcHJlc3Npb24gZmlsZSwgc2VlIFJFQURNRS52YWxncmluZApkaWZmIC0tZ2l0IGEvTWlzYy9SUE0vcHl0aG9uLTMuMi5zcGVjIGIvTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIE1pc2MvUlBNL3B5dGhvbi0zLjIuc3BlYwpyZW5hbWUgdG8gTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCmluZGV4IDE4ZjNlNzcuLjkzNmEyMWYgMTAwNjQ0Ci0tLSBhL01pc2MvUlBNL3B5dGhvbi0zLjIuc3BlYworKysgYi9NaXNjL1JQTS9weXRob24tMy4zLnNwZWMKQEAgLTM5LDggKzM5LDggQEAKIAogJWRlZmluZSBuYW1lIHB5dGhvbgogIy0tc3RhcnQgY29uc3RhbnRzLS0KLSVkZWZpbmUgdmVyc2lvbiAzLjIuMwotJWRlZmluZSBsaWJ2ZXJzIDMuMgorJWRlZmluZSB2ZXJzaW9uIDMuMy4wCislZGVmaW5lIGxpYnZlcnMgMy4zCiAjLS1lbmQgY29uc3RhbnRzLS0KICVkZWZpbmUgcmVsZWFzZSAxcHlkb3RvcmcKICVkZWZpbmUgX19wcmVmaXggL3VzcgpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24tY29uZmlnLmluIGIvTWlzYy9weXRob24tY29uZmlnLmluCmluZGV4IDc5ZjBiYjEuLmJiMGIwMDggMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorKysgYi9NaXNjL3B5dGhvbi1jb25maWcuaW4KQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgc3lzY29uZmlnCiAKIHZhbGlkX29wdHMgPSBbJ3ByZWZpeCcsICdleGVjLXByZWZpeCcsICdpbmNsdWRlcycsICdsaWJzJywgJ2NmbGFncycsCi0gICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncyddCisgICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncycsICdjb25maWdkaXInXQogCiBkZWYgZXhpdF93aXRoX3VzYWdlKGNvZGU9MSk6CiAgICAgcHJpbnQoIlVzYWdlOiB7MH0gW3sxfV0iLmZvcm1hdCgKQEAgLTYxLDMgKzYxLDYgQEAKIAogICAgIGVsaWYgb3B0ID09ICctLWFiaWZsYWdzJzoKICAgICAgICAgcHJpbnQoc3lzLmFiaWZsYWdzKQorCisgICAgZWxpZiBvcHQgPT0gJy0tY29uZmlnZGlyJzoKKyAgICAgICAgcHJpbnQoc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMSUJQTCcpKQpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24ubWFuIGIvTWlzYy9weXRob24ubWFuCmluZGV4IDIwYmVkZWQuLjcyZTFlY2IgMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLm1hbgorKysgYi9NaXNjL3B5dGhvbi5tYW4KQEAgLTM3LDEzICszNyw2IEBACiAuQiBcLU9PCiBdCiBbCi0uQiBcLVIKLV0KLVsKLS5CIC1RCi0uSSBhcmd1bWVudAotXQotWwogLkIgXC1zCiBdCiBbCkBAIC0xNTUsMjcgKzE0OCw2IEBACiBEbyBub3QgcHJpbnQgdGhlIHZlcnNpb24gYW5kIGNvcHlyaWdodCBtZXNzYWdlcy4gVGhlc2UgbWVzc2FnZXMgYXJlIAogYWxzbyBzdXBwcmVzc2VkIGluIG5vbi1pbnRlcmFjdGl2ZSBtb2RlLgogLlRQCi0uQiBcLVIKLVR1cm4gb24gImhhc2ggcmFuZG9taXphdGlvbiIsIHNvIHRoYXQgdGhlIGhhc2goKSB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQKLWRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSBwc2V1ZG8tcmFuZG9tIHZhbHVlLgotQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlCi1ub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCi0uSVAKLVRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwgb2Ygc2VydmljZQotY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGUgd29yc3QgY2FzZSBwZXJmb3JtYW5jZQotb2YgYSBkaWN0IGNvbnN0cnVjdGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuICBTZWUKLWh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbAotZm9yIGRldGFpbHMuCi0uVFAKLS5CSSAiXC1RICIgYXJndW1lbnQKLURpdmlzaW9uIGNvbnRyb2w7IHNlZSBQRVAgMjM4LiAgVGhlIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mICJvbGQiICh0aGUKLWRlZmF1bHQsIGludC9pbnQgYW5kIGxvbmcvbG9uZyByZXR1cm4gYW4gaW50IG9yIGxvbmcpLCAibmV3IiAobmV3Ci1kaXZpc2lvbiBzZW1hbnRpY3MsIGkuZS4gaW50L2ludCBhbmQgbG9uZy9sb25nIHJldHVybnMgYSBmbG9hdCksCi0id2FybiIgKG9sZCBkaXZpc2lvbiBzZW1hbnRpY3Mgd2l0aCBhIHdhcm5pbmcgZm9yIGludC9pbnQgYW5kCi1sb25nL2xvbmcpLCBvciAid2FybmFsbCIgKG9sZCBkaXZpc2lvbiBzZW1hbnRpY3Mgd2l0aCBhIHdhcm5pbmcgZm9yCi1hbGwgdXNlIG9mIHRoZSBkaXZpc2lvbiBvcGVyYXRvcikuICBGb3IgYSB1c2Ugb2YgIndhcm5hbGwiLCBzZWUgdGhlCi1Ub29scy9zY3JpcHRzL2ZpeGRpdi5weSBzY3JpcHQuCi0uVFAKIC5CIFwtcwogRG9uJ3QgYWRkIHVzZXIgc2l0ZSBkaXJlY3RvcnkgdG8gc3lzLnBhdGguCiAuVFAKQEAgLTE4NCw3ICsxNTYsOSBAQAogLkkgc2l0ZQogYW5kIHRoZSBzaXRlLWRlcGVuZGVudCBtYW5pcHVsYXRpb25zIG9mCiAuSSBzeXMucGF0aAotdGhhdCBpdCBlbnRhaWxzLgordGhhdCBpdCBlbnRhaWxzLiAgQWxzbyBkaXNhYmxlIHRoZXNlIG1hbmlwdWxhdGlvbnMgaWYKKy5JIHNpdGUKK2lzIGV4cGxpY2l0bHkgaW1wb3J0ZWQgbGF0ZXIuCiAuVFAKIC5CIFwtdQogRm9yY2UgdGhlIGJpbmFyeSBJL08gbGF5ZXJzIG9mIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciB0byBiZSB1bmJ1ZmZlcmVkLgpAQCAtMjgzLDkgKzI1Nyw5IEBACiBmcm9tIHRoYXQgZmlsZTsKIHdoZW4gY2FsbGVkIHdpdGgKIC5CIFwtYwotLkkgY29tbWFuZCwKKy5JUiBjb21tYW5kICwKIGl0IGV4ZWN1dGVzIHRoZSBQeXRob24gc3RhdGVtZW50KHMpIGdpdmVuIGFzCi0uSSBjb21tYW5kLgorLklSIGNvbW1hbmQgLgogSGVyZQogLkkgY29tbWFuZAogbWF5IGNvbnRhaW4gbXVsdGlwbGUgc3RhdGVtZW50cyBzZXBhcmF0ZWQgYnkgbmV3bGluZXMuCkBAIC0yOTUsNyArMjY5LDcgQEAKIC5QUAogSWYgYXZhaWxhYmxlLCB0aGUgc2NyaXB0IG5hbWUgYW5kIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRoZXJlYWZ0ZXIgYXJlCiBwYXNzZWQgdG8gdGhlIHNjcmlwdCBpbiB0aGUgUHl0aG9uIHZhcmlhYmxlCi0uSSBzeXMuYXJndiAsCisuSVIgc3lzLmFyZ3YgLAogd2hpY2ggaXMgYSBsaXN0IG9mIHN0cmluZ3MgKHlvdSBtdXN0IGZpcnN0CiAuSSBpbXBvcnQgc3lzCiB0byBiZSBhYmxlIHRvIGFjY2VzcyBpdCkuCkBAIC0zMDksMTQgKzI4MywxNCBAQAogLkkgJy1jJy4KIE5vdGUgdGhhdCBvcHRpb25zIGludGVycHJldGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXRzZWxmCiBhcmUgbm90IHBsYWNlZCBpbgotLkkgc3lzLmFyZ3YuCisuSVIgc3lzLmFyZ3YgLgogLlBQCiBJbiBpbnRlcmFjdGl2ZSBtb2RlLCB0aGUgcHJpbWFyeSBwcm9tcHQgaXMgYD4+Pic7IHRoZSBzZWNvbmQgcHJvbXB0CiAod2hpY2ggYXBwZWFycyB3aGVuIGEgY29tbWFuZCBpcyBub3QgY29tcGxldGUpIGlzIGAuLi4nLgogVGhlIHByb21wdHMgY2FuIGJlIGNoYW5nZWQgYnkgYXNzaWdubWVudCB0bwogLkkgc3lzLnBzMQogb3IKLS5JIHN5cy5wczIuCisuSVIgc3lzLnBzMiAuCiBUaGUgaW50ZXJwcmV0ZXIgcXVpdHMgd2hlbiBpdCByZWFkcyBhbiBFT0YgYXQgYSBwcm9tcHQuCiBXaGVuIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gb2NjdXJzLCBhIHN0YWNrIHRyYWNlIGlzIHByaW50ZWQgYW5kCiBjb250cm9sIHJldHVybnMgdG8gdGhlIHByaW1hcnkgcHJvbXB0OyBpbiBub24taW50ZXJhY3RpdmUgbW9kZSwgdGhlCkBAIC0zNzIsNyArMzQ2LDcgQEAKIGluc2VydGVkIGluIHRoZSBwYXRoIGluIGZyb250IG9mICRQWVRIT05QQVRILgogVGhlIHNlYXJjaCBwYXRoIGNhbiBiZSBtYW5pcHVsYXRlZCBmcm9tIHdpdGhpbiBhIFB5dGhvbiBwcm9ncmFtIGFzIHRoZQogdmFyaWFibGUKLS5JIHN5cy5wYXRoIC4KKy5JUiBzeXMucGF0aCAuCiAuSVAgUFlUSE9OU1RBUlRVUAogSWYgdGhpcyBpcyB0aGUgbmFtZSBvZiBhIHJlYWRhYmxlIGZpbGUsIHRoZSBQeXRob24gY29tbWFuZHMgaW4gdGhhdAogZmlsZSBhcmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBmaXJzdCBwcm9tcHQgaXMgZGlzcGxheWVkIGluIGludGVyYWN0aXZlCkBAIC00MjksOSArNDAzLDggQEAKIElmIHRoaXMgaXMgc2V0IHRvIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBpdCBpcyBlcXVpdmFsZW50IHRvCiBzcGVjaWZ5aW5nIHRoZSBcZkJcLVdcZlAgb3B0aW9uIGZvciBlYWNoIHNlcGFyYXRlIHZhbHVlLgogLklQIFBZVEhPTkhBU0hTRUVECi1JZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAicmFuZG9tIiwgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZSBhcyBzcGVjaWZ5aW5nCi10aGUgXGZCLVJcZlAgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsCi1ieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KK0lmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICJyYW5kb20iLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcworb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KIAogSWYgUFlUSE9OSEFTSFNFRUQgaXMgc2V0IHRvIGFuIGludGVnZXIgdmFsdWUsIGl0IGlzIHVzZWQgYXMgYSBmaXhlZCBzZWVkIGZvcgogZ2VuZXJhdGluZyB0aGUgaGFzaCgpIG9mIHRoZSB0eXBlcyBjb3ZlcmVkIGJ5IHRoZSBoYXNoIHJhbmRvbWl6YXRpb24uICBJdHMKQEAgLTQ0MCw4ICs0MTMsNyBAQAogdmFsdWVzLgogCiBUaGUgaW50ZWdlciBtdXN0IGJlIGEgZGVjaW1hbCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdLiAgU3BlY2lmeWluZwotdGhlIHZhbHVlIDAgd2lsbCBsZWFkIHRvIHRoZSBzYW1lIGhhc2ggdmFsdWVzIGFzIHdoZW4gaGFzaCByYW5kb21pemF0aW9uIGlzCi1kaXNhYmxlZC4KK3RoZSB2YWx1ZSAwIHdpbGwgZGlzYWJsZSBoYXNoIHJhbmRvbWl6YXRpb24uCiAuU0ggQVVUSE9SCiBUaGUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb246IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YKIC5TSCBJTlRFUk5FVCBSRVNPVVJDRVMKZGlmZiAtLWdpdCBhL01pc2Mvc3ZubWFwLnR4dCBiL01pc2Mvc3ZubWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDJiZTdmCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9zdm5tYXAudHh0CkBAIC0wLDAgKzEsNzI1NDYgQEAKKzIxNjEgM2NkMDMzZTZiNTMwZjZhNzhiM2IxNGZlZGJkMjA3NDg5NmRiZjZkZSBsZWdhY3ktdHJ1bmsKKzIxNjIgNGRiOWQ0NmIzMDZhOWM2ZWMyZDFmZTdhN2NjMzZlZjcxNzM0MjZhNiBsZWdhY3ktdHJ1bmsKKzIxNjMgNGEzYTY0ODE4NWVmODk2NWMzNDI4NjBiZDg0NTdlZDZjMDNjNmRlMCBsZWdhY3ktdHJ1bmsKKzIxNjQgOGRhOTIyNWNjNjBlMmRhMTY2NWE4MGFmOTAxODRkYjBmZGRhMDVjZSBsZWdhY3ktdHJ1bmsKKzIxNjUgMTdlNDkwYjRkYzI4YjhhYzYwNWZhMTllNDgyY2Y3MjJmZTgwNjU4ZCBsZWdhY3ktdHJ1bmsKKzIxNjYgNTU3MGRiYjFjZTU1OGI1NTcxNmVhYjdkMDgwYTFhZmFkMmU3N2UyZiBsZWdhY3ktdHJ1bmsKKzIxNjcgZmM2ZmNkN2RmNGY3ZjJlMWMxMmYxN2FmMjQ2NGM0OTdkNmY2YTNlOSBsZWdhY3ktdHJ1bmsKKzIxNjggMzRkNjY3ZGMxYTRjNGFiZGNiMTljZGRmZDJlOWJmZGEwMTEzOWVkMiBsZWdhY3ktdHJ1bmsKKzIxNjkgNmZjMTQ2YmQ0ZjAzYzk3ZDE0YzdjMzAwYjEyMTJhMTFlYjliNjcyYSBsZWdhY3ktdHJ1bmsKKzIxNzAgMzM3MDFkYjRlYTU1OTEwMGQzN2JlNDRkMmYwZDUzZTU2OGEwZWMzMyBsZWdhY3ktdHJ1bmsKKzIxNzEgYTcxZTg5NmVkMDQ3MzQyMWQ4OGZlNDU1MjY5YzVhNWU1NDczMmEyMiBsZWdhY3ktdHJ1bmsKKzIxNzIgYmNlYTZjODIyOTA2Yzg0ZWRlZGFiY2MwM2VjNDgxNTk1ZGVmMGE2MyBsZWdhY3ktdHJ1bmsKKzIxNzMgMzZhMjIwZDM3MzFhMDMzNDU3ODU1OTNlYzMyZWJjMzVhMjk0OTRkZSBsZWdhY3ktdHJ1bmsKKzIxNzQgMDZiZjJhZjAwZTNhOWViNTE1MjliNjE4Y2JkYzBiYmNmMWE0ZTk2NCBsZWdhY3ktdHJ1bmsKKzIxNzUgODc0YzhmZDU2NWZhMDk0NjFjMjEzOTlhZjllZGUxMjM0ZWExMGY3MCBsZWdhY3ktdHJ1bmsKKzIxNzYgZTllMDVmYmJhN2E0MDAzNGY4MjExYzlkMWQxMmIyODg3OWY1MWZjZiBsZWdhY3ktdHJ1bmsKKzIxNzcgMDgwOGU1YWI3NDNhYmI4YjA1N2E1NWY3NjUxYWMxMThjODNmNWIwYyBsZWdhY3ktdHJ1bmsKKzIxNzggYTVmMDFhOTE3NDA5MmQyOWViYTYzNzdjMjM2OTE4N2NkYjNmZDdkNSBsZWdhY3ktdHJ1bmsKKzIxNzkgZTliYmU0YWMzMjM4OWU4YTdhNmMwYjRhZWZhZjRlYWQzMDg4ZjIxYSBsZWdhY3ktdHJ1bmsKKzIxODAgNzFhYzBlMzcyMzZhNTRlMGE2Nzg4YjM4NDY1NWQ4ZDgyMDlkODU4YSBsZWdhY3ktdHJ1bmsKKzIxODEgMTE4NTQ1MzEyZjNiZmUxMDNiY2NmYjEwM2Y0ZGYyZWViMGQwZWI4MyBsZWdhY3ktdHJ1bmsKKzIxODIgOTYxNjk2ZWYzYWI3ZTQzYzk5ZjVjNzYwZjdjNjIxYjZhMTE5ZGM5OCBsZWdhY3ktdHJ1bmsKKzIxODMgMmQzZWI3MTdhMDBkMTAzZDQzNzU5NGUwODE5M2RhZTYwMDA2MWRhOSBsZWdhY3ktdHJ1bmsKKzIxODQgMDg1NjJkZTAxNjY4MDBlMWM2ZDVkNTE1Zjc0MzY5YjM5OWZkOGNhYSBsZWdhY3ktdHJ1bmsKKzIxODUgNjRhNjlkNjEyMWUwZDIwNjJmMjZhN2VjYTY3ZTliNmE0MmRjYTI3YiBsZWdhY3ktdHJ1bmsKKzIxODYgMzI2Mzk4NzhkMTZiNjA0ODc1Mzg4ZTIyOTk2MTFiYmZjNTE4OTYyNiBsZWdhY3ktdHJ1bmsKKzIxODcgNDVhZWIyZWVhZDc5ZWU3ZmEzNmU0MTY2ZGViNzUzODZjMTNlMzQxZCBsZWdhY3ktdHJ1bmsKKzIxODggODJjN2JhYjc4YmIxMGE3MDZmNWQ1MjBiMTU1MGU3MjRiOTRhYTM4YyBsZWdhY3ktdHJ1bmsKKzIxODkgZTVjNTBjNjg4MTE3YzZlNWJkODk1NDYwZGFjZTZjOWNiZjU4MWFmZCBsZWdhY3ktdHJ1bmsKKzIxOTAgMzQyYTdjNjFjMGMzYzBmZTQ4MTRkMWFkMjRlNzcxNDI3NzM4MTViMSBsZWdhY3ktdHJ1bmsKKzIxOTEgODZlMGUyMzUwYmExMTc0N2M0ZTBmZGNlOTdiYzdjOWJjNjQ4NzQxYiBsZWdhY3ktdHJ1bmsKKzIxOTIgYzQ4N2RmYzMwNjYzMzk4NTA4NTRmYjg1OGM2YTgzMzA1OWE5YmM3OCBsZWdhY3ktdHJ1bmsKKzIxOTMgYjY0M2VhZGU2NTQ0NTlmODdkNTcyZDZiNzkzODk2ZDliM2FkZjg0MCBsZWdhY3ktdHJ1bmsKKzIxOTQgYjgwN2M5MGM0YTY4MjJkMWNiOGIzOTY5OTFjYWE4MDg1YmIzMmI0ZSBsZWdhY3ktdHJ1bmsKKzIxOTUgMWQyMjkwMGY3N2I4NTNiZWUwNmRkMjRhMWJmMWZkZjQ1MTViNDhiYyBsZWdhY3ktdHJ1bmsKKzIxOTYgZGEwNmEyODJiODgwNGZhNDdmZjRjM2M0YmQ5MmJhOWZiOGVlYTkyOSBsZWdhY3ktdHJ1bmsKKzIxOTcgYTIyNDBjZTkxZTUyMDYxYjQzMmY5Nzk1N2Y5MmJmNzk3ODUzNDBhYyBsZWdhY3ktdHJ1bmsKKzIxOTggYzc5NWZkYWNlZDliOGEyOGQ5ODMzMjc3ODY4YjFmNzQ2MWEwOTVmNSBsZWdhY3ktdHJ1bmsKKzIxOTkgMTBlMTgyMWMzNDVjYTJkMTM3NTM1YTZjMWNmNWViMDEyODZmY2Q3ZSBsZWdhY3ktdHJ1bmsKKzIyMDAgMTkwNWY4MjEzOTdiMGYwOTQxMDExNjA4ZTViNDZkZDFjOWUzODllNCBsZWdhY3ktdHJ1bmsKKzIyMDEgZjI4YWM3ZjYyMWM3NjA3OTc3NGMzMDAxN2IyOTAxMzk2NWQxMDQwOSBsZWdhY3ktdHJ1bmsKKzIyMDIgZTgwZWZlYWI0OWIzMmMxNWFjOTdiMjRkNGY2ZThmZGQ1Y2NmMGE5NSBsZWdhY3ktdHJ1bmsKKzIyMDMgNDgzNWMyZDM4Yjg0ZTVmYjU1ODAzNmQ0N2M1ODcxZGQ5NjYzMzhiNyBsZWdhY3ktdHJ1bmsKKzIyMDQgZWEyMTk4MmExNTMyNDI1ZjgyZWM1YTQzNDZjYjg0MTkxN2E3MWQ5NSBsZWdhY3ktdHJ1bmsKKzIyMDUgNGQzYTI4ZGZmYzliOTVkMzhiOTEyY2I2OTU3NDJkZTQwZDk1NzYzNSBsZWdhY3ktdHJ1bmsKKzIyMDYgN2ZlY2FiYjMyNzkxNDUwNDU0NDYxN2U1YmFjZDFjMDVhMTJlODY5ZiBsZWdhY3ktdHJ1bmsKKzIyMDcgY2U2ZjI0NzExNTA0ZTU5NTZkNjYwMDk5Yzk5ZWNjYjk1MWMwYzE0OSBsZWdhY3ktdHJ1bmsKKzIyMDggMDUwNTdlMzY2MGY4MmNlOGU4M2U4YzJkNzNkMGI1ODQ5NGYyYmVhNyBsZWdhY3ktdHJ1bmsKKzIyMDkgYjBlNzYyMjFlN2ZmZGJjZmU5OGE0NGFkZmFlOWMyMzUwOTNjN2NlYiBsZWdhY3ktdHJ1bmsKKzIyMTAgYzNmYTJkMWYzMDM1ODY5OWVlMjRlMmE1YzNjMDExNjYyZjc1YzM3NiBsZWdhY3ktdHJ1bmsKKzIyMTEgYjk0ODIyZjU0OTkxMzA0YjU4YWRiYmVhMjM4NjljOThiMmY2ZjNmZSBsZWdhY3ktdHJ1bmsKKzIyMTIgZWJjYjYyNmNmZGRmYjlmMWM3YjE4Njc4YWNiZWM0NGViOTdhYmJkNyBsZWdhY3ktdHJ1bmsKKzIyMTMgMWIzMTA3N2FjNjQzMDdhYjU0NTUyNjUxYWVjNjc4NzhkODBkMGJkNyBsZWdhY3ktdHJ1bmsKKzIyMTQgYTFlNTBhOGY0MmUyM2NmYWI2NGJlM2U5OWQ4YTUzMzVlYTMzYTljNSBsZWdhY3ktdHJ1bmsKKzIyMTUgNDAyZjU3MDhiMTA3YjA1ZjgxMWU1Zjg1NDI4NDJlNzE3OThkYTZjOSBsZWdhY3ktdHJ1bmsKKzIyMTYgN2EwMWRiY2VlOWJjMDMxMmY1YTMxN2ZiMjQyOTk3NTFlNzhkZGRjMiBsZWdhY3ktdHJ1bmsKKzIyMTcgYTdlOGZiN2JiNmEyOGViMTNjMDU2ZjNjNjJhOTZjYWFjNWY2NDRkNCBsZWdhY3ktdHJ1bmsKKzIyMTggYTFjMmI0ZmFkMTM2Y2ZiMWIyMjMxNTBhNDhjMzQ4MGQ2M2UyZGVjYiBsZWdhY3ktdHJ1bmsKKzIyMTkgNDk3NWY3OTkwYjJiMzVjNzBkMjM1MDVlY2VhNWMyMGVlZmNkMWVkOCBsZWdhY3ktdHJ1bmsKKzIyMjAgNDMzZjUyZDFkOTU4Nzc2NzAzYTczZTgwZTU1NmJlZWIwZTQ3ZjU0MyBsZWdhY3ktdHJ1bmsKKzIyMjEgNGY1OTNiMzhkMDYxNTU3OWFjYWQ0YzNjOWNiMzUwZWI2MDBkZGM0ZSBsZWdhY3ktdHJ1bmsKKzIyMjIgNWM0ZGQ5MzQ4ZTgxMTMzMjBjNGY3YjRlOTgzM2YzMjA1ZGYxOGI4MCBsZWdhY3ktdHJ1bmsKKzIyMjMgZmZmZDEyODZjODgyNjc5MzRkNzQ4NmU0YzRlNDY3ZDU3YjA4NjU5YiBsZWdhY3ktdHJ1bmsKKzIyMjQgNjEzMTE1MDZmMmNkMDliYWRkOGI3OTQ1NmFmOTc4OTIxNGVjYjBmNCBsZWdhY3ktdHJ1bmsKKzIyMjUgYTIyZGY1MmQ3NzQ5YTNhOGMwNzcwYTgyMTNkZTQ3YjJjYTU4ZmVjZiBsZWdhY3ktdHJ1bmsKKzIyMjYgYTcyYzBhN2RjOTkzYWFlMDVlNzA4NWNkMzg2NzhiOWRiYmViMTk4MSBsZWdhY3ktdHJ1bmsKKzIyMjcgNDZjYjE0YWVjMTBhOGQ2ZTM2NjViNzE4ODA3MGI2N2U4OTlhZDYzNiBsZWdhY3ktdHJ1bmsKKzIyMjggZjk4ZTQxNzExZDE3NzkwMGE5NmQ1NzQ1YmE5MGNjODhiZDgyZDdkOCBsZWdhY3ktdHJ1bmsKKzIyMjkgMzY1MDM3MzZmZGMyMzkzNDA2YzA4NjBjODFhMjAyMjJkNzNjZWU1OSBsZWdhY3ktdHJ1bmsKKzIyMzAgY2NjZDUzNGYyMjgwNzRmMjY3NDg0ODQyMjFkNjlmMmVlNzUyZjJiMyBsZWdhY3ktdHJ1bmsKKzIyMzEgYTM2YzM0OGE4ZTFhMjkxNWQ2OWI3ZGQyMDIxNjNmZGI3ZTU5NmM4OCBsZWdhY3ktdHJ1bmsKKzIyMzIgYWM0NTIyZTk5Y2E5NDM3N2E2NWM2NmNmZGMyNjY4NGZhMGZkZmJlYiBsZWdhY3ktdHJ1bmsKKzIyMzMgNWU4YTBiNDBhNGJkZjFlODNjNWQwYmYzOGVmYzc3NDViMDZlZjhkNCBsZWdhY3ktdHJ1bmsKKzIyMzQgMzAyOGFjYWE1NmIwNWVkMGUxMWUxNTZlODFiNWEwNjcxOTE1Y2I4NiBsZWdhY3ktdHJ1bmsKKzIyMzUgYmMyNDRkZjIwMjUxNmI1YTU1NTEzZTQ2M2IyZjYzN2QxOGY1ODA1NSBsZWdhY3ktdHJ1bmsKKzIyMzYgODVlZWQwNjBhNDZjZTI2NjQ5ZmQ2ODAyY2ZiZDVlZWM2MTkxMDY4OCBsZWdhY3ktdHJ1bmsKKzIyMzcgZWRlODY3OTk3MDViYTE0YmM0MDIxMzU3MWRmZTJhMWQ1ZjU2ZTkwNyBsZWdhY3ktdHJ1bmsKKzIyMzggZjcyZTBjNjIzNjllMjRjY2MwZWNkYWI3OTJjOTdhMjFiMjMzMmJhZCBsZWdhY3ktdHJ1bmsKKzIyMzkgYjFmYjRlMWY2ZTUxNmQyODBjNTU1MDFiMjM0NDQ5OGNhNjI3ZmViYyBsZWdhY3ktdHJ1bmsKKzIyNDAgNmM0M2U1NDc2ZGU2OTA0MTI2OTliM2JkZTZiNTA3YjFjNDg4MDRhNiBsZWdhY3ktdHJ1bmsKKzIyNDEgZjQ3MTAxZGMzYzE4OGYyNGY5Yjk3MDVkYjNiNjQ4OTE5MTRiZGI4MiBsZWdhY3ktdHJ1bmsKKzIyNDIgZGUzNGY0YTRkMzUzYjlmNWY5OTFhYWNhOThjODNmYWFjNjgxYzZmNSBsZWdhY3ktdHJ1bmsKKzIyNDMgNTU0YWM2NTliMmNiOTUyNGVmNGY5NmVjMjc1NmRjNGNhMGZhMGY5YiBsZWdhY3ktdHJ1bmsKKzIyNDQgZjZiY2YzYzFkNzE0ZTc4NzUzNTZjYTEyYzMyZWU1Zjk3NWY0ZWQ4YSBsZWdhY3ktdHJ1bmsKKzIyNDUgYTc5Y2JiMjY1NWJhYWY1NGFkZGMyMjAzMzUwMDM2NDc5YmRjYjdlMyBsZWdhY3ktdHJ1bmsKKzIyNDYgMDZjOTJmNDkxZjU4OGVkOWFiZTBmMmQ0ZjE1MTIwNjlhMzBjMTkwMSBsZWdhY3ktdHJ1bmsKKzIyNDcgYTY5MzQzODBjNmU3OWI4N2Y3NzYyYjFkOTQzM2QwZTBhODkzNzQ1MiBsZWdhY3ktdHJ1bmsKKzIyNDggZWYyNDQwZjI0ZjEwMmM2NzdhMDJkNDA3OTg4ZGQ4NWY1ZGE1MGNhYiBsZWdhY3ktdHJ1bmsKKzIyNDkgMTZlOGM1ZDE2NDkzNWYzYzZhOTg5ZWVlYWRmMjJiMGFiNGRjMjJlYSBsZWdhY3ktdHJ1bmsKKzIyNTAgNTg0N2RmMTM5OTFkZTZhODM2NDg0MTA3NTUzZjRlOWNlY2NhOGExNCBsZWdhY3ktdHJ1bmsKKzIyNTEgNWNiODQzYmM4N2ZjMDg2NTQ2ZmFiZjZiOGVjMDNlZWQzMWUyMGE4ZiBsZWdhY3ktdHJ1bmsKKzIyNTIgNWMzNTdkMzdiMzI3MzFjOGQwMjA0NTQ5NzAyMDg1OGM3OWM1NzEzOSBsZWdhY3ktdHJ1bmsKKzIyNTMgMDAyMDY2YTgzOWM1MWNjMTg0YTBjNmU2NjllYzlkNjM0MjBjZGE2NyBsZWdhY3ktdHJ1bmsKKzIyNTQgOWUwNTFmYzcwNzNlNzdiOWUxNTAzNGExOWU1NDdlZmUyYjg1YzY2YSBsZWdhY3ktdHJ1bmsKKzIyNTUgZGFjODYyNWM4ZDliMDE0MTc5Y2Q1ODMzNThiNGQwZTRlMjUwMjU2NyBsZWdhY3ktdHJ1bmsKKzIyNTYgYTViZjdkNTk1OWNlMDUwZjJiMDUxYzEyZTgxODA4OTVlN2U2ZDhhOSBsZWdhY3ktdHJ1bmsKKzIyNTcgMjdhNWIwOGMzZTc0MmM2MmExNWI2ODE1NmZlMGQ0ODhjMDk0YWQ0MiBsZWdhY3ktdHJ1bmsKKzIyNTggNmI3NWYyYTMwMDBkNDA2NTE0NmIyZGFmZTZkODNkMzMwNzFlOGQzNSBsZWdhY3ktdHJ1bmsKKzIyNTkgNDU1ZDY1YTExYjEzZWQzNzc5MmUxZjRmZmJmZTNiY2RmYWE3ODNlZSBsZWdhY3ktdHJ1bmsKKzIyNjAgZTBjOGVmZWU3NmJkODE1Nzg0YzgxM2M2NmEyYTEwNDZlNWEwYmY1YSBsZWdhY3ktdHJ1bmsKKzIyNjEgYWQxNGFhOGEyOTg0NDMyMzg0ZjdhZjIxZDQ1MmJlNWFhYmE2ZjE4ZiBsZWdhY3ktdHJ1bmsKKzIyNjIgMDhlNTVkYjZmNzk2YTI3NmVjZDFjMTY4M2E1MDJiYWZkNzI0Nzg3MiBsZWdhY3ktdHJ1bmsKKzIyNjMgZjJjYWNiOTBjOTE3YzhkMjkyNzk5NGNjMjQzMTJhNjIxZGIxM2Y4MyBsZWdhY3ktdHJ1bmsKKzIyNjQgMTIyOWJhMTI0ZTBiYThlY2U5MjJjZTE0YzBmNGFhYmRiZGUxZDNmMCBsZWdhY3ktdHJ1bmsKKzIyNjUgNGVjOGMyNjNhYjQ4YjQ5ZDc3MjcwMTFjNGE4NmM3YjEwOWIwZmE1OCBsZWdhY3ktdHJ1bmsKKzIyNjYgYjRkNWZkY2JmODNjNjhmOTEzYWY0YzE3NWExNDNjOGFiZjc3NWZlZiBsZWdhY3ktdHJ1bmsKKzIyNjcgNjQzNzNjNzljMDk5OTkwY2I2OTI2MmQxODNhNDVlNGRiZmY0Mjg0MiBsZWdhY3ktdHJ1bmsKKzIyNjggMWUwMDdkY2NiMjcwOWIwODExZTUzYmYwN2M3Yjg3OTc5MWFjOTc3NCBsZWdhY3ktdHJ1bmsKKzIyNjkgYWU5YjM2NmM1NzVkNTU3ZTZmODA2ZjBkMTZlNTQ3ODU3MTc1NGMxYiBsZWdhY3ktdHJ1bmsKKzIyNzAgZjY5NDAzNmI4NTYxZWIxYjNjYjU5ZWYzNjgwZDdlOTZkZGZkNzFhMCBsZWdhY3ktdHJ1bmsKKzIyNzEgZTRiMWQ5ZTY5ODBhNDM4ZjkwMmVlZjkwMDM2OGMyZTZhMmQ1MGE2NCBsZWdhY3ktdHJ1bmsKKzIyNzIgZDA4Zjc1MmI1NmMwNjE0NmQ1YmFjZmIyZWY3NmMxMDM2YTNjZGM0OSBsZWdhY3ktdHJ1bmsKKzIyNzMgZDhhMWI2NDU2MjEyYjI4YjYxMjY0ZGIwMmQ2NWIyYzVmNmRlNzJjOCBsZWdhY3ktdHJ1bmsKKzIyNzQgZDE2OTYxMTY3MzY1ZmZmZjgxN2JiOGU2OGEyMTExZmU1M2E2Y2M1OCBsZWdhY3ktdHJ1bmsKKzIyNzUgMWVmYjhlZDZhZmQzM2EwMDZjNTI5OWQzYTQxNWFjZTEyYzk4NmE4OSBsZWdhY3ktdHJ1bmsKKzIyNzYgNDA5NGI0NmYwNGM4ZWFmMzI1YjNkNTk5ZTczMmE1YmY5YThjM2E3YiBsZWdhY3ktdHJ1bmsKKzIyNzcgMGEwMmNhOWRjZDZlMDIyZjEwYTFjYzU1MzdjNzhhYTcxMzI0YTMyMyBsZWdhY3ktdHJ1bmsKKzIyNzggNzg3MzNjMWM2ZTM2MTg3YWY1N2Y0ZWEyNTE3MGFkMDdkMDgxMGJiOCBsZWdhY3ktdHJ1bmsKKzIyNzkgYTgwOTAxM2MyYWYxZWYzZmQ2OWZmNTFiNDljMjU2M2FmN2MzMjcwNSBsZWdhY3ktdHJ1bmsKKzIyODAgOWZlZTFjYTZjOGZlZDE1NzcwY2YwNmY0MTg3NWRmZmFlOWFlZDQyYSBsZWdhY3ktdHJ1bmsKKzIyODEgYzlhNWZlMTY2MGY1MTk4NWUyNjliZTQ5Mjk0NjRlNWM0ZWEyZTVhZCBsZWdhY3ktdHJ1bmsKKzIyODIgMGMyNWZhZjRhNmE0NDUwODVjNGI3YTk4NWI3YTQzMDBjOTM5Y2Y3MSBsZWdhY3ktdHJ1bmsKKzIyODMgYjM4MDNmZDNjYjJjOGQ5MDkzMTM2ZjVhMWQyZWM1MGY5ODFiNDMxMiBsZWdhY3ktdHJ1bmsKKzIyODQgMjI3MjdiNDM3ODFlN2M1M2RiZGNmNTJmMzhhYmZkMDlkNmQwODE0ZiBsZWdhY3ktdHJ1bmsKKzIyODUgYThkMDMzYzZmYjU0YTNlZWE4MGRlMGEyOTUyY2Y1YTk4MGIzZjg0NyBsZWdhY3ktdHJ1bmsKKzIyODYgZjcxZDZhMDk2YjAyMThhMjY3MjdiZGEwZDRkM2Q1YWNiZjM1MjNkYiBsZWdhY3ktdHJ1bmsKKzIyODcgMjdjYzBkODIzNzY2M2I3NWRhMzg3MTU0NmIyMDNmNTY4NWE0N2E0NSBsZWdhY3ktdHJ1bmsKKzIyODggZDIxNGI1ZDIxZGY4YzVhY2VjZWVlNTZiZTE0ODE4NDQ1ZjgwOTgzMyBsZWdhY3ktdHJ1bmsKKzIyODkgM2JlZDc2Y2RhYzBjNDY1NWNmODAyNWJhNjEyMjFmM2VjY2Q3YjY5ZiBsZWdhY3ktdHJ1bmsKKzIyOTAgZWZkOTAwNDk3ZjRmODdkNzE3ZDEzN2RiNThhZjk5NWQ2YTAzYjE0YiBsZWdhY3ktdHJ1bmsKKzIyOTEgOGYyMTRkNjE3YWNhYjgwZjE2NjdjMTAyYjZmZTg1ZjY4MGJjZTBkYiBsZWdhY3ktdHJ1bmsKKzIyOTIgYWQ0YzVhNWVmMGZmZWVlOWI5YWE4ODVhNDE2ZTA5ZmE0NDkyNTFiMCBsZWdhY3ktdHJ1bmsKKzIyOTMgNjVlZGRlMDIyZDcxZWUzODNiMGE1NDZjNzI5N2M5Mzg5OGE2ZTFiMSBsZWdhY3ktdHJ1bmsKKzIyOTQgMDY4ODk2ODVlYjYyMDFkMjRlOTEzYjRjMDU0YzFmMjI3NGQ0ZDM1ZCBsZWdhY3ktdHJ1bmsKKzIyOTUgNWQ1YzliMmRhNTYyMjE4MmNhZmNmMTc3N2I4YWE3NmM3MGFiNzYyMCBsZWdhY3ktdHJ1bmsKKzIyOTYgMjZjY2JjM2U0MWM0NjFhZDc5YTQyZTIwMTMzOWNiOWY5YTJkODljNyBsZWdhY3ktdHJ1bmsKKzIyOTcgNjUyM2JkMjk1NGYwNDM2ZmI4ZjZjYjRhYWFmYTMwMDUwN2UzYWIyNyBsZWdhY3ktdHJ1bmsKKzIyOTggODJlZjk0YjhiOTAyZTM0OTRiMzg2MDFkMTg0NGJiOTU5ZGUzMTY3NyBsZWdhY3ktdHJ1bmsKKzIyOTkgYmIyNDk0ODk1N2UzY2E5Njg3NmU5MDJlZGIyOTBhYjQ2NGJhNmI2ZSBsZWdhY3ktdHJ1bmsKKzIzMDAgYzI5NGE4Y2FlYmI5YmIzZWU5Zjg5MmEzNzJkNjQ1NzUwNzA0NmY1MyBsZWdhY3ktdHJ1bmsKKzIzMDEgM2I4MDIzYjBiYjQ4YjEwNjZkNGEzMzQwNzMxNzMwNGQzNzI5ZTM5MSBsZWdhY3ktdHJ1bmsKKzIzMDIgYmY1YTg1MzlkOGJhN2Y3NGYwMzQyMmM1YjRmNjY5MDcwZmI5NjUyMSBsZWdhY3ktdHJ1bmsKKzIzMDMgYzdlYTYwNDkxZTY4MWU5YjkxZjc2YTAxMmM0ZGM5NDRiNWZmZjJkOCBsZWdhY3ktdHJ1bmsKKzIzMDQgMTg3MGQ4MmRlMDY5OWFmYmE4OWExOTQ2NmIyZjljMzY1MWI0Y2M5YSBsZWdhY3ktdHJ1bmsKKzIzMDUgYzcwZWVmZTQ4MDI5MGExZDgwZDk4N2EyZmY1OTlhMGVhY2JlYjk5MCBsZWdhY3ktdHJ1bmsKKzIzMDYgODUzYjczNmE2YTllZTM4ZTMzMDFkNDMwYzE1MmFlNzU4ZTE2MWE0MCBsZWdhY3ktdHJ1bmsKKzIzMDcgMGY1OTg5OTNkOTk4NmY0YWU0ZTZkZDlhMzQ5MWQ1MDliMzA5OGU4MyBsZWdhY3ktdHJ1bmsKKzIzMDggMzQ5OWFkODc4MzlhZjdhMWE0ZjcxYzE1Zjg5ZDIwYWI4NGM3OGU3MSBsZWdhY3ktdHJ1bmsKKzIzMDkgYTBjNWYyYWYyZTBjYWQ1YzRkNGRlNGE4OTNjYTVhNWZlN2NlN2Q0MSBsZWdhY3ktdHJ1bmsKKzIzMTAgNjFjNTI2MGMzNjRmMjYwZTRjOWM5YzU5ZDdmOWQyYTdkNDQzNmExYyBsZWdhY3ktdHJ1bmsKKzIzMTEgYzY1ZWJhODE5NGM3YjQwM2I5ZTcyZWFhYzQ1MGUyZGFkYWYyMDM3NyBsZWdhY3ktdHJ1bmsKKzIzMTIgOWQ0YzdkZTBkZWY0ZmU2N2VmNWFkNTgyNDRjNzY5OWI1MTg4YmExZCBsZWdhY3ktdHJ1bmsKKzIzMTMgMWQ0MDk0YzdkNThiOGM3MzBmMDM0YjFiMzEzNjUxODU2MjlkYTU2MyBsZWdhY3ktdHJ1bmsKKzIzMTQgZTU3NjRhMGQyZDMyOTlkYTY2MTRlZWYxOTIyYzdmNDE3NzY2NWZjZSBsZWdhY3ktdHJ1bmsKKzIzMTUgZjJlZmNlYWY3M2NjOWQ5OTliOGRmNTNiZmY3Y2QyMThhMmU2MzI0MyBsZWdhY3ktdHJ1bmsKKzIzMTYgODk2YzgyNWYyZjcxYmRkMmFjMGRmMTJiNWM2ZmYxNzllMDZjZGEyNSBsZWdhY3ktdHJ1bmsKKzIzMTcgNDNjYWJhYzUwMjNkMmFjMjdmNWM5YTNjODM1ZjFhYzY2OGM0MzY4MyBsZWdhY3ktdHJ1bmsKKzIzMTggNDdjYzBjZTc5OTljNzg3ZjZlOTRiZDNhMDNlMTljMDkwMjIyNDhmZSBsZWdhY3ktdHJ1bmsKKzIzMTkgYzg2NTlmOGE1ZjYzNzg0YzVhZmU0MDBkYzE3YjVmYzE5MmQwMDE5NSBsZWdhY3ktdHJ1bmsKKzIzMjAgNDFmM2M2NmIxMGZkMGE2NWNhYmM0OGJmYTFjNmFlYjMyMGQ0MTM1NSBsZWdhY3ktdHJ1bmsKKzIzMjEgYWZhNDhhOTZhNDQ0M2NiNTg1NzEzODc5OWUxZDA5YzVkYzRiYWQ2OCBsZWdhY3ktdHJ1bmsKKzIzMjIgMjVhN2ZiNDRlMjk3ODQ0OTgxMjM1NGNiMDdhMmI4NjJhZjMyY2VlMiBsZWdhY3ktdHJ1bmsKKzIzMjMgNzYxODY5NzY2ZTQ1MjhlNjhmMWQxMTQ2MDZlYmM5MWVlYzhhNGVmYSBsZWdhY3ktdHJ1bmsKKzIzMjQgZWY5YjRiZTVhM2ZlYTEwMjliMzFiNTE1NDI0NjlkZTBiMjY4ZGYwYiBsZWdhY3ktdHJ1bmsKKzIzMjUgN2NlOTFjZmI3YWM0NTEyZDQ5MDc3M2Q4MTc0OTM3NWE4YmMzMjk4MiBsZWdhY3ktdHJ1bmsKKzIzMjYgYTQ1NDdhZjI5NjcxMWJhYTc0Mzc3MjI5MmM3NDE4NGM5ZDI3ODVjOSBsZWdhY3ktdHJ1bmsKKzIzMjcgMjg5MjNlNDQyNTRjZWI3Njc4OTdmNDVkZGVkZTVlMjI5ZWY1NGVkMyBsZWdhY3ktdHJ1bmsKKzIzMjggM2ZhMmIxNGJlMjcwOTExOTA3OWY3YTZjNjMwZTViMTM1ZDVkZTkwNSBsZWdhY3ktdHJ1bmsKKzIzMjkgNjU4NWFhYmUxOTY4YmE1NjE4ZjE4ZWEwYzlkYTFjOTc4OGIzNDg5ZiBsZWdhY3ktdHJ1bmsKKzIzMzAgMWVkN2Y2ZjY1OTgzNzFlYmQyMzUwZTE2ODEwODFiMjY3YWMzMDFlNiBsZWdhY3ktdHJ1bmsKKzIzMzEgZWUwYTMyZmQ0NTY3ODQ5NWFjMDIzM2NhYWY2ZWVjZDBjODg0ZTk4YiBsZWdhY3ktdHJ1bmsKKzIzMzIgMGNlZTAxYjY4ZDljODI0ZDMzMzIyZTM2MDI0YTAyZjRhNzVlN2UxMCBsZWdhY3ktdHJ1bmsKKzIzMzMgNWNmM2MzNmQwMmVhNGNhYjIzMWMyOTk3ZWFiMjhmZTJjNzI2YjExZiBsZWdhY3ktdHJ1bmsKKzIzMzQgNDY1NjQ1MjQzNmUxOWM0MTJlODgwODgzNGUzMTg1YTk2NTAwOTVlNCBsZWdhY3ktdHJ1bmsKKzIzMzUgMjBmZWU0ZTJlZWNkYzk1ZWUwMGIyZWEzY2QyYjJlZTk1YjVlNWI0ZCBsZWdhY3ktdHJ1bmsKKzIzMzYgMDZjYzNiMDA2NzFjM2UyMjE1N2UyN2U4YTdmNmU4NjgyYTc2YTg0OSBsZWdhY3ktdHJ1bmsKKzIzMzcgMjI5MTY4YTJmZTI4NmE4YjI1ZDgzZDgwNTYzZDc1ZjQ2MGEyNTlhMCBsZWdhY3ktdHJ1bmsKKzIzMzggYmQ0OWNhNmM0YWRkMjQzYzg4YTA5NDJhYmY1ZjEzY2VmMTBmYzNkMSBsZWdhY3ktdHJ1bmsKKzIzMzkgZmI2MzY3ZDVmZjQ2NDkwNTRlODc3OTdmNDEyMjM0ODkzMDU5MTNhNCBsZWdhY3ktdHJ1bmsKKzIzNDAgMGMzNTVlOWVlODU0NThhMWQxYWVlOGJhZGVhZGI4MmY1YWJhZGI0ZiBsZWdhY3ktdHJ1bmsKKzIzNDEgYTQwNWEzMTI0MmU3YzRiNGQyZWQwZTQ2YmU1ZjRmOTBhM2Q3MzhjYSBsZWdhY3ktdHJ1bmsKKzIzNDIgYTgyMzYwMmMyMjc0MWQ1YWI5YzQ3OGM2ZjViZDE5MTdjMjA0MTVlYyBsZWdhY3ktdHJ1bmsKKzIzNDMgNTlmZmI2ZDRiMzRjNzY3M2NhNzRhZmRhODJhZWE2M2ZkNGJjZWQ3NCBsZWdhY3ktdHJ1bmsKKzIzNDQgYzkxNjhhZmUyM2RkZjY5Y2RmNWYwMTZjNzMxZWQzYzRjYWJjZjAxNCBsZWdhY3ktdHJ1bmsKKzIzNDUgMWIwOGRmNDE1ODdiODU1ZjRjNjI1YjkyM2JiZmZkNDYyNzU0YjU5NCBsZWdhY3ktdHJ1bmsKKzIzNDYgMzM0NjYyNjhiNjM3MWVhNWU5M2M5MzFkMGNlMzM1NDBkNWFlMmU4ZCBsZWdhY3ktdHJ1bmsKKzIzNDcgODkxMTVlNzUzNGQ1ODBlMGI4ZDI1ODFjOGMyNGQwMDc5MWRiMWE4ZCBsZWdhY3ktdHJ1bmsKKzIzNDggZjQ3ZDVlOWVhMjY0ZWY5M2QzNWZkOWI0MTk0OGNkMTQyYmE3MGQ0NyBsZWdhY3ktdHJ1bmsKKzIzNDkgZDgxODE4ZTYyNjcxYTYzZTU1NTNjOTk4Y2M2MWJkZmIzNTkxMzQ2YSBsZWdhY3ktdHJ1bmsKKzIzNTAgZmYwZGFlMWY0ZGI2MjViZjEzMWJlYjdiNmNmNzNmMTNhZTU3YzVmYSBsZWdhY3ktdHJ1bmsKKzIzNTEgYjUwZmE2ZDU4Nzg2ZGRiZDQ3M2RlY2Q5NWU2MDViODllMDRiYzQ4YyBsZWdhY3ktdHJ1bmsKKzIzNTIgNWZmZDM3MWI3ODQxZGU2NTBjMmJmYWMxMjdmMDQwYjlmYjc4MmE5NyBsZWdhY3ktdHJ1bmsKKzIzNTMgMzJhZTRhMWFhYjY4OWFlZjhlZTA5MGM0YzE4OTE2ZGE3OGUyMmZkYiBsZWdhY3ktdHJ1bmsKKzIzNTQgNTdmM2ZmYzdiMWM0MDU0MjUxOTllYjdmYzJkODM0ZDM4NTc4MmUzZCBsZWdhY3ktdHJ1bmsKKzIzNTUgMTQ1ZjllMTQ1OTVmNGJjNjJiMWU3NDIwN2M2ZDU5NjM2YTdlOTdlMSBsZWdhY3ktdHJ1bmsKKzIzNTYgNDVmNDNmNzU1ZTVjNTNiYjRmZWNjODU4YTc1NTQyM2Q4MmU1OGY4OSBsZWdhY3ktdHJ1bmsKKzIzNTcgNDhmYzBiOGYzM2Q5MDliNDQzZmQ4MGI4MzNlYTVmYjRjNTUzZWE1MCBsZWdhY3ktdHJ1bmsKKzIzNTggNDIzYmU4NzZkY2NlNjIyNTcwYzU3OTMxOTk0OTY2ODEyZDExNDgzMSBsZWdhY3ktdHJ1bmsKKzIzNTkgNjQ2MzE2Yzk5NTA3ODg4Y2U5MjI2ZmU3ZTY3OTdmZTc2OGZlNTNmMCBsZWdhY3ktdHJ1bmsKKzIzNjAgMGEzZTMzY2ZkNGE5MzMzZTlkMDZkNDc0NjNhZWRmYmEwNjc0MGU5YSBsZWdhY3ktdHJ1bmsKKzIzNjEgOWQwMTk2NWY0ZjQ4YWZkNThlOWYyYzk4ZWMzNTVmZGU2Yjg1NjljZCBsZWdhY3ktdHJ1bmsKKzIzNjIgMzEwZjhjOTI0MDczMmUwYTczNjQ3MTMzNDY0MzljNmY1MWMyOTdlZiBsZWdhY3ktdHJ1bmsKKzIzNjMgYmZmZmM3ZTBmY2MzZTE5MGExMzU1Mjg4ZThhZDcxYWIxM2E2Yzk4ZiBsZWdhY3ktdHJ1bmsKKzIzNjQgY2ViMzZlYzYxOThkZjM5OWMxOTlkN2QwMThlYmQxNjRiYTZmNjc4NyBsZWdhY3ktdHJ1bmsKKzIzNjUgM2Q3ZGE2MTc0ZTJlNTg1M2ZjNTJlY2M4ZGZiNWE4OTBkNTU0N2RjMiBsZWdhY3ktdHJ1bmsKKzIzNjYgOGZmZGE4NDZkNzg4OWZkOTczY2E5MDA1MjRlNGM5MTcxMzEzNWFlYyBsZWdhY3ktdHJ1bmsKKzIzNjcgM2NjNTQ5NzJhYjUyMzA2YWY1OTkyN2Q1YmEwNzAyMmJiNjVkMDRhNSBsZWdhY3ktdHJ1bmsKKzIzNjggOWFiMzI5Njk3ZGRhNTQ3NTA5ODg4NTI0NTMwZTAyODBjNTQyMDBmZiBsZWdhY3ktdHJ1bmsKKzIzNjkgZjM1MmVhNGRmZjcwOGIxYTcyYTk1YzQ1ZWQ5OWE4NDg5MTg2ZmExMSBsZWdhY3ktdHJ1bmsKKzIzNzAgZTQ4NmM4NDljNTBjMjU2ZWJjNmYwOTAzYTk2OWVhMDM2ZDQzODljNCBsZWdhY3ktdHJ1bmsKKzIzNzEgOTFhMmY0NzQ1ODUyMTg0NDA1ZjYyZTEzZGM5ZTkyYzUwN2RjOGU5NiBsZWdhY3ktdHJ1bmsKKzIzNzIgODNmMGE3MjRhODdjMDE2MzBhMzk2YmE1NmEzYWJhOWJkYmFlZjQ2ZSBsZWdhY3ktdHJ1bmsKKzIzNzMgYTc5M2M5ZTg4MGM3ZjkzNTlmMDYzMzgwN2Q3ZDYyZDVhYzA3MjQwZiBsZWdhY3ktdHJ1bmsKKzIzNzQgNjZiNTU3NjZiYTY1OGE1NmIxZWM0MWRlOWMyYjE2MmI4YThiMWIxNiBsZWdhY3ktdHJ1bmsKKzIzNzUgZWQwMzExYjhlNzQxOTE4MDc5YzdmNTI2YWNmMjgxNzc3NjE2YjU1ZSBsZWdhY3ktdHJ1bmsKKzIzNzYgZjYxZTczNjhkZWYyZTllNWY1NTg2ODdjOWFjMTVmYTM0ZjAwZDFmMiBsZWdhY3ktdHJ1bmsKKzIzNzcgMTc1NGI4MDI0YjU1ZDBjMzdmZmU2YzFhZjNlYjAxYjM3MWQ2YWVkYSBsZWdhY3ktdHJ1bmsKKzIzNzggMTk1ODcyM2JmZTAyNGQ2ZWI0YTRiMGM2NmYyOWM1OGQyYjI2YWJhZiBsZWdhY3ktdHJ1bmsKKzIzNzkgMzQyOWM5NDVkODE3ZGJkMWVjNDE1YWM5NTM2ZDJkMjE0YWJhODI1OCBsZWdhY3ktdHJ1bmsKKzIzODAgYTEwOTdjZDAzMzQ4ZWU4MWI2MWMwNjA0OGNjYmE2ZDljMjU4Y2I2YyBsZWdhY3ktdHJ1bmsKKzIzODEgMWVmZjYxMTE1ODJlNDhlMDA5MDY4OGY0NzVkMTZkYmRkOGYyMjdkZCBsZWdhY3ktdHJ1bmsKKzIzODIgZWRkYTlhYWQzZThmMTdlMmQ4ZmJjYzMyN2YxN2ZiNmMwZWZjNzY3YiBsZWdhY3ktdHJ1bmsKKzIzODMgMjg5OGQ3OGZhMzJkZTdlMDZiMGRjMWI0ZTJiYThiMzM4OGQ1NmQ1ZCBsZWdhY3ktdHJ1bmsKKzIzODQgNjY5M2M1ZDg3ZjNhMDQ5ZDkwODBhZTZjOTA0ZWQ5YTIzNDY5MTNiMCBsZWdhY3ktdHJ1bmsKKzIzODUgZTcxYjZmZWM4NmU1OThmZDMwMjZmN2VkNjMwOGZhMzczMGU2YTVlZSBsZWdhY3ktdHJ1bmsKKzIzODYgNzgxOWUxNjE1MzIwYjQyMDYyMzJlZGMzN2ViODYyYmM2Zjg3M2I2MiBsZWdhY3ktdHJ1bmsKKzIzODcgN2U4MzExNWVkYjZhZTZkMzI2NGVjMzNjODk0MzJiM2VkYTJmMDAwMSBsZWdhY3ktdHJ1bmsKKzIzODggN2VjNjA1OGI1MzliN2VkOWZhMGNmNmJlMzdlZGNkMTZmYzE2ODY4YiBsZWdhY3ktdHJ1bmsKKzIzODkgNjM0YzFkM2M3ZDM5MjNmMDRjYTUzNGFhOGZmMDc0Mzk5Mjk2MTFjOCBsZWdhY3ktdHJ1bmsKKzIzOTAgMDg1OTdlMmI2M2QzZjk0M2NmZGU2ZDI3NDM0NDY3NWM3MjdjM2UwNCBsZWdhY3ktdHJ1bmsKKzIzOTEgN2JhOTYxMjA1OGE0NjliMzQ5MzlmNDg4MDdiZDZlMmMyNGVlMGY2MiBsZWdhY3ktdHJ1bmsKKzIzOTIgYjMxYWJmNDIwZTYxYTdhMGE1YWFiNGE3MTI5YmFhMTU4YzllZWYwNCBsZWdhY3ktdHJ1bmsKKzIzOTMgYWYyZTY0MDA3Njk4MTdiMzhlZmI3ZWQ1MDVhY2E2YzgxYzU4ODlkYyBsZWdhY3ktdHJ1bmsKKzIzOTQgOGY2MmE1NDU3MzE5ZTI2N2Y0NGI2YmU1MWVmM2JlMWQ4MGE4ZWYzZiBsZWdhY3ktdHJ1bmsKKzIzOTUgOTE0YzgzY2ZhNWUxMDVjNzkxMjQ3YzNhOGRmYmQwODE2Y2Y0NDk5NyBsZWdhY3ktdHJ1bmsKKzIzOTYgOTc3MDExMmU2NjBhOTAzZjVlYWM2NTc4YThkNTU4ODE0Zjc0OGIyMiBsZWdhY3ktdHJ1bmsKKzIzOTcgMGE5MmI2YTFiOWMwYWJlODc3YjYxYTRlM2I0NThlMWZlYjdiNjhhZSBsZWdhY3ktdHJ1bmsKKzIzOTggMTZmNDY3NzE3ZDdhYjcwMzVhMTE1YWE5ZDUxMmViNTljNzBmOWJjYyBsZWdhY3ktdHJ1bmsKKzIzOTkgZmQ4MTZlZDE3ZTM1ZjE3MTBlOGI5NmIzY2M5ZmI3ZTA5MWQ1NWUxOSBsZWdhY3ktdHJ1bmsKKzI0MDAgZmRhOTczZjJhNTEyYjlhNTYyNTc1NWNlNzAxZjYzYWViN2RlZDJiNyBsZWdhY3ktdHJ1bmsKKzI0MDEgMGFhZDNhN2I5N2VmMzUyOTEzMTcxMWZjODFhYmQzNzc5NGFmYmU1MiBsZWdhY3ktdHJ1bmsKKzI0MDIgNDFlMDU3ODcwYTUzNTRlZjViNTI5NTZiODk4OTJmNDRhM2JmN2Q3NSBsZWdhY3ktdHJ1bmsKKzI0MDMgMzE2YTBkOWMwMDk2OWVkMDY2YjAyNWMwNTRmZGIwZDFjNDRkNjhkNCBsZWdhY3ktdHJ1bmsKKzI0MDQgNWY3YzI0YjM5NTNiZTc0NDNlZDZmMWUzNzliMzBiNTNiYmQwYWU3NyBsZWdhY3ktdHJ1bmsKKzI0MDUgNDdlYjgxZGE0NmRjMjE2NzdmMThiYzFmNTNiYWVmMjBmNDRiZjU4NyBsZWdhY3ktdHJ1bmsKKzI0MDYgNDMxMzNkODg1YzRjYzk2MzIxMTY5OWVkMjhjOTY3OTAzZTE2N2EzZiBsZWdhY3ktdHJ1bmsKKzI0MDcgOTU2ZmQ1YzNmMDQwNzgwMTdkYmIyNWZiNzBiMmFkMWE4ZWExYjI4YiBsZWdhY3ktdHJ1bmsKKzI0MDggMzU5YmYxMDlkYTBmN2M2MTAyYzBkZGU5MGE1OTllODE4OGViMWY0ZCBsZWdhY3ktdHJ1bmsKKzI0MDkgOWViMTNjNjdhZTZmZjZiZWE5MmY4MjZjZTdhZjEzNWFjMGFlYjliYiBsZWdhY3ktdHJ1bmsKKzI0MTAgYmFiMWY1NDk0YjhlZGRjZGQxZTc5ZDcxNzk0YzRmM2UwODNjMzI2OCBsZWdhY3ktdHJ1bmsKKzI0MTEgYjk5ODYwMDlkN2RjNGI3YzI4OTA1NGE4OWE2ODZjZGEyZmE2ZWQ3NyBsZWdhY3ktdHJ1bmsKKzI0MTIgNDhkNThiNzRhM2E0N2FiY2M2MTZiY2I2MzU4YjA4ZDQyNTIyNTlhMyBsZWdhY3ktdHJ1bmsKKzI0MTMgNjgxMTkxMmY2NzJkODk0MzM5MTMyYjZiOGZjODZkY2Q1OTBjYTM3MyBsZWdhY3ktdHJ1bmsKKzI0MTQgZDRlNTMyZWU2ZjNkMTg3YzA3ZWQ1N2Q0NDc1OWI0MDQwZWNjYzIzNyBsZWdhY3ktdHJ1bmsKKzI0MTUgNzFiMGJkNWVkMTYyMDViMjFkNDM2YTZjYmZkNDgxMmYxNmM5ZjlhZCBsZWdhY3ktdHJ1bmsKKzI0MTYgODYwNGY5MDI5Y2RhM2Q3MTdiZWM2NDEyNjZlYzcwNGM4ZjM2OWUyMCBsZWdhY3ktdHJ1bmsKKzI0MTcgM2VhYjJjZjVlNGRkNTFjZmNjNDQ5ZGY2ZTRjMDk4ZGY5YjBjZjdkNCBsZWdhY3ktdHJ1bmsKKzI0MTggYTQ2NTU4YWQwYmVkYTk1OGFjNWMxNzAxMTU2ZTQ2OTE4YzBjNzFkNCBsZWdhY3ktdHJ1bmsKKzI0MTkgM2I5M2JjZWExMGY2ZGY4NjkxODM4MzVlODRjZmY1YmZjNTg3Nzg0YSBsZWdhY3ktdHJ1bmsKKzI0MjAgNjMyMWQzZGM1N2UwYzE4OTBhNmY2MjJjNTFkMzlmNDBhZmFjYTY0ZCBsZWdhY3ktdHJ1bmsKKzI0MjEgMjZiMmVlZDc4MzgxNDg4MDc0MTMzMGQwZDZjMmQxYjhiZTExNGUwNCBsZWdhY3ktdHJ1bmsKKzI0MjIgZjRhOTQ0ZTk4MzVmYTkzMmYxNDI2ODVhN2UyNDRmNmQyOTk0NzExNCBsZWdhY3ktdHJ1bmsKKzI0MjMgNmFjZDQxYTQ1ZDhkYThiYjBmM2E1NmZiZGUwZjhjNjY4MjZkMDNkOSBsZWdhY3ktdHJ1bmsKKzI0MjQgMjhmMGZmZDlmYWNmYjk5YWM1OTU4Yzc4ZTA4M2NlMjI2NjM4MDkxNyBsZWdhY3ktdHJ1bmsKKzI0MjUgNzJkMWI4OWJlMzVhZTIyYmI2YWVhNTNhMzdkMzg0NDg0NjMzY2Y0OCBsZWdhY3ktdHJ1bmsKKzI0MjYgMTg3YmExNzMzYjE3ODFiNGJmNWQ5N2E0ZDRmYjMzNDI1NTUwZDg5MCBsZWdhY3ktdHJ1bmsKKzI0MjcgYjU4MjZiZjI5Njc3NmVhMGY0M2E5NTIxMDRkMTE0OThmZjI0YWQ2ZSBsZWdhY3ktdHJ1bmsKKzI0MjggNDU3NjYxZTQ3YzdiYTliNmRkOTI2NTNmN2I0N2Q3YWNmYTk0MjNhNSBsZWdhY3ktdHJ1bmsKKzI0MjkgMGZlMjQ3MTE2NmYwNTNiZjdmNmIxYjAxMzNkMzlkOGMyNmVmYjIzZiBsZWdhY3ktdHJ1bmsKKzI0MzAgNzQ1YTQ2NjExOTU3ZDZiMjQ1NDc2NzhkZTNhMWVlMGY1MjNlY2U2NSBsZWdhY3ktdHJ1bmsKKzI0MzEgYWRlZDIwOGFkZjZjNjI4NWE4M2U4ZTQzYmM1OTI5ZWQwNGU0MmMzYyBsZWdhY3ktdHJ1bmsKKzI0MzIgMGJmMDJlMWI3ZjUxZGU2YzY1MGQxODk4NTY1MmZlZGJjYTBlOWExMCBsZWdhY3ktdHJ1bmsKKzI0MzMgZjA4NTdjZTdlZDRmYWU0MDk4NWUyZGQwZDIxNjM3NmZmZmYzMDdjNiBsZWdhY3ktdHJ1bmsKKzI0MzQgYWYxYzhmNWQwYjM3ZjkzMWJkMTc2MWI4OTNkNzdjZjNhOTVlMDU2OSBsZWdhY3ktdHJ1bmsKKzI0MzUgMTJhNjQxMTVhNGVlYmRhNGI4Y2NmOTNmMzIyMTZiMjI3MDc4NGE5NiBsZWdhY3ktdHJ1bmsKKzI0MzYgODAwMDFjMDIzYjJiMjZmYWM5OGMyOTQwZjMxYTQ2Y2YyZjU0YmU5OCBsZWdhY3ktdHJ1bmsKKzI0MzcgMTA3OGNkMjczYjQwNDFiNzlmMTJmYjQxOWY4NTc0OWI3ZGY5YmZiYiBsZWdhY3ktdHJ1bmsKKzI0MzggNTNjOGQ3NjJmM2E4M2UyMDNhNWVhMDEyMTNkMTE1YzU1M2QzZmI0MCBsZWdhY3ktdHJ1bmsKKzI0MzkgYWY5YTg2MzZlNGE4Nzc4NzQ3MTQxMDkzNDE1MjMxNDcyYjdmOWM0ZSBsZWdhY3ktdHJ1bmsKKzI0NDAgOWM5MjRmOWMzYjE2OTQzMjg3YWE1NmJiZDllZmNmMzM2YTE2NTQ2ZCBsZWdhY3ktdHJ1bmsKKzI0NDEgNzAyYTEzOWZhMjRiNDlhODRhNTMwMTIyOWYzMGMwZTA5MGEyMTFhZiBsZWdhY3ktdHJ1bmsKKzI0NDIgNmRmYzkyNjMwMTIzNDcwYTA0NDdjZmFkN2JhZTc5ZDkwMDI2NDIxMiBsZWdhY3ktdHJ1bmsKKzI0NDMgZDVjOWFlNDIyYjQxMDM2NmQ1ZDMwMTc3NGI2MmQ3NzU5NmJiYjU5NSBsZWdhY3ktdHJ1bmsKKzI0NDQgZWQwMTYyNTU4OTI5MzNhOWRlMmUxY2NiZGQ2MzNlN2Y0MmVlMzExMiBsZWdhY3ktdHJ1bmsKKzI0NDUgNmFjNDAyMDIzY2FjNWVhOWYzNzVmNDIyNWQ1MWU0ZDFmMzk2NmJkOCBsZWdhY3ktdHJ1bmsKKzI0NDYgODViZDdkYWMxM2YzYWVjOGZjZjI0MWE4NDRhNjQ3NDQyZDY4NTM2NSBsZWdhY3ktdHJ1bmsKKzI0NDcgMzkwNWRhNmM0YThiZjE0NTdhYmIwZmRkY2UxOGQyZWEwMzk0YzZlZiBsZWdhY3ktdHJ1bmsKKzI0NDggMDdlZmRhMjk1MWE4N2YxZjkwMjIwNWIwYmQ4ZTMxOTBiMzliN2QwNiBsZWdhY3ktdHJ1bmsKKzI0NDkgOWI0M2E5ODMxMjRjMTJjNjYyOGQyMzQzMzNkODE3NzI1M2I2OWU0ZSBsZWdhY3ktdHJ1bmsKKzI0NTAgYzRjMjc4YzU2ZTkwMDA1MzEzYjI1MWM1OWFiYWU4MzE3MzAyODZiNyBsZWdhY3ktdHJ1bmsKKzI0NTEgNjYzN2VlZTFjNGY4NDIyZDc2M2RjZTg0OGIzMWFjODBlMjk1N2MxNSBsZWdhY3ktdHJ1bmsKKzI0NTIgMDY3NzRhOTRhYmI1YmQ3MzY2MWYzMTYxMTExOGUxMjBiZTM1ZjYxMyBsZWdhY3ktdHJ1bmsKKzI0NTMgNjMwODVmN2IzZGI1YWQyYmNhYjY1MDUzMWMyN2M4ZWE4MjJhYzRjMyBsZWdhY3ktdHJ1bmsKKzI0NTQgZjkwMGI2OTJiMzdlNDcwMThkNTVkYjNkOTdhZWY0Y2M2ZDNiMGNjNyBsZWdhY3ktdHJ1bmsKKzI0NTUgODkzOGIzMTMyY2FhOTAzOGEwNmJmNjg1YjgzMjhhY2YzYTIyZWQ1YiBsZWdhY3ktdHJ1bmsKKzI0NTYgZDdhMzhkZWNlODZhODE4MmE0ZWQzMjQ0NTMxM2JiM2UzOTQwNWMyYiBsZWdhY3ktdHJ1bmsKKzI0NTcgN2EzNWQ5ODU3NjNiMjFmOTU5ZTJkMTZjOGFlY2JlYmI1ZWNkNTU1YyBsZWdhY3ktdHJ1bmsKKzI0NTggYWJjY2IwZjlmNzM1OWJjMjliNmJkZGIyOWNkY2QwMmIzN2YxZWI3MCBsZWdhY3ktdHJ1bmsKKzI0NTkgN2Y4NzU2ZmQ2NDIyMGUzZDEwNjY1MTI1ZDZlZjJlMjliOGE1MGU1OCBsZWdhY3ktdHJ1bmsKKzI0NjAgZjcwOTBmNTgxNGMyMjc2MTk4OTE3ZmQ4NjViZTY3MTU1MzU0ZjhjOCBsZWdhY3ktdHJ1bmsKKzI0NjEgMDlmYjc5ZTdiYWY3YWU3ZTEwZWFkZDEyMThhNDQ5OGE2OTFkMGE2NiBsZWdhY3ktdHJ1bmsKKzI0NjIgYzI4ZmFiZTIxMTY1NDQ1ODc5ODdkM2M2MGYxNDMwNmM3Yjk5NzJhYiBsZWdhY3ktdHJ1bmsKKzI0NjMgZDE5YTY2NTkwNGRmNTc5NDgzN2M1MTY0ODc5N2U4Y2FiZWFlYmMzMiBsZWdhY3ktdHJ1bmsKKzI0NjQgMTQ5ZGQxMjFkMGE2YjRlYjQwMzQwY2E5ZjAwNDAxMmM3ZjNhN2RmYiBsZWdhY3ktdHJ1bmsKKzI0NjUgMzIwMWI3NTY5NWVmMjg4M2VmZDQ4NjRmNDdhMGYzYWM1MjdhODZkYiBsZWdhY3ktdHJ1bmsKKzI0NjYgNmI5M2Q0Y2U4ZGNiOThiZjU4YTJkOGU5MGI5MzcxM2UxNjk5YTBkZSBsZWdhY3ktdHJ1bmsKKzI0NjcgYzhhOTc5MDI5ZGY0MWQ4YWMxMjNiMjNlNTEzODBiNzFjYTQyNTIwMCBsZWdhY3ktdHJ1bmsKKzI0NjggMzVhMjUyOGY4YTczZDg2ZmQzOGU5YmJhMDNjMTdjYWNiM2UwN2EzNCBsZWdhY3ktdHJ1bmsKKzI0NjkgYWJjZDkxNTkzMDM1NzdmYmVmYmY0NjRlMzE2NTBhYzBmZWE0MjMxNSBsZWdhY3ktdHJ1bmsKKzI0NzAgMzgyMzIzZjkyZmNlNWZkMDRlYzUwNjE4M2YwMmY4NDFmYTBmZGU0OCBsZWdhY3ktdHJ1bmsKKzI0NzEgNzJhMDI2ODQyMGQwNjc0ZTJhOGQwZGQ2NTdhNjQ2ZWQ3MDRhOGY0MSBsZWdhY3ktdHJ1bmsKKzI0NzIgNjA1ZTE3MmJiYjU1NzQ2NDI4NzgyM2U0ZTdkNDZmMzg3ZmUyMGFmMSBsZWdhY3ktdHJ1bmsKKzI0NzMgYWU4OTQxMWY2ZmMwZTA2NDg2YTEwMTIwMzliZWNmNTllNWM1Nzk1ZSBsZWdhY3ktdHJ1bmsKKzI0NzQgYjhlNDIxM2Y2NWE2ZTU0ZGI0ZTMyZTk0MGM1MTllNmNhZTYxNjczNCBsZWdhY3ktdHJ1bmsKKzI0NzUgZTgzODUyZDFhNWUyM2Q2ZDM4ZDg2YTkwZDc3MzllNDVhZjJhYzJmYiBsZWdhY3ktdHJ1bmsKKzI0NzYgYWVmN2UwYTkxMTllNWQzN2VlODIyMjZhNDQ1MmIyMjhmYzcwYTIwZiBsZWdhY3ktdHJ1bmsKKzI0NzcgYTlkNDY3ZTg0NjMxOTRjZDU2YzFiNmY4Mzc4MDAxNmY3MGVlMTBkOSBsZWdhY3ktdHJ1bmsKKzI0NzggMzI1YjQwZDc3MjM1NTYyOTU0ZDcxZmUxZjU5ZjkxYjc4YmY2NjcwMyBsZWdhY3ktdHJ1bmsKKzI0NzkgMTJmZGZhMDEwZTQxZWI5NTVmZDVjN2VlNGEyNzZlNmZkZGRhNDY4ZCBsZWdhY3ktdHJ1bmsKKzI0ODAgYTE3NzVjYzc4NmU2YWQ5ZDEyNTRhMmIwYTFiMDBjY2U0YTVlNzc1MCBsZWdhY3ktdHJ1bmsKKzI0ODEgMjY0MjZjNDJhMTYyYTQ0OWZlMDI4NzA2NTY1N2Y1YTY5MjM4ZTA0ZSBsZWdhY3ktdHJ1bmsKKzI0ODIgMmE4NGIxNmY5MWIwOTg4MzFiYTc1M2IzZTMxM2Q1Zjg2NWEyOWQwMCBsZWdhY3ktdHJ1bmsKKzI0ODMgMWE2Y2YxZjhjY2VjYTA0YmRjMmVhNzBjZDIzZGJkYjVkODYxNTU4MSBsZWdhY3ktdHJ1bmsKKzI0ODQgNzE0YzIzOTBlNWNiNDVlNmM4MzM0ZmM0MWNjZTllMmQ2YzEyNDQ4NiBsZWdhY3ktdHJ1bmsKKzI0ODUgYTgxMDIwZDUwNWJmOWU4YjZjOWUwZjc4MjllYzExYTFlZWIzMzMwOCBsZWdhY3ktdHJ1bmsKKzI0ODYgYmFhZGEyMDc2MmIwODE4NWQwMTBlMzZjNjY4MTgzMjgzZDNjZWMwYyBsZWdhY3ktdHJ1bmsKKzI0ODcgZmYwODYyZTNkNjNhOTY3NzhkZTI4MGM5Njg3NWFmZjE0NjI3OTdlZSBsZWdhY3ktdHJ1bmsKKzI0ODggNGI1OWU2M2EyN2I1N2MzMTcyZWRkMGU5NWM5NjMxMzVmOTg5YWNlOCBsZWdhY3ktdHJ1bmsKKzI0ODkgNDhiYmM4YWQ4MDE2YTViNTQ3NDE2ZWUxYmZjZmJkMDVjZDJmMDlmNiBsZWdhY3ktdHJ1bmsKKzI0OTAgZjIxY2I3YjUzZjZjZjhhYzU3NDk1OWYyZWUyNWUyOGM0ZjVmYWZhZiBsZWdhY3ktdHJ1bmsKKzI0OTEgMTgwN2Q2MGU2MjMxZjdiYWI4NDJhOGI3MTg1MGEwNjI5ZDY1NjYwMSBsZWdhY3ktdHJ1bmsKKzI0OTIgMjFjMjY2ZjdlY2ExZDk2N2FiZjgzY2M1ZmM0MDMwMjllOGY5YzBlZSBsZWdhY3ktdHJ1bmsKKzI0OTMgYmUzMDUyYTc3YjdmZDQ2ODk1NGEwNzQ4NTMxN2FkZTNkOTgzYjQwZSBsZWdhY3ktdHJ1bmsKKzI0OTQgMTM3YTVlMDZmYzg0Y2U1NWNiNDMwZTg5NzVkNjliMDc5NWU0Yzc1ZSBsZWdhY3ktdHJ1bmsKKzI0OTUgNDQ5ZjVlNWQ5YWY2MmYyM2VlNTA5NTI3NTRmM2ZkOTFlZGU3ZDRmMyBsZWdhY3ktdHJ1bmsKKzI0OTYgMTdhMjk3NjBkMDYyYjAxM2NkY2I0YmU1NzYwNzMyYTdjMWMxYzcxYiBsZWdhY3ktdHJ1bmsKKzI0OTcgNjQxODliYTdlMjNiY2FjMzBiYjBkYmFjMTdlNDFkNGUwNzA4YjM4MyBsZWdhY3ktdHJ1bmsKKzI0OTggNDI2NmFlZjUwYzJiNGNmYjFjMmYxMTI1NTdiNmRiMDQyZGJjYTdmMCBsZWdhY3ktdHJ1bmsKKzI0OTkgNzk0Y2ZkNDU1ZGM2ZjYyNmJjZGM1Yzg0MTE2NDBjOWVmMjUxY2IyYiBsZWdhY3ktdHJ1bmsKKzI1MDAgMDhkYzM3YTRkZDMyM2EyMjU1YjA0ODY4NWU5NTk2MjcwNGNiZmM2NiBsZWdhY3ktdHJ1bmsKKzI1MDEgZTM5NDFlZmQ3MzEwNWMxMjE4YWExMWMzOTQ0NGUwNTgwODY0ODBmNiBsZWdhY3ktdHJ1bmsKKzI1MDIgOTA0MThmZDQzN2RiZDM2NzUwODM1NDExZTZjMWExYTJkNWY0YjNiOCBsZWdhY3ktdHJ1bmsKKzI1MDMgZjM3OTVhYzE0NmNlZmVmMGI2YTU1YjEzMTMxZjc3ZjljNmNhOTdiNSBsZWdhY3ktdHJ1bmsKKzI1MDQgMzZhY2U5MDgyODliYTc5ZDk3YjcwNjBlODVmMDVkYmU5ZmRiZTM0MiBsZWdhY3ktdHJ1bmsKKzI1MDUgNzViMmZkMTYzZmQ3MTVhMTAwMzNhNjA4Mzc2NjczNzBiNjUwMTVjOCBsZWdhY3ktdHJ1bmsKKzI1MDYgMmUwZWE2ZDVjNmNlZmE3YWNkY2U1MWFjNTM5MTU5NTdkM2Y2N2ZiNyBsZWdhY3ktdHJ1bmsKKzI1MDcgNDgxN2FlNDBhNGUyMWRjMDhkN2Q2YTU0YTUzNzVkOTZlYWM1ZWU0OSBsZWdhY3ktdHJ1bmsKKzI1MDggZGFhYmUyMzIwNjJlMDRjNjNlZGI1NGFiNTE3NzJjNDRjZGU1MmM4ZCBsZWdhY3ktdHJ1bmsKKzI1MDkgYTI5NWQ5YTNmZTg5MjMzYzJmNTUzYzdiM2RkZWUxYjI3MmRkN2Y2MCBsZWdhY3ktdHJ1bmsKKzI1MTAgNmU1Y2JkOWNkNWY5NTE4N2NjYmNlNTBmNzE1YjY2NjFkMGRhMTQ3NSBsZWdhY3ktdHJ1bmsKKzI1MTEgM2RmYWEwOTNkOTZlOTE4YzNlMGU4NWJhOTUwY2IzNGRiNWNmODA1OSBsZWdhY3ktdHJ1bmsKKzI1MTIgYTM1OTVhZTRkYzFlNzgzZmE0OTk5OTRkZGFjYzk5M2I2M2U3NDkzMyBsZWdhY3ktdHJ1bmsKKzI1MTMgZDkzMjU5Y2QzNzlkNjY2ZWZkMTIzNGQ1OWEwZWIwZDEzNzRjYzA4NiBsZWdhY3ktdHJ1bmsKKzI1MTQgMWMyY2YyYmRiNmM4YTBlNTVjMmRmMDUxYjIyMTZiNTFkZTMxMDUzMCBsZWdhY3ktdHJ1bmsKKzI1MTUgNjBkYTdlZTkxMDBlNjQ5YjQwMjUwNGM0MjJmN2M1ODk4MDBjNGI1OSBsZWdhY3ktdHJ1bmsKKzI1MTYgOGE5NGNjYzRjOTE0MDBiMmU0NjIyM2U5YWMxNzgwNmYxZDhlMWFkMyBsZWdhY3ktdHJ1bmsKKzI1MTcgYWIwNWVmZWQwM2U5MGZmNjFjYjYyODY5YzQyMjhhZmQ3YTM4MWNhNyBsZWdhY3ktdHJ1bmsKKzI1MTggMjM1ODdiZWExMWJiMWE4ZjY3NmY0OTg3Y2QwZjEzOTBmY2JmYTE2YyBsZWdhY3ktdHJ1bmsKKzI1MTkgYTY3YWI1ZDU4MTQ2M2MxZmRmNTA5NTFhMDcwZDZjY2E5NjA1MjMyMiBsZWdhY3ktdHJ1bmsKKzI1MjAgMDY5NmYxOTg3NTNmOTQ4ZThhNjE0ZDE5ZjMwMWFkNjQ4Yjk2ODJjOCBsZWdhY3ktdHJ1bmsKKzI1MjEgM2IzM2FjNDRlMzZlM2M2NWNlNzI2OWRjODljOWVmYTJmZDkxYTliZCBsZWdhY3ktdHJ1bmsKKzI1MjIgYzg1ODRhMWJhMzhhOTQ3NDRlNjExZTRhMTJlMTM2NmQwYzY5NDhmZSBsZWdhY3ktdHJ1bmsKKzI1MjMgYjI5Njk2ZTVjNGQ5ODJkOTU5YTIyZmVhY2EwNDU3ZTVhMDQ3ZmFlMCBsZWdhY3ktdHJ1bmsKKzI1MjQgZDcwNzU0YTk2MzEwZDYyODgxYTg5OWI2NTYzYWFiMzJlNThkNTUwOCBsZWdhY3ktdHJ1bmsKKzI1MjUgMGJmODI1ZjU1YWMxNTIwMGI2MDIxZjhhYTNiNDBkMWY0Y2IyYTk4OSBsZWdhY3ktdHJ1bmsKKzI1MjYgNGUzMDczYmIwZTNlMDM5N2JkZTk3NTNlODgzMjIxM2MwOWNhMDkwMCBsZWdhY3ktdHJ1bmsKKzI1MjcgY2ZiYWM2ZmY3M2FmM2NhNDM0OWZlMzkwZWQ1YTBlMGJkMGVhOGMyNiBsZWdhY3ktdHJ1bmsKKzI1MjggYTdkMzcwZjkzZjc1MjZmMzQzM2I2YjM0YWI1NGYyMjE1MTg1Y2RjYiBsZWdhY3ktdHJ1bmsKKzI1MjkgMDkyN2JkYjgxNmEwNDNiY2I0YTExZjE0ODAwZWQxNzlkODYzNjRkMiBsZWdhY3ktdHJ1bmsKKzI1MzAgNDZhNjU2MTIzYTY5NjU1NjBiZjIzMjIzODA2OTMyZDUzN2MzMzYyZCBsZWdhY3ktdHJ1bmsKKzI1MzEgNTA5YmI3NGFjMzI0MTI5ZDMyMzUzMjFjOWFhNWRlNzM5OThmYjFlNyBsZWdhY3ktdHJ1bmsKKzI1MzIgMzk3MjkwMGUxYjYxYjI3MmQ1ZjQ2YmZmMjAyZmY0YmFkNTQ3N2NlNyBsZWdhY3ktdHJ1bmsKKzI1MzMgMTZiMThmNTg2ZmVjYzQxZDE1NDQ0YmQ0MjkxNDYzY2I5YTY3NGY3MyBsZWdhY3ktdHJ1bmsKKzI1MzQgMzA1ZTE1MGJhYTUzOGU1ZTdkZGMwZjUxY2UzNmQ0NzYwOTJiZjU1YyBsZWdhY3ktdHJ1bmsKKzI1MzUgNzBhMThhNjY4OWQ0ZDljZDBkZTM3YWMyYzZkNDdjODViNjIzYzdmMSBsZWdhY3ktdHJ1bmsKKzI1MzYgODY4MjhjYzFjNjQ2OGQzYWIwZjA4MjI0YTI3MjZjNmRjOTEzOTVkMSBsZWdhY3ktdHJ1bmsKKzI1MzcgNTY0NTk0MmI3YWUwNTVjNTZiZDFkNjNmMzA5YWU1MDMyNmFkYzRiOCBsZWdhY3ktdHJ1bmsKKzI1MzggN2FhNGNkNjIxZjU5MjY0ZjJmOWQzMDE3MTQwMzNiNzdlNjcxY2E5ZiBsZWdhY3ktdHJ1bmsKKzI1MzkgNzMwNzU3Y2NiOGEzNjk4NGY4MThhMTE4ODY1ODljOTFhOTM3Y2IzYSBsZWdhY3ktdHJ1bmsKKzI1NDAgNzNlZmUzZWE0ZjFiOGFmN2MyZmJiZTg1ZTNlODliZjgxNTlmNzIzNCBsZWdhY3ktdHJ1bmsKKzI1NDEgZGRhYjUwMjg1YzQ3OWVhZjg0Y2Y3ZDZiMDA2Y2I2ZTcwYTYwN2E4NyBsZWdhY3ktdHJ1bmsKKzI1NDIgNGE5NjgyM2Y5YjY4NDk2MDBjNTg4ZmYzODc3NWY4NjgyZjk2MjcwMyBsZWdhY3ktdHJ1bmsKKzI1NDMgNGRmZjIzZTdjZjExNDE3YjUwZDdkYTdkNzExZDg0N2YzYjgwNTA2MyBsZWdhY3ktdHJ1bmsKKzI1NDQgYmEzYzFmOTVlNjY1ZTM1NTY3Y2JiMTc4MWRmNjMwZmM3MzZmNGYyOSBsZWdhY3ktdHJ1bmsKKzI1NDUgYTNkNGQ0NjFkNDQyMWZhZWIzNGFjYTI4ZmM2NjQzNzYwYTk0MWRlNSBsZWdhY3ktdHJ1bmsKKzI1NDYgMDM5YWVlNmNiZDc4NmFiZjUxMmNjYmEyMDkwYmY0OTA3NTk4MTFhMyBsZWdhY3ktdHJ1bmsKKzI1NDcgMDU5OGY0ZjI1ZDA0NGQ2MmFiM2U3MjNjYzYzMjA2MTY5YmI1N2EzNiBsZWdhY3ktdHJ1bmsKKzI1NDggZjAxYWVlNjE1NWIzYTJmZjJhM2RmOTkzYWUxMjU3NjBkNzgyYThjMiBsZWdhY3ktdHJ1bmsKKzI1NDkgMzFkNTA5ZTk0MjcxMDU5ZjEyZDYzYzcxMzFjMGQ1ODAyNmQ4Nzk0ZSBsZWdhY3ktdHJ1bmsKKzI1NTAgNTViZjY2NDQ1Yzg1YzgwZjIyN2FjNDljMzFhM2U4OGY5ZjgwNWU5NyBsZWdhY3ktdHJ1bmsKKzI1NTEgMTcyYWEyYzNlNzM0MGMxZTc0MzlmM2I3ZTFiYTBmM2YwY2NhNmYwNiBsZWdhY3ktdHJ1bmsKKzI1NTIgY2FmODQ2NmRjYzljMzU3N2MxZWI2MTkxNDY3ZmU5NGYxNWIyNDI1NyBsZWdhY3ktdHJ1bmsKKzI1NTMgZjMzYTNmNjlkZmNiNTliZDE5ODY0MGE2MjQ3ODllNjIxN2IxNjMzMSBsZWdhY3ktdHJ1bmsKKzI1NTQgNTk2MDliM2FmOTc4YTM5NzAxNmNkMzViYWVhMmQxNWU1OGMzZmFmYSBsZWdhY3ktdHJ1bmsKKzI1NTUgODE1NDM4NTI0OGQ4MTc1N2RlOTExODk3YjI3ZDhiM2YxZmEwZGIzMCBsZWdhY3ktdHJ1bmsKKzI1NTYgNjU5YjhkYmY2OTVjNTExYTk5NTVlOWM3N2Q0MmM1ZmZhOTk4OWZjNyBsZWdhY3ktdHJ1bmsKKzI1NTcgYzI2MmY0MjFhNDRjNTFjNGZhODk3NTQwZDQzOTU0ZTE4MTFhOTkzNyBsZWdhY3ktdHJ1bmsKKzI1NTggNGNkY2MxNmJkMDgwMGZlYzBiMjgxNGU4YzAwOWRmZGMwZDVmMjAyMyBsZWdhY3ktdHJ1bmsKKzI1NTkgMGFjMTM1N2NkODk4OWUzYjM2NTQyMjhlMTY2NzdiZGExNjYyYTM5OSBsZWdhY3ktdHJ1bmsKKzI1NjAgMWU0ZTZkZjA3MThlMDM4MzZhNWJiNjkzZWNmMzgwNWM0MmMwNzI0NCBsZWdhY3ktdHJ1bmsKKzI1NjEgZDE4OWEyZjY4MWE2ZGYzNzU5YTBhNDAyNmJkNjVlZDc0MTMyMjBhMCBsZWdhY3ktdHJ1bmsKKzI1NjIgMGM1ZTRlMTM3ZGU2ZTBmMzY4YWI0ODllNjQ0NjFlZjhiMDQyY2JmMCBsZWdhY3ktdHJ1bmsKKzI1NjMgOWJkMjY4MGQxNmJjMzYxNzBmMGYyYzkwM2YxZmI4NzY1NDEwNzcwNyBsZWdhY3ktdHJ1bmsKKzI1NjQgZDc4MzJhZjZhYmE2MzRlNWUzM2FkYjQ4MTVlZDkwN2Y5YjI4ODBjZSBsZWdhY3ktdHJ1bmsKKzI1NjUgOWNkMzhkMWFjMzkxOWYzNmMwYTI2M2ZjYWU0ODdmM2YwNDEyYWU5YyBsZWdhY3ktdHJ1bmsKKzI1NjYgZDNkMzI4NjgwMzI4ZGU3Zjg2MmMxMTIzYjYyM2U4YzRjNzc1ZDM2NyBsZWdhY3ktdHJ1bmsKKzI1NjcgZTYyOGQwOWNlMjJmZWJkZGJjNWZlZmFhMjIzMjYyMDI2NjRlYTcxYyBsZWdhY3ktdHJ1bmsKKzI1NjggOWIzZDU1NzY2NWE5MTgwMjU1YjZmNTc3M2UwOTI1ZjZmYTgwMjI0NyBsZWdhY3ktdHJ1bmsKKzI1NjkgOTUyMTMzZTg5YmM3MjVlYmZhNDlmMzgxNjA5NjNlMDVhMjJjNzRmNCBsZWdhY3ktdHJ1bmsKKzI1NzAgYjVmZTY0ODIwNzJmZWZhNGNiNDNiNzJiMTJjZmY1ZTJmNmQzZTYyNCBsZWdhY3ktdHJ1bmsKKzI1NzEgZmQwNjFkYWU5ZTU3MGQ4ZmE4MDM4Y2VjZTcwYmFjZWY1ZTFmZjY3YiBsZWdhY3ktdHJ1bmsKKzI1NzIgMGYzNTNhZmMyODcwZDY4NDQ3NzI5ZGEwNzQyZDQ0MTFjNWJiZWQyNyBsZWdhY3ktdHJ1bmsKKzI1NzMgNGVmMzFmNWQzZDkyN2I0YjcyYmYxMzEwMWYzODY0ZWFmNjMyMjY5MSBsZWdhY3ktdHJ1bmsKKzI1NzQgMmFmZjM3YjllMjBlY2EwOTdkOGM5YWM5MGZjNmNiZmQ0NDMwYzY4ZiBsZWdhY3ktdHJ1bmsKKzI1NzUgNGM0NWJjYmUzYmIzYmJmNzEyZjJhZWI5NTNiNDVlNDVkM2YzOThmZiBsZWdhY3ktdHJ1bmsKKzI1NzYgNGYxNTdiMzI0YzUwNWIwNjJjZjUyYTI5NmE0YWY0ZDJhOTQzNTZjYiBsZWdhY3ktdHJ1bmsKKzI1NzcgMmIwMzRjOTBiNmQ5YTY3OGRkYzQ3OTkzOWM0MWExMThmYzYwYWM1ZSBsZWdhY3ktdHJ1bmsKKzI1NzggMTYzZTI5MDYwZjBiZjMyZjExOWI3ZDEyMTI4ZTE3NDE5OWQ0MTQ4YyBsZWdhY3ktdHJ1bmsKKzI1NzkgNzAzMjNjYmEzYzEzNjlkYTI0YzAzMDlmZDA2YzMzZjk5MzUyM2Q3OSBsZWdhY3ktdHJ1bmsKKzI1ODAgNWE5YWEyYWJhMDhlOTZkMDAwZThjM2ZmZDgxYTQzZjljMDA1OTE4NSBsZWdhY3ktdHJ1bmsKKzI1ODEgMzk0MzAxMzQwNjkzMzcyYmI4YzBmZTM5MjcwNzBiMjEzMDAxNDJhZSBsZWdhY3ktdHJ1bmsKKzI1ODIgNTVlZTc1ZjJmZWE0YWNkYWQ2NGVlMzZlMmM0Y2ZlYWViNWJiYjM1ZCBsZWdhY3ktdHJ1bmsKKzI1ODMgZWE1Y2YwOWJiZjM2YjQ2N2NiNzhmN2NiMzc2NDcyMmUwNTBiNDVhYyBsZWdhY3ktdHJ1bmsKKzI1ODQgYzhkMGE0YTQxZjBiYTdjZTgyZmQ3YmNlNzU5YWYxMTgzYzRjMWI4MiBsZWdhY3ktdHJ1bmsKKzI1ODUgMmRjZWNhOWEwNzEzOTMzYzM2MWU0MWM2YjNkMjBlYWNjNWM0NDk3NSBsZWdhY3ktdHJ1bmsKKzI1ODYgZDFlZTBmYjBjMGRmNTY1YTI0MDU1MTM3ZTNlYzY2MGYzZGMwNzNjMiBsZWdhY3ktdHJ1bmsKKzI1ODcgNjFiYmM3MjMwYzcxNjZlNTY1ZWQwYWJmYTM1NTMwZWZlMzQ0YzJkZiBsZWdhY3ktdHJ1bmsKKzI1ODggYTNhODQyYjM5OTEzMmVjODBlZGU1ODk0MmZmMTliNGI3MWE3YWFjNCBsZWdhY3ktdHJ1bmsKKzI1ODkgM2M3YjdjYWE5ZGE1NjZhYWNlNjEwZDExZWZmZGZlODdhNDE5MDk3OSBsZWdhY3ktdHJ1bmsKKzI1OTAgYmIzMDhlN2IwMDM5NGZiYzljN2U0NDU1YWVjZTRjYTUwMTM5ODM4ZCBsZWdhY3ktdHJ1bmsKKzI1OTEgMGY5ZWJjNjNkY2I1NjM4OWFmMWIxYmZkNzEzZWIxMGI5OTc2ZGNiMCBsZWdhY3ktdHJ1bmsKKzI1OTIgMDhiMWE4OWM4ZjA2MzUzNGM3OTM5NzU3NDE0Mzc5NDFlNzNhZmU1MiBsZWdhY3ktdHJ1bmsKKzI1OTMgNzk0MGJiMzkxYTZhY2IyZjlmNWUwMzZlMWYwZTUyZDdlOTRkZjdhZCBsZWdhY3ktdHJ1bmsKKzI1OTQgOGJlZGRjMTcwMzk2NjhiMzQ4MDY5NWJiM2M4ZDJiOTViZjU0ZjczNSBsZWdhY3ktdHJ1bmsKKzI1OTUgNDg3YjdjNjJhZTc3NGEzODUxMzNkYjAxMTU2ZDI3MTdiNTZkZTA1NSBsZWdhY3ktdHJ1bmsKKzI1OTYgMmRlMzRiOTYwMmUwZWY2NWU0OGQxNGUzOWVkNjBmMTc1NTI4NDA1NiBsZWdhY3ktdHJ1bmsKKzI1OTcgMWU2YzhmMmFhMTM2ZGFhMjc1NDc2MTM5M2UwYzkyMjNkMGZmZmFlNSBsZWdhY3ktdHJ1bmsKKzI1OTggNDAyYTU5YWQyNDkzZjBiOTdmMzJjNmZlYjE4OWE1NWVlMWE1YTMzMiBsZWdhY3ktdHJ1bmsKKzI1OTkgNjRiYzhhMjg0ZmIzZmNmZDM2YTE4YmNkMmZlNmI1MjcwZjRkZjFmMyBsZWdhY3ktdHJ1bmsKKzI2MDAgYzEyZDAzM2Y2NTk0ZTY2NDlmZmMyNGI4MWUwN2UwYmEwMTY5OTdiOSBsZWdhY3ktdHJ1bmsKKzI2MDEgZTJkYjMzNDFkNjg2MGVlNjc2YjViZDgyNjg1MGNlNjI2NDdiZGVlMyBsZWdhY3ktdHJ1bmsKKzI2MDIgNjAwYmZhOWZiOGI3NmU1YTlhNDc1MDIxYmRmZjM3MDNhNTI0MzkzZCBsZWdhY3ktdHJ1bmsKKzI2MDMgMTdmNGNkZjI4OTU5ZjYwYTI0NDk0ZWY2ZjFlNDEwNWZiNDk4MDkwYSBsZWdhY3ktdHJ1bmsKKzI2MDQgOWY4NWJlYjFmN2M4NDlmZTAxNjk3MmQ4ODBjOGEwYmEyM2NiZmMxYyBsZWdhY3ktdHJ1bmsKKzI2MDUgMWY2NGY1NWE1MmU4NjVhYTdhYTk2N2I5MTlmYTQwYmE3NzRlNDJjOCBsZWdhY3ktdHJ1bmsKKzI2MDYgYzA2ODNkNjY3NmM2NmJjNTRiYTk2ZWZjMDE5Nzk5OGY4ZjAzN2RkYyBsZWdhY3ktdHJ1bmsKKzI2MDcgYzMwN2QxMGI2ODBjNmEzOThjYTE1NmY3YzBjZDQwNmMyMmUyZWExZiBsZWdhY3ktdHJ1bmsKKzI2MDggOGY2Mzg5ZGJjMWNmN2I0ZmE3MTgyNzk5MDM0YWNjOGM4ZmYwOGM4OCBsZWdhY3ktdHJ1bmsKKzI2MDkgMzI2Yjg5ZWE2NzEzOGJhYzQ1MzFjNTk4MDYyMmY4NWU5MjJiZjc1NCBsZWdhY3ktdHJ1bmsKKzI2MTAgYTRmZWE2OTEyMGQ4MTQ3NzMxYjI2OTQ5MjExMGU3NmZhNTBmMjIzOSBsZWdhY3ktdHJ1bmsKKzI2MTEgMjM0OTdkYjY2ODdhYTFkYWNlMTk2ZGM2MTY0MmQwMzFkODdhYzlkMyBsZWdhY3ktdHJ1bmsKKzI2MTIgYjJkY2UwMWMzNjZlNmFlNTQ1NjFhN2E4ZTg2NTI2ZDcxNjQ2ODczYSBsZWdhY3ktdHJ1bmsKKzI2MTMgYWUxYTU1NWU2NWZhYzY0NjU2YmMwMmVhNWRkYWFjYmIzNzBlMDQ2YyBsZWdhY3ktdHJ1bmsKKzI2MTQgMzRhYmNhMTgyZjE4ZTFiNjE2OWVhZTA4MmMzMWEzMjgxZTg4MWE0NSBsZWdhY3ktdHJ1bmsKKzI2MTUgYTVmMGI4MzkwYzg3OTY4MWRiYjI4NDk0Y2JkZWI4Y2UxZmJkOGY4OCBsZWdhY3ktdHJ1bmsKKzI2MTYgNDY0ZDlkOTNmMzRlOTFhMjI4ZmY2NWRhZjQ0MGQ5ZWE4Y2NjNzI4NCBsZWdhY3ktdHJ1bmsKKzI2MTcgOTI3MThlNGY1YWRjMWIyODRjNzY4ZWRlMmVhYzcwYmQ4NGUyYjRlMCBsZWdhY3ktdHJ1bmsKKzI2MTggZTg2NjdhN2QzMThkZGVlMDg1ZDhlMjRlOGQ3MDZlNDZhOGFiYTMzMSBsZWdhY3ktdHJ1bmsKKzI2MTkgMWZkNDcxMmNjNjZmN2I2YWM1OTgwNDVjODAwNWYwNTkxNzg2NTQ0MSBsZWdhY3ktdHJ1bmsKKzI2MjAgMDczNmFlZmFmYzYwMThjMTY0ZmY4MGQ4ZTNjMjg0YjhiOTUxNjU1ZSBsZWdhY3ktdHJ1bmsKKzI2MjEgN2E2MGZhYTM4MTEzNTFiYTBiNDZkYTkwZTZlOTM5NDcxODY2Y2IyZCBsZWdhY3ktdHJ1bmsKKzI2MjIgNzY5Y2ZmZjRhZTVlOTUwNDFhYzM5NjQ2NmMwNWQxMWRlNjMyNTllNiBsZWdhY3ktdHJ1bmsKKzI2MjMgNjc4YTczNGMyNDRkYzkwY2Q4MzE1ZWUzYjc0MjNjMGJmNGJjMzQ2OCBsZWdhY3ktdHJ1bmsKKzI2MjQgYzk3ZjRjNmJhNmM2NWVjYzYzZjMzNWJmNzBhY2Y0MTI2MTcyYWQyNyBsZWdhY3ktdHJ1bmsKKzI2MjUgOTAzMDBjYTIxMjAwNTkyMDY2YmE3OGUyN2U5NDFiMmFjNjczMmEzYyBsZWdhY3ktdHJ1bmsKKzI2MjYgY2EwMzkxYTgxMmY4NjM1ODkyOTU0OGM3NWFiYWM5ZjIwN2I4ZTU2ZiBsZWdhY3ktdHJ1bmsKKzI2MjcgOTBjYmNiMGI5N2RjN2Q0OTg0NDM1MjRjNTIyYjkxMTkzY2U5NTBkMyBsZWdhY3ktdHJ1bmsKKzI2MjggMWNiNzhiNjI1YjA3MjNjYjQ5NTUyZGQ2YWM3ODA5Y2U1YTRiYTRmYSBsZWdhY3ktdHJ1bmsKKzI2MjkgMTBlM2QyNjA0MTMxMDlhOWFiZDM3ZWI0NTc2ZTBlNTJmMjUyZGQyYyBsZWdhY3ktdHJ1bmsKKzI2MzAgNDIxMzBlNzIyMGFmZmI5NGQwYzMzZjhmZTY3N2Q3ODJlODAyY2JjYyBsZWdhY3ktdHJ1bmsKKzI2MzEgYTEwMjVjYmJhMzBkYWQxN2Y5OTU3NDFhYThkNWI0NTI4OGQ5Y2RkNyBsZWdhY3ktdHJ1bmsKKzI2MzIgMWJlMjA4NzY5MmEyNDQ0NjQzNDczMTM5MmUzNDBlYTYyYmZjODYzZCBsZWdhY3ktdHJ1bmsKKzI2MzMgMWQ0YjAzMzliODNkYThlM2JjYTA0NGVlMjI2ZGY1MmRkNDFjOWY3YSBsZWdhY3ktdHJ1bmsKKzI2MzQgNGE3ZjBmMDZjZDI3YzRiMjlmNzY2NjNmMDY3Mzg3YjJiMzYxZjdmMCBsZWdhY3ktdHJ1bmsKKzI2MzUgMTkzNjUyMDFkY2ZhODVhZWFlM2Q5NDA1OTY0ZWJiZGY4Mjk2ODBhYSBsZWdhY3ktdHJ1bmsKKzI2MzYgZTJjMzQ2M2M0ZDkxODQzMDM4ZmE2MGFiNzcyYmYzNzBmZjNjYjQwNCBsZWdhY3ktdHJ1bmsKKzI2MzcgYmVjOTYzZjk5YmM5ZjU5MWFkMWMyZTA5ZWU2MjQ1MmVlYTliOWFhMCBsZWdhY3ktdHJ1bmsKKzI2MzggNDM2YzgxMDMwODUzMzg2NzMzZjZiMjFhM2RjNDk3YjliZmQ5NGYyZiBsZWdhY3ktdHJ1bmsKKzI2MzkgYzNiZWU1YTU3MjFmN2VjZDdkYWJkOTZkODhkZjU0ZjhhMGMwMjU0NiBsZWdhY3ktdHJ1bmsKKzI2NDAgMzI0OTZhMGQwMWY0ODhhNjVlNzU4ZWVmNDVjM2U1YjMwMmVkYjI1MCBsZWdhY3ktdHJ1bmsKKzI2NDEgYzY0YzY3MDI1NDlkNmJhMmNkYjk5MDg5NWY0ZmZmY2M3NWZmZjQwMyBsZWdhY3ktdHJ1bmsKKzI2NDIgZGMwNDYzNDUzYTY0MzcxYmFhMDM4MWI1M2MyZmIzOGE4ZDY2MWNmOSBsZWdhY3ktdHJ1bmsKKzI2NDMgZWU4OTlhODE1NzBkMDUwNGNhODBhYTFkZDgyZGQzNDM1Y2RlZDcwNCBsZWdhY3ktdHJ1bmsKKzI2NDQgY2ZiYzRjY2UxYTQyNzc2Mjk4ZjZkNjAyZjQ1Nzc5MWQ4Mzk4ZjVkOSBsZWdhY3ktdHJ1bmsKKzI2NDUgZGI4MjBkYTNjZTAzZWQ2NzFmNmFjYzI0OTQyMDI0NThjMzZmNzQwYyBsZWdhY3ktdHJ1bmsKKzI2NDYgM2IzODViZGEzOGY4OTE1OGE3ZjBlMDJhMTk0OWU1NTgxYTk0OTkxNSBsZWdhY3ktdHJ1bmsKKzI2NDcgYzdhMmY1NjEzZDY2NDY5MTk2YmE4MDdkM2I4NDIyMTEyYzk0ZTQ1YiBsZWdhY3ktdHJ1bmsKKzI2NDggNzdiODBhOTFkMzU3YzFkOTVkOGU3Y2Q0Y2JiZTc5OWU1ZGViNzc3ZSBsZWdhY3ktdHJ1bmsKKzI2NDkgOTBmMzVmY2Y4ZWEwMWQ3MDgyOWRiNTZlYmRhY2QyYWQ0M2Y3MTQwMCBsZWdhY3ktdHJ1bmsKKzI2NTAgYTBmYmM3YjZhNDg1Zjk4YzkwNzFkMjg3Nzk0ZjFkMjRmMWU2M2RkNyBsZWdhY3ktdHJ1bmsKKzI2NTEgMDIzYzdmNjlkMjQwMDJjODYzOTM3Yjg0M2U3N2E0M2U2YjRmMDJkNyBsZWdhY3ktdHJ1bmsKKzI2NTIgYjkyNjU4MGM5YzI4NDE4NjMxODJhMDhjMTQ3OTA4MjlkODEzZGQ5MSBsZWdhY3ktdHJ1bmsKKzI2NTMgOTJhMTBhMWUxNDYzMDA3YzAzNTg3Nzg5MWQ5YWFhMjYwNTI5ZDMzNyBsZWdhY3ktdHJ1bmsKKzI2NTQgNTc2NjdhYjFlMTk0MWQwMWVlYmM0YzZlYmU2ZDc3YWU4OGNlMTNkZCBsZWdhY3ktdHJ1bmsKKzI2NTUgNGMyMTFlODI4NmI1YzYyODJlYTQ1MjdkODU1Y2IyYzYyNDQyNDk5YiBsZWdhY3ktdHJ1bmsKKzI2NTYgMGFjOWQ1ZGI0MWM4ZmYxZmViYjUxMGJkMzQzYTA1M2I0YjM0NzEwZiBsZWdhY3ktdHJ1bmsKKzI2NTcgMGFjMzkyYjdmNzZlYWJlYWQ4ODQxNzE3ZmVkMTM1MGE1MDNjYWM0NiBsZWdhY3ktdHJ1bmsKKzI2NTggMmNlNmEyYTMxODg2M2RlZTNlZGJhZjkwNjM5YmEzMmM2NzVkYzY2YiBsZWdhY3ktdHJ1bmsKKzI2NTkgNTZiYjEwNjdhODgwNmVkMmM5MTNkZTk0NmQ2ZjViZDFiOWE4MTgyNiBsZWdhY3ktdHJ1bmsKKzI2NjAgODBlMmU1ZDY3YjQ5NjY2NTMwOWYxMTY1ZWExNGM4Nzk0ZGFkZDdiMyBsZWdhY3ktdHJ1bmsKKzI2NjEgN2YzZmFhZmQ4M2VkMzcyNzUyOWQ3MWRhODNjMDQwZDk1NjU1N2M3YyBsZWdhY3ktdHJ1bmsKKzI2NjIgZGRiY2Q1MzJjMTE0ZGY3NWJmNzNlMzA3M2RlYTQxNjU4NTUyYTNjMCBsZWdhY3ktdHJ1bmsKKzI2NjMgNjdmNmY3MTk0M2MxNjIyOWRhNzVhMzY3NjY2M2Q2MDYyNzcwNjg2YyBsZWdhY3ktdHJ1bmsKKzI2NjQgZTE0ZDQ2NDQwZWE3MTM5OWZmZjE2ZjdjMDVkMWFiNzk0ZjhhY2U2MyBsZWdhY3ktdHJ1bmsKKzI2NjUgZWIwMzk3N2JhZWViNGNmMzI4N2FmYzdhMjc2YThlOTI1NTJmMDRiZSBsZWdhY3ktdHJ1bmsKKzI2NjYgMDk1ZDljZjRlM2U2ZTI0YjE4MGIwY2M0ZmZlMWMwYzg2OTA4NjJmZSBsZWdhY3ktdHJ1bmsKKzI2NjcgOWY3MTYxZGI1NjY5ZTkxYjU2ODM3NGZkNmJkMDQ0NWZhNjU0NzFiNyBsZWdhY3ktdHJ1bmsKKzI2NjggZmJmZjJlN2NjNDlkZjg4N2I0OWZkODNlNDU1MWY0Mzc5ZTlkZGRhMiBsZWdhY3ktdHJ1bmsKKzI2NjkgNzllYTEzYjdkZjJjMTYyNzUwYTQyN2EwYjRlYzczYWUyMjVlYjdjZSBsZWdhY3ktdHJ1bmsKKzI2NzAgNWI1Zjg2ZWU0Zjc5YjdlNTUyMWQ2ZTYyZDc2OGI4MDcwYTMxYWNiNSBsZWdhY3ktdHJ1bmsKKzI2NzEgY2JjZGZkYTA1YmM0ZTIyYWY1NmRmZGYwMWVjYTdkN2I4ZjM2ZjNhNCBsZWdhY3ktdHJ1bmsKKzI2NzIgNzY2Y2M4MjBmNTExZTEwMTlhYjdhMDk5YTU0YmVmZjdhZjlmMzIwNyBsZWdhY3ktdHJ1bmsKKzI2NzMgODQxNGUxZjlhNWZlNGNjYjM3M2UyNWQzMTgzYWRlYmY5MjA4MWNhMSBsZWdhY3ktdHJ1bmsKKzI2NzQgOTg5NmRjZjA4ZTE2ZmFlMDllNjFiNTQ1MjFjZmIyZTQ4NDU3YjhmZSBsZWdhY3ktdHJ1bmsKKzI2NzUgYjQ2ZDc2ZWJkOWE3MmU1MDMyZjQxNTc3YjI4NjhlNGI3M2QwMDRjMiBsZWdhY3ktdHJ1bmsKKzI2NzYgZjhkNTNiNmNkNDQyZTgwMGUyMjllZDFmZjQ1OTMwZDk3MzcwMDE5ZiBsZWdhY3ktdHJ1bmsKKzI2NzcgNjlmODk3Mzk5MzhmOWE2MDhmZGFlNjgwNTQ1NGI0MDNjZDM0ZmY4YSBsZWdhY3ktdHJ1bmsKKzI2NzggNDNjMjIzMTU5YjI4Mjc2OTdjODA4OWFkZTFjNjhkZmUwNWNhZmFmNiBsZWdhY3ktdHJ1bmsKKzI2NzkgZGYwMzQzYWM4YTIxYWIxNThmYTRiMTM5OTY1MzdlYWMwNjAyOTFkYyBsZWdhY3ktdHJ1bmsKKzI2ODAgMDQ4ZTEzNzFjNDUwNmMxZTNlMjI2MGI5NjIzNWE1OTVkODBmMDA4NCBsZWdhY3ktdHJ1bmsKKzI2ODEgMDJkZTdhOGFlMjY3NjFjZjVjNjdkY2QyOTIxYzBjZTJmNjZkNGEyMiBsZWdhY3ktdHJ1bmsKKzI2ODIgMmRjZGIwMDIzYzMyMGVlNTJlZTczMzdjNjk5MjA3MGE1OWY5NTViYyBsZWdhY3ktdHJ1bmsKKzI2ODMgYmU4OThjYzE1ODAwNmExODQ3ODM5NTI0M2MzNWFlYjU1M2IxMGQ1NCBsZWdhY3ktdHJ1bmsKKzI2ODQgZDliNmIwMzY5ODYwYzQ1YzRhZWVjY2M3NmM4OTA2YjI5YjE0MjdiNiBsZWdhY3ktdHJ1bmsKKzI2ODUgYjM4MjVjZTgzYzg3ZjI0MjlkZmY4NDVlYzc0MzVmNGE3NmU4N2QwYSBsZWdhY3ktdHJ1bmsKKzI2ODYgNzQyZGM4MzgwMzhiZmNhY2FkN2IwM2ZjMGEwNjVkYjMzNjIwMmRlNSBsZWdhY3ktdHJ1bmsKKzI2ODcgMmIwYWQ1MmFjMzk2ODZjODk4NDk5ZTMwZjk5ZWExZmEzNTgyOTY3MyBsZWdhY3ktdHJ1bmsKKzI2ODggNDM1N2FiNjhjN2Q1YjZlOWMwZDZhMTZiNzhmNWJmMzEwZGE2YThlMSBsZWdhY3ktdHJ1bmsKKzI2ODkgM2Q0NjcxMDhiMDA4M2M0YzU2YmQ1YTQ3NDdiYWVhNzAzMjEyNWJlNSBsZWdhY3ktdHJ1bmsKKzI2OTAgMWVmZGIxNTIyMWRkZDFlOTYzNTcwZmI3MWYyODE4YmUwYzRiNjgwOSBsZWdhY3ktdHJ1bmsKKzI2OTEgZGMyZWM0OWEyYWQyOWI2ZDk2MzAxM2RlNTJhMWE4MzVlMGZjNzFmMyBsZWdhY3ktdHJ1bmsKKzI2OTIgODMzMTA3NmNmZTE1MmRmY2I5ZDE2NjlmOTI5ZDQ3OTFkNWI5MzYzOCBsZWdhY3ktdHJ1bmsKKzI2OTMgZmVlMzUwNzhlZjQwYTNkNWI1NGZlMDhiMzM0OTk3MjUzMzBlZWY5OCBsZWdhY3ktdHJ1bmsKKzI2OTQgOGI0YTI3NGU1NDZkY2NhOGNhODBiYzE2MTkxMjE4NDZlYjYwOWVlOCBsZWdhY3ktdHJ1bmsKKzI2OTUgOTZiMjEyOGYwMGFlZGMyNGEyNDRhNmVhZTIwMWFlZTQ4ODc4MjQxMiBsZWdhY3ktdHJ1bmsKKzI2OTYgMjY5NmI1NmRkYWM0OTUyZmNkMzgwMmQxZTE4MjQzM2RlZjFhNjM1YSBsZWdhY3ktdHJ1bmsKKzI2OTcgMjU1NzI4YTg0MWRlZjFiNWU5MjhlMGVkNjFkNjRjY2E0ODYxNzM2MyBsZWdhY3ktdHJ1bmsKKzI2OTggOTAxOTg0ODgyNGExMGQ2ZTFlMThlYThiYjY3Njg1MTA4MmNiNTk2MyBsZWdhY3ktdHJ1bmsKKzI2OTkgOWQwMjQyYjkyY2E1ZmIwNzdjZWRjYzAwZjE2MTBhZWRlZjljYzAyNSBsZWdhY3ktdHJ1bmsKKzI3MDAgZWE1MTQ2ODY2YmNmMTc5NzQ1NDI3ZWQzZmE5Yjk5YmI3MDBkZjZmNCBsZWdhY3ktdHJ1bmsKKzI3MDEgNDhlYWY0ZmM1M2NiMGQ4MDEzMjYyMWEzODYxNWM2MWFlYWYwZWVlMSBsZWdhY3ktdHJ1bmsKKzI3MDIgNWY1OTBhYjQ1Mjk1Nzc2YjNjODQ3ZWIyNzY0YmU0NzYxOWZkNjk0NSBsZWdhY3ktdHJ1bmsKKzI3MDMgYjU4NjE4OWNjMWY1ZTY5OWRiMzc3ZDQwYTUwYzRkMmQ3Njk0NDUxNCBsZWdhY3ktdHJ1bmsKKzI3MDQgZDVlMWM0OTlmMDEzN2RmMjQ5MTczMTdmMWViNjE4OGMwM2RhNzMxOCBsZWdhY3ktdHJ1bmsKKzI3MDUgZDBiYWE4MzAwMDA1NjI0MmVmMjI1ZDhiMTA0ZjE2YTYyNjIxMmFiNSBsZWdhY3ktdHJ1bmsKKzI3MDYgOWYwNmM2Njg5ZjBkMTBhNDM3MjVhNDViNTUwMzFjOTZhYmFhZWJjNCBsZWdhY3ktdHJ1bmsKKzI3MDcgOTM3Y2JjMGJlNmVjZWRiNWMwYjkyN2JhNTAzODRiMDBjOTVlNWE4NCBsZWdhY3ktdHJ1bmsKKzI3MDggZTE5OGNjOThhNGZkMGU3ZTJmMzM5YTQyZTc0N2VkMjAyZGM4NzFkNiBsZWdhY3ktdHJ1bmsKKzI3MDkgODMwNDY2NjQxNjBlOTkwOTJkMzMyNjVkODFiNmI4NjM4YmViZDRhMyBsZWdhY3ktdHJ1bmsKKzI3MTAgNGVmZmY2Y2VhOTBmNjk5ZDdmNjUxMGEyOTg4ZTBiNmIwNWVkZDYxOSBsZWdhY3ktdHJ1bmsKKzI3MTEgNzY2Y2VjNTBkNzY2ZDNmN2I1NWQ1MjZmYmQyODJlZmZlNmQ0ZTIyYiBsZWdhY3ktdHJ1bmsKKzI3MTIgNWE2MWY4MjdmNDdjM2EzOWI0YWVhYzUzOTAxNjM5MzFhYThkNGY4NiBsZWdhY3ktdHJ1bmsKKzI3MTMgYzE1OGM4MzQ3NjU0NjViNzM3MzVjMzc0ZWEyNGVhNDZiMzFiNDkyZiBsZWdhY3ktdHJ1bmsKKzI3MTQgMjY0MzA2YjYxYjgzZmVmY2YwMzRjZDQxMWVhNzM2ZGJhZDEwZTA2OSBsZWdhY3ktdHJ1bmsKKzI3MTUgMmUyODdhMTUwM2IyNTI2NDZmNGQ4MGNmOWI2YzczY2Q1ZDZlOTAyNCBsZWdhY3ktdHJ1bmsKKzI3MTYgMDc4MGI5NWE2NjBlYzgyMDk4ZjNhODU0ZTI2MmJhY2E4YWI1OTFlNiBsZWdhY3ktdHJ1bmsKKzI3MTcgYWRmYTA4MmY1MjBhNjE2NmY2ZDM1ZjczMDFjNTcwMTg4MTRhNzYwMiBsZWdhY3ktdHJ1bmsKKzI3MTggMWVmNjNhZGY0ZmM1YmE2ODU2NDc0MzEyZTMyZTBjMWMwZWFlNjJiYSBsZWdhY3ktdHJ1bmsKKzI3MTkgY2ZiNTMzMjJjOWQxMTQzMmRhNTJlM2ZmMTk2MTk2NWRiODRiZDQzYiBsZWdhY3ktdHJ1bmsKKzI3MjAgNjgzZWRiMGM0NDYzNDkyOTgzOWY2M2E1Y2RjMzg4N2IzNWI1OTA5YSBsZWdhY3ktdHJ1bmsKKzI3MjEgMDYxNGQ4ODdkMTBhYmQwMmJlMTRkODkxNTlkOWE0ZDNlMjk3OTZiZiBsZWdhY3ktdHJ1bmsKKzI3MjIgNDQzNDM5M2I0ZWRlNjU2Njg2NThiNDZhNmI1ZTVlMjM0ZjgxZjMyNCBsZWdhY3ktdHJ1bmsKKzI3MjMgMTcwNjhhNmEwYWE1MTdiNmQwM2FlZTc5NzU2NGFlOGE1NTUwYWVlMSBsZWdhY3ktdHJ1bmsKKzI3MjQgNzNlMjY2YmY3YWM2YjAzYjk3MmIzYjMwNmM2N2NjZmZhZTQwZjVmMyBsZWdhY3ktdHJ1bmsKKzI3MjUgZjljMDdlZTc5MzAyMmY2NWMyYmNiY2I1N2M3MjExZDMyYTYyMDhlNSBsZWdhY3ktdHJ1bmsKKzI3MjYgNWZhZjkzZWI5MjU2ZTMzNjM0M2NhMmQyZjY5YjI0ZTQyNThmZDRiMiBsZWdhY3ktdHJ1bmsKKzI3MjcgNWExZjlhZGUxNTEyNDMyMGEwMzQ5MjBiM2M1MTEwN2FhY2ExODE5ZCBsZWdhY3ktdHJ1bmsKKzI3MjggOGMxNzlkMDIzNTgzY2Q4NjFkNzExZmYzMTM2OTRmMWQxZjU3NjliNyBsZWdhY3ktdHJ1bmsKKzI3MjkgOTI1MDlkMzA0ZTQ3OWM2MGE3YWI0MzU1ZWRmOGVkZWE1YzdkOGFkYiBsZWdhY3ktdHJ1bmsKKzI3MzAgNmMzNmMyNzNkNTdkNGQ5ZTAyMjFiZGNkYmVkMjI4MzI1NDVlMGZkMCBsZWdhY3ktdHJ1bmsKKzI3MzEgMzRhNzYxMDQ2ZGJkNjlmNjlkZDM3NTFmNTlkMTgxZWIxMTAyNmExYyBsZWdhY3ktdHJ1bmsKKzI3MzIgYTVjMjQ1OTIzYjMxMGQ1NjhhMGFmZWZhMGU0ZjY2YzMxMTI5NTNmZSBsZWdhY3ktdHJ1bmsKKzI3MzMgMDg2YmRiYjY5NzNiZjM1YjVjNGVmOTgzZTBhYWUwOTRkOGM0NGJhNiBsZWdhY3ktdHJ1bmsKKzI3MzQgNGNiNTUzNTY3MDZmM2JmYjNlMTRlZTVmZjIyODI5NWE3NmRmZTU2MiBsZWdhY3ktdHJ1bmsKKzI3MzUgMDNiOWYxNTJhZGI2OTUzMjVjNTkzMTExYTExODMzNjc4M2M3ZjE4OSBsZWdhY3ktdHJ1bmsKKzI3MzYgZGVhZTgwZTA3YTgxYzk4ZTI1YjJjMTNmMmMyYWZiNjg1NjVlODE0ZiBsZWdhY3ktdHJ1bmsKKzI3MzcgM2I4ZjQxZjk2ZWI0Yzk1MzMzNjc0MTBhY2YzMmNkNDBmMDI2OWUxYSBsZWdhY3ktdHJ1bmsKKzI3MzggMmRhOTM0ZWYyN2MwMzgxM2FiZDFhZmUwODI5MWNkODdkMTRkYWY3YSBsZWdhY3ktdHJ1bmsKKzI3MzkgMTJlY2VhNmU5NTVjMTJiMTMzZjk0ZTM2ZjQwYTI0MjU4MzVhMDBjNCBsZWdhY3ktdHJ1bmsKKzI3NDAgNjg4NDM0NmMwNGEwNDhiMzBmM2M1MzM2NWJjYjdjNGQ4YWMxNzMyZiBsZWdhY3ktdHJ1bmsKKzI3NDEgMzE2OWQzOGY2Nzc0MmI5ODE2MDYyYzlhZDk0YjY5NTlkOGM4Y2VlYiBsZWdhY3ktdHJ1bmsKKzI3NDIgYmFlMTQ5NGYyZWM4MTAyMzBjYjU3NDUyYjA2MDM0OGNiZWY0MjFhNyBsZWdhY3ktdHJ1bmsKKzI3NDMgNWY3MWYxNjYwNzlkNDAxZGZjY2Y1YjRjYjUxMzc3NjI2NmI2ODJmYyBsZWdhY3ktdHJ1bmsKKzI3NDQgYzcyZjI2YWM0OTFiYThkODIyOGViOGY2ZjU3YjgxNmQzNWY3ZjE5ZSBsZWdhY3ktdHJ1bmsKKzI3NDUgMzdhYTY3ZjA4NjdjMTBmNDYzN2M3ZTAwZjQ0Y2ViMzRmMmFhYTRjYyBsZWdhY3ktdHJ1bmsKKzI3NDYgMzc5MDVmZTE4OTJhMjdkZDhiN2M0MzVmNDQ0NDQ3ZjQzYTAyYzQzNSBsZWdhY3ktdHJ1bmsKKzI3NDcgZGJmNDA4OTE4MjAxNjFlYjVlNDdkMDViZGU5YmZmNjM2YmQwOTQwZiBsZWdhY3ktdHJ1bmsKKzI3NDggZDE1NDdkNmJiNWI1Y2Y2MTFmOGY3NzMyNWUyOTQwYzIyMmNkYmRhMCBsZWdhY3ktdHJ1bmsKKzI3NDkgN2QyNGRlNjQzZmI1MGNhYWIzZDI0MDU5OTUyZWFjMmI3NjM2ZTFmNSBsZWdhY3ktdHJ1bmsKKzI3NTAgNjA3NzcwNGRhYjdhM2Y3OWI3MTY0ZTRkMTgxMmI2NTRjZGRhMzFhOCBsZWdhY3ktdHJ1bmsKKzI3NTEgZjExZmFlOGVlMWU0MjlkODM2YmYyNzk0NDM3YmFjMzIxYzUxMWUwYSBsZWdhY3ktdHJ1bmsKKzI3NTIgOTI3NmIzZWUzOTM2N2M2MWQyMWJkMTQyY2Q5N2JkZDJmZGJiNzNmOSBsZWdhY3ktdHJ1bmsKKzI3NTMgOTU3MmE3ZDA5ZGZmNDYyZWJlYWQ0OWMxMDQyMzFhM2E0ZWVjMzJkMiBsZWdhY3ktdHJ1bmsKKzI3NTQgMDg2ODE3NjM2NWQ3ZmFjMThkOWU2ZTQ0Nzc4YjM5NDhlNzA0NzVkMSBsZWdhY3ktdHJ1bmsKKzI3NTUgNDdjNDJlYTY3YThiZDg1MzE0NGQ5OWQwYmE4Y2U3NjFjNTYzZTY3MyBsZWdhY3ktdHJ1bmsKKzI3NTYgZjljZGVlYmZjYjY3MGMzMDY4ODU1ODc5ZjQ5NzA5ODI5ZDlkODQ3MiBsZWdhY3ktdHJ1bmsKKzI3NTcgZTE4ZjFmYTM5OGEzMGIzZTI1Y2FmZTNjNjg3OTA4MGUyYjFkN2Y1YSBsZWdhY3ktdHJ1bmsKKzI3NTggODAwY2Y0MDg2ZmIzM2Q4MGNiM2I2NzcxNDliZjE1YjZmMDMyMmU1OSBsZWdhY3ktdHJ1bmsKKzI3NTkgYjIwNGYzMWZiYzk3ZTYwZGQxNzQzN2IyNDgwZDllNjhlZTJhOTUxNyBsZWdhY3ktdHJ1bmsKKzI3NjAgYTM0NzkzM2E2ZDkyMmY2MDVmNTAyZThjZDJhZjI4ZWIzZmQ5NWRlMyBsZWdhY3ktdHJ1bmsKKzI3NjEgZDQ5YjZhNjcyNWJkODdmNTIxOWE3M2QxZjA3MTU1MzQxYzQ0ZTdhMyBsZWdhY3ktdHJ1bmsKKzI3NjIgOGNkZDYyYmI1MTVjYmFhMGMxNzhmNzYxOGE2MmM5NmFmNmRlYWI4MyBsZWdhY3ktdHJ1bmsKKzI3NjMgNWEzNTE5NTM5OGVmNTNmYmRkNTdkNmQ2YmM4ODQxZDhkMmU0NjAwOSBsZWdhY3ktdHJ1bmsKKzI3NjQgMzRkNjdkYTg4ZTg0Yjg0YjZkOGVkNzczNzIyMTIxOWRmYmIyZDRiMCBsZWdhY3ktdHJ1bmsKKzI3NjUgOGEyNGVmNDRkZmIwYThiNDJiNjUxNDU4ZjU1ZWQ3NTA3OTBmNjFkZCBsZWdhY3ktdHJ1bmsKKzI3NjYgNmIzNjA0MTU5Y2E5YjExOGM2NzEwMmU2NTI4NGFkNTE1NDY2NGVjOSBsZWdhY3ktdHJ1bmsKKzI3NjcgYzc2M2ZjNjRmY2FiYmUyNWNiNGYzMmIwNGNjNTdhZjA3YmQ3MGVhNCBsZWdhY3ktdHJ1bmsKKzI3NjggMDIxNGJiZjQ3YmY2ZGVlNDZlZDE1MzAwNzBlNDMxOTM4NjIzMmFlYyBsZWdhY3ktdHJ1bmsKKzI3NjkgOTI3NmMyNjI1ZDY0Y2JmZDI0MmEzYmY0NWMxYmVlZmMyMzBiZmYxNiBsZWdhY3ktdHJ1bmsKKzI3NzAgMGFkNWIzNWUzYWQ4OWY4NjM1NzYwNDY5NmZiYWZhYTNhNzM1ZTQyYSBsZWdhY3ktdHJ1bmsKKzI3NzEgZGNjNmRlMWMzN2E0ZjUzNTI2ZTA2MjU0NDI4NTc2YTdiOThmNGUyOCBsZWdhY3ktdHJ1bmsKKzI3NzIgZTI1ZTI2NTZjODUzN2IxMTVmMzgyNjE0MTY4OTZlNDRhNmZlNjI3NSBsZWdhY3ktdHJ1bmsKKzI3NzMgZjgyNThmODQxMDQ2ZThkNjQ5MjAyNWMzNGJmYTUyNzkzMzlmMmY2MyBsZWdhY3ktdHJ1bmsKKzI3NzQgNDA1YTJmZWM3NDU0MWRlNzAzM2M0YzMxZGI0NjM4NDdmOWUwYjczZCBsZWdhY3ktdHJ1bmsKKzI3NzUgMTFlODYyNzBlZDBkY2ZlN2I0N2NhM2U5YTRiMzg0MzlhMGJmMzRhNSBsZWdhY3ktdHJ1bmsKKzI3NzYgNDBhMGVjOTk0YzU0OWVjYzg5M2IzYjcyZTgxNTEyNDViMmIwM2MwNiBsZWdhY3ktdHJ1bmsKKzI3NzcgOGQ1NzI1NDk0ZWRlNzMxNjBiMDc1ZjI1MDBmZDQ3YTMxN2EyYzI5OCBsZWdhY3ktdHJ1bmsKKzI3NzggNzU1YmI4ZWZjYzJkNTMzNDljOGUwOWZhYzM3MDBlMTdiN2I1ZjExYSBsZWdhY3ktdHJ1bmsKKzI3NzkgMTg5ZWUzYmVlYmI1ZTZmNmE1MWM0NmFhYzc5NDFmMDg3YWYzZDM3OSBsZWdhY3ktdHJ1bmsKKzI3ODAgYWM3ZDY0NDUzYWE5ZjE1ZWE5ODg4OGE1MWI4Y2UzNWMxZGY3ZWZlNCBsZWdhY3ktdHJ1bmsKKzI3ODEgZDFmNmVjNzg4YWNmN2I1ZmM0NzE1YTAwNzZhYTNiMzliNjgxNzNmOSBsZWdhY3ktdHJ1bmsKKzI3ODIgY2RlYzNlODgwNTNiM2RmNTVmNzc1MTI5ODQyNzVkMzI2YWNiMjYyYiBsZWdhY3ktdHJ1bmsKKzI3ODMgYTBkNGM1ZWYxZDVkNzg5NWZkYzViZGY3NDY0ZWQ0MzNkMjQwZWYxZCBsZWdhY3ktdHJ1bmsKKzI3ODQgOWJlNjU4ZDE5M2E5ODlmOTIzMTMwMjVjY2NlYjdkMzU2YzNmOWQ1ZSBsZWdhY3ktdHJ1bmsKKzI3ODUgMGU0MzYyMDBiZjEyODg0Y2UxZGQ1NWI0ODQ0NTU0NTViMTBjMWRmMyBsZWdhY3ktdHJ1bmsKKzI3ODYgN2ZiNWRlZmM4ZjZmYWFhNTk1ZWMxYjdiODRkNmE5MzUxZTFiNWE2NyBsZWdhY3ktdHJ1bmsKKzI3ODcgMjEyYWQxNThhODA2MmUyZjUzOGRhM2QwMjU0YjgxMTQwN2U3MGNmZiBsZWdhY3ktdHJ1bmsKKzI3ODggMWQ2NWYyOGMwYWE5N2NiODUzOTk1Njc4MDY3MzA0N2VlODAzODA1NCBsZWdhY3ktdHJ1bmsKKzI3ODkgZDQyMGFmOWMxYjc1N2EyZjgyNjA1MmFiZjE0ZWQ1NmJiNDY2ZTczZCBsZWdhY3ktdHJ1bmsKKzI3OTAgNDJhNmI4ZTEzOTFhMDc4NWJlYmFiNjRmMmY4MWNjZDBjMDhhMTUxMCBsZWdhY3ktdHJ1bmsKKzI3OTEgMDRlZDQ3NjViMTdjZTUzMGRmMTRkZDk0ZWM5NDVkNmRlZWQwMzM0MyBsZWdhY3ktdHJ1bmsKKzI3OTIgZjVhMmJjMzllMTBlMmE0ZDRkODg3MzczYjFkZTk3NDhhNTdhNGRkZSBsZWdhY3ktdHJ1bmsKKzI3OTMgMGMxOTM4ZjJlMGMwMmY4NGI1YWQ2MmExY2Q1NTM5NTM0YjkwY2QxMiBsZWdhY3ktdHJ1bmsKKzI3OTQgMWY2YzU5M2VkYTY4N2IyOWQ1MjAzMWQ3ZmUxNzM5NjEyNWY3NDEwYiBsZWdhY3ktdHJ1bmsKKzI3OTUgODg1OTk2YTFhNjMxODgwZWY2MjhiYWNhZGNkZTBiYjlmODNlMTkwNCBsZWdhY3ktdHJ1bmsKKzI3OTYgNzg0YTA5YTUyMzc1YzRlNTUyZThlM2Y4M2VkYzk3M2RjNzY1OTJmZiBsZWdhY3ktdHJ1bmsKKzI3OTcgZDViYjhmZTQzZGYyZjNiZmIzM2U3OThkY2JmODk1ODhkY2I0MjljZiBsZWdhY3ktdHJ1bmsKKzI3OTggM2NiNjg2YzQ4Y2RkZGY4MWJlNDM0MmJiZGZhY2U3MTRlZmQ2OGY4NCBsZWdhY3ktdHJ1bmsKKzI3OTkgOWQwMWU5OGVkODQ5M2UwNzY2YjVlNWZmMTI1OTgwNGY3MTg5YmQ1NCBsZWdhY3ktdHJ1bmsKKzI4MDAgMmY5NWEwMWQ2YzFmM2M2NDU2ZGZkMmFkNDc4NzNmYzYwNGY4YTZhYyBsZWdhY3ktdHJ1bmsKKzI4MDEgMGIzODAwMGZjODIzZGY3ODBmN2RkODZkM2NmNjEyMjI4Mjk5N2ZkYiBsZWdhY3ktdHJ1bmsKKzI4MDIgYjE2MmIyNzQwMGJjNTAyZGQwZWNjNzQzZGFhMGZlNTM4Njg0OWZlNiBsZWdhY3ktdHJ1bmsKKzI4MDMgMGVmYjhkZGY2YzBlZDc4YmNhMDNmMzU2NWFjMmIxZDQyOGU2NTJjYyBsZWdhY3ktdHJ1bmsKKzI4MDQgMDJkM2YxNjFiN2Y1NTcwMmFkZmE0OTVhMDAxY2QxYTczYmY1NmIxZCBsZWdhY3ktdHJ1bmsKKzI4MDUgNTlmOTMyNWJiOGVjYzNlNWRiNDBiMGQ2NTAzY2M3OTE3NDYzOGEwYiBsZWdhY3ktdHJ1bmsKKzI4MDYgYzBlN2IwYjliNzUwN2Q0MzJmMWUwNWY1YWQxZTdhODc1YTJlNGQ1ZCBsZWdhY3ktdHJ1bmsKKzI4MDcgYzgzMmEyYjBkNDMzMGJkODMxNTIxZmZkZmFjYWE4M2Y4Nzk0ZTM0YiBsZWdhY3ktdHJ1bmsKKzI4MDggOGJiYTE0ZjdkYjhhMWRjZmU5NzMwOGIyY2M1MDMwNDMzMGVmODljZiBsZWdhY3ktdHJ1bmsKKzI4MDkgZjZjYzdhYTMxZGU2OWU5YTdjNjIxYWJhZWE3ZWMwNWVmMDZjYTYxNSBsZWdhY3ktdHJ1bmsKKzI4MTAgZGE1YjE0MzM0NjdjMWNhNWY1OTRlZDI3OWNmOTJkNjEyNTk0NWNlNCBsZWdhY3ktdHJ1bmsKKzI4MTEgNDg5ZmVjYzFkYTI4NmFhYzJmNzgzYWIzMzU0YTU4Njg2ZmY2NjYyYyBsZWdhY3ktdHJ1bmsKKzI4MTIgNzNmZTdhMWE1ZGQ0MmUzNjYyNGIxMTM1Zjc2YjgyYjhlMGIwNzllYiBsZWdhY3ktdHJ1bmsKKzI4MTMgMDQ1N2M0NDFiMDg2MDc3OWE3MTllMDVlYTUyOTU2OGE3NDI5ZmRiOCBsZWdhY3ktdHJ1bmsKKzI4MTQgNzQ5NDJlYzcwNDMwYWU4ZmI1NGZkNGZhMWFlNzI5NTQwYzgzMGEyMSBsZWdhY3ktdHJ1bmsKKzI4MTUgMmUwZDY4ODIwMTNlZmZkZTY0MjJkZGFlZTAyZDc0OWU4ZWUzZDhhZSBsZWdhY3ktdHJ1bmsKKzI4MTYgZTcyOTNiNWI1NzBkOWQ2MTkxYjEwYWU0ODBlZjlhNDI3NTRmZWFjNSBsZWdhY3ktdHJ1bmsKKzI4MTcgZjZmOTgyY2I1NDAxMzIyYjRjNjg2ODFjY2EwNWNkNThhNGM5ODk1MSBsZWdhY3ktdHJ1bmsKKzI4MTggM2U2MjZjNDEzYmJmNDg4ZmMyODhmZmFjMTZmMDkxZWVhOWU3NGI5OCBsZWdhY3ktdHJ1bmsKKzI4MTkgNWI1MjFmZTRkMWY2NDk2YjBkMzJmMGMxZTAzODkzN2Y3NGJkNWQ0NiBsZWdhY3ktdHJ1bmsKKzI4MjAgNmQxNTk5YmUyYjU0ZTBlNDAwNjJhZWIwOGNlMzFlZjczYTY1NGEwZSBsZWdhY3ktdHJ1bmsKKzI4MjEgZDM3NzBiMWRhNjExNTI5NTdiNGVjMjY2YzEzZDI4ZDYzMzFiMzZlOCBsZWdhY3ktdHJ1bmsKKzI4MjIgN2U1ZjRkOWFlZTc3YmM2ZGJhZmFmYjlhOTkzYmEyYzE4YzI0MzRiZiBsZWdhY3ktdHJ1bmsKKzI4MjMgYWFmZjY1MGQ3ZTEzNjYwYWIxZmQ2YmQzNGIzY2MwMjhlN2QzNDhiNSBsZWdhY3ktdHJ1bmsKKzI4MjQgNWVkNmFkYmI5NWYzNTkwMzJkZGFkNjNmNTE4ZGIzOGQ2ZDYyMjQ3MiBsZWdhY3ktdHJ1bmsKKzI4MjUgZTNiNjNhOTkxNGY4NzAyOWMzNDYzOWNkOGQyYWFiYmNjOTI2NTM1OSBsZWdhY3ktdHJ1bmsKKzI4MjYgMTg5MDc4MTM2MzUxNTcxYWZhMmQ0ODZmZDlkMjhiZTRkMjEwM2Y3MyBsZWdhY3ktdHJ1bmsKKzI4MjcgMjgzOTAzNzVhMmI5YWU2NjUwMTdmMjBmODY0NmFhZWU2YjNlYWU4MyBsZWdhY3ktdHJ1bmsKKzI4MjggMTY0YjU2ZmE2NTU4ZWFhYTJmMjE2ZWUzYzQyNGE3OWVkMTllMmVhYSBsZWdhY3ktdHJ1bmsKKzI4MjkgMTA0OTg2N2RjYTFmOTQ4M2NhNzU4ODk1ZWY0OTM4YWFlODI3YjBkNCBsZWdhY3ktdHJ1bmsKKzI4MzAgYzJiYTg4N2Q5NDkyYjFiM2M0NWEyZTM4Njk3NjkzMmM3OGIyOGQyNiBsZWdhY3ktdHJ1bmsKKzI4MzEgMmNkZGJiZWE5YmZiMzIzYzU3MjQ4ZGRhMmQ1YWNiMTk3ZjRhMmY3MiBsZWdhY3ktdHJ1bmsKKzI4MzIgMTAwMDJlMWJjNTI2NDJkODhlMzBmZDFlNDQyNDUwZmQwMjcyOGVhYyBsZWdhY3ktdHJ1bmsKKzI4MzMgZmZkZGU3ZmM3MWMxZWNiODJkNGU0YmU2MTU1MTc2ZDdkYzkwOTc1OSBsZWdhY3ktdHJ1bmsKKzI4MzQgNzFkNDk2MjU5YWQzNDhlNmRlMWMzNzNiZjQ1ODA5ZmMwNWUxMDMxNCBsZWdhY3ktdHJ1bmsKKzI4MzUgNGUyZDIzOWRjNjRjOGYxMmFlZTlmMjg4ZTFjN2YxZTNhNGJlNmVlZCBsZWdhY3ktdHJ1bmsKKzI4MzYgNWFmZjlmOGZkMjk5NWVmYjJjMGU1ZjFiNTM3NTJlODdkYWY2MjZjNiBsZWdhY3ktdHJ1bmsKKzI4MzcgZTM0ZWJjYmJkY2E2ZmZhNGI5YjA4NDFjMjU2NjI0NGVkZWE0MGFjZiBsZWdhY3ktdHJ1bmsKKzI4MzggNjQ0MWFhNmE0MTI2NDk4NGZhN2RiMTQ0ZjcwNDljNGZiMTc0M2M1YiBsZWdhY3ktdHJ1bmsKKzI4MzkgMjA1Yjk0N2IxZDNjMjZjNzYwNDc1NmM4MDkxMzdiNTExNTBlMjI2MiBsZWdhY3ktdHJ1bmsKKzI4NDAgNmE2MDM0MmMzMTA3NDgzNmE0NWRjY2M4MjQxY2U3NTk5NTA1MDQyZSBsZWdhY3ktdHJ1bmsKKzI4NDEgMTAyZGUzMTk5OThlMTdlMGQxZWE5MWVmZTU3OTQwZjE1MTJjYmU0MyBsZWdhY3ktdHJ1bmsKKzI4NDIgMTM4NmE3MmFlNjA0N2Q5NzYwNTIxZjAyZGI5NDc5NzI1YTI3M2M2NyBsZWdhY3ktdHJ1bmsKKzI4NDMgNzU0NGViYWM1Njk4NzgxNmRiZTYxYjZjNGU1MjdiYjUzNDBjNTM4NiBsZWdhY3ktdHJ1bmsKKzI4NDQgM2IwOWI0MGNlZjFkMDlmYWMxNjVmNTU1NWJkNWM4ZGQ1NWRhNjVlOSBsZWdhY3ktdHJ1bmsKKzI4NDUgOTEyNmY0Y2IxY2NhNDcwNWM3Y2RlMmVmNTQ0ZDJiNjVjYTcxNGJmMCBsZWdhY3ktdHJ1bmsKKzI4NDYgY2EyOGEzYTgyYmJhODQ4MWUyNDg3OGU3MTQxM2JhMzdlMGE0NTQ3ZiBsZWdhY3ktdHJ1bmsKKzI4NDcgZDI0NGVlMDNjNTc2ZTcyNGZhNWU3ZDA0OWFjM2EyNTNhNTRjNDRhYiBsZWdhY3ktdHJ1bmsKKzI4NDggZTE1YmVhOTcxYTViZDUzNzllOGJiNTMzMDYwYjFmNTg2NWVhM2I5YSBsZWdhY3ktdHJ1bmsKKzI4NDkgNWI3MTg2M2M4MDFkMjk2ZjUyMzIyNDc1YzE2NjRlOGNhYzM2YzQyMiBsZWdhY3ktdHJ1bmsKKzI4NTAgOTBlYTUwNzg2MDk1MGEzM2RkODZiYjI2MzJjODUzMzM1YjEyMTExMCBsZWdhY3ktdHJ1bmsKKzI4NTEgODkxZjk4MzU3YzA0MzU1YWQyYjJkNGU5ZmRjMzYxMjQ5ZjMyZmY1MSBsZWdhY3ktdHJ1bmsKKzI4NTIgZDZmYTY0Y2VjNDEwZTYwYzBhODY2MjczNjA0MGNhMDk2MGMwZTY3ZCBsZWdhY3ktdHJ1bmsKKzI4NTMgMmRiZDdlODQ0YmQwODI3YTRkYjIwMjhiMTA4OWEyZjlkYzRhYmY3ZCBsZWdhY3ktdHJ1bmsKKzI4NTQgYjQ5YmFhZDliNjQwNmM3Nzc0OWQ0MTc4OTY0ZWRhYjk0MDU1YTU1MCBsZWdhY3ktdHJ1bmsKKzI4NTUgNWMxOGQ2YzU3ODI3NDJmMjlmYjE3YTRhYzdmNjUzNjY4ZmQwMjk4YiBsZWdhY3ktdHJ1bmsKKzI4NTYgODdhYjljODFlOTI3ZWRkNjZkOGI4YzkyZWExYWNjOGM0MmMyMTc0NCBsZWdhY3ktdHJ1bmsKKzI4NTcgZjM3ZjhiYzkxOTBjNTZhMGY1YzQyMTliYTU0YTRjODU3MTAyMThlZCBsZWdhY3ktdHJ1bmsKKzI4NTggN2MwNmJmMTVmZDJhYmRlMTA5NDExZDhjYTMxODNhNWVjOTJjOTMyYiBsZWdhY3ktdHJ1bmsKKzI4NTkgOGE2MDY0OWU3OTg3ZTUxYTc1NjhmMWQ5ZjIyNDU2MGQ3ZjBkYjg5NiBsZWdhY3ktdHJ1bmsKKzI4NjAgODJjMTI1OWE0ZWYzMzAyYTA3MzEyMzZiYjlmMTUyYTExOTE3Y2RjYSBsZWdhY3ktdHJ1bmsKKzI4NjEgMTQxMTliMTk0OGZiNDEzYjVkNjI4NzMzZDVjZDRiMDQ4MDdjYWMxMCBsZWdhY3ktdHJ1bmsKKzI4NjIgMDljZTA0ZWY3MjNiZTcxZGU1ZWZiMTg0ZmIwMzg2ZDVlODkxNmI5MCBsZWdhY3ktdHJ1bmsKKzI4NjMgZjUzZGNiOWEwNGQ2MzgyNTE3ZmEwMzQ0ZWNiMzk2MzRlMDhhNzUwZCBsZWdhY3ktdHJ1bmsKKzI4NjQgOGZmYWUwYjQ2ZmQ0OTI3YjhmMTY5ZDZhNzdmNWNkNmIwMWI2MWNhMyBsZWdhY3ktdHJ1bmsKKzI4NjUgYTgwMjJiMmE3N2U2MDk2YTFiNTg1YWUxZGY0YTQyNjNlY2FhYzI2ZCBsZWdhY3ktdHJ1bmsKKzI4NjYgMWU4ZTNhYjY3YjQ1ODVlNDg1ZTIzZmFkNWUzNmJhMjBmYWUwY2FiMSBsZWdhY3ktdHJ1bmsKKzI4NjcgNzU4MmVkMTM2ODRlNDk3ODA2NzNiM2MwYzExNDIzMzQ3YjdiMTIyMyBsZWdhY3ktdHJ1bmsKKzI4NjggYmZkZDZlNjI2ZGQzNzBhZTQyZjJlYzk3YzJhZjM4YjkxYTdmNmFiYyBsZWdhY3ktdHJ1bmsKKzI4NjkgOGJjYjUwZjQzNmZhZGVlNjg4MWEyYmU1ZTQyYTJlZTY0MGNjNWZmMiBsZWdhY3ktdHJ1bmsKKzI4NzAgNzIzNmUwMmM0NTYzMTI2NzRlZmE3Yzc2YWMwOWY3N2NiMDc0OWM3NCBsZWdhY3ktdHJ1bmsKKzI4NzEgYmM1Yzc3ZmE4MDA2ODdjZmU3NDBmZmM5MTQ3MTBiNjQ1OWZkZjMwYiBsZWdhY3ktdHJ1bmsKKzI4NzIgM2Q5YzIzMTBhZmU4NWJjNzUwYWU1NmFkNDViMmU1ZWMxYTVjYzVkYSBsZWdhY3ktdHJ1bmsKKzI4NzMgMDBjZGI4ZGVkZDZmMmE1NDYwMDVlZGVjZWZmOGY1MmZlODZjMjEwNSBsZWdhY3ktdHJ1bmsKKzI4NzQgODYyNDU3ZTAyMzdjYTU4ZjU4ODM1NzFkYjc1MTZkMzQwZTA5MTkwZiBsZWdhY3ktdHJ1bmsKKzI4NzUgMjQwM2ZiNmVhZWM2MjFjMzU4ZTJhNWNlNTUwMjRmYjQ3Njc2MzA5NCBsZWdhY3ktdHJ1bmsKKzI4NzYgOTNlMjE1ZGMxZDZlZjFlMmM3ZTIxNmJhMmUwN2RiNjMxYzg5NjUyNiBsZWdhY3ktdHJ1bmsKKzI4NzcgNGQ2NGFiYmRmNzBhOTY5MTI2MTZlM2E0YjczNGE4NmEyZTcwNzA5OCBsZWdhY3ktdHJ1bmsKKzI4NzggOWU5MTQ1YWJjNDJhYzQ1NGU1ODhlNzRiMDM2OGI4NjA5ZTE2NzczNiBsZWdhY3ktdHJ1bmsKKzI4NzkgNGQyYTE5OWUxMjAyYTZiNzM3ODhlMDlhNWFjZDFiMWViZTA2NTU4NiBsZWdhY3ktdHJ1bmsKKzI4ODAgY2NlMDVhNDc2ZTA0MTJlZTBjMzIyOGY1NmFhYTY0ZDQwNTliZTNhOSBsZWdhY3ktdHJ1bmsKKzI4ODEgZjcyNzhhMDY3ZmI0MzAzNjViMDEyMzIxN2UyYjU2ZGI2YmYzNWVkMSBsZWdhY3ktdHJ1bmsKKzI4ODIgZDhiMTdmYWIzYTk4M2YxMjdlNzY3YjkwMTZkMDhjOGRlNGZhMjgwMCBsZWdhY3ktdHJ1bmsKKzI4ODMgNTdlOTRlYmEyNDg0OGNiODA1N2MxMGVjN2I1ZjdlYWRjOWMyMzk5NCBsZWdhY3ktdHJ1bmsKKzI4ODQgZTc1NzFhMThiZGVmMWQwMjE0NTVlZDFkMmRkYzk0OWFjYTUyM2FmNSBsZWdhY3ktdHJ1bmsKKzI4ODUgNDc2YmI3ZTViODU0NzU2OWIxOGU3ZDFiMDA4ZDA5ODhiMzJmZDU1ZiBsZWdhY3ktdHJ1bmsKKzI4ODYgNzZlNDg3MDEyMDRiZjIzN2M5OTE5NTlhNzZmNGUyNTY4NjBiMWVjZCBsZWdhY3ktdHJ1bmsKKzI4ODcgZThjNmZhOTExOGViZTllZmY2Yjk4NjY4NjMxNDU5NTliOGFhOWRhMyBsZWdhY3ktdHJ1bmsKKzI4ODggOWE3NTQ0ODZlZjBiNTEyMWIyNmEyNTg0NGRmZjQ3M2NmNzAwMDQ5YyBsZWdhY3ktdHJ1bmsKKzI4ODkgNzZkOTJlYmI0ZDgyYTc1YzUwNjNkZGY1OGM2MDBhNTIxZDBmY2RmOSBsZWdhY3ktdHJ1bmsKKzI4OTAgODJkZDA4MWYzODBkNTRhNzQ5NDhlYjE4YzkwYzE1YmUyMDU0ZGQ0MiBsZWdhY3ktdHJ1bmsKKzI4OTEgYzgxOTUyZDk3ZWJlOGFkODc2NzJjZWNiYjM5NTlkZGNhN2ZhZTZhOCBsZWdhY3ktdHJ1bmsKKzI4OTIgYzY1ZmMxNzJmMTZkYmJhNmZkZWE5Y2Q5YjFiYjhkZGMzYzVmZTVjMyBsZWdhY3ktdHJ1bmsKKzI4OTMgMDMzOGM3YzlmMDhjOTlhYmVlOWM4YmIyNzRkYjM5MmYyYjhlMjFiYSBsZWdhY3ktdHJ1bmsKKzI4OTQgZjE3OWQ4ZDVlZThjODUzZGNjZjk2YzlkMDYxMDk0NzI2NTM3MzBiYyBsZWdhY3ktdHJ1bmsKKzI4OTUgY2Y1Y2FiZmIzZjcxZjZiNzc5YjE0Y2E4NzY4NmZjZDBjOTA3YWJjYyBsZWdhY3ktdHJ1bmsKKzI4OTYgMWUyMDVkMDg3NWY2MmRmNTkyYTUzMzlkMjIyZGEwMTE5OTRjOTI4ZiBsZWdhY3ktdHJ1bmsKKzI4OTcgZWEwYmFkOWZkZjY3MzRlOTA5NDNjOTUyNDYyMTU3ZjlhNzEzMjRmZiBsZWdhY3ktdHJ1bmsKKzI4OTggODI0NjU3NmVmM2Y1MzU5Njk1NzgxMjQ4MjJiMjc5NTUyOGY1NThhNCBsZWdhY3ktdHJ1bmsKKzI4OTkgNTVjNjBlN2YzMWVkYTI3M2JkNjIwN2JmNWEyYTIzMTAzOWY5OThkZSB1bmxhYmVsZWQtMS41LjQKKzI5MDAgMDc4ZjkwMTVmMTc4OTI4YzZkMjIzNDkxMmI5OWVjMDE2ODNiMDU0OSBsZWdhY3ktdHJ1bmsKKzI5MDEgYWIxYjM0ODZiMjI2MzhmNTRhZjZjOWIwYWYyNjY0MDdjNzkxNWZkMCBsZWdhY3ktdHJ1bmsKKzI5MDIgZDc3ODI0NTQzYmNlOTZhOWYwMDY0OTJiZDdlODhjOGY1MjNmNDBlMCBsZWdhY3ktdHJ1bmsKKzI5MDMgZGM2MDk1M2Y2MDUyOTkwN2I4MGYwZmM4ZDlhZGMwZjMzNjYyMGE3ZSBsZWdhY3ktdHJ1bmsKKzI5MDQgZjcxMDExMGNmZDM5MmE1NmJhM2JlOWFmZDkyYWNiMTk2MWYzMmIyMiBsZWdhY3ktdHJ1bmsKKzI5MDUgZGJjYjQ5ZDc0MmEwY2ZmMmFjMzM4MTBiOTQ3N2VjN2MxMmIzNTQ0MyBsZWdhY3ktdHJ1bmsKKzI5MDYgODM0ZGQ0YTc3ZWUyMGY5OTk4YjU2ZmUyMWQ4YTlkODk2MmZjODYwMSBsZWdhY3ktdHJ1bmsKKzI5MDcgYzdiMjNjYzhjZGVkYWZmNDg3MGRkZjUzZjM4YmJhOGU0N2Q1OWIzOCBsZWdhY3ktdHJ1bmsKKzI5MDggNmMwZjE2MDA4YmQ5ZDQwZmNhYzhiNTE4OWUxZWY4MTU4ZTE5OTIxOCBsZWdhY3ktdHJ1bmsKKzI5MDkgNDVjODE4OTM5NGZmMGUzZTlkOTYyMDMzMmE4Y2ExODMyNTQyNjBlNiBsZWdhY3ktdHJ1bmsKKzI5MTAgNzBjMmY0MDQzMGM3Njk1ZWY5MmQ4Y2MzMTVmMzMzYjljYmMxOTM0ZSBsZWdhY3ktdHJ1bmsKKzI5MTEgMzIwODVlZGQ3N2E3ZDg5NGYyODM1NzBhYmUzNTJlMTAwMTFhMmU3ZSBsZWdhY3ktdHJ1bmsKKzI5MTIgZmYzZGI5NTVlNjI4ZjM0MTY0NzVmNzZkNDJhZDliZTQ1MDhlZmQ3YiB1bmxhYmVsZWQtMS41LjIKKzI5MTMgYTVlNjg4MWNlYmYwOWM4MTZiODA1OTYzMGI3OGVjNTUxMTEzOTJlNyBsZWdhY3ktdHJ1bmsKKzI5MTQgMGQ0OTRiYzI0MjA3Zjc3YTU2ZWY3NDVjYTg0ODYxYmU5MTdhNjMyZiBsZWdhY3ktdHJ1bmsKKzI5MTUgOGJkMjE5NGFkNmY5YTliNTNlODgyNDA5YTBmY2FiOTg2YzU2Mjk4NyBsZWdhY3ktdHJ1bmsKKzI5MTYgOGY3YjMxYThhNjc4NWM4NDY2NzA5ZjVkM2YzM2ZhOGNhZGI1NjBjNSBsZWdhY3ktdHJ1bmsKKzI5MTcgNmZiYjAzZGM0MzllZTI2OWIyNDdhZGRmYmUzYWEwZTU0ODNmMDZhZiBsZWdhY3ktdHJ1bmsKKzI5MTggMmRkNWRiZjI4YTJkZDU1ZDRhZTcyY2E1YzE4NGEyYTExM2QzNjRkMiBsZWdhY3ktdHJ1bmsKKzI5MTkgNWQyZjYyYWQ4ZGVlYzEyMjNkZmFiZDBjNTRlNTVhY2M2ZmJmMDBiZCBsZWdhY3ktdHJ1bmsKKzI5MjAgOWRlM2QwMmFhNzVkMTlhYjkyODg3OTI0OTBiZTQ1NmRjNzRmYzJjNCBsZWdhY3ktdHJ1bmsKKzI5MjEgYmZjNjU1MDc0NTIzZDBhYmY0MDgyOTk1YzcxNTQyN2ZhM2EyMTJkYyBsZWdhY3ktdHJ1bmsKKzI5MjIgNDFkZDM5MzQ4N2Y1OTFhNDRjYWFlZDNjY2Q2OWNmYTc2NGNhMWUzZSBsZWdhY3ktdHJ1bmsKKzI5MjMgOWI2NzFmMzk3YThmMjcwMzcwOThjYTM2NjE0OGU0ZDQyZGRkMGI4MCBsZWdhY3ktdHJ1bmsKKzI5MjQgMWRmYjBjOWQwNTc2N2QwY2RiODAzN2E2YTdjMTVhMzg2NTkyMzZhZCBsZWdhY3ktdHJ1bmsKKzI5MjUgNTdjM2U5Y2ZlZTQwZmY4NTk5ZDAxZDUxZWY2M2JjODAxMThlN2NiYiBsZWdhY3ktdHJ1bmsKKzI5MjYgMDdkNWQ2MmE0YTJiMjAxNjYwZTMwMGJkM2M2YzZkNTU1OTQ4NDhjOSBsZWdhY3ktdHJ1bmsKKzI5MjcgN2Q4NGUwZGRmM2JlMmRjODY0NDQ0YTg2MWQ2NTdlODYwOWY4Y2U4MCBsZWdhY3ktdHJ1bmsKKzI5MjggMzg5MGY0NmQ2ZTNiNzExNDlhNjA3ZTZlMzc5YjkzZDQ2NTM0MzUwNyBsZWdhY3ktdHJ1bmsKKzI5MjkgMDUzNzZjOTI2ZjU4MGQ5OWIxZDg5ZDc3NzFjZWFlNzEzZDA4MDRkMyBsZWdhY3ktdHJ1bmsKKzI5MzAgN2EwZDAzZThiZDI5YmFlNmQ5ODRjMzYxY2MxNWQwNGU2N2QwYzNmNiBsZWdhY3ktdHJ1bmsKKzI5MzEgNjc2MDMxYmY0NGVlMWFkNTM5YTVkMWVjZDA2M2JlMmRlZTFiOGJiYSBsZWdhY3ktdHJ1bmsKKzI5MzIgZjg0MjFkYTRlZmE3NmI3ZDVkNTlkODdiMmI0OTAxNDZiNzIzODExNyBsZWdhY3ktdHJ1bmsKKzI5MzMgNzQ0Njk2YmE4OTI3YWU3YmNhZjg1ZTY1Y2U3YjkyNWI0MDM1YjExZCBsZWdhY3ktdHJ1bmsKKzI5MzQgMmU4MmRkMGY4YTllMzdkYWM3MGFjMDY2MGIwYmU0NWE4Yjk4NjQzNiBsZWdhY3ktdHJ1bmsKKzI5MzUgZDk0NWNmMzNhNjRmNDY4YWE3YmViZDJmZGM5NWY1OWJlYzU0NWE0ZSBsZWdhY3ktdHJ1bmsKKzI5MzYgYzcyMWFmYWIwZWZhNjFlNWE4ZTIyMzM2ZGQ3NGUwYjg3YmYxNzM4OCBsZWdhY3ktdHJ1bmsKKzI5MzcgN2M4YWJjZTE5Nzk4NGE5YTYyMjVhOTcyODYyOWM4ZDU2MDEwOTRmNiBsZWdhY3ktdHJ1bmsKKzI5MzggNDViM2E3OGYyNTZiYWU2YjQ5OGY3YzFkNjI5NzRkYTIxMjI1YmY3MSBsZWdhY3ktdHJ1bmsKKzI5MzkgNzI1OWU5NmEwNGE5ZDQ1MTQwZjBkNjZjNjJjZTc2YzA5ZDIyNWEwNyBsZWdhY3ktdHJ1bmsKKzI5NDAgYzBkNGNhYTcxYmRhYjEyZmIwYTMzM2FmMTQwYzE1ZGY5ZTVmODcwZSBsZWdhY3ktdHJ1bmsKKzI5NDEgNjE2MzAyMGE5NjdkYmMzZjdiOTVhMmQ5OGVlMjY1NWYxNTg1NmVkOSBsZWdhY3ktdHJ1bmsKKzI5NDIgYjM3YWM5MWUyYTBkYTRiODA4YmYyYjU0MThjMjc0MDczNGFiZDIxZCBsZWdhY3ktdHJ1bmsKKzI5NDMgMzBhNjUyMTAxNTk5ZmYxZTc4NmE5MGIxYjEwMTY1ZmE1NGQ5M2E4YSBsZWdhY3ktdHJ1bmsKKzI5NDQgNjg1ODQzMTRhMTU0N2ZkZThhNjcwYjYwZGFkYWIwYzBjMWFkYmMxMiBsZWdhY3ktdHJ1bmsKKzI5NDUgMDEyZTM3ZjA1MDE5MGYxOTExNjVmNWE5ODliYTYxMjYyNzAwYTMxYSBsZWdhY3ktdHJ1bmsKKzI5NDYgM2UxZmJlODRjZjlmYzZhMjYzMGFhMmEwN2QxOTNkZWY0MTIwNGEzYiBsZWdhY3ktdHJ1bmsKKzI5NDcgZmJkNjhlNjkyMTRjMjdlMDU5NTM4MTNmYTAxODQ1NGY4ZmZjZjgxMyBsZWdhY3ktdHJ1bmsKKzI5NDggY2Q4MWU1NjgwNGIwOTQyYjFhOWQ0NTA2MGMzZjdjMTFlMWIxMWFlZSBsZWdhY3ktdHJ1bmsKKzI5NDkgNjNkMzRlODc3YTY5NzA4ZjNkZWJkZTFlNDY0NTI2ODkzZDk4YWIwOSBsZWdhY3ktdHJ1bmsKKzI5NTAgNDQzMTlkZjZhOTFjMjk2NzcyM2ZlZTUwNjAwMjEyNDE1ZjdhODVhZiBsZWdhY3ktdHJ1bmsKKzI5NTEgYmE0ZWMxM2MwZjlmOTgyZWY5YjVlNTQyZDM1YTYzYTU1NTE2OTVkNSBsZWdhY3ktdHJ1bmsKKzI5NTIgZjU2NWNmN2Y5YWJhODNjMWE4MGM3MWUxODQ3ZjczNTk3MjFlMzE5OSBsZWdhY3ktdHJ1bmsKKzI5NTMgMTY0ODQ5ZjU2MTA1ZmUyYzMwNjE5YTY0YWZlMjNkYzU1YzZlZjk0NCBsZWdhY3ktdHJ1bmsKKzI5NTQgNzdlZTliMjIyZmRiNGE0ODg4NTc4NWY5YWE2MTQyNWJmMTVmOGI3NSBsZWdhY3ktdHJ1bmsKKzI5NTUgZGMzYjQ1NWY3NjMyNzczNWIwNjViYmUwNmUwMjgwNzFjNTRlMTkwMCBsZWdhY3ktdHJ1bmsKKzI5NTYgY2JmMGVmOTk4YTRhMWU1N2NmZGFlNjQ4N2Q3NDc0YTE1Y2I1OWJhZiBsZWdhY3ktdHJ1bmsKKzI5NTcgYzdiYzU2MTRlZWFkNWI0ZjY5ZmJkM2ZiZmNmZTk2N2Q1Zjk2MDA5YiBsZWdhY3ktdHJ1bmsKKzI5NTggMGNkMTk3OTQ3ZDgxNGU5Y2YyMmI5ZDQ0YTlmNjY5YTE3ZDA3MDY1ZSBsZWdhY3ktdHJ1bmsKKzI5NTkgMTM2MDYxODQwNjI0MzQxNTM5OWFjNjYzMzIzZjlkOTQxMzdkZDQzMCBsZWdhY3ktdHJ1bmsKKzI5NjAgM2M4YjQ0MmU1ZTFmMmU2Y2UzM2FhNGY1NWZlN2I4MGQ5MWY0MjY0NyBsZWdhY3ktdHJ1bmsKKzI5NjEgZGZiM2IwZWMxZmY5MjlhNjgyMmNkNWJjOTBjMDIwM2U2MzI4YzkxYyBsZWdhY3ktdHJ1bmsKKzI5NjIgNzg0YzUxY2IxYjc5NzBiN2ExYzdlMGQwYjE0YWQ5NjA1Njc3MzM2MiBsZWdhY3ktdHJ1bmsKKzI5NjMgNDRlY2ZmNjg4NGI3ZDcxY2Y0Yzk4MGZlOWEyYWQ4MDAzMDU5ZDBkYyBsZWdhY3ktdHJ1bmsKKzI5NjQgOTY1MmZjODMwYTEyZDlhYmE5YWQ4NmMwYzRjNmM4N2ViZTk2ZDViOSBsZWdhY3ktdHJ1bmsKKzI5NjUgM2Q2NTQxYTJlY2E1YTA2MjVlNWY0MjQ0OTAwNDE1NTJkMmFjOTJhNyBsZWdhY3ktdHJ1bmsKKzI5NjYgZDA1NzA0YTAwMGViZGU1ZDkxYTIzY2UxNjJlYWNjNzM0OGYxMWRlOSBsZWdhY3ktdHJ1bmsKKzI5NjcgM2FkZWNlMmM4NTY3MDQ1ZGMxOTdmZjk4Y2RmOGIzYjQzZTVhZjZlNyBsZWdhY3ktdHJ1bmsKKzI5NjggYmFiMmJlYmQzNWU3MzU4MWFlNGQ4ODljMWU1YjA0YmZmZDZjMWUwOCBsZWdhY3ktdHJ1bmsKKzI5NjkgMjU5OTIzZTRkN2IxN2ZiY2QwMGQ2ODE3Zjc5ZjFhN2JjMDc0M2Q4ZSBsZWdhY3ktdHJ1bmsKKzI5NzAgNDNjODZkMWViMjJjMjk0NjY2MDMxODMyOGY4ZDU1OWMwNTdkMWU2MyBsZWdhY3ktdHJ1bmsKKzI5NzEgMGNmZjM2YjExMGZlNTUyNzQ2OWQwNmMzNjExODQwYTJkN2JkZGE4MSBsZWdhY3ktdHJ1bmsKKzI5NzIgODU3ZWQzZmJkYzBlYTM5ZDJiMDhmMDVjZjY4ODc5ZmE2NGEzZGU3MyBsZWdhY3ktdHJ1bmsKKzI5NzMgMzc3M2I2ZjZkZDUzYmNlYjZjNDdkMWM2N2M0ZTdlODJkZmIwOTczYyBsZWdhY3ktdHJ1bmsKKzI5NzQgZDZlMjU3OTIzMjNmYjZiZmNlNDE5NzI2YmFhYmU3OGZjYzExZThlNCBsZWdhY3ktdHJ1bmsKKzI5NzUgOTRlYTZlYTdmN2Q1NTZhZjdlNTk2NWMwYWYxZDVhMjkzMjVhODBmZiBsZWdhY3ktdHJ1bmsKKzI5NzYgMDFhNmJmNTc0NTJlNTVhZWQ3MTU3MzNmZjBkMWY4Y2U4YmZjZWY2NCBsZWdhY3ktdHJ1bmsKKzI5NzcgZjA4ZDM0NDk5MjY5ZGUwZTQ4ZmVjYjRlYmFjNDdlOTQ1ODhjYjMyOSBsZWdhY3ktdHJ1bmsKKzI5NzggNjUwOGM5M2Y5NDcyOWFhZGVlOGM0YjEzYzYxZjljMmFkYjIyMDE5NiBsZWdhY3ktdHJ1bmsKKzI5NzkgZTRhMjdkODRlYTM2NzgwZjA4NjRiM2Q1NGMzYThkNzZlY2JhMWFkYiBsZWdhY3ktdHJ1bmsKKzI5ODAgYWE2MzNmMGRlZmE2MWVhOTU1ZTA0ZWVlZGIzNDQ4NmI0NTRlNjA2MCBsZWdhY3ktdHJ1bmsKKzI5ODEgZTE1N2MxMmNkNmU3Zjc0OTFjZTMwZmMzYzUzYWFjZWM1YWJmYzM2NyBsZWdhY3ktdHJ1bmsKKzI5ODIgYTFlODRiNDg0NDdhZTY0NGJiYWRmYmU1YzM5NjJlMDc3ODJkYmJlOSBsZWdhY3ktdHJ1bmsKKzI5ODMgMDljNjlhMWVjN2IwOTI4YjFmYjkxN2NkZGNjMWMxZWE1YTc5NWZjZiBsZWdhY3ktdHJ1bmsKKzI5ODQgMDFmYzU5MDAzMzM5Zjc3MDNmMGY5Y2EzY2JjMDIwNTNkYjg2MmZkMSBsZWdhY3ktdHJ1bmsKKzI5ODUgMWVlY2ZmZDk2OTY4OWUwODA5MjIyNDlhZGEyZDY5YWE3Y2U1NzA2YyBsZWdhY3ktdHJ1bmsKKzI5ODYgZDFiODllODVjZTc1NmQzYTJkNmQ2YzczZjE4MjQxYTJjNDY4MTI2MiBsZWdhY3ktdHJ1bmsKKzI5ODcgYjg0YTZkNGRlOTBlOGZjZjQzNGEzMWFlZjBkZTk4MWQ1ZGQ3MTYyOSBsZWdhY3ktdHJ1bmsKKzI5ODggMWQxOTY2OWY1Njg3Njk2NDMzYTVmMmMwNDhiOTNkYWNjYWI5NDlhNyBsZWdhY3ktdHJ1bmsKKzI5ODkgM2NiOWEyYjdiNDBjZjQyZGUzOWE0YTkwMDRmYTUzNjNhYjcwYzQzYyBsZWdhY3ktdHJ1bmsKKzI5OTAgZmFmMTFhZGNjZmM2NWJkMGE3NDgxMzQ5Y2ExM2JlYTVlYTE4ZTAzNyBsZWdhY3ktdHJ1bmsKKzI5OTEgMmZjZDQwMWE2MjMyM2E0Njk0ZGVhMGFmMmNhODZjOTUzNDZkOTRjOCBsZWdhY3ktdHJ1bmsKKzI5OTIgMjFiM2VhNmJkMzJkMzE2ZTFkOWI2N2ZmZmUwMzA0NTgyYjY5MWY1NiBsZWdhY3ktdHJ1bmsKKzI5OTMgZWE1MDcyZGU3NDI3M2E1MjlmYTAwNjQyMzM5ZmZiNGQ0OTJmYTBkZSBsZWdhY3ktdHJ1bmsKKzI5OTQgM2ViMDVkMmRjN2IxMWY0MWI1NjMxZWM4OTNkZTc5YmUzYjZkMjQ2YyBsZWdhY3ktdHJ1bmsKKzI5OTUgYjQxNzkyMzA3MDA4ZGViNDM4YTk3M2FiNzlhMjc3MWU2OGE3N2VjMyBsZWdhY3ktdHJ1bmsKKzI5OTYgYTc4ODJmYzZlYTI3MDViOGUxNTBkYmJjMWUxZmU5MjY0MmM5M2FlMSBsZWdhY3ktdHJ1bmsKKzI5OTcgNmJmNjlmNTRhOTAzZDg5ZTZkNWMxOTdhNDUzZDc0ZjI3ZGMyOTczNiBsZWdhY3ktdHJ1bmsKKzI5OTggZjI3NzNhNmRjNTFlZWNiMjhiZGU1YmY3NmIwMjRkNDkxOTc0MjU2OCBsZWdhY3ktdHJ1bmsKKzI5OTkgN2I0YWRlNTM2YWY4OGY0NTMwZWY2ZTc1MTBjOWE0ZjI3N2IxNjY2YyBsZWdhY3ktdHJ1bmsKKzMwMDAgYjk4YWVmMjEzZGFlYTU0YzIzMGM4M2NkNjQ0MGUzM2YyYjhkODE3NSBsZWdhY3ktdHJ1bmsKKzMwMDEgMDdhOGM0NDNiODMxMDQ4M2NjNGU1MjY3NmNkYjViYjEyNzYxZTkzYSBsZWdhY3ktdHJ1bmsKKzMwMDIgMTc4MGViOGZkZTJiNjQ1ZjMzYTBlYTczMmExYWQ5ZjEwNDYzZWIwNSBsZWdhY3ktdHJ1bmsKKzMwMDMgNDEwMWRlZDczYzUyZGE4ZGY3ZWMwM2UwYmYxZTQzOTliYTQ0ZmQ5YyBsZWdhY3ktdHJ1bmsKKzMwMDQgM2Y4MWI1YWMyYmIyMDI0MDg1OTI1NTdkMDJjZTBlNzdmYzQ5ZTdhZCBsZWdhY3ktdHJ1bmsKKzMwMDUgMTQ2NjM1ZGVmMDFlYWIyZGIzNzFkZTlhMzdlMTAyOTMyMGE0ODU1NiBsZWdhY3ktdHJ1bmsKKzMwMDYgMzk4YzAwZjExYTJmNDVjMjdlNDNmY2IxOTgzMzdlMmY0MzQxYjFmMyBsZWdhY3ktdHJ1bmsKKzMwMDcgYzU1Y2I3NmJjODM3MDgxZTBkNTFhZjk3ZjQ4YjI1MGZkYWI5MDQ0YSBsZWdhY3ktdHJ1bmsKKzMwMDggODUxYWM0YThiZTdkODg1YjM3MWNjZTNlYWM1MjE3ZGU5OGFlNzUyYiBsZWdhY3ktdHJ1bmsKKzMwMDkgMTY0MGNjM2YxYTUzZjgwNzUyZmIyYzgwYmQ1NzFjNDBkZWViZWUwOSBsZWdhY3ktdHJ1bmsKKzMwMTAgZDMxZWMxNWY1ZjcxMDY0NGFlMjczNjI5ODNmN2Q2YjBhNjlmNDFhYSBsZWdhY3ktdHJ1bmsKKzMwMTEgYjJhNDFmNmFlYWM5OTBjYWNiYTI0ZDBhOTI3OTRiMjMwMzAyMmUzNSBsZWdhY3ktdHJ1bmsKKzMwMTIgZmU2YTVmMjY0MGEyNzZkOTAxN2Y1ZWRmMDA3NDQ2MWQzYmQ5Yjk2YiBsZWdhY3ktdHJ1bmsKKzMwMTMgODcyYTNjYWVmZjA3MjQyMDM1Mzg5ZDZmZTY1ZjAyODJhMjAzNmI5NyBsZWdhY3ktdHJ1bmsKKzMwMTQgNGRlZmFiYjgyOTZiNWI0NzA2ZDAzN2Q1OGFhMGRjNjk1NmIwZGIzOSBsZWdhY3ktdHJ1bmsKKzMwMTUgMWFjNWM2NzI3ZThjNThkYzg5OTQwYjZmNzAwNzdjYjBjYmJiYjEyZSBsZWdhY3ktdHJ1bmsKKzMwMTYgNGQ1OGUyYzUwODg3YTVhY2FlOGU4OTI1ODRkNTdhNjViYTk0Y2U3ZSBsZWdhY3ktdHJ1bmsKKzMwMTcgMzllNWI3ZTMxNTg4ODVmMzFlYmEzNDBkZWZmMDI1YTA3MWQ1YzAzMCBsZWdhY3ktdHJ1bmsKKzMwMTggNmY0OTlkNWRhZGRmN2FiY2Y3ZTQ5MTQ0Mjk2ZGRlOGEyODE3MDA1ZiBsZWdhY3ktdHJ1bmsKKzMwMTkgMjU0MWIzZDBmMjBmNzFlNjE2Yjk3YTlmMGRlMjYyYTcwMzJlZGE3NyBsZWdhY3ktdHJ1bmsKKzMwMjAgOGJjMTcwZTVlZmVlNzIxNDZhOGNlMmNjMDk4MDc1ZDkxN2EzOGUzZCBsZWdhY3ktdHJ1bmsKKzMwMjEgNmNhMWM0NGZkNTI3OGEzMjljYzdmMTQ5NTkwY2UzYTJmN2Q2NWI4NSBsZWdhY3ktdHJ1bmsKKzMwMjIgNmYzZmVkMjUwYWRiMGZhMjIyNzdlMWQ4YWEyNWVlOWZlZmExNmVmNiBsZWdhY3ktdHJ1bmsKKzMwMjMgMzkxMzRjOTljOTIzODNhNTcxNjY2ODcwZjdhYTcyMDY3ZmJmZjExMCBsZWdhY3ktdHJ1bmsKKzMwMjQgNzYwOTVhOGI5NmNhZWJmMGRkY2QyYjllZmEzMTRhN2JjMzc3MDhmZCBsZWdhY3ktdHJ1bmsKKzMwMjUgYmNmMDIwNTJlOTA5ZTgxYTdjNGMwMDc5NmJkM2E2YjRkYjIyZWFlMiBsZWdhY3ktdHJ1bmsKKzMwMjYgYjY4YjEwYTIxNTIwMDkzZThhMTZmYjI3MzdlNWI5ZGE0MGNmNzdiMCBsZWdhY3ktdHJ1bmsKKzMwMjcgZTU4ZjQwYzJmMjg1Y2Y1ZTM2YzYxZGIwOTE0NTI3NzdmNGEzNGRjMCBsZWdhY3ktdHJ1bmsKKzMwMjggNThlODc3MGRiNDRhY2RmZWQxZDc2N2NjNmQwMTA4OWZkNDllMmY5NyBsZWdhY3ktdHJ1bmsKKzMwMjkgMDZjMDc4NzUwZTgwOGEzM2I4YjczMWMyMDUzNmVmZWUzOTE1ZGQxNCBsZWdhY3ktdHJ1bmsKKzMwMzAgY2IxNDZhYTk4N2M5NDVmOTYwNDdmNzg0NjVlNzYyMzE4YzM4MDUwMCBsZWdhY3ktdHJ1bmsKKzMwMzEgYjJkYjRiZjM0ZmY4Y2U0OTk5NWRhN2U4NDA0ODNiZmU3Mjk4Nzk0MiBsZWdhY3ktdHJ1bmsKKzMwMzIgOGUzNTFmYjI1NzdhMDJiMjYyYTdlZjUwOTc2NzM1ZGQyYTVkYjI4ZiBsZWdhY3ktdHJ1bmsKKzMwMzMgOTcxNWZkYzFlNDYyZGZkNGY1MGZkOGMwZDdiM2RhNzAyMGE5M2ZiYiBsZWdhY3ktdHJ1bmsKKzMwMzQgMjIxNjlmY2MxMTgyNmRhNjU3ODE4ZjE4MmMyNmRjMzczOWEyNTk3NSBsZWdhY3ktdHJ1bmsKKzMwMzUgN2EwMTNkNjQ0NWE0ODc3NTVjNDk2MWNhODcyMWY5ZGIzNmZkYjJiOSBsZWdhY3ktdHJ1bmsKKzMwMzYgYWFkZGY4MjFmNWQ0MzJjZjExNmIzYWJhNDQ4NjExNWMzOGUwMmVkMSBsZWdhY3ktdHJ1bmsKKzMwMzcgNGM5YmM1MmI4MDgwZDM5Y2Y4ZGY2ZmNlOGJmZDgwODFhZGFjZWM4ZCBsZWdhY3ktdHJ1bmsKKzMwMzggY2QwZTdmMjRmYWNhMWIxMWFiNTZiNWExYjYyZDhhZjAwM2MwNDFhNyBsZWdhY3ktdHJ1bmsKKzMwMzkgZWMzMTc0ODgzN2RjMjc4OWY0ODc5NDZmMzI1OTE3MzE5NzE0MmY5MiBsZWdhY3ktdHJ1bmsKKzMwNDAgOWZiMmE4NjhlZWVlYzY1YWU3ZGM2MTk4MDRlZDU1OTE4ZDc5MWI1YSBsZWdhY3ktdHJ1bmsKKzMwNDEgMzYzMjMxNDBmNzUxODU0NWUyYmFkODM1ZmFlOTRhZDdhMmY1NTY5NSBsZWdhY3ktdHJ1bmsKKzMwNDIgZjk0ODFhYTVlNzc2YjY1ZjdiZDFlMjZiNTc5NjNlMTg1YjQxZDNhNCBsZWdhY3ktdHJ1bmsKKzMwNDMgMzZiOTM0MzI2ZmVkNWY0NTVhN2MwZmZhZDhkMzM1MDUwOWUxMjgyOSBsZWdhY3ktdHJ1bmsKKzMwNDQgYWZmODE5Y2FmMjFhZjU0Y2I2NjFjNjk5MGUwMTQwOWI3ZDNkNTExYyBsZWdhY3ktdHJ1bmsKKzMwNDUgMDBlYmU1ZmIwYWM2NzEyMGI2MDRlNTFhMjc2OGMzZWQ4MGIwYTg0NSBsZWdhY3ktdHJ1bmsKKzMwNDYgYTU0ZTRhNzE3YzliYmUyOTFkOTJlNGQ2MzA1NTJiNGQ5ZDk4ZThlZSBsZWdhY3ktdHJ1bmsKKzMwNDcgYzAyYzNjYmI4YWQxMDQ3NzQxYmM2ZjliNDYyMmNkNzFmY2YzZmQ1OCBsZWdhY3ktdHJ1bmsKKzMwNDggMjY2ZGU1OWRlOGE5ZDg3Mjg3Y2I0ODNkZWVjMjg2ZDI4ZDBhMDhmYSBsZWdhY3ktdHJ1bmsKKzMwNDkgOWEwNWUyYmZhNzRjMzZiYmE2YmViN2RlM2Y1MDZlNmVkZjBmZjE5YSBsZWdhY3ktdHJ1bmsKKzMwNTAgMTZhMTk1MzU0YjJiZWUwNmI3ZmMzYjVkOWFkYjI2NTA0NGM4MjFkMiBsZWdhY3ktdHJ1bmsKKzMwNTEgZGQ3ZGZhZDQwNGNkODMyZGE2MzhmMTc1Mjk0YTZlZmU5ZmNiN2FkNCBsZWdhY3ktdHJ1bmsKKzMwNTIgMTgxNDA5MTQxYTE4MDZkN2I4NWMzMThmZGI5NjQzYmUyNDdlZTA5YyBsZWdhY3ktdHJ1bmsKKzMwNTMgYjNkNjM5YWQ2NjZkNWIyMGIwZGI3YzU1M2MwMzdlNDlkYWU1ZDY2ZCBsZWdhY3ktdHJ1bmsKKzMwNTQgYThjYTcyMGZkOTIxOWVlYTZiY2UzMmRmNmE5OWQ1Zjk1YTAxNmZhNyBsZWdhY3ktdHJ1bmsKKzMwNTUgMTFlYTY2OWMyMzFlMTNkMjRkNDlkYjM4Yzc1MzExMDI4ZjM1YzQ0ZCBsZWdhY3ktdHJ1bmsKKzMwNTYgMjI2NTgyODIyY2ZhZjEyMmYwZWQzY2E5NWJiMTJmYTljM2QxMTU0ZSBsZWdhY3ktdHJ1bmsKKzMwNTcgNDZjYjZiY2U0YzQ3NWY0ZmVmYzUyMjg0OTE5NjY2ZDRmYWM0NGZmNiBsZWdhY3ktdHJ1bmsKKzMwNTggYmViZGMxYWNmNDc0NTliODZlNWNmOTc1MDJkZmIwNjIwMTcxNzdjYyBsZWdhY3ktdHJ1bmsKKzMwNTkgNjQ1OWUyZjIxYmY2ODA3NzM3ODhmYzJhZmQ2NjE5YjcyZDdjOGVhYSBsZWdhY3ktdHJ1bmsKKzMwNjAgMGM1YjJkOWU0NWU4MmQzZjJlNWU4YWVkNDRhZjVmYWMyY2I5NTU2MSBsZWdhY3ktdHJ1bmsKKzMwNjEgZWY4NjUwMjUwOGUyZjEwODZjMWExODZiZmIxM2E2NWEwZjBkMmYwZiBsZWdhY3ktdHJ1bmsKKzMwNjIgOTliZmYxZGI3NWY0YTBmZjFkNjcyOWRlMWVjOTdhNmYzYWIxZTY3NCBsZWdhY3ktdHJ1bmsKKzMwNjMgNThhNzQzOGMyZTdlZjkyMmIzNjMxNzllMDQ2ZjA4MjliYmFhYWQwYSBsZWdhY3ktdHJ1bmsKKzMwNjQgZmVhM2Y1OTRkZjc3NDZiNzc2YTEzY2I5MGYzZWZhNDliM2NiN2Y1NCBsZWdhY3ktdHJ1bmsKKzMwNjUgYTQ3OTNhZTI2NjgyNmMwMTM0YzQ5NjdkMGEwYmJjM2E2Mzg0YWMxNCBsZWdhY3ktdHJ1bmsKKzMwNjYgZmQ2MmMyODA5NmI1ODc3ZTY2ZDRiZWQ3YzFmYTQ1OTAxMDY1NzQ3OSBsZWdhY3ktdHJ1bmsKKzMwNjcgN2Y3YmE2NWEyODI1YzBlNDZiNTg0ZjliMTIyNTk5M2JjMDM1NmI1YyBsZWdhY3ktdHJ1bmsKKzMwNjggYTFmNWIyMTZlMzkyY2Q5YjUyYTU3NTlhYzZjYWJjYTNlYWJmODVhNyBsZWdhY3ktdHJ1bmsKKzMwNjkgNjM3OThjZGU1ODJjZjUzNTY0NWEyNDJlY2EzZGFlNzlmYzBlMzYwZiBsZWdhY3ktdHJ1bmsKKzMwNzAgMzIwMTBkMzU1ZmI2MTIyZTUyNThlYTkyMzY2MzQ2NTgzZGI1ZjViZCBsZWdhY3ktdHJ1bmsKKzMwNzEgNDI0ZjU1ZTY3ZDVkMzI0Yjk4NjU3NmE1ZmRlOThjMTQ3Y2YyYjQyNSBsZWdhY3ktdHJ1bmsKKzMwNzIgNGRhMGI3ZGFlNzk2ZmY4ZjI1OGFkNmI3YTQ3MGU2ZmI5Y2MzZGIxZCBsZWdhY3ktdHJ1bmsKKzMwNzMgYTRmMmIyMjEwYjAyMTE1MDMwYzU5YTE1NzUzOTYxNTczMzkzOGQ2ZiBsZWdhY3ktdHJ1bmsKKzMwNzQgNGZkMjI2MDJlMjgyYzFlZThiZjUxODdmZDE0ZmQyYjNhODRiYTU2NyBsZWdhY3ktdHJ1bmsKKzMwNzUgNjBlMzExOGQzMDczN2JiNmYyOWMzODc2YTRjODEzYzYzMDRkNDU5OSBsZWdhY3ktdHJ1bmsKKzMwNzYgZTk4YThmODAyOTAzYTYyOWM2MjQ2NjE0MTRjYzg5Y2FlMmFjNzY2ZCBsZWdhY3ktdHJ1bmsKKzMwNzcgNzRiNzE2ZTlhYzQ5ODZlNDAwMzc4OTM4MWNkMGRkMDQ0ZTJhMmEzOCBsZWdhY3ktdHJ1bmsKKzMwNzggMzllZTdkZTc0NzUwMmU5NjJiZGI1YzZlODcyYjM2N2Y0MmIwYTU1YSBsZWdhY3ktdHJ1bmsKKzMwNzkgZmVjMThlMjQ0ZDE2ODgyYjI5ZjBmZDU3YmU3ZDUxMWZkMmZmMjlmNiBsZWdhY3ktdHJ1bmsKKzMwODAgY2ZkZDU3NWVmZmYyYjQxNTcwYjM3YmZiZmY4MGIyYzM3NTEwNjNhNSBsZWdhY3ktdHJ1bmsKKzMwODEgZTQzYTIyMGMyODdhYTNlYTI3YjdjMWUxM2Y1ZmMwMzA5MTlmNWRmNCBsZWdhY3ktdHJ1bmsKKzMwODIgZDNiMjdmZmYwMGIyZjEyNTc1ZWMxZDIxM2I4ZTZkN2QzNzc5ZWUzYiBsZWdhY3ktdHJ1bmsKKzMwODMgOGM3M2M1ZjNiNmNhNzNkZGI2Njk0YTZjNTUyODcwOTUwNmFmZjZkNiBsZWdhY3ktdHJ1bmsKKzMwODQgODA3ODgzNDk5NmVjYzU4MmNhNDQ3OTY4MzE0MGYwOGY3ZjMwYjAzNCBsZWdhY3ktdHJ1bmsKKzMwODUgYzEyYjQ0NWNkYWNlYTFkOWY5YTA4OGFmNjIyYTZhNWIxYzA0Y2FhZSBsZWdhY3ktdHJ1bmsKKzMwODYgNzJhY2VlZDM2NWQ0MzViN2MyOTUzZGI4NDBiY2QwNTQ3Njk5ODM3MyBsZWdhY3ktdHJ1bmsKKzMwODcgMjUwNWZkMjBkMjc3YTQ3OWUwZDQ4NzY2MmI4ZGMyMzRkNmJhZTI2MCBsZWdhY3ktdHJ1bmsKKzMwODggNjExNDNiZjAzYjQ0NzZlMDVlMjcyY2NlOWRhYTk1NjYxM2FjZTc0NyBsZWdhY3ktdHJ1bmsKKzMwODkgYzE1NmQ0OTYwYzJiNDA4NTliMWYwNThjMjRmZDFiMDYwNTA0M2U3MCBsZWdhY3ktdHJ1bmsKKzMwOTAgYWFjYmQ0YjU1OGM3ZWZjZmJiZjc3Y2NiYmUyNzA2ODM0NmMwMGI0OCBsZWdhY3ktdHJ1bmsKKzMwOTEgODcyNWZhOGQ3ZmY5MWQ4MWE0MzZhYTYxZDM0ZDcwZjZjZWUyOTEyOSBsZWdhY3ktdHJ1bmsKKzMwOTIgZmYwMmI5NDhjOWE4MGI3Yjk1NWMxNTg0MWI5MzFmNTQxMmJkODFhMiBsZWdhY3ktdHJ1bmsKKzMwOTMgZTUwNjE5NzMzMmMwYzFhMTFlYTRiZjljZGE3MjgwNjJlODg1ZjA0ZSBsZWdhY3ktdHJ1bmsKKzMwOTQgZDg2MDhlZDFjYzNiMTNiOTgyMzAxMmUwYmFmNmQ5YTQ2NmM1ZTNlNyBsZWdhY3ktdHJ1bmsKKzMwOTUgNjE1OTgzZjFhM2ZmM2ZkNTkyZTI2NzNiNGE3ZTQ0YmJlMzNmNGViZCBsZWdhY3ktdHJ1bmsKKzMwOTYgYzQzMjczOGNmNjlhZWFlMTVmNTg4Y2ZhNmY0ZjEwOWRlNzk0YWIzMiBsZWdhY3ktdHJ1bmsKKzMwOTcgZDM4M2QyNzMzMTc2NWY4ZDZlY2MwNmUzMWQ0NTBiNGFmMzliY2MyMyBsZWdhY3ktdHJ1bmsKKzMwOTggNDg3OTk2Nzk2ZWRjNmM3MzFiNzUwY2Y5NTg2ZDk1MjEzNzk4ZWUxNSBsZWdhY3ktdHJ1bmsKKzMwOTkgZGNlNmRjNjJmMTA4ZWU0NGIwNDdlZGIwMmJmNDRkOTljZTIwNWFjOSBsZWdhY3ktdHJ1bmsKKzMxMDAgNThhNGNiMThmMDI1YWY4NmQ5ZGIzZDA5MWM5MWM0ZjQ0Njg0NDc4ZiBsZWdhY3ktdHJ1bmsKKzMxMDEgMTgzNjliYjljMjRkMDc4NzlmNjA1ZWZhN2VjNTFhNTBmMjkyZDdhOCBsZWdhY3ktdHJ1bmsKKzMxMDIgNzI0M2E5MDY5MzdjZjc4NDgzY2VlZGEzNTAzNGE0ZDAxNmM0MzJlYSBsZWdhY3ktdHJ1bmsKKzMxMDMgODQ0NDgyYjY0NjdhYWUzZDU4YzgxYTUwNTcwNWU1MjNiYTZlZjJiMSBsZWdhY3ktdHJ1bmsKKzMxMDQgY2Q0MGUzZWViYjQ5MzkwZjRlMDM0YWYzMTFkY2JlMjYxYmM3YTAxNCBsZWdhY3ktdHJ1bmsKKzMxMDUgM2FhNjU4OTJiNzVjNDcwNjk2NzM1NzMzNWE5ODc2MTc5ZTUzOWE5OSBsZWdhY3ktdHJ1bmsKKzMxMDYgYjQ2ZjIxYzgzMzY5MDk2ZjAwM2Q5N2I4ZmI1NGQ1YWI5ZDc1OGYxMSBsZWdhY3ktdHJ1bmsKKzMxMDcgMjIyZjA0ZjU1MDgzMzU3MjZhYjZlNjFlMWQ1ZGYzNDQ3NzNkOGIxYyBsZWdhY3ktdHJ1bmsKKzMxMDggNDY1Yjk4NDE3NzBlMzQ1NjVlNGQ5NmNmMGRmNzBiY2E0YjA3ZDhlNiBsZWdhY3ktdHJ1bmsKKzMxMDkgMzZlMmI3YTAwZDcyZjM2YWZiYWJjODAxZTJkMDM1ZGY3MDA1MzE0YiBsZWdhY3ktdHJ1bmsKKzMxMTAgMjYwZDk2ZGIxMTJmODdkMjA0YmM4ZTVlMmRjNDg3M2ZiODFmYzIyNSBsZWdhY3ktdHJ1bmsKKzMxMTEgZTVhZTQyZmZkOWEwNzU3ZjZhNzcxZjk2NzFlZmU2MDY2YmUyMzczNiBsZWdhY3ktdHJ1bmsKKzMxMTIgYmMwYWIwMTc1NGJhNWRjYjQ4MDA0MWU1M2Q5ZDg3YTY3ZDU1MzA3ZiBsZWdhY3ktdHJ1bmsKKzMxMTMgYjlmMjRkMGM3ZDk2MTZhN2QwMmYxNjBlYzc4YTQwMzBkOTU2N2MyMyBsZWdhY3ktdHJ1bmsKKzMxMTQgMDI4NGYxMDc5YTdiYWU1NjQyM2M5Y2U3M2FlMjM4M2JhNzFjZGE1YSBsZWdhY3ktdHJ1bmsKKzMxMTUgN2Q4ZTUxZTU4MGQxYTIzY2EzM2QyMDI4OTc2ZjUyZDJiMmJkNjY5ZSBsZWdhY3ktdHJ1bmsKKzMxMTYgMmI2MDgzMjcyM2MxNDMxZjc5NWY4NDhkMzE3M2I2Mzc5YTg1ZGU5ZiBsZWdhY3ktdHJ1bmsKKzMxMTcgMjY2YThiYTIwNzg0ZmNmNDFiYzRlZjI4ZWNmY2U5YTk5MjRlYzhjNyBsZWdhY3ktdHJ1bmsKKzMxMTggMDNkZTY3MDgwYzk1NjI0MjhkYzczN2U3MWY0ZWU0ZWQyMjUyZDlhNyBsZWdhY3ktdHJ1bmsKKzMxMTkgYTYwY2I1MzIxMjExMGU1NDAwYjQzYjViODhlYmQ2Y2U3N2RjN2UxOSBsZWdhY3ktdHJ1bmsKKzMxMjAgNWM2Y2RiNThhODAxY2I4MTk0NjRlMGU4Y2QxZTFkZDMxMGY4ODIwNSBsZWdhY3ktdHJ1bmsKKzMxMjEgYTczNmVmMTg0MGE1MWZlMmI3NWVhODlmNTE5MTU1OGVkOTQxM2I1NiBsZWdhY3ktdHJ1bmsKKzMxMjIgNjhiMzAyYWQ4NGExOTFiNDNkOTk1NWM1OGM4MjkzOWNkNjI5NTk5MCBsZWdhY3ktdHJ1bmsKKzMxMjMgN2QzYTA1M2M2NzY1YWU1NmViMTZjMTBkYzU4OWQ1YzBmZjEzMDk5NSBsZWdhY3ktdHJ1bmsKKzMxMjQgYTMxZTA3ODQ3MDYzODc0NjljZjBlOWYzZWNjOGI4OTExN2ZkNGVmYiBsZWdhY3ktdHJ1bmsKKzMxMjUgYjQxZTk1NzMxZTQyMjQyMTc4NWYxNWQ4OTU3MTMzZjQ0ZmQzZDlmZCBsZWdhY3ktdHJ1bmsKKzMxMjYgYjVmY2I2NjI0NjVlNzNjZjhmNjdlOTVhZTlkMDU0MzNlOTMyMDlmNyBsZWdhY3ktdHJ1bmsKKzMxMjcgNGJkYjI3OTQzZTIyNDIxMzcwMDY5MDkwZGFlNDAwZTUzYmZjN2Y1ZSBsZWdhY3ktdHJ1bmsKKzMxMjggMTRjYzRiMDdjZWJiZDYxMWU3NzBiZjdhMWI1MDkyOGQ4ZGM3YzA3OSBsZWdhY3ktdHJ1bmsKKzMxMjkgMjdhYWY5NDQ3NWRkYmQ3NTliMDUwMmQ3YmM3ZmM2MzlmOThhZmU0MCBsZWdhY3ktdHJ1bmsKKzMxMzAgMWE1MjAyOTBjMzljMDUyNWE3ZmUwMjFhMjExMjNhODI0MmFlMjE1OSBsZWdhY3ktdHJ1bmsKKzMxMzEgMDZhOWM4MjhiNjA4OTFiNThjYmQ2YTZjMzIzYjNlOTA0MTFkNDFhYyBsZWdhY3ktdHJ1bmsKKzMxMzIgOWJmZTczYzc3MzM0Y2FiNjEzMDIzNmI3ZjU0NzM0Zjk4ZmU0ZThlZiBsZWdhY3ktdHJ1bmsKKzMxMzMgNDY1N2Y3Yzk4MGU4NTlmNTkyMTQ5OWQ2NTg2ZmEzZWM3ODRiNDI2NyBsZWdhY3ktdHJ1bmsKKzMxMzQgZjY3MTkzOGRmZGUyZTUzMjhhYTgwOGU3NDhhMDFkYWRiMTUxY2RhYyBsZWdhY3ktdHJ1bmsKKzMxMzUgN2IzN2I1ZTcxNDkzYTM2NzE4ZjU1MDM1NGVjZDlhNjM1ZTBkY2U5NCBsZWdhY3ktdHJ1bmsKKzMxMzYgMzBhMjkwMjU3YzMxZDBiMDhkMTcyODY1MmQxNGQ2ZGU1MzE1MmQ2NSBsZWdhY3ktdHJ1bmsKKzMxMzcgYzljMDMyODM2OGE5ZTJiNjQzOTE2MDQzZmY1YjY1YzIyZjQ1YjBiZiBsZWdhY3ktdHJ1bmsKKzMxMzggYWRiYWM1ODkzZjljNjBkZmIxNzNhMmY2NTAxNzY0NTZkZWNiZmJkMiBsZWdhY3ktdHJ1bmsKKzMxMzkgMzFiMDE4YmRhN2UyZDNmNTAwZDlmYzc0OGU0YTliZTE1OWIxZTlmMSBsZWdhY3ktdHJ1bmsKKzMxNDAgNTc2ZGMxNGEyNDAwOTcxMmVjYjEwNjNjOTM4NjRhYjdmM2FmYzM1MSBsZWdhY3ktdHJ1bmsKKzMxNDEgMTNjOTllYWYzMmE4YzQ1ZmM5Mzk4MTliYTAxOGM0YjE5NDNiNTY2MCBsZWdhY3ktdHJ1bmsKKzMxNDIgM2M1NWU2MTJhNmZjYzFkN2VjNDE5MWVlMDQwZTkzNjZhNzJlMWJjNyBsZWdhY3ktdHJ1bmsKKzMxNDMgZmZlMmZiYzU4M2RlY2Q3OTE5ODVlMjYzZmU5NzliZThmNTM4ZDlhZSBsZWdhY3ktdHJ1bmsKKzMxNDQgOWYxZGI1NTZmZmJjMjhlYTNkYWRkMmQ2YTMxOTczOTgyYWUxMDhjNiBsZWdhY3ktdHJ1bmsKKzMxNDUgZmJjYjhkMGJkNDVlMDMyMWVjOWQ1NGQ1YWZhZGRkNzg3M2NhODBhZiBsZWdhY3ktdHJ1bmsKKzMxNDYgYjA0NWU2OGJiY2RkNTRkNGI0NWUzYzA3M2QwMjgyNzI2YTNmZTI4OSBsZWdhY3ktdHJ1bmsKKzMxNDcgODdhZWQ1MTYwMTYxNzZiNGE0MDAyNTc5MDJhNTk3OTI2NWM4NjlmZSBsZWdhY3ktdHJ1bmsKKzMxNDggNWNjN2EzY2Q1NTdiNjQ5Mzc3NmEyMmFiNTMzM2I4ZDAyMDBiMTcxMyBsZWdhY3ktdHJ1bmsKKzMxNDkgMmEwNzQ2ZDUyNDc4YTcyZWFkM2QxZGNiNjA3NTdiMDE2MDAzNTYxNiBsZWdhY3ktdHJ1bmsKKzMxNTAgMjRjOThiNjBkZDc0NjViZTQwYjAzN2E2NmM1YzVhZjU4MjE4Zjk5ZSBsZWdhY3ktdHJ1bmsKKzMxNTEgMTk3YTJjZjNhNjYyYzZiMWM3MDJiNzMxMDAxNzAyZDJlZGJkMDZhYyBsZWdhY3ktdHJ1bmsKKzMxNTIgNzdhY2E2OTY2YjlkMDFiNWExMzRmMGZjOTkzODY3NzVlNjVlZTZmNiBsZWdhY3ktdHJ1bmsKKzMxNTMgYTllYjdhMGQ0MDAyMTQxZmU3MjU0ZDVlY2UyYzUzM2NhNjVlNTVlMiBsZWdhY3ktdHJ1bmsKKzMxNTQgN2Y4MGYzMzZiZTdmODJhYmVjZDQ1ZDc4OGI4YjJiZDFiNmQ1MmMwYyBsZWdhY3ktdHJ1bmsKKzMxNTUgNDhjNjM3ZmIxNTBmMzI4OTgxNmYxZmQzN2M3YWFhOGUzOGU0MDA3MCBsZWdhY3ktdHJ1bmsKKzMxNTYgN2NlMTk3NWYxMWE5MGYxMjQxY2NiMzFlYmM1MjMyNWIxMDYzYjA4ZiBsZWdhY3ktdHJ1bmsKKzMxNTcgZjRkYjQwNjNlYzg4NmVkMzlhZWViMTY0ZTQ2NjAxYTZkYjQyOTAxOCBsZWdhY3ktdHJ1bmsKKzMxNTggZjAyNWVlZjkzMTMwZDMyNTkyNzU3NGYwOTdkNTY4MWMyMmI2OTBlYyBsZWdhY3ktdHJ1bmsKKzMxNTkgZmZiMDNjZWJmM2Y0NTVlNDI2ZTQyNWFmZTMyNjY0ODJjYjdhOGQyOCBsZWdhY3ktdHJ1bmsKKzMxNjAgMGJlMWE1ZGI3Nzg0NzRhMGU1Y2ZmN2ZhZDEyOTFiZDZkYmFhZGIxNiBsZWdhY3ktdHJ1bmsKKzMxNjEgMDliNDg2MDQ4NTVmNGRkM2YzNzczZDJlZjI0MWFhZGEwZTBjNTEwOSBsZWdhY3ktdHJ1bmsKKzMxNjIgZGViZmNiOWE3ZTA4YTY0NzQzODlkMmY5YTZlYzkwYjFkMTY1Yjc2YiBsZWdhY3ktdHJ1bmsKKzMxNjMgNjc3NDEwN2M2NDdkYzU5YzYwNGRhYTcwYzRiMWFiZTdiYzlkNTVmMSBsZWdhY3ktdHJ1bmsKKzMxNjQgNTA2N2YyZDM4ZTE0M2ZiMjMyNTg1MTY1MjQ1NDQ4NjYyOWJjZjY1NyBsZWdhY3ktdHJ1bmsKKzMxNjUgMGNlNDA0ZTQxMzljNWI2NTExOTBjODRhMmU4MWQ0NWM2ZGRiMmE5ZiBsZWdhY3ktdHJ1bmsKKzMxNjYgMTdkYjA1OWIyOWJhY2FiMzFkZDkwMWM5NjA2NWFlNDVhNmNlMDdmZSBsZWdhY3ktdHJ1bmsKKzMxNjcgNWQ3MTQyZWEwMWI3ZGIwZjE3ODA2NjRlNjljODhhZGM1M2EyMTQwYiBsZWdhY3ktdHJ1bmsKKzMxNjggYjMzMjI4ZTNjMmMyN2VkOTIzMTVlMzU0ZmI4MDViNTZlZTQ1NzhmYiBsZWdhY3ktdHJ1bmsKKzMxNjkgOTAzMDcxMzc3ZDI5MmU1OTkyNDBkOTNlYmJiMTU2MTlhMGY3ZDVkNSBsZWdhY3ktdHJ1bmsKKzMxNzAgMDRhOGE4OWM5MmViNzBlMTIxMzg2MDJhZDU0NzRlNjE3ZDM5NzY3ZiBsZWdhY3ktdHJ1bmsKKzMxNzEgZmRiZWFlMmQ2ZTY3MWUyMTVhODUxZTZmZTdkZGMzYzM4NGJhZjAyYSBsZWdhY3ktdHJ1bmsKKzMxNzIgMDlkMjcxZWYzYjgyNDA0Mjc5MDI4OWE5NWFiN2FlZjgyMTNkM2VhMiBsZWdhY3ktdHJ1bmsKKzMxNzMgNmMxZmQwNTEwZDYxYmNkMTcwOGUxOTJlNWE4YzNhYzM4OTRjZWU1ZCBsZWdhY3ktdHJ1bmsKKzMxNzQgOTI2NzhiNTA1N2M2NTU2Y2U1NDQ1NmU1MDU0MGIxNWI3NWE3YWEwYyBsZWdhY3ktdHJ1bmsKKzMxNzUgODA2Njg5YjkzNTU4Zjk1NmY3MWU2MDlmMjMyYzFlMDJmZGM1NDgzNCBsZWdhY3ktdHJ1bmsKKzMxNzYgYTFjZTVhOTQ5ODI4ZDVjMmJmMTU1NGY4MDBkM2FkN2IxMmZjODcyMyBsZWdhY3ktdHJ1bmsKKzMxNzcgOTZhY2IzNWJiOTJiYjg5MWQ5YWMwZTE4MjIxZTE5ODUwMTA2YzBhMiBsZWdhY3ktdHJ1bmsKKzMxNzggZjNkNWUyYzNiOWEzYTUzMWY3Y2U3MmViZjRjMzkxMGI5YjFiYTFiNyBsZWdhY3ktdHJ1bmsKKzMxNzkgYTQxZTNiYTViNDdkOTZmYmI3ZDkyMWQ1NGFkYmYxZGQ5NzM1MDBlMCBsZWdhY3ktdHJ1bmsKKzMxODAgY2I3ZWY5YmQ5ZWRlYzM3OWE1Mzg2NDBkOWQzYjNlNzM2Nzc0OWUxYyBsZWdhY3ktdHJ1bmsKKzMxODEgMzk0NWYzNzEyMzU0OTAxYmQ3Njg5YWE5M2Q1Y2JhYzFlMGUyZDE2MiBsZWdhY3ktdHJ1bmsKKzMxODIgYTNlNzY4ZWE4MDJhYjkwN2YwMTEwMTdhZTFiZWZmNWUxN2E2NmI0ZSBsZWdhY3ktdHJ1bmsKKzMxODMgNzQ0MmIyMGM0M2ZkZmNjYzFhMzk5NzcwNTM3M2I5YTFkNTEzODRiNSBsZWdhY3ktdHJ1bmsKKzMxODQgMGQ3YzgyMzY2NzA0NTAwNTI3YzQ1NzM3ZDNjMzJjM2QxY2FlMTM2MCBsZWdhY3ktdHJ1bmsKKzMxODUgOWI1NjZhYzM4YzJiODQzNDFjODQ1MzAyNTAzN2M3ZjEyOWExYjViYyBsZWdhY3ktdHJ1bmsKKzMxODYgOTRhYjY3NjFhZmUyYzRlZjJkNzA1YzdjZTlhMWQzMTFjZmU4ZmFjMiBsZWdhY3ktdHJ1bmsKKzMxODcgN2I0ZjI4MzNmZDkwMmJjNTU4YTIxYmExY2ExODRiNjFiODNhZTUxNyBsZWdhY3ktdHJ1bmsKKzMxODggZjk5MzE5N2MzYTQ3NmU0OWMzN2UzZDliNDQ2NTYzNDQ4MDdiOTE3OSBsZWdhY3ktdHJ1bmsKKzMxODkgNTZkNjNjYWJkYmE3ZWMwODU1ZmUyNDBkMWE1NGNhMmQ2Y2NhMThhMSBsZWdhY3ktdHJ1bmsKKzMxOTAgNTEzOTQwZWI0ZDdiNjk5MWIxNTU2ZmQ5N2JmY2JhYmJiZjlkZDVlNCBsZWdhY3ktdHJ1bmsKKzMxOTEgZWQ0NTZlOTFkOTVhZTg1NDY3NDU5OWU5YjYzMzM5YmI5NmMxYTZiOSBsZWdhY3ktdHJ1bmsKKzMxOTIgMmY5ODA1Yzk2M2U4NTM2NDgwN2I4ZWExN2ViYjNjZjM0MWQyYWVkNCBsZWdhY3ktdHJ1bmsKKzMxOTMgOWYwZmIxMTRjMWU1NGNlNTYzZTU0MzMwZmQ3ZDE4YzA1ZGY0Y2VmNyBsZWdhY3ktdHJ1bmsKKzMxOTQgN2ExMWE3MGY3ZjQ0ZGNjZDQyZWRkMWQ5YjI5NmY4NzUyM2NiYTE4MiBsZWdhY3ktdHJ1bmsKKzMxOTUgNDMyZmU3ZjA4MzdjNGIyNWE3NGM0MmZhNGJlMzViNTJmOTU1MmM4NiBsZWdhY3ktdHJ1bmsKKzMxOTYgZmJiODQwZjY0YmY4OTU2N2NhNmM5M2JjMGU1MGQ1ZWFlNWRmMWRmNSBsZWdhY3ktdHJ1bmsKKzMxOTcgYmJkMDE5OGVhZTViZjE4ZmFhYzI3NGM2N2UyNTM0Y2RkN2U4M2E0ZSBsZWdhY3ktdHJ1bmsKKzMxOTggNWZiM2Y3M2E2MjdmY2U1OWVkMGUxOGMzMGUxZWVhNmE3YWQ4ZmNkOCBsZWdhY3ktdHJ1bmsKKzMxOTkgYmZmZWZiZmNlYjYwNTQzYzM0OGE2ZmI5OTg0MWI4ZWUzYzlhN2QyNSBsZWdhY3ktdHJ1bmsKKzMyMDAgNTE2YjVhMTZhYzc3MThkNmUxN2RhMjFhMDZlZjM0M2QzYjU2OWY3OSBsZWdhY3ktdHJ1bmsKKzMyMDEgYjAwNDM4ZjI2NWVkOGY5NjIyZGFhZTNhNmUwYTMyYWFkNjYzNDkwNCBsZWdhY3ktdHJ1bmsKKzMyMDIgNmFhMGVlMTRhYzJlZDYwNmEwZThiYzhhNjQ2MDQ2OTgwYmI0NDlhMyBsZWdhY3ktdHJ1bmsKKzMyMDMgMGVlNTlhMTRlNTQyMWZjOWI0MzIyNDIwZTA3NTZhMTNhYjM1ZTcwOCBsZWdhY3ktdHJ1bmsKKzMyMDQgM2RhYzIwNGI3NGZhZmY5MzdmMTA1YzgyNDdjYzFlMzI4NWRlMWUwNSBsZWdhY3ktdHJ1bmsKKzMyMDUgNThmNzQ4ZjU4ZGY1ODRiYjI2OTZlNTk4ZmJjOTJjODFmNzdlYTQ4YyBsZWdhY3ktdHJ1bmsKKzMyMDYgOGYzYTI1NDA5OTVhMTVlMGUxN2RlODliNzczYzc5NzE2NzA0OTc5MiBsZWdhY3ktdHJ1bmsKKzMyMDcgYzcyZWUyOWNjY2QwMThmZDczNzJmNmJlNDEyNDg2OTI2M2MzNzE5ZSBsZWdhY3ktdHJ1bmsKKzMyMDggMTBmMTBkNDU0MmZhZWQ4NTQyZTZiNTZkZmE5MTgxYWVhNTJiNmNkMSBsZWdhY3ktdHJ1bmsKKzMyMDkgZDY4MDhlYzZlZGM3MzZlNjM0NTRjM2E1YjdjNzlmNjFkZGVlNThhMCBsZWdhY3ktdHJ1bmsKKzMyMTAgNmI1YTM0ZGIyMWZlMTczMzY4MmFlNDdmODI0YmY3M2NiOGU4MTRjNiBsZWdhY3ktdHJ1bmsKKzMyMTEgYzFlYmZkZTM0MWEzZWNjOWE5OTUwZWZkM2U2MjkzNzQ1NWM2NTM5ZiBsZWdhY3ktdHJ1bmsKKzMyMTIgMmVkNTExMTcxODA5ODM4MjdiMTkxMWNiODY0NDg4OTQ3MzNmODhlMSBsZWdhY3ktdHJ1bmsKKzMyMTMgZjQ5ZDIzMTE3NzZiYjkzZGM5ZDg1ZWNlOTk4OTI0OWZjNjE2YjI4ZiBsZWdhY3ktdHJ1bmsKKzMyMTQgZjU0ZTY0YzhiOWI3MGJiOWIwM2QzMGNmMjhhMWQ4MzQ1MjkzYWY2MyBsZWdhY3ktdHJ1bmsKKzMyMTUgNjUwOGVhMzJjNmIwOTk5OWZiNGIxZjM1Y2RmODdmZjkyNTI1NDI4ZCBsZWdhY3ktdHJ1bmsKKzMyMTYgYzk1NDZhMjExOGYwNGI2YjM2NTA3YmIzNTUzMWI0NjU3NjIxODc2OCBsZWdhY3ktdHJ1bmsKKzMyMTggMzE2Y2U2NzdjNmIyMGE0YzkwYTI4NmQ3OTAwM2NiMjI5N2ZkZjRhYiBsZWdhY3ktdHJ1bmsKKzMyMTkgNmFiMjA3YTU1ZmNhMzQ3N2Y0NjEwYmRjYWE5ODIyNzBhMGJiYWY5MiBsZWdhY3ktdHJ1bmsKKzMyMjAgOWJmNzVlNGQ5YWVjM2VhYjNkYmEwNTM1NjI4OWRkNDYwYTY4NTdhNSBsZWdhY3ktdHJ1bmsKKzMyMjEgZTY2NDJhNTM1ZGI1ZmMxNmMwYWZlOWIxNDY1OTYwNmMxNjhmOTA3NiBsZWdhY3ktdHJ1bmsKKzMyMjIgZmUxOTI2YjlkZmZhNzMxMjU0ODhkZWQxYzRmZGVkOThjZTliZGJjOCBsZWdhY3ktdHJ1bmsKKzMyMjMgNTkyYmFjNmFkZmZjMjU2NjYyYjQ5ZGFlYzQ4MWUxYjhiNWRiOWY3MSBsZWdhY3ktdHJ1bmsKKzMyMjQgNGY2NjQxZGVhNjQ1ODk3OGQwMjEwMThkZDJhMmI4ODk4N2UxNmZmOCBsZWdhY3ktdHJ1bmsKKzMyMjUgYTNmYTIyOTc3NWMxNmQzYTMyYjlmYjU1YTRmMTNkNDBkZGZkNTA4NyBsZWdhY3ktdHJ1bmsKKzMyMjYgMGRhMTZlODE0ODJjZjMzZDBjYTliOGE0OGQyMzZjNjc0MDZlMWM5YSBsZWdhY3ktdHJ1bmsKKzMyMjcgYWFhM2JjY2IxNDNhYWYxYjc3MTU1YzdhMTliNjJiYTJiMTU2N2RjOCBsZWdhY3ktdHJ1bmsKKzMyMjggNmJlOTcwMzljYzExZjYyNGEwYmEyY2E2NjNhM2ViYmExZmRhNWFmMyBsZWdhY3ktdHJ1bmsKKzMyMjkgYjVkOTVhY2ZkM2VlMzIzNTgzOWM3MTM2YjI3YmZjZjdiMWFlYzU5ZCBsZWdhY3ktdHJ1bmsKKzMyMzAgNjk2YjkxMzI3ZWEyMzhlNTEzMTRkNDAzYTFiMDIxYTMxYmMwZjYwOCBsZWdhY3ktdHJ1bmsKKzMyMzEgMzkzZDU0ZWNkNDNiNWI5NmQ0MWVhNDg0NmY4MDU2ZWEyNThhMjJmMyBsZWdhY3ktdHJ1bmsKKzMyMzIgNzE2MmY1YWM4OTlhYTkyYTY0YmM0OWI0NDVhZmQ3YzEyZDZjNTg4MSBsZWdhY3ktdHJ1bmsKKzMyMzMgMDAxNjQ1N2JkOTdhODVhNWE2YzVjMTEzODRmOGYzZmFmYmU1MzUwZiBsZWdhY3ktdHJ1bmsKKzMyMzQgMWE1NGQzMjBmMjk2NGFhNzg1YzIwZDdlM2RlMDJmOTI3YWFjYTY3ZCBsZWdhY3ktdHJ1bmsKKzMyMzUgMjI5MWRhMDVmMTc4NGJmYjg1MTRkZTU2YmQ5MzkxMDgzZDEyMGMwYyBsZWdhY3ktdHJ1bmsKKzMyMzYgNzY3ZWY3MzcwZDMzYzRkOTA5MzhjNTUwZDMzY2FkNTVlYjUyODQzOSBsZWdhY3ktdHJ1bmsKKzMyMzcgMmMwNDMyZmNjMjcwNzlkMDBlZWYyMDc2YzA1NjMyOTZkYjc5MzEwOSBsZWdhY3ktdHJ1bmsKKzMyMzggNGRjMzgyZmY2ZmM3NGQzNTBkNjBjNjExNGQ1ZTY2ODNiYThjMWExZSBsZWdhY3ktdHJ1bmsKKzMyMzkgOThjYjZhMTI1MmNiNjViMzNmY2Y4MjA4ZjA0MGIyMmJiZjYxMzEyZSBsZWdhY3ktdHJ1bmsKKzMyNDAgNmFjOTE2ZjhmODYyNjhkMDgwY2U1ZWMwMDkxZDUyZDhjOWFhNzNmYSBsZWdhY3ktdHJ1bmsKKzMyNDEgZmViNWIyMzRiMGI1ZmZiMjQzNjhiNzQyNmI0NzkyYjlmMjcxNGIwMSBsZWdhY3ktdHJ1bmsKKzMyNDIgMjQ1MDAzYzAwNmE2MzdmNGYxZDA4Y2YzOTc3ZWMxN2Q4MjYyMWU2ZiBsZWdhY3ktdHJ1bmsKKzMyNDMgZTRjNmEwZGQ1YzJiMjdhN2E1ZmU3ODUzMjY1ZWJjZDA1YjMwYWM1NiBsZWdhY3ktdHJ1bmsKKzMyNDQgNzY1N2E3NTA5NGYxYzIwODJhMTJlZDU2NTkzYTgzN2IzNmQwNWUxOCBsZWdhY3ktdHJ1bmsKKzMyNDUgMzFkZjU4ZmE5OGNjNTU5MWJjMWU2MjExMWMzMjBmYWMxMTE5NmNlMCBsZWdhY3ktdHJ1bmsKKzMyNDYgMDhkM2MzNzAxOTNkZjdmNjhkYmY0NmIzNTQyZmRmOGU0OGM5ZWRkNyBsZWdhY3ktdHJ1bmsKKzMyNDcgZjA4NmQ3YjQ5M2I0ZGZjZmExYzVhN2QwM2RjM2Q4MzdlNjIxNTliMCBsZWdhY3ktdHJ1bmsKKzMyNDggYjc1NWE0NjIwMWY2ZTc1Yzc4ZDRkZjhjYWM2MzA2NjIyYTg4Nzg5ZiBsZWdhY3ktdHJ1bmsKKzMyNDkgOTY1YWEzYjUzYTlkODZhNWEzY2M2YzZkMmU2ZDljZGYwODRlN2E2OCBsZWdhY3ktdHJ1bmsKKzMyNTAgZGI4MTdmM2ExYzY1NDQ4YTU1NWY2MjczYmFmODA0NGI0NDNmNzY4YyBsZWdhY3ktdHJ1bmsKKzMyNTEgYjllNGY3MzIxZTI4ZGNmYjM4MmNhMzM2ODAxY2JmMjQ0NDMwNDNhYyBsZWdhY3ktdHJ1bmsKKzMyNTIgMzU4MjQ4OTlhYWNmODIwYWU5MGM5YTFhNzg2ZTc5MjA5ZGRlMTk1NiBsZWdhY3ktdHJ1bmsKKzMyNTMgOGQ2MmM5MDU2ZmUxNTQ0NDMwNzZhYmM2YzVkNWE4MDc4Y2MwYTdkYSBsZWdhY3ktdHJ1bmsKKzMyNTQgYWI5MjY1MzRhMTUyNzQ5MDhlZTJhNTA5MzIxZmEwOTJjMGNmZmZkMCBsZWdhY3ktdHJ1bmsKKzMyNTUgNmQ1N2RjYjRmYWFkY2JlOTMzN2M5MTA5MzJhZjY5ZjhkOWRlZTlmYiBsZWdhY3ktdHJ1bmsKKzMyNTYgODJjNTVlYTkwNjllNWI1NDhiN2MxMzYwM2NmOTExZWU3YThlNjJkYiBsZWdhY3ktdHJ1bmsKKzMyNTcgYTQzNzZhOTk3ZmIxOGI5Yjk2ZTJiNTdhNzgxYjg0M2E3ZmEwMDBjZCBsZWdhY3ktdHJ1bmsKKzMyNTggZDJhZjZiZGNiNmQwYTI0NDM3NjcyYmZhNjM3MGUyYzcxNmVkZmJiMyBsZWdhY3ktdHJ1bmsKKzMyNTkgYWMwODI4ZWY2OGYyOWJiZDExNDI1ZTNjYTA3MjRhMzYyNmQyOGRmNiBsZWdhY3ktdHJ1bmsKKzMyNjAgY2U3MTg0NTdiMTcyNjU3NzExN2EwMDhlOGYwYzI1NmRjMjIyODBmYyBsZWdhY3ktdHJ1bmsKKzMyNjEgYzY0NGJjNjI2MDk4YWQ3YmYzM2E1ODIxZTc0NTVlNzRkYWY2MGE3YyBsZWdhY3ktdHJ1bmsKKzMyNjIgYzlkMmY2YmRhYTY5YmQ0ZjMyMzJmZThmZjVlNzUwMjA1NDhiOWVkMSBsZWdhY3ktdHJ1bmsKKzMyNjMgM2RkN2I4MjU1NjE5YWE4MjQ0ZGIzNmJjZDlmYWNjNjA1N2NmMWZjZSBsZWdhY3ktdHJ1bmsKKzMyNjQgZmYxODk5ZGNkYTA1OWRkY2IzMGZlY2NiNzAzNWIyZWVlZjliOTVhOCBsZWdhY3ktdHJ1bmsKKzMyNjUgYjc1N2U1OGJjNTI1YzM5ODRlNzc5NzYwOGEyOTgxNTY0MWE0OTNkZSBsZWdhY3ktdHJ1bmsKKzMyNjYgMzBjMjZjZjU0ODA0OTY3MzUyOGU0Y2Q2Mzg3ODkwOWFlYWIwYjMxOCBsZWdhY3ktdHJ1bmsKKzMyNjcgZmNhYWZkNWVjNjk1NjNjMGI3ZDA4MGZkNjdlMTdmZmI3OGQ5YmJkYiBsZWdhY3ktdHJ1bmsKKzMyNjggNDE1NGU5OGQxNDc4YjkyZGZjNDBkODc3NmNmMjFhZWY4NjRhZWRhYSBsZWdhY3ktdHJ1bmsKKzMyNjkgNmYyYTZlZmQwMTllNDVmODA3NTFjZTJiZDBkNzBkOGI0NTI5YTdkYiBsZWdhY3ktdHJ1bmsKKzMyNzAgOGVhNTQ2MDQ3ZjAxMTYzMDNhODU1ZjhlNzZkMDgwNTM2NGEzNmZmNiBsZWdhY3ktdHJ1bmsKKzMyNzEgOTFjMTg2YTIxNmU3MDk4YzgzM2UxMTQxZTI2MjIzNDQzNjZiMmNhNiBsZWdhY3ktdHJ1bmsKKzMyNzIgN2Y4ZGRjZTg4NDk2MWQ0YjkzNTI3MDE1MjBiZGQ3ZWY1ZjU2Y2Y1NyBsZWdhY3ktdHJ1bmsKKzMyNzMgZTJmODA3N2E5MjZlZWMyYjIyZGU3NGE4YzAyMTMzMjljNjBjMmEyNiBsZWdhY3ktdHJ1bmsKKzMyNzQgMWQwNmIxNDk5ZWI5MzJmMzdhMmQ0Zjg3MDBjMmRlODNiNWI5NmYzMCBsZWdhY3ktdHJ1bmsKKzMyNzUgZGU3MGQ3N2IzZWVkNzRlMGMxMGViYTI4NDVhYjU1OThiZjMwMzE3ZSBsZWdhY3ktdHJ1bmsKKzMyNzYgODM5OWU5YWEwM2U3ZmUyZTU2NzRhYTM3YmZiYzliZDU1MWQ2YmZhNiBsZWdhY3ktdHJ1bmsKKzMyNzcgNDZkMzFhNjQ5Y2U2NjczMWFjZjcxYTlmMzMwMTMzMWViMDZhMjI0NCBsZWdhY3ktdHJ1bmsKKzMyNzggYzBhZWQ1ZWUxMTBiYzdkM2IxZTE2OTlmMjBkZWI5NDA4N2FkMmE3NiBsZWdhY3ktdHJ1bmsKKzMyNzkgYzFlZTYwYmQ1ZGU0NWFhN2FmMDQ2ZmExZjk2MjFjMTEzZDI1NWNkMiBsZWdhY3ktdHJ1bmsKKzMyODAgYzI2ZjViZWMzNDM4YWQ5YWM5NjVlYWQzYzFjNzNmMzI3MzhlNzdjYyBsZWdhY3ktdHJ1bmsKKzMyODEgMWEwYmU2ZTM2ODE4Yjg5MTJhM2ZmYTQyODRjZmRkYjYxMTg4OTFhNyBsZWdhY3ktdHJ1bmsKKzMyODIgNTY2MzYzOTU3MjRkNDk0NDljZDEzZGY5NTU0OThjZGYzMWIyZGI2ZiBsZWdhY3ktdHJ1bmsKKzMyODMgZmY2ZTIxNzMwOTlhZTNjODVjZjgxZjIyYWZkMWUxYzIyYjM1NTgzOSBsZWdhY3ktdHJ1bmsKKzMyODQgNWU2NWIxMGRkMjRkMzljZDJhY2ZjZjc2YTc5ZDRmMWIxZWIyYTMzNCBsZWdhY3ktdHJ1bmsKKzMyODUgNzViNDcyYWM1YjdiZTMyZmQzNjcwYWU2MDNlM2IwOWE4YjZhMjU1OCBsZWdhY3ktdHJ1bmsKKzMyODYgOTRkMTIxMTY3NTZhYzc1YTkyODdlNTZjZWE1OWZiMjI1NGVkYjExZiBsZWdhY3ktdHJ1bmsKKzMyODcgMDkxNDc0YzA4MzFhN2EyNzJhMmE3NzMwYjk1ZmEwNjI5YWIzNGUzNiBsZWdhY3ktdHJ1bmsKKzMyODggZGQ3MGEzYWFkMjY2NWVhYmI1MmM4YTUzNmIwY2Q2OWM1MzViMmZiZCBsZWdhY3ktdHJ1bmsKKzMyODkgMGNjYjM1NmU4OGIxMjZmNTNkYzNjMGIzOGIwZGFhYzA2ZDBiZmVmOSBsZWdhY3ktdHJ1bmsKKzMyOTAgNDFmYmQ5MmJmMWFkODAxYTEwOWI3MjljMDlmZTcwZWM5NzFjODA3ZSBsZWdhY3ktdHJ1bmsKKzMyOTEgYTdiYTE5MTIwZjU0NzQ5ZjRmOTBiMjUxOTE1YmIyZGQ4N2NiNjk4YSBsZWdhY3ktdHJ1bmsKKzMyOTIgYWE5ZWQzYjllZGExY2EzNGFlNzE2YjUyMDUwYjBhOGM3MTcwZjFlZCBsZWdhY3ktdHJ1bmsKKzMyOTMgYjZjZGRmZDM0OGJhMWE1ODVhZTg3MzdkOTM0NDBlZjE0ZTU2ZWViNCBsZWdhY3ktdHJ1bmsKKzMyOTQgM2U5ZWM4NWFjNDliNmZmNTVhZjYwZDE4ODQ0Nzk5YTViNGI3NWEzZiBsZWdhY3ktdHJ1bmsKKzMyOTUgZTUzYmFmOWI0Yjk1NTFlNTU4OGMyZmFmNDg5MWI1NDNkYWZkYjY2NyBsZWdhY3ktdHJ1bmsKKzMyOTYgNjQ2MWRhYzlhOWYyOTc3N2IwZDdmNDhkYTllODg1YWQ4OWU1MGYyYSBsZWdhY3ktdHJ1bmsKKzMyOTcgOWFkZDBlM2U4MDRhMDU5ODdkNGI4YTY2NzEyOTI4OWI4ZDIxNDc5YSBsZWdhY3ktdHJ1bmsKKzMyOTggNTExMmQ0MzIxMjZiMTc1NzA0NzZmM2NlZTUzZWJjYmM1NjZlYTBkZSBsZWdhY3ktdHJ1bmsKKzMyOTkgNjIzMWUxYjViMjJiN2JlYWQyMDAxZGMyNzMzODhmZDFkNTJkYTVjZiBsZWdhY3ktdHJ1bmsKKzMzMDAgZTM5MzA5YjlhMGFhNmQxNjZiYzA5ZGQ5MjQ3NmU4YWRlMWJkYTNiOSBsZWdhY3ktdHJ1bmsKKzMzMDEgYjMzODI2MmNkMDgwN2M0NjQ0ZjhmMDkwNTZiODAxNGM5Mjc4MzllNCBsZWdhY3ktdHJ1bmsKKzMzMDIgOTUwZjAxMTMxNDAzZTE1OGUzNTQzMmJkODk1MTIwYmUzOGJjNGM1NiBsZWdhY3ktdHJ1bmsKKzMzMDMgZjQ5ZTg2MmZlZWM0ZDkxNzhkNDI0MmJlNTJjMDI2YThjNWJmZGMyOSBsZWdhY3ktdHJ1bmsKKzMzMDQgYmU4OTEyNTY0M2YyNWNmOTAxNjBhMjlmMTRhZmY2ZjViZWVhYmNmYyBsZWdhY3ktdHJ1bmsKKzMzMDUgNTRlYjJjZjI2OTdlNmU1MzRlNTI4MjZkMzViYTU5NGE4MzkwMWUzNiBsZWdhY3ktdHJ1bmsKKzMzMDYgZTA4NzcyMjZkNjEzOGUwZWQ0OTEzMGI0NzMyZTQzNmQzODQ2YmM5ZCBsZWdhY3ktdHJ1bmsKKzMzMDcgZTVjZTlkMDQwOGQwZTU2ZjdmNDE2ODdkNDg1MGFlZTZmMzY4ZWU2ZCBsZWdhY3ktdHJ1bmsKKzMzMDggZjIwZGUxMzIyNjkyMGQ5MzhhNzkxMTEwYTZmNDdjYzM0ZTY3MWM2OSBsZWdhY3ktdHJ1bmsKKzMzMDkgYmI3NjY1YzQ0ODIyNmZiOTgyMTJlYzU2ZGFhZDg4MGVkODkxMGYzYiBsZWdhY3ktdHJ1bmsKKzMzMTAgYTQxNjQ5M2QzYTRjMmYzYjI0NzFmYjBiOTBkODhkNmM2M2M5NzMwMiBsZWdhY3ktdHJ1bmsKKzMzMTEgM2M2YTUyZDI1NDNkYzJkMDUyYjA1Y2NkMWIzZDAyNzk2NTcxYzJjNSBsZWdhY3ktdHJ1bmsKKzMzMTIgZmE2MmZiMGU1NWIyZDg5YmZmZmY0NjgwNzI4YWFkM2MyOWQ1NjA0NSBsZWdhY3ktdHJ1bmsKKzMzMTMgYzcyZWNkYjMzYWY3NTc5MWJjNDk2YmViOGZjOTczYWRkNzBhYWZjZCBsZWdhY3ktdHJ1bmsKKzMzMTQgODQ2N2IxMTkzNTBiZWJjNjc4NGQ3Njk1NGZmNzI4N2Q2ZDhmZWFhNCBsZWdhY3ktdHJ1bmsKKzMzMTUgMTk0YWYwNGQzNDRiMDgwNmI5NGUwMTMyMmJiNmQwNmE2MDE0NWQyNiBsZWdhY3ktdHJ1bmsKKzMzMTYgNjVlNDE5OWE3OTgyZmIxOWFlMWVmMzJiNTdhYTE3ZGYzMTFhZTZhMiBsZWdhY3ktdHJ1bmsKKzMzMTcgZDQ0ODBjMDg0NDRkYzViNjM2NDZlZjA0ZDE4NDNkNmZjM2JjZjFkNCBsZWdhY3ktdHJ1bmsKKzMzMTggZTgyYWM0NTJkNTUxZGQ3Y2Y5NTIzYjdlMGNkMGEwYTMwYzg3NjJlOCBsZWdhY3ktdHJ1bmsKKzMzMTkgMjlkMmVmMGM5NGI5NTA0ZGE4ZjgwOTI1NjRjN2FiNmE5ODE4Mjg2NCBsZWdhY3ktdHJ1bmsKKzMzMjAgMjNlYjI3NzMxZDljYjMyYWQ5YTk0YjEyZWE2ODhlNDI0ZDc0ZmU5NSBsZWdhY3ktdHJ1bmsKKzMzMjEgZjBlYjc3YWJmMjQ0MzZiYmNkNzQ2YzkwMzM3MDY5NGQ3MjFhY2Y5YyBsZWdhY3ktdHJ1bmsKKzMzMjIgMTIwNTE4ZWYzNmUzM2E0N2MyOTRhYTllMTliNmY1ZmYwYjdkNjNiNyBsZWdhY3ktdHJ1bmsKKzMzMjMgZGVkZDQ0ZWI3MzViM2YxNjUxMmI0ZWNkZjY5M2VhYTgwZjZkNzlhZiBsZWdhY3ktdHJ1bmsKKzMzMjQgNTI0NDgyN2RkNDIzODE3YTgwYmE1NjI0MGI2ZTMxZWUxMTlkOGIzZCBsZWdhY3ktdHJ1bmsKKzMzMjUgOWI3ZjkwZjlmM2MxNTI5OTZlYmE2Y2U5NDBiMjNhYTc4MWNmYjkzZSBsZWdhY3ktdHJ1bmsKKzMzMjYgZmFjNjJiY2QzYmI4ZGUxY2NlM2Q2OWYzMWNlN2Y3OGEzZTNhMDY3MyBsZWdhY3ktdHJ1bmsKKzMzMjcgZWRkYzU0YjFkOWFiOGI2NzU5NzNjMDVmYzg0MzU2MTkwZjUzNGM0ZiBsZWdhY3ktdHJ1bmsKKzMzMjggZjA3ODRhZTFmZjVjYWNhZjg2NWRkNmYzYjE0ZTA1YzU1MmJlMDdlNyBsZWdhY3ktdHJ1bmsKKzMzMjkgZDk5MGMyYjhhMWU2ZDA5YjA0MDZkN2NiM2IzOTFkODlhZjYxYzlkYiBsZWdhY3ktdHJ1bmsKKzMzMzAgYTdjZjIwYzg0NWEzYTQ2ZTZjMzY1NTNiMTdmNTVjYzE1MTVlYzJmYyBsZWdhY3ktdHJ1bmsKKzMzMzEgYTQ3ZTBjOWJhYWQwMDgyNDljYjhkNWI3NmFlM2MxMDMyMzI5NzVlMiBsZWdhY3ktdHJ1bmsKKzMzMzIgYzAxYzk1ZWYxZmJkYTg4NGI0MDAyZjhhM2NiZTFjMWQzY2E2NDk5OCBsZWdhY3ktdHJ1bmsKKzMzMzMgNTc0NWU1NWYyZTI4MGYxMDk4NGJlODkyZjMxMjEwYjcxOWExZTk5ZCBsZWdhY3ktdHJ1bmsKKzMzMzQgYmI1NGZmNDEzNDhmODc5YmUxODNmMGE1ODVjZTdkYTg4NjI5NTllMSBsZWdhY3ktdHJ1bmsKKzMzMzUgOWMxYWU2MDdkMTM1MzgwNmVhYWJiN2NiMDE3Yzg2OTU3NWYyMmU3NCBsZWdhY3ktdHJ1bmsKKzMzMzYgZTcxYjY0N2ZhMzM1NmY1MGNmNGQyODU0ZDI2YTNkNWNlZGEzYWZjMiBsZWdhY3ktdHJ1bmsKKzMzMzcgOTU1MjEyZWQ1MmQzN2M3NDdmOTc2ZGUxNTcxNmMxMDk4YWJiNGQ0ZCBsZWdhY3ktdHJ1bmsKKzMzMzggODYwNGMzOTQ5ODA5ZDUxMzFmMmVkMzEwZDdlMDcxNWI0NDgzOGY0MSBsZWdhY3ktdHJ1bmsKKzMzMzkgNzE3ZWExNzY3NDMwYmFkYTgyMTkxMGYwMDhmMmYwYTcyYzY4ZDI3MSBsZWdhY3ktdHJ1bmsKKzMzNDAgMjcxNTRhMmI5MjQ0MDI3MDMwY2U4MzQ1ZWE4MzU1NGNmZGRhNmY1ZiBsZWdhY3ktdHJ1bmsKKzMzNDEgNTMzZTM2ZGUxZTRkZjYxOTVjNWZhNTdjZTVmNDg2YjliZWFlMTkzYyBsZWdhY3ktdHJ1bmsKKzMzNDIgZjliYmIwMTM4OGQ1YmYzY2I4ZTcxYWY0MTNkM2JhZWVjM2JjZWFkYyBsZWdhY3ktdHJ1bmsKKzMzNDMgOWFlNjVlZTA5NzM1ZDA3MjJhNjNkYjM4ODIyODJhZWQxOTcyYTM5NCBsZWdhY3ktdHJ1bmsKKzMzNDQgMWQ2Y2JlYjI3MDk2MjcyYTljZWQzODE1YWYxYTBjYjYxMTZkMjJkZiBsZWdhY3ktdHJ1bmsKKzMzNDUgOTUwY2QzN2ZjZGRjNTQ3N2RiY2IwOGNmMjI4YzdmODAwMTk5MWExZSBsZWdhY3ktdHJ1bmsKKzMzNDYgNjRjZjE5MWQyMWQwOGM5MzEyZjk0YTBlOGFmNTBkMWUzYzI3ZjAxNCBsZWdhY3ktdHJ1bmsKKzMzNDYgNjRjYzU0MzllMTBhNmZkZjk4NGVmZmFmMDE0MWU5NGZhNGNjMTAwNCBsZWdhY3ktdHJ1bmsKKzMzNDggY2Y4ZGRiMjllMjZlZGFmYWVhMGI1MGZiMmY4YjRhYjg1MjJlMTIzOSBsZWdhY3ktdHJ1bmsKKzMzNDkgMGVmZWY5Nzg1YTI1ZDdkOWFhZTI1ZWExMmEwMGFhODQxNmRhYzE5MSBsZWdhY3ktdHJ1bmsKKzMzNTAgOTQ3ZjhhMzQ3YzRmMTc4OWU4Yzg5MzdlMWQ1NWY0YTkzNzc4OTY1NSBsZWdhY3ktdHJ1bmsKKzMzNTEgNmEwNzdjMjkzOTg2YzBhZDc5NzFjYmY0Y2U2YzE4NDYwN2I4NmY2ZiBsZWdhY3ktdHJ1bmsKKzMzNTIgNTg0YzQxNDJjNTM3OWYzYTUzN2IyN2E5OTUzYzkwNjJlZjJjYWY1ZSBsZWdhY3ktdHJ1bmsKKzMzNTMgODQ3YzQ4MzU2MjhmYThmMTFiMzhmZDI4OWE3MTI5MjJlNDYwM2IzNyBsZWdhY3ktdHJ1bmsKKzMzNTQgZWE4ZDRjY2U3ODJiYmZhZGYwZTJjOTE1YzgyZGIyNjJmNDk3Y2ExZiBsZWdhY3ktdHJ1bmsKKzMzNTUgMzhmMDA1NGY0NGE3MWM2Zjc5MDFkNWJmMTA0NWU1MzQ5Y2U3MzQxNiBsZWdhY3ktdHJ1bmsKKzMzNTYgNzg0MjgyNDNmZWFhNzUyMDlkYTdmOTk2ZDgwNjg4YTVhODhkYTJmYyBsZWdhY3ktdHJ1bmsKKzMzNTcgYjdhZWU3OTlkYzcxNWFkMWI4NGZhZmFjMzVlYTc3NTVmOTA3N2IwMCBsZWdhY3ktdHJ1bmsKKzMzNTggMzEwNTMyMDE1YTdkMzU5YmZlNzc2MGE1NWFjNDM4YjRlZjEwODNiNCBsZWdhY3ktdHJ1bmsKKzMzNTkgZTEyMDkzNmEwYzg3Zjk1MTVjMTQwMThhYmJlNmVkMWExZDczNjFmMSBsZWdhY3ktdHJ1bmsKKzMzNjAgY2U2N2Q5MWFkZjVlN2UwNjVkYjM1YWEwZGZkYmQzNDU5MTI0ZmY3MyBsZWdhY3ktdHJ1bmsKKzMzNjEgNjc1YTAyODIwZDY2ZTE0MGUyYTU1ODNkZjYyOWU4MmFiZTc1NGY2NCBsZWdhY3ktdHJ1bmsKKzMzNjIgMjkzNzg5N2E3ZDhiMDM4NzkzNjA4NGY0MjRjNjlhYjVhMzEzYTI4ZiBsZWdhY3ktdHJ1bmsKKzMzNjMgNzE4ZjFkOWJjYjUwNGYyNTVjZjczNjgxOTcxMzVhOGFkZmQ0OTQ5NSBsZWdhY3ktdHJ1bmsKKzMzNjQgZTgyMjNkMGI3MmFjNTE5NjBiZjA5MzFlOTZjMDJhYzU3MWMxZDdiNSBsZWdhY3ktdHJ1bmsKKzMzNjUgMGQ3OTlkM2M0MDM2ZTdmOGIxNjk1MDM3YTNlNzI4MjcxNjViYjVjZiBsZWdhY3ktdHJ1bmsKKzMzNjYgZDAyMjIxZWJhYzJhZDdjOGIwOTE4ZDc5NjU4YWFkZGY2NWRlZDIxYiBsZWdhY3ktdHJ1bmsKKzMzNjcgODMxZDgyYWE0ZGQwODE4OWExOGYwMjAxMzc5NWU4YzNkMjViMTk0MSBsZWdhY3ktdHJ1bmsKKzMzNjggMzU3M2VmNDIxYmY0MTEwN2JmNzE5OWU1ZWFmMWIxYjQ5YzNjMTg4ZSBsZWdhY3ktdHJ1bmsKKzMzNjkgZWNmYmMyNDZlZWFhMTBjNDgzNDM1YzdiZDIyZjY4MDFiNjM1MTZhMiBsZWdhY3ktdHJ1bmsKKzMzNzAgM2QxZjcwODc5ZjAzMDQxNGJhZGQ5ODlkMjA1NWQyNTVjZTNhMDljMCBsZWdhY3ktdHJ1bmsKKzMzNzEgYjU2NGJkNGU1N2UxMzUzNDQ5NzAxOTU1NjE1OWQ1ZjQ3Y2JiNjk4OSBsZWdhY3ktdHJ1bmsKKzMzNzIgOWIxNGE0ZDg5MjA3M2M2MDg5ZDgyZWI5ZGNiZjQzOGM5MGViOGJjYyBsZWdhY3ktdHJ1bmsKKzMzNzMgOWZlNzgzY2E5NzZlMmY5MWFmZTc2MDYyMWM5OWY0MmM4OGVkM2E1YyBsZWdhY3ktdHJ1bmsKKzMzNzQgYmJlZjI0NzNlNTY4ZDI5Mjg3MTgxMGVjNTZiZjQzNTdjZmQwN2FmNCBsZWdhY3ktdHJ1bmsKKzMzNzUgNDA2ODYwZGZhYWM3OGI2MDgxNGE4ZTc2MjIxY2FhZWIwNmZjZmZiMSBsZWdhY3ktdHJ1bmsKKzMzNzYgNWE0MTA5NDQxZWFlMDA5NTEyNThiYzhhYzYwMTY5MmVhYmZiMDgxZCBsZWdhY3ktdHJ1bmsKKzMzNzcgZmE2Y2U3ZjUzYWE1MDE4YTkwZTkwNmZhYjI2ZGRiZjQ0NzBhOGE2ZiBsZWdhY3ktdHJ1bmsKKzMzNzggNDE2YThhODg2YTgyYWEyZDNmNTZlYTljZTVjMjM5ODRkNzljMDM4ZCBsZWdhY3ktdHJ1bmsKKzMzNzkgOWQ2Y2Y1MjliYjcxYTdmNGZlOTk3NTlkZDY3NzcwZmZjMDU1NWJiZCBsZWdhY3ktdHJ1bmsKKzMzODAgNDkyZjVlM2U2NDk1NTU4ZDU4YzhiOTZmZDVkODBjMzY3Y2E5ODEzYiBsZWdhY3ktdHJ1bmsKKzMzODEgMWQ3YTRlZDBjOTg1ZjVlZjgyMjM0YmY1ZmZjOTg0NTk4YzQwYjdmYyBsZWdhY3ktdHJ1bmsKKzMzODIgNTEyMjNjZTk1YTYxOTg2NjFjOWEyODMzMjA4Mzg0Yzk2OWMxMmVhNCBsZWdhY3ktdHJ1bmsKKzMzODMgNjRlYzdiZDJlODM3MzdhNzNmYzg4YjhiMzAzMTE5ZTBkYmM4MTBjMiBsZWdhY3ktdHJ1bmsKKzMzODQgODJmNGE2YTE5NjRkZWY2MWVkMDI0MTY3NTliMTIyN2Y0NDcxZWJmMiBsZWdhY3ktdHJ1bmsKKzMzODUgYWQ2ZDVjMWVmNWU2MWEyOTAwNmViNThmZmMyODg4MjBlZjE0YjMyYiBsZWdhY3ktdHJ1bmsKKzMzODYgY2U3YWU4ZjgxYjA2MTgyNDQxMzM4ZmI5MDY1ZWQ1YzMyZGE3MTdiNiBsZWdhY3ktdHJ1bmsKKzMzODcgNWFlNGE4Y2Y3OWVmMzNlYjVjMjk5NzMzZTM2OTA4MDM3ODZjMDRkNCBsZWdhY3ktdHJ1bmsKKzMzODggN2UyNzY1OWViMmQ5NjY5ODFiOWI5MmZlN2VhNzY5MzI3NjI5MDU0OCBsZWdhY3ktdHJ1bmsKKzMzODkgMjc1M2UyYzlhYTIxYzliNmFhODRlOTA1NjkyYjkwNmU5ZGQxYmQxZiBsZWdhY3ktdHJ1bmsKKzMzOTAgMDY1OWI2M2Q2MDQ0N2Q2MzM2ZWVkMmNhNjk5NDEzNzcyMmQwZmRkZSBsZWdhY3ktdHJ1bmsKKzMzOTEgMjAyNmVjMDBlZmRjZjQwYzc1Y2MwMzU5YzNjYWJmYjNiMmEzZGYyYiBsZWdhY3ktdHJ1bmsKKzMzOTIgZjAxOGQxZDBlOTFhNWRmNzdiNDE5OTIzZTllNzdlMmQwMDJiMTM3ZiBsZWdhY3ktdHJ1bmsKKzMzOTMgZGNlN2E0Y2JhYzExMmZlZTU4OWEyODgzN2MzMjI2MjJiNzZiOGNmYyBsZWdhY3ktdHJ1bmsKKzMzOTQgZTBmN2ZmODVmYTA2NTM4Mzc3MTQ0NWNkM2IxMGQ0ZWFmZmQ3NzFhZCBsZWdhY3ktdHJ1bmsKKzMzOTUgMjY4OGY5YmViZDlhNWE1Y2FhNmI1NDc1NWM5YzdlNGQ5YjZiNTYzYSBsZWdhY3ktdHJ1bmsKKzMzOTYgYWZjYmE4OGM2YWNiNzdkZWZkOGQ5Yjg3YzRhZmQwMmVhODkzODg5ZSBsZWdhY3ktdHJ1bmsKKzMzOTcgYjNlNmE0MzVjNDhmZTI3YmRjZmU4Yzk1NmJhNzBjZWZmNDAyNjgwYyBsZWdhY3ktdHJ1bmsKKzMzOTggNTg2YzkyOGM2NWQzNGRlOGI5N2U5MzAzNzBhMjViMTZjMGNmNzU3OCBsZWdhY3ktdHJ1bmsKKzMzOTkgODdlZDAwYTYyZDMxMDEzODUzYzVmM2QzMDgwNGQ2MzliOWY2ZTk3MiBsZWdhY3ktdHJ1bmsKKzM0MDAgNjgwNDA2YzQxNTM5MTZlYmI0ZDJiYjFmNDNiZTk4NzM4ZTY4OGUwZSBsZWdhY3ktdHJ1bmsKKzM0MDEgMDU1ODBlMDBmNDFlMmM3NWQ3OWNmZTY3MDRlOTZiNmQwODE1ZTcwZCBsZWdhY3ktdHJ1bmsKKzM0MDIgZDQyNmM1ZDU5MjU0YTUwMTY0ZDc5NzgyZjUzNWQ0MWU1MzQ1OWVhZiBsZWdhY3ktdHJ1bmsKKzM0MDMgMGM2NTdkYjI3ZGJmNjRmOWY4ODg0ZTcwZmI4MzdmMjMzNmEzYzMwOSBsZWdhY3ktdHJ1bmsKKzM0MDQgZTYwMzRlZGM0N2FlNWMyZWQ3NWEyN2UzYzU4ZjU2OTBkMWQ2YjMyMSB1bmxhYmVsZWQtMS45LjIKKzM0MDUgNWI4ZWM4ZjcxMWNlZjEwNzA4MWNjZmJjNDQyZjQ1NjVjMGIwZGQ4NiBsZWdhY3ktdHJ1bmsKKzM0MDYgYTc1OTNiYTk5ZGNiYWJkZTI0MTYwZTVhMmY1ZTcwYjg2YmU3ZmQ3ZCBsZWdhY3ktdHJ1bmsKKzM0MDcgZTU1NzI0ZmJjMmFmN2IwZTExNjcxNTM5M2Q1NjMzMmM4OGVkMzM4YSBsZWdhY3ktdHJ1bmsKKzM0MDggOGYyNDZjODlkZGNlYjk3ZWU3N2ZlNmVmYjkwYzliNzc2NDJmNzhmNyBsZWdhY3ktdHJ1bmsKKzM0MDkgOTFhNzcwODdlODNmMjFjNGU1MmNjYTY4NzM0OTU1MTg3ZjUwODU1YyBsZWdhY3ktdHJ1bmsKKzM0MTAgMWE2YmEyM2FlNDQ3YWNhZTBhNWRhOTQzOTBjZTdjYWI5NDk4MzgwYyBsZWdhY3ktdHJ1bmsKKzM0MTEgOTExYjgwMTdkYTQ2YjYzMjhmMjdjNTZkZmYxYjNhMzYxYTU2MTUzMiBsZWdhY3ktdHJ1bmsKKzM0MTIgNmIzYjc1ZjA3Y2JiN2I4MjZlMGI2MTczY2RjNGZlOWNlOTA5MjcwMyBsZWdhY3ktdHJ1bmsKKzM0MTMgNzhjYjBhY2NmYjBjZWYyOWZmYTAwN2ZjOTQzOGViYTk0NzljNjg2ZCBsZWdhY3ktdHJ1bmsKKzM0MTQgOTFjMWY5NGIxN2JjMTE3YTgxYmZmNmIxMjYzZTRjMTdiYzUxZWY3OCBsZWdhY3ktdHJ1bmsKKzM0MTUgNDlhN2EzYzNkODUwODljZjA4OTQyOGU1OTZlNTZlNWEzYmVkNGJmMCBsZWdhY3ktdHJ1bmsKKzM0MTYgY2ExNzI4YzRiZDc4ODQ2ZjYyZGY3ODA3MmE2NzA3ODM2OTNiZmY0ZSBsZWdhY3ktdHJ1bmsKKzM0MTcgYzRjZDBkOWQ4MjgxZGI1MzA5NjUwMDA3MmJhMDQ3YTFkN2U4YjQ0YSBsZWdhY3ktdHJ1bmsKKzM0MTggNjg1YjMxZmU4OWM2MGQwMjRhOGRhMDNjZmFlNGY1ZGE4MTAwYjcxOSBsZWdhY3ktdHJ1bmsKKzM0MTkgYmJjZWMyNGIyNDM3NzZkOWJhNDIzOTBiNzRkMTE0MTRjMTdiZjMzZiBsZWdhY3ktdHJ1bmsKKzM0MjAgNDk2MzAxMjNhM2YzNDAzN2U4YmJmYTMxY2Y1ZDdkZDliZmJiMjU4MyBsZWdhY3ktdHJ1bmsKKzM0MjEgN2FhOTYxM2ZmZDM2MzEzNjIwZTlkMDFkMmI5ZGYyMDU2NjllMGZlZiBsZWdhY3ktdHJ1bmsKKzM0MjIgMWNhYmMyYjZjOTcwMWFlYTI5YmI1MDZiNTkzOTQ2ZTY3YmY3NTkzYSBsZWdhY3ktdHJ1bmsKKzM0MjMgNmI4Njg4ZTZhN2VkNmVjNWY2MzcyMzY5Y2JiNzY0NzNmYzFiNzUzMyB1bmxhYmVsZWQtMi4zLjIKKzM0MjQgNmQ4MGUxZjhmNzBhNTgwYjc4OTA3YWZmYTQ1NGZlNTE3NjBiYTAyMyBsZWdhY3ktdHJ1bmsKKzM0MjUgNDVkNzA4NTIxMTg4MTk1OWNhYTU2Y2YyNjUzMDAxYjIzZTFiZjMyMCBsZWdhY3ktdHJ1bmsKKzM0MjYgYjEyMGNkZDMwZmJjYTU5MWE0NDczYmQxMWRjMGUyOWJlZTEzMTdhYyBsZWdhY3ktdHJ1bmsKKzM0MjcgMmM1MTVmMDczNjdhZDQxNDdlMWFhMzliYmUzN2VkMTNjMWUyMTZjZiBsZWdhY3ktdHJ1bmsKKzM0MjggZjgyMGU2OTE3ZjA3ZTUwMTJiZGQxMDNlZjk3Mzg5MzE4ZDVhMTBmOCBsZWdhY3ktdHJ1bmsKKzM0MjkgNjVhMWU0ZTljZDU0NmM0ZTU3ODczMGE4OGRkYWYyMzRiZTRkNDA0MiBsZWdhY3ktdHJ1bmsKKzM0MzAgNmM1OGRjMWQyZjlkMjA4YTkxMDZkNDQ0OGMyOWE5YTZiNmMzMzgxNCBsZWdhY3ktdHJ1bmsKKzM0MzEgMTgxMWU5NjA4MGQ0NDIyZGVlYjE5ZjkxOWRlZWJjN2I2ZDNmNGJlMCBsZWdhY3ktdHJ1bmsKKzM0MzIgODllNGIxNjY2MTc4OWNiMzY4ZTQ4ZTNkZTkxMTg2OWUzOTRmZTEwMiBsZWdhY3ktdHJ1bmsKKzM0MzMgZDAyY2UzMGQ3ZGRiYzg3YmRlNjMzMjA5ZmRhZmNiMTJiZmFlMjhiNyBsZWdhY3ktdHJ1bmsKKzM0MzQgZjVmNzNjOTQ2M2E4NmQyNjc5YTY2OTI0NzJhN2FiZDdlMjdhNjBjZiBsZWdhY3ktdHJ1bmsKKzM0MzUgMjg5NDgxODFmYjJmNzk1ZjhlZmZhNTYxNDQ4NjM2YWI3MDE0NDVlYyBsZWdhY3ktdHJ1bmsKKzM0MzYgMTQzNjlhNWU2MTY3OTM2NGRlZWFlOWE5YTBkZWVkYmQ1OTNhNzJlMCBsZWdhY3ktdHJ1bmsKKzM0MzcgMjkxOWI0NDhlMzg1OGExMDhlNzRiOTYyYjc0ODA5ZTE3NjJhZjViYyBsZWdhY3ktdHJ1bmsKKzM0MzggN2I3NDExZjliMTE2ZjAwYzIzNGEzMjg2ZTI2ZjNjZmE2NmEwZGY3MSBsZWdhY3ktdHJ1bmsKKzM0MzkgNjlhMDY2YjZiMWZmNGFmNTExNjI2NWQ2OWE0MTNkMWJmYzNhZGM4OCBsZWdhY3ktdHJ1bmsKKzM0NDAgMmM3NDk2MGQ2YWZlZjEzNmY5YThiNDExN2Y1ZTBhYzViY2U0YzdjZSBsZWdhY3ktdHJ1bmsKKzM0NDEgYmNhNzFmMmUyY2I0ZWU2NjQ2MThkMDUwYzE3ZmZkN2YyODAxNmEzOSBsZWdhY3ktdHJ1bmsKKzM0NDIgZjc2YjdiYTk5ZDNlZmI1MTUyMzdlZDc0N2JjY2I4ZGU3NDQ0MmU1OSBsZWdhY3ktdHJ1bmsKKzM0NDMgODcxNDZkYzFmNzljNWI3Y2U5ODBhZjhhZjcyYmFjMWRjY2ZjYjlmMCBsZWdhY3ktdHJ1bmsKKzM0NDQgM2NhNDU2ZjQ0YmYzZWYzNmE5NzRkZDc1ZThhZGRiOWM3YjViNzRlNSBsZWdhY3ktdHJ1bmsKKzM0NDUgOWU0MjA2ZjY0ZDFiNTE0N2ZkMDdlMzI3MTI2YjZjMmJiZTY4OWUxZiBsZWdhY3ktdHJ1bmsKKzM0NDYgYWYyN2E4MzAwZDI0MDk0YWFmYTZlZTc0NmRlNTU2N2JhOWJjYzQ0NyBsZWdhY3ktdHJ1bmsKKzM0NDcgYzYwY2IwNTljNDgxZTRhOTRkNTk0NjQ2OWQ0MjlhMjlhYWZmOGI1ZCBsZWdhY3ktdHJ1bmsKKzM0NDggZTA0NjRlNzExNWNhMmJmOWM4MGM5NWY0NDZhNmQ2NGRmZjI4M2YwMiBsZWdhY3ktdHJ1bmsKKzM0NDkgOTE4MWRhNDA2OTc4YzgxZGVkMTkwMmI5NGEwY2Q5NjJhZDMxOTBiOSBsZWdhY3ktdHJ1bmsKKzM0NTAgZGJjZTcyYWZlMjYxNTE2ZDM1NjNjZDE3MjBmYWMyMzY5NjhkY2E3MyBsZWdhY3ktdHJ1bmsKKzM0NTEgNmQ3ZmRlYzlkNDllMjg0M2I0N2FlNjM0NTBkNjA5ZjM0MzU3NDY1OSBsZWdhY3ktdHJ1bmsKKzM0NTIgMzNmM2Q3ZWJmY2MxYjAxZTcxNjliNzYzMGFlZGQ1NzZhOGM2N2FkNiBsZWdhY3ktdHJ1bmsKKzM0NTMgNjczZGQ5YmJkYmYxNTExYWU5MDA5MjcwMWFkZjkyMGE3NjNhMjYzMCBsZWdhY3ktdHJ1bmsKKzM0NTQgOWZlZDU3MjZhMzZkN2NlMTM1NWMzMDU5MjgzOGQ5MzMyMWQ1ODBlZSBsZWdhY3ktdHJ1bmsKKzM0NTUgNGQyOTJjNzg1N2Q0NzRmYWU1ZWM5MDllZGQ0MzRiY2VkMDhiODM2NCBsZWdhY3ktdHJ1bmsKKzM0NTYgNzk3MWZlY2JmMjhlN2UxZTA5OGE3OTc5NjRhNmRjMDAzZjllYzQ4NiBsZWdhY3ktdHJ1bmsKKzM0NTcgNTE3ZDI5ZWJjODQwZGU0NWIzYzk0NTYwOTNkODQyYTFiMzFjMTNiYiBsZWdhY3ktdHJ1bmsKKzM0NTggNTdiODBiOThiOGU1MDc1MmNhNDU3NzA0M2Q4NDdhY2RjZWE5MDk1ZiBsZWdhY3ktdHJ1bmsKKzM0NTkgYWMzYzgwYWJiZjQzMDAzNDljNWU2ZTMzODUzMGIyOWFlMGZhMzYwNCBsZWdhY3ktdHJ1bmsKKzM0NjAgNjcyNjFjNzkyZjRjMTRmYmNiMTNmZmIwYjUxYTgzNmMyYWQ1MTMwYSBsZWdhY3ktdHJ1bmsKKzM0NjEgNDc3M2Q1YzNiNWE0NmRlMGY2Y2ZkYmM2YzAzYzE0ZDI3ZTk0ODg1YiBsZWdhY3ktdHJ1bmsKKzM0NjIgYzNkMDlmNzZkNmJmNDM4ZjljN2IxM2ZjNmIxMTZmMGJkNWVmODM5MSBsZWdhY3ktdHJ1bmsKKzM0NjMgOTIzNGM5NjFlYzQzY2EyODU3ZTM4MTAzMjY3MGRlOTQ1MmE1Yzk4NCBsZWdhY3ktdHJ1bmsKKzM0NjQgZGVhNzQ0MmM1Zjg3YzZlMWQwYTA5YWVmNWIxYjNlYWE4NzI4ODQ3NCBsZWdhY3ktdHJ1bmsKKzM0NjUgMDRhN2Y5YmYxZTY3MmM0ZjdkZTUyN2U4ODkwNDVlNjMzZDBkMDdhYiBsZWdhY3ktdHJ1bmsKKzM0NjYgYzY0YWY1NjcxY2M2OTVlNjJiMzY0ZDQzMjAyMjFmOWE4ZDhmNmU1NCBsZWdhY3ktdHJ1bmsKKzM0NjcgMzljNzY2YTZlZDVmOWRhYjIyOTY0ZTkxZDEyNTA3OGQ4MGY0NTk0YSBsZWdhY3ktdHJ1bmsKKzM0NjggY2VmNTE0Zjk5NzRjOTgzYmRmYWYxZTZmZjYyNjU1YmM2OTlkNDExZiBsZWdhY3ktdHJ1bmsKKzM0NjkgYmNhNzg1NWQ4ZTA5M2YwOWY1NWNiMGEwZjJiOTEwYWI2N2ZlMzJlNCBsZWdhY3ktdHJ1bmsKKzM0NzAgMjA5MDU1ZTVlNDZhNDBkMjI2Y2ZmNWM0NjIzNmM4MDVjOTEyNjdmNCBsZWdhY3ktdHJ1bmsKKzM0NzEgNmUzN2FmM2YyNjFjMzliOTJmZTcyMWRhYjQ0MjBiOWM5NzQxZjUxYyBsZWdhY3ktdHJ1bmsKKzM0NzIgOTlkOWU3ZTlmMzc2N2U4OTE0MDBiZDM4YjA0YmUxNTVkYThiMjUyYyBsZWdhY3ktdHJ1bmsKKzM0NzMgY2ZmN2M0OGZhOWUxNWNlYzY4MDU5YTc1OTA3YWJiNDQyZWViM2Y1YiBsZWdhY3ktdHJ1bmsKKzM0NzQgMWU4YmQzNTRiNjc2MTEyZDhiM2E4NGI4NzJkNzI3ZDlhYTYzZTA0ZSBsZWdhY3ktdHJ1bmsKKzM0NzUgMDJjMDNhZmM1MTNlOTVmMzE3OGU5NzdlZTIwZjM2NTgxMDgzOGM3OSBsZWdhY3ktdHJ1bmsKKzM0NzYgNzQ3Y2U3ZTM2MDg0NGEzM2VjMWIyYWViYmU4OGJhNjU0MGUwZjJhZCBsZWdhY3ktdHJ1bmsKKzM0NzcgMDgzMGNmMmJlMWQyYzU5MjdjYzMzYWU0MmRmOGRjNmQ5NzZlOTc2OCBsZWdhY3ktdHJ1bmsKKzM0NzggMmY2OTFkYzU0YmZhNmE4ODU1YTY0Mjk0NGVlZDc0OGM2MjllYThkMyBsZWdhY3ktdHJ1bmsKKzM0NzkgNmVlMzgwMzQ5Yzg0OTAyMzI5NzdkNTFiZTI5ODRmYzU2NzQzZDExMCBsZWdhY3ktdHJ1bmsKKzM0ODAgOTE4YmVlOTBmNzNlMTUyMmUxNzY2NDE5ODQ5MTVhODJmZmRhMWZiOCBsZWdhY3ktdHJ1bmsKKzM0ODEgYWNkYzBiOWE2Yzc4NDhhNjkzN2FiNzljZmY0ZDkwYTU1OGRkODljNSBsZWdhY3ktdHJ1bmsKKzM0ODIgMmYzZjI5M2VmNWYxNTU5NzY5MDA3MGNkZTk1MTFlOTQ4OGI3ZGU1MSBsZWdhY3ktdHJ1bmsKKzM0ODMgZWMzMTJiNjQ3ZmNiZmE4OThmZGRhOTc0OTRiNzYzY2M4Y2Q2YmMzMCBsZWdhY3ktdHJ1bmsKKzM0ODQgOTJlNmE4Y2YxNGJlZTY1NTY1ZWY4YWQ2ZTliYjE5ZmQ4NzhkOTM1MSBsZWdhY3ktdHJ1bmsKKzM0ODUgY2QzOTcyNjZkYzFjOGUxZTE4ZDAyZjhkOWZlOTM0MjU3ZWIzNjA5ZCBsZWdhY3ktdHJ1bmsKKzM0ODYgNzg3NDJiM2ZkZDQ0YmE5MGUyN2MzZTllMWFjOWU0ZmJjMjk2MTUzZCB1bmxhYmVsZWQtMi4xNi4yCiszNDg3IDkwN2MzOTk2YjE1YzJjODU1NGIwNDIxYzNjMTllNjliZWZlMjU0OGQgbGVnYWN5LXRydW5rCiszNDg4IGE4MDY3Nzc5OGY4NDIwNGIxZjgzNTYwY2YxMDhlNjE0YmFiOTg1YTggbGVnYWN5LXRydW5rCiszNDg5IGYzYzkwN2VmZTVkNzEwMjAyYmU2OGY2ZGQ0NWE1OGEyYjgzMjZhODYgbGVnYWN5LXRydW5rCiszNDkwIGZlNzY1ODVjNzQ4ZThlYTNkODJkYTg2NmNlNmI2ZTJhMDYxOTYzYzYgbGVnYWN5LXRydW5rCiszNDkxIDcxNmJlNzY1YTc5YjJiYzZkMzJkNjEzZWUzOTA5NzE1MGE3YmM2YmQgbGVnYWN5LXRydW5rCiszNDkyIDI1ZDFjOTkzMjU1ODIyYTA3Mzc2YTRiNjcyMmI2YmU4NjU2MjA4YmYgbGVnYWN5LXRydW5rCiszNDkzIGU1ZDM2MzU0MDE3OWY5ZTZjOTdmMWE4ZWVmMWMxZDI4YWU3Nzg5NTYgbGVnYWN5LXRydW5rCiszNDk0IDhhMzU3NGEwN2IxODVkNWJjMmNkMGQzOTkzOThjZWFjZTc0Y2JhNGUgbGVnYWN5LXRydW5rCiszNDk1IGUyZGVjYTk4MzAwODJiNzAzOWNkODRiNTdjODAxYzE0YzlkYTNkYzggbGVnYWN5LXRydW5rCiszNDk2IDUxOWMyNTAzOWM2YTQ1ODhhN2RkZWNmMmFhYTBhZTM4ZTRlODMwZDggbGVnYWN5LXRydW5rCiszNDk3IDQwOWVhNzRmZWIyMTdjMjRjOTQ0YzczYzQxOWZkMzYzYTI1Y2EyNzYgbGVnYWN5LXRydW5rCiszNDk4IDA3OTAwODM0Y2M5N2QxYjhkZjFjMzdhNzgxZmM0YzFjOWI4MjUyNWMgbGVnYWN5LXRydW5rCiszNDk5IGU1ZmI5Y2RiZTA1MDdiYjMxZjQ2M2JlMmM0YTEwNjQyNDZhMzdlYmYgbGVnYWN5LXRydW5rCiszNDk5IDc4YTdlZDY5NTMwMjVlN2VjZGRlOTU4NTA5OWIwMWE2YWU0MGI3NmEgbGVnYWN5LXRydW5rCiszNTAxIGYzODQ4Zjc0YjI4Mjc5OWYzNGEwMzhkMWEyOGRjYTg4YzdjZTY4OGUgbGVnYWN5LXRydW5rCiszNTAyIDQxOTJlMjRlYzU2MmQxZTA5YjM4OGNlZTcyYjgxYjIwN2NkZjgzOWQgbGVnYWN5LXRydW5rCiszNTAzIGM0NDU0NWU1OTVhMTVjYzBiMjE4NjEzYmNkMWVhMmRkYjBmM2Q0M2YgbGVnYWN5LXRydW5rCiszNTA0IGY4ZjY0Y2JkOWZiNWExOWJiMDA2NTFiOWY1NDc0ODNhYWI5MjljNjMgbGVnYWN5LXRydW5rCiszNTA1IGFhYjMwYjc0Y2Y2YThkZjI3NjExMWQ3Nzk0ZTQzNzQ0NTkyZDUxOTcgbGVnYWN5LXRydW5rCiszNTA2IGQyMDdiZWVkYzg2ZDY4YmJmM2Q5ZWQ5YWMyZTZkNDI2YjM0OTJlYzMgbGVnYWN5LXRydW5rCiszNTA3IDY2ODg1M2Q3YjY0YmNiYTQ0MDk5NjQ5ODMyYmMxYjA4MWFhN2ViODggbGVnYWN5LXRydW5rCiszNTA4IDEzZDBmZGU0ODgzMjYzYmM2ZDUyNWFjNjM2ODlhNTU4YmYyMDYzMDMgbGVnYWN5LXRydW5rCiszNTA5IGYzNzkxYzRmYjcyNDdiMDhlZDYxNjFiZGI1OGE5NjhkZGMwNmQxMWMgbGVnYWN5LXRydW5rCiszNTEwIGQwYTVjMzAwZWFhZjVlYzNjMTAxZTg5ZmYzMTI3MTRhNGMxM2JkMDYgbGVnYWN5LXRydW5rCiszNTExIDI3OThkODYwM2JmMDI4NzNkZTgwNTBlYWM1YzhkMjczNDBlOWVmMDUgbGVnYWN5LXRydW5rCiszNTEyIGY0MTQzM2M5OGM1ZWIwMmU4OGNhZTk5OThkOTNjMmI4N2M5Mzk0YzcgbGVnYWN5LXRydW5rCiszNTEzIDVkMGIyNzgxZTIzYjQwYWY1N2FjODEyYzVlNWIyZjRjNGFkOTRmMjAgbGVnYWN5LXRydW5rCiszNTE0IGEyMmEzNTBkM2E1ZGQzY2QwMjRkNjhjYWNkMjVmM2I5MTZjODViYmEgbGVnYWN5LXRydW5rCiszNTE1IDVlZmE3NmNhMTdmMmVkMTI4YzY4MjMzMjcwNThjOGEzN2I5YzQ0MzUgbGVnYWN5LXRydW5rCiszNTE2IGEzYTAyN2M0OWViMTNjMDY4MGUzM2YxMTdiMWU1ZDgzMjRkYzQyMzUgbGVnYWN5LXRydW5rCiszNTE3IGQ5Y2I1NWVmMzRlMmU1MDRiMTBmZWEwZDg0MTc5MjA1ZDc4OTAyZTggbGVnYWN5LXRydW5rCiszNTE4IGUxNDljNzdkMTczY2FhZGMwMmRmYjdiNWY1NDdiMjRiNzI0ZjkyZTYgbGVnYWN5LXRydW5rCiszNTE5IDRkMWExNWZjNDc0OGQ2ZDkwZDRjZWJlNTYyMTBhZjRjNDhjYmE5MGIgbGVnYWN5LXRydW5rCiszNTIwIGE2MzU1YzgzNTc4ZDhkM2U4ZWY5OGU0OWUwOGU2MWZhOTU2Yjk0NGYgbGVnYWN5LXRydW5rCiszNTIxIGZjY2Q0MTVlMmViOGNkMGFhNWMxYWEzZmMxODZlMWNmYTM3ODg5NWEgbGVnYWN5LXRydW5rCiszNTIyIDJiNTRjY2M4NTJlNDA0YTQxNzJiYzdlZWNjODhlZTEwMDk1YTliOWEgbGVnYWN5LXRydW5rCiszNTIzIDA0M2RhMTkzMDJlZjI0NGJmNTcyMWYyMTg2Y2EyNzliY2JjZDlhMDUgbGVnYWN5LXRydW5rCiszNTI0IDJmYWMyMDllMWMzZjU1MjIxMmQyOTZlMTU3MjUxNTI4ZTQ0ZDMwNDggbGVnYWN5LXRydW5rCiszNTI1IDNlMzNjYTU0ZmJkYzFjMzI2MWRkOGQ2ODBkZjFkNWZhM2YwNmFkN2UgbGVnYWN5LXRydW5rCiszNTI2IDVkNzRhOTg3MzU4OTY3NDUwZDE5MmJlMDhkMjU5Y2RhZTlkYzIwMDMgbGVnYWN5LXRydW5rCiszNTI3IDE4MDhjYTVkODg4MzA5N2M3MmM2YThhODkxNDMwNDFjMjBlYTEzYzEgbGVnYWN5LXRydW5rCiszNTI4IDdjZDUzM2NmMTk0YTlkYmVhZTkwYjg3NjhmZjVkZDJlZTMzYmYzYTggbGVnYWN5LXRydW5rCiszNTI5IDU2MDQwN2VjNjMyYjlmNmZjZWJmODk3NTVmMzgzZDFlYjQ3MmU0YWEgbGVnYWN5LXRydW5rCiszNTMwIGUxYzQ3M2Y5MjljNDcyNjQ3ZjAyMTBmYTY4YmZjNjhhOTA1MDIzMGQgbGVnYWN5LXRydW5rCiszNTMxIDEzMjYwMmQ4NTRkOGM0MGY0ZTQ5M2U5ZmFhNDZmNjI3ZWM2NDExMDYgbGVnYWN5LXRydW5rCiszNTMyIGE1ZmMxMDQ4NDlhYTIxZjYzMjFmNWQ5OTdlM2EzN2ZiNjVhN2Q5ZDMgbGVnYWN5LXRydW5rCiszNTMzIDI4N2ZjMzJjMWQ5YzNmYjJmMjIxZGNiMDU2YTI1MzkyOWJlMzA3Y2EgbGVnYWN5LXRydW5rCiszNTM0IGVlNGEyZjg5MzI1NGRkNDBlMDFjMjdkY2I2MWE1MzhkMzkzNDcwZTMgbGVnYWN5LXRydW5rCiszNTM1IDRjOGU1ZmNiMzMwMTU5ZGYzNzhmMzdiNTgzMjg5ZmFmYWE1ZDlkYTkgbGVnYWN5LXRydW5rCiszNTM2IDg5ZTFlNWQ5Y2NiZjAzZDk0ODUwZjIxNmM0MTlkNGMxNThjNTY1ODUgbGVnYWN5LXRydW5rCiszNTM3IGY5ZTVhMjgyMzY3NzdlNTBhMzJmMTBkYjE5Mzg5MGIxOWFmNDJjYjggbGVnYWN5LXRydW5rCiszNTM4IGZhYWYzODQzYjhiZDVkMWE2ZmI3YzMzNTdhMGU0ODgwMzBhMDY0ZWQgbGVnYWN5LXRydW5rCiszNTM5IGY3YzYwNjEwM2RkNWVkMWVlYTNlNTczM2VlZjE3NTU2MTMxMDA4ZTQgbGVnYWN5LXRydW5rCiszNTQwIDdiZTdhN2UwYzQ2NWU3NmU4ZDk3ZTU0NTlkNWZlNjM4ZWNmNWNmZTUgbGVnYWN5LXRydW5rCiszNTQxIDg5ZDdkNWUxMzZhZGRjZTdiNThlNzg3NWVlMjhjNGYyNmRkZDNmZjkgbGVnYWN5LXRydW5rCiszNTQyIGYzYTMyNTY2MmQzOWM2MmIwOGNiMDQxYjRkMzA3NzkzNTg5YjVhNzggbGVnYWN5LXRydW5rCiszNTQzIDEwNWQzMzJjMjc3YzY1MTlhMTI4MzZlMjllZjM1MTlmOWI4NmNhYWEgbGVnYWN5LXRydW5rCiszNTQ0IDM1NDNjZTg4YTMxZWQ4NWYyYjFkYTUyZTI5ODIzMDI0ZGM1NjJhMzUgbGVnYWN5LXRydW5rCiszNTQ1IGIwM2QwMGUyNGMzYzFhMDU3ZjgzYzQ1N2U3ZjdhNjI1ZGNiM2MyZjUgbGVnYWN5LXRydW5rCiszNTQ2IDcxMGM2YjEzZTg3NTA4M2E2NDJlZDRlNDJlZmU2OGY5MzhhNmQ0MTQgbGVnYWN5LXRydW5rCiszNTQ3IGE0YWE4MzAxMmFmM2IyM2ZhYWVjMmMwOWFhMGE2ZTk1MTY3NjhiMmMgbGVnYWN5LXRydW5rCiszNTQ4IGMwMmIzZmUwYjMzYzI1OWVmY2RmMWY4MjM2OWFmNjQxMTgxNTBjYTUgbGVnYWN5LXRydW5rCiszNTQ5IGEwYTBjNzZmNmVmNmE4Y2I1N2U4Y2Q3NDA3YjAwMWUzODllZmFlMWUgbGVnYWN5LXRydW5rCiszNTUwIGFlNGU5MGZhOGJjYTUyMTg5NGI3MDhhOWUwNGQwMGU0NTU0MjJiMDMgbGVnYWN5LXRydW5rCiszNTUxIGIyYzdhYWJmYTkxM2I5YmIyZjlmMzE3ODViMWVmNjQ5YTJmNTI5NDMgbGVnYWN5LXRydW5rCiszNTUyIDE1OGYwZDljZGQ0MGY1MzVkYThmNTg3MTIxYWU3MTM0ZWQ2MDhiNTAgbGVnYWN5LXRydW5rCiszNTUzIDVhMzBhNGUwNTZlN2NjMzdkNzJmMTBhZGUxMjM0MGM4NGE4ODI5NjQgbGVnYWN5LXRydW5rCiszNTU0IGY5OTJhYzJhMzhkNWM3ZjNmYzVhNDczMDdiNjBlZGIzMzhkNzMzZjQgbGVnYWN5LXRydW5rCiszNTU1IGRjZTNjMzBjZDcyNzg3YTc0M2RiN2E4N2U0NjE2OTdiMjk5ZmJkNjQgbGVnYWN5LXRydW5rCiszNTU2IGU5OWMyMjQ5MGJmYmQ0ZTE3NWFiMDk0NmUwZDdjOTk3ZjhmM2VkZDcgbGVnYWN5LXRydW5rCiszNTU3IGNmZmU4ZDZiMmYwOWI3ZWVkMTg2N2JkNzM5MzA1YTc2ZjQwOTFjY2QgbGVnYWN5LXRydW5rCiszNTU4IDdjMzI0NWMxODY3NzRiODQ0NDU0MGJlZjZkNTM5M2EzNjAxOTZlZDMgbGVnYWN5LXRydW5rCiszNTU5IDBmZmZmNDBkMTNmZjQ3MGUzOTFlODcxOWNkMjVhYmM1M2UzNTU0YjAgbGVnYWN5LXRydW5rCiszNTYwIDdkNmEyZDk1MGYxM2M3NDA3ODVjNGZhZjIwMzMxYjU2YWE2MWJmZmYgbGVnYWN5LXRydW5rCiszNTYxIDk4ZjUxZjYxY2I0Yjc2YWZmNzdkNWQwYmMyZWFiNWE5ZDM2OWJlNGUgbGVnYWN5LXRydW5rCiszNTYyIDQyMjkyNzVkZWMzMjYxMDNhOGRiNDg2N2M4NzM3MzViMjYwYzY0YWUgdW5sYWJlbGVkLTIuMTAuMgorMzU2MyBiZTYxZTA3MmE1MDViOWVjYjBmOTdmN2UxYjBkMDhhOWZlZTFjZDJjIGxlZ2FjeS10cnVuaworMzU2NCA0YTI4NmIzMDBiNWVmY2FmMjgxZmRiZThiNTMyNmIxOWFkOThmY2M4IGxlZ2FjeS10cnVuaworMzU2NSAxY2UyYzBmNTY1ZWYzZTZiYWY0NDRjODI4ZmY3MjkyMDliYzlkMTNiIGxlZ2FjeS10cnVuaworMzU2NiAxZDg0MTU4N2FlZGViMDcxYTlhNThhMjljODcwYWM4ZTExOGFmZjc3IGxlZ2FjeS10cnVuaworMzU2NyBjYzE3MmNlMDU1NjFhZjE2YWEwNWIyMTVhMDdkNTFmMmNiYmNjN2QzIGxlZ2FjeS10cnVuaworMzU2OCBhYWM4MjMxYTcxNWM3Y2U0ODc3ZWFlNmZiYzk4MWVkYjdiYzMyN2U2IGxlZ2FjeS10cnVuaworMzU2OSBjZDU5ODlhNThiY2ZlMDMyMGRkZDJiMTRjNDY5ZjdjMmI1YTRjNDkxIGxlZ2FjeS10cnVuaworMzU3MCBhZjRlMjcxZDA3YjFkZDJlZTVhNzA2Y2RiZWE2ZWJlYmY5NGQ4MmVkIGxlZ2FjeS10cnVuaworMzU3MSA2Mjc4OTMzZDAyZTM4YmI4YWJkZGJjNzU0NjczZjc5NjE3ZDFiZjg4IGxlZ2FjeS10cnVuaworMzU3MiBjODE0OTM3ODgwY2MzY2MwMDY3NjA4MmNjOGE5YjRhNGU1ZTlkNzhjIGxlZ2FjeS10cnVuaworMzU3MyA5MGM1ZTJiYjRkYTU1YmVkZTZlN2Q4ZGU0NGU2YTJiMGJjZGUxMWNkIGxlZ2FjeS10cnVuaworMzU3NCA0NzQ4MjNlNWY3ZGMxM2I5NmQ1ZmQ4ZWI5YzgwOWNjZThhYTkwNDY3IGxlZ2FjeS10cnVuaworMzU3NSBhNThjMDYxYjRmNTU1MjUxNzdkNjdhMTUyZTdlMGY4ZjkzZjRmZWE3IHVubGFiZWxlZC0yLjEuMgorMzU3NiAyZTBhOGEzZWVmNGE4Zjk3NWIwYzEyNjcxMzUyZDEyNTc3ZDYzNmJiIHVubGFiZWxlZC0yLjEuNAorMzU3NyBiOWZjZmI5OWEzZTU0YjZmNzY2MzUwOGQxMGUwZDgwODc4MWI5ZjdjIGxlZ2FjeS10cnVuaworMzU3OCAxOGRmNjc0NTM5ZGE1NTMwNWY2ZDI2YzJkZDQ2MDMwNmEwZmYyYzMzIGxlZ2FjeS10cnVuaworMzU3OSBmNWIxZGRmZGRiYTgzM2IzMWI2YWFmNjFkODExMzA0OWYwNDIzNDg1IGxlZ2FjeS10cnVuaworMzU4MCAzMTUyNzJlYzRkNWI2M2Q1ZWQyZTVmNWYwM2M4ZmExMWZmY2Q2MzBiIGxlZ2FjeS10cnVuaworMzU4MSAxNjkxZWE1ZDlkNGI1YjM0NDE5N2EzMzZjNzMyMWM1ZWEzYmU5MjY1IGxlZ2FjeS10cnVuaworMzU4MiAwMGYxZTg4NjRkY2NkZmU2MTRkMjRiM2VjMzQ0NWYzZTRhY2JjOTFkIGxlZ2FjeS10cnVuaworMzU4MyBjOTE0YjEwYmYyZWQ3NzVjMDMyZDc0ZjVhZTQ1ZTA0NzY2MDBiYTI0IGxlZ2FjeS10cnVuaworMzU4NCAyNDkxNzc0ZTM2YTkwY2JiNWNmZTI2MzQzMmIxYTc2ZDJkM2FhMTE5IHVubGFiZWxlZC0yLjI1LjIKKzM1ODUgZjU1MDMxZDU0OWI3OWE2YmViMDdjMzBiZTFkZjUzZmU0NzM0NDllYyB1bmxhYmVsZWQtMi4yNS40CiszNTg2IGVkNTIyYzk0OGQ0MjhjMzdhZTBlOWQ1OGU0YzllOTg1MDZkYzc2MTkgdW5sYWJlbGVkLTIuOS4yCiszNTg3IGNhZGViNzljMTMyZjU1MDJjZWZmOTIzMTIwMjA3NjYwZDliMjU3MmIgdW5sYWJlbGVkLTIuOS40CiszNTg4IDI4NTJlZGI0ZmZmZTBlYzM3ODk1ZjAzMTQxMjNlMDg0NWY4ZWMwY2QgbGVnYWN5LXRydW5rCiszNTg5IDA2NTcwNDI5ZjA2MmQzMTRkMGI4NjgyMmQxYTNjY2RhNTM0NmUyMGUgbGVnYWN5LXRydW5rCiszNTkwIGQ2ZjZhMWNiN2Q3OWU5YjE5OGZjMTU4M2IyODY5YzllOWY0MDA4MTUgbGVnYWN5LXRydW5rCiszNTkxIGY3ZWRmYTZkMGRjYmE0ODcyYmY0MDg0ZjZiNTc0ZDNlYTExOGRkMzQgbGVnYWN5LXRydW5rCiszNTkyIGIxYmI3NGEyYjU5MzBlOWI0ZmM3OGU5YjU1ZjY2OTE1OTIxMmFiZDAgbGVnYWN5LXRydW5rCiszNTkzIDIwNDAwMWRkZGNjMzJlMzhlMTM2OThkOGQyZGQ1OTRjYzZkMjU4OGIgbGVnYWN5LXRydW5rCiszNTk0IGQyZjk4YmVlYzg1Y2YyMjRjODgyOThhMGRiNmRlOTVkN2MyOWU0MDcgbGVnYWN5LXRydW5rCiszNTk1IGZlNzI5ODgxM2YxNzE0YjQ3ZmEyYjkzMDY3MDZmZjM1ZjgzYWE0ZDcgbGVnYWN5LXRydW5rCiszNTk2IDhhOTBjOWJiYmRmMGM5ZDcxYTgzNGMyZjM5MTlhYzA0MDUxMmRlNzUgbGVnYWN5LXRydW5rCiszNTk3IDBiMzJlYzhhM2UyMDgyMWU2NDhlZTFlNWNhOTEzOTE4N2QwMDZiYzcgbGVnYWN5LXRydW5rCiszNTk4IGEyZjJhOGJkNTZmOWJmZjFhNTIxYTZjYzZlZDlkMDVmMjA0N2M3NTAgbGVnYWN5LXRydW5rCiszNTk5IDcyYmRkZmFkMzUxYTlhMjIwZGIyNDUwNGRhYmEwYTY4YmFkODI4ZjEgbGVnYWN5LXRydW5rCiszNjAwIGM4ODdhMWYzMDUyNTVkMWFiZmE2ZmU2YWVmZWE2OGYzZTZkNmQxZWMgbGVnYWN5LXRydW5rCiszNjAxIDg3MDFiOTMzODNhYjFkZGU5MThlYjdjNmNkNmYwMmU1M2I5NWI5MDUgbGVnYWN5LXRydW5rCiszNjAyIGY3YTc1MmZiN2I3MzdkMWYwZTljYjQ1YThiMDIxMjc2Yjg5NjYyMmIgbGVnYWN5LXRydW5rCiszNjAzIGFkYTU2YjA3NjVjMTY3MmQ5ZGVkODA3ZjYzMTY1Yzc3ODViNTQ1MDUgbGVnYWN5LXRydW5rCiszNjA0IDljNzA3ZDhjZjBjOGQxNmU2ZDg2OWVmYjYzYTZlODM4ODFkZWY3N2MgbGVnYWN5LXRydW5rCiszNjA1IGQ3MTY4Y2MyYmUwNzgzM2QwYTE1YTA2ZmE5NDc0NmM1OTMzZjE5MDIgbGVnYWN5LXRydW5rCiszNjA2IDY0MGMzNmI2NGRlYTFjZjcyZmVlNDFmNTExOWMwNmQ1MzQ4NDgzMTEgbGVnYWN5LXRydW5rCiszNjA3IDVjYWU3NjUzMTcxYjQ0YTE5ZDY1YWI2MTM4ZjcxODE1NDFjZjY3YzQgbGVnYWN5LXRydW5rCiszNjA4IDQ2YzIxNzMzN2JkZTRmNTQ5OTg5MDE0ZTJmYWZhNzg2NDZkMTNhMTIgbGVnYWN5LXRydW5rCiszNjA5IDU2MGVjNzAzMDgxNzdiNDM5MWFmYTE3MWQ2MDRkZjMxZTdlMzQ0MGMgbGVnYWN5LXRydW5rCiszNjEwIDg5YTVjZTE5ZDEzYWYyMDhlYTEyZjVlNmUwMDFkZjBjMjRhN2E1ZGMgbGVnYWN5LXRydW5rCiszNjExIGU0OTkxMTZkNDVlNDkxOWRjNDZkNzUyYjM4NDk2ODJkZTg3ZGQyNWIgbGVnYWN5LXRydW5rCiszNjEyIGQ3ZTM4NDJiMmU3YjEwZmZmYjA0ZjQxZWJjZWFjNzAxNTAxMjkxNmYgbGVnYWN5LXRydW5rCiszNjEzIGU0NjMyMmEzMWY2MjJiYTFjOWQwNDQ5YmZkMGY3ZGEzYTFkZDYwOGMgbGVnYWN5LXRydW5rCiszNjE0IGQ4MmMyYmE0ZjgxODdiNTAwYmU2ZGQ2MDRkYzdlZTNmYzA4ZTZiMGYgbGVnYWN5LXRydW5rCiszNjE1IGNkMzgyNDU2YzU3MmJiYWEyMDU1M2U5YjExMTI0YTNlZDE2ZTcwYzUgbGVnYWN5LXRydW5rCiszNjE2IDI4Y2NlYWJmOGNjZWM2ODJhYzY3MzE4YzIzY2Q4ODczZDFmNzhiM2YgdW5sYWJlbGVkLTIuMzYuMgorMzYxNyBjYmYyOGQ2NTQ2OWY1MDYyNDhiMzJhYzRjMjJiODM0MTZkNjEzYTc4IHVubGFiZWxlZC0yLjM2LjQKKzM2MTggNDc0OWM5NTc0NjZiNzdmMTA4MDE5OWVjNmQ5NzBmMzg2N2NhY2ExNyBsZWdhY3ktdHJ1bmsKKzM2MTkgMmVjMDhhOWQwMzI1NTIxMDZjYmJiZWE2Y2QwYTAxOGJkYWY3OTAyMCBsZWdhY3ktdHJ1bmsKKzM2MjAgZjJkMDQwNTRjOTM0NmEzNjQ1ZjZkMTUzZmZjYzg1ZDNmYTUyYzY2ZCBsZWdhY3ktdHJ1bmsKKzM2MjEgOTEzMzgwNjdmNzUwMWUzZTFkOWQ2Mzg4NDViYWZiYTlmNzk2YWNlOCBsZWdhY3ktdHJ1bmsKKzM2MjIgOWZiMGYxYWZiMzRjZDNhODdmYzM0MDRiMDAzYjRiNmUzOTllMmU1MyBsZWdhY3ktdHJ1bmsKKzM2MjMgNGZmNjA4YzRjYWNhZTBjMTQ3NGI0OWY0OGI0NWIzOWQ3M2YzOWMyNSBsZWdhY3ktdHJ1bmsKKzM2MjQgMzI4ZjQ0NmQyMDE2NzYwNmY4ZDI2MmMwNDM0YTEwOGI1NWFjYzI0OSBsZWdhY3ktdHJ1bmsKKzM2MjUgYWU5M2VjNGRkNTU2MzY5YmFmYWIzOWM0ZTBhODY1M2RjNzc0MTRmMiBsZWdhY3ktdHJ1bmsKKzM2MjYgZDhjYTBlOTEzYzQ0NDJhNmI0Y2Q2MzIyMzI2ODk1ZDc2NDRhOWRjOCBsZWdhY3ktdHJ1bmsKKzM2MjcgYTg5MzJhNGI5NjI0ZDliYmQyNTU0OWQyYTUyNmMxMDU5OTlhM2NiNiBsZWdhY3ktdHJ1bmsKKzM2MjggYTVhNDY1NGMzM2JlNWIzOTc3NjE5NDAzNjE5NmUzMzJlNDk5YWU4OCBsZWdhY3ktdHJ1bmsKKzM2MjkgZDc3M2E1Zjg5NDI2ODc5ZGIyZmViZDI1OTg5MTIzMzFjZDhiZjMzZSBsZWdhY3ktdHJ1bmsKKzM2MzAgM2E1ZjJmMTEwZjcwNjJiOWUyNjUxMmNmZWQ0OWFjMDJhZTYyNGI4NiBsZWdhY3ktdHJ1bmsKKzM2MzIgNTAxMDFlYjYzMTFiMDc3YzlkOTY3MzM2OTQyNDJhNDFmODdmODg2ZSBhbHBoYTEwMAorMzYzMyBiMThlYjJmNGFmMGNmM2M1OTJlYzIzYzZmZjM3YzY4ZTk2NTA4MWNlIGFscGhhMTAwCiszNjM0IDFjZWE5ZDgwYTJiYzFjZTRiMWUxZjYwOGZkMjZkMzAwNWRjYmY0ZjQgYWxwaGExMDAKKzM2MzUgZDlkMjEzODJjNzNiOTJjMTgxYTAyY2EzYTA0MjA5NGFmMjMzYTM5MyBhbHBoYTEwMAorMzYzNiA1Yjk3MDA0N2E3MjJjMTZlMTI2ZjcyZTA1ZjUxY2E0ZGQyOTU1NWE4IGxlZ2FjeS10cnVuaworMzYzNiBlZjczZDQwYTgyNzk1MWM5ZGE3YTMyY2M4ZGJlMzg2MDBmZmVjN2RiIGFscGhhMTAwCiszNjM3IDI5MmM1ZTc5MjY0ZGYyNjY4MjU2YzY5ZTRlODRiZTlkMDVmOTYxZmMgYWxwaGExMDAKKzM2MzcgZDhjZGFjOGZkYzc0NTBiZTFiZTE2MjI4NjU0OTdkNGFhMGIyZGNhMCB1bmxhYmVsZWQtMi4yNS4yCiszNjM3IDhiMDhhMzY2NzZkNGVkYTQ3ZTFkYTc2OTZlNGIyMjgxMjMxOTNmM2IgdW5sYWJlbGVkLTIuMzYuMgorMzYzNyAxOWZhMDFjOWZhZjM5NzYzNzhmNjU0YmI0ZmE3Y2QzZGIyODgyYTRkIGxlZ2FjeS10cnVuaworMzYzNyA4ZWVmMjExNTU1YzZkMzVmNGQyOWM5ZGM3NzRhMjQ5YmQxYzc0Y2QwIHVubGFiZWxlZC0xLjUuMgorMzYzNyAwY2E2NTNkNjc3ZDM0OTc0M2MyOWMxYWUyMjEyYThkY2I1NzI5M2NkIHVubGFiZWxlZC0yLjkuMgorMzYzOCA2MDdiMTlhZTFlMTNhMzIyMDUwNmU4NWMyODg3ZmY3NDljNjRmNTUwIHVubGFiZWxlZC0xLjIuMgorMzYzOSAzMWYxYjk4N2NkZjgyY2JjYjM4ZjUwMTA4YTBhZjA4Mzc5ZDgzMWYzIGFscGhhMTAwCiszNjQwIGQ5NjE5OWJlNzRlNmE0NDhjYzk1NDBiZDk2YjlmMWU0YzlmNDE1ZDYgYWxwaGExMDAKKzM2NDEgZjhkM2ZmNjYzOWI1OTY3MGRjMTEzMmQ5ZThkY2U1ZDhjYzk1ZmVjOSBhbHBoYTEwMAorMzY0MiBhNzliMDI0Mzk3Zjg3YzcxOGEyYTMxYmRmMjNkZDk2ZGUwMjhlYjc5IGFscGhhMTAwCiszNjQzIDVjZTQwNDYyYWU5OWFlZDk0ZWI1MGY4MThjMmM0ZWNiMjc3MjkyMGEgYWxwaGExMDAKKzM2NDMgYjg1ODBlMzIwNDZjMWI2OTM5Y2VhYjhlOTM5MmVlZTg4MGYyZTRhZSB1bmxhYmVsZWQtMi4xLjIKKzM2NDQgMDhkNGRhNDhkY2Q1ODg3NDIwODEyNzEyNDIwZmUxN2YzMDE3NTcyZCBsZWdhY3ktdHJ1bmsKKzM2NDUgZDhiYTNjZjlkYWJjYTk3OGZmNTY1ZjM2MTkwMDcxOGE1YmM4NzQ0OCBsZWdhY3ktdHJ1bmsKKzM2NDYgMWY4YzY0ODQ5MjAzNDgwMDE1NzU1ZGI1Mzg5ZGQyNDViZGViYjJiNyB1bmxhYmVsZWQtMS4zLjIKKzM2NDcgNmMwNjc2OWE4ODY5YjBkZGZhYzc0YTk4MGU4Njk1NTI1ODk0YjQ2YiBsZWdhY3ktdHJ1bmsKKzM2NDggMjVjMTEyYjNjOTU3ZWUxOTE1MjVhYzU0N2Q4MDdkOWQwMDc5YjU4OCBsZWdhY3ktdHJ1bmsKKzM2NDkgMTA5ZDM5ZGVjMTI4ODZiZTNjMGNjZGQ3ZWI2M2U0OWVkYWFmYzNjYiBsZWdhY3ktdHJ1bmsKKzM2NTAgNWYzZDZlNGI1NTAzZDUxZWExY2IyMjQyYWQ3MTdlZjU3MTcwZTkxNiBsZWdhY3ktdHJ1bmsKKzM2NTEgMzA1NzQ4ZWJhYjQzNzI0NTI1YmE0ZGY5ZTdmMGFkM2ZiOTYxOTVhOSBsZWdhY3ktdHJ1bmsKKzM2NTIgNGRjN2IxNWI2Yjk3MGRhYWRlMWUzNzhlNzMzZTdmOGMyZWJkNjBkMCBsZWdhY3ktdHJ1bmsKKzM2NTMgYzhhOTVjMTcwZTFlZDg3MzQwNzM0NWI5MWE1YTZjODQzMzM4OTRmMCBsZWdhY3ktdHJ1bmsKKzM2NTQgZWQzNmIzZTljZDc4NjVhYzZiNTExZTBkNDhlZTUwYTA1ZTJlZGQ1OSBsZWdhY3ktdHJ1bmsKKzM2NTUgNjNlYjZjNzUwOTI3NTdkMjAwNDAwNzk3MmExZTQyMDkxYTA2ZWQ0MSBhbHBoYTEwMAorMzY1NiAxOWM5OGYyMGE5YjgzYTMxY2I0ODliY2FjYjEyMjg3YTJmMTg5YTczIGxlZ2FjeS10cnVuaworMzY1NiAwOGNkOGI5NmI2YmZjMjc4YjY2ZWQ0MTFkM2I5ZDdiNjM0Yjg5OTFmIGFscGhhMTAwCiszNjU3IDZiY2UzM2Q3ZjBkMTEyZjRkZGIzOTZlZTk1MTFhZjY3NjkyMzEyMTcgbGVnYWN5LXRydW5rCiszNjU3IGY1MzM2ZDg2ZjU4YjhkOWE0ZTAzNGZkNGJjZTFkMGEzZmZjZDRkYWQgYWxwaGExMDAKKzM2NTggMzA1OTIxOGY2MzBiZDhlYzBmMjZiMTIyZWUzOGJlNzU2ZWM3OTFhNiBsZWdhY3ktdHJ1bmsKKzM2NTkgNzczOGNlOTViYTRkY2E5Y2Q4ZWI1ZWNkM2EyYmNkZTBhZWYwNWU1NCB1bmxhYmVsZWQtMS45LjIKKzM2NTkgODM4YWExNDA2ZWVhZWY4MzIxNmUwNDQ5MGJkYmZiYTMxYTYxMjExYyBhbHBoYTEwMAorMzY1OSAyNDMwYTg2MDJhNjVkMTM2OTUzNjZhY2NlY2Y5NjQ5ZDc1NGEyYjhlIHVubGFiZWxlZC0yLjE2LjIKKzM2NTkgYjRmODE1ZjNjZjNlMTA4ZmM5N2NmMGYyOGI4N2ZhYmMzODUwZTYxMiB1bmxhYmVsZWQtMi4yNS40CiszNjU5IGQwMTg3NjU4Y2YwYjNiYjZmNDQ5Y2RjMmQ4YjBlMWQ5ZDkxODZhNTAgdW5sYWJlbGVkLTIuMS40CiszNjU5IDYxMmM3NmFhYzNhYTg5ZTg2ZjVlNGVjY2Y5ODNiMzRjZWQwYTI5NzEgdW5sYWJlbGVkLTIuMzYuNAorMzY1OSAzMTNkOWI5MzA5NDA5ZWRkZDYyYjk3ODRlNzA2Y2Q0NzRmY2NhMzA0IHVubGFiZWxlZC0yLjEwLjIKKzM2NTkgOGRjMmNmMzE0NWIzYmJiYTUzYTdiZGM1ZDFmZTNjNmViOTgzOTY4MyB1bmxhYmVsZWQtMi45LjQKKzM2NTkgNTFlZWZjMDU0YWZmOGJhM2JlMThlZGVjY2Q5MjdiMTIxMDJkMTk2YiB1bmxhYmVsZWQtMS41LjQKKzM2NTkgYWY2NjdjNmQyMDcyMjExMTk0ZGNjNDljZWNjZWFmMWViYmQxZGU3NiB1bmxhYmVsZWQtMi4zLjIKKzM2NjAgZDQ3MDVkNzA2NjMyOTI0ODkwMGNmOWM2MjU3MWEyMjAyMmE3ZDZkNyBsZWdhY3ktdHJ1bmsKKzM2NjAgMWRjYTMzZWIyZDdhNTM3ZGYxNGFiMzgzNTY5ODgzZjU1ZGU5OTc1ZCB1bmxhYmVsZWQtMS4yLjIKKzM2NjAgOGY0NGU0MzEwNDE0YjZkOTU3ODVhOWZlMzc5NTYzMTQyYWJhZjdiMSB1bmxhYmVsZWQtMS4zLjIKKzM2NjEgZGNjZWYxY2JkYTVhMDZkYzhmMTc5YWY3YzlkZDc3NzIyMjdhZTY5ZiBhbHBoYTEwMAorMzY2MiAyZWM5NjE0MGEzNmI0ODgzNDVhM2MxYTFjZThmYmU0MGMzYjNiMjY1IGxlZ2FjeS10cnVuaworMzY2MiA0YWE5MWZkNjk3MTU0Nzk2Y2ExZWQxYTg1YTU2Y2M1OWNiM2QzZjg2IGFscGhhMTAwCiszNjYzIGM3NTFjYmVlZTY4ODJmYjMwNDZjYmExNjY5OTA2YTk1ZjM2YTU3MjggbGVnYWN5LXRydW5rCiszNjY0IDIzNTYxZGM3YjE1ZjVlODMyMDBhYTVmYzA0NWFjNGQxMWNhZDhlOWEgYWxwaGExMDAKKzM2NjUgZTU2MGIzMzQyNDA1YjMyNzdiNGRmZGM2YjAwMzgwMjI3N2QxZWUwZiBhbHBoYTEwMAorMzY2NiAwZWIwZWZjNTFkOWIzN2M0OGZhNmMzOTQzM2I3YWUyOGUyNDY4ZTdiIGFscGhhMTAwCiszNjY3IGMzMmUxMDIwNDY4ZGZmODQyOTE1NzljYTlkYzU5YzFhYjY3ODFlZmYgYWxwaGExMDAKKzM2NjggZTI2M2E3MmE3NmZlOWQ2YTFhYzAxZTIzM2I0ODUyNDI3NzY3ODllZSBhbHBoYTEwMAorMzY2OSA5M2QxMjk3MTc4Y2JlNzg1ZjBiMjU1MTIxYWFiMmNlY2Y3ZWEyMTQ4IGxlZ2FjeS10cnVuaworMzY3MCA5OGM1NTlmZDZlMmE5MmE0ZTVjMDllYTZiMzE3ZTI5YjAyZGU5NjMyIGFscGhhMTAwCiszNjcxIGNiYTEwOTZkYTU1MzExZGQ2MmI2OWMwYmJiODAyNzBhMGMxODk5ZmMgYWxwaGExMDAKKzM2NzIgMjA2NGIxNjcwOWYyY2U1ZjkwZjZmODRiODRlZTA1MWJiMWVjNTBiNiBsZWdhY3ktdHJ1bmsKKzM2NzIgMzQ1ZDU3YmVjMjY5ZDdiZmQ2ZjI2ZTcyNTE1NjljYTJjZDNjZmI1MyBhbHBoYTEwMAorMzY3MyBmODZmNjUxYzcwN2Y0MTBiMDI5MDFmOThlNWU0N2JlNTc3NWIxOTlkIGFscGhhMTAwCiszNjc0IDJjYjA3NmFlODkyNzIxNzkxMDFlNmExZWIzZjMyZTcwY2E4NjdmZTUgbGVnYWN5LXRydW5rCiszNjc0IGViZjcyODgwMzU1ZjE4MjYzZDFmODcxZDVkMDQzMzJjZDE3MTE2ZGUgYWxwaGExMDAKKzM2NzUgM2ZlNzU4MmI5NjM2ZGYyZDQzYzQ3OTRjZWYxYzZhZWI2ZGJhZGUyNSBhbHBoYTEwMAorMzY3NiA0ODE0MWU2OGIzNjk4MzIyZmMwMzdkMTQ0M2Q4MTg1NGExMDdmNDA1IGxlZ2FjeS10cnVuaworMzY3NyBkODM2NjQ1OGQxMDY2ZDFjMDRhMzAyYTg3MWI0ODg5NTIxMDUzMzA1IGFscGhhMTAwCiszNjc4IDJiZTgwNDk2NjE0NzY5OGI0MTQ3YTk0ZmVkZWFiYmEwOThmYjc4MDMgdW5sYWJlbGVkLTEuMS4yCiszNjc5IGYyZjE2M2MwOTk1OWIzZTc1MjI2NzE2M2NhZDI3ODMyMmE5NGM5OTUgbGVnYWN5LXRydW5rCiszNjc5IGI2NmM2ZTJhNmUwNmZhMzQyZTA0OGFkMDIzNjJkNGZhOGUxOGRhMzIgdW5sYWJlbGVkLTEuMS4yCiszNjc5IGZlYzJjZjhkNmU3Nzk5OTQ5YjA2ZDMzMTAyZmUyNmQ5ZTZkNzc3NDYgYWxwaGExMDAKKzM2ODAgODcwNzUxZmIwOWViZmQ1OTMwOTI4NTkyZjU4YjU5YTJhOTkyMzU4MyBhbHBoYTEwMAorMzY4MSAwZGVmOTRmODBiMzg0OTc0ODY4MzNkOWFhZjcwOTlmYjJmNWNjYjQ5IGFscGhhMTAwCiszNjgyIDI0ZDY1NjUzZTJhYzlkNDQ2MmNjMzg0MDIyMDAwYTYxOWNhZGJlMTcgbGVnYWN5LXRydW5rCiszNjgyIDFjNGUyZDYyMGIxNjM4MjYxMjk3YjVmYmMzYjg2MTQyZDgwNjU5NzkgYWxwaGExMDAKKzM2ODMgZDAzY2VhNmMwNzk1ZDRkOTg2Yzc3MzdmNjQ0YzMyNjlhM2U1NTBkYiBsZWdhY3ktdHJ1bmsKKzM2ODMgNDM4NTMzYjM0MWE2ZDU2OTljMDM1ZTY1NWRiYTAyOWFhZDk3YjRlNiBhbHBoYTEwMAorMzY4NCBlMzM3NjI0YzNlYTM3MDUzNTQwMWUzYjhhMzJhOTE3ZjVlM2NkMzlhIGFscGhhMTAwCiszNjg1IDNkNWQ0YzllZDE5ZGQ4Njk1ZTlmNTQ3ZGNkNmMwYmQ0MWMxZWRiNmUgYWxwaGExMDAKKzM2ODYgYjgwZjFkYzk2YzFhNTZiM2M0M2I0MDc5Zjc4NzMwMDNmM2RjNzNlOSBsZWdhY3ktdHJ1bmsKKzM2ODcgZWFiMDE5NmE4ZDgzOGU3MmM5Y2MwNGY4OTY1YmIxNTI3NGI5MzFmMyBsZWdhY3ktdHJ1bmsKKzM2ODggYjViMWYzOGJlZmE0OGRhMGE4NjYxZDRiYWQxOGE4Yzk3M2ZjYmUzNyBsZWdhY3ktdHJ1bmsKKzM2ODkgNTUwZTI2MDU5NThiMTZlNjQxNTY1Nzc3YzEwOWYzNWRhYWJkY2EzNiBsZWdhY3ktdHJ1bmsKKzM2OTAgMmRkZWE4ZTZkZDIwYjBmYjdiZWYzMDIyMmVhM2EwNmFlYzc0Mjc5OSBsZWdhY3ktdHJ1bmsKKzM2OTAgMzU1OWIwOTA2NzBlZWM5ZmQxYjY5N2E5ZjkwZjExNzkwOTRmNTY1MCBhbHBoYTEwMAorMzY5MSA2MWE3MjNmYTI1MzhjNzU1ZTRmNTdhNTA0M2QxNTZhMmE3MzEzM2EwIGFscGhhMTAwCiszNjkyIDlmM2UyZTkzMWI0YjkzZmQ1YjZlZDRlYzgzODNhNWM4ZTIyM2U3MTIgYWxwaGExMDAKKzM2OTMgNTc4MWFhZjljY2QzNWY3MWQwMDkwYzVkODI0YTM1ZjY4YWI5OGI3YSBhbHBoYTEwMAorMzY5NCA1MDE5ZDAzZDcxOTIwYjkxNmQyNjY1NDk2N2M2ZDY3MWUyYmEyNTA5IGFscGhhMTAwCiszNjk1IDIyNGM2YmQ5MmNlYjQ1NDBkNzRmZTIzMDk0ZjIzNDg4OTFkMTYyMjAgYWxwaGExMDAKKzM2OTYgOGQ2ZDg1MzU5ZmEzYjljZGQxMGM4YWFiZGE0Njk1NzJiZmYzMTU5NiBsZWdhY3ktdHJ1bmsKKzM2OTcgZTVmYTg5NzliOWU2NjgyNDEyMGU5NzY5Mjc2ZjRlZGZjNGQwMjU1ZiBhbHBoYTEwMAorMzY5OCAwYTZiZWU0YjZiMTc1MThiZWZmOTBlMWI0MDMxN2UzMWY3OWIzZTRlIGFscGhhMTAwCiszNjk5IDJhZTAyZjBkOWU2YjBhNmQ0MDg3ZGNkYWJiYTk3ZDQ5MDczYzBjOTcgYWxwaGExMDAKKzM3MDAgMmQ0YmQ4Y2M0MDQyMDBmYTcyNTVjYmU1YTBjNzUwNjZiMjJjNjhjOSBhbHBoYTEwMAorMzcwMSA0Zjg5NjBjNzgxNDFkYmMzNzQwMjdjNWU4OGI3ZmFiNDRmODVhMGUwIGFscGhhMTAwCiszNzAyIDc1ODcxN2Y4NTBmMmFhMzdlNTkzNjM2MGQzZDQzZWU2Y2U0MTIzMGMgYWxwaGExMDAKKzM3MDMgMDUwMTRlMGQzM2VjNTgxNjQ1ZGFkMDRlYzRiMTkzODBiZWY4ZjRkNyBhbHBoYTEwMAorMzcwNCA3NmJjNmQ3NDg4OTBkODdhOTkwNDZmYTU2ZTAxNjMwMzU2YTUzMjFkIGxlZ2FjeS10cnVuaworMzcwNSBlNTNlZDY3NDU5ZjU2ZDczNDZhMWUyYjNmZDk5NzNlYThiZDgwMzY3IGFscGhhMTAwCiszNzA2IDBjOGIxODEyZjBiNjlkOTFlMzhiMDdlYzM4MDVhOTY2ZmQ1ZTM4NGIgYWxwaGExMDAKKzM3MDcgMTBhZDhiZWY5ZjQzZGI3NWU5OGFhZGE0MTRkZmY4ZGU3YmVjNTc4ZiBhbHBoYTEwMAorMzcwOCBhOTA5MWM0OThiMTAxZTU4MjM1MjRjOGZmZDM2NTM1NDJiMWIwMjI0IGFscGhhMTAwCiszNzA5IDYyN2JjNDIyYTkwMjg2ODFmMGVlYmYzMTllZmExNmJhNjQxNjZkNGMgbGVnYWN5LXRydW5rCiszNzA5IDhiM2E3MjdkYzcxYjNhYzNlOTlkMDNiN2I0Y2RmNWFiMzEwMWFjZTAgYWxwaGExMDAKKzM3MTAgMjcyZTJjNjRiNzRkYmJiODk4NTNjYjE1NDJjYTVkNDkzNDQzMDY0MyBhbHBoYTEwMAorMzcxMSA2ZGZiODRhZGZlNDMxMTlhOWE3ZTEyMWMwOGNiMGJjNzY2ZDZmMDgxIGFscGhhMTAwCiszNzEyIDZiNjMwMGNjNDY0ZTVhNGJjMTY3MGI3YTcyNTllYWFhMGQ4NWJkOGQgYWxwaGExMDAKKzM3MTMgNTBmYWIyMzNmNDA0MjEzMDJhNGUyYzIwYzAzOTY2ZjRlODNjZmJmMiBhbHBoYTEwMAorMzcxNCAzZDE5Y2E0MGViODJkZmQyZThmNWFkMmQ2YTk1Yjk2OTBmZTdmM2ZiIGxlZ2FjeS10cnVuaworMzcxNCA5MjVjOTUyODMwY2UyNmViYmE2OGIyNGIzMjkyZGNmODFjM2QzNTdhIHVubGFiZWxlZC0xLjEuMgorMzcxNCA2MjdkNjQ0YmM2YzE3N2Y5YTZlZjQ5NTUzYzQyMzc1ZGM5YzA2MzA2IGFscGhhMTAwCiszNzE1IDk2MzdjMDQ5NjE3ZDMzNzZkNGVlNTE3N2Q4OTFmNjBlMjM2YmMxNzUgbGVnYWN5LXRydW5rCiszNzE2IGVkNzU5OTIxNzdlODMxNzE5YjA2OGRjNmVmOThjMDllNWFlZWFkZWUgbGVnYWN5LXRydW5rCiszNzE3IDI5OTI3ZjAzODZhNjllODNlOWFjMjJmMGY1YWZjODkzYjU0YmQ5NjAgYWxwaGExMDAKKzM3MTggYzYyYTZkYTdmZWFjM2Q3YTUxNzlkZDEzOTA0MGI5YWUyMTk5MzQwMCBsZWdhY3ktdHJ1bmsKKzM3MTkgYTUyNTYwNjFmM2EwMGY3NmFlMjRjNTE4MWUyNjA4MDFlZDU1M2UzYSBhbHBoYTEwMAorMzcyMCA1ZmQ1NWE2YWM3NmU4MzdjMzAwOTg1NmEzMzY2NmE1NzMyNjA0ZjlkIGxlZ2FjeS10cnVuaworMzcyMCAzMjg2NWM4OWNmMTJlNjNkODQ0NDVkODcwYzdkMjI2NDAwNDg2NmUwIGFscGhhMTAwCiszNzIxIGUxODM1MDJmYjViYzZmNWMzYTYzNDZhZWMwOGE1OTBmOWZlNzI5YzEgbGVnYWN5LXRydW5rCiszNzIxIGZkYmQzOTU0ZmVmMDBiNDQ2YTQxMTc4YTVmNzYyMGNjMDU2MWM3NTYgYWxwaGExMDAKKzM3MjIgNWU5MmIxMzJlNzBmYTMyYjdiYTFkNDE2NGVhNWVkNzc3MjAyMzIxZiBhbHBoYTEwMAorMzcyMyBkMGJiMDdkNGM2ZmViOGQyYjMwYWQ0MDhmZTk1OGEwM2EwZTRjMjFjIGFscGhhMTAwCiszNzI0IDc0NTNlMmJhNTM2MmE0NDMyMTZlYTk4ZWI2ZjAwODE3YjhhZGViNDYgbGVnYWN5LXRydW5rCiszNzI0IGFhNDcyZTkxN2Y2YzIzMzlmNDQwMTQ4MTg0YTlmNDJkZjU0YmUzNzEgYWxwaGExMDAKKzM3MjUgODc3MDczYjlmOGMzMjU0YTgzMjUwYjI1NjRlZmM2NWM5ZjFhYmFhYiBsZWdhY3ktdHJ1bmsKKzM3MjYgZTRlZjFiMTdkYTNkYmM1YjliYzIxZjFhMGM2YTAyN2Q2YmE0NTMxYSBhbHBoYTEwMAorMzcyNyBjYzMxMTkxNjRkNWMyZjM2NWVjNzIwNmM5OTQzNTY1NTMyOWY1YmE1IGxlZ2FjeS10cnVuaworMzcyNyBhYmMyZjk4MTRjYzk2ODU1ZWFlY2YwODVmZTZmMTA4YTNlYWNlMWY1IGFscGhhMTAwCiszNzI4IDk0NGNjN2M2NGU3Y2RkOTYxMDU3MzBkMGMxZGE1OTljZmI1MGE3OWEgYWxwaGExMDAKKzM3MjkgOWYyODhjYjU2YWI1MWY3YWE0OGY0ZDM3ZjY3ODRiNTFmODdlNzdkNyBhbHBoYTEwMAorMzczMCBhNmViYjY4ZGIzNGViNTE2MWZkMzFmOTU2OGQxY2VjZGYzZGEwZTcxIGxlZ2FjeS10cnVuaworMzczMCA3N2UwZWE2MDc5NmFlNDg0YmNkYTZlZjk2MDMyZDAyZTExMjFjNWVkIGFscGhhMTAwCiszNzMxIGE3NWY3MGNhMWJlMGE2NGMzZTcxOTE1OWQ5M2Q1ZGJhMDNmZmEzNjIgbGVnYWN5LXRydW5rCiszNzMyIGY1MjBiOWM3YWU2ZjY1ZGIxMDdhODBjOGNlYzEzNjg0ZWU2NmMxZTQgbGVnYWN5LXRydW5rCiszNzMzIDU2OGM2MDZhMGUzMTFiNjU0NzlkNmMxYWI4YTdiMDhiODAwNWZhNDEgYWxwaGExMDAKKzM3MzQgMWY3ZGFkNTc2YTg1MWQxYjFmNmNhZDIyYmEyNjdkZDYyZTdiNTY2YiBsZWdhY3ktdHJ1bmsKKzM3MzQgMjA0YjdlNzkzYzE1YjRiZDFkNDBhZGU1NjU2YTVlZGZlZGFkY2FlNyBhbHBoYTEwMAorMzczNSA3ODNlZjM2MWYzOTUxNWE4YWVmNTU2OTU4MzNlM2FjNDEwOWUzN2FhIGxlZ2FjeS10cnVuaworMzczNiA4OTY1ZWY0ZWIzOTlhYzQ3NmRjYmZlYmE3YmE0MzFhYTVkOWE2ZWVhIGxlZ2FjeS10cnVuaworMzczNyAzNjY0Y2I4OGEwMzAwOGVkYmNjN2Y5NzQ4NGU4NTU4ZDE4NDNiNmI3IGxlZ2FjeS10cnVuaworMzczOCA1MjNkNDIxMTg4YjkzYTUzN2FiM2IyNDcxMTAyMjliOGIyNmY2OTRjIGxlZ2FjeS10cnVuaworMzczOSBhZWU1NWQ5NjlhMTIyNDFhNzhkZDE3ZGVlMDZhYzcyODEyYmNjOWFjIGxlZ2FjeS10cnVuaworMzc0MCBlZjA4MmMxMDcyYTcxMTVkYmZjMzAzNmVjNjNmY2RmMWI4OWE1Yzc5IGxlZ2FjeS10cnVuaworMzc0MSA1YjI1NWEzNTg4MzMwYjU4OGMwY2Q4NWIxNzYyZGU2NWRjMzdkZTI3IGxlZ2FjeS10cnVuaworMzc0MiA5MzlhOTVmM2RjZGVhNDMxYjgzOGJiZGIzYjMyYWJjYmJjMDFmNmNhIGxlZ2FjeS10cnVuaworMzc0MyBiZTY4MDBhNjAxOWI0ZDQyMTQ3MGNjNTk4MmNmNTI5ZjYzMTlmMTkwIGFscGhhMTAwCiszNzQ0IDM2NDJjNjQ0NzJjMDc4YTY5YjNkOGVmZjNmY2U5NjMxNWJiMmRhYTYgYWxwaGExMDAKKzM3NDUgMzY0OGVkZDM0M2ViNDRjNjQxMGRkZGQ4ODI0ZDA0NzliMDMwNWYxNyBhbHBoYTEwMAorMzc0NiA2ZDI0Yjk5ZGM4ODFiOGYzNzYxZGMwZjdlY2I0ZTlmZTJkYjhjZjVmIGFscGhhMTAwCiszNzQ3IGM4YjcxNGI5YmM1YWIyYjVjZjYwMTdjMjIwMTVjOGQ1YjMwN2YyZjUgYWxwaGExMDAKKzM3NDggNTk5NDk0OWE3ZWU5ZGI0MDFiOWU2Y2I1MWQwNGU3ZDMzMDU0ZmNhOCBhbHBoYTEwMAorMzc0OSAxZTI2OTRhMDY5Mzk4OGJlNDA5Njk3MzkwZWZmNmEwNWM3NjIxNWQ3IGxlZ2FjeS10cnVuaworMzc0OSA5MWJhZDM3NmI0YmNlNWViNDZjMjM4NWQyMTJlMzRlYzY1NGVhMDFjIHVubGFiZWxlZC0xLjEuMgorMzc0OSAyZWE4MTNhYTI2MDJmYzk1NjQ4MWU0ZmRlODc5NmYzNWNiZDIxYjEzIGFscGhhMTAwCiszNzUwIGY5YWRiODlmMjAwMTZhOWZhNjQ1ODAwNTY3ZTQyMDJjMGM1MmE0ZDAgYWxwaGExMDAKKzM3NTEgZmE5ZTRkYjc5MTFkYTlmZmMwNjNhZTgzYmU1NTliOGVjMDlmMmQ5ZiBhbHBoYTEwMAorMzc1MiBjNWNlMzU4NDAwMTMwYTljYzkzNjRjOWJkMjE2ZjE5NWQ5ZjY2N2U3IGFscGhhMTAwCiszNzUzIDA3MjY3ZWQxMzcxMzU5MmMwMzI5N2IwNDAyNWUwOTY2MzU2MDBlODkgYWxwaGExMDAKKzM3NTQgMWY4NDE3ODBlZmMyM2VlZGUwNzc0YjYwM2U2MWI4ODhjMDE5N2JmNCBhbHBoYTEwMAorMzc1NSAyN2YzOTVhZmU2MGY2OTY2ZGU3MzVkNzNmZTM3ZTFhYmQ2M2UzYmJkIGFscGhhMTAwCiszNzU2IGZkYmQ4OThiYzFmZTYyZDg0NzliYWExOTk4YjQ2Yjg4MjA3MWIwZjUgYWxwaGExMDAKKzM3NTcgNDQ4NjNjNDlhNDM2YmZhMzA4ZDA5MjUzNGZmNjQ3NGE0OTBhNzc3MiBsZWdhY3ktdHJ1bmsKKzM3NTcgYTFhZWU3Njk5YmVhNjU0ZTRkZmRmOTVmMWYxM2Q1NTliMmUyYmJmMiBhbHBoYTEwMAorMzc1OCA0YTcyMjk2MmZiNjk3MDk0NjUzZTIyMGM2ZGM0Zjg3OTIzYmM0NzZkIGFscGhhMTAwCiszNzU5IDc1MzljY2I3N2QyODhhYThlNmFlYzJlYzY4NDVhNGQ4MDQ1N2NmMWQgYWxwaGExMDAKKzM3NjAgMzMzNmNkY2Q0YTVmZjZjNzZiMTAxNzhkNjBjZGE0NGQ5ZDhjYjViMyBhbHBoYTEwMAorMzc2MSA0NzJhMzQ3YmFmY2NjNDk4MTNhNzBkZWUzYzkyODExMjAxNTQ0MjgyIGFscGhhMTAwCiszNzYyIDEzMGIwNGZjNTRkY2M2OTk4ZTIwYmIyYTE0OWNkZWNlMTk3NjE1OGYgbGVnYWN5LXRydW5rCiszNzYzIGVkNGMxMTZiNTg5MzRlODI4MzY1MTkwNmRhNWM2NDBmYTkxZjNjNDggbGVnYWN5LXRydW5rCiszNzYzIDgxMWVmNmVkNGNhMWJiNGMzMjFjNjdlMmRkZmQ0Mzk3ZTU0OGQ3NzEgYWxwaGExMDAKKzM3NjQgM2JiNzg4YTFkZGEwNDZkY2U1YTU1MjMwYTk4NGUxOTc0MmExYzFmYiBhbHBoYTEwMAorMzc2NSAyYmJhMTg4YzZhZGFkZTM2Yjc1ZGI0MWMxYTJjNmZlNWFlZjI4ZDQ1IGxlZ2FjeS10cnVuaworMzc2NiAwNjEwNjJmOGE5YmZkN2RiMWI0ZDYzMTRjNDcyYjMzYzI4OGM3MDkzIGFscGhhMTAwCiszNzY3IDA5MGQwY2Q5NjFhZjE3NTBlZjhkZTY4ZTU1OWYwYjk5ZDM4MWY5MWQgbGVnYWN5LXRydW5rCiszNzY3IGMyM2MxYWM5MjIwODI0M2U0MzQ4MTFmOWRkMTljYzdmZmIxNTJlNjYgYWxwaGExMDAKKzM3NjggMzVkYjZmY2E0ZGY0ZDcyZWMyYmZmNzhlOTJiMGIzNGM5OGYyNWU2MyBhbHBoYTEwMAorMzc2OSAwODE3MzJjNmMxMTI5OGQwYTA1ZmMxYTdkMGEyNGEyNzA4ODExMzhmIGxlZ2FjeS10cnVuaworMzc2OSBjNTc5ODc1YjI5ODA3OGU1N2NjNWIxNjdiM2JkZGUyMjc2NjIxMmU4IHVubGFiZWxlZC0xLjEuMgorMzc2OSA3NDgxOTA0MGU3MjY1NzkxNmZiNDBiYTRiYTZhY2YwZTk2YTAwMjIyIGFscGhhMTAwCiszNzcwIDA5YTJhNjYxZThjMDUxMjFiZGFiOWFjYjI0ODdiMmUyNDg1Yzg3YWEgbGVnYWN5LXRydW5rCiszNzcwIDVmMGY4YmY3YjM1Y2VkNWUzMzk1NDA3ZjhlNThhZTM0NTZkMGZlOGEgdW5sYWJlbGVkLTEuMS4yCiszNzcwIDliNGY5ZTgyMWZkNDZlYjcxMTEyZDkzMWM0NDI5ZWFjNDY0MTQ5YWQgYWxwaGExMDAKKzM3NzEgN2MzZmJjOTdmOTQ2NzcwZWFjNDBkNTJmNWJhNDhlNmNjZTc3YjcyMyBhbHBoYTEwMAorMzc3MiBiYzVjOTI1MDhmNTYwMzAxMjBlZWYwZDE4MTEyMzQwZDUxZDYzYjhmIGxlZ2FjeS10cnVuaworMzc3MyBkY2M5NWExMzdhNmY5MWNlOTU2MTFlZmQ5YWQzOGE0MDZiODJhZWI2IGFscGhhMTAwCiszNzc0IDNiNmY5NTA1MzA0MzYwODBiNzgzM2E0MmJkODMxZTJkYzY5ZjM2ODkgYWxwaGExMDAKKzM3NzUgZTIxMGE0YTNkOWYwYzg2YWFiYjhjNTYxMTRhZTVjNjE3ODViYmQzMyBsZWdhY3ktdHJ1bmsKKzM3NzUgMWZmMzdmZjZhZmY0ZTRkNmI1YjEyZTE4N2EzNGNkYzU5N2ZhNzQ2NCBhbHBoYTEwMAorMzc3NiBhMjdkNmVjM2ZkNGE1OTk5ZjYyMDBlZDc5MWY0YWM4MzI5MDRkMDY5IGFscGhhMTAwCiszNzc3IGQ2OGY2Y2MyNjExZWNlMzIzZDcyMDE2ZDE1MjQ3MTg3MTgxN2U4YzcgYWxwaGExMDAKKzM3NzggZjVjMTk3OWJlYTdjZDVjMmNhMmJhZGYzYjg0ZGU5ZWIzZjRjMWM3MiBhbHBoYTEwMAorMzc3OSA1NmNiZmRmMzcyNTRjOWUwODU3YWQxY2RkZTFkNjVmZTNjYzJkYWNhIGFscGhhMTAwCiszNzgwIGMyODY4ZWYyOGJlZTJiMmYxZDJiZWM5ZjMwMjQyNzBhMGMyZWFmMTggYWxwaGExMDAKKzM3ODEgMWE4ZTkwYTM3MzU3YmFlN2I0YWJhOTIyZjFmMGFiMzNiZmRjZWY2ZiBsZWdhY3ktdHJ1bmsKKzM3ODIgOGU5N2E2OGIyYjE3ZDAxZGFjNzQ1ODYzNDRmYjA2OGNlYzhmOGU2OSBsZWdhY3ktdHJ1bmsKKzM3ODMgYmRiZTZkOGE3YThmODZmYmNhMmI3ZTBhYmViOWFjN2Y1MDI4OTVjYyBsZWdhY3ktdHJ1bmsKKzM3ODMgYTRmNmJhMmU0N2ZmZDYzM2EyNTZkMjc4NTdhOTg5ZGMwNTA1YTJmZiBhbHBoYTEwMAorMzc4NCA5NzgxOTU2NThlOWEzN2UyMGI5YzIwOTZhZjM2MTc0ODQ5YjQxMDNjIGFscGhhMTAwCiszNzg1IDA5NDIwZTJlOTM4ODQ1YTBkNWFlZmZlOTNhZDQ5NDRiZmY5YjQxMzEgbGVnYWN5LXRydW5rCiszNzg2IGU0NTk0OGUyYjY2Y2U0ODVhZGU0OTMyYTlkYTU0ZmU5NjU1Zjg1NTMgYWxwaGExMDAKKzM3ODcgZGQ2ZWExNjdmMmJkMWI3NDFjNzBmZTg4NmI5MmE1MDhkM2YyMzMwZiBsZWdhY3ktdHJ1bmsKKzM3ODggMGY4OGY5NjViZmYyN2M4ODY3NTgxOTcyMGFiMGM3ZTUyZTA1MTFkOCBhbHBoYTEwMAorMzc4OSAzMzhmZTU4YjJjNjc3Mzg1OGVhMDIyZjQ1YWUzMjliMDg3YjE3NDQ5IGFscGhhMTAwCiszNzkwIDE0N2U5OTE5ODgzOGNjNjdmYjgxMGQ4MTFkZTgxYjBiMmI2ZTBhYzIgbGVnYWN5LXRydW5rCiszNzkwIDIwZmJkMDQzNGZiNjM0ZGZjMDBiNzdhYWEzZGIzM2M0ZjYzYzZjNDcgYWxwaGExMDAKKzM3OTEgNzY4OTFkMGNkNWZkYWMxZTQ1MTA0ZTMyODljZjhiN2FiMDI0YjlhNSBhbHBoYTEwMAorMzc5MiBkYzhhZWQ4YjIwNGQxOGZmZDc5MjQxNWVmNjRkNjI5OTkwNTJiMjNhIGxlZ2FjeS10cnVuaworMzc5MyA4YjkwOGU5OTM5NzU3ZGMzNTEyOTEwMTM1OGNjMjRhZjMzYTFjODMyIGFscGhhMTAwCiszNzk0IDg4YmE1ZDE3ZjMwYTBmNTNhYmZjMzY3MWMxN2IzZTQxYzRiZGU0ZTcgYWxwaGExMDAKKzM3OTUgNWQ1ZWI3NmJiMjc4YWE2YzE1YTI5MjQ0ZTc3NmQyZWU2ZTVkOTVmMCBsZWdhY3ktdHJ1bmsKKzM3OTUgMDdlNGM1NzI2Zjc4NTY3OGE0Zjg4MzgxYmY1ODY1Yzk1NDMyNzYzYiBhbHBoYTEwMAorMzc5NiBiYmE4MDA4OGEwNDRhMzM4NzkwNjM5NDRkOWJkNGE3ZjFjZmFiZWE1IGFscGhhMTAwCiszNzk3IGMyM2NjYWVjOTI0OTMyNWQzYzNmMDlkYWI5NDk1ZWM5Njk4YjI0ZWYgYWxwaGExMDAKKzM3OTggMDM2OGVmNDlmZjRjNjE3NDBjMTYzYWFhNjcyOThjNjc4NmU5MWE0MCBhbHBoYTEwMAorMzc5OSA1M2VjY2VkMmYyYjJhMTg0ZjIzNjFmMGM5YjkxYWMwMmYzYzFiOTJlIGxlZ2FjeS10cnVuaworMzc5OSA3Y2U0MTIyOTVjYTNjYWI1YTQyZmFjZGVhYmYyMjBmYjhmMTA1MmQzIGFscGhhMTAwCiszODAwIDk3YzVlNjA3Yjc5NzczMjY3ZDI4OGFmODA1YzMzNWFlYjQ5MWM3MzggbGVnYWN5LXRydW5rCiszODAwIDhkOGI3ZGM5OTk4MmUzNjFkNjg1YmIwM2Y1MTMwNGEyYzdmYTU4ZDggYWxwaGExMDAKKzM4MDEgYzliM2Y3N2UxOGJhZWZhZTVhOTJkOTU4NWQ0ZmJkYTgwYTI5OWNjYiBsZWdhY3ktdHJ1bmsKKzM4MDIgYzNkN2Y4MTRiMmQwNjQwMWM3YjBjYmJiZGI5YzY4ODNjNjg1NjUxNyBsZWdhY3ktdHJ1bmsKKzM4MDMgMjYwM2I0MjBjNWRlY2FjNTE3OGM0NDY2ZjdjOWUzZTZhNmVjYjdhNiBhbHBoYTEwMAorMzgwNCBlOWIwY2NlM2I5ODA5M2UwZjc0ZGE0MjdjY2E5YzJhMTBkNGMyY2YxIGFscGhhMTAwCiszODA1IDE3ZTVjOTRmODYyZjc2NzhmMGE0OGJlZmI5OTlkZTE3MjI2ZGExMzYgbGVnYWN5LXRydW5rCiszODA2IDE1ZTFiODYxMDRhNmU2MThmOTJjMjE3ZmQ2M2Q3ODUyM2Q0ZmRiYWEgbGVnYWN5LXRydW5rCiszODA3IDk5NWE4ZWY0YTVjMDRmM2U2ODExODE2OGJlMDdhM2ViODkyNDllZTUgbGVnYWN5LXRydW5rCiszODA4IGVkMjExYzc2MTA4NThiZDZkNTk0YTIwNzA3ZTM1ZmEyNDJiZDUwMTkgbGVnYWN5LXRydW5rCiszODA5IDg3Y2JmOWUyMjcyOThlNmE5YjY1MzJiZTkyYTc3MmJlYTU1MTAwZDcgYWxwaGExMDAKKzM4MTAgNWM2Yzk5MDY2YjJjNzEwOTYyOGZmNDAzYzhkZjVmNmY4YjU5YTc4ZCBhbHBoYTEwMAorMzgxMSA0OGFlYzlkMzg1MmE5NTI5MTljMGRjODJmYTgxZDcwNTA4NjJlZDhlIGFscGhhMTAwCiszODEyIDg2OWZiYTgwOWM2ODllM2Q2NGE2MzQ4Zjk1ZjQzMWU0MmI4NjlhOTcgbGVnYWN5LXRydW5rCiszODEzIDVjMDE5MzFkYTU5YmQxZDE4ZTM2N2VjM2E5YjE3ODJjZTNlNzk0OGIgbGVnYWN5LXRydW5rCiszODEzIDdjMzU3YzZhMjhiZGM4OWRlZDhhNDllNmViNzQ4NjMyMGIzZjBhZDIgYWxwaGExMDAKKzM4MTQgN2VjZDYzODA1NjZjYjMxOGIyY2UyZDZkNmVlZTYzMTI1ZWUwMmRmMyBsZWdhY3ktdHJ1bmsKKzM4MTUgZTA1M2E4NzgyOGY0NDI2MmIzYWQyNjM5MmJlNDNlNDE0Yzk5NmU5ZSBhbHBoYTEwMAorMzgxNSA5NzhiZjEzNGY0NGFiN2MzYzg0YzQ3NmEyOTFlN2Y0ZWQ5NzgzNmE2IGFscGhhMTAwCiszODE3IDlmYmYzNGUxYzFmNzZiZjE0MDRmOGViZTZjMmIyNjM3MjQ0M2U0MjIgbGVnYWN5LXRydW5rCiszODE4IDVhMTdjNDNkY2ZmMDNjZDkyMTBkNWNjYzVhODM1MTg5YTE3ODQ0OGIgbGVnYWN5LXRydW5rCiszODE5IDQwNDdmMjI0ZWZkYjBlYzc4ODJkZGFiZWEyODAyMjA3NjdkZDU5ZjkgbGVnYWN5LXRydW5rCiszODIwIDYzMGUwMzEwOWM2MzhkZDE2Y2RlOTM3OGFmYTQxMWY4YzI5ZDFmNmQgbGVnYWN5LXRydW5rCiszODIxIGRmMGFlZTY0MTE0YmNmMWY5MjM5N2JjOGZjODQ0N2FiNjE0Y2JiYmUgbGVnYWN5LXRydW5rCiszODIyIDFmZjZjZWRkMjI0MTJkZWQ3NTc0MWQ5YTRkN2ZjN2FkYTUwYjliYzYgbGVnYWN5LXRydW5rCiszODIzIDFjMzY0NGJhYjg2YWI1M2YyZjI5MjY0MTExZDNkODJhZDExODU2YjcgbGVnYWN5LXRydW5rCiszODI0IGI2OGZiNzM5ODVkODM2YTQzMjBhZWMwYzZkMmQzMWE2MzQyN2FkMTAgbGVnYWN5LXRydW5rCiszODI1IDQ0MzQ3MWZmMzE0NzBhMmViMzIzMjkwYjYyYWQ4ZTIxYTY5MDNhNmIgYWxwaGExMDAKKzM4MjYgYmEyNGZjOGQzZjhjNTVkZjViMWM0M2JlZWZkMTIzNDQxNzFmNjhmNyBsZWdhY3ktdHJ1bmsKKzM4MjcgMGVmYTI0MGIxZGJjMDU3ZGM0NGZhMWQ0NGQ0YzRkOGZlZGFjNTYzOCBsZWdhY3ktdHJ1bmsKKzM4MjggNTA1NTMwODE1MmE0ZTI4NzdiOWU1Zjk3MmRlMjdhZTg3M2RiMzM4NiBhbHBoYTEwMAorMzgyOSA1Y2VmNGY1YTI4Y2VkZmNhNWZhZGU4MjVlZGZjNjBiMDdmZjZlODg4IGxlZ2FjeS10cnVuaworMzgyOSA5ZWM3ZDZmNzc1MDBjYTA5MGMyMTkxZTBiM2I0MGM2NmEzZTBmZTc3IGFscGhhMTAwCiszODMwIDgxZjI2YmYxMTc4ZjllMzcxMGMwOGFkZjZiOGNjOTQyYjE2ZmZkMTYgbGVnYWN5LXRydW5rCiszODMwIGVlM2Q1ZWExM2EzN2I5MmM2ZWMwNTllZTlkODI5ODczYjE2MTk2NDIgYWxwaGExMDAKKzM4MzEgNDhhYTNkMzMxNGFjMTcxZGI1Y2UxN2Y2NTZlNGI0YzcxMDAwZTFhMCBhbHBoYTEwMAorMzgzMiA5ODA2MjZlY2FkNjFkOGQwNTZmMzlmZWM0ZTJiYTg5NDM0ZmJhZGM2IGxlZ2FjeS10cnVuaworMzgzMiA1YzM1MDYzMWM4Mzk2MDVhMWQzYWRjNWJmNDNjYWYxNDgwNWQxZjFmIGFscGhhMTAwCiszODMzIDNlNjViZmQxNTc2ZWQ5OGEwOGExOTZjNzE2YWQ1YzgyYTMwNDExZmMgYWxwaGExMDAKKzM4MzQgOTkzMDA4N2VhOGY1ZTZlOGQ3Y2M1NDMyNmE2ZmI4NGVhMjhiOWM3NSBhbHBoYTEwMAorMzgzNSA4Yzg5ZjZlZjlmOWY4ZjU0N2Q1N2M4NTg2ZTMwZWViODNkZWYzNDM0IGFscGhhMTAwCiszODM2IGNiNWZkODAwNjhjZWYyNTY4OWRiN2RjYmJkZjllMzcxOWI3OWU4Y2EgYWxwaGExMDAKKzM4MzcgYmFmYzUzM2UwZWI2YWM1YWE1ZjA4MmVjY2ZiZDMxODI3OGY2YzU0NyBsZWdhY3ktdHJ1bmsKKzM4MzcgNzAzMmE4YTJjNDJjNTIyNGUzY2Y1MmYzYzg4NmVjMzZjYjUzZDEzMCB1bmxhYmVsZWQtMS4xLjIKKzM4MzcgYzk2ZmM0OTdiOTMyZjVkZDI4NjAzYjFkYmRjNTFlMWM5ZWI3ZDA0MSBhbHBoYTEwMAorMzgzNyBiMTViOGNjOWI4ZDEwZTAzNTJhMGI4YjdlOGQ1MWZhMzA5ZGI2ZGYzIGxlZ2FjeS10cnVuaworMzgzOSAyNjhlNTc2MzAwMTYyMDI4MDg2MDllMWE4NmQwZGIwODgzOGQ2OTI1IGFscGhhMTAwCiszODQwIGI3MGYwODkwNzU0NjE3YmYzZjg1ODEyNGNmYmI3YzA1MTcwNmI0OWEgbGVnYWN5LXRydW5rCiszODQxIDZmNTJiNTM4OWI4ODgxN2Q0NGI3MTQ4ODcxZDdjMDcwNDlhYTk3NzggYWxwaGExMDAKKzM4NDIgZTM4MGI0ZDU0ZmQzOWVhZjNhYjg5YTFjOTRlM2FkMTg5NWQ2OTY4ZiBhbHBoYTEwMAorMzg0MyA1ZGZkMWQ1MWQ2NmRlYWE1NjVlNWE3NzBlNDZjZjAwZDgwZWFhNWVhIGFscGhhMTAwCiszODQ0IDY5NjZkOTU3YjViMWU3NTBmNjBmZGU1MzdiMzlhNTBkMGI4Y2E1ZWMgYWxwaGExMDAKKzM4NDUgMmI1ZjhiMjAyMWJmZDczMDk0YzlmODIyOGVlNDhmNjYyNGRjNTgxNyBhbHBoYTEwMAorMzg0NiA4ZGY3MmU1OGZhOTgwMzJjN2U0MjYxYTE1MmM0MzQ4NDA2YTJhODgxIGFscGhhMTAwCiszODQ3IGFkMjE2ODc2YzQ3ZmJmZjcwNGIzYWQyMTA1ZDk5YTJhNWFiODljMjQgYWxwaGExMDAKKzM4NDggOGM2ODE0ZjM0Y2RkOTM2ZjA3MzkwYzNkMDdiOTgxNTg4YzRmZGIwZiBsZWdhY3ktdHJ1bmsKKzM4NDggMjJiN2QzNzM1YmQyNWZlYzNmY2NlNDE2ZjM0YzA4Zjg5ODhlMjc2OSBhbHBoYTEwMAorMzg0OSA2ZDM1MzA4MjYxZjRmNzRkODVjMTAzYjk3NWM4NDM0ZTQwNzc4NWI5IGxlZ2FjeS10cnVuaworMzg0OSA3NzIzZTAwMDM5OGRhNzc0NDQ5ZDdlZmQ2NTA1OGJjMTkyNDhlNTBmIGFscGhhMTAwCiszODUwIDU5NzMzNTRmYjQ5OTU0ZjcyNDY1ZjcxMzIyY2FlY2FiNDZhZDBjNzUgYWxwaGExMDAKKzM4NTEgY2QyNzllMGY3N2Q4NTNmMjYzY2E3NjM1ODBmZWMxMzUzNTk2ZDQ3NyBsZWdhY3ktdHJ1bmsKKzM4NTIgYzM0MTViMzE5YjRlODY5MmY5YzY0ZTI3N2E0N2ZiYzE2YjhlMThmZCBsZWdhY3ktdHJ1bmsKKzM4NTMgMTcyYWEwZWVlYjZmN2NiZjBiNzU0MWZmZGQ4Mzc4OGFhZGIxMWY5NCBhbHBoYTEwMAorMzg1NCAyNzQwNjZiZGUyNDEyM2NhYzA1NjM1Y2I1OTIzOGIwMDZjZmU0OWFhIGxlZ2FjeS10cnVuaworMzg1NSBkZjBmYjc4OGMwYzFmNTA2NTMzMTM4OGJiMzkxYzY0ZTQ0ODUwZTdjIGxlZ2FjeS10cnVuaworMzg1NiA5ZTM0NDQ4YTAwNWVkNzVmYjBhNWI1OTU3NzE0ZjRjN2EyY2NmZGUyIGFscGhhMTAwCiszODU3IDE2ZDFkYWIzZjJjMWI5YjMzMmE3NjUwMmFlYjA2ZTczY2U5M2I4YWIgYWxwaGExMDAKKzM4NTggOGNjOTA4YjBkODNiZGUyNWVmMTE5YzY1Mjc5NDA3NjUyYWYwOWRkZiBhbHBoYTEwMAorMzg1OSAzMjg2YmZmNDQzYzZhMDY2MGJjZDU4MWIxYzc0MjFmOGNmOGI0ZDYxIGFscGhhMTAwCiszODYwIDI3NGI5M2IxMjExM2Y1ODlhNTVkOGZhNjg0YzgwOGNhNDhjYjcxOWYgbGVnYWN5LXRydW5rCiszODYwIGU1ZDY2NTIzMWM1ODk0YzYzNjFiMzNjOGEyYTA3YmJjZTkyN2QwZWQgYWxwaGExMDAKKzM4NjEgOGVhYjJlZTQwZjMyZGJkZWQ4YWM2NGUyZGNiZDhlYjhhNmNjNzVkNCBhbHBoYTEwMAorMzg2MiAyNDlmZTVlMjRlMjBlYjhkOWUzYTc3MmI3YmVjMTY3N2ZkMmU1ZjgyIGFscGhhMTAwCiszODYzIDhhYWJlOWFhZTBmYTA3YTZhYTU0MmQxZmY4YzI4MmFlZTZjNzZjNTQgbGVnYWN5LXRydW5rCiszODY0IGNmNjBhMmIyNDk3OTg1ODg5ZjhiZjQxYjAxNzY1NTEzNjBiYTI5YWEgYWxwaGExMDAKKzM4NjUgZjRkYjkyZWVmMmFmNzE3YjRlY2ZkNzU1MWI0YjBmNTQ3NDViMzUxMyBhbHBoYTEwMAorMzg2NiAwMjBkOGMyZDlkM2NmYjNkMjY4NWEwNGIzNmQzNmJmM2Q1ZDM0M2I5IGxlZ2FjeS10cnVuaworMzg2NyBiZDFhNGQ3MTdlOWQxZWU0NGVhOGVhM2E4ZmVjZTc0MmVlYzJmY2UyIGxlZ2FjeS10cnVuaworMzg2OCA3ODBmMzM1YmY1MjRiNzA1OWFlNjQyNTVmOTA5ZTAwZTZiYjVhOTRkIGFscGhhMTAwCiszODY5IDU5ZmQ0Njg2Zjg4Y2E2NGI0YjdiMDNlOGE2MmRiMzRhYjQzYzNmMDUgbGVnYWN5LXRydW5rCiszODcwIGIzYmZmNWVkNWQzZDA4OTQxY2JkNGQyNWNmODQ0OTJlNzMyZWVjODIgbGVnYWN5LXRydW5rCiszODcxIDk2MDA1NTM5MDBkNDdlYTE0MDUwMjgzY2Q4ZWU5YWJhZGE0NDE3ZjYgbGVnYWN5LXRydW5rCiszODcyIGIzMzcyMGQwYWQ5N2IxNTM3OTYxNDllZDVhNjg4MzE5YzE1OGEzNDkgYWxwaGExMDAKKzM4NzMgY2RhZmM5NTFlOGU4YjMwZmQxMzIwNmY0YjgwZGYxNDVlM2UzZGQ4ZSBhbHBoYTEwMAorMzg3NCBkZGRjYmEyMDM4YmNiNWIyZjE5ZmRmMGQ1ZmNiZDUzZjIwODBlODNjIGxlZ2FjeS10cnVuaworMzg3NSA3ZDIxYzkyM2I1NGFlYmYzY2RkNzMxZGZmNTkyMzk4OTYzNTQxNDBlIGFscGhhMTAwCiszODc2IDkwMzc5NGRmNWVhOWVlZDU1YTMwMGFjZjJmNzYxYzU3OGYyNjRhOTEgYWxwaGExMDAKKzM4NzcgZTQ0NDk5YTQ0Y2I4ZTM3NGUzNWJiZjU0YjNhYTZiZmEwZjYxNzcwOSBsZWdhY3ktdHJ1bmsKKzM4NzggMzcwMDUwY2QwYjZjNTAxZTYwMzQ4YjA5ZDRiZmJhZWUyNDNiZjhhZCBhbHBoYTEwMAorMzg3OSA4ZDI2ZWUyNGFkMTgyZWEwZThhYjY3MWE0N2Y5OGQ3NTkxNzJjMWE5IGFscGhhMTAwCiszODgwIDNhY2Y4MThmMzU0ODMxZjQ2MjM2NzU1MWIxYmVjMjBhNTI5YmJhMDMgYWxwaGExMDAKKzM4ODEgY2RiMTQwNDFjYzg3YmI2NDBhZDA0YjA0YjIwMmZjZmJjZTdiZmRlYyBhbHBoYTEwMAorMzg4MiBhY2JhNDQyN2U4OWM3MDAwNzQ4Zjk4NGJkYTZlYjIzYTVmYzM3MmVkIGFscGhhMTAwCiszODgzIDNkMDE2OTk5MjY0YWMyYzczZWM4ZDZiNDQwZjFkODZmN2Q1ODIxYzUgbGVnYWN5LXRydW5rCiszODg0IGFmM2YyYTAzYmIxOGZlMGVlZjk3ZDk2ZWQ0ZWExOWExMjJhOTJhZmUgYWxwaGExMDAKKzM4ODUgM2NkZGM2N2JlM2Y1NzU2NjJjZjczNGI1MTI0NzFlZmI1MDBmODYyNiBhbHBoYTEwMAorMzg4NiBhZTRiOWNiNWJhMTU2MTEyOGFjYmNjYzM5N2IwMDZmMTgxMzkwNzI0IGxlZ2FjeS10cnVuaworMzg4NyAwNmFhNjA4YzU4OWU4NmM1ODZiYzFjY2QyNjBmZjViNWY0ZjkwM2Q2IGxlZ2FjeS10cnVuaworMzg4OCA5MWY4NDZmNmQ2YTYxZDA0M2QwZTcyNGY4NWM3ODRkMTRhNzE1YTUyIGxlZ2FjeS10cnVuaworMzg4OSBlYWNhYTRmMDc4MjZkOWEwMGIyM2YyMTYwNDlkM2UzOGE4N2NhNDY5IGFscGhhMTAwCiszODkwIDJhMGQ0OTk3NDBiNjI0Yjg4MDcyNDM5ODMzZjFlYmUwNmE3NjU0OTkgYWxwaGExMDAKKzM4OTEgODM2MjJiN2EwMGI1MjM4ZjgzMDU5MDZjZjhlMzRjODdjYmMwNDlkYSBhbHBoYTEwMAorMzg5MiBlYWFiYTJjYWZlZWI5YzM0MDc4OWVhMmJhNDM0MjIxYzM5NTMxMTg5IGxlZ2FjeS10cnVuaworMzg5MyAyZDBlY2U1NjA0MDY5YTE2MmY3OTQzNDBiZWIxYThjODA0NDhhNjk2IGFscGhhMTAwCiszODk0IDcyZjhlMWU2MTRmMDYzMDM1Nzc1OTNjNzFkMjFmZDY5MTU1YTlhNTcgbGVnYWN5LXRydW5rCiszODk1IDQ1NzI4YmZlY2I3NjhmMDIxMjg1ODc3YzYxNTFmYTllNjAxYTMyOGUgbGVnYWN5LXRydW5rCiszODk2IDY5NWZiNDk0YTNhMjJmYzkzNmI0NGY1MzBkODU5Y2VjZDE3YmEwYjAgbGVnYWN5LXRydW5rCiszODk3IDdiZjZiMTI4ZTk4YzQ4ODY4ZTUzZDdiZjdiYmFjMjU5Mjg4YzkwMjUgYWxwaGExMDAKKzM4OTggZjMyNjM3NTk2NzhlZjM4NDcyZmQxYzM4NjcxNmExYWUwMmNiMjI4OSBhbHBoYTEwMAorMzg5OSA0NDRlMzQ5Zjk2MmYwYWUzMDA2ODI1MmU1OWRiZTU3NzkxZmNjNjgwIGxlZ2FjeS10cnVuaworMzkwMCBiMjFmMDQ4YzIzZTllMDI4NDUwZjFmMmVjNGQwNGFlYjU3MTI5YmM0IGxlZ2FjeS10cnVuaworMzkwMSAyODhhNDYwNmQyZmRlMTAwNjhkYzc5Y2VhNmFjZDlmODA3NDU1ODU2IGFscGhhMTAwCiszOTAyIDAyMWRhYWJlNjlkODc5NTY2MWY3OWY2N2VhZWIyODJmZjM5NmE1MDAgbGVnYWN5LXRydW5rCiszOTAzIGMxNzM2MGExNjU4NzAzOGM1YmViYmYzZmRlOWIxZGVlN2QzYTNmMDAgbGVnYWN5LXRydW5rCiszOTA0IDMyZGE1NzgxOGU5N2I1ZmZkMjA4ZWI5NmJlYWNiNGEwZDk4MzBkYjggbGVnYWN5LXRydW5rCiszOTA1IGI5NjM0YmQ1Y2E1NWE5OGUyZWZkNmIyNzljMGQ5MjlhMGRkZjZjNjEgbGVnYWN5LXRydW5rCiszOTA2IDIzODRmYWE1MzUwZjNiNmQxZTBmMmIxM2YyZjlmMGQwNTZiNDU0NTkgbGVnYWN5LXRydW5rCiszOTA3IGIzZmNkYmQyZDliYmE1M2I1Nzg1OWU4MzAxMjQyZmUyMWM0YmEzMTIgbGVnYWN5LXRydW5rCiszOTA4IDhkN2FiMmM3ZTk5MzMwOTEwMjc1ZjAxZGI5MWQ4ZWVlNTUxNmQ0NTcgYWxwaGExMDAKKzM5MDkgZTk2YThjZmJiZWYxYjZhM2RkZjYzZWY5MGZkMDhlZjdkNmZlNDc3OSBhbHBoYTEwMAorMzkxMCBjOTY0MzY0YThmN2Y4ZTdjMDRmZTc3ZTI5NjJkYzJmMjg0MjM2MDg3IGFscGhhMTAwCiszOTExIGIyZDE4ZmE1MjlmNDg3NjBjYmRiNGE1NzFkNDIzNTA3MjU4OGI4YTYgYWxwaGExMDAKKzM5MTIgMDU1NjYxN2FhMzM4NmU3MGZmNDcwZWNjZTFmNmE2MDM3MWVjNDYxMiBhbHBoYTEwMAorMzkxMyBkNTkwZmZkNTRmODk4Y2ExMTdmMDAyNzkyMDM0N2MxYmMyZTkxOTZlIGFscGhhMTAwCiszOTE0IDc5YmI2ODI3MGM3YjEyY2RiMDM2YTBhZmQ2MmUyN2NlZDg1YTE3NmIgYWxwaGExMDAKKzM5MTUgNDFiY2QxODUzZmVhNTdkYjliOWVkN2Y4MjliNzc3ZjhlMGY4YWE4OCBhbHBoYTEwMAorMzkxNiAxMzEzMjNmMTcxNTkyMmZkZWMwYTc0NWJhMGM5YWEyZDk4YzlmMTVkIGFscGhhMTAwCiszOTE3IDgxMDE4NjUwZGMzMjQ1YTk2ZWJjMDQzMGNmYjM4ZjlhMmI5MGFmOGMgYWxwaGExMDAKKzM5MTggYzEzYmJkZmVlYmZmZTZjMWUwZjRlMGFhZDVhN2JjZTFkMGJiY2JkYSBhbHBoYTEwMAorMzkxOSBjYTVlZDUyYWNhMjdhNmE4ZDc2MGVmMGNiOTE3OTI4YmUyOTE1YTA2IGFscGhhMTAwCiszOTIwIGZjNDVlNTc3ZmY5YjIwY2VhODUzNzliN2QyNzA0YWQ3ZWE3NDdmNjIgYWxwaGExMDAKKzM5MjEgYTcwNDFkNmY3ZGUzZTM1ODk3N2RhOTI4NzhkYzI0NTU0ZDIwY2ExMiBhbHBoYTEwMAorMzkyMiA1ZWZmYWFkNzFiYTUyZTVlNmI0NDBjOGQ4NTNiNjRmNDliMjk2YjVkIGFscGhhMTAwCiszOTIzIGFkMjI3MGU3MWVjM2YwYjY1M2MyN2MyNmZhMTViYTNjZWRlZTkyOTQgYWxwaGExMDAKKzM5MjQgMzQ2OWQwNGUzZTM2ZDVmY2E4OTliZjRjYjBjOWYxNTViNWE0NzUxMCBhbHBoYTEwMAorMzkyNSBmMDcxNGJiNGVhOTZhMWUxMDA4MzIyZWQ1YjcxZTQzOWY4NzMzMjc4IGFscGhhMTAwCiszOTI2IDMzN2FiZGMxNTg0YTQyNWU1NDQzYTg5MjdmZGEzMWJlYmJhMTY1OWIgYWxwaGExMDAKKzM5MjcgN2M3NWY2MDQ2OGY4MDJkMGY3MzMyOTRmMWNmZmI2YWZiYzUxOGE3ZSBsZWdhY3ktdHJ1bmsKKzM5MjggMjIzNmQ3MDlmZjJkYWVhNjA4ZmEwNGJkZWM1MzkxZDIxNTk2ZDRiNiBhbHBoYTEwMAorMzkyOSA5MGEyMDk5Mzc0N2QxZjM4YTVhMGM0YmI1ZjI1MjQ2MGE1NmQzMWJkIGFscGhhMTAwCiszOTMwIGMxY2RlZWQ4YzUxNDRmNWVlNzIzMzJlNzNlNWUwNDA2YmRjMGI1Y2YgYWxwaGExMDAKKzM5MzEgM2Q4YmE0MTg0OGZmMGY4MjI1NDQ0NWUyNjllYjFjOGUzMzA3Y2I4YSBsZWdhY3ktdHJ1bmsKKzM5MzIgYjQ1NGRjOTI0N2IwNzZiN2NhNTdjYTk2ZThjMTI0ZTBkYTA5MjhhOCBsZWdhY3ktdHJ1bmsKKzM5MzMgOTk4YzY0MjJjZDhhYWUwM2QyOGI4YTVkMzJjYmI2Y2NiNjY4YTMxNCBhbHBoYTEwMAorMzkzNCBiY2YwYjhkZmRhZTlmNDQ2ZDYxMzFlNDllMjg2MjRkODMxYjM4YmI0IGxlZ2FjeS10cnVuaworMzkzNSA3ZmRlYWRmYTgzZTBjYzY4Nzg4YzM3MDQ5Y2JiMjg3MGIwN2UwMWJlIGxlZ2FjeS10cnVuaworMzkzNiBhYzJlNWNjMjk5NDlkOWVkNmMzZWMwNTk0MTU0OTNhZjYwMWIzMmExIGxlZ2FjeS10cnVuaworMzkzNyA1OTRhOGMxMmQ2ODgyNzZmMmQyMjcwZjhiNDZjMGVkZjA0Y2IwZWU5IGFscGhhMTAwCiszOTM4IGZjYTJmZWRlYTcxY2M2N2FhMjIwYmVmYzI1YThmYjYxYTk1YWI0YzAgYWxwaGExMDAKKzM5MzkgMmM2ZjEzMzc4MDFjYzAxMDJlZjczMDk2YmYwZGU2YTZjMWFlMDE4MyBhbHBoYTEwMAorMzk0MCAxMjg3ZmIwNTk1ODg4YzAxNDdjNDU1ZWI2NjI0N2Y3NzhkNGVlZGE0IGFscGhhMTAwCiszOTQxIGY2NTc5NDg4OTM0MzcwYTQ0NDhlNmUzYzNmZjc1NDJkM2U3NWFkNDEgYWxwaGExMDAKKzM5NDIgYWM5ZTEyYjRlYThjNjU3YmNhMzRlMThhNzExN2IwYjQ0ZTNkZmUxNyBsZWdhY3ktdHJ1bmsKKzM5NDMgMjBkZjY1MzM3NmI0MTdiOThlMmFhYWVkM2FkZWI0NzVhYzkxNWYzMiBsZWdhY3ktdHJ1bmsKKzM5NDQgNjcyMDExODcxYTFiNjQwNTliODgwMGZhZTFlNzg3YjQwMjU1MTUxNyBhbHBoYTEwMAorMzk0NSBhNWJkZmY5NzA1OTUxZmE2Y2U3YTY0Yjk0MjE1ZTk2NTA3ODlkOGM0IGFscGhhMTAwCiszOTQ2IDg4ZGUyMWVmNGE4YTMwZjZhOTE2OWI4OTZmYzI2YThjN2FjOTM3MWYgbGVnYWN5LXRydW5rCiszOTQ3IGJhNmFjODJmY2I2ODZkZTE1Y2MzNmE3ZTNmZDM0NzU4YzVhNGFkOGYgbGVnYWN5LXRydW5rCiszOTQ4IGIzNDQzNTQ2ZDZlZTRiMDA5OGY5MmIwYzU0NGViMjU0NzFlOTA4M2QgbGVnYWN5LXRydW5rCiszOTQ5IDQ1NzkwMzU2ZTAyNGY3NjIwNmJjMWE0MGU4Y2E3YWI1MWI2YTA4NTIgYWxwaGExMDAKKzM5NTAgMjE5N2RkMjQxZDhkYzg2MjE1Y2JiMmQ5YWJlZjgxNGEzODY2ZmI3NiBsZWdhY3ktdHJ1bmsKKzM5NTEgZGVhNjdjMmE0YzA3ZjNiZGZlYzk0MTJiNjFiOGQxNDBmNjkzYjM0OCBsZWdhY3ktdHJ1bmsKKzM5NTEgNzlhYjRkZjlkMGY1ZmYyZjJjOWMzYTMwNmYxZmViMWFkMmM1MjgxNCBhbHBoYTEwMAorMzk1MiA5ZTBlY2U2ZWQ4MWQ3YTBhZDQ1OTM0ZDYyMTgwY2I1YzEwZDBhOTMzIGFscGhhMTAwCiszOTUzIGNhM2NjYWE4NTA2MDI2ZmRlMWYyYjk2OGUzYzUyYWU0NzIxODQ5ODMgYWxwaGExMDAKKzM5NTQgZWNiYWRiODE4ODQ3NTAzYjY4YmZmZTFhZGYxZTc0Y2Y0ZTU3YTQ3ZCBsZWdhY3ktdHJ1bmsKKzM5NTUgYjJjOTIyY2ZiNGQ5N2JjZmNkODk1MGNmOTg2NTQ1NDI1ODY2MGQ2ZiBhbHBoYTEwMAorMzk1NiA0YmNmNTg0YzE1NzJiNGYyNzE4MDAwNjA1ZGZhNzhlODg4MzU3NDY2IGFscGhhMTAwCiszOTU3IDgzYjQxYmYxOTM5MmVkM2ZmNGFiNzRhMzYxN2JiZDM5OWE4MzQ0ODcgYWxwaGExMDAKKzM5NTggZDc0MTA0MWNiMDc2ZWJjYmUxZjRiYjM5N2E5OWVmZWM5NDhkZWVjZSBhbHBoYTEwMAorMzk1OSAwOWQ3N2JiNzFkNzViNTNkZWI1YTQ4YmMyM2JhZjk3YzQ1NzA2ZmRlIGFscGhhMTAwCiszOTYwIGNlMzI4NDcxNjRlMWU2ZDA3NzJjNDkxMzZjOTEzYzRjODAyYTAwOGQgYWxwaGExMDAKKzM5NjEgZTc2YzY4N2FjNzgxZDQyYTc0MzU5NjhhMjc0NDNlNzM1YTQzMmZkNSBhbHBoYTEwMAorMzk2MiA2ZWMxNTIyMjE3OTJlNjVmN2ExMWUyYWI1ZWVmNWQxNDhiZjFmMmMxIGFscGhhMTAwCiszOTYzIDMzZDMzNDQzZWM0NTlmZDIyOGNkNTQ1ZTE0ZDVlOWQ1ZGI5YmI0YjQgbGVnYWN5LXRydW5rCiszOTY0IDMwMWY4Y2E5OGUwYjVmNDQwYzlkMDE0NTA3NzJkM2M4ZTBlYThhMTMgbGVnYWN5LXRydW5rCiszOTY1IDU3YjliNzdkYTIxYjM5ZDVhOWE1YzkxN2E4MTFkZjgyZjM5ZjkyMTAgbGVnYWN5LXRydW5rCiszOTY2IDVlNWE2MWJkZGUwYjc4MTljZDIzOWVlZGU5ODViMGI2YmVkNjhiNWYgYWxwaGExMDAKKzM5NjcgOTA3YzVkZDg5YzZjZWZiYThhNDhkNDdkYjM5YTQwOTdmOTViNzIxYSBsZWdhY3ktdHJ1bmsKKzM5NjggNGU3ZWI1YTNmYmRhZjEyMTVlZDcwMDM2OGJkOWZlOGQyMDg5MDExZiBsZWdhY3ktdHJ1bmsKKzM5NjkgYzJmZjIxNjNmMGI3MGMxZWNkMGQ4YWFjMDNkNTMzOWE0NDc4OTZlMyBsZWdhY3ktdHJ1bmsKKzM5NzAgZThiZjEwNzcxNzgxMzk3YjhkMzc0NTI5ZjExMmY5NGI0OWFjODUwMyBsZWdhY3ktdHJ1bmsKKzM5NzEgNjBhNzIxNGYzM2E4ODE2NWM3MDRiNzMxOWVlNjI4ZDUzYmNjOGU4YSBhbHBoYTEwMAorMzk3MiA1NDg4OTExZWJjMjZlYzcyOTY1YWMzMDkxYjI3ZTAzMTBiYjE3MmU3IGFscGhhMTAwCiszOTczIDE0MzFhYmIyODM1M2Y0ODUwZWE1ZGJjMjFiMjA2MjRmMGVmMGNkY2YgYWxwaGExMDAKKzM5NzQgMTI5ZDk4YjUxN2MyNTZmZTg1YjQzOTI2Mzc2YWEwNjY0ZDdhZjQ5ZSBhbHBoYTEwMAorMzk3NSBhNzU0YmM3NGU1ODRkYWVhN2YxMGY0OGJlZjhjNzMxOTljYmFjOTRjIGxlZ2FjeS10cnVuaworMzk3NSA3NTkzOWRjYzkzOGE3MWFkYTFlZDg5YzM1OTEyNmMwZGMxNjAxYzE3IGFscGhhMTAwCiszOTc2IDA3NzA4MGQ3NThkZGE2ODJlZDYxOGEzYTVjOWFmY2RkNzdhMmVlMjggYWxwaGExMDAKKzM5NzcgYzZhZmI5NmE0NTIzMGY1NTFkZjE0YWMyMTE5Y2M4MGEzNjVjMWVhYSBhbHBoYTEwMAorMzk3OCA1YzI5ZjRiMWIyODUxNTI1MzRhMGUyNTc2ZjM3Mjc2OTUwYmZiZGIzIGFscGhhMTAwCiszOTc5IGUyOTExMDViMWJlZWFiMjY5YzdhMzRjZGI4OTIxN2YxYjE3OGY1NGEgYWxwaGExMDAKKzM5ODAgNjlkNWRjMjRjYjNiNTU5ZjhjZDE5ZWFlNTI5MDNkMDE3ZjMwNTk0NiBhbHBoYTEwMAorMzk4MSAyNDFjMzU1ZmQ5ZWFkNTczZmYwODA4OTFmNTEzMTI3NzNmNGZlOWEyIGxlZ2FjeS10cnVuaworMzk4MSA4ZGVkOGM2NTUxMWRhNDNiZDBiOTAzNDcwODc1YmI0ZGViOTVlZDYwIGFscGhhMTAwCiszOTgyIDJlOGVhZWU5ZWY0NWNlYTZlYzFhOGIyNTY5ODFlNGViYzk4Mjc5ZWMgYWxwaGExMDAKKzM5ODMgYmUyZGIzMTQyMzU3NGQ2MTg0YmI1YTE0YmI5Njc4ZWY2N2UwMDczNCBhbHBoYTEwMAorMzk4NCAyMjFkNDdiMjk3NGU3M2FiNzkxYTQwY2I5ZDhhYzVjZjQ0YTk5NzczIGFscGhhMTAwCiszOTg1IDc4YWNhZGVhMzkxOGZjOTY3ZTU1OGYwZmY0OGI3ODY4ZGUxOWY1ZGEgbGVnYWN5LXRydW5rCiszOTg1IGY5ZGJiYmIxNzkyOTAyNWQwNmQ2MjlhNGJlZDNlNTFhMTEzMWE3MjQgYWxwaGExMDAKKzM5ODYgYWNlYTExMDMxMjliYWMxMWFmNjFkZGE3ZjgxMmM1MThkYTViODZjZSBsZWdhY3ktdHJ1bmsKKzM5ODcgODNlZTc2NDk4MjNkMjU2Y2YyNzkxM2JiNDQ4ZjljNGFmYzhjZmY4ZSBhbHBoYTEwMAorMzk4OCA0MDQ4Y2NmODViM2QyNDU2Njc1NGJhMzAzM2ViNzRjY2Y4NjQ2MDM0IGFscGhhMTAwCiszOTg5IGQ3YTg1NTdlNzgwY2Q1MjZhODU1MzhhZWE2YTFkMGY0NGQ1NDliZDkgbGVnYWN5LXRydW5rCiszOTkwIGM5NDlkY2IwMzQ4YmU0ZWFiZGZlNTFlZDk0Yzg1OWJkMzJjZTc3YzYgYWxwaGExMDAKKzM5OTEgN2I5ODI4YmM3MWRkNjQ5MjU5YWI0ZWQ3YzE1ZDhhMjJkZWFiOGJkMSBsZWdhY3ktdHJ1bmsKKzM5OTIgZTIwZDA2OTRlNzQwMTRlYmY2ZGFiNjRkOWIyNmQzMGJmYTVlM2QzMiBsZWdhY3ktdHJ1bmsKKzM5OTMgMTAzNmYyMDVjYzJkN2E1ZjEwN2NkYzFmYmVlMzIwNzQ5ODE5MmMwNSBhbHBoYTEwMAorMzk5NCA3MDQ5MmQ2NTllM2M3YzEyNGQzZmNiMTQwOWEyMDliM2ZkNzI1Y2NiIGxlZ2FjeS10cnVuaworMzk5NSBhODI3NTU2Mjc4NGNkMmYyNjkxOTYxMWIwODdlNTY5OWQ2MTQzOGY4IGxlZ2FjeS10cnVuaworMzk5NiBmNTBmZTRiOTUyYmFhMTcyZDZkZmZhM2EyOGNhZDYyOTVlZDVkNzMxIGxlZ2FjeS10cnVuaworMzk5NiAwMzI2YjVkNjE0NDVlZTNhOGQzZGUyODExOWY5NjUyY2I3MmQyZTNmIGxlZ2FjeS10cnVuaworMzk5OCA2YTAxZjA5OWYwYWQ4ZDQ1NDdkZDdjNmE4YTFkOGVhYzZlNWViZmRmIGFscGhhMTAwCiszOTk5IDM2NmY4ZGVlOTZmYmY0ZTc3NDYwOGUwZWRlOWJjMGFiNGQ3YmEyYTEgYWxwaGExMDAKKzQwMDAgMmUwNTBhNTBhYTBhMDFmMzUzNWRhMDI3OTFhNmEwZmUxOTMzM2VmMiBhbHBoYTEwMAorNDAwMSAyYjI3NTUzMDI4YWFjMjNlNjg3MDgxNzk4NjM5YzQxOWQzNGNjMDhmIGxlZ2FjeS10cnVuaworNDAwMSA3NDkyMGMzYTM2N2QyZDFjN2YyOTM4OGIyNDQ0MDFmZDJlZTQzOTg3IHVubGFiZWxlZC0xLjEuMgorNDAwMSAyMjU0ODIyOWQ2ZmRkY2UzM2NmNTdhMzkzMWZiYjcyNzJjNGJlNzY2IGFscGhhMTAwCis0MDAyIDA0NzdiYzM5YzkzNTkyYWQ5MjMzOTFmNzgzMTQxZGRhODE4Mzk0MzEgYWxwaGExMDAKKzQwMDMgN2Y4OTFmMzI4NjRjYTUyYTFkMGM3OTZiZWI3YjMwMmQ5MDJjYzNmOSBsZWdhY3ktdHJ1bmsKKzQwMDMgODg5NmU0ZWMwOWZjNGE0Njg0OGY0MzhiMDQxZDIwOGIyNTUzNGUyMCBhbHBoYTEwMAorNDAwNCBiMTRjNmI5NTUxNjFjYTA0YWUwOTNhODY3MjNkNDQwM2NhMTMwY2JmIGxlZ2FjeS10cnVuaworNDAwNiA4NDU0NTc5YWI1MmYzNzFkY2Y1NTQ2Y2I1MzBlMmRkNmZkNjBmZjVlIGxlZ2FjeS10cnVuaworNDAwNyA5Y2M4NThiZDU3M2RlMzRmMzA5ZmUxNmVhNWM0OGU5NDZiNzUzNzI1IGxlZ2FjeS10cnVuaworNDAwOCA4MTJkMDgxMWZjZjNlMDYyZTQ1MTU5YjQzOGNhYmFhZjAwMzA4Y2QyIGxlZ2FjeS10cnVuaworNDAwOSBhNzVkYzg2NTZjYjBhMjM5M2RiYTRjMjUyZjMxZDMxMmJlNGQxMzJjIGxlZ2FjeS10cnVuaworNDAxMCBiNmI1MGQ5NDEyNWZkNDJmMTAyYmMwZDhmYzA0NDNjNDc1OTYyODRkIGxlZ2FjeS10cnVuaworNDAxMSA4N2EyYjA0YzQ2ODBiZDEyMWZjM2U2ODZmZmE4NzhmNmI0ZmEzMTZiIGFscGhhMTAwCis0MDEyIDk2ZDBkYzQ3MzllY2EyNDgyMDc1M2IxNGJkYmViMDgxNzA3YWJkMmUgbGVnYWN5LXRydW5rCis0MDEyIDFjZjYwODU2OTdjZDVhMGE0ZTAyYjNmMDkyNGZhMjU2OGRlZDAxMjggYWxwaGExMDAKKzQwMTMgNTUyYjIxZTdjMjMwYTc5ZDI2YmMzMTVmOWVmNTYwOThkMDRkNzQ3NSBhbHBoYTEwMAorNDAxNCBjMWZiMmI2YzQ3NGNlYTkzZWU1NGNjODFmMTRlNjlhMGJjYzQyNzEyIGFscGhhMTAwCis0MDE1IGU0MWE2NTMwNjcwNjIwMDVhMmM1ZWM1MDZjYWRlMDk3ZDFiODQ0NDYgYWxwaGExMDAKKzQwMTYgMTUxMzIxYTE4ZGI0YTc4Yjg4N2E3YjYwNzZhNDBlNjBkMmUwNjRiZiBsZWdhY3ktdHJ1bmsKKzQwMTYgNDI0ODZiZjIzNjQ3ZGI0MzAyNjVhNGUzMzI4MTg0NmNhNzJmNjA4ZSBhbHBoYTEwMAorNDAxNyA4ZmJlODYwYTI2ZTE5OTVmMWRhMWZhNzFkOTg5NWQxNDQwZDgwNTBiIGxlZ2FjeS10cnVuaworNDAxNyBlNDZlMGVlNzZkYmM0NDgxOGE2NjdlYzEyNDNhZmU5NTUzYWQ3YWQzIGFscGhhMTAwCis0MDE4IGE5ZGQyZTFlYTVjOWVhMmNhNDdiNGQwYzgwYWNlYjZhMTQ1NmZmMGYgbGVnYWN5LXRydW5rCis0MDE4IGExOWZhMDU1ZWM0OGIyNDQ2N2E3YTIzMGRiY2FhMjdiY2MzMTZhMzMgYWxwaGExMDAKKzQwMTkgNDEyMWFmZDc2ZDczNGFmZWMyMjRmYjJiYTllYjhkMTY2YzNkMTA5MiBsZWdhY3ktdHJ1bmsKKzQwMjAgNWE2YzJhMjM4ZjAzODc2ZTJhNzllMmFiMzI5ZjI1ZTI3YmEyODkzNSBhbHBoYTEwMAorNDAyMSAyOWM0MjU1Y2Q0NWNkNWYyZWJjNmMxMWQ2Y2Y0ZjBjNTU3YWY4ODU0IGFscGhhMTAwCis0MDIyIDAyMDJhNzJkOTk0ZTNkMzgyNTVmM2E1NTNhOTBjZTFiMTUzNmVlZmYgbGVnYWN5LXRydW5rCis0MDIyIDRlMWEyZGJmOTNjNTMyYTJiZmZjZTNjNWRmZTU3YTc4ZjZkNmYyMmUgYWxwaGExMDAKKzQwMjMgM2U2YjY3Y2E5ZGJlNDI2OWY5NTkwMDQyMzcyYjdlYWZkOGMzNmI3NyBsZWdhY3ktdHJ1bmsKKzQwMjQgMDA3YWRmMDE1NDNjNTE3NjlmYzMyZDhhMTlkZTQ5NDYxZmNlZTE5OSBsZWdhY3ktdHJ1bmsKKzQwMjUgNmNlODJjMTU4MWI5MmY3NzFkYjkwYzRmNTI4NWRhYzU2ZWRiOWNjYiBhbHBoYTEwMAorNDAyNiBmMjYwMjI4ODM4MWE0MjU3ZjhmNjJmOThhMDM2ZmRlNzY5ZjBlZGM3IGxlZ2FjeS10cnVuaworNDAyNyA1OTAzOWMwODU2YzkzOTZlM2YxZjNhNDc0NDlkMzE2OWQ3M2Y3NWY0IGxlZ2FjeS10cnVuaworNDAyOCBhM2ViMjUyNTkzMjk0MjE2NmUzNDBlN2M2ZDg0ODczNGE4YWY1NjAyIGxlZ2FjeS10cnVuaworNDAyOSAxZjQ5MjlhNDhlNjRhMDA0N2MzOGVkNzg5MWQxMmVhYjU5MjFiYjE0IGxlZ2FjeS10cnVuaworNDAzMCA5YWY4YjM5OTFjZWRmNzJlYmJiOTZkYTdjYjYxMTQ0OGRhMWI4YzdjIGxlZ2FjeS10cnVuaworNDAzMSBmY2FmOGEyYmFmMzg5NmU5MDAzNzhiODYwODQ5ZGFhMDE0NjIwYmMwIGFscGhhMTAwCis0MDMyIGJjYTgyOTBjMWIzMWNkN2Q3MjcwNWUzOTMyNzU2ZTJkMjhlZTA1NTEgYWxwaGExMDAKKzQwMzMgN2EyOWJiM2JkZGI0NjVhZTQ0MGEzNWQ2ZjUzOTI2OWUzYzgwNGQ0NCBsZWdhY3ktdHJ1bmsKKzQwMzQgMzdjZjg3ZjU2MWVjYTk4NWFlYWYyYTA1MTRkZGRkOTdlOWExODgxMCBsZWdhY3ktdHJ1bmsKKzQwMzUgMDU1OTYyZjk2ZGU3YjVmMGZhMDhkM2MzZWYxNTU2YmEwZmU4MjZlYyBhbHBoYTEwMAorNDAzNiAxNGIwODdmZTUzNDcwYzRlMzdlMTQwMDA3NThlZGU1NTU5OTA3ZTgyIGxlZ2FjeS10cnVuaworNDAzNyA3MDg2NTRhNWRkZGUwMzExZDc1ODE3NTY2Y2FiMTdjNmJkYWMzZTQ3IGxlZ2FjeS10cnVuaworNDAzOCAwZDAyOWRlZTkxMjkwZjlhMmY2ZTQ1YTJhZGY3ZDVjYjA4ZmQzZDg1IGxlZ2FjeS10cnVuaworNDAzOSA3YTQ3ZmFiYjE4N2M2YzI2N2NlZTc3YjQ1Mjc5NTYzMmI2MWM3MjljIGxlZ2FjeS10cnVuaworNDA0MCBmYTUwZDRiZDU1Mzc4NWExYzFhYmU3Mjk3OTM2OGI0MDY4OTI1OGE4IGxlZ2FjeS10cnVuaworNDA0MCA2MGIwMTU4ZDk0OGFjYzNhMTkwNWUwYjFkN2FlZTI1NjU5ZDhmNzM4IGFscGhhMTAwCis0MDQxIGY4NDk4YjA4OGFhMWEwYzUwMzY2ZGNhNTIzNmNjNTVjMTA0OGNkMTEgbGVnYWN5LXRydW5rCis0MDQxIDhhN2U1MzBkZDQ0YTVlNjQwMDA4YTkzNmVhYzM1MzZhZTQ3MmNiMzEgYWxwaGExMDAKKzQwNDIgNjIzZGQ3MjQ5MTg2NjQ0MTE0OGQ4MGJkMDUxYjkxOGY0Y2QzMmFlMiBsZWdhY3ktdHJ1bmsKKzQwNDIgMTlmMjA3NTFmOGRlZmJlZjE0NmM3NzgxNTQ1OWVjYjNjYjAyNzc1NyBhbHBoYTEwMAorNDA0MyAwM2UwOTdkZGVjYTJiZWNiODIyOTA4NmY2ZjI1MGFlNmY0ZjFjZDQ1IGxlZ2FjeS10cnVuaworNDA0NCA2Y2Y2YjY2OTFhYWViMjgxN2YwOTI2ZmEyZGUxM2Y4YzRkNzJiMmE0IGFscGhhMTAwCis0MDQ1IDdhYzRlNDk3OTFmNDdlMWJkYWQ4ZWY0ZTQ2OGIzOTJiYzc2MjQ2NDMgbGVnYWN5LXRydW5rCis0MDQ2IDllMmIxOTQyYTc0MjBhYTQwNjdjMTk1Y2E5MWQ5YTliNjY2N2FjN2IgYWxwaGExMDAKKzQwNDcgMWM3MWEyN2ZkNjkzM2RjNmRlNTU4NzEzMjdhNDNhYjJiMDQ4Y2FhMiBsZWdhY3ktdHJ1bmsKKzQwNDggNTFhMDZmZGZmZjc4OWQzM2UyYTAwNmZjMTY4Yjk2MTg1NGU2MTQwNCBsZWdhY3ktdHJ1bmsKKzQwNDggMTFlYTE2MWEwMWMyZmQ5MmI0NGE5OGIyMjAyNmYyOTU2ZmE2ZDEwOSBhbHBoYTEwMAorNDA0OSBjZjMyOGE5ZWM1ZDQ0ODc2Y2YwMjRmMTFkN2FjNTY1OWY5ZDM5NTQwIGFscGhhMTAwCis0MDUwIDE5YjAwZWY0Y2RkOTk3ZGEzMjhlMzllM2Q1MmQ5MzQ5MTEwOTYxM2QgYWxwaGExMDAKKzQwNTEgN2U1Zjk3YmFiMWU2ZjhkZWM3NmQ0ZjA3NDE3NDQ3ZWI1NzkyMDBkMCBsZWdhY3ktdHJ1bmsKKzQwNTEgY2YyNGYzZTdiZTZkN2U2NWVhNWE1YzU3ZmJmMWZiYThmOGFkMmZlMCBhbHBoYTEwMAorNDA1MiAzMmMyOGFkY2NkMTJiMDY5MGMxOTVkM2E4YzIzOGJhMTI0NzA4NjNmIGxlZ2FjeS10cnVuaworNDA1MyAzYWFjODI1YTUzYjUyM2RmNWYwMmFkMGYzODc3MWQxYTc1YzZkMTViIGxlZ2FjeS10cnVuaworNDA1NCBjYmVlNWUxZTliZTgzMjU5MDQyNjk5ODA5ODMxMGZlNjliYTEzN2E5IGxlZ2FjeS10cnVuaworNDA1NSA3NjAzYTNiMmNiZWU5OTM0NWQyZjllM2U3Y2ZhYmVmOTMxODhkMWFjIGFscGhhMTAwCis0MDU2IDkwZWU3MWEzYTEzZWJiNDQ4MzZjYWYxNmY2OThkYjkyZDIxOGJkNWQgbGVnYWN5LXRydW5rCis0MDU3IGE0YzdlZmYyNTlhNTljOGI0ZjUxOThhMjY3ODQ3ZGFkYTc1YjhhMTkgYWxwaGExMDAKKzQwNTggNGRlZjkzNGZmNzViODA2MmFiZmE4YTA3MDFkYmE2Nzk1Zjk3NTZlNCBsZWdhY3ktdHJ1bmsKKzQwNTkgZjAyYTQ2NzU0ZjUwNWMzZWQzMGRhZmQ3YzRjMTU1NDhmZGI5MGRhNiBsZWdhY3ktdHJ1bmsKKzQwNjAgYTg2MmQ4ZjQ1MDdiOGI0YmQzYzRkZmExM2QzZjhiOTE3NjM4NGZkZSBsZWdhY3ktdHJ1bmsKKzQwNjEgMWI5ZWMzN2RiMmI5YWJmOTVjYTFlOGI4ZDQxOGI1ZDBkZTY0ZTAyZiBhbHBoYTEwMAorNDA2MiA1MDk2YmI0OGNjZmUxMzBiZmUxZmU4YzFjYTAwNGRjZjg2NWFmOTRhIGxlZ2FjeS10cnVuaworNDA2MyBiNWE2NjBjYWE4ZTFiYzQ1N2I1NDE0NDNiYjFiMWRkYTJlZWVjZDcyIGFscGhhMTAwCis0MDY0IGQ5MGFhYTA5MTIzYmY1ODhhNzlkMDlmZmVmZjM3MDcyYTlkZDNkOGIgYWxwaGExMDAKKzQwNjUgZTI4MjMxMTBjMDUxNTcwNDU0NDRlMWYzOGMzMmVkOGVjNWYyZDkxMiBhbHBoYTEwMAorNDA2NiBlNmEyMTNiN2QwZDJiOTgwM2NmNDAyM2YwZTY0ZmMwY2Q3MjUxNjc3IGFscGhhMTAwCis0MDY3IDcyYzlhNGRjNDg0N2Q3OTQ4OTc3NmQ1NmEyNDIzZDNlYTBlNTNhYmIgYWxwaGExMDAKKzQwNjggNGY0NDlhYjYwNTY3ZmJiNjQzZTJhZDQ1MzVjY2JkYzljOTgwZmJhNCBhbHBoYTEwMAorNDA2OSBmZmQ0OTViYWNiZDQzNmYwMGU4Y2JlYjJiYjBjMTA4M2FiODNmMDQzIGxlZ2FjeS10cnVuaworNDA2OSA4ZTdkOGQwZDRlOTBhOTQ1MTU4ZGE1NmRhYzk4OGRmNzI5YmI1YTg3IGFscGhhMTAwCis0MDcwIGY3ZTFlMjM4OTM3NWYyMzI2MjBhZWY4ZTRhZDQ4ZTcxYzRjNThiMjMgYWxwaGExMDAKKzQwNzEgMDFkMjY0ODZiMGVlNjY0N2MzZjJkMTBhMGRiYmY0MTJhMzZmODJmYyBsZWdhY3ktdHJ1bmsKKzQwNzIgMTRiMDM0MThjOTBmYjM4YWYyMGZlZDdmNDcyNjg5ZWU5NTNjNGNjYiBsZWdhY3ktdHJ1bmsKKzQwNzMgYTZlNmZhZDFhMDFiMzJmZGY0NDgzM2U0ZjBmOThiNzNkMzcyNGYxYyBsZWdhY3ktdHJ1bmsKKzQwNzQgYTA5ZWZiMTM1ZGU1NTI0NjM1MGVlNDI0NWFjMTgxOTg0YjU3ZTU3YyBsZWdhY3ktdHJ1bmsKKzQwNzUgZDA3NGIyZmI2MDkxNGRkN2Q1Y2I5MDFiOTFmOTVmYjkyZWY2ODJkNSBsZWdhY3ktdHJ1bmsKKzQwNzYgNzNkZDJhOTc5ODU3ZjE3YjM2ZTkxNTMyYjE2NzJmZTY1ZGNiOTYyZSBsZWdhY3ktdHJ1bmsKKzQwNzcgYjVkNWJiY2ViMDBmNjA0ODYzNGI5OGYwN2Q4NjliZGRiNGE5M2I1MCBsZWdhY3ktdHJ1bmsKKzQwNzggYTk2MTZmNTY1NDY1NTM3ODI5NWU0YTliMzEzZTNlZDk0ZTg0YTg1NiBsZWdhY3ktdHJ1bmsKKzQwNzkgMjczNDUxODkyMzI3Y2UxZjFiMDdmMGRkNDkwOWQwZDU2ZWE2OGRkZiBsZWdhY3ktdHJ1bmsKKzQwODAgMzgyYjRmOGE3MzdhNGNmZjFhYjdiMDVmZTkzYjhkZDY3MDU0NjkzOCBsZWdhY3ktdHJ1bmsKKzQwODEgOTUzZTc0ZWFjMDA2Mjk4MTY5YzUyZWU3MmEyOWU3ZjRmNDVkNTZjZiBsZWdhY3ktdHJ1bmsKKzQwODIgY2VkM2QxMTIyZjdjYmFiMTNlMDc3MTMyZDY4ZDRkMDExOTI4ODUzYiBsZWdhY3ktdHJ1bmsKKzQwODMgMzQ0ZGQyOGRhOWM1NjYyMGY1MzZlYTFhMzhlODcyODIzYzUwZGIzZiBsZWdhY3ktdHJ1bmsKKzQwODQgYTk0OGI0NGFkNGExNTUwYjU3MmJiNzU4MTAyZmU1YzA4MzBmZDA0NiBsZWdhY3ktdHJ1bmsKKzQwODUgMmZlNTRmNjJjZGI1NDk3MmMxYTU5MmNjNjNkZWFlNGU5NzU5OGJmYyBsZWdhY3ktdHJ1bmsKKzQwODYgNGMzMDYyYzcxMzVmY2QzZDcxZDA0ZTQ4NjFkZTgyYjIyN2VmZjliMCBsZWdhY3ktdHJ1bmsKKzQwODcgNmEwZTVjZDQ5OWM0NWVkZGQ3NWNjYjNiZjgyNDNjNDU2ZDhjZjBiZSBhbHBoYTEwMAorNDA4OCA0OTZjN2U5ZjExZDI0ODIwZGIzNDUzODE0ZjYyMzRhZGQ1ZjIyOWM5IGFscGhhMTAwCis0MDg5IGNhMDIzMzk5ZTVjOTRiYjVlN2Y5MmY5YTVmMDRhNDQyYjAzYjIyMzggYWxwaGExMDAKKzQwOTAgNTJmYTRkY2QxYjBlMGExNjJiMGZkYzdiNDhiMTNlNDNiYjViMjY0ZCBhbHBoYTEwMAorNDA5MSBiNmMzNWUxZmFkYWU2ZmYxMjcxZjViNWQ4NzViMGJiNjRiZmUxNmJmIGFscGhhMTAwCis0MDkyIDhmOTY4MDI3MzMwNzc1MzhmODk1ZTM5NzU3NDFkZDliMTgwZTZmYzIgYWxwaGExMDAKKzQwOTMgOWFlN2YyZmQ4OWYxMDk3ZGM3OGE2NjE4OWFlYjRiZjBiNDEzZmI0NyBhbHBoYTEwMAorNDA5NCA0YjUwZjEwNDJlOGRjMDkwMzg2ZDA1NDcxNzkxODgyYzNiZTFmNjYwIGFscGhhMTAwCis0MDk1IDc2MzcxODA1ZDlmMzc0ZjE5NzMyODgxMjlhMjQzMzE0Y2M0Mjg4NjAgbGVnYWN5LXRydW5rCis0MDk1IDAzYjA1NzE3Yjk1MjI0YWQyYTcwN2E3NjIwNTY0NGQ5MzM3MDk5NWIgYWxwaGExMDAKKzQwOTYgMWUzYTU1M2U0NzlhZjA4ZGUzZTdkOWE4ZWE1OGQwNzM4YjU5MmRmMyBhbHBoYTEwMAorNDA5NyAzYjkwYTlmYzFlMDM5ODkyODUzYjY1YmNjZDg0YjhmZWExOTI0MDY5IGFscGhhMTAwCis0MDk4IDFmMDZmNzE5MDRjMjQxZjBhMzViYTc1ODM0NzdmOGNlOWU0YzkyMWEgbGVnYWN5LXRydW5rCis0MDk5IDUwOGI3M2UwYTdlNGYxZjE1YmY2Y2U0NGM3ZTc2YTc2OWZiZmQ4MjQgYWxwaGExMDAKKzQxMDAgM2FmYWZhYzNkN2ExNmJlYmMyOWU3NGExNGZjZGI0YmUwYTNiNmRmZiBhbHBoYTEwMAorNDEwMSAwMmQ4YzE1ODgyZmY5YWQ1MDk2OGEzYmUxN2M4MDNmYWIxOGYxMTI3IGFscGhhMTAwCis0MTAyIDUyOTA0MjhiYWQzNzE1YjczZmEwZDEyMDBhMzk0ZDcyMTkwYjA3NjMgbGVnYWN5LXRydW5rCis0MTAzIDc1YmNiMWZjNjViZTU5YzEzMjU3NjllMmEyZDI3YmY1MTQ2ZmZjNTggYWxwaGExMDAKKzQxMDQgOGNmNjQwZWYzNDQwMDc2ODllOWQzNjQ0MWFlNDM1ZWI3YWE1M2UyYyBhbHBoYTEwMAorNDEwNSAxMDA5ZWE0OTM2NmNjOThjZjZmYWY5NTVkNmNkOWFkMDNkODlkYjZiIGFscGhhMTAwCis0MTA2IGMyZTZjOWE3YTk1ZjhiNDZhZjk2ODYxYTQ1ZmEyNDRjYTFjMjEzZmYgYWxwaGExMDAKKzQxMDcgMGE2MDQ2MGU5OWYwMmI0MTk2ZTRhN2JkYzNiMjk4OGNhNzgwNDgyMCBsZWdhY3ktdHJ1bmsKKzQxMDggZGM4ZTFkNzJkNzhkY2NlNWVmNTAxYjQzZjVkNTJmMjdjNjk2NTIyOSBsZWdhY3ktdHJ1bmsKKzQxMDggY2FlYWVlMzkwZTQzZmU1NzNhOTNkMzVjMmJjZTgzNDI3MzNhMGNkMyBhbHBoYTEwMAorNDEwOSAxYjE3YWFmMjUxMDU0OTc2YmIyYzNhZWM3YzRkNTk0MTQwMWJiNGJkIGFscGhhMTAwCis0MTEwIDJiY2RkYzkwNWRhMGI5ZjhjYjUyN2U2ZmNmYjVmZThkYzQzYzcyNDQgbGVnYWN5LXRydW5rCis0MTExIDA4MDgxMWIxZDAyMzMyMGZhYjNhODk1ZmY2Y2FjOTRkNmIxM2JhYzggbGVnYWN5LXRydW5rCis0MTEyIDFjZDRmZDE2NjIzZGUyMzRlNmMyMWY4ODdkMzkzNzM0YzUzOTIyOWMgYWxwaGExMDAKKzQxMTMgNGNiZjUzNmE2ZjE4MDM4NThlNGI1NzAxOWY2YmFkNzY4NjdmY2E2NiBsZWdhY3ktdHJ1bmsKKzQxMTQgYzU0YzA3YWJjZmNmMzFmZmJkMjhlMzUwODBkYmM1MDQyMjIzOWM5MCBhbHBoYTEwMAorNDExNSA2YmU5MWM0NGNhZmZkNWUyYzNmNDI5MTNmOGRkYjIzYWY5ODViNTMyIGxlZ2FjeS10cnVuaworNDExNSA2ZTRhODllZTExNjM0YjVlZmMwZGIwZmUxMDc1M2JkODM5ZTEzMTQ2IGFscGhhMTAwCis0MTE2IDIzZmQ1MGQ3N2I1YTA1MDM2ZGFiZGRmNGJkODQ3YTc1NmM4MjNlNTkgbGVnYWN5LXRydW5rCis0MTE3IGI1YTU3YWY0MDUwOGM4ZTRkYTVlYWFhNmU1ODhhNTBlZDM3NTkxZDQgbGVnYWN5LXRydW5rCis0MTE4IGJiNjE4MTZlMWRhYjBlNDY4MTIxM2E3MjFlYzRkYWUzOWMzOTkwZmUgbGVnYWN5LXRydW5rCis0MTE5IDk0NjIxYTQ2OGI2MGQ0MTU5M2MxMmFhODAzMDE5ZjZmMzZkODNjM2YgbGVnYWN5LXRydW5rCis0MTIwIDkzZTAzNjc4NmIxN2E3OGQwZDBlZjU4MTUwMTk2YjVhOGQ5NGViZTUgbGVnYWN5LXRydW5rCis0MTIxIGQ4OGFmNThlOTVjZDA4NDRlYjk5NTFhN2M2YmI0MmQ5MDU3MzY4YWYgbGVnYWN5LXRydW5rCis0MTIyIGUyNjY1ZDlkNGU0NmQyNTQ5ZDU5YmUwODc1NWUwZDcxNWRkMTdjNzUgbGVnYWN5LXRydW5rCis0MTIzIGNmMjljMDlmMDdiNjFmNzllYTIzOGIxN2QxMmIwNjI0NTZkNjUzNjAgbGVnYWN5LXRydW5rCis0MTI0IDAzZDM1MWI2ZjczOGU0YzViOGEyZGZiMThkYmFmODM3ZTg5MDhhZWEgbGVnYWN5LXRydW5rCis0MTI1IGM1MDEyNzgwOTE3OWRkZWQ3YzdhMDEzODkyZGQ0YWEzZGFmMGUwMmQgbGVnYWN5LXRydW5rCis0MTI2IGI5NDkyMjRhNGJkNTYxYThkODUwYjEzZWI0OGY0ZTliODlmMTUxNjQgbGVnYWN5LXRydW5rCis0MTI3IDkwMmZmZjU1ZGIzODFmMDkzNGQ5YWMzNWU1ZjIyYjZiN2IxZmQyYzkgYWxwaGExMDAKKzQxMjggNTE3YmFhZTFiNjYzYzI2MWI2YTA3ZGZmNTlmMWIwNjEwOGU1ODY5MyBhbHBoYTEwMAorNDEyOSA0NjhiODc4NGRhNDhiNzRhMDdlYTgwYmI2MDE1Yzg5Y2M2NWVmNGM5IGFscGhhMTAwCis0MTMwIGJmY2ZmOGFmOTc1MTY4N2ZlOTFjMWY1MmJhYTk5MzE3ZGU4N2JkODYgYWxwaGExMDAKKzQxMzEgZjg1NDBhOGNmNWQ3OTQ2NDViNGI1OGJlNWI0MDU4NzhkNDIxY2MzNSBhbHBoYTEwMAorNDEzMiBhMjQwM2ZlMmM4ODU4MDU1ZjY1MWE3OTE5MDA4MjgwNDhhMWY3OTQwIGFscGhhMTAwCis0MTMzIDJiMDdkOTI1YzA5ZDQxZWVkZDFiZjdmMjg0Y2JkOGFmYTgzZmNmYWEgYWxwaGExMDAKKzQxMzQgZGYyMjA0ZTQ3YjY1Zjc1YTA1ZWUyMWQyZTU4MmUxYWNhYjIzNjNiNSBhbHBoYTEwMAorNDEzNSA3N2M5NDkzMDFkYjM3NDkwNGJmNjViNzVlMTU1OGU4YmJmMTBiZWIyIGFscGhhMTAwCis0MTM2IDc4NzQ3NTYxMGIwMmUzMWRjNTU3MGExMzJkMGE3N2EzY2M2MTM3YjcgbGVnYWN5LXRydW5rCis0MTM2IGI3MDcyZWM3ZDY1MjM3YWNlNDcxYWQzZmIzODIxMTE0YzVjNDdhZWMgYWxwaGExMDAKKzQxMzcgN2IxYzQ5YTdkMzc1ZWEwOTVmNWI2ODcwYWNhMjE0ZDJiMTYyMDkzNyBhbHBoYTEwMAorNDEzOCBkYTJhZmMwMjk4YTcwZmNlN2QzYzE5NjhhYTQwNjIyOWMyZTY0NWI1IGFscGhhMTAwCis0MTM5IDlkYTQ5NDIzODc3M2M5MTZlMjVhNmUzMTVmZDZmYmQ5ZWYxZjRhMjIgYWxwaGExMDAKKzQxNDAgZmI1YmI5ZTdjZDdhODE5YzFkNGUyYWE4NTM0ZGQ4YTJkNjg1MzQ2OSBsZWdhY3ktdHJ1bmsKKzQxNDAgZWJlODY4MWNmNWZlYWYxYTRkZDk4MDA3NGUwYjQwMjA2YzA4OTE5MCBhbHBoYTEwMAorNDE0MSA4NzllOGQwNGU1ODk2NzdmYzY0MDk1ZDAwNzMyZDZlZTE3ODQ3OGRjIGFscGhhMTAwCis0MTQyIGViMTFhMDk4YjdmZjJjY2RlODM5ZWE3NjAxMGExYzczNTZlNWQ3MzcgYWxwaGExMDAKKzQxNDMgOWU3ZDIwNmE0OTIyMTY2YTIxOWFiNTlkNDIzOWI1MmQ2MzE5OWUzNCBhbHBoYTEwMAorNDE0NCA5M2RmODMwMjJiZTg3OGMxMTA3NmE4NjA4OGI4YzIwZTAxNzUzNGVlIGxlZ2FjeS10cnVuaworNDE0NSA3N2JiZTU4YWZlYWI1MjUzMmJhYTE3MGVmNTljNDM2ODkzNmY5ZmE2IGFscGhhMTAwCis0MTQ2IDAxNWFmMWM0NzcyNjQyN2ZlZmJhNmFjMDRjZDZlNGI1NzhlNWQ2NDIgbGVnYWN5LXRydW5rCis0MTQ3IDE5MDFlMDgwODZmOWZkNjRlNzBmMWUxMmI5Mjc2NDBjYjc2NmRlYmQgYWxwaGExMDAKKzQxNDggZjFiMDQwYmNhM2UxMmVhZDRiZTU5Y2VjNDgwNThlOWNiNzU0ZDVlNSBsZWdhY3ktdHJ1bmsKKzQxNDkgMGZiM2FhNWNhNGMwMmVjZTEwMWMzYmQwY2VkNTg0ZGU0YmJlOTliZiBsZWdhY3ktdHJ1bmsKKzQxNTAgYmE5NTdhYTQyMjQxYTljZTkwYjU4Nzc1Nzc5OTA0N2I3MTZlNTZkMSBsZWdhY3ktdHJ1bmsKKzQxNTEgMjIyODAyZjBkOTc4Mjk1NDVmNDEwZDc1MDFmYWU2ZTQzYmZmNGNlNSBsZWdhY3ktdHJ1bmsKKzQxNTIgNGJiYTNjOTA3ZmZhZTQ3NWNhMGIyMzUxZGIzNWRlMzFkOTBmOTNjNSBsZWdhY3ktdHJ1bmsKKzQxNTMgMTkyZDg2OWJlYjk3MzZhMTgxNzY5MDc0MzZhMDU0YjkwZjQ5OGY5YiBsZWdhY3ktdHJ1bmsKKzQxNTQgNmY4MWIxM2ZkNmFjMDhkNDJlNjE4OGVmYmI5YjM2NGZhZmQ1NGZmYSBsZWdhY3ktdHJ1bmsKKzQxNTUgZGUyZGMxYmM0YmFlMWNjM2M4YzllOTM4MzcwZGY3YzQ3NzMzNGU2MSBsZWdhY3ktdHJ1bmsKKzQxNTYgMzc1YjhiODYzMTI2ZmFlZGZlOGM2MDliMDljYjFlNzRjMWFhNGUxMSBsZWdhY3ktdHJ1bmsKKzQxNTcgNTY1NmY4ODdmZmYzN2VmZDkzOWU4N2Y2YTNhYjVkOTg4NzNlNjExNSBsZWdhY3ktdHJ1bmsKKzQxNTggMzY2YTAyOTJiNjE0MmU2NDUwZGMzNWViYTZjZTdjNWIyYTcwMzkxMSBsZWdhY3ktdHJ1bmsKKzQxNTkgMmVmOWQ1MGFiNjU0YmE1MDAzYmU0ODhiOWU4Mjk1YjA4MzFjMzBhMyBsZWdhY3ktdHJ1bmsKKzQxNjAgYmI1NjZkMjhjYWEwZDNhZmU5MWJlNjY4ZTE1OWYxY2IzZDk2OGJhYyBsZWdhY3ktdHJ1bmsKKzQxNjEgNTg0MGU1NTNlYjhkODlmYzc1OWRlMzI2MGJkMWJiOWQ1MWZmOWY0ZCBhbHBoYTEwMAorNDE2MiBkYjBlYWVmNDJjYjk0ZTkyMTlhZTg5NmE3ODc0M2FiODk1NmIxYTlkIGxlZ2FjeS10cnVuaworNDE2MyA5OTI4ZDMzMzgyMWRlMGJiYjhiOGE1NGMxMWExMWRkNTZmMzQ3ZmY2IGxlZ2FjeS10cnVuaworNDE2NCA1MDRiZmE1OWI5NTRlZjk3ZWMxZjQ2Y2I4MjFiY2M0YmExNTI5ZGI3IGxlZ2FjeS10cnVuaworNDE2NSBiYTliNzU1ZTE3ZmUwYjJkZDIwNjI3YTA3MGJhY2FkMjlhOTA3NjFkIGxlZ2FjeS10cnVuaworNDE2NiAwZDYxMzNhYmI2ZTVmY2JmODgzZjhhMGJhYzE2OTE4NGQ3MmE4Njc4IGxlZ2FjeS10cnVuaworNDE2NyBhMTYwMWZjMmIzZTQ0MTRiYTMyOGEwYmUzMzM3NTdkZDVjMmEyNmFhIGxlZ2FjeS10cnVuaworNDE2OCAyZjliYTJlYmNiMTA3M2JmZTE3Y2I3ZTc0MGU0ZWE2YTAyN2U4MzMwIGxlZ2FjeS10cnVuaworNDE2OSA0MjEwYjBkZWYzZDc4MTUwNTNhNzFiYTIxY2NhNzc2N2JhZDk2NjY5IGxlZ2FjeS10cnVuaworNDE3MCAxZGQzMTE1MzcwOWRkNWM2Mjc4ZjZlYmJhYmNmNDJmMTBmMDY0MzVlIGxlZ2FjeS10cnVuaworNDE3MSA0NzBhNTE1NDVkNmM0ZGNlY2M4YTEyNWY3ZWZhZmUzMGRiOTRjN2FiIGxlZ2FjeS10cnVuaworNDE3MiBlNWE4ZjY0NzkyMTY5MWQ5ZTI4NzExNDA2MzRmYjAwNjAxZjE0M2I1IGxlZ2FjeS10cnVuaworNDE3MyBlMTY3NjljZDdhOTAxZWQ3NDNmZDMyZjgyNzc5NTBiZmUxZDYwM2Q0IGxlZ2FjeS10cnVuaworNDE3NCBjZGY0NGMxNGMyNzA4OTBjYjBkNzU0MGRmOTYyOWE1NGRjZTY1NzgyIGxlZ2FjeS10cnVuaworNDE3NSBlODBjNzEzOWY1MzNlNGUzOWFiMTRlZmEzODBkNWNmYTc0ZmRiYzE3IGxlZ2FjeS10cnVuaworNDE3NiA2YjBmMGVmMmMxMzJjNzU5NzE5NmY1NjVlYzQ0NGQzZjg4YzYxYjQyIGxlZ2FjeS10cnVuaworNDE3NyBiZDFkMGJhNDBmOTBjZTQyNmI1MTU2YmI3YWQzZDhhNjk2ZTRlMjEyIGxlZ2FjeS10cnVuaworNDE3OCA3ZjIwZjRiOTMzNWZhMDc4NjUzNDNjMWJjMmM4MjdiYmJkZjkyOGEwIGxlZ2FjeS10cnVuaworNDE3OSBlODY1MWQwZTRhM2M3MTg2MzVlNDQwMTEwY2QxMjNlNmM4ZGJkNTA1IGxlZ2FjeS10cnVuaworNDE4MCA1ODFmZTZiZmM5MDI0YTJlYTA1NDc3NGNkMWEwOWI2NTdiY2E2ZDk0IGxlZ2FjeS10cnVuaworNDE4MSBhZmM1NzQwNjRlNjJjYWU4Mjk0ODZkNzc4ZjYxYjM2Y2ZhYWI3NzI5IGxlZ2FjeS10cnVuaworNDE4MiAxNzUwMGNmOTUzOGYxYTlmZWFmNjg3MmVkNjIwZTQ5NmFkOGVhNGUzIGxlZ2FjeS10cnVuaworNDE4MyAyNTQzMjZmMjQxNWY0NmJkMDJhMjU3OWExZWE3ZDUwODQ4NDcxZmQ2IGxlZ2FjeS10cnVuaworNDE4NCA4NmVkNTM4NDRiMDdjZjY0N2IyZDc0ZTRmMjMzYWRmY2YxYmViMWIwIGxlZ2FjeS10cnVuaworNDE4NCA5MDdkOWU3YmY0YjU4OWZjMmYwMmE5YjkwMGM1OGY0MWNlNTU0ZDg1IGFscGhhMTAwCis0MTg1IDk2MDBkM2Q1Y2NlN2JkZDk0MzA5Mjc3NDdkZTZkOTNiOGRjYzc2YzUgYWxwaGExMDAKKzQxODYgZWUyZjg4YTRmOWUyYmNlNjM5ZmJkYzI1YmQ4ZGM4YWQ5ZDg5ZjVmMCBsZWdhY3ktdHJ1bmsKKzQxODYgMjg1ZmU4OTc5OTc5OTU3NjU1ZTc2ZGMwMmJkYjAwNDA4YjhiYTY0ZSBhbHBoYTEwMAorNDE4NyA0NThkOGYzZWYzMDc1ODI3ZTFmZmU0YmU0Mjg1YjQzYWE5MjA5ZTA3IGxlZ2FjeS10cnVuaworNDE4OCAyOWM3ODUxNmVlMzMzM2MwOTViZThmYmRlMmIyYjk5ZWQ1N2FlYjZmIGFscGhhMTAwCis0MTg5IDc4MzFmZmRiNzg3YjgzZjJkMDZmZTE3YTliM2M2YzU5MTMyMzkzZDEgbGVnYWN5LXRydW5rCis0MTg5IDIxZDdmOTMyODE5YjRkYThlZTdkYWM5YmVjYmRkYmVkY2M0MDBkNjcgYWxwaGExMDAKKzQxOTAgZTk1YjA3MDFjOGI1NGYyNGRmOGM5MGI4MzA3NDM1NzVlZmQ3YmY2MiBsZWdhY3ktdHJ1bmsKKzQxOTEgOTYwMDlkYWU5ZDYyNjI2YWE0ZDIzN2ZlNWRkNDVmZTgxZWQ3YjEzNCBsZWdhY3ktdHJ1bmsKKzQxOTIgYmVkZTM4YzRhOWY1ZWNkNDIxMDczOGU5ZGQ5NTY3OWMyOGZhMzcxNCBsZWdhY3ktdHJ1bmsKKzQxOTMgYmMxMWMxZmY2Y2FjMDMxZjkyNzk4NmIzNGIwYTRiOGQ5MmY1OWIzMyBsZWdhY3ktdHJ1bmsKKzQxOTQgNTk1MjY0YzJmMDZkNGE2MDk2NjE2MmFmNWY0MTE0MWM5M2Y3MmI4ZSBhbHBoYTEwMAorNDE5NSA2YzBlMTFiOTQwMDlhMjUyMzk5MzhmNTIzYTcyZWNkZTc2MzZhZDAyIGxlZ2FjeS10cnVuaworNDE5NiBkNWI2N2QyZWM3ZWUwMzEwMGE2NjgzNzQwZmRkMGY3ZmY3MTIyNjFlIGxlZ2FjeS10cnVuaworNDE5NyAzNzI5MDNiNjM3MTFhOWJkZDhhZmMzNzczNGVlYzQ1ODMyOWQzNThlIGFscGhhMTAwCis0MTk4IDE5NDA4OTJkMmZlM2E4Y2YzYjc0Y2MxMmQ2NzAzOThjM2U0ODAzNjMgbGVnYWN5LXRydW5rCis0MTk5IGUzYTlkODFkZjE4NTNjOGIzNzU3NjI2YjE3YTg1YWE4M2FjYjRjZjYgYWxwaGExMDAKKzQyMDAgM2Y3ZGRiOGJiMmY2M2I3M2FiMDcxZmNiN2UxZjhhNjIyYzY1MjA2MyBsZWdhY3ktdHJ1bmsKKzQyMDAgZTdiNWZlNzZlNWVhY2FlNGM2NjI4YThlM2UyOWZlOGNkNGM4MTRlYiBhbHBoYTEwMAorNDIwMSA4Mjg2YTY2MjUwMmJiNmI1YjBhZTJiMWIyYTY1YmExYzhkZTdiYWRjIGxlZ2FjeS10cnVuaworNDIwMiBiY2ViNzIwZWUzNjJiMDk0N2UwYThjMTI1YTNhNzFmOGM0NmQ3NmJjIGxlZ2FjeS10cnVuaworNDIwMyAwYjY0NTcyNjk1N2UyMzI5YjljODNhZjA4ZGE3MTRiZWRiYWQ2YWMwIGxlZ2FjeS10cnVuaworNDIwMyA0NjM5YzNhZDgzNGI3Y2MwODFkODBkOGZmZGZmZWYwZWU1M2Y3YmFmIGFscGhhMTAwCis0MjA0IGVjMjVhYWQ0MzcyNGYwNTVhM2Y4MjZlMzlkZjcyNTVkYTkxNGNkZmEgbGVnYWN5LXRydW5rCis0MjA1IGNiYjYyZWU4ODU0YTY0M2VjOTY2OWZlM2M2NTdlYWRjNjFlNmEwNjkgbGVnYWN5LXRydW5rCis0MjA2IGI1NDY4ZDg4NmNiNTRhMjAzNGJkMDY1NjQ2ZTRiZDhkZTUwN2Q0ZTUgbGVnYWN5LXRydW5rCis0MjA3IGJiZTllYTU1ODI2MWVlNmRlYmRhM2Y4MDIxOTQ0M2VmYzMwM2NkZmEgbGVnYWN5LXRydW5rCis0MjA4IDc4YTM2NTQwNmM0Y2ViZjg1ZGRjN2IwMDFjNmNhMzQ0Yjc5N2FhZTEgbGVnYWN5LXRydW5rCis0MjA5IGY1MzM3OTFhY2M3Nzk3ZWYzM2E2ZmFmZmZkM2MwZWIyOGUzNTlkZjggbGVnYWN5LXRydW5rCis0MjEwIDY5N2VlODlhZGRmZTFlNjU1YzcyZGFhYTYxMGVlYmU0MzEzYzFhMDYgbGVnYWN5LXRydW5rCis0MjExIGI5OTU3OGI4NzhjZTZjNGM2ZmJlMTEwYWU0MDRhZDQxMWY1MWMzOTEgbGVnYWN5LXRydW5rCis0MjEyIDRkNDIxZjllODM3M2NjMGEzMTA0ZTFiZWI3ZDY2YjlmMmQxOTg1MDMgbGVnYWN5LXRydW5rCis0MjEzIDQ4ZTZiMzE5ZjNlNDgwZDk5YmY0MDM1ZWJhODc2ZWZlMDdmOWY0MmQgbGVnYWN5LXRydW5rCis0MjE0IDdhMmU3NmVjYjllZjkxZGY3M2IwYjNkMjEzOTM3ZWY2MTc2NjBmZmIgbGVnYWN5LXRydW5rCis0MjE1IDliYzNkYmYwODcxZDI2ZTA1MWFmMjU2YTY0ZTQ1ZjNlYTk3NTIwMzggbGVnYWN5LXRydW5rCis0MjE2IGQzNTM1ZDA2MjZiNDY4MDJiNzQ4NWJkZThmZTYzMzFhZWFiMDliNWYgbGVnYWN5LXRydW5rCis0MjE3IDk0MmM0ZDA5NGEwYzQxOWM1NWE0M2Y0OWJmM2JhNTJkY2U1MWRhOGYgbGVnYWN5LXRydW5rCis0MjE4IGEwNDY4OWY5OTgzZTdhZDdiMTZmZTYyZmVkZWJkNTg1MTI3NzY1ZjggbGVnYWN5LXRydW5rCis0MjE5IDZlOTEzMDQ2MDI4ODY3YTBlZWI0OWQ2Mjc3NGFiY2M4NzNkYzk4YTggbGVnYWN5LXRydW5rCis0MjIwIDkwNzYwNTMyMGE1ZmQ3YTRhNTJiOTc1OGU5N2ZmNzA4OTc4NDk3ZDkgbGVnYWN5LXRydW5rCis0MjIxIDY4ODEyYjc2M2UwZTJiYWQyYjc5NGM3MzM2ZjE3NmQyNzNkYjQxOGQgbGVnYWN5LXRydW5rCis0MjIyIDZjYjc1OWM2ZDE3OTBkMDZlMmMxZGE4M2M4OTA0MTZjZWRkOWIzOGMgbGVnYWN5LXRydW5rCis0MjIzIGIwZGNhMjk3MmIyYjE4ZDkzZTZhZDhkZjBjZTU3NjNjMWZhODU3MTUgbGVnYWN5LXRydW5rCis0MjI0IDUxYzJlNWE5ZjM5Y2QxOTFmMmM0ZGIwZmVlYzI2NDhiMGVlNzI2MzUgbGVnYWN5LXRydW5rCis0MjI1IDdiM2E3Njc5MjRhMWE5ZTMyYjU1MDcxZjE1OTc2YjJkMDU2OThkZjMgbGVnYWN5LXRydW5rCis0MjI2IGRmN2FhNTRhZGNkMjliYzAxYjQ1OTFlYjQyM2U0MWFiOWNiYzcwYjEgbGVnYWN5LXRydW5rCis0MjI3IDlkMzYyZTVlNGU3ODk5MGZhYWQ4YjU5MTc0ZjZiZDc4YzA1MThjOGMgbGVnYWN5LXRydW5rCis0MjI4IDE3YzgwYTk1MjkxNDM5MzZlOTNjMzM5ODMxMTQ4NmUyOTM2NTEzYWIgbGVnYWN5LXRydW5rCis0MjI5IDUyNTdhZjgwZTE2MTA4N2M2OTU3MGVjMjM1N2MwYmJkNjM0OGU1NjYgbGVnYWN5LXRydW5rCis0MjMwIDdlMDAxYzQ4MTBiYmM3NjJiMGYwNWE3NzliOTY3NzE0ZGFkZDBjZjkgbGVnYWN5LXRydW5rCis0MjMxIGZmZGZhZjFiMjRkNTQwY2NkMjk2OWYzNTk2NWM0NTYzOGQzNDUxMjIgbGVnYWN5LXRydW5rCis0MjMyIDk4YTIwYTQwZjYxM2IxM2RmYTdhNTRhZTQwYzMwOWY1ZDIzZjNkZTYgbGVnYWN5LXRydW5rCis0MjMzIDc2Y2M4NThlMzM5MTU4MGQxNTVhNTkxN2RhMzkzMGUyYzMxMzZjZTMgbGVnYWN5LXRydW5rCis0MjM0IDkyZGYzMGRmNWQ3NzllODIyYzAwY2RhYzJiNDU2NzRlOTA3NTMzYTUgbGVnYWN5LXRydW5rCis0MjM1IDIwODk3ODE2YTRiNmM4ZGQ2NDE4YTY0ZWI5ZWE1NGEwYWIwZDg2MmQgbGVnYWN5LXRydW5rCis0MjM2IDFjMjhmMTkzNGExMWVlYTRiNjgyOGQ1ZDNlOGVhOTY3NTJlMTY2NGEgbGVnYWN5LXRydW5rCis0MjM3IGEzZjE5OWU4YmFjNmYwMDMyMTRiMDBkNjBjZGNiYjBkMjFlYTgxYTcgbGVnYWN5LXRydW5rCis0MjM4IGRkMTY3YmZkN2EwODZhOWVlNjYxYWZhYjA4MDVhNDNmNDJlYzg3YzIgbGVnYWN5LXRydW5rCis0MjM5IDc3MDdiOTcwOGY2Y2M3YzNmOWViZDdkNDY5MmJhMDZhMzAzNjRiMTkgbGVnYWN5LXRydW5rCis0MjQwIGNiODRkZDUxYzJhYTMxMGU1YmFlNzFkOWRiNGU3NDFjYTBlZTViZmYgbGVnYWN5LXRydW5rCis0MjQxIDU2YTk4NmU0OWY1NjdjZDY4NDg3ODRiYzViNjQ1MGYwMGVlZTJjMjIgbGVnYWN5LXRydW5rCis0MjQyIDQzYWU3ZmNkNzgzNTJhMmY3Y2UyOTVhYWRhNzRkZWVkMTg1MTc1MzggbGVnYWN5LXRydW5rCis0MjQzIDM2MjE0Yzg2MTE0NGRkNjJhMjBhZDRkM2IyN2I5YzgyOTNmNjA0MGYgbGVnYWN5LXRydW5rCis0MjQ0IDUzNWFjYTZmZjdlOTEzNDcxOGEwMmI0ZjRhZmIyMmJiZTk3NjNiMTUgbGVnYWN5LXRydW5rCis0MjQ1IGE1ODRiNGJiYmM1OTM0YzFhZTQxZWQ1MjhhZTc5MmMxMDRkZjUyYTUgbGVnYWN5LXRydW5rCis0MjQ2IDY2ODUwNDg0M2QwZjQxODljODQ1MzgyZDBiZDRiY2RjNTc4MzJiNGIgbGVnYWN5LXRydW5rCis0MjQ3IDliNTMwYmI1NDY0MmJhMTg2YmI1NzRiNTg5NjAxMmIyMDA5Mzc0ZGUgbGVnYWN5LXRydW5rCis0MjQ4IGZhOGJiZDA5ZjJlNmI2YzZlOTc0NzE5N2EyODM4Y2U4NzdjNDQ2YTEgbGVnYWN5LXRydW5rCis0MjQ5IGI3MTFjOTAxMDIzMjkzMjY5YjFkZTE2NzgxZmJiZTA1ZTc4OWEwMGQgbGVnYWN5LXRydW5rCis0MjUwIGIxNjdlMzM1MDQ5MTIwZWM3YjBmYzVlNjg3NDRjNWU3NmY2MGE4NGEgbGVnYWN5LXRydW5rCis0MjUxIGYwN2M0ZmYwZjc5NDY4NjcyMGYwZTE5YmU3MzU1ZjRmYjQzZTg5MWUgbGVnYWN5LXRydW5rCis0MjUyIDYwNjYwMzQxZWUxMDcxYjQwZmVmOTM1YTNjMTY2MTBlNTZlODJlZDkgbGVnYWN5LXRydW5rCis0MjUzIGFkM2YxZDM2MmMxNDA2Y2ZjMDIyYTQwYTcwZWE5ODA3ZWIzYTYwY2EgbGVnYWN5LXRydW5rCis0MjU0IDE0OGVlMmFhNjNlNmRlYzU5MWFjNzQ1MjBmYWVjMWQxYjEyY2U3ZDkgbGVnYWN5LXRydW5rCis0MjU1IGI4NDAyOTZiOWUwNThkMjc0YTg5MDA0NGQ4Y2FkNTNjZGVlMDcyNTUgbGVnYWN5LXRydW5rCis0MjU2IGZhZmE1ZGM4MTAwZjg0OWJmZTcxZTRmMDY4MjBmOGIzNTQ5OTJmMDQgbGVnYWN5LXRydW5rCis0MjU3IGI0MDhkNmE2MzgxOTUyMzllNjI3ZTdhMDU4MThlZGI0ODZkN2Y3ZGEgbGVnYWN5LXRydW5rCis0MjU4IDViOTJhMDgzOTM0ZGJmYjM5NDc3Zjc0YzA2NGM1NjBjYzUxN2UwMTQgbGVnYWN5LXRydW5rCis0MjU5IGYyY2UzMTkxZmM5ZGUzOGI0NjFiZjViYjQ0ZTkzYzhmMmEyYTZhZTUgbGVnYWN5LXRydW5rCis0MjYwIDc4MjUwOTgxM2Q1NzJiODZmOTBjYzRjZDI3Y2JhNWMwNzkzZWM0ZWIgbGVnYWN5LXRydW5rCis0MjYxIDZjZmQ0M2Q1YzA3NDZiMGVjODBlMzRlNGRhNTlmMjhlNzcwYzcxYWMgbGVnYWN5LXRydW5rCis0MjYyIGQ4ZDk0MWZhZjUxMTBiMjMxNmQyMzdmOTM4MWEyNGFjZmZjM2Q4YzggbGVnYWN5LXRydW5rCis0MjYzIGQ4OTJhYzRiNGZiOTllMTQ5MWEyNzA1MjI0MTBmMGM1NmJlOWI3NzUgbGVnYWN5LXRydW5rCis0MjY0IGVhNWIxM2QxMWExMzA1YmI0MDRlZDBjYThhMjhjMWRmODJjY2VjYzAgbGVnYWN5LXRydW5rCis0MjY1IDJkNWIzNmE0MzhhYjljZjM4NThiN2Q3MGJkNTk2MjI0OWVmY2EzODEgbGVnYWN5LXRydW5rCis0MjY2IGM0N2Q1MjZhOTRkOTJlMzhlNjY2ZThjZjNlMjEzMjY3MTVjMDQxODAgbGVnYWN5LXRydW5rCis0MjY3IDA0MDZhMjA4Y2E1ZDNjMTM3Yjk1ZDZkYmJhNmVjM2VjY2Y0MmFmNDggbGVnYWN5LXRydW5rCis0MjY4IDYzNTNmZTI1Y2RjZTRiZTUzYzk1NzhlZmMwNmNkYWY1YTUyY2Y4N2UgbGVnYWN5LXRydW5rCis0MjY5IDNiNDcwMzE3M2NhZjg2NjRmZTE0ZjAwNmRhMmU5ZTUyZTk0NGRhOTggbGVnYWN5LXRydW5rCis0MjcwIDIwZTFkMjk2ZmRjYzg2YmNlYjgyZDYzODdmMTY0MDk0NDMwODEzYjYgbGVnYWN5LXRydW5rCis0MjcxIGE3MTBmYjAwMWEzZmI0NTEzYzIxZmIxMzRjODgwNGI3NjQ2MTI0OTUgbGVnYWN5LXRydW5rCis0MjcyIGEyNmIzMWUxNTliZWM0MWQ3OGI5NmZmM2Y1YmE3ZjAyNGYzOTAyMDcgbGVnYWN5LXRydW5rCis0MjczIGNlNTQ0N2RiOGY1MzdlMmEwNGJiYTM1MGVmNDllM2U0NTQ0NTBmNWEgbGVnYWN5LXRydW5rCis0Mjc0IDQwNTk0ZjgwYWIzYzJmMjg5ZTIwOWY2OTU0ZjkwZTRiMWJlZTdlZTEgbGVnYWN5LXRydW5rCis0Mjc1IDc2ZDBmMmIzYjllZTcxMTc5ZTBhY2Q1MjE0OTA0MTFmYmFlMmU5NjEgbGVnYWN5LXRydW5rCis0Mjc2IGE2ZWYyYzk3Yzc3NjFlZDIxMjcwYmE3YWM1ZGVlM2FlZjYzZTExMzkgbGVnYWN5LXRydW5rCis0Mjc3IGIxMWEwNjY4YjE4MWNjYmI0NTZkYjc4NDgyMmI5OGJkODM0YzkyNzEgbGVnYWN5LXRydW5rCis0Mjc4IDc5MzFkZTAxZTY5MzdkZTVhNGQzMzFkNDM1NTViMGYyYjNlNjI3YTAgbGVnYWN5LXRydW5rCis0Mjc5IGNlODk3ZTc1MmNhNGFjNTUxNTMxYTIwMjJkMjlmNzE0MDM4ZDQ5ZDkgbGVnYWN5LXRydW5rCis0MjgwIGY1ZjNkZGZlYzNjN2IxNWNjOWRjY2JhZjExYTFjNTE3ZTk3NmViMTMgbGVnYWN5LXRydW5rCis0MjgxIGI0NjRlMWQwYjJmYjQzNGM4ZjZiODhiMjQyNThjMjM2ZmZhYTc1NjIgbGVnYWN5LXRydW5rCis0MjgyIGMxYjBkN2VlZDlmZGZhYzZjMGI0ZDA5NzU3ZDI1ODJkNzFiMWI4ZjQgbGVnYWN5LXRydW5rCis0MjgzIGM0NTM2ZDhhZjdiNWQ0ZTgwNWY5ZjVkZmFkMDY5MDg2MWVkMjA4YzEgbGVnYWN5LXRydW5rCis0Mjg0IDIxNmI3NTU1MTVlNjVkMDFlZDI0MTdjZWE5ZTcwYWM0YTY4YzlkZGIgbGVnYWN5LXRydW5rCis0Mjg1IDc5ZTQyMDgwNWM2NzIyN2IzODk0MGRiNTk0MDFjNDIxODVlMGE1YzggbGVnYWN5LXRydW5rCis0Mjg2IDM5YTRjMTVhY2IzMmRiZTIxMGNlOGJhMWYwM2ZjYjU4YTUxZmI5NzEgbGVnYWN5LXRydW5rCis0Mjg3IGY4YmFhYjVjMDE2NTI4NTA1ZDgxN2E2YTk3ZGZiN2FmOTQ4NGU2ZTggbGVnYWN5LXRydW5rCis0Mjg4IGQ3OTk4ODljMDFlMzViOTNlODg0ZDk3MmM2ZWE3MjYxYmY3NDE0NjYgbGVnYWN5LXRydW5rCis0Mjg5IDEyMDNmMDYyOTUyNzUzMWM4MGI1OTc0MTk2Njg2ZGZhYTgwZWI4ZjIgbGVnYWN5LXRydW5rCis0MjkwIDg3MzY0ZDllMzQ0NGU5NWY0N2E0MDdhODI1NDA2NTYyNzE5ZDM4ZDYgbGVnYWN5LXRydW5rCis0MjkxIDVmNmFjZDFhYjVjNTAzZmQzZmU5MDhiMTA3NTQ1Y2M4YzJjOGI5MTIgbGVnYWN5LXRydW5rCis0MjkyIDFmNGE4NmRiY2Q3OTA2NDE3ZTlhODAzNDEzOTgwZThmNDgxMmVmMTUgbGVnYWN5LXRydW5rCis0MjkzIGJmZDExNjIwYTJkODFlODMwNGY0OGY2NTUyMmJiNzI5NDg5MDEwNGUgbGVnYWN5LXRydW5rCis0Mjk0IDIzZjAzZWYwMDM2MWJjNzcxNzc5NWIzMWRkYzkzMTUwYTU0NDJiNTUgbGVnYWN5LXRydW5rCis0Mjk1IDY1Y2M3MjdmMTQzNmMwNzk3MjdmZmRkNzA5MTZjYjQ1N2I1ZGE4YTggbGVnYWN5LXRydW5rCis0Mjk2IDgyOTRiYmQ5NDUzNTBkNDFkNGVhZTM2ZTUxMjU4NjNkYjM0MzZmYjYgbGVnYWN5LXRydW5rCis0Mjk3IGQxZTZjOWE2NGE1NjM4NDFmNjAxNzdhYzkwNzczOWY5NTNmMTU2MzAgbGVnYWN5LXRydW5rCis0Mjk4IDA5NWMxY2M3ZjJiYmIyMmZmMTE2YjAzMzdhYzNiZDJkMmZlMzdjZDYgbGVnYWN5LXRydW5rCis0Mjk5IDUyNDNmYjE4N2QzNmM2MGIwMTIxMzNhMWE1YzY2MGQ3YTM1YTEyNjQgbGVnYWN5LXRydW5rCis0MzAwIDBkMzE4NDc1ZjllMzcxOThiNWEzMjBjOGUxMGU2OWE3NTIyM2IxNGMgbGVnYWN5LXRydW5rCis0MzAxIGI3MjQ1OTk0MDFmZjczZmJiOGQ1OTViOWIzZDYzMDkzNjM0YjQ5OTQgbGVnYWN5LXRydW5rCis0MzAyIDZlMjNhZjY0NWI0MGJkZDhlMzFlYTBjYzRjNzJkMzBlZjc3OGYzMTUgbGVnYWN5LXRydW5rCis0MzAzIDFmYzRkYjc5MTQ2YWU1ZWY1NzdjMDZmYmE1Y2RmN2M1OGQyZWU0N2UgbGVnYWN5LXRydW5rCis0MzA0IDE0NTM5MWRmMjY1NzllMWM2ZmM0NDEwODA4ZWE2ZmI5MTQ5NDVlNTcgbGVnYWN5LXRydW5rCis0MzA1IDA5ZGU3MjNiMjU5NjgyNjY1YzQ2NjAyMmMwMjIwMmMxZmMxZmUxYWYgbGVnYWN5LXRydW5rCis0MzA2IDlkNGFkZDQyZWUyMmZmNDI4OTNlYWYzNzcwMjgwOGEyNzUxNTdmNzEgbGVnYWN5LXRydW5rCis0MzA3IDI3ODZhY2JhNmNlYzFjZmI5YTU5NzExZjRjZTYxM2QwMjUzNmNjYTkgbGVnYWN5LXRydW5rCis0MzA4IDlkYmRiODNkNDE3OGYzOTI3NThlYzhhZjhkNDNiYzEzYzI0NGYzNDEgbGVnYWN5LXRydW5rCis0MzA5IDE4MjI0NjVhMzViODBjZmNlNDI4MzgyZTc1N2FiYjRiMjc3NDI0NjMgbGVnYWN5LXRydW5rCis0MzEwIGUxNWY5NzYxY2IwMzViY2I2MWQ2MjRmY2VhYTUzMTlkYTUwZWY4M2YgbGVnYWN5LXRydW5rCis0MzExIDBiMDgxOTZlOWZmNjE2ZWMzNzQ2M2RmMzM2MjIxMzc3NzhkMDNiMjIgbGVnYWN5LXRydW5rCis0MzEyIDU0ZmRjOWE5NWY0ODkwOTNmZjVlZTMwODg5Yjk2ZWY2NzM2ZTY4NzIgbGVnYWN5LXRydW5rCis0MzEzIDc4ODk4YjA0YTY1YmVmMWU2MjFmZmY5NTE3NTNmNTczMDQ5NTc0ZDcgbGVnYWN5LXRydW5rCis0MzE0IGQ0MDVlM2U4ZmZkMzQ5YWU3NjNlYjdiOGNmZGNmNGZiNGFkMjVkMGYgbGVnYWN5LXRydW5rCis0MzE1IGVmMDk0NjU2MDYyMGFjYjU4Nzk4OTJmZmE2MWQ0YjUxMzNkMjhkODggbGVnYWN5LXRydW5rCis0MzE2IDg1NWNlZmJiMjcxODYzMTI5YWQxZWQ5OWEwNDRmYzhmNDJhMzhmNzIgbGVnYWN5LXRydW5rCis0MzE3IGFhZjFlMDVlNjg0MmQ4ZWQ4MzU1OThlNWM3YjU5YzgyOTQyZDY5YTcgbGVnYWN5LXRydW5rCis0MzE4IDIwZTYwNzE0Nzg4YzVkYTdhNzc5OTJmN2QyNTllM2I4ZTMzOTg5NTUgbGVnYWN5LXRydW5rCis0MzE5IDljNWQzMzNkMzMwMGU5MzI0MGUxNWZlMjNhNTAyNjg2ZGE2N2MwNDggbGVnYWN5LXRydW5rCis0MzIwIDc1OGMxMzc0ZjMwMzQ4MmZjZmM2ZjNmZGIzYjM0MTAwN2VhMjdkZTAgbGVnYWN5LXRydW5rCis0MzIxIDYzYWQyODkzOTc4MWFhOGQ3NTc5ZTA4NmFjYzJkNTc2NTY2YWM4NDkgbGVnYWN5LXRydW5rCis0MzIyIDJjZWRlNjFlOWIxYmE0ZWI4YmE0ODlmYjU0MDFkMzJjMzAyNTY1OTIgbGVnYWN5LXRydW5rCis0MzIzIDYxNzM4ZWQ2Y2MxMGM0Mjk1MmJhOTJmZTEyMTc0YzNhNjNkNGJkZmIgbGVnYWN5LXRydW5rCis0MzI0IDEwYTEyNDczZWU5MzFjYWQyNGM3M2Q1ZmY3MjdmMTQ0ZTFkZjU2OTAgbGVnYWN5LXRydW5rCis0MzI1IDMyZTZjM2E2NzFkMDBmN2YwYjE2YWQ5ZTExM2Q0MTcxM2RmMDM2ZjAgbGVnYWN5LXRydW5rCis0MzI2IDkwODFiYjdhY2Q1MjhhZTkzNGM1ODJjMjk4MDE2M2M3MWVjYjE3MDkgbGVnYWN5LXRydW5rCis0MzI3IDA3NGFhMjYzODI2YjQ2NjlkMGUyNDRlYTIwNWQ0MjNlMTJiYWU3ZTkgbGVnYWN5LXRydW5rCis0MzI4IDhjOWNjMDU0YzVlZGNlNmRlYWU4YzQxZjdkNzMyYmQ5NjEyMWY3ZGQgbGVnYWN5LXRydW5rCis0MzI5IGNjNWJmNmJlODFhNWQyNmY4M2QyOTY4YWJkOTZhNDQwYjI4ZmEwMGIgbGVnYWN5LXRydW5rCis0MzMwIDMyZDAwNWZhZjVmY2QwYmU3NDBhMzU5NDNhMjkzNWYyNjAwNDY1MmUgbGVnYWN5LXRydW5rCis0MzMxIDI3ZDRmMWY5MzQ2YzU3NDc3Njc0NzI4MjY4NmYyM2Y4MTFlMzZjMTUgbGVnYWN5LXRydW5rCis0MzMyIDkxYmZiMjc3MTU1NGU4MTdhZTA5M2U3ZDFjODVlMjlmOTNiMTdlNmQgbGVnYWN5LXRydW5rCis0MzMzIDA1ZmI5ZGVjMmM5Y2YxYzRmOGU2ZjQ1ZTAxZTJiZDViY2U2NzhkNTEgbGVnYWN5LXRydW5rCis0MzM0IDNhNzBlOWMwZDlmNTExYTU3YWU0NGVmMDRlN2I0ODRjNTU5NGI2OGYgbGVnYWN5LXRydW5rCis0MzM1IGY4NGI2NGRmMDljM2U2Mjk1NWFlOWU2ZGExN2MxN2Y4NDEyM2ZhNGMgbGVnYWN5LXRydW5rCis0MzM2IDQyMTRhNzU4M2YyYmE4OGI4MGU0Y2ViMjAyYjEyZjJhM2NiYjQ0MTUgbGVnYWN5LXRydW5rCis0MzM3IGFmYmYxMTg2Yzg5NzRhMGRlYmY2YmY3YjA0Y2NlMmRjNTU5MTE3NGYgbGVnYWN5LXRydW5rCis0MzM4IGQzZGUyY2FkMmM2ODRjMTYwMzVhNDk4NzBkMzgwZGM4MmZkOTA4OWMgbGVnYWN5LXRydW5rCis0MzM5IGFjNmE5ZjkwZjZmZDQ4ZDdjMjU0MDhkYTA2NjBhZGQ2MzA1ODM4NjUgbGVnYWN5LXRydW5rCis0MzQwIGU3YzZhMTgzODFkOWU3YTMwNWM4NDg4MGMxZmM0NzEyYWNhNzIyODkgbGVnYWN5LXRydW5rCis0MzQxIGJlOTU2YjFlZmI5N2NjYWE3NWUxYWE5N2JjNWQ3OWMxZTFlZGRiNGIgbGVnYWN5LXRydW5rCis0MzQyIDRlMWNlYWVlMjk2MzI3ZGVmY2U0YWI0NTA5MjgzMmNlNzBiYjdlOWQgbGVnYWN5LXRydW5rCis0MzQzIGI3ZGU2Nzg1YzhhYzdkOTcyNDIwMjI0NmE0NjljNzc2M2MyMzczYWQgbGVnYWN5LXRydW5rCis0MzQ0IDI0YWU3YWY0MGEwOTYwZGVjZGUxNjc4M2Y2MzQxOGQyY2RmYzdhYTIgbGVnYWN5LXRydW5rCis0MzQ1IGVlYzBkYzVhYmE2MDExYmFiYTUwOGZjYjU2MzEzZDc4NjAyMjUwODYgbGVnYWN5LXRydW5rCis0MzQ2IGFiYTUxNjIxMjQ0ZTdiMDEyMzk4YWFhMzc2NmQ3YmMxNmNhYTc3NzQgbGVnYWN5LXRydW5rCis0MzQ3IDJjOGI0ZGYyMmJjMmYwNDVjMTFkNTY5ZTlmZDI5YTM2NDM5N2UwYjYgbGVnYWN5LXRydW5rCis0MzQ4IGMyMzUwYzg3YmUzZmNjNzllOTc1MWJkNzE5MTVkNWQxOTBkOTdiNjkgbGVnYWN5LXRydW5rCis0MzQ5IDY1NGFhOTY0ZGMyNjNmOWRiYmUwNTg0NjUzZDI5ZWUzZTM4ZTU2NGEgbGVnYWN5LXRydW5rCis0MzUwIDNmYmRhODc2ODg1NTI4NjJjYmI2OWEyYjVjZmUxODZhMzhiZTQ4ZjIgbGVnYWN5LXRydW5rCis0MzUxIDIwZjE3YjVhY2NiZjgyMDBiODcyYTkwY2MwMjM1MDU2MTVlYjNhOWYgbGVnYWN5LXRydW5rCis0MzUyIGE2Nzc2YTc4OGY3NDlhZTFkOTliYTUyNDIxZjU1YzViNmUwODU0NDUgbGVnYWN5LXRydW5rCis0MzUzIDViYWYxMTM1YTEzZDNmNWE2MzJiN2M3MDJjMDNmM2MwNWJlNDRjNjUgbGVnYWN5LXRydW5rCis0MzU0IDI1OWU2OWFhMGYxNTk4ODczMDAxYjBhOTBkNTI0MGI1ZTgxZGVkOTggbGVnYWN5LXRydW5rCis0MzU1IDUzZDE3YzA0YjQyZmIwZjM0NDliNGI4NTYyY2RiZjg1NTY3NGNhMzAgbGVnYWN5LXRydW5rCis0MzU3IGU0NTBiZDQzNjMxYTk4NDI4NmViNTQwM2RlNjkxZWJlZGQ0MmE3YWYgbGVnYWN5LXRydW5rCis0MzU4IDYxMDkwNjlkNTYxMmYwMzg4ZTQwMjA4ZGQ4ODJlZDU0NTdjZjhkM2IgbGVnYWN5LXRydW5rCis0MzU5IDYxYzNjMWEyZmRiNDQzZjJhZTFlMGU2Nzc2MmYxYWVmN2IxODUyOTMgbGVnYWN5LXRydW5rCis0MzYwIDlkOTgxMmYyNzk4YjczYTY1MGZhMWNjMTIxMTQyZjUxZGFmY2Q0NmQgbGVnYWN5LXRydW5rCis0MzYxIGJkOTQwNjhmMGZkMDM3NTQwYWM1MDRmZTgxNzQyMzJjYThmMjNjNGQgbGVnYWN5LXRydW5rCis0MzYyIDA0Mzc3MzgyNzlhOGQ2ODA3OTNmZGRmOWQ1YWJhZDFhZDcyMjIzY2YgbGVnYWN5LXRydW5rCis0MzYzIDBjMjMyMTk0YTY0ZjEwYzcxYzYxN2E3MmM2OWE0YzhkZWRhYzExOTIgbGVnYWN5LXRydW5rCis0MzY0IDM1OTQ3ZjYwNTI4ZWQwMTU3ZTIxNTE0ZjU1NDAzOGJlMjZkZDBlMjAgbGVnYWN5LXRydW5rCis0MzY1IGE3ZjI2OTYxMGVjMmQ3OWY3ZmQ0OWQ1NDhmNDYyMzg4NzJkOTZiYWYgbGVnYWN5LXRydW5rCis0MzY2IGFkYTE5YWFhZjhjMGM4ZTUwNzFiNTdhNGJhNjk1ZGY0MzA4YjZmYzggbGVnYWN5LXRydW5rCis0MzY3IDg2MjNhYTM5MTVkYjcwMmIxMDJjYzc3MmNiMzM2NmVhYzI5NzAzNDAgbGVnYWN5LXRydW5rCis0MzY4IDg5MzQxMjEwMTI5NjlmMDNkMGU4YzdlMmIwNDMyZWRkZDg1YTkxZWUgbGVnYWN5LXRydW5rCis0MzY5IDgwODE4YzEwNmUzZTZmNDg3N2E4NGU0MjZjMDYxYzdhN2ZiYjUxYjMgbGVnYWN5LXRydW5rCis0MzcwIGUxMjVmNTAyMWU2NzNkMTQ1ZTNlY2Q4YzZkZWM5OGQzZjZjODdhZjggbGVnYWN5LXRydW5rCis0MzcxIDAxNGExZmI5YzY0NjM0MjlhYzU4YWE0N2E2MzhkMTYyY2ZmNmJiNmEgbGVnYWN5LXRydW5rCis0MzcyIGYzOWQ0MzcyODc3MjRlNTYyNzk2YWI2NTExNTBmZjgxZDIzMGY0YzYgbGVnYWN5LXRydW5rCis0MzczIGUwYWU2Zjk1YmNmYjQxOWNlMjczODlmOWZmMjkzZWEyZjI0OGFhM2IgbGVnYWN5LXRydW5rCis0Mzc0IDVmMzNjYTUyMTQ1MjEyNTllMzVmZWIwM2FmOTU2YWUwZmVhN2Q5MGEgbGVnYWN5LXRydW5rCis0Mzc1IDI3NTk1MWIwODYwOGM5Y2M0ZDdiZWRhNDc0NTkzMDZjZWZlYjY0MDAgbGVnYWN5LXRydW5rCis0Mzc2IDM4NTA3MTNmNmFlYWU2OTA4ZDY0ZmNiMzgxNTYyOTY2MGQxYjFhZDEgbGVnYWN5LXRydW5rCis0Mzc3IGMxMDg4ZDBiYjU2MjMwNjZjZTUxMWUwODcwYTIwZTE3Zjc1NTQ4MjEgbGVnYWN5LXRydW5rCis0Mzc4IDU4YjA0Njc5NTBkODIyMzY4ZDBlYmIwNWFjNDA1M2NiMjJjYTA2NGQgbGVnYWN5LXRydW5rCis0Mzc5IGExYWJhNGQ0NTg5M2IwYWRhOTYyNTMzMTY2Mzc1NGE4YzBiMjgwZDAgbGVnYWN5LXRydW5rCis0MzgwIGVhOWU4NTMzZDZjMzJhOTNmMGU0YTMxODE5MWVkYzQzMjg0Nzk0M2MgbGVnYWN5LXRydW5rCis0MzgxIGU1NmFmZDAzY2E3ZmM5NDYwNmQyZGFlYjQwNGUxODFjNGI2YTk5M2QgbGVnYWN5LXRydW5rCis0MzgyIGE4YjdlZTBlNTcyZGE3ZGUwMDBlMzRlMzhjN2VkNGQ0OGYzMGNmYmEgbGVnYWN5LXRydW5rCis0MzgzIGYwN2Q2NmMxNjJjYmZmYjYwM2FjYzJmODM4OTk5YzkxM2ZmMzAzNmYgbGVnYWN5LXRydW5rCis0Mzg0IGZhY2E3ZTMyOGJhNzQ5YzEzZWY1NmMwNzM2MTQxNjMzZjU2MGM1ZDkgbGVnYWN5LXRydW5rCis0Mzg1IGUzZmY5ZTJhM2ViN2FmNWYxNmYwZmU4ZDM5NmE3YTNjNjc5MGJlZmQgbGVnYWN5LXRydW5rCis0Mzg2IDViY2FhZWQ5MDJmNTUwZGFmMmViOThhYjYwNTU3ZjI4NDE3NmE4ZmMgbGVnYWN5LXRydW5rCis0Mzg3IDIzNDgxNzY1MmRiMDZjMmQ0ZjE1OWFhMTc1ZjZhNWViNTY3NWJiMWEgbGVnYWN5LXRydW5rCis0Mzg4IGYzYWU3YzE3YWMwODdkOWEwMGZiMDFjMDg3YzllOGZmOTI4YTFiNmQgbGVnYWN5LXRydW5rCis0Mzg5IGQ5YTNlMzBiMmU0NzNjOGNjYWI2MDA1YjZiMzMzMjc3N2E4ODA3NDMgbGVnYWN5LXRydW5rCis0MzkwIDQ1YzczMDE4ZGQwMWQ3MWNmMzgzYTNhMjRkNWQ4NDRlYWU1OTY2MjggbGVnYWN5LXRydW5rCis0MzkxIDMyMGJhZWFiNzg3YWM5ZDcwNTRjZjA5ZDBkMWUwZjI4M2IzYzdmNjcgbGVnYWN5LXRydW5rCis0MzkyIDJiNTgxY2U0M2Y0YTM3MzM5ODI5ZWY2ZWJhNTRhY2ZjYTM1NzcyMjAgbGVnYWN5LXRydW5rCis0MzkzIDkzZGU1Nzc1OTY2ZTU1OWVmNmMyY2JiNzc2NmMzMDQwNzljYTcyNzEgbGVnYWN5LXRydW5rCis0Mzk0IDhiODk3YjdmM2FkZThmYzRkOTY1NDNjYmZjNTk3MDMwZmJkMjFiMjcgbGVnYWN5LXRydW5rCis0Mzk1IDBhOTE1MmY4NzExMTYwMjM4MjJhZjBkNmU3ZWVmZTY3OGJkOWZmMTQgbGVnYWN5LXRydW5rCis0Mzk2IDg1ZjFkMmJlYzYzMmNhMzg5YWQwOGM0MTQxMWI5MGUwY2IzZTFmMzAgbGVnYWN5LXRydW5rCis0Mzk3IDMxODczYmQ2ZjRhODcxNjhlNDY4YjlhNWU1ZTQ1OWNiYjBhNDhkZjAgbGVnYWN5LXRydW5rCis0Mzk4IDhlOGZkZGNiZGZkMmIyNWU0ZTEzNzYxYTU4YTY0YjgzOTBlMWRkNDAgbGVnYWN5LXRydW5rCis0Mzk5IDRiZTZlZjFjMmMxZGY1ZTFkODM0ZjVhZGZlMTZiODY5MjgxYTlhNzcgbGVnYWN5LXRydW5rCis0NDAwIGJiZjgyZWI0YTZkOWQzM2YwMTA4MDBlMWM3MzRiYjVkNDEzOWVkZDYgbGVnYWN5LXRydW5rCis0NDAxIGJhMDlkOTBmNDJiYjI2MzE3NGE2ZDBhNTNlMzEwNGQ0NmZlZjNlM2UgbGVnYWN5LXRydW5rCis0NDAyIDliY2FjOGRhMDI2MjQ0NWM1YWMwODU5NWE4YzQzYWM0MWIwM2VhYjAgbGVnYWN5LXRydW5rCis0NDAzIDMxNWQ5YzgyODE3NzRkMTMxNGUwOWY5ZDFiMzJmYTVmM2FlOGFmNDIgbGVnYWN5LXRydW5rCis0NDA0IGY2YjRlN2FjYzdhMzc0ZmEzMGM1OTk4NTFiMzM4NGE5NmNjNjQ1NDkgbGVnYWN5LXRydW5rCis0NDA1IGUxNTdjODFkMDM1ODlkNjk0OTc2ZTE0ZjY3OGYzNjYyMTA3OThkZWYgbGVnYWN5LXRydW5rCis0NDA2IGIyYzU2ZTA0Y2I4MjkwNWU0NmU1ODNlNTY3OGFlNzdlOTcyMDhkZDkgbGVnYWN5LXRydW5rCis0NDA3IDRjNTcxZDhjM2NlMTNiZmY3ZmU1MDE4NjBjYWFmMjhmOWYyMGQ2ODEgbGVnYWN5LXRydW5rCis0NDA4IDQ0ZTk0MTUyNDVmYjA5Y2VmNWYyYTFmYmRmYTFhNWM1MmYzNTAyMWEgbGVnYWN5LXRydW5rCis0NDA5IDg4M2EyMjgxNzQ3MmFlZDA1ODM2YTA1YjRiMDliNjRjNGNmZjk4M2YgbGVnYWN5LXRydW5rCis0NDEwIDc2MTA1MWFhNDM0ZGIxZjA5ZGI4NTRjZTdmMjBiYjJkMWE1ZWFmNzkgbGVnYWN5LXRydW5rCis0NDExIDM4ZGNiMDkwZjQ4YjA2Mzg1N2Y4OTMwZWI4ZjE3NGYyZjZlOTU3MmYgbGVnYWN5LXRydW5rCis0NDEyIDU0NWUyMzU4MzFiN2JiNDlmYmNkNzlhZDZhYmY2YzVjYzE4Zjg3YjcgbGVnYWN5LXRydW5rCis0NDEzIDcxMDBhY2IwZDM2M2Q3ZWI3ODgwN2NmNzkyYmQ5YmQ4YWRhYTQyMDcgbGVnYWN5LXRydW5rCis0NDE0IDQyN2M2MTljYTVkMDczMTliNjgxYTcxMDJjY2M3ZjcxYmJmOTg2ZWUgbGVnYWN5LXRydW5rCis0NDE1IDA1OGE0NmQ4ZmFmNzY1OGVhMWEyOWU1NjdhOTEyMmVjMzVjODhhODAgbGVnYWN5LXRydW5rCis0NDE2IDY0MWY2YmJmODA3YjljYzk3OTJlNzNiNGUwOWZhNTBjZjg3MjJkYWMgbGVnYWN5LXRydW5rCis0NDE3IGExMGQzMWZmMzUyN2RhN2QzMmY4OGIxYjA2ZjI2ODY3M2YzYmUyNTQgbGVnYWN5LXRydW5rCis0NDE4IDc4YmY2NzVkZjVlNWRmZmE5NjRkZWMwMDhkNjUzMDM2MmQ5MWFlYTAgbGVnYWN5LXRydW5rCis0NDE5IDNiYTE3MzA1ZjA0N2YxOTAyNGQzZjk5OWQ0ZDM0ZmJjMWY3N2M4NDMgbGVnYWN5LXRydW5rCis0NDIwIGRkN2JlODEyODQxMDcxNGIxOTQ2ZTM5OTYxMTNiNjU5YzEzZDA3NzUgbGVnYWN5LXRydW5rCis0NDIxIGRjMWRiZjZiNTIxMTAwNWJkYmNhYjk4ZjcxY2M1NmNiZjkzMzI1NTkgbGVnYWN5LXRydW5rCis0NDIyIDRmYjBhMDgwN2IwNTY3NDAyYTI2YjE1OGFiY2JmNDU1OTA3OGE1ZDkgbGVnYWN5LXRydW5rCis0NDIzIDNkZTVhNzU0OTRkZmNhMmE1ODQ4NWQxNjFlNGI3YjhiYjRiZmZlMGIgbGVnYWN5LXRydW5rCis0NDI0IDg0NjM3Y2ZkYmMwNzQyYTk3NTk1ZTQ0ZDY2OTI0N2RjNGY5MDNiMTUgbGVnYWN5LXRydW5rCis0NDI1IDg3YTYyMGQ4NDc2NjMzZGI4YjM1YjE5ZDllNGQzNGQ4YmYzZjgxZDQgbGVnYWN5LXRydW5rCis0NDI2IDQ0NTQ0MjE3ODRkODRhYzk0ZDM5ZDllZmZjNjI1NGRmZjA1MmJhODEgbGVnYWN5LXRydW5rCis0NDI3IGYyMmNiNWZlZTljOGI3ZDgyNjViMzc5YjhmMzUxZjMwMWQ2ZjIwOGMgbGVnYWN5LXRydW5rCis0NDI4IGY5NWMxOTNiZmU2NTM0ZmExZjNjZjgyMDg2NTZjMDFjYzFhNWQ1M2QgbGVnYWN5LXRydW5rCis0NDI5IGRjZmU3ZmQxYWNiYzU2NDRmZGRlNzIxN2Y1MjAyNDQxYTkyMTc3MjQgbGVnYWN5LXRydW5rCis0NDMwIGUyMzYzOTg3OWNkMDViOTZhNWYyNzNhZTA3ODdkMTYzZGQyZmJjZjQgbGVnYWN5LXRydW5rCis0NDMxIGFkMjVjNTIzNzZiNDViODA5ZmJkMmE2YzA0OGQzZGI2MDEyMGUyZTMgbGVnYWN5LXRydW5rCis0NDMyIDQyZjk1ZWE3NTg2NzM0N2U4MjQwMTY5ZWQ5ZDkwMjZiZjYyNzAxMzQgbGVnYWN5LXRydW5rCis0NDMyIDgzMjYxNWVjMDc2NDZlMzEwYzg1MzE2YjhiYTZiYzliMTdhZDM1NDcgbGVnYWN5LXRydW5rCis0NDM0IDIzNDdiMWZlODEyZGQ1Y2U2NTNjMTAxYTA3YjEyMDdjYmE3ZWFkMTQgbGVnYWN5LXRydW5rCis0NDM1IDRlNjMxMDMyZWFjZjJiOWM2Zjk3NmI2NThjODQxYjAzOTZmMGYzM2UgbGVnYWN5LXRydW5rCis0NDM2IDMzNTE1NDg1ZWFkMGQ2ZGUzM2YyODIzMjNhOGIxMjMzZDYzZmVhYTAgbGVnYWN5LXRydW5rCis0NDM3IDgwYmQ3YWY3MzIwMTkwN2QyNTcxMWYxZjY4MjhhMGVjNmQxYmQzNmIgbGVnYWN5LXRydW5rCis0NDM4IDQwNjExY2FjZDViZDdhMjZhYzFmMDE0ODBiNGM5MDA5ODVjMmEwYzIgbGVnYWN5LXRydW5rCis0NDM5IDE1YTFlYjExM2E0MzA4MzU2ODYwYzE5ZWRmODgyYTk2NjMyOTE0YzAgbGVnYWN5LXRydW5rCis0NDQwIDU4ZWVmNTFlMzA4NDljNmE3ODM0ZWQ5ZjY4ZDIzNWM0Mzk1ZGNhZDAgbGVnYWN5LXRydW5rCis0NDQxIDU1OGQ5Zjk1YTYwMjBhZDYzM2Y2ZmE4ZWRjNzE5M2YyYTYxZWZiNGYgbGVnYWN5LXRydW5rCis0NDQyIGRjNmVhYTFhOGZkZGZlZDVlNzM2YjAxOTdlNzU3ZGU0NDAyNTE4ZGIgbGVnYWN5LXRydW5rCis0NDQzIDc3ZDFjYWJmOTcxY2NjY2EyMDgyNjdhNTFiMzg0ZDg0OTM1MTEwOGYgbGVnYWN5LXRydW5rCis0NDQ0IDRlNjA1NmQ5ODBlMWExYzA3MzMwOTcyMWJkMTkxMWNiY2Q4NWY5NTMgbGVnYWN5LXRydW5rCis0NDQ1IDc0NDI2NTM3NDQ1MDgwMWYwZjFmYWUwMjlkODA5YTg4NmMxMDZiMzEgbGVnYWN5LXRydW5rCis0NDQ2IGY0OTUyN2VjZGIzYWQ1Y2Q2YTk3Yjc5ZWZlMDM1Yzg2NDAwYzkwNDMgbGVnYWN5LXRydW5rCis0NDQ3IGFmMjZkNGQ1YzFkNDNhMmJmMzY0YzQ5MmU1NWU2MzQzODYyNjhlMzUgbGVnYWN5LXRydW5rCis0NDQ4IGZiMTk4ZTEzMTZiOWJkYzJjODk3OGY2M2VlNjViZWJiYjlmZjI0OTEgbGVnYWN5LXRydW5rCis0NDQ5IDFkYWI5OWI4NmZhOGMzZjZhN2M0NDAwNGQyNjRlZjFlMzYxMzdhZDUgbGVnYWN5LXRydW5rCis0NDUwIGY5MDBjMDk5OTVkZmM0MmYyNTY2ODZjMmViZjgxMGMzZjkzMDEzNGEgbGVnYWN5LXRydW5rCis0NDUxIDYzZjg3NTg0OWJkODMxOTE0NDEyOWExMDhjOWQ3NjRiZGE3MDE3YjMgbGVnYWN5LXRydW5rCis0NDUyIGNmNGQ4ODYyZjE5YmY0NTc0MGY5ZGZjMDFkNWRmZjNmZGRmNzBjYzkgbGVnYWN5LXRydW5rCis0NDUzIGM1YTUxNGY4ZjNlM2RhYzVhYzdjMWFjY2I1ZjFlZDkxNzFkYjFhMjIgbGVnYWN5LXRydW5rCis0NDU0IGQ1ZjRkMDEzZGNjMTQ0M2UzY2NiNDQwOWU3OGZkOTViMzZkOTFhZGYgbGVnYWN5LXRydW5rCis0NDU1IGYwNWI1Y2Q3OWZiZWRiNzNhNDkyZWNiOTZjOWIxYTA0YjY4MmNjNDcgbGVnYWN5LXRydW5rCis0NDU2IGU4OTUyYjhkZmVmZmNkYWNmNDQ1MTgzZjllYWQwOWVhYzc3M2ZjNDcgbGVnYWN5LXRydW5rCis0NDU3IGE3MDg4MzgwMzMzOGEwMDU3MTg0ZTk0OGNmOWY1MjFkNTRmYWRkZWYgbGVnYWN5LXRydW5rCis0NDU4IDdmODcxOWEzNjY2MjAzYjc0MzdkYjZkZDc0YmIxNTg3OTM2MGI0NTMgbGVnYWN5LXRydW5rCis0NDU5IGVkNWQwYWQ1ZWEyZjFmZGU4MzZkNDQ0MzA0MTNmYTk1MTFhYTY4MzkgbGVnYWN5LXRydW5rCis0NDYwIDNhYTkxODRjZmY4YjZjOWJlYTA3YTlhNjA4MDNhMTMyOWUzNTU5OGYgbGVnYWN5LXRydW5rCis0NDYxIDdjNTNlNjFiYzRiYTU3OGUwNGE2ODE4ODFiNTFiODMyZDAwODBmNDggbGVnYWN5LXRydW5rCis0NDYyIDgxMWM0ZTQ2MjJhYWJmNTZiY2EyODdjMjQxN2Y2NTUzZjk4M2VhNTUgbGVnYWN5LXRydW5rCis0NDYzIDM5MmRiMTg4MTE5MDhjN2FjNzIxODVhMThhNjkxMWExNDUxMjFlMjEgbGVnYWN5LXRydW5rCis0NDY0IGY2NWVjM2RjYzU2MzFmZDU1YmE4YmRjYTMxZThjZjViZjBjZmZiNmEgbGVnYWN5LXRydW5rCis0NDY1IGYyNzgwMDk2NWZmN2NlZGIwN2Q2ZGJhOTJhOWVhZDRkNjI1YjJkZjQgbGVnYWN5LXRydW5rCis0NDY2IDBiYWU2YWI5YzllMGU3NjVlODg5MDI0ODQyNmUyOWM2ZWVmNDFkZTUgbGVnYWN5LXRydW5rCis0NDY3IGRjOWI2MzE2YjliMzU0ZjIxZjBhMzNjMjg4ODRjZWVjYWE0ZWQ3NzYgbGVnYWN5LXRydW5rCis0NDY4IDY5ZDQ4Y2JkYzJkOWEzOTM3NDI3NjY2YjE0NjdiNjJkNzkyN2FjYWMgbGVnYWN5LXRydW5rCis0NDY5IGVjMDVkOTAyMWJjY2Q4MjMwMTUzOGMwMGY2MjUyNDQ4MWFhZmMwZDEgbGVnYWN5LXRydW5rCis0NDY5IDk4OTU0NzVkMThjN2I1ZjMyYWRhZjc4ZjcxODg2YWUwNDFlNGQxMGMgbGVnYWN5LXRydW5rCis0NDcxIGE0YTg1NDUwZWJhZmUzMjRjZDM0ZmVmMjc1YmRkODY0MGE5NmI2ZjAgbGVnYWN5LXRydW5rCis0NDcyIDVhMDc3NWNlN2IzMTFlYjk2YTc2MGRlMmE4ZjdiZTljMGJjMDE4ZDAgbGVnYWN5LXRydW5rCis0NDczIDllMzQ2OWMwZWQ3NWNjMjRhMTVkZjNiNmRjZDdhNThlNmVjZTUyYTggbGVnYWN5LXRydW5rCis0NDc0IDdiZGEwZjJjMTcwY2RlYTI5NjZlNTdkZDlkZGVjMzAxNzlkNGZmNTggbGVnYWN5LXRydW5rCis0NDc1IGVlMTJlZGZjMjA5NTk5YmExYzM2Y2I0ZmZkOWE1ZmVlMTViNDFkMDkgbGVnYWN5LXRydW5rCis0NDc2IGVlZTNkNzE1ZjBjZmJmMWVhMmY0YzQyOTdmNzJiYmQzNzM3Y2NiMGMgbGVnYWN5LXRydW5rCis0NDc3IDNkNDMxYTUyMTEzMmYyM2EwOGJkNmRjMzU0MjIxNWViMDIxZjk3M2UgbGVnYWN5LXRydW5rCis0NDc4IDcyYjJhYjU2ZTQwMzUyZTNlZGI2NzJlZDQxYzVhZDYwMDMwNDdkZmIgbGVnYWN5LXRydW5rCis0NDc5IGZhN2JjNTI4MzE0YmM0NjFkYWE0Mjk1NWNkZDZhMzg1OTFjOWEzZDMgbGVnYWN5LXRydW5rCis0NDgwIDk3ZDYxNGIyNGMwOGNiNTQ2MzYxY2UxZmM3NTI1MWU4ZjgyOGIxZTcgbGVnYWN5LXRydW5rCis0NDgxIDVjNzRjM2FlZGE3NGFmNmFjNzIzMjAyODBiYjllYmYzYTkzZmIzZTUgbGVnYWN5LXRydW5rCis0NDgyIGQ0YTA2ZTgwNTZiODdmOWEzMTYzYjYxMjJkYzQ1MzUxNTY5NDkwYTUgbGVnYWN5LXRydW5rCis0NDgzIDJhM2M4YmViZjE1NjhhZjI4OTU5Mjc1MGE2OWZiYjY3ZTkyNGU2YWIgbGVnYWN5LXRydW5rCis0NDg0IDY3MWNmMWY4YjBjMzNiYjcxODM5MGVmMzgzZWM2NzU2Y2QyMTBhZjUgbGVnYWN5LXRydW5rCis0NDg1IDE3MzlmMDBmZmM4NjMxZTMwYTY3ZjhhNjUzNjkxYzhiYTMzZWVjMDUgbGVnYWN5LXRydW5rCis0NDg2IDYwOWJmYjhhZTdmNTRhZWU3NTcwMzE4MTY5MTQzNzNhMjMzYTViY2MgbGVnYWN5LXRydW5rCis0NDg3IGU0M2ExOTQyZTU4ODA2YTEyNGY3MDQxZTc4YmUwMWNiYjFiNzJiM2YgbGVnYWN5LXRydW5rCis0NDg4IGYyMzZhZGMyOGU3NzcwOTIyZTBjNjcxZDBiZmZhYzIyY2U5NzA1NzggbGVnYWN5LXRydW5rCis0NDg5IGNlNjk3NDJmMmU3Nzc5NWQxNzQyZWRhYmE3NTgyYTA1MmU5NTgyNjAgbGVnYWN5LXRydW5rCis0NDkwIDgzZmNiOWRiNGNhOGVjNGU5Zjc0YjQ4ZTI3NDBlMzNiZGRhNzE4NTYgbGVnYWN5LXRydW5rCis0NDkxIDM3MGY4Y2JkN2MzMjNlODg1YTMzMDI0ZWE3ZjY2MjU1M2ExY2M4ODYgbGVnYWN5LXRydW5rCis0NDkyIDU5ODNkMmRiNTkwNDU3YWIwNmRiNmFiZDZmNzQ0ODVlZWZiZDgzOGYgbGVnYWN5LXRydW5rCis0NDkzIDA3MDE3NjkwOTBmNDliZjFhMzE0YjNkNWM1MGViYTkwMzMzODNkYTUgbGVnYWN5LXRydW5rCis0NDk0IDNkODIyZTMyYzMyOTcwNDQwZTU3Nzk3NGFkMzI1ZDYwYzZjNjlkODEgbGVnYWN5LXRydW5rCis0NDk1IGUyOGUxMGU1ZGViMmMzMTMyNTEwZjJlNmQ2M2VlYmYyN2ZlMjIzYmMgbGVnYWN5LXRydW5rCis0NDk2IGVhNjk2ZjI0ODdmYzg2Mjg1YjhjM2UxMTFlMTFlNjZkNjg4MDdiZGEgbGVnYWN5LXRydW5rCis0NDk3IDRlYmVlOTA0OTI0ZTZhYTc3OGU5ZTQxMGE4YmMyNDk3MjA4Zjk5NmEgbGVnYWN5LXRydW5rCis0NDk4IDI4MWU0MDY1MmUyMzQ1Mzg0NTUwMDcyODBkNDdjMjY5OTdkZTY4YTIgbGVnYWN5LXRydW5rCis0NDk5IDYyYmJiZmU2YmJmNjgyODY4ODY4NDNhNzZlMzczY2UyYjZmYzI4MjggbGVnYWN5LXRydW5rCis0NTAwIDFjZTNkYmVlYjg5MDkzODBlM2IxYjc4YzhlMjkxOTgzMzRmYjgzMzIgbGVnYWN5LXRydW5rCis0NTAxIGYxOGMxOTE1YzcyMmQxNzUxOThhMzZiNDc5Yzk2YzNkMzlkYjRhMjYgbGVnYWN5LXRydW5rCis0NTAyIGM4NWFiY2M3NTJiMTg0NjQzMDY5MGZjZjdjYTFlY2M5OTQ5MjhiMmMgbGVnYWN5LXRydW5rCis0NTAzIDA3Y2YzYjNiYWYxNmZjMzM3MGFjOTU4ZWI2Y2M5OTI3MjU1MWNkZmIgbGVnYWN5LXRydW5rCis0NTA0IDE5MzYzZjg1NzBhMmZjZmZkMmRhMjYwYTQ1ZDRhMjA3NTg0MDgyYmUgbGVnYWN5LXRydW5rCis0NTA1IDIzZGZjYThhYTczYjA0MDU2ZGU3NTBkZjg0YmQzZDM3Y2RmZmM5OTkgbGVnYWN5LXRydW5rCis0NTA2IGQ3ZTkxNDM3ZjBhMjdlMjc0N2NlMDJhYjFiYTUwOGY0ZTVkOGVjM2MgbGVnYWN5LXRydW5rCis0NTA3IGRlNDlkNDkwNDRkNzUzZGYxMTMwNDNiNGI3OTM2MjUwM2Y3OGRjNDkgbGVnYWN5LXRydW5rCis0NTA4IDAzMTliMTIzMjFkN2RkYmYyMGEwZGZkNmZlNWEyOTAzMzk2ZDZhZGEgbGVnYWN5LXRydW5rCis0NTA5IGNmMzFlYWI2YWI1YWUyZTAxZjRjNjZiY2M5ZDVmZTJjYWUwYzBhMTQgbGVnYWN5LXRydW5rCis0NTEwIGFmZjVkN2QwNjczNWM4ZmEwYWY5NWRkYWE4YTI2NzFhY2Q4ZGU1MGIgbGVnYWN5LXRydW5rCis0NTExIDc5YzE3MWY1ODFmY2RlZTMwOTkzZmEzZDJjY2UyNDkxMDI1YjUxYmUgbGVnYWN5LXRydW5rCis0NTEyIDUwODAzNmRiYmEzYjRmMmY2ZjEyODM0ZGMwNjAwYTA0ODkxZDY3MjIgbGVnYWN5LXRydW5rCis0NTEzIDg2NmM4MTA2OGRiZGEyNzFlZTIyYjhjMDg1YzMwYzI0YTcxOGNiMDUgbGVnYWN5LXRydW5rCis0NTE0IDE0Njg5MDY1M2E1N2VhMTNiMjhmZjQ2ZDQ2ZTkyZmQ0YzYzOGVhYjIgbGVnYWN5LXRydW5rCis0NTE1IDE3MmJhMDRhNTE5MTZjYjc1MDQxMzU0MGUwM2Y2ZjQyODFhZjQxZDUgbGVnYWN5LXRydW5rCis0NTE2IGQwZDBhNjliNWNhMzRiNzVlYzc3ZGJmYzg5YTVhZmZmZjYyMDQzMWEgbGVnYWN5LXRydW5rCis0NTE3IDVlZDA2NTk0MzUyNjIxNTQ3ZjUzNjgxNmM3NDkwNTgwNzJmZjg2NTYgbGVnYWN5LXRydW5rCis0NTE4IDI4MGYzMWU2YzY1M2JlNDBmYzNkNTVkZWZhZjFjZGQ4Y2M5ZmVlZTEgbGVnYWN5LXRydW5rCis0NTE5IDI2Y2Q0ZDZjMmQxMmJlM2ViNmVjN2FkMzM1MmRmODJmYjFlNTdhMmYgbGVnYWN5LXRydW5rCis0NTIwIDAwMGFlNjQyZjliODg5YTFhZGY5ODI0OTRmMDcyMjhkZTk0NzQ2Y2QgbGVnYWN5LXRydW5rCis0NTIxIDFiOTk0NTFmYTE0MzZjYWQ3ODQyZmVjNWM1OWFhMmMwNGQ2MmFiMDggbGVnYWN5LXRydW5rCis0NTIyIDUyMjczMjRkNjRlNDI5ODdjYjg2Y2Y4Yjk3ZmE0OTZkNDRhZDIxZjMgbGVnYWN5LXRydW5rCis0NTIzIDNhYTdhNzc4NDQ1NTlhYzQ3NGI1ZjYyOWU3NTlmMTZhOGVkZmM3NDkgbGVnYWN5LXRydW5rCis0NTI0IGJlNWFiOGU4OWM0OTg2ZTgyMjk4YWNhNGJjNjUzYmU4Mzg5MmJkNDkgbGVnYWN5LXRydW5rCis0NTI1IDA0OGU5MWE1OWM3NWU4Y2U2MGEzNTMyMWZhZDBjYWM2MDcyYWIzZjAgbGVnYWN5LXRydW5rCis0NTI2IGNmNjVhMTI0ZmE0Yjc2OWM2OTIxYjZhOWY2NWMyOTM0YjBmYTdhYzIgbGVnYWN5LXRydW5rCis0NTI3IDY4YTM4Y2ZmY2Y1ODNjMjkxOGE1Mzg4OTA1YzE5YmRlYmExOTEyODIgbGVnYWN5LXRydW5rCis0NTI4IGEzNmNhYzc5YzVhZjdjMWMxOTI1YTQxYzUyZWMyOTE3ZWI5MWJkMjYgbGVnYWN5LXRydW5rCis0NTI5IDRjMzQ3ZTRkMTNmMWYxMTY1YzgwZGQ5YmE0MThlZmZkYWYxZDgwNTAgbGVnYWN5LXRydW5rCis0NTMwIGFkYzAyOGI5NzdiZGY2YmI3ZjVhYzFjZGU2MDJlNzg2ZmE4ZWJmNTcgbGVnYWN5LXRydW5rCis0NTMxIDM4NDgwOTRmMjU5Y2E3YmFjNjk0NDZiZTdmMjg3OTE5ZDdlYTM0MTkgbGVnYWN5LXRydW5rCis0NTMyIGRmNmZlODI5NmJjMzFkNTNjMzQ5NDI2NWU3NWFhZTNmZGJhNzAwY2UgbGVnYWN5LXRydW5rCis0NTMzIDViYmYwYTljOWE0MjhhYzc4NjRkMzAwMDk5NjNjNjE0ZTBiZTI3ZjYgbGVnYWN5LXRydW5rCis0NTM0IGMyMWNjN2IzY2UyODMzNzNjZjdkMmU3MTM2NTg5NTcwM2RiM2M3MWMgbGVnYWN5LXRydW5rCis0NTM1IGFmZWNkZWM5OTZmZjUwMDMzNjI1YjVmNWNjNmI3ZmM3MmY5NWE0OTQgbGVnYWN5LXRydW5rCis0NTM2IDRhZmE3ZWI0NzM0YmNmYWY2NTJmZGJmZGM4NzdiMjg0ZmJmNzNkYmMgbGVnYWN5LXRydW5rCis0NTM3IGYyZDI2N2VkYmZkNjg3NjcwOTM5MTVmYTEzN2RkZTcwZGUxMmVhODMgbGVnYWN5LXRydW5rCis0NTM4IGFiYmYyYTRiNDg4YjM3MWEyZTY0NTk5NWFhM2NlMTYxZTQ3NTc0N2MgbGVnYWN5LXRydW5rCis0NTM5IDg5MjFhMjg4MWZjN2YyNjQ2OGNkODYyNjI1MGJhNGFmMDQzNGVkZDYgbGVnYWN5LXRydW5rCis0NTQwIDI2MDRkMTFjOGI0MDQ1OWMwYWNiMjA1ZmU3NWFiMmJkNjA5OWM3MzEgbGVnYWN5LXRydW5rCis0NTQxIDY1MTQ2YjUyZjE2YjkzNGRkZDBkNDk1YWNhMmQ3YjcxYzJjMDljMmYgbGVnYWN5LXRydW5rCis0NTQyIDE5NDBlMWUwY2VkZjVkNTVlNzNjMGZkZTBmNTM2YWRjMjhjNzgwMzMgbGVnYWN5LXRydW5rCis0NTQzIDUzYWE1MTQzM2Y3ZmQ1ZDUzYzI3MGJiY2QwMTM0YjQ0NzEyNzBiODcgbGVnYWN5LXRydW5rCis0NTQ0IGY3OGIzODdiNTRlMGEzOTk1YTBkMjc1ZDliZTQ2YTgyZGY5MTI3MGYgbGVnYWN5LXRydW5rCis0NTQ1IGI0ZDk4MmM2NDhiYjNlNzYwMmE5NTlmNDE1MzA1ODcxNWE0OGExODIgbGVnYWN5LXRydW5rCis0NTQ2IGIwM2I0M2JlZTFhYjNlY2ZmNmE1MjNjYWE1MDE2NmMwOTE4Y2Q3OGUgbGVnYWN5LXRydW5rCis0NTQ3IGU4Y2FmYjJiNzQzYTdlNGMwM2Q4NjlhMzQyYTBjZjZjZWUxMjkxODggbGVnYWN5LXRydW5rCis0NTQ4IGQzNTZjNDczZGI5OTNmZTc0ZmJmZmJiZDczODViNmJmOTMwM2E3YzcgbGVnYWN5LXRydW5rCis0NTQ5IDBkN2U0YWE1OTVmN2FhNWI0ZDliODBlNWRhYTAwYjc1MDc1NGMwZGUgbGVnYWN5LXRydW5rCis0NTUwIGQ1YzkzNWI5YTdiNTBjZTU0YThmZDJhNWEzNTYyYzA0ZmIyZGMzNDAgbGVnYWN5LXRydW5rCis0NTUxIGU0NTg4NDA0ZmRmZjI1NDAwYzA1ODJhNTUzMDZiOTAxNjM0MzllNDkgbGVnYWN5LXRydW5rCis0NTUyIGI3YmUwMzgyZjllZTY5ZDE2YTFiOGNmZjcyZDlmZDhlZDg1NTkzNWYgbGVnYWN5LXRydW5rCis0NTUzIGJhMmUyMWE1NGFlMzk5MWE0YmVhM2I4ZWJhY2M4ZjM0Njg0ZGRjZmQgbGVnYWN5LXRydW5rCis0NTU0IDQ1NzRlZDY1N2NjOWY5YTU1Y2FlNDQ1NDE1ZTZhNzhkOTg3NGE4OWEgbGVnYWN5LXRydW5rCis0NTU1IGZkY2NjMzIyMmQwYWU3OTQxY2M0NWFhNmQ5MzMwODkwOWZiYzM0ODcgbGVnYWN5LXRydW5rCis0NTU2IDMwODIxYmMyZGNiNzQ0ZmIwYWYxNzVkN2JkMjhkMjk1ZGFiNjI1ZWEgbGVnYWN5LXRydW5rCis0NTU3IGJiZmFjM2UyNTcwZDlhYjIyMGRmZjdmNjFkOTEyMjJiYjk1YTdhZWEgbGVnYWN5LXRydW5rCis0NTU4IDc0OTNjNjgwNWRjNmU1Y2I5MzQ3YmViNjY4ZWIxMTFlMmFjMTExY2UgbGVnYWN5LXRydW5rCis0NTU5IGVhN2IyYmYwYjUyMTYxZjk2YTVhOTdjMmNhOGJlNmQzMDBkYzUxZmQgbGVnYWN5LXRydW5rCis0NTYwIDJlYmIyMTI4NGYzNDUxYTc2OWJmNTc4ZjZiZmU0NGNkZThlNDk2YmQgbGVnYWN5LXRydW5rCis0NTYxIDAxODMwZGM4ZDZlNWQzNmJmZDAxZjIyZjU2NzEyZWYyMjM5ZWYxZDAgbGVnYWN5LXRydW5rCis0NTYyIGFmNDFmNGEyMTY4MmVhODIxMzYyN2FkZDQ1MzIxMmU2MGMzZTdjZjIgbGVnYWN5LXRydW5rCis0NTYzIDA3MDgwYTI5NjA3MDdiYmI5ZjAxZWY2NjMwYTlmZWMwNDk1YmMyMzMgbGVnYWN5LXRydW5rCis0NTY0IDZjNDkwNWZmZmYwMWU5Yjg5MjBlNDgyOWE5MjhiNjVmZmNkNzkxOTAgbGVnYWN5LXRydW5rCis0NTY1IDMwY2JlMDI0ZGY0MDllYzBkN2UzMmE0Mzc0NmQ3ODM2NGQ1NDIzZmEgbGVnYWN5LXRydW5rCis0NTY2IDI2NjllZjE0YzIwNTQxOTkwZDZkYmNlZTk5ZTFiYzJmNDM2NzZmZGIgbGVnYWN5LXRydW5rCis0NTY3IDc2Yzg2MGExOGQ4MjM0M2ZiNGUwNzZkYWRjZTRmYmJjNTA4MGU3MzggbGVnYWN5LXRydW5rCis0NTY4IDc5NDdjMGQxNmNhMDQxZTY5MTRlYzg5MjE4NTBjMzhiNDEyNTI1OWQgbGVnYWN5LXRydW5rCis0NTY5IDdlYTM2OWQwNWMyZWUxOTVlMTIyZDRkN2NmZDBkODUxMjMwODg0MDAgbGVnYWN5LXRydW5rCis0NTcwIGQ3M2VlZDM1MzAwMTBjNGZkNGM4MDJhMDkwOTNhZTBlZjRkM2Y2MTYgbGVnYWN5LXRydW5rCis0NTcxIDVkZjY5ZjI5NGNjYzZmNmQ0NjYxZTg0ZTM5ZTA2MTMyYjA3MGE3NTQgbGVnYWN5LXRydW5rCis0NTcyIGFlZGE4NjRjMTFjNDQ2MzkyNWVkZDIwYTE4NmFkMWQ0OGU3ZWJkYjMgbGVnYWN5LXRydW5rCis0NTczIDFkYWUwZDMwNjJkMjYzYmI2Y2M2ODUxZTcyODlhMDVjNzY2YTJlNzUgbGVnYWN5LXRydW5rCis0NTc0IDg0YjYxZmU0NDU3MzA0ODQwMGNkYjFlNzExZjA2ZGFjZGY0YjMyYWEgbGVnYWN5LXRydW5rCis0NTc1IDg2ZDllOTE0MDVjODU1Mzg5N2M4ODcwYzQwZWNlZjJiOGNhZjY1ZDAgbGVnYWN5LXRydW5rCis0NTc2IGJhM2ZkOTZmMDU1ZWY5MTliNGQ4MDMyNmIxNjc1YmMzNTI4Mzg2NjcgbGVnYWN5LXRydW5rCis0NTc3IGZkNWFiN2U4MjhmY2NjMDE0MTU5NjgyNGY4YTc1Y2FhYTI2YTdhYTUgbGVnYWN5LXRydW5rCis0NTc4IDM2ODQ3YjhiNTc1ZGY2NTFmNThhZWQ1ODEzNjk2ZWI3NmRmNjUyNGYgbGVnYWN5LXRydW5rCis0NTc5IGJkMDYxZGMzMDg0MmU3NTA0ZWRlNGQ3YzM3ZjNlOGUxNzk3OTA1ZDUgbGVnYWN5LXRydW5rCis0NTgwIGFmMzZiYWUzNDNmY2Y4ZGFlZjQ4YTk4NTQxZTM3YzM5NmYyNDA4ZTkgbGVnYWN5LXRydW5rCis0NTgxIDY5NTQwMTY5MmM0NmZiNjJjNGU4YzhkYmQ3Y2Y5MTFjMGRjZjU1ZGYgbGVnYWN5LXRydW5rCis0NTgyIDkyZGE4OTAxNTE3ZTNmMTVjOThjOTE4YjJkZjI0MGEwOTFhNGNlYTQgbGVnYWN5LXRydW5rCis0NTgzIDA1MzYwY2Q2MTZhZTM4ODY3NTEwNTQ1ZTY5NGRkYWIyNDllNmM3NGIgbGVnYWN5LXRydW5rCis0NTg0IGNhMjdjMmZlMGI4ZDRjNmI1NmU0ZjA2YjYzMWE1YTZkOGM0NzI2M2IgbGVnYWN5LXRydW5rCis0NTg1IGZlOTIyZmVkNmIzMWQ4Yzg0ZmY2MGFlOGViNjQ1MzI1MzAxZWM1MjkgbGVnYWN5LXRydW5rCis0NTg2IDRkZGY1NTQ0NTdhZDVkMWIyMDFjYzljNmFmMzIzMTFkNjFiZjk0MmMgbGVnYWN5LXRydW5rCis0NTg3IGMxNmQ2OTNiZmU3M2Y1MmY0M2Y4MDc4MGE4ZjVhMWY1MTI2ZTU5MGEgbGVnYWN5LXRydW5rCis0NTg4IDlkNjFjNTc0OWJmODI3ODFhN2EwNjAzOTQ2OWRjODEzYWUyODQ5NzMgbGVnYWN5LXRydW5rCis0NTg5IDRmOTBiNDc0YmVlYzM0MGYwNTlmMDU5NjhhZDBhYTk5N2ViNjZjYzMgbGVnYWN5LXRydW5rCis0NTkwIGM1N2I1YzUwYTJkMjk1NGY2YTBjMWNkOGExYjUxZjhjYjAwMjNiZWYgbGVnYWN5LXRydW5rCis0NTkxIGM5MDg1ZjFlOTc3ZjMzODAzNDBiYmZiYzE5MWMxYjJmMTU2MzE5ZWUgbGVnYWN5LXRydW5rCis0NTkyIDIzZjA0MDMxNzgyODBhZTA3Y2ZiMzA4NGZhZmQ4Y2M1N2NlYWM2NTIgbGVnYWN5LXRydW5rCis0NTkzIDk0ZTJjYTg2NTkwYTU2ZDM4NzRkYzI0YmU1ZGViNzNmOTUzYjc4MWYgbGVnYWN5LXRydW5rCis0NTk0IDE3M2RkMDA4NzlhYjYwMDBjODJkYzY0OThmYzhmNzJmZGY3YThkNGEgbGVnYWN5LXRydW5rCis0NTk1IDg0OTIzZDkyYjUzZTdhYzFhNjMyMmEzMjgwZTM0MWFlN2QzNjEyYmMgbGVnYWN5LXRydW5rCis0NTk1IDE2ZWI0YzUxZWU5NzE2OTA0NjM0MDk5OGU4NTBhNjNjNjUyMjViMGEgbGVnYWN5LXRydW5rCis0NTk3IDdhZTg0N2IxYjI2OTIyOGI5Y2MzODRlMGJhZmQwNGEzNjc5M2JlMWIgbGVnYWN5LXRydW5rCis0NTk4IDBlNjBjZDIwN2FkYmIyNGJkNWIzYzJiODQ0YjdjMDg2NzNlMDQ0YTUgbGVnYWN5LXRydW5rCis0NTk5IGU5ZTkzZTA3MzU0YjhiYzBiMzk0MDE0NjJhNzBhNmI5YjlkYmEwZjkgbGVnYWN5LXRydW5rCis0NjAwIDlhZmRiZjk0NGMyYTAzYTY0OWE1N2ZlMGEzMjNjZDEyMjUxYzU2MGQgbGVnYWN5LXRydW5rCis0NjAxIDgzOGVmOTc2ODgyMTAzMDE2Nzg1Yjk3ZDQwZWI5MmNkOWQzMDFmOWMgbGVnYWN5LXRydW5rCis0NjAyIGY5OWEyMzk5ODc3MGJhYjdlMmYyNTY1NmY3ZDAwNGE2NWI5MzhiNTIgbGVnYWN5LXRydW5rCis0NjAzIDYwNjBkN2ZiMDdlMzQyNDVlOTczMGJmZmQ4NjIxMDdlODg0ZjRhMzQgbGVnYWN5LXRydW5rCis0NjA0IDQ0ODQzNWJmZWFkYzBkNDZjZjU1YzY4YzkyZjUwM2Y2ZDljZjY4MTEgbGVnYWN5LXRydW5rCis0NjA1IDVmZDg1MjRkZDAzYTIxMGE5Mzc4YjZiMzJhY2UxNzNiOGYwMDFjODcgbGVnYWN5LXRydW5rCis0NjA2IDFhNTIzNTFhMDBiMjZjZDA1OWE2YmM5ZTJkOTUxOGU3NjlhMWYxZGEgbGVnYWN5LXRydW5rCis0NjA3IGU1NGI4NjU0ZjkzODRmMTIyN2JhMjE5N2ZlYjVmZTE2MTFhZGRlYzggbGVnYWN5LXRydW5rCis0NjA4IDA3MjhmZWIxZDAzMWI0ODg0MmI3MTk4MzcwYWYyYzc4Njg4YWY1NDIgbGVnYWN5LXRydW5rCis0NjA5IDg0OTcxZDAxNTk2NWU4ZThmMmY0MWY0NDU5M2YyMzJmNjhkNmE1NDcgbGVnYWN5LXRydW5rCis0NjEwIGNmYmFiNzlhNzk5ZjQ2NTM1NTIyNzFkYTUwMjBiZTIyMjA1MTYzODcgbGVnYWN5LXRydW5rCis0NjExIDFlMDgzOGJiOGYyMjA4ZTI5MmIzMDAzNDE2MjNlZjgzMmJjMjA5ZjggbGVnYWN5LXRydW5rCis0NjEyIDI5NzIwYzVkOWU3ZWM0MjIxZmM4N2YxYjIyMmY4MDUzMTliZmQ3MDQgbGVnYWN5LXRydW5rCis0NjEzIGE2MTlhNjFhYWQxZWJiOGM4ODAyNDFmYzJjZWQwZjFlMDYyYzAyMmQgbGVnYWN5LXRydW5rCis0NjE0IDg5OWI0ZTNkZmQ0Y2ZmOTljYTQwZWQ3MmMwNzUzODQ1MDI0MTZlMWYgbGVnYWN5LXRydW5rCis0NjE1IGYwNjIyMmUwN2NhNzU1Mzc5NTgzNmY3ZTk0NDQ3MTg1YTY5MTU4N2EgbGVnYWN5LXRydW5rCis0NjE2IGM5YWVhMzRhZTRiNjk5NzE0YWU4MTNlNDc1ZjQ4NzRlMmMxZGJiYzIgbGVnYWN5LXRydW5rCis0NjE3IGVlMGIzY2IzN2FmODhjYzRjOTM2NzBhMTZkMTlhOGUzYzM4Yjk4MmEgbGVnYWN5LXRydW5rCis0NjE4IDQ1OWJmN2QwNGUwNWJlYjgyOWUyZDRkMDI1YjdkYWY4M2M5NmIwM2MgbGVnYWN5LXRydW5rCis0NjE5IGY0OWI2MzcyNDkyZjI4YmI3M2I0MTUzNzZkN2UzYjRkMjFiODQwMGQgbGVnYWN5LXRydW5rCis0NjIwIDdhNmI1N2ZlYmFjNDZjMTA2MjFjZGNkZDczMzkyMThkNGM5YmJiZmUgbGVnYWN5LXRydW5rCis0NjIxIGQ5MGM5MTRjNTc3ZDIwYjQyMWYxMGU3MmE5MDczOTVlNThiMzk2ZGUgbGVnYWN5LXRydW5rCis0NjIyIDlhOWYzZjVkNmY4NjAzMjIxMmYwMDczYTUyOTkwZDlmMWUxODA0MGMgbGVnYWN5LXRydW5rCis0NjIzIDkyY2Q4NTQ3MGE3NjlkZjU3N2Q4MGNhNjI0ZTZhMDc1OGRlZDEwNTkgbGVnYWN5LXRydW5rCis0NjIzIGI0NWM2ODg3NTZkMDRmYjg0ZDRhMGQ1MThmYzNkN2UzY2IyNWZhOGQgbGVnYWN5LXRydW5rCis0NjI1IDdmZjZkOTk5ZjA1OWEwOGM4YzgyYjgzYzA1MmQ1MTRmNmNiZTY1MTggbGVnYWN5LXRydW5rCis0NjI2IDhhZGNiODA4ZDhkZGQ4NDI5NTU0ODFmZGMyN2ZmNjIyMWVlZjJkNjEgbGVnYWN5LXRydW5rCis0NjI3IDZmMzVhMWFkMWFjYzgzMzU5MGY5ODI1NzdjNTBlYmQ2MGJhZTlkYjYgbGVnYWN5LXRydW5rCis0NjI4IDVlZWQ4MzIxNmU2YzU1Yjg1NjhhOTlmNTY0N2NhYzkwZTFkOTEyMTAgbGVnYWN5LXRydW5rCis0NjI5IDA0NDU3MjVmZTVkZTRjYWVhYmY0OTM4ZDU0ZmZjMDZmMDEwZDY3OGMgbGVnYWN5LXRydW5rCis0NjMwIDFlOWU3NDk0NGJiNTFmNDhmODYyOTE5YmE2ODkwYzEyNzFiY2Q2NjAgbGVnYWN5LXRydW5rCis0NjMxIDlmNTAwYTM0YzM1NTQxODExYzU2NGE4OTJlZDI2Zjc4NmRkZjQ3Y2YgbGVnYWN5LXRydW5rCis0NjMyIDY1ZDg3ZjA2ZjA4ZmMzMGI4M2FjMGEzNzEwNGQ2NmIwYzQwNDY5NDggbGVnYWN5LXRydW5rCis0NjMzIDhkYTAzZGVjZWY1OTNkZGUwZTQ0YWIxMjdhNmMzYTRjY2RjMGI5NDggbGVnYWN5LXRydW5rCis0NjM0IDliNDUxYzg0YTdiZjkzMDExMDEyNjI4NTk0ZjJhN2I0NGE2ZjIwNzkgbGVnYWN5LXRydW5rCis0NjM1IDAwNDgwMjRiN2VmODRjZDljMDBlNTc4ZDk3NjIwYzE1MTU5ZWMyNWQgbGVnYWN5LXRydW5rCis0NjM2IGRmYWJiMTNiY2U3MGZjMTgxYjI2YzAyYjQxOWNmYTA1NTA5OTE4ODIgbGVnYWN5LXRydW5rCis0NjM3IDYyYmRkZWQ1ZjAwYTIzMTUxYzQ4Mzk2ZjIwNzFkNTIxNWI3YWM0YzUgbGVnYWN5LXRydW5rCis0NjM4IDg3ZjRkNmQyZTljODlhODRlOTkwMjE2Y2E2NTc1Yjg4MTVmOTI3M2UgbGVnYWN5LXRydW5rCis0NjM5IDljOGI0MzIzODA4YmMwZjk5MTMzZDliMjdlMmIxNDVlOTc5Y2QxMjMgbGVnYWN5LXRydW5rCis0NjQwIDk1Y2I1MmI4NWY3ODY3ZmI0N2M2ODc5OTQyNDViYzdjNWQ1YjlhNTIgbGVnYWN5LXRydW5rCis0NjQxIDk2OGUyNDg0ZDk0ZGEzODJkNDljNzMzYzAzYzRlMjk5M2QxMTc0NDUgbGVnYWN5LXRydW5rCis0NjQyIDY0NjFmZjBjNGJlZTZmMzA1NjJhMTU0ODMzODdjNWRlMTc2YzVmMTkgbGVnYWN5LXRydW5rCis0NjQzIGQ1OTU2ODM4MTQ0N2QwZTMyOTk1Zjc1YTczZDIwYTI4NTg4ZDgzNGIgbGVnYWN5LXRydW5rCis0NjQ0IGI0MGUxMGJkYTIzMTkxZDJkNzZiNzg4MzQ2ZDRkMTIyYTQ4NmIwNjIgbGVnYWN5LXRydW5rCis0NjQ1IGY0ODk1MWRhYmE0ZmZjM2U3NTYyNWYzNGE0ZGYzZTYzYWFmZWViZWEgbGVnYWN5LXRydW5rCis0NjQ2IGY3OGZiY2NhZjU4Y2M2NmQxYjgwNjYzNTE5MmI1MWViMjYwNzJlZTEgbGVnYWN5LXRydW5rCis0NjQ3IDFjMDEyZDgyYTk3NThjMjJiMzc0NTc5N2I3NGVmZGE5NmU4YjEzMjQgbGVnYWN5LXRydW5rCis0NjQ4IDhlNDc2Y2EzYTdhM2YyZmFmNmYxZjY1MTdkNmJiYjg4NzQwNjk2NDcgbGVnYWN5LXRydW5rCis0NjQ5IGNjYzI3OWZmOTM1ZDBmNTRhNmJjOTgxNWZlMTUxMmQ1MDUyNTJiZTcgbGVnYWN5LXRydW5rCis0NjUwIDVlNTY4YmFjZmJlOTliYTYyYTgyYTM4YWM1Mjc0MjViY2Y3ODJkZmMgbGVnYWN5LXRydW5rCis0NjUxIDkxYTQzZWExMWJhMzU5NGM5MDJjMWViZTY1NjRiMTAyNjEwYWU5OGMgbGVnYWN5LXRydW5rCis0NjUyIDI3NTU3ZTcwYThmMDI5YmNkNzkzYjcyYzZhYTA5N2QzMmUwODIzMjEgbGVnYWN5LXRydW5rCis0NjUzIGY0NjcxYjY4MWFiOThlNzYyMGZkOTcyOWM0MzYxODBlNzA5YzQ2MDggbGVnYWN5LXRydW5rCis0NjU0IDVhZTkyMmNmZTQwNDkzNDdiYjA3NDAzZDAwZTU2ZGJlYWJkZmQxOGUgbGVnYWN5LXRydW5rCis0NjU1IDhmMWRhZmZlNzk5YmNmMzRlMDdhZmJjOThkMTM3NzA4ODM0NmY0Y2IgbGVnYWN5LXRydW5rCis0NjU2IDk4OTRlNTU0NjhlYzYwZjc1YTJhZjAwNjMzZGY4MzQwMDM0OTQ1OGQgbGVnYWN5LXRydW5rCis0NjU3IGNkYjM3M2Y2NWJmMzgwZGJkMjk0NzJkNzg4MTRiMmUwMGUwMGNiNGUgbGVnYWN5LXRydW5rCis0NjU4IDAyZGQ2M2QzZmU5YjMxMzcwZWU1NzM2NjRiZTJhMjExOTVhNDQ0NWYgbGVnYWN5LXRydW5rCis0NjU5IDUyNzg4OWFlODQ1MDM5MDk3N2QzZTg5NTIxYjRjMmRjZWI5MTM0MTUgbGVnYWN5LXRydW5rCis0NjYwIDBlMzAyNzcxZWU1YTJiZmM3YmVlMTljMjg3ZmNmOWIzZjgzNjI1YmYgbGVnYWN5LXRydW5rCis0NjYxIDMzZWE5Y2M3ZDdiYWU3MjNjODdhMjcyMjZkODIzNDAzYzQ4NGE4OTEgbGVnYWN5LXRydW5rCis0NjYyIGM2OGEwMTEzYjc1YTI3ZmVhMzNiZDM2NDBjZmM1MjBmMWE1MmFkN2YgbGVnYWN5LXRydW5rCis0NjYzIDQwNTNkNGNiNTBlMGQ3MDE3NDZhNzU3NDlhNjdjYTA4YjdjZjAyODggbGVnYWN5LXRydW5rCis0NjY0IGU3MzRjNzIzNTcyN2U3NGI1NGFkNzliMzBjZmNlZjJkMzVjMjQxMGMgbGVnYWN5LXRydW5rCis0NjY1IGViM2U2MWRiMGRkYTljNWFmNDU1ODljYTIyMWUzODFlNmIxNWYzYzcgbGVnYWN5LXRydW5rCis0NjY2IDY0ZWI0ODdjYTQ2NWQ2YjZhMjg2MDVlOTk4Yzg3NTFjYWExNzcxZGYgbGVnYWN5LXRydW5rCis0NjY3IDkzOTc5MWYyMTlhNjNlZDg1NjFlYzZiYjc1NmM0ZTc3ZjRlOWFmNTkgbGVnYWN5LXRydW5rCis0NjY4IDI3MjIyOTM0OGZlMmI3N2ExNWM0ZTMxNzVhNzU2OTE0MWVlZDgxNWEgbGVnYWN5LXRydW5rCis0NjY5IGEzYmQ2MTYzMmYxNDVlZDk4OGExYzJhYjdkNTlhMGM1MDRjNzk3NWQgbGVnYWN5LXRydW5rCis0NjcwIGFiZWQzNjhkNjhlZjE4OTBjNjcyNWNkOTFlYjlmMWYyZDJlZWZmMTkgbGVnYWN5LXRydW5rCis0NjcxIDc2ZDQzYzAzMzg0ODEwYjUyNzEyYWJlZGM2YjU5ZWE3MWY5Y2QxOTcgbGVnYWN5LXRydW5rCis0NjcyIGNmZWFhNTA4MmJhODMxYjYyMWEwMzRiNzcyOTNiODRlYjdjMzIyOGYgbGVnYWN5LXRydW5rCis0NjczIDA2MTIxMzJlMDAxODU3ZWU0YThjNGVhMGY5MWYzNTZjNGMzMTZlYzUgbGVnYWN5LXRydW5rCis0Njc0IDliYzNhNWJhYTY4MGUzOGQ0MDVjY2M3MTk4ZThkNDgyZTZkMDU5MzYgbGVnYWN5LXRydW5rCis0Njc1IDc0YTBhNjEyMWFmNzFiNmFjNzM0OTY1YWRjYmRhNzA1YzhmOGExOGUgbGVnYWN5LXRydW5rCis0Njc2IGJiYjU2ZGMzYjUyNmI1NTJiNTNmNjllNzJjYjJkYzAzYzcwZmZiZDggbGVnYWN5LXRydW5rCis0Njc3IGFhMzM2NTgxNWMyMGQ3NWIyMDEzMjNlZTY0ZTIxMDczNGZmNWQ3YjQgbGVnYWN5LXRydW5rCis0Njc4IDMyNDM1ZDMzZjM0YTZmNDRjOGVjZmI1NDA4ZDRhMjM4ZDY4NjdlOWIgbGVnYWN5LXRydW5rCis0Njc5IDQ5NzE5N2YzNTczYzEwYjk0ZTNlMTA4YzZlOWNjZGZlMjUxODczZGUgbGVnYWN5LXRydW5rCis0NjgwIGMyZDE4YjU4MjMyZWRlZjE2NWIzMTUwZTYyMDM0MDk5NTkwMjYyYTMgbGVnYWN5LXRydW5rCis0NjgxIGU1M2QwMTllN2Q0NzYxMmQyZTY0NmZmNzgzZjU4OThiZDRmYjY0Y2UgbGVnYWN5LXRydW5rCis0NjgyIDk1ODhjMjM4ZTY2MDljMTMxMjQxMmI1YjIxM2RhZmE2M2ZjYTBiYTAgbGVnYWN5LXRydW5rCis0NjgzIDRiY2YxYjk2ZWZlYzRmMTE2YjMzMDk0MGYzNzEzYTJmYzk3NjI4ODIgbGVnYWN5LXRydW5rCis0Njg0IDkyZTZmNWQ4YmU4MmFiOTE0NDhiYzY3M2ZkNGU4ZmY0ZDc1NmM1OGQgbGVnYWN5LXRydW5rCis0Njg1IDFlOGIzNDdhMDU2Y2YzNjY2ZWZlNTMxNDZhZTM3MjgzZGM4NzI0YWYgbGVnYWN5LXRydW5rCis0Njg2IDhkNWUzNmIzN2E0MTMyMjlmYTkxZTExN2Q3OGExZjVlNDc4YTk3MjUgbGVnYWN5LXRydW5rCis0Njg3IDAxMDM3NTMyYzA4NjBhMWJjOTk0MTEzN2EyNGQ5ZDdjZmUzYmIyYjggbGVnYWN5LXRydW5rCis0Njg4IDdiNjU0MDQ5NmY1NTRiYjZlNTc0ZjFhMzJlNjUwMGZiNmVkYzBiMzMgbGVnYWN5LXRydW5rCis0Njg5IDAxZWQ0Y2QyMTU3NmNiYjQ1MGM4YjgxNmVmNzEwY2VhN2Q0NGZjYjYgbGVnYWN5LXRydW5rCis0NjkwIDFiNjYyNDk3NDI2YjUzYTEwZTJlODhmMDA4Mzg4NjljZGQ2NTNjZjMgbGVnYWN5LXRydW5rCis0NjkxIDBiMGIxOGQ2NTVkMmU5YzA1ZTRlNTdmZTJjZmY4ZDZhODFlMjFjNTYgbGVnYWN5LXRydW5rCis0NjkyIGI1ZGNiYTdiNzMyZDAzYjBkYmRjMDAwNTFjYjgwMWU3N2YxM2U3MDUgbGVnYWN5LXRydW5rCis0NjkzIDQ0MmJhZThmY2ZkYzY1MTRmMTlkMWFjZmY4YmE2MTExNWRmMmZiMDggbGVnYWN5LXRydW5rCis0Njk0IDk0Yjg0NTM1YzM0ZTExZDhlYTI1YmFiZGJjMGJjYmJlMTQ2MWM1ODcgbGVnYWN5LXRydW5rCis0Njk1IGZlZmFlMzdjMDUzY2ZkM2JjZWYzZDkzOWE4ZjNmZDc1NmI3OGE4YjggbGVnYWN5LXRydW5rCis0Njk2IGQzYjViZTBjODcyZjMzYjFlZTkxMDg2MzQ0YWQyYzcwYzYyMDIxYWIgbGVnYWN5LXRydW5rCis0Njk3IDI4M2E4ZWIyZTMxN2NiN2Q3YjExNWFjOGIwNGEyZmZlOWY2MzRiZWYgbGVnYWN5LXRydW5rCis0Njk4IDcyZTA1YzYxYzJmZTU5MzM3N2VhNzNjYjhlYjRiNWM4N2IyMDYyNTYgbGVnYWN5LXRydW5rCis0Njk5IDdmYTQ4YWI0YmUwZjRiYzNmNTEzYTUwODRjMTliNmZmM2EwMmY2MDAgbGVnYWN5LXRydW5rCis0NzAwIDFhYjM1YjZmNjM4YTI2NmI3MTc2Nzc1ZjQ0MDhjZDNlOWRiNmFiYzUgbGVnYWN5LXRydW5rCis0NzAxIDhhZDEzNjMyODdhYThiYzk4MzVkMmI0NTEyOTk1NjZmNDUyYjEzYzMgbGVnYWN5LXRydW5rCis0NzAyIDQzOGY1M2U3Y2ZkMTRlOTVlYTcyZDg5ZDBjN2JjNDlmNWE1OWMyMDggbGVnYWN5LXRydW5rCis0NzAzIGE3NmE3OWY4OTZjZjVmZTIxMTNiYjlmNjZhYzRkZDYwMjJkNTNkNzEgbGVnYWN5LXRydW5rCis0NzA0IDNiZWYxYWZmODcxYmMzNDkyMDcwODU5NzQ1MTVhMzU2ZDFkNTdjMDUgbGVnYWN5LXRydW5rCis0NzA1IGUwYTMyNDJkNWFlNzlkMTYyMGEyMjYyNDJhOGIzY2FhMTM5NGViOTMgbGVnYWN5LXRydW5rCis0NzA2IGU5ZDExZjliODJlMmI1ODFhOTZiNzMyNWUyM2NmZDA3N2EzODk0OTMgbGVnYWN5LXRydW5rCis0NzA3IGMyM2QwOTIyMTVkMmMzZTVmODAzMjIyMjI1ZGY3MWE2YzNhNzY2NzQgbGVnYWN5LXRydW5rCis0NzA4IDY3ZThlZjY5OGE0MmZmMjcyMGFmNzgxNTBlY2Q5N2QwYzMzNDhkMjAgbGVnYWN5LXRydW5rCis0NzA5IDM4MmVkZWYyZDZkNzBkMzdjMzQyODllOGI3NDExMzgyN2YyNmI4ZTggbGVnYWN5LXRydW5rCis0NzEwIGQwOTFiMjQ2YTNhN2E1YmIyYzE0MTVkZmEyMTNjZjE5ZmU2NGY2NWIgbGVnYWN5LXRydW5rCis0NzExIGVlNGM5NTRjZDVkZjUyZTljNDA3Mzk3ZDRkYmNkMWNhMTA0MjQ0MzUgbGVnYWN5LXRydW5rCis0NzEyIGIxYTZhODFhZjFjZmY0N2QzOWE1MDQ4YTE4Y2E5ODE1NThmNTcyNzQgbGVnYWN5LXRydW5rCis0NzEzIDgzZDA2NDA0ZjZlMTE0NDJjZDMxMGU2OWNhYmFmZTdhN2YyNjBhYmEgbGVnYWN5LXRydW5rCis0NzE0IGE4MWI2ZGI2ZDMzYzk0ZThkMDk0ODY5YTIxMTFiODcwODk4YjcyMDAgbGVnYWN5LXRydW5rCis0NzE1IDY0NWU5NjM0M2Y4OWZlZjhkYjk4ZjUzZDZhODhmMzc0ZmYwZDVjN2MgbGVnYWN5LXRydW5rCis0NzE2IDAzYmQ3OTQzMmYwNjljNjMyYWU1YWU4NDIxZjcyNGMxM2VmNzFkYTAgbGVnYWN5LXRydW5rCis0NzE3IDc4OTVhOTczMTNlNWY0Y2ZhZDI0YzVhNmJhNTZlODQ2NDUzOWUyMGUgbGVnYWN5LXRydW5rCis0NzE4IDg1YWEyZTRkMDEyM2M1M2M1ZTY4ZTgzNGE0NmZjNzBiODUxOTVhY2EgbGVnYWN5LXRydW5rCis0NzE5IDRiY2M5MjkxNmZhYmIyZjZjNTFlNGUxMTUxOGY2NjdlZGFmN2VjZjkgbGVnYWN5LXRydW5rCis0NzIwIDNhODNjM2NlZjRiMmI1Yzg0YTkzNjdmZTJmYjAwZDM2Yjk0MzFlYTUgbGVnYWN5LXRydW5rCis0NzIxIDc0MTFiNmEwNjkyMGNkNmQ0YmUyMTA2ZGFmMTRmYzIzODVkM2JjODAgbGVnYWN5LXRydW5rCis0NzIyIGFjNmY2OWIxZTk5MzA3MTYyMDNhN2E1NGExMjZmYjhlNzg2MjA1ZWIgbGVnYWN5LXRydW5rCis0NzIzIGE4YzZkYTNiZDMwNTZkZDU2ZjlmZTAzOGNjYzE0YjM4ZDVhYjE5YjQgbGVnYWN5LXRydW5rCis0NzI0IDNhNjU4ZWVjMWYwMmUxNDg1ZTY4MzNkNmYwZWJkMWM4YjdkYWE2ZTEgbGVnYWN5LXRydW5rCis0NzI1IDhhMTI0NGU3Y2IzYmQyYTQ4M2NmM2Y2OWE1MGYwZWMzYjg0NzMzMjMgbGVnYWN5LXRydW5rCis0NzI2IDU4YWE3ZjNiMTY5MmJmNTc5OGNlYTE2NmRlMzIwMTlkYWY4YzNiYWMgbGVnYWN5LXRydW5rCis0NzI3IDA3NjVkMGJkODhkNmRhNWFmZjA0MTg2NzI0MjQwZjMzNjQ4ODQ0NTIgbGVnYWN5LXRydW5rCis0NzI4IDkwODgwYmQwOTIyMWRlY2QzYWJjOGZmNTNlN2NmZmY2Mzk4NzJmODggbGVnYWN5LXRydW5rCis0NzI5IGU1YjlmNjQ0MDUzZTllMGM0Y2QxYmRkOTEwMzllZTk2OTk3MTk0MTkgbGVnYWN5LXRydW5rCis0NzMwIDY2ZDZkMTNkZjRmOGE5ODIwNGVjNGJhNDNiZGI0YjMzNzMyZWU3NTcgbGVnYWN5LXRydW5rCis0NzMxIGRmN2UyNmI1YzkxODliYTQzYTBhMGRmNDJkODIzYjRhOTBlZDliZjkgbGVnYWN5LXRydW5rCis0NzMyIDY1NjQ0NzY2MTU4YWU4ZTRjYTk3MzJhNTczMjY5NmY1M2I1YjZmMmEgbGVnYWN5LXRydW5rCis0NzMzIDYxODcwMWNkZjYwMDAxMDYwMmQ5ZGJhNjk0MjY3YTNkMjViYTU2ZjIgbGVnYWN5LXRydW5rCis0NzM0IDY1MGNiNjdkNzY1OTg0MmRlZThkY2E5OWJjNTU1ZmZhOTU3MjVlYmEgbGVnYWN5LXRydW5rCis0NzM1IGVlYWFmODc1ZjdiNjgxMzk3M2VlN2RjMGYxZGY3NTM2M2YyZDg2YjIgbGVnYWN5LXRydW5rCis0NzM2IGIwMzRiNGVhMmIzOTkwMjZlYmNlYjU0ZGI5OTJiYjFkZjA4YWEwY2MgbGVnYWN5LXRydW5rCis0NzM3IDc4NTlkM2FhYjFiNDA1MTlkODkxM2FiMjIyNzUyZjFkNTRlNmMyZGQgbGVnYWN5LXRydW5rCis0NzM4IDcxYzExYTZlNGJjMDBmMmI3OWMyMTlhMTA2YjIxNDgwNTQ3MTgwNDggbGVnYWN5LXRydW5rCis0NzM5IDVlNmMwY2RhYTdjMWJiY2NkYzJkNmQ2MTAyZTkwZjI4OTFjMGYyYmYgbGVnYWN5LXRydW5rCis0NzQwIDU1NDZmNGE2ZTNjMzRmZDJlMzE5N2Y1N2JjZjIyZTI2MDI4MTI0YTEgbGVnYWN5LXRydW5rCis0NzQxIDU0MGY4NDQ0ZWY4YTg3MzAwOTM0MTdjZGVhZjNjMmFmODc5NTZkNDggbGVnYWN5LXRydW5rCis0NzQyIGI0Y2FhYzE0MjhkMGRhN2VmMDk5OTAyMGE3MDBlZWRlMjllNWNmZWYgbGVnYWN5LXRydW5rCis0NzQzIDMxOTVkYjY2ODlmZDYxM2VlYWIxNmI2OGI2ZWQwODFkMTg0NjhkMWEgbGVnYWN5LXRydW5rCis0NzQ0IGY1YTZlNmVlNTI5YzA3YmE3NWM1Njg0ZDA1NWMzNmY1Y2ZkZGJkOTggbGVnYWN5LXRydW5rCis0NzQ1IGFjOGEyMjViMDUxYjc1NzcyMjE3YjRmMGU0OTMxZTAzNTg2ZjdiMmEgbGVnYWN5LXRydW5rCis0NzQ2IDAxYTk1NDEyNDU3NzI0ZmJkMjFhYTcwMTY4Njk4ZjAxNjM2MTIxODUgbGVnYWN5LXRydW5rCis0NzQ3IGEyNDE0NjI0MTk5MTNiNzg1MWEwN2VhNTc4YjEzYTlmODVkYTNiYjIgbGVnYWN5LXRydW5rCis0NzQ4IDYyNjNlMmZkOTM5ODg4MTM5ODgxNTRmM2JiMTRmZTdiZjhmMmFhMzEgbGVnYWN5LXRydW5rCis0NzQ5IDNkNmM5YTQ3ZWE0NDVhNTNmYjIzNzFiNmRiMDBmOTVkMmY5MzE1ZjYgbGVnYWN5LXRydW5rCis0NzUwIGYxN2Q2ZTZiNDBkYWIxNGM1YWNiMTUyOTNmNjk4MjU0NzRhYThmNWEgbGVnYWN5LXRydW5rCis0NzUxIDk3MTdmNmE4ZjVmYWZlOWViY2YyZjY4ZGU3NDI3OGZmMmUwODZlMTkgbGVnYWN5LXRydW5rCis0NzUyIGZlOGRiNzhmMzExYzk2Y2VkNjhjZDg3OTUzZjg2Y2UzNGU1NTBiYjkgbGVnYWN5LXRydW5rCis0NzUzIDk5MDA5OWVkNzgxMDUxZDU1ZTRjMDJmMTMzMWFmNGEwMmM3NjVlNDcgbGVnYWN5LXRydW5rCis0NzU0IGQyMDQ5YTFkM2NjNWNmMWNkMmFlNjU4YzFkZTQzOTJhMmUzMzdkYWMgbGVnYWN5LXRydW5rCis0NzU1IGFkYWI2NmZhYzMwZTk3ZWM3ODY2ZmZlMDNlMzcwMzM1OGVmZWFmNmEgbGVnYWN5LXRydW5rCis0NzU2IDZhMDQyNTZlYTA4NzdjMDc0ZDJhOTM4OGM0NjNmZjNjOTJlZjI4ZGEgbGVnYWN5LXRydW5rCis0NzU3IDUwNWZjNDc4ZmYwODUxNGU1MjNkYTYxOGQ0ZjU1M2UxOTc2ODFkYjEgbGVnYWN5LXRydW5rCis0NzU4IDE3MGI5OTg2MmQwOTVkOTYzODU5MzFhMWJiM2RmYzE0NTliODRmZWQgbGVnYWN5LXRydW5rCis0NzU5IDY1YTY4YzUxZTlmMmE3MGZmMzZmZmNkMDk2ZTNkOTAzYWVjYWZkMzcgbGVnYWN5LXRydW5rCis0NzYwIDA4YjQ1N2Q2YjUxNmVkZjQ1NmZmNzYzNjA3YTIwNDg1YTBhN2U0Y2QgbGVnYWN5LXRydW5rCis0NzYxIDVhZWUyYzVkOGRmZmNhZWEzZTg2YTc3OGQwN2JmYWE0YTZiYzY5YWMgbGVnYWN5LXRydW5rCis0NzYyIDE0YjEyNmQwYjViZTM0YmM5N2IxMmQ2MjI5ODA5ZWRlZmFkZjAzNzQgbGVnYWN5LXRydW5rCis0NzYzIDU2Y2E2N2RkZWM4NThiNTZkMGYwMDE3ZmYyYmMxZjZhNDgxOTg3ZDcgbGVnYWN5LXRydW5rCis0NzY0IDA3OTEzZmI4ZjkyZjA0OTkzOTBiN2FiMTI5MzdkMjA1ZDUzNTljODQgbGVnYWN5LXRydW5rCis0NzY1IGZjNmU5NjIyMTA4OGIwODIzNTdhZDA4Yjg3ODJjNDY3N2MwNmI5ZTIgbGVnYWN5LXRydW5rCis0NzY2IDQwYWVjNDhjZDFlMjE0N2Q4ZjlhZjA2YjFjYjBkZDAwZmFjZTQzYjMgbGVnYWN5LXRydW5rCis0NzY3IGZmNzJhNWY5YTRlZTEyNGFhMGQ4OGE5MTMwYmRiODY1NDk2ZTgxZmMgbGVnYWN5LXRydW5rCis0NzY4IDUxNWUxZDAzMzk0YWQ4NjY5ZWM0ZDk5ODM4NGRmMDc5MjYwOTQ3NzMgbGVnYWN5LXRydW5rCis0NzY5IDE0MjU2MTc1MTRhY2NmOGFhMzBjMTVjNTUzMDUwNmZlODgyMWZlMGQgbGVnYWN5LXRydW5rCis0NzcwIGVkODIxYTk5YmEzOTIzOTUwN2MwMGNhNWQ3ZGU3MzU4OGMwYzUxMzAgbGVnYWN5LXRydW5rCis0NzcxIDFjZTA3ZjY0ODYyZTlmNWY4MGM2NTZlNjhmMDE1N2M2M2U4NmVkOTUgbGVnYWN5LXRydW5rCis0NzcyIDk5ZTdhYzIyYmQyZTJkNTE4OGMwZGRjMjI4MjBkNjE3YWFjNmYwODIgbGVnYWN5LXRydW5rCis0NzczIDFlNzIwNzEyODE2Nzg4YzZjZWQ4ZTk1OGY5Nzc3NjRlNDVhOGEzYmEgbGVnYWN5LXRydW5rCis0Nzc0IDVmNzA1OGQ4MTZjZjkxZjI1MzM0MGQ0ZGNkMGJmNmI5ZGY2YzdmM2QgbGVnYWN5LXRydW5rCis0Nzc1IDMxNjFlN2NmMjA1NGY3MzZmOGMyOGMxNmNkM2I5YWMxZGZkN2Q5YjggbGVnYWN5LXRydW5rCis0Nzc2IGQzZTJmOTg4ZjFhZjBlMTQ4MDVjNTYxNWZiMzhjNDQwMTU3OWVkMGIgbGVnYWN5LXRydW5rCis0Nzc3IDNkZmVmNjdlMGRlZDkwZTdkMTEyOGEzZmMyYTAyNDIwYTVhYTJmMzAgbGVnYWN5LXRydW5rCis0Nzc4IGZhYWVjZTdjY2Q2ZTcxYjE1ZDQ4MDM3MjAyNTIzOGRiNjBhNGFjYzEgbGVnYWN5LXRydW5rCis0Nzc5IDdiZGU0YjFkZjQ5NDA5N2Y3YWExOTk2NTc0YjYzZWZmODg3ZWJlZDAgbGVnYWN5LXRydW5rCis0NzgwIGU4ZDIwNzY1OGEwNDUyYjFkNTkyNzczZDNlZTg0YjVjMDhhZGI2ZjkgbGVnYWN5LXRydW5rCis0NzgxIDQzZjllNzU0OWM3MGU2ZTgzN2QwZTBhNjY2YWQyNDA2ZjRlMzZiM2IgbGVnYWN5LXRydW5rCis0NzgyIDNlZGVjODIxMWEzNmFkNTcxOTNlOWQ4ODE5Zjc1OTAwMGYyZTI5ZmYgbGVnYWN5LXRydW5rCis0NzgzIDFiMjYyZDE5MGE0YTQ4MTA5ODNjYzNkNjY1YjU1OTQ0OTMzOTljMTkgbGVnYWN5LXRydW5rCis0Nzg0IDg0NTYwZjRiMjllZjA5YTIwOWNkY2M3ODhkNGY5NjVmM2VhZTM3MjEgbGVnYWN5LXRydW5rCis0Nzg1IDI0MmRkNWVkM2IwODVlZWUyZjQyNjcyYmE2NTA0OTUyMjI2YTI5OWUgbGVnYWN5LXRydW5rCis0Nzg2IDMyZTdkMjY5NmQ3OTFjNjllYzk5YWIxMTI1NjE3ZThmNGM3OGFlMjYgbGVnYWN5LXRydW5rCis0Nzg3IDY0NjhmZDAyNTFkMjk2OGU2MzExODZmYTk0NmE1MDRhNjBhZmQzNmEgbGVnYWN5LXRydW5rCis0Nzg4IGQ4YjRjN2RiNzdhZTZiZmY4YjI1ZWEyNzk4M2FhMjUwNDY5NTUyMmQgbGVnYWN5LXRydW5rCis0Nzg5IGUxMWU2YjM1ODUzMTNhYTkxOWQ3YTRlMmY4MTM0NTc5N2ZmZjYzMzUgbGVnYWN5LXRydW5rCis0NzkwIGIyMjQxMTc3YmNjYzYyNzczMzJlOGE1ZTk1N2Y4Y2I4NzZiZjM0MDMgamFyCis0Nzg5IDllODJkYWY3NjA1YmFkNzk3NmE5YWJjOTk3Y2I1ZTBhYmU0MzQwNzggbGVnYWN5LXRydW5rCis0NzkyIDcxZTYwODcxYzY4MWNlOTE0MTk3NGVmYWMzZTBiMzNjOWZlMzI4OGEgbGVnYWN5LXRydW5rCis0NzkzIDRjMmYxNDUyMTI1ZDU5ZDA3NWM2ZmU3ZGFmOTAxNGNiZGYxNzhmMzYgbGVnYWN5LXRydW5rCis0Nzk0IDQxMjc4OTNhODdhZDA1YTAyMmVlNzBiNThhZDgxYzYzN2ZiZjllNjUgbGVnYWN5LXRydW5rCis0Nzk1IDIxZjBkNWYxOGNkYWU2MTA4ZjVmYzVmZDI1NDUxOTgyZDYwMTlmOWYgbGVnYWN5LXRydW5rCis0Nzk2IDYzZmEzODdjMDJmZWJjYjA4YjA1NGEwZWUyMDMzZWIwM2E4NzcwNjUgbGVnYWN5LXRydW5rCis0Nzk3IDY3MGU1MGFlMzg5ZDU0Y2MzMjEwMWNmYjRkNWFkNjhmNjA4ZjA1NTYgbGVnYWN5LXRydW5rCis0Nzk4IDRiNjE3ZmVlNDI3ZDM2MzhjODdjMGQ2MmQ4YzlmNTMzYjM4YjliNzcgbGVnYWN5LXRydW5rCis0Nzk5IGVkMGFhNGE1ZDEwNmI5YzJiN2IyZWQzZDg1MGU0ODRiZDcwNjg0NjMgamFyCis0ODAwIDI3OWQ1MWExOGFlNGI0ZThkY2YwMDc3NjBhOTc3OGQ4YmZlZjg4YjMgbGVnYWN5LXRydW5rCis0ODAxIDk1NTJlZGI0ZWFiZmFjMzQxYTZkM2U0ZjEwMTNmYTk0OGMwMTc3MGYgbGVnYWN5LXRydW5rCis0ODAyIGYwOWQzMjUyYTM4YjIxM2VlZWQyYzc3NmExOGJmMjdhMjI2MzgzZjggbGVnYWN5LXRydW5rCis0ODAzIGQwNTY4NTk5MzQ3NmQ0Y2I3MGY1YjM0YWRkZjExMTgwMTBmMzlmMDYgbGVnYWN5LXRydW5rCis0ODA0IGVkNDg2NDYxZGVmNjc2ZjA2MTk5YWNhZmJhZGJmY2MxZGVhMWFlNzMgbGVnYWN5LXRydW5rCis0ODA1IGQ2NWM0ODVlMGFkODIzNjAwMzdmOGFiNTZjNDM4OTkxZTVkZGFkODYgbGVnYWN5LXRydW5rCis0ODA2IGEyMDU0OTMzNzc1YjAwMTRkNjA1ZmRlM2Y3ZjE0YTg1ZWUzODEzZmUgbGVnYWN5LXRydW5rCis0ODA3IDg1ZmEwMmI4NWQ3ZDEzMGExNGE5MWQ2YmMyZTVmNWM0ZTU2MDFlMDAgbGVnYWN5LXRydW5rCis0ODA4IDI2YjFiMTVmYzhlYzM3NTZhNTYzZTRlNzFlN2JiYzdhODFlYTRmYmMgbGVnYWN5LXRydW5rCis0ODA5IDhhODc2NTM0M2NjMGQ0NTVhMDYxODgyZTU3Y2E4YTE0MmQ5ZmIyMmMgbGVnYWN5LXRydW5rCis0ODEwIGZiYWY1NDE2OTcxMTczYjM2NjA2ZGU0ZTVjNTlhNzViZjU2OTAyZWUgbGVnYWN5LXRydW5rCis0ODExIGRmNWI3MjhiOGViNjJlZTc5ODYwN2JhMzg2NTBhNjEzZDhjZWE1ODEgbGVnYWN5LXRydW5rCis0ODEyIDZhOTQxMTk4NDRlYjM4MjBlNDRmYzMzNjk0MDlmY2M5YmFjNzM5OTcgbGVnYWN5LXRydW5rCis0ODEzIDE3NDBmZDc2ZmMzMzJmYmM0Nzk1ZTFmYzgzZmRkZDA3M2Q1NDkxNmUgbGVnYWN5LXRydW5rCis0ODE0IDRjNDNjYmRjZDUyNDNkOTljYzI1MTFlMjk0ZmI5ZGZjYmMyNTVkMDMgbGVnYWN5LXRydW5rCis0ODE1IDkxNmE4ZmYzNmE4NTQ3MGJmYTZhMGM3YTAxNTYzYzA2MGY5ZTY0NzIgbGVnYWN5LXRydW5rCis0ODE2IDdmZDc0MTJlNzE4ODQ4ZTBmMzMzM2MyYjQ2ZDYxODI0OWI5N2UwNmUgbGVnYWN5LXRydW5rCis0ODE3IGU4MGFjZmExM2FjMDAwNDQ5N2Q2YjMxZTRhNWRhNTgyMGQyZDg2YzEgbGVnYWN5LXRydW5rCis0ODE4IDc0N2YwYjdjYjdiZTQzNGNiOTY1ZWNkMTRmNTJjNGY5NzVmMzYxMzQgbGVnYWN5LXRydW5rCis0ODE5IDIxYTIzY2ZjNDg0MzFhZTkxY2EwMTNlMDBlYTExYzAxMjMzNTAzYmUgbGVnYWN5LXRydW5rCis0ODIwIDk2NzQ3Yzc4N2E4MzNjMzE5MGQzZDNjMjAxOTRhYjMyYmE4ZWViMWIgbGVnYWN5LXRydW5rCis0ODIxIDhjZjYzYzMwZmZjODc3ZWMwYWQ5NDYwMGNjMTQyMTkyNTY2M2E4NjEgbGVnYWN5LXRydW5rCis0ODIyIDk0YmYyZjA1ZGEzMTllNmNlMzVlMzNmN2FhOTdhMzdjZjI4NGIzYjIgbGVnYWN5LXRydW5rCis0ODIzIDkxNWZhYmVjNjRhMzBhZDczM2IxMjkwMjNhMmYwNzI3ZDYzY2YyOWYgbGVnYWN5LXRydW5rCis0ODI0IDY2M2FhMDU5ZTI5ZmVjNjZmMDMzODE5OGZjMzI2ZDliYjEwMzIwZTggbGVnYWN5LXRydW5rCis0ODI1IGJhMWI3NmMwOTA0MTRhM2VjODA2OGI1NzE1ZDk0NmVhMTMyZTZjYzMgbGVnYWN5LXRydW5rCis0ODI2IGUzODYwMzVmODk3ZGZkOTFhYzYzNTk2MjY1NGNkZjNjYjg2MTY1NDYgbGVnYWN5LXRydW5rCis0ODI3IDA0ZjYxYTVhNzY1NDA5YzRkNTBhZjc0MjBiOTM1NzRhYjBjNzJiY2YgbGVnYWN5LXRydW5rCis0ODI4IDBjODM1YzgwNDMyMjRjZjU5MDU1MzI3NDcxN2VlNGYyODE3MDBjM2IgbGVnYWN5LXRydW5rCis0ODI5IDU4MmIwMGZiYWIxNjE0NTIzZjhkNGY0MzIzMjcwNjBiZWY0MzUyOTkgbGVnYWN5LXRydW5rCis0ODMwIDM5NzQ3OGJjYTBjNGRhYzFkYzAzZTAyZDRkM2I0NjllMjBlN2M4ZTkgbGVnYWN5LXRydW5rCis0ODMxIDUxYzg4MjQ5ODVmOGE1MDg1MGFkMGVlYjZlYWRlMWE3M2JkOTY3NWQgbGVnYWN5LXRydW5rCis0ODMyIGMzMWVhZWQ3Nzk4YmJhNDFmMzE0ZDM4ZTY5M2E3NGY5ZTY4YTM1ZjQgbGVnYWN5LXRydW5rCis0ODMzIGRhYjM0Y2JmOGQ3ZmEzZjQyYTk5NzlmODdlOTIwMmI3ZThiYzViZmUgbGVnYWN5LXRydW5rCis0ODM0IDRlODdmM2EzZjMzYTg3YWJmYjA4ZDhkNzNhZTk3ZjgwMjU3YTY0MWQgbGVnYWN5LXRydW5rCis0ODM1IDFhMjBkNTA1ODc0NDQ4YmM3MDFhYmVhMTYxNTkyY2Q1NDI4ZDhiM2YgbGVnYWN5LXRydW5rCis0ODM2IGM4YTgzMjE4YmE2MTg3MGE2YzcxNzgwMWZiN2VhNWI2NGJmZWZlYzAgbGVnYWN5LXRydW5rCis0ODM3IGZmM2ZjMzBlZDc2MDY5YTFiM2RkZWVmMGYxZjRkM2IzMWYwN2U1NzYgbGVnYWN5LXRydW5rCis0ODM4IDY0NTBkODgyOGQyYjk4OGQ0MTQwMjAyNzE2ZDdlOTE1NGRiZGM0ZTQgbGVnYWN5LXRydW5rCis0ODM5IDRjYzgxMzdjY2I1NmNmZmYzOTJmNjljNmJkNTgzNjIzY2FlNzM2Y2IgbGVnYWN5LXRydW5rCis0ODQwIGY4YWI5MjVlZmRhODhhZTBkYTBhMGUzZTVlNzE3ODBhYzlkNDAzYTMgbGVnYWN5LXRydW5rCis0ODQxIGM2NTMzYjg5NjI4ODg3YTMxMWU5Y2YzOGI5YjFkOGVkOGQ5NmQwZGUgbGVnYWN5LXRydW5rCis0ODQyIGMwOWRhYmY3MDk5NmZiOWE5Zjc4NjZmMjdiMTM4NTM1Njg5OTIyMjcgbGVnYWN5LXRydW5rCis0ODQzIDUzMTNhYzZmMzRmZGNiMDNlNjczYzE3NjE0MGY4MDc3YzFkZDgwYjUgbGVnYWN5LXRydW5rCis0ODQ0IGY5NzllNWJkNmEyMjMwZTc4YzUyM2JmMGY5ZTk4ZWEwZDA5MWVhMGEgbGVnYWN5LXRydW5rCis0ODQ1IDQ5YmZlZjE3YjEyYjY1ZmE3NmJmYjA5Y2YzNGFkYTVhNWE2OGI4Y2IgbGVnYWN5LXRydW5rCis0ODQ2IGRkYjEzODYyZmJiMmJlYTc0N2E2ODE3YjlhOGRkZWNhM2RkMWE1ZDAgbGVnYWN5LXRydW5rCis0ODQ3IGVjYmJhYTU4NGYzYzE2NzM5OGUwNmI0NzEyNWYyM2QzMWMzNjMwODkgbGVnYWN5LXRydW5rCis0ODQ4IDlkYzg3NWFkMDUwYzg5OTQwZTNhNTkzYWNkNjgyODdlNGM3MDkwYjQgbGVnYWN5LXRydW5rCis0ODQ5IGIxNTZiZjRiZTYyZjFiNmE5YzU3MTM1MmEyZDYxOWVkNzZjZTQyZmEgbGVnYWN5LXRydW5rCis0ODUwIGZhOGNkZDNjYzU0NTQwNTUxOTQzYzAzMjA5ZDViZjRmZGVhYTU0ZGQgbGVnYWN5LXRydW5rCis0ODUxIDQyYjU2ODlhNzQwOTVkZDgwOTAyNjVjYWViNjBlMDIzNmU4ZDdhMTggbGVnYWN5LXRydW5rCis0ODUyIDI5Y2E0NWViM2FiNzUyM2JhNzU1Nzk5OTc3NDNhOTcwOGU3YjI2MGIgbGVnYWN5LXRydW5rCis0ODUzIDA3MzZhN2VjMmYyODllNWRlZTkxZDBjZThhMmY3Zjk1YmIzOTI2OWUgbGVnYWN5LXRydW5rCis0ODU0IGNhYmI3YzU3MzJlZjFhMzhkOWY0MTQ2YWM1ODI2MTgyNDBjNzNkZDYgbGVnYWN5LXRydW5rCis0ODU1IDQzOGE4YzI2NWViOWY1NGM4NjdjZWZmN2FjZDJiOTJiYzk0YjEzYzcgbGVnYWN5LXRydW5rCis0ODU2IGQzMWY2OTRjMTFhODliNzExMTcwNjI5NzYzMjE2OGRmYWYzMTgwNjYgbGVnYWN5LXRydW5rCis0ODU3IDEzMjViM2U4ZTNkM2NlMWY2NWYwNzY4MDJhMzg0ZWFlY2E0OWJkMTcgbGVnYWN5LXRydW5rCis0ODU4IGNhYjY5OTQ1Mzc3NWMxOTA5YmJhYzg2MGExOTI4MjYzZTA4MmU4ODkgbGVnYWN5LXRydW5rCis0ODU5IDcyYzcxNWMwMDRjODk4NjFkNTA0YmU3ZWY0Y2I1MGI0NjZjNDcyOTMgbGVnYWN5LXRydW5rCis0ODYwIDcyNDZiOTlkMjk2NmEyYzJiMjU2ZWU2YzFmMDM0NWRhZmVhYTMwOTAgbGVnYWN5LXRydW5rCis0ODYxIDBiNjJiNTNkNDNmODc4NmI2NTQxYTNhODNhNzQzMmYzZTc5NWE3NGQgbGVnYWN5LXRydW5rCis0ODYyIGUxNDk3NWM5MTBmMGNhMWE3ZDY0ODJkYmEwYTIzMDY5ZmNlNzcwZGEgbGVnYWN5LXRydW5rCis0ODYzIDlhOTQyOTJhYTRjMTViYmRkMDU5Y2UyNjQyNjg0ZDkyZWRkMjY2ODIgbGVnYWN5LXRydW5rCis0ODY0IDc3ZWI2MzcxNmI0Zjk4ZDNhNTQ2MGMwYmE4ZmM1MWIyYzZkODcwZGYgbGVnYWN5LXRydW5rCis0ODY1IDRmYzAzM2NiNTU0NDViYTZlMWFiYjI0NmE4NmI2NzdjNzk1ZTkyNWYgbGVnYWN5LXRydW5rCis0ODY2IDQwM2E1NjMxMjE0YjAyNDUxMDJjNTMwYmRkZGQ4NWNkNGIyYzg5MzYgbGVnYWN5LXRydW5rCis0ODY3IGRkMWFiMjBmODIyM2IzOTg2NDM0ZGI1YzU4YjYxYTA3NzZhZmJlN2UgbGVnYWN5LXRydW5rCis0ODY4IDc1YWUxMDRmN2U2YzUxZWEyZjA0NTZjNzJmZWEyNDkxZjQ5NzNjYTggbGVnYWN5LXRydW5rCis0ODY5IDgxMGJjMTVlMThmOTgzYmVmMjM1YmUxNmEzYjM1ZjZmMTIwNTdhNjEgbGVnYWN5LXRydW5rCis0ODcwIDYxNDI1MTgzNmNlYjIyNzMwOTYyNjU5OTViODJiNWZhMzNmZjI2MDMgbGVnYWN5LXRydW5rCis0ODcxIGVlOGU5MWExNzc0NWFiYjdjZmExNDIzYzc1ZjI4NjZjN2M5MTI5OWUgbGVnYWN5LXRydW5rCis0ODcyIDc1YWE1MjQ2YjJmNmYzZDFkMmZiMDc1ZGQxMjM5OWFlODQzMjY3MzggbGVnYWN5LXRydW5rCis0ODczIDk3ZTU3MDUwZTI3NjBjZmEyNzJmNTJkYzBiMmQwODZlYjU4OGRkOTggbGVnYWN5LXRydW5rCis0ODc0IDIyYjFhYjBlNjQ3MzVkYjdmODg4MzRhMWVkNGI5OTRhZGNlZDA2Y2UgbGVnYWN5LXRydW5rCis0ODc1IDRhNDYyYWFjYzFlOTkxNDViODAzY2JmOGIzMGE4NTU2NTcxZjcyYjIgbGVnYWN5LXRydW5rCis0ODc2IDZiZWVmMTc4NzFmOTgyZDNjZmI1NGMwYmIzOWQ3YTFlMzdiMTVlYWUgbGVnYWN5LXRydW5rCis0ODc3IDZlZGE2NDJmMTlkMDM3ODBiZjAyOTA3MmZhN2U5MThiODUyMjk0NGMgbGVnYWN5LXRydW5rCis0ODc4IGY0ZjcxZWJlYTUzZjE0NTQyM2UxMGEzNWZmYjRhNDM5NmEwMTgzYTAgbGVnYWN5LXRydW5rCis0ODc5IDczZWVmZjRkNDNmODRhZDc2ZDJiYjJmMGUwYzRmYjk0MDcwY2JiMTkgbGVnYWN5LXRydW5rCis0ODgwIDAwZjRlNDAwNTc1YTk3MzQwZTYwOTEyMTY3NjhkMWRiYTU0ZTVmZDIgbGVnYWN5LXRydW5rCis0ODgxIGVjY2Y0OTM3ZjFkYzlhZDM1YWVmZWU1MGQ0N2YzYTRiYTJmZGY2ZTkgbGVnYWN5LXRydW5rCis0ODgyIDliZjE4OTk2ZWVkOGM5ZGY2YjNmNGVhZDAwZDViNDJkZWQ0OTlhMTkgbGVnYWN5LXRydW5rCis0ODgzIGJkM2FkNjYzNGU3NjQ4MjA2MWY5ZmQ0ZmNlNTkxMTQ1MThmOWI3MmIgbGVnYWN5LXRydW5rCis0ODg0IDc5MjRiNzgxOWQ4Zjk2YzcyYTE4YWU4Zjk5MTdhNTdlYzY1YmNkMTQgbGVnYWN5LXRydW5rCis0ODg1IGVmYjA2ODVhNmM5MWNiZTY1ODlhOTM2NGMwYzlhZjE1NmUyNjJjZTIgbGVnYWN5LXRydW5rCis0ODg2IGQzOWFhYjZjMTMwZDQ1ZGI4OTQ4ODg1ZjNkNmYyOWM2MGQxZTcwM2UgbGVnYWN5LXRydW5rCis0ODg3IGNiYjQwNzJkNTM4YmU3ZjA0MmFlZjg1YWZlMDA2YmViOTJhYmY2NjkgbGVnYWN5LXRydW5rCis0ODg4IDQ0NWJlYThjZWFiMWQwNzA4M2QzZTRhNjhkOGIzY2QxNWYzYTZjOGQgbGVnYWN5LXRydW5rCis0ODg5IDZjYmQyODMwYjVhMjM4Y2Y1ODI4NDA4NTc2NjY0NjIxYWJmYmRiNGUgbGVnYWN5LXRydW5rCis0ODkwIDViYzM0MWM0MDcxY2QwOTM5NzZkYTgwNDdlYjI4YzE0MzMwY2Y3YjUgbGVnYWN5LXRydW5rCis0ODkxIDFlOGFlYmFiODc0YWUxMjVlN2ZkNDViODZkMGQ2NTM3YTcwYTBlMDAgbGVnYWN5LXRydW5rCis0ODkyIGZhOThkZGEwNzg3N2YwODhmYjFlZDc1NjRiZmFjMjYwZWJlOTBhNzMgbGVnYWN5LXRydW5rCis0ODkzIDYyZWJiY2ZlYTgyNzJiODRkNjM1OThkNzZmNzY1Y2RmNzhiN2JlMWQgbGVnYWN5LXRydW5rCis0ODk0IDFmNTlmMmExMzMxMjk2ZWRmMDEyMTA1OTcwMTQyNjE5ZWMzMzYyZmYgbGVnYWN5LXRydW5rCis0ODk1IGMxZDI3MDQzYzIyZjQ1YjY0MThmNjQ3ZGFjYjVhNjQwMjU3ODMxMmYgbGVnYWN5LXRydW5rCis0ODk2IGQ1NzdkNzQ5OTE4ZDE4M2RkNjMyZDE3MzcwOWU2MDMwYzIyOTkzODUgbGVnYWN5LXRydW5rCis0ODk3IDJmODllYzFhOWMzOGM3ZDcyMTkyYzc0ZjA1MDA4OWM4NWEyMDhhMzMgbGVnYWN5LXRydW5rCis0ODk4IGE1ZTk1ZjlkZTkwMDBlNTc4ODJjYmIzYWI4N2M4NmNkN2U3ZDAyMTkgbGVnYWN5LXRydW5rCis0ODk5IDJkY2Y3NTM4MzQ3YTlkNjhmMmU4Yzk1OThhZGNhNzI0MzE1OWFiZGMgbGVnYWN5LXRydW5rCis0OTAwIDk4YzFkODQxMDFhNTA4MTNiNDVhMWYwMWQxMDA1ZTM2YjZhNDdjNTcgbGVnYWN5LXRydW5rCis0OTAxIGY2MTcxNmFkMGI3ZjUxZjMxYzAyM2YzNGU1YWU0MmE4M2Q5NzMxMjggbGVnYWN5LXRydW5rCis0OTAyIDZmMTIxMWIyZTA3NzliMTEwNjJiOWIyY2NlNjkwZjI0NDUwNzUzZmUgbGVnYWN5LXRydW5rCis0OTAzIDczNDk5YTY2N2U3ODRlZGE3NDgxMzY4NjFmZDRiMGY3N2E4MTNmMTYgbGVnYWN5LXRydW5rCis0OTA0IDJjNjU2NWYxYjdmODY0NDU4ZGQ1M2EyOWZiMTg4YmVkMjVjMGZlYWYgbGVnYWN5LXRydW5rCis0OTA1IDhlZWVjZDIzM2Q1NjliYmE5ZjhjMjMwOTdkZGMyNTY5N2YzMjhlZWMgbGVnYWN5LXRydW5rCis0OTA2IDk0YTY0MzY2NTVlMDNmYjk3NTM4MTQzZWE4NmZlN2VjNzA0NDA2N2IgbGVnYWN5LXRydW5rCis0OTA3IDQ4MGIyNTFhMDQ2ODM1YjFjYjQ1ODkzMWU1MWI0YWEyZDBkNjU3YmIgbGVnYWN5LXRydW5rCis0OTA4IDllZmQ0MDhmYzlmNmJiNzI5MzZiZGE2YjZjY2M2NDEwZTZjZGFjMDUgbGVnYWN5LXRydW5rCis0OTA5IGNkZDNhNzIxYjQwZTNlOGU5NTc3NTM5ZDY0ODhlOGNiZTM2NTUyNWMgbGVnYWN5LXRydW5rCis0OTEwIDg5OWQyMDg3NDU2NmI5ODZkMjE2ZDE0ZmUzNjA5MjExMDRjNGJmMjMgbGVnYWN5LXRydW5rCis0OTExIGI0MmFiNzdmMjIyNjAzMTY2M2MzMTI5MGE1YWFkMzVhYmFiZTkzNzQgbGVnYWN5LXRydW5rCis0OTEyIGJjMDMyMjVhNDQ5M2Y1ZGJhNmIzZjZlNmE0ZmE5MWIwZGNjZDZhZjcgbGVnYWN5LXRydW5rCis0OTEzIGUxYTdiZGZhZmVjOTMyMzg4NTI3ODg5ZGJmMTFjY2NmOWVmZmE2MWIgbGVnYWN5LXRydW5rCis0OTE0IDY1YmNiNDE4MmMxYTMyMDc5NzllZWJhMjlmNDBmNGU0MWUxZDljNzAgbGVnYWN5LXRydW5rCis0OTE1IGJhYzk2ZDVjNDYzZjQ1MmZmYTdhNDRmN2FkNWJkZjAxM2IwZGVjMmMgbGVnYWN5LXRydW5rCis0OTE2IDFjMjlmNmJkZDg5OGY2ZTI0ZTdiZjU1MzNjNmJmMzQ1NDllYmI4OGIgbGVnYWN5LXRydW5rCis0OTE3IGQ5NDA0NWJkNGEwNDEyYjlhNjkwMGE0MGQ3OTY2ZDk3MmM1MmE0ODggbGVnYWN5LXRydW5rCis0OTE4IGU5ZTg2YWU1ZjVhNGE4N2YxYTRkZGIwNjI1ODE2MDQxMzdkMDIxZGQgbGVnYWN5LXRydW5rCis0OTE5IGU3NjRiNzhhNzA0ZjUxOGYxYTgzNDJmZGExYjhmMmM0MzViZmNiMjIgbGVnYWN5LXRydW5rCis0OTIwIGU3MjZmOTBkMmE5ZmYyNDk1OWRhMTE5ZjIyNTg1OTI1NTU1N2Q2YWYgbGVnYWN5LXRydW5rCis0OTIxIDFmNDE0MWFhZmUzNjE5NzY5YTdiZTRlYWYyNTNmYzRkYzZhMjZjNmQgbGVnYWN5LXRydW5rCis0OTIzIDMyMmZjNTk2ZjFjNDM3OTEzMDBlODBjYWZkYWE5YTE0NTU2MTZhYzkgbGVnYWN5LXRydW5rCis0OTI0IDRmN2M2NzNkYTkxOGI1NmFkMWJhNTVlNmY0ZmNkODQzZjNlYTI1N2IgbGVnYWN5LXRydW5rCis0OTI1IDNkNjczNGFiNmNkNDAyZGQwMjFlNmQ0YTNkODc5ZWMxZjM3ZTgzYjggbGVnYWN5LXRydW5rCis0OTI2IDhlMzhjZDBhM2EzMTVmZTFiZDdhOGUzYzljMTZmNTAyMGUyNzI4NjQgbGVnYWN5LXRydW5rCis0OTI3IDBlMWY5YTE0ZmJkNDk1YTkzYWI1ZjMxMmUyMWJlNjAwMzYzOTJlM2YgbGVnYWN5LXRydW5rCis0OTI4IDViYjM5YTQyYzcyOTEyMjc0ZWZhOTExYThmMmJhYjBiY2ZjY2MyYWEgbGVnYWN5LXRydW5rCis0OTI5IGRkMjg0NWQwNmViMzdhZTI5NDA4ZmU4YmZlMDc4MDVkMGIyZTY2YjUgbGVnYWN5LXRydW5rCis0OTMwIDUzZjkyYTQ3M2M2ZjEwYTZmMWMwNjA3YzYxZDY0MjgxMGNkMmI2OTUgbGVnYWN5LXRydW5rCis0OTMxIGRlNGRjMTY1YmZiNmExMTUyOTljOWFhMWM5YjliMWUyNGQxOWYyOWUgbGVnYWN5LXRydW5rCis0OTMyIDMwMjA1ZDYzNGExNWI1MjgxMjZhZWJkYWNhY2Y1NmEzNmVmMTYyZWIgbGVnYWN5LXRydW5rCis0OTMzIDcwODlkNDg0MzQwNzJlY2RmNDc5YjA2ZTkzYzI3YzA1N2M3MjFhNDcgbGVnYWN5LXRydW5rCis0OTM0IDExYjkzN2VhMDAyNjRhNWIxZjkzZDUxN2I1YTVkNzhiZDIzMTUxN2MgbGVnYWN5LXRydW5rCis0OTM1IDY0ODQyZTIwNmI3NmNiMTVhOWEwMDMyNjkwNzE4MDBmZjY1NjU2ODQgbGVnYWN5LXRydW5rCis0OTM2IGExN2RhMTMyMmM1NmQ1MTBiNDJkNjA3YWMzNzM3ZDExNWRhOTk4OTAgbGVnYWN5LXRydW5rCis0OTM3IGJkNDc2NTU1YmU0MmE3YWQ3OTlmYTZlMjUyNTY5ZGZlNjU1ZDY3NDQgbGVnYWN5LXRydW5rCis0OTM4IDIyY2QyMmJmNDM4NGU0ZDQ2YmIwNTdlMzc0Y2Q0ZDZjN2VlMTBlZWIgbGVnYWN5LXRydW5rCis0OTM5IDA1MTBiOTQ4MTc4ZTBiYTcwNmI1YTRlNTk1YzE0ZDU5MzU0YmVmODQgbGVnYWN5LXRydW5rCis0OTQwIDUxN2JjZDQ4MjNhYjc4NmM3NGIyZmIxMzcxMGFmZGY1ZmY4NTBjNmIgbGVnYWN5LXRydW5rCis0OTQxIDJhNTc0ZDRiMGQ1OGMyZjBlMzgyYWRhNDZhNDAzNDRiNjU1NWEyNmMgbGVnYWN5LXRydW5rCis0OTQyIGQ2MzBjNmQzNjgzOWFkODg0MjZhZTY3YjBmYWM1YmQzMzExZTVmZTEgbGVnYWN5LXRydW5rCis0OTQzIGZlMzdlZDJjZjdhNWM1NzNiZmZiODIxNGYwMzBkNDg2NDM2Y2IxN2YgbGVnYWN5LXRydW5rCis0OTQ0IGViMTRmMzJhOTdjZGM1YzU0OWU3MmViMWQ5YTM0OTg4YzAyMDljNmQgbGVnYWN5LXRydW5rCis0OTQ1IDgwNzI5YWZmOTA1N2MwZmYxN2ZhYTVhYzcwZGMzYWU2NzkxOWUxYWQgbGVnYWN5LXRydW5rCis0OTQ2IGNkNjRhMzJhYjgwMzJjZjc2YmNiNmZlMWJjYzQ4NmU5ODBjODlhODkgbGVnYWN5LXRydW5rCis0OTQ3IDQ0MThlODU0N2VmY2YxNTBmNzAxYmFjOTQ5ODgwY2YwMWU3ZDYwYTEgbGVnYWN5LXRydW5rCis0OTQ4IGZiOGUwOGVjODhkZDU2MDYyYzFhOTM1NjAyMWFlODE1YWJkMTU2YjYgbGVnYWN5LXRydW5rCis0OTQ5IDRiNTc0ZGI1ZGIxM2YxNzU3NGI2NWM0NjkwYjBiYzBhM2IyYzI5Y2IgbGVnYWN5LXRydW5rCis0OTUwIGQ5NDgxMzU0ZmRjMzYxOTliZTFiYTNiZTgzMmZlODM2OTEwNTQwZGQgbGVnYWN5LXRydW5rCis0OTUxIDVmYzYyNTYyZTZlY2UxNzA5ZGYzYzc5NDYxNTRmNzdlMWVkNzJkNTcgbGVnYWN5LXRydW5rCis0OTUyIDcxOGM2NWQwZTEyZGI0ODY2MWFmNzdiNTc2Y2NkMWMzNjkyMmM2ZjMgbGVnYWN5LXRydW5rCis0OTUzIDYwZTVhYWNlYjNlYjM2Y2EwNGQyNGIxMzAzZDkyMzYwYTE4ZjUwM2UgbGVnYWN5LXRydW5rCis0OTU0IDE1YTg2Njg3ZjgzODA3MTE0NTdiMzJiNjBiNmM5MjRiM2IzMTgxMmEgbGVnYWN5LXRydW5rCis0OTU1IGRkZjYwYmM3ZWQzMDE1ZjczNzg5MmFkOTQ0YzA2OTM3NDZiYmE4YzYgbGVnYWN5LXRydW5rCis0OTU2IGMyMjE5NTdhNjI2ZDdlYzVmZTI2M2VmODc4YWM1OTdlNTZmMTgxYTYgbGVnYWN5LXRydW5rCis0OTU3IGYyMTdjMWIyN2Y4Njc2YTVkNGI2NTNhN2NjYmMyNzRiOTkzMTVlMzYgbGVnYWN5LXRydW5rCis0OTU4IGI1Y2U4MDExNDQxNjE1ODc1YzQ5NDM4ZTc5ZDBkNmQwMDg0Y2EyZDIgbGVnYWN5LXRydW5rCis0OTU5IGQ1OTc4MjM4ZTNiYTZmN2NjNzczMjAyZjIxM2E3Mzk1YmI2M2Q0MDAgbGVnYWN5LXRydW5rCis0OTYwIDRkZDFhZjBkZGVmMDhkYjI2ZTI2Mjg0YzMxNjk1YzRlNDczZjdjMTUgbGVnYWN5LXRydW5rCis0OTYxIDQyNTgzNWI4ODA5OWU4MjJiOThmMDkyYWFiZTUxYmE0NWM5ZWNjZWIgbGVnYWN5LXRydW5rCis0OTYyIGU5MjBlNmMyNzIwODIxYzFjMjZlYWY4NjAyODZkZTdmNzEwZDQwZjIgbGVnYWN5LXRydW5rCis0OTYzIDlkNmU5N2Q2NjY3MDhkNDM3YWJlMjg1YzkxZjQ4MjY1OTY5N2ExZTcgbGVnYWN5LXRydW5rCis0OTY0IDhhYzRjMGUxY2UxN2FkMjliZjdhYzlhMjkxZDZkNjY3ZGEzMWJjYjUgbGVnYWN5LXRydW5rCis0OTY1IDQ3Y2M1M2ExZmQ0N2IzZDRlZWM0OGUzOTJhODkyNzY2YTUwMjg3NGEgbGVnYWN5LXRydW5rCis0OTY2IGM2ZTQ4Mjg3MGVjMzBhZDBjNDNjMzk4M2UxMGYzOTk2ZGJjZDI0YWMgbGVnYWN5LXRydW5rCis0OTY3IGMyOWFkYjMzODk2NGNiN2ZhYzA5NGVlNjA5NmQ5OTVhMzBjNDk0Y2UgbGVnYWN5LXRydW5rCis0OTY4IGM2YTZlMmIyMGJkODNkZDM4YThlMjJlNzE2NTRmNWU3Yjg1MDZmNTYgbGVnYWN5LXRydW5rCis0OTY5IGM2ZjJkNTEyNTFkMDc1ZDc4ZGVhMzc5YjU0YmUyZTFhM2M2ZmIyOWMgbGVnYWN5LXRydW5rCis0OTcwIDU2ZTI1MTE0ZDQzODQ0MzU5YWUwNjRjOTMzZTc4NjgzYjgxMWVkZjEgbGVnYWN5LXRydW5rCis0OTcxIGY0ZGM1MWY3OGE1NmRjM2ZiYjE0MWQ2ZGJkZWI1Y2NiMDQzNjE3Y2QgbGVnYWN5LXRydW5rCis0OTcyIDFjZTllNjdjNjg1NmU4ZmM3OGJhMTc1NTY1MWViNDk5ZTVhM2MwYjkgbGVnYWN5LXRydW5rCis0OTczIGQwYjk4MTJjZDljZjQwNTEzYWM4ZjczOWZiN2ZiMmZiMGRmOTljNWEgbGVnYWN5LXRydW5rCis0OTc0IDJmNDU1NjI3YzFmMGVkNWFmYjI4Nzc2ZDQ5YjViN2I3YmZmZGRlNzIgbGVnYWN5LXRydW5rCis0OTc1IDU1NjIxOTcwOWU5OTg1YmNmZTEyMGVhYTYwNjc0MzMyM2I1ZmQ5NDkgbGVnYWN5LXRydW5rCis0OTc2IDQ5NWFmYzhhZDdiOTY5ZjE0ZTZjMGMyNWIyNGY1YmZlZTgxNzhmODEgbGVnYWN5LXRydW5rCis0OTc3IDg0N2QyNDg0MWM4NTY5OWQxNTE4MmM1MzM5ZGI1NWQzZDZkYjEzMjIgbGVnYWN5LXRydW5rCis0OTc4IGU3ZDQ4MGNmMTZiYTZkZjgxMGFlNjkxMDY5NzYwMGI3ZjY2Y2MyNzcgbGVnYWN5LXRydW5rCis0OTc5IDllNDAxMmIxNzU3ZWI0YjZhNmNiZDkzYTMyYjFmNzc1NzVlNDQ1MTUgbGVnYWN5LXRydW5rCis0OTgwIDhiOGEzN2I3Y2JhNDM5OWI5ODljMDUyOWFjMGQ0MjQxNjFhMGQxZGUgbGVnYWN5LXRydW5rCis0OTgxIDYwMDE0NDhmYWI4OTAzNTBiZWE4M2M2MmFhMjM4NjUxZDVkMWVlZmMgbGVnYWN5LXRydW5rCis0OTgyIDE2ZWExNTFhZWVjM2E0YjA4NmI5M2U5NDdkNjMwNWIxMWQwYTU3ZGEgbGVnYWN5LXRydW5rCis0OTgzIGQxMTIzYjEwY2YyMzcyY2M0ZTNlNWE1NmZlOWMwY2Y2MjhjN2ZkZTQgbGVnYWN5LXRydW5rCis0OTg0IDgxNWRmYWE2YTc3ODc3NzIwNjMzNGE3ZDdjYTdiMTg2NDFjYjFjMjUgbGVnYWN5LXRydW5rCis0OTg1IGFlMmIwMzI0NDVmOTljMzNiMWY3N2IyYjIyMzY4ZDM1YjJiNDMwNjQgbGVnYWN5LXRydW5rCis0OTg2IDE2ZWE1N2MzOGM0Zjc0MWYzMTY5NmEzYzkzZDM1NmFiNmE5ZTBjOGQgbGVnYWN5LXRydW5rCis0OTg3IDFhNWU3ZGE0MDRjM2RhM2IzY2M1ZjVmYWE1Njc3NjgzMTQwYTU5NmIgbGVnYWN5LXRydW5rCis0OTg4IGUzOWJiMjQwYjFiM2E3YTg0NDVkMDAxZWJiYmQ0NjE2ZTFjMGVmOWEgbGVnYWN5LXRydW5rCis0OTg5IDllNWEwOTg0MTc4MTk1OGMyODgzZGJmY2NhNjVlZTY4ZmNjOTkzNjggbGVnYWN5LXRydW5rCis0OTkwIGU1MDZlYzRmYjJiMTBkNDAwZWU3ZjYzOGY2OWY3OWI1MmM2ZmEzYmYgbGVnYWN5LXRydW5rCis0OTkxIDczZDE5M2VhYTkwMGVhNDM4ZTg0NTI5OGZkNzc2ODRiNmE0NzQ1MjQgbGVnYWN5LXRydW5rCis0OTkyIDg3NTE3M2YzZjMxY2JkMjM0NmNiNDc3OTEzYWVlNzVlOTI1ODg5ZWYgbGVnYWN5LXRydW5rCis0OTkzIGExNGZjMmQwNGMwNjI1YTg2NWZmYjQzYmQ4YzU0NDk0NWM5NTA5ZTEgbGVnYWN5LXRydW5rCis0OTk0IDZmY2QwYjAyMmZhNzdiYmU2MmRmN2Y3OTUxNDc3YmZlZDJhMmJmMmMgbGVnYWN5LXRydW5rCis0OTk1IDRkZjAwYjI5NDc3YjdmN2IyNjk3OWI5ZWQzYTFiZjc3ZmI4MTJiN2QgbGVnYWN5LXRydW5rCis0OTk2IDUzNGE5N2M0MDBjYzdkNjBjNTM1Y2ZkMjRlNTQ4NDAxZjMxYWU2YzggbGVnYWN5LXRydW5rCis0OTk3IGQ3YWU1ZmIxZDI1NTA5ODE0OTc4MWMwMWY0OGZlOTU5NzUwNjRjYjYgbGVnYWN5LXRydW5rCis0OTk4IGI3MmNjZjViN2RiYzQ3ZmM4ZDExNjlkYTNkZGEyY2E3MzExZjc5YmEgbGVnYWN5LXRydW5rCis0OTk5IDQ5ZGYxNTc2ZmI1NGU5MmZmMWNiYTEwYTUyY2U1MThkM2Y1NmQ5NmYgbGVnYWN5LXRydW5rCis1MDAwIDFhNDQ4ZGQ4NGVkYzJlOWYzZDIxNDhjYTM5ZGU2Y2E4MjVlYjg2YTcgbGVnYWN5LXRydW5rCis1MDAyIGFhYmJmYjYxZTM4ODg0YjZhMGM0YzMxOWVmYTYyN2Q0ZWFiYWY2ZGMgbGVnYWN5LXRydW5rCis1MDA0IDljYzc3NWZkNmU4NGM1ZjMzODViZWE5MGEyNDdlNzk4MWJhYjkwZmEgbGVnYWN5LXRydW5rCis1MDA1IDU1MzZmY2JhZTgwYWQ3YjAxN2QzMzhhOGZlMjBhMTU0MDBiMjI1ZDMgbGVnYWN5LXRydW5rCis1MDA2IDMyODFhOTMxYTFkOWRjOTc3YmExM2M1MDFhZjQwZDkyYWU0YTVhZTcgbGVnYWN5LXRydW5rCis1MDA4IDJjYWM2YzUwNjZkYTUwOTU5OGFiMDZlZTI5ZTkwZGY2OWJmZmE3MzkgbGVnYWN5LXRydW5rCis1MDA5IDQxOTYwMDA3ODliYzVlMjQyNmUwMzhhNzRlNTIxMjBiNTZmNTkwYmQgbGVnYWN5LXRydW5rCis1MDEwIDBmNmZmNDViZDgxNjc4NzZiN2MzZTQ1M2I2ZTI1NjFlNzY4NjNlMWEgbGVnYWN5LXRydW5rCis1MDExIGM1NWRkZGJmY2Y3Y2U4ZWI2YWZiZjk3Y2Y0ZmQ1OTg4OTUxZjQ5ZjMgbGVnYWN5LXRydW5rCis1MDEyIDdkNzAyMDlmMzU1ZDIwZWMwMWRiYzczYTAyZmIyOWNlOTIzZjIxOTggbGVnYWN5LXRydW5rCis1MDEzIGYzMGJjNDhjNDE3YTIxZDFjYzNiNmU2NmY5NzM5Yzk1ZjM4MDI4M2MgbGVnYWN5LXRydW5rCis1MDE0IGY0ZDI2YTBlMjk3NTE1MWE2ZmVlZDAwZGJhZWQzYzIzNTBmMDQ1MjUgbGVnYWN5LXRydW5rCis1MDE1IGIxODFkZmYyMWIwYjhlOTljZjJjOTQ1Nzk4OTBkNjgxM2E1MWJlNWIgbGVnYWN5LXRydW5rCis1MDE2IGY5YjA3OTE1YTA2MTdkYTBhZTRmYjBlOWJhNTkzNjFjMmNjNDJkYWMgbGVnYWN5LXRydW5rCis1MDE4IDJhYTZiNWFkNDUyMDRlMDcxZGIxZDRmN2MxZTI4MmFiYWJlNTllM2EgbGVnYWN5LXRydW5rCis1MDE5IDM4ZjMyMjVlZmYzMWJkZDM1YmM2MjcwODhmZTcyYmEwZmNmNTBkMGIgbGVnYWN5LXRydW5rCis1MDIxIDNmOGM4YjkwMTU4ZGZkMzJmYmM0OGNhYjQyOTFmNjNiMzZkZmRlMjQgbGVnYWN5LXRydW5rCis1MDIyIDc4N2I0ZGQ2ZjVmM2U2YzIwZTEyZDE3OTRjMTA2OWViYjQ0ZGE2NzkgbGVnYWN5LXRydW5rCis1MDIzIGIwOTJkOTM2Yzg3NWU2NmYxNzRkZDFhY2E3NjEwMWUyZDY5OWJhNmQgbGVnYWN5LXRydW5rCis1MDI0IDM4MjgyMDZjMmRjMGM2MDllNjRhYjZjMjk4M2Q3OWQ5OTc0NTFlY2EgbGVnYWN5LXRydW5rCis1MDI1IDg1YzA4MTk2NjJiN2I0OWJkZGNlNDQ1OTcxYzY4MjBhZjI4YTNiNDggbGVnYWN5LXRydW5rCis1MDI2IDdmYmZmNTJkYjA4Nzc0ZGY5NGQxNDk2YTRlZWZkMGYzMDBiNjJiOTUgbGVnYWN5LXRydW5rCis1MDI3IDkxMjgxM2Q1NzNiNDJmZmEyMjNhOTU3NjZjOGYzNzFkNDQ5YWRhNzQgbGVnYWN5LXRydW5rCis1MDI4IDkxOWM1M2EzNWVmYWVhZDNlOWRmOGUwOTNjYjVkMTI3NmM3M2EzNmQgbGVnYWN5LXRydW5rCis1MDI5IGI1OTYzYzRiNjM5YWQxNDk3MTcxMzZiNmYzNzdhZDMwZTcyNDFlMmUgbGVnYWN5LXRydW5rCis1MDMwIDJjNjE3ODYzMjdjZmYwNTRkMzdkOGI5ODg3ZTBlOGE0MGY2NzFmZjcgbGVnYWN5LXRydW5rCis1MDMxIDdhMzczMzczMjkwMWMxMTllNWY1YTY5MDk4ZmYxNjEyNjNjNjRlZGQgbGVnYWN5LXRydW5rCis1MDMyIDhiZTQwMDJiNTA4NjdjMTg3ZjNiZDBlN2ZjZTI5ZGU1MjI1ZWVjMGIgbGVnYWN5LXRydW5rCis1MDMzIDE4MDc4NjRhNzVmNDcxNDNjYjMwYzQ4NzU4ZGRiNjUwZGViMTNkZTQgbGVnYWN5LXRydW5rCis1MDM0IGFjMTNjYWE3OWUzY2E2MzQyODU1ZTEwM2JkN2U0OWU0YWYwZmYzYzggbGVnYWN5LXRydW5rCis1MDM1IDBiYWViNzQ2YTg1NDAzMjljNzQxMjUxZTM3MDRjMDEyYzA1NjMwNGUgbGVnYWN5LXRydW5rCis1MDM2IGYwYjc4NzJkYTY4OTFjMDVkNjdiYThmYmQ0NGNhYzRlOTBlZTdjYzMgbGVnYWN5LXRydW5rCis1MDM3IDk2NzdlYjEwNWZhZTgyNGRiNmMwODdjZTYwNDcwZTIzNGVlMzIyMWMgbGVnYWN5LXRydW5rCis1MDM4IGY0N2JjNTU1NDQxODVhNWMwOWI2MzM3NDM0NTE5YzE3MDMwMzY0MDYgbGVnYWN5LXRydW5rCis1MDM5IDQ5OGRhZDgwNDVkMzRjODZiZDY1ZWRiNjNiN2VhNTZjYjM5NDcxNWIgbGVnYWN5LXRydW5rCis1MDQwIDBhYzI3ZmZkMDU3OTljM2YxZGQ4NjdiZWNkNTE4MWI4OWE2MWM3OWEgbGVnYWN5LXRydW5rCis1MDQyIGJjNGIzZmRhNmE4MDc4ZGM2Mzc3ZmFhYzlmZDBiMDJlOGEzYjQ1NTggbGVnYWN5LXRydW5rCis1MDQzIDkxYmM5MDdiMWU2M2NmMDgyZjQzNDcxMGVmZDI4ZDdlNzgzMjEzMzAgbGVnYWN5LXRydW5rCis1MDQ0IDRkMjhiNjU1YjcyODcxNWU0MmIzYTBiYTgxZGNmODVlOTE1NGQzY2IgbGVnYWN5LXRydW5rCis1MDQ1IDM3NzBlNDM0NzgwMzg1ZWY5MjY4NTQ2ZDhkODY3YzZkMTRkZWE3NTggbGVnYWN5LXRydW5rCis1MDQ2IDc5MTQ5MTU3MjllM2Q1MjFiNzEzZjgyMGFmYWU2MDQ1ZTY2ZWFhNzQgbGVnYWN5LXRydW5rCis1MDQ3IDRiNmMwNzYyZDY1OWI0ZDYxZTdjMjlkYzViYzMxMzM4MTU2OTg2YjkgbGVnYWN5LXRydW5rCis1MDQ4IDcwNDJhZWU2NDA5ZWZjNzgyMGZkM2QxOGZhNjA2YmIwZGU0NzkzNDUgbGVnYWN5LXRydW5rCis1MDQ5IGFlMTMxYjhiNGUzMTlkYmZjMTNkODczOWI5M2Y1MmVjZTI5MDFkZDEgbGVnYWN5LXRydW5rCis1MDUwIGQ2OTk1NGUxZjVkNDE4ZjRmZGYwZWQyM2Y1MTJiNWZiNTk4YWRiNGUgbGVnYWN5LXRydW5rCis1MDUzIGJiYmYxNzY0MGM2ZmExNWNiYzU5NjNjNzU4MTkwMjVhZjNlZjNkMTYgbGVnYWN5LXRydW5rCis1MDU0IGQ1ZDI3ZGFkN2ZlYWY1ZDZmNTM5YWJlMzAzYTA5NTA5NDZlOTRkZTkgbGVnYWN5LXRydW5rCis1MDU1IDVkMDkzODM1MGFlOGU4ZDg3Y2M4NzYxZmU4YWJkMzdmNjRiMzE0NzcgbGVnYWN5LXRydW5rCis1MDU2IDJhM2U0ODk3MjI2MTJmOTMwNWMxOWU1OWJiNzU4Mjc5Zjg1N2M3N2IgbGVnYWN5LXRydW5rCis1MDU3IDc2M2ViNDc5NzVkZDM5N2U5MzZlNDcyZjdiMDlmNTNjYzllMTdhNzggbGVnYWN5LXRydW5rCis1MDU4IDhkZjU3NGE2NTVhZDZjM2NkNWI4M2UzNDhkODlhMzM5ZTg2MGYyMmUgbGVnYWN5LXRydW5rCis1MDU5IGNlOWE3NTA3ZTFlZmViNzEwMzU2Y2E4ZTU1ZjhlY2JjMWM2NDQ4MmYgbGVnYWN5LXRydW5rCis1MDU5IDA2NWUzMWNmNTg2MmUyNzUyMWNmNTcyNWIwMDNhZWQyMTFmMDkxYjIgbGVnYWN5LXRydW5rCis1MDYxIDMxNzc3NjIyYWU5MzE1N2EyMDEwODEyOTE0OWFlZmNlZmUyYzhlZGIgbGVnYWN5LXRydW5rCis1MDYyIGNkNWE5NmY2MjM5YmRlNDUyYTIwZjc3MTBiZjdhNGJhY2Q5NjJjMWQgbGVnYWN5LXRydW5rCis1MDYzIGIyODFjM2M4NjNjY2FlNGVkYmQxYzY5NThmOWQzM2FhNzAzZGY3MzAgbGVnYWN5LXRydW5rCis1MDY0IGJkYjYzYTc5NzU1NTU0Nzg0MTkyNDAyYWZmY2JjZTQzN2E3MTE0YmEgbGVnYWN5LXRydW5rCis1MDY1IDU4OGNkNDM0M2VlZDFmYzI3MzYwOWY3MDQxMWEwM2M4NGM2NTVmYjggbGVnYWN5LXRydW5rCis1MDY2IDM1MjMzNjQwNDc5YjJlYmM4YmIyZDgzZGQ3YzU0MzQ5MmY3NzZlNTQgbGVnYWN5LXRydW5rCis1MDY3IGJlZTJhZWQ0MTZkNjI0NDI3YWQwYWY4Y2EzYzM2ZjIxZGExY2Y1MWEgbGVnYWN5LXRydW5rCis1MDY4IDQwODRlY2YyNzZjZjBmNWU0NmM4ODIyZjA2YWU0MDM2YjYyYzE1NTIgbGVnYWN5LXRydW5rCis1MDY5IGM1MmI1YzliZTdlMjE3ZjQyNDIyMWY4ZTI1OWM5MGM5ZjU3YTE5MzggbGVnYWN5LXRydW5rCis1MDcwIDI5YjkwYTg2YWM5NmQ4Yzg4YzMzZjJjZGUyNTUwN2FjYmMyZGMxODkgbGVnYWN5LXRydW5rCis1MDcxIDE3YzkyNWYwMDYwYjhjNzE5NjU5ZWI2MGJkMGU4NzYwY2Y4ZTFiZDMgbGVnYWN5LXRydW5rCis1MDcyIDFjODE0NzgzZWZjMTg1MDBhMzAyMmZmNTdhMzdlZjdlNWE2NDRiODQgbGVnYWN5LXRydW5rCis1MDczIGVlYWMxNzBmNWYyZmY4MjU4YzY5ZDg4MjM3YTVhN2ZjOGM2ZTk4MWUgbGVnYWN5LXRydW5rCis1MDc0IDdlZjcyODczZTRkNjg3NDdmNTI2Yzc4ODk4YTg5ZWVkMzk4Y2JmY2QgbGVnYWN5LXRydW5rCis1MDc1IGIwMjU3M2VlYjE4MjhjNjgyMmRiMjhhMzUxY2VhYzU3ZTZjYjFjYmIgbGVnYWN5LXRydW5rCis1MDc3IDAxNjg3Y2U0MzcwODJhNTViN2VjZjAwNjQzMjgwMGZlZjU1NzRjZWMgbGVnYWN5LXRydW5rCis1MDc4IGNhNmI2MGQ0ZWE5MDYzN2M2NzZiMTAzMDAwODBhN2NlOTRhY2QzY2QgbGVnYWN5LXRydW5rCis1MDc5IGIzNjhiZTdiMDYyYTUzMDJhMmQwNmI5M2U0NjdmNzJmMGJhOGM5N2EgbGVnYWN5LXRydW5rCis1MDgwIGY3MDQ5ZDQ2NTM2NTc2OThkOThkMTIwZWZmYjFhZTVhZjYyZDAzNzQgbGVnYWN5LXRydW5rCis1MDgxIGJjMzI2MDc0Zjg2MTRlODFiNWJkZjM5ZjA5ZjQ0YTI5YzljYTgzMzIgbGVnYWN5LXRydW5rCis1MDgyIGE5MmRkZWQ0YTdjNGRjYzYyNGE2ODBjMDA4ZGViNjhjOTdhYmQ0ZjMgbGVnYWN5LXRydW5rCis1MDgzIGVkMzBiY2ExODRiYjgxZTIzYThmYWE5ZDliZDgwYmNkZGRhMDQ2YzEgbGVnYWN5LXRydW5rCis1MDg0IDZjYzYzN2M2MGNlNjYyYWZlY2EyMjgyM2Y5NmE2YTJmZTBmYWFkN2IgbGVnYWN5LXRydW5rCis1MDg1IGRhNDdiNDE0NmE3Yzg3Y2VkNGNhNDg0ZDZmNTM2Y2ZjMmY5Njk5MjggbGVnYWN5LXRydW5rCis1MDg2IGJkMDVkY2VhN2IwOWNkNzQ3NDk3Y2VjM2JlZTYwNzIzMjQwOTUyZGYgbGVnYWN5LXRydW5rCis1MDg3IDJmOTEwMmY1NzE0M2YxZDZmZDQ2MmJkOTU4ZTVjNWYxNGMwOTI3NTQgbGVnYWN5LXRydW5rCis1MDg4IDYxZTNiNjBhZWM0NDE5ZGFlZDFlODFmM2YyNjdiNmJmNjJkYTk2NTggbGVnYWN5LXRydW5rCis1MDg5IDgzMDE4YWE5YjE3Yzk1NmM1NDg2OGIzMzY0YTdjMTRhYzQ2MzRkODkgbGVnYWN5LXRydW5rCis1MDkwIDYzNDFhNGMwMDgyYjM0OTM3NTE3MWQ1YmYwOTljZGE2ZWIwMGQyMDYgbGVnYWN5LXRydW5rCis1MDkxIDVhMzM3MTMyMDk3NTQ1ZWFmMmVkMmY1ZmI0OTQ3OWIzNGZkODhhZWIgbGVnYWN5LXRydW5rCis1MDkyIGRiYjQxNzEyMTY1YmU0ZmE0MmYwZGU3ODcxMTJkY2IwMjEyMDJiZmEgbGVnYWN5LXRydW5rCis1MDkzIGU5ZWEwNTcwMjY3NmU3YmM4MWRhNjU5OWMxM2YzMjBiOGU1NmMwZjggbGVnYWN5LXRydW5rCis1MDk0IDdjOTJkNDRmYTZmY2E1MTBlZTFhOTk0ZTk4NjY1ZTQ0MjYwMjEwZTUgbGVnYWN5LXRydW5rCis1MDk1IDE3NTY3MWNjMjFkOGM2NDRjZWQxN2RiN2NhNzI1NDgxYTRlY2I5YTQgbGVnYWN5LXRydW5rCis1MDk2IDZjODlkZjU3NmQ5MWFmYWRjNzM3MWNjOTNkMzk2OWZjNzMzYzcxZTkgbGVnYWN5LXRydW5rCis1MDk3IDkxMjMxN2EzN2UyYjM4NTYxN2ViYWZkZGY2OWNmM2EyYTEzMjcyZWEgbGVnYWN5LXRydW5rCis1MDk4IDc1ZTllNTZiNWY5YjFhMGRlM2UwMjRlZmI0NmQwOTNlZjJkZWViZGUgbGVnYWN5LXRydW5rCis1MDk5IDIyOTEyZjNhODg5ZjEyZmY2MDc4NjA0MzdkOGE0MDJmZDFlMjE0ZGEgbGVnYWN5LXRydW5rCis1MTAwIGY0ZWYzYjIxMjZlYmNiZGQ2NWI2Yzk2NTE0NGZiMzBmMmE0NjExYzUgbGVnYWN5LXRydW5rCis1MTAxIDZmMzk2Y2U1MjU1ZDA4ZjFhNmUzOTBkYmY4YzNkZGI0NmE0NDU2YWIgbGVnYWN5LXRydW5rCis1MTAyIDY3ZmY5ZjQ3YWIzNmZlOWI5ODAxZjc2YzlmNDAxZDAyZTc5MjlhYjkgbGVnYWN5LXRydW5rCis1MTAzIDQ0MDg3ODE5MTQ4ZTI3NzY3ODhjZThiNjZiOTUwMjllM2VkMDY1ZTggbGVnYWN5LXRydW5rCis1MTA0IDY4YzdhMGE2MWZkNTgxYzA3NmNmOGZmOGQxZWQ4ZjhlMjM3MTczZDkgbGVnYWN5LXRydW5rCis1MTA1IGYxMWJhOWNjMzQyZjI4MGNhYTg3ZmMxYzE5OGFhM2NlYjE1OWEwZTAgbGVnYWN5LXRydW5rCis1MTA2IGY1YzQwODY5ZGExMDY1OGVjMTAzMTcwYzdjMzk2MjQxODAwMzQ1MDEgbGVnYWN5LXRydW5rCis1MTA3IGY5OGEyMjMzYjMzN2I0OTUzNDU4YjdkY2RjZDU2NGE1ZDIzZTQ1ZjcgbGVnYWN5LXRydW5rCis1MTA4IDUxMzRjMDA5ZTFhNGZlNTgzZGQ5ZTBlZTdhNzE4NjhkODcwMTRiNmMgbGVnYWN5LXRydW5rCis1MTA5IGQ5ZTRjYmJhOTU4YzA2OTE4ZmUxNmZhNmFjYmZkZGQxNjhjMzRhMDEgbGVnYWN5LXRydW5rCis1MTEwIDdjNjljNGFlY2IzOGNiNDU1ZTczOWJmMTkwNmUyYjI3NzE2N2YwZjYgbGVnYWN5LXRydW5rCis1MTExIGY4NzZjZDVjNDQxN2Q3NTAwOTVkODAwOWY3YzJkYzhmMTVlMjVlYjAgbGVnYWN5LXRydW5rCis1MTEyIGRlMjk3Y2RlYTM0ZWU2NTBlMjFlMmJlZDJlMGFjYmI0Y2Y2ZmNjM2EgbGVnYWN5LXRydW5rCis1MTEzIDliN2U2ZDlhNTI4ZGE3Yzg4ZjNmODg4YTY0YjBiODU4YTA0ZjRiZGIgbGVnYWN5LXRydW5rCis1MTE0IGI3ZThiYzAwMmEyNDMwY2JjZjQ1NmY2ZTc2MTgyOGZhYTNlYjkzZTkgbGVnYWN5LXRydW5rCis1MTE1IDA2M2E5NmI0OWIzZTYyYTk0ODIxYmYzNjc0NGRlNzFiOTkxZTZlMTAgbGVnYWN5LXRydW5rCis1MTE2IDYwNmEwOTdkZmQwMDJjNGEwODZiMTUxZThiMjI3MDFiNzQwNmFjNzMgbGVnYWN5LXRydW5rCis1MTE3IDg0ZTIyNjBkYjE3OTliMzUwYmIyODk2NjgzNGY5Yjc2NGIxN2UxZmEgbGVnYWN5LXRydW5rCis1MTE4IGQ2MzUwYTMxODk5Nzg4MmM2OWZjNzZiOGM4NTk4YTY1M2Y2OTZmMWQgbGVnYWN5LXRydW5rCis1MTE5IGUzZWNjNDAxODk4OWFlMzgxMWI3MmFkMWIzY2QxZjUwZTRjYzVlNDUgbGVnYWN5LXRydW5rCis1MTIwIGY0YjNkNjhjNzEyNDQyY2M3NGI4NTU4MmU1NWIzMTM1NWFjNGNkYTMgbGVnYWN5LXRydW5rCis1MTIxIGRiM2RhY2UyNzhhYzAxODhkZWVhYzAwYTE5YzQ2NmE1YzdiMWFhODYgbGVnYWN5LXRydW5rCis1MTIyIDljZjYwNGEzNDExZTk0NWI5ZjRlNWQ2MjNmYmJiYjZiNDFlMzc0MDQgbGVnYWN5LXRydW5rCis1MTIzIDg0MWY3MmRjNTQ0MjRiM2RlZjM2NjBiNWQxZThmMjM0MjM2MDY1YTIgbGVnYWN5LXRydW5rCis1MTI0IDNhM2RmMjMxMzI3YzFkMDY3MTQ0MDgzNTYwMWM4YTRkZTEwY2YyNTUgbGVnYWN5LXRydW5rCis1MTI1IDI2NmFkMTMyODdhNGUwY2E1OThjZjIyODE1ZWIxM2RmY2ZjODY5YmUgbGVnYWN5LXRydW5rCis1MTI2IDRlYjZkZGI5ZTk2MWM5YWI1YmEyNmExMWQzZDEzYTllNDZkZGE1ODEgbGVnYWN5LXRydW5rCis1MTI3IGI0ZmQ0OGUzYTNiODliMmFkOTRmZTc5NTViZjZjYzkxYTYyNDk5YjMgbGVnYWN5LXRydW5rCis1MTI4IGRmM2UxZTUyMWZlNjVkZTNmMGQ3Y2IzMDZkZGU3MGMyNWYyZTNiYTUgbGVnYWN5LXRydW5rCis1MTI4IGU3MjI1N2U2NTU0NTRkNTY5NDY4ZGE4YjExODllMGVjMzM2ZjM1MzYgbGVnYWN5LXRydW5rCis1MTMwIDUxM2YxY2I3MGNlNmE5ZWNmNDI4YTdlOWE1MzI0M2MyOWMzZWFhZTAgbGVnYWN5LXRydW5rCis1MTMxIDJmOGU4YjYxMjlmNzNhYzdhMjYzM2ZkMjg0M2FkZDdiNTIxMDFlZDMgbGVnYWN5LXRydW5rCis1MTMyIDQ5MTgzOTM4ZDA3ZTk3YjRjM2NlMmQ2NTU0OTE1ZmJjNjdmYjhkN2MgbGVnYWN5LXRydW5rCis1MTMzIDBiN2UxNGJiNTRhZTBlZWYxMDdiOTgzMmM5ZTQ4ODkwMjU2OWYwNjAgbGVnYWN5LXRydW5rCis1MTM0IGUyZGQ3ODE5NzU5NmJmZDE4YmYzY2RiODlmNDFiZGQwZDRjNzYyZGQgbGVnYWN5LXRydW5rCis1MTM1IDM0ZWVmYTIyNjcwOWFhOGVkYWFjNmRmNGJkNGQzZjZmY2Y5NzhlNTggbGVnYWN5LXRydW5rCis1MTM2IGM5NDU3MzVhNGFkNzBmNDIwMjE4NWMwMmJkYzcwNThhMGVlNTQzMjggbGVnYWN5LXRydW5rCis1MTM3IGQyNDE5MGM2NWI1MWYwMzQxZDc5MjVlZWM5ZWRkNzNlZmZmZTI4N2YgbGVnYWN5LXRydW5rCis1MTM4IDBmYjY1NTIwZmNkMDEyYTc1MDUxZTVjMWRjYTBkOTMwZWM1YjY1YzEgbGVnYWN5LXRydW5rCis1MTM5IDRjODBjZjAyZDE1NDBjNzg5NTA0MWRlNjY4MDBlOWE3Y2ViYmQxZjMgbGVnYWN5LXRydW5rCis1MTQwIDQ5M2I4NzFmMzc3NTQ3YzZjZTNlYmM3Nzc1YjY5YzlkZGViZjYzYWUgbGVnYWN5LXRydW5rCis1MTQxIDMxODE3MmZmMmYxNGM2OTc5YzA5NjZiOWZlMzlkZjFhZTA1YzAxNmQgbGVnYWN5LXRydW5rCis1MTQyIDEwN2MxODAwOTM3ZTNmNDcxZTM5MzJlM2YyNDY0YmNjMGNkY2VjODUgbGVnYWN5LXRydW5rCis1MTQzIDBiNmM4YTdlOTMzYTY2ZWVhZmI2NWE3ZWRjYjY2ZmUyZWVjMDZmZTEgbGVnYWN5LXRydW5rCis1MTQ0IDBlOWNhZTBiNTA3MmQ2ODgyMGRkMDlmNDk3YWMyMWJlZDMyYmVjNDkgbGVnYWN5LXRydW5rCis1MTQ1IDllOWYyMmRiZWQxYWYwNGUwOTc2MTBkYTYzOWMzYzI2OTAyYWI2ZmMgbGVnYWN5LXRydW5rCis1MTQ2IGQ0NjQ0ZDM5MmE4ZmU2OGM0M2IzYzQxYjRjNDA4ZjliMzg1NGJkOTQgbGVnYWN5LXRydW5rCis1MTQ3IDJkOWIxNjUyNzI0N2RjYjNhMzU3YjBjMGUxOGQwMjZkYjVmYWJhMzQgbGVnYWN5LXRydW5rCis1MTQ4IDY5MGU0NmYwYmY1OTg1NWZjYzg5OTI2NjllZmMxMDY1YzQ1ZmU1NzIgbGVnYWN5LXRydW5rCis1MTQ5IDFhNDgxYTc1YWY0NWYxMjkyODYzM2EyMDA3ZjIzODVhZmM3NmYyMDggbGVnYWN5LXRydW5rCis1MTUwIDg5MjkyZjZhMjU4ZGNjZmU3YzI2OTRhZTY4Y2ExMmQwOWY1MjJmYjMgbGVnYWN5LXRydW5rCis1MTUxIDIxMDgyMWZkNTY1MDk0N2FkMDA4YzY0ZmJhOTBlZDBhNTZiZGVjNmQgbGVnYWN5LXRydW5rCis1MTUyIDRiNTdhZjFiYTI5NzEwNmNkN2VjNThiNDAxOGQwZGM0ZmQ4ZjE5YzkgbGVnYWN5LXRydW5rCis1MTUzIDliZGMyN2QxNTFiYWE2YjVkNGJiMGI5NjU2MTc2ZTk5MzNkOThiZGYgbGVnYWN5LXRydW5rCis1MTU0IDM0N2NmMGU0OTJkODExZDUwYzVjMjgwYzdmNjUwMTMzOWQ2YjhhNWQgbGVnYWN5LXRydW5rCis1MTU1IDczMzVjNWIzYjQzYmQyNDRiMjkxYTVhYjhiYjlmNTQxMzA3Njc5ZDQgbGVnYWN5LXRydW5rCis1MTU2IGMxZjQ4ODU4ZjE4NjBmYWMzMGU2NTU4NTVjYjA5ZTYyZTA0MzI1YTIgbGVnYWN5LXRydW5rCis1MTU3IDkyNWQxYmZjZDkyNTkzZDBhYWE0NjA5ZTYyMTM5ODIzN2Y3OTkwZWQgbGVnYWN5LXRydW5rCis1MTU4IGUxZDIzYTZiOTMwYjgwN2E0N2VkMGJmMzkxZDlhMGE0M2I1Yjg4NWYgbGVnYWN5LXRydW5rCis1MTU5IDFhZjkyMjBjNmQxOWQ5NDZmMTdjYjliOTliMjhlMDRhNGY1YmI5MGUgbGVnYWN5LXRydW5rCis1MTYwIDExNTdlMTQyNzBkNjg3NjlkNzg5NTliNzEyZjViNTEzM2JjYTUzYmIgbGVnYWN5LXRydW5rCis1MTYxIGUwMzkzNjU3ZmZhNDc3MWRkM2FlZjRkNzgwZmQ1MjE0MWU1YjE5NDMgbGVnYWN5LXRydW5rCis1MTYyIDA2MjM1ZmRjMWFhZjNiZGM3NTY2NzBlZmVmYjY5YTE0ZTBmMjAwMDkgbGVnYWN5LXRydW5rCis1MTYzIDNmZmIzMWNjOGE5YjNhMGZhYzNhZTQ4OGQzNDQxMzM2MDVjMjQ3ZmQgbGVnYWN5LXRydW5rCis1MTY0IDUzOGFiODJmOTFhNzI3NTQxNjQ4MDRjYjNlODM5ZDU0OWYwNzdhNDAgbGVnYWN5LXRydW5rCis1MTY1IDZkOTNiNGEwZjRjZTdjN2U4YzQ2NzgwYjJhOTUzODg5YTc5YzQxMGEgbGVnYWN5LXRydW5rCis1MTY2IDJmNDJlMjczODJlOWQyMzY4YTNmNWYzZDgwMGQ5MjZlMTgzMjE1NTAgbGVnYWN5LXRydW5rCis1MTY3IDEyZDhjODM4NTczNWZjYWIzZmI1OWI2ODMzZWU0MDRkYWQ3MzM3NzIgbGVnYWN5LXRydW5rCis1MTY4IDE5ODZiODY5ZTNhMTMxMjJiMDdhOWQ1NTA2NDJhMWUwNWEwYjgzYTQgbGVnYWN5LXRydW5rCis1MTY5IGYxMmZmMTMwZTBiNWY0MjU0NTlmMGU3MGI2NjE1YzBkZTQ0OTI0ZGEgbGVnYWN5LXRydW5rCis1MTcwIDc5NzNmNTM4NzI2Y2FhY2ZlNjc2NzRlOTljN2E0MGExZGZkNjc3MjMgbGVnYWN5LXRydW5rCis1MTcxIDllZDQ1ZGJmMjc2NThhMGFmODliYzVjMmI0ZjYwNGJmZWVlMjcyZTMgbGVnYWN5LXRydW5rCis1MTcyIDRlMDc2OTQ0NDg4YWFiODRlYjNiOGIwMmE3OWY4YjEzNjBiM2M4MDAgbGVnYWN5LXRydW5rCis1MTczIDEzMDZlNzYxYTYyMzgzNzQwYTU5ZjYzOWYxODc3OWRiYjhiNjgwNGIgbGVnYWN5LXRydW5rCis1MTc0IDM3M2MxNjM3ZDMwMTA0ZTdjYWZlZTFkMjFmNTYyMGVkMzQyMDRiMjcgbGVnYWN5LXRydW5rCis1MTc1IDUwMDMyMzQzOWViMzliM2Y3MDBhNDg5MzcxZDIwMWIxNTQ0YTgzMTEgbGVnYWN5LXRydW5rCis1MTc2IGI2ODllNmY5MmYxN2ExMTEwMDExMmUzM2MxMDQ5ZThkNjdkNWNiODIgbGVnYWN5LXRydW5rCis1MTc3IDlmZWIwYjBiNTBiNjBjNDBmZTc1MjUyNDMzN2M0NmJkNDVjYjI3MmMgbGVnYWN5LXRydW5rCis1MTc4IDc0NzQ3YmZmYjZhNGQyN2M4NjQ5MGEwZGE5NjI4ZWY1NDg4MmIwYWUgbGVnYWN5LXRydW5rCis1MTc5IGNkOWQ4NmVjYzE3NTI5NGM2YzE5ZDg5M2QxNGIwZTRlY2I0ZmMwMDYgbGVnYWN5LXRydW5rCis1MTgwIDc1YWZhYWM4NTU2NzA3Y2YwM2Q1N2Y5OWM1NTY3MWI0YWQ0NDZmNGYgbGVnYWN5LXRydW5rCis1MTgxIDJhMzE4NzZmNzEwMjk5MDU2ZjAyYjEzYzg3MDg1YWU2YjgwOTEzYmEgbGVnYWN5LXRydW5rCis1MTgyIDE5YjExOTVhM2FmODQ3ZTFhOTZkNjQ1MjlmMzhlM2U1ODUzMmI4NzkgbGVnYWN5LXRydW5rCis1MTgzIDZjODY0YWQ1MTlhMzY4NGFmYTNiYzcxOTdkYjVhNDQyZTJiMjEzNGEgbGVnYWN5LXRydW5rCis1MTg0IDg4OWM2ZGE3YjRjYTUxMTlkZjdkYWYzMDI0MzZmNmI0NDJiMjRkMGYgbGVnYWN5LXRydW5rCis1MTg1IDYyNjdhNWYyMjJiZmRlZDVlMzkzZTlhOGJkMWZhZGRkOTNlYjM1MjUgbGVnYWN5LXRydW5rCis1MTg2IGFiZjExNmRiNTIzZmU0ZGI5YjhmYWYwMjM2NDA5NTBiMTQ3OTI5YWIgbGVnYWN5LXRydW5rCis1MTg3IDM2NGQ0YTUyNGNlYzgyMWRiY2U3M2U2OTFjNDllYTJlY2M3YzgyYWUgbGVnYWN5LXRydW5rCis1MTg4IGE1Y2ViM2U5M2ZhMTI3MzVlZjFhMTBjZjI4NWZjMzc4ZTY1NjU4NzUgbGVnYWN5LXRydW5rCis1MTg5IGEwZmM5NGIzYmIyMTI3MDQyYTFkMGM2YzVhMzhhZDhmZmRiODE1ODAgbGVnYWN5LXRydW5rCis1MTkwIDZhOWVjYjA1YzY3OWVkOGM0YmM1NzBkN2JmYTlkZTU4NzJiZmFjNjIgbGVnYWN5LXRydW5rCis1MTkxIDgyMjIwNDFmNWE5MWQ1NDM4NDg5OGE1MmQ0N2MwODNkMjdkYWUyZGUgbGVnYWN5LXRydW5rCis1MTkyIGQwM2NjYWUxNzBlYWYyODI5Y2Y4M2JkNDllNjdiMzM1NGMxYzViMjMgbGVnYWN5LXRydW5rCis1MTkzIGU4ODBjMDE2NGFlY2UyMjZiNjRkNjY3MzJhM2M4MTQ0NzhjN2Y5NDYgbGVnYWN5LXRydW5rCis1MTk0IGMyNjdlMzMxMjAzMDhhMmFlMjE5YzU3N2NjNTZlZmNhMjA5MjNhNTcgbGVnYWN5LXRydW5rCis1MTk1IDVhZjZkYjFmNmMwY2RjNDJhZGNiNTA1MWYyZWQwOGY1NzJmNmY3M2EgbGVnYWN5LXRydW5rCis1MTk2IDEwZTEwNWU0Y2Y5YzNiOGYwNDUwYWRiNzhhNDc4MGYwZWYzODg4ZGUgbGVnYWN5LXRydW5rCis1MTk3IDlmODJhNmJiMDAxMGRiNjJjYjg4NTA4ZTllNzcyOGE1ODEwYTQ1ODIgbGVnYWN5LXRydW5rCis1MTk4IGRhYTE1MGIzYTZlNDNlMTJiM2UxNTliNGU1MGM5NWY5NWFkNGRhYzYgbGVnYWN5LXRydW5rCis1MTk5IGRjNjRkZjdmMWFkNjkwMGY1NjFkNDJmMmUzMDkxZTk5ZDg1YzIyMjAgbGVnYWN5LXRydW5rCis1MjAwIDY4NmY0YmZiNGRhNjIyODljMDdkZTJkMGExMTRiNzVjYjM4OWZlNmMgbGVnYWN5LXRydW5rCis1MjAxIDkwMjQwZTgxOWJlY2I5OTFjMjY4ZTMzYTg3MzczNTliNDJmY2VjMGEgbGVnYWN5LXRydW5rCis1MjAyIDM3YzQ4ZmRlNjFiOGVkODU2MmU2MzUwOGE1YWQ4MDI0M2JkMGJkYWEgbGVnYWN5LXRydW5rCis1MjAzIDNjZjg5NmQyNGU1MGRiYjRmNzQwMmExMzVlMDVmOGNmYjU3NDY2YmQgbGVnYWN5LXRydW5rCis1MjA0IDdkZjZmY2I0MjZmNTE0NzliOWUwNTc0ZTZlNWRkZjhiY2RlYzM0MGMgbGVnYWN5LXRydW5rCis1MjA1IDgwYjVjODIyNzJhMjVjMWVmODUxMzE0ZTFiZjkyZDI4NTk0NDZhZWEgbGVnYWN5LXRydW5rCis1MjA2IDNlMzcwYTRiMTAzYmUyMDc5YzdlMmI4YmRiNTU1MGY4YWVhNzk3MzUgbGVnYWN5LXRydW5rCis1MjA3IDk4MmE1YmQ2ZDQ2ZDA3NjcwZjIwOGI4YzNmMzVkMDgwZTdmZTJlZDEgbGVnYWN5LXRydW5rCis1MjA4IGE4Mjc4MDFlZDk2MzM4NGVhYjE2ZmRmZTBlZTNhM2MxOWMxZmJlOTggbGVnYWN5LXRydW5rCis1MjA5IGYxODc5YjFhMmMyYWU4ZGI3ZjM5NTA4Y2JkMDA5NWI5NGE4MDlkZGQgbGVnYWN5LXRydW5rCis1MjEwIDRmMWIwY2M3MzUwN2Q2NzI5NTk5NWM1OTBlNjA1NGEwMTg0YmVhZmQgbGVnYWN5LXRydW5rCis1MjExIDNkNWVjMWMyMjA1NTAyMjE1NmU4ZmVlOTMwNjM1ZGRlNjMwOGIxNDQgbGVnYWN5LXRydW5rCis1MjEyIDg1M2M0ODY4OTNiODJjZTk1Y2VjMTBiZTRmOGZlYTdkNGU0MTQ5MGEgbGVnYWN5LXRydW5rCis1MjEzIGU0MTY2OWExZGVhMDI0ZDliZGUwMjJjN2YzYjU5YjNjMjUwZTMzNzUgbGVnYWN5LXRydW5rCis1MjE0IDM5Y2QyNTY3OGI0MWFjZDQxNjQzNmUxOTBhZWZkMGE1ZTQ3NzIzYmQgbGVnYWN5LXRydW5rCis1MjE1IDk1MTZiYWQ5Nzk2MTMxMjllZDYwZjA3MWIzNjk3MDI4NjI2MTM2MTggbGVnYWN5LXRydW5rCis1MjE2IDBhZjAxZjNlMDZjYzllNGEzMzU1Zjk1NTUzMWVjMmRmOTJkZjZkYjEgbGVnYWN5LXRydW5rCis1MjE3IGFlNjQwMDNiMmE3NTY1MWM0ZGU3YWJhMGYwZWE1NjdiMDJjOTI1NDkgbGVnYWN5LXRydW5rCis1MjE4IDM1NGViZGRkMzYyYjA0Yzc2Y2UzNzUyMTg5OGZmZGUwYmZlNjgyNDMgbGVnYWN5LXRydW5rCis1MjE5IDRiNzRiM2I0MzI2OWI3MWY0YjY2MGY4NWJiZWMyZDMzNmFkZGY1ZmQgbGVnYWN5LXRydW5rCis1MjIwIGExMDg3YWE2NDFjZDk1ZjBmMDgwM2YwMTQxNmViMDJlN2MwOWM2MTkgbGVnYWN5LXRydW5rCis1MjIxIDQzODlhNjBmZWRjZTY2MWZkYWI3NzAwNzFmOGE4ZTQ0ZjljYjI2OGIgbGVnYWN5LXRydW5rCis1MjIyIDUyMTU2MzUyZmRkNmQzNWNkZjlmMzI0YThkYzg1YzlkODUzOTIwZTggbGVnYWN5LXRydW5rCis1MjIzIDZjZmQ2OTU4NTYzNmYwMmVmZWMzOWFjZTM1ZmMxNGJkOGI4MTIyZDIgbGVnYWN5LXRydW5rCis1MjI0IDY5YWJhNmQ5ZDM3ODM1MjZlMzRhY2Y3NGQwMjBkMjhlNmVmODZhZTUgbGVnYWN5LXRydW5rCis1MjI1IGFhZjkwMmNkZmRjNGEyYTJkN2JhNWIzMWVkY2NhOTkzNWUwNDQ5MGIgbGVnYWN5LXRydW5rCis1MjI2IDFiOWU5MDM1MzUyOTExOTIxNjEzM2JmMTJmYzA0YjczNTg0NzU5YzYgbGVnYWN5LXRydW5rCis1MjI3IGI0MGNhYmZkYzkxZGUyNWJjZWZlY2YyNmQ4YTc5ODJmYTQ2YjE2MjcgbGVnYWN5LXRydW5rCis1MjI4IGJlMjFjM2UwY2MwM2Y0OGViNmFhNGEyMGFkNGM1YzQxMDE2MmVhMTMgbGVnYWN5LXRydW5rCis1MjI5IGI5NTQ4OTYwZjk0NTBjOWFkMDliZDdiZDNjYWI5Y2ViOWYzOTFiMzcgbGVnYWN5LXRydW5rCis1MjMwIGFjNmM4YjEyMTllNjcxY2Q0NTVmOTc4NWE1NTQ0NjBhZTJkNmU0MWQgbGVnYWN5LXRydW5rCis1MjMxIDZkOGQ5ODFlZjZjNDE1MWMzNjY4NjVkNjFiNDVkNGM2MDQxOWU5ZWUgbGVnYWN5LXRydW5rCis1MjMyIGZlY2M5MzlmNGQ1OTU3Y2ZiN2IxZTYwYjVkNTQxYzVjOTk3ODFmMjggbGVnYWN5LXRydW5rCis1MjMzIDhlY2U5MjI3ZmRlMTA0ZDlmZWQyYWEyN2MzMDhlYjJkMjlmMDk3NjIgbGVnYWN5LXRydW5rCis1MjM0IGEwYTRhZmEzOWQ3YTAxY2Q0ZjM2NWE0YjhiZWJkMTVlOTg4Y2U2OGEgbGVnYWN5LXRydW5rCis1MjM1IDZhMTY1NmRiN2RkZWVjYjU5ZjlmZmYyY2VkNmE2MjYyYjk1NDM0MTAgbGVnYWN5LXRydW5rCis1MjM2IGRjMmFkZjc5ZTUyM2UxMDJlYzU3MmZlOGM0NzQ3OTQ1NWY2NDE0YjcgbGVnYWN5LXRydW5rCis1MjM3IDBlNWRhZmI4NWZiZDJiYjYzYjcyZDI5ZmViOTdlOWE2NTk4OWFjZTAgbGVnYWN5LXRydW5rCis1MjM4IDM1NDMyYzlhODc0ZTJjMGQxYzZmZWU5NmNlNGI1ZTdkZWYxMjYxNWYgbGVnYWN5LXRydW5rCis1MjM5IDFhM2ZmMDE0OGRlY2Q4ZmY2NDY3OTNlNGE2NTVhMTY0Mzg3NTY5MDkgbGVnYWN5LXRydW5rCis1MjQwIGI3MzVkMzM4NjY1MWEwNTdkN2IwYjhjOWRkNTZiMjMwMjQ5ZThlYmEgbGVnYWN5LXRydW5rCis1MjQxIGZkNzc3YWY2N2MyMzEwZDNjY2E5MTgzMmU0OWVlY2FmMDAyMzU1ZWYgbGVnYWN5LXRydW5rCis1MjQyIDViYzBlZGQ1YjNmOTMyYjQ3ZDQ4ZjYwMmRhZmZiMjY2N2Y4YjM2ZWYgbGVnYWN5LXRydW5rCis1MjQzIGJmMWRlZDc1OTYyZDYyMDYxNTU3NWRmMTE2NGU3OTc1YWE5Zjg1NjAgbGVnYWN5LXRydW5rCis1MjQ0IDE3ZmRlYzJmYjMwOWE5MWViMWFlZWNmMTU5NTgwMjM4YjgxNDdkYWQgbGVnYWN5LXRydW5rCis1MjQ1IGFmN2QwZmVhM2ZiMmEyYzJhZTFlMjA0ODc1ZWVkY2ZhNmRlZTM5NmUgbGVnYWN5LXRydW5rCis1MjQ2IDQxMTNmNGZiYWFlNTM3MjAyZDA5YTE2ZTI5NGRiOWQ3ZmFkM2NiOGIgbGVnYWN5LXRydW5rCis1MjQ3IDEyMDNlNTg0MjI1NWNlNjRlZjJmM2JhOWZhMjc2MTQxZTI5NDM4YjcgbGVnYWN5LXRydW5rCis1MjQ4IGE1ZDM2MWUyYjJlMjBjNmQwYmNkNTA1OTNmYzgxNGI4OGE0NjJjNGMgbGVnYWN5LXRydW5rCis1MjQ5IDllYzQ0ZTM3ZjZiMTMzYzM2YWM4NjdiZTMwNDQ1YTJhMmMzYjE1OTQgbGVnYWN5LXRydW5rCis1MjUwIDNiN2ZhNTZhM2I5YmNiZmI2MzIwMTczOWQwODc0NmNmODVkMDRlNTkgbGVnYWN5LXRydW5rCis1MjUxIDUwYjJmODJlNmYwZWE0N2FkYjk3MjEzMzE4NmUwMDhjNjMwOWM3MTUgbGVnYWN5LXRydW5rCis1MjUyIDA2ZjIyOGQ2MjM2ZTRjZjlhZGY2OGJlODI2NGY1NDg2YmJmMDdmOWEgbGVnYWN5LXRydW5rCis1MjUzIDdjM2U0ZjNlZTE1MmY4OGM0OTE2NTNlOWQ3MDI1ZjE0MjAxNThhM2MgbGVnYWN5LXRydW5rCis1MjU0IDlhYWI0ZWIyYjNmOTgzN2I4ZGQ0ODhjNjhkYmU5MDFiN2Q4Mjg5ZWQgbGVnYWN5LXRydW5rCis1MjU1IDQxNTY1NDU2YmMyMjFjY2M1OWFkYjRhYmFiODBkYTU1YTA5NzI2YTggbGVnYWN5LXRydW5rCis1MjU2IDI0ZmMwNjE2YTY5NmM4Mjk5NDlmMGZlMjk2N2RhMDVhYTljOWVhNjYgbGVnYWN5LXRydW5rCis1MjU3IGJhZjBiOWI3YzJhNWFhNjkzOGNkNmE5NThiNWE4MDIzMzg4N2VkMjMgbGVnYWN5LXRydW5rCis1MjU4IGFmM2FhYjZiMDdjNDNhOTU0ZTcyYmI1MTQ4MTNjNTQyYzA1NDQxYTIgbGVnYWN5LXRydW5rCis1MjU5IGI4OTM3ZTc0ZmRmNTUxYzAzMjEyMzJmYjM0YTMwYTY1OTkwZDRlZmUgbGVnYWN5LXRydW5rCis1MjYwIDgyM2YzYThlY2ZlNDE5MzQ3MDFiY2YzOGI0N2MxMmNmOGNjODlhNjcgbGVnYWN5LXRydW5rCis1MjYxIGVhMzhjMzYzZGU1OGI3NWI0OWUwMzZkYzAyN2YxMWVjZTVhNzZlYjUgbGVnYWN5LXRydW5rCis1MjYyIGViYzE3MTRkYzczOGJkZGMyNDQ0MzE0ODU3MjgyNTA5YTU0NGE5NGEgbGVnYWN5LXRydW5rCis1MjYzIDdmMmMwZTdlZjg0MjYyYzU5NTg2NDYzNDJmODY4ZjMzMzhjYWIwYmYgbGVnYWN5LXRydW5rCis1MjY0IDU5YzJhY2IzZTcwMjU0NjNmOTlkZmUzYWE3ZTM1ZWMzOTZiMGU1ODQgbGVnYWN5LXRydW5rCis1MjY1IDRhOTk4YjFhMzMxZjBhZTlmMGYzMGM3YjFlMzg3NWEwNTVjYTQ4N2YgbGVnYWN5LXRydW5rCis1MjY3IGFiM2RjYTk3ZmZiZWI2MzVhMTZlYzVlZDM4ZmY0NWY2MmY4ODgwOGYgbGVnYWN5LXRydW5rCis1MjY4IGU5MTFmMmZiMTc5YzJjMzJjYWY5MjM2YmJlMjJjZGMyM2FkNWExYTAgbGVnYWN5LXRydW5rCis1MjY5IDc1MGEyZGQ4YTQzN2JmYzhiZDMxOTljOGQ3MDAzYzJiNDU0OWNkMTEgbGVnYWN5LXRydW5rCis1MjcwIGEyMzYzYjZlOWM4NmU5YWJjNTM2OTNiNmI1OTg3MDc5ZGVhMmQ1NjIgbGVnYWN5LXRydW5rCis1MjcxIDYwYzU3Nzc3MzY2Zjc1NWE5NzE0OGZiNTBjM2FiYjBkOWQ4ZGI4ZTkgbGVnYWN5LXRydW5rCis1MjcyIGI3YTA2ZGI4NWNhZmNlNDEzZDBjNTVkY2Q5MjVhZjFkNmNmMjc4MWIgbGVnYWN5LXRydW5rCis1MjczIGQ3NmE3MTRkMWNlYWFhZGUwMDc4MDgxNGMzYzcyYmI5MzBkNTQ2YTcgbGVnYWN5LXRydW5rCis1Mjc0IDVjYTVkNzdhZmQyOGJhYzczN2ViMGFhYjk3ODVlNDMxZWRkYmNiNGQgbGVnYWN5LXRydW5rCis1Mjc1IDkzMThhYzUxNjkxZTZkODYzODRmZmQ0NDMwZDIxNjRhMjYxMGQzNDQgbGVnYWN5LXRydW5rCis1Mjc2IDZmZmNiZTBmZTlkM2NkMDBmMmZlMzI5ODM2ODc2MzkxMTljMmY5YjggbGVnYWN5LXRydW5rCis1Mjc3IGZjMjE5MGVjMWJlYWQyODdiYzA2ZTE4MTEzMjQ2YjA2ZjlkNjlmMTYgbGVnYWN5LXRydW5rCis1Mjc4IDA3ZmM0ZmVmYjY4Mzc1OTUxZWU3NjBjOGE1MTUzYzIzNDY3MTRkZWMgbGVnYWN5LXRydW5rCis1Mjc5IGZiM2RhZjliMjQ1NmRjMWEzZDk5ZjU2Zjc4YzVlNjI3MGVlYWYxZTggbGVnYWN5LXRydW5rCis1MjgwIDk5OWI1YmRjMThjZTk5NmIwMmEwNzZhYTdjMGJmMGE5NTNhYjE0NTEgbGVnYWN5LXRydW5rCis1MjgxIGM2ZmU4MGNlN2MyMDkzYTFhY2E1NWRmMGFhMmNjZTA1ZGQ5Mzk5YjIgbGVnYWN5LXRydW5rCis1MjgyIDFlODJkZDZkZmUyZWY0MTZmNGI4YTI4YWY4NGZmOTg0M2JjYmEwMmYgbGVnYWN5LXRydW5rCis1MjgzIGM0YzM5ZDE3MWVjM2IwNjNkNmRiZGEyNjhjMmIxZjU1Zjk1N2UyODIgbGVnYWN5LXRydW5rCis1Mjg0IDhiOGZiMjRkNDgzNzk0ZjJlOTMwMzEzOTJlOTMyMDgzMTFkOTMzN2QgbGVnYWN5LXRydW5rCis1Mjg1IGM5YjcyOTdhMDc1ODcyMGI3Y2E0MzI1ZTBlNDIxN2FiMTI5YzA3OTkgbGVnYWN5LXRydW5rCis1Mjg2IDgyMjVjNjU4MWIzZDM2ZTI1ZWExMDZkMjQ1NDlmOThiMjk5NDRiODYgbGVnYWN5LXRydW5rCis1Mjg3IDY4ZDdlYWU2Y2JkNmM1Njc1MTA0OTg3OTYxOGJhYmE1MjQ5NTJiM2UgbGVnYWN5LXRydW5rCis1Mjg4IDQzY2NmY2Q5OGU4MDZlZGFkM2ZhYWE2YjRmOTVjNGE3YmIzMjdiOTMgbGVnYWN5LXRydW5rCis1Mjg5IDQwN2M3ODQ2Yjg4NmI4NThiZjg4MDM4NGEyZjJiMzg2ZWE2ZDIyYTQgbGVnYWN5LXRydW5rCis1MjkwIDI4MmIwYjRjMWVlYTU5MGI5MGE1ZmYxMDlmMzZjMWQ2MWVjZTUzNzUgbGVnYWN5LXRydW5rCis1MjkxIDY1YzcxMDU4NjhmODg5OTY0ZThlNDdlMzgxMmU2NzJiMzIxZTI5M2UgbGVnYWN5LXRydW5rCis1MjkyIGJlYmIwZWE3ZGUyMDBjZWMzYmZhMmRmZWEzYzU4MzYwYmY4NTdmYTggbGVnYWN5LXRydW5rCis1MjkzIGNkOWU2MTM1MjQ0YTU3MDkwYTY3MjlmMWI1MjM4ODM2NDVkMDk1MWUgbGVnYWN5LXRydW5rCis1Mjk0IGZmMWZhYTRjYzFkZmJjODliN2FmZjg5MzkwZWEzNjRiYWYwMjA3NmEgbGVnYWN5LXRydW5rCis1Mjk1IDU5YTk2ODljMTFhOGIwMTQ1MThjYzQzMGFjMjVlNmE3ZjIxYjE1N2UgbGVnYWN5LXRydW5rCis1Mjk2IDk0M2UxYzQ4MDRkODAwNjM1YWM5NzY1M2UxZmJjM2JhOTA1MjAzMGUgbGVnYWN5LXRydW5rCis1Mjk3IGJkNzljZDc2OGZmODgwZTcxZGU4NjE2MDc5ZjMyMGM5YTZmODQ1MzQgbGVnYWN5LXRydW5rCis1Mjk4IGVlZGQ2YzFmM2FlN2U0Y2JkMzZjOTZmOGQxOTlhMTBiMmM1OWViZjYgbGVnYWN5LXRydW5rCis1Mjk5IDFmZDhmMzE2Y2JlOTBmODk0MDBjODg1M2I5MTg3MjMyYzAwZjc3MGYgbGVnYWN5LXRydW5rCis1MzAwIDE2NDM5OTdmMTcxOGFhNjRmNTMyMGU0Y2M3N2VmMjUyMzlmOTYxMjMgbGVnYWN5LXRydW5rCis1MzAxIDRkZWEzZjU1NDVjZjNkOTM1MmZlNDE5OTA5ZDczNDQwNWM2ZmVkM2IgbGVnYWN5LXRydW5rCis1MzAyIDdjN2IzNzA0YTY4ZmEyMTEwYzA3MTNhMjg1MzVjMTE3ZWJlOGM5YjggbGVnYWN5LXRydW5rCis1MzAzIGQ5MmVmOTRhZmVmYmVjZWU2NmI4MTExMzkxODQ4ZWIyNjBmMTcwNjUgbGVnYWN5LXRydW5rCis1MzA0IGI5ODhhNGFjYTZmOTYwYTI4YjI5NWNjOGJhMTllNTYyZDg5MDkwNTAgbGVnYWN5LXRydW5rCis1MzA1IDliMWEzMjY3MjdkZmQ3NzBhYWVhMDdkMDRiOWY0YzFlNmY4ZjM4ZWIgbGVnYWN5LXRydW5rCis1MzA2IDJjNzNjOGFiOGI4MmFlODJkNDVmODFlODMwNDM4YTU4MGI4NmVjODEgbGVnYWN5LXRydW5rCis1MzA3IGQ1Mzk4YWNhZmEyY2NjOTNlZWIxNTYzYTVkNGEwYWUxZThiMTMyODEgbGVnYWN5LXRydW5rCis1MzA4IDY0OTI4ZjZhOGU4MGUwNmNlMjQwMTliN2RkN2E2MWJlODA0MGFiZWYgbGVnYWN5LXRydW5rCis1MzA5IDQyMDg3NGY3ZDhiZDFmZjA0ODliNDZhMmUxOTRmZWEzODBhZjYyMjEgbGVnYWN5LXRydW5rCis1MzEwIDhkOTJhM2JiOWMxZmZhZGNiN2MyMWExZTVhM2RlZTI0OWM5OGI3N2MgbGVnYWN5LXRydW5rCis1MzExIDAyNjFiZjViMzgxOWIwM2Q4M2YyNTQ1NjI5NDcyNDQ2MzQ2MDQwMjYgbGVnYWN5LXRydW5rCis1MzEyIDA1MWJhY2FiNTlhZmUyNWUzMDY5ODNmZTQwYjYxZGMxNTJmOGZiYTUgbGVnYWN5LXRydW5rCis1MzEzIGVhZTRiMmJhNzIyZWI0Yzg0YzNkZWU5ZTMxNGQxNTg5YWRhNTgzYTEgbGVnYWN5LXRydW5rCis1MzE0IDU2MGFjYzI1Zjg5NjYwMzMyYTJkYjA2NjkzMWE3ZjA0ZWEwODY5YmYgbGVnYWN5LXRydW5rCis1MzE1IDRmNmQ1ZmUxOTgxMjJmM2Q2MmRkNjZhYzk2YTc5NmUxNmY0ZDIzMWQgbGVnYWN5LXRydW5rCis1MzE2IDk3Y2ZjNDZlMzMwMmMxNjZkNTdiZDM1YTliOTNjY2FiMmQ0MTllY2QgbGVnYWN5LXRydW5rCis1MzE3IGUzNzk1ZGI0YWRmODk4ZmMyM2U4NWUyYTVmMmNhNmYxNDRmYmEwOGMgbGVnYWN5LXRydW5rCis1MzE4IGJlZWVmZmYxYzQ0MjY1MzM2NDIxZjBkYWZjN2Q0Yjk4ZmU4YTczYjQgbGVnYWN5LXRydW5rCis1MzE5IDFlZWViYTA5YTMwNjQ5NzFhYTZkM2UxY2NiNTRiOTMzODgyZGZlYzMgbGVnYWN5LXRydW5rCis1MzIwIGQ0Mjk0MWQzYTk1ZjQ1ZjY2MmI0NzdiNzYzYzU4M2FiOWRjMmU3MzIgbGVnYWN5LXRydW5rCis1MzIxIGRkOGEzMGU1Zjc0NDM0YzI4OWU2NTExY2E2ODMxZjA0NTgyMjYwZDUgbGVnYWN5LXRydW5rCis1MzIyIGU2YmVjMTQ5YThkNzIzOTdlZjVlM2I5ZGViNTFjOTBjNGMwZWYyMDMgbGVnYWN5LXRydW5rCis1MzIzIGE3YWY5NzBhOTRhNDI3MmJjYzFmNDgwZDU0NDRjOGYxYzE0ZWI4MjUgbGVnYWN5LXRydW5rCis1MzI0IGVlYmJkYmVlNTRmOTAyMDdkNmYzOWYyZDRmNzMzNGRjODMxYTI1NzAgbGVnYWN5LXRydW5rCis1MzI1IGViMWVkNGQ4NDYyOTBkNTI5Y2ExODdhY2U5YzhjNGFiZDkxYjNjNmQgbGVnYWN5LXRydW5rCis1MzI2IGJhMmIzMDk3MmZmZWE3MzVlNDc5NWI5Y2Q2Y2EyNjJkNGU3NWQ5OGYgbGVnYWN5LXRydW5rCis1MzI3IDZhZTliMzc3ZTUyMmE0ZWQwMjBhMThiNTY4ODllNTMxMmYwYjEzMGUgbGVnYWN5LXRydW5rCis1MzI4IGRjNmIzZTc2Y2NlNjY0Mjc3N2UwNTgxZDQ5NjM5Y2MxZDAwYWIwZTMgbGVnYWN5LXRydW5rCis1MzI5IGRmOGNlZGE4NDU0NWU3NTAzYzA4Y2ZhZWRhNWYzZWFjNzU1ZTU3MGEgbGVnYWN5LXRydW5rCis1MzMwIDEwZTAwN2FlZjFjZmYxMzBhN2ZhZTRjMDYxZmM2NWZmYTg0NzM5ZWEgbGVnYWN5LXRydW5rCis1MzMxIDVmOTUxOTEyZTk5NTkwY2I0ZjFmMDljZTIyZWY0ZWY1ODUxZGRmMTQgbGVnYWN5LXRydW5rCis1MzMyIGQ0MDI5MGU0MjQ1NTU2ZTk1NzQzYTA2ZDRhNTQxYTc5Y2VlYjA3ODYgbGVnYWN5LXRydW5rCis1MzMzIDE0MTExZDY2NTc3ZGQ1NDY0YWY3ZTg5OTIzMTQ2NDYzOTBkYTFiNzIgbGVnYWN5LXRydW5rCis1MzM0IGExNjllNjg3MzRmZjEwZWIxNGY3NjRlOWQ2ZDdkZGU3N2JiOGRmNDEgbGVnYWN5LXRydW5rCis1MzM1IGY2NTdkNjc4MTJhZmFlOGQwMjU4ZGE0MTYwN2RkM2ZjZmY1OWM0YzggbGVnYWN5LXRydW5rCis1MzM2IGI5YTYyNTAxZTc2ZGM4OWU5OWViZmIyZDY4NjAyMWM0MTUyNzExYTggbGVnYWN5LXRydW5rCis1MzM3IDUyMGUxODU1YTI0ZDkwYjIxZDVjZGMyYzY2MDgzOWE5YWZmYjMxNmUgbGVnYWN5LXRydW5rCis1MzM4IDA1MzQwMjVjZWZlNTU2ZmFjN2VjMzRkNDc5MDM5ZWNiYmJmNTJjNzYgbGVnYWN5LXRydW5rCis1MzM5IGQzYjA3YmEzZTEyZGYzYjgyNzYxNDUxYjMwYzM4N2E2Yzk2ZGJkNDAgbGVnYWN5LXRydW5rCis1MzQwIDMxNTc2MGJhMDA0MWQwNGNiYmI3NWUzMjFkMjg2ZDRhMzdmZmU5MjUgbGVnYWN5LXRydW5rCis1MzQxIDkyN2Y0ODM5ZmJmYTE0OGM1NzU3ODAwMzk2OWM3M2RiYzg3M2JiOTIgbGVnYWN5LXRydW5rCis1MzQyIDcxNTg0ZmU3NzQ5YzM1ZmQ4ZWFmNTc3ZWU1NmFiY2IzNTc1YzFhZTcgbGVnYWN5LXRydW5rCis1MzQzIDg1MTQwYjM1NDg5MDFmODc3OTM1OThkOWYyMDk0YmRiZGZiYWVkN2EgbGVnYWN5LXRydW5rCis1MzQ0IGJlZWVhOTc1Nzg3OTg5Nzg5OWJmMjQ3OGRiMWUyZDRhYjE4MjAyNmEgbGVnYWN5LXRydW5rCis1MzQ1IDVhNTIxOWM4YzJlNjc0ZmM0MGZiZmNiYzA3MWIwNzZlYzFiYTMyNDkgbGVnYWN5LXRydW5rCis1MzQ2IDM2MzdkYTRjOThjYjMxMDE0N2YwNThlYWUzNjBkZTk4ODMyZmQzMDkgbGVnYWN5LXRydW5rCis1MzQ3IDZmMWRkZjExMzk4MmFkYTE4YTZiMzhiOWU3ZmZlNzYyMTY4NGYzYjAgbGVnYWN5LXRydW5rCis1MzQ4IGEwZTgyNDZkNTIzNzhkNTE4OTFlNjBhMDY5ZmNlYmM2YWEyNzE5ZGYgbGVnYWN5LXRydW5rCis1MzQ5IGY4OGJjY2I1NDhlZjRjMTU1NGE0Yjg0MTE3MDEyN2EwNjhlNjE2N2IgbGVnYWN5LXRydW5rCis1MzUwIDUxYzljZmZmMzFmM2UxN2VhMzQ3MjFiMDAwYmY2YWM4MzE1N2RhMmMgbGVnYWN5LXRydW5rCis1MzUxIGUwMDZlZDg4YjRhYTQ2N2RlZDdiYWEwNjAxOWQ1OTgyZDMyZDgyZjEgbGVnYWN5LXRydW5rCis1MzUyIDM2M2FmN2UzZWQyZDIzY2I3OWI1OTcyYmU3N2JhMmZjZDU4MmZkNDEgbGVnYWN5LXRydW5rCis1MzUzIDIxZTEwNTQ2MGE0OTk5ZThiZjE3YWIxMjFmNmYwZWZmYjc0NWU1NDAgbGVnYWN5LXRydW5rCis1MzU0IGVjMGI0Mjg4OTI0M2E3ZjllNmJjNzU2ODIwMjNiYzM4NzkxZWMxYzcgbGVnYWN5LXRydW5rCis1MzU1IDZhYmQxNDQ4NTg4NGY2MWI4ZDExOGI2ZjMxNDA1ZjNkMWYxMTY4ODIgbGVnYWN5LXRydW5rCis1MzU2IGU1MTNmMGQ2NTM2OGMxZTU4MWFkNjE2YWZkNGU5MGM5NTMwMzJiZjIgbGVnYWN5LXRydW5rCis1MzU3IDA0ZTE2OTBmYjRkMTE3NDk2MmIzN2E2MWRjODMzNDhmYTQzZjNkZWQgbGVnYWN5LXRydW5rCis1MzU4IDk2NGQ3NmY0OWE1ZWNhOTVlOGVkMjM1NTk3ZTc3ZTRlYmFkMzkxOTMgbGVnYWN5LXRydW5rCis1MzU5IDMzYjE1NGI2YzYxYmI5ZmU5ZTQ4YjMwNTc1NDE1MWQ2ODJjMDgxZTQgbGVnYWN5LXRydW5rCis1MzYwIDQ1MGFkNTQ5NjQwNzcwMWRlZmM4MDg1MTVkZWJhYjAzMTBiY2MyNDkgbGVnYWN5LXRydW5rCis1MzYxIDQwOTU3ODJjOTQwZWFjNDBlOGNhNTgxNDBiMDZkNDk5OWNjYWFiMDMgbGVnYWN5LXRydW5rCis1MzYyIDgxYjQxMzI0ZDI2ZWI4ZTQ2YzE2NDkzZDEwNzFhNDQzZmIwNzA3ZDAgbGVnYWN5LXRydW5rCis1MzYzIGYwZDlmODAwYTRhYWM3YWRhMWViNGJlMWY3YTk1YmQwOGQ0ODEwYjcgbGVnYWN5LXRydW5rCis1MzY0IDRkNjlmZGVlOWY1ZDQyOWE4NDBhMWMxNjEyNzIwMzBhMjE5Njk3ZTIgbGVnYWN5LXRydW5rCis1MzY1IDU2ZTYyOGE3N2M4ZDU4YTMwMDkzM2RmNGJjNGQ0ZjNjMzc0NDc5NTYgbGVnYWN5LXRydW5rCis1MzY2IDY1ZjA2ZmMzOTk2MDBiMDVkYTRmMWJmYTE5NmQ5NjVjY2NiMTQ4YmYgbGVnYWN5LXRydW5rCis1MzY3IDBhY2JkODViY2RiYTM2NTM4ODFhNGIwMDlhYTY0NmVhNWIwZDQzYWEgbGVnYWN5LXRydW5rCis1MzY4IDU3ZWMyNGUwZjM1YTgwZjAyNjVmZTk3ODM0ZTJlNmMwZWNiZjAzN2EgbGVnYWN5LXRydW5rCis1MzY5IDEzNTgxYjQxNzgzN2I4NDViY2I5MDkwNjA5ZGI5YTczM2E5YTZkZjggbGVnYWN5LXRydW5rCis1MzcwIDczOGM3NDYxNWFjNDg5OGFjZGNmMDNkZjdlYmNmOTJiMGIzMDFhYTYgbGVnYWN5LXRydW5rCis1MzcxIDAyNGZkZDljY2RmMjQwYmQ1NGZlYmVhZTEyZjQ1NDUxMmNlMDc3NTAgbGVnYWN5LXRydW5rCis1MzcyIDBhZmQ0Mjk2MGExZmQzNjBiMGY5NjgxYTEzNmQ2NmU4ODY5YWIzYzEgbGVnYWN5LXRydW5rCis1MzczIDIxNDM1YTBiOWIxMTZhNDk4M2Y4ZjM1ZWUzYmE2YTBmM2IyYmFlNzYgbGVnYWN5LXRydW5rCis1Mzc0IDg5NTdiY2ViZjEyYzRmYjI5NmFmZTI0MzVlMTAyZWVhZjkwZmFhNDMgbGVnYWN5LXRydW5rCis1Mzc1IDYxOWYzMTY1OGIzYmE3YjFhYTBmMzAxYzQ5YTM1ODdiY2Q4YzY0MjkgbGVnYWN5LXRydW5rCis1Mzc2IGY5YjEwNjlhM2UyNjVkOTBkZWZiYzgwMzc2M2RmODFlYjg3ZWE0MDAgbGVnYWN5LXRydW5rCis1Mzc3IDVhMjYxMmZiNmMwZTMxYjA3ZTYyM2I1ZDQ2YjVhMDNkMjI3ZDBhZjggbGVnYWN5LXRydW5rCis1Mzc4IDQyOWQ3ZTFiMWYyYjhjMzY4MmNiNDhmZGJiMWQ3ZTBlMDBiZjMyMmMgbGVnYWN5LXRydW5rCis1Mzc5IGRmN2IxNWMxZThiNzk2ZmY0YmMyNzFjZTlkMzU1MmRhMzE1NzI4ODggbGVnYWN5LXRydW5rCis1MzgwIDUxZGQwNjVhOTdhNjE0ZWMyMGIwODE5YTg2MDNmZTQ0MDMxYjNkM2YgbGVnYWN5LXRydW5rCis1MzgxIGUxNmUxOGI5NjI2YzhmMmVlZTFhYTZiNzhmNzhjMDk4MmQ4ZWU3ZTcgbGVnYWN5LXRydW5rCis1MzgyIDQ1MDlkZmUxOWI2ODYwZGYxYTUyODBkNDg5ZjRhNDE2NjNkYWQxNzcgbGVnYWN5LXRydW5rCis1MzgzIDc2NGIwZmM4NjdhNDc1YzdiNzQ4ODE3MmUwMWE4MzNlODAxZWUxYjYgbGVnYWN5LXRydW5rCis1Mzg0IDlmYWQwMjlmODM4ZmQxYjkyZjMzNmU5YWI0MzZjNmIwYjk1MDJmY2UgbGVnYWN5LXRydW5rCis1Mzg1IGNmYTliM2E4NDg3MmVhZjlkOWIyNjcxYzAxNDRlMmNmZDEyZjY3YTQgbGVnYWN5LXRydW5rCis1Mzg2IDgxMWQ5YTk4ZTE4YWI0MTYyN2UzOGMxZTkzYmM1ZTMyZjUxMjFhMjkgbGVnYWN5LXRydW5rCis1Mzg3IDE3N2Y1NzU3MDhiYjA5MGIxOGQxOTYxNDUxMTY0YzQ1YzA5ZDYzYzMgbGVnYWN5LXRydW5rCis1Mzg4IDBjNTBlYzhlODM1OGU4ZDRhMDc2OWYyMmI3NGE0ZTU3MGQ4NTdjNjEgbGVnYWN5LXRydW5rCis1Mzg5IDRmMDgyYmU1OTAyYWUxNTM4NmUxNjc4NTQ4YjM5ZTEzN2RmMWU0ZjkgbGVnYWN5LXRydW5rCis1MzkwIDE3NjM1NjA0YmRjZTE1YTRjYjJjYzYxNTlkMDY2MWZkMzhmYjYwMGIgbGVnYWN5LXRydW5rCis1MzkxIDQ0MTQ1ZWViNjEwMGM5YzI1ZWFlMTY4NzkzOTIzYTY0MTYyODAzZTYgbGVnYWN5LXRydW5rCis1MzkyIDVlYjhiZGUzMDBiN2VkZTE0M2JhMjk2NGYzYWFhNjhmYWUwMTM5YjYgbGVnYWN5LXRydW5rCis1MzkzIDRhNTM0ODM5MzljMWViOTkyOTE4OTZiOTdhMjhjM2QxZTgzMjIzNjAgbGVnYWN5LXRydW5rCis1Mzk0IDBhZDlkMTIzZmY1NWRmMzQ5NTI0YmMyNDIzMmM1YTk2NzUyOWIyMWQgbGVnYWN5LXRydW5rCis1Mzk1IDc5MmUzOWRmZTIxNjE2YTY0MmM1NDE0ZDU5YjJiYzVmNGM5YzE0MWUgbGVnYWN5LXRydW5rCis1Mzk2IDdkMWVjZWMyNWMwNmVkZmE0OTg3OTcxMjE5NTI3ZDk5NzVmOGM2NGIgbGVnYWN5LXRydW5rCis1Mzk3IDczOTI3OTAzMjhiYmYzZmQ3ZmIzMDA2MmMzN2U3MjdiZWVlNDUxMzggbGVnYWN5LXRydW5rCis1Mzk4IGRjZTkxNTViMDQwMWVkODdmYTQ0OTg1YzdhMDMzNzI5YTJkMDIzYzQgbGVnYWN5LXRydW5rCis1Mzk5IGVmYmRjNTBlN2Y1NGM1M2I3Mjc0ZWQzM2UzNWJhNGVhNWY5NTFkYTYgbGVnYWN5LXRydW5rCis1NDAwIDdlMTI2NTMxMmRkNDI3NTNjODZlZTA2M2FlNGE2YmE3M2Y2NTc2MDYgbGVnYWN5LXRydW5rCis1NDAxIGNiNWNjYmJhMTg1NjhlYjM4ODIzMDRlMmExM2U4OTE3MmI2OTIyZjEgbGVnYWN5LXRydW5rCis1NDAyIDhhYWI4M2NjNjBhMDQxYzA3NjY3YzYzMzZkMDhiYjhjMGMzZjM1ZjMgbGVnYWN5LXRydW5rCis1NDAzIDA5NzBlYmQzMTUzNjc0NGUzODlmMzcxMmI0ODI3MmQ4YWM1ZDA5MDQgbGVnYWN5LXRydW5rCis1NDA0IDFkODYyNmJjOTljNzEwMjkxYjUwMDU1MjQ3MzUzNDJiNzU5YmI4MGYgbGVnYWN5LXRydW5rCis1NDA1IGYwMTdmNWNkYjRiZGIyODU0OWU4OTI0ZjYyNDg0NzM3MTZlMzQ2NDggbGVnYWN5LXRydW5rCis1NDA2IDRkZmRmMjM0Y2RhOGY1MDMzMjM5YTZjMmRlYzhkNGJiNGU3NGFlMzcgbGVnYWN5LXRydW5rCis1NDA3IDcwODJjMWExZjlhYjk4NmZjMTI0YzhmZDY2YWMxY2M2NTBlMzdmOWUgbGVnYWN5LXRydW5rCis1NDA4IDk3ZjdjZmFiZTA3ZTdhOTQwZGNhNWY5MWNkODJiZDk2NzA3ZTAyNmYgbGVnYWN5LXRydW5rCis1NDA5IDM3MTUyMDYzOTdmZTkwNjBiZDQ4MjcyZDJlYjQzZmRhZDZlZjBiZTIgbGVnYWN5LXRydW5rCis1NDEwIDhlZGJlYWEyYmJmN2E3MDJlZWIzODQ3ZWMwZTIwOWU4YmVmMmVjNjMgbGVnYWN5LXRydW5rCis1NDExIGMwOTk3YjQ2MjM0NGI0MDY2MjkwZTEwODllMjEwYzFlM2Q3YWNmNGMgbGVnYWN5LXRydW5rCis1NDEyIGYxN2I3ZDBhNzQ4MjQ0ZTk3NGY3YzEwNjhjZTBhMjMxNjA2NDdhMzcgbGVnYWN5LXRydW5rCis1NDEzIDEwYzEwMzBiNzBhZGU4ZjAxM2Y1MTM5MDlhMDEyYzEwNTA1M2RkYjkgbGVnYWN5LXRydW5rCis1NDE0IGE5ODBkMDc2MDUyZGFiZGMxOTcyZTE4NjhlNmMwODViYTMzMGNlNWIgbGVnYWN5LXRydW5rCis1NDE1IDMwMjllODFlZGJjNzc1Yjk2NzExMDI0NTk3MmVhN2M5ZjFhZjg5OWIgbGVnYWN5LXRydW5rCis1NDE2IGJjMDgwMzA4NGU2MGE5NWJkN2VhMzdhMDEwNThlZjdlMGZiNzEzODcgbGVnYWN5LXRydW5rCis1NDE3IGExYTliNzM2NGJjMzQ4NjZjZmJiOTQ2NzlmY2Y3MmJmMjY0NDNkMmMgbGVnYWN5LXRydW5rCis1NDE4IDExZDg5OTE0YzdiOWIxZjNmNWY5Y2IzMGU1Mjk2OWU3YWNmZjQ5MDcgbGVnYWN5LXRydW5rCis1NDE5IDIxZGY0MjFmMDNmZTBkOTY4ZTUyMDdmNTg4ZTZjMDg0N2MwYmU2NDIgbGVnYWN5LXRydW5rCis1NDIwIDQ1YWQxYTkzOTg2YTBlYmQyYzk5MDY0MzQ5YjMyYzRlNWNhYWMwNjMgbGVnYWN5LXRydW5rCis1NDIxIGM1Y2IzYTUzOTMzYzM1MWEzYzQzZjEwMjMxNDNlNTMxNWQxNjExMzYgbGVnYWN5LXRydW5rCis1NDIyIDUyN2QxYjI5MjUyNTA2MjhlYmNkYWI1OGRhOTliMWJmNDNkODNlNWQgbGVnYWN5LXRydW5rCis1NDIzIDRkN2ZkOWZmNzk4ZDU1MTk5NWRmZDQyYWU0ZjY3NTgwMzhjM2MzYjUgbGVnYWN5LXRydW5rCis1NDI0IGNjOTIyMmI5NDdlZTBhMTQ3NWU0ZmFhNGQ2MzZmZjFjMWU2Y2YxMDUgbGVnYWN5LXRydW5rCis1NDI1IDRmOWQ0ZTczMDU3Yzc2MzIzOTBkNmRlODE5ODUyYmJmOTUwY2NhYmYgbGVnYWN5LXRydW5rCis1NDI2IGViNmViNjFiNjA2ZmZkMzI1Njk5NmVjYWM2ZGYxMmQyYzc3OWUxOTAgbGVnYWN5LXRydW5rCis1NDI3IGYzZjdjMDFiYzk2NmNkMjc4MWZmMjY2MmZjNDc2NjA2YjZiZDJlMjEgbGVnYWN5LXRydW5rCis1NDI4IDFjOTE5ZDAyYTY0NTk3NTQ4NGJjNzgyY2FjMzYxZGVmZDI1YTFhNzAgbGVnYWN5LXRydW5rCis1NDI5IGY3MmFiZDYyZDUwODNmNTdkNWZhYTA2NjJhZDg4NDcwZDA5OTA2MjIgbGVnYWN5LXRydW5rCis1NDMwIDAyMzUyNzM0MjU5OTZhMzYyZDU5YTBiYWVlM2NhYjRhNGZmNTY5OTIgbGVnYWN5LXRydW5rCis1NDMxIDEyMmQxNDlmYTgwMTY0NjA3NTY4NDcyMDU0NjA5MmUyZDdlYzNlNTIgbGVnYWN5LXRydW5rCis1NDMyIGQwMDcyZDFkZjgyYzJiN2Y5ZGUwMTllZmVjMDk0YjI4MWVkOTNlMzQgbGVnYWN5LXRydW5rCis1NDMzIGY5ZmJmZDkwMzE1MzAyZGUzZjkxY2JlNjdiZTQ0YzdjNDczZjFhNDUgbGVnYWN5LXRydW5rCis1NDM0IDc0OTUzYTQxNjA3YzFhNjNlMGE1OTMxOTU4M2MwNWEzNzBjNjg5ODAgbGVnYWN5LXRydW5rCis1NDM1IDUyMTMwNjY3OWUzNDllZmMyZmJlMTBiZmJiMjA2MGQwMWEzZGE4NGYgbGVnYWN5LXRydW5rCis1NDM2IGMwMGZhZTM4MGRjNzhkMmE5ZjYwZjUzY2Y1ZTc2NzEzZTEwMDFiMzYgbGVnYWN5LXRydW5rCis1NDM3IGNmYzY2YjhjYTIwMjcwMDFmZmVjYjQzODdiZWQyODEwNzcwY2NlZTYgbGVnYWN5LXRydW5rCis1NDM4IGQyM2Q3M2I0ZTU4YTlmZmIwYzcwM2EyZDJmNDM4OTc2ZTI3MTUyODYgbGVnYWN5LXRydW5rCis1NDM5IDk5OTQ1ZmRhNzE5ZGIyMjIxYjQ2MTM0MDhjMTAyYjlmOWQ5ZWI0NmYgbGVnYWN5LXRydW5rCis1NDQwIDk4NjRmZTA1OWUwZGM0YzUwNWE4YzEyMDI2ZDdkYWUxODBkMzkzZmIgbGVnYWN5LXRydW5rCis1NDQxIGQxYzQ1OGM4N2Y0YTZiMGVkZmFjNmI0NmZiNDYxYjYwNTRmMzc0N2EgbGVnYWN5LXRydW5rCis1NDQyIDgyMzU2YmRkZjcxMmNlYmJlNmUzMTdmNWM3MzFlZjM4MzEyMGQwNzIgbGVnYWN5LXRydW5rCis1NDQzIDRkZTc3OTIzMmFhNGMwYTQ5ZDYxMjhiNjdmM2ZhOGZiZmNjMDAwNDMgbGVnYWN5LXRydW5rCis1NDQ0IDQ0MTg2NmJlMmVjOTkxNmEyMGFkNzg3OTE5YzRhM2RkMGFmOGM0OTQgbGVnYWN5LXRydW5rCis1NDQ1IDdhNjdkYmNiNmQ4M2NmMmIwYWJmMTIzZDhkZjQ4YWE5ZmJiNTc5OTEgbGVnYWN5LXRydW5rCis1NDQ2IDdlZWE5YjQyNjgwMjRiNTBkOTlkNDMyYmI0ZjFiYjQ5ZjUxYmI2MDUgbGVnYWN5LXRydW5rCis1NDQ3IGI2Y2ZhMDYzYjg5YmIwYmIxM2U3YWYyOGY5Y2QyMTNhZmZmMjdiNWQgbGVnYWN5LXRydW5rCis1NDQ4IDU2YWQyNDdjYmZjYmVkMDNjM2MzM2Y3YTQyODkwMmYxNzNiMGQ0MjIgbGVnYWN5LXRydW5rCis1NDQ5IDhkMjkwNzg1NmIzNzg0NzAxMzljMWZkNjUyYzNkM2FhZDI5ZTFiZDEgbGVnYWN5LXRydW5rCis1NDUwIDdiMzkxMTk2MDU2NDE1ZjUyNmQ0ZTFhMTNlYmY3YzRhZTk3N2I0ZjAgbGVnYWN5LXRydW5rCis1NDUxIDRjMWQ4MDk1Mzk1MDliOGU2YmU3MjRjZDAzMDliNmJlNGExYzA4YmEgbGVnYWN5LXRydW5rCis1NDUyIDBkNzEwMGZmYjYxYTdlNzM4YWZiMTBmOTE5YzVjYzU1MTQ0OGNmM2QgbGVnYWN5LXRydW5rCis1NDUzIDdkMjY4MzQyZGMzYTNhYzlhNDdhMDM0YzJkNjkwOGI5ZGI0NWM2NzkgbGVnYWN5LXRydW5rCis1NDU0IGY5MzNhNTMwYzM4ZjE3MDcyNjU5ZGMwM2E0ZGE2ZGNkYmYzYzg4ZDIgbGVnYWN5LXRydW5rCis1NDU1IDJmZTlkMDM3MWVjZDA2NzFiYjk1YTMxYjMyZWExNDYzOGYyZDg0NzkgbGVnYWN5LXRydW5rCis1NDU2IDA0YmFkYThkNjVkZTQzNWQ1Mzg2ZDhlNWZkZDBkN2JmNmE4N2NjZjEgbGVnYWN5LXRydW5rCis1NDU3IDk0NzdhNDQ1N2U1NjQzMzE1YzIyZmRlNWE4ZDFiNzk2NGIyZTNmYzMgbGVnYWN5LXRydW5rCis1NDU4IDQ0OGVkYzkyM2NhZDQwZDcwNzJhYzZjOWY3Mzg2ZWVhYmJhMThhZGYgbGVnYWN5LXRydW5rCis1NDU5IGQyOTdjNzIyMDYxMzU4NDI3N2Q3NGMzNDA3ZDRiYjI0NzQyNDI5MTkgbGVnYWN5LXRydW5rCis1NDYwIDVkNDc0OWE0NzBiNGQwMjAwYjljZWE4N2I4NjAxZWE0ZDVjMDg0MzYgbGVnYWN5LXRydW5rCis1NDYxIGFjMDE1MmY2M2JkZGZiNzk4YjExNjVlN2U0NWRlZjFjOGRmMzdkYWUgbGVnYWN5LXRydW5rCis1NDYyIDFhOGQ2YzdkZDU2MGYxOTUwZTRjYjZhNzU1MWFkMzY0YTQ0MTJjNzAgbGVnYWN5LXRydW5rCis1NDYzIDUxM2E5NmE1NzUwZmJhNzUxNzRjZTNhZTAyZDkwNzk1MDdlMGU5M2EgbGVnYWN5LXRydW5rCis1NDY0IGQ0ZmY0N2RmNTkyMGRmZDIxNDY4MzQ5ZWQ0ZTM1MTRjYWQyMDM1MDUgbGVnYWN5LXRydW5rCis1NDY1IDliY2E5NGEzNmEwODEwYWYyMDRkNjhjMDY5Njc4ODk5ZjJmZmExZDMgbGVnYWN5LXRydW5rCis1NDY2IGJhMmZlNWY4MzZhODNkZTJkNzhlNWFhZDY1ZTVmMzRkMmFiZTBlNGMgbGVnYWN5LXRydW5rCis1NDY3IDU1ODk1YjVhMzAwN2I0YmM5MWYzMGJhYWRmOTdiZThmMmIzMGNjNmQgbGVnYWN5LXRydW5rCis1NDY4IGQ0NmQ4MzFiYzVmMzAxMjNkODU3YzgwNzY1OTY3YmZmOTBmNjgyNDMgbGVnYWN5LXRydW5rCis1NDY5IDU5MTFmMjRiY2MyZGUwMzcwZWE5MDlhZGRkOWQ5ZmE4NTdhYzU1OTEgbGVnYWN5LXRydW5rCis1NDcwIDg5ODdjZmE3NThiYmQ1YjdkNDk4MDBjZDE4NzcxNTU4NzgxNTE3NDggbGVnYWN5LXRydW5rCis1NDcxIGJlY2Q1ODE2MDkxMTBiZWJiZWZkZGE5MWNmN2ZjZjQxODRlMGZjMjAgbGVnYWN5LXRydW5rCis1NDcyIGFkNmYwMzlhNWM0OTIyZjg5MGZjYzA0MDFhYTAwZjg1MDZhY2Q4NDcgbGVnYWN5LXRydW5rCis1NDczIDIwY2E1OGVkYzg1NTQ4YzgwYjUxMWEwMDhjM2Q3YTIwMDAzYTQ2MDkgbGVnYWN5LXRydW5rCis1NDc0IDAyZjJjNTE4YWE0NmI5NDM2NmVjYjMwMWQ4ZmI4YWZiZDU4NDAyOGIgbGVnYWN5LXRydW5rCis1NDc1IGE1MTAyMmYxOTgwZmQ1YTE1ZDY4YTBlOWIzMGVjMTg2MDQwMGUwOWUgbGVnYWN5LXRydW5rCis1NDc2IDdmYjZmMjBlMmJhMjk0NDRlMjk0MmE5N2EzYmJiZDU4Y2M3MGQ0NGQgbGVnYWN5LXRydW5rCis1NDc3IDZhYTRlOTIwOWZiZDhlZGI3MDViNzI3ZjFkYjA4NDNiZmE4MWMzODMgbGVnYWN5LXRydW5rCis1NDc4IDcyYTYxYTE0OWU0ZTZjNzAxOWIzMTAzMmM1OGRlMDMwZjU1NDY1ZjAgbGVnYWN5LXRydW5rCis1NDc5IDZiOWNiNjYzNDg5NzVkMjQzMjNiZTRjYzMyYzljZWFhNzQyNzNjYjcgbGVnYWN5LXRydW5rCis1NDgwIDIxMDczODg2NjE2NjEyMjg1MGRkZDVkYzNmZThlMTIwMWM3Y2M2MmIgbGVnYWN5LXRydW5rCis1NDgxIDVkM2QyOTcwNDZkMmM3MDMxOWMyYjMwYzY2ZjY4MGU0NWU4NGM0YjYgbGVnYWN5LXRydW5rCis1NDgyIDI2NzE4NDJjNzJjZmM0ZGM0ZjRhMWVkYmE4Y2VjZjZkODQwNjJiOTQgbGVnYWN5LXRydW5rCis1NDgzIDdhZTMzMjQ3MjYyOWM0YWY5MTVjMmJhODVmZTk4YTEyODFkN2ExYzAgbGVnYWN5LXRydW5rCis1NDg0IDc3NzQ0MDAzNTgxMzM5ODJlNzc2YTU5ZDU5MDQ0YjIxMGEzNWUyY2YgbGVnYWN5LXRydW5rCis1NDg1IDI3MzkwYjUzNjY0MGM1MWI0NTQwYWZhYTk0NWFhYjVkMGNiNDM0OTggbGVnYWN5LXRydW5rCis1NDg2IGQyOTVmNGM5OGM4YTY0NjBlM2RhZjYwMmU4MWJhMWI0ZDk2NWI3ZmUgbGVnYWN5LXRydW5rCis1NDg3IGM3NjcxYzM2YzcyNWU2ODViMTBiYTNlNzM5NzI1Yzc3NzNhNjk0MTQgbGVnYWN5LXRydW5rCis1NDg3IGU2M2Q4M2Y4Mjc1ODUzYWFhYTNkMTk3MmNiODY1NjQ1MDVlNjU1ODMgbGVnYWN5LXRydW5rCis1NDg5IGM1ZDg1MjczNWU3ZjdiNDkwZWNiY2NiYzYwZmI2M2E5N2ExNGI3YzMgbGVnYWN5LXRydW5rCis1NDkwIDg3ODQ3MjI4YjE1OGQ5OTcxZmE5YWIzYTI1ZmUzYzIyNjcyMzFkZDggbGVnYWN5LXRydW5rCis1NDkxIDU0YWE4N2IxY2NlZTQ1OWRkMWUxMjllZGQ0OTliMzNiZGQ5ZWZjNGQgbGVnYWN5LXRydW5rCis1NDkyIDM5MTFkNGE4OWFiMGNhZDM2ODkyZDM2Yjc0MjVjZTNiZGJlZmU1OGEgbGVnYWN5LXRydW5rCis1NDkzIDc0YzhmY2RjOTdkYWE2MWFhYjM0YjRiN2M5NDA3MzgzMGIxOGJhNWIgbGVnYWN5LXRydW5rCis1NDk0IGRjNGJlYzAzNjc4M2U2NzAyZmQ5MDI2OTJkZTJjNmExZWY0ZmEwYTkgbGVnYWN5LXRydW5rCis1NDk1IDdjZDFkYTQwNjRkNzg0MTY5MzIyZmU0OGYxY2NmYWU3MGUwMzc3N2EgbGVnYWN5LXRydW5rCis1NDk2IDE0NzUzYzMyZThiNDJhMTMyZWIxNzNmNzU5OTMyZDMxNzAyODFjMTMgbGVnYWN5LXRydW5rCis1NDk3IDQwNWI0NzNhYTRhMTM1YzUwZjJlZmU4MTk2NWI4Nzc5YWJhODRhNTIgbGVnYWN5LXRydW5rCis1NDk4IDljNDlhY2U2YjFlNzhmMTkxMDY1MzE0ZmFkODE2ODIyNGNlNmQ0ZTYgbGVnYWN5LXRydW5rCis1NDk5IDNiM2U2ODA3NTgzMzJiODA5N2E4MjJkZWYxNzVkNTA2OGM2NTI2NzUgbGVnYWN5LXRydW5rCis1NTAwIDQ3ZDhiY2FiZDE3NmY0MjNlYTJkMmE3ZDZlNDk4ZWI0ZmQyOWYyNzggbGVnYWN5LXRydW5rCis1NTAxIGI4MzhkMmI5NTIwMTJmZjFjZmI2ZjY1NDgxYzhjNjAyYjQxZGJjNjkgbGVnYWN5LXRydW5rCis1NTAyIGNlNWYwYjgzZjdlOWY0ZTBlNjY3MGYzODhhZDUwYTYyZjkwYjI2OTcgbGVnYWN5LXRydW5rCis1NTAzIGJjOGVlZmZkNGQwNjg3NmQyYjcyOGZlMDMxYzg5NzdhM2U1ZGUxNjggbGVnYWN5LXRydW5rCis1NTA0IGY4YWJjMDM3Yjk0ZjhjZGU0OTFmYjU5ZTRhY2I3NDA3YTllNmRiMDcgbGVnYWN5LXRydW5rCis1NTA1IDQzZWEyYzhiMzI4NmU4ODc4MjQ4MjcwZTEwZjMyZTVhNDJjNDRkMGIgbGVnYWN5LXRydW5rCis1NTA2IDAxNmYzNjYyZWY5ODM4YmJjODBiYmI2NWViZDRjMDhjMzM1YzE0MjcgbGVnYWN5LXRydW5rCis1NTA3IGRhNmRiZGZkNTFkYjFiY2NlNzFlNDIwYzA2YTExOThjODlmN2MwNGIgbGVnYWN5LXRydW5rCis1NTA4IDZiOWM1NzVjMGNiYTAzODI0ZDM0MTZkMjVjZDY1ZDYyYzg5ZGU4YzggbGVnYWN5LXRydW5rCis1NTA5IDZhZjBmYmM4NTUzYWI2YjA1NjQ4MGRjNzBiNWY2ZTBjZGM0MTY0ZjAgbGVnYWN5LXRydW5rCis1NTEwIDQ1ODFhMGYwMzUzZWFmMzBmODg1ZDU5ODk2MDgxZjJkZjhhMGZiNjAgbGVnYWN5LXRydW5rCis1NTExIDdlN2JiMDBhMGEyZTI1ZDk1YWZmMjBkMzE1MWRhYjQyYjMzNDFkNTcgbGVnYWN5LXRydW5rCis1NTEyIGJkYTU0ZWEyM2E4MGNjMmU4MGMxOTBiYjVjZDk4OGJlNTYzMTljZmMgbGVnYWN5LXRydW5rCis1NTEzIDk0ODM1YjNlZGYzZTA1OWQxN2VkNjdkNzVhNzllOWExZTAzYjRjOGIgbGVnYWN5LXRydW5rCis1NTE0IDY1ZWE3ODg3NWJjODEyOTA1ZjliOTJkN2M5ZDA0NjcxYzA4MzE0M2EgbGVnYWN5LXRydW5rCis1NTE1IDAxYmMwNmMyZTQ3ZDNiZmNhOGFiMTA4ZTU2YTcxZjlkMjlmZTEwYmEgbGVnYWN5LXRydW5rCis1NTE2IDZjNjk0ZWFkMTY2ODc1Mzk4M2UyNGVmMjE0YzIwYzZhODk5ZmU0NTAgbGVnYWN5LXRydW5rCis1NTE3IDJjZDRjYzA2NWMxZjYzNjZkZTMxMDBjMTBlYmNjNDk4ODU3YzQ4N2IgbGVnYWN5LXRydW5rCis1NTE4IGE5NDZlNGNjNmQ1YjAxNzBjMGY1M2ZlY2JlOTJmMDRiYjIzNTc0ZGUgbGVnYWN5LXRydW5rCis1NTE5IGZkNTA5ODZmMzVlNWNjZGEzODYyZDVmN2Y0ODA1ZTBkZjAwMDU5YzcgbGVnYWN5LXRydW5rCis1NTIwIDViOTI4YjY5NWZhNGY3NzU5ZGNkOWQ2ZTA5OTQwZTNkMzdkZjc3YWIgbGVnYWN5LXRydW5rCis1NTIxIDJjYjE0MTYwMTBiMzM2MTYzMWIzOGU3ZmE1MGVhNmE1OTg0YjJkMzAgbGVnYWN5LXRydW5rCis1NTIyIGVkMDg3NDM5ODQzM2RhOGY5NGI0YWE2ZmIzNDAxOTI3OTZkMWQ5MGUgbGVnYWN5LXRydW5rCis1NTIzIDdlMmMwNGU2ZjdlNzE3MGJhN2UxMmI2NGJhNGZjNjQzMmYzNjA3OWEgbGVnYWN5LXRydW5rCis1NTI0IDI0YWY4ZWFiN2I3NjNiYjQ5ZDI3NDAzOGZhZWNmZjMzZTAwMGM1NzMgbGVnYWN5LXRydW5rCis1NTI1IGQ5NGI1MDBjYjk4NjMwNjgzMTc2ZTNiMjdlZTc0ZTcwZjUxOGIwMmYgbGVnYWN5LXRydW5rCis1NTI2IGMxMjAzMGZiYjViNjBmYjViOTc1NjhkOTBkZmJmYTQ2MTRkNmU0NTQgbGVnYWN5LXRydW5rCis1NTI3IDY2MGU2ZjM1OTkxY2JhNDdlZDk3M2NmZjk5MjQ0MTZhOTVjZTMyZGMgbGVnYWN5LXRydW5rCis1NTI4IGRkNTRlZWZkYzJjOTdmMDVkNDllYjc0M2Q0NjdkODBhM2FjNDkzNzEgbGVnYWN5LXRydW5rCis1NTI5IDhkNTE3OTI3Nzg1OGJlOTkwN2EwNDMyZTZiMDQwZTYzNmMwYjdmYjIgbGVnYWN5LXRydW5rCis1NTMwIGIzMzNmMTZmYjQxOTZlOTNkZWVmNGY5YThjMDU2ZjA4YzJhMDVhOTMgbGVnYWN5LXRydW5rCis1NTMxIGRmN2RmYWMzMGMzZTNhOTE4Y2U3MmIyYmNkZjI2YjU3MzIzN2JmYTAgbGVnYWN5LXRydW5rCis1NTMyIGE1NzY4ZTRlZTA0NTMyNDBjZGZiMWIwNDMyMjUyZjU2YTQ1ZDBjYzYgbGVnYWN5LXRydW5rCis1NTMzIDEzNGM2YzJkMWFiZjljOTVkOTBhYWY1ZWU4YzE2NTMzY2ViZDM4NGEgbGVnYWN5LXRydW5rCis1NTM0IDZlYzgyMGRiMmZmYWY2NmFhYzE1NmJlZmMzZTE2Njk5NWQyZWExZjAgbGVnYWN5LXRydW5rCis1NTM1IDMxYzUyYTBhMzcyYzBlZWM3NWNjNGI3MjI0YTU0NGQxZjk3ODEyZGUgbGVnYWN5LXRydW5rCis1NTM2IDMyOGFjNzRmNmNhNjk4MzRlOWU2NTk3OTg5YjJhZTgzYWVlYzZmYTggbGVnYWN5LXRydW5rCis1NTM3IDI0NmQ1NDIyMTI0Zjk5OWNkMThjZTE5YjkxYjZlOGNmYmYwNWUzZTUgbGVnYWN5LXRydW5rCis1NTM4IGZiYjhlZGRjOTMwOWZiMWU4ODIwNmU5MjhiNTNlYWVmNWYwMjc1MTkgbGVnYWN5LXRydW5rCis1NTM5IGQxNGNlZjE0ZmJmMjdlNzBiODJhZjE4YjJiNDQ2NDMyOTVhNWJiZDEgbGVnYWN5LXRydW5rCis1NTQwIGQ2YjEzMGZhOTFiNjVkMzlmMDNlZTIxYWEwZDcxNThjYjc0ZWUzYjcgbGVnYWN5LXRydW5rCis1NTQxIDk3MWU1Y2ExOGJkMWQ4NGFlMzZlOTZiZTkzODUxMGU2YzQ0NzVmNjAgbGVnYWN5LXRydW5rCis1NTQyIGU0MjlhN2U3MWUwY2NkMjJkMTExZjZiOWI3Mzk1YTJhODE0Y2QyZWEgbGVnYWN5LXRydW5rCis1NTQzIDY5OWNmOGI5NGY4MDJlODdmZTgzZjcwZmM2MWMzNTUwZWYyOTA0YzcgbGVnYWN5LXRydW5rCis1NTQ0IDcyMjZkZDMxNzU1YzcwM2IwMGQwYjAwOGNmOGI1MmEwN2U2NWY4OWYgbGVnYWN5LXRydW5rCis1NTQ1IGUzZmJjZWQxYmMwOWIzMThlNTYyYzkzNjRmM2ZkMjE0MzhhOTE2N2EgbGVnYWN5LXRydW5rCis1NTQ2IGJmYTQyN2RhNTgwZWNkZjM0YjQ0YmZiMWU2MDEyYmI5NGY1ZWFiNjAgbGVnYWN5LXRydW5rCis1NTQ3IGRiODlhYWI0MTVhMWI3YmJlNmMzNDU1NTc0OTQ3ZWM4NDI4NzMzZWYgbGVnYWN5LXRydW5rCis1NTQ4IGVhZGEyNDg2NzZkZWY2M2I4MDdmNjA2YzgyMGUyMzQ0NTIzZGMzYjggbGVnYWN5LXRydW5rCis1NTQ5IDg3ZmVhMjYxYTI2M2U3Y2YxZjllYjQ1YzhiNDZmMTViNjc0M2Q1MTIgbGVnYWN5LXRydW5rCis1NTUwIDA3Y2I1MDE0MWQwNzA3MmFhNTdhYWU0ZWNjNWRiMDA5ZmVmMzUzNjUgbGVnYWN5LXRydW5rCis1NTUxIDkxYzFiYjc1ZTk0NWNmOGNjOTZiMjcwOTgxN2IxYjk4MTUzMjc2MDQgbGVnYWN5LXRydW5rCis1NTUyIGE3Yzk3YzQzNzE5MWQ0NGNjZDEzMGY3Yjg3OWIyNDY5ZDRjNzQ5ZjUgbGVnYWN5LXRydW5rCis1NTUzIGQ3ZWVhOTAxM2U3MzYyODhiM2RmYTdjNDc5MDkzMThmMzQ2NWQ0MmQgbGVnYWN5LXRydW5rCis1NTU0IDMxNjg0YzViYjE3MjdjY2I0ODY2MzI2OGJkM2EzMWM1MWQ2ZDAwODYgbGVnYWN5LXRydW5rCis1NTU1IDc1OTM2OTkwYTMzMGMwYTQ0ZWNjOGQ1ZjQ3MzM1M2NhYTIzMTI5ZmIgbGVnYWN5LXRydW5rCis1NTU2IGVmOWFjNmRlZjcxZDNiNmVjOTM4OWUyNTE2ZjdlMDQ4MDc4ZWZkYzEgbGVnYWN5LXRydW5rCis1NTU3IGZiZmEzZDNjYTRlMDk1NjZkMzRmNmJlYmExMDBiOGQ0ZjIwYmZiNGIgbGVnYWN5LXRydW5rCis1NTU4IDdkZGZiNjI5YWMzZmU5MDM4NWE0NWVjMGFhYTA4YjRhYzA2Y2M0M2UgbGVnYWN5LXRydW5rCis1NTU5IDFmZjEyNjE5YTE0YzdkY2ZkZDIzZTEzNzA4NTMzZmE0OWI1ZTI4ZTQgbGVnYWN5LXRydW5rCis1NTYwIGIzYTgwMTNjYjRmYTM2NzU1MzJlNjU1MTg1Mzk0YzliMGU0MWE3YWIgbGVnYWN5LXRydW5rCis1NTYxIDVhMWZiZDIxZmMyYTVhNWY4NDYxZDIxZDExZmM1YjE3ZGI1Y2Y0OWMgbGVnYWN5LXRydW5rCis1NTYyIGMxZDc3ZDc0ZmUzNTA2OGZkYmMzNmY0YzdmOGNlZjdiZTQyYWQzZjkgbGVnYWN5LXRydW5rCis1NTYzIDg0MTA0ZDZiNGFlN2VkZjAwNTRiYzY0MTZiYTliNzkxYzBlNmRiODAgbGVnYWN5LXRydW5rCis1NTY0IDhhYTY5MThhODhjNmIxNTQxYzdkMGNkNmY0OTYwYzQ0Nzg4ZmUyOTQgbGVnYWN5LXRydW5rCis1NTY1IDRjODNmNTY5YjQzNDU5M2IzODU1MzI0MGY1MTc2NGJlNjI5YWY2ZDIgbGVnYWN5LXRydW5rCis1NTY2IGQyNDkxMTFkNGNjY2ZmNjg0MWZlODgwYmZhZjQzYmI0Mzk5NWI2ZDkgbGVnYWN5LXRydW5rCis1NTY3IDE3MWVlZjY5YTJjZDA4N2Y2MzEyNWIyOGIzM2I2Yjk1ZjU5Yzc3ZjMgbGVnYWN5LXRydW5rCis1NTY4IDIzN2MzYjJhNjE4NzFiMDc1N2I1OGU4MmRhODRkZDM0Y2RjYjVmYTQgbGVnYWN5LXRydW5rCis1NTY5IDY5MjcxNWFiYmQwYmJlZWY2ZjFjM2E0NzJjNzZjOTBhNTcwOTJiOTggbGVnYWN5LXRydW5rCis1NTcwIGU1MWUxN2IyZDg4YjE1ZDlhOTU5ODZlYjEzYWY4YTYyZDZkMTc5OGEgbGVnYWN5LXRydW5rCis1NTcxIDU2ZGJhMDM3YjhkNmM2NTY0NWMxZjg5YmM3OGUyMWIxY2QwZGQxNDEgbGVnYWN5LXRydW5rCis1NTcyIDQzOGY4OGI1NTE1NGFkNGM0MmM2MDUxNjc0OTgyNDMxOTNmNTQ1Y2QgbGVnYWN5LXRydW5rCis1NTczIGM0MWE4ZTUwMTk3MzQzYzk3NzE4ZjYzNmE3MDUxNmE2YTdmY2RhMmIgbGVnYWN5LXRydW5rCis1NTc0IDNkYzlmZjNhYmYzNjE2MzJkZWNkYTE5YTYxNzY0ZWQxYjhmNWIxOTggbGVnYWN5LXRydW5rCis1NTc1IGE4ZmNjNTExYTg5YThmMzdhOTMzMmM3N2Q5Mjc4ZTVhMWIxMWQxYzQgbGVnYWN5LXRydW5rCis1NTc2IDE0MTIzZTA4ZTg4N2U0MjgzYWQ2NDg4YTc4NDY0YTA1ZDcwZmEyZDUgbGVnYWN5LXRydW5rCis1NTc3IDVjMGE3Zjc4MzZmYjFkYmQ0MDViZDExYTA3NDg0ZmFkMWZmOTg1MTEgbGVnYWN5LXRydW5rCis1NTc4IDlmNzYxODVjOTY5MzdjZjU1Y2RhOGZlYjdlNjU1ZjgyMjU0M2E1M2MgbGVnYWN5LXRydW5rCis1NTc5IDM2ZjRkNTQ2OTkxNTMzYzk0YTQwMjZhMDM1NTc4MjI3MWJlMDZiZmUgbGVnYWN5LXRydW5rCis1NTgwIGFmODIyOTExMzViZDA2YzBmODM1YjU3ZjQwYzQ1ZDdjZjEwMTVhNjcgbGVnYWN5LXRydW5rCis1NTgxIDNhYWI5MjVlYmZiMDM0ZTA1Y2I3OWMwMWY1NzQ1NTVmN2Y2YWY4YjcgbGVnYWN5LXRydW5rCis1NTgyIDk0OTdjZGNkYjZhYTUxYjRmMWFmZTViZWE4ODY4M2U2MzAxZDBhMjAgbGVnYWN5LXRydW5rCis1NTgzIGRiMTM5YTQxMTJmMzJmNTM4YzM1MGQ5ZGFjYzY1Zjk0MzQwNDA2NTcgbGVnYWN5LXRydW5rCis1NTg0IDA3NzM5OWNjODJlOGNlYjI4OGIwMDU1NzI1OGI3YTIzMGRmNGY3ODcgbGVnYWN5LXRydW5rCis1NTg1IGU0NzcwOTRhOGNhMTA4ODIwZjhmNDM5MDJiNmMzNzBkYzQ3ZjQ2YmQgbGVnYWN5LXRydW5rCis1NTg2IDEwNzFkMTZjOTMwYzFkODY5Y2UxOGRkMGViYWE0MTM2ZjQyYjQ4YTMgbGVnYWN5LXRydW5rCis1NTg3IDRhMTJhNTQzMTc1ZDBiYTlhOTMwNjBjYWIzODA1MTAzNTg0YzM3ZjUgbGVnYWN5LXRydW5rCis1NTg4IGMxMGY1NWI0NmExMTUxYjFiOWJmNjBhYTUxODA5ZmQ2MzYyZjBkMzMgbGVnYWN5LXRydW5rCis1NTg5IDJjYWEzZTI4MzU2OGQwNzVhNGNkMjA2Njk3NGU2MDQ0MTI5ZjNhMTMgbGVnYWN5LXRydW5rCis1NTkwIDkzNTYyZGRlMjI0YWI3ZDA5NGU1Yzc2NTg0NmFlOGJlZTU3MGEyZDcgbGVnYWN5LXRydW5rCis1NTkxIDE3ZjMxMWVhMGM5YTA3YzU1YmQyMGUwYjMwZDlmMTliNjYyZTE3YWUgbGVnYWN5LXRydW5rCis1NTkyIDkwNTY2YzljMTg5ZjMyZDFiNzk0N2M5ODNlYTU4NmJmZmFiMjUwOWEgbGVnYWN5LXRydW5rCis1NTkzIGU5MDY0M2YzM2M2NGMxMmE2MjgxY2ZjZGQ5YTVlYTMxMjg5ZTdmNTUgbGVnYWN5LXRydW5rCis1NTk0IDg3MTBkNzE0OWM2ZjFiYmVlMTViMjc5NDFlZWEzMjE0ZTNjYzAxN2YgbGVnYWN5LXRydW5rCis1NTk1IDI3YTA3NjlkYjkyMTkzMzQwZTY3N2FlY2Y5MGJiZWFiNmQ5MjAyZjkgbGVnYWN5LXRydW5rCis1NTk2IGU4MzVhMjJiMGJkZGU5NGZlYmMwMWFjMDY3MzVlNjFlMjA4OWI4YTggbGVnYWN5LXRydW5rCis1NTk3IGRjZjJhMzdlNzNkOWQzNmYxODFhNzRhYTdjYmEwOGFjZjVhM2Q1NTggbGVnYWN5LXRydW5rCis1NTk4IDcxYmI3MWUzMDZmZTJkY2I2NmU5NjVlMGRkOGU3NDU5MzgwMDc1M2MgbGVnYWN5LXRydW5rCis1NTk5IDcwZWU0ZTNjYjNkODM4MjY0Y2UxNGE3MDBhOWQwODIxNjNkYTA1YjYgbGVnYWN5LXRydW5rCis1NjAwIDU5MTI4N2EyMmVlNTk2ZGVjMWIxZDZiZTBiYmY4ZTc2ZWY2M2E0MGUgbGVnYWN5LXRydW5rCis1NjAxIDI2NzdmYmIxMTdkNjJiNDUxYWZjYzQ5NzY2NmYyOGRlMTA1NDA0YjUgbGVnYWN5LXRydW5rCis1NjAyIDk5OWZjY2U0OTZmODQ5NTQ4OTgyYzRhNTQ1YzA1ZjZkYjY0YmVkZDkgbGVnYWN5LXRydW5rCis1NjAzIDFiNGI4YTRmYjQ2MzM0MDE3MTA4NzczY2NiNTBkMjc4NGM5NDkxOTIgbGVnYWN5LXRydW5rCis1NjA0IGFkY2M5MTZiNzYxNmQ4MDc0NmMxYzEyZjBlOWFjMmJhYjM1MWZlYmEgbGVnYWN5LXRydW5rCis1NjA1IGYxZjE4YzU1ZDEzNjQyNDU0MjY5NjJiOTBmNzllYTkwMThjMmMzZTQgbGVnYWN5LXRydW5rCis1NjA2IGRmMDdmMjg3MTFmZGYzMjg5OWZiYWZkNzM1MjhhYTk2ZTNhNTQyNGUgbGVnYWN5LXRydW5rCis1NjA3IGNkMzg4Y2M5YmE5OGRjYjg5ZmE4MDJlM2ExZTk5ZDRjMDc2OWFiZjYgbGVnYWN5LXRydW5rCis1NjA4IDNmOGE3MzM4MGM0YmNjZDE4OTA4NGFlNDAzYzFiMDdhYTk2NmJmMGEgbGVnYWN5LXRydW5rCis1NjA5IDM5M2I2ZDgxYjEyNmIyNzRkNjdkZDlkNjFlZmI1MDk5YTA5OTMwYjEgbGVnYWN5LXRydW5rCis1NjEwIDdjNWY5NGY1NmY3OTM1ODY5ZWNkYmZmNjU0ZWFlMmZlZDk1MTI4MzMgbGVnYWN5LXRydW5rCis1NjExIGZiZjU4ZDI3OGQ2NDVkMGE1MjdiZTk4ZTY1NmU0YzRhNGQ4ZDJlZTEgbGVnYWN5LXRydW5rCis1NjEyIDQzZjhkYjIzZWYxNWUyMGNiNTY1OWRhMGYwMjM2M2I1ZjNmM2NhNmYgbGVnYWN5LXRydW5rCis1NjEzIGE5NWZmODY3NTcxODEwZTZlMjU0YWNmNjZkZmJkZDJmYjRhYjFkMjAgbGVnYWN5LXRydW5rCis1NjE0IDcwYTkzMjdmNmM0YzZiMmIzNTk4YjVhZDVmYzEyNjdmYzJkZjViYTMgbGVnYWN5LXRydW5rCis1NjE1IDQ4ZGI1ZDlhMjc5NDFjMmUxODc5NDEwYzdhZmM1OTBlZGUyOTM3ZjMgbGVnYWN5LXRydW5rCis1NjE2IGJhZDk3YjQwNTE2NjZhMmRmMmY2MWFkZTMxZWEyMDUzNjAxZjYxNWEgbGVnYWN5LXRydW5rCis1NjE3IDQ5MGJlODY1YWEwZDU3OWVlZDQ0YTZhZTg2OWEzZTU4MWU4MTllOWQgbGVnYWN5LXRydW5rCis1NjE4IGFjZmY3OWRkMTRiNzUwN2Y2ZGNiYTQzMDc1OTNiNTc1NjcyYWVlMjYgbGVnYWN5LXRydW5rCis1NjE5IGEzNmUzMDI0MGQwNmY0ZGYyNjdhOWEzNTI0ZjBiMzI2Y2M1ZmM3MmMgbGVnYWN5LXRydW5rCis1NjIwIDlhODk2MDg2ZDNjMzcwNDE0MGRjYzViMDA3MDFiMmY5MDMzN2MyYTQgbGVnYWN5LXRydW5rCis1NjIxIGNkN2VhYTYyY2MzMWI3ZjY2MzY0M2NjMzNlYTUzN2EwNTBmZDhlNWYgbGVnYWN5LXRydW5rCis1NjIyIGQ2ZGQ1MGZlMWVjYWI3NTQ3MmMzNGQxNTA0ZWVlMmI2M2VjZGM1NjggbGVnYWN5LXRydW5rCis1NjIzIDkzMTUzZDVjMzMzZDA3ZDExYjUxNDUyOTkyNmFjNWU2OWRhNDdiMGMgbGVnYWN5LXRydW5rCis1NjI0IDQ2OTM2OWFkMmYyZmJhNGM4ZTA2Y2IzOWRjM2IyYWEyMjI0YTM2ZjYgbGVnYWN5LXRydW5rCis1NjI1IDU5NjFiNzZkNzg5OTZlMzVmNWQ0Y2IxZmYzNzkzNzdmNGE2ZjMwYTEgbGVnYWN5LXRydW5rCis1NjI2IDRjYjEyNjA0ZGE5ZDllYThhNGU2YzlhMDU5ZjA5NmU1MDk5ODA3ZDEgbGVnYWN5LXRydW5rCis1NjI3IGZkNGYwMDhkNzc0M2I1MWVmOTdkNTA2YzdmYTA3NjY3YmVmNDk5ZjQgbGVnYWN5LXRydW5rCis1NjI4IDIyMDVkYzQ5OGFkZmJlYjBlZjVhOWE4YzQzMDZiMjhjMTdhNzE2N2UgbGVnYWN5LXRydW5rCis1NjI5IDQwYzY4ZWJkNTg5MWQ5YjRmNzJiZTMxNDY4Y2I0YWEzZGM0NjRmYzkgbGVnYWN5LXRydW5rCis1NjMwIDMxNzJjMzljZGFkODA4N2Q1YTcxMThhNzliYzliYmYwOGM4YTY0MjYgbGVnYWN5LXRydW5rCis1NjMxIDk1ZTgwYjZiOGYyZTQ0Y2ZiYTFkZGM3MjY3YTYzMjliMjQ2OTQ2ZTEgbGVnYWN5LXRydW5rCis1NjMyIDkyZTE0NWY4NDE0ZTk2MTY1MTI5YzM1NTgxZTMyY2E3M2IzOWRlZjggbGVnYWN5LXRydW5rCis1NjMzIDkzOGM0MzNjODc2YTNkNjk1YjFkMDdkNzgzZDY4MTFiZjdlODQwZGEgbGVnYWN5LXRydW5rCis1NjM0IGZlOWY5NWIwNDJmYzhjZjA2MTk1MzEwZGM0NGViYTcxMmZiYWI5YjcgbGVnYWN5LXRydW5rCis1NjM1IDk0ODlhMzcyYzY4NjJhMTkyMDU0MmUyMjkxMjU0NDAyNzYwNzU0MGQgbGVnYWN5LXRydW5rCis1NjM2IGZmZjhhNzUwZTdmNjNkYzBhMDFiYjM5M2YyNWIwNGQwYWEzMDk2MGMgbGVnYWN5LXRydW5rCis1NjM3IGI5YjllNjYyOGIzNTM1MzAxYzVjNDgyMGZiOWNhZDY0NTNhZmFhYTQgbGVnYWN5LXRydW5rCis1NjM4IDEzMTQ2Y2I2ZjY3YzYxZGUyNTJjYjZhMjIzODY1ZDZkNzRjYzZmMWIgbGVnYWN5LXRydW5rCis1NjM5IDZiY2NmYzBlZDY5NTk0Mzk0ODUwZDFmZDA4ODE1MjQwNTkxNThkYjEgbGVnYWN5LXRydW5rCis1NjQwIDZkMzRhZGUyZTlkNDUyNzFiMGZjNjVmYjYwZjNmNGUxMmFmMGYzNzggbGVnYWN5LXRydW5rCis1NjQxIGY3Nzg5OTQ1YjhkZWU2Y2Q3N2U0MWUxOGM3MDU1MjdlOWM5ZTFmZTQgbGVnYWN5LXRydW5rCis1NjQyIDQ5Yjc4N2I5YmZhZTI2Y2RhNTZlNjQzYWRkNGRkMmNmYWVmZTRiOWMgbGVnYWN5LXRydW5rCis1NjQzIDA2ZTM0MGY4NTk2MWQxZGYyMDVlNWY0NWQ4OGNjYjc0YTcwMzVkYzcgbGVnYWN5LXRydW5rCis1NjQ0IGNmNmMwYzVkYzczZjc4NjNmMDc3YzBkYzA0ODMzOTM1MWE0MGZiMTggbGVnYWN5LXRydW5rCis1NjQ1IDNlMWU1ZjY4ZmQxY2NhMjFhMTVjZTEwY2I1MDFiY2Q0YTE2NmMxMGMgbGVnYWN5LXRydW5rCis1NjQ2IDJhNGQxMzAzNzNkYjIxOTg4NmVkYzk4Mzc2YzIyNTQzZGE3NTNlNDEgbGVnYWN5LXRydW5rCis1NjQ3IGE0MjAxMmMxODhmZDM4NzliNjZiYjk0YzQ5MjRkOWYzYTlhYzdiZjUgbGVnYWN5LXRydW5rCis1NjQ4IDI0YjUzY2IzMTY4MDk0NTEwZGNmY2MzMDc1YjRmMWE1MjMxODE2YmYgbGVnYWN5LXRydW5rCis1NjQ5IDhmM2YyNWE4MzdiMzgxN2RiYTlkM2EyN2JhMWE5MzFmN2U0NTVmMjYgbGVnYWN5LXRydW5rCis1NjUwIDYxY2ExOWEzMDAwZmVjMTI4OGFmYjU5NmZiM2YyY2I0OWRiNjMyYTcgbGVnYWN5LXRydW5rCis1NjUxIDdiMmY2OTU0MDViYWZiZmJmZDhhY2U5ZTAzNzVmNWU0MGQ0MzZiNjAgbGVnYWN5LXRydW5rCis1NjUyIGMwNTZmNjg1YzA4MTNjOGU0NTNhNWM5NzQ1NDQ3N2NjNDY5NDg4ZGQgbGVnYWN5LXRydW5rCis1NjUzIDgzMDFkNTVlYjY0YmUyNjhkYzU3ZTkxNDgwYzViOGNkYjMxNWFkZDQgbGVnYWN5LXRydW5rCis1NjU0IGNjMzlkNjJiMjdmZDExNTkwMmM1NjQwYjYyZDExZTM0NmU2NzlkZDIgbGVnYWN5LXRydW5rCis1NjU1IGY0NzJiN2VjMjVjNTgzYzYyYjg4OTFkZTI2ZTkyM2JkODU2YmU3ZGMgbGVnYWN5LXRydW5rCis1NjU2IDAyYzhmNzRkMDhkY2Q4NGQzNjIwZjNiZTIwMTUwYmY1YmE1MjNhOWYgbGVnYWN5LXRydW5rCis1NjU3IDI4ZGZjNDY3MTg1ZmM0MjU4MzhmOGRiNTk3NWI5NTllN2RkYzBjZDAgbGVnYWN5LXRydW5rCis1NjU4IGY5ZmQ1MTIyNjgwZjMzM2QzYzk3MzllYThlZmVkMzMwOTE3NGY3YzMgbGVnYWN5LXRydW5rCis1NjU5IDJhYTc5ODM3YWVlNTZlZWE3NjhmMTVjYjU1OTc0MjU0YTgwMzlmMGEgbGVnYWN5LXRydW5rCis1NjYwIDgyMjRmMGJjNWNkYTQ5NDJlYWNhYmEwNDEwOTJkN2U4MDc4NWJkYTkgbGVnYWN5LXRydW5rCis1NjYxIDA1YWViOTFlM2I5MGQwZDM2MWYzODVhMzgzNDg0ZjMyNGNkZWUwZjMgbGVnYWN5LXRydW5rCis1NjYyIDYxMTkzYzYzMmY1MWUxOTExYTg3MmViNTQxMzJkZWE3YWVjOTI1MzcgbGVnYWN5LXRydW5rCis1NjYzIDE5NWFkOWZiNDU4MzJjNzlhMzJjMDlkMzU3ODk1NDBkNTY3YjNjYTIgbGVnYWN5LXRydW5rCis1NjY0IDVkMTZlY2FlOGVlNzExMTgxZGE2OGExNjMwYzg0ZGNlYjBjNWJhYTAgbGVnYWN5LXRydW5rCis1NjY1IDIxY2Q1MGE0YTNmNzY3YTkzZjA4ZDlhNGI3ODlhOTNhYjU5YTUyODcgbGVnYWN5LXRydW5rCis1NjY2IDg4NDFhNGQ1Y2Q0YmViOGZjYTNkODZhNzUyNDZmY2RlMTVmNWJmZjQgbGVnYWN5LXRydW5rCis1NjY3IDhmNWFiMWE2YzkxNDJlYmE0OWQwODM2M2M5ZjhlNGNhMmM3MGJmMjUgbGVnYWN5LXRydW5rCis1NjY4IDE5YjU4Y2U3OTRjOTAyNjc3Njg3YjdlNjkwNTBmMmJmYzFjNzA3ZDkgbGVnYWN5LXRydW5rCis1NjY5IDY0OTFiZDJiYmRlZmY2ODU5ZTI1NDgxZmQxMzc0Mzk0NmJkNmQwMGQgbGVnYWN5LXRydW5rCis1NjcwIDQ2ZGY2NzJjN2MyNzBkYTM2MGI1N2YwMDcyMGU0Y2I1NWQwYjFmMmUgbGVnYWN5LXRydW5rCis1NjcxIGQ1ZTc2YTk1YjU2NjVjOTA5MWI1NWNhYmUwZGYyYTU1ZGE1NmI3NTUgbGVnYWN5LXRydW5rCis1NjcyIDNkMTIyZjAyZTY0OTg3MjY5NmJmODQ5MTI4OTNlZDkwNjExMGNjZDUgbGVnYWN5LXRydW5rCis1NjczIGRmMmYyNTJkY2QyOWRkZTdmZjI0YWVjYWJkMzM3YjFlMDUzMThmNmMgbGVnYWN5LXRydW5rCis1Njc0IDBlZDVjZDhkZjUxZjk4MTYxOTE0ZGEwOWZlOWFiYzA1M2FmMmEyYjIgbGVnYWN5LXRydW5rCis1Njc1IGEyMjdkY2U0ODQ1MTdkYTYxNTBhMGE5NGE3NzA0NzAzYTY5ZjlhYzQgbGVnYWN5LXRydW5rCis1Njc2IDJiNWM4NzM4MTMwY2Y5NTIyZjFmYmY0YWRiYTgyNTBhZmYwOWM2ZmUgbGVnYWN5LXRydW5rCis1Njc3IGNkZWJlZTRhM2UzZTg3MWE3ZTZmNWZlNmMxMTk0ZWQ4ZGRjY2EwMzUgbGVnYWN5LXRydW5rCis1Njc4IDk4ZTJjYWQ0ODU3ZjFkMmJkNTM5OWRhMzdiOGQyZjhhZDIwOWU5NzQgbGVnYWN5LXRydW5rCis1Njc5IGM3Y2RkMjJhNDg1M2FkOGJhMDA5YTFmZGY3NWZjNTJmMjE3NzlkMmEgbGVnYWN5LXRydW5rCis1NjgwIDIxZDRhMDdiMTg3NWIxYWRiYzcwYmE2ZDBjZGY1NTU3YTRjMGQ1NjEgbGVnYWN5LXRydW5rCis1NjgxIGZmZTAzMjgzNjkzNzM3MzUwNjliNDQ2ZmJjODhjYzM4NzJjZjgzMDggbGVnYWN5LXRydW5rCis1NjgyIDNiMmJlODExYTY2YWFhNmJmZGY4NWRjMzdmYzYyZTgwYjZmMDg5ZTkgbGVnYWN5LXRydW5rCis1NjgzIGQwMGE3OWViYjAyNzM0OGNkZGY1ZTI1NDliNGVkYzZjNzNjN2QzMTcgbGVnYWN5LXRydW5rCis1Njg0IDgwMTI2NWI4NjE2NDAyNDQ0YWQ3NzlmYmViNTY2M2M5MWRjMmUxN2UgbGVnYWN5LXRydW5rCis1Njg0IDdkNzQzYzg2NWE5YWE2YmRlOGI2MDNlMzJlMDU0MjAzMWJiYTNjMzMgbGVnYWN5LXRydW5rCis1Njg2IGU0NWYzZDI2MmFlNGE5MjNlZDhjNDBmMGRmOTlkZjk2Y2UwZjQzZjggbGVnYWN5LXRydW5rCis1Njg3IGYxY2MyNDdmZmYxMzdkOTRkYjgxMmU5ZWNjYzZiYmM4YWU2ODY5NGQgbGVnYWN5LXRydW5rCis1Njg4IDc4ZTE5NTNmYzliMmYzMzQ1MzYwMmJiMmRlODdiMDVjY2M0NjU3NmMgbGVnYWN5LXRydW5rCis1Njg5IDBmMzhjZWM1NjUzOTFlNTMwZWE0Zjg5MjAzZDhlOWUwNzk2ZjlmOGQgbGVnYWN5LXRydW5rCis1NjkwIGU3NDE3YTU2ODU4NmFiMzkyZDFhNjQ5NzMzZmEzNmY1ZWMxMDQ5MDMgbGVnYWN5LXRydW5rCis1NjkxIDJmYjM5OGFiM2U2YWIwMjgzZDllMGQ3M2ZiM2FkNWY3MDkxMzI5NmIgbGVnYWN5LXRydW5rCis1NjkyIGU1NTRhNjFhODQ2OTRmYjE3NzA4ODEwZDdjZDU4NjlkZWExNTU0NDAgbGVnYWN5LXRydW5rCis1NjkzIDhjMGE1MTgwZmEzNmVhZjI0ZWNlYzU0M2UwOTFkOTdjYjBkNmJlMmMgbGVnYWN5LXRydW5rCis1Njk0IGVmYjk3MTQyOTkyZTQ4OTc4OTY4ZmJhYmUwYzFjYTcxOGZlYzlhZDQgbGVnYWN5LXRydW5rCis1Njk1IGY0YTU5ZmZlMWE1ZjVjMWM4MjM1MjhjY2JiOGMwMWQ2ZTMyOGVjMTIgbGVnYWN5LXRydW5rCis1Njk2IGUzMzdiZjNjYjQzYWVhMzg2ZTYyNTk3MjRjNWZhODQzNjNmNDIxMzEgbGVnYWN5LXRydW5rCis1Njk3IDExOGMwNjNkZjQ1M2MyYzJmM2Q2NzYwMTczNTM4MDYwNWRmMzc3Y2MgbGVnYWN5LXRydW5rCis1Njk4IDFhY2MwNDQ3OGRjMzEwZThjNDA1MWYzMjM3ZTZlNmZhOTQ2MzE0MTQgbGVnYWN5LXRydW5rCis1Njk5IGVhN2VjNGE0YzhkMmY1MzBhNjcxMGY4N2YyN2EzNDczMDYwZWM4MDIgbGVnYWN5LXRydW5rCis1NzAwIGZkNTczYWM3NTk0NzQwMzU1ZjA1YzQxYzkxMjliNzhiNjY5NGMxZTEgbGVnYWN5LXRydW5rCis1NzAxIGFhZmU3ZDYzNDk4NTI3ZWRmN2Q5NjE0YjcxZmFiODQ5NGU5MTc5MDYgbGVnYWN5LXRydW5rCis1NzAyIDNkZjlhYjAzYmFkZmZiMmVjMmNmNGY4NjllZjJhYjdhM2QyNzIwOWEgbGVnYWN5LXRydW5rCis1NzAzIDQ2M2IyNmZhNGQ3Yjc1Njc4NTBjMWI0NTA2YWNhODZhNGQ3MTMzZWEgbGVnYWN5LXRydW5rCis1NzA0IDYyYmJmZGU0MWIxNDQzYmE2NzY5ZmI4NTYxMGUxZDYxNDBiYTUyMDAgbGVnYWN5LXRydW5rCis1NzA1IGQzNTEwZjExMThiNmI3NzJhOTRlMWZiMDQwM2ExOTQ5N2M4MzA5ZTQgbGVnYWN5LXRydW5rCis1NzA2IDI4NWRiYTRlMGU1MTZjNTA3N2MwYzE0ZWI5ZmNkZTMyMTU1NDBkNjUgbGVnYWN5LXRydW5rCis1NzA3IGY3ZmQ4NWIzMmE3ZDg1ZTQ5NmNlNzg5YWM0NDU3MmUyOTdmNmJiNjAgbGVnYWN5LXRydW5rCis1NzA4IGU5Mjc4OWE5NjBhMDI3MmIyZDE0MGMyNTZmZjJjOTJmZGU0ZjM5ZTEgbGVnYWN5LXRydW5rCis1NzA5IDMxMzYzN2M3N2RhYTAzYTI5NWNiMzE3NzNlNDBlZjY4MGVlNzhiY2EgbGVnYWN5LXRydW5rCis1NzEwIDQwNWRhNTU2NjYxZDY2YWE0NzllYWU2OGVlMjM1NmZhZGI1YmQxZmUgbGVnYWN5LXRydW5rCis1NzExIDI4NDJmZmE1MjEyNjBkZDc1NTQzNTA2ZmI2ZTY5YmNjMDRlZTViNzEgbGVnYWN5LXRydW5rCis1NzEyIDE4YjYwZDhkOWUzNWEyNjRiNDZlYThlYTczNDUyY2I3MTVkYTE1ZDUgbGVnYWN5LXRydW5rCis1NzEzIDdiMWE2YmJhMjU4MDViMzlhM2FkYjRhODA1Nzg0YTA5MDFmNTUwMjcgbGVnYWN5LXRydW5rCis1NzE0IDIwZDc0ZmEzYjUwYjFiZjA3MmFkMThiZjdhMmViMTcwYjA4ZjlkYTEgbGVnYWN5LXRydW5rCis1NzE1IDVlMTAxZWFkMWU2OTkwOTUyNGZiNTBkNzQ1YTk0Mzk3N2NlM2JhMTUgbGVnYWN5LXRydW5rCis1NzE2IDFjZjZlMTA1MjJlMDkxNTYwMWUwNjA0OGRhODViODI4MDUxYTJkY2QgbGVnYWN5LXRydW5rCis1NzE3IGVkMGQxNDhmYzA1Yzg3OTc4NmFjNGQ2YjdkZGMyOTc0MTY1MGQ0YzkgbGVnYWN5LXRydW5rCis1NzE4IDFhMzlkNDA3YjRkMzkwMjlkMzEwZWY3OTgyNDAzNTkzNDM0NzliNjEgbGVnYWN5LXRydW5rCis1NzE5IDQ2N2UwZjJkNjc4YTExZjQzMWIzZTZjNzNmZmU3OTE4YzRjYTRkYzQgbGVnYWN5LXRydW5rCis1NzIwIGY4OWNkZGE3NDA1YWM0YzcxZGYyMmFkNmU3MzE1NDBjOGEzNDczZTggbGVnYWN5LXRydW5rCis1NzIxIGNjNTQ3NDIyMWM4Y2IxYTYwMjFjMmJkYjEzZDliMTdmMTQ0ZDUzZTAgbGVnYWN5LXRydW5rCis1NzIyIDMzMzEwY2I2YTVkNzY4MzQyMDk4YTFmNTYxNDM4OThkY2Q1MGYzODAgbGVnYWN5LXRydW5rCis1NzIzIGE2YjA3MDQxMDZjOGNmZDY1MThkMmRlOTE3ZGJjYWQ0NDM5NjMzM2UgbGVnYWN5LXRydW5rCis1NzI0IGJhZDdmNTZjODNiMmI2MmExOGVlZDExNmI4NWY4NjYyYzhmOTZkOGUgbGVnYWN5LXRydW5rCis1NzI1IDZlNDhmYWI2OTkwZjMxNGZiNzYxNDU1YjNmZjI1MjYxYzA2ZDY4ODUgbGVnYWN5LXRydW5rCis1NzI2IGRiMTFhMmJmZWE2NmRhNDNiMDYzNmEyMGU2MWY4NmJhZmJlYTc0NGIgbGVnYWN5LXRydW5rCis1NzI3IGIxY2E2NTk3MWUzNmZhYTY2ODVlZDYxM2FkMjEzZmExNWFhYzg4YmYgbGVnYWN5LXRydW5rCis1NzI4IDRmNDA4M2EyNmJmMjIzMzkwMTU1NzE3ZmQ5MzgxMDQ3NDYwOTZhNWMgbGVnYWN5LXRydW5rCis1NzI5IGJmYjYzYjQ1ZmYwZjY3N2FjMTdhMDYzOTZkZGFhYjc4NGM2MDZkYjEgbGVnYWN5LXRydW5rCis1NzMwIDhjNThhYjdhYTcxZWYxMDFmMzMzZjVkMzgyOTg4ZjMyNzQ1Mjk3ZjAgbGVnYWN5LXRydW5rCis1NzMxIDJjMWUzZTg3NTEwOTk2ZmIwM2JmNjNlNzYyZTFlZTBkYWM1YWU0MzMgbGVnYWN5LXRydW5rCis1NzMyIDJmODM3ZDgyNDEyMGQ4OTJjZGY4OGI4MTJlODg5M2MxOTM2NzMxZmIgbGVnYWN5LXRydW5rCis1NzMzIDE1OTc3NGFmMmVkZTY2YzBjMDkyMjhiMzU3NjZhOWFlMWJiMGE2ZjQgbGVnYWN5LXRydW5rCis1NzM0IDhlNzMzZjkyZWRjMDkzNGY4MzdlZjRjZWQzZWY5MzI4NTEwYzk3NzAgbGVnYWN5LXRydW5rCis1NzM1IDdlYWMwMmE2MTc2ZWRmMjgxYzVmNDUwNzVjMDY3ZTYyNzNhZmZmYTcgbGVnYWN5LXRydW5rCis1NzM2IDExNzYxOGRkMGU3ZjUzMzA0MGY4ODkzZmFkMzJlYzVlMTgyZDc2NjAgbGVnYWN5LXRydW5rCis1NzM3IGIxNmZjZDEyNmIxYzI0ZTZlOTk3MDg4MTYyMTBkYmNiNjEwNThiZmEgbGVnYWN5LXRydW5rCis1NzM4IDAzMTdhYzUyMjYwNTgxN2M2ZmUxNzUzNmFjMjUzOWRlNzExODViYjUgbGVnYWN5LXRydW5rCis1NzM5IDYxMjI3MzBiNzk4ODUxNmY0NmFlNTM4ODdkOWQyYjBjNTMwZDNjN2MgbGVnYWN5LXRydW5rCis1NzQwIGY5NDc4M2I5YmZiYWI3ZTE2MDk2YTgwMTI3NDI3MWI5MWM4YTgzMzYgbGVnYWN5LXRydW5rCis1NzQxIDk3NWNjZmE3MjFmNmJlYWY0NTM5NzUxOGRmNDkyOTVjMTA5ZDc2OTcgbGVnYWN5LXRydW5rCis1NzQyIDNhODNjMDE3ZGYxZWNhOTU1ZWEzMWI0OTIwNTAyMWMzODYzZWU1NmMgbGVnYWN5LXRydW5rCis1NzQzIGYxZmIzMjZjN2UyZmUxYTA4ZWM5MzQ1MDZkYjQ3Y2JmYjYyYWQ4N2UgbGVnYWN5LXRydW5rCis1NzQ0IDM2YTE4NDg5NWViOTgwYTZkOGVjM2MxYWI4ZWExNjk2N2EyZWMyMWIgbGVnYWN5LXRydW5rCis1NzQ1IDQzYzVlN2EzZmMxZmI2MmFlMzY3ZTk2ZjVjM2FjNTE3NWI5MTEzOWMgbGVnYWN5LXRydW5rCis1NzQ2IGE4MDY1NzYyYTM4ZWEwMWM1NTZmZjRiM2E5MjEyNjcxMTkxM2M4MGMgbGVnYWN5LXRydW5rCis1NzQ3IGY4YTA3MTcwMjRmZTRiZjdjMzdiOTg5YmM3YzU2MThmYjcxODgzZjggbGVnYWN5LXRydW5rCis1NzQ4IDg3MWM3NjhkMGRhMjIwNzcyMzJkYmVlMTI1N2ZjODIxMWQ0NzdhMjggbGVnYWN5LXRydW5rCis1NzQ5IDZhMThjNGNiNjhkODQ0YzZlYTdiNmZjYzljZjNlNjhjNmEwY2M0ZTEgbGVnYWN5LXRydW5rCis1NzUwIDlmYTJlMjE4ZTJhODRjNjhhYmY2Y2JhM2U5NTJmMDY4NzgxMTAyNmUgbGVnYWN5LXRydW5rCis1NzUxIDNhMGY4NGM2OTA1MGEzYWIyZjhkMzc1MmVhMDA2NzE3OWQ3MmM4ZGUgbGVnYWN5LXRydW5rCis1NzUyIDIxMmVhZTViOTY2MGI1OGUzMWNmZGIzNTUxZGYxNmQyZjFiNmE4ZDggbGVnYWN5LXRydW5rCis1NzUzIDZkNGY3MTQzMDcyMmI1ZWRhZDc2YmQxNjE5MTJiNmU1NmI0YTk1ZjAgbGVnYWN5LXRydW5rCis1NzU0IGUzOGMwOWQwMDgwNjhjZmY4ZmZjMGExYTMxNzQ0MjJlYzliNmYxNjYgbGVnYWN5LXRydW5rCis1NzU1IDI4OGUzMzdmNzNlN2U0MzY4YzcwOGVjNTczZWMxZTY2YTdlZDBhYzUgbGVnYWN5LXRydW5rCis1NzU2IDY2ZjRiZjk0NjI3ZmVlMDg4OTUwODc1OGQ0YzI1YzMzYWE5NzI4ZWIgbGVnYWN5LXRydW5rCis1NzU3IDNmNDU1Nzc3ZmYyODQxYWQ1ZjNhMjIxZjZmZDQzY2IzYjc5ZDNlMjYgbGVnYWN5LXRydW5rCis1NzU4IDQ1ZTQ0NDU0N2U1YTM1ZThmZjAwMzNhMTFmMjM1NWVlYmJiZmFiZDIgbGVnYWN5LXRydW5rCis1NzU5IDcyMzU3OTc4ZmZkMjJhMTg1NjM5NTYzZGFlYjA3YTU5OGU5MDdkNjIgbGVnYWN5LXRydW5rCis1NzYwIGJhZmMxMDViYzdjZDk5YTUyYWQ5YTUyY2RkMThkZmNhNjJkMzUzZGMgbGVnYWN5LXRydW5rCis1NzYxIDJiZGRmYjNjZmNmMWFhOGQ4MTFmZGY0MWM1NjM1ODI3MzA1ZWE5YzcgbGVnYWN5LXRydW5rCis1NzYyIDNjYTExMWUwYjFhNzY4NzdlNGRlNjg3Nzc4YmZlZDI1MjY3ZTBiZmUgbGVnYWN5LXRydW5rCis1NzYzIDBkNmI2MGI3NDgzODRjYWYyMTNjODVkYjhiZDEzMDU4MTBlM2YzNTcgbGVnYWN5LXRydW5rCis1NzY0IDU4ZWY0YzQ5NWRlNzYyYzk0NmI4NDIxNDFjNzI0MzYzNmMwMTEzMmEgbGVnYWN5LXRydW5rCis1NzY1IDlhNDA4MTQ0MDc4MzAxOGZlZjJmNTZmNmY2YzI0NWEwMmZiYjY3YmMgbGVnYWN5LXRydW5rCis1NzY2IDQ3NzYzYWM0NGM0ODZiNzI1YjRkYzMxZGZkYzQ0ZDkxZDA2MjE4M2EgbGVnYWN5LXRydW5rCis1NzY3IDk3Y2Q1NzcxYzIzZTI1N2QyZTU3MzlhOWE0NTIwNTI2ZmViYzZiNjYgbGVnYWN5LXRydW5rCis1NzY4IDdmNWI0MzJiODdjNDhjNjM1ZjI5NGQxNjBlYTcwZDkwMjUwZjU4OWMgbGVnYWN5LXRydW5rCis1NzY5IDU0ZjA2Nzg3NTdiMDBmNmUzMmM3ODc5MGFhNjJlNzljNmMzMjAwZDcgbGVnYWN5LXRydW5rCis1NzcwIGQ0ZDVjOWZhNzg1OTJhMTZiMzU2MTBmNjA5OTk2OTNhYmMyZGIyZTAgbGVnYWN5LXRydW5rCis1NzcxIDhhNTA5N2U5ZDdlZTJmMzZjNjc3ZWEwZDMwNzk1ZTkzZjUxZjE5NDAgbGVnYWN5LXRydW5rCis1NzcyIDgzZGFhNTRjMTgxZGQwYmNjMDE4MjE3ZjY1Njg1ZDdhNTMyODQ1ZDMgbGVnYWN5LXRydW5rCis1NzczIDE0MGQ4MjM5YTQ0NmU4ZjMxYzRkYzBhYjk3NmZmYjY2MWQ1ODdjMDQgbGVnYWN5LXRydW5rCis1Nzc0IDEzYjI0ZDEwMzRiZDNiY2M3MGNmNTA3ZmVkZjNkOTM5M2E0YTU5YTUgbGVnYWN5LXRydW5rCis1Nzc1IGU1MjQ2NTcxZjBmZGNhYzdkODQxNmVhN2M4MDNiNzMzMGI4OTRiMTggbGVnYWN5LXRydW5rCis1Nzc2IGI4MjhiY2NkYTE4OTgzNWNmNzhkMGI4MmM0MTJhMzVkZGMwOTEyYWEgbGVnYWN5LXRydW5rCis1Nzc3IDYwNGIxZmMyNmQ2MzNhODhlMDI3ZDBhZWI5MjU4MDA2ZDgzOTdmYjcgbGVnYWN5LXRydW5rCis1Nzc4IGRmMGQwMDkxNjJiNjc1MTg3MWJmMDU4YjMxZmI2NWJhMWJjNzMxZjIgbGVnYWN5LXRydW5rCis1Nzc5IGMwNjY0YmU3ZjY2MjRiNmNhMGY4NWU2NThlNDk0ZjgwODY1MDc1M2YgbGVnYWN5LXRydW5rCis1NzgwIDY4ZmRjNDBhZGQyY2IzZjU1ZDFhZmIyNTliMDllMTQwMzRmNzE1NjUgbGVnYWN5LXRydW5rCis1NzgxIDU4YTY3MzIyYzg5NjBjZDMzOTVhNTVkMjE5NDlkMjNjYzgwNWYxYzcgbGVnYWN5LXRydW5rCis1NzgyIDQ0ZjQ4YWFjYThiZmY0NTliYzIyZjM0Yjg0ODM2NTg4Y2I1NzNlMDEgbGVnYWN5LXRydW5rCis1NzgzIGU1ZDFmMjQyZGFmOWMxNjA1MWRmNDM3NTBiODdjMjRhYjNhNmQ2OGYgbGVnYWN5LXRydW5rCis1Nzg0IGU0ZjU3ZGQzZDI0NjUzOTU4MzRiNGZiOWNhNDc3ZGIyZDgyN2VhMWUgbGVnYWN5LXRydW5rCis1Nzg1IDhiOGQ2MGZiZTNiZjk1YmUzMjQ4M2FjZjQwMzdlMWY2ZThjNTYxM2QgbGVnYWN5LXRydW5rCis1Nzg2IDMyYjRlOGFkZWJlYjg0Zjc2Y2ZmNDQxNDgxYzk5MmQ0YzljZTQzMjIgbGVnYWN5LXRydW5rCis1Nzg3IDRlNmQwYjI2ZWZhZjMyZWI3NzdiODVhODA3NDFhMmYyMGUzNmQyN2EgbGVnYWN5LXRydW5rCis1Nzg4IDhkZGRhNjZkYmYyYzg5MjZmOWU0MTg5M2VhNzA2N2UwNGEzM2I2MjYgbGVnYWN5LXRydW5rCis1Nzg5IDU5NjM0N2RiNmE2OGY3OTc2NmIzNjA0ODg3NjYwYjUwYzVlNGY2MzEgbGVnYWN5LXRydW5rCis1NzkwIDYwOThhYWE4YWU3ZmJjZDkyNjI4YTU5OGI5ODQ1NjQ2ZDM4MTY5YjEgbGVnYWN5LXRydW5rCis1NzkxIDM2OTIwYmJkODFhODM0NDE5NDNmOWUwOWZhY2YyZjRmZTM0MGI1NzAgbGVnYWN5LXRydW5rCis1NzkyIDg5NTE0NDI2YjliOGU0YTIwODUzOTdiOTIwMmExNjI0NGQxOWQ0NDEgbGVnYWN5LXRydW5rCis1NzkzIDFlYWI4NDk1NDYyZmI0MDJiOTE0MDIxNDhlNzg5NGU1ZWU2MzJlMzYgbGVnYWN5LXRydW5rCis1Nzk0IDQ5ZjdhNGExZjBmNmNlNzdjNWFmYmU4MDk3NzdjZWNmMzllMmE4YzMgbGVnYWN5LXRydW5rCis1Nzk1IDRjNjU1MTE1ZGZjZTdkZmU0MWE4YmRhZjI4YTBmYTRkOGQ3ZDQ2ZDYgbGVnYWN5LXRydW5rCis1Nzk2IDY3ZDM0N2MzMmZmZmI4Yzk2MzYxNWY3OWQ1MTQ5MTkzZWM2ODgxNGUgbGVnYWN5LXRydW5rCis1Nzk3IDlmMWI2ZTJkYjhlMDEyYzM3ODIzYTQ1NWI5Y2ZlMmQwYTJkNTgyYmUgbGVnYWN5LXRydW5rCis1Nzk4IDBkYTI0ZjFjM2RkZTZkYTRmZGM3Y2QzMzcxOTdkZDcwY2Y2YmVjNTggbGVnYWN5LXRydW5rCis1Nzk5IDk1NjQzYzBiMGMwZWIwODJiMTZlOWNlYTU2MzRiZjZmYmViODkwOGIgbGVnYWN5LXRydW5rCis1ODAwIDRiNWJmZjk1ODA0ZTcyYjc3OWNhYTRlYWE0ZjU3MDFkM2JlMmRkYWQgbGVnYWN5LXRydW5rCis1ODAxIDk2OWJkOTExZTExNGZjZjMyZWE0ZDM5ZTNjNTdlOTgyYjM0MTRmNmUgbGVnYWN5LXRydW5rCis1ODAyIDliZDFlNDFkNmIxMTZhNTVhZDczZDU4ZmU5NjNlYTgwYzFhZTlhNjkgbGVnYWN5LXRydW5rCis1ODAzIDI0OTdjNDNmNDk4M2RiY2M1NmY3MmIxNzUzOTIxZGJhYzY3YWMzMzUgbGVnYWN5LXRydW5rCis1ODA0IDIwMWRlODQ1NWMyYmM5ZDFhMjcyNmQ0ZTJmZWIxNGQxNWQzOGIzZjQgbGVnYWN5LXRydW5rCis1ODA1IDJkYjU4NWVhMjE4YmZkYWNjODIyNzAwNzRiNjRiYTNjOWY0YmUwZTUgbGVnYWN5LXRydW5rCis1ODA2IDE2Y2IwNDczMjI0Y2Q1MTdhM2I2YzlmZjU1ZmUzN2E3MWZjYjkyMmIgbGVnYWN5LXRydW5rCis1ODA3IDkxYzNlOTgyMWQwYTBkOTQxZDQ3OTUzZTQ1YTAzZjdmZWY3ZjQyNzYgbGVnYWN5LXRydW5rCis1ODA4IDM2NDE2MTQwMTA1YTI5NDNiZDQwYTUyZWFhY2U1NzY0NzY3ZjU4MDEgbGVnYWN5LXRydW5rCis1ODA5IDAwNDUzNjEzY2Q0Yzc3NDkyYzRhOTJhYzlmYzgxMDYzMDJlN2JlNGUgbGVnYWN5LXRydW5rCis1ODEwIDAxMjM3NmQzYWExNDdiMDJkMjYzZTA1ODI4NjQ4YTZmMTRmMmQyYTMgbGVnYWN5LXRydW5rCis1ODExIDNiNDg0ODEyYWNmNmUyZTE5N2ZmZDgwZTIzZjY2MzVjYmY3OTRjMDIgbGVnYWN5LXRydW5rCis1ODEyIDE3MDlkNWZlZDUyOGU2YWViMWVkNTIwMDRkYTIzNDNmZjk3NzAxOWQgbGVnYWN5LXRydW5rCis1ODEzIDU2ODk3NzYwZTk1ODcyNTc0ZTYxMmFiODQyY2Y1Y2Q2ZDM5YjY3ZTQgbGVnYWN5LXRydW5rCis1ODE0IGZhYTIxY2UxZmYwMWRjNzkzYWQ3YTcyOTUyNWEwNjgzYTIzMmVlNTUgbGVnYWN5LXRydW5rCis1ODE1IGVmZGRlMWQ3NDI0YjkwNDZhZThmODgzYTE0ZGU4YmM4ZTAzNGUxNzkgbGVnYWN5LXRydW5rCis1ODE2IDgyMDk5OThkNjY5ZTE2YTA4ZmNhNDljYmU3YWEyODlmMTQ2ZDgwNGEgbGVnYWN5LXRydW5rCis1ODE3IDJiZTBiZGUzYTA3MThlMDM3NDgwODk4OTg2OTUzNDkyZjgxODBjZGIgbGVnYWN5LXRydW5rCis1ODE4IGFlMDA0YTQ1MDUwZmRhNDQ3MjdkYmQ3MzhiZTYwMzUzMGM0OTI2ZDggbGVnYWN5LXRydW5rCis1ODE5IDgxZjQ1ZjY5Mzg4ZTJkZTdiZTRmMjU1ZWNiNmQ4NzE4YmQ1M2FkMGEgbGVnYWN5LXRydW5rCis1ODIwIGY2YTg0MGU4M2QyYTUyYjhmNDhmYzYwZThlNTE4ODliNzUyMjllODYgbGVnYWN5LXRydW5rCis1ODIxIDBiMDIxY2Y0MWRkYWMwYmIwYzJhYTBiNzU0ZThjY2JiYzE5ZTU1ZGEgbGVnYWN5LXRydW5rCis1ODIyIGRkYjQ1MTBlZWI0NjgzNTFmYjhkMGY2ODZkZGFmMTkzM2ZmNjg1NjIgbGVnYWN5LXRydW5rCis1ODIzIDZkNzYyYTJmOWI2OWQ2ODAzMzU0NjNkNjgxNDA2MWIxMmFmMmQyMGQgbGVnYWN5LXRydW5rCis1ODI0IDFhMTdiYTUwYmQ2ODE5MTc3MjY1NDNkYTg4MzgzYWY3MWU4MDUzZmUgbGVnYWN5LXRydW5rCis1ODI1IDIxZDg5Njk4MzI5YzZiMmIyZmU3ZWQ4Njk0NTA2MzUxZjE1YjVmMWEgbGVnYWN5LXRydW5rCis1ODI2IDA4OTg1NDMxNTAwYjcxNmVkMzAwOTkyOWI4Yjk4N2E3YTQ4MGMxMzUgbGVnYWN5LXRydW5rCis1ODI3IGUwZWYwMDliMjcwMjIzZjIyNzI1NjBkZTEwODMzZjFhODAxMjRhYmQgbGVnYWN5LXRydW5rCis1ODI4IGUyODEyNGJiN2ZhYjMxOGIxZmZmOGRmNTgzZTQwNDcyNTA4NTA4OTEgbGVnYWN5LXRydW5rCis1ODI5IDZjYTk3ODdjZDNhYWEwZjU2YTNlNWFlZmQ5YWE3NWY2NTdlNjEwYTUgbGVnYWN5LXRydW5rCis1ODMwIDM2OWIzMGY3OGQ2M2ZjZTVhNzBmMDIyNjU1ZjBjZmRlNTM5YTViOWEgbGVnYWN5LXRydW5rCis1ODMxIGJjMTdlODMxM2VhMDZiYjRiMTRlNGI3NjU2N2EzY2YyMmI1Nzg0MzUgbGVnYWN5LXRydW5rCis1ODMyIGY4ZmYyODMyOTk3MTYyZDVmYzJlOTY2YjY1YWIxMThlOGFhNTZjMzIgbGVnYWN5LXRydW5rCis1ODMzIGMyNTg2NTg4NDY0OTU4ZDQ4NGU2ZjQwM2EyMDM3NjM2MjRhYjg0MmMgbGVnYWN5LXRydW5rCis1ODM0IDRlMWFkMjQ0MTBhNzExNmZjZjRiNzk0MTYxZTkzYjgwOTRlZDgzZTQgbGVnYWN5LXRydW5rCis1ODM1IGFmMWMyZjM2ZGMzNDg2OWU1MGNhMTlkNGRjZjQ2NTI3M2E4YzE5ZWIgbGVnYWN5LXRydW5rCis1ODM2IDNjZjJkOGEyZDc0YjEzZDc3NWQ1YzBkNjE3M2IxZTdiMjVkMDk5N2MgbGVnYWN5LXRydW5rCis1ODM3IDA1MDg0ZWU1NGU1NDhlMmNiODQ0NzdjN2YyZjE0ZGJmZGYxYjliOTQgbGVnYWN5LXRydW5rCis1ODM4IDZiMGFmNzhhOTBlNWYxMTE4NzIzYTk4Y2Y3N2EzNWQzNmZkNTIwYjIgbGVnYWN5LXRydW5rCis1ODM5IDM1OTA4ZTM3NWQxYTZmOTlmYTIyMTk4NWNiMTZkMzg5ZjVmOTA5ODcgbGVnYWN5LXRydW5rCis1ODQwIGZlMTk4ZGVlMDY0MDg2MjdlNzNjNjZmNzJiMTM5OTI5NWZlN2Q0MDkgbGVnYWN5LXRydW5rCis1ODQxIDBjODgyMWJmNmRiNTY2YWJkNzMxNDlkODBhZTkyYzIzNGU1Y2IwNTAgbGVnYWN5LXRydW5rCis1ODQyIDI4ZjQxZWM3YzVjYzQyMzU1OWY1YWY1YjQ3OGE1MmRhMjU1MzAzZGMgbGVnYWN5LXRydW5rCis1ODQzIGUwODYyZjA1ZTE4NTA3N2VhZjAzMTQ0NTRhMjcxNDNmMmRmYjBhMDIgbGVnYWN5LXRydW5rCis1ODQ0IDgyNzMzODY5OTA5NDQ0ZDQ5ZWE2N2QwOWYyNWU4M2E2Zjg2YzNhYmEgbGVnYWN5LXRydW5rCis1ODQ1IDZhM2ZmYzFkYmI5NWQ4OTcxNzAyMzFhYzNhZTQ1NjVkMTVkODAwZWEgbGVnYWN5LXRydW5rCis1ODQ2IDA0Njg4OGRhMWY0NGE2ZjUxMTNjZGYyYTVlOTg1YjRiODlmODg0NjggbGVnYWN5LXRydW5rCis1ODQ3IDJlZTFmOTIzY2IxOTMyMTZjYzJlZDEwMjY0YmUzOWRjOTNkMmIxZjkgbGVnYWN5LXRydW5rCis1ODQ4IGI3YjJjMTNiNWUzMzI4NjBjZmJhMWJjNmRkZmViYmIxMzllYTVmZTQgbGVnYWN5LXRydW5rCis1ODQ5IGE0NDIzNWU5OTRmMzdmNDk3YzdiNmIyMmQxNTM5OTNkYjEzOTIxODUgbGVnYWN5LXRydW5rCis1ODUwIDkyZjExYWVmYjVjYTM1ZjQ0MWRjYjM4YTk1NTBlMGM5ZDE2MmE4NWUgbGVnYWN5LXRydW5rCis1ODUxIGM3MWE3YTRmNWY4ZWE1ODI1YTA3OGFjYjNkZjVmMDcwYmRhZmQ4ZDYgbGVnYWN5LXRydW5rCis1ODUyIGQ1NTMyYTcxYjQ1NGI2YzMyNDllODFlYTIwMDIzZjEwOTU3MTI3NTggbGVnYWN5LXRydW5rCis1ODUzIDZmNWZlYjNiNDgyOWY5OGMwN2Q0YTU3MjI3OTVlMzk5NmQwMzA0ZTkgbGVnYWN5LXRydW5rCis1ODU0IDlmYTIyMjhiYjA5NjIwZWJkM2RkODIwNmQ4YjRiYWY4YWYxOGFmN2EgbGVnYWN5LXRydW5rCis1ODU1IDE2OTZmYmYzMDJiNjNmZDFkNjFiNzI0Yzk1NTAzYmIwZDU0NTQ1ZmYgbGVnYWN5LXRydW5rCis1ODU2IGQxNWQyOWJiYzFjZTExZmNkYzhmNTU2YmEwMzViYTUzYWYwOTdhYzEgbGVnYWN5LXRydW5rCis1ODU3IDgzMmYyNmQwZTA2OWY2ZDU5ZWNjZjMwNWM5ZWJhZjEyODNmZTY5NTMgbGVnYWN5LXRydW5rCis1ODU4IDFjMDBkMjg0NmU4NDlmNjk2MjVjYzZiNzIyNzlhYzA1M2FlMzk0YjQgbGVnYWN5LXRydW5rCis1ODU5IGFkYTIyMjU4NTM2NmU2ZjU5MzRhOTljMjNhNzZkNGRjYmIxNGNiODEgbGVnYWN5LXRydW5rCis1ODYwIGQ5YTc5OTc3YjM4ZDQzOWVhM2YxMzk0OTViNWQyN2E4YmY4YjM4YTkgbGVnYWN5LXRydW5rCis1ODYxIDRmZWE2Y2Q5NGRmYTRkNTkyMjNkZWI1ZjhkZmUwMTI1NDg5MWVhNGIgbGVnYWN5LXRydW5rCis1ODYyIGY1OTg2MjMwNTBhMzk4Y2EzYjIyODJjZGEwYjI5MjNhMjIzZTE3OGIgbGVnYWN5LXRydW5rCis1ODYzIDU0NjRmYjJkMTI5ZTUwODE5MjE5OThiMTg5M2Y1MWMzMTdjYTE4OGUgbGVnYWN5LXRydW5rCis1ODY0IDVkN2ExNWRmNzE1NTUyNTY5NmVmZmMzMDNiYWE5NGQ3NTU1NjdkYzggbGVnYWN5LXRydW5rCis1ODY1IDQwOWE4OWM1ZjY2ZDUyYjIyYjRlN2Y3MWE5MDlmOWRmODJkYzBmOWMgbGVnYWN5LXRydW5rCis1ODY2IDAyNDM1ZmQ5NTI3N2M2MmQyYmY0ZDcyOWEzYjU1NzZkOWRmNjFlNGMgbGVnYWN5LXRydW5rCis1ODY4IDExNmRiNzM0N2QwMWM0YzZlNWVlMjFlNGMyOWE1M2RjOWZjYmM0ZmIgbGVnYWN5LXRydW5rCis1ODY5IDFkZjhmNWE4YjIxNmQxMTE1NTdlZGY4MGJkZTg2ZWExOGJkODg4NDcgbGVnYWN5LXRydW5rCis1ODcwIDUyZGNlNGNkYzkzMGUwMWE4ZTI4OTdlYWM5NjhmYmM0NTljNzI3MmYgbGVnYWN5LXRydW5rCis1ODcxIGJhODNkZDQ1ODUzMzExODU1MWE5ZjNmMmM0NDg0NTRjMzZkNDc2NTEgbGVnYWN5LXRydW5rCis1ODcyIGU5OTRlNjdiY2I5NTAwMWRmZDllNDg1OWI3OGEyNjhmMTI0MDFlMDIgbGVnYWN5LXRydW5rCis1ODczIGMyODM0NDdiOTg1ZjUyZWE0N2ViMDA0MWU5NDczOTk5MGU0MTJmNTIgbGVnYWN5LXRydW5rCis1ODc0IDgxMGU2OTBhYTYwMmIwMzI0NjcxZDViMWVjMmY5MmU5NTg1NzQxYmIgbGVnYWN5LXRydW5rCis1ODc1IGYyNjE0YWM3MzVkMGMyNmM2MWE4ZDc4OGZmM2Y3OGQ5MDZjY2JjZjEgbGVnYWN5LXRydW5rCis1ODc2IDM5N2U2ZDUzYTdhZGU1OGJiOGM5MGZhYjNiNmNmYWYyYWJkMzhiYzEgbGVnYWN5LXRydW5rCis1ODc3IDI3NDA2YzM2ZThiZDQ0OWU3ODhkYjc1MTMwMTE0NTQ3OGNhN2U4MmIgbGVnYWN5LXRydW5rCis1ODc4IDAyMjQ3NGFjMjQ1MWU0OTAwNmZmZTA1NWJkM2U0NWJkYzRiMzBiMmUgbGVnYWN5LXRydW5rCis1ODc5IDE0OTkxYzQzMzFkZjA4NGRiMTQ0YmZlZGM1OTQyMmM1MWE5YTNiMzcgbGVnYWN5LXRydW5rCis1ODgwIGY2YmRkYTM3MGNiNzRiMGZkMjNlNjc1ZDc2MmE2YzdkZDM3OWYwM2IgbGVnYWN5LXRydW5rCis1ODgxIDJmZTdkNDg5NjU0ZThhZDVjNTczMWMwMGM1YzBmZGExOTRlZTYwOTYgbGVnYWN5LXRydW5rCis1ODgyIDA5OGNiZDZkMTk2ZTRmN2ZkYzlmYTg4MWJmYjU2N2E0MTM3OTVjNzIgbGVnYWN5LXRydW5rCis1ODgzIGY2YTZhNjk5MjdmZmVmMjE1M2YyMGVmNjJkZWZjYWFiNWU0OGE3OWQgbGVnYWN5LXRydW5rCis1ODg0IGI2YzBhNDFlNGE0NjU4MGMyZDAzM2Y2OTQzMmVhYzkxNTIxZjA2MTEgbGVnYWN5LXRydW5rCis1ODg1IGUxZGY5MDIwNWEzMzM5MzZkOTY2OTFlYjc0NDQ0NmIwNDNiYjg4NjEgbGVnYWN5LXRydW5rCis1ODg2IDBhYzVmYmFmOGFlZjhiYWFjZjQ5MTZlMzYzZTI0NTM4NDFiOWQ0MjUgbGVnYWN5LXRydW5rCis1ODg3IGUwNDVmOTEzMmIwN2JjYmRhZTkwMzZjOWFmZTRhOTBjNDk1OTRkNzAgbGVnYWN5LXRydW5rCis1ODg4IDAxM2JiZTRlZjk0MzdhYzU4MDkwZTAxMTMzMWQ1ZjFkYjE5YzU4NTggbGVnYWN5LXRydW5rCis1ODg5IDkwYjU0MzEyNjYxYTM1MDM0ZTc2NGQxODM2NTRmYmY1MTJkY2Q1ZDIgbGVnYWN5LXRydW5rCis1ODkwIDY3ZjVkMjlkNDA1YjJhOTBmNzAxN2YyZmE1ZGQ0YzYyOGRlNGRhOGEgbGVnYWN5LXRydW5rCis1ODkxIDAyYzlkYTIwYjQxZTY5MzY2ZWUyY2JiNjQ2YTY2MDVjY2Y0YjhkNTMgbGVnYWN5LXRydW5rCis1ODkyIDI0YmVlMzc4M2IzNWYzZjRjOTBmZTA2MzM0YjYxZDI0MWUzMzAyNGMgbGVnYWN5LXRydW5rCis1ODkzIDIzMjU0ZGFhMjQ3Yjg3NTMyMmM4MmMxMDZkZDJjMzliODBhZGViZjQgbGVnYWN5LXRydW5rCis1ODk1IDY0MDJiZTI2ODljNTc5ZDJkY2JiZWFjMjRhY2RlNDc5ZDVjYjM1YjUgbGVnYWN5LXRydW5rCis1ODk2IGFmNWZmNTIzMWQ0YTFkNGFiZjcwYjRmYTUxMGY2ZTYwNWVhYTZhYzQgbGVnYWN5LXRydW5rCis1ODk3IGJhOTgzMTQwNzE4YWE0N2NlODBhODRiNDE2YjExMWZhMmMyNWRiMzcgbGVnYWN5LXRydW5rCis1ODk4IGRhODZiM2I1NDM2M2NjZDQzZDkwZWE4ZmRiOTQwZjQ4NjVjNDkyYjAgbGVnYWN5LXRydW5rCis1ODk5IDU3ODQ2NjhkMDU3NmJmMTJjYTkzNzMwM2JjZTIyOTk1ZDY2MmI4NDkgbGVnYWN5LXRydW5rCis1OTAwIDI2YmVjOWUyMmU1ZDBmNTY1NDFmZDY5MTkyYzIzNzMyZDA3MDhkZjEgbGVnYWN5LXRydW5rCis1OTAxIDZhYmM3NWVjNmQyOTgyNTBjNjA3MWQxZWFjNmY3NDNiZWQyODE0YjcgbGVnYWN5LXRydW5rCis1OTAyIDU3OGNhMzAyYTU5OGMzNjZmODAwNDNlZmJjYzJmYzI0NWZiZDFmM2QgbGVnYWN5LXRydW5rCis1OTAzIDUyOWY0ZDljYmUzZDhlNzIxM2VkZDNhZGQ0OGFmNDdjZjFlMjRjMmYgbGVnYWN5LXRydW5rCis1OTA0IGY3MjA1MGRkNjFhOWMzZjdjZGQ5YjUxZTBmZjRhNGRmMzZiYjkwNmQgbGVnYWN5LXRydW5rCis1OTA1IGRiOWY2ZWRlNThhNzY2YzA5YmZkMTg3NTU4NGIxZGNiZGMyOTc1ZTEgbGVnYWN5LXRydW5rCis1OTA2IGQ3MDE0OTIwMmM5M2RjNjMyZTQxOTRlZGM3OGNhYTY2NGY2ZTcxMzMgbGVnYWN5LXRydW5rCis1OTA3IGQwZDFhMjFkNDhiMGFkM2NmN2NmYjgxNTkwNTBjNmVjMDBiZmI3MTQgbGVnYWN5LXRydW5rCis1OTA4IDFhZjFhZGNhODI0Mjc0OGE3Y2FiNTgxMzRkMzk4MDRjN2VmYmQ0YjMgbGVnYWN5LXRydW5rCis1OTA5IDNiZGU0YjU5YTVkMmUwY2JiZjM2MmVmNzdkODdlNDk4ZWVmNTkwODAgbGVnYWN5LXRydW5rCis1OTEwIDU1ODA4ZjYwMDljZGQwMjM3NWUzYjEzOWYwYmRjNGQ2NThiMDA1MTEgbGVnYWN5LXRydW5rCis1OTExIDA2NmE4YWU0ZDQwNjNhYjk5OThhN2YyNzFiNjIwMGM1MjBmZjBkOGYgbGVnYWN5LXRydW5rCis1OTEyIDFmZjEyODA0ZmYyYTc0NWVhOWJmMWQ5YWNlNTFmMzZjZTNkOTIzODMgbGVnYWN5LXRydW5rCis1OTEzIGU3NmNhMzRkNDhmM2VlZjMxNTUyOTA2YjEyODJjNzExZWFlNzMyMTEgbGVnYWN5LXRydW5rCis1OTE0IDA3OTc3YmYwZDk5NzBiN2MxYjlkMjZiYjJlMWVhMGVlODQ4OTc3NTkgbGVnYWN5LXRydW5rCis1OTE1IDYyM2JhOWJkZWIyMjE1MWM5MGQ0NTZiZDEzZjliYjYyNDM0YzM5MWIgbGVnYWN5LXRydW5rCis1OTE2IGRiNzZmZDM5MGY3NDlhMWZkMDU1ODJkYjA5OGJiMzQzNzJhZmExNjggbGVnYWN5LXRydW5rCis1OTE3IGY5MWY2MTk4YjI3NjhmNmE1MGRhNmU3YTIwYzM0Nzg2NmNmNjdkNmIgbGVnYWN5LXRydW5rCis1OTE4IGMzZTUxZWIxYzE0ZmRmYmNmOTNiMWJhYTEwZmMwNDgwZWJkMmJlODYgbGVnYWN5LXRydW5rCis1OTE5IDcxM2JkODM3NzM4MjBmYmVhM2Q3YWI2MTNmMGRiNjM3Y2JkODdmMzEgbGVnYWN5LXRydW5rCis1OTIwIDVhYmJjOWI1ZmRmMGIyN2FhMmYyMWI0N2UyMTY4ZDFkYWNlMWY5MWUgbGVnYWN5LXRydW5rCis1OTIxIGVjODQ5NDlmODFlZWRmOTNhMTI0NzMzMWEzZjhmZTczZjc3MmViMTAgbGVnYWN5LXRydW5rCis1OTIyIGE3YzI3Mzc2ODdjMjEyZTU1ZmFlNjFkNjdiY2U4MGM2M2U4ZjljNmIgbGVnYWN5LXRydW5rCis1OTIzIGU2NDZhZmM1MGFjNzNhOWEzY2ZjODc0NGQzNTZhMjc2YTU3MTQxOTkgbGVnYWN5LXRydW5rCis1OTI0IDE0NDRhMzUyNGVkZTA5YjA0MDdhMDlhYmJiMmMwYjUwYTY5OTJhOWEgbGVnYWN5LXRydW5rCis1OTI1IGRjYzU5NDkzNDk5YWU3MGJkMmRhMGM2MGRkMTU3NDAyZjc5ZGUxMDIgbGVnYWN5LXRydW5rCis1OTI2IGE3MWQyZmQ5MGZhODdiODRmOWIxNGNhNTNjMzA2MWEwMWQzMTgyNTEgbGVnYWN5LXRydW5rCis1OTI3IDQwOGRmYzcxODk1MThmMWQ0ZmE5NjAwMzg3MGQ4ZDc1ODRkNDg3YzYgbGVnYWN5LXRydW5rCis1OTI4IDcwNTIyZGIxMTAxOWE4Y2I3YzIxYjgxNjFjYWU0YTdlNmRlNjBlMWQgbGVnYWN5LXRydW5rCis1OTI5IDk3YjBlOTYyNWViMWQ1ZjgwZWJiNmY3MDRmYjU2NTE4YTI2NmNiY2QgbGVnYWN5LXRydW5rCis1OTMwIDgwM2ZiY2RjZmM5Zjg3Zjc0N2NkNDBmZjEzODkzMWRkNDdlZmYzZGQgbGVnYWN5LXRydW5rCis1OTMxIDhiM2YyYTg2MjBmNTRmYjhiNDU0Y2E1ZThkYTVhZjQ3YjliZjcxMTggbGVnYWN5LXRydW5rCis1OTMyIGQxOTY4YTdjYzYyMGMxNjEwMWNmNmNhZDE2M2ZlMWViMDEwNTM4MzggbGVnYWN5LXRydW5rCis1OTMzIDhkZDAxODhlNTJhN2M4YzU5YjhjZmUwMzI1YzFiMjFmODhlODI1MTYgbGVnYWN5LXRydW5rCis1OTM0IGYwYmFhZGJmY2FiZGI1MmRjYjZmMjBjYWJiMTA5Nzc4NGQwZGZiYTQgbGVnYWN5LXRydW5rCis1OTM1IDE0MjVmYzY0OTFlYmJmY2Q5YjJmYmM0NzI1OWRjNzQwN2Y3MDM1MjIgbGVnYWN5LXRydW5rCis1OTM2IDQ1MGY0ZDQ2ZDlkYmYwMTM2ZTk4YzczZTI4ZWJhZTI0NzhhZTNlYTkgbGVnYWN5LXRydW5rCis1OTM3IDYyMGFiM2RiMDc5MzRjNDE4MWJlMmU3ZGI5YjU1OTc0ZGQ1YmJlYmIgbGVnYWN5LXRydW5rCis1OTM4IGU5MDQzMjIzOTM1YWQzNGNjY2Y5MTRkNGEwYjBjOTFmZTNmNTk1ZjAgbGVnYWN5LXRydW5rCis1OTM5IGIzOGZkYjAwOGYxZGMzMWE5NThkYmMwNDE3MDA5ODk3YTY5NjY2YmYgbGVnYWN5LXRydW5rCis1OTQwIGFhOGFkZmRkM2FhMWUxZTlhZTViMmNlMmMyNTI4YmRkNzEyNmUwZDQgbGVnYWN5LXRydW5rCis1OTQxIDUwYWExNmY4MDlkNzYwMDMyYzA0MWZkNWQ0NjQxN2JlNjM2ODNhM2MgbGVnYWN5LXRydW5rCis1OTQyIGEyOTJiNzU4M2MwMTVhMjgyYTFlZjk2NjJjN2FmN2QwYzg0M2FhNTEgbGVnYWN5LXRydW5rCis1OTQzIDExMjk5ZTk1Y2FlODQwZDcwMTNiMDM2MGFjMTkyZmNjOTY3ZWZhMTIgbGVnYWN5LXRydW5rCis1OTQ0IDA3MzU1MGUzMTI3MzA3NDdmNTYzNDIxNDE1MzJiOTBjNzkwZmM4ZWEgbGVnYWN5LXRydW5rCis1OTQ1IDM1YzRhNDhkOWRhMTY5NGM1MGU2Zjg4M2E1MDkzN2U2YzE2MTIzNjMgbGVnYWN5LXRydW5rCis1OTQ2IGE0ZjAxZDQzZGFkNjk5MDE1ZDE2MDZhNGJhNWI3MzhlZDMwMzA4ZGEgbGVnYWN5LXRydW5rCis1OTQ3IDg5Y2FmZmQyYzA2MTQ4ODM1YzI4ZDQ2NDZlOWM2MzNjYjY4NzM3M2EgbGVnYWN5LXRydW5rCis1OTQ4IGFlYzhiYmNmOGIwZTVmMDJhZjgyN2RjNDkzZGVkYjQwYzNlZjYxZjQgbGVnYWN5LXRydW5rCis1OTQ5IDgyN2YxMWFkNjVkZjYzZGQ4N2Q5ZGE5ZmJhMjQ0YjUxM2Q5N2MxNmUgbGVnYWN5LXRydW5rCis1OTUwIGUyOTBmYWViOTJjODVmNzgzYjQzMjNkMDdjYWFjZDhmZDk2OTFmZDUgbGVnYWN5LXRydW5rCis1OTUxIDAwY2E5MDBjNzc0MmM1ZTA3MzQyNzY0MGJiMzM1ZmRlZTA2NmVkNWQgbGVnYWN5LXRydW5rCis1OTUyIGZlZDkzZDJkODhmYzQ2ZjljYjdlNjA1ZTU0MzJmYThjYzJiODg5ZjQgbGVnYWN5LXRydW5rCis1OTUzIGNlMjdlMDMyODQ2MmVkOTZmMzkwYzI4NmYyMjI0NWIxOTczYzEyOWMgbGVnYWN5LXRydW5rCis1OTU0IDYxZjE5YTdiMWZmMTA2YzY3ZTk1MzI5NjIxMDVlODVmNDlkYzNlYTYgbGVnYWN5LXRydW5rCis1OTU1IDAyYTIzZTZlNDE0YWZmZTk0NzlhOGRlZmM1ODE3OGYyZDk0NjY1M2QgbGVnYWN5LXRydW5rCis1OTU2IDgzNTU3MTUzZjU0NDc0MDEzMzNlYzVkMWJjYmYwMmIzN2FhYTQxYWQgbGVnYWN5LXRydW5rCis1OTU3IDJjMTc4YmY3MGY3ZWYzOWMxNzQ0YWY0YmE4NDMxOGM2ZTk4ZGE2ZDggbGVnYWN5LXRydW5rCis1OTU4IDNiNmViZjhkMmE1OWU2NjkwYzkyNmFkZDQ2NGNhOTliYWI4OTZmNzIgbGVnYWN5LXRydW5rCis1OTU5IDFkZmM1MTllYTNjYmU0NWZkN2YwMDRjM2NkMWI2Mzg1OGExZDRmNmIgbGVnYWN5LXRydW5rCis1OTYwIDE2YTVmNjA0ODQ2MWY4MzljY2UzNjk4NDk4ZjkyZDg2YjAyNTFlNzIgbGVnYWN5LXRydW5rCis1OTYxIDA4MTMwZjAwYzE4ZGI1MDNmNGUzOTVjYTJlNTVkMWM3NzkxMTlhOTkgbGVnYWN5LXRydW5rCis1OTYyIDAzYzZjMTgzMjVlYWNhOTYyYzMxODU3NTY0MjFjNjdlZTkzNzJmNDggbGVnYWN5LXRydW5rCis1OTYzIDE0MmNiYWJkZDk0NTU2YTMzYjU0ZmUwZWEyNDc0OGEwN2EyZTNiMzQgbGVnYWN5LXRydW5rCis1OTY0IGY3MGRiZTYwOGYwMzFmN2JhZDhhMWVlYzIwMWYxNThmODJhNGUxZWMgbGVnYWN5LXRydW5rCis1OTY1IDhkNDNiODMwMzQxYmI1NmFlZjFhZmIzZjA2YmI1ZmY1YTEzM2ZhOTYgbGVnYWN5LXRydW5rCis1OTY2IGQ2MjQ2YWViNGEzZjI3NDJlMmNiNWMyNTY0NzA3M2NmYzAyZDhmMWMgbGVnYWN5LXRydW5rCis1OTY3IGNkZWEzZjI3Y2Y3YzcwYjgyMDk0ZTY2NTJjNmMxYjUyZWNlZjkyMDkgbGVnYWN5LXRydW5rCis1OTY4IDVmMjUwNDBmZDYzZTZmNDBkMWU2N2M2YjZkNzQ3MTUyYTIwNGI3ZGUgbGVnYWN5LXRydW5rCis1OTY5IGVhZTcwZDdmMmVjN2M4ZTBhNWUxMWVjNTc3Y2RiZmI5MmE0Mzk3MjAgbGVnYWN5LXRydW5rCis1OTcwIGViNWI4ZDNkOGFjZjQyN2IzYmMzZWZlMTY2NTE4YWZmMjVkMTdkYjMgbGVnYWN5LXRydW5rCis1OTcxIDYxODk0YmE1NzFmNWE4M2Y1M2FjMjViMTA5OWM5Mzk1M2U1ODkxOTUgbGVnYWN5LXRydW5rCis1OTcyIDg5OWFlZmVhODAxYzk5YWUzNGI3NzU2YjAwNWRmNmU4ZTg4ZjZkZDIgbGVnYWN5LXRydW5rCis1OTczIGU4ZDUwMWM4OGEzZTNlOWJkY2Q2ZmVmODRmMWQwNGQ2OTgxMGNmYjMgbGVnYWN5LXRydW5rCis1OTc0IGY2YmQ1N2RiZDUyNGRlZWI3NTk5Yjc4YjM2YWI4YjJlMTY2NmFlM2QgbGVnYWN5LXRydW5rCis1OTc1IGQyNGY4ZDc5ZWNhMDc0YzAyMDM1Y2YxODJlY2JhMmQyYTEwOWFiZjMgbGVnYWN5LXRydW5rCis1OTc2IDQzMWU4ZDAxMDU0N2EyM2FjOGY3ODQ2YzJiYmZlYzZlYjc2N2RmMzIgbGVnYWN5LXRydW5rCis1OTc3IDZmMzYzYTQxNzY2MTE3MmZiMjQ4YmJkZTAwNGU3ZjdmZjcyNTExMWEgbGVnYWN5LXRydW5rCis1OTc4IDU1OGRjZTY1NTNkOTA1YmIwNjUwMTYyMjk5NjQwMWIzOTYxOThiZDcgbGVnYWN5LXRydW5rCis1OTc5IGExYzBjMmEzODg4M2ZhYmY3OWY0NjlhNzgzYzk3MDdiY2M1ZTQwODggbGVnYWN5LXRydW5rCis1OTgwIGM1ZDMwYTU2NDNiZWFlZWRmNTg2ZTdlOTVhYzNiMDE1YTJiYzkyOWQgbGVnYWN5LXRydW5rCis1OTgxIDJhMDk5ZmI3NjgyM2IzMmVjM2Q5ZjY2NzlkZDE4NTM3YmU1YWZmNWMgbGVnYWN5LXRydW5rCis1OTgyIDQzNjFhNWZmYjYzODI2MDJkZTNhMWNhMDZiYjRhYzZmYmU2ZGVmY2QgbGVnYWN5LXRydW5rCis1OTgzIDA1YWYyOWU4ZGYwZTc1NmY2ZTlhYmQ2NTRlNzliOWJiZWMwMjUxOWQgbGVnYWN5LXRydW5rCis1OTg0IDU2NmY0NmI5ZDcxMjZjOTkzOTk2ZDU1OWRiZWE0NGY2ZGM2N2M5MDYgbGVnYWN5LXRydW5rCis1OTg1IDc4NzlmM2IzOTYwNmVjZmJjM2M1N2YzNTQ0MmYzNDhlZmI2MDJmMmUgbGVnYWN5LXRydW5rCis1OTg2IDU0MmM4MGU2MjExMTRmZjJjOWY5ZjJhYzc5OWQ5ZTlhMGIzNDVhM2UgbGVnYWN5LXRydW5rCis1OTg3IDdmMjMwZDRmMzY1NWQ2NmUzNTM0OGQ5MmFlYTY5MGI5NjEzOGRlNGQgbGVnYWN5LXRydW5rCis1OTg4IDA1ZTg1MDU1NTgyY2I0YTMyZWUzZTE4NDk5ZDI2ODhmM2U3YjY4NDkgbGVnYWN5LXRydW5rCis1OTg5IDJiMmZjOWEwYjRlYzE2OTY4NjA2NWEyN2EyODNiZTAyZjk0ZGZkMWMgbGVnYWN5LXRydW5rCis1OTkwIGQ3ODAxYTc3ZmNkNTdiZjA0OWRlN2I0NTMzMjE1OTMyMzBjNzFkMGIgbGVnYWN5LXRydW5rCis1OTkxIDAxNDViOGFlMmQ1ZmI5ZmQwOGYyYTIzNjE5ZDBiNTIyYWMyMmFiN2QgbGVnYWN5LXRydW5rCis1OTkyIDkzOTk0NTE5MjAwMDM4ZWU3MjIzZTY3Mjc1Y2YxY2NlNzA3ZWQ3ZDUgbGVnYWN5LXRydW5rCis1OTkzIDQzYWY1MjNhMDBjYWZkNzA2ODY2MWJkYjcwMjViOGJiNzJkZTNiZjggbGVnYWN5LXRydW5rCis1OTk0IDczYmM0MWJlNzA3NGRlMzNhZTQxZjVhMTM2OTQ2YjFlMTY5ODA1MDkgbGVnYWN5LXRydW5rCis1OTk1IDg1NTJlMTdhZGE2OGExOGU4OGM3NDM5OGVmODA0ZTI3MzA3NDhlMDMgbGVnYWN5LXRydW5rCis1OTk2IDUxMGRiZmE4YzU5OTg3Y2ZmY2I0ZDBlNDgyNmM2ZWYzOWUyNzBmMTIgbGVnYWN5LXRydW5rCis1OTk3IGViODNlNGIwYzczMzc4MDRkMTAwNDFmN2M2MmZiMTJkNmE0OTU3OGQgbGVnYWN5LXRydW5rCis1OTk4IDUwZTViNGM1ODk1ZmM1MmY1N2FlMzQzMDM1YTVkMzkwMmEzYjFiNTQgbGVnYWN5LXRydW5rCis1OTk5IDI0ZmI5ZjRmODk4NGI0N2QxZmQ0NDU1ODIxMjQwYjJhY2FkZDhlZjYgbGVnYWN5LXRydW5rCis2MDAwIDM4ZTE0ODBlN2Y4OWRiZDY4ZTY3NzYzMDUwOTMwNmUyYWM2MzU5OTggbGVnYWN5LXRydW5rCis2MDAxIDcyOGQ1NzQ1YWU3Yjg2MmNkOTIyYTgzMjU2MWEzMmI5ZWEzODkzYzQgbGVnYWN5LXRydW5rCis2MDAyIGU2N2FkYzhiMmYxNjY3MjI1YjFkZTdlMTcyMWQwZDhmODZjMGVmNjcgbGVnYWN5LXRydW5rCis2MDAzIDIwYTEzZmNkYWU1NGY5MzAwYWY5NDYzOGM0YTVkMmNkNjc5MDljNDcgbGVnYWN5LXRydW5rCis2MDA0IGFjOGQyNGYxZGYwODI5OGE5MDdjYmQyMzJjZGY1NmFhMDJkM2VmMjkgbGVnYWN5LXRydW5rCis2MDA1IDgyMzA3MDcxYzY2NWU3YzRlMWNmNzIzYjE5YzdjZDlkMWM1Mjc4MTUgbGVnYWN5LXRydW5rCis2MDA2IDM1YmVjODhkOTczNDJhZjI3MTdjZWI1MTE5ZDI5ZDFlMmVkNTNkMGQgbGVnYWN5LXRydW5rCis2MDA3IDZjNTQxYzYzYzQzYTExMmY0OWFjZjFiNDQyNzkwODMwNGFjZWM3ZTYgbGVnYWN5LXRydW5rCis2MDA4IDVhZWM0OTExMTc3MjZhN2ZiYzRkMjI5MmNmMDQzZTBkMDAxYmFiZDQgbGVnYWN5LXRydW5rCis2MDA5IDJiMTY2YjIyMGMxMTNkYTc5OGM2ODljY2ExMGFlNTIxNWI0NjkxZjIgbGVnYWN5LXRydW5rCis2MDEwIDZjMjU4MDQzY2ZhYTVhODM1NGYwOGRjNTAxYWFiMDMzM2VhNDMwNzUgbGVnYWN5LXRydW5rCis2MDExIDVkZjJhY2JhMGZjNTAxOTYyYWEyN2M5ZTdmZjgyZjkyOWEwNmVlMzkgbGVnYWN5LXRydW5rCis2MDEyIDIyZDdmNTRjNTc5MjdlMzNiZjg2MmM1MjdjZmE5ZmY0ZmEyNzYzNmIgbGVnYWN5LXRydW5rCis2MDEzIDJjOTAwZGFlODc5OTM1YmNiZjA4N2FlM2Y2Njc1ZjFkYmRhNDQ3YTYgbGVnYWN5LXRydW5rCis2MDE0IDZmNTIzYmQwYTNhYmZmMjlhOTlkYTRhMzQyNjYzMTBkM2M2NzJmNDAgbGVnYWN5LXRydW5rCis2MDE1IDNmN2NkZjE2NjNmN2FmZjM0MTc2MzY2YWUwN2QwYzYxYzM4NjU0ZjYgbGVnYWN5LXRydW5rCis2MDE2IDljYThhZTcxYmJiMDhkMDNjYjUxZWQ0YmJhNDA1OGViMTQwNmY3ODEgbGVnYWN5LXRydW5rCis2MDE3IDA0ZWRmY2JiNzEyMTMwYTczYjU5NThkMmY2NmFkNDA5ODllZWExOWEgbGVnYWN5LXRydW5rCis2MDE4IGY2NjMwNmJjMDY2M2U0ZDI3YzE1NzRhZThiZmRjY2Q3Y2U4MTJkZjQgbGVnYWN5LXRydW5rCis2MDE5IGE5NWIzNTBhNDRkYWU3YWM3NmMxZDRlZjBkNmJlNjI4NDY0YTIxN2QgbGVnYWN5LXRydW5rCis2MDIwIGU4YTJhNWU0YzdiMDQ2MGI4NTdjZGYwOThmMTM2YTNjMjBhODlkNmUgbGVnYWN5LXRydW5rCis2MDIxIGM3ZTgwODU5NmQxNDFjMDIyNWE3M2QzNDM3MmFmZjNmMmY5ZTAzMDIgbGVnYWN5LXRydW5rCis2MDIyIDFkMDM1ZTIxMTIwOTY5MThhZDFjMDEwMmJkMWJhYzc2MjY1OGMzZjAgbGVnYWN5LXRydW5rCis2MDIzIDI0Mjc5YmFmYTgyODQyOTI3MmJhODI5NjAxMGEzYzhmN2QxOWNiNGQgbGVnYWN5LXRydW5rCis2MDI0IDI5YzE4ZmIxM2Q4ZjQxMmQxYzllMGUxODY2MTU0MzZjZTk5OWY2OTQgbGVnYWN5LXRydW5rCis2MDI1IDUzYzY2ZDE5ZDEyN2EzMzBmYTIxMTZiZDY4YTNmMWUzNWJjYTFiZmIgbGVnYWN5LXRydW5rCis2MDI2IGNlZTRhNmQ4NDE1ZWMxYmFmMmEyZjljYjhiODEyYzUwOGEwODE1NDUgbGVnYWN5LXRydW5rCis2MDI3IDA5OGI4OGQyNjBkMTJmYjA2NjY3N2QwMTU3OThkNWZmOTI3ODQ4ZGQgbGVnYWN5LXRydW5rCis2MDI4IDE4YTljNjI4MDU0M2I1MjI5Yjc3MWY2Njc1OTRhYTM1MTEyYzE3NjcgbGVnYWN5LXRydW5rCis2MDI5IGI4YjFiNmI5NzQzMzg3YzQ3ZTQ4YjMzMmQwMWFhY2I1NzQyZGYzMTMgbGVnYWN5LXRydW5rCis2MDMwIDkxODkzODcxYmEwNzQyMzQ2NjMyNTM3ZjQ5N2NlNmM2NzE0ODU0MmMgbGVnYWN5LXRydW5rCis2MDMxIDUyMjc4NDFjZmExZmI3MDRlOWMxZGY4MGRkOTUzNTFhYWFmODVlMWIgbGVnYWN5LXRydW5rCis2MDMyIDM1YjM1MzZmYjc2M2I5Y2Y1OWFlZTg3N2YyZjE2NGNiMTEzYzg0M2MgbGVnYWN5LXRydW5rCis2MDMzIDkxYzEwODIwNjlkODEzMjJkNGI4ZmQxNDgyZjA1ZTkyNTVmMzU3OTMgbGVnYWN5LXRydW5rCis2MDM0IDRjMGE1Y2EzMGY5NGE2NzRkZjk3YWNkYTVjNTkxY2E4MzAxZjZiY2IgbGVnYWN5LXRydW5rCis2MDM1IGFhMTExMmQ1NjY2ODNhZmRhNzRjYzg0MTkyYzlhOGZlNjJmMmY5NGEgbGVnYWN5LXRydW5rCis2MDM2IDZmNzE1YmZmMTdlNDgyMjk5ODc5NjI4MTdjZjNmMWU0ZWJkN2ViYWEgbGVnYWN5LXRydW5rCis2MDM3IDZkZTQ0ZDk2NjI5MjY1OWFlOTRjYTAxYmJhYjNmOTNkOGFjYmYxMjkgbGVnYWN5LXRydW5rCis2MDM4IDkyMmMwMDE2NWY3NjEyZmFkNzcxMDY0ZjE0YjA1N2U2OWViYjQ0NTEgbGVnYWN5LXRydW5rCis2MDM5IDk3N2ZmMWFjZTA3MDFlOTkzMTI1NzgyZDkzZWU1MTdlZWNlN2M2MjcgbGVnYWN5LXRydW5rCis2MDQwIGY2YjIxOGNlYzZiZWY2NDljZmVjYzZkNjc0NzdjYjI4ZTc4NzFmOTggbGVnYWN5LXRydW5rCis2MDQxIDZiZTM2NWE2NzNiMTRjMDNmNGQ1OGVhMWU4MGU4NmNhMWVmZWMwYTIgbGVnYWN5LXRydW5rCis2MDQyIDRjN2JhYjRjZGNhNmU4Y2MyZTA5N2RkYTNmYWNjM2IwYjM4MmQ1YTQgbGVnYWN5LXRydW5rCis2MDQzIDFlYzE1NDI0MTc0NzU3ZjBiNTdlOTgwMWM2Y2E3ZjZiMTdiMDFlY2EgbGVnYWN5LXRydW5rCis2MDQ0IGUyYjNhNjk2ZDY5Yzc1N2M1ZTM3YjA3MTY3N2I5OWZiZGYzZjRhNmQgbGVnYWN5LXRydW5rCis2MDQ1IDRlYzFjYWMzNDJkZGM3ZmUyNDVhMjIzZWNjZTdhMzJhYjEzMmFhNWQgbGVnYWN5LXRydW5rCis2MDQ2IDZlYzdkZjIwNjk3ZDA4NjVlOGU0NDBlOWNlYWJmMWZkNzc1NTBlNGYgbGVnYWN5LXRydW5rCis2MDQ3IDI2NGQxOTZiYzRjNmRlOGZmODk5NjJlYTY3M2IyYThkNDhhNDU0ZDIgbGVnYWN5LXRydW5rCis2MDQ4IGZkMTY2OWY4ZDg3NDNiYTY2MTYyODRlNWJlODI2NTk0ZjA2OTE3ZGEgbGVnYWN5LXRydW5rCis2MDQ5IDhlNjYzOTQ1ZTE3NDQ1YzU5MjQ5N2RjYjVjNzc1YzIxYzU5Yzg1OGYgbGVnYWN5LXRydW5rCis2MDUwIGVjOGY1Yjc1ZGY2NGRhY2FmMzAxNmFlOTRkZTg1NDExOTJjZDExMDAgbGVnYWN5LXRydW5rCis2MDUxIDZmNDViZWVkMzg3M2Y3MWNkYzBiM2U4OTY2MGNjMTNlMmE2YjQzOTggbGVnYWN5LXRydW5rCis2MDUyIDZhYjRjYmNlZGVjMjAzYjgyNzhhMDIyNDBmNDhmNTYyNGEyZDUwNTMgbGVnYWN5LXRydW5rCis2MDUzIDcyYWQyZjFlOTkxOWFmZWMxY2M3YmVhYjhkODk4NDFhYWY1NWFiMTYgbGVnYWN5LXRydW5rCis2MDU0IDRlZDA5YTNjMzIwMThlMjE5ZGE5Yjc2MjExNTNiZDVmOGNmOGZkMTIgbGVnYWN5LXRydW5rCis2MDU1IDM2Y2MzZWU1NGYyOGI4ODAwZWYzZmMxMGYyMDU1MzVjMDVlNGI4OGMgbGVnYWN5LXRydW5rCis2MDU2IGI1Y2NjZjFjOGYzODY2YmVhZGMzOTQ2NGJiMjdkNmQxMzE1NjhlNDMgbGVnYWN5LXRydW5rCis2MDU3IGRhZmM4YTEwYjE4NjgwNDYwZGY3ZTE5ZDBmMjM0YTE2MzQyNGFjZTQgbGVnYWN5LXRydW5rCis2MDU4IGJkMjBjMDQyNzRmZmE2ZTY5ZTFjOTRhMmM4MjM4YjcyNTdkNjE4ZDkgbGVnYWN5LXRydW5rCis2MDU5IDczNjY0ZWEyMDMwZTBiZmZmYmRmMGEwNjYxYTZlY2YzYzAzYjk4ZDMgbGVnYWN5LXRydW5rCis2MDYwIDFjMThmOTA2MzZmYmJlMDgxNjEyNmExZTY4ZTAxNGViMjczOGExZDIgbGVnYWN5LXRydW5rCis2MDYxIDI0MDM2MjBjYTkzMWFlZmNlZTA3ODkyZGQyNzI2NDBkYTlkM2Y0ZDYgbGVnYWN5LXRydW5rCis2MDYyIGRlOTg3ZmQ2N2M5NDM1MDJkNWJjYWViZjIxODNjN2I2ZGM5ZmEwODkgbGVnYWN5LXRydW5rCis2MDYzIDU2NDkxMjI2NzI5MGY0NDllMWYyNGVlYzk3YjFiNDBmMjhhYjNiYzQgbGVnYWN5LXRydW5rCis2MDY0IDYyOTM3MjMyMDVhNmE4Mjk0ZWU5MGFlMTQyOTk4NTFiNjQ5MzM1MDcgbGVnYWN5LXRydW5rCis2MDY1IDg4MDBkZjM2NmIxMzFkMmEyNjUyZTAwYjE4ZTU2MmI0ZGE3N2ZlMGYgbGVnYWN5LXRydW5rCis2MDY2IGUwNzU5NzM4OWQ2NGJiZmI1OGI2OGMzNDU2MTg3MWQyNTM3NmZkODIgbGVnYWN5LXRydW5rCis2MDY3IDZjOTI2MGFlMGQxNjM2YTk1ZDAxMGMzNmMwYjc2YjFkODcwMmFhZWYgbGVnYWN5LXRydW5rCis2MDY4IDg3MzhiMGRkNzdmZDg3MDA5Y2JlOGNhMWVmMWQxMjA3YTA1YjViNDcgbGVnYWN5LXRydW5rCis2MDY5IDdjNTcxMWE2YTQ3NTk3ZDkzMWJlNGVlODMyNTRhMzJjMTY1Njc3ZGIgbGVnYWN5LXRydW5rCis2MDcwIDVhN2E3NjE2NmU3ZTM5OTgxOTRlMTAxMjIxYzM5OGU1M2I0MmQzZmYgbGVnYWN5LXRydW5rCis2MDcxIDQwNDk2ZGI4Y2YxZmNjOThkNjI4ZTc5OGIwMjZlMGQyMmY2ODc3NzYgbGVnYWN5LXRydW5rCis2MDcyIGQ5MDY3YzVmNTBhZGQ0OWUzOWE0MmU0YjgzZmIxNzFkYWUzOWZlYmQgbGVnYWN5LXRydW5rCis2MDczIGViNmVmN2VjYTIwN2QyOTg5Yjk4YjBhNzAwN2IxZjljNTVkNzBlMGEgbGVnYWN5LXRydW5rCis2MDc0IGFhNWYzZWNiZjU2ZjMyZDhmY2NiNGM3MmQ2YTUyOTlmNGQ4OWNmOTYgbGVnYWN5LXRydW5rCis2MDc1IDFkNGYyZjIwYTI3Y2NiNjEwOTZhMjUxZGRmMGQ4OTE1Y2RlOTY5YmUgbGVnYWN5LXRydW5rCis2MDc2IGRkNzRhMDYwMDZlMDQwMjE3MjYzYjgwNTc3ZTg0NjgyZGQzMWQ0ZDMgbGVnYWN5LXRydW5rCis2MDc3IDg1NzNlNjVmYTk0ODRmMjZiYjNkYWZiN2Y0ZjQ0ZjY1YTdhYzQ5ZjIgbGVnYWN5LXRydW5rCis2MDc4IDBiMGM0ZWQxOTM2YWMyZDI4NTJjMzk1ODdiOWNlNjgzNzg2MDQ1OGIgbGVnYWN5LXRydW5rCis2MDc5IGQwYTk3YWMyNWRhYjQ3MzY1OGE0MGQ4NjdkYzczZDhhZDYxNDQzYmYgbGVnYWN5LXRydW5rCis2MDgwIDQ1M2E5ZjZlOTYxODlkZTY5YjYzM2ZmNzM1YmI4NDhhMjA5YzVlMTAgbGVnYWN5LXRydW5rCis2MDgxIDQ4NjZhMGZjMmJiZDRlNjU1MzY2ZmU1ODk4YWJkNTZmODBmMThjZjkgbGVnYWN5LXRydW5rCis2MDgyIDJmMzE0Y2EwY2QzMzhkNmVjNDYxOGU2NDhjOTE4ZWUwZGMxZDA4MGEgbGVnYWN5LXRydW5rCis2MDgzIDMyMzE2NWNiMWZhNWQ3NGFlZmY4YWE3ZmMzMzU0ZTQ3OGQzNGYwZTcgbGVnYWN5LXRydW5rCis2MDg0IGZkYTNjMDk4Yzg5OTU4ZjUyOTM2NjNmOTU5MzBhMjU3YjBjNjgxYmMgbGVnYWN5LXRydW5rCis2MDg1IDBlNWE3YjIyMDE2Y2RlZTAzYWIyMjQxM2VlNjBmM2ExNTUwNjYwNjkgbGVnYWN5LXRydW5rCis2MDg2IDZlNzM1ODRjZjU3NWVlZGE3NTY3Zjk2YTI0ZTA4ZTZjMWEyNGIwOWQgbGVnYWN5LXRydW5rCis2MDg3IGEzYzk3ZTIwNTg0NzkzNDJhOGQ5NTU3Y2RlYmY2ZmRiOTQ1OWQ4ODQgbGVnYWN5LXRydW5rCis2MDg4IGVmNzU5NjY5YWEwNDI2MjkwMzI0ZWJiODNkNjVkMTY0ZGI2NmRhMTAgbGVnYWN5LXRydW5rCis2MDg5IDI4YzBkZjFjZTI4NDQ5ODIzNDQ4MjM4OGY3MTUyZDE1M2Q2OGYzMDYgbGVnYWN5LXRydW5rCis2MDkwIGYxNThlZGNjYzcyY2NiNjNmZmU4YjFhNTk1OTYwMmY5ZGQzZGU4MDggbGVnYWN5LXRydW5rCis2MDkxIGI3NWVkYzBlNjMzM2VlNjBjNTYyZDFiYTgwZDI2YzJlNjY2ZjczY2QgbGVnYWN5LXRydW5rCis2MDkyIGQ0MWQ4OWViNDNlNTBjZDliZjhiOWY5NWZjNzlmMDBhMjJlOTJmOWQgbGVnYWN5LXRydW5rCis2MDkzIDVhOThhNGZkNThiODQyMTAxMjEyZWI4Mzg1MWZiMjI2OWUwZDYwMGEgbGVnYWN5LXRydW5rCis2MDk0IDllNDY2NTdiYjllODQ3OWM4YWM5ODZjOWRjYjk3ZDBjNWFlNDIzNWEgbGVnYWN5LXRydW5rCis2MDk1IGJkNmVhYTJiNDFhYzM2MDcwZTRhZWJlMjVlNTk1NTY2Mzc5YzEyZmIgbGVnYWN5LXRydW5rCis2MDk2IGQxOTViODcxZTcwNDRlMTlkNTliZjE5YTY1MDI2Zjc0YTcyOWYyMjggbGVnYWN5LXRydW5rCis2MDk3IDM0NDA3NzdmMGU2NTZhY2UzZWQzODA0YmMzNjg0MTNiZDA0MzQ1ZDEgbGVnYWN5LXRydW5rCis2MDk4IGU1NGQzOTEwNzI0OTU2ZjJhMDY4OTBjZTVhZDJlZTVjMDhhZGVkOWUgbGVnYWN5LXRydW5rCis2MDk5IDJlYjdlOWUyMzZiZjU3Y2YwOWQzZDk5MDJlMjgyYzRjMGU5NTY1ZGUgbGVnYWN5LXRydW5rCis2MTAwIDk4NTEzNDM3NTY3MjM2ZDgyZDRhODdhYzlhOGZiZWVhNTRjOWFlMjQgbGVnYWN5LXRydW5rCis2MTAxIDQ0MTYxZmIwNGI3ZTgzNGJmYzc3MDliZGRkNjk3OTFkMDEzMDI2ZTYgbGVnYWN5LXRydW5rCis2MTAyIGE3ZTNiYzJhN2NhYzQ3OWQ0MDg5MzM0OWNkNGMyZjBiYTAzZmFlMmEgbGVnYWN5LXRydW5rCis2MTAzIDNhYmNmNzI1YzVmNDA5Nzc2MjY3M2IwMmQ5MjdhZDFmYTQzZmE4MzQgbGVnYWN5LXRydW5rCis2MTA0IDg5NDE3ODk1ZDk2M2NlZGMyNTAxZGEyMmQyMmU1MDU1ZjcxOGMwNGUgbGVnYWN5LXRydW5rCis2MTA1IDY3NjhiYmQxOGUwOTk4MGE3MDdiOTg1YjVlNjJkZDBiMmI4OTA0NWEgbGVnYWN5LXRydW5rCis2MTA2IDZjMDA4NmY5MjcwY2Y5NTEzY2M0MmI5Yjg1ODU3OWRkZDQ5NGU3YzMgbGVnYWN5LXRydW5rCis2MTA3IGMyODNiN2JiZGEwOTUyYjI3MmQ3YjdhODU5YTBkOTVlZTVhNjc5OWYgbGVnYWN5LXRydW5rCis2MTA4IDcwMTgzNTkyMzcwZTc0ZWE2M2ZlZDYzMTRkNTA3NDNhNDM1Y2EyZWEgbGVnYWN5LXRydW5rCis2MTA5IDhkNTBhOTZmODY4MGVhODExZTUwMjAwYmE1NDBhNjY2OTcxNGYxOTggbGVnYWN5LXRydW5rCis2MTEwIGU0ZmFhZGI0YWJlMmVkYjRlMTgxZGMzOTc1NmFlYzdiOTY3NTg5MmIgbGVnYWN5LXRydW5rCis2MTExIGQwNDk3NWRiNTJkY2YzYjQ3MDI4ZWQ4MjJhMzc4ZmZjZDdiZTFiM2IgbGVnYWN5LXRydW5rCis2MTEyIDBkMTQ2M2E0NWI2ZjU1YzY4NTc3MDBlNjYyZGVlZDM4YmI4ZTVkODQgbGVnYWN5LXRydW5rCis2MTEzIDAxN2QzMzU2YTVlZDA0MzBmZDEzNTk1YTFiMDdiNmU5NGQwNzE0NmEgbGVnYWN5LXRydW5rCis2MTE0IDQ5ZWU4OWUwMTdhYmU1MjZjNjBmM2IyZWM5Yjc5Mzc1ZTQ2NzIwYjcgbGVnYWN5LXRydW5rCis2MTE1IDU2NGZhNmYxODVhN2Q3Y2Q2ZmU2N2MzNjJlMWI1M2QxZTc0MDI1MzMgbGVnYWN5LXRydW5rCis2MTE2IDE2Y2E4ZjBmM2YxMTI0MDFhMGZjNjVmMzY2ZjI3MDI4YmYzOGI0YjUgbGVnYWN5LXRydW5rCis2MTE3IGE5ZmI1YTg5NWZhMWMzMmU2ZmJhYWFiYzVmNmQ0MGJmMDY4MjY1M2QgbGVnYWN5LXRydW5rCis2MTE4IDYzY2RmYmI0YTJiYjk5YzQxMzZiMjk0Mzg0YWQ4ZDdiOGJlZjAyOWIgbGVnYWN5LXRydW5rCis2MTE5IDVkNmZlMTQ1Zjc3M2EyMTRhYWMyMzhmMWVmYmUxNzQyMWQzZjM4OWIgbGVnYWN5LXRydW5rCis2MTIwIDA2MDJkYjFkMWRmZjdhNWY3ZTVjN2FlZGVmNTE1NjhhZTcwMjNlYzIgbGVnYWN5LXRydW5rCis2MTIxIDcyOGEzOWEzZTBkNTUwODRlNWFiYmNjM2YzZjg3ZTdlMjMxNzM1ZTggbGVnYWN5LXRydW5rCis2MTIyIDUzMDljZWY4YzE2OTJjYzI1ZjVlNjEwNDg5ZDFmMzBiYWFhZjBhNDUgbGVnYWN5LXRydW5rCis2MTI0IDY2ZWVhYjVhNzU4YzY3MzJmMjI0NjcwZDEyNWYxODZjZmI2N2IzOGUgbGVnYWN5LXRydW5rCis2MTI1IGY4OWZhN2U5NWI4NDA5NWY0MmExODI4NTRkMzRhMWYxYzZjNDM4YWUgbGVnYWN5LXRydW5rCis2MTI2IGFkZTlmOTk2NTkwYTVlNzhmNWE4YmIwNzkyZjA3MDM1OTk1MDRiNWEgbGVnYWN5LXRydW5rCis2MTI3IDlhYzFlMGQ1NjY3NDEzY2ZkN2U2ODk5ODBhNThiZmJiMDkwYzZhNmUgbGVnYWN5LXRydW5rCis2MTI5IDM1YmU1ZGY2ZWY3NzIyYjhmNTBhMjM1ZWIxZjJjZjYxOTExYzc3NTUgbGVnYWN5LXRydW5rCis2MTMwIDgyNWJkOGMxMWIxYzFhYzVjNDk2YmM3YWNmYzJkOWY4YzQ2YWRhNjkgbGVnYWN5LXRydW5rCis2MTMxIDA1OGQ4MWQxZDU2ZDkzMjZlMzc3ZGU1MzAwZjUwOTYwNjcwZGUyNjYgbGVnYWN5LXRydW5rCis2MTMyIGJkNmQwMjhkOThmY2VmNDI0NTI1YjMyNDM3MjYwZDUzMmRkOTkzZGYgbGVnYWN5LXRydW5rCis2MTMzIDM5OTQ3MGE5NThjMjJkOTdjY2I4NjNlNjc5NGMzZjg5N2U4NWQ3OGMgbGVnYWN5LXRydW5rCis2MTM0IDA3MTY0ZDMwNDI5ZGM2ZGQwNzM2MmVjMjBiYzJhOTFmMjVkZGNiNTMgbGVnYWN5LXRydW5rCis2MTM1IGFkMDNlMjFmZGE1NGJjYTVjMTJlZTc3OGY4ZDdiODE4MDI1OGFkOTIgbGVnYWN5LXRydW5rCis2MTM2IDUxODgzNzQzNzdhZTk5NjI1ZmQyNWJlYWU0NWNkNjc4NDUzNmFlMmUgbGVnYWN5LXRydW5rCis2MTM3IDU1NmVjODJmNGQ5MzllMTVmMmM2YmQ1Mjk1Nzc0YmRkODI3OWRhMmUgbGVnYWN5LXRydW5rCis2MTM4IGVhYmJiM2MxODE4ZmU0Mjk2MmIxYzE1YTk4YTY5Y2QwODZhODNhODcgbGVnYWN5LXRydW5rCis2MTM5IGFiOTI0ODBmYTRlY2IzYzliMzBkMzQzNTU1MThmNzc3OGJiYjI5YmIgbGVnYWN5LXRydW5rCis2MTQwIDFkMTM0ZWNkYTA5NGVlMTc3YzgwYmZjN2QxMDE0YWMzODc0YzE0NDUgbGVnYWN5LXRydW5rCis2MTQxIDE2NDEzZWU1ODk2Nzc0NTY4NDc1MTQ5N2EzY2ZlYmEwYWQwYzUzN2QgbGVnYWN5LXRydW5rCis2MTQyIDlhOGE0MGYyMjE4YzljYjI2MjY1ODhlMWZjMTU4NTBhZDlmNjQ1NDggbGVnYWN5LXRydW5rCis2MTQzIGNlYzI3YzkzYjVjYjgzNGMxMDE3MzdkZDUxM2U2MDgxNGFhY2ZjZTggbGVnYWN5LXRydW5rCis2MTQ0IGY2YWNlNjFjM2RmZTY0ZWEzN2VmOTgwYWVlMDAxZWIzNDk0MGQyYzcgbGVnYWN5LXRydW5rCis2MTQ1IDNlYWYyYzY3M2ExMWE3ODhmYjYyNDRhZjIyMjNiM2NiZTJiZDEwODIgbGVnYWN5LXRydW5rCis2MTQ2IGQ2MTdkZTE1Nzc0YjJlN2I3NWEyYjc2NDdhZWE3YzkwNjBhYWMyMTMgbGVnYWN5LXRydW5rCis2MTQ3IDc0NzY0YjNlYzFiZGI3NGE1ZTY1OTI3NTYyNDZmOWFmN2RmYWFkZjMgbGVnYWN5LXRydW5rCis2MTQ4IGIwNTMxNTgxNjU3OTgzMDQ1MmMwNGUyOWQ5YTJkMzdmMjM4NGY2ZTEgbGVnYWN5LXRydW5rCis2MTQ5IGJkZGJhYTUxYWE1YTkzMzE4YWZlYjkyZGFiMmU0ZTYzYWU1ZWQ3ZjQgbGVnYWN5LXRydW5rCis2MTUwIGI4OTgwNzM1ZDAzYjNlMTQwOTM4YTY0MjQ2M2ZhOTQ0M2Q3M2Q4ZmUgbGVnYWN5LXRydW5rCis2MTUxIDg3MjFmYWZkYjY3YWE5YjVhOTIyZDIzY2Y4N2M4ZjIzMmVmYzA1ZDggbGVnYWN5LXRydW5rCis2MTUyIGE1MjdmNDQ5Y2EyNjY2MWY1ZDI5MGQzNjdkMTAzMjc2YWFkMzkyYWUgbGVnYWN5LXRydW5rCis2MTUzIDk0NjZlYWJiNjY5YTZjZjI2NmZlYzY1NWMxYzcyNmQ3M2UwMjY4YTcgbGVnYWN5LXRydW5rCis2MTU0IGVjMzkyNjQzMTFmZjI0MTRmYWUwMWFlZDc0NzkyNmM5MTBiOTBiN2YgbGVnYWN5LXRydW5rCis2MTU1IDYwNmMzODUzNWYzMDQ1MTM0N2QxOTQ2NjkwZmFlYmZlNmUxN2ZiOGEgbGVnYWN5LXRydW5rCis2MTU2IGExMzYyYTA2MzEyMjUyMmZjY2MxODgwMWQ3NjUzNjg2ZTAyMTQzNzMgbGVnYWN5LXRydW5rCis2MTU3IGJkYmRhOTM5Yjk5OThmOGFlOGI2ZDUxZTU1M2JjYjEzNmJhN2I1YjYgbGVnYWN5LXRydW5rCis2MTU4IGQ4ZjlkZmM3NmJiZmM4ZGY5NmZmMWFkOGFiNmNkNzRjOGFlZjlmY2UgbGVnYWN5LXRydW5rCis2MTU5IGE3OWI4ZDgxOTk3ZmVhYWQ5Y2VkMmMxNGI0YjA5M2I5MGQyYmI2NjcgbGVnYWN5LXRydW5rCis2MTYwIDZkZmQ3OTk0NDg3MmZjMDNjNTQ5NzQ5M2JhOWIxMDkyNmQ5ZWJjMDMgbGVnYWN5LXRydW5rCis2MTYxIDRhMDdmZTFlMGI1MDNjYjViY2FjNDhkNjY3NjhmNDI2M2E0YWQzMGEgbGVnYWN5LXRydW5rCis2MTYyIGI1ZDE3NDFkZWQ0YTVhNDhlYWYwOGEwNWJjYWE2ZDVhY2EzMzE2OGUgbGVnYWN5LXRydW5rCis2MTYzIDhkYzFlNzRjMTY5NTZlYjIwMGVjNjgzYWFmNWQ4ODkxNGFhNWM3ZmUgbGVnYWN5LXRydW5rCis2MTY0IDgxOGVlMTE1MDU0YTNiOWNlOTYwMTIyYzExN2E4MWExNWEwNzUxN2IgbGVnYWN5LXRydW5rCis2MTY1IDU4MWYwNzNmMDcxZDdkNzcwZjQ3MmY3MTljYmI1MDJjMzRmYTMwMjIgbGVnYWN5LXRydW5rCis2MTY2IDE0NTQxMzhjNmYyZDQwYzVhMGI1NjA2OGRhOGJmZDcwNmVmMDQwNjEgbGVnYWN5LXRydW5rCis2MTY3IDY3MzkwYzFkYWViZWRkY2VlY2Y0MWNkZjExYjQ1Y2MwOTMxODBjYTYgbGVnYWN5LXRydW5rCis2MTY4IDgxZjUzNWNhMWQ5OGNkNDZhNjk1ODlhNjVmZTBkMmZkN2FjMmRiM2YgbGVnYWN5LXRydW5rCis2MTY5IDk3YjFjMmE3MGVhZTExZmI3Y2Q0Mzk5YzBlOWQyZWNiZWI4NzRlZTggbGVnYWN5LXRydW5rCis2MTcwIGUyM2FmYmY3N2VmZGY5NTRiM2Y5Y2JhZjliMWFkNjVmZjlhYzk5ODAgbGVnYWN5LXRydW5rCis2MTcxIDkzMTA4NmNiODUyOTUwMzM3YTg4Njc5NWZlZTE4ZjU2YzAyNGM3YmUgbGVnYWN5LXRydW5rCis2MTcyIGYwNGJlYjgwZjgxNjc3YWYwZmRmNjE4ZDRhNjdhM2I1M2UyNGU0MzEgbGVnYWN5LXRydW5rCis2MTczIDM0MDg3NTZlYzYwMTg5MDE3ZDE0NmQwZWRkYjZmMjQ3NGFlOWYzNGQgbGVnYWN5LXRydW5rCis2MTc0IGZmN2ZhNTlmNjJlODkzNGFiN2I4NDU3NGNiN2QxZTQzNGM2NGNkMmUgbGVnYWN5LXRydW5rCis2MTc1IDE3MDMwNTE1ZjYyMzI3NTRkMzUxMTJhNTlkOGNmMjMwZmRjYjE1MTIgbGVnYWN5LXRydW5rCis2MTc2IGM4NjdjMjk0YjE2YzA4M2FhOTY2N2VkMTgxOWU2MjI4N2YwNGI0OTMgbGVnYWN5LXRydW5rCis2MTc3IGRiNTc3MDk0ZjY4NTNlMTU3NTNiZTljYmQ0YjAxNjZhMzZiOTBhMjQgbGVnYWN5LXRydW5rCis2MTc4IDBlOTc5NTAwNGNkMjY3NmZjZDE4ZWQzNjc1NWYxNGE4NGYxNDNlMGEgbGVnYWN5LXRydW5rCis2MTc5IDBmNmYwZTk4ZTNiNjRiNGU1MzgxZmZlMGI2OTYwZTFkNDljN2NmNzEgbGVnYWN5LXRydW5rCis2MTgwIGRhZDRkNDMzNjNkOGZlMWZiYjg4ODAwNTYxNjcwMGY5MGE5ZDhhMjggbGVnYWN5LXRydW5rCis2MTgxIDc4NzdkZWY5NDA2M2Q0NzE0OWNmZjViOWEzMGU5ZmMxNGVhNGU4YmEgbGVnYWN5LXRydW5rCis2MTgyIGMwNDUzMWZjMjcwOTY5MzljMzE0NDhlZWFiNGZjYjVjODY5NjdkMmEgbGVnYWN5LXRydW5rCis2MTgzIDhlNDc5OGQyMTkxNWVmY2FiM2NhYzg3YWU0YmQ1OTRkOGQ0OGU4MTkgbGVnYWN5LXRydW5rCis2MTg0IGFkYzg2NzA3ZmE5NjM4OTliNTllMjkyOTdlMmY0YzNlYzc3MThhNTEgbGVnYWN5LXRydW5rCis2MTg1IGMxMjBhNDgzZDU5MDk4ZDY2OTFmY2E1MzU0NWMyZjgxZjc5NDYyMDEgbGVnYWN5LXRydW5rCis2MTg2IDVjMjU4ZWZmZTgxYzRkOTViYzYwNDRmNjZhNjBlMTNhMDFmNzcxNzMgbGVnYWN5LXRydW5rCis2MTg3IGRlNTI3OTQwMmI5NDM4Y2RmNjQzM2MzNzMzODE2MTdhZGE3ZDQ1MDIgbGVnYWN5LXRydW5rCis2MTg4IDUwMTIxOTFlYzJkYWIxNGJiZWI0Nzg4ODc4MTgwNThjYWNmMWYzNTIgbGVnYWN5LXRydW5rCis2MTg5IDllNTQ0YTJjMTlhMmRhNzA4OTA5NzRiNmIxMjEzZDQ4OGE2OGQ1NmQgbGVnYWN5LXRydW5rCis2MTkwIDc2ZTVmMzU5OGU2OWI0YTI5OTE5MTg1MzVmMTQ4MGM1YjNhNmZmZGEgbGVnYWN5LXRydW5rCis2MTkxIGIzNDFkZWY0ZWVmOGNiYzYyYTA3MzU2NDI3ODk1Njk0NDgwNGNkMTMgbGVnYWN5LXRydW5rCis2MTkyIDMyMmY2MWU0YzM4NzVhYTQ4MTU2NzE2MGMzYjg4MzUzMjZhOTBlMTQgbGVnYWN5LXRydW5rCis2MTkzIGIyYjA2M2FhMjc1NTEwZDZiY2M0ODQ5NzFiNTAwZjNmNjhmNGM5OGMgbGVnYWN5LXRydW5rCis2MTk0IDQzYTM3ZTZiNjQ2OWE0ZDIxYWIwZmMzYzI2NWMwNTczZDIzNWU5OTYgbGVnYWN5LXRydW5rCis2MTk1IDI2NDQyYjVmOWNmZDg0N2I2M2JlMjc4MWQ0ZmIzY2NiNDA5YmJjY2EgbGVnYWN5LXRydW5rCis2MTk2IDBmZjViZDhlYmIwMWE2MGI3MTlhNzY2M2EwOWM3MTg4ZTRjMmVmYjUgbGVnYWN5LXRydW5rCis2MTk3IDY1Nzc5MGRiMDZlM2M1OTQ1ZDllN2FkOWNmYzFjYmVjMWY2NWQyODcgbGVnYWN5LXRydW5rCis2MTk4IGExMGEwZjYwMTRjNDlhNWZiZDFhNGMzNDM5NWUyODgyZjg1NWZmNWQgbGVnYWN5LXRydW5rCis2MTk5IDZmM2M3YjJmMmI4ZGU4MjhiMjY2ODJkMzk5NWYzZmJhMjc4MGY5ZDUgbGVnYWN5LXRydW5rCis2MjAwIDA2ODU1NjM4MGNiMDg2MWM1ZjhjMDI0NDMwZGExNjE3ZGM4MGZlZWEgbGVnYWN5LXRydW5rCis2MjAxIGJhODRkN2U4NTU0YjVlY2Q0ZmNkNjlkNTc2OTc2NGI2ZWFkMzNmMGIgbGVnYWN5LXRydW5rCis2MjAyIGRlMWNiMzMyMTllMzExOGEzZjllYTIwOTIxZWExODFhNjllNzdlNTcgbGVnYWN5LXRydW5rCis2MjAzIDUyM2Y0OWExZTQyYTU3MDk4ODgyNWZhYWY2ZDY5NjVkYjk0MWJmMDAgbGVnYWN5LXRydW5rCis2MjA0IGIyNTBiMjcwZGJkNGQwZWIwNDAxMzVkZTY2OGM4ZWZhMzY2ZmJiMTcgbGVnYWN5LXRydW5rCis2MjA1IDA0YzA3NTM4Y2FjNGRiNzcyY2QxNjEyNzk1YzIzNzY0NmI5YTg5YTcgbGVnYWN5LXRydW5rCis2MjA2IDQ2OTJjYjQ2MDA4ZWUwYzllOTMzZjZkNjg3OGFhNDA1YzNiZThmNzUgbGVnYWN5LXRydW5rCis2MjA3IDZjOWMyYWMxNWU0YjAxN2Y3NDg2YmJiZDhjMTE3YjRkMGMyMzEzNzQgbGVnYWN5LXRydW5rCis2MjA4IDZiMWI2NjQ4NjNmNDA5NDAyNWU3ZTBiNWRhZTBjNTRjZDViMzdhZmEgbGVnYWN5LXRydW5rCis2MjA5IGNlNzRiYmE4YTZhNmQxOGJjZTc3Y2U2YmM3MjQxYzc5OTI3NDdiY2QgbGVnYWN5LXRydW5rCis2MjEwIDc5NTI0ODI5YTczMDY2NmRjYjFiNDg0NDIxMjUxNGJhNTIzZjkyNGEgbGVnYWN5LXRydW5rCis2MjExIGU0ODA3YTBjMTA5MmRlMmVjZDQwNjg1NTk3YTQyODljNmEyNjM2ODggbGVnYWN5LXRydW5rCis2MjEyIGVmNTliNGQwMDEzNDkwN2FkMzkyODZkOWU0ODY1MzZhYzliMDQyYjkgbGVnYWN5LXRydW5rCis2MjEyIDRmYzg1YzgyY2MyMjI1NTRhZTZiOWMwYjg3Nzc2ZWQ1ZjJiNzBjNmUgbGVnYWN5LXRydW5rCis2MjE0IGIyMDc4NzZkZjI5YWNhYzA3MjIxYWEyNjA0ZTBlYzAxNzhhYzQyY2UgbGVnYWN5LXRydW5rCis2MjE1IGZmZGYxZjA2Y2Y4YjVjMzYzZjljNTQ3NjM3OWZmNWY5NWY3ZTRiZjkgbGVnYWN5LXRydW5rCis2MjE2IDYwODBiMmViYzFmMTRhNWM0NWMyMTA3NjYwYTc1ZGFjYWQ5MTI4NTkgbGVnYWN5LXRydW5rCis2MjE3IDc1MDQ4ODRlOGE3NGZjNjA3YTg4NmEyMWVmNTI2ZmEyZDU0NDc1NTIgbGVnYWN5LXRydW5rCis2MjE5IGFjNzAxOGI1Nzc0NTZjZWJiMTE2YTc1MGZlMjJjZTY0YjlkZTczMGIgbGVnYWN5LXRydW5rCis2MjIwIDU2ZDMzNTBjYTFmMTcyZDYyZWRmOTMxYjUzMmIzMGIxMTE1Yzk2NzEgbGVnYWN5LXRydW5rCis2MjIxIDExZTAzZDdhNzI5ODA1ZGZlZWY3NDRhNTVjNTBlOTMzNTdiYjQwODkgbGVnYWN5LXRydW5rCis2MjIyIGEyMjQzOGU5NGZlOTc0YjUxOTEzNDgzYTUyNTI5YTMxNTJjMTVlN2YgbGVnYWN5LXRydW5rCis2MjIzIDJkYjYzNjM0NTljYWYxZDY5ZGUyYThiYWFjMTZmZDAzNWMxNDE5NDAgbGVnYWN5LXRydW5rCis2MjI0IDM1MzdjMDhjMWVmZmJhYjQ0NzIzNmI4YzEyYWMzZjMyODY5OGQ3MWEgbGVnYWN5LXRydW5rCis2MjI1IDk3ZDIyNzhhMzMxYjk0NWQ0MTMxYmUzM2Q1OTI4MGVjNmFkMGZiZjAgbGVnYWN5LXRydW5rCis2MjI2IGQyM2ZlYTI0OGExZWMyNWIxY2MxNzdlYjVkZjQ4NTZjMTRlZWIxYTggbGVnYWN5LXRydW5rCis2MjI3IDY1OThhNTE4NjY4Zjc3YWYyNThhYmE1YWYyN2Q5Y2Q3MzAxZmE5ZjYgbGVnYWN5LXRydW5rCis2MjI4IDgyYmI3ZDJhNmIzMWU2ZjUwZWY0NDQ5ZWY3MGYxN2FiMzk4OTU3NTAgbGVnYWN5LXRydW5rCis2MjI5IDE1YjFiMDNhZGU5M2Q3MmNkZTUwMTc1MGI0ZTNjMWI2ZTE3OTdmYzMgbGVnYWN5LXRydW5rCis2MjMwIGI5MTZkNjE0ZTM2MzQ2ODVhZTY1NWQ1Yjg2MmJjY2FkNjA3NDhhODYgbGVnYWN5LXRydW5rCis2MjMxIDU2NzQ2ZWVkZmUwMzc4OTc0YjhjMzQwM2I1ZTNhODFjMjk4NDQ2NGQgbGVnYWN5LXRydW5rCis2MjMyIGJmOGMyMzBkZjVlOGRkMzIwZTJjMTRmZjQ0NTUyYjBkZTI5NDBmNWMgbGVnYWN5LXRydW5rCis2MjMzIGU2MDM2MDFjNjhjZjQ0NjhlNTNmMDY2NTMzMmIzZjg1MWFmNGFjYmMgbGVnYWN5LXRydW5rCis2MjM0IGM1N2IzOGU0MGIyZGE1MGM3NWVjZWFhMjUyZDc4ZDdkNTYwZTA4NjUgbGVnYWN5LXRydW5rCis2MjM1IGJiNGNjM2ZhNjAwMGIwOWJkYWY3YzM4ZGNlNjlmNWY1ZTAwZDY4YzEgbGVnYWN5LXRydW5rCis2MjM2IDI5ZmU2YTBkZTM2NjNiOGQ0NWMyYzc0OTNlYjViNDg0MGFjZjg0ZmYgbGVnYWN5LXRydW5rCis2MjM3IGRiNTQ4OGZlNDk1YjJhMDA1OTNiYjkxMzA5NWY4OTQxMzlhNWVmM2IgbGVnYWN5LXRydW5rCis2MjM4IDUxNjQ5MGM4MTkyY2RmYjAxNmZhMTg1YjkyN2MyMDhiNzBmZGQ2ODggbGVnYWN5LXRydW5rCis2MjM5IDRiNWRlZjQwNzczY2VhZmE1NzVmY2U1YjIwOGFlZTMzYjBjNzhkYjAgbGVnYWN5LXRydW5rCis2MjQwIGQxYWUwZWE5YTU4NWY5MTJkN2FhM2QwMDRmZjgxN2QwZGVhMTEyZjggbGVnYWN5LXRydW5rCis2MjQxIDJiODEwYTNjN2U0MTRjYTQyZTZjODliNGExMzdiNGNiZDBlNDZlYzIgbGVnYWN5LXRydW5rCis2MjQyIDdjZGMwYzcxNDZkNTBhYzIxOTczZjUwNjBkOGNlYzY3MWRiODkxOGYgbGVnYWN5LXRydW5rCis2MjQzIGQwOTg4MzE4Yjc1NjhjNmE1M2ViZGJlMmZjZDc5Yjg3MWVkYzQzNmUgbGVnYWN5LXRydW5rCis2MjQ0IGM4ZDBmNzgyMjFjYzM2ZTgxNzg2ZDY0NzUwOTg5ZTg3YWYwYzQ3MGIgbGVnYWN5LXRydW5rCis2MjQ1IDZlNDBhMmEzZTZlZjBjNGEzOTg2MzM2MDlhMjQxM2VhMDZmOGUzNDUgbGVnYWN5LXRydW5rCis2MjQ2IDRjNzhkNzNjNTY2NzU3MjNjYjc3M2YyM2QwYTJhY2Y0MjZiNWNjMjAgbGVnYWN5LXRydW5rCis2MjQ3IGFiMTEwYjFlOTJmZmExODJlYWM0ZDY5M2UwMjdlNDM0Y2IzYjY4ZGIgbGVnYWN5LXRydW5rCis2MjQ4IGVjY2ZhZGE0N2YyODVhYjRhOWJmYWE1NDVlZTRiMjFlY2Q3N2FkZGUgbGVnYWN5LXRydW5rCis2MjQ5IGYzNWRkZTdmNDE0M2U1ZjYxMGJhY2VkOTZjYTIwZjM5OWMzMDAyMTMgbGVnYWN5LXRydW5rCis2MjUwIGY5OTA3ZjU3MzI3ZWM1NzYzOGQ3YTkyMDFlYTQ3YTNjZGNjN2I2ODkgbGVnYWN5LXRydW5rCis2MjUxIDEwYjUwNjFmNmNiY2Y4NTRjN2U4MWE1MmRjNDkwOTRkMDlhMjNlMzcgbGVnYWN5LXRydW5rCis2MjUyIGFjMTE0YTVmYzhmZjg0NmU3OTgyMTgzODNjZjRiYjQxYWY3YzY2ZGEgbGVnYWN5LXRydW5rCis2MjUzIDI3YzM3NzU3NWY0YWM0ZGQ5ZjRmYjJiMDhhYTk5ODA2YjQxYzU0YjcgbGVnYWN5LXRydW5rCis2MjU0IDNlYjE2OTRlZGNlNmIwNDI5ZGM1Y2U4NWY5OGFhMGE2OGQ2Mzc3NDEgbGVnYWN5LXRydW5rCis2MjU1IGE2MjAzZDE3MTU4YmE1MmUwZmQzM2Q4YzI4YjFjNDU5ZmFmZjVjMzQgbGVnYWN5LXRydW5rCis2MjU2IGI0MTAxOTU1N2I2ZTdjZmY4OGYyYWUwODg4MTZkODFjZThjMzE5OGUgbGVnYWN5LXRydW5rCis2MjU3IDBkNzQwMTEzMTBjZDFiNWJlYWNkY2FlYTgyODQ5ZGRhNDFkMmNkNzUgbGVnYWN5LXRydW5rCis2MjU4IDcxOGM4YWY3YmUyYTlmY2U5MjE3YjVlYmYyNDYyZWM0OTIzMDc4ZmUgbGVnYWN5LXRydW5rCis2MjU5IDc3NjYzNjBiODViODkxZWE5ZGI3ODVlZGZlYjg1YjNkYzg3YWZiYTMgbGVnYWN5LXRydW5rCis2MjYwIGI2NTM2OGVkODZiZTg5ZDE3ZmI5YjFhOTU4OWFkY2JiZTY1NzNjNDUgbGVnYWN5LXRydW5rCis2MjYxIDQ2ODgzN2FkNDVmMzgyM2FjODkyMDg0ODk4NGE1MWU5NTZhZjgxODggbGVnYWN5LXRydW5rCis2MjYyIDdlNjUzNjczMGQwZWVlZDJiYjg5ZGUyOTE0Y2Y1MTYxODE2MDY1YzcgbGVnYWN5LXRydW5rCis2MjYzIDJmNTczOTJiMmZkZTEyOWJjNmUzMDk5NDY3MTY0MzI3MjljMzgzMGIgbGVnYWN5LXRydW5rCis2MjY0IGU5ZWU0YzkwNWFiZDI4ZjcyZTg3MmVkZmNiNTlhMThiOTExZDZlY2UgbGVnYWN5LXRydW5rCis2MjY1IGNhMDJkOTI3ODE4MDExYjdmMDk2OGUyODE3NjRmOTQ1YTU4OWJhOTggbGVnYWN5LXRydW5rCis2MjY2IGQxYzQ3ZjRmMTU0MTUwMjNmOTY5MGZhZjM3YjRlYzI5ZDk2NzNhOTcgbGVnYWN5LXRydW5rCis2MjY3IDFmMjBmNTFiNzAwZTQ1YjhjMzY1MmFiMjZmZmY1OGNhOTI2NWRkYTIgbGVnYWN5LXRydW5rCis2MjY4IGVjNjk2M2MzNzQxYzE2NzQwNzI2NmZjZjU1NDhjYzQ2NzAyZGU1ZTggbGVnYWN5LXRydW5rCis2MjY5IDUxYTdjOGZlN2M3YjI5MjZkOGFjMDRmMTg3OGMwZWFjNmI2OTk4NzAgbGVnYWN5LXRydW5rCis2MjcwIGE4MTZhYmU4NmY5MDQ0ZDdhYzY1YWFkM2MwZjcwN2FkYzA3NTRmODIgbGVnYWN5LXRydW5rCis2MjcxIDJmMjc1MDFkYjNjM2U0MjdlMTEzNmI5NWE5NjJhNzI3YzBlMWM2NWEgbGVnYWN5LXRydW5rCis2MjcyIGFjZjM1ZWQwZjAyNjQ3NTFlYWQwMTM3NWQzNDVlODgxNDUyODc0OGYgbGVnYWN5LXRydW5rCis2MjczIDg0MzEyMWEyMjZjYTk0NjFiODZkZWY2YjVjMmExNGI3MTA4ZTM3YjAgbGVnYWN5LXRydW5rCis2Mjc0IDQ4ZTg1OWYzMjhjYmMwMTFmNmM3NmVhNGVhYjUyOWZiNTc1ZDgyYWEgbGVnYWN5LXRydW5rCis2Mjc1IDJlYWEwMDg2MGVkYzQ2MGIyYzk5MjU3OWVlZWE3OTZkNTdlOWM4ZjUgbGVnYWN5LXRydW5rCis2Mjc2IDQ4Nzc2YmY0YmQ0OTNjNmMzMTE3M2I1MDI1ZjdkNWE5NjQ4OTM4YjIgbGVnYWN5LXRydW5rCis2Mjc3IDRmNzM5NjJhYWJhNmJhYzg2NDc4NWIyZTIwNjk3NmFiYTdjZTg1NjAgbGVnYWN5LXRydW5rCis2Mjc4IDkzODY4YzdhMTVjOTBiZWViODk0NDE5ODYyMzNhYmU2ZmRiNjg0YTMgbGVnYWN5LXRydW5rCis2Mjc5IDQyNmU3OTZmNjExNTIxNzllYTRkYjllOGExNmRjMDdiMTZkMmY1MGYgbGVnYWN5LXRydW5rCis2MjgwIDE3YTI4OTFlNjI3ZmI4OWU1MjNmNzEyZmU2NTFkZjEwMGMyYzk5ZGYgbGVnYWN5LXRydW5rCis2MjgxIGJmM2Y4MDk0MWVjMTFjOGEzNzFjNTgzZmMzNDliYTBlZTZjOTNkNjUgbGVnYWN5LXRydW5rCis2MjgyIDJkYmQ1MDgxYzcxZTdiZmJhMDU2MGU4ZGFmZjQxZjk2OGRjNWQ2NmIgbGVnYWN5LXRydW5rCis2MjgzIGI5YTA0MzRkMmNiNmYxMjAyZDY0ZjQ2NDg5MzJjY2E0N2VjZjAyYmYgbGVnYWN5LXRydW5rCis2Mjg0IDZkMzI0ZmJhZmFkYzJmOWEzNjU5MzJhOTI3MzMyMDZjMTdkNjM5NmMgbGVnYWN5LXRydW5rCis2Mjg1IGNhMzZlMzA4ZTMzZDlkZTI3M2YxYTY5Nzc5NmQ0OWEyMmVlN2Q2MGIgbGVnYWN5LXRydW5rCis2Mjg2IDMxZTEwMGQ5ZDkyOWM4YjBkOGJhYTc2MTYxNGNkZWQxNWFhYTcwNGEgbGVnYWN5LXRydW5rCis2Mjg3IGNjOTJmYTJjZDg2YmQ4ZWU2ZGY3NjZkODRhMjRjMjZmOTM5MTVmMmUgbGVnYWN5LXRydW5rCis2Mjg4IDg5ZDRmNWRlZDY3MDM3NzYwOTk5N2VlZTFiM2YzYjMzMzY0NTdjYmUgbGVnYWN5LXRydW5rCis2Mjg5IGYzMjY3NmFiM2YzYTA2MTFkMTcxZjg0OTkwZmFmNGQ5NmU1OTdkMzcgbGVnYWN5LXRydW5rCis2MjkwIDNjNWNhNzcyNzk4ODNhNDMxMmU2NzA1OTIyNDY4ZDkyNzIxZDc2ODAgbGVnYWN5LXRydW5rCis2MjkxIDViNmE3OTFhYzZlN2RlNGVhZGEyNDljODgwY2I5MDQ5OTJlMzhmMDcgbGVnYWN5LXRydW5rCis2MjkyIGY3ZjNlNGI1NjkzYzE0YmVkMzlkZWY2M2U2YmJkYmY5YzE1MWM1Y2QgbGVnYWN5LXRydW5rCis2MjkzIDI0MGY4MzRhZWU4YmJiNDg0NTgzMzk0MzQ2YTk1NTg3MjI0ZmEyMzAgbGVnYWN5LXRydW5rCis2Mjk0IGRiNGVhM2FiZjg5MTJjNDcyMDk1MDNlOWM3MjA1NjNjMjgxNWNmMzUgbGVnYWN5LXRydW5rCis2Mjk1IDlhYWMzNzg5MmU4ODhmZWQ4NDhiYTFkYWQ0YjY3YWE0YjY5ZjMyNDQgbGVnYWN5LXRydW5rCis2Mjk2IDgyMGFiYTEwNDZjMzlhZmRmMzkxNjlmMjBmNzMwMDM0OTlhN2Y4YjIgbGVnYWN5LXRydW5rCis2Mjk3IGMzZWM2OWIxZmUzNjA5MzNkZGM2NWZmMjEzYzVjZGY3OGU0MjI0YTEgbGVnYWN5LXRydW5rCis2Mjk4IDk4MzFlMGZjMDFkZTA0NzI4ZTliODFmZWEyY2RkNTM4NmMwM2EzNDYgbGVnYWN5LXRydW5rCis2Mjk5IGJjMjJlYjVkNGEwYTExYmE2NWNkNDIwYTYwNWMyMzM3MmM0MTU0YzIgbGVnYWN5LXRydW5rCis2MzAwIGMzNWQ5ZTJhNjg2MDgzMjdlNTI4MjRkMDRjMjQwOWZjYTBlMWI5ZGUgbGVnYWN5LXRydW5rCis2MzAxIDA5YmViYTk0MDlkZGQ0YWY1MzI4NzQwMWMyOTY0MjgxMmQwYTJlMTkgbGVnYWN5LXRydW5rCis2MzAyIDNlM2U5NWRkY2UyMmZiMzQ4OWY0NDZhYWI1ZDVkMzI3ZmNmMDI2YjEgbGVnYWN5LXRydW5rCis2MzAzIDk2ODUxZjUxYWQ2YmY5ZmVkYWU1ZjZhNGVmNmJjMWQ4ZDgzNjhlOTYgbGVnYWN5LXRydW5rCis2MzA0IDAzOWJjM2U0ZTY0ZWExMjA4ZmNjMzkwMDIyMjEyZjZlNjk4MGI5NGEgbGVnYWN5LXRydW5rCis2MzA1IGYwZWZmZjI4YTI0ZGQxZDA1NWMzNmFjNTkzYzBiNmQ0ZmFiNjEwOTMgbGVnYWN5LXRydW5rCis2MzA2IDc3ZDkxMmYyYWJjYjRmMzMwNDBmMGNiOTNkOWY4NzVlN2I0ODA0NWQgbGVnYWN5LXRydW5rCis2MzA3IDM0MzIzMmMxZGM5YTA3NDkzOTk3MGU2ZDE1MWM0MGE4YjNlOWFiYmMgbGVnYWN5LXRydW5rCis2MzA4IGZhMTQ4MGU2MGVkNmI0ODg4Y2ZlY2Y2NDE4YjJjMmM5NzZjOWRlM2UgbGVnYWN5LXRydW5rCis2MzA5IDJiMmVmYTQ4ZjI4ZDI2Yjk3M2NjY2RkYTAzZDBkNWNiM2FmNzZiZmIgbGVnYWN5LXRydW5rCis2MzEwIDVhYWIzZjY2OGU4NDY5NmQyNWQxNjVhZWE3MzYyNzQwYWY3Mjg2YmUgbGVnYWN5LXRydW5rCis2MzExIDIyZTI5YjE3NDdlMTM5ZDk1OThlYWE1MTI2YzU5MzEzYWYzOTk0OWQgbGVnYWN5LXRydW5rCis2MzEyIDI2YzIwMDI2NjYxMTk4MDZlMDA3YWQzNjdjYjg1Mzg1ZjcyMjFkYTUgbGVnYWN5LXRydW5rCis2MzEzIGY2NjY3OWFhOGRlMGFjZTM2ZjM2ZGJiM2Q3Yjk1YjMyOTc5NmUxODggbGVnYWN5LXRydW5rCis2MzE0IDIxMDgxNmQzNDhiYTQ1ZWU4OTE0NjkwNzhiY2JhNjJkYTA1ODNkYWIgbGVnYWN5LXRydW5rCis2MzE1IGRlMGFkNzUyN2RlN2ZjZTg0NzFlODYwOTRmMjhiNzdlMWNiMGY1ZmIgbGVnYWN5LXRydW5rCis2MzE2IDBkNTRhMTRlZjBiOGM3NGJmYjYyZDUzMzJmMjMzZTU3ZWM3ODY4MjkgbGVnYWN5LXRydW5rCis2MzE3IGQxOTMzOGZkMzhlYjY5ZTg1NDA1Y2VlMWEwOWEwNzM2NGYxZWU2ZjQgbGVnYWN5LXRydW5rCis2MzE4IGZjZDgyYTAxNTA3ZDI2MjI5NTU1YjdiMDkxNGJjYWVjZDc3NTVkYTMgbGVnYWN5LXRydW5rCis2MzE5IDhkYWIzYWQ5NjQwMDZiZWRmZWY4ZjU5NDM0MGYzMGQ3MzYyY2NhMjMgbGVnYWN5LXRydW5rCis2MzIwIDk3ZDI0YWYzNDhjZmU4MjliNDFjN2QyZjJkYTlkODlmZjBhMThjNzAgbGVnYWN5LXRydW5rCis2MzIxIDY5ZGNjMDJlMzEzNWZhYmM3MzRlNTBlYjExMjgxMzNkOWUzNzIxYzUgbGVnYWN5LXRydW5rCis2MzIyIGQxY2ZmNDllM2NjOGQyODBhNDZkM2NhMjU1Nzg3ZDE0YzFjZGExNTcgbGVnYWN5LXRydW5rCis2MzIzIDBmZmMwYjM2MmZjYmI5M2ZhYmJiYjVjNTc4YTYxZGM2MmI3ZWQzOWIgbGVnYWN5LXRydW5rCis2MzI0IDk3NTE5ZGZjNjNhZWI3OWRmZThhMDFmZTkyMmYwODVhMDlhODVhMTYgbGVnYWN5LXRydW5rCis2MzI1IDNiMTE0ZjAzMTVjMTQ1NjE0OTIxNjJhZDc4NWJkZGI4ZDllNDgwODUgbGVnYWN5LXRydW5rCis2MzI2IDIzMTI2ZTgwNDBhMGMxMjYyZWExOGQwZmFlNzJhZDRkNjY0ZjU1ZDkgbGVnYWN5LXRydW5rCis2MzI3IDA0NTdlYTk0ZWY3OWZhZjliYzc5YmVmMWYyNGE4YWZhMmY1NDZlMGMgbGVnYWN5LXRydW5rCis2MzI4IDU4MzBlZGU0MDg2Yzc0NDA0ZDQxN2RlMzI1MWRjY2UzMTZlMTlkOTIgbGVnYWN5LXRydW5rCis2MzI5IDgzYTk1YmY3MDg2N2RiZjM3NGQ3ZGU4NTk5NzQ0ZmEwOGI1ZTFmYjQgbGVnYWN5LXRydW5rCis2MzMwIDhiNzFlYTVkYWNjODMxNTUwMjM5ZDczNzk0ZmFhYmE2ZWQwMTM1MjcgbGVnYWN5LXRydW5rCis2MzMxIDA4NTMxNjZmMGQ2OTY2MGQ2YzQzMmViMzhkMjU3MGFmZDRiN2I3ZmEgbGVnYWN5LXRydW5rCis2MzMyIGI2MTkzOTUyNGMzY2VmY2I0YWUwZTIxNTA0OGMwMDY0ZDE2ZTA2NTAgbGVnYWN5LXRydW5rCis2MzMzIDhiNTkwMTM5OWFkZGI0ZWEyMTY4YmViN2M5MmY1NDM1NGIxYTBjOTQgbGVnYWN5LXRydW5rCis2MzM0IGQ1NWNkZjQzYzI0MDE5YzY0MDg5ZWZhMmM2Zjg3MjcwN2ZmZmE0NjAgbGVnYWN5LXRydW5rCis2MzM1IDQ1NjZhMTljMzQzOGQxNGUwMTZhYTM3MGYyMGMzOGU3ZjExOGRkMDIgbGVnYWN5LXRydW5rCis2MzM2IDc4MTk1NjgzMjNjMzc1M2YzMmQyM2I1NzAyMTgwNGM2NzcyNzM2ZGIgbGVnYWN5LXRydW5rCis2MzM3IDQ1OTEwMzUyMjhhNzczYTUxNmFhNDBlODU3M2Y0YTU5ZGZiY2RlNTEgbGVnYWN5LXRydW5rCis2MzM4IGEzYjA5YTcxMTYyYmMyMmJjNGM0YmEzNzYzNzZmMjYwNmY2MzhkNzEgbGVnYWN5LXRydW5rCis2MzM5IGU5YjM1Y2M4OGI1MGU5NDBkMjdiY2RjYjA0NTc3MmE5ZWM3ZjdhNmMgbGVnYWN5LXRydW5rCis2MzQwIDJhYzJhNjAxMjA1YjMzNWJjODZiMDkxNzNlNmQ1OWQxNGY1MDk3MDEgbGVnYWN5LXRydW5rCis2MzQxIDRkZGU4YzA0MGY5ZWM1MTY1YmUwMzdmYmVjYzAzYTVjYTVkOTU2NmIgbGVnYWN5LXRydW5rCis2MzQyIDViMTQ3MTA5NWEzYTI2NzIxZmI2NDFmNDI1NTY2YTYzYjQyNDI2ODcgbGVnYWN5LXRydW5rCis2MzQzIDliMTk1Mjg1ZmUxNzdiMTVmNGRlNTVhM2U0YTY1OTU4NWZiNzEzYzUgbGVnYWN5LXRydW5rCis2MzQ0IDRlOTc5MTYxNjcxZjQzOWFlODVlMjBiYmRkNTAyOTU3ZmU5ZjMwYzggbGVnYWN5LXRydW5rCis2MzQ1IGJjMGVkYzU4OWFkNDlkOWI1ZDQ5MGNhYjUyNTNhZDI0YTRlYmM3OTkgbGVnYWN5LXRydW5rCis2MzQ2IGRjNWMxMTE3NzMzOTgwZThkODc1NDFlNjI3MDM3YjRhN2U1MGFmZTggbGVnYWN5LXRydW5rCis2MzQ3IDI4MzhkYjgzZDBlZDM4NjA0ZWY2MjhhNDdkMTBjNDMyMGEzOTUwYjMgbGVnYWN5LXRydW5rCis2MzQ4IDA2MzhmZGMyM2VlYzRiYTZlNmIzZTI0ODE4OGY5ZTYxN2JkMGM4MDEgbGVnYWN5LXRydW5rCis2MzQ5IDQwOGUzNzQ5MzRlNWE0MjRkMzA0M2JmZDY0Yjg5NWFhMjE3NTk3OGMgbGVnYWN5LXRydW5rCis2MzUwIDQyODY5MTAwODBhOWZlYWFmZGUzZjgxMzA3OWI4YmRiZDM3NDhkMGEgbGVnYWN5LXRydW5rCis2MzUxIGZlZTkyOGYxNjYxZTc3NTJmNTcyNmZmMzg4MmFkZGYwM2I5ODI5YzkgbGVnYWN5LXRydW5rCis2MzUyIGQwYjQ1NjZlMjEwN2E1Mzc0MTgxMzdlZTEwNzg5ZWFiZTgyNWRjYTUgbGVnYWN5LXRydW5rCis2MzUzIDJkYTEyYzlkNzE0ZjQ3MzJiYmQ0MDllNTg1NjYxODZiYjJmZTMxMTQgbGVnYWN5LXRydW5rCis2MzU0IDM1N2Q3Mzk1Yzk5OGNkZjY2ZWJmNjQ2YmU1NDNmODM0NjVjZmM0ODMgbGVnYWN5LXRydW5rCis2MzU1IGM4ODNkNWUyNGFkOGYzMzVjOTJlYWY2ZDAyYWM5YTg0NTRhNDRlYzEgbGVnYWN5LXRydW5rCis2MzU2IDZkYzdlZDhhNDM0YjFmZjM2OTBmYjlhNTk4MTFhMjI0OWMxMzM0ZTEgbGVnYWN5LXRydW5rCis2MzU3IGZjOWIxNjVhOGEwOWQzMTI4NmJlMDg2MGE5ODQzNzUwYjM5NDY5NjAgbGVnYWN5LXRydW5rCis2MzU4IDgxZjYwZjUyYjg3MzI1ODVhZjRlOGMzN2E5Y2Y0NzcxOWNkYWUwNGUgbGVnYWN5LXRydW5rCis2MzU5IDk1N2Y0MmVhMGY4NDQ0NDg2YTIzN2NiNzkyYjMwNTdlZDdjMzIzYTAgbGVnYWN5LXRydW5rCis2MzYwIDNjNzUzMDZhNjVjZWQ0MTY2MzM3OGM2OTBjYTVhMzQ1NGU5ZGM3YTkgbGVnYWN5LXRydW5rCis2MzYxIDU3MTY4MjVmNmU5YjEzN2ZmODY3ZTNkOWJhYmI0M2Y4ZTMxMzVhNTkgbGVnYWN5LXRydW5rCis2MzYyIGY5MDMwMTU0NGZhOWJlODlhNmI4ZjJhODljODViN2FhNGQxNmViMTIgbGVnYWN5LXRydW5rCis2MzYzIGQ5ZTdmMTA4OGMzYjM2M2JhNDg1MmNkOGVhNzFjODI3NDFlNzZlODAgbGVnYWN5LXRydW5rCis2MzY0IGFiMDg4OWU0MjFlZDQ3YTJiMmE1NDA0MmI5NjQ0NmI2NDQ4MDU3YTQgbGVnYWN5LXRydW5rCis2MzY1IDk1OGQ0YzY3NTI2YjA5Y2RkZDJlMjYyMjU0MjMxNDNlMGIyZGU0NjQgbGVnYWN5LXRydW5rCis2MzY2IGE1MGFlODM5M2QzNzgwY2M3NDNiZjliODM3MDRjMWI5OTA1MDJlZjggbGVnYWN5LXRydW5rCis2MzY3IDMzZTVkMWQ0MmNjMjYyZjk4MjA0YWJkOTM1M2MxOTJlYTdjZDc1MzMgbGVnYWN5LXRydW5rCis2MzY4IGY0YTNiMTZlOTVmMDdmYWFmNGVmMWQwYTFjMmRiYWFlOTkyNmM0MWMgbGVnYWN5LXRydW5rCis2MzY5IDMxOGU2ODljMjIwZjkyMTk3ZDllYzc2NWJlNjllY2FmMzI0NzVkNDYgbGVnYWN5LXRydW5rCis2MzcwIDk0YzZiZjZmZDdmNGZhMDk1MDI0YzdkYWY4OGFiNGI0OTIxZGM1M2EgbGVnYWN5LXRydW5rCis2MzcxIDU4NDkzNjg5MGY4NjY5MTVkMjE1NGJkNTI1ZTUwZjNmNDVmMmQxNzcgbGVnYWN5LXRydW5rCis2MzcyIGNiYTRjZTE1YTBkNWM5OWFhNjVhOWM4NTk2ODRkZGU1Y2RkN2M2YmYgbGVnYWN5LXRydW5rCis2MzczIGNlMmQ5MjM5YmE4MTE0NWQ4YzYwYzJjNjFmOTA1ZGViN2I4NmQ4MzggbGVnYWN5LXRydW5rCis2Mzc0IDA4NjRhNjNhMTBhOTJjMTdjNTFjZDMwNDEzZTJiZDAzZmZjYjFjYjMgbGVnYWN5LXRydW5rCis2Mzc1IGEzZjY3YmI5NmFkYzhjMzI2ZGZmZDg1MmIwZTcxZmM5YmU3MzNhYTYgbGVnYWN5LXRydW5rCis2Mzc2IGZlNDExNjNjMDBjM2ZmMjlkZTVmNTZlNjNjMzIyOGQ0NDg3ZjAxMDUgbGVnYWN5LXRydW5rCis2Mzc3IDk3ZTcwMTFmYjFiMTkxYTMwNGY2NWJmNDNhMTU2YzNmYzM3MDMyMGEgbGVnYWN5LXRydW5rCis2Mzc4IGEwZmQ4MTY4OGJlNTJmNWQ1NzI5NThjOWMyNGNjMDQ5MWI2ZWIzMTggbGVnYWN5LXRydW5rCis2Mzc5IGFjMWQ1YWJmZDc4ZWU0OTEwZDdlNTgzMmE3OGM1NDUyNWQyYTMyMWUgbGVnYWN5LXRydW5rCis2MzgwIDg2NzE2NDJlMTRhMzc4Zjk5OGI5MWU4MjA2YTU3ODU1YjhhNDA4NmQgbGVnYWN5LXRydW5rCis2MzgxIDZkNTA5NmI3MDM4ZDhhMTY5YTc0MWIwOWUxYWVmYjE1MzkzZGQ0YzIgbGVnYWN5LXRydW5rCis2MzgyIDljZjExYWYzNjI4Yzg5ODU5YzUzMWQ1MzVmYzRjNzg5M2MyMWM4MzAgbGVnYWN5LXRydW5rCis2MzgzIGE5YTkyZGMyYjM3NDk0NmMyODY0MTYxMjIzZWMxN2ZhNzY5ZDE3ZmUgbGVnYWN5LXRydW5rCis2Mzg0IDViYmUwZGNlMmUyNjcxY2FmYjhhMDQyNzQ2ZDRlNWNjMzg3MWM2MGMgbGVnYWN5LXRydW5rCis2Mzg1IGYyOGQzZDg5ODJhMjVhNzM3NWExYTUxZmZkMzZlMTIyNDFhMWZmNGIgbGVnYWN5LXRydW5rCis2Mzg2IDUyNGNmNTAxYzg1MWZkODVhMzllNzJlNTY5Y2FlODA2Nzg3ZTNjYTMgbGVnYWN5LXRydW5rCis2Mzg3IDM0MTE0NjEwMGYzOGNhOThmYTY3ZTcwZmE4ZWEwMDlmOWJkY2M0MmQgbGVnYWN5LXRydW5rCis2Mzg4IDg0ZTE2Y2Y5MjE5OTI1YjVjZTM4YTQ5ODkwZDAyNTk5YWVmYzIyNjcgbGVnYWN5LXRydW5rCis2Mzg5IDQ0NDEyZTQ2ZjI2ODc3ZTk0NzMwZjU5MjU3Zjc4YjM4ZWEzOWFlNDkgbGVnYWN5LXRydW5rCis2MzkwIDdkZTVlMTE1M2IzOTJjYjZkNTZmYWU1YzNkNmEzNzE1OTRlYTQ4ZGYgbGVnYWN5LXRydW5rCis2MzkxIGY0ODc3OTNkNjAxODQ2ZDBmOTY2MjEzNzU5N2JlZDg5YjMxZjM0NzMgbGVnYWN5LXRydW5rCis2MzkyIDkzNjYxNjRmNWM0YTkzZDcyOTdjYThkNzQ5ODEyNWFjYTAxNzYxM2YgbGVnYWN5LXRydW5rCis2MzkzIGMyYWUwNDQwYzQyNGE3MjI4NGE1N2VjODQyMWU5NzUzNTk1OTY5Y2IgbGVnYWN5LXRydW5rCis2Mzk0IGU4YmQ0MzBjZDM1N2U4NmNmOTk4ZDdkODk4Zjk1MDU0MmNmMjVmOTEgbGVnYWN5LXRydW5rCis2Mzk1IGEzOWQwNjQ5NzUyMDM1YjdkOWE1NmIyYzQ2ZWE1MWRhZDExOGE2MTcgbGVnYWN5LXRydW5rCis2Mzk2IDA2M2Q4Njc0MTQxMGUyZWQ4N2QxYzI5NmY5YWUxN2UyM2M0ZmY0Y2QgbGVnYWN5LXRydW5rCis2Mzk3IDRiY2VlNjNkNWJiMTdkYjAzODM3NjZmYTczNDAwZDNhNGMzM2FlZjkgbGVnYWN5LXRydW5rCis2Mzk4IDFkYTE2ODE4NWU0ZTA1Yjg5YTUwODZhMThkZGM2ZTkzMTg3Y2NmYmEgbGVnYWN5LXRydW5rCis2Mzk5IDUzZTc1N2JiNjdkNWQ2MzFlNmJhOTgxYjVmODRjN2M4MTJkNDc3YjkgbGVnYWN5LXRydW5rCis2NDAwIDE2NDBlMzU1OWI4NjY3OTlkOWMzZWEwOWIyMjU5OTliYjhkYzExNWEgbGVnYWN5LXRydW5rCis2NDAxIGZmNjhhMmVjMWZmMTJjYjYxNWNjYmM4NzJhNTZjNTI3MDRmNDk3OTkgbGVnYWN5LXRydW5rCis2NDAyIDUyYzE5ZWU4M2E2YjBmNzFjODkwMDdhNWQyMmE4ZGRiZWZhMTkyNGYgbGVnYWN5LXRydW5rCis2NDAzIDg4MmEzMWI3Zjg3MzExZjhlMDhmMDA4MmRhM2FjYjQ0YjkyYmU4MTcgbGVnYWN5LXRydW5rCis2NDA0IGZlMTE5Njk5NTM0NDZkNzBhYTkyMTEzNGY4ZDM4NzEwNzBjMTQ1ZGMgbGVnYWN5LXRydW5rCis2NDA1IDYwYmI3NDNiOGE1YzIwMDBkM2IwNTVmNzIyNDc4ZTU5NGJiZGUzODQgbGVnYWN5LXRydW5rCis2NDA2IGY5YWQ5OGI1ODQ3MmIwOGU3ZTU5NTAyZTYzMzAzZTI4ZjU4M2U4MjkgbGVnYWN5LXRydW5rCis2NDA3IGQ3ZDg3MDViYTY0NDRkZDBkN2ExZDVhMjE4NDhiMjU3MTRiNmM5YzggbGVnYWN5LXRydW5rCis2NDA4IDZlMGJiYTkzYTBlYjMzODYwOTRkYzNhOTg0OTc4MzI4N2ZlYWQ4MTggbGVnYWN5LXRydW5rCis2NDA5IGRlY2QxM2Y2NjI5ZDVhNDMyNDBmNWU1ZTVkOGNkZWUzMmI3ODcxMmIgbGVnYWN5LXRydW5rCis2NDEwIDYxYjRjYWU3N2Y3ZTg3MzVhYjA2NjZkZTgyODVhYzU0Yjg2YTRjY2QgbGVnYWN5LXRydW5rCis2NDExIDY3NTMyOGIwODEyMmI5Y2M5NDRlZDEyMmZkMmZjYzdmYjQzN2YyZmEgbGVnYWN5LXRydW5rCis2NDEzIDQ2YjMzY2Y4YjkxM2U1ZDA3MjJkYTFhNTVlODZjNTVjOTIzZTdlMmEgbGVnYWN5LXRydW5rCis2NDE0IDBkNDQzN2QxYzJiNTdlYmJiYWZhZTIwMGUyYjU5MjFjYWIwZmJmNmEgbGVnYWN5LXRydW5rCis2NDE1IDM4Njg0ODUyMzc2ZjU0MjI2MTM5NTNjMmQwZDJiMGQ2N2QyZTE0NmIgbGVnYWN5LXRydW5rCis2NDE2IDZlNjA5ZTI2NmJlOWQxMGE5YjFhMjM2MmRkNTY0ZjY5ZjRlM2U3YzggbGVnYWN5LXRydW5rCis2NDE3IGZiYWZiMGNkMGEyYTU1ZmYzMTNhZDRlNzA5MGQxMzc0ZjgwNGY4MTUgbGVnYWN5LXRydW5rCis2NDE4IDczY2Y3MDgyYjllOGQ3NDE0NzJjNGNmYmU4YzY2ZGQyNzE1MzQ5MzIgbGVnYWN5LXRydW5rCis2NDE5IDZmNzhkMzE2NDM3NmFlMjQyMWY1MDA0MTdmZjJjZDc5MDIwNTM0OTMgbGVnYWN5LXRydW5rCis2NDIwIDEwNzUzZTRkNzZlNzFkYzZhMDg1ZTUyNjIyZGY5MTRhNzRjMDdjYWQgbGVnYWN5LXRydW5rCis2NDIxIGRlYWRlYTQzYmI1MzY0NTM1ZTVkZDE3MGYyOGFlZjBkMTdjZmY5NTUgbGVnYWN5LXRydW5rCis2NDIyIDNhY2FmN2FmNDljYzEwMTM2NjMwZjM0NTdhMDAyNWVhMDZhZDJmMzkgbGVnYWN5LXRydW5rCis2NDIzIDc1ZDAxNmM5N2QxYzJjZWVmNDc4ZmU4NzVjMzJiZDA4NWQxYzAzMGMgbGVnYWN5LXRydW5rCis2NDI0IDkwODE4MTlhYmJmNTU2NzQyYTlmOWY0MjBiMzU2NTllYWY0MGFkZjAgbGVnYWN5LXRydW5rCis2NDI1IDdlZTFiMTAwZWQyOWE0ZmYxZjIzMTU3YmU4YzBjZmI0OTJhNDNkMGMgbGVnYWN5LXRydW5rCis2NDI2IGYwZjhiNTBiNWI2Y2Q2ODZlYzBlNmJiNDljY2YwMWRmZWRhYjNjOTAgbGVnYWN5LXRydW5rCis2NDI3IDlkOGE5NjVkZTdlYzhhYzlmNTM2ZGM1NTY1NDE0OTZlNGE4MTY1MjkgbGVnYWN5LXRydW5rCis2NDI4IDI5MDE1YjU4ZTkyMjAyMzQ1Mjk4ZWZiOTgxMGY5NDM4Nzc5OTc4YTYgbGVnYWN5LXRydW5rCis2NDI5IDhlMzA5YmU4OWVlNDU0ZjE3ZGQwNjBlMWU1OWFlZDI3Yjc5MmQwZTkgbGVnYWN5LXRydW5rCis2NDMwIGYwMWU3YWYxZGQ2MDY4M2IxZjMwMmU5MzI1N2FjNDczODU4NmVkMTMgbGVnYWN5LXRydW5rCis2NDMxIGI4NmM4MDQ0OGQzNTVlN2U4OWNiYzc2YzIyNDM1NGJjYWIzMTJjYjMgbGVnYWN5LXRydW5rCis2NDMyIDZhZjdhNzAzYWRhZWRhMWM2ZjVlNWQ1ZDJiNWMyOTQ4NDIyYTI2NGEgbGVnYWN5LXRydW5rCis2NDMzIDkwZjUwNTU1NTBkOWEwNGU1MmE2Y2Y2ZDUwMDIxNTFjN2VjODEyY2MgbGVnYWN5LXRydW5rCis2NDM0IGJmZDliYWYzYTljMjlmZTVlZDYzZTJhNmE4MWEyMTBjNGY1YWE4ODkgbGVnYWN5LXRydW5rCis2NDM1IGYwOGQ3ZjM2OGViZmExOGU5OWQwM2E2YThkNGRmMDdkNTA0ZTRmZTkgbGVnYWN5LXRydW5rCis2NDM2IDAwNzIyOTkwYjgwYzMxZjJlZDlkZGYyNWY1ZGE0ODNmMTg2NjY0YjEgbGVnYWN5LXRydW5rCis2NDM3IGZjZmVjNmE4MTBiYTU0M2U2N2IyMGY5MmIxOTQ5Nzg4ZDZmYjVhOTcgbGVnYWN5LXRydW5rCis2NDM4IDljMDVmZjZmYjBhNGU0YmI3NWU1YmQwNjNmZTk3YTIxYjcxMjYxNDcgbGVnYWN5LXRydW5rCis2NDM5IDI4OTdkYWZlZDk1YTcyODRlY2Y5YWE0Y2EyN2JmMGQyZTkxMTY3MDMgbGVnYWN5LXRydW5rCis2NDQwIDUzMDE5ZTNhNmQ1YTM0MDU5MjgyZTVmNzc4ZjM3YWYyZjFkM2UyNzMgbGVnYWN5LXRydW5rCis2NDQwIDEyOWYxMjk5ZDRlOTdlODg0YmJiYmRkMDBiYWYxMDFkMTc4OTczZTYgbGVnYWN5LXRydW5rCis2NDQyIGFkODhhMDAwNTIxZjdiM2YzZWRiNTU0ZWJhZGQ4NzcwZThmMDA4ZDMgbGVnYWN5LXRydW5rCis2NDQzIGRjMTQ0MjU5NDk4ZmNlOWFhNjg5YjI4ZmJjOTc2MDJjYTNhZjMwZDEgbGVnYWN5LXRydW5rCis2NDQ0IDE0ODE1MjUyYzdhM2E1YWU0MWQzZjg5MWI1ZjhiMTJiYjgzODE5MDQgbGVnYWN5LXRydW5rCis2NDQ1IGJiMGNlNjUzYzJiYTAyN2JiNDEyOTk3ZDBiMThiNGE3MTZkYmY2YjMgbGVnYWN5LXRydW5rCis2NDQ2IDNkMWU0Yjc2Zjc0NWE5MmM5MTVhODZkYjNiZmQxOGYzNzdlNmQ4OWQgbGVnYWN5LXRydW5rCis2NDQ3IGZjNTA1ZjAyYWQ4YTI4MDc1OWViMDc0ZTUyYjliMDgwMjAwNTQ2OWQgbGVnYWN5LXRydW5rCis2NDQ4IGI3NmZlNjdlZWQ0NGVhNzA5MzAyMGQ3OTU2MTcwYjZhNzFmNWJlMjQgbGVnYWN5LXRydW5rCis2NDQ5IGEzNDk5N2I2ZWRmNDJiZDdkZTE1MjAzMGYyMGFlMjI1NDdjMmNjMjcgbGVnYWN5LXRydW5rCis2NDUwIGVhZWM0ZjZhOGJlOGNmZjdmZTEzYmIwOTcwMjMwNGFiZmVkMDk1MzUgbGVnYWN5LXRydW5rCis2NDUxIGI5M2M0Y2ZjMmNmZWE0YjRjM2Y0NjNhNGNhZTUzNTg4ODAwM2VlNzMgbGVnYWN5LXRydW5rCis2NDUyIDg3ZTUzYzYyY2FjODIxNjBjN2NkOTI2OGYwOWM3ZjEzZTE4MDU4NzEgbGVnYWN5LXRydW5rCis2NDUzIDRiNTA5OGIxZmNlZjI4MDYwYWI4OTBjZTlhMDJmY2U5MjM2YWJhMjIgbGVnYWN5LXRydW5rCis2NDU0IGZiNWZjMDMyMGU2ZTVkNTJkYWFjOTc1NDUzNjhjYzhiYTljNmIxYWEgbGVnYWN5LXRydW5rCis2NDU1IGNhZjExMDcyNGNjMTc3ZTQ1MDNiZjYwNzhkYjcyMjk2YTUxMjk3YTIgbGVnYWN5LXRydW5rCis2NDU2IDQ0OTAyNTE2NjE0YTkwMWZjOWVkOWZjYzY4ZGE5MWQwMGY0YWIxNTggbGVnYWN5LXRydW5rCis2NDU3IDA2MTNmMTdkY2ZkODY1M2EzMDQ3NDQ3MTNkMDJmN2IxNmE2N2E1NjMgbGVnYWN5LXRydW5rCis2NDU4IDAxMWNmZTc0OTBlYjVmOTZmNDgzNWI0YzY1ZTg2Y2RjNjlmZGUyYzEgbGVnYWN5LXRydW5rCis2NDU5IDljMmNiZjMwNjg2NGQyZmI5YjA1M2MzZDhiMmJjNDFlNDQ4YTkyYjAgbGVnYWN5LXRydW5rCis2NDYwIDZmYmM1YzY2NTgxMjFlNWE0MDg1MDIwZGRjYzA2ZjdmYjE2NmFlMzQgbGVnYWN5LXRydW5rCis2NDYxIGVmYjNhNWEyY2RlYWNiZmIxZjMwZTM5MzRlN2ZhYjNhM2RlNzg4OGMgbGVnYWN5LXRydW5rCis2NDYyIGE4MTU3NjViNDY5NTJjMWYzYTg4MTYxODI0MDVlMTA4ZTE3ZjUwMzIgbGVnYWN5LXRydW5rCis2NDYzIGFlOGQxYjQ2OTgxM2E3MWZhNzUzY2I0MGQxMDNhZmRkN2NkOTJkYjQgbGVnYWN5LXRydW5rCis2NDY0IGNmYjhiN2JjMDIzM2E1ZjEyY2UxN2Y1YWQxMDkxZWQ2ZGRlNWRkMjMgbGVnYWN5LXRydW5rCis2NDY1IGE0YWFjNzY2Y2JmMDA1ODI4ZWE5ZDJiYTU0YmM5NzU2MWU3YTdhZGMgbGVnYWN5LXRydW5rCis2NDY2IDY0MTRmZmI3ZjI4NWQzNjJlMzIzYzU2ODk3NTUwOTY1MDAyZTczNWYgbGVnYWN5LXRydW5rCis2NDY3IDNmNTdhYjMyYjc0MTJiMzM1YzBlOGEzODFhNDEyNDIzY2FhYWJkZTUgbGVnYWN5LXRydW5rCis2NDY4IGNhMGUwNWVjODViOWFhZDMwZDE4ZGE5MGE0ZGMzYTgxMWU1YTYxYzEgbGVnYWN5LXRydW5rCis2NDY5IDBlYzJjZTk3YjhlM2NiZDBhYWRlZTAzMTgxMzVhMWUyZjg4YzAzMjYgbGVnYWN5LXRydW5rCis2NDcwIDgwNjk3OTBiMzk3NDAwOTE5ZWU5OTBjZDM5MjQ0ZjRkNDBjMjQ2N2IgbGVnYWN5LXRydW5rCis2NDcxIGY2MzBhMDY3YWU4Y2IyMjEwYjY4Y2M3ODJmODVlMTVlZTg5YjE5MzkgbGVnYWN5LXRydW5rCis2NDcyIGIwOTc2Y2RiZDU5ODAzYjMwM2U2Y2EwMTM2OTA1NmM3YjBhYTU1N2MgbGVnYWN5LXRydW5rCis2NDczIGJmZmZkMzhkNjAwYjVkOTY1YTVjZmJlNjFhNDY4ZWRhNTgyZDIzNTYgbGVnYWN5LXRydW5rCis2NDc0IDFlZDc3M2UxNTkzNjkzNDVjMzllMjg2NzQ0OWYxOWUzZTFiZGExZmQgbGVnYWN5LXRydW5rCis2NDc1IDQyNDE1ODI2MzZhZGIzOGVjYzE0MzgyZGNkMGEzZmE1Yzg2OGQxZDIgbGVnYWN5LXRydW5rCis2NDc2IDEzOGZhMTVhMTAzMmVjMWIxOGM2OTFlNjgxY2U4Mzk3YmY4YzhlYzQgbGVnYWN5LXRydW5rCis2NDc3IGQzYTFmNjA4OGMyOGYxMzE5OWYwYzI0NjAwZmYxYjliODdlY2Q4NzcgbGVnYWN5LXRydW5rCis2NDc4IDc0OTUzMjI0MjdjNzZhYzZlM2Y3OTUzNjc2M2Q5NWQ3MTFmMmMyN2YgbGVnYWN5LXRydW5rCis2NDc5IGMyYTYxMWFlMGZlY2Y0OTY5MDAzYzJlOWY1MWJiOWYxNDJhNGQ4NGIgbGVnYWN5LXRydW5rCis2NDgwIDFhMGFhOTg2ZjZmYTY0NTViN2IxM2Y3ZWI0MmE1YTJlNWQ3YzExNzQgbGVnYWN5LXRydW5rCis2NDgxIDE4YzMyNzE0ZjhiYTU1ZDE1NWVhNmE4OTYyY2UwOTI5MDFjNTM2MTcgbGVnYWN5LXRydW5rCis2NDgyIDYxMTA2OTg2YTFhNGM5YmQ1MzVjNjExMWM0YWM5ZGY0MDlhMGNlZWYgbGVnYWN5LXRydW5rCis2NDgzIGNjY2Y5ZjI3MzJjZjNlZDRmZTk3ZjdlNTFmMjUyODg3MGE0N2RkM2YgbGVnYWN5LXRydW5rCis2NDg0IDkyOTQxMWRiMjBhODU4N2Y2MTU0OTcyMGQ4MGI4NzYzNTgwNmE4N2UgbGVnYWN5LXRydW5rCis2NDg1IDIyYTAzM2JiZTY1NWYxNWI0MDNmNDYxZGI0MGI0ZGZlNmE1NmY1MjIgbGVnYWN5LXRydW5rCis2NDg2IGFhOTU0ODg4NWIzZjgwYTMyM2E4NzEyNzQ0YWE1ZmM3YzU3NmNmYzkgbGVnYWN5LXRydW5rCis2NDg3IDQ5MDllZjM5ZWFmMWRiODI0MTQ2ODQ1MDIxYzhlZjM0NTE5MDczNjUgbGVnYWN5LXRydW5rCis2NDg4IDIxMTIxNWMxYzUwZDRiMjRhM2Q3NDg0YjMyMTk2MzZlYTVmMTY3NDUgbGVnYWN5LXRydW5rCis2NDg5IDkzODkxOGZmMzUzNzk1MGU2OTI0OGU0ZWIyZmJmNmFlMzU3YzY2NjcgbGVnYWN5LXRydW5rCis2NDkwIDVkYzhjMDQyOTA1YjVjMWViMjI2ZDU4N2FhNjVkYjNhYTY3MDRhNDEgbGVnYWN5LXRydW5rCis2NDkxIDQwYzkyOTMzNWQ3ZjI0NDQyMjZjNGY3Yjc3MTVlNjY3YThkNTIzMGUgbGVnYWN5LXRydW5rCis2NDkyIDFkZWUzZTRmNjdkZjAyMjI0ZTg1ZDMzZjg0YjZiMDIzMGUzNjA4NzUgbGVnYWN5LXRydW5rCis2NDkzIGY0OWU0MDU3ZWI2ODMwMmYyOTliMzdhZmNmNzYxMjI5Mzg5ZTI1MTQgbGVnYWN5LXRydW5rCis2NDk0IGNmMjYzMGE0MWY4NzUyZTZmZjUzNzU4YzE2ZWNlNWFjYWI5MTM2MzMgbGVnYWN5LXRydW5rCis2NDk1IDRmY2NkOWVlZTY3OWMyMGNjNzFlYTE1ODAyZDhlYjAwMGM1ODU3ZGIgbGVnYWN5LXRydW5rCis2NDk2IDg5MmY0NTYxNjQ4YTA5NTBlMWM1YTdiYjE1MWI1Njk4NDc2MTk4MjIgbGVnYWN5LXRydW5rCis2NDk3IDUzZDUxMWMwMDI5ZjU0MTMxODU3ZjJjZDdkZGU0ZTBiMjgxZjk0MWQgbGVnYWN5LXRydW5rCis2NDk4IDg1NGYyNWZkZThmNDJjMGEyN2Y4MTVjYjg2NTc2N2JmNDg5MWVkNjYgbGVnYWN5LXRydW5rCis2NDk5IDZiYmMxM2I3ZGNhODhiODM5NjA4MTU1NDg1YzZhOGZlOWUwN2JkNGYgbGVnYWN5LXRydW5rCis2NTAwIDJjZGI4ZjVhYzM2NWY4ZGNmZDc4NDc3MWJjZGExNGFiMzk2Mzc0ZjQgbGVnYWN5LXRydW5rCis2NTAxIGRhMmI5YWU5MWQ5NTNlYzYwYjkxNmJmNDg3MzBhOTA3NTZlOWIyMTAgbGVnYWN5LXRydW5rCis2NTAyIDgyYzlkZWUwNTNiYzZkNDQxZWU0YTk5NjdhOGIzNzUwODZmOTI4NTUgbGVnYWN5LXRydW5rCis2NTAzIGU3N2ZhZjU1Njk3YjhmM2RjNTJlYTA0ZTcwNmM4ZGEzZGRhNDk0MDggbGVnYWN5LXRydW5rCis2NTA0IDNhMjAwMDAyZDgwYTg4MGVhMzUwODFmYTY2YWIwZDhmODY2MmI1NTAgbGVnYWN5LXRydW5rCis2NTA1IDg5Mzk0OWQxZDI4ZWFhN2UyZjdkNTI4N2VkZTE0MjI1YzcwNmQ5OTQgbGVnYWN5LXRydW5rCis2NTA2IDU1OTJkZTk2NTZkZTRhOTIwMDQ5ZTA1ZDFlYjM0YjViOGY2NWFjMWUgbGVnYWN5LXRydW5rCis2NTA3IGI0MzMzOGM1MjMxZTEwNTMxNjE0ZDIwMzcyNTQxYTVjZTE5ZWVlY2QgbGVnYWN5LXRydW5rCis2NTA4IGQxYmFlYzU3MTg1MjRjMzMzNDk4NTY5YmY4YWRmNDhkNGRiMDExNTYgbGVnYWN5LXRydW5rCis2NTA5IGY3YzI0M2QwMTg0NDY5ZGNjZmEyMDE1ZTY3ODQzNTZmYTU3NWQzOTkgbGVnYWN5LXRydW5rCis2NTEwIGNhMzkzNTViZTU1YTJiYWVjOTkwMzk1ZjBlYThlYzQxM2JjMjExM2IgbGVnYWN5LXRydW5rCis2NTExIDI2MTQ3MmZhOTcyYTc1ODBmMzQzMGRiODA3M2RlZWRiYThjMGI1ZTEgbGVnYWN5LXRydW5rCis2NTEyIDIzZjI4MGFiNTQwOWI3OWU2MTczZDRlMWY4NTFkYmI2NzU1OTRkMzMgbGVnYWN5LXRydW5rCis2NTEzIGY0MWYwY2FmMWNmY2UyZjU0MjQwYjYxMzA1OTQzODk0ZTY0NjgyYjEgbGVnYWN5LXRydW5rCis2NTE0IDhhMDEwZGQ0NzM2ZWI4M2UwZTYzNTZmNzdmNDk1OGE1NmM1NzhjMWEgbGVnYWN5LXRydW5rCis2NTE1IDZiNGQwZjFhMGFlOWM5YmI1NWMxOGQwZGMwYzJhZWFhMGE4YWMyMjYgbGVnYWN5LXRydW5rCis2NTE2IGQ2YzdlNDBjYmZkZjBhMzkzZjZiNDIyMzQzNTUwNDgzYTg5NDQ5OWUgbGVnYWN5LXRydW5rCis2NTE3IGVmN2UzYzQ5OWE0ZGEwMWNkMmUxMmQzNTY1MTA3MzViZDlkOWY4MDcgbGVnYWN5LXRydW5rCis2NTE4IDk2ZTBhNzIwNGUzMWQ4MGZmN2ExODRmMGEyMzU3MDliYTRlZjFiYzkgbGVnYWN5LXRydW5rCis2NTE5IGViOWZjNDA0YzA2NjMxM2U0ZTlhZTc2YmQzZTA3YzVkNzkzMzFkMWEgbGVnYWN5LXRydW5rCis2NTIwIDNlNjg2M2NlYTM4MzI2M2M1OTgyYzczYTg0NTI1ZDFhNzcxNjhiMGUgbGVnYWN5LXRydW5rCis2NTIxIGY3YjEzZDQxODJiM2RhZThiMzczZTIyZGE3OTJiYzQ0OGRmNjIwZDUgbGVnYWN5LXRydW5rCis2NTIyIGEyZGM3Y2U0ZGZiZTdiZDZmYzNjYzMyNzVkYjlkNjBjZTg4YWQzYmEgbGVnYWN5LXRydW5rCis2NTIzIGJjMDY1ZGYwM2VlNGVmODhjMmM0ODZkYWZhYTUwM2M0OTc5MTg2NjUgbGVnYWN5LXRydW5rCis2NTI0IGQ2Y2E2ZTIwNzk5NDc3MjI5MDViMDI4OTA4YzIxNjIyNWIzNTc2NWEgbGVnYWN5LXRydW5rCis2NTI1IGVmNmM4OWZlMjFlZGVhMWFkYzE4ZmI1NWUwMTE1MTI2ZDUwNGI1OGIgbGVnYWN5LXRydW5rCis2NTI2IGFjOTI1YjlhMWQ2NzcyMTM3ZTVjNmJmOTNhMGQ2YTBiZTQzNjZhODUgbGVnYWN5LXRydW5rCis2NTI3IDY2OWNjZDllNzE3ZThlYzllMmNlZWI4OGE2ZjlmM2FmM2U0YmQ5OTQgbGVnYWN5LXRydW5rCis2NTI4IGYwMTEwYzVjNjIyNzkyYjQ2NWIzYjU3YmIxYzFkZTFmOTNhOWE0MTYgbGVnYWN5LXRydW5rCis2NTI5IDZkZWVlM2IyMDZiOTk0N2U0NGU4MjY5MGJjZmUwZmI5MTQyZDJmMjggbGVnYWN5LXRydW5rCis2NTMwIDgxODU5OWUzOTEyM2NjYjgxYjM5Mzc2YjA4NTk2MjI0ODMzNDJjN2QgbGVnYWN5LXRydW5rCis2NTMxIDIxYjI4ZGNmYTg2NTQzZDc1ZDc0MmYwN2JiMzgxMjgyNDc5YjQ1MDYgbGVnYWN5LXRydW5rCis2NTMyIGQ2ODk3Mzg1YzMxODVmY2JkZGQ5YjEyODAyM2EzODdkZGU1N2NiNjQgbGVnYWN5LXRydW5rCis2NTMzIDY0YTU4YjBmYjE2NzEwZGNiNzM3OTQ3Y2E2NTU5NGM1MGM0Nzk1Y2IgbGVnYWN5LXRydW5rCis2NTM0IDRiZjAxYzY2Y2I2ODZjYTk4NTAzZDYxNWFhZDUwNmI4YzhlMGJlZDIgbGVnYWN5LXRydW5rCis2NTM1IGQ2ZGUyYzE0ODgxOWFjN2MzY2ZiODIyZjY3NDNkNTliNDAyN2QyMWIgbGVnYWN5LXRydW5rCis2NTM2IGE1ODljZWRjYmVmNTQ2NTQ1MTRhZDE1YjI0MTFlODVlY2QxOGU0YTIgbGVnYWN5LXRydW5rCis2NTM3IDc4ODQzNDcyZmI2ZmEyM2Q5NjgwZGZlODVhNGYxMzdlNjVjOTgxZjcgbGVnYWN5LXRydW5rCis2NTM4IGJkZTE5YWNmMTA0NWQ0N2U1OTgyOTI2ZWU5ZDU1MjVlZjVjZjdkMzYgbGVnYWN5LXRydW5rCis2NTM5IDJjODliZjA0ZjgzNGVhYWVhY2YxNTUzZGQzODBlOTE4NWFmOWVkMjUgbGVnYWN5LXRydW5rCis2NTQxIDIzMWE0MjA5MTgzMDJlOTdkYzg5OWU4MTA3OWZiZDc5NDkwZmI3MDkgbGVnYWN5LXRydW5rCis2NTQyIDRjNTRlY2ZhZGNlNWU0ODZiMDY4ZmIyZTgwODMxNmI0YTkwZjliMTYgbGVnYWN5LXRydW5rCis2NTQzIGVmZTg2ODkxZjQxMWI4NTdiOWFlZWVjZjkzMWFkNDg1YmYzNjY4YzcgbGVnYWN5LXRydW5rCis2NTQ0IDE5NDEyMzA1ZDMzNWE2OWNiMWNmYzE5MWM4ZTIyM2Q2ZWJmZmNhZDEgbGVnYWN5LXRydW5rCis2NTQ1IGM1NzVhOTIwZTRhMWYzNWE0ZjkzYTE2MWViNmJlYjFmODE3ZWVkNGUgbGVnYWN5LXRydW5rCis2NTQ2IGY2NjU2MjUzNmYxMWIzZDVjNzJiYmNiZGNkNGUwYjcxZGQ5MDAwMWEgbGVnYWN5LXRydW5rCis2NTQ3IDU4NTA0YzlhMzdkYzRhODNlM2ZkYzI0NThhZDI3ZGUyNThlZTA1MmUgbGVnYWN5LXRydW5rCis2NTQ4IDdiNmVlZmFjNmU0OTM3NjA5NzM2ODgwMmFhNmE2NTZkMTJmN2FjMzEgbGVnYWN5LXRydW5rCis2NTQ5IDRhNzAzOGU3YTMxMzljMDlmNDlmNTQ4NjAzZjkyMjU4YzA1YjE2NjAgbGVnYWN5LXRydW5rCis2NTUwIGVkYTI5YmVmODgwYzlhNWRlYzI3ZDFhMjU2N2Y1MWE2NTZjZTdlNDUgbGVnYWN5LXRydW5rCis2NTUxIDEwYzA4NDk0MmNmMTJkZDBmZWVmM2JhMmIyMjk1MTFhMGIwYzc2MGMgbGVnYWN5LXRydW5rCis2NTUyIDE4NDUxZGNhOTQ2OWEwNGUyYjMwODdkNWU3NDU4MTIyMjY5M2Y5ZTYgbGVnYWN5LXRydW5rCis2NTUzIGE2ZTYyYzIxYjBlM2IwMWNlZGYzZDdlMmJkZjVhYTM3MTIyMWRlNWUgbGVnYWN5LXRydW5rCis2NTU0IDc1MmI4NmJhMTZmYzZlOTM4NDk2Yjc2Yjg4OGFmZmY0OWRjNTUyNWEgbGVnYWN5LXRydW5rCis2NTU1IDVmNjg2OWEzOGQ4NTFmMDY5NjU4MDU0MWNhNWE4YmQ4YzBiZDhhMjYgbGVnYWN5LXRydW5rCis2NTU2IDM5MDY4MzgxOGY3MzQxN2RiOTE0ZmExYjAxMDg2MGVkNmQ2YzE3NGYgbGVnYWN5LXRydW5rCis2NTU3IDQ2NjE3ZDI5YzVkMDYzOWE3ZDY1MzE3YWE2ZDc4MzY0Y2UzMWZhOTMgbGVnYWN5LXRydW5rCis2NTU4IDdmODNlMjRkMWQ4NjliNjc0NzEwMzFlNDAxYWY5YjFjNTllZTllNjMgbGVnYWN5LXRydW5rCis2NTU5IGUwZjY0MmVlNDViYmRhMDFhMmYxZDEwODFkZDYyNTkyMzBjMmE2NmUgbGVnYWN5LXRydW5rCis2NTYwIDgzMWI0MjBlNDExZTQyMWQzMzdjMmM0ZTZlNTY2OTllOWFhODU0NDcgbGVnYWN5LXRydW5rCis2NTYxIDc0MGRlZjY5N2Q4YjhlM2JjZGE0ZGU2YzljZjJhNzk2NWM4NzQ4ZmUgbGVnYWN5LXRydW5rCis2NTYyIGY4MWQ3ODU0N2YyODkyOTFhZmIyMzUzYzNmNWM3YzRiNTQ3OTZiMDkgbGVnYWN5LXRydW5rCis2NTYzIDlmNzBkOTk1ZDAyNzkyOTljZDkyZjM2ZTgzN2M4ODRiZGNhMTBiN2EgbGVnYWN5LXRydW5rCis2NTY0IDBiNDBjOGQ1YjIxZDIyNTk1NTk3MGNjZGFjMzVlYWM5YTFkNjBkYTMgbGVnYWN5LXRydW5rCis2NTY1IGRjOTQ2Y2FiN2I5YmJiYWYzOWZhZTY5MDlkNzMzZmQ2N2U1ZjI1MjcgbGVnYWN5LXRydW5rCis2NTY2IDg1OTJmYTRhMTE5YjA4YTg4YTFjYTQ3NjIzYjM4ZDBiMTUzN2FjNWMgbGVnYWN5LXRydW5rCis2NTY3IGYyOWZlNzFmMTFlNjRmMTM4MWVmYjdmODZlMjgxOTBjODcxMWRjMmEgbGVnYWN5LXRydW5rCis2NTY4IDg0MzgxODRlNDQ4ZTAzNzgyOWJhNzA3NTBmOTQzMjQwOWU3YzEzMDggbGVnYWN5LXRydW5rCis2NTY5IDBhNTljOThkYzAwNTM1ZmE3M2I5NWZlNTNmMjliMGJjMTBmNGE0NWUgbGVnYWN5LXRydW5rCis2NTcwIDg0NjVkOGZiYzdhYzE3YmU5N2RjODEzY2NlZWEwYTA5YWJkZDFiNGUgbGVnYWN5LXRydW5rCis2NTcxIGU1Mzg2MzhlZGM3MTMzNzIyNTNlNzhiNWE1MjI3NDUwOWIxOTI4NzcgbGVnYWN5LXRydW5rCis2NTcyIDZmNmJhN2MwMDgyM2VhZDhkNWU1YWE5YWQ2NmY4MTJmYjk5ZGU1OTYgbGVnYWN5LXRydW5rCis2NTczIDNhM2IzNjcxNjY4OWM1Zjg3MTNkODBjYjM3ZGFhMmRiZGMwOTE1MjggbGVnYWN5LXRydW5rCis2NTc0IDUzMzZjMDNhMTMxZmI1YmYwMmE4NDM2MGM1NGQwNDk3YjZlZjM5MjcgbGVnYWN5LXRydW5rCis2NTc1IDJmY2VhNWRkMWQxOGEyNWFkNjFlNDUyNmQ2ODc0MWQzNDYyYThjYmMgbGVnYWN5LXRydW5rCis2NTc2IDk1Njk2NjRhYzM0NzUzZjlkNWQxYTRjMzdkNjMxOGU0MDk3YjNlZWIgbGVnYWN5LXRydW5rCis2NTc3IGE1YTgyNjY2OTc3YjVlMjljNzg4ZDIzZDkyMGRjN2FkN2UzNjk3MjggbGVnYWN5LXRydW5rCis2NTc4IDg2OWE5NDgwODVjMTBmY2U4MzlkYTZkNWU3NGIxODQ2NzNmNzI1ZTUgbGVnYWN5LXRydW5rCis2NTc5IDljMWY5YjA5YzQ0Mjc1NzYyYjgzNDg0MmFlYzdiZjUwODRlOGQ0MzQgbGVnYWN5LXRydW5rCis2NTgwIGYzOTUxNjNjYTlkMjU1Y2E0ZjZjMDhjYzFhNzUxYzJlYTVlNGVkNmQgbGVnYWN5LXRydW5rCis2NTgxIDNhYzAzMGNjMzNmMDY4ODdiYjg3YTExYzA5NjJkZTNhYzUxMmUxMTMgbGVnYWN5LXRydW5rCis2NTgyIDZkOWQ1ZTdlNTg4YzQ5ZmNkMmRiZGExOGIzZGUxNmE1MjdjNWYzNjEgbGVnYWN5LXRydW5rCis2NTgzIDhjN2I3ZTk0ZjRkZDM5ZWJiZGQwOTUzM2Y3ZDMxODViMTdmMDU3MjUgbGVnYWN5LXRydW5rCis2NTg0IDA3YTM1ZmQyZTBhMTNlZTk0NTcwYWJiODk5ZDg2N2U3M2VkNTljODUgbGVnYWN5LXRydW5rCis2NTg1IDkwMjE2ZTkwNzM0NWViMjBiMzU5ZGRkODQ5ZTM4OGY4ZThjYzM3M2UgbGVnYWN5LXRydW5rCis2NTg2IDU3MjZiZThlZTU5ZjMwYmIzMDgyMTc1NDg5YTNlYmZiNTM4OTFjODAgbGVnYWN5LXRydW5rCis2NTg3IGIzYWYzMjVkNzEyZGUzZTk3YWUwODk0MTFiMDFhNmYzYTkwYTY1OTcgbGVnYWN5LXRydW5rCis2NTg4IDVkNTIzOTVmNDBiMGM5YTJiNWY1YjkzZGMzMjAzYjgzNjFlNjMwNGUgbGVnYWN5LXRydW5rCis2NTg5IDIzNTg5YzAxNmNiOWI4YzUxNDQwNmU0Y2VmZjI3MzEwOGQ4ODFjODEgbGVnYWN5LXRydW5rCis2NTkwIDMxOTAzOThhZTUzM2MyNmExMjI2ZmNiYjcxNGJhZTMyMmRmZGZjNGIgbGVnYWN5LXRydW5rCis2NTkxIDNkMTE3NTg3MDA1YTFkZTE3YWIxOTE5NzE2NTg4ODMxMWU3NjQzMjggbGVnYWN5LXRydW5rCis2NTkyIGE4NjQwN2IzYzNhYzUzOTdkZTA2ZWEwNzBkOWRiYWViYTJmMGRkNmYgbGVnYWN5LXRydW5rCis2NTkzIDRmODRjZWU2NWI4YzllNGUyYjA1YTRmMDUwNTgyMzE4ZDQ3MGNkNmEgbGVnYWN5LXRydW5rCis2NTk0IDY1MDAzMWUxZTQxOTBiZjZmZGFmNDcyNGQ0NzE3YzMyYjZiNTUwMTUgbGVnYWN5LXRydW5rCis2NTk1IDA4M2E3Y2Q4MzU0NTUyNmY0Nzc4MjRiZTQ5NjY5NGQ0MzNmMTRlNmEgbGVnYWN5LXRydW5rCis2NTk2IGQzMGY1ZjBmZDBlMmQyOWQ1ZWEyMTQ0YTEyZGQ1MTVhMTU2NGVmOTcgbGVnYWN5LXRydW5rCis2NTk3IDcxYjQzZDRiN2NkMGQzNjc5ZWE2YWVlZWM0ZjhjM2VjYzhmMzc1YWQgbGVnYWN5LXRydW5rCis2NTk4IDllNjUwNDQ5NGFjNzM5MTk4ZTgzYzllMmRjYWE3NTE1YWQ3MjExMzQgbGVnYWN5LXRydW5rCis2NTk5IDBiNzNjMzFiYWI5MDk3ZWMyYjNlMGYwZGZmMmEwYzU5YjIzM2Y3MzggbGVnYWN5LXRydW5rCis2NjAwIGM4MGM1MTU5OTliOTgzMGRkZjRkMjg1MThlZWE1OTFiMmQyMDk3YmYgbGVnYWN5LXRydW5rCis2NjAxIGE3YTlkODM1MDVjNDdkZmMwYjEwZDg3NzdmMjAzOTU1ZGVjMjI2ZDYgbGVnYWN5LXRydW5rCis2NjAyIDVhZGU0MDk2ZmI2Yjg5ZTMyOTE2ZTVmODdkZGU2ODU2ZjFmNjY0MzAgbGVnYWN5LXRydW5rCis2NjAzIGVlZGFhNTkzNDFiOTVkMzEzYjIyNjNjOGViOWE3OWYzMTQ4ZmFkZWUgbGVnYWN5LXRydW5rCis2NjA0IDdiODRkYWU5N2VlOGE5ODg4YmIzNGVjOGY2YzVlMjk0M2Q1YTBhYjEgbGVnYWN5LXRydW5rCis2NjA1IDZiNTg5MzM0ZTBlOWU2YTgzOTlkZjIzNDI5NmVmMjdiOWU4M2U1MWEgbGVnYWN5LXRydW5rCis2NjA2IGMxOGQ1MmUwNjIzODcwM2M1MjQ2MmJmMzBjODY0MjgwMTRmNzlmNTAgbGVnYWN5LXRydW5rCis2NjA3IGEyYmM5NDE1NjRhMTlmYmE2YjNjMTQ1YjJjYmMwNGU1ZTU3NjZkN2IgbGVnYWN5LXRydW5rCis2NjA4IDY5ZWRjNjdlNWE2OGYyMGVhZDFkOWQ5NGJkMjkwNmE1ZDZhZTlhMjIgbGVnYWN5LXRydW5rCis2NjA5IDE4OTliOTE1NTNkMWVmMzI3NzcwZTYwZmZhZWE2ZGVjMzM1MDcwZDUgbGVnYWN5LXRydW5rCis2NjEwIDI2MmZkNTgyZTQ0YjM0ZTgzNTNiMDE0OTFlZjI1YWJlN2YzMWIxMzAgbGVnYWN5LXRydW5rCis2NjExIDhiNzVkNWVhMjA3YmQ3OWUzYmM2MGM5NWQ2NTg3N2JhOWU2YTViM2EgbGVnYWN5LXRydW5rCis2NjEyIDdkM2QyZWU1NGEyY2IyNWJjNGU4YjAyODY5ZWU0YjE5YTZhOWE5MjEgbGVnYWN5LXRydW5rCis2NjEzIDAxMDM0NGI0YTYxNjI1M2VhZDBkZGYyMWM1NTAzYTlkM2JhMmU0ODMgbGVnYWN5LXRydW5rCis2NjE0IDViYWEwMDNiZjM5ZTBiNGUyNzY2NzkzOThkNTVkMmI1NzE4ZTBmMjAgbGVnYWN5LXRydW5rCis2NjE1IDZmYjEzMTUwMWJiNDZkNjM4MGYxMjZiNGYwMzc1YmQ1MDNkYjEyMTMgbGVnYWN5LXRydW5rCis2NjE2IDQ0ODcyZjI1NWY5MzQ3NDdiNDQxY2VlOGMzODY1MWFjZjAwMzc5OWMgbGVnYWN5LXRydW5rCis2NjE3IDMzYmYzODJjMmIxZDliNWI0MGMxNDlkM2Q0OGFhMjFmYjFkM2RlZDUgbGVnYWN5LXRydW5rCis2NjE4IGVmZWJmMWM0ZWRhMjk2NTQwNDgwZjY4N2ZlZjlhYzY5MjAxYjkyMTEgbGVnYWN5LXRydW5rCis2NjE5IDk1MWVkOWE4M2Y1N2E1MGRkYTVmNjE2ZjI1YmEwZTBkNTJmZDhlNDggbGVnYWN5LXRydW5rCis2NjIwIGM0ZDY2YzQxMGM4M2NkMDJhZTdjYjIzZDlmMTg4NDI4ZTFlMmE5YzUgbGVnYWN5LXRydW5rCis2NjIxIDMwZjFjMDFmMzg2NTBiNjhjYzVlY2M3MjNlZjJmOTQwMjM4ZGM0YjEgbGVnYWN5LXRydW5rCis2NjIyIGFiNDM3MTVlZjRlZTI0Zjk2ZTA5NTNmNGEyNjQzYmNiYTI2Y2ExOWMgbGVnYWN5LXRydW5rCis2NjIzIDQyOThmZjIyMmQ3NjNkYjdmNDkzYTAzYmI0YjgyMWY0N2Q0MjMzMWMgbGVnYWN5LXRydW5rCis2NjI0IDhhMGQ0M2IxMzEyNTFkMmY2YjViNmZkZWMxOGExYjhjN2Y1NGJjNzAgbGVnYWN5LXRydW5rCis2NjI1IDY5YTMzZmEzZGJiODgxMTUwNWNkMDMxMzJkZGFkNzdhNTg0NDQ3ODEgbGVnYWN5LXRydW5rCis2NjI2IDk4ODFhNTIxNGZkMmM1MDE5OTIwMjAzMjIzOGNjNmJhNzk3MGZjZDggbGVnYWN5LXRydW5rCis2NjI3IGNjMDZlNzAxMjdmYzBiYzhjNGU3ZDY1ZjRhODUyZWY3NDU0ZDc5MjkgbGVnYWN5LXRydW5rCis2NjI4IDAyNjIxYjg3N2VlNWRmMDExY2U1YjgzYzhjZTA3MmI5NDVjYTkwNmIgbGVnYWN5LXRydW5rCis2NjI5IDg2YTYyY2EzYTM3YjdhYmY1NTk0MTRlYjBkYThkNTQ2MjFkN2E4ODUgbGVnYWN5LXRydW5rCis2NjMwIDE0MDUwOGM5YzYwMzE4MjVlZjg3MjAwMDcwNjI2ZmJiZTM2OThkZmMgbGVnYWN5LXRydW5rCis2NjMwIDQ0YTgyYWM2NTRhNDE3NTU2OWRlZWQ4ZThhOTRiMGNjOGVkZWUwOGQgbGVnYWN5LXRydW5rCis2NjMyIGYzYTBkNTAyNDZkMjcxM2ZkOWJkYmU2MjUwNGQwNTQ2YWM4MjFhZmUgbGVnYWN5LXRydW5rCis2NjMzIGRmNjM5ODVjMWNhOTYwZjBlMzBmM2NkOWRhNTAyNGViMzdiYWUyYmIgbGVnYWN5LXRydW5rCis2NjM0IDgxMWE3ZmY3ODNiNzcyOTZhZTBiMzhkYTNiMjIwMGVlMTQzODAwODEgbGVnYWN5LXRydW5rCis2NjM1IGE4MWMzZGUzYWFkOTVjOTU3ZDg4OTRjZGNmOWU2OGI5ZmQ0NGIyMDUgbGVnYWN5LXRydW5rCis2NjM2IDk5MjUwMTgyYzQ4YWZmZDU3OGE1Y2YzNmFiZThhYTIwNzMzOTdmYmIgbGVnYWN5LXRydW5rCis2NjM3IDU4MmQ0OTM3ZDQ5OTcxZTVjOGQwODRhZmZjODQ4MjE5N2NjOWM2YWQgbGVnYWN5LXRydW5rCis2NjM4IDFjMDc5ZTIzZmQzYjg5OTQwZmQ5NWVhYjAyOWZiNjdkOTE3ZGE3YWIgbGVnYWN5LXRydW5rCis2NjM5IGIzZmRlNTI5NDQwZmQ2NGRlN2RmMmJmNjRjNzQ0MzIxOGQxZjQzMDcgbGVnYWN5LXRydW5rCis2NjQwIGE3MWE0M2QyNDdiMDljMjA3YzAyYjM3NTJmMjljNTdlZTQ3NDhlNDEgbGVnYWN5LXRydW5rCis2NjQxIGE5NDAwZWVlMDQwYjE4ZWIxMDc0YmI0ODlkNGQ5Y2QyOGZhZDViNjkgbGVnYWN5LXRydW5rCis2NjQyIDc0YjhhYTdmMTExNGZiZjNmMmUyNGQ0NzlmZTFlNmVkMjkwYTdkYzMgbGVnYWN5LXRydW5rCis2NjQzIDY4Nzg5OWM1NjNlM2RlMzg3YzQzZDFmMmU0YjQxMmQxZTU5MzhhMzUgbGVnYWN5LXRydW5rCis2NjQ0IDNkYzJlNjc1ZjE3ODE3MDc4NGJmOTQzZDA3NzFlOWYzNGVlYjA1MDcgbGVnYWN5LXRydW5rCis2NjQ1IDE4NTVlN2M3OTFlMjNkY2QyMjM1NzMyMDFlZjU3ODhkNTRmMGY4MzYgbGVnYWN5LXRydW5rCis2NjQ2IDg4OTk3ODAyZmI5YmIwYTE4OWNkNDI1ZjhmMzFjZTlkNDA2Y2MzMmYgbGVnYWN5LXRydW5rCis2NjQ3IDIzNmFkZWE5NzYwYjAwZjI3NGM4MGRkOGVjYjNkNjVjM2Y4MDc5MDcgbGVnYWN5LXRydW5rCis2NjQ4IGQyNDFiZmRhN2I3NDZhZjQyZTNkOGQxYmE5NTU2NzE1OWZiNmIwYzggbGVnYWN5LXRydW5rCis2NjQ5IGJiNWI5ZmY3MmRlMTk1MThjNjAwZmU2NDY0MDE1YzdmMDU2MGU4Y2IgbGVnYWN5LXRydW5rCis2NjUwIDM3ZDAwOWIxYmY0NWRhOTY3Yzk5OTZjOWUyZTNlNDhmOGFlZTIwNjcgbGVnYWN5LXRydW5rCis2NjUxIDMxNWE1MGNiMTVlMzhkODk3OGExNmU3Yjc1YWIyNDFiYWVjMDcwYTcgbGVnYWN5LXRydW5rCis2NjUyIDI4MTc0YWEzOGM3NjI3N2EwMDhkNTRiMzU2YTU4M2JlZjRlYmE4ZDcgbGVnYWN5LXRydW5rCis2NjUzIDMzZjRhOTFmODcxYmRiYjlkNjM1NDhjNjkzNjcxYjg3NDQ4ZjZkY2YgbGVnYWN5LXRydW5rCis2NjU0IDdlZGUwMTJhMzVjNWVmMzQ2YmY3NTU5YzBjMWNiNzRjNTgxNDNjMmMgbGVnYWN5LXRydW5rCis2NjU1IDNkNTNjZmFiODgyMTg4YzM4OWQ4NGI5ZDZhZjljZDA0OThjMDhjNTQgbGVnYWN5LXRydW5rCis2NjU2IGEzOTI2NDg0YTY1ODNjMzA3YzNkNTQ5NTg2OGY5NmE0ZTUxYWZkZWIgbGVnYWN5LXRydW5rCis2NjU3IGMzNjM2NDViN2VkZDI3YjQ5YmQxNjMxMTJlNzFkYTg3MzgxYjFlNTggbGVnYWN5LXRydW5rCis2NjU4IDJjY2I5OWM5Mjg1NDQ2YmJhYmNjZmU5NDYzMGZlMjYwNzI1YjM3YjggbGVnYWN5LXRydW5rCis2NjU5IGEyM2Y0ZjQ2NzI3YjliZmE1NDZkYjcwOWEwMGUzNWMxMjVjMmRjZDEgbGVnYWN5LXRydW5rCis2NjYwIDVlMTJlOWIyOGVhZmYxMTIxZGFjODAxNzQwYzdkNGQ5MzhjZmJlZjYgbGVnYWN5LXRydW5rCis2NjYxIDhiYmVjZjY4M2E1MDQwZjZhZGQzZDM4OTIzNjU1M2VlMGRhM2Q1NzEgbGVnYWN5LXRydW5rCis2NjYyIGM3OTZhZTExNTc4MzJkMmNjYjVjZjI0OGJkMmJiN2MxZTNlZWQyMTkgbGVnYWN5LXRydW5rCis2NjYzIDAzZjJjMjFhZWNhZjI2YTAzNzliZDNmZWU0MWUxNjIxMTRhNGRjYzAgbGVnYWN5LXRydW5rCis2NjY0IDk0ZGE1ODIxNGQ2Yzc1ZmQ4MDk4MzQwMWM5NjMzZGQ5Yzg5ZTdlM2YgbGVnYWN5LXRydW5rCis2NjY1IGU2MTMxOGMzYWQxZTg3ZTE2NDIyOTQwNmYwOGQyYzExNzYyZTgzYzEgbGVnYWN5LXRydW5rCis2NjY2IGQyM2Y3ODczMGUwMGQxM2RmZjFjYWY3MGIxYjdkMTY1MzU4NWMzYzMgbGVnYWN5LXRydW5rCis2NjY3IGYwMjVkOGEzNzdiNTcwMDE4ZDgxOWRlNDcxNTM2NWRlYTU2NzY3MjYgbGVnYWN5LXRydW5rCis2NjY4IGRmYmQ2ZTAwZGQzODNkMmYzYjBlYzVmODRkMmVkNmM3ZDk3YjUwZTYgbGVnYWN5LXRydW5rCis2NjY5IGUzZjZhZGEyOGVkMDk1ZTdkMDBkOWNiZGM1MTAyNTgyYzhlNWM2MjggbGVnYWN5LXRydW5rCis2NjcwIDY3MjA2YmJkNWJiNTQ4YmQ2MGRiNjlhMmI0OTRhMWE5MzczNTFkNTcgbGVnYWN5LXRydW5rCis2NjcxIGI3MGJhYmExYzc4OTMyYzI3OTY5MzQ4ODk0NmE4ODdjZjgzMWRlMzYgbGVnYWN5LXRydW5rCis2NjcyIDM4MzgzYjYzZjQxNThmOTQ0ZTc2OGEzMmRiOGUxZGQ1MTA5MDRhNzIgbGVnYWN5LXRydW5rCis2NjczIDZmYjZlMDFlMmJhMTQ0MzZkZTBkODZkMWE4YTVjM2NkODBmMWRiOGUgbGVnYWN5LXRydW5rCis2Njc0IDIyYWFjODFjNzU2MGMxYTg5NjAzMzNmMWIxMTQ4MDkyZmYwZTQ5NTAgbGVnYWN5LXRydW5rCis2Njc1IGM2MjU5Y2YyYzU4MTQzZGI2MTAyMzA1ZDUyMTdkZTRhY2Q3NTFlZjYgbGVnYWN5LXRydW5rCis2Njc2IDM1MGQwZGUwNzczOWMzNzQ3MWZlOTI5Zjk2OTg5MzkxZGFiODBiNTAgbGVnYWN5LXRydW5rCis2Njc3IGQxYjQ3NDNhOWE2MDUzZTk4YjQwNTcwOWJjYWY5ODY0NWU0OGY3MDYgbGVnYWN5LXRydW5rCis2Njc4IDMxMjZmOGExNDZhNjZmNGE3NmNiMDRkMzg4ZGU1Zjc5YjBiYmFhY2MgbGVnYWN5LXRydW5rCis2Njc5IGM3OTk0MDA4Mzc4ZDlkZTVhMGJmMDRhMzc2ZDM0OWRlYTNlZTFhNTIgbGVnYWN5LXRydW5rCis2NjgwIDQyZWMyM2M1MDAxODZkNWFiZTJkYmNjMjYxY2I1NzNkNDU1OGIyMmUgbGVnYWN5LXRydW5rCis2NjgxIDYzYWYyNTc0ZjcxZjZjNDE3MmI2N2JkNTg5YmFjYjg5Y2Y0NmFiZjEgbGVnYWN5LXRydW5rCis2NjgyIDFjMDA2NDAwNjlmOGE1NDE0NTZmMzFlOWNiM2ZiYjg1ZDkzNjIyMDEgbGVnYWN5LXRydW5rCis2NjgzIDNmZGU5ZDJhMzliMGM5YTIxMWNiY2E4NGJmMzg0NjYwNjY5MmEzZTEgbGVnYWN5LXRydW5rCis2Njg0IDYwZmMwMWQ2ZjcyNzBjYzMzNjhkYmYxYTYxMjIwZmViNTg0N2E4NTIgbGVnYWN5LXRydW5rCis2Njg1IDRhOTNjYzdlN2ZiNmYzZTViNzBmZjA4OGNkMjFmYjQ4M2IxZWU5YmYgbGVnYWN5LXRydW5rCis2Njg2IGQ3MDE4YmM1NTg0ZTBhOWM4ODdiZTEwOWIwYTQyNDU1OTFjNmQ1NzIgbGVnYWN5LXRydW5rCis2Njg3IGUzMWI0ZGVmYWQ1YjQ1Y2RmNGM2MDA0OTNkNzA2N2EwMjI2MWExZTEgbGVnYWN5LXRydW5rCis2Njg4IDY4OGQ1NjZjYjE1YjA3OWRhOWQ5YTY3YjZlMGNiY2U1NjdlZWMzMzUgbGVnYWN5LXRydW5rCis2Njg5IDA0MTBlZDM4MDhlZWI4YzI1NDFhYTk1NTQxMzM4N2Q2MGE3MTRhOWYgbGVnYWN5LXRydW5rCis2NjkwIDBhNWYwMWQ0NzAxYzA5OTNiMjkyY2Q1YTIxYzkxYjI5MTg0M2Q2MjAgbGVnYWN5LXRydW5rCis2NjkxIGM2Njc5YjFjNmNmYzFiNGY1YzQ2YzUyNDFhODM2MmI0NDkxMWIzOWIgbGVnYWN5LXRydW5rCis2NjkyIDllMGU4NDE3YTk4YWVhZGFiOWMyZmViODY4NmU0MmUzZWM1Y2NmNzcgbGVnYWN5LXRydW5rCis2NjkzIDliY2ZiMDM0Yjk2M2QyYzdjYjUyMTM3NDFmOTQ5ZmYzZTRhNDQ1MjkgbGVnYWN5LXRydW5rCis2Njk0IDQ4YjJkN2E0NTMxZGY4YjgyNzgwZjMwYzc4NTZkYjI2M2JlZjEzOTkgbGVnYWN5LXRydW5rCis2Njk1IDY2OTEzY2E3ZWM0NzBhZWM5NTMzZmYyZDE2OWJkOGI4ZjY1YTQyMjggbGVnYWN5LXRydW5rCis2Njk2IDFkMWYwYzY0N2U3N2IxMjBmNGZmOGNiMjEyNGVjOTk0MTRiNmU1NzIgbGVnYWN5LXRydW5rCis2Njk3IDE4MGMxZDNkYWM0MTExMWY3MzM5YzlmMGUyMTExODkzY2YwYmY1ZDcgbGVnYWN5LXRydW5rCis2Njk4IDNmZWVjYWQyOTZmNDBmNGVkOGQ5MDA0NGU4NmU0MGE5YTEzYTVjYmUgbGVnYWN5LXRydW5rCis2Njk5IGIzYWUwY2YyYTA2ZDcxMzI0ZmE4OTk4Mjc4NzQwYTE4ZWJkZGVjMGMgbGVnYWN5LXRydW5rCis2NzAwIDRmYWNhZTAwYmRkNjEyNDA2NDJlZTBlZGZiZjFhOGU4YTg2YzIzZGMgbGVnYWN5LXRydW5rCis2NzAxIDU3M2VkNWUzODc5YjY5OTk5OGFlZDg4MTE0MmY0YzM0NDgzYjhmYjkgbGVnYWN5LXRydW5rCis2NzAyIDg0NDQ0ZWEzZjVmNjlkNjBmNmQ4NDdhYWE5NjRjZmM2MmIyNGNjYjcgbGVnYWN5LXRydW5rCis2NzAzIDFmNjkyYzNmMWQzMmQ0MzlmMjkyZDIwYWEzZWZlZDY2NWNmMWEzMTAgbGVnYWN5LXRydW5rCis2NzA0IDQxYTUyYWIyNjNkYWEyNTA3ZmUzMzE1MTkyMmNlOTUwMDEwOGY1YmUgbGVnYWN5LXRydW5rCis2NzA1IDVjMzg3YWEwMzcwODczMzdmYjIyOWE3ZTU0YWI1YzQ1Yjk1MmJkZTUgbGVnYWN5LXRydW5rCis2NzA2IDg4NmMwZjc3NWM5NzZlMmNjZGI5ZmY0NmQ3NGI2NmE1OTA1NmNmOTEgbGVnYWN5LXRydW5rCis2NzA3IDEwOTkxNTllYzgyMTllMGY5NmQ1NjhkMjAyZDExNjhkMjFiZDU4ZDAgbGVnYWN5LXRydW5rCis2NzA4IDdiZjcxYTgzOTY2MWJjMjYwMDZhYzgzMDM4ZWQxMWQzNjIwZDBlZTkgbGVnYWN5LXRydW5rCis2NzA5IDhmMjkxZGM4ZmE5YjQ2OWU2MGYyNTYxNzkyMGJlMzQyNDZmMWU2OGIgbGVnYWN5LXRydW5rCis2NzEwIDc4MGZjMmIxNjc0ZDc3MmI4ODk4MTVmNmNiNzJkM2RiY2I0ZjYzOGMgbGVnYWN5LXRydW5rCis2NzExIGNiNDkwMGZhYjc2NDI4YWY4YWU1NWUzMTk5ZTk0Njk1MjVkZWMxYzQgbGVnYWN5LXRydW5rCis2NzEyIDZjODZkOTEzNmMwOTBkNGZkMzQ1M2ZlOTIyNjBhM2UxMmZlNzBmMjcgbGVnYWN5LXRydW5rCis2NzEzIDY3MDA1NThhMzJmYjEzM2M5MzkxZDQwNzllYWYxOWI3NDc2ZTQ3ZDQgbGVnYWN5LXRydW5rCis2NzE0IDIxZTViOTRiOTliODBiZGY4ZTZjY2VjYjIyOTk3ZmEzY2M5MTNjMjUgbGVnYWN5LXRydW5rCis2NzE1IGM2MmQzMmM1ZmYzZGVjZWUzZmVhYTU0YzYyNDgwZTc5NTEwMDk0ZTMgbGVnYWN5LXRydW5rCis2NzE2IDM1NDVhYjQzYTcyYTIxOWYwZmJjZTMyNWUyZGYxODc3NjdhM2UyYTggbGVnYWN5LXRydW5rCis2NzE3IDFjZTAwY2RjMDAzZDI1NWU4YjA4YjU5OGJjNzA5MmI1MjNjZDA3OTAgbGVnYWN5LXRydW5rCis2NzE4IDBmYWUzNTNiMDRjYTJkMWE1MzQxNjc4YTZlZGIxOWJlMmUyOTA3YzYgbGVnYWN5LXRydW5rCis2NzE5IDQzZTJlNTkyYTAwMTk4NTEyMGRhNTA4OWVkZTE0YTA2ZmZmMjA4YzMgbGVnYWN5LXRydW5rCis2NzIwIGM2ZWY4YjdiMjZlYmMxMjA1MjNmODgxMDVjZTI5MzM1YWRmMjI1NmIgbGVnYWN5LXRydW5rCis2NzIxIGRhMzhjZDYxNjQxMjdjY2RiYTc5NjA5NDQ2MWE5NTRlOTZiNDA5YjIgbGVnYWN5LXRydW5rCis2NzIyIDVmNjcyYTUxMmRjNDFmZGI4MDc5MTc2MTJhMWE4YWYwMzk5NzhlMmEgbGVnYWN5LXRydW5rCis2NzIzIDBjZjY3MTQ1MmZjNTQzZDQyNmQ1M2Q2YzgzYzQzN2QzYjQ5OTI4ZmUgbGVnYWN5LXRydW5rCis2NzI0IDQ0NzBmN2ZmMGMyMzljODk0Y2I5YjUxODgxMjk4MmY0N2JkMGZkODYgbGVnYWN5LXRydW5rCis2NzI1IGFjM2ZiYjY3NzFmNWMyZGIzOWJiNjNhMmI2YTIwMjk2MWQ3YTFhNzIgbGVnYWN5LXRydW5rCis2NzI2IDZiNmM1ZDEyMTMwY2Q5OTBlZGE4MDY1NjBkZjZkNGI0ODk1YmE2MzUgbGVnYWN5LXRydW5rCis2NzI3IDAyYTAzMjFmOTQ2OGJlYWM3YWRkZWE5NjZjNWIwZmVlMDI4Y2ZjMmEgbGVnYWN5LXRydW5rCis2NzI4IDA1YWU1NzJjMWFjNTY2YzNlODM1MDk2MzFlNGNiMDdjZWQwOTlmMzUgbGVnYWN5LXRydW5rCis2NzI5IDY0NzA0ZDM2YjE5ODFlODIzZmNmMGZhNWU4ODU3MmZiMDYwMzQwOTkgbGVnYWN5LXRydW5rCis2NzMwIGUyMjVlNzBmZDY1NzFmYTY0N2Q0M2IwYmM0MjNjZGFjZmU4ZGU4MDYgbGVnYWN5LXRydW5rCis2NzMxIDIzOWIxMDA4MTE3NjNkMzQxOThkMTAxOTVkZDliMTM0YWYwYWZlYmQgbGVnYWN5LXRydW5rCis2NzMyIGI3ZTdlYjVlZjgyMGFhODc3OTdhMTQ4OTA1YWQ1YzBlOTFmYTMzMWQgbGVnYWN5LXRydW5rCis2NzMzIGRiYjc2MDk1YWRlZTA5NTk5MDMzN2JlZTZiZDhkY2JiYWE3N2E5MzQgbGVnYWN5LXRydW5rCis2NzM0IDUxNmRkZjUwMTk0ZDM2ODA2ZWU5ZmM5ZWRmYmI1ZmZhZjE1ZDVkMzUgbGVnYWN5LXRydW5rCis2NzM1IDU0NDIxN2Q1NDhhNWYxZDU5NDk2ZWRkMDI5NGY1NTM1MjczMGYxYWMgbGVnYWN5LXRydW5rCis2NzM2IDY3ZDI1OGVkZDNkOTliY2I2ZmExM2VjODg2YjRlZTdjMjM4NmU5NzAgbGVnYWN5LXRydW5rCis2NzM3IDdiNTRhM2NlZGJlMGM2NDRjNzA1Y2FjYjY2NmY2ZjgwOGViN2JhNzQgbGVnYWN5LXRydW5rCis2NzM4IDI1MzAxYjllYTBjY2RlOWQ2ZjI3YTI3YmQ3YzkwMmI0ZWNkODU0YzQgbGVnYWN5LXRydW5rCis2NzM5IDg4OTJkYTk1NTRhNWJkMTFmZThiYzdkNjA0ZTRmYjI2N2Y3Yzg0N2MgbGVnYWN5LXRydW5rCis2NzQwIGYwZTgyMTI5YmQzZWEzNjE3YTJmMWY1YTc2MTZjOTJlNDc0ZDgzYTggbGVnYWN5LXRydW5rCis2NzQxIDYwODI1MDFlY2IyZTU4NmMyMDA1MGJiMzkzYzRlNjViMGYxNTgxZTMgbGVnYWN5LXRydW5rCis2NzQyIDJlODdiODExNzZmOWQzMjVhNTY5MzgzMzA0ZTM0NzFlNTRlZDk5MjQgbGVnYWN5LXRydW5rCis2NzQzIDM4YzhhMWNjYzE2YzYwZTAzN2FlOGQwZWFiN2M1ZGU0ZmE3NDU5ZDcgbGVnYWN5LXRydW5rCis2NzQ0IGVmNTFlNGEyZTc5OTQ0OWYzZjVkOWNkZmJmYTM3NDY1OWQ1YTlkNDggbGVnYWN5LXRydW5rCis2NzQ1IDY1MTIwZTkxYjA2MWVhN2RmMWE2ZjY4MWMzNjdhNDg0ZTBmZGY4YTQgbGVnYWN5LXRydW5rCis2NzQ2IGU3ODkwMzM2ZjEwNzA0ZjMzNDBiODhhNjA5ZDUwY2ViYzFiMThjNmEgbGVnYWN5LXRydW5rCis2NzQ3IGM0ODc2NGJmNjJkMWVkMDZhNzNjMTBmMzBkZDY0MTQyZmY3MThiZmQgbGVnYWN5LXRydW5rCis2NzQ4IDM3OTliNzExNjMxYjI1ZWM2NDZlZTg3NzgzYzBiMzVkYTRjNjI1NWYgbGVnYWN5LXRydW5rCis2NzQ5IGNiODQxZjFiMDIyZWEyMjRjYzdjNmY1Y2NkOTY2NjA3YWZiNjU1ZjEgbGVnYWN5LXRydW5rCis2NzUwIGFlMTc4ZjE1MDQwMzAwYzY5MGE1NmQyMzkzYTc3YTY2NTBhZjg1NDUgbGVnYWN5LXRydW5rCis2NzUxIGJlZmRmMGRjMDk2YjA4ZWVjNTJmM2U4YmY2MGJiYmFmNGRhYzUyYWEgbGVnYWN5LXRydW5rCis2NzUyIGY2ZTgyNGIyNzAzMjM1ZDhjMzU5YjMyMTYwMDkyZmQyM2Q3OGIxZjQgbGVnYWN5LXRydW5rCis2NzUzIDk0Yjc2MWZhYzRkN2JiM2M4YWNjM2M5YmU5ZTEwZWUxY2I4MGZjODAgbGVnYWN5LXRydW5rCis2NzU0IDU2OTA5NzgxYTc0MWIxMDUwNTI2YjUyMjZlMmY2NGQ5ZGRlZTQ5M2UgbGVnYWN5LXRydW5rCis2NzU1IDRiZGFmYTcwM2EwNGI1YzdiNmJlNjQ5ZDdlNWZmZTVlZDRhZTA1NTEgbGVnYWN5LXRydW5rCis2NzU2IGRhZjEyZjY0ZDVhYTNkNTE4NTIwMDRlM2I0NTkwMWFkZWFhNzQ3OTQgbGVnYWN5LXRydW5rCis2NzU3IDgzOWY3MjYxMGFlMWY4YmUxYmEyZTMxNzIzYjM2N2U4NzdkM2ZiM2YgbGVnYWN5LXRydW5rCis2NzU4IGUyMWQzZTdhZWE4NzE5NmM0MzE5NjVmZjMzYzEyMDI4ZTcyMzg2NTUgbGVnYWN5LXRydW5rCis2NzU5IGI2OWY0YjgzODkyZTY4ODViNjA4OWRjYTBjZTc2MGNjZjRiNTE2ODYgbGVnYWN5LXRydW5rCis2NzYwIGRiMzVkMmI5M2ViYTBmOTk2OWYwYjMyYTg1ZjEyYWQxODM3N2JlYjQgbGVnYWN5LXRydW5rCis2NzYxIGYyZjVjZDdjYjViNTZiM2E2ZWJhMzNhMjNkNTA4ZGUxNDU4MThmODcgbGVnYWN5LXRydW5rCis2NzYyIDQzYWUwNDVhYTEwZTEwN2M0OWI1YWQ1MGNiMmE3YzhkNmQ5YWQ5OWEgbGVnYWN5LXRydW5rCis2NzYzIDAwMzZkY2YyODQwMjNhOWJkODYzMjMyNmZjY2M4NDJhMDEwY2ExODEgbGVnYWN5LXRydW5rCis2NzY0IDljNmVhYjBjZjU0MmRlMWIxNDA1YzEwNWVlM2JiZWFlYjc5NGQ3MjkgbGVnYWN5LXRydW5rCis2NzY1IDE0MjdkNjFmMTMwNzI5OWY4MjQzYTQxYzEyOWE1YmM2NTlmNmNjZTcgbGVnYWN5LXRydW5rCis2NzY2IGFiZDBiOWZmNjc1OTJkMTA0NzczNmE3ZWVmNWNkOWViYzkyYmE2YzcgbGVnYWN5LXRydW5rCis2NzY3IDY5YmJjMjFmNTVjZjJlMzRlNDczOGFhNTMyNGQyMzYzNzAwZWM0ZGYgbGVnYWN5LXRydW5rCis2NzY4IDUyMGRkY2IzZDVkNjhlMjdiMDY3NDEyOGFmYTg2NTFhODgwNTQ0NDcgbGVnYWN5LXRydW5rCis2NzY5IDAwOGI5ZmM1NjViZmRjMjcyODRhYTYzMzU1MzBiZTBlMjM1N2ZjNTMgbGVnYWN5LXRydW5rCis2NzcwIDc1ZDc1NzMyYTllNGJlOGQ1YjViMTJjMTkyOGFmOGEzYjFiYzU0NGMgbGVnYWN5LXRydW5rCis2NzcxIGNmOWE5N2JmYzAyMzM5ZTAzZTRiNDA2MGI5OGU2ZjRkMzdlNDg5ZTEgbGVnYWN5LXRydW5rCis2NzcyIDZmNzA5MGE4MjY0NTlkMWI1M2RmYmZkZWExYTc5MjcyNDgyMjdlYjAgbGVnYWN5LXRydW5rCis2NzczIGViMWVkNzQzOTcyYzQyNmE4Y2RkM2Q4MDNiZjZjYmE3MGE2Mjg0NTUgbGVnYWN5LXRydW5rCis2Nzc0IGUwNWRhODA0M2I1MDBiNDE1MzRkZWJjNzI1ZTJmY2RiYzJiOTVmZjYgbGVnYWN5LXRydW5rCis2Nzc1IDg2ODA2MzE2MTY2NThlNWVkNWVhNDNiNzJiOTUyMjA3YTNhOTdlY2YgbGVnYWN5LXRydW5rCis2Nzc2IGZjNGYxMjg5ZmU2Y2Y2ZmQ5NDU2ZDE0NjcwMGZjMjRiMmJkMmU1NTAgbGVnYWN5LXRydW5rCis2Nzc3IDM4OGY5YzIyMjBjZTRmNjJjMmEzYTdjNmM0MTc3MzgxNTM5MDNmNjggbGVnYWN5LXRydW5rCis2Nzc4IDk1YzMxOTMxYjc2YWY3MDgzN2EzYTQxNGYxOGRiNDBiMDBhMWZjZjUgbGVnYWN5LXRydW5rCis2Nzc5IDc4MDliNmI0ZmZkOTM1Mzg2NjZiMTNmN2Y0MzQ5ZTA0OGRiZDg4ZDIgbGVnYWN5LXRydW5rCis2NzgwIGU5ZjQ4ZDdlNzNiMWNhYzlhM2UxNWNkMWNmZjBhY2UxYjg2MmQ5NTQgbGVnYWN5LXRydW5rCis2NzgxIDJlZWMzNWUyYWZmZjczZjI5ZTVkNGVmZTk0OGE4M2Y3MTU3NmE5OWMgbGVnYWN5LXRydW5rCis2NzgyIDFhMGYzNGMxODE2M2NjMDQ5NWNiZWExMzQxNDQ3NGFmNmFmZWM1M2UgbGVnYWN5LXRydW5rCis2NzgzIGVjYmViNDQ1ZjYyZTUwNmY4Zjc1NGYxM2MzNjQwMzBmMjVlM2Y3OGEgbGVnYWN5LXRydW5rCis2Nzg0IDNmNmQyNjE2NTRjYTJlOWRiOTM5MTU2MjhhYzRhMTQzZmJkMmJmNmIgbGVnYWN5LXRydW5rCis2Nzg1IGM5N2ZmZDJlYmQ1Mzk2NDEwZGU5YTczZmE2NzdhOTM1YWUzNjFmNmIgbGVnYWN5LXRydW5rCis2Nzg2IDkzN2Y2OWZkNDNmZWE1ZTc4YjE2MjEyYjc5NDJhOThjYmU3MGRhMjMgbGVnYWN5LXRydW5rCis2Nzg3IDk4NDdkZTk0MDc5MDI5OWZjZWNmMmQxYjkwMWM2OTkxNTkwMDYyZGQgbGVnYWN5LXRydW5rCis2Nzg4IDNiMzg3MGI5YWNmMjQzOTc2N2FmODU1ZTI5OWY5ZjkwNGEwMGNjZjggbGVnYWN5LXRydW5rCis2Nzg5IDQ2ZDczNmZiOWRhMzIyODJkNTI4YWFlY2E1OWIwZTVkMGU0ZDEyMTMgbGVnYWN5LXRydW5rCis2NzkwIDc3MjgyOGMxYjFmNjg3NDE5YTUyMTdhY2QxNTVhZjFjZjEwZmQ0ZmQgbGVnYWN5LXRydW5rCis2NzkxIDBmNTFmMWQ3MGQ0NTI2ZmNhYTk5ZWVlNjNiNjNiY2U1MDQ3MjYwYzQgbGVnYWN5LXRydW5rCis2NzkyIDk3ZDM2NTJlNTdkMzVjMjNhMWRmMmQ1MDM0ZDYzMTQzNmZmZTc3MjcgbGVnYWN5LXRydW5rCis2NzkzIDk3MTMzOTk2ZTIyZjBmMmEyMDVhMTVjOWRhMzlhMjJjYzQxOTVhY2IgbGVnYWN5LXRydW5rCis2Nzk0IGQ1ODcxOTZmOWJlZmE1ZWE2ZWVlZWEyMWE0YzdmOGM3YzMwMmFhMTMgbGVnYWN5LXRydW5rCis2Nzk1IDlkNDQ1MDM1MDQ1MWYxZWJkZTdkNmI2YzAxOGNmYjMzODA1ZmUxZGUgbGVnYWN5LXRydW5rCis2Nzk2IDc3Mzk3ZDUxZjg5MjA0ZGVhYWU0ZDc4YTBlNWVkMWQ0ZTdlODZiNTMgbGVnYWN5LXRydW5rCis2Nzk3IDMxNGMxMzQ0NWEwMmRmMDAxNGNmMWQzOGI1OWEyMTFjOTM5OWVjZTAgbGVnYWN5LXRydW5rCis2Nzk4IDFhZmNkMWNkMzMzYjU3YzNmZjEwNDdiOWQ1N2YxNzEwYzk2Y2RmN2YgbGVnYWN5LXRydW5rCis2Nzk5IDEyYzM4NjVhZWFhMDM2MzUwNjk5NGU0OTk4Yjc2NThmZjZjODJjOWMgbGVnYWN5LXRydW5rCis2ODAwIDAyN2ZmMTU1NGU2NjJiZmYyY2IzZGI5YTJkOGQzMjViYjA4MDI2N2UgbGVnYWN5LXRydW5rCis2ODAxIGZiNzMwZmIxM2ZhYjVjYWU2NzQ5NWY2N2M0YzAwMjNjOTliZjk0MDIgbGVnYWN5LXRydW5rCis2ODAyIGIwM2FiMzVkNTJkZjk3N2M5YmQ3M2FlYTJiNTRmMjBhZmY3YTc0MzkgbGVnYWN5LXRydW5rCis2ODAzIGEyNDBiZTViZTZiNGM0NjNhNDcyMTViODk0MDI2YmVjZGM1MGI3ZTUgbGVnYWN5LXRydW5rCis2ODA0IDkwNWY3YjRiMTMyMzg3MDdmZTdiYjk1NTlkMGRhMWQxNmQyNWU3MDQgbGVnYWN5LXRydW5rCis2ODA1IGMyZWIzOGI2NzRmMzA5ODkyNDhjNjU0ZGFkODc4ZjYzNTA5ZWQ0MjQgbGVnYWN5LXRydW5rCis2ODA2IGQwNDQ2OWQwMjU2Y2U4ZWYxYmIwNDFhZWU2NGNjYWUwZmM5MTc5NjIgbGVnYWN5LXRydW5rCis2ODA3IGVlMjAyNjIxNzM0OTljNGU1YzRmMTI1NWMxOGVjYzkxZDE2YTJmNGEgbGVnYWN5LXRydW5rCis2ODA4IGYzN2NiZmFhNzMyODEyOWEwZDhkZjI5MjQ4MjA5MGQ3NTJkNThkYjIgbGVnYWN5LXRydW5rCis2ODA5IDM2NmQ3MmYxMjc5NGM1Njk1N2JjNzVlNDM4YzlmNzI1YWMzZDE1NDUgbGVnYWN5LXRydW5rCis2ODEwIDRkYmZkNGRmZTI4MWM5MTI1NTJjYjNhZTczZGYwNDA5OThlYzhkNWQgbGVnYWN5LXRydW5rCis2ODExIDM3NjgyMmM2NTgxMDg0M2VmODYxMmRkZDIzYmMwNjI0YzUyMjMyNjggbGVnYWN5LXRydW5rCis2ODEyIGFmMTY4NGZjOWM2MzI0ZDhkMjQxZTIyYjc4MWJlNjZmYWE5NDNjMmYgbGVnYWN5LXRydW5rCis2ODEzIGU3YmEwOTJjM2NmM2M3MTUzYjVkOWI0MmQ3YTIzN2IxZTRmYWVmYWMgbGVnYWN5LXRydW5rCis2ODE0IDJkZjYyZGIzNjZiNzY4MzAyYWIzNDQ4N2QyYjQ2M2Q4ZjE2ZjA2NWIgbGVnYWN5LXRydW5rCis2ODE1IDVhNzU1MTIzNjA2MzVhZTMzNjcxOTBmZTBlZGRlZWE0MzRiZmM0MzggbGVnYWN5LXRydW5rCis2ODE2IDg5NzI5N2FiZTViNDA1YzE2MmIxZDE4ZTNhZmE2ZTJjMjNjNTkxYWQgbGVnYWN5LXRydW5rCis2ODE3IDRiYmRlODA0YjY5Nzg0YjRiMGYwYzU4YzcwNTA1M2ZkODYxM2Q2MDMgbGVnYWN5LXRydW5rCis2ODE4IDVjYmRiYTRkMmUxNTI1ZDk0MjBhZWE5NzlhMTM0Y2YwYWMwODcyNWQgbGVnYWN5LXRydW5rCis2ODE5IDRmYjg4NGJmMTQ3Y2MxYzFiNjNjNTUwZDUwYmE5ZWRjMjgyN2E0YzkgbGVnYWN5LXRydW5rCis2ODIwIDdiNjAwZTczZmQyYThhMGZmZDE4MjgwOTNmNmI0Y2E5YTA0MTMzYWMgbGVnYWN5LXRydW5rCis2ODIxIGE1YzI5YWNjYzQzOGU4MGJlMjAxNDgxMDI1YWRmYzBjMDlhNDcwYTEgbGVnYWN5LXRydW5rCis2ODIyIDg1MmNhMjNjODBjY2UwMGY1MTJhNzk3Mzc4ZjFiZDViZmRmNWEwNmYgbGVnYWN5LXRydW5rCis2ODIzIDk4M2RmNDM2NDU5NTcwZmQ4NTYxYmFlZjc2YTBhYTI1ODY0NTViYzQgbGVnYWN5LXRydW5rCis2ODI0IGEyMDk5MTk0NjI4NTAzYWJlNzZkNzBjNDdiYTIzMDk1OGJjMDY2ZTUgbGVnYWN5LXRydW5rCis2ODI1IDAyYTI0ZTQ4YjM3NmU1NmI0OWJjZThmZjE5OGQ3MzIwNzFjZTA3ZGEgbGVnYWN5LXRydW5rCis2ODI2IDZlYzBjYWVhZjgyMzBkOGVmYjYxMDdiNGM0YmQ4MDUyNTFkY2Q4MDcgbGVnYWN5LXRydW5rCis2ODI3IGFhYzhhOTlhMWY5YzRmYTMwNWQwYjJjZTYzNDBjMTE2ZjI0ODI4ZGEgbGVnYWN5LXRydW5rCis2ODI4IDY5MjUwNzAzOTUzYTJhNzEwNzJmMDk2YmM4NjJmOTY1ZTllZGY5MjcgbGVnYWN5LXRydW5rCis2ODI5IGViNDU1ZDk5YmE5ODIyNmZiOGFjNGRhZDBhYjNmYmQ5Y2ZmYTI5ZmEgbGVnYWN5LXRydW5rCis2ODMwIDk1ZmY4OWQ4M2Q2Mzk3YTg0ZWQ4MWMxMDI1MDBiZTNlOWQ0YTU2ZWIgbGVnYWN5LXRydW5rCis2ODMxIDI5MTM1OTc0NDNiOTAwZTAwYjVlMTU5MTBkZjQ3NjI1ODAxZDMzMzEgbGVnYWN5LXRydW5rCis2ODMyIDAyMTJiNDgwOTQ0YmMyMDM5N2Q2ODlkOTgxODg1YzIxNTAxMGUyMTAgbGVnYWN5LXRydW5rCis2ODMzIDRlMDBlNWRhYTYxMjhkMjhiMDc1MmZjYTEyOGUzOTNlZGEzMWViNGIgbGVnYWN5LXRydW5rCis2ODM0IGRiZjI3MzdkMmM4MWNhM2UzY2YzOWRiMzQ4YWQzODY0NzhhOGQwYWUgbGVnYWN5LXRydW5rCis2ODM1IGFmNzU0OTYxYWNjNTI0YzkxMDA1MDNkOWI3M2U3MGE0MjZhYjQ1ZDQgbGVnYWN5LXRydW5rCis2ODM2IDM4MzYxMWJkYTllNmRlZTg5YWJkYTU1NDE4YjYzNTJmMGE5MzNlMTIgbGVnYWN5LXRydW5rCis2ODM3IDdiMWY2ZTVlOTI5NDYzMGM0YjBjNGJkMjY4M2E1NTExNzEzMjdlYjkgbGVnYWN5LXRydW5rCis2ODM4IDM0MTgyYTY0MDhlMDRmOTViMDFkMmIyYjlmOGIyZjBhYWNmOTVhNWIgbGVnYWN5LXRydW5rCis2ODM5IDkxM2ZjOWZmNDNhYzEyMWE5NzIwOWE4YzY0MjBkZTBjMjhlYmI5NzAgbGVnYWN5LXRydW5rCis2ODQwIDNlYjc0ZGY2NzJhMzk5NzMwMWVhZmIwMTYyMzE0ZDgxYzI1M2FjYWIgbGVnYWN5LXRydW5rCis2ODQxIDMxNWE3OTE5OWZjOGVkN2NmZDlhYzRhZTkxZjFhY2FjOWZhMzg5ZWMgbGVnYWN5LXRydW5rCis2ODQyIGEwNWY4ZDhjNjc2OGY4MWNmMjI1YjMwZTJkMmFhMDM0YzUyODdlM2QgbGVnYWN5LXRydW5rCis2ODQzIDNlNzdkNjYzN2EyYjkwZDMyYTY5NzQwZWQwOTIxNzI4MjNmMmYyNmYgbGVnYWN5LXRydW5rCis2ODQ0IGE3MDY5MmE2ZDhjY2Y1ODgwZjJlODQ2YzkxYTkzNjFmMWRjYzkyMGEgbGVnYWN5LXRydW5rCis2ODQ1IGMyNzdlZThjNjY5Y2RiODIwYTlkM2JiZTIzZDYwMzVkNTI2ZGZhZWIgbGVnYWN5LXRydW5rCis2ODQ2IGNiZDQzNGI0NmMxYTYzZjMyMjRmOGE4MTMyYTBjYWJmYTkwN2Q2YzUgbGVnYWN5LXRydW5rCis2ODQ3IDk4ZWE4MDA1MWRiYzkxZDA5NzAyYjVkYzI0YjIzNzAwNDg1YzcwMjMgbGVnYWN5LXRydW5rCis2ODQ4IDQ2MTQwZjU4NTZkOTBhMGVhODQ2Y2U5OGUxYTdiZmUyMDBhMWE3YjAgbGVnYWN5LXRydW5rCis2ODQ5IDMxYzdkOGY0NWFlYjA4NTU3ODgzYmZlN2NmNjcxOTA1ZDBkMmE1MDQgbGVnYWN5LXRydW5rCis2ODUwIGQ0ZjY0ZmM0MmQ4NDQ5MDU0ZjMzMTdlZDc0OTIwNjlhMzQ0NjNmNWEgbGVnYWN5LXRydW5rCis2ODUxIDVmOGE2NTNiMTc3OWE1MGRlN2VjY2NlYzA0OGQ5MTliNmE0ODE3OTEgbGVnYWN5LXRydW5rCis2ODUyIDk2Njk5YWY0ODFiYTllOTgyZDQxYWZkYWViNDFiYWZjYWNjMmY1ZDEgbGVnYWN5LXRydW5rCis2ODUzIDMwNjE2NzZhNjU5YWUzZThlNzk2YTA4OTcwYWQ5YmRlYmQyNjEzNTkgbGVnYWN5LXRydW5rCis2ODU0IGFmMWJmMGY2ZTJkYjExMDBmNGZhMmUyOWExMGY2MWU3OTg4YTI0NDggbGVnYWN5LXRydW5rCis2ODU1IDc5ODczMmU2OWIzYmExYTYyNGQ4Y2I5OTdkOGI2ZTIyMmM2MWVlNDcgbGVnYWN5LXRydW5rCis2ODU2IGFkNDFkZWNjNWZhOTNmOWM4OGI1YThlNjliY2UyODQzMjhiODA1YTQgbGVnYWN5LXRydW5rCis2ODU3IGUwMzNjNzg2ZjI5NzFjNzY0NzQ5ZjlmMzk1MjQwYzBlNWMzOGNiMWYgbGVnYWN5LXRydW5rCis2ODU4IDBkZTljNTU0YmEwMGMwZDZlZjVkYTM1ODEwNGQxMWNjNmZiZjE3NDUgbGVnYWN5LXRydW5rCis2ODU5IDcwY2MyMzhkNTYzZTYyMjc5MmRlN2ZmODI4MWMzNjJmZTQzMWYxMDAgbGVnYWN5LXRydW5rCis2ODYwIDNjN2VmZWI2MDdhMDcwY2I0NDU5MmFjOTljZjJmZjdhY2IzYzdjNDEgbGVnYWN5LXRydW5rCis2ODYxIDJlMjcyYmY1YTQzZTg0NDdiZTA4YjVlNmJiNzBhZWRmMTJiOGJiYWEgbGVnYWN5LXRydW5rCis2ODYyIGE3N2Y0YzIyNjk3ZmY5YWVmN2Y1N2I3Y2I1NGNiMDBmZmEyZDk0NjQgbGVnYWN5LXRydW5rCis2ODYzIGFkYmU2MzMxN2NjYjNkY2M2N2E0ZjViNDUyZjZiNTdjNDZlZmJmNzggbGVnYWN5LXRydW5rCis2ODY0IDc3OTU0ZmU0Mzc2Y2I0OTFlMjdiNWE0ODQzYTVmNTAwNmE4MjIyOWIgbGVnYWN5LXRydW5rCis2ODY1IDYyYjY1YmUyYjc3ZjFiMWE5ZDcxNzZhMmI1ZWU2YjMyNDUwYWQ3ZmIgbGVnYWN5LXRydW5rCis2ODY2IDcyYTBjZmRhMjAwNDQ3NDU5MDhjZDhkNTE5YTY1MTNkODU0NzkwODEgbGVnYWN5LXRydW5rCis2ODY3IDc5ODA4NjMyMzQ2NDVjODU4Yjc1M2ZlYWYwNTIzMWU4OTZhMTU3MjIgbGVnYWN5LXRydW5rCis2ODY4IDVjODZmNjA1MzlmNzQyN2UwYWQxM2NmMDQxY2EwNjE0ZTg3YmJmMjkgbGVnYWN5LXRydW5rCis2ODY5IDQ4ZDFmNWJlYjE2YmE2NDlhZDQyZDZlYTEyYzQ3YWI4OGU1Nzg2MDQgbGVnYWN5LXRydW5rCis2ODcwIGQ1OGE4NDkxNWZhZGUxOWFlMmQ4MmYwZDhhNTkxNjFiNDQ5M2IxMjcgbGVnYWN5LXRydW5rCis2ODcxIDg5MDQzNGQ1YmVjMmY5YzM5YWE2ZWE2ZDExMTZlNDQxODIwZGYwYjQgbGVnYWN5LXRydW5rCis2ODcyIGVjNGM0MmJlYTY5ZDZjZmIxMzljNGM0NGRjZTExOGJlOGI5ZGE1MGQgbGVnYWN5LXRydW5rCis2ODczIGZkZDEyOWYwNTc0ZWRjYzYxN2I5ZWEwMDZlYzY1OTdmZmIxYWE0YjMgbGVnYWN5LXRydW5rCis2ODc0IDA5MTc3NWE1ZTE5YjM1ZTk0NDUxYjA0NzE3NjFiZTYzNGU3YjE5N2EgbGVnYWN5LXRydW5rCis2ODc1IGQxNmI4NjIxYTNmMGVhZGEzOTA0YjA2YzVkNjM3YTk5ZTBiZTVhOTcgbGVnYWN5LXRydW5rCis2ODc2IDFkMjc1Y2Q0MmM5YjE4N2M2MzI5YWM4YWQyMjViNmY3MTJiOGY3ODEgbGVnYWN5LXRydW5rCis2ODc3IDNiM2Y3YzNmNmRhMmY4ZjBkNWU4NGViNmY2MTc0NWJkNjczZWU4ZGIgbGVnYWN5LXRydW5rCis2ODc4IDFlMmQyODA2MDZkMWVmZjhkMjMzZDczOGZhOThmNzViYzA1ODZhODkgbGVnYWN5LXRydW5rCis2ODc5IGU1MjhjMGFjZTRlNWRhOWQyMWNjM2UyODdhNTM0YjI4NWQxNTBjYTcgbGVnYWN5LXRydW5rCis2ODgwIDZmMDMyZWEyNjY0MmY2ZGNlMDBjZWZhZTYxNzhkNTAyZmJjYTI3MWUgbGVnYWN5LXRydW5rCis2ODgxIDdkZGQ4YjNmNjgwMmYwZTJlOTMzOWU3ODZmODk4NDU0MWEyYmVkMTggbGVnYWN5LXRydW5rCis2ODgyIDZjNzcxZWEzOGVlZTg3MjlhMTMxZWNjNDk2Mjc3ZjZmMGE1ZDgzYTggbGVnYWN5LXRydW5rCis2ODgzIGE5ODAxMWYwZjljYTViNGFiMWIzY2U4ZDFiODE1ZDZkMjE2NjlkNzkgbGVnYWN5LXRydW5rCis2ODg0IDRjZWYyM2UxZGNjYTg3ZmYxODcwOGQ3YmQ1N2Y2OTBmOTgzMzdiNjUgbGVnYWN5LXRydW5rCis2ODg1IGQ3Mzg0OTBjOGRhMTkzYzJmY2VjMGMxODVhODRjZTRiNTM1MWFiZjkgbGVnYWN5LXRydW5rCis2ODg2IGFjMzMyNGU2MzhlOTZjMjQzOGUxNTVhMjg2OWM0ZmE2Y2ZlMTBmZGUgbGVnYWN5LXRydW5rCis2ODg3IDc3ZDNkMzAxMzY5MmZkYzNiNDQ0MTBiMWEzOTYwZDE5NDAwN2IxMzkgbGVnYWN5LXRydW5rCis2ODg4IDAyYTY4ZDYyMzgwNWMwMTIxNWUxNTE5MjdlMzJjNDY0YjUxNTgyNWEgbGVnYWN5LXRydW5rCis2ODg5IDNkYmVkMGZmOWNmMjMzNGQ3NjI3ZmI0OTdkZTVjM2ZhN2Q0ZWY1NmYgbGVnYWN5LXRydW5rCis2ODkwIGZjZTRmODdlNTk3NDk0N2I4MTNlNTA1MjA1ZmRkZjJlODdlNzY1YmMgbGVnYWN5LXRydW5rCis2ODkxIGMxNDM1YzVkYTI4MTdiMzA2NDU4ZWVkMjBiMjc4ZDk5Y2M0ZGMwMmIgbGVnYWN5LXRydW5rCis2ODkyIGY0MWFiNzEzZjdlYWJlOTM4MWI3YWYxMDc2ZTkzZTQ3NjUyMDJlNjUgbGVnYWN5LXRydW5rCis2ODkzIDJlYWNkMmM4ZWFiZmY0MzU1NDY3MGVhNzhlMzgzOWY3OWQ2YjljZWUgbGVnYWN5LXRydW5rCis2ODk0IDdmZmZmNjk1ZjIxZGE3NzE5NGJjNWY0N2YwMDE2OGEyZWQwYzFkZDEgbGVnYWN5LXRydW5rCis2ODk1IDkzZDA1ZTE3ODIxNjRkZjdiMGU3YzJmYmU2NDMwOWFkZWEyNmZlZmIgbGVnYWN5LXRydW5rCis2ODk2IGRkNWU5ZTg1NzE4NjU5ZDY1YzQxYTE4NTI4N2QzYWNiMTMzNTc3Y2IgbGVnYWN5LXRydW5rCis2ODk3IGVmNzYwNGMwNzg3NzgxYjkxM2U3MGU2ZmUwMTY5YjkxNzY4MGRlMGEgbGVnYWN5LXRydW5rCis2ODk4IDRmNmM1NjI5MmQzNGY2YmRlNThjZWQxNjZjODk0N2QxMzc1OGM4YWUgbGVnYWN5LXRydW5rCis2ODk5IDVlMDM4ODU2ZmE1Njg4NmZiNmJmODIwZWEwZDI2MTU5ODYwZGQ5OGMgbGVnYWN5LXRydW5rCis2OTAwIDc1YWJlNzM3ZTcwYjYxNzE5ZDExMWY3MDk3ZDNmNGE1NzMwYzNkOTMgbGVnYWN5LXRydW5rCis2OTAxIDljN2VmMDMwYmVjODAxMWEzYjI0ZjYxMzAwZTA0YWYwZTU2NzNlODAgbGVnYWN5LXRydW5rCis2OTAyIDkzOGJlN2EzMTA2ZjI4NWJkNzJiNTA0NDlmNzdkNzY3Zjg5YTcwOGUgbGVnYWN5LXRydW5rCis2OTAzIDM0ZWViNjFmMTAyODM4NmQ4YTUyNDAzMDM1YmVhYWJiZDc4NzRkMTcgbGVnYWN5LXRydW5rCis2OTA0IDkyNzUzMjA3MTQ5MDQ0MTMxZWUyYTc2ZTE3N2M1YmQxMjUyN2U4NzYgbGVnYWN5LXRydW5rCis2OTA1IGYyZjk0NmJkN2Y0N2M1YzlhNjM1YTk2OGFmNDY1ZGM3OTA4ZjFiMjggbGVnYWN5LXRydW5rCis2OTA2IDFjY2NlNWU0ZjgwNmQ1NDljMWFhM2ZhYjljNDhhNzA4YTRjNDk4NjAgbGVnYWN5LXRydW5rCis2OTA3IDM0MGFkZmFhOTg1NDNmMDE5ZWIwZmVlODY3YWQ5ZjJmZmYwZDdmYmIgbGVnYWN5LXRydW5rCis2OTA4IGFjMmE2MjdjZTNhN2VmNzgwMzdlOTNhM2RkMzg5N2E5YjI3MzE2ODEgbGVnYWN5LXRydW5rCis2OTA5IDI1YzUzMjg2NzYzZDAzNTllYjMyMzgyZjBkYzQwMjc1YjVmYTE5ZWQgbGVnYWN5LXRydW5rCis2OTEwIGEzNjIzNTYzMTI3MzdiNzdjOTliMjQ4MDc5Yzg1MGY2Y2VmN2M2MjggbGVnYWN5LXRydW5rCis2OTExIDdkZTQ1N2JkYzk0NjY3OTM4NjYxNGZlMjNiZjIyZTg4NWFhYTYwYTAgbGVnYWN5LXRydW5rCis2OTEyIGU4OGIzMjE1ZTk0YTU5MDE4Yjg0ZjFhOTY1NzdiZmQzMWM5NzFiNTcgbGVnYWN5LXRydW5rCis2OTEzIGZiMTIzN2JmNzAyMmJiNzc3Mzk3OGRiMzIxMGEyYWVlOTgwNzdhN2MgbGVnYWN5LXRydW5rCis2OTE0IGZjZTI5NmRiYjAzZTE2OTk4MTAzYjdhMDNlYmY1MjI5MTg1MjQwZTUgbGVnYWN5LXRydW5rCis2OTE1IDc4MDEwY2NiOGE0NjE4ODFlYmNiNTU0MzZjODMzMDRmZmZhMzNjNjMgbGVnYWN5LXRydW5rCis2OTE2IDA1NDllMzQyOGQ1NzgzNWRkNWFjYWQ3YTkwZTdkYzlhZjBmM2FkMTIgbGVnYWN5LXRydW5rCis2OTE3IDFjMjc0NDkxMzBiYTQ0NWMyMTEwMTkzMTFiMjI5MzhiYzgxNTJkMTAgbGVnYWN5LXRydW5rCis2OTE4IGZhOWFiZjlhODYyNGU2ZjZlNzQ1YWUxNWVjZjQzNzdlYzMyMmI5OTMgbGVnYWN5LXRydW5rCis2OTE5IDAyYjFmMDhlMzBhMDNjYWU5NGZiZjcyNTk5Y2Q2MjdmNzI1Y2MxOTQgbGVnYWN5LXRydW5rCis2OTIwIDk0NTIxODgwODcxZDE2MmJkY2Y5ZmMzNWI4OWEwNGZkM2VkZWU3NGMgbGVnYWN5LXRydW5rCis2OTIxIDFiYTIyZjc0OTQ4OWE0MzU0YTdiYzM2MTI5ZDA0MDQzMmZmYTEzZTMgbGVnYWN5LXRydW5rCis2OTIyIDg1ZDM4NDU2YWRmMDk0ODViNDA0MmIwMGFiM2Y5YThlZTc2NDdjYzAgbGVnYWN5LXRydW5rCis2OTIzIDFmYjlhNTRlNGE5YzE1N2JkYTRhZjM1Mjk1NzgyYjBjMzQxZmIwYmYgbGVnYWN5LXRydW5rCis2OTI0IDkxYzY5NjQ1N2ZkNGVkMmNkMzE0YjBiNmEwZWYwNTAzOGYyOGJjNzkgbGVnYWN5LXRydW5rCis2OTI1IGM2ZmZiNGZjNGRhNDA2NjI0NzMyMTM3MDU3N2ZmYTFmY2MzMmJkN2YgbGVnYWN5LXRydW5rCis2OTI2IGVkYWIwOTc4ODJkODBlNDFiZDZiOTk0NjgzODRhOTdjYjY2NTNmMmEgbGVnYWN5LXRydW5rCis2OTI3IGRjYzRjZjlmYTYyYTg2Y2I2OTRkMTIzNTUyOTUwZDNjNmY3YmI1YjYgbGVnYWN5LXRydW5rCis2OTI4IDRjMTYxNTRmZmZiOTdiNDZmMjVkYzUyMGRjYzQ3MTcyYWE4MjQ3MTMgbGVnYWN5LXRydW5rCis2OTI5IDdlZWVmZDMyNjdkNDUwYTcyODk3MGUxOTg3ZjkzOGM3YjQ5N2Q5YTcgbGVnYWN5LXRydW5rCis2OTMwIGFjYjE5ODhiODg1MmZiODk3NmEwNzlmOTlmNGVlZTE2MDI0OTA0ODQgbGVnYWN5LXRydW5rCis2OTMxIGFiNjBjNTU4NWQxYjAwNWNkYzU0YmFkZmQ2ZWIzNDNmNmQ4ZjU4ODYgbGVnYWN5LXRydW5rCis2OTMyIGQ4NzU5ZDBiNWE2N2NiYmQwYTNjMGVjNmJiYTVlNTdiZjlhNjQxMDQgbGVnYWN5LXRydW5rCis2OTMzIGM5MWFhY2JmOGVkNDY1Mjg5NDBiYjA2ZTg2Y2NjZDJjZTljMDE0YTEgbGVnYWN5LXRydW5rCis2OTM0IDUxOTdlMGYzZjBmZmNlZDBjOWViYjg2NjRhMjMxNDA5OThlN2JkYWEgbGVnYWN5LXRydW5rCis2OTM1IGE4MjY0ZDcwZjI4MWM2MDk4YmYwMmI1YzNkNzMxNWY5ZDE1YWIwZWYgbGVnYWN5LXRydW5rCis2OTM2IDZmODlhNDRhODYxYzdiZDlhMmE2ODI2MjQxNzU0OGQ1ZTE4YzJmZGEgbGVnYWN5LXRydW5rCis2OTM3IGM2YTQ3ODZlN2Y4ZWE4MzAxYmFjMTRhNzU5NWJhZThkZmQ0Zjc4MTMgbGVnYWN5LXRydW5rCis2OTM4IGJhYWJmYjVkNjJhODhjZTQxYTQ4OTFmZWFhZGFjYWZjY2VhNmM4ZTQgbGVnYWN5LXRydW5rCis2OTM5IGI1MWRjMmZiNDhlMTgwNGFkZDU3OTkxNzhmNWI2MmM1ZGJkOTc1M2QgbGVnYWN5LXRydW5rCis2OTQwIDhkMDU2ZjUzYTdmNjMyNWE5MDdlYzM1YmNkNmNmYTViNDNkYjMzOTAgbGVnYWN5LXRydW5rCis2OTQxIDBkNjFmNmMzOGIzN2UyNTc4YTQ5ZmE5NzY3YTQzYjU0NGMwZDk5ODEgbGVnYWN5LXRydW5rCis2OTQyIDYwMGY1YjhhMTZjYjFjNDc1YmRjMjljNTM4ZThlZWZlNTNkZmI3YjEgbGVnYWN5LXRydW5rCis2OTQzIDVkN2ZhM2YyY2VjM2Q1NjExNmI2YTY4YTkyMmMzYjQyNDRhNTRjNzEgbGVnYWN5LXRydW5rCis2OTQ0IGQ5YzUxNTViZGE1MDAyZjJjZTg4YzU0OWU4ODczOTdmY2VlODkxNzIgbGVnYWN5LXRydW5rCis2OTQ1IDEyMmM4ZmRmZTRlZjkxYWE3NWJkZDAwMjlkM2EwYjk1Y2FiNTgzMWIgbGVnYWN5LXRydW5rCis2OTQ2IGY2MzQ2MDlmNDAyOGE1ZTJjNzkxZTBkMjNlN2E5N2I0NDRkMWUyZmEgbGVnYWN5LXRydW5rCis2OTQ3IDU1ZmU2NGMyMTE0NWNkODkzMjczOTFjZWE3ZTFkZGVjNDc1NmU5NjggbGVnYWN5LXRydW5rCis2OTQ4IDRkNmJhYmYyZTRlMTkxM2FkOTZhYjhkZGRhMmZiM2FkNTI1YjVlNjcgbGVnYWN5LXRydW5rCis2OTQ5IGZiMmQxZDVlMTQxYWE0NmNkYmFjYTQ1ODBkZjk1ODk1MzIwMjY5ZDQgbGVnYWN5LXRydW5rCis2OTUwIDdlNWYwMzk1MzExMDU5YmQ0NGY2ZTJlM2NjYTBjMjNiZDgyMGZjNGQgbGVnYWN5LXRydW5rCis2OTUxIDJmZGJhMTI2NzYxMzllZjVmZDFhZjY0Zjc4YjFlNjA5MDRhNDk1YTAgbGVnYWN5LXRydW5rCis2OTUyIDI2N2FlNTgyMzJkOWE4NmE5ZWFjNTUxNDMzMmYwOWM5Y2ZjYjkxZDYgbGVnYWN5LXRydW5rCis2OTUzIDIzNDM4MDMzMThlNGY2ZjU2MzIxNGEwYzA4MWY0ODYyYTY5MjgzYjAgbGVnYWN5LXRydW5rCis2OTU1IDllODUzYTVmMDRmZjllYzE5MjJlYWNhNzAwYTQ0MTZjMjE4NDkyYTYgbGVnYWN5LXRydW5rCis2OTU2IGRkNzA5ZWQ4MjI2MjcwZGVmZTAxZGI5Y2ZlOTczNDYyY2UyM2MzZTAgbGVnYWN5LXRydW5rCis2OTU3IDMyNGUxZTM2ZTY1MmJjMjFhMzU4NDE2NWUwMWExZmNmZDk5ZGJjZjggbGVnYWN5LXRydW5rCis2OTU4IDFmZWM4OGIyMmU4N2Y4MjRjNDQxZWMwNGFkZWUyYjViMGU5ZWJjMGMgbGVnYWN5LXRydW5rCis2OTU5IGE2MGQ4NTIzN2ZkYjgxZWE1NzBkMDg3M2IxOGYxMzQ1YzJjYjE3NmQgbGVnYWN5LXRydW5rCis2OTYwIGQ5MDRmNTM5ZmZkOWNlOGVmZWUxMGIwMTI3ODQ0YmFlZWIzZDNiYzcgbGVnYWN5LXRydW5rCis2OTYxIDNkNDM1MTBiNWUxOWRhNWE2NDU5YzBkNzNhYTYzNWEwZjVkZmEzNDMgbGVnYWN5LXRydW5rCis2OTYyIGUwYzFiZDBhNzRhOTEyNzQ0Y2NmYjYyNWJlYjYzMTJjZGNkZTllNzggbGVnYWN5LXRydW5rCis2OTYzIDhjZTE4NTM4ZTNiYmZiMWU0Mjk5NjEzNjg3MGM1MjMyYWY5NTE2OTUgbGVnYWN5LXRydW5rCis2OTY0IDBlNjIzZTgyMzAxZjFmYjE0NmYwNTMzYWNiZTdmZTRlMzk2NDM1MjAgbGVnYWN5LXRydW5rCis2OTY1IDk3NGRjMzZmZWNkNjJjMTZmNmUyY2VjOWU0YzcxMDliYzZlYTFjZWIgbGVnYWN5LXRydW5rCis2OTY2IDZhNzViM2NmMDIzY2ZjN2FjM2IxODA3ZTcxMzFmZjlkYTg0NzBjYmUgbGVnYWN5LXRydW5rCis2OTY3IGFlNzVkNGExZjVkZGIzNTc3NWM2OWZjYmMwMGRlN2FmNTMwNjlhMDQgbGVnYWN5LXRydW5rCis2OTY4IDk5ZTcwYzQ3MmEyMDJkYTUxMjY2NGJmNmMxOTkwYzgzMDI3MjFjNTUgbGVnYWN5LXRydW5rCis2OTY5IGE5NTU0OTI2OWRlMmIwMzAyNDk4ZjU2ZWFiYzYwZWViYWNkMTU3YmQgbGVnYWN5LXRydW5rCis2OTcwIDU2OWUzYWY1MjE4NzVkZWZmNjc0NmMzY2M4YmYxNTIyNzNlNmJjYmEgbGVnYWN5LXRydW5rCis2OTcxIGVhZThhYjNkMjRlMDMwMDkyZTI3NGU0MWRiYmQ4MTdkZWIzZGVjMTggbGVnYWN5LXRydW5rCis2OTcyIDkzMzUzZTFkMWM3NjA0ZjA3NTc1MjQ1N2JlMzFlMjYyYzIzYWE4MDkgbGVnYWN5LXRydW5rCis2OTczIGQ4MDEyNWQ3ZGM3MzRhMWY5ZTE0NTllZmY4NjQ3Y2U4MGJlNTQwOGMgbGVnYWN5LXRydW5rCis2OTc0IDIwZmQ5NjY0ODUxMDhkYzJlMDhhN2M0ZTFlMjJjNjc3M2JiOTE4MWEgbGVnYWN5LXRydW5rCis2OTc1IDRiYTIwZjQ0NjU0YmJlN2UwY2M0OTM4NjlhMjFmZTI2OTEzZmFlYzYgbGVnYWN5LXRydW5rCis2OTc2IDU1OWFhNDdiMmUyY2ZjZmVlNjRiMThmOWZjMmM3OTU5YWZlNDFlMDEgbGVnYWN5LXRydW5rCis2OTc3IDk0MWIwNTFhZjY3NWUyYjdlZTc2NTgzODM4YmI2Yzk0MzA3NDRiNjIgbGVnYWN5LXRydW5rCis2OTc4IDY1ZDJkOGU2N2RhMzIzYjc0YjcyZTRkODA1NTM2ZmFhNmZkMjRjMWUgbGVnYWN5LXRydW5rCis2OTc5IDg1OGZiMmU5YmMxNzIzYzg4YjllZTc4MTViMTE4NTY0MjNiZjhhNGEgbGVnYWN5LXRydW5rCis2OTc5IGRiNDk0OTRjOTNkYzczZGUwNmQ1NzIxYzc0ZWFiNTMzYTk0N2E5MmMgbGVnYWN5LXRydW5rCis2OTgxIDJiMjFlYTJmMzliNDQzMjZjYjIwYzE1ZjkwOGYwM2Y3ZDBjZmU4MTEgbGVnYWN5LXRydW5rCis2OTgyIDE4OTI3YWJkYzI2MjgxOTQ4YmNiOTU0NjQyYTZmOGE3NDUzNDRmZjAgbGVnYWN5LXRydW5rCis2OTgzIDcxODdjNzA5ZWJmZGVhNDE0N2FmOWQyNTk3MDc3MTI3ZTI4MmM4ZGMgbGVnYWN5LXRydW5rCis2OTg0IDljYTU5NDI0MDIwZTAwZjZiYzZkMTE1MTk3NzZlYzk2OTEwN2M3MzAgbGVnYWN5LXRydW5rCis2OTg1IDExZTBjMjIwODk5OTc5ODZkMzg3ZjAxYTVlMmU3MmQwNjY4NzVlOTUgbGVnYWN5LXRydW5rCis2OTg2IGRmMmMyMTJlNGVhM2ViY2FiZWVmNjBlYjhiNDM2MWFhZTdkYmYxNmMgbGVnYWN5LXRydW5rCis2OTg3IDIzYTEwNGQzYmNlZGM3NWNjNzc3YzQ2MzFlMmVmNGUyNzM3OWFjOGEgbGVnYWN5LXRydW5rCis2OTg4IDg0NzQ0NWFlYWIyZDE5MGE2YzZiNTcyNjZkZmJjZmRhNTQxNDdkMDcgbGVnYWN5LXRydW5rCis2OTg5IGY2OTc2YjlhODVhNDNlZjliNDc4NWFlNTUyMjMxYTEwNThiMmU4MzEgbGVnYWN5LXRydW5rCis2OTkwIGE3NTg1OGZlZjU1MDdlZTdhZmZiOTdjMzA5ZTRjYzkxMDY2ZThiZmIgbGVnYWN5LXRydW5rCis2OTkxIDRhN2M3ZGQ3YjFmMDU2MzM5MzYxNzM2YmRiMTA1MGE1YjA4YzgwYzIgbGVnYWN5LXRydW5rCis2OTkyIGE0ZDJhYWU3NTdhOGQ1MTc0YTlmMjJmMmQ2MWE2YjQwMTA2OGU1MmYgbGVnYWN5LXRydW5rCis2OTkzIDY5MWUzOTJjYWQzNDBiZGJmODk5OTg5YzExMDhjM2Q4YjUwMTRhNmEgbGVnYWN5LXRydW5rCis2OTk0IGZkNTI0YTAwMWNlOWZlZTI5ZjgxN2NhZTU3Y2IyNjkyYjVmMmIxY2UgbGVnYWN5LXRydW5rCis2OTk1IGI0MDYzYzEwMWMyY2NlMzI0OTM5ZjcyYmEzMjk3Nzk4MTFmNTYzZDAgbGVnYWN5LXRydW5rCis2OTk2IDk3YTYxNzk1YTE2OWFmZjdlMWVhN2FjZGZkOGYwOGQzYjE0MDM4ODYgbGVnYWN5LXRydW5rCis2OTk3IGQyNWEwY2NiZmQ2YjhhOGEwODlhNTVhOWQxOTkyNzI5M2FhZWE0N2EgbGVnYWN5LXRydW5rCis2OTk4IDRkMDY4MWY3Y2Y2YjZiNGI1ZTRmMTE5OTAxNWI3NmRjMmFkZTUwMTUgbGVnYWN5LXRydW5rCis2OTk5IGQwYzAzYzMyZThkOTQzMGRmY2E0NzBkMjNmZGQ3Zjc2NTk4MGYzZGEgbGVnYWN5LXRydW5rCis3MDAwIGZmZWYyYzMwZGM0OGZkMDdkYTgyY2NhMjg4ZWQ2NTczMTRmMGYyYjMgbGVnYWN5LXRydW5rCis3MDAxIGRiNTViODBhYWYxMDM5NGE2ZTU4OThhOGI0NTk3YTlhNWI5ZGJmMWMgbGVnYWN5LXRydW5rCis3MDAyIDc4OTRhMGNkOGM3NTRiODVjNWQ3OGZkMTg4NTY2YzI3YTU3NzI1NTkgbGVnYWN5LXRydW5rCis3MDAzIDI4MjRjYmRiZTEyYzViZDY3YTQzYWZlOGZlMTZiZTY5NGMzOTVjMzggbGVnYWN5LXRydW5rCis3MDA0IDMzNzU2MjMzMGZkMGZkNTkwM2ZkNDEyZWFkZTA5OGMzNzJlMWE2ZmYgbGVnYWN5LXRydW5rCis3MDA1IDgwYmNiMDJlYmY0ZWYwYWY1NDg2MTljOTE4MTIxMTNhOWZkZjg5MjkgbGVnYWN5LXRydW5rCis3MDA2IDk2MDNhNjBjODY5YmUyOTIyZWU5ODQwYTQ4Y2RiZWY4YmRmMGMwNjIgbGVnYWN5LXRydW5rCis3MDA3IDMwY2VjYTNmMTA1YjBkYTgxMDU0MzIxOGQ2YWE3MDQwMzQyZjkwZjYgbGVnYWN5LXRydW5rCis3MDA4IDYyY2VmN2U4OTZiNmVjYWIyNzA0ZjMyOTAyN2QwOThkNzNjMGQ5MzIgbGVnYWN5LXRydW5rCis3MDA5IGQ5MGQ3YjU0MWFkYWIyZjZkYTE3ZGQ2ODBkMjU4YjcwNDljNDA0ZGQgbGVnYWN5LXRydW5rCis3MDEwIDk0MjFkMmY2MzA3N2E5NTJmNjY2YTBiMDAzMzNjODkyNjgxMTg2ZTkgbGVnYWN5LXRydW5rCis3MDExIDA1NzUwODM4Zjg0MDNmODg2MzVmZjc3ZGNhYjg0NGQ5MjM4NjFlMzggbGVnYWN5LXRydW5rCis3MDEyIGJmMzc2OGJkMzFmMmM5NmQ1NzRhNjU3NTk3N2RhNTc0NjlhODVmNTcgbGVnYWN5LXRydW5rCis3MDEzIDY1MTcwZGExZDJjYTViYzRiMzBjZjY5Y2ZiMTA0MWM1YjUyMzI3OTQgbGVnYWN5LXRydW5rCis3MDE0IDQ3ZTdjNDJiOWRjNjM1M2ZkZmQ4ODNkZTY0OTVlZGE3NGMwZWU4ZWQgbGVnYWN5LXRydW5rCis3MDE1IDFmNGYxYmU4YTMzOWI4Y2U3ZWU1MTdlMDhkMDkxMzE4MjQ4OWI2NTkgbGVnYWN5LXRydW5rCis3MDE2IDU3NDhkNWVlMTllZDNjYzA5OTQ1NzQxYzFlMTdjNzBjZTljMGI3ZjcgbGVnYWN5LXRydW5rCis3MDE3IDY1MjMwM2VmOTI2YjFmNjJkMmI1ZTgwY2ViZTQwY2I5N2VhMDIxMGQgbGVnYWN5LXRydW5rCis3MDE4IGU1MjA1NDQ0MGVmYzViMDJmYTlmZDM0NjAzMjE0MzBjYmI1YWU5OWEgbGVnYWN5LXRydW5rCis3MDE5IDhkMGIwMGVkOGMyYjU2ZTY3YjNiOGM4MWZlMmE2M2U3OWFjZDZmODggbGVnYWN5LXRydW5rCis3MDIwIDgyMGJmMWFlN2UyNTgyZGQ1ZjI1NDEwMjU3MmIxZDAwOThlZjhmY2IgbGVnYWN5LXRydW5rCis3MDIxIGNjNjUyMWEyY2UyMWVlODVmZjYxZmY4ODU4MTIyNjkyN2NmN2RmODIgbGVnYWN5LXRydW5rCis3MDIyIDU0YzgwMDhkZTg3YmJiNTM4NDBmMmE4N2M5ZWNjZDBjNTc2NGNmZmUgbGVnYWN5LXRydW5rCis3MDIzIGJkNTUxZmJiOTU5NjU4N2I5N2YxNjk2MzU1M2FmMzMyMDcyYjRkODEgbGVnYWN5LXRydW5rCis3MDI0IGRiYzk4ODM0ZWZmMmVhNTY4OTRiYzQwOGI1MGViZTdjNzBmNzE2NDAgbGVnYWN5LXRydW5rCis3MDI1IGYxMjQ0MDM2ZWJhYjZlMzcxMTg5MmM5YzBlN2I0ZTE2MzNmZDBmNjQgbGVnYWN5LXRydW5rCis3MDI2IGNlYTMxOGJiOWQyZjRkOGU0NzI1NGVlZTlhNDNhZDU4ZDIyN2U5M2EgbGVnYWN5LXRydW5rCis3MDI3IGVmYjI5MzhjZTY3NjNmY2YxNTY0OTlkNWExOWQxMjM4NjBkNGIxNmUgbGVnYWN5LXRydW5rCis3MDI4IDg5MDAyMTM3NjRiYTE5ZDIzNzM5ZGU3NGE4ZDQyY2UzMWM4YmVmNGQgbGVnYWN5LXRydW5rCis3MDI5IGYwMzE0NjY1MzBhZjY3MjgzMDg0YWVjNzAwN2RiMGRmNTY5YzUzOGYgbGVnYWN5LXRydW5rCis3MDMwIDA0NTA3NDJmMzZmNGZmZDEwZjlhZmQ0NDFiNTQzZmViNDNjOTNiMTkgbGVnYWN5LXRydW5rCis3MDMxIGIyMTNkMjU4ZmYzMjdkZWQ2MzZkZDkwZTFlNGRlNDQ5ZTc5MjJmZGMgbGVnYWN5LXRydW5rCis3MDMyIDJjMGM2ODA0MDdiMmVjNGM0MmIwODhjM2NiNDg5ZWEyMzNmYmI2ZjMgbGVnYWN5LXRydW5rCis3MDMzIGRmOWQxZWJjZjdmMzBiYTE4MWNlYmFkZjkxNmRkMDE2ZTZmOTQ1OTQgbGVnYWN5LXRydW5rCis3MDM0IGFkYmNjMGFiOWViNmFmNDAxYTUyYmZkMTkyMDhmNzdkZGIyOTUxMWEgbGVnYWN5LXRydW5rCis3MDM1IGIyMTdkYTNmOWI1NGM2MzY0MjBlOTExNTE0ZDA5NTAyMGJkNTJkY2MgbGVnYWN5LXRydW5rCis3MDM2IGM3MTNkZTcyZTc2ZWM0MzI5YTkwNWRhYjQyNWFiNGY4OTYwOTNhZTUgbGVnYWN5LXRydW5rCis3MDM3IGQwMzBlYTUzM2U2M2FmYWU4NzBkYjQyOGE3ZWExNTQ1ZmY3Y2Y4NzcgbGVnYWN5LXRydW5rCis3MDM4IGVhNDU4OTMzZmMyYWY2YjM5ZGQxZGY3ODQ0N2UxZDllNzVjNGFhOGEgbGVnYWN5LXRydW5rCis3MDM5IDc0NWM3YzcwYmUzMTA4YjE3NzRmNDNkMGIxYTg0YTA1YTZjNmJiYzYgbGVnYWN5LXRydW5rCis3MDQwIDdmNDdlMmI2YzRhNDk5ZjJiMGQ3OTg3YmQxNzlmZDA2MTNlZjAyOWYgbGVnYWN5LXRydW5rCis3MDQxIDY0MDNjOTRkZTUwZGMzYzFmZTg0ODk5OTE5MDAzM2ViNzIxMTdkNmYgbGVnYWN5LXRydW5rCis3MDQyIGEzNjBkYzFmYTU1ODI5N2U3YjI2ZjI2NDc2MjM0MzY4MTI5YTNkZjAgbGVnYWN5LXRydW5rCis3MDQzIDQzNDE1NzRlMTYzYjNmNDkxNTI2NTkxN2U3M2Q0NTBjZjdiNzQ3YzUgbGVnYWN5LXRydW5rCis3MDQ0IGU3MDhmNTY4YjhiNzNkMzBmNDljYzYxNWEzNWIwZGQwZmVhNWU0MDcgbGVnYWN5LXRydW5rCis3MDQ1IDdiYjg0YTIyMDU0MzUxZTgzMjM2NzdmYzZhNjFkZGZmMjY4NzZhYzggbGVnYWN5LXRydW5rCis3MDQ2IGEwZWM4YTlkYjk2MDU0YzllZWY2YWRhYzBkNjJiNDExMzQwYzY5OTUgbGVnYWN5LXRydW5rCis3MDQ3IDI2MjZkMDZiM2IwMWY3ZTE2ZWM2YjUyN2NmMTg5MTQzNzE1YWU0ZjkgbGVnYWN5LXRydW5rCis3MDQ4IDczNzU4ZGIyZjQ2NDY4OTQ3NTA3MjA3OWU1NWY1Mjk4ZDQ0OWFhNGYgbGVnYWN5LXRydW5rCis3MDQ5IDgxODYwMzkwNTVlZGEzZDNkOWIzYTM3NWIzYjAzM2FjOTQ5ZDQ2NzIgbGVnYWN5LXRydW5rCis3MDUwIGFhOTY1MDhhNjU4NzkwZmIzYTA1MmQ1YTFjYTZmMDM2ZGU5OTAyNmQgbGVnYWN5LXRydW5rCis3MDUxIGMzYjA4OTVjOTBmYmYwODdkODY5MzM3MGNmMDc0NTZiZDRkMDViZWMgbGVnYWN5LXRydW5rCis3MDUyIGZhZTc4Y2Y4NTQxZDRiYjdlY2E4ZGZmZDk3N2ZjYzM4ZjE2MmMwYTIgbGVnYWN5LXRydW5rCis3MDUzIDZmMWExMjBhZTljMDYxNjE0YTllZGIyOTQ1OGFkMzMyODJjMmEzMWMgbGVnYWN5LXRydW5rCis3MDU0IGUzZjcxY2U4ZTZiYmI1ZjM4ZTE4NTY5N2M2Y2Y0MDQxOGE0YTU5NDggbGVnYWN5LXRydW5rCis3MDU1IDExYmQ0ZjQ5Nzc0MmQ4MjdiNzM3YzI2OWI4OGI4YWU0ZTMzNWRmZDkgbGVnYWN5LXRydW5rCis3MDU2IGM4MzdmMjVjN2U0Nzc0NzI0MWMzZGEwNjViMDcxMzlmODI0NmIxYTIgbGVnYWN5LXRydW5rCis3MDU3IDJmOGQ5YzIyZGU2MmUxNzE4YzA4YzE4NzEwYjYxYzI5ZTA3YjZhZGMgbGVnYWN5LXRydW5rCis3MDU4IDRmNjQ0ZWNjNWJhYzRhYWEyODkyMzMxMjJkODY4MDE3YzExZTJhNDEgbGVnYWN5LXRydW5rCis3MDU5IDM4NzFlYmQxOTYzYzdhZDgxYjdlNWU1NzhiNjJjYTJhYmFlODU3YTcgbGVnYWN5LXRydW5rCis3MDYwIDRhODE2NWIzYjY2MDNkOWIzMThhOGVlMTZmNzMzM2Q1MzE1ODkzMTkgbGVnYWN5LXRydW5rCis3MDYxIGIzZDI5OTBkOGE0YWZiNjhiMDI5ZmNjNmY5ZTJlYzAyMjQ4NGJlZTAgbGVnYWN5LXRydW5rCis3MDYyIDA5ZDk0ZTllYjEwMTAwMTlkMWIzZDI3ZDUyNjJjOWM1ZjU2ODBlYzUgbGVnYWN5LXRydW5rCis3MDYzIDRkYzY3ZmRkOWUwYjVlMGVkYzEzNTJlNTcyM2U4YzAyZDRlY2YzMzMgbGVnYWN5LXRydW5rCis3MDY0IDk2MWJmOWEyMDBkZDE4NDQ4YTFmOWJlMjI4ZTU1MGQwMjMzMTdhOTcgbGVnYWN5LXRydW5rCis3MDY1IDIxMjRmNGI5N2JkZDJiYjk3YWQ1YmY0OTg0YWFmYTUwZTczYjI3YWIgbGVnYWN5LXRydW5rCis3MDY2IDhjZGQ5NGEzZDAyZDk5NmNlYmVlMzhjNGQyMmU2OGViNjZhYzZiOGQgbGVnYWN5LXRydW5rCis3MDY3IDNiZjllMmJlYWY4YzAxOTczOGY1NWM5YWJhNjBiMzVkN2Y4NDMyYjQgbGVnYWN5LXRydW5rCis3MDY4IDcyZDBkZmI5MTlmZTI4YTIyZWU4YTJkNjQwYzVjYWVlOWExMDg0MDkgbGVnYWN5LXRydW5rCis3MDY5IDQxODU3MDc1ZDQ1YmFjODAwN2M4MmEwNDJhNjk4ODY1YjNmNjhjMDYgbGVnYWN5LXRydW5rCis3MDcwIGY4ZjNkYTNmZGFlZDU4MjY4NWJiZDA4NjBiMjE3MDAyZTMxMmI3NTAgbGVnYWN5LXRydW5rCis3MDcxIDRmYTE5NjU5NTkxZWZhM2VkOGNlODIzODY3ZDg5Y2VhZDRiYzBmODUgbGVnYWN5LXRydW5rCis3MDcyIGU3NGI2MDdhNTk5NmZhOTkyMjEzYmI5NTNkYWNiNTM3NzQ5ZTE4NmUgbGVnYWN5LXRydW5rCis3MDczIDhmZGIwNTM5Y2ZiMTUwYTEwNzQ3Y2QwMTFiNTg5ZDQ3ZjMyMDExMGUgbGVnYWN5LXRydW5rCis3MDc0IGIyYTFjOTljYTY0MmI5OTNhOGQzYzUxMzU2Yzk5OTI4ZjM2NGU4MWEgbGVnYWN5LXRydW5rCis3MDc1IGQzNjI1MGFlZmI4MjUyNjc0YzJiZmIyMGUzNjdkODBlODBhNjhkNjEgbGVnYWN5LXRydW5rCis3MDc2IDdkNTZiNDk2YzdkYzIxY2RkMWQxNzk2NDAzZDIwZGNhYmIzMDM2NTkgbGVnYWN5LXRydW5rCis3MDc3IDdjNjgwMmQ4NjIwZjQyZTdhNTI2MWRiZjA4NDM4MzBiNTM0MjU5NTMgbGVnYWN5LXRydW5rCis3MDc4IDVjNzQxZDJkOTdmNWIxNDU0OTQ3ZjhmOTQ5MDY5ZjNlZmQwNjRlMDIgbGVnYWN5LXRydW5rCis3MDc5IDIzNjgzNTNkOTg4NzUzMDE5N2UzYWEyYTMyYWFlNzM0YTJhMWNiZDIgbGVnYWN5LXRydW5rCis3MDgwIGI5OGI0NmRkNDM2N2UyNzk2MDE5NzhhMTk1OWI3NzdlNzY0YzE5YzYgbGVnYWN5LXRydW5rCis3MDgxIDczOWI4NDgwZjFhYzI3MDZhNmIyZTI1ZGE4MGRmYWRhMDhlMzc1ODYgbGVnYWN5LXRydW5rCis3MDgyIDMzYThlNjVlZWYyMzA5MDAwMTA1NDU3OTE2NDI3ZDg1NTc0YjBkYTUgbGVnYWN5LXRydW5rCis3MDgzIDNlZTg3ZDA4MjE0N2MxNjQzYmJlZjA0M2FlOWMzYzk0ZTY5M2MzMzMgbGVnYWN5LXRydW5rCis3MDg0IDUzZWY1YjUxYTQ4YjRlMGU3MDJmNmQyYzRiOGJiOTc0ZmU0ODY1ZmYgbGVnYWN5LXRydW5rCis3MDg1IGJiNDA5NGZmN2JkZmVkNGNjYzNjNTFkNDdmNTgzYmI1MmNkMGEzYzkgbGVnYWN5LXRydW5rCis3MDg2IGNiYzY2OWZlMzcwYWIwNWI1ZTQ2ZmE0MmJhMWMyZTllYTM3YmYwYTcgbGVnYWN5LXRydW5rCis3MDg3IDRkZTA1Y2JmNWFkMTk4N2Y3YTNhNDIyZGQ1MTI4ZjUxOGQxOTkwYzYgbGVnYWN5LXRydW5rCis3MDg4IDEzMjExMTJlOWUzYTRjZTgzYzQxZTM1NmE2ODMwNWEzZjU3MmFkZjIgbGVnYWN5LXRydW5rCis3MDg5IDY4MzA3NjQzMmI3ZjlkYWU2ZGE4NDVjZDM1YmVhNWQxMDU0ZjYzMTAgbGVnYWN5LXRydW5rCis3MDkwIDg3NjE3NzAxZDcyMWU3MmQ3NzFiYzJlZTg5MGJmZjAzNjliNzdlYmQgbGVnYWN5LXRydW5rCis3MDkxIDljZWY5NjljNDVlNDUwNjFiM2I4MjM1MGZkNTM4OTk4NDkwZWNlODUgbGVnYWN5LXRydW5rCis3MDkyIDg3OTk5ZGM0ZDc5ODAwMTljMjMwNWE4OWEwM2E5Y2NiMTllYmQzMDQgbGVnYWN5LXRydW5rCis3MDkzIDA2YzdjN2RlNjk3Njg5N2IzZDFhNGNmYmMxMzc2NTNjYWEzNDQyNmEgbGVnYWN5LXRydW5rCis3MDk0IGMzY2EwMDY1NTRkNDQ0YWM2NjQ5MjFmYzgzNDY4MWE2YzdmMDI5YTggbGVnYWN5LXRydW5rCis3MDk1IDk4YzA4ZjBjNGEyZWQ2YmM5ZTI1MzcwM2QzZGM1YTcwNDBhNTVkZDQgbGVnYWN5LXRydW5rCis3MDk2IGEyZjE3MWNlMjVmODEwNWZlYjA2YjRhNDhmZmE2ZDE4ZDQxYjVmODkgbGVnYWN5LXRydW5rCis3MDk3IDY4YjI4YjhjYTA3NzBlNGE1NmIyZWFiMTYyNmM4NjA3NTEwNjEyYTggbGVnYWN5LXRydW5rCis3MDk4IDFmYWI5ODE0NjVjOGJlZDRmNDM0YTI5OTQ5MTM1YTM0NzE3MzVjYzkgbGVnYWN5LXRydW5rCis3MDk5IGIxMWQ5NmM4MDc1YzU3NDJkY2JmNzZkNDY0N2U0ZDM5NTgzMDQ0OWYgbGVnYWN5LXRydW5rCis3MTAwIDIwMjYwMmZhZWZjNzgzMmVlYmNkMTI5MjEyOTIwYzAyMjcwZjBhOTggbGVnYWN5LXRydW5rCis3MTAxIDk0Y2UzZTAxYzMwY2MzMDBkYjg3YWJhNzE0YWRiYTRmMWJlOGQzYTUgbGVnYWN5LXRydW5rCis3MTAyIDZiNzY1NDUzYjA0MTBlMTFiMmE3NTE3NGYxN2ZlNTBhMzdkNWVlNzAgbGVnYWN5LXRydW5rCis3MTAzIDdkZjVkNGNmODI3NzhhNDI3NjgwNjZkOTdjNDMzMGI3NDdlNDRmY2MgbGVnYWN5LXRydW5rCis3MTA0IGZmMjY4NzMyNjhhODQyY2RiNjAzMzI2MmMyOGExOGI2NGZmYmM3YzcgbGVnYWN5LXRydW5rCis3MTA1IDA0NWVkODMwYzAzNWEwZDUzYWVkZDk3YjVjYmRiOWQzMDIxNGY0ODYgbGVnYWN5LXRydW5rCis3MTA2IDI2NDJmZmNhYzJiNGRjYzBiMTE0YjRkOGNmYTczNmIzODY2ZWVkMGUgbGVnYWN5LXRydW5rCis3MTA3IGM4ZDI0N2ZmOGQyZjgzYjQyODRiZmMwNmViODM0MDg5ZDVjMmUyZmUgbGVnYWN5LXRydW5rCis3MTA4IDNmMTBmOTk4YTU4NzFkY2M4NWU0M2Q5ZDc1Y2QxNjllODdlYmQ5YzggbGVnYWN5LXRydW5rCis3MTA5IDlmYWNiYWIxNTJjZGFiMGVjYWJiODE4MmE0ZjE1NjEyNDM5YjE0ZWQgbGVnYWN5LXRydW5rCis3MTEwIDQ5NzQ1ZGRiNGY2OThiNWJmOWUzYjg4NDAyZTI1NWM4ZGMyMGQxMzMgbGVnYWN5LXRydW5rCis3MTExIGJkMjg5NDVmNzUyYmI2NDBjMTYzMDA2NmRlMmNiNDQ5YmQ3OTUxYzEgbGVnYWN5LXRydW5rCis3MTEyIGY1MmMyYWEwNjFmOGM2MTNkNWI3OTQ2NGY2YmQyYWVmNGNjNmQ1OWMgbGVnYWN5LXRydW5rCis3MTEzIDVmN2QyNDZiYmViN2I2ZWIwYjI5ZmU1OTc3ODIwNmQ0MGMwOTk4MWEgbGVnYWN5LXRydW5rCis3MTE0IDk3ZWM5ZGZiYjJiNmU0YWU4MGU1NTY0NDdmZDg5MTEwNTA0Zjc2MWIgbGVnYWN5LXRydW5rCis3MTE1IDM0ZGI5YTIxYmZiMWQ0ODJjYWYxOTZiZWZlYTk0NjdlODc3NTkzYzcgbGVnYWN5LXRydW5rCis3MTE2IDVmOGY2MDVhZjMzODRkNTM3MDZiNzIwY2EyNmMwNDhjNzdiNDZmZjUgbGVnYWN5LXRydW5rCis3MTE3IDQzNTllOGQzODllNmZkODZjNDNlZjdiMWNjNGYxOGJkNzc4YzI5NjEgbGVnYWN5LXRydW5rCis3MTE4IDhkOTA5YWUxZjA5OTY0ZWNiNGJkODcxZmFlMDU3NTY4YzZmNDE2ZDQgbGVnYWN5LXRydW5rCis3MTE5IGY0YmE5ZTA3ZDliZjJmNDA1ZTZlM2YzYjZlNTJmZThkOTU2ZDBjYTUgbGVnYWN5LXRydW5rCis3MTIwIDY4YzRiMDZjZmZmNzA5NTZiNDRiYTc4NTI5YTU1MjU2NjkyYTY0MmYgbGVnYWN5LXRydW5rCis3MTIxIGY0YTYwZjI2MWZiYjY2ZTQ1Mzc3ODQ4MTkwNDdhYTRmYmYyNWNkZGIgbGVnYWN5LXRydW5rCis3MTIyIGFiNjM3NDI2OGNhYTkyNDZmZDRjODZlNzg4MDlhYjIwYmRiYWQyMzQgbGVnYWN5LXRydW5rCis3MTIzIDZkZDg1MTQ0NWM3ZGMwYjFjOGJmOWQwYmJiY2FkMWZhZWMxOGY1ZmIgbGVnYWN5LXRydW5rCis3MTI0IGRhYjAxYjg0YWZlNjY0ZDBkNDNiMWFjMTQzMzBmNWQ2NGE1ZDBmYTMgbGVnYWN5LXRydW5rCis3MTI1IDI3NDM3NTllMzk3OTdmYTdhYjAzNWI3M2I4OTdmMGMzYzViMmZkMTEgbGVnYWN5LXRydW5rCis3MTI2IDZlZmZkMTBlNzIzM2E2ODU5Yzg1ZDM4ZTFlODA4YjhiZTZiZjcxODAgbGVnYWN5LXRydW5rCis3MTI3IDNkODdjYjFiM2QxN2FkNzE4YTNmNmVjOTM4ZWQxNjUyZDBmZWVjNzQgbGVnYWN5LXRydW5rCis3MTI4IDNiN2NkODNiNjAyZDZmZDgzODBhMTQ1ZDViMTE3NzE5YmFhN2QwOGEgbGVnYWN5LXRydW5rCis3MTI5IGRmODE4NTZkYjU4YzU0MzdkMjc2OTc0N2RkOTRiNTFlZGY5YWU3ZjcgbGVnYWN5LXRydW5rCis3MTMwIGM3NWEyZjJkYzIyMGE1Nzc2ODhlNjFiMTBkNzc2MTQ1ODM0ZTdkNGQgbGVnYWN5LXRydW5rCis3MTMxIDE4NmMyYWQ0YWJmMzNjOTBmNmU2NmY4YzcwYjY5M2U5ZGM3NTkyMTcgbGVnYWN5LXRydW5rCis3MTMyIGRkYmNjMDM4OTE2YjJjZjUzYWFlZjM2ZDJhM2U2YTkyNjRiOGNhMTEgbGVnYWN5LXRydW5rCis3MTMzIDBkZGRmNDllYTQxNmYzYmViYzA2MDhlNDkzZmE1YjQyMWMyZTg4NjkgbGVnYWN5LXRydW5rCis3MTM0IGU5NzUyODQ4MmJjNjc0Mjk5MDgxNTI5NTMzNTg4M2Q0NTYwZjAwN2EgbGVnYWN5LXRydW5rCis3MTM1IDhmYjU3MmUxYjFiYTE3MWUxNzQzYjE1Y2U2YmMwOTRhN2ZlM2IyZWIgbGVnYWN5LXRydW5rCis3MTM2IGQ1MDIzZDBjNTUwMjM3MzY0OGJhNWU4NGVlMzRlYjUxNTVmNWNhZTUgbGVnYWN5LXRydW5rCis3MTM3IDIyNzg1MTA4ZjFlYTEzZDc0Zjc1NjkzMzMzYjc4MmZhMDlkZjVjMjAgbGVnYWN5LXRydW5rCis3MTM4IDRlZTRiOGJiNjdjNzQ0MjcwY2VkNDRiNWJhNGYzYWY1NzFjNThiMmYgbGVnYWN5LXRydW5rCis3MTM5IGRjYjJmNWQzNGFlODAyNjNmZTM0MTg4YzJlM2Y5YTY2MTE3M2UzZTYgbGVnYWN5LXRydW5rCis3MTQwIGVkMzUwNjdlMzc5M2UwZmMzYTgwNWEzMTdlMjZmZDliMjQyNWMwMzAgbGVnYWN5LXRydW5rCis3MTQxIDI5YmMyOGVjYTNlOWVkNTU1M2Q0OWE1N2NkM2M3NTNlZWM0OTZjZWEgbGVnYWN5LXRydW5rCis3MTQyIGM0MjM3OWU0NjUzYmE4Y2VlOTIxYTNjNDc5ZDRhNWRlNjE4NWM3ZjIgbGVnYWN5LXRydW5rCis3MTQzIDk1MjA0YWEyZjQ1MjJhNWNjOGNkNzg1NjgxNzFkOTcwNzk1N2NiOGQgbGVnYWN5LXRydW5rCis3MTQ0IGQ1MDFkYWYwYTJmNjU1ZmZkYjI5OTU5OTU0Mjg3NDAzYTY0MDA3MDIgbGVnYWN5LXRydW5rCis3MTQ1IDc5MDFmZTc5ZjZhYThhMjQ5MmEwNjFiZjdjZjVmMjQzYzYwZTVlZjQgbGVnYWN5LXRydW5rCis3MTQ2IDgyZGYxMDQwZGYwZjhhNmNjMDgxNDdhYmI5ZjMwZjYwNzg3MjU4NDQgbGVnYWN5LXRydW5rCis3MTQ3IDViNTMyNjhmNTQ3YTM5ZGIxNzc2OTEwOWE4NTAzNTE2OTQzNWY5ZTQgbGVnYWN5LXRydW5rCis3MTQ4IGEzY2RjODE2NDk5MGUzNGUzNDNiOGZmYTkyMDE2NTUwZGJjODI0ZjkgbGVnYWN5LXRydW5rCis3MTQ5IGI0M2ZmODlmYzUwZDk1YzIyN2I1NmFkYzg5ODNmNDgzOGMzN2Q4Y2MgbGVnYWN5LXRydW5rCis3MTUwIDBjMDFhMjNjN2RjZGJhYjgxMjk3MjNmODc4ODhjYzdjN2JhOWVjZjAgbGVnYWN5LXRydW5rCis3MTUxIDE5Mzk1MGJjOWQ4ZjdmNGE1ZjY1ZjA3NWFmZTA4MWZkMmM0OWJiZmEgbGVnYWN5LXRydW5rCis3MTUyIGI4MjhlYjUwZGJkNTA2MzhlNmZjMjk5OWVmNjcyOWUzMTNkOTMyZjkgbGVnYWN5LXRydW5rCis3MTUzIDE1OTI5NzBjNzg5YjA5MmM1OWRhOGVhMDgyYzRiN2I5Yjg4M2VhMjEgbGVnYWN5LXRydW5rCis3MTU0IDg5YjE2MTI2ZDRlMjJkMWYxMjYyODhmYWM0MzQ2NzIzMTBkZGEzOTcgbGVnYWN5LXRydW5rCis3MTU1IDEwYzFiOGYzOTAyZmNiMjhhY2VmN2JkODExNmJlZTY3MGZmYWQ4MjIgbGVnYWN5LXRydW5rCis3MTU2IGY5YzVhMzEzYWZkOTMyNTAyZmNkMGNmZGUzMzBhOTFjMmQ0MjNmMDMgbGVnYWN5LXRydW5rCis3MTU3IDE5YzhlNjFjYWQyZDgzNWFlOWUyZmZmYjgyYWJhMzViZDNkMzUzMWIgbGVnYWN5LXRydW5rCis3MTU4IDMxYmQwYWQwMjcyZDVhMDk1NDU4NDU2ZmFkNTMzYjVjOTYxMDM4MDUgbGVnYWN5LXRydW5rCis3MTU5IGQ4MDA4NDFiNTdhOGM3ZWY4OTA4YzUxNzI0ZTlkMDMxZmQ0MmM1MjQgbGVnYWN5LXRydW5rCis3MTYwIGQ3ZDA1ZTIzNDRkNzM2ZDg5NmM5OTliY2UxODkzYWU3NjQ1ZTAwNTQgbGVnYWN5LXRydW5rCis3MTYxIGMwNDZlZmFmMWJkMmM0NmU2MzE4ODZjNWQwYjNjZjc0M2ZkMTAxNGIgbGVnYWN5LXRydW5rCis3MTYyIGQxMjI3NTNlNWI5ZjYwM2M4NjI2YzM2M2U2NzIxZjhjMWNmYTAwMTYgbGVnYWN5LXRydW5rCis3MTYzIDAxZjRlYTA1YTc2NjNlYzEyYjAzODIxOGE2NDBlMGVmMDE5ZWMwNzYgbGVnYWN5LXRydW5rCis3MTY0IDhmNTBiZWM1MDY4ZTZlZmZjODA1YzkzZWJjYmRhMDI4ODhkZjc2NTEgbGVnYWN5LXRydW5rCis3MTY1IGMyYjgzMWY5MjNjMmYwM2ZkOGQ1YjQ0ZTM0MGE3ZDg5MWUzYmUyODcgbGVnYWN5LXRydW5rCis3MTY2IDgwMTVjNTU0OTMwOTg0ZWFiOWY0ZDNjYTEzMmNkMGJmOTMyOTYwMDcgbGVnYWN5LXRydW5rCis3MTY3IGNiNDA1Yjk2OTZkNDgzNjU3MmYzM2M5YmI4NzY4MmM5MDg2NDJiNTMgbGVnYWN5LXRydW5rCis3MTY4IGZhZGRmNmQ1NWFmMGE0ZDQwMjBmZjQ3YjJmYTY1ZTI4ODhjOWQwYzYgbGVnYWN5LXRydW5rCis3MTY5IDJjMTAzOTU5MjFlMWQwYmJiMWI4ODZmZTk1YTMzMjMwOTY0NWNkODcgbGVnYWN5LXRydW5rCis3MTcwIGYxMmIxZDRkNmE5YmI4ODJmNDZlODY0Mjk3ZWM4Y2JkNjgwYTUxZWEgbGVnYWN5LXRydW5rCis3MTcxIGRlMjdkYTVmMjJmMTc1MzVmN2Q2OGNlODA1ZWY0Zjg1YmIwZWY2NDkgbGVnYWN5LXRydW5rCis3MTcyIDFmMzY4ZmIzZTFmNzg2YjQ0NmQ1ZjdjMTNmNzBmMjZmZDUxYTgxZTUgbGVnYWN5LXRydW5rCis3MTczIGVlOThlNDRkNGY4NTUxZDVlMmM3YTBhZTgxM2NmZDQzNDVkOTAyNjAgbGVnYWN5LXRydW5rCis3MTc0IGExNjk0ZTk1YmNiYTc5MjBlNzlmMDM5NzdjOGRhZjk4MTc3MTljZjIgbGVnYWN5LXRydW5rCis3MTc1IDgyNTAzOGQ5OGFiNjIyYmQwNzY5NTJhYzk5M2U3NDlmNzM1NDVlOWUgbGVnYWN5LXRydW5rCis3MTc2IDhhNzViOGJmMTUyMTg3NTRmYmNhODNjMzA3OWI3YzAyZTE3YWQwNTcgbGVnYWN5LXRydW5rCis3MTc3IGU1ZTU4Nzk0MDQwZjQ1NDM0MDE5NzIzZWJiZWM1NTA3NDg5NTE4ZDcgbGVnYWN5LXRydW5rCis3MTc4IGUwYmIxZGFjMmRiZjU1NjI5NzU0ZDg3ZWFmYzU1OWZhMGIwYWExYTcgbGVnYWN5LXRydW5rCis3MTc5IDZjMGUzNWNmMGY4NWJkNjIzYWUwNWY3NmU0ZTBkMDc3N2U5NGFiZjIgbGVnYWN5LXRydW5rCis3MTgwIGNjNTI1MTgyYmJiMWYzNmVlYzFjMjA5MWJkYWEzY2ZjOTIxMTJmNWUgbGVnYWN5LXRydW5rCis3MTgxIDk3ODUxMTQzMjZhYjc1MjUyZDU0YWUyY2U4NmE5MDgzZDQ1N2RjYzIgbGVnYWN5LXRydW5rCis3MTgyIDJkZDI4NTc5NGQ2NzQzMzA4MzZhNTkzNzllNGRlZWI3YjM5ZTE0ZGEgbGVnYWN5LXRydW5rCis3MTgzIDc3NWE3ZDBjMjk2MDlmYWZkODUxNjQ5ODY1ZDdkNzE1YTNjNzQyYTYgbGVnYWN5LXRydW5rCis3MTg0IDQzODk0OWJiNDUwODA1MDYzYzIzNThkNzMzZjljNmE2OGE2ZGUwMDQgbGVnYWN5LXRydW5rCis3MTg1IDdiOWE2MTY2MjgxYTEyYzNhZDNhMjdhOTUyN2UyYTIxZGMwMGZjZmMgbGVnYWN5LXRydW5rCis3MTg2IGQ5ZmY2ZjgzYTE2YWQwYTE1MzFiNjMxMGUzYzY4YmIxODRkZTI3MTcgbGVnYWN5LXRydW5rCis3MTg3IDAyNTNlZjI2N2I2OGM2Y2E3ODg4ZjU0MTNjOGIyYTliYzVhY2EzMWYgbGVnYWN5LXRydW5rCis3MTg4IDZjY2Y1ZGJhOGIwYmI2Yjc3MjdjZDcxOWNlOTA2ZjRjOTlhNzc0MDggbGVnYWN5LXRydW5rCis3MTg5IDBjNmM2OWIwZDNlOWM2OWZhNDk4MmQxZmNhZmJhZjIwNDhmOWEyZDIgbGVnYWN5LXRydW5rCis3MTkwIDY3NzU5ZGZlNmVlOGM3ZGE2ZjIxZmU2MGNkY2MwZDgyNWIzYWRmMjUgbGVnYWN5LXRydW5rCis3MTkxIGE4YTU0NzQ5MGExMjdjZGVkM2Y3ZDQxMjRjZDRkOTM1OGEyYTA1MjIgbGVnYWN5LXRydW5rCis3MTkyIDEyMTU0ZDA5MTMxNjc0ZmU5ZGVhYzc5NTc2ZjQ5OTNkY2U3MGFkMjYgbGVnYWN5LXRydW5rCis3MTkzIDE4MzQ2NTRiZWJlMzIxMmU1Njg0ZTlhZTc0YjM4YWRlNWQwNTdmODcgbGVnYWN5LXRydW5rCis3MTk0IDc2YmIyMDk5ZDYxODI5ZjY4NzBkNGEyNTdhMjQ1YmZkNWVjMmY2MzQgbGVnYWN5LXRydW5rCis3MTk1IDkwODU3ZmI1NzM5NzA2ZTBjMDBhNTYwYjY3NGQwNGRlMzI5N2MxZGQgbGVnYWN5LXRydW5rCis3MTk2IGIyMDA5ZWQxNTJmYTViM2JmZjc1NGY1NGI4YzE2MzllNWZhNjc3ZTIgbGVnYWN5LXRydW5rCis3MTk3IGMwN2U1YzQ1NTU3NmRhYWQxOWE5ZGIxYTNmYzhkYTIxZjE3OWJjYzggbGVnYWN5LXRydW5rCis3MTk4IDQzNzQ0YmUyNDMzZjU4ZjAzYjdhMzcxOWEyYThmOTUxZGNmZTM3ZDMgbGVnYWN5LXRydW5rCis3MTk5IGRlMDFjNjZmNWZhNThiZjI4NWQzZTkzZjgyMDQzZTc1NDg2OGE3OTcgbGVnYWN5LXRydW5rCis3MjAwIDg2NjllZGIxZDljNTY1ODdiNTQyM2I1ZjQwMmY0ZmQ4MGJhZThlYzIgbGVnYWN5LXRydW5rCis3MjAxIGY3YTk5MTYxZGY5MmFhMWFhNDljMzkxMzk4MjhmZWIxZTFmOWJlNDIgbGVnYWN5LXRydW5rCis3MjAyIDlhYzllYTg0OGQ3ZGE3NzhjYjIxYTc0NjVjNDMwZDU5ZWNkNmYyODYgbGVnYWN5LXRydW5rCis3MjAzIGIyMThmMjk0YjcyNmFiYzAzMjM5Mjg5ZWRlMDRiYTdkZDUxYzkyNTQgbGVnYWN5LXRydW5rCis3MjA0IGUyN2ZhMmEzZjUyNjUwMTkyMDlhMGUzYjliM2NlMzc0OGQ3M2Y0Y2MgbGVnYWN5LXRydW5rCis3MjA1IDYyY2Y3ZDU4OTMwMGVmOWZjNTVhMmNjMmYzYmU3MmViMjI5ZjZjZDQgbGVnYWN5LXRydW5rCis3MjA2IDA3ZjBmMjEzNjNlNjQ4MjE5ZjhlMjZkZWI4Y2FmYzY3NzRlYTUyY2MgbGVnYWN5LXRydW5rCis3MjA3IGQzNjcwMTQyMDBiYjViODAxMTdhYmNmNWI5OGUxZTBjOGMzMGVkM2EgbGVnYWN5LXRydW5rCis3MjA4IDNjNzgxMmJmYTFhNGFhYWI4Njc2MGRiY2RiMGI3ZTJkODA2MTI5YTIgbGVnYWN5LXRydW5rCis3MjA5IDNkYjQyMzUxNTYyNmMyZmJhNzEzMmE3MDQ1Y2MyODBlZmRjODIxMjggbGVnYWN5LXRydW5rCis3MjEwIDRhM2Y0NWIzNDcxYWM1NGU1ZDUzMDVjODk2ODFhYTBiYmYzNjQ3MjMgbGVnYWN5LXRydW5rCis3MjExIDk0YWQ1NmVmNTA3MzM1OTg0N2UzNjYyZjY4ZDhmYjJlM2Q0NjM0YzIgbGVnYWN5LXRydW5rCis3MjEyIDQyNmY4N2M0NjVhMDI2NmYzMTQ1NDRkMjRhYjVlN2QwOGRlOGNmNzkgbGVnYWN5LXRydW5rCis3MjEzIDhlZGI1N2MzMzQ4N2JhZWQ5M2I5MDU3ZWQ3YWM4ODA1MzIxNjI3ZmEgbGVnYWN5LXRydW5rCis3MjE0IGIwMTY4Mjg1MWE2MzM2NzdhZjdhODQxM2NjOGJlNGRhZTc5MGU3NDIgbGVnYWN5LXRydW5rCis3MjE1IDA2MmU4ODYwOGI1NTU5ZTYwMWNkY2QxYzQ1NTI4MzNiZTI2ZDkwMzUgbGVnYWN5LXRydW5rCis3MjE2IGE0NDAyMDA4YzU2OWRkOGVmNzg4YTU2ZDlhODE3OGVlMzE2ZWJhNzcgbGVnYWN5LXRydW5rCis3MjE3IGVkMDFlYzQzZWIzMGZmNDNmOGJlNjdmODdhNjhlZmE0YmMxOTY1ZDYgbGVnYWN5LXRydW5rCis3MjE4IDM1N2Q0NTQ0MDg1YTJhNmQxZDMzOGJiZjYyYWQ4YzA1ZThlNzkzNGMgbGVnYWN5LXRydW5rCis3MjE5IGUwNTIzZjJkNDE2MzljOTA0YWExMjlhNGViOGVhYjQ1MjYzZWVjZGYgbGVnYWN5LXRydW5rCis3MjIwIDdhY2RmNTlmMzFjNWVjMWNmZmI3ZDhjZTZjYzZhMWZiODAwZjRkNzEgbGVnYWN5LXRydW5rCis3MjIxIDJjYmRlNWZjNGIxOWJlMTkwMDkxMWZkMDQ3ZGVhNDY2MDM5YTE2MzIgbGVnYWN5LXRydW5rCis3MjIyIDViMDViY2JkNDU0MmM2NDE3ZGI4MWRiMDBhMzg1ZDU0ODc3MGE1YzkgbGVnYWN5LXRydW5rCis3MjIzIGVhMTI2NWYyNmIzMzI3NDA5NWRkMmNjMzdmNWQyOTY0OTgyYWE3OTQgbGVnYWN5LXRydW5rCis3MjI0IGRkZWE2OWY5MDcxYmE4MmQ5Yjk4OTRlOTI0NzU3MWNhZmU2ZjY1MzEgbGVnYWN5LXRydW5rCis3MjI1IGZmZmNjNTJjZGMxZTg2ZmUzYTlhM2ZmNzE4YjY5ZjZiZDFkYWNiYTcgbGVnYWN5LXRydW5rCis3MjI2IDdhYjgzNWY4N2Y4NmQyMWNkYmM3Yjc0MGJmNGZjNjJiNzBkZTY4MDYgbGVnYWN5LXRydW5rCis3MjI3IDczNjdmYjEwNzEwODNlZTMzNmIwNTIyZjljY2IyMzFhYzhmNjU5YzQgbGVnYWN5LXRydW5rCis3MjI4IDdiMWU3ODRlMjBhMGVjZDUwZWY1NTBkMGQ5ZTYxODdlYjQ3ODZlYmYgbGVnYWN5LXRydW5rCis3MjI5IDMwNzAzYTY1NmQxMzQ1Y2RmZmY0OGNkYWM2MTQ4OTBmMmQ4MWI4ZWYgbGVnYWN5LXRydW5rCis3MjMwIDFkZTk2YzU3MmIwMmJjNGFiZTgyZDRhMThkMmQxNGZmMWNjNDg3MzUgbGVnYWN5LXRydW5rCis3MjMxIDMwMWQ3ZjZhY2YwYTZkMDFlZDg2NTcyMWRlNGY1YzJmNzQwNGE5ZDIgbGVnYWN5LXRydW5rCis3MjMyIGUxZjE3MjVjYWU2ZGE4MzAwMWEzYmEwYTQzMzA5Y2E4ZDkyOGYzOTMgbGVnYWN5LXRydW5rCis3MjMzIDYwNWZiYTAyZTE5NTA3NzYyNDM3YTE0NmY3ODkxNjIwMmVlMjhhNDQgbGVnYWN5LXRydW5rCis3MjM0IDNmYzYwNDJhMmFjYjg3NGEyZGRkMjI1NTU3YmQwMzI2MDczMzdiOGQgbGVnYWN5LXRydW5rCis3MjM1IDViMjJlMzJlYWExNzY0ZTNmNjkxNjM1ZWY1MzJkNDM3ZTFiODA3NDAgbGVnYWN5LXRydW5rCis3MjM2IGQ3ZWVhNjk0Y2QzYTA0ZTZlNjUwZjAxMTVjOGMyYmZkZmY0NWFjNmQgbGVnYWN5LXRydW5rCis3MjM3IGY5MjYyNjNmYjY1NGMyOWI4NzhmOWE4MmRhOGI4MDg2NDEyZDkxNGMgbGVnYWN5LXRydW5rCis3MjM4IDM4Njg5YWNlYWU3YjYwYzViOGFjNmJmZDQwZjQ3ZTNkM2NmZjgyNGEgbGVnYWN5LXRydW5rCis3MjM5IDg4NzE0ZmJmOWEwNjI2YWE2MGNkMzQyZGE4MzVkMGJjZTc3ZjFkOWYgbGVnYWN5LXRydW5rCis3MjQwIGY4YjM2YzBlYzExNGFlZGRiMzNkMzdiOTRjZGQyMmU0ZTIwMjY1YTggbGVnYWN5LXRydW5rCis3MjQxIDk2MDRkNjc4NDY3NWMyZGQ4ZTUwMmU0ZTFlNGEwMDFkZThhMjM0ZjMgbGVnYWN5LXRydW5rCis3MjQyIDYzZGFlMjczYjA3ZDg1OTMxNTQ0ZDhmNDZkZDFmNWQxOGVkYWEyZmEgbGVnYWN5LXRydW5rCis3MjQzIGY3YTYxYzZhNjVjMzc5NzQ3MWU2OTQ2Y2IxZTJjNjVkMjkzMjc0MjQgbGVnYWN5LXRydW5rCis3MjQ0IGVlY2JjYzQ4YjBlOTc2YzJiZjYxMjNjMTJmYjY4MTdlYjg4YjQxNDAgbGVnYWN5LXRydW5rCis3MjQ1IDcyMTA4ZmFhNTZiZjE0ODcwZDdhN2U2NThkNTNmMzFhNDE2NTIwOTQgbGVnYWN5LXRydW5rCis3MjQ2IDQ3MTA3MDE2OTBjMWM2YmRiNDM0MzM4NDc2ZTE0MmRkYjA0NWQxZWQgbGVnYWN5LXRydW5rCis3MjQ3IGI4NWYxMGFlNDg1N2YxMTUxY2VmY2VhNTM3OTVjYmEwNDE1Mjc1MzMgbGVnYWN5LXRydW5rCis3MjQ4IGQ1NWYzMTMzOGZkY2Y4NTNjYzgyNWU1MWQ4ZjllZjI2NzZhZWM0ODIgbGVnYWN5LXRydW5rCis3MjQ5IDllNDhhYmJlZTZjNWMwNTQxOTFmYjIwMzJmYTdkOTRhMmY3MWUzN2YgbGVnYWN5LXRydW5rCis3MjUwIDBkMGM0MTNiNmYyNTM5NzU2ODg2YzA1ZWU5ZmY1NmFlMTAyMWI4NjYgbGVnYWN5LXRydW5rCis3MjUxIDRkZThiODZiYTI1NTkxYTQwNTk4YWRkZmU1ZDQzNjEzODY3MDMzMzIgbGVnYWN5LXRydW5rCis3MjUyIDUwZDZkYzQ1OGFhMmZiYmZmNmYyODQyZGNjYzM3NzgyMWE0YjhmZmUgbGVnYWN5LXRydW5rCis3MjUzIDFjY2FhNDQxZDA4M2YwMDQyYzE4MWMwZmYzNTNhOWYzMDQyMjVjYWMgbGVnYWN5LXRydW5rCis3MjU0IGE1NzFjN2YwODk5MTZkY2JjNzVjYTNhNGQ2NTM5YTgxOWNkNDkwN2YgbGVnYWN5LXRydW5rCis3MjU1IGFiZWY1MDA2Zjg0YmRjNzA2YjczMzI2Y2MxMmQ1YmFmMzUzN2VmYzYgbGVnYWN5LXRydW5rCis3MjU2IDc1NjJhNmRmOTFmYjRiZWJjNjQ1YWRhNTcxZTc2N2RkZmNiMWIwNWUgbGVnYWN5LXRydW5rCis3MjU3IDI0MjZhMjIwNjY0YjE4YjNkZTQ2MTMxOGUxY2Q0MTAyMWM1YzhlNzggbGVnYWN5LXRydW5rCis3MjU4IGZlYmE2ZDU4ZDIwNDg5ZjAxNjM4YzFhNWNkZTg3NjhlZWQ5OTk4ZWMgbGVnYWN5LXRydW5rCis3MjU5IGU0MzM2MjkxMGE1ZTNlM2M3ZDU1OWFmYjE5NjIwOTZhMmViNzMwNDAgbGVnYWN5LXRydW5rCis3MjYwIDlmYzM4MGIxYTQ0NWFhMTRhMTJmNjVkYjU3NDI3NGMwNTg3YjljYTIgbGVnYWN5LXRydW5rCis3MjYxIDA5NDhmMzllZTk2MGU0N2ViOTcyZDNmZGQzM2VhODI5MWQwMGExZjYgbGVnYWN5LXRydW5rCis3MjYyIGQ3ZTY2NTNkMDg0ZjZmYmMwZTc1OTE0MmE3ZTIyNjM1MTAyYmIwNDkgbGVnYWN5LXRydW5rCis3MjYzIGYyMzIxZTQyMzA3MTdlNWM1OTc3ZTg5YTJiZGM3MDczY2I0NzQ5NzAgbGVnYWN5LXRydW5rCis3MjY0IGQ0NWJhNjRiODJmZDZiZWYyOTQzNDgyNGM4OWVlZjkxZDA4NTJkYzQgbGVnYWN5LXRydW5rCis3MjY1IGYzNzU4MjMxNDEyMzE4NWEwNWQ0ZTBhMmI0Zjk5ZGQzYTczZGI3ZjAgbGVnYWN5LXRydW5rCis3MjY2IGEyZmQ4MGVlZDI3ZmExNzJiNjFmZjg1ZjBmZjIxMjM3NTQ2M2E1NDYgbGVnYWN5LXRydW5rCis3MjY3IDBiNmIxYjg4Mjg2NmI2MGExOGFjYmNkZWU0NDUyOWI0YzU0MTI2OTYgbGVnYWN5LXRydW5rCis3MjY4IGFhYmY0YTAzYTRiMGJiZjFiYmFmNGVkYTgyNmNjMzE4MWU2YTAzMzggbGVnYWN5LXRydW5rCis3MjY5IDgwYzBjYTQyNDUxMGU3OWNjNDYyNmIyODgwNGVkZWM3NTYwYjQ1NzIgbGVnYWN5LXRydW5rCis3MjcwIGI2NTIwYzQ1ZWIwNTRlNzcwNTNjNDc1OWViOTQ1MWFhM2Q5ODE1MWYgbGVnYWN5LXRydW5rCis3MjcxIGJmNzJhOTRlZTk2YjliM2NjY2FkMDVjYWNjMzdlMGM1MmQ1ZjVkMWMgbGVnYWN5LXRydW5rCis3MjcyIDUyMjU4YjAyM2FhMzE3ODFiZmU5YmIyMzFjYjY4ZWFmMmFhMzkxNzIgbGVnYWN5LXRydW5rCis3MjczIDVkYjlhZDYwMzI2ZGM4YzFkOTg3NWMwYzVhMzliNTRmMmVlYWVjYzYgbGVnYWN5LXRydW5rCis3Mjc0IGU3MmIyZWQzODNhOThiNGZiYzBmYTBjNjIzNDVkZjBmNTg1YTYxZDggbGVnYWN5LXRydW5rCis3Mjc1IGUyYTdmZjZmNDE4ODcxOGYzMDNjZjZlZTdmNjU3YmY5MzQ2MjhlNWUgbGVnYWN5LXRydW5rCis3Mjc2IDJkNWVlMzc0YTczYjg1ZDczM2MyMDUzYjMxZjBjZjM4NTQ3OTY2YzAgbGVnYWN5LXRydW5rCis3Mjc3IDg2N2ZlZGEwMDg0MDdmMGQ3MTdhNDczYzVkOTdkMTVhMjk3ZjE1ZDcgbGVnYWN5LXRydW5rCis3Mjc4IDk5NjVkZjc4MmFmY2Y0MmJhN2ZjYmUyMDA3NWU1OTM3YmExMGRkYmEgbGVnYWN5LXRydW5rCis3Mjc5IGEyYzQyN2Y5ZGIwMmI5YmYxYjlhZDgwOTRjZmRjMmJlY2VlNjI2YTkgbGVnYWN5LXRydW5rCis3MjgwIGM3MWNhMTVjOGI1NTVjZDhmNGM0ZjFkYjU3OGQxNmM5MzA5NjBiMDYgbGVnYWN5LXRydW5rCis3MjgxIGEzYzQ3NzI1OTUwNTQ0MzA4YmRmODJjM2JjMzRhZDNhZjA3OTQyZjcgbGVnYWN5LXRydW5rCis3MjgyIDhkMmM4YjA4MDQwMTdkNDEzMTY1N2NmNGYwYmM4YjBkZjI4MGRmNGMgbGVnYWN5LXRydW5rCis3MjgzIDA5ZDZjNTcwODk5OWU2MzI3ODUxMmU0OGQyMDI0MGJlZTFiNzgwOTIgbGVnYWN5LXRydW5rCis3Mjg0IDZmOGI1YzNjZDZjYjJlNWYyYTZmZWZhYTE5Y2FjMmU5ODU4ZGY4YzQgbGVnYWN5LXRydW5rCis3Mjg1IDJjYjQ2OWE0MjFhOTc4MzdmZDI1ZmU4N2Y0NTQyMWUzNWIxODVkOWIgbGVnYWN5LXRydW5rCis3Mjg2IDlhZTNjY2NmYTdjZGUxMjliZGE1OTMwMzYzMzYyZGM3MTcyZDIzYjIgbGVnYWN5LXRydW5rCis3Mjg3IGRiMjMwZmVmYTcwMjM5OGI2MDY4YjEzODkyYmQ4ODk5OTZlNDFiNGEgbGVnYWN5LXRydW5rCis3Mjg4IGI2ZmFkZjAyMzFhZjliMjYzOWY5MjVlMDA0MmY1Y2YwMDA3NzgxNTQgbGVnYWN5LXRydW5rCis3Mjg5IDk4MjEzNjA0Zjk0MTRmZDQ1Y2ZhZTI4ZDg3OGJlNTJkNmZiMzcwYWIgbGVnYWN5LXRydW5rCis3MjkwIGZiMThjZThjMGNmNmFiYjA2M2U0YWY0M2YyNzA4NDI2NTlmYTUxYTMgbGVnYWN5LXRydW5rCis3MjkxIGM0NDU0MGQ1MmQxMzY5OTEwNzZhZWQwOGM4MDJlYWE2OTdmOWZlM2IgbGVnYWN5LXRydW5rCis3MjkyIDBmNzUxNWViZTNiZjRlYWQyZGYwOWIzOTg2YThiNGZlMWM5N2MwOGYgbGVnYWN5LXRydW5rCis3MjkzIDY3YTUyMjFhMmY2MGY5MzljYzNiNGZjZGFhYzM0MTZkZjkyNTU1MjQgbGVnYWN5LXRydW5rCis3Mjk0IDliZGEzOGM2N2Y0ZWMyNWMwZmY1ZjIxOGE3NzMzOGZiZDc4MTdlYjkgbGVnYWN5LXRydW5rCis3Mjk1IGU3MmFjMWRjNjE0ZjJhMDg2MDQyODQ0NjExNWQzOTJlNmY4N2VlYTMgbGVnYWN5LXRydW5rCis3Mjk2IDM5MWYwOGE5NzQ2Yjk2ZDJiZjQwNTVlZmM5NWUzYmVlNWEyZjlmYmYgbGVnYWN5LXRydW5rCis3Mjk3IDQ0ZTg2ZGFkZWM5NDRiYzE0OThiM2FhZjg5Y2M0NWM1MzhjY2MxYzkgbGVnYWN5LXRydW5rCis3Mjk4IGY0MmJjYTNkN2JlMjFkMzBjMTc3YmI5MTUzMzc1MWFlN2IxYjIxOTMgbGVnYWN5LXRydW5rCis3Mjk5IDg3ODNjZmRjN2M2Zjk5M2NiYTQ4MTE2YWY4NWMzMmQ4M2MwMzI0NmEgbGVnYWN5LXRydW5rCis3MzAwIGI4YTk3YWQ1ZjdjZWQzYTU0NTA3NDNiMTEwYzliNDhhZWJlMDg4MzMgbGVnYWN5LXRydW5rCis3MzAxIGYzYjkyYzk1ZTg1YjM2MjZhMGVlYjhjMzQ5ZmIwMjRhMDZmMzZkMWIgbGVnYWN5LXRydW5rCis3MzAyIGJlNDgxZjNhZGEwYmRhYTMwOGM4NTU4MjMwOWFjNTg0OWNmYWYzZmUgbGVnYWN5LXRydW5rCis3MzAzIDk3YWU4NDY2ZDFjNDIwNzRlMjE5ZDVlM2FkYzE4MmY5MGUyNzcxY2MgbGVnYWN5LXRydW5rCis3MzA0IDVhMmU3MjUyYzg5MDJkNGQ2ZDE4NjY0ZDY0MGFhNjFlYzZjMTg3ZDggbGVnYWN5LXRydW5rCis3MzA1IDQzNDFmZjVjNjk3Y2ZlZTJhNWQwM2FlMTcxZjEyYjg4ZTZmZjIzYmYgbGVnYWN5LXRydW5rCis3MzA2IGQ4N2U4Nzg1Mzk1OGYzZTllOTNlZjc2NzU4NDg4YjMyYjJiYWRmNTkgbGVnYWN5LXRydW5rCis3MzA3IDUwZjQ5ODNiNmI3OWQxOTIyMjE5Mzg5YWNiZGYyMWUwNjdkMzljNDAgbGVnYWN5LXRydW5rCis3MzA4IDMzOWQwYzQ5ZjBiNTczOGFmNDIyOTM2Njc2NGI5Y2JkMDg4NzI4ZTEgbGVnYWN5LXRydW5rCis3MzA5IGM3ZTk5YWI2MjdmM2I3NDAyOTY5YmI4MTRjMzMwMmI1MzM3MWYxMDcgbGVnYWN5LXRydW5rCis3MzEwIGUwNTQ4MGRiNzFhYjExMzhkZTM1YjM0Y2QyZjhlZDVkNTBiNGRmOWYgbGVnYWN5LXRydW5rCis3MzExIGFjYjA1MDFkOTNlZjlkMzBiZjA1M2ZkMWE4MmJlN2Y3OGY4ZjdhZWYgbGVnYWN5LXRydW5rCis3MzEyIDllMWFjOWViZTc5ZjUxZGNkMjQzYjUzM2ZjZDBjZWE2ZDkwYmY1YzYgbGVnYWN5LXRydW5rCis3MzEzIDVjMTk1MWQ1NzNiMWQ5YmYzMWZmMzc4NjAwMWJjZjdkZmE3ZTY0NzYgbGVnYWN5LXRydW5rCis3MzE0IDQ1NjdlMTU4ZDIwYzUxMjkyYjJjZjg3NjcxYWY1MzVkOTZiMDFmYjUgbGVnYWN5LXRydW5rCis3MzE1IDM1YzY0M2U5MDIzZTcyZGNkZGJlZjU2YTQ4M2FlMTQxNTM2NGE5NTEgbGVnYWN5LXRydW5rCis3MzE2IGE3YjljN2M4MTMzNzYzMjFhODI0MjExMjc3MTU5OTUwMjUzZDRjYTggbGVnYWN5LXRydW5rCis3MzE3IDg0Njc5ZjdiYmU2ZDU4NDhhNjA1YzE0MGJkOGEwMGQwYWI1YWE1Y2MgbGVnYWN5LXRydW5rCis3MzE4IDM4YWUyYTBmYzRmMzNjNmU2YWQwYzdmMDZmZmVlOGMwOWYyY2Y5ODkgbGVnYWN5LXRydW5rCis3MzE5IDU1NWY2ZTc2ZDIwN2RjY2QzZGJiY2E0OTVkZWVmZGMzN2FmZTY2MzAgbGVnYWN5LXRydW5rCis3MzIwIDBiZGQzMTUzOGQ4ZmQ2NjY3MGIxYjg3YzI3MDc3MGU3NzIxNmFmZGQgbGVnYWN5LXRydW5rCis3MzIxIDk3MjAyNmQ0NzI3NGFlYTVhZDZmM2FiZTc3ZDUzMjRjYjNkYzI0ZGUgbGVnYWN5LXRydW5rCis3MzIyIGQ1MzgxMmQ2ODQwOGM2MjRmYzg4MmI3Yzk2Y2I2OTMwMDU2NDVhZWUgbGVnYWN5LXRydW5rCis3MzIzIDUyNjk1ZWZkZjIyYzJhODVlOGI4OWE1ODA0ZWM5OGFjY2RiNzg1OGQgbGVnYWN5LXRydW5rCis3MzI0IDBhNDlkMTkyNTA2ZGNiYTYyZjc0MjEzYWE2OWU4ZTk1MWJiNjFkNjggbGVnYWN5LXRydW5rCis3MzI1IDBlMTg5N2ExZjBkNTJjYjA5ZjlhYmU1Mjk4NTMxNGQyOTIwZWQzNmMgbGVnYWN5LXRydW5rCis3MzI2IGY4MDgwMDFhM2UwMTM3YWNiZmYxMmQ4YjU0MTM5MTEyNDY1ZWMzOTcgbGVnYWN5LXRydW5rCis3MzI3IDI5Y2VkNDg1YWNhMDk4MzU2YTJiZDM3YWU4ZGE1MzQxMzg0MTRjODEgbGVnYWN5LXRydW5rCis3MzI4IGNmOTA3NDUzODFiZmZkMGE2NjMzNWVjNTA1NjEyYzVhYzZhYTA0OTcgbGVnYWN5LXRydW5rCis3MzI5IDE2N2FkMzk0NDg4Y2NhYjFhNTNlYjg5MjgyNDhkODRhYTAzZmNjYzAgbGVnYWN5LXRydW5rCis3MzMwIDQzYWIwZmVmZTRhMTU2YWY3ZjQ0ZTI4MTQ2MTZhZWRiNDc1YTM4ZmYgbGVnYWN5LXRydW5rCis3MzMxIDg4ZGJmYTJiYjlkY2VmZmMwZTM4YjQ5NTI0MTVmYTU2ZjA2NmM1YmUgbGVnYWN5LXRydW5rCis3MzMyIGUwYWFlZTdmZDFmZDQ1NGU2ZTQ2MGIyNmYyNWVlOWVhYzM4OWU2NzkgbGVnYWN5LXRydW5rCis3MzMzIDE5ODk4OWVlMzZkNTZhNWQzZTU1ZTU4MWI4YTMzN2QyN2JhMGJlYWQgbGVnYWN5LXRydW5rCis3MzM0IGFiNDYxYzc2MjU1OWE0MzFiYzQwODlmNDUxZGQ0YjUwN2RhNzRjNjUgbGVnYWN5LXRydW5rCis3MzM1IDVjNmZiZGM1MGUxZDY0Mzk4ZGY5MDY5OGY2MzE0MDM2YmQ3ODJkZWMgbGVnYWN5LXRydW5rCis3MzM2IDY5Y2E1ZTNjY2M2ZGE4MjUxNjJjNWFlOWMzNzA4NzJjN2U5NTJhM2EgbGVnYWN5LXRydW5rCis3MzM3IDdkNzMxOTgxMWZmMGFlMTM3MWUxYzBlN2M2OTI5NDlhZTBmYjkxNmUgbGVnYWN5LXRydW5rCis3MzM4IGIxNzA3YmNkYzI2NTI2Y2M3NTlkNWYwNjdiMDI3NmVhZjdhOGRhYjcgbGVnYWN5LXRydW5rCis3MzM5IGE1MzkwOGQwOWEwNGMwMTAzMDIxZTM5ODZlNzgwMTQ2YTUzZjM2MzggbGVnYWN5LXRydW5rCis3MzQwIGY1MDczZTI0MTQ3YzA3ODgxNWY1MDFmODhmZjQxZWI4NmRjYjJlM2YgbGVnYWN5LXRydW5rCis3MzQxIDM5NjAzNDBhMzI1MjA4YzRlNWQ3OTBmMTJmYzNkNDU1ZGFjODM0NjggbGVnYWN5LXRydW5rCis3MzQyIGUzZjJhYjBiMGFhMTZkMjAwMzIyZjY3MGIwZTc3Nzc0OTdkYThlMDYgbGVnYWN5LXRydW5rCis3MzQzIGJmNGRiMmE0YmI1NDA3OWVkMDdiMGFhNmYxNzhlYjg3NGU1MDFlNTcgbGVnYWN5LXRydW5rCis3MzQ0IDBlYTBmYWM2OGMxYzlkOGY3NmQ1ZjdkN2FlYzNmMmYyN2U2MzJjYTggbGVnYWN5LXRydW5rCis3MzQ1IDY4ZjQxMzQ4NjlkYjAzYjc3Y2FkMmZiY2NkMDYzYjAyNDg2ODllYjIgbGVnYWN5LXRydW5rCis3MzQ2IGE3MTU5YmEwZTQ1ZDFkNzQ5NDQ2NjFmOGEzYjg4OWZhYjJkMWJhNjMgbGVnYWN5LXRydW5rCis3MzQ3IGRhNTNlNDhlZmVhODYwYTJkYjMzZGUzYzViYWNlYzJhZTk2NDYyMmEgbGVnYWN5LXRydW5rCis3MzQ4IDMyZjZiMGQzYTY2ZmJmMDg4YmNjNmYzZGFlMjg0NmRjOGEzNDljN2YgbGVnYWN5LXRydW5rCis3MzQ5IDAzYmNkZDIyZjZhNGMyYTI3ZTdkN2M4NGQxMTAyMDYzZGRlYmU5ZDQgbGVnYWN5LXRydW5rCis3MzUwIDkxMTA0MGUxYmIxMTkxODRiYjU5MzQyNDc4ZjU0MDI4NGRkODdjZDAgbGVnYWN5LXRydW5rCis3MzUxIDBmMTBmYTc1MmNhOTI1NmYzYzdiY2Y4OTM3NzA0MDdlODExYTVkMDkgbGVnYWN5LXRydW5rCis3MzUyIGU1N2E4ZGU1YWViMzliMzAxZGNjZGQ2OThkMWJjNWY1NmI0YWQxYWIgbGVnYWN5LXRydW5rCis3MzUzIGE5ZTdlMGNjYWE0YWMwYzEwNWY2M2Q3MzI3ODZmZTE2ZmZjMTM0ODggbGVnYWN5LXRydW5rCis3MzU0IDQ1MTQwMjMxNjBiNDVkMWUyY2MwZDVmZDQwYTlmNDZiMmIzZWVlMDEgbGVnYWN5LXRydW5rCis3MzU1IDlhN2U5ZjEwYWVkNjIwOGViZmQ4Mzk4OTliZjI4OGQ3ZGY1ODY0ZTkgbGVnYWN5LXRydW5rCis3MzU2IDIyNDFkMzEyNjU4YWU3NzNkMjQ2NmI5OTI1MjFhNDYzMzgwNDM2NDIgbGVnYWN5LXRydW5rCis3MzU3IDhkMTdkNTUyZDBlYzA1ZGFjNmFkODFlZDYzMTQzMzJjZDE3M2ZiYTMgbGVnYWN5LXRydW5rCis3MzU4IGU3NDJiNTkzYzA5MjYzY2RlZGJiY2E1NWVjNzg2YmViNzg2YTU3ZjEgbGVnYWN5LXRydW5rCis3MzU5IDY1Y2IyNjFmNzczNmM5YTQzZGY4MWRmYzVmNzYyZjlkNTMzZTYxMWQgbGVnYWN5LXRydW5rCis3MzYwIDM4M2M2NDg2MzQ2ZjY2MzNhOGUyOWM4NTVjMWYzOTk0MGMzZjM3MjMgbGVnYWN5LXRydW5rCis3MzYxIDIxYzQxZDNjMjZiNjUxMWE3MjM5ZTZlOGU0NzU3MTY1NzA2OGI2ZjYgbGVnYWN5LXRydW5rCis3MzYyIDM0MmQyZWVkNTczYTU3OGIyZTY1NjlhM2VkZjFlMjU5ODZkY2ViODEgbGVnYWN5LXRydW5rCis3MzYzIGYxMjYxMTg2NzIyY2QyMDlkNGU1ZmIzYmZjYzgwNmM5MmQyYmNiYTggbGVnYWN5LXRydW5rCis3MzY0IDljNmI1YTY1Y2U2MzAwZDhkMGM2ZTliZjdhNjE5MDJiNzMxYmJjYTkgbGVnYWN5LXRydW5rCis3MzY1IDhhNjhmODFiYWFkNmIxNjkxMTMxNmFkZjM5MDYwNmI4NmViNDRmNmIgbGVnYWN5LXRydW5rCis3MzY2IGQzOTlhNDUzN2Y2ZGUwZjIwNGM5Y2E2ZWQzZGZkNGE3YzNlOGJlNjYgbGVnYWN5LXRydW5rCis3MzY3IDFjMDg5YzViNjZlOTkwOTU0ZWQ1N2M5ZDdiYzgzYTg0NDhjMGZkMmQgbGVnYWN5LXRydW5rCis3MzY4IGMyZWFjMTI2ZThmZmMwODc4YzY0OTlmOGY0MWVhM2JhNGY1NTI3M2EgbGVnYWN5LXRydW5rCis3MzY5IGYzMWY0N2ZmMWZkZDNmNDliMjcxYjhiZDU1NWJjMWEzMTQwNjNkNTEgbGVnYWN5LXRydW5rCis3MzcwIDU1NjgzMjBkYTliNTlhZWJmZWYyOTE3NWU1MWVhOTg3ZjMwZjhhMWUgbGVnYWN5LXRydW5rCis3MzcxIDUwYWJiMDg1MDc0MDQ2OWVkOGJmMmQxMDMzMjlmNGNhY2NkZTM5MzggbGVnYWN5LXRydW5rCis3MzcyIDkwYzIxZGRlNDI4NDNmYjA0YzU0ZDg4ZjMyOTVlOTc4NDRjNjY2NzggbGVnYWN5LXRydW5rCis3MzczIDRmODdmZDJkMDU2MmVhYjE4NGE1NzY4NDhlYmU0MGQ1MDJiMzE5NjIgbGVnYWN5LXRydW5rCis3Mzc0IDllZmY3ODgwZTY4NDQ4MDViOTNiNjA4OGMyNWMzY2UxYzBkMTIwN2QgbGVnYWN5LXRydW5rCis3Mzc1IDM3ZTk3YTMxMDI0MTFkMjBkMTcyNTY1YjljOWI5ZmVmYWQyMTM2ZjEgbGVnYWN5LXRydW5rCis3Mzc2IDc3MDEwNGM4Zjg0YTBhZmEzMDM0OTkyNGViM2E0NzQwZmU5YjM1YzcgbGVnYWN5LXRydW5rCis3Mzc3IGQ0NmU0NzhiNTc2N2MzODlmM2U3NzQzM2Q2NmZhYzEwOWI3Yjg3MzIgbGVnYWN5LXRydW5rCis3Mzc4IDZhNjI5ZDI3OGExOGI5MjJmMmIzOGM2YzMxNTU5OWEzZmE1OGZhYTYgbGVnYWN5LXRydW5rCis3Mzc5IDVkYzIwYTllMDUwNjdiYTE3MDM2N2U5ODAzZTM5Njc0YjFjMzFjZTQgbGVnYWN5LXRydW5rCis3MzgwIDMyMjIwYzU3MjhmNTE0ODZlMGQzMTk5NmQ2NzAzNDAyZTc0NDJlODMgbGVnYWN5LXRydW5rCis3MzgxIGZjZTc4MWIxMjdiOTJmMzlkM2Y3M2U1MWJhMzhiYTEzMGE1OTc0YTYgbGVnYWN5LXRydW5rCis3MzgyIGZkMzYyNjUxMWRhZGZjY2I0ZTUzZTY3NGEwZjM4YzUxMzJmNTE0MjYgbGVnYWN5LXRydW5rCis3MzgzIGNmYTEyODI5MDJkYWNkYTJlYWFhZThiM2NkYzA0YmZkOTc1ZDU2YjcgbGVnYWN5LXRydW5rCis3Mzg0IDA4MzRhYWRkYmYxZmU0NGUyMTNiYjQxNjI2ZWRhMWYyNmY5MWEyMmMgbGVnYWN5LXRydW5rCis3Mzg1IGZjYWY5ZDExOWFiZmRjMDkwZWY4MTA2NDhkODI5NjA5MzI5OTk4MWUgbGVnYWN5LXRydW5rCis3Mzg2IDIxODc4Yzg0OTYyNmFlMWI3NDJmOGFhZjFhYmEzMmZhMjc5YTM0OWEgbGVnYWN5LXRydW5rCis3Mzg3IDRiNTkwZjU4YzZhN2EzOTNmM2ExZDZlYTE5MjI2ZWI4YjVmOWE5M2QgbGVnYWN5LXRydW5rCis3Mzg4IDllMmMzYzZkNGZhMTVjOGZiODQzNjBiODUyZWYzZGI3YzIzODg4ZmIgbGVnYWN5LXRydW5rCis3Mzg5IDI1MGJkZGIyZWNjZjJkYmNkMDQ1MTk0NjgxNWQ4ZWU1NGQxNGY1YjUgbGVnYWN5LXRydW5rCis3MzkwIDE0ZWQ5MDlhOWM4MDlmN2VhYmFmYjc4Zjg3ZWM3ZWQyMDE1MmQwMmUgbGVnYWN5LXRydW5rCis3MzkxIDA3OWViNjk0NzFlNTgzMzljMWViYWNkMGJjN2EzOGZjNjM2OTQ0YzcgbGVnYWN5LXRydW5rCis3MzkyIDFiY2Q0OTcyZGE3ZTg2ZTQ0YmQ5YTJlNzAxYjA1YWZkM2RjZTlmNWUgbGVnYWN5LXRydW5rCis3MzkzIDJhNGQzZDk5YjhhNDVhOGMyYzZmOTliZjUyYzE1MmJiMDY2OWVhYjUgbGVnYWN5LXRydW5rCis3Mzk0IGY4ZTViYzUzNTFhOTczYWU4NDg1MzBkNWFjNThhNzAzOWE5ZWFlZTggbGVnYWN5LXRydW5rCis3Mzk1IGU3NzU4NWFmMmEyMTY1NTgyODY0ZWU4NjA3YmI3MjA5NDRhOTI5NzUgbGVnYWN5LXRydW5rCis3Mzk2IDU1OGFiYWM3NTk4ZDI5MGVlOWQyZGViYzAxMmU4ZGE4ZWRmODA3NmYgbGVnYWN5LXRydW5rCis3Mzk3IDJkZWMzNjM0NTY2NTgzMjJhYTM4ZjZlYzE4ZTY1ODZmNjQwNmM5NWMgbGVnYWN5LXRydW5rCis3Mzk4IGFlNTczOTIyZmRjZGFjY2I2MWJiZTJhMzM0MjY0OTNhOWFkNGIzNmEgbGVnYWN5LXRydW5rCis3Mzk5IGYwN2UxOGRiMzY2YzQ5MWM0ZWJkZTA2ZWQwMzE1ODMwYjQzZmI4YmMgbGVnYWN5LXRydW5rCis3NDAwIDUwN2M0NjAyMDUyNjRkNThlMzQwOGFiMTYyNTc4N2I5MjlhNjNkMDIgbGVnYWN5LXRydW5rCis3NDAxIDcwNjlhMmJmNWJhZjZhOWE1NmE5YTJlN2U5MmNhZTBmOTgwODAyNmMgbGVnYWN5LXRydW5rCis3NDAyIDA0MDQ5M2RlODQ4ZDhkZDcyNzVkNTg1ODAzOTc0MGIzYjE5ZWEzNDggbGVnYWN5LXRydW5rCis3NDAzIDliZTY1ZTZjMzVjODI2ZDRmNzA5YWQ3ZjY1MTliNDYzMTMzMzQwYzcgbGVnYWN5LXRydW5rCis3NDA0IDUxMjZkNGI4MTllOWUxOWM1YWIyNTQzNjc1YjAxZDk4OWQxYWNmODEgbGVnYWN5LXRydW5rCis3NDA1IDUzNjkzNWMyOTQwMTczZDFiYzQ0MmFlYWQ0YTEzYTUxYjFiMGIzNDkgbGVnYWN5LXRydW5rCis3NDA2IDE4MDIzZTdjMzg2MmZjYzhjOThkYmE2MzJlODVlYjU0MWRhNThiNmIgbGVnYWN5LXRydW5rCis3NDA3IGIzNzg3NTM4MjVhMDkxZmVjYjk0ZTRjODdiZmFkMDA0MTViNTM5M2UgbGVnYWN5LXRydW5rCis3NDA4IGI1NmJjMjVhZWM4NTJhZDI5ZmRiZjUxNzZjNzhjOTEyM2EwYzI4MTQgbGVnYWN5LXRydW5rCis3NDA5IDZiNjE5MTJkNWYzNTliMDg0MTc5ZDU5NDgzMTJhYTdhNWY4MWRjZjIgbGVnYWN5LXRydW5rCis3NDEwIDA5NWM5ZWUyM2I1NzZjMDEzOTE4NWI1ZTFmYzgxNTUzMzA2MDQ0ZTYgbGVnYWN5LXRydW5rCis3NDExIDdkMGJmYjQ2ODJmOWFmNTIwNTA1MTBlZDgwMGQxNzc1Y2I0NjI0YjggbGVnYWN5LXRydW5rCis3NDEyIDc4OWRlN2M2NjcxMjk2NjJmMGJhNDg1NWZiNGIwYjBlMDdjOGJlZDQgbGVnYWN5LXRydW5rCis3NDEzIDcwZGI0YmUxZGQ0YjI1YzEyNWViMmU5OGVhNTc4YjcyMDA0ZDJkYmIgbGVnYWN5LXRydW5rCis3NDE0IDIxN2NmYjYxOTliZTExOTYxMGMyMjRjY2IyYTgzYzhhZWNmMzYzMmUgbGVnYWN5LXRydW5rCis3NDE1IDVlZWQ1MTc1MDI4NDE2MzA0M2JlMjk3NzllYWNjYjU5MDFkZmZlNzkgbGVnYWN5LXRydW5rCis3NDE2IDMzZTMzYmE3ZjQyMWFlN2Y5NmFjMDEwMzQ4MTYxMDFlMGE4NTUyMjkgbGVnYWN5LXRydW5rCis3NDE3IGE1MjBjNjg0Y2U4ZGMwMGNiOTMxMWUzMDE3MzQ5MjFiZjkyMDg1NGYgbGVnYWN5LXRydW5rCis3NDE4IDU3YWVkMTZlMjE2NWM4YjJjZjg3NTE2ZWNjMWQ2YjVmMGY2YjEzMGMgbGVnYWN5LXRydW5rCis3NDE5IDUyOGMzMTljNmU3ZmYwZGYxYjkxNzNhYmM4ODg5YmJlNjAzZmRjODcgbGVnYWN5LXRydW5rCis3NDIwIDYxMThjYTUxNDA0ZDg2MDJmZjkwOGJmZTlkZDNkMmExNjJjODY3NzkgbGVnYWN5LXRydW5rCis3NDIxIGJhMTFiNThiMmIwYTM4YzBjN2U5ZDIwMjQ3ODQ5Mjk3NjY2N2RlZmEgbGVnYWN5LXRydW5rCis3NDIyIDc4ZDg4MDA0MzEyOWUwNzQ1ZjI1MmUzNDU1ZDlmYjBiOTNmMDM0OWIgbGVnYWN5LXRydW5rCis3NDIzIDU2OTM0MzRlYTUzOGM4OWZkNTM1Y2IxOGRlOTk2NTM4MmJlZjQzZDUgbGVnYWN5LXRydW5rCis3NDI0IGNhOWFhNDc0MTFkZTRiYTI5MDk4NzYxNjFhYjAxNzI4ZmQ4Njk3YzEgbGVnYWN5LXRydW5rCis3NDI1IDE5ZDgxOWIxNmI4MjUyYTAyMTI5M2IzYzRhMzMwMGVlNmFhNjE2N2YgbGVnYWN5LXRydW5rCis3NDI2IGRhMmFiYmY5Mzg3YzYxZWJjYTE1YzljOGRlNThiMDJiMzIxMjFjZGIgbGVnYWN5LXRydW5rCis3NDI3IDA1ZmQ0MzJkOWUyYjY4ZDhlOTJlMzQyMTM0N2YwNjgxMDU3M2JhMjcgbGVnYWN5LXRydW5rCis3NDI4IGRhNGE0OTdiZWEzYTk0ODM5Zjg4NWYzMzcwNGVlNzg0YmZhYzA3NzQgbGVnYWN5LXRydW5rCis3NDI5IGIxZWNkYjJkYTI0MDA1NTE5ZTE5Njk5YTRlMjM0NThhODZhMWMwOWYgbGVnYWN5LXRydW5rCis3NDMwIGU2Yjc5N2FhYTY5ZjdkMjA1YjUwZTg0OTE2Yzc5M2E1YTIzNmZiMWQgbGVnYWN5LXRydW5rCis3NDMxIDczMzI1MDE5YWQzOWZmNWJmMWRlNTFjMTNjZjNhMTE1NWIyMjY5NDUgbGVnYWN5LXRydW5rCis3NDMyIDlkNThkMGU5ODc3ZTZlN2FmMmEyYjk3YjA1ZWFmMjEzMjM3MmQyN2UgbGVnYWN5LXRydW5rCis3NDMzIGNlNDM4ZDM2ZDRmYmYxMWQ0ZDdmNDU3YWFkY2FkYWRjNDdhNDY1ZGYgbGVnYWN5LXRydW5rCis3NDM0IDg5ZDA3Nzk1ZmQ2OTRmZTQyNTI3ZjJmNmM0YWYwZDcyZjI0NDBmZTEgbGVnYWN5LXRydW5rCis3NDM1IDM4ZjllNDZkMjMxN2I1MTA3M2I2NWI3NmViYzhjNWE3MTNkZGJmODAgbGVnYWN5LXRydW5rCis3NDM2IDVlNjMzMjJmNGMwNjEzYjgyZDMxODQwOWY4NDc0YTU1NzQyYjJkMjggbGVnYWN5LXRydW5rCis3NDM3IDc2NWQ5NjJmNDQ0OTgyNTY2ZmFlMmM1YTllODE5MDdlZjAxMTljMjcgbGVnYWN5LXRydW5rCis3NDM4IDVkZWQyYmMxOTA4YjM2NTcxYjEyOGE0YTk5YTk0NmViMDhkY2E4MmYgbGVnYWN5LXRydW5rCis3NDM5IDZjZTYxZjIxMmMzZTdmMDAxZjEzZjU5N2FkYzY4MThjZDk5ODIwMWYgbGVnYWN5LXRydW5rCis3NDQwIGQ4NGNhMTk3ODY4YjM1NDcxYzNhNTdiYjEyZTYzMDg3NzgzYzIwMmYgbGVnYWN5LXRydW5rCis3NDQxIDliYmQ1N2QzNjA5ZmJiNDEzM2NhMGI0MjIwNTFlN2E4ZjMwNjNhZTEgbGVnYWN5LXRydW5rCis3NDQyIDM3MDVmNzVhODM1NWUyMzY1NDRkY2U3MGI2ZjM0YzQyNDYwZWQ5NjggbGVnYWN5LXRydW5rCis3NDQzIDNkMzJkYTM3ZDYyN2Q4YmEwMjIxNjBhYjRiMzg0MWM3MzFhMWU1YWQgbGVnYWN5LXRydW5rCis3NDQ0IDBmMWFlNjJkZDNiODdlMGExNzE4MGZkZDNiZTA0YzAwNDkxY2UzNTkgbGVnYWN5LXRydW5rCis3NDQ1IDgwNTQ4N2Q1MDYyMGI0ZjU0NmUxYjhkMTMwOTc1NzIyOWYwN2VlMTkgbGVnYWN5LXRydW5rCis3NDQ2IDhkOGM3NmExZDI1MDQwNjJlMWZmNzIxOTU0NmU4ZTkwN2Q4ODA1M2QgbGVnYWN5LXRydW5rCis3NDQ3IDZlY2U1Y2ZiNDlmZmRiM2ZkYjQzZDM3N2I3ZTRkZjliY2I5YzAzM2MgbGVnYWN5LXRydW5rCis3NDQ4IDdkNzNjZGMwMTE5ODJhNWU3MWNjZGJjMmUwZGRkZmMyMmFlNDc3ZDEgbGVnYWN5LXRydW5rCis3NDQ5IDM5NzQ1NTc0YmYwN2FmYzZmMThiMWU0ODhmOThlYzgyNDViODYwOWQgbGVnYWN5LXRydW5rCis3NDUwIGI0YTQwMGIzNTk1ZTI0Y2U5NDhjODQxYmFlMjhmZGYxNzY3ZmJhMDMgbGVnYWN5LXRydW5rCis3NDUxIDJlMjk0NWQ4MTYzYzY3MTcyODM4ODc1ZjE5MjM3ZDAxM2MzZDAwNjEgbGVnYWN5LXRydW5rCis3NDUyIDliMTY5NDM5MDgyMGRkMDQ0MmFkY2ZlNWRjYmRmYjA2OGM3MzhlNTkgbGVnYWN5LXRydW5rCis3NDUzIDQ3ZWUzYjRlMmQ4MDMzY2FjZDk5ZDYzNTI4YjRkNjQzYzI2YTYxMmQgbGVnYWN5LXRydW5rCis3NDU0IGI4NjRiNDE0YzQ1N2NkOWU0NDU2MDVlNWEwODI3NmY0MmY3ODliOWMgbGVnYWN5LXRydW5rCis3NDU1IGE4ZDdiZmVjN2M5MmI3YzE4YWM5ZWM4NmM4ZDI0ODBkOGE5YmNkYmQgbGVnYWN5LXRydW5rCis3NDU2IDk5NDM3NmFmOTA2NGQzMGYxZTgyZmE5OWIxMTQ0NTZjMDNlNTA5NzcgbGVnYWN5LXRydW5rCis3NDU3IGI1ZTdmYzhiZjkxOTYzNjhkYzMwZjI3ZjJjZTg0ODdiYTgyZWRkZDEgbGVnYWN5LXRydW5rCis3NDU4IDY2Y2JiMzdiNGMwYmQ2MDA1MzE5NDgxOTQwZjc2OWE2MzQwMzhjMWYgbGVnYWN5LXRydW5rCis3NDU5IDc3Zjk3MDA3NjgzMTQwMjc2MDNhMzJjZjA5MGRlZGMxNGVjZWJhNjIgbGVnYWN5LXRydW5rCis3NDYwIDQzMDliYzk3ZWNjNmE4NzY5ZThhNmRkYzBhYWM2MzlhMTc1MjlkZTYgbGVnYWN5LXRydW5rCis3NDYxIGQ4ZDU2M2JhZjg3NDc4NjdjMDcwNDljZWExZDA3M2IzZDQwYTVhNDEgbGVnYWN5LXRydW5rCis3NDYyIDFkZWQ5NDM4ZmE1MTVkNzczOGEwMDJjYzBhMDJmNzNkNzMwOTg5NzEgbGVnYWN5LXRydW5rCis3NDYzIGRmMzg1Y2MwZDJlMzg3MGVmZDg2MmQ3ZDdmNDlmNTczYTI3YjcyZjQgbGVnYWN5LXRydW5rCis3NDY0IDY1MTQ4ZGVkNTEwODRkYWZkNmNiZDQzYmI1MDM2MDAwNGVmNTE2ZTkgbGVnYWN5LXRydW5rCis3NDY1IDZlMTdlZjVhMjZjODk0NGE4NGIzZTM2YWMwNDg4OGZjYjhkMmJhNzggbGVnYWN5LXRydW5rCis3NDY2IDgyNzY5MTZlMWVhOGRjZGU1NTg3YzM4OGE1YzgzYzM1YmI3NmNmYmIgbGVnYWN5LXRydW5rCis3NDY3IDExYmFjYjhkNzMxYWQ2Y2FkZGNkMGQ4OWM1ZTAxZDBiNTllMzZkYTEgbGVnYWN5LXRydW5rCis3NDY4IGI4MmQ4NDdiM2RjYmNjZDYzZGUwNzVlMzg3OWE5MzY5ZGZiMzRlMGQgbGVnYWN5LXRydW5rCis3NDY5IDliYzY1MmU5ZjJiNDZkMjkyOGIwMzAwM2YwOGM3NWI4ODE0NzkwNTcgbGVnYWN5LXRydW5rCis3NDcwIDI2N2VkNDgwZWMxYjg0YzFkZTA3ZmE4NjdmMGRiMjZiNGM3MTUyZGEgbGVnYWN5LXRydW5rCis3NDcxIDhkZTFmNmIwN2RmOWNkN2RjMGZjMGI0NmU3MmQ3ZGMwZDA2YzNmMDYgbGVnYWN5LXRydW5rCis3NDcyIDU4YmJhZjI4NGFkNjZlZjBjZTdmNDgxOGQwNDA1YjMwYWI2Y2U4YTggbGVnYWN5LXRydW5rCis3NDczIGNjNGJhNzIxNGIxOGY5OTdlOTlkMDcwMzEwMGM4ZDE0YmM5ZTU4N2UgbGVnYWN5LXRydW5rCis3NDc0IDQ2ODEyNGExNTYwYTJkMmViYTNmNDRhNjA1MjE0ZWMzYWUzZGViNGMgbGVnYWN5LXRydW5rCis3NDc1IDdjN2ExODZiNmQ4NmIyYjIwMzA1MDczMTVkZmUwOTk0ZWU2NjViMTkgbGVnYWN5LXRydW5rCis3NDc2IDE3YzdhMTMzY2NmNzExMjVmZDI0NThkNGE0ZTU2NzU3MGM3MmI3ZWEgbGVnYWN5LXRydW5rCis3NDc3IGFlM2I0NmE3Mzc2NTdiM2Y0NDBhYjc1NmRjYzE2NWI3MGRiZWU4ZWUgbGVnYWN5LXRydW5rCis3NDc4IDY1YWFjZTIwMTJlNTJjM2YxOTQ5MWU4OWMxODQyMjkwZGRkMWIxZjEgbGVnYWN5LXRydW5rCis3NDc5IDRjOGU0ZTkzMTFlNGUwZTUyZTUwOTJlY2JhZDFiYTI2NGZhNDlmZjUgbGVnYWN5LXRydW5rCis3NDgwIGYxN2JhY2U0OGRkNjhhMmM4MGY0NGMwMTE1ZDNhYmE3ZDI4Y2EwOTcgbGVnYWN5LXRydW5rCis3NDgxIDVmNGIyM2UzZDk3Y2IzOGQwYTkzZGFlNDE4Yzg4Mjk1NDM1YzVlNmEgbGVnYWN5LXRydW5rCis3NDgyIGU0ZjdjMzMxYmIxYTJmZmYzZTM1OGZiZTk2ZmJiOTg0ZTdlM2ZkNGEgbGVnYWN5LXRydW5rCis3NDgzIGY1NWU4MmUxZTU2NThjMGZlNDYxZjQ4Mzc1NTBjODMyMTc0YjJiMGIgbGVnYWN5LXRydW5rCis3NDg0IDQwMmUzNmM4M2QyMDI5MDBhMDIzZTE2MDVlYmRhZGJkYTM2YjdlMjIgbGVnYWN5LXRydW5rCis3NDg1IGYwY2Y4ZDI3NWZiYzE3NTE0MjhkMGEzM2VmMWUzNjM3NDg5MWJhMDAgbGVnYWN5LXRydW5rCis3NDg2IDY4NDBmZjg5ZDI0YTFmMTlmYzMyOGU1MWEwMTY1N2NmZTJjZDk3NTUgbGVnYWN5LXRydW5rCis3NDg3IDc3ZjljMjVlMWYxZmNhY2M5M2YyZTYzYjBjYmJjMmI3MGE0NzY1ZmYgbGVnYWN5LXRydW5rCis3NDg4IDRjYTRlNTRjOWNkODM3NmRmMTQxN2VlMjljNjNiZmI3OWRhMjVjZjkgbGVnYWN5LXRydW5rCis3NDg5IDBiZmFjODlhZmM4M2ZkNmIwYTkyOWI4MmI3NzJiODE4NTIyZTI0NGMgbGVnYWN5LXRydW5rCis3NDkwIGIxZTJlZWE2NmNiNmNmZGMyYTVlNjQ2OWU1NTMxNDdjZDFlZTQ3ODQgbGVnYWN5LXRydW5rCis3NDkxIGYxYWYwOTdhNWU1ZDc5MGMyYTZiMDZjYWQwMDA2NGM0ZDI2MTNlMDIgbGVnYWN5LXRydW5rCis3NDkyIDEzZDM4ZWI3ZTIyNWQxODM1NGNhNGE2N2E4NGE4ODA4MjZhNTExNjggbGVnYWN5LXRydW5rCis3NDkzIDAwMWE1MDQyYjE4MWE3ZGFiNTRiNmNkMTBlZDEyNzJiYjYyZDZiNzAgbGVnYWN5LXRydW5rCis3NDk0IDI4OTM1NjA5ZGZhZWE2NGFhMDZiOTZjNWU2MDQ1Njc5MDJkNzQ0ZTAgbGVnYWN5LXRydW5rCis3NDk1IDBlY2E5ZDVmN2IyZDRiMWEwN2NiNjQzNDUyNWE4YjliYzczZGQ1ZjggbGVnYWN5LXRydW5rCis3NDk2IGMyMmFkZDM2NDM1MThmNmM0ODBhNmY0NjcxNmZkYTBkN2UyYjVjMDUgbGVnYWN5LXRydW5rCis3NDk3IDYyNjQ1Nzg3ZmJjOGQ5MmNjMjljMmE3NzE3OGM4OTdhYTMzMDVjMDkgbGVnYWN5LXRydW5rCis3NDk4IDc1YzFlZTg4MmE0YWQ0OGFkNmY0NWViOTY4MmY0N2QwMjFhMDYwZTYgbGVnYWN5LXRydW5rCis3NDk5IDdlNTE5MDk5OTYzMzJkYWIwNzYyOWU2MjgwZWViMDFlZDU3ZGM4MjggbGVnYWN5LXRydW5rCis3NTAwIGJmZjhmNWFmYzY3ZmVjNjQxZThmZTMwZjJmNWUxMTc3NWM4OGM5NWMgbGVnYWN5LXRydW5rCis3NTAxIGI1YTFiYjJkMTdmYWQ0MzYxMzM2Zjk1OTRhN2RjMTIwZWNkNTFlMmQgbGVnYWN5LXRydW5rCis3NTAyIDBlYTRlYTViMmViNzNmZWE4ZWVhMjhkMTA1YjZkODJjZDNlYjYzNjIgbGVnYWN5LXRydW5rCis3NTAzIDA2NzdjNzdhYTcwZGYxOWViNDk2YzMxY2MzZGVjY2I1NGQ1ODM3MGUgbGVnYWN5LXRydW5rCis3NTA0IDNmMDM3ZWU3NzMxYmUzMjM4NTZlYzQ2Nzk5MmVjMTVkODk3ZDFiYTcgbGVnYWN5LXRydW5rCis3NTA1IDAwYzNjYjEwN2U1ZjI3ODgwNmM0ZDJjMjY5ZWQ4ODdmMzEwOTMxYjkgbGVnYWN5LXRydW5rCis3NTA2IDAxN2Q3MjU0NGRmMmJlYzUzZmQ5OWMyNDBiYWZiNWViYWM2YmI0YWMgbGVnYWN5LXRydW5rCis3NTA3IGJlMzFlN2UxOTI0MWIxZDVlNWVjZmQxYTRmNjQxMTE3N2ExYmUyYWMgbGVnYWN5LXRydW5rCis3NTA4IDViN2I3MDNkYWJmYTA3ODNiOTFmMDE0ZWIwMzFjMTkyY2NkYjk2MDMgbGVnYWN5LXRydW5rCis3NTA5IGRlMmE3NWM3ZWE5ZmY0Njc3NzdiNjBmOWQ5NzhiNjEyNDA3ZWYxNTMgbGVnYWN5LXRydW5rCis3NTEwIGEwZTYyZDg1ZGU3N2ExNTBlMjc5N2IxZGQ4ZDgyNjk2ODYzZmYyNDIgbGVnYWN5LXRydW5rCis3NTExIDY5NzY1ZDY0MzFlMWM0YTkzOGFiYzEzOTE4MzE0Y2VkMzIzYTYxZmUgbGVnYWN5LXRydW5rCis3NTEyIDlhZDdiOGMzNmM3OTQwNTIzMWQwYWJiZjcxY2RmMTgyMjFiNzc2NTIgbGVnYWN5LXRydW5rCis3NTEzIGE4MjBkZWFkMDZlNjc2MmZjNzhiNmIxMmI2MDdhNjM4MWExZWUxYjQgbGVnYWN5LXRydW5rCis3NTE0IDM4MDMyMjY3OTY4YzAxNzJiYTZmOTRhZmEwOWU2YzRhNzQyMmMwMGQgbGVnYWN5LXRydW5rCis3NTE1IDg3NmU1NzM2NGM2MjM5OTVjZmE1ZjQ1NTUyMDYwZTQ5MmNmNDQ3NmIgbGVnYWN5LXRydW5rCis3NTE2IGM0OTc5MjliMjM3MTE1YTJjMWQ3M2UwNjI1YTM2N2UzMzdjMTRmYzYgbGVnYWN5LXRydW5rCis3NTE3IDliN2UwY2Y1MTk5MDVhYzQ5MTk5ODExZjEyZmU3MmVkZTFkNGMwZGIgbGVnYWN5LXRydW5rCis3NTE4IDEwNGE2NDZmYzdhNjdmMjdkZjI1ZDRlOTQxYjIwMDM1ZTU4NzZmOWYgbGVnYWN5LXRydW5rCis3NTE5IGVlM2FjOWUwYTAzMjI5ODYyZDE5MDU2YTY3NDNiMTkzNGEyNTBiNjkgbGVnYWN5LXRydW5rCis3NTIwIGIxZDgyNjk3YzBiMjM2Njc0ZDBlNjFjMGVmY2IwYTkxMWU5YzcyZGQgbGVnYWN5LXRydW5rCis3NTIxIDY1ODgxNTIzMDU0NmE0ODkyYzJhZTUxOTQ2OGVkYjQ4MjcwODc4ZmUgbGVnYWN5LXRydW5rCis3NTIyIDdhOWNhYzdjYjkxMDlmNDczYWNkZGQxYTlkMjNlMjY4YWQ5NWUwY2MgbGVnYWN5LXRydW5rCis3NTIzIGZkZTczNDY3YjU4NDdiZjVkNTIyNGU2ZDg1NDIzMjNkOWE2OGQ3NjUgbGVnYWN5LXRydW5rCis3NTI0IDk0NmIyYjJhNzYyMmZhMTdhZDQyNDgyODM3NmE1ZTg4YTdhMDEzYWYgbGVnYWN5LXRydW5rCis3NTI1IDg1NzllMzQ0MWQ5YmM5OTk1ZDk4ZThiZjI0ODUzZmVlNTViNzU0NTIgbGVnYWN5LXRydW5rCis3NTI2IDdmNmQxOWZjNWFjYWNmYzg1NGE3M2JjY2RmMmEyODlkYTZjMTM4N2QgbGVnYWN5LXRydW5rCis3NTI3IDc4NDFjNDhjZGI1YjQ5NjdkZGE2M2MwMGFmYWFkZjg1M2MzYTM1NmUgbGVnYWN5LXRydW5rCis3NTI4IDIxOWJkZDhhZmIzOGVmMDVhYzQxN2U3MjhiNTkyMjhjNzQ0NTg5NWEgbGVnYWN5LXRydW5rCis3NTI5IGU5YzQ0MmQwOTM2ZmI1YzNiOTIyYzdhNTk0NGM1ZTlmZjZkOTI2OWEgbGVnYWN5LXRydW5rCis3NTMwIGY1N2UxODFmZjYzOGZkYjFjOWEzNjk2N2EzMGI0YzhkY2IxOTdkNDggbGVnYWN5LXRydW5rCis3NTMxIGU2MjljODhmM2RkODA3NzNiZmVjMTMyZDMxNzYyNTBmYjhhMTY4YTIgbGVnYWN5LXRydW5rCis3NTMyIDZjN2E3NmZkNWRjMWU5MzIwZTIxNzZmZDA3MTc5NWE0MTliMGE5MzkgbGVnYWN5LXRydW5rCis3NTMzIDM3MTQ2NGY2NjY2YjY2ZDdmMWRkNWY0NmRmYTE2MTkxM2U0NzM5OGUgbGVnYWN5LXRydW5rCis3NTM0IDE5MmQ1NzFjYzQ2MTVjZTY4NGFmNDE4MjNhZmMxODA3YzE1NzlhODkgbGVnYWN5LXRydW5rCis3NTM1IDVhMjMyODcwY2NlYWI1ZjNjNGY1YzliMWU3OGNlMTVlMWZiMmFkODEgbGVnYWN5LXRydW5rCis3NTM2IDM0NmZmOWJhOWQzNjM3MDRjYWMwY2NhMGMzYzEwM2I4NjcxNDE1Y2MgbGVnYWN5LXRydW5rCis3NTM3IGQ2ODE2MzFkOTkyZjIwMWI0NDE1MThhZjIyYzAwNTQ1NGQ2YjYwZTUgbGVnYWN5LXRydW5rCis3NTM4IGYwNzMxZmE0NDQ3ZjUyNjJmNTUxNzgzYzZhOGNkY2FkMDQ4OWIwM2UgbGVnYWN5LXRydW5rCis3NTM5IDdkZGVkNzg1MWZjYThjNGI0NjY3Nzg0YWE5NzI5NGEyOTc1YTBhNmEgbGVnYWN5LXRydW5rCis3NTQwIGI2ZmNlNzI0M2JhMGJhODk2ZjA3ODIyNzI4YzU1MDIwNmQ3MmU5ZGIgbGVnYWN5LXRydW5rCis3NTQxIDc3NjE2YjMwMDFlZjhmN2UwOWM0NjM5YzM2YzI4NGRkOTcxZGVlM2EgbGVnYWN5LXRydW5rCis3NTQyIDRhYWNhNDJhMmExNmM5NTE3NGIyZmZmN2E1YzNkNmNhZWY4NWI4NzkgbGVnYWN5LXRydW5rCis3NTQzIDhlY2YyZDdjOWZiMWFkYjQzODVjZjdkMGZkYWY0NDMxMmJkMTI0MWIgbGVnYWN5LXRydW5rCis3NTQ0IGZhMzE0NzZhMjc4NmVlOGY1NGQwZTVjMDllNWVkMDE3ZmViMTE2ZTcgbGVnYWN5LXRydW5rCis3NTQ1IGViMTJmNDA0NmQwYmUwZjBkZjY0ZjZmODBjNmJlNTEwMjE2MjkzMTAgbGVnYWN5LXRydW5rCis3NTQ2IDQ0YmRmMGI1NmMwYmQ4MzQxNDM0Y2NmOGI5YTIzNzA4YTIyYTBlMWUgbGVnYWN5LXRydW5rCis3NTQ3IGQyNDgzYzI3NzQyYzE1NGNjNDYyMGRmNTNlNjg5OWU5YTE3ZTc2NzIgbGVnYWN5LXRydW5rCis3NTQ4IGUyMWYxZDI1OTVkZThiOTliODBhZGRhNjg3MmVkZmRmY2UwODQ0Y2EgbGVnYWN5LXRydW5rCis3NTQ5IDMyNzNhY2JlNDc2ZmRhYTVmYWI4OWY2YTIyM2E5MmQxMzE5ZmNjZmUgbGVnYWN5LXRydW5rCis3NTUwIDViOWQ0MWY0YzA4YzExNWY4MzgzNWJhMThhMTc5ODVkNzg5YTdjYzQgbGVnYWN5LXRydW5rCis3NTUxIDRlZGFiNDc0OTc0Y2UwNzc2NzA2NDcyYTIzZTc5YzNlOTRmNGU0M2EgbGVnYWN5LXRydW5rCis3NTUyIDIzYzRjNzgzOGFjMmFiM2E2Njc1YzFjYWNiNzFjMDBmMTI3MDFhMzAgbGVnYWN5LXRydW5rCis3NTUzIDdmNGIzMmU4NjU0NTU3MjUyYjY3YWZlMmRjOWViZjMxZTE0NDM4YjcgbGVnYWN5LXRydW5rCis3NTU0IGQ2YjI5MmEzM2NmZWY1M2M3NWVhNDlmYzI3Y2JiZDhjOTk1M2MwNDUgbGVnYWN5LXRydW5rCis3NTU1IDlhOGFkYWY1OGNlODYwNzZiNjg5MzU1Y2QwZGI1MGI3MmQ2ZDE5NjcgbGVnYWN5LXRydW5rCis3NTU2IDFiNjE5YjgxMWMxMDM1YTgxNTIzYjYwYjM0OGQ3MDc1ODdhNDc3ZmEgbGVnYWN5LXRydW5rCis3NTU3IDJjODgxMmVlYTYzNzk0MTU1NGE0YjY1NmQ0YTllMTVhY2MwMjIwMGIgbGVnYWN5LXRydW5rCis3NTU4IDdhYjFhYTA4ZDM0OGRiMGNmYTdhMzUyZGQ5ZWE0MzU5YjM4ZDFmMTEgbGVnYWN5LXRydW5rCis3NTU5IGFmYzNlNGUwODc0MGI2MzhhY2M1NDAzM2ExNmEzM2JjMTU2YWZhMDQgbGVnYWN5LXRydW5rCis3NTYwIGQzNzA2NTc5NDY4ZTUwZDZhMWExMTEyNTcxODFmNjE0NTEyMzQ3YzIgbGVnYWN5LXRydW5rCis3NTYxIGFhNzNkYTY2MWNkZmZhZTA5YWY5MzNlMmVjMjE0NzM0MTkyYzkwNDIgbGVnYWN5LXRydW5rCis3NTYyIDZlZDhlYjRiNjY0YjMxYmUxODg4M2NlMzVlMTMyZTMxNmNlZDczZmEgbGVnYWN5LXRydW5rCis3NTYzIGU0MjhkMmNmZWQ0MGIzYTljZjY5OWE2MWQwMDk4OTgwZWVhNjRkNmMgbGVnYWN5LXRydW5rCis3NTY0IDkxZjg2MzA2YjA3Yjg1ZmFiZGY4ZjU0NmFiOGE4MjVhOWVhMGU4MzcgbGVnYWN5LXRydW5rCis3NTY1IGI2N2MwMmJkNWUyMzYwZTQ4ODk5MzY3NDhkZTYxN2IzMTNiNzAyMDEgbGVnYWN5LXRydW5rCis3NTY2IDNmZWVjODViYmE5YjYzOTlmNDQ1ZWQ1MjNiM2I1N2M0MDRlMWQyYjggbGVnYWN5LXRydW5rCis3NTY3IGNiN2FhZGQ5ZDlmMjkyNDg0YWVlNGUwNjRlZGYwYWUxNzlkYWRkODEgbGVnYWN5LXRydW5rCis3NTY4IGQ5OTZkYzQyZmU2NDE1YWQ4MjA5NjcyYThjNjczNDZmYzQ4NGI3NDYgbGVnYWN5LXRydW5rCis3NTY5IDM4YWRiYjM5ZjE1Y2Y1Nzc5NTkwODQ5OGYwMmFjNDQ1N2VhZDBjNzggbGVnYWN5LXRydW5rCis3NTcwIDExOTIyYTJlY2FjZGU0ZDgxOGM0NjIxYTZlMjY4MzFlMzhhZjM4YjggbGVnYWN5LXRydW5rCis3NTcxIDMwYzEwYjIyMjk1MzE4ZWE5ZTY4N2JhYjViZWI0N2Y2MmNlNDE4MDAgbGVnYWN5LXRydW5rCis3NTcyIDU3YjdhMDNhMzI1MmMwZTUzYmE3ZGYyOGI5ZjI0MjZmYjkyMDZmZmIgbGVnYWN5LXRydW5rCis3NTczIGE0NDU4NmJkOWZhYjNmNzA5NWE0ODM3MGQ5MTZlN2VmYmNiYzJhYjEgbGVnYWN5LXRydW5rCis3NTc0IGI0MjMxZDU5MjI4MWYyNWIwYTU5MWI2MzMwYjg5OTM3OTQxN2VmNDYgbGVnYWN5LXRydW5rCis3NTc1IDMyMzEwMjUxZDc2NzQwODY0OThlMGI2NWNmOGRjMDNkYTI5OTYxYTAgbGVnYWN5LXRydW5rCis3NTc2IDI0OTdjOGIwNDEwMTdjOTY2ODZhZDEzMjBiZGIxZTc5NDJmOWEwNTAgbGVnYWN5LXRydW5rCis3NTc3IGVlNzBiNGM3MTg5OTNiNjBmZGFiNDNkMTllMzgxNWY3NWE1OGM5MGEgbGVnYWN5LXRydW5rCis3NTc4IDQ5MmMwY2FlMWYwNTIyOWIxMTZiYTdiZDEwYzkyYzZlYjI0Zjk4ZDAgbGVnYWN5LXRydW5rCis3NTc5IDQxMDlhMTcxYzkwMWE0MWY4YjM5MWRlZjNiMDFlNDI5MTk4OTFmMWEgbGVnYWN5LXRydW5rCis3NTgwIDAwZmQ2ODU3Zjc2YjkzOWM1YjllYTAwMGQxY2Y4M2Q2YTNlNjFmNTAgbGVnYWN5LXRydW5rCis3NTgxIDk0MDgxMzExNWY3NzViODYyODhjZmNkYjA4MDczMDZkMWUzYTgxOGMgbGVnYWN5LXRydW5rCis3NTgyIGY5YjQ2YjUwMzc1MTlmNDQzMzM3NDJhMTdiZTc0ZmUzODYyNGExMzEgbGVnYWN5LXRydW5rCis3NTgzIGE5YTZkNDE2Yjk0NWI3OTg5MjE3YmM4NDkwZDU4MGRkYjQzNDk4MjMgbGVnYWN5LXRydW5rCis3NTg0IDBiYmY5Nzg2MWNkOWExNjA0MDY1MDAxZTFkMjJiNjJlNjE0MmI4NjYgbGVnYWN5LXRydW5rCis3NTg1IDA3M2YxYjNhZDlkMmJhZjQwYjRjYmYwMmI2ZDAyNTgxMjgyYWRjOTcgbGVnYWN5LXRydW5rCis3NTg2IDIxYjg3MTMyNWM4NTM0ZDFiMjg3YmE5MDc3ZmM3NjY0ZWM5ZmRlYzEgbGVnYWN5LXRydW5rCis3NTg3IGNhNjM4OGJjYzA1YTVkOTI4YTYyNjM3NzIwNDNjZWFlMGRkYWRlZGUgbGVnYWN5LXRydW5rCis3NTg4IGZiOGNlZmNlZmQ4MWVhMzY5MGEwMTM2MzllZDExODlmOTQwNmRkMTIgbGVnYWN5LXRydW5rCis3NTg5IGI5Y2UzY2M1MDA3NjcxYTg3NDFjZTY1YTM0NjI1MjI5MWQxMzMxNjMgbGVnYWN5LXRydW5rCis3NTkwIGUzYWI0ODk4OGM3Nzk4NTNjMTFiNWRiZWJhOWE4ODdlZGM3MTZlZTQgbGVnYWN5LXRydW5rCis3NTkxIDUwNjY2NDc2NzczNmVmYjQwMjBlN2NlY2RmNmIyYzk3NmYyZDE4YTkgbGVnYWN5LXRydW5rCis3NTkyIDJiYjBiZGExNTg1YzdmYTU0OTczNWEwOWU1MDJkMDhkZTVhZWRlMzIgbGVnYWN5LXRydW5rCis3NTkzIDAwMjg2NWFmNTVlNWI1OGM4YzMxMWY5MDZhNmZlNDAzNTEwNDViNTMgbGVnYWN5LXRydW5rCis3NTk0IGJkYTAxYTM3NDc2MjI1YmFmODAxY2YwODExNDc1M2Q1ODBhODE0ZWYgbGVnYWN5LXRydW5rCis3NTk1IGE0OGYzNjc4ZjllMWE4ZGU5Mzk0ZmRiMzBmNDI2ZGEyNzg0MDE2ZWUgbGVnYWN5LXRydW5rCis3NTk2IDJlNmViMWM3MTVjZTVhYzFlNzk0MzUwZjMzYmY3YTEyNWFhYmU3MjUgbGVnYWN5LXRydW5rCis3NTk3IDU3YjBmMTYxOWUyODI0MDQyYTdjMWE1ZjM2NzY4Mjk4ZTRiMjhmOGMgbGVnYWN5LXRydW5rCis3NTk4IDA1ZmZmZDU1YjAxNGMwMTUwYjAyYzllMTA1YTExODIyMmIzMjZlYWIgbGVnYWN5LXRydW5rCis3NTk5IDE3MTU5MWIzOWY2MzJlZDBiNDViYmFjMTZkY2M4OWUxMDc3MDcyN2IgbGVnYWN5LXRydW5rCis3NjAwIDU0YTlhZGNhMjE1YzZlMGIxYTc0NWJiY2E3NWQ3NWJkM2IxMDJjYWMgbGVnYWN5LXRydW5rCis3NjAxIDdiOTQwZjI5NjIxYjg1ZmI5YmRlNWE3YTU1MDNhZDNkNmJiY2ZlMjUgbGVnYWN5LXRydW5rCis3NjAyIGYyMjIxMzE5MjUzMTYxMGM3YTQ2YjQ3NjNlYWM3ODdkNDg0ZDkwNjkgbGVnYWN5LXRydW5rCis3NjAzIGJmMWJkNjRmODVlMDFmMjllYWE0ZWMyN2I1NDdmYWZhYjU3Y2M0YzIgbGVnYWN5LXRydW5rCis3NjA0IDEwMmUyOTEyZDBkMTc3NmE3NjJmMmZkM2Q4ZGQyOGFjNDlmOGIyMDMgbGVnYWN5LXRydW5rCis3NjA1IDBiZjczOTRkYmEyMjA1YjAxNTQyMzIxN2M2NWMwNTczYzk3ZGVmMjIgbGVnYWN5LXRydW5rCis3NjA2IGVjNDUyNzZhNmRhZGI5YmUxM2RiY2E1YTUyMGMzMDY0ZGQ5Y2I4YWEgbGVnYWN5LXRydW5rCis3NjA3IDBmYzFkYWNkYWZkNzM4YmRlMzc1MjJmODlhZDhlZWZlOWJiOTA2NDYgbGVnYWN5LXRydW5rCis3NjA4IDY2NjE1MmI3NzAyNzEwOWYzM2M3MDI4ZDM4NWM3ZmE0OWI4YzBmNGMgbGVnYWN5LXRydW5rCis3NjA5IGRlZjAzZDNiOGRkYmY4YmQyMWY5MmIxZDhlYjgyMzljNzM3MDhmOTggbGVnYWN5LXRydW5rCis3NjEwIDdmYTlhNjQ0NDgzZTgyZTliMzFkZWI1N2FmYjY4OWM5MWIzOTc5MjYgbGVnYWN5LXRydW5rCis3NjExIGE1MTNkODNjMDZjYjAwMWYwZDNhZmY0ZmQ1ZDk2N2FjOWY4MDVmZDYgbGVnYWN5LXRydW5rCis3NjEyIDQwZWI4YjBlZTE5MjYxYjVjMmM5MjI0YzU1MGMxYjIxMjEyN2UxZTMgbGVnYWN5LXRydW5rCis3NjEzIGY5M2VjMWFjMTdhYTcxOTBmNjA4MGI1MDQwOThmMDBmYTgxZmEyNGMgbGVnYWN5LXRydW5rCis3NjE0IDkyMTZmNWMyNWU0ZWY3OGU2NzcwYmJlY2Y4NjFjY2NlNjI1OGQ2OTUgbGVnYWN5LXRydW5rCis3NjE1IDhmYmVkNzhlODFlNzEyMTI4ODdiOWFiNzc5Y2JjMGFmNDFkZDVmOTUgbGVnYWN5LXRydW5rCis3NjE2IGE0YzhiODg3MTM3NjFmZDY2NGIwY2FlNjdmODY1YmVkOTJlMzc5NGQgbGVnYWN5LXRydW5rCis3NjE3IDhhOWYxNTc5MzIzODJlZmZmMmVmNzMzOTQ1MzdiNmY0NGQyMDg4MjIgbGVnYWN5LXRydW5rCis3NjE4IDY5NTJlYjljM2E2ZjdmMTU5OTQ2MmJlY2E3MzVkNWQwMWQ1YzMwM2UgbGVnYWN5LXRydW5rCis3NjE5IDZiMzM3ZWM5MmJkMGQwYTU2MTQyZTgwMDk3OWRkYjBmYzNiYzZlNzIgbGVnYWN5LXRydW5rCis3NjIwIDFlOTVmYWM4NGFiMzJmNjQ2NGJiYzMyY2I1ZWQ1MWVjMmNmYzY3M2MgbGVnYWN5LXRydW5rCis3NjIxIDljZWZkMDRlZTUzYTUyYjhmNjE3YWQ3NjM5YjVjMzA3N2NjN2I1NDUgbGVnYWN5LXRydW5rCis3NjIyIGIyMjdiOWFmNWY1M2RiYTA0MmZkNDM1Zjc0NzA5OGQxZDJmODc1ZTEgbGVnYWN5LXRydW5rCis3NjIzIDg5ZWRhYThlZDUwZmU3YzdjMGUwYTBmNGJjZmRiM2EyNTY1MTk4Y2MgbGVnYWN5LXRydW5rCis3NjI0IDc4MDYzYmFlM2ZkNzRiYjRmNjNhY2E1ZWQyYzZhZmU3OGRhOGE1OGQgbGVnYWN5LXRydW5rCis3NjI1IDQ2NjVlMjg0OWE0YWM3YmVjZGM5OTRjZTNjZWM4M2MyNGVmZmQyZjkgbGVnYWN5LXRydW5rCis3NjI2IDI4MjY5MjVhODQyZTI5ODZjOGIxNzA2YjNkZmJiNjNiZWE5ZjM4MDcgbGVnYWN5LXRydW5rCis3NjI3IGJkNzA4ZmUxOTM0YjNiOGNiNmE4OWE5MDBjMjU1ZjBmMmNkZDRkMDUgbGVnYWN5LXRydW5rCis3NjI4IDFhZTdlMmViYzJmMzMxYjI4OWY5N2VkOThkYTI4NGIyNjM1NzYyYzQgbGVnYWN5LXRydW5rCis3NjI5IGY2MjE5ZDc3NTQ4MWJhMTc1MDE2ZTdmM2QxZDM1M2I0YTZkYzUwNmEgbGVnYWN5LXRydW5rCis3NjMwIGI1NjZlNzcyODFjYzE0ZDU5MDFkZThmNTZiZDBiNThiMzRlNjRhNTkgbGVnYWN5LXRydW5rCis3NjMxIDQxNzQ2MmFiOGIwMDI3ZmIwZDQ0ZDEyM2M0NTI5NDc3NDRmYzRjNzcgbGVnYWN5LXRydW5rCis3NjMyIDgyOWM0Mjg5MzE4MTA0ZjBiODAyNGMwZWFiYjhhMWM4YzhhNzRkMDQgbGVnYWN5LXRydW5rCis3NjMzIDM1MWU5NWM1MWRkYjFhY2RmNTExNWI5ZGI3M2QwZDYwMTA5ZTFlOGMgbGVnYWN5LXRydW5rCis3NjM0IGVmODM1MWVhNzJjMWM2MzIzZjIzMWMwZDA4NDU2ZTVkZDQyOGI2MDYgbGVnYWN5LXRydW5rCis3NjM1IGRjMzNlMTFhMWMyOGRmNWQ2YTMzZTI4Mjk4NjAzNmUwNmZkMjgwNGUgbGVnYWN5LXRydW5rCis3NjM2IDViYjcwZDJlOWFkYWRkMThlYmExYWFhYWU5ZmJmZjQ1NzNmZDFhNjkgbGVnYWN5LXRydW5rCis3NjM3IDcxMjRlNGVlNDk5NTU3NjQ1YjA3MWI2Njc2MGNkODUwMzk2MWJkZDAgbGVnYWN5LXRydW5rCis3NjM4IDkwNjNmNjBlYTI4ZDQxOTJmOTlkNzE2M2RhNWMwODBkYjcxOWVhZmQgbGVnYWN5LXRydW5rCis3NjM5IDhjMjc3ZjI5YjUzNWUwYjIxMjUyOWZkNzEwOWI5ZTRiYjEzYmM3NDQgbGVnYWN5LXRydW5rCis3NjQwIDRkMTViZGYxZGI5YzAwNzI3MzVlNTY4ZGQ4MGVhMTczNjMwYTI3NzYgbGVnYWN5LXRydW5rCis3NjQxIDcxNTFiYjcyNzc3NjdlZDFlODdkODRiNTRiYjhjODdiNjZlMTc5NzUgbGVnYWN5LXRydW5rCis3NjQyIDYxZjg5YmViYTFhYTNjNGJmMGZkYmYxMjI5MTQ3NzllZTg4MDgwNDggbGVnYWN5LXRydW5rCis3NjQzIGRmZjNlNTA2YzllOGQ0MWY2ZmUxZGVjZjQ0NTRkOWI3MmUxOGU5OTIgbGVnYWN5LXRydW5rCis3NjQ0IDJlYTljNDI1YTc2NzdmMjI5NmFjOWY0NjYyODM5YTI2ZTMzZDAxMDQgbGVnYWN5LXRydW5rCis3NjQ1IGY1ZDcwN2NlNDIyM2MxNzNlZGY4ZTc4ZDMzNjFmNzg0ZmI5NWFkNTQgbGVnYWN5LXRydW5rCis3NjQ2IGIxZmM0ZWIyYWM1YTk0OGZiMTlhODg5ZmMwZDZlODQ2NjllOWVhMGIgbGVnYWN5LXRydW5rCis3NjQ3IDMxYjBlNWYwYmFkZjE5NjYyODcyNGQ2YTBmYjBkMWYwODUzYmUxYzUgbGVnYWN5LXRydW5rCis3NjQ4IGZmNGY4ZmE4YTI3M2EwMjkwZjJmOGIxZjk0YzA5YjQ2NDA4NTFlMjEgbGVnYWN5LXRydW5rCis3NjQ5IGM0ZTVlZjliYzM2MTI0NjE4NTYzMGQyMjE2ZWQyNWRmMjZiY2MxZjYgbGVnYWN5LXRydW5rCis3NjUwIDE5N2UzMjA2ZTNmMzA3NDdlNWFjNjVkMDAyZDg5YjI0NWFkMWY4ZTYgbGVnYWN5LXRydW5rCis3NjUxIDJiZDkyMGU3ZTVjNzg4NTg1ZTIzOWI0N2IyMDhmNGVmMTcyMGU5NGEgbGVnYWN5LXRydW5rCis3NjUyIGIxOGUwM2JhNDgxNzdmMWZhNDM2NjQ1YzZjZWEwYTRhZDZmNjk0NjEgbGVnYWN5LXRydW5rCis3NjUzIGY5NzQzNjRmM2E4N2ExN2VhMjE4Yzg3OGQ5YzliOGMwYTk3YmZlNGQgbGVnYWN5LXRydW5rCis3NjU0IDg2M2ZmYzJhYjc2YTk5NTM2Zjg3YzdhYzVkMWZmYzAyYjk4MmM5MzUgbGVnYWN5LXRydW5rCis3NjU1IDZiYzU2MjU5Y2M0Y2MyN2Y3OWJmOGFkN2NhOGQ1YTY1MjVkNWFmMGMgbGVnYWN5LXRydW5rCis3NjU2IDhhMGI4MGRjNmU3MTE0ODY5MzcyZDE1NTJiZjdhYzI3YjM2ZDExM2YgbGVnYWN5LXRydW5rCis3NjU3IGUwMzYxZDU0MjFmZjBiNDUxNGRkNTU3N2JjYjBiNDg4ZGY4YTNiYWYgbGVnYWN5LXRydW5rCis3NjU4IDYzNjc1N2U4MTJhNGM0YmZhNGJkYWNhZDBhNzA2YWRjNmYzZTNiYTYgbGVnYWN5LXRydW5rCis3NjU5IDVjZjgzYWQzMjUxZTVmNWIxZGZmMDZiN2I5Nzg5Nzc4YmEwOTEzZTEgbGVnYWN5LXRydW5rCis3NjYwIGMxNzI5ZTE0ODkxNmIzMzU1YjU3NDQwYjYxYWUzMWQ2Y2RkMTBlNzUgbGVnYWN5LXRydW5rCis3NjYxIGExNmRlY2JiOTcxNjU4NWE1ODc0OGI4ZDJhMTE3YmIyZDc3YzU1NjEgbGVnYWN5LXRydW5rCis3NjYyIGMxYTFjMzA2YTQyOWI1ZmNmYjg2MWRjNjMwN2VkYjhlYjM0NTU5OWIgbGVnYWN5LXRydW5rCis3NjYzIDNlYzNkODgwN2Y5ZTg4OTY2MmQyMTUwZjdmYWU3ZTg5NTM5MDk2OGUgbGVnYWN5LXRydW5rCis3NjY0IGJhYjkxOTZhOGYzMGM2MjQxNTc2OTYzMWE2MzIyMTYwYWM0YjZjMjggbGVnYWN5LXRydW5rCis3NjY1IGE3OWVjZDVhZjdlNWI0MTliNTE1YjllMDQwNzYxN2FjZDVhZDA1NGEgbGVnYWN5LXRydW5rCis3NjY2IGZhMGZjMjg4YjJjOTBiOTYxMGVlZjZiNDY1NDdmMzM0NGE5MGY3MGMgbGVnYWN5LXRydW5rCis3NjY3IGI3YWM3YjQ2YjEwYzAxMDViNDViNTg0YjMyZWY3ZDJjNDUwOWE4Y2MgbGVnYWN5LXRydW5rCis3NjY4IGYwZmQxMmQ3NmUwNzhmZjViYjNiZjRhOGE2ZjE3OTRhMDY5MDgwZDggbGVnYWN5LXRydW5rCis3NjY5IDUyZjNkYzQxZjZjNGZjZWJiZGY5N2ViNTc1MWIwZmU4MDFiYWQ0NmUgbGVnYWN5LXRydW5rCis3NjcwIGE4NzRmNWQzMDM4ZWRiZDRmMTkyYTQwYzM2ZmI0M2I2ZmZmN2E4YWYgbGVnYWN5LXRydW5rCis3NjcxIDhlZTgxZWY0ZTk4MmY0ZGQ2OGYwODFiNTY1NTQxOTg5MTcwMTNmOGQgbGVnYWN5LXRydW5rCis3NjcyIDc0YzEyNzA0YTBiZDBjNDllODcxYWYwNGY4ZWExYjNjMzY0M2ZlOTkgbGVnYWN5LXRydW5rCis3NjczIGUwYTYwNWU2NmJlZGFhZDhmOTVhZjE1ZGRiOGRkZGY5MTVhMTUyZjcgbGVnYWN5LXRydW5rCis3Njc0IDdlMzgwZGYwMGQwMGZhMWMzOGMwZTYyYjkyY2E5YzQ4M2RkYjQ2M2UgbGVnYWN5LXRydW5rCis3Njc1IDAyNGU3Mzg2NzRhNWNkYTc4ZjdiZGQ3YjI4YWM3NWZkNGE0MjlmNTEgbGVnYWN5LXRydW5rCis3Njc2IDU4NzhhNWFmMzE0OGQ1YmZhZmEwYzJhYWZlNjhhZDNmN2NhY2RmNDkgbGVnYWN5LXRydW5rCis3Njc3IGFmOTJkNzc5MTUyYWMyNGZmYmU3NjQ0YWExMjNiOTAwZjEyYzFjMTUgbGVnYWN5LXRydW5rCis3Njc4IDA1YzdkOGI0ZmZkNmU0ZGQ5YjNkMDBjMjYzNzE3MzE4NmI3YjgyNDcgbGVnYWN5LXRydW5rCis3Njc5IGMyNDhhMDdlNTM0MTY0YjI2MDgwYWJiOWUxMDY5YzY2ZDA2YThmODEgbGVnYWN5LXRydW5rCis3NjgwIGIzOTIwMzk4M2RlNjYxMTFkZjkzYWFjYjI5ZGNmNmM0MzM3NDQ1YTAgbGVnYWN5LXRydW5rCis3NjgxIGJkNWUyYzJjMWUwODcyYjExYTZjMDNlODU3ZjgzYjc5ZDIyZjhlYTEgbGVnYWN5LXRydW5rCis3NjgyIDAwZWJmYTMzY2MwNzYzMGVlZGE3M2EwZDc1ZDdmNTU3NTBiYTBmYmEgbGVnYWN5LXRydW5rCis3NjgzIDkzZTg3Y2FjNDgzZTViZmZkNjczODQyN2M5Yjk5NWJkMDE0NDM3NGYgbGVnYWN5LXRydW5rCis3Njg0IDJlYzljOTMzYWZiODc0NmE0MDI0MzljMzQxNmI4NjhjMjQ1ZTJkNWMgbGVnYWN5LXRydW5rCis3Njg1IGQ0YzZiNGIwNTQ4YzFiNjA0MzgwNjQzZWI3Nzg4ODljMDhlM2M1NWUgbGVnYWN5LXRydW5rCis3Njg2IDMxNGQwZDYwM2YwNmVlNGUyNzM5NmY4YmI0ZDg5ZjQ0ZDljNDJiYTcgbGVnYWN5LXRydW5rCis3Njg3IDFmMzhkNWZiM2QyMzg4MWM5OThlOWY4Y2ExODBkOTYyMGJlMTRhOWYgbGVnYWN5LXRydW5rCis3Njg4IDViNDA3ZTBjYmM3MTVlYTY2NzMxMDFhY2U1ZTNlMTU0M2Q3Njk0ODYgbGVnYWN5LXRydW5rCis3Njg5IDljMTZiZGYxNjBmZjY4ZmJiNmNkNzQxZjU1NWI5MDNlYzA4YjMwMjMgbGVnYWN5LXRydW5rCis3NjkwIGY3MDA0MmMxOWM1N2EzYjc2ZWU4NDk2Y2I0OTExODFkZjA4MzhlYTMgbGVnYWN5LXRydW5rCis3NjkxIDliZjY1MGYyM2RhNTcxMzBiNWIyOGNjMTY3ZDAyMWRiYjYxZWNjNzIgbGVnYWN5LXRydW5rCis3NjkyIDNhYjdkNThjMjk2MzFhNmE5NWEwZjFjNjNhOWY2NjEyYmNhMmMwZGEgbGVnYWN5LXRydW5rCis3NjkzIGY1YmZiOWM0YzM2NDEzYWY0MmJhN2RiZjQwODhmZjgwOTEzOWY4NDIgbGVnYWN5LXRydW5rCis3Njk0IDMzNGQ1MmQ2ZGY1ZGFiNGQyZTliNmRlNzQ5NjE4NWU2MjU4OTE0M2QgbGVnYWN5LXRydW5rCis3Njk1IGUxZjYxMzMyMmIyM2MyN2Y2OTYwZTAxYzRkMDA4NjAxNDcyZTZmYzYgbGVnYWN5LXRydW5rCis3Njk2IGQ5NzMzYjRmODExZjQ3NWE2NGI2MDgzYzc4OTFmODc0MWFmMGQ2ZTQgbGVnYWN5LXRydW5rCis3Njk3IDRkOGI3ZGQ1ZGUyYTI4MGFmNTI0NGVmOWE2ZjVmODdlMjU0Y2VjMWEgbGVnYWN5LXRydW5rCis3Njk4IGJjODgzMmI1MmI1MGI4Y2IxOTZkMjhhYmJjOTY5NjViMDgxNTZlZDYgbGVnYWN5LXRydW5rCis3Njk5IDA1Nzc0ZWMzOWFkMjA1YmRiZGY0NzU4OTA5NTVjMjk5MWY1ZGU2NzMgbGVnYWN5LXRydW5rCis3NzAwIDFiMTRjNWMxYmUyYTUyODU3MmEyNmVmMTgxMTYyYmJiYjBmYWU3MDAgbGVnYWN5LXRydW5rCis3NzAxIDg0YzkzZjYwMTcxOTRlYTg1MDBiNzJhYTg3ZGZmMWM4M2IzZGZhNWQgbGVnYWN5LXRydW5rCis3NzAyIDk3ODUyZjRlYmRlNmIwNDQxZWFkOTdmYmQ1ZGJlMGM1MGIxNGE2MDYgbGVnYWN5LXRydW5rCis3NzAzIDU5ZThhMDJhNDc3NGQ4NmE1NWUzYzQwMDMyZGM0MGY1ODFmZDYwOTAgbGVnYWN5LXRydW5rCis3NzA0IDc0Y2FkZGY0YjI4YTRlMjg0MDc1ZGY5ZjNhN2M0N2I4MWY2ZTk0NDMgbGVnYWN5LXRydW5rCis3NzA1IDBlNjBkZTJhNDJhZjc1MGM1ZGNmODBjYTk1NTBjNTc1YzcwMDgyZDUgbGVnYWN5LXRydW5rCis3NzA2IDkzMzQ0Y2JkZjU0MjJhMzY4YWRlMmJiMThiZDU5MGQ4NDk2YTE5MWQgbGVnYWN5LXRydW5rCis3NzA3IDBhNWNlYTQyN2E5ZmJiYWUwMzc2MWNiODllMjY3MzAwMGMzMGZlYzQgbGVnYWN5LXRydW5rCis3NzA4IGI3NDlkMmRkNzU4Mjg4MWUwMWFjZGNhNGY0ZjEzNmU4ZTQ2YmI5ZWYgbGVnYWN5LXRydW5rCis3NzA5IDA3ZWQ1MmUyMDBkYjY5Njk5NTYyZmZmMzM1ODFjMDE3M2E0MGVhYWMgbGVnYWN5LXRydW5rCis3NzEwIDRmMWZhN2I2OWJhNzc5MzM2ZTk5NjY1ZGFhYTkxNGY2OTJlMzZiOTMgbGVnYWN5LXRydW5rCis3NzExIGI0ZTY3MWJjMTMzMTFhYTA4ZDBlYjFlMzg5ZGY4NzAyMzU1NDkxOWEgbGVnYWN5LXRydW5rCis3NzEyIDEyMzczYmEyNGU1ZDM3MmM2YTU1Y2I4YzVkZjhkZGE3N2FhNzk2NWYgbGVnYWN5LXRydW5rCis3NzEzIDE1Mjg4YzgzNDNhNWE2MDg4NmNlYzE0ZTExYzBiMDFkNDQwYTk5ZTAgbGVnYWN5LXRydW5rCis3NzE0IDI3NjM1NDM3ZmE3YTJkN2QwNGRjZTk5OTNmN2NlZmQ1NWIxZDkyZTMgbGVnYWN5LXRydW5rCis3NzE1IGEzMjMzODY0Y2EzODVmZWVlMDdjYjdlNGNjYjlkMzlkNTk2YjRlODAgbGVnYWN5LXRydW5rCis3NzE2IGI4OWY1MjgyMWM1MmU4OGE1NjliNjA1ZWE4Y2Q5YzBhMjU1NzNhMDUgbGVnYWN5LXRydW5rCis3NzE3IGE1MGRmN2YzYTEwYTMzZDJhNzkzODZkODJlMWQ4YTQxZGMyZjc0NmEgbGVnYWN5LXRydW5rCis3NzE4IDRmMjUxYjhlMzI4ZjViNWY5YTc3Y2M3OTE3NzcwMmE0NWQ2OTAzMzMgbGVnYWN5LXRydW5rCis3NzE5IDI0NzEzOWQyMDBlOGM3OGNjMTE2N2RjZDRmY2ExNWNiYTg3ZjE2YWYgbGVnYWN5LXRydW5rCis3NzIwIGM1ZmQzMjcwNTdjNmMzNTRhN2EyNmZhZGMzYWFhZjE5YmVkZGEzYWYgbGVnYWN5LXRydW5rCis3NzIxIDIzMzMwYTFiOTU5NGQ5MjhmNWU5ZTZjNTJjMmNiNjc4YjI0N2I3MmUgbGVnYWN5LXRydW5rCis3NzIyIDZkYjhhZGU4ZDhhOTgwZDU2OGMyMDFmMGI2OTAzYzEyZmFmODFiYmEgbGVnYWN5LXRydW5rCis3NzIzIGE1NDcyMGY4ZGQzNmNmZmJmOWVkNDM2ODgyZTk1MzcwYWRiNGNjYmQgbGVnYWN5LXRydW5rCis3NzI0IDEzMDA1ODcyZDA1MzQ2ZmIwMWM3OGQ4ZjYwNTEzNjRlNTg4MWI0OGMgbGVnYWN5LXRydW5rCis3NzI1IDUyZTNiNjNmMmRjYTAwZWQ2MzdmMzhiNDk0NDRlNDM4NGFhYzZkMDQgbGVnYWN5LXRydW5rCis3NzI2IDFiZGRiYTJmMTAwZTQ4ZGEwNWNkNTJhYjgyNzJiYjZhMjVjYjU1MTUgbGVnYWN5LXRydW5rCis3NzI3IDJmZDkyNDZiMGVlODIxMzI4ZGEzMzlkNThiYTE1NjI4MmU3NmE3ZTAgbGVnYWN5LXRydW5rCis3NzI4IDZmY2YyMDc0OThkOGFiZTE3MWYzODA2YTUwMjMwNWFkYjI2NmUwNjMgbGVnYWN5LXRydW5rCis3NzI5IGZlMWNjYjRlNGMxYzczMjAwMjc2MmMyZjQ2YzAzMjhiOTkyZWQzZjcgbGVnYWN5LXRydW5rCis3NzMwIGQwODdjZDA2MGJhZGRhNzZlN2VjNTE5NGE3MmQwY2M5NDNjNjFkM2EgbGVnYWN5LXRydW5rCis3NzMxIDcxNjk0YTE3MTMyNGZmNWU4MmIzY2ZkNTNlM2JjZTJmYzE3YjAzZDAgbGVnYWN5LXRydW5rCis3NzMyIDgxMjgzNzk1ZjE2YThhMzhlMjg2MWRhYTA3ZTk3ZjY1MjRiZDgwMjQgbGVnYWN5LXRydW5rCis3NzMzIDQwZDJmZDQ3MjI4NGE0ZTRjZjBlZjYwMzEwZjhmMWRjYzliMzE5N2UgbGVnYWN5LXRydW5rCis3NzM0IDcxZGYyMWMwYTM0ZWQ0YmM0NGQ3ZjM5NGRjOTA2OTdmMTYyNTgzMmEgbGVnYWN5LXRydW5rCis3NzM1IDFlNWQ2MjkzYzUyNGUzZTViOTQyNDdhNDI4OTIwMDk1ZTk4MjkyNTMgbGVnYWN5LXRydW5rCis3NzM2IDcyOTg2YjcxNjgyNDYyYTdmMzQ0ZWMxYzg5YWMwMWE5ODYzM2IyNjcgbGVnYWN5LXRydW5rCis3NzM3IDVhYmMxYTM2YmVkZGM3Mzk2MmNjOTUxYjAxN2Q0YmMxOTI4NzVkNjEgbGVnYWN5LXRydW5rCis3NzM4IDg2ZDYwYzM0ZWJkZTc3ODU3OGYxZTM1ZDFlOTQ3MTIyYTQ1MjQ4MDQgbGVnYWN5LXRydW5rCis3NzM5IDM4ODc4ZjFjZDRmMWZlYzk5OTdiNDNiMTlmNTg4NzNhM2QzY2EzNTcgbGVnYWN5LXRydW5rCis3NzQwIDNjMTc4OGFiOTc2MTA2ZjMwMTYwNzcwODRjMjIzMjFkOWJlNzA0YjcgbGVnYWN5LXRydW5rCis3NzQxIDFlZmM0MjczZmRiN2UzNDkwZjk4ZDc0N2E4NGI2ZTIyZjdmN2RmOTIgbGVnYWN5LXRydW5rCis3NzQyIGQ0MWVlZTZkMmZmNzY5M2JhZjRkYzAwZjVkNDkyYWZkODYxZTQ2NTEgbGVnYWN5LXRydW5rCis3NzQzIDRmMzMxZjViYjVmMmE0YjkyMTk5NDlkN2E2OTM0Y2FlNWRiZWNiZDYgbGVnYWN5LXRydW5rCis3NzQ0IDRlNTM3NDZlNTFhZjkwYTE3MmJlNDcxNmEzMDA4MWFkZThjOTQzODcgbGVnYWN5LXRydW5rCis3NzQ1IGRlOWQwYzUyNDliMGUyYTdkNDYxZWNmZGYxZmIzNTA4OWRiZWQxZTYgbGVnYWN5LXRydW5rCis3NzQ2IGFmZjcwNjMzNzhhOGE2MzljOTRkMzUwNjQ0ODY4Yzg5N2U2Njk0NmQgbGVnYWN5LXRydW5rCis3NzQ3IGIxNTlmOThjYmZlZmJkNjUxODQ0MTA3MmM0NjI5MmFkMjc5NDA2NmQgbGVnYWN5LXRydW5rCis3NzQ4IDExNDhlN2ViY2EzNTRiMjNlZjM4MGNjOWEyMjQ1N2ZlNTk2MmEwNjEgbGVnYWN5LXRydW5rCis3NzQ5IDBkNmU3MGE1YWI0YmQxZDcyYWZmYzMwZTZjMTFjODRiZWJmYjFhOWQgbGVnYWN5LXRydW5rCis3NzUwIDA5OWRiYzY4NGM3YmU0MGNmNjlmOTZkMjgzNDJiNGI3MGQ2MjcxNGIgbGVnYWN5LXRydW5rCis3NzUxIGI3Y2I2OTc2ODkzZDg1Zjg5MjFjZDJlYzBlNDQwNjc1MzljM2FmNDYgbGVnYWN5LXRydW5rCis3NzUyIDdkZjVhMGQxZjUyMzBiZGYxYTM0YzBlZGM2MDQ1NzAwZGRmNzRlZGMgbGVnYWN5LXRydW5rCis3NzUzIDAxYzNlNjRiYzgyNGFhYjBhYmQxOTZlNGZhNDFlNjExZDM4Yzc5OWEgbGVnYWN5LXRydW5rCis3NzU0IDE2MzcyYTRjNGMxNDVjNjljZDUxYTg3MGY4Y2IxY2NmYWY5NmRjM2MgbGVnYWN5LXRydW5rCis3NzU1IGU4ZjhjZjM1ODA1NGVkNmI2ZDg5YzQ4YjM2ZmMyODVlMTkzZjVlMGMgbGVnYWN5LXRydW5rCis3NzU2IDYwN2ZhMzJmYzA0YTFkYTNjYjlhMGQyZDA3NWU1MzI2OWY1MDhkZmIgbGVnYWN5LXRydW5rCis3NzU3IDUyNTBmNDA5ZDU1ODcyMzFlMmQ4NmU2OTc2MzdiNWRlYjRjOTM4NmIgbGVnYWN5LXRydW5rCis3NzU4IDgyYTNmYmRhMzM2MzUwYjNhNGMzNWE2MTdkYjg5NTE3Mjg0MmJhYzEgbGVnYWN5LXRydW5rCis3NzU5IDAyYjJlZGY1NWJhZjM5ZGY5NDY1YWQ4YzY0YmRlNzEwNjAzYmJmNWQgbGVnYWN5LXRydW5rCis3NzYwIGQyYzk5NWVjNDI5MDEwMDhkYzFlZjlkMzRjOTBiYTA2Yzc0NGQ2MzYgbGVnYWN5LXRydW5rCis3NzYxIGZiZWRhNmY0NmViYjM4YWI3YmE1MjY0Y2Q0YWQzOTg4NmNkMjJjMjkgbGVnYWN5LXRydW5rCis3NzYyIDVhZjc2NmExYjUzMTI1MGZiNjQ4ODc4MTYwODU4Zjg5NzkzZGUzMTIgbGVnYWN5LXRydW5rCis3NzYzIDBmMTcxMWI3ZDM2N2RmZmJiOWM1MTQyOGY0NDE2OGFhYTk1OTQ0ZTkgbGVnYWN5LXRydW5rCis3NzY0IDQ3ZDNkMzk2ZDRlZjhhMjFhNjFkOWM5ZDRlZWVkYzgzYjFkMGU0MmUgbGVnYWN5LXRydW5rCis3NzY1IGQzMmI4ZjRkOWQzMDkyMGNlODFjMGFjZTFlMTI3YTQwMzc3Y2VjNDUgbGVnYWN5LXRydW5rCis3NzY2IGE3NmEzYTM5ZjZiY2ZiNzdlZWMyOGFjMGFlOWYzNDBiZDM3MWQ0MGMgbGVnYWN5LXRydW5rCis3NzY3IGNhNTY4ZTVlYmQxOWEzODA1NWZjY2U3MmM1NGFiODkwMWY4ZDFmYTEgbGVnYWN5LXRydW5rCis3NzY4IGIwZDlkZTM3ODZlYzMyOWMwZDY5YzA0ZDE0YjI2NTY2MTZiZjFiNDMgbGVnYWN5LXRydW5rCis3NzY5IDU3YTJlZDA2MzBjZDg1OWU4YTU4OGNjYWJiNTdhZGE3Mjk0ODk4ODggbGVnYWN5LXRydW5rCis3NzcwIDJmMjc2MGMzZGQ5MDVkNDNmZGQ1MmMzNjM4YTA0YmMwYzRmZWViMjYgbGVnYWN5LXRydW5rCis3NzcxIDdhYTQ1NjYwMTRjNmFjMDQ5MmI5OGU5ZTJlZmRiZWQ1MzkyYjM2M2UgbGVnYWN5LXRydW5rCis3NzcyIDdlYzczM2Y5YzMwNTc0YmVkMmJlZDg0ZDgxYzk1MTkyYTY5M2E1MmUgbGVnYWN5LXRydW5rCis3NzczIDlhMzJiZDhmNGFjOGExY2U1MGIwNjhiNTFiMTk3ZjQwY2I4OWU4YmIgbGVnYWN5LXRydW5rCis3Nzc0IGI1MjNlNmU3YWM2MTJhZGUxZTIyMTA0NTViMTM0ZDY1MmQxMTczOTkgbGVnYWN5LXRydW5rCis3Nzc1IGU3Nzk0MjU2MmRkMzhlNTM1ZTY2YjhjOWM1NDk0ZDE2NTQ5Nzg1MzQgbGVnYWN5LXRydW5rCis3Nzc2IGZiODE2NTMwNDkzOTM0NWRhM2VlNzVlY2RjOWJkYWRlZjg4NDkxNTQgbGVnYWN5LXRydW5rCis3Nzc3IDVlM2JjZjRlYmYyOWY0OGNjY2NhNWM4NjZjNjU4MmQ0Y2JmNTZhM2IgbGVnYWN5LXRydW5rCis3Nzc4IDk2NDU2MmJkNzVjYzM3NmZhOWEzMjk0NGIxMGRlMjAxMGE3M2Y5ZDMgbGVnYWN5LXRydW5rCis3Nzc5IDQ0NTkxNzJmNDBiYjE0NDg5ZDNhZTY2ZmM4OTE1MjljZDMyNDVkOWIgbGVnYWN5LXRydW5rCis3NzgwIDMzMmZlMDJiZjAyZGM0N2FmOTAzODI4YzQyMmI2MzI1ZGE5NDk2ZDMgbGVnYWN5LXRydW5rCis3NzgxIGU2MTRiY2QzNGUzNGZjNGY1NzVlYmUwMGEzZTgzMWMwYTY3MzNkY2IgbGVnYWN5LXRydW5rCis3NzgyIGMzZWQyOTlkNTkzZTZjZjQ0ZmVjM2EwZWM5NjExY2ZlMzA3OGFkMTAgbGVnYWN5LXRydW5rCis3NzgzIGRmODdkNWQxYmJkZjE3Zjk3M2RjN2RjODRkYmQzMGNkNTY2NmI0YzggbGVnYWN5LXRydW5rCis3Nzg0IGU3NTZiOGU1NGM3YzFjNjJjYTY2NTFhZjVlNDEwNzRmNThmMzE3YmUgbGVnYWN5LXRydW5rCis3Nzg1IDE5MmUyZTBjYmNlNTA2NDhkMzI2OWVjMzE3YTQ5NjdkYmRkMzM4YzEgbGVnYWN5LXRydW5rCis3Nzg2IDc4MjU5N2NmNjE1MWQ5ZGVhMWY4YjU5NDkyY2U1YWUzZmI5MzViZTIgbGVnYWN5LXRydW5rCis3Nzg3IGQwZWIxODMwOTJiMGNkYzY4YjVkMDE1ZTU4MzVlOTgyMGM4OTFiZDUgbGVnYWN5LXRydW5rCis3Nzg4IGU4OTk2ODg0ZThlMTdlNmI3YjQwMDM5Mjg3YjM2ZjBjZDVmYjlhMGUgbGVnYWN5LXRydW5rCis3Nzg5IDhmYzIxN2QzMzI2NzU0NTk3YjE2NjgxZDVkNzI2ZWViZWQ3N2U2YTMgbGVnYWN5LXRydW5rCis3NzkwIDY1YzllOTBkODE0MjY5MmRmMmI4ODkyNjEyZDg2YWMzYzUzNmVkYmQgbGVnYWN5LXRydW5rCis3NzkxIGM4ZTI0YzRiOGJmYmNjYTgzOTlmNjE0MTdkMjdhYTM1NzU1NzZjNjQgbGVnYWN5LXRydW5rCis3NzkyIGM3MmM3ZTE5MzBiM2YyY2IwN2ZjNGJhYzhiZGNlY2FlZGE4ODYzYWYgbGVnYWN5LXRydW5rCis3NzkzIDJjNGI4MDJhM2I1ZDhiNTVlZTA1ZDRiNmVlMWM1MTEzY2M1NDFkMmQgbGVnYWN5LXRydW5rCis3Nzk0IDc0YTFiYzA5OTgyNzZlNzI3ZjExYmQ0MTIxNmM2NzNlYTVhMGE1NzAgbGVnYWN5LXRydW5rCis3Nzk1IGMzZGRiODRhNzc2MWZkZTNjNTU0MTg5M2E1MzM4OWIzYjA1NTZjNGMgbGVnYWN5LXRydW5rCis3Nzk2IGUyYWMwOTgyY2MzMmYwY2YxMTZiYzlkOWI0YjQyNzU4MjAxNGIyZTcgbGVnYWN5LXRydW5rCis3Nzk3IDM4ODE4NTM4Yjg5YzBhZTg3MGFjY2U4NzAwNWNlNjcwYzk0NDcyYWMgbGVnYWN5LXRydW5rCis3Nzk4IDkxZjk5MTgxMjcxODU1NzkzYTMyMmJlZTcxYjY3ZjRiYTQ3YjYwNDcgbGVnYWN5LXRydW5rCis3Nzk5IDQ4OWRjYTNiNTRjY2I2MGZhYjYxNGM5NGI2YjBjY2NkNzExZTU2ZjMgbGVnYWN5LXRydW5rCis3ODAwIDNhMDc3OTlkZWJhMWY2ZGNiY2MzYWE5N2QyZGVjZGQ1MjlkYWQwMTIgbGVnYWN5LXRydW5rCis3ODAxIGI2ODkzMTMzOTQwZmVlYjEzMTQxNTQyYjEzOTdiZTZiNjg0YzEzZjAgbGVnYWN5LXRydW5rCis3ODAyIDE1MmIyODI3YTFhMDg3M2EzNWIyYmM0MmMzMTIzYTMzNDczMjNjNzcgbGVnYWN5LXRydW5rCis3ODAzIDM1OWU4ZjgxNWEzYWNiNDkyNzcxNTc5NzAyZTk2YWM1ZWFlYjE3ZmMgbGVnYWN5LXRydW5rCis3ODA0IDQzNzUyZTIwOTQ3M2MzOGUxYTg0ODU0YTlkOWIxYTJmMWZlZDU4NWEgbGVnYWN5LXRydW5rCis3ODA1IDVhMjJmOWIzOGFhYzIyNjhhYjA4Njg0ODNhN2Y1ZDI3Nzk0YTk1NjMgbGVnYWN5LXRydW5rCis3ODA2IDYyMzJhY2JhN2ViMjBhMGM3NTdmZmNiODI0M2IzN2M1ZjYyMWE5MjYgbGVnYWN5LXRydW5rCis3ODA3IDhkZmMyNTI5NjNjNzE5OWUzYmJhNTg5NmZhOTUwZmVmMjQzZGFjZDcgbGVnYWN5LXRydW5rCis3ODA4IDYyNzMxNmMwMDFmYmQ0NTE3NzNjYzFiMmIzNDdiOGY2YjNmYzUzM2QgbGVnYWN5LXRydW5rCis3ODA5IGQxYWM1MWI4NzBlMjE4YzA0NzY2MjNhMWVjOTE5ZmU4ZWVlZGU5ZWYgbGVnYWN5LXRydW5rCis3ODEwIGVlOTI3NWIwZjVjODBhZjlmZWNkN2NkMDM4MzIxZDkyZGViNTBmY2UgbGVnYWN5LXRydW5rCis3ODExIDc0NmY2ODdhY2ZjMWFmNTIzMWQ5NWY0MGY1NDliOTFmMjc1YjAyMmIgbGVnYWN5LXRydW5rCis3ODEyIDE2NmMyMjMyOTIxYWJmY2U4YmFjY2Q1M2JmNzM2Njg2MWQ5MDE0MjkgbGVnYWN5LXRydW5rCis3ODEzIDY3OTk1YmMxN2Y2MjViYzBiY2I2MzJhMzg3MTY5MTU4ZmMyZTZlMzkgbGVnYWN5LXRydW5rCis3ODE0IGIwYTMxNDBjYzliMWFkYjA3YmYyM2FiYWJkYzk5MTU1YmQzMmRmOGIgbGVnYWN5LXRydW5rCis3ODE1IGRiNjczZTk4ZjI4ZGFlZWIyZjcxMjEzY2FjZmVjNTIxNDg3YWU2NzIgbGVnYWN5LXRydW5rCis3ODE3IDY3ZTUyMzdjZTE0MThiMzg3ZGEyMjNlZTMyNDUxNjMxNWQ1MjE1YzggbGVnYWN5LXRydW5rCis3ODE5IDY3YTBiNWFhYWU0MzNiYTk4MGVmYWJiYjc1MTExYjQyODI0MWRmMzEgbGVnYWN5LXRydW5rCis3ODIwIDRhNTQxYmIwYzUzNDMzYzdhYTA5YjhjYmIzYjY1NTVlYjE2MjMzNzggbGVnYWN5LXRydW5rCis3ODIxIDljYTI3MTg4ZGEyMzIzMjJmNjcwMTFiMzVjMjIyYTRmMDBlM2U1NDggbGVnYWN5LXRydW5rCis3ODIyIDViMmVkNjA4MWViOTRhZTE5ZjYzNmQ4NTJjMDIxNzMyYjdhZTU2MzUgbGVnYWN5LXRydW5rCis3ODIzIDMzOWRjYjlhMjgyNTcwYzkzMWZhNjVlYzFlZGUxNTg2MGY0MGU1YTUgbGVnYWN5LXRydW5rCis3ODI0IDAwNjFmNGVhOTdiZThlYzM1MjFkYzljZDE0NjNhNmM1MDEyODA5NjEgbGVnYWN5LXRydW5rCis3ODI1IGFlMDJlZDJhYWMzZjZjNmE1MTFiNTIzZTE4YjUwY2Y5ZjhmNmJkMTEgbGVnYWN5LXRydW5rCis3ODI2IDZhYjM5MmQ3YTUyZmNkNjA3Mzc0ZWZjZjJjZmM2ZmQ5MmZkOTlkMzQgbGVnYWN5LXRydW5rCis3ODI3IDY4OGMzZmQ0MmNhNjJkNTYyMTExMDZkMTUzMDFlODliOTZjZDEyMDUgbGVnYWN5LXRydW5rCis3ODI4IDk5OWMxOTdkYTU3Y2MxNmJmNTk2ZjFlZjcwMmUwYzI1MzliMjU4MGUgbGVnYWN5LXRydW5rCis3ODI5IGQ1NzU3YWFkMWE0ZmVhNzc4ZTI0YzFiYTU2NzVkYWVmZWRjMzg3MjkgbGVnYWN5LXRydW5rCis3ODMwIGQ0MGNkOTEwZDY4NGYwZWI3N2JlM2UwNzU2ZDRjNGY0NTQzZWY1N2MgbGVnYWN5LXRydW5rCis3ODMxIDJjMGIxMDE2NWY3ZWNhNDE5NmFlMTQ0YjFkNjgzYmQyNmMwNGYxNWUgbGVnYWN5LXRydW5rCis3ODMyIDE3OTE2OGUxN2JmZTI1YzU3NzI0ZDllMmRiZTIwMzIxNzI4MDk0NjIgbGVnYWN5LXRydW5rCis3ODMzIDQ3MzYyZmQ5MDcxYmM3OTA5YjcwMWU5NzU3ODQxYTM4NDVlZmMxM2YgbGVnYWN5LXRydW5rCis3ODM0IGJjMmUzMzM0MDQ4ZTEzYTFhYzM1NmY4ODA4YmFmNzBhZWZmNmU5OTQgbGVnYWN5LXRydW5rCis3ODM1IGRiNDBkYmEzZjc5YTdkNTMwMzE0NDgwNmNjMzJhNmI4YTNjY2E4MTUgbGVnYWN5LXRydW5rCis3ODM2IGVkZWE0ZjFkNjNmZDAxNTU0M2MxYmM2Y2M0YzU1MWI1OThkM2VmMDQgbGVnYWN5LXRydW5rCis3ODM3IGY4NTgwMzhiNjRjMjYwNjUzOWMyZmI4Y2I0MDcyNDljNzNmOTk4N2EgbGVnYWN5LXRydW5rCis3ODM4IGIxYzJiNzlhYTUxZjg1YzQ5MGQxMTI1NDA1ZmVlYjEzNDAwOGU0NTAgbGVnYWN5LXRydW5rCis3ODM5IDYxZTQxYjJiMWI2OWQ0ODhiMGI4ZGI0MjMwMGE3MzBhZmMxNTU1YzEgbGVnYWN5LXRydW5rCis3ODQwIGNjNTg2YmRhNjI3NTUyNWQ2NzU4ZTMzMThhY2EyNmM1ZWJmNzhjMTQgbGVnYWN5LXRydW5rCis3ODQxIGU0YWY0MTRmNWY4OTNiNWQ4YzZhZTA4ZWEwMTFkZWZiZDk1ZDE0ODAgbGVnYWN5LXRydW5rCis3ODQyIGI3Y2E5OGM2ZGJiZDY4YTdiYTM3YzM4NGY1NTE3NmI3NzY4OGVjMTkgbGVnYWN5LXRydW5rCis3ODQzIDg3MzEzMzMzYWUzZmMzNzNiZTRlYzg4MTYwZGIzNDE3ZDRlZTBmMWUgbGVnYWN5LXRydW5rCis3ODQ0IDg5ODE1MzNlNmNjMWExMjdhYWI4MDM1MjBlNTE0MDlhYjcwMjEyMDggbGVnYWN5LXRydW5rCis3ODQ1IGYyMTMyZDFmNjZhNjI4ZjU5YzVlZmNlZDgxNTBlNmExYTkzOTk1ZjIgbGVnYWN5LXRydW5rCis3ODQ2IDNjYTE0NTAzMTcwY2M5ZjliOTJmYzA4NzU4NjAyYmIyNzE2MWZhZTkgbGVnYWN5LXRydW5rCis3ODQ3IDFlYTFmMDE5MjY4ZDlmMjcwNzQ1NzlkNzE1ZmNiMjk2NjE2NmY4MGUgbGVnYWN5LXRydW5rCis3ODQ4IDQ5M2EzNGRjYTUzZWRkNzI1NDYyOTk4NTY4YTc1MjU1MjJkMzBkYjcgbGVnYWN5LXRydW5rCis3ODQ5IDQyNDkyMmFmYzFiYjQwZTlmNTIwMjA5ZjViOTQzZDQ2YTg5MzEwYzggbGVnYWN5LXRydW5rCis3ODUwIDU4ODAzODRkN2M3MTQ4YjhjNDU1MTAxZjc0ZDgwNTdhNjMwYTExMmIgbGVnYWN5LXRydW5rCis3ODUxIDExOGJlZWY5MTg3MzZkNWY4NjJkYTMwOTJiMTA4MWYxMGJiODc1YWIgbGVnYWN5LXRydW5rCis3ODUyIDdmOTBhNjcxY2MxZGI4YTgxMThmYWY2YmEzYzRiYjk0NmZkMjEyNzggbGVnYWN5LXRydW5rCis3ODUzIDk5ODBmYWVlYjdhNTEzZGQ4MjUzMjJkYzFjZWNkYWQ4YjRiYzkzNGYgbGVnYWN5LXRydW5rCis3ODU0IDA5NTk3YTQyMzIyN2NlMzA2NmVkMjczYTZmZmQ2MWZhZTViY2Y2NzggbGVnYWN5LXRydW5rCis3ODU1IDMxOWUzZWFlY2RmNGZiNzkwNGMxNWE1MDMyOTg2Nzk4MDdkMjVhMGIgbGVnYWN5LXRydW5rCis3ODU2IDFjOWE4NGUwOTgxZDM1OGJhOWYwMzgwYzgyZTcxMDY3N2ViMTU2NDMgbGVnYWN5LXRydW5rCis3ODU3IDJkNGM2Y2JhMDFiZjAwNWU0YmZkYzBiZTJhMWNhYTNlYzMzYmUxMWUgbGVnYWN5LXRydW5rCis3ODU4IDMzOWQ0MTI5ZDNmN2YxNWE0ODllMTY5ODVlYjAxMGVmNDQzMDRiZmEgbGVnYWN5LXRydW5rCis3ODU5IDNmNTU4YTMyYzQ5ODAwMDM1MjQwZWE5YzM5MGE3ZmQ0OWNiY2VlNGYgbGVnYWN5LXRydW5rCis3ODYwIDNjNWZjZjhiZjUxODk2MWJjNGJhODVmYjJlMDBlMGNjOGY5ZjBlZWEgbGVnYWN5LXRydW5rCis3ODYxIDM3MTRiMzI1ODI2ZDg5N2NkMTZlNzkzNGYyNDlhOTE5NTBhMzEyYmUgbGVnYWN5LXRydW5rCis3ODYyIDEwZTdkYmEwMWQwNTEyMWZkYTFhZGE1NGRhZmJmMzBmNzdkYzZlYjcgbGVnYWN5LXRydW5rCis3ODYzIDQzYzVlMWY5MTU0ZTZkN2E5YjMyZWJiNmIzNGQ5NzhlMzYwY2Q0OWIgbGVnYWN5LXRydW5rCis3ODY0IDA5YzU4YjE3NDk4OTkxMDI3MDlmZDE2OTFlNDU1ZDI1Y2ViMjVhNmYgbGVnYWN5LXRydW5rCis3ODY1IDEzYTMwY2VhOGRiZjdkMjg1ZmM3Y2UxZjM0MDBmZTQ4ZjcwNWIwYmIgbGVnYWN5LXRydW5rCis3ODY2IDVhOTcwNjk2NWE0ZWMzZmMxMzkwY2JiNmViZmIzZjI2MGE4NDgwOTEgbGVnYWN5LXRydW5rCis3ODY3IGIyNGU4NGEwZjMwYjMyYWNjMzQxYmU1YjMwMjBjZTgzZWZhOWE5MTEgbGVnYWN5LXRydW5rCis3ODY4IGU5MmYxODJkNzcyNjhjODZiNzk0OTI2MTY3MDhhNzNkMzcxYzk1NjggbGVnYWN5LXRydW5rCis3ODY5IDE5NGQyNmRmNmM1MDBjZmZkMmZjMTlmYjA0NTA3ZDQxZjE4ZGFiNGUgbGVnYWN5LXRydW5rCis3ODcwIDMxZTM5OTYzNjY3NWZkNDE0MTBjNDc1MjBkOTc1YTM3NWIwZmExZTggbGVnYWN5LXRydW5rCis3ODcxIGMyZmI5NzZiZWNlYjM5ZGFkMjAxNDJjNWNjZWRiZTlhNzljYmMyMDAgbGVnYWN5LXRydW5rCis3ODcyIDJjODFkN2Q2OGVkM2FhZDNjNjdlNzc1OWZkMTRhMTFkMzk0M2FlMTAgbGVnYWN5LXRydW5rCis3ODczIGQxNDQ3OTUwZmEwNDU2NTJmZjU1YmUzYTJhYzI3NWRhMDcwNjc2YzYgbGVnYWN5LXRydW5rCis3ODc0IGZkN2ViMDU4Y2U1ZGIzMDQxOGM1MWRmYjQ2YzQzMDZjYTNlMjFlMDkgbGVnYWN5LXRydW5rCis3ODc1IDcyYjIzMWVkZmIyNTIzOTU1Mjk5YTg5ODI0MjU5NDAzZmY0NTMxZjUgbGVnYWN5LXRydW5rCis3ODc2IDBhNTk5NzczYTljY2E0ZmVkZGU3ZDA0M2Q3NzMwOTY1ZTFjNDJlOTYgbGVnYWN5LXRydW5rCis3ODc3IDc5MThlODczOTE0OGE0YzYwYWI2NTc5NGI3NmNlYWE4OGY2ZGI5ZTkgbGVnYWN5LXRydW5rCis3ODc4IDQ4N2FkMDMyN2FlMTgyOGIyN2RmYmZiM2JiZWM3NWI3ZTQxNGYwY2UgbGVnYWN5LXRydW5rCis3ODc5IDhmMGE3OTNiYjBlMjY5NTcxYzhiYzBlYTJlZjNhNmJlMTc3YTU3NjAgbGVnYWN5LXRydW5rCis3ODgwIDUwYTljMTQwOTQ2YzQ4OWZmMjNhMmRiM2UxMzNjNDQxOWM0ZjZkOGQgbGVnYWN5LXRydW5rCis3ODgxIDM3ODBjY2UxNGY3ZDAyY2RkYzFmY2QxYjk1Mjk3NjhkZTE3YTYzYjUgbGVnYWN5LXRydW5rCis3ODgyIGI3ODcxY2E5MzBhZDViYzUxYTkwOWVlNzVlYzJlNWRhMTNlMDdmNGQgbGVnYWN5LXRydW5rCis3ODgzIGMyMjU0NzU0MTkyYzJlYWYxNWRkMmFlNDAyNWVmOGUzMzczYjdiYjAgbGVnYWN5LXRydW5rCis3ODg0IGI3YTIzZGJlMDA2NWVjZjdmODEwYjk3NDBhNzM4YTUzOTJiZGUxOGMgbGVnYWN5LXRydW5rCis3ODg1IDY0ODEyNGE1ODgwYTMzMjk3YTQ1ZWNiODg0MWM0N2UwODdhMzZhZDggbGVnYWN5LXRydW5rCis3ODg2IDE4ZDZhNWFiZDNmODMyMjczNmM1ZmM4NTExNGUwYzAyODg0YTc5ZjIgbGVnYWN5LXRydW5rCis3ODg3IDNiMmZkYTMxYmYxYmE4ZWRjNTA1NzcwZWFmZDk3MjZkNDQ0YjZjYTQgbGVnYWN5LXRydW5rCis3ODg4IDY3MTcwNzNkZTU4NjVhNzA2MWRlMGQwM2VkMzZiZmRjZDNkMTA4ZmIgbGVnYWN5LXRydW5rCis3ODg5IDc4ZDM5ODAwNWJhYjAyYTU0Mjg2ZjkwYmM5ZmYwNWJjMzI0YWY3ZGMgbGVnYWN5LXRydW5rCis3ODkwIDEwMjY3ZmRjNzUzMTE2YzFkM2UyNTk4ODIwMzM1ZjBiNzgxNzBmNjQgbGVnYWN5LXRydW5rCis3ODkxIDAxM2ZmNjk1MTkwOWYwZWI1NWI0ZTc3MTllMzk1YjAwMTdkOTMwYzAgbGVnYWN5LXRydW5rCis3ODkyIDU5NjM4MGE1NjdkMjIzOTRjYTAxZWZmMDkwNTkzNGMzNGI1MmNmZWQgbGVnYWN5LXRydW5rCis3ODkzIDE3MjI1NGQ0MWE1MWRhZmI3NDZkMjE1OTY5OGFiZDI2ZjI2YmMyMjUgbGVnYWN5LXRydW5rCis3ODk0IGFiZjMzYjg4MmNmZGNlODM4NzRjYTE2NDMwM2QzMzQyYmJmYzkwYWUgbGVnYWN5LXRydW5rCis3ODk1IGExYjYzYzczYWQxZGM1MTRjYjM2YzQwMGNhYTI2NzY2NDU5MTU1YzAgbGVnYWN5LXRydW5rCis3ODk2IGQ5OTQxYTg5NWMwMjA5NDExNTY0ZjJkNGYwNDE3MmZlYWVhZGIwNWUgbGVnYWN5LXRydW5rCis3ODk3IDAxNGVhOWQ3MmQwM2NmZTRmOTc4OTcxYjcxZTNkMTU0MmVkMDAzNGMgbGVnYWN5LXRydW5rCis3ODk4IGRhY2JmYWEwN2M0MDdjMjZhYWI5ODQyY2U0ZjBlZTEzMjRiMzhmZjYgbGVnYWN5LXRydW5rCis3ODk5IDM3MzMyYjZmNjI4MGJlZDQ3MmJkMjlkOTM5Y2ZlNWE1Y2E0YTFiNWEgbGVnYWN5LXRydW5rCis3OTAwIGJjY2I4ZDc0Mjk2NDdiOTQxZTVlN2U2Zjg3YjUwNDM2OThmNWQzZGYgbGVnYWN5LXRydW5rCis3OTAxIDYzOGE5OWJjOGYyY2NmN2I5YmE0MGEyNDlkMDYyNDcyZTJhZjZiODMgbGVnYWN5LXRydW5rCis3OTAyIGE3ZTMwOWIxNzRiMjcyNWViZDUzMjk4ZGU5NTE5YTI0MjgxODgzMGQgbGVnYWN5LXRydW5rCis3OTAzIGRhYjg2M2I3OWRlYmFjMzM4OWViNGVjN2UzMzI5YmNiYzllNGQ2NGYgbGVnYWN5LXRydW5rCis3OTA0IGIwMDIzMzM1NTg4Y2VmN2Y5N2E5MmE3MjllMDlhNGRhZDUzZGQ3OTMgbGVnYWN5LXRydW5rCis3OTA1IDVlMmMxN2IzNzRmYjBlYWEyNzAxZGZmOGE1MTk3ZDIzNzkwZWVkMTMgbGVnYWN5LXRydW5rCis3OTA2IGFjMjM1YzllNjg4MWYzMzhjYTYwOWZlY2E0ODA0ZmUyZDJkNTljZjIgbGVnYWN5LXRydW5rCis3OTA3IDIzMjljY2YwZTU4MTExY2YxNjg5MWQ1NmJhZDFiZTMyMzMxYWI1NzkgbGVnYWN5LXRydW5rCis3OTA4IGE1NmI0NGIzNTUwNTcyZmQzNTI5OTkwMDc0ODU2MWU5MWZjYzg1MzAgbGVnYWN5LXRydW5rCis3OTA5IGNlZTRjNDVjNTY4Zjc2MGZhYmExOTY5ZGVmZmFmYjZkZmM2MjM4NzQgbGVnYWN5LXRydW5rCis3OTEwIGFkNDc0MWQ1NDMxY2MxYmQwYmNlZDFjYjMxYTAxODBhMjM2NDY2NjYgbGVnYWN5LXRydW5rCis3OTExIDNkNzg5MDIzNmE0ZTU5MWIzOGMxMzM4ZWYzNzY4MjQwNjBkMjRiYzEgbGVnYWN5LXRydW5rCis3OTEyIDU5MWM2NDIwZjExZDAyNWRjZDJjOTMxYjBiZTE3NGUyNTkyYTM3OGUgbGVnYWN5LXRydW5rCis3OTEzIGNmODE4YjcwZGEzZTY1ZDY0MWZiZjliMjQ5YzIwNTg2OWNjZWExODggbGVnYWN5LXRydW5rCis3OTE0IGMyZGFlMmIxYTEyMzVkMWQyMmQ1NzIxZGJhMjE1Y2E2NzQ4Y2JlM2QgbGVnYWN5LXRydW5rCis3OTE1IGU5MjZjMzMxZWJiZjFkMzE3ZDdlNzE5NTJjZjAzNTcxMTBkNWMxMjIgbGVnYWN5LXRydW5rCis3OTE2IDFkYWU1YjFjOGRiYTEyYTUzOGY2YTgwZGYwZWJhYzE0MzE5NzFlMWMgbGVnYWN5LXRydW5rCis3OTE3IDllYWEyY2FlZDFjM2I4NDVhMGY4OThmMDVlNGQ2MTQyMjhhNjA3NmEgbGVnYWN5LXRydW5rCis3OTE4IDNjNmRiNzE2NWJjM2Q2MDRkY2E0Zjg2OWZmYWY5NGRlYjk2NjYzZjUgbGVnYWN5LXRydW5rCis3OTE5IDQ1NzlhNzcwMTk0OWRhYmRjNDVmZjlkMDQwMjZmNzE0MzVkYTg4ZWEgbGVnYWN5LXRydW5rCis3OTIwIDg4NjhlOWYxMzY1N2QzMGM5YzIzNzEwZjJlYTRhNWRkMGZkNzgwZTEgbGVnYWN5LXRydW5rCis3OTIxIDg3YzRmMDVhMTdlNTFmYzYwNzI0YTZlOTY3Yzc4OTk2NDUwNGRiY2IgbGVnYWN5LXRydW5rCis3OTIyIDhmM2UxNjEyMzYwMDQ5ZTE0NmI3MTg0MDdkNzg0ZGNlNzFiMDlkNDEgbGVnYWN5LXRydW5rCis3OTIzIDUxNWVkNzNkYTViMTRiN2I1YWVlODhhMTE5NjllNTcxOTQ5MmZhOGQgbGVnYWN5LXRydW5rCis3OTI0IDBiMWU2OTUwODkwNzM2ZDI0OTQxMzAxYmNhZWE2YTI3NGJmYWJjMDAgbGVnYWN5LXRydW5rCis3OTI1IGU5ZjYxNTg4NDZiMTZiN2MzODA4MzNlNDVlOWI4MzQ4MTdhMDZmODUgbGVnYWN5LXRydW5rCis3OTI2IDAxZjAyYmYyYjQ0MTY3YjY4NDZhYTM0MzM4NTFhMjZhYmMwNzA0Y2YgbGVnYWN5LXRydW5rCis3OTI3IDRhODBlNmNhN2NkMzVlZjQ3ZTMwMmU3YTNjMzI2ODMxMmYxNGZlOTYgbGVnYWN5LXRydW5rCis3OTI4IDVhYmRkZTk5YzllYWRhYTlkODA2YmZhZTg5ZTFiYzM5ZjY4Nzg3YTAgbGVnYWN5LXRydW5rCis3OTI5IDJhODc1MTk5YTcxZTg2MDIyYTNlYmMwODhhM2ZhOGUzYzE2OTBiMGIgbGVnYWN5LXRydW5rCis3OTMwIDljNmMwN2Q0NDlkZjU0MDM2MjI5NDliNzk4OGMyYTY2ZGIzY2Y0ZmQgbGVnYWN5LXRydW5rCis3OTMxIDBmNmM5NmY0OGUxYmE0NzZlNTY3OTI2ODNiNzllZTlhODI1OGRiN2IgbGVnYWN5LXRydW5rCis3OTMyIDY2MzU3OWEzYzdmZWI1NDBlN2ZhYzIwNDRiYzExMDliNDgwMzAxNGIgbGVnYWN5LXRydW5rCis3OTMzIDczMTZlZWNiMWU2YjMyZTYxOGNiMzA0M2Y5MWViYWI5ZWMzNTQ3NWIgbGVnYWN5LXRydW5rCis3OTM0IDUzNDQwMDk3MTExZmVmOGUzOWUwZTllNWM1Zjg3MjEwN2VhN2Q3NDMgbGVnYWN5LXRydW5rCis3OTM1IDEzMDUyZGMyZDVmNmU2ZTRiOTI0NmMxMmQwYTNmM2YzNzFjMzg1MDcgbGVnYWN5LXRydW5rCis3OTM2IGM1ZDdiNmZjZWUwM2QyMjVlY2QzN2Q0MzE1ZjFhZGEyZDdmYWFiYmQgbGVnYWN5LXRydW5rCis3OTM3IGFkNmM0MjdkY2JkOWU0ZDU3NGQ5YjA4MDkwNGU4OTY0ZmUwMTFiYWMgbGVnYWN5LXRydW5rCis3OTM4IDBkZWQ2M2JjZjVkZTI5ZWRkOTY5ZWRmMTM2YzZhZmEwNWI3YWEyMTYgbGVnYWN5LXRydW5rCis3OTM5IDYwZjY2NDlmZDIzMTBkZWJhM2MyMzZkY2M2ZmYzZWJjODdiZmVkZDYgbGVnYWN5LXRydW5rCis3OTQwIDk1Mjg1MWQ5Y2NlMjBmOGRjMWUzODQ5YWUwYzk0YzM0NjEwZGM5MzIgbGVnYWN5LXRydW5rCis3OTQxIGIwNTg0YmY3YjRmNTI5OTYyZDQ5MzgyMDYxM2QyOGE1MjQyMzVlMWMgbGVnYWN5LXRydW5rCis3OTQyIDA5ZTZiNGUzNDUyM2JhZTIwZTU4MjY2MDhhMTMzOGJlMDNjZmI4MDIgbGVnYWN5LXRydW5rCis3OTQzIDQzYzg2YzgxODFkNDU3NjYxZDU4MGU5Mjk4YTk2MmVjM2I4OWQ3MWEgbGVnYWN5LXRydW5rCis3OTQ0IDY0YjY5MzE1MTk1NmQyMWFkNWE4M2Y4NWEyZDhmYTI1OTAxMzIzMTMgbGVnYWN5LXRydW5rCis3OTQ1IDA4ZTg2ZDQzOTI4MWRmMDU2ODc0ZTZiYWRiYTA0NTNhYzdhMGQ3M2MgbGVnYWN5LXRydW5rCis3OTQ2IDQ3ZTgxYjIxNjllOTU0ZWMyNWFmNGM1MTdhYjVkNmUxYjFkZjM4MjcgbGVnYWN5LXRydW5rCis3OTQ3IGQ5MDI5YTRlMGYyYWM3N2M2ZmM4MTI5MTkxYzYwYzVmMzA0NTlhN2IgbGVnYWN5LXRydW5rCis3OTQ4IDhlNWQ2ZDMxMDNhZWY4M2U5NzJmYzIyNDliODIzODgxN2I0ZmNhOTcgbGVnYWN5LXRydW5rCis3OTQ5IDg0ZGIxNTRkNWI5M2U4ZDBiZTA1NjI1NTgwYmViZTgxYTJhNmY1OTkgbGVnYWN5LXRydW5rCis3OTUwIGMzZDRiZmI4Y2NkZjAxZDZhMzViZDMyOWNiNGI0NzY0M2I5MTllNzMgbGVnYWN5LXRydW5rCis3OTUxIDI2NjZlOTA0ZTQwYjBjY2Q0OGU5MmMyMTMyNjY3Y2MwYTQ5ZTdhZTcgbGVnYWN5LXRydW5rCis3OTUyIGE4NmVhMmNjZWFlY2RkNWIyZTc1NjhjNzUxZDZlY2FkMTg1YzMyOWIgbGVnYWN5LXRydW5rCis3OTUyIDA2MmFlZDhhNGNlMmM5MWM4MWI4MGUyOWYwMmZhZmYxY2Y1YTc2MWIgbGVnYWN5LXRydW5rCis3OTU0IGY0NGE1NmU2OTdmYjE3Y2U1NmI4NmNmNDE5YjYwNzZjMjY4Y2MzNDYgbGVnYWN5LXRydW5rCis3OTU1IDI2NmM5YWE4YzEyNzc2MTQ5MWJlODg4MWEwMzFlZDE2ZDQ5M2RkZWUgbGVnYWN5LXRydW5rCis3OTU2IDZkNTNlYmFlYzAyMTU5MWIzMzUwOTYwYjE4OGE1M2I2ZDNmYzRkYzIgbGVnYWN5LXRydW5rCis3OTU3IGI5NjE3NmM5YTg1M2I2OWQyMDFmMGI1MDIwZmE2ODM5YTRlNTA1NzQgbGVnYWN5LXRydW5rCis3OTU4IGYxYWZjNTY5MGIyYWI1ZjIwMWUzMDRmNTEzZGY5OTk0YmI0NzY4MjUgbGVnYWN5LXRydW5rCis3OTU5IDZmYTI5NzU2ZWM2YTI5NDI3NDdhZDhhNTM4YWQwZGZkOWVkMjVlYTUgbGVnYWN5LXRydW5rCis3OTYwIDczNTA5ZWZhNzI0YmNjZWNmOTg1ODc4NDY2NzNiNzNjNzUwMTIxMzUgbGVnYWN5LXRydW5rCis3OTYxIDU5NWE1ZmUxNDBkNDBjMjc2MzEwYWU1ZGVhOTAzNTYxMGRiNjhiZjMgbGVnYWN5LXRydW5rCis3OTYyIDQ3OGM2OGVhOTgyNzUxYTI1MmMyNmI4YWE5ZmYxN2JkYTZhODk0MjAgbGVnYWN5LXRydW5rCis3OTYzIDE5NWQ1YWExOTUxZTAzYzIzOWQ4ZjQwNThlNWU5OTdmY2RmOTc3YWEgbGVnYWN5LXRydW5rCis3OTY0IGVkMDM5NDQ4NDA4MmI2MmM5MDRmNmM2MDEzYTFiYTMxOTc0ZWNlMjUgbGVnYWN5LXRydW5rCis3OTY1IDJlODljNTVkOWEyOTVhMmVmYmM0NzhiMzA4MDJmNTlkMjhhZDA0MDUgbGVnYWN5LXRydW5rCis3OTY2IDJkMTMzMjgwMTI5ZjcyYzk3NWU4MzMyZGQwODcxZTY1MmVmZjcwYzcgbGVnYWN5LXRydW5rCis3OTY3IGMxYjQwYjA1NzdkMTk0ZjFlMWFlZDMzMDc3NGM1ODYwMWRmNGFkNWUgbGVnYWN5LXRydW5rCis3OTY4IDUwNmJhN2RmNDJmMDQ2MzFiNTE0Yjk2NWQ2NmY2NTZhMTRlODhiN2IgbGVnYWN5LXRydW5rCis3OTY5IGFmMWFlYTZiOTY4ZmQ2ZGFjYzEzMDNhNTVmZGIwMmRhNWUyNTdlNTQgbGVnYWN5LXRydW5rCis3OTcwIGVmOTNkNTFkYWIzNjJkZDU5YmI1MzU4MDdjNDg3NjBhNjg4ZjNlMjYgbGVnYWN5LXRydW5rCis3OTcxIGJmZDAzMTU0MDg4YjZhYzExMGYwZTBjNjU5OGZiYThiM2YyODQ0MmQgbGVnYWN5LXRydW5rCis3OTcyIGU2NTJhNzkzZjRlNzEyZjQ1N2JmNTU2MThhY2JmNmNmZWE1MjU5NjQgbGVnYWN5LXRydW5rCis3OTczIDBiMTk0NjYwMGJkZGVkOGYxZDBjODUxYWEwOWU0Y2FiNGM4OTdiOWMgbGVnYWN5LXRydW5rCis3OTc0IDM3N2Y4Njk1YTlmYmIyMDFkMDY3ZjMzN2EwY2Q5MzRhZWU4YmUwNjcgbGVnYWN5LXRydW5rCis3OTc1IDlhMTIyNTkyMzkxODFmOGEzNDI4YWNhZWVhMmRjNmYyYzQ2NjkxNWYgbGVnYWN5LXRydW5rCis3OTc2IGI5MDUzNzJlZGQ0ZmI0N2E3ZTA4NzI3YjZkOTZjMGM0ZGEwMDQxYTYgbGVnYWN5LXRydW5rCis3OTc3IDgyMTkxMmZkOTY1YTFkMGE0YTZlZDA5NWFmNGEwNTg4N2I2MTQ1MTYgbGVnYWN5LXRydW5rCis3OTc4IDQ2NjBmZmI5ZTQ4M2M3NTg3OWUzNDVjMTk1NWJhNzRmOGZjNzNjNzYgbGVnYWN5LXRydW5rCis3OTc5IDUwNTgxNjY2Yzg1NGZiMTA5MDY4MWYxZjQ5NjQzOTc2YzQ1YWY3ZjkgbGVnYWN5LXRydW5rCis3OTgwIGJhMDA1ZTRkYjRjNTM0MzZmMjM3MDZhODJiNjk4YjFhNDg1YzQxYWIgbGVnYWN5LXRydW5rCis3OTgxIGM4OGI5Yjg2ODk5NTMxNDczOGExMTRiNjBjYTUwNGE5MzBmYzM3MTYgbGVnYWN5LXRydW5rCis3OTgyIDQ3ZmEwMDg3NzkyNDJhMjc4YWMyZDQ3NThlNDk3NDQzOTdkODkyY2UgbGVnYWN5LXRydW5rCis3OTgzIDU5NDM4ZDE5ZDYwMzY3NWZmNzUwOGNlY2ZkZGE4MzY3ODQ0ZGRiYjAgbGVnYWN5LXRydW5rCis3OTg0IDU2YjQzYTQwYTUyODU1NzE3NTIyMzVjODdiYmQ3ZjEwNWU3YzJlMmMgbGVnYWN5LXRydW5rCis3OTg1IDM2NDNmMTlkNWNhMWE0MDA2OWYzMzhjODNiYWM5NGFjYzY2MWFhODggbGVnYWN5LXRydW5rCis3OTg2IGRkZWRmYTU1Njg0YTYwYTExYzM1OWZjYjIyODJkMzg3ZWRjYmY1OGMgbGVnYWN5LXRydW5rCis3OTg3IDcyOTBhOTMwYjRjOTU3YzViNTY0MTk5OWY3ZDdlMTBlNTE4MDc3MGUgbGVnYWN5LXRydW5rCis3OTg4IGZiMzlkMjg4NjY0YjUzOWViNGZhMGQxMTRmOGYxNTI3MzBkMjQ1NGMgbGVnYWN5LXRydW5rCis3OTg5IDE0OWQ3NDJiMDk3MWNlMWM1YzE4NDg1NDlkNzc5YWZlODAyYjZhOWYgbGVnYWN5LXRydW5rCis3OTkwIDRkZDUwOTVjM2I2N2U5Zjc3ZDg5Y2NhNjAyZTFjM2E5OTkyMzhkYWMgbGVnYWN5LXRydW5rCis3OTkxIDY0ZTJmZDhmMWQ2ODQ5MGRmYjU0Y2ExYTk3NmFlY2U4YzU3M2IxZGUgbGVnYWN5LXRydW5rCis3OTkyIDA2NGM4NjcxOWNhN2JkZmM2MTdiY2NmNzMyMGNhMDYyYjkwN2FlM2UgbGVnYWN5LXRydW5rCis3OTkzIDI0NTZkOGZmOWZhODIzZTI2NDY4ZTBiYjM1MmZiMTcyNzA0ZjQ3ODIgbGVnYWN5LXRydW5rCis3OTk0IGNhMTIzZjI0MGJhOWMzNjgwYmE0ODlmNjcxZmQ4M2NkYjlkMzhhZWUgbGVnYWN5LXRydW5rCis3OTk1IDU3NmI3ZDkyN2FmYjkwOWM4ZDRiMzJjZmE5MDBiOTg1NjRkNTc5ZWMgbGVnYWN5LXRydW5rCis3OTk2IDEzODE1MjczZTE3MWJiYTEzNTRmMzM2M2Q4NTUxYzgyZDYxZTMyMjAgbGVnYWN5LXRydW5rCis3OTk3IDMxZDY2MTk0YTc3YzlmZmNiODQ2NjgwOWVhNmY5YWM4MmQ3NzA5ZTQgbGVnYWN5LXRydW5rCis3OTk4IDg4MDNiZjQwNGI2OTQ2NjU1NjBjMTU3Y2ViYTFjNTJjYTU1Zjk1ODQgbGVnYWN5LXRydW5rCis3OTk5IDk4NmMzMDg3NjVhZTk2N2FhZDc1Zjg1MDIxMDdjZjUyM2ExNTgzZmYgbGVnYWN5LXRydW5rCis4MDAwIDBiYTlmOTE0YTcwODg3NmVlMDJlMTEzMTA0ZGYwZmQ4NzBhODFhZTAgbGVnYWN5LXRydW5rCis4MDAxIDlhMjM3YTRjZjNhMWY2Zjg3NmQ2NTA5ZmE3YTQ0ZWVjNmM2ODhkZmIgbGVnYWN5LXRydW5rCis4MDAyIDg1ODJmNzRhMWQyMzVkM2QzMzc2YTAyYmRhZWJlNDVlZDBiMzdhYTYgbGVnYWN5LXRydW5rCis4MDAzIGJjOWQ1NDUyMzg2MjgwMmI3ZTk5MTViOGZiM2MwNjM2MTY0OTllYmQgbGVnYWN5LXRydW5rCis4MDA0IDI2ZWZmNjllZDU1MjNjYmE0N2Y3ODJiOGE3MWZkMjE5OGM3OWNkY2UgbGVnYWN5LXRydW5rCis4MDA1IDMyNTg0NjNmMWNhMjc1ZTI2NmI5ZDY3NGIxNDk0MTYyZTE1NmFhNmUgbGVnYWN5LXRydW5rCis4MDA2IGY1ZGVjYzVkNzA3M2VmOWYyNTk4ZDI4NjllMjM0NTJkZmJmODBhMzYgbGVnYWN5LXRydW5rCis4MDA2IGM5NDk4YWM5ODgzNzI1NzVjZjcwMjhiODYzOTViOTAwYzliMGE4NDAgbGVnYWN5LXRydW5rCis4MDA4IDU0NTRmZTQ5MjVkMzY1NjViMmI2OGJmNDJkY2FmOTBhZWIzNTI5ZWQgbGVnYWN5LXRydW5rCis4MDA5IDMwZDU1OTgyNzA0Nzk2ZTFhYzYxNjM5MWQ3M2RmMWU0NzljZWQ1NGEgbGVnYWN5LXRydW5rCis4MDEwIDgyNmYyODk4NWJlYWRmNTkxMDVhNDI1NmM3M2ZkN2IzODMyNTA4MzIgbGVnYWN5LXRydW5rCis4MDExIDg0ZDNjY2E4MTRmYmQwZDY1MzQ5MjExMzk2ODI2YTFmZGRlZGI0YzQgbGVnYWN5LXRydW5rCis4MDEyIDIwYzJiNzE1MTg4ZWE5NzViZWM0ODJjMjBlMWZhM2MzZjBlNDRmNDMgbGVnYWN5LXRydW5rCis4MDEzIGM2ZjA0ZTk2NTUwODE4MTc3NzVkYjRjMTA0N2IwYjA4NjQ1YzhlOTggbGVnYWN5LXRydW5rCis4MDE0IGIxZGY5Mzg2NTVlMTVkNTM5MGI1NjVmZTJjMzJiM2VkYzAwMTBiODQgbGVnYWN5LXRydW5rCis4MDE1IDQ3MmM4ZTRjYzk3NDFmYmViZmZhYjI3NWM2M2FlYjA3NzFiYjQ5ZmUgbGVnYWN5LXRydW5rCis4MDE2IDhmODcxYTAzMGI4ZDE0MDI5ODU5MDIzYjk2NmVhMzU3OWYxYTdiMmIgbGVnYWN5LXRydW5rCis4MDE3IGEwY2MwMDVlY2NkNzg3YjRiMTk1NjZiODA3MTZmNDA5MmZiYmUwMjYgbGVnYWN5LXRydW5rCis4MDE4IGI1NzljNTkxOGYyY2IzNWIwYTE5ZjQ1M2UwZjAyMTdhYjIyZmRhYjcgbGVnYWN5LXRydW5rCis4MDE5IGNmYzEzZjNmMzg3Njk5ZGZhNGJmNzU5MzQ5MDQ2MDdhYzI0NWY4NDMgbGVnYWN5LXRydW5rCis4MDIwIDM3YzkzOWY3MGZhYzAxZDAyNjJlNDg3NjRmYzc5NThhNWI5MGUwYTggbGVnYWN5LXRydW5rCis4MDIxIDBiYmE5MTRiZjdiMmFjYTUxYWEzN2IzMWE5NjFmNzNkNzAyNzc0YmEgbGVnYWN5LXRydW5rCis4MDIyIDdlNDIyODc4MGZmOGMxYTM0YzdhOGQxY2M4YzdmMjU0YjBiNGM5MDYgbGVnYWN5LXRydW5rCis4MDIzIDZjMDdkNDRhNzA4MTA4Y2M1ZGI0NDBkNGRlZDc1NDY3MDE3NmIwOWQgbGVnYWN5LXRydW5rCis4MDI0IDk4ZDRlOTdkYWFjMDU0NmQ3ZmU2MGRhYjBkZDdmMDQwY2I4Zjg3MTEgbGVnYWN5LXRydW5rCis4MDI1IGEyMmNhZjEyOTM0NTM4ZTQ0NzBjYTg3OWJmZjQxYjVjOWRlNWM0NTggbGVnYWN5LXRydW5rCis4MDI2IDUyNjEwZWNlZTM2N2E3OTM4YTBiNDE4Mzk5YjdhMzczYWRmN2I5MGIgbGVnYWN5LXRydW5rCis4MDI3IDQzODIyZTRmYzI3ZDQ3NjQxYTRhZGMzZDVlZjY4ZmI0Nzc2ZTkxM2IgbGVnYWN5LXRydW5rCis4MDI4IDM0NTA5YzA1MjY2ZjIyOTg0MThlZjM4ZDBlZDA0YTdjOGNlZmRiNzcgbGVnYWN5LXRydW5rCis4MDI5IDJkZmM3MDdkNmU2ODUxOTViZTg2NmU4OGNiN2Q5OGQ2NjA4M2RhM2YgbGVnYWN5LXRydW5rCis4MDMwIDE4ZmQwNzg2OWIxM2M0OGI4YjUyN2ZiOTE1NThiM2QzMGZmZWQwZmIgbGVnYWN5LXRydW5rCis4MDMxIGI1ZTY0OGZkZTA5OWM5NmZlYzNjYzU5ZjZiMTZkMDEyMDM4MTQwYzMgbGVnYWN5LXRydW5rCis4MDMyIDk4OWY0ZmY3MzQyOTE1YWEwZjhlYWM2ZmRiMzY1MWJlNTkyY2ExNDYgbGVnYWN5LXRydW5rCis4MDMzIGZhOWZhZGE5MTZiNDUzMDM5Zjk5MjcwYmUxYjY4ZDc2NzNjMGFhMzMgbGVnYWN5LXRydW5rCis4MDM0IDQzMjllNDA3N2NmMzkxNTFjZjJiYzYyYmVkMGMzYjIyN2FkNjIzODcgbGVnYWN5LXRydW5rCis4MDM1IGVmM2JhOGI5OWRhMmVmZmZiYTNjZmZiNjA5OTIyMmJjZDllM2ViOWYgbGVnYWN5LXRydW5rCis4MDM2IDFlY2VkMWFhYWQ1YThhNjVlNjMzMGQwYjViYWVjMjUyNzhjNTlhZTYgbGVnYWN5LXRydW5rCis4MDM3IDhlYzI5OGIyNTVhMjBiNjcwYTNmYWQ4MmQ3ODMzZThhNWEyOTcxNjUgbGVnYWN5LXRydW5rCis4MDM4IDRkY2YyNmZlNGRhNTk1MWIwOTlmNWYwZGJlYmYyOGUwYWViMmJlOWMgbGVnYWN5LXRydW5rCis4MDM5IDNmM2QyZDQ3NGFjYTBmNWNhMTNhNDRmNzFhMjYwY2JlNDg0NjcwZTUgbGVnYWN5LXRydW5rCis4MDQwIGYxYjAzODc1OGJkYTkzYjMzZTVjOGNmYTgzOTEzYmFjNTFlOWUzMzAgbGVnYWN5LXRydW5rCis4MDQxIDZlOTQ0Mjc5YTMxNGYzMDA0MDZkZjBiZDJlZmYzY2UyNzA2NjZmZDUgbGVnYWN5LXRydW5rCis4MDQyIDVmZmFiNjVmOGQwNTA5ODhiOTA2ODc0NjUzNWYyZTRmNWY2ODU5MjggbGVnYWN5LXRydW5rCis4MDQzIDE5ZDRhMjg3NDY0NTRjMzQxMWMwZjY1YjNkZDI1YjM4YmZhODU3MTAgbGVnYWN5LXRydW5rCis4MDQ0IDkzMmNmYzVmYzEwNGIyNGQxMTg4OGI5ZWE5NDZjMzk3ZGRhNjhkODIgbGVnYWN5LXRydW5rCis4MDQ1IDEzOWFiMjFkMjYyOWJlNDk4ZjE4OGNjZjg1MzAzOTNiNzNjY2FlMDIgbGVnYWN5LXRydW5rCis4MDQ2IDgxOGNmZmYzYWE1ZDhiY2MxYjUwNjAyYWNkNmNhM2U3NTNlMzFjODcgbGVnYWN5LXRydW5rCis4MDQ3IDExZTJlM2ZmOWZjN2IxOWViYzQwYjk0MDg1OTllZDU1MjIzOGQ1ZDggbGVnYWN5LXRydW5rCis4MDQ4IDNlNjc5NTMwYWZjOWVjNjRhY2VjYmUwZTcyNmM2NmYwOWM5NmE2MTEgbGVnYWN5LXRydW5rCis4MDQ5IGIyMzE4NTVhOTQ3NDRkYmRlMjM4NDJkYjQ3NzdmNjViNjVlMDhjOGUgbGVnYWN5LXRydW5rCis4MDUwIGJmOWYxMDRhYmU3OGE1NWE5ZGU2ZGYxNTk3NTM5MmIzNjE2OGUwODkgbGVnYWN5LXRydW5rCis4MDUxIDg0ZDdjYzVlNjNjZGI3NjVjZGUwYTE5YThmNzMyZmQ1MTg1ZjRlYWYgbGVnYWN5LXRydW5rCis4MDUyIDZhOWYyNjNlMmI0OGNhY2M4Yjg3ZTkzNjc3OWYxYTgyOGI3MDY1MWYgbGVnYWN5LXRydW5rCis4MDUzIGM3ZDgxMmU0YWYwZDNkOTNlMzg0MjBjMzA0ZGU1ZjFiZWY2ZDQ4ZWMgbGVnYWN5LXRydW5rCis4MDU0IDZjNzJiOTFjOGI4M2QxYWMzYjQ1MWY1NWUxNTc5MDI4MTExNWUyMDcgbGVnYWN5LXRydW5rCis4MDU1IDkzN2Q5ZWMyYjU2MDUxN2EyZGEyZjQyYzJlMGFhOTE4NWMzYjFjODQgbGVnYWN5LXRydW5rCis4MDU2IDQ4NmQ1ZTk4OTM4YmJhNGQ0YmZlMTQ0NjM4OTgxNDcwNzNmN2U1YmUgbGVnYWN5LXRydW5rCis4MDU3IGNlNTk5NzNhY2NkZTdlMDdkMjlhY2Y0Zjc0NTYzYzNjNmUwOGNlNTQgbGVnYWN5LXRydW5rCis4MDU4IDdlMmFkOWUzMmUwZDVkZDUzYjhkZjcyM2MwZDVkNjljNTcyMmY2YWQgbGVnYWN5LXRydW5rCis4MDU5IDg3ZDVkN2ZhOGQwN2U2Yjk5NjY0NWZmOTJiNjY2ZGEwNmVjMWNkMWQgbGVnYWN5LXRydW5rCis4MDYwIGVkYmNmZWQ3ZmM3YmZjODllNWU5Y2ExYWVhZTEwNDdlMmY0NzE0ZjMgbGVnYWN5LXRydW5rCis4MDYxIDg1YzUwNDNjOTMxNjc3ZWNhYmU1ODZlODRmMGM1NjQxNTJmZDc1YWMgbGVnYWN5LXRydW5rCis4MDYyIDU3ZGJkYzJiMzAyMjZmMTAzYTAxYWY3YTNlNTg5ZDI4NTQxNTM2YmYgbGVnYWN5LXRydW5rCis4MDYzIDc4NGJhZmI0N2UxZjZkYmY3NGJlMGI2OGZhODhhYzExMmZlYzVjMjYgbGVnYWN5LXRydW5rCis4MDY0IDZhNDhhN2U3MTFkODZjYTIyYWFlYjUwNjEyNzFhYmUwMjliYjE3ZDAgbGVnYWN5LXRydW5rCis4MDY1IDUzY2RmOTRiNjUyYjgzZTU2NTJmNWM3MTBlOWViMzRmZGQzOTgyOGQgbGVnYWN5LXRydW5rCis4MDY2IDc5NWNhOTc1ZDk2Zjg4ZTI4M2NiZGY2NmJjNTljMzEwMjExYThiZjQgbGVnYWN5LXRydW5rCis4MDY3IGYzZjY1Njg3ZTQyNjBkYWRmN2RkYzA5ZDFlNjgxMTA3NjM3YWFiOGQgbGVnYWN5LXRydW5rCis4MDY4IGRhNDc1ZTEwN2E2OGY3NjhkYzRkYTMxYTBiZTgxNzUwYTkzZjU4ODIgbGVnYWN5LXRydW5rCis4MDY5IGUzZDUyNTgyZDM2MDc4MTBkNWUzZDkyYWZjNDA0OWRkZDc3OGQ4MzIgbGVnYWN5LXRydW5rCis4MDcwIDQ1MWM3Y2NmMzZiNjdmMmQxYWY4ZjQ0YzAwNjYzZWM2MTUzYTMwNjQgbGVnYWN5LXRydW5rCis4MDcxIDRjNDYyMWFhOWU3Njc3ZTYxMDk2M2MzY2QzMDIwMWIyMzZkODZhMTQgbGVnYWN5LXRydW5rCis4MDcyIGM1YTU2N2FmMTNlZTdjZjNjYTkwOGRkZGFmOGNiNzNhNzAxMTViZjUgbGVnYWN5LXRydW5rCis4MDczIDJlMmJiZTk4NTYyMDIyMzU0ZGJkNTlkNTEwYmNlNjYxZDExNWIxOGMgbGVnYWN5LXRydW5rCis4MDc0IDU1MTY5MTVmZmVlN2Q3ODI3NzFiMmYzMzc3NjhkMzAyMzdlMjE4ZDggbGVnYWN5LXRydW5rCis4MDc1IDFmMjA2YzkxZGFlZTE4MDBmOTNjOWVhYzM1OTM1MmUzYjliODUyZTggbGVnYWN5LXRydW5rCis4MDc2IGI1ZTUxYWU5ZjgzMmU1YTM5ODYwZTg0MmQ4NDE4YTlhMDdjMjBiNzYgbGVnYWN5LXRydW5rCis4MDc3IGQ5NTRkYzI0M2ViMDdhYWM1M2Y5NjUxYzcxYjA4ODMwY2IzMDUwYmMgbGVnYWN5LXRydW5rCis4MDc4IGE2MTAyM2JjYTBhOTc0Mzc5ZGE3MTU0YTMzMGExNDU4NzkzNmQwNWUgbGVnYWN5LXRydW5rCis4MDc5IDAyOTRhNjdiZmJkYjQzN2ZhY2FjNDIzOGZkZTUyMjg5ZTFjZmZmZWEgbGVnYWN5LXRydW5rCis4MDgwIGY0MzU1OWQyM2IzZDY4ZTk1ZWI2MWJhMzdhMTcxZWJkMGZlY2RjMGIgbGVnYWN5LXRydW5rCis4MDgxIDg1OTgwZWE1ZTgwNWNmOTkwZDI4M2RlOGRmNTI4Y2UyNWZmZTQ0ODQgbGVnYWN5LXRydW5rCis4MDgyIDg5YWY1YmY4Zjg3MzIwNDdjZDZiOWYyNjFhNzk3ZTlhMjYwNWFhNWIgbGVnYWN5LXRydW5rCis4MDgzIDQ5NWZiZGU2NGE3M2I1ZGI2YjlkMmM0YmMzYjkwOTI1ZDBiZWY5Y2EgbGVnYWN5LXRydW5rCis4MDg0IGNiYjRlM2NmMDg2ZTIyMWFkM2RmYjU0NGMyMjE5MTIwMjM2MzlhYTUgbGVnYWN5LXRydW5rCis4MDg1IDc5ZTQ5Y2JjZTJlZmQyZjBjNmI5YzM4NzA5ZjBjZTBiMzIwMjczZWQgbGVnYWN5LXRydW5rCis4MDg2IGYyOGVlYTAyY2Y5NDQ2MmJiOTk1ZmFiMjQ5MzE4OTY0ODA4MmQ4MWEgbGVnYWN5LXRydW5rCis4MDg3IDEwZTljZmEwMTBmMDg5NzYxZmU3OWM5NWNkN2NjMTNmNjcwZTY1NTQgbGVnYWN5LXRydW5rCis4MDg4IDVlZDNhMjFjYzEyMjljMTc5ODg1MjQ1M2MxZTdmZDRkOTFiNTMxYTMgbGVnYWN5LXRydW5rCis4MDg5IDhkNDA1ZjcxMjgyZjk2ZTAxNjhkODYwZGYxMjdhNTAxMjViYjBlODUgbGVnYWN5LXRydW5rCis4MDkwIDE5MGUzNWJiYzE1YWUyMzI3ODdkZTdiMjA5NTMxZmQyMDBjNmIyNDcgbGVnYWN5LXRydW5rCis4MDkxIDcyNTRlZTJhOGFiZGE3MDg5YWQxNDBjZWVmMmNlNjg0OGZjMWZhMTQgbGVnYWN5LXRydW5rCis4MDkyIDNiYTA4ZDZlOWI3ZjI4NDFiMjgzNTRlMDM2OGMwODYyZWJiMzcwYzIgbGVnYWN5LXRydW5rCis4MDkzIGJhZTJjMDE4OWY4NTk0YThhMzY2NjIzNzM2NjcwZDA3ZjU1NzQ4OTggbGVnYWN5LXRydW5rCis4MDk0IDcwODU1NTc0NTE2Yjg2Yjk4YzUxNThkZWExZDExNDI2YzJhZDBhZDMgbGVnYWN5LXRydW5rCis4MDk1IGZkZDFlMWE1MzBhZjhjMDdkNWMyNzIyZWVhZjJiMjYxOTA3NjNjNDkgbGVnYWN5LXRydW5rCis4MDk2IDdmZGE3ODQxZGI5MTgyZjhlNzg0N2FkMjA0MjE1MjRlNzFhNTRhYjcgbGVnYWN5LXRydW5rCis4MDk3IDA1NTZlYTY4N2E5N2Q4MTgxMDU5NDBhY2RlODZmZWFhN2MxZDFmM2UgbGVnYWN5LXRydW5rCis4MDk4IGUxNDEzZmE2NGI4MzFiNzQ1ZGZhNDVjOTc5NzIzYzI2YzNjMTY0YjggbGVnYWN5LXRydW5rCis4MDk5IGY4ZTQ1MmExZjY0NDgzYmNmNmVkMGIzY2QzNGIwNWNhNTJmMWJiNWUgbGVnYWN5LXRydW5rCis4MTAwIGZhNmM5MWE1ZjQxYjc4Mzg3NTVlMzM3OGY2NTY0NjllZDI2ZDlkZjIgbGVnYWN5LXRydW5rCis4MTAxIDMyYmFmYzllOWM0ZmMzNmM4MDlhZjYzMGYyNzBhYjQ4MGJkMjc0NGQgbGVnYWN5LXRydW5rCis4MTAyIGFjZmNlMDE1ZGZkZDM2ZGVlMGFhYTFiNWExYzBjYjllZjc2MDQ4MGMgbGVnYWN5LXRydW5rCis4MTAzIDY5NmU3NTQwNjRjMzdmMGI2OTMxYmIxYTUwYjM5NWQ4NTBmYzFkYjIgbGVnYWN5LXRydW5rCis4MTA0IDRkMTJlNmU5YzI3ZDFlNTM2OGE3NDUwYjkzMTlkYjM1Njc1ZmIzMGQgbGVnYWN5LXRydW5rCis4MTA1IDk5MjQ4MjVkYTRiM2E2ODUwMmUwMTA3MmU3OTIwMzFiNmJhYjJlZDMgbGVnYWN5LXRydW5rCis4MTA2IGU2YTIzM2ZjOGI5YjQxNGFkMjY4Mzg0NmYxMjY1YTUyY2ZiZDdjNWMgbGVnYWN5LXRydW5rCis4MTA3IDhhZjhlZTc5N2MwOTUyY2Y3MTJmODM2ODY0OWRiYjQwMjFkNTYyNGIgbGVnYWN5LXRydW5rCis4MTA4IDhjNTRjNzc3Njc0NDkwZTgzYmMzYmMwN2RiODIxZGFkYmZiNTNjZmYgbGVnYWN5LXRydW5rCis4MTA5IDAwZmM0MTNhM2I4YmM3NmViMjhlNTQ3MTkyNDQ5YjMyZjNiN2JhODUgbGVnYWN5LXRydW5rCis4MTEwIGM2OWM3NTlmNDM2NmM1NjA1NWQwNGFiOGRiMmRhZTgwMTVhYTdjMzIgbGVnYWN5LXRydW5rCis4MTExIGVjOTdmNDFjN2EwNGViNDNkODk0ZTc1ZDQxMGIxODRjZGE0OGMyY2QgbGVnYWN5LXRydW5rCis4MTEyIGFjYzU1ZDcwNDY3NDc4ZTBlZWU4NGFjNTk0MjQ4OGQ5NDU1OTYwMGQgbGVnYWN5LXRydW5rCis4MTEzIDc1YmE2NGM1NWYyZTEyYzk1MDRjZGVhYjU2MWRlZGQzODg0NGI0MDAgbGVnYWN5LXRydW5rCis4MTE0IDE3Y2E3ZTRlOGZkNmU4MWZkOWY0OGVjMDVjNzg3ZWU2OGIwZmQ3OGEgbGVnYWN5LXRydW5rCis4MTE1IGY5MTQzOWQ4ZjY2ZTQ3MjZmZjFmMjEwMTk4NzhhODBkODY3YWM2NmUgbGVnYWN5LXRydW5rCis4MTE2IDQzNzA1NjQ3ZmViOTI5N2Q1ZWUyZmE1MmFhYzYzN2Q5NjRmZmQ1NjQgbGVnYWN5LXRydW5rCis4MTE3IDU3YTI2MWZhNTk2YzZmMjY0YmM3ZGQ3OTAyYTQ1MzllNzYyOTVkZjQgbGVnYWN5LXRydW5rCis4MTE4IDY1ZWE0MWYyZDM0ZDgwZjc3NWU5MWZjZmUwNzJhOWY1MjE0NmY1N2QgbGVnYWN5LXRydW5rCis4MTE5IDBlZjcwMmI4MDQ2YmE2ZmEzOTkxODU3ZDQ3NGNlZjViNTJiMGI4MDcgbGVnYWN5LXRydW5rCis4MTIwIDk2OTQ5YjlmNDJjYjkwMjRkNTM4OWIyOThkNTVhZTc4NjJkY2Q1MmEgbGVnYWN5LXRydW5rCis4MTIxIDdjMjA5ZGFiZDhjODAwMDJjZjZlZWZlZDA0NjFmMTQ0ODA4MjkzYmYgbGVnYWN5LXRydW5rCis4MTIyIGU1OTM3NGUyM2ZkZjZlNDY1NmJjNzVkMWE5MTMxYjIwMjY1Zjc3NmUgbGVnYWN5LXRydW5rCis4MTIzIGM2M2UyODNiYjJlNDY2MTQ4ZjdjMWFmNTRkMDZjMGM0OWQwYmVmZDcgbGVnYWN5LXRydW5rCis4MTI0IGI0OWQ4MDM3YTVjYmFlM2Y0MDRjNDdmNDZmNDMwOTkyNmJjMDRkYWIgbGVnYWN5LXRydW5rCis4MTI1IDBjYzk3ZTc1YTM2MTM5MjlmNGM2MDk1NjA1ZDgxZDU5MjAzNzQxMjQgbGVnYWN5LXRydW5rCis4MTI2IDA3ZTFhYWIyMzExNTM0MjNlZWZkNTUwMzU2NWI2YmI4ZTNkMThiM2QgbGVnYWN5LXRydW5rCis4MTI3IGQ0NWRjN2ZlNDJhZjllM2U5ODYxNzhmN2QwZmFjOTdlYmU0YTNhZTYgbGVnYWN5LXRydW5rCis4MTI4IDk1ZDZlMTc5NTVlZmM4YmJkOTI0YTQ2NDU1MmU5ZmM1M2VhMGJhNmUgbGVnYWN5LXRydW5rCis4MTI5IDYwMDlkNTM5MDU4NDhjZWY5MzkxZDVkMmUwZjc4NDAzOWY2YjMwMDQgbGVnYWN5LXRydW5rCis4MTMwIDMwOTYwMmM4NzkyOTI0MTY5Y2YwNzljOTE5MzQxYjEyMDc1NGU0YTcgbGVnYWN5LXRydW5rCis4MTMxIDhlMTRkNTRhNjQxOWQyOWM5ZjNhM2ZmMDJiMmYyN2UzMTgzMWE1MzMgbGVnYWN5LXRydW5rCis4MTMyIDBiNTc0MmQzMTg5YTI0MGVlNGUzOTczOWFlZWNiNzA3ZGFhMzRhYWEgbGVnYWN5LXRydW5rCis4MTMzIGQxNzVjYWM1NTBiOThhNjE4ZTQzNTU3MmFlZjU1MzliODZlYzkxMzcgbGVnYWN5LXRydW5rCis4MTM0IGRkZWQ0MzliN2I4YWIxNjEyMTliNzdjNzFlNzA4ZWE3OGU2NjkyMDEgbGVnYWN5LXRydW5rCis4MTM1IDEyNjVjYTQ0ZjA0YjliY2M5ZmY5OWRkYjljZTI4NmQwOTJkYjc1YjUgbGVnYWN5LXRydW5rCis4MTM2IDZmOWEyYzg3NDAxOGVkOGJmZGFlMDQyZGJmYmI1ZTQ5ODJmMDQwNzUgbGVnYWN5LXRydW5rCis4MTM3IGVmZGVlN2Q0MzI3MDRkMDdhMzc1NDVkZTBjMDVkNGJlZWY1ZjRhMDIgbGVnYWN5LXRydW5rCis4MTM4IDNkYjc1NGFiZmYzNjJmMDkzZWQ4YjgxZjMzODRmY2U3YzkxMmRjYTAgbGVnYWN5LXRydW5rCis4MTM5IDZiZDNhMmNlYzM1MzBmZTdhMTFkMTJiZTY1NTc0MDc4OGY3YmNjN2YgbGVnYWN5LXRydW5rCis4MTQwIDE4MTQ5OTgwZWNlOTgzNjllNzM3NGJlNjJhZTU4YTUwYjFlN2UyMDYgbGVnYWN5LXRydW5rCis4MTQxIDFkZmE0ZjE3ZDhmZmY2MzFkZTBkNzkwMjYwZDQ3YzEwNTA4NTg0NTMgbGVnYWN5LXRydW5rCis4MTQyIGI1YmJlNTIyMGY2YmFhOTYxMzFjOTA2NjRmZjgwY2JmNzUzZTViZGIgbGVnYWN5LXRydW5rCis4MTQzIDM0NzA2ODlhOTdkNzJhMGFlYWMwMTczOTBkODQzODEzNzljMGUzMzYgbGVnYWN5LXRydW5rCis4MTQ0IDRhNTg0OTdjMTRhODE2N2IzMWNkOWQ1ODBmMTdhMjNhZDFiMjI5NGUgbGVnYWN5LXRydW5rCis4MTQ1IDY3Njc5ZjJlZDIxNzYzYjE0NmY4NDEyOTk5NjE3ODAwZTQ1OWEwNjAgbGVnYWN5LXRydW5rCis4MTQ2IDg1MTM0Yjk3YWU0ZDU0MDcwNmMzNmU3ZGZkZDIwOTkyMGFiYWM4N2MgbGVnYWN5LXRydW5rCis4MTQ3IGMzNTAxYTlkM2MyMDU5ZjFlYThmOWExNDVjMTQ1YzIzNjQyNjdiMDUgbGVnYWN5LXRydW5rCis4MTQ4IGQ2NjMwNDk2M2NhN2ZlOTE2ODBjZWQ2N2ZlYTc1ZjU4YzllZDUwNmMgbGVnYWN5LXRydW5rCis4MTQ5IDE5MjZlNjQ5MmQzZjc4ZDU1MGI1Y2JmODEyMzU4NDhmMjFiNmE0YjkgbGVnYWN5LXRydW5rCis4MTUwIGE5ZmZkZmYwNTU3Zjk1ZWY2NTlkMzY5NWYxZmUzN2ZkYjMyODA1NTUgbGVnYWN5LXRydW5rCis4MTUxIGU1ZGU3MDczMDBlMTdmMDc1NDczZTk3OTM3NjE5ZDFjMGZjYWYwZWYgbGVnYWN5LXRydW5rCis4MTUyIGZkNmFjYWQ3Y2M3YTk3YTRkZDQxYjU2ZDc5N2I0YWZjNDYyZWNhNzUgbGVnYWN5LXRydW5rCis4MTUzIGVmOGExNTkwMmE0ODdhYzE4YzMxYzljOTk3MjE0ODE2YTRhY2ZiMDQgbGVnYWN5LXRydW5rCis4MTU0IDZmZGExZTZlMjYxNmNiNTdiMmEwYTAxYzUzMTg2YTE3M2UwNGZhMmEgbGVnYWN5LXRydW5rCis4MTU1IDY0ZTYxMTY1NTg5YTc5MzE5YWQ4OTZhY2Y0NGM3YTI5MzJiNDRlNDYgbGVnYWN5LXRydW5rCis4MTU2IGQ1OTExY2E4ZDRlYjNhZjRjZmMzNGY2ZDdjOTQ5MDM1ZjQ2MmIxMjIgbGVnYWN5LXRydW5rCis4MTU3IDEyZDY0Y2RiYWFhMjNlMmMzNzQyYTU1MDllMzI3MDkzNjBiYzBhMDUgbGVnYWN5LXRydW5rCis4MTU4IGQ4OGNiNGQyNmYxM2VkMzgyNTljOWZkNmI2NzBlZDliZjQ2OGIzMjYgbGVnYWN5LXRydW5rCis4MTU5IGVhNzJiZmUzOTViYTIxNjFlZTlhNWQ1NzAzM2Y2ZDY0MzE3ZGE4NzIgbGVnYWN5LXRydW5rCis4MTYwIGNkMWFlNjJlZDJjZmZjM2I4YWJlMGFmZmM0ODJjNTNiMzRmMmZkZTggbGVnYWN5LXRydW5rCis4MTYxIGEwODMxZGUyMzU4YzMwZTIyODI0MjUwZGQ0YjAzYjA1Mjk1OGJjNzcgbGVnYWN5LXRydW5rCis4MTYyIDA5ZDg3YWQ3NTI3ODk4N2E5ZjU1Y2I5ZTZiM2E2YWQwNWVhMTE2Y2QgbGVnYWN5LXRydW5rCis4MTYzIDIwNzdhMzJkODU4ZWY2NTI1Y2YyZDYwMzM4MTViOTM2ZTA0ZmQyNDMgbGVnYWN5LXRydW5rCis4MTY0IDhiN2ZhY2U5YjFhNzgyYTY5OTkxYTQwZTkxMjJkZjJlMTFiMGRkYjAgbGVnYWN5LXRydW5rCis4MTY1IGU3OGQxZTBlY2M1OTg3YzIzYzQ3NWYzZTYyNzRjMzMwNTllNDZlMTEgbGVnYWN5LXRydW5rCis4MTY2IDUyYzEzZjEzODllZmFkNDg5OWIxOTkwY2UwZGU0ZTI2YzBlNzQzZGEgbGVnYWN5LXRydW5rCis4MTY3IDRlODE3YjJhZDk5MTBiYzk2MDM2ZjI5NTViNjI2NzcxYTdhNDJjOWMgbGVnYWN5LXRydW5rCis4MTY4IDM4MzgzYWRhMzg4ZTlhMDI0OTFmOWY3ZTVhMjJlZWViNGQ4NjlhY2UgbGVnYWN5LXRydW5rCis4MTY5IDQ0MjhmMTA4NGI2YzY3MDM4ZWFmOTQzZThjMGE2ZGE3ODY5ZWVlMjYgbGVnYWN5LXRydW5rCis4MTcwIGE5N2ZkZTI4MThmYmU0MGYzMWQ3NzBiMGNmYjZiOTIyYzFhMDI4MDAgbGVnYWN5LXRydW5rCis4MTcxIDAxMDkwOWRmYzMzZTJlMDZjMmY2Y2QwYjg2MTY0M2I1MDM2OGEzM2QgbGVnYWN5LXRydW5rCis4MTcyIDAyZWE5ZDAyMTQyNzQ3NjFmZWRiMjk4ZTM0M2NjNzMzYzNlMGJiMTUgbGVnYWN5LXRydW5rCis4MTczIDliNjIxYWMwOTIxMjFjMjU2Y2ZmMzQ1NDE3YTE4N2UxOGMwZTkwZmUgbGVnYWN5LXRydW5rCis4MTc0IDg4YjBiMmEzYWFiNTZhNWE5OTcyZWEwMjVmZmRiYTllZTczNjdmMWYgbGVnYWN5LXRydW5rCis4MTc1IGJhODYwZGMwYTU4NTE0ZjE2OWM4MGUxMmU3NGUyNTI0ZGVhYWUzNTkgbGVnYWN5LXRydW5rCis4MTc2IDc2ZmQ1MjgxZjk4YTdiOGY4MzhkMzg5Zjg5NjAyYTA1NDZiZDBmN2YgbGVnYWN5LXRydW5rCis4MTc3IDYwZmNhNDc4Mzc5MzU2ZjhkOTNkYzRmMmExY2UyMjUxZWJjZGU3ODcgbGVnYWN5LXRydW5rCis4MTc4IDNhMWJiMWM5OGMxNDBlOGI0ODI0MjkxZjFjMTcyZGUxZjI2ZDUzMjYgbGVnYWN5LXRydW5rCis4MTc5IDU3NjY1NzAzODFmMjRhZTk3OTMyODBjZTUxNGZlODQ1MTE1ZGI1YWEgbGVnYWN5LXRydW5rCis4MTgwIDAzZGQxZGVkNWNiM2U4NjRlNGZlMzAwYzVkNzA3YTlhZmJjYmNjNjMgbGVnYWN5LXRydW5rCis4MTgxIGM2NjIzNmI3Y2M2Y2E0YjRjMmM0YmFiMThhYWUxY2QyNjdlMGZiYTEgbGVnYWN5LXRydW5rCis4MTgyIGJhMDliNDA3YTBiYjkzZjY0YTU1NjUwZDFhY2M5ODc2ODNhYzk5OTMgbGVnYWN5LXRydW5rCis4MTgzIGY4YmJkNzFmYjgxOWE1NDM5YmQ3MjFiOTgwM2I3MDRmNTkyNzJhMTIgbGVnYWN5LXRydW5rCis4MTg0IDQwNGJhMDE3YWQ0MjdiODAwMjIyMjVlOTA1OWFjYTc4NGY0MzQwMzEgbGVnYWN5LXRydW5rCis4MTg1IDk5Y2QzOWY2YTUyZGIxMzBkZjI4MmMxYjcyZjkyYTllYWI3ZmQwYTQgbGVnYWN5LXRydW5rCis4MTg2IDY3MTgzMjQ3MGFhMTEzNDc2ZWQ1NDBmMmFmMWFlNGUzODU4YjU5MzYgbGVnYWN5LXRydW5rCis4MTg3IGYxZGEyOTQ3NzJjZjJiNWZkOWZlMzE2ZWM4ZWNiN2VmOGJjZTc0YjUgbGVnYWN5LXRydW5rCis4MTg4IGZiMTcwY2U4Mjk1MTI5Mzc0ZDQzYzI4OWI1YzZlYjcxZWRiYTRhNGMgbGVnYWN5LXRydW5rCis4MTg5IDQzM2M5ZTdlZGI2MDg5MDdmYmQ5Mzk3NmQ1NzFlMGNhOGVjZmZiYTggbGVnYWN5LXRydW5rCis4MTkwIGVjZWU1NWJhYWNlMzA4OTZmMWIyZWIxZDNkMzdhYmFjNDlmM2MwZDEgbGVnYWN5LXRydW5rCis4MTkxIGRlZTBhNThhOTEzMjIyNjgwOGEzNGRhODVkZGViNDFmMTM2ZTAzODAgbGVnYWN5LXRydW5rCis4MTkyIDM3NjM1ZWVhM2JjYzgzOTdkZTQxOGE0MmFmMzg3YWNmOGQ4M2UxYjEgbGVnYWN5LXRydW5rCis4MTkzIGNlNjRhODEzOTIxNjY2MDU1YTkzMGI1MjQ5NGIxMTExYjRkNTNlYWEgbGVnYWN5LXRydW5rCis4MTk0IDNjNjc0MzZhMjhlNjFiMDBjNWJkNTA2NDNmMzU4ZTQ4ZTcyNjg0ZjMgbGVnYWN5LXRydW5rCis4MTk1IDU1ZGZmODE2OWNmNTRjMDMxYThkODQ2MTE4OThjYTMzOGMyOWNkODQgbGVnYWN5LXRydW5rCis4MTk2IDNiMzhlOGRiNWYyMWZkZmVjZDY0NzQwZTU4NzJmNmVkM2RmZDM5OTkgbGVnYWN5LXRydW5rCis4MTk3IDYxM2JkMjM3Y2Q1NWM1MjExNGM5YzYwNWE0YWJmODNkZjJhNzhlMGIgbGVnYWN5LXRydW5rCis4MTk4IDEzOGIxNzZlYzQwZjQzYzRjMGE1Y2M0NDdkNjU1MjI2OGE3NmU5MDggbGVnYWN5LXRydW5rCis4MTk5IDZjOTczNjg2NTYwODkwNTVkOGJiZjU1YTM2NWQyZDVlZmQyYWFhMWYgbGVnYWN5LXRydW5rCis4MjAwIGJlZWUzNTFmMWY3MmFlZmY1NjFlZGZmODY2YTkyODFmYjlkYTYxN2IgbGVnYWN5LXRydW5rCis4MjAxIGY5YWVhNzM4ZDQzNTFlZDE0MDE4NTA0ZjA2MThlZTljMWExNzU2Y2YgbGVnYWN5LXRydW5rCis4MjAyIDlhM2IxMTVhYTQ5MTkwZWZmZGMwYjdlOWM5ZWJlMzc1NWRiMGJmNjggbGVnYWN5LXRydW5rCis4MjAzIDU3YTdiYTE0MTJlMjY1ZWJiMzAyMTc0YzQwOTE2ZTY3M2Y5OTAyZDIgbGVnYWN5LXRydW5rCis4MjA0IGUwZGEzZDg5ZDRiNjVmYmFiNWQ3Y2IzM2VhZDA5MTA4MTFhZjBhY2QgbGVnYWN5LXRydW5rCis4MjA1IDA0YzI4Mjc0YzI4MTgxMjA5ODA0MDg3NGZiM2RiMjk5NTlmOTZjMWEgbGVnYWN5LXRydW5rCis4MjA2IDYxN2YyMDMzOTRlNzNmODVlYjMwNTg0OGI1OWM0ODliNjFhNzU1NTYgbGVnYWN5LXRydW5rCis4MjA3IDk5NjA3OTc0NDU2NjVkNjJiYzg5ZDVjMjY0ODQxNzMwZjYzMmUxMzQgbGVnYWN5LXRydW5rCis4MjA4IDc1NzYyYzY3MjAwY2FmNzcxNDE2ZWM0MjI5Yzg1YmNkODFkNzJjODkgbGVnYWN5LXRydW5rCis4MjA5IGYwMjdkZDBhODVlNGU1ZWRjYjBhMWRkMDQ5ZDIzN2U2YjM5MWE1ZGYgbGVnYWN5LXRydW5rCis4MjEwIDhmNmNjNzE3ZDgxN2MwN2JmYTdjNzM2NGY2YjYwY2Y5OWFkYjdlYjcgbGVnYWN5LXRydW5rCis4MjExIGE5NGIwYTEyMmM5ODY5Mzg2ZDNiZjVmODg4YWY2NjcyMGIxYWY1MTIgbGVnYWN5LXRydW5rCis4MjEyIDYzNDcyOGQ4YmM5OGNlYmI1N2U1MGM5MWJiZTAxN2MyZTNmOWEwZWQgbGVnYWN5LXRydW5rCis4MjEzIDRkY2E1MzI5ZThmYzZkZDM1NmU3ZmE1ODE1ZDIwNTJiMmY5NGNhM2UgbGVnYWN5LXRydW5rCis4MjE0IGQwYzZiNDlkNzEwMThlMzc0NWIwNjA2ZWQxYzQyMzRmYTg1MGI3OTkgbGVnYWN5LXRydW5rCis4MjE1IGMyOWZjMTdkOGU0ZmQ0OTc4M2I5OWU3YjZlZmMxM2YxMzQ5ZGMzYmQgbGVnYWN5LXRydW5rCis4MjE2IDcxZTExMDgyZDczMjM1NDczZjE1ODJhNWYxMmM2OTRiYjFlMDhmZjggbGVnYWN5LXRydW5rCis4MjE3IDZhMjE4ZmE4YmE5Yjk4NzRkMGVkY2U0YmRjY2Y4Nzg4MmFiYThhY2IgbGVnYWN5LXRydW5rCis4MjE4IDEzODQ2Mzc5MzQ3ZGE1MGU4MWQ3OWE1N2UzYjMwZjg3MmI0ZDNjY2QgbGVnYWN5LXRydW5rCis4MjE5IDgyN2EyZjNlNjQ4MzJhYTAwN2YyZmJmMGZmOGUyNmY5NmE3OTBlNWIgbGVnYWN5LXRydW5rCis4MjIwIGM2MDZkZDYxNTQ0YWUwN2IxOTc3NWM1MWQ5ZTIyZjI5NmRhOGJkNDkgbGVnYWN5LXRydW5rCis4MjIxIGVhOGEwYjA5MDkwOGJkNGQ2OGFmOTE0YWVjYmRlMjExMTc4M2UwODQgbGVnYWN5LXRydW5rCis4MjIyIGUyMmVlYTVkMTI2ZDliNDA4ODhiNjQzMDM3ZjNmZjNmNDRiMjBjNjggbGVnYWN5LXRydW5rCis4MjIzIGFiZTg2MzQ0NjZiMjM2YzE1ZjM4YjMzNDY5MDhiNGU2OTQ4YmM1OTEgbGVnYWN5LXRydW5rCis4MjI0IDQ5ZTBlMDcyZDljYWI1OTdjOWZmYWE4ZTc4MjViNjBjNWQxNjYwNWUgbGVnYWN5LXRydW5rCis4MjI1IDFjMzRhMGNlNzg1ODU3M2IyZTMwNzA4YmNjZjc2YTI5ZDhiNjJlOWUgbGVnYWN5LXRydW5rCis4MjI2IDIwZTYzOTk4NmZiOWJiMmQzYWRiZmE3MWMxODBjYjBkNGZlODE4MDcgbGVnYWN5LXRydW5rCis4MjI3IDVhNzQyOWFjOTBjODNiMWJiMTQzZTljNWIzNjExMzhlNzg5MGM3NDEgbGVnYWN5LXRydW5rCis4MjI4IDg3ZDY1OGExMjhmOTFiNWM2ODJjMTZlMmE2NTBhN2U5MDRiYjNkNzIgbGVnYWN5LXRydW5rCis4MjI5IGZhNmQwMTNjOTQyYjA3NzVhN2JhZTI0MDFmODJmYjljMzQ2NWNmODMgbGVnYWN5LXRydW5rCis4MjMwIDY0YmM3ODJhNDJlYzczMTU5YWVhZjA3YjQzZDA4YzVjODVhMDA1NTUgbGVnYWN5LXRydW5rCis4MjMxIDllZDI2YWZlZWFhNTJmY2IxNjU4YWQwMjM2ZTk0MDZlNTkyY2MyNWIgbGVnYWN5LXRydW5rCis4MjMyIDE4YTYzOWRiMDQ4Yzc5OTBhZDc1YTQ1NjIyNTBkNzRmNWM1N2NlOTUgbGVnYWN5LXRydW5rCis4MjMzIDRiNDJlZWExMGEwMjllNjMzZmI4ZTM2NzgxOWMzZDY3YTEyYzhjYjkgbGVnYWN5LXRydW5rCis4MjM0IDhjMGY3NDdmMTE0MTlhY2ZkYWRmZmIyNDE2Y2ZiNjM2YjQxMGZlNDcgbGVnYWN5LXRydW5rCis4MjM1IGJmZTliYTc0YzE5ZWQ3NmVkNzhhMzAyN2VmMmJmM2NmY2M2NjljNjggbGVnYWN5LXRydW5rCis4MjM2IDkxOTM4NmZiM2U1MDQzMzIyNzU3YmFiOTAzNTI3MjY1MWVmNzc0MmUgbGVnYWN5LXRydW5rCis4MjM3IDIwMWM4ZDA2ZTNiNzg2NzUxOWZiMzdmZDgxNzZiYmVlZDYwOTIwMjggbGVnYWN5LXRydW5rCis4MjM4IGE4ZTMxZDkwNWQyYzBmZTk3NmYwMmQzNWUzNDczMjkzYTVlNDA5YmEgbGVnYWN5LXRydW5rCis4MjM5IDc5YmI5OTk3Y2U1ZmFhMGI3ODZkNDYzZTgzYTFlZDllNGZhOTAwMDMgbGVnYWN5LXRydW5rCis4MjQwIGZkNGU5ZjI5M2M3N2E4YTg0ZTRmYjg0MzJiZjM1NjM2ZDZiZmI0YjMgbGVnYWN5LXRydW5rCis4MjQxIDYyZmU4MDBkMTcxYTc4MGMwZTA1MTk5ZDZkMmNkOWQ5NWMzMTNiODEgbGVnYWN5LXRydW5rCis4MjQyIGQ2NDIxYjNlZDFkYTY1YjQ4OTAxYTM2MDFhYmIwMjU5NzZhM2Q3NzYgbGVnYWN5LXRydW5rCis4MjQzIDMwOWFhYjRjMGI5OGU1NzQ0NWFkOTc3ZWJiYTdmMmZmYmViNDAxOTcgbGVnYWN5LXRydW5rCis4MjQ0IDAzYTU3YWY3MjIxODljYmZhN2RmYzkwOTdiYTZmZDRmZmYzOTNkMmEgbGVnYWN5LXRydW5rCis4MjQ1IDdkZTU5ZjQ3ZTg1YjljYWRmMTc3OTlkZWRkMTQxYjA4MDQ0ZjE1MjUgbGVnYWN5LXRydW5rCis4MjQ2IGI3NjQ5NDkxYWU5MjQ2YTRkZWNmMzk1NjFkMzYzNWQ2ZjQwMjBiZDggbGVnYWN5LXRydW5rCis4MjQ3IDM4ZWYwOTE5NjRmMDIyZmEzZWI5NWVlNDU4ZjE5ODMxMWNjNDhkZTYgbGVnYWN5LXRydW5rCis4MjQ4IGZiOGYwNzllNGVmZjg2ZjY1OTVjOGRkZjczYTgyNDRjYjFhYjQ0MDIgbGVnYWN5LXRydW5rCis4MjQ5IDVmN2RkYjdjYTM0N2NmOGYwNWUwYjk0NWU1Y2U2YzVkYzhjNzAwMTEgbGVnYWN5LXRydW5rCis4MjUwIDc4MzE5MjIxZWRiMmYyOGNkYWRkMWJjZDJmMThkOGU2ZjY0YmRiNTEgbGVnYWN5LXRydW5rCis4MjUxIDNlZjI1NjNlODNlZTM5MDkwYWNkNjEyYjE3YjdmODYyMjdkODE2ZWIgbGVnYWN5LXRydW5rCis4MjUyIGM2MGJlYjU2MjVlNzAxNjVmOTc4ZGFkM2MxYjMwMDk4YjI4ODRhY2IgbGVnYWN5LXRydW5rCis4MjUzIGY2ZGUwNTAwNTU3Njk1YWE3MThmZGYwZTczMjM5ZDM4NWU2YzgzZTggbGVnYWN5LXRydW5rCis4MjU0IGI0NDljZDg1ZDUxOTcxOTkzZjBmMGQwZjdjMzY2YTc0MGUxMTljY2YgbGVnYWN5LXRydW5rCis4MjU1IDA0OWQ5NGZmYzA2YTAxMjY3YmUyMTU3ZmUzZTI5NGZjNGJkMTEwMTIgbGVnYWN5LXRydW5rCis4MjU2IDM0Mjg0ODdiMjlhMzg1Yzk2MjYxMGExMmExZmQ4ZTA3YzQzZjAxYzAgbGVnYWN5LXRydW5rCis4MjU3IGJiMGFjZmQ0YjcyMGFmZDdhMDUxZjBmNDg0MDU4YjYyZTk1ZWE1NWYgbGVnYWN5LXRydW5rCis4MjU4IDNiOGQwMDQwM2RiODVkYzM3NzMzZWFhNzNlMDI4NTczMGUzY2I2NzggbGVnYWN5LXRydW5rCis4MjU5IGI4M2VjZjZmODczMDBjMWI0NzcyMTNjMmJjOTM2NDE2MjRiMzY1YzcgbGVnYWN5LXRydW5rCis4MjYwIDljZmJjOWJiNjQyM2IwOGJiOGFmNDViYmYxZGM4ZWU2Y2I4MTY1MDEgbGVnYWN5LXRydW5rCis4MjYxIGMwNDM5MDFmYTFmZWJjYmZhMjRjYzdkMDNkNTZiZWU5OWRkY2ZhOGYgbGVnYWN5LXRydW5rCis4MjYyIGIyNDcyOTdiZTlhMDI1ZWM2NGI1NTAyNmM4MTEyM2UxMGEzNTlhZTcgbGVnYWN5LXRydW5rCis4MjYzIGM1Njk4NzNlZWIxNWQ4MmYxYmViNDg3N2ZkOGM3NzI4NjM5NmNmYTMgbGVnYWN5LXRydW5rCis4MjY0IGI0MjBiNjRhNDA5NjdiZjc1NWY3MzA0ZDA4NWU4ZTI2OWJkZDM3NGIgbGVnYWN5LXRydW5rCis4MjY1IDMxY2FlMzc0Zjc4NjU2NzczMWNmYmFkZmY3MDc5ZTllMzVkZDVlYTUgbGVnYWN5LXRydW5rCis4MjY2IDg4ZTZhZTEwNWFiNTgxMGVmOGMyOTE3ODhjNmYwYzlmMjcwYjQ3YTQgbGVnYWN5LXRydW5rCis4MjY3IDFkNDE3ZTljNzJjZmFjN2I2M2M2ZTliZGFkMTJhMDNhMTlkYmY2YTIgbGVnYWN5LXRydW5rCis4MjY4IDJiNzM3MmVjZDUwNzJiMGE0YmIxYWY1YmNjY2IyYjA1MGMwYzA4ZmMgbGVnYWN5LXRydW5rCis4MjY5IGRmZmFiYzYyMGU0ZTQ2ZDAxOGRiNWQzNmI3MDgyN2IxZDZhNTU4OWYgbGVnYWN5LXRydW5rCis4MjcwIDRjZTc4MjdhMzYyMTdiNjQ4ZjcxNDQyM2E5ZjA0Yjg1NzQwYTE2YjYgbGVnYWN5LXRydW5rCis4MjcxIGQ3OWM0ZmJiMTk4MmExZTMzNjJkOTM1OGZiY2U3MzhhYjA1YjE0YTUgbGVnYWN5LXRydW5rCis4MjcyIDNkMWQ4MDU1MDg3ZmI3ODNkM2I4Yjg2MzUwZDk1ZmMwYjY5MDgwMDggbGVnYWN5LXRydW5rCis4MjczIDczY2Y1ODI2MWI4MjM0ODEzMzMyZmQwZjk0MWEzNGQzOTk1ODQ2ZmMgbGVnYWN5LXRydW5rCis4Mjc0IGQ2ODlkMmM0Zjg0MjBiMDE5NTk1Y2Y1YzMyOTFjM2QzYTU0ODJkMTIgbGVnYWN5LXRydW5rCis4Mjc1IDI0YThjNTZkZTIxNDQ0ZWJmMmFlZDk0Y2Y3OGYxNDA2ZDgwYjJiOTggbGVnYWN5LXRydW5rCis4Mjc2IGU4NjJkOWIwMDI0NmFiZDdjNmM0NDkwODRiMWFkMWZjMzM0NmE0NzQgbGVnYWN5LXRydW5rCis4Mjc3IDdlOGVkOTY1MGZjYzExOGM3Mzc4MGNlMjQ4Nzc4NjhlZDQzYjI0MGEgbGVnYWN5LXRydW5rCis4Mjc4IGZlM2U3YTA1NTgzNDM2OTAxYWIxMDU0NjhmYmNmZjk0NDliYTMyNjEgbGVnYWN5LXRydW5rCis4Mjc5IGU0MjM5MWQ2NzZkMTJkMDZlYjkyNGJlZTcxMmI4NGIwMGRlNjI5MDMgbGVnYWN5LXRydW5rCis4MjgwIGI1NmQ1MjdhNDMzZjVhNTA1NzkyODU1YzA5Y2RhNmQ3Zjg4ZTRhMjMgbGVnYWN5LXRydW5rCis4MjgxIGI3YzYwMGVjYzI3ZDQyMDBlMzFhZDhiYjlkZmFjMzBhZjRiY2RlNWUgbGVnYWN5LXRydW5rCis4MjgyIDUxOGQ0ZjBjOGZjYzQ5ODAyNzYwMTgyYTkwM2E0YTg3M2NjZWY5Y2MgbGVnYWN5LXRydW5rCis4MjgzIDVhOWYzYzIwNzMzNjY5ZjVjMGI0YWU5ZTQ3ZmMyMDhiOTBlZTIzZWQgbGVnYWN5LXRydW5rCis4Mjg0IDUwODAzY2E1OGIxZjkxZTI1YzljNzJhNjhjMjc2MGE0ZjJjN2U1NzcgbGVnYWN5LXRydW5rCis4Mjg1IGRmZmQyMjE0NmFhYjhjY2NmOGEzNmMxNDlkNmIzMDdkOGI2ODYzMTcgbGVnYWN5LXRydW5rCis4Mjg2IDUxMjBlYTg2YjI1ZDZkMTFhZWVjODU0YzY0ODgxNmM2NjU1ZWMyZjEgbGVnYWN5LXRydW5rCis4Mjg3IDZkNDBlYmQ5MjIyNzkzMDIyMDk5YjkyZjAxNDA3ZjQzNThkZmNmMmIgbGVnYWN5LXRydW5rCis4Mjg4IDU4YWViODcyZDkxNTBkMDAyMTg1M2U5NGNjMmI4MTg2NTg1MDMzZDIgbGVnYWN5LXRydW5rCis4Mjg5IGY1M2QzNjNlZjY3YTllYTI4YjM5OWQ1YzYyMjkyYjI5ZWUxZjEzMjQgbGVnYWN5LXRydW5rCis4MjkwIGQzMjBjYTg0MzUxMjIyNDAyN2I3MzNjMjcxOGQwNTIyNWEyNWFiZDEgbGVnYWN5LXRydW5rCis4MjkxIDU1ZWE1NmVlMjBmNmJkNTY2NDM3MTJkN2E4MDQwMmY4Y2M0YTIyYTEgbGVnYWN5LXRydW5rCis4MjkyIGQ4YTRmMGQ5MjIxZjA3NWIxNjAxZjUzMTNhMzFmNGZhZGQyNTY4MzQgbGVnYWN5LXRydW5rCis4MjkzIDZhMGQ3Y2YxOWQzOGZhYzU3YjliOTRiNjc5NzgyMWMxOTc2ODhhMTAgbGVnYWN5LXRydW5rCis4Mjk0IDQ4Yjk0ZGU4NWJmMzVmMjQ0MmVhNTQ4YTdiNGUzNTQ1ZmQ2ODZhYzcgbGVnYWN5LXRydW5rCis4Mjk1IDM0NjhlYTg2NDVjYTQyMzhjMmI0NTAyNDM1MWU1ZTBmYWU1ZDFiYzQgbGVnYWN5LXRydW5rCis4Mjk2IDBhZThjN2QzMzQ2NGVlMGM3YTNjMzBiMTg5MTQ3NzlkMDUxMjM1MzggbGVnYWN5LXRydW5rCis4Mjk3IDkxZGQ5ZDc0ZjNiM2NiMDZhZTBiMTc2MGM3MTNmMWVjMDhmYTgyOTIgbGVnYWN5LXRydW5rCis4Mjk4IDc4MzIxYTg0ZDczZTVjZDM3ZDE3NWY5OTVkZjI2YWE3YzY4ZDE0OGUgbGVnYWN5LXRydW5rCis4Mjk5IGQzZjJkZjhjMjI4NmMwNWViODUxZGFjMzBkOWRjMzZkMTBhYTc0NzggbGVnYWN5LXRydW5rCis4MzAwIGFkMDRkMzg3YWNlZWVlODFjZWVjMjZjMjllMDA5OGRlZmU2OTg3MWYgbGVnYWN5LXRydW5rCis4MzAxIDNjMTVhZTBmYjZhZDc4NTViMDQwNjRiZWJjN2VmN2I4OWZiNWFhY2EgbGVnYWN5LXRydW5rCis4MzAyIDBjMzM2MTJmMTFkNmIxNjI3OGYzOWI1YWIyOGFhYWUwNTIxYmE3OWEgbGVnYWN5LXRydW5rCis4MzAzIDA5NjVkOWZkMTg2MmRkMjMzN2VmODRmY2FhZTk1YTY1MjU4OTY5OGQgbGVnYWN5LXRydW5rCis4MzA0IGE3OWQwY2VmMTBhMTlmZGQwNGRkYzk2NzM2ZmI0Yzg5MjliYjlmYzggbGVnYWN5LXRydW5rCis4MzA1IDlmYTJiZDhhMmI3OGE1MjZkODAyOWI1NTA0YzIyMWM1NDRiYmZkZWEgbGVnYWN5LXRydW5rCis4MzA2IGYxMTI3ZDZmY2Q3NDI0NTQyMDUzMTEwZWIyNGIzMWExMTIyMTBhMmMgbGVnYWN5LXRydW5rCis4MzA3IDIyNmJjYTg1ODQ2ZjQxOGY5NTk5MzEyZTY0YjNlN2I0YjZhMjJlNTMgbGVnYWN5LXRydW5rCis4MzA4IDk4NWI3YmY0NzU1YjZjZmU5MWE0MTI5MmZhMWYzY2EwNWYzODBlZjIgbGVnYWN5LXRydW5rCis4MzA5IDI4NWZiNmE5OWU1Zjg1ZjU3N2JkMTFhZjY1MjA4NjIzNjUxNThkYzcgbGVnYWN5LXRydW5rCis4MzEwIDg2YzI3OWE4NDhlYjJkNTAxNjEzOTRkMTM3ZTE3YTYzNWFhZGUyNjUgbGVnYWN5LXRydW5rCis4MzExIDkxYWVhMWFmNjU0ZmYxNThmMTEwODllZjFhYjI0NjcxMDIyM2E1MWEgbGVnYWN5LXRydW5rCis4MzEyIGI5MDYzZjZmODExY2JmYjk4ZTQ4NGY5MGQ1NWQzNDMzM2E5MmJiNWQgbGVnYWN5LXRydW5rCis4MzEzIDNhNzk4Njc3NTA2Y2YwNjc1ODZmYjkxZWNlZGMwMGM3YmI4ZWQ1NWQgbGVnYWN5LXRydW5rCis4MzE0IDJlOTE3ZjkzNzJlMDNhNTRkNzA4ODdhNzFmNzE0MzdhOTI3NTkyNjggbGVnYWN5LXRydW5rCis4MzE1IGVkNWRiMGMyYTNmMzQ0MTcxOTZjMTI4ZTBhMjMzZWFmYmJjNjFiZTQgbGVnYWN5LXRydW5rCis4MzE2IDE3ODZjYzQxOTg4NmVhNjZhMTZjM2M0MGYzZTZmNzYyMzAzY2VjMTYgbGVnYWN5LXRydW5rCis4MzE3IDlmOGZmMDJlZGU2ZGVlYjVkNjc3MDY0MWY4OGU4NmZjYjkyYTg5YTEgbGVnYWN5LXRydW5rCis4MzE4IGUxNjk5NGYzZDEwMmFjNmFmZDk3MGNkMjgwZjQ3NGM0NTk0YzZmNWMgbGVnYWN5LXRydW5rCis4MzE5IDM1YjE0ZDc4YzYxZDk0MzJkNzU1MzBkMTJkZDQ5MzA0YzcwNjBhNGMgbGVnYWN5LXRydW5rCis4MzIwIDVhOGE1YTFhMDQ3NTdmNjBkYjZiMGJiNjBiNTY5NjlhNzVjMzFiZDkgbGVnYWN5LXRydW5rCis4MzIxIDU5NjFmMTJhZTQyNjU4NmEwMGE2ODc0ZTVmZTdkYTViMDE4MDE5Y2UgbGVnYWN5LXRydW5rCis4MzIyIDZlOTk2ODZiNzZkYTBjZTJmNWQ4ZjBkZWJjNzJmNWFjZWFmM2U2MzkgbGVnYWN5LXRydW5rCis4MzIzIDg1MmExZmE2MmE3YzRmNmUxZmQ1MTU4ZDAzMzZjMTM3Njc1MzJmM2IgbGVnYWN5LXRydW5rCis4MzI0IGZmOWMwMTEwMDc5YjdlNDYyMTA0MGUxNDU2N2Q2N2M0ZTRjNGQ2YmEgbGVnYWN5LXRydW5rCis4MzI1IGY2NGE1Zjc1MDY5NjYwMzk4MTE1NzVhMTBlOTZhMzU1NGZiNjUwNGQgbGVnYWN5LXRydW5rCis4MzI2IDBkNzg1MWIzN2FkMmQxMzBiOTcxMTYwZmQyMjc5OGQyMzg5Y2I3MmMgbGVnYWN5LXRydW5rCis4MzI3IDZmNjdhMWJkYTE1YTIxOGIxZWI1MDYyN2MyYmU0NjNhYmM5YjgwNGYgbGVnYWN5LXRydW5rCis4MzI4IGVkYWYxY2I2M2RjMGM4OWYzMmY1ZWYxMDhiMzBmM2MxNDM0NDI0MmEgbGVnYWN5LXRydW5rCis4MzI5IDRhNDc3OGU2MWMxNGViMTliNDc5YjczYWUyZDk4NDVhNDI0ZWM3YTAgbGVnYWN5LXRydW5rCis4MzMwIDkyYmNmNGNjOTQyMTE5YWU5YzdhNzJlYzk5YzlhOWQ4N2RmYmNkMDUgbGVnYWN5LXRydW5rCis4MzMxIDM1OGQ3MDg4MmFmNjI5YTcwN2NlZDQxM2RhNGRmZTMxNTZkNTYzYWQgbGVnYWN5LXRydW5rCis4MzMyIGZkZDhjZWExODFjMDk5NGNmODY3ZWVhZDQ2YzA4NWFmZGM0OTBmYjYgbGVnYWN5LXRydW5rCis4MzMzIGM0ZGQzMzI5ZmQ3ZDA0NGFkNjBhNWViOTRmYjE2YTcyOTY4N2I3NGYgbGVnYWN5LXRydW5rCis4MzM0IGE2NjdkNDhlNjhiODU2OTcyMjJmYzg1NTljNGE3OGI2ZDZjYzRmMmMgbGVnYWN5LXRydW5rCis4MzM1IGY1ZjdjNzM5NTY4NzYwZWJhNTFkZGZiMzA4NDBlNmRhMjE1NjEzOWEgbGVnYWN5LXRydW5rCis4MzM2IDY0ZjljZTk5OTQzN2JkOTI4MmMzODk3MzNkZmRlYmY5ZjFiMDE4ZGUgbGVnYWN5LXRydW5rCis4MzM3IDcyOGEwODMyNDJhMmE2ZTcwOGVhMmJkNjRmOTU4NTQ3MTk1NzdkMDIgbGVnYWN5LXRydW5rCis4MzM4IDMyM2Y2YTE2YTc2NDJjZjE2MmIwNDllZjFiYmE1NWYyZDYyZGRiMDYgbGVnYWN5LXRydW5rCis4MzM5IDRkYmI0ZWM0NGQxNTBlNjIyOWFjOGNmN2VkM2UzNGQxMTFjOWQ4NzIgbGVnYWN5LXRydW5rCis4MzQwIDBhYzJjNzQ3MDUzZmRiNzRmODhiNGE0ODE2NDAxZTU0MGE3NjMyNzkgbGVnYWN5LXRydW5rCis4MzQxIDg3NTE3ZThlYTUxOTFiNWJkMjcwMDFmOWFkOWUxNTg1MjcwNDAyY2QgbGVnYWN5LXRydW5rCis4MzQyIDk4NDFiY2UzN2M0ZDYzOWI5NTc0OWQ3ZDdhNjk4NjZkMWY0ZmM5MmIgbGVnYWN5LXRydW5rCis4MzQzIGYxYzAzMjc2ODczYTYwYjQ1MjEyZDc1NWM5NDk1N2ViNThmM2E0ZGYgbGVnYWN5LXRydW5rCis4MzQ0IDk3ODM3ZTY0YzU4YzUyYzI5N2RmMmU5ZWIzNDdiZmJkNmQ2NGZmMzYgbGVnYWN5LXRydW5rCis4MzQ1IGU3NDJlNDFhNGIxMWJlZmM2N2QwODljMDg4NzU4ZmZhYTRiNmY3NjMgbGVnYWN5LXRydW5rCis4MzQ2IGYyYmY3YmNmOGI4YjY3ZWNkMTg2ODliMjg0N2I3MDc4YzkzNmUxZDMgbGVnYWN5LXRydW5rCis4MzQ3IGZlNGYxZWIxNGQ1M2YwYjRmMDY5ZmZhNjRkMjIzODNkZGUzOTc4MzUgbGVnYWN5LXRydW5rCis4MzQ4IGVkOTFjYjdkMzg3NjE5MjhiYmM2ZGNlZGMyMmFiYWZkMDQ5MWRkODUgbGVnYWN5LXRydW5rCis4MzQ5IGRkMGU5YjY0NjYxNjg1NTI4YTljMjdlZGRkNThhNjBhMjcwODBhY2UgbGVnYWN5LXRydW5rCis4MzUwIGM4YThjZjk1ODExYzM4Y2YyNzY0M2NjNzUzNTJmNjc2OWJjY2Q5ZmIgbGVnYWN5LXRydW5rCis4MzUxIGM2N2FkNWJjZDRiMjAyM2UzZjA4MWUyMDE3MjA5OThlZTIyYjE0Y2IgbGVnYWN5LXRydW5rCis4MzUyIGQyNDA4NTFjYzhjNTc3NWZiNTI4ZjI5MDA4Yzg5NzA2ZTNjNzIyNzQgbGVnYWN5LXRydW5rCis4MzUzIGEyZDNjMmE2MmEzMGEzMThiMTQ3MTQ4YjU0YmMwZTdiZmMzNjY0YTQgbGVnYWN5LXRydW5rCis4MzU0IDA1MzRlNTRlODEwNjJjODA1NjkzZTVjYWRkNzMwOGVmNDRlZDhlNzAgbGVnYWN5LXRydW5rCis4MzU1IDY4ZjczMTJhMzFmNjI5YWQ5OTA3NzM3YTcwMzBiYzg4NzdiZTM5MGEgbGVnYWN5LXRydW5rCis4MzU2IGE3NzVhNDQxMjRkOGIwYzJhNThhMGQyYTBmNjE2ZDJiYTM5YjhiZmEgbGVnYWN5LXRydW5rCis4MzU3IDUzMGRkYjcwNzY5NWU3ZmMxNzNkMDc0ZjA1MjAyZmQ4Mzc2ZWQzZjMgbGVnYWN5LXRydW5rCis4MzU4IGExMDFhMTdiOGI3YjhjN2NiNjE4OGEzNjI3MjllNDlmOGIyZTBiZDQgbGVnYWN5LXRydW5rCis4MzU5IGQ2NTEzZGE5MjQ5ZDM5N2QwNGM3NzJhODZhM2M3MDMyNGYzOWU4YTIgbGVnYWN5LXRydW5rCis4MzYwIDc5ZDE5MzFmMTcyMjllZWNmN2Q4MzkzMzY2NGFmNDU5ZDc0ZTAxY2EgbGVnYWN5LXRydW5rCis4MzYxIGI1NzFiNmVlN2YxN2UzNzhkMTYyYjJiM2RiZWI0YTRlZjExMjg4YzMgbGVnYWN5LXRydW5rCis4MzYyIDc2YjFkYTIxZjNhODk4MWQwMmIyZjVlZDFjZjA2YTMwYmI1NjI4YjYgbGVnYWN5LXRydW5rCis4MzYzIDRjNTJhMWI2YTU0ZDYyYTYzM2U1ODBiYmY1YjAxMDEwNTJjODlmNTQgbGVnYWN5LXRydW5rCis4MzY0IDJhMTcyYjQ5NTBiNmE2YzAyMjkxN2IxODczNjU1MGYzZDY1OGEyNjIgbGVnYWN5LXRydW5rCis4MzY1IDBjZDc0ZjkxODljNmE3YzlmZDE0MDdmNzVlZGIyMGUzOThhOWZjMGIgbGVnYWN5LXRydW5rCis4MzY2IGNkZDEyNWRlNzViZjZmNjIwMjFiYjhiNmExMjQ3ZjFiMTJiZmE1Y2QgbGVnYWN5LXRydW5rCis4MzY3IGYzMzQyYjM4MTkzNWE0NjQ5OWI2MGU3NzFiNTQ0ZjY1OTU4ZDQyOTAgbGVnYWN5LXRydW5rCis4MzY4IGM0ZDU0N2MwMWU5MzRlZDg1ZDUyZjA1N2ZmZTYxYzVjZDQ5ODM4NDggbGVnYWN5LXRydW5rCis4MzY5IGI5NmNjYzc4MTJmMmYwODNiYThjM2IyNjM5MzM3MzZlNmE4YzIzZGIgbGVnYWN5LXRydW5rCis4MzcwIGM1NzliOWY5OGE1YTcxNTYwNTI2ODkxMWJjMTBiYzA1NjhkZTVjMzEgbGVnYWN5LXRydW5rCis4MzcxIGUyZGY5NWI3YmU3ODlhMjRlZmNjMGY4N2UyMzAyNjQwNGNiYWViZWIgbGVnYWN5LXRydW5rCis4MzcyIDQ2Y2QzNTJjNzYzODlmZDIyOTJjNGNmMGI5ZTI2ZjRhMzQyZTc4MDUgbGVnYWN5LXRydW5rCis4MzczIDY3MDIyZDI4YTY1ZDJkZmU4YTlmYTIyYzczZTJjMDQ2ODQ4NDE1YTEgbGVnYWN5LXRydW5rCis4Mzc0IDdkMzVhMDU4MDM1NmViZGNkNjBlYjQzZmU1YjA1NDhhYzcyMWVmYmYgbGVnYWN5LXRydW5rCis4Mzc1IDI1MzM3N2E0MDY0NDg0NzU1OTljZTAyNzBhOGRjNTAwOTI3YzBiZGIgbGVnYWN5LXRydW5rCis4Mzc2IGY4MmI2MDhhZmI1NjhkZjZiMDQ4NmI3NDQyNGEwOTkxMjkyZDczMTIgbGVnYWN5LXRydW5rCis4Mzc3IDQ2NjY2NGFkMzhlNGNlZjE5MWY4NGExYzJjNzM4YzFlZjQ4NTAxOWYgbGVnYWN5LXRydW5rCis4Mzc4IGJhNDlhNmVmNzIxNGY3ZjA0YTE0MzVjNTcyNzRiYzJkYTE3NmJmYTAgbGVnYWN5LXRydW5rCis4Mzc5IDQxMDJmNDQ3MjAzMjliMDZkMjNhZWZhZmI1Mzc4MDBjNGU0MzBjMTEgbGVnYWN5LXRydW5rCis4MzgwIGI2ZTQ4YTRjZGQxZTY4YjI5ODJlNmExYTIyMTZiOTBjNTQ3YWY3YjggbGVnYWN5LXRydW5rCis4MzgxIGM1MGNjMjhhZjdjNzlmOTA0ZjRjZmExZTJkZjBjNzE5NjEwYTdiOTIgbGVnYWN5LXRydW5rCis4MzgyIGMyNDIzODQzYTI2ZjcxNWVjMjRiN2ZjNDA3ODZkNDNhZTRiYWY2ODAgbGVnYWN5LXRydW5rCis4MzgzIGYzNDQ2MDlhNDhlNGVhOTZkMzQwY2M3YTc1YjljNzhjZjEyNjdiY2UgbGVnYWN5LXRydW5rCis4Mzg0IGFmOTJjZmZkMDYzZjUzYzA5OTQwYWJkNDQxZWU1YjQyNWQzYzFlMmEgbGVnYWN5LXRydW5rCis4Mzg1IDRkZDllYTFlOTRhODgwMWM5NWVjZDg0ZTY3N2M1MTU4Y2FiZDJjMzggbGVnYWN5LXRydW5rCis4Mzg2IGY4MjU5Y2E5ZWVkMzdjOTllM2E2YTFlMjZkZGQ1MDI1ODM5YWQwYTcgbGVnYWN5LXRydW5rCis4Mzg3IDg5NzcxYTQ2Y2EzNTRkNTE3YjZiYjI2MzlkYjczZGEyNDc5Y2I0MGMgbGVnYWN5LXRydW5rCis4Mzg4IDY5ODY3ODFhMDdlZjBkYzE0MzgwZjFhZDA2ZGJhZDAzYTY3ZTU0NWQgbGVnYWN5LXRydW5rCis4Mzg5IGY1MjdjMTJmMmU1NTI4ZTVhZjRjYjM1MGRkNjRkZDA2OThlOGZlOTYgbGVnYWN5LXRydW5rCis4MzkwIDZiMzlmODYzM2NhNTQ3YTFkODcyNDc0NzdhZjRlYjYyMzMzZWIwZWIgbGVnYWN5LXRydW5rCis4MzkxIDUxNTViMmMzNWUxNTlmNTlkZDE3NTEzNGJkMDQyMzgyYTgxYzJlMzUgbGVnYWN5LXRydW5rCis4MzkyIGRiOWNmYjEwODYyM2MyNWFkZTUxODg3MTQxY2VjYzNhNmE4ZjRiNjAgbGVnYWN5LXRydW5rCis4MzkzIGQyYzgwMzgwYWQwZGU3NDIzZGM2ZmU1ZDQxZGJjNzlkNmY1YTNkMzEgbGVnYWN5LXRydW5rCis4Mzk0IDA0YTFiODJjODMyYjFhN2UxN2Y5M2UzMWE5YWI1NTY2YmVhODRkZTcgbGVnYWN5LXRydW5rCis4Mzk1IDc4MGI2OGRmNDU2MDc3NGY1YjhmZjU2NmJkYWQyNTI1YmI4MjQ0MmQgbGVnYWN5LXRydW5rCis4Mzk2IDVkYTE4ZTAwMmIxYThmZTg1YmE1YTk1NThjMWMxOGY4NGE4Y2I3NGYgbGVnYWN5LXRydW5rCis4Mzk3IDVmYjMwNDEzYjkzYjIxOWY4MDE1OTMwZGMyZGVjNjkyOTYxNWIwMDkgbGVnYWN5LXRydW5rCis4Mzk4IDgwMGE1MjE3ZTY3ZTc4NjliZGFlNWQ1ZTExNTZkYmU4ZDljNjAxMDggbGVnYWN5LXRydW5rCis4Mzk5IDQ0ZGRjNzExZWUyZGM4YzEyZDRhNzVhOGQyZGNhNWY0NGRjYzBhMTEgbGVnYWN5LXRydW5rCis4NDAwIDNlMTU4ZTY5YWM1ZDkxYzFjYTM0YWQwMGQwMGMzYWVmNDJhN2YxY2IgbGVnYWN5LXRydW5rCis4NDAxIDA4YjFlOWQ4NDdlNmI1OTk1OWEyZGZjOWNlYjZjMWNiZWFiMjEyNzMgbGVnYWN5LXRydW5rCis4NDAyIDkzMzA0YjJlMTRjYjM2ODc5Y2Y2MzE0YmFkZmU0NzRlMWFmMGZmZjIgbGVnYWN5LXRydW5rCis4NDAzIDhkMjE5NGUyMmU2NzM5Y2Q5NjYyNTRhNGZlODJhMGJhNjQ5YTY2MjEgbGVnYWN5LXRydW5rCis4NDA0IDYzYmM5Mjg5YWIyODI5Mzk4NWQwNGFkNjIzOTZkOTFmZWI4ZGFhYmUgbGVnYWN5LXRydW5rCis4NDA1IGNhMjQ1YzM2YzZmNmY4NDgyODYzMjkxNDhiZTlmNGIwMGFhNDBmNTQgbGVnYWN5LXRydW5rCis4NDA2IGIzYzkxMzc0NjkwMGUxNjFjYWEzNzQ2YjFhOGRlNGJiNzE4MTFhMjUgbGVnYWN5LXRydW5rCis4NDA3IGUyY2NlNGFkZjJhNzAyOWViZTgwZDdkOTcyZWY0MDdkYmEwZGFkM2YgbGVnYWN5LXRydW5rCis4NDA4IDEyZmU1Y2MxNTE2ZDA4MmQwZDI3YTZjODFiYzAzN2RkYzJkNTcxMGIgbGVnYWN5LXRydW5rCis4NDA5IDQwY2ZjOTA1Yzc3Njk2YWM4YjFlMTJjNmVlYzgzYWEzYTM2OTgwMDggbGVnYWN5LXRydW5rCis4NDEwIGIyMTBkMjA1OTgxMjE2ZGVkZDQ1ZDNhOGEzMWYyMTkxM2NlODE1YjMgbGVnYWN5LXRydW5rCis4NDExIDAzNjlkNjNiMTAwYjFmNGJiODA3NmRiOTFkZjE5MGQ4OTYyNzVkOTcgbGVnYWN5LXRydW5rCis4NDEyIGQ3N2QzYjhlODZiMjVhODkyMDdhN2QyNGVkMzNhMGU1ZjY3NDI1N2EgbGVnYWN5LXRydW5rCis4NDEzIDgwZDI0MzY0YjkzMjVlYjYyNmExYzRlMzY4YjUwYTBkMDdlNzc0N2YgbGVnYWN5LXRydW5rCis4NDE0IDVhNGQxODFmZmZmZGY1NzMwY2JiMmEyODMxN2MzODEzYTk0ZTMwOWEgbGVnYWN5LXRydW5rCis4NDE1IDIyMmZhZWI0M2QwMjBjOTQ2YWM3OGNkOWQ3NTllYTZhYWVjMzczYjkgbGVnYWN5LXRydW5rCis4NDE2IDJjNjViYjZhYjg3Y2Q5YmI2OWYzZTNlNDljNjIzYjRlMjM2MjI1YzcgbGVnYWN5LXRydW5rCis4NDE3IGVlZjc2YjNjZDlhZWYzYzIyNzIyZDdmYjMwZDgzMDVjNDQ4MjAzNjMgbGVnYWN5LXRydW5rCis4NDE4IGY3ZmM4OGZjZmZhMjQ2YjNiMjQ2MzE2Y2Q0MjZkMzRiMDM2ZjFjZTkgbGVnYWN5LXRydW5rCis4NDE5IGMxMTkyOGQyNTk3YmRkYzZkMjMxMmZmMTU2NWM2ZDUwNDczN2I3MmQgbGVnYWN5LXRydW5rCis4NDIwIGFjODc3YzQ3NjhlMWNhYmY5YTI0MTQwMDk2NTU1M2FiMGFmYmM5Y2QgbGVnYWN5LXRydW5rCis4NDIxIDFiZDY4ZTQ0NjRjZTJmYzU0MWU5MmM3ZTVjZTNiZDAwMDE2YTk5MTMgbGVnYWN5LXRydW5rCis4NDIyIDc1YjNhYWJjYjdjMTAwOTE5NzY4YzQ5YzgyNDM4YjI4YjI1YWZlZDUgbGVnYWN5LXRydW5rCis4NDIzIDlhNTY0NTJjN2U4ZTkyMzEzZjc5ZDg0NTc5MWU2MDlmYjRmOGM4OTAgbGVnYWN5LXRydW5rCis4NDI0IDdjYTZhOTEyZDQ1NWI5YmIyZjI2NTc3MzA5YWNmNGZmYjcyYTNmMDIgbGVnYWN5LXRydW5rCis4NDI1IDZjMDYwYmMzYmYzZDliNTgwYTNiZDg5N2FjZjRmZDEwZTk5OTk5N2IgbGVnYWN5LXRydW5rCis4NDI2IDBiNGE5ZGQwOWUwZGIwY2RkOWY2ZTJhZDAzZTBmMmM2NThhYmQ2NDIgbGVnYWN5LXRydW5rCis4NDI3IDNmYmNkYTc0MTY5NjVhNDQyMDcwOWVhYzY4OTQ0MmE4YmU0MDcwYjUgbGVnYWN5LXRydW5rCis4NDI4IDhkN2RjNjY5NjhjYmM2ZWM0ZWEzZGIzYzM0OWM0NThlM2ZmMDRmMGYgbGVnYWN5LXRydW5rCis4NDI5IGIyZTAxOGZiMmJhOTE1YzIwN2Q4N2RiYjJhMGI3ZTVmNGZlNzhiZWMgbGVnYWN5LXRydW5rCis4NDMwIDFhOTk2OTVhNDFjY2Y2OTE0Njg0Y2JjYjA3OWQ0NDM2YjY4ZjhjNjAgbGVnYWN5LXRydW5rCis4NDMxIGQzODM1YTZhMThjOTU3ODVjOGQxYjEwMDI2M2Y5ZmM4OWI0ZGZiNzAgbGVnYWN5LXRydW5rCis4NDMyIDFmMmRmY2E1MjIwNzJkMTM5Yzg4NjI2ZjY4OGMyNDVkMjFkNTVhYzkgbGVnYWN5LXRydW5rCis4NDMzIDNkNmYzZjBhZTAwNTA2NTYxNDJiMTk3MTlhOGRlZmU1YTg2MzI1N2MgbGVnYWN5LXRydW5rCis4NDM0IDI0ZWM0NjI0ZWE5ZTMwOTkyYjlkYWY3OWQ0ODBlN2ExZmU3ZTFiMzggbGVnYWN5LXRydW5rCis4NDM1IDgzNDQ2MWE4Y2E3NjcxNDYwOGRkYTMzZmJjNGMyOTg1ZDY5OWY3Y2YgbGVnYWN5LXRydW5rCis4NDM2IDFhNGZiNmYxMmZmZDU0YjEyM2QyM2RlOTgwMmEwNTI3NDg0ZGNhYWQgbGVnYWN5LXRydW5rCis4NDM3IDc2YmI0MGExZWIwNDUzMjM4OThkNmIwMGExMjIwZThjZWJmZWVhNGMgbGVnYWN5LXRydW5rCis4NDM4IDM1ZTVhY2M2NTMyYzdlNTRhNjlkNzBiZTI1NTVkY2I0M2E3NDY5OWEgbGVnYWN5LXRydW5rCis4NDM5IDIzZTAxNDgzOWFiMDU3ZDE1OTc3NzcyM2ZjOTBmMjVlODAyZTFkNjYgbGVnYWN5LXRydW5rCis4NDQwIDgzZGU1NTM5ZjhlNDMyMjBhZDlkZjcwNmRkODM4MDU2OWNiYTIxOTcgbGVnYWN5LXRydW5rCis4NDQxIDQzMDU0MDIxYmI1NzUxMDYxN2E4OGRmZGYxMzhjZWVhMjdiNTE1ZjkgbGVnYWN5LXRydW5rCis4NDQyIDhhZTgzYjljMzRhMDI0NTA4N2NmMmQ3MTYxOTlkNzMyZDU2ODhiZWEgbGVnYWN5LXRydW5rCis4NDQzIDk2YTk3YjJiNzIzZTlmNTNlMDRmMGIzZjlmOGM0MzI2YTg4YjZhMDMgbGVnYWN5LXRydW5rCis4NDQ0IDllNGRkYjQ1OWIxMGQzYjBjZjk0YjI0NWE2N2UzNDc1MzgwZmJmZGIgbGVnYWN5LXRydW5rCis4NDQ1IGI3MDQ4ZjViZTlhMThkMzlhYWM0YWY5YTU3MWUzNDAzODlhNzE2NjggbGVnYWN5LXRydW5rCis4NDQ2IDVmNmEyZWFkYWI5NzgzNWYyNmU2Yjk1MzE2NTA4NDk1Nzk5NjkyZmUgbGVnYWN5LXRydW5rCis4NDQ3IDcwMWQ4NTRkMTkzMGJiNmExYTI0ZjI3M2ZlOWRkZjFlYWI3M2RkOTUgbGVnYWN5LXRydW5rCis4NDQ4IDNmMmJmYzE1OTg5ZGNhZTc1NjE3MTc5Y2RiYmY1NWQ2OTI0MGUyNzYgbGVnYWN5LXRydW5rCis4NDQ5IDhhYmI0ZDhjMzEzNDQ5ZGE5OTJhMzQ1YzZhNWFlYTY1ZDBiMGQ2YzAgbGVnYWN5LXRydW5rCis4NDUwIGU3Nzg0N2UxMTU4ZTIxMzg4NGQ0ZmMzNTg0MzYxNmUyNjI3YWE0ODUgbGVnYWN5LXRydW5rCis4NDUxIDdhMDg4MGY4YjhlYzA4ZWExMjUyMTMxNjhkYzY5MmZhNjY0ZjM4ZjcgbGVnYWN5LXRydW5rCis4NDUyIDhiYmE5YmI4NjRhZTIzOGM0YWY5M2E3NzVlNDc5OGZlZWJjNzJkYjAgbGVnYWN5LXRydW5rCis4NDUzIDViMmM1OTU0MjhmYTkxZjk5MTkzNmFjYjcxOTMyYjg3YmFlY2IzYzcgbGVnYWN5LXRydW5rCis4NDU0IGI3NzA3OTY1MTlmNjAzZmVhNWU3OGQzZjY5ZTU5MGY3MjUwYWI2ZmUgbGVnYWN5LXRydW5rCis4NDU1IDc4MWViNDlkMmQ2NmZkMGEwNjQyZDgyZjRhN2JkMWE4MWQzZTlhNTQgbGVnYWN5LXRydW5rCis4NDU2IDQyMjk2MDUyMzI4NjUyMTUyOWNiNjhhNzM0MGY2Zjk4ZjVkNzJjYTEgbGVnYWN5LXRydW5rCis4NDU3IDI4OTRiYjQ5ZTJlZWU2ODk5NGQxN2RjNmY0MGJkMTBjZDUyMjczZTUgbGVnYWN5LXRydW5rCis4NDU4IDE3MGM0NmE2NTAyMjBlNjJiNmY5NjMyYTg4YWM1NmRlOGNkYTA4NWMgbGVnYWN5LXRydW5rCis4NDU5IDZhZWJkOTcwYjdhOTllODRjZmE1ZjQ3ZDkwN2E3YTI2Yjg1ZjdkMTAgbGVnYWN5LXRydW5rCis4NDYwIDMzMzg1Zjk0Y2E4YWM0MmExMjc0NzZlMWRhZDBjNDg1ODRmMWNkZWQgbGVnYWN5LXRydW5rCis4NDYxIGI0YmJiYTNhZjRlOGM4YTJlNzY1ZDU5MzBhNThhMTA1Y2EwNjdlZmQgbGVnYWN5LXRydW5rCis4NDYyIDAzYTg4MzNiNGI3M2Q5OTk1ZDUxY2JjNjVlOGJhNjQ2ZmQ1MmNkMDQgbGVnYWN5LXRydW5rCis4NDYzIDMyMTI3NTkzYzEzNGQxYTFlM2QyMzZhNWVlNTcyMWVlNzQ0YTY0MTcgbGVnYWN5LXRydW5rCis4NDY0IDBhMmMzMzEyMDBmNWZmMDgyN2JmMDg5OTNiYTFhYTU5NDEzMTFjNmQgbGVnYWN5LXRydW5rCis4NDY1IDU5OTNhMDk5ZDliMDM2NjMwZWRmMGE3YmI0ZWQwYzc2ZDI4NjQ4YmQgbGVnYWN5LXRydW5rCis4NDY2IDViOTBkYThhOWRjYzE3Njg0NmFmMTZhYTAxNjdkMWE5ZmIxOGZiNzIgbGVnYWN5LXRydW5rCis4NDY3IDUwMzUwMDY1MmJhYzQ4ZmY0MDJkZTJiYjBjYTdjYTc1YTY2NDAxN2IgbGVnYWN5LXRydW5rCis4NDY4IGE1NzM3ZGQ5Njk3OTAwOWViZjk5MWI5Y2M5NjRhNWVkYzcwNmQyYzMgbGVnYWN5LXRydW5rCis4NDY5IDZlNWQ0ZWMwMzc5MWM5NmNjNzlkOTViZmQwODFmNjRmMzYzZmUzNWIgbGVnYWN5LXRydW5rCis4NDcwIDJkYjNiNzM2MTg1M2M1NTYxZmVhMzNhZjE1NTE5NGIyN2Q4YTlhODQgbGVnYWN5LXRydW5rCis4NDcxIDNiYWM1MjM1MmMwYmM3YTZkYzFlYWU2MzUyNzEyZGNiYzBjYTQ4NGEgbGVnYWN5LXRydW5rCis4NDcyIGI4YjZhODhmN2Y0NDJkZjQwYjQ3MDZjMDY0OGQ2YWI1ZjhmN2ExMjcgbGVnYWN5LXRydW5rCis4NDczIDllN2Q1OTgyYWIzZGU5NmU5YTQ1ZGNjODU5NjUxYmQyZDg4NzgzNDMgbGVnYWN5LXRydW5rCis4NDc0IGZjZWE1N2MzNDZhNTliNjFlM2YzNzM2NGU5ZDUzNWRjNWNhMjM5Y2QgbGVnYWN5LXRydW5rCis4NDc1IGMyNGI1NGMxOTU3MTQyZDFkM2FmNjBkZGNkYzA0NGRkNmUyYzc4YjIgbGVnYWN5LXRydW5rCis4NDc2IGYyZDEzNGJmNjk3M2JhMjY1NDlkYzQyOTFkMzk1ODdlZTZjODA0YjggbGVnYWN5LXRydW5rCis4NDc3IGQ1MjBkNWQwMTExNWI3MDJiY2ZjY2ExYTBlYjdhNTU2NTAxZDA2YWYgbGVnYWN5LXRydW5rCis4NDc4IDgwNTYxNjllYzQ0OGUyMzNkMGI0NTNiYzJmZWU5NzI4YTNkYjVmNTUgbGVnYWN5LXRydW5rCis4NDc5IGQ0MzljMzJjZTk2MzdmZmNhNjJiNjM5YzcyNzg5ODkzNzliOGVkZjYgbGVnYWN5LXRydW5rCis4NDgwIDUwODkyMTk1MGYyYzQwYjJjMGM2ZjlkMzA2YmUxYjBiOGRjOWIzZGUgbGVnYWN5LXRydW5rCis4NDgxIDNmNTliMzRlYjkwZjk2YTMxMTY4YWMxZTgwMmJmNDg4ODFjODc1MGIgbGVnYWN5LXRydW5rCis4NDgyIDBjZGE5ZjI0N2Q3YWNiOWIyZjI0ZTJkY2YyODUwODcyYmNkNzRlOGUgbGVnYWN5LXRydW5rCis4NDgzIDczNjFmMmYxODZhZGEwMDVkYjM5MTQ2NzBlYTBkMDk1ZWE0NDRiMDcgbGVnYWN5LXRydW5rCis4NDg0IDliYTcyZmM0ZjUwMzY0YzcyMzQwNzYwOTUyYWFlY2YyYjc0Y2M2MDUgbGVnYWN5LXRydW5rCis4NDg1IDVkYzI2N2NmNDg5NTJjYzFiZWEyYmExZGQzNTcyMDk1NWNhZmRmYzggbGVnYWN5LXRydW5rCis4NDg2IDg4NzQwOGVlYWU5OTM5YjUxOTUxYWZlMWM1Y2ZiNWRhZDJkNzYzNWIgbGVnYWN5LXRydW5rCis4NDg3IDg3MWYxMzVkZDYxMjliMzcyYTBmMTIyM2QyNGM5ZjAxODg4ZDk0MjUgbGVnYWN5LXRydW5rCis4NDg4IGNjNTc3MDAxZjdlY2VlZDNmM2JjNzBiMjM3MjgwMzhmZjhjM2JlOGEgbGVnYWN5LXRydW5rCis4NDg5IGQwMmFjNjFjZDUwZjFmYWU1NzY1MTg4MTA4Y2UzNDI5OTQyNTAzN2MgbGVnYWN5LXRydW5rCis4NDkwIDBiNWEyM2VhNzUxNTZmMjczZTRhZmIyZjM4MmQ0MGY4YTk2ODk4OWQgbGVnYWN5LXRydW5rCis4NDkxIDJmMzZlMGJiMzdjMzc4YTljZmM0MGVmMjYyZTk2NDRmOTliZmNkNWQgbGVnYWN5LXRydW5rCis4NDkyIDE4YWQxMTA2ZjY1MWFiOGZjZmZkNWU0OGQ2NDg5NTJmNzlkYzMzMjAgbGVnYWN5LXRydW5rCis4NDkzIGRmZjIwMjRhYjAyMWZlMjg4NmYxYWEwNDRlMzJmYzVkZTRlMDhlNDYgbGVnYWN5LXRydW5rCis4NDk0IDUwYTQxODYzYzM0YTYwMTI3OTkyMzc3Yzg1MzQ4MGE1NWU4ZmYxNGIgbGVnYWN5LXRydW5rCis4NDk1IGYwNTU0Njc0MzQwNjEwNDY1YzdkOWM4YjQ5MzBlMGYwMDVkNDIyMDkgbGVnYWN5LXRydW5rCis4NDk2IGEyZjk4ZDdjYWRlZDFkZDIyZDU4ZWQzMTRjNjEwMzFlMTZjZDI0ZmMgbGVnYWN5LXRydW5rCis4NDk3IDU5YzM0OWExNGEzYWRlMzdkNTdlZTljNTVkYzQ5M2M4ODExMDk1ZmYgbGVnYWN5LXRydW5rCis4NDk4IDYwMWM0ZWNhM2RlMzQxZTc3YzJiMjM3N2Q3ZDU2MjAxN2YzMTUzNmIgbGVnYWN5LXRydW5rCis4NDk5IDgwMjQ3MGM3YTUwZjA0ODRmOTEyNTcyZWRkMTNhMjYyYzE5ZWI1MjIgbGVnYWN5LXRydW5rCis4NTAwIDZhMjVkODExMGIwMDk0NTJhNmIwMDA2OWFjNDliOTRiMjllODhkMGYgbGVnYWN5LXRydW5rCis4NTAxIGQ1Zjg3NDFhODEyY2Y1NTUwNzMyMTZjN2M0NjVhZGQ2NDNlOTEwOTcgbGVnYWN5LXRydW5rCis4NTAyIDBhZDE1ZjMwYzhkNDEwOGNiNjExOGNmOWI4NjFhODIwZDhhYjE1N2YgbGVnYWN5LXRydW5rCis4NTAzIGI1ODA0MTU0YWY0ZGYxMmQyY2U2MmM2NTA4YTdlNjg2ZGI2MmFiNDQgbGVnYWN5LXRydW5rCis4NTA0IDQ5NGU1NTBjYjE4ZDE1YzJjZTEwZDBkZWU5NGQ0MjRkNGY0MDQxZDAgbGVnYWN5LXRydW5rCis4NTA1IDI5MjE5MzE3MGRhMTU5ZmNmZmFhMTM4OWI3NzRlY2FjZDNhNjJlYzAgbGVnYWN5LXRydW5rCis4NTA2IDY4ZjJkNzcwNDE4MGE3MmI0ZDEyNzg4ZTAwY2EwNWQ3NGQ0YzQ1ZmQgbGVnYWN5LXRydW5rCis4NTA3IGJmODAzZGZkNDQyOGYyNzYxNTYwZWViMDZjODBkZThlMDFmNTU2MzggbGVnYWN5LXRydW5rCis4NTA4IDZjNDQ5ZGZmMmZiODljZjA1NGZkOGFmNjhlYmYxMjBkMDNjZDA2ODEgbGVnYWN5LXRydW5rCis4NTA5IDlhNTdjYTIyOTY4MWI2ODJjZjNhYzU4YjcyMjBkZDg4ZThjOGJhMzMgbGVnYWN5LXRydW5rCis4NTEwIGFjNzU1NGYyOTMxMzY5ZTM1YmY5OTVhOTNiYjI4NTA3ZmVmYjhhYTMgbGVnYWN5LXRydW5rCis4NTExIDFjZjc5ZWE4ZmZhMmE1OGE5MGQ4ZDEwNjI5NTE3NjI4MmNkZGVlYzcgbGVnYWN5LXRydW5rCis4NTEyIDYxNDExOGExMzQ4Yzk0MjFiN2IzZmYyZjFjZTRkMDQ4ODY2MTllYTkgbGVnYWN5LXRydW5rCis4NTEzIGJlMWI3OGU3MDcyODcyODNkMzVmMjJjNzAzZGUyMjExNzJkMzU4YjkgbGVnYWN5LXRydW5rCis4NTE0IDRjMjI5MmU3MDliMmQyN2Q1MzdmN2NjYWY2YjYwMzE1ODVjY2Y2YmEgbGVnYWN5LXRydW5rCis4NTE1IDQ3YWRmMThkMDFhZGQ3ODYzZTA2YmQzMzJiMzVjMTI3ZDM5ZWY5OGUgbGVnYWN5LXRydW5rCis4NTE2IDYxOTIzMjIzNmRkYjhhNTg2ZjMzMDQ1MGMwNGY3NWFiOWZlM2E4ZGEgbGVnYWN5LXRydW5rCis4NTE3IDFhNDM2OTkxMDhhNjM3NTY1NjBiNGIzMjc2NjhkMmQyYzg3M2M5ZTIgbGVnYWN5LXRydW5rCis4NTE4IGE5ZTFlYTgwZWEzZjRhYTU5ZjUzZjMyNTcyNTI3ZWRkZjhlZjk0MjIgbGVnYWN5LXRydW5rCis4NTE5IDZkYjNkNTJkNGE3OGFmMDdlZmEyMzJjNzViM2EzMjIxZWJkZWNhNDUgbGVnYWN5LXRydW5rCis4NTIwIGMwNzllOTI0YzkyNzE4OTYxYjNiOWZlMjVkNWFhMGY4MTVjNGVmNzIgbGVnYWN5LXRydW5rCis4NTIxIDBiOWVjMWIzNGE3YTQwODgwY2QyOWMyYjQ3ZWNjMTNhYTJiNDFjYjAgbGVnYWN5LXRydW5rCis4NTIyIDZlYjFlMzU0OWUyZGJiYTYyNmVkM2U1ZjI1OGNjNWE5MDIxNGRkMjQgbGVnYWN5LXRydW5rCis4NTIzIDhiYTQ2YjA3NzhkYWQyODg3MmM5MzAwNzgwZTM0ZmU1MmYxNjhhOTkgbGVnYWN5LXRydW5rCis4NTI0IDk2ZmVjYzgwYTI4ZjdjOWYxNTAyNDk0ZGMzMTkwNDkwNmNiY2ZmNmMgbGVnYWN5LXRydW5rCis4NTI1IGU5MzY2MzExNzZiNjFkNmQxOTk3Mjk0OTYwNTA0ZjJmYTU1MjU4MjkgbGVnYWN5LXRydW5rCis4NTI2IDRmMTJjMjFmODc0Nzk2OGJjNDA3ZDIyMWNjNjUyZThlZGZiNTY0ZjQgbGVnYWN5LXRydW5rCis4NTI3IDYwNzMxYjE5ZmUzNGQ1N2U5M2YyMzQ5MGRlMzIwYTdjMTRmNTcwZjEgbGVnYWN5LXRydW5rCis4NTI4IDZiMGFmYmJmZTBiNzgxOWRkMzg3MmE2NWViMjE4NTYxNThmNGNkMmUgbGVnYWN5LXRydW5rCis4NTI5IDFkYTEyMjcxODU5OGU3NTAxMzM2Y2ViZDUwZWQwOWQ5MmIwMjEyM2UgbGVnYWN5LXRydW5rCis4NTMwIGRhM2M3ZDQ3ZjIxMGE2ZTVkNWEwMTBiYzJmMjQ2NWQyZDkxNDM0ZTcgbGVnYWN5LXRydW5rCis4NTMxIGNhYjllYTVlNGVlZDM3ZDcxMTFmMjU2NzdkZmUwNTNiOTAzMjViZTEgbGVnYWN5LXRydW5rCis4NTMyIDcyZDAwNDk3MWIyNjc5N2UwMDc1OWQwMmRmNDQ1MDljYmM2NjY3NTMgbGVnYWN5LXRydW5rCis4NTMzIDhlYzAyMTI3YzQ0YmI0MzU5ZTcxMTEyYzBiYjQ4NjYzYWFiM2ViOTQgbGVnYWN5LXRydW5rCis4NTM0IDU2NmQwY2FlOTE5MTVhYjEyMmJkZDE1ZWQ3MGZiOWI2NTY2NDg1NjIgbGVnYWN5LXRydW5rCis4NTM1IDg3N2RiYmEzYjVhODA0MDJjNTY1OWMxZWZiYWIxMmRlOTI3MzE2ZWUgbGVnYWN5LXRydW5rCis4NTM2IDM4Nzg0Yjg1M2QyMzFkMmFmZWVlNjg3NmZkNmZkMzIzN2UzNTA3NmEgbGVnYWN5LXRydW5rCis4NTM3IDExNDI5OTY4ZTI5ZDIyZWU0YTRhNDgwMTViOGJmN2MwZGJlZTZkYzQgbGVnYWN5LXRydW5rCis4NTM4IDM2ZGY0NDM0YjNiMzAzYTE0ZjU4NmEzNTA4NTA3MDgzMTY3MDc5NjcgbGVnYWN5LXRydW5rCis4NTM5IDc0YTc4NjY2ZGRjOGFmYmQzMGYzMDJjN2NlYzQxM2Y1OTJlMWIwM2MgbGVnYWN5LXRydW5rCis4NTQwIGE1ZDUwM2VjYTc0NzhkZDQ4ZTVmNGYzYWU1ZGU3YjgyZTk4YWIxMGIgbGVnYWN5LXRydW5rCis4NTQxIGU4OGQyZTMyMmM1ZWJlODJjYmNlYzBmZDI3YmY5Y2NiOTgwZjdlNDUgbGVnYWN5LXRydW5rCis4NTQyIDBmNDE5M2JkMDhkMGJjYmFlZDYyNTI3NGIxOGI2NDA0YjA5NDJhZjIgbGVnYWN5LXRydW5rCis4NTQzIGU0Y2QwOTJmNDNkNjZhYWE4NjVmZWRiMjA3Mjk2YmNjODQ0YWE4YzkgbGVnYWN5LXRydW5rCis4NTQ0IDNkM2ZhODc3Mzg3YWVkMzE2NGRjMjJlOTM4ZjJkYTM3OTMxNmRjMzMgbGVnYWN5LXRydW5rCis4NTQ1IDkyNWY5MGI0OGQ3MzcyNDUzN2QwNzc1ZGQwMjE5NTBhYzBjMGU3NGIgbGVnYWN5LXRydW5rCis4NTQ2IGUwZjI0OTk5M2E0ZjdmNTljOTI2MTgxOTk4YTgxMzZhYTAzYWVmMDAgbGVnYWN5LXRydW5rCis4NTQ3IDY0M2ZhNTRmMjEyNDU4MWQ1YTYzZjM4ZTM5YjRlMjcxNjg4YzViYTYgbGVnYWN5LXRydW5rCis4NTQ4IGQ5MWNjMGE1N2RhYTNhNDMyZDc2ZDlkZGYxZDNmOGY5ZjNkMGQyYjQgbGVnYWN5LXRydW5rCis4NTQ5IGM3YjVhNzIyZDkyNjQ5NGU2NmUxY2EyNGI3YzlmMzFkNDZiMDFkNDcgbGVnYWN5LXRydW5rCis4NTUwIGVjYzk0OTBlYzcxOTI3ODM4YjI5NzgxMWYwOGE3NWIyMjkyOGJjODQgbGVnYWN5LXRydW5rCis4NTUxIDVlNWU1NGE2ZGJhNmZhYjkyYThlZGExNDViMGU3ZmU5NmViNmFkODIgbGVnYWN5LXRydW5rCis4NTUyIGJmM2Y0ODdmY2Q4YjU3Zjk5MDllYWEyN2VhZWEyMGUzNzhhZmI1MGYgbGVnYWN5LXRydW5rCis4NTUzIDY1NDBlYjE3ZTViNjQ1N2I1Y2E1Zjk4ZGUxMzk3MmJhNjljYjE5MzcgbGVnYWN5LXRydW5rCis4NTU0IDg4MTRjY2YyZDFjZGI2NTgyODU0NjRhYWI1YjIzNTVjMGExMGQyYmIgbGVnYWN5LXRydW5rCis4NTU0IGRjNWM5NjhlYzk5MmFhYjNkNDBhNzE4OWRmMGM0NDNkMWM3YTFhNjggbGVnYWN5LXRydW5rCis4NTU2IDJmMWE1Y2FkMjdiN2EyMzAxYmMwODg0YWRkMjM2NTU0NTg2MjUyNTAgbGVnYWN5LXRydW5rCis4NTU3IGQzYzYwMzVhYzNjYmNhYjc1ZmJmZjNlOTNhYmVjZjY1M2IxY2VjNmYgbGVnYWN5LXRydW5rCis4NTU4IDBlYjE0YTY0ODRmM2Y4ZjdkMmYzYTg0ZTc1YWI0ZmQzMTJjNDYxYzEgbGVnYWN5LXRydW5rCis4NTU5IGQ3Y2EwNTU0Nzk1ZWVmM2ZiNDFmYmYxOTdkMWMwZDA4ZThjY2EwZWQgbGVnYWN5LXRydW5rCis4NTYwIGYxNTkwNDQ1MzBiMTgyNzA0NjcyNmZiMzYwMjZlZDcxMGJjMWY5ZmYgbGVnYWN5LXRydW5rCis4NTYxIDBhYTYyY2JlZDlmODJlOTE3MjlkMzk5Mzg5YjU4YjFlNzFiOWJjZDAgbGVnYWN5LXRydW5rCis4NTYyIGY5ZjAyNjJjNGM1NzZlN2I3ZDUwYmJlNDRlMzhjMWZkZGNiYjY5YjggbGVnYWN5LXRydW5rCis4NTYzIGQ4OWEyMTliNDlhNzIxM2MxYjJjODUwZDVlYWYxZDdlOTI1MjY1NDcgbGVnYWN5LXRydW5rCis4NTY0IDYyMmM4ZDk4MWE2OTU1ZmE2MWNiMDUyZmI1ZGIyNDI1YzIwYTIyOTIgbGVnYWN5LXRydW5rCis4NTY1IGIwNDRjNDc5Y2JjODMwNTE4M2U1M2ZhM2QyYjYxZTc2OTAyNGJhMjcgbGVnYWN5LXRydW5rCis4NTY2IGVkYWVlNTM3ODAyMTMzYjZiZTAyMDllZDRkMGNlMDU1NzkxMjFjZjkgbGVnYWN5LXRydW5rCis4NTY3IGYxMzA0OWVkMzFmZGI5MzQzMTdhZWQ1YzIyMWQ2NmU5OWFmNzI3NzEgbGVnYWN5LXRydW5rCis4NTY4IGRjOTE2ZDhiYmI1NWQ4ODI0MDVmZDhiZjMyYWFlY2Q4OTQ2NjU4ZjEgbGVnYWN5LXRydW5rCis4NTY5IDI5NDljMGE0MGI3YmQwOGNhZGM4YWFkNjE0NWNlN2JjMmU4NjNlOTAgbGVnYWN5LXRydW5rCis4NTcwIGQxMDkzZjM0MjFiNmY1MjgwYmViMjJjN2RmOGRhYmM5YzdjYzRhMjYgbGVnYWN5LXRydW5rCis4NTcxIGEyMmZjYTdhNWM1YTdkMTI3MDdmZjhhZTFkZWY3MGM1NDMwMWYyNjIgbGVnYWN5LXRydW5rCis4NTcyIDI3NDIyNjRlZmRkZWRkNWQ5NTkyZmZjODA3OTQzMzA3ZTA4Mjc1NTcgbGVnYWN5LXRydW5rCis4NTczIDQ0YjhjZmJkYTQ0MTI0MDMyMjZmYmRiMzhlMjM0MTE3N2E5YWJiMWIgbGVnYWN5LXRydW5rCis4NTc0IGQxMzdlNjI0Y2U0MmIyMzkxYWZiOWE0YzMwNTNmM2MyY2FmMTJlNjkgbGVnYWN5LXRydW5rCis4NTc1IDE3OWJmZDBmZWUyNGEyNzM4OGQ1ZTU5OTk1MDlhNzU3YzUwMGM2MGMgbGVnYWN5LXRydW5rCis4NTc2IDhmN2Y0NzcwMDdiMzg4NjUyYzU2N2MyODUxODZlNGM0YzM4NTkyNjcgbGVnYWN5LXRydW5rCis4NTc3IDhiYjEyODIxNWRjNThjMWU4OWY4ZmNkMGQ2NTBhNzQyOTA5MTg5ODEgbGVnYWN5LXRydW5rCis4NTc4IGE2NGQxNGM0OTE0ZjIxNWU1MDE4MjE2YWU4MzFjYmZiYzE5M2VhMDkgbGVnYWN5LXRydW5rCis4NTc5IDRkOGViZjdhZmZhYjRiZGFkYjcwYWJlZDVlNjZlYjg1YWMxYmY0MWUgbGVnYWN5LXRydW5rCis4NTgwIDNiYjg5NzBmYjkxODMwYTU5MDEzYzcwNGI1YTY3MjM3NTcxZjkxYjggbGVnYWN5LXRydW5rCis4NTgxIGYzYzBjMTdiOTcwOGJmODJjOWRhMGFkYjg4MzhhOTY2MmVhZTJmOTQgbGVnYWN5LXRydW5rCis4NTgyIDc3ZmI4ODBlY2E0OTFmZTEzNTk0ZTZkYTRlZjY0YWQ4MDkyOTJiYjEgbGVnYWN5LXRydW5rCis4NTgzIDM2YjNiMzM3YzU2NjM4NDIxY2ZhM2JkYzk1NWRlYTdmMGYzN2MwNWEgbGVnYWN5LXRydW5rCis4NTg0IDdiZDU2NWU0ZmJiNWFhMDQ1NTcwYzdhNWM2N2VkOTc1YTBmZGE4MmMgbGVnYWN5LXRydW5rCis4NTg1IDE2NzZmNTc5NTE4MGJjYjc2ZjRhZWExZjQ0ODE4ZGUxZGYyZDY1M2IgbGVnYWN5LXRydW5rCis4NTg2IDhjYjJhZmQxMDExOTUwMGViMGUwYjMzODZlOWEzYjExZmYzYTQ1YWYgbGVnYWN5LXRydW5rCis4NTg3IDI2MGIyMTc2OTA2MWFhOTA2YTFjYzJhNTJmZjM0ZmE5MzFlMmUzYjEgbGVnYWN5LXRydW5rCis4NTg4IDk3M2VmMzVlZjQ4MjU2OGYzOTU2MmMzMTE1ZjY5YTZhY2Q3MWY5ZTggbGVnYWN5LXRydW5rCis4NTg5IDVkMWYzMzdjZWUyNjlmOTExYWM2ZmUyNmE3YjlmNjdhNmJjMjlkNTUgbGVnYWN5LXRydW5rCis4NTkwIGQ5MWZkN2NkOGJlN2IyZjZiZDQyNmUxNTA0ODY2Yjk2MzI2MGQzYjEgbGVnYWN5LXRydW5rCis4NTkxIDczN2VkNjY1Mjg5OGU5NDE2YzgwODk5YzMyOTMwYzdlYTBiOWI4YzUgbGVnYWN5LXRydW5rCis4NTkyIDY1YzliYTgwMDAzMDJjMmY0NmE1YWI4MGE1OWQxZmY3MmQzOGUyNDMgbGVnYWN5LXRydW5rCis4NTkzIDA3YjdkNDMyMGIxNGFkYWE1MmJhODQ5ZmU3OTIwNjMwMGQwNjUyYmYgbGVnYWN5LXRydW5rCis4NTk0IDk4YTI4MmNmYjAxM2U3ODIyODdhYzM0MjFiMTllYTBlMTlkZTY5M2YgbGVnYWN5LXRydW5rCis4NTk1IGQxM2QzYzJjOTg2MGE5MzQyZjEyMGUzODMzNmY0YmQ4MDRiZGYzOTUgbGVnYWN5LXRydW5rCis4NTk2IGMyMGI2OTgwYTg3MGZjZDYxYzhmZTcwNWViZWNlODBlOWM0MDFkMDIgbGVnYWN5LXRydW5rCis4NTk3IGRmMjllODNjMzA0ZmFhNGVkMmI0ODNhMjE1YmM1OTEyMjk1MzRlODUgbGVnYWN5LXRydW5rCis4NTk4IGRmMDI4YmM1NGU2ZjMyYTVmMGY4YzBhMTdhYjViZTQwYzJjZjI0MzMgbGVnYWN5LXRydW5rCis4NTk5IGRiOGFjNmUxMDliNGRjMGI5MjhkMDZhOWNjZWQ3YmQ3NTM4N2U2YmMgbGVnYWN5LXRydW5rCis4NjAwIDc0OGZiNWEwMDlhN2MwYzMwMTZhODVjYjNkMTkzNWZhZjFiZjMzYjggbGVnYWN5LXRydW5rCis4NjAxIGNjMmM4NDc2OTYzNmE0MjU5ZjdmZTkwNWVhMDljZTc5ZGY2MmU4YmMgbGVnYWN5LXRydW5rCis4NjAyIGQ0ZTg3YWE3YmZmMDU2NzkxNTI2ZjNlZmI0ZjRkNjA0YmMxYTE1NDAgbGVnYWN5LXRydW5rCis4NjAzIGI0NDkzNGMyMDEyNWVmZDhhMzIyMmM3MGEzYThjMzY0ZTAzNjRjMzcgbGVnYWN5LXRydW5rCis4NjA0IDQyNTQwOTVhNTAyOTgwMWMwZjkyNjM0N2YwNTIyOTRiZGY1NmNjNDQgbGVnYWN5LXRydW5rCis4NjA1IDA2MGY4MzkzMmU5MWE2ZjU4MjNlODIwMTZjOGRmYTJiOGVmMzZmYTUgbGVnYWN5LXRydW5rCis4NjA2IDVkYzA3OGIyMTNlNTgyZDcxZWE4MWNkMGMwMDZjNGRmYzMzYWYyYzMgbGVnYWN5LXRydW5rCis4NjA3IDJkOTU4MmVlZTExMmU2ZThjYWRmZDY0ZjFjMjRlNDkzZDEzZTg2MGQgbGVnYWN5LXRydW5rCis4NjA4IDg1NDJiODkwMzk4OTk1ZjljMDMyOWFjMjc4YjcxODI3MDkxNDRhNGMgbGVnYWN5LXRydW5rCis4NjA5IDk0NjA1YjAwMjZlN2Y2YmYzNzcyYTdjMDUxZThhNjI2NjY5YjMzNjUgbGVnYWN5LXRydW5rCis4NjEwIGI0YTBiZTVjNDJiZjc1OWI1YzJmMGYyODliMjE4MWI5NDNmNzhlM2IgbGVnYWN5LXRydW5rCis4NjExIDU1MjgzZjY4MWExYzIxMDFkMTllN2YzNzBlMWNmMzk2OTYxMmNmYmEgbGVnYWN5LXRydW5rCis4NjEyIDMyZjY1NzQxNzQzYmQ3YWM2YmQxODgzNjY4NjJhM2ZhZjBkNGIwMWIgbGVnYWN5LXRydW5rCis4NjEzIDU3MDQ1ZjUxZGQxMmIwNGQyNTg2NTU3ZjkyOGEyMmYxMmMwZGI0NjIgbGVnYWN5LXRydW5rCis4NjE0IDQwYWJmMjNlMTY4YmZjM2JhY2QxZDU5M2JmNmY2MWFhZGIzNTMyOWMgbGVnYWN5LXRydW5rCis4NjE1IGY4MGU3NjNjMTcxN2RlNzkxMTA4MmUyNTA4MWI1MjQ5MzEzM2UxMGUgbGVnYWN5LXRydW5rCis4NjE2IGEyODdjNTAxNGU2NmE4MTg4YmFlMjkxMDFlMjZjYTFmNmJlODAxZmQgbGVnYWN5LXRydW5rCis4NjE3IDNjOTUxMjQwMWY2ZDZiNzZmOWIxMDliM2U2Y2NhZmEyYWM3YWQ0MzIgbGVnYWN5LXRydW5rCis4NjE4IDlmNjE2YTQ5MjE5NjYxOTEwMDc5ZjVjZjMzZDI0ODJjNTZmNDVkZjggbGVnYWN5LXRydW5rCis4NjE5IDE0NGRiNjM1YjQ5ZDMzZTk5YjZmZDFlNWI3Mzc3NDVjZDE3NTdhZTIgbGVnYWN5LXRydW5rCis4NjIwIGMyMzM0ZDk3Y2UxNGNhNDE2OTVlN2E5OTM2YjY2NzBmMDQ1N2U4MGYgbGVnYWN5LXRydW5rCis4NjIxIDE0MTgyMDI0MDExMTA5ZGNlNWUzNTdiNDg4OWFmNTEzNjE2OThjYjUgbGVnYWN5LXRydW5rCis4NjIyIDM0MWZjYjdiYWQ5MDNiYTI5MGU4YjJiYTA5ZWY0N2ExNmM0NWFmOGMgbGVnYWN5LXRydW5rCis4NjIzIGEyYTFkZjBjYTgwOGY2MjMzNDkyMzIyYTM3NzE1M2I4ZTdhYWMzNWMgbGVnYWN5LXRydW5rCis4NjI0IGI3NmE0NDE2M2UwZjYwM2I2ZGM0YzhhZWVlMmE2YWNlYzM5ODE4YzEgbGVnYWN5LXRydW5rCis4NjI1IDQ1ODRmMDg5MzBhYzkxYjQwMzc5NzQ5OGMzZmU1Y2E5OGQ0ZmExOWEgbGVnYWN5LXRydW5rCis4NjI2IGJiMDExMTMwODdlYmM1MGEzNzE1OGMwN2NlNmE5OWIzODVkYWU0ZmUgbGVnYWN5LXRydW5rCis4NjI3IDlhNzhjZTFkYjhmNjhlZjE5ODlhNGMwZTRiNzRhMDdhZDk3OGU0YmUgbGVnYWN5LXRydW5rCis4NjI4IDlmZDYwZTY0MGFlNWQwOTc3MTBhZTM0MWY1YzRiMzk1ZjZkYTE3M2EgbGVnYWN5LXRydW5rCis4NjI5IGQ3Y2JkMjY1MWU1NTliYmRmYjcyZjk4NGY4YTYwNmFjNWJkZDBiOGYgbGVnYWN5LXRydW5rCis4NjMwIDE3YTI2Zjk4NjAwNzg4NDIzMTc3NWI4MTlhZDRlMzNiMTczMThkMTggbGVnYWN5LXRydW5rCis4NjMxIDJlZTk4MTFjOTJmZDRiMmVjZWE2NjIwYzllYWY3MjdiMzc3YmI4YzYgbGVnYWN5LXRydW5rCis4NjMyIDQ3ODY3MDA2ZjA3NmFlODU1NzZhZDJkODMyOWNiMDY4MDlmNjdiY2EgbGVnYWN5LXRydW5rCis4NjMzIDFhMmJmYTlhMDNmNzQyZjg2NDk4ZDllYzIwN2FhY2EyYTBjNjQ1NmYgbGVnYWN5LXRydW5rCis4NjM0IDY0N2U2MGZiM2JhYzNmN2MwNGIzMTBmNjQzMGFiMzcwMzY3MGZhMjEgbGVnYWN5LXRydW5rCis4NjM1IDJlMGFhOGQ4MTM5NjRiYjZiYWRkOWE4MGQzMTNhYzk1NDBlZjQxY2EgbGVnYWN5LXRydW5rCis4NjM2IDJiMDNhMWRmZGJkM2ZlNmM4NDUzMWYwZTFmNDk4YTk3NTI0Y2IxNDUgbGVnYWN5LXRydW5rCis4NjM3IDc5NTkyNzYxYjMzMWEwNjNmM2E1OGFjMjVkYTVhZmY1NjM2N2ViODEgbGVnYWN5LXRydW5rCis4NjM4IGQzZDVhMjVmM2I3MDVjYTI1NjNlMWFhOGUxYzc4YzRiYjIxMzQ5ZGMgbGVnYWN5LXRydW5rCis4NjM5IDkxODNhM2M2Yjg1ZmNhMzYyYmNkODViYTRmY2U1M2FiNTRmYzYwNjQgbGVnYWN5LXRydW5rCis4NjQwIDExOWQxODRiYjVlZDg5MGU4MTc3MjQ3ZmM0ZWY2YTY5OTZiODY5YjkgbGVnYWN5LXRydW5rCis4NjQxIDNlYzVjYThhZjkxZDFjNjM1OGU1YWVlMzU2ZmRiMzhmNTBmZWY2NjcgbGVnYWN5LXRydW5rCis4NjQyIDI5ZGRmMTA0OTg0Mjc0YWZmMmI1OWMzMmM4ZTRkNDIwNTlhZDU1ZjcgbGVnYWN5LXRydW5rCis4NjQzIGExOGUxY2ViZDI5ZmM4Y2ZmNDgzZDAwNTdmZmVkMDg4NTg5MDViMzcgbGVnYWN5LXRydW5rCis4NjQ0IDllNDMyNDY4Zjc1NjA1ZDZiMDQ0NWZiYWE5MmZlMGU3YWNhYzY3OTAgbGVnYWN5LXRydW5rCis4NjQ1IDI1MTRlOWZlMjlmNmQ3MzlhM2YxNGY1OGI4NDdiYmNjYjgyZGQ3YjIgbGVnYWN5LXRydW5rCis4NjQ2IDQzM2QzZTFjMDJmN2QwNjlmYWNmMzM0MDM3YmNiMzk1YzhkNzkyZDcgbGVnYWN5LXRydW5rCis4NjQ3IDNlNmQ2ODhiMGQyYTI3MmJmMjUxYTJjYTIzYTJjNjNmZTU1ZWUwMjMgbGVnYWN5LXRydW5rCis4NjQ4IDlhM2U2ZjBkNmI1YTk3NzUyNDBmM2MyY2FiNTBlYzIxOGJhMDkyNTkgbGVnYWN5LXRydW5rCis4NjQ5IDJmNjA4MzRlZWFmNWQ2M2E5NmNhOWM4NDBkNzdjYjcxOTlkYWUwZDAgbGVnYWN5LXRydW5rCis4NjUwIDI1M2UxMWI2MTEwNmQ4ZWRlZGQzZmIxNTlhZDg0NGMwNjY1MWE3NDcgbGVnYWN5LXRydW5rCis4NjUxIDc3MTM1ZGE5ZjM2Y2RjZWFhMGM4YmQ5Y2JkMjVhM2VlMTlhNmNkOWYgbGVnYWN5LXRydW5rCis4NjUyIDE5ZmU4ODBjYTkxOWZhNzU1NTNkNmM3NzcyNTM3MzFhNmVjOWFiYmQgbGVnYWN5LXRydW5rCis4NjUzIDE4ZjgyNGU1YjllYWU5YmI1MTY5YWFlNWE0NWI3OTAxNjgyZjExN2IgbGVnYWN5LXRydW5rCis4NjU0IGFhY2U1MDJiOGU4YjEzNDQ5YmZhYzA5YmI0ODU2NDA3NjY0NTQ4OGEgbGVnYWN5LXRydW5rCis4NjU1IGI1NWIyMTdmMmUwZDc5YzNmMzg0MjZkNmIzNDFjNmRlNGQ2Yzg3OGQgbGVnYWN5LXRydW5rCis4NjU2IDZjYjY2ZjBjYThkNTQwOGY0YWE4OGZjYzJmYjY1NDk4OGUwYjVlNWEgbGVnYWN5LXRydW5rCis4NjU3IDJmZjc2ZTliYzg1ZDdmZDI0ODg4ODE3NWUxMWI2ZjFiNThhZjllMmMgbGVnYWN5LXRydW5rCis4NjU4IGVmOWEyOTUzZjkzMzQzOWVlYTQ0ZDEzMzFhMTA3YzA3ZjU0NzYzOTcgbGVnYWN5LXRydW5rCis4NjU5IDQzYjhjNGE2OTZkMTE0Y2QwZDFjM2U1YjE5OTcwODliYjczMjUwODQgbGVnYWN5LXRydW5rCis4NjYwIDY0ZTE5NGM1Zjg1NGQwNzUyNGIwM2M2NGFjMDcyMTY2MmRkNDdlZGEgbGVnYWN5LXRydW5rCis4NjYxIDExMjQ5ZDQzOTg0MDQ5YzA2MjEyMmU0MDc0MDhmNmUwZTE2Nzk2YzggbGVnYWN5LXRydW5rCis4NjYyIDMyYWFjZDc1M2YzNDNhYTM4YmQ4OGVhYWY2MzljNzA4Mzg3MDU3ZWIgbGVnYWN5LXRydW5rCis4NjYzIDJlNzU1ZDFmZjY2MWYxNTBhODgxZGUyYzgyNWUyMTBmYzAzZmJmYTkgbGVnYWN5LXRydW5rCis4NjY0IDNlYWJhMjUxYTMyOTk4YTg1MmFkYWIwZjQ5ZjRlNTBlMjQ4ZGFjODUgbGVnYWN5LXRydW5rCis4NjY1IGI3YzJmZjMwNzAzOTlhMmEwOTI0YzZiYjFhZmU5Y2E5YTQxMzk5MGQgbGVnYWN5LXRydW5rCis4NjY2IGU0NzEwMTE5YjQxY2Q2MTI0OTA0Y2QxZWRkOTc3MTRiYTEyMjQ3Y2QgbGVnYWN5LXRydW5rCis4NjY3IGI1NzU3ZTg3ZWIzMmVhMjg4YjAzNDI1ZmQ5MjE2NDI3YjE0MGIyZDMgbGVnYWN5LXRydW5rCis4NjY4IDNhNmI3YTM3N2RjM2E5NjNmMzliNDNlNGM0NTMzM2Q2MTFmYjk1YjEgbGVnYWN5LXRydW5rCis4NjY5IDEyYjhhNDM1OTlkMzM3MzQ4MWNkZmNiM2E0YzYxZWUwZTQzZGYzNzUgbGVnYWN5LXRydW5rCis4NjcwIGJmN2Q3NzA1ZGNlNWRjYWMyNmUzYzAwNjVjNDcyMWNlOGYyNWRlM2QgbGVnYWN5LXRydW5rCis4NjcxIGNmZjEwNWEzYTM4NGE3ZTcyZjQ5N2Q2MzcyYmNkYzk5YzVmN2VmNDIgbGVnYWN5LXRydW5rCis4NjcyIGQ5Nzk4MGU3YzA1ZjMwNWQ0ZThkZTMwNDJiNDg3ZGFhMTY0ODU5NzUgbGVnYWN5LXRydW5rCis4NjczIGFiMDQ1ZWQxMWJjOTY3ODk4MGQ5ODIyZmNkZmU0MmRhMjc2Mzc1OTAgbGVnYWN5LXRydW5rCis4Njc0IDdkYTdiYTVjNjUyNTg0ZjdmMTQ3MTgwMDY5YWMxMzRlNzBhMzc2MTAgbGVnYWN5LXRydW5rCis4Njc1IGM0M2NhOGRkMDA4MTg3NjljNzk4YjFjNjliYmNlYjExOTE3MTk4ZjIgbGVnYWN5LXRydW5rCis4Njc2IGZlODk3MDljMmVhYzBiZjc3ZTAxZTA3ZmUwNTgwMjlmMTA0YmJlNWEgbGVnYWN5LXRydW5rCis4Njc3IGM1N2NlZGUzYzdjMDAyMmZmMWIwZWRlNmQ3MTYzOWVhZGM3NGJjZjAgbGVnYWN5LXRydW5rCis4Njc4IGRjOTc0YjNhNmNmNGY3MjJmNmM4ZTcwMTk2MzM4ZTVmMmU2MGRjNmIgbGVnYWN5LXRydW5rCis4Njc5IGJhMmYxMWE4MmYyNzdjNWZkNWRiOWY2MGJhYTk2YTc5MmMzYmJiMTkgbGVnYWN5LXRydW5rCis4NjgwIGY1N2FlNjhhYTNhZTUyNmVkNjc4ZGZjNDBmOWQxOTQwYmFiMTIzOGEgbGVnYWN5LXRydW5rCis4NjgxIDI0ZDY2ODQ1NGNiMDAwMjMxOWNhMDFjZDU5MjBiNjA0OTRkZWJlMTEgbGVnYWN5LXRydW5rCis4NjgyIGU1NTRiOWY0YTNhYTkyOWUyYmQ3MWM5NmQ5MjI4MWJmNmIxZTk3MTggbGVnYWN5LXRydW5rCis4NjgzIDc3ZjViNmNiZWE2NjI0MDg4Yjc1ZGFlMTA2N2E0Njk5NDllNmJiZGMgbGVnYWN5LXRydW5rCis4Njg0IDljMmVlNmJiZGJiMzIzN2Y2MTZlMjI3ZGI5ZjU5M2VhMTk1ZWIzMTQgbGVnYWN5LXRydW5rCis4Njg1IDdiNDVkOTJlMzg2MWUzNzYwZDg4OGViMjY5N2IwZjM3ZjY5NWVhMGIgbGVnYWN5LXRydW5rCis4Njg2IGZlM2ZhYzFhM2U1MTc4NDZiYmI3YTllM2U0Y2Y4ODcwYjgxMGEwZWIgbGVnYWN5LXRydW5rCis4Njg3IDZhMGJmNmIyNjM5NjRmYWJhNzExNDU1Zjk3ODIxNzIzZDI0MWVhNzYgbGVnYWN5LXRydW5rCis4Njg4IGExMmVlMjdjYWQ5MzIyYjIxMzNjMWNiM2FiZDIwYjkwZjIyMDYzZjQgbGVnYWN5LXRydW5rCis4Njg5IDUwODhlYzVhMTJhNmIyZTMwNTAzNDA1NzhkNGIxNTc3NTkyMzMxODAgbGVnYWN5LXRydW5rCis4NjkwIDM2ZGZjOGNjMWQwMTNhMzMxODcyNGI3NmI2YzhhODM4Yjc0MDU2MzQgbGVnYWN5LXRydW5rCis4NjkxIDRlMWY4OWExMmY5OTI5MzM3MTQ2NzBjMDAxZTFkNzA5M2FlNGZjYWIgbGVnYWN5LXRydW5rCis4NjkyIGViN2EwMWI4NmY5MzE2Yjc3ZTllNjJhN2MxMGMzZGFkM2ZjMmMxYTUgbGVnYWN5LXRydW5rCis4NjkzIDMzY2VmMDE5NjFhNzExMGIwMjcyZGNmZDAxZjkxMDY5OGVmMjY5M2MgbGVnYWN5LXRydW5rCis4Njk0IGI3MDFkZjg1YzA0NzQ3NjVjNjU2MDg1NjYzMmZiZGViMGU4NjM0MGMgbGVnYWN5LXRydW5rCis4Njk1IDhiNTljMDA0YTQ5OWMxMjYxZTBkOTc0YWUxN2UyMWRiNTQwNThiZTggbGVnYWN5LXRydW5rCis4Njk2IDQxOGQzODVhOWU0MjRjNGZjNmI3NTMzMzIwYTdlMTU1NDJlZjNjYzAgbGVnYWN5LXRydW5rCis4Njk3IGVkNDkyNGYzYjJhNTYxYzBjNzU0N2EyYzYyNDZkYTA5ZjhjYTdkMmIgbGVnYWN5LXRydW5rCis4Njk4IGVlNWJkMDg1MTdlODYyYTQ3MzY1Njc3M2RhYmEwYmVmYTAyZDhmNjQgbGVnYWN5LXRydW5rCis4Njk5IDc4YTRhNTYzMmE5MWM1NTlhNzk0M2I2MGEyNmExMTRkOGM3MjNjMmQgbGVnYWN5LXRydW5rCis4NzAwIDgwYmRiYzQ5YjRjNDBiNTkyODcyYzUxY2Q2NDk4NDhlMGU5MmI5Y2IgbGVnYWN5LXRydW5rCis4NzAxIDg1NmQ4N2QyODJhYzZiYTNhMjhhZTAzYmEyNDM4NGMzN2I4OWRiNTMgbGVnYWN5LXRydW5rCis4NzAyIGE4NWNkZjBiZWZjNWNiZmQ0MmM2YTc4MGFlZDc3YTRjZjA0YTkzMzMgbGVnYWN5LXRydW5rCis4NzAzIDk5ODU1MjE5YjM3ZjY4MDcwMmQ2MTVjYmU2N2Q4OGY1YjU2N2IzZTMgbGVnYWN5LXRydW5rCis4NzA0IDYxM2Y5NzZhNTdiNDkyZDg2ZWU2ZjRhY2U3NmFkZTFlYzRmMTY2YzcgbGVnYWN5LXRydW5rCis4NzA1IGI1MzM0N2M4MjYwZWYxNTI2ZGMwMzk1MDA0ZDdkZmFmYjAzNzdjZjggbGVnYWN5LXRydW5rCis4NzA2IDRkYTQ4MDg3MDljOTU5Nzc1N2U1ZTUzZTQ1YjVmMTE1MzQ4NTg2MzAgbGVnYWN5LXRydW5rCis4NzA3IDBlZjBlMDUxYjFmOGQyMmMxM2UyZDQ1YWJjZGY1MjIzMDgzNmUyMTcgbGVnYWN5LXRydW5rCis4NzA4IGM4OTM5MGU1NmI5MTQyZWM4NDljY2Q3OGEzZWVlOGQ5NjBlZjJiZTQgbGVnYWN5LXRydW5rCis4NzA5IGZjNWUxZTAwNDk5NDBhZTc0MDhkMzNmYWQ5NjNlM2NkNDUxMzk3YWMgbGVnYWN5LXRydW5rCis4NzEwIGVmY2VkODMyNmUzZjI1MGE2YTY1MzljZjcyNTViMDNjOTkzZjgxZTggbGVnYWN5LXRydW5rCis4NzExIDRlNWZiOGQ5YWNiMWM2M2M5NTcwMjA2MzkxOTI1YjMyZjFhNzM0YWIgbGVnYWN5LXRydW5rCis4NzEyIDI0ODQ1OTY4MzIzZjkxMDJkNDAyYjM2MmFjYWE2ZTYxYjRhZjYyYjIgbGVnYWN5LXRydW5rCis4NzEzIDZkZmVjMzIwZjkxMDllMTRhMjM2NzhkN2E3NTY2MGVhMjU2NzNmMzQgbGVnYWN5LXRydW5rCis4NzE0IDAzYjg3OTNmNzZjMmNiY2VkNTg2MzAzNTMwOWEyODU0MDAxNzI2YWQgbGVnYWN5LXRydW5rCis4NzE1IDQ0NjJkM2M2MDBiZjk3MmFjNmFmNjIxYjM3MTYxNTRjZTEwNjBlNjggbGVnYWN5LXRydW5rCis4NzE2IGY2MDg3NjgzNWE3NTljMjFlZTQ0N2FhMGY0YmVhMWMwNjgyZTk3NjkgbGVnYWN5LXRydW5rCis4NzE3IDNiNWJiY2FmOTE3Zjg3YzdlYzFiNzVjZmY4MDYxZmNlODU4YTk3NzkgbGVnYWN5LXRydW5rCis4NzE4IGFiNjQzNDRlODdkYmRiNWIyNzY5NDZlNDQ4MmI5YjY4YjdlZWIxMTIgbGVnYWN5LXRydW5rCis4NzE5IDIxYTI4NDkwYmQ5NjFjZThjMWRmOGNkN2RlMTAzYzQ5N2YyZDFhZmEgbGVnYWN5LXRydW5rCis4NzIwIDQyNzlmNGViMjEwYTIxNGYwZmYwZjQ5NzI3MmQ3NzQ0ZjRkYzczNTcgbGVnYWN5LXRydW5rCis4NzIxIDVhYjIxZDFiNjFkODZiZjMzYjAyZTMzOTNkYWI2MzNlNGVmMDIyY2EgbGVnYWN5LXRydW5rCis4NzIyIDE1YmNlYzNkMzI1OTllNjQ5OGQxYTEzZTc2ZDgzODlkNzFiYjY4OTMgbGVnYWN5LXRydW5rCis4NzIzIDRjZjIwZmE4ODNhOTJlMWU3NGE5MTc4NWZhZjA4Mzc3NmNiMmNhNTMgbGVnYWN5LXRydW5rCis4NzI0IDE0OTY0NDRlOGM4YjgzMDQ3ZDI0YWFlZmUyZWFjYjU2MDMzOTVkYjQgbGVnYWN5LXRydW5rCis4NzI1IGFmMTE0ZWQ5ZTYxZGVkNjBhN2JlOTdkOTRlOTMyMDhmNTFlYTY1MmMgbGVnYWN5LXRydW5rCis4NzI2IGYxMGFhZDczZTAyOTMxMTAyNTdhNGYzMGM2NDk0Mjk1ZjBiMjY1NmEgbGVnYWN5LXRydW5rCis4NzI3IDNmYTRiN2FlMGU2YmMxZjBhYWFlNDAxZjA1Y2M5YmM4MGY2ZmNhMGEgbGVnYWN5LXRydW5rCis4NzI4IDNlMGFhNzE2MmM4ODFmNjNkN2ZiZWZiODU3ZjFjNmRjYjZlZmY1NzAgbGVnYWN5LXRydW5rCis4NzI5IDY0MjlkYjVkMGFmNzJkMDA5MWViMDkxZTQ0NTA5ZmE2N2MyMDMxMzQgbGVnYWN5LXRydW5rCis4NzMwIDUyMjRlZDg3N2JhZTdkNTZiNGRlODQ1NmIyMzk3NTdmNGIzZmJhYzEgbGVnYWN5LXRydW5rCis4NzMxIDRjNzZlZTAxZGYwOGRiM2M0Y2E0MWQwMDI1M2QyNjY3N2Q5MjY3OTcgbGVnYWN5LXRydW5rCis4NzMyIGY0NDZlMDhhYzMwMjdiODZmMjdiM2FkNjZhNzc0YmM5ODVkYzc5ZmYgbGVnYWN5LXRydW5rCis4NzMzIGNlMjA5MjcxNDQ4NDM2OWU4OGNhZTI2MmIyNjU0NDg1MmUwMmE5YTEgbGVnYWN5LXRydW5rCis4NzM0IGRkZDI1NTEwZjNmYjZmMzFiZmZmMWFmNDgxZTk1NzUzNjc1NjIxZTQgbGVnYWN5LXRydW5rCis4NzM1IDdjMWVhODVlMjY4NDJhYmQ0MmRiZWFlMjYzMmMwOWViMGQ1OWY4MzAgbGVnYWN5LXRydW5rCis4NzM2IDRmYmNjNDI4OTAxMjZjMmI2Yzk5Y2E2NDllMzk3YzM2YWQyMzZjNzEgbGVnYWN5LXRydW5rCis4NzM3IGMwY2QyM2U3MDhiNTg2ZWQyODhkMmVkMzFmMmU2MGMwZmM5NjJjNGQgbGVnYWN5LXRydW5rCis4NzM4IGQ5Nzk0MWVjNWVlZDAxMTU0YWE3YTZiMzE2OTRmNjQwNmQ5ZGZmNGQgbGVnYWN5LXRydW5rCis4NzM5IDUwNzRmYWIyOTI1ZDhhYzBhODUzYWE1YzgxODZkYmI3YTlhNDEyZmIgbGVnYWN5LXRydW5rCis4NzQwIGFhNmUwNTA0ZTBmMmFiNjg3MzUwYmMwYTY3OThiMWYxYzQ5MTUwODAgbGVnYWN5LXRydW5rCis4NzQxIDNkZjIyZWRjZWNhZDg2OTcxMmQ5NWNhNmM3MjY4YjMzZGNmNzdhMDMgbGVnYWN5LXRydW5rCis4NzQyIDhhNTAyNDlhYTcyZjMzZDJhOTJhNjZkZTk4YjAwZTBmZDNmNjRjOWUgbGVnYWN5LXRydW5rCis4NzQzIDhjMWUwMjA4OTM3OThlMGYzZjkzYTFlMjcyNzA3ZjM5MzJkYTAwNWYgbGVnYWN5LXRydW5rCis4NzQ0IGViOGQxYTA5OGI5ZGVjYjE0NmNmMWYyNjBhODc5ODE5OTVjYWYzMWUgbGVnYWN5LXRydW5rCis4NzQ1IDAyMGEzYzhhYjA3MGJhMzY2NDVlMDA5Yzg3OGNlMmFjMDdmYzE1MDQgbGVnYWN5LXRydW5rCis4NzQ2IDEzYzUzMjlkMmMyZTkxMmZhYTFjZmIzZmUwOWY2OTM4MWM1OGE5YzAgbGVnYWN5LXRydW5rCis4NzQ3IGRlYThkYzRiOGUyMjVkZmJhZDUxZDgwMjQxYjFjOTI0ZGM4YjE5YjEgbGVnYWN5LXRydW5rCis4NzQ4IGU5OTI2MjQxZmFhNDAzMmZiZjJkMTBlMjE0YTRlYWQ1YzA5YmYzNTggbGVnYWN5LXRydW5rCis4NzQ5IDc3NTg5OTU4M2RhNjlkMTA0YTM2MThhOWNmYzVlOGFlYmQ3MmM2ODUgbGVnYWN5LXRydW5rCis4NzUwIDQzMzM3NzViNTVmZGRlZjZhZTViNGM2YjQ0ZTAzZjc5ODM2ZTlmMGYgbGVnYWN5LXRydW5rCis4NzUxIDdhMzgwOGVkYzUzOTA0MzUxMDdhMTFlYjllNDljNWJkNWRiZmZiOTIgbGVnYWN5LXRydW5rCis4NzUyIGY5ZmJkZTc1YzUzNjVhNWY1ODA4OTY3MDQ4MTRiMWI0NGRkOTI0OGYgbGVnYWN5LXRydW5rCis4NzUzIGVkNzRjYzU5YzhhMmM1MDRkMjkzOWVkNGY2OWZiYzBhNjRjN2QzZmUgbGVnYWN5LXRydW5rCis4NzU0IGJiNTQ3MmZiNDg4NWI5NTAyY2EyYzczYmRkN2NmOWE3MWQyZjBjYzAgbGVnYWN5LXRydW5rCis4NzU1IDI5ODQ0MTZhMWIyYjIzOGM2ZmM1ZmNiYmE4MGM0YzQ2Y2MyMGVhMGIgbGVnYWN5LXRydW5rCis4NzU2IDA3ODYwMDQ5ZjFjNDUxNWZmOTI1Y2NhNWM5MTQxZmE5MzE4OGQ0NDEgbGVnYWN5LXRydW5rCis4NzU3IGEyNjZlOTRjYTVlMWNkOTQyODNlYWQ2NzJmMTFlMTMzYzRmZWM1NmMgbGVnYWN5LXRydW5rCis4NzU4IDMzZWY3YmE2ZTc0YmE1MTM2YmQ4YmMwOGQwZWFlYTYzNGZhNjVhNDYgbGVnYWN5LXRydW5rCis4NzU5IGY2ODM5ZTUzMmJlMmI0ZWE1MTI1MjEyODE0MGRiODM4NmFjNzI1NWUgbGVnYWN5LXRydW5rCis4NzYwIGViZGM0OGQwNmNmODVlZDAyOTVkYTYyYzdlNzMwMmVhZGNmZWFmMGUgbGVnYWN5LXRydW5rCis4NzYxIGRhYTYyYzIyNjRiNTI1OTk1Njk3MWVjZTgxNTA1YzRmMDYyNmRhMTYgbGVnYWN5LXRydW5rCis4NzYyIDMzNzA1NGU5ZDRmYTQzNzU2NWM0ZjgxNzI1MjM0ZjI1ZWRkNWM0ZGYgbGVnYWN5LXRydW5rCis4NzYzIDgyY2QyYmFhNDEzNjQ2ZjZjYzgwZDViYTViOWU4MGU4N2EyOWI1MjggbGVnYWN5LXRydW5rCis4NzY0IDQ4OWRiMzYyY2Q0OGQwODMzYThiYTg5MDI5YTc0YTgzYzljMTQwMzUgbGVnYWN5LXRydW5rCis4NzY1IDVmYTRiMTAzM2IwNmZjMTk1MWViNThjZjA4YTUzNmY1MmJiY2JiNjQgbGVnYWN5LXRydW5rCis4NzY2IDY1NDQ2MDQ0ZmI4ZjcxMjliZDZlYjQwZmFhODJmNjVmNmY1ZDdkNWYgbGVnYWN5LXRydW5rCis4NzY3IDQ3ZmEzZGRmYjA5MGM5NWJlZmNiMjc2MDNjNjJmODIyNDBkMTk2MjIgbGVnYWN5LXRydW5rCis4NzY4IDNkNjE0NzRhMTU1MGQ4NjU0NTczMTljOTgwN2ZiMWQ1M2YwNmRiNTQgbGVnYWN5LXRydW5rCis4NzY5IDhlMzFmMWMwN2RjNWIyZWYwMTEwNGVhOWFiYjAzNjYzMjlkOGM4NGYgbGVnYWN5LXRydW5rCis4NzcwIDZjMGEyNjU4YTE1NjEwOGEwNGU5ZTBiMzJiYjVjOWY5N2QxODEzNzggbGVnYWN5LXRydW5rCis4NzcxIGE4NGVmMGE3MTFiYTA5MmI3MDgyN2YwMTNhMTA2NzUwNmM1MDI1OTIgbGVnYWN5LXRydW5rCis4NzcyIGVhYmRlODZkOTdmMDY5N2YyNThjOWI3YmM4Y2YyNGNlOWViM2I5M2IgbGVnYWN5LXRydW5rCis4NzczIGMwZDQzZDZmNTI0MGRlN2U5OTA2NmU4MWQ5NjUyN2JlYjlmMGJiMmIgbGVnYWN5LXRydW5rCis4Nzc0IDUwOTQ3NGI4OGIwMWM0MTdjMzM4YzM4OGRhMTQ4Yjc2YmY5NDNjOGMgbGVnYWN5LXRydW5rCis4Nzc1IGViZDA5OTg4OTcyMWM0ODA5YWYwZmU1OGVkODhlMDhmYzM1OGUzMWQgbGVnYWN5LXRydW5rCis4Nzc2IDAwNTRhMzg0MGE3NTJhNTM3MDNkMmMxZGExNDIzMjNhYTZkMmYzMTIgbGVnYWN5LXRydW5rCis4Nzc3IDQ5MTA1YjllOTk0NzQ0Nzg4MzBiNTc5ODczMDJkNTZlYjlhY2FjMzIgbGVnYWN5LXRydW5rCis4Nzc4IGE0MzM1MmYwZTFlZTZiYWFhZmJhODc3YjI2OTBmZDIzODY2NGFkZGMgbGVnYWN5LXRydW5rCis4Nzc5IGE2MmQ2ZDA2M2MwZjA4OTgzYTI2ZTcxMTc0NmQzZjNmNDFiMDFlMGQgbGVnYWN5LXRydW5rCis4NzgwIGNmMGVmZmMzZjU4NWM3ODhjOGNhMDczNDU2N2JhMDIxMWI5NzcxZDYgbGVnYWN5LXRydW5rCis4NzgxIGIzNzhhMDg4NjYyMDE1MWVkYzM4ODk3ZjdlN2JjNGQyMzE0OGY5MzMgbGVnYWN5LXRydW5rCis4NzgyIDZlMWZhNzZlNzk0MDdkMjQzYWJmZDA3OWIzN2NhNzY4MzkyZmIyZWMgbGVnYWN5LXRydW5rCis4NzgzIDU5YTlmYmY1OTEyODYzZmFhMGQxNzg0OTA3MWRmMjc4OGZlNmFmOTQgbGVnYWN5LXRydW5rCis4Nzg0IGUxZWE0YWQ0NjFmOTIzYjk5OTllMGU4Mjg5ZTM5MDhlYmUyZGVmMDcgbGVnYWN5LXRydW5rCis4Nzg1IGVhNmU1ODcxMzZiNmUzYmJkMDA4MWE4ODRjZTE5MmI2OGRlMDY2N2QgbGVnYWN5LXRydW5rCis4Nzg2IDkwNGE0ZDc4M2EzMzcyYjNmMjFmZDUwYzRlYjUyYTk2NTE4ODFkMWQgbGVnYWN5LXRydW5rCis4Nzg3IGViNTEyOGU4YThlOGUzZDcyOTZlODc2MTZiYmY1ZDJkZTY5NjRiZGEgbGVnYWN5LXRydW5rCis4Nzg4IDEzZmJkOThkODFjYzA2MWM3Mzk1YjFiNzFlOGIzNmQ0Y2VmMmY4N2YgbGVnYWN5LXRydW5rCis4Nzg5IDdiYTc5Yzk0OWIzYTcyNzhmYWZiZTBiZThlZTIxOGJiOWU3MTg2N2IgbGVnYWN5LXRydW5rCis4NzkwIGI5NDU4ZGM5OWQ1MGEwZjEzOTQwODZmODM5YThhMDZmMjcxOWJlOWIgbGVnYWN5LXRydW5rCis4NzkxIDRiNzg1ZTU5ZTgzMTIyMDA1NTFlYjdjODM1NDhkYmVhZTkyZjJlODEgbGVnYWN5LXRydW5rCis4NzkyIGQyNTQ4OWM1YTIyZjRmZmFmZGIwN2FjZjhkZTRjMTdkYWE5ZDQ3NDMgbGVnYWN5LXRydW5rCis4NzkzIGMyMzU5NjY1YmU4MDczMGNlMTJhN2VmNmQzMjg3M2UzNzlmNDE5ZjcgbGVnYWN5LXRydW5rCis4Nzk0IDcxYjQwY2M0Y2MwMzcyZjNjZGViZTI5OTRmYjBiZGUxNTBmODg4N2QgbGVnYWN5LXRydW5rCis4Nzk1IGNkYzVhNDBmY2Y5NzRlOTQyZWU2Zjc5OTQxZjI0NjIwNWFiNTQwMzAgbGVnYWN5LXRydW5rCis4Nzk2IGI3ZjBiOThmNTMyNTE3Zjc1Mzg0YTc3MmFjNjU3ZWY3OWNhMGE5ZDggbGVnYWN5LXRydW5rCis4Nzk3IGE3NWNhNzRkZWVjYWNjODhhYjkzZTNkMDBhZjk5YWEzYjIzYjc5MjUgbGVnYWN5LXRydW5rCis4Nzk4IDkxM2NkMWYzNzNiZTQ3YjZlOTMwNWZlY2JlMmQ2MzNkY2NkNTgzN2QgbGVnYWN5LXRydW5rCis4Nzk5IDA1ZDk0M2M0NTk3YzJkYzNlZWY4OGQ4ZWVkNDUxNTgzNTg1MjQ1Y2QgbGVnYWN5LXRydW5rCis4ODAwIDNmOGQ3Zjc0ZjFiYzU0OWEzNDZiYzJkMGRkYmFiNTY1YmE5ODdiMzAgbGVnYWN5LXRydW5rCis4ODAxIDIwYjU2NDdhMDY3ZWJmZWZmZjU4OGJiNThiNzI3MzlkMDg2ZGI2MTUgbGVnYWN5LXRydW5rCis4ODAyIDVjZGMzY2EwNTNkNmU4MTBhNTY1NTUwZmMxMjQwMmQ3YTRmYmY3MGIgbGVnYWN5LXRydW5rCis4ODAzIGIwMTgzOTk0MDIxYjM3MmZjZjUxM2EyODgzMTA3MzgxYTRlODc2M2MgbGVnYWN5LXRydW5rCis4ODA0IDRiNDc3NWI0OWJmYWM0NGI2MTdhNjRjZjkyZmE0MGU2MWFiNjhhZjMgbGVnYWN5LXRydW5rCis4ODA1IGRmZWFmOTY1ZjQ4YWQzMmYwYmIwZTllNmM1MjBhYTlmMjVjODIxNzUgbGVnYWN5LXRydW5rCis4ODA2IGZiZGNhMTcyODNjMjNiZjAwNGNlZmYyNzk5NzIzMjFjMTc1ZDgyZGYgbGVnYWN5LXRydW5rCis4ODA3IDE3MmM3ZmViZDc1NTdhNTAwZTM2OTc3MmFmYWUyYzA1MTNlMDAwM2MgbGVnYWN5LXRydW5rCis4ODA4IDk3OWM3MTIzOGU1YmIyYzNjMjQ4YTlmZjA5YWMyOGE1MjVmNDEzZmEgbGVnYWN5LXRydW5rCis4ODA5IDJmNGE5MjVlOGI0YjI0MTQzZDMyOGMyMDYzYmJlMzQxZjhkZmY0ZDggbGVnYWN5LXRydW5rCis4ODEwIGRkMTAyNzY2ZWE1MTIxYmNiMzAzMjAzZDgwZWM2ZWVjODMxODAyMjkgbGVnYWN5LXRydW5rCis4ODExIGZjMWMwYTI3YmI5NjM4YTZlMGQxNjA1OTljMDdhMWFhZTVkZjk0Y2QgbGVnYWN5LXRydW5rCis4ODEyIDU3NWY2YjkxMGY4OGI0MTZhNzZlM2MzMjMwMjYzYjUwY2MxNTkyNTkgbGVnYWN5LXRydW5rCis4ODEzIGE0MmIzMWZlOTc2ZjU1NDQxYTI5Y2Q0NTljZDUwYmVlYTUyZmJmMmMgbGVnYWN5LXRydW5rCis4ODE0IDllNDI5NTE4Y2IyMDE3NDUwZGQyZGRhYzUyMGZhMmM0OWVkOTExYTEgbGVnYWN5LXRydW5rCis4ODE1IDRiMDc2ZmM1YmE0MDNlYWFkNWQwMGY0ODk4MTE2ODU3M2QxY2U2ZDggbGVnYWN5LXRydW5rCis4ODE2IDZmOGViNGExZmEwN2ViNzk5MTgxZDJmMGMwMTQyZTM3YjI2YWVjZDMgbGVnYWN5LXRydW5rCis4ODE3IDU5M2Y1NDEyOTY2MTZhMzljOGQzOTBhZGM0MjQ3Nzg2YzVhODZmYTEgbGVnYWN5LXRydW5rCis4ODE4IDFlZDkxNGY4YmYwYTBmZWM4Yzk5ZjJlZmJhM2Y4OTJkZDU3YTMxNWQgbGVnYWN5LXRydW5rCis4ODE5IGU5ZWQwNjRmMzlmNTA1Y2Y3YjUwOWRmNzYyNTNiMTVkMWZmMmFkM2UgbGVnYWN5LXRydW5rCis4ODIwIDY4OWRlNjEzZWExY2NhMjcxNzc5YjNkZjBhMjJlNzhkYzhjZmZhMjYgbGVnYWN5LXRydW5rCis4ODIxIGU0MDg3Y2Q0MGM4NWQ4MDBkYmVkMzZkYmNmMWZkNjg4ZDYxM2Q4MmUgbGVnYWN5LXRydW5rCis4ODIyIDk4ZGFjYzg5NzNhMTIwMmY2NDI4YWVjMmY0NjlhYjU0NTkyZTgyMWMgbGVnYWN5LXRydW5rCis4ODIzIGE1ZjI5YTU2MGMwOWEzMzg4NDFhN2E3ZDMxOGU1NjhlZGI2NzE1MjkgbGVnYWN5LXRydW5rCis4ODI0IDI2NTZkMWVlYTc5MjJkYjlmMmQ1MGRlOGVhZmE2NGIyOGQ2MjMwMzYgbGVnYWN5LXRydW5rCis4ODI1IDZhM2I5ZTdkNDNjMTM3N2QyMzNmMzk4ZDcwMmViMzViMDJjZjUzZjcgbGVnYWN5LXRydW5rCis4ODI2IGI3MzMxYmQwY2NmNTc3Y2I5YTlhNjFhODMwOTEzNGIwNjJjZTZkYjIgbGVnYWN5LXRydW5rCis4ODI3IDlhMTIxYjNmYmViYmJhZjFhNWE1MTUxZDQ1YzA0MWIxNjEwNGI1YzQgbGVnYWN5LXRydW5rCis4ODI4IDM4NjRkZjI5NDk3OWEwNjk2MWYzY2I5N2RhY2VjNWUwYWU3N2ZlY2MgbGVnYWN5LXRydW5rCis4ODI5IGI2MmE3YTU5NDE0ZTdmM2UwZjc4NTU5N2VkYzU5NGY5NjRkNThmODkgbGVnYWN5LXRydW5rCis4ODMwIDY2NmFjY2Q2Njg3OGI3NjgxMDNiYzgwMWYwYThiZWU3OTM4NGVlYzIgbGVnYWN5LXRydW5rCis4ODMxIGY0ZGNiYzAyN2NkMjJlZTdlYTQxYjc2MjYzYWRmN2Q1NWEwY2FjZTQgbGVnYWN5LXRydW5rCis4ODMyIDJlNDBlMjdmOGIyNjBmYzQ3NjBiNDcxM2QxOTc0YmZlNDQ5NmI4ZmEgbGVnYWN5LXRydW5rCis4ODMzIGE4NTdkMmY4NzMzNjRjMGYzZThjZGMyYTk5MDBiNWY0MjU1NTI0MjAgbGVnYWN5LXRydW5rCis4ODM0IDE3NGMxYmNjOGUyZDBkODI4ZWY5NmM4Mjg2NzNlNzdlYzI5YmQyNzEgbGVnYWN5LXRydW5rCis4ODM1IDllODJkZDc2Mjg4ZThmMTkzMGE0OWJmYzNmOGZiMmRmNzNkNDY2ZGEgbGVnYWN5LXRydW5rCis4ODM2IDdkZjc4ZjlkNmQzNDc3NzdhYTEzYTZiYjY4OWUzM2NkMTNlMGVmNmUgbGVnYWN5LXRydW5rCis4ODM3IGQ2NGU4NWVkN2I0NDFkYWQ3ZGYyMDY4YzU2MGMyZjI3NWY3MGQ2M2YgbGVnYWN5LXRydW5rCis4ODM4IDBlN2UyMDA0OTYzNzI4YTM2NTJlZWVmZjBkNDdjZmU0YWI3NDM1NzggbGVnYWN5LXRydW5rCis4ODM5IDMyNjYzMjY3ZWI0MDYxOTYwYzA1ODllMGNiZjgyMWE0YjM4Y2NmNTkgbGVnYWN5LXRydW5rCis4ODQwIDBjNzQ2ODhiYzFmZmE0OTM2MGI5ZjgzYTU4YmRlZWQwNDIxZTBkM2MgbGVnYWN5LXRydW5rCis4ODQxIGYzOWJlZTNmZjIyYmRhYzJmMWUyMmFkOWIwMmQyOTgxYTg3YzM4NzcgbGVnYWN5LXRydW5rCis4ODQyIDIxYjkzZDk4OTI2YjgxNWFjOWVjZTI4NGQ0YjdjNjQ4MmVjYTc2ZGUgbGVnYWN5LXRydW5rCis4ODQzIDcxYzNiZWIyOTQ5OTlkYWFhYTgyZjg0NzU2N2IwOWM1MDBlZWRkZjUgbGVnYWN5LXRydW5rCis4ODQ1IDJjMjliODk4MjY0MzM3ZDAyYTAwZjZkZDVkOTRlZTU4YTUwZGNhNjggbGVnYWN5LXRydW5rCis4ODQ2IDk0ZTBiMzFmZGY1ZjI4MzMxNTg4ODcxZmYxZGFhMjU0YzY4MWQ5N2QgbGVnYWN5LXRydW5rCis4ODQ3IGY4MjI0MDQ2Y2NmOGNiMzM2MjUxNGE4NmNlMzlmOWQ3YTdiNWViMTkgbGVnYWN5LXRydW5rCis4ODQ4IDM2NDA1MzA5Mzk3ZmMyNjQ5MDY3YjkyOGUwMmU2YmQxMWYwMzI3MzIgbGVnYWN5LXRydW5rCis4ODQ5IDY3OGEzZjFkMGM4MDljNzAwYmQyZjRmNjQ5M2Q5Mzc4Yjk5NWJlZTMgbGVnYWN5LXRydW5rCis4ODUwIGM3MTM5YjZmNzM0MDZlMWJiMjhmMTBmNDFiY2M4MTM1MGU3N2UxMzIgbGVnYWN5LXRydW5rCis4ODUxIDQ3YTlhNmRlMjNmZmMyM2FmMjhjMjNjMzg2NzQ1NTRhYWM3NDA2MmQgbGVnYWN5LXRydW5rCis4ODUyIGY2ZWY5YWY0YzhiOTU0YTU1YTdiNGY4ZWJhZWNkMTY0YzY1OGRjOGUgbGVnYWN5LXRydW5rCis4ODUzIGI2ODE4NWQ5NDc3N2MwZDFhZTJhNDliYjQ5NTBkYjQ5NDlkZDA5ZGEgbGVnYWN5LXRydW5rCis4ODU0IDFhZmNhYzc2NThlNTc0NmU0MTNkNGIyMGMzMWU2MzQxOTZjZTYzYzcgbGVnYWN5LXRydW5rCis4ODU1IDRjYjIyM2YyOTMzNzZmYTdmZjA2ZDYwZTM5NjM2YmQ3NzJlMTE4YWQgbGVnYWN5LXRydW5rCis4ODU2IDg5MjJjN2YzYTI4NTUxMTg5NzIxMzAyYzgyMmJmNjJmMWQwNTM4ZjQgbGVnYWN5LXRydW5rCis4ODU3IGI4M2VhMmZlZjMzMmIxYWFlOGFkMWIzYWIwZjIyMWNiMjEzMTZkZTIgbGVnYWN5LXRydW5rCis4ODU4IDM3ZmY3MWNkOTQxZWIwNGU3NDNiYWU1ZTY1YjRiYmRkZWM5MTU0NDYgbGVnYWN5LXRydW5rCis4ODU5IDQ0OTA0NzY0ZGFmYThjNzRkMzJjZjk2ZDU5NDU1YzBkOWRiOGFmYzAgbGVnYWN5LXRydW5rCis4ODYwIDE2Y2QzOTgwNWZkNTE4N2FiNmY4MmZmYWJkMWY5MzFiOWVjZTQwNjggbGVnYWN5LXRydW5rCis4ODYxIDNmMTk1MjUzNDM2N2I5OTE1NDUyNDU2OGY3NzBlOTVmMzkxNzE0NTMgbGVnYWN5LXRydW5rCis4ODYyIDIzOGE4YjYwOTZlMWJiMWYyN2M1NDI1OTM5YTFkMmZmMjczYzZiN2YgbGVnYWN5LXRydW5rCis4ODYzIDE0ZDU4YjVhMjFjNDA4NjhiYzFiOTBhYzg4OTU1ZDQ3ZTU1NjhlZmYgbGVnYWN5LXRydW5rCis4ODY0IDUwNWY1MjAxMGYyYWY5ZGY0OTZmNWFmNmM1YTc2NjMzZTU4ODFkZDMgbGVnYWN5LXRydW5rCis4ODY1IDgzM2ZiMDE0MDlmMzQ5YTRiOTVjN2JiYjk2MTE0MzhkZDQyZGVlZTMgbGVnYWN5LXRydW5rCis4ODY2IDM3ZTY4YjRhNTM5NzMzNjMyMGM2ZWIxMzEyMDM3ZmEyZWU1MmU2ZTcgbGVnYWN5LXRydW5rCis4ODY3IGJkZjRlMjdmNWI5ZTNkMTMzZWNjMmQ2OTcxZjBhNDQ5OWQ4OWUyOTggbGVnYWN5LXRydW5rCis4ODY4IGEyZGYzYzllNWY0M2FjZmJmNDI2NmFiY2YxZTFmNDMyOWU0ZjlkYTggbGVnYWN5LXRydW5rCis4ODY5IDdjYmVmMGQ3NGVhMzQxYWIxODAyMzQzMWQ0N2Q3Yjc3Yzk4NGQwMjMgbGVnYWN5LXRydW5rCis4ODcwIDI0ZjI5NTg2ZGU5NjkwMzY3ZmIwZDkyOGQxZDYyMmFiNTc3ZTkwN2UgbGVnYWN5LXRydW5rCis4ODcxIGY2ZjI1MTFiYjZiYWEyZjgwYzRhOGM1ZjQyMzM4YmFiZTQ3NmM1YTAgbGVnYWN5LXRydW5rCis4ODcyIDc4NGExNmY1NjY0MzQ3NDg4ODg2N2VmZDgxYTZmYmQ0ODQyZjM4ZTkgbGVnYWN5LXRydW5rCis4ODczIDIyZGFlMjYzN2UwODJlZDA2ODc5ZTRhY2FmOGEzNWE2NmQyMzI0NGYgbGVnYWN5LXRydW5rCis4ODc0IDZlYTkyNmI0NmY4YWViYmZmMGU5ZDBjOGEzODNiYzk0Y2FlMzE4OTggbGVnYWN5LXRydW5rCis4ODc1IDRkNTViZmUxZmViYmVjNjM2MjE2NjEyY2RkMWE5YWVmYzA0MjY4ZDMgbGVnYWN5LXRydW5rCis4ODc2IDllZDllYjRhN2YyM2E0ZmY4MTUyOTc2MTUyMWRjMmRmNzQ1M2NjZWYgbGVnYWN5LXRydW5rCis4ODc3IGM3ZmUzODkwZjEwM2U2NjRmMDhkOTMwNjc3NzVlY2M1MGJkZDJmZDAgbGVnYWN5LXRydW5rCis4ODc4IDA0OTBmNmE4NGQzNDc1MTY5OGUzOWNmYzNiODlmMGM4YzkzYTNkNDAgbGVnYWN5LXRydW5rCis4ODc5IDMyMjQ4NzhiZDhiM2E4ZTAxOTBkZTg3NWM4N2FhMTFiZWY0MGQxZjMgbGVnYWN5LXRydW5rCis4ODgwIDlmODEzNGU5NTU2NWI0YTZlNDFlOGEwODlkMmJmODhiNGE4MzM2YTkgbGVnYWN5LXRydW5rCis4ODgxIDk0NTJiNzdkNjdlYzlmYTBlNmYzMzAyYzMwOTJkYTU4MDhhZWYwZjYgbGVnYWN5LXRydW5rCis4ODgyIGVkNmY2ZjAzMjIxNzE5YjJmNjYwZTgwZjE5YTkwMmI1N2VlZDYyYzcgbGVnYWN5LXRydW5rCis4ODgzIDY1MTc3YWI2YTY5NmM1MTk5YTBjZmJiZGNlMGY0MGQ2ZDdiYzhlMWIgbGVnYWN5LXRydW5rCis4ODg0IDgxMTU0YTUxYzE2ZWQyYTZkZWZlMTkyYmExZTJjNWZkZDI3MTQzMzMgbGVnYWN5LXRydW5rCis4ODg1IDU3NDg0ZTIxZTMyNzFkYjJkOWM0YmUzMTJlOWY3ZTlhZmJiMjBkMTUgbGVnYWN5LXRydW5rCis4ODg2IDE4NDA5M2Q5NmQyYTJiYjhkY2ZhYTBmY2ViODQ0OTBhOGVkMmZiOTIgbGVnYWN5LXRydW5rCis4ODg3IDRhZGM3ZTk2YWJhMjUyOGQ2NzFjNGY0OTg0ZjliY2UwZDYxODU3ZTEgbGVnYWN5LXRydW5rCis4ODg4IDQzOTM4MDBmOTI2MTU5ODEyMmI2ZDhmMWU5YmNmMGUyNDNmNjY0NWMgbGVnYWN5LXRydW5rCis4ODg5IDM4NjU1ZTNhZDE5MjU3ZTM1ZjE4NGJiM2E3MDNlOGMzOTMxZmU1MWEgbGVnYWN5LXRydW5rCis4ODkwIDA0ZjNkMjU5ZjllOTlhYzdlODY3YWIzYTRhMjJiMzdlNmFlYTc3YjQgbGVnYWN5LXRydW5rCis4ODkxIGMzNzhlN2EwMjM0YTJhMTAzN2I5YWVlYWMxZjQ3ZDBjOTRiODNjZmEgbGVnYWN5LXRydW5rCis4ODkyIGVjYzUzZWE4ZDRlYjY1YzA2MjRjNDdmMTVhY2ZhOGI5OWU4Njg5ZTcgbGVnYWN5LXRydW5rCis4ODkzIDIzMDgzYmQ4YzI2MTg5ODc5Y2ZjNDFiN2EyNGQ2OWIwOGMwOTE4ZjIgbGVnYWN5LXRydW5rCis4ODk0IDdmNzc3MTBhMjJkMGE2NzFlZWRmZjFlMzk5OWQ5MDVhZGNjNTcwNTYgbGVnYWN5LXRydW5rCis4ODk1IDQ0OTFmODRhYzIyM2ExNmU5MTJmYzcwNGMxNjA2YThkYmYzYjljMjAgbGVnYWN5LXRydW5rCis4ODk2IDQ4ZGYwMWVhYTA5YTI0NWU4MjU0MDUwNWEzZjM4ODBkZjNlZTRlODkgbGVnYWN5LXRydW5rCis4ODk3IDZmMDY0MTBlMzA3YWY0NTM3NWQ5Y2Q3YmYzMDM0YjgzY2NkYzE1YzEgbGVnYWN5LXRydW5rCis4ODk4IGFiZWQ3NTRjN2I3ZjViMTMwOWNiNzBiMWQwNDhkN2Y2Mzc1OWZhMTAgbGVnYWN5LXRydW5rCis4ODk5IGM2MmUzNGVhNDY0YjJkNDBlN2VkNjY0OTBjZjI2NmMyODdjOTI2YjQgbGVnYWN5LXRydW5rCis4OTAwIGZiOWIwZDI0NmVmMzRlYmY2MThmNjIwMGViNzVmYjEzYjhjNDIxYzMgbGVnYWN5LXRydW5rCis4OTAxIDY0NDQ4NGUxYTM3YjdlZTJiZDQzNWRhOWMwYjZlZmE2NjY0MTc1ZmMgbGVnYWN5LXRydW5rCis4OTAyIGFhY2E0N2VmNTVhOGQ0ODNlOTI5NWJkYzg1ZTFiODZlYWJjYzFmY2EgbGVnYWN5LXRydW5rCis4OTAzIDVmMDIxNjMwMmNkOGY0YzgzNzVjNzZkNDE0MzJlYmQ2MzI0NDFkYjkgbGVnYWN5LXRydW5rCis4OTA0IDA2ODI1NGZlNTYxN2U0YmFmYjMyMzY5MGE5NWU5ZDc2ZGI2ZjI5ZmMgbGVnYWN5LXRydW5rCis4OTA1IGFlZTU2ZTlkMTBmYzkzNTkyYTFiMzhiNWEwZDVlMTEyM2I3N2ViOGYgbGVnYWN5LXRydW5rCis4OTA2IGUzNTZhMzQ0ODE5ZDdhMjI2MGRiNjkxY2U0Zjg4ZDU3MTI1YWE2ZTQgbGVnYWN5LXRydW5rCis4OTA3IDE0YTcxMTI2OGM1MWJiNjkzN2IxNzA4OTIzZWIwOWYwYTI2MWQ5ZDIgbGVnYWN5LXRydW5rCis4OTA4IGU3OGI2MTc0YmVjOTIzZTBhM2ViOGE3OTI5Zjg1NWRiOTM2YjJlOWIgbGVnYWN5LXRydW5rCis4OTA5IDBkZjAxNTkwNTEwMDhlYjUxYmJkOThiNTM4YzNkMDE4YTM2NjA0NjYgbGVnYWN5LXRydW5rCis4OTEwIGNlNTZhN2NmZTk2Y2ZkMTAxYzZkYjMxZTY2OTZmNjY3NDIxMmI0NTAgbGVnYWN5LXRydW5rCis4OTExIDQzNTYwNmIyMTVjNTJiYWVjZmUxYTQ0ZDA5N2IyZDJhYmFmZTQ3ZjUgbGVnYWN5LXRydW5rCis4OTEyIGM4M2ExYjIxYzQyZDJhMDg2MGUyMjlmYzBmYmNhZDlmMGMzOTE1Y2IgbGVnYWN5LXRydW5rCis4OTEzIDA1M2JiYWIwZWM1M2UyMTEyMjgzZTE4OTM2NzgxMDczZWU5NTg0MzggbGVnYWN5LXRydW5rCis4OTE0IGU1N2M3MmEyYjA2NTZkMWZhMGIxMWUyMDE3YzczZTdiMjgxODYzOTMgbGVnYWN5LXRydW5rCis4OTE1IGYzODRjYzExYjc1YmYwNjEzMjVkOGVlMzBkMTQzNmZlMTRmNjA2YWQgbGVnYWN5LXRydW5rCis4OTE2IDllNDZlY2YwM2MzZTgzMzBlOTNhMWUyNzVlNGNiNjNlMjA1ZjUxZDMgbGVnYWN5LXRydW5rCis4OTE3IGQ3NzYwYTFiYTRjYTc2OWU2MjQ3YTVjMWZjM2NkOGVjZDFlN2ZlYTkgbGVnYWN5LXRydW5rCis4OTE4IDQyYmM3OTJhYzY5ZmFlNTVmZjIzMDRmNDJlZTU0N2M3OTI3OGZlMzEgbGVnYWN5LXRydW5rCis4OTE5IGQ5ZTUxNDUxZWJkZjkzMDJjNGM2MmZkMGUzYjg5ZmMyNTMzNWU2NDEgbGVnYWN5LXRydW5rCis4OTIwIGRkZmNlZmMwZDgyNjgwN2UxZTlhNThmZjYzYTNjMGZlNzRhMmQ5ZGUgbGVnYWN5LXRydW5rCis4OTIxIDEwOGZmZjI1NDYyZDU2MjJkZDZhNzVlNjQ0Nzk4M2Y4NjNmMGI2YTUgbGVnYWN5LXRydW5rCis4OTIyIDkzYzAxNWVjMmQ1N2NhYWY4NjBkMzk0ZmQ3MmYwNDE3N2IxMTQ1NDggbGVnYWN5LXRydW5rCis4OTIzIGJkZTVhYWYzZTU4OTc0NGIzNGNhYjJiYzYwMTkxZjlkZjM5YTE4OWEgbGVnYWN5LXRydW5rCis4OTI0IDU4MDM3ODJlNzNmZmI3MmRmZGQ4ZjkzYTVmYmFiYzE0ZDlkNmEwNTMgbGVnYWN5LXRydW5rCis4OTI1IDMxYTUwNDY4MzY2YmFlMzdjY2MxMTZmYTgwNDhiMmFlMTM4NTQ1NDMgbGVnYWN5LXRydW5rCis4OTI2IGI4NTRjYTQ2MDVlMTIyOTgxNDBiYjI3MGUzNWVjN2I2YzdjZDUwY2YgbGVnYWN5LXRydW5rCis4OTI3IDMzNTBjNzM1NTBlZTgzZDIzMDkyNmY3YjcxOTkwOTY2YjdjOGRhMWYgbGVnYWN5LXRydW5rCis4OTI4IDc3YTIyZDQ5ZGQ4NTg1ZGVlYzIxZmQ1NGRlZjU5YjJkZmJhZWM2YWUgbGVnYWN5LXRydW5rCis4OTI5IDEwNDEzMTc5YTcyYTU4OTAzZTQ1Yzg1Y2FmMGE3MTA1OWJhYmI0ZTAgbGVnYWN5LXRydW5rCis4OTMwIDdlYTQ2NTgzMGVmNDVkYmRkMzA5ZDdiNWZjZDg5NDM5NWMxMmExYTEgbGVnYWN5LXRydW5rCis4OTMxIGM5YjEzOWI5YzVmZmY1MDNjN2Y1YzBkM2MwYTMyZjYwYzlkN2Q1MjQgbGVnYWN5LXRydW5rCis4OTMyIGI1YjM1YTBjZjFhYTkyODI2MjZjYTkwOWVkYmE0MjllZmNlOTgzN2EgbGVnYWN5LXRydW5rCis4OTMzIDIxMzhjZjNiZGM1YWI4NThmYjI1YjQwYWJmNGY2MjRiOTU5MmY3ZWYgbGVnYWN5LXRydW5rCis4OTM0IDJjNWMzOTliNmVhNDYzMzkyZTIzNjMxM2E4NWZiN2UwMjk0YzRlODMgbGVnYWN5LXRydW5rCis4OTM1IDkwZWVkOWE1ZDA3YTgzNThkMTIxMDRhYmJjMmFiMDhjM2JkNDhiYmIgbGVnYWN5LXRydW5rCis4OTM2IDM5MzQ4OTc0YjIyZTg5MDA3ZmNkYmE5NDFmYzI4ZGM3ODBlOTlkYTEgbGVnYWN5LXRydW5rCis4OTM3IGI2NWViNDQ0MjJiYTkzMjJmNzkxYThlNDNhZjYzZTQwNTMyODVmODAgbGVnYWN5LXRydW5rCis4OTM4IDc3N2FlNTI2MGExMmY1YzgzYzdlYjcxNDFkOGJkYTdlMGM4NjE5OWQgbGVnYWN5LXRydW5rCis4OTM5IDk5ODYyNzJjZTI0YTE1YzRlZmFiZDZmMGQzNmVmODkwNWJlMmQ1ZDYgbGVnYWN5LXRydW5rCis4OTQwIDIyYmVkNTc5NDUxNGM2Mjc5MTA3NTEzNDcxOTI0NzI0NDMyZWJiODggbGVnYWN5LXRydW5rCis4OTQxIDBiMmJjZjA0MjRhMDUzYTU2ZWUwY2E2OGY3ZWMzZGIyYzU3NjE4ZGYgbGVnYWN5LXRydW5rCis4OTQyIDRkNTQ1Y2M2ZmE5OWM0YjBhY2Q3Y2FjMWE0ZDNmZDkwNTg3MmQyYzcgbGVnYWN5LXRydW5rCis4OTQzIGMxNDJlYjUzM2ZiOTBmOWIzMjEzNDFjNzE3NThiZjFmMjRiMDQ4YWIgbGVnYWN5LXRydW5rCis4OTQ0IDk0MTYzNzU5Y2IwMjFiZGE3NzljNjJkMTA0YzM4NzNmMzdhMTQ2Y2YgbGVnYWN5LXRydW5rCis4OTQ1IDZhOTFhMGY2NDJmZTdiMGFjMzZiNzQ0MzJjNjAyYjViOWRjOGY2N2UgbGVnYWN5LXRydW5rCis4OTQ2IDEwM2M2Mzk4M2NkZmE0ZGJjYTMwOGQ1YmIyZjg2MDJhYjg5YWFiOGMgbGVnYWN5LXRydW5rCis4OTQ3IGRjYTliZGY1ZWEwOGE4MGMxZjNhNmMxYmIzY2I2MzM1Njc0NmI0M2UgbGVnYWN5LXRydW5rCis4OTQ4IGVlNGYyYjFjZWVkYTRhYWMyNmQ0NDQzNzYzMDUzZjBkZTdjZWFkOTUgbGVnYWN5LXRydW5rCis4OTQ5IGRmNjU5ZTIzOWU5MDZkOWI2MTY3Y2Y3MTcyNWU2MmIwM2FmMDlmYmQgbGVnYWN5LXRydW5rCis4OTQ5IDc0NjY1NGEwYWY2ODBjN2Q5YjgxNGIyMTBhMDI2ZWI5MWJlYzk1MzMgbGVnYWN5LXRydW5rCis4OTUxIDJlZGU3YzJhYzkyY2YxZWU4OWU4ZTUyNDE5Yzg5MDFiMDM0Yjc1ODYgbGVnYWN5LXRydW5rCis4OTUyIGQxNTMyNDJhYTZiYjJkYzNiMWZiZWM4YzlhZTJhZTc4NTk0ZjY4MWIgbGVnYWN5LXRydW5rCis4OTUzIGY1Zjc0NGVkODEzN2M3Y2MzNGJmZDExOGQ2NWM2MjNlNmU0MTQxNjMgbGVnYWN5LXRydW5rCis4OTU0IDdhYjBiMDUyOTNhYTQyNzIwZDE1MWNhODNjN2UzYmRlYjlhNTUxMWUgbGVnYWN5LXRydW5rCis4OTU1IGM2N2Q4NDIxZmEyMTY2NjgwOGEyNGM2MjM4NzdlMzMyZDdlNGM1M2MgbGVnYWN5LXRydW5rCis4OTU2IDI5N2E1NDFlYjg2NTc0YzIzMjdiMmMwMjE4ZDY5MTM0YTFmMGE5NzEgbGVnYWN5LXRydW5rCis4OTU3IDU4YjRkOWVhOGU1MTM4NDJmMzQ3ZTNkNWE0MzJmM2ViZmMxNjcyNDIgbGVnYWN5LXRydW5rCis4OTU4IDcyN2I1MjAzMTIxMjU3N2Q5ZWQ1MTk1Zjk0N2JmMGFmMDE0NzE0ZDEgbGVnYWN5LXRydW5rCis4OTU5IGNiMDVlYTJiNjNkOWQwMDAwNjdiNWMyZTE1NzJmZTE2M2M1MDg3MzcgbGVnYWN5LXRydW5rCis4OTYwIGQzMTFiNjg3NTRjMTg2ZThjZDNkZTcwMmJiNjM0MGFjZTlhOWIyYzcgbGVnYWN5LXRydW5rCis4OTYxIDU2M2FlMjFiMjA1NzgzNjM5ZDg2MThmOWM3YTlmYzBkMGRmODllYjYgbGVnYWN5LXRydW5rCis4OTYyIGI4ZTI2MDc4ZDhiMWFkMzhmNGEyYWQxMmIwYjhmNGE3NmY1ZGZlZDQgbGVnYWN5LXRydW5rCis4OTYzIDJmMjU4MTYyYWFlMmFjZGZlZDc2YzU2ZWJiYjJiZGUzNjkxOTVkYmQgbGVnYWN5LXRydW5rCis4OTY0IDE2MTgwNjA3MTZlNzgxOTUyM2JmMWM1MDIxNTEyYzhlMTM0NGZhNTYgbGVnYWN5LXRydW5rCis4OTY1IDYzMDcyNTgwNWM2NjIyZmZjNzI0ZTg4NDBlMjdmZmQwMTc2YzRjYjUgbGVnYWN5LXRydW5rCis4OTY2IDM3YzhkN2Y5NjdjNzFjMGRlNDE0YmFjYTkyYjcxZTlhYmU2OGY4ODMgbGVnYWN5LXRydW5rCis4OTY3IDRlMWEwZmUwYWNlMjRmNTYyODQ2MTAyNTgwNjUyZTQ0YTE5MTY2MmEgbGVnYWN5LXRydW5rCis4OTY4IDJmOWQ1OWRhNzJmYjg2ZjQwNGI3YTBlNDE1YzI3NGMwMDllYjQ4NWUgbGVnYWN5LXRydW5rCis4OTY5IGFlNzRiNmNjZWY1N2Q0MzdjZjc3OTY4MDNhZDVjZjBmYzBkMjNkNGIgbGVnYWN5LXRydW5rCis4OTcwIDIyMmRkNGQwNjU4MTI5NGYyMjk1NjVjNDQ3ZjljNDkxYTI4M2U5NmQgbGVnYWN5LXRydW5rCis4OTcxIGJiOGMzMDA0ZDc1OGVjMWJlOWVkNzMxNjg5YjUwZjBiYTUwMzI0YTQgbGVnYWN5LXRydW5rCis4OTcyIDE3ZTNkOWI2YjQyZTgyODU4MTM0YzJjNDNjMDdiNjZkZDRkNDA1YmEgbGVnYWN5LXRydW5rCis4OTczIDM5ZDJhNGRiN2MzYjgwYjgwMzZiMzZmZWJlNmI5MjI0MGI1NWZmMDIgbGVnYWN5LXRydW5rCis4OTc0IGNlNDVlZjRjNjVlOTFiZTdiMjliNWExMzViOTcxNGFmMTE2MWM3YzcgbGVnYWN5LXRydW5rCis4OTc1IGIzOGE3NTViOGRiMWM4N2FlZTMwY2IyMjlkYjM4NDE2MmQ1NTM1YjYgbGVnYWN5LXRydW5rCis4OTc2IDQ5ODFmZDJiMzIxMTQwNmFiYTVkMTZlNGM0ZWM0ZWJjYjljZTc3MTYgbGVnYWN5LXRydW5rCis4OTc3IDZhMDhiNjBkZTgyYzcyMzBiMTJmZmVkMDY1ZDhjNmFhNjE5YjU4ZGIgbGVnYWN5LXRydW5rCis4OTc4IDg3OTEzMGYxZmY1ZmNiMTIyYzcyODUwNzJhNDc4NmEwNDA4MWJmOTYgbGVnYWN5LXRydW5rCis4OTc5IDllZjljYWRkOTc4YzU0YTgxMmE5NjVjNWI1OTM3MDAwMWFjZWJjYmEgbGVnYWN5LXRydW5rCis4OTgwIDJhMmU1YjczMWQxYzc3NjMzOTk5YTEyYzk4NjIwMjFjZjY1MjIyNDkgbGVnYWN5LXRydW5rCis4OTgxIDk4YjJhMGEwOTNjOWQ0OWM5N2RkN2VhNWRkZjNmNTkyN2VmYzM4MGQgbGVnYWN5LXRydW5rCis4OTgyIDA3MWEwZDNhNDliOWY5MGY1YzBiZjBmYmFmMGVmZjk5Njg1YmYyNDkgbGVnYWN5LXRydW5rCis4OTgzIGIwNDk0YmI1MjAxOTk0ZjkxNDk2Njc0ZjVlNGM5YjQ0NDJlMmQ3OWUgbGVnYWN5LXRydW5rCis4OTg0IGRmNmRmYWFjMmQwYjUxYTJlZmQxMmRmY2RjMWQ1MDE1MzQ2Yjc0MGUgbGVnYWN5LXRydW5rCis4OTg1IGEwMDA3M2YyZTA4N2FiNGNlMTcyOWMxYjIwYjhhNDZkYjJhZmE0NzYgbGVnYWN5LXRydW5rCis4OTg2IDgwNzM1ZmNjMzVhZmZiNzI4MTQ0Zjc2NmVjMWM1NGU0YmE5NmE3NmMgbGVnYWN5LXRydW5rCis4OTg3IGYwMjJiYmQxMjMzODY4MDFkMWQ0NjVhMThiNzA5NDI4YTg5MzkzYzQgbGVnYWN5LXRydW5rCis4OTg4IDc0NTE4ZDg4MmVkMzFhZTk0MzVhMmJlMTE3ZTc0Yjk1YWViN2EzY2EgbGVnYWN5LXRydW5rCis4OTg5IGZkYjc3NjM2YzA3NDMwMmYwNmE1ODM0NDEzNTFkNzllMjI0NzM1MzEgbGVnYWN5LXRydW5rCis4OTkwIGEzZGQ1OTEwODExOTZhMmJjYWNjM2Y2NGJlMjA4Yjk4NjM4YzkwZTcgbGVnYWN5LXRydW5rCis4OTkxIDZjNWY3ZTc0ZmE4ODAxZmU4Y2U4MTIyNjQwYzU0NGI3NjUxY2E1MzAgbGVnYWN5LXRydW5rCis4OTkyIDZkOWNmYjUzYzdlZDJjMmNkZjQyOTBkODFjMzkzZjgzMzhiM2QzMzkgbGVnYWN5LXRydW5rCis4OTkzIGVjY2RmZDE3Mjc0MDYxMWViMTViNWYwNTQxNGRkNmE4ZDk1MDU0ODcgbGVnYWN5LXRydW5rCis4OTk0IDdlNTE3MjdkM2I3ZWYzZTQyMzA0NTFkYjNhOWE0ZDkwN2ViZWQwN2IgbGVnYWN5LXRydW5rCis4OTk1IDFkMzBlNTJkYzM0ZDliNDM1NzFjZTJiMjcwMjFjYTg4ZTQ2MzQ5NDkgbGVnYWN5LXRydW5rCis4OTk2IDFhZmYxOTc4M2Q3NDZmMWI3M2U5NjdlYzFiNWVjOWM4ZTVhMDg5ZWUgbGVnYWN5LXRydW5rCis4OTk3IDI0ZGEwMzVjZWI2ZWJkMWM4NWM4MmFiMTE0MzM5ZTE1NGU4NzViYTYgbGVnYWN5LXRydW5rCis4OTk4IGYxYjE3Mjg0NTJjMTMwYjJiNTQ1Y2YwNzhiZWU1YTViZWFkYzM3OTUgbGVnYWN5LXRydW5rCis4OTk5IDNmODQ1NThhMjRkZDg0ZmYyZjM0ODEyZWI3YmUzNTE0NWRkNjE4OGIgbGVnYWN5LXRydW5rCis5MDAwIDk2MTRmZGQ4MTM5MzZlY2I4OGIxNDUzOGRkNjc4NzA0NTUxZjM0NWMgbGVnYWN5LXRydW5rCis5MDAxIGVlNDk2ZWYxY2E4Mzk5YjcyZjNlZjRlMGY1NTU0MmI2NWIwOTNlNjAgbGVnYWN5LXRydW5rCis5MDAyIGU5YzY3YzE5MmNkYjY2NzQyZDEzOTBmMjU5YTQwZTkzODViYTdlYmQgbGVnYWN5LXRydW5rCis5MDAzIDVjY2IxMmFmZmI1NGMwYzcxNjkxOThiMTRlYzM5MTMxOTcwMWMxNTUgbGVnYWN5LXRydW5rCis5MDA0IDQ2ZmE0NzE3Y2YyNGFjYjdmY2M1N2I5OGViYmU4NTRkZGEzNjRhMzkgbGVnYWN5LXRydW5rCis5MDA1IGJjMTkwMDI0M2UzMzlhMGZkMmYwZTAyZDUzYjc5Njg1NTdhYjAzNGYgbGVnYWN5LXRydW5rCis5MDA2IDcyM2M4OTg4MzE4ODFkMDc1ZDA4MjllZTkxNjU4NGRiNTA3Y2E2MDMgbGVnYWN5LXRydW5rCis5MDA3IDg5ZTJlYWFjZmQ5MDAwYWRkNzFiOGYxYWM3Nzc3ZDk3Zjk4ZjM2MWYgbGVnYWN5LXRydW5rCis5MDA4IDBjZDFmMmYxZDgyZDFjOTU4Mzc1ZGNjZDZkNjU5ZDRmOGVlNjhmMjcgbGVnYWN5LXRydW5rCis5MDA5IGU0OTdhN2ZjMGFhODU2Yzg1ODQ1ZmIwMTcwNjA4Mjg4ZDY5M2IwY2UgbGVnYWN5LXRydW5rCis5MDEwIGQzNjk2MjllOGMyN2MwYTNkZDBiOGZlMDNmZDlhMTI5YmY1YzA4ZmUgbGVnYWN5LXRydW5rCis5MDExIGJhNjUzNzI0MDhkZGM2YmJkZTFhMmRmMzU4M2FiODAxMGZiNTdiYzAgbGVnYWN5LXRydW5rCis5MDEyIDA4NjRhNTU2NmQ4OWFiZGRkNWFlYWUxZjYxMDliODNjYzdhMGE4NmMgbGVnYWN5LXRydW5rCis5MDEzIDY0YzVlZmE5ZDJjNGU0YzAwZmVlOTI0Njg5ZWNjYzY5OWNiNzNiMDkgbGVnYWN5LXRydW5rCis5MDE0IDE4NzAzNTM4YWY0ODE4MTcxODE5NDcyM2U0NTdlMDJmN2NiYTM2M2UgbGVnYWN5LXRydW5rCis5MDE1IDI1NTA1ZTU2M2IzN2I3MmZlOTdiYWMyMzE0NzU3NjNhMDkzMzM0MTAgbGVnYWN5LXRydW5rCis5MDE2IGExYTJiNzExNTk4Y2Q3YWFlMWIyNTU3ZTdmYmM4NTNjOGYwMjg2ZWUgbGVnYWN5LXRydW5rCis5MDE3IGQxZjQ2YTA4ZDc4YTg2ZDJjNTkxMWY2ODA2OGExODdhZWU1ZjZiZTMgbGVnYWN5LXRydW5rCis5MDE4IDgwZmMwYTkwNjg4NTJlYWVmOGVmMmIwMmFhOGEyN2UwY2E5OGQ4OGMgbGVnYWN5LXRydW5rCis5MDE5IGIyZGZmZjA2Nzg5YzZkZjc3MjY3MmRmMzhlZmJkYTgxOGFhMTUzYTAgbGVnYWN5LXRydW5rCis5MDIwIDYyYmRiMWNiZTBmNTVmOTc1YjY3NzgwZDQxOTcwMGIzY2Q0NjU3NWUgbGVnYWN5LXRydW5rCis5MDIxIGZjMzI3ZWMxNWM3ZWRlMmRmN2ZiNmRlMzI4YmNlMDFhNzk3ZTExYzMgbGVnYWN5LXRydW5rCis5MDIyIGQyODkzMmQ2NzZjOGI5ZTRjNTg1ZGZjYWI5OTFmYzRjNWQ2YTM5MGQgbGVnYWN5LXRydW5rCis5MDIzIGI0NTAzMjI4NTgzYzRiNDY3YjNjNTA1YTRmYmQzZjk1Y2I0OTYyNzUgbGVnYWN5LXRydW5rCis5MDI0IGM5MTVjOTRlYmI2YmYzYThhMDIzZmQwNDVjMmI1ZmE3YmI5OTY4YWEgbGVnYWN5LXRydW5rCis5MDI1IDcyNDM4MmFmNTMzOWI4ZTNkMGEwNjUxNGJkN2YxZjg2OTYwNmI0NDggbGVnYWN5LXRydW5rCis5MDI2IGRkMWU4MzMyM2M0NWZkZTE3MDgxNjk3NTZiN2Q3NTQ5OTc1NzZhMmYgbGVnYWN5LXRydW5rCis5MDI3IGE4ZTNiMmU5ZjVkMjI4MGMyMTRjZDJhNWY4YTVhY2Q1OTE1ZDVkNGYgbGVnYWN5LXRydW5rCis5MDI4IGY0MDZlYzM1YmZjYTY5NzdjYTUyZWZhZmFhZjA1MTVlNjZkN2U4NzggbGVnYWN5LXRydW5rCis5MDI5IGJkZDRjYjJhODNiNTc1MDE3ZTU0M2I4M2Q0ZDY0NGI5YmIyZGQ5NTEgbGVnYWN5LXRydW5rCis5MDMwIDVkYmZmYzc4NDRmNTVhOWVjMDE5NzBhMGRiZmU0M2Y0NjNjODllMGMgbGVnYWN5LXRydW5rCis5MDMxIDJjNmYyZDkyYjMxNTA4ODgyYTE3YzQwMTAzMWNjODI2YjY2ZGFkOWIgbGVnYWN5LXRydW5rCis5MDMyIDdjOWM0ZjgyMjRjOGIyMDc0YmQyYWQ4YTA0OWI5ZmY3MDVmYmMzODQgbGVnYWN5LXRydW5rCis5MDMzIGE1ZjdlYjg2OWYyMWMzMzI5MjkzNTJmMzQzNmY0OGY2NTlkYzVjZTkgbGVnYWN5LXRydW5rCis5MDM0IDQyODBiMjcyOWNjZWNiMDk5YjFjOWM0NWZiZTE2ZTk3Zjg3ZTQ0ZWEgbGVnYWN5LXRydW5rCis5MDM1IGIzMzFjZDQ3ZTBiYzcxMTcwMGVlZDhlYTg5ZjE0NmE0MWRmYjY4MzUgbGVnYWN5LXRydW5rCis5MDM2IGVlMzA3Zjk4NDVhMzI2Y2I1MzUwMjYxMmU2NzU4NGE5YmYxODA0ZDMgbGVnYWN5LXRydW5rCis5MDM3IDFhMjMzYmU1ZmMxN2E2ODY4MDY1NDZhZjRkNjdhZjMyYTc3YWRmZjkgbGVnYWN5LXRydW5rCis5MDM4IDZlOWFhOTJmYWI2OTI3OGZhMjEzODY2YjE5NGUwYTA5MDFlZTA2NjkgbGVnYWN5LXRydW5rCis5MDM5IGZkMmQ0YzBhZTY0NjcyYjk3Nzg0YzM4NjZlN2UzNWE1ZGMwMDIzMTEgbGVnYWN5LXRydW5rCis5MDQwIDUzODM1MDQzNTI4YzhiNmYxMDcwMzc0YTgwYTg0YTA0NTlkZGIwYmUgbGVnYWN5LXRydW5rCis5MDQxIDJhYTEzYzBjOGYyZjY2MDllN2Q1YTA2Y2M3ZTk2ZjRmNWYxNmE2NmIgbGVnYWN5LXRydW5rCis5MDQyIDgxMmFhZDhjMDVjMjkxNDE2ZjdlMGVjYzNjYjdjOTU3NzRmZGFkOGIgbGVnYWN5LXRydW5rCis5MDQzIGUxYzhkNzE4MmQ2NjdkMmM1YWE2MmE5NWFlOTkzODcwOTEwYTBlNWYgbGVnYWN5LXRydW5rCis5MDQ0IGJlMmEwMjM1YWU4NGE0ZTQ5YzdmNjgxODA1ZGM1MDdkN2YyNWE0ZWIgbGVnYWN5LXRydW5rCis5MDQ1IDNmZGQ3MTVlNmVmOTA2MWViNDAwYzVkYjZiYTI3ZTQ5N2QxMGJiZDQgbGVnYWN5LXRydW5rCis5MDQ2IGEwYjgzOTY2N2QyZTNmYzc0MzM3ZDI0YzgzNTYwOGZmOGI4YmI5ODkgbGVnYWN5LXRydW5rCis5MDQ3IGMxYmFjNTM2MDQ1ZmNkYjk0ZmFlM2FiODk5MTRkN2ZmZWE0YzYzYTAgbGVnYWN5LXRydW5rCis5MDQ4IGIxMTc0MDQ1YmM0YWI2NzZhNzgyNGYzZTZhZTNhMzUyYWM1N2Y5NzMgbGVnYWN5LXRydW5rCis5MDQ5IDhiMTQzMTJhMDI5MDM1OWRkZDk3MmFkNDA0ZDNlYjdkYzZkZjUyOWEgbGVnYWN5LXRydW5rCis5MDUwIDNiNzI4Nzg2NzJjZDJlMmMzMjM1ZDczMTE2MjgxNzRkMDliMzcyMDAgbGVnYWN5LXRydW5rCis5MDUxIDY3YTJhZmNkZDIxYzEwMmQ1MDNiODE4MmJjMWQ1MWU3OTgxN2UwMWUgbGVnYWN5LXRydW5rCis5MDUyIDZmZmE5Y2I2NTRlMmI0ZmNjMmNmZTU1MDQyZDc1NTEzMDI1MTU3ZWIgbGVnYWN5LXRydW5rCis5MDUzIDAwZGFiNzViOWVmMTJlMTgwYjc3M2VmMzgxOGJhYzQ0MDAxYTkzMDYgbGVnYWN5LXRydW5rCis5MDU0IGQyOWM0YjJmNDlhZTI3MjJiMDY0YjVjZmQzYzhkNmMwNzcyNDQxOGQgbGVnYWN5LXRydW5rCis5MDU1IDg1NTk2OTkwZGI0M2Y5OWEzOWU2YzZmZWRmMDE0NGRiODIxNjk4YTggbGVnYWN5LXRydW5rCis5MDU2IDAxZWU1NjA3YmIzNWY0NTgyNDZiM2M1YzEwNTdlNzE0ZjI3OTBlYTMgbGVnYWN5LXRydW5rCis5MDU3IDkyMWQxN2NjMjY5MmIyOTNmZjFjYmFjNTRhYzQzZWNhYjEyNDEyYjEgbGVnYWN5LXRydW5rCis5MDU4IGExZDg1YzBjYWU1YTZlZGI1NWY0YjFiZWYxZGM0ZGNhZjg4MzAwNjUgbGVnYWN5LXRydW5rCis5MDU5IDllMDdkNWI2OWViYWU2YTg4MjlkZjNhOTZjNjAyY2VjNTllZTc1MzQgbGVnYWN5LXRydW5rCis5MDYwIGY5NmU1N2U2OTg0NmYwNzhlZDY0OTUyZjc3YTVjOWNkNDg4OTk3OWUgbGVnYWN5LXRydW5rCis5MDYxIDA4ZGRlNWU1Y2MyNzRhYmY0Y2RlMzhkMWIwNjYxZjI5MTNkNjMyZDAgbGVnYWN5LXRydW5rCis5MDYyIGMyNjcyZTVhYmE4Yjc5ZjQ3MGU0NjQ4ZGE4MDVjMjk1ZDdiOTBmMTQgbGVnYWN5LXRydW5rCis5MDYzIGM1NjUyNzJlZDJjNzQwN2Y4MGFhMjI4MWI4Y2M3Njk0YjUyNmRhNTYgbGVnYWN5LXRydW5rCis5MDY0IDc1MzA3N2Y5ZWIyYzhhMjYwNTE2MjY5YTFhZDU4ZmZjNzAxNDMzZjkgbGVnYWN5LXRydW5rCis5MDY1IGUwZTY2N2JiYzk3MWE0ZmY0NTNiMjBmNzBjYzc3MWFiZGQ3ZTdiYTYgbGVnYWN5LXRydW5rCis5MDY2IGRhMDBiYjQ5NzFkOGY2ZjMxMzNmOTE4YTM3MjQ2MGJjOTlmMDYyZDYgbGVnYWN5LXRydW5rCis5MDY3IDIxOTJiOTNkNTMzN2U1OGIxYjIyN2Y5MmQ5YTRiNjMxMmVkZGVlOTUgbGVnYWN5LXRydW5rCis5MDY4IDUxNjI0MGVmMGUxNTFkYzEzNzllYjUwOGYxNGY5MDRhNDFhNTA1M2QgbGVnYWN5LXRydW5rCis5MDY5IDg2YjY3NzA5YzJiNDAyY2YyZDU5ZWM4NzJkOTUwNjg3YzEzYzNlYjAgbGVnYWN5LXRydW5rCis5MDcwIDE0MDI1YTRmNzkzZWM1ZWQxNDNlNjc5OTAwMGFiYTY2YzZjNGE5OTMgbGVnYWN5LXRydW5rCis5MDcxIGZjZDhlMzhiOWIyYWY5ZjEzOWRiYmEwNDdjYzViNDQ5MTc3ZjA0YTIgbGVnYWN5LXRydW5rCis5MDcyIDQ1ZTg0YmU2ZDY0MDViZGMxOGM2NDgxNjBiZDc5YTlhZjczZWZhZTcgbGVnYWN5LXRydW5rCis5MDczIDVlMGIxNTJiZjFlNjViMWE5NDkxN2UwODVkZDk3NTc2ZjY4ZDFjNGIgbGVnYWN5LXRydW5rCis5MDc0IGYxNWYwZmMzOGNiMTlkNzdjMmRiMzNlMTMyMzNjZGVjNGNiYTM4ZjMgbGVnYWN5LXRydW5rCis5MDc1IGI4OGZkMzg5NGQ1YTRkMzliNTRkMzNlZTU5MmNjZmZhNGQyNzA0OWIgbGVnYWN5LXRydW5rCis5MDc2IGNlZWVjOGNiMGExZTdmNWM2OTU0NGE3M2UzMTJjN2NkZTVmODc0MzMgbGVnYWN5LXRydW5rCis5MDc3IDZkNmZlYzJlZWVmNmE4MDNhMjZiYzkxMDA2Y2ZhZjZkMjMwZmRjMDUgbGVnYWN5LXRydW5rCis5MDc4IDgzY2NmNDRiZjE5NTNmOTQ0YTUwZGRmYzNhMGMwOTE0OTRkODA2MjggbGVnYWN5LXRydW5rCis5MDc5IDFlNDI4ZjUxZWQ0ZTEzYzk0MWRhMmJmMTg5ZjMzMzQxMmM5YTQ2NjkgbGVnYWN5LXRydW5rCis5MDgwIDQ1MTRhNWVhM2VjNDY0NDI1NmVlZmI2NTU4OWJlMzYzMjc1NDJhMTggbGVnYWN5LXRydW5rCis5MDgxIDdhMGE0OGQ3MzA3NmE4MTQ1OWE3MjM1MzlmNTRjZGY4MzdiYzA2OWYgbGVnYWN5LXRydW5rCis5MDgyIGY2N2E2MzM5ZWRlNzZlZDhlN2Y3MTFjNWM0MmRiM2U4MTkxNzczYmIgbGVnYWN5LXRydW5rCis5MDgzIGRiYjQ2MWUyNzNhZGFhNTk3ZGFhMzhiZGU2MDEwZmQ0ZDE4Y2JiMGYgbGVnYWN5LXRydW5rCis5MDg0IGY1YjU1MzExZTc5ZGFlODU5NGU1NTM2ZmFjM2VkNDJiOTRkMTJjMmEgbGVnYWN5LXRydW5rCis5MDg1IDJmNDU5ZWIyM2EwZWYxOWZmNmFhNWFhZTE2OWY1ZjIzMjZjNWUzMjAgbGVnYWN5LXRydW5rCis5MDg2IGYxZTNhM2Y4YTQ2Y2RmMmUxZGEwYjdiNzgzMmU1MGQ1OWRkNmU4NDQgbGVnYWN5LXRydW5rCis5MDg3IDAyM2U1YWIwZjg3ZDhiOThmZWFkN2RiNzU1MjdjNTU0ZTNkYmQ1NjcgbGVnYWN5LXRydW5rCis5MDg4IDIzNWJjNmY5ZTIzN2E2ODA1ZmI1ZmUyYTcyMGRmMjg2ZGRmYWEzNzUgbGVnYWN5LXRydW5rCis5MDg5IGU2YjlkMjFjOGUwYzA2OGNmZDU4Y2U4ZTI4NDFmN2Y3N2FiOTY1ZDkgbGVnYWN5LXRydW5rCis5MDkwIDRiMmQ4ZGM5MmRiNGNhYzBjMTdjMjQ2MDU1YjVlOGVhM2I2YmFlYTYgbGVnYWN5LXRydW5rCis5MDkxIDJlODc0YTVhOTEyZjJlMWFlOTcxOTcwNTg1ZjdhZTVlODBjNzc1YTQgbGVnYWN5LXRydW5rCis5MDkyIGUyYmNhYTk2Yzk0MDg0MWNkY2JjMjhkM2U1MWY3ZDljNGIzMzBjY2YgbGVnYWN5LXRydW5rCis5MDkzIGU1NGQ1MTcxOTAyZTZhMDFiOGExZTlkNzQyYTk2MWIzMTA5YjVjYWQgbGVnYWN5LXRydW5rCis5MDk0IDZmZTVhNTFmZWEzMDNkZDYwOGQzMDkxYjlkNTIyOGY0NzM3OTBmMzcgbGVnYWN5LXRydW5rCis5MDk1IDJmMGI3YmFjMjAxYzVhMmFkNDk1NTdkNWViMDc1ZTQyN2ExZjViYWMgbGVnYWN5LXRydW5rCis5MDk2IDA0MzEzZDRmOTNmZjczMzBiYWJhYmMzNmIwM2ZlZjYzNThjYjdhODkgbGVnYWN5LXRydW5rCis5MDk3IDNjNGQ2Mjc1NDY1ZThmMzkwYTdiYzJmYzJmYTcyMTAxOWNmZDE2Y2QgbGVnYWN5LXRydW5rCis5MDk4IDAwYjFiNzdjNDE3N2NhMGViMjZiYjIzYTVkZWFlYmNjYmIxMzk5YWYgbGVnYWN5LXRydW5rCis5MDk5IGI5NmFhZDEyYTE1MGJiNmMzMDA0YjQ4NWQ5Y2NmMDI4ZmQyYmU4YjUgbGVnYWN5LXRydW5rCis5MTAwIGYxNDM0OGY3NTdjNzY5OTg5ODEyMGRkYTI2ZWE4YTFhMTQ2YjE4YWUgbGVnYWN5LXRydW5rCis5MTAxIDgyZDY3NzRkYTBjNjk3MWVlYTY0Y2ZhYTM3NjA2NjM1ZjBkODlmZWUgbGVnYWN5LXRydW5rCis5MTAyIGJlMDc5MjFkOTcxMzFlNzA2YmIxYjI1ZDI0MDkxNzVmOGM1NGQwYmUgbGVnYWN5LXRydW5rCis5MTAzIGY4OGIwYzI2MDhkODJlYzFiYjc5YzRkYzJlOWU5NmI1MzlhMjQ2M2YgbGVnYWN5LXRydW5rCis5MTA0IDVlMzFkMzgxZmE0N2QyNWMwYjM3NWE5MDMyNjg4MDg0ZDM5ZDhkOTggbGVnYWN5LXRydW5rCis5MTA1IGE4MzlkM2VmYWJjZTZkNjM3OTAyZTE5NmU4NTg0YWY3YzBmMWVjN2YgbGVnYWN5LXRydW5rCis5MTA2IGU5NmE4MTY0N2Y5YzdmMzRjYzEzN2Q0OTk1M2FlZDIyMTc3NDE1ZjIgbGVnYWN5LXRydW5rCis5MTA3IGNkZmUzYjdkNzE4N2Q4M2JiNDM3Y2FhMDJmNDM3YjdjOTcwNTE1MjggbGVnYWN5LXRydW5rCis5MTA4IDhmNGQ4OWYwZjMzNmM4MzNkNTc1YmQxNjZlNDRmYTFmMGI3ZDc0ZjUgbGVnYWN5LXRydW5rCis5MTA5IGQ1MTUxYjdiOWRiY2ZlOWU0YmYxM2M3MTczYzIzOGFjZmI3OWY3NzEgbGVnYWN5LXRydW5rCis5MTEwIDUyZDQwY2M1ZmEwOGNjNWI5ZGUyMTBhZTg2Njc5MDA5ZDNhNWMwNzMgbGVnYWN5LXRydW5rCis5MTExIGRmMmEyZTQzYmUxOGNlYjNmMDFjN2FlNzMwZGQ0OWMxYmU5MTQ4OGUgbGVnYWN5LXRydW5rCis5MTEyIGVjZmJhZDkwNjIzMTQyMGE0YTljNWI5YmFjZWUxZDFlNjdmOTdiNzIgbGVnYWN5LXRydW5rCis5MTEzIDAyZjU5Y2IyODZmYWEzYWRkNGFjZTQ0ZWZhZjlmNzI4OWM2ZmEzNTQgbGVnYWN5LXRydW5rCis5MTE0IGY0MDgyN2JhYWI4MTEyYThlMTUyNGU2MTI4MTI4M2VkMDc1ODU1MWIgbGVnYWN5LXRydW5rCis5MTE1IDAzMzkyYzI3YmY5NjhiZmRlZGMzOGMxYzU1NTdlNDQxMWU0NGEzMjAgbGVnYWN5LXRydW5rCis5MTE2IGU2ZDc4Njk1OGZiMzA3ZmY1YTc1MjA2MDZmOTc2MDQzMzVkODQzMzAgbGVnYWN5LXRydW5rCis5MTE3IGRhNjYyYjM0NWM4NzYwMmY2NmFmNjNlZTcyYWQzYjRlOGZkN2ExOGQgbGVnYWN5LXRydW5rCis5MTE4IGY5MDM1MWIxNTgxYjJkZjE4NDJiYjViN2ZmOTFmMTY3MzQ5NWQyZGMgbGVnYWN5LXRydW5rCis5MTE5IGFjNGI0NDQ3Mzg2OTQzZjQ2MzBkYTRiYjBmN2E4NDQ2NzgzNzE1ODYgbGVnYWN5LXRydW5rCis5MTIwIDI1MThhYzkyNTFmMGZjMmUyNjUwMjZiNDljNDFkMmEzMmU4MjE5YjIgbGVnYWN5LXRydW5rCis5MTIxIDQxMjE3MDQ1MTA2MzBlMDM1ZGM5NzVmNjMwYWVlYmI0MzA0N2M0NjMgbGVnYWN5LXRydW5rCis5MTIyIGUxZDM1NjVkMmI3YTQ5MjUxZTZlMTIwNzdmNjE0M2IwNWQ3Mzk3ZDkgbGVnYWN5LXRydW5rCis5MTIzIGU4NjgxZWRhMDg1NDk1ZDQxODFmZDQ2YjcxNTdkZDdjZGFkZmE0ZDIgbGVnYWN5LXRydW5rCis5MTI0IDFkYTlmNjAyNzljOTMzMDIxMDFlMzIxNDg4YjBkODVkMWE1OTM5YmUgbGVnYWN5LXRydW5rCis5MTI1IGE3ZWE3NGEyNzk5MzY5MzgxNWI4ZDcyMDEyN2VkYmM0Y2Q0OGYzMjcgbGVnYWN5LXRydW5rCis5MTI2IDBmMjQ5OGI4NDdiZmNjNDk2YTdlZjA0YmMyMDEwNjcxMDUxYzFlMjIgbGVnYWN5LXRydW5rCis5MTI3IDIwNTg5ZWQzZThiZGU1ZmY1YzgyYTE0ZDAzZjM0MmNhMmM1MmE5MmQgbGVnYWN5LXRydW5rCis5MTI4IGY2YmU5YjVhZGJkYjdkNjY3NzI5ZWExZDI0MGRiMjIwYzI4MTYyYzcgbGVnYWN5LXRydW5rCis5MTI5IGNlNTI4OGVjMzZkMDI1NWU1YzI1MTRiMDNiNTEwZDc1NzdlMzczNDYgbGVnYWN5LXRydW5rCis5MTMwIDVlYWMxYzhkYjA0ZjY0MTg3ZTExZTQ1M2M1ZTk5YjQ2YzMyM2RjOGEgbGVnYWN5LXRydW5rCis5MTMxIGM2YzFkMTMzNjc3YTc4NTU1ZDk3MDc2YjI4NTI3ZjlmNmNjMzdmYmYgbGVnYWN5LXRydW5rCis5MTMyIDZkOThiOTY5ZTFmNjcwOTcyZGQ4NGE3M2MzMTNiOWIxYTVlMzk5MjIgbGVnYWN5LXRydW5rCis5MTMzIDQ2NmU4N2IxNDc2NzFmOWMzMDI2MDAxMmZmMzc2MGRhY2MzMGZhZGQgbGVnYWN5LXRydW5rCis5MTM0IDUyMzI5YTExM2UwZmEzZWYwZjk3NjM2MzM2NmUyYzZjYTk0NTNjMTkgbGVnYWN5LXRydW5rCis5MTM1IGU0OTljN2RiZmRmMzU5YTRlODJjNWVlMDUwYjAzYmIzYTYxODQyYmEgbGVnYWN5LXRydW5rCis5MTM2IGRlYWQ2ZTc3ZjQ2NDI4ZWVhNGUxZTIzMjkxYjUzYWUwM2Y1ZWJhNjggbGVnYWN5LXRydW5rCis5MTM3IDMzNGNiZmQ1MWRiM2FlY2UwZGYxNDYzNTUyZDE4MmY4MmVlZWZjOGIgbGVnYWN5LXRydW5rCis5MTM4IGJiODZiYjc2ZDYxZGEzYzBmMDYzMGNlYTQyMWFiNWRmZjYyYzU3YWQgbGVnYWN5LXRydW5rCis5MTM5IDk5OTU1YjY1NDA4ZGFhMjdjYjU3NTg3MGVkYmZiYmNmNzA4YTExOWEgbGVnYWN5LXRydW5rCis5MTQwIGZiZmNmMzhkMmIzOTVmYmZiNzc3NmNhZjU2Y2ZkZTAwYzgyZTc1NWYgbGVnYWN5LXRydW5rCis5MTQxIDlmMDJlYjM2YjU3MzlhNDdmZDY1MjA3MTVlYjc0YjFhMTYxMjY4YjMgbGVnYWN5LXRydW5rCis5MTQyIDczMTRiZTY0NTBhYTA4Y2I0OWY2NDBlODRiMDU2NWYzZDI5MWYxMWEgbGVnYWN5LXRydW5rCis5MTQzIGQ2ZDNlN2NmODk3ZTBiMTg4ZGE1OTlhZGY0MGRlMjAxNWU4MDk3MmEgbGVnYWN5LXRydW5rCis5MTQ0IGIyZjFmZWM2YTcwMjNlMzVjNmZhYzkwZDkzMTI5ZmJmMDYyMTdkNGYgbGVnYWN5LXRydW5rCis5MTQ1IDA4OWMwNGQ4OTE1MWViMGNmZTdhN2NlYzhiZTQ5ZWMyZmRjNWZjMzUgbGVnYWN5LXRydW5rCis5MTQ2IDk4NTUyNzA0Yjg4ZjI3YTQ3NmIwMzQ5NzQ4NTE0YTdhYzExZjk1M2IgbGVnYWN5LXRydW5rCis5MTQ3IDJmNWM4Mzc0ODI1Yzg1MzcxMTk4ZjVhN2JiMmI5MzgwNDg4YjJiMmQgbGVnYWN5LXRydW5rCis5MTQ4IDhlM2VlMzU3N2Q0ZTk1MTZkYmMxNjI1Njc5YjZiMDE5YWQ3ZjdjNGEgbGVnYWN5LXRydW5rCis5MTQ5IDE0MTA1ZGYzM2MxMmEyMWYyMzBmMmI3ZGQ5NTNlZTViNGFiN2MxM2EgbGVnYWN5LXRydW5rCis5MTUwIDk4ZDU1NzkzYjY3ZmJhZTNhYWVlMTc5Y2NkNzZhM2EzMzJmOGEwYzYgbGVnYWN5LXRydW5rCis5MTUxIDk3MzE4N2YxYmQxZDNkYzIwYWNhMDliNzlkMDExMDQ5NTdlOWFmZDcgbGVnYWN5LXRydW5rCis5MTUyIDQzMmQxYmUwMTYzYzc1YzMwZTgzYmUzNGI1NmNiYjBmNjI2YWQ0OTIgbGVnYWN5LXRydW5rCis5MTUzIGNkYjMyNzliMDZlNzlkMjhiODU5NDJjODkyYmVjNDcxM2Y4ZTM3ODUgbGVnYWN5LXRydW5rCis5MTU0IDFiYjhiN2ZlNDVlYzNlZDBhMjc4YTBjYzc4NWEzY2RjNGFiNzQ4YWQgbGVnYWN5LXRydW5rCis5MTU1IGU0NWI4MzcwOGQ5ZTliYmRkMzg0MzU0ZTc5MWFiZDdkMWNmZDgyOTMgbGVnYWN5LXRydW5rCis5MTU2IGRlMmY4ZjQ5NGFlMzczN2VmOTJiOGE0ZWQwNzA2Y2UzNzY4MGZlNTkgbGVnYWN5LXRydW5rCis5MTU3IGY5NWM5YWUyYWFlZmVlOTVhNzBjYWExNzFlNmZiNmIyNmM4OTQxNmIgbGVnYWN5LXRydW5rCis5MTU4IGI4YTNiYTZlN2JjOWRlZjZhOTljNDI5NTljNzJjOTQzZmM0ODVlMzEgbGVnYWN5LXRydW5rCis5MTU4IDhmZjU4YjU3MzBmMDZiZTA4ZmJiZGMyYmY1OTIyMjZmN2E3MzYyMDEgbGVnYWN5LXRydW5rCis5MTYwIGVmZmE2MmIwMDYyYjdkMmNhNWFiYzE2YjQ5ZjVlNDYyYTgzMWJmNGEgbGVnYWN5LXRydW5rCis5MTYxIGNiODg5YjY3ODA1M2IwMTM1YWViOTU3ZmI5YjMxN2RhNjZmYTI3OTUgbGVnYWN5LXRydW5rCis5MTYyIDAxNzQ2N2RlNzkzM2U4YzczYjU3NDcyZDE0MjNiNTY0YmRiZmQwODIgbGVnYWN5LXRydW5rCis5MTYzIDgzMTQ3ZTAyZTgwZDhlMzIzZDQ5MGJhYWRlNzYyYzk5ZDIyMDBlMjYgbGVnYWN5LXRydW5rCis5MTY0IDJiN2ZiZDc2Y2VmODcwNTRjYjRiM2IxMGYzNjI2YTY1ZDAxNDZmNTIgbGVnYWN5LXRydW5rCis5MTY1IGE1OTNjMjIwZWRjYzY1OTNkNTBmNmI4NDRiOGQyZjYwYmFkMmI0NWEgbGVnYWN5LXRydW5rCis5MTY2IDUzYTA3YWRhNDk5YWY3ODg2OGU1YzZmM2VlNjM3MjQ5ZmFiNmRhZDAgbGVnYWN5LXRydW5rCis5MTY3IDg0YjQzZmY0MmZhODBlMWFlYjM3NzlmMGJhYzEwNDFlMzZkNmJiYzYgbGVnYWN5LXRydW5rCis5MTY4IGMwNzk4NDg3YjcyOGI4N2ExMTYyYmNhYmIyODQ3NzMxM2QyNzIzYzcgbGVnYWN5LXRydW5rCis5MTY5IGQ3OTBmZTI1ZTE0OGVmOTJlYmQ4M2NiYTZhMzI1OGI3MGQ4MWNmNTQgbGVnYWN5LXRydW5rCis5MTcwIDRiY2JiZWI2M2I4OThlNTQzMjM0MmVmYTY5ZGEyNDdhMzgwNjQxOGIgbGVnYWN5LXRydW5rCis5MTcxIDQwYTg0MjBiNGFiMzZlNGVlMzI3NjRmZGNkMmE3MmIxYzYyZTM0NTIgbGVnYWN5LXRydW5rCis5MTcyIGE3MmJmNDNhODg3MGIxZTBkMzM0MzdkMzY3NjY0MzIyY2I3OGJmMTcgbGVnYWN5LXRydW5rCis5MTczIGI5ZmNiOWEzNDMzMjgyMmY2OGM2NjlmODdiNWVkOWIzNjEwMDBhOGYgbGVnYWN5LXRydW5rCis5MTc0IGU5MjE1NDAyMmI0OGVlNmNmYTcxOTU1ZDA3NWYzNWMxMzlkZjdmZTkgbGVnYWN5LXRydW5rCis5MTc1IDJlNzViMzFkOTRjODRmMzFhOTE5ZjRhOTRkMmVjMDEwODFiOWE1MTYgbGVnYWN5LXRydW5rCis5MTc2IGI3M2ViNGU2ZmFjZWNmZWY5ZjkyM2FlODVlZThmNjM0OGM3NDFjNTcgbGVnYWN5LXRydW5rCis5MTc3IDkwMDFjMGE3YmU5ODYzMzk2OTdhMTFiMzMwMTE2ZDJjOTUxMDc5OGYgbGVnYWN5LXRydW5rCis5MTc4IGM2OTAzNGE4YjNmNDM0ZjdhNGYxOTBkMWM1OGZiMzEwNTZhYjcxMWYgbGVnYWN5LXRydW5rCis5MTc5IDRkNjNhMDAxYzI1ZWE5YzEyYmE4NTZmYWNiN2Q0NmQwMTU1MjQxZDMgbGVnYWN5LXRydW5rCis5MTgwIDE1MTYwMTljOTBiZTg4ZjUwMzhkYjQ3MTNmZWNmNjgzNDI3YTQ4Y2YgbGVnYWN5LXRydW5rCis5MTgxIGI5MzZjY2Y0MmVhMmQ1MWMxM2FkNjZmMzhjODVlOTMwNTMwYmUzM2EgbGVnYWN5LXRydW5rCis5MTgyIDlkOGU0OGYzYjQ5ODVmMDZjNTZlMTg3YzkxNGI1NWZjMjI2NGEyZTAgbGVnYWN5LXRydW5rCis5MTgzIDA2MTU3OTM5NTA0NjUwMWQ3MTE2OWI5OTNkZmJiNGJiMWZlNTMxM2YgbGVnYWN5LXRydW5rCis5MTg0IGNiYzVlN2Q2YWQyMzVmYmE5MGY5YjY2NzcxYmY4YWJkMmI4YzhmZjIgbGVnYWN5LXRydW5rCis5MTg1IDM5ZDk2ZDlkM2NjYjU2YTYxZmNlNTIxM2IzYzNjZDc5Y2Q3NjNjODcgbGVnYWN5LXRydW5rCis5MTg2IDQ3YTNmM2I2MDUwMjYzYWFjOWFlY2QwNjkyYTJkODIyOWRmZWEyYzMgbGVnYWN5LXRydW5rCis5MTg3IDEyYTFjOTg0NTA3NDQwNzZkOGVhYzY2ZDMyYmNjZDM0ZmIxYzU0ODggbGVnYWN5LXRydW5rCis5MTg4IDkwYzYzOTBiNDk0MTczZWRkZTg0MmE0MjY3YTVmMzllY2E4ODc0YWIgbGVnYWN5LXRydW5rCis5MTg5IDk4YWE5MjdmOTA3Y2MwM2Q1NDU5MDViMzIxNjY5OTQ2NmY3NGZlNGEgbGVnYWN5LXRydW5rCis5MTkwIGZmMTY0NDhlOGYyNDE3MDgwY2JlM2U2N2I2MTUwYjQ4ODY4MTkwYzggbGVnYWN5LXRydW5rCis5MTkxIDhhNWEwMTIzMDdiZGQxMGY5NjliYzdlYTZmNWE5ZjcxNTgxMWIwMjMgbGVnYWN5LXRydW5rCis5MTkyIGE1YmIwYjhkYzMyMDQyYmZjNTVhNDgxMjM2NDc4YjFlNzA2YzNlMjAgbGVnYWN5LXRydW5rCis5MTkzIDM5YjQxM2FjMmNjOTFjMWI1OWQyYzZiOWU1NDY0M2M0YTZiOWQyODYgbGVnYWN5LXRydW5rCis5MTk0IGQ4NTRhMWM3ZTc0ZDMzMWE3NTI5M2ViZjVkZDFhN2JlYjQ1N2VmMTMgbGVnYWN5LXRydW5rCis5MTk1IDY0YTc1MjExY2Y3MjljZjRhYzA2ZWQ3MjU0ZGVlOWMyODM2NDlkYTIgbGVnYWN5LXRydW5rCis5MTk2IDMyZjJlZGEyOTQ2Y2FkNzAxYjQzZTZjOGE3ZWM2MmQ0YmU5MzIxNzYgbGVnYWN5LXRydW5rCis5MTk3IGZhZWJjMTk0MDQzMjhiMTJiYzJiYzMxMjM0MDJhNTZjNWQyOTUxNTggbGVnYWN5LXRydW5rCis5MTk4IDk2MDg1MzkwMmViZTQxOTJlMTRjYjNmODRiYTRkYmQ1Mjk5ZGIzMWYgbGVnYWN5LXRydW5rCis5MTk5IGJiZjllNGIzMWQ4NGM0YzIxMmQzZjVmMmQ1OTQxNTBjMDE5MGY5N2UgbGVnYWN5LXRydW5rCis5MjAwIDIxZGNlMzMyNTMyMTk2MjIxYmMwYjFhYWRlMWVhYmIwMzEyNzIyODkgbGVnYWN5LXRydW5rCis5MjAxIGMzZjg1YmNiMDQ1YWQ3M2Y2Mzc1MjE4Y2EzMTgzNDZlY2M4YjhlOGEgbGVnYWN5LXRydW5rCis5MjAyIDJlM2FjYjIxNDBiZjNhNWZmODBjOGNmYzMzZDZhMTE4OTU3MmFlMjkgbGVnYWN5LXRydW5rCis5MjAzIDI4M2QxY2E1ODVkOTRmMjY2M2YxMWNiNTNhZmYzMGJkY2JmZTEyNjEgbGVnYWN5LXRydW5rCis5MjA0IDRmMzY0MmEyMDEzNzJlNjgyNDNjZDc5YTg1ODVlNGUwYjJlNGU0ZTYgbGVnYWN5LXRydW5rCis5MjA1IDI2NjJjOWZlMWIzZTAzY2FhMjdmZGY1NjE2NDg5MjM1YjQxMmI0MWQgbGVnYWN5LXRydW5rCis5MjA2IDdjY2U0NjkxNjBjNmViODUzYjNhOGJmNDRhYTQxMGNlMWQyOGQwZWYgbGVnYWN5LXRydW5rCis5MjA3IDExYTc1MTcwNTRhNThlYTgwMTZhNjQ1M2E1YWFjMzdlNDJhNjJmZTYgbGVnYWN5LXRydW5rCis5MjA4IDljOWE4N2I1YmIxN2VjMDFlYTNiM2UyNTAzZmIwNGYwMWUyM2Y5MzYgbGVnYWN5LXRydW5rCis5MjA5IDIxNjU2MjA0ZGQ0ZmJkOWE2NzFjNjQ4N2U4ZTI3MjY3ZjY3NDdhODAgbGVnYWN5LXRydW5rCis5MjEwIDA5ZjZhNDlhY2ExMmVmNzA2ZDI0ODY1NGYyZGU3ZmNjZmZmOWQyZTUgbGVnYWN5LXRydW5rCis5MjExIDY1YWU3MTFkYjAwY2I1ZDU1OGJiNTRjODM3ZDU0YzE5Yjg3NDFiZjcgbGVnYWN5LXRydW5rCis5MjEyIDRjOWIyNTZhM2JlZTBjOTEyOGExZWM4YTI3ZGRlYTFmOTZjNGU3ZDkgbGVnYWN5LXRydW5rCis5MjEzIGZhYjhhYjVkYzVmODRlOGY2ZTk2YWQ5OGQyY2MwYmI3YTViMjUzYzQgbGVnYWN5LXRydW5rCis5MjE0IDUzZmQ0MmFhM2JiZmNhY2EwZTE1NDZiMGQ2NGU1MWMzMjEyODBmYmIgbGVnYWN5LXRydW5rCis5MjE1IGFiM2Q3YTI4ZTA3ZDI1ODJhZGYwNWQ5ZWQ0MTg4YjRkMTkyZTFkZGYgbGVnYWN5LXRydW5rCis5MjE2IDNiZWY1NWNiNzQ0YjZlNmRlOWNkZWIwOGQwNmIyYzdhYTE4N2I4ZmYgbGVnYWN5LXRydW5rCis5MjE3IDFkNDE3NWVkNmE5Y2VlZTMxNTU4MGYwODJhNTVjNWVmZWQ0MmRhYzcgbGVnYWN5LXRydW5rCis5MjE4IDE4NTNiNWJjMDU0OGJhMDYyYzM1NDAzM2U4MGUzOWUyYjg0MTU4ODMgbGVnYWN5LXRydW5rCis5MjE5IDRjZjBkYTA3MWUyYmVhM2U5YjRiMDc1YzBjYjJiNjUzMDAxMjcwMGQgbGVnYWN5LXRydW5rCis5MjIwIDQ4ODdkNzU0NjkyYWVmYjEwMGJjYWI0NTQyYjNjNDA0ZTQwNTVjNTMgbGVnYWN5LXRydW5rCis5MjIxIDRmNjhjN2FjNTExNTRkY2RjZTBmNDU4MDQyY2U0MjA3MzY0NDMzNWEgbGVnYWN5LXRydW5rCis5MjIyIDgwODQ4ZTkxOGJjYzE4NDE0M2E5ZTZiNGQ0NGI1ZjcwZmE2YWVkYjggbGVnYWN5LXRydW5rCis5MjIzIDFkYjQxY2E0NWM3ZmM4ODU0NDg3OTcyOGQ0NjQ0NTY2YTM1YWI0MjYgbGVnYWN5LXRydW5rCis5MjI0IGFiZTNhYWQ5ZTAzODVlN2U2NWY3NTQyZGQyYjJjNjVkZGI5NzM1YjQgbGVnYWN5LXRydW5rCis5MjI1IGZjZmY1MzE2MzRlMTRmNDEzZDc2MTUzNmUyMjJhNzFkNWIwMTg4MGYgbGVnYWN5LXRydW5rCis5MjI2IDc0ZWEyMDhkNDZjZTgxYWEzZDlkNzQ4MmJkNTc0YzU0ZDcyNDg4ZWEgbGVnYWN5LXRydW5rCis5MjI3IDc5M2NhZjUxNzY0NzllNGU0YThlNDdhMWUzNmIzMmIzYTZmYzEzNDggbGVnYWN5LXRydW5rCis5MjI4IDVlN2M5MTM1OGVkMmNkZWE5MWM4N2M2MDBhZTU1ODNlNzFlMzNjNWEgbGVnYWN5LXRydW5rCis5MjI5IDRkYWYwOTBmZjE2MjI2NTE5NTQzNDNmN2ZiNDY2NWI4ZjMxOWI1M2MgbGVnYWN5LXRydW5rCis5MjMwIGViYTZhZGYzZjg0NGVmNjQ3ZmFiODk2YTIzNzY3ODc3MjQ1YWRiZjUgbGVnYWN5LXRydW5rCis5MjMxIGUyZTViYmZhZDFjODFmNzNhYjMyNDEzZmM1ZTBmNTA5ODVjYWVmMDMgbGVnYWN5LXRydW5rCis5MjMyIDA3ZTk1ZWY1NWY2NThlN2U2Nzk1ZmIwZjMzNjMwYTBmYWU5MTZiMTQgbGVnYWN5LXRydW5rCis5MjMzIGZkMjljZWJlODhkYzhiNDU2MmM0NGFjYjUyZmE4NDhiNjZmNjdkNmQgbGVnYWN5LXRydW5rCis5MjM0IGU0MDcwZGM2YWMzNWQ1ZDJmM2YyMWUxOWQ4MTNlNGQ4MzA3NTNhYjQgbGVnYWN5LXRydW5rCis5MjM1IGFmZjZmZjUyZDVlN2VkMzEyYmQ4NTM0YjhmZTNmNmQzMTAxNWM0OWQgbGVnYWN5LXRydW5rCis5MjM2IDBiNWViMzJiNTUxZDI4MmEyYTY2OWVlNGE4ZTU0YjMwY2QzNDkwMTAgbGVnYWN5LXRydW5rCis5MjM3IGNhZThhYTQ0MWZiZDRkN2I2NWU3ZTNkOWIyYmMxMWI2ZDczMGUxOTYgbGVnYWN5LXRydW5rCis5MjM4IDAyMDRkNDYxZDIxOTY3ODhlYzM0MGI5MDMzMDczZTVhMjcxZmQ1ZTAgbGVnYWN5LXRydW5rCis5MjM5IDc0OGFiYzdmODgwOGY0ODQzOTE0ZjI1NTNkZTRhNjM1MThkMWVhODMgbGVnYWN5LXRydW5rCis5MjQwIDBhM2M3NDAyZDM5NTNkMDdmMDAwYmMyZGFlMzljZjE1NTJhOGNlNTggbGVnYWN5LXRydW5rCis5MjQxIDEyODI0ZmUwNGEwODg1MjFkYzU0ZmE2MmViMzVjNDY3ODY1OGIxODggbGVnYWN5LXRydW5rCis5MjQyIDA3NTJiYmY3N2Q4MTNhMWY1N2RmN2UzYjdiM2Y0NmE4M2MyNTRhYmQgbGVnYWN5LXRydW5rCis5MjQzIGU2YzAzM2U5Yjc2OTI3YjllYjUxZjI3YzZjMWE1NGYzNjhjMTdiYmMgbGVnYWN5LXRydW5rCis5MjQ0IDg5MDkyYWQxZTY2MDcwZDE4NjVmODEyMGU5YmVlZmYyZWM4NDIyODYgbGVnYWN5LXRydW5rCis5MjQ1IGU5N2I4MjM3NTkxYzU4MTUxNTVkNjA5ZDM3ODcyODg4NzdjNzRkNDggbGVnYWN5LXRydW5rCis5MjQ2IGEyOWE2YmYwM2FmMzMyM2FlZjhhMzk4MmQxMGVhZGZmMTI4ZTJkNTEgbGVnYWN5LXRydW5rCis5MjQ3IDIyZmRmZDI4M2M5Y2VkNmQ1NTg0Y2U1Yzk3YTIyMDllZWQyODBmMmIgbGVnYWN5LXRydW5rCis5MjQ4IGI1Y2Q3Njg4MTJjYjMyNDEwODIxMTA3NzRjN2RkNGNiYmE2YWQ5NmEgbGVnYWN5LXRydW5rCis5MjQ5IDMzZTIxNDUyNTBhZmVlODJjZTVjYjljODc2M2Y0YzA4MjBlYjJmNTkgbGVnYWN5LXRydW5rCis5MjUwIDgzMmE4MDdkMDA5ODhlYWQ4YzYyYmI0MGVhNGVkZTdkNjM1YjY2NjMgbGVnYWN5LXRydW5rCis5MjUxIDE0ZDZiN2E0MjkxOTQyMTU0ZTBhNjllZTJhNGEzOWMxMGJjOGZkMDQgbGVnYWN5LXRydW5rCis5MjUyIDBlZjIzZjUxM2E2NTk1OTc3M2ExNWE5OGI1OTJjNDM4ZDAwMzQ5MGMgbGVnYWN5LXRydW5rCis5MjUzIDMxMTdhZjlkYmZjZTc5MzQ2ZWVlMWVkMGZiY2VjYTQ1ZmU1MTBkMTcgbGVnYWN5LXRydW5rCis5MjU0IDNkZmUwNTExYmMzYjMyNjMxNTAzY2U1MThiYzJlYThjZWE3MjE3ZjUgbGVnYWN5LXRydW5rCis5MjU1IGRhYTc3ZDlhZjM0YzkwMzM5ZjljM2Y5YjhiMDM5YTYwZTFjN2ZjNWIgbGVnYWN5LXRydW5rCis5MjU2IGJmNmRlODJhYWIwZDg4MWFiNzg3MzllMTJkNDdhMjc2MTMwMmEzZDIgbGVnYWN5LXRydW5rCis5MjU3IDRkYmZmZmMzYzIzYmUzOTQ1ZGE0NGY3NDRhYWRhMWQwZmM0YmJiM2UgbGVnYWN5LXRydW5rCis5MjU4IDljZjhkMTRmMzU2NTJjZDkzZWJmMzZmYzAwYzlhMzdhMWZiY2QyMjIgbGVnYWN5LXRydW5rCis5MjU5IGI5NmQ5ZmJiMjRlNTYxNGZiZWZjZTg2ZGVhM2YxMTk5MTAzYjQ5NGQgbGVnYWN5LXRydW5rCis5MjYwIDg5ODAyMDg3ZjgwNjY5Y2Y3OWJlZmVjMTQ0MmFlMjcxOWQ3YjgwMjggbGVnYWN5LXRydW5rCis5MjYxIGMxODUwMTc3MDg5NTQ1M2U3Mzk2Mzc4YzBlZGVmYjBlN2NjNzE4N2IgbGVnYWN5LXRydW5rCis5MjYyIDA4NDgwMDUwMmE0MjA4NDIzNmY4YmQ0NzU4M2NkNzY3ZjJlN2E0YzAgbGVnYWN5LXRydW5rCis5MjYzIGY0ZTNhN2FlYjk0OWZmM2VkNjVlMWRlMTMwYjExZTExMmMyMTgxMmIgbGVnYWN5LXRydW5rCis5MjY0IGJjMDA3Y2YxZDZiYTNhMTk3ZWMwZDk2MTk5ZTNiMjk0YjExZTAwMjMgbGVnYWN5LXRydW5rCis5MjY1IGY2OTU0Mjc0ZTFjYTQ4Zjg4NDUyM2JlMGIwYjcyNDNhMWE2N2U2MzIgbGVnYWN5LXRydW5rCis5MjY2IGNlYWJkNTAzMTdlMzBlZDIxMWUwNjNkZDc1MmI4YzZiMDg5NjdhMDUgbGVnYWN5LXRydW5rCis5MjY3IGJiNDQwYTI5NzVhYjk5MTVjZDg5NjJhMGJmYzhhYTIwYjg5MzFjYjMgbGVnYWN5LXRydW5rCis5MjY4IGIxZTZjM2ZlNWRlODU0NWQ0ZjFkZDVmNzRhODEyZWY5YzI2MDgxMGEgbGVnYWN5LXRydW5rCis5MjY5IDllNzVkOTQyNTZlMGU2YTUyYjZhY2UzMGEwNzVkZGY4Mjk3ZDY2MWMgbGVnYWN5LXRydW5rCis5MjcwIGY1MzNjMzA3OTc4MGJmZTlhNTY3MTRlY2Y5ZjhlNzI1MzI5YjhiMTcgbGVnYWN5LXRydW5rCis5MjcxIDg1N2Y5MDY1MDQxZDUyMGI1MjNhM2RiNTU5ODUxMDlkZjVkZWVjMmQgbGVnYWN5LXRydW5rCis5MjcyIGIwOTJlZTE5YWU0ZmVjMGJhNWIzMjJmODgzOTE1NzdhODQ0ZmQyNjAgbGVnYWN5LXRydW5rCis5MjczIDViMjRjYmIxZjk5YmEyNWFmNTIyMTczNmNlZDBjYWI0OTFiYzYyMjMgbGVnYWN5LXRydW5rCis5Mjc0IGQxMDBkMDI1MmNiMWM1ZGNmZGYxZjZlYjc0MGNhZDUwMzdjM2RiMmIgbGVnYWN5LXRydW5rCis5Mjc1IDk1NDQxNzE5MWZiZmM3ODFlY2U4ZjZmYWE4OGE1Mzc1MjZjZGFjNGYgbGVnYWN5LXRydW5rCis5Mjc2IDBiYTUwYzc0MjllNTEwMzRiMGZhMjk4YTI2ODc2NDMzYTcwN2Y5MWMgbGVnYWN5LXRydW5rCis5Mjc3IDM0MWE2ZTQ3YThmZjY0NWZlYWNjNmUzZGJhZjc2YmY4MDNkY2M5N2IgbGVnYWN5LXRydW5rCis5Mjc4IDVlZGZlYjdhYTZlYWUzZDcwNDg4NjIyY2U1YWMzOTJiOWY2YzQ1NjYgbGVnYWN5LXRydW5rCis5Mjc5IGJjYTk0ODE5NGRlYWY0ODI5NGYwZGI2MjFmM2FjZDRjMDMxZjlhMzQgbGVnYWN5LXRydW5rCis5MjgwIDk4NWJlNmRjODk0ZjM1ZmFiMDViYjQ4NDg4ZWIxZTcwNzUxOGQyZTggbGVnYWN5LXRydW5rCis5MjgxIGFmYmMxMWRkMmM2NWU1ZmI4M2M2Zjc3ZTNhM2I2YmI5NjJiZWQ4N2IgbGVnYWN5LXRydW5rCis5MjgyIGUyMjRjNDFiZGFjNjUwOGYwNzRmZWJkYzI4NzAyM2RiZTJmNjg4N2QgbGVnYWN5LXRydW5rCis5MjgzIDkzZTQ4MGRlZGNmMDk0MDcxZjg0ODdlOWQ1M2YxNWU1YjRlMjM1M2EgbGVnYWN5LXRydW5rCis5Mjg0IGFjMWIyNjFmMTY5MDRhNjY1OWZjZDYyNzg4OGQyODBkZjcwYmY3YWQgbGVnYWN5LXRydW5rCis5Mjg1IDdmOTE5ZDQ3MDEyOTNmYzVkZDYwYjZlNmViYzA5ZTA5ODIyZWE1MWYgbGVnYWN5LXRydW5rCis5Mjg2IGE4N2JjNTNmYzFhZDZlZTc1YmFlYWUyYjA5MjM5YTA1MTNjODQ2YjcgbGVnYWN5LXRydW5rCis5Mjg3IDE0MGU2NWY4Mzk1MzNmYTlmYmU5NzE5NzAxOTdlMjUyOTk2ZTYxNmEgbGVnYWN5LXRydW5rCis5Mjg4IGNhNzU1ZmIxZWZiOGFmNDNiNTAxMDkyOThiOTY1NjEwODg5YWI2NDYgbGVnYWN5LXRydW5rCis5Mjg5IDliNDA2YzkyNTE0MDgyNTgyOWVmMTQyZjMxYjE0MzUzZGE4NjVkOWIgbGVnYWN5LXRydW5rCis5MjkwIGQ4NTE0N2RjZTE4NWQyNjJmMmMwNzhkYWQ1MjA1NmMxNzRjMjJmOWYgbGVnYWN5LXRydW5rCis5MjkxIDY2N2E4NWViZmMzZWQwYWJhZjYwMDNjODNmY2E2ZjYxNjk5NmYxZjUgbGVnYWN5LXRydW5rCis5MjkyIDBmZTNkYzI4YjkyYzBjOTZjMjk1ZTU5YzUzODM4MWQ2NTExZWJmNWMgbGVnYWN5LXRydW5rCis5MjkzIDYxMzFkM2Y5YWYyZDYwOTI5ZDAwMjNhNTVhMTI2NDA1ODdhMWVkYmMgbGVnYWN5LXRydW5rCis5Mjk0IDJlM2YyNDRmMTA1ZjM1NzM5OGY5Mjc3NTk1ZWU0MGJmNjVmY2QzYTIgbGVnYWN5LXRydW5rCis5Mjk1IDdkYmEyZjNiNmM4MTM1YzNlNzdhMDAxNmRjYzdlYzAyMDNiNDA4YTAgbGVnYWN5LXRydW5rCis5Mjk2IDc3M2ZiYzhlZmJkNzdlMDcyZDhkYzFmNmI3YmMxMDJhZDQ2MmQ5NDQgbGVnYWN5LXRydW5rCis5Mjk3IDk1OTI5YjAxYTI2MjRhYTI2ZjNjMWUzY2FkZDA0NTQ0NTQ5ZWI1NDEgbGVnYWN5LXRydW5rCis5Mjk4IDhlZjQ4MWM3YzNhZmM2NDMwMDdmM2Y5ZWQ3MmI3MmVkYzczOGQwZDkgbGVnYWN5LXRydW5rCis5Mjk5IGIxOWNkNDMxMzEyNjYzZWY0NTVkOGI0NjFiNTA1N2I0ZWQxZTc5NjUgbGVnYWN5LXRydW5rCis5MzAwIGZjMTFmZjJjNzViMDQ5NWRkNWFjZGYwZTk4NDE5MDAwN2Y4MjFiNjAgbGVnYWN5LXRydW5rCis5MzAxIDY2M2E0OWU0YmVkMzI2ODI3OGM3MzhlNmM0NTFjODFjNTRjNGY0OGMgbGVnYWN5LXRydW5rCis5MzAyIGUzOWMzYjc3NzA0MTcyYzg1YWYwMzQ0MTkxNzdhYjBlMWIzNGRhZjUgbGVnYWN5LXRydW5rCis5MzAzIGVjYWE0MzFjNTk2OWQ5YjNhMzQyNTQ0ZTEwNTM1ZDdiMzdlZjBlYTIgbGVnYWN5LXRydW5rCis5MzA0IGExNTQ1Y2JmMGFkZjdmNDZjNDkwMGM3MWU4ODk1MzBjYmMwODZkZWIgbGVnYWN5LXRydW5rCis5MzA1IDlmZTk3Yjc2MzA2OGI2NjljYjk1ODlkNjllOTVhNTY3ZmE4MDRhYjIgbGVnYWN5LXRydW5rCis5MzA2IGVlODhjNWFiYzM0MWVjZTkzOGJiMWUxNDVjMzJkYzI4OWUxMTgxYWMgbGVnYWN5LXRydW5rCis5MzA3IDM1MWM3MGI4ZTczMTNmZGI0YThjOWVhYmQ1ZmZkZDE3OTQ1ZWE3NjMgbGVnYWN5LXRydW5rCis5MzA4IDk5MjA5ZGNmMjk0NjhjZTczMDhjMjg0ZDk3MzExZmQwYjg3NWFhZjAgbGVnYWN5LXRydW5rCis5MzA5IGFjZjI0NzQ2NWZlYmZkZTFiZDQxZGNlNDI1YWE2YjRhMTcxZWNiNmQgbGVnYWN5LXRydW5rCis5MzEwIDlhNTdiNDEwNzQ4ZDUxNWU4NGM3ZWIwMzQ0MGZiMWJlZDk4MWRjYTEgbGVnYWN5LXRydW5rCis5MzExIGNiZmM1ZjMzMmQ5ZDRmMTlmM2E0Njk2M2FhYjVhMTExY2VmNTE5YjAgbGVnYWN5LXRydW5rCis5MzEyIGFhYjA4MmJmZTY1NGU1M2VlOTdjMTZkM2E3NTJiNmJjN2FmMGU5NzMgbGVnYWN5LXRydW5rCis5MzEzIGRiMTkxYWNmOGUwNjhlNmFhYzUzZjg3NmQ1NjU0YWFkZjA5YTYwMzggbGVnYWN5LXRydW5rCis5MzE0IDAyNTViNWVjZGUxMDY1NDI5OWYwMzE2ODFiYzM4Y2VlOTQyZjk4ZjcgbGVnYWN5LXRydW5rCis5MzE1IDk2MTgxYTRhNTQ4MjQ5YmQ2YWE4YWU5MWQ2ZjEyNmE1N2U0Mzg4NjAgbGVnYWN5LXRydW5rCis5MzE2IGI3NTUwMGVlZWQ5YjEyZDI3OTFlYzAyMTRhNjk1M2I1MWM3Yjk4YTIgbGVnYWN5LXRydW5rCis5MzE3IDYyMzMzODM1MTJiYTk5YTE4MmViZGY1ZTJhMzhjZWY0ZjE5ZmVjODYgbGVnYWN5LXRydW5rCis5MzE4IDU4YmZlY2UwMTk2OGNjMDljMTZmMTFkNzM5MjQ1YTQ4ZDk2M2Q0NDcgbGVnYWN5LXRydW5rCis5MzE5IGQ3MTM5YmFjOWI5OTc4NWViZDZjY2IxMjliZTU5NmFmNmJhNjg3NDcgbGVnYWN5LXRydW5rCis5MzIwIDQxNmM3OTU3MmYxMTg3MWI2ZWFkMTc3ODg4MDRkZjg4ZWI3YzM5MzAgbGVnYWN5LXRydW5rCis5MzIxIGFjNjVkYjIwNTRjOWM2NzhjYzRjMmJlOWVjYjRiMWJiN2E2MWExZWUgbGVnYWN5LXRydW5rCis5MzIxIGViNzg2NThkODE5ZmIwYWYwOWE4ZTZmOWJlZGNiNjcwODA1ZWQ1ZjYgbGVnYWN5LXRydW5rCis5MzIzIDNmZmYzNGVhOTFhYjY0MThkOTJjNzUwNTJkNjFiZjEzMWMzMjNhOGUgbGVnYWN5LXRydW5rCis5MzI0IDU5OWVlYTkzMDg0M2MxNGNmMmJiZDkzNDg4NzE0ODQ0ODM3MDRmM2UgbGVnYWN5LXRydW5rCis5MzI1IDlkZWQ0ZjllMDE5ZWQwYTFlNWM2ZWFmMTc0MmMxYTMwNjE1ZGIzMjUgbGVnYWN5LXRydW5rCis5MzI2IDhhZGIzNTMyOWFmMDI0ZDk1MzdiMzFlZDA3YjIzY2U2MGY4NjA5ZjEgbGVnYWN5LXRydW5rCis5MzI3IDUxZjhkNGRhODFlNGIwNzc5ODYxOGVlY2Q2NDY1ZThkY2JmYzUwNWEgbGVnYWN5LXRydW5rCis5MzI4IDUyZmQ4MjgxNjU2MTQ1YjVlNzM0OGM5NTE0NGM0NzUxOGMwN2FhZDcgbGVnYWN5LXRydW5rCis5MzI5IGQzZTUxNmVmOWNkMTEyMmZkMzI3MWRmZWM4ZTg1NGQ5NTkzOWQ2NjIgbGVnYWN5LXRydW5rCis5MzMwIGE0MjNlM2UwZGE0MDEwY2JkMjU2NjViMWIyY2E0OTlkNjExM2U5NjggbGVnYWN5LXRydW5rCis5MzMxIDY3MmE2NTdhYmJhODdjOTBjNTVmMGU3YWM0MzYzODE0ZDEzYmQzZGMgbGVnYWN5LXRydW5rCis5MzMyIGZkMDdkNTAzYTMzYzVlNTZlMWNiZmMxOTA3M2FhZGU0ZDkwYWNiNGEgbGVnYWN5LXRydW5rCis5MzMzIDFhYjMwNzk1MWY0ZWQwODgxNTYyNTBhZDFiZjczYWZiYTA0OGI0ZjkgbGVnYWN5LXRydW5rCis5MzM0IDkyNzRmYWIyYzVmMjBmNWI3MjA1ZTNmY2E5MzQzMGJjMTk5NzI1MTkgbGVnYWN5LXRydW5rCis5MzM1IDY3YzEwZDk4OTA4ZDJiZWI3NzE0ZWY0MWI4ZGEwNTljMmE3MDE1YWUgbGVnYWN5LXRydW5rCis5MzM2IDYxZDk3M2ViNDEwMmNiZmQxOTdhMDVjNzAyMjZkYWVmNzYwMzNkMDAgbGVnYWN5LXRydW5rCis5MzM3IDUxYzkzMDA3OTUxNDc1MDA0NDk2N2UxNDUyOTkxMGEyMTFkMTlhNDEgbGVnYWN5LXRydW5rCis5MzM4IDlmMWQzZWViNzg0YjkzMjU5MmQ5ZGEwMzM0MWU0N2JhNGJiMDExMWYgbGVnYWN5LXRydW5rCis5MzM5IDc0NGI4OTk0MTQ4YWUzMmMwZWI3NzBhMmFhODliOWRjMTJiNjk0ODIgbGVnYWN5LXRydW5rCis5MzQwIGM1YmZiMWRlNjFhNWI3MDQxOWRjZDM0ZjdkZmMyMGE0YjJmYjg1N2UgbGVnYWN5LXRydW5rCis5MzQxIDMyMDIwMDVhNzIwYjQ5NzU3MGFhODBlMmRmZmMxODlhZGZiNTYxZWEgbGVnYWN5LXRydW5rCis5MzQyIDJkZTM5OGYzNzBlODZlMTZkZDUxNDQ4ZTVlMTQ0NjJkN2Q1MWEzYTAgbGVnYWN5LXRydW5rCis5MzQzIGM4Y2RlMTVkZDhjZTRjNjUyN2MyZjAzYzZmODVjMWRhNTQ3NDk1OTUgbGVnYWN5LXRydW5rCis5MzQ0IDBjM2VmZGYyODEzMzBiZWEzZGJjZjdkM2I4NGI1YTUxMDk1OTJiOTIgbGVnYWN5LXRydW5rCis5MzQ1IDgxZGZkZjY1ODlmOGNlNzkzMmNiY2FiNTYyYTA3MDE5MzcxNTA2NTkgbGVnYWN5LXRydW5rCis5MzQ2IDJmNzUzZjU0MGY0NWY0OTkwMWU0ZTFjODIyNzIzYzEzM2I4NGQyNzkgbGVnYWN5LXRydW5rCis5MzQ3IDI3OGFhY2YwMTcwNzEzMDQ4ZGYwZWZkOWU2Yjc0NDc1MzQyYzdjMTMgbGVnYWN5LXRydW5rCis5MzQ4IDE5MDI5MzhlNDJjNjIwNjQ1MDgyNGJmM2FhMzkzNTg5NTNlYzE4YjYgbGVnYWN5LXRydW5rCis5MzQ5IDc5Mzc1ZjcxZDZjODM4MjI2YzAyZTRiZWMxODc2NDAzYTM1NjUxZTEgbGVnYWN5LXRydW5rCis5MzUwIDJkOTdmYjFkMDZjYTE0NGM3OGFmY2ZlZDBlNzc0YzJhYjliOTVjNGIgbGVnYWN5LXRydW5rCis5MzUxIDliZTdmMWUzNzUzNTk0NTk3MmUzOTNjMGRkM2U5ZDkzZjBlY2VhZTMgbGVnYWN5LXRydW5rCis5MzUyIDZhZTNjOTFmMmQ5MzgzNDFmODEyNTllODRlZTkxMTg4YzUwZTNhOTIgbGVnYWN5LXRydW5rCis5MzUzIGQwM2YyZTJmYmYzNjY2ZGFjMjZiZWU2M2EzNTQ0NGI0ZTNmODZkOGUgbGVnYWN5LXRydW5rCis5MzU0IDRlMmNjNTA0NGZhNTEzZjFhMThmZWNkNGUwNWJjOWI1MjQ3NzgxZTAgbGVnYWN5LXRydW5rCis5MzU1IDU4MDllZjE1N2NkZGI0ZThmYmYxYzdiNDUzNWU1MDY1NjMyMTg2OTggbGVnYWN5LXRydW5rCis5MzU2IGUyODVhMTVmM2E5MmVhMGE3ZmFlNTU5NzFlNDZkOTEzYTFhOWNjN2UgbGVnYWN5LXRydW5rCis5MzU3IGVhMjE4ZGNmNzI3ZGQxNTFlOTU1NmNjNjhiZTRlZDViMGZkZTAyYTIgbGVnYWN5LXRydW5rCis5MzU4IGM0NmQ4NzkyMzMxN2MzOWM0YzExNTA5ZTRhNDUyYjZjMTIyNDQwMTkgbGVnYWN5LXRydW5rCis5MzU5IDM4ZjhhODI4YWM1OGQzZTMwYTJhYmJhZDFkOTk2MmRmMzBjNzE3MGMgbGVnYWN5LXRydW5rCis5MzYwIDNjMTJjMGQ2OWUxMjMwMmU0ZWViYWI5M2VkYTQ0MTAzOTMwYTIzNmIgbGVnYWN5LXRydW5rCis5MzYxIGJhZjY4NmJmOGNhMGI2NDE0YzQxMmYxODkzZTgzNmEyZjZlOTUwZTUgbGVnYWN5LXRydW5rCis5MzYyIDU5OGQyZmZiZmQ4YjU2MjIyYTBjYzA5YzA1MGRjNDYwODcyNDNlNDAgbGVnYWN5LXRydW5rCis5MzYzIGU4ZDMyMjA5MjE3YTlkMjU5NDlmODg3MGI1M2M5OTFhNDI3YTFiYmQgbGVnYWN5LXRydW5rCis5MzY0IGI3ZDhjY2I0NTc0NjMzMjVjOWMwOTU3OWMyZTI1YzNlODUwMGZiNmEgbGVnYWN5LXRydW5rCis5MzY1IDkxMzM0NWQ1NGYzMDZjNWMzYmM2YzQxOGE3NjdjYjQxY2JhOGI2MzMgbGVnYWN5LXRydW5rCis5MzY2IGU4Zjk5Nzg4N2MyZDVlMzIxYmYxMzY5YTAzZTE3NzQ5MGQwODFjM2MgbGVnYWN5LXRydW5rCis5MzY3IGM3YmFiNzNlNjNjNmU3NDE4OTc2NWZmMzBiZmQ0NWE0MTdmMTFjNWMgbGVnYWN5LXRydW5rCis5MzY4IDFmZjlhMzBmODI2YTQ1YWQ4MTBjMTQ5NWUwYjMzN2MzYmE0MjE4NzEgbGVnYWN5LXRydW5rCis5MzY5IDA0N2FiY2JmM2Y0MzI1NTdjNWEzNzk1NjJjY2QyOTIyZGI1MDllNjIgbGVnYWN5LXRydW5rCis5MzcwIDVkMjA1ZjIyYWI2MTg2M2FhNzhhOGQ4OWRmMGQwN2Y4NWYxNDFiODggbGVnYWN5LXRydW5rCis5MzcxIGQyZWY3OTRkOWMxMTZkZGYwOGQ2MTE2YjNmNTg1NGYzNzEzN2QxNTcgbGVnYWN5LXRydW5rCis5MzcyIDA1ZTI2N2FlZDg2ZWJiNTEwNzc1ODg1NjdhODk2MWEzMTdmNjViY2UgbGVnYWN5LXRydW5rCis5MzczIGQ5NDlhMzVjYWUyMGM4M2EyZjNmMGVkNjE3YzBkYzgzYzhkMjVjYzcgbGVnYWN5LXRydW5rCis5Mzc0IGU3MGM0YWYxNTdkNTQzNTRkMjg4YjI4MDAyNzViOTgxY2EyNjk4N2QgbGVnYWN5LXRydW5rCis5Mzc1IDZmZTZhOWMxNDQ5OTJmMTEzZjMzZjM4ZTQ3MjQ1Njg3MjMyZDQ0OTYgbGVnYWN5LXRydW5rCis5Mzc2IDM3ZWUxODcxMWMzYzM4MTg0MTE4OTlhMTlhMGYxZWQ2YzBjYmMzYTkgbGVnYWN5LXRydW5rCis5Mzc3IDIxNGYzYzRmNTQ4OTJlYzdjOGQ1Y2E1NmM5NzY1MjJmYTAxMzIxMDIgbGVnYWN5LXRydW5rCis5Mzc4IDI0NDM3ZDhkMGRkYzNiNDViMzBkNDM3NjIyMmIxNjQ2OTQyNmU2MzQgbGVnYWN5LXRydW5rCis5Mzc5IGFkYjMwMGNiZDU2NjgwZDAxMjI0MmZhOTkzOTc2Y2UxMmZiNDRhNjMgbGVnYWN5LXRydW5rCis5MzgwIDI1MjJjOGY4NjE1YmQ1MzI5Y2M2Zjk4NDdlZjc4YmY5Y2NjMWNjNmMgbGVnYWN5LXRydW5rCis5MzgxIGUyMDdiZWI1YTM2MjliZDBjZDk1M2M4MWFjNDliYmY1MmQzZmJmYzggbGVnYWN5LXRydW5rCis5MzgyIDljYjJmMTBiMDQyOThlZmEwZTE0ZjJiYjBkMGQ3YTc2NDE2MWUzYWMgbGVnYWN5LXRydW5rCis5MzgzIDdiNTRmOTZhZjNiZWZhMDNjMmE5OTI0MmE5YmU2NWYwZWRjNzkxZmUgbGVnYWN5LXRydW5rCis5Mzg0IDgwYWI2MDMwYjkwNGRjOTI5ZWE2OGE1Yzg4NTI4MjdmMTk2ZGQzM2MgbGVnYWN5LXRydW5rCis5Mzg1IDllYzZlMGE4ZjM1M2ZkMmJlNmFjNWE2ZWEwYjg2OGE2ZDg0ZjVlOWUgbGVnYWN5LXRydW5rCis5Mzg2IGU0Y2QzMGU0NTM3MWNlMGE5YzZhMWI3ZTRjNmI4MjZkMjBiYTUyZGYgbGVnYWN5LXRydW5rCis5Mzg3IDM1NDdmZGVhYjRkZmFjOGFmOTI3MTk5MDkyODYwMjE3YjQ1Zjc0ODUgbGVnYWN5LXRydW5rCis5Mzg4IGY1OTVlN2ZjMmJkOWVhNTJjZWMzM2I0NDBkYTM3NjZiZmM4NWRlODIgbGVnYWN5LXRydW5rCis5Mzg5IDJjNDljMDJjZjc0NzRhYjM5YThlMzFlODZmYmNhYmI1MDcxYWM2NTMgbGVnYWN5LXRydW5rCis5MzkwIGYyNjZhYjkxYTk5MGQwMGEzMmUwYmUxMzMzYzU2OGFkY2M5ODdkNzggbGVnYWN5LXRydW5rCis5MzkxIDNjZmY0NDViZDEwZmZhOTcxMTViNjFkY2ZjYjc3YTUyMzc5ZGJiYmEgbGVnYWN5LXRydW5rCis5MzkyIDAzNWU3OTZiODkwZWQ2MjYzOTUwMzAxZTAyNmFiM2E2YzQ5NmZjYWQgbGVnYWN5LXRydW5rCis5MzkzIDBkNTFiM2I2NjBkMTI5M2VkYmU4MzM2NjliNjliMmIxZWY1ZmM0MzAgbGVnYWN5LXRydW5rCis5Mzk0IGI5YTM5NTAxMTJhZWE1OTIwYWU2Njc5MTYzODExM2QzMzQwMDM0NDUgbGVnYWN5LXRydW5rCis5Mzk1IDhkZmJlZWNjMjQyMmI3OTkxNzUzYmM5MzAyNjMwOTY5NzYxMTkxOGEgbGVnYWN5LXRydW5rCis5Mzk2IDk1MGQwNTE5YjVmZTllOTlhMTNmMDk1YWRmMWM2ZTBhMjdhMDFhZTkgbGVnYWN5LXRydW5rCis5Mzk3IDEwMDI5YzhjNDBlMGRjNTVjMjVlNDQwYzYyODZmYzdkOTY5NmI0MjQgbGVnYWN5LXRydW5rCis5Mzk4IGFmYjFlOGFmN2U0ZjhhYmMyZmQ2NGE4OGM1ZGVhMDhjNjVkYTFlYjUgbGVnYWN5LXRydW5rCis5Mzk5IDIzNmVhOTNjNTZmZjc4Yjc1Yjg4ZDg1ZDdkMDJiODk4MzMyZTQwYmMgbGVnYWN5LXRydW5rCis5NDAwIDc2MjljNGQ5ODViYzNlZGUzZTFmZDgwZTVmYjIwNzJlZTQzOGRiZmMgbGVnYWN5LXRydW5rCis5NDAxIDc0YWQyNjgyNTA2MDhhOTNkYWRjZjRjYTVkMmU4ZjgxYWM0MDQ4NmQgbGVnYWN5LXRydW5rCis5NDAyIGNmMzE3YTljNDk5YmJmZjYxNTUyNTViMWI0MjRmMzhkZWNkMzljMzMgbGVnYWN5LXRydW5rCis5NDAzIDNkYjI0YjRkOWM0MjI3NWJkOWQzMGQ5N2ViMzhkNzNlYzg4YjY2ZDUgbGVnYWN5LXRydW5rCis5NDA0IDhjOTJlYzhmNjAzOGE3NTA3MGUyZWEyOTdjMWNhMDU0OGM1ZGQ2YzEgbGVnYWN5LXRydW5rCis5NDA1IDUyMTI1Y2UzNzZhNDJlNDIxMjgxMmRjOWYzOWUyZjM1YzYxY2U0NGEgbGVnYWN5LXRydW5rCis5NDA2IGI5ZDljNTNmMWUxZGY1MTIzMGJiODZjNGVmN2ZiNDA0MGVmZTFjNTggbGVnYWN5LXRydW5rCis5NDA3IDc0MDI0ZTkwN2M2MGQ2MDU0NmE2NmI5MWRiMTNlZTgyN2ZkNDMyYTIgbGVnYWN5LXRydW5rCis5NDA4IDc3NDRiZjFlNDg1YjY1ZjFjNWM2NWE1MjM3ZjM5ZDNiNWFhNzBiNTAgbGVnYWN5LXRydW5rCis5NDA5IDQwOTFiMDRmOTNhZGYwMTg3NTYzZTRmODY0NGRiMzAzYWY0MmNhMDMgbGVnYWN5LXRydW5rCis5NDEwIGM1YjkzOWI1YTllMDJkNmQ4MzNlM2QyOTUzMDQ5MjVkOWUxOWEyYjIgbGVnYWN5LXRydW5rCis5NDExIGE3MmRjNTJiOTdhZGQ0NjFjMzllN2IzOGUzYjQ3M2YyNjFjZjE4NjggbGVnYWN5LXRydW5rCis5NDEyIDY4M2JjMzVhYjc1M2FmNzhiN2JiMDkwZTgwM2ZlNTdjM2M4MGNkM2IgbGVnYWN5LXRydW5rCis5NDEzIDZiNmVmOTA5MjM4ZTA1Y2QwZDcwNzhjOWNmOWI5YWY0NGQ5MmM3MWYgbGVnYWN5LXRydW5rCis5NDE0IDQ1NWNiYWI0YTliZTdkNjU0NjNkN2YxMDJjZmZiMjUzMjEzMmM1MDQgbGVnYWN5LXRydW5rCis5NDE1IGUzYzhjMzQwYTk5MGM4Y2RmYWUwMDJmMzgwM2M5MzdlYmJkMDAzZTggbGVnYWN5LXRydW5rCis5NDE2IGIzYjBhZDQ3MTJhZDBmODRhMzJmZWZlZTIxOTJhNWJhYjAzMGJjZTEgbGVnYWN5LXRydW5rCis5NDE3IGRjM2M5YzA0ZWYwN2I5MzNhNDAzYTFmZDNjYTNkZDQ5NmNmYTE2OTEgbGVnYWN5LXRydW5rCis5NDE4IDFkYWZhZDMwNzAwNjZiOTkxYTc2ZTM3NTdkZjUxMmM3YTA4ZTQ5ZWUgbGVnYWN5LXRydW5rCis5NDE5IDkxMDQ3ODRhZjE1OTA4YWNkNzIwNWEyOTIxOTA5Mjk0MjFhMjE2ZGMgbGVnYWN5LXRydW5rCis5NDIwIDA2MjkxZjA0YmE5YzM4Y2E5ZTIwMjRmYjNiNjJmOWNiYTc4NTBhOWQgbGVnYWN5LXRydW5rCis5NDIxIDBjMWNjMmQ2YzRmMDFkYzRlMTQwZGQ2ZmQzMDQwYzE2YTBlN2EwYmIgbGVnYWN5LXRydW5rCis5NDIyIGZlYmEzZDlhMzBjNzIwMGE4YTIwY2MxNjFiMjFhZDMwYWQ5NWQ2NGYgbGVnYWN5LXRydW5rCis5NDIzIGYxNGU0NDU5ZmI5NGRiYzdkOWQzZjUxZmE2ZDZlODFlMWI0NTBhMWMgbGVnYWN5LXRydW5rCis5NDI0IDVlZjQ3MDA3MTlkZTlhMjI2YjFkNjExMjIyN2VhMWQ4MGUwMTk2NGUgbGVnYWN5LXRydW5rCis5NDI1IGU3YmY1NDUzYTZmZjRmZjc2NDgyZjI0MWU4ZTI0NGNlNTQwMWU3YmUgbGVnYWN5LXRydW5rCis5NDI2IDgwMGNiMjM0ZjY3NmYxYWIwM2U2ODY3MmQ3NTA5NTk1ZjA1ODc2ZjEgbGVnYWN5LXRydW5rCis5NDI3IDZlMGVkZGZhNDA0YTcxNzA5MWZjZjlkNWQzMWQ2ZTRmMjczZWVlYzQgbGVnYWN5LXRydW5rCis5NDI4IDM5MTJlZmE1YmZjYTI2NjNlNjU4ZmJjMjYyNmMwY2UxNWJhMWUyZTYgbGVnYWN5LXRydW5rCis5NDI5IGM4YWQ5ZGM4YWUxZWJmNjljMjEzMDhmNmNjZjRkZDgyMThkNmEzZmUgbGVnYWN5LXRydW5rCis5NDMwIDExNDRhOWVkOThkNmFiMzgyZDljNGM4YjlkMjgyNzAwNjc1NDgyMzAgbGVnYWN5LXRydW5rCis5NDMxIGRjMDczOTM3OTcxNDk4ODExNWU5Yzk5NDc1Mjc4YTBiNWJmY2I1ZDkgbGVnYWN5LXRydW5rCis5NDMyIDk2NDJhMjhkZjJiMTRiNzc4NzhkZGVkZTEyNmM0MTZjZDViNDIwMGIgbGVnYWN5LXRydW5rCis5NDMzIDM4NDkzYjkzNzZlYWUxODFiM2EwNjI5NDZkMDY0ZWE1MjUyNWY4ODMgbGVnYWN5LXRydW5rCis5NDM0IDk3NTRiMjIzMzU4MDkxY2M2N2JlNDVhNTUwYWMxMDFkMjE5Njc3MTMgbGVnYWN5LXRydW5rCis5NDM1IGRmNWI1NmE1YWZjZmQ2MzI0ZmVkMmM0NWE4ZDNmYTZmZThkM2MxZTMgbGVnYWN5LXRydW5rCis5NDM2IDEzOWFkMzFmZjhmZDViOTg2YjhjMDgzZjlhNmIzNWY3ZjY0MTA2OWYgbGVnYWN5LXRydW5rCis5NDM3IGZlZGJmOTMyNTE5MGI4YTZhNjAzMDZiOTIxODRlMTRmZDQ0MTRjMWMgbGVnYWN5LXRydW5rCis5NDM4IDMxOWE1MWMzODFjZWU0ZjhhNGZkOWRjMTRhNTVjNmNhYzY2ZjgzNTkgbGVnYWN5LXRydW5rCis5NDM5IGM1ODc0ZjZmNTQzMWYyOTRiOWZjNWFmYTNiOTNkOGU3NGEyNzlmNzUgbGVnYWN5LXRydW5rCis5NDQwIDQ4NGExYzY4YzU1ODk1NmFlYWYxYWM5N2FhNWY4ZDQ5N2IwYmNkMzEgbGVnYWN5LXRydW5rCis5NDQxIDEwZjI5MjFhMDkxZTcxNGFjNzdmY2YyYjFmYjFlYjNjYzE5ZDkzYjEgbGVnYWN5LXRydW5rCis5NDQyIDMzYmU3ZDVkNDk4YjYwNzJiNzJhYjBhNzAxMjE0YjA2MjFmYjJlZTAgbGVnYWN5LXRydW5rCis5NDQzIGRjZTgzOGNkNDJjMTgwOWQ3MTM1Mjc4NmFlMmRiYzUxMTBlZDNkOTQgbGVnYWN5LXRydW5rCis5NDQ0IGVlZDYzMDQ5ZGY5NTk1NWE5OTU3Y2I2NWVkNGRjZjVhOWNhN2IwM2EgbGVnYWN5LXRydW5rCis5NDQ1IDc0NGUyYjY4ZjNiNmQ5NDBiYmYyNTExMTg1YzE5NzRjZjk5YTJkYTAgbGVnYWN5LXRydW5rCis5NDQ2IDMxZWNhNjQ4ZjdmZmVhZjFkMmM2NDEzNGZmMzdlZjAxOWZiZjNlZWEgbGVnYWN5LXRydW5rCis5NDQ3IDQ5MmM2ZGIxNjBhYzk5ZTNlOGZmMjU3MmViYTkyYjg5NzA4MTllNzcgbGVnYWN5LXRydW5rCis5NDQ4IGU1YWZmNDEwMzZmM2Q2NTkwNjBlMmZmYmYxZmQ5YTY0ZjFkN2E2NzIgbGVnYWN5LXRydW5rCis5NDQ5IGJjMTI1ZjBkMmM1ZDBmMTQxNGQwNDg4MzU5NjdlMGRlMWQ2NWU4ZjcgbGVnYWN5LXRydW5rCis5NDUwIGE2OTI5ZTc0MTdkZDYyYzc3NDE1ODgxNWI1OGIwZmVlZjZhZmU0NmYgbGVnYWN5LXRydW5rCis5NDUxIGJiYWQyYzY4NGFkNzJiY2U1ZjEzNDRkZmM0YjJkNjdhODY3ZGJjY2IgbGVnYWN5LXRydW5rCis5NDUyIDIzYjI3YjBiMjM1YjMxNTUyZDU3ZWY4ZTMzYmNhZTQ4NzY5NmFlYzkgbGVnYWN5LXRydW5rCis5NDUzIDgwYjFlMjdmMjBkNDljZTExOTU4ODUzNTIzZjViZTZiOWJmMTJlNDIgbGVnYWN5LXRydW5rCis5NDU0IGNkYTcyMGIxOTE5ZGZlNTIyYWNiOTBiYWNhYjNmYzVlYzg3NzczNTkgbGVnYWN5LXRydW5rCis5NDU1IGE1Njg2ZTc1Njg1ZjJkM2RlYjU2ZDU1NzEyZWMzOGJlYjFjNjIwMjIgbGVnYWN5LXRydW5rCis5NDU2IDJmMmVmYjhmYTU0ZmYzYzYzYTJjZTFhMTY3YTNmOTFiYzU4ZTNiNWQgbGVnYWN5LXRydW5rCis5NDU3IDc2ODhmMzEwNmFlNDQxYzJjYjc4NzMyZDJkNmQ1YTAzMzNhZGY5NDkgbGVnYWN5LXRydW5rCis5NDU4IGNmYWQ0YjAyOTY0NWU5YTdjYjNkYWRlYjhlZDMwNDkyZjIwZGFmNGQgbGVnYWN5LXRydW5rCis5NDU5IGI3MGJhNGRiNzY3ZTA5NzQwZjVkMWNhN2MwN2ViODkyZjFhOGUxNDkgbGVnYWN5LXRydW5rCis5NDYwIGYzMzY0NzA4YzA5ZTA3OTAxMGI2YTE3ZTZkMDIwODYyNDJjZDc4MjcgbGVnYWN5LXRydW5rCis5NDYxIGZmY2FmN2FmZDVkOWUzZTkwMWZkOGRiZDViY2VmNGUxNDkzYzNhNDQgbGVnYWN5LXRydW5rCis5NDYyIGY1ZmQyMzliMTc4YWQwMDhhNjgxYjQxZGJmNTA2ZDM3NDYxYzdiNjggbGVnYWN5LXRydW5rCis5NDYzIGQ0ZTlhYzc1N2U1YzA3ZmY1OWM2YjM4N2NkMmM0MjVkMWE2MzZjMzcgbGVnYWN5LXRydW5rCis5NDY0IDYzOGQ4NzdlYTk5NTgzNTMzNmMwODg4YjEzYTMyMjYwMzI2NDlmYzAgbGVnYWN5LXRydW5rCis5NDY1IDFhNDE0MTU4ZWI2NjViMTEwY2Q0YTY4NzJlZDNiYWI1YTA0MzBlZDEgbGVnYWN5LXRydW5rCis5NDY2IDJlOTFmYzcxY2JiNTAxOTgzNDcyOTFiYjczNGQ3OTgzZjQ1Y2M4M2IgbGVnYWN5LXRydW5rCis5NDY3IGZlMTA4YTRiYjhkNThkYWFjZjg3YzdkYjNmMWNiOTJjNTI3MDUxNDYgbGVnYWN5LXRydW5rCis5NDY4IGIyNDQ1YzkzZjAzYjg5YzBhMDY4Nzg4Mjg0YmVjOWFjYmM2NjBhMDYgbGVnYWN5LXRydW5rCis5NDY5IGYzNDliZjBlOTMyMjc2ZmI2NGMxNzQ3MzdhYWNhYzJiMjhkYWQyMTYgbGVnYWN5LXRydW5rCis5NDcwIGQwMDUxNWY5MmI1MzRkMTRlNWQwNDY3MzE0YjgxMjRhZWRjYjgyNTIgbGVnYWN5LXRydW5rCis5NDcxIDk4N2E4MzFhYWYyMzZhZGY1NjExYzc5NjllN2Y4ODFiY2QzODI2NGIgbGVnYWN5LXRydW5rCis5NDcyIDYwY2NmYTk2NTZhY2YwYjUyMzU0YTFjMTVkN2MzZjRiODY5ZWJiMzAgbGVnYWN5LXRydW5rCis5NDczIGViY2Y2MDRjY2VlMDUxMTI5ZmJhYWU2ZjI2MjBkYmM0YWEwZGVlMDUgbGVnYWN5LXRydW5rCis5NDc0IDY5MTEyOTkwZDhlMjQ4YjlmM2JiODBmNWRlZjAwMjdlOWY4ZjJlNTMgbGVnYWN5LXRydW5rCis5NDc1IGZhMTk0MzBmZWM0ZTQ5ZmEzMWU1MDBmYmMyOTdjMTFhZjFkZGQxN2YgbGVnYWN5LXRydW5rCis5NDc2IDhhZDE3ZTRjY2Q5YmE4OTkzZmI3ZWI1MTE3MzVjZjBkYzdkYzYzZmQgbGVnYWN5LXRydW5rCis5NDc3IDdjZTlkYTAyOTYxOWY1NWJjNTMxNWY3YmQ3YjZmMWE4Yzk5MGJjNGYgbGVnYWN5LXRydW5rCis5NDc4IGYyYWYzYzY0NTcxMDI0Y2Y3OTAxMWMwNTZjZGZmMmI5MDM5OWFlYWYgbGVnYWN5LXRydW5rCis5NDc5IGZlYjgwZWE1NDg4ODg3Y2VlODU1MjhiMTk3ODA4MGNmZTZlNTc4NmYgbGVnYWN5LXRydW5rCis5NDgwIGYwZjliMmU0ZjRjYzBjNTA5Zjg4NGQ4YjNmZDM2N2VmMDljMmFhNTEgbGVnYWN5LXRydW5rCis5NDgxIDIyNDQ0MzlmYWZjZjA2YzFkZjY2ZjRmYTM0NjY2YzZmMDY5NzE5NjkgbGVnYWN5LXRydW5rCis5NDgyIGExMGM0NTM5MTI3YTFjZjBjMTIyMGY5ZjAzYzZkZGQ0ZTQ4NWU1YmEgbGVnYWN5LXRydW5rCis5NDgzIGNkZWVmZjRkNmNiNGNmNzI5YTg4M2JiMDdiNTAxYzFmOGYyYjE3OTEgbGVnYWN5LXRydW5rCis5NDg0IDk3NzNkMzk0MWM5NmUyZDNiZTI2M2I4ZTBkNGE3NWQ0YWQ4NTRhZTMgbGVnYWN5LXRydW5rCis5NDg1IDZmMmFiNGFmYThmOTQ3ODdjMDZmY2YwYmQwYWQ4ZjM3YjY0ZDhhZDkgbGVnYWN5LXRydW5rCis5NDg2IDRiODg3MTE5ODVhMjU4OWMzMjE4ZmU1NjA1MzlmNGM1ZjIzMjE4MjQgbGVnYWN5LXRydW5rCis5NDg3IDQ0NGE2YjA3ZGE0NjUxNjhhYTI4ZGI3MWE4MmM5OGU4MzFhMWJlZDUgbGVnYWN5LXRydW5rCis5NDg4IDBhYmE2NDliZDliYjNhY2QyY2Y2YmEzYjNmMjQzODRhMDgzMWQ5NzQgbGVnYWN5LXRydW5rCis5NDg5IDdhOGMzMDgxOTZkMTQ2NTVjNDJmMzFiN2U1MjQ3NWEyODMyMDkwYjYgbGVnYWN5LXRydW5rCis5NDkwIDJkYjE2ZDFkYmQ4N2NiYTA2ODMyMzY4MGEyZThjMjVjYjM1NjRkZTcgbGVnYWN5LXRydW5rCis5NDkxIGE1ZGYwMmI2YzdhODMwODJiNDcyYjhmZjBiNDg3MzFhMGY4OTkzZWEgbGVnYWN5LXRydW5rCis5NDkyIGM3NWQ4OTllNjY2ZjE2OGQ3ZTQ3YjAwNWMxNDVkNmZjMjZkMzYzZjIgbGVnYWN5LXRydW5rCis5NDkyIDg0NDYxMDExYTFhMGFiNDAyZTM1MmYwNjc0OGYyOWZiNWI1NTU5ZTUgbGVnYWN5LXRydW5rCis5NDk0IGRjODVhZDFiYTBlMTU2M2EzZmViZjBhOTE0ZTJjZGFmZGFjMmY4MDYgbGVnYWN5LXRydW5rCis5NDk1IDU5YWEzZTFjMTNkYzU4MjFiMTgyOTc5NjYxYjM3MzEwYzIzMWMzNTUgbGVnYWN5LXRydW5rCis5NDk2IDBhOTUxNDcwYjFiZjMwZmZiOWNmMWY5NWUxYWM0NzdhM2M2OTUzMmUgbGVnYWN5LXRydW5rCis5NDk3IGFkYTEzMTFkYTI4NmVkNjQwMDdmOGM4MWQyODc3YjBmYTNjMjM3MTYgbGVnYWN5LXRydW5rCis5NDk4IDI2MWIxMWIwY2NkNjRkZjA0ZjdkZTA4MTYwN2NmODkwOGUxMWQ2MTAgbGVnYWN5LXRydW5rCis5NDk5IDM4NDRkZTJhNzA5ZjUwY2Q3MTI0NGIxZDhmMjcyMTFkNjI3ZTkzYzEgbGVnYWN5LXRydW5rCis5NTAwIGE2NmRmNTU1ZjAyNWYyYjhhNjIxYzRkYjkyZTAyNjU0MmViMjJmOGYgbGVnYWN5LXRydW5rCis5NTAxIGNjZDQ3MWM3Yjg2M2NkZTIyZTRkMzI1YTNhYTMxZDlhYzllZmQwMDcgbGVnYWN5LXRydW5rCis5NTAyIGUxN2ZlNzkzMDVjNzQwNmI4YzdiOWNjMjllZmU0MGY5MjgyMGUyMmIgbGVnYWN5LXRydW5rCis5NTAzIGM1YTE4ZmM0Zjk2NjE0YmIxMmRmMzRhM2I3NDZiM2MxNjRlNzkxYWYgbGVnYWN5LXRydW5rCis5NTA0IDRkNjQ1OTA5YjgzNDU1ZDIxYmFkZjNlZTE0YjNhZmRkZDU3MWFhMjkgbGVnYWN5LXRydW5rCis5NTA1IDhkYTM1ZjFjNzM5MDEwYmI4YmY0ZDNjYzE3YmEyZDA1MGNhMDA4NTAgbGVnYWN5LXRydW5rCis5NTA2IDM3OWQxZmQ0MmRiZjFmOTFmOTEyMWVlZDkxZjU4MGMwNTFhNjY3MGMgbGVnYWN5LXRydW5rCis5NTA3IGEzNjdhYWE2NTAzY2JkZTJjYWUwZDNhZjczMThhN2M1NWU1YWFhNzcgbGVnYWN5LXRydW5rCis5NTA4IDA1ZTBlNDk5MDE0ZjI5NGVkNjIzY2RlZjM1MzNlZTM4NDM5MmM0ZWYgbGVnYWN5LXRydW5rCis5NTA5IDhkMTFlY2MxNzdiMmI4YzUwMzRlNDMzNGIxYmRmZjRkN2Y5M2ZjMzQgbGVnYWN5LXRydW5rCis5NTEwIGZhODVhN2ZkNzQwYmM2MWJiMzk5MWFlZGY2NDJlNGZmMjZmZWNhYWUgbGVnYWN5LXRydW5rCis5NTExIDYxNDc0NTliZmNmYjlhMGU2N2NmYTcyYTFjOGRiOGY5NmViZDUyMDggbGVnYWN5LXRydW5rCis5NTEyIGRkZjUyZjAxYmMwYTc2ZDZkN2M5ODI2ZWY2Njg3MDE4NTE2ZDJhMjYgbGVnYWN5LXRydW5rCis5NTEzIDMxNjE2NzQ5OTAwNTk5NjgyNTljMTgzZDlmMjY0OTc0ZWZiNjExNDkgbGVnYWN5LXRydW5rCis5NTE0IGQwYTk3MDE0ZWQ0MmYwMWY2MjYxMzNlZTNhODcxMjJlNDA4MDA0M2MgbGVnYWN5LXRydW5rCis5NTE1IDI2MTJmOWFjMzFlZGExNzc2Mjc4MzRiMzEzY2Y0OGY0YjdiMWI4Y2QgbGVnYWN5LXRydW5rCis5NTE2IDQ5Y2UxOGExNjk5ZjRjNjIwODg4NzZkMTZjMmI1YmFmNmI1YTJkMDMgbGVnYWN5LXRydW5rCis5NTE3IGFiNGQ2MDQ4MjJkMGFjZjI1N2Y2YWYxYTVjMzM0N2QyZDI5MmI4NzMgbGVnYWN5LXRydW5rCis5NTE4IDFjOTI3ZWNmY2JiM2IxODgwZDkzYzkwMTM1ZWViMDdlMGU0NGFhMTkgbGVnYWN5LXRydW5rCis5NTE5IGE1MmEzZTI2ZWRjNGNlOTQxNGVlMTI1ZmJmMzQ3MGQ1MjVlMDk4MzAgbGVnYWN5LXRydW5rCis5NTIwIDg0ZTg3MWUyMDA4N2FlY2Y4NDYyMmNkZjY0MzgzNDc1N2RmYWZjYWEgbGVnYWN5LXRydW5rCis5NTIxIDc2ZWFmMzYwNDBiZTU1Y2FlMmJiMWRiMzAwNGViZTI2ODlhZGRlYzkgbGVnYWN5LXRydW5rCis5NTIyIDI5N2VhNjc5MjZlYjk0YWE0OTU2N2RkYTkwMDg2ODRiMzdkNTdmNDIgbGVnYWN5LXRydW5rCis5NTIzIGFlNjNmYTNjYjFjNmY5MWY2MzYyN2RlZjA0YTM2OTkzZWY5MjdmYTggbGVnYWN5LXRydW5rCis5NTI0IGM0YTc4YjkyNGRkOWFjODg2ODNhOGRmNzA0YTk3ZDlkMWQ3ZDE3YTEgbGVnYWN5LXRydW5rCis5NTI1IDlmZTMzNWQ0NTU5NTZjY2I4OTgxNGZhYTZjNmE2NjJhOGI5ZTM2ODUgbGVnYWN5LXRydW5rCis5NTI2IDNlY2E1ZjM3NTAxYTc5YzEwMTMzM2Y1OTkxZDM5YWY0MDhlMTdmZWYgbGVnYWN5LXRydW5rCis5NTI3IGFlY2U1MTM2MmFkYWM1YzFhYTBlMmM3Njg3NjI2NjNhMDk2ZjY4ZTYgbGVnYWN5LXRydW5rCis5NTI4IDkwZWRjYjM4ZmIwMDNmMjQzZDU3NmVmYmIxNjk0YjU4Y2QxODExMjYgbGVnYWN5LXRydW5rCis5NTI5IDFmMmY1NTk3NzM5YmExZWI3MWQwZjZmMTkxZTRlMTE2MGRiMTk3NGEgbGVnYWN5LXRydW5rCis5NTMwIDUwMjg4MGFmNDY1NGUzNzlkOWY3ZTUxNzAwMmFhNTYxOWEzYzI3MjEgbGVnYWN5LXRydW5rCis5NTMxIGRiMGRkMTE3NTQxZDQ2ZTgyYTNjYzBjNjgzOGFiN2E1ZGRhMWNjZDIgbGVnYWN5LXRydW5rCis5NTMyIDQyNTM0NDA5NzUwYTA0ZWExMTliZjZlMmIxZDg0Yjk0YTQ4YWM3MzEgbGVnYWN5LXRydW5rCis5NTMzIGRmMDViOWM0YmU3ZjM3NzA1MTY4MTRkYjQyMGE5ZmRmOTMwNmMyYzggbGVnYWN5LXRydW5rCis5NTM0IDUzZTU0YTE0ZjQzMjMzOWQ4MTZiNDk5ZTBkMGNhY2I2YjIyNDI3ODQgbGVnYWN5LXRydW5rCis5NTM1IDA4OTZkMzJiNjBhNGIxY2M4MDJjZjI2N2E1YWQxMmIxNjFkMjEwY2EgbGVnYWN5LXRydW5rCis5NTM2IGYyYjJhN2VhMmExZTM1NWM5ZjQxOWZjNmQ4NjBhYzcxYTIxMWNiNjQgbGVnYWN5LXRydW5rCis5NTM3IDZlM2I0Njk1ZmZhZTFjYWUwMDdmYzQ3ZmViODgwMjhmN2Y5ZTAzMmQgbGVnYWN5LXRydW5rCis5NTM4IGM5NWU2MGVhZDVlMDZhMWU1ZTNlOTk2ZjJkNDBkYWNiNjdkNDJlMzkgbGVnYWN5LXRydW5rCis5NTM5IDFkMGI5MDI4NTIzYzZlYmIzMWI4Y2FhZjQzZDM1MDE2OGI4MTk5ZjIgbGVnYWN5LXRydW5rCis5NTQwIDZiNGY4YTk2ZTFkNDQ0ZjRmZDZhNzY0NzJhNjdkMTk2MzA3NGVhYmYgbGVnYWN5LXRydW5rCis5NTQxIGU2OGVlYjM1ZDA0ZDFkYjdlN2NiYjFiZTcyZDBhODg4NzliM2E3MWMgbGVnYWN5LXRydW5rCis5NTQyIDBjNzAyNjQ1NzNkYjNkMzUyMTM2MTBiZWNjNTU0Y2Q0YTA4ZTk4NWUgbGVnYWN5LXRydW5rCis5NTQzIDg4NjZjNjliMGFmYzhkYzc5MzFiNGE1MTlmNDEwNTY1ZDRjODA4ZmUgbGVnYWN5LXRydW5rCis5NTQ0IGZhNDIzMDY4NTc1NzJmZjg1M2FhMDI5OTZiYTcwZDhkYmY0YTNlYTQgbGVnYWN5LXRydW5rCis5NTQ1IDkwNjUwYmJkOWRiYjZhYzU5ZjMwN2I2MjBhZDI0N2E1NzE5ZGU3NzIgbGVnYWN5LXRydW5rCis5NTQ2IDJjZGYxMWIyZWQ5YjQ0MTBmYWJkZTE2MDQ3ZDJhZDYyZDdkMWJhYzYgbGVnYWN5LXRydW5rCis5NTQ3IDAwZTYxMjU2MDQ5MmM2YWEzNWFlNDA1YmRkMmRlNzAwN2M3ODY3ODggbGVnYWN5LXRydW5rCis5NTQ4IDc1YTFhZWM2ZDliMmNkMjQzOGQ2OTdkNGRkZDhhMjg3NWM4MzYxYmYgbGVnYWN5LXRydW5rCis5NTQ5IDAzMTRlY2JjNWY1ZDRlMjViZTZlYWM3OTI0NDIxMjU1NjJmMTFiNDIgbGVnYWN5LXRydW5rCis5NTUwIDVjMzUzYzUyMmE0ODI3ODE0OGI1ZWZkNGJjN2M4MmNiNzc4Y2MwYTEgbGVnYWN5LXRydW5rCis5NTUxIDNiNTE5YTZkMjdiYjViZTJmZTgwZGUzNjY5OGFhOGMyNTY0MzAxMDAgbGVnYWN5LXRydW5rCis5NTUyIDhjZDU3M2I3MmQ0YjYxM2NhYjBlMGUzZGRjN2JhZGYxNjY4YTI1ZDcgbGVnYWN5LXRydW5rCis5NTUzIDNkOGMxYjhmNjA5OTBlODRjMjE1ZDExOTJjZDE1MzFiZGY1M2ExNmEgbGVnYWN5LXRydW5rCis5NTU0IDJhZTQ0MTdhYzMzMDllZTY4MjU4N2QwZmZhZjJjYzg3OTkxYTEzOWEgbGVnYWN5LXRydW5rCis5NTU1IGMxYWQzNGIzYzA2OTk1MGQ0NzRkYTg5MzBhNDc1NmZmNTQyZmM5NjUgbGVnYWN5LXRydW5rCis5NTU2IDAzMTQ1NTM0ODJhMjllNzQ0MzhhMjUxYmMzNmJjNjIzYmZhNjY3MWMgbGVnYWN5LXRydW5rCis5NTU3IDMyMmRjYTVlZTE0NWJkY2I0N2RiZDQyNGEwYjUwMTA5OGFkOWY1MTMgbGVnYWN5LXRydW5rCis5NTU4IDkyNGY4YTAxMTdkNWZiMDExZDVmM2U1YWQzMTcxOWUzNDNmOTYzMjkgbGVnYWN5LXRydW5rCis5NTU5IDBiYWEyYWI0MmVlOTBjZGRhYzY2ZjMzMTAyZjZiYjgyN2FhZDU2OWYgbGVnYWN5LXRydW5rCis5NTYwIDQxOWI4NmIwNGFlNGQ5OGIzZTZlNjhmOWRhMzU4ZmU5NTg5OTk1NWYgbGVnYWN5LXRydW5rCis5NTYxIDkxM2U0OGFhYWM3NjFlYWM0NTQxNDJkZGEwNmU4OGMwZDk3OWU0OWMgbGVnYWN5LXRydW5rCis5NTYyIDBjNjg4Nzc2NTkzOTUyNGU0MzgxY2RkMjQ3MmE0ZmYxODFjYzRlNjAgbGVnYWN5LXRydW5rCis5NTYzIDliMDVjMjBjNTc3NmE0ZjI1YzMyOTE3MTRjNzQ4ZWZmYjIyMzYyMzIgbGVnYWN5LXRydW5rCis5NTY0IGZjYjJlM2VlODk5NTk1NmI4MDU3NmI1NWU5MGEzMzk1NzA5NTc0MTUgbGVnYWN5LXRydW5rCis5NTY1IGFiNTFkYTM0NzMxNmQ0YmZhYjc0YjA1ZTExMzA0NTAyZGI3NGViNmMgbGVnYWN5LXRydW5rCis5NTY2IGEyZTA1NDAzMjg5OWM2MjU4NmMwNDM2YWE5ZDJhMWMyNDFlMTIwM2EgbGVnYWN5LXRydW5rCis5NTY3IDI5YjE2ODY4NzVkYWE1MTUxM2M0MWRiNjI4NWEyMjM2OThiYzA2ZWYgbGVnYWN5LXRydW5rCis5NTY4IDk2NDYwZWYzM2ZkZWQ3ZWQxMmZkNzVhOGE3YjU1NmY0ZTJmZTYxZTMgbGVnYWN5LXRydW5rCis5NTY5IDJlOGJjZGU0YzI0OGZmYmU2OTk2N2Q3NzIzNzQ3ZWIxY2Q4NDZhNTMgbGVnYWN5LXRydW5rCis5NTcwIDhhNTU2NDNlNjY3ZmExNzJkZGQwNWQyNzYxM2YzOTkyYTkwMDNiMmUgbGVnYWN5LXRydW5rCis5NTcxIGFmODI2YjIzZjAwNjQzMDgzNWUwYTcyYzliNjEwOWEyOGY1MzYyZDIgbGVnYWN5LXRydW5rCis5NTcyIGU1NTQ4MDk2YjQyYTVmYjkxMjZlOGViNjA2NWY1ZTliOGVmNTc4OTcgbGVnYWN5LXRydW5rCis5NTczIGJjMTk3NmZmNmZmZDMwZmIzNTM0NzQ5ZTg5Nzg1OWEyNzk4N2NhYTQgbGVnYWN5LXRydW5rCis5NTc0IDViYjg4NDUyNzQ0NmY5NjVkMWUyMTlhYWQ2MmJjYjQxMDFjM2FkNDAgbGVnYWN5LXRydW5rCis5NTc1IDAwYTg1YWIwMzM3ZjdmODdjZGY2MjZkM2JkZWQ1MDg1Yzg0NDViZjAgbGVnYWN5LXRydW5rCis5NTc2IDE2NzZmYWQ3YjYzZTc1MjlkMmYxOGI1MTk5ZWY1YWIwOTMyYjFkOGMgbGVnYWN5LXRydW5rCis5NTc3IGY3ZjU1YmI2YTNiMzA4MGYyZTA4YmIyNTAxM2FiYTk5ZjNkY2VkMzEgbGVnYWN5LXRydW5rCis5NTc4IDgwODQ3OWY4NWEyOWEzYjExOWVhZjViNWRjZTdhZDhkYWQ5ZTMyMTEgbGVnYWN5LXRydW5rCis5NTc5IDBkYzJmY2IwNzZhY2E1YjdiNGEyZmQxNWRkMDNjNGMwNDQ3OGU1OTQgbGVnYWN5LXRydW5rCis5NTgwIGVmYWEwMWRlZmZkMmRiMDQyMGUzYzlhYjc4ZmY2ZTYzZDM2NDk0YjIgbGVnYWN5LXRydW5rCis5NTgxIDJlNWExMTZlNTRlY2Q1Y2NlMWU0NzA0Yzk3ZTMxZmU1OGY0MDRhMTYgbGVnYWN5LXRydW5rCis5NTgyIGU3MDYxYWIyNDg1MjE1ZTQ0YmI0N2FiZTkyOGU2MjdhMjk1NmY3Y2MgbGVnYWN5LXRydW5rCis5NTgzIDI4YzdkNWZjZDNhYzlkYTMxZjZhOTFmOGE4ZDJlNzFjMTY4MTFhNjMgbGVnYWN5LXRydW5rCis5NTg0IDMxNzZkZWFjYjZkMWYwZWFhNjUwMTA2OWUyOTM2ZDc5ZWFhN2I4ODkgbGVnYWN5LXRydW5rCis5NTg1IDZjOTAwYWRiMWVjM2IxNWExMDNjM2M4YTJiNmE2OTE4Y2M5NWRiNDQgbGVnYWN5LXRydW5rCis5NTg2IGVkNjI1NDgwNDU2MzVlNTliZWFmMjdlZTc2NWU4ZGViZTBhZWIwOGMgbGVnYWN5LXRydW5rCis5NTg3IGY0MzY2Nzg2NmQ1ZTVlNjIxZmFkNWE1MDc5N2U4NDFmODg0YjEyNjkgbGVnYWN5LXRydW5rCis5NTg4IDI4MjIzNjhjMjY2YTNmMDk5NmQwNmViZTBkZjkwMDRmNTdhNDhmMWMgbGVnYWN5LXRydW5rCis5NTg5IGYwNjNmMWViMjk2NGJjNDMxYTcwYzIyMDZkODRkYWI2MDlkODgwMjggbGVnYWN5LXRydW5rCis5NTkwIGVjZTQxMjNlMzZlYTJjYzk5YjVkZTMyYzkyMWJlN2M3NTMxMWJjNDEgbGVnYWN5LXRydW5rCis5NTkxIGY1ZjMwNWQ3YTYxNzU3NDRlMmMzZGM3MWE0ZmFkZGY5MDcyNjY1MDUgbGVnYWN5LXRydW5rCis5NTkyIGZhMDkzNzJmNzg3MmRiYWM0MTFiZDc1YjI1NzdjMzY4YjhhZjJhYzYgbGVnYWN5LXRydW5rCis5NTkzIGVhN2RjNTEwZTJkZjU2OWU4NWIwNzBjYmIxMTdlMDYyYzc2ZmMwMDAgbGVnYWN5LXRydW5rCis5NTk0IDQxNTE0ZDFlZDY2NGUyYWZhYzFiZGY1ZDMxNWEwZWZmY2RkM2JmODkgbGVnYWN5LXRydW5rCis5NTk1IDQxOWRjYTJiM2E2MTc5MGI0M2VjNTlkYzFmYTMxYTFhM2Q5Y2RhNTEgbGVnYWN5LXRydW5rCis5NTk2IGU5MTA4ZTk3YTVhMDE3ZTAyN2RmMzNjZGJmYTU1NDNlOTE0ODIzOGQgbGVnYWN5LXRydW5rCis5NTk3IDUxNjE4OTk4NGIwY2EzOTRjZTJmNGJmYjVhZWJjYmVjNTgzZGNlZDYgbGVnYWN5LXRydW5rCis5NTk4IDBlZmVkNGQzMzIzYjEzMDJhY2NhMDM5YmQ3MTZlNWNjZjhkMmUzNjMgbGVnYWN5LXRydW5rCis5NTk5IGM4NzQ1ZDIwNTEyMjcxNmM5ZTEwZGI3OTlmYjZmMTJmOWU2ODY0ODQgbGVnYWN5LXRydW5rCis5NjAwIDQxZDZkYjhlMjZkYzAzMzkzZGY4N2I0OTI3MmM1YjI0OWJiMzI1NjkgbGVnYWN5LXRydW5rCis5NjAxIDVkNTE3ZGRjYmQyZWY1MTkzM2U4ZjFmZTRjYzFjNWQzMjMzZTUwMzcgbGVnYWN5LXRydW5rCis5NjAyIGMwMzdkMDBiMWUyY2JhODk4NWNiNjM5YzEwNjdiM2Y2NDU1N2YxNzAgbGVnYWN5LXRydW5rCis5NjAzIGRlNGM4MWMwNjk5NDI5YmVlNDk3ZmQ4YjFhZDc0NGY4YzY5M2Q1ZjkgbGVnYWN5LXRydW5rCis5NjA0IGQyYzExMGFjYzYwYzE2NjI2Mjk1NTcwZjdmNmE1OTMwM2YyYzM5OTAgbGVnYWN5LXRydW5rCis5NjA1IDFjNGJhYWRhNTU5ZTIzMGQzNDIxNjE2YTJhMWY2YTk5YzllN2I2YmEgbGVnYWN5LXRydW5rCis5NjA2IGRlNGRjYTllNDc3OGNmZWY5N2E5YThjZjE3NzlkNzY5MGFlMzRiYjggbGVnYWN5LXRydW5rCis5NjA3IDk3MzE1YmYwOGZhZDYyM2Q2MjA0ZDA1ZTA3Yjc2ZDM3NjY5OTAwMWQgbGVnYWN5LXRydW5rCis5NjA4IGU0YzMxZGMzMDYyM2M2ZDhhODE2MDc1MDgxMDg1NmUzY2ZmMTRhMjAgbGVnYWN5LXRydW5rCis5NjA5IGRmZGVhYzVlMThjNjI1YWFkOTk4YTBhYzdlNjA0YmY1ZDVmMDc0ZTIgbGVnYWN5LXRydW5rCis5NjEwIDk2ZmE2NzUzZTk1NjI3OWI1YjY5ZTUzYzg2ZjE2MzRmYTUyODY0M2QgbGVnYWN5LXRydW5rCis5NjExIGJhODQ5ZTQ4ZjljYWUyMzhjOTMzYWJhYjJjOTRhOTM5NmYwZTViNzAgbGVnYWN5LXRydW5rCis5NjEyIDM5MzlmOWZmNjY1ZjhmYmVhMzVkY2E1NzcxZTk5NjQzMTg1ZDAwNDkgbGVnYWN5LXRydW5rCis5NjEzIGVmYTIyNDMzZTg1NWRhNGY0NTViMWU1YzBjNTUzNjg3MjQ1ZjY3ZDUgbGVnYWN5LXRydW5rCis5NjE0IDkzZmZlNjQxYTUxMjc2ZmY0ZGExN2MyZjU0YWM5ZDFkOGQwOTJjOGUgbGVnYWN5LXRydW5rCis5NjE1IDE2YTNjZGQyZjFkMTNiODIwMDk4ZjMwZjNmNTE0ZDE0NDE3MmM2MTggbGVnYWN5LXRydW5rCis5NjE2IGJmOTFjMGUxNjVhYWRjZjVlZmIxMDYwMWIwM2VmYjdhNmQ1MjVkM2YgbGVnYWN5LXRydW5rCis5NjE3IGRjODY4N2I1M2RkMGYxNzY4YTAxYjk2OGVkOTI1Mzg0M2E3NDRhZDcgbGVnYWN5LXRydW5rCis5NjE4IGU3YmZlYTQxZjYxN2U4OGU4NzU2ZmMxNWE0ODcwZmVlM2E2MDJjNTMgbGVnYWN5LXRydW5rCis5NjE5IGI4MWZiNjdkOTA4ZDdhOTczY2UxMDIyZDZmZjAzNGU4MDA5NDdiMWMgbGVnYWN5LXRydW5rCis5NjIwIGFmZjFlN2IxZjUyM2Q3MzA1YmMzZTExZDMyY2E3MDI1NDE4ODUwMGQgbGVnYWN5LXRydW5rCis5NjIxIDNmMGJlN2RlN2NhNWNhNTRhY2ZjYTNlMTkzNGMzZDMxODk3YTE4NDMgbGVnYWN5LXRydW5rCis5NjIyIDRlZjZhODNiMmU2MjVlMTYzNTljZWZhMTU4OTdmOGVhYTEwYWNmYTcgbGVnYWN5LXRydW5rCis5NjIzIDYwNzQ4NDdmYWQxZGU0OTcwMjhlYTkyZDRmZDBlY2YzYThiMmM2NDIgbGVnYWN5LXRydW5rCis5NjI0IDQ5ZTRlM2YzMGU1ODgwMmJhNmRhYjBlZDI1M2U4ZmNjMDdhYWM4M2UgbGVnYWN5LXRydW5rCis5NjI1IDUxMjhjNjA3MmFhNTFiYTcxNmJjN2ZiM2JkZDAwMmE1ODljZGQ4NjAgbGVnYWN5LXRydW5rCis5NjI2IGQ0OGI5OWQ4NTYxNzQyZDVkNzdjODVkZjU1ODEyN2U4ZDZiZWQ5YjggbGVnYWN5LXRydW5rCis5NjI3IDdlZGMzMGRmNzNmNmEyY2IyMGU1YWNiMmU2ZTNhMGM2Yzg1OGU3ZmYgbGVnYWN5LXRydW5rCis5NjI4IGI4NjQwMjlhNWJjNWM1ZDAzYTAxMzU5M2Y4YzI1MDMwYjE1NjczMmQgbGVnYWN5LXRydW5rCis5NjI5IGQzMzk5NTRlYTU3ZDg5ODc5MzFjNDY3OGNiOWMxNTQ1NTRiZTg5MGIgbGVnYWN5LXRydW5rCis5NjMwIGQzOWE4MDU4NTJjMjBhZTljN2VmOGRmN2JiYjhkZWZlYmM5MjcxNzcgbGVnYWN5LXRydW5rCis5NjMxIGE3NjkwZWY1ZTE1OTM3ZTEwMjgwZTk1MzRjNGVmMWEyOWMzMTRjMjQgbGVnYWN5LXRydW5rCis5NjMyIDc0OTE2Yzk2ZGRiOTY1MTRmNDUyYmY0NGZmYTlhMDM4MjIyZTlmZWEgbGVnYWN5LXRydW5rCis5NjMzIDMwYWIzOWMyYjE4NjJlNGYwZGVjM2I4ZDRlZTZlYWFhZGRiNzA3NzIgbGVnYWN5LXRydW5rCis5NjM0IGNlNmFkMTcwYzBjZTcyZTkwNmZlOTdiMmZjZmVkYzY5YTkxYzkzMTEgbGVnYWN5LXRydW5rCis5NjM1IGE2ZmE5ZjNjYWQxMzdjYWE1ZjdjNWUyYzc5YTliNjRiN2FkMWZhZWQgbGVnYWN5LXRydW5rCis5NjM2IGZiNzFiOTJkMTQzYWExZTE2YjViMDI0Y2EwYTFjMThjZDkyMWM5MGQgbGVnYWN5LXRydW5rCis5NjM3IDQ5YTIwZDAwZTM0Y2U1ZjVjNmRmNzU5YzBmYjYxNjUxYTYyOTk0NGUgbGVnYWN5LXRydW5rCis5NjM4IGE2NGE0MjNkNmI1NDBhYTY0NDcxMTc2ZmM2Y2RjNjFmMDcxOTRhMWIgbGVnYWN5LXRydW5rCis5NjM5IDVhYjcwODE4MWZhNjIyMzJmMDY1NDZmYWRmZjJlMDI4YTExZjJmZDIgbGVnYWN5LXRydW5rCis5NjQwIDhmYjVmZDA3NWIyYWIxMzIwMzg0YmNmYWIwM2Y1MGRlNzcyNjg4ZTkgbGVnYWN5LXRydW5rCis5NjQxIGU1NjQ2ZWVjZWFlODg3OWZjMGEzZGM1M2RkYzc3MDk1MzU4MDNiYjQgbGVnYWN5LXRydW5rCis5NjQyIGMzYjViMWMyNWM1MWM3ZjE2Y2M3YThiYTAzZWM2YmY3NWY3NzJlZDMgbGVnYWN5LXRydW5rCis5NjQzIDBkNWE5YTBlN2Q2NGExMmUwMmJlNzA3MzU3MjU4MmQzZGQyYjY2M2IgbGVnYWN5LXRydW5rCis5NjQ0IDY2Y2IwMDMxN2FjZWJiNmY1ODAzMTlhMGYzZmY1ODBiM2RmNjFkN2UgbGVnYWN5LXRydW5rCis5NjQ1IGU1OGM3YjUwZTliOWM2Yjk2ZDg5MzNjNWYzZDI3NmI1NjkyNThlZDAgbGVnYWN5LXRydW5rCis5NjQ2IDIxMjU5N2FmODI5YmJjYWJjMTc5NzdkYzU4M2U4ZDJiODQ1MWU1MzIgbGVnYWN5LXRydW5rCis5NjQ3IDM3M2Q3ODExODExM2I4Y2Y0Zjg5MDg2NjJlMzAzZGI1NzdmMmRjMDYgbGVnYWN5LXRydW5rCis5NjQ4IGM1ZTc2N2UyMmJkMWMzZTY1ZDM2YjYyM2ZhODllNDkxY2Q1ODhhZWUgbGVnYWN5LXRydW5rCis5NjQ5IGNlNDc2NmZiM2Y1NjNkMTc2MzhjOTFhMWM0MjRiMjU1NmJiNjY1OTIgbGVnYWN5LXRydW5rCis5NjUwIGI1YjBjMzI0Y2U1OTg3OGZjYWVlYWExNTNlZmExZDA4YjdjMzdiMDAgbGVnYWN5LXRydW5rCis5NjUxIDBhNGUyOWEyODY1NWU0MDQzMGVjZjI0YTgzOWE3MThkZDJmN2E3MmYgbGVnYWN5LXRydW5rCis5NjUyIGRjOWJiNDdiMzU1MjhkN2RmMjY3Y2NhM2Q2MDFmNjEzMDQzY2Y0NTEgbGVnYWN5LXRydW5rCis5NjUzIGEyOGJmNjJhYzMzNWI1ZjMwNmEzZWU1N2VjOTJkYTIxN2Y4YTYxYjIgbGVnYWN5LXRydW5rCis5NjU0IDBiZDE4NWMyZTU4MTAzZTFlODBkMDkzZmMzODhlMjJkNzM0YWQ3YTMgbGVnYWN5LXRydW5rCis5NjU1IDdjMDA0ZmMxMDk4NzM3YWNmMDE1OTQyZTg3YmM2NjYzYWZmZDgxNGUgbGVnYWN5LXRydW5rCis5NjU2IDQwOTg3Yjg2YTFjNzRmYjg1Yzk2ZmQ3OTcyZTM0NmEwN2FjZTU1OTAgbGVnYWN5LXRydW5rCis5NjU3IDdkNjFmYTliNTdhOGM1NDJhOTU2YWZhYjJhMWIzMGMzYjM5Y2QyYzIgbGVnYWN5LXRydW5rCis5NjU4IDNhOTYwYjJlMjY2NzdjMWJjNWJlNGI0YTUxODliMGRkMTZlZDllZDIgbGVnYWN5LXRydW5rCis5NjU5IDRmMTBkMjMzZjFkYzZkM2QwYjQxNmJmOWFiYzY3YTE0NjczMTZkNzYgbGVnYWN5LXRydW5rCis5NjYwIDU5MzYyZWE3ZTBmOGI0MTA2NGQxOTUwMDlmYmViOWZkMjY3MDc1NjkgbGVnYWN5LXRydW5rCis5NjYxIGRlNWNiNzg5ZTlmMGYyZjg3Yjk5MWE3YmQ4YWU5NzU3Yzk4NjljYjUgbGVnYWN5LXRydW5rCis5NjYyIDZmNzgxOTViZjhmNjg3ZjcwZWM1ODY4YTlkZjYyMTFkYTlkM2E2MjEgbGVnYWN5LXRydW5rCis5NjYzIGE1OTZiYmU3MjU3OWQ4YjVlMzRjZjQxMzE3OWYzNmY5ZmY1ZDc4NDkgbGVnYWN5LXRydW5rCis5NjY0IDZlNWViODQ1MjQ2YzA5YmQ5YjQ1NDNkZjBkNjE1NzY0ZWFjZGE3NWMgbGVnYWN5LXRydW5rCis5NjY1IDJhOWJhNTlhYmMzODJiNzlmMTgyOGQ4NDM1MzI2NWEwZjA1NTRhY2EgbGVnYWN5LXRydW5rCis5NjY2IGVlNGExYTMwZDdjZTkyN2E3OTZhNDYzMWZhYjViYjM3NDdlNGUzY2EgbGVnYWN5LXRydW5rCis5NjY3IGYzY2M4ZDUzYWM4MDNkZjJhYTMwZDFiMWQzNzY3YjA4NTdmZGM4YzQgbGVnYWN5LXRydW5rCis5NjY4IDFmOWQ5NDJmMTU2Y2M5MzJmZGVmOTEzMzQ1NWIyZjgwNGQwZDFmYzAgbGVnYWN5LXRydW5rCis5NjY5IDcwNTRiZTVhZDdmNjc0MWFmOWJiMDY1NDdmMzk5ZmRjNjlmNGRhNDEgbGVnYWN5LXRydW5rCis5NjcwIGFmOThiNDIxNDI0Y2MzOWI4YzZhOGI3NGFjNmY2ZTk0ZGU0NmQ5ZDEgbGVnYWN5LXRydW5rCis5NjcxIGUyNzk1NzJlMmRhMjU1MTY2NzE4MmVkYTI2YTdmZTUwNzNmODU2YjIgbGVnYWN5LXRydW5rCis5NjcyIGIwMDlhNGMyNDE4OGQ1MjgzZmJlYjAyYzMzNTM2YWQ1ZjhjM2FkYzUgbGVnYWN5LXRydW5rCis5NjczIGMxMjNhNWE1OWNkZTIxZDBjMTI4YWEzZGEyZWRlOWE0MDY2ZmEyN2YgbGVnYWN5LXRydW5rCis5Njc0IDMwOWZmZmU3NjhhNjI0MjE4NTUyOTAwNTA3ZDZkN2U0NTZjZjcxNjMgbGVnYWN5LXRydW5rCis5Njc1IDI2ZDA3NzM1YmE0YTViMjY3YWJmYzg3MGU2M2RmNjg5OWZjNTFhYWEgbGVnYWN5LXRydW5rCis5Njc2IDVjZDJmNjk5YmY2OTE2NmFkN2E1ZDU5ZjFlYTY1ZmI1MTliYzdkNjggbGVnYWN5LXRydW5rCis5Njc3IGRiMDA3YTJjYTdiNjM2NzczNTIxYjViZWUzZGQ3MjkyZTU0YTllZDQgbGVnYWN5LXRydW5rCis5Njc4IDk4YTlkYTUyMGYxZDhjMTlhYjViZDRlMjAzMzI3ZjRlOGNjYzUyMTMgbGVnYWN5LXRydW5rCis5Njc5IDcyMGU5MTgzOTYxZWU4YWRkNzQwMTMyM2I5YzVjMDE1M2RkZjU0NDkgbGVnYWN5LXRydW5rCis5NjgwIGZlZDNkMjAwZmI1NjVkMmFjZTgwMWJjNjExMzZhOGIzN2ZjYmM4MWUgbGVnYWN5LXRydW5rCis5NjgxIDhjMTI5YTU2Nzg2Nzc5NTJhMzAyOGM5YTBjZDBiOGE0YjlkOWJlN2UgbGVnYWN5LXRydW5rCis5NjgyIDQ4YWI2Njg3NGIxMTkxY2RkNDQzYTBlMzEzMGYwMzk5YWQwOWU5MjIgbGVnYWN5LXRydW5rCis5NjgzIDA5ZmZhYjI3M2VlYjU2NWE3NjE5NTk0ZDkwNTk2ODUyZmY0ZDhlMWUgbGVnYWN5LXRydW5rCis5Njg0IDNmMjU1YWVkZjYyMWU5NWUyNjcyOWYzZmJkMDkwMjRkYjc0YTI0YTEgbGVnYWN5LXRydW5rCis5Njg1IDA2ZGIxMGM3NmRjOTUyZTNmYTAxOTRkODNiNDBjNDczOTc2YmNkYjkgbGVnYWN5LXRydW5rCis5Njg2IGNlMjcxZTVmOWJjNWFjODk3YzBiOWE0ZDgyYzNkYTcwZTU4NjE2YjUgbGVnYWN5LXRydW5rCis5Njg3IGM5ZmUzNWE4Mjk4YWQ4NTk2YTYzMTFhNzBkYTI5ZGRlYjY3YmIzM2EgbGVnYWN5LXRydW5rCis5Njg4IGJjY2RlY2E4MTY2OWNlM2JkMzAxNGEzMDMxMGNmNzFmNTJmYTUyMGUgbGVnYWN5LXRydW5rCis5Njg5IGM3NjQyMTdhZTZlYjkyZDMxZDkwMDVjZjdlYjI5YzhhYzVjMzE3MTQgbGVnYWN5LXRydW5rCis5NjkwIGI5YmJmYTE2OTkyMGU0NTViMTI3MTNkODMyYTg4N2Q5ZjkyMWIzMDAgbGVnYWN5LXRydW5rCis5NjkxIGZmNTI0YjY5YjY2NGEzZmM2NTFmOWZlOTM3ZTg4NzQ5OTBiNWNhYjQgbGVnYWN5LXRydW5rCis5NjkyIDYyMjJkMzM3MWZiODBlYjg0MGVlNTJkODEyMzZjMWYzYjg5Njk3OWEgbGVnYWN5LXRydW5rCis5NjkzIDVhN2YyNjhhMDc4MWE5NGFkYzVjOWQ3NTM1ZDhiMTllZThjNDZjZTkgbGVnYWN5LXRydW5rCis5Njk0IDE2ZWNmMTU1NGE4MzU3OTM4MGU3Mzc2ZWVlYmYxMWZkMzE5NWYxMmQgbGVnYWN5LXRydW5rCis5Njk1IGJjMDA4NjQwNGE5YTU1MjkyMWJjMzJhYTExODJiZWUzNWJmMGNiODkgbGVnYWN5LXRydW5rCis5Njk2IDkwYTM1ZjFiOTAwODVmYTE5ZjM0MDg0NGUxMDUyNmE2ZmFjMjM5MDQgbGVnYWN5LXRydW5rCis5Njk3IDY0MGI5N2QxMDVkZjcxMTUyZjk3MzJhZDUzM2RmYmQzNTNlZDMzNWYgbGVnYWN5LXRydW5rCis5Njk4IGQwY2E4MTVjODA3MjU0ODEzZTIzYzg4YzlkY2QwMmZjMWFiMWM5ODcgbGVnYWN5LXRydW5rCis5Njk5IDk1YzEwMTk2NDQxNDk4NTczMGE4OTFmZDMwNjk5NmJjYjBiNGE2MTkgbGVnYWN5LXRydW5rCis5NzAwIDEwZmRmMTZmNGRlOWMxZjk0ZjZiODUyMzhiYzY0MGIwYzM1NDE1OTUgbGVnYWN5LXRydW5rCis5NzAxIDlkZGUwN2E1OTNkODNmYzIzMmM3MGRiMDEyOTEzMzMwMmMyN2E2YjUgbGVnYWN5LXRydW5rCis5NzAyIGQzM2Q0NTYyMmU2NzExZDhiMWM5NzljZDUwMGZhYTM3MjcwNTA4ZGQgbGVnYWN5LXRydW5rCis5NzAzIDExZjM0YmUwYmUxMWZmNDI3N2Q1MGEyYTQ3OWY2OWQ0NzlhMDRhM2MgbGVnYWN5LXRydW5rCis5NzA0IDQ3ODAyZTJmNWJlZGI0ZjIyYmJjNTRkMzE2ZjgxMThjZjAzODFiZDAgbGVnYWN5LXRydW5rCis5NzA1IDA0NWZmYTRjNTZmNzg1NmEyMzRhOTU5NGRkZGQ3NmU1MDI2YjFjZmMgbGVnYWN5LXRydW5rCis5NzA2IGJjNjQ4MmY3ZTc4ZmEzNDY2YjhiOTQxZWM5MWI5N2FkOWRkMGFlNDAgbGVnYWN5LXRydW5rCis5NzA3IGJjMjhhMGVhNjY0MGY3N2I0YmRiNDA4NGYyNjA2MGY0OWViYTQ4OGEgbGVnYWN5LXRydW5rCis5NzA4IDM3NTcyM2E3NTU5YzcxNWUwOTRiZWJjMjUzZjE1YmYwMWU4ODUxMmYgbGVnYWN5LXRydW5rCis5NzA5IDE3N2FkNzNiZjFhOTI1ZjAwOTMzNWQ3ZDdmZGUxYThkOTIyNTBiYjQgbGVnYWN5LXRydW5rCis5NzEwIDc0YzU3Mjg4YTAyYjk5NjdiYTY0OGY0Y2I1ZmJlMzNiMzNkNGMyOTkgbGVnYWN5LXRydW5rCis5NzExIDA4YzViYmZhZTUyYzBkZmUwNjNlZmU4MDIzMWU3MzZiMDA2NjY2OTIgbGVnYWN5LXRydW5rCis5NzEyIDIzYzUwOWFhM2YwZDk0NzNjZTUyYTE1YTc2MDAyNDcwNmM3NzY3NzYgbGVnYWN5LXRydW5rCis5NzEzIGRlYmU4ZTA4MTI2MDg1ZjQwMGIzZGE2M2IwZDIzZDc2NDI0ZGNlNmQgbGVnYWN5LXRydW5rCis5NzE0IGZkN2E1OTkzZDA2ZGFhMjg0OGZjMTBjMTdiMmRhNzE1ODFiNDhiMTcgbGVnYWN5LXRydW5rCis5NzE1IGNkYjRhODEzNzlhZDdlNTk3M2YxNWJlZTU5YjE2ZjU2ZTQyNjQwYmEgbGVnYWN5LXRydW5rCis5NzE2IGFhNTRkN2MzZGFmOTAxNjdhOTVmYTZiZGI0M2ZmNzNkODczYmE0N2QgbGVnYWN5LXRydW5rCis5NzE3IDMwNmY3MzdiYWI1NzZhODM4OTMyYjU5ODRhNDY2ZGNmNzY1ZDU2ZmMgbGVnYWN5LXRydW5rCis5NzE4IDJiODIyMzFhOTdjYzZhYmY3NjVkODNhNGEyMDk2ZGFiMTEzZjQxMTcgbGVnYWN5LXRydW5rCis5NzE5IGI1OTg1NTQyYmFlMWU2OWY2NTNhNDc3NzAxZmI2N2RhMGYxYmVlODYgbGVnYWN5LXRydW5rCis5NzIwIGU3NTAwNjA2OTM2N2ZjNmYxMTUzMGQ2ZWNiNWRkZTlkYTVmZWRkODAgbGVnYWN5LXRydW5rCis5NzIxIDVmNWI5ZTg3MTg4NmNkOGI5ZWM0MTUxOWU2ZTI1MzA0Y2UxNTk1NDkgbGVnYWN5LXRydW5rCis5NzIyIDBiNTNjMDM5M2M4ODI2M2Q3ZTQxYjhmMTlhM2JiMWRiMmZkNGI5NzkgbGVnYWN5LXRydW5rCis5NzIzIGE3MTE2ODY0OWRjNTFlZjgzYjM1NWYyNmQ5OTI3ZWI4N2Q0YzNkZjggbGVnYWN5LXRydW5rCis5NzI0IDE5M2Q3MDRjYmNjODUxYWU3MzhjMWZiOGExNWE0NGNjMmMwY2VjZTUgbGVnYWN5LXRydW5rCis5NzI1IDEyNzJiNThlODRhZWI2YzJkZjdhMzljMGYyN2JkMDBiYWZhZjk0NjQgbGVnYWN5LXRydW5rCis5NzI2IDI4NzYyM2NjZTI4OTQ1M2UyNmNjODliZGM5ZWE5YWNiNDM2OTc1MDMgbGVnYWN5LXRydW5rCis5NzI3IGYwYmIzYmNmMzk3YjI1NDk2YzBkN2JlNGM5ZjE4MGE0ZGM0YTMxYzggbGVnYWN5LXRydW5rCis5NzI4IGM2OTg2OTBhMjdiMjU5MTM0MDA1MWMwY2MzYzBiODg3NjI2NTk0MGYgbGVnYWN5LXRydW5rCis5NzI5IDhhMDgwMjVlZjkzZDhmOTU0MzY2OWZmN2UzNjBjY2ExOTg5MjgxZGMgbGVnYWN5LXRydW5rCis5NzMwIGQzZmQyMTgyY2ZiOGVkMDJkNDI0MDE2YjRlNmI4Yzk5ZDFiMzYxNzAgbGVnYWN5LXRydW5rCis5NzMxIDRlNzQwMmM4ZTQ2MGJmYmY4YTNiMzhiMTFmNzQ3ZTJlZDI5ZjEwYjggbGVnYWN5LXRydW5rCis5NzMyIDgxMjYxNWU1NDU1MGU2OWFkYWQ3MGMxZjM4NjliMmRiZDk4ODhiM2MgbGVnYWN5LXRydW5rCis5NzMzIGNhNzhiMDk1ZWNmMDE0NjNlM2U2OTU3NWNhYjkxZDhhYzEyZjhhY2YgbGVnYWN5LXRydW5rCis5NzM0IDhjNzQ5ZGZjNDliZmEzOGVkNmRmMDJiNjRjYjg3ZTRkYWYyYWI2Y2UgbGVnYWN5LXRydW5rCis5NzM1IDhiMGQ2YjY0YTBlYTM5Y2UzM2U5NmVkOTVjYjI2YmMwYTVhYTlmNzQgbGVnYWN5LXRydW5rCis5NzM2IDYxNGQ4YTkwODRlYWQ0NzU4MDBkMWYzZDlkOWJmNDQ3NzNlNzBiYmMgbGVnYWN5LXRydW5rCis5NzM3IDdjZGFhNDQ5NTUzMDc5M2JhZWNlNzBlM2U3YjM2Zjc5MzdiMzRkZDQgbGVnYWN5LXRydW5rCis5NzM4IGE3ZTk1MjRhMmE1MmM2NGFhMjg2M2UwNjUxZTNlOGRiNzY1ZWJmNjAgbGVnYWN5LXRydW5rCis5NzM5IGJiZjM1MDdlZjNmZWYyODQwYTFkNTI0ZTBhOTZiNDIzZjkwMjE0MTMgbGVnYWN5LXRydW5rCis5NzQwIGMwOTkwNzEwNDA5MmE1OTI1MGY3YTdmNWM3MmFhYmI5MGM0ZDIwZjUgbGVnYWN5LXRydW5rCis5NzQxIDQxYTkyOGNiY2M1ZWViOGUwYTZiODg3ODM3MTczMDI2ZDAzZDA2YmYgbGVnYWN5LXRydW5rCis5NzQyIGI4ZDQ4NDEyNWM5MmRkNjI1MGU0OGZhNzM5OGU5YzNmYjAxMTQ4YjEgbGVnYWN5LXRydW5rCis5NzQzIGMwMDJmZmQxZmJiZmU3YmE0Y2FlZmMwNTVkNGZhMDI3NGFhYzA0Y2IgbGVnYWN5LXRydW5rCis5NzQ0IDgzYzBlOWRkNDIyMWY4NmFlNzNiNDZkMjI4N2FjM2FiMmJlYjc0ZGEgbGVnYWN5LXRydW5rCis5NzQ1IGNhMTRmZGI5NTVlZjgyN2JiNDdjNjhmNTBmZTk0MTlhZjVkOTcxYTUgbGVnYWN5LXRydW5rCis5NzQ2IGEyZjRjOTQ0Y2I4NzIxYmZjNjZlYjJmOWQ2N2M1YmIzODc5OWVlY2MgbGVnYWN5LXRydW5rCis5NzQ3IDY4MmQzZTViMjY3ZjQ3MGIzYzEwMTRiMzAyNTM1MmM0ZDhiM2RlZDEgbGVnYWN5LXRydW5rCis5NzQ4IGY1NTk2OWMxYzNkNTQxOTY5ODJkOWNhMmZmZWJjNDcxZjM1N2U5ZDIgbGVnYWN5LXRydW5rCis5NzQ5IDAwNjFkMzkxNmFlNGIxNWU5ZTA2MTlhZjczNDgxNTVlZTJlZGY4NzYgbGVnYWN5LXRydW5rCis5NzUwIGM4MTdmODZjZTdkYjY3MTkzYTc0NzRjNDJhNDhjNWRiZDRiNzRkYWQgbGVnYWN5LXRydW5rCis5NzUxIDE1YmE2OGMzM2VkMWNlZGEzMDMyNDIwM2ZhZTY5ZjVlMWM3YjU5OTkgbGVnYWN5LXRydW5rCis5NzUyIGY1ZWExYjMwY2IzZjc0OWU1Yjk4ZDMwMDBkMzNkNGI5NGFjZjljMTUgbGVnYWN5LXRydW5rCis5NzUzIDAwY2Q5ZmU0ZjZmMmIwODlkYjViNDVkYTE0ZmQ5MTNmM2YxYmI4YzIgbGVnYWN5LXRydW5rCis5NzU0IDM5ZGU0OTQzNGRmNDI2MTFjNDdiNjlhZjY4OTI0MzEyNjZmNDgzZGQgbGVnYWN5LXRydW5rCis5NzU1IGJmNGU3OTBiZDYxYTRiOWIxMzk1NTgxODUxNDcwOTNjNTExYWExNzcgbGVnYWN5LXRydW5rCis5NzU2IDU5ZDI3NjFiYTFjZmNhYTBjMmYwNDhhNDAxYWUzMTFhNzEzYjhkNzggbGVnYWN5LXRydW5rCis5NzU3IDUyZmJiNzMxMjEwMzQ1YjAxMzU0ZTY0MGI0NDcwNWNhMmE3MWU3ODMgbGVnYWN5LXRydW5rCis5NzU4IGYyMTRlZTg4MzhkZTY4MjZmMzYwYzQxZDcwYjg5MDNmNmFmMDFjNjEgbGVnYWN5LXRydW5rCis5NzU5IDFmZDc4NzM4NzlhZjgyYzliOTM4YjU1ZGFmM2JjMWQ3ZWMwYjEwZGUgbGVnYWN5LXRydW5rCis5NzYwIDZkMGM0ODViYTVlNDE5M2MyNmIzNDQzMzViMmY2Mjk5YWUxYzMyODQgbGVnYWN5LXRydW5rCis5NzYxIDNhM2VlMDc1ZGZiNjk4MWRjNjk0NWYxMGU5OTI1NWQ2MzZlNTI2YzAgbGVnYWN5LXRydW5rCis5NzYyIDJmMGNlNGZiODEwYmEzMDFiZGUyZDFmNWU2YThiZjJjM2FmYmM1YzUgbGVnYWN5LXRydW5rCis5NzYzIGVmMjY5YWI3NzBiY2M1YmU2ZWIyYTZjNDc3NjE0ZjU4MDg1Y2JmOTQgbGVnYWN5LXRydW5rCis5NzY0IDFkNTExNzljZjdjN2ZlNDU0OTYyNGU4OTZiYmI4MTk2YzBkZDhjODcgbGVnYWN5LXRydW5rCis5NzY1IGFmMmJjNWY0NTkxOGE3MDEyMDg4YmU1NTdkYTFjOTJkMGI0MDlkYjcgbGVnYWN5LXRydW5rCis5NzY2IDQxNDhlNGJjOGIyODVmOWIxMGQ5YzU0NDU5Y2IxZWNiZTYwMDhlM2MgbGVnYWN5LXRydW5rCis5NzY3IDZmZWYwMzBhOTVkNDljNjU5NDJlMThjY2U3OTA1ZTgyOTZkZDc1MTkgbGVnYWN5LXRydW5rCis5NzY4IDcyZDUzMWQ1NDU3MjliMDAzNjg5MDI1OWZmNjA3MTVhMWJmMGZmMmEgbGVnYWN5LXRydW5rCis5NzY5IGI3Zjg0ZDE3OWU1MWEwM2Q1ZjViMWQ2MjI5ZjRmMTc4ZTJhMmY1YjUgbGVnYWN5LXRydW5rCis5NzcwIDZhZDIzNGFkOGRlNWM2ZDU5ZjZmNzA1MzRkOGNiMGNhNDc2NGEyODkgbGVnYWN5LXRydW5rCis5NzcxIDBkYmVjOThhY2ZjOTY3NDY0OWE3YTVjZjE2YWQxZmVlOGVhMjM1OTcgbGVnYWN5LXRydW5rCis5NzcyIDhlNjRjNWQ1NTQ4YTJhNDBiNDU1Y2FhMTc1NDliMjZhMWMyY2Q5ZGUgbGVnYWN5LXRydW5rCis5NzczIDI4NTQ0OTI2OGMzN2YwOGZiMGI4YzE5ZWEwNGRmNDYwMmVmYjg3ZGIgbGVnYWN5LXRydW5rCis5Nzc0IGIwMjQ5OTBkNjFlYzhlMjNkNmRhODY1YzU5MzY1ZjM2MTU3ZGVmMWEgbGVnYWN5LXRydW5rCis5Nzc1IGZiMGM1YjMwNzQ3NmRlYWIyMWY4NTkyODQ2NDM2OWIwZGZjOGQyYWUgbGVnYWN5LXRydW5rCis5Nzc2IDM3MDM0OTUzMTVlOWE2NDMzMjkxOTRlMWJiNTM0MWZhMDIxOWMyMWEgbGVnYWN5LXRydW5rCis5Nzc3IDA4ZjliOTAxNjY5YmExY2EyY2ZmZDQ2MTEwZWFlY2Y4NTQyYWZiNDMgbGVnYWN5LXRydW5rCis5Nzc4IDQ0MWFlNGY0Y2ZjZjkxNWYzY2E3NzA4ZjI5M2RhZjI0ZDgxMGVhMWYgbGVnYWN5LXRydW5rCis5Nzc5IDRmODQyMDJjMzc3YWNkMWU4NThhNGIyYjQ4MzJmOWJhNzMzY2Y4NzIgbGVnYWN5LXRydW5rCis5NzgwIDY0MGYyZWY0ZGEyMTI0ZTUzYmNjYmRjYjk3MmFmYWE2Nzg2MTA1ODYgbGVnYWN5LXRydW5rCis5NzgxIDY1OGI3NDJlNDM1MDM1Y2M2ODllMWZiODYwODA2ODczOTJlODljODIgbGVnYWN5LXRydW5rCis5NzgyIDI2YThlOWU4Y2I4NDExZDY4YTEzN2E4YTQzOWQ2YzU2ODMwYTc1ZTAgbGVnYWN5LXRydW5rCis5NzgzIDA2N2U0ODEzYzZkNjdhMDgwY2RhMTdhZjc5MWE1NTI2OGVjMWZlMjcgbGVnYWN5LXRydW5rCis5Nzg0IGY4OWU5Y2RkYzA5NjEzMDU1N2U2ZDllN2Y0MmMwZjUxZjc5ZDczMWEgbGVnYWN5LXRydW5rCis5Nzg1IGM5OGZlZjkyMmQ1MTQ2OGNmMjA0OTUwODBkYTBjZDg1M2FhMmYyYmIgbGVnYWN5LXRydW5rCis5Nzg2IDgwOTZmZWM3MjJiYTc5NmFmMzdhMjk3Y2VmMTQ2Mzk2ZmYzNzg0YzAgbGVnYWN5LXRydW5rCis5Nzg3IGQ3MjY2MzcyZGQzNzFjOWQxYTcyMzhkNjEzYzJiOTRmNmYzZWI4ZGEgbGVnYWN5LXRydW5rCis5Nzg4IDYwOTVhNDcyZjU3NDVjM2FjYTc0MTk1OTViNzE5NjUzNWI2MzMxOTQgbGVnYWN5LXRydW5rCis5Nzg5IGRmNzY0ZTQyYjI1OGY1NzdlZDUzYWViMWNmYTYzM2IxNWFiZmVlMjQgbGVnYWN5LXRydW5rCis5NzkwIDQ4ZGYyMDgwZDdkNDgyOWMxMjk4YThjMWFkYTMxNjBjZTIwMDllZGMgbGVnYWN5LXRydW5rCis5NzkxIDVhZTg3YTdmOWEzMjNmZDY1MmIyOWJkYjkxNDExMWEzZDY4MTJhNGIgbGVnYWN5LXRydW5rCis5NzkyIGQyM2JiOTY5ZTYzYTAzNzNjNmZkMmNiZDQzZWEwZmMzY2E5NzY0ZWQgbGVnYWN5LXRydW5rCis5NzkzIDNhNTVmYmI5OWYyMDQ3N2Q0MGI0ZTdiYmQzNTA2MWViOTFkMDI0OWEgbGVnYWN5LXRydW5rCis5Nzk0IGY2YzZkNGQ5N2RjNjUxYTUzMTBmNzQzMzE1NTdiMjBkMWU4ZTBmMTUgbGVnYWN5LXRydW5rCis5Nzk1IDkyNzg0ODI0ODAwYzNkZDM3M2QxNGU1OTY1ZTQ1MjdhN2M1ZDUxZjggbGVnYWN5LXRydW5rCis5Nzk2IDgzMDAwOWI1NzNlYTA5NGI3NGZiNDRkMDMyZDJmMTc2MjJkMDI2NzYgbGVnYWN5LXRydW5rCis5Nzk3IDA5ODkyYmY2YTUwZGZmMTU3NzI0NDBjZWQ5ODM5ODM1ODRjODU4NzkgbGVnYWN5LXRydW5rCis5Nzk4IDE5MjhmMDViYTQwMGNhMmViNjMzZTYzYzM0Zjg2YzNlNTc3MWI3ODMgbGVnYWN5LXRydW5rCis5Nzk5IDk4ZWZkNWQ5MWZjYTRmZmRkNmE1ZTgwNzNmNzA4NmIzMWUyZWU5ZWIgbGVnYWN5LXRydW5rCis5ODAwIDcyNGY4MDcyNjA1NTBkZTgyYWVhNjA0ZTVhY2NkNTdmMmQ4MmJhZGEgbGVnYWN5LXRydW5rCis5ODAxIDQ3ZWNmMDJhYWY5N2IxNGUxYzFjODYxYjM3NDYyZmVhYTc3ZmYxYjYgbGVnYWN5LXRydW5rCis5ODAyIDU1MTI1YjExNDRmYTNhNmE1ZTE2OTFhMjgzZDViODFhZDkzNGViYzkgbGVnYWN5LXRydW5rCis5ODAzIDZlMDBmYjcyM2Y2OWRiZGQ2M2UyZTg2NzQ1M2QxNTkyYTFlZmY0NjcgbGVnYWN5LXRydW5rCis5ODA0IGZlYzhlMDg0YjA3NGY1NzAyN2FlM2UzNjNmNzUzODRjZTc0YzE1N2EgbGVnYWN5LXRydW5rCis5ODA1IDQ1YjY2ZTlhYjVlZmEwMDgxYmUzOTVkYjE5MTJlNTVhNGJjYzhkNGQgbGVnYWN5LXRydW5rCis5ODA2IGMyYTA4Njk4NTJlYjg0NWI5OGE5ZmQ2NzUwMWEyODI0NjVmNDI1YjMgbGVnYWN5LXRydW5rCis5ODA3IGU0Yzc0ZjdmM2U0NjU5NGE0ZGI4ZTE4NDgzNjQ4MmRjNTY4Y2Q2YWIgbGVnYWN5LXRydW5rCis5ODA4IDlhZTIxNWNhMjBkYjRiODc3NDc4MTQ0ZWQ4ODhmMjczMzFlNmY4ZTAgbGVnYWN5LXRydW5rCis5ODA5IDgzYTMwYTM1ODNkM2YzNmEzOTRiN2RiYmI2ZjJiYTRhY2YyNDZlYzYgbGVnYWN5LXRydW5rCis5ODEwIDI1MjUzOTg3MTg3M2MyMWFhMDU5NTcxZjIxMGJhYWM5MDk2MTEwYTQgbGVnYWN5LXRydW5rCis5ODExIDZlOTY4OGNlN2M1NzYxMDI3OWZjOWQwZWQ4MmZiN2YzYzk2ZDRhZTQgbGVnYWN5LXRydW5rCis5ODEyIDM5NjViNjlkNTExNmU1OTkwZmM0NjNmYjA2Y2MwZmUzODJmNmNlYjkgbGVnYWN5LXRydW5rCis5ODEzIGMzN2EyOGEzYmI4NWIyNjdhODQ1NDNiMGRhMDRiYzdlNmE4NTZhMmQgbGVnYWN5LXRydW5rCis5ODE0IGUxNDhjZTE4YzNjZTRiM2M5ZGNlNDE1YzcxMzQ1Nzc1ZWE5MWI5ZTkgbGVnYWN5LXRydW5rCis5ODE1IDEyOTM5YzhiNGUzMGE1NDRkZDllZjVjNzc5OTY1NmFhZmMzMTNhNmUgbGVnYWN5LXRydW5rCis5ODE2IGY5MDQ4NjAwOTA1ZThjZDQzNDhjNTNlMWFiZTNjOTk0YmRkNDNjNDQgbGVnYWN5LXRydW5rCis5ODE3IGU4YjhiYTE2OWI2ZGQwZTZhNTM5MWY0MTNjNWYzY2I1NDc3OWIwYjEgbGVnYWN5LXRydW5rCis5ODE4IDZkY2NhZTc1YjI2ZjZiMmEwYzYzNWMxZjY5YTI4NGY2YWM1MTQ3YTYgbGVnYWN5LXRydW5rCis5ODE5IDAwNjlmM2ViYTlhMjUwMmM5ZmMxNmNhZTRhNDBhZGZjZjc0YzI0MDkgbGVnYWN5LXRydW5rCis5ODIwIDlmNzRmOTIyM2I0MzU1NzgwNzU0NDJiMDNjNTk5OGQxZTRhNmFjYzYgbGVnYWN5LXRydW5rCis5ODIxIDRmZmNiY2M1ZThmZTM5MzMzNjlhMjM2ZDdjMGIyNTA5ZWM1Yjg1MzkgbGVnYWN5LXRydW5rCis5ODIyIGJiYTJiMjA1ZjhlZGQ0OWZmNGFkZTZkNzNiNmQwMzRjOTg0Y2JmNzggbGVnYWN5LXRydW5rCis5ODIzIDA4MDk2OWRiZmM3YzUxODkwNWYwNzBjMGQyY2JlNjk3YjgzZDk3MWIgbGVnYWN5LXRydW5rCis5ODI0IDVhOTI1NmI4YzMzODJhM2ViODgzYmU5YTI4NGRlMzU1ZTI2MTA4NGQgbGVnYWN5LXRydW5rCis5ODI1IGQ3NmE0ZWZhMWY1MWRmOTQ1MDY0Mzg3YjlmZTg2MWE1ZWNhY2YzMTkgbGVnYWN5LXRydW5rCis5ODI2IDdiYTljZjRlMGM0MDQwNGRjYTMyMjMxODBhZjI5YTEyZDQxMjE5ZjAgbGVnYWN5LXRydW5rCis5ODI3IDJiZDVmYmQ2MDg3MDk5YTg1NGNjNDliYTk5M2JkYmI3YWM3YTY4NWIgbGVnYWN5LXRydW5rCis5ODI4IDRmZjVjMTQ5OGRjOGRiOWM2ZjhmZDgxMGQ2YTFiZmM5OTA1YWRiNWUgbGVnYWN5LXRydW5rCis5ODI5IDFiYWNhNWQyYmE1N2E0ZTViMGNiMmM2YTc5YThhOGQ4MjY2YWExOTAgbGVnYWN5LXRydW5rCis5ODMwIDBkMzFjN2Q5Njk3ZDdjNWVjNzliN2E2M2UwNDBlZWE2ODI2NzBkMjAgbGVnYWN5LXRydW5rCis5ODMxIGE0ZDdiYmZmOTVhNGI1ZjU2NDVlMWQ1OGQ4MjEzYjNjNTk3NWI2ZjIgbGVnYWN5LXRydW5rCis5ODMyIGU0MzY3ZDIwNmE1NWY3NjMwMmIzZmIwNGEzYTJkOTFlODU4MTQzNTMgbGVnYWN5LXRydW5rCis5ODMzIGIyODVmYmMyNjQ2YTQ5ODZhNWM1ZWE5M2UxZjlkMTVkODAzY2VhMDEgbGVnYWN5LXRydW5rCis5ODM0IGM2MzI1MDI5ZjdkYzg4YzZkZmViZTJiY2E0MGM1OTMxMjUzNDM2MzMgbGVnYWN5LXRydW5rCis5ODM1IDNlMjdmOWZjNzVhMjkwZjUxZmEyMjc1Y2MxZmY0MGZlOWEwOGZmYjEgbGVnYWN5LXRydW5rCis5ODM2IDE0MjFhY2VhZTM0NjUwNDVhNTc4N2RlNzUxMTE3OGY3YWI3OGQ1ZDQgbGVnYWN5LXRydW5rCis5ODM3IGQ3MDA4NmIwOGEwZmFmMDFhNjg5Yzk4YzExNjJiOTAxZTFmMGI3MDAgbGVnYWN5LXRydW5rCis5ODM4IDJhMDcyNThiMWY0ZTA4NmNmN2IzMTliNjExNDU1ZDA0ZmRmMGQ3OWIgbGVnYWN5LXRydW5rCis5ODM5IDYyMTQ0MGJiOThiOWMyNjA4OGM5OGMxMzEzNTM5ZDdlYjgzNWUxMzMgbGVnYWN5LXRydW5rCis5ODQwIDg1ZmYyMDQ2ZTM3ZjgxY2Q4NGUwMDEwYWVhMDkxODU5YTJjYzM0OTIgbGVnYWN5LXRydW5rCis5ODQxIGY0YTQ3MjNiOTU1MzJhYjkwNGFmNjYwMzg0YmM3MDQ4MThlZjI4MjIgbGVnYWN5LXRydW5rCis5ODQyIGYxYzg4ZDJkMTI1YmZkNDMwNmRkMDY1OGNmZmI4OTlkNDUwMzQ5NmIgbGVnYWN5LXRydW5rCis5ODQzIDE4N2I4OTY3NWRkYWU0MGM0MDUwNmI4NjczNTQ5ZWI3MTk0OWEzYTcgbGVnYWN5LXRydW5rCis5ODQ0IDcxN2MzZGFjYTA4ZTk1MzkzNzg4OTk4MmQ5MmMxNWFiNWRmNjFmYjcgbGVnYWN5LXRydW5rCis5ODQ1IDBjNzljYWZlYzRiYzU1MDhjNmU2ZTMwNzIxZDdiMjI5NGI1NjYwNjQgbGVnYWN5LXRydW5rCis5ODQ2IDIxNjU3YmIwYmUzNWI0YzcxZGNjODM0NDlmMmYzNmQyM2EyZWJjMGIgbGVnYWN5LXRydW5rCis5ODQ3IGZlZDNjZjcyNjgzZGMxNzQ3ZWMzYzJjNGI5NjE1NzYyMDU0NjU3YmMgbGVnYWN5LXRydW5rCis5ODQ4IDFmNDYyNWZlNjZlMmNhOGNlMGJhOGJmMjM5NGQyNjcwNTE3YzYxMTkgbGVnYWN5LXRydW5rCis5ODQ5IGY1YTE4OWFmYmNmOTk0ZGQ5YTE0NWRiOGYyNDA1OGNjZDFiMjE3MGQgbGVnYWN5LXRydW5rCis5ODUwIDFlNjZjNGUzMWQxNTBhZmQ4YjBiOWU1YmYyMmU1NmU5ZGJmMWE3YzEgbGVnYWN5LXRydW5rCis5ODUxIDg5NTU5ZWU4NWU1NDBkMmVlNGYwODVlNmE5YWJiZmMwOWRhMmJmMjcgbGVnYWN5LXRydW5rCis5ODUyIDhkMTFiMzY3MWU1ZDYxODdkOTM3ZTY4ODM4Yjg1YmM1ZDEyN2ZmZmIgbGVnYWN5LXRydW5rCis5ODUzIDAwMzM4YTgxM2RjYjhiYmUxYzI3ZjU5NDRlYWU0Njk5NDJiN2QwYjMgbGVnYWN5LXRydW5rCis5ODU0IGZjNmJlN2FlMDEyZjQ0Y2Q4ZDI0MDc1MmQ2ODJlOWZhYjE4MjI5ZjIgbGVnYWN5LXRydW5rCis5ODU1IGY3OGFmNWJjNzhlZGRlNjZiODM3NWVkNjc2MDIzMmUxNDUyZTU2ZGIgbGVnYWN5LXRydW5rCis5ODU2IDBlMGU4OGY4ZTFhZDUxZmFmZDM2MWIwZDQ5Y2RiOGU2NDBkZWY5MmEgbGVnYWN5LXRydW5rCis5ODU3IGU2M2YyYWRmYTdjYzg0NWU5OTE5MDJkOWM1MTRiMjlkNDNlMTIwNjMgbGVnYWN5LXRydW5rCis5ODU4IDYyYWM1N2RlN2FkYmU0NmNkZThlZjA4NTk2NmNlZjJhY2ViMGU5ZDAgbGVnYWN5LXRydW5rCis5ODU5IDEwODQwYzM3MzdhN2RkMTA5M2QyYWI4NjAwNDNmZTI4OTU4NzEwNjggbGVnYWN5LXRydW5rCis5ODYwIDY5YWRkNGQ3NzM2ZjEwNjU2OTAxNGVjZTk5ODcyZjRlNDQ2YjA2MTcgbGVnYWN5LXRydW5rCis5ODYxIGY4YTc3MjI0ZWJjYWY1MTM0YmZjYzFmOTM4Yzk1NzY4NDIxM2Y5YmMgbGVnYWN5LXRydW5rCis5ODYyIGI1OGIyZWU2NWY3NWY1MTkyYTNkOTBmNDA4NWFmNzRiYjE1N2MwYjggbGVnYWN5LXRydW5rCis5ODYzIDZkZDY1MWNhZjllMDY2ZTNlYzkxZTg4ZWRmZDZjNzM3ODA3ZTk4OTIgbGVnYWN5LXRydW5rCis5ODY0IGY0MDQwZjNiZGNjNzM3YjY2NWY5YzI5YmEwYTZkNTIzZmVjNzY0NzUgbGVnYWN5LXRydW5rCis5ODY1IDQ2MTE5ZDFlOTQxM2Y3YTBjY2U3OGZlZmRkMjU1MmI4ZGU5MGIyMTMgbGVnYWN5LXRydW5rCis5ODY2IGVkYzBkMDIxZTQyNzZkZmI1ZjdlZmYyOWNmNTgyNTlhY2Q0MWY1MDcgbGVnYWN5LXRydW5rCis5ODY3IDU0M2IyYjRhZjUzMjU5MTE3NjQxZDRjNDFlMTZjNWYxNzcxY2IxZmMgbGVnYWN5LXRydW5rCis5ODY4IDIyMzQzMzAzOGE0N2U3ODQ4NThmNDRhY2Q4MWUyOTYwZTA3ZWRiOTAgbGVnYWN5LXRydW5rCis5ODY5IGI2NGE4Y2VjOGQ3NWM1YWE5MzI1YTg3MWRhMjU3YmVjZmQ4YjlkYTkgbGVnYWN5LXRydW5rCis5ODcwIDAzMzNlNGE5NTJmOTNkYmRjOGMzMWVjNWIxMmI5ZWMwNzMwODk1ODEgbGVnYWN5LXRydW5rCis5ODcxIDAyOGY3MGQ1MDhjMGI2MTVmNjJmODM0MDg2NTBiNTZhNGEwNDgxMDAgbGVnYWN5LXRydW5rCis5ODcyIDc2N2JmODAwNGNmZmRmZWQyMjM1YzA0ZjczZjIyNDExYTg5Y2JjM2UgbGVnYWN5LXRydW5rCis5ODczIDc4Njg3NWM0YzYyYzUwZDdjMWUwNDEwNzgwZDMwNWRkZTg5ZTE3OTEgbGVnYWN5LXRydW5rCis5ODc0IGZiYzc1NTM1ZWE5M2NiM2YyYjU0ODZiMTBiMzNkNDY1YjhjNTZmY2EgbGVnYWN5LXRydW5rCis5ODc1IDQ1ZDY1YmM4YTU1MGYzMzc5YWVkYjkzMTU1ZmE3MjNmZTgzMmMzYmMgbGVnYWN5LXRydW5rCis5ODc2IDdhZmMxNWYwOGQ4MmNhYzM3MjM5YzUwMWVkMTJmYTg5NWNkNTMyODkgbGVnYWN5LXRydW5rCis5ODc3IGI4ZDc4NjUwZjhkZjFkNWJjNWE3MWM3YTJmNDcyNmYyZmYyMzc2NTQgbGVnYWN5LXRydW5rCis5ODc4IDY4NWM1MTBlMTRjZWViNWQ0ZTJmYzY3ZTQyNGU0MWFjMWU3NjZlMjggbGVnYWN5LXRydW5rCis5ODc5IDhjMDFjZmVlMTRiYTE5MjY3YjFhMmIwYzMyN2RlNjlhMzM5OTQ5MjUgbGVnYWN5LXRydW5rCis5ODgwIGM3NDU0Y2E3ZDNhY2MxNDNlMDJhMGI2ZjliZWUwNTIwMDYwYjlhZjIgbGVnYWN5LXRydW5rCis5ODgxIDE4NWMxZDQ3Y2U3YTA4NzQ5YWM3M2E5ODhjZjY3MTFlMzM4ZjAyMjkgbGVnYWN5LXRydW5rCis5ODgyIDNhNzdiY2EyMjZiOTM3N2ZmMmE4ZGEyMzM3NDViYWM5NDAwYmU4OTcgbGVnYWN5LXRydW5rCis5ODgzIGM1MWY3YjZkMjU1NmU0Njk1MDk4ZGUyZjdjZTdhZWM4MTk4ZGVlMGMgbGVnYWN5LXRydW5rCis5ODg0IDNhNDlmNTg4NmFjYWViMDllNjNiYjg0ZGZiZDkxYzhkMzJhMWZkN2MgbGVnYWN5LXRydW5rCis5ODg1IDJjNTQ5MDE0NzFmNWQ5MDRkMGJjYWY2YjM4NDVkMmFkMzAwYjk3ZTQgbGVnYWN5LXRydW5rCis5ODg2IGQ4OGJmNzY3MTQ1ODI1YWI0YzRhNmRiOWQwYzhmZGViN2FiZjU5MzEgbGVnYWN5LXRydW5rCis5ODg3IGRmYTI0Nzc2NDMyMzcwMjQ1OGFiMDk5OWYxNmY2Y2I2NjMyNGNjMTggbGVnYWN5LXRydW5rCis5ODg4IGQ3NTg4NDFhNzY2MWJjN2YzYzgwOGNiZTczMTQwYzQ3M2ZiOTViOTEgbGVnYWN5LXRydW5rCis5ODg5IGFkODkxZjZhMTllZWJhNGQzMjUxODcyMGQ3OWM1ODQyMjdlZTY0ZmMgbGVnYWN5LXRydW5rCis5ODkwIDI5N2JlYTIzM2UwMzJmYmRmNzkzN2FiNmQ4NDkzNDE2N2VkYjA4NzYgbGVnYWN5LXRydW5rCis5ODkxIGRlZGNlOWI2ODc0MjQwNTE4ODQwMjcwZjc4ZDkyNDAwYTFhYmVkOTMgbGVnYWN5LXRydW5rCis5ODkyIDY1ODQ4YTdjNzdiOTgyNTMxYTZlN2RjOTcwZjExYmY2OWI5ZTU5NTggbGVnYWN5LXRydW5rCis5ODkzIGExNDM1YzdkMzM5YjdmYzIxMzc2M2IzYmNlMTBmNDYxOGMyNWQwNGQgbGVnYWN5LXRydW5rCis5ODk0IDEzZjI5YjYyYTIwOTUzOGZkNTYyOGFjMzY2NDBlYTQyNjc5MzMzY2IgbGVnYWN5LXRydW5rCis5ODk1IDYyNTVkYzg2MWZjZjEzNTNmZTJhZDI2MjU2OGMxYThhZDJjYjA2NDYgbGVnYWN5LXRydW5rCis5ODk2IGIxZjE5NWM5N2VmOTlhNGZjNmYyNDllZWQxYTZjZDc4NDVjNGFhMzAgbGVnYWN5LXRydW5rCis5ODk3IDdjYTJjM2Q4NzY2MjA2YWUyNWY1NDc4YjQwMzljMmZjNTYxZDUwNjMgbGVnYWN5LXRydW5rCis5ODk4IDNkOWY1MTA1MGFiY2E0NWI3MmU5Njc0ZDc2Mjc0OTRhYzY5YzBiZDQgbGVnYWN5LXRydW5rCis5ODk5IDQzOTM4OTc4NTJiMjQ0ODZiMjM5MjFkMGQ0YzE5NTQyM2QyNDllMmYgbGVnYWN5LXRydW5rCis5OTAwIDJkNTA4ODIyZTdmNjg4NWE4M2UzOTNlOGYxYWRhYTVjNjU5YjY5ODYgbGVnYWN5LXRydW5rCis5OTAxIDZlNzNmNDE2OGIwNjJlY2E1Zjc3YTA3YjU1OGYyM2ExNzMxMzA5OTEgbGVnYWN5LXRydW5rCis5OTAyIDExZTkzMzdjZGEzZDE0N2VlNmQ0ZTAyYTdkZDJkNjU4M2UyYzZiMzggbGVnYWN5LXRydW5rCis5OTAzIDI5YmRiZTAzOWUwNWVjODVhZDc5NDViMDJmNmNkNDIxMjU1ODUyYWMgbGVnYWN5LXRydW5rCis5OTA0IGIzZTNkYWU5YjYxMjI0NDJkMTQ2MjIxYjA0YjMzMjlhZWY1ZTkxNjkgbGVnYWN5LXRydW5rCis5OTA1IDVhZjdkM2RhODdjZjZhY2I3OTIyNjAyYzgwNzJmYTI5YTJkZjJlNzIgbGVnYWN5LXRydW5rCis5OTA2IDNmMjI4NDM0NGE0MWJhMjRmNzVkMDU2ZmQwM2NjODg2Zjg2MWE1MjIgbGVnYWN5LXRydW5rCis5OTA3IDgzZTc3NTllNzI5Nzg2OWRkZGExY2QxNzc0MmQxZTU2NDVjZjZlYjQgbGVnYWN5LXRydW5rCis5OTA4IDdkZjZmMDQ1MzQ2OTE3N2NkMDhmY2E1OGE3ZWIyOGE5MDMwMDAyZDEgbGVnYWN5LXRydW5rCis5OTA5IGE5ZmJmMjFhYjdjZTljZTc5MzZlOGEzY2M1OTk0NWNkZTA4NGZiOGYgbGVnYWN5LXRydW5rCis5OTEwIDM2NTUyNmM0Y2Y4YmIzMjM4NDY2NTk0ZDA3MzIzZGNlMjA1ODJlYWYgbGVnYWN5LXRydW5rCis5OTExIDRmNDVkY2NkYTk2YjI4NzQ3ZTMzZDQxZTE1NGQ1YmQxY2E0YjQzYjUgbGVnYWN5LXRydW5rCis5OTEyIDNkZTBjYjgyZTYxYWU2NTFiZTA4MDhlNjIwMTg5MDk1ZWRlY2Q3NjkgbGVnYWN5LXRydW5rCis5OTEzIGNiYWNkMWJlNzI3NWMwMGYzYzYzYjk1ZWI1YTM4NGNmMmViMDAwYjIgbGVnYWN5LXRydW5rCis5OTE0IGQxNDY1YjVjMGEwODk0ZTE1NTExZGMxN2JhYmMzYjQxNzJmNDIwZWUgbGVnYWN5LXRydW5rCis5OTE1IDM3NDBmZjJlZTA1M2NhOTNkODkwNWJlYzU1MGFhNDY2YjlhMjg5ZTMgbGVnYWN5LXRydW5rCis5OTE2IGNkMTE2OTBjYjE0YjA3MmU3MGYyNWU4YzNmZGE3NDhhMTFiOWQxODEgbGVnYWN5LXRydW5rCis5OTE3IGE2NGM4OWRhZTE4ZDYwZTU0YTgyZWVhZGUzMjg2YTc0ZjZiMzA0MTggbGVnYWN5LXRydW5rCis5OTE4IDU5MGY2MjU0ZjlhOWFlYWE0MjAyM2VkYjU2OGJlOGViMDcyNWRhN2EgbGVnYWN5LXRydW5rCis5OTE5IGE4MDU5Yjk2YmMzNTVhYThiNjJmZTE2NTM3Y2ZjMjBlOTM0Y2QzMTYgbGVnYWN5LXRydW5rCis5OTIwIDA1MTg5ZjdjZGJlYjE4NDExOGQ2MTY4YWQzMzFmOTUwYzFhOWYwNjggbGVnYWN5LXRydW5rCis5OTIxIDk4MTViMThiMjNlM2I2ODVhOWFmMjM1NDJiNTNjYjk4ZDFiMzY3OTEgbGVnYWN5LXRydW5rCis5OTIyIDM3MjBlOTk2ZTU1MTI3MzkxNDBkYmEyOThjOWQxY2IyNTUwMzkyNzMgbGVnYWN5LXRydW5rCis5OTIzIDE2Njg0OTkyMDZkY2ZiYjU4MmU3ZTUyYTYzNDhhNTRkNDBmNTQzOWEgbGVnYWN5LXRydW5rCis5OTI0IDI5MzNmYjM0ZjMzM2ZkNTJjMTczOTIwZmE5NGYwNTQwZTE4OTBiNjIgbGVnYWN5LXRydW5rCis5OTI1IDgyNmM3MTgwMTkxMWNiMGM2Mzk3ZDg5NjRhZDY2MTQ4ZmY4ZTQ2MzggbGVnYWN5LXRydW5rCis5OTI2IGM5YjY4NTBjNDMzNmE0Y2RhZmEyYTNmNTAwMmVkZWJhYzRiNGYxNzkgbGVnYWN5LXRydW5rCis5OTI3IDVlZGNlYjhmMWZhYjdhYzY4MGIxOWE5Y2Q0OWJkNTViYzMwMmYyZjIgbGVnYWN5LXRydW5rCis5OTI4IDBkNzY3NjE0Yzk0MWViMTBmNWVjMjkzMmM0M2FjNzFiYTlhZGJhMTkgbGVnYWN5LXRydW5rCis5OTI5IDBhOTU0MWE4NjY4OTA5NGRlNDEzZjRlYzZjMDBjZGUyZDhlYjU5ZjMgbGVnYWN5LXRydW5rCis5OTMwIDIzY2MzNDJlZTE1MGJhODQwMWZiYzNjMzliYWZlMzQwYTM1YTAwY2EgbGVnYWN5LXRydW5rCis5OTMxIDNjMzhjOGFkNTYyM2ZiNDBkNGFmZGEyNjEzMzI1YzM3N2JlOWIwMDQgbGVnYWN5LXRydW5rCis5OTMyIDFiNGEyZTM4YWI1ZWM2N2FlM2U1MTkwZTdmOGVkMGIyNTM3Njg2MzAgbGVnYWN5LXRydW5rCis5OTMzIDQ4MzI4NmUyMTllMWY2NDQ0NjNiNGQyYmQ3YjJmMTI2YTVmMTFhZTQgbGVnYWN5LXRydW5rCis5OTM0IGJkMDVhYjQ3MzFmNzZiM2NlNDRkNDMwYzUzZTc3MGQ0YjY5NDY4ODggbGVnYWN5LXRydW5rCis5OTM1IDFhOWIwOWIzY2FmOGFlNWUyODViNzA0ZDJkOWFiN2I0YTRkYWFlYjQgbGVnYWN5LXRydW5rCis5OTM2IGVjOTVlOGRhZTUwNDE0MjVhZTU3Y2E1N2MxOTZmMGU0ZTQ0ODBlNzkgbGVnYWN5LXRydW5rCis5OTM3IDRhYTQ3MTBkODk0YzgyNjhmNDJlNmE0MDgxNjk1NmI2ZDViNmNkNTkgbGVnYWN5LXRydW5rCis5OTM4IGJkODE1MzhkNGRkZmQ0NzYxN2ZkYjQ1YmEzOTg1OGE5ZmRhNjRjZjIgbGVnYWN5LXRydW5rCis5OTM5IDAzMWRlODU0MGE3ZWEwNWRiNTRkMDFmYWNmNTJmOGY0MjNmY2UwY2UgbGVnYWN5LXRydW5rCis5OTQwIDk1NDFiOWIwOTM3ZGRmMTRjMGI2NDhiMWNiZWMyMzA0NzJiYTVmNWYgbGVnYWN5LXRydW5rCis5OTQxIDgyOTQ3YTE5MjZmNzgyZGVmYmUwY2Q3NTM5N2M1NzYwOTllNTZjMTMgbGVnYWN5LXRydW5rCis5OTQyIDAyMTIzN2JhNTAwNzQyNWUwMjBlN2NlOTY4ZDg5MDM5NTU4NjBhMmMgbGVnYWN5LXRydW5rCis5OTQzIDdiMmZkNDg2ZWZlZTFjZDhmZGUyMGFmY2MxNmI4ODM3NWJkNjgwMjMgbGVnYWN5LXRydW5rCis5OTQ0IGNiMWE1NzdjMDIzOWNiYjBkOTY4NzliYzA0ZmUyOWUzNTZmMzBiZTEgbGVnYWN5LXRydW5rCis5OTQ1IDAzNjBlM2UzMGEyZTQwYzQ5MjJmNzhkNWQ3MTgxODJmYTU1OTk3ZjEgbGVnYWN5LXRydW5rCis5OTQ2IDE0OWE1NDc5ODg5NjFiN2FjZTYyOGFlZWMxNmVlM2FiZGNjNjE2ZjUgbGVnYWN5LXRydW5rCis5OTQ3IGFkM2U0ZWIzNWRhNzcyMzkwYzUwYzAyOTM3ODZiODZmYzlhMDZlMTkgbGVnYWN5LXRydW5rCis5OTQ4IDZmODY5ZTVkMzNjY2JmNzYzNGI3YTBiZTVlYWE0MTJhZjgyZWZlMjYgbGVnYWN5LXRydW5rCis5OTQ5IDg4MWE1ZTY3MTRkY2I3MGE1Y2UwNzlmNTIxZmRiZTA3MWQzMGYwZTggbGVnYWN5LXRydW5rCis5OTUwIDZiYjUwNmFkOTY4NDhhYzJhMjhjZjUxNzBiN2Y1N2M5YmZkZmEyZmYgbGVnYWN5LXRydW5rCis5OTUxIDJjZjFjYWU5YjQ2ZWYzN2YwMmQ1Yzc4NjRkYzE4ODUwZDBhY2NiYmIgbGVnYWN5LXRydW5rCis5OTUyIDA3NmI4MmUwNDBhNWM5MzU0ZTRiODVkY2NiMjFlMjM5NTZjZGZmYWQgbGVnYWN5LXRydW5rCis5OTUzIDc4NGZlZjgzN2I1MmRjOGQ2MDE4MWRjYWY1MGM4YzAwMmZmMzQ3N2EgbGVnYWN5LXRydW5rCis5OTU0IGNhNjZhMjUzNmNkNTQ5YTU5N2Q5NmIxODI1NGUwM2Y0N2Y0OTQ5ODMgbGVnYWN5LXRydW5rCis5OTU1IGI5NDIxZTE3ZGRmNzYzMWQwN2ZkMjNmMGFmZDYxYWM1YjZjNGNmN2EgbGVnYWN5LXRydW5rCis5OTU2IDgwNzM5YjBiYzMwMjZjOTJhOGQyM2Q2YTRiYTgzZWY4ZjZkODk1NzEgbGVnYWN5LXRydW5rCis5OTU3IGJmZTU3ZWZhZDc1MWZhZGZiZTliMjY1Y2Y1NmUzODc2YjBkYjk2NTAgbGVnYWN5LXRydW5rCis5OTU4IDU1YzNmZDE4NTNjZWJiMmY0Y2U3YjlmYmEzYTA2ODM0NmM3ZjQ2OGUgbGVnYWN5LXRydW5rCis5OTU5IGNjYTM5ZDcxOWFiYTZlNWMwNDU5NmQzOTU0NjA3NTI4ZDBkMzI2MTUgbGVnYWN5LXRydW5rCis5OTYwIGYwMWZmMjZmYWNhZWI4NzM4MmEwMTQ1ZGE5ZmQ3ZWM2ZWEzOWFjYTkgbGVnYWN5LXRydW5rCis5OTYxIGJhNGEwMmMwZTkwYzc5MmFmYTdlMWE3YzkxZDMzNDVlNGMxMGI4MTMgbGVnYWN5LXRydW5rCis5OTYyIDU4MGY2YzkyMjcwYmI4NzAxNjlhMGFlZjg3N2VlNmY0YTNhNTViMjIgbGVnYWN5LXRydW5rCis5OTYzIDFkZmMxNWUzMTEzMDQzZDYwMDhlZmVlOGMyOWZhZGVmMWQ3MGM0NWIgbGVnYWN5LXRydW5rCis5OTY0IDRjYWUyZGUzMGI1N2ZjNWUwYmIzZDVjY2Q2ZmMzNzgzMTdkMzBlZTMgbGVnYWN5LXRydW5rCis5OTY1IDA1ZDBiNmZiZWE5YjVkYzY3Y2VlYWQzNjUyZmRjNDgyNjcyOTJjNGIgbGVnYWN5LXRydW5rCis5OTY2IDk4MzQ1YWExZDVmZWQzMTYzM2ZjODJlZWQxOWQ5Mjc5MjE0NjBiNzcgbGVnYWN5LXRydW5rCis5OTY3IDQyN2I4MWMyNDUyZmUxZDcyZmExMDBhNGI3MjUwYmQ0MGI0YjFiYWUgbGVnYWN5LXRydW5rCis5OTY4IDNkZmMzNzZlNmYxYThiZTRjZTlhMDEzMWZjOTUwZTZhOGE3MTRiMTIgbGVnYWN5LXRydW5rCis5OTY5IDdmMjg5OTdiMmMxMDZmY2UyM2JlZTJiYzFlZGYyNmZhMjM3ODk0ZTMgbGVnYWN5LXRydW5rCis5OTcwIDU0NDU2ZjA4ZWJhZDc1NTEyZDQzMWFlYTFhMThhZGNhNzFhNmVhYTkgbGVnYWN5LXRydW5rCis5OTcxIDY4NTdhY2JlMmU3NGIwMGFmODYwYWYyYmE4NzFmNTEyOTc1YjM5YWUgbGVnYWN5LXRydW5rCis5OTcyIGM0ZDU2ZmM2M2Q4ZjAzOGI0YWI0MTZjMTQ3OTliZTNiNmU1OGE2YTggbGVnYWN5LXRydW5rCis5OTczIDZiMDI2NjY3OWY5Njk1MjU4ZDdmYTQxMzljNzA5YTlmODY0NTdlMjQgbGVnYWN5LXRydW5rCis5OTc0IGVjNzk3NmQyZDVlOWU0MTNlMjE4ODkyZTk2ZDdlNzljMmFjODY4MTYgbGVnYWN5LXRydW5rCis5OTc1IDVlMzkwMDc4NDYwYWU4ZTQyYjNmOTVkMzY2ODdjMTM2NGY5Yjg3MWQgbGVnYWN5LXRydW5rCis5OTc2IDE5MDZhN2ZjNzUwOTRkNjgyNmEzZmNhNWIyY2IyYTVhODlkNjEzYWQgbGVnYWN5LXRydW5rCis5OTc3IGQ5NTkxYzliMmM1ZmE0ZDE1YTViZTkyNmE2MDQ5MjZiYmIyNzdmOTcgbGVnYWN5LXRydW5rCis5OTc4IDlkZTNjYWQ1MDkwNTBjMmFjNmM0NmJlYmI5MTNkYTNlMTI0OTQyMDMgbGVnYWN5LXRydW5rCis5OTc5IGQxN2RiM2ViZmJjMjA1ZGMxODU3NjRjMzI5NTgzZmEyMmM1NTI0ZDQgbGVnYWN5LXRydW5rCis5OTgwIGYyM2RiM2I2NWM4MzgxZmJlZDdlZDc0NDRmNjA2YmZkODlhOTU5OGEgbGVnYWN5LXRydW5rCis5OTgxIDc1NDU4NjAzOWMxMWIxZjljZmE0MTBmZDI3ZjI0MTkyZjFlNjQ2NmQgbGVnYWN5LXRydW5rCis5OTgyIDg5NGNmZmViODliYTUzNTE3ZDZhY2U2ZmE2YzA2Mjc3M2FmMjAyNDUgbGVnYWN5LXRydW5rCis5OTgzIGVmOTgwZTE3YjU5MzljYWJhZjYyMTgwNGE4MDM0Nzk4ZDIzNjFhNTYgbGVnYWN5LXRydW5rCis5OTg0IDY3YTJiOTZmMDE4OTczNDk0NmFkYzNlMDI1YzM3MDRlODYzNjgxNTQgbGVnYWN5LXRydW5rCis5OTg1IDUxMGU1MjQ0NjdjZTYyNzNkZWMyYmY0NDM4MDNjNjk4MTQ3NDEzNTEgbGVnYWN5LXRydW5rCis5OTg2IGVkYTBjYTEzOGIzZDg0YmE5MTE5NjMzOGQwZTVlYTllMGFjMmE0NDggbGVnYWN5LXRydW5rCis5OTg3IGI1ZDUyYzQxNWIxNWU5ZTRjZjBkZGY4YzVjNzgyNDcyN2UyNGQzYmEgbGVnYWN5LXRydW5rCis5OTg4IGVjNDczNWNlMTM2MDg0M2RjYzZlNzdhMzBmN2YzMDFkNzhiYTUwMzIgbGVnYWN5LXRydW5rCis5OTg5IDM1YTNjYzI0ZWYwNDMyN2E2YmE2ZGI2MGUwNDFhYzQ5ZWVhMDFkZTggbGVnYWN5LXRydW5rCis5OTkwIGUzZjM3YTI2MDJkNTA0OTA1YmI5MjU4ODFiNjM3NjM5NjgzNjk2Y2QgbGVnYWN5LXRydW5rCis5OTkxIDQ4ODhmNDQ4NDUwZjIzZGEwMmUyZDY4MjU1ZDY3OTI5YWNkYjRiYjggbGVnYWN5LXRydW5rCis5OTkyIDk3MGU5ZTA1OGI3NjFjNGM4NDdjMWI0NDdjZDIyZGZjYTAyOThmN2QgbGVnYWN5LXRydW5rCis5OTkzIGVjMGY5OWYxYTJmZGIwYWI5ZjY5ZDMwZjkwYjg0ZDQ0NGVjMDk4ZWYgbGVnYWN5LXRydW5rCis5OTk0IGI2MDQyNGE1NmY3NDRlNWVlNDJiZmQ0ZmUxOWFjMmNhNDEyNzNhMDIgbGVnYWN5LXRydW5rCis5OTk1IDgzYzJhNWE0NWE0MWIyZmFkYjkzOWEzYzNiNmEwZmRiMjUzNThjZmEgbGVnYWN5LXRydW5rCis5OTk2IDMxMmNhOWZkYWNmZjI3NWJlOTIwNzA0NDk2YTk1YzI1YjY2MmM2ZDAgbGVnYWN5LXRydW5rCis5OTk3IGNjZTg5OTRkNTJjZjBlOGE4MzAwNDMxZmU3Njk2ZTdkYjg4MmYyNzIgbGVnYWN5LXRydW5rCis5OTk4IGY5ZGEzNGY3MjY4YjUxYzg3MWYyZjE0M2RhODAwNjQyMmQ0YzM3OTUgbGVnYWN5LXRydW5rCis5OTk5IGZiYzg5MjI0MzQ3N2Y2Y2NiNmVhMjNhZTNiY2RlNTRhMDY0Zjk3OTcgbGVnYWN5LXRydW5rCisxMDAwMCBkYzM3NDcxMWM4NDhjZDY2MTM3ZTliNmE2ZTZlYjRjMTdjMDRmYWUxIGxlZ2FjeS10cnVuaworMTAwMDEgNWU0YzI4OTdlNjI1NzVlOWU0NjlhMGFmMDA1OWY3ZjdjZmRiNTZlNiBsZWdhY3ktdHJ1bmsKKzEwMDAyIGVlYWMzNmJmZTAxYWEzZjFmYzhkMWQxZmQ1ZmUwZWE4NzM4NDVkMDQgbGVnYWN5LXRydW5rCisxMDAwMyA4ODk5MjY5NmI5ZThkMTdkNTVhODRkZTMzMmI1OWI5YzdkN2Q1NzY4IGxlZ2FjeS10cnVuaworMTAwMDQgNjBlN2IwMDBmMjczODQ2MjNkYzE0N2Q1MmFhY2MzMzk5YmM1ZDM5YSBsZWdhY3ktdHJ1bmsKKzEwMDA1IDI2YTg3NzFhNGNmZDAwOWI5NmQ3M2E1OGViNTVlMDA3MmU4YzllYjQgbGVnYWN5LXRydW5rCisxMDAwNiAzY2FmMjM5N2M1MDgxNTUzYjMzY2ZiN2U5YmZiNWE5ZTJlOGU5MDllIGxlZ2FjeS10cnVuaworMTAwMDcgMDM0Mzk4NzM2ZTY0YzQxOGNiZDMzNzc4NzU1ZGZkYmRlMTFlNDU5ZSBsZWdhY3ktdHJ1bmsKKzEwMDA4IDg5MTEwNWRhYzliNDE4NzE0NDg4MTc5YmUyODE5ZWQxY2EzNWM0ZTIgbGVnYWN5LXRydW5rCisxMDAwOSBiNDY2MGFkN2RjNDFlYTE3NGY4OTU5NjNlZTUyODRhYzAzMmRjZjFmIGxlZ2FjeS10cnVuaworMTAwMTAgYmYyMzZmYmYxMWRhYWUzYTIyYzExNDY3ZTBjYjRiNzNhMjE2NDNiOSBsZWdhY3ktdHJ1bmsKKzEwMDExIGVhODE4NGJmZjEyZGE1YzBkMWVhNTRiYzgxNjIzNmI2MzcxM2IwZjAgbGVnYWN5LXRydW5rCisxMDAxMiBmOTFkNWEwMzM5YmYzYWEzOGVhOTA0ZjcyODU2NDc5NTQxOGFhZDhiIGxlZ2FjeS10cnVuaworMTAwMTMgMTNiNjBhYmRiNzBkMTllYTA2NmYyMjAzYzExNjNjZWU0YjczNjg1MSBsZWdhY3ktdHJ1bmsKKzEwMDE0IGVlZGFjNTBkNzc0NDNiMGJiZGNjZjljNmQ1Mjg3MjBmY2ZlMTFmYmQgbGVnYWN5LXRydW5rCisxMDAxNSAzZmY2YjNkM2M0ZDVlMmYzZjVkYjdiY2ZhOWY0MWIxZGM1NzAzNjI1IGxlZ2FjeS10cnVuaworMTAwMTYgMDFhOWY4NGEyNjljOWRhMGE5YmUwMWYwYWJjMjc4YWE2ZTQ5ZmQ0ZSBsZWdhY3ktdHJ1bmsKKzEwMDE3IDc4MzBlMWRlOTgxNzQ1N2ViMWZjNDJkYjc1M2JmM2JkOTBlOTQ2ZTcgbGVnYWN5LXRydW5rCisxMDAxOCA5ZGFlMGFiMzgzYTQ5OGUxYjU3MjY2ODQwMTg2OThhN2I3ZTlhNTc3IGxlZ2FjeS10cnVuaworMTAwMTkgYzlmNGFhMmM0NWVkZDY3ZmQwYzRjNDViNDQwZTNhYTQ4NDQxODUyZCBsZWdhY3ktdHJ1bmsKKzEwMDIwIGNhMTcwZDc2MWYwODZlMzA1YzhiNWRiNmM3MDc1NzFmMTIxZmIzMDQgbGVnYWN5LXRydW5rCisxMDAyMSA0OGY3YWM0NTJkOTljOTRiOTMzMDMxZDdiN2U5ZDk2YzRhNjk3ZDQxIGxlZ2FjeS10cnVuaworMTAwMjIgZDIwMmM4MmQzYzU3MTYyNmQzNmYxYzQ0MGY5YzVmNTFmYzFjOWYwYSBsZWdhY3ktdHJ1bmsKKzEwMDIzIGMwMTMxZmFlMDZlOWUwNzIxMWM4NDRhOTBkZWE0ZDcyZWM4NjE3ZWEgbGVnYWN5LXRydW5rCisxMDAyNCA2NDIxZWExZGUyODI4N2IyNGRkNjRjYzdiMjY0N2JmZmFjOTUzMWJjIGxlZ2FjeS10cnVuaworMTAwMjUgZDRkODRiNTRjNDRkODE4OWUyMDNhMTQwM2QzOGQ3ODk5ZDA5YmE0OCBsZWdhY3ktdHJ1bmsKKzEwMDI2IDdlYjE5YjFjZTg0ZDc0ZjJlMmM5NTVhNjMwYzY5YTU5N2FjYzQ4ZDUgbGVnYWN5LXRydW5rCisxMDAyNyA0YjExY2I5NjEwNDZhMGM0ZDg3MmQ1ZjYyY2NhNTMwOTliNDMxNGY3IGxlZ2FjeS10cnVuaworMTAwMjggNjk4NjA4MjFjYTFkNWRhNjY1MWRkNDY2ZjliMjRmMzY3ZGRjYWU1NSBsZWdhY3ktdHJ1bmsKKzEwMDI5IGQzNGZlMzBiOTVlODU2ODIxMzg5M2NkZjA3Y2YzYzAzOWU4ZDM4N2IgbGVnYWN5LXRydW5rCisxMDAzMCBjOGU1ZjcwNDYyM2Q4OTAxMWY4NmZmZmMyOTRiMDllMDU0MDU1MjMxIGxlZ2FjeS10cnVuaworMTAwMzEgODJlYjhiM2RmNmY4MjY1NDNiYmY5NjFmNzBlNTI1NGMxZThjMWViMCBsZWdhY3ktdHJ1bmsKKzEwMDMyIDVkZjY1NmNkMTBhZGUxZDM1YjU3NmMzNjNhZDJjMTI4MTJjYTkwODggbGVnYWN5LXRydW5rCisxMDAzMyA1YWVjYzI1MDllNDZkOWY0YmJjODRlYWIwYTdlYzEyYzI0OGMxOTMwIGxlZ2FjeS10cnVuaworMTAwMzQgNzMzOTUwODA0YTBiNDJhZmZhMGJmYjdmYjNiNzBlOGFkNjE2YTI2NyBsZWdhY3ktdHJ1bmsKKzEwMDM1IDY1OTgzODRkNWY0Y2JlZDljNmZkYTAyZTQyNDI3NjdhZDVjODYwMjMgbGVnYWN5LXRydW5rCisxMDAzNiAyMmRlNTExNjgzMmZkNjVlMTliOTU3MmMzYjE3NGU4ZmNhOGIyZjIwIGxlZ2FjeS10cnVuaworMTAwMzcgYzAyYWYxZTcxM2VkYzhhNDU2NDczYmVhZTE0NDcyMWJlNWM3OTUwMyBsZWdhY3ktdHJ1bmsKKzEwMDM4IGE0NDdiMjY4Yzc3MzJiZDkwODY4MmMxMTUyN2ZkMDYwNTE5MDFhZjIgbGVnYWN5LXRydW5rCisxMDAzOSBjYzdlMTI2ZjAwOWQzODlkODNiMjU0ZTRkOTNhMDkxN2YwYzJkOGZiIGxlZ2FjeS10cnVuaworMTAwNDAgNDNmNDdiOGUzOThkYTUzZGE5OWE4NjRmYjMxZWQ5MmY3MDQ5NTIwYiBsZWdhY3ktdHJ1bmsKKzEwMDQxIDU5YjFhYjAxYzI4NmVmMzE3YTU4ZTY3ZWZiMjlhYzUzNjhhMWJkZmQgbGVnYWN5LXRydW5rCisxMDA0MiAxYTlmOWE1ZGYwNGIxNmYwYmM1N2VlMWU0YjRlMjUwNTEzNDZlZGI2IGxlZ2FjeS10cnVuaworMTAwNDMgYmExMGM0Mjk5OWI4YmNhMjY5Y2IyMGFhZTZkZmIxNmYxMjBhOTI3NiBsZWdhY3ktdHJ1bmsKKzEwMDQ0IDJmZjJlNDU3YWI4N2FjN2FhZTJiYjliMDczMzNiM2JmMjAxYTI3NzAgbGVnYWN5LXRydW5rCisxMDA0NSAwMGFlZTQ3NDNkN2JhNjllYWE5ZTg1MjA5ODAyNDA0NjRhOGRmZjg5IGxlZ2FjeS10cnVuaworMTAwNDYgZTE1ZTg1ZDk4N2FmODllNjY2MGE5YmY5ZTIwYTUzZThiNjg5ZmQ3MyBsZWdhY3ktdHJ1bmsKKzEwMDQ3IGI5Y2JmMTc0YzcyMzg5MjA4NjdjZmNmYTU4MmU0Y2Q2ZDliNDExYjEgbGVnYWN5LXRydW5rCisxMDA0OCA4YWVlNTBhOWExYjFmYTRjNzRjOTVmMTdmNDhiOGZlZjExNjc1MTcxIGxlZ2FjeS10cnVuaworMTAwNDkgOTY4YWFiYTI4MWM1M2YwMmIzZjQ1YzE5MTQ5NWZlOWRmZmFhYmZiOCBsZWdhY3ktdHJ1bmsKKzEwMDUwIGM5ZjQxNzEyNGUwZjc2NjU0Yjg4YTZmMjRiOGRlYzM2NTdmYzg2N2UgbGVnYWN5LXRydW5rCisxMDA1MSBhYTBlODE5OWNjMzE4M2IzZDg4MTc3ODZhN2VmOTdkZDg3YTQyZmVjIGxlZ2FjeS10cnVuaworMTAwNTIgN2U3ZDZiMWI4YTRiMmJkZDZhNjQ3MDViMDNhNmFmZTljMGFmMTk2MiBsZWdhY3ktdHJ1bmsKKzEwMDUzIGU2NzExNDVhYjUwN2UxZDY4MTc1MmE2NjM4Mzk4NDc5MjA4MzRhMzEgbGVnYWN5LXRydW5rCisxMDA1NCAyYTA1NmQxOTNkZDM3YTdiZDQ5MTUwMjIzNzMyZTQ1OTAxZDE4MWI3IGxlZ2FjeS10cnVuaworMTAwNTUgODI3YWVhNWY1NjIxOTBkMDUwMTM1OGUyZmI0MjhkMzQzNTAzNDYyOSBsZWdhY3ktdHJ1bmsKKzEwMDU2IDIwNDNjNjlmZjFkNDU1ZDgzOTJiYzY0ZjViYjY4MWVlZjIzMWU1MzQgbGVnYWN5LXRydW5rCisxMDA1NyA0MmEyMTgwNmIzZDJmZWU1YWM1ZjQ2YWM5NTY4YTc5Y2ZmNGIyNGI2IGxlZ2FjeS10cnVuaworMTAwNTggZDVmODk1NjdiNWE5ZjY3ZDBiMzIzMDVhMzE3NTJjN2JlMzYxZDJhNSBsZWdhY3ktdHJ1bmsKKzEwMDU5IDBmNTY1YzdmZTRiYmZlOWI0N2NlOWE1ZDU5MjE1NzFiMmY2ODM3NjAgbGVnYWN5LXRydW5rCisxMDA2MCAwYTRiNDUzMzhhYzI4NTI1NmRkYmJlMjMyMzVmOWE0ZTAyMmM1NmVmIGxlZ2FjeS10cnVuaworMTAwNjEgOWRlMGQ1MDQ5Y2ExYjY1Zjc5OGE0NjIxOGU4YmQ0ZjZiNzFhYTMxOSBsZWdhY3ktdHJ1bmsKKzEwMDYyIGQyYjVkOTMyNmYwOTE1NDcwZjZmYmFkOThkYmQyOThjMjZmY2MxZTAgbGVnYWN5LXRydW5rCisxMDA2MyAyZWYwYWNhOTZmMmQzM2E1NWZmNGFlNzVjYmIzMzcyOTc0ZjdjODhmIGxlZ2FjeS10cnVuaworMTAwNjQgMDc2NWI5NThjYzY3YTE5YmUyYWE4Zjc0NmU4ZDZiYTBiZGU1ZmFiYSBsZWdhY3ktdHJ1bmsKKzEwMDY1IGZjNzYwYzYyNjk1MGRlOTc3ODZiNTI3NjM0ZGExODYzN2VkYTQzODkgbGVnYWN5LXRydW5rCisxMDA2NiA0YjYzNGYwMjQzZjk3ZDAzMmMxMGJiZTQ2Y2FkMjNlNjM4MmIyNzBjIGxlZ2FjeS10cnVuaworMTAwNjcgYmQwODg2ZTc4ZjNiN2UyYjRlMTViN2M4Y2NlMzNmYzg2MmYzNDg4OCBsZWdhY3ktdHJ1bmsKKzEwMDY4IGI2ZDZhODM0ZGI0OWFmMTVlNDc2MjcyZGE2ZmM0YjllNzUxMWM4YmUgbGVnYWN5LXRydW5rCisxMDA2OSAyZjMyMzIzODExYzUzNTdjYTljYzZlOGI2N2Y1MDE0ZDljZDc1ZTE4IGxlZ2FjeS10cnVuaworMTAwNzAgMDk0NDA2MDZhYWM1ODhmNDljNjljMDNiYWJlOGQ2N2Y0NGJmMDkxNSBsZWdhY3ktdHJ1bmsKKzEwMDcxIGExOTAyOWNkNzZjNTE1OWVmNTAwYWFjZWM3NDVmMDQ4ZGI3YTlhM2YgbGVnYWN5LXRydW5rCisxMDA3MiA5OWNlZmFhOWM1MDk3MmM1YjNiMjVhNjg1MmI3MDczYThjNTdkMWIwIGxlZ2FjeS10cnVuaworMTAwNzMgYzQ1NmViZTM1MzM3NGRlMWU1NTdmYjUwYWEzMWI3NDRkODdiOTIxYiBsZWdhY3ktdHJ1bmsKKzEwMDc0IGFhYjc2MjIwNTA1ZWZkYzY5MmRmNGEzOTI5ZWQ1YmVhNGMwODAyMmMgbGVnYWN5LXRydW5rCisxMDA3NSAzOWI4NGEzZGNlYWE1MDM0MGIxMDBlY2RkN2FkNzMzZGFlMzViNDhmIGxlZ2FjeS10cnVuaworMTAwNzYgNzJjYWI5NWQzNWU1NzA5ZWU5OTA2YzE0ODVmN2M0MzJmYTY0ZTg1NCBsZWdhY3ktdHJ1bmsKKzEwMDc3IDA5NDE1NjgwYmQ0ZjZjNDgxNDJiOWQwMWFjMjljNTEyNThlYjRjMTkgbGVnYWN5LXRydW5rCisxMDA3OCA2YTQ1MzU5NWU2MTllOTgwNzY1ZTdmN2M3ODQzNGE2OTZiNTg4NzUzIGxlZ2FjeS10cnVuaworMTAwNzkgZWNhZDIzNGM4N2U0NGQ4ZWFjMGMwNDI3OGE3M2FlNjlmYjkxZDQ3NSBsZWdhY3ktdHJ1bmsKKzEwMDgwIDdmNGE1MDNjZTU4YjI2ZjhhYzJiOWYzMjU5YThhMWRkYzg1MTY0YzYgbGVnYWN5LXRydW5rCisxMDA4MSBjMGJmOWI2MGMyOTgwYjIzOGI0ZWE4YjcxZTkyMDJmYmUyMWE5MGM2IGxlZ2FjeS10cnVuaworMTAwODIgYTYzZDU1M2ViNjU4MjkyYjlkMDQ4Y2I5MWRiYTkzZDdiYjYyOWU0MCBsZWdhY3ktdHJ1bmsKKzEwMDgzIDU5NDA3ZDQ0OGI2YWNkOTIwZTNkMWEzNzA0MjhmZWFmMGZiNTA4ZDggbGVnYWN5LXRydW5rCisxMDA4NCBjMGMwMmU5MjY5ZjNjYzk1NjkzNGQwMjc2ZTA4YmNmN2RhZWIwYmVkIGxlZ2FjeS10cnVuaworMTAwODUgMDBhZDMwOWJkNTA4MTBkOGJkZjlmOTBkMTgyZDgxNDAyOWFmY2NjZiBsZWdhY3ktdHJ1bmsKKzEwMDg2IDg5M2EzMjA5NTIyMjU0MWZkZjY5MThjZWQ5YjVmM2UyZGQzMGM5ZGQgbGVnYWN5LXRydW5rCisxMDA4NyBhZmJiZmU4ZjU0OTY3MDRhN2JhMTk2ZDVlYjcwODZhOTE4YzQ3ZmQ4IGxlZ2FjeS10cnVuaworMTAwODggNzBiY2JjZGRhNzRmNjFhNmYzNTE1ZTgyYTQwZWMzMjc3NjU3MWIwOSBsZWdhY3ktdHJ1bmsKKzEwMDg5IGNkZjgwZjc0NThjYTFhNzNkNjBlMmViYmRkY2NmZDMxYzZlZTIwMDQgbGVnYWN5LXRydW5rCisxMDA5MCA0NmYyYzRmYzllMzgxYWJhMjY5OWIyYTg4OGFhYzZiMzFiMmU0N2I5IGxlZ2FjeS10cnVuaworMTAwOTEgMTkyZWE5ODg0ZWI2N2RmY2E2NTRiMDg3MGUwN2U4Mjc5OGFkMDQ4MiBsZWdhY3ktdHJ1bmsKKzEwMDkyIGYzNWIyOWViNTJkMTk3ZTliNmU2OTc1MWFiZTVhZjA1YzgwYjc1YWYgbGVnYWN5LXRydW5rCisxMDA5MyBkZWM2NWZjZWEyMWViOTFlNjQwZjg2MmM2ZjE2M2Y1OWRkNzRiYTgzIGxlZ2FjeS10cnVuaworMTAwOTQgMGUxZTRiNGEwODIxMDI5ZjU5MzU0MzdiN2U3MWQ2ZDYxZWJhNzU0NSBsZWdhY3ktdHJ1bmsKKzEwMDk1IDA2OGE2OTQyZmUxYTEyZWE1NGM5ZjZkNDk4NDJmNDVjZWZhYjlhZDggbGVnYWN5LXRydW5rCisxMDA5NiBhM2E2ZWMyNTk5ODYwNTNhNjVjOGZiZjZjOGU5ODg3YzQxNDgzYTNlIGxlZ2FjeS10cnVuaworMTAwOTcgMjkzYjBjYjM0NzA0MDRjMjlhMjdlNDAwYzViYjgyZmZiNjc1YmU2OSBsZWdhY3ktdHJ1bmsKKzEwMDk4IGVjZTYwNGVkNjIyODE4M2E4YzkxY2M5NDFkMzIwNjE2NjgzMDFiOTAgbGVnYWN5LXRydW5rCisxMDA5OSA5Y2Y2Zjk0MDk1OTY1MDkwYTc1NzUwYTZjYjMyZGZjNjA2YzViNWVmIGxlZ2FjeS10cnVuaworMTAxMDAgMGEyMGNjZTE3MzcxNDk4ZDQ3M2I0NGMwZjAzM2ZhMGVjYTQ0ZTMxOSBsZWdhY3ktdHJ1bmsKKzEwMTAxIGM1NGYxY2NkZTZhOWRlYjYyOTg4NzNiYjZmNDgwZDNhM2M4N2FjN2QgbGVnYWN5LXRydW5rCisxMDEwMiBhNzg3NDI5ZTg0MGFlYjBiYTZjYWNjOWE1YTgwN2NkNGZlNGQ4ZTcwIGxlZ2FjeS10cnVuaworMTAxMDMgMGNlNjU5MDQ3YmJmMzIyN2NiMmExYWE0ODBlYzM2ZmFiZjkyM2Y5NiBsZWdhY3ktdHJ1bmsKKzEwMTA0IDVhYTcwMzdhMWUzZmI1MGQ5MzIyNGQ2YmUwMjFjM2JkYmFjZjI3ZDYgbGVnYWN5LXRydW5rCisxMDEwNSBhMGM3YWEwNTIyZGUxMGQ5ZDdiYzAyM2NmM2FkOGQ5NTQ0MjU1OGNkIGxlZ2FjeS10cnVuaworMTAxMDYgMTY1NDU2MjgyNDEyMGRjZjk5YjhmODI2YjE0ZmZmMGY3N2I0MDI0YyBsZWdhY3ktdHJ1bmsKKzEwMTA3IDc5NjBkYTA1NDljNDc0M2UyOTY0Yjk5NmQ4YzZjNjgyYjJiMDY4NjUgbGVnYWN5LXRydW5rCisxMDEwOCBkYjFlNTE0ZjE2Mjk3MzAyZDQ1OGM5ZGE4NGQ1ZjI0MjQ5MWNmODVjIGxlZ2FjeS10cnVuaworMTAxMDkgNDIyYmJlODg1Y2JmNzFhNjEyZmNmZWNlMGE1ZGJmODM3YjBlYjRjMiBsZWdhY3ktdHJ1bmsKKzEwMTEwIGQyMmNmNjY2ZmEyYzg4YzUwODdhMmRjODJjYWIwMjRiYzdmNGJjNWUgbGVnYWN5LXRydW5rCisxMDExMSA1NTM0NWQ2ZDJjMTQxYzAyZTIwZTJhMjNmYzVmNjE5MzdkZGRjNjRlIGxlZ2FjeS10cnVuaworMTAxMTIgM2QxNTkwYjVlM2RkZmRlZTJiMjc4MjdmNmI0ZGY5M2IyYmRkYmJhNSBsZWdhY3ktdHJ1bmsKKzEwMTEzIGJiZGQyOGQzNmY0Mjk3N2ZiNmY0OTcyYjI0NTE0NjkwMjNkYThlM2QgbGVnYWN5LXRydW5rCisxMDExNCA1NDcyYWI2MTBmZTllNDk5NmY1YjE2NjllZmUwZDI5MjE5ZjY1OGU4IGxlZ2FjeS10cnVuaworMTAxMTUgYzExMjQ0M2NhYmUxMTZlMjI1MWUwMGYzOTg0OGE5Y2U0ZDdlZjQ0YyBsZWdhY3ktdHJ1bmsKKzEwMTE2IDFjMGY1OGI3NjA4MWE4NzAyNzA5Zjk0MDFkZGNhMzIzZDVkNmI0NGIgbGVnYWN5LXRydW5rCisxMDExNyBjNjM4N2UyNDJiNzgwYWZjNjg4YzA2Y2Y3Y2Q5MzYwMzQzOTJjNTQ5IGxlZ2FjeS10cnVuaworMTAxMTggMDk1MDEyNzE4NWVhYjY0ZDY5YjgwZTA4YTBmMzRkYjJmZWIzZTY0YSBsZWdhY3ktdHJ1bmsKKzEwMTE5IDJiYmVmZWMxNjU0MjA0YmE1YWNjN2E5OThiYjg4NWE5Y2Y0MjBkNjAgbGVnYWN5LXRydW5rCisxMDEyMCBmNzc5MTYxN2MyYjI1ZDk2ZDdlYmQ1NDRlMzNhZjQ4YzE4MmQwZWZlIGxlZ2FjeS10cnVuaworMTAxMjEgYjk1ZTUyM2RjZTZjY2UxMGIxODY3MjA5NWEzN2JjYmY5NzU0NmUwOCBsZWdhY3ktdHJ1bmsKKzEwMTIyIGQ4ZDg4NDQ3ZjNjMTMxNGM3MjI2YTY0ZjhhYzIzNGYzYzYzNDdiYzcgbGVnYWN5LXRydW5rCisxMDEyMyA3YWQ1MjJhNGM3NTNhMTA0YTFkYzRmNzE1OWQ1MWI1YTVmNjU3NWE2IGxlZ2FjeS10cnVuaworMTAxMjQgZDkyZjEwYzQ1MWExMzhkYTQzNDUxYWYzZTU1NWMwN2E0OGFhODRmNSBsZWdhY3ktdHJ1bmsKKzEwMTI1IGRlZTU2MDI1ZDM5MGI0MWYzZDBmYjUwY2Q4ODI5MWI4MDFjMjYyNGEgbGVnYWN5LXRydW5rCisxMDEyNiAwMmM2NjQyOGYwNDg0MWRmNzIzNzY3NWFkNTJkZDE2YzA4ZTU0NTY4IGxlZ2FjeS10cnVuaworMTAxMjcgOTMyZGQ2YjkwZTEzYTc5MjMwZmI1OGFmNTA1YTg0YTk1Mjc4ZjgyYyBsZWdhY3ktdHJ1bmsKKzEwMTI4IGVhNjg2MTlmYjU2ZDRkNTQxZDNhNmE0NzhlMGRkMjUwOGI0Zjg2NDYgbGVnYWN5LXRydW5rCisxMDEyOSA5NTUyZDRiM2Q5Yjc4MTQyNWUzOGIyZDgwZGMyZDQ0ZDI3OTY5ZTU0IGxlZ2FjeS10cnVuaworMTAxMzAgZDY0ZGJkMWNkMzJlYjQzNzkxODE2MDU3MjQwNmRlMDVhMzU1OWI2NyBsZWdhY3ktdHJ1bmsKKzEwMTMxIGI4Njc3MWIwZDdmOTE4N2NiMTIxYWE5NTU1OWRmOGRlMjFiZjZjMjYgbGVnYWN5LXRydW5rCisxMDEzMyA3NWQwMDQ4Yzg2NDNkYjVlNGI2ZTI1MjYxZmEwNTRjNGFlOTg4NGVkIGxlZ2FjeS10cnVuaworMTAxMzQgNzNlZWJkYWNmYjc3NjIzZjgzMDVjZDU4MDRjZGZhMTViZGI2ZmFjNSBsZWdhY3ktdHJ1bmsKKzEwMTM1IDZiM2QzYTI4NTgxZjRjMGZkZDRlZWNhMWFkYzc4NWU3OTA4OGM0MDQgbGVnYWN5LXRydW5rCisxMDEzNiBmMDE3YzQ4NThiYThjMzZhYmY4MTllN2I3MTRmNGM4ZWEwMDhmN2Q0IGxlZ2FjeS10cnVuaworMTAxMzcgZjc1ZmY4ZDQ0MzRkODdiNTM1M2I2ZWViNGM2ZjBiMGFiNDQ4MzY0ZiBsZWdhY3ktdHJ1bmsKKzEwMTM4IDg2OTM3M2ZhMGJmOGI4NjRkNGNiNzlkZjdkMmEzNzE5MjU2YTUwZjUgbGVnYWN5LXRydW5rCisxMDEzOSBmMDNlNjY1ZDlmNzI4ODlkYmRjZmE2MmM0MDgyZjA3NGUyNTVkNDdjIGxlZ2FjeS10cnVuaworMTAxNDAgNDdkZGViMDc5NTc1NDZiMzIwNzMyMDZkZmMyNzY2MzVlMDQ1ZjQyOSBsZWdhY3ktdHJ1bmsKKzEwMTQxIGVhMmQzMjE3ZDBjNzIxMzgxZTA5MWI2MDM0MDY5OGMzNmRmOWY0MDAgbGVnYWN5LXRydW5rCisxMDE0MiBhY2QzOTNhOTNlZDA0NGE1MjU1OGUxMWEyNTY3M2I2YTc4ZDIwZThkIGxlZ2FjeS10cnVuaworMTAxNDMgZjI4NTVkMmFjYmQzOTk0NGYzOTI0YmYyNjIzOWM4NDgzNTU1MzZiYiBsZWdhY3ktdHJ1bmsKKzEwMTQ0IGFiYWU2OGFmMzM0ZjY1MmEzMjRhNGY5Zjk0NGI4ZmRhNDg4N2IxYTQgbGVnYWN5LXRydW5rCisxMDE0NSBjOTM5NGFlYWFjNmFkYzI3Y2ZkMmIzNjU3YWExYjgyMzkzODhhNjhiIGxlZ2FjeS10cnVuaworMTAxNDYgMzVmMjliN2RhY2Y1MThjNTJhYjRiNjc1ODZmM2M3YzAyNmY5NmNiMyBsZWdhY3ktdHJ1bmsKKzEwMTQ3IGFkMzQ2NzFjZDRjOTYyOWU0NmZkZjAyNDYxYTJhYzZhMzRmMTI1ZTMgbGVnYWN5LXRydW5rCisxMDE0OCAxZjhjOGUwYmI1ZWY2MDBkNTdiZTM2N2JhNjI1OTMzNjk5YzA2OWIzIGxlZ2FjeS10cnVuaworMTAxNDkgOGU2YTU4MDE5ODg3M2U2MGEwYjAzMGRlZWMxMGI0MjEwNmU4ODJjNiBsZWdhY3ktdHJ1bmsKKzEwMTUwIDBjZjJmZmFmNGJkN2M1MGVkYmI0NTRlMjQ4ODMyOTAwOTE2OTNmNGUgbGVnYWN5LXRydW5rCisxMDE1MSAxZmI4NjhmMjU0NTlmZTM2ZTIzMDQ4MDY0OGJiOWJiNzc4ZGI1YWIxIGxlZ2FjeS10cnVuaworMTAxNTIgNTI4ZTJiOTRlOGI5ODczYTc2M2QyMzdkYjg3OTY3YzRkNmVlOTVkYyBsZWdhY3ktdHJ1bmsKKzEwMTUzIDM1N2I3N2UzNDVmMzY1NjBmMmViNjg1ZTg0ZjE5YzUxN2I0ZWM4MDYgbGVnYWN5LXRydW5rCisxMDE1NSA3MTIyZmY0YzRhYmU2OWNhMmZhMzJlMzBhNDUxYTc5OWJhNTlhNzlmIGxlZ2FjeS10cnVuaworMTAxNTYgYmRjZjcwOGFlNGRhZThjYzk4N2FiNTA2MzJmZTIxNzkwMjkyMjY1NSBsZWdhY3ktdHJ1bmsKKzEwMTU3IDcyZjJhYmFjZjE1MWU0MTg0OGVlOTE4YTI1MzU5YWIyNDJjNjJlMTUgbGVnYWN5LXRydW5rCisxMDE1OCA0MDMwMDU5Y2Y5N2MxMzQxMGEzMGE1ZmM3NWU2Mzg4YmMzM2IwYmQ1IGxlZ2FjeS10cnVuaworMTAxNTkgYTYxMDE4YTJhNTAyYTQyZmQ5NGEzOTQzNjczMDQwYzc5NzkyZTcwNiBsZWdhY3ktdHJ1bmsKKzEwMTYwIDJjOWMyNDg1ODFhMjAyM2RlYzJhMTQ1Y2JhODgwYjIyNzVlZjNkZGEgbGVnYWN5LXRydW5rCisxMDE2MSBlMWU3Njc2NmQ4Y2FlMTU2MDIwODAyMzYwZWVkNTYxNWY4ZDhhNTMyIGxlZ2FjeS10cnVuaworMTAxNjIgNTMzNGVlZjE5NzRjMDU1Y2U5MWZkNTA5MGFkMDIzNjViM2MzNjhjNyBsZWdhY3ktdHJ1bmsKKzEwMTYzIDZiZjc0MjY0YjljMGMzMTU0NWY3MTc3NTVlMjc3YTUzYTIwNzZiOTQgbGVnYWN5LXRydW5rCisxMDE2NCBmMGQzM2ZkYjM5MjE5M2Y3ZWJhZTdhODMxOGYxOTllNWQ3NDI1MmE2IGxlZ2FjeS10cnVuaworMTAxNjUgYWZkY2JlZjE3ZWMwZmQwNjk0MzUyOTE0NjU3MTg1ZjQyZDY3OWY1YyBsZWdhY3ktdHJ1bmsKKzEwMTY2IDQ4Mzk3MDA2MjkxNTExNWFhYzA0OGZlNzNkZDQzZjE3NzlhZGRjNTQgbGVnYWN5LXRydW5rCisxMDE2NyBjMmUxZGIxZTFiYjhmYmQxY2FiZTE0ODM1ZjY2OTZlOTY4OTAyODRjIGxlZ2FjeS10cnVuaworMTAxNjggMDRkNzM5Nzk3MGMyMDY3YTdmZTRlNWI1Mzc4NjA3ZDM1ZDdhNzc3ZCBsZWdhY3ktdHJ1bmsKKzEwMTY5IDU1NGYyYjg3OWZiYjExY2IyMGYyZjA5N2NhZDNjM2M4MTMwZTZkMDUgbGVnYWN5LXRydW5rCisxMDE3MCBmOTI0NzI3Y2QwMGI2YWQ5OWE2YWY1ZTU5ZjA4MmQ2MTcxNTlmYzAxIGxlZ2FjeS10cnVuaworMTAxNzEgOWJmODFkOTNiOTk1YjRjMTVhNTZlZDkyZDZkMjc5ZThjZjJhZDIyMSBsZWdhY3ktdHJ1bmsKKzEwMTcyIDU3YTQyMTgzODk3ZGNhODUyNTIyN2U4MGEyM2U4ZmMxOTFhZTlkZDUgbGVnYWN5LXRydW5rCisxMDE3MyBmZmNkY2Y5ZmYwZWJjNjZhYTc4MjExMzRkNWFmNmUwMDZlMTBlMDk4IGxlZ2FjeS10cnVuaworMTAxNzQgNWUzYzlkNTMwYmMxZDNiYjQwMmQ0ZjYyZTcyMDFlZTdlMDkwYTQxZiBsZWdhY3ktdHJ1bmsKKzEwMTc1IDFjZWQwMzY3MTU3NDllZDg4MDdjYzQ3ZDM1YTg1NDg4OTMwZWMzZDQgbGVnYWN5LXRydW5rCisxMDE3NiBkMjNiZmUwNjE3NWVlZTdhOWQ2M2NiNjYzYzYzYTg0N2Q3YjYyYzNhIGxlZ2FjeS10cnVuaworMTAxNzcgZTQwZjJhNmU1MjZkZDJkYzBkMzc1YzQ5NmIwZTk5YTg0M2I2YWM3NiBsZWdhY3ktdHJ1bmsKKzEwMTc4IGFiZTdmMWY0NzY4YjAxYzBmZWViNDkwOWE1MmNiNGRjOWRkZmE1Y2EgbGVnYWN5LXRydW5rCisxMDE3OSA5NmI3YzEzMjNkMzBhZWM5YzU5MzRiYmM3ZmY5ZDhmMmU2ZmU4ZjhmIGxlZ2FjeS10cnVuaworMTAxODAgYWM4Nzc5Njg1NjJjY2RkMWNiN2M2OTkxODRhZDU3NWM1M2E1N2MzNiBsZWdhY3ktdHJ1bmsKKzEwMTgxIDJjYzRiYzBjZDAzNjc1OGVkMDA1ZjJkZGQ3Mzk3YzRiZDM0N2RiNTIgbGVnYWN5LXRydW5rCisxMDE4MiA0YjgyOWU2YzBkYzU1NWE1MDBhYzY5MzBlYTJkMDM2ZTM5NjcxMjk3IGxlZ2FjeS10cnVuaworMTAxODMgMmNkMTQ2ZTJhM2EwZGIyMDY2MzViMTE5OTUyNWRiMWQ3YmEyMzA5ZiBsZWdhY3ktdHJ1bmsKKzEwMTg0IGM5ZDU0NjgwOWU0ZjhlMzcwYTUyYmNmZTA2ODUxNmQyNTE1MDc4MjMgbGVnYWN5LXRydW5rCisxMDE4NSBhMDAzZTE0ZmVkODc3MjM5MzI1NDlmMWMyYzNiNGFlYzBlMWQxZTk3IGxlZ2FjeS10cnVuaworMTAxODYgNTVlM2Y4OTFkYmI1ZDdkZjJjZjkyYzI5YWJjYjdmZDY1YjBhYTU2NCBsZWdhY3ktdHJ1bmsKKzEwMTg3IDIzNjE0NjUwZTI5YjFkZWVlY2MyZjdlMTg5YjZlOGU0ODQyODVmNmUgbGVnYWN5LXRydW5rCisxMDE4OCA0OTkxYWFhYjE3YmRlZjU1MTJlYmUzZjE0YmVkYzA0NjJiZjlkNGRkIGxlZ2FjeS10cnVuaworMTAxODkgYWJiODAyYzIxNmFkMjQzNjY1MWFjNmEyY2EzMTIzNTQxNmU4N2IzNCBsZWdhY3ktdHJ1bmsKKzEwMTkwIDcwNmU0Yjk1NDg2MjQ4YTdmOTUxNWU3YWJkMWJjMDc0YjZhMzcxMWMgbGVnYWN5LXRydW5rCisxMDE5MSA1NmRjZmMyNzcxMGFiNmVmM2IzZTYyOTllNTVmZDk5OTY4OGUxYWU2IGxlZ2FjeS10cnVuaworMTAxOTIgMGNiYzlkZjg4MmI2YmRkZjRkYTQ1MTVlOWE0ZTc5ZmEyOGM5NGQ0MSBsZWdhY3ktdHJ1bmsKKzEwMTkzIDI0ZmY2OWFkNGRhMjIzOWZlMmRmNmZiNDlmYmY4NWZiZTk3OWMzNTcgbGVnYWN5LXRydW5rCisxMDE5NCA4ZGE3MWM1MTU3MTZhZGNkNjNjYTc0OGRiMTQ4NGQ5NTU4MDgzNzE4IGxlZ2FjeS10cnVuaworMTAxOTUgMzg4YjA5N2JkZGI5NTUxYWM3NjhjMWI5NzZiMGVkOTA3YTUyNDRiYiBsZWdhY3ktdHJ1bmsKKzEwMTk2IDkyNzEzNDBjN2UwY2M5ODk0MDliOGU3OTQzMWVmNjIwMDAzNDAxYTMgbGVnYWN5LXRydW5rCisxMDE5NyA5OTVhZWEwOTI5MTczM2E2NTgyZDM4N2M5YWFkMjc3NzQzODIyZWI1IGxlZ2FjeS10cnVuaworMTAxOTggZjgzNDI1Y2M3ZTk2NzVlMTg0MDgxNTUzYWQzYmQwYjVjMjYwZTBhYyBsZWdhY3ktdHJ1bmsKKzEwMTk5IGQyMWRjNTljODZkNzRkMGIwMWI0MGFiZDk3NjczZTUwN2Y4MzAyYzkgbGVnYWN5LXRydW5rCisxMDIwMCA1YzdiY2UwNTNkMDM4ODZlZmQ5MmZlNTVlNzY1ZWRiYWRhMTQ3ZDVmIGxlZ2FjeS10cnVuaworMTAyMDEgZjA5M2ZjZmQ1NjI1ZTFkYjk0OGM0MjVlNmNiMjc2YmM1ODEwMWU2NSBsZWdhY3ktdHJ1bmsKKzEwMjAyIDY3MzE4ZDNmYTZkY2Q2NGEzOWUzMGRlMDlmZWJkNTFlNDllMDMxMWQgbGVnYWN5LXRydW5rCisxMDIwMyBkMTAzYzAxODBiMmRlMDZlNTVlNDRkMTA3NTk3Y2M0MTU3NmRjYTdkIGxlZ2FjeS10cnVuaworMTAyMDQgMWJiOTQzY2QyYzIzZGM3ZDMzZmE3NjA2NTQyNGZhMjA2OTZlMWMxZiBsZWdhY3ktdHJ1bmsKKzEwMjA1IDY2MzM2N2NhMTNmODE2NDAxZmNmZjhhMmJiMmY0MDI1YzlmYjlhOGUgbGVnYWN5LXRydW5rCisxMDIwNiAwOTU2MzZiOGZhYjdlODExZTc3MjdjMmRlZjkwMDcxZmJmZWQyMzcxIGxlZ2FjeS10cnVuaworMTAyMDcgY2IyNTY3OTgzNDdlYjk1YzYxOTJjNmNkYTgxNjFiMTcwNzQwZjAyYiBsZWdhY3ktdHJ1bmsKKzEwMjA4IDUyZGFhNzBiYjA4NDkzNDUyMDUzN2I1ZjlhZTIyZDFhNGIxMzUzYzMgbGVnYWN5LXRydW5rCisxMDIwOSA4OTU4MmZhMTgyNGZiYTk5NTU3YjAyZTljN2RmMDE2MGExOTQ0MDJiIGxlZ2FjeS10cnVuaworMTAyMTAgYzEwOWQ1Y2FkMTAwNzU2ZjUwNTk1OTYxMWMwYjRmNDRlODNjNTEyYSBsZWdhY3ktdHJ1bmsKKzEwMjExIDljMzdlZDg4NjhiOWVmYmJjOTY4ZjllYTU0ZjhkMmUyMzJmMjA0NzQgbGVnYWN5LXRydW5rCisxMDIxMiBiOGUxZTEwNTU2NDlkNjM3Nzg1NmZkNjIzNjRhOWEwY2I1YTkxNTBjIGxlZ2FjeS10cnVuaworMTAyMTMgMzBlMzMxNDk2OTMwYjViYWE5NTNiY2ZhMmExMDE2MjU0ZmY1OGQ0YiBsZWdhY3ktdHJ1bmsKKzEwMjE0IDcyNWIzNzBlODUzZjBlMWYwY2ZhZjM1NTEwNzA3YTFhOTYzNDQ0MmEgbGVnYWN5LXRydW5rCisxMDIxNSA3YTlhZmFiYTg4ZDg0MmNjMzllNmI5MGE3YzA2Njg4Mzg1ZjAxNjI1IGxlZ2FjeS10cnVuaworMTAyMTYgZWQzMjAwMDFjMjlhODc3MWU3MDVmMjQyMDlhMDZkZTU4MzY5OWUxMCBsZWdhY3ktdHJ1bmsKKzEwMjE3IDVkN2U0ZDIwYzg5ZWRkOTk4YjgwYjA1MGM3ZDMxMWQzNTA3MjljZmIgbGVnYWN5LXRydW5rCisxMDIxOCBiYmZkOTQ2YjBiMzhjOGYxNmU1ZTg3YzNlMDY5YTk1NDA5NTI3NGRlIGxlZ2FjeS10cnVuaworMTAyMTkgMTA5MWJhMmJhZWE0YTI5Y2E3OTdiMzMxMjY2NGI3OGUyZDM0Y2VlNCBsZWdhY3ktdHJ1bmsKKzEwMjIwIDQyM2JlN2NkMDQ3OTUyMmIwYzNjNWNiNWZlZGYzY2QxZDM2Nzk4OTMgbGVnYWN5LXRydW5rCisxMDIyMSBlMjkwMjkwMjk0MTRiMmE5YzVlNjgwYzU1YzY2NWIyNzg1ZjY1ZDEyIGxlZ2FjeS10cnVuaworMTAyMjIgNWJmNjZhYjRkZmI2ZjY5YzUyMTNiMTUzYzdiNjI5NmI2ZmY2MDIxMiBsZWdhY3ktdHJ1bmsKKzEwMjIzIDI2OWEzMjdkNjMwNWYyN2Q1MGZmNDcxZDI4MDMzZWFmNWI4MjczODYgbGVnYWN5LXRydW5rCisxMDIyNSBjNDk4NDUxYzVmNTY0MTYzYzI0MTgzZTdlNzk5NjhlZDBiMWE4ZjZjIGxlZ2FjeS10cnVuaworMTAyMjYgNDVhM2RhYmYwZmE4M2M5MDJlZjEzYzYwNDk5NmNhZTFhMjRmZWIxZSBsZWdhY3ktdHJ1bmsKKzEwMjI3IDc5MmJmZDQ3M2Y1MTY4OGRkMjRmYjkzNDJkZjAyMDMwYmRjZDM4M2UgbGVnYWN5LXRydW5rCisxMDIyOCBhZWRkMmQwZGNiMzE1NDNiYzUzZTgyYzZjYzA2ZmNmNjAyY2U5Njk0IGxlZ2FjeS10cnVuaworMTAyMjkgYTczZWY3MjBmYjU2NjM2ZjczNjBjODdlYjRjY2Y2NDQ4YjQ3YWM4ZSBsZWdhY3ktdHJ1bmsKKzEwMjMwIDNjMDhmYjllMTM0ZjgyY2M4ODg4ZWJmM2FlOWQ0NGViZTliNzZmYjAgbGVnYWN5LXRydW5rCisxMDIzMSA2OTcyZTUwZjM0ODNlNTEzNTI4NmMwM2QzYzY5MDQ4MmMzNjZkMDM5IGxlZ2FjeS10cnVuaworMTAyMzIgMGM4MzdkYWI1YjllYWM1ZGU0ODU4MTcyMDdkMWUwNmFhNzMxYmRmNSBsZWdhY3ktdHJ1bmsKKzEwMjMzIGI0YjBlNGU3NTljNTgxZjA4MTVkZWVkNWM2MGY0OWM3NGIzOGU3OWIgbGVnYWN5LXRydW5rCisxMDIzNCA4ZWYwNjc1NTlkNWEzODJmNmI3MDBlYzUwYTcwNjRhNmZhMGI3Nzk3IGxlZ2FjeS10cnVuaworMTAyMzUgMDMzZGJlOTA5MjE4MTU0MWRhNWExYTU4N2NhZGQzYjRiZjRiOTc5MyBsZWdhY3ktdHJ1bmsKKzEwMjM2IGZiNGI0ZDA2OWNjN2NkYjRiNjY1MzJlYjQ5ZDc3YWQwNmQyN2JkZmYgbGVnYWN5LXRydW5rCisxMDIzNyBhNDE5MzM0ZjNiMzk3YjY0ZWEwYmJmODQ4MjgzNjEwZDQxMGZjYzY2IGxlZ2FjeS10cnVuaworMTAyMzggNzhjMjdlMzFhYzdjOTgwNmVjMzBjYzQ4NDhiM2ZmN2Q0MjFmMWE5NCBsZWdhY3ktdHJ1bmsKKzEwMjM5IGMzMTI1N2I5MjQ0N2VjZTVkNzQ3NjhkYThiYTIyZTNhYzg2ZGRmNTAgbGVnYWN5LXRydW5rCisxMDI0MCBhNWUyYmViZTE3OWFlNzZmYjZhMmI3MTI3M2RlOTkyNzY3OGQyNjM3IGxlZ2FjeS10cnVuaworMTAyNDEgNmJmYTY1MGYzMTFkZjQ2ZTY3MjI5NTFmZjU2YmFjYTNiM2I4MjY5MiBsZWdhY3ktdHJ1bmsKKzEwMjQyIDQ1OGEzM2FiYjM5YzFhZWEzYWQ0OTYwMDEyMGQ5NDgyNDFlZDU3YzYgbGVnYWN5LXRydW5rCisxMDI0MyBhY2YzYjk1MGNiNDM3ZDFiN2VlZGQxMTYxOGZlM2I0MzY4MjA3ZmUxIGxlZ2FjeS10cnVuaworMTAyNDQgOWMwMmUwYTI2NTExYTRmZjJjODUzYjA3MjRmMGY4Yjk1YzEyMDVlNyBsZWdhY3ktdHJ1bmsKKzEwMjQ1IDlkMGRjMTE3NzVhNGU0N2FlNTRiOTc0NmY1NzIyZTQ5ZTc5N2UwNmUgbGVnYWN5LXRydW5rCisxMDI0NiA4Yjc4NjUzYmFmMWZkMTIyYjllNzliZDk4YmE4ZTM3NGIxOTYyOGE2IGxlZ2FjeS10cnVuaworMTAyNDcgNTg3ZDAxNzhmOGQzNjZmMDA5YzNjZjJlNGU2ZjRkNDZjOTM3Zjc3MiBsZWdhY3ktdHJ1bmsKKzEwMjQ4IDdmZDc5ZGRmYmI4Yjg4NGVmOTY0Y2E1YTA2NzBjMDZkYmQ2Y2NkZWIgbGVnYWN5LXRydW5rCisxMDI0OSA4ZjE3NzkzM2M0MWZhYjNjMzE5ZjU3YjhmYTQ3MzAyZTU1MGM3ZjQ4IGxlZ2FjeS10cnVuaworMTAyNTAgNDY5ZjY2OTE4ZGQ2Y2JiZTUyZmY2ZGU0NWQyODg2MTkyYTU4ZDczZiBsZWdhY3ktdHJ1bmsKKzEwMjUxIDlmNDZlNzBlYmZiYjJkMzY1YTY2NmNjZDc4YjUzOGNjNGFlYjE4ZjMgbGVnYWN5LXRydW5rCisxMDI1MiA3MDdkMDYyY2FlN2JmZjFlZDc4NTg1MTljMmI2YmM2NTVjZDMwZTFjIGxlZ2FjeS10cnVuaworMTAyNTMgOTE3MjkzMWZkODBhNDhhYzg3MTBhZGIxOGMwMjczZjYwZjczNGE3YyBsZWdhY3ktdHJ1bmsKKzEwMjU0IDhhNTY3NDEyYjIxYmJhZWY3M2FiZmU2MzU0NDFmNWQ0NmEwOThlZDcgbGVnYWN5LXRydW5rCisxMDI1NSA1ZmI2OWZmMjRjZGRjMTNjYjc0ZTJlN2ZiYWJhNWJkNmE4MmQyNDE0IGxlZ2FjeS10cnVuaworMTAyNTYgNTdmMTFhYjRlMjkyMWIxNDIwMjIwM2M0OTc3YzRiZTAxZTZlM2VlMSBsZWdhY3ktdHJ1bmsKKzEwMjU3IGRiOTRiMTViZDY0MDBiZTUzMGY2YzNmOTY3MjAwOWJjZTdiZDE1NGYgbGVnYWN5LXRydW5rCisxMDI1OCA1ZTIxNTg5NGM1NTVhMjcyODlhMGFkYzA5MmY3OTEwMzU0ZWFjODgxIGxlZ2FjeS10cnVuaworMTAyNTkgYjE3ZDIwMGVkZjYyN2JkZjUxZDUzYTg1ZTZhOWVkNWI5N2Y2ODIzMSBsZWdhY3ktdHJ1bmsKKzEwMjYwIDFjNDIwNjk5ZDU4YTNiYTJlMjJjNjY1N2Q0M2QxZjQ5OWRlZDk3YzEgbGVnYWN5LXRydW5rCisxMDI2MSAzZTExOThkMjBmOWNlMTMzNzU3YzQ0MzFlZjU4YjI3ZGZlOGNhNzg4IGxlZ2FjeS10cnVuaworMTAyNjIgMzZiM2I2ODc2YTU4MGViMGRmY2Y0MmM5OGQzNDEzOThmMWE4NWMyNSBsZWdhY3ktdHJ1bmsKKzEwMjYzIDdmYzMyYTY2MjU1YTc3YWNmNTBkMWVhNGVkMzU4NjJjZDE1MzA1MzIgbGVnYWN5LXRydW5rCisxMDI2NCBjZmU2ZjU4ZGQwZDhlZjkyMGUxYWQxOGU4Y2FiOWI0MWI2ZWQ5YWMwIGxlZ2FjeS10cnVuaworMTAyNjUgODBiMjY3NDgzODI4ZTU4MjAzZDIxM2EyZmI4ZTBiZTc1OTlmODAxMiBsZWdhY3ktdHJ1bmsKKzEwMjY2IDA1NjkyYzY2MTQzNGExNWQ5NWM4MTk0NDJlOTJmOTg3MDViODRmNWUgbGVnYWN5LXRydW5rCisxMDI2NyA2YWRmOTE3ZWU3NzMwZDczOWQwNjE2MGZmNmVkYmViZWE2NDFjMDBhIGxlZ2FjeS10cnVuaworMTAyNjggNDRmYzdmZmRmYzc3ZmJlYTdjMzNlNzhhZDQ4YjI2ODk4ZmFkYzE4NyBsZWdhY3ktdHJ1bmsKKzEwMjY5IGIxYzA5MTUwMTQxMTBmYmZjNmFkOWZmOGM2MjM2YWI4MDk5ODBiYWUgbGVnYWN5LXRydW5rCisxMDI3MCA4OGM1MzkyMWJmODgwOWU2NmM1ODA3ZGMyMThhMmRjYzE3Y2RlZDIxIGxlZ2FjeS10cnVuaworMTAyNzEgYjllMzExMjBhMGM0ZWFlOWU1YzZlNjU1MTY0MTAyZTMzOWY2ZjYwYiBsZWdhY3ktdHJ1bmsKKzEwMjcyIDIzZDA0OTAwMjU2ODk1MTdhYjE2ZDk2OGIyOWM3OGI2ZTQ3ODYyYjggbGVnYWN5LXRydW5rCisxMDI3MyA4ZDQxNDgyMTNjYzAyYTZkYzE5MzVmOWM4ZWU4YjU4ZjEyNGQwZWMwIGxlZ2FjeS10cnVuaworMTAyNzQgMDc0NTMxNDBhMDk1NTAwODhkMWRkYjdhNzU3ZjFkY2U4ODRkMGRmYSBsZWdhY3ktdHJ1bmsKKzEwMjc1IDM3NWE5MDEwNjVjMWI4NzdhNTg3OTdhZjJhNWQzNjhkMzAwNWUwNDEgbGVnYWN5LXRydW5rCisxMDI3NiA0MzNjMzgxYzM3MDBlM2IwMTY1OTg3MDZmNTJjOWM1NmJlNGQ3M2JiIGxlZ2FjeS10cnVuaworMTAyNzcgNjhlMmIwZGJiZWM4ZWI2MjBhMmI5YjBkZmVkNDQxYzQzZDIwMDdlZiBsZWdhY3ktdHJ1bmsKKzEwMjc4IDA2OGE3NzYyZTI4NjEzMTZjYmVkNjU5NTZlMzZkZmU5ZDIwYjdkNjggbGVnYWN5LXRydW5rCisxMDI3OSA0OWYxMWViNGViOWEzMzIyMzNhYWY3OWMwMzdmNGE3NTE5N2U1ODUwIGxlZ2FjeS10cnVuaworMTAyODAgY2Y3MjM5OTFkNzVmYWQxNmFiMmYzZThkMTA5ZWMzNTIwMTRmM2NjNCBsZWdhY3ktdHJ1bmsKKzEwMjgxIGNmNDIwMWVmNzNhYTJjNmFiNGY0OWViYWE3Mjk5OWFjNTE0ZTExYjcgbGVnYWN5LXRydW5rCisxMDI4MiAwNDc5OTY2NjZjODE4OThiMDM0MTg4YTJjMzBjMWI0ZmI1Y2NmYTRhIGxlZ2FjeS10cnVuaworMTAyODMgZGZmZTFlNDcwZTZjZjNjZjExNzI0OGI3MWVlMzRhY2ZjNTc3MGMyNCBsZWdhY3ktdHJ1bmsKKzEwMjg0IDA2NjBmMTdhZGU2MDNjYTJhNGZmZDE4YjM2NjZlMTVjZGNmMmRmNDggbGVnYWN5LXRydW5rCisxMDI4NSA2ZDA0ZThjODE3ZmJlZmE2MGE1ZGU5ZDFjMWU1MTEwMTZkMzVhMDdmIGxlZ2FjeS10cnVuaworMTAyODYgNGM2ZGMwN2YxYjZhNjBjY2JmYzBjMTFlODBjZDE1Y2RjNDIxODMyNiBsZWdhY3ktdHJ1bmsKKzEwMjg3IDgxZjk4MTg4MDEyZTQxOWQwODE5Njg0OTJjY2FiNTM3NGViZGU2M2MgbGVnYWN5LXRydW5rCisxMDI4OCA1ZDE1ZjRmZDZkNjlmZWVlNjMxNDZjNzQxMTRiMGRjYzhhMzg5OGFmIGxlZ2FjeS10cnVuaworMTAyODkgNzBjY2JiY2MxMGNjYWQ0MTg5MTc4MTVkZGMyYzhiMTRkY2UyY2Q5NiBsZWdhY3ktdHJ1bmsKKzEwMjkwIGU1ODBhZmExYzgzMzgwYjI0NDJkZTZmZTA4NWYxMjZjZTBjZmRiYjQgbGVnYWN5LXRydW5rCisxMDI5MSA5OTY3YmUxZjQwMmIxYTA2MTM0OWZlMzM4OGEzMThhYTJjYjI5MWMwIGxlZ2FjeS10cnVuaworMTAyOTIgNDEyZTZhYjAzYzZmZmFkOTkwODMxNzFlYWY2ZTMwMDBkNDEyYzUwYiBsZWdhY3ktdHJ1bmsKKzEwMjkzIGMwNDcwODQ0YzdiYzdjNmU1YjcwODBlOTgzZjRjMjM5NGVlMTYwZDIgbGVnYWN5LXRydW5rCisxMDI5NCA2NDMyY2JhZDgyOGRjOWM4YmYzYTQ1NTRiNTU1YTBjYjJlMzNmNTRkIGxlZ2FjeS10cnVuaworMTAyOTUgYTcyN2FlNmJmZTUwYzU4ODA1NGQwOTYxY2IxYTM2ZDA3ZDkwYjgxNCBsZWdhY3ktdHJ1bmsKKzEwMjk2IGNjNDk0MmYwZWM0Yzk0Y2JjOTdhOWUwYTRhOTQwOTkyZTRmZmE0MjMgbGVnYWN5LXRydW5rCisxMDI5NyA1MTMyMjU4ZGE3OGU4YWY3YmU4OTMzNTg3OTIyYTJjNTE1MDI2ZmVjIGxlZ2FjeS10cnVuaworMTAyOTggNDYxNzM4YWFhNTMzZDJjY2M4YmU5YWQ4NWZiNWE4NTQ1OGUzMmNhNiBsZWdhY3ktdHJ1bmsKKzEwMjk5IGEzNWI1NDE0ZmRkOWJiNmI5NzUxMzM0ZDlmMDZiYmYwMWM0NTgxYjcgbGVnYWN5LXRydW5rCisxMDMwMCBkN2FiYWQ3MGY2ODExNGQ0MjFjNjUxNDRmNDMzN2IyZDdmOTllZWNlIGxlZ2FjeS10cnVuaworMTAzMDEgMjA5MGY4ZjlkNWQyZDQ5NjM1YzYwZDdmMDY5NmYyM2FmNWY0NjI0ZSBsZWdhY3ktdHJ1bmsKKzEwMzAyIGVkODU2ZmNjZjYzOTdmZmU5NDdjYWMwMGY2NzViODM5Y2VhMWEzNmIgbGVnYWN5LXRydW5rCisxMDMwMyBkMWIyMzUwNGJkOTljM2IxNDM5NmM1ZDhkOWQzMDhkOWYwZGYyZDRkIGxlZ2FjeS10cnVuaworMTAzMDQgMDU3NWQ1YTE3MjE4NTZkMjAxYWI2YTI0YTU5OTA5ZDdkZGNkOTU3YSBsZWdhY3ktdHJ1bmsKKzEwMzA1IGI4NWE2NzViNjUwM2U1ODU5Nzk5YTg3YjA4NzA1MDVkOTRmYTI4NDQgbGVnYWN5LXRydW5rCisxMDMwNiAyOWRjNWQxOTI4YmZlMWEyMTRjMDRmNGJjZmE4YWE0MTI1NjM5NWEzIGxlZ2FjeS10cnVuaworMTAzMDcgYjcxZDFiZGQxODdkZWU2Yzk3M2FlY2Y0ZmQ3ZmRiZjUyNjZhODEyYyBsZWdhY3ktdHJ1bmsKKzEwMzA4IDk4NmE3NGMzYTIyY2EwZmE3ZTQzMjRjMDczZTU0MzU5OTk2ZmQ5MzQgbGVnYWN5LXRydW5rCisxMDMwOSA4ZjBlMjljZTU5ZWY0MTc4ZTdjYTE1MDhiZGIyMTE5YmVjZmVlN2MwIGxlZ2FjeS10cnVuaworMTAzMTAgZTJmYjI1Nzg0NTMwNDllMDk0NzcyYWQ2NjEzYWRmMThmNTc2OWU1YSBsZWdhY3ktdHJ1bmsKKzEwMzExIDM0Mjk5ZTA5NmUzNTM5MGEzNDJkYzc4ZDg2YjlmNDM2YTY0OGY2YTcgbGVnYWN5LXRydW5rCisxMDMxMiAxZjhmMjAwMmJmYjlmMDVhNTBhNTdhZWY3OWU0NjJmYjliOGZhNTZjIGxlZ2FjeS10cnVuaworMTAzMTMgZDE0YjcxMjBjNTUxOGQxZWRiZTMzNGM3MmVjZDNmNjRlNWQyZDc2ZSBsZWdhY3ktdHJ1bmsKKzEwMzE0IDY0M2U5NzI4YWE0OTJlODQ2ZTVhOTE2OTI1NjhkMzQwNmM5N2ZlOTQgbGVnYWN5LXRydW5rCisxMDMxNSAxNDdjMTA2N2NhMzNkMTRlYTliNTk1YTljYjczNzM3NmI2ZDlkYzUwIGxlZ2FjeS10cnVuaworMTAzMTYgY2E3MzViODRhOTM5YTVhMzRkMWUwMzI5NDQwZGE1YzkwYmY4YmUxNSBsZWdhY3ktdHJ1bmsKKzEwMzE3IDk4ZjZlZDEzMWI3NWNlZjQzZjg2NzE4NWRiM2Q0NWEzOTYxZjE0MjYgbGVnYWN5LXRydW5rCisxMDMxOCA1NGQ4ZTg1ZDNjMjg3ZGMyNTQwNzdlMWRiNzJhZDA3YTQ4NjJkNDAyIGxlZ2FjeS10cnVuaworMTAzMTkgZmM5NTA0MzNkMTU4ZTU2ZmQxNDVhNTQ3NzI5YWFiMzVkZWMxMWNiNSBsZWdhY3ktdHJ1bmsKKzEwMzIwIGQ0ZjUzMjFiOWQ5ZTg1NmZjMmM2ZjAwOTdhNzIyMzlhMDIxZTRjMmUgbGVnYWN5LXRydW5rCisxMDMyMSBhYWEyMDRhMDVmODQyMzI3MTUxZDI5M2M1MTQwODI5ZTlmZjQ3ZGQwIGxlZ2FjeS10cnVuaworMTAzMjIgY2ExODUwNDgxZTAyYTQxYTMyYjM4ODM2OWIzODllYWQ1NGFkMzQ0NiBsZWdhY3ktdHJ1bmsKKzEwMzIzIDQ5MWUzMDA1ZjU0YjU0Njg2Y2JmMjJmZjc0OTA5MWZlODExNzJiZDggbGVnYWN5LXRydW5rCisxMDMyNCBhYWM1ODVmZTk0NTJmYmRlZmM4NmY0YjA3MDkwYzJiZmM5NGY3YWFlIGxlZ2FjeS10cnVuaworMTAzMjUgNjcwOWEwMmY2NzE4MDM4ZGYxMzJkMWUxYzc1MTE3MWRhY2IwMjk2MiBsZWdhY3ktdHJ1bmsKKzEwMzI2IDk0OWI1OTgyMDE4NWFmOTExYjg3NGQ5MmI5MzY5ODc0NzA3NWMzZTYgbGVnYWN5LXRydW5rCisxMDMyNyA2YzZhNDhiYzU4MTczZTcwNGY1NmNmOGRlYWU4NTg0YmVkODc1ZmVmIGxlZ2FjeS10cnVuaworMTAzMjggM2M0ZjczNmQ1ZTAxMGNjZDYyN2M1MmM1ZGMzYmY1MzQ0ZWRiMzIzMiBsZWdhY3ktdHJ1bmsKKzEwMzI5IDRmYmU2YzljNWQ4MTFmZDRmM2VjY2M0NTY4NWMyN2FjODlkNGE1NzggbGVnYWN5LXRydW5rCisxMDMzMCA5ZDNiNDAxYmFjNmRlMmM3MDkzZGI4NzZkYzYyZmY3NTc1Yzc5YTgxIGxlZ2FjeS10cnVuaworMTAzMzEgZGIxZTQ5ZDUxZmUxMmMyNzU4Zjc5MTJhMGI3ODgwYTk4YTcyOTVhOCBsZWdhY3ktdHJ1bmsKKzEwMzMyIDZlNGVhMGVkYTIyZWNjOWJkMmY4MDNlZDA3OWVjNTFlY2QxNWIyNDEgbGVnYWN5LXRydW5rCisxMDMzMyBmMzRhNjU4ZTdjMTU2NWI2MTZlNGY5MTZjZDMyMzkzMjIzMWFiNmM0IGxlZ2FjeS10cnVuaworMTAzMzQgMjYxYzYzOWI5ODQ3MzI1NDg3NTI1NjBkY2I1NmMwZWYwMzI1NzdhNSBsZWdhY3ktdHJ1bmsKKzEwMzM1IDFmMWY5NDk1MDVhZjA0YTExOGVlZThjNzdiYWFkNzJlNmQxNzUyYmEgbGVnYWN5LXRydW5rCisxMDMzNiBiNzViMmY5ZDNjZTEzZTk2YTY4ZDMwNjhjNWFhNGRjOWMyZGQ3NDU2IGxlZ2FjeS10cnVuaworMTAzMzcgOTU2NzE5ZWE1ZjVhNmRiY2E0ZmZmOTMyZmJhMzY3MGVlMDRmMjAyZSBsZWdhY3ktdHJ1bmsKKzEwMzM4IGI4NDc4NTA0Yjc3OWJiMjc3ZmNkMzhlMmYyY2MwMGM3NjgyYzgzMDAgbGVnYWN5LXRydW5rCisxMDMzOSA4NDJlZDZiYmQwNjYwYTdhYTk1MjUyNTRkZWJjMGFiYTRjNWFjYTE2IGxlZ2FjeS10cnVuaworMTAzNDAgYjBiMzNhMzU3Yzc5ZWQ2NDAxNjJmYjc5ZGI1ZDdiZTQ4YTU0MGFkMyBsZWdhY3ktdHJ1bmsKKzEwMzQxIDllMTBjODYyYWJmYzFhMjgwYjhiYWFjNmVmYWE5Y2UxMzQxODljNTYgbGVnYWN5LXRydW5rCisxMDM0MiBlODVkNmRiN2JmOTc3NTBhNDBiNDRhODkyMjlhYWRhNjk5OWE2YzdhIGxlZ2FjeS10cnVuaworMTAzNDMgYTNhZGIxNmYwODk1ZjBiMjk5Y2I3MTEyNjI3MWE2OTcwZTg0NGFlNSBsZWdhY3ktdHJ1bmsKKzEwMzQ0IGQ3NzNkYjA2MzU1YzA2OThkMWFmZDc1YzcwYzA4M2YwMGRiNmFlOGYgbGVnYWN5LXRydW5rCisxMDM0NSAyMWE3ZTNjMzI0ZGY3ZmFjZTlmYTAwM2NhOTdjMDRjZDNiZWQ0OGQ2IGxlZ2FjeS10cnVuaworMTAzNDYgMTc2Yjk5ZTY5NjViZTkzMjY4NjMxZWFmNWU4YzNmZDQ2M2RkNDBjNiBsZWdhY3ktdHJ1bmsKKzEwMzQ3IGI2OWZhOWQxNDJjYTVhNzhjM2Q2ZmVmZjI0MDA4ODg1Nzk1ZGU0ZTEgbGVnYWN5LXRydW5rCisxMDM0OCBjNzZhZGFmNTEyZDY1NTNhZWJmMWY0MDc1MTc0OThiNDgxOTBkMDUzIGxlZ2FjeS10cnVuaworMTAzNDkgYTYxZmRiOGE0NDllZTFmMDM2M2JiZWMwZTgyOGYwMzJjMGRlNWMwMCBsZWdhY3ktdHJ1bmsKKzEwMzUwIDMxZmE4YTBmZDE3ODcyZTQyZmRhZDc3MDk0ZDIxOTA2NTViMjExMjYgbGVnYWN5LXRydW5rCisxMDM1MSA2YmM0ZjgwNzI1ZDZlMjhkYjRmNmQzMmY4NzU0OTFkODdiMThhNjkwIGxlZ2FjeS10cnVuaworMTAzNTIgZDE1MTgxYTBjZmJhYjg2MjVhMTI4OTJkZjQxZGE0NWE5YmFjMzY2MCBsZWdhY3ktdHJ1bmsKKzEwMzUzIGI1ZWRlMTMzZDkyMTZhZWZkNDI4Yzg1MTNhM2FiZDdlMTA0ZGUxMjMgbGVnYWN5LXRydW5rCisxMDM1NCBkMDdiOTdkMjlhOWUzMmExMmNkMTU4MzlhMzA4ZDRjNWE1ZGY3Y2M0IGxlZ2FjeS10cnVuaworMTAzNTUgMzkyMzg4YzUyZTIxNzE3ZWYyM2UzZTk4MGFjYjBjMDY4Y2VmNWVlYSBsZWdhY3ktdHJ1bmsKKzEwMzU2IDhmNDI1ZjhmNGJlMmRmNWRlMGNiNzdiNDc3NWM2YWYxZmNhNWJiMmEgbGVnYWN5LXRydW5rCisxMDM1NyAwYTg3M2YyYjY0ZjQxODJhM2I4MjA3YzU5N2FiOGZhMjQzYjhmMzY1IGxlZ2FjeS10cnVuaworMTAzNTggOGU1MjIzNjgwYTlkYTRjNjg5ZmJkYjJjYmM0MDUyYThlZWFlMGNiNSBsZWdhY3ktdHJ1bmsKKzEwMzU5IGFjMmQxYzFmMTk3MWYyYTkzZGVkMjE3ZmNjNzU0YTZkZjIwZjhkYWEgbGVnYWN5LXRydW5rCisxMDM2MCA0MjdhOWIxYzlhYmQ4ZTEyMGUyYmYwYmM5ZTdlZDZmN2E2ZjQwMWNkIGxlZ2FjeS10cnVuaworMTAzNjEgYmRlNjlkZmMyMjRmMGU3MzdiODY2ODA2M2RjZDU2YzZmZDFjOGRiMSBsZWdhY3ktdHJ1bmsKKzEwMzYyIDYzNzBmMTU5M2M3MjBiOTJhMTNkZjcyN2I5ZjMxY2Q1ZTJjYmI1ZjMgbGVnYWN5LXRydW5rCisxMDM2MyBiMGZiZTZiNmRjYmYxMWIxYTEwMjEyYzM5NzNhMzc4NDJkNjkyMjI0IGxlZ2FjeS10cnVuaworMTAzNjQgZTgzM2JlZTVkMDVmYjI0ZTc0MDA4MmRjZGQ2M2FhZDhkYjJjMWViNiBsZWdhY3ktdHJ1bmsKKzEwMzY1IGRmYzhkZThmMWVjM2U2OWIyODIzY2ZmZGZkYzYwOTllOGJhZTg3NDkgbGVnYWN5LXRydW5rCisxMDM2NiA0MmQzZjFmNzFjNTZjZmI5OWI5YmVhMDFhY2JkYmRjMGFjMDFjM2EwIGxlZ2FjeS10cnVuaworMTAzNjcgYWU5Nzc4YzRmZmNhZjYzNjhlNmUwZWE4ZWFmZTI4OTUyZjY0Y2YyYiBsZWdhY3ktdHJ1bmsKKzEwMzY4IGVmYmI3ZTU3ZTZmODZmYzBmNjEwMGU0NDg0MjJkODQ1NDI4NGMxOTQgbGVnYWN5LXRydW5rCisxMDM2OSBmOGY2NjNiNDMyYjQzNTZhOGJhZTIwNzBhNjY3YmIwZTg5ZWZmNzM1IGxlZ2FjeS10cnVuaworMTAzNzAgNDFjN2Q1MjQzYmU5MzFmODNmZWQ2MWI2Y2YyMzllZDFlOTk1MzI4NSBsZWdhY3ktdHJ1bmsKKzEwMzcxIDhhMzg5YzhmZTZlZmQyYTM1YmEzMjc5NmRlOWQ3ZjQyMzBlNmViYTkgbGVnYWN5LXRydW5rCisxMDM3MiAzNzIzNGUxYmI3NWZmZGRlYjg1MzFiNTRlNjhmY2M0ZmRlZjk1ZDgwIGxlZ2FjeS10cnVuaworMTAzNzMgZGJkMmRlMjZjOGQyMjVmZmVjMGZhYmZkOWU3OGVhOWRmMDlhZTBlMSBsZWdhY3ktdHJ1bmsKKzEwMzc0IDhjOTM1NDRiOTVlNGIzYzFjMTU2NzQ5ODZmMGI5ZDlhMjcwZDY4YTIgbGVnYWN5LXRydW5rCisxMDM3NSAyNjczODQ4NDM3YzM0ZDRlZDNhMTEwNGI2OGYyNmNjZGVmNGFhZjkzIGxlZ2FjeS10cnVuaworMTAzNzYgZTYwNjZiODEzYTcxNGQxNWU5NmU0MjE3NTMzMmY0OWYzYjBmM2Y5OSBsZWdhY3ktdHJ1bmsKKzEwMzc3IDI5YWIzZjYwMmQwMDIzYjVjMTkzNzMyNmE0NzhiOGRiNTFhMTc4YWUgbGVnYWN5LXRydW5rCisxMDM3OCBkZjYzNmRlZDJlNzAyYmRkZmRmODgyMmFhOGI4YzcyOTY0YWI4NmQ2IGxlZ2FjeS10cnVuaworMTAzNzkgNmEwMjk5ZWJjY2VmOTBkMDNkNGM4MDBmZTNhZTE3NGI1NGM2YTg5YSBsZWdhY3ktdHJ1bmsKKzEwMzgwIDhmM2JiMGIxOGE4MmJjZTQwNzE5Yzk0NGQxMzMwZmE4YjQyY2MxNzIgbGVnYWN5LXRydW5rCisxMDM4MSAxZWZlZTUwMzI1OWU1MWE0OGRkMDE2NjEwM2FmM2M5NTUyNjUwOTZmIGxlZ2FjeS10cnVuaworMTAzODIgOWEyNDZkNzRmY2I3NTJhMTQ2ZDM0YjlmOGExMTkxYzhhOWNiNzBhNiBsZWdhY3ktdHJ1bmsKKzEwMzgzIGExMTA0MjFkODZiNzMxNDAwMGZjMTg5ZmMwZTdjZWFmZTc0YmVmNWYgbGVnYWN5LXRydW5rCisxMDM4NCAxNzM2OGM5MmM3NjlhNTNiYzQzOWMwMzQxMTAxNWU5NTJjNjY0MGJiIGxlZ2FjeS10cnVuaworMTAzODUgM2JkNjY4ZGY2ZWZkYzJkNjM1MTNmOGVmNmVkMDI3OWQ3MGJjOTViNiBsZWdhY3ktdHJ1bmsKKzEwMzg2IDgwYjJhYzYxZmUwMzhhOGJiNjljYjBkMzk0NDA0NDlhNDk5MTc2OTQgbGVnYWN5LXRydW5rCisxMDM4NyA0YjU2NjZkZmY1ZTY3MjQ5NjdhNzUzOWI5MjUxYzY1MTE2Zjg4NWY5IGxlZ2FjeS10cnVuaworMTAzODggM2Y4YjU1NjRmMGM3YzI5ZTEwN2E1NDQxNDU3MzhkYjM4NzAzYjE1YSBsZWdhY3ktdHJ1bmsKKzEwMzg5IDFhMWQzMTQ3YjAyN2M0YjRmZTU3ODc3MjYxOTc2OTI1ZGVmNWNhNWQgbGVnYWN5LXRydW5rCisxMDM5MCA1ZWFmZDNlZGEwYWY0Y2FlZTBiNjIyNTI1MTNmYmJkN2UwNWE3MDYxIGxlZ2FjeS10cnVuaworMTAzOTEgYjcxYTEyNTc3NjRiMDMyNTkyZTYzNzAyNWVjZDY1NzAyNjgzZTkwNiBsZWdhY3ktdHJ1bmsKKzEwMzkyIDMxZjllMjY3NTE5OWUxOTU2MmRkOGYxNzEzYmNiMzJlZmRjNWVhMGEgbGVnYWN5LXRydW5rCisxMDM5MyA1NDE4YzA3MzBmMDA5NjE2MmE1YmRlNWUwMjFkM2RlOTJmMTE0NjdjIGxlZ2FjeS10cnVuaworMTAzOTQgNjRmM2U5ZWJmMjFhY2YzMjY4NDEyNTBlNWJjMTMyMzRmNTMyZjM2MCBsZWdhY3ktdHJ1bmsKKzEwMzk1IDFkYWVjZDY1YTdjNWVmYzllMGNkMTI1YzRjNDhiNmY4ZThhZDhlZjggbGVnYWN5LXRydW5rCisxMDM5NiBiYTliMWI0YWVhYjllZThhYWU1ZTdlYTc4NGJmZGQ2YTAyYmUxNDQzIGxlZ2FjeS10cnVuaworMTAzOTcgMTMxOGE0NzRiYWEwNmRkNjdmYTYxMmVkMWEzYjM3ZWYwNjIyMWY3NiBsZWdhY3ktdHJ1bmsKKzEwMzk4IDA5MDVmODY2NjgwN2YzMzg3NDNhNzZmNTM4MjE4YzIwYzlmZWMzYmEgbGVnYWN5LXRydW5rCisxMDM5OSA1ZmFiNTllYjRmYTVhMWNmNDcxOWY4NWJiYTcwNGQyNGM1Y2E4Mzg3IGxlZ2FjeS10cnVuaworMTA0MDAgNmJjMDUzNWRiZjUyNzc5MmY4ZGRhZmFkZjMzNzdkNDM0NDRkYTA5MiBsZWdhY3ktdHJ1bmsKKzEwNDAxIGRkZTBkZmZiMWEwOGFhZTQxODliYjM2MGUwZDQ5NWRiMjc2NGVlZGEgbGVnYWN5LXRydW5rCisxMDQwMiAwYmRjZWRjZDE1NDliNzU5NTFlYzNlYmVjMGYxMmY5MDQ3YzllMGM1IGxlZ2FjeS10cnVuaworMTA0MDMgNmJlN2FiMjQ2YTA1YjRjODFiMTI2M2E4YWE2ZDIwM2Q1MTg5NzJkYyBsZWdhY3ktdHJ1bmsKKzEwNDA0IDIzY2M2YWM1ZWJhNmMwNzYzMWM3Yzc2YzRlNThhODBhYTg0ZTgzY2YgbGVnYWN5LXRydW5rCisxMDQwNSBkZTkwYmJlODUwMTM3ZmUxZWZiNzRiNWI3MDhjYjlkZTAxOGUwYmQ3IGxlZ2FjeS10cnVuaworMTA0MDYgMzM0MDdjMGVmMTRmZmU1N2MxM2M1NWU1ZjAwNDBhMjZmNDkyYjY4NCBsZWdhY3ktdHJ1bmsKKzEwNDA3IGUyOWQ0MzVhYjE0MmYxZTg1ZGVjYzMxYzllOTNmODY3N2Y3ZTlhNDggbGVnYWN5LXRydW5rCisxMDQwOCAxMTI2ZTcyZTVlZTljOWE0OWExYjJkN2M4N2ZjMzViMzA1MWNlOWU1IGxlZ2FjeS10cnVuaworMTA0MDkgZWYzMDBlNmIwYzcxZGEwYmQ1YTgxZWNkMjA4YmNiNmQ3M2M5OWI2OSBsZWdhY3ktdHJ1bmsKKzEwNDEwIDlkOGMwNjY2YjBjYmJjMTRmNGJjODY5YTcwNTIxOTIwMmRkYTk3MDMgbGVnYWN5LXRydW5rCisxMDQxMSA4NjhkYzg0YmI1YjI5YWJlMmY3YTBkNjE3NjhjNjkwMDk1MmQwMzY0IGxlZ2FjeS10cnVuaworMTA0MTIgN2M3ZmYxYTM2NTIxN2I0NTNhZTE0NTNkNDA5NDVmMGFmOWI4MGZjMyBsZWdhY3ktdHJ1bmsKKzEwNDEzIDA1MjJhYjIxMGZjYmIwOGE3NjUxZmJjMGE1MGYyN2M2OGRhNmFiZTAgbGVnYWN5LXRydW5rCisxMDQxNCBiMmFkY2Q3M2MxNTBiODJjNTM5OTc3NGY4ODA0MWNjNWRkOWY2NTkwIGxlZ2FjeS10cnVuaworMTA0MTUgNzA4ZGU0Y2I5NmViMjFiZGFjOGJmNjVkYTQwOTU4ZTIwMGQzZDc1YSBsZWdhY3ktdHJ1bmsKKzEwNDE2IGFhN2Q2OWQ2N2M4MWQ3ZGEzOTMzYWUwODUwYzRmZTJjMWMxZmNhNDggbGVnYWN5LXRydW5rCisxMDQxNyAxZjM4YTJiNTQ4YmY5ZDA2YTZhMjUxZTg0YjA1YmU2MDdmYjc0NWQ0IGxlZ2FjeS10cnVuaworMTA0MTggZjIyM2JmNjFiNGVlMDNiOGVmNGVkZjM5ZTk5YjVlNjUyMTExZjRjMCBsZWdhY3ktdHJ1bmsKKzEwNDE5IGNhNGUyNWVmNjFmODA2OWJkNjlhNjI0M2NkY2Q0NWUzZGNiYjg0MTYgbGVnYWN5LXRydW5rCisxMDQyMCBkM2VjMmU1MWY2N2EyMWI4ZTU0MzFlMTRjM2ZlNzM2NTljZGEwYWE4IGxlZ2FjeS10cnVuaworMTA0MjEgMDU3ZTQyMmQyYzYxMDkwMDhlMjA5NTI3ZGIwZDQ2OGRiNTU5ZWExMyBsZWdhY3ktdHJ1bmsKKzEwNDIyIDkxZWNkYTlkNTI0NTFkZjczZWY2ZDA1MTAwY2NhOWEzNjNlODVjNTEgbGVnYWN5LXRydW5rCisxMDQyMyBlZTJhYWEyZjcyMmE4NDdjYzZkZmY5MTIyNmZlY2E5ZjkwMjc2YzA4IGxlZ2FjeS10cnVuaworMTA0MjQgYjMxYWJjMTMxYzNkZjk0M2YwMmY1NjQzYjU1NDViZTM2M2ZjY2FmYiBsZWdhY3ktdHJ1bmsKKzEwNDI1IDE2MmRiM2QwYzkxNjdlMDlkNmQ3NjliMDdiMTMzYmIyMTAyMDY2YjggbGVnYWN5LXRydW5rCisxMDQyNiBkYzEzMmNjMzk1NzNhMGVhNmRmMmQyNmM5OTkwOWVhZmI1OGM1ZjJlIGxlZ2FjeS10cnVuaworMTA0MjcgYWQxMTQ2MjBmOGMyNzgyZDU3N2RiMmQwNDNjMTQ3NTJkMTllNDhmNyBsZWdhY3ktdHJ1bmsKKzEwNDI4IGEyYzFiM2UxNzk1MjZkZDI0ZDAyYmRhNzc0YjUyZDQzYmQ1MTQ0NzQgbGVnYWN5LXRydW5rCisxMDQyOSBmMDY5MTM4MDhmZTFkYWNlNzVlMTIyMDliNzY1Y2FmZjFjMTc5Njg1IGxlZ2FjeS10cnVuaworMTA0MzAgNThkNjgxNWFmMDAyZTY3OGZlYjg3M2E5NWJlNzg2NjUwNzlhY2I0MCBsZWdhY3ktdHJ1bmsKKzEwNDMxIDljYmNiNTkzMWQ4MDNkNjg5NjAwMWVlZTU4OWNmZmM2NjMzOGQ3MGMgbGVnYWN5LXRydW5rCisxMDQzMiBmNDJiNzU3NzU1ZWIzMmFiZWI2ZDgyNDc4NzJiYzc0MmI1NjJkNDNhIGxlZ2FjeS10cnVuaworMTA0MzMgNzJkOTk2MTU0MGQ4NWIyMDAzNjk0OWYxNGI0YTQxYzI4NDYyZjY1ZSBsZWdhY3ktdHJ1bmsKKzEwNDM0IDkyZTM2MTE2YWY0MjFiY2ZlZWM5ZjkwNmJmYmRiYzc2ZDk5OGVkYWMgbGVnYWN5LXRydW5rCisxMDQzNSBlYmRkNDBlMjgxNjAyNWM5Zjk0MzJiYTlhMzliMDkzZTA4YjI3NmQ2IGxlZ2FjeS10cnVuaworMTA0MzYgY2Q5ZTY2NGExYTlmYTg0YmNjNjFkMmFkODFlMWUyZDI3ZmQ0YmZhOCBsZWdhY3ktdHJ1bmsKKzEwNDM3IGZjMDhkYTJjOWEwZmE3ZDk2ODJlMTFkMTBlNWNkMzlhYjU5NzBhMDMgbGVnYWN5LXRydW5rCisxMDQzOCA4ZjM2OGRmMTczZTY4OGM0NjRjOTA2MzY0N2RiYzUwYjE5MWJlM2Q2IGxlZ2FjeS10cnVuaworMTA0MzkgOWUxMTNhYTM3NThkYTEwNDhjN2FjZTMzMDdlZDI3N2NhYWE3ODRjZiBsZWdhY3ktdHJ1bmsKKzEwNDQwIGZlYzhlYjJhMzgwZGQ1MTcxYzY1NTA5Njc2NTU3MDdlNTQ3MTBhOTcgbGVnYWN5LXRydW5rCisxMDQ0MSA4Y2EwMTA4MzE0MGNiOTkyZDEyYjZjZWQ1MjNiMTZiZjEzNmIxNDUxIGxlZ2FjeS10cnVuaworMTA0NDIgY2NkMWM5NjNlNTA5NWRkZTc0NGVjNGRhMGM0OWUyMDkyYzI0ZWMyNSBsZWdhY3ktdHJ1bmsKKzEwNDQzIGQ2ZmNiZDM3MTg1NWUzNjQ3ZjE4NTk3MWEyMjcxMDRiN2NkYTM3YWIgbGVnYWN5LXRydW5rCisxMDQ0NCBhZmQ1NGY4OTVkYzMwMzBkZDMwZDgwOTdmZmJiNWVlNWE2MDliNWU0IGxlZ2FjeS10cnVuaworMTA0NDUgZDFlYTEzY2Y0NmY3YmM1YWNmZTRlM2JkMmIwMjVjZGJkN2NiNmNkYiBsZWdhY3ktdHJ1bmsKKzEwNDQ2IGU4ZDBiODdjOGQ2YjFmYjBhMjJmNTc4MjYzYWJkOThmOGExMWVhODAgbGVnYWN5LXRydW5rCisxMDQ0NyA4YzI2OGQwZTg4MjIwNTRjY2I1M2E4Y2UyOWFkNzAyNjQ5MjZiYWQ4IGxlZ2FjeS10cnVuaworMTA0NDggYmJkMmI1ZDhkMGI2YzIyYmNhNGY3ZTAyYjA0ZTFkZmFhZDk4NWQ2YyBsZWdhY3ktdHJ1bmsKKzEwNDQ5IDJlZjZlMDQyNDE3OWNhZmY5YTM2ZTc3NThkMGE3MTcyMmFjOWU1ZjQgbGVnYWN5LXRydW5rCisxMDQ1MCAzMzhmMWRlZjQzNzA5YmY0ZjMyZDViOGQwMWY3ZjZmNjQ2YjgzYmNlIGxlZ2FjeS10cnVuaworMTA0NTEgNGNlZWUxZWY5OWIwMzI4MTBmYmI2MjM3ZGViMDE4Nzc5ZGUwYjczMSBsZWdhY3ktdHJ1bmsKKzEwNDUyIDQ2OTI4ODQ5OWM5YmRlOWQ1M2JmMmRkNGI0MTMzNGZmMWI0ZTRiMzcgbGVnYWN5LXRydW5rCisxMDQ1MyBmZjEwYjAzMjhmZjM3NTBiYjMwMzMxMzVkMDYzMjY0ZjkzYTc5ZjkxIGxlZ2FjeS10cnVuaworMTA0NTQgMDkxNDgxZGJlMTNkN2M1MTI3OTgwN2IyZmZkYmNhOTIxYzFlMjQ1YSBsZWdhY3ktdHJ1bmsKKzEwNDU1IGMxMmM2NjFmZDE0ZWY0YjU3ZjUzMTdhOTRhMjNjMmJjNjg1ZjZiY2MgbGVnYWN5LXRydW5rCisxMDQ1NiAzZGM1ZDBmY2IxNjdhYzFjODM1YjRhMzQ5ZDExMWRhMzc4OTFhNmY3IGxlZ2FjeS10cnVuaworMTA0NTcgNzUyMjM1ODQ2MTgwNDE0ZGRkODZjMTU3ZTM3MDRmMjU0NzIxODI3ZCBsZWdhY3ktdHJ1bmsKKzEwNDU4IDUxZDMxZmNhZWVmM2EyMTAyNDgwODNkZjc5ZGJjNjU5ZGI4ZWJkZGUgbGVnYWN5LXRydW5rCisxMDQ1OSAxNDNjNTU2ZGViMmY4NTU5ZjU2NGRlMTQ3ZTBiZDJiYjY0NTFiMTFkIGxlZ2FjeS10cnVuaworMTA0NjAgY2M0NzczM2I0ZGQyMmM1NWQyNTg5ODdhZjFhMGI2MWM1MDY1ZTU3NSBsZWdhY3ktdHJ1bmsKKzEwNDYxIDg1ZTg4NmRiMTliMDU5OGI5MmNkMWI1ZDc3ZGEzY2RkNDM1YmMwNGMgbGVnYWN5LXRydW5rCisxMDQ2MiAwOTk2M2EyYTI0ZGIwODk4ZTQzYmYzMzFiMzE1YWFjNGQ3ODVkODE3IGxlZ2FjeS10cnVuaworMTA0NjMgYTkwOWEyODY5YWM1OWEwYmVjYzBmNjczYTQyNjFkNTEyZjYyMGMyZCBsZWdhY3ktdHJ1bmsKKzEwNDY0IDA2ODMwM2Y5MjVlYTg3MmJkMTFjYmU5MmY4MjdhNjlkMzQwNjAyYzIgbGVnYWN5LXRydW5rCisxMDQ2NSAxZDBlYjJlOTZkNzY3OWU5ZjdmNDZlMjBjNzk0OGI2MGViMWJmYzc3IGxlZ2FjeS10cnVuaworMTA0NjYgYWI0ZjY0NTYxZmJhMzI4ODEzNGE3NzVjMzRkNmRmOTkxYzk2ZDI1NyBsZWdhY3ktdHJ1bmsKKzEwNDY3IDk3MWI1YmJkOTJlYzAyMGVhYmMwYzczOGYxYmM3N2Q0YzVhY2UzOWMgbGVnYWN5LXRydW5rCisxMDQ2OCA2OTdkZjkzZTVkZGI0NzY0Y2I0MTVmNjcxYzFlMTU5MWNiYmUzYjZjIGxlZ2FjeS10cnVuaworMTA0NjkgMDI2M2QzMzI0ZjBiMmU5OGVmMWY2NWYyNzRjN2MyYWFiZjllNzg3MSBsZWdhY3ktdHJ1bmsKKzEwNDcwIGI5ZWI4MDU1NzliYTg2MzFiOTEyODZlMzFjYjczYzU5YWNlMTY0MjggbGVnYWN5LXRydW5rCisxMDQ3MSBkZTEwNTY2ZGVjNWNkMWMyODZlNWJkNzVlZDI4YmM4ZGY1ZTliNzYyIGxlZ2FjeS10cnVuaworMTA0NzIgNmU1MDc5ZThmYTZlMDUzM2Q5Mjk4YmU2NzUxMTJmNmY0ZWMzNjg1YiBsZWdhY3ktdHJ1bmsKKzEwNDczIGNmMGNmMjFiNDU0NTQ3NzFjN2VmNWNlNjg3ZDBjOWY4OTFiNDU4ZDUgbGVnYWN5LXRydW5rCisxMDQ3NCA2YjNmZDI0Y2MwNzc2ZjMyYTE4ZjRhZjFhMjE1NmIxOWMyNGExMzA4IGxlZ2FjeS10cnVuaworMTA0NzUgZThjNGIzZDM4NmU0ZjJkMzM3MmQ5NWMyMWNkZjkwOTg3ZDQ5ZmYyNiBsZWdhY3ktdHJ1bmsKKzEwNDc2IGRhZmZkZTdhNjg5MTc3ZjFiMTFhMjA4OWI2MTBhOWE0Yjk4NGFkYmIgbGVnYWN5LXRydW5rCisxMDQ3NyA4OTM1OWQwNzJlNzI3ZTcyYTZkNjQ1ZjFmOWRjNzhlN2JhODU1MDllIGxlZ2FjeS10cnVuaworMTA0NzggMWQ1MjY1MDdjZDllYzczZTAwOWJjNjk0MmE5M2YyOGEzMzRmZDBiNiBsZWdhY3ktdHJ1bmsKKzEwNDc5IDNkMWQ5ZTI1ZWIyMmM2MzI1N2Y3OWE5YWE2NWI5ZTI3Y2E2MjlmNTggbGVnYWN5LXRydW5rCisxMDQ4MCAwODM1YjhkZjU0ZjgwZDIzNTQ1MWUyZTZhNGI0NmI0NjZjODg1ODQ2IGxlZ2FjeS10cnVuaworMTA0ODEgYmRmNTdjODRkZjZhYjUxY2MzNGM4ZmNjNGNiNzNjMGQxZDI5NzM0OCBsZWdhY3ktdHJ1bmsKKzEwNDgyIGM4YTMxMTE0NDcyNjdhMTRjMzMwMThhMWIzMTc0ZjI5MGUwYjc3OTIgbGVnYWN5LXRydW5rCisxMDQ4MyBiNDIwYWU4NTIxM2M3OWYwNWNkYzM2OTU5YzcxYTFiMDQ3NzBmOGY5IGxlZ2FjeS10cnVuaworMTA0ODQgNWRiMzQ2ZTljOGY1NjBkY2ViMTZiYWFiZTRkYWIwZWM2NDI3MWY4NCBsZWdhY3ktdHJ1bmsKKzEwNDg1IDkwMDMyMDQ5MWI5MzZjOWZjYTNmNzIzODQ2NGQwMGZjZDZhYzYzYjkgbGVnYWN5LXRydW5rCisxMDQ4NiBlOTg2Njg2ODNiZWQ2MzU4ZjljNWE3MzM5ZTk0NDBiN2I0ZjAxMDc3IGxlZ2FjeS10cnVuaworMTA0ODcgYTg0MmM5ZTYzMjgwYTk2ZjczOTRjMzFiNzIxMDkyZjM4YWQ2ZjYwZCBsZWdhY3ktdHJ1bmsKKzEwNDg4IGRiYzExZGQwMmYwOTU5MjM1MGI5ZmFmZDMwNTE1OWRiOGExNGJiNWMgbGVnYWN5LXRydW5rCisxMDQ4OSA0ZjRlMmFhZDFlMGFiNWJhMGFiYzJjZTgyNmUwNDk3NmEyOWQ0ZmQ1IGxlZ2FjeS10cnVuaworMTA0OTAgYmY2ZTkyMGMwZTc5OWQxNjEyOTQ3YjhhYTFlZDA0NzQyMzdjZDMyMSBsZWdhY3ktdHJ1bmsKKzEwNDkxIGNhMGM3MjU5MTIxMWNkOTI5ZjNmODcxNDdhNGFiNjQ0ZWRmNTE4NDAgbGVnYWN5LXRydW5rCisxMDQ5MiA4M2JhNTMwOWZmMjI2ZTFjNGJiMjJkMjVkMzFmNWJjZGJhMTQ5ZDA5IGxlZ2FjeS10cnVuaworMTA0OTMgMmIwOWE1ZDI2MzY4OGQwNzc3ZjZiNmI4ZWNkOTJmMzMxNGEyZmNlMyBsZWdhY3ktdHJ1bmsKKzEwNDk0IDUzZGRlNDIzMjVmOGE5OTQxMzA2OTQ3NTYxYmVmOThkNDgxM2UzN2QgbGVnYWN5LXRydW5rCisxMDQ5NSA2ZThiZTYwOTZlNTYzMDJmYTU3OGM2ZDg0NTljNWM1M2ZhNTA1MDEzIGxlZ2FjeS10cnVuaworMTA0OTYgYmJiZDBiMTA1ZTI3MzVmZWU3N2M5OGY0YTg2YWMxZTQ2ZmFmZDIyNiBsZWdhY3ktdHJ1bmsKKzEwNDk3IDQ2OTk5ZGZjZmFlM2YwNTA2N2Y2Y2IxY2QzNTNmNTdjMGMwYjA4NjYgbGVnYWN5LXRydW5rCisxMDQ5OCA1MjY0Y2FjOGY5MDM1ZjJjNzRiNTQ1MWI1N2Y5ZTY0MzdiNDc0Zjk2IGxlZ2FjeS10cnVuaworMTA0OTkgMDExYWU3MWZlYTk2NDlhMTdhNDg3Zjc2YjgwN2NlYWM0MWQ4YWIyYyBsZWdhY3ktdHJ1bmsKKzEwNTAwIDliODkwMjMzOGUxNGI3MDlmMjM4NWFjZTE1MDcwMDdhMjVkMjVlN2UgbGVnYWN5LXRydW5rCisxMDUwMSA5MmJhN2E5ZTNiOWQ5NzE5ODIxOWVkZDQ2YzgwNjgzMjYzM2JjOWNjIGxlZ2FjeS10cnVuaworMTA1MDIgM2I5MWFmZmEzMzNlOTg0YTYwNjE3N2RjZjEyMmUzZDdlOTNhOWYwZCBsZWdhY3ktdHJ1bmsKKzEwNTAzIDVkMmJkNjczOGViNjJlNTUyNWE1ZTUyN2VmMzYwNzAwMDUyMTM3MWYgbGVnYWN5LXRydW5rCisxMDUwNCBkMTU3ZWU4MjE3NzVjMDk5MzQ1MmM3MjBjZGY0YjAyZjhiOGI5ZTMyIGxlZ2FjeS10cnVuaworMTA1MDUgNDlmMWNmNGIxNzRjYzYzZjNjMWQyZGIzMjBkMzFhODg5ZmVkOTQyMyBsZWdhY3ktdHJ1bmsKKzEwNTA2IGQxYzFiMjA3NTRhODE3ZmZmNTE0OWE5MWMxMGE3YTk5MGZhNjUwZDMgbGVnYWN5LXRydW5rCisxMDUwNyBkOTlhOTA1MjZhZTBiMTkyZWVjZmMyMWU4MThmMWVjMWExN2JkNDBhIGxlZ2FjeS10cnVuaworMTA1MDggZjUzMjZkMzU4NjYyYmIyMTBiOGYxNGJiZDU1NjJmZjZhOWJhN2FlNiBsZWdhY3ktdHJ1bmsKKzEwNTA5IDVkY2Y5YjVkMzNlNmU2ZjBhMGQwNDc2YWM1MDQ5YzcwY2JkMGFjMzEgbGVnYWN5LXRydW5rCisxMDUxMCA5NTE0MmM4YTA5Yzg2YTkwNzk0MmYwMTYzMThlM2VlMDk1NGQ0NzRjIGxlZ2FjeS10cnVuaworMTA1MTEgM2YwMzYwMzc2Y2EwMDE1MTY3NmQ5ZGZjMTlkZWFkYzU4ZWM1Y2Q3NSBsZWdhY3ktdHJ1bmsKKzEwNTEyIDcxMGYzYjc4MzUxNTNiYjc2ZTcwOTczMDdmZWJlYjRiMGZjN2VkYzkgbGVnYWN5LXRydW5rCisxMDUxMyA1Y2NlODFlMjMzNDk5NmM5OThkMGY2ZjJhMjYxMTUwYTQxY2Q1OGI0IGxlZ2FjeS10cnVuaworMTA1MTQgM2ZmZDQ1ZjA1ZTM5NThmNThlNWJjZmU1Y2EwNzg5NjY0ODFhNDMwZCBsZWdhY3ktdHJ1bmsKKzEwNTE1IGNkMzA5MjA2OWY1YTM5MzkxMmJjMWEyMDhjZDU2MjBjMTY4MjA4ZjMgbGVnYWN5LXRydW5rCisxMDUxNiA2YzU5NDk4ODU3MmE3ZGUyNzEzNjdlNDZhNTVjMTM0NTBlYzRhNzU4IGxlZ2FjeS10cnVuaworMTA1MTcgZTA5MWU5ZDQ5NWQ1YTlkMDY3YzdjNDNkNmJmZjA0ODc1NTQ2NjAyZCBsZWdhY3ktdHJ1bmsKKzEwNTE4IDVmMzVlMjc4MTAzMmUyMzBjZTA1MWRkODdjMGI0ZDI3MTI0MWY4NTAgbGVnYWN5LXRydW5rCisxMDUxOSA0M2JlMGI5MDI3MTcwODg3NGMwZGY2MmE2NjlkYmJiNjkxYzE5NWE1IGxlZ2FjeS10cnVuaworMTA1MjAgYTM4NTUwNjEzYWYzZDlkOGU5ZWRiYzRmOWJiNDlhZjE0MDZjZDY3ZCBsZWdhY3ktdHJ1bmsKKzEwNTIxIGRmMGZhNWRjNTk5YWUwNjU0ZDc5Y2MyOTBiOWUwN2VkNWRjYTNhOTYgbGVnYWN5LXRydW5rCisxMDUyMiBlMjMzMzk2OWEyY2FjYTNmNzg5OGQ4YjE0YTk0MjIwMTllMmFlY2IwIGxlZ2FjeS10cnVuaworMTA1MjMgNDkxOWRlZTE4NzgxYzEzNzcxZTVhZDNiMDdiYmQ2ZTAwODJhZjdhZSBsZWdhY3ktdHJ1bmsKKzEwNTI0IGI4ZThhY2U3OWNmMDJjY2RhNzI1N2UxZDU3NGEwZmJjZjk1ODhhZjMgbGVnYWN5LXRydW5rCisxMDUyNSBiZDMwYWM4MzEyMTcyMzQxODgxOTNiY2NiYWY0Y2UxZjA1Y2UyNDhhIGxlZ2FjeS10cnVuaworMTA1MjYgMjU0ZmM5MWI2YjBlNzM4MDk1ODA3NGZlYjQ0YjdlYzE2N2IzODY4YiBsZWdhY3ktdHJ1bmsKKzEwNTI3IDY2OGNlMGVkYjRmMWM1NDI5ZDNkMDAyYjYyOThhYWU1Y2Q4MmI0ZjYgbGVnYWN5LXRydW5rCisxMDUyOCAwNzczMGI4MmExNDNmMjhmNTJmY2E0NWVjOGQ2NWI0MTA4N2UzODVkIGxlZ2FjeS10cnVuaworMTA1MjkgYTkzMDUyYWUwZGViNWE0ZDE2MGQwOTY4YTcwMGFkNDIwZmJlNTA3MCBsZWdhY3ktdHJ1bmsKKzEwNTMwIDVkY2M1YzRhMThiZGE2NDg1ZDk4YjcwOTZkYTI3OTAzOThjNjdkNjIgbGVnYWN5LXRydW5rCisxMDUzMSA3MDk5ZGU4M2IxOTFiOTI0NmZjOTA5OTE0NzMzYjU1YmU3ZTI4MTBlIGxlZ2FjeS10cnVuaworMTA1MzIgOWI4YjU3NGVmMDA3MWUxZjkwOWZlNzUzOGYyYzM1OWYyOTEyNTk4ZiBsZWdhY3ktdHJ1bmsKKzEwNTMzIGNiOGQ3MzM4MjQ4Y2VmNzdjODc1ZmIzNmVhYTg0NmEwOWVmZDljOTMgbGVnYWN5LXRydW5rCisxMDUzNCBhM2Q5MTJhZmM5MDlhYmNkZDJhNTMxNjJlNGZmYTc0MDJjNmNiYjMwIGxlZ2FjeS10cnVuaworMTA1MzQgNDRhYmE0ZDI2YjAxZmJhZTA0MDNlZmU2NTRmOWZkMDM0NzYwNjczMiBsZWdhY3ktdHJ1bmsKKzEwNTM2IGJjYWY0OGI5NGJiMzM4M2M0Y2ExN2E5MTllZjgyZmVhYjNlMmQ0ZjQgbGVnYWN5LXRydW5rCisxMDUzNyA0M2U4MDJjMTZhNWIxYWZiYjg2MDBlNThkMzIyZGI2MWNkMmE3ZTJmIGxlZ2FjeS10cnVuaworMTA1MzggNWFhY2RkMDk3OTQxMzkzZDZkYTZlZDMyYTI1MjQxZjQzODc0OTE4ZSBsZWdhY3ktdHJ1bmsKKzEwNTM5IGQ5YWM5MjQ2MTgzMjljYzQwOTk3MjExYzM2MTI2Zjk0MjM3ODFlYWEgbGVnYWN5LXRydW5rCisxMDU0MCA3N2Q0ZTZmNjYyYzFiZWUwNzZiNjIwZjZlMDllYjc5YmNlMTNhNWU2IGxlZ2FjeS10cnVuaworMTA1NDEgNDI4NWY4YjdiYTBiMmZiMTc5OTQ3YmUyOWU2NWRjYjgxMmVhMTBjMSBsZWdhY3ktdHJ1bmsKKzEwNTQyIDA3NjZkZjUwM2VhNTNkZjQxNmQ4YTVlNWViMWFmYWEyOWNhYTlmNTIgbGVnYWN5LXRydW5rCisxMDU0MyBkOTcwNDhmODkxYmYwNmFkZDlhYTg3OTE4NzNiYmQ1NDQzNmI4YzQwIGxlZ2FjeS10cnVuaworMTA1NDQgOThlYzQyM2NhNmZhOTkxMmE4MjBlYWEwNTZmNmRjZmQ3NGM3Y2NkNyBsZWdhY3ktdHJ1bmsKKzEwNTQ1IDIyNGI1YzM2YWZlZjg1NmI4OTk2ZjBiMzA1MWM4OGM0ODMxMjE1ODMgbGVnYWN5LXRydW5rCisxMDU0NiBmMGJkOWVlNzhhNTIxNzYzMTExZWU0OWE2YTU3Mjk5ZTBlYmIzYTZkIGxlZ2FjeS10cnVuaworMTA1NDcgYTdkZDBmNTJmMmI2MDk0NmFjNDUyZDNiNmM4OGQ3MTc2NDAyYjhhYiBsZWdhY3ktdHJ1bmsKKzEwNTQ4IDQ4ZTIzNDlkMTFjNjA5MzcyYmU4ZWJmMGU5MGRiYTNmNmRkZWI5N2QgbGVnYWN5LXRydW5rCisxMDU0OSA5ZjE2ZmE3MGQwOTBlYWViZWUwMDQwM2I0ODc1OTU4ZDdhYWJkYTZkIGxlZ2FjeS10cnVuaworMTA1NTAgODZhNjE5MzA0OWE5NmY0MDRmOTk3YTc2OWJlMjI3MDI5MDZiYmM5OCBsZWdhY3ktdHJ1bmsKKzEwNTUxIDRhMmYxYzY5ZmRlODFlOTZhNTFhNGRmMjQ0MjNiNWNiYWQxOTJiZDEgbGVnYWN5LXRydW5rCisxMDU1MiAwNTJlNzc2NjQwMzJlMTgwNjBjMmExOTFiNDIzNDM3N2RiOGU5ZTRkIGxlZ2FjeS10cnVuaworMTA1NTMgYjgxNjJkMDg2ODUwMGU5MWZlOTlhYmI5OWNjMmMzZTY0ZmU4NjBmMSBsZWdhY3ktdHJ1bmsKKzEwNTU0IDVhNjdkOTA1MTAyNjJhMTdhZTVmNjdjY2NkNjQ4NTcyNDkxMzkyMmMgbGVnYWN5LXRydW5rCisxMDU1NSBkMGZmNDE3NDZhMjYwMGU0YmFmY2ZmOGNkNjcyOGM3ZGU3ODkzOWRmIGxlZ2FjeS10cnVuaworMTA1NTYgZTM5MTQ1YTEzMDk2ODAyZDRlNDgxYzExZDY5MjRiMGJjZjQ5NDY0NSBsZWdhY3ktdHJ1bmsKKzEwNTU3IGRlMDI5ZTZmOTgzODkxYzdlMGZiZDBhZmFmNDA4ZjIxN2UxMmMxYTQgbGVnYWN5LXRydW5rCisxMDU1OCA1YmZmMDQxNzE3OTg1OGUzMmQ4YzY2NGNmMzM3ZWFlZDI4YmIxMWY1IGxlZ2FjeS10cnVuaworMTA1NTkgMzMxN2Y3MjcyM2JiNjA5NmI4OWI3MTYwNDZjNTJlMDBlZjM1ZGRiZCBsZWdhY3ktdHJ1bmsKKzEwNTYwIGMxNTMzMGVlYjE5MmFkNjZkMWM0ZTE0MTRiZDM4NDM1NTUxMjVkMzUgbGVnYWN5LXRydW5rCisxMDU2MSA2NThkMTg0ZTkyMDQxYjljNjhkODcwNmIxNmQwOGUxMTcyZTE4OTM2IGxlZ2FjeS10cnVuaworMTA1NjIgMGIwYjY5YTg4YjdiOTViNjEzMmYzMGFmNWVhMTkzYTdkMGUwZWY3MSBsZWdhY3ktdHJ1bmsKKzEwNTYzIDZiNThiNzlhOTU4ZDc3YTU4ZjRlNTQ3NmE4OWU3MGQzNTY2MWU4NWMgbGVnYWN5LXRydW5rCisxMDU2NCA3YWNlMTcyYzI1MjFiMDJlYWExZmQ2ZGNlOGUzODEwMjgzYWY3Mjk3IGxlZ2FjeS10cnVuaworMTA1NjUgYmIzZWM4MTJlYzkwZjI0ODc4ODNlOGI5YTcwZTcwNGYzZTNlZTk4MCBsZWdhY3ktdHJ1bmsKKzEwNTY2IDVlM2JiNDE1NjAwNDI1ZmQ5ZmY4ZjEzYzM1NDQxMGE5ZDRlNjNkOTAgbGVnYWN5LXRydW5rCisxMDU2NyA2OTJiZTEyM2Y1NDdmMWQzNDc1MWI0ZTFhZDc5ZjNhNDkzNDQxNTZjIGxlZ2FjeS10cnVuaworMTA1NjggZTNkY2UzYjhjMjgyNTljNjE5OTdmMWE4Mzk1NWJiYjJkMzkzMzI3OCBsZWdhY3ktdHJ1bmsKKzEwNTY5IDA0OTMxMzdhODQxNDYxYWE1ODI4YTU4ZDQxNTQyYmI5ZmFhZjgyNzYgbGVnYWN5LXRydW5rCisxMDU3MCBjNWY5MmVlODQ5OGY1YzhiMmM0NmE1MGJjZGEwNTQ3Y2IwOTg1YzMxIGxlZ2FjeS10cnVuaworMTA1NzEgZGYzN2NhNDAzOGY2YzI2MTgxZTUxYTllM2MxYTY4ZWM4NzlkNmNmMyBsZWdhY3ktdHJ1bmsKKzEwNTcyIDk2YWE1ODcyNWMwZTQwNThiMzU4OGJjZTYyYThkZWNiZGFjMjQ5MmQgbGVnYWN5LXRydW5rCisxMDU3MyAwOGUxYmI4NDA3ZTY1MjA0NDIwZDg4ZTIzODE0MWI0NjU0YTRjN2QzIGxlZ2FjeS10cnVuaworMTA1NzQgYWQ5YWFkODEzYTYxYjFjYmY1MzhmNmE5NGRkNTc2MzM2NjRmNzU2NiBsZWdhY3ktdHJ1bmsKKzEwNTc1IDU3M2JjMDY0MjY0Y2I3ZTRhYWE5ZGYyNDdkMDIyYWM3OTkxMTQzYmIgbGVnYWN5LXRydW5rCisxMDU3NiA0N2JkZjQ1YWZiNjg2MDcwNTE0MzMzMmI1MGNjZDFkZmZmYzRhZjE0IGxlZ2FjeS10cnVuaworMTA1NzcgOGMxZjE2MWM2YzhjMDFlZDgwYjMzNTAzMThlNzFjM2ViZjM5MjFlNSBsZWdhY3ktdHJ1bmsKKzEwNTc4IGE2Y2UyZGZmMjczNWI3NzI1YjRkODNkMjFmZDMwYzllNDEyOGM5ODIgbGVnYWN5LXRydW5rCisxMDU3OSBiNTc2ODQ2Yzk0YjM4ZjU0NDZlYjkzM2M3ZjA3NDlhZDY0ZjcxMWFhIGxlZ2FjeS10cnVuaworMTA1ODAgYTU1Y2JhOTYzNzYxNjNlMGNmNmMxYWZlZmFmNzE5MGU4YmZlNGUyZSBsZWdhY3ktdHJ1bmsKKzEwNTgxIGYyZjkxMjgyM2VlNzg1NzFmZmZkYzhlMmFjYTczMDliM2MxMjUzZjQgbGVnYWN5LXRydW5rCisxMDU4MiAyNjVjMjc5Nzc4MWEwNjhmYTUyNDA1OTM4YzA2ZTAyMzM4NDQzMzQzIGxlZ2FjeS10cnVuaworMTA1ODMgNDI3ZjM0ODllNTJiNmFjMGRiNmRjNWZmMjJhYTM0ZjlhNTk3OGE2YyBsZWdhY3ktdHJ1bmsKKzEwNTg0IDExYTFiYWQ2ZGY2NzMzZTJjNjE5M2M5YmE4ZjZmZTQ3ODIzYmE3ZTUgbGVnYWN5LXRydW5rCisxMDU4NSA5MzM0OGU1YTg1YTI0MGQxOTYzYTQyZjY1NTRjMTA3OTBiMTY3MzQzIGxlZ2FjeS10cnVuaworMTA1ODYgNzkxZWRhNTJiM2Q5Y2JhZWFlZWI4MzlhY2E1ZjU5NWFjZGE3M2VjYyBsZWdhY3ktdHJ1bmsKKzEwNTg3IDliM2IwMTMyYzAyMWM3YzZjODhhYmNjN2E0NTEyYWY5YmE4ZDVjMGMgbGVnYWN5LXRydW5rCisxMDU4OCAyODEwZmM2MDlhZWQwNzIwNzU3ODI3YjE5NzdmMTExYTA1NDVkNWJkIGxlZ2FjeS10cnVuaworMTA1ODkgYTk5NzNmOWI1NDE3NzcyNGFmNWJlOWQzNmRlMDllMmJkMTQzMDMwYiBsZWdhY3ktdHJ1bmsKKzEwNTkwIDJlNDliYzg5ZmFmYTBkZDNmNmU1NmNhMDNiYTExNGUwYzYwN2IzZTEgbGVnYWN5LXRydW5rCisxMDU5MSBmMDcwN2FlMDA0MzM4NDlhZDdjYjA1ZDc3MDg0ZjNlNWIxZDg3OWQ2IGxlZ2FjeS10cnVuaworMTA1OTIgNWM5YmU5OGY1MzQ3Mzk0ZTFkZjllOTBiMzE5MjYwNzlkMDE1Y2JiNiBsZWdhY3ktdHJ1bmsKKzEwNTkzIGI2Y2UxNzE5MzIzYWM3ZGU5ZjIxYjdmZjYzMTlhYTQ2NmFmMjUzMjAgbGVnYWN5LXRydW5rCisxMDU5NCBlMmQzM2MwNzMyYmZiMTkxNzhjZmExODdlYzkyN2E0MDRlNmZlOTllIGxlZ2FjeS10cnVuaworMTA1OTUgNTMwZmYzYjk5NzIyYjZjMGRjNTdmZTQ0NmUzYWI2NGNiMjAwMWU3NyBsZWdhY3ktdHJ1bmsKKzEwNTk2IGQ5NjIyM2I3N2UyZjM3MDk0MmZhODBkZjdhYWI1MjE0N2JkZDE3ZTQgbGVnYWN5LXRydW5rCisxMDU5NyA1OTk5N2ZkYzgxZGY3ZjE4MzBhZGZlMmM2NzIxOGFhMDM2Yjg3ZjY0IGxlZ2FjeS10cnVuaworMTA1OTggOTVlZmVhNjhmMThkNzg3ODU3OWQxMGQwMTg4N2I4NDcyNjU3NDlhMCBsZWdhY3ktdHJ1bmsKKzEwNTk5IDdjZjUxNjU3YjA4Y2FhYjQ0NzNhNzA2YmVkZmZlN2ExNGJhNDJlYTYgbGVnYWN5LXRydW5rCisxMDYwMCA1YWVjYzI3N2U2Y2FhMDBjYTdmNTg0OWYyZmEzYzI3NDRjMDk0MWNmIGxlZ2FjeS10cnVuaworMTA2MDEgMDY4ZmVhMTVjYmNkODY0ZjM5MjkyNzE3ZTFlZjEwOWE2YTdmNTIyNiBsZWdhY3ktdHJ1bmsKKzEwNjAyIGU5MDRlNmRmZDcwYjI1MjVmZDJlY2IyYzdmNzAyMTUzZmY1MmVmOGUgbGVnYWN5LXRydW5rCisxMDYwMyA4YzU1MmVlZGIxYWZhZjFkMGUwOTRmYjc2ODkzZTk3NmFkZDM4MjRiIGxlZ2FjeS10cnVuaworMTA2MDQgMGRiNmY2OTMyYjczNWM3MWMwM2FkZTBjN2ViMDU4NWYyMTZjNjU5NCBsZWdhY3ktdHJ1bmsKKzEwNjA1IGJkNzQ0YWY2ODQ1ZjhiMWE1YzVjYjE5MzE1ZGY1YTUyZTA0MWE2ZjIgbGVnYWN5LXRydW5rCisxMDYwNiAzNjQwNGQ5Y2I1ZTE1Y2JmMmU3MWQ5YjhjMzUzNmJiMGNhYTkwMmMwIGxlZ2FjeS10cnVuaworMTA2MDcgZGFhNTQxMzE0NTNiNzdlMzlkNTk4MGM2N2M4OGQ5OTA0YjYxOGQxNCBsZWdhY3ktdHJ1bmsKKzEwNjA4IDA0NzUzMzc4OTM1OWY3OTk3YjRmNTFlMjI3Y2M4ZmJjYmIwMGM4MjIgbGVnYWN5LXRydW5rCisxMDYwOSBmZGJhNjM5N2I3MjllNDczYWMzZmY2M2Q0OThkOThjMDUyOTQ4ZTE1IGxlZ2FjeS10cnVuaworMTA2MTAgMTA5NGViYmQzYTQ1NzRkMjgyY2M4ZDMwNTkwNDJlMGVkZTgwMmUwOCBsZWdhY3ktdHJ1bmsKKzEwNjExIDFiYzY1Njg3NjI2Yjg3OTQ2NGY2OGFjZWQ2ZjBlY2NiY2M1MTQ3NjggbGVnYWN5LXRydW5rCisxMDYxMiA4YjQ5YzkxOGEyNWYzNjgxMGE1ZTAxMDFiY2JhOTFkNDY4YjU5NzM3IGxlZ2FjeS10cnVuaworMTA2MTMgNDMyM2IyNDMzNTgxZDhjOGM4OTMxMWRkNjA2MGUwMGY1ZWEzNjk3MSBsZWdhY3ktdHJ1bmsKKzEwNjE0IDYwODhkNjUyYjkzMjg0MWFiZGFjNWMzZWU3ZDJmNjZkOTdlODZjOGUgbGVnYWN5LXRydW5rCisxMDYxNSBjN2Q5OWY2ZDJlMmY4YzE3OWU3ZDA2MDdkNTIyYzgxY2Y1MTdlMmI3IGxlZ2FjeS10cnVuaworMTA2MTYgYWMyODhkYjViYzkxYzQ0MjU0MGUyYjM3YTg3MmI5NTNlYWI4YTJlNyBsZWdhY3ktdHJ1bmsKKzEwNjE3IGNkNmI5ZmMxMTRhNDE1ZmE0ZWI1NDM1MDY4YmQ0NmI0MTQ5MzhkMzAgbGVnYWN5LXRydW5rCisxMDYxOCA0NDM1NmVlN2U1NzkwNjM0MDRkYTFiMjM1ZDYyMGVjMTBhZThhNThlIGxlZ2FjeS10cnVuaworMTA2MTkgOWQwMzEwMTQzNjAwOGNlMDhkMmM2NDVmM2RhYWJiYzZlY2FiZWIyZCBsZWdhY3ktdHJ1bmsKKzEwNjIwIGFjM2NhNTY2Y2I0MTYxYzQwOWZhZTFiNGE3ZjM4M2M3MTMzNjlmMDQgbGVnYWN5LXRydW5rCisxMDYyMSAyM2E4Mzc3MjYyMjY0YjU3NjNjM2Y5YmVlMzhiMjk5NmNiZDgzYzIxIGxlZ2FjeS10cnVuaworMTA2MjIgYjE0OGZhMTUyNWRiOTk4ZWVjMzFiMDlhZjhjODVkNmMzZjJiZWU4NyBsZWdhY3ktdHJ1bmsKKzEwNjIzIGQ2MDFhZjgwNmE1NzMzYmYzNzU2ZTI5YjdjZTFhM2YwMzVmZjA1NTkgbGVnYWN5LXRydW5rCisxMDYyNCBhYTNiNDgwMDJmODg3ZTM2YWYyYjIwODc3MDlkZGY2MWM5OGE2YTNlIGxlZ2FjeS10cnVuaworMTA2MjUgZTAzM2VkNTBjYjM3NmNmNmE1Yzg1ZjAwMzNmMjcxZTM3MjkyYjg4OSBsZWdhY3ktdHJ1bmsKKzEwNjI2IGNjZDgzNzVkYjI3MzZkZTlkYTY1MGY3NTk5ZDBiMzU3ODBmYTBmYjEgbGVnYWN5LXRydW5rCisxMDYyNyBjMGUzOTQ0YjZhNjRmZTJlNzNmOGNkYzVhMDNiZjlmNWE0NjAwZDRkIGxlZ2FjeS10cnVuaworMTA2MjggYmRiZTA4MmVlMzgzZGE4YTAyYzYyZWEzYjBjYTkxOGNhZWRhZjgyYiBsZWdhY3ktdHJ1bmsKKzEwNjI5IDkyNzllZjY4NjhlYmEzYTU1MDk5MzkyZTVhNTA3MDhkOWY1ODU0NDkgbGVnYWN5LXRydW5rCisxMDYzMCA5MWFhZWVmNzVhNzM2MmY4N2I1MGM2MWY0ZTA5M2I2OTk0MTEwNmJiIGxlZ2FjeS10cnVuaworMTA2MzEgM2E1MjAyOGZlOTM2M2RhMmY2MWNlZGZlMzRjOThkZjk2ZjQzYTdiYSBsZWdhY3ktdHJ1bmsKKzEwNjMyIDQ2Njg2ZDQwYmRmZDZjMzExNzdiOTJiZjRhNDE1Zjk4MDZkOGU3YWUgbGVnYWN5LXRydW5rCisxMDYzMyAwNWZlYmY5MzFlOTFiNGJmOTYyZTk5MDMxYjg3NWY4N2U0Y2ZiNzQwIGxlZ2FjeS10cnVuaworMTA2MzQgOTk1ZmI1NWIzZTZhYmQyMWRkYTBjMmNmN2ZjNmViODllYTQxNmRkZCBsZWdhY3ktdHJ1bmsKKzEwNjM1IDI1NTIzM2U0MjkxOGYzNDlmMWUzMzQ2OGEwYmMyYWQxMTExNTMyYTMgbGVnYWN5LXRydW5rCisxMDYzNiBhZGE0MGU2OWZkMDkzNmUzNTE2YTBkMmI3MWExZmFiZTU3MThlYzMzIGxlZ2FjeS10cnVuaworMTA2MzcgZTQ5YjMwYzZhODBhYzBiN2Y4Yzc2YjhhMGFhNDJmYWU0MTc3NjNlNiBsZWdhY3ktdHJ1bmsKKzEwNjM4IGJiZmU5OWMyNzg1YzkzNzIzMmI3ZTNmN2IzZWI2NWY1MTQ4ZmVjYTQgbGVnYWN5LXRydW5rCisxMDYzOSBiMWIyNmUwZTBhMGFkYWQzYzcxZGFjOGQ5YmI4YzBjYmFiNTRiYTdjIGxlZ2FjeS10cnVuaworMTA2NDAgMDU2NTcyZTA3ODFhNmEyMzEzYjJkMzQ5N2Q1NjcxYjE2NGU4ZDA4ZCBsZWdhY3ktdHJ1bmsKKzEwNjQxIGNlOWZjNjQ1MjhhNzlkZDkxMGU1NDY2YzZlNTZiZTk0ZDY5NjFkNDUgbGVnYWN5LXRydW5rCisxMDY0MiAxMjViZmQ4OTY5NjcxNjMzM2NhZTRlOGMzNDdlZjdjNWZlZWI4YWQ2IGxlZ2FjeS10cnVuaworMTA2NDMgMWJiZGQ4NGM3YTQwOTk2NTYzOGZjMmZhY2Q0YjNhNDMzNzJiODdhNyBsZWdhY3ktdHJ1bmsKKzEwNjQ0IGEzMTM0YzY5NzBlYmJlOGM0YjVlYzdhNjk2Njg2MGIyMTYzMWFiZjMgbGVnYWN5LXRydW5rCisxMDY0NSBlYTU5YmI5MjEzODA1MTUxMDUxNzkxOWQxMmI4ODNiYzBmNGRjZmE4IGxlZ2FjeS10cnVuaworMTA2NDYgZjNjOGZiYzc5M2ZlYTVlN2NhODQ2ZWI4ZDgwZDEzYjAxODllY2U3YiBsZWdhY3ktdHJ1bmsKKzEwNjQ3IDZmNWM5MzZhZTJkMjIyODFkMWZhMjNkNWFmMjk0ZWEzODhlMGQzMmYgbGVnYWN5LXRydW5rCisxMDY0OCAxNTQ2ZmM3NmQwMGVjZDVlZmIwMjI3ZWJlZGVlZDc0N2RiMjVkNDk4IGxlZ2FjeS10cnVuaworMTA2NDkgYjlkOWMwZWViNDdjMjYwODM3M2JjOTQ4YTNlZjgwZDUwNmY3NGU3ZSBsZWdhY3ktdHJ1bmsKKzEwNjUwIGM5ZDBkNjMxYWJhYWUwZTAyNzJlMDJhNTJmN2I0NTg1MTE3NDkyMDcgbGVnYWN5LXRydW5rCisxMDY1MSAyODRhZGQ3NGZlMzcwNWVjMWQ1ZDcxZDZhZDkwZTE0OWI1MjNmZWFjIGxlZ2FjeS10cnVuaworMTA2NTIgNTM2ZTQzOWE2NWY5ZDBiNTIzZGY5MzNkNjJmNTY3MzRlYmZlZmFiZSBsZWdhY3ktdHJ1bmsKKzEwNjUzIDU3MzJlYzI0ODdjNTBjNmQzOWU3ZGYyNzc1MmYyMWI3MTcwZWVkOTEgbGVnYWN5LXRydW5rCisxMDY1NCA1YmM4Y2ExM2NmZTAxYzE4MTU1NTJkOTliMmE3OTJhNDIxZDRiNGU3IGxlZ2FjeS10cnVuaworMTA2NTUgMjZjNjIyZDM3MTdkMjJjNzFjN2EwOGI1NzliYjg1MWQ0ODMzM2RmNyBsZWdhY3ktdHJ1bmsKKzEwNjU2IGE4ZGYwOTBhMTJiYWY2OGY1NTI0NDQxZTIyZmJmYTkzZTcyODFjNTggbGVnYWN5LXRydW5rCisxMDY1NyBhMGEwYzE0MzM4YzA3NGZkOTZmMWU3MmNhMjVjMjQwNDZhNmJkOWFjIGxlZ2FjeS10cnVuaworMTA2NTggZWUyN2YzYTkxNjZmODAxMzMzYmYzODAxMTMzYjE2OTc0YWZhNDhhOSBsZWdhY3ktdHJ1bmsKKzEwNjU5IDMwZmJlMzAyYzUxOGZmODRlYTU5NTg4YTkxOGVlOTFjZDk0MWY3ZWUgbGVnYWN5LXRydW5rCisxMDY2MCA0YTdmZmNkZTQwZGM4ZjcwMTFlYTIxMGQ1ZDdhMmQxMTUzNmMzNzM3IGxlZ2FjeS10cnVuaworMTA2NjEgNjhlZThhYmQ5NzgyOGIwNTNkMDc4ZGFhMjdjOTA5Mjk3YTc5ZGZkNyBsZWdhY3ktdHJ1bmsKKzEwNjYyIGM2OWFkNTY2YWViMWU1MzFkYjgyYjI3NmNkMDRjYjk3ZmQzZWYwYjQgbGVnYWN5LXRydW5rCisxMDY2MyBkZTdmYzY2YzBiNGZkZmFkMTVhYWVjNDAwYWY3MWUyNWYzYTA0YWViIGxlZ2FjeS10cnVuaworMTA2NjQgNmYxZGI1MzRkZmFlNGFkZmQ0YjAzZmMxOTczYTkyMTJlYWViZWE1MSBsZWdhY3ktdHJ1bmsKKzEwNjY1IDE0MjE2NWVkODRkODBiYzA1NzA2NmQwZjQ1M2Y4Y2Q3ZTFlY2FiZTEgbGVnYWN5LXRydW5rCisxMDY2NiA5MjliN2U2ZTc1MjBjNWRiYzAyNTIyOTU1YzkyYjgwNDNkODVhM2RkIGxlZ2FjeS10cnVuaworMTA2NjcgNzc1ODA4YTA5ZTQ2Yjc3MzQxYzFhYjQ2NzIxOGFmMGY1ZjhmNTIwZiBsZWdhY3ktdHJ1bmsKKzEwNjY4IDY3MzVlZjY2MmYzOWQ4Y2NhM2ViODJkNmQ1Nzc5YzUxNzJjNmNkMjEgbGVnYWN5LXRydW5rCisxMDY2OSA5OTdkNWEyMDAwZTA0NTI2Y2Y1OWYxMzQ2YzY2ZmQ3M2M4N2E0NjkzIGxlZ2FjeS10cnVuaworMTA2NzAgY2UyZDEyMGMzOTAzZjI1NGE1ODNmNmNjNjAxOTRiMDdkYmJmNDcwYiBsZWdhY3ktdHJ1bmsKKzEwNjcxIDI1YzJhZWE2NDUwMTdjZmIxNDFjMWFhNDNjZjVlNTE5NzAxMTE3NDQgbGVnYWN5LXRydW5rCisxMDY3MiAzNWFhNjdmYzRlNjBmNmY2OTI3ZjM3MzM4YzU1Y2JkZTUwZTg0ZTE3IGxlZ2FjeS10cnVuaworMTA2NzMgYjgxYmY5Y2ExNzlkM2ViNmRjZDc3M2UwNGY0ZGFlODBiZWJjOThiNCBsZWdhY3ktdHJ1bmsKKzEwNjc0IDQ4OTRkZGQ0NTJlZWNjMTI2OTcxN2M2NTcyMDRhMjIyYTc3MTg5OWEgbGVnYWN5LXRydW5rCisxMDY3NSBiNjY4NmY3NTM3OThmODJmMTU3YjYwZWFhZWMwMmNhOWZkMmVmNjE1IGxlZ2FjeS10cnVuaworMTA2NzYgODIwZDUxMGQxZGQ2MGMwMTZlNWZhN2ZkYmJhZGQ1NzA1YWM4YzU5NCBsZWdhY3ktdHJ1bmsKKzEwNjc3IDg4NWRlNDliNDQ1YzUzYzU3ODcwYjIzYTEyYmQzMTI4ZWE5YWFhYmYgbGVnYWN5LXRydW5rCisxMDY3OCAzYTU1YjRjNWUzYzcxOTk1ZGIyZjM5NDlmZjA2YjY3YzhjNzJjOWQxIGxlZ2FjeS10cnVuaworMTA2NzkgODNhNjkzMDVjYjA2ZTEzOGEwOTdiNjhlYzdjNjJlN2UwNTAwNzc1NyBsZWdhY3ktdHJ1bmsKKzEwNjgwIGMzMWM1OWYxOTJhZjIyMDQxNWViYzQ1OGZlZjE2YTZmMzY4NWU3NjQgbGVnYWN5LXRydW5rCisxMDY4MSA0ODJlNGJhMzNjMDhmNmE2ODEyZWI4ZGE1ZjMyMzlkM2U4ZDVhMjE4IGxlZ2FjeS10cnVuaworMTA2ODIgMDUwOTYwNTJkODI1N2EwMzc4MDgyZGFkNTMyZGY5OTI2OTg1ZjcyNyBsZWdhY3ktdHJ1bmsKKzEwNjgzIDlmMGJiODdkZGU2MDBhYzliY2Q5M2E4M2JjYmI5MTA2ZmM5Mjk0YTYgbGVnYWN5LXRydW5rCisxMDY4NCBjMjhiMDUzOGE0NDY1NDdmZTc5MTg2Zjc4YmIzNWU5MWYzNWY0ZWVmIGxlZ2FjeS10cnVuaworMTA2ODUgZDZmNGMyYTUzMTJjNGUxZGQzZTJhOTBjMjMwYmMyOWZjOTViMWUwMCBsZWdhY3ktdHJ1bmsKKzEwNjg2IGM0Mjg5YjgxMzkyNGIyNzUzYzNiOWU5ODQzOTczMzE0N2U3ZGY2NjEgbGVnYWN5LXRydW5rCisxMDY4NyA3ZWQxMDdhZjlmZjQ5NTIyMGZkY2Q0ZGYwNGNhM2YxZmE0MGQwMGI5IGxlZ2FjeS10cnVuaworMTA2ODggYjU0OTQ5NjkwMDc3OTc0NDMzZGM0NzkwMmIxZmYzMWFlNmRlMzIyMCBsZWdhY3ktdHJ1bmsKKzEwNjg5IGUyNjU2OTNmMDc5MDIwNzcyNDEyMmIwODdkN2JmMzFlYWRhYzRjZGIgbGVnYWN5LXRydW5rCisxMDY5MCAzNGNjYTgzMmE0YWZlMzg5MTI2MGQ4YzA1YzdjMzY5YzhmOGE1MDkwIGxlZ2FjeS10cnVuaworMTA2OTEgMGI3ZjNhOTMyMDg1YzM0MjIwZTk5MzNkNDFkMDMxMDVkYTMzNzlhYSBsZWdhY3ktdHJ1bmsKKzEwNjkyIDIwM2UyYWI2MzkzNmEyNWZlMmIwYTFmNjlmMDVlNjdiYzE5ZjI5NjkgbGVnYWN5LXRydW5rCisxMDY5MyAxNWVhMTVlMGNhMmFiODU4ZWY0OTQ3NTk0NDAzZTY3YTBhY2E1MjFkIGxlZ2FjeS10cnVuaworMTA2OTQgYTQ0NGNkODM1YzBlMDQ2NTcxZWEwM2U3Nzc2ZjY5NWM3ZGU0MzllNSBsZWdhY3ktdHJ1bmsKKzEwNjk1IDMwYzIzODVjYTM4OTNhMGI5MmJhYWQ1MjMwMjcwYjQ2NTA2MzE1NWIgbGVnYWN5LXRydW5rCisxMDY5NiBiYzJlOWI0ZWI4ZGQ1ODQ3MjM2NTRiOTllYmIwMThkYjU5OTNkZDg3IGxlZ2FjeS10cnVuaworMTA2OTcgZjMyMDgwMGYwZmE1NWFmZTc4OWUwNDAyMWFlOGM4YjU4MjMyN2NlYSBsZWdhY3ktdHJ1bmsKKzEwNjk4IGExOTY2MTA3NjUyOWE4YWYxZmMzZmZhZDNmYjQzZTM5OWZjNzkyZTEgbGVnYWN5LXRydW5rCisxMDY5OSBmMWM5NjA5MzE0MTMxOTMzODE1ZGFjNDVkOTI5ZWQ2N2U0NDk3Mzg4IGxlZ2FjeS10cnVuaworMTA3MDAgMzI4ZDQ2YzQ3M2Y0ZWMwZTJjMGZkMGIzMmJkOWY1MDM4NTg5YmI0YSBsZWdhY3ktdHJ1bmsKKzEwNzAxIDlkNTRhYWYwMTYzZGIwZWI1MDViMjJhYWRjYTZlOGFkNDkyZDIzMWQgbGVnYWN5LXRydW5rCisxMDcwMiA2YTA4N2FlMTgwYmEzNThhMzFlYmQ3OTE3MGEzZGM4MzFlZWE1NzQ2IGxlZ2FjeS10cnVuaworMTA3MDQgZTgzNGFlNzNkZWRkZjJiYzBmNzZmOTBjMmEwNThmYzIzYzE2NWQwYSBsZWdhY3ktdHJ1bmsKKzEwNzA1IDEzNjJjOTFlZmNkMjdlMjY1MmFmZmU4ZWZhNDNkNWYyYmE5M2I4ODMgbGVnYWN5LXRydW5rCisxMDcwNiA1ZTM5NGEwN2EzYTRmMTAxZTlmNDA5ZmMyMWI5ZDRjZGQ0ODZkMjcxIGxlZ2FjeS10cnVuaworMTA3MDcgOWZjMmFmOWU1ODU5YTBiYTA3MDc4M2ZiMDdhYTlmMzVjMzk3YWNjOSBsZWdhY3ktdHJ1bmsKKzEwNzA4IDY5ZjJlMDVjYzM3OGVkMzViMWM0ZTA2OTE3YTczZDg5ODhhOTZkYzAgbGVnYWN5LXRydW5rCisxMDcwOSA0YTEzYTRkMjU4OGIzMGRiMDUxZjFjNDk4YTRlNDhmNGZhMGMxMDA3IGxlZ2FjeS10cnVuaworMTA3MTAgOWQ2NDJhNzM1YTEzMjdkMWZmYWQzNjJjZTkwN2U3ZDJiZjllZDBlZiBsZWdhY3ktdHJ1bmsKKzEwNzExIGRmNzUyYzA4YjQ2MjIwNDQyZmJiN2ZkYWZjZGE0Y2Q2ZDQ4NTUyNGEgbGVnYWN5LXRydW5rCisxMDcxMiA4NWE4YWU2ZGUyNzg1ODQxNzM0NGJhNGViNzA3ZmRjYjhjODk4NGM4IGxlZ2FjeS10cnVuaworMTA3MTMgYTEwM2NmNmQzODQ1YjU1OGFjN2VlYzM3ZWYyNzBkOWQ1YTQ4MWZlNyBsZWdhY3ktdHJ1bmsKKzEwNzE0IGVjZGU4YTQ1ZDQyNTEzMThkYjc0Mzc2YTlkMjY5MjkzOGNhMzg5MjkgbGVnYWN5LXRydW5rCisxMDcxNSAwZWM5ZGM5ZDIwMWYyZjE0NDU1Mjk5MjJkODJlYWYxY2YxZjBlZGE3IGxlZ2FjeS10cnVuaworMTA3MTYgNDA2ZGQyYjM2NzkzOTU5N2NkMWIxZTQxZDU3YjA0MTgyMDAyN2U1YiBsZWdhY3ktdHJ1bmsKKzEwNzE3IDkzMDZmNThjZGJhNWExZGEyNGMzMDViNTE2NzIwN2NhMmNjZGU4M2MgbGVnYWN5LXRydW5rCisxMDcxOCAxNDExOGI1NzY3MWVjNGFhOWI5NDRmMGQ5MDdjYjVmYTkyY2ZmNDNhIGxlZ2FjeS10cnVuaworMTA3MTkgMjQwM2U5MmE0YTZjMDhiOTUzMTc0NjRkZTBiZjg5Nzc5Zjc0MDg0OSBsZWdhY3ktdHJ1bmsKKzEwNzIwIDA3YzBhMzMxYzI2OTIyYmVmMjgxOWQzMDc2MTY1YWU4NWFlM2UwYmYgbGVnYWN5LXRydW5rCisxMDcyMSAzYmUxYWQ5YTg1ODdmMzZmYTNjY2U1OTkyMjYxOWY4NjllNmYzOTAyIGxlZ2FjeS10cnVuaworMTA3MjIgZGUyZmY4OWQ2ZDRiZWYyYjVmOWVlOGFkZWMwNGMxZDZkMWVjYzQxZSBsZWdhY3ktdHJ1bmsKKzEwNzIzIDQwMzNmZWIyNmRhODk5YTVlMjI3MGYyM2E0Y2QzZDc2ZGM0YmMzYTUgbGVnYWN5LXRydW5rCisxMDcyNCAwNzkyZGNkZThlMzExZDk2ZjE4YzExNjlmNWMwNjczNDA2MWZkYmM5IGxlZ2FjeS10cnVuaworMTA3MjUgNzRlZGQ1Y2RhOWZkOWM1NDkxZTRkOGFjODNjYjEyZDVkMmE2MWQ4ZSBsZWdhY3ktdHJ1bmsKKzEwNzI2IDEwNTJiMGIyYzZlYTBmNTA2OTBjZDQ0YTA5NTU3YjE2OTY0MTE3MzQgbGVnYWN5LXRydW5rCisxMDcyNyAyZmFlYjcyYmI2NGExOWM5MTZiZmY0ODlhYTVmNjk0MmMzN2QzMWVkIGxlZ2FjeS10cnVuaworMTA3MjggODUyM2VjYWY1OWM1NjlhOTIzOGRjMzMxNWVlZWQwNzJlMjEyN2RjMCBsZWdhY3ktdHJ1bmsKKzEwNzI5IDczNTZkNDg4OGE4YmNhOTM0NDBlMjlhNzlmYjU5NWFmY2VhMmRjMmMgbGVnYWN5LXRydW5rCisxMDczMCAyNDZhY2FkOWM4OTNkYmQ2ZTc5Y2UxMDk3MzBjODIzNDdiNTZmNjIxIGxlZ2FjeS10cnVuaworMTA3MzEgYWIwZDVmMjY1ZDU0ZTk4ZjA1ZDhjNzljMGZlMmFlYTI5ZWFiYWIzMiBsZWdhY3ktdHJ1bmsKKzEwNzMyIDUwZDM1YmRmMjA0MmRlMjBjNmU3YWEyMWYxYjg4ZjQyYzg3ZmE5NTcgbGVnYWN5LXRydW5rCisxMDczMyAzN2MzZWM0ZjNkM2Y5YTczZDc2OGVlYzA0NDNjNzZkZTk4NWM1ZDJhIGxlZ2FjeS10cnVuaworMTA3MzQgZmMzMzUwYWU1ZjJhOTU2NzFmNDg1NTViNDg2ZDc4OGMyOTBkOTQ1YSBsZWdhY3ktdHJ1bmsKKzEwNzM1IGJjNTBmNWMyMGJjOTYxNTlkOGQyNThiYWEwOTM4ZmE0MTc4ODMyMzEgbGVnYWN5LXRydW5rCisxMDczNiAxMDI2ZDAzM2MwZGQ5YTJhOGRjNzEyZTVhMzQ4NjhlZmU3ZDhkNThiIGxlZ2FjeS10cnVuaworMTA3MzcgMTBjNjA5ZmU3ZGViYzhiNzg0ZWQ5NzFhYmQ0YWJlZTEyYjI2MWQwZSBsZWdhY3ktdHJ1bmsKKzEwNzM4IGE4YzIxYWNjYmVjZGI5MjVkMWUyMzMyMzMyMTY2ZWJhYWEwN2JiZmYgbGVnYWN5LXRydW5rCisxMDczOSAxMDdhODUyNWJmNWViNWY2MGQ1MmY0M2QxYWRmNGMxMjRkOTJmYWI2IGxlZ2FjeS10cnVuaworMTA3NDAgZWI4MzVlZDFmNmZlODM3YTgwYzFiNWE1NTdiNGJhZDlkNWRjY2MzMSBsZWdhY3ktdHJ1bmsKKzEwNzQxIDliMDdkMjdhMzFiZDc5YTVkNGRjNTY3MDIxOWZkYzI2MDBmYTM1M2QgbGVnYWN5LXRydW5rCisxMDc0MiBkODNmMWJjYmIxNTA1YzZjOGI3Y2FiNmRmMGIwZTI5YTllMTQwNGJmIGxlZ2FjeS10cnVuaworMTA3NDMgYjhiYTg4ODdkNTlmN2Y2YmNiMGYxNTYzMGJmYmQ1MGYxMjQ2NzhmYSBsZWdhY3ktdHJ1bmsKKzEwNzQ0IDhiODIyMDgzNzI2YjFjNmIzNmQ2OTAwNzNhOTc4NzFiZjExNjNiNzMgbGVnYWN5LXRydW5rCisxMDc0NSBiNGQzZDFhMDhlNGRhZTYxOTM4NGFkZWM4YzVjMjdhYWY4ODJhMGUyIGxlZ2FjeS10cnVuaworMTA3NDYgY2UxZWQ3ZWI3NzUwNzc5NmUxODJiMDA0NmQ3YjA5YjA3NjgzZTBiZSBsZWdhY3ktdHJ1bmsKKzEwNzQ3IDBkM2I3M2Q5OTU4ODhlOWI5YzZjMjU4ZTBlMTBmOWQyZjdlZTVkMjkgbGVnYWN5LXRydW5rCisxMDc0OCBlYTRiN2E1NGZkOTJmYzRkYTQ0OWM1YTFmYTkzMmMyNWMyZTUzNjNhIGxlZ2FjeS10cnVuaworMTA3NDkgYzM0NTdmYjE4YTUxMDdmNmQwN2RkNTE5YjhjZmRlMjIyMGU4MzcwZCBsZWdhY3ktdHJ1bmsKKzEwNzUwIGUxODRmODNiYmI3OTdkNGMwN2Q1M2JmOTgyYzM5NDUxZTYzNWNlOTMgbGVnYWN5LXRydW5rCisxMDc1MSAzZDY1ZjYxNmY5M2U1ZTQ1MmMwNmUxNjgyYTJkOGZmNDNkZGVkYTVhIGxlZ2FjeS10cnVuaworMTA3NTIgYWFhMWM4YjUyOWY1MjU4MDE2NThiMGJlZWYyMGU5NjI0YTNkYTEyYiBsZWdhY3ktdHJ1bmsKKzEwNzUzIDY2YTJlYTYzYjRkODU3OGE4NGQ5MTZjZGJiMGQ0M2E3Y2MzNzQ4MjIgbGVnYWN5LXRydW5rCisxMDc1NCBlNDY5YThhZjA0YjIxZDRmZTE0ZmFkMDQwOGE4MTdhMjk5ODFkNWYyIGxlZ2FjeS10cnVuaworMTA3NTUgMmRkODkwYWYxODdlMTA0NDY5NzJlMGRkODI2NTQ0NTQwZDEwZjg3MyBsZWdhY3ktdHJ1bmsKKzEwNzU2IDFkYjQwOTlhNzJjZThiMDc5YzIxMDRkN2Y3YWM2OWM4MzI3ZjQ2NjcgbGVnYWN5LXRydW5rCisxMDc1NyA3YjI1MDA2NTc5ZjRjZmMyNWM2ZDEwOTk5MTcxYzM3MDVmODAzNjU4IGxlZ2FjeS10cnVuaworMTA3NTggNzA3NjUzMWVmYjhmZGIzM2NlNmNlZjQ1MGYzMzY5NzVjZWRiNjZiOSBsZWdhY3ktdHJ1bmsKKzEwNzU5IGQ4MWYzMTYxNTY3YjVmZjE3NWNhNjg5ZjAyOWU5MjUzNDhmMjk1YjQgbGVnYWN5LXRydW5rCisxMDc2MCBjN2QwYjk3MWUwZTM5MjVhMzQ1ZWRkOTgxODRiYTRkYmJkMGVjNzViIGxlZ2FjeS10cnVuaworMTA3NjEgMzVkMWNlZWQ2OWI5ZWFlZmE0ZTRmOWUzMDBjN2ZkMTBjODk2OWY2NSBsZWdhY3ktdHJ1bmsKKzEwNzYyIDYzMWExNTljZjA0MGIxYTliMzM1MGQ5OTNlYTA1MzhjZmIyNjUxM2QgbGVnYWN5LXRydW5rCisxMDc2MyAyYjJkMjFlZmM0ZDcxNWUxOWIwODBmMjhkNmFjZjM3OWNhOTAwNjI4IGxlZ2FjeS10cnVuaworMTA3NjQgNjU4OGFkZTBlZmI3NzRlOGJiOGRkMmRkZDk3YjM5YmE3MWE1NWEwNyBsZWdhY3ktdHJ1bmsKKzEwNzY1IDM4MThhMTlmNzQ3ZjBhODg0YzRlZjM5MDQ5N2EyYTYwNzA4YzkwYWUgbGVnYWN5LXRydW5rCisxMDc2NiBmODM0ZTE5N2JkMTQ2ZGE3MjhlOTY3ZGVhNWM5MjQxYjA0MjdjOTFlIGxlZ2FjeS10cnVuaworMTA3NjcgMzJiYzE3ZjdjNzdiY2U3YTM1NTU2YWY5NDUwZTEyY2E1ZDc0MDcwYSBsZWdhY3ktdHJ1bmsKKzEwNzY4IDRjODhjYzYyZTllOTBhODQzNGYwNzUwZTM3OWU2ZWQ0YTQ5NjVjYjUgbGVnYWN5LXRydW5rCisxMDc2OSBkM2JmM2MyYWQ3NWE5ZmU2ZTU5NTY3YmMwYThlZThjOGI5YzVlYmYwIGxlZ2FjeS10cnVuaworMTA3NzAgNmVkOGE3ZmZjNTk1MzcwNGFiOGY0NmJkZThkYTJkZWY0YWNhNDE4NSBsZWdhY3ktdHJ1bmsKKzEwNzcxIDkyODFiNWQzNTY0MWEwYzA1Y2Q4MGZlMDE0YmQyOTMwNDA2NzQ3N2EgbGVnYWN5LXRydW5rCisxMDc3MiA3NGE5MTBiODZiNDQzZDM1MjU5NWVmMDNmZjc3ZmEwNWZlODYzYTQ5IGxlZ2FjeS10cnVuaworMTA3NzMgZjhhMzg5YjEwNGYwOTFiMmY2M2ExNmIzYzg2NjgwZGU5MzBlZDk1MSBsZWdhY3ktdHJ1bmsKKzEwNzc0IGZmNjMxMDdjOWZhNWQ3OGZmYzg0Y2E0MmYyMTAyMTZmZDI1ZjU4MzEgbGVnYWN5LXRydW5rCisxMDc3NSBmMmJiOGQ1MTk1YjY2ODc0YTUyMzcyYjZmMmM3OGNjYzI5MjhjZjU2IGxlZ2FjeS10cnVuaworMTA3NzYgMzVlYTBjMDczZWEzZDMxMTU0ODdmNmI3M2IwODExOTE3N2U2NTVlZSBsZWdhY3ktdHJ1bmsKKzEwNzc3IGI0Mzg5ODZiM2MwOGQ4M2MxMzNkNmFlODQ2MWY3Mzg2ODgwN2ZhNzQgbGVnYWN5LXRydW5rCisxMDc3OCA1ZGQ2ZjFmZjY2YmMwNTA5OTUyMDYxZDMxN2NhY2QwZjI0YmE2M2YxIGxlZ2FjeS10cnVuaworMTA3NzkgYmY4ZTg2Yjk1YzkyMjZhNTcwOTYxMTFiMjcxMzc5Mzg2OTBhMDZhYSBsZWdhY3ktdHJ1bmsKKzEwNzgwIDlkZDc5ZDAxMDRkOTZmNGE1ODhlNmY4YjE1NThmZmZkMWU4ZDhkMjEgbGVnYWN5LXRydW5rCisxMDc4MSA0YzNjMTJlOTU2YTc1NTg1YjczNGQwNjY3MzFiMjc4NWIzZTNhMzIzIGxlZ2FjeS10cnVuaworMTA3ODIgZTNkMjFjNGNhMzYyZmQzMDkwNzZmYTMzZWU2YmFiNGM4OTI4MGU5NiBsZWdhY3ktdHJ1bmsKKzEwNzgzIDhiNTA3NTFmMjcyYzg0ZWU4NDY5NDY5N2NiNWRiNGI2MWI2OGI1MjMgbGVnYWN5LXRydW5rCisxMDc4NCBkM2YzYTA1NjhiZDZhMDhkMDgzZDdjNDM3MWY2NmRlNDRiOWJhYzA1IGxlZ2FjeS10cnVuaworMTA3ODUgYjU5Yjk5NDJiYWM5NjFlY2E1ZGIzN2JlNWVhZmIyOWFiZjBlMmRhZCBsZWdhY3ktdHJ1bmsKKzEwNzg2IDYyM2M0NTlmOGZiZWRlYjc2ZGYwZDQzNTdlZTZlOWQxMDIxNTE1NzEgbGVnYWN5LXRydW5rCisxMDc4NyAwZDJkNjFmNTJiOWM1MmQ2MWU5NWU4MjU5Y2YwMDI2NDg0N2I1ZjIzIGxlZ2FjeS10cnVuaworMTA3ODggNDY3NGNkMmY2ZjA3MmJjZThkZDdhZDNmNWFiMmU2NTRmOTI0MDcyNyBsZWdhY3ktdHJ1bmsKKzEwNzg5IDA4ZGY5Y2I1NzNhZGFjODE1NjkwMjI5NDRmNjBiYmYxYjg4NDQzOTIgbGVnYWN5LXRydW5rCisxMDc5MCBmZTFmZDU2Y2FkYTcwMjAwMmVjYTUwZTY4MjM2NzQxZjRjNTg3YTZhIGxlZ2FjeS10cnVuaworMTA3OTEgNDA3MDg1OWZlNjJlZWE0MDg0MWU1NzQ2NTliNWQ4ODBiMjA1YzI3NiBsZWdhY3ktdHJ1bmsKKzEwNzkyIDQxNDI0N2Q0ZmVkNzNhM2JkYjMyY2RiZGQyNzVmNGQ1ZmJjODg1ZWIgbGVnYWN5LXRydW5rCisxMDc5MyBmNGZjOWQxOGE1M2Q0NzMzODE0OGI5MTQ0OTI2NzFlY2E3ZGI4YmNjIGxlZ2FjeS10cnVuaworMTA3OTQgZDY3YmUxM2RhM2NjMThlNDk0NGRmYTg3NTdiMjJiMGNkMzM3ZTk5MyBsZWdhY3ktdHJ1bmsKKzEwNzk1IGM2MjM2MGFhNWVhNDBhYWI4YjlhZWU4N2ZhNGQ4YWQzMDE1OGFhNzIgbGVnYWN5LXRydW5rCisxMDc5NiBmOTRkNWFlNjQyYTliMWNkZThmZWIxMDcyZjlkZjVjMmRhYTJmZWQwIGxlZ2FjeS10cnVuaworMTA3OTcgZTQyYjk0Mjc1NjUyYjlkNTgxYmE0NjYwN2Q1ZWI4YzM1ODFmNzExNCBsZWdhY3ktdHJ1bmsKKzEwNzk4IDYzY2NlOWQ3Nzc5NzYyMmU1OTQ1NzNhOGM4ZDFjMjJhNjZiNTYxZGYgbGVnYWN5LXRydW5rCisxMDc5OSA4MTA1Nzk5NmZmMjFkMWM0YWYyYjEyOTkzMWI4NTU1NjRlMmM5N2M1IGxlZ2FjeS10cnVuaworMTA4MDAgZWM4N2I2MjQ2NmQzYWFkNGE1MTNmM2UyYTRjM2ZlYTFiYjBkMzZmYyBsZWdhY3ktdHJ1bmsKKzEwODAxIGRmNDAzZWQzNWJkZGUwMGEwZTI3YzdlNTZiZTlkNzUxNDVlZmVhYTkgbGVnYWN5LXRydW5rCisxMDgwMiBjMTRlNjhmNTkxY2UzMDViZDhkZGNmMzg0YzQ1ZmUyYTBhYjBlM2I5IGxlZ2FjeS10cnVuaworMTA4MDMgOWRkZDY3OTMxOWE5ZDgxMDE0YzUzOWJmY2EwZTgzY2M0Mzk5ZGVmMyBsZWdhY3ktdHJ1bmsKKzEwODA0IGU2ZWYwZTM5ZTM1Y2VkOGQ2OTYyZDM5YzEwOTU3ZDhiZjlhZDk0NmEgbGVnYWN5LXRydW5rCisxMDgwNSBlMTM5MjEwNTAzMjc4M2M1ODcyYjE0N2RiZWM5MjliMWY5MjliN2Q2IGxlZ2FjeS10cnVuaworMTA4MDYgYzQ5YzhmN2ZkZmYxODZjZTE0M2IyMjRjZjc2NGM0OWU4ZjMyOTcyOCBsZWdhY3ktdHJ1bmsKKzEwODA3IGFmMTFkYmYzNWVlNWU5ZmE5YWY0MTgwYTdlNzdiMmUyYzMyNzM2MzEgbGVnYWN5LXRydW5rCisxMDgwOCBhMjNiNzUxMzhiYjBmYjIzZmZhMzQyNDRiMGM0MTE1MmMwZmU3MzQ3IGxlZ2FjeS10cnVuaworMTA4MDkgMTg5Nzc0NzczOGY1OThmYTMxYWU3MThkNTI3YjE3MmJjZjFmNzIyZSBsZWdhY3ktdHJ1bmsKKzEwODEwIDQ4MjQwZjUyNWVjM2JlNTgzYzU5NWJhOWRkNmUzNDE5MjJhNjVkYTUgbGVnYWN5LXRydW5rCisxMDgxMSBjZDgyODQ2MmFjYmI4MmVjMDliMDA4ZGViYjRkMGE0MTk0MzU2MGI2IGxlZ2FjeS10cnVuaworMTA4MTIgN2ExZTdkYTkyMmY4NzA1NzJiOTg0MzJiNTgwYjBhNWRkMGVjYjVjZSBsZWdhY3ktdHJ1bmsKKzEwODEzIGM1OWI1NzM2ZjMwN2YzNTBlMWEwN2IzYzk1ZTc1YjZkZTRkMGVmZDQgbGVnYWN5LXRydW5rCisxMDgxNCA5Njc5ZTc3ZDQyZTNkNThlYWRiODE5MWM4NzJiNWYzMmY4MGNjNDNkIGxlZ2FjeS10cnVuaworMTA4MTUgYTRhZTc5MmI5YjY4MDJhZDIwZWZiMDM0ZGY3ZjhiYjFkYmYyNWE1OCBsZWdhY3ktdHJ1bmsKKzEwODE2IDViZmI1ZWRjMzEzY2I2NjIxMzAyNTNiN2RlZDY5NmVlZTQ2ZTg4ZTMgbGVnYWN5LXRydW5rCisxMDgxNyBiZjExMjYyMDI2YmRmNzUyNDRjNGNjNTg2YzczMTY2N2IwMzA4MjQwIGxlZ2FjeS10cnVuaworMTA4MTggNmI3MDk1Yjk4ZTU0Y2E1YjExYjc2ZTQ0NjBiMTZlYzFiZGFkZDM2OSBsZWdhY3ktdHJ1bmsKKzEwODE5IDhkOTBlNzgxYWRhOGJjMGE5YjBkZjkwMmJhZmQzNmUyNzE0ZmYyMTIgbGVnYWN5LXRydW5rCisxMDgyMCA3NjU4YzhhMTQ5ZDE4NWIzNGJhMGFhMDhiZjNlNmMyMTU5ZjYyZmI0IGxlZ2FjeS10cnVuaworMTA4MjEgMjhkYWU5MWM1ZDBjY2RmZmQzNDMyZGMwMDVlMDA3MDZkMjAwNmRlYiBsZWdhY3ktdHJ1bmsKKzEwODIyIGE4NGY2NThkNGJhNGNlY2IyMmM1MmU4NDNiZjA5ZDIxYmI3NWRiOTUgbGVnYWN5LXRydW5rCisxMDgyMyBlYmZkZTA2ZmRiOGQ4Y2Q5ZGY1ZTUzYmYwMzAzNmQwZmM2OGM3M2M5IGxlZ2FjeS10cnVuaworMTA4MjQgMjI4MTVhMGIxMjY3NTZlNDFkODE0MDNmNTU0ZmVjYmUwNjU5NTNkNiBsZWdhY3ktdHJ1bmsKKzEwODI1IDFiNGEzN2YzNzM0NTBhZGU5YjIxZTIwZmVkYmYwY2ZmYzk1YWMwMjcgbGVnYWN5LXRydW5rCisxMDgyNiBkMmQ4MmY3YjQxOWE2MDExZGZiM2Y3MjJmZTY2ZGRkYjk4MmE2ZWU4IGxlZ2FjeS10cnVuaworMTA4MjcgMDUxOTZhNGU1NDQ4YmY4Y2M1YmM1NWRkZmIwZmEyNWI5MTYwMWQ1ZiBsZWdhY3ktdHJ1bmsKKzEwODI4IDFiMzkzZGIwMGIxYWI4Y2IzZWNmMGJkYzg0NDEzN2FhOWZhNTI0ZDQgbGVnYWN5LXRydW5rCisxMDgyOSBlN2RkOTkxZmFhNGFmMTkwYzA5N2Y0NjBjZTgwYTJjMWYwMDkzMDMwIGxlZ2FjeS10cnVuaworMTA4MzAgOGQ5MzczYmQ4Mzg0ZGZjYzY3ZGI3YmI2YTVhYmU5MWY4OWM0YjZmMyBsZWdhY3ktdHJ1bmsKKzEwODMxIDQxNzJkYTkxNDQxYWEwZjU2NDJhZThmMWRjNjU2Mzc0ZjMyZDg2MWEgbGVnYWN5LXRydW5rCisxMDgzMiA1MmMzMzk1MjQ2MGE4ZjQ0N2EyZDlhNGExMDk2MDEwYmI4MmQxNTM3IGxlZ2FjeS10cnVuaworMTA4MzMgMjUzYmZjYjY1Yjc3MzQzYWExYTg2MDZkYjUyN2ZmM2FkYmQzMTAwYSBsZWdhY3ktdHJ1bmsKKzEwODM0IGM1NzE1NTQxMzRkMTUwNTE3MjY4YjE4MDdlMDU4NDMyNGQ4N2VmOWMgbGVnYWN5LXRydW5rCisxMDgzNSBjODkxOTFjMmU2M2YwMjA4ZjkwMWZjZTJiYmNhYjkyMWYzNDZlOWJmIGxlZ2FjeS10cnVuaworMTA4MzYgZjMwODk2MWIwM2Q3ZDUxZGVmOWY4OGZlMDM0NzliOWRmZDAyMDNmMSBsZWdhY3ktdHJ1bmsKKzEwODM3IDFiYzBkZjk2YjRkZGMzZTkwNmYxZDdiYzFhODI0YTBmMTQ3ZDMwYmUgbGVnYWN5LXRydW5rCisxMDgzOCBhNzQyM2U2OGNlZTk0NzQxZjZhNTk4OWJkNTdmM2IzNzc1MTc5MTE0IGxlZ2FjeS10cnVuaworMTA4MzkgODIwZjA2YmI0MWM3ZjU2ZjVmNTQ0YTVlNjljYTI2NGZmM2Y4ZWIzMCBsZWdhY3ktdHJ1bmsKKzEwODQwIGRhNGJkY2VlYWFkN2E3NjlkMzZjYTY3YTg1ZjE3ZWU0OTQ3N2I0OGMgbGVnYWN5LXRydW5rCisxMDg0MSA3MzlkNWZkYWZjMzJlYjJhNjA5N2U2YTVlM2MzNTUzNmYyNTlmYjkyIGxlZ2FjeS10cnVuaworMTA4NDIgZTA3NDZhMGRhNzM2MmIwMzJkZTk2NWZhN2M1MGRiMWY0ZWY5MDg3OCBsZWdhY3ktdHJ1bmsKKzEwODQzIGU4MGQ0YzNkYmI3ODdjOGU1Yzk0OWY5Zjk1M2IwOTVlYzA1YTNiMTQgbGVnYWN5LXRydW5rCisxMDg0NCBlNDEyMTFhN2FlZjNmYTUxMWU0YTg4MjY3MTNhNDZlNWNmY2NkNWVmIGxlZ2FjeS10cnVuaworMTA4NDUgNTJkN2E5ZTcxMjIxNTJhOWY3N2EzYjA3NGEyY2VjOWI1M2JkMmI2ZSBsZWdhY3ktdHJ1bmsKKzEwODQ2IDQ1NWIyMjk0NTQ4MmZmMGY0NjYxY2U1ZjlkZDhjODU0YmZmZDZhYmQgbGVnYWN5LXRydW5rCisxMDg0NyA1ZjgzZjk3YWFlYjhlMTkyMzkwYzE2NTE3ZWIwNmNlODQwZjVkNjdkIGxlZ2FjeS10cnVuaworMTA4NDggZTE3YTAxOWY5MzkwZjdmNTBkZmVhYmJlYjgxZTI2NTJlZDE5MDNmMyBsZWdhY3ktdHJ1bmsKKzEwODQ5IGE0NjRlOWM5ODVmOGU1YmY5ZGM1MWJlZGVlMmJlMzM2MjI1MmZkNjUgbGVnYWN5LXRydW5rCisxMDg1MCAxYzdhODJkNDY5ZTA2NzE2N2FlZmQ2YWEyOGE1NDJlODhhYWY2OGE1IGxlZ2FjeS10cnVuaworMTA4NTEgNjUwYmQxM2JlYzkyZDExM2ZmNDljOTIzYWMyOTU0NWE3N2IwNjQ4MyBsZWdhY3ktdHJ1bmsKKzEwODUyIGYyYjA4NTlmZWNlM2JiZTdmNTk3MDAyYjY2OGY1M2RlZTA0OWU1MTMgbGVnYWN5LXRydW5rCisxMDg1MyBhNjU5MzBmNWNkZGJjZGI1ZjcyZWIxMTRmYmI0MWVmMDIyN2ZjZjI5IGxlZ2FjeS10cnVuaworMTA4NTQgNmFkN2MxNjU2ZDE4YjY5MzQxOWZjMDlmMTUxYmU5ZDQxN2IzYTZhZSBsZWdhY3ktdHJ1bmsKKzEwODU1IDZjODI2ZWUzZTU1MzhlNDExNThjOGZiZmJhNzUzODZkYzEyMDY2YjcgbGVnYWN5LXRydW5rCisxMDg1NiBhMWJmZTViYzZkOGVhODFhNDQzOGMwNzUwZjJhYTFkOTc2YmIzNTIwIGxlZ2FjeS10cnVuaworMTA4NTcgMjQyYjNjOWM1YmVjMjczYmE4YWQ4ZTMzN2E0ZmIyNmE5ZDY4ZTExZCBsZWdhY3ktdHJ1bmsKKzEwODU4IDc3YzFmMTFkMGE4YWZjYWY3MDg5MDFkODZhZmFlYjQyYjIzYzllZjEgbGVnYWN5LXRydW5rCisxMDg1OSA5NWY3YzUyYjYzOTk0NzdjMjM0N2Y4MWU3NDkxMThlMDJiYmUwYmViIGxlZ2FjeS10cnVuaworMTA4NjAgN2FjMTVmMWU1MzAyMTA4ZjQ4MzE2NWI5Nzk4ODk2NzRjMDY4ZjllYyBsZWdhY3ktdHJ1bmsKKzEwODYxIGY1ZWJjYzdhNWFiMjZlMWY3MTA1NTkyOWYxNzU5NjdjYmVhNzIzYjMgbGVnYWN5LXRydW5rCisxMDg2MiBjZDJkZmVkMGM0NGI1M2E0OGMwZmE1MjFjYjExYWQ0MzI3ZmRiYjY2IGxlZ2FjeS10cnVuaworMTA4NjMgODIyZTA4MTJmMjBjMzU3MmQwZTU2NDkyZDY2YTY3YWM4YWE3ZGMwMiBsZWdhY3ktdHJ1bmsKKzEwODY0IDA1ODE5MGM5YTRmMTI2ZTg4ZjVhNDlhODBjMTI0Zjk3ZjE3ZmFiOWEgbGVnYWN5LXRydW5rCisxMDg2NSA5MWJiNWE4MDk0ODFhMmIxYzk2ZmY1YzA3MzJkZDYwYTUzY2RlMDg2IGxlZ2FjeS10cnVuaworMTA4NjYgNzUyYjlmNTU1Nzg4YzAyNzdjMTgxMDc3MjMzYzJlNDRiYWNhNzYxOSBsZWdhY3ktdHJ1bmsKKzEwODY3IDNhMzEwMDE4NDk0OThlMzc0YzAyNDM3ZjA2ODIzOTZmNTI4YTc1YjUgbGVnYWN5LXRydW5rCisxMDg2OCBkNmI4NjNkMWJlYjkyNDRhY2ZiNzVjMmZmNTJkNDM0MWVjMTgxNzIxIGxlZ2FjeS10cnVuaworMTA4NjkgOGU5ZDVlNTEwM2Y1ZGMxNzViMWE4NmJmOWZhNzJjMmIwZDgxMmUzYSBsZWdhY3ktdHJ1bmsKKzEwODcwIDczYTI1Nzc5ZTgzNzJlMTFlMDAwMDNmZjc1YjQ3ODE1NTNiYTFiNWMgbGVnYWN5LXRydW5rCisxMDg3MSBkZTY4ZjgzYzE2OWNhNjg4ZTUzODkyMmY3ZjQxNzQ5OTA1MDgxNmM5IGxlZ2FjeS10cnVuaworMTA4NzIgNzZjZDAzOTc5ZmNhNDIzYTg3MWYwNDk2NWNhZTVmNzlhYmVmYTJkMiBsZWdhY3ktdHJ1bmsKKzEwODczIGE1ODJkNzBlMzEyZmVlZDkwYTkwNzM0OTkwYWY3YWZlNzEwNTU4ZmIgbGVnYWN5LXRydW5rCisxMDg3NCBlZjliOTNiMmEwZmFhMzMwYjRmM2I3N2JlMDI0YWQ0MmJlZjY1YTY0IGxlZ2FjeS10cnVuaworMTA4NzUgNzY2OWRkZjBlN2Q0OTUwYTdjYThmM2U4M2Y2NTZkZWMwZDZhYjNiZSBsZWdhY3ktdHJ1bmsKKzEwODc2IDkzYWEwOGM3N2U2MGViMmJkZmVkZWFlMzliN2MyZDc3NzM5OTJkNjQgbGVnYWN5LXRydW5rCisxMDg3NyBkN2M1NjhlNzcwN2JmMTc5OGQ0NWQyNjEwNTMzNmEwNTNmMjgzZTA4IGxlZ2FjeS10cnVuaworMTA4NzggNzkwNzFhNGUwZWNhYjYzMTQzZTk4M2ZiYmVlYTRjN2Q5OTM5NWQ3NyBsZWdhY3ktdHJ1bmsKKzEwODc5IGM5YjdlOTI2ZmQ4Njk5NWYxODEwNjM1MjgyMmQwYmJiYjRiZTljNjEgbGVnYWN5LXRydW5rCisxMDg4MCBmZjMxZjI1MDE3NDI1MzUyYzMxZmQ4MjdjYmIwZDI4ODM2Yzc0NTIzIGxlZ2FjeS10cnVuaworMTA4ODEgNGVmN2QyNjBmZWFjOTMxZWMxOGI3OWQxZDM1MWZhYmY2ZTVhYTQzMyBsZWdhY3ktdHJ1bmsKKzEwODgyIDYyNzBjNmJhZDgxMTZmZTE3YTdlZDRjODFkNTI5ZjFkMGFiNDk3MGIgbGVnYWN5LXRydW5rCisxMDg4MyA3MGY5M2UwYzU4MGVlY2FmYmEyOTI5NzVhOTA2NzViNjI1ZDczZDRiIGxlZ2FjeS10cnVuaworMTA4ODQgMGNiMDM5NGMyZWRjZmUxODNjZDc3N2M4N2JlODY5OWI1OGE1OWUyMyBsZWdhY3ktdHJ1bmsKKzEwODg1IGM0ZGY4YjY2MzdiNjk0NWIyZjllODIzNjNiZjZkMTVjNzA3NjBhOWEgbGVnYWN5LXRydW5rCisxMDg4NiA2NGI4OGExNzgzMjg2OTFjZDRjMjVlNzhkZTdhNWRmZmIxNWM5OGY4IGxlZ2FjeS10cnVuaworMTA4ODcgM2M0MGFmMmQxZGU5ZTEzNGI1ZTdkYmQ1ZTNiMTA3MmZmYmE5NjJlYyBsZWdhY3ktdHJ1bmsKKzEwODg4IDRhMzNiYjdhZGY3ZDYxYmI4NDZkMjQ5YTNhMDM3ZTEwYTQ4MWY5ZTEgbGVnYWN5LXRydW5rCisxMDg4OSAwOTY4NTdiMGU0Yjg1ZGJkY2UwN2M3NjkwMmUxZjk5ODc2M2I5ODU0IGxlZ2FjeS10cnVuaworMTA4OTAgOGE0ZmUxOTliNDVkZWY3MjhjYzJkMzJjMWQ4MTMwMWVlZDg5NWVkMyBsZWdhY3ktdHJ1bmsKKzEwODkxIGYyMTg2N2Y4MDM1YmQzODk5NWMyZjFhYWUxYzM3ZjgwNWY3MzhiZDYgbGVnYWN5LXRydW5rCisxMDg5MiBjOWUzY2U4ZTc0YjVkN2Y1MWI0ZjA5M2EyYTI2N2NiZWNiZDZjOWNhIGxlZ2FjeS10cnVuaworMTA4OTMgZGI4YjEwYjdjY2YyMjQ5NzU0NzE4ODA2ZjUwNDEzYjAxYTZlN2FlNCBsZWdhY3ktdHJ1bmsKKzEwODk0IDQ1MDUxNjBhN2U1YzZjZTEzNmRmMTEyMDJlOTlhNjY2ZTk5ZDMxYWIgbGVnYWN5LXRydW5rCisxMDg5NSA1NWZjOGQ5MzMwODc2NmYxODljOWNmNjkxMDBlODA2NDYxNmNiOTZjIGxlZ2FjeS10cnVuaworMTA4OTYgNDA2NGI2NzI5NTM3ZjAzMWMwODc3OTk3OGVlNmJhNjMzMjMzMmVmOCBsZWdhY3ktdHJ1bmsKKzEwODk3IGVjZGQ0YjQ2ODYyNjg1OTJjODUzZTc0YjYyMDlhNzBhMGQzMjkxZmUgbGVnYWN5LXRydW5rCisxMDg5OCA5ZWE1MDAzMTE0OWMyMjA0ZTdiNTg4NmQ5YzJiZjYzMDA0MGE3NTY5IGxlZ2FjeS10cnVuaworMTA4OTkgZjM5ODQxOWQ1MGY5NzRjNTU1ZWI2ZjI5MjNkZjkzODUxNDkyZDdiYyBsZWdhY3ktdHJ1bmsKKzEwOTAwIGI1ZmY2NjNlZTc2ZDllYzMwNjMxNDM2YTZlMDBiODM0NjYzZmRjNGMgbGVnYWN5LXRydW5rCisxMDkwMSBjODVlMTQyOTNjMmVlMWNjNDUxNjNmODVkZWNmZTIxMTQ5NDZjZDA5IGxlZ2FjeS10cnVuaworMTA5MDIgMzA0ZDRlNDg4N2Y0Y2E2MGE3YzQ3ZjMzN2IyYmMyMmZhOGMyYzFiZSBsZWdhY3ktdHJ1bmsKKzEwOTAzIGQ5NmNiZGFjYmU3MjI0YzlmOThiNjIwMzBlOWQyOThlY2ZiZjhlOTggbGVnYWN5LXRydW5rCisxMDkwNCA0NzJlNDI1NDE0ZDgyNDdmZDkzNzU3YzliNTUzNTIxMTRjNjc0OGY2IGxlZ2FjeS10cnVuaworMTA5MDUgMGEwMGRkNTcxMWU2MjEzMTlmOWFhYWU4YWI2ZWFlMTZjYzk3NGNlOCBsZWdhY3ktdHJ1bmsKKzEwOTA2IDc1NmUyZWY1MWIxOWM2M2ZkMDRlODc5NDhmNTZhYmU4NjY0NGYxNDMgbGVnYWN5LXRydW5rCisxMDkwNyBlMmQ0MWJmMWEwZjA0Y2VkNzVkMzMwM2Q2ZWUxNTMwYWQyN2JkMTI3IGxlZ2FjeS10cnVuaworMTA5MDggMGIzZTU3N2E4ZGY0N2JmZmVmOWZhNTA1N2MzMmNhZDc4MTI1OGMwMSBsZWdhY3ktdHJ1bmsKKzEwOTA5IGU5NmUzZDM4NzYxMWYwM2EyN2NiYmI2YmJmMzk2NWJiMTMyMjAwMjMgbGVnYWN5LXRydW5rCisxMDkxMCAzZTY1M2UyMDRhZDdiYmZlOWE0NmI3MDE3YmY2MjMwMDljZDRlNTQ0IGxlZ2FjeS10cnVuaworMTA5MTEgZjdjNThlZDI5ODFkMWViMWJmNTM1M2U2OGRiNDI0Yzk5OTM5M2QwNSBsZWdhY3ktdHJ1bmsKKzEwOTEyIDEyZGRiOWJkMGQzMzkxZDU2MzE0YzA5YmQyNjAxNzA5MjhiZDQ5NDQgbGVnYWN5LXRydW5rCisxMDkxMyA4MmYwMjFlZWNlMmM3ODdlYmEwMjMzZjEyNmU2ODlmOTk4YmEwYzViIGxlZ2FjeS10cnVuaworMTA5MTQgOTJjMGM5OGI0MmM1MzY3NzhiNTIzYzg4OTkwNTZhYmE5MTUyZTQ0NCBsZWdhY3ktdHJ1bmsKKzEwOTE1IDdjZGZmOGFhODMxODNmN2Y1MWQzMWI2MTdjYmY4ZTc1NmRkZTQ5N2QgbGVnYWN5LXRydW5rCisxMDkxNiBhZTc0NmVhYjJhOTYwNTU0YTg1ZTllODg3NTU5MTUxMDcxZGI0ZjU1IGxlZ2FjeS10cnVuaworMTA5MTcgNzhlYjQwZjAzMjg0M2NiMWVhYTE0NDIwYjA4MDZmNDMxMDljODhhYyBsZWdhY3ktdHJ1bmsKKzEwOTE4IGE5YTc4OGM3NGQ2ZTdjMjUxNWUwM2MxZTlmNmFmZjRlNzZiNjNiNzQgbGVnYWN5LXRydW5rCisxMDkxOSBjN2IwNDMxMzZmZGJkODExYjMwODVjNDQ4NDIwMGY5NTZlYmEzZDU2IGxlZ2FjeS10cnVuaworMTA5MjAgYzA1OWJiZDE0YjIzMmQzZWZlMjRmMTI1ZTQ2M2I0MTJiMjBiNGY2YiBsZWdhY3ktdHJ1bmsKKzEwOTIxIDUzNDYwMjc0NjA3OWQxM2M5MjliZjkxNmI2NzBkM2VlNGY3Yzg1M2UgbGVnYWN5LXRydW5rCisxMDkyMiA3NzQ5YzNlMDMyNGFmMDY2YTdlOGI4NWNmNWVjNDYxOTBkNjE4ZTYzIGxlZ2FjeS10cnVuaworMTA5MjMgOWU0YWVhNWE2NTJkMjFhZDBiNTFjYTIzZDYwZTNkODgzZjlkOTgwYSBsZWdhY3ktdHJ1bmsKKzEwOTI0IGZkNWNlZmRkMWY2MWRjZjRiZTRiYjgwNGRhYWVjNjJiZjM0YWU4MTIgbGVnYWN5LXRydW5rCisxMDkyNSBjNTUwZWU0OTM1YjBjNzg2ZWZlZDc3NDBkOGQzN2NiNDJmZGFlZDE1IGxlZ2FjeS10cnVuaworMTA5MjYgNmY3MGNhN2M4NGU2NmNkMzJkNjNiOWY3NWFiYTg5ZjAyZWRiMDA2YiBsZWdhY3ktdHJ1bmsKKzEwOTI3IDAyNDcxNDU1ODYyMGViZDMzMmU2NzUwZDdhNGU3ZTU5ZmFhMzRhOTAgbGVnYWN5LXRydW5rCisxMDkyOCA1OWRmYTllYjdjMDcwZmY2NWViNGIxZDNlMjQxZTc1NTYwMThjZjFjIGxlZ2FjeS10cnVuaworMTA5MjkgNGU2NjhmMWE5ZGRkZWY1YTJhNGNhM2Y2MzRjN2NkYzdlZTBhOGM2MSBsZWdhY3ktdHJ1bmsKKzEwOTMwIGEzNDE2MDkxYzJhMjVhMzYxMzFhZTM4MTA2NjI1YjI4MzUyZjMxMTMgbGVnYWN5LXRydW5rCisxMDkzMSAzNmVhMTNiYTMxMzY0NDNmNzJiZTUyODM0NmIyYjA0ZmRjNWEyMDYzIGxlZ2FjeS10cnVuaworMTA5MzIgNjE5MTJkNGFkNTJmNjc4M2U5ZjliMDVlYzBjNTY2NTcyNjcyYjlmNiBsZWdhY3ktdHJ1bmsKKzEwOTMzIDc1NGRlNjIxZThiMzBjZThjZTJkNWIxOTFkZDhlN2NhOTA3ODIzMDQgbGVnYWN5LXRydW5rCisxMDkzNCA4NGQxYjdjZjgxNWE3OWU5MjNkZGUwNDMwODI2N2I5Yjg4NTUzNWNjIGxlZ2FjeS10cnVuaworMTA5MzUgNGU1OWQ4OTBhNGJkYWQ5OGJlZTIxMzMyMTc1MTRjMjUxOGFkN2NiYiBsZWdhY3ktdHJ1bmsKKzEwOTM2IDJiZDhkNTIwZmZhYzAxYTU3ZTE4Yjk1NDQ4NTM3MTk1ZWM2NjcyYzQgbGVnYWN5LXRydW5rCisxMDkzNyBhZjkyNzNiMTA3M2FhYWY4OTcyMWI0MjFmNGIyNzg0ZmY2NmQwNjliIGxlZ2FjeS10cnVuaworMTA5MzggOTJjODhjYTYyZGE3YjgxMzY5NmZlYjU3ZGVmYTZiMWY1ZDlkZGI0ZSBsZWdhY3ktdHJ1bmsKKzEwOTM5IGFmNDg4ODdjOTcxNzZiNmU4NTUzMDAxOTRlOWJkNGFmMDRjNzNlNWYgbGVnYWN5LXRydW5rCisxMDk0MCA1N2RhZTFjN2VhODQ3YmI5NTEwOTJkNTEyYmIxZDg0MmJhNjRkNWM5IGxlZ2FjeS10cnVuaworMTA5NDEgZjc1MGIxZmZlMzUyOTJlMmRiNzQ1ZmJjMGRhZjUyNWEyMDU3MWNmYiBsZWdhY3ktdHJ1bmsKKzEwOTQyIDIwOTVhZTY5MGFhY2EwNGQ3NDJiZmJhN2I5NGZhNTg1NmY0N2QzYzMgbGVnYWN5LXRydW5rCisxMDk0MyAxMDI2N2M3NTU1YWU2NTEwMTY2OGM2NDZlNjgzMDJmZTI2NDQzMjQzIGxlZ2FjeS10cnVuaworMTA5NDQgZGEwNzY2M2Y5ZmZmNDZmZDA4MTZkOWEwNjQxNjg3ODdiZTg1MGJjMiBsZWdhY3ktdHJ1bmsKKzEwOTQ1IDEzM2Y0NTU0YTI2ZDU3Y2U1OTM0ZDg5ZWZkNmE1Zjc5MjNlY2FiN2EgbGVnYWN5LXRydW5rCisxMDk0NiA3MTYwZTUyOWU5YTFlYjJhZTZiY2FiOTFhOTdmZmQ1ZDNlYzU1MmVhIGxlZ2FjeS10cnVuaworMTA5NDcgMGU2ZmJiZTNiNjNjMTQwZjc4YzY5NWYyYjcxOThmMTY0NzU4OTZkNiBsZWdhY3ktdHJ1bmsKKzEwOTQ4IDQxMjA5ZDVkMWQ2NDkwYzgwN2JlNmY5OGUzMGI0ZjQxZjc5MzYxNzQgbGVnYWN5LXRydW5rCisxMDk0OSA3NjM4ZTQ1OTQyMDY3NWI2YjA4MDU2NzgxNjhkZjA0YjUwOTA0YTY2IGxlZ2FjeS10cnVuaworMTA5NTAgYzI3Y2Q1ZmM0NmI1MzJmYWRkNDQxMWFlN2QyZWMxOGRiMTU0ZTc5NiBsZWdhY3ktdHJ1bmsKKzEwOTUxIDljMzJjYWM1NjI1MDVkM2NkZTIwZWQ5ZDRlOTQ2MWJiMzkzNTM3MGEgbGVnYWN5LXRydW5rCisxMDk1MiA5MzM4ODJjMGU5ZmJhMGEyZGZlZGQwNThkOTQwNTZlYTNkYWJjOGZkIGxlZ2FjeS10cnVuaworMTA5NTMgYzg5MTg5YjAyMzZlYzFmMTM5MzkwZDQ5YzgxMjI3NjE4ODkxNDdiMSBsZWdhY3ktdHJ1bmsKKzEwOTU0IGM1NTVjNzJmMDkwZGQwODcwNTBjNzRhZTBlNjk1YjU5MzAxNTdjYWIgbGVnYWN5LXRydW5rCisxMDk1NSBhOWQ4OGJmYTI0YWYzNzIzODUwM2FhYmU5Y2Y1OTE4ZTFjN2RmNzdmIGxlZ2FjeS10cnVuaworMTA5NTYgMDQ5YWEzYThhMTcyMGQxNGVkMzk4NDRlOGVkMTgzZDA0NDNkNTNhNSBsZWdhY3ktdHJ1bmsKKzEwOTU3IGY4YzZjZjVjZmE3ZDAxNmMyOWNlMDQ3NGVhN2JiYTE2ZjFmNGRmODEgbGVnYWN5LXRydW5rCisxMDk1OCA3Zjk1YmIyZjE3MDQ4OTQzN2I3NDIxNGJlZjFlZjMxYzc0NTMyMGRkIGxlZ2FjeS10cnVuaworMTA5NTkgM2E4NWFkNWU0MTE2Y2Q1MDZlNWM3NjVkMmE0Y2EyY2JjN2VlNDkyYiBsZWdhY3ktdHJ1bmsKKzEwOTYwIDRiYTU4N2FhOGE5OGM5YzhiODRkOTlmMWI3ZTMxZTlmZjRlZDUyZjggbGVnYWN5LXRydW5rCisxMDk2MSBlMjgxZDUwMzY3MjUyOTdmNTE1YzQ1MDlhOGZmZDZlNDQwMjBlNmM4IGxlZ2FjeS10cnVuaworMTA5NjIgZDkzYWUzNzRmYjk5OGFiZGJhNjVjNjY0NzE0NjQxNmE4Njk0NTllNCBsZWdhY3ktdHJ1bmsKKzEwOTYzIDYxNGE3ZmZlZTExMzNlNzExYzhjMmJjYzQzZDJmZmYzZTc1MzI0NjIgbGVnYWN5LXRydW5rCisxMDk2NCA3ZTNiNzJkOGFlOTQ2MjAyMDc4YzE2MDMyNDk0ZTVjZjI1YzE5YzYwIGxlZ2FjeS10cnVuaworMTA5NjUgZjZlOTAwZGEzN2RiNDU4Mjc0ZmQxOWZjZjYzY2IwMTJhZjBhYjU1YSBsZWdhY3ktdHJ1bmsKKzEwOTY2IDJlNGYxNzhkN2UxNzU5MzhjNjI3NzJiZjU2NjUxNzZhMWRmOTkyM2QgbGVnYWN5LXRydW5rCisxMDk2NyA3Zjk0YjQ5NTgwNTYyOWVlNmViOGM0YTJlMzY4NWM4ZTc2ZmFkY2Y2IGxlZ2FjeS10cnVuaworMTA5NjggNTNhZmNkMjgzMjVlZjkxNzM3NWU0Zjg2Mjk2Yjg5ZjIzYjg5ZTRlYyBsZWdhY3ktdHJ1bmsKKzEwOTY5IDUxNDU3NzQwZjVjYWU5ZDU3ZDI2NWE0NjYyOGY3M2RlNWE0YWYyYzUgbGVnYWN5LXRydW5rCisxMDk3MCAzNjA0MTMxZjk0MmQ2OGYzYTZmMzU4ZWEyMmY0ZjhjMTM3MzVkNzliIGxlZ2FjeS10cnVuaworMTA5NzEgYmJiN2UxZGE0Njg2MjM1MWQwZTUxZmMzOTBjNWY2ZDIzYTE2Y2I4YyBsZWdhY3ktdHJ1bmsKKzEwOTcyIDdkMWRmZTY2ZjY0YmM1NTFjMDNiOWI5NWU4ZTk4ODIyMDA0OWI5NGQgbGVnYWN5LXRydW5rCisxMDk3MyAwMzhhNWM0MzM1ODYxZmVkNzU2MmIyZjFjZTZhMWM1ODIyNjgzZmZkIGxlZ2FjeS10cnVuaworMTA5NzQgZWI2ZjY1OTY2ZmIyMmI4ZjM3MGIyNGMzOGM5OTdjZDBmZGE5Njc1OCBsZWdhY3ktdHJ1bmsKKzEwOTc1IDI4ZjZiMDNiYjY0ZjA1OGQ5YTVkN2Q4MGEzMWMwOThmNmQ5OTZjMjUgbGVnYWN5LXRydW5rCisxMDk3NiBmYzI5NjI1ZGY1MzI1OTJjNTQ4ZTA1Y2FkNWQwNWZkNDdkYjUyNWI4IGxlZ2FjeS10cnVuaworMTA5NzcgMDM2M2YxOTg4N2QxNWIyZTYwYWYzZjlmZWFhNmQzNDY3OWM3NGM4OSBsZWdhY3ktdHJ1bmsKKzEwOTc4IDFkOGRhYjVhYTdkMTBlMjkzOWM1ODRkNTliMjIzMjBlNDJjYTdlNTMgbGVnYWN5LXRydW5rCisxMDk3OSAwZjkxYzBiYmFjYzU3YzQ0MmJiNDA5MjdjZjZhMjBkOGZjMzNjNmI1IGxlZ2FjeS10cnVuaworMTA5ODAgNjljOWJiYjY5YWFiMjY3ZmVmNTk4ZmZiYzFiYTFjMGFkM2YwNzU3ZCBsZWdhY3ktdHJ1bmsKKzEwOTgxIDA0NDdlZjg0ODNjOGM3NTRlNzNkMTA0MDc1NGRhOWZjZTkxYmVjOTIgbGVnYWN5LXRydW5rCisxMDk4MiA5MmNmN2Y0Mjc3MjMwZTkwOTNmYjU3NzNkYTIyZWY4ODU3ZGNlZmY5IGxlZ2FjeS10cnVuaworMTA5ODMgYmEzMTJlNzkwYjJhMmNiNjM5ZGFmNmEyZDdhNmYwODg3YWI1ODBlOCBsZWdhY3ktdHJ1bmsKKzEwOTg0IGI4YmJjYzAwOWE2YWIzNWRmYmE3NzIxMTIxNjJmMTUzM2YzOGVhZWEgbGVnYWN5LXRydW5rCisxMDk4NSA4NWU2ODIwNDgyZmY4MzVjYjE5Y2IxMTgyNGZmODE0MDU2ZjQ5M2RjIGxlZ2FjeS10cnVuaworMTA5ODYgZGUxMWE4OGFjNDk4ZWI0ZjEyNmQ1ZDk2ZWIyOGIxNDFmNzRiOTg5ZSBsZWdhY3ktdHJ1bmsKKzEwOTg3IGU4MmQwMjc3ZTY1M2MwOTg1ZjUwZmYxOTMxMTE5M2VlYWJiZGQ2MjAgbGVnYWN5LXRydW5rCisxMDk4OCA2YmY1Yjg3YWYwMmY5YTYwYzg0ZTIyMWM1NWJjNWEyMDk4NDUyM2IyIGxlZ2FjeS10cnVuaworMTA5ODkgZjQ4MDlmZjFmNGRhNGU2YTUyYmNmNzlhZThjZDA4ZGQ0OWNjNzMzZiBsZWdhY3ktdHJ1bmsKKzEwOTkwIGRlZDY5ZDEyY2M2ODM1ZWIwNDcyMzFjMjk0NTEzNzVhM2QxNTI3MzMgbGVnYWN5LXRydW5rCisxMDk5MSA4ZTgyMDcxNmNmMTIzZTJjMjVmZTY2ZDI2OTkzMTEzZmEyYzE0ZGZlIGxlZ2FjeS10cnVuaworMTA5OTIgZGUwZjBjM2VkNDI0ZTZhNjUzNTIwOGY1YmFjNDY3OTU0YTEwYmZlYyBsZWdhY3ktdHJ1bmsKKzEwOTkzIDY5NjYyZjE2YTgzODk2NDM2NTBhNTZiOTI2YjkwNTBmMDc5OGI2NzcgbGVnYWN5LXRydW5rCisxMDk5NCA0ZGVkNDAxOGIwZWIzY2ZmMzJjMzRhNTVhZmI3ZDM4MWUwYjVlNmJiIGxlZ2FjeS10cnVuaworMTA5OTUgZGE5YmY5ZWVkMWZjNzIyMmFmNTdkNGIwNzZiMzU1OGEwMjYxNjQyMCBsZWdhY3ktdHJ1bmsKKzEwOTk2IDFlZjQwZDVhY2NlMjJiNzY2ZTQwYjNkZmZmNTE0NmU1YWFiY2IyZTQgbGVnYWN5LXRydW5rCisxMDk5NyAxNmIzYTEyMWZmNzcyZTI0ZGZkZjJiMjk2ZTZmMDY1NDFhZWExNjRkIGxlZ2FjeS10cnVuaworMTA5OTggODFlMjk0NzdkMmE0YzBjNzYyYTMzMmU0ZTgzODRjMzJjMDA1OTFlOCBsZWdhY3ktdHJ1bmsKKzEwOTk5IDUwZTg3YzA5YzIzNjZjMzMzOGJhM2JkMjNlNDc4ZmFlNmU2MjUxMTEgbGVnYWN5LXRydW5rCisxMTAwMCBiNTY5ODFjMGQ2MWViYjJiODFmZjM4OTM1MGJhMjZjY2Q0ZjFlNTZiIGxlZ2FjeS10cnVuaworMTEwMDEgNjFhOWM1Mjk0NTVhOTA4MmJkOWUyZGJkYjJmMTZmNGNkYzliZjc4NyBsZWdhY3ktdHJ1bmsKKzExMDAyIGI5NDAxNWMwYzgzN2FmZTZkMGU3NTVkNTkyNTFlMDc2MGEzN2IyNTQgbGVnYWN5LXRydW5rCisxMTAwMyAwNjRmODVlZTliZTViMDc5NWExOWY5MzEzYWFmMTQzNmZmOGI1M2MzIGxlZ2FjeS10cnVuaworMTEwMDQgNGU0ZmQ5NTRkZGEwZmJjY2M0OTAyMzdkYjI4N2Q4OTVhOTUwM2RhNSBsZWdhY3ktdHJ1bmsKKzExMDA1IGQ5OTkyMGMwYmZiMDE1ZTcxY2NkYjRlYTM5YjlmMDY5MWM0MzA1YjIgbGVnYWN5LXRydW5rCisxMTAwNiA0N2JmM2JiOTU1NmUyMWY4YzA2YThiZGE0M2JlMjJjYTk2NWUzYTdkIGxlZ2FjeS10cnVuaworMTEwMDcgZWMyNmQ1MTQyZWI0NDAyMTM0OGNkM2M3MzA3ODY4YjFlZTI0YWU5MCBsZWdhY3ktdHJ1bmsKKzExMDA4IGQ3ZTM5ZWVhNzZmNGNlMzg2ZDQ2NGY4OGJiNmU1N2UxZTBjNDQ0MmQgbGVnYWN5LXRydW5rCisxMTAwOSA1ZjFlNDMxYTBhODI2OGY3M2FhYjgxYTYzYmI0YWU5YjhmZThjYTI0IGxlZ2FjeS10cnVuaworMTEwMTAgM2M4YjE0OWI0MmZmM2E2NTZlNjhiMzkyMGJhM2Q1YzkyZWI5Y2IxNSBsZWdhY3ktdHJ1bmsKKzExMDExIDAzNjZkYWVmYTIzYzI2OTcwZDI0N2E1YjFjMzljOTVmY2ZiZTIyZTMgbGVnYWN5LXRydW5rCisxMTAxMiA0ODI5YjhmYWYyYjQyYjRjOGU4NGUzZmEzNTdiZmYzM2Y1M2E0ZDk3IGxlZ2FjeS10cnVuaworMTEwMTMgMThhOTI4OWRmOTlhMWY1ZDM4YzQ5MjI3OTEwZjdkYmYyOWFhYTE0NyBsZWdhY3ktdHJ1bmsKKzExMDE0IDIxNjY4NjZhZjkyYmIxNmM4NTRhMzQ4N2VhZjY5YzZiMTc1NjA3MjMgbGVnYWN5LXRydW5rCisxMTAxNSBlNWQwNmE2MDI0NjljZDlkZmJkMDZlN2JhNmJkYzM0Mjg2MDEyZjBkIGxlZ2FjeS10cnVuaworMTEwMTYgNWY1YjQ5MmQxODA0M2JhNjE0YmRjNzJjZDdkMGZiOGRmYzRjMTU3ZSBsZWdhY3ktdHJ1bmsKKzExMDE3IGYzMWNlNDYyMDFjOTU2MDE3OGZkMDAxMDRmOGQzNTQ5NDY1Y2I3MzMgbGVnYWN5LXRydW5rCisxMTAxOCAxOGE0ZTAzMWQ3Y2EwYTY4OWZhYTIyNDBiYjQ3N2QxNTA4YmEyNDFmIGxlZ2FjeS10cnVuaworMTEwMTkgM2M0MDYzZjBhNzhmYWYyNzY2NTM5NzJmNzYxN2Y5NzhiNzZjYzljMCBsZWdhY3ktdHJ1bmsKKzExMDIwIDIxMzU4N2IzYjlkMGFmNzBlNWVhMjg2MGVjMWMwNWMzYzA0YmI5YTIgbGVnYWN5LXRydW5rCisxMTAyMSA1MDk5ZjQ0YmFmMjU1YzE5NzM5NzMyY2YyYmUxODhlN2VmN2YzMjFlIGxlZ2FjeS10cnVuaworMTEwMjIgZjRiNjM2ZDE1YWJjZDk1Y2Q3YjhjY2Q4ZTQyZmM1YzNiOTU1NGNhYyBsZWdhY3ktdHJ1bmsKKzExMDIzIGNmMGZhYWYzYzA0YjZkZWJkMDYzOWIwMTExNmMzMDkwNjkwMTQ1NDEgbGVnYWN5LXRydW5rCisxMTAyNCA1YzJmMTlkMTk2NDNhMjg5YmM3NmRiODI4OTM4OTEwYmU1ZDRiZjI0IGxlZ2FjeS10cnVuaworMTEwMjUgZTk1MWJmMmQ3ZDkzYjIzYjAzMmRkZGFhYTQ4MDUzYzNhMDgxNTUxNSBsZWdhY3ktdHJ1bmsKKzExMDI2IDM1YTIxNTFmYjFjM2Y2MjQ3NWEyNWE1M2I3MDBlZjA2Mjg1YWM2YmUgbGVnYWN5LXRydW5rCisxMTAyNyBlNjMzOTNmNTM2NzAyMzQ4MzkyMzY3OTg1YTk0MTBkNDhhMTA5ZjkxIGxlZ2FjeS10cnVuaworMTEwMjggZGM4ZGFhNzQ4YzQwOTM0NTFhYzhhNTJiNmQwZGFlNjgwMDdiMzYxYSBsZWdhY3ktdHJ1bmsKKzExMDI5IGQ4NGYxMjA5Y2JhNTI5OTg0NjkzNjc3ZWZhMmQ0ODdiMzkyNjA3NWMgbGVnYWN5LXRydW5rCisxMTAzMCBmYWMzMzcxNmEyMTgzNGY5ZTZmNDk1ODU0NDUxYTBlMTE0OGQzOTEwIGxlZ2FjeS10cnVuaworMTEwMzEgMWVhMTk1YjE0MjQ1OTk4NGNmOTUwYTE3Mzg1MmRjYTNmM2Y3MzExYyBsZWdhY3ktdHJ1bmsKKzExMDMyIDFlOWQ2NWY5Y2E1M2NmMzc5YzQwMzMwOTVmM2Q2MzBmMjViNmQwOWEgbGVnYWN5LXRydW5rCisxMTAzMyA1ODliNjQxMzVlZTY1MTI3ZjlkNTM1ZTNlM2E4ZmY3ZTk1ZjBhOTNiIGxlZ2FjeS10cnVuaworMTEwMzQgMjJhMDcyNGM2YmFjNTFhMWFiM2RjMGIwMGMyNGFkYzczODQ4MmU4NyBsZWdhY3ktdHJ1bmsKKzExMDM1IDQzNTdiNGViNWMxOWE2NjEwMzQ0ZWZlOTk1Y2MxMTdjYTU5MzllNTIgbGVnYWN5LXRydW5rCisxMTAzNiBkN2NlOWFlMzYyYTkwNDE4MWZlMzQ1YjQ4MzNlODFkMTg2ZjMyMzcxIGxlZ2FjeS10cnVuaworMTEwMzcgZjZkODIzMzRjZWIxNTZjNjAzZTRiZDJmYjQzNGVhZmUxMzVmYWRmNCBsZWdhY3ktdHJ1bmsKKzExMDM4IGQwZWVjOTZiNGM1NjIzZDdhZTBjZjdmODE4NjlmMTRkNzQ0Yjg4ZDYgbGVnYWN5LXRydW5rCisxMTAzOSBiMDJjNDNhMjAxYWU1ZGVjMDMxYTkxOGM3OTBhNzcxNzRkZGY2ZTJjIGxlZ2FjeS10cnVuaworMTEwNDAgOGU2MGZmMDY0NjA5OTM0NmQzYWNkMTdjMTBlYTI0MmUxN2U3OWUxMiBsZWdhY3ktdHJ1bmsKKzExMDQxIDkyMjY3ODM4ZmViOWNhZTcyZmJlZTY5MWJjMzhkMzYyMGQ1M2RjZjkgbGVnYWN5LXRydW5rCisxMTA0MiA0NmZkNjMwZGNlNjMzMWNiNTgxZTNlNjAzNTJhYjE4NmVlM2U4NTI4IGxlZ2FjeS10cnVuaworMTEwNDMgODk3M2U3MDg1Y2Y0OWNkM2M4Njg4OTNiOGJmZmY1MDIyZjRiMTFiZiBsZWdhY3ktdHJ1bmsKKzExMDQ0IGZmOWFkYjU3YjhiNTFiMjk5MzhmZjI5NmViZjY1NWU0NWVkMzczNWIgbGVnYWN5LXRydW5rCisxMTA0NSA0MTllZTk1ZGYyZDg4ZjVkOTIwNjdhYjZkMmU0ZDRkZTQxZDNiYmIxIGxlZ2FjeS10cnVuaworMTEwNDYgZTg3ZDIyYzdkZTNjM2M5ODM4YjJjNjVlYmQ4YjkwODQzMjdlZGViMCBsZWdhY3ktdHJ1bmsKKzExMDQ3IDE5ZTgwMTZjZDM4Y2ZlNmNhYmVlZmRkMzY3NDI4ZDc2ZjFkMjI0YzcgbGVnYWN5LXRydW5rCisxMTA0OCA2ZThiMGU3NTRhN2YzNzA5YjJkNDRkZDEyMDRjYjI1YzMyNzJlMzgxIGxlZ2FjeS10cnVuaworMTEwNDkgYmM4NjE5YWYwOTIzYmUxNmY1MjVkZDhhMjg2MjIwY2U3ODc4NDE3OSBsZWdhY3ktdHJ1bmsKKzExMDUwIDg3MTY4MTZlMDg1OTRmNDA4OTYxYmRhNDc1NTY4MDdjOGE3ZWFkNTMgbGVnYWN5LXRydW5rCisxMTA1MSA0NTAwNzYwNjhiMjJhZWU0ZDRlNDNjY2EzN2Y2NDc1Y2ExYWRmZjY4IGxlZ2FjeS10cnVuaworMTEwNTIgYmQ2OTVkZTE4ZWNmMjNhZGNiYjViMmU5N2ZjMTQ3Yjk5NzgwOWQ1OSBsZWdhY3ktdHJ1bmsKKzExMDUzIDY3YWE5OTdmYmIwZTE0YjIxMzcyMzI0NTE1MWIyNTVlZDI2YTFhYmYgbGVnYWN5LXRydW5rCisxMTA1NCBlYThmMGY1YWIwMTU3ZTljYWU5Yjg3OGM0YzZjMGMxZmQ0MjdjMTNlIGxlZ2FjeS10cnVuaworMTEwNTUgNjA1MWYyZTQzNTE3Njk4ZjQ1NDJmZWFjOTRlNGU4NmZkMTJjYTcyMyBsZWdhY3ktdHJ1bmsKKzExMDU2IDExMGU5NzMzOTc0MGViNDVmNmY5YzlhYjYxOGExM2I3NzYyYzhiYzkgbGVnYWN5LXRydW5rCisxMTA1NyA5NGNlNzVmNDM0NTJmOWRiNTZmMzY2OGUxZDg1ZDE2ODZjZmQyZmQyIGxlZ2FjeS10cnVuaworMTEwNTggYTMzOTI1NDVkODY1MmM4YWNjMWVmNjFlZDk2ZGI5NjZkMWM1NzI3ZSBsZWdhY3ktdHJ1bmsKKzExMDU5IGYwZmFhZDhkNTkzN2NlM2Q5YTg1MzNhZGZkYzE2ZTE1NTczYzI1NmQgbGVnYWN5LXRydW5rCisxMTA2MCAyYjA0MTEwNTk2MzAyM2FmZTM1YWY1ZDU4YjM0ZTNmN2M4YWVhY2FjIGxlZ2FjeS10cnVuaworMTEwNjEgYjFiMzVmNTBmM2ZhNmE0MGRkNzE0YTYzYTRlMWViY2ZmNjE1OWQ4NiBsZWdhY3ktdHJ1bmsKKzExMDYyIDFjYTY4OTUwMjRkOWZlZWI4Y2NlZjdjYjU2MTkyZDBmNjIwYzNkMDUgbGVnYWN5LXRydW5rCisxMTA2MyAyMjE2NjdmODkwNjQ4NmMwOTVkYjk1MzJmODNjNzdhZTFmN2MzM2FjIGxlZ2FjeS10cnVuaworMTEwNjQgYzM0OTcwMjY1MjBkN2EwODdjZTVlNDhjOWVkYjAyZWQyMDZhNTU1ZiBsZWdhY3ktdHJ1bmsKKzExMDY1IGU4YWRlYjVjZDJmYjdiNzk3MGJlZjA0MjI4OWRkOTJhMmJjZTY4YWQgbGVnYWN5LXRydW5rCisxMTA2NiBjYjdmY2ZiNTYyNzU0YzdhMzZhOWEwYzY0ODgzNmZlZDVmMTIwZGUxIGxlZ2FjeS10cnVuaworMTEwNjcgMWU1ZTlkYzZmOTkzOTQ4NGM2ZWMxMjFiNDI0YjdkMTI2NmZkMGE4NyBsZWdhY3ktdHJ1bmsKKzExMDY4IGJkZmVmOGU3MzQ1NzIzMDk5ZDQ0MTBlMTcyNGMwMDdkOGVmZTFjNjEgbGVnYWN5LXRydW5rCisxMTA2OSAxNTgxYzkzMWNiMzVhNjU0OGI1NzVhN2UyMWM2MTI2MmY0NjA2NDg1IGxlZ2FjeS10cnVuaworMTEwNzAgNzRhMTAwY2I3YTY0M2I1MWM5MmI3ODcyZTIwMGFiMTMzNTdiMWMxOCBsZWdhY3ktdHJ1bmsKKzExMDcxIDk3ZGM2YWE1MzJlNzIxNGQ0ZTAyOWZmYzBlOWEzMDc2ODc3YjlhNWIgbGVnYWN5LXRydW5rCisxMTA3MiBlMWZlMzBmMzI1Yjk5MTVkMjBhNjg3NzVkZDFkMmYxMGE0ODUxNzBiIGxlZ2FjeS10cnVuaworMTEwNzMgMmY0M2I2MWE5OGRmNWFlMTlmMmVhN2EzNmY2OTUwM2RlMDU0ZTBkMCBsZWdhY3ktdHJ1bmsKKzExMDc0IGVjZjBkNTE1MjlhYzU5ZDUzNGMxZTI1MGU3NDAwNTRlNjk0OWZiODkgbGVnYWN5LXRydW5rCisxMTA3NSBmZDFmNGVlMWIzMmE2MTNkNWYzN2I1ODA2YzFiZjgzZDQxZmEwMDdlIGxlZ2FjeS10cnVuaworMTEwNzYgNWQ3NzdiZWE1NDM1MTdjZGRjZWNmMmJkMGIyZmM3MmY1ODAxNTkwOSBsZWdhY3ktdHJ1bmsKKzExMDc3IDYzNWMzZDk0YTk0ODIxNTk0NDU5MjAyODk5YzFiODhkODE4MGFkOWQgbGVnYWN5LXRydW5rCisxMTA3OCAxMjVmMjFmZGU4YzQwNjU1ZTE3YzgyYmEwNzExYTBhMzQzZmU2MzFjIGxlZ2FjeS10cnVuaworMTEwNzkgN2JjNzE0MTQ0Yjk4ZDg0ZmY4YmYyMzFjNzRmZTA0MTNmODM4YWRjOSBsZWdhY3ktdHJ1bmsKKzExMDgwIGVhYmI4MzgxYmZjNzRhZWQ4ZTA5NzIyMGMzNDU1MTk0ZmI5ZmE5OTkgbGVnYWN5LXRydW5rCisxMTA4MSBkNGE2ODhjY2I5MzcwMWMzMWIyMmJmMmFhODJmNTliYWE4ODUxNTE3IGxlZ2FjeS10cnVuaworMTEwODIgMjgzNjAyZjMwMDQzMjQxZDFjNGY1MTYxMGI1YzI4MDk3N2RlNzAyOCBsZWdhY3ktdHJ1bmsKKzExMDgzIDAxOThiMmY2YjFjODNiYjU2MjVkMWYxNzY5NzA0NDUyYzFlOTY4NTkgbGVnYWN5LXRydW5rCisxMTA4NCBjZTM2MmI5YmE4MzYxZmU3NWY1ZmQwNmQ5N2ZiZDA4MTBmMTk5ZjQ5IGxlZ2FjeS10cnVuaworMTEwODUgYzA0NDk3NzE0OGU5MDRkY2E0MWMxODRkOWY5MTk5NWJiNTQ5NmJhYiBsZWdhY3ktdHJ1bmsKKzExMDg2IGQxZjM5MmNkZmNlYTZkN2ZjMzVlMWM0N2Q5M2U3ZDJjNzA2MTFmNTYgbGVnYWN5LXRydW5rCisxMTA4NyAzYzk2ZmM4NDZiODhiYTNhMTk0NDVmZGEyY2NiNmNlM2Y5Njc4MjIyIGxlZ2FjeS10cnVuaworMTEwODggZTAxNzM3MWI3ZWQxYjMyZGM2NTc0NTRjMDgwMGViODJjZjMxOTIwOCBsZWdhY3ktdHJ1bmsKKzExMDg5IGNjMGZkZTRkZGY0NGVhZTVlYTJhZDZhYzhmOGE3MGU2Nzc5ZWJhZTkgbGVnYWN5LXRydW5rCisxMTA5MCA0NWY5ZGZmZGJhM2RjMDkzM2NlMmExZmZiMmY3ZjFhNzljNjk1ZjQ3IGxlZ2FjeS10cnVuaworMTEwOTEgY2UyOTViZmFjZWYzN2NhNjNkYTM4MmIzN2VhNDUxMWEzODk0MTVkMSBsZWdhY3ktdHJ1bmsKKzExMDkyIDY2ZjA1NDA2NTZhMGU0YTYxZjE1ZjFlM2U4Y2QwM2M3ZGUzYzYwMzEgbGVnYWN5LXRydW5rCisxMTA5MyAwNGQ1OTg3MzcwZGUyZWVlYzA4OTcwMThlZmE0MDI3NDVjMjRmMzJhIGxlZ2FjeS10cnVuaworMTEwOTQgMWJiZmI5MWY4ZTg4NmYyN2I3ZDAzZTg2OTgxMDZkNWFhMWJmNzg3NyBsZWdhY3ktdHJ1bmsKKzExMDk1IGUzZDNiYmJkOTNmMzRjM2MxOGUzNWZhNmY3MDhmN2Y3ZmFhZDg1OGYgbGVnYWN5LXRydW5rCisxMTA5NiA2NGYwYzMxODhlNzA3YWUxNWNhYWQ3M2E2MDMyOGQwNDkzOTAyNzEyIGxlZ2FjeS10cnVuaworMTEwOTcgZTc4MjJiNjRhMzNkM2QzZWNiZjMzMjk2YjM4MThkZGU1NzJhODMyNyBsZWdhY3ktdHJ1bmsKKzExMDk4IDI0MTdmMTdmYTNlNWZkMmM4MGQ1YmI3YWNjMThhY2MwN2I1YmY0MjggbGVnYWN5LXRydW5rCisxMTA5OSA0NmI0NzJlY2IwZjkwYTUxOGEwZWNmZGQwYzU3MzdhNmUwNTNlOWE5IGxlZ2FjeS10cnVuaworMTExMDAgYTgwNzU1MzFlMjBkNjBiYTEyZDMzNzY5YzFlYWMzM2NlMjRjMmJhZSBsZWdhY3ktdHJ1bmsKKzExMTAxIDZlZDUwM2Q5YzNkNTJjYTZiZGQwOTdiMmYxNDdiNDcxZGI1ODA0YTUgbGVnYWN5LXRydW5rCisxMTEwMiAwYTNjOGMyM2UxZGEyYTQ5MGVjNGRhODdmZDFmMzM4ZGUxM2Y5NWE2IGxlZ2FjeS10cnVuaworMTExMDMgOWY4NGI5MTk5NTJlNWRjNGZmNDBhOWY4MWRkNmQxZmM0NzdlYzE5ZSBsZWdhY3ktdHJ1bmsKKzExMTA0IGYwNTc3NTFjZWY2MTljNzM5NWJlN2YwZmFkNDk1MjcxNmY0NjMzODAgbGVnYWN5LXRydW5rCisxMTEwNSBiZGE1YWM5ZjY0ZTk0ZWJiZTM0YjBjNWZkNzc1NTEzYzgxM2Y5NDNiIGxlZ2FjeS10cnVuaworMTExMDYgMzcxYzMxMjc2N2NjOTYwODNiZjMxZjdlODlhZGEyNDM5MjBmYjZmMSBsZWdhY3ktdHJ1bmsKKzExMTA3IDUxZGNiZjhhMGI5MmFiNjBkZTA1YjhjYWVkMjI5YWRhOWViODYyNjkgbGVnYWN5LXRydW5rCisxMTEwOCAyNmY0ODJkMTYxNDBiZmQ0NmI4MjU2NjFiNTZjNzAxMjQ4NjU1NDNhIGxlZ2FjeS10cnVuaworMTExMDkgNmVkMmNjMjc5MzQ2ZmQ3MTA0ZjkxMjM2MjFmZGRkMjBjOTYwMzdlZCBsZWdhY3ktdHJ1bmsKKzExMTEwIGFlYTY4NDFhYjg5OGQwYmEyZTUxOTM1MGE4NmRjY2JmZTdiYWJmODggbGVnYWN5LXRydW5rCisxMTExMSAyMzk0OTJiMzRmNjgyZDVjY2FkZGFkOWJmY2VlMWI4ODYyMTk4YzRiIGxlZ2FjeS10cnVuaworMTExMTIgYTkzOWQ0ZTE0YThkMzI0NTBkZTY3ZGFjNWI2NGI4YTlmNjNkOTk3YSBsZWdhY3ktdHJ1bmsKKzExMTEzIGQ4NjczMzY3NjgxNTgxNTIzYzRhMmUxNGQ5NWMzOTdkNTkzNzkzMjIgbGVnYWN5LXRydW5rCisxMTExNCA2ZDc1YTQ0MzQ3YTIwMjE1MmJlZTMyZWJjMzZiOTNkOTNjNjZjZTFmIGxlZ2FjeS10cnVuaworMTExMTUgY2NkZWJiNWVkMzNhMzliMmIyNDBlNDNkMjM4ZDYzMTRmMzJmNWY2YiBsZWdhY3ktdHJ1bmsKKzExMTE2IDExNzEzODFmYTAxYzhhNzUwYzMyMzViZGRlOTkzYmE5Mzc3N2Y1NTYgbGVnYWN5LXRydW5rCisxMTExNyA1Nzk4Y2UzYmZmMzU0YTJlM2ViYzUxODY1NjAxNTQ3NDBjN2NjYzk2IGxlZ2FjeS10cnVuaworMTExMTggZGNlYzk4MzU3NmQ1MTRmYzNmYzJiMjE4ZjVmZjcxMmE2ODc0NjJhZiBsZWdhY3ktdHJ1bmsKKzExMTE5IDlmMWU5NWNkZmExNzMxNDVlZjljYWRhODU3ZTdiN2ZmODQwMDdmZTIgbGVnYWN5LXRydW5rCisxMTEyMCAxZTEyMGE1ZDJlOTM0NTQ1ZWRiYjYzNjBiYTY3MTlhMTZkODc4ZWY0IGxlZ2FjeS10cnVuaworMTExMjEgMDI3YTFkYWQxMzUzMmZiNjkwYmYyYzgyMWQ4NGJlNjgxY2I3MDI5NiBsZWdhY3ktdHJ1bmsKKzExMTIyIDhlODZhNzk3ZTU5NmM4YzliMTBhY2I5OWM1OTZlYWNlZWQ1YTUyYjcgbGVnYWN5LXRydW5rCisxMTEyMyBiNDgwZTZlZGJjMDdiZGY2OTM4NGU3YmE3NGM5YzM4NjU2MjRjZjFkIGxlZ2FjeS10cnVuaworMTExMjQgMmJmYjEyMzU1YjEwMmE5YjYyNDY5ZGU1YTliN2U0YWUyMTgxZGY5YSBsZWdhY3ktdHJ1bmsKKzExMTI1IGQ0OWNiZWM1OTM5NWMyOGRjZTJhMzhkNTNiZDMxMDEyMTNkZGY0ODkgbGVnYWN5LXRydW5rCisxMTEyNiA5YWU5MWU5MzA3ZTBhZWNjNTY4YzU5N2RmOWE1YTBjYWQ5ZDRlMzExIGxlZ2FjeS10cnVuaworMTExMjcgYWUwYjZjMWM5ZThkNmEzZGZiMjIzNDNhMWMyMTc0NjY1YmRiMDliOCBsZWdhY3ktdHJ1bmsKKzExMTI4IGU4M2IzNTNkMGExY2RhYWU4NDc3OWY0YTk5NjRkODVjMWI3YTI3N2QgbGVnYWN5LXRydW5rCisxMTEyOSBhMmJlYWVkZjBhZWVmMGI2OTQ1MjVlZGU5NDgwMzkzNTMzYTYyMmMxIGxlZ2FjeS10cnVuaworMTExMzAgNzc1MTg4MTQwZmUxZmFiZGM1ZjE2MTUzNTFjMzBmZWI2YjAxNTY4NCBsZWdhY3ktdHJ1bmsKKzExMTMxIDlhZjk1ZDcyNzBkZmVmNTVjYzZhZjc4YjE3YTZlN2Q0YmFjMjg0NDYgbGVnYWN5LXRydW5rCisxMTEzMiAzYmU5MDY0Njc3NDA5NWEzZjFiNjMyMTRlYTk3YjQyZjZjNjQ3ZWFmIGxlZ2FjeS10cnVuaworMTExMzMgNGJhOWI3MGNhNTZlMjRmNjNhNDlkNzZhNWMxMmNjMWI1ZjVkMzU4ZCBsZWdhY3ktdHJ1bmsKKzExMTM0IDk3YTExMDhiMGViMjgxNTkxMTE0NDQ2MjQ3NWE5YzlhMzBkNWIyNWQgbGVnYWN5LXRydW5rCisxMTEzNSAyZWI5YzIxYzIyZjdlOTUxNTVlZTdkZjI1MjFmMGZmZDVhOTZkYzEyIGxlZ2FjeS10cnVuaworMTExMzYgN2Q0YTM4NmJlZDNmYzUzOTJkZmFlODJlMDRhNWVjZWQ0YjBjMzM4YSBsZWdhY3ktdHJ1bmsKKzExMTM3IGVkMGEzOGNiYzNlNjNkNzI4ZjgwZWIzYzhhODgyMDZhZmI3NjdjZDQgbGVnYWN5LXRydW5rCisxMTEzOCA5ZTUzNmRkM2RjOTdmMzk5NTdhNDE5ZWNmNTBlMjkxMjE2NWJkMDEzIGxlZ2FjeS10cnVuaworMTExMzkgYWM0M2UyMjQ2Njk1YmVjN2VlYjU2M2Q1YTEyNzczYTQ5ZjdkMzg1OSBsZWdhY3ktdHJ1bmsKKzExMTQwIDFlOTNmYTAyMTQwNTRiOTVjZDMyMzQ0ZTllMDdiNjczZDNhYmU4MGUgbGVnYWN5LXRydW5rCisxMTE0MSBjZTU0YjU0NDhjODVkNzVhYTYxMWM1MjM4MTAwZTMyZjFhOWQyMjNhIGxlZ2FjeS10cnVuaworMTExNDIgZGU3NTlhY2ExMGIyNTI4OWJmZmQwYzUzNWZiZWY5NzhlZjk1MDZmOCBsZWdhY3ktdHJ1bmsKKzExMTQzIDMwZmJmMThhZjI5ZThhYzk1Y2Q3NTE5MzA2MjEwM2E3MWJkYTRmMWUgbGVnYWN5LXRydW5rCisxMTE0NCA3NGYzODVlZTQ0Y2JiZWY4MzE4ZGRhNjMxOWYwMTkzYWY1NGVhMTI1IGxlZ2FjeS10cnVuaworMTExNDUgMmZkZGU3ODRkODQ5YWUxMTEzYmNlMzkyN2RhZjQ5MzYzMmFlN2M1MiBsZWdhY3ktdHJ1bmsKKzExMTQ2IDg1NjhhYTQ5NDRhMDFmMWE5YTk5MDU5ZDQxY2FmYzg1YzQzZjNkYWMgbGVnYWN5LXRydW5rCisxMTE0NyBmNTk0Nzc4YTU2YWY5NTQ1ZjJkM2FiZDk0Y2E0NmQ5OTJjNzg2ZGI3IGxlZ2FjeS10cnVuaworMTExNDggNjI0NWI4MTliZGQ4NWMyMTViYzc0NjhlYjZlNTcxZGIxMTZiZjg0YSBsZWdhY3ktdHJ1bmsKKzExMTQ5IDNhZDFiZmZiZGFlYjQyMDU5MTYwMDQ0YjliNzBjZjAzYTgyNTBkNjYgbGVnYWN5LXRydW5rCisxMTE1MCA4MjgxMWM2Y2I1OGY1YmIyOThiZWU3ZjdmYjUxYzEyNjNiOTFhNjk3IGxlZ2FjeS10cnVuaworMTExNTEgMmIyZmY1YTgxMzkxYTI2NDAyMThjOGNkMzJlMzBjMTdkZjU2NDUwNCBsZWdhY3ktdHJ1bmsKKzExMTUyIDA3ZTQ3MzcwZmNiOGI5YmQ5MjE0MmQ3YmUzNWVhMGIzNDVhMzNmYzMgbGVnYWN5LXRydW5rCisxMTE1MyA3NDQ0ZmUzOGVhZGJkNGQ5NjVjMDI4OGM3MzA0MmViODU5MzI0YWRjIGxlZ2FjeS10cnVuaworMTExNTQgYjFmMWJhNDI5YjczZjAyYzIyMDg5NTE0MDE2MDIyZWI1YjFiNzIyOSBsZWdhY3ktdHJ1bmsKKzExMTU1IDVhOGQ5Y2U5MDYzMmI4ZDRiMDc2ZjJmYmY1NWY1NDM0Nzk5MjJhMDcgbGVnYWN5LXRydW5rCisxMTE1NiBkNmY0ZTQxYjJjNmFlODc3YjA5NzA3NWNjZmRiZWZlMTI2ZWI2MWNiIGxlZ2FjeS10cnVuaworMTExNTcgNDY5ZThmNDUzMzY1YTM5ZmNlYTIzZmViN2U4YzA2NjUyODU5ZTQ4NCBsZWdhY3ktdHJ1bmsKKzExMTU4IDdkOTY4NDIzODNiYmE5ZDExYTUwOTY3M2RiOGMwNTUwYTYyZGYwODAgbGVnYWN5LXRydW5rCisxMTE1OSA2MTcwNjgzZTk4ZTNiMjdmYzk2OGYzOWJjNjRjZmRjOTk5ODRhMzQ3IGxlZ2FjeS10cnVuaworMTExNjAgNDhiYzQ3MDM1ODgxNWExOGZmYmQ5OTYwYjQ5NzQ0OTA1MTdiM2YwNCBsZWdhY3ktdHJ1bmsKKzExMTYxIGJhNzQ0NDYyZTk1ODMxZDI4MTlhYTBmM2Q3ODJlMTA0Zjg2MGJlMTQgbGVnYWN5LXRydW5rCisxMTE2MiA0NjhkYjJiNzEwZmQ4MjMyMDA2Nzc1ZWI4YWQ4YmYxYjlmMDc3MTAzIGxlZ2FjeS10cnVuaworMTExNjMgY2UxZTU5MWIzMTI2Mzg0MGJhNWI1Y2JjOWE4ZDJjNzVmMzgxNTczNyBsZWdhY3ktdHJ1bmsKKzExMTY0IDZlZDcxNThmZjI3Y2NlNDc3ODFmMTM5ZWI0ZDBjODRlNjhiYTYwY2YgbGVnYWN5LXRydW5rCisxMTE2NSBhMDMyNGEzMDY4ZTk1MzliNWIxNDY5OTdmOTAwNDhlZDg4MjFmMTRkIGxlZ2FjeS10cnVuaworMTExNjYgMTAwNDQ1YWU0NWUzNmJkOTFhZTFhYTkxY2Q4NWVjN2ExZGM0MzAyNCBsZWdhY3ktdHJ1bmsKKzExMTY3IDc4MTczMThlY2QzYTJmNjk5NzBhZTBlYjAxODFmYjZmN2RjNTJhZGQgbGVnYWN5LXRydW5rCisxMTE2OCA1NTJlNDJlNDE3MGVlNzE4NGZhZTNmY2NmM2FiMmQ1ODkxYzljMzQzIGxlZ2FjeS10cnVuaworMTExNjkgZmQ0OWVkNjVjZDIwYjIwMmVhYTc2YWM4ZWZkYzY3Mzc1NjY0MmM2MCBsZWdhY3ktdHJ1bmsKKzExMTcwIGEzNzI2ZmUzNGQ1OGVjMDQ3NjY2ZTI5YWVjMTFkMWUwMjQyZmQxODUgbGVnYWN5LXRydW5rCisxMTE3MSBkZTU0MDE2NmQ3MzI4Y2Y1NDMxMGE4MjVjYTcyMzljYzg1OTMyYWM1IGxlZ2FjeS10cnVuaworMTExNzIgYTA0NzdiYzgyMGIyNzJkZjE3MjEyZTNjZTgyNjJlYTM0MDkyMGYyOSBsZWdhY3ktdHJ1bmsKKzExMTczIDM1ZTFhMTQwZmU0ZTIwMDZjNjAzNTMwZmU3NmFiYThjNTQ4ZGI5MTcgbGVnYWN5LXRydW5rCisxMTE3NCBjOTUxNGViMWZjMDYyN2FjMjk2M2NlZjcxN2YyMGJiNmQ0YTliY2UzIGxlZ2FjeS10cnVuaworMTExNzUgOGFhOWQxMjZlNDczMzA3MDA2OTZkNDc4ZTMzNGJlMDAzNGNkNDAyMyBsZWdhY3ktdHJ1bmsKKzExMTc2IGY0MTU4MGI0ZWVhMTU0MjdmZTI2Yjc4MTI5ZDk1ZjgzNzM3NmZhNmYgbGVnYWN5LXRydW5rCisxMTE3NyA2ZDIxNjhhOTY0MWZlNzUzNzdhNTI1NjUyNDA3MjE4ZTBhMGU0MzFhIGxlZ2FjeS10cnVuaworMTExNzggZjdiNGRiMGM1YjA4ZDU3ZTRkMzc4NjY5YjEzOWNiMTg3YTgwZmUwZSBsZWdhY3ktdHJ1bmsKKzExMTc5IGRjODU4MDRjMmM2NDU2ODllYmIwNTZmMGFkZWEzOTVlZmQ0Mzg4MDkgbGVnYWN5LXRydW5rCisxMTE4MCA3ZDE0NzdjZGE4M2QzN2VhZjc2MGRjNTdiMTVhYzYyNGVhMDdiY2JjIGxlZ2FjeS10cnVuaworMTExODEgZjEwYjQ2OWM5ODEwNTRlYTVjMzE3NDRjYzVjOGI1MmE2OWQxZGNlYSBsZWdhY3ktdHJ1bmsKKzExMTgyIDk1ZjMyNDI3MmY1NDk2YzEzOWU3ODFlYzgwMzc3ZDk4MDVjMTU0ZjIgbGVnYWN5LXRydW5rCisxMTE4MyA3ODIxNGU4YzllYjQ5MDhhNWEwN2UyZjUxYzNlMDllYzE4YmE1YWQwIGxlZ2FjeS10cnVuaworMTExODQgMmYyOTA1NjAyNjNmYjBkY2ZjNjc0YzdlYzc1ZDE2MTdiYmQ4NGRjZiBsZWdhY3ktdHJ1bmsKKzExMTg1IDUwNzU3NDY1ZmE3MGRlY2RlYTNhNzRjNDEyOGU3NmQ0YjFlZGJiYTUgbGVnYWN5LXRydW5rCisxMTE4NiA4M2M4YWRhYTA4NGY2ODE4ZmJiYTNjNjQyNzAzMWNmOWQyY2ZjZjA0IGxlZ2FjeS10cnVuaworMTExODcgODU3MWMxMjQ2ZjA5M2QzOTU5NmU1NzExZTUzNGIyNTE3M2Q3MmJkZiBsZWdhY3ktdHJ1bmsKKzExMTg4IGNhMWM2NjliYjA0MTY5Y2E2ZjQ4MzBkMTdhOWI5YTQ4NTZkNDNhOTggbGVnYWN5LXRydW5rCisxMTE4OSA0ZWRmMzQ5NWM2OTI3NmIxOGExOTEwNTVmZGRkZTdkNTFiOTFiODU3IGxlZ2FjeS10cnVuaworMTExOTAgYWNmNDljOWRlZjdkZGI1NDI1MWRjYjBiNDRjYThmNDgyZDhhYjkyMyBsZWdhY3ktdHJ1bmsKKzExMTkxIDBlMjU2M2MwZWIwZDRhNmI4ZmY2NzFhZjRkODY2N2YwYjA0N2VmMjMgbGVnYWN5LXRydW5rCisxMTE5MiAyMDg0MjdhYjc1NjQ1YjEzNTVhZmI1ZGI4NTFlZWEwYjRlMDk3Y2M1IGxlZ2FjeS10cnVuaworMTExOTMgYWU2YjQxZGM2NTIwMTZhYmE5ODRiOWM4YWExM2E4NDA4ZGI3MjA3NCBsZWdhY3ktdHJ1bmsKKzExMTk0IDc5ODNkODZiNDhhZjczMjYxNWVmYjkyZGQ1MDAwMzAzZmM5NTVhNTIgbGVnYWN5LXRydW5rCisxMTE5NSBlZDhmNGUyZWIxMWExYWE3OGE4YjJjOTRkZjlkNzE1ZTEwMzk3NjdkIGxlZ2FjeS10cnVuaworMTExOTYgOTczMWQ4YTZiNGYzZGY0OWZmNDdkYzNlNmQ3YjI5YmM4ZDNjNjU3NSBsZWdhY3ktdHJ1bmsKKzExMTk3IGM3NTBjN2EyMWUwMzc4ODRjZWY1NTQzMDMwNzI5YzY1ZjYwNjhkNjcgbGVnYWN5LXRydW5rCisxMTE5OCA3NjBkY2YxOTcwNDgxMjY4YjMzMWNhNjQ3MGE4ZWEzYWNjMTFlYjZlIGxlZ2FjeS10cnVuaworMTExOTkgOTQ2ZDYzOTc3ZmE0MTFkNWYwODAzOTIxZGMyN2Y4NGIyNjM1NDE0NyBsZWdhY3ktdHJ1bmsKKzExMjAwIDAyOGVhZmJjZThhYzcyMWQ0YTMyMDY5OTUzYWMyZTNkODc1MmY0YzEgbGVnYWN5LXRydW5rCisxMTIwMSA4MTc1YzZlMWU2MTMxYTk1NDVkNWI0MTBlM2ExZmJlYTA2ZjQzMjRlIGxlZ2FjeS10cnVuaworMTEyMDIgZTBkMDQ3NDg0OTgwMDk3OWYwOGI2ODU5Njg3MzYzN2YzMTE1Y2NkMyBsZWdhY3ktdHJ1bmsKKzExMjAzIGQ3Y2E0MjllZjFhYjVmYmE5MjM5NGUxNThlNjgxMzMyZDM1YmViMzcgbGVnYWN5LXRydW5rCisxMTIwNCA4YTI5NDc2YTU5YzU0Mzg4M2MzMTY2NzFiMjA0ZGQ5ZjAxY2MxYjNkIGxlZ2FjeS10cnVuaworMTEyMDUgNjc5NDI5NGViMDE0OWU5NmU2N2QxNDYwZWVjNDMzMThlOTI2MTNmMyBsZWdhY3ktdHJ1bmsKKzExMjA2IDVkNmJmNjBjYjczNmQxZTM1YzQ2MjY1NGE1NDNlYmE1ZWJhYTRmZDIgbGVnYWN5LXRydW5rCisxMTIwNyBmNzk3NmUwMmI4NzM0MzI3M2U0MmI0MDJkM2NiNjg2YmFmMzc2ZTkyIGxlZ2FjeS10cnVuaworMTEyMDggNzRlYTRkZmRhODJkMjQxZjZkMDk4ZmY2NTFhMTQzY2RiNTgyYjQwYSBsZWdhY3ktdHJ1bmsKKzExMjA5IDUzYjUyYTMzZDRiYTY0MGRjNTk3MTk5NjBlYWI3MjZiZWQyNGI2NmEgbGVnYWN5LXRydW5rCisxMTIxMCBkNWY0ODUxZTc2MTEzYmUyNTlhYTRmMjZmNjQ2NjU5ZDA4M2VmNDY0IGxlZ2FjeS10cnVuaworMTEyMTEgMTkwN2QxMGEyMzI4ZWUwOWY1ZjlhYThkMzEzOWFmY2Q0Nzc1M2M0MyBsZWdhY3ktdHJ1bmsKKzExMjEyIDhhMzA2ZGZkOWYzMzNlMDUyOTg1YWFhZDAzNGRhZTY0Njg3N2U3ZmQgbGVnYWN5LXRydW5rCisxMTIxMyA3NTEzN2NmZWQ5NTRmNzk2NDRiZTliZTkwNDI1NjRmNGE2ZDUyOTMyIGxlZ2FjeS10cnVuaworMTEyMTQgYTgwNDBiOTQxODY0OWQ5ZjNlY2IxYTkzM2ExYmIxYjA3YzFkMGQ0ZCBsZWdhY3ktdHJ1bmsKKzExMjE1IGFlYWZhZjM4MmE0YmVjNGRkNzFkMDM3Y2Y1OGFkMDU3NjI2YTgwMWIgbGVnYWN5LXRydW5rCisxMTIxNiBkZGFhYzA2ZWMzMjY2ZjUzOThhM2ViN2FmN2IyNzQ5MzM0MWM1ZGJjIGxlZ2FjeS10cnVuaworMTEyMTcgODA3NzZlYWJkMDA1ZmJiODE1ZDY0MjNjZjE1ODI4YWJjMDg5MmVjMyBsZWdhY3ktdHJ1bmsKKzExMjE4IDZjMjBjYTcyMzE4MDQ3ODdhZmU2ODY0ODc3YTExMGYyNjI3NmFkOTggbGVnYWN5LXRydW5rCisxMTIxOSA4ZDA1NDk1NDcwOGEyZjA1MGI5NGIyZjFlOGU5NWYxZDg3NDkyNmU2IGxlZ2FjeS10cnVuaworMTEyMjAgNzgxYWQzMmU3YjFmZjNjNWQ2ZjM5NGVhMzZlY2YxYTI5NzZlMmFhNCBsZWdhY3ktdHJ1bmsKKzExMjIxIDFmMDIwZjc5OTY3ZDk5NThkMDhjMWY2ZjY4MjE1M2ZhOTFkZTA2NTkgbGVnYWN5LXRydW5rCisxMTIyMiA3NGUwMzEzY2Q4MTBlMzQ1ZjA1ZTIzZmJlZTIwMDgzN2VmZDE0MGI2IGxlZ2FjeS10cnVuaworMTEyMjMgNDM0NjRiMWM4ODBlYTk2ZjJlNzgwOGJlZWFiMDUyNDgxZGI2ZDU1YyBsZWdhY3ktdHJ1bmsKKzExMjI0IDczYWZlNzdhMzk0N2JmMmVhMjIwMjJkN2ZjMGY0OTFjNzcyMjFmYWQgbGVnYWN5LXRydW5rCisxMTIyNSAyYTMwYTgxODk0YWUwY2M0OWFiMzJjMzdlNTAyZjc3ODU4MmY2N2I1IGxlZ2FjeS10cnVuaworMTEyMjYgMWQ1ODFhNmRmZWVlMTE2OTE1ODVlMzI4ZWRhMGJjYTQwNjJiMmNiNiBsZWdhY3ktdHJ1bmsKKzExMjI3IGUxYmNmMGJkMzRkNTkzMzk4ZjZmNTJhZTY2ODNkNGMzNWI3MjViZGEgbGVnYWN5LXRydW5rCisxMTIyOCBjYTFiOTA2MTQ5ZTYyMDljODUzNTk5M2Q0NzZhZmU0OWU2YWU3NTE3IGxlZ2FjeS10cnVuaworMTEyMjkgY2Q5OTUyMDMyMGEzMWZkMGJhNDViYjlkN2M3NWQ0MmM2MTgxM2JjMyBsZWdhY3ktdHJ1bmsKKzExMjMwIGVhYmU1NzRkYzkyMWE5MTBiOTA3ZmZjOGUwNTQyOWUxY2VhOTE3ZDIgbGVnYWN5LXRydW5rCisxMTIzMSBkODRjMTEzZWZlZGJmNWE0NDU0OGUyOTJlOTBjYmVkYTQ2OGVjMzU0IGxlZ2FjeS10cnVuaworMTEyMzIgNWVjODk3OWJmMTc2ODU0N2UzOGM2NjVkZDQwYzU3MGIyZDNlMDVjMiBsZWdhY3ktdHJ1bmsKKzExMjMzIDk5NzkzMzAyZDEwZDNlMWFlMmY5MTExNGQ4YWZjMDNlMDY2ODJlYzMgbGVnYWN5LXRydW5rCisxMTIzNCA0ZTA1ZTM4NDQ1Y2ViMzdiODQ2ZGY5ZDkzZTg4ODM3OWQ1ZTA2NmU3IGxlZ2FjeS10cnVuaworMTEyMzUgOWUwODkwNzBkNGM1ZDBlODI0YmFkODVmNTdkYTc5MjE3ODUyNjQ3ZCBsZWdhY3ktdHJ1bmsKKzExMjM2IGU4OGQ0ZTZlNDYyMmI0MzgxZjcyYzBmN2ZmNGVkMzQzOGQyYWNhODkgbGVnYWN5LXRydW5rCisxMTIzNyA3MDFhODViMDQ0YjM0NWY1MGVmYzY2NzgwNmQzOGFjY2I2NzZhYjQ0IGxlZ2FjeS10cnVuaworMTEyMzggZmJhODQ1NWRjYjU0YzQwZTBjYTIyMmQ1NjM0ODNhMzQyN2Y1ODQ0NSBsZWdhY3ktdHJ1bmsKKzExMjM5IGI4YTcxOWM4YTBhNjAxN2EwZTQwYzNmN2ZkMzdmYzg4MTAyZWY1YmQgbGVnYWN5LXRydW5rCisxMTI0MCA2OGZlNjM3NTBmODRmNTBmZWVkOWM1M2IxM2U1OGQ0OGI0MmM4OGU1IGxlZ2FjeS10cnVuaworMTEyNDEgNGFjMmQ0MzVjZTNiYjViZjViZWM5YmQzNDliMWM3NmEyNWE0YWI3NCBsZWdhY3ktdHJ1bmsKKzExMjQyIDJiMmVmODJlZGI1ZWI3MzRlMTE2NDYyMTE0Njk2MzY4ZWE1OGI4MDIgbGVnYWN5LXRydW5rCisxMTI0MyA4NjFjZDIyNzgzNDhhODMyOWE0OGE2MDRmMDdlZTVmYzM4MDM0MGJhIGxlZ2FjeS10cnVuaworMTEyNDQgNDE5MmE3M2NhNDMwZWJkZjJlMmEwNGU4MzUyODE5MzMzMWYxNGRlOCBsZWdhY3ktdHJ1bmsKKzExMjQ1IDU1Zjc5MGE1ZjY0YmZiNDU2MmIzYjg3MTcyYzJjZmNlOTY4ODczYTkgbGVnYWN5LXRydW5rCisxMTI0NiAwNzY2M2RkMGZlODY1NDg2ZGJhYzE0OTczZjhmY2FmMmFkOTAyODQ1IGxlZ2FjeS10cnVuaworMTEyNDcgNjJmYWJlMjQ3N2M0ZGY3YjQ0YzdkMWZkMGEwYTEwZGZmNmMxOWNiOSBsZWdhY3ktdHJ1bmsKKzExMjQ4IDA1ODQxNzA3MWIwZTUyNmJjMjNjMjJkZGZiYjQ5MmEyZTI3N2Y5ZWQgbGVnYWN5LXRydW5rCisxMTI0OSA4NDM0ZTlkMDBiNWE1ZTQ0ZTc1NjczMGYzM2RjMjc4MWE4YmJkMjM3IGxlZ2FjeS10cnVuaworMTEyNTAgZmMyYTcwMGIxMDA3YTUyZjUyMTdjZDllOWE4ZDMxZWUzYWVlYTlhMiBsZWdhY3ktdHJ1bmsKKzExMjUxIDA2ZjgwYmNjOTU2OTExZjM3OTYxOTcyNzkxNDg2MTdkZDEwMWMyNTQgbGVnYWN5LXRydW5rCisxMTI1MiAyNTZhODBmMzlhODhmZDc5NjIyYmYyN2UzYTY0ZTVjOGEzYjA5ZTgzIGxlZ2FjeS10cnVuaworMTEyNTMgMmY0NmY4N2FhODBhYWY1Y2QzY2JmMjA5NWQ2MzU4NDdmZjdiYjYyMSBsZWdhY3ktdHJ1bmsKKzExMjU0IDcwYjYzM2ZmMmZiNzVjNTYxNGI5NDM1MWYxM2IxZThlNDQzNGZhZDYgbGVnYWN5LXRydW5rCisxMTI1NSA0NWJlNDBlZmNiOTUwNDkyZWUzYzczMzYzZmM5M2ViNTg2MmUyNjRkIGxlZ2FjeS10cnVuaworMTEyNTYgZWRiZjYzMWZiN2U5ZTQxMjY5OWE0MmI4OTZiZjViMzhkOTFhZTQyMiBsZWdhY3ktdHJ1bmsKKzExMjU3IGQzOTY3OGQyMmI0YTMzZDAzYTU5ZjA3YWZhZDljNmMyNmIwZjc4MTIgbGVnYWN5LXRydW5rCisxMTI1OCAwNDg0MWVlZDk4ZWY5MTY0YjE1ZDZjOWZhYTU0N2FmODc1YTg3YTU1IGxlZ2FjeS10cnVuaworMTEyNTkgMDA1MjQ1NTVlZjE3NDI4Mzc2M2IxNzEwOWE2NzgzY2Q1ZjVkNDA5MyBsZWdhY3ktdHJ1bmsKKzExMjYwIDNhMWRkMDEzNzVlMDk0MTZjYWU1ZDVlZGZlOGM3ZWRmZTE5OTUyNDYgbGVnYWN5LXRydW5rCisxMTI2MSA5MTM4MjcyYzFmZTZlYzNiMWQ3MWY3ZDAwYjJkODkzNTgyZjgwY2RjIGxlZ2FjeS10cnVuaworMTEyNjIgNmQ2MWQ0ODlkNzI4ODkxNDNjOTgwMTI1OWIwYjliNDEzYTYzMzczMiBsZWdhY3ktdHJ1bmsKKzExMjYzIDllMzE0MTU0MzZmNjJjZDk0NzdjYjFmOWQ5MTU5NGQ5ZGM0NDFhYTQgbGVnYWN5LXRydW5rCisxMTI2NCBhZTNlMmVhZWY5Yjk1MjVmNjViYTYzMzIwNjU4NDU0MGE4MmNlMjUzIGxlZ2FjeS10cnVuaworMTEyNjUgOGU5NGNlOTM5NGJmMjQ2ZTJjYjg4M2VlMjY5YzRlOWM1NzJjNmNjOSBsZWdhY3ktdHJ1bmsKKzExMjY2IGM5OTA5MDQ2MjQ3NjZlZTg3YzFjNTYzYTEwZTRmNmY1YjIxNGIyMDQgbGVnYWN5LXRydW5rCisxMTI2NyBjODViMzhkNThhY2Q4Y2YwOGE1ZWQzODNkMzU0NGE0ZTUxZTQ3NTdiIGxlZ2FjeS10cnVuaworMTEyNjggN2QyMzJjMGU0ZGQ2YzkwYmYzMzliZWM3ZTY3M2Q0Yzc4Nzk1NzE3YSBsZWdhY3ktdHJ1bmsKKzExMjY5IGQyYmZjODY1NDI4MGE3OWMxN2RhMjZjNWFjYzAwNGM3MjA0OGQyZWMgbGVnYWN5LXRydW5rCisxMTI3MCBkNjQyZTY3NDhkMTJjM2FiZjM3N2Q4NTUwYWY5YzQyZTg4MjcwYzBiIGxlZ2FjeS10cnVuaworMTEyNzEgZDMyZGJjMjAyNjEzZTI5YmFiMzhjY2VmNmRmOTk3ZTUxYWY4ODkwNyBsZWdhY3ktdHJ1bmsKKzExMjcyIDEwNzZhMDI4MzY1YTJlZDViZGZjNTE5YzJmOTU3ZmViMWIyMWZkNWYgbGVnYWN5LXRydW5rCisxMTI3MyAzM2Q1OTMzNmU3ZTZmYmM1Njc3NGRiZDM0OWQyMDVkZmZkNWEyZDk3IGxlZ2FjeS10cnVuaworMTEyNzQgMGY1ZTBiNDA1YmMyZjJhYjc0NWY4MzY0MGNlNjRkOTI3ZTUzOGMwOSBsZWdhY3ktdHJ1bmsKKzExMjc1IDFmODA0ZmFjZjYzNTRmYTJmMmViODdhMTU4ZmU4MTlhZDVjN2FkMWYgbGVnYWN5LXRydW5rCisxMTI3NiAwZTMwYjM1YjhhM2ZmZTM1NjBhMDVkZTUyMTE4NjMzNzczZjBkYTFmIGxlZ2FjeS10cnVuaworMTEyNzcgYjhkMmJhNTk3MTFjMjI3MDA0MzY4YzlmOTFiZjllNDczMDA4Zjg4MCBsZWdhY3ktdHJ1bmsKKzExMjc4IDZmYmI1NjA3Y2RkNjA0YzQxNDIyN2MyM2QyNjBmMDY0MTU5ZTMxZTYgbGVnYWN5LXRydW5rCisxMTI3OSBkNTFkMWE2MWIxY2VmNDc3ODNlYTg3ZDY1MTVlNTU3Mzc2ODA2Nzg4IGxlZ2FjeS10cnVuaworMTEyODAgY2ExZTViYzUyMDlkODQ3MTI3M2U5M2Y1MmU0NDhhM2RiZGU0Y2VkNyBsZWdhY3ktdHJ1bmsKKzExMjgxIDQ0NzI2YjA1ODcwMGFkOTNmZjIwODNlOTFkNzIxY2M1M2VjMTEyZDEgbGVnYWN5LXRydW5rCisxMTI4MiBlOGI1NmIzODcwNDVhZTc0ZGQ5YzNmOThkOGQ0ZTkxY2NhYTVmYjZlIGxlZ2FjeS10cnVuaworMTEyODMgNjE0NjQwMzdkYTUzYzJkMDU1MjFmOTdmYWZjMmNlZTNmODQzYmNiOCBsZWdhY3ktdHJ1bmsKKzExMjg0IDgxY2I5NDAxYTIxYjdjODYyOWU4MjQ5YjJlMzA5ODMzZGUwNmRhMDcgbGVnYWN5LXRydW5rCisxMTI4NSA0ZDE4ZWJkNGNmNDIzZWY4N2JiYmE3OTY0ZGMzMmE0ZWQxZThmZTdhIGxlZ2FjeS10cnVuaworMTEyODYgNWQ1YTViYzhkZTVjYjYyODk0NWRhOTljNmYxMjg2YjQzNTJmYzQ2NSBsZWdhY3ktdHJ1bmsKKzExMjg3IGM5ZTQ1NzA1ZWM5ZTEyOTQwMDNiYjE5MmVhN2I2N2UzMzBiNDM5ODAgbGVnYWN5LXRydW5rCisxMTI4OCA4ZTlkMjE0NmFlOTMwMjE1YzExNjYxMzk1ZjM0NjY3NjdlOTk4MTliIGxlZ2FjeS10cnVuaworMTEyODkgNjQ1YTMyOGU3ZmQ0OTQ5Y2Y2ZTIzNDM4Nzc0M2IyNDNmZTRhMjBkZiBsZWdhY3ktdHJ1bmsKKzExMjkwIDc4Nzg1OTg1YTJhYjU4MWI0ZTU1NWY4YzVkZWVlMzcxZWQ1MWQzYmQgbGVnYWN5LXRydW5rCisxMTI5MSBjNWQ3MmJjZGE5MzJhOGQzNmNhMzYwMDViNDVhYmFiOGZiNzlkNzkxIGxlZ2FjeS10cnVuaworMTEyOTIgNGFhNzY0ODBkODEyNTg5MmM1MTVhZTFiYzMxNGY5MGQzZTA0NGY3YSBsZWdhY3ktdHJ1bmsKKzExMjkzIGU1OGE2MTRmYjhlNDBlYWE2NzIxMjEyOTYzMjFiOTlkMDhiYTZlMWIgbGVnYWN5LXRydW5rCisxMTI5NCAxNDA2OTM3NDRhM2M4NTNmN2I0NDY5NGY2YTM3NThiNDFhY2M2ZmY0IGxlZ2FjeS10cnVuaworMTEyOTUgZGQ2NDk4MzdlYmQ0ODk4NDI1NTcxZWFiMjQ2MWQ2MWZkMzFmOGNhYyBsZWdhY3ktdHJ1bmsKKzExMjk2IDY3MzhlNTM4Mzk3NzRmYWUyODZkN2U5MTEwYjg2MzNmMmRmNWFkNjQgbGVnYWN5LXRydW5rCisxMTI5NyA4NDYwYmRjM2RiZjdiN2U2ZDMzZDczOTA0M2RhOGNhMWY4ZmQxMDc1IGxlZ2FjeS10cnVuaworMTEyOTggZDhiNDYxOTg5MjM4ZDgyZjgzZGFlYmZmNTk5MzM1ZmY4NzBkZmU4ZCBsZWdhY3ktdHJ1bmsKKzExMjk5IDBlZGQzOGRiMjI4ODQ1OTVhYWNhMzExNGM3NDUxOTdjMjFhN2VhZGQgbGVnYWN5LXRydW5rCisxMTMwMCA3MWZjYzRjYTBlOGFlZGM5MTYxOGIyYjAxMzIwM2I1ZTA1MmViYWE5IGxlZ2FjeS10cnVuaworMTEzMDEgYzI4MDExMDAwZWQzNjkzZDYzYzIxNGQzMzBhNGY3YjEyNTQyMjVmNiBsZWdhY3ktdHJ1bmsKKzExMzAyIDliMGRkYTlhNTU4YmQ1ZWVjOTZlOTM0NjM2ZWI1ZTM0NTE5MDE0NzQgbGVnYWN5LXRydW5rCisxMTMwNCBhMWMxNmEzZmE3ZGI0MGEzNzU1ODdhMjIzNTdkMGQwMWRlYmNiZDg2IGxlZ2FjeS10cnVuaworMTEzMDUgYmQ0N2VlMDY4YjgzZmI5ZjJhOGI2YTk4OWFiNDBmM2Y4OGM0Zjk2OCBsZWdhY3ktdHJ1bmsKKzExMzA2IGYyYTRhMmI2MDg2MDdiMGFmYzg3YzZiZGJlYjBkYjE2MDFiYTljYmUgbGVnYWN5LXRydW5rCisxMTMwNyBiMDQwOThhMjU2ZDAwNDZkOWNlYTRjYzQ2Yzg4YTlkZGEwOTYyMWIzIGxlZ2FjeS10cnVuaworMTEzMDggMTI5ODcwZTIxNzlhOTFkMjc4YWRlZjdhYzdhNTk2OTk3ODBiZWYwYSBsZWdhY3ktdHJ1bmsKKzExMzA5IDRiZmE1M2JkOTdiYzA2NzYyZTdjM2IxMzEwODNjNGZiYWEyYzNjNTEgbGVnYWN5LXRydW5rCisxMTMxMCBkZjE2MDJiNmEyYTg2MjE2NjE4NmRhYjQwNzYwYWQ1ODY0ZDU3MzhjIGxlZ2FjeS10cnVuaworMTEzMTEgODUzMjE0MWNmZjRjMWY1ZGY2ZGQ1ZTY2M2ZlZWI1ZjIxNTAyZTZhZSBsZWdhY3ktdHJ1bmsKKzExMzEyIDNjYzJmYWQ0ZTAyMGUxN2Q4M2VhMGIwYTc1YzM2NmZiYTI4NGIwMWUgbGVnYWN5LXRydW5rCisxMTMxMyBlZWM0ZGNlYjQ0MzZhYWU2MDU4MGU3YTY5YWI0MDAwNjVkODA0N2ZiIGxlZ2FjeS10cnVuaworMTEzMTQgMDBhNmJiNjVmZjI5M2MwZTBhOGQ2MjNjNWUyNTQzYzliNWQxOWQyYiBsZWdhY3ktdHJ1bmsKKzExMzE1IDc0MWQ1MDYxOGVjMmNhYTdjNjU3OGVmMDlmNTk5ODA1Zjc4YjkwMDggbGVnYWN5LXRydW5rCisxMTMxNiAwNDVlOTAwYTQxOThlMDJhY2EyZDE4MTg4OTdjMWJiYWY1ZmM4ODA5IGxlZ2FjeS10cnVuaworMTEzMTcgMzM2Y2I1MDk4NzlhNDljMjdjMjU1MmQ3NzYxNmIxMGM1MzM0ZDE4MSBsZWdhY3ktdHJ1bmsKKzExMzE4IGIwNGY5NWZlZGQ1MGNhMWFkNWIzOTJkYWViYmY0N2MxZjgxZDc2ZDQgbGVnYWN5LXRydW5rCisxMTMxOSBmMWNhNDE5OTVlNjJlNTE3MjlmYTZiN2M3ODdiMTQ5MjdmYzJkZWQwIGxlZ2FjeS10cnVuaworMTEzMjAgOTI5ZGI4Mzg1YmE0YTUzZTBiYTNiMWVkNjg0ZjQzNmYxZGViNjAzNyBsZWdhY3ktdHJ1bmsKKzExMzIxIGU1YTgzMTE2ODRlNGJkYTM3MmJjZmY3NzA2NTA2NGY4ZGU0OTU4YjcgbGVnYWN5LXRydW5rCisxMTMyMiBjMmY5ZTUwNWY3NWExZGE5MWNhMjE3YjA3YzAzYjAzOTc0NTlmOTE1IGxlZ2FjeS10cnVuaworMTEzMjMgNDRiYWVmOGFiNWM4OWQzNGIxNGY5MDgzZWNkZTAxOTcyYmYwZmQyOCBsZWdhY3ktdHJ1bmsKKzExMzI0IGJkNmQ5N2Q2YjJhZTBiNzcwYmM4Mjk1MjlmNDM1MDRjZjdhZTVkMDIgbGVnYWN5LXRydW5rCisxMTMyNSA4YTM3MDUyNmRlMDZhZDNkYjBkMWMzMTQwNThmMDg2YzQ2NDhhZDNiIGxlZ2FjeS10cnVuaworMTEzMjYgMWM3ZDg2MDg3MWQ5ZDEwZWVkZWI5YWNjYjM2MTYzZjk2MTM5NWIxZCBsZWdhY3ktdHJ1bmsKKzExMzI3IGI2NWVhODEyNzc1MjVhOWU0ZGQyNzY3MDQ0NTQzZjlkMzEyZjdkNTYgbGVnYWN5LXRydW5rCisxMTMyOCBiOTMzZjU4NGEyNmQwMzEyNjQxZTZjMzhiMGU4NTE4NTczOWRmZWQ4IGxlZ2FjeS10cnVuaworMTEzMjkgNzQ1MzM0NTQ1ODk4MWJlODgwZDk2MDQzOWIxMzIwNjU2MDM2MzQ4OSBsZWdhY3ktdHJ1bmsKKzExMzMwIDA4NjcwMjI1MDE1MzRhMWYyNGQwMTNhOGQ4ZTJkZjU5YjZmZmI3MTEgbGVnYWN5LXRydW5rCisxMTMzMSAzN2M2OTE4ZWZkM2JjYTEyZmQzNTcyNjNhNjUxNTE4YmE5MmE1ODc2IGxlZ2FjeS10cnVuaworMTEzMzIgNjFlZjg4MTg2OTViZDQzNmRmMGM4ZGFmODI0ODBhNDU3ZDMwNzBiOSBsZWdhY3ktdHJ1bmsKKzExMzMzIGMzNTE1MjNlYmMwNWVlYmRjOWM0NDk3NDEwODZhZjBmNTZiM2M1YTkgbGVnYWN5LXRydW5rCisxMTMzNCA1MzRhMWE0MzdhZjNhOWI4ZWFmNzM1MzIzODYxZTI3Mjg5MGVkMDZmIGxlZ2FjeS10cnVuaworMTEzMzUgY2VmMjBlYzZmMjQ5Y2M0NjJkOWM0ZjJmZjc5ZGI0ZGRkZWUxOGQ4MSBsZWdhY3ktdHJ1bmsKKzExMzM2IGJiZTlkNzJiY2NkYTI3YTlkYWEzM2UwNTg4MjkwM2ZkOWYzYmViZWUgbGVnYWN5LXRydW5rCisxMTMzNyA1ZjlkZmY2ODE3OTdmZjk0MDc5NDg0MDNiMjhjMDY3NDgwNTJiOWQ0IGxlZ2FjeS10cnVuaworMTEzMzggMzU0Y2QyNGU1ZGZlNDJhMGY4MmYwMzAxZjc5YWEwMDg3NjkwNjA0MCBsZWdhY3ktdHJ1bmsKKzExMzM5IGQyODA0NjA4YmVjZDA4YTFhNGI1ZTI5ZWRhMGIzOTA1MGQ0ZmVmMmEgbGVnYWN5LXRydW5rCisxMTM0MCBmN2Q0YTU4NWRhMDE4NmMwYjViODhiODAxNGU3Y2E5NGYzMGY3NjMxIGxlZ2FjeS10cnVuaworMTEzNDEgNTY3NjA3MDc2ZDhmNGM3NmEyOTI3NjdiYjQ0MzhjM2MyYTk0ODA2YSBsZWdhY3ktdHJ1bmsKKzExMzQyIDg2NTNlMWYyMTlmMWJkMjI2MWUxMzdjOTZmNzBmZmUxM2JhNTBhMDIgbGVnYWN5LXRydW5rCisxMTM0MyBkODA4ZWJhNGIzYzY1MzA0ODgwZjBlMmU2ZDViMTIzNjYyYmRiY2E4IGxlZ2FjeS10cnVuaworMTEzNDQgZTE0NDU4ZjEzNmNjYWUzZDdhNmI0OWMxODE2MzgxYWU2MmVjMTE5OCBsZWdhY3ktdHJ1bmsKKzExMzQ1IGUwMjRjNjk2MjVlMTJmOGVkOTY2NjU2YTVmZjUzZDA1ZmMxZjM1MWMgbGVnYWN5LXRydW5rCisxMTM0NiA4MDExZjE0NjY5YTgxN2Q0YmU5Y2YxNTJkMzUzMGQ1NDRjMzJhYmQ3IGxlZ2FjeS10cnVuaworMTEzNDcgNWNkZWNhYWE5YmViMGQzN2RkMWU0NDlhODE5YmRlYTQxMjRlMWVkZSBsZWdhY3ktdHJ1bmsKKzExMzQ4IGY0NTZmNWFhNTcxODVhMmQzMWM5MjBhOWMzNjJjZTBiY2UzMDQ3NmIgbGVnYWN5LXRydW5rCisxMTM0OSBhMWVjM2VjMjYwMmVjYTU4MjZlYjgwZGY2MjE0OTA4NzU4OTNiNjA1IGxlZ2FjeS10cnVuaworMTEzNTAgYmI3OGNjMjc0NjlhYjRiZTg3MzhhMGVjMDZmYTExODgyNjMyYTk2NyBsZWdhY3ktdHJ1bmsKKzExMzUxIGY4ZTJhZDRjZDQ1YmMzYjFiZDExNjQ1MDhlMjEyYTBkNmFmYWUwNzMgbGVnYWN5LXRydW5rCisxMTM1MiA1NzA4OWFkNGQ3M2M2ZTIwYmFmODU5NmEyOTVhNjY5Y2NjZDk2NjBmIGxlZ2FjeS10cnVuaworMTEzNTMgM2JjM2Y5NGQ2MDYxZTRmMmFmMzU3OGQ1ZGUwMGM2ZTZjMDQ0YTM4MCBsZWdhY3ktdHJ1bmsKKzExMzU0IDA1YzExMDRlMDg0YjMxNDYzNzRjOTI4NzliNmRiMjQyNTQ2MDQ3OTggbGVnYWN5LXRydW5rCisxMTM1NSA4NjhhMjVjZjY1M2JmMDVlYjM5NzU5ZThhN2EwYWZlNzgxZGJkYmZmIGxlZ2FjeS10cnVuaworMTEzNTYgYWFjYmZkZjQ5NDNlNTI5ODdjYzM1YWFhOTQxOWM3MmY5ZGFmZDI0YyBsZWdhY3ktdHJ1bmsKKzExMzU3IDEwNzkwZjE0ZDEzYWJkMjZhYTIyOGYwYzE4ZjNiZGNkNTQ5NmEzZDAgbGVnYWN5LXRydW5rCisxMTM1OCA3MmI2OThjMzMyNGI5OTA1YTQzNzAzYjEyOGVlN2VjMzlmM2YxYjkxIGxlZ2FjeS10cnVuaworMTEzNTkgZDM0MmViNDRkN2JkZDU0Zjc1Mjk4MDA2NzgzM2U3YTQ5OTI1YWVmMSBsZWdhY3ktdHJ1bmsKKzExMzYwIGViMDU5YTMzZjdmZjMxYzk5Mjg2NTg3NzVmOGM0OTY4Yjk5OGYwOTYgbGVnYWN5LXRydW5rCisxMTM2MSA4MTNmNTI3ZjNiZWMwMWNkN2MyZGQ5OWMyYjRjZWIwZDM0M2FlOGNjIGxlZ2FjeS10cnVuaworMTEzNjIgMjdlZTMyMzFkZmE5YmVjODBhODJiNGU1NTNkNjJjODdmMTIzNDJkMyBsZWdhY3ktdHJ1bmsKKzExMzYzIGE5ZWIyNjVkMmY1NzBkZWJmZDRkOTZkNTQ1ZjBkMjI3YzYxNTMxNjIgbGVnYWN5LXRydW5rCisxMTM2NCBmZWJjYTZiMTgyN2RkZGRhM2EzZDI5YmY5NjgyNWNkNjM0MjExOTgyIGxlZ2FjeS10cnVuaworMTEzNjUgYjI4Yjg0ZTZhNDI5NDA1YTMxZGU3MmU5YTUxZmIzMzA1NzA2YzhmNSBsZWdhY3ktdHJ1bmsKKzExMzY2IGY4OGY0MDI0MTdmMjlmM2M0M2FhNmIzNzY0ZTJkMzI2ZWFiMzI2MjkgbGVnYWN5LXRydW5rCisxMTM2NyA4NWRjZTMyYWNmOWQ3OTc4OGE5Y2ZiOWI2YzRmYzAyMDdmMTMxNzZkIGxlZ2FjeS10cnVuaworMTEzNjggYzBhOWVkMjFkZmEwNTYwMmNmNzRhOTk0ODBiNTZhOTEyMDY5ZDJmNSBsZWdhY3ktdHJ1bmsKKzExMzY5IDA0YTQ5MmYxMTBkYmRjNzA2Y2I2ZjhkMDNjZmM2ZmRhOTg4Mzg1M2MgbGVnYWN5LXRydW5rCisxMTM3MCA4YzA1MjRhNzEyNDRmZDBlY2E4ZWI2ZWEwZmMyZDI4Y2ZkOTdiYjljIGxlZ2FjeS10cnVuaworMTEzNzEgOWEwNzVhMmVkYjFmNTQyZjg4OTFiOTYxNGQyOTZlNzMwMjM2ZmI0ZSBsZWdhY3ktdHJ1bmsKKzExMzcyIDM0MDEyMTJlNTRmYzM4MDVjYjY3Yzk5NzAxNDJiNTNjMDllM2IxZmQgbGVnYWN5LXRydW5rCisxMTM3MyAzMWMwNjM1MTdjMjJlYzM0YzdlMjBkMDMzNGE1YzgxOWJkMDRlZDRhIGxlZ2FjeS10cnVuaworMTEzNzQgNjBiNGE2MTBkY2ZjY2FhNzNiNzA2NmExZTcwMjA4YWNjMmNhNTQ1NCBsZWdhY3ktdHJ1bmsKKzExMzc1IGE3MDgzMjk1ZWIzOGVhYzAwYmQxZmU0OTlmYzEzZGM0M2UxZGYxMmUgbGVnYWN5LXRydW5rCisxMTM3NiAwOTA2M2VlZGEyYjcwM2RhODljMjJiNzZjNjA3ZjNiOGQzMjVmMTdkIGxlZ2FjeS10cnVuaworMTEzNzcgNzY0ZGU3MzFjODA2M2ZhNDNjNTYyNjk5N2FjZDkxZTMyNWEyZDEzNSBsZWdhY3ktdHJ1bmsKKzExMzc4IDliNGJjM2I4YjlkNGNkMDVlODAxY2ZmOGUxMzhlMzQxMDk1MTZkZWEgbGVnYWN5LXRydW5rCisxMTM3OSBkMjk1YTUxODc0YTZhZmEyYWYyMTdmYWI5YjBmMjI3YTM1NDcyZDY3IGxlZ2FjeS10cnVuaworMTEzODAgOWRiOGI1ZWE2YjIxMjIwNjlkN2M2NmJiMTA2OTAzOWNiNjY4ZTRhZSBsZWdhY3ktdHJ1bmsKKzExMzgxIDQ5MjM2M2Q2YmM5NDUxMTg0YzJlZjQ1MzM0MGYxZTFjZTdmZWQwOWUgbGVnYWN5LXRydW5rCisxMTM4MiAzODU0NGY4MjhkNzQwOGUyN2Y5ZTNkODhlMDI0Y2E0YzBmYTY1NGMzIGxlZ2FjeS10cnVuaworMTEzODMgNmRjMGE5ZGM1YmJiOTFhNTRjMzkxMjJiZDQ1N2NiOTUxNThiZDdmOSBsZWdhY3ktdHJ1bmsKKzExMzg0IGRkZjcxMGI3ZTZlYjZmZmI1MjA4ODEzYjQxNmVlNGM2ODNkNDBmZWIgbGVnYWN5LXRydW5rCisxMTM4NSA2ZjczYWUxY2Y5MzQ2YTcxNjk2YmRkNWZhNTkzYzFlMjAzNjJjNjViIGxlZ2FjeS10cnVuaworMTEzODYgNmQ4YjkyY2FmOGNkYjUyZTA2OGNjY2M3YWViNTU0NTJlMDAxN2M2YiBsZWdhY3ktdHJ1bmsKKzExMzg3IGQ0MWZmNWIxOTFkMWQxMTZiODdiZGQzMDdkYzU5YjEwMmYzZmQ1YWUgbGVnYWN5LXRydW5rCisxMTM4OCAyOWQ4NDdjNDI4ZjlkYTcxOTkwYzQ5MmFiZWU3Y2FmNDhlMzZiYzQ3IGxlZ2FjeS10cnVuaworMTEzODkgOTgwMzU1NmMxYWU3YzNmZWVlZGExYzBlZTRlYjg4OGVmNGVjZWM4OSBsZWdhY3ktdHJ1bmsKKzExMzkwIGE1YjcxYThhMWFiNTg2OTYyYzQ2NjBlYmFiZTgzZDdjYjI4NTg5N2IgbGVnYWN5LXRydW5rCisxMTM5MSA3ZDY4MTM1MjFmNjEzNTllYzc2YjI5MGJhNzM1MWViZDdmY2ViNjk3IGxlZ2FjeS10cnVuaworMTEzOTIgODllNjVhOTZhN2QzZmE4MDU1MzU1MzRmMGI3ZDllNTQ0YWU1ZmM4MCBsZWdhY3ktdHJ1bmsKKzExMzkzIGIxZDFkOGMwMDcxYmE3Y2Q3MzRiN2IxZDVmYzE0MDNmOTVlMmRiNjcgbGVnYWN5LXRydW5rCisxMTM5NCA5YTk4NDI3NmNjNTY1Y2EyZmQ2ZjY1YjZiMzRmMzUyMzE5NjRiNmJlIGxlZ2FjeS10cnVuaworMTEzOTUgNDU5YmRhOTQwZGFhMjc4MTRmNzk5N2JmYTU0NjEyM2YwNGI0MDE2NyBsZWdhY3ktdHJ1bmsKKzExMzk2IGQ2YjczOTYyNTI5YmI2NjE0ZjYzYzI1ZWNlZjNjYTc2MTJiZWM3YjkgbGVnYWN5LXRydW5rCisxMTM5NyA5YTQwNTRiODQ4NWZmNGVhZjY2YzRmMGI3MDA3ZDg5N2M0NDY4NDJiIGxlZ2FjeS10cnVuaworMTEzOTggNTUyYzZiM2FiYTNkZTUwNTRiYmY0NjllZTQ2ZjQ0ZjU2YjFiOTFkYiBsZWdhY3ktdHJ1bmsKKzExMzk5IDZiNjMzZGY0MWU1OTUxYWFjYzRmMGJmODc1Njk1Y2JhMDdjMjIzNDIgbGVnYWN5LXRydW5rCisxMTQwMCBlNTVhNzlmZjgyMjhmOTIyYThjY2M2ZThhYjk2YjY5MTM2YzRkMDc4IGxlZ2FjeS10cnVuaworMTE0MDEgYWNmZmZlMTQ2MjhlNDQ4YmZlYjA4YjVhOGQzOTIxMTQ5ZjQ4NmE0YyBsZWdhY3ktdHJ1bmsKKzExNDAyIDYxMDY4MGUzYjkyOTNmYjZjZDFkMzFkMWRhNjA1MDNlMzlhY2IwZmMgbGVnYWN5LXRydW5rCisxMTQwMyAwMjdmM2VlZjZlNWE3OWVlYzQ0Mjg2MTUwMDExMzhkOTZlNzEzYTJiIGxlZ2FjeS10cnVuaworMTE0MDQgZDBmOTNlYmE5YmFhZDBjNGJhYjU5ZjM3YWIyY2NmNDkyZGE1MmIzNCBsZWdhY3ktdHJ1bmsKKzExNDA1IDhlNDE5MDY4NjNiZTdiYjQ3ZDExM2ZlN2VhMGFiNDlmYjJkMTY0YzIgbGVnYWN5LXRydW5rCisxMTQwNiAyOGJjNWQ4ZThkY2EzNmIzM2YwMTRmMzI1MzJkMGRlMmU3YzcyYTNkIGxlZ2FjeS10cnVuaworMTE0MDcgMDk1NGFkNGFjZGZkZTVjOGNmNWQ1NjNiMGQwOWM1MDE2MjY3MzM0OSBsZWdhY3ktdHJ1bmsKKzExNDA4IGJlOTM1ODUxZGM1MGMzZGRhZmZmY2M4MDkwNmI0Yzk5MGEwMzkyMTkgbGVnYWN5LXRydW5rCisxMTQwOSBhZjliZjg0ZmJjNWVhNDJiOWE2MTM4N2FhZDkxYTc1MjEzOTFlNjA0IGxlZ2FjeS10cnVuaworMTE0MTAgNzNmOWExZThhZTUyYzA1YTU0ODdhNjExNWJlZTZkMTk1MGRjYzEyNCBsZWdhY3ktdHJ1bmsKKzExNDExIGE4MjQ5YTZiMWI1OGU0N2RkZTgzMzIzOTEzODMxNWI3OTNhZDg3NTMgbGVnYWN5LXRydW5rCisxMTQxMiBiYThkMWJjOThiMmQ4MTU5ZDlmZDBmN2EwN2I0NjU4ZTQxNjg1ODZhIGxlZ2FjeS10cnVuaworMTE0MTMgYzQ1YTJkOTExZjMxNTY2ZjMzZTNlMTY3ZWFiOGNkMjRkM2NlYmQzNCBsZWdhY3ktdHJ1bmsKKzExNDE0IGRhZTJmMmVmOTAxNWFhM2UzOGI3MTBjZWQ1MDQ4NGVkZjY1ODgwYzIgbGVnYWN5LXRydW5rCisxMTQxNSAwYmE4MWI5OTg4ZWVmZWQxZDYxMDEwN2UyZWRlZTc2MThhN2FhMGI3IGxlZ2FjeS10cnVuaworMTE0MTYgZGM2ZWRmZDRiYWU1YmZiMzNlNWRhMjcwOTYzNjg3ZTViYzRlMmQ1YyBsZWdhY3ktdHJ1bmsKKzExNDE3IDIwYjgzY2EwNmNlOGExODczNjNlNGNlZmYxMDUzODUxYTg5MWRhZDYgbGVnYWN5LXRydW5rCisxMTQxOCAyZjkzNmI3YTA5Zjk0ZjE4MDRjYWNhN2I3MTRlNDgzY2RkNDQ1ZGRhIGxlZ2FjeS10cnVuaworMTE0MTkgNWI3M2Q1YmFiYzc4ZTkxYWI1NTA1ZWI4NjY2YzExODEyMjU5NWU3MiBsZWdhY3ktdHJ1bmsKKzExNDIwIDE5N2FjNWFkMzBjZGYzNjA5Mzg3NTE5MzBhMTUxN2FiYmMwNzJlMmEgbGVnYWN5LXRydW5rCisxMTQyMSBiNGUyYjJjYjY1YjFiZDEwNWY3ZmNiMjk1YTJhY2U5OTI4ZjM2ZDA2IGxlZ2FjeS10cnVuaworMTE0MjIgMzQ3ODg0ZWM1MzE4MTM3Y2UyYjdhNGY4YmJiYTQxMTU1NWQ0MDdkNSBsZWdhY3ktdHJ1bmsKKzExNDIzIDJkNzc1MzA4NTM4NTkyZGVhOGRkYjkyOTY4OWEyMjEwZDhhZWI2MzcgbGVnYWN5LXRydW5rCisxMTQyNCA0MDA4OWU1NTgzMDkwY2FlYmMzMDllNDM2YTdkMGE4Y2QzYWIxYjdjIGxlZ2FjeS10cnVuaworMTE0MjUgZmRhNDYzYzNiMTc2Nzg5N2U4NTA3MWE0MTY2NGRhOTQ0OTY4M2IxMCBsZWdhY3ktdHJ1bmsKKzExNDI2IDBmMzMxODgzY2MxNWYwNTNlZTk3ZWQ5YzQ2YjUyMWFmMTYxNmU4YWQgbGVnYWN5LXRydW5rCisxMTQyNyAzYjAyOTE2NTVlMzE2MzEyYWJjZWViN2ViYWNjZDU1ZDk0OGYwMmExIGxlZ2FjeS10cnVuaworMTE0MjggNzYwMWE3ZTk1ODNkZTVkYjkwOTNhOGJiMzhmOTUwMDk4YmM2OWVmNyBsZWdhY3ktdHJ1bmsKKzExNDI5IDUwYWZhMjhhYTRiOTE5YzllNmMyZDZhNzVmZGQ2NmY0ZDJiMDdlODUgbGVnYWN5LXRydW5rCisxMTQzMCBjOTE4MDljZDY3ZTU0MWJlNjRhODBkYTIyZTQ1MDMyYjNlMTdmMDI4IGxlZ2FjeS10cnVuaworMTE0MzEgN2NkNDJjODc4ZjE2MTliMmRlNDg2ZDZiN2RhYTM5MTdiYzM3YzM2YSBsZWdhY3ktdHJ1bmsKKzExNDMyIDBhNjg5MmIxYTRhYzI4MjljZjliYWMyZjE3YmU3NThhNGExMjcwMDkgbGVnYWN5LXRydW5rCisxMTQzMyBjZjNjZWJhN2VmZGRlZDYyNTdhOTc2N2NlYmM2NWQ3YjhmN2Q4NTZiIGxlZ2FjeS10cnVuaworMTE0MzQgOGFjYzcyYTgxMzE5OThmODA1Njc4ZjNiMWI1ZTg4NWNiZjVlM2JkMSBsZWdhY3ktdHJ1bmsKKzExNDM1IGNiN2ExNTA2OTE5YWY0Zjc3YjcwNzNkOGYxNmJjMDg4ZjM0YjM0YmMgbGVnYWN5LXRydW5rCisxMTQzNiA5OTAxNTM4NTNlM2JiMWU3OTc5N2FmYzM5YzRlYTg3YTA3NTU3ZTk1IGxlZ2FjeS10cnVuaworMTE0MzcgMzg0ZmZlZDI1MmU5MWZkODQ4ODhlYmU1ZWRlZDQ4ZWQ5NmZlNTEyNSBsZWdhY3ktdHJ1bmsKKzExNDM4IGMyNjU5MGIxYzM5NmI1NzBlZjI5NmFmMzgyZTYwMmRlY2IzYmVkZTcgbGVnYWN5LXRydW5rCisxMTQzOSBhYzE4ODFjNGJhNmQ5ZDA2YTk2YjcxYzExNjM5N2IyMTQ2MDkwYWZhIGxlZ2FjeS10cnVuaworMTE0NDAgYzc5ZGVmYjVhMzljMWJkNzNjM2Q2MmFhN2EwYjJhMTFmODkyYTNiNyBsZWdhY3ktdHJ1bmsKKzExNDQxIDI0OWNkNDQzM2NmMDhlYmYyYjg2OTUyODMyMDE0N2M1YjQyZTdjZmUgbGVnYWN5LXRydW5rCisxMTQ0MiBhMWRlYWYwNDI3N2JiYjhhMGRhNmUzY2U3NWVhNjQzNTgzNTI4ZTEwIGxlZ2FjeS10cnVuaworMTE0NDMgOTYxOGE4Njg3OWNhZWZhYWE3Y2MwMzc2ZDEwOGY1NTBiYWQzZWUwZSBsZWdhY3ktdHJ1bmsKKzExNDQ0IGU3OTU4ZThjNzc3YTc4NGI5YzBjNjZlNjE5Yzk1MjdlYzY0NmVlYWIgbGVnYWN5LXRydW5rCisxMTQ0NSBlY2RkOTZkZGIwMDM1ZjdiYWE3MTNmY2I0MjY2NjY0OWRhNTkzNTY3IGxlZ2FjeS10cnVuaworMTE0NDYgNGI2NGYxMzFhYTRkODUzNDIzZjQzMTI3Njk5MmE3MWNlMDQ0OTViNCBsZWdhY3ktdHJ1bmsKKzExNDQ3IDk5ZmZlMGEzOGExY2FkMzhhYmY1OTU1YjdkNTA4NGFjOWUwMDI4YmUgbGVnYWN5LXRydW5rCisxMTQ0OCBiZTIxYWFkZjQ5MDhmN2Q5ZWYwZGY1MDg0YjJjMzg5YjIzNzlmOTFhIGxlZ2FjeS10cnVuaworMTE0NDkgYzRjMzI4YWFiZDgyNWFhZTlkZDQ3ZWRkMGM5ZTYwN2Y0YzZiZjljZiBsZWdhY3ktdHJ1bmsKKzExNDUwIGRlMTZlMTlmZjFkZDhiMGY4YTg4NTU2Y2U0NTYxMDIxNTA4MDRmMjYgbGVnYWN5LXRydW5rCisxMTQ1MSAxNTdlNGYyMGNkNzE2MDk0YTdmZDk1ZDY5ZDFlM2NkNDQ3ZGU4ZjgxIGxlZ2FjeS10cnVuaworMTE0NTIgNDU2MTRjZjllOTExYjBkNjQwNDMzMjdjZmVhZTVjZDZmOTIxZjkxZCBsZWdhY3ktdHJ1bmsKKzExNDUzIDU4ZDY5MGQ0ZTMxMjgzNzViNGM2NTE3ODk1YTJhNDE2NTQyOTVkNTQgbGVnYWN5LXRydW5rCisxMTQ1NCA3ODg1ZjE1ZGEwODAxYzlhMzU3OWI2YWE4NjE4ODI4ZTE3OWY5ZTc2IGxlZ2FjeS10cnVuaworMTE0NTUgNDY4Y2E4NGZiYzE0YTI1NWNhMzBmOTlkZjlkOTFlMWRkOWJiYjI3YyBsZWdhY3ktdHJ1bmsKKzExNDU1IGZlZDYzY2NiZTZkYzNhYzY2M2JmZTk3YTJmNzAwNmIxYjI4NTY4ZjkgbGVnYWN5LXRydW5rCisxMTQ1NyBkNjljZmMyM2FhNzY2NDMwYzFkNTMxODdkY2EyMGM5YWYyNjliZTVjIGxlZ2FjeS10cnVuaworMTE0NTggM2JjZDYyNzhlNjU4MTA3ZWRiYjQ2N2ExYzRiM2UxM2JiNzBjMjZkNSBsZWdhY3ktdHJ1bmsKKzExNDU5IDgyYTQzZTFiZmE0ZmRhMDYwMjM3YjAxZjM5NzRiNWQ4ZWJmZjg5YTIgbGVnYWN5LXRydW5rCisxMTQ2MCAwN2Q5N2QxNTQ2ZDRiM2M0NDc5NWJjY2Y0YzNkOWFmNmE4NTExOTVkIGxlZ2FjeS10cnVuaworMTE0NjEgMGFmYzM4Mjc5NzdlMTJiMGY3M2JiYjlhMDM3Y2JjZGM5NTJiZDg5ZiBsZWdhY3ktdHJ1bmsKKzExNDYyIDI2YzA0MWIxNDVjMTk1YjRkZmI4MmRmOGIyYzNlOWNhNTk2ZmUwMTkgbGVnYWN5LXRydW5rCisxMTQ2MyBmMWU0MWZjMjc4M2MxOWRkOTY1N2U1YzA3OGE5MGVlNjM5NTAxZTc2IGxlZ2FjeS10cnVuaworMTE0NjQgMDM5ODA1MWY4ZmZhZTE3NTEzN2NjYTY2NmE5YjNhM2Y2YzNmZjY5OCBsZWdhY3ktdHJ1bmsKKzExNDY1IDdjMmJjN2RiNDkzMzZjYzE2NGUyOGIzYTg4YzExNDFjMmYwMzQzMWUgbGVnYWN5LXRydW5rCisxMTQ2NiA0ZWY2NDBhY2YyMzY1YWE3MTUyNzlmMTc5ZjY5NDFlNThjMGUxNDAxIGxlZ2FjeS10cnVuaworMTE0NjcgNmQ0ZWEzN2Q3MGMyMmFmYTUwYWI3ZTBlMDY1ODM0YTZjZjQ3NDQ2NSBsZWdhY3ktdHJ1bmsKKzExNDY4IGQ3ODc4YjM4NmRhZmE4MTFhMTg5Y2U5ZDBjZWJjMmFjM2E3MWIyZTMgbGVnYWN5LXRydW5rCisxMTQ3MCBmZjY3ZjkzYzRhOWJjMGZmM2UzNWQ4YzVkODU3Mzc4NThhNDNlMjEwIGxlZ2FjeS10cnVuaworMTE0NzEgM2UxMjdiY2E4NGU3MmZiZDk0YTI0YWEzZTFmMzc1OGQwZTUzY2U4NyBsZWdhY3ktdHJ1bmsKKzExNDcyIDA3MGRlNGQzOWRkZDg2YWM5NmRiYTU2ZGU5ZGMzOThkMTQyMTQ0YjEgbGVnYWN5LXRydW5rCisxMTQ3MyA1ZmIzYzY4M2U4NjI2MjM1NjY2YzYxOTRkNDA2MmRlNTI0NTc5NzUwIGxlZ2FjeS10cnVuaworMTE0NzQgZDE3ODIyNzEyNDIxMGVjYTQ5NDk5ZTg5MjFiZDQzZTI4YzhiNDIxNCBsZWdhY3ktdHJ1bmsKKzExNDc1IGRiMTZjYTRkZTRjNDg3ODE5ZTYxMmU0ODhiMzY5Y2I1Zjg4MzZlZTMgbGVnYWN5LXRydW5rCisxMTQ3NiBlZTNhZjkxMWFkNTZiNmVkOWIxMTU4MmExNDc0ZTA0MGJhNjU3ZTI1IGxlZ2FjeS10cnVuaworMTE0NzcgMDkxODM5NDMxODJlYjMyYTg2ZTkzMzlkODI1OGFmMzBhYmVmZjA1MiBsZWdhY3ktdHJ1bmsKKzExNDc4IDljOWM0YzNlZGVjMmVkMDA3OTdlZWQ1YzY1YjEwYzgzZTc5YjI0YmYgbGVnYWN5LXRydW5rCisxMTQ3OSBmMTQ3MzkyNjFhMzRjMTgwY2JlNzM3MzkxM2MxMDFkZTQzNDk0NTczIGxlZ2FjeS10cnVuaworMTE0ODAgM2JkZDBlNzkwYmM5ODY5YzEyNjA4OGM2ZTZmMGY3MGQzYjNjZjY5MiBsZWdhY3ktdHJ1bmsKKzExNDgxIDI5ZTNiMWViNDZiMTkwZTdkMzhiZTMxN2E3ZDg2NjJhOWE3Yzk1NDEgbGVnYWN5LXRydW5rCisxMTQ4MiBmODY0YzlmNjU2MDk1MmI1MTk5Nzg2Yzc0YTZjN2VlZGJkNWM4ODYzIGxlZ2FjeS10cnVuaworMTE0ODMgZGZiN2Y0NjhiNzhkMzc3NTg5OTdmYmY2YzdmZmFmYTJhMDI4MDA4OSBsZWdhY3ktdHJ1bmsKKzExNDg0IGMyZGQ0ZjA4NmE0MmJmYTQxMWZhZjdkZmE2OWMxYmFhOTI3MDE4NTUgbGVnYWN5LXRydW5rCisxMTQ4NSA0NDUwNTA3NTU1ODZiNTkxMjJjNWZhNGFjZDhjZWRiMzhhNWVhODU4IGxlZ2FjeS10cnVuaworMTE0ODYgNzExNmNiOTcxMmJjYzcwOTk4ZGY5NGRlYTc1ZjU1YjIzNjMwOWIwNyBsZWdhY3ktdHJ1bmsKKzExNDg3IGYxNmE2ZTY0ODU5YmI4Y2Y2Yzk4NmI1NTQ4YTNhZDEzOGJlOTI1NzcgbGVnYWN5LXRydW5rCisxMTQ4OCA5M2JlYzZhOGRiMjFiMWYxMzUzMjBkYjJjZGRjZDY4NmVhZTY2MDQyIGxlZ2FjeS10cnVuaworMTE0ODkgZWMwMWZlOWMyODQxN2FiZWU4MzBjY2YwYThkZTI0ODVmMzc5MTBiYiBsZWdhY3ktdHJ1bmsKKzExNDkwIGE5ZjZmYjE0YWJkN2NhMjAxOGIwMDlhMTBlZmRhZjU5YjRiN2FlNTIgbGVnYWN5LXRydW5rCisxMTQ5MSBmZjFhOGEzOGY4YzExYWZiNWI5YTdjMzQ3ZTQzMjk5Y2QzZGFmMzA1IGxlZ2FjeS10cnVuaworMTE0OTIgZWFiYmUwZWQzNDY4Y2NlYzhiODBiMjEyNWM3NmNiY2RiOWQwYmYyMiBsZWdhY3ktdHJ1bmsKKzExNDkzIDU5OTE2NzI4ODVjYjFhYzRkZmNkODk0MWI2ZjRhOGExOTc0M2M2M2YgbGVnYWN5LXRydW5rCisxMTQ5NCA5ZTAxYjc0ZGFmNzdjNzFjNzc1ODFmZjNlNDRlMTlhZDAwMTA4OGU5IGxlZ2FjeS10cnVuaworMTE0OTUgYTExMGI2MDY5OWIxYjQxMjU1MTdhMTVmYTg3ZGRlNzUwNWZkZWNjYyBsZWdhY3ktdHJ1bmsKKzExNDk2IDM2YmZhZmRkYThkMTRmM2I5ZmNmMjk2NDYxOThjNjlkOWU3MDU5ZDcgQkJQWQorMTE0OTcgYmZkODQ3MmY2OTZiOWM4ZmM2OWEyYzczMTkwMmVjMTQxZDlhNDA0MSBPU0FNCisxMTQ5OCBkODVlODA3MGIxNjRmMzc2ZjdlNmM1MmQ0YmZiYWU0ZTNjZDEzNDk2IFBZVEhPTlNDUklQVAorMTE1MDAgYThkNDdhMzcxOGNlOWZkOGM0ZmY3ODM3NjlmMWFhNTk1M2Q5ZDlkMCBCQlBZCisxMTUwMiBiNGQzZjk4YmYyMjk3MmQ0YTEyMTFlNWJjM2Q5MmRjZTM3NTNkN2ExIFBZVEhPTlNDUklQVAorMTE1MDQgZTFmMzIzYWU5YzRiNTIzN2RkZGYwZTE4NTA5Y2NjNmUzMmU1MjA5NyBPU0FNCisxMTUwNSAxMWFiYWUyODRjMDcxZWRiZWU0ZTUxODQ3NWZhMGRjN2NmNmIxMmNkIGxlZ2FjeS10cnVuaworMTE1MDYgMTdjZDZlNWQyOTRiYjNhMDRiZDk5OGNkN2E1ZTYzNWRkYWFhMDI4NyBQWUlERQorMTE1MDggZTkyMWNkYmNjNWRkNjNhZmI2MzM0YWQ5M2M3NGU0NDU1ZWIxNzRhNiBQWUlERQorMTE1MDkgZGZmNjg4MTI0NjU3MmVjNzkxYTRiMTU5MzYyMjBhMDBkNzBjMjc2NCBsZWdhY3ktdHJ1bmsKKzExNTEwIDJjZTNkYTQxOWUxZDM5ZTc0ZTAwN2EwODg0OWEzZmQ1OGRiZWVjMDUgbGVnYWN5LXRydW5rCisxMTUxMSBkZDVmYTE3NTc1NTZkYjczZmM2MzA0ZDRjNDViYjdjYWMwOWRiMmMzIGxlZ2FjeS10cnVuaworMTE1MTIgYjlhMDcwNzM2ZWFjYjMxMWM3YzcyMTgwOGM2Y2FiNGM3YTIxMDgzYSBsZWdhY3ktdHJ1bmsKKzExNTEzIDg5N2NlMDk3NjY5NjUyMGE0YjFlM2ZiN2IyMDJmZmFkMjhkYThhYmIgbGVnYWN5LXRydW5rCisxMTUxNCBiMTUwZWJmN2IyYjcyYzQ4YTkwMGYyMjE1OTEzYmNlZDgxMmQzOGZiIGxlZ2FjeS10cnVuaworMTE1MTUgNjc0ZjQ1MWM0ODE1ZmY0YTA0MDYyZWFkNzc1OGI3Nzc2OTg5YWFhNiBsZWdhY3ktdHJ1bmsKKzExNTE2IDkyOGZlOGJjOWViNmQ2NzU2ZmU3MTRhN2UwZmU0NGIzMWFjZTgxNGEgbGVnYWN5LXRydW5rCisxMTUxNyBhOTcyNGM4ZTZlNmZkMmIwMzBjMjZhMWI0ZWY0MWYyMzVhYmEzMzcxIGxlZ2FjeS10cnVuaworMTE1MTggYjdlNzc0N2MxOTY5NjhmN2VhNTk3ZDUzMzU1OThhNmJhNWRkYmM5ZiBsZWdhY3ktdHJ1bmsKKzExNTE5IDZhMmU5MjYyMTU0MTFkZTIxZDhkOWFhYTVjZmUzM2FkNDA5NzdhY2EgbGVnYWN5LXRydW5rCisxMTUyMCBhODdiMjNkNDI4ODE0ZTM5MDVjMjgxYjZhMmUwYmRhNGZjYzlhOWE2IGxlZ2FjeS10cnVuaworMTE1MjEgM2RmNWI5ZDgzMzViNzc1YTk2NGRlZTRhNjFiYWFmMjRhMTUyNmQzYSBsZWdhY3ktdHJ1bmsKKzExNTIyIGZiNWE1ZWMyZWExYWIwMWJmNzQ5MTA4ZmRkZTUyZjk3YTJiNjliNzEgbGVnYWN5LXRydW5rCisxMTUyMyBkNTMyMzdiY2YxNWY3NzQyMTU0MThmNzNmOGJmYzJiNjBiNzg1ODJmIGxlZ2FjeS10cnVuaworMTE1MjQgNjUxMzk3MTliNjU2MDU5ZTUyYzc2OWIyYTVmYzg4MDg4NmRkZjcwMiBsZWdhY3ktdHJ1bmsKKzExNTI2IGIzZWVjZGUzNjc5ZWRjMTMzMDM0MDAzZDhmZTQ1NDM3NGYxM2I4MGQgbGVnYWN5LXRydW5rCisxMTUyNyBkM2MwNjc5MzRjNjNjYmY3NmVmNzk2MmNhNjg4M2JiNjZmOWNlMzA5IGxlZ2FjeS10cnVuaworMTE1MjggZDI3MjJhNGNiZDljNjEyOGI1MjE2ODY2OGY4ZjViOGVkYWNkMjY1MSBsZWdhY3ktdHJ1bmsKKzExNTI5IGJhZjlhNWE3MWQyZDZkZGY2ODgxNWM0ZDVhZDdmOTM0YjA0YmQ0ZmYgbGVnYWN5LXRydW5rCisxMTUzMCA5OTYyODMzZDQ5ZmRkYjkzMjYyMTk3YTE1YzBlZDhkM2VjNjViM2RlIGxlZ2FjeS10cnVuaworMTE1MzEgMTgyYzljYmRmMDUzZGUzYTgzMmQwODA1MTRiNDU5YTI4ZTU2YzExNiBsZWdhY3ktdHJ1bmsKKzExNTMyIDExYjZmMGM5ZWFjOTk4Y2E4ZjZjODNjZWQzZDQwZTdiNWNkNTVkYTAgbGVnYWN5LXRydW5rCisxMTUzMyAxODY5N2Y1OWZkNDhiNzdiZDU0NmVhOTFmOTZkZmI0MzBlNzllZjlmIGxlZ2FjeS10cnVuaworMTE1MzQgNjJiOTRjYzk4ZGU0NTllN2E4MDM5NzFkMTQ3NDJkYTVkNjE4NTFiYSBsZWdhY3ktdHJ1bmsKKzExNTM1IDI0ZDBhNTdhZTIzNGRjODM1NzY4M2UxZTFjNDMxZTU0Yjg5NWRkMDggbGVnYWN5LXRydW5rCisxMTUzNiBmMGM4YjhhMzNmMDhlYWUwOGQzZmYyOWQxNWUwZTIwODdkOGU5N2U4IGxlZ2FjeS10cnVuaworMTE1MzcgZWJjMGMxMmRiZDc4ZDYwZDhmZTA4ZDg5Mjk2YjA5YjJjMTM5NTViYiBsZWdhY3ktdHJ1bmsKKzExNTM4IDhkMThkNDk2YWY4NzA5ZmMzYWFiMGNlZTk2MmZkNmMwMTdlMmJiZTMgbGVnYWN5LXRydW5rCisxMTUzOSA5ZmQ5MTVkMjNjZmEwM2MwMGQzZTgwODJkMjJjMTVmMzQzYjYzYTk2IGxlZ2FjeS10cnVuaworMTE1NDAgZDhlZGUwMjBkZmViMjk0Yjc1YWU3ZGM2OTVhYmE5MjM3MGMyYWIzMCBsZWdhY3ktdHJ1bmsKKzExNTQxIGQ0MzdiNjY4M2UyNDE3NmVhYjc1YjNkYTA3ZGI4NTk5ZDJiNDM0ZjQgbGVnYWN5LXRydW5rCisxMTU0MiBhZDZiYzJjNWQzNTNlZWRjYjAyMzZlZGI2N2VjYWM5N2Q0ZWJjMzIxIGxlZ2FjeS10cnVuaworMTE1NDMgOTFkMDg2MDc0NmZjMjczM2JkMjBhMTQ4NmM5MDEzMDZmNDY2ZGMzMyBsZWdhY3ktdHJ1bmsKKzExNTQ0IDZkMmViNThmMDQxODY4MDg2ZDk4NzFjZDFjNGFmN2Q4ODczZjM2MDMgbGVnYWN5LXRydW5rCisxMTU0NSAxMThmOWY3M2FiZTkxOWU5MmViOWIzZGU2MmZmODU0N2MyMjQ5ZGIyIGxlZ2FjeS10cnVuaworMTE1NDYgY2JmNzJiMjIxMGFlYTllZTc4MzI2Mjg3OTliZDdkNDM3YTgyZjljNCBsZWdhY3ktdHJ1bmsKKzExNTQ3IGYzZWJkYjIyNzRlNGE4MjlmN2Y3Y2QyZmIwMTdkYTM1ZjgwMTAwYjYgbGVnYWN5LXRydW5rCisxMTU0OCA4MzljNjYyMmQxNWEwNzIxMGM3NmQ1OTdjNTNjMmFkMjQzMTZmZTEwIGxlZ2FjeS10cnVuaworMTE1NDkgOTA1YmZhYzBmYTMyZTA1Njk1N2RmYjdkMjBkYWY5YTUyNTNjY2JmNCBsZWdhY3ktdHJ1bmsKKzExNTUwIDE2ZjgzOTdkOGYwNDhkZTY0YTFiOGQwZTIwYWE5MWRiNDgwODY1MDUgbGVnYWN5LXRydW5rCisxMTU1MSBkYWJiMmI2YTNhODFlYjBmZThjNDRlNDU2MTdkZjI2MTdmMjY0MDViIGxlZ2FjeS10cnVuaworMTE1NTIgNWJjNjRlZmM2NWUwMjk4NDFjMzM1ZjcyNjc4ZDU1NmY2YTYxNDczOSBsZWdhY3ktdHJ1bmsKKzExNTUzIDA1MTgxZTEwNDQyMGFjMDNmNTA2MTc5MmVlNDgyZmMxZGNkZmU2MGMgbGVnYWN5LXRydW5rCisxMTU1NCAwMjZlMTIzNjI0M2U2Y2JhZTFjYjdiY2ZiMDU0YTI1Njg5YWEyY2Y1IGxlZ2FjeS10cnVuaworMTE1NTUgMTllYzUzNDY5NGFkZGViODRkZmVlMjE0ZGJiNWRkNmZiZDc5ZGI4YiBsZWdhY3ktdHJ1bmsKKzExNTU2IDg2OTUyYmRhYmIyMWUxMWZlYzkxYzMxYzE1Yzk0NWM2MTgyMmFlYTcgbGVnYWN5LXRydW5rCisxMTU1NyA1YzFlMWZiMzcyZGUwNmVlMjgxYTZjZjEwZmUyNGUzYjRkMjAzMDI3IGxlZ2FjeS10cnVuaworMTE1NTggMDg3NmI2YzI0MDA3ZDg2NjZkZWEyNzc2ZGIyNjdiMGUzNmE2ODM3OCBsZWdhY3ktdHJ1bmsKKzExNTU5IDAwODhhZDlkOTZjMzg2YWM0MmJjNTQ2MGZlMmNiYTAwOGI3ZWIwZTMgbGVnYWN5LXRydW5rCisxMTU2MCA1NDAxYzcxNDI4ZWVmYjBlNjJhNjgxNzM3Y2M3YTNkYTk3NDIxNTA5IGxlZ2FjeS10cnVuaworMTE1NjEgMDc4MWE0OTk5MDUxNWMxNjI5ODZmZGJjMjhmNzk2NThiZDM3ZGFiNyBsZWdhY3ktdHJ1bmsKKzExNTYyIDI1NzA2M2FhZTAwMGYzZjU5ODdjNjI2YWVjNGJhYzhjNGNiNTdjYjYgbGVnYWN5LXRydW5rCisxMTU2MyAzNDMzYTllYmRmNDM5ZTZkMThjOWYyMmZiYTJmZWU3OTU5ZGU5ZTk3IGxlZ2FjeS10cnVuaworMTE1NjQgYTVlM2M2OTVkMmZiZTM3N2ZlZjRhMjhhZGZhNDM1MGU1MTA4YTZjYSBsZWdhY3ktdHJ1bmsKKzExNTY1IGIyNWQ1YTYyZTM1NzYzZDU4ODNlOTBkMWNiOWUzYjE4MTI0OTAwM2UgbGVnYWN5LXRydW5rCisxMTU2NiBlYmM4Y2IwNzcwM2Y4OWQ0NjUyZDY5NDY3YjU4NDRlN2U0ZDc4ZmQxIGxlZ2FjeS10cnVuaworMTE1NjcgYzJjYmU5YWNmYzhlNTg4MzBjZDlhZjdiMjM5MzM0Yzc5ZGRlNTcyYiBsZWdhY3ktdHJ1bmsKKzExNTY4IDAxODhkNjI1OTY5YWIzMTNmZDZjMmI0M2RhODIyZjNjNjMwYzkzNWIgbGVnYWN5LXRydW5rCisxMTU2OSA5Y2VhNmI2MTc4MzhlNTQxMmY1M2FhNzA2NWMyYWJjMTMzOTE1ZjdlIGxlZ2FjeS10cnVuaworMTE1NzAgNjE4ZmI4MzBiZTY1OGNmYjQ0Mzc5OWQ4ZDExZGFlNDgwMjA5ZTk1OSBsZWdhY3ktdHJ1bmsKKzExNTcxIGE5ODJiMTdlOTM4ZjUyOWRmYTA0YzM0ZDgxNjVmMzQ2NGQxODJjMmEgbGVnYWN5LXRydW5rCisxMTU3MiA4NTBhY2YyOTllYTIzZGJiMWNhZDFlZmIxMDY5MTNhMzU0MGZiZDdlIGxlZ2FjeS10cnVuaworMTE1NzMgYzA2MjcyMzg0ZjExOGFmZTBkYzYyOTFlYWQwM2NmYzY2YTgzZDNiNiBsZWdhY3ktdHJ1bmsKKzExNTc0IGM0NDdkMWFkNzg1MTdkMzU4ZmZmN2JkNzQwYjkxNDI5M2IxNTliYzcgbGVnYWN5LXRydW5rCisxMTU3NSAxOGY4MWZhZjRiZDk3YjQxZjE3YWI4ZmYwNTFhODY3OGYzNGE2YmJjIGxlZ2FjeS10cnVuaworMTE1NzYgNGQyY2IyMTJjOGQxNTg1NDkzNzc1Yjg3MWY4YTNiYzcyYTk2MDgzZiBsZWdhY3ktdHJ1bmsKKzExNTc3IGU0OWI1ZmVkNzQ0YzRmZjc3MWM5OGI1ZWI3MmQ0OTc4ZGU1YWJhYjMgbGVnYWN5LXRydW5rCisxMTU3OCBlZGFjODYwYWQ3MTBiNWFhMjkyMTBlZTRjOWQ3MjQwZjA0ODBhNWNkIGxlZ2FjeS10cnVuaworMTE1NzkgNmI4NTQ5MzA1MmU4YTM2ZjgyZTU4MjQ1YzM4MmNiZmNmNjQ5MDQ0MSBsZWdhY3ktdHJ1bmsKKzExNTgwIGJjNDFlODZjOTM4Y2Y0YjllNzBhZTVhNDJjMDQyZGU1NzgyNDFhY2MgbGVnYWN5LXRydW5rCisxMTU4MSAzZjRiZTdlMjhkNWNlNzg1MTE0Y2RmMmI3ZDU5OTkwY2ZiNzQxZjAxIGxlZ2FjeS10cnVuaworMTE1ODIgZTk0M2Y5YzA5OTAxYWQ4MThiZTIzY2FiZWM4YzVkNzcxNmIwODM3NiBsZWdhY3ktdHJ1bmsKKzExNTgzIGQ0ZWIzNWM2ZTZlZmJlNzBhZmY1NGYyNjE1OTQxNDQ1MjVjZWVkZmQgbGVnYWN5LXRydW5rCisxMTU4NCBhY2ZiM2E2NDhkY2FhYmZhNjMyMmJhYTBhNzZlZmI5NjNkYjBjMTg4IGxlZ2FjeS10cnVuaworMTE1ODUgN2U2YzRmNTdhZjY5OTIwYTU4ZDRhY2NmZWYzYjllODRmYWUyZmFiMiBsZWdhY3ktdHJ1bmsKKzExNTg2IGU3MWY4MzkyMjM5MjA0YTQ1ZDUzOGNkNTcyNjdhODQzMjg1NmI4NjcgbGVnYWN5LXRydW5rCisxMTU4NyAyNmY1YmZkNzE1YTQ2NTZlODlhY2U3ZmJlN2UyNGQxMDFhZmQyNzZmIGxlZ2FjeS10cnVuaworMTE1ODggNTU2OTI3ZDg2OGQ4ZDg4ODJiNjUyM2NkNjllZmVjNTI4M2ZiNDcwNyBsZWdhY3ktdHJ1bmsKKzExNTg5IDJlMDdmMWIyOThlMTZkYjgxZjM1OWQxNWYzY2QwNzc3NWNkNzE4ZmQgbGVnYWN5LXRydW5rCisxMTU5MCA0NzFjNmMyMjE4Nzk5ZWUyNzAwYWQ2ZDIxZGIwNmZlYTM3MDAxZTEzIGxlZ2FjeS10cnVuaworMTE1OTEgMDMxMGVlMTY0OTdhODdkNzE5M2NjMTcxMDg5MTJkNmNiNWY0Y2NiZCBsZWdhY3ktdHJ1bmsKKzExNTkyIDYzN2ZlYzhhN2RkM2RhZmYxN2E3ZjZiNDc2MDAyYWM3ZDhlYWNhMjYgbGVnYWN5LXRydW5rCisxMTU5MyAyMDg4ZjgwMjUzZGIwNGYyMTRiNWYyYjA1ODNhZmE1YTc0YjQwNWZhIGxlZ2FjeS10cnVuaworMTE1OTQgNDI3ODU2MWJkNWU4N2Y1OWExMzg3NzdmZjQ2NDk1ZGU3YTY1ZDViNSBsZWdhY3ktdHJ1bmsKKzExNTk1IGI4MjZlNTBlOTU3M2Y0ZTA5NDBjODJjYmY2NGExMWJiYjY5ZDMyMzcgbGVnYWN5LXRydW5rCisxMTU5NiA3MjhiYmViOWU0Zjk2NTQ3MmY4OTJiMzBlM2ZmYTYwMTY1ODY2NjFkIGxlZ2FjeS10cnVuaworMTE1OTcgNjg3YjY2ZTY1M2Q2MTVhMDhmYzBhMGU5MjJjNjViMDQwMzdhODBkYiBsZWdhY3ktdHJ1bmsKKzExNTk4IDMxMzUzMTZjZDY3MGIwOGZhOGNhYTE0NDkzZTdiY2UzODFkNGNiMTggbGVnYWN5LXRydW5rCisxMTU5OSBmMjM5NmQ0MzA1NmI2YzZkMWNkOTc2NWEzNWM5NmVjMDdjNmY2YTVhIGxlZ2FjeS10cnVuaworMTE2MDAgNzdhOWI4NWY3NjJhNzY0OGE3OGMyNzNlZmZmZWJlOGY5MjE5NjAyNiBsZWdhY3ktdHJ1bmsKKzExNjAxIDJiYjdiNjYwZjAwN2JlZjc0MzljNjBhMTI5NzA0ODZhM2M2ODUwNjIgbGVnYWN5LXRydW5rCisxMTYwMiA5ZWIyZDZmNmZkM2Y0YzcxY2E2N2RhYWUxNzcwZGI5ODQ5ZWQwMzI0IGxlZ2FjeS10cnVuaworMTE2MDMgY2U1MmU5MjJmYmIyNmViYWI1MzliOTZmMzUyMDk0ZTkxYTY1MDQyOSBsZWdhY3ktdHJ1bmsKKzExNjA0IDI0Y2FkNGUwZGI4ZGQzOWMzMjU0OTBjNTVlMzcyMmU3MjE1Y2MwYTYgbGVnYWN5LXRydW5rCisxMTYwNSBiNTI4NjRjNWU5Yzk0MjNhNTNkMGIyZWNkMWU5MmZlNGI3ZTc0NmViIGxlZ2FjeS10cnVuaworMTE2MDYgOWUxNzQ1Njc5ZTcxNTAwM2IyY2NiYmMwOWFiNDczMmU5ZmU4ZTU5OCBsZWdhY3ktdHJ1bmsKKzExNjA3IDA0MjBmNTQzNGY0NDkzMmFhNjY3ZGZiYWM5ZmJlNDk3MzMxOGVjMmUgbGVnYWN5LXRydW5rCisxMTYwOCBiMDg0NWQwOWZlZGY2ZjgxNjUyMDg0NDQ3NTI0NGQ0Zjc3ZWRmOWIyIGxlZ2FjeS10cnVuaworMTE2MDkgODM2NjBjZGEzZTNmMzk3MDA1Zjg1Njk3MWFmYTJlNmI1OTQ1ODFkMCBsZWdhY3ktdHJ1bmsKKzExNjEwIGRiYTcxMTYyNmI0MzI0MWM1ZTgxZWMwYjM0YjkzZmY1YzQ1ZTc2ZWUgbGVnYWN5LXRydW5rCisxMTYxMSBkMjM3YzgwOGEwMWUxMTMxOGQyNTE2ZGQwOTIyODBhNTY0ZDMwYWFhIGxlZ2FjeS10cnVuaworMTE2MTIgMjkzODBhNGZhMjMwODkwMzE2M2FiNWZkMWNkYTg1Njk2ZDY2OTMzMCBsZWdhY3ktdHJ1bmsKKzExNjEzIGRiMTU0N2ZkNDBlNDY3NWI3MjhlNWI2Y2ExOWFkZmVmZmM2Y2ZlZmYgbGVnYWN5LXRydW5rCisxMTYxNCA0Y2MxMDkwOGU2ZjQ1ZjAwZmU4Mjg3Mzg4YTcwMTVkZWQ5ZGEzMjZmIGxlZ2FjeS10cnVuaworMTE2MTUgMTIxMzY1NDJlMTU1NDliMWUzZmRhMjNiYTQ0YWEzZGE4Y2UyZDdhYSBsZWdhY3ktdHJ1bmsKKzExNjE2IDQ0ODY4NjJkNWNiZGQwZmMwNWRlZjdiMWY0NTIxOTlmNDY3ZThkODQgbGVnYWN5LXRydW5rCisxMTYxNyA1NWMxODExYmI4ZWZiYTI5YjUzMjIzZDcyZDA4ZDZjNTk1MmE4YzEyIGxlZ2FjeS10cnVuaworMTE2MTggZmRlZWYxNzdmNTM2YWQ5NmNhMmI4MGFlNTc5YjU1MWZiNDE3MzMyYyBsZWdhY3ktdHJ1bmsKKzExNjE5IDg2YjcxMjlkOGQwOGJkOTc3ZjAyMDM2NmJmMmEyYTliZWUyMjE4ZDUgbGVnYWN5LXRydW5rCisxMTYyMCAxN2QwYzUxZTA4ODcwMTkyNjEyYTdhNDI4NGM5MWM5NzQzN2ZiM2I1IGxlZ2FjeS10cnVuaworMTE2MjEgYjE2NjMzYjIyZTZhZTE3MGI4Yjc2Y2JjNzY0YmI1MThiMjdhMGNlOSBsZWdhY3ktdHJ1bmsKKzExNjIyIDZjZDkzMzIyYjgxMGI2ZjUzZmExNDY4ZmUwYmUxMDM2ODYwZTViMDIgbGVnYWN5LXRydW5rCisxMTYyMyAzZDMwZGQ1NDQ0NTYyMWQwNzRlZDFjNjIzMjZiY2Y0ZDlmYTc4ZWUxIGxlZ2FjeS10cnVuaworMTE2MjQgZjQxMjlkNTJkZmM1YWRmM2Y5NWM2OGMzZjdiYWFhNTJlMDcxZTQ0ZCBsZWdhY3ktdHJ1bmsKKzExNjI1IGJhNDAwNjVlMzk5ZjA0MDQxMzlkZWFmMGMzZWQ1Zjc3MTNmNzNiZjIgbGVnYWN5LXRydW5rCisxMTYyNiA5ZjEwMjNjODhmNTcwNjUzYjA4OTQ1NWFmNjIwNmRiOWRmZWNhNWIwIGxlZ2FjeS10cnVuaworMTE2MjcgYjBmYTJmYzEyZGZiMjhjZDg1MjgyYzFjYjk0ZDZmMmIwMGZmMDUwZSBsZWdhY3ktdHJ1bmsKKzExNjI4IDZjYmYwNTY5NjEyMGQwOWIxNTE2ZGZkNWVjN2JjMzNkZmE4YmM1NWIgbGVnYWN5LXRydW5rCisxMTYyOSBlYmIwMTA4NTg3NzFhYWM3ZDI5NDRmZDI0ZTkyNjI3NmI4Zjg3NzYwIGxlZ2FjeS10cnVuaworMTE2MzAgMDY2MGJlNmU2NzkxNGI5Y2YxYTZlM2E4ZjRlNzc0ZDYwYTFjNmFlZCBsZWdhY3ktdHJ1bmsKKzExNjMxIDg4YjIyMTA5MDA3YzFjYjkxOGQ1ZWNiMmUzNTgyZDVlMzFiYmYxYWEgbGVnYWN5LXRydW5rCisxMTYzMiA1YWY0YjEwMjE0NGFlNWQ5MDRhNDk5NWZkOTJlNGQ3Njk0N2RiOWZhIGxlZ2FjeS10cnVuaworMTE2MzMgZTFiNzEwZTMwYWNmNzNjNWI1OWE4ZGIxMGRlOTM0MmI4MDFmMzdlYyBsZWdhY3ktdHJ1bmsKKzExNjM0IDAzMjlkNDE5ZTUwNjE4MmU5YTgwOGVjZTFjMzA3ZWVmNzE3ZGU1MjAgbGVnYWN5LXRydW5rCisxMTYzNSBkZWViM2NlMjBhY2YxYTg1YjEwYzg2MDcwYWNiMTFiNjI5Y2MxZjdjIGxlZ2FjeS10cnVuaworMTE2MzYgZjVkMjY1ZDVlOWRjMDJhZGJmY2ExNWY3NmMwNjQwNzE0MjdjZjkzOSBsZWdhY3ktdHJ1bmsKKzExNjM3IDhlM2I2ZDZhZmU0Y2MxYjU1MWMzOGJmZGU5ODM5Y2YyOTNkMTU1NzYgbGVnYWN5LXRydW5rCisxMTYzOCA4ODFiODYzOThjMjA0M2Y1YTIzMzZlNmRhN2MzYWNiMDc1YTU1ZjdlIGxlZ2FjeS10cnVuaworMTE2MzkgOThkYzY3NWQwOTEzYjZiMzNiYjg4MGZiMTg1OTM3ODc5MWVhYTY4MCBsZWdhY3ktdHJ1bmsKKzExNjQwIDdmYWJiYmI3YWQ5YTdhMWQ0Nzg3N2FkZTY5MDljMWRhMmUzNDI3YjIgbGVnYWN5LXRydW5rCisxMTY0MSA1MjA1ODNiZGYwYjAyOTBjZTk4YTI1MjlmMDhhYjBjZDk1NTJiNWFhIGxlZ2FjeS10cnVuaworMTE2NDIgZTU3ODQzOWI5ODFmODU2MTQ0YjQzMjM0YTJjMGU1OWU0YWJhMzg0MSBsZWdhY3ktdHJ1bmsKKzExNjQzIGM0NjAyMjM2NDA5ZThiOWUwNDk4NjEwMTAwZWMzMmMzYWZiNzUwZmMgbGVnYWN5LXRydW5rCisxMTY0NCA2ZWNiMjQ4ZTY3ZmYyYzBhNTQ3ZDEwZGQ4MmQ4NmZlZDk2MTFkMTdmIGxlZ2FjeS10cnVuaworMTE2NDUgZTYwMDU1MjE2YjhmOWZjOTAzZDk1OTg1ZjRiODA5YTcxNGIwYjZkNyBsZWdhY3ktdHJ1bmsKKzExNjQ2IDFjMjJjYmZiNGExZTIwNmE3Y2IwMTE5OWE1YmFjYWRhMjlhNjllZjggbGVnYWN5LXRydW5rCisxMTY0NyA0YWY4N2NlZDlmM2FhYjZkOWZkYzM4YWRkNjQzNDE0Y2YzZjI4OWM0IGxlZ2FjeS10cnVuaworMTE2NDggNGZiNGIwMDc1NWI1ZTA2ZDc3ZThiMDI2M2VmYzM0MGQyY2EyZWVlNyBsZWdhY3ktdHJ1bmsKKzExNjQ5IGEzMDc2NTZjNzc4ODk3NmM0NDRmZDFiNTBjNzVkYTQyYWY0YmI5MDAgbGVnYWN5LXRydW5rCisxMTY1MCA0NjgzMGU1YTAzNTFmYWQwZDQxMzdkZWEzZTQ1NWM2Mjg5YzE2N2RkIGxlZ2FjeS10cnVuaworMTE2NTEgMWU4ZjMxMDc0NTQ3NTEwMjcxN2EzNWVlMzljNjIyM2Y2ZjBiYTIwZSBsZWdhY3ktdHJ1bmsKKzExNjUyIDM1MjliYjRjYWVmZDZlMGE1ZTVkYjFjZjdjMWI2YjNjNGQ2Nzc3YzQgbGVnYWN5LXRydW5rCisxMTY1MyBkYWYxZDYxYjk2MTFkN2EyNzMxMjk3MDI0ZGNiYmUyNzg0MjY1Yzg2IGxlZ2FjeS10cnVuaworMTE2NTQgOWY3MjkxZjU1MDI2ZDRkNTVjNDI1YjkzZDExZGIyM2IwZWZmMzgwMCBsZWdhY3ktdHJ1bmsKKzExNjU1IGIyNjMwYTI5ZmVmZGI4YjdmNDVkOGM5ZTkwNDU1M2Q0Y2E1NzY3MjAgbGVnYWN5LXRydW5rCisxMTY1NiBmMmI5OGNiYzUwMzAxODhhYTJlNDVkYWQ4ZThmYTlkN2VlOWI4NmRhIGxlZ2FjeS10cnVuaworMTE2NTcgZjBhOTJjMGExMTVlY2ZjZGQ1NTVmMGYxOWJjMzk2NzM4ZWFlMTkwNyBsZWdhY3ktdHJ1bmsKKzExNjU4IDFlNDNkZjdkOGJlM2ZmZTU3ZTA3MzhiMzBkMTM4MTgyOGEwMGM4MmUgbGVnYWN5LXRydW5rCisxMTY1OSBlMmRhYTc4M2JkNDcyOGVhMGU4MzM4NjIwOTY1ZjMzMGNmZGIwYTIzIGxlZ2FjeS10cnVuaworMTE2NjAgMGEwODVkNzMxYzFjNzlhOGYzMjg1Njk0MGNjNTJmZmVjYjE0YzI4YyBsZWdhY3ktdHJ1bmsKKzExNjYxIGQwODY0MTRhZGU2ZWM0OWU5MzZhMzljMjlmNTAzZjFmMGNkODAxYWMgbGVnYWN5LXRydW5rCisxMTY2MiBkM2VmNGQxMGZiOTU0YzhlODUxMzM0MjUwZmFjNGNiMzViOWNiNDJkIGxlZ2FjeS10cnVuaworMTE2NjMgNmE1NTlkYzc4YzkxM2Y4ZDY2OTNlNzU0NWIwOTZlMjYwM2FhNjIzZCBsZWdhY3ktdHJ1bmsKKzExNjY0IGIwYmEzMTk2NzcxOTU4MjNkODUwZmQ3MDQwOTZiYzc2YzIzMWQ2YjAgbGVnYWN5LXRydW5rCisxMTY2NSA3NWE4MDQ3ZGZjMTEwM2FmYjAxZDdhY2NlZTUzMmQwOGU4MjBjNTUwIGxlZ2FjeS10cnVuaworMTE2NjYgNmJlMzQzZGEyOTE0NGEzOTIwODI3YjA3OTZiOTJmN2VhZTZhYTk2OCBsZWdhY3ktdHJ1bmsKKzExNjY3IGMwMGIyNzMwODViZWQ3MGFiYmEwNzI1Y2JiYmYzZmM2MjEyZjU0NTQgbGVnYWN5LXRydW5rCisxMTY2OCAzY2U1MTFiYTQyNDIyNjEzMjEwNzQyMGI3ZjA3MmVmYTdkOWU2MjAxIGxlZ2FjeS10cnVuaworMTE2NjkgOWZkMmJiZDQ0NTRlMzY3OGIxY2Q2ZjExMDU4MGQ5YThjODJhYzJmMiBsZWdhY3ktdHJ1bmsKKzExNjcwIDMyYjE5NDkxZTcwYjVhNzlkNTU4OTlmOTE2MGE2ZjY4N2Y5ZDE3MWIgbGVnYWN5LXRydW5rCisxMTY3MSA5YTg4ZmUyMDRkOTVjZDg1NjdhY2M5OTI4MjM4NGIxMDMwY2RmYTBiIGxlZ2FjeS10cnVuaworMTE2NzIgNjhhYWQ4ZWNmZDcwZWNhYWE5NDE1ZjRjMTZkOTBjMmI5YjRiNDNkNSBsZWdhY3ktdHJ1bmsKKzExNjczIDZmYzkyMGM5MDY0MDhjYzJlNjc1OTE5OTFjYzBkZTMwNGE0ODNhNzggbGVnYWN5LXRydW5rCisxMTY3NCA5NThlMWZhYTM4YTkxMDRmZDhiODg2NTMxNzk4NGY1MzU2NTkxMTA0IGxlZ2FjeS10cnVuaworMTE2NzUgMDYyNWI5OTU4YjIzYmY2MmFmMjg4MTg1MzIwZWUwZjMzZDU2NGEyOCBsZWdhY3ktdHJ1bmsKKzExNjc2IDUzZWQ2YmNkMDY0MWRmMzdlYjJmOGVlOGU2ZjM1MjcwNzU4YTMyNGEgbGVnYWN5LXRydW5rCisxMTY3NyAyNTNjOTkzZWY5MzZhZDVhMWY5M2M3ODU0MmUxMzFhNDY3MTZkNGIwIGxlZ2FjeS10cnVuaworMTE2NzggZmE4OTNkNTU3OTRlY2Q5ODY2Mzg0ODgxMDAyMzllOGQzMWM4Njk3NSBsZWdhY3ktdHJ1bmsKKzExNjc5IGU3NWUyMjhmODM5NWU3ZWM1MGY2ZDA1NmMxNWZmYWI4MTAxYWM5ZTcgbGVnYWN5LXRydW5rCisxMTY4MCA4ZTk1MmJkZDBmYTM3MDQ3NDhiMDg2NjJkMWIyOGRhZjBiNWVlYzQ0IGxlZ2FjeS10cnVuaworMTE2ODEgZjI2NGU1N2Q2NTdkZDM4MDYwMzU2MWQzZDFkZDgwMDEwZjJjOWUyMiBsZWdhY3ktdHJ1bmsKKzExNjgyIGE4NmE3MWJlYmQ2NDA3YTJjYjhiN2M5MzkyN2EyYTAzNDczNWUwZTUgbGVnYWN5LXRydW5rCisxMTY4MyBhYTczZGVlMjMwOTMwNzU3NzZlNGViM2RkYzhhNjM0OTUyOGI3ZWU5IGxlZ2FjeS10cnVuaworMTE2ODQgZTIxZDA3OThjMDJhYWFkZTIzZTIxZDU0NGMzMDliNjVkODg5MGQ1MiBsZWdhY3ktdHJ1bmsKKzExNjg1IGExNjcyZTc3NWYzMzFlY2MzNDY1NmI4NWNkOWRhYTNkZjY0YmEwYTcgbGVnYWN5LXRydW5rCisxMTY4NiA1ZmU0ZDU5NGEwZjIxOTI0NmJhZjI4ODU5YmEzMmM5YmU0NzA2ZjBiIGxlZ2FjeS10cnVuaworMTE2ODcgM2UwYzg3YmRiNTg4OTY5NDg2NWI0N2RhZDhiMWUxZTEzMGI2ZjBkZSBsZWdhY3ktdHJ1bmsKKzExNjg4IDRmZThhNzY3MGMwZDJhMzA4NzgyMjBiNDZjODkxYmFkNmNlNzU1YWQgbGVnYWN5LXRydW5rCisxMTY4OSBhYzZjMjlkMWYxMGM5YzJmOTAzZTA2NGE2YzUwZjFjMmJkM2E3OTU5IGxlZ2FjeS10cnVuaworMTE2OTAgMDJkOGY3MjE0MDlhYmY0ZmFiODQxMTUzYWMzOGM0ZjhiZWFlNTA4NyBsZWdhY3ktdHJ1bmsKKzExNjkxIDRjMjA0NTYxNTllYmRiYjI4MTI2N2Y0NGZjY2JmZGU4MmQ0N2RiMzIgbGVnYWN5LXRydW5rCisxMTY5MiAxOTVlNzQ4Y2Y2OTZhNjk2ZjlmZGFkNmU3ZDhiMjZhMjZjMjA4ZmZjIGxlZ2FjeS10cnVuaworMTE2OTMgMzM5ODQ4NDEyMTFkNWFjMTYwMjQ3MmNhNzE3YzBkNTMzZDAxMjg4NCBsZWdhY3ktdHJ1bmsKKzExNjk0IDQ3Y2NkYjdmYjYyM2FlOWFkZmJkMjgxNzRkNWQzNDQzZmY4Njg2ZDAgbGVnYWN5LXRydW5rCisxMTY5NSA1OGVjZWQ1MzA5YTA2Yjc3ZGVhNWMwMjY2ZmQ1MmYxMTg1YjhmNWZiIGxlZ2FjeS10cnVuaworMTE2OTYgYjI0MDQ2NzIwZDU2MDQ1ZTQ5MTMyM2M5NDY3NDAxZTgzNzE3OWIwZSBsZWdhY3ktdHJ1bmsKKzExNjk3IGQ1NzhjZDY0Nzk2ZDEyNjU4NWZhMGY5NTU5Zjk2YTU4NmExZGJkM2UgbGVnYWN5LXRydW5rCisxMTY5OCBlYjgwM2UxOTE4ODdlNmVkMjBkNDc0MGJiZGE5MDRhNTk5Njg1N2I3IGxlZ2FjeS10cnVuaworMTE2OTkgMTRhZDAyZDA2ZTMyZDg4NDI2MjFhMDEwMTBkMThlNjIwNjY2ZGNlOCBsZWdhY3ktdHJ1bmsKKzExNzAwIDA3ZGFlNmZkYWU3OTQxM2RmOTJiZjMyMzBmOTNlYzE3NzY5MGY0MzEgbGVnYWN5LXRydW5rCisxMTcwMSA4ODUwNTI2OWI0MDM3ZGVlYTI4M2Q3YjZjYzNmZjczNjU5YmVhZmEwIGxlZ2FjeS10cnVuaworMTE3MDIgMDg1OGYxMWM4OGQ3MjU4YzE2MzM5ZjE1YmNiOWE1YmIwZDRiNmRhZSBsZWdhY3ktdHJ1bmsKKzExNzAzIGMxZGMxOWY5YWQ2MDhlNmI0YjFhOGRhNjMxNzE4ZjRhMjE5ZTY1YjQgbGVnYWN5LXRydW5rCisxMTcwNCA2NzA5NjdiZTZkYjNjZWIzMGRmMjcxYWM4NDEyN2ZiMTYxYWZkYzZiIGxlZ2FjeS10cnVuaworMTE3MDUgODE0OGQ0NGY5OTAzZGUyZmQ4ZDIyYWU5YWMyYjdjZGMwYWNiNzYyZSBsZWdhY3ktdHJ1bmsKKzExNzA2IGQzYWYzMTBmMjMwY2IxNTZjOTYyYjgxOGRmMjg0YjVjNjQzYzYxZmQgbGVnYWN5LXRydW5rCisxMTcwNyA3MGU0OWY3MTU5NTcyZjEzNzk2YTljZDM1YjA5NjllODI2ZjZhYzc3IGxlZ2FjeS10cnVuaworMTE3MDggZjE3MmQ0NzRjNWE5MDRhOGQ1MzFiOGFkMDMxNTYyYmU0MDcyY2UyZiBsZWdhY3ktdHJ1bmsKKzExNzA5IGJlM2Q4NGZmMjlmOWE5NTNhZDA4Zjk3YTFkM2EwYjc2MjBhMzg2OWMgbGVnYWN5LXRydW5rCisxMTcxMCA4OWQ5MTZkZjQ3OWIxNWIxMWFjNjIzYWM3NGMzOTViZDYxNTRjMzlkIGxlZ2FjeS10cnVuaworMTE3MTEgYzI1OWMzYzRkMGNjZjliYzM5ZTYwOTlmYWNiNmRiNjk5YmM2NjcyNSBsZWdhY3ktdHJ1bmsKKzExNzEyIDE5OTVjZGJlMzM4NDZlNDc3MDI0ZTY5Njc5OTdjYWEzNjM0NjZiM2YgbGVnYWN5LXRydW5rCisxMTcxMyA5MzY5OTE3OWE1MGYyZjRhYzkyZWZmYTRkN2U1MzJjYmI2N2FjMzRjIGxlZ2FjeS10cnVuaworMTE3MTQgNDRmZjFhYzUyOTViMzdkNmQ1ZGQ2MmJjMWFhNzMwMzRkNWM4ZWIyNyBsZWdhY3ktdHJ1bmsKKzExNzE1IGE0ZTgyMzMxNTY5OTAyMTgzYzZhZGY0ZmM4MjEzOWM3Y2YwMTBmNWQgbGVnYWN5LXRydW5rCisxMTcxNiAyOTk5ZjFkOTA0Mjk5NjI4OWE2MGUyNWE0NWM5MGM2NGE4MDAwMzMyIGxlZ2FjeS10cnVuaworMTE3MTcgNTYyMWNmOWIwOWQ2MzIwYjM2ZjA1MjBlYzQzOTRmZmM0NThlN2NlYSBsZWdhY3ktdHJ1bmsKKzExNzE4IDNjOWZlYzU3Yjg1OGE2NGYwNzllZTU4NjJjY2M3NTZhN2EyNTY2MWUgbGVnYWN5LXRydW5rCisxMTcxOSA5ODQ4ZjQyMzQzYzk5OGY0YTkzZjE1YmE5ZjU5ZjQ2NGI2YWM0MGJmIGxlZ2FjeS10cnVuaworMTE3MjAgZGMxZDQ0NWYyMzcxODRkNWM2ZDEyMmI1ZWM2NzYzNmQ4ZDk2MzY3YyBsZWdhY3ktdHJ1bmsKKzExNzIxIDczZGYyNGY2YmNjZjMzYWRmNzQ4NDdjMDUzZmU1ZmVkYzJhNWRjNjggbGVnYWN5LXRydW5rCisxMTcyMiBjZThmM2NlZjZhZWQyYmZmNWM0NDFmZjQ1OTI4ODI5OTdkMjMyZmUyIGxlZ2FjeS10cnVuaworMTE3MjMgMjVkYTA5YjQyN2I0NzVmNDQ2NTQ2ZjFkMTAxZWQ5M2U5NzQ1YjdhZiBsZWdhY3ktdHJ1bmsKKzExNzI0IDc5NDAwZDA3OGYxYjAzZmM1ZjkwYTY1YjdhMzZjNGRlOTBjYTU5ZTQgbGVnYWN5LXRydW5rCisxMTcyNSBhMDNjNmZkODFkNGQ2ZDFhYjM0OWRlMzFkZWFlYTBhOGYxNzQ1NzI4IGxlZ2FjeS10cnVuaworMTE3MjYgMmUzNzEyZTg0NzgxZmIxMjQ2NjUxZjU1Y2ZkZjA1OTlhNmViYTFlMCBsZWdhY3ktdHJ1bmsKKzExNzI3IDM4YzA3YmE0YjhlNDExZjg2Y2MyZjRjYzZmMDE5ZjAyNDBkOTRhYjIgbGVnYWN5LXRydW5rCisxMTcyOCAwOGI4ZGE2ZDRjYTZhMDcyOTBlY2JhYmQxYmU5M2NlNWFmNWYwOTNlIGxlZ2FjeS10cnVuaworMTE3MjkgNGJmZDI5ZDUzYjk1MGMxN2E3YTJhNjgxNjA3ZTE4MTc2MjE0MDNiNCBsZWdhY3ktdHJ1bmsKKzExNzMwIGIxOGQxZjkxZDY2NDgzMjQ5NjdmNDVhNGJjNGUzNzI1ZTNlZTYwZWMgbGVnYWN5LXRydW5rCisxMTczMSA0MWY4M2M3MmUwOTg0YzkxNzg5N2QxZTY4MDVjM2IwOWEzMzcxNTI2IGxlZ2FjeS10cnVuaworMTE3MzIgZDcyNTJhNWI3ZTFlN2FkNWZhODI1ZmU2YTY5MmQxYjNkMDQyNWFhZCBsZWdhY3ktdHJ1bmsKKzExNzMzIDM5YzQxMjIwZjdlZDQ2ZjIzNjljNzFjNzBjZWY1ZDg1ZWI4YzQwMmMgbGVnYWN5LXRydW5rCisxMTczNCBkZDg0NDNiZDQ0NzQwYzdhOWY5MTJmY2JkZDNhZDY2ODI2MjUwMDg4IGxlZ2FjeS10cnVuaworMTE3MzUgNGM0Y2VjNTRiYTYzNGRlZjQxYjQ4YzUzNjU2NjFmOTdmYzM0NTAwMSBsZWdhY3ktdHJ1bmsKKzExNzM2IGI1NWRiMDhkZmY3YmYyNTkyN2EyZTc4Y2I1NTlmOGRjOWRjZWEzMDggbGVnYWN5LXRydW5rCisxMTczNyAyMjk0NzVkMjk1MWY3MDU5MWUxZjAxN2UwMmY3YTY1MmNhNmFiNjRkIGxlZ2FjeS10cnVuaworMTE3MzggZTIzZWMyNDAzMTU3MjQ3YjNkZDU5YjhlOWQyZjIxZjIwNGM4NmE3ZiBsZWdhY3ktdHJ1bmsKKzExNzM5IDcxMGRhMTBkZWU5ZGIzNGEwZTRkMTExODdhOGY5OTU5NTJmZTE5OWEgbGVnYWN5LXRydW5rCisxMTc0MCAwNDgwMDJmMjdjMWQ4YmNhNWE5M2MxZGFiZDkyNzY0NDAwZDY0YTE1IGxlZ2FjeS10cnVuaworMTE3NDEgMTU5ZjllNzQ2NzU0OTQ3MTA1ZTdiNzkxNDZiZDIzM2U3MjNjODZiOCBsZWdhY3ktdHJ1bmsKKzExNzQyIDhhODg1ZjNhNWY0NmFjZTU0NTZjNjRlNzA4YTMzNmQ3ZjRlNzU5YzAgbGVnYWN5LXRydW5rCisxMTc0MyAxYzRiYTBlMmY4ZTc0M2I2MTZiOWZkNzUwMmU3ZTY1M2IxNzZjMTBiIGxlZ2FjeS10cnVuaworMTE3NDQgYjQ4NzJiYzhkOWVmNzM4NjM0ZjBhMjY5YWJiOTJjZWRkMjU4YWIxMCBsZWdhY3ktdHJ1bmsKKzExNzQ1IGUxOTk1NGJhMWJjNDEzNzg4YjMzYjc1NmQ4YTFhMWQ2YjA3YjZmNTcgbGVnYWN5LXRydW5rCisxMTc0NiAwMjgzNzU5NDA3ZTE2MWRmMDE1MTkzODY1ZTIzZDYwOWZkNTI4YWYwIGxlZ2FjeS10cnVuaworMTE3NDcgY2E4NTg3ZDIxNWU2ZmVjYWUzOGE2MzJkNDdlZTM2ZDM1ODc2MmQ0NCBsZWdhY3ktdHJ1bmsKKzExNzQ4IDQzMDAzOGUxNjQzMzdhMzAwMTEyOTk2YmE3OWRhZDk5ZTFjYTg2NzQgbGVnYWN5LXRydW5rCisxMTc0OSA1OTBiZDliNDViZjYwZDE4NzliNDJiNjI1MjdmMWVkOTFhZDBhYTc1IGxlZ2FjeS10cnVuaworMTE3NTAgYmUxNDkzMzkxYzZkZDNiYzdiYWQzMTdlN2MwMGJiNDIxZjNmMDY2ZiBsZWdhY3ktdHJ1bmsKKzExNzUxIDlkMzkzYTBmNzI3Yzc1NDRhNGFkMWFiYTNmZTIyMWM5YThiOGZlMzggbGVnYWN5LXRydW5rCisxMTc1MiAwODA3OTlkMGNmMmIyYmQ5YTQ3NjBhZTUzNTc5YzcwOGFmNmIzYmE0IGxlZ2FjeS10cnVuaworMTE3NTMgOGQxNDkwNjI5MmM2NmNjMDA1ZjQ1NTVlMzFlOWM0MDZhYWQ3OTc0NCBsZWdhY3ktdHJ1bmsKKzExNzU0IDFlMzNhOGE1NmJjYTViN2M2MzA4N2Y1NjVlODZiYjMwYzUxNmM4ZDIgbGVnYWN5LXRydW5rCisxMTc1NSAyNTc3YzBjYzc0ODJhODg4NTRmMjFhNDAwNTQ3MTc3OTE2YzJmYjQ4IGxlZ2FjeS10cnVuaworMTE3NTYgNmI2YmQxNGQ3NTBiODFiODQ0ZmUyNzQ0MjNiNDZkOWY0NTcwNGNmNyBsZWdhY3ktdHJ1bmsKKzExNzU3IGE3M2NkN2Y5OWI5NWJkMTJkMGEwNzgxOWMxOGI0NGNjZmQ0NDFmNzkgbGVnYWN5LXRydW5rCisxMTc1OCBhY2Q4MWMzMjI3ZGViODk2ODk5MTc3ZTYwZDA2NTE5MGU3ZmI3MDg1IGxlZ2FjeS10cnVuaworMTE3NTkgOWQyYzEyZjI0MGU2MzYxMmVjYWE0Zjg3YzhkY2E0YmQ2ZTg5NDdiOCBsZWdhY3ktdHJ1bmsKKzExNzYwIDY1ZjA4Y2M1OTU1MzY0MDY0OTI0ZjliY2Q5NTNhZTRkNzVlYzljZDEgbGVnYWN5LXRydW5rCisxMTc2MSA4NmRlMWZhMGZiYjc2NzJjMDJjNTY5MmYzMDJkNjQ0ODBmZGZiNTRlIGxlZ2FjeS10cnVuaworMTE3NjIgYzExNmJiM2UyYWQxODhiMzEwMWQ0ZmFmYzRhZDQ5ZjJhNDE5MmE4YSBsZWdhY3ktdHJ1bmsKKzExNzYzIGEwZjMzMjVmZWRmMTkxZTdjNGVlYmJlNTVmNWI2Njk3MmI4ZDY4OWMgbGVnYWN5LXRydW5rCisxMTc2NCA1NTBhNDU2ZDhmNjE1ODc2YzgwZWUyYjk1M2IyYmRlNDJjOWVkMTQ0IGxlZ2FjeS10cnVuaworMTE3NjUgYWNlZTM1OTVlNjAzZWQyYjRiNDdmOTllZTQyYzEyOGNkMjM1ODMwZCBsZWdhY3ktdHJ1bmsKKzExNzY2IGZiYjQ1MDYwYmUwMzI0M2NkNTNjMTc4MWJiMmJlNTk4YjNmNWYxNTcgbGVnYWN5LXRydW5rCisxMTc2NyA3MjQ0MTExMzI0M2E4NWUwYWNhY2RlOTNmZDFmYTFhOTgzNmIxMTk0IGxlZ2FjeS10cnVuaworMTE3NjggNTBkOTg1MGNjOGMzYjE0YjM0MmQyYjAyOTBjZDk5YmM0MTY4ZGFmZiBsZWdhY3ktdHJ1bmsKKzExNzY5IDJjNmRkMGZhNGViOTg3YjZmZDk3NzQyNTczZWZhNWE4YzUyNGUzNjggbGVnYWN5LXRydW5rCisxMTc3MCA4ZmVkOGM4NWM2MWE5YTU3YTBlYzI3ZTAyNzc4ODEyNDUwOWEzMjRhIGxlZ2FjeS10cnVuaworMTE3NzEgODc5MTQ1NTQ4NWU1MmNjZGJkM2EwZjBlZjkxZGYzMjJmM2Y4MmFkZSBsZWdhY3ktdHJ1bmsKKzExNzcyIDJmODhkOGFhNzMxMDkzYTdlZGYyNDBjM2VjYjUxMjY3YTk0ZGNlN2MgbGVnYWN5LXRydW5rCisxMTc3MyBmMzdiZTBjODIyZGMyYWQ0MWFkZDBhZDQxZTE2NzhiNmU1N2UxNjIxIGxlZ2FjeS10cnVuaworMTE3NzQgMjg0YmY5NWRhYjgwYTFmODgwNGQxYzIxYzY1MDMzNmFhOTliMzM0YiBsZWdhY3ktdHJ1bmsKKzExNzc1IGMzOTIxOGE2OGRmMWYzNzZkOTE4NTFhOWQzODgzNjU3Y2E2ZWNmYTQgbGVnYWN5LXRydW5rCisxMTc3NiA1M2FiOGQwYjBkNjQ0ZTExZmQyMDkzOTBkZjRmNmZlNzkwYTRiN2Y0IGxlZ2FjeS10cnVuaworMTE3NzcgZmU3Y2JkMTMwODZjM2E0OTBlODNhYzUzOWMxNzEzNjUwY2RiOGIzNyBsZWdhY3ktdHJ1bmsKKzExNzc4IDgwOWRjYzFiYmMyMWRjZDM1M2Y4ODI3MTk0MjllZGQ3ZmNkYWJjYmEgbGVnYWN5LXRydW5rCisxMTc3OSA0YjljNGNlNTk5OWM5MmI3YjE1M2U0MDhiMDdjMDViMmU5N2Q0MGQyIGxlZ2FjeS10cnVuaworMTE3ODAgMGE2ZWQzODRhZjA2YTU3MjMwM2IxYTFmZTI3ZDEzNzIxMzc3MzRmOSBsZWdhY3ktdHJ1bmsKKzExNzgxIGZhYTMxYjFjMGI1NDA1NzI5YmEzZjAxN2MzYmFlMjk4MTQxZGQ0NzUgbGVnYWN5LXRydW5rCisxMTc4MiA1MTU2Y2Y4ZTQyNjkxYWU1ZmIxMWQyYWVmOGZmMmI0MzU0NGEyN2QxIGxlZ2FjeS10cnVuaworMTE3ODMgYmM1MTUwNjUyZWRjYWQ3MGU2ZDRkMDY2NzEzMWJlZTNmYmE0MmI3OCBsZWdhY3ktdHJ1bmsKKzExNzg0IGVjM2QyYjM3NTZkNzZkOTVhNDg4MWZiODU2YTJkNDQ4NDNhZThjZjkgbGVnYWN5LXRydW5rCisxMTc4NSBhNmNmZjljMjkwZTUyNjQ1YzEzMTEwYzc2ODMwZTYzNzc0ODczMTNlIGxlZ2FjeS10cnVuaworMTE3ODYgNWQzNDQ3MTBmY2MzZDZhMjM3NmRiNDZiYWFkYTk3NTMwOTZlZjU0MyBsZWdhY3ktdHJ1bmsKKzExNzg3IDIzNDBmNjE1ZGE4ZjQzOTcwNDZmZjZkMjdhMTNmMTZkMWYzNWUzOTggbGVnYWN5LXRydW5rCisxMTc4OCBiYzMxZDlmNmUwYTE0ZTM2MjMxNWIzZDI1NjljODkwNWUxYTM1MWFhIGxlZ2FjeS10cnVuaworMTE3ODkgMDJmMzUwNGIzOThkZjQ3NjZhNTA2NmE2ZTdhNjdkOWY3NGI3MWI2NiBsZWdhY3ktdHJ1bmsKKzExNzkwIDBhNjdkYjQ3ZTFkMGU0NmVkN2I4NjRiZTk4MTc4MTBhYjEyZjk4MDQgbGVnYWN5LXRydW5rCisxMTc5MSAwZGU2NjJjZWNhY2ZjYWFlOTg1MDExMTM1MDlmNDcxYjdmYWQ3NzkxIGxlZ2FjeS10cnVuaworMTE3OTIgYTFjYTA4NTE2OGZjODExNDBjYzExZGQ2N2ZlNzgzODZlZGU4MmY0YiBsZWdhY3ktdHJ1bmsKKzExNzkzIGQ2NGI0Y2M4MWJhNjJkMzM5ZmI1YzU2YWE4YmE0MGE4YzcyMjE1MWIgbGVnYWN5LXRydW5rCisxMTc5NCBkMjhiNDkxZjQ1NTU2YWEwNTM3ZDBlZWYwM2I2MmJhMTQ3YjdmYmI5IGxlZ2FjeS10cnVuaworMTE3OTUgYTIzOTcyNTVhNmQzM2Y1ZDI0ZDUyNWU0NmQ0OGJlZDFmYWQwMTMyOSBsZWdhY3ktdHJ1bmsKKzExNzk2IGQ2NDIwMDgzNGE2YjRhZjQ2YzkyYWU4MDBhOWQ3MTk3MjZjZTJlZjMgbGVnYWN5LXRydW5rCisxMTc5NyA2OTAzNDgyNDM4MDAxYzU4MzFkNzlkZWM0ZGM1MTI0ZGU5M2Q3N2NjIGxlZ2FjeS10cnVuaworMTE3OTggNDE0MTI4YTE1YmJkOWY0ZGU2ZmE2YjlkZWI0OGFjY2QzZjg1M2EzNiBsZWdhY3ktdHJ1bmsKKzExNzk5IDI0MWQwMTJlODJkY2U1ODgxOGMzMzAxODM4MDdjM2I2OTVjOGRjMzYgbGVnYWN5LXRydW5rCisxMTgwMCAzYjZjN2U3MGNhZmZmNmJkZmRmNmI3MGFhNTQ2OGI5MmE3ZTgyMWI0IGxlZ2FjeS10cnVuaworMTE4MDEgY2MzZTE0ODM3Mzc5OTYzZDVhOTg2ZTYzYmY2YzIwZDYxNDAzNTBhZCBsZWdhY3ktdHJ1bmsKKzExODAyIDA4M2VmYTA3NjM2NjEwZjg5ZDgzZGM0ODIzOWE5ODk2NTQwMzk2N2QgbGVnYWN5LXRydW5rCisxMTgwMyA3OTQzOWU0ZTk5NzY5NThhMGQ0Y2M4MzExNGZjYjRjZTQ1OTQ5ZDk4IGxlZ2FjeS10cnVuaworMTE4MDQgOTI4ZWE1YTQwOWU1MzUxZDQ2NDU2ZWJiZDNhOWJhN2E2YzI5YzA1MSBsZWdhY3ktdHJ1bmsKKzExODA1IDM0ZTQyMDJlZGUyMDFkN2Q5YzA0NGNkMzA3NGFjZWY3MWY0NDIwN2EgbGVnYWN5LXRydW5rCisxMTgwNiBiZDlkMzhkNjQzNjk0ZWM1MjM3YjU1OWI0YWRmMjdiYThkM2MyYTQxIGxlZ2FjeS10cnVuaworMTE4MDcgNWRiNjQ3ZmVkYmEwMzNjZWNlYTA0NDBhMjg3MmNjM2MzNjUwYjk0OCBsZWdhY3ktdHJ1bmsKKzExODA4IDQ4YzYxNWQ4NGRhNjZkYWI4NDI2MWQ0MTdjMDI0NzU1ZWFlYmMxODAgbGVnYWN5LXRydW5rCisxMTgwOSA1ZWE4ODM2ZDk2NzAwYjkyYWVlYWYxNmI2NzA2Y2QyNDUwYTg4OTVhIGxlZ2FjeS10cnVuaworMTE4MTAgNDY3ZGY2MWZmYmZhOTVmZWU2YzM5NzQwNTAxZDBhODNhODAyNWUyOSBsZWdhY3ktdHJ1bmsKKzExODExIDQxNmI3N2I4MTFjNWI4MzFiMzk1OWY3MjQ1MTdhMzc5ODkxMmI2NjQgbGVnYWN5LXRydW5rCisxMTgxMiA3ODQ4N2U3MDE2ODZkOTQxZDBiYzRiYTY2NjlhZTBiZmNjODc4NDZjIGxlZ2FjeS10cnVuaworMTE4MTMgZjMzYjM5NGU1ZDdmY2JjMzg1NDFlYjk1OGVmNDhkYWVhNTNhYmRlZiBsZWdhY3ktdHJ1bmsKKzExODE0IDAwM2I0MmM5ZjI0ZDIxMDgyN2ZkZmIwYjE5OGE5MDAzMTU4NjM3ZDEgbGVnYWN5LXRydW5rCisxMTgxNSA4YTI2ZTU1ZTE4YjgxMmRiYWVjNWYxMzhhYTdhNjRkZmIyZTY3MzNkIGxlZ2FjeS10cnVuaworMTE4MTYgODkxOGU0ZjU0ZWNhOGQxNjZhNDBhNDc5NzJhY2MyMTZkMTZkMWE4ZSBsZWdhY3ktdHJ1bmsKKzExODE3IDhlOWQ5NzlkZGY1NTBiMzAyMjU5OTQzYzcwNTcyZGZjMDNhYjkzOGQgbGVnYWN5LXRydW5rCisxMTgxOCA0MGQyMWE1Yjk5OTAxNTZiMDQ4Yzc5Mjk4Zjc3NDBkNzNhMGQ4ODdiIGxlZ2FjeS10cnVuaworMTE4MTkgODRlMjFhYzdkM2VhMzU4Y2Q4ZjZmYjQyMTJlNDkyOWRhNDJjODlmZiBsZWdhY3ktdHJ1bmsKKzExODIwIDE1MDkwN2MyYzJjMDgyNzk3MzAyY2VjNGFjM2Y0NzkyMTgxZjljNmEgbGVnYWN5LXRydW5rCisxMTgyMSA5NThlNDg4OWVjYWI1NmUzODNlOWQyMzFjMzZkN2I2YzQyZWZlY2Y3IGxlZ2FjeS10cnVuaworMTE4MjIgY2E2ZTIyNzNmYmY2Mjc1NDgwYTA0ZTU2NmRiMDAwOTg5YjA4NzY1MSBsZWdhY3ktdHJ1bmsKKzExODIzIDNiOTE0MzJiYTFhNDEzMTU2YjM3ZjI2YjAxZWQ0ZWQzOGE5ZDkzMzMgbGVnYWN5LXRydW5rCisxMTgyNCBjOTFlNGQ4N2Y2OTQ2OTcxNWFmNWUzODIyZjk3NWI0YzRkMzMyZTE5IGxlZ2FjeS10cnVuaworMTE4MjUgODE1NzRlNDY0NmI0M2NhZGYxODNjMDA4NmQ1NjJjODI0YzgwZjZkZSBsZWdhY3ktdHJ1bmsKKzExODI2IDdmMjQyZjI5YTQ1ZmE4YTAwMDdiODQ5NGJhMTQwZjkzNzUyOTc3ZWYgbGVnYWN5LXRydW5rCisxMTgyNyBmZDVhNDMwOWJmZGMyZDRhZjgyNTQ4NmFlZmY1ZmYxMDAyNjk2MmU2IGxlZ2FjeS10cnVuaworMTE4MjggNzUyMzdjYTU2YWZmMzc1NTJiNmRhZTgwM2E2N2U1OThjOWMyNThkYSBsZWdhY3ktdHJ1bmsKKzExODI5IDQ2MmNjZDBiYmU1MGFjNjkyZmQzZDhmYmI4NTQ3MGZiMDc0MWIyMTMgbGVnYWN5LXRydW5rCisxMTgzMCA5MzQwY2IyYWQzYTg4NzRmOWRmZWU4OWRkNWFjZWZiMTc4ZTQzZTg4IGxlZ2FjeS10cnVuaworMTE4MzEgYjYwNWYyMmEwOTlhYTljNjk2ZDhjOGYxZGYzNTExZGEwMDllMjAyNSBsZWdhY3ktdHJ1bmsKKzExODMyIGY0ZGNiOTBhYzQxOWY2OWVhMjBmZDlkNzk5MmY0MDdmMDNhOTA1NWMgbGVnYWN5LXRydW5rCisxMTgzMyBmYjJlN2YzOGUxYmJlNjhhYmE4OTk5ZDJlN2Q1M2NiZDk2MjI3ZDI3IGxlZ2FjeS10cnVuaworMTE4MzQgMDQxZjIyYTVhMzlkZDliMWUzMjczMGEzN2FiNzc2MGY4NWZjZDdlNyBsZWdhY3ktdHJ1bmsKKzExODM1IGJhMzI3N2NkMzA2ODVmNTJjYzk5ZDYzMThiNTZjOTk3NjUyMmMyZGMgbGVnYWN5LXRydW5rCisxMTgzNiBkNzQwYzk2MTNiYmE3YTFhZGRhMjY0YWI2NjU0ZTNjMjdkN2RhOGI4IGxlZ2FjeS10cnVuaworMTE4MzcgNzBiMzJmNDFhN2ZiZmIzOGVlNTcyOTQ2MjkxNjE4NDQwNDgzYTRkOSBsZWdhY3ktdHJ1bmsKKzExODM4IDVhM2QyMTMwMWEwNTE0NWFmMTAwMjkyM2I1YWViNjM2OTg3OTkxZDUgbGVnYWN5LXRydW5rCisxMTgzOSBlZjY4ZjBlNjA5ZTE5OGFiZTdhODhkN2NiNDEyN2Y3ZWZkMWUwYjFjIGxlZ2FjeS10cnVuaworMTE4NDAgNGY3ODUwNGE1ZjgxZGM3NmJmYjg1OGEwNzRkMjcyMmE5MGEyOWU2MiBsZWdhY3ktdHJ1bmsKKzExODQxIDUwYTJkNjQyNzZlNGIxMjZlZmUwODUyMTYxMTM0NDllZDQ1ZGIxZTkgbGVnYWN5LXRydW5rCisxMTg0MiAyMzM2M2JiOGJkOTBjZjE5ZmU3ZTQ0ZTlmYzhlYzc3M2E5ZmM1MDMzIGxlZ2FjeS10cnVuaworMTE4NDMgZTE2ZTM2M2UzOTFiNDMzYTM4NzEwN2EyZGNiOTYzMzk4YmY4MDkzMSBsZWdhY3ktdHJ1bmsKKzExODQ0IGJjOWFlYTcxOGU0ZTMyZTNkNzFiOWIzM2ZiNDU3MGU5Y2QyMzFjMGYgbGVnYWN5LXRydW5rCisxMTg0NSA2NjkwODM4YmE4ZGE2MGU0ZjVjNGYwMTg2ZWUyZmEyNDE2ZTQ3YjM1IGxlZ2FjeS10cnVuaworMTE4NDYgYmY4OWYxNDM1YjcyOGNkMGVlM2JkZTM4ZThkMDA4NmI2MmUwMGYyYiBsZWdhY3ktdHJ1bmsKKzExODQ3IDQ0MjJiYTM4OWU0MTU3MGI3MjgwZTk2Mzg2NTIwOWIzMTVhOTIyMGEgbGVnYWN5LXRydW5rCisxMTg0OCBmZGMzYzQ1OWVkMDBhZmMyODE0ZjA3OWRkNWI4NmUxZDU5NGVhMDVjIGxlZ2FjeS10cnVuaworMTE4NDkgY2QxOWE3ZGI4NzM1NmNmZGNjZDcwNjJlZWQ2YmJlYzlhMjQ5MDRkYiBsZWdhY3ktdHJ1bmsKKzExODUwIDY1YjA4ODJhNDRhYmNkOWFkNmM1YTJiMWY4ODU5MzUyOTgwYzJkYWUgbGVnYWN5LXRydW5rCisxMTg1MSA2MWY0NWRkN2M0M2E1MzA0Njg4YzM0NmZlZWMxODJhNTU4OTRhZGEzIGxlZ2FjeS10cnVuaworMTE4NTIgNmI1ZjdlOWEzMWNiOWU2ZTAzNzUzN2Y0ZDE2YTFhYTBlNDAxYzcwNSBsZWdhY3ktdHJ1bmsKKzExODUzIGYwYTNjMWZjN2I5MDI0ZWZmYzNkOTE5YTc5ZDUwZmZjYjgxNDc3N2EgbGVnYWN5LXRydW5rCisxMTg1NCA2Yjg4OWU0YzA3NTRlMDIwOTE0ZGJiNzdkNzA3MmZkM2VmYjA3Yzc4IGxlZ2FjeS10cnVuaworMTE4NTUgMmZlN2JiZTcxZGQ4YzBhMDJiMWVkZDE4NzBiZjU0NDlkMDE1NmM0NyBsZWdhY3ktdHJ1bmsKKzExODU2IGQxZWFkYTliYmMzYzdhMjdkODNjYjhmNjBhZmQyNTUxOTE1OGYyMTAgbGVnYWN5LXRydW5rCisxMTg1NyA0YzIzYWU2YzZlODJjNjFjZWM3YWE5ZDU4ZjEzZGI5OWE2NDk3MjYwIGxlZ2FjeS10cnVuaworMTE4NTggYjEwMDRiNDdiYWMwZTcyOTZmNWQxNWIyYWZlMTY1MWQxMjgwYTcyMCBsZWdhY3ktdHJ1bmsKKzExODU5IDUwZTA2MzFjZjExNzI5OGRkMGExMzhhZDNkNTRhYzFhMmVjZDkzZTcgbGVnYWN5LXRydW5rCisxMTg2MCBmMzUxYzY0YzgyZWRiODY0ODY1NTJhZjliMjk3ZTNlYWFmNDUzYWJhIGxlZ2FjeS10cnVuaworMTE4NjEgOWYxMzViM2Q5YTc4MzE1ZDliMzFlNmVkMzhiZDM3Mzc5ZWFmMzc4MSBsZWdhY3ktdHJ1bmsKKzExODYyIGM4MDMyMWMzMjhiNWQwZDliNDAxZDM0NWI3ZGZjMTdkYjNkZDU3MzEgbGVnYWN5LXRydW5rCisxMTg2MyA5ODFkZDIwYmM3MTE2MmJmMDNjODk2MDViZDgyYTlkMzQzMGRmYmIwIGxlZ2FjeS10cnVuaworMTE4NjQgZjY4MTliOTI2ZmIyYzY2MTMxYmU2ZjJhZjg5MWZiNmI5MGQxMDYxNiBsZWdhY3ktdHJ1bmsKKzExODY1IGYwNDI4OGNjZjc3YjdiMzJiY2M1M2RmMjlhMDg3NzI0ZGVhNDg4ZDEgbGVnYWN5LXRydW5rCisxMTg2NiBhNjgwOGJjZjhhYzI5YjRjYjViMTlmYjYxMWQzNTAzNWJiZGY4MDM0IGxlZ2FjeS10cnVuaworMTE4NjcgN2MzYmVhMDExODk1OGVhMzYzNDcxMjFhMTQ0NjJlOGE5NzFmYzgyOSBsZWdhY3ktdHJ1bmsKKzExODY4IDEwNmZhZjM2NmUzZjA3ZWZhMTFjOGE3OGM5ZTRiNTliZGZhNWUzZTUgbGVnYWN5LXRydW5rCisxMTg2OSA2ZmYwOTQ4ZmY5NTFjN2FiYzg1NDRhOGNjOGZiNGM1ZWVlYzY0OTkyIGxlZ2FjeS10cnVuaworMTE4NzAgMjI5ZjczZjJjODc4ZmUzZDIxNDlmMDNhM2Y3NWZjY2FiMGVmY2I1NSBsZWdhY3ktdHJ1bmsKKzExODcxIDQ4MDU2NzMxMDE5NGNhMDc2NTY5ODFhMjUxYmYzMGYzNGQ1NGI5OWEgbGVnYWN5LXRydW5rCisxMTg3MiA5YmY0MGVmMjI3YzkyYjZiNDRjOTZkYmY1MmIzNWM4MDUzN2JlOWEyIGxlZ2FjeS10cnVuaworMTE4NzMgNDJhMDdiZWY2MGUwMmM3M2E5MzAwNWUzNjgzNDA2ZmY4NjU5MWNhZCBsZWdhY3ktdHJ1bmsKKzExODc0IGE0YjRiYTVjNGFhMjExYjY3ZjYzYzdkNjQ0NDEzMWM2N2E1MTg0NDMgbGVnYWN5LXRydW5rCisxMTg3NSBlMTgwMjcxMzBiYmUyMGQzNGU2MmZlNmU3ZWUzZWJkNDRkNmVjMDUyIGxlZ2FjeS10cnVuaworMTE4NzYgYmZhN2VkMGIxYTZiZDIwZTQ0MjBlNTM0ZDBmZWFjYjQwZWUzZGY2ZSBsZWdhY3ktdHJ1bmsKKzExODc3IDA5YjVjYjQ3NTkyZDQ0YWJlNzg0ZmEyOTc1YTY2ZmFjZGYxMDZkZGUgbGVnYWN5LXRydW5rCisxMTg3OCBhZmU1MGI2NjE1NDhjOGQyNzczZDc1ZmU4NTM3OTc0ZjZjOGZiM2QwIGxlZ2FjeS10cnVuaworMTE4NzkgOGEzNDkzMDlmZGY0MzMxOTBkZDYwYzM2MTg4YmM2M2NmNzVhM2E0MyBsZWdhY3ktdHJ1bmsKKzExODgwIDJiMzQ0NjFiYTRhM2FjZWE2NjhiZGI1YzFjNzI3YTQzM2QzNzJlMGUgbGVnYWN5LXRydW5rCisxMTg4MSA2NGNhMTE1NmVkZjE5MDY3Njk0MzM2ZmY5ZDAzY2UwNmEzYmNmOGQ0IGxlZ2FjeS10cnVuaworMTE4ODIgMDBiMDZjYzViOWRhMTc4MTE0YzVmNDNjZWJiNGFmZGY1NjI4NDdlNyBsZWdhY3ktdHJ1bmsKKzExODgzIGY1ZDM5NzRkMjA5ZjMzYjkyZjEzM2VmNjVkMmU0MGQwMjRkZmY2ZDAgbGVnYWN5LXRydW5rCisxMTg4NCBmMTBjNmE3NDM4ZjVjZTEzOWMxYjEzNmJkMTUwOTg1N2U3NmRiNTBiIGxlZ2FjeS10cnVuaworMTE4ODUgOWRkNmY0Mjk2NDc5ZmJmN2NhNzQ1MTlhOGI1N2MzODkwNTJhNWM5YSBsZWdhY3ktdHJ1bmsKKzExODg2IDZjZTBjZTRlYTNjMTg0N2Q1ZWNhYzBmZGFmOTZlNDI3OTQ3ODViZGMgbGVnYWN5LXRydW5rCisxMTg4NyBhOWFlOTlmOTIxNTQwMTg3NjM5ZDZhOWRjYjFlZDdkYjVlMGQ5Y2FkIGxlZ2FjeS10cnVuaworMTE4ODggMjExYzllMjgzNDY2ZjZlNWIyYmM0OGViMjFmOTI2MWNjNDY5OTY5MSBsZWdhY3ktdHJ1bmsKKzExODg5IDNkOWEwYTNlNTk2YjI4YWJjOTNmOWU4MzlhOTc3MDk4NzZlNzRjYmEgbGVnYWN5LXRydW5rCisxMTg4OSAyMWQ3MWYyZTI3MjQ4YTBmNGUzOTNkMGZjMzIxZWNmOWI4OTMyMWQyIGxlZ2FjeS10cnVuaworMTE4OTEgMDk0YzM4NWI1NjI0MzEzNmI1OTMyZTUxMzI0ZDBlYjU0ZDNiMjYzMyBsZWdhY3ktdHJ1bmsKKzExODkyIDk3YTU0M2JmOWY5YTY0NDAxZTU4OWUzZTRhMTg5ZjkyMTliZTUxNWUgbGVnYWN5LXRydW5rCisxMTg5MyA4N2M4MjVlZjc4NzhkYTZlMzZkNWMzNjU1MmZmMGY5YzU3MzI5MDllIGxlZ2FjeS10cnVuaworMTE4OTQgOGNiMzg4ZTcxZGQ5MDUwNzVlNWQ1ZGY0ODQ0MjlmY2ExN2FmYmJmYiBsZWdhY3ktdHJ1bmsKKzExODk1IGIwNDY1YWViMGVmY2UzMDMwYTYxZTYwMTk4YTZiODgzMjVhN2JhNTAgbGVnYWN5LXRydW5rCisxMTg5NiBjMTllOWFjMmIwYzhjOTk3OGIzMzQzMjFiOGQ4YmMyZjY2Y2ZkZGEzIGxlZ2FjeS10cnVuaworMTE4OTcgM2JmZjY3MzY5YjExMDg1OWZlOTdlNGQ0NmM4MjBkMzE2N2Q0YTRjNCBsZWdhY3ktdHJ1bmsKKzExODk4IGYzNjcwOTI1YjA5OGM5NjY2NzRkMzllY2EzZTIyY2NiZjE0NzY0ZGMgbGVnYWN5LXRydW5rCisxMTg5OSA5Y2NhZWNkM2RlYTMyYmU2NjQ4NzJmZDQ5N2ZjZDQwZTM5MDU3M2U5IGxlZ2FjeS10cnVuaworMTE5MDAgNThhMzVlNWQxM2NjNjI3MTYyNDVmYTEwYTY1MjlhMWQ0NTE1ZGI2ZiBsZWdhY3ktdHJ1bmsKKzExOTAxIGY1MGI5Y2M3NmMxZTZkOTE3MzU5OTE3ZmI3NDMxNjQ0ZjFhYjJjNzQgbGVnYWN5LXRydW5rCisxMTkwMiAzODg2MTY1ZGJhNDI2NzhjNTJkZGVjMDI1MTc2ZjdmOWVjOTg2YzYzIGxlZ2FjeS10cnVuaworMTE5MDMgNjNlY2Y3YTRjMDcwZWM5YjMzMGNlYWQxZDM3MjRmNzRkNWRkNDI1OCBsZWdhY3ktdHJ1bmsKKzExOTA0IGVlOTkyYjMxMjBkM2FlY2U1ZmEzOTYxMGE0MmZlMjVkMjc0NWViYWYgbGVnYWN5LXRydW5rCisxMTkwNSA5ZjlkYTAxODliN2I0ZGVlMTM0MWVmMWVlZTQ0Mjc4YWYzZTFlNDVhIGxlZ2FjeS10cnVuaworMTE5MDYgNDRjNTQ2OGY4ZDM2NDUzNTYxN2MzYjViODIwYTYwMWQxMTgxNGYwMCBsZWdhY3ktdHJ1bmsKKzExOTA3IDYyMGUwMjI1MGM4MGJjNjA5MzM2MjViZjMyOTQwNTQ4NGM2OTY0NjEgbGVnYWN5LXRydW5rCisxMTkwOCBmYmNhNDg2MzI3Y2UxYzE0YjA5OGFlMTU1N2UwMTk3ZDkzZWJlMmU0IGxlZ2FjeS10cnVuaworMTE5MDkgMDM3OWViN2JlMzIzZThlNzliMTE0MTVjZTQyZDYwNWZkMDA3NzIzMyBsZWdhY3ktdHJ1bmsKKzExOTEwIGU3MjU0ZTJmMmRjMWNkMTFmMjc1YTE2M2IzYzgzMjI0ODQyNDI4ZmMgbGVnYWN5LXRydW5rCisxMTkxMSBjMDNmZmZmMzg3ZjhiZGQ0MjQ1M2IxZjk5ZDQwMjJhMDUwYmNjMjM0IGxlZ2FjeS10cnVuaworMTE5MTIgN2JhN2ZiZWI4OGVjM2FkZWYyNWRlYWM2YjM2ZDFjMmEzMTdhNjFmNyBsZWdhY3ktdHJ1bmsKKzExOTEzIDAxMjk5N2I5ZjFlYmQxMjY1NzZiYmUxMWRkMjk3Y2Q1NDZkMWNhYmQgbGVnYWN5LXRydW5rCisxMTkxNCBlNmVhMmJjOTc0ZTI2ZmJiZjM3NDE1MDU1NjE5MmNmNTQ5NGQ2YjVkIGxlZ2FjeS10cnVuaworMTE5MTUgZjZmODZiMzdmMWZjM2I5YTRlMGMxNTU4OWJiMmNiOWFiOTg4ODY5ZCBsZWdhY3ktdHJ1bmsKKzExOTE2IDNiOGIzMWQyYzljYTMxMWZlNzJmMzZkYjFlNmNiMTg1NjYyMGUyZGEgbGVnYWN5LXRydW5rCisxMTkxNyA4ZTRmZGIwYjBiYjhlNTk4ZTRhOWFlYzVjNGM2OTE3NmFmMjVmM2U0IGxlZ2FjeS10cnVuaworMTE5MTggMDJiMGI4NGRkNTQ1ZTdiYTVlYjY3YmU5MDhiYTVmYmY3NjUwNzE0OSBsZWdhY3ktdHJ1bmsKKzExOTE5IDFhNTlmMzY1NGJjMTEzYTM5OTYwMTc2YzU2Y2I1YWNiZDBlNTlkZTAgbGVnYWN5LXRydW5rCisxMTkyMCBlMTgwNmIyODBmNTM5M2NkZGFmM2M1MWE0NTY3ZGY5NDc2OGZmNDdjIGxlZ2FjeS10cnVuaworMTE5MjEgN2Y4ZjYwOGFjZGJjZDM3MGE3YzE0MjMzMGQzNzNkZjZhY2IyYmNhZSBsZWdhY3ktdHJ1bmsKKzExOTIyIDc5MmNkN2M1ZmQ4OGFkNjdkNDE0NDQ4ZDU2NzAzY2FlYjk0NjU1ZGYgbGVnYWN5LXRydW5rCisxMTkyMyA5MGZiZWM0MzQzZGVjNjJmZWJiZmY3N2M3NjZlNWI2NWNjNzc5ODMzIGxlZ2FjeS10cnVuaworMTE5MjQgNzU2N2VmNDBkZTc3Y2I3YmU5NWE5NjRkMTBmMzUwZDE1YzgxNDA2YyBsZWdhY3ktdHJ1bmsKKzExOTI1IDFjOTRmMzRiNDllM2Y3NGMzNWEwODU3NjRjNGE5ODdlYmIzNmMyYWEgbGVnYWN5LXRydW5rCisxMTkyNiAzMzdhZTEyZDgwNTAwN2FkMWM2ZGZhYzZhZDdkYWMyYjQ1NTE4NDRlIGxlZ2FjeS10cnVuaworMTE5MjcgMjJjMzJkZDYzZmY1ZDc3Y2Q3NDFkZDE3ZDkyMGVkMDc3MTU5ZDNhZSBsZWdhY3ktdHJ1bmsKKzExOTI4IDg3Yjk1NTRjNTFkNGJhNmVhNTc4MDkyMzA5NGRiYTM1YmQyZGQ4MTQgbGVnYWN5LXRydW5rCisxMTkyOSBlZGY3NTUzZmIyMGVmZWRlZjliOTAxOWQwNDM5NzRmZTcxYmQ1OWMxIGxlZ2FjeS10cnVuaworMTE5MzAgOWVhNWM0MmRjYmVkYjVjM2UxNjU2NGY2MDIxOTMwZjI4NDAzNGY2NSBsZWdhY3ktdHJ1bmsKKzExOTMxIDRmNmY3MzBkMjU1NmRiZTkzMWUwZWFiODcwYjY3MjA4MjZhMWFkYmQgbGVnYWN5LXRydW5rCisxMTkzMiA2M2ZlODU3MzViZGNkOTU0ZDFhMGY0NDViZDdhNDRjYTIxMjNmNGIzIGxlZ2FjeS10cnVuaworMTE5MzMgNDk2MjNkYTNjNjNmM2Y1MmUyZDU3NzlhYTJkNDNlZDJhY2VlNGI0NSBsZWdhY3ktdHJ1bmsKKzExOTM0IGM2MzY2ODkzY2VlMWQ5NzYwYjUzNjE2ZTM4YWI3NzIwZjc1ZWE3N2IgbGVnYWN5LXRydW5rCisxMTkzNSBjZWI4Nzg3OTYxMDgxNjkxMzlkNGQzNzFiMjhmNmJhZjk4Y2Q2ODM2IGxlZ2FjeS10cnVuaworMTE5MzYgZTFjMzMwOTQzMjIxZTVkOTlkZjIzYTQyYTA5NWQyY2JkNTA2ZTIwNSBsZWdhY3ktdHJ1bmsKKzExOTM3IGY4ZGRkMjM0MDM5ODg5ZDljZmZmOTVjN2QwYTIxYTBjYWFlMmYxNWYgbGVnYWN5LXRydW5rCisxMTkzOCA5MTNlYjMxYjAzMTcyMjEyNjUxZTdjYWE4NGQwOGM1ZjRiYmRlODBiIGxlZ2FjeS10cnVuaworMTE5MzkgMGZlYTVkNWM0ZmQ5ZGE4ZDc4MzE0NzY5MTUyMzRlMjRiODRhZjQxNSBsZWdhY3ktdHJ1bmsKKzExOTQwIDU2MjE3ZWFiYzA3YWI0ZDVjNTk4MzJhMzIwYTdjOTdlNGU1Mjg2NTIgbGVnYWN5LXRydW5rCisxMTk0MSA0YmQ1MTI4ZTVlZDQzNDRlZDFiMTc4NjBhNzZmYzYwYjQ3ZWE1MjlhIGxlZ2FjeS10cnVuaworMTE5NDIgMTg4MGVhZDMyMDBjZDQ1ZmUyYTkxZWRkOWVjYmI2Mjc3NmY4MTEwMyBsZWdhY3ktdHJ1bmsKKzExOTQzIDQxYzg4NGRmYWQ1ZWY0Yjk5N2Y2YzY1YWI3NGY0MTBjYmZkMzM5NzUgbGVnYWN5LXRydW5rCisxMTk0NCAyNWI2OTI5ZmZiMTNkZTAwNWE4ODYxOGYwYTc1M2I1MzVhZDNhYjE4IGxlZ2FjeS10cnVuaworMTE5NDUgZjI0MmNkMTBlMTZhMjQ4ZWVjZmYxNjc1NDA4ODk0ODBlMzI5YWQ5YyBsZWdhY3ktdHJ1bmsKKzExOTQ2IGQzOTM5YWQzODE3NjZhYTMwMTlkNmYwNjUzMzM2NGI1OGE4ODgzMTggbGVnYWN5LXRydW5rCisxMTk0NyBkYTcxYWExYmUxOTFjMDFjM2U4NWQ3OTQ4OWI1YjI5OGFlNDFjNDdlIGxlZ2FjeS10cnVuaworMTE5NDggYjM0ZjllN2UyNjkxNDY1NGQ0ODYzYzY3YmY0ODdlNjAwNmM5ODZjMSBsZWdhY3ktdHJ1bmsKKzExOTQ5IDRkM2UyZjFkMGFlNDdlZGI3NWVjMTMxNzJiZDEwNzZiYTUwZTUzMDYgbGVnYWN5LXRydW5rCisxMTk1MCA4YmMwYTMyZGRhYjVhMjJiYjk2ZTI3NzA4OGYyZDJjYTY2YjY1MjI2IGxlZ2FjeS10cnVuaworMTE5NTEgZTU5OTYyNzlmNThjN2IzMzFjYTA4MzMzNmUxZTE1NDY1ZWVmNDQ3NCBsZWdhY3ktdHJ1bmsKKzExOTUyIDE3YmNhNGIzZGE5MzU3Y2Y5ZGQ5ZGI5NTQwNTg5ODllOGRhYjFlNTMgbGVnYWN5LXRydW5rCisxMTk1MyAxYWZkYzU1ODAxNTc4Y2YxY2E1NjcyZDAzYzVlMGI2Yjg4NDlhMjAzIGxlZ2FjeS10cnVuaworMTE5NTQgNTQ0MjJiNDZmNmQxODAyY2M5M2M0NzlmMjI3ODM2N2ZmNGViODg5NCBsZWdhY3ktdHJ1bmsKKzExOTU1IGU3ZDk4NGYyNjZjYzYxZjZlNmFmZjk2Yzg0ZWI0ZTJjMjJkMTIzOWEgbGVnYWN5LXRydW5rCisxMTk1NiA2MmUxYmNjNjZhOTNlNDI1NTk1OWE3YzE4MmQ2MGNhNWRlMDk4Yzc1IGxlZ2FjeS10cnVuaworMTE5NTcgNGZhODgxMGU4NWNhY2Y1Y2YwZTJkZWEwNGJmYmZjYTNkMzFjZWRlMCBsZWdhY3ktdHJ1bmsKKzExOTU4IDlmZmQ2MDQ4MDdjMjE2NzNkYTMwYjE0MDk0ODI4ZGE0MzkxMWQ0YTEgbGVnYWN5LXRydW5rCisxMTk1OSA4ZGMwZTk3YTQ1ZWM3NTIwOGM1MmExZGMwNjY1NzRiOTJmZWE3NTc0IGxlZ2FjeS10cnVuaworMTE5NjAgNzk4YjEwNDFkMjYwNmYwOTQ2ZTljNTRmYjBjNDMxZmQ4YzQ3Yzg5MiBsZWdhY3ktdHJ1bmsKKzExOTYxIGExMTVjM2Q0OTJkYjA4MzQ3NGNjYjk5OWEwMDEzMjZiYTkyZmM2ODEgbGVnYWN5LXRydW5rCisxMTk2MiA0ZGUwOWVhMTBlZTA4ZTAyMGIwZTM2NGVkNzY5OTE1YjhmZTBhZjI1IGxlZ2FjeS10cnVuaworMTE5NjMgNmEyNDRlNjRiM2U2YjJlYzA3Njk0YmZlOWFjYWI0NDg1NDU2MWQ0MyBsZWdhY3ktdHJ1bmsKKzExOTY0IGZlYjZjMzg2YWI3NzI2NTgzZTRmMDgzM2FjMjdjNzU2MjgyZWY1YWEgbGVnYWN5LXRydW5rCisxMTk2NSBkMDdiYzhiZjJkODQ1OTNlZjc5MTAzZTgyMmVlMWUzY2Y3YWE1OGI3IGxlZ2FjeS10cnVuaworMTE5NjYgMWFiZDkxZjk3MDMzMjVjNzQzNDE1NGU5YjcyZjUxNmVmMDI5YTM4NCBsZWdhY3ktdHJ1bmsKKzExOTY3IGMyMTgxNWZhMDc3ODg2NjUwNjE2NzYyNDI5OGM2NDQ2YjE2NWEzMGMgbGVnYWN5LXRydW5rCisxMTk2OCBkZTAwOTMxNjk2NDliYjMwZjZmOGFlZmUzMDhlMjQzOGI4NzVkMDRkIGxlZ2FjeS10cnVuaworMTE5NjkgYWJmMmNkMjUxYjI0YTljNDkxZjM4OGJiOWQ5MWZiZDg0NmZiYTY3OCBsZWdhY3ktdHJ1bmsKKzExOTcwIDNmNzE3MzQyZjBhMzZkZTkxZDZkY2YzMmQxOTU3ZDIwMjYzMjZmNWEgbGVnYWN5LXRydW5rCisxMTk3MSBjMWZkODE0NmYyZTlhNzljNzdlNTg3N2FiYWNiMTYyMDUyOTE2MzU1IGxlZ2FjeS10cnVuaworMTE5NzIgZjg5ZWE5YmY5YTUyNWQ5ODMyZDhkMjFkMjc3MDgxNmVkMjc0NjllYSBsZWdhY3ktdHJ1bmsKKzExOTczIDFlYTZkMjM1NmU1MmRhNDBmOTQ3YmQyMjk2YmY3MWFjMDlkZjg5NzIgbGVnYWN5LXRydW5rCisxMTk3NCBhZmEwY2QyMTdmNGViYTcyZGI0MWMxNjVhMzJhYmUyY2Q2OWNmMjM2IGxlZ2FjeS10cnVuaworMTE5NzUgZjZhODRhMWM3ZTAyY2ZiMmFlZmMyMjMwOGJjYzRhODkyZmVjM2MxNSBsZWdhY3ktdHJ1bmsKKzExOTc2IDM5ZmZjNTk2N2I2YmFjYjI0NDdiMDY0MzQyNTczMTMzNGE2OWE4YTMgbGVnYWN5LXRydW5rCisxMTk3NyA0YWJjYjMyZjdlZjU0YTMzMmRjNGRlYjNiNDgwMzBkMTNiZTkwMmRhIGxlZ2FjeS10cnVuaworMTE5NzggZTFlOWM5ZGY0ZjEyYzhmNTAxZDZjMTA3YmJkOTE5OGM1M2IyNzdjMyBsZWdhY3ktdHJ1bmsKKzExOTc5IDYzODc2Y2Q5OTg0YzkyNjgxZGZhODM0YmE4ZWYzNjdkNTg0Njg2OTQgbGVnYWN5LXRydW5rCisxMTk4MCAyNWJlMDBmMzFkYTYxNWQ0MzZlZTU5M2YwYjhjM2UwZjYyN2M2MTgxIGxlZ2FjeS10cnVuaworMTE5ODIgZDg0NzE1NTIzMDk1YWMyN2Y3YjM5OTI5NjhiMWMxZjI2ZTlmZWExOCBsZWdhY3ktdHJ1bmsKKzExOTgzIDZlNmJlODk2ZWM0NjZlOTQ0YjM5ZDM2OTNjODhkMzliYTYxYzY4OTkgbGVnYWN5LXRydW5rCisxMTk4NCBkMzkyOGI5OGUyZTEzZTkyMzhjMzE1MzRlNjUxZjNiNzNiNWIwMzRlIGxlZ2FjeS10cnVuaworMTE5ODUgOGYzZTdmZTFkNGY3NjNjMGFmNTExNGYzYWU1Yzk2MjZhN2UzN2NkMSBsZWdhY3ktdHJ1bmsKKzExOTg2IGIwY2EyY2E1ODZiMTU4YjFkNGMxMDgyODY5YzUxMjlhYjNkYzc2MjAgbGVnYWN5LXRydW5rCisxMTk4NyBkYjdjY2EwOWJlYWZlN2I3YzIyMWU4MTNkYjJkZThkNDRjYWFmYjg0IGxlZ2FjeS10cnVuaworMTE5ODggYjc1ZDkzZWM4ZTVhNmY3ZjFiM2UxMTNjZjlmMmIwN2QzMTgxODY0MSBsZWdhY3ktdHJ1bmsKKzExOTg5IGEzYmNmMWIzNjU1MTdiNTRhOTlmZjdmZDI4MTBjNzAwYzY2ZGQ3YjggbGVnYWN5LXRydW5rCisxMTk5MCA5NjQ3YzZhZDZhNTA5OGNlODk1YWUyZDcyN2I5YWE4ZTI0NjNkZTFkIGxlZ2FjeS10cnVuaworMTE5OTEgMTgxNTA3Y2MxYTcyNTk1YTVmMDA1NTZhYTgyNzc4ODJiZGNlZmMyOCBsZWdhY3ktdHJ1bmsKKzExOTkyIDU0OTgzMTcyM2VmODU3OGExYWEyZjExY2ZkZTNhMTk1NzZmZmU5YWYgbGVnYWN5LXRydW5rCisxMTk5MyBlYWJlYmMxNjE1MTg2YjFlMmU0ZjZkYjMzMTdlNjUwMjJlY2YyMTAzIGxlZ2FjeS10cnVuaworMTE5OTQgNWQ4MWU0MmM2YmEyZThlMDU5ODgyODEwNDMyMmVjNzdkZDZiNWY5ZCBsZWdhY3ktdHJ1bmsKKzExOTk1IDk2YzczNGFjZjg0ZjU1Y2Y5MDNkNWVhNzk2YjJmZDhjYjk1NjRhNzYgbGVnYWN5LXRydW5rCisxMTk5NiA3NmU5MzU5MjRmYWUwYjQ4Yzc4NTFiMjlhNzFjZmM2Y2JjYTUyZWExIGxlZ2FjeS10cnVuaworMTE5OTcgNjNhMWE4NTEzYzFkY2U3MGZlZmU3Mzc3NDE2NTI0ZjRiZmVmYTM0ZiBsZWdhY3ktdHJ1bmsKKzExOTk4IDQ0MzFlN2EzMTk3NzViYjZlZGI0NmIxMmFkNTcwNzNiNWY5MjBlMTkgbGVnYWN5LXRydW5rCisxMTk5OSAzNzc3N2UwZjgwZTM3NTU0ZWQyYjA3ZGNlYTVjOTQwZjI1MGFiNWViIGxlZ2FjeS10cnVuaworMTIwMDAgNjBkZmEyMTFkZGU4YmFkNjQ4NGQ4YWUxNDQ1NDcxM2I0MDI1ZDE5NiBsZWdhY3ktdHJ1bmsKKzEyMDAxIGZlYzg2MjMwMWQ2ZTMzY2VhYTJkZDRiMTFjNDQyY2I1NTIzMDdjY2UgbGVnYWN5LXRydW5rCisxMjAwMiBmNTk2NTE4ZDA2OTFlMDI1YmNhZTZjZTc0N2M4MTcxNjFkYmNkY2Y1IGxlZ2FjeS10cnVuaworMTIwMDMgMjQ0OTc2NDNkY2M5MWQxNGRmNjUyYWVjODYxODhmY2YzNTk5ODg5YSBsZWdhY3ktdHJ1bmsKKzEyMDA0IDA0NDI2MjI0MzAyYWFkYWU0YTIzNzQ0YzUxY2QzOWE4YzUxOGI4MTAgbGVnYWN5LXRydW5rCisxMjAwNSBjZDc5MDMxMGJjNGYwNmYyYTMxMDU0MTIwNjRmYzEyZmQ2NmQ3MWE4IGxlZ2FjeS10cnVuaworMTIwMDYgNjBkOTkwZjdkN2FiNTZhZmM1OWM1NTI4ZDRjODdkZjM3M2NkNTY2MCBsZWdhY3ktdHJ1bmsKKzEyMDA3IDRhNzM0NGQ1NWFlMTg3OTUyOGQwYTg2M2MzNTE4ZWY2MGM3YTQyMDYgbGVnYWN5LXRydW5rCisxMjAwOCA4NTQ0NGFmMmJlOTVkMDU1YjEyMzM2MDVjZjJhZGNjM2I1MjRmZmZiIGxlZ2FjeS10cnVuaworMTIwMDkgYmJlOTI5MzJhMDA1ZTU3ZTIyOGNlYzE0MmRhNjFiYjlkZTVmYmY1MyBsZWdhY3ktdHJ1bmsKKzEyMDEwIGEyZTgzYmRjMWZlYWVmNzNiYTU5NmFlMWU0YzQ2MWNhZDY3MWM3YzYgbGVnYWN5LXRydW5rCisxMjAxMSAzNTBmMjQxODBkY2I0MjJhMTRkN2Y2ZWJhMDhiMGQ0ZWZhMGE0ZmQ4IGxlZ2FjeS10cnVuaworMTIwMTIgYTEyNjEwN2M0MzNhNmY5YTA3YzdkMzZhZDg5OWNmOTU1ZDRmMDI0ZSBsZWdhY3ktdHJ1bmsKKzEyMDEzIDk4M2Y1M2YyYjZmNjgzY2I0ZmFmOWEwYjdjZGI2YWE2MWZiYjVjNDIgbGVnYWN5LXRydW5rCisxMjAxNCA1OGY2ZGE3YzhiYjg5NDIxNGFmMzlmNGVlMTJjNjVlYTBhZjhkYmIwIGxlZ2FjeS10cnVuaworMTIwMTUgZmU3ODM5ODRmOTJlYTNhMjQ4ODlhZjU0ZjJjNGUwZmUwNWFhYWU3ZiBsZWdhY3ktdHJ1bmsKKzEyMDE2IDIzMDkyNWZlNWIyZGU5ZGQ2YjM2YjIxZWMwMGJhNzA1ODc4ZjNiM2YgbGVnYWN5LXRydW5rCisxMjAxNyA1YWUxYTIwYmJlNzFlYjU2OWU2MjExYzRkNGFjY2Q5ZDYyZDYyYmMxIGxlZ2FjeS10cnVuaworMTIwMTggMzE1Y2MwNmE4MTYxNTQ3ZGQ0OWRlOWYyYjEyYzMyYzg1OTI5OGUwYyBsZWdhY3ktdHJ1bmsKKzEyMDE5IDBmMjcyNTdmYjZjZjRmNDE1YmQ2YjNhNjQwNjcxYjJlZDkwOGQ4ODAgbGVnYWN5LXRydW5rCisxMjAyMCBhMWE4ZGY3M2JmZmY1MjNmZTdjN2Q4ZDM5OGNjYmM5MmNlYjE5YjU2IGxlZ2FjeS10cnVuaworMTIwMjEgZWQ2Y2FjZGRjNmM2OGU4N2I5MDYxYWNmZjQ1MzY5M2YyOTFkMTQ2YyBsZWdhY3ktdHJ1bmsKKzEyMDIyIGM2YTExMDNlZmE4YWYzMWU2ZTc5YTY5YzBlNWUxYTQ4NTkxNTBmNDkgbGVnYWN5LXRydW5rCisxMjAyMyA0OGM3MDA0MTA5MzYzYmIxNTE0OTU0M2VlNmM2ZjIwMDVmNTg5MzE3IGxlZ2FjeS10cnVuaworMTIwMjQgNzUwNGYyM2M5MjQ3ZDkxMDZlODlhNTZmYzdkMWQ4NDNmZTY2OTIxZCBsZWdhY3ktdHJ1bmsKKzEyMDI1IGY5MDJlY2M4NjdkMDhkMzRjOWEwYTM5ZjA5MDJmNDg0NDk0YzFhZDYgbGVnYWN5LXRydW5rCisxMjAyNiBlMDU5MDQ5YjFhNzYyMGM4ZTE1M2I0MTQ5ZjNjMjU2ZjY3ZmUxNDNhIGxlZ2FjeS10cnVuaworMTIwMjcgZDdkMzkyNjBmZTgyZDVmZmUxZDU3YjZjYTY2NjQ2YTk2YjRmZDU3MyBsZWdhY3ktdHJ1bmsKKzEyMDI4IDgzZjgzZjAwMmQyZWFlNTFmZmI4MjM2ODljZGIxMzk0MTE2NDc5OTcgbGVnYWN5LXRydW5rCisxMjAyOSA2ODg2M2Y1MTI3NmMwODUxMTA1YmM5MjVjMWFkYzc0ODEyZDBmYTY1IGxlZ2FjeS10cnVuaworMTIwMzAgZGYwNzc3YWI3YzYzODU0Zjg2MzMwYWU5YTM2ODk2NDgwM2IyNzZlZCBsZWdhY3ktdHJ1bmsKKzEyMDMxIDc5YThhMWE3NDY3YjEyMmY0MGUxODJkYWFmYjhlMWE3YTBiOGQzZmQgbGVnYWN5LXRydW5rCisxMjAzMiA1MzMyNWI4ZjhjZTliMWNkM2ViMjVmOGE3ODJkOWQzMjUxZGZmYWNlIGxlZ2FjeS10cnVuaworMTIwMzMgOTNlY2M1MWY1OWQxMmFmMzgzYjUzNGMyZjMxNzRkMTE3MzQxZjk2ZSBsZWdhY3ktdHJ1bmsKKzEyMDM0IDNlNTBjMWRkYWIzYTNiY2IxMWEyYzkwZTAwZjhmYjA4MTY3MzVmYzcgbGVnYWN5LXRydW5rCisxMjAzNSBmMTdjZWRhNmU2NjY5MjU3M2QzZWYxZTNhMDViNTQ3MGY1MjQwNTU5IGxlZ2FjeS10cnVuaworMTIwMzYgZmYzOTJkZDdiOTcwOTc0NGJjNGM0ODNhMWNmMDZjOWIwZTkxMzAzZiBsZWdhY3ktdHJ1bmsKKzEyMDM3IDg3YmJjNzIxYmEyYjk5ZGY1NzFmNzhjMmI0MDdhZDBmMGI4ZTQwNjIgbGVnYWN5LXRydW5rCisxMjAzOCBhYTJjMWE4ZmE4Y2UxMTI0OTQ5NGI5OTg0MDk4MDgzZWMzYjQxMjIwIGxlZ2FjeS10cnVuaworMTIwMzkgYjhlYzk3NGFmZDY5NTZkNjcyNTkyNTgxZjYyNzMwODlmMTA3NmU0MiBsZWdhY3ktdHJ1bmsKKzEyMDQwIDE0MzdjMjMzNWIzYjQ2YTVlOGM2YzA0NTM0NGU2OTA1YTFjZGQyZTYgbGVnYWN5LXRydW5rCisxMjA0MSA2YmFkNjlkMzgyMTYyNWY4MjkzODExNmEwZjUyMTkzOWU5MmVjZmJiIGxlZ2FjeS10cnVuaworMTIwNDIgMTZhZjI1ODJjOTY0Y2NjN2M1YTVlMDU1YjFjNmIzNzU4ZTE2NjY3MyBsZWdhY3ktdHJ1bmsKKzEyMDQzIGQ2NDE1YzI3YjNiMWI0YmYwYmVkMDBmZTkwZmY1ZWRlM2E1OTI0NTcgbGVnYWN5LXRydW5rCisxMjA0NCBhYTk2MWE0NmFlOWUwOTc2M2IzMTNhNzVkZDRkZGQ1ZGFlZDE0ZTRjIGxlZ2FjeS10cnVuaworMTIwNDUgNmUyNDliMTM1ZWQzYjIxZDY5ZjE0Y2MwNjNmODE1YTRhMmJmZjZhMiBsZWdhY3ktdHJ1bmsKKzEyMDQ2IDg4MTlkZWYxYjM5YzZhY2EwNDAxZGI2Zjg0NmNiMWU1NTgwNzhjYWEgbGVnYWN5LXRydW5rCisxMjA0NyA0ODVjMGJkZmU4YTBlMzllZmNlNTA5YjliNTA5N2RjZmFiZGExZWY4IGxlZ2FjeS10cnVuaworMTIwNDggZDU5NGU4MzJhNTZjYmMxOTIzM2M2ZDJhMzY4MWMxNzMwOWI4Njc1ZSBsZWdhY3ktdHJ1bmsKKzEyMDQ5IGRmMzk4NWViNTg3M2JjOGY3NjNhNDk0ZThhYjY1YjBlNjQ0NzRlODYgbGVnYWN5LXRydW5rCisxMjA1MCA5YTRmNWJhYTgyNGU3YWJiZDhiMDQ0NzdmZTNiOTI5NWY5YzFkNzY2IGxlZ2FjeS10cnVuaworMTIwNTEgMTY4NzhhNGMyNjBkMjBhNWRmZTQ4ZjRkNGI5OWEzOGU5NzNjZjhlOSBsZWdhY3ktdHJ1bmsKKzEyMDUyIDkxNzdjNDA5ZGM0NTEyYTA5YjJjYzA4MDYyMmZjZTZkNjMyNzI3YWUgbGVnYWN5LXRydW5rCisxMjA1MyAyMjAwOTA0YWJkZGM1MTM2NTQ0YjBkZDA4ZGQ2YTdiMTI0MmNlOGVlIGxlZ2FjeS10cnVuaworMTIwNTQgODNiYjYwNmEzMmU2ZjQ0OGY5ODA4Y2FiNjdhZDQzOWEyY2I0M2VkYiBsZWdhY3ktdHJ1bmsKKzEyMDU1IGYwMmM2NTQ5ZWQxYjU0MTdiNDYyMjM3ZmM1NWM0MjljNzk2YmZiZWUgbGVnYWN5LXRydW5rCisxMjA1NiBmYTg2N2Q4ZWU3ZWJjMDM5MGVkNDc5ZmNiMDFkMGQwMzRkNmRkYjkyIGxlZ2FjeS10cnVuaworMTIwNTcgZmViOGY4NzY5ZWY2MmRjNWZhYzEwOWM4ZDExZDhlZjFkOWQzYjg5YSBsZWdhY3ktdHJ1bmsKKzEyMDU4IDA2NzE3ZTUyMDY4ZmZlMzA4NTczZWI1MzAyYjA5YThkZWE3MGYzMzAgbGVnYWN5LXRydW5rCisxMjA1OSBhZThlMTQ5NDQ0MTQ3Y2FmMmRiNTVlNzBkNDFlZWVhM2NjNGJkNWJlIGxlZ2FjeS10cnVuaworMTIwNjAgYmM5ZTc3MjFjOTE2MjAzZjUzMWIwY2E1Y2Y2NTE0OWI2Yjc2YzNiNyBsZWdhY3ktdHJ1bmsKKzEyMDYxIGQ4NWQyZDk5NGYxZjc4OWY2ZmMzYmNmYmQyMzExNDU4MzE3MWRlNWQgbGVnYWN5LXRydW5rCisxMjA2MiBkMTNhNjBiNDRiNDU4N2M2NWI5MDk0YTBlNzdhNzdkNjY0ODlmZjA1IGxlZ2FjeS10cnVuaworMTIwNjMgYTA5MTE4NWNjZmI2YjQ1OGUwYmM1NDgzYWJkODIwNTNlNjFmZGVlZiBsZWdhY3ktdHJ1bmsKKzEyMDY0IGFjNzQyODYyY2EzNjI3Nzg4NDAwNGNiZGEyN2JhNjI2OWFhOGY2YzMgbGVnYWN5LXRydW5rCisxMjA2NSBiNzE1OGRiMzQ3ZDliOWZlZWRmODllNzkyYTJkYjkwMGRiMzAzMzUxIGxlZ2FjeS10cnVuaworMTIwNjYgNTU5OTExNzY4ZGNiYWRiMjg1M2JlZDc2NzE3MTdjNmNhNTE1NzFjNyBsZWdhY3ktdHJ1bmsKKzEyMDY3IGFiMjBmNWNkZDc5ZjZlNTRhNWRhYjRhYzNmYWVlNzExMWI5NzJiYWEgbGVnYWN5LXRydW5rCisxMjA2OCA1Y2RiZDhjMDQwMTZjYzY0NGZjNmUzZGE4MDI4ODY3ZTRjN2IxOWEwIGxlZ2FjeS10cnVuaworMTIwNjkgYjA5YTljNDEyYmEyOTk0YTk3OWZmZGE1YWExYjE0MWEwMzk3M2Q3MyBsZWdhY3ktdHJ1bmsKKzEyMDcwIGI2Nzc0MzY3NTNhODcyYjM0NGQ4MzhkYmI5NDZkNTI5MWI0ZDI1ZDUgbGVnYWN5LXRydW5rCisxMjA3MSA4ZTZlYTVmMDNlNzM0MGNiN2ZmY2NlMGY1OWVlZmQzMGEwZDBiMzg2IGxlZ2FjeS10cnVuaworMTIwNzIgYWExZTQ4Mjg1ZDdiY2UwMDdhOGU1MGM1YzU5M2M4MWI2ZTEzODQ0OSBsZWdhY3ktdHJ1bmsKKzEyMDczIGNkZjU2MTdjMjAyMmQyYjc3MTgwMDU4YWRjMmJjNzg4ZjE0YjcyOTYgbGVnYWN5LXRydW5rCisxMjA3NCA5OGFkNTdjMzlkMjBkYzFmMTA1YTVhNjQ4MjcyYTQ5YWIxMmEwNTQ2IGxlZ2FjeS10cnVuaworMTIwNzUgODFkZDdjNzNmN2IyMWY0OWIzODg3MjRjYWM3MWU2MmExMGQ0MzhlMyBsZWdhY3ktdHJ1bmsKKzEyMDc2IDI5OTI4NGVlNjY5ZGZmZmI3YTRmYzhiYzc0NDZjMDlhYmYzMWJmN2YgbGVnYWN5LXRydW5rCisxMjA3NyBmNGRhOTQ0OWYwMTEwMWUyZDU3NDY2NjRjZGE5ZTVlZDQ1YTQwMWFjIGxlZ2FjeS10cnVuaworMTIwNzggOWE4ZWNkNzU5ZTEzNDExYzJhZTJmMDUxYjk4Y2JjOWE4NWY3MzE0OCBsZWdhY3ktdHJ1bmsKKzEyMDc5IDQ1OTVlZjVhOTY4YWM1MzZlYjYyMGYxMjc0ZjhjM2JjZDM0YzY0YTIgbGVnYWN5LXRydW5rCisxMjA4MCA4OGQ1OTBjYzExMTZlNGY0ZmEwYTlhNDAwZTk1NTQwNDYzYjRmMTJiIGxlZ2FjeS10cnVuaworMTIwODIgNjQ4M2RiZTA5ZjA2MTg4Y2UzZmJlMTZlOGMzMWI0MjgyZDA0OTdkNiBsZWdhY3ktdHJ1bmsKKzEyMDgzIGU2NmU4OGY1MjYwNjQzZDM4MzdlZTgxMGE4Njc5NDM0ODc0ZTQwZDMgbGVnYWN5LXRydW5rCisxMjA4NCAzYzI5N2E2YWQ0ZThiZjk5YTljMWM3NGM2NGZjYTZiMDRmNDgyOWQwIGxlZ2FjeS10cnVuaworMTIwODUgNjBmZGIxZGIxMTc1NjY1YjlkNzU5ZjAyYjFkY2FiMTBkMDA0ZjUyYSBsZWdhY3ktdHJ1bmsKKzEyMDg2IDVhOWNhMmU5MzdiNWJkNzM0ZGZjZDJlOGE1MDVjMzc1YjYwZTg1YWYgbGVnYWN5LXRydW5rCisxMjA4NyAzODAyM2E0MjVlNDgzODBiZWQ3YjYyYjNiNzUzYjA0NWYzMzQ1NmNiIGxlZ2FjeS10cnVuaworMTIwODggMDFjOGZlNDQwNjRiMzJkZDJmNmU3MzA0ZjM1Mjk3ODA0Njk3OTQyMyBsZWdhY3ktdHJ1bmsKKzEyMDg5IDQ1YmQ2YzQwYzA1YWUwNTJmYTAwNTM2ZDA3MWEyMDEwMWM0M2E0ZWMgbGVnYWN5LXRydW5rCisxMjA5MCA3ZjkwNzM2NzAxYTM1MGUzMzk1NTMwMDNjMGVjNWEyNjAyNzRlMDU1IGxlZ2FjeS10cnVuaworMTIwOTEgMmFhZmNlZTIyMGJjMGI3Njg5ZjgyZjQ2ZTA5YzRmOWUwMGViZjdlNCBsZWdhY3ktdHJ1bmsKKzEyMDkyIGYyMmY3NjliZjNkOTQyMWM5YTlhYTE0ZTYwNjU0ZGU3NGM4ZWIwN2UgbGVnYWN5LXRydW5rCisxMjA5MyA4NmJmNzBhNTVlZmRlNGRlNzQyMmExNjhhYzg0NTYxMjZlMTUxMzllIGxlZ2FjeS10cnVuaworMTIwOTQgNjE2YjE3NGVlYjU0ODMwZGU4NGUwZGQyMzYwNjllNmYxM2ZhZjdlZCBsZWdhY3ktdHJ1bmsKKzEyMDk1IDM2MDljZGRjNzlkZjYxMDNlZTQ4NDU5NjA2ZDU0NTY5M2QxZTk3YmUgbGVnYWN5LXRydW5rCisxMjA5NiA1ODMxYmIzY2E0MmE0OWY4OGFkNjYyMTk1ZTBmMGExN2ViMmRjYjdmIGxlZ2FjeS10cnVuaworMTIwOTcgNTRhYWZlNDJjMGMzZjIwMWVjZjY4NWU3NzJiZjY0YzRmZDE2YjhkYyBsZWdhY3ktdHJ1bmsKKzEyMDk4IDMwNzZmZmYzMDUzNWYyZDBiNWFiOWY0ZjYwNjU1OGVjNjE4MTE0YmQgbGVnYWN5LXRydW5rCisxMjA5OSBmY2JmMjIyZTY4OTgxYWE2ZjQ2ZGVjZjM5NDRiNDEwNjNhZDUwNWNjIGxlZ2FjeS10cnVuaworMTIxMDAgMGYzZjllMzY2MzU2YzdiODExODg1YjIzM2I4ZDM3YzgxMTMzNWJmYSBsZWdhY3ktdHJ1bmsKKzEyMTAxIGQ3OTg2YjRiOTEwMDljMGEyMmMxNDIzMzljYjBjMWNhMjU5YzNlOTYgbGVnYWN5LXRydW5rCisxMjEwMiBjNGUyZGE0Nzc5NDkyOWNlMDVlMGFmYTM4YzQxODYyMmM4MjNkZmIxIGxlZ2FjeS10cnVuaworMTIxMDMgMWRjMGVmMjRiMTVkMzIwMmUyMjk5MWI0MTViOTYwMTY4YmE5ZDMwYSBsZWdhY3ktdHJ1bmsKKzEyMTA0IDZiNTlmOWFiNWRiMWE1MTM4NDE5MmI2MGI0ZWIwZjljYzU0ODI0OTIgbGVnYWN5LXRydW5rCisxMjEwNSBjYjllM2YwMGQ2YjY1NDc0ZGZlODAzYTcyMDc1ZTZhODc0ODljN2E4IGxlZ2FjeS10cnVuaworMTIxMDYgODQ4Mzk1M2E5MjQ4M2Q3ZWI5NTA0MzFlNWQ0MTQ1NTAxNjY0NzE4YiBsZWdhY3ktdHJ1bmsKKzEyMTA3IDVhMzZiYWQxZDI0ODliODdhYmQ3N2ExY2JjMjIxOTllY2RjNTlmZjYgbGVnYWN5LXRydW5rCisxMjEwOCBjMWY5ODg1N2NjNWJiN2Y2MDc5MDJkODM1NzJlZjVjMzk5ODI3MDYwIGxlZ2FjeS10cnVuaworMTIxMDkgMjY3OGRiZjRhZDY5YTMzMGQ2ZTRlYWUzYTFlZDQwZTJiNjMxMTJiOCBsZWdhY3ktdHJ1bmsKKzEyMTEwIDU3MGZlZDRhYjhkYWY2ZmM5N2I2NDUxNGEzZDllNDcxNmU5MDQ0YzQgbGVnYWN5LXRydW5rCisxMjExMSBhYTg4Y2ZmYzM1YWI5NGEzMmE4MWU5YTE5NDdlMjcwMTNmM2U5OGNiIGxlZ2FjeS10cnVuaworMTIxMTIgNTQyNmJlZjg5ZWMzMzhkMDRkOGZmZGQzNDYxODJiMjQ3MGZmMWMzZCBsZWdhY3ktdHJ1bmsKKzEyMTEzIGNlNzljMGU3NGY2ZmUxZjI5MGJlNDhmNmZmZTkyOGZlZWExNGNjYzUgbGVnYWN5LXRydW5rCisxMjExNCBjMDM3ODdlYzk4MTFjOTg2YjU4NmEwZmY2ZWY5ZjJlNGNmYzE5OGRlIGxlZ2FjeS10cnVuaworMTIxMTUgOWFiZWU2M2M2YmFiM2M0NmQ3ZjZiNmJlNDA4NmMyZTQ4ZWIyOGFhMiBsZWdhY3ktdHJ1bmsKKzEyMTE2IGMxMmZlZTRjZTM2M2Q4ZjMxYjBkZjNmMGJiNzdmYWQ4ZTM3ZDdkYTEgbGVnYWN5LXRydW5rCisxMjExNyA5OTFiZDM1M2NmZWJmYmQ3YWI2NDllMmY5M2IzNTUwNzM0YjcxODI0IGxlZ2FjeS10cnVuaworMTIxMTggOTBmZGIzNzc2NGEyMmIxMDZiNGY1MjczN2MzZTg0NjhmZTZhZGRiMyBsZWdhY3ktdHJ1bmsKKzEyMTE5IDE3OWZiNjNiMTU1NDc0NzNiYjNkYWEwOGJjMmM3MjE4MWEwYzllYjggbGVnYWN5LXRydW5rCisxMjEyMCAwN2VkMzhjMjk2ZWU4Zjg1Yjg5ZGY3YWI4NTAwYjA5MGYyMTMwNGZmIGxlZ2FjeS10cnVuaworMTIxMjEgNTY3MmY1ZjFkYjQ2ODRkMWE3NjliODJlZjI3OWRlOGIwY2M2NDRlNyBsZWdhY3ktdHJ1bmsKKzEyMTIyIGZhOGY5ZmUwYTMzZDk4NTE1YWNhNDQ4OGVmNzNlNTE4MjEyMTc4M2QgbGVnYWN5LXRydW5rCisxMjEyMyBiMmZkZDcxY2EwMDZjYjQ2M2UzN2YyOGRmYjAzOWM1ZjMwOTdjYzI2IGxlZ2FjeS10cnVuaworMTIxMjQgMWZlNDgwMDlkOGVhOGNhNWI3NjUxYzg5YmU3OGNkM2EyZWIxY2E4ZiBsZWdhY3ktdHJ1bmsKKzEyMTI1IDk4YTZmYzY4NzdhZWUyYzIxOTczYWMwMTU4YmE0YmNkMzFmMmZiNmYgbGVnYWN5LXRydW5rCisxMjEyNiA0ZjUwYzcwNDU0YTliMmQxMjBjYWQ2YzRkNjNhYjRmZWVmOTgzZDk1IGxlZ2FjeS10cnVuaworMTIxMjcgODIwMzBjYTBmYTJlYTAwYzU0ZjVjNGRlNzk1ZTY2NDdmY2E5NjNhNSBsZWdhY3ktdHJ1bmsKKzEyMTI4IGNhMjEyODRlODc1ZGNmNTdlMDdmNzkzYTQ4MjhlMTZmYTliYzkyMzMgbGVnYWN5LXRydW5rCisxMjEyOSBkNjY3MTA5MzlhMzI1NDg3ZjRiMjUyNTEzZTFkNmNiMDM3ZTI4YTlkIGxlZ2FjeS10cnVuaworMTIxMzAgMmIwMGJiNTA4ODAzNmE0MDU4OGUyMmYzNGFhZjc0MzMyNGM0MzE5YSBsZWdhY3ktdHJ1bmsKKzEyMTMxIGFjNTM0NTgxNGJhMDkzM2MzZDVhOTJmMmUzYmQ4MjU4Mjg2YTIzMzEgbGVnYWN5LXRydW5rCisxMjEzMiBlMmRjM2NiMDhjNjBhN2Y5NjA1YWQwNjliM2I5MmFiYmJiZTYyOTgyIGxlZ2FjeS10cnVuaworMTIxMzMgODU4NmQ5MTFmYjM5MDIzOGIyM2U3ZWRhZTdkMjkzYzc5MjhmYWQ0ZCBsZWdhY3ktdHJ1bmsKKzEyMTM0IDQ0MjY3Yjg4ZmI1OTQxMGVmNjhlNDcxNjY3OWM1M2I4NDM0OGM5ZGMgbGVnYWN5LXRydW5rCisxMjEzNSBlNTg5NTdmMDZhMTUzODRlMmQ3ZGMyNjVkMGU1OGQxN2QyNTY5NDAxIGxlZ2FjeS10cnVuaworMTIxMzYgZjVlNTg2YjVmNzkwMDA0NWFhNDNlNzM0YTJmNjdkNmE0NTMyMjQzNSBsZWdhY3ktdHJ1bmsKKzEyMTM3IGY5Y2M1MjM3NGM1MmMzZWNlZTJjODkyZTdjOTJjZGYwMDMwYmY5MmYgbGVnYWN5LXRydW5rCisxMjEzOCBkYTFkZDNlNTRiN2FlMjRhMjYyM2QwY2Q1ZmRmMDE5ZjljYmFmZWRhIGxlZ2FjeS10cnVuaworMTIxMzkgNzJhMmZiYjBlMWY5MDAzOGRjMDhmYzUxYmM4NGUyODEzNGVlMWU4ZSBsZWdhY3ktdHJ1bmsKKzEyMTQwIGQxNTJhZGYzZjA5NGNiMjJiOTI4MjVhOTA0NjMxNjZiMDZkMjQyY2YgbGVnYWN5LXRydW5rCisxMjE0MSAwODM3OWM3ZjVmYTliMzAxZjIxZWYwYWIyZmEzODM2NjYxNDhmNzE5IGxlZ2FjeS10cnVuaworMTIxNDIgYzJlYzIxYzY1ZDA1MDA1ZDYwNzZhNWM1NzU2YTY5Zjc0MDlhOTM1MiBsZWdhY3ktdHJ1bmsKKzEyMTQzIDJjZDU4YTYxYjA1MTYwNzNjNDhjOTMwNTY3YmZiYzlmOGFjNGIzNDAgbGVnYWN5LXRydW5rCisxMjE0NCA0ZTE1ZDE3NWVlZDBjOWJiNDkxZjM1YjY5NTdlODI3Zjg1ZmI3OTJkIGxlZ2FjeS10cnVuaworMTIxNDUgNDc0MmM1MjlkOWM4ZTFjOWQ2NjE3Y2UyOWNlMzcyMWNlZGFlNGMxZSBsZWdhY3ktdHJ1bmsKKzEyMTQ2IGM0ZWFlZjg5YTRhNzVkOTgwYWNkNTI1Zjg3OGFmZmNjYTM2OGE0NDQgbGVnYWN5LXRydW5rCisxMjE0NyBjNjZiMGQzOWE3MzZiZTYwZTdlZWJmNWU2YTY5ZmQ3MDg5YjM1M2ZhIGxlZ2FjeS10cnVuaworMTIxNDggNDcwMTJjMTNlZmU0N2I0ZGViYjk3MDgxMjk4YWVjNTdlY2NjOTZlYyBsZWdhY3ktdHJ1bmsKKzEyMTQ5IGI0Y2RhMzk0MGFjM2ZjOTdmNGY2YWViYTgxMzUxZGU3NWMwZDhkNTUgbGVnYWN5LXRydW5rCisxMjE1MCBiNzdkMzczOTkzNDM3YTk5Y2RlODlkMGQ3YzdiZWNiMGQ2ZjhkZGYyIGxlZ2FjeS10cnVuaworMTIxNTEgZTdlZTE4ODRmZDU0OTFjZmU4ZWRlNTljYmUyZGNlMDFhMjBkNTdkNyBsZWdhY3ktdHJ1bmsKKzEyMTUyIDY5NDFmNDNkM2JiODA5YzcwNjEwMjRhOWYzZjBkNjQ0YmNiYjIxNzAgbGVnYWN5LXRydW5rCisxMjE1MyA5MTczNTdjMTI1NTIyNmM5Zjg4YmRlZGI1NWUyZDZkY2U0M2E1MWM2IGxlZ2FjeS10cnVuaworMTIxNTQgYmZjZTczZDM1NzZjMzIwOGNkYzEyYzA4NjViODAxMTM5Y2U4YWU2YyBsZWdhY3ktdHJ1bmsKKzEyMTU1IGFkNDk3Y2I1ZDJkYzJmOTg5YTc0YzEzMWZmMTJiOTg5ODBlZThlNjcgbGVnYWN5LXRydW5rCisxMjE1NiA3ZGRlNDUwMWY1M2FkYTM0ZDExZTYyMDIxZGVkMjU3YWVhODkxYjliIGxlZ2FjeS10cnVuaworMTIxNTcgMjMyMzdiY2I3NzRiZjJlZjYzZjllMmM3YzNjYTdlZjI2OWQ5MmNmNiBsZWdhY3ktdHJ1bmsKKzEyMTU4IDA0YjBhMGYyOWY2NWYzMGFhNTVkYzRjMDU1NTI3M2FmMDY3N2IwM2EgbGVnYWN5LXRydW5rCisxMjE1OSBhMjA2YzYxYTg5NTA5ZTVkNDFjMWQ3MWE1ZjcwMWMxYzA4ZmM0ZjFhIGxlZ2FjeS10cnVuaworMTIxNjAgNDgwOGE4YjU3YWYzYWJiZTc3NzRhMDViYmJjMGYxNDVjOTE4OTc1ZCBsZWdhY3ktdHJ1bmsKKzEyMTYxIDliYTdmNTBiODI1YWQwODUxYzM3Mzg2MDBiYWJlYjAzNTFlM2EyZmQgbGVnYWN5LXRydW5rCisxMjE2MiA0NDQ5NzAyYTA5NmE0ZmQ3NDdjNjkyOGE1OTY5NjgxNGRlNzQ4MTBkIGxlZ2FjeS10cnVuaworMTIxNjMgNGVlZTA2MWRhYzQ0Y2JjYjQ1ZjUzM2E1MTFiOWI4ZjY0YmM4N2Y4OCBsZWdhY3ktdHJ1bmsKKzEyMTY0IGUxMWQ3NTAwNWE1YTk2NjJjZjJlNDc3YjM1NTEzNzkwYWU1OTdjMDIgbGVnYWN5LXRydW5rCisxMjE2NSA5ZGEwMWU1OGEwYjU1YmE5OGYzNjRiMjE4MWYyOGJkYjNmNGNlMDBlIGxlZ2FjeS10cnVuaworMTIxNjYgOTE0ZjgzZTdmYTBhMDI4OTlhMzdmMjQ4NjBiNjJhYjE3YWQxMThkMCBsZWdhY3ktdHJ1bmsKKzEyMTY3IDQwODU4YWIyMzU2ODIxMzlkYTQ3OWMxZTM3NTQ3MjgxZjhkYTQ0YTcgbGVnYWN5LXRydW5rCisxMjE2OCAyNzJlY2NjNTczZTI0MDZhZmViOWVlZmNiYmRiZTZhMDBkMTJmZTVjIGxlZ2FjeS10cnVuaworMTIxNjkgMjE0ZjMwNDRkMThjMTBjZjcxZTljMDBlM2NmMWI2ZjMxZjFlZGFmNyBsZWdhY3ktdHJ1bmsKKzEyMTcwIDFkNDBiYzI1NzAzYTU3YzlkNGFlYmM3ZTgxZTBlOWJmOTgyNGM4MTcgbGVnYWN5LXRydW5rCisxMjE3MSBiNDg0M2EwN2Q1NzkxYzEzMDM2YjJlZjBjMmYwMjkyYmRiNjYwZmNhIGxlZ2FjeS10cnVuaworMTIxNzIgOTkxNmZjODViMjhhNTlmYjI0Zjc4YTgyOTg0MmRiYzBlNWE1NDc0NiBsZWdhY3ktdHJ1bmsKKzEyMTczIDUzNzY2ZmVkOWY4Y2I4YWVhMDIyNDM3YTMzNzkxNTE0NzNkZjBmOWIgbGVnYWN5LXRydW5rCisxMjE3NCBiNzgwNDlmZWZjZWIyOTdjNjY3MjBiMTk2ZjNiNzgzYTZlNzAwM2FkIGxlZ2FjeS10cnVuaworMTIxNzUgNWQ0ZjEzNDcxNTBlZGVhNDY1MmZhNzNkNTAyMWYwZDAwNjdhMzNhMiBsZWdhY3ktdHJ1bmsKKzEyMTc2IDAwZmVkNzY5ODBiYzdmNzI3ZWNhMjRiOTdkMzgyZTY1YjA4ODkyOWUgbGVnYWN5LXRydW5rCisxMjE3NyBmMzlhMTlhMTIyOWFmNmUxZTVlNjZmNTFlMzMwYzk1Y2ZlNjlkNmM5IGxlZ2FjeS10cnVuaworMTIxNzggODc3ZDIzYmQ1YmRjMmQzMDRmYTIxYzM0NWM5OWJkY2UxZmJmMzExZSBsZWdhY3ktdHJ1bmsKKzEyMTc5IDhiNjFlMTI3M2I0YmRhMzRhN2ZiODhiMmE3OTI3MWJiOGI4NTM1OWUgbGVnYWN5LXRydW5rCisxMjE4MCA2MTU0ZDJlNjg2MDMyODY2OWI0ZjY0NzY1MGM2MWExMzUyMzhhOWRjIGxlZ2FjeS10cnVuaworMTIxODEgNTM0NWZkMTNkZTNkOWQ3YTRmZjU5OTY2Nzg2MGE4OTUwZjZkNDlkMiBsZWdhY3ktdHJ1bmsKKzEyMTgyIDVhNmJkNDNlMmQ1YTc1NTQ0MGE4Y2NmMDc4Njc0NjhkOTNmMTFiMDYgbGVnYWN5LXRydW5rCisxMjE4MyAxMDk1NWMzOWMwZTdiNmJlNjhkNjRjZThiMWVmOTExNDY1NDcwZGVhIGxlZ2FjeS10cnVuaworMTIxODQgOTNjYjFhYTI0ZjdkMTA2OTczOGJmZjkzZWU4NThkNmNiNDM4MmQ0MiBsZWdhY3ktdHJ1bmsKKzEyMTg1IGIwYjgxNWVlZWQyYzQ5MWE4ZTU4ZWEwOWJkZmMyYjIxMTJlMzk2N2QgbGVnYWN5LXRydW5rCisxMjE4NiBiODgzZWYzYjJkMTk2YjJkOWM4ZTBiNzg3MDRjOTUxMzIwOWQyMzFjIGxlZ2FjeS10cnVuaworMTIxODcgZWNkMTE1NDJlYWJlNTE5MzkwMzlkNzhjMjRiMjAzN2ExYTAzMjcxOSBsZWdhY3ktdHJ1bmsKKzEyMTg4IDBhMDQzNGVmZWJjZmViY2E5MGYwNTYwNTYyYmI4NjQ3NTgzNjk5MjUgbGVnYWN5LXRydW5rCisxMjE4OSAzMTQ4OTc5OWM4YzYwYTMwOTI1NTU4YmE0OWExNmM2NzgzMjM3ZWFlIGxlZ2FjeS10cnVuaworMTIxOTAgOGQzYzJhODA4MzRjYzEwYmYxMjE4N2Y1MDFjNWRmM2FiYjExZWQ3OCBsZWdhY3ktdHJ1bmsKKzEyMTkxIDUzODljNmUzMGU1NGIxMzA3NTBmMGY4MWY2OTMzMDM5NGMzYjVhYzEgbGVnYWN5LXRydW5rCisxMjE5MiAyNjM2NTVjNmI2NTY3MTgwZDdiOGUzYWExODRjZTBkY2YxNjA5NzkxIGxlZ2FjeS10cnVuaworMTIxOTMgNjM3MzI1MjlmNmRmN2U5NzVmNzE0N2Q4YWZiNWQ0YmE3MWJiMWY0MCBsZWdhY3ktdHJ1bmsKKzEyMTk0IDdhNGVlZWQ1NGIyNDUxNGUwYjExMDZlZWQ2MGZkMWZlNTdiNTFhMGIgbGVnYWN5LXRydW5rCisxMjE5NSAyMmYzYThkODAzYTUxN2VjMmQ5NjFlNTEyMzE4OTdjYzU4OGY3NjI5IGxlZ2FjeS10cnVuaworMTIxOTYgOTNjNjZhYzZhZjE4OTZkMjZhZDRhOWM2ZGQ5MDIyYzAyZGEwODdmYiBsZWdhY3ktdHJ1bmsKKzEyMTk3IGY3ZTg2Njg0Y2Q0YzJkMzY0MmZhNGI3OWU0MDcxMTY3YWNkYTFiMzkgbGVnYWN5LXRydW5rCisxMjE5OCA5NzNjMjFkZjJkNjAxYjlkZjE3ZjE5YjEyMjBmNWZkMWY1OTAxOTEyIGxlZ2FjeS10cnVuaworMTIxOTkgOTcwMWM1MGM2OTQ2MDczOGE0NzgzMDZhMGM4NmFjMWJkNTcyZWM3NCBsZWdhY3ktdHJ1bmsKKzEyMjAwIDU1NTkwMjUxY2Y1MjczYjY1YjEzY2JkZTU5Y2ZkNjZmN2E5OTA2NDEgbGVnYWN5LXRydW5rCisxMjIwMSA2YmE3YmQ1NjNlM2JmN2ZhNmFlZmJjN2FmY2ZmNjlhNjM3YTEwNWU1IGxlZ2FjeS10cnVuaworMTIyMDIgYjVkMWExNjI1Y2Q1ZGI0ZmZkYzBkMmZhY2FjZjgyODYzMTBjNzM3NSBsZWdhY3ktdHJ1bmsKKzEyMjAzIDQzOTQyMWNkYTg5ZWE3NmQ2NzNjMDBjZmZiY2NmNGY0OTNlOGMwMzQgbGVnYWN5LXRydW5rCisxMjIwNCBjMjJkYzMwMWIzNmE4MWUyYWRkYTczNDRhNTRjYTA0Y2Q1YTJjOGZjIGxlZ2FjeS10cnVuaworMTIyMDUgMTI3Nzk0NjA1NGU4YzZlMTYyYWVjZjFlYTMxNDY0ZGFkZWZjYjRlZSBsZWdhY3ktdHJ1bmsKKzEyMjA2IGUwYTRmYjBhYmI3NjlkZGUxODI1MjNhMzExZGMzOTZhZGZjNzExY2MgbGVnYWN5LXRydW5rCisxMjIwNyBmM2Y2MDIzZmViNzg4ZDkxYTgxOTU3NjE0OTU4ZDEzYzY3ZDFjNzczIGxlZ2FjeS10cnVuaworMTIyMDggZDdkZDcxZDBkMTgzMWE2OGYxM2FiMmFjOWNkMDE3MGJiZmY4Zjg5MyBsZWdhY3ktdHJ1bmsKKzEyMjA5IGU3OGJkY2NkMjI0ZmZjOTFlZGU4NWY4N2Y4ZGZjYjQ0OTRkNzM3ODAgbGVnYWN5LXRydW5rCisxMjIxMCAyYmNkZTM0NzQ2ZDFjZjBiZDQxYzQ5NjZmNzFiMTMzYzliNDAxNGFiIGxlZ2FjeS10cnVuaworMTIyMTEgYTNjOWNlMjk4NWRlZTk1MWM4YjIwZWI4ODRlNjk2Y2FiY2U1ZjQzMiBsZWdhY3ktdHJ1bmsKKzEyMjExIGYwOGM3YTJhNTZmODA3NDFmNWYxOTJmZDBlYmUwYjA5NjdhMjAzY2YgbGVnYWN5LXRydW5rCisxMjIxMyBjZjY1NGVkNThmZjE2YTA4ZGFkYWI4YjQ4NjY3NmY4YWIyN2IzZjgzIGxlZ2FjeS10cnVuaworMTIyMTQgZDFkYjdmNmFiNzUzYzlmMzQ1MjlkODQ5N2Q2MGU0MDIzOGRmNjQ2ZCBsZWdhY3ktdHJ1bmsKKzEyMjE1IDhiMjViYTI0OTQ0NjUyYTYwYmYyMjcyN2YwYmJmYzVlYTNiODYyOGYgbGVnYWN5LXRydW5rCisxMjIxNiAyYTg5NTQzZGQzY2FiMGU4NGM4ZGY2ZDhlNjA3MWRjMDFlODE1ZTc0IGxlZ2FjeS10cnVuaworMTIyMTcgNDgyZTYzZDc5YzlkZmVlNGE5ZWQzOTEzMzk0ZWQ3YTE2ODU1MjVjYyBsZWdhY3ktdHJ1bmsKKzEyMjE4IDM1MTlkZTQ0MGY4OTJjMmM3ZTE1OTY1YTNjZDVlNzc5YTI5NWY1M2EgbGVnYWN5LXRydW5rCisxMjIxOSAyNGNhNjQxMzQ1OTRhZDdmMzM2Y2VmMWM3MWY0ZWExYThmYWRiMDZlIGxlZ2FjeS10cnVuaworMTIyMjAgNzJiNzYxYjk0OGU3ZTlhYjc5MWNjMDNlODljMmVlNzc4ZGVmMWM4MiBsZWdhY3ktdHJ1bmsKKzEyMjIxIDM5NTVmNzg3ZTlhMTFjMTRiYzQ0YWU2ZTUzNDI5YTBlOThjMzU1MGIgbGVnYWN5LXRydW5rCisxMjIyMiAwNGU0NGM2MDc2ZThmMmYyZjM1MDkyMjk0NWY4NmRmMTdjZjY5NmFlIGxlZ2FjeS10cnVuaworMTIyMjMgNTZmMzhiZjNhZjlmMmQ2MzM4MjQwOWI2YjE2MmU5ZDYwMWI0YzIzMiBsZWdhY3ktdHJ1bmsKKzEyMjI0IDRiMWI5NDMyYjI2YmZkOGY2NzllZGI3NDEzZTgyYTllM2JiMzA3ZjYgbGVnYWN5LXRydW5rCisxMjIyNSA0MzM2YTE5MDUwNWI2NmUyNjMyY2RhNWExZWI0N2YzMzlkZGVjYWQ0IGxlZ2FjeS10cnVuaworMTIyMjYgZWFhYjhmZWI3ZmMwNzY0ZDg5Y2MyYzQ1ZjAzMWUwYzVjOGVkNGU3NyBsZWdhY3ktdHJ1bmsKKzEyMjI3IDJjY2YwNDVmNWEyMTFmMTAxNDAxNmMyMDgzZDljNjE2YWE3YmRiOTIgbGVnYWN5LXRydW5rCisxMjIyOCAyNjQ2ODkzY2I0OTkzNzVhYWQwMGNmOWVhNTY4ZjdiMWFmMGEwZTk5IGxlZ2FjeS10cnVuaworMTIyMjkgNmYxY2E5ZGM5NWRhYjE3NTFkNDViNmVkN2RjNTY2NDQ4MDY0YTkwNyBsZWdhY3ktdHJ1bmsKKzEyMjMwIDcyZjUwNjM2ZGZlYTFlNDU4M2RjY2UzN2I1ZGZmZDY5NDdjNTQ4MTggbGVnYWN5LXRydW5rCisxMjIzMSAxMGFiMmM1ZmJkOGVlN2MwZDdmOWFlMDE5NWM5ZjYwZThhNmE2N2VkIGxlZ2FjeS10cnVuaworMTIyMzIgODVkNWI1ZWNlZDllYTk5ODYzMzkwZTVhNTNmMTgyZTNkMDE4NjBjOSBsZWdhY3ktdHJ1bmsKKzEyMjMzIDQ3ZDJlNGY3MTE0NzhkZDVmMGUwNzU3ZmM0NDViN2Q0ZmVhNWUwNmUgbGVnYWN5LXRydW5rCisxMjIzNCAyZTk5MzFmNDRlZjRmNzg2MmNiMDg2NDM1YmVjMjI2YWIzZDdkNDBmIGxlZ2FjeS10cnVuaworMTIyMzUgNDdiYmQwYmE4ZThhMDU5ZjA5YTZhMTE2YjNkMWFiM2YxYmNhN2RhYSBsZWdhY3ktdHJ1bmsKKzEyMjM2IDM0MTVkMTNmOGJjOGMwM2QwOWFkNzM1NzlkOGIzZThjM2JlMWM5NTggbGVnYWN5LXRydW5rCisxMjIzNyA5ZmNjOTAyZDc0MGZhYWVhOTRmOTI1MDNkM2M3ODk5YWUwMGU5MDE0IGxlZ2FjeS10cnVuaworMTIyMzggZTZiNjYyYTliNzA5NjExODliNzRjNjdlNDk2NzIzMTM3OTE1Y2Y2MyBsZWdhY3ktdHJ1bmsKKzEyMjM5IGUwNmVmODdiMzRjYzRhODg1ODY0ZWQ3NjA2MGZjMThjM2E0YWM2OWEgbGVnYWN5LXRydW5rCisxMjI0MCAwNWZiNGQ5NjZjNzNmZmFiMGRhYWI2MDg5NzE5Njk3MmJjZWEwMzM2IGxlZ2FjeS10cnVuaworMTIyNDEgMjUwN2UxNWVjYTZiOTBjNmJlZjJhMmVkOTViMWQ5ZWUxYzQ2ZTk3YSBsZWdhY3ktdHJ1bmsKKzEyMjQyIDA5OTVhN2E2Mzc4MmJiZDBhNGZmMDY3NTkwMTJiOGJiZjFlYzQ0ZjEgbGVnYWN5LXRydW5rCisxMjI0MyA4NWFiMjg2NDQyMDE0MTQxMTM2YjY1MDI0MzE2YzkwMzhkMDg4YjNlIGxlZ2FjeS10cnVuaworMTIyNDQgNmZjNThkNzlkYWM1ZGM1ZDE2ZTJlMDhkOGI2MzEyMThmNDdlOWQxOCBsZWdhY3ktdHJ1bmsKKzEyMjQ1IDkzNDJjNjBlYWFjMDc1YWQyMzgwMzdkYjgzNjE4MzY5ZTc0OGQ4NTIgbGVnYWN5LXRydW5rCisxMjI0NiBkNjMyOGQ3NGI1ODBlZmQ5MDQ1Mjc2ZWQ2MDY0ZDM4ZjEwNGM0MTU3IGxlZ2FjeS10cnVuaworMTIyNDcgZmNlNmMxMWM4MGZhMWRlOWFiNDFkMmQ0OWUxNDk4MTBjMmQ0MDcwZSBsZWdhY3ktdHJ1bmsKKzEyMjQ4IDk2N2FjNWU4OTA3YWNhOTRjNDYyMDZkNTU3ZjE2MDQzMjAzZDM2MDQgbGVnYWN5LXRydW5rCisxMjI0OSA3Y2ViOTJiYTg2Zjc2NDllYzE1NWJkMjE3OGM4NjkxMjcxYjE2NTM5IGxlZ2FjeS10cnVuaworMTIyNTAgMDhhOTM3Mzg2MGU4MzZiMWZlNmM5YjRlMzRjZDcxMjBhZWMyMjJmOSBsZWdhY3ktdHJ1bmsKKzEyMjUxIGU0NWRmNmY0NTYwNGI5NTMwY2M3NDZkMmVjYzkwOTQxMzVkNzcyZmIgbGVnYWN5LXRydW5rCisxMjI1MiA4OGFmOGE0Mjg1N2QzMWYyYjZjMjBiMDUzZjk2NGQ4Y2U0YmRlNmExIGxlZ2FjeS10cnVuaworMTIyNTMgNzY2M2NmOTViZDBlYTg2MjY4MDI1ZGVhNmQ0ZTY2ZWZlNmI1NjM5ZSBsZWdhY3ktdHJ1bmsKKzEyMjU0IDMwZjM2MzBiNzdjYTk5NDVjZjM0MzVmZDk1OTI0ZjMzNjU0MjE1ODIgbGVnYWN5LXRydW5rCisxMjI1NSA1ODZkMWIwODYxNGUyNjE3ZGMzMGY4ZmM1OGFhYjU5MmYxNzg3ZTViIGxlZ2FjeS10cnVuaworMTIyNTYgYzcwOGQ3MGIxMzllMjE1ZTZjZmIwZGU2YWFlZmJkYjI1NWU0OWI4MSBsZWdhY3ktdHJ1bmsKKzEyMjU3IGNkMmUwNWRhZTRjMjk1ZmE0ZmFjN2JhMTVjMDU3YjZlZTRlMDQ5MDYgbGVnYWN5LXRydW5rCisxMjI1OCA5ZTZmNWJhYzE1YWMyNGEzYTE3MGRhNTRlZGIwNjM1N2M5MWNhMzI1IGxlZ2FjeS10cnVuaworMTIyNTkgM2U3YzQzNDUzZTVlOTk5YzcxMTE1YmZjMmRkNDExYWM1Mzg3ZmExYyBsZWdhY3ktdHJ1bmsKKzEyMjYwIGNmYjkwZGIzOTk1OGIyNGEzZGQ2OGE0YjVhNTk5MzMwODY1OWU1ZjUgbGVnYWN5LXRydW5rCisxMjI2MSBlZDUyM2VhMDczZGJhMDQ5ZjhhZmNmYzEwMTQ0NGE2YzE5YzczOGI5IGxlZ2FjeS10cnVuaworMTIyNjIgMTZjOWE3MTQ4ODBmYzAwZjA4YjYyNTdmZTcxNGRkZmQxZTA5MjdjYyBsZWdhY3ktdHJ1bmsKKzEyMjYzIGY3NTUyZGQyMzZiMGFkNjI3YmZmYjE4NjEzMTNjYzI3ZTVjZGZiM2QgbGVnYWN5LXRydW5rCisxMjI2NCA2MzFkOTZkM2NmNjYwZmVmMzAwYjdkMTA5MTRjMmIyN2QwYWM0NTdiIGxlZ2FjeS10cnVuaworMTIyNjUgMGQ4ODczMzQwODQ2MjI1NmVhNjUyMjQwZWM0ZmQzMjllNmExZmQ1MSBsZWdhY3ktdHJ1bmsKKzEyMjY2IDYxZGRlN2ViZmE5NTE2ODhhODRiMDU5MDBhMDU2MjNiZjk2YzNiZmQgbGVnYWN5LXRydW5rCisxMjI2NyA0YTA3ZDY5ODY0ZjU3NTEyMjIxZjI3NWZiYjFhNjFkYzE2OWVkMTU5IGxlZ2FjeS10cnVuaworMTIyNjggZTE1MDhmNzJjNjEwYmFkMjEwNWJkZmI4MzM4OWQ2YTBhNmFiYzljOCBsZWdhY3ktdHJ1bmsKKzEyMjY5IDg1NDdkMjc3YTIyZjk2MGM1ZGJjOThiYjY2MjljYTRjZjMxOTFiNGMgbGVnYWN5LXRydW5rCisxMjI3MCBlYWY5M2Q1YmI0NmNmNjViOTljZTg2NDJlNmM1MjQzZjJhOTExYjM0IGxlZ2FjeS10cnVuaworMTIyNzEgODgxMzYyN2FhYzQ2NmEwMWZkMTk2YzVhNTlhNjNkMWFjZjljZTQwYSBsZWdhY3ktdHJ1bmsKKzEyMjcyIGUyMDhiMjc0ZWI4MDhjNmJkM2UxNDI1ZTUyODRmNTc2OGYzZDYzNjMgbGVnYWN5LXRydW5rCisxMjI3MyA3NzBiNDBmZWQ1ZjdhYjEwNmM2NTFhN2JhZTBiYTkzOWNjYjkzMWZlIGxlZ2FjeS10cnVuaworMTIyNzQgYjExNmFmYjgxNzMyOGVjMmZkZDBkMDgzOGFkYmU2NGZjM2UwODE1MSBsZWdhY3ktdHJ1bmsKKzEyMjc1IDc3MGQ4OTRlMjBiZDhkMjNjOWU3M2Y1ZjA0ZWZkM2U0OWQ1N2ZjZjcgbGVnYWN5LXRydW5rCisxMjI3NiA4YjA4NjM0OWE0ODhjYjFhMWJlYWQ2NGZmN2M5MGU0YjAzMjhkMzk3IGxlZ2FjeS10cnVuaworMTIyNzcgZGE5NDQ2NzhiMDBlMGI4ZjMzMWJjOWNjYzM1MTEyY2EzNTQ5MmU2MSBsZWdhY3ktdHJ1bmsKKzEyMjc4IGM0NjkyMDQ2YjQ4MjAxYmZmOGNlYzMyMzI5YWNhMzMyZDhkYmRiMDMgbGVnYWN5LXRydW5rCisxMjI3OSA0YjE4ZjhlYWExNmIyYmY4YmIzODQ3NzAxMTRhZjQxY2NmMGNjMjNhIGxlZ2FjeS10cnVuaworMTIyODAgYzkxY2U0OWI0MDc1MDg5YWQxZGM3ZGUyYmUxZGMyODNlYzliM2U5ZiBsZWdhY3ktdHJ1bmsKKzEyMjgxIDY2ODBmYWNiNGQ1YjVlMjdiOWRlOTk5NmJjN2Q4ZGE5Y2I5YTUzMjAgbGVnYWN5LXRydW5rCisxMjI4MiBiZTI0YjViOTBkZWNkNjNkYTVjMDVhYjhjNTNkYmRlYzNlNGY4ZWJmIGxlZ2FjeS10cnVuaworMTIyODMgOGRiYTA4MjIzZGViYTE2NGYwNGE5OGZmNWZiYTg1ZTA4YjRiMTI1ZSBsZWdhY3ktdHJ1bmsKKzEyMjg0IGZhY2I0NTdiNGQzMmVkNmUyMjRmNzc3ODM2YTQzNTEwODE3MzY0MTkgbGVnYWN5LXRydW5rCisxMjI4NSA0MGY3MjNhYzI2ZTgyODA3Mzc0NzMzYjRjYjMxMjVmOTIwZDJiOGM3IGxlZ2FjeS10cnVuaworMTIyODYgMWJlYWY5MTc5MTI1YjI0YWY5OWIxMjQzYTkyN2VjYTBmNzgzN2NmNyBsZWdhY3ktdHJ1bmsKKzEyMjg3IGVjYjkxMmJlNDMxOGE2M2M1MjNlNDA5Zjc5YzllYmJmZDIxOTUzNWIgbGVnYWN5LXRydW5rCisxMjI4OCAwOGRmYmVlMGEzMmExMzk3ZmIxYjFlYTZkNWVkMzEyOTViNGIxYzI3IGxlZ2FjeS10cnVuaworMTIyODkgN2NkY2RmODY4NmIzYzkxYjdkMDNmOWU4NjEzNzVkNjA1NmZlMzRjMCBsZWdhY3ktdHJ1bmsKKzEyMjkwIDllNjExNjZlY2RkODFkNWIwODA5NzA1NzAwY2IxYmZmMzdjODY1MzUgbGVnYWN5LXRydW5rCisxMjI5MSBmZTcwMTk2OWJjMmNmNmI3OTE1ZDU5YWNhNzU0ZDIyNDRhNDk0NmJhIGxlZ2FjeS10cnVuaworMTIyOTIgNzM3ZDA1YTliYjVlOGE5YWY5NGNkODU2OWVjZDAyYjY5NzFiZTA0ZCBsZWdhY3ktdHJ1bmsKKzEyMjkzIDIwOWVlZDZhMmVmNjU4ZWQzOGNiZTJjMjFhZjZhZjBmNTFjNjI4MGUgbGVnYWN5LXRydW5rCisxMjI5NCA4MzZmOTQwOGM5NTY1YWE1OWM4MDE4ZDUyOWRmNWNjMjg5M2QzY2I1IGxlZ2FjeS10cnVuaworMTIyOTUgN2VmNWExNTIwYWU1M2QwMTE1ZWZjN2M4Y2RhMjQyYzIxZmQ2NjJiMSBsZWdhY3ktdHJ1bmsKKzEyMjk2IGRiMjk4MmZiNjNjMDRkNWQ5NDMzOTNmNGViZGJmODc2ZjJiYjRlNmIgbGVnYWN5LXRydW5rCisxMjI5NyA5Y2ZjNTNlNTk5NmUwYWEwYzhjNWE0NjlmYjg5ZjFhMGM2MDU5MzZlIGxlZ2FjeS10cnVuaworMTIyOTggOWQwMmFmYTAyMmM1MmZkNzRlOTQ0YTU3M2E3NDliMmZmZWViYmI3YSBsZWdhY3ktdHJ1bmsKKzEyMjk5IGMxZWFiMWRjNzUzNjNhMzQxMTkxYmQ1NjQ4NDEwMDYyZjQ3OTYzOWQgbGVnYWN5LXRydW5rCisxMjMwMCA5MjhjOTNkMmMxMDcxZGI5ZDBjNmRkZWJiMzA3NWQ1ZTExZWRjNjI4IGxlZ2FjeS10cnVuaworMTIzMDEgNTY2OGY4YTNhNDMwNGZiYzEwYTQ4ZTNkMTEyNjgxODIxYzVmY2U0ZCBsZWdhY3ktdHJ1bmsKKzEyMzAyIDgxYjNlNmNhNGEyOWFmYmIxMzhiNjI0YzcxOWEzZjE4MzliZGMxOGEgbGVnYWN5LXRydW5rCisxMjMwMyAxMDI3MDExNWNkNGI4MDVjZmYzN2UxMzY1MjM1OWM1YmEwOTYwOTc4IGxlZ2FjeS10cnVuaworMTIzMDQgOGQ2Zjg0YzU5NDhjMjg1MWEwMDBkZjUzMGY2NzNkNzVhZTFkYTllOSBsZWdhY3ktdHJ1bmsKKzEyMzA1IGE5YWFjMDAyZTg0MzViYTJiNjZhOWFkZDZiYjAzN2IyZjgwYWVjYmUgbGVnYWN5LXRydW5rCisxMjMwNiA0MTViOTg0MTE3MDdmMTIyMmZmMmFjMzI2MDJjNDk4ODA1MjdhYmU5IGxlZ2FjeS10cnVuaworMTIzMDcgMGJmYWZmMTFjNTczOTk3NmJmYWE0NzEyOTUyMDJjNTM2NDgzYjNlMSBsZWdhY3ktdHJ1bmsKKzEyMzA4IDkzZDcwMzA4YmUxNzFiYjU4YTQ4YTlkOWZkM2ZhY2Y1MzNjMDAzNWYgbGVnYWN5LXRydW5rCisxMjMwOSBmOTgxYzlkMzZjOGFmODU2NTM1NjU0OWZlMGFmYjNjZDc1OTI2YjA4IGxlZ2FjeS10cnVuaworMTIzMTAgMWVhZWJhZWFhMjJiOWEyYTE2MDk0YjdmYjViODRkNTBlYWQxMDVkMSBsZWdhY3ktdHJ1bmsKKzEyMzExIDMwZWU4NjE3MjE2OGEzMWMxM2I0NGQzZGM4ODkzZmU5NDQ0NDhkYjYgbGVnYWN5LXRydW5rCisxMjMxMiA4NzAxMDlhNDRlMGViZTE4YTBiYjZiN2VhNmY1MDA4ZGYyNzY1YzBjIGxlZ2FjeS10cnVuaworMTIzMTMgNGQwNDQwMDU2MTFlNDBmZWMzNjhhMzljYTM5YjAwNDEzZGVhOTVkMiBsZWdhY3ktdHJ1bmsKKzEyMzE0IDQwMTBlNWQyNDNkNjZiOGIyMWVhYjUxNDczMDMzYWNkYjc2ZjdhYjIgbGVnYWN5LXRydW5rCisxMjMxNSAxNDIwZjg0MDA5MjQ5Yjg2ZDExMzY4ZGU0ZTRjYmJkMjUzZDg3OGNlIGxlZ2FjeS10cnVuaworMTIzMTYgNjYzNzM3MjdmYWM4NWIyODBiZTViZWQ1ZGNlZWU5MzMyNjliOWJjYSBsZWdhY3ktdHJ1bmsKKzEyMzE3IGEzYjI1MjVjOTM3MDQwNDI5OTEzOTY4MWJkNTNmZWQwNTczOGM1NjAgbGVnYWN5LXRydW5rCisxMjMxOCBiZDFjZTQxMjBlNmY5NTQ2ZGVkZjg1Y2E5N2U4ZWNmMWE1YWMyMzg4IGxlZ2FjeS10cnVuaworMTIzMTkgNDU3Y2I4NjhjMjVlNDVhNDFiN2FkMmYzZWM0MzNmMDA4NTRkNDBlNiBsZWdhY3ktdHJ1bmsKKzEyMzIxIDI4ZDNhOWZjYjU3N2RmYzg1NjJmMTg0OWI0ZGRjNGU0YjYxODljYTUgbGVnYWN5LXRydW5rCisxMjMyMiAxN2U0ZDgxOTQ5YjlmMWVjMDM5NGM2MTA2YTdmOTI3NDllYjFjNDIyIGxlZ2FjeS10cnVuaworMTIzMjMgYmE2M2M2ZjYwMjViNGYyMzViMTBhMDIxYTc0ODZiZjkyZGY5YWVkYSBsZWdhY3ktdHJ1bmsKKzEyMzI0IDRlOTUwNjVhNzJhMWE2ZjJkNzNjOThlOTYwZjA0MmY1MmU4MzYwODUgbGVnYWN5LXRydW5rCisxMjMyNSA1YmRmOTE2NTEzNzcyNmViNzdiZWI2ZTQzYjM5MTlkMmQwOTFkODJiIGxlZ2FjeS10cnVuaworMTIzMjYgY2UwYzE3Y2M3N2NlNTBmZTgzNzE2YmU3YzFlNTg0YjI2YjQ4YjhhZCBsZWdhY3ktdHJ1bmsKKzEyMzI3IGVmOTdiNGY2ZDE4NzVmYzZlYjUwMGMzNTEzOGM1MjEzZjlmMjEyODQgbGVnYWN5LXRydW5rCisxMjMyOCA4MDE1MGY5YzhjNDFmY2U5ZGEyZmMxM2IzZjA3MTk5MDkwZmYzYmY3IGxlZ2FjeS10cnVuaworMTIzMjkgMTM5OWJlZjdhZjYxMzU1ZDZlZWJlZTM2YTYxNDg3NDBjY2IzZDkzMCBsZWdhY3ktdHJ1bmsKKzEyMzMwIGFiNTU2OThiZmYxY2E5YThhMGIxMTgwYmE2Mzk5MmQ4YzlhOTJjZGIgbGVnYWN5LXRydW5rCisxMjMzMSAxZGFiYzczYjdiMGJjYzgyYmRjZGM2YTk3YTExNTYxYTYwMmE1MzY0IGxlZ2FjeS10cnVuaworMTIzMzIgNjFjYWZhOTdlYjc3YWYwNjY5YjcyYjdmN2VmZjJlYTJlOTBkYTNkZSBsZWdhY3ktdHJ1bmsKKzEyMzMzIGU1Y2IxNTdmZjA5MzFmZjA1ZTM2YmYzZTliYzRlYmM0YWYzYzM5MjUgbGVnYWN5LXRydW5rCisxMjMzNCA4MjQzOWQ5OTg3YjJjZjY3YTkwMWM3MWZlYmM3YmU1ZmY2YTQ3ZjE5IGxlZ2FjeS10cnVuaworMTIzMzUgZGQzYzdmYzBhMzRkNGI5Y2ZmNDhmY2M1OWU2NDFkMGExOGJiZjFhMCBsZWdhY3ktdHJ1bmsKKzEyMzM2IGIwODIxYjBiY2NmMGZkNWU0NGQzNmVmMjgwZTFjMGIwODk1NjUyODUgbGVnYWN5LXRydW5rCisxMjMzNyBmNzRkZTc3ZjA1MTBlZjNhYTllMzYxZDBiOTc1YjlkNjE4MmJiYTYwIGxlZ2FjeS10cnVuaworMTIzMzggMTNkMGY2MjhjNTcyMjkwZjJjNGQ4ODExNDIwNTQ2YWE2ODdhYTE2ZSBsZWdhY3ktdHJ1bmsKKzEyMzM5IGI4ZmVkYjIyNmYwOWMxMDg0YmFiNmViYWZjYzAyMzYwMmRmODRlNWIgbGVnYWN5LXRydW5rCisxMjM0MCBhYWIwZjM0NjNhZjA2YmMwNWM3YjYxNWNmMTU2MDNhMzZhNzNiNTAyIGxlZ2FjeS10cnVuaworMTIzNDEgZGRmM2Q1NTIyMGI5MGQ4MjE1NWNiNTI0OWFkNzAzMmNiZWM0NjE5NCBsZWdhY3ktdHJ1bmsKKzEyMzQyIDg2Y2I3N2ZiMTllODhhZGY4ZDMwNmQ3MGU5MmE5ZWIyYjdlZTRhOTYgbGVnYWN5LXRydW5rCisxMjM0MyBmMzRiYjQ3YWFmYWNhY2FkNDMxN2I2NDhhYjkzMWQzN2FmNzY3NzhhIGxlZ2FjeS10cnVuaworMTIzNDQgNDk2NzAwMzc0ZmM0MzhjYjM0NzBmOTQwZjczODc2MjQ5OWNhMTZlMSBsZWdhY3ktdHJ1bmsKKzEyMzQ1IDlhMjkzZTc3YzU1NDZjZDdhMTlmMWRiMGQyNTFhZmYzNjViYTk5OGIgbGVnYWN5LXRydW5rCisxMjM0NiBkNjRjZTI5ODAxY2IxNzA5YWQwNmJhOGZmZDNlMGU1YzNmYzQzY2RjIGxlZ2FjeS10cnVuaworMTIzNDcgNWJhYzU2ZmZjY2E4ZjgwMTRiMTVjOTMzMjQzYmU1ZGU1NTVhYTJjNyBsZWdhY3ktdHJ1bmsKKzEyMzQ4IGUxOWNkOGVjMjBhMmU4ZmU3M2M2YTYwNTAyODQ0ZmNmODJiODNlNmIgbGVnYWN5LXRydW5rCisxMjM0OSA1ZTllZjlkODU3NWJiY2I1NzU0OWM3ZmNhMDUzMjRlN2Q3NjUwY2U4IGxlZ2FjeS10cnVuaworMTIzNTAgZWM4MGFkMjVjYTg2MTMyOGFmNTA2ODM5ZTk4NThmMWI2MTFhZDQ1MyBsZWdhY3ktdHJ1bmsKKzEyMzUxIDZjNmVlM2JiM2ZjYzIyZGNkZWIwNDc4MzYxMzY2MjIxNjNmNmIzZjcgbGVnYWN5LXRydW5rCisxMjM1MiAwMTQ3N2IxYTc0ZjljMWM1Njc0MTk4ZGI5ZGRkNTQ4ODI5M2U4ODAxIGxlZ2FjeS10cnVuaworMTIzNTMgYjUzMGJjNjJlM2I5OTFiODEzZDQwZmNiN2RmYTMxMTliMjA5ZDRjMyBsZWdhY3ktdHJ1bmsKKzEyMzU0IGU2Y2Q2ODNhMjJmODE4OTgxN2IwNzQwMTllMzYzYzNmYTE0ZDdjZDQgbGVnYWN5LXRydW5rCisxMjM1NSAzMGMxYzQwY2Q4MGZkMzY5ZmM1M2ZmODMwYjc0MmMyMjYzN2U4ZGI1IGxlZ2FjeS10cnVuaworMTIzNTYgMWU4ZmY4YTg3OTJlZjdjOThjYzI3MTdiNDZmM2Y5OWY1ZWJhODNjYyBsZWdhY3ktdHJ1bmsKKzEyMzU3IGNkYjc3MmFhYmJhMjVkNTAzYmZlOTg1NzQwNDdhODVjOGFhMGNiYTkgbGVnYWN5LXRydW5rCisxMjM1OSA2MDVlYWY4Y2M2ZDBlY2VkYTIxNzY4MjZjZjA4NDQ0YzM3MGZjNjJjIGxlZ2FjeS10cnVuaworMTIzNjAgYTE1ODVmNjkyNTVkYTAwZDBlMWU0NTliNmRhZmE3MDE4ZjQ4MzU1MyBsZWdhY3ktdHJ1bmsKKzEyMzYxIDUxZTg2OGVmM2IzMWU1YTE5OGRiZjJmNGJjMGY1Zjk1NDIyMzk4ZDIgbGVnYWN5LXRydW5rCisxMjM2MiBiOTNjMzkwZmQyNWQ1ZjE0ZGZlYjc1NDYzOWY5ODEzM2ZlNzdmN2ZlIGxlZ2FjeS10cnVuaworMTIzNjMgYTdkMWNmOTVkYWRjNTllNjQ5NDc5MThiYTI5YTQ0Y2VhOGVmZDdiNSBsZWdhY3ktdHJ1bmsKKzEyMzY0IDhhNjUzNmMxYTBhNDYyNjgwNjEyMzVhMWY0NDAzNjdjYWVjN2NiOWEgbGVnYWN5LXRydW5rCisxMjM2NSA2MGY0MjU4Njg2NmVhZjI1MzVmNWIyNGMxMDI5MGM4NWE4NTJiNTRlIGxlZ2FjeS10cnVuaworMTIzNjYgMGFhZWE0ODkwMmU0M2IyNzYwNzM0ODIxMThkNTkxOWY4MWE0MWE3OSBsZWdhY3ktdHJ1bmsKKzEyMzY3IGY3N2I5NDFhMGY5MzZkZTNiZDAxZmY3MzcxMzMzNjVhN2M3ZGZjZDIgbGVnYWN5LXRydW5rCisxMjM2OSBjOTVmZmY4ZjE4MGE4ZDdjYzg2ZTFjZmRlZTljZTNlMDg5MzNkYjgyIGxlZ2FjeS10cnVuaworMTIzNzAgYTU4ZjM2MzUyYzRmM2ZlZGNjMzE0YzcyZjBiYjNiNzIwOWQ0NjJhYSBsZWdhY3ktdHJ1bmsKKzEyMzcxIDMzYzRiYTc3N2EzYTdkMWNhMjIyNDMzNTI1MDg0OWUyZWY3MDE0MDQgbGVnYWN5LXRydW5rCisxMjM3MiBlZTM2ZTFmMTMwY2NiYjc5ZjdlYjkzZWY3ZWE1MmU0OTMzNTZhMTY0IGxlZ2FjeS10cnVuaworMTIzNzMgZTNhNzlmOTNkMWQzZTU4ZDkxNDI5ZTliMThhZDkwN2Y5ZWRmN2E1NCBsZWdhY3ktdHJ1bmsKKzEyMzc0IGYzNTJlZWE2ODM3MzQ5MzVjNmE3ZDQ2NzEyNTU2ZmIxNTJkNGYwYWMgbGVnYWN5LXRydW5rCisxMjM3NSA5ZGE0MjQ5MzVmNzg2NzM4Njg3MThlYjI2NzRjMmY3ZGQxZGE0OGZmIGxlZ2FjeS10cnVuaworMTIzNzYgMmFiMTg5NTg1ZDIzODY1OGM5M2Q2MzNkNGRjN2Q2ZWUyZjdjM2JiMSBsZWdhY3ktdHJ1bmsKKzEyMzc3IDc3ODYyOTc4NDdhY2EwYTYwYzNhODhiNjJjN2E0MjNhYjVhMWEwM2QgbGVnYWN5LXRydW5rCisxMjM3OCBmNzhmZDliNjcyODRhZGM0Y2FlZjRlMDU0OGQzMWY3ODdhODA5MWE1IGxlZ2FjeS10cnVuaworMTIzNzkgMWFjMzQ4NWY5ZTNlMzY3NmIyZmU4Y2Q4NzY1MzFmZGVkODgzOThmZSBsZWdhY3ktdHJ1bmsKKzEyMzgwIGUxNGZlZWU0YzQ1NmJjODZlM2UyOWJhNDhmNjExMGQwMTgwZGNkZDEgbGVnYWN5LXRydW5rCisxMjM4MSBiMGVkYzg5MmZjNzgyZTkwYjM3Yzg5Mzc2YjUzZjBkM2YzMDNhNDdiIGxlZ2FjeS10cnVuaworMTIzODIgNjU5MzdmZjcxOGRlZmM1ZGFlMjljNzYyZDdhMjI5NmZjY2QzOTI4NiBsZWdhY3ktdHJ1bmsKKzEyMzgzIGRlNDFlOGQ4MjExZGQzNWRiNmJmYTIzOTEwNGM3YzlhZDc1ZGQ4ODcgbGVnYWN5LXRydW5rCisxMjM4NCAzNTg5YzBlNTZlZjI1MTY2MWQzMjUwMjdjZTYwODhlN2E4YmE2Yjg5IGxlZ2FjeS10cnVuaworMTIzODUgNzE5NWVjMjk2YjNkOTQ0MDM0MmZiOGE3ODg4MTRkYmUxMGJlMjFkMCBsZWdhY3ktdHJ1bmsKKzEyMzg2IDE0ZGNiYjM0YjlkZDNhZTMxZjM3NDBiNTE1ZGZjZWEzZGZlYzNiYzkgbGVnYWN5LXRydW5rCisxMjM4NyAwMzBlZTUwYmQ4ZDFiNDg1ODA4ODY0MzJjNWFhMjU1OGQzNzBlY2UzIGxlZ2FjeS10cnVuaworMTIzODggZmFlNmQyNGI4OTdiY2U2NGFiZDk2Nzk4NjZjZWI0NDBiMzIzZDYyNiBsZWdhY3ktdHJ1bmsKKzEyMzg5IGFlOTA4ZWY5MWNmMGNjNTY5OGYxYThhYTE3M2RlODNlMDZmM2Y0MDkgbGVnYWN5LXRydW5rCisxMjM5MCBkZGI4M2IyNTIyNmViNzAzYmYwMDAwY2MyYjMyOTRjMGVhZDRhMDAyIGxlZ2FjeS10cnVuaworMTIzOTEgOWYxM2Q3MzgwYmY4OTgzMzIxOTRiZWYyMjJlYTdjNDI5M2JiMzJhMSBsZWdhY3ktdHJ1bmsKKzEyMzkyIDI5MWMyZDBhOTY4M2M0YzhlNGI4OTdhMTkzZWI3Y2VkZDcyMjU3MTAgbGVnYWN5LXRydW5rCisxMjM5MyA1YmQ2ZGNmMTZkNDFhYmZhYjAyOTdiMWNkMTNlMDVjODJiYWRlM2E0IGxlZ2FjeS10cnVuaworMTIzOTQgYjNmYjg0MTBmNmFlOTkyNWI5YjcyZjNjMDZiZWNkM2UwMGUwY2U0YyBsZWdhY3ktdHJ1bmsKKzEyMzk1IDdlMmU1M2U3NDhjODU4NWJiZWE5YWRmMzU1N2MxMzRjYTI4NGI4NGUgbGVnYWN5LXRydW5rCisxMjM5NiA0ZDg2YjVhNWJmOWUyNGE4OTIxM2IzMGNmZDkzYzkzMjA3MjI4ZjA5IGxlZ2FjeS10cnVuaworMTIzOTcgYTJkMzM3YjJlMjFiYTRiZjRkZTQxMzc1NjExOTYzOGJhZWU0N2YyZSBsZWdhY3ktdHJ1bmsKKzEyMzk4IGY4OGQxNGFkZWQ3NzA0MGFmZGVlYmNlZWZkMjllZGZjZDUzZWI1MzQgbGVnYWN5LXRydW5rCisxMjM5OSA3YmRlZjRiZWRkNWNlNjI4ODEyMTVhYWNhYzYzMDJiYTkwMDk1YjlmIGxlZ2FjeS10cnVuaworMTI0MDAgOTJhZTExNTU3M2FmMjliZWYwNDZmNjY5MTBjZWRlNTRmMTg1MmIyNSBsZWdhY3ktdHJ1bmsKKzEyNDAxIDVhZDFhMzVmNTQwYzY1OTBiZTIyZTkwMDhhOTExMDY1MTEzODEzYTkgbGVnYWN5LXRydW5rCisxMjQwMiBiYWM5NjU1NTJmN2U2YzRkZjk0ZTM2MjE0ODFkZGEyYjQ5ZDNhNmU1IGxlZ2FjeS10cnVuaworMTI0MDMgNjk1MTEzYzY1MGJiNTk2MmJhMjQ3ZWUzYjFmYTM0MDIzNzkzYjI0NiBsZWdhY3ktdHJ1bmsKKzEyNDA0IDdhYTUxNTMyMDA2YTllMzM4Y2QxNjk5ZWQ2ZmJkYTk4OTVkNWJhMjUgbGVnYWN5LXRydW5rCisxMjQwNSAxYzQ2OTcwODBkMDcxOWFkMGVkNGQ0Zjg0N2RmNWI2YmU1MjdjZjE4IGxlZ2FjeS10cnVuaworMTI0MDYgZDk1YWZlODdkYjRkY2FiNDI0MGMyM2RlNGMyODc2ZjMzMDFlYzM5MyBsZWdhY3ktdHJ1bmsKKzEyNDA3IDZjZjAxZWFiMDVhMzJhYWJjMDllZDIzY2YxMTlmOTgyYjJkNTZhZjUgbGVnYWN5LXRydW5rCisxMjQwOCA3ODA1OWNmMDY3ZGVmYmEwZWVlMGE1YmJlMTA5MmM2MjA0NmFhNDViIGxlZ2FjeS10cnVuaworMTI0MDkgMTE0MTRmMDIzYWQwYTEzMzMxMjRiNmM1OTViYmIxYWE5YjMyMDM3MSBsZWdhY3ktdHJ1bmsKKzEyNDEwIGE4YTA3MTk5NmE3M2Q5N2ZiMzA4YWE0N2I4MWMwZDk0NTkyMmM5ZjMgbGVnYWN5LXRydW5rCisxMjQxMSAzN2MzYWZmYjA1YmEyM2VmNjg5MDA3ZGQ5ZTY5OTkwZTBiOTBjODlhIGxlZ2FjeS10cnVuaworMTI0MTIgMThjMDZkMzljZTJjMmE4N2MxNWNkOTUyMDk5N2RjNmU0NGY4MmMyYyBsZWdhY3ktdHJ1bmsKKzEyNDEzIDIwZDk4Y2EzZDMyZmFiYWMwZmNmM2IzYjRmOGE2NzdhMTI1ZmYwMjkgbGVnYWN5LXRydW5rCisxMjQxNCA5MDM0NGMyNjFmMjQ1MGY1N2ZiMGYwYWUwMmZiMDIwZTBkOGRjMjcxIGxlZ2FjeS10cnVuaworMTI0MTUgYjc0ZjU1ZTdkMjA4ZjcwNzU0MGY0MjM2NWJmYjVmZGE4ZjIyY2IzYiBsZWdhY3ktdHJ1bmsKKzEyNDE2IDllMjU1NWVkYzk0ZjQ4ODdlMDM2NWFjMGMxMjcyNTgwYWNmYjYzMTkgbGVnYWN5LXRydW5rCisxMjQxNyAyNDg2MTZkM2VkMTJjZGM5ZTFjNWJmZWNmMzhlMmY3MmQ5NmY4NWM0IGxlZ2FjeS10cnVuaworMTI0MTggOWE3ZTc4ZThiZGZhMjkyMjM3MTY0NTExOWE4YjMwMjY4ODcyOWQ4MCBsZWdhY3ktdHJ1bmsKKzEyNDE5IDI4Njg1NDc3MWIxMTkxMWY4YTg1MjcxM2JkMDgzODdjMTM0N2MwYzYgbGVnYWN5LXRydW5rCisxMjQyMCAzN2FhODRkMjc4YzU1OTk4NGYzYmY2NTIxMGJhNjlmMmNjOTVmNjhjIGxlZ2FjeS10cnVuaworMTI0MjEgYTc4MTAwMzcwNTE1Y2QxM2ZhYmU0YzM1NmU0ZjBmODlhMTdmZmRjMiBsZWdhY3ktdHJ1bmsKKzEyNDIyIDYzMTI0OGM5YzYyZTE2MjFmZjk1ZDQzNjI4OWNiNDZjODdkZTVlZDkgbGVnYWN5LXRydW5rCisxMjQyMyAxYTc5OWQxZDRiNWE2ZTE5YzM4ZWQxNWRkZmQzODgxM2ZlZTYxMjkwIGxlZ2FjeS10cnVuaworMTI0MjQgNmMxMDc3Mjg0MDAxZDYxMWQ5MDU1NDYwMWQyNjYzNjM4ZjJhMmNkOSBsZWdhY3ktdHJ1bmsKKzEyNDI1IDc2YmRhZDIzZmNkYjhhNzVlZWIyNmZkMjJjYTg2N2M1ZTI5NDU5MWIgbGVnYWN5LXRydW5rCisxMjQyNiA1YjE3N2Q1MWJhMjc1ODEzYTkxMjMyY2ZiZjJiZjhhMWIyMTk5ZGIwIGxlZ2FjeS10cnVuaworMTI0MjcgYTU4ZDhlNDRjZTMyZmQ0Njc0MDUwNWRiN2JiMjhiNGM5OWQwYWEwZSBsZWdhY3ktdHJ1bmsKKzEyNDI4IDA0NTU0MDI2NzdhOGFkZjFjNzg0MzExNmZhOTc5ZmRhNzE0NDg1MDAgbGVnYWN5LXRydW5rCisxMjQyOSAzNWY1Njg0ODA3NjRhZmZiMzk2ZGE1MDY1YTY5OWFjOWYwMjA3MjcxIGxlZ2FjeS10cnVuaworMTI0MzAgNGJkZmU1ZDgwYTZmNWI5MjNiNWRiZmFlODU3Mjg5N2QxOThhZGY1YiBsZWdhY3ktdHJ1bmsKKzEyNDMxIDVmNGQzMmIxYTY1ODNmZmJmM2NkZjE5ODI5ZjM3YmQwOWZiZjJjYWEgbGVnYWN5LXRydW5rCisxMjQzMiBmODY3ZTEzZGE1NzRjZTdiZGVhMDQyNGFhZGY2NGE3MjM4ZDg3Y2MxIGxlZ2FjeS10cnVuaworMTI0MzMgMDBmYzE4YWM2YWViOGU3ZjMyNDc2MTRhZDZiZWFiMjFjYTlkYTg5MiBsZWdhY3ktdHJ1bmsKKzEyNDM0IDFkZTNkYmIyNmMyZmEyZWFhZTJmMzcxZGZlMTE5NzEyNmNjY2ViNTYgbGVnYWN5LXRydW5rCisxMjQzNSAxODlmMWVjNWM2OGYzZGQ2N2UyZGE0OGIyNjhlMzZmNmZjZWFhN2JlIGxlZ2FjeS10cnVuaworMTI0MzYgMTVlOTc2MWU1NGRlMWQ1N2FjNDg2NTk1NTM5MjVkYmFiYTkzY2QzNSBsZWdhY3ktdHJ1bmsKKzEyNDM3IGFkNzQ5ZmIwYmQ0YmQ0NWJhOTQ4OTcxYTI1NGEwMzY3YTRjNWNkMjMgbGVnYWN5LXRydW5rCisxMjQzOCBhNjRhNjE1YmI3NTYzMzBmN2I5ZDVhM2JmMGIwNDVmNzcxODk5ZTExIGxlZ2FjeS10cnVuaworMTI0MzkgYzU5MmMxNzcxZGZiNWU2M2ZlN2U5ZjRhOWRhMjUwYjU3NGIxMGQwNiBsZWdhY3ktdHJ1bmsKKzEyNDQwIDMzNzg0M2M2YTE4MzY5ZDU3NTBiZWI1MDkwNjBjNGUzNzAxMzU5ZDggbGVnYWN5LXRydW5rCisxMjQ0MSBmYWYzNTFlMzE1NzFkODhhZTc2OTAwOWY5ZjcwYTFhOWY2NWUzZDdkIGxlZ2FjeS10cnVuaworMTI0NDIgOTNiOWVhZmUxZjFkZTgyYTFhMjA3MWY4ODkwZGQ1YTgyMjY5ZjViNSBsZWdhY3ktdHJ1bmsKKzEyNDQzIDA2YzdmZmY1Mjc0YTdiZmQzYzljNjZjODkxMjAxMjMzMTY2MjgyNDEgbGVnYWN5LXRydW5rCisxMjQ0NCA2MjYzMjdhNzhhOGVlMzZhOWE0ZWIzNThmZDQ4MDY0N2U1NzA3ZjY4IGxlZ2FjeS10cnVuaworMTI0NDUgNGRhMWZhZjI5N2FiOGZhMzc0NjQ2MWFlNTU1MzA2Mjk0ZWZiZThjNSBsZWdhY3ktdHJ1bmsKKzEyNDQ2IDM5NmEzOGVhOWI4NGZhY2ViMjZhZDUzN2Q2MDY3NmI2ZDcxZDFmMTkgbGVnYWN5LXRydW5rCisxMjQ0NyBjMzljNGJjNDVkMzkxZTJkZjFkYjhhMWNmNTE5ZGQzOWRmZWNjM2U1IGxlZ2FjeS10cnVuaworMTI0NDggYzg3NjYyZWYzZjFkYjU4YTIzNDNjYTQzOTY1YzlkMDhhZTBiYWUxNyBsZWdhY3ktdHJ1bmsKKzEyNDQ5IDdjOTk2ZjM0MDQ3MjBhMjM3MGMyMzgzYzVhYjRlN2UzZjM1ODEzZWYgbGVnYWN5LXRydW5rCisxMjQ1MCA3NTM5ODU5ZTk4NWExNGE0YWM3YTQ0YjBjYzcxN2ZlZTI3Y2I1OWQ4IGxlZ2FjeS10cnVuaworMTI0NTEgOThlMzczNDczNzhiMDA2Y2U2ZmNjNDkyMDhlMjI0YWNjOGMzYzMxMSBsZWdhY3ktdHJ1bmsKKzEyNDUyIGFlODNmNjFkM2NkN2U3MTk5ZmQ1MWEzNDRiNWRhMTk4ZWFlMWYwZTAgbGVnYWN5LXRydW5rCisxMjQ1MyA0MDQ2M2Q1MTRmM2VhNGJhNDhhMmMyNjg0NTUzMDFlMWEwZWVlYmQ0IGxlZ2FjeS10cnVuaworMTI0NTQgZTVkMGRmODI0YmYzODI3NDhjMWUwZGJjNGZjMzZhMDU4NjY1ZDE5ZCBsZWdhY3ktdHJ1bmsKKzEyNDU1IGNhMjc0NTI3MTExMTY0MDFjMDIxNTI4MGFlNGNkOWMwOTc5NzcxN2IgbGVnYWN5LXRydW5rCisxMjQ1NiBjNDA0YTZiMGNkYjFlMjdhNTdhMDBjMGUzNGU2ZjUxZDFjMTVkYTA0IGxlZ2FjeS10cnVuaworMTI0NTcgOWE4NDJiODFkOWMzZTk0ZGU3MWE0MWZkZWRhMTUxZTA1Y2FmZTNiYiBsZWdhY3ktdHJ1bmsKKzEyNDU4IDcxNmRjMWQxZGJmZjg5MDFjMjU5MTAxYTg4YWYwYmI5MmVhYWNiNGQgbGVnYWN5LXRydW5rCisxMjQ1OSA1N2JjYzZlYzYzOGY2ZWI5Y2VkOTEyMjI4YjU5MTQyZWI5OWZmNjU2IGxlZ2FjeS10cnVuaworMTI0NjAgMjc1MGUxZGU2ODI5YWQxNzliZTI0N2YxY2IwOWFjMTc4M2NlYjE0MSBsZWdhY3ktdHJ1bmsKKzEyNDYxIDU3MmUxMzFhZTM2OTBmYjVkMjA0NzkwNDFiOGRjZTg0YzY4ODI4ODkgbGVnYWN5LXRydW5rCisxMjQ2MiA5MmEyNWQ1MWZmMjZjZTI1MTVkNDBlMWY4ZWRlZjliZGY3YzkyYzEwIGxlZ2FjeS10cnVuaworMTI0NjMgODc5ZTM0OTFiNjYxYjhlNWE1YmViYTg2MjNhN2U1NjkxOWRlNDI2YSBsZWdhY3ktdHJ1bmsKKzEyNDY0IDg5NDk2MGZhOTBiYzc1NTliN2E1ZTc5MzJlYWYzNThhZWY0ZmU0ODMgbGVnYWN5LXRydW5rCisxMjQ2NSAwZDI3OTFjNzIwNmRhZmJhYzlhZThhZDljNTY4N2VjMWZhMzk4N2NlIGxlZ2FjeS10cnVuaworMTI0NjYgZDQ0Y2I4N2U1MDBkYmJjN2ExODk1YjEzMDhjYTJkYmE2Y2VmY2RiYiBsZWdhY3ktdHJ1bmsKKzEyNDY3IGMxMDkxZTgyZTVhYWIwNmRkNGQyNTQ3MmExOWI1NTg3MjdmYWYzYzQgbGVnYWN5LXRydW5rCisxMjQ2OCAwN2QzMzM0ODVhNWUwOGIyNGY3MDc0OWQzMjNjNWFjYWNhNDU0NjcxIGxlZ2FjeS10cnVuaworMTI0NjkgNDQxNDZjMDZlN2VkM2M3ODdlYjAxMWNlNDc4MjdhYmMwMTI4ODVlZCBsZWdhY3ktdHJ1bmsKKzEyNDcwIDQ4NTUwMmM0MmQ4OWE1ZDY4ZTRmZmE5MGIwYmM1Nzg4ZWEzZWYyY2MgbGVnYWN5LXRydW5rCisxMjQ3MSBlZTg0ZjQ0NWU2ZDdhMWNmOGY4ZTY5YzU4OGVkYWI5ZTAxNjVjZmMzIGxlZ2FjeS10cnVuaworMTI0NzIgOGVmYTM3YTc3MGM2NDdiNjU4NWU2ZmRhMzM1OTAxNTRjMmY3Y2ZmMyBsZWdhY3ktdHJ1bmsKKzEyNDczIDAzOTBhZjZhY2Y3ZmE5ODk1Y2RiZmQ4NDY0MWFhYjZjYWYwNjgwZmEgbGVnYWN5LXRydW5rCisxMjQ3NCAxOWZkYWYzNjdkNDViNmRkMjQxZjExZDllZGExMTFjZTk2YTY3Y2MxIGxlZ2FjeS10cnVuaworMTI0NzUgNGVjM2IzY2IwN2M4YTFlYTAyNTJkNzE1NTZlMWJmYmU3YzJlZTM2MSBsZWdhY3ktdHJ1bmsKKzEyNDc2IDYyZmEwM2EzMzNhYWZlZGNlNzJjOGVlOWUzN2I5YzBmNmEyMzNlNTEgbGVnYWN5LXRydW5rCisxMjQ3NyBmMWE1MjBkMjYzMWE4ZWNkYmQyYzI0OWVjMzA3ZjFkMTZjYWVmMTA2IGxlZ2FjeS10cnVuaworMTI0NzggNGUyZWZmOTY4Y2Y1YzY3MWQxMmE1Y2ZlNDVkYzljYzgxNDM2Y2NhZCBsZWdhY3ktdHJ1bmsKKzEyNDc5IGY4ZmM5MWIwMTdhMTQzMTVhZmJkZTVjZjE0NjQzNjkzNDBmYzBlMzggbGVnYWN5LXRydW5rCisxMjQ4MCBmNmIyZjIwZGE1ODE2N2RjODY2NjE2ZTZiNzIzMDI4MTNkMTNhZTc5IGxlZ2FjeS10cnVuaworMTI0ODEgNDg5ZWY3ZjY0MDQxMGIyY2U3ZjNlOThmOGM5ZWM2NTAwYWQyOTNlOCBsZWdhY3ktdHJ1bmsKKzEyNDgyIGRjYmU3MmEwYjM5MjZiOTQyZTZhY2E4YTJhNWNkMmFhMjdkMjg4ODQgbGVnYWN5LXRydW5rCisxMjQ4MyA3NTkxMjFlM2Q5YjZkNjcyOTVkODhjMTdkYWEwOWMxZGU3NTI4ZGViIGxlZ2FjeS10cnVuaworMTI0ODQgYWRmYWNiY2JkOTM2MWM5MjllMmRmZTQ0NjM1OTI2NWNiYTkxM2Q3MyBsZWdhY3ktdHJ1bmsKKzEyNDg1IGM4NjZmMTY2MzMxYmI2NjU1ZjdmNzRhNzZiM2JmZGQ0MWE5OTgxYjMgbGVnYWN5LXRydW5rCisxMjQ4NiA0YWYzOGE0NWQyOWM4YzkyMGE4NmJkZTliZDYxZjAzMWUzNWY4ZDZjIGxlZ2FjeS10cnVuaworMTI0ODcgYTZjYjg4YjU4MTY1MjNmMzkzNjE1MjFiMmZmZmM5YTQ2ZTlhOGNlOCBsZWdhY3ktdHJ1bmsKKzEyNDg4IGQ0YjhkZGQ5YTRmZDBmZDdmMjA0MjJhNjdlYzNkMWNiOGUzYWQ0MjcgbGVnYWN5LXRydW5rCisxMjQ4OSBiN2JjYzJjZGExYjNiMjYxODJmMjhhZWQ5MDA1YjExMzc4M2Y3NzY0IGxlZ2FjeS10cnVuaworMTI0OTAgY2ZiY2FiODE1MGRhOTE3NDMwNDdiYTJhZWE2YTdhNTcxM2JlMjUyZCBsZWdhY3ktdHJ1bmsKKzEyNDkxIDc4ZmYyMDNlYWQyNDU0ZDRmMGY2NmRjYjRjNmZlYWQyNTc3ZDQ2YzQgbGVnYWN5LXRydW5rCisxMjQ5MiAxMjRlZjY5NGMyODQ0M2U0MjA2ZjE0ODg5YzRhZDIxZmY2Mzk1Zjc3IGxlZ2FjeS10cnVuaworMTI0OTMgZGRiYmVkOGNiODMwZWU0OWRhYzg3YzUyZWE5ZjcxNmEwOWFmMTI0MyBsZWdhY3ktdHJ1bmsKKzEyNDk0IDAwOWM5YmE5ZjY1OGIyNTljN2RjY2RlNDBkODZkNmFiMTI4NmQ5ODIgbGVnYWN5LXRydW5rCisxMjQ5NSAxNmJkMGZkZTA5YWVjYjcyMzY3ZjU1Y2U3ZTY4ZDUyMTA2NDI4YWU3IGxlZ2FjeS10cnVuaworMTI0OTYgYTc4ZDMwNTZhYjYxMDRiMzUwMmYyZDM1OWQ0Y2MyMzk0NGQ1MGFjYyBsZWdhY3ktdHJ1bmsKKzEyNDk3IGJkZGU4ZmJhZWE1OGM3ZGNlMmY2ZWI2YTU3ZGY3M2FkYjVhYTc4YmIgbGVnYWN5LXRydW5rCisxMjQ5OCBlZWQwY2FjZjRjNjRkOGZmMWVjYTM3ZjE1ZjM1ZWU3ZjNjMjQ0MmYyIGxlZ2FjeS10cnVuaworMTI0OTkgOGM2ZTcwNWI2Yjk3MWQ0MjEyNmJhMzAwNjE4MjA2MjgxM2Y1ZWY3NyBsZWdhY3ktdHJ1bmsKKzEyNTAwIGExYmNmM2YyOWY2NmRmNWQ0NjMzMjg2ODQxYmM1OTRmYTc1YzZhMjggbGVnYWN5LXRydW5rCisxMjUwMSBjMGRhZmZlNDAwMzQ2ODlmY2QyMjJmOGUyYzdhNTQ0MmE5MTcyNWJmIGxlZ2FjeS10cnVuaworMTI1MDIgNDQxNTAwMDE5ZDUwYWNjMjVjNWZlYjRkMTUxNmZkZWY0NzgzMGRlZCBsZWdhY3ktdHJ1bmsKKzEyNTAzIDJiMjM4ZDE5YWU4OGE3Y2JiMzczYzY1MDU3NTRjMGZkMWEyMGU3MzEgbGVnYWN5LXRydW5rCisxMjUwNCA0YWI1ZTlmODM5ZDk3NDZkOWYyZmY5NTMwODUxZmM3YWVlOTFiNmRmIGxlZ2FjeS10cnVuaworMTI1MDUgMGE1NmU1MDgyNjgwYjlmMjU0MTBjMTY5YzNiYTcwN2E1ZWZhNTY5MSBsZWdhY3ktdHJ1bmsKKzEyNTA2IDNhNDIwNzE3YmM4YTQyZTk1NzUwMWYwNTAwMGIzYjE5MjlmN2ZmYTMgbGVnYWN5LXRydW5rCisxMjUwNyA3N2E5NDUzMTUyOWVjMjEyYTc0ZThiYTg3NDUyZTY3OTVmNTVlYjdiIGxlZ2FjeS10cnVuaworMTI1MDggZmUwYjUyMmU0NmNiM2M4NjEzMzQ5M2I0MmQzNjVkYzkyODYwZTkyYyBsZWdhY3ktdHJ1bmsKKzEyNTA5IGVmNWNmMWE0ZTUyYTljNDg1NDBjOWZkMzljMzkyZWQ3NzUzNmQwYjIgbGVnYWN5LXRydW5rCisxMjUxMCA1NWY4YzcwMWM5ZGFkMTFhNTQxYzcwYjAwMzYxMDcxZDRkOTRiNWFhIGxlZ2FjeS10cnVuaworMTI1MTEgYWI2ZGQ3MGYyNTA3NmY2ODkyNGE4OTljZDBmZjc0OGI5MjM5YzBhMSBsZWdhY3ktdHJ1bmsKKzEyNTEyIDQ2NzFhZTEwMzViMzg5NTk5MDk4MzdhYmM2ZDhlMzY5NDU5ZjQ3MmQgbGVnYWN5LXRydW5rCisxMjUxMyA0MmIyMjhkNzhiZWFkMTJkMzNlN2QwMzBjNGIzNjg2Mzc5ZThjMjEyIGxlZ2FjeS10cnVuaworMTI1MTQgNGEyNWRkODVkZjYyMmE1Yzg2MGRiOTg3M2Q3ODY1NDY3NjVjMzBhYiBsZWdhY3ktdHJ1bmsKKzEyNTE1IDk4ZmE1MzViOWFmMWVmNjBhZjFmZThlNzlhMGRjODhjYTMwNGYwY2UgbGVnYWN5LXRydW5rCisxMjUxNiA2MzdlYjk2MWMxMWJmNTI2YjhjMzQwMmVlNzk3MzViOTFjNTJlMTM4IGxlZ2FjeS10cnVuaworMTI1MTcgMmEwY2Y5Njc3MTkzOTgzMzRjZmRlZTJlZTY2NzgwM2M2NGM0YjY1NiBsZWdhY3ktdHJ1bmsKKzEyNTE4IGM2OTEzYzczMjZmMDk2YzAyMzA0MmYxNTUwMzUwMzNkODAzYjY2NmQgbGVnYWN5LXRydW5rCisxMjUxOSBmMjQ1N2Q2OTdhMmEyOGUxM2U5MzliOTY1ZWZkMjA0Nzk5ZTQ3NTZmIGxlZ2FjeS10cnVuaworMTI1MjAgZDc5NzlmNGVkMmI2MTYzNTY1ZWViMjg0NzczNGJmMjQ3M2VlMmU2ZCBsZWdhY3ktdHJ1bmsKKzEyNTIxIDgzMjc2NjhjZmQxNzE0ZDEyZGRmZDg5OTYxMTVkOTIwODEwNTNjMzUgbGVnYWN5LXRydW5rCisxMjUyMiA5NDEyNWExMzQzZDgxOGRkZGJhMDI4NmQ4Y2Y3ODc2NTA2YjQxM2Y0IGxlZ2FjeS10cnVuaworMTI1MjMgMjE4M2Y1MDZhMDhlMWM4YmU2NmI1ZWY2YzA5OTNmNmQ0MjMyMTllOSBsZWdhY3ktdHJ1bmsKKzEyNTI0IDI4MTk0ZjUxZjdmZTU0YzQxY2Y3YmQwNzc1MjlmYzUyMDNkNWYwMjEgbGVnYWN5LXRydW5rCisxMjUyNSA4OWRjZWE2M2M0NmJlYTAyYjVjMzU4MDI0N2QzM2Y0YTk1YzVmYWFlIGxlZ2FjeS10cnVuaworMTI1MjYgY2FmMmM2NWE2YmNmMjVmOTY1MGMzNTMwMWNlOGUwNjAyOTRiZTEzOCBsZWdhY3ktdHJ1bmsKKzEyNTI3IGY1NzJhZTM2ZDViYWM5YjQ1NmEzOWQ3YWRhN2ViY2RiMDU2ZTY4OTcgbGVnYWN5LXRydW5rCisxMjUyOCA2MjA2ODVlNGM0NzdlMjA3YTllMTg3OTQ3ZjU2MmUzMzE0N2NiYzA3IGxlZ2FjeS10cnVuaworMTI1MjkgMDgwYmQ0NmYzODQ4Nzk5Y2RmNTAxMGU5N2Q4MjRiMjQ2YjJjMDE5ZSBsZWdhY3ktdHJ1bmsKKzEyNTMwIDE2N2FkZjMxNzg2ZDczNDYyYTdjYzZmYWU3YjQ2YzY1ZjBlNjc4MGUgbGVnYWN5LXRydW5rCisxMjUzMSAwMzRiNDJiYTY4YTY5OTNhOGExZjNhZTRmMTU3Njc1ZjAwYWRiOWEzIGxlZ2FjeS10cnVuaworMTI1MzIgNzRkMGQyZjNjYjFkYmE4ZmMxYTgxNjBjYTc4MDVlMjljNmIzOTNiOSBsZWdhY3ktdHJ1bmsKKzEyNTMzIGRlNTY4ZWEwZDA0MGViNjMwZGVkYzU5MmU2NTY4N2E2ODVhNTMwNmIgbGVnYWN5LXRydW5rCisxMjUzNCAyMGU4YTMzNDRhMGZmNjBjZDhjNGM2ZDEzNTVmZTljYTc5Nzg1NjJhIGxlZ2FjeS10cnVuaworMTI1MzUgMTA1MWVmOTk0MzFlNWZlZGNhZTFjMDRlNzllOTE1ZWE5NzMwMzk4MyBsZWdhY3ktdHJ1bmsKKzEyNTM2IGM5YjA3MDA3NGM4NWQzYmNmMmIzMTEwZDJlYzQ1OWJiMzE3MmM4MDUgbGVnYWN5LXRydW5rCisxMjUzNyBiNzJhOGM0OGYyZDAwNDNmM2ZmMDU4MDU4MzdiYTIwNjU4NzBlYzNmIGxlZ2FjeS10cnVuaworMTI1MzggZjVkZjIyZmRhZGE4ODU5YjgwMWQ2MGFmNWFkZTk4ZTAyMTY3NWVmYyBsZWdhY3ktdHJ1bmsKKzEyNTM5IGYxMzJlY2ZkYjI4NTU3NzdmNjA0MmNkNTFhNWFkNDdhZDc1NWZlM2YgbGVnYWN5LXRydW5rCisxMjU0MCBiYTAzZTY4ZGYwZmQ0ZjA5MGRkNzA2ZTFkODYzODQ0YjI4YWQ1ZGIwIGxlZ2FjeS10cnVuaworMTI1NDEgNmRmZjc2OTZlMzU4MTEyZTJhNTA4ZGVmMTVlNTJhMzdiNGNhNWU2MiBsZWdhY3ktdHJ1bmsKKzEyNTQyIDNhZDJiMmUzMWY1MzA4ZWEzZmIyMjNkNGI1ZTM2M2U2YTM0M2IxMjYgbGVnYWN5LXRydW5rCisxMjU0MyAzMjY1MmY2OTk2ZTM3NDNlMThjNmRiNjRmODRhYmQ5YjdkOWViYjJlIGxlZ2FjeS10cnVuaworMTI1NDQgZjJjMDcyYjA1NDY2NTRkNjIxNGEwM2I0ODU0OGQ1MDhiMDI2ZmM3MiBsZWdhY3ktdHJ1bmsKKzEyNTQ1IDBkYzUwZDQzZmI4NDYzNGRkOTc4ZWQzYjllODcxMGU3ZDJmMTA1OTIgbGVnYWN5LXRydW5rCisxMjU0NiA4Y2Y2NmIxZDQxNTVlY2QxZTkwYzM5MTkxZjNiZTliNDk1NGVhY2YxIGxlZ2FjeS10cnVuaworMTI1NDcgZWU5YThmZTBjZmNhNWYxMTBkNzhiODlmZjQ4MzY4NjUxMGVkM2E2ZSBsZWdhY3ktdHJ1bmsKKzEyNTQ4IGMwNzM5ZjY0MWJkMWQ1ODFhMjI5MjIyMDI1ZTRlOWJlZmM3YWZiN2IgbGVnYWN5LXRydW5rCisxMjU0OSBhMGIwNjg5MWQyODYwMDY2Y2VjOTdmNDQ2Yjg1NjM4NWQyMTY0ODBiIGxlZ2FjeS10cnVuaworMTI1NTAgN2I4OGMxMmI4NzAxY2RlNjYzMTUzNDRkNTI2NmZlODAwZDE5N2VlNSBsZWdhY3ktdHJ1bmsKKzEyNTUxIGRjZTEwNGUxYTczYmJkY2NhZTY0YWFlZTgxNWNiMDE1MTY5NjExZWUgbGVnYWN5LXRydW5rCisxMjU1MiA2Njg1OGZkZjQ2N2ViYTFjNTJkNjAzMjNmNzEyZGE0OThlODg3NzViIGxlZ2FjeS10cnVuaworMTI1NTMgZjA3MjAzY2MyNzQwYTkxOTcxMjc4OThmNTBjYmNkN2Y1NjYyZWMwMiBsZWdhY3ktdHJ1bmsKKzEyNTU0IDc5NGEyMWE1YWQzNWUxOTFhYzk2YTEyMWZmYjQ0ZDIyOTg3NTRiNDEgbGVnYWN5LXRydW5rCisxMjU1NSBmMzNlZDllMmE2MDdmYTRjOWNkNTgyYTU5NjMwZjdhOGRiZTVhMGE1IGxlZ2FjeS10cnVuaworMTI1NTYgMjdjYzdhMzE0NTAyNjYwYTc3MjNhNTBiOTE3MDk4NWNlMjlkOGUzNiBsZWdhY3ktdHJ1bmsKKzEyNTU3IDgwZTBhYWIxNzA1ZWJkNTQyMDJhYzEzNDAzNDg5ODlkODRkZjYwMjkgbGVnYWN5LXRydW5rCisxMjU1OCBiODJhNjFhODg0Y2YyODc2MDdhN2U3MmNlNDZjY2RkZjhlYzBlYmQxIGxlZ2FjeS10cnVuaworMTI1NTkgMDc1Zjg3MWQ4MGI1NWVlYWE1NDkzOTdkZmQ5ZmUxOGUxYjNmODcxOCBsZWdhY3ktdHJ1bmsKKzEyNTYwIGVlNjI1NjA4MTM2NmQyODE1YzhhZTFiMzYzMzQ4YTEzNTNjNTJiMjIgbGVnYWN5LXRydW5rCisxMjU2MSBjODhhYTk1OTNhMDhlZDExMDMwZDZmNjI3ZTI4ZTc5OTg1MGRhMDMxIGxlZ2FjeS10cnVuaworMTI1NjIgMDE1Y2I2MjMxZjNmOGU2NmVjYTFkZjA5NDZmZDhhNjVhZjVmZDc2ZSBsZWdhY3ktdHJ1bmsKKzEyNTYzIGRkZGE1ODU0ZTNlYWQ1MjIwZDZmYTBiOGY1Njc4ZDJhMDgyMzRmYzQgbGVnYWN5LXRydW5rCisxMjU2NCBkNWU2NGE2MTYzMjAwM2M2YzZhN2RmNmNlODJmZTM3N2M2N2ZkODJkIGxlZ2FjeS10cnVuaworMTI1NjUgOGZmZTQ1MDQyOGIxYjMzOTAxMDVjMGNjOTc4YmMwOGJiOWFlNDkzNSBsZWdhY3ktdHJ1bmsKKzEyNTY2IGQ5YjdhMjA4MDk3MWJhMzA5ZWIwZGU3ZmRjNTQ5ZWMzZGE1NTZhMmEgbGVnYWN5LXRydW5rCisxMjU2NyA2YWJkODRhYWIwOGE4ZTUyOTFhMDJiMjhiMDIzOThiMTRlY2ZhYzE5IGxlZ2FjeS10cnVuaworMTI1NjggZDdmNDM0ZDc4NGJmOWU2ODkyY2RmZTVjNmJjZTliYWZkMzUzYzJiMCBsZWdhY3ktdHJ1bmsKKzEyNTY5IDcxMDIyODkwNDJkNWU4ZTQ0OTBjNGEyNjYzNWZjZTYzOTgyZThhMzUgbGVnYWN5LXRydW5rCisxMjU3MCA2ZDZmNDI3YWI2ZWNiMTgzNjNiZjYyY2RhODQ1YjFhZDAxNGEyMzY5IGxlZ2FjeS10cnVuaworMTI1NzEgNWUwMTY0NWVlNDFiOGMyMGNkNmYwMDEzNTlhZGY2MmM0NmY2ZjQzYiBsZWdhY3ktdHJ1bmsKKzEyNTcyIDEzNzE3OTE4NjkyN2EwNDBjMGVhODJhYTczZmIzZTMxOTZhODQwYTcgbGVnYWN5LXRydW5rCisxMjU3MyA2N2VkMDVjZjE3MWQwOGY1MzVhMGFhYTNiYzBlOTMwODc0MzE4YmFmIGxlZ2FjeS10cnVuaworMTI1NzQgZWNlYmNkODRkZjM3YjJhZWYwZTIyNTA3NWVmOTA3OWExYjIzYTkyMiBsZWdhY3ktdHJ1bmsKKzEyNTc1IDFlMjFlMjI0NTNkYzNjNGM4NThkMjU4OGQ1OTgzNzcwMWQxODljZmQgbGVnYWN5LXRydW5rCisxMjU3NiBkNGU5NjMyNTAzZGZkYTMzMDRiZWNhZmIyNTM1YTVlYzQ4MDkxMmQ5IGxlZ2FjeS10cnVuaworMTI1NzcgZDZiYThlNWU1NWFkNGM4OWE0ODc2NGU3ZmFjYjQyYTE2MTQ4YTg0ZiBsZWdhY3ktdHJ1bmsKKzEyNTc4IGNiZjU1MDNiMzJkNTU5YjYzYjNjMTE5Y2E5NTE0OTQ3NmZkZDA0MjAgbGVnYWN5LXRydW5rCisxMjU3OSA4MGIyMTUyNDliMTdkNTFiMjY1MGY5YmEwZTg4Zjc1OTM0YmIxZmY5IGxlZ2FjeS10cnVuaworMTI1ODAgYzNkNTA2Nzk0OTY3ZGY4NDFjYzIxYjk4OWYzY2M2YTkyM2I2OTdmNSBsZWdhY3ktdHJ1bmsKKzEyNTgxIGJjMzYwMmE4M2FkMzI5NWIyZDYzZjhhOGI3Y2IzYTJlMWZkNWY4YTcgbGVnYWN5LXRydW5rCisxMjU4MiA2ZjQyYzhmZTg3NWI3ZGUyMjU4NDc1ZjI0NjViZGNmMWI2ODA3MGFiIGxlZ2FjeS10cnVuaworMTI1ODMgNDhhZjJjNmI3NDFlOWM4MGNkMzBjYWE2NGI3OTUxNjEwNzM4YjQyNiBsZWdhY3ktdHJ1bmsKKzEyNTg0IGI1NDU0ZGMyMmRjYjgxMWYzZjIxMjdjY2MwN2VhNWEyYjMyZmM5NWEgbGVnYWN5LXRydW5rCisxMjU4NSA0ODk0ZGNlYTEyNmI0MDc5ZGM2MGUyMDc5YWQ1ZDY1MjYyODRjNTYyIGxlZ2FjeS10cnVuaworMTI1ODYgNTgyM2I2MTVjMzAxZTNiYjY5ZmY5OTE3ZjQwODBiNjA0MDlhYTMxMyBsZWdhY3ktdHJ1bmsKKzEyNTg3IGQzZTQ0ZTYxMGVhMTRiMjI3ZDAwZjI1NTFlZjdmODhiNjc5MjI1YzYgbGVnYWN5LXRydW5rCisxMjU4OCBjNzE0NGU3ZTg0OTQyMDUwNGY0MjNmNzFkMjlkOWFmMTEwOWFjZmE1IGxlZ2FjeS10cnVuaworMTI1ODkgOWVmYTQyNDQ1ZWM5YWZlZWUzMmI5YjAxY2NjYmYzYTEyY2EyYjJjMyBsZWdhY3ktdHJ1bmsKKzEyNTkwIGY1YTU1ZDMyNzYwODNlYmM1MDFhNGM5N2I5MDQ1NGIyNTk1Y2U2OWEgbGVnYWN5LXRydW5rCisxMjU5MSAyYTllZjFlMGY1NDFkOWRlMTgxNTNkZjgyMTQ4ZjgxZWNhOWI0MzE1IGxlZ2FjeS10cnVuaworMTI1OTIgYWEwMzM2NTI3YzRlOTU2MzM5NGRiMDRhMjBhOGZkNDJkNDYxZTdiZiBsZWdhY3ktdHJ1bmsKKzEyNTkzIDk2NTg2ZGIzNzlmYmE5ZDk4NGM2MzY4NjRiNDBmN2I0NGE5ODk4N2YgbGVnYWN5LXRydW5rCisxMjU5NCA1NzQwNzVlOWEyNWY0ZGI3YjU0NjE5NTdmNWEzZDdjNmZhNjA5ZmJlIGxlZ2FjeS10cnVuaworMTI1OTUgZDhjNDM3OGViODdkYWJlOTQ4MzM3NTIwNTViYjAxNjdiYjFhZWYxYSBsZWdhY3ktdHJ1bmsKKzEyNTk2IDFkMjhjN2UxNjYzNjU3MzE1ZDhiYTFlMTJiM2RkODFmMjNmZWExNzQgbGVnYWN5LXRydW5rCisxMjU5NyA3ZWFkNGEwNDQyN2U4ODQwMmM3NTU2ZTNiZjRlOWUyNjFhNWU1MjNhIGxlZ2FjeS10cnVuaworMTI1OTggM2FlMDNiOWI2NWVkYzJhMDlkOGZiNGRkY2JkZDgwNDY1NThhOTE2MyBsZWdhY3ktdHJ1bmsKKzEyNTk5IGY1ZjFiNWU5ODE0YTQ4ZWEyZWNjYjFjMTQxOTc1Y2JkMDRiYmJhM2YgbGVnYWN5LXRydW5rCisxMjYwMCAzZjdkYzNkZTA2MTcwZDQ5OGMxNmNiMDAxYjUwNzU2YWViNjEyYTQ1IGxlZ2FjeS10cnVuaworMTI2MDEgOWEzYTQ2OTI4ZGJmZWI4ZmIyYzM5ZWZjYWIyYzI5OTJiZmUzODk4MyBsZWdhY3ktdHJ1bmsKKzEyNjAyIDkxODQ4NjJiZDhkMWU5MmRjMjNmN2E2ZjBhZjY3MzliZGUyMGY3MzQgbGVnYWN5LXRydW5rCisxMjYwMyA2YjI4YjVmMTk3Y2ZiMDQ4MmQwNGUzMDgxNWFjYTQ0MWY1YjA2NWNlIGxlZ2FjeS10cnVuaworMTI2MDQgYzdkZmQ2MTkzNTBiYzdmNGE5YzM3ODliYzY0YTcwN2YwYjhhZWZkNCBsZWdhY3ktdHJ1bmsKKzEyNjA1IGVmZjA4YmQ4MTY1ZDgyYWZmMmQ3MzM5NzY1NDQxMDViYTQ5ODhhMzEgbGVnYWN5LXRydW5rCisxMjYwNiA1OGU3Y2M1YTM4NDEzMDBjYTVhYjEyNmEwZjRkNGZmZjQ4NDgzMzExIGxlZ2FjeS10cnVuaworMTI2MDcgZTZiYmEwMmZmNjI0Njg0YmIwNzZjZjcxZDZmOGE1NGU4OTE4ZDZhYSBsZWdhY3ktdHJ1bmsKKzEyNjA4IDE2YWE3MzU4OGQ5M2I2OGY1MDIwM2QyMWE4YWQ5Njg3NWIwN2ZkNDEgbGVnYWN5LXRydW5rCisxMjYwOSA2OTdlMGM5ZDA5NDBlYzk1M2MwMzQ4ZThiZDlhZThhMDk5MzM5Y2JhIGxlZ2FjeS10cnVuaworMTI2MTAgNTJkNTdjYzAzZjQyOWU4MmU0N2VhMjViNzdjMDhmOGVhMjFlNzY1ZiBsZWdhY3ktdHJ1bmsKKzEyNjExIDNkNTg3ZTY1M2YyZDY1OGQ5OGUxMTYxNzg0OGMwOTA5MWU3Y2FmOWEgbGVnYWN5LXRydW5rCisxMjYxMiAzMWMxMTI1OTRhYjYzN2FlOGI0YzJmOWFiYmZhZDBmYzZjOWI4Njc1IGxlZ2FjeS10cnVuaworMTI2MTMgM2Y5Mzg1ODdmMmEzZjAyYTA5ZWU3MGNkZTAzYTZkYTU3NTdkNTMzNSBsZWdhY3ktdHJ1bmsKKzEyNjE0IGFiZjQ5MzA2NDdlMjgyMmI3ODBmN2Q0YzA2NTgyOTRmN2MxNGU4NjkgbGVnYWN5LXRydW5rCisxMjYxNSBlOWY1OTg1YjZlYTQ2NGY4MWNhZDNiMjQ5M2ExNWRlY2Y0MzA2YTU1IGxlZ2FjeS10cnVuaworMTI2MTYgNTA4YTYzOWQ4ZmViMzVhZjYyM2Q1MzUzYjMzZWFmNjQwNzU1ZDU1OCBsZWdhY3ktdHJ1bmsKKzEyNjE3IGE5OTg4NWFmMzlmODhjNGVlOGU1MTEzMzJlOTJjMDg3ZjM3NzNiMmMgbGVnYWN5LXRydW5rCisxMjYxOCA0OWU3ZTIxODQ5YjNjYzUxZmRiNjVjNWE0MWU4MTYyYjU3OTNhMzY1IGxlZ2FjeS10cnVuaworMTI2MTkgMzE0NWRlZjU4M2UyY2ExNGUzOTlhOWM3MjRmNDA2YmIxZWQ5ZDA5OSBsZWdhY3ktdHJ1bmsKKzEyNjIwIGE5ZmM3Mzk4Y2U3YmJmN2Y2NjdmZGZmMmYwMzIxNGVkOGEyZTE5NWUgbGVnYWN5LXRydW5rCisxMjYyMSBhNjNjOWMzZTllY2MwMWQ0Zjc1MzZiZTIyYzM2NTlhZDllYjk3ODc0IGxlZ2FjeS10cnVuaworMTI2MjIgNWIxNTY0MmU3YmRmNGEyOGQ3Nzc3OGU4NDk5MWJmYzFmZTlmZGY2OCBsZWdhY3ktdHJ1bmsKKzEyNjIzIGI3ZDgxMjVjMjQxN2Q4N2RjM2NiMDRjYmQ4YmM3M2M1Y2E3MDJhYTggbGVnYWN5LXRydW5rCisxMjYyNCBjYmIzYjJjNTU1ZDdhNzBhMTY5NjQxMmM4NzkxMGJhMTY1ZDZjODVjIGxlZ2FjeS10cnVuaworMTI2MjUgYmMyODdjNmNmYTIzMGYwNTY2ZTA0ZjY3M2Q0YmIxMGMyN2JlYzU1MCBsZWdhY3ktdHJ1bmsKKzEyNjI2IGZiOTY2NTYyZGIwZTYxZTYxMWVjYTI2NjgxM2UwN2E2Y2I3Y2E0NjAgbGVnYWN5LXRydW5rCisxMjYyNyA2NDcyOGE1MWNiNTUxZTg2YjQzY2U2MTQwMThiZjMwMzgzZjdkODljIGxlZ2FjeS10cnVuaworMTI2MjggODlmNjU1NmYwNTllYjY4M2MwZjM0ZDIyN2E2N2RmMDE0ZmY4MDUzNyBsZWdhY3ktdHJ1bmsKKzEyNjI5IGJhZmNkN2I2MjMyNzVjNzUzZTJkNWY5NTUxMjY5NTZjYWEyYjI0MWUgbGVnYWN5LXRydW5rCisxMjYzMCAwZGQ0ZmFmZWZkNmM0OGE0YzM4NmM4MjhkNmVkYjY2OTQ0YzU3ZTk3IGxlZ2FjeS10cnVuaworMTI2MzEgOGI1NWM1MTU2ODNkOTI3Y2FjMzBiMGJmYzk0YTAxNTkzZjBlNjQyMyBsZWdhY3ktdHJ1bmsKKzEyNjMyIGU1NjlmOWIwZDk2OWExMWI2ZWM3ZDE5ZTJmMWU2ZjY1MzRjYWUxNWYgbGVnYWN5LXRydW5rCisxMjYzMyAxYWMyYThiYjdkYzEwODY0YzA5YTk3MGE1MzMwYjEzZDNlY2Q0Mjc2IGxlZ2FjeS10cnVuaworMTI2MzQgNjRlNjRlZjA4ZDFjOTExNTZhYjA3NjM1ZjM2NjI3MDE4ZGQ0YWRhYiBsZWdhY3ktdHJ1bmsKKzEyNjM1IDU3MThlODMwMjBhZTk1ZTUzYmJiZDUxMWIzYTc2ZGNlYWFmOWJhOTMgbGVnYWN5LXRydW5rCisxMjYzNiAxMzlkNWYxYTZmODk5ZDdjYjNmMDlkN2E1ZmQ3NWE2OGQ0NzliNWQxIGxlZ2FjeS10cnVuaworMTI2MzcgMGMwN2MwZGJlMzI4MmMwNGI5ZDA3NWU1NTFkYzRhZDdlYWYxNWU3YSBsZWdhY3ktdHJ1bmsKKzEyNjM4IDY1NzMxNjk4YzZlZGY0YTc2YWY2ZTE0NmViMjk0YzgzZWQ3ODI1NTQgbGVnYWN5LXRydW5rCisxMjYzOSA0OWNmMTQxMjQ0NWYzMjA5NjBjMDNmMWE0MDQ1N2ZjZGIxN2E5YWUwIGxlZ2FjeS10cnVuaworMTI2NDAgYjIxOTE1ZTY1ODllMDRmOThmYzEzN2FiYTFjZDUxMjZjMzY5NDk5MSBsZWdhY3ktdHJ1bmsKKzEyNjQxIGJjMDM0NzY0M2VjZmM2Y2FiOTViODM1MTU0NjA3MTE0OTAwNjBhY2UgbGVnYWN5LXRydW5rCisxMjY0MiA5MjMyMzYxMjk0YmI2OTI0NWZlMWM1Y2Y4ODM2MzMxNDRmNjE4NzY1IGxlZ2FjeS10cnVuaworMTI2NDMgMDk5MDJlMTMwNTM3MzQ0ZTNjZWIyMWMxNjI0NjEyNzIzNjMyYzM0OSBsZWdhY3ktdHJ1bmsKKzEyNjQ0IDViZGI3MmIxOTU3ZTE2ZTdhYjg4NzNkYzAyMDQ4MjRmZTNiYjU4MTUgbGVnYWN5LXRydW5rCisxMjY0NSAzYzY5OGI1M2JlNTkyMTE2ZmIzMGQyODc2NjQwNzA0NmI4MDg1YWIyIGxlZ2FjeS10cnVuaworMTI2NDYgYWJkM2YwNjZjODdhYzUzOWY1NGJjMmY5MDQyMWQ2YmE2MmRhOThmZiBsZWdhY3ktdHJ1bmsKKzEyNjQ3IDgyODQ5MjcwMjViZTZmZDJiNGFkNzljNTMyYTU2OTk1ZGQ1OWJkMmUgbGVnYWN5LXRydW5rCisxMjY0OCBiZDQ5ZjkxZDU5YjJkMzFhNDI4OTQ1Yzg0MzdlMTZmNTlkNDZjZjY3IGxlZ2FjeS10cnVuaworMTI2NDkgM2FjN2YwMDY2Mzc1ZmM4NjFmMzQ5YjFkMDExMWUyZGYwNDI2NGQ4MSBsZWdhY3ktdHJ1bmsKKzEyNjUwIGU0MGJjZjZiYzFjOGJhMzYwNmY0MThkMDNlMjY3ODQyZDM3MTM5MzMgbGVnYWN5LXRydW5rCisxMjY1MSA5NTllODFiMzliODExMjJmNjczMGE4NjhmYjI1ZWEyNTZjZTQ1YzJkIGxlZ2FjeS10cnVuaworMTI2NTIgOWE2YzNkYzFkY2QzZjBlMTRlY2VhNjg0MzQ3ZjgyNzFiZjRhODA3OCBsZWdhY3ktdHJ1bmsKKzEyNjUzIDFkM2ZlN2M4OGNjOGM0MzNkOGU1MmFhNThjMmQ0MzJiMDVmMjY2ZDUgbGVnYWN5LXRydW5rCisxMjY1NCA2MmRjOWZmOWNkNGMzOTJjY2RlZDE3NTlmYjA5YjRhODkxMjkyYjIwIGxlZ2FjeS10cnVuaworMTI2NTUgOWFhNDM5MGJlMzhiN2MwYWMyOGFlMWU0M2NiYTMyNjNkMzFkMzQ5YyBsZWdhY3ktdHJ1bmsKKzEyNjU2IGQzN2YwMzEyNGM1NGY4MjNmNGIyY2FmOTRlYzVlYTYzMjQ2NTM5NTEgbGVnYWN5LXRydW5rCisxMjY1NyA4NDY0ZTMxMzc2ZWQ5YmYxYTMwYjg3MzAwZDJiOGFhZTcyZmY0OWQyIGxlZ2FjeS10cnVuaworMTI2NTggMGY3ZDY5NGJjMzM0ZWZmMGYxY2MwMDEwMzExNWQ0YTJjNTkzNDJiNiBsZWdhY3ktdHJ1bmsKKzEyNjU5IDEzMjM5YjQ4YzQ2OWMxYTgyOTFjMDVmOTFjNzNiMjI3Y2Y1YjY3YzMgbGVnYWN5LXRydW5rCisxMjY2MCA2MjViN2NlYmZkZTJiMmQ5ZDAzZjg5MzIyOWNiNDkwNDFlOTA3ZDczIGxlZ2FjeS10cnVuaworMTI2NjEgM2I3YjZkNWYxOTMxNjdkYzk4NGRhYjBiYzNhMjdkZGYzNTkyY2YxNCBsZWdhY3ktdHJ1bmsKKzEyNjYyIDNiYTAyNWJhN2YwOTUwNGI3MThlOWEwZDkwYWJiMWU0ZDA3YWJhYzQgbGVnYWN5LXRydW5rCisxMjY2MyA1YzFlYmYyM2YxZDc3YjQzZGU0MTczYTViMzllYzEwN2ZmYjBhMjljIGxlZ2FjeS10cnVuaworMTI2NjQgNTY0ZjAzNjMyOTE2MjVkY2NjNGIzNTZkN2RiNWFiMjY4YjczNTJmYiBsZWdhY3ktdHJ1bmsKKzEyNjY1IGRkZjg2MWQ4NGJiYjkyMjg0YjM0NGUzOWRkZGM4Y2JjMjAzYTZhNDkgbGVnYWN5LXRydW5rCisxMjY2NiAxNTRjNjQwOGMzYzJkZGNkNmNjNGY0MTQ4MTNiNjhkZDJmMWU4MDAzIGxlZ2FjeS10cnVuaworMTI2NjcgOWM5Y2Y0NTcyYTk3N2VmNmY3YmRmNTlhNzk4YzRjMTg2ZTBlNWFjYSBsZWdhY3ktdHJ1bmsKKzEyNjY4IDNmMTNlZTU5MmE0MGY4M2UyOTEyZTAxZGVhN2VlZDE4ZjFiM2Y0MWQgbGVnYWN5LXRydW5rCisxMjY2OSBiZDhjNDNkYWVmODVlMjA0MWFkOTlhMWMyOTE0YjdiN2RlZjZhNzdkIGxlZ2FjeS10cnVuaworMTI2NzAgNzYyY2ZlOTZmYWY5ZDcxZWRiN2FhYzdiYTBkM2Y5Y2Y3YWIxMWI3YSBsZWdhY3ktdHJ1bmsKKzEyNjcxIGJhMjViMmQzZDc4NGQ3ZDdlNTYzYzU3YzA3ZDFlNDBmNGY4OWQxOWUgbGVnYWN5LXRydW5rCisxMjY3MiA3Y2Y5NzY1OGNhZTdlMzZmMzk2MzU0MzA2NzU4YTk2MDRlNzIxMjk0IGxlZ2FjeS10cnVuaworMTI2NzMgNzNlNWUzZjUxYjg3NGZjOTczOWIwMmFjMjYzN2EwM2I3NTU2MTAzZSBsZWdhY3ktdHJ1bmsKKzEyNjc0IDk2NTUwYjVkMDllMTRjMmQ2OGY1YmI3MDE1Nzc1M2E1MTIyMDQ3MzQgbGVnYWN5LXRydW5rCisxMjY3NSA2YTFjYjZmMzdhNTJjNWI3MGM0M2VjYmU1YmMzMDNhY2VmNzc4ZTNiIGxlZ2FjeS10cnVuaworMTI2NzYgNzQ0ZGI4NmUwMzExYWZkZjY2MzY0ZDAxMzg5NDY2YjYxM2M2OTBjZiBsZWdhY3ktdHJ1bmsKKzEyNjc3IDQ5ZDc3NmYzODc4ZDhkZDUwNDU3YWM2NTcxNTVkZDMxNTZmMDc0MjMgbGVnYWN5LXRydW5rCisxMjY3OCBhNzlkY2QyN2JkYzNhNmI1ZjlmYTkwODMzNjQxMGQ5NGQxZjUyYTZlIGxlZ2FjeS10cnVuaworMTI2NzkgMzVmOTFjYWVhYThkYTM3NTQ3M2Y4NDY2N2FhYzM5ODUzMTQwYjA2MiBsZWdhY3ktdHJ1bmsKKzEyNjgwIGYwYTU3Y2NmMjMzY2IzNTZkOTdlMzUxMjI5Mjg4NjAyNTFhYmNjNTYgbGVnYWN5LXRydW5rCisxMjY4MSAwNGI4ODA0MmE5MmI4ZmMyZGM4NWIwYWVlZGJkZGE4NjM0YTE0MTE2IGxlZ2FjeS10cnVuaworMTI2ODIgMDA1YmE0MTJhOGVjYjUyYTQwNjk1MDJjNmFiOWRjZTMyYzZiNTliNSBsZWdhY3ktdHJ1bmsKKzEyNjgzIGI4OTMyYWI0MWFkZDRmMjAxY2Y5M2IwYmU3ZjdkOTA2NzBiZGY1OWUgbGVnYWN5LXRydW5rCisxMjY4NCA1NTM5YWViZjg5MzhhODY0NTlkMWNlNjVkMTgxMTNkNTVjMDJjNjRiIGxlZ2FjeS10cnVuaworMTI2ODUgNmRiY2Q1YTZlNWU2MThiNzUxYjFiYWQzNWQzZGY2YTM2OGI1MjdkMSBsZWdhY3ktdHJ1bmsKKzEyNjg2IGQ4NjQwMDUwMGFhMDM3MzE1MzVhZTM3YWY4ZWI5NTE3Y2ZhZDlmNGMgbGVnYWN5LXRydW5rCisxMjY4NyBiMjZlMjUxNTg5MjJlZjdkMjMyZTdjMGMxYWQzNWZjNGEyOWUyMzJlIGxlZ2FjeS10cnVuaworMTI2ODggNjJlNjEwNTg0ODBhMzk5MzJmZDI0YmE3YzNkYjA4ZjhhYTY3N2MwNyBsZWdhY3ktdHJ1bmsKKzEyNjg5IGVlMWQzMmY3YTA1NWYwYjhkMWI1Nzg3ODYzY2U0MDIyMzk3YjlhZjEgbGVnYWN5LXRydW5rCisxMjY5MCA2NjMzYzNmY2E2MjYzZjM2ZWE2MTBiZGE3NDE1YTU3ZjM3OTI1NjI5IGxlZ2FjeS10cnVuaworMTI2OTEgYmQzMGQzOTc5N2E0MDllYmQzYmRhYTYwYWIwZTJlNThkZTNjNDVmZSBsZWdhY3ktdHJ1bmsKKzEyNjkyIDhmNGFkMTRjMzQwNzNjYzhlYzE0NzVjZDMwNWYxZmI4MWIxODRiMTggbGVnYWN5LXRydW5rCisxMjY5MyBiMGYwNGI3Yzk0MDcxZTcyZDhhOTYxY2QzMjUxNjhjMDQxNTVkMTlhIGxlZ2FjeS10cnVuaworMTI2OTQgNGFmODRjZGNmZGI1M2QyMDliNDZhYzM0MzdjMzM0MTViYTczM2NmYyBsZWdhY3ktdHJ1bmsKKzEyNjk1IDY3ZjFkNmJkNThjZmJhMTA5MzNlZDU0ODVkZjY5Y2IzMTBiZjkzMTkgbGVnYWN5LXRydW5rCisxMjY5NiAxZDk0MjQ4ZmUyYjk5YTI5OWU0MDJjNDY0YmE2MjVhMjgzNTk0NWYyIGxlZ2FjeS10cnVuaworMTI2OTcgYTM2OTg2NTY5YWYxOGQ2ODQxZDk2MTY2NWZkN2JjODI5NDE0NTU3YyBsZWdhY3ktdHJ1bmsKKzEyNjk4IDFlMGRkMmVmMzk3MWMyYWNiMGQwNzU3ZTE0YWU4ZTQ1YWNkNWNlNDcgbGVnYWN5LXRydW5rCisxMjY5OSBkZTdjMDAwMzU3OGY4YWE2ZTI5ZmFkNzBhNzhhZmFmYTIyOTMxODMwIGxlZ2FjeS10cnVuaworMTI3MDAgYjVmMDdhNGE2NTRiZjA3MWMxNWNjYjgzNjk0ZjUxZjRjM2ZkNjJhZCBsZWdhY3ktdHJ1bmsKKzEyNzAxIDI3OTAyNTU1ZjY3MjFkZDNhMDIxMWJlMmY0NmNhM2JkODVhNjA4MzYgbGVnYWN5LXRydW5rCisxMjcwMiAwNDljOTEzNDNmOTU4OGFmNTA0MTlkZWY1Mzc2ZmU1OTY4YTg4Yjk4IGxlZ2FjeS10cnVuaworMTI3MDMgYzBmNjljYmU4MDVkMTdlNmE5NDNlZGE0MWRkM2JjMmU1M2E3MGI4ZSBsZWdhY3ktdHJ1bmsKKzEyNzA0IGUxZGEyOTBhY2M1ZjEwZWRkMDM5YTdjOWJlNTgzZDAzZmFkZTVhN2QgbGVnYWN5LXRydW5rCisxMjcwNSBkZmRmZjg3MjQ4ODc1ZGY1NmE0MWEzZGMyZmRmYzQ2YjIyMDAxZjYxIGxlZ2FjeS10cnVuaworMTI3MDYgYmY0MTg0MGM4MTUwNzIyYWEwYjhiOGFiNjljY2YyYmIzYzZjMTk1MCBsZWdhY3ktdHJ1bmsKKzEyNzA3IDFjNTlhOTllOTk3MGYwNjk1MzQ0OTU5MjRhYjRmZTM4N2YxNjhhM2UgbGVnYWN5LXRydW5rCisxMjcwOCAwMmIxNzJhNWQ4OTNkN2E3MTFjYTg2MzBhNTAyY2NkZjg5YWRhYzI3IGxlZ2FjeS10cnVuaworMTI3MDkgMjlkMWQzYjA4Y2E3ZDRmNTk2ZTMxNGFiODE5ZDVkNjhhYWU2Nzk2MCBsZWdhY3ktdHJ1bmsKKzEyNzEwIGE4NmZlMWYzY2Y0ZTY1YjM3NTI2YzlhOGFlZjliZDk0ZTg4ODFlZWUgbGVnYWN5LXRydW5rCisxMjcxMSBkMjgyMjc0ZmJiNzIyZmQ4NTVjNzkxZjcxMjE0ZjcyMzYxOWRlYmJjIGxlZ2FjeS10cnVuaworMTI3MTIgYjFkNDBmYjEwYWY2Y2JkOWRlNTg1YWY2ODE1Mjc0MGM1YTkwOGExZCBsZWdhY3ktdHJ1bmsKKzEyNzEzIDMyYjQzZTVkODhkMzU4MWRhNjAyMTE5OTY4NWFjMzVkMGRlNDlhN2YgbGVnYWN5LXRydW5rCisxMjcxNCBlMzM5N2FlODgxMjkyMWU4NTYzNDI0NjljYWEyMWY1MmEwZTI4MmY4IGxlZ2FjeS10cnVuaworMTI3MTUgMDJlMTMzZWFiYWM2OTZkZjZhN2JiYTAxODhjMjRkYzQ2MzI2YWY5YyBsZWdhY3ktdHJ1bmsKKzEyNzE2IDFmYmM0YmFlMjhjZjA1ODcxNzRiMWQ3N2Q2ZDkwYmQ2MTk3ODAyNmUgbGVnYWN5LXRydW5rCisxMjcxNyBkMTY4NmNmMDhkMTE2YzcxN2U1ZjM2ODNiZTZiYzJmYjk4YmQ0MmU4IGxlZ2FjeS10cnVuaworMTI3MTggNjFlZGQzYjg1ZDYzNjlkMmNhYzc0N2RkYjI5ZjE0NzM3ZGI3MDNjNCBsZWdhY3ktdHJ1bmsKKzEyNzE5IGNkNDc2NDQyZWY3MTViNjI0ZTY5OTFkMTRjOTNkNWVkNTMwMDlmYmMgbGVnYWN5LXRydW5rCisxMjcyMCA0NzdlOTgxMDljN2Q2NjE1MTg4MGZiMmNjMzM1Yjg3MTljNDM1ZGQyIGxlZ2FjeS10cnVuaworMTI3MjEgYTI5MTkyZjJkNDdhZmNmNjQzMzA4NTc3OWEzOTY5OGFlYzZiZmU0NiBsZWdhY3ktdHJ1bmsKKzEyNzIyIDBlZjEwNzFjYjdmZWVkOTE3MzU3N2JlZjk1OTZjMDljYjliMjMwMDIgbGVnYWN5LXRydW5rCisxMjcyMyBmZWI0MTUwMDg3NjVlNDNlZTY5MTI0MjU5ZWQ4ZDkzYTYzMDRkYzA0IGxlZ2FjeS10cnVuaworMTI3MjQgYjMwMDc3YzU3MzQ4NTQyYmQ2MWU2ZDgxZjYxZGVlNGZjMjRiOTc3MiBsZWdhY3ktdHJ1bmsKKzEyNzI1IDU1M2VkNmFlOWU3YTg1ZmE0Zjg4NmUyY2VjZGQ5ZjVhNzk5OTE2M2IgbGVnYWN5LXRydW5rCisxMjcyNiBkZjRhOTY3YTgxNDYyZWJkMmZjMWZkYjhhNjUwMTk0YzQwZDVhOThkIGxlZ2FjeS10cnVuaworMTI3MjcgN2JiZTcxNjMxYzNmMDI4ODNiZTM2ZTYxYTg4NWNkMDEyZWJlOGQ1MSBsZWdhY3ktdHJ1bmsKKzEyNzI4IGNkMTMwYzk1NThkYjM4YjZlZTYwOWMwODRkYmY4ZDgzN2IwZWQ0NDcgbGVnYWN5LXRydW5rCisxMjcyOSBhZTYxMzUyOTc1NzQyZmI5MDYzOTAyM2NhYWNmOWIyZGQxODgwNjM1IGxlZ2FjeS10cnVuaworMTI3MjkgOGZlN2VjNGI0ZmMxNTE4ZmNhYzg5ZTZiZjY3NGZiYmNlMTYxNTBhOSBsZWdhY3ktdHJ1bmsKKzEyNzMxIGNlNTdlYjMwOTY4YTViODkyYzhkMTc3Y2EwOGU1MWY4YTdmZmViYzUgbGVnYWN5LXRydW5rCisxMjczMiAwZTE0N2E1MTc0YTE1MjE5ZTE1ZGI2ZWMzNzUwZjZiMDE4OTg2ZGIyIGxlZ2FjeS10cnVuaworMTI3MzMgYTY1Zjg3NTg0MzU0YWU2NmEyMjRmMDZlNzA1ZTMyY2MyZGIzMTk1NyBsZWdhY3ktdHJ1bmsKKzEyNzM0IDhjY2NmYzZkNjI3MjM2NzRhYjNmYzQ4ZjM2M2ZkYThmYWZlNjQyMWMgbGVnYWN5LXRydW5rCisxMjczNSAyNDlkOWEyYjViYzk2OGRmNDkyOWExZmY4NWZkNWYzMzZhZWI2NmU0IGxlZ2FjeS10cnVuaworMTI3MzYgOTJmY2U0MTRmMzgyMzA4ZDRjNmQ0MTJmNTBlYWZhMjc2MjEyMTE0ZiBsZWdhY3ktdHJ1bmsKKzEyNzM3IDU3NDRhNmRiMmQ0Zjg0MTk1NTA2MjUwNTY1ZmI3ZWQ3Yzc1ZDU0ZTYgbGVnYWN5LXRydW5rCisxMjczOCBjNWU4MzQ3ZWI4MDljMjhjNTUyMTIzYzU0ZTU0NjMzOTExNDIxYTdlIGxlZ2FjeS10cnVuaworMTI3MzkgZjFjY2JkNmE5NGNlMzMzZDJjNGYxM2Y0NzY4NDFjYjhlMTY2Y2NlOCBsZWdhY3ktdHJ1bmsKKzEyNzQwIDg2NjQyYjdhN2E2MGY1ODQ4ODA1YzU2NDgxMmJjMWU5OTU3NTU3MGUgbGVnYWN5LXRydW5rCisxMjc0MSBjMWJlZmRiZDY0ZTU3MjI5ZTUwYzU2NTU5NTY4NWU5Njk3MGUyNWFmIGxlZ2FjeS10cnVuaworMTI3NDIgMzU5MjQ0ZmE2YjUyYWIwZWJiYWY5Y2YwMzE3NjY1MGU4YjBiZWE2MCBsZWdhY3ktdHJ1bmsKKzEyNzQzIGYxMzhiYTcyYmYyZDlmMmUzZThlMTgwZTM5NWMyZjdmY2E3MmVmN2EgbGVnYWN5LXRydW5rCisxMjc0NCBiNmI5MzAwNmQwNzY4NDAwNjczMzMwM2ZiNGYwODEzYWMyODc2ZDA5IGxlZ2FjeS10cnVuaworMTI3NDUgNTc1YzRlYTI1NDJiYzBlMmY0NGI2M2FhYzBhZDEyZjhiMjk1MGZlNyBsZWdhY3ktdHJ1bmsKKzEyNzQ3IDMyYzQyMDQ3NDJiYWZkNmQzYzYyMjlhY2ExY2MzNmVkYjI0OTE4Y2MgbGVnYWN5LXRydW5rCisxMjc0OCBiZGJmZTBlYzk3MGY4OTJkNmJiODIwYTUzMGM1YzVjOTI3MWJjOTJjIGxlZ2FjeS10cnVuaworMTI3NDkgYzVmMTFjNWJmNWIyMjAwNjE0ODFhYzJhZWU0OTBmNDM3MmMzMDJkOSBsZWdhY3ktdHJ1bmsKKzEyNzUwIDFhMmEwYTNlOWRkYjJlMTIyZmNmYjE5ZjE0Nzg4N2M1OTgzMTIwMzYgbGVnYWN5LXRydW5rCisxMjc1MSA4OTVkODYxYTA4NzAxZmNkYzhiYmUyYTliNTQ0YzcxYzhmNGMwY2FmIGxlZ2FjeS10cnVuaworMTI3NTIgZTU5Y2E1ZDM0NmY0ZGYyYzg0NDZjM2MyYTAyMTVjM2I4NzE1MGFiYiBsZWdhY3ktdHJ1bmsKKzEyNzUzIDQ3YzExZTgyNzY5OTlmMDA3OGMwNzFkZTJiOTgzODNjNzcwMmY5NTYgbGVnYWN5LXRydW5rCisxMjc1NCBkODM5MzVkMTQwODQ1NjdmOGVhNDlkNjQ4ZDgzNTY3YjBlNmRjM2YxIGxlZ2FjeS10cnVuaworMTI3NTUgYzI3YzEwYzZiOWYyODI3NDAxZDhkMDNhZWM4MTQxYjRmNzg3YmJlYSBsZWdhY3ktdHJ1bmsKKzEyNzU2IDEzYjQ1Yzc0ZTk3YjUzMDY2MjI2MWIyZGEzN2U5YWI1ZDMyYjU5ZTIgbGVnYWN5LXRydW5rCisxMjc1NyA4ZmViMjk1MGRhN2IyNjMyMzhmYTJiNDBmYjQ2NGQ5YzRlMDdjYzg2IGxlZ2FjeS10cnVuaworMTI3NTggMDYxNGU3ZjE2NzQxZjJhMTU4OGUyNGQ0ZTI5MGM0MGEwZTY3YjNlOSBsZWdhY3ktdHJ1bmsKKzEyNzU5IGE0OTEzYmFlOWY5M2U3ZjQxMDAwMDk4MjU2NThlNjI3ZDIzM2JiY2QgbGVnYWN5LXRydW5rCisxMjc2MCAwY2I4ZTVlYTg0YThkYWFjMGU5NWQ0NDQ2OTdjYTk2YTkwMmE2ZmU2IGxlZ2FjeS10cnVuaworMTI3NjEgMTYzZmQzZDk1YzE3ZTQwNDgyMjRhMWM4OTIxMWVmODcxYTQxMGQ1YyBsZWdhY3ktdHJ1bmsKKzEyNzYyIDBhNWNkZDdlNWZjM2Y4NTBhNmJkYzE5ZWQyZDVjNDM0NmU2Yzg4ZDggbGVnYWN5LXRydW5rCisxMjc2MyAyNmEwMjA2MGJhYjE3NDE2Y2Y4MjRjNzVmNWRkNWFhZjlmMzM1NTQxIGxlZ2FjeS10cnVuaworMTI3NjQgYjY0ZjMzNTk0YTMxMTA2OThmMGViZGM3Y2M1NGJjNWNjZjFjNzdkMCBsZWdhY3ktdHJ1bmsKKzEyNzY1IGU4M2Y2NzZkMTVjMjg5Y2ViNmQ3YzkwM2I1NWNmMGFiNDIxZGEwZjggbGVnYWN5LXRydW5rCisxMjc2NiAyOTcwMWUyOTA0YWM1NDk3MDk5ZmQwNDNkMDMxNjA1ZmQzZjEzZDEyIGxlZ2FjeS10cnVuaworMTI3NjcgYjliYjc1ZGVkODA0YWNhNTdiZTk2M2FmMmRjZGQ0ODU2YWM5MmY1MyBsZWdhY3ktdHJ1bmsKKzEyNzY4IDQ4NzAwZjk5YzZhNmQzMWQ1MjJkMWM3NGQzYTEwZjM1MjJlMzNmZGYgbGVnYWN5LXRydW5rCisxMjc2OSAyZjQyNWE1N2Q5YWZlNzFlZjQ0ZWRlZjllOTEwMzA4M2E4YjBhOTgzIGxlZ2FjeS10cnVuaworMTI3NzAgYWJhYzdmNjI3NTdjODMxMThmNWYzZmRjYjVlODA3OWJkMGVjNmE4OSBsZWdhY3ktdHJ1bmsKKzEyNzcxIDM1ZGY0ZGMyZDMwZDU0MzYyZDVhMjkxNzhhYWM4ODE1ZmRlNWJiMTMgbGVnYWN5LXRydW5rCisxMjc3MiAwZTM1NWRmZDZmN2QxNWNjMzJkZjI3MjgwNjRmMWFhNjZjNDIzYWEzIGxlZ2FjeS10cnVuaworMTI3NzMgNjRiY2EzYmNhYTM3NGYxNzY1MGExNDIyMmQ2OGQxMjc5Mjk0MjdhZiBsZWdhY3ktdHJ1bmsKKzEyNzc0IDY1YTI1Mzk3MWVjY2U4NjY1M2U1MDMwMDgwY2JmZGU1NTc3OGFmOWEgbGVnYWN5LXRydW5rCisxMjc3NSBhMmE3NjgxYjI1ZjFmNTliZWNlY2E1ODVlMGZiZTFhMzkzZTI4N2Q4IGxlZ2FjeS10cnVuaworMTI3NzYgMDhlYWRjNjUwZWYwOTVjN2E1ZWQ2ZmJhZTNmZTg1ZGI5YjAzOTRjNiBsZWdhY3ktdHJ1bmsKKzEyNzc3IDE5ZDYxMjFmZTRmMzQzYzQ2M2JkNGNjMzhhZDFjNGY2NzIwNWE5YWIgbGVnYWN5LXRydW5rCisxMjc3OCA2MzJiZDNhNWRkZWY1YmRkMDVjMTkzYWY1NTkzOGJiNzE4YWMyM2JiIGxlZ2FjeS10cnVuaworMTI3NzkgYmE1YzYyOTA4MTIyNWEyYTkzZWVjNmI3OTliZGNkMjYzNzgyZWFlOCBsZWdhY3ktdHJ1bmsKKzEyNzgwIDg2MDM1YWU1MzA2YzExN2FmN2RmZGQyOTUzNjZlNTNkOGIyMDM5NzIgbGVnYWN5LXRydW5rCisxMjc4MSA0NmFjMTFiNzhlOTI3ODA1NmFhOTZlNzk2ZGFlN2ZkODJlYjhjMzA3IGxlZ2FjeS10cnVuaworMTI3ODIgODg2ZWEyNTVmMzgxZmYwYzZkYjcwZTI3OTEyMjJiMmViNzIxODhjMiBsZWdhY3ktdHJ1bmsKKzEyNzgzIGNjOWZkNTA2MzBhNjk5Y2IwM2MyYWYwYjMyNGYwYjc0ODMyMTkxZmYgbGVnYWN5LXRydW5rCisxMjc4NCBjZWYyYTEzNDU2OTVkMThmODIxMzBkNjFkNTYyNjM2Y2M4MWQzZDZlIGxlZ2FjeS10cnVuaworMTI3ODUgMDFkYWZjNTcxYTMwMzI4NTE4NjhjMTUwNWQ3ZmZiYjgxYzgxMTI4NyBsZWdhY3ktdHJ1bmsKKzEyNzg2IGQzYmVjZTQ2NDg2ZTI5ZDdhMmM1YTYyZjlmYmMxYzUxMWYzOWRkM2IgbGVnYWN5LXRydW5rCisxMjc4NyAwNmRhM2JhM2FhZGUyZTQ3ZWY3MmJjOGU2NTJhOGJhMDRjMmIzZTNjIGxlZ2FjeS10cnVuaworMTI3ODggY2Q0YzQ1MTBhZGJkNDdlOTg1MzE5ZGYxYzA3MGNmMWM1NDhjNDY5MCBsZWdhY3ktdHJ1bmsKKzEyNzg5IDNiODFhN2Q0MThjYmVlODg0NzYzMDI2ODc1Y2U5OWViYjM4Nzg0Y2QgbGVnYWN5LXRydW5rCisxMjc5MCAzZTNjMDllMTQ1MDMxZDQwMzliODhjOWFlZmRiNzdiMGM4NzJiNjEwIGxlZ2FjeS10cnVuaworMTI3OTEgNWMwYzA2MWRlMmFlYmE2ZjhlZDRlY2VkNjEzNTdmZjQwN2RmYzFiYiBsZWdhY3ktdHJ1bmsKKzEyNzkyIDFlNzY2ZGU3MTRkZWJiMGQzNzE4MmU1ODE2ODE4ODNhZjYwMWEzNzIgbGVnYWN5LXRydW5rCisxMjc5MyA1Y2M3MTIyNjcxYWVhZmE4ZTMxMDM3Njc0ZDIzZDI5NjE5OThlMjY5IGxlZ2FjeS10cnVuaworMTI3OTQgOWJlMjcyNmM5YjI1NGNkOGFkYTZhMWU3ZWExYzE2NWZhYzBlOWU1OSBsZWdhY3ktdHJ1bmsKKzEyNzk1IDFjNmIxMGRlYTlmMDVmODU2NDdlMGFjYWRiOTMwMTZkMzEzMDU4NDEgbGVnYWN5LXRydW5rCisxMjc5NiAyNmRiMWU5NmNhZjM5NDY5ZmU5OGE3OGU2YzY1NjlmN2FhYmU1OTFiIGxlZ2FjeS10cnVuaworMTI3OTcgYjc4MTM1YjEwYThlMWU2YmYzMGM5NTQ3NzBjODg1YjQ5N2FkYzRkOSBsZWdhY3ktdHJ1bmsKKzEyNzk4IDI0ZGVmNmMyNWIwYTA1MGFlZTFmYmVkMGUzMzdmNzcyNTgwM2RiMzMgbGVnYWN5LXRydW5rCisxMjc5OSA1MDAzNmQwNmU5NGFhODQwZGZmNTQ2YmI0OWQ1ZDE5YThmYjJjYjk2IGxlZ2FjeS10cnVuaworMTI4MDAgMzI0MTFhZjhjMDEyOTc2MDM2YjMxYTA5YTA2ODY5YTQwOTUxY2MzYSBsZWdhY3ktdHJ1bmsKKzEyODAxIGNjMGM5MDZjMjQxNTY2OGQzMTUyYzNkZTYzNjU0MTI2ZjI2ZWZlMjIgbGVnYWN5LXRydW5rCisxMjgwMiBhOTVjN2QyYTgzZjdkMDE1MWEwNDFkODU4MTcxMWNiN2JkNzk0ZGVmIGxlZ2FjeS10cnVuaworMTI4MDMgZmQwOWIzZmQxZWRjNGRhNGY5OGQzNzcxNzZlMWI3NzQ0ZDgwNTJkNyBsZWdhY3ktdHJ1bmsKKzEyODA0IDVlODk4OWMyZjg1ZGZkZmFlZjk5NzI1ZGNjZWZmYjZjYjcyYmM2OTkgbGVnYWN5LXRydW5rCisxMjgwNSA4OGE3ZDg1OTkwMGUzYTEzNzdlODMyZTA0M2ZlOTkyYTE2MjFiMWM2IGxlZ2FjeS10cnVuaworMTI4MDYgZjFmNjM2NGFkZGJkZWRjMTk5NGRlZjAxY2I1OTFkNWFmZDUxZjIwOCBsZWdhY3ktdHJ1bmsKKzEyODA3IGI2NDhmOWU4YjNlZGEyOWZhMTI1YzVhN2JiZjJmNTY4OTM3NTU4NmMgbGVnYWN5LXRydW5rCisxMjgwOCA1ZGJjZGRiZGVkMDBiMmQ4ZTgwMGE3ODRiNmQxZjIzOGJkZDQzMTc5IGxlZ2FjeS10cnVuaworMTI4MDkgNDJjOWE4ZDEwODM0NGYxNzU4MjdhNTcxYzUzZmYwMzJmNmQzNWYwMiBsZWdhY3ktdHJ1bmsKKzEyODEwIGU3YzA5YTYyYmYxZjFhNjIyNmFmNGM4NGVmYjBkYTIzY2M1NGYyYTggbGVnYWN5LXRydW5rCisxMjgxMSBlMzA4OTM5NjEzOTgyN2Y3MjMzNzI5NzRkNjcxNmE0YTIyNTBiZmUzIGxlZ2FjeS10cnVuaworMTI4MTIgZGIzMmRlYjEzYzlmMDZlMDlmYzcxYWVjZTg2ZWE3ZjdlN2ZiMjk0MSBsZWdhY3ktdHJ1bmsKKzEyODEzIGE0ZDk5NjA3MzQ0ZjA3OGI4NmI0NmMxZmI5Yjc1OTg5OGQyYWUwYjUgbGVnYWN5LXRydW5rCisxMjgxNCBjZGFlNmMxMTQ1ZjRjM2I4ZTcyMGYwY2RhOGZkMTZkYmU1NDA3YzBjIGxlZ2FjeS10cnVuaworMTI4MTUgMWU1N2FlZTUwNTY1NGVlZWM1YTc5NTEyYzI1ZTc1ZjU5NjgwMzNlYiBsZWdhY3ktdHJ1bmsKKzEyODE2IGZhMThiMGZjMGMxODFlNDNlOTlhZjZiN2UyZTA3MWEwOGExYWUyZjggbGVnYWN5LXRydW5rCisxMjgxNyA5MGM3NTJhZTQ0YTZiOTFmOTQ4ODMwNTFiZTUyMjRjYTgxYzg5OGRkIGxlZ2FjeS10cnVuaworMTI4MTggNDRhMzc1ZTMxYWUyZmU3ZDgwY2RjZDgzMzM4ZWI5YjJkOWVkZDZiYSBsZWdhY3ktdHJ1bmsKKzEyODE5IDQ0NmIwOTY3ZjdkOTY5Y2YwNjAwZjEzM2M5OTMyM2I4ZTFlNDdiMDUgbGVnYWN5LXRydW5rCisxMjgyMCAzOWJkN2I4NDc4ZGIzNWNkZTgyZGIxYTY2N2E1ZTlkZjRjMWM0NWExIGxlZ2FjeS10cnVuaworMTI4MjEgNGRkNzY4YWU4OTVlNjRjYzgxMGVlNTE2NWRmY2Q5M2Q2YjUyNTE0NyBsZWdhY3ktdHJ1bmsKKzEyODIyIDkwMDJmNGI0NzAwMGEzZmM3YzMxODRlNjZhNDJjMmMzZjJhZTQ0ZWEgbGVnYWN5LXRydW5rCisxMjgyMyBlOTM1ZDg5NDdlMzM5NmU4ZDA3YTA3MzM1OTZhYTdhZjQ5NTJhNmUwIGxlZ2FjeS10cnVuaworMTI4MjQgYmQwNzY3NGMzYzhiMDc0ZWY4NDhhOTBlZGUzZDk5ODNjZTM2NGE0YSBsZWdhY3ktdHJ1bmsKKzEyODI1IGE4N2NmZWEzMGIwNGQ4MGEzNzY0YmRjZWRlM2Y4NzUyNTJiNzQyMzcgbGVnYWN5LXRydW5rCisxMjgyNiBmZWQ2NmJkZGNlNjM4MWViMzQ4ZGIzNzljMjQ5Y2E2NTU1ZTIyNTQ1IGxlZ2FjeS10cnVuaworMTI4MjcgMGQwZTIyMzlkZmQ4YzA2ODU4YjQ4ZTNmYzFkNDRjYWU3Nzk0MTI5MyBsZWdhY3ktdHJ1bmsKKzEyODI4IDRhM2U2MzkzODQ2OTQxMTFlOTFkNWUyNWJjMjkxOWY3YmRhODhiZjAgbGVnYWN5LXRydW5rCisxMjgyOSA0YzRmMzYyZmEwYTZhZDg1MjA0N2U1MDgzMjQzMDJlNzg2OTRjYzk0IGxlZ2FjeS10cnVuaworMTI4MzAgNjZhN2Q2MWNmZDg0YTNkZGE5ZDI1MWNiMDFmMmMwYWQyYWI2MmFkYSBsZWdhY3ktdHJ1bmsKKzEyODMxIGY0MzhjNmUyYjZjMThlNTdjZDkyNGQ2NjQ0ZmI5MjlhOTkzM2I4NjAgbGVnYWN5LXRydW5rCisxMjgzMiAyMDdiNDBlYzlhN2UzOTE0YmZhY2MyZDFhNmRmYjNmYjAxOGE3MzdjIGxlZ2FjeS10cnVuaworMTI4MzMgYmUwNTYwOTQ3OGJlZjA0Mzk1NWI0MzM0ZDJlOWVjMmI5Yzg3YzU1OCBsZWdhY3ktdHJ1bmsKKzEyODM0IGFiZDQyMDI5ZmEwMTAxZDU0M2ZlNjExNWJkNzA2ZjNmMGIyYWQ5YjIgbGVnYWN5LXRydW5rCisxMjgzNSBmZmY4MmQyZmIzNjllZmQyZWMwOWE2YmUwZjY5ZGQ5ZGM2ZDhmZGNhIGxlZ2FjeS10cnVuaworMTI4MzYgYjZlZGVjMWVmZTY0Mjc4NTFiYTE5MDg5NGMwZmY4ODI2MjM3NDVjYyBsZWdhY3ktdHJ1bmsKKzEyODM3IDYxMjI0NDU5YmIwOTM2MWIxMWYzNDBiNDlmM2IyODllMTAxNTNmM2MgbGVnYWN5LXRydW5rCisxMjgzOCAwOTNmYzI5OGFmZDZiMGUwMmU0MTFhNjQ1ZDFjMWVjYTg3YmI5NzZjIGxlZ2FjeS10cnVuaworMTI4MzkgZGRiZjFhY2I3MTcwMmRkNTE5MzRlZGZiZjU1MmI2ZDM1OGQyY2JiNSBsZWdhY3ktdHJ1bmsKKzEyODQwIGE4ZGM1OWI2NmY0OTY2Y2FjODNmY2EwNWI5YTExOTlhMzczYzU5ZTcgbGVnYWN5LXRydW5rCisxMjg0MSA1YzcwZWNkZWRlZmMzMzY0OWE3YzU1YjNlMmVmZjA5NTFlNzNhZmQ4IGxlZ2FjeS10cnVuaworMTI4NDIgNmVlMGVjZWI3NzVmMmQyMmU5MDFjMGNhYThmNTQ3Y2YwZTg4MjdhZCBsZWdhY3ktdHJ1bmsKKzEyODQzIDY1YWVkNTI5YWQ4YWRhZjM0NmQxNmQzZDlhNzdjZGVlMTIwZTY0MTkgbGVnYWN5LXRydW5rCisxMjg0NCAwOGQzMTk0YTNjM2ZjOGQ2NTI4MzIxMDdlZGQ2ZTY0M2JmZTQ1ZWRkIGxlZ2FjeS10cnVuaworMTI4NDUgOGQwOTJhNjcyZDA5YmIxOGQ4NWY1MDEyOTkwMTc4NTFmYTZjN2ZjYiBsZWdhY3ktdHJ1bmsKKzEyODQ2IGI5YTgwYmJiZTRhNWE2ODViMzg1YzJlMWVlMDEzZWU5ZWY3N2ZkMTQgbGVnYWN5LXRydW5rCisxMjg0NyA2ZGIzNWVlOTBiZmFjMDNlNWMwZmNlMzYwYTFkMGNmOGE2YTZmOTUzIGxlZ2FjeS10cnVuaworMTI4NDggZDczOWUxZWI2MTc1MWMxOTk1YTI2N2NkMmQ3NjZjYjBhOWQyZDdhMCBsZWdhY3ktdHJ1bmsKKzEyODQ5IDRlMmQxODk3M2I5NGEwMzc3ZjI1YjJhOGRlNmRkNGYwMTdlMTc3MzAgbGVnYWN5LXRydW5rCisxMjg1MCAxZDg1N2I1OTc1ODIzNzg3NjI2MjIzNWIxNjg3ZGJmYmNhOWRhYTQ1IGxlZ2FjeS10cnVuaworMTI4NTEgODkyZGJhN2Y0MGRlZWZlZWViZThiYTc1ZWM0NzgxZDI5NmE1NzY0NSBsZWdhY3ktdHJ1bmsKKzEyODUyIDdhMzljODczZGM4MTgwYzk3NGYxZTA0YTNjNzZmZmNjOTViYmZjM2MgbGVnYWN5LXRydW5rCisxMjg1MyA2N2ZmOWU3ZGM4YWZmNGEwMGU1ZGFlM2I1ZDJhNGRjOTkxZDk1ZGE4IGxlZ2FjeS10cnVuaworMTI4NTQgYTc5N2YwYzZjMmUxZGQxMzljMTQ5NTczNmNjMjNhM2JkOWFkOWZiMSBsZWdhY3ktdHJ1bmsKKzEyODU1IGU2ZDM0Y2MwYzc5Yzk2MmMzOWZlNjNhZGVmZDgzNzY2YzJmNmJmNDcgbGVnYWN5LXRydW5rCisxMjg1NiA2YjU3OTBjZTI1MzZkYzZlNDYxMjdlMWUyMTA3ZWE5NTgwNTY2ODEyIGxlZ2FjeS10cnVuaworMTI4NTcgNTBkMzA5OWQ1MGMyMWQzYzc4NmUwZjk2ODFmNTJmYmMzZjMxYzNkNCBsZWdhY3ktdHJ1bmsKKzEyODU4IDQwNzAyMmNmMTkzMWMxNTg3NDBlOWVhM2RlNTdjYTc5ZDc1ZTIyZmUgbGVnYWN5LXRydW5rCisxMjg1OSA4OTIzYWQ3ZTEzZjJiMDE1OWVkZTFhYjAzNmNjYTkzN2ZhZGY2OWIzIGxlZ2FjeS10cnVuaworMTI4NjAgZTk4ZTFlYTUxZjE2MjZkNWU2ZjRkNTg5NmUxNmMzZGIxMzIyNTY2YSBsZWdhY3ktdHJ1bmsKKzEyODYxIGRhMGMxMzMwZTY2ZWYyY2QwZmMwNTkzMGVjOTVjNWIyMTFjZjAxNWYgbGVnYWN5LXRydW5rCisxMjg2MiA3MGEzZmIxY2UyM2I0MWNiODI2MGUwOTI5MjFhOTMyZDgxNmQ4NzM1IGxlZ2FjeS10cnVuaworMTI4NjMgZWEwYmJjM2JmMWRmYTYxOGI0Y2FhMTllMzAwN2E2NjlmNGYwNGY3YiBsZWdhY3ktdHJ1bmsKKzEyODY0IDUwZTRkZGRiODI4YjIwNzEyZTU5NDkyOTg4NDk1OTlkYjk1YWMyY2IgbGVnYWN5LXRydW5rCisxMjg2NSAxNDA5ZTc2ODdhOWEwM2IyNzhkZmE0Yjk3NWI1ODEwZDlmMmE3ZjBmIGxlZ2FjeS10cnVuaworMTI4NjYgNGRhYWI3YTlmNTY2YWQ0MjE1NTI0NjkyNmY5NTg3ZGQ0Y2I0NGFlYiBsZWdhY3ktdHJ1bmsKKzEyODY3IGQ1MTY0YzY2YWNjOTYzYmJiZmYyMDIwNjJlYWZlZGNlOTBkYzVhOGEgbGVnYWN5LXRydW5rCisxMjg2OCAyNWQ3ZDRkNzM5OWYxMGNhYWFmZjkwODMxZWFjZWYyNzliMTEwNTk3IGxlZ2FjeS10cnVuaworMTI4NjkgNjVlNzIxMmRmMWJjZjFjYzE3YTRjOTZkOWEyODRhODczMjg2MmRkYyBsZWdhY3ktdHJ1bmsKKzEyODcwIGM1ZjQ5ZDRlMjljNTAzOTgzZTEyNThjMTZiZWE0ZWMyZGFjNWI4ZGUgbGVnYWN5LXRydW5rCisxMjg3MSA3OTVkNTFhZDIyOGEyNDBkZDQ2NjQ3M2ViNmEyOGRkMTNhM2VhZGMyIGxlZ2FjeS10cnVuaworMTI4NzIgMTMyZjk0NjQyYzc0ZDI4NzI0MzUzZGYzYjBlZTY5MmNhMGNiYzgzOCBsZWdhY3ktdHJ1bmsKKzEyODczIDk1YjkyMjVhNTJlNDViYjI1NmRiYWUxNWY1MTE0MWY2ODIyOGE4ODggbGVnYWN5LXRydW5rCisxMjg3NCA5NjkxMzkwN2FlNjhkOTQ2OWM1MTJkM2Y4NDkwNmNkODAwNDczNGRhIGxlZ2FjeS10cnVuaworMTI4NzUgZmI3ZmE0NzYyMTFmMzVkMTU5YzIxMTRjMTRhNGI3OWI2MjlhYTllOSBsZWdhY3ktdHJ1bmsKKzEyODc2IDA3ZWU3OTU3NzRkODliNDFiZWIzYmQ1N2ZmZjdkODk0ZWMyZGVhNTMgbGVnYWN5LXRydW5rCisxMjg3NyA0ODE0MWRhNTE4ZGZhN2NhYzI5ZDdhNmVhNzE0MDE1NDI1YjhiOGViIGxlZ2FjeS10cnVuaworMTI4NzggNDE3YWE0MjUwMTNhZDczZWEzODAyZjVmMDM2ZWIzY2Y5OWFhYjMzMiBsZWdhY3ktdHJ1bmsKKzEyODc5IDMzNzczM2NlOTU5M2ZiMWVhMDVkNjk3NmE3OWE0OWUwMjY5MDA2NDkgbGVnYWN5LXRydW5rCisxMjg4MCA0Y2JiMjEyMmM3MzU4ZjQ4NTIyYTQxMTIzZjliMWU2MzVlM2FmMmU2IGxlZ2FjeS10cnVuaworMTI4ODEgZDk4MDg1ZGU5N2QxZmU4OGE1Y2E4ZDIxODQ5ODY4ZDY2MDA4Zjk1YiBsZWdhY3ktdHJ1bmsKKzEyODgyIDllOTY5NWUzMTRjOTYwNzAzNjIyNmY5NTYyYjZlMzYyZTM4ZTUzODIgbGVnYWN5LXRydW5rCisxMjg4MyA2OTg5OGFjYjIzZjI4MWJkNjljYTJlZjc0ZGY5NWM0OGRlYjQzODY5IGxlZ2FjeS10cnVuaworMTI4ODQgZmI1MWFhODI0ZGYyZDQ3MjE3ZDQ2N2YxYzRiNGEzMjkxZTRhYjViMSBsZWdhY3ktdHJ1bmsKKzEyODg1IGUyYTA4YTgxZTU2ZjRlZTI4NTY5NWUyMWE5ODgzMzQ4NzA2YWFiZTUgbGVnYWN5LXRydW5rCisxMjg4NiA3MGRkOTFjMjE1MTM0ZmFlNGVkZmNlMTg1NmU3NDdlN2QxYmQ5MjI5IGxlZ2FjeS10cnVuaworMTI4ODcgZDNkYzYyMDA0Nzc2ZGYwMmY0MzA3MGQ5ZTVmZTExYzg4MmU2OGFkYSBsZWdhY3ktdHJ1bmsKKzEyODg4IGU5MzM1MjI4NmFhYzZkMTllODNkNTYwN2RmNTBmMWQ4NjExOTIyYTUgbGVnYWN5LXRydW5rCisxMjg4OSBjNTg5MDIxYzQ3YzkzMzdlZWY0NzI1MDIxNjY2Nzc3ZTJmNWZhOTBmIGxlZ2FjeS10cnVuaworMTI4OTAgOWM1ZDliZGY3ZTQyMzQxOWJkZmJiZGM5ODQ5NzMwNWIwNGQ1ODIzZSBsZWdhY3ktdHJ1bmsKKzEyODkxIGY0ZTYwNWJkOGYxYjc2YjY2MmY3NmUwMDM5ZTEzZGY3ZmE5OGE0N2YgbGVnYWN5LXRydW5rCisxMjg5MiAwMTczYTVmNDcyMDZkYmU0MWZhMjkzZmI4NmFhYzQ1ZGMzMmEyZmY1IGxlZ2FjeS10cnVuaworMTI4OTMgZmI4MTY1OTQ4OWExNjY1NjRhMWViYWM4YThkNGJiZjFjMThkODBhNiBsZWdhY3ktdHJ1bmsKKzEyODk0IDdiODEwYWEzNWI1Y2U4NmRiMTgwMDJhZDg1MDlhMWUxN2I4MjBlNDQgbGVnYWN5LXRydW5rCisxMjg5NSBmNTRiYWM1YWY5OGNhMDE0N2Q4NWRhZmM0MTdjNzg2MTA4NDI4MGIyIGxlZ2FjeS10cnVuaworMTI4OTYgNzQ5ZTFiM2Q4MTczYTMwOTNjMzcwYjkyMTJlZTEwMGQ1Y2MxNTNjYSBsZWdhY3ktdHJ1bmsKKzEyODk3IDUyMjA2NTMyZDM4OTFhMDkzM2EyYWM5ZjlkMzM0NjBkODY4NzI1NmMgbGVnYWN5LXRydW5rCisxMjg5OCBmMzQzMzI5NTAwYmU3OWIxMjdkNjM2ODJkOTY3NjY3ZTI2YmFhMjk3IGxlZ2FjeS10cnVuaworMTI4OTkgYzA2NmZkODQzM2JhODRlYzA1M2QzZWJhNGI3YzA3Yjg1ZmRiZDJmNyBsZWdhY3ktdHJ1bmsKKzEyOTAwIGRjOWIwZDQxOGMwMDliYjhkNjhhNGNhNjNhYmQxMWI1NTA1NjI5NGIgbGVnYWN5LXRydW5rCisxMjkwMSA3ZjE0N2M0ZTQyMTliMTZkNmUzNGRhMzM0Mjg2NmE4MjM0OGI4MzFlIGxlZ2FjeS10cnVuaworMTI5MDIgMmE0YzE3NmRlNmNkZDNjODg5MTc2NmQzMTA5OGMxODE2OWE2M2RmNSBsZWdhY3ktdHJ1bmsKKzEyOTAzIDk0YWQ5MGZkMjcxMjZmZTViZjY4ODg5OTVlMjY5MTM2MjZiZWU5YTYgbGVnYWN5LXRydW5rCisxMjkwNCBmODFkYjczOGFiZDkyYzI2YjBkNDEzMGZhNzFhNDNiNGQxMTk5OGVhIGxlZ2FjeS10cnVuaworMTI5MDUgOWQ0ZWZjZTExZjA5YjE1OTg2YTExMDg0YWIyYTI5ZTMwOWI1YmJkNSBsZWdhY3ktdHJ1bmsKKzEyOTA2IDljNmRhMzBhZTY3NWRjYTVjNjlkZWQ3MDU2ODZkYWY4OGYxYWJjMjkgbGVnYWN5LXRydW5rCisxMjkwNyA4MGQyYjlhZmQxOWNjNTU0MGYxNjJhYzE5ZDBhODM3ODkyYzc0N2I3IGxlZ2FjeS10cnVuaworMTI5MDggMmMwMzljMDEwNDM3N2U5NDVmZWUyM2M4MDZjYzJhZWJjMGQ5YzM2ZSBsZWdhY3ktdHJ1bmsKKzEyOTA5IDE1OWYxYzNhZmUyODRlOWVjOWFlNTA0ZGU3MzRhYmU2MGNlMTYxZjggbGVnYWN5LXRydW5rCisxMjkxMCBjY2VmNWMwZThkZGM2OGNlNTE5NzFhY2Q5NmUzYWUyNmI2ZTgxMzkzIGxlZ2FjeS10cnVuaworMTI5MTEgYTE1NDRmYzQ5YTc2MzQ1NWEzZTA3Y2VmNWM5Mzc4YjZlMGE4OGJkYyBsZWdhY3ktdHJ1bmsKKzEyOTEyIDA1MDgzMmQ4MzhjYTVlZjg2ZjdhNzFhNjZhZTFmNGI3MmFlYzUyODQgbGVnYWN5LXRydW5rCisxMjkxMyA5NzgyMzE4NDI2NmEwMTkwMjAwZWIzOWNjYTkwZDE4NmIwZDY5ZmI1IGxlZ2FjeS10cnVuaworMTI5MTQgOTk1MmYxNmJiZThjZTNlOTcyZjAwNWUyMTJhNGNhY2UxNDZhNTY3ZiBsZWdhY3ktdHJ1bmsKKzEyOTE1IGU5ZTY5YjAyZDBmMGQxMGZmM2FlZjg2M2ZkNzBmYzVmOWJiYzU2YjAgbGVnYWN5LXRydW5rCisxMjkxNiA0MzYzZmIyZDQzNDUwM2Y3NTFhODU2OGM1NDgxODQ1ODE2NTliZjc3IGxlZ2FjeS10cnVuaworMTI5MTcgYTYzMGU1NGU5N2YyOTNiYmI2ODFmODk0M2I4ZTFkODNkMzJlODlhYiBsZWdhY3ktdHJ1bmsKKzEyOTE4IDQ4ZmJjNTVjMDU1MzQxODgwZjk1MTNmMjlhZDJiODNjZjVhZTljYTMgbGVnYWN5LXRydW5rCisxMjkxOSA1MjQzOGM4N2ZlZGNjMjI2YTY3YWE1Mjg3NjljZmQ0NTNhYjBhMGU2IGxlZ2FjeS10cnVuaworMTI5MjAgZGM1MDJjZTc1NzVhMjA3MjEwMTY5NDA2ZmFjMTUwMjk4ZTUyM2EyMCBsZWdhY3ktdHJ1bmsKKzEyOTIxIGI4ZTRkZTFjMzVjZGFkOTA5NmRhMDU2ZTYwYzQzZTExMzY1MjZiODMgbGVnYWN5LXRydW5rCisxMjkyMiBjYWJhYjFmNTU5NmUyODUyOGIyYjJlOWQ4YmE2NGFiYjcyZTdkNzJkIGxlZ2FjeS10cnVuaworMTI5MjMgNmQ1ODI3MGRiY2Q0M2Q0NDhiMWE4ZDgzMTc0MmFlYmQwOTA4MDRkOSBsZWdhY3ktdHJ1bmsKKzEyOTI0IDBkNmJkMzkxYWNkODM3MDk3NWU3NDkxZmI0ZDU4MjcxOWQ3OWZiNWYgbGVnYWN5LXRydW5rCisxMjkyNSBiMzY0NjkzOTgyNjI2OWUzZWVhODlmNzE3ZWVkOGI3MTU5ZGMzN2I0IGxlZ2FjeS10cnVuaworMTI5MjYgOWE0YmFmMGM1N2VhMTk0MTllZGQ3OTlmYWIwMDMzOGNiNGFmZDg1MiBsZWdhY3ktdHJ1bmsKKzEyOTI3IDVjY2QzYjg2YjFhNjM3ZmQzMDJjYjdjZTBiMzk0NTIxZWIwNWNkZTAgbGVnYWN5LXRydW5rCisxMjkyOCA0ZThkZWZlYzA5Zjg1MDQwNzVjOWYwNjAwMzE0ZWFkNzNhN2YzNDM2IGxlZ2FjeS10cnVuaworMTI5MjkgYzE3Njk2OGJjOTFjMTA5MzI4YzRkOTMxODEwZWM2ZWMxZmY0YzZiZiBsZWdhY3ktdHJ1bmsKKzEyOTMwIGU2Nzk5YTg1NWFmNzhjNTQ3ZDRlOGMyZDhlOTM5MWQxYjI0NzFkOTcgbGVnYWN5LXRydW5rCisxMjkzMSAzNTcxYjRjMWJjMGUzZDM3Y2RkZjc5MTVlZjVjYmMzYzhjN2VkMDk3IGxlZ2FjeS10cnVuaworMTI5MzIgZjlhZDE0OGM5ODBjY2UwYmY3MmZkOWU1NDkwZDU1ZjU0Zjg5MjE2MCBsZWdhY3ktdHJ1bmsKKzEyOTMzIGQ1OTJmZTVlMDlkNTc0ZDBkZjM1N2Q1NjVhN2VhNGQ5N2EyYTk3ZTUgbGVnYWN5LXRydW5rCisxMjkzNCAwNzg5ZTBiNTU1ODdiYjIxODFmM2VjZDZmZTBjYmU2NWJmMDgzYjYwIGxlZ2FjeS10cnVuaworMTI5MzUgMWNjNWQyMGQyZWQ4NDI5NjgxZDViOTY0NDdiMTA5NWFhNWRkY2Q5YyBsZWdhY3ktdHJ1bmsKKzEyOTM2IDJhYjBlYzg0NzE4NDc2N2MzODMwYzdmMjMxNGVjOTVlOTVkMzZhMGIgbGVnYWN5LXRydW5rCisxMjkzNyBhNDc2ODMxNTk0OGRjMzEwN2NkMGZhOGMxZGZhMTA0YjRhNDcwMzYxIGxlZ2FjeS10cnVuaworMTI5MzggMzI0NDUwZWE1NDUwMmI4OTM2MjIyMDc5MTE2YTBiOTdiZWFlY2RiMCBsZWdhY3ktdHJ1bmsKKzEyOTM5IDdkM2E2MGY0ZTBiNDczNDZlZWEwMWFhZTA2NjU2NzI2MDEzMWI0YzkgbGVnYWN5LXRydW5rCisxMjk0MCAzYmM4ZjUzMDQxYzAxNWJkYWY0ODE1ODYyY2RjNmM1NjNkNGE4ODYzIGxlZ2FjeS10cnVuaworMTI5NDEgZWU2ZmE5Yjg2ODg1NGFjMTMwNzRiMWIxNjBhNmJlZWY3MWZlMmZlNyBsZWdhY3ktdHJ1bmsKKzEyOTQyIDljZTE0NzRhYmRkZDdjMzY5ZDg0ZDI2YjEwZGQ0MzJlMDZjYTFjNmIgbGVnYWN5LXRydW5rCisxMjk0MyBiOTQxNDRkZTJmMzJiNTNlMmZkNTE4MjViZGE5MjAwMTM4OWRhNmQyIGxlZ2FjeS10cnVuaworMTI5NDQgOWJhNWRmZmNjYjFiZGI0MzYzNjI3MThlMmJiYzI4ZWYyMWIwYTM0OCBsZWdhY3ktdHJ1bmsKKzEyOTQ1IDkxODRjOWUxMDhmOTdiYjY2Y2UxMjMzZjk3MzhmOTJkYzJiMWZhMmIgbGVnYWN5LXRydW5rCisxMjk0NiBmM2E0YzRmNDA0NDY3ODVlODU2Njg0NzdlZDM4NGY0YWExYjkxMDlhIGxlZ2FjeS10cnVuaworMTI5NDcgMmExNDllOTRlZjRhYzE0NWQ1ZDIxZTY1MjFhY2Q3NzE3ZjA0YTA2MyBsZWdhY3ktdHJ1bmsKKzEyOTQ4IDAwYzM3Y2I3NWMyODU0OWQwNDk3ZWI2ZjRiZThkYjM1ZTVkMGM3MjYgbGVnYWN5LXRydW5rCisxMjk0OSBiZjI2YjdjMWU2ZGVjMTljYTdjYTk5MTAyZGJlZDYwOTczZmIwNmMyIGxlZ2FjeS10cnVuaworMTI5NTAgZDM3NjI5MzNiZmY4ODlhOTA4MzZkZDU1MzA2ZDZjYmZlMjA0MDUzNSBsZWdhY3ktdHJ1bmsKKzEyOTUxIDk3YTA2ZWM3YzZmNDliNzIzYmE1NDIxZjQzNGI0ZGY1ZGEwMGE3ZGEgbGVnYWN5LXRydW5rCisxMjk1MiA3ZmVmNjBmOGJjNDU1NWU2M2I1NzI5NmYwZDFlMDhjYjA2YmQ3ZjUwIGxlZ2FjeS10cnVuaworMTI5NTMgNWNmYmQ0ODlhNWQzNGQwOWQ5ZTFmOTdjYzU3NGY1NmEwNzE5NTk3OSBsZWdhY3ktdHJ1bmsKKzEyOTU0IDJiMWRmYzEzOTUxZGZiNjMwYWE2NmY2ZmQzYzJhMjU2N2IxMTM1NGEgbGVnYWN5LXRydW5rCisxMjk1NSBjOWUxMGVkMjZkOWFiMTAwMDVlYjA2ZGM5Y2ZjMDVkNTU4YzUxOThjIGxlZ2FjeS10cnVuaworMTI5NTYgNWI1NGZhNzc1ZTU1MGVjZDhlYjIyZjJiYmY4ZGQzOTU2MWJjODExYiBsZWdhY3ktdHJ1bmsKKzEyOTU3IGRhZDE0ZmZlMWMyMmEwNmIwNWY1OTZmMDEzMWIwMGZmNTRlN2Q5OWEgbGVnYWN5LXRydW5rCisxMjk1OCAxMTE3OGM4ZDZiZTJhNmMyOTNhOWJjNDU2MGVkZTQxYjI3NWI3NmE5IGxlZ2FjeS10cnVuaworMTI5NTkgM2YyMTNhOGZjMDRlMDZmZGZlYWExYjg3MjViZmI4ZTIwZTg5Y2JmNCBsZWdhY3ktdHJ1bmsKKzEyOTYwIDgyYWRjNTRkZDM3N2M0NjQ0ZjM0YjBkZjk1OThmMGY4Zjg3MjM1N2IgbGVnYWN5LXRydW5rCisxMjk2MSA3MDkxMGUzMTI1YTI3NjMxNDJmYjA4YTg5NjgxZGVkN2IyZTg0ZWZkIGxlZ2FjeS10cnVuaworMTI5NjIgNGMxYmJlZGFkMTRiZTYzY2QwZjQ4NTNkNDU0ZTE5MzVkOTUwNmE4NCBsZWdhY3ktdHJ1bmsKKzEyOTYzIDYyNzgxOTE0ZmFkYjg5M2NkNmFlM2ZjYTFiZjdiNjNlZTM1NWU3MmQgbGVnYWN5LXRydW5rCisxMjk2NCA0YWJjNWFiYWVjOWFiODgwZjUxMjRhMTllZjI3ZTgzZDgwMmFkZTU5IGxlZ2FjeS10cnVuaworMTI5NjUgYTY0NjRlYjk4N2U4Y2VhZjM5ZmMxYzhlMzUwMDBjNzEwNjY3OGNlNiBsZWdhY3ktdHJ1bmsKKzEyOTY2IDUzYzFmYWVjMWQ0NjY2YTUwNjQzNTIwYjkxNjE3YzQ1Nzk2OWM3M2UgbGVnYWN5LXRydW5rCisxMjk2NyBmNzRlZjE5NzFiZDEyNjgwODRlNTYyN2QyM2QwZWY4N2NiZTA4YmNmIGxlZ2FjeS10cnVuaworMTI5NjggNTg2ODg0NjIwMWVkZTIwMTM5ZjAyNjc2MTdiMGQxYmJmMjVhMDliYSBsZWdhY3ktdHJ1bmsKKzEyOTY5IDM2YmE0ZGJmZjY4NmU4NTNhYjBjNGQwNjJlNjkwMGQxZjZhMzUxYzggbGVnYWN5LXRydW5rCisxMjk3MCAyNTVhYmFiM2M1NzQzMDUwOGJlMzFmM2Y1MmIzOTU2MjM1OGYzMTA5IGxlZ2FjeS10cnVuaworMTI5NzEgOWNkNGZkOTI2ZGY2NDQ5OWIzYTA0YTc3MmJjODA4MDNkZWQzNWViYyBsZWdhY3ktdHJ1bmsKKzEyOTcyIDYwMWI0ZjJkNWZjODUyNDNhMGJiMDZiNzI4ZmY5NDgyYzFiOGVmNWQgbGVnYWN5LXRydW5rCisxMjk3MyAwMjJiMTc4ZmQwZWQ1Nzc4MDVlNGYxZGY0MTA0ZWYyNmVmYTRhNTM5IGxlZ2FjeS10cnVuaworMTI5NzQgYWMzYTQ2NWU1MGE2N2JlOTFhN2UzM2NhNjEwMzBkZDE5N2Y4NWI1NSBsZWdhY3ktdHJ1bmsKKzEyOTc1IDRlZTkwMDAwNWVkODhlNjdhZDhiYWE1MjcwYjcwNTE2NDM5YmMyYTMgbGVnYWN5LXRydW5rCisxMjk3NiA2M2M0NjNhODUyOTM2ZWY0MDBhYWIyMTMyYWQzNWY0ZGFkZmFlYWI4IGxlZ2FjeS10cnVuaworMTI5NzcgZjg1MGVmM2RhNDNhZjQ0ZGRlNDQ3NzM5ZWEwN2VlMDE3NmZkOTU0MCBsZWdhY3ktdHJ1bmsKKzEyOTc4IGM4MmE4NWJhMWRkZWY4ZTgyODViZTBhNGNkZTE4MTFjZGVlZjg5ZGEgbGVnYWN5LXRydW5rCisxMjk3OSA1NzcwNGYwYWQ5YjA1YzA3NDAxNDcyNjI0NDZmZGU2ZGQ0ZjA2ODA4IGxlZ2FjeS10cnVuaworMTI5ODAgNGIxOTQ2MTc4MGI5OWEwYzU5NjQ3OGVlOTE0ZjZlMTU4ZjdiMGI5YSBsZWdhY3ktdHJ1bmsKKzEyOTgxIDAxMjUwYjgzMjM3NGFiMmM1NmZmYWI4OGI2NmRmZGYyOTdlYTkxZDMgbGVnYWN5LXRydW5rCisxMjk4MiBlZTYxMDk0OWY5MDIyNjRlYWMxMDMwZjIxM2JjMzJhNDRlY2I0ZGRmIGxlZ2FjeS10cnVuaworMTI5ODMgYzI1NTRiZjYxN2MzMjU2NTk2YmY1MTkyZjJlNmQxZTYzYTM5Y2NkMSBsZWdhY3ktdHJ1bmsKKzEyOTg1IGJhZTY1MGY1N2M0MTUwYmIwYzQ4MTZlYTg3MjkzNDIyMWM1MzlhYTIgbGVnYWN5LXRydW5rCisxMjk4NiA3NTY4M2ZkMzllOTFlYTRjZGZlM2JjZjQ4Njg1Zjc0NWE0NDA5ZmI4IGxlZ2FjeS10cnVuaworMTI5ODcgNzQ3NGFkN2UwYTQ0OWFiOTE1MDIyOTViY2FlOGQ1YWQ0YTY5NzkxNiBsZWdhY3ktdHJ1bmsKKzEyOTg4IDUwMGY4ZWM5ZGVkMThkNmRkNDk4NWNkY2NkODRjNDY4ZDk5ZGM4NzMgbGVnYWN5LXRydW5rCisxMjk4OSA4ZDExNWUxMTFhMTc0MGU5M2UyNTY4Yzk0ZTY3ZTI0M2NmZmUxZjBiIGxlZ2FjeS10cnVuaworMTI5OTAgMzBjOTRjZDQ5YTY4OGE2NjA4YmNlMjhjYjIxMTYwNmFjZGExY2Y2MSBsZWdhY3ktdHJ1bmsKKzEyOTkxIDA1ZTk3ZjZhMzYzOGIzNTBlYzM5NWUwMWViMWE0OTk1MTA0NGZjMjkgbGVnYWN5LXRydW5rCisxMjk5MiBlY2RmY2VhMTI0Mzg1NmM2MjdkNjUwMGVmYzAyN2ZmMGU4MDEwOWQ4IGxlZ2FjeS10cnVuaworMTI5OTMgODc0OWU4OGFiNDA2NjBjYzExOGY3OTJjMjQ5YTQ1YTU3OWM4NTA4OSBsZWdhY3ktdHJ1bmsKKzEyOTk0IDM5MGU0YzEwM2JlMjY4OGUwYTBjYTdhZWQ1ZWU2MzFkNGNjNzZiNjUgbGVnYWN5LXRydW5rCisxMjk5NSBiMjM1NzkyNGE5YTkyNmNkY2YzOWI1M2Q5MzIwNDdmYzAyMzhiZmMxIGxlZ2FjeS10cnVuaworMTI5OTYgNDMwNTJkNWI5ODA4MzQ5MjYxYTc4OTYzMTU1MzA0NTVlZDMxYWFiOSBsZWdhY3ktdHJ1bmsKKzEyOTk3IGY1ZDdjNDk0NWQ1ZjViNGRjOTJiMTBhOWU4MTE4MjJiMDUyOGU5M2UgbGVnYWN5LXRydW5rCisxMjk5OCBlNjRjOGI4NGUyNGI3OTVmYjAwZTk3ZmQzMGE0MWQ3ZmFhMjQ1MThhIGxlZ2FjeS10cnVuaworMTI5OTkgMjQ2YjEzNDEwYTMxN2U0ZDBhY2I0MjU0NGMwYjI4YjY4NWJjMjBlNyBsZWdhY3ktdHJ1bmsKKzEzMDAwIGJhMWEyN2Q3M2NkYjBhMzNmYWJjMzc2OGRmZjljYjM5MTljZTEyY2IgbGVnYWN5LXRydW5rCisxMzAwMSA4ZDQwZTZiYTRjOWUyMTQxNmEyOGJlMzhkNzk5ZTJkMjgxNDA5OGQ4IGxlZ2FjeS10cnVuaworMTMwMDIgZmU4NjQ1ZTQ5MzE0ODBjNWI3ZTc3ZjgyYzU1ODJjYzVjMzg3OWQyNiBsZWdhY3ktdHJ1bmsKKzEzMDAzIDk5MzkwODI4NmFjNzE2NWNhZGExZGRhMTBhMTJkNzcxNzk0MWRiNTYgbGVnYWN5LXRydW5rCisxMzAwNCBjMGYxNDdmNGYxMDBkYjk5Yjk5OWQ0NTM3ZDdlZDhmOGU3ZGRiYmQ2IGxlZ2FjeS10cnVuaworMTMwMDUgZTA4ZGEzNGM0NTgyZmVkYTFlZDNlN2E3N2U3YTM0MzRiYmQ3NjZiZiBsZWdhY3ktdHJ1bmsKKzEzMDA2IGZlODgxZjQ0NmM1ZDI4ZmVhOTdlZmExODYyNWMyNjMxMjY4ZDVkZTEgbGVnYWN5LXRydW5rCisxMzAwNyA1MzkzY2U1MjA3YzcwNjUxNjBjZGRjZDBkZDE0OTk4ZWFhOGQyMmY4IGxlZ2FjeS10cnVuaworMTMwMDggNDhjZGRkMGNjNzMzMDc4MjIwYTIwNjRiZGVjZjFmYjBmM2EwZDliMCBsZWdhY3ktdHJ1bmsKKzEzMDA5IDIwZmViYTk2NzQzNzE3YjVkNDU1NWViNjNjZjQ3YWY1ZWI3Y2Q5YmIgbGVnYWN5LXRydW5rCisxMzAxMCA0NWU5OTc1Y2IwOTM5NDg1NzYwMjkwZDJlMmNkNWI5YzUyYTM4YmMwIGxlZ2FjeS10cnVuaworMTMwMTEgNzUzZjNmOTVjNTBmMTVjOGQyYWM1OTRiMzIzZjA0Mzc2NTQ0OGMwNyBsZWdhY3ktdHJ1bmsKKzEzMDEyIGQ3OTk4OWE0MzVkOTJlMzFiNzIyYmE3MDZlZWQwOGUzZmY0NWVhNGQgbGVnYWN5LXRydW5rCisxMzAxMyA2NWIzY2ZlNmU2NjY5Mjc5NzEwNWNiN2E2NjZjODBlNWQ3MWY3OTVjIGxlZ2FjeS10cnVuaworMTMwMTQgYzNlZGMxNGMzODgwYTM5NGRlMzExYWM5NzE0NzZiZDU0OWY4OTQ5MyBsZWdhY3ktdHJ1bmsKKzEzMDE1IDIxOTlmNzBiMGVkYTcyYzg5YzBjMDg2NDI3ZDRiNzcxODM5NjI2YjAgbGVnYWN5LXRydW5rCisxMzAxNiBjYTQ0ZmY3NDgyYzc3NWQxNmI3NzZkMmM5MjBjNmYxNTY1YzdjYTU1IGxlZ2FjeS10cnVuaworMTMwMTcgODFmNGE3N2U3MzM3MzAxYjM2NjUyMGQ4Yzk3Y2Y2Y2JkMzQ1MWIxMiBsZWdhY3ktdHJ1bmsKKzEzMDE4IDk2YmVhZWFkODc0Zjc2YTA3OTJkYjNlYTRhNWMwNDMzY2Q5NmQ4ZjcgbGVnYWN5LXRydW5rCisxMzAxOSA1NjEwNTQ0OTc3MWE2ODQzM2I5ZmE2ZmQ3M2Y5MWEyZThiYjA2MGE2IGxlZ2FjeS10cnVuaworMTMwMjAgZDM4NDg2OGFkNDYyMmViYjkwYzg2ODFhMmYxMjVmMzkzNzRjOGMyYSBsZWdhY3ktdHJ1bmsKKzEzMDIxIGUzZjU5YTA2NDcyZTNhNTY0MzM5OTdjYzY1OTM2MGM3NGQ5OWFjNmYgbGVnYWN5LXRydW5rCisxMzAyMiA5YWE2NWQ0OGRkMDUxNzc1ZGExMjZiMzY0Njg1ODliMTVmZjk4ZGFjIGxlZ2FjeS10cnVuaworMTMwMjMgYjE5ZjJhOTgyMDMwNWY5MjU0NDczYmViNzVkNTAzYjkzYzJkYzI4NCBsZWdhY3ktdHJ1bmsKKzEzMDI0IDdlZTFlMzEzNDE0NzNmNTFjMjRkZTAxZTgzZWIxYjVhZjZiMWU4YjUgbGVnYWN5LXRydW5rCisxMzAyNSBmMDA1YWM3MzU4NjM0MTNhZGFlZmE1YWIwMWI1OTU4YjQzZTNjNmI3IGxlZ2FjeS10cnVuaworMTMwMjYgYjVkZWE0Yzc5ZDI0ZTBhMGI1NjBiZjY0YTg3YTIzZTYwNzIwMDg2NyBsZWdhY3ktdHJ1bmsKKzEzMDI3IDQ3NGM1YjgyZDdkZTk5ZjdlZTA0MmEwYzZkZmJmMWEwM2YyZTdlYWIgbGVnYWN5LXRydW5rCisxMzAyOCA4NzhhNTRhMDYxMTdiMzliOTk0YjllODNkYWYzMTg3MzRlMTlhYzQ5IGxlZ2FjeS10cnVuaworMTMwMjkgNjFiZWMxZTVmYTU5M2E5NzU2NzkzNDI1MWI2YWMzYmU0Nzc0ZTIwMCBsZWdhY3ktdHJ1bmsKKzEzMDMwIDQxNTdmMzg2MmEwOWRmMTcxNzQ2YjFiZGI3YWU3MDNiYjRlMzgzYzIgbGVnYWN5LXRydW5rCisxMzAzMSAzZWVmZTZiMDg2NjJmNDUyOWEzMmYxYmVmMjBkNDY0YWU3YTY0Y2RmIGxlZ2FjeS10cnVuaworMTMwMzIgZDRjZTlmMWY2MjY2NmU0ZDg4ZDhiMmFjYzVkYzQ3ZDhjN2JkZmQ0NSBsZWdhY3ktdHJ1bmsKKzEzMDMzIDU0MGM4MTczZTRmZGJmZWNiYTI0NjU0N2M3YjgxYWY5NTM5MDYxMGQgbGVnYWN5LXRydW5rCisxMzAzNCBkODM0ZWNkZjhjMjZlMGRmOTIzMTg3ZjIwYmE0N2FjYTZlZjJlMjIwIGxlZ2FjeS10cnVuaworMTMwMzUgOWVjOWFiZmVjNzk0ZWMxNDFkN2NkNjljMGU1ZDA2ZDIxMzVlNTU0YSBsZWdhY3ktdHJ1bmsKKzEzMDM2IGMwNGYwM2U4MmE3NTQzODIwODA3NzMzYTZmZjdlZGZkNTBkMjAzN2QgbGVnYWN5LXRydW5rCisxMzAzNyAzMmJhMDljODY5MTdiYjcwZjVhNDg2OGI2NGJkNjVlYmE1ZWRlMzY0IGxlZ2FjeS10cnVuaworMTMwMzggYTRhMjY4YjcyNWIyYTQ2MjM2ZjgwZTdmY2MxYjNmYjY2MWI5Y2U2YiBsZWdhY3ktdHJ1bmsKKzEzMDM5IGI2MjcyNGIwOTMwMmU3NDljYzU5M2YzODUxOGUyODgwY2ZmNmY5YWEgbGVnYWN5LXRydW5rCisxMzA0MCA5MzQ3MTljMjVhZjgyZWRlZjE1OGViN2UyZmNiZDFmN2RmZDdlMmI5IGxlZ2FjeS10cnVuaworMTMwNDEgM2ZlOTVjMmIzNzEzNGVhNjk2ZTBmZTJlNjIyNzgzNGEwNzA2N2QxMSBsZWdhY3ktdHJ1bmsKKzEzMDQyIGNjZWUzYzI4YjdlZmYxYmY1ZTFkMTA3MWNlZDc0Zjc0YjkwYjJhOTggbGVnYWN5LXRydW5rCisxMzA0MyA1ZjQ1NGI3MDYxNTZlYTMxYzg4YzlmYWU3MGZjNmUwMThjNWU1NGVjIGxlZ2FjeS10cnVuaworMTMwNDQgMGJlYjdkMzZjMWE5NzY5NDcyNjExMjA4ZjM2NDRhODcwNzEyM2RmZSBsZWdhY3ktdHJ1bmsKKzEzMDQ1IGYyOGU2YTNiOTEzNGUxODNlZjFmMThjZjNjMGU0ZjBlYTAxYjRiZWYgbGVnYWN5LXRydW5rCisxMzA0NiBlZGM3YjI4ZDkwNTIxMTM2YjUzZGQ0NzQzNzlhNTMyODlmNTY3MWFhIGxlZ2FjeS10cnVuaworMTMwNDcgNWU5ZWEzZWFiNzdjODEwMjUzMDc3MTVkNTE1MzJlYmVmZWYzYTJkZCBsZWdhY3ktdHJ1bmsKKzEzMDQ4IDM0MDBhYTFiMDA3M2ZjNzhjMzYyODZkNmUyM2U0NTcwM2U3MjkyYmMgbGVnYWN5LXRydW5rCisxMzA0OSBjMGE2OWVjZjk2NDZmNjFhNjBlZDFmNjhiM2YzNTJjM2EwNTA0NThkIGxlZ2FjeS10cnVuaworMTMwNTAgZTY4ZDUzN2ViNTBmZWFiNzcwNWZhMjFhNDQ3NWU4YzZiY2YyZGE1ZSBsZWdhY3ktdHJ1bmsKKzEzMDUxIDU5ODBiYjAwMWY4NjRlYzAwNjZlNGYzZmYwODdmNTlkMDBiMGQ0MDEgbGVnYWN5LXRydW5rCisxMzA1MiA4YzFjZmU5NjVkOWIyZGMzMWYxMDUzZjQwOGFkODMxMmY0YmNjODMyIGxlZ2FjeS10cnVuaworMTMwNTMgYWU2MWI3MGVmZGIzYTk0OGJmYTgxYzk1OTdkMDJmMTI2MWJlZGNjNiBsZWdhY3ktdHJ1bmsKKzEzMDU0IGM2OWJmZTBlY2JkODcwNmEzNWM3N2RkZWFhYjdjOTM2YjRhMzVmNmYgbGVnYWN5LXRydW5rCisxMzA1NSBhZmYwN2UwNDlhZWVmYTJiZTQzMjA4YWQwZDI2ZDczYzQ4YjMzYWQwIGxlZ2FjeS10cnVuaworMTMwNTUgMzlmYjBkY2M4M2RjMzc1YzE1NjViYTY1ZGJjZTBlZDU5YjEzNTljOSBsZWdhY3ktdHJ1bmsKKzEzMDU3IGE4MzdhNmFlZDgzZTZkZTJmMzQ3NzBlYjQ0YjI1ZDBmZjhmMmQwZTMgbGVnYWN5LXRydW5rCisxMzA1OCAwNWNmYTI4ZTY1ZjYyNDUzNzIyMjQ5Y2I4NGQ5OGI0YmE0NzQ4YWZmIGxlZ2FjeS10cnVuaworMTMwNTkgMjQzY2M2ZDljNWI4ZmJlMGVkYTE3ZjE1Njc5YzNhNzI0ZGYxNWNhYyBsZWdhY3ktdHJ1bmsKKzEzMDYwIGUzZTVkNzYzNjk1ODY3OWM0MTM2YTk3ZTg4OTY1NzEwMmZjNWU5OGQgbGVnYWN5LXRydW5rCisxMzA2MSAyODZiMmNlNjUyNDg4NjQ5M2Q1MDNlZWVkNTEzMmRmZTJkOGU3OTg3IGxlZ2FjeS10cnVuaworMTMwNjIgOGQyYThhNDlkOTgzOTIxMjE4YmE0YTA0MTU0YTgzMmE1YzEwNTdkNiBsZWdhY3ktdHJ1bmsKKzEzMDYzIGFmYWEzYWE4MzVmOTgzMzc5YTc3ODkzNTkxYjliM2NhYjFmNDJjMTQgbGVnYWN5LXRydW5rCisxMzA2NCA5NzBkNjFiYjZhY2Y5MzgzYjM1NmJlNGYxZjVmMGFjMzQ5Y2FlYjYwIGxlZ2FjeS10cnVuaworMTMwNjUgM2JlMDUyNWJmNDdmMWFjNDM2OGU5NjQyZGQ4NWJiNzViNzVmZmQyNSBsZWdhY3ktdHJ1bmsKKzEzMDY2IGE0MjgyNGNmMGIxODFlMjg2YjI1M2Q1YzA3NzJjZTViZWZkMzkxZTAgbGVnYWN5LXRydW5rCisxMzA2NyBmNmZjNjdkNzA1ZGVhZDJiZDQxZTA4NzUzMzYyNWQyNzU2MDBjN2U4IGxlZ2FjeS10cnVuaworMTMwNjggMDRhZmMxYWMxYTBmZDlmYzhiM2U5OGQ5YmI5YTRkMTRlOTcxNzJkMCBsZWdhY3ktdHJ1bmsKKzEzMDY5IDEwNGE0NDFiMmJjOGNkOTFkNTI5MDAyNzI4N2U5NDlhZjgwNDAxMDIgbGVnYWN5LXRydW5rCisxMzA3MCA3YmYzZjQxMmUxMzc4NjFiZmM2OTE5MjdiMmE4N2QyZGFjZTVmOTQyIGxlZ2FjeS10cnVuaworMTMwNzEgZGExNWVkMzE0ZTI0MjgxNDc2M2ZhNDlhMzI5NGRiNjM3OGYwODhkMiBsZWdhY3ktdHJ1bmsKKzEzMDcyIGJmZjMzODJjNmQyZjUxZWY4OGIxNjc1Yjk5OWEzYmEzYTVkMzkzNWQgbGVnYWN5LXRydW5rCisxMzA3MyBmNTgwNDYzMzljYmYzNWQ5YjVmMDg4YzI2ZGJmNjk2ODdiYzBhZTJlIGxlZ2FjeS10cnVuaworMTMwNzQgNGUwY2M2ZTAyYTBkZTljYzU2NmYxZjFkNjJiY2U1MmU3NzU4YTUwNiBsZWdhY3ktdHJ1bmsKKzEzMDc1IDRhZmYzOTE3NTEzNzFkYTVmOTU0ODU0YTllN2QyMmViM2U4ZTFiYmYgbGVnYWN5LXRydW5rCisxMzA3NiAxMGJkMmZiMmEwZDY3ZDlkM2ZlZGNiZDEwY2EzOGQwMDdiOTRjMjI5IGxlZ2FjeS10cnVuaworMTMwNzcgYWYxZTgxOWMwNDQ1NjliZmFhZGQxYjIxMGVhZDM4MjQ4YmFjZDhiZSBsZWdhY3ktdHJ1bmsKKzEzMDc4IGY5NmIyNzI5ODFiY2E2NGFkMmNjZGI3MGQ1MWY1OTliOTIxNjQ4ZjAgbGVnYWN5LXRydW5rCisxMzA3OSA1NjE3MmUwZWZiNzUyZWM2NTM3NDhmMjZiMTE0ZGQwNTNlMjk5ZDMwIGxlZ2FjeS10cnVuaworMTMwODAgNmU3ZjE0YWY4OWI3MWZlMjRhZDU4MWRkYjJhNmEyOWI5ZWZkZDg1NiBsZWdhY3ktdHJ1bmsKKzEzMDgxIDg4NWJlNjAxMDRkNDIzNTUwODMwMGJiNGNiODMwYzRmMmMzYTNlNDcgbGVnYWN5LXRydW5rCisxMzA4MiA2MzQyY2U0ZmY5NDY1NGYwMzk4NGZiZGFmYTVhOWY2NjRhMjBhMzJjIGxlZ2FjeS10cnVuaworMTMwODMgMWVkMWViNWJjNmVjMGFlODA0MmMzNGY2NTVkYzRjNmQxNGZlODFjNyBsZWdhY3ktdHJ1bmsKKzEzMDg0IDQzOWZjODUzMjRjZGQyMjM3NDA2ZTk5NTg2NDE0ZjMzY2Q2ZTFkY2IgbGVnYWN5LXRydW5rCisxMzA4NSBiYmI1YWY3OGEyNTkyODkwOGI4ZmY3MGY3ZGZiYjBjZjZkMTJiNjYyIGxlZ2FjeS10cnVuaworMTMwODYgZjdiOGY4ODZiNTFhNzhjNDBhZTMyYjkwNjMyYjBhZWFhN2Y2YmM0YSBsZWdhY3ktdHJ1bmsKKzEzMDg4IDQ0ZGEwMzY1MWJkMDJhZDY0YjJmZjFkMDJjODY1NTgwOTc3NWU4ZDggbGVnYWN5LXRydW5rCisxMzA4OSBlNDExMTBmZjhjMmZhMDdiMTM2ZjQwZWM1ZGJhNDE3MTQ4N2YxZWVjIGxlZ2FjeS10cnVuaworMTMwOTAgNzAwZGFhNzU4NDdhNWQ0YjQyODYwMGEwMzM0NTlhODkxMjM2MGRjNCBsZWdhY3ktdHJ1bmsKKzEzMDkxIDhkYTQ2ZDZiOGFmM2IyNDE4NjUyYTRiODI0Y2IzMjU0NTJhNWRmNmYgbGVnYWN5LXRydW5rCisxMzA5MiAwNDBiNTI4NjhmZThjZTIyNjgxNTk0NmFmYzBhOTQxMjc3ZDBlZWQwIGxlZ2FjeS10cnVuaworMTMwOTMgMjUxYmFhMDMyYWYwYzNjYjJhOTAwNWQzM2EyYzk0MmJmMzNjNDE0OSBsZWdhY3ktdHJ1bmsKKzEzMDk0IGNlODYxYjQzZWY1MzU2ZjA5NGFmYjczYTNmMWM3OGJkNjc0ZmJjNjUgbGVnYWN5LXRydW5rCisxMzA5NSAwOTY1YWEyZGY1Y2FkOGM4YzgwZjI0OTkwMGNhYjRkMTI5NmJkY2FlIGxlZ2FjeS10cnVuaworMTMwOTYgODNkMzhjNGFkMWRlZmIwOGUxNWY2MWNlZmZiMGQ5YzdlM2QzNDdhMyBsZWdhY3ktdHJ1bmsKKzEzMDk2IDYxYzkxYzdmMTAxYmFiMzE0OWFkZmNkNTY0NmFlNDBlMDQ4ZGU3MTIgbGVnYWN5LXRydW5rCisxMzA5OCBjMzFiODgwYWU4NGY5ZDIyYjAzNTQ2ZWI5ZWI0OTFlOGU3MDc0NWY2IGxlZ2FjeS10cnVuaworMTMwOTkgMjlhYmI3ZDk2YzI1OTUxOGMxMmRiNzkzZTVlZTE0MWUzMDVjNDcwYyBsZWdhY3ktdHJ1bmsKKzEzMTAwIDRlMjY5NDE0ZWVlNTMwYTY3ZDE0Mzg2NTg1Yjg2ODkzOWRkNmVjMjkgbGVnYWN5LXRydW5rCisxMzEwMSA2M2M3YThhYzRlNGNmOWNkMzA4ZmNlMmJhNDE1YWYyNTZhZTE1OWQ3IGxlZ2FjeS10cnVuaworMTMxMDIgNTY2YmQ4N2UwMDMyZTY5MmJkZjdmODgzZmRlMjU2ZjZkYmIwMDNlOSBsZWdhY3ktdHJ1bmsKKzEzMTAzIGM4NzU5YmE4MzU1MmE1NmI5ZjYxYzMwMDFlNjg4OWY3MTkzOGU1YmEgbGVnYWN5LXRydW5rCisxMzEwNCA4NzZkN2U3OTIyNTJjNWUwNTIyMmQzNDRlZmFmY2ZjZDQ0YWIyOTA5IGxlZ2FjeS10cnVuaworMTMxMDUgZGNkYmIxMDAwNjBmMmE5ZjhiMGZhZmU5YmE2YmI1OTA5MDRmOGFmNSBsZWdhY3ktdHJ1bmsKKzEzMTA2IDkwYmRmOGZhNzhhOWI4ZWI3YTgwZWJkMjhlMDMwMDZiOGU3NmNmZDQgbGVnYWN5LXRydW5rCisxMzEwNyAyYWI5NjdmODQ4OTViMGRkODJmY2YyNjJhMzJiYzY4OTllZDBkZDY3IGxlZ2FjeS10cnVuaworMTMxMDggMjhjNDQzNzJkZTM4NDFlMmExYzEzZjM3MjYxMGQxNGZjNTlkYzRhMiBsZWdhY3ktdHJ1bmsKKzEzMTA5IDNkZTA0NGU2NTBhMWI2M2JlZjMzMzU2ODQzYWY1MTQ1NzdiMWRmMWYgbGVnYWN5LXRydW5rCisxMzExMCAwMjcwMWI5OWY5YmFiYjk2OGFkYzU4ZmUzZmQ4NzE3Mzg4YjFmZTEyIGxlZ2FjeS10cnVuaworMTMxMTEgZmU1ZmNiN2U3M2Y3OWJkNTUxMDIzMTA3NzNmZmUzZWU2ODdlNjczOCBsZWdhY3ktdHJ1bmsKKzEzMTEyIGZjYWFjNDFmNmYzYTAzM2ZiNGJiZTllNjg2ODRlMWI0YzEzZDUyY2YgbGVnYWN5LXRydW5rCisxMzExMyBiNDg4OWYxMDZjM2IxODA2ZGNmNzdkM2U3ODM2YTNiYTI5ZmQ0YjNhIGxlZ2FjeS10cnVuaworMTMxMTQgMjQxOWE2YzlmNjI4MTA2M2Y4ZmJkN2FmOGQxMjAxYmFmYjFhZjJiZSBsZWdhY3ktdHJ1bmsKKzEzMTE1IDNmMWU3MmM3MWIzYTVjYmQ2ZjYxZWQzZTZiN2EwODFmYjc2ZTk2YzIgbGVnYWN5LXRydW5rCisxMzExNiA2ZjhjZGM3ZTIyNWM5MTc3ZjY5NDUzYjhmMDQ4MDZlNjNhZTkxNjBjIGxlZ2FjeS10cnVuaworMTMxMTcgZjQyNWU2MGFjNzFhNDZkODJjMjk4MTBjN2MyNzNkZGM5YmJkMzcyZiBsZWdhY3ktdHJ1bmsKKzEzMTE4IGY2MTRmNWNmMmRlYzllM2RjODRmN2VkNzYxZmE2NDJiYTMxNDIwYzggbGVnYWN5LXRydW5rCisxMzExOSBhMDc3ZTVkYTVmYTU3MzBhMGE4NmE1M2QyOTU4YThmN2VkYWNkZmUzIGxlZ2FjeS10cnVuaworMTMxMjAgNTY4ZTk0NzI3YTBjYzhkOWZiYmU4Y2YzYWM3Nzg3M2M5NzA1YTAyOCBsZWdhY3ktdHJ1bmsKKzEzMTIxIGE2YjlkNDUwMDMxNzUyODkwODBjMzBjNDE0YmQ3NzI1NWY5MTkyZWIgbGVnYWN5LXRydW5rCisxMzEyMiAwMTJkMzYxZmRmMjNhOGEzNDdjMzAxOGYyOGYzYjUzN2FkZDU1ODBlIGxlZ2FjeS10cnVuaworMTMxMjMgZjdlOWJjOGRhMTNkMjE2MzNlYWE0MmYyMTRhNzhjY2RjY2UzZTE4NCBsZWdhY3ktdHJ1bmsKKzEzMTI0IGZhNDY4NWZkNWFkZmYxMzQ0OGJjZTRkYWE1ZDE1MzlmZjk2YmYzYjcgbGVnYWN5LXRydW5rCisxMzEyNSA4OTFkMDg5YWJhNDEyYmE2MDk1ZGFlOWEwZWM4ZTUwNmRhZWExZmM5IGxlZ2FjeS10cnVuaworMTMxMjYgNWIxNzBmMGRhOWZlYmQ5OTIyYzNkNDVlZWUzOWJjMGJlOTU3MWFjNSBsZWdhY3ktdHJ1bmsKKzEzMTI3IGRkY2VkZGVmNThhMWM3MWE3Y2VjYTE4ZWU0ZjUxZjI5NWU4YmI4ZGQgbGVnYWN5LXRydW5rCisxMzEyOCA4NGQ0ZjE3MjY2OWE2ZmQzN2QzMWVjYmZlMmU2NjBjM2YwOTA2ODk5IGxlZ2FjeS10cnVuaworMTMxMjkgMzRmZDI1MjQyNzMxOWYyMzExM2VhMzNmYTg2MWM2MTI2MjNlMjQ4MyBsZWdhY3ktdHJ1bmsKKzEzMTMwIGFkNTViZGJhNWRmZmVkOGNhMjBiNDYyMDgxYTQ4OGQxYzcxZDc0M2UgbGVnYWN5LXRydW5rCisxMzEzMSAzN2RkOGI4YjFkODQwMzlhMjhlYjRiYzdhM2VlYjFmM2YwMjZhYmJlIGxlZ2FjeS10cnVuaworMTMxMzIgNzVmMTI4NzFlZWVhN2I1YzkyZDFhNTM0Y2I0Yzc1N2FhOWUwOTZkYyBsZWdhY3ktdHJ1bmsKKzEzMTMzIDE4Yzc0ZDZiY2FlODgwNzQxNDQxNWZhYTllMjM4MTM2OWI4NzY3M2UgbGVnYWN5LXRydW5rCisxMzEzNCAxYmRlYTE3YmM0NzFmMjVmN2E5NzcxNDc5OWNhZDBjNWQ4OWVjYTIzIGxlZ2FjeS10cnVuaworMTMxMzUgZDcxOTdiMzJmYmZlYTFlY2MxOWQ2OGI0ZjM0MTBhMTBmY2ZhZGE0YyBsZWdhY3ktdHJ1bmsKKzEzMTM2IDY0NzI3MjhkZjJkMGNmMmQ2NDIzNjA2Mjg3MWY1MmUzZjE4NGU4NTcgbGVnYWN5LXRydW5rCisxMzEzNyA0NmE3MDhiMGNhMzhmMDEwNjljMjg1MzI4NGZhMmRhZmM5MzI0NGY4IGxlZ2FjeS10cnVuaworMTMxMzggYWE0ZWNiNzE2ZTZlMWM4YTZjNjlmMjRhZjA0OWNkZWYyYTBlMmMyZiBsZWdhY3ktdHJ1bmsKKzEzMTM5IGUyNjQzOTJlMTUzNjFmOTU2OTcyYmM0M2IwM2U1ZDI0YzMxNDBmY2MgbGVnYWN5LXRydW5rCisxMzE0MCAzYzI1OTM3MGFjNTdhYjFlYTU0MGRhYzVmZjQ0ZDIwODY1YzFkYjIzIGxlZ2FjeS10cnVuaworMTMxNDEgOWZkMjkwMjFkMTQ3ZWFjOWQyNmNjZjJkNzgzZDJkMzM4MjkxNWMxNCBsZWdhY3ktdHJ1bmsKKzEzMTQyIGJlZDE1YTAxNWMxYzM5NGVjOWI4NmY0MTE5N2JhNjExMTc4NzI5MzEgbGVnYWN5LXRydW5rCisxMzE0MyBkZjhhMWMyODFhZDdkNzRkNDg5OGNjYWVjNjBmMmUzNGQ3ZjI2NjczIGxlZ2FjeS10cnVuaworMTMxNDQgMzYwNDk0YzI1ZTBlNWE5ZDgwMmRmODUzY2Y0MTA3YmRmOWFlMTY3YiBsZWdhY3ktdHJ1bmsKKzEzMTQ1IGVhY2EzNzc1YjQyNWQ3YmQzODQ2ZmY2NGI0ZTNlMmM5MjlkMzFjMmUgbGVnYWN5LXRydW5rCisxMzE0NiBmNmVjNGE5Y2IwYjM5M2ZkMjM3YmE2NzRkZWU5MDVjYzJmNWZjOGIxIGxlZ2FjeS10cnVuaworMTMxNDcgNjM3MmMyYTRkNDdiZDgxNGRiMmJlYTIxNTNjZmRiZDlkMGUxNGI0YSBsZWdhY3ktdHJ1bmsKKzEzMTQ4IGUzYTA4OTgzY2QyNTFmOGVmZTcyMzFmNTBiMTMxYjU1NGFmZmU2MTcgbGVnYWN5LXRydW5rCisxMzE0OSBjZjYyYWZmMTA0Njg3YTRiM2M0MTQzOWRhM2M4ZjM1NWQ1ZmMxMWRlIGxlZ2FjeS10cnVuaworMTMxNTAgNDY3ODhmMTY2NTBiMDdiODA0MjkxMGE2NDQ1ZmQzM2Y3MGUxYTM2ZCBsZWdhY3ktdHJ1bmsKKzEzMTUxIGUwOWYxOTQ0MTEzNmNhMzlkNjc2MDU2ZjY5NmEwMzFlZDM3NDI2ODkgbGVnYWN5LXRydW5rCisxMzE1MiBjNzQ3MGIxNGRlYzdjM2RmMDgxYzE2MTM0ZjQzZmUzYjBiMTFkMzQ5IGxlZ2FjeS10cnVuaworMTMxNTMgNDhjMzNkMDUzNjdmMmE1ZTgyNTEwNWQ2MDQ2MmU0MjJmZjgyODQ4YiBsZWdhY3ktdHJ1bmsKKzEzMTU0IDQzNjk0ZDM1MzQ0MjE5YmM5NTJiZTE4MjJhZGIzZTdmZWFlYzVjM2UgbGVnYWN5LXRydW5rCisxMzE1NSBjOTllNjg3ZDFhYzRhYzY1MWEzNDNhNWE0ZjIwODMwZGExYzc2M2MzIGxlZ2FjeS10cnVuaworMTMxNTYgOGIzOGNlNDIyODNlY2JjZmQ1ZTNjZjYxY2E1MzAxNWM1NTMyOTIxZSBsZWdhY3ktdHJ1bmsKKzEzMTU3IDZjMjY1MTEzZTdlOGM2ZmE3MWE3MTBlMjlkNDM4YmY1ZDZjMGNjNTEgbGVnYWN5LXRydW5rCisxMzE1OCA0MmRiZmQ0OTgzODc2NzMyZGQ2YTMyM2ViMGI2NTc4ZWUwOGJhOGQyIGxlZ2FjeS10cnVuaworMTMxNTkgOTg4M2UzMGFjYWM1OTI4ODYzMGM0ODc2NmMzYjg4MmRkMmQyZGJmOSBsZWdhY3ktdHJ1bmsKKzEzMTYwIDI5OWJmNTNlNjg2MTZlZmJmYTg0ZTkxY2MzMzlmMDI1YWNjZWExMGYgbGVnYWN5LXRydW5rCisxMzE2MSA4ZTcyZmM1N2Y1NWZkNDMxZjRiM2YwOTM4Nzk2YjYyZTZmMGZiMDQzIGxlZ2FjeS10cnVuaworMTMxNjIgZDIwM2NiOWVjZTM3Mjc3ZGYxNWExNjAzNTQ2MjRiN2U0NmE0MTJiZSBsZWdhY3ktdHJ1bmsKKzEzMTYzIDk5NjgxZWU4NjY5ODJkMDY0ZDhkOTI2YzM3ZTdmYmQ5NjAxMDE5ODUgbGVnYWN5LXRydW5rCisxMzE2NCA2OWZiODFmYWNiMDM3ODRjNTA1MDFhMTYxM2Q5M2ExZWZjZTgxYjExIGxlZ2FjeS10cnVuaworMTMxNjUgOTVhYzFjOGMwODVlNTRjZTJjNzlmNjU3M2MyOWQ4OWU5NGU1YmRjZCBsZWdhY3ktdHJ1bmsKKzEzMTY2IGE3MWM2MzZiODVkMTRhMzczMGZiMmIxNjBkZGJmODZjNDRiZjFlMmIgbGVnYWN5LXRydW5rCisxMzE2NyBhYjAyMzM0NDUzZjk2ZDQ3MDJlZmVkNGFiNDMyYjQ2ZGQ3NDI5MmRiIGxlZ2FjeS10cnVuaworMTMxNjggMzdhMjIzNmQ0NzJmMmY0ZjE1OTc3ZmE2NjM2NDEzMGI5MzAwM2ZhMyBsZWdhY3ktdHJ1bmsKKzEzMTY5IDkzMzczMjAyNmU5Y2Q0OWQ4N2MwZDg0OGYwZGVhYjNmZDA2MThlMTIgbGVnYWN5LXRydW5rCisxMzE3MCA3ZDA1YmIzZTEzNWY2Mjc3NjcxZTI3NmIzMTZhOTlkMTY4MTNkYTFjIGxlZ2FjeS10cnVuaworMTMxNzEgYmViZTk4MzBiMzNjZGExOTZiNjUzNjFiZmEyYTVjNjhjZmU1ZTNiNSBsZWdhY3ktdHJ1bmsKKzEzMTcyIDAyZWI3NDc0OTI2MmU1NWI1ZjMyYzEyODBhYWI3ZGQ4NDFjYmJlNDIgbGVnYWN5LXRydW5rCisxMzE3MyA4YzZmZmU2NzA5NjNiMDFlYzk0ZTJlNDJkNGIxYzNhYTVhYjA5MDhkIGxlZ2FjeS10cnVuaworMTMxNzQgZTA1ZjZiZGM4YjUyMDQ1YzM1YWU5OWQwM2RhNDcwZmViMjBlZjY4MSBsZWdhY3ktdHJ1bmsKKzEzMTc1IDhjMGE2MGZiNmFjZjY5Y2Q1NjU5YTAyODlkMzM3YzUwMWMzZDE5M2MgbGVnYWN5LXRydW5rCisxMzE3NiA3OTg2NTU1NTY0NTY1NTBkYmVkMjRlNGVkODE4YWNjZDFlOTk2NmYzIGxlZ2FjeS10cnVuaworMTMxNzcgZjYwNjJlNTkyMzhmM2UzNWVhMDBkNWMyYTdjYzkzY2QwZWM5Nzg0YSBsZWdhY3ktdHJ1bmsKKzEzMTc4IGUyYTFjOGQyMzNkZjcxOTIwNzI3MjQ5OGM5YjAzMjRiNGFlZThjZmEgbGVnYWN5LXRydW5rCisxMzE3OSBiMjYwNmE4ZmNhYWJhOTY3ZGIzMzQzYzcyNzhlZTU3MjhkMDM3OGE5IGxlZ2FjeS10cnVuaworMTMxODAgZWU4NjFkN2JjMGU5MzBjZmM3OGEzM2ZiNjk2MjFlODU5NzE3YmEyZCBsZWdhY3ktdHJ1bmsKKzEzMTgxIDU4ZGRlZTEyNTZlOTU0MDVlNzczMzJmNjhmMmM4ZTQxM2Q2NGMzOGIgbGVnYWN5LXRydW5rCisxMzE4MiA5ZTRjNTczZWE0OWJhNmIzMmNhNjExZDZiYmY3MjA3ZTBjMjRkZDM2IGxlZ2FjeS10cnVuaworMTMxODMgMTliNDg3MDBhY2RiYmY3NGRhMzBlZDdiZjFjOWM3MzZiYTBmMDdjZSBsZWdhY3ktdHJ1bmsKKzEzMTg0IDRjYjg0OTRhYmE2MjBlZjI3ZWVhYTYxNGQ1MjlkMzJhZWU5NTU1MDkgbGVnYWN5LXRydW5rCisxMzE4NSBhZTE4ZThlZWJlMDRkYThkNGY0YWQ5MDMwMDFjNWUxZjAyMmU1MDI0IGxlZ2FjeS10cnVuaworMTMxODYgNjMzZDJmN2ExZTQ4ODA1YzBhOGE0OGExZWNhNmU1MzExODA4NTFmZSBsZWdhY3ktdHJ1bmsKKzEzMTg3IDcxMzc0MDAwMzdlMDE1OTAxNTRjYTZkNjUwNmY3ZWZhYTVkMTg3OTUgbGVnYWN5LXRydW5rCisxMzE4OCAzYmIwMjljNmRkMzc4MjJhMDlkYzNlZTk4MmRiYjcxZDk3YjU3YjI0IGxlZ2FjeS10cnVuaworMTMxODkgZjY3MTE5NWFmMDIwZWQ4ZGI0ODNiOWZjZTkzZGJhYjc3ZGQ5ZDA3YSBsZWdhY3ktdHJ1bmsKKzEzMTkwIDg1Y2Y0NzY2NTdjNWRlNjE5ODRlNWQ1ZmYwYmQ0NzY1ZTFhNzgwODQgbGVnYWN5LXRydW5rCisxMzE5MSBhZTAzMDZhYWE2ODhlMTFiZTVkOGQyMmQzNDdkYjBhMDQwYjVhMmUxIGxlZ2FjeS10cnVuaworMTMxOTIgM2I4NzYyYjhjMTQwZDAxNmNlNDUyNTg4N2ViZDFhMjJjMTRlZTE3OCBsZWdhY3ktdHJ1bmsKKzEzMTkzIDkyMWZmMzg1ZjI1NmExOGFjMjcxODAyYzBmZGM3ZGVjMGVmMWZlNDMgbGVnYWN5LXRydW5rCisxMzE5NCA5YjdkOGVjOWI5MTBjMzIyNGI5YzQ4ODc5YzYyOTZjMjUyZTVkMGFhIGxlZ2FjeS10cnVuaworMTMxOTUgYTlkNjEzYWI1YTc2NWUzMzUxOWUwNTE0ODZkZDQ3YWEzNjk2ZGNhMSBsZWdhY3ktdHJ1bmsKKzEzMTk2IGFiMTJjNjMxZDczNWQ0OGZmN2MwYzYyZTBhZGQ2ZmVhMGNjM2Q1MmEgbGVnYWN5LXRydW5rCisxMzE5NyBkMzBjY2IwMGJkN2I4MGI1ODM3NGIwMWIyZjdiMmI5Y2RmMWIxMjc3IGxlZ2FjeS10cnVuaworMTMxOTggOWUwNDAyZWUzODEyMDY4OTc3MTk2YWM2Mjk3NmI3ZjgzMzU0MjMyMiBsZWdhY3ktdHJ1bmsKKzEzMTk5IDI1Y2M3ZjBkNDVmMzhkYWRjODljMmVjYWZhMTQxOTc5NmMyY2FkNzggbGVnYWN5LXRydW5rCisxMzIwMCAwYjhiYTkzNTFhMDYzNTE2ODRiMzVkMDM1M2Q4YWRjYTUzYmYzZDk5IGxlZ2FjeS10cnVuaworMTMyMDEgZTcwMzk3OWZmNWU3NDY5MjhiODY0YTU0MDY3M2JkYTE1MmM1NmMxYyBsZWdhY3ktdHJ1bmsKKzEzMjAyIDY3YTRhY2VkMGQ4OGU1M2E4M2MwYjlkNzA3N2EzYzM4YjgyYTc2NWIgbGVnYWN5LXRydW5rCisxMzIwMyA0ODIyNjE3YjM5ZjE0YTczNzc5YzU5MTU5YjZlZGIyOGFkYjlkMjlkIGxlZ2FjeS10cnVuaworMTMyMDQgYWJhMWNkMGQxM2VhZmJkNDU2OWY2ZTAwYjJmZDIyMTlkNTJhYzQ3NSBsZWdhY3ktdHJ1bmsKKzEzMjA1IDgxZjUxMTA1ZjQyODhkMjNiZWNlNTczYjI2OTA1MGZkODg4MGY1YjAgbGVnYWN5LXRydW5rCisxMzIwNiAzNDZlOWEwZjBmOGM3Y2U2YTY5MGViZWU0Njk2ZmE1M2FhZmRkNWI3IGxlZ2FjeS10cnVuaworMTMyMDcgYzkwM2VjZWNiYTY2OWJiMzBmMGY3MTYwNWE4Yjk4ZjBiMjhkOGNhYiBsZWdhY3ktdHJ1bmsKKzEzMjA4IGU0ZTgwMGE3OGQ4ZGQyNzk5NDlhNWMzYWFjMjQ2YTFlNTVhZTM5YjIgbGVnYWN5LXRydW5rCisxMzIwOSA1OGIxOTFiYWRiOWE4YjVlMDNiNTBkYmNjNmM4MmVmNzM5NWE2ZDMyIGxlZ2FjeS10cnVuaworMTMyMTAgNDc4OGZkMDcwYTMwYjNlMWQxNGY0NWU4YTM4MjA5OTg4NDE2N2M1MyBsZWdhY3ktdHJ1bmsKKzEzMjExIDg1MTFlZmVjNzMwOWM3ZTM1NDZjZmZiOTM1ZTJhMGZiMTZmOWQ1MTkgbGVnYWN5LXRydW5rCisxMzIxMiBjYWQ3YjU1YTM2M2ZmNTQ2M2M4MDVlNzdkZDhjZDBmMDY0M2E4MmE0IGxlZ2FjeS10cnVuaworMTMyMTMgYjJhYWU3MTk4NzIzODY3OTVmM2IxMjNlZmU2MzRjYTRmNjY0Y2NkNSBsZWdhY3ktdHJ1bmsKKzEzMjE0IDE0ZjZlMGRjOTYyMjlmY2UxZDJkMDliYWU5NzA4ZWZiM2UzMWY2NDQgbGVnYWN5LXRydW5rCisxMzIxNSBkOGIyZjgyZjMzZWQyZGRlNDE1MDgzYWE4YmExMTNlYzNmNDBhNGFiIGxlZ2FjeS10cnVuaworMTMyMTYgY2QwMWJhMTBhOTYyYzA5ZmM0NTJjOGFiMGQ3MmFkZjkzNDFjMWRiMCBsZWdhY3ktdHJ1bmsKKzEzMjE3IDQ5MGVjMGM0MGNjNjAwY2M3ZjBiMDU1MDExMzM1OTUwZWVkNmI1NTAgbGVnYWN5LXRydW5rCisxMzIxOCBjZmQwOTMyYTUzZTQ5MWY4M2FmMjQ3OTIzNjQxMGY1Mjg4ODM5YThkIGxlZ2FjeS10cnVuaworMTMyMTkgNzY2OGJjZGU5YzBhZDY0MDg3MjEyOGNiNzBjNWViODg1YTM2NmEyNyBsZWdhY3ktdHJ1bmsKKzEzMjIwIDY3MTIxYTJjNjJiZjkzMTRjZDFkOWE0ZGQ5NGJjYzhkZDk5OTZkMGUgbGVnYWN5LXRydW5rCisxMzIyMSBiYWY2NmQ2ZTFiYzE2ZDIxZmYwMTI3MjJmOWUzZWVkNTdjMGI4NDkyIGxlZ2FjeS10cnVuaworMTMyMjIgODBkNDg4NWVkZDY2NDA4YWUyYWJmOWM4ZmMzM2MxY2I5MGE3Njg5ZiBsZWdhY3ktdHJ1bmsKKzEzMjIzIGZlMWU5ODE5MGFmNmVlODNhM2Q0NTI0NTRkY2JjZmM1MjkyMWEzNjcgbGVnYWN5LXRydW5rCisxMzIyNCBmMDk1MDc3ZDIwYjAyZTJmNTdjODZkNTBkYzY0ZGY1MWQ4ZGZiODllIGxlZ2FjeS10cnVuaworMTMyMjUgZTk5NWJjYzRjYzgyMjRjOGU4NzkxM2M4ZDc2YzAwOTRlMTdkMDhmMCBsZWdhY3ktdHJ1bmsKKzEzMjI2IDlmNjk1YTU0OTg2NTQ4Yzk3NGQ5MjU3N2M4OWQ3YzY5NThkNmE4N2QgbGVnYWN5LXRydW5rCisxMzIyNyBmMzM1ZmExZDZlNzE1ZWE4YzMzZjlhYzNmYjQ1N2U2NDkwZDNhMmFhIGxlZ2FjeS10cnVuaworMTMyMjggNDgwMzdmNDgxNGIxMTBjMGMxNDU4MTg5ODljYWEwNzEyYTY0YjNiZiBsZWdhY3ktdHJ1bmsKKzEzMjI5IGYzYzdmZjdhNmU4MWFiNTY0MjU4YjIxZWMwMDVmN2E2MDY1MmQ3ODggbGVnYWN5LXRydW5rCisxMzIzMCBiNmQxYTMyYWVkNzYzOGJlYjc4MzNlNmZhNDAxOGI5MzQ1OGUyMDkyIGxlZ2FjeS10cnVuaworMTMyMzEgOGRlN2Q5MGIwYjM0ZmU0ZWRkMzZiOTZmM2U4ODQxODg1YzE1MmQzYiBsZWdhY3ktdHJ1bmsKKzEzMjMyIDllNWRmNGM0OWE1Njc1NGRmY2E5Y2M0MTdmODhiNGFlNGFmNWFkNmMgbGVnYWN5LXRydW5rCisxMzIzMyBlZWExYWIwMjhmNDMxZWNjNmRlZjg4MjhkMzEwOTA3MDU3YTdiNWM4IGxlZ2FjeS10cnVuaworMTMyMzQgZjM4NzY5MzA4NDM4NjJlMWM4N2Q5Y2JiYWE2NjJiOTkyZTM5MzA0ZiBsZWdhY3ktdHJ1bmsKKzEzMjM1IGM1ZjQ0OWFhNDM0NTkyMTQxNTlkNTU0YzExYTAzMTFmYTUxNDE5NTIgbGVnYWN5LXRydW5rCisxMzIzNiAyNDc1YzNjZmU4MzkwMzI2ZTg4MmMyZDM5NjliYzljNDIwZjdkYzNiIGxlZ2FjeS10cnVuaworMTMyMzcgZTA3NTI3MmY0M2YyNjU2ODhmOWVlY2E1MTBhMTFkZTViZTcyNmNmZiBsZWdhY3ktdHJ1bmsKKzEzMjM4IDYxMDUxZmQ2NWFhYjA4MTA1YTk1Nzc5YjIxY2Y0YzgyODhlY2JlNDkgbGVnYWN5LXRydW5rCisxMzIzOSAyNjY2NGQwNzk1OTc5OTU5MmJiZmFhZDA5NTI2NWRiZWM5MDI3OTlkIGxlZ2FjeS10cnVuaworMTMyNDAgNzQ0MmNjZWRkNWZkM2MwMmI5MWMzMjdhM2EwMTZkMzFjMjk2YTYxZiBsZWdhY3ktdHJ1bmsKKzEzMjQxIGVjNjY0MjU0ZWY1YWFhOWUxYzM3NzRmZWZlM2EyZmQ5MzM5NDA2YzQgbGVnYWN5LXRydW5rCisxMzI0MiAyNzM3MWI2ZDcwYzExMWQ2YTZjMTViNzI2NWE1Y2Y3OTJlOWZhMDY2IGxlZ2FjeS10cnVuaworMTMyNDMgZGYxNTRkYTE4ZjBlYTBkZmMxZWRmN2RiMjA3MzM3ZmU2NGFkZjEzZSBsZWdhY3ktdHJ1bmsKKzEzMjQ0IGU0ZWU4ZWE0ZTgzNjhkMmYzZGE0MThhMjM2Mjc4NGRmMzZmMWFjZjcgbGVnYWN5LXRydW5rCisxMzI0NSAwM2U3NGM0YjE4OWM5ZGE1NDlmMmM1MDkwZTEwOWQ1MzhmOTQ5MTRhIGxlZ2FjeS10cnVuaworMTMyNDYgMDljNmIyY2ViZWU5YzYxZTg2NWEyN2NjMDIyYjQ5NjI0Nzc2MDg1YiBsZWdhY3ktdHJ1bmsKKzEzMjQ3IDY3NmRlOGE3YTNjYmQyNWEwZmQ5ZmZlZGZhM2UxZDJjMThlOTNkYWYgbGVnYWN5LXRydW5rCisxMzI0OCA4NTU4ODdhMmNjNjAxN2M2ZDhhNzk2ZjgzMjAwY2ExMDZiNDMxZjI3IGxlZ2FjeS10cnVuaworMTMyNDkgNGM5ZGU2ZmQyNjdiOTNmYWNiY2MxMmNiODQ1YTU4ZTZlMzVlYTk2MyBsZWdhY3ktdHJ1bmsKKzEzMjUwIDNlNWIwNTAzNWViOTg0MjllNmFmZGQzZTM1MGJiZDAzNWVjYjdmZDkgbGVnYWN5LXRydW5rCisxMzI1MSA0ZGIzNjkxYjljODcxNWZjYmY4ZDg0NTdiNDEzMDk2NmNhNzZjYThmIGxlZ2FjeS10cnVuaworMTMyNTIgZTdlYmNmZGUzYjVlNDI3MWFjNjFkY2Q3N2UzN2UxOGYxNzlmNGVhMSBsZWdhY3ktdHJ1bmsKKzEzMjUzIGYwYTYxOWVlYmU5YTJhMjczMzFlNWQ3MTJlMTJhYmRjMGY4YjMyOTQgbGVnYWN5LXRydW5rCisxMzI1NCBhMGQ0YTk1N2ZkOTFjMTFmMDdhYTVlNjc1MGVlMWZhYzAyODdhMjJjIGxlZ2FjeS10cnVuaworMTMyNTUgOGYzNjY1YmI5ZTNlMGM4MTJkYWYxNzM0ODA1MThkOGE5M2YxOGMwZiBsZWdhY3ktdHJ1bmsKKzEzMjU2IDhlZGJkNWFiNjIxNzU3MGJlYWRiMDFiZWYyZjExYmU2MWM3NzBkYjEgbGVnYWN5LXRydW5rCisxMzI1NyA4ZWVmNmY2NzU2NzdjNTdjMGQ0OTg5YzMyYjU2ZTczODNhNmI3YjljIGxlZ2FjeS10cnVuaworMTMyNTggODFmNTRjMDBlMjI0ZmU1YjFkZmM0OWE4MTVjN2RmY2JiM2Q3OGU5NiBsZWdhY3ktdHJ1bmsKKzEzMjU5IGNkZTliMmU2NGMwMDk3ZTE5MDk0YzdlODU3ZWJmOTIyMGM1ZTc4MzUgbGVnYWN5LXRydW5rCisxMzI2MCBiZmEwYzc0MzM0N2E5ZGNjOTIyZjFhOGU3YzdhZWRmMTJhZGE4ODk3IGxlZ2FjeS10cnVuaworMTMyNjEgZjFiMmJiNTM1ZWIzNjNjNDA5MTI4Y2ZjMWI4OGRkNDcxNzkxYTAxYiBsZWdhY3ktdHJ1bmsKKzEzMjYyIDNjNGRiNmM2ZTk3OTNjZmY2MWEzZTQzNDQ2OGEwZGI0ODNiZTg4NDAgbGVnYWN5LXRydW5rCisxMzI2MyBlY2UwOThmM2UxZGM4ZWQwYjRlYTQ5YTEwMGFkYzk5Y2VkODJkMTBhIGxlZ2FjeS10cnVuaworMTMyNjQgYWFhNWY5OGNiMmQ2ZDljNWVlNWJhODYxZjNiZmVlMjM0Y2FmZTYxZCBsZWdhY3ktdHJ1bmsKKzEzMjY1IDZhMzhlNjY3ZDM0OTgwOGNhM2QxZGQ4MjFhNWVlNzkyNTNiOWRhOWMgbGVnYWN5LXRydW5rCisxMzI2NiAwNWQ3MDMwMTVkZTE1NGY5YmVkOTViOTNhODFiNzY4YjVjZDQzN2NmIGxlZ2FjeS10cnVuaworMTMyNjcgMzkzYTZkYWYyODlkZTM4OTRjNjVmOWIwNThjZWFmNTY0MzZmOTUzMCBsZWdhY3ktdHJ1bmsKKzEzMjY4IDE1MGFjMGQ3MDkyOTIyNDk0YWYyNjhiNjY0Y2Q5MTNiYTE0ZDAyMTIgbGVnYWN5LXRydW5rCisxMzI2OSA5MmE5MmRlOTU5YjllMjRiZGY5YjJlMzM2OTVhMzhiNmQzOGVmMTVjIGxlZ2FjeS10cnVuaworMTMyNzAgM2YwYTZiMTU2OWU3ZTZlYThlNzFiM2Y4NDg5OTkzMGFlZDlmNjM2MCBsZWdhY3ktdHJ1bmsKKzEzMjcxIGRiY2E0NzBhZjhmMjQ4NzE5MzQ5YzY5MGUzMDE0YmE1NTRkNGE0YmYgbGVnYWN5LXRydW5rCisxMzI3MiBlMzcwNzRiNmU3OGNmNGFiNzFhMWM4ZjVlZGE0NTBjMjcwNDcxN2FhIGxlZ2FjeS10cnVuaworMTMyNzMgYzZhNGU0NmYxYjA5ZGRlMzI1MDc1MzdiMjJjNjUyMTY3MzVlZjNhOCBsZWdhY3ktdHJ1bmsKKzEzMjc0IDFhZjdhMTQ2NzA4ODM4YWUwZjA4NGE0ZWVmNzc1ODQ2ODBmYTY5Y2UgbGVnYWN5LXRydW5rCisxMzI3NSBmYjE3MzNiNmJlZjVlYWMwZWIzYzk1MDc0MzI2YWJiNTE2MzFjNjMxIGxlZ2FjeS10cnVuaworMTMyNzYgMmY2YjEyNzZlNWRjNjQyOWZhNDQyNDU3OTNlNzhiZjFhYzYzMzBhOSBsZWdhY3ktdHJ1bmsKKzEzMjc3IDQ0MjQ4M2Y0NTM0NTU4NWE3MmJiMjM5NjQ2MTJlYTQxMTMyMWJjZGQgbGVnYWN5LXRydW5rCisxMzI3OCAyYjAxNjZkMjI1NTEzZTRkNDM1ZmI1ODI0MjA0ZjA3NTNmMGE2MjdmIGxlZ2FjeS10cnVuaworMTMyNzkgMWQ3ZWJiZjFmMGYyNzU1MDg5NTRmNWQ0MDQxYzg4NzQ3NGNjMTE3OCBsZWdhY3ktdHJ1bmsKKzEzMjgwIGUwZTkzZTQxNjZjZTJkNTA4MjhiZTM2NTgzMzgwNzc4YmQzYmQ4NGMgbGVnYWN5LXRydW5rCisxMzI4MSBjMWM3MGI3NDNkZjJlNzhiOTg3ZjY4YmJkNzExODQ5YzY0ZTcyZjkzIGxlZ2FjeS10cnVuaworMTMyODIgOTY2NTk0YzZiMWUyNTZhZGE1MWMxZmU1NzQ0ZjJhNTAzNjBjN2Q1NCBsZWdhY3ktdHJ1bmsKKzEzMjgzIGI3MDg5NmViODk0NDBlOTA3ZDEwNTBhYWI2NjQ4ZTYzNDZjMWFiMGQgbGVnYWN5LXRydW5rCisxMzI4NCA5ZjBmMWQ4ZTZlYmFmN2U3M2Y5MWI2NTkwMTBjNWFjMDk3ZmE0OGYzIGxlZ2FjeS10cnVuaworMTMyODUgYjM5ZmU1MTI5OWJlOWRhZTk0ZDg1ZDQ2NWZiM2NlNDU2YjlhOGNhZiBsZWdhY3ktdHJ1bmsKKzEzMjg2IDQ3OWI0ZDFjMGI0NzI4NWRmNjZhY2I2MjcwNGZhNmQ3NzBiZjAxZGEgbGVnYWN5LXRydW5rCisxMzI4NyA1NGEzMGQ2YjAxZjEwOGE4MDU0MDhlMzUyMjEwMGU2NjcwODU2NWQ3IGxlZ2FjeS10cnVuaworMTMyODggYzM5YzE0MGIwNGJjYzljZjNhMDMzMmNkN2FmOWQyMzIwNWJlMjRiZiBsZWdhY3ktdHJ1bmsKKzEzMjg5IDMyZTc4YzlmYjQ5NmMzODhkZDAzYTFiZDRjYjk3YmZhNjRmYWEyM2UgbGVnYWN5LXRydW5rCisxMzI5MCA1ZGIyYzA0MjdjYWQzNGE0OTljMjllODY1MDE1MmY3OGI3ZmVhZTVkIGxlZ2FjeS10cnVuaworMTMyOTEgYTM0ZDY2NTZmOGUyZGRmYTkyZjdjNDI3MWFjODZjM2M0NDdmZWI3YSBsZWdhY3ktdHJ1bmsKKzEzMjkyIDFiZmFhNTM3NGRmOTk3NThiMTRhOTExZmE2ZTNhMmQ4YjI3YjcwMjUgbGVnYWN5LXRydW5rCisxMzI5MyAzMzViNGMwMmYxMGRmMGQ5MDBiYTQ0MzYzMzkwYWU3YzcxMjJjOTlmIGxlZ2FjeS10cnVuaworMTMyOTQgNzY3MzUxZjQ5NDRhYmFkZTQxYzFlNWYwZGUyYjQ3YjZkNTFkNTBiMCBsZWdhY3ktdHJ1bmsKKzEzMjk1IDEwNWJlZWQwNjhmOGU2MmQyNzNiM2RkNWYxZWIwNjhkZDJkMzNkNWUgbGVnYWN5LXRydW5rCisxMzI5NiAyZDM2ZjA2ODliOGEzZTA1NTliN2ViYTM0NTMxNWZiYzI2ZDM0NGRmIGxlZ2FjeS10cnVuaworMTMyOTcgYjAxNWQ1ZjFkYTFiNTcxNzkxZjQ0MGY0YmQ5NWEyYmYwODY1YzNmYyBsZWdhY3ktdHJ1bmsKKzEzMjk4IDdjNDBkN2MxZWVmOTRmNzcwMzVhYWI4Nzg5MGFkZmFkMDhhM2ZjNmYgbGVnYWN5LXRydW5rCisxMzI5OSA4ODVhYmUwOGVhMmRlYWM5MzM1MDdkMjE3OTY3NzBhMjc5Y2U5NjdjIGxlZ2FjeS10cnVuaworMTMzMDAgOWVmZTA2Nzk0MGVhYTg3ZjhiMTE5MmNlODZhYmZkNzIxZjM3YTZhMiBsZWdhY3ktdHJ1bmsKKzEzMzAxIDk0YzdhM2YxYzAwNWU2NTk0NzIxYzlhODVmYmYxNzVlMzFlZmIyODkgbGVnYWN5LXRydW5rCisxMzMwMiA4ZjMxMTAzYzg4YThlMDdlNTVkOTIzMjY3ODMwYTQ5MDk5Zjk5ZGRlIGxlZ2FjeS10cnVuaworMTMzMDMgZDIwZTRkMGFmYjQzNjJkODkyNTk5MzdlNDdiMjQ0N2MyZWMxNjZjMyBsZWdhY3ktdHJ1bmsKKzEzMzA0IDMxMmViNDgwMWExYzgxNmJiZTk0NjljZGFhZjdjNmQwZDk3MGJjZDEgbGVnYWN5LXRydW5rCisxMzMwNSAzZDJlYTU1YmM0ZTY4YTQ4MGY1OTQ4NmI2MDI3NDA5M2YwNDc3NmQwIGxlZ2FjeS10cnVuaworMTMzMDYgODc5ZDFhZTVjN2E1YmNlZDJlMDQ5ZmU5Y2IxZjFjYmY2OWM2NmYxMiBsZWdhY3ktdHJ1bmsKKzEzMzA3IDc4MTIzODM2MWY1MzFlM2M1MDE5OTQ1ODFhYzI0NjJlYmNhZDk5NTkgbGVnYWN5LXRydW5rCisxMzMwOCBhZWIxM2NiN2I3OGNhNWU4MDg0YjNhNjMwZmYzODFkMjdkMzQxYWUzIGxlZ2FjeS10cnVuaworMTMzMDkgYjg4YTYwNTI0MjY5MDlkNjJiNzZlNTNlZDBhMTA4ODBjN2QyOGQ1NSBsZWdhY3ktdHJ1bmsKKzEzMzExIDdlYTM4NTk3ZTcwZmFiYmRiNDVmMjNiYzM2OTc2YjYzZjY2YzExMGUgbGVnYWN5LXRydW5rCisxMzMxMiBmZmIyYTQ3YjY0NWVjN2JmMWE1YmJkYWZkZTMwYTQ3MTBkOTZjZTg5IGxlZ2FjeS10cnVuaworMTMzMTQgZjE2NGQ5MTkzMzQxYzliNGYwOGU0MzY4NDFkYmMzNDZiZTBlYjJkNiBsZWdhY3ktdHJ1bmsKKzEzMzE1IDBmZThjZjdhYzZkNWEzNTY0Mzk0MTUxNzZmMmVlZGU0MjliOGNkM2IgbGVnYWN5LXRydW5rCisxMzMxNiBkZmJlMjU4ZTI4YzE4MTdkYTIyMjkxMDcxYTI1ZmU4Y2E3YjRiMDJhIGxlZ2FjeS10cnVuaworMTMzMTcgNjg3OTlhMjAyNzY2YTE0NDFhN2YxOWM0Njk2MzU0OWYwZDZhODA4MSBsZWdhY3ktdHJ1bmsKKzEzMzE4IGQ3M2EzMjkzYzQ3YjJjZGYxZTg1ZjdkMDM4YjZjZTkyZjgzNTZjOGUgbGVnYWN5LXRydW5rCisxMzMxOSA1YWQyN2FlZTdlNTg4NjFmNjI1ZmU3ZWQ4NjcwMDYzMzIwNDFhNDk3IGxlZ2FjeS10cnVuaworMTMzMjAgMmZlMGJiOGI5ZWVmNzliYmRhYTFiNzc1MzAxZmEwMzExOTM3MWNmZiBsZWdhY3ktdHJ1bmsKKzEzMzIxIDhkZTEzY2VhOTY0MTEyMjY4ODlkYTBlOGIxZDVjYmYxMTI0OTlmNDYgbGVnYWN5LXRydW5rCisxMzMyMiAzMzFjODVhY2ExOTU3MmMyZjU5M2NiMDU0MTgyOGFjMzQ2M2NmNTMwIGxlZ2FjeS10cnVuaworMTMzMjMgYzEyZjdjZjE5MmZiMzM4NjA5OGI4NjFjNTk5YzNlM2UzMDRmZGZiNyBsZWdhY3ktdHJ1bmsKKzEzMzI0IGQyNmE5ZjkyNTRmMTRkYzMxNzk2NjA0NjkxODU1YzVkNGZlYTI0MDggbGVnYWN5LXRydW5rCisxMzMyNSBlYjdhNjJhY2RkMWRjNWI0ZjgzZGU0ZDhkMzRlZTEzODU0M2EwYjNlIGxlZ2FjeS10cnVuaworMTMzMjYgNWUwM2VhNjkyN2YyMDZmNTYwMDkyMzRiZDEyYmMxNWFlMThjOGU0NSBsZWdhY3ktdHJ1bmsKKzEzMzI3IGRmYjVmZGEzYjI3M2FkNzRjYWNmZmRkZTJjMDhmYjQ4MmI5MjY4MWEgbGVnYWN5LXRydW5rCisxMzMyOCBkM2M2ZTlhMTI2YjI5ZmFjNmQ3OGYyN2I3YzczZGQyNGJlM2I3MDE5IGxlZ2FjeS10cnVuaworMTMzMjkgNDlhMGI4ZGNiMzZhNGUyNjkyOGEyNmQxNjBiMmYwOWNjOTFiY2ZmYyBsZWdhY3ktdHJ1bmsKKzEzMzMwIDBiYzdjNTAyZWI0ZDJlY2MzYTk2ODZmNGNlOTlmMjg0YjA4YWMxZjMgbGVnYWN5LXRydW5rCisxMzMzMSA5NjM4OWYwYjVlZjA4NmI0ZjM4ZjNjYTc2ZmIwYmUyNDc2OWVlZDU3IGxlZ2FjeS10cnVuaworMTMzMzIgZmU1YjdkZWE1YTEwZmZhZGMyNzNkZWFlYTg0MzEyMmQzMDFiMWNlZiBsZWdhY3ktdHJ1bmsKKzEzMzMzIGVhODMyYzNjNmU2ZGEyNjNhNDhjYjQzODAwOWE2OThmOWUwYjNlOTAgbGVnYWN5LXRydW5rCisxMzMzNCAyYTMwZWQ5MTEyYzYxZDU5YzlhMGRhYzFlOTE2NGIwOTJhODk2NmY5IGxlZ2FjeS10cnVuaworMTMzMzUgNjlkODlmN2Y1MzBjNWM3OWU5NTdmM2Y0ZjU4MWVmNmUyYzhhMmVmMiBsZWdhY3ktdHJ1bmsKKzEzMzM2IDM5MWE5Y2IyYjA3MjlmNzJhMDE1N2JjYTg4OWZiYjI2ZmQ1Y2VjMWQgbGVnYWN5LXRydW5rCisxMzMzNyAwMDM0NGRiZjJhNjA1Mjk0OWVmNTg4OGM3YjQ3YTQ1MDA5MzEzNDZiIGxlZ2FjeS10cnVuaworMTMzMzggNjVkYjVlMjYyOThmMjY2ZDhhYjQ5YWUwMzRlYzcyY2JjYjc4MjFiNyBsZWdhY3ktdHJ1bmsKKzEzMzM5IGFhZTE0YzYxODFiOWQ4OGQ1ZGMzOWRkNWE5MzllNjBkNWIyZjZhMzcgbGVnYWN5LXRydW5rCisxMzM0MCAxMzVjMWVjOTYzNmM2ODZhMjBkMDNlZDI3N2EzNTM4MjRjOTc0MjRhIGxlZ2FjeS10cnVuaworMTMzNDEgNTU4MTMwN2RiMmY3MzdlNmEzOGUyZDVjNzEzNDE0YmUyMTA2ZTkxYiBsZWdhY3ktdHJ1bmsKKzEzMzQyIGU2NTI0MzQ2ZDY2Y2MxODU5YjlkNTk2ZTQwMDkzNTA3NzgxOWZlYWUgbGVnYWN5LXRydW5rCisxMzM0MyBlZmQxNTczYTRiMDNiMjJkYTJhMTA3ZWRmN2YwMTI1MzY0OTNlYzQ1IGxlZ2FjeS10cnVuaworMTMzNDQgMGJmMzAxOTQxZWZkOGM1MzM1N2ZhYzE0YTQ5ZTcxYTRlMmM5MTNhZCBsZWdhY3ktdHJ1bmsKKzEzMzQ1IDhmZGFjNDAyNTAzMjVmODliZTdlOTZkMjNkMjBjZWExYzZiYzZjMjEgbGVnYWN5LXRydW5rCisxMzM0NiA4NGE0ZWNkMmNiOTUzODI0ODZkZGUzZWJhMDQ1NmFlODg0YjhlZWVkIGxlZ2FjeS10cnVuaworMTMzNDcgYWVlNzRlOTc3YWRkMGZmN2EwYWJhNzIyOWQwNTRhZWJhNGNlNTcyNiBsZWdhY3ktdHJ1bmsKKzEzMzQ4IGZhNmJlMWQwYjg2NDVhMzNmZTViNWIzMWZjOTY5ZTAxOTYzNmNjNjEgbGVnYWN5LXRydW5rCisxMzM0OSAzNTJlNTgyNGVkYTY2NjBhNDExNDhmY2VkZjMwNDYyYjljNDY0MmQwIGxlZ2FjeS10cnVuaworMTMzNTAgZTFiODZlZjQ1NTdjNTc1OTJmYWJhOWU5MDVmNzUzN2U2ZDJkNGY0MSBsZWdhY3ktdHJ1bmsKKzEzMzUxIGNkZjdhZTViMzM2N2VlZTZlNGRhMjQ0ZTNkNjcwNTgyZWI5Nzk3OWQgbGVnYWN5LXRydW5rCisxMzM1MiA1ZWY0YjNjYTU1NjQ1NzEyZjU2M2RmYzMyYTRiMjVhNjkzMGFjYTY3IGxlZ2FjeS10cnVuaworMTMzNTMgYjczNzhkZjNkYjU2ZDcwNDMxNjI3YzE3ZDliYWJjYWNiZDkxN2YyYiBsZWdhY3ktdHJ1bmsKKzEzMzU0IGM3YWE5OTY1ODM4M2YyN2ZiMjQyZTU2NWEyNzk4N2MxZTNjMDczNTIgbGVnYWN5LXRydW5rCisxMzM1NSBkNzhjYzI2NzZjNTUxYjY3MTg3NDA0MzJlZjNjMzc3MTNjOWU5NWNhIGxlZ2FjeS10cnVuaworMTMzNTYgNGRhNzZmODM4YTVlNGVkNWMzZTNiMzMxNmEzYjM2YzY5MGQyNzAyMyBsZWdhY3ktdHJ1bmsKKzEzMzU3IGExNDE1ZWNlYTIzZDRhMzIxZDcxZGFkYzY1NjI0MDk1NDFiY2I3MjcgbGVnYWN5LXRydW5rCisxMzM1OCBmY2IyNTMzNWQ2YWVkZjJjMWU1ZWQ5YTllMTZjOWJmZDYwMGIzNzc1IGxlZ2FjeS10cnVuaworMTMzNTkgYjI3YWQ1MDliNDRiMzUwMjU2NjM5YzUyOTgwMGM2NzhmYjM0MTdmZiBsZWdhY3ktdHJ1bmsKKzEzMzYwIGUyZmU2NWU4Nzc2MWI4ODBjNDBiZmM2ZTc2ZDk5NWVjNThiNTBmNWQgbGVnYWN5LXRydW5rCisxMzM2MSBmMmUxMjNhZjJhZGE0NDcxM2E3YzRhNjQ4MDFkZDIyY2JmY2RiYTNiIGxlZ2FjeS10cnVuaworMTMzNjIgMjg4ODdmNDBlMzQ0MmUwYjUxZDQ0OTBhNzEyNTE2NzQ3MzE2NzBkMyBsZWdhY3ktdHJ1bmsKKzEzMzYzIGJlMGFjNWFiZTgzYjdiNmFiNzgxZWUyY2ViZDFjYWU2NjRmMjYzYmUgbGVnYWN5LXRydW5rCisxMzM2NCAxYWE4MGY1YmY5YWM5MWQzYzAxMmJkNmFhYjc0YzkxYzNjYjkwMjk2IGxlZ2FjeS10cnVuaworMTMzNjUgODIwMmY1YWNlMjQ4NDlhZjc1MWYzYjFlOWE5NDA5OTM1ZDdjNzcwZiBsZWdhY3ktdHJ1bmsKKzEzMzY2IGU3NTI1MGU1NTQyNGY0MWQ5NDhiNjYxMzBiNTM0ODYwMjg0NDE3YTkgbGVnYWN5LXRydW5rCisxMzM2NyBjZmU0NzI5MTJiN2Y4YjAyODJlNzRkYThlNGNiMDdhNDlkMjM4NWQwIGxlZ2FjeS10cnVuaworMTMzNjggOWEzYTA0NjhmNTFjN2Y5N2ZiMzQyMmU5ZGMwN2Q3OGY3ZWJkOTQwZSBsZWdhY3ktdHJ1bmsKKzEzMzY5IDRmNWQ0OTQ1NjA1YzY3ZDM0Yzc1OWM3YTllODI1N2JlMzUxM2M2ZjggbGVnYWN5LXRydW5rCisxMzM3MCBmN2I0MWIyNzA1NTQ4MjE4M2RjMmZkYmZiODZmNGZhMWNmM2Y5YWFmIGxlZ2FjeS10cnVuaworMTMzNzEgY2QyYTI1YjdiNDM4NThlNTg1M2ZhYjlkZTRkN2JjZWRlN2MxYjdjZSBsZWdhY3ktdHJ1bmsKKzEzMzcyIDNlZGIzMjk4MjM0Y2QwYjE4ZTJjNDQ3ZTU5ZGRmNmRkOTcyNDZjNzQgbGVnYWN5LXRydW5rCisxMzM3MyAyNTEzOGRiMzVjZTFlZGU3ZDdmMWRmZWRhOGVhMDM5ZGVlMmVmM2UxIGxlZ2FjeS10cnVuaworMTMzNzQgYmJjMmE4Nzg5NGQwODI5MzFmMDdhMjAxNzYyMDdlOGRkZmFlZmUyZCBsZWdhY3ktdHJ1bmsKKzEzMzc1IDdkMTE4MmQwYzQxOTNlYTExOGVlZmIxMWYwNjM2ZjYxZGE2ZmU0NzggbGVnYWN5LXRydW5rCisxMzM3NiBmZmZmNjY1ZjhhN2JmMjllZmY1NTYxNjVhMjM2Yjg1NThhN2U4ZDBhIGxlZ2FjeS10cnVuaworMTMzNzcgNWM1YWUxNjFmMjhhYzA0MDZiOWIzY2VkMTMzODEyN2FhMjBhMTU4NCBsZWdhY3ktdHJ1bmsKKzEzMzc4IDc1NTBhMzVkODBmOWJhZmZjYmFhYTI4YjlhMjk5NTFkYmFmYzAyMzUgbGVnYWN5LXRydW5rCisxMzM3OSBhNTYzNzkyMDAwNzcwZTE2MDliM2NkNzdmYWRjNWU5ZTQ1NGU5MmMwIGxlZ2FjeS10cnVuaworMTMzODAgOTg2OGM4MDc3MzJkNTg3MDhkNjUwMzM2Mzk0NjMyOGQyODM5MGUyYyBsZWdhY3ktdHJ1bmsKKzEzMzgxIDg2MzRlYTJlYzRlMmZkYzJhNzBkNTRkZjE2ZmY3NDgzNWJlNDY0ZGQgbGVnYWN5LXRydW5rCisxMzM4MiAxODIxZTY0ZTA4ZmNlZGE4ZmMyOGUxMGQxMmQ4ZDBhZjhiNDVkYzQzIGxlZ2FjeS10cnVuaworMTMzODMgMTdhZTE3OGEzMDM4OGM0Y2QxZjAzZTZmMDc0MDEzMzY2NDQ2MjUzNiBsZWdhY3ktdHJ1bmsKKzEzMzg0IDI2NjlhYzdjZDc2YTk2Zjg3MTMyMGViZjkyN2VmOWIwMzYxMmE0MGEgbGVnYWN5LXRydW5rCisxMzM4NSBiOWVmNDI0MTY1ZDYyNTNkMmJkNWZkNDYwODM2NGFmNzI5YTI3NDMzIGxlZ2FjeS10cnVuaworMTMzODYgNTAyMGJmYTc0MmVhYTc1MTFjNjA4NTE1ODZkNjE4MDBjZGQ0ZmQzMyBsZWdhY3ktdHJ1bmsKKzEzMzg3IGY4OGQzYTc2MzcyM2Q1YmEwYmU3NTk5Y2RhM2ZmYmNlNjBiNjZlYWEgbGVnYWN5LXRydW5rCisxMzM4OCA4MzhjYjM0YWJiNzkxOWMzNDJmMjQzYTk2MDMyOGIzNjYwZDBhZmRkIGxlZ2FjeS10cnVuaworMTMzODkgMDZkZWY4MDQyZDhlMTZmYTAxMDY1NWEwN2JlYzAxNmE1MzM0MWE1YiBsZWdhY3ktdHJ1bmsKKzEzMzkwIGMyMDlkZDk4Yjg2OTUyNWExZGRmOTg4YjY3ZjMwM2UxOTYxNjhlYWYgbGVnYWN5LXRydW5rCisxMzM5MSBmMDMxOGExYzk4OTJjYjU3MjdmODZkMTI3ZTM5OTJmZjJhNmM5NzJhIGxlZ2FjeS10cnVuaworMTMzOTIgNjJlZDMyZTc5YjVkMjk2MjQ2MzM0MDdkMGRjYTMzOTQyNGVjZGFkYSBsZWdhY3ktdHJ1bmsKKzEzMzkzIDgyMmM1MjgyYzE0NTY5Nzg5NzU1N2U3NTRiZGY5MGIyNWZkNTE5YTggbGVnYWN5LXRydW5rCisxMzM5NCBhZjA3Mzg5Yzg1MTc1ZmJhNTk0ODE1NzAyZmQ2YmYyYjJkZGJiODM0IGxlZ2FjeS10cnVuaworMTMzOTUgYmE2ZDNhZTNhMDIxNDdhMjE2ZmFlODA3MTM3N2Q5YzMwN2JkZDg4MSBsZWdhY3ktdHJ1bmsKKzEzMzk2IGE2MjhjMzcwNTg5N2FjZWJhNmY4NGIxMjAyNzM3YzRlNTM1MmNjMTkgbGVnYWN5LXRydW5rCisxMzM5NyA2MzJiNjcwNWJkOWZhZGQ2MDNkMTQ5MGZhY2I0MDQ4YWUzYzdkYTBiIGxlZ2FjeS10cnVuaworMTMzOTggYjgxMzY1NjZjYWY1YzAwZTA3OTVkOGIzZDVkNTllN2E0MzZiNTU3ZiBsZWdhY3ktdHJ1bmsKKzEzMzk5IDY3ODM4NDJjMTA0MjQ1YzAzNmQzZDliZjExMDgxN2EyMWM0Y2I3MjEgbGVnYWN5LXRydW5rCisxMzQwMCBkMzhkM2I4ZWE0NjNiZmNmMWViMDk0ZGM2NWE4ZTVhMzliNGI2M2Y0IGxlZ2FjeS10cnVuaworMTM0MDEgZTE4M2JjMDA0OWRjZGRjMDAzNjVlNTlhMDgxM2M4YjQ2OTcwMzNmZCBsZWdhY3ktdHJ1bmsKKzEzNDAyIDc0ODY3OTZmYWU1Yjk0NDVmZGJjY2I3OTU5YzZlMWI1YjVmZWQ1NTQgbGVnYWN5LXRydW5rCisxMzQwMyA4MTdkMDUzODM1MGQzMzY0NDcxMDBjM2IxY2M3OTc3YTAwMTZjNDNiIGxlZ2FjeS10cnVuaworMTM0MDQgM2U0MTlhYmM1YmFhZGNmYjEwOTNmYjg4MmJhNTYwNTA2YjAxNjg1YiBsZWdhY3ktdHJ1bmsKKzEzNDA1IDk1ODM3ZTI3MzI1NzU5ZDIzNDI3OGFkMmZlZGM5NzI4ZjdkNDA1NzkgbGVnYWN5LXRydW5rCisxMzQwNiA4NWNmNDlhOWIwMGJjZWU3M2ZhMTc0Nzc1YjQ2MjRiOTY3MTlmYzFmIGxlZ2FjeS10cnVuaworMTM0MDcgYTU5ZTk1ZDJmMTgxMGI0MzY2OTc0MjdlYmM3YmQ1NTNmYTIxZTlkOCBsZWdhY3ktdHJ1bmsKKzEzNDA4IDE3Y2EyZjY0YjZkNjcxN2I3ODhjZWRjYmIyNDQ4NWUwODRiYmM0ZTEgbGVnYWN5LXRydW5rCisxMzQwOSA3ZTU2ZDM5ZDA3NDExNDMyNmM2OWNhODJmYzEwMWFiM2EzY2Q4MWZhIGxlZ2FjeS10cnVuaworMTM0MTAgZjBhMjIxMzQ0NGEwNDk0NWQ1ZDM4ZjhiNWQxYjc4YTJhZmI3ZTk1OSBsZWdhY3ktdHJ1bmsKKzEzNDExIDk1N2MzMzUwNGNjMTI0ZGFmNzFhZmJhZmRmMmVmZGJlOTk5ZDU5OTAgbGVnYWN5LXRydW5rCisxMzQxMiBkMzE3NDMyMGUzY2VjOWJlYWQ1OTkyM2FiMzMwZGIyOTU4MDA1OTc5IGxlZ2FjeS10cnVuaworMTM0MTMgZjRjNmNlNTU5M2I5ZDYwZDhiZGY2MmE2YzQ4YzE1MjliMThjY2E2MSBsZWdhY3ktdHJ1bmsKKzEzNDE0IGMyNDUxNjE0Njg1YWM0ZDhlYjY0ODZkODVlYTU0ZmEzNWFkNmJhMTggbGVnYWN5LXRydW5rCisxMzQxNSAyOWU5NjI3NWE0MmRjYjc5NWQ1NWVlODNjOTU4MDMyMDI3ZGI1MmUwIGxlZ2FjeS10cnVuaworMTM0MTYgOGEzMTA5NzQwYzZhZmYwZTQ1YTVjMDM4NjdjZmFhNWIwNWQ4YTVmMyBsZWdhY3ktdHJ1bmsKKzEzNDE3IGQ4M2E0YWE3MGViNDI4ZDIyZDkzZGNhYjgxNmU4ODQ5MjFmMzQwY2YgbGVnYWN5LXRydW5rCisxMzQxOCBjZmFjODNmNWMwZWZhNDcyYzEzNjc3OGE4NTgzYWYzOThmM2Y5NTg1IGxlZ2FjeS10cnVuaworMTM0MTkgYjFhMWViMzM0OWYzN2FkMWI2MzhiZTM0ZTBlOTJjNTE0ZTc0ZWE5NCBsZWdhY3ktdHJ1bmsKKzEzNDIwIGQxYjRmZDA1N2I0YTYzNGVjNGFhYThlODU1NjY1YzI0ZThkZjhhZWIgbGVnYWN5LXRydW5rCisxMzQyMSAzZmRmMWM3ZDlmOTg4ZjllOTFiMDQ3MTk3NDZmZGJjYjMyNWNjYzJiIGxlZ2FjeS10cnVuaworMTM0MjIgYmE3OTcxNzllMmJhNjM5MGE1ZmIyMWM0ZWZkZDU0NGE4N2U4YzNlMyBsZWdhY3ktdHJ1bmsKKzEzNDIzIGI3NWQwMTE5ZWQ1MWEwN2I4Y2JiNjAzZDIzZmJkMTFiZjc2YjJhYTIgbGVnYWN5LXRydW5rCisxMzQyNCA2YjFjYjg1ODJhMWY5MmJjYzY3NDNjNmFlNGJmOWE0ZDA0ZmMwMGI5IGxlZ2FjeS10cnVuaworMTM0MjUgYThhMWViOTkzNDFjMjFiOGU2MTIyOTViNWQ5Mzg5YjYwNTlmYzIwZiBsZWdhY3ktdHJ1bmsKKzEzNDI2IGJkZDZiMDlhMzcxYzQwZGFkZGE4NmVhOThmYjViYmE5NzBhNGRiZGIgbGVnYWN5LXRydW5rCisxMzQyNyAzZmFhNjM0MzA5MjQ2ZjY0MzVlNzZmOGYzYzRmNmZmZDI0MjJmY2IyIGxlZ2FjeS10cnVuaworMTM0MjggOWM0MDM0ODg3NTU3MjkxMzdhMTY3MzMxYWZkZTJlZTE0Y2FiZDVlMCBsZWdhY3ktdHJ1bmsKKzEzNDI5IDFjNTUyZGNkNDNmOTc1Y2Q4OGM5MWFiYmRiOTRmZDA5Y2EyOGQzMzQgbGVnYWN5LXRydW5rCisxMzQzMCA4MjM0YmIzNmZiOGMzNWY5MDM5ODg0ZjEzZWJlYzZkMDg5NjY1NmRjIGxlZ2FjeS10cnVuaworMTM0MzEgNTI1OTcwM2Y0YjVjMDIwMjI1NTRlNDZjNTU2NzJlYjFlYTUyMmI1OCBsZWdhY3ktdHJ1bmsKKzEzNDMyIGIzNWJhYjQ1NzM1MGI1MGFhNWYxOTY5MTExNDM0ZDcxYWVkZTU2ODIgbGVnYWN5LXRydW5rCisxMzQzMyBmOWMwM2IzZDBmMTQ2ZTkxODE2MmM4NWE0M2FlYWJmZDY4ZTIzYmZkIGxlZ2FjeS10cnVuaworMTM0MzQgZTQxMDQ5YWM4MjhiNDljMDZkYTgzZjVmZWNjN2Q3YWJjMGRiYTk0OCBsZWdhY3ktdHJ1bmsKKzEzNDM1IDVlZDlhMmRkMThkOWU2ZjhhMDVlYzNhZWE1NzkzZmU5YmI0N2E0OTAgbGVnYWN5LXRydW5rCisxMzQzNiA4NGYxY2JlMDA5NDMzNWFlNmU1YWQwNTA4NTQzMzU5YmMyMDA2NDFjIGxlZ2FjeS10cnVuaworMTM0MzcgNDUxYjA4NDljOTc3MjVkYmVjMTA3NDhlOGQwNGYzNTcyYjYxZmNiYSBsZWdhY3ktdHJ1bmsKKzEzNDM4IDE4YTI5MjE5ZjVlMDZmNGRjZTVhMWE2MjFiMGM5ZTg1ZjdkMDQxNTQgbGVnYWN5LXRydW5rCisxMzQzOSA1MGMzYjNjMjE3YTM5ZTQ2YTdhZjU0NzQ0YjRkODZiMmZhZWRjMDEwIGxlZ2FjeS10cnVuaworMTM0NDAgY2M2YWJjOTlkMmRkZjE0MTQxODRjODgwMDkxOWMxNDA5Y2I0YWRkNyBsZWdhY3ktdHJ1bmsKKzEzNDQxIGMwODkwMjBhN2ExZTU3NjVmZjk4YjU4ZGY4ZTQxNTBiOTIwNTdhZWIgbGVnYWN5LXRydW5rCisxMzQ0MiBkY2NiZjVlODI5NGRkOTFmNmZlM2EyM2I0ZDUxYjAwYzlhODA0NzE0IGxlZ2FjeS10cnVuaworMTM0NDMgODQxNjU1M2MzM2RmMTdmZjJiYjc5NTE3NTRiYzUyZjdhODRjZjc3NiBsZWdhY3ktdHJ1bmsKKzEzNDQ0IGU4ZmY0YjEyOThjMjMzZDJmNTVkM2UyOWUzYmY0NzFjNTdjYjlhNWYgbGVnYWN5LXRydW5rCisxMzQ0NSBhZjc2NTM4ZGQwNzlkMjRmMGQ2NzgxYjQxNDBhODFmN2EwNjcyZTIwIGxlZ2FjeS10cnVuaworMTM0NDYgNzEyOGMwZmQyYmNmNTI0ZTc0M2Y0NWMxYjcyNzAyNTA4ZTkzMDcyMiBsZWdhY3ktdHJ1bmsKKzEzNDQ3IDhjYzBjODk4ZjZhNzQ3ODNkMTgzMWU0ODAyY2UzYTRiOWIwNzAyMjYgbGVnYWN5LXRydW5rCisxMzQ0OCBlN2VhZTYzZThiOTA3NzkwNDllNWY4ZTEzYWY3ODg4MDBjNjhkZmRlIGxlZ2FjeS10cnVuaworMTM0NDkgZDk3NjQ1MWI0NjVmMjEyYjgyNGRlNzBjMGQ0OTdlNjEzNTcwYTY4NiBsZWdhY3ktdHJ1bmsKKzEzNDUwIDZlZTY2ZmUxNzlhZDcyZTBiMDUyYmIzOTRiZDVjYjhiZGU3NTYyOGMgbGVnYWN5LXRydW5rCisxMzQ1MSAzNWQ1YjA3MzYyNDIyNjIxYmU4NjQ5NThhZDIxZjk1MzFlN2M0OGRiIGxlZ2FjeS10cnVuaworMTM0NTIgYmY2YTA5ODM5NTFkZGRkOWExYTkzNjljOTQ0MjRhOThlMjJhYjY2MiBsZWdhY3ktdHJ1bmsKKzEzNDUzIDFhYmMyNzg1YjM0NDZjMGJmODhjNjc1Nzk1NGZhNzFjYTMyNGQ0NzAgbGVnYWN5LXRydW5rCisxMzQ1NCAzODQyNTE4Y2Y4MDMwMTJjZTUwZDNmOThhZmNlM2MzZjk2ZjIzMTU1IGxlZ2FjeS10cnVuaworMTM0NTUgYjkyOGY3YjlkZmEyM2QzZmVkNDZjM2MyMjg2MzA2OGIzMDEwNDgwNSBsZWdhY3ktdHJ1bmsKKzEzNDU2IDAzNTMwZWEyMTQ4Yzg1ODQ2NTBhNDhiYmE3ZjAyYzU3ZmJmN2MyYjUgbGVnYWN5LXRydW5rCisxMzQ1NyAwZmMyZTg1N2U4MjI4NTAzODcwMmQzOTRmYjg5OWFiMDhmMTMyMWNmIGxlZ2FjeS10cnVuaworMTM0NTggYjZkM2QxNzE5NWRjYmE4NjU1NTZhMTI5NWUxZjFhZjZmNGI2ZDlhZCBsZWdhY3ktdHJ1bmsKKzEzNDU5IDMxNzExYTA1ODczODIzNjhmMWRkODRiYWVmYzI4ZmNhMTQxYmUwOWMgbGVnYWN5LXRydW5rCisxMzQ2MCBlMDUwZDRjMDEzMjdjZDljNmY1YjEyOTQzMzhlNWM3ZjE2ZWRhMTY1IGxlZ2FjeS10cnVuaworMTM0NjEgNGQ3NmNhYmJmOTllNjU1ODBiMTJjZDg1MDRlNWY1NjQwOTBiODkyYyBsZWdhY3ktdHJ1bmsKKzEzNDYyIDQyOTQwZWQyMmNlYmQ3OGIwNzVlMTJlYWRlYWE3MDgyODM5MTBiMzUgbGVnYWN5LXRydW5rCisxMzQ2MyA2NjY4OWIyZGM4OTU0YjVjNzNhYWIyMzg1MDQwNTFiNDdmMDZmM2E4IGxlZ2FjeS10cnVuaworMTM0NjQgYmRjMTcwM2ZmOTJjZTdmNTI0YmVkMGUyY2ZhYmI4MjQ3MDUwZTYwNiBsZWdhY3ktdHJ1bmsKKzEzNDY1IGM3NzkwMjU0MWIxM2E1N2RjMTA4ODQxNjZlMDkxNDc3NjAwZmViOTggbGVnYWN5LXRydW5rCisxMzQ2NiBiYmIwMzg2OGYyMWI2MjcxMjdlZjdjMTFiOWEyN2ZlMjk3M2Y1YjA0IGxlZ2FjeS10cnVuaworMTM0NjcgYWEzMjc2ZTVkY2NmNWIyMjExMzYzZWFiMTBiN2QzYTYzNTdjMTg1OSBsZWdhY3ktdHJ1bmsKKzEzNDY4IDM2ZmE4MzUyZDAzODgxNjc4MDM0MThhM2RhNzk5MmI2MzY0NmUwMDQgbGVnYWN5LXRydW5rCisxMzQ2OSA0ZGM5ZWVlMjYxNTcxNDU2N2NiMWExZTg3MGRlNjY0YjIzYzU0MGZhIGxlZ2FjeS10cnVuaworMTM0NzAgMmI5YWY5ZDdkYTJkOGE3ZWI0NWFmODE1YzMzN2U0ZGY0Mzc1NTYyNSBsZWdhY3ktdHJ1bmsKKzEzNDcxIGRhMjM2MDQ0Y2Y2YzhhOTgyZmMyODNlODA0YThlNWU1ZGNiZTEyODcgbGVnYWN5LXRydW5rCisxMzQ3MiAzMDlkOGNmODNhMTE3OTgyYTE3MTNjMjBkZWUzOWFjZDBjYTFlMzgzIGxlZ2FjeS10cnVuaworMTM0NzQgNTBlN2ViMjBiYjFkNTFiYTU2OTI2NTM2MWQ0NmQ1OTczZGU3ZTJhOCBzdHJpbmdfbWV0aG9kcworMTM0NzUgMjU5MjM3YjI1YjkzNWY5ZDc4NDM1YzIwOTFmNDY2NmIwYTQwNjJiZiBsZWdhY3ktdHJ1bmsKKzEzNDc2IDcwY2YxMzYwOWFlZDY4YTNlYTlmOTZlZDljODQzODBjNjAzZDQzY2YgbGVnYWN5LXRydW5rCisxMzQ3NyBmYmI0ZWRiNzIwMmNjNWUxZmU2NTNhYjVhYzFkMGVhYTNlMGM1NGM4IHN0cmluZ19tZXRob2RzCisxMzQ3OCA1YmEyZTRjZTU4Y2I0YmFhZDM1MmIyOTU4Yjk0MTFkZmQxOTkwZjBkIGxlZ2FjeS10cnVuaworMTM0NzkgNTQ4MDkyMWFlN2YzZmVlNjlkNjZlNTg0MjA4OWI2YzU5OTIxNTMwNSBzdHJpbmdfbWV0aG9kcworMTM0ODAgOWQ3MWMyYzNhNjc1NmYyNmUzNGY0NmNmYzMyZDE4ODNjZjU2NGZhYiBzdHJpbmdfbWV0aG9kcworMTM0ODEgZTE0MDdkNjMyMGNiYjdjMTAyZjM3ZjJmOTgzNDdlYjA2NjMyYzA5YSBsZWdhY3ktdHJ1bmsKKzEzNDgyIDZmZmM5ZDhkYzViOTg2YTg4MjkxMTk0YmQ2YjcwOGJkMWI2Yzg3NjggbGVnYWN5LXRydW5rCisxMzQ4MyAxN2M0ZGJkMzZlNjc3NjQ0ODQ1YTUxMThhM2UzZWY3NzI1OTg5ZWZkIHN0cmluZ19tZXRob2RzCisxMzQ4NCA3OGNlZjU2NzZjY2Y2MTJlZmE3ZGEwNzc0N2E0ZjM4N2E5NzdiOWQ2IHN0cmluZ19tZXRob2RzCisxMzQ4NSBhZTg1MDgxM2NiN2I0OGNjOTQzZGM2MTQ4NDFlMWUyZjljZGRjZGUzIHN0cmluZ19tZXRob2RzCisxMzQ4NiBmZjBlNTc2ZTc1OGE3YjRlODVmNDU5ZmZhNTNjYWE0YWZkMTk0Yzk2IHN0cmluZ19tZXRob2RzCisxMzQ4NyAxZGNjOTU2ZmNlNjQ5ZjRmNGFlZmZiN2EyZmE0ODc0MDE1NTMwZTczIHN0cmluZ19tZXRob2RzCisxMzQ4OCBlZWQ1ZWI1YjlkNGY1OWNmMDM4NmY3ZjRhZGViY2I5ZjMwNmFiMGU2IHN0cmluZ19tZXRob2RzCisxMzQ4OSBkZGQyMTYwMDNiZDE4NzFkMzY0NWYyNTlhM2M2OTRjYmJkOWM2ZTY5IGxlZ2FjeS10cnVuaworMTM0OTAgY2JiZjI5N2FlYTdhOTM3OTdiOGZkOWFjMWI0Zjk1YjBjMmIzNzAzMSBsZWdhY3ktdHJ1bmsKKzEzNDkxIGIyZDY5Zjc1MTM4MzlhNDUzMjk5ZDVkMTM4NDE5MWNjZTNlM2EwNWYgbGVnYWN5LXRydW5rCisxMzQ5MiBlYzZjOGFkOTgzNDEwNzk0NjNhZjlmNjM4NDAzODE1NGRhOTAwOWNiIHN0cmluZ19tZXRob2RzCisxMzQ5MyA1MTk2OWZkNzNjNGE3ZTdjY2I2NjFhNWNhNTI3ODdhMWNjOTY2NDVlIGxlZ2FjeS10cnVuaworMTM0OTQgMmVjMDRmZjJiOWI3MzJmOTUyOWRiODFlNTk0MzY3YWRjM2ZhZmM4MCBsZWdhY3ktdHJ1bmsKKzEzNDk1IGNmZWQyOTQ5M2VkNjU2MWNiZWFiMTc5NjU5M2U1YzZhMWEwNjYyMzggc3RyaW5nX21ldGhvZHMKKzEzNDk2IDBmMGE2NmMxZGVhY2EyNjg4YWU0ZjQ0ZWU2ODIyMjk2ZjY5OTk3NjQgbGVnYWN5LXRydW5rCisxMzQ5NyAwZjIyOTJmNTdhODMxNzQzNjY5MjBiYTljNTc1NzgwYjBlOTkyNDBkIGxlZ2FjeS10cnVuaworMTM0OTggOTVkNzgyODE1OTAxZDhiYWU1NjU4MjJmZmY3MGZmMWM1YzUwZDVjZiBsZWdhY3ktdHJ1bmsKKzEzNDk5IGIyZmJkOWE1YTFiNTVjMTMyZDcyNmQ3MGVkMjBmMTZhOWJlZGU3NjggbGVnYWN5LXRydW5rCisxMzUwMCBhZTk2YjFhMTI4ZjhjMTY5OGExMjk1MTZjMmJjM2Q3OWJjOTg2MmUxIGxlZ2FjeS10cnVuaworMTM1MDEgZjkwZWQ5NjYzMTZlOGM2OTQyMzk3YWZkOWY2MzAzNjA2MTA4YmIxZSBzdHJpbmdfbWV0aG9kcworMTM1MDIgNGI5NjkyNjViOWQyMWJjY2E4NjJkNDg2ZjVmN2YwZTJjNzVkNTVlZCBzdHJpbmdfbWV0aG9kcworMTM1MDMgNzExMzgwMzcyYmM5MThhMmZmMGQ2OTU1OWFjMDNhZTJkNmZiYjQ4OSBzdHJpbmdfbWV0aG9kcworMTM1MDQgMTdlYzA5MDJlYWZhMDZjZDc0MGNjMzYyMGM3YmQ1YjkxNTYwNzczZiBsZWdhY3ktdHJ1bmsKKzEzNTA1IGJlZjQ2ZWE1ZWY3NWMwNGM0ZGM2NWQzNTYyY2E4OGM4NDJiMzBlZDEgbGVnYWN5LXRydW5rCisxMzUwNiAzOWYyNDJiZjQ2MjI4MzY4NzZhMjZlM2VkZWNiNmYxYmM0NGE5NWI5IGxlZ2FjeS10cnVuaworMTM1MDcgMWRjY2JlZWFmNzZhY2VmNDM2YzEwNDA2ZTk5OGI5N2UxODllYTlhNSBsZWdhY3ktdHJ1bmsKKzEzNTA4IDYzYjUzMGMwMzBjNTRiMDFlNzdmYzUxZDA5ODY3Y2YyYmJkMDI5OTQgbGVnYWN5LXRydW5rCisxMzUwOSBjNzNmNTM3NjJmOWIwZjJmMTEyNTBlNzNmN2MxZGM2NmI4ZGU0Mzc1IGxlZ2FjeS10cnVuaworMTM1MTAgZTM5YTlmMTI5MTYzMjZkNTJlM2Y2MWQyZmUyZGRkYjg4NjA2ZWVhOSBsZWdhY3ktdHJ1bmsKKzEzNTExIDdhMTI3ZjE5OTJkMTk3NWRkZWI5MDRjZDc1ZTE2MDdmODMzMTkyMjIgbGVnYWN5LXRydW5rCisxMzUxMiA2Y2FmYTNkNGUyMjllOGIwZmY1MGI0OTg2NDZjYmIzMGY2MmRkOTlmIGxlZ2FjeS10cnVuaworMTM1MTMgMTM0NjJjYTZkOTQ3NTVlYWJlYjhlYWIxNmQxY2JkZWMxYzc1OTNkNyBsZWdhY3ktdHJ1bmsKKzEzNTE0IDQwNTA5OTVhNjYzOWJiODgyY2U2NzRhNGJlYTIyN2IzYmE1MTdiZGUgc3RyaW5nX21ldGhvZHMKKzEzNTE1IDNjMzUxMjU1ZjE3M2FhOTczMjEzNDQ3NzI1NWRkODBhMjU5NDYwYTYgc3RyaW5nX21ldGhvZHMKKzEzNTE2IDQ2YTU2MTc3MzIyZWIwNmFhNDliMTkxYjFiZTYxNDM4Zjc1MjM3MzcgbGVnYWN5LXRydW5rCisxMzUxNyA4N2QzZjkxZTQ0ZDRkN2M0Y2U1MTI2M2VlYWE5YmNiODgyMDU1NTFiIGxlZ2FjeS10cnVuaworMTM1MTggM2UwNWZjYWFhZWQyMTkyMThlYmE4NjEyN2E5ZGRhMjA2ZDM4N2Q1NyBsZWdhY3ktdHJ1bmsKKzEzNTE5IDcwODYyOGI2YzA0YmYyMmU0ZTcwMThjMmM2MzY3Yzk2YmJiMDFmYjYgbGVnYWN5LXRydW5rCisxMzUyMCAwZDE4NmMxMGE3MGUyNGJkOWNiNDc5NTVlYjI4YjJkZDMwZTY5YzRiIGxlZ2FjeS10cnVuaworMTM1MjEgODRhYjE0ZDg1NzYzNDMwYzNkYzUxYzM3MjNjYmViODE0NDNlNmUwMCBsZWdhY3ktdHJ1bmsKKzEzNTIyIGU2OGU2MDZjMTMwZjUxYWU5MGFiODU3NTlkNWY3NDAzZjRiNGU3ZTQgbGVnYWN5LXRydW5rCisxMzUyMyA2OTYxNWQ1MGY1OGMwMDVkMmRmNTlmMzRjZTc0Y2IxZjRhNjk2OGU0IGxlZ2FjeS10cnVuaworMTM1MjQgOGE0ZmM0ZGE3NjhkOGVjY2VkNmEzODIxNWNkMjQ2ZGY5N2VkNmRjYyBsZWdhY3ktdHJ1bmsKKzEzNTI1IGZjYWM2NDMyYTdkZmIzZjUxOTc4YjVlMWRmN2NmNDI0ZGE3ZWYxNjcgbGVnYWN5LXRydW5rCisxMzUyNiA5MjZjYjVhNWVlMzA5MzM1OTdlMDk4YWE4MmEwOWQxMWM2YjVhN2IyIGxlZ2FjeS10cnVuaworMTM1MjcgZTUyNzIzYWYzY2Q1ZTZmMTBlZDk1ZGVmOGI0ZDk4NGJkNzkzZmExZSBsZWdhY3ktdHJ1bmsKKzEzNTI4IDA4NmIyYmM3NTc4ZjllZjJjNWM1YzAzNjA0M2VjOWI0NjRjNGFiMTQgbGVnYWN5LXRydW5rCisxMzUyOSA4YzExNGVkZTA1Njg2MWRkNWUyNWJhMzExOWJmNGI2YzNmOTdiNDA0IGxlZ2FjeS10cnVuaworMTM1MzAgYzhlZDVhMTQ0ODhkZTZkMzI0ZDE2N2ExNWNiMWRjY2ZjNTAyYjhkNSBsZWdhY3ktdHJ1bmsKKzEzNTMxIDA4NzJkYTNmM2Y1NjEyMTA5ZmMwNjMxZjdlMjBlNjg3NTEyOTdiMTIgbGVnYWN5LXRydW5rCisxMzUzMiBiOWY1NWNjMTBhYjNmMTBhYTRiNDUzNGU5ZDcyMDkwNjVjZTQ3NjkyIGxlZ2FjeS10cnVuaworMTM1MzMgNDgxOGNiOGUxMTEwMWRmNDAwZDdiN2U3N2QzMmMyNjBiMTVhOWQ2NiBsZWdhY3ktdHJ1bmsKKzEzNTM0IDQ5MmE2OTQ4OTAyODZhMmFkYzRhMjg2YjFmMzc2OTA1YjlmMjAxODAgbGVnYWN5LXRydW5rCisxMzUzNSBlOTQ0MjczNGJjNDk3M2Q5MmQ5ZWM0MjIzMjNjZDg3MjBiNDkyODkwIGxlZ2FjeS10cnVuaworMTM1MzYgM2IzYzdiOGFkZTdmZmM4OTc2ZjNiNmFlNTBhODQ0N2JjN2FmYTBmNCBsZWdhY3ktdHJ1bmsKKzEzNTM3IDQwNzdjYTNiMjY1NjMyODk4YmNkY2Y0NzVhOWY3YzQ1NGU5MDM1YTEgbGVnYWN5LXRydW5rCisxMzUzOCAyYTJlOTlhZjM4MjkxNGU2Mjk2YmViYjcwOTYxMTYzNWRlMGZjNzk1IGxlZ2FjeS10cnVuaworMTM1MzkgNmM5MmRiM2E3N2NmMzdhMDNiODNkZDYzM2Q1NWY5MjYwMjA3MDJiOSBsZWdhY3ktdHJ1bmsKKzEzNTQwIDQxMzg1ZDUwYTEwYzc0NjUyNDM3ZDhjZWY0YmE1Zjg5YWM1MjcwM2UgbGVnYWN5LXRydW5rCisxMzU0MSA3NDk3MTFmODg1Y2QzZTU2MGVhZWE4ZjA1ZmMxMzBmZjA2MmFjNGMzIGxlZ2FjeS10cnVuaworMTM1NDIgZjRjNjMxODVjZTExMDg3NDE5NGI0MGMyOTRiYzc0MjQ3YjdiNjIzYSBsZWdhY3ktdHJ1bmsKKzEzNTQzIDMwOGNlMjE4MzlkNjNmYTAxOTk5MzFkZDgyYzgxY2NkZThmZGYwMzkgbGVnYWN5LXRydW5rCisxMzU0NCA2MTI3YjczODU4YmM5MWYzNTMxOTgzZWU0Zjc2ODgxNzNmYmI4ZDQyIGxlZ2FjeS10cnVuaworMTM1NDUgM2FkYzAzNDJkMDhiZDI1ZjY4M2RiMDRhNDI4YjM2ZDc3ODFkZWY4ZSBsZWdhY3ktdHJ1bmsKKzEzNTQ2IDExOWUxMTlmY2Y1YWMwYjM3MDYzYTZhODg3Zjk1MTNlYjdjZWEzNmQgbGVnYWN5LXRydW5rCisxMzU0NyAxMjZhOWNkZjA1NzI5ZTE1ZjQwYzVhZDUxZDMzYzM4MTgzNzI1NzQ2IGxlZ2FjeS10cnVuaworMTM1NDggZTZhYmVkYmM3OWM2OWVlOWU4ZDQ4OTFhODI1YmZlNGQ3ZDBmMzQ5YiBsZWdhY3ktdHJ1bmsKKzEzNTQ5IDI3MWFmMjk3YWEzZWE3OTg1MzRiOGZiNmZlODdiNmUwZmJkZmViZDcgbGVnYWN5LXRydW5rCisxMzU1MCAzMWZkNGVkNzNkMjllNTFlZTQxYmI5Y2Q4NDZhZTUxMzEwYjU4ODg1IGxlZ2FjeS10cnVuaworMTM1NTEgNjQ5ZGFhZDZjZjUxNjdmZDNkYmI3YjVhYTc5MmI3NmQzZDU1OWVhNyBsZWdhY3ktdHJ1bmsKKzEzNTUyIDc3MWE5YTEwMGQ3NWJjOGQ3MDk2ZTAzNzhmOTkzNzMwMGQ0NmMzOTYgbGVnYWN5LXRydW5rCisxMzU1MyAzODE5ZWI3YzgzNGIzNThlNDFhZTAwZmQwMWI2ZDRjN2M3M2UwOTY5IGxlZ2FjeS10cnVuaworMTM1NTQgZjliYTgwMjM5NzZkNjYyMGE5MmE1OTcxMzA1MWNkNmNmOWJjNzUzNyBsZWdhY3ktdHJ1bmsKKzEzNTU1IDNiZTkzNWJlMzc4MWZjZDNkNmYwMzNmMTI4ZjRhZWY4YjY4YTJhOGIgbGVnYWN5LXRydW5rCisxMzU1NiA4YjdmNjViMGRiMThhMzZjOTg0ZDU5NjEzYTA1OTdiM2VhNjQyYTgwIGxlZ2FjeS10cnVuaworMTM1NTcgMzY2ODRjZTBkNDBkNjM2OTBjZTkxYWRmMDdlN2I4NzA4M2U0MzNmOSBsZWdhY3ktdHJ1bmsKKzEzNTU4IGNiMzY2MzIxMTUyY2IyZTY5NzFlYmU0NmYyNzEwY2JjNGM1YmUyZDIgbGVnYWN5LXRydW5rCisxMzU1OSBiNmE0MzhjYzE5NWI5OTdiYWMyNDQ4YTAwY2E1YTYyYzIxMGIyMGNkIGxlZ2FjeS10cnVuaworMTM1NjAgYWQxNWEwMzk0Zjc4MjhmZDFlN2I0NTllNzI2ODQ0YzI1YmQwNjQ0MCBsZWdhY3ktdHJ1bmsKKzEzNTYxIDVhZGJiM2YwNGNiYzJmOTI3ODhkMzA4NjZhODQ0Mzg4NGJhNGMxODIgbGVnYWN5LXRydW5rCisxMzU2MiAxMmNmOTA5NjY4MjIzMDM2MjgxYjNmZWFkMGRjNmI4ZGY3NWUwMzY5IGxlZ2FjeS10cnVuaworMTM1NjMgNWZhOTZkMDUwMzE5ZDg0YmJjYzBhMmFiNGQzYTQ2NjIzODQ0ZmMxNSBsZWdhY3ktdHJ1bmsKKzEzNTY0IDk3ODk2YzA5ZWYxYjMzMWUwOTE0YmMzNzk0MTIyNWJiOTVjYTgwZjggbGVnYWN5LXRydW5rCisxMzU2NSA2MjZjYWVjYTUzNWEyNDNiMGM4MWVkNzQ0NjMxZWRjZTNmMTg0ZjRjIGxlZ2FjeS10cnVuaworMTM1NjYgMjdjNDhkZjFjZWI3OTU5MWZiMmVhZGM4ZmI0Yjk3NjkzNDAxNDU0ZSBsZWdhY3ktdHJ1bmsKKzEzNTY3IGY3OGYxNmZlYTQ1NTdmNGQ0YmE4MDQ3Njg5YzlmNzNkY2M1NzA2MzYgbGVnYWN5LXRydW5rCisxMzU2OCBjYzJlYjAxYTE2ZjQyM2JmYjA0NzIyZDA4MGJiYmE3ZGFlMGY0NzlmIGxlZ2FjeS10cnVuaworMTM1NjkgODE0OThjNGU1NjlkMzQ5OGU0MWRiNGRkYzIzZWU1ZWEwNWQ3YTkyMCBsZWdhY3ktdHJ1bmsKKzEzNTcwIDViYjRmNTBkYTQ3NGE1YjQ1NzIxNGUyYTJkZTRmYmM4OGQ1MzY0MmUgbGVnYWN5LXRydW5rCisxMzU3MSBmZDU0NmNiZGZiNWY4NjVhOTFlZWE0NzgzNzNmNDRiZjFkNDMxNGVmIGxlZ2FjeS10cnVuaworMTM1NzIgYWViMTBjYzIzMDBkNmU2YTVjODQwMTdiZGQyZWEzMjBjOGZhYjIyYSBsZWdhY3ktdHJ1bmsKKzEzNTczIDIyMmFlZTk2ZGM0MjUxMGE4YTc3ZDA3YjlkZDJlYmU5NWE3OGMyMDcgbGVnYWN5LXRydW5rCisxMzU3NCA0ZjUxZTk3YTZlZGY1ZDc4YTA5ZjJmY2YzN2RmY2Q4NTYyMjBjNzMyIGxlZ2FjeS10cnVuaworMTM1NzUgNWE4MmZiNGY3OGU1OTRjZGY4YjhmMDNiZTA3MTNjNTE5N2M4ODJhYiBsZWdhY3ktdHJ1bmsKKzEzNTc2IDI3ZmJiMDhmOGMzOGRjYWU3NDFmZTkxZDZhMjZhZTkzOWRmZDI1NDkgbGVnYWN5LXRydW5rCisxMzU3NyAyNTM5NzBhMmMwNWQ2NjQ1NWM5MWY3YWM0ZWI3OTYzNjRhYjc0NGZiIGxlZ2FjeS10cnVuaworMTM1NzggMjU2Yjg3ODY4OWYzYjFlNGEwODk5OTNkNGQ5ODA0YjhhMTMzNzljNiBsZWdhY3ktdHJ1bmsKKzEzNTc5IGIzYWNkNTY1MjBjZDlmYWY3MjMyMWUzNzMyZTM3ZWUwZWU2MDE4MmUgbGVnYWN5LXRydW5rCisxMzU4MCBiY2MwYmU3Y2I0MDgwMWRiMWEwYWM4ZTBmOGU1M2U0MDc3YWQ5YTVmIGxlZ2FjeS10cnVuaworMTM1ODEgMTIwOThhOGE5NWVjYjhiNTczN2MwOGI0NGE1MmE5ZDA1MTM4M2IzYiBsZWdhY3ktdHJ1bmsKKzEzNTgyIDc5ZWU2ZGM5M2QwZTllM2NiZDlmODVkYjI5OTdkOTFkMWVmNDEwMTggbGVnYWN5LXRydW5rCisxMzU4MyA5NjMxZjk3MjZhNzA1YjQ5MDc4ZjYyOTdkMTc1MzAzNTM4ODRiNDc3IGxlZ2FjeS10cnVuaworMTM1ODQgMDdiMDczNzZjYTcyODhjNDkzMTRlYjVkYzIzY2JlOWRjNTFiMTcwMiBsZWdhY3ktdHJ1bmsKKzEzNTg1IDkwMjMxNmM3MmI0M2Y5NTNlMGQzYzQ5ZmVmOTc5NWQxOGU5NWEwN2IgbGVnYWN5LXRydW5rCisxMzU4NiBlM2RkYjg3NjE2MzcxY2JiNTdiN2M3NDk3ZTk3ZDk3NjA0NzQyMjM1IGxlZ2FjeS10cnVuaworMTM1ODcgNDllOGRlMGI1ZWE3NGE4NTViYjU0NTRiMDdmNGVmNzgxZTRkZTg1NiBsZWdhY3ktdHJ1bmsKKzEzNTg4IDdlZDZmYmE4MjY1Y2I3OWY2MTE3ZWY3Zjk1Y2E5OTgxYjIwMWZiOTUgbGVnYWN5LXRydW5rCisxMzU4OSBmMTExNDhjNWZiZWRjY2YyYjRhYTMyMjdhMGE3NDQ5MjNmYzljZDc4IGxlZ2FjeS10cnVuaworMTM1OTAgZDZjYTkxMDYzY2VjOTNjYmViYzdmODJmNTk2MTNlMzNlMGE2ZDI0NyBsZWdhY3ktdHJ1bmsKKzEzNTkxIGY1MjZkYjlhNmNmODM2ZGYwMWJmODM3ZmVkMmUxNDQyYWQ2MmJmNDcgbGVnYWN5LXRydW5rCisxMzU5MiBkZmI1YWRkNjg0YzNlODEyMTVkMzVmNjk0NmNjMTVjZjgyNjc3YTUzIGxlZ2FjeS10cnVuaworMTM1OTMgNjI4MmFjZTI3OTVlMDZjYmM1YTMwNjI0ZDQ2NTZlODFiYWQ1YmZjMSBsZWdhY3ktdHJ1bmsKKzEzNTk0IGJhZTNmYmUyYjU5MWFmOWRlYTNiNjE0YzgwY2VkZjk5YmVhODY1N2UgbGVnYWN5LXRydW5rCisxMzU5NSAwYjY1ODM1ZTJiMjkwOWQ2NWJlMmJlOWE0MDYyYWQzMzUzNjNlODA0IHN0cmluZ19tZXRob2RzCisxMzU5NiA4ZTRkZDZhMTYxZmZiN2NjNDc4MGUxN2Y3Yzc4YmU2MDMwMjZhZDc5IHN0cmluZ19tZXRob2RzCisxMzU5NyAwZGQ1MGE3MGM0N2UyMmQ2MmY4MTBjNjZmYWVjMmQ5ZGY5NTVhOWYyIGxlZ2FjeS10cnVuaworMTM1OTggMmZkNjVkMGYzZDQxNTA4M2NjMWY3MzBlYjgyZDhiMzI5MzViNjEwNSBsZWdhY3ktdHJ1bmsKKzEzNTk5IDlkZDgxOWQ5OTMyNjM5MjZjMmE0ZjRlYWFmN2ZlNzJiY2M2YWE1MDEgbGVnYWN5LXRydW5rCisxMzYwMCBhODRmOWQzOTk5YWU4NDY1OTRhMTM0M2RmZThiYjcyYTAwMWFmZmE2IGxlZ2FjeS10cnVuaworMTM2MDEgNjYxM2RmZDczOTE3MThjZGM1ZjQxNDNhZjYxM2EwNGExZTEyYTA3MCBsZWdhY3ktdHJ1bmsKKzEzNjAyIDM2ZTI1OGI1Nzc1MDY2OTNjNDEyMTE4ODY2Yzc4NDczMmNmNzExMWMgbGVnYWN5LXRydW5rCisxMzYwMyA0YTFkNmM3YjA5NTAxZjkzYzc4ZTUyYjliZWE0YjlkNmJmYTVhZDk3IGxlZ2FjeS10cnVuaworMTM2MDQgNjE5M2NjMTQ1YjhjN2FkOGUxY2M5N2RlOGQxOTU5MWQwYzlkNzgxYiBsZWdhY3ktdHJ1bmsKKzEzNjA1IGQxYjQ4ZWUxNDYwMWY4YTU0NDY5YjUxNjU1NmE4OWJkNDc1OTA0OWQgbGVnYWN5LXRydW5rCisxMzYwNiA4N2EzOTM1ZTY2YWFjZGNiMWQ0OGYzNTdkODQ2ZGE3NzMwM2Q3ZDFkIGxlZ2FjeS10cnVuaworMTM2MDcgM2U1ZjY5NjRjZDMzMTdiMDJkNGU0NjZlZGExZWZhYjA3OWYxMWUzYyBsZWdhY3ktdHJ1bmsKKzEzNjA4IDc2MDA4ZjhhMGU1ZjZjZGUxNzE1ZmVkMWVkNDY0MjU4NmRiZTk1MzkgbGVnYWN5LXRydW5rCisxMzYwOSBkMDQ2MDlhMzdkYzExNjYzYjE2MjQzYWJiYjVmY2EwNDg4MzgzYTNjIGxlZ2FjeS10cnVuaworMTM2MTAgNWJlOTQwNmJiYjA1Y2ExMTAzNzVjYzg1YWNmNDMwNjQxMGFmYjhmYSBsZWdhY3ktdHJ1bmsKKzEzNjExIGQ0NTFhMjExYzE2YTNkNjdkOGZmY2IxZDk0NzI2NDhjYTA5MTBmYzcgbGVnYWN5LXRydW5rCisxMzYxMiAyNTY3Mzg4NGEzZDBmM2NkMjczODdmOTIxNTVjYmIxYmQxZDM0ZGQ3IGxlZ2FjeS10cnVuaworMTM2MTMgODQ2MTJhNTY4OGZjOTNjMjRlMWQ1ZjBkNDY2NjNmYWQwYTY0NzMyMCBsZWdhY3ktdHJ1bmsKKzEzNjE0IGRjNmJlMGVkMzk4Y2ZkMzc2ODhjNjdhYjRkNWZmN2ZjYjBlYzIyNTMgbGVnYWN5LXRydW5rCisxMzYxNSA0NDYzZGQ3YmIzZTg5NWYzZTA1OWM3YWRkZDllY2MzYTk5ZjBkOGYzIGxlZ2FjeS10cnVuaworMTM2MTYgNGE3YjJiNGQxNjY5YWVmNWYwZGU5Yzc3MTU0ZWE4M2Y3ZDY5ZGYzZCBsZWdhY3ktdHJ1bmsKKzEzNjE3IDQ3ZTAwM2JkMzVlZDA1M2E4OWY1OWYzYjRjZDc0MzdmODhlNjI4YjcgbGVnYWN5LXRydW5rCisxMzYxOCA0YjUzZjRhMGE5OGFjZDFiZmNkZmM2MzAzM2RmNWI3NWUwM2UxNzQ1IGxlZ2FjeS10cnVuaworMTM2MTkgNzAyOWUxOGI0ZjExZTc3YzQ5NTc4YWZhYmZjNGQzZTdhNmMyNTdjZSBsZWdhY3ktdHJ1bmsKKzEzNjIwIDJlMDBiODg5MDM1ZjJmNDY3ZjhhNDBmODQ4NzQxZjE5NTI0NjMzZGQgbGVnYWN5LXRydW5rCisxMzYyMSA3MjhhMjUwMGVhNDJmYjVmYTgzMWJmYzkwYzU1ZTk4ZmJkNDdjNGNiIGxlZ2FjeS10cnVuaworMTM2MjIgMWQ0ZjVmNDlkZTRlY2YzOGYxOTYwOWM4Y2UzZDhmYzgyYWVmMTYyYiBsZWdhY3ktdHJ1bmsKKzEzNjIzIDc2OWM2YjRjNWI4ODdjMzRlNzUzZmY1NjZlODk0NzRiMzkwZTMwNDUgbGVnYWN5LXRydW5rCisxMzYyNCA0Yzc1NTk2ZTkyZjRmOGFkZWZiZTAzY2FlYzUzNzdkOWQ4M2Y3YTY4IGxlZ2FjeS10cnVuaworMTM2MjUgOWMyOTJhZDhhNmQ0NjNjMDM0ZjU0MmZhZTMwN2NlOTk4ZjhkYjUxYSBsZWdhY3ktdHJ1bmsKKzEzNjI2IDcxZWQwYTJjMjc5YTYwNWYxYmRkOThmNjc3YmU1NjczY2U1Y2RhMGEgbGVnYWN5LXRydW5rCisxMzYyNyBmYTJlM2QwNmM3OTAyZTE2YmQ3YTIwZTczYjg1MzhjMDQzNDU0MDAxIGxlZ2FjeS10cnVuaworMTM2MjggODcyYTgyZmQwZWM0MWQ0ODc0YjI1MGY0MDI0MjBmNTA3N2IyOGFkOSBsZWdhY3ktdHJ1bmsKKzEzNjI5IGFhNmM1Zjg2ZGY4N2E0ZTVlYjNjZDZkMTZiNjk5ZWVjYWMxOTU5MDIgbGVnYWN5LXRydW5rCisxMzYzMCBmYmY0MGQ3ZmQ0ZGFjMjY1YzEyMTQzNzgzYTdlZGQ1NWVjZGEyZDNiIGxlZ2FjeS10cnVuaworMTM2MzEgNjdiZDJhYWUyNzMyZWFhNWExYTlkNjYxNzNkNzliZDc0NGYzNDg5NyBsZWdhY3ktdHJ1bmsKKzEzNjMzIDA2OGZiZjRmNTU4YTIzM2M1NDZjNmEzN2EzMTZiODNhMWVkNWU0M2EgbGVnYWN5LXRydW5rCisxMzYzNCA1ZTg0OGMzZTljNWM3MWM0NGU0MzJkMmM0NTU2OTY4YWI2OTUyMDIyIGxlZ2FjeS10cnVuaworMTM2MzUgMTQzNzRiYTM0MWE2N2E4ZjY1NTg1ZWFjMjliY2E3ZTQ2YWNjY2ZlMyBsZWdhY3ktdHJ1bmsKKzEzNjM2IDFjZGU1MjMwYzUwODE5ZTNkMjQ3M2NjMTBkMjY3MTRiYTFiOGM3ZjcgbGVnYWN5LXRydW5rCisxMzYzNyA2YmY2MjAzNzU5NzYzNDlhOTZkZWIxNDY2NTZmODM3MTMxZDQ3YjIzIGxlZ2FjeS10cnVuaworMTM2MzggOTkyODZkYWE5MDBkZDQ4ZTU0MGZiNzkyY2E0NjljNDFhY2M4NzQ3OSBsZWdhY3ktdHJ1bmsKKzEzNjM5IDEyZjIwOGRiNDJiMGU5MmZhYzZhOGY5Mzc2ZjMyNGI1MjBkNmJiZTIgbGVnYWN5LXRydW5rCisxMzY0MCA3OGY1YmYxNzk3NTA0YTllNjY5NTI1ZmIwYjUzZWIyZjVhZWMwNWZhIGxlZ2FjeS10cnVuaworMTM2NDEgYmU4ZWM4MjhjMDcyMzcyOGMyNzE5OGJmNDE3YzMyMjAzMTkzOGNiZSBsZWdhY3ktdHJ1bmsKKzEzNjQyIDAxMGU3YjY5ZDg2YmYwZTBmMWI3Mzg5NGEzZThhMmYyMTFlMzE2ZDQgbGVnYWN5LXRydW5rCisxMzY0MyBkY2MwOTIyOGEzZDI0MjIzYzc5MWExZWQ0OGYwNWQ1YjdmY2M5NzY0IGxlZ2FjeS10cnVuaworMTM2NDQgOTM5ZDkxNGFmNTgxNmZmYzQ2Y2ZmNzcyNTU2OTE5YjY0MjBmNmIzMiBsZWdhY3ktdHJ1bmsKKzEzNjQ1IGRhOWM4M2I1ZmIwNzQ1ZWNhYWM0YmI1MjM0NGI4YjJiY2RkYzQ5NzYgbGVnYWN5LXRydW5rCisxMzY0NiAzYjE5ODBkYjRhZTk5MDQ2Y2VkMmE4MGMzMTMxNTRlY2ZiNzkwY2RmIGxlZ2FjeS10cnVuaworMTM2NDcgMTY0YjRiYzRkZGRkMGY4Mjk1ODY1ZGNjNjcyMWEyYjA2OTkwZjA4OCBsZWdhY3ktdHJ1bmsKKzEzNjQ4IDNhMzllYmUyNzZjOGY0ZjhjODk3NzhmMzMzMDAwY2UwOGE1YTU5NjUgbGVnYWN5LXRydW5rCisxMzY0OSBkNDIzZjU3ODQ0YjI2YjcyYjgxZDJlYWYyNjg1N2Y0MjExZDNmNTNmIGxlZ2FjeS10cnVuaworMTM2NTAgMzA2YjQ5ZDY4MjMzN2NiOTU2ZDA1ZWMyZGYwMDk2YmQ4Y2ZmMWMxYSBsZWdhY3ktdHJ1bmsKKzEzNjUxIDJlYjI4NzlkNTY3ZjRiMzE2OWYyYWRhOWEzYzhmZjAzYTYyMjEzN2UgbGVnYWN5LXRydW5rCisxMzY1MiA3YzIzOTcxMTIyMWEyNDc0NWYzYjFlNjBmOTMxZjRiNjA2MGQ4NDFmIGxlZ2FjeS10cnVuaworMTM2NTMgNDQyZmZlOWE1OGMxM2M5NzAxYzQ3ZWE3MzY2Y2QwOWI0NzA1ZTU2MCBsZWdhY3ktdHJ1bmsKKzEzNjU0IDVlNzZjOTk2NWZlODM5MDFlMGIxNzcyNWZlOGI4MGZiNmQ3YjYyOGIgbGVnYWN5LXRydW5rCisxMzY1NSA5YTIwMDM4ZjBiOTk3ZWYwZGMyMDBjZmYxNTEwYWZkNjg2ZDFlYTU0IGxlZ2FjeS10cnVuaworMTM2NTYgYTRiNzI0MmE0Yjc0Y2JmNDdjOWI2Y2E2MDQ3MmVjMDUxYWY2ZWU4OSBsZWdhY3ktdHJ1bmsKKzEzNjU3IDFjNmZkYzhhZGFiMGE0YzZmZGM1ZGQxNmVjNjNiNzBjMDkwYWExNmQgbGVnYWN5LXRydW5rCisxMzY1OCBmNzI5YmJjNGE5ZjMxMGY5ZjdlYTVkZmY5ODlkNWJiZDNhOGI0YWRjIGxlZ2FjeS10cnVuaworMTM2NTkgMGQ4OGUwZDIxODRmODkzOWFiZDBkN2QwZjA0MDFjYjVmOTNmNTkzOSBsZWdhY3ktdHJ1bmsKKzEzNjYwIDQxYTQ2OTc4YTQ0NGE3MjlkNzcyZjE4NzcxN2QyNjJiZTNmMTFjYzcgbGVnYWN5LXRydW5rCisxMzY2MSAyYzU4NTUyNjQ0N2U5NWViOGY0M2VmOWMzYmJhYzBmYTM0YTY5YTA3IGxlZ2FjeS10cnVuaworMTM2NjIgODA0OWQyZGUxZTc5NGFhYzQ2NjNmZmZjYjI0OGJiODgyNGFlNWM2OSBsZWdhY3ktdHJ1bmsKKzEzNjYzIDg0ZTM0ZDgxMzhhYzkwNDM1MWZmOGQ1NjdhMmUzZjFhOWNiOWUwZjUgbGVnYWN5LXRydW5rCisxMzY2NCBjMmFjODk2OTI2Y2M0YTc5ODRlODUyOGQ5Mzc1N2ExOGYyZTk2YTAyIGxlZ2FjeS10cnVuaworMTM2NjUgMGE1YThmNTEzZDEzNjNhN2E3OTMxYzQ5NjBhNGUwYjY4MzE3N2Q4YyBsZWdhY3ktdHJ1bmsKKzEzNjY2IGI1NmJkYTE5MDBmYzBlZDAwYzc5YmQ2YWJiM2E0YWE5NGQwZDQ4Y2YgbGVnYWN5LXRydW5rCisxMzY2NyAyYzNhZjkwZjNmYWViNDU1NmE1MzE3ZmQyMWMzM2ZiZTdhNWM4YTAxIGxlZ2FjeS10cnVuaworMTM2NjggY2RmYTljZDRlNzJiYjI2YTdkNWM0MjU0NzE4ODQ3NDliMzQ2ZmQzOCBsZWdhY3ktdHJ1bmsKKzEzNjY5IGMwOTU0MTEyOGM1YTQxZGUzNTZmOTQwZDYwMWY2Yjg4NjMxZjY0NmQgbGVnYWN5LXRydW5rCisxMzY3MCBjOTVlMWZkODdhZjBmMDY5NmZiMjc5N2NkMGNjNWEyODhkZjEzYjRlIGxlZ2FjeS10cnVuaworMTM2NzEgMmI3YzQzZDRiNDY5YjBmMjIyMGM5NWE2NmEwZjExYTRiZTY4YTQyZCBsZWdhY3ktdHJ1bmsKKzEzNjcyIDFkYmM1ZTY5NzhmOWRkMmY1ODg5NDJiNDIxYmY4NDBmMDQxNWMwZDEgc3RyaW5nX21ldGhvZHMKKzEzNjczIDQxZmNiNDBlODQxZmQ2YTYzMTNjZWRmMmVjYWFiZDc1NjFiZTY5OWEgbGVnYWN5LXRydW5rCisxMzY3NCBkOTk3ZTI3ZTMzMTJiYzBkYzY2ZjI3MDk5NWQ1ODczMWY4OWYzYzMxIGxlZ2FjeS10cnVuaworMTM2NzUgZjYyZTQ2NWM0ZDAxNGI4ZTM2Yjg1MjQ4ZmE4MTI5ZGUwNjkxOGFlNyBsZWdhY3ktdHJ1bmsKKzEzNjc2IGJiZDAzNWU1YTk3MmNmYTFlYWE0ZWZhYzdmNDQzYzFlMGMzNjhkNWQgbGVnYWN5LXRydW5rCisxMzY3NyBiOGEyOWRlOWVkNTRiMjQzYWJkMzQ0NzA5OTViOWU0NjZiZTBmNzAxIGxlZ2FjeS10cnVuaworMTM2NzggODc4YWMwY2QwZTc2ODE4ZTI1NjNkZWVlM2UyYTkxNjNlMjliODhlZCBsZWdhY3ktdHJ1bmsKKzEzNjc5IGY0ZWZiYTMyMzIwZWM0M2E4MTk0YzIxYjU4YTJjZDg5MzVkNWIxMzkgbGVnYWN5LXRydW5rCisxMzY4MCA4M2YzOWZjODU3NjNiZWY0MjliOWZmMjVhMDhlMWM1OWZjYTczYmIwIGxlZ2FjeS10cnVuaworMTM2ODEgMzZhNjU0NjJjMjY5ZDBjY2QyNWM0MTJlZWJmN2Q2YWUwYzg1ODQwYyBsZWdhY3ktdHJ1bmsKKzEzNjgyIDFhNjhjOTcyZDA4NDFlMzVkNGUzZTEzMDM5MTU0MjE4NzkwNDY3ODMgbGVnYWN5LXRydW5rCisxMzY4MyA2ODUyZmYwMzAzMDg4NGJkZmU3NTlmMmYzNGM0MWEyNGM1Yzk3NzFjIGxlZ2FjeS10cnVuaworMTM2ODQgMmM0ZDQ4ZTMxYmQ1ZTc4YWI3MDkzYzJmYWEzOGU5NTJkMWQzZTg2ZSBsZWdhY3ktdHJ1bmsKKzEzNjg1IDQzY2NiY2Y0Mzg0ZjEyMzExMzIwMmQ5YWE2YTg5ZGNlNmYzNmNiZGIgbGVnYWN5LXRydW5rCisxMzY4NiA3Y2U1YmFlN2Y3NjVhNDZlY2UxNTVkMGU0MTY1M2I5MjEyYmFmNGU2IGxlZ2FjeS10cnVuaworMTM2ODcgMmYxMDI2ZGI4MjI4MGJlZmU3ZjY4YmQzZWE1OTU5MTk5ZWYwY2NmYiBsZWdhY3ktdHJ1bmsKKzEzNjg4IGFlZDE5YWY2MGVhMzI1MmM4ZGYwY2FlZTY1NmU0ZmMyZGNlOWI2M2MgbGVnYWN5LXRydW5rCisxMzY4OSAwYmFmZjEzNWM0YjRlMWIwOGJhMGFlNzhiZDA2NDFiZDNkNGJmOWEwIGxlZ2FjeS10cnVuaworMTM2OTAgZDE1NGFlN2NhMDE0Zjc5MTMwZTQ2MDI5NDZiYWY3MzNhMjlhZjY0OCBsZWdhY3ktdHJ1bmsKKzEzNjkxIDNjOGM1NTc2MTA5YzM1N2YxZjZiNTQ5OTliM2RjODQ1MWZhNzQxZGMgbGVnYWN5LXRydW5rCisxMzY5MiA2ZTZiZGFlODgwOGE1MzE5NDU0YjdlNmRkYmM2ZTNiZjFjNjIyNTc3IGxlZ2FjeS10cnVuaworMTM2OTMgOThlNTljODRlYzMxYTNlYmRiZjg2MjgyNzk2ZTE4NzI2MDZmN2E5ZCBsZWdhY3ktdHJ1bmsKKzEzNjk0IGE0YWJhMjA1MDM4ZWI1YTJhYjk5MjYzZTAyZjIzMDFmODc0MzhmYmQgbGVnYWN5LXRydW5rCisxMzY5NSAzZTBjN2U2OTM5YmQwMmE2NzU1MGNhMTA1MmQ4MDJkYTM0YjRkNGVlIGxlZ2FjeS10cnVuaworMTM2OTYgMWEyN2RkMDZjY2UxNjlkYWRjMjgxZDZhZGM0NDE3MDE4MDMzMTJmYSBsZWdhY3ktdHJ1bmsKKzEzNjk3IDYxN2UxMGZjNWQ4ZDMyOGZhMDA4ZmQxMzdjN2M5NDljMWE4YWUwOWMgbGVnYWN5LXRydW5rCisxMzY5OCA1ZGE1N2VhNWZjNjQxODEzYjVmMjUwNjA1N2ZkMDExN2Q0YjY4OWZlIGxlZ2FjeS10cnVuaworMTM2OTkgMzIwNjUyMjQyZTZiYTA2YzUxNWEzYjY4ZTUwNjkyZmY3MjRlOTdjMiBsZWdhY3ktdHJ1bmsKKzEzNzAwIDA0OTI5YWJjYWQ4NmJjYjUyNzU0NzhlZDBjZGQ1YWM5NjlhNTUwODYgbGVnYWN5LXRydW5rCisxMzcwMSA4ZTc0ZWQxNTRmNjA4N2ZlYzcyZjVlNjM4NGM3Yzc2MGY3MDQ0NzI1IGxlZ2FjeS10cnVuaworMTM3MDIgZjc2NmZiNmY4NTI2NWE0OWI4MzhiN2UzZDY1YTZhMWM2OGE4MTgyNCBsZWdhY3ktdHJ1bmsKKzEzNzAzIDM0ODVhN2U0NjAwYjlmZWRmMThlNjU1ZmJmOGFlOWRlNTQ2NDYxM2QgbGVnYWN5LXRydW5rCisxMzcwNCBmYWI4MWRmNTY2ZDBjZmNlNDY0YmZhODRjOGI1MDRlYjFjNTMwNDUwIGxlZ2FjeS10cnVuaworMTM3MDUgNjRiMTVlOTA5MWE5MmJiNjM1ODk3Y2ZmOTk4NzU3YzM1NTA0YjIyNiBsZWdhY3ktdHJ1bmsKKzEzNzA2IDVmNWZjMTAzMTk1N2FhNWE0MmZlMWI2MjdhNDNjOGUyNzM1NjFkZDIgbGVnYWN5LXRydW5rCisxMzcwNyAyNDVkMmI2MDUwMzZkMTRmMTQ5NDY3YzgwOWI4Y2EzNWExZDJkM2NmIGxlZ2FjeS10cnVuaworMTM3MDggZDZhYjcyY2IxNjI1OGU5YzExMTFhNTU4YmZhNGQ2ZTc1MWQ1ZWFkNiBsZWdhY3ktdHJ1bmsKKzEzNzA5IDgxNzViZmRmYmVhOWU0MGY4MTlmMGY2Y2RlNmE5ZDczMmY2YWVhY2EgbGVnYWN5LXRydW5rCisxMzcxMCA2YzEzMDlkODJjYjExNDFmZmUzMWI2Y2Y0MjEzZWVmODViYTViYWFiIGxlZ2FjeS10cnVuaworMTM3MTEgMzVlMGQwM2YyYjAyZjlmOGM1ZGRmYjMxMGFiYjlhYmNmYzVmYzIwOCBsZWdhY3ktdHJ1bmsKKzEzNzEyIDFlMGIxOTY3YmU3ZjNlNWQ5NGIyOGM0Y2Q0ZjU4MDUxNmEwMzQyMzQgbGVnYWN5LXRydW5rCisxMzcxMyA5MzhiNDZmYTYzOTRlODg4ZTNkYmQ3OGMwOTM4NzI1NjY0Nzk0YTQyIGxlZ2FjeS10cnVuaworMTM3MTQgZGJiODA4M2YwY2U3MWMzOWNjMjI2ZGIyOTYxN2QwY2FjYTY5NDFiMSBsZWdhY3ktdHJ1bmsKKzEzNzE2IDI0YzViYzZiZmNhYWZlOGVlNWI1ZjY2OTRkNjQ3YzFkM2RjNTUwZTggbGVnYWN5LXRydW5rCisxMzcxNyBmNmU2Y2RiYWRiYjUwNGUwYzMyYmUwYTZmNDY1YTY1YzkzOGNmZTMxIGxlZ2FjeS10cnVuaworMTM3MTggMTIzYzM4ZGE2ZjQzODNmODNmZGM2OWMzZDVkM2U2NmY5MDg5NWFhYSBsZWdhY3ktdHJ1bmsKKzEzNzE5IGVjZWU5ZGU3OWIxZWY1NzM0ZjhmMWRjZmNkNjBlMWNhM2FhYmU1ZDUgbGVnYWN5LXRydW5rCisxMzcyMCAzZDY2YTE5NzE5MzY5ODBhNWMwYzk0MTYwODNlM2JkOWQ1OTdkNjNiIGxlZ2FjeS10cnVuaworMTM3MjEgMDFjNTFiMjY4YzA0OTYxZmYyY2E1ZTZiZGZlNDVhYWE5NzI1NmQ3ZCBsZWdhY3ktdHJ1bmsKKzEzNzIyIGM3MjAzMThlM2M0OTIwNzgxN2RmZGIwYzM2OWMxMzk5OTU1MmUxNDYgbGVnYWN5LXRydW5rCisxMzcyMyA4OTk2MWI2ODEzYWMzOTE5YjQ3YWI5MmVhYTU4OGIwMjk5NDIwZjA0IGxlZ2FjeS10cnVuaworMTM3MjQgYzYyNzczNGVhZjkyOWE3OWM2MmEzMzVhOWRhN2Y2YTQxNTBmMTY4ZiBsZWdhY3ktdHJ1bmsKKzEzNzI1IGE4MTk1ZmEzMjlhYzM5YmZjMmEzOTFmYjJkMWJjYTU1NTMxYjRjMWUgbGVnYWN5LXRydW5rCisxMzcyNiAxYzhlNDIyN2Q5ODc5MWJhYTlkODA5OTljZDRjNTgzNWQ2NjU0OWRkIGxlZ2FjeS10cnVuaworMTM3MjcgNGZkZDMzOTE0ZWRhYjQ4MjAyOTY1YTI4YjljZTExNDBhZmI5Mjc1YiBsZWdhY3ktdHJ1bmsKKzEzNzI4IGU4YjI0Y2QxN2RmMjNkODcyZTI2ZTc1NmJmYTM2YTNlYzY3ZDU3MTAgbGVnYWN5LXRydW5rCisxMzcyOSBjNTJmYmM2YmQzOGE5MTcwMTViMzkyZDljOWUwM2E5NGRlNjAwMjE2IGxlZ2FjeS10cnVuaworMTM3MzAgYmNhMmQxNGYzZTM2NTBmNmIxN2Q0MjMzZjhjMWZjZTU3ODk0YzRlMyBsZWdhY3ktdHJ1bmsKKzEzNzMxIGJmNTY1YjE4Y2ZkYzRmYmFkMTBmMDdlZGE4ZjlhMzgyYTFhMjBlYTAgbGVnYWN5LXRydW5rCisxMzczMiA3ZWVlYjBkMmIwYTQwMWIxODcyODI3YjA1YTU2NjBmYjY2NzM3ZTE1IGxlZ2FjeS10cnVuaworMTM3MzMgNzFlMGI0NWQ1NThjMmY2OWU0YjIzNzE3NWZjYmIyYzI5MjQ1ZTZjNyBsZWdhY3ktdHJ1bmsKKzEzNzM0IDkxNTdjNmRhNzYxOTNhMTUzYTQ2YWZkZGY3ZGViNDEwMTc5NTRlOTkgbGVnYWN5LXRydW5rCisxMzczNSBkZThmZmQyZTcxYjVmYWVhZDY3MDIyZjM4MGFmOWFlNjdiYzE2ZGQ2IGxlZ2FjeS10cnVuaworMTM3MzYgOThkNDU3MzgzYTJkM2Y0YjA1ZmM3N2E2YTE3MjRlYzM3ZDc3ZmM4NiBsZWdhY3ktdHJ1bmsKKzEzNzM3IGMzODhmMDBhZmZlN2RjYjNjYWExZmJjZjM2YzM3YjVlMjNiMzk2MzEgbGVnYWN5LXRydW5rCisxMzczOCA1ZmUyNjNmYjY3NGFiMWEwMDY3ZTZjYWMwOTBjNDQwNjY1YWExN2RhIGxlZ2FjeS10cnVuaworMTM3MzkgYThiNWE1YjM5MmZiYzUyYzA5NjgxZTBjYTJjNWEzNTc4NGEzNDM2ZSBsZWdhY3ktdHJ1bmsKKzEzNzQwIGNmN2NkN2IwNGZhNjU5YTVjMjEzYTI4MThlMGQ3NzNmYjJmY2QzNDAgbGVnYWN5LXRydW5rCisxMzc0MSBkNWY0NmY1OTk1ODViYjY4NDVmNzgyZWM3ZTk3NDFlZjdlMTcyY2EzIGxlZ2FjeS10cnVuaworMTM3NDIgZDViMzczNDQwZjk5YTM4MjVlY2I4N2E0ODA1NjAzZTczODU2NDU2MCBsZWdhY3ktdHJ1bmsKKzEzNzQzIGVhZjllZWFiM2JjZmY5MWRjZGRlMTk4OWZmNTE2MWEzYTZjYTE3NjkgbGVnYWN5LXRydW5rCisxMzc0NCA5NjUwMWNjM2E2NjNiNDc4NTMyNTQ3YzAwYjZjZWY1YWQ4N2Y2ZmUzIGxlZ2FjeS10cnVuaworMTM3NDUgYjViZDNmOTc5ZGM5OGMzMWNhYjY1ZTVkMDdkN2JmYTE5NTY1MjhhNyBsZWdhY3ktdHJ1bmsKKzEzNzQ2IDRhYWU1YWZlMWYxNDQ0NDJmNTZlY2NiZDI0MDc3MGM4NTcyMjAyNWMgbGVnYWN5LXRydW5rCisxMzc0NyBmNDA2ZTc4ZWMxMGJjZGY2Y2VmZDljYTI1ZmQ5OWRiMjQ2NGQwNGE0IGxlZ2FjeS10cnVuaworMTM3NDggNDQ1Y2JlOGRiOGY2ZjQ3ZTYxNzYyZWJjYzY3OWMxZGQ2YjYxNzU4NyBsZWdhY3ktdHJ1bmsKKzEzNzQ5IDJkNzMzMWY0ZGZlMzUxYmM5ZmI4ZmFlODRiODFiMWJjMTkxMmQ1M2QgbGVnYWN5LXRydW5rCisxMzc1MCA4YmIyN2Y0ZWJlMTZlNWE5NzRjMDk1MzZlYjkzMmIzZjk4NjE2Y2VjIGxlZ2FjeS10cnVuaworMTM3NTEgMzA4OTQ2MTk2M2M0Yjk1NzYzZTUzMDVjMzA3YTE5YjVlMzA2MzUzZCBsZWdhY3ktdHJ1bmsKKzEzNzUyIGVjZmUzZDhjYjBjMzQ3MTBkNmJkZWNlZTFhNDA2ZmJiMDQzNGI1YzYgbGVnYWN5LXRydW5rCisxMzc1MyAyODU2YWQ1YzY3OWFlNzM5YzY2MzExMjk3NWJhNWJlMzA2NDYwNjQ5IGxlZ2FjeS10cnVuaworMTM3NTQgOWE2NmU3ODA3Yzc3MzQxOWUxNTg2NmI4Zjc2NmUyMTg2ZWY4NGYxMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3NTUgYWE0YzhlMmVmNWI0MjllOTA4NmNlODFmNjdhOGQxNjFhOTNkZjVlMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3NTYgOTA1MjI2NDcxYjRjN2Y5ZmIxOTA5YzI4ZmY4YzMzODkzM2MwMmZhYSBsZWdhY3ktdHJ1bmsKKzEzNzU3IGUwMWYyMzUzOWI2Y2E4YjMyYzUwY2I4MGE3MWE4MWUwZDZkM2IyNjIgbGVnYWN5LXRydW5rCisxMzc1OCBhMGM1MjBjMWQxMmQ0NmI1ZTk0ODM5YTgwMmM5YzhkZmVjMThiMzI1IGxlZ2FjeS10cnVuaworMTM3NTkgZTc3M2QyZjA3NDFkYzU4NzI0OTJlZThlNjU5OTQ4ZTk2ZjEyOGRjNSBsZWdhY3ktdHJ1bmsKKzEzNzYwIGUwZTY3Y2YyZmM2NDQ1MTk4MGI1NDFmMmQyNTcxMzRiNjZkMzgzMGUgbGVnYWN5LXRydW5rCisxMzc2MSAxMGViYjI1YjI0MmQ3YTAwOTRhNTlhNzAyOWE3N2NmOWQyZmM2MjI3IGxlZ2FjeS10cnVuaworMTM3NjIgYjY5ODU5YjY5NzYzOWNlZGY1NjllNTczNTJkZmM1YmUxZGJlZDU1MiBsZWdhY3ktdHJ1bmsKKzEzNzYzIDZkYzRjYzMxOGE1YzhhMTAzM2I5OTgxODM4NjMyY2ZlYWFmODJlNjkgbGVnYWN5LXRydW5rCisxMzc2NCBlNzQ2OTQ0ZTlhNGE2NzZmOWM4MzcyM2IyZjNmN2Q1OGM1M2M2N2IxIGxlZ2FjeS10cnVuaworMTM3NjUgODMzZmQyMzM4YzY5OGRiNDYzNDNmNzZmMGQ3OGIxMGM2N2ExNTljOCBsZWdhY3ktdHJ1bmsKKzEzNzY2IDAyODdmNWIzMjI0Y2M3ODE3YjNkNGVmZjMwNTE4NDRhZmRhNjMxYTUgbGVnYWN5LXRydW5rCisxMzc2NyAwNWUwY2IzNjkxNDYyN2E2OTIyYmIwMzUwMDc5YzA0YmRjM2JiMzI1IGxlZ2FjeS10cnVuaworMTM3NjggN2ZiMmY0NTYyZjc2NTdkYTM0OWI0ZmExZTM0OTU3NzVkMjA1ODBjZCBsZWdhY3ktdHJ1bmsKKzEzNzY5IDc3OWNlNDZlMzQzMGE4YWQ2NWFkOTE2Y2UyYTM0NmRmN2RmZTBmNDUgbGVnYWN5LXRydW5rCisxMzc3MCA1NmVmNGMyZTBkN2VmYmJkOTFjYTU4YzBkNmQzYmZiNDZlMzhkNjhiIGxlZ2FjeS10cnVuaworMTM3NzEgNTc3ZWEyNjFiZGYyNTlhYTMyNDE2NzEwYjAxNzI2YTA5ODg2YjVhNSBsZWdhY3ktdHJ1bmsKKzEzNzcyIDRjYzRiYWEyNGE0MDA2ZTNkZjIxYjQzZjY1NzFkZTM2MzdkZmE4MTEgbGVnYWN5LXRydW5rCisxMzc3MyA1ZjAzMjY4NmEzNzEyZDZjZDgzYzY4OTI2MzQxY2I3M2JiOTRmNjU0IGxlZ2FjeS10cnVuaworMTM3NzQgMDA2MWNhNDg2NWQ3MzRjOGU4OGIxY2FkYTZjZTIzMDljNjVhMjhmZCBsZWdhY3ktdHJ1bmsKKzEzNzc1IDZhYWMzMWNkMjEwMjVkODI0MWQ2NjI1NDBlNzYzMTg4NjdmOTQ4YmMgbGVnYWN5LXRydW5rCisxMzc3NiA0Mzg1YjFiY2JjM2IzZWFiOTFmNDM5YTA2NzBhMjYxNGVmNWM1MmExIGxlZ2FjeS10cnVuaworMTM3NzcgODU0YjgwMTI1M2YwZmZjNmI3ZDcyYzAxZmU5ZDM5ZmQ1ZTRmNTk3MSBsZWdhY3ktdHJ1bmsKKzEzNzc4IGQxM2RhMTk0MThlY2E4ZGVmMjc3YWMxODE2NzM1YTg5OTI1NDJjODAgbGVnYWN5LXRydW5rCisxMzc3OSBjOWMxODg0MjZlNzZjMmU5M2MzM2NjMzAxYTQxNGE1ZTVmNmU4ZjU0IGxlZ2FjeS10cnVuaworMTM3ODAgZTYxYzQ4NmIzNThhNTA0NTQyNTU1MDkzNmQ0MzNiODhiOWQxOGZjOSBsZWdhY3ktdHJ1bmsKKzEzNzgxIGFlZGU3YjJkZDQyZmUwZmUyZDM1ODQ2Y2MxNWRlNDlhYjlkYzhiNDcgbGVnYWN5LXRydW5rCisxMzc4MiBiM2YxYWJkMzAyN2ZkYjlmYzEwYzJjYzVmMjlhYmRmZTIxNzRiMTJmIGxlZ2FjeS10cnVuaworMTM3ODMgMmYwN2JjNTZlOTdlN2FjNzViNGFhMDAyMWZmZTkxZGFlNDNmN2Y2YiBsZWdhY3ktdHJ1bmsKKzEzNzg0IGVjYzgwMThhNDE4YzM0NzU3YWUwNzI1N2E1NWU1ZTE3N2FmYjE5MGIgbGVnYWN5LXRydW5rCisxMzc4NSBjNmJkZjAzMmI3MDU2ZTJhOGRiYTgyZTFmMDg3MmVmZDg2YzJlNzc1IGxlZ2FjeS10cnVuaworMTM3ODYgMGQ3M2NlNmQ2MjI2N2NhZTc0MzNmZWQ2NzQxMzZjMzQ0MmIyMjBkOCBsZWdhY3ktdHJ1bmsKKzEzNzg3IDQyN2MzYjUwMDU4ZWFiMGM5MGE0Njc4MDFkODNiNjY1MGQ5ZDQ3MTggbGVnYWN5LXRydW5rCisxMzc4OCAyNmZiYzgwZmFkZjI1YWRjMGUyOTFlYjc4MmQwMWU4MTkzOTBlNjI2IGxlZ2FjeS10cnVuaworMTM3ODkgMGQ0NGIwZGJkZDk1MWIxOTAwZGY2ZGVlMTU4YjdlYTUwZDZiYmI0NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3OTAgN2FkNGUzOThmM2VhM2RjMjQyMzgyZmVjYTEyNTViNTZlZjQxZmE5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3OTEgOTI4NmQzZTE0NzRjNTQ2MzU5NjUxMzQxYmU5YjgxNTdiZmFkYTZjYSBsZWdhY3ktdHJ1bmsKKzEzNzkyIDIzNDFiZTc0Yjc1ODJmNzYzOGE3NDFkZmQyODU0YmI3MGEzMmQzN2IgbGVnYWN5LXRydW5rCisxMzc5MyAwYTcwYTJjNWQ5ZTY5OTc4Y2VhNDkyZTYzMDNhOTA2MDljNWRjMjQxIGxlZ2FjeS10cnVuaworMTM3OTQgZWFlZWE5ZTQyMzY5OGEzMjc3MzgzMzkyMzM1Y2YzMGEyY2YyYTk0ZCBsZWdhY3ktdHJ1bmsKKzEzNzk1IDY5NjhmZGJiMWEzZmVjOTNkMzg3MTViNjZiMzdkZjgzMTRmMGEzMzMgbGVnYWN5LXRydW5rCisxMzc5NiA4MTBjMjVkNTA0MWM0YTUzNGIyZjU1Y2QxN2NlODJkZGUwYmVkNDA4IGxlZ2FjeS10cnVuaworMTM3OTcgNDcxNzFmMmQ3ZDU4NWQwMDhiMjgyZTg2YTc3N2FjMmNhZjIyNmIxYyBsZWdhY3ktdHJ1bmsKKzEzNzk4IDMxYmVjYzQzMjUyMzllMGRmNDk0MjA0MTljNjYxYzZkZjA2M2Q5ZjEgbGVnYWN5LXRydW5rCisxMzc5OSA4MzM2MTg4YTNjMTAwNTIwNjQ1Mzk4YmRlMWVlNWVmZTA1Y2Q5NTQ3IGxlZ2FjeS10cnVuaworMTM4MDAgYzBiODZhNDRhMTIwM2E0NTRmMDhmMWM4YjZiNmZmYTVlOWNmNDkxMSBsZWdhY3ktdHJ1bmsKKzEzODAxIDJiMjZlNDhhODVhNmEyNGUwNTNlYmViYThlNmI3ZGViMWZlODBkMmEgbGVnYWN5LXRydW5rCisxMzgwMiAzZmU4ZDEzMzI4YzgxMzI5MzQ3MjU1MTVkYTg1ZTRmZTcyOThhZGEyIGxlZ2FjeS10cnVuaworMTM4MDMgMmUwODc1MzlkYTYwNGRjYjU5NWYzYjM0NDc4NzQyYTA3N2JjM2JmNCBsZWdhY3ktdHJ1bmsKKzEzODA0IDJjYzZhMTJjZDQxMThlMmRmYjc3NGNhNjAzMmU0ODRhNGQ1YWI4YzEgbGVnYWN5LXRydW5rCisxMzgwNSA5MmY3YWY0MmVkOTFjNWFhNzVhZTAzNDg2MTcyNTc4MmEwMGFhZWE0IGxlZ2FjeS10cnVuaworMTM4MDYgMjAxYWMwNjliMGQwYjhhODgzZmRiNDc4NWFiZmU2NDY5NjgxMmQ5ZSBsZWdhY3ktdHJ1bmsKKzEzODA3IGZmY2RiMDcxMTY5NTg0ZmY5N2YxMTk4ZTRkYTUxZjAzM2U0MTkyMDUgbGVnYWN5LXRydW5rCisxMzgwOCBlZmE3NWM2OTg1N2QyYjI4MmZjOGY4YTQ2ODQ3MTU3NDY5YzM1YmQ3IGxlZ2FjeS10cnVuaworMTM4MDkgNjcyZGJiYzM5YmEwODM0Yjk2YzkxYzNhMmI3NjY2MjAyMmJiZTk0NSBsZWdhY3ktdHJ1bmsKKzEzODEwIDQyODg2NWQwMGVlZWY1NTJlMTJjMGUzZTEwM2I2ZGI1MGE5YzU0YzEgbGVnYWN5LXRydW5rCisxMzgxMSAyZTIwYTBmYzJjNWYzYjJiOTg5OTQ4ZTJiOTljNzViN2U5ZjRmZDg1IGxlZ2FjeS10cnVuaworMTM4MTIgM2I5ODFlYWNhZDdiNDM5MzRlOTY3NmE5YTkyYWZlMjhlMzYzZjFmYSBsZWdhY3ktdHJ1bmsKKzEzODEzIDcwY2NjY2E2YmRmMDYxZTM5ZmMzNDVjNDViYWQ1Njg5NjE5ZmI5NjcgbGVnYWN5LXRydW5rCisxMzgxNCBhNDk5ZDIwYTM1Y2EyY2VhZDg3NmQyYTA5ZWIxZmZkMWNhYWIzOTM3IGxlZ2FjeS10cnVuaworMTM4MTUgY2FlNGIwOTI3M2IzMGM3ODZkNWJkMzE0MDg4NzVhM2YwNzkyMzAwYSBsZWdhY3ktdHJ1bmsKKzEzODE2IGFkZjZkMjFjY2Q3ZjFhYTQ0ZDhjNmM5OTllOTNkNmQwMWFiNDI2YTIgbGVnYWN5LXRydW5rCisxMzgxNyBjZGQ5MjhkMjI5M2MyODJlZjBiOWZjZmIyMDU1ZDVmZDA0NDYzMWU5IGxlZ2FjeS10cnVuaworMTM4MTggZDQxMTJkNGM1YmIxODNlNjRhYjc3ZGZlMTBjOTc5YmNkMmNlMzFiMiBsZWdhY3ktdHJ1bmsKKzEzODE5IDk4ZTMwMzkzOWIzOWUyMmVhZTI3YjZmMjE2YmY1ZDhjYzViNjc5MjkgbGVnYWN5LXRydW5rCisxMzgyMCAyMDM1MGVjY2E2ZTRiMTMyODE2ODYyNWRhYjkyMmM1MzgzZGYyZTQ0IGxlZ2FjeS10cnVuaworMTM4MjEgZjY3Y2UxNTI3MTlhYWZlOWNhMWNmYjI4ZTc1MWU4YjhjZTVlY2EyNyBsZWdhY3ktdHJ1bmsKKzEzODIyIDgzN2ZlNzVkNmRjMTllMDM2MDIxYzgwYTI2MTg3MDJhMzgwZjQyMTYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODIzIDUxODllYTZlNGJmNmVlNDIzMTM3MWJjZDI2ZDc1NzRiZDJlYmExMWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODI0IGFkZjg3ZDEzYTBjMWFhZjExM2U5NDUzZmMwYjhlMjI1ZmYyOTQwZTkgbGVnYWN5LXRydW5rCisxMzgyNSBmMmM5MjBkMDNmNDRjZTMxZDM5N2Q4MDdiMGFlYTdjN2FjZDFhMGJlIGxlZ2FjeS10cnVuaworMTM4MjYgY2NkZjVkYzJhY2Y2NTI2NDdiODg0NDQ1NmMzYjgyMzE5MDlkZDM2OSBsZWdhY3ktdHJ1bmsKKzEzODI3IDk2NDE4Njc0NWVhNmE0ZDE4NTY5OGI3MzkxZTQyMzE4YzNiZmUwMmIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODI4IGQ5NzBhZjBjZWNlOTYyMGQyNDcxMWI2ZmMyNDZkM2I1ZGQwODMyZjggbGVnYWN5LXRydW5rCisxMzgyOSAzMzFlZTRhZmU5YmVkODZiZGU5MzEwMWVkNWVkNTVhZTc5Mzk3MDU0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgzMCBiN2FkMTgwOWJlMDQ5ZjAyMzhjMWY3YjhlMmIyNGY2OWJjZDQwZmY1IGxlZ2FjeS10cnVuaworMTM4MzEgNzhmZGI2YzBjMGExNTEyMzI4Mjc0MzczNjMwODljZWRkYzBmZjA0ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MzIgYTlkMjhhMDdhMzI3NmY4OTkzOWYzYjZiNDFmZGYyMDZhNmRmNmM1MCBsZWdhY3ktdHJ1bmsKKzEzODMzIGQzNjk2YmYwOGVlZWE4NjFkODA1OTkzZjdkNWMyZDFhZWFlNTU1YmUgbGVnYWN5LXRydW5rCisxMzgzNCBjNmFhMzJmYjNjZjhmYWYxNjFkMzc1NGZhNDdkNzUyMDY5MzgwNTI0IGxlZ2FjeS10cnVuaworMTM4MzUgMDA5NGJmMThlNjg4ODViMDFjZTViMjIzYTgyMGIyNWM3OTBmZjBjNiBsZWdhY3ktdHJ1bmsKKzEzODM2IDI1NjAyMzZlY2VkYmFkYWJiNzkzYTNjNTJjMzNkZWQ0MTRmNmVmYjkgbGVnYWN5LXRydW5rCisxMzgzNyA0OGYyYjE4YmFkNWQxZmZhMTNkNmM4NGM3OWJkMzJhYmQ5OGI4OThkIGxlZ2FjeS10cnVuaworMTM4MzggNmQ2NDZmN2UxYTFjN2VmNGIxNTZlMWVhMjBkMTFiNjE4ODViYmRhNiBsZWdhY3ktdHJ1bmsKKzEzODM5IDhlYzZkMmM2YzU5ODFlZjI2NWE0ZmQ2ZDBiMGU4MzY5MzIyMzhjZDkgbGVnYWN5LXRydW5rCisxMzg0MCA3ZjE3NWMzMjNiOGU0NmE4YzVkZGU5MTcwYmQ0MGY2NjhkMjczNzg5IGxlZ2FjeS10cnVuaworMTM4NDEgODAyODkwOGE5ODg5OTEyMzY5MmM2NjZkN2ZkNmFhOWY2ZTc5YjBiNCBsZWdhY3ktdHJ1bmsKKzEzODQyIGFkYjViNmRkYzFlNWVmNWM3ZjA0ZDBlYWQ4YWI3ZWU0ODBlNTUzMjYgbGVnYWN5LXRydW5rCisxMzg0MyA0MjRiMzFhZjZkNTEwZTE1NWQ4MTUxNzZmOWZkODk4NmQ0ZWMwMjY5IGxlZ2FjeS10cnVuaworMTM4NDQgNDRjODIyYTRkOTUwMTg2NTY5Mzg5Yzc1ZjNmY2NmYjcyNTljNDNjNyBsZWdhY3ktdHJ1bmsKKzEzODQ1IDE1ODQ5ZmVhYzNmYTAxZGM2MWQwNDUyZDdmNTk4MTcxZGVlZTk2YmUgbGVnYWN5LXRydW5rCisxMzg0NiBkM2M0YzEzZTAxMzhjMjRjZWY0ZDBjNzExZjIwOTI2YWU4ZDY3NDdiIGxlZ2FjeS10cnVuaworMTM4NDcgNzdiMzMyZGMyMDYzNjQ0ZWYxNGE1NDIzYTRkMDRlODU1YmMyZGUxMyBsZWdhY3ktdHJ1bmsKKzEzODQ4IGUzNDRjMWZmY2RhZjUzNmUzMzI4NWRjYjE5NDZhMzdiYzE0YjIxOWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODQ5IDQyMzIwM2FhYmVmYjQ4Y2NkNjZkNjhhN2NjZDVmMTU2NGJlMGE4NGEgbGVnYWN5LXRydW5rCisxMzg1MCA1OGI4ZDIxNmQ3MjE0Y2UzYzJiM2U2OGQyMjhkYjUwZDVlZWZjZWJlIGxlZ2FjeS10cnVuaworMTM4NTEgZTZlNDVhNjBlMWUwMjczYWY4ODBiNzM4MGRjMWZjNzU1MTQ3MDIxMyBsZWdhY3ktdHJ1bmsKKzEzODUyIGI0NDI0MGIyNzNjZmI1MzNkY2QzNDcyM2U2ZTQxMWMxMjdhNGYyMTMgbGVnYWN5LXRydW5rCisxMzg1MyBiMWJiNmQ3YTMzNWY0ZjUyNDRjY2FhY2VhNTg2NWFkNDZiYjhmMThlIGxlZ2FjeS10cnVuaworMTM4NTQgMTU4MTMwNzZjYmVmNmFmNTcxODcxMjA4Y2RlNTIwNGQ3ZmI1ZDEzOCBsZWdhY3ktdHJ1bmsKKzEzODU1IGZkY2I4OWQwMDY5NTRiOGU5Mzk2MDE5MzJlYjg4OTEwNzk0NWU0YzggbGVnYWN5LXRydW5rCisxMzg1NiAwMGQ1NzdlNDRkMzQxZTg2YjIzMGFjMjcwN2MzN2QxMmY4Y2Q1ZDRkIGxlZ2FjeS10cnVuaworMTM4NTcgYTU5NGQxZThjZDFhYTVhODIwNmVjYzEwZmE3ZTc4YzI4MGQ0OGVhMyBsZWdhY3ktdHJ1bmsKKzEzODU4IDgzYTk4NjE4MGY0MWQ2ODdlMDdhNTk0ZmE4NWIxYWVlMjc0ZjlmYmMgbGVnYWN5LXRydW5rCisxMzg1OSA1NTY2NjRjNjM5ZmMyNjRlYTNlYTQ0M2NhZGVlNDM5MjFkYzFmNzI3IGxlZ2FjeS10cnVuaworMTM4NjAgM2M0NDAyOGI5MTlkNGJlZjY3ZWQ0OWNmNjViZGNmYTQ0OTE1ZGU3OCBsZWdhY3ktdHJ1bmsKKzEzODYxIDg5OGMzM2UyMTZiYjM2MDdiMTdlZjYxMTFjMTU2ODQyZWVhOWM1NzggbGVnYWN5LXRydW5rCisxMzg2MiBiNGQyZjU0NjViM2Y4OThmZDY4NWU0YzRlZGU2NTJlYTdiZGI4MzQxIGxlZ2FjeS10cnVuaworMTM4NjMgMDVmNjhkN2Y5MWFjNDIwYzQ0MTI3ZWQxNjg1YWE5OGM2NmM3ZjBkNyBsZWdhY3ktdHJ1bmsKKzEzODY0IDU1YTFlZjllYmQ0Y2RlYzY5ZTVhYTFmZmM0YzZkNDg5NjEyOTFhZjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODY1IDBhZTI0NDIwYzhhOWYyNmZiMDBjZDdjZTcxNzIzNWZiZDkyMTQ0YmMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODY2IGMxYjcyNWIxYTE0NDYyY2IzMTMxMDE0MWRlZGE1MTE1YzBiMDNkMTMgbGVnYWN5LXRydW5rCisxMzg2NyBjNzAyYTEyZDMxOGQ2ODZjMzVkMzYyNzc4ZmYxMGM3Y2NmM2Y3NjU0IGxlZ2FjeS10cnVuaworMTM4NjggZWQxYjQ5ODIyZjcwNTVlMzgyZjk5MzNmNWMzYTYyMTZmYTBlNWVmYiBsZWdhY3ktdHJ1bmsKKzEzODY5IDA4MmY0MmQ1ZWFlMzBlY2QyNWUzZmZhNWQ0YTFiNDU1NjE0YTExZWQgbGVnYWN5LXRydW5rCisxMzg3MCBhMmI5NjNmN2FjOTkwNzA1MTNjNjYyZmNmNTVlNmM4ZGNiN2UzMjA4IGxlZ2FjeS10cnVuaworMTM4NzEgNTk1Y2IyOWE4ODY3ZWUyYWU2NjliZTFjODQ1NTk1MTFjNTFmMTI0MSBsZWdhY3ktdHJ1bmsKKzEzODcyIGFkNzU3YWZmOGQzNzk1YzExZTA0ZDcyYjU0ZWZlZGYyNmZlYzUwYjYgbGVnYWN5LXRydW5rCisxMzg3MyA0ZmRjOWMxZWNhZjZiN2NjZmZhYTY3YjhiMDhmNzBkZjdkMjMxYTc0IGxlZ2FjeS10cnVuaworMTM4NzQgZmFkNTVlZWM1ZGZjZGExM2YyYjg5MzY4NTI1YWI5NmI2ZTU1ZjU4MSBsZWdhY3ktdHJ1bmsKKzEzODc1IGY5ZWYzNjhiOGMyZDNmYWRlN2NkZTU4YjkyMTcwMzU0MTk1NTE0NzEgbGVnYWN5LXRydW5rCisxMzg3NiA0ODc2MjIyODhmOWMyOTk0NTA0MmE2ZWJlM2JlN2RjYjU2NDgyYjVkIGxlZ2FjeS10cnVuaworMTM4NzcgM2QxNTRiZTg3MTYyOWVjNmI2Y2FhN2YxMmM0MjRlYjY3ZjBlNjJjYiBsZWdhY3ktdHJ1bmsKKzEzODc4IDcwYWRjY2Q0NTIzYTQ5MWYyZWVmMjhiMDNmMzI1NmRmM2UyODNlNGIgbGVnYWN5LXRydW5rCisxMzg3OSAzMzQxMDAyMThhNGIxZGQyMDE2N2U1YjhjYWUzYjQyZjEzMTAyOTdjIGxlZ2FjeS10cnVuaworMTM4ODAgNDI5NDFlMmViOWQ4NmE0OGYyM2RjMmFhM2Q3NzMyNzk5NzFlMjI5ZSBsZWdhY3ktdHJ1bmsKKzEzODgxIDZmNzUwN2VmMmIxMTVhNTNiYjljZjQ2YjhmMWE0MzllZTgyODY4M2EgbGVnYWN5LXRydW5rCisxMzg4MiA3YWU1YzQwNTEwNDFlNWEwM2U4NzIwNWZkNmI3NjE2ZGNkMmM0N2MyIGxlZ2FjeS10cnVuaworMTM4ODMgOGI4MTU4MDVmMTBjYjcyYmQ4ZTBkZDk5NWNkMjVlMzExZDMyY2IzMCBsZWdhY3ktdHJ1bmsKKzEzODg0IGQ4M2ZhMWRkN2I3OTgxOTk0ODNhYjdiNDYxYzA1OGMwODZjMzYwNWIgbGVnYWN5LXRydW5rCisxMzg4NSBjYmM0NjI4NGE1YWNiODRjYjUzZmIyMjIwNmE5MzZhM2EyNjllMDAzIGxlZ2FjeS10cnVuaworMTM4ODcgNGM2YzhlZmZjYjQyYTEyYmUyNWM4ZmI3NzA1ZDI4NTIxNTVmYjdmOSBsZWdhY3ktdHJ1bmsKKzEzODg4IDUzYjI5NzRlZDNkMzZmNzI0MjU3NGY3ZGY2Nzg1MGFmZjI0Mzg4MGUgbGVnYWN5LXRydW5rCisxMzg4OSAxMDY2OGU4YTA5NzU2YzE0ZGU3OGJkODllY2Y1ZTc2OWRjYzE2ODljIGxlZ2FjeS10cnVuaworMTM4OTAgODI2ZWY4ZjI4NzgyY2U4ZDI3MjE5NTY5NjcyY2VkZWVkNzQwZWYzNiBsZWdhY3ktdHJ1bmsKKzEzODkxIGNmYzY1MTU5MzdhNjk1NGJkYjgxMmM1YWEzMzQyZWVhMjI1ZmRjNmYgbGVnYWN5LXRydW5rCisxMzg5MiBjNWVkZDg2ZTI2OTgwZDRmOTlmNDU5OGNjMTE4OTAxNWQ4YzMzNGY2IGxlZ2FjeS10cnVuaworMTM4OTMgNjc4YTlhNzljN2U4NWI3MjYyMmU0ZGNhYTg1NDNjZGZiNTFlMmVjYyBsZWdhY3ktdHJ1bmsKKzEzODk0IDAzZDFiOThkMTc4ZGNmZTU1NTBkZDVjYWQ3MGZlYWQ5NjRlOTI4YjQgbGVnYWN5LXRydW5rCisxMzg5NSA5MTVmYWRmMjI5NDExMzlhY2IzYzgxYTQ2NjZiMTViNDA4ODQ4MjhlIGxlZ2FjeS10cnVuaworMTM4OTYgMzcxYjk3NjJkNjNkZTQ1NTE0M2Q5NTkyMjhhYjQyMzc3ZjgyOTI3ZCBsZWdhY3ktdHJ1bmsKKzEzODk3IDVkNTdjNjhiMmIzMjEyNzRiN2MwOWViOTJlYTYxMTJjNDVhYWE5OTIgbGVnYWN5LXRydW5rCisxMzg5OCAwNGYwMjRkODU0MWM4ZDU5Yzc0OWU4ZWYyMjlhZGZhZmM5ODRmYzk1IGxlZ2FjeS10cnVuaworMTM4OTkgZTU1NWJhMDRiOTIyNzZkYzg4NTFhMGVlMWVmNjZiOTU2NTc1YWZkNiBsZWdhY3ktdHJ1bmsKKzEzOTAwIDVmNDZjNzc4NDk3MTUwZTBhZjcwMWVkOWRlMTcwYzlhNWFiNGFiZGYgbGVnYWN5LXRydW5rCisxMzkwMSBiZTYwM2ZjYmEwMDFhYWZlNzQyODNiMjM4YWZkNWM4N2QyZjA5MGYzIGxlZ2FjeS10cnVuaworMTM5MDIgY2E5YmY2OTM1YzUyYTYzZTU2OTQwY2JhZTViYmNiZmY5ZjFkM2U2NiBsZWdhY3ktdHJ1bmsKKzEzOTAzIDRjN2Q2MDQzYjQzYTI4OTQ0NDMzNjQ4NDlhY2E5NzE1YmQ1N2VhNjMgbGVnYWN5LXRydW5rCisxMzkwNCBkZmQyYzdkMzRkNDQzYzY5OTRjNjA1NTQwN2JlODg0MzEwODEzYjNmIGxlZ2FjeS10cnVuaworMTM5MDUgZDM0NTk5NmZjYjY1MjFmYmM5MzRkNDE4YjA0M2JiNGMyMzgyNjhkYSBsZWdhY3ktdHJ1bmsKKzEzOTA2IDI1YzAyMDJlMDFhNjI2MzgxZjFhMTEwNGU3YTE2N2I2NTA3YjE1YWUgbGVnYWN5LXRydW5rCisxMzkwNyA4ZmRhYzE2NTQ0ZTFjN2M2NzhkOWI1YmRlZjY5YmE3ZGMzZmYzZDY2IGxlZ2FjeS10cnVuaworMTM5MDggMDllOGFhZTE2ZTk5ODAzMjk3MTEyZGQxZjg3NDYwOTFjMDVkNGZhYSBsZWdhY3ktdHJ1bmsKKzEzOTA5IDIzZjI3ODY2MGNhOWE5MjUzZDQzOTJjODFlZjQ4ZDgxNjEyMjY5ZDMgbGVnYWN5LXRydW5rCisxMzkxMCA4YjYzYTZmN2E1MjNjNGUxNWU1ZmEzMTc4NjE1YmQ2NDIzYThiYWI1IGxlZ2FjeS10cnVuaworMTM5MTEgYjliYmU4OGQ5NTU0NzdhM2Y0MGI0YThjZjc3ZjU0NWYxZWU4YzlhNSBsZWdhY3ktdHJ1bmsKKzEzOTEyIDI5Y2U5NTZmYTdiNzVlN2FlMTM2MjExNGVhNGQwNzU4NjE3MWI5MzUgbGVnYWN5LXRydW5rCisxMzkxMyA0MTk5MGJjZTAyM2E4MTAzODZjNmU5Njc5ZDA4YjEwMjBkMjA1MmUyIGxlZ2FjeS10cnVuaworMTM5MTQgODYxODQxNWU3YTY2YzcxYmFkMjlmNDJmODFlMjE3OTQ4YjkwMGE4ZiBsZWdhY3ktdHJ1bmsKKzEzOTE1IGQ5MTljZjlmZGQ4OWU3MmIxMWM0ZWY5MzRhMGIwZTE0ZTdlOWZiMDUgbGVnYWN5LXRydW5rCisxMzkxNiA3ZTA1YTdkMGI1MTFkNWRmMDU4YzUyMDMyZmJlYzQ5MGM4M2U3YzI5IGxlZ2FjeS10cnVuaworMTM5MTcgNjYyMTZmMzI0MDNkMWE5MWI0NjI2MDc3YzM2NTZjMDc5MzNlMWJiNyBsZWdhY3ktdHJ1bmsKKzEzOTE4IDA0MGIwNTgxNmIxN2Y5ODExMDkwOGVhZjI3MDdlYzViNmQ4NzFhNzggbGVnYWN5LXRydW5rCisxMzkxOSBhMTBkYjViNjg0M2YyOTBkMmJkY2E4YzcwNjk1YTA1ODI1YzMxZGNmIGxlZ2FjeS10cnVuaworMTM5MjAgMzIyOWIxMzgxMjFlMmE0Y2FiZjQzMzdmNjRmZjU1NTNjOWIwNTNhYiBsZWdhY3ktdHJ1bmsKKzEzOTIxIGRjOWYxZjk2NDY5MGJhNDA1OGMxNjM1MTIwYTZjOWNjM2UwZGFhNjIgbGVnYWN5LXRydW5rCisxMzkyMiAzZmFhMTIxODk1MGVlY2UzM2VhMmRlYzhiMjY2ZDQwMWE3NjdlYWFkIGxlZ2FjeS10cnVuaworMTM5MjMgM2UzYzcxZjRkMmRlZDFlNGYxZmViYWViOTA2NDM4YzAzOTljYTQ2MSBsZWdhY3ktdHJ1bmsKKzEzOTI0IDRhZDE0ZTRkYzdlNTE2MDBjMDllOTQ1Y2Y2NTM4NjBiNGI3NWU1ZDMgbGVnYWN5LXRydW5rCisxMzkyNSAxZWYxODA3Mzc3YmZhOWVjOGFkM2Q2N2IxY2VlNTFjODVhNGVhNWUyIGxlZ2FjeS10cnVuaworMTM5MjYgMzJjMDUzYzc5Y2NiM2MyY2UwMDc0ODA2ZWFhYjUxYzQ4YzYwZTk2ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5MjcgYWNhN2I1ZWFmNWU4MmY4YTBmMDBiNGM5ZjlmNDJjMzk4MDAyYWIwOSBsZWdhY3ktdHJ1bmsKKzEzOTI4IGMyNGMyNDE4NTM1MTZmZjJiZjM5ZDhmMzMwZWY0NjAwOTI4MDhhMjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTI5IGRhZjg4ZThlZGJjMGU1M2RhYmQ0MmJhYjQyN2RhYWVmOTc2MWQ0Y2EgbGVnYWN5LXRydW5rCisxMzkzMCBjMjA4YzRlOWUyYWFjZjhmZDI4MjU0NmM4YTg5YjI3MWM2ZTA5NTEzIGxlZ2FjeS10cnVuaworMTM5MzEgMTQ2NjI4MGU2YmIwYTNiNDFkMzQwZGQ1ZDFjNWZiMDc0ZDViM2E2OSBsZWdhY3ktdHJ1bmsKKzEzOTMyIGM3ZTcyM2NkNjM0OTdjYjkzODM5NDJiYWE0MDI1ZDBhZjI2NjUxYjUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTMzIDAxOWNkMjFjOGM5ZmNiNjU4NDNjN2EzNjcyNzlmNWVjNWQ3ZTljNTEgbGVnYWN5LXRydW5rCisxMzkzNCA2MWEwZjAyMTVhOTc2YmNlZGRjNDUxMDhmZGU1MjYzNjQyNTI2YzNkIGxlZ2FjeS10cnVuaworMTM5MzUgODk1MTAyZWVhNDg1MWE3NzhjMDVhYWVlY2ZlYzQ1NjJlNzc0ODEzMyBsZWdhY3ktdHJ1bmsKKzEzOTM2IDZlYmY2OTM4Yzg4NzIwMTc2MjE4OGI1M2YyODc0NGZmODI2ZDNjYzggbGVnYWN5LXRydW5rCisxMzkzNyA1NDg2ZGNmMTNkNzc0Y2FjZDM0NjMxYmQyN2E4MjZiYzM2NDUwNWE4IGxlZ2FjeS10cnVuaworMTM5MzggYTE0ZDk2MTRkYTAwN2UxYTkzMDZiNDA5NTI4NjI0NTkyMmVkNDAwOCBsZWdhY3ktdHJ1bmsKKzEzOTM5IDBiMmU5OTRlZjE3NWE1OTc3MDM5ZjJjNDQ3NzkwMWRmNWQzNjUwMmYgbGVnYWN5LXRydW5rCisxMzk0MCA0Y2E3YjdiOGE4NDkxNmY1NDIwYTc2NTVhOWJlMGZkM2RjOGRkMzM3IGxlZ2FjeS10cnVuaworMTM5NDEgOGM1ZWUzYzNkMzg5MDFiZGY0YzUzNjMxZWQ4NmJlYmI5ZDU5NWU5NyBsZWdhY3ktdHJ1bmsKKzEzOTQyIGUwZWNmMWFlZmUwNGUyZGViZTFmMGQ0YzkyNjg4MjhjM2EyZWJhN2EgbGVnYWN5LXRydW5rCisxMzk0MyA2NTBlODlkMTU1N2YxNDYwZmYwOTcxNzRmMTA5M2RkYTljMDYxN2JjIGxlZ2FjeS10cnVuaworMTM5NDQgODdjNWQwYjNkZTU5ZWJlMDE5MzA5NTliNWQ5NjM2NDkxYjA2ZmI3ZCBsZWdhY3ktdHJ1bmsKKzEzOTQ1IDc5MWNmNzE3YzBiZTRiZjFiYmE2MWJkNWYzYTg3NTdjMjc5NmE3MjcgbGVnYWN5LXRydW5rCisxMzk0NiA2YzQ1MTcxYzFhMWZlN2JjODIyM2Y4YjliNThhYTA3ZTJmM2NiYjE3IGxlZ2FjeS10cnVuaworMTM5NDcgNDg4MmIyZTUyY2IyNDlhODk1MDY4ZjllZDE2YmE3YWFkZGM4MzFhZCBsZWdhY3ktdHJ1bmsKKzEzOTQ4IDk1ZTk2OThmYzkwOGMyZDNlZDQ0YjlmYTYwOWUwM2I5NTVmMjczZTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTQ5IGMxNjFkMmI4NTIwN2ZhNzhlMDBmOWViM2FmNmMyZWEyODI4NjM3Y2IgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTUwIGE1YTUxM2ZlZTViMWRiM2E2MjE0M2Y1ZWZlMDllMGM0ZDBmZTZjNTggbGVnYWN5LXRydW5rCisxMzk1MSA1M2Y2OWI4Njc2ZjNjMWU1OGYxZWU5Yzg4YmFhZmE0MDBkNzg2ZTU1IGxlZ2FjeS10cnVuaworMTM5NTIgYmYzNjhmMmY3YzAwNmQ1ZTc3M2ZlMzQzNDA5MzYzMmY0YTFjNjE0YyBsZWdhY3ktdHJ1bmsKKzEzOTUzIDUyNWI1YTlhY2ZkNWRkZTUxYzlhYjk1YjdkOGI4MDI0YTU3MGRlY2IgbGVnYWN5LXRydW5rCisxMzk1NCBmNDZjODdiNjYxNTQyMDRhMjY3ZDA4NzZkODIyYTRhNGQyMWFmM2E5IGxlZ2FjeS10cnVuaworMTM5NTYgNTA3NTQ2YTg3ZGNmZDNiYjUwZmY4ODNlMzNkZTk4OTE2MTFkODZjMyBsZWdhY3ktdHJ1bmsKKzEzOTU3IGI1NTExYzAxNzEzMWZlNjI5YTI0ZjA0ODZlMDA4ZjdiMTdhNTQ2N2YgbGVnYWN5LXRydW5rCisxMzk1OCAwNjExNTY0NTFkMzZhZjgyMWY4OTY0OWM4NTA5MTJjODliMjU5YjRhIGxlZ2FjeS10cnVuaworMTM5NTkgMDYwNjY4MmM3ZWJjMzVjNDJmMmUxMWU3NThmODE4MzNiODUzZjFhZSBsZWdhY3ktdHJ1bmsKKzEzOTYwIDI0MTM4ZWMzZjM5NjIxMWU0NjRjMDA4OTI2NjNjMDQxOWFlM2EzNmMgbGVnYWN5LXRydW5rCisxMzk2MSAzZmFiMzcxMWM3ZGM2ODczMzA5NDYxMDJlOTNiZjJiMjAwNmZlZjQ1IGxlZ2FjeS10cnVuaworMTM5NjIgZmJjMmM0ODU4Y2NlOGE1MDE3YTBlMTJlYWYzMmY1NTk0ZTU3MGUyZCBsZWdhY3ktdHJ1bmsKKzEzOTYzIGM4MTU1ZDA1ZDljYTZmYWY4ZTExMmMyNWYyZTIxNGRlZGQ5OWY5ZjUgbGVnYWN5LXRydW5rCisxMzk2NCAyODg3NDA3NjUwODhkMzVkNmE5NGMxZjE5NzUzZGYxZGQzODRkOWVjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2NSA1M2IyZjIxYWQ2N2YwODE2ZGNiNjZiOWIyYTE2YjVmZDc4ZTFjZDY0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2NiAyZjliNjViMzhhZjJkZjA3NTE1MTFmMjE4MWQxZDAxNmIxZTVlMDNiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2NyBjNTgyMWMzYmVmY2FjYmNhOTRjMWZkNTQwNWIwMzgzZGZjZTA2ZGZhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2OCBjNmQwOTliNGViNDJhNDQxOTU2MWExM2JiNjFkZWM3MmE0MWM0NWMzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2OSAxZTBmYmUzMzc1MTg1NzNjY2VmMzk1YTRiZDA2YTBiYzlkYzIwNThmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk3MCBhNjBmYTc0YWFlYWZkOWE1YTQ4ZDJiYTEwNmM2YTgwMDA3MjA2MzRlIGxlZ2FjeS10cnVuaworMTM5NzEgY2E3NjlkOTg2NTE0YmIyOTAyZmIzNmE5MTE4N2E0N2M4MmVjMjBkOSBsZWdhY3ktdHJ1bmsKKzEzOTcyIDFjZTQxOTg5YTAzZDBhZWViNDI4NGU0ZTAyMWJjNGY0Mjk1ZmIyMjcgbGVnYWN5LXRydW5rCisxMzk3MyA0MWUwMDcxZGI1M2E4MDA4NDM1MjZmZmU1MTE4ODNlMWI1OWViZWVlIGxlZ2FjeS10cnVuaworMTM5NzQgMTBhZDM3MGJjNWJkMWFhNmNjYzM3MmRhMDZhYTRhZjZhZTkxMWYwMCBsZWdhY3ktdHJ1bmsKKzEzOTc1IDdhMTg4YWFiZWYxMTVjNzQwYzVlNDJjNjQyZmRhYTM4OTFlZmQ3ZDAgbGVnYWN5LXRydW5rCisxMzk3NiBhOTg5ZWU4NzI5NjFjMDY4NzEzNmQ1YjhlYmI1ZGUxOGNmM2EzMGNiIGxlZ2FjeS10cnVuaworMTM5NzcgN2ZiOGIwZjEzZGEwYTA5NDczYTljMGYzMzkwMGQwMTUwZWM3M2Y0YSBsZWdhY3ktdHJ1bmsKKzEzOTc4IDMzMzBlYjhkYTIyMjc0Y2UwZGQxMWU3ZTYyMWViMTg3NmEwNTM5OGYgbGVnYWN5LXRydW5rCisxMzk3OSBiYzA4NTY2MGRiYzEzMzgzYmE3YjQ0NDQyZTlkNGZhMDlmZTg5OWEzIGxlZ2FjeS10cnVuaworMTM5ODAgZjMwODY1NDg0NDZlYzViMDc0MmE3M2EzYzNiOGUwN2JhNmIyYWZiOSBsZWdhY3ktdHJ1bmsKKzEzOTgxIDk0MDRhNWI0MTZiNWY3NjlkNzFkODQzYmQ2ZDI5NjlkODgwMmFkZTAgbGVnYWN5LXRydW5rCisxMzk4MiA5ODk5N2FhNDkxNjQyMzY0MjJiYzNlNjI0ZjAxY2IzZTdlNTRlM2M0IGxlZ2FjeS10cnVuaworMTM5ODMgODRkZmY1Y2M3MjE2MjFjMTNlOTVkOTZmYjE5MmJmYWY1NWIzMDRjOSBsZWdhY3ktdHJ1bmsKKzEzOTg0IDRmYjg5MzQ0OGE2Yjk1YTE0MGNiZGYzNTY2ZmNlMjMxZmMxNGMxZGUgbGVnYWN5LXRydW5rCisxMzk4NSBlM2RjNTg0ZTk2MjMwYzRjMzQ1Nzg4NDdlZTEzYTdmNjA3YjdmOGE3IGxlZ2FjeS10cnVuaworMTM5ODYgYTMxNmNmOWY4MWE3NjhmOWQzNzJkYmRlMmJkZDg5MmYwZGVjN2RjOCBsZWdhY3ktdHJ1bmsKKzEzOTg3IDhlZGI4MWZhMGE1ZjI2ZDg2NTBjM2ZjNTI4MzE3MDQ1ODNmNDdjYmIgbGVnYWN5LXRydW5rCisxMzk4OCAwOWM2M2Q5MTNhZTA1YWY0MWI4OWJiNTI3M2U2ZDViMzk3YzNkZjYyIGxlZ2FjeS10cnVuaworMTM5ODkgM2Q2Yjk3YTU4ZTljYTQwYzRmOGYzYTg5ZWVmNjNmODVhNDQ0YjlkNCBsZWdhY3ktdHJ1bmsKKzEzOTkwIDA2NjcwMjQxYTdiMWRhMjI3ZWU2ZjI1YThiYzgxNjJhYjgyNmMxYmUgbGVnYWN5LXRydW5rCisxMzk5MSBlYjg0NmI0ZDAzODU2NDg4ZTRhMWMwMWNiMzRhYTNhNDUxZjQwOWU5IGxlZ2FjeS10cnVuaworMTM5OTIgMzJhNDgwZDA4MjNjZmExYzQzZWEwOTI3YmUyOTE4OWFhYjA2MjczMyBsZWdhY3ktdHJ1bmsKKzEzOTkzIGNjOTIyYTlhNDhjMDIwYjA1ZjFlZTU3ZDQ3ZjhiMzY1ZTNjZmQ3ZmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTk0IGJlMjVhYWNhMTFmNDU2ZjRjMTEwZDM4NzAyZGI5MGZmYjAwYzg0ZDkgbGVnYWN5LXRydW5rCisxMzk5NSAzMTZiZTA4YzllY2RhMWQ5ZmQyZjdlMjkzYjIxNmViNTg4MGU5YTYzIGxlZ2FjeS10cnVuaworMTM5OTYgNWYxOGU3ODUzZDkyNDNlMmMyZjM1NTI2MmVjMTMzNzM2N2U0ZTJmYyBsZWdhY3ktdHJ1bmsKKzEzOTk3IDFkYzM5MzZlODRkYjI4MTYxYTYwNzM4ZmRjNGNhNWQ4YjFlZjQxZTMgbGVnYWN5LXRydW5rCisxMzk5OCAwMTNkZDM4YTUwMzFkMGI5ODM3MDQ3MTBkNWFkZjUyMzBmOTE2N2Q4IGxlZ2FjeS10cnVuaworMTM5OTkgMGJjMmJhMTc1MjMwNTg5MTg0NmYwZmRmYzZhZTY2NDZjNzk0OGI2YyBsZWdhY3ktdHJ1bmsKKzE0MDAwIDkwZjQ4MzBlMjEyMmYyZGFhMGMxZjgxNzI1NmExODE2NTUwZDRmMmYgbGVnYWN5LXRydW5rCisxNDAwMSBmMDI5ZDQ3ZGQyOTY0YTZjNDk2OTgyZGZiZTM2YTBkNDhmZWRmZDNhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwMiA1YjgwMjQzOGQ4ZmM4ZDIzNjAxZjUyZGExMmU1MzI3MTNkZTVjNDI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwMyAzYTUwNmFiMWMxMzg5ZDBiZTdmOWQ3ODY4YmJmNGZiNzUzY2YwMzZhIGxlZ2FjeS10cnVuaworMTQwMDQgYWFiZmEwZDcyMTNjM2VhOGM4MTdhMTdjODM0ZDZmMjI3MmYwOTkzZSBsZWdhY3ktdHJ1bmsKKzE0MDA1IDIzOWNhNDc4OGJlYzBiZmFjYmMwN2I3NGJmY2VlNTg5MWEyNjNmYTEgbGVnYWN5LXRydW5rCisxNDAwNiA4YTY4NzFlOTVkODBiMGVhNTE4NGNmNzExZmIwZDJlNmZkZDUyNzMyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwNyBjYzE4YjI0ZGVlM2RiNzlmOTc3YWIyMmVjNThmMzkxOGQ1ZmEyMGRjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwOCAyZDc5YjQ5MWE1MjljNTQ5YTY0NDg1MmVlNWFhZGMzMDg1NTgzMDM1IGxlZ2FjeS10cnVuaworMTQwMDkgZTBmZTRjN2E5ZWZmMzNkZWJmMDExNGNkN2IzZTY3MDRlNjU3ZTNiYiBsZWdhY3ktdHJ1bmsKKzE0MDEwIDBhM2JiNDAzYTQzMDVhMWQwOTUzMjcxNDkzOGI4YTY5NDJjZWI5OTAgbGVnYWN5LXRydW5rCisxNDAxMSAzOGM3NDQ0ZjYzM2FiODAyZmE1MDQ3MmQ4MWMxOWEzMjIyM2RmMTYxIGxlZ2FjeS10cnVuaworMTQwMTIgZTEyYmU4ZjUxODhmZDc2MjUzNTQ0NmM3Mzk4MGMyYmRlNGE3NDM5NCBsZWdhY3ktdHJ1bmsKKzE0MDEzIGEwNWEwNTYwMjkwMjhhODA1ODNkNmFmZWNmMjQ4M2ViM2JiMjE1MjEgbGVnYWN5LXRydW5rCisxNDAxNCBlNzRlZjJiNTA1NTU2ZWQzZGVlOGFlMDExOTA0OTllM2IyZmJiYzQ1IGxlZ2FjeS10cnVuaworMTQwMTUgN2U0MjllNDY5NjhhMjQ2MWExZDNlOWQwYjRkYjQxNjg3OGY5NDYxNyBsZWdhY3ktdHJ1bmsKKzE0MDE2IDQyNjk4ZjM0NWJkMzA0MGM0MjU2OWYyMjQ5ODRhOGNmNWE3MGUyYWYgbGVnYWN5LXRydW5rCisxNDAxNyBlZjAzZjE2YWU1ZWIyNzUzNDgzYzA2ZTI0YWU3NzhmNTUyNzk0NmRiIGxlZ2FjeS10cnVuaworMTQwMTggNmM1ZTEyYzVhNjE2NGQyZDFhOGI0NTE0NmZjYTY3ZTExNmE2ODY2NiBsZWdhY3ktdHJ1bmsKKzE0MDE5IDEyZjQ2MmZkMjRmNzUzZWUyNTJhZTZhMjdmYTA2MWM3NWE3ZjUxZDggbGVnYWN5LXRydW5rCisxNDAyMCBkMGY0YTc5Yjk4NWQ0ZGZkYmJlYTVjNjAxNjEyNzc3NTI2NzlmNDc0IGxlZ2FjeS10cnVuaworMTQwMjEgMjQ1OWYxMTc2MWYwOTU3ZDg4ZThjYzBlMGM3YWU1NjllNDAwZjFlYyBsZWdhY3ktdHJ1bmsKKzE0MDIyIDk1YTk4MzNiMDAwZTk3ZGZlMmFkYzEyMWZmYTI4MGYzNDdjMzA4ODYgbGVnYWN5LXRydW5rCisxNDAyMyAxN2UxMjMwNTk3M2VhYjBhN2I2NWVjMTc5MGM1NDg5ZTBjZTI3MDQwIGxlZ2FjeS10cnVuaworMTQwMjQgYWFhZWU3YjIzMzgwMjE1Yzg2Yjk1MGMxMWU0YTVhMDQ0MWM1Y2I5YSBsZWdhY3ktdHJ1bmsKKzE0MDI1IDY5ODBkMDZlMzYwNzUyODNmODUwNDQ4ODg5MTUyNjJjOWRhNTBiZDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDI2IDY3NTdlODBjNzQ3ODMyNjlhMjJhMDU4NzIxYWM5ZjZmOTBjZmJkYTQgbGVnYWN5LXRydW5rCisxNDAyNyAwNzdmZjZlZmNhMzVlODQ2MTI5NTFhNzE1NGY2MjRhNGE1ZDRiNTk5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAyOCBhMTcwYjdmMDRjNjQ3YTFjNGQxNWZlYzA1MTM5ODBkNTAyMTNlM2IwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAyOSBhYjJhNmY5MTBmNjUzMTIwOTYyZmVhMmExMTFlZWExZTgxZmRhNzk1IGxlZ2FjeS10cnVuaworMTQwMzAgYTI2NzNhOGJkY2EyODI0MjVhOWY0Nzk5ZGRjZGQwZTQxNTdjOGI0MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMzEgMTQ4ZmQ0NzViMzkzZGM3MmJiODI4NzYxZGM2NTFmZWRkZGVmODdiZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMzIgYjRkMDdiZWFjMDliZWVkNTczYWUzYjM1OWMxMDBjNzlkY2IyODNhZCBsZWdhY3ktdHJ1bmsKKzE0MDMzIDE4NTUxMzFhNGRjZDQ3YTA0MGZiYWM3MjUxNzJmOGRkMjhkZTZiMjQgbGVnYWN5LXRydW5rCisxNDAzNCBjMDUzNjNjZjFiNzNiMGYyNWZjNzE2NDI2MjYwZDk5OWEyNmU1Y2Q3IGxlZ2FjeS10cnVuaworMTQwMzUgOTZmM2ViYWNhNmFlNTgwZjExMmUyYTcwMWJhZTQ2YzY4NzVmNzNiNSBsZWdhY3ktdHJ1bmsKKzE0MDM2IDRmMjc2ODkzMzMxM2FkNDExNGM2MDY2NDNmNmYyYWM0M2UzZDU5N2EgbGVnYWN5LXRydW5rCisxNDAzNyAwOWQzNTE4ODJjNTEwZjk2Zjk2YWJkZWQwNDFhYzYwOWE1NDE5MjZkIGxlZ2FjeS10cnVuaworMTQwMzggYWYxMWFkYzNjYmQ3MTdjNmVmZWE4ZjNkNzU3MGRiYzZkMzMwM2FmOSBsZWdhY3ktdHJ1bmsKKzE0MDM5IDhiNDZlZTMyNWRjMDNlNjI4Y2FmNzcxMmJmMzA1MDZiZGEzODJmYmMgbGVnYWN5LXRydW5rCisxNDA0MCBjOWNkNGJiZWQ4ZTI4M2UyNjU3MTFkOThlNjFjYjc0MjMyZDY5ZWEwIGxlZ2FjeS10cnVuaworMTQwNDEgZjIxZjE5ODg2ZWUzOGY1ZjhjY2FiYWE4YTI1MDc4MzViNjY0MzM2MSBsZWdhY3ktdHJ1bmsKKzE0MDQyIDVjNWEzYTVjYzc5ZmNkZTYyZDFjNDhmZDBhZWYzYzQ1Y2U3MDE4NGEgbGVnYWN5LXRydW5rCisxNDA0MyBlMjQwODc0NGRjN2YzOWU3NjlmYjY5MjYxNmJjMzc3MzhhZWY2MGFkIGxlZ2FjeS10cnVuaworMTQwNDQgYmFiNDZhY2EyYmVjZTY2MDM0YjgxZTRkZGRjNGVkMjI2NjdhZjE2NiBsZWdhY3ktdHJ1bmsKKzE0MDQ1IGE5N2U2MjVlZDVkMDRkMDVkMWUwZjZkOGM5NjM0Njk1ZGIyNzhmYTEgbGVnYWN5LXRydW5rCisxNDA0NiA3ZGM5MjcyMDRkNjU4MmUxMmUzOTc2OWQyZGQ1MDhlNDJhNzgxM2EwIGxlZ2FjeS10cnVuaworMTQwNDcgMDY4MGU2N2EwZDQ5NTczN2QyMTMyYzA3ZGRmOTRkYjg3ZjY4OGViZCBsZWdhY3ktdHJ1bmsKKzE0MDQ4IDZiOGY3NDZiYmQ1YWEwMmEyM2IwY2RjM2JjNWEwNTY3MDliZTZjMzggbGVnYWN5LXRydW5rCisxNDA0OSAzNGI2YTkyZmEwODg0MmZkYzc3MGFiMjBjMGZjZjE4M2I4NzBlNTRlIGxlZ2FjeS10cnVuaworMTQwNTAgOWNkZjNmYWRkYTkyNzZjNjJhNTE0YmQ1YTU1ODczMzM1ZDQ0NzNmZCBsZWdhY3ktdHJ1bmsKKzE0MDUxIDU4NTEzZWJhNTY2NDMwMDY1NDMwMTA4YmIzNDJiZGIwZmM0MmFlMWIgbGVnYWN5LXRydW5rCisxNDA1MiBiZGUwNmQ5ZDRjYjRmMTYyZmE4MWY2ZTExNzMyYTA1ODEyZGM2NjA0IGxlZ2FjeS10cnVuaworMTQwNTMgYmRhZTYxYWViYTU1ZTg3MzhjZTNmMzM5NjU3ZmQ4MTY3NzJhNjFhZCBsZWdhY3ktdHJ1bmsKKzE0MDU0IDcwMzRiNzVhYWQwM2I3MTQ2ZmY1MTVlNjY4NzVhMjM5ZmVmZjY0MTkgbGVnYWN5LXRydW5rCisxNDA1NSAzYjIwZTUwZjJkODNhMzE3M2QzYTJmZWRmNWRiZWUwODdjZDM1N2U4IGxlZ2FjeS10cnVuaworMTQwNTYgZDAyM2QxYzlhYzQ5MTQ2ZjExODc1YmE5NTVkZWZiMTlmNmRhNmFlMSBsZWdhY3ktdHJ1bmsKKzE0MDU3IGNlYjA2ZGUyM2ZhYTkyZTFlNWExZDgxZjIyOTI2ZWI4NzU4ZmFiZGYgbGVnYWN5LXRydW5rCisxNDA1OCA2MTJiODIzMGM2ZTdmYzY5NzAxZjQxYzg5NjI1NjQwZjIwYzM2Yjk3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA1OSAwMmFlMmU1NTVlZjlkMjZlZmZmZDQ3NjY3MDc4MGMyYzExYzY4ZjM3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA2MCA1OTExNGJlMjFhNzVmODk3Y2Q0YmQ4N2E5YThhNzE0MDdmYmFhZGQ5IGxlZ2FjeS10cnVuaworMTQwNjEgZGZlMzcxOWQ3OGU5ZGM2ZWVhY2JlMzY0YzQwZGU2YmFmNzQ0NGRiMSBsZWdhY3ktdHJ1bmsKKzE0MDYyIDMzZjdiMTJjNzc2Y2ZiNmQ5NGYzZGZjNWExOTJjOGYwMTk0NGM2ZTkgbGVnYWN5LXRydW5rCisxNDA2MyBjZGU4ODM3YzgyNTlhZDA5ZDI2ZmZjNDZhMWU1OTU1NTdmNTZjZjQzIGxlZ2FjeS10cnVuaworMTQwNjQgOTIzYjQzZGIzODE0NjJiMmY3NDNiYmU4OGIwNGEwZmQ1YTdmZDE2ZiBsZWdhY3ktdHJ1bmsKKzE0MDY1IDE2YjExYWNkM2U4YzNkNThkM2Y4Y2Q4YzFlM2Y4MTJjYWI0NjViMWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDY2IDc1NjM1MTcwN2NhY2M1YmNkMGI5ZTAxZGQwYzk3MGZmNjRmNjM2N2EgbGVnYWN5LXRydW5rCisxNDA2NyBkNzE5OWI5ZjkwOTEyYWEzNzU0MjA4ZTQwN2U1OGI5ZjI2MDFiODdhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA2OCA0YzUwMzBkNDJjNmZmZWNkMzI3ZTkzYmE2YmU0ZTUxOTdiMjFhZGE1IGxlZ2FjeS10cnVuaworMTQwNjkgYjA0YmYyNzc0ZDA1ZWRjNzRlNTE5YjM1Yjc1MDg5MDYzNTk5NzgyZSBsZWdhY3ktdHJ1bmsKKzE0MDcwIDdlZmVjYzVhMzk0YzY5YTdmZDMwMDY0ZDQyNzZmYTVhZTU0YzJlYTkgbGVnYWN5LXRydW5rCisxNDA3MSA3ZTVmNTFkYzFiNGI5YTE0OTU3MDM0NjM0OTM1MWQxNjk3ODIxMjgzIGxlZ2FjeS10cnVuaworMTQwNzIgOTYzNmE1MDJmNzkxN2QxZDBkMjJjN2QzMDVlYzliNzRjNjgzZGY1NSBsZWdhY3ktdHJ1bmsKKzE0MDczIDMzZThlNzQwOWIxMjAyMDMxYWE0OTk1OGQwMzUwZWU1MDMxZGMyNWQgbGVnYWN5LXRydW5rCisxNDA3NCBjYTg4ZTU5YTZlYmNhM2I4ZDMxYjE3MTdlNDJiNWViNjFmMjhhODJiIGxlZ2FjeS10cnVuaworMTQwNzUgM2I3MWNkZmEwMmM3NDJjMjYyZDhhYzE5NjJkODQxMTYxYTk4YTdiYSBsZWdhY3ktdHJ1bmsKKzE0MDc2IGM3ZjBhYTQ1MTBlMjYzOGUwNDk5OWUxOGUzZTRlMDMxNTg3MjA0Y2IgbGVnYWN5LXRydW5rCisxNDA3NyBkYTZmMTY5M2NkNjUxM2MwMzIwNzc4M2FhY2JkZjQ2ZjMyYTI4MDNmIGxlZ2FjeS10cnVuaworMTQwNzggOWVhY2QyOWU2MDY2MTgwNDJkZTUyODRiYzA4M2ZmY2UzMzVlOWUyYSBsZWdhY3ktdHJ1bmsKKzE0MDc5IDNmMjc0NDc4YzRkYWE5ODlkMDc2NzQ4MTg3OWQxYTU5YmU1OGFjZWYgbGVnYWN5LXRydW5rCisxNDA4MCA1M2Q5YzE1NjBmZTE0ZjNmYjk0MDRhNTc5Y2MwMWViZWIxMjMzYTJlIGxlZ2FjeS10cnVuaworMTQwODEgNjY0Mzg2ZDY5NjdjYWVmY2NkN2FjOWMyYTI0NzkzNjc0MmEzMjJjMiBsZWdhY3ktdHJ1bmsKKzE0MDgyIDljYTMwNDUzZGQ0ZTRlNDc2MWJmZWRiMjUzMzBiMTMxMjlhZDM5N2UgbGVnYWN5LXRydW5rCisxNDA4MyBmOWY3NWIyMTJkYTQxODljZmFmMjc1MGM5NjU1ZmE3NWNiMDlhMjZmIGxlZ2FjeS10cnVuaworMTQwODQgMDFmN2ExMzZjNjc3ZjExOTgzYzI1ZTJlMzc4NzljM2NhYzFmNDFmOCBsZWdhY3ktdHJ1bmsKKzE0MDg1IDE3NWQ3ZjY4MDRkN2EzYjZjOTNhZGE0NjdkMmIxNmUwN2FiNjVkYzAgbGVnYWN5LXRydW5rCisxNDA4NiA3MTI4MWZmOGM2YTJiYTU2MDkxNjQ0MGFjYzI4YmYxOTFlZjk1YzUyIGxlZ2FjeS10cnVuaworMTQwODcgY2M0MTJkZmQ3OWY3N2M3ZGIwODhhMmJiYzE0YjU5NTZlNWVjMjFkYiBsZWdhY3ktdHJ1bmsKKzE0MDg4IDE2ZmM3MTdiZWEzYzlhZWIzODA2MzA3ZjM5ZWU2NTFiNmM2ZjQ0YTUgbGVnYWN5LXRydW5rCisxNDA4OSBjMGViNjNjOGYxZmViYjhjYTk4ZjMwYjkxYWM2MWFiOTFlYTdkZTljIGxlZ2FjeS10cnVuaworMTQwOTAgYmEwN2ZmZjcyNTExYjJjOTQ4MWMyMGU3ZjY3YmU2NzA5MTY1NTZhZCBsZWdhY3ktdHJ1bmsKKzE0MDkxIDRkYmI3YzYwOWFjMWY1YjVkMDEzNzM3ZWFjOWE4MjZkNTdlZTgyMzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDkyIGNiZjU4Y2QwYmI1NzQyOTI5MjkyNjY0YjFjOTI3NmVhMzBhZGM5OGYgbGVnYWN5LXRydW5rCisxNDA5MyA4MmZiMDJkZTU0MjExMzkzN2M0M2VkN2JkYzNiMDYwYzQ5ZjhkNzIzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NCA1YTJmMTNhN2JkNDVmMDc5MzE4NTEzMDIxMmNkZDlhYWMxYmU3MGExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NSA4MGFjMDc2ODFhYmViMTIzYmUxOGFkYTEzNjNhYTQ5MTlmZjk0Y2RlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NiA5MDY2ZjYyN2QzNjJmMTE5MzU0MGU0NTA0NDE2Y2Y0MTI2MzBiZWM2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NyBiNWJiY2NiNzVmMmRkOTM1ZDZlZDViYmUwNGMyMjk0Y2M2OWQ4OTZmIGxlZ2FjeS10cnVuaworMTQwOTggYTQ2YzljYjQyMTIzZTllOWM3NTBkMWY1Y2U1YzdlNTkzNjNjZTM0MiBsZWdhY3ktdHJ1bmsKKzE0MDk5IGIxMmExMWFlMTIzY2Y4NWIwOWQ5ZjI0MzNiYjJkMjlmMDk4M2UzMjcgbGVnYWN5LXRydW5rCisxNDEwMCA1YzEzNWNlYWIyMGM1NDRkZDAwYTU4ZjE3ZThmZGI5ZjUxZDhiNjU4IGxlZ2FjeS10cnVuaworMTQxMDEgNzYxZDI1Y2ZjMjU5NDEyZDU4ZmJlMDk3NTVjNDgyZGIzZWNlNzM1MiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxMDIgZjg4NmZkZTc2NWEwNTcwMDQ0OTA5OWJmNzkxMzdjNjFiMmZiMDk0MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxMDMgMjhiODU4NTM1NGRlNTgwODk0M2U4ZTM5MzIyMWZjODQ2MTI3OWRmNSBsZWdhY3ktdHJ1bmsKKzE0MTA0IDUzNWY0MGY5Zjg3ZGM2Nzk4ODk3NzIzNDcwZGFiM2RjOTRhNmY1ZGIgbGVnYWN5LXRydW5rCisxNDEwNSBmODNiNzQyNzNkYTIzYTAwOGMyNDc1NTczNzQ1YjI2YjliZWRmMmEwIGxlZ2FjeS10cnVuaworMTQxMDYgODA1NjlkNzI1MzI5MWEwMGUxMmE1MzA1MDYwYmIwMGNhMjUxNzI0NiBsZWdhY3ktdHJ1bmsKKzE0MTA3IDhjZmNkMjczZmE1Y2EyYjY0NGVmZjdiN2RlMTA5NTVkOGQzMTVkYjggbGVnYWN5LXRydW5rCisxNDEwOCAyOTUxZTJkMjc4NTIyZWQ0MDM3Y2I4NTIwZmQ1NGVhY2RmOGE2MWY5IGxlZ2FjeS10cnVuaworMTQxMDkgYTgzZDJhMWNlMTk3YTM5YTcyMmVlODJjZmJjMzRhMjUxYTljNTM1YiBsZWdhY3ktdHJ1bmsKKzE0MTEwIDY4MzY0YmYwMDJmMTM4OTBiMmE4ZDU0NTk0YjFhZDE2NWE4MjZjN2IgbGVnYWN5LXRydW5rCisxNDExMSBiYmQzYThhZDdjYjc2NjcyOWE2YzE2NGJkNzRkNmIzNGI5NGQ5NGM4IGxlZ2FjeS10cnVuaworMTQxMTIgYjNlNTVjZTBlYmQ3NWY0YjM4YTQ4OWM0YjlkYjQ2N2U2MGNmMjBhNyBsZWdhY3ktdHJ1bmsKKzE0MTEzIGFmYjk4N2E4NDRkYmEyMTc4MzQxZjQ2MTE0Yzg5ZTZiMTM5NGZiZDggbGVnYWN5LXRydW5rCisxNDExNCAyNjBkNDBmMjAwNzc4ZmVmOGMyYjBkOTNjNGNkZGZiMTc5OGZmYmM0IGxlZ2FjeS10cnVuaworMTQxMTUgNGM2OTNlYjMyM2M2ZjMxNzMyZWY1ZWQ4YzM2YmVkZDA3NDYxNDNlMiBsZWdhY3ktdHJ1bmsKKzE0MTE2IDUwZjdkMzQ1ZjE1N2E2ZTA3NWQxN2Q1ZTQwODRlMDlmOGQ5ZjViMmEgbGVnYWN5LXRydW5rCisxNDExNyBiNjA1YzQ2NmQxYzBlOGZjMTY2M2NmYjA2NmYyNWQyNDBjZTllZWQ3IGxlZ2FjeS10cnVuaworMTQxMTggMThmYzA4ZmM5ZmQ0NzhlMmRjNjIxNzg4NzNlMjRlZGUxZDgzNDZkZSBsZWdhY3ktdHJ1bmsKKzE0MTE5IDhkNGNhN2JlNzM3OThjOTcwMDE5NzYwN2E4NGYyN2EwMTU2MzgxZTcgbGVnYWN5LXRydW5rCisxNDEyMCA5MGZmYzA3ZjVkMTBmMDFkNmYyNGExNTM3NGFlZjk0ZTg0MGJmZmVhIGxlZ2FjeS10cnVuaworMTQxMjEgNzU1NTk5MGU4ZGI5YTQxM2EyNDYyZWRkOTI4Yzg3YTI3OGNkMWE2OCBsZWdhY3ktdHJ1bmsKKzE0MTIyIGY3MDFlOTE2M2M3NmQxMzUyOTllODM0YmNhYzkzYWYyYmMwY2NkNGIgbGVnYWN5LXRydW5rCisxNDEyMyAyMzZkODQyOGM0YzUwZGJkMWIyOGFlMGUwZWE4ZGExNzYxNjVmNzI4IGxlZ2FjeS10cnVuaworMTQxMjQgYzA0MmU0MTQwZjFlZTNjODljYTRmNjFjY2IzZjE3NjNlZWMzODYzMyBsZWdhY3ktdHJ1bmsKKzE0MTI1IDczZWM2NmFkZDk0NzhkZWNjZGZjNjViN2UwOGY1NTE0NTJiZDI1Y2YgbGVnYWN5LXRydW5rCisxNDEyNiA4MTk4YzUzMWJiYzQ3ZDU4MTkxYjRiYzkzMDc4MmYwODM0NTc1YjIxIGxlZ2FjeS10cnVuaworMTQxMjcgZWVhYzU0Y2JiMWRjZWQwZWM5NzYxZGNiZDA1Mzg3MjRhYzE2OTM3MyBsZWdhY3ktdHJ1bmsKKzE0MTI4IDg5NDNiNzdmMjE5YWYxNzI2MDE2OTE1NjdiZTNlYTdhOTgyZmUyNzAgbGVnYWN5LXRydW5rCisxNDEyOSAzOWQ2NmEwNjdkMGJmMzg2MjMxM2NjYjk4ZWEzYWEzZTlmMDFlYjdkIGxlZ2FjeS10cnVuaworMTQxMzAgYmVmODY2ODZiNzUyYjdhYTE4MjIxNjM4YWU1ZWE5OTYwNzRlYjUxMCBsZWdhY3ktdHJ1bmsKKzE0MTMxIDdhNGY2MjQ5Yzk3ODdkYzZiYTI5MTY3MmIwOWVhMDUyNTFmYjQxZDMgbGVnYWN5LXRydW5rCisxNDEzMiBiMTdlZjU0YzkxYzQxZmUyYjQwM2NkMjcxYzU3MGM2NTdjMDc5NDI1IGxlZ2FjeS10cnVuaworMTQxMzMgMTU2YjFiZmVjM2I4OWQ3YzA2MTBlYTdhZjcyYTAzNmQ2OTE2ZmNiMCBsZWdhY3ktdHJ1bmsKKzE0MTM0IDQ1MjBmNjkzYjc2NWY2ODMyOTNmYWVmZTJkY2I3MGU3OWRjMzdjMTEgbGVnYWN5LXRydW5rCisxNDEzNSAyMmY0Y2YxNmI1YTMxNjE4YjMzMmQ4NTI4ZTY3NzI3MWU3NjAyYjU0IGxlZ2FjeS10cnVuaworMTQxMzYgMmNiNTZlOThjZjUyM2FjNWU4ZTMzNTQ0MmE4YzliY2ZmNTk4MTJjZCBsZWdhY3ktdHJ1bmsKKzE0MTM3IDFlN2VmYzE4YTg5ZGI0NTE1MDJhZWMxZjRlYmQ0NzJjNjZmMTQwYTcgbGVnYWN5LXRydW5rCisxNDEzOCBjNzExNTVjZTEyMTU5ZmFmMmMwYWQxODMyZDhmMTMwMzMzYjg3MTUzIGxlZ2FjeS10cnVuaworMTQxMzkgY2ExNWNjYzI2ZjBjMmRiNTkyZWJmN2YyNGI1YTAyNmViZGZkZDkzOSBsZWdhY3ktdHJ1bmsKKzE0MTQwIDhlZmViODcxMjE1YjQ4ZjFhM2NmYWYyMTVhYzE4ZjFmNjFhOTU1MWIgbGVnYWN5LXRydW5rCisxNDE0MSAwNGFmYjg3ZDExMDNkMTJmYzY0N2IwZWJiMDY3ZjkzZGRkOTQ2NzI0IGxlZ2FjeS10cnVuaworMTQxNDIgZTI2NjBhZmRjMzgxYjhjNjVmMThlYzJjY2E0YTZkYjg5ZGQ0ZjBiOCBsZWdhY3ktdHJ1bmsKKzE0MTQzIDUyNTVkMDUwNDBjMjUyMjI3NWRkMzM1NDgyMTA3ZjJlYWZlMGQzOTcgbGVnYWN5LXRydW5rCisxNDE0NCBkNDczMWU0M2ZhNjA1M2E0MmM0M2EwOWIwMDE1M2YwNzQ2Yzc0YmUzIGxlZ2FjeS10cnVuaworMTQxNDUgNmFiYzUwYmI0NzA3NGQzOGJjOGFlY2JhMzg0MDEyNzFjZDg1ZDU5OCBsZWdhY3ktdHJ1bmsKKzE0MTQ2IDg4NTgyMGZhN2UzMTg3NzhhYjc2YmZmYWFlZTZhNjYxZDQ4NGQ1ZmIgbGVnYWN5LXRydW5rCisxNDE0NyAwN2QyZWE3MWFjZGM2NjAwNjJkZGY5NGNiYzBkZmQ4N2EzZDFhMmJjIGxlZ2FjeS10cnVuaworMTQxNDggMjJjMDNhYjRmYjE2NTI1ZDUzMzJhZmNiMzIxZmE4MDBjYzczYzU4MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxNDkgNmFkYzNjNWZhMTg1YTExYTllYzQzNmZhODUxMWYxYmI3MGNlZWQ2OCBsZWdhY3ktdHJ1bmsKKzE0MTUwIGM1YWJjODFkZDFlZWQ5MDI0NDhkNWYwMzU4YWJiYmJlZGJjM2E0NjQgbGVnYWN5LXRydW5rCisxNDE1MSBmZDBkMzFjMzQ2YjJiYjQ5ODNhYmQwMzg2NDZiMWE2YjVhMWFkNjM4IGxlZ2FjeS10cnVuaworMTQxNTIgNTVkZjM3MDNjOTUzYjY3ZTA2ZDUwY2U1YjNkNDIwOGQ2NzBiM2ZjYiBsZWdhY3ktdHJ1bmsKKzE0MTUzIGY1N2ZmNDI4OWZjNjRiNmI4ZDI2ZGU2MTQzMWY3ZTBkNjdmNzlmNDggbGVnYWN5LXRydW5rCisxNDE1NCA1N2MxNjg1YWNiMTY3M2VlZmU0MDJjYWJmZjA3MjE1MTdhYjM3ZjFmIGxlZ2FjeS10cnVuaworMTQxNTUgNGMzZTU1YzgyOGQzYmUzYTJmYzdhY2VhYTAwMjZiZTBmM2E2YjIzOSBsZWdhY3ktdHJ1bmsKKzE0MTU2IDQ5ZDZkMzAyNzdkYTc3YzliZGY0OWRhNDJhYmRhYjA4MjFiYzNjMDQgbGVnYWN5LXRydW5rCisxNDE1NyA2NmFhMjFmNTBlYTM1MTBjZmUwYWMyOWE1ZjkzNzA1OWU3ODE0MTNkIGxlZ2FjeS10cnVuaworMTQxNTkgM2ZlMjdiYjJmMTE5MzQwYTAzMTRkZWJlZDAyMjVmYzJlZGQ5NjllMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxNjAgMjczYTVlOWFhNjMzZTMwM2UyYzZiN2U5ZjU3MDE0MTIxMzk1NGY4ZSBsZWdhY3ktdHJ1bmsKKzE0MTYxIDg2YTE2M2E1M2IxY2FiN2U4OTQ4NGY0MmVkM2IwYWEzYmU2Y2I4YWQgbGVnYWN5LXRydW5rCisxNDE2MiBmMzYxMWNiM2EyNjE3Mzc0MjFmMTllOTI3YWVhOGU2ZWY3NjMwNGU2IGxlZ2FjeS10cnVuaworMTQxNjMgMTc3NTkwMGRiMTA4NzU0ZjZmNTBiZWUzOWIzOTk2NzU2NGI3NDI5YyBsZWdhY3ktdHJ1bmsKKzE0MTY0IDU3YWEyNzdkN2EwMGRlN2UzMWRlYThiZTA4MzFjN2E3ODU1OWZkZDEgbGVnYWN5LXRydW5rCisxNDE2NSBjNjIwNWJjNzEwZWU4YjJiMWQyZGQyZjNlZDg1NTU4NjQ4MjI1M2I1IGxlZ2FjeS10cnVuaworMTQxNjYgM2ZmZGYwNWY1NjM1ZGYzYmM0OGZiMGIyMDNmODgzZTlhYjIxNzM0OCBsZWdhY3ktdHJ1bmsKKzE0MTY3IGFmNWFkNWVkYjdhNWRhMWYwMThkZTc5Y2FhZWU5YmM1ZDUzZTBlM2QgbGVnYWN5LXRydW5rCisxNDE2OCA0YmQ0YmQzYjU5N2FiZTY1Zjk2NmI3YmM5OGJhNzhlOWVhODdmNDJmIGxlZ2FjeS10cnVuaworMTQxNjkgNjQ4ZDk3YmQzYWM2YzM3NzVjOGQ0MWRlODBiNDVhYjY5MTZkM2I5ZiBsZWdhY3ktdHJ1bmsKKzE0MTcwIDExMzFiZmExYWQ5OTMyMzY4OWRmN2EyM2MyYzdkY2RjMTYxNmE2NmQgbGVnYWN5LXRydW5rCisxNDE3MSAxYjJlM2UyYTI0Mzc5M2Y2MGRhMDJkY2Y5NWM4ZDYwMzlmOGQzOGU1IGxlZ2FjeS10cnVuaworMTQxNzIgY2FiM2ZmNTUxZjRiYzYyNjU0ZTI4ZTFhYTc2NTg4NDdhNmU2MGEzZCBsZWdhY3ktdHJ1bmsKKzE0MTczIGYyNDk2NWU3N2I4NTU2YmFkNWRlZjBhMDRlODE3YTYwZTkzZGUzYjEgbGVnYWN5LXRydW5rCisxNDE3NCBlMGUwMTFlNDA3M2M1YTVhMmRiMTM0ZjNiNWVkZjBhMGU5MDRiMTg4IGxlZ2FjeS10cnVuaworMTQxNzUgMTVlNWJkODkzOTVhN2Q1MjA3ZDIzODFmNzJiZTMxOGMyZTczY2FmOSBsZWdhY3ktdHJ1bmsKKzE0MTc2IDIzOGI0Mzk4ODJlNTIzYjhkNTkwNmU5YmExNjAwOTdjZDcyZDZlMTIgbGVnYWN5LXRydW5rCisxNDE3NyAwMTE3MWJlNDc2OWQxM2U0Mzc5ZjViNzQ3ZWZkZTg3ZDNjYThmZmZiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDE3OCA3NzA2MThkOWE3ZmNmYTBkNzhlMmFiMzc1ZmJmZjU4OTMxMjRkMDM3IGxlZ2FjeS10cnVuaworMTQxNzkgNzhmZTg3Y2UwZGVkMTA2MjM3MDM2MDk5NGQzNzc0NGQ1ZTNhZDViZSBsZWdhY3ktdHJ1bmsKKzE0MTgwIDE0NTYxZTgzOTViYjlkZWZlODUzZTA2OTNmMjM4MTFjMjIwNzhkYjggbGVnYWN5LXRydW5rCisxNDE4MSAwYmFkOWQ4Yjk0NWY3MjIzOTRlZjBmMTcyMjc5NjAyMzAxMTFkMTliIGxlZ2FjeS10cnVuaworMTQxODIgNTczOGFkNzM3MTE0NDczOWEyZWYzYzNhNGY0MmQ4MmQwYmE1YzRkMyBsZWdhY3ktdHJ1bmsKKzE0MTgzIDJhYWI0NzQ4NDAxMjIyZTcwYjZkN2UxNWI1MDMyZWU5MGM0NDc1Y2UgbGVnYWN5LXRydW5rCisxNDE4NCAxY2ZkODE3NjhlNzAzNWQzOWQzMTQ3ODBiMjdhMzg0Zjg1MTM3YmQyIGxlZ2FjeS10cnVuaworMTQxODUgZWNkNjY3OThjZjBiZGJjZDk5ZjM5YmNkZDY1NTIwZGFjN2M2ZWI1NyBsZWdhY3ktdHJ1bmsKKzE0MTg2IDEzZGFhZDhhNmVlZTEwOGM4NDE5M2M3MzBkMWI3NGE0ODZhOWI0ZWMgbGVnYWN5LXRydW5rCisxNDE4NyA2OTIxNmMxMWExYmQ3YzY2ZjIyNGQ5MzQ0Mjc4NzBmNTgyYzFjODhlIGxlZ2FjeS10cnVuaworMTQxODggOWVjN2Q5Nzg4MDBkMjY2ODgzZmZlOGZjNDU3YTIxMmQ1MDc4ZDIyNiBsZWdhY3ktdHJ1bmsKKzE0MTg5IGIzNjA0MTBkNjNjNjc3MWI4MThjN2NjNmJkZTdmYzk5YjQ0YWFmOTEgbGVnYWN5LXRydW5rCisxNDE5MCA2ZDhjYjY2Y2QyMzg1NjQ1YzA1NjdhMDY4ZGQ2N2JmMjc2NjE0MjQzIGxlZ2FjeS10cnVuaworMTQxOTEgMDgzMTNhYzE3Y2YzZGFjNjYyNTI3ZDEyM2FiYjIwMWMwNGQzMzliYSBsZWdhY3ktdHJ1bmsKKzE0MTkyIDY3NTI4NDQ5NzQ0M2UyMjk2OTEwODlhMDI2NGNhMGJjMDkxOTdkNjYgbGVnYWN5LXRydW5rCisxNDE5MyAyMGFmMDJhNTdhNWYxZTM1ODE0ODk3YTU0NDU5ZTM2NmU5NjI2YmZlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDE5NCA2OGMyNTliNmU2Y2RmOGNkM2E1ZmViN2UyZjMzZmJiZDEyMzRmNWEzIGxlZ2FjeS10cnVuaworMTQxOTUgNTkwMjcyYWJlNjljODViYzNmZmMwNWQyZGI4ODA2N2UwNzI0MWIzYSBsZWdhY3ktdHJ1bmsKKzE0MTk2IGJiMWY0M2YyNWNlMDlhNTNiOWJhZmYzZDA1NGE5ZTQwYjM1ZmIxOTkgbGVnYWN5LXRydW5rCisxNDE5NyBhNzBkYzczYTI4ZGUwOTMyNDUwYjQ0YjkyZmY2OGU2NGRjNGM5YTFjIGxlZ2FjeS10cnVuaworMTQxOTggMTA3Y2UyOWIwNGE0NWQ4NDgzODE1MDA1NzY1NjJhNjk0OTU3ZDk0NCBsZWdhY3ktdHJ1bmsKKzE0MTk5IDUyODU1OWEwYjJmMjUyMGU5ODcxZDkwNDZjZDgzZGY0YWViYjk2NjcgbGVnYWN5LXRydW5rCisxNDIwMCA5MTI0NWRjOTQwZWJhZjAyMWY0Mzc4ZTZlYmVjZDMzOGMxOWZmZjgwIGxlZ2FjeS10cnVuaworMTQyMDEgOGNmN2IyM2ZiOTU1MTZlMDNjYjE5MDJjMjYzMDVhY2U3MzMxMGMyNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMDIgYzg3Yjg2MWM2ZWM2MDYxMWI3MzA5YmNlMDEyMTc4ZGIwY2M2NzA5YSBsZWdhY3ktdHJ1bmsKKzE0MjAzIDBlYzgwM2NiZDg3MjI1YWU1ZjAzZjRlN2ZiOGQ3ZDQ2MDQ2Yzk3OGQgbGVnYWN5LXRydW5rCisxNDIwNCA2NWRjMDgyZjcwMDRhMWQzZmE1ODhkYTY4MDNkZjIxMzY1ODhiYThmIGxlZ2FjeS10cnVuaworMTQyMDUgNmYyMTE5Y2Q5OWQyNTZhYzY3ZTc4MjM4MzVmNTY3MTlkMTY2NTI5YyBsZWdhY3ktdHJ1bmsKKzE0MjA2IDNjMjEzZTM3MmIyMjg5Zjc4N2EzZTZiMjk0NGRhNzE0NzhlMDgxOGEgbGVnYWN5LXRydW5rCisxNDIwNyA5MmM1M2IwYjJlZTVhMGQ2OTBjNTUwOGM5ZDdkOTI4NDI0MjU3NzViIGxlZ2FjeS10cnVuaworMTQyMDggYzZlMTQzZGZjNWEzMzJiMDU5MGIwYjVjYzRmODhmMWFmNTNiZTg1YyBsZWdhY3ktdHJ1bmsKKzE0MjA5IGQ0ZWExMzYxNzMxYjYzNTYwYTgxMGM2MDU2OTBjNTViODYyZGRhMmMgbGVnYWN5LXRydW5rCisxNDIxMCA0N2Y5M2E5NjkzNjZhYmE2ZTQwMzk5Yzg0ZWEwYjUxMDQ4OWQ5N2IyIGxlZ2FjeS10cnVuaworMTQyMTEgZDdlOTZjZGU2YjQ3YmRkM2ZiNTY2NTNiN2I2M2FjY2UxYzI0NmJjNiBsZWdhY3ktdHJ1bmsKKzE0MjEyIGMzNWVlZjhhMjE3MWE1MjVkZmM3M2ZmM2ZhMDYwMTI3NDg1ODMzMDQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjEzIDRlMzA5NWM0YWVhMGU3N2JjZGJhYTYxMjI2Y2M1ODBjNTQ3M2FhZWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjE0IGRmZTJiZmM4MDUwY2I5MjkzOGVkNjRmMzdkZGViYTRmOTBiNDRlN2QgbGVnYWN5LXRydW5rCisxNDIxNSBiODI3M2U1ZGUzNzRiZmIwNzcxMzNmN2RmYmJlYWQ0OTdjNzY5MDAxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxNiBjZjdhMGYxYjdiNDhiNmM4ZWY4MGE4NjRiZTdmOTU5MTViMTkzZmQzIGxlZ2FjeS10cnVuaworMTQyMTcgNGNmOTI1ZmNiNTYxOWU2YjY3NjdmNGNkMTZkZjUwNDJlN2JlZDYwYiBsZWdhY3ktdHJ1bmsKKzE0MjE4IGY0Y2M2MDNkZDc5OTFiMzFjNDFiZGQzMWZmNmY3NTZiYzEyMWE5ZWQgbGVnYWN5LXRydW5rCisxNDIxOSA4MTc1ODkxNTZmMjE2MTdmODdkZmEyYzFlNDEzYjNhNzRiMWEzOGE4IGxlZ2FjeS10cnVuaworMTQyMjAgNzc4NTQ2ZGNiYTA1MmJhMGZiZDVkYmE0NTFkMWQwZjg2YzViNTQxOCBsZWdhY3ktdHJ1bmsKKzE0MjIxIDMzMjI5ODgwMTBiNWUxNzJkNDgzMTQ1ZTQyY2NlYjAwOTU1ZjVmYTIgbGVnYWN5LXRydW5rCisxNDIyMiBhN2YyN2YzMDM5OTVkYjU0ZTIxNGY4YmE3ODc1NmUwYjY5ZjYzOGI5IGxlZ2FjeS10cnVuaworMTQyMjMgYTk0YzI5NmE2ZmNjY2M4MTE1NmQ3ZWIwMmUyMDZiMGI5YzYyMDhlMiBsZWdhY3ktdHJ1bmsKKzE0MjI0IGNmN2ZjYjBjNWJkZTJiMWY1Mzk4NjVkZDU0ZjUxMmU2OGJlYzVjNTAgbGVnYWN5LXRydW5rCisxNDIyNSAxZmM4ZTY2NzNiNDhlZDI2MjNjM2VjYzIxNTAwYTQ1MDdhYWI3ZWVkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIyNiA4NGZkMzFkZDRiMTIxYjlhNzIxZWFjZWNlNjdhMGVhMjRlZDIxZmVjIGxlZ2FjeS10cnVuaworMTQyMjcgYTdkZjdkNTIzZDI5MzViYTc2MjU4YTc1ZmI0ZGViOWM0MjczYzljZiBsZWdhY3ktdHJ1bmsKKzE0MjI4IGJjYjBkNjM5YWNmMjFiZDI0ZDFkNGViM2E3NGQ1MjI2ZjA4NzAxMzUgbGVnYWN5LXRydW5rCisxNDIyOSAwNjlhMWZkNDBhYmJkNzVkNjdmOTJhZTkyMzk4MTNmOTU1MmJhMWQxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzMCA4Njg5MGMwNzNjM2JmYmNhZWJhMjNkYzFiZjgwOTU3MTBmODJiNDIxIGxlZ2FjeS10cnVuaworMTQyMzEgMWRjZjliNzU5Mzc0ZjIxM2FhNzljMjgwMmRmMjBmNmNhZDVhNWU1NCBsZWdhY3ktdHJ1bmsKKzE0MjMyIDRhMzI0N2VkZGM0Mzg2OWNmMDJmMTQ0YTRhMDQxNWJlYmM3Zjg1ZTUgbGVnYWN5LXRydW5rCisxNDIzMyA0NzJhMTdmMmNhOWZjZTMxNzAyYWZkNTA0NWU2YWRmN2NkYTEzNmUzIGxlZ2FjeS10cnVuaworMTQyMzQgYzBkNGVlOTM5MWI2ODIyNjE2ZGYwZDdjNGJlNDRjMzQyOGU1MzkyNyBsZWdhY3ktdHJ1bmsKKzE0MjM1IGQwOTM0YTgwMzhmNmE5NjdiYWQ4OWQ0ZTU0MWJmNTJhNDg0MDJmZTEgbGVnYWN5LXRydW5rCisxNDIzNiA4NzA1ZWEzOTBkYmEwNTJiMDk0YWU0YTEyN2JjMmFjYmVjZTQzZGViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzNyBkZWQ5NjM2N2U4Y2E3MmJlYjJkNDg1YWRkOWUxYWJiMzlkYTQxMDlmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzOCBkMzM1MjA4MjBmYWZhYzRkYWE5ZDEyZTFkNTc0YWMzOWQ2MzAwZmY1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzOSBlODI3NjczM2RhOGZiZThjOGQwZjYxNWMxODczY2ZhN2UzYTk1YTljIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI0MCAwYjAxOTRkNDM1MmYzMTI0YzhkZTI1YmE2Njg0YmY0OWUyMjFkZjQzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI0MSAzODU2MGEzYTMyNDkxMmM1NjkxMzQ4ZTg1OTc3MjdjMGU4MDdjMGFmIGxlZ2FjeS10cnVuaworMTQyNDIgOTlhMDFjYjNkZGI1ZWY1ZDE1YmM0MWMwNzNhZWJhMGYzNzE1ZDY5YiBsZWdhY3ktdHJ1bmsKKzE0MjQzIGQ4ODk5NmU0NmNiMmNlMDExZjBlZmJkMDE5NzU3NmEzZjgxMDA4OGQgbGVnYWN5LXRydW5rCisxNDI0NCA5OWM5YjEyNjY5MGRmYjA1MDIzNTg0NzZiMGExZDZkYzgyN2M2MTY1IGxlZ2FjeS10cnVuaworMTQyNDUgNGMzY2E2YzA1YmNiMzIxZjhkN2ZhOWI0MDgyZjNlNTM2Yzc2ZjBkZiBsZWdhY3ktdHJ1bmsKKzE0MjQ2IDBhZDIzMzI0MDE2ZTRlZDMxMmZiOTdkNDYwM2U1NjBkMzFmMzc5OTMgbGVnYWN5LXRydW5rCisxNDI0NyBmZDVjZWFkNzMzYjY4Mjg4ZDA5MzEwMGQxNThjMWNkM2U4MjNhNzIwIGxlZ2FjeS10cnVuaworMTQyNDggZGI3NTZkMzFlNzI3YTNiYmNkNmU3YzVmYTI0MjQ5YmZhMzkxOGUwZCBsZWdhY3ktdHJ1bmsKKzE0MjQ5IDAyM2VkMjY2MzA3NDYzY2QyMDVmZjFkODJkZWU5ZjJiMTEyYWNjNWMgbGVnYWN5LXRydW5rCisxNDI1MCAwZDI3ZThkOGYwNGMxYTIwMjk2NDRmZmExZWMzZDdlZjU1NmI0NzhlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI1MSA2NzY0NjlmNzVhZTY3MjNkNzFiNjVjNmNhMTEyMDhiNjg2NDMxMGQzIGxlZ2FjeS10cnVuaworMTQyNTIgZWE2MTA0NGY5OGFlZDg2MmYyZTk4NzBkNjBkM2YyNjBkNmNlMmU0ZCBsZWdhY3ktdHJ1bmsKKzE0MjUzIGFkODU5NDA4NDBjYmI1YjU4OGI3YzI4MmFhM2M4MzBlMjRjOGFiZTAgbGVnYWN5LXRydW5rCisxNDI1NCBiODk2YzEyYzJlZWE1Y2EzNDk3MDVkOGY3YjE2ZDYzNGRlMjVjOTA1IGxlZ2FjeS10cnVuaworMTQyNTUgYzQzNGY5NDI3YzliMDNjNTE5YzQ3YWFjODdmMDUwNzlkOTcxNDg4ZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTYgMjRmODE0ZDllM2ZmNTQ1NDViZTI3ZjdkOTQ4MzJkNzMwNTgxMWVjYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTcgMDAwMTcyMjVmMDc3OTU1NTEzYzc2ODJhNTcwMWFmZWUzMmEwYWQ5OSBsZWdhY3ktdHJ1bmsKKzE0MjU4IDJhYjc0YjE5MzI4NmQ5YzhkYmE2MWRhNmY3ZmE4MzYwMTFjYjRjMjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU5IDUyOGVmMzhiM2QzYTc2N2EyYTg0NWVkNzRiODA5ZTJiZjlkYjZiMDYgbGVnYWN5LXRydW5rCisxNDI2MCA3ZmRmYWFhNjU4MjcwOTY0MzE1MmY3ZjMyODIyYjI2MGNiNjY0NTQzIGxlZ2FjeS10cnVuaworMTQyNjEgZTk5OGIzNTBhNGJiMWRhMTJiYjhlY2VjMTY4OWNkZWRlZmU3OGE2MyBsZWdhY3ktdHJ1bmsKKzE0MjYyIDgyODM1NTRmMTMxOWE0ZDNhZDBjYmQyNGMxNDNjNmJjZDZhM2EzZjAgbGVnYWN5LXRydW5rCisxNDI2MyA3NzA5Yzk4MzUzODI4YzJiYjIzYmFiZGVhZDI3MDhkMzFmZTc2ODZmIGxlZ2FjeS10cnVuaworMTQyNjQgYjdmMjYyODczYmUwNGJiZTRhZmM5ODRmNjYyNmIzNTFkZDg4ZGUwMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNjUgYTIzODZiOWY0NzRkOGFiMWE1NDdmZGNkNjM3MGI5NmRkYTlhYzZmYyBsZWdhY3ktdHJ1bmsKKzE0MjY2IDk1NTExZjM5MzE5YTRhMWY3OWE0MDA5ZDFhY2Q1NWRkMTU4ODZiM2IgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjY3IGI4MDBlMzZhZWQ0ZWJkYWJlY2NkZGQyODVlMjBmY2UxMWQyYzIzYjcgbGVnYWN5LXRydW5rCisxNDI2OCA0NDJkNGNiNDQwYzg4MjI4ODc4MTA2MTExNGVhNWNhYjk0MzdiYjJjIGxlZ2FjeS10cnVuaworMTQyNjkgZGZmN2EwM2U3ZDI0ZWRhMDkxN2E4ZmUyMjNhMjVlNjdiMWIyMWI1NSBsZWdhY3ktdHJ1bmsKKzE0MjcwIDhhZmQ2ZmI1ODhlZTdiOWM2NTNmZTgyMjUxZjYwYjRiYWFhMzYyNTMgbGVnYWN5LXRydW5rCisxNDI3MSA1ZTZlOWU4OTNhY2RjZWZkNDNhZWI1Mzk2ZmViMzFmYjBkOWVlNTU0IGxlZ2FjeS10cnVuaworMTQyNzIgYTEyNmZiNWM2MmRjNzQ3ODg0ZjgyNjhhOGYxZjlkZmIwMjMzNjQ4MiBsZWdhY3ktdHJ1bmsKKzE0MjczIDQ4MzcwYzY3ZGQ5ZTZjN2ZiMTkyZGEzMjgwZGM2MmQ1MjY1YzkyMmUgbGVnYWN5LXRydW5rCisxNDI3NCA0ODk0ODNiNjViM2EzZWIxYmI5NTMzODQzNzQzYmQ0MDlhNGY2MTY5IGxlZ2FjeS10cnVuaworMTQyNzUgNjljOTk1MTYyMjcwNjQ3NDFlZjVlNzBmMzZiYzIwNjM1MTk3YzIzYSBsZWdhY3ktdHJ1bmsKKzE0Mjc2IDA3NTZkZmVlYzRlZWNiZDgzNzdlZDUxNDNjOGQwYmU0MzRlMWNhMTIgbGVnYWN5LXRydW5rCisxNDI3NyAyMTZlZmRhZDlhNGI2ZmY2NTQ1ZWIzN2FhNTBmOGUxN2NmM2JhZjVjIGxlZ2FjeS10cnVuaworMTQyNzggZmY5MTk4NTM2MmM3Y2MwZDI1YmNlYjAyYTQxN2VhM2VhY2RkZTNhYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNzkgZjk0ZDY2MDE2OTIxZTlkMGUwNmU3YTNmOTY3NWJiMmRlMDM5MjJlMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyODAgOTE5YjM3YzUyYTg0MmEyNjVkNjZmZWE2ODA3YzNhZGY4ZTg0YmVmNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyODEgY2JmNDQxMDJkNDJhZmM1ZGI4MmI4NjFkNGQyZDNhZWY4ODgyMzEzZSBsZWdhY3ktdHJ1bmsKKzE0MjgyIDZkMWQ1ZjNjY2E1ZmI2MmI5NzhhNjliNWJiYzAxMWY3OTRmNzhkNzMgbGVnYWN5LXRydW5rCisxNDI4MyA2N2M2MjM5YzdiYzdhZmJmYWI1MTVkMWFiMWFkYzg1NGY2YWQ4OGNkIGxlZ2FjeS10cnVuaworMTQyODQgNDdmNzVhMTdiMTAzNzRiMmNkNGNhYzYwZGNiY2E0MDBiNjFmNWQ3YiBsZWdhY3ktdHJ1bmsKKzE0Mjg1IGE5NDcxM2Q2ZDlmNmE4MzAwODQ0YzIyYTRlYmFhY2JlZDU4ZDg0YWUgbGVnYWN5LXRydW5rCisxNDI4NiA1ZWZiNjJhY2YyNmVmM2Q5M2Y3ZTYyZWI3N2I3YjRkZWI3NjUxZmQ5IGxlZ2FjeS10cnVuaworMTQyODggYjVhZWMzMzc5MGM4ZTU1MjVkZTQyODE4MjBkY2YzM2IyMWQzNDc4YSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDI4OSA5M2JlZDYwMzU1ZTRlOWU1ODQ4NzZiYmYyMjRlMGQ4Y2FhN2RjNGExIGxlZ2FjeS10cnVuaworMTQyOTAgOGIzNDgxODdlMzAzMzI2YzQwNDAzMzgxZWM4ZDExOGM4NTc2NzYyYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTEgZWYxZTYzZjc3NDQ1OTkwYWJkNDdiYmQ4MzA1YTIzNmU4M2RiZGE1MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTIgZjY4MGFiMTA2ZTg2MWUwN2UyNmI1MTUxNTJmNDYwYTM4MjBkZjUzYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTMgNDdkNzBmNGY2MzVmMzEwZTkxYWY0ZjNkMzMxNDM5NjY1MGJjYjkwNiBsZWdhY3ktdHJ1bmsKKzE0Mjk0IDFjNDM1NGJiYTQyYjlhMTliZWRkZjIwN2FiODk2NWNjNjlkMzgwYWYgbGVnYWN5LXRydW5rCisxNDI5NSAwOWRiYjQ3MDM0ZTBmNTJiZjkwZGYxOWY5NDc5NzZkYjc5ZTMyZjU2IGxlZ2FjeS10cnVuaworMTQyOTYgNGMxNmY0MjVjNzEyYzQyMzcwZmZlM2I4NzEzYWUwNDhhOWYwYzE2NSBsZWdhY3ktdHJ1bmsKKzE0Mjk3IGUzNDk5MTAyMjU3MTc1MTEyYTAxY2FlYzMxM2JmZGI0M2MzYTJmNDMgbGVnYWN5LXRydW5rCisxNDI5OCBmNGY5YjZiNDRlOWU0N2M3Mzg4MTYyM2M1MDM4NzI0ZTNlZDllNzA1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI5OSAwZGQ1MjBmNGRjZThkYzFkZGQ0NmI1MGMyOGUzN2FmNDhmZmM4ODhlIGxlZ2FjeS10cnVuaworMTQzMDAgOGY4OGIzMTg0M2FiYzUyNDQ5ZjBmNGNhN2Q4MzNiMDA0YTg4NTQzMSBsZWdhY3ktdHJ1bmsKKzE0MzAxIDg5MGIxMWFhMmViYzcyZjg2ODRlMGI4MzI5Y2IxYmI2M2MyY2Q1NDkgbGVnYWN5LXRydW5rCisxNDMwMiBkZTQ0ZjUxMTc2OGFjNjY3MGRhNTRjZjFkNmZmNzAzMzUyZGNjMzI3IGxlZ2FjeS10cnVuaworMTQzMDMgYjBlYjQyMWY4YWU5YmViN2Q4YTE3OGFlM2ZjMzE1ZDZjN2I2MGI4NCBsZWdhY3ktdHJ1bmsKKzE0MzA0IDU4ODM3MTNlMmRhM2E2MWYxMzlhNGNiZThlODU2MmUyMzFlNDkyZGUgbGVnYWN5LXRydW5rCisxNDMwNSBkYWNhYTM0ZGZjYTQ2Zjk0M2MwYjk5N2ZmZmNhOGI3N2JjNDcxMTdjIGxlZ2FjeS10cnVuaworMTQzMDYgZDM2ZDMxMmNmOTBiZWU4NjBkYWU3N2FiMTJlNmQ3M2UwZTQ5OGZhNyBsZWdhY3ktdHJ1bmsKKzE0MzA3IGZmNzllZTQzYjhhMWZhNzU4ZTBkOTk0YmEyM2QxNDg5N2RiOGNiNGMgbGVnYWN5LXRydW5rCisxNDMwOCA4NmU3ZTVlY2FmNzk2MGIxNjMxMzg4OWRkOGQ2NTAyYmZjYmIyNzBiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDMwOSA0OTdlMDExZWYxYTMyNWMwNzVmZTJmZmYyNzgzNTQ5MDU3MGVlMzI5IGxlZ2FjeS10cnVuaworMTQzMTAgN2YyOTMzOWVjM2E1MGEzYTUzNDIzYTIzM2I2YThkMWE0Mjk1NjIwMSBsZWdhY3ktdHJ1bmsKKzE0MzExIDM0ZjUzYzM2YmE5YTFiMWQwYzUxN2U1MjgyYzhjNmM0MTQxYzkyNTcgbGVnYWN5LXRydW5rCisxNDMxMiA3MTZmYjU5NTQ4YmU0OWZjMzk2OWE0ZmJkYzQ4MTBiNTU3ZTAzYzFjIGxlZ2FjeS10cnVuaworMTQzMTMgZDEwYzEwOGQzZmQ3NjIxMjUyZjk1ZGRiMTMzNjRlZTZjY2VhNmMyOSBsZWdhY3ktdHJ1bmsKKzE0MzE0IGI2ZjUyYzFlZjZkYThhOGFjYjBmNzI2NmRkMWNmNGY2OGExY2VlMjYgbGVnYWN5LXRydW5rCisxNDMxNSA2ZjQxNDY4NDYzMzc4NzhjMGJiZjE0OTgyYjJjMGI0MDFkNTNkODdlIGxlZ2FjeS10cnVuaworMTQzMTYgNGEyM2NjNDllMmIwNjRkOWQyNmYzYTQwYzQ0OTdhNTNlMDlkYzhiMiBsZWdhY3ktdHJ1bmsKKzE0MzE3IGQ5MDAwZWU5NTllNTM3ZThkOTI4NjM0YzFmMjA3MTlkYTdkZTYyODcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MzE4IDVkNjI1YTM2NWU3NjU3YTI5MjgwM2YyY2RhMjljOWU4NTVhZGMyZDYgbGVnYWN5LXRydW5rCisxNDMxOSAzOGM0ZDYxZGI3ZWExZjkxMDg0YjM1MTQ0MDY1NTQ0OWEwMTM0ZjU5IGxlZ2FjeS10cnVuaworMTQzMjAgNjU0NmVhMDZlMTU3MDk5MjU1NzFhNDkzMDJmMWFmNzA4NDVhN2I4OSBsZWdhY3ktdHJ1bmsKKzE0MzIxIDkyNTBlNWQzYWEzMWZkZDRmOWY2ZmNhMTkxZTFjZWI2MDcyMDliZTAgbGVnYWN5LXRydW5rCisxNDMyMiBhYmZhMWNiMWVkMDUyYTU0MmQyYTg2YTlmOTE0MWUyMTAwYzVlMzM5IGxlZ2FjeS10cnVuaworMTQzMjMgYjMyMjNmMDNjOWVhODhkZjk1ZjY2NWViOGRhMGFmY2I4ZTE3Y2EwMyBsZWdhY3ktdHJ1bmsKKzE0MzI0IDYyN2I0ZGJhMTE5MmUyNWIwOThiMDNjMWY5NGI0YmMxYzY1ZWNjOGQgbGVnYWN5LXRydW5rCisxNDMyNSBlNDI1NTU2ZTY5OGViZmEzMzZhOWY2OGQ0NWMxMGExNTFkOGQxZDFmIGxlZ2FjeS10cnVuaworMTQzMjYgZTkxNjliMTllOWU1YzQ0N2M2NWFkOWVlYjUyMGY0NzMxNWM2M2Y3ZSBsZWdhY3ktdHJ1bmsKKzE0MzI3IDExNjNhN2ExY2M2NzliODIwYTAyMWJhODk2NmJmNWZiODdhNjI3ZDYgbGVnYWN5LXRydW5rCisxNDMyOCA4MzlmOGY4NmNjYWEzYWExZWUzMWQ5NDE5YmQ5MTcwZmI0MTlhOGRkIGxlZ2FjeS10cnVuaworMTQzMjkgZmRjOWVlYjg5ZTBiMzBlNjY4MWE0YTI0ZTYwZTM1NDE4ZDEyMmY3YSBsZWdhY3ktdHJ1bmsKKzE0MzMwIGViMzgxZmYxN2EzMTk4YzIzMjRjNjQ0ZjMxNjQyNjBhNmVlYmE3ZTEgbGVnYWN5LXRydW5rCisxNDMzMSA0MjIzMzdjMzIyOWFkZWExZjc3NjFhMDNhYmZlMzVlYjZjNGNkN2NhIGxlZ2FjeS10cnVuaworMTQzMzIgNjc2ZTY0N2IxYmU2Yjk0M2M5ODVlZjU2MmI5YTE4NjA3NDIxNzU2MiBsZWdhY3ktdHJ1bmsKKzE0MzMzIDcxZDAzOGRiMGRkMjNjMmYxMjA0NTQyZTNiMGYwMWE0ZDUwMDQwNTUgbGVnYWN5LXRydW5rCisxNDMzNCBiN2FlYmM4NGNiYzE2NGE1ZTAwYzlkZWM1N2Y4YWVmZTczYjk5YjhkIGxlZ2FjeS10cnVuaworMTQzMzUgYTUzMjkzMmFjNDA4Mzg3ZDE5NGJhNTdiYTI3Y2YyZTFkOTVkMjhjMSBsZWdhY3ktdHJ1bmsKKzE0MzM2IDFlOTUyZDkzM2FiYmVmNWQzZDliZTI2MjNlOWQ0YjAyNTlkMTA2ZjcgbGVnYWN5LXRydW5rCisxNDMzNyA5ODU3MjM0OThiMWJhNjQyY2MyNjk1ZTYwOTcxZThiOWJmOGU2ZDI5IGxlZ2FjeS10cnVuaworMTQzMzggNjAyNWIwN2M1YzI5NjZlNTZjMzcwYzkwMjhiMDU5NGFlZDNkOWI4MyBsZWdhY3ktdHJ1bmsKKzE0MzM5IDBiNDZkMjUwZTE5OWNmYTZlOGE3MWIzMDgyY2JjOTJjZGRiZjA2ZmMgbGVnYWN5LXRydW5rCisxNDM0MCA3MmViZjkxZGFhMDVkNWE3MzBmYTM3MzkxYjVhZmYwYzUzN2I2ZDlhIGxlZ2FjeS10cnVuaworMTQzNDEgYzk3NmQ2OTNkZGViMzY0MDVjZDk3MTgwMzRhZmY5ZTZlZmE2MWMxNSBsZWdhY3ktdHJ1bmsKKzE0MzQyIDc4ZjAwOTg4MTJiNzRiMjU3YjI1YzU0MWIwMmUwNDA1NTM5ZDk3MDIgbGVnYWN5LXRydW5rCisxNDM0MyA2YTk5ZmYwNjk0NTdkNzE4ZDQxODkxMDBhZTVlYWMzN2QxMWM2YzNhIGxlZ2FjeS10cnVuaworMTQzNDQgODlkMzA4ZmNmNmY0NTgzNjNiNGRmZjAzMmM2OTQ1ZmM2ZTljOTMxNiBsZWdhY3ktdHJ1bmsKKzE0MzQ1IGUxOWEzNTA5OTRiNzVhZmMxYmQ0NzkxYzJjMWI3YTA1ZmZlYTJiZDIgbGVnYWN5LXRydW5rCisxNDM0NiA2NTNhOTM1MGE4MTczMzk2OWIzZTcwMjc2M2ZkYTVlMDRkMDdhYjFiIGxlZ2FjeS10cnVuaworMTQzNDcgODNkMzUxZjk0OGFiNzVjZWRjOGE2ZTZmYmUzMmRiOGU0YjE5NzVjNyBsZWdhY3ktdHJ1bmsKKzE0MzQ4IGE4NmJkZmU0NTcyNTg0ZDZjNmM2NmEyYjI5YzhiOWRjZDBiN2JjMTIgbGVnYWN5LXRydW5rCisxNDM0OSAyM2U3ZDk3ODEwMTMxMTU2OTNjZGUwMjk0MDM3OTA5MzA0NjRlMDY4IGxlZ2FjeS10cnVuaworMTQzNTAgZGE3ZjVmNmE4NDlkMGVlOGE4MmFlNzY4OWNmMzRjYjgwODEyYTRkZSBsZWdhY3ktdHJ1bmsKKzE0MzUxIDg0MGUxOGVlYzA3ZjRmNTVjODczOTAyMmEzYjVmNTZjMzRjZjkyMGMgbGVnYWN5LXRydW5rCisxNDM1MiBjOTc4YTIzYTRkYWIxMDc1OTFlOGQwNzY5ZjA3YWJkYzE3ZjQ1MTZjIGxlZ2FjeS10cnVuaworMTQzNTMgM2M3N2Q2YzVjOGU5MTgwZjJmYmI5ZmJjMDkzNjJkOGI3NDY4YWYwOCBsZWdhY3ktdHJ1bmsKKzE0MzU0IDQ1YzM1YjUzNzZlNGJkYmI1YmIzYTYxZGI3MGFiODhlNGJkNWZhOWUgbGVnYWN5LXRydW5rCisxNDM1NSA3NzQ2NWQ4YjlmNWUyOTBkYmMzNDI3ZTdjZjIyYjBmZGU3Y2Q0NDljIGxlZ2FjeS10cnVuaworMTQzNTYgN2VmMzllMDcxMjBhN2RhYjVmMzRmNmJlM2E5NGUwMmQ5ZWNjMTdhYyBsZWdhY3ktdHJ1bmsKKzE0MzU3IDc2YTYwOWE5NDczMDIyMzhmNTE0OGE1MzRiOGY4MjUxZmQyNDExZjUgbGVnYWN5LXRydW5rCisxNDM1OCA1YzI3NzAxMjQ5MDRlZGIzYzIzYjMxMTg4NDE0ODE3MDBhMjQ5NDY1IGxlZ2FjeS10cnVuaworMTQzNTkgNzdmYTMzMTZiZjU4MjU0NzA3MGZlNDBjMDc2MWI1Y2FiYmNiM2MwMyBsZWdhY3ktdHJ1bmsKKzE0MzYxIDRkOTEyMjEyMDhmZmIwYjQ5NDExMjQwZTQwMDJkMmU4MWI5MGM3ZTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MzYyIDNmMWRhMDVjZWQ1NTM2YTIxYWNhMjE3ZGI4MGU2YWZjNDNmZWI4ZDUgbGVnYWN5LXRydW5rCisxNDM2MyAzZGNkZGI0NzlhN2U2NDczOWUwYzhhZDc4ZDIyMGYxMmE3NmY4ZDQ5IGxlZ2FjeS10cnVuaworMTQzNjQgNjA1NmNkNTAyOTdlNGM5OTE5MTc4Y2ZkZjY4MDM3MWI1ZDkxNTdiMSBsZWdhY3ktdHJ1bmsKKzE0MzY1IGRmZmJkOTIxZWVlZDQ1Y2IzMDg0ZDdjN2FlOTU0NjU5ZWJmYTk4Y2MgbGVnYWN5LXRydW5rCisxNDM2NiA1N2ZiMzUwMWFiMjJiMmY2NDg5ODQ5YzYwZTc1YjBjNWFmMjA1MGE5IGxlZ2FjeS10cnVuaworMTQzNjcgNjM2N2Q4MjlmMzZiYzIwYzk2YTY1OTc4ODhhNzc5YTk2OWZhNmNiMyBsZWdhY3ktdHJ1bmsKKzE0MzY4IGUzNjA2ZDMwODg2ZjAzODM3YWM3MmYyMWZkMjk3NDEwMmZiMjMxNDggbGVnYWN5LXRydW5rCisxNDM2OSA5NDVjZTYwZDk4NzkxNzM2OGIwOTg2Y2FlODU4YjgwNmNjNWU2ZmYzIGxlZ2FjeS10cnVuaworMTQzNzAgMDIwNTI2ZTcyZWFjZjI4MzU0Y2Q1NTFhNmY3MjE4N2M1MTBkN2IwNyBsZWdhY3ktdHJ1bmsKKzE0MzcxIDkwOTJkMzBjMmJiN2Q1ODZmNzkwNmIxZjJmYjRmZjcxYWViNjM5ZmMgbGVnYWN5LXRydW5rCisxNDM3MiA2MmZhOGVjODU5NWYwMmVhMmY3OGFhNWM5YWUzY2NkNjIyY2FjMDc5IGxlZ2FjeS10cnVuaworMTQzNzMgYTRlZWYwODEzZDRjYmUwYmVmODdhZGE0ZDM4NTJmOTI2MjJiZmIwYyBsZWdhY3ktdHJ1bmsKKzE0Mzc0IDk4NzZhNjRjMTgxYWFhNjE4MjdkYTc2YjVhOWNhZjEyMzg4NjIxN2YgbGVnYWN5LXRydW5rCisxNDM3NSAzNTc5OTc1NTA5ZDkzNTc5NjI5ZWEyYzE0NzY4ODY2MDZiMTI2MTc4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDM3NiA0Y2Y4NGRkZjUxMjkwNDNkMjY5MWEyNzQ1ZjlhMzk4YmJkYjA4ODIyIGxlZ2FjeS10cnVuaworMTQzNzcgM2NkZTEyYmIzZGE1ZDc0YzdiNjFjZDVlYzM5ODJlZTU5ZTFlMWVhMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzNzggMDNiZDU4ZjhjOWQwM2UxMmI5YmJhNWI0ZGYxYWUyYWU3YzcyMDExYiBsZWdhY3ktdHJ1bmsKKzE0Mzc5IGIwMzY5ZThkYWEwYmZmMzk2NTQxY2RiMGI2ZGY1OWU4OWVmYzQ2OTUgbGVnYWN5LXRydW5rCisxNDM4MCAxYTI1YmMyZDMyNzJhZGM2YTFlMTBmNDg4YzFhNzVhYTRiMTg3NTkyIGxlZ2FjeS10cnVuaworMTQzODEgMTAzM2EyNGM0YTUyOThmMGQwOTY5MTM2YmZmM2Q3Y2RlYmI1NmM1NiBsZWdhY3ktdHJ1bmsKKzE0MzgyIDM2YzY3NTBjZjIyNzU4NjNmM2VjYTE2YWUxOGY3Y2E3MTRkYjUwYjkgbGVnYWN5LXRydW5rCisxNDM4MyA4ZDViOTBlYmI5MTliYjE3Yjg5NzE5MjcxNzlkNDlmYTQxNjU2NTI4IGxlZ2FjeS10cnVuaworMTQzODQgNzA3ZDE2ZjBkMzQ1YWE4MzQzZTI4YTkzOTY1YjZiNGIwYmQyODEwOCBsZWdhY3ktdHJ1bmsKKzE0Mzg1IDdmNTBmNzFhZTdiZjI1NjE1NmY3YWY0NzFkYzlkZTNkZWQxMmRlMzcgbGVnYWN5LXRydW5rCisxNDM4NiAyODM5ZDg0Y2ZkOTY2NmQ5Njg4ODgyYzY2N2I4ZGZhNWU4NDdmMWY2IGxlZ2FjeS10cnVuaworMTQzODcgOGI2ZTJiMjM2YmFiNTIzNDQ4ZmM4YzE3M2VhOTMwYzNlYTIzZTQ0ZiBsZWdhY3ktdHJ1bmsKKzE0Mzg4IDZiOGRhZjMzN2Q2YmFiY2NmMzQ5M2U4ZDRiYmQyYzYwYWUwM2VlMTIgbGVnYWN5LXRydW5rCisxNDM4OSBjYWU4ZThlZGQzZTJhYjI5Y2EyMDhkZjY4NTMzNWI5MzBjNDc2OTNiIGxlZ2FjeS10cnVuaworMTQzOTAgZGMxOWI1OTAwZGFlYmJkZjE4NzNjOTFjYmU2Nzk0OTJjZDU2OWJlMyBsZWdhY3ktdHJ1bmsKKzE0MzkxIGE3NDIxNDczOTZlZWUwNGRiZDRlM2RkNTViZGQ1OTI5OTI2NjkzNjQgbGVnYWN5LXRydW5rCisxNDM5MiBlMmJiYzNlNDBjZGI5NjRkNTc4Y2MyYzE3MWEwNzEwNTY4ZmY4NzU4IGxlZ2FjeS10cnVuaworMTQzOTMgZWM0NmZhYTgzNTk1NjdkYTMyNDZiYTAyOGM0ZTkzZjM1ZDEyNjg5YiBsZWdhY3ktdHJ1bmsKKzE0Mzk0IGI3Y2ZjMmRiYTU4NmJiYWQxMWJkODg5ZGI0NzUxZDU4Yjk2M2U3NDAgbGVnYWN5LXRydW5rCisxNDM5NSAwNDlhYjhmMzRkZjE2NGZhNTNhMDUwYWI3ODllOGNhYjM2NTMwNDQ3IGxlZ2FjeS10cnVuaworMTQzOTYgNDFkYzI0YjIwYTE3NWE0MjQ4MzAwMDBiYTk0YzA2ODBkODZhMjFjMSBsZWdhY3ktdHJ1bmsKKzE0Mzk3IGI2ZjEyODdlMTk3MDczMWU1ZWRjODgzZWM3ZDA2N2JkNzJkNzA0ZjEgbGVnYWN5LXRydW5rCisxNDM5OCA1YWYwMTU3MTgyODVlMzU2MTRmNTIxMjU1NjVjYjdkMDBmMWQ1YjlkIGxlZ2FjeS10cnVuaworMTQzOTkgNDg2NzIxZWM5ZGQ3NDZmYzU0MGVhNTZmZGU2MzAyMmJmZDgzNDI1ZiBsZWdhY3ktdHJ1bmsKKzE0NDAwIGFlOGRmMDdkNGI2YTFiNmVkNmQ4MDY1MGM5MTliMTZiYTM1OGZjNDcgbGVnYWN5LXRydW5rCisxNDQwMSBmODNjZGNiY2ExYjA4ZjEzNjk1YjM5YWI1MzQ5YzBmMGIwOWRhNDI2IGxlZ2FjeS10cnVuaworMTQ0MDIgODYwNTI0MTgyYjljOGNhY2QxYmY1ZjU0MTFiMmMxYjU1MDhlZjEzYiBsZWdhY3ktdHJ1bmsKKzE0NDAzIDcyODQ4YzZiNjExY2VkNDA0YTAwZTQyNzNlMjhlOTU1ZjA5YTQyOTggbGVnYWN5LXRydW5rCisxNDQwNCBmZDQ4MTRiNTliNzNhNjgwZGMxNjY4NTdhZDVjYTAwNGFmYzI4ZjY0IGxlZ2FjeS10cnVuaworMTQ0MDUgN2ViMTI3YWRlMDY5NGViMjAzZmMzNzI5NjM1YTg2ODliYjI3M2JjYiBsZWdhY3ktdHJ1bmsKKzE0NDA2IGQyYWI5NTUzZjg3MTJlM2Y2Mjc0MTYxOGRiNzVkMTE0NjIxY2ZkZjAgbGVnYWN5LXRydW5rCisxNDQwNyAwOWEzYTY4Y2U5NjQwNGVhOGQ4YjM1YTMwMTdkYmQ0ZGFhNDhjYmVkIGxlZ2FjeS10cnVuaworMTQ0MDkgZTkzYTVhOTA2ZDczYTI4Zjg0ZThkMDFkZmQ0NjIxNDBhMGNiZTgwNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTAgNzMzZWM2ZTg2OWRkMzE3M2I3NGY4ZDY4NGQxZTRmMjA5MjAxMTRkOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTEgOGJjODcxMDgxNzI0Nzc4YjA0ZWVhNDhjNjU3ZjFjZThkNjYzNDg1NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTIgZjQ1ZDhiMjZiYjI0NTM0ZDk2YzE4MTBiZTg0ZGI5Y2U0OTBmYzY4YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTMgNzFlYzMxZjk3ZmZjN2UwNGUyMTliYWZmNGYwMjA1NmEzYWZlNzRjZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTQgYTRiYjM4NDNhNTgyMjMxNjU5ZTg1NDIxNTkyNTM1ZWVhYjM1Y2NiYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTUgNDU0MTk2MTE0ZmQyNDUzNTlhMTMwYTIxNjNmMzc3YjI4MTdhNWY2MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTYgY2VkOGRkNjIyN2RkMmQyYzNiNTU5NDY1Mjk3MmQ1OGE0NmIxZTA3ZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTcgNWFmM2M1Yjc0YzU0NTg5MzAxOGU3NTk1ZDlkYWY4MzA2ZWQzYTNkNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTggMjk1ZmYzYjE3NTIyYTJlYzZlOTgzMTAzOWFiODBhZTU3Mzc5NWE3MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTkgNjNjZTA5ZGY2MDdkZTE5ZjU4MTMzOTZkNTVlYjY1MTc3ZWFkOWMyOSBsZWdhY3ktdHJ1bmsKKzE0NDIwIGY1M2ZlYzBjNzQyYmY1YjQ0YjRiY2UwM2FmNDc2YWVhZWFjNGE3YTMgbGVnYWN5LXRydW5rCisxNDQyMSAyOWU3NGM3MGRlMThhZmQ1M2Q4ZTAyOGQyMWYwZmM0YzE5MDM1NWZlIGxlZ2FjeS10cnVuaworMTQ0MjIgNTBhNmFiM2ZhMDM2YTJkZDYzODY5MTQ2MzZkYWE0OTEyNWQ0MzBiZSBsZWdhY3ktdHJ1bmsKKzE0NDIzIDM2NzhkZDY4NTg2NzA1ZDliNzk3YTBiZmUzZjYzYmEwMTk2OTA5NjIgbGVnYWN5LXRydW5rCisxNDQyNCA0NDliMDc0YzMwNTFiMTcxYmQxNTY5NGE0MDNkYWJjOTZiNjdhMzUxIGxlZ2FjeS10cnVuaworMTQ0MjUgZmU5NjBhZDNkYjY1YmMyNDA5NmJkMjFjNTBiYzdmNDhlODBmYjhiYiBsZWdhY3ktdHJ1bmsKKzE0NDI2IGU3N2EyODZkMGViMTAzMGRkM2QzMWE5ZjUzMjE5YWVhZmU2NWMzNzggbGVnYWN5LXRydW5rCisxNDQyNyBjMjI4NmExYzJmMjk1ODViNGE2MmY1NWI3OTRiYWNhZjNjZWUyYTIyIGxlZ2FjeS10cnVuaworMTQ0MjggNTc3ODhkYTE2NDg4OTY5NGYyN2M5NDY3ZmMyNDBhM2IzNjI3NzgyNiBsZWdhY3ktdHJ1bmsKKzE0NDI5IGZmYmUwYTIzYTBmMTc1OGZmOTMwNjU2MGM1NDI0ZWFkZGY5Njk3NGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDMwIGJkMTYxYTkwOGIzYmRhNWEwYzQzYWIwZWM0MzJjNjliYWZlMDhlMTcgbGVnYWN5LXRydW5rCisxNDQzMSA1NzE2NzczMWQxMjQyZTM4NzI0Mjg3NzEyYWIwYmJkZTBhZjUwMzgxIGxlZ2FjeS10cnVuaworMTQ0MzIgMzAyMjg2YjE2MGE3YTI2OGUyZmNjNTg3NzRmNzIzNGE5MmZjZDZlNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MzMgOGQwYjJmZWQ3ZDU1OTgxYzJkMGQ1OWUwZjU1MzVjMDNmMjFjODUyOCBsZWdhY3ktdHJ1bmsKKzE0NDM0IGNmOGZhOTJlYmYzZDk0ZTRkYTEwZDc3NDlhZGFmNWRjOTRhZWNmZWIgbGVnYWN5LXRydW5rCisxNDQzNSBlMmI2MzM5OTFlMDEzNTQ2Nzk2ZTY0MzJmYzE5OTVlNmIyNDIzMGUzIGxlZ2FjeS10cnVuaworMTQ0MzYgZmJjMTNmYjgwMzhjYTU5NWY0ZDVjYzcyODVkZmNlODY0Mzk5NTliMiBsZWdhY3ktdHJ1bmsKKzE0NDM3IDIwY2E3MjMwYWUzZjhhOTU1ZjhmOTM3ZjU3MDhmNjA1ZTlmZDA3NDggbGVnYWN5LXRydW5rCisxNDQzOCA2ZTVlYTdkY2YxZjU1YjYzN2QzMmUwZTMzZmY3MzQ2YTM2MzhkMTdkIGxlZ2FjeS10cnVuaworMTQ0MzkgZWFlZGE0NjIxZjdkY2Q1NTRlNmM5OWQ1YjM0ZTBlZDZlNWE0NTNjNCBsZWdhY3ktdHJ1bmsKKzE0NDQwIDg0Zjc3YzE5ZDE0M2I0YjE0MmQ1ZTIyM2U0ZjA5ODYxZjUyNGFiNWIgbGVnYWN5LXRydW5rCisxNDQ0MSAwMzkwMmJjMDIxNGExNTFkNThjNDhmYzZiNjIxYjUyNDUyNjY0YjZjIGxlZ2FjeS10cnVuaworMTQ0NDIgNTBmMTI4ODNjZGQ3OWNiZjQzNzVmMzllNzcwN2NkMjFlZDk2OTRjYSBsZWdhY3ktdHJ1bmsKKzE0NDQzIDQ3NmVhYTM4ZTJkNmFhNzdlOGY1Mjk3YjUyYTY3Njg3MGI0YzkyOTcgbGVnYWN5LXRydW5rCisxNDQ0NCBiN2JjYTA1MGQ3ZGViY2ZlNjBkM2FhMDA0ODcxZDY5NjFkOTdkYjk2IGxlZ2FjeS10cnVuaworMTQ0NDUgYmYxNTAxY2Y1ZjA4MmQ5YjViZGM1YjZlNWM3MzUwMmYwOGIyODM4MCBsZWdhY3ktdHJ1bmsKKzE0NDQ2IGJlOTUwMGU2NDc3ZmQzMTYwODY1NWI3OWZiNTg0YTcyOWExMWU4ZjYgbGVnYWN5LXRydW5rCisxNDQ0NyAxOWRlNmQxOTRhY2U5ODM3Y2M2YTU1MzliMjI0YTQ1YmVlMmIyNTg4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ0OCBhYTA3YzQ3ZjZlZTg4MjgxMDQzNzNjYmViNTY1M2JjNjhhMWYxY2M3IGxlZ2FjeS10cnVuaworMTQ0NDkgYzVmYjY1MDZlZWM0MGUyOGEzNGVjNmZlNjM2YWMxZGVmMDcwNGU4MCBsZWdhY3ktdHJ1bmsKKzE0NDUwIGZjMGZjZWExNGJhMDcyM2U2ZGYyMmJiNjMzNjk0OTI0MzI1YzVlYTkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDUxIDg4NzhjMDk2ZmExOWU3MzlhZjYwNWFlNzVlNjZhMDAwYTlkNmRjNDUgbGVnYWN5LXRydW5rCisxNDQ1MiA3YzI1NWU3YTIxYzJjNTc0ODkxM2FkOGZjZTUxYmI2NzBhOTgyNTUzIGxlZ2FjeS10cnVuaworMTQ0NTMgMzY4NGQ1Yzc5MDNjM2VkZGU3NTg1NGViMmZkZTJjODc0ZTU2ZjkxNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTQgN2JlZDFmMGVjNjFhYzU2OGExZmI4YTBhMjJiMWJlOTEyMWI0N2E4MiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTUgYzZmODRjZDFmZjcwNWEwZTU0MjU4YmQzYjM4OGFkZjJmMDI0NmQwMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTYgM2I2ZDhhZDI0NjhlMzVhMjdjYzBiN2QxMTNkOWNlZGYzZWUzNGMxYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTcgNGQ1ZDVjZmE4YTUzOTMxYjEzYTBlM2IyZjg3ZDM2MGZmN2M0ODE5NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTggZWI0ODNkOWEwZjYyY2YwMjg5NWQ5NDMzZjAzODY1NDNmZDNiYjRjOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTkgNDA4MGM3YTBmMWVkNmM5ZjlkMTcxMWFmYzY1MWFkNjNiZDRkMWNhOCBsZWdhY3ktdHJ1bmsKKzE0NDYwIDBjMGJmYWRmZjc3YWNhMzQ1MWFkZDQyZGNiZTk0MjY3NzIwY2MxOGMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDYxIGIyZDRiMmUwM2M5OTUzZmI3MDhhMTBmMDk3OTU3YTdjZmQxYTE1ZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDYyIDk0YjY0MjA3OTM5OGNhNjc2NTY4NGNkNWNjN2ZkYThiMTU0MzhkOTggbGVnYWN5LXRydW5rCisxNDQ2MyA3MThkMjJkYTAwMTdmNWUyNmQ4NWU4NjY2ZDg1YWVjYjc1ZDgyODlhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NCBlMjUxMmQ0ZmQ0NzA4MzFmZTc0MzU2NzQxNzE2ZTM2YTMzYTgyOGE0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NSA2ODM0NDNkOGRhM2I5ZDQzOWU1NGQ5YWM0NzEyZDRmZjhhNDNjNDk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NiBmZTc2MzJmYmQ0ZjUzNjliN2M4YTRiN2QyMmQ0NTE2M2U3ZTViYjhhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NyA1OTRhNzZiYjlmZjAzMTU3OWY4NTZjMTY3ZmI3MGM2YzAxMDkyYzMzIGxlZ2FjeS10cnVuaworMTQ0NjggYTAzMTMwMDNjYjJkNTIwNjdkMGM2MGRjMGZjYWYyZmJhMDFmODVhNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjkgZGQwYWUxMGI3MjA2MGY1NzQ4Mjk4MzdmMmJlZDNhNDE4OTNmOTc1NSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzAgOWM1OWNiYTA0ZDg1OGFhNmE2N2U4NjlmZDEyZjg3MDBlMGE0YTNlMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzEgNTFjMjE3NDU0OTUzZjgyMzRhYzVmMzNmNWNhZTE5NTQxMzgzMjcxYyBsZWdhY3ktdHJ1bmsKKzE0NDcyIDNlNTJmM2RiZTNkY2Q5ZjM2Zjg3OGI4NTU0NjM5YjU5MDllMzYzNDQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDczIGVjZGM3ODE0ODgxMTg5NzMzMmMxYWUwZmRiMjg0NmJjZWUzNDJhY2MgbGVnYWN5LXRydW5rCisxNDQ3NCAxODlkZWU3MGQzMmEwY2IwN2Q1OGRiYjExMWQwMTVjYzFhMTQyNDcxIGxlZ2FjeS10cnVuaworMTQ0NzUgYTA0Njk4M2NiNTc2MTJkOTM4YTcwZTk0YWIxOTg5ZjIwZGFmODA1YyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzYgYmEyMTExNzQ4MDM4ZTAyODVmYjk2YzVkZjAxZmVjNDEwOGNlNDBhYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzcgMzI4N2NjZDBkZDAxMzNlZTc0ZWQzYTkzMTJkMDk1OTI3MTY4MTU1ZiBsZWdhY3ktdHJ1bmsKKzE0NDc4IGQyMjliYjc5MjY1OTAwMTAzYTlhMmU4ZmNkMDgzNDFjMjliNTI5MTUgbGVnYWN5LXRydW5rCisxNDQ3OSAxYjczMWVjZDllZDMyYmRjMjU4ZTU3ZWRjYjBhM2VhYWNkNzFjOTA5IGxlZ2FjeS10cnVuaworMTQ0ODAgMmM3MjU2ZTM5ODljZjliMDZmMjg3MjkxMGNmOTE2NGQ1NGU1NDcyNyBsZWdhY3ktdHJ1bmsKKzE0NDgxIDc5N2Q5OTZmN2M2ZGEwMDk0YmY3ZDRiOTFiMjEzMzdlZWYzOTU1MDEgbGVnYWN5LXRydW5rCisxNDQ4MiBiMGM0ZjI2MWU0NzAzMjYzNzU3M2MyYWNiOTVhZDZjMzBlMTUxYmE2IGxlZ2FjeS10cnVuaworMTQ0ODMgY2E1MzUzODY3YmUyMzMyMjBjYjBlYzdkNDMwZDM3Mzc1OTAxMmQ2MiBsZWdhY3ktdHJ1bmsKKzE0NDg0IDcyNjkyMTY3NDZkMDJmYWRkOTYzMDk2NGUwNjRhMzg0NjhlN2MzYTMgbGVnYWN5LXRydW5rCisxNDQ4NSA5MWNmYjZlNjhjYTQ3MTllYTNkMDliM2Y1ODRjNTg0NmYxZmNjNTAzIGxlZ2FjeS10cnVuaworMTQ0ODYgMzJmOTc1Y2I5ZjVmZjIyMDY1NmE0MjE2MzBkYmQ3NjQ4ZGI3NWMxYiBsZWdhY3ktdHJ1bmsKKzE0NDg3IGJmNmYxNzQ2YjEwYmEwZmZhMWE5YTBjN2U0YzI3Njc2ZDA5OGI0ZmIgbGVnYWN5LXRydW5rCisxNDQ4OCBlMTE5YzAyNTBiMjA5MTVkMzI2MzVlNTg1NGFmMDYzMTI5MjNkZDQ2IGxlZ2FjeS10cnVuaworMTQ0ODkgYzA0ZTFjNzBmMGYxMjZhMTJlNWExYWRjYjQyNmJlZTA5ZDhhODJlYiBsZWdhY3ktdHJ1bmsKKzE0NDkwIGUxMjNlNjVlZjI1NWI4NDY5YjJiMjhjMGY1MDFhN2M1ZTAwYmMzZWUgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ0OTEgMjUxNzU2OWFhMWRkNDFiOGVhMmUyM2FmODI1YjMxMDdmNGNjMDIyNCBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDQ5MiAxMDQ3MzEzY2ViNWJjOTgzMzQ5OWFlNDE4MDFjMmIzOGIyZjkwMjc2IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NDkzIDI1M2VjOTVmMzkxZTFjNWE5OWYyNjM0ZTI4NzE0MTkxYThkMjIzYmYgbGVnYWN5LXRydW5rCisxNDQ5NCBlNTY3ODBiNzQzNmE2YTU3NDI1OTYwZGVhOWJkMDBjN2EzYzRhYzUwIGxlZ2FjeS10cnVuaworMTQ0OTUgOGI3MGVhYWFkZjRiNDBkODYzNDcwYzMxMTgxM2I0MDljNDAzMThkMSBsZWdhY3ktdHJ1bmsKKzE0NDk2IGQxNWQ4ZjUxNDFhODg4ZmIxNjRhNGQzMzYwYjUwOGEzMDA0MmE1OTAgbGVnYWN5LXRydW5rCisxNDQ5NyA2Zjk3OTlhMTQ1ZTU4MmU0NjVlODg3OTQ1NjlmN2VlMTliMTQ2MmQ0IGxlZ2FjeS10cnVuaworMTQ0OTggZWMwNjJjN2MzOGE1OTgzNjcxM2EzNGNmMTBhYzliNDI5OWMxNDBhNSBsZWdhY3ktdHJ1bmsKKzE0NDk5IGI3MGRlZTcxNTM0YTZjYTgyMWI3YWJiYmY1MTA5YjcxNzVmYzM1MzUgbGVnYWN5LXRydW5rCisxNDUwMCAwY2RlNzJmNmVhY2ViMGJkNjkwYjU3OTRlMzZmYWQyNTFlZTE4NDMwIGxlZ2FjeS10cnVuaworMTQ1MDEgODliNTI4OTUzMTBjN2UyNDdiN2M1MzBiYmM2MmMxOTQ4OGE2ZWU3MiBsZWdhY3ktdHJ1bmsKKzE0NTAyIDkxOTcxZWIyMTUyN2ZhOTQxZTA4OThiOTg4Y2RmMDBiZGVhMWU4YjAgbGVnYWN5LXRydW5rCisxNDUwMyBlNjk1YjUyMjk1YTg2YTgxYjBkMmM2Nzk4ZWIyZjYxNTZkMjRmY2U0IGxlZ2FjeS10cnVuaworMTQ1MDQgNzllYTE5MDg1ZmI2YWI4YzgzYjc5ZWY2Y2YwZGZlZjc4ZDJkZGI3YiBsZWdhY3ktdHJ1bmsKKzE0NTA1IDE0NTE1MzlhMjdlY2Y0YWRlZTQ1ZDg3MmIzMmRlYTZlY2JkNDU3NWIgbGVnYWN5LXRydW5rCisxNDUwNiA3ODFmNDgyOTFhMjk2OTNmZTUwM2ZjNDJiYTMyYjgyYTJjYzkzMzlkIGxlZ2FjeS10cnVuaworMTQ1MDcgYmJiNzUxZjU1ZDA0OGViMDBmYTg0MzgzZTk2NTQxMTExZDBiNGMyMyBsZWdhY3ktdHJ1bmsKKzE0NTA4IDJkODc0MDY0N2U5OThjM2UwM2ZiYWFiOTMwZTRhYzUyYjA5NzY2MDcgbGVnYWN5LXRydW5rCisxNDUwOSA5ODZhODczNjNhNjY5MTJhM2ZmODMyNDQzN2EyMjVjNzBhNzRjYmI3IGxlZ2FjeS10cnVuaworMTQ1MTAgZTAwNTk0MzY2ZWM0Zjc0NDYzZTg3MThmOTMyM2MwMmM5ZWMxYWIzZCBsZWdhY3ktdHJ1bmsKKzE0NTExIDVlMWY0ZjdkNzlhNzU0MDAxYTM0OTRlZTYzZGRhYTk5ZmQxOWJiN2YgbGVnYWN5LXRydW5rCisxNDUxMiA0MWI4NWEyNmNlZWRhYTRlZmM3ZWYyZDVlMWU5ZDVhMTAzZjdkOTE0IGxlZ2FjeS10cnVuaworMTQ1MTMgY2EzNTBhNzE5ODg3MzNlZDc1N2VhZjE3OGQ3ZGU5NDg1MTY0MWRlZCBsZWdhY3ktdHJ1bmsKKzE0NTE0IDJmYTg5ZTY1N2E0ZWRkZWYzMTA3OTQ1NzY0MTJkM2YwYzM1OTMyZDAgbGVnYWN5LXRydW5rCisxNDUxNSAwNjllYTU3MzZmZjYwN2E4MWYzODIzNGI5NmNiNTA5ZTNiMmRkNDI0IGxlZ2FjeS10cnVuaworMTQ1MTYgMDYxMDRiY2YwNmE2NGZiMDgxOTA2NjJkNzcwNjliNDViZDY4YTIwNyBsZWdhY3ktdHJ1bmsKKzE0NTE3IGQ3ZTY2ZWYzNDVkMDdiOWNjYmE5Y2M0MzRkNTY3NGNkN2ZhZDBjYjggbGVnYWN5LXRydW5rCisxNDUxOCAzMmM1OWUyODg5YzRjYzRhYTAxODZjMDI2YzM2NjcxNTBhZGJkYTExIGxlZ2FjeS10cnVuaworMTQ1MTkgZDdlY2E1YjA5NjBhYmIwMjFiNDgxZWUxMmE1Y2EzOTg3OThlNzcwMiBsZWdhY3ktdHJ1bmsKKzE0NTIwIDJmZTk1NjhiZGVmMmI5MWIxYjYwNzgxNmM5OTEyZDJmNzIxOTA5NDcgbGVnYWN5LXRydW5rCisxNDUyMSBjOTBhYzY5ODIxNGRiNzMwYjU0N2M1ZmRiZTU1YjViMTVhODU4MGQzIGxlZ2FjeS10cnVuaworMTQ1MjIgNDQ0Yjc3Y2VlYmU2OTMxMGUyY2U3YzI2ZWRhYzIzYjk5ZDZhYzliOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1MjMgYjkxZDg0OGM5YTFhZDRlYjQzZGE2ZTVkY2U2N2Q4MjJmNGJmYzRjZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1MjQgNzE0MjMyMDlkN2ZjMmM1MWY3ZTgxMGFmM2YzYTA3NzU3NDUwYWJmZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1MjUgN2VkMTA0YzQwZGIzMzY1OTllMjVmMDU4NjFkZDU0ODgzYTNjMzVhNSBsZWdhY3ktdHJ1bmsKKzE0NTI2IGNhYjA3MWU5MmYzMjFmNTJhYzZiMzJjOTk3MTY3OWJjYzRhN2E1YmIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI3IDUyYTNiNDY0NTc4ZjJlODcyMzRmMDdkZDRhNDY2MTc4ZTZjZTBhYjggbGVnYWN5LXRydW5rCisxNDUyOCAyODYzMDNmMDA1NDZiY2VmNTA3NzY3Yjk5NmRhYjg0NGMwYmUxY2ZkIGxlZ2FjeS10cnVuaworMTQ1MjkgYzI3ZDNlOGM0NWM0NjY2N2NjYWQ5OGQ1MmJjZDEzNWNhODhjM2NjYSBsZWdhY3ktdHJ1bmsKKzE0NTMwIDVkMDg3OWUxZmYzN2M1N2VhMDIyYzNmZWFjNGQzZTUzOGI3M2Y4NTYgbGVnYWN5LXRydW5rCisxNDUzMSAzZDczZmZjMTA1ZDBhNDhjOThkY2RiYTlmZTUwZmEyYzRlZDNlY2M3IGxlZ2FjeS10cnVuaworMTQ1MzIgYTdkNjA5ZWE5MGNjNjgyNjY0MGViYzU3MTRmZjJjZWM1M2ZkZmM0NSBsZWdhY3ktdHJ1bmsKKzE0NTMzIGQyNzY4NGFiMjE1YTZhNWFjYjQwNzQ3NDk5ZWE0OWQyZDBmMjgwMWIgbGVnYWN5LXRydW5rCisxNDUzNCBlZmQ2MzE1YWU2NzhkNjJlNTU5NzQ1M2FmMmJlYWZiMjc1MTJkYjFhIGxlZ2FjeS10cnVuaworMTQ1MzUgZGM2NWM1ZjZhZDdjMTRjYTQ0NjlmNmVkMjhmZjEzNGNiMDllYzA4NyBsZWdhY3ktdHJ1bmsKKzE0NTM2IGQyNGFkNTUwMzgzMWE3ZDk4MTk1MDc5YTAyNjY1NDBkZTZiODhjOTUgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ1MzcgOWJlZDMzNTk5YzMzOWMxNWEyNmYxMGIzOWUwMzgzZjkyYzIyY2M1NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDUzOCA5YzkzZjEwZGNkNjk2OGNkOTA0Y2M2NGRkYjljMzU5YmM5YmY5OTk5IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NTM5IDhlZTc1OWQ3OTk2NDZlZDExNDIyZmVlMWZkMjA3MzdiMmVlZjM2NWYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTQwIDBjNDcyOWUzOGMzZGI4ZjQ4ZDBkZGU4MjUyZDVjOWIyOWYyZjlhMDAgbGVnYWN5LXRydW5rCisxNDU0MSA1NGNmM2JiM2I4YjdjZjRjNzEwMWMxNzIzNjkxNGU5ODQ0Y2ZkZGY4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0MiAxMGZiZmQwN2YzODk0MWIzZGIzYzA2ZTVkMzJlZGMwODM1MjU2YWU1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0MyBhMzhmYmNiN2QzMzU2ODBmNmE1OTFhYWQxNGViMTMyOWM1YmVlOTBkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0NCBlMzk5YWJjYzVkZTYzMGVhODU1Y2RiNjMwNzg1MzExYWEwYjZjMzc4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0NSA3NThhODdmNGNiMmM5ZThkOGI2Nzk0ODNlODM4OWJhNDY1N2RhYmViIGxlZ2FjeS10cnVuaworMTQ1NDYgMzliYjAxNzU1MDc5MDk3MjNjMjQzMDhhYjY3ZDM2ZjE5YmI3MTEwNyBsZWdhY3ktdHJ1bmsKKzE0NTQ3IDI3MGExMTQ4OGM2YzVjM2QyZWM5OGU1MTU1ZTYxYzM0M2NkZGQ2ZWIgbGVnYWN5LXRydW5rCisxNDU0OCA4MWYxMDY5ZTE1NTg2OTkzOWM3M2QxMjM5NmMzNWMxMWFkM2RiZjAwIGxlZ2FjeS10cnVuaworMTQ1NDkgYTQ1NzBmNDA5ODcxMGY0ZmQ3ZWMzMTFiZGNlYTg4ZWM0MGYwOTk1NSBsZWdhY3ktdHJ1bmsKKzE0NTUwIDFhNDliNjE0NGYwZGUzMjViNTk3OGQxMmM2NDgzZTJlMDNjZDAwYzYgbGVnYWN5LXRydW5rCisxNDU1MSA5NDMyZDhiMTVjOTcxNGZkMjc4NGM3MGM3MWNhODZiMjRmOTM5NmQxIGxlZ2FjeS10cnVuaworMTQ1NTIgZTgyYTk2MzMwNzhiYzkyNTVmOGMzZDU1MjU0ZWZhNDc2ZDI5NWYyOCBsZWdhY3ktdHJ1bmsKKzE0NTUzIDAwMTY2MzNmYmQzMjBhMWM1ODY3ZDM1OTJhZDY0NmFhMTU0NTAwZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU0IDIzMTA4Y2NlMTY5YjQ1ZGZiYjNlZGFjOTI2NWM3YmUwMjY5OGQzYjQgbGVnYWN5LXRydW5rCisxNDU1NSBlZjhiMDYyYjU3OTgwNDRmZjMzMzRmYWRkMTBhNzU1MDg4M2NkNWVhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU1NiA2MTBkN2Q2NDI5MTdlNWZjYmQxM2I2NDY3OWNlMDI0N2M3NzU1MWIyIGxlZ2FjeS10cnVuaworMTQ1NTcgNzg0MmVjZjViNDI0ODlmMmIyMzM4ZTJmZjM4NmI5ZTFjNzUwMDBjOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTggY2ZjZmFhMzk1MGQ2NDJjOWEyMGIzMjhhNDNkNjNmNjgzODA2YTNlMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTkgNThkMWU3NzkxOTgwNWI4N2U3ZTAxYTY0MGZiMDYzZDhiZDIxNmRjNiBsZWdhY3ktdHJ1bmsKKzE0NTYwIGNkNTdmNzc2YzFkZjg1MTVmNzc4YTAxNTE3YmI3NGI5OTNjMzBkYTkgbGVnYWN5LXRydW5rCisxNDU2MSAyODAyZmI1MmU5OWJjNzlhNjViZDAzNGYxZTY3MzEwOGJhOWEwZjk2IGxlZ2FjeS10cnVuaworMTQ1NjIgMDE3ZTU5MmMwZmQyYzNlODUzYzc0MzkwODE3ZTMxNjc2MzU5NjViZCBsZWdhY3ktdHJ1bmsKKzE0NTYzIDQ2NzliY2VmN2E0ZjY0NWFiMzllZjhiNWIxODIxM2FkZTE1MGUwNzAgbGVnYWN5LXRydW5rCisxNDU2NCA3MjNlZmNkY2NlMWJkYTVkMDZiMmJhZmM5MjNiOTVhMDU2OTM0M2I3IGxlZ2FjeS10cnVuaworMTQ1NjUgNjJlYmU4YzcxNTY1OWIxZmQyNTk5YTlkNmMyZDMwN2RjNzI3YmZjZiBsZWdhY3ktdHJ1bmsKKzE0NTY2IDAxZDViN2QxMWZjMTI4ZTJjZTE1YjAyMzU4MjFiNDMxZWM4N2E4ZjkgbGVnYWN5LXRydW5rCisxNDU2NyA2OTMyZTE4YWZmOThhZDdmMTZmMDlkOTNkYjQ3MGNmZmFhYmM4OTUzIGxlZ2FjeS10cnVuaworMTQ1NjggZjg1MThmMDYwYmVkZjhmOGY1Y2ZlZWViZmM2YThjMDk2ZGFlMDM1ZCBsZWdhY3ktdHJ1bmsKKzE0NTY5IGE0MGMyZmVjZDUyNjlmM2FlODI2MTM4ODNlZGFiNjI4YWFiMzA4NDIgbGVnYWN5LXRydW5rCisxNDU3MCAwYTRiYWNjYmU5ZmU5MzRkMDFhYTNiZTA4NWI0NDM3MWE0YzdkYmMwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3MSA0OWIxMDliNDUwZGE3ZDc2YTkxMzIwMTFiMjAwNzFjZDU1NDk4Yzk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3MiBhYjFlZjFhYTQwMmVhNTIzNmJlMjVhZjQwNWI3OTExNjRhYmM3YzUwIGxlZ2FjeS10cnVuaworMTQ1NzMgYjNjYTNjYWEzNzRjNTE4YmI1OGRjNWI4OGRjNGU2YTg3MTFlZGRlNSBsZWdhY3ktdHJ1bmsKKzE0NTc0IDExYWUxZWZlYzg3MWEzN2EwY2Y3ZTU5YzU2OTNkZTA3MGIzNjI4ZDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTc1IGQ3NGUxMmQ0NjU4MGQzN2IxNzU1OTI1ZTVjZjQyZjU5NDYwYzY0ZGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTc2IDAwYTllZjc0NDdiYWE1MzkzMjU5ZjhmNzNkN2E3NTIzMjNhYmI3ZDIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTc3IDg1NWM3OGY1YjVkZGQ0ZmM1M2FmNmIyOGE4NWI1Y2FjZTllN2ZhZTMgbGVnYWN5LXRydW5rCisxNDU3OCA5OTQ4ZmQ1MzJkM2I0Y2IyYTg0MmRmYTc2ZWI5ZWY5ZGY4N2Y5NjgwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3OSBiOTc1YTA1NmRlYjY2NjVjN2Q5YjgzMTVjNGZiZTY3MjE0OGViNWFkIGxlZ2FjeS10cnVuaworMTQ1ODAgMGVjYTU2N2U1MzJjMjg0YjZmNWQzYWZjZTExMWNkZTY5NjkwNTEyMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1ODEgZmU0ODVhNWQwNDNmYzdiYjdmNWI1NDc5MTQ3YjFkNGJiODE1NDRmMiBsZWdhY3ktdHJ1bmsKKzE0NTgyIGMwZjE4ZTExZjRlZjMyOTIwZDg1YmRhZWU3OGFmNzM3MDY2OGViMjQgbGVnYWN5LXRydW5rCisxNDU4MyBjMTY3MTFmZGQ5NzI0NDMzYzdjOTkwMTNiZjRlMzIyNDBhYzNkZDIwIGxlZ2FjeS10cnVuaworMTQ1ODQgMWM4YTlmYWEzNTAxZWM0NzI5MWZmYjVmYzhlMjY2NTMxYzkxMmI0YiBsZWdhY3ktdHJ1bmsKKzE0NTg1IGM5ZDg3YTdhNzBiMGEyOTMyNDkzMzQ1YmIzYTMzYTVhYjEwMTEzNzAgbGVnYWN5LXRydW5rCisxNDU4NiBhNmU1ZjAyNzRlNTE3MmM1ZDA4ZTMyYTIzMmU2NWVlN2FjODVhMWQwIGxlZ2FjeS10cnVuaworMTQ1ODcgNzkyMmQwODQyNmNhYWU3YTNiN2QxODU1YzAxMzU1NzBlOTY3MzNkZiBsZWdhY3ktdHJ1bmsKKzE0NTg4IGQxMzU5ODMxZTVmMjY0YzlhYjM4ODg5YTMyNTZiZmIzZGQyNjg5OWUgbGVnYWN5LXRydW5rCisxNDU4OSA1YjAzYzUyNzgzMTdkNjQ5YTQwYjRhZDQ5ODBkN2ZkZmQ2NTJjOTBlIGxlZ2FjeS10cnVuaworMTQ1OTAgMTVjYmI1N2NhNzQ3MjU3ZGUwZmI1YzA0ZDA2OTkxYTQ5ZDA1MThkMCBsZWdhY3ktdHJ1bmsKKzE0NTkxIGE4NTFlZjMyNmQ5MzJmNzE0NzhkOGRhNmMyZDJjZGNkMTJiNjRkOTIgbGVnYWN5LXRydW5rCisxNDU5MiA3Y2I0OTFlMzk5ZTYxOWY0ZTdmNTU5NWFjNDBkZjM3N2E3Nzc2ZmFhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU5MyAyOWM1YzU0MTVkYTcxZGVjYmViY2Q4MjViMzA4YTNhOTMwNmRjNTM0IGxlZ2FjeS10cnVuaworMTQ1OTQgZjgyYjkyM2E3YTk2YzJhZjVkNDBkZjM5YmFkNGIxMDUwNWU4ZDVkZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTUgY2UyNjk4ZDhkZmViZjZkODg1MmE0NjBkNTJiNWE0NjM0NTRmOTYyZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTYgMDZmYjJkZDM4ZDdkMjk5OTBhY2I3MmNmMjY3ODNhM2NmMThiNGUwYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTcgY2ZlYzExYjRhOGE3MmNiZThhNzJmNzA3YTMwMGZkODMwYTZmOTE5MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTggYWEwZDBiMWYxYmUzZTExYjYyYTE5MDJkY2Q3NDFjYjViMmNhMzA1NyBsZWdhY3ktdHJ1bmsKKzE0NTk5IDhjYzQ0MjhjN2JhZDkxZTY0ZmQ5YTI0ZThkNTAyZmFiYmU1NTFmM2IgbGVnYWN5LXRydW5rCisxNDYwMCBkMDk3YmM1YWE3ZjM0NDQ0ZTVmNGU0OTk2ZTJkYmI5YTIwMjA2OGJjIGxlZ2FjeS10cnVuaworMTQ2MDEgNGI4YmM5YWI4MTc1NTU2ZjllODc5MzhlOGNkYmI3OWM2ZWUzN2M0MiBsZWdhY3ktdHJ1bmsKKzE0NjAyIDJhNjI4MDY3OTY5YjkzY2E1NjA0YTNiN2ZmMmY0MjkzMmFmOWRmY2YgbGVnYWN5LXRydW5rCisxNDYwMyBhNDY5YWE4YjMzMmE1ODQ2MzU1NzcxZWQxZTg4OWE5OWEwNjE2YmZjIGxlZ2FjeS10cnVuaworMTQ2MDQgNzliNmE2YTg4MmQ5ZThkNTcxMzcwOTFkYWFhZDcwNmZmYWEzZWE3OCBsZWdhY3ktdHJ1bmsKKzE0NjA1IGJkYjVmNmE1MjRiNWUzZjY0MTc5MTk3OTg4M2MyNWRiZTkwMTc1NDggbGVnYWN5LXRydW5rCisxNDYwNiA5ZDhmNDdmODQ0N2Y5NzYyMDEzOGQxNGZhY2Y2ZGEyZDQ3ZGJlMDMxIGxlZ2FjeS10cnVuaworMTQ2MDcgMWI1NGIyMTM0NmQyNGZhMjQ2OTBhNzYyY2VmMWI3Y2JhMjhkYjMwZiBsZWdhY3ktdHJ1bmsKKzE0NjA4IGFlZjVhN2M2MjI5MWViNjllZTQzOGU4N2MxYmFhMzJjMjRiZGYyNTcgbGVnYWN5LXRydW5rCisxNDYwOSAyNWFkYzVjOGRkNjgwMDRlM2ZmMTc4MGQ2MDAzYzBhMWE5MTkyMWNlIGxlZ2FjeS10cnVuaworMTQ2MTAgNjhlMGVmMDUyODE1MDU4ZjAyMjU0NzhiNDkzOWQyZTk2OWVkMjgwOSBsZWdhY3ktdHJ1bmsKKzE0NjExIDdiZDk3YzNkZDQzMmZkOTQ1OThkOGNjZGM1ZGQzMjRmNjE2MGY5YTggbGVnYWN5LXRydW5rCisxNDYxMiBjOTQ1NzJhNTA5OTUyMzE4ZWExMzg4MzE0MDZhOGQ1OGRjNGJmZGI0IGxlZ2FjeS10cnVuaworMTQ2MTMgYzBkMzZmOTE2YWZkOGNhNzAxZGQ1NjU4OGQ2NDFmOTJjYWNkYWU0MSBsZWdhY3ktdHJ1bmsKKzE0NjE0IGVmOThlZTZhZWI0MmFlMDFlNGNjMGY2OGY5NjUzYmUxMWFhMzcyZjAgbGVnYWN5LXRydW5rCisxNDYxNSAwNDU2YThjMmViZjdjMmE5NzBmMTY3MzYxNjJiYjMxNGJkMTkwMjBhIGxlZ2FjeS10cnVuaworMTQ2MTYgNzNkZmJlZTE1MDI3MWYzYTdhMGJkZjgxOTIzZjc2OWNiYTYwODUxNyBsZWdhY3ktdHJ1bmsKKzE0NjE3IGRlODQwNDU3M2ZlNTEyYzdjZGE2OWNjNjA0Y2M4YzkzYzE1MTExMjQgbGVnYWN5LXRydW5rCisxNDYxOCBmNmQxZDBmZGMxYzdjNzIwMWI0OTBhYzc1OTYwNzg0MDc3MzdhYzY3IGxlZ2FjeS10cnVuaworMTQ2MTkgNDIxYjE2MjBmNTgyZjlhN2I4M2ZjM2I5MGNhYThlZjk0OWZiMzI1NCBsZWdhY3ktdHJ1bmsKKzE0NjIwIDgwMjM3MGE2MGVmN2UzZDcxZjRhYTdkYmJjYjRmZTZiOTY3NThhNGYgbGVnYWN5LXRydW5rCisxNDYyMSA3MzRmM2MwN2E2YmI5ZjNkNWNjMjc5MjJlZDA3MmM2OTIwZTY5MDFiIGxlZ2FjeS10cnVuaworMTQ2MjIgMWE1OGU2ZmMzYTk1NGRmNzlmODVmMzhkMTMwMzM4MDEyNDg1NTk1NSBsZWdhY3ktdHJ1bmsKKzE0NjIzIDgyNjY5MGJhMWFlNjliOGI1ODRlNGY2OTQ3ZDZmZWRjNTVlMzNlMjIgbGVnYWN5LXRydW5rCisxNDYyNCAyYTQwZTljYWU4NTlkY2EwNDg4ZmRjZGU4MTY4YzhmNTA5ODVjMjJkIGxlZ2FjeS10cnVuaworMTQ2MjUgZDA0MDQ3ODBmMDNiZjRlMmYyYTMyMDhjZWVhNmFhYWRiMzRkNjJiMiBsZWdhY3ktdHJ1bmsKKzE0NjI2IDVlNDhkODNjMGZjZTE3MjA0MTliYWVlNjM3YTNkMDQ3NzMzNTkwZDYgbGVnYWN5LXRydW5rCisxNDYyNyBhMzk5MmE3ODllMmU3YmIxNTdlN2IyOThhNTdlODc4YTcxZWM0NTc5IGxlZ2FjeS10cnVuaworMTQ2MjggNWIzM2ZjYTAyYjc4NWJiNmRiNzAxNWMxMTU5MTcwMmQ1OGQ2MDU0ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2MjkgYWRkZWExMTU3YWE3ZjkwNzI5OGJhYjllOTk3MDUyMjRiMjY1ZGNlMSBsZWdhY3ktdHJ1bmsKKzE0NjMwIGUxMDUxNWU3ZDM1NmNjYmE3ZDQ3NDE2NGMxN2E0ZjUzODUxODYzNDMgbGVnYWN5LXRydW5rCisxNDYzMSBmOWRiMzY1NGExZmQwODc2NmEwNTZlMzYwMzcwZWE1ZjljN2UwMGFkIGxlZ2FjeS10cnVuaworMTQ2MzIgMzk4YTQ1OTllZWUzM2NlOWI3MzRjM2NlOWE4NDkzNDFmYzYzYmNkYiBsZWdhY3ktdHJ1bmsKKzE0NjM0IDZlM2M4MWJkODI5MWVkZWE3ZjdmNGQ3NjA0NTRlZGU1MjY1NDJlYmMgbGVnYWN5LXRydW5rCisxNDYzNSAyM2ZkN2QxMDA2NGViMTYyMWZjZWNiZmEwMmYyYjAxNWRhOWM3NmRlIGxlZ2FjeS10cnVuaworMTQ2MzYgZDQ2NjJkMzgxNzQ4YWM2Y2E2YjU1MGFlMzEyNjlmNTFkZDczNWNhMyBsZWdhY3ktdHJ1bmsKKzE0NjM3IGY5MTQxYmViZWQ0OGY0ZTU5YTExZGIxMmNlNjBjYTU0NWJhMGUyNWEgbGVnYWN5LXRydW5rCisxNDYzOCAzZTVmYmVmOWIxZjUxY2E2MTRhZWM3M2UzMzQyY2ZkYzdhYjVhYjk4IGxlZ2FjeS10cnVuaworMTQ2MzkgMjRjMTg3YjkyNzczODQ4NmFmMGFiNDRlMDZkZDAyM2ZkMWM3OTcxMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2NDAgNzQxMDY5MDkyODMxOWJkODEyZDZjMjBiMjQ2YjQ3M2I4NDk1OGU5OCBsZWdhY3ktdHJ1bmsKKzE0NjQxIDlkNTNmYzgwNDNiYTc5ZjU0YTI5NjAxYjQ0MmQ2ZmQxMmU2NTIwNzcgbGVnYWN5LXRydW5rCisxNDY0MiBiZTk4ZTA1NWUzOWQ5OTE0NTdkZDY3Yzg4OGZiYWVhNDUxOWE0OTYwIGxlZ2FjeS10cnVuaworMTQ2NDMgMjQxOTljMWI5MTgyYTM2Y2M3OTNjMjY0NDVlYTBiZWU2M2JlOWMwNyBsZWdhY3ktdHJ1bmsKKzE0NjQ0IDQ0MTJjN2EzMjQ5N2Y5MGMyOTcxYjJkMWQwYTFhMGM3NWVlMTBhYWUgbGVnYWN5LXRydW5rCisxNDY0NSA5ZjI2MWU5NGIyYjI1YjA0MWRiZmZhM2ViMmU1MzUyZjc0NDE1NTgxIGxlZ2FjeS10cnVuaworMTQ2NDYgNTMwNWY5YjAxZmM3NTQ1NzgwMmIxNzE2MjdmNGY5OGRiZTZmOTE3NCBsZWdhY3ktdHJ1bmsKKzE0NjQ3IDUwNzgzM2IxODIxM2I3MGI3YzIyM2ViOTY4NjM3ZDUyYWE1NTU5NzUgbGVnYWN5LXRydW5rCisxNDY0OCAxM2JjNjhmYWViNjU1YjY2ZGI2NTNkNDYxZGU4MGZjNzBhMTdmNjExIGxlZ2FjeS10cnVuaworMTQ2NDkgNzRiNzIxM2ZiNjA5MjBhMDFlNDIxYzk0NTBjZTZlNDY5NmVmNDBmYiBsZWdhY3ktdHJ1bmsKKzE0NjUwIGY3NmJmNjFjYjE5YzRhNzgzYWZhM2Y3ODk4NzBhYTVlOTE1NjcxNTQgbGVnYWN5LXRydW5rCisxNDY1MSA1NzQyODNkYjJiM2RkZGVmMzY5ZGZkMDM2OWNlOGE4OGUyYjAyZDI0IGxlZ2FjeS10cnVuaworMTQ2NTIgZDBlMDZlZmIzMTY1MWYwZTRjZGNiNDNmNjA3ODc3NTU4MTlhMGFhMyBsZWdhY3ktdHJ1bmsKKzE0NjUzIDhiZGMyNWQyMjkyNWMyMWExMzZjNTMzMTAxNzhlOTEzZGJlMDY2OTQgbGVnYWN5LXRydW5rCisxNDY1NCAyODAwM2FmYTFhMmYwOTFmMzJmZmYzM2FiYjE3NWEyZjJiMjkwODUzIGxlZ2FjeS10cnVuaworMTQ2NTUgODc2ZjM1ODI4ZTg3MGEyZjJhNzI4ODZmMzEyNTlmMmE5ZGQ4ZDI0ZiBsZWdhY3ktdHJ1bmsKKzE0NjU2IDUxMzM1NGQ4N2E4NWU3N2UzMTEzOTdlZThmOTA0NmIzNTk5Y2YwZmQgbGVnYWN5LXRydW5rCisxNDY1NyA4Yjg4ZTFiYzBlMWI0YjBjODJlYzQyM2FmYWM0ZTMxZGNlZWNiMGQ2IGxlZ2FjeS10cnVuaworMTQ2NTggM2M2MjBmNjVlYWE1YjVlYjY1YjRlNmZjNjFlMTI5MWYzZDdkNmJjMSBsZWdhY3ktdHJ1bmsKKzE0NjU5IDMwZDkyNDhlMTFiYmIyMzFmNzM4NzQzZjNjMmQxZTU1YjIwNDQ5MTEgbGVnYWN5LXRydW5rCisxNDY2MCBhOWI1YTMxZmY4Y2IxOTEzNzA3NWY5M2FhN2ZhOWI1NmJmZjJiNWE1IGxlZ2FjeS10cnVuaworMTQ2NjEgZDdhNGE1YWUyZGFlYzQ3ZDY3NWYyNjZjMzY2MjZkYjM4OTAwOTRmMCBsZWdhY3ktdHJ1bmsKKzE0NjYyIGExMzI5NGFlZjAyZWE0ZmViMzRiNTZlOGY4Zjg4NTVlZTAxMDQ1YzcgbGVnYWN5LXRydW5rCisxNDY2MyA0YzdiYzg4NWY0MjBhZmE1OGE2NjZmOTQxNmJhMjQwMjcxN2JiNTkxIGxlZ2FjeS10cnVuaworMTQ2NjQgZWZiM2E0NWM2NmYzMWFjODlhODRkN2JjNDc5MzM0YWQ4ZWRjOTI0ZiBsZWdhY3ktdHJ1bmsKKzE0NjY1IDg4MjI1ZGYzNWVmYmFjNDZiYjViYzE3NjVmZGMyOGY3NDE5NDc3Y2YgbGVnYWN5LXRydW5rCisxNDY2NiAzMzAzYTViYWM2ZGRkNDIwMTMzODAxZTY5NWM0Y2NiYTgwMWYzYzAwIGxlZ2FjeS10cnVuaworMTQ2NjcgMGZkYWMxZjU0ZWM4MTAzNTExNWVmNmZkNzdjMDA0YTdjNWQwNmVmZiBsZWdhY3ktdHJ1bmsKKzE0NjY4IDkzZGFjNDA1MzE4OWMwZjU1MGJmNTY5YTZmODJmOTZkNzI2MTUwMTMgbGVnYWN5LXRydW5rCisxNDY2OSBlZTY0OTJhNWZkZWU2NmE4MzQyMTViMTZhYmM4ODYyOTU1MTVkYmRiIGxlZ2FjeS10cnVuaworMTQ2NzAgZjEwNDI1MWI2ZjhmMzdlZjVmYjAwMTE0OGJlZTYxNzcxM2QzZjA5MiBsZWdhY3ktdHJ1bmsKKzE0NjcxIDgxNzAyYTczNTRlY2I1MGNlMDQ2MzM0ZGQwOWQ4YmJlOWRlZDVmOGMgbGVnYWN5LXRydW5rCisxNDY3MiAxNzg5ZmFlNWYwNzQxYTAzYzlkNDU2YjRlM2MzNmQ0NjczZjZjNjc0IGxlZ2FjeS10cnVuaworMTQ2NzMgYjVlODEyNzFjNGM4YmJjYzVhZjU2YzVmNTI5NWY2ZTk5MmMzMThlZiBsZWdhY3ktdHJ1bmsKKzE0Njc0IDRiOGIyZTI4YmUzNDkyNTk4ZmM5MWYxZDlhYWJkZWZmNTQ1YmRjNzkgbGVnYWN5LXRydW5rCisxNDY3NSA5NmZhNDZkMzQ4OThhY2RkN2JjNmFmYWEzYzE5OTExM2U2MzNlZjBiIGxlZ2FjeS10cnVuaworMTQ2NzYgMzI2MjdkY2FmYWJmZjcyZjUzYzU3NjRiZjk0NGQ2MDc0NDJiYmE4MCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2NzcgMjNkYzg5YWQwOTk2ZTg5NTYxYjQwZTM4NWEwM2M1OTNmMWJkNTRmOSBsZWdhY3ktdHJ1bmsKKzE0Njc4IDM4MzEwZWIwNjU5ZTNhNGM0MTczNWM4ZmQ5MzM3NGQ5OTlmMjI1MjYgbGVnYWN5LXRydW5rCisxNDY3OSBmOTRkMTBiNmQwZjRkMTMzNjZkNmM3ZWZjMjBjNmIzZTc4MTFiNzE5IGxlZ2FjeS10cnVuaworMTQ2ODAgYzk0MjQ3YjVjMzU1NTc4ZjQ2MjZkM2Y2N2I5NWQ5ZTkwMTkzMmU3MSBsZWdhY3ktdHJ1bmsKKzE0NjgxIDg2NTFmMmRhN2M0Yzg3MDFlNWQ5MjkzZjRiNjViOWM1ZmI3NWY5ZDkgbGVnYWN5LXRydW5rCisxNDY4MiBlMzYyZjMyNjA0OGNhMmQxZDkyZjExMTM0MzhiZTk2MWI5ZjNmMmVkIGxlZ2FjeS10cnVuaworMTQ2ODMgZDUwZmEzNjcwYjY2YTE3ZjU2MzE1OWYyMGNkNTk1OWI5NGRjZmVkMyBsZWdhY3ktdHJ1bmsKKzE0Njg0IDE0OGRiNjMyMjE2MWZlMjg0OTZhNDA2NmE5ZjcxYzZkYWQzZjdjZmQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg1IDAxZmE1Y2E5ODgxM2I0NTVjODBjMDU4ZjBhODlmOTMxNmFjYjZmNTkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg2IDc1ZDZjN2MzZWM1NTAwZTQ2YTMxYWU1MzkxZDE1NmNmZGY2ODMzZGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg3IDc2MTBlZWQzZTAzMzI4M2ZmY2E5YWM1MTVkMzM4N2ViODliODk5YzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg4IGY3OGY0NzcyNTY4ZWM2MWNhZjFjZTE5NDZmMzFmMThkMzZhYmNjYmMgbGVnYWN5LXRydW5rCisxNDY4OSA3NGQ5N2Q3OTVjNGVlNzNjZDg3NzM5NDE2NDMzNWQ0NTMwYmZlZWJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5MCAzZjU2Y2RhM2QyZmM0MTcxMzhhYTBlMzRmYjA1N2ViZDUzY2U0ZGZjIGxlZ2FjeS10cnVuaworMTQ2OTEgYzc0NTg5MjNmNmEyZDMzMDM0NWQxMTA5ZWFjMmFkOTg4M2VmZTU0MSBsZWdhY3ktdHJ1bmsKKzE0NjkzIGYyN2NjMTczNTE3ZTM0MmMzMTI3ZjIwMDdkZjM5ZjhjOTcwOThkMTAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk0IDBmNmVhYjAzZjI4ODAxYjYzMTRmNDlhOWIxYmViOGYxOWFmNTJhYWYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk1IDM2NmMxZTk4ZjcwNzhiZjgwYzQxYzY1YTVlMDUxMWFkNDZiZGU4MDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk2IDBhNzA2MDcyZDUwYWYwZjZjZjc5OTE4MjIxYTQ2YTFjYmJmNmY1MjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk3IDFjOTM1Y2EzNzg1YzhkODA1ODAyNDY4ZjNlMzAyODlmYmI3ZDdiYWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk4IDQzOGE0NDBiYjA4NWU1ZTk1MmM5ZjUxM2FjMTAxYWYzZGEyNDk2YWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk5IDNmODVjNGI5OWQzMzIyMDViNTVkYzM3NzgyOWI4NTQ4NDU2N2ZjOWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAwIGZhZjBjOWU5YjkyZmViMzkzZWFlMTVjMmE2M2RhNGNlNjE5NTJhYTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAxIGYyMzg2NGU0YWQyY2M1NTEyNGMxY2RhMGNjODUyYjdhMzgxYzk0N2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAyIGU1N2NlNGRmNTcwN2E3MmZhNTIyMTExMDUxNjkxNDY2MGUwMjcxOGYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAzIDRmYmY2OTYyMDg3ZDU4ZjNiMTBkOThjZmEyY2NiNWU3Zjc4ZWVkYjUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA0IGJkYWI5YzU1ZjE2ODI5N2VjZDA4ZDJmNmQ2YTVmMzVlMDI1YzBiMzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA1IGEzM2YyYTNkYjg5MjdlYjI1NDIyZWEyNmUyZTlkM2VmMmM2N2RkMmMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA2IDJlYWFlZDc1ODlhZTVlMGQ5Njk5YmZjMjMwNWYwYThhN2E2ZDU2MzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA3IDNhZjNiMWViNjdmZTE0YzFhOTAwMGZmNGRjYWE0OGEyODM5NTRkMjcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA4IDI2MTJiOTZiOTlhYzQ0ZmJmNzA0M2UyMTY2MzA5YzhhMjhmYTA2NWEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA5IDI4YzhjZTY2NWIwMzIwZGU5N2JhMzNhZDViMzczNWM3NjQyMTVhNWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzEwIGI1OGYyZjBjZDU1YjNlNDI4MTliNmMwZDRkMjkyNmY2MGM0OTIwNDYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzExIDk2MzQ4YmViOTM4NDM4OWZiZTdmMmQ5MDVkNWIzYmJhMjYzMzJiZmYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzEyIDE2OWFkZDZhNGRjMWIwYTIyOTYzMTk0ZGEzNmE5MTg0MGNkNzU2OTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzEzIDUwMDBlYWYwNThkYjc4Y2Q3ODQyNmJjMjJhNjYwOWFmNmYwZDQ4ZjcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzE0IDcwM2RhN2U5NGIyMTY1ZDI1ODk3ODYzYWM0ODRjNjIxZGNlOGY4NGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzE1IGQ3Yjg3ZjBmZjBkMmE3ZjcxZmNhNjY0NWIwMjJkMDQ2YWFkODI0NWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzE2IDlkNzM1NjM5NDI5ZDEzYWZjYjlhZGNjMDQwMTBkNGYxYmRkNzI1ZjQgbGVnYWN5LXRydW5rCisxNDcxNyBlMGZiMDRkMWJkOTM0YjkwYjM4YTYwYjVmZmEwZWU0ODBmM2I5Y2E5IGxlZ2FjeS10cnVuaworMTQ3MTggNzRmYjYwMmI3NmMyZmZiMWRlOTM3NWJjZTRhMzJiOGRiOTIyYWYwNiBsZWdhY3ktdHJ1bmsKKzE0NzE5IDEyN2Y3MGY1OWIwMjY2NDNhMjMyYjg5ZTA1NDVjMjA0MjljM2M2ZmQgbGVnYWN5LXRydW5rCisxNDcyMCA2NjMxMjlmM2FiZTAwMWViZDc1NzBlMjFhY2U0MTA5MzAzYjk3NjllIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyMSBiNDcyNDhjZTdiNmM5NDUwNDljNmRmZTVlN2FjODliZTI3YzdjMzExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyMiAzOTUyMzE4OTU3Y2ZhMzM2NGZhZWFhOGZiZTZkYTlmODliYzRmOWY1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyMyBiZDEwMTQyMTVmNjIyNTRhNmQwNGE1YjgzZmU1NjgyOWNlYWMyNWMzIGxlZ2FjeS10cnVuaworMTQ3MjQgNGZhMjVhMjkyMjczYjc1NGRiYWIwZGRlMDY0NzkxMDZlMGEzMTBkNyBsZWdhY3ktdHJ1bmsKKzE0NzI1IGMyZWZkMTdjZWNiZjFkNmYyNWVmZDc4ZWJjMmJkMjk2ZDlmMWVmM2EgbGVnYWN5LXRydW5rCisxNDcyNiBlNmM0NjgxOWRiOTI3Mjk3NmEyZDhmZjhjZWIwYjg4MWY0MDE1NTllIGxlZ2FjeS10cnVuaworMTQ3MjcgYmE4MGM5MDY0NDkxODA2N2U2Zjc1OGNhNmM2NDk4ZDkzNzI1ZGEzZSBsZWdhY3ktdHJ1bmsKKzE0NzI4IGE0MTE4MzY3MDM4NmU2MmZmMzg5OGUxOTY4ZTdiOGZlMzQyYzE2MjEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzI5IGM2MDNjZGVkYWUxNzc0ZTBlZmM1OWJhYTU1ZDhmOTBkYzg0MTY4YjIgbGVnYWN5LXRydW5rCisxNDczMCAxM2ZkMGRmZWM1NjBhN2RkNTU2YWUwNjg2OWE1YTRmY2VmNzVhZTRmIGxlZ2FjeS10cnVuaworMTQ3MzEgZTc4MjAzNTJjYjgwZDBmM2Q3YjBlYWFjYzUxYjFiM2Y4NzdjNmIwNiBsZWdhY3ktdHJ1bmsKKzE0NzMyIDA1Njk3MjUxNzE5MTJlNWI3ZDdkMWE1OTg0YjNlOTc5Mjc1MDdkYTUgbGVnYWN5LXRydW5rCisxNDczMyA2OWIwZmNlZjRjMGYyMWQ3NjhiNzQ3NTVlNGRiZTQyZDE1ZTJkYmMzIGxlZ2FjeS10cnVuaworMTQ3MzQgNzY1MTYyMDRiNjIwYmViODRmYzFkZGU5ZmFlZGI4NDM0NGUyMmU1MiBsZWdhY3ktdHJ1bmsKKzE0NzM1IDFlMWFlYmIzZTRmNjllNThmMGI0ZDhkMjA1MzcwNDMzN2Q0NDc5NmYgbGVnYWN5LXRydW5rCisxNDczNiA4NmQ5Y2UxNTgwODk4ZWY0Nzg2OTc3ZDNmNmE2YTQxNGQzYzhiMWI0IGxlZ2FjeS10cnVuaworMTQ3MzcgOTE0ZWQ1Mjg4OTZlMGVkNWE1MGMyZDU2YWQwMDlkMTczMzkzODkyNCBsZWdhY3ktdHJ1bmsKKzE0NzM4IGEwYTljNjlhZjlmNzg3OTQ2NTNiNmYwOWMwNzlkMTllMzMxMTdjYjggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzM5IDZmZDBiYjBjMDMzMWVmYmU3YjFmMTU0NWRhYmIxZTczNTE5ZjQ5NjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQwIGYwN2MzMzA1NTdjZmY4NjNmNWUzMTVmYjhkNWYxZDYxMjA1MjNhZjQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQxIGQ3NGVhYTkyZjBiNDU4MzQ0OTJmNDVlMjQ2NGM0YWRjNjI3OTQxMTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQyIDQzZDIyNDc4NmE1ODFlNDVkMzI2Y2UzNTM3M2NkNmRhNWFjMzc1YTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQzIDYyOGNhMWU5MDU5MWU1MGU5NTg5ODk4YjdmNWMxZGQwMDFhZDM4ZmYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ0IGYyMjBmYmE1Nzc0OWZiODAzMDVjZmZlOTFiYTA3ZDU2YWFiNzZhZWYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ1IDBiOTYzM2E0NWQ2OGViODNiYmJhYzllOGIyNzk0YjNjYTc0NTA0OWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ2IGNhMDE3ZGU0ZjJmZDk0YzY3YmMyZWUyMGJjYTFiNTcwMjNjMWFhMTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ3IDI1ZDNkZDBiMWNhMjkzODAzMjlmNDRhZGFkNjY4NDg2YjI4NDE4MTUgbGVnYWN5LXRydW5rCisxNDc0OCA3OTk0ZDlkYjdmNGQ1ZGZlNTFlYmFkMzAwNDcxZDAxZWJiYzAwMjliIGxlZ2FjeS10cnVuaworMTQ3NDkgMDA5ZDhmYWU4MWVhZTZlZGJiN2ZkNzNmMGIwZjkwN2VmZDZjZTJhNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTAgMGM0NDdjMjg5MTQ2NmZkMTNhMTJkMjNkZTU0ZDk0MmI4NzY4NjA2MiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTEgZDJhMDA2MTA5MmY4MDUwMTU1ZDRjYjliNDRkMjY5Y2JhYWRkOWZjZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTIgZGFmNGVmYzNhYmE5MWJjMWU5YTkyNWQyOTgzZjlkMWY1OTVjYjFlNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTMgOGRjMDkxOGFlMmMyZmZjZTdjYWE0ZWEwZDIzYWM2ZjQyZWEwMTZhZSBsZWdhY3ktdHJ1bmsKKzE0NzU0IGY5NTVmYmQ1MTNlZTRmNmQ0YTZjOTg2NjhlMzQ4YTI3YWUwMWE4MjkgbGVnYWN5LXRydW5rCisxNDc1NSA1NTZjMjdiM2FiNmViZjU2ZDMzNzgyNDRjODM3MDRhNDYyMmUyZTg2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1NiBjOGUwMDEwYzEyZWYzMWVkY2JlMzI5MmRmNjZlNjNkMjNhZGZjNzBhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1NyA4N2FlZTRlZjI5ZjUyODZhYzZhYzgzMDA0YTI0YTRiN2FmOWJiMzBmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1OCAzMjU5MzgzMDBhNzg0MTVjNjFiN2I4NDNjYjE1ZTQ4YzNiYjMwMmM4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1OSA2ZTdlYzlhMDBjY2U1Y2IwOWQ4ZDY1N2E5MTY4ZDBiOWNjNzlmZWUxIGxlZ2FjeS10cnVuaworMTQ3NjAgMzY5MGM4N2E5YmM2NjRjNjUzNGMzMzY5MDU5NDA4ODJmOGEwMDIyOSBsZWdhY3ktdHJ1bmsKKzE0NzYxIGFmYWI3YmQ3MmM0Nzk1ZDQ4NTVlYWIzZTM5ODQ4MjM2NGU1MTMxZGQgbGVnYWN5LXRydW5rCisxNDc2MiBhMDVkODMzOGZhYzU3Mzc0MWVhMGJkMzllOGE3YmNiYWFmMzI5M2E3IGxlZ2FjeS10cnVuaworMTQ3NjMgOWNhY2QxMTY2OTg2MjNjZmRhZDkwMzA5MDE2NjIzOTZjYzY5ODQwYyBsZWdhY3ktdHJ1bmsKKzE0NzY0IDg1NmRhZGY1NmNkOTdiMjhmMDNhOGYzMmM0YjcyYmIzYjA2NjhkYzQgbGVnYWN5LXRydW5rCisxNDc2NSAyM2ZjZTliOWYzYmM5MzE3Y2MyODJkYTU2NGRmOWFmOWNlNzZiMDY4IGxlZ2FjeS10cnVuaworMTQ3NjYgNmYwZDFlMzM0NmY5NWE3MDFjODgwYzdlYjU1YjZhYTNjZGMyODk5NyBsZWdhY3ktdHJ1bmsKKzE0NzY3IDk0MDQxOTVmZjNmZWZmYWNiZTI2MDkxYzBlMTBlMGE5MjU5M2QxNzMgbGVnYWN5LXRydW5rCisxNDc2OCBkM2U0YTQ1NjkyOGJlMWRhNDE0YjZkNGUwNDFiMjZhOGY1ZTJmMjRlIGxlZ2FjeS10cnVuaworMTQ3NjkgMTk1NmVjMDc2NzhlODZmMDVlYTFkYzQyYzgzMzFhODdiOGYzMTExYiBsZWdhY3ktdHJ1bmsKKzE0NzcwIDc0MGVjMDhlNmVjMWM1OTI3ZjYzZTUxY2RhZjRkYjEzYjk5N2MzMzQgbGVnYWN5LXRydW5rCisxNDc3MSA0MWE3MjVjMTI1NTFmNjFiNGIyOGNmMzQxZTUwMTdlMzNiMzQxYmRmIGxlZ2FjeS10cnVuaworMTQ3NzIgZDZiYzNiZDUyNDI0ZTZhMWJjYTYxYTk5ZmQwYzg2ZDRlYWNkYTdkYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzMgZTEyMDQxNzMyMzA0MDkzNTg5ZTNkZTdmZjQwMjM4NDQ0ZGExYmIwOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzQgYTRhNzg1YTAxMzYwYWVhZTE5YWM0MTgzOTc0ZGVkNjVhYzJmZjY3MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzUgMDFhNjBiOTNjMmY1MDBmMzU3MzA2YjM5ZmE5ZjBlZTk1Njg3ZWI2NiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzYgMDE5YzM0MjgwZmMyMWYzYjcyOWZlOTM5YWI1NTg3YWY0ZmQzMmQ1MCBsZWdhY3ktdHJ1bmsKKzE0Nzc3IGE5YTFlNTkxZWIzYTFiMWVhMDU4MDE0ODViNjFjZGEzOWJkNGY0ZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc4IDgxYzIzYjM4N2JiMDg0OGIwZjVlYWVkYmFkOWI0OTg2ZGExZjhkOTYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc5IDJlMjFhZDFjNjBmZjg2NjMwMTM4NjQwZjVhNGI3MDAzNGFlZTQ3OTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgwIGFmNDc3OGExMzA1NTY5MTdkYmFhZGUzZmE0MjE2MzE1YmMzOTdiZjkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgxIDYzNzRjNjY2OTE0NzhlNjcyYWU5ZDVmNWJhMjY4NDcxZmNkN2MyMjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgyIDQyY2JlYTY3NzdiN2VlOWZhY2E2YmNmNzc2YjVmYmFkMDcxZTU4NWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgzIGNhZTU2ZjdlODBmZmVlNzNhODRiNjE3N2QyYTcwYjQ1YmNmNmFjMDYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzg0IGQ4YjIyYTc4MTkwNWMxOTExNGUxMDFjMzhlMzg2MDBkMDIzMDNkN2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzg2IDVjYWNjYWNlMWRjZjg4NDJkNGM0NTg2ZWY5ZWMwZTk1MGY2NzJhMzYgbGVnYWN5LXRydW5rCisxNDc4NyAxNzhjNmVmYWVkOGJhZTMxYjNkNTNlZWFhZmQzNzA3YzgxNWZlZTUzIGxlZ2FjeS10cnVuaworMTQ3ODggMTQwOTJhYmI4YmI0YmU1NDdjODRhZTkxNGNlYTU1MTQ0OGFkMDQzNiBsZWdhY3ktdHJ1bmsKKzE0Nzg5IGIyZDQ0YmI3NjFkNGI1YTE0ZGNlZGY0N2ZiOTY5NmQ4NWRmMmU4NTcgbGVnYWN5LXRydW5rCisxNDc5MCBhMzg0YjBmNjk1MTJmNmRkZWU2MjM1Y2RjZGNmNGZhYjJlNjI5NjRmIGxlZ2FjeS10cnVuaworMTQ3OTEgZmExMmE1NjMzNjhkNTJmMmE3MjdkODg3MmJmOWQ5ZjFiOGUzYWU2MCBsZWdhY3ktdHJ1bmsKKzE0NzkyIGY4N2I1NmVlYmFjYzcyYzNlYWFhNDkxZjcxZDJlM2U0OWMxNDE4ZTQgbGVnYWN5LXRydW5rCisxNDc5MyBkZGEzNzk0YzljZDkwNDliYWU1NzRlY2VhOTgyYzI2NjJiZGIzNTAzIGxlZ2FjeS10cnVuaworMTQ3OTQgYjkwODgwYzBlNWViMjI1YzE4ZjAwNzIzMTIwNGQ2OTRhZDA5MDNiYSBsZWdhY3ktdHJ1bmsKKzE0Nzk1IGQ4OTU1NmMwNGVmOTlkYmM5ZmE2YjM4Yjc4NmIxZjgwODQyMjJiYzQgbGVnYWN5LXRydW5rCisxNDc5NiA1ZDMxNjVlMzBiY2U2MzEzYzQ1ODNiMWY0NGQ1MTA4ZmMwMzIxYmU0IGxlZ2FjeS10cnVuaworMTQ3OTcgODhiMGIzMjEwOGNmYTJkNGUzNDgzNGY5ZWIzMjAyYzY4ZDEzNjljNyBsZWdhY3ktdHJ1bmsKKzE0Nzk4IDIzYTFjNTI2YzZmMDJjNWJkYjA1NmVjNmVkZjk3YTk2MDc5NGE2ZDYgbGVnYWN5LXRydW5rCisxNDc5OSA1ZDQ1Y2ZhMWJjOTEzODlhODZlM2Q0YzhmOWQwNjcwNmM1YzM3M2UzIGxlZ2FjeS10cnVuaworMTQ4MDAgMWU1Y2Q3MGNlZTEwNzU2Yjg4OGE3NTY0ZDIwMWVmNmMyZDhiNzc5NiBsZWdhY3ktdHJ1bmsKKzE0ODAxIDQyZDhkNzZkYWU2ZDJjNWQ1YmMxMDhiMzIyYjExNjVkNjcxMjk4YjkgbGVnYWN5LXRydW5rCisxNDgwMiBjNmNiMGQyNjY4MzkzMDJiOGM5Yzc1ZThhOTFjMGM2MzE1Y2ZlMzhiIGxlZ2FjeS10cnVuaworMTQ4MDMgZGUyOTZhNzhhYmZkYzRlNTAyZGEzNjU3ZmJmZjJiZDVhMmRjNWMyYyBsZWdhY3ktdHJ1bmsKKzE0ODA0IDc3OTU1NzNlYzM1ODFjNTE4MTk1NzM3N2U4ZGMzOWEwNzdkOWQ4OWQgbGVnYWN5LXRydW5rCisxNDgwNSAwNDlmMDBiZmI5Y2VmMzQwMjg4NmU1NjkwYTE3MDQ3Y2ExNDU4NzNhIGxlZ2FjeS10cnVuaworMTQ4MDYgYzQzYjM4MDc5MjI4ZjM5OTE1NTg5ODc1YjE4YTM0YjUwMWM3MzkyOCBsZWdhY3ktdHJ1bmsKKzE0ODA3IGNhODg4MGNmMzY3NGNhMGY4MjYzNTBkYWM0Y2NmN2VhZTM1NTlhNTIgbGVnYWN5LXRydW5rCisxNDgwOCBkYjAzYTI5Y2YxNmI1YzIyY2JjZTRkMTU1YzM4MTM3ODhmZDY5YzhjIGxlZ2FjeS10cnVuaworMTQ4MDkgYjk4MWE3YTliNzM4ZTljMTkzNWIwM2E5MTUyNTU2YmZkMGMyMDdkMCBsZWdhY3ktdHJ1bmsKKzE0ODEwIDg2Y2ZmZTUwZmIxNzJjMDI1M2QwYjE0MDk4OGU3MDRjZWI0OWJiZjkgbGVnYWN5LXRydW5rCisxNDgxMSBiY2FiMTg5ZGRmODZiZGVjYzY1NjJmNWYxZDMwMTUwYzBjYmJkNzUxIGxlZ2FjeS10cnVuaworMTQ4MTIgZTI0MzUxOTI2ZTEzZWE2MDc1M2QwMWE4NjI3ZGE2OGYwZmY2MTk4YyBsZWdhY3ktdHJ1bmsKKzE0ODEzIDMzMjMxMGZlM2QzYWYzNzI3NGU4NjlmNTBlZWFmMjkwNjYwNDkxZjAgbGVnYWN5LXRydW5rCisxNDgxNCBhMWJmYzhkNGZjMDA2YzgxODA4NTlmOTYyODJmZWIxYWU3OGM4NTI0IGxlZ2FjeS10cnVuaworMTQ4MTUgOTc1MGFmNWU3MWIwMTM5YWVjYzBkNGFjZmQxNGQ2NjYzMTI2Y2I2ZSBsZWdhY3ktdHJ1bmsKKzE0ODE2IDY3ZDQxMjhkYTI1NDNhMWI0MGE0NDk1MjU0YWJhYTQwOTI5NzQ3OGUgbGVnYWN5LXRydW5rCisxNDgxNyBlNDk0M2ViYjVmN2QyMjUxMTAwN2Y5ZTgwZDUyN2VkMGYyOWMyY2JiIGxlZ2FjeS10cnVuaworMTQ4MTggNjVmMzViNzNlMzUwNTRkOTVhZmVhYWJkMjg5NzBkZDM4Njk4NTQyNiBsZWdhY3ktdHJ1bmsKKzE0ODE5IDllZGVkZTY1MWZiMWE0OGU3MGNiMDg4MGNhMjgyNWVkZjVmOTNkODYgbGVnYWN5LXRydW5rCisxNDgyMCA0YTYxY2M4MWYzNjczNWQxNjM1NjE2ZDg1ZWMzMzEzYWVkMTkxNThmIGxlZ2FjeS10cnVuaworMTQ4MjEgZmQyYjA2YzZmZjUzYjcyMzc3MzAxYzAzYTRkNTg3Mjk0MmE4MGJmYyBsZWdhY3ktdHJ1bmsKKzE0ODIyIDg5N2NmMGU1YTQzNGE2MGQxN2EyYmFmNDFjZTdmNTM1OTJkZGQwMTkgbGVnYWN5LXRydW5rCisxNDgyMyA4MzhkYzM4MGU0Njc3ZWU4ODU3MGEwNWMwYTZjNzczNDQ3ODJiZWUzIGxlZ2FjeS10cnVuaworMTQ4MjQgNDRiOTQyZjdmZWI3NjZlYjNlNWJkZDQ4MzkwYjJmNGI3OWE2ZmQzZiBsZWdhY3ktdHJ1bmsKKzE0ODI1IGRjOGFhOTUxZGVmODA0NWMxMzhiZjA1OTk2MWRiNWQ0YTQyMjkwZmQgbGVnYWN5LXRydW5rCisxNDgyNiA2MDNkYjBkMGFlZDE0MzQ1YzkwMDA0NGJhZDllNjVmMWI2YzMzMmU0IGxlZ2FjeS10cnVuaworMTQ4MjcgN2UwMDYzNDJlNzkwN2M2OTk1OGEwZWM0NWZiMDdhYmYyNDNhZDZkZSBsZWdhY3ktdHJ1bmsKKzE0ODI4IGE2ZTUyMmNiNTkxODRhNWMwYWYzMjUxZmExMTFiNmEwM2JiMGYzOTUgbGVnYWN5LXRydW5rCisxNDgyOSAyNWI2MzM2NzM4NWViMDY1M2FiMmJjMjg0ZjI5ZjAwNjMxNWFkMjhhIGxlZ2FjeS10cnVuaworMTQ4MzAgOTZlYTFhODAwYjIzOTNjOTY3YmI1ZjNjODJiN2M5ZTM4OGFlZDNhZiBsZWdhY3ktdHJ1bmsKKzE0ODMxIGUyZGI4OWE5OGNiMmY0OWI0MmM5ZjE1NzAxOGU3MDVkZTUxM2IyNWYgbGVnYWN5LXRydW5rCisxNDgzMiAzNzg5YjY0M2ZlODk4MTI5MGMzNTIwNjQ2MzFlMmE2NDQxZWJjYTg2IGxlZ2FjeS10cnVuaworMTQ4MzMgYmI5MDA0NDkyMDMwNTM4YmQ2MTFmYmQ0ZWYyYjQ2MTdjZTI0ZDlhMiBsZWdhY3ktdHJ1bmsKKzE0ODM0IDk4NzdlOTc4MTcwZWE3NWIyNjYwNzE0ZDFjZTVhYjJmODkxOGU2YmYgbGVnYWN5LXRydW5rCisxNDgzNSBhZTA2NWRkYmEwZjE0NjdjYTIzNzNjNDFiYTQ3NDQ0NjAyNWVjOTAyIGxlZ2FjeS10cnVuaworMTQ4MzYgMmE2MGQ2ZjgzNGZmYjQxMjAyMDcwODcwYTFhNGE3Y2QyMmU3NzBkYiBsZWdhY3ktdHJ1bmsKKzE0ODM3IGUwOWQ3NDE0ZDNlY2Y4MTY1N2Y2YmUzMmMyMTg3NDliYTNiMzFkYTQgbGVnYWN5LXRydW5rCisxNDgzOCA4ZDFjNjliZGM0ZjJjMmM5NWMxNGIyZDJjOGVlMDM4ZDA0ODFkNDRkIGxlZ2FjeS10cnVuaworMTQ4MzkgNDM4NzYwNmExMjgxYjVhMGY5ZjM3N2Y5YTBjOGFlZTRmZjljM2RmYiBsZWdhY3ktdHJ1bmsKKzE0ODQwIGMwZTRhOTBkYzRmZjlmNzY4OGJiZjRhZWM1ZGE3YTBiNWFmNDFlMWMgbGVnYWN5LXRydW5rCisxNDg0MSA3YTUxNWZjMTBjMWQ3N2MzOTI2MjgxMjFkOTI0ODMzNTM5NzgzMmZjIGxlZ2FjeS10cnVuaworMTQ4NDIgODgxMjU3ZDFlODU0NGJmOGFkNTE1YWUzMmVlOThiMjVjZTgzNzUxMSBsZWdhY3ktdHJ1bmsKKzE0ODQzIDQwYTI2ODlkYWYzNzc2NmMyMWQ3ZjVmZjJlNjRkNTUzZTZmMjk5MzcgbGVnYWN5LXRydW5rCisxNDg0NCA0MWNiZDI5OGZmYzZjMWQyYjY2MmI4ZTU3OWVjYjk0MDMwZjY4YzgyIGxlZ2FjeS10cnVuaworMTQ4NDUgZjBlMDJhZGI5MWViYTE5YjM3ZjUzNTlmZWY0NjdlOWYwOTQ0ZGQyOCBsZWdhY3ktdHJ1bmsKKzE0ODQ2IGU4MWIxMzlhYjhhNDk1OWZlYWRiM2E2OTIzOTE2YjcyN2VjNmY1MDQgbGVnYWN5LXRydW5rCisxNDg0NyBkNzMxY2VmODEyYjM1ZTYxNGQyNjM4NTMzN2I0ODhlNDllZTQwZTNkIGxlZ2FjeS10cnVuaworMTQ4NDggZTk4NzcwZGUzMTQ3MmQzNjdhODgyODIwZTMxZTQ3YmJhMGM5MzFlNiBsZWdhY3ktdHJ1bmsKKzE0ODQ5IDY2ZjE0ZmZlOGViNzE2Zjk2ZThhNDg1ZDk2YjFhZmYyNjQ3MjdiYmUgbGVnYWN5LXRydW5rCisxNDg1MCAyYTkxMGE3NzU3OWE0ZDgzMmY2ZDlhYjg5YjFjYzIxZDU0NDExZDI4IGxlZ2FjeS10cnVuaworMTQ4NTEgMzI0MDdjMDhjYWY0ZDM1ODllYWVmZmQyMDVjOTJiMjExMDM0Mjg5MCBsZWdhY3ktdHJ1bmsKKzE0ODUyIDZmZDQzODY3YWE0ZmIwN2Y5ZmZlYjEzNzdhOWYzYjQyMjAxNmU1NGYgbGVnYWN5LXRydW5rCisxNDg1MyBmN2EwZDI5ZmI4YjgxZTE0NDUwMjljMTNiMjZkYzJmY2QyZjE2MTkzIGxlZ2FjeS10cnVuaworMTQ4NTQgOTJlYzc4ZTIxN2QyOWFmODk5MDRkM2Y3MzRhYzEyY2NhYzYwYzg2MyBsZWdhY3ktdHJ1bmsKKzE0ODU1IGUyYjAyZDQwYTE0MjVjM2M4NTgyZjY2MThkZjA5NzY2YWNlOWUzNmIgbGVnYWN5LXRydW5rCisxNDg1NiBkZmUzYmFmMGFlY2RjZTQ4MDQ5NWFiOWM3YTU2NTdkZTAwZDRjYWEyIGxlZ2FjeS10cnVuaworMTQ4NTcgMmYyZjJiMWNlNTY4ZDYxZTFkNjg3MmE3NGYwODRlZDY5MjY0MjhkMiBsZWdhY3ktdHJ1bmsKKzE0ODU4IDI3MjFjN2NjMGIyNzE1ZjNkMWM1MWViOTU4NzQ0ODkzMDliYTJiNzAgbGVnYWN5LXRydW5rCisxNDg1OSA2MzMzNmYyMDdkNTEyOGQ1NWQzOGVlZjhmZDY3YjkwMDNkMGU1MjY5IGxlZ2FjeS10cnVuaworMTQ4NjAgZTZhYjNjNjAzZmY5MTNiYTYxN2VhYjYyMTk1NjY2OWVhNDM5ZmQ5NyBsZWdhY3ktdHJ1bmsKKzE0ODYxIDVmMjIzOTQwNmRkMjBkMzc0NDk5Y2IwZWUyNGNlYmU2MTk4MDUxYjcgbGVnYWN5LXRydW5rCisxNDg2MiAzMGE0OWQxNWRhOTc1YzI2MzdlZTljMmQzZTVkOWQzZjdlMDcyNzQyIGxlZ2FjeS10cnVuaworMTQ4NjMgMDY5OWE3ZGZkNzM3YzIzNTEzOTRlZGQzZmZmZjEzOGY2YjY4MWE0MyBsZWdhY3ktdHJ1bmsKKzE0ODY0IGVjNThiNTAzYjY3MDBjNWZkNmI1MDU4ZDUxZGQwMmY2NTQ4NzlhMTggbGVnYWN5LXRydW5rCisxNDg2NSAwNzI3ZmYzOWU2NGZiOTI2NDdlMmZkZGJkNWM1ZjhjZmIyMDk5ZTE1IGxlZ2FjeS10cnVuaworMTQ4NjYgM2Q3ODVjMmNkYTg4MTVkYmE2NzMyMWQ4NzYzNDE1NTQ1ODAxNjNhZSBsZWdhY3ktdHJ1bmsKKzE0ODY3IGEwZWY4ZmE0YjI0ODhiNDM4ZGFlYTE1ZGQzNTI1Nzk3YzQ2NzFjOGMgbGVnYWN5LXRydW5rCisxNDg2OCBlYzM2MGI0ZThmNjZmZTdlYmFkMTYwMDdmYTMwM2M0YmNjNjRiMzI3IGxlZ2FjeS10cnVuaworMTQ4NjkgZTJiMzI4M2M1ZGIwYTRkNjgyMDE5YjI5NGY5ZjhhZDQzOTBlODdlOCBsZWdhY3ktdHJ1bmsKKzE0ODcwIGU2MjE0YWQyYTYwY2IwN2IxZGQ5NDk4OGM2ODIxMjdjMGQ5MDIyM2UgbGVnYWN5LXRydW5rCisxNDg3MSBiM2E0ZTQ1MWMwNmM4NmEwYjAyZjZkOTUwODA3ZDIyYzc3NWQ5ZjYwIGxlZ2FjeS10cnVuaworMTQ4NzIgYjVmY2I1Mzk2OTk5NDdjZWI0NzUzOWI3NzZkYjRkMDc1ZTRjNzI1NSBsZWdhY3ktdHJ1bmsKKzE0ODczIDJjZDljNDM2YmQ0MmIzNzlhZjE3YWQ0ZDVlMjI5NGE1ZmMxZWE2OWQgbGVnYWN5LXRydW5rCisxNDg3NCAxMDM4ZTU4NjEwNzk4ZTRjODA2NzQyMGRkYzM1YmI1YmZhNjY3ZmE2IGxlZ2FjeS10cnVuaworMTQ4NzUgYjQwZjY3OWIxMDdjZTU1ODI5YzZiNmFmNmE5NDliMDcxMDY5OTNhZiBsZWdhY3ktdHJ1bmsKKzE0ODc2IDFiNjhkMGFkNzgzNTZjMGZhMjBkZDc0MzNhMjkwYjMyNGVhNThmM2QgbGVnYWN5LXRydW5rCisxNDg3NyA3MTEzNDBkNDQ3Nzc2MzkxNDk2MDgwMTQ5Y2ViMmU5YmNlMDE3ZjA5IGxlZ2FjeS10cnVuaworMTQ4NzggYzE2MDc0OWFjZmY4NTcxYjVhYzJjNDE1ZWIxZTYyYWRjM2FkN2YyZSBsZWdhY3ktdHJ1bmsKKzE0ODc5IDY2Nzg3ODc3NjkzMzZhMzVmYjE4OTA5YjgyYjY3ODdhMzQ1MTQzOTEgbGVnYWN5LXRydW5rCisxNDg4MCA5YjlhYmRlMDMyYjMyNDU1MTE4ZWNkMTRjNGU4MWMzMWQ3YTk4NmUxIGxlZ2FjeS10cnVuaworMTQ4ODEgNWI1NTgxYWY5NTFjNWQ0ZGE4MGM4ZmExMTkyMjkzNjZjZWIxODZmNyBsZWdhY3ktdHJ1bmsKKzE0ODgyIDU3MjBkMWMxOGY0ZDEzMTVlMWI1ZTkwNDZkMmZjNTQ4MGI3ZjE2MmMgbGVnYWN5LXRydW5rCisxNDg4MyAzMzhlMDU1YjdjYzA5YzgwMzkzOTJiOWI4MTU2ZGM1ZmU1NjhmNTU0IGxlZ2FjeS10cnVuaworMTQ4ODQgZGFkZTgyYjllZTE5Y2UwZjA4ODllYjliZWJmOTAwOThhYTQ4YWEyMCBsZWdhY3ktdHJ1bmsKKzE0ODg1IDRhM2ZkMmMxMzcyZjIyODFlMTgzNWY3NDFjY2FkN2UyNGYwMTU3MDkgbGVnYWN5LXRydW5rCisxNDg4NiA0M2MzNmY2M2Y4NjdjOTM5MjAxNTMyYjI3MmE3ZjM5M2VjZTE3ZmJkIGxlZ2FjeS10cnVuaworMTQ4ODcgOTk5ZmMzZWVkYTk5YTk5YjhiOTU0YjZiYTg0MWRkODUxMDZjNTBiMSBsZWdhY3ktdHJ1bmsKKzE0ODg4IDRjYWMzNzY0OGE3Zjk4NjAyNGI1MDJjYTU5MzE1YTBkNzE1NmJiZmEgbGVnYWN5LXRydW5rCisxNDg4OSA0OWUwMjdiNDg2MjdmMDUxYmZkMjc1ZTUxNTU4ZDRjNTMwMzQ4NmUwIGxlZ2FjeS10cnVuaworMTQ4OTAgZThjMzBlNjk2NjZiMGU0MmE4YjI3NDFlODZkYzYwODI5NDg1ZTI0YyBsZWdhY3ktdHJ1bmsKKzE0ODkxIDE0ZTkzZDg5ZDM0ZWJkMWE1Yzc5MDJkYjk4NmJhNTAxMzM0ZWZhNzYgbGVnYWN5LXRydW5rCisxNDg5MiA4MDQ0MzNmMDExMmM5YjgwYjJmZmZiOTk0YjQ5ZGNlYzM3N2Q3Zjk1IGxlZ2FjeS10cnVuaworMTQ4OTMgMGFjNTc3ZWI4MjgyZjA3YWJjNDI5NjQwZWZiYWU4Yjk0YmVhZjJiMyBsZWdhY3ktdHJ1bmsKKzE0ODk0IDgxZTVmODAwMDA5NDRmYzc1NGU0NTI0NTM5MzI0ZjEzYjRhYjc2MjIgbGVnYWN5LXRydW5rCisxNDg5NSBjYTkzOGYzOGQwODdkZmIxZjM3MzlhZTU3ODQzODQzMThhN2YzZDY1IGxlZ2FjeS10cnVuaworMTQ4OTYgMjFhOWJiYjU3MmQ3MzdiOWEwZjgzOTBkMzEzZGFlZjIxYTMxOWY5MCBsZWdhY3ktdHJ1bmsKKzE0ODk3IDgzMGRkNTgxZTkzNGY2YzdiNTEzMGJkNWJmZmU1YjdlMDkxY2FjM2MgbGVnYWN5LXRydW5rCisxNDg5OCA3OGUzNmUwNmU1MzY5ZDIwZTI5MDY3YmE4N2JkNGNmZmMxM2VmMWMxIGxlZ2FjeS10cnVuaworMTQ4OTkgZmVkODliNTc2MzdhNmU0MmYwMjE3YmVhNTFiNTczMGFhZGU1NzZhYSBsZWdhY3ktdHJ1bmsKKzE0OTAwIGRiNWMwM2ZhOGM3M2Y1NWQ5Njc0MzgxZWY4YzdmMjc0Y2U3YjgxYzcgbGVnYWN5LXRydW5rCisxNDkwMSBiZTJmMDAzZDQ3Y2M2ZjFlMTNkNDM1OTRmY2U2MDY1Mzg4YzI1YTBkIGxlZ2FjeS10cnVuaworMTQ5MDIgOWU3YWJiMjhlOTJhMTcxMjk0M2U1N2QxYzhiM2M0ZWNmNWIwMGU0ZSBsZWdhY3ktdHJ1bmsKKzE0OTAzIDc1YWRkOTY0NGZmMzRhMjlmMmMwOTk0MTRiZDY5Yzc5MTgwZTYzMmQgbGVnYWN5LXRydW5rCisxNDkwNCA1MjJlZWFlNmMwNjYzMmUyYTkzMWQzM2YwOWVhNmY5MDFhMzg0MGMwIGxlZ2FjeS10cnVuaworMTQ5MDUgMjM2YWMxZWIxODhlM2QyNjlmYmZhYjdiM2VmY2Y5MGIyNjdhZmFiYiBsZWdhY3ktdHJ1bmsKKzE0OTA2IDk4YjA5YzQwZDk3Y2M5ZDhjYTlhZmE1NGYxY2ZlNzM5ZWJhMTdiZWYgbGVnYWN5LXRydW5rCisxNDkwNyBmZWI5YWY3NTI3YTU3ZjVhZGUyNTVlMGE0ZGRiNTI0MmEwZjA2MmQ0IGxlZ2FjeS10cnVuaworMTQ5MDggNDIzODdhZGU2YWZiZTUyZTM5OGFjYWNmNTg5NDY3MzkyNzQ4NTNiMyBsZWdhY3ktdHJ1bmsKKzE0OTA5IDM1NmI4ZTg5ZjhlMzA2NDVhMzAwZTdkMzgwNDdhZjI4YjBkOWI4ZWUgbGVnYWN5LXRydW5rCisxNDkxMCBjODhjOGE4NTI3NDQwNWI0MDJmZjYxMDNlMTM1MTYwYTRhMGE3ODA2IGxlZ2FjeS10cnVuaworMTQ5MTEgNmU2OGM3ZGRjZGI1N2Y2ZmE4MmMwYmI1MWFlMzhkNGIyZGIxNWIyNCBsZWdhY3ktdHJ1bmsKKzE0OTEyIGEyZmJjMGZmN2MyZTA3MmUzZGMzNzk3ZTYzZGVmYjZjZGEwYTc0ZjIgbGVnYWN5LXRydW5rCisxNDkxMyBmZjZjMWE4MmMzMjJhY2M0NWYwNTEzYzY0NjhhOGVhZTU3ZTYzOGRhIGxlZ2FjeS10cnVuaworMTQ5MTQgZjQwN2ZhYjI3MzU4OWEzM2RlMjIyZGM2ZmEzNTE0ZmQ3ZTk4YzdkNCBsZWdhY3ktdHJ1bmsKKzE0OTE1IDI2NTNmZDUxNmQ0ZTJlZTIwMTdmYjdjNWY3NWMxYWE0ZjNhNTZlMDUgbGVnYWN5LXRydW5rCisxNDkxNiBiNzMwM2YyZmY2MTNhM2E0MWE2YmYwYzBjNzIwMzhmODNhNmFiMzdjIGxlZ2FjeS10cnVuaworMTQ5MTcgMGQzZGU0YzEzY2I3MjRjYmYwZWZiOGRiM2YzZDNkNmU3NzgzZGY2YiBsZWdhY3ktdHJ1bmsKKzE0OTE4IDI3NDVkYWU4NzA1ZjE5NDJkNDQ0ODIzMjg3YTYxMWY2OGViYjEzY2QgbGVnYWN5LXRydW5rCisxNDkxOSAwMTU1YTNiMTNiZjBlMGM5Yjg2OTY1OTcxZWJmYjAwMmIxYmVhMDEwIGxlZ2FjeS10cnVuaworMTQ5MjAgZGI4M2U2M2IzODRiNmRjNzJmMGZkNTBmN2YyZTM3YzNmNTYwZTY4MyBsZWdhY3ktdHJ1bmsKKzE0OTIxIGYwM2UyYTgxODhhYTA3Y2Y1YzA3Y2NjMWUwMTE4MzE5NTg3NTY1NWYgbGVnYWN5LXRydW5rCisxNDkyMiA3NzE5M2U4ZTAxMzcxOTJlYWI1Mzk4NDVjZmYwNzMzMTY2NDI3ZmM0IGxlZ2FjeS10cnVuaworMTQ5MjMgZTc4OWUyYmYwNWIzZWVlMWJmYzM3Y2E4Yjk5MzhkZDFiZWRkNGQ2OCBsZWdhY3ktdHJ1bmsKKzE0OTI0IGMyOWNkZGU4ZWJkODAzMDg4OGY4OWE4NDgxOWFiMjA5OWE1ZmIzZDYgbGVnYWN5LXRydW5rCisxNDkyNSBiNThhZWQ3MWNkNjNmMzc3YmY3YzQ5NDIzNjA1M2M2OTQ5NDJkYTRiIGxlZ2FjeS10cnVuaworMTQ5MjYgYzg4ODc5MmRlNmE3NzA4ODBhNjdjNTJiOTlkNWE0NGFhYTc5NTdmZSBsZWdhY3ktdHJ1bmsKKzE0OTI3IDI0MjQ1ODUwM2IxMzExYjVkNjhjNzgxNjZmZjRlOTIzMzViYzlmNzUgbGVnYWN5LXRydW5rCisxNDkyOCBmNWExZTk1NDRjNWRlNmVlNzQzNTI0OTkyNmI3MjMyYjk5N2M0ODhmIGxlZ2FjeS10cnVuaworMTQ5MjkgODMyNTdmMzM5NGFlMzEwYzljYWZhYWQwMGExMTBmZTZlNWU2ODRiYyBsZWdhY3ktdHJ1bmsKKzE0OTMwIDE3MTllNDFlMjMzMDMxZWQ3YTFmMzFiN2Q3MDRhMjU3MDJhZWZkMDYgbGVnYWN5LXRydW5rCisxNDkzMSAzOWI5MWNiODBiNDFjMWFiYTQ4NDQyZmIyMDQzMGQ5OTkyZmJkN2U0IGxlZ2FjeS10cnVuaworMTQ5MzIgY2RmNjhjZTU4NmM0MzllYzU1MzcyMTFjYjhlZWU5NmQyOTI5MjQzNCBsZWdhY3ktdHJ1bmsKKzE0OTMzIDE1MWI5MTNlNzRhMTM3NjI2Nzk1NDIxMWEzMGYyM2Q4YThhYmI2ZjQgbGVnYWN5LXRydW5rCisxNDkzNCA5NGI2MDFmYWViYWNlYWYyYzRlYjgwYjU3NTk2NWVmZTE5YWY3ODZlIGxlZ2FjeS10cnVuaworMTQ5MzUgZTc1YWMyOTJlZjRjMWZhYTg1ZjE4YjM4NzVlOTRjZmUzN2Y2YjBlMCBsZWdhY3ktdHJ1bmsKKzE0OTM2IGYwOWU5ZDY1NmExMTU0ZWJkZTlhYzhjZWY1OWM5ZjU2N2EyMTZlMDEgbGVnYWN5LXRydW5rCisxNDkzNyBjM2ZjMmI0NjE3ZmNkOTZlMjc5OWFkODFkY2NkZmE1ODgwZmRjZGVjIGxlZ2FjeS10cnVuaworMTQ5MzggNGRkOGI2YTNiOWM1ZGRhOGI0YTM1OThjNWM0NjNhYTE2ZTNmMDkyNCBsZWdhY3ktdHJ1bmsKKzE0OTM5IGJjODYxYWRkNWQ3MTJhMTgzNWJiZjZjZGQ4YmQwMTc5M2NkMzQyNzkgbGVnYWN5LXRydW5rCisxNDk0MCA2ZDEwOGQ1MDkzNDZhODkyMDRkZjNiOTg4MzFiNmFmNmJhMGFlMmJjIGxlZ2FjeS10cnVuaworMTQ5NDEgN2YxOGY5NzlhOTNhZmEzY2NkZjdhZDQ3MDEzY2NlOThlMjcyMzNkYyBsZWdhY3ktdHJ1bmsKKzE0OTQyIDQ3NjNhM2Q1OWFiOWEyNTU4MjAzNzQzZTg1NDg2MjAzNThkZmQxOTggbGVnYWN5LXRydW5rCisxNDk0MyBmMjhlOTJkYmI5ZThlMTRkOGI2NDA4MGY0NjgzMGVjNTY0YjkyOTRhIGxlZ2FjeS10cnVuaworMTQ5NDQgNDJmMjFlNDdiNDg2MDcwNzJlOWZjNzc3ZDZiNDg1YjVhMGUwOTRkMiBsZWdhY3ktdHJ1bmsKKzE0OTQ1IDQxZGZjN2Q0YTM2YjIyNmZiZjUyM2IyMzcyZGVmYjU4M2E2NDgzOWIgbGVnYWN5LXRydW5rCisxNDk0NiA2ZmY3Zjc2YTZmMmU1ODJlMTBmOWI5ZGRhMWI4ZDM2NjQ4ZmIzYjM1IGxlZ2FjeS10cnVuaworMTQ5NDcgZmUzY2I3MzQxYjcwODQyYjRhZjUxMmNhMTM1MjM0N2ZmODYwZDQ5YiBsZWdhY3ktdHJ1bmsKKzE0OTQ4IGY4M2U0MDhhZWIwNWRmMTI5MWU3ZDQ2MDc2ZDgxYzYzMjVkMDg4NzggbGVnYWN5LXRydW5rCisxNDk0OSAyNTNjZGVlYWY0MmVmNmU4N2RkMTc1YTY3OTU5ZjNkZjU1ZTM5NjliIGxlZ2FjeS10cnVuaworMTQ5NDkgNjA1ZWI5MzI2ZmZlMWZkMWU0M2Y0MGUyMzM4ZDY2NTJhYjQ0OWZkZiBsZWdhY3ktdHJ1bmsKKzE0OTUxIDNlM2QxNTJhODU1NDcwNDBmM2ZhODUzYjYzOTUzODRiY2Q5MGNkNzIgbGVnYWN5LXRydW5rCisxNDk1MiBiNzNjOWY4YzUzN2MxYWVkMTUzYWFjM2Y2YTcyOTA4ZGUzNTQ2YTY4IGxlZ2FjeS10cnVuaworMTQ5NTMgMDkwOWY1NjIzZDRmYTJjMmMwNWVjMWE2MzI4M2I4YWY2ZWI0ZjljMiBsZWdhY3ktdHJ1bmsKKzE0OTU0IDM3ZDgyMjcyZjBmNDQ1YmVmMDM0MmE3YzExZjdiY2Y4NjY3MjFmZDggbGVnYWN5LXRydW5rCisxNDk1NSA0YmY5OGNjMzhkYjcxYWM2MTVhMTJmYWU1ZDA4Mzc3Y2YzNzAyMzg0IGxlZ2FjeS10cnVuaworMTQ5NTYgMjYzYmVlNGVmMTNjNTlhNGUwMjhhYTE5NGJiYWQyMmNmNTM2NWQ4YSBsZWdhY3ktdHJ1bmsKKzE0OTU3IDFkYzBiNjM3ZWIxYjNhNTkzMTU5MTliOWI3NDE2YWFiNjNjYzBkMjIgbGVnYWN5LXRydW5rCisxNDk1OCBhMjE2ZmU3OWFlMDBiNDE3YmRkNGFkZjQ3ZjFhZDY1NjE5ODQ5ODhiIGxlZ2FjeS10cnVuaworMTQ5NTkgNzc0ODE3Mjg1YjhjYTIwMzU1NTBkNDU4MWI2ZjE1MWM5MDhhMDhhYiBsZWdhY3ktdHJ1bmsKKzE0OTYwIDMzYmZjNTFkZWMwNWNmMzk0NzZmY2E1NTRhODI4ZDFjNWQ0YTdmNTggbGVnYWN5LXRydW5rCisxNDk2MSA1ZWE3NzM0MTM1MzE5OGUwN2IyNTcxMmJlNGU4YTcwOWY5MjhhMTU5IGxlZ2FjeS10cnVuaworMTQ5NjIgZjk3YmI0MmQ0MzQ0ODVjMWQ2OWQxMzkzNjdiMzcxNDdhNDk1NzUwOCBsZWdhY3ktdHJ1bmsKKzE0OTYzIDUzMGNkOWFmYTgwZDU0M2JhYmRlM2FhMDhhYTA4MGY1ODMzMTc4OTcgbGVnYWN5LXRydW5rCisxNDk2NCA1YTYyMDBmZjc3YWFjNDU0N2M1YzI4MzNiZmZkOWY5Zjk4NDgwODcwIGxlZ2FjeS10cnVuaworMTQ5NjUgMTdjZTY2Mzk2N2Q4NDA4YzUzNWVlMWMwZjUyNWI4MDUzNzU1MzNiOCBsZWdhY3ktdHJ1bmsKKzE0OTY2IDNlOWExYzFhOWY1Njc2MWU5MmVjYzUwNzI0NDVhNzg4OTMxMmE3M2MgbGVnYWN5LXRydW5rCisxNDk2NyBlODJlODJiM2I5YWQ1NjVhYzhkZjgxMzVhNjdmYTYxMTM1NmRiZTY3IGxlZ2FjeS10cnVuaworMTQ5NjggMmRjMWJkYjQwODhlZDZmMThkNTZkMjVkNzNiNDZmNjE5NmI5NWE5NSBsZWdhY3ktdHJ1bmsKKzE0OTY5IGM0MDVkYmRkMjZjOWVjNWRjYmUwYzcwODg3YmYyZmQxMjUxNGIxZjcgbGVnYWN5LXRydW5rCisxNDk3MCBmZmQyNDJmZWQwZTJkYzlkYzk4NzI3ODBjMTkzY2QwNmQzMTkxNTUxIGxlZ2FjeS10cnVuaworMTQ5NzEgMjM2NjBiNjZiY2EzMGMwZTVlZWQ4NDAwYjY4ZmU0Yjk4M2JkMzRiNyBsZWdhY3ktdHJ1bmsKKzE0OTcyIDc3YjAyZTUzZjY2NjJmNGM0MjZjNmM4ODBmMGQ3YzQ5M2JhN2QxZjQgbGVnYWN5LXRydW5rCisxNDk3MyA3ODU5YzBhNGFkOTU0MzBiYWI1MmE4MGZlYTFkMWI3ZGE0MmY2ODY3IGxlZ2FjeS10cnVuaworMTQ5NzQgN2JmOGIxMGNlMmFiNWMwZDNiMzgwNzg4YzE4ZTYxMzY1YWMxOTc0NyBsZWdhY3ktdHJ1bmsKKzE0OTc1IDA3NGMzMGZmMzIwNmZkOWZmZGI3NGZjMzM5ZDJmMTY0MTE4YWVkOGMgbGVnYWN5LXRydW5rCisxNDk3NiA2MzEzNWU5ZGVmMjQxZTZmMGEwYTU5NzMyYTI3MTc1M2IxNzkzYzlkIGxlZ2FjeS10cnVuaworMTQ5NzcgZDQ5MjM3NzUyMDI5NzZlM2QxNDk3MTVmOGE2OGU1ZmViY2Q3ZWU1NCBsZWdhY3ktdHJ1bmsKKzE0OTc4IDE0NWMwMDczZDc4NTgxYjRhNDhkNWFjYTQ1YjI4N2E3YTM2YmI3MmIgbGVnYWN5LXRydW5rCisxNDk3OSBjZTI2ZDVmM2QzY2U3ZmE1YzlkOTI0N2I5N2UzNzlhYTExMmFkZmQ0IGxlZ2FjeS10cnVuaworMTQ5ODAgOTIzNWFjNzYxNzZkNDUyMjg1NDM0YTAwYjM1NTBiMDQ2MTQzMzE0ZCBsZWdhY3ktdHJ1bmsKKzE0OTgxIDBjZDIyYzg0YTRmMTRkNmZiY2JmOWE3ZjQ1NDcyNDFhMmNhYTQxMzggbGVnYWN5LXRydW5rCisxNDk4MiBkZTBmOTNkOTBlZTRkMTk1NTNiYmZmODMzNGEyNWE1YTg1OTgwMDMxIGxlZ2FjeS10cnVuaworMTQ5ODMgMDgzOTgzODI3MjI0MWVkNzVhNjQ5N2YzZjUyMDc1ODliYzA4MjBjMyBsZWdhY3ktdHJ1bmsKKzE0OTg0IDcyOWYzMTUyNzY1Y2I4ZjU2YmRjMGE5YmFiNTk3NmNhOWI3OTMyNWIgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODUgMWI3YzQ5NDVjNjFjMTg5YTQ2YTk1NDZkMWNiMWU4ZmJlOTMyODBiMCBsZWdhY3ktdHJ1bmsKKzE0OTg2IDdmYTMxNzQ4NDliZGJhN2JkMjg4NGNiZDVlNWJjOGIxMjMzNDc5YmIgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODcgMTkwYTkyNDJmODNhOGIwMGQzMDFjZDIwOTgzOWEwNDA5OTZlMTljYSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk4OCBhMGEyNGQzY2ZkOTYxMWI2ZGVlMmM5ZjcxMTNlMTgzOTUxYzM0NTRmIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg5IDE3NjA1MjQxNjYzYzE5YzA1MGQxMzc1M2EyY2NjN2MyNWUxNDU0ZDcgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5OTAgZmJmZmE3ZWIyYTRmNzRmNTZlOTUwM2Y4ZTI1Y2QwYWFhODg4YTRhOSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk5MyA3ZTlhNWNmNTVjNzY3NmE1OTY5NjE2ODY1MzkyNmU4M2EwN2VhNmY1IGxlZ2FjeS10cnVuaworMTQ5OTQgMWMzZjkxOTUxZjczN2EwMzczMmVkZTczNjI3ZDEwNmUxMTEyYzBhOCBsZWdhY3ktdHJ1bmsKKzE0OTk1IGJlM2UwZDE5NzUyMjNlZTY4MTAwNjBkZjQ3NWIyMGNiNTA1ZWQ2ZDAgbGVnYWN5LXRydW5rCisxNDk5NiAzZGFjODU0ZTYxMTg1MGVkZTc5MGUxMjQ1OTQzY2ViOGUxYmEwYmNjIGxlZ2FjeS10cnVuaworMTQ5OTcgNjEyYmUxYmI2NWZmZTFjMWJkN2YyNmI2NTA0NTZjZmMzNmNmODMyMCBsZWdhY3ktdHJ1bmsKKzE0OTk4IGJkZmNhNTRhMTQxY2JjM2JiZjE5MzdiM2VkOWQ0NjE0M2I1NjJhOTkgbGVnYWN5LXRydW5rCisxNDk5OSA2OWQxMWRmODQzYzE1NDRiMmYyMDQ4Mzk2NTg3YTkzZmM1OThlMWY5IGxlZ2FjeS10cnVuaworMTUwMDAgNzAxNTRlMmU5Yzg5MGU5M2YxZTliMjU3MDdlMDlhNTY1YzdkMjIwZiBsZWdhY3ktdHJ1bmsKKzE1MDAxIDllYjc2OWUxNWY4MWJjMjQwNjdmNWI0M2E0MDM4YWVkYWQ5YTA3MWUgbGVnYWN5LXRydW5rCisxNTAwMiAwYTNjYjA4MmM1ZGJkYjRmOWU3ODk4Y2RjYWI0YTQ3M2E1OWQ2NTcyIGxlZ2FjeS10cnVuaworMTUwMDQgOWRkZTMxNWNkZTM5NjlhNjBkMWFjNDhmMTNhMGRkNGJjODc2Mjk5ZSBsZWdhY3ktdHJ1bmsKKzE1MDA1IDRkYTA2ZmRkM2U2MzgxYmJmZWI5MTY1NGE5NDBiNDI1YTVmNjQyYzcgbGVnYWN5LXRydW5rCisxNTAwNiA0MTU4NWU4NTFmNTViNjE0OTQ1YzIwYTFmNGQ3YjgwYWY2MzgwM2QwIGxlZ2FjeS10cnVuaworMTUwMDcgNjY5MDNjM2YxNGRiNDI4NmQ0NmY5M2ExMjYyMTI1ZDNlYzU4MGE1MiBsZWdhY3ktdHJ1bmsKKzE1MDA4IGMzNDFlNjhmMTk4OGUzOTNkMDZiNGIxNzY2ZDg2Yzk1Yzc1OGIwNDIgbGVnYWN5LXRydW5rCisxNTAwOSAwYmE4NTcwOWE2NzEyOTUxYTc3MGExYjVkNTk3MzM4YWRhYzcwYTAwIGxlZ2FjeS10cnVuaworMTUwMTAgMjMyNjYzNTJmMTM4YzAwY2U3YTlmYjBiMTU4YmY3NDc4ZDUxYWMzMyBsZWdhY3ktdHJ1bmsKKzE1MDExIDY1YmM1ZWFmNDdjZTk2ZTEyZWIwNmQ4YWY3YzdkY2RhNzQ2NDk5NGYgbGVnYWN5LXRydW5rCisxNTAxMiBkMWQwMTZhY2NlNzRlYjI4OWE0MTIyZjdlNzEyYzZkNmQyZDk4MzRlIGxlZ2FjeS10cnVuaworMTUwMTMgOGMwZjg2M2JhNTBjNjdlMzhiZjc0N2U0YjdlZDcxYmI4YzAyNmQwNCBsZWdhY3ktdHJ1bmsKKzE1MDE0IGZiMjBmNmZkZDE2ZDZkMDQ4YmM3MWIxYzQyZmM1OTNmYjM5YWExZDkgbGVnYWN5LXRydW5rCisxNTAxNSBhYWMxMTJjY2E3OWI1MTZkOWFlMjEzZWJlNjc4MWEzOGY5MGUwYTIyIGxlZ2FjeS10cnVuaworMTUwMTYgZmY3NWU0NzM0ZGQ5ZmVmZGNhN2IwZjczODZlNjE4ZTgwZjAyZGQxZCBsZWdhY3ktdHJ1bmsKKzE1MDE3IDY0ZmNhZTc4ZDQ3YWY2MzU2NDdiOTZlNWIyNThjMGRmZmI4MWU0OGUgbGVnYWN5LXRydW5rCisxNTAxOCA2NmU5Yzk3ZjlmNjc3YzBiYzY3OGIwOGY3NmI1MDM5Yzk2ZTA1MTZlIGxlZ2FjeS10cnVuaworMTUwMTkgNzZlZDEzOWZjZTU5NzM1ZmM1MGVkOGUxNTBhMmI3NTQ4Y2FlOTdmNCBsZWdhY3ktdHJ1bmsKKzE1MDIwIDNmZGFlY2ZmYzRkZGRiYzUyNTQ1YWNjMTgyMjc1YWVjYmQzYzAwZTIgbGVnYWN5LXRydW5rCisxNTAyMSA5ZTFmNjA5NzYyMDlmMjdmYzNmOGRhZjI0M2ZlNTAwNGVjZjA0ZDUzIGxlZ2FjeS10cnVuaworMTUwMjIgMjYxZTg5NTQ0MDg1NGY5MGQyMTM0M2Q5YTAyNDBmNmY5ZWFjZjI0MiBsZWdhY3ktdHJ1bmsKKzE1MDIzIGY2YjU4YjAyMWU1Njg5Mjk3YjA2ZWZlNjI0NWIwYTljMGE3ZWNhZjAgbGVnYWN5LXRydW5rCisxNTAyNCA4YTFlYzhmYzAwZmVhNjZhNjAzMzA3MTg2ZDkwM2U3ZTY4ZDAzYTZlIGxlZ2FjeS10cnVuaworMTUwMjUgMGFjNDBlNDdiZGI1ZTFmMjI2MDlmZDE4MDNkYTc0MWJkNjRlMTQ0ZiBsZWdhY3ktdHJ1bmsKKzE1MDI2IGZkNzU2MTEyNDIwNzY0YjBkZmFmNmFmYWVjOTE0NmQyYTcxZDdmOTUgbGVnYWN5LXRydW5rCisxNTAyNyA1NTliMjVhNzkwMzJhY2JjNmZkZDljZTRhNzNhZWM0ZmVjYWRlMTJiIGxlZ2FjeS10cnVuaworMTUwMjggY2YxMzM4YmMyMWMwMDBiZjVlZDIwNmFiZDM0ZWU1YzQ4MWMxNTVlMiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNTAyOSBjYTMxZTY3OTAyNGI1Yzg4YTMxYzY4OTFiZThjOThjMjViZTVlMzQ2IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE1MDMxIGNiZmE5NWE2YTAzZWU2OWFlNzhlYmNiZmEyZGVmODM0MTY0NThmMTggbGVnYWN5LXRydW5rCisxNTAzMiA4ZWYzNjcyMzQyNjQ5ZWE1MzlkMzdkODEzOTk2M2EzYjc4ZDRkZGI3IGxlZ2FjeS10cnVuaworMTUwMzMgNTdmZGZhMDBkYTkzMzdhODhmMmZmNWExY2NlOTA2YWIzMDg2ZGVjOCBsZWdhY3ktdHJ1bmsKKzE1MDM0IDY0N2JmNzE5MTJmMDJjMTQ2MzhlMzQ5NzQ4OThmNGYzMGFiYzk2OTMgbGVnYWN5LXRydW5rCisxNTAzNSBhZjhkMjExM2JjMWQwMjRiYzM0ZTU3NjM1MjVmYjJiODE1NDc1MGM0IGxlZ2FjeS10cnVuaworMTUwMzYgZDA2YjUwYmE4MWE2MmNjMWJmMzFmN2Q0MTBiNzM5OTgyOGNmNzc5YiBsZWdhY3ktdHJ1bmsKKzE1MDM3IDUxYzBjM2I2ZDkxOWVmZmM1NjFiYWFlMjEzMGU4ZDQ0ZTI5NWIzN2UgbGVnYWN5LXRydW5rCisxNTAzOCAzYTk0YzdmODU1NTFlODk5ZWU1ZmM3MDdmZTQ3OGUxNGU5MDhiY2ViIGxlZ2FjeS10cnVuaworMTUwMzkgOTYwMTkyNTE4ODI5YjFlZWU5NjI0YWM4OWRkMGY2YTYwODYzNjg1ZSBsZWdhY3ktdHJ1bmsKKzE1MDQwIDljOTZlNWQ0MzdhODIxYjc0OTk0ZTJkODk4ZmNkM2NmYTBkNGU4YjQgbGVnYWN5LXRydW5rCisxNTA0MSA4MTg2MTQ1YzRhMDdkNmUyODZlZTg1YmJhNzEzMWE1OTg2MTk1OWFjIGxlZ2FjeS10cnVuaworMTUwNDIgNGM2YzI0ODE2OTNlZDQwNjkxYjZlY2E0MjQ2NTM5ZmQ2NGRlYzRmOSBsZWdhY3ktdHJ1bmsKKzE1MDQzIGQxZDIyYTM2MjY4Zjk1MzQ1OTljYWQzZGM1MjI3YmJkZDc4YjliYjMgbGVnYWN5LXRydW5rCisxNTA0NCA1ZjM2MjRiZmE1OTRjMzdjZGVhN2M4YmM3Y2E1YWUwMmMwYTUxZTdkIGxlZ2FjeS10cnVuaworMTUwNDUgZmI3NWU4YWNmYjA1Nzk5ZTY3MTM2MmRlNjQzOTZjNzU4NGRlZmYwNiBsZWdhY3ktdHJ1bmsKKzE1MDQ2IDE1ZDQxMTQ5YmYyNDI5NDI5Y2FkNGExZDM5NDE0NWQ1ZDM1NzRkNWYgbGVnYWN5LXRydW5rCisxNTA0NyBiN2YyYjIyNWQwYzAyMDU2OTFhZDg4MTM5NzI5ZDIzN2UzMTVjZDM0IGxlZ2FjeS10cnVuaworMTUwNDggMGQ2NGNlNzM1NGI5OTllNDZmMTRiNzA1ODM2MGU0MjEwZDZiNDQ4YSBsZWdhY3ktdHJ1bmsKKzE1MDQ5IDlhZjk5NzA2NTdmYWViODUzNGQ3NTk5YzU5MzdjNjJhYWM5YjU4NjQgbGVnYWN5LXRydW5rCisxNTA1MCAzNWExMTlhYTE5YjRiZWUzMWI5NDlmYWY1MTg2YTQ2YmE5ZDg0ZWEwIGxlZ2FjeS10cnVuaworMTUwNTEgMjM0NmFjMDc4MGNlOTExYjMzMTk1NWE0MWRjYjY1ZjAzMGMwZWI0YyBsZWdhY3ktdHJ1bmsKKzE1MDUyIGIxNTcyNTZkYmE3Njk3YzliZGI4ZWFkZjliZTc0YTFkNTg1NWRmNTcgbGVnYWN5LXRydW5rCisxNTA1MyAxNjMxOTg2ZGIxM2E2NjRmZjhjMGZhNWZkNGQyY2JiZTc4ODk1YmMwIGxlZ2FjeS10cnVuaworMTUwNTQgZDY0MGU3ZDRhZWM0OGM1ZDYxYzQwZGI2ZDk5N2YyMWI4ZmViMjZhNCBsZWdhY3ktdHJ1bmsKKzE1MDU1IDkxNzJlZGFhZWZmNTg2OTEwZGM0YjUwZTRjOGI0NGMyOGIyZjY5ZDAgbGVnYWN5LXRydW5rCisxNTA1NiAxN2ZjOWY5NTk5MGI0OGUxNzgyN2NlZDkzZDdiNjY2MGUyMjdmM2ZlIGxlZ2FjeS10cnVuaworMTUwNTcgNDBlNThjNWI2Zjg0ZmFkYzI4YTY3YmQxMThkNDAwZDkzYmI1ZTAwMiBsZWdhY3ktdHJ1bmsKKzE1MDU4IGZkOTA1YmIyZjZiNjMxMDMyZjAyZTQzOTE1Mjg4M2Q2OGM4OTNmMWQgbGVnYWN5LXRydW5rCisxNTA1OSAwYzYyZDFjNzZjMDY0OTdkYzBkMzgxMjRiZDY4Y2JlMzUyMGZhNjcyIGxlZ2FjeS10cnVuaworMTUwNjAgYmJhYWRhNDFhMjBiNjlkZDQwZjQyYTg4NmMwMDJmYmZkNmMzMjc0ZSBsZWdhY3ktdHJ1bmsKKzE1MDYxIDFmN2MzMjgwMWRjMTFlODUwMjdiY2I4NzkxMmE5NGQ4YTFlYTUyNjUgbGVnYWN5LXRydW5rCisxNTA2MiAwYTQ1Yjk1M2Y0YzAzZThkZjI5ZjRlMWU4ZjZmZGY5OWI4MTEwMDkxIGxlZ2FjeS10cnVuaworMTUwNjMgZTU0MDkzMDY0Mjk1NWE4N2YwOGJhYjhmOWJjZDNkOWRlOTI2ODllZSBsZWdhY3ktdHJ1bmsKKzE1MDY0IGRkYzRlNjJiMjE2YjJmY2JjNTZjY2FmYTAxYmU3MDUwOTQ1MzVjMmUgbGVnYWN5LXRydW5rCisxNTA2NSBkMzIzOWI3YzA1ZmU5OGRhNTE5OTlmODFiNzc4NTJmODE0OWYwMGU3IGxlZ2FjeS10cnVuaworMTUwNjYgM2U3MGM0NWY4ZDZiYjhlYjI5Y2NlNjlmODIzY2Y3NTU5Zjc4Y2YwZSBsZWdhY3ktdHJ1bmsKKzE1MDY3IGEzYjA0NjIzNGMwOTMxMjFhNGVmODRlM2IwZDEwMDZlYmE3N2VjMjAgbGVnYWN5LXRydW5rCisxNTA2OCBmNzgyNDQ2Mzk1ZGIyZDNlNTliOWRhYjllNmRlYzk5NGY4YWE4ZjIyIGxlZ2FjeS10cnVuaworMTUwNjkgOTBiMmEzY2QzNjVmZTMwYTE3NDBkZTExYWM5MWE1MGRlZjA2MTEwMSBsZWdhY3ktdHJ1bmsKKzE1MDcwIDIwYTVjYmY5ZmNjMDJjNTFjNThiMDRhNGRiNDhmNTg1ZGRjNDYzYTkgbGVnYWN5LXRydW5rCisxNTA3MSBmMWY2NjVlMDc1Y2EzMDU5OWM1NmQ3MWM1MDhjMzM3MjFkMmU2ZGNhIGxlZ2FjeS10cnVuaworMTUwNzIgNTQwZjEwODgxYTU5NzI5ZmU0MTBkMmM5YzAxZjIwNTMzZWFmYzE3NSBsZWdhY3ktdHJ1bmsKKzE1MDczIDI5ZTc1MzQ5M2Q4ZTVkNzg5OWI2YWQ3OTU0OThmNDVmYTk3ZTUxYjAgbGVnYWN5LXRydW5rCisxNTA3NCAyMGEzNzBmMWFmOGRmYTlhNjZmODAwNWM4YjBjNDRjZTUxY2YxZTEyIGxlZ2FjeS10cnVuaworMTUwNzUgNTdmMzRlMTYyZTY3NjI1OGQ4MmFlY2FmM2YyOWZmNDYyMDkwMjIwZSBsZWdhY3ktdHJ1bmsKKzE1MDc2IDVkZTBiOTM5ZmU2MWNjYmRmNzQyMjQ1NWIzYzg3NjNkN2E2ZTBjOWQgbGVnYWN5LXRydW5rCisxNTA3NyBiMzIxNjI3MzgyYmMxNDU5N2ViZjNhOTE3ODUyYjhiYmEyNjljMTU0IGxlZ2FjeS10cnVuaworMTUwNzggZDc2MjlmYTNiMjlmNTgxN2VmNzA1ODJhMmQxYWQyNGJiMjg5YjNkYSBsZWdhY3ktdHJ1bmsKKzE1MDc5IDFhMjA3YzY4ZThiNGQ1ZjhjZWY1M2FkZWU5Y2NiNDU1YWJlZmJkMWEgbGVnYWN5LXRydW5rCisxNTA4MCA3Mjk2Y2RkZThhNWUzYmU5MThhOTkyZDgwMzhiN2MwZGQwYzIxNTY1IGxlZ2FjeS10cnVuaworMTUwODEgYjVmNmI0YmNlZjkwZWNmNjM3Mzc0Yzk1ZmZkNWI3ZjEwNjAyOGJjMSBsZWdhY3ktdHJ1bmsKKzE1MDgyIDk0ODhlNGZkYWZlNDZiMjU1OGFjMjQ1Yjc4OTE1M2VmYTgxMTkxNDggbGVnYWN5LXRydW5rCisxNTA4MyA2NmI0OTA2ZDBmYzZiZTllYTdjZmYxYjQzNjE5MTYyOTRhNzM4NjNmIGxlZ2FjeS10cnVuaworMTUwODQgNGY1NjcxYTMxMzQ3M2M2YWQyYjU0Mjg2YWI1ODEzNzE0Yzk2MWEzOCBsZWdhY3ktdHJ1bmsKKzE1MDg1IDNjYzc3ODQ4YTYyYWY3YjcwNjE2YjA5NmMxZDQyNTdkNmYyODFlOTEgbGVnYWN5LXRydW5rCisxNTA4NiA3N2U0ZjIxZTNlZTY0YTk1ZGJlZjg2ZjY5NGVmNjViZDcyY2Y3MzZjIGxlZ2FjeS10cnVuaworMTUwODcgZDE5NWYxN2YyOTI3MzFlNjFjOTE3OWJjNTI0M2E2N2IxNGI2ZmU4ZCBsZWdhY3ktdHJ1bmsKKzE1MDg4IDZiNDY2N2ZhNDkzODFkYmVkMDBlMDE2Njg2NWY5ZjZhZDIwZDU5MmYgbGVnYWN5LXRydW5rCisxNTA4OSA1MjViMjM1ODcyMWU5ZTkwZjc1NTUyYTJiYjY2ZGM4MDdmMGY3NzQ1IGxlZ2FjeS10cnVuaworMTUwOTAgMzdmZDJlNmM4MWM3ZDcwZTg4NGIxMjg5Y2I1YzQzNDgzMmU4Y2VkNyBsZWdhY3ktdHJ1bmsKKzE1MDkxIGU2OWVlZjY5MjYxMjU1MzM3NjIwMWMyN2JhMGNmNzZlNjE5NzY4ZmMgbGVnYWN5LXRydW5rCisxNTA5MiBkMzM3NDMxMDJmOGFkM2YyMjFlOTMzNmM4Zjk3YzQxMWVlMTBkZDllIGxlZ2FjeS10cnVuaworMTUwOTMgODUxMGI0YWIzYzNkZWJjMzNhMWQ3MzdlNWJlY2I3NTVhYzUwNWY2MyBsZWdhY3ktdHJ1bmsKKzE1MDk0IDE4NWRlNGU3Y2VmMTBlMmJkNDAzNjFmMDg2MDhkM2I3YzRkNWZkZmEgbGVnYWN5LXRydW5rCisxNTA5NSA5ZTk2NjZmNjc5ZjcyYzI1NjgwYThjNjdiZGI5ZDE0YjkwZGE2ZjEyIGxlZ2FjeS10cnVuaworMTUwOTYgZTI2MjBhYWI5ZjJkNmNiMWNlODVkY2MwYWJiYjhiMzczNGM2OWEyNCBsZWdhY3ktdHJ1bmsKKzE1MDk3IGZjNTU3ZjQzMWU4N2UwZGRiNjMxODY1YWE1MWU5OWE3M2M5NGVhNTQgbGVnYWN5LXRydW5rCisxNTA5OCBhYTNiMDJhMDM4YTM3YWFhN2RhMjU2Yjc1ZWIyODczMTVlNDJhZTE1IGxlZ2FjeS10cnVuaworMTUwOTkgYmU1MTAwYWZhMWI3ZWQxYTljZGVmYmYxNzkyYzI0Y2Q3NDJiNjY1ZiBsZWdhY3ktdHJ1bmsKKzE1MTAwIGZjZjU4OGQ4NmIxNDA5ZWZlZjI3ZmRlN2M3OGQwMjlhNjBhZDJlYTYgbGVnYWN5LXRydW5rCisxNTEwMSBlOTUyYTRiOTIwYWRmMDdiNTAzNDA0ODE5MTZmYTM5NjBkNTY2MTNlIGxlZ2FjeS10cnVuaworMTUxMDIgMjRkNDExNjg5N2RkNDQ3YjgxYzI2ZmI4OWFjODE5MDU0NzRhYjA3YSBsZWdhY3ktdHJ1bmsKKzE1MTAzIGZhY2MxMDViNjQxYjAxYjliZGU2OGRlOTVhODY4NzViYzMyMjBmMjggbGVnYWN5LXRydW5rCisxNTEwNCAxNjgwNGIzN2Q3NTI1Y2U5MTBiZjYyZWU2Zjk5ZmFhYzAwYjc2NGVhIGxlZ2FjeS10cnVuaworMTUxMDUgZTQzNDliNjJmZDliNDE5YzMxNDgzMjhjNmY3ZjQyZmMxYmM2MjBkMiBsZWdhY3ktdHJ1bmsKKzE1MTA2IGM1OWJkYzdmZDhhNjFkY2FjZGUxMjA1OWQ2MmMzNjIxODdiMDk0MGYgbGVnYWN5LXRydW5rCisxNTEwNyA2Nzg1NjE5YzMzZTFjYjFjOTVlODFjNzIyNzYyYmU4MjEzNmMxMDE0IGxlZ2FjeS10cnVuaworMTUxMDggMTc5YTZlMjg1MGFjYTVkMGM3NTE3NmQzYzg4YWYyOWU0NTJhMzRlYyBsZWdhY3ktdHJ1bmsKKzE1MTA5IDU0ZTgwZGI0OTQyMzc1ZWI5YzFkYzU5ZDBhOTlmYmFjNWU4ZDA5NzggbGVnYWN5LXRydW5rCisxNTExMCA5OTZlYjNiM2IzM2VjNTMyM2Y1MDZjNDFmNGViNWNhN2M5MDU2MmM1IGxlZ2FjeS10cnVuaworMTUxMTEgMDQ4MDJiN2U4YTFmMDg0NmU3MGE0MDExNjcwN2E3ODM3ZjY0NmE5OSBsZWdhY3ktdHJ1bmsKKzE1MTEyIDFlNzkxZDJlODg3NTJlMmVlNzZkOTY2NTE3ZTZiMWI3YWY1MmVjZWYgbGVnYWN5LXRydW5rCisxNTExMyA1YjU5ZWE0MWRiNGU4NjkwYjE2NzZlNGU1MGM1ZDBkZDY2YjJiMWIyIGxlZ2FjeS10cnVuaworMTUxMTQgZmJjOGRhZmE0NDg0YzdlMGI0Y2E0Y2M2MzFjYzVkY2Q3ODRmYWVkYSBsZWdhY3ktdHJ1bmsKKzE1MTE1IDExZWNiNjY3MGY0ZjllNDgwMTY1NjFlMTgzMGVkNTFhZGQ0Y2RhMjkgbGVnYWN5LXRydW5rCisxNTExNiBmNzNiZjQ5MjQzODY4MmYzOGNmZDg4ZGI1ZmE2ZDg5NmI2OGYzN2IzIGxlZ2FjeS10cnVuaworMTUxMTcgNzkxYTExMmJlM2JjZjhiYWNhODFjMjY5ZDk3ZTBiYTBjMzZhOGEzZCBsZWdhY3ktdHJ1bmsKKzE1MTE4IDg3Nzk2OWVjMDk2ZmQ0ZjYxMDU4NmNiNWJhOWI2Yjk5MTJmMDk4ZDIgbGVnYWN5LXRydW5rCisxNTExOSA3ZjY1MGRmMjcxYzllM2VlOWYzYzliNTAwODlkYzhmNzNkY2RkZWViIGxlZ2FjeS10cnVuaworMTUxMjAgZTY0ZmFhNmUyNzAyMmQzM2I1MWMzMTVkZWJkMjFkZGEzN2RiNzU5OSBsZWdhY3ktdHJ1bmsKKzE1MTIxIDdmYTc2Y2NkZjJkZTczZjM2ODI0NDY5MDdlOTdlNjRlZGMzMzYwMGYgbGVnYWN5LXRydW5rCisxNTEyMiAwNDgxMDk2YTBmNDViYzk3MDgxN2Q2ZmI5Y2YxMTQwNGQ0OWEzNzQzIGxlZ2FjeS10cnVuaworMTUxMjMgNjc3ZTIxNDc4MjlhOWQyY2EwYjlmZjRkY2RhNzdmMTg1YTNmNzg2ZCBsZWdhY3ktdHJ1bmsKKzE1MTI0IGMyZDBkNjc0NGIzYmI3ZTUxNDRiN2IzOTgwYTkwMWVhODFmYmYyMWEgbGVnYWN5LXRydW5rCisxNTEyNSA2OGU0OGJiOTQwNzExZmIxOGE2YzY3YjA3NmUzMzNlOGM3NzMzNTk1IGxlZ2FjeS10cnVuaworMTUxMjYgYWY4N2ZjYWU4ODBmZDljOGU0NzVmZGNmY2Y4OGNmM2RiNmYyNjVmZCBsZWdhY3ktdHJ1bmsKKzE1MTI3IDQyOWEzN2ZmOWRiNWNjMjdiZTkxNjBkODM3NzI1NjdiNjUyODkwOGIgbGVnYWN5LXRydW5rCisxNTEyOCAyMTQzMDNkMzJmNzY2NGQ0M2Y4NGJkZDBhNjU4Y2FhZDNkMjM0YzQ5IGxlZ2FjeS10cnVuaworMTUxMjkgZDYzYjU3YWM2MTdkNGRiMjNiYmE2YTRkNjM0YmYyYzk4NzQzNjZiNyBsZWdhY3ktdHJ1bmsKKzE1MTMwIGY1N2FmMzYwYjdlNWVmMzdlNjNhODg2ZmNjODRhOTcxYjliZWEyY2UgbGVnYWN5LXRydW5rCisxNTEzMCAwMTFiZWU4ZmQ5ZjdmNGRhNDU3ZWM3MTU5NjQ4NGZiMDg4MmMwNjE0IGxlZ2FjeS10cnVuaworMTUxMzIgNmNlNmMyM2FjZDE0MjFjODYxNGFkYjRhYTc2ZDI3MzliMTNmY2UyZCBsZWdhY3ktdHJ1bmsKKzE1MTMzIDA1MmZiZDkzMTQ5MjFmZjdjN2U4MmRlMTg4MmIzMjU2MjlhZTFkZGIgbGVnYWN5LXRydW5rCisxNTEzNCA2M2FkNzU0YWEzMGVlMmU2NmU2ZTUwMDVhYTVlZDZmMjYzMmViYTAxIGxlZ2FjeS10cnVuaworMTUxMzUgM2JlMmY3NTRjMDIzOWI4MWJlMTIzNjQyNjY4MDEyNGYwNzhkZTAwNiBsZWdhY3ktdHJ1bmsKKzE1MTM2IDM3ZDlkZWQ1YWI5MTQ1MDlmNDQzMmU0MzBhNmY2N2FjYjg1MWFjNjQgbGVnYWN5LXRydW5rCisxNTEzNyAxMTZjM2FhM2NjZjcyZDE1ZGU4YzU2ZGQyNDRmN2I3OTM5NzI4NjEzIGxlZ2FjeS10cnVuaworMTUxMzggNWYyOWQ3YzAyNDMzODcxODU4ZGNjNDcyMTU4YTBkZjBiYTVjNmY1MiBsZWdhY3ktdHJ1bmsKKzE1MTQwIGJlODI1NzNlNDQ0NDgyZDUwOTNlMDQ1ZDY1MDNhNzBlMjI0M2IxOGMgbGVnYWN5LXRydW5rCisxNTE0MSBhYTAxM2YyY2Y4MGJlOGJkMDE1YWE4N2JiZGE0OTg5NDU3M2YyNjg2IGxlZ2FjeS10cnVuaworMTUxNDIgNjI3MjI2ZGY5ZjAxODFkOWE3NTEwZGI0NGUxYWVmYjVmY2VmNmRjMCBsZWdhY3ktdHJ1bmsKKzE1MTQzIDMyZTlkMGU3ODkzNTMzNDM2NDlhMjVhOWU2YTc4NWVlMzg2MGQwZTYgbGVnYWN5LXRydW5rCisxNTE0NCBlZWY2YTI1ZjA5YzUzMTZkYjhhMjE5MzUzMWM1MjZlMGZiM2YyNTQzIGxlZ2FjeS10cnVuaworMTUxNDUgYzQ4MTcyYWYxM2RjMTUyOGNhZWU2NWEwNmUxNzFlZTBmNTAyZjMxMSBsZWdhY3ktdHJ1bmsKKzE1MTQ2IGU1YjBiZWEwM2NmYTUwNTU2ZWNlYTEwMDVhYTg1NDc4MGYxZmQ0M2IgbGVnYWN5LXRydW5rCisxNTE0NyA2ZWRiYWU2ZGJjZjU1YThiN2IyYzY4NzkyODk0NTA3M2ZiOWQyM2NiIGxlZ2FjeS10cnVuaworMTUxNDggYTZmMGIzOTlmNjY1Njk1OTE5ODA5OGIxN2E4Y2Q2ZWYyMTA5NjQ4NyBsZWdhY3ktdHJ1bmsKKzE1MTQ5IDhkN2UwNzczN2I0YzZhMTRjMmVmZWYxYThhYTQ0N2EzNGMzMWI0ZDQgbGVnYWN5LXRydW5rCisxNTE1MCBhMDQ5OGIxNTI0NGNkMTBjOGRiYWEyMDA2M2Q5NTFjZjg0ZjAzMmI5IGxlZ2FjeS10cnVuaworMTUxNTEgNjBkZDk1Yzc1OTk5OTM2MjljNDk2ZGUyYzQ2MzE0MDNlNmU1Yjg0NiBsZWdhY3ktdHJ1bmsKKzE1MTUyIDNiYjM5ODk5NjI5MWY5M2YyMWY3NDgxYjJkM2Y0YjA3ZDEzNjY2N2UgbGVnYWN5LXRydW5rCisxNTE1MyBmODJiMjU3N2ZhMGNmMDY3MjZmN2E0OGFlMTI2ODcxM2NiNGU5NzFlIGxlZ2FjeS10cnVuaworMTUxNTQgZjA3MDViY2Y2NzNiMmM3NTNhMTRiYTA3MzM2NzQxMmMwOGQ2Y2IwZCBsZWdhY3ktdHJ1bmsKKzE1MTU1IDIzOTJkMTBlMjFmMTY5NGY2N2E5NDcyNDBjMzg4NzIwOTg2MDRhM2EgbGVnYWN5LXRydW5rCisxNTE1NiA4YmY5MTMwMjA2MDRlY2RlZDQ3OTgyZDQ2NDg1MzA4Y2M2ZWFkNTk3IGxlZ2FjeS10cnVuaworMTUxNTcgOWYyYzdmNzI3MmZhNzFlZGIwYzFkYTk3NzhmNTczMDQxNWJlNmI1NiBsZWdhY3ktdHJ1bmsKKzE1MTU4IGE1NzQzZTE0Nzg2MGMxNmFhNjViM2M4NWNiNjlkZmRhNjQyYjVmOWMgbGVnYWN5LXRydW5rCisxNTE1OSA0YzUxYTk2NmQyYTM5MGViMzYxNDRlZTczM2RlNTBjZGQ4NzQ5MjU4IGxlZ2FjeS10cnVuaworMTUxNjAgODFjOTY2YjM1YzEyNjIyMDFiZjZjY2U1ZmI0NTMzYWQxOTgwYTUxNiBsZWdhY3ktdHJ1bmsKKzE1MTYxIDY3ZTk2MTU3N2QwZWI4ZmEzOGVkOWNhOTY0ZGU1NDcwM2I3MjhjMTkgbGVnYWN5LXRydW5rCisxNTE2MiAxNTU1NGQzYTY4YzcxNWM4Mzk1ZWQxNDVjMjMxNmVmYjEzMGFjMWQ3IGxlZ2FjeS10cnVuaworMTUxNjMgZWM2YjZjYTVkMTExNjIzYWY3NWJjNmZkMDUyZGJiYWYyOTU2ZjAyYiBsZWdhY3ktdHJ1bmsKKzE1MTY0IDAxY2ZmOWZlMmQ0NTIxMjk1NThiNDdkZDdkZjdjMWFmMjY2NDI0ODEgbGVnYWN5LXRydW5rCisxNTE2NSAyZmI2YzczOWQzMjQ3MWMxMWRkZTFkZTU3NDFkYmU0ZTZlZTQyZjIyIGxlZ2FjeS10cnVuaworMTUxNjYgY2I0ZjBkODE4ODBkNWI0YjU4MzU5MjJlYjU3MmJhZmVlMjI0YzUxZSBsZWdhY3ktdHJ1bmsKKzE1MTY3IDViODcwYzBlYTdiNjFhMGY4ZGI0MGJiZWU2MTYxMmE0NjQyNzllYzUgbGVnYWN5LXRydW5rCisxNTE2OCA0YzVkNjJlODY3NWIzODkxMjRiNjJjOTFkODhhMTE3NGUzZGQ5Y2ViIGxlZ2FjeS10cnVuaworMTUxNjkgYWU1MjVhYjIzZWVmYzYxZWM1MmRiZTk3NzFlMjZlNDViMjhmNjhmNSBsZWdhY3ktdHJ1bmsKKzE1MTcwIDdkZTkwMmMxZjQzOWU1NmQxZTkwOGZmODEwM2I2ZjQ0MzBkMDBlNzQgbGVnYWN5LXRydW5rCisxNTE3MSAyZmM1M2RkYTIwZWI2M2U0NTcwY2NiNDM0YTg1N2ViNjQ3YTdmYTAwIGxlZ2FjeS10cnVuaworMTUxNzIgMGI2ODk5MDA4OWQyMTQ5ZTAzNDJmMDJjNmZjMWU1NGU1YTRiODMyMCBsZWdhY3ktdHJ1bmsKKzE1MTczIDk1ZTI5NmU2N2ExMmMwMWRkNjI5ZDg4YzNlNjg0Nzc4YTRmOGY5Y2MgbGVnYWN5LXRydW5rCisxNTE3NCAyNTljNGI5YzRjODg5NzZmYjIzMTcxZmZjOWI5ZGJjZWVmNjZlMjQwIGxlZ2FjeS10cnVuaworMTUxNzUgYWUxMDYzNzllNzU2YzI3NzZjYTY5YzA0M2UxZmNhZjBkOTc0YjQxZCBsZWdhY3ktdHJ1bmsKKzE1MTc2IDFjODVhZTY3NmJhN2U1ZGJiODIxMDY2Zjg0NDA1MzkzYjFmY2EzMWEgbGVnYWN5LXRydW5rCisxNTE3NyAzNjI2MjYxMTg5YjQ4ZDliMTdhMzZjN2U1MzFmMGY3MzU4MzFhZDBiIGxlZ2FjeS10cnVuaworMTUxNzggNjk3OTk2NmVlOTRkYTE2N2EwZWMxNmFkNTJjOWVhOGIwYmUzNTc2YyBsZWdhY3ktdHJ1bmsKKzE1MTc5IDZmYjQwYTg1YTUxOTc1ODk5NTRmNjIyMzM2ZTA0ODdiZWQ4OTBhNzggbGVnYWN5LXRydW5rCisxNTE4MCAwZDEzY2UyZTE1NWI5MzgyNjdmM2Y0MTk5YTA5YmQ2ODQ0YTQ1ZTljIGxlZ2FjeS10cnVuaworMTUxODEgMGFlNjM1MjNkNTA0YmRmYTM4OGMxNjY5YjgzMzc3OGY0ZWRiMzBlNiBsZWdhY3ktdHJ1bmsKKzE1MTgyIGMwYmYzZWQ5MzgzNTgwZmZlMDcyZTlmNWJhZDY0MzI4OWU0MTI5ZGEgbGVnYWN5LXRydW5rCisxNTE4MyBlODdlNmJkZmNiZGM2Nzc4OTFkMjM2NTAzZjZkMGM2Njc1NjU4NTNlIGxlZ2FjeS10cnVuaworMTUxODQgOTc4Yzk2ODdiZWVmNGZkNjRkZWI1NTQ4NGNjMmQxZDc5ODY2NmQ1NyBsZWdhY3ktdHJ1bmsKKzE1MTg1IDZiMmI5YTIzYTQxZjFmOGNhNTY0ODY4NWM0ZWM2NDNjMGI1MTViZWEgbGVnYWN5LXRydW5rCisxNTE4NiBkOTQwMGM0NzZiOWRjMmU1ZTMxMTY0N2RjYWJhNDNjOTBlMWNmNDY1IGxlZ2FjeS10cnVuaworMTUxODcgYzYwNTllNzBiYWIyM2JlYmQ0ODY3ZjkwMmVjNjRhZTY3MzRlZDk1YiBsZWdhY3ktdHJ1bmsKKzE1MTg4IGNhOTg5NDJmZTEwM2I5Y2MyMjAyMTI4MThlZTRkNzFhNWIyZWVjMzYgbGVnYWN5LXRydW5rCisxNTE4OSAzZmQxMzIyMmE4NzZmM2ExODc3ODk5OTZjODJlNjc5ODAzMTcwNjI1IGxlZ2FjeS10cnVuaworMTUxOTAgODE2MTMzNDk0MmQ0ZmY1YjMxYTYwMTk4YTk2ZDgwZTJjMTk3MGViZCBsZWdhY3ktdHJ1bmsKKzE1MTkxIDZhOGNkMDY4MjA5NjFlYWI5MDBiMjczZWFmMzNhMTc3ZjBkODYyNmIgbGVnYWN5LXRydW5rCisxNTE5MiBjYTdiOTlkMjdhNDA3MWExZTFhOWM1NTk5ZDgxN2I3MjA4ZjQ0YTIyIGxlZ2FjeS10cnVuaworMTUxOTMgZGZmN2IyNjExNmRlYmQzYmY0ZGQxNGM1ZGZhMjI1YmYxOGRhN2IxZSBsZWdhY3ktdHJ1bmsKKzE1MTk0IDgyODljMGU1NTFjZDMxMjg0ZmZiOGJmYmNiOTI4NTJmOWRhN2IzY2UgbGVnYWN5LXRydW5rCisxNTE5NSBmMGI3MTkxM2MwYWE3YjA4Y2MzMDczNzRmZmVhMDM3YjlhNjUyOWM3IGxlZ2FjeS10cnVuaworMTUxOTYgNDU2ODY5ZWFhN2Q1OTFhNWRkYjg3YjVkNWFhZDI3OGQ4MzJlODFiZiBsZWdhY3ktdHJ1bmsKKzE1MTk3IGQ0NzQ2MGIxYTY3OTk3Mjc3MDQzZmMyNTM1ZjI2MjdlNGYxZGY1YzMgbGVnYWN5LXRydW5rCisxNTE5OCBkNzYzMzQxZDMzMTBiZTBlYjQ2ZjU1Y2E4MGI0Yzk4MDFkNDJhZjUxIGxlZ2FjeS10cnVuaworMTUxOTkgYzk5YmJhOWU5MjEyY2IxMGRlMzQ1MzY1ZmRkNWYzNTk5ZTJjNmRhYiBsZWdhY3ktdHJ1bmsKKzE1MjAwIGY4NzYxNjRmYTE1MTQ5ODlkMWY0MzE3MjNlNTQzZTEzOTVhMTQ5M2EgbGVnYWN5LXRydW5rCisxNTIwMSAwM2I4MTkxMjgzNWViZTliNWMxYWVmMThjNzkxODJmMTM5Njk3ZjA0IGxlZ2FjeS10cnVuaworMTUyMDIgOWM0YTRlNmJkNTU1YWVkMGE3NjEzYWY0ZGUxODU1ZjJlNjkwOWMxYyBsZWdhY3ktdHJ1bmsKKzE1MjAzIGUzNjdhZDNlYTU5YTg2MWQzMWIxMGM4ZTFlOGMwZjE4OGMyZGRlNTMgbGVnYWN5LXRydW5rCisxNTIwNCA5NTFkODRlMWQ1NGJlYjAwNzY0OTNlZjE1ZTBjMTkyNTY1ZGRlYzI2IGxlZ2FjeS10cnVuaworMTUyMDUgZTNiYjIzOWIyZGJmNWUwNWRiN2U0ZDgyMmExYTczYmU0ODk0NGE4YiBsZWdhY3ktdHJ1bmsKKzE1MjA2IDE5ZjUzZDhiZDI5ODEwNmMyODY3NjQ5Y2I5ZTAyZGFlNTM2NmRjOTIgbGVnYWN5LXRydW5rCisxNTIwNyAxNmRjODA3MzFjMjNhMjBjMTkwMzRmMDdhYjY5ZTQxMmY2NWU4NzJkIGxlZ2FjeS10cnVuaworMTUyMDggMzNiYTA2MjZlZjcyYTllMTAzYTg1ZTM1Mzg5OWI2OTVhZTlhNTc1NSBsZWdhY3ktdHJ1bmsKKzE1MjA5IDM0NjliMmYxNzYyNGY4NjI3MjE0YzE2Yjk5YWU1ZGYwZDE2YWVhZDUgbGVnYWN5LXRydW5rCisxNTIxMSBkMGYyOTBiM2MwYjIzYmMwNTg0YWQ5NGMxYzA5NzA3NzIwYzM2ZDZjIGxlZ2FjeS10cnVuaworMTUyMTIgNDg2MTYxODk0NTA3ZjQwNThlN2U0ZTdiNTc0Njg2NWQ1Yzc1YjgwMyBsZWdhY3ktdHJ1bmsKKzE1MjEzIDRjYjMzMzQ4MjE2MGM4ZjgyMzA5Y2NkYTFlOWM0NjQxZDg0YjRlMWIgbGVnYWN5LXRydW5rCisxNTIxNCBkZTM2NWI2NWMxN2JjOGQ5ZjMyZjBjZTY5YTRhOGM0ZGU0YmMwM2I2IGxlZ2FjeS10cnVuaworMTUyMTUgZDVmZGM5YjFlNDc0YzcyMWNlZWQ1ZmM2MjU5MWVlNjkyYmY5ZTc3MSBsZWdhY3ktdHJ1bmsKKzE1MjE2IGMyOGZhMDFlNzMyOWMzYzQxNmMxZmQ1ZWFiZmU1ZmRhN2M3Mjg5N2EgbGVnYWN5LXRydW5rCisxNTIxNyBlNzYyM2QwMTkyN2M4YzlmYjViZDkyOTNlNTExZDg5YjJjZmY2YWNmIGxlZ2FjeS10cnVuaworMTUyMTggZTViMzFhY2IxMGNlYjZiZjEzOGQyOWVmZjhmMGQ5ZTYxMjAyMjIxYiBsZWdhY3ktdHJ1bmsKKzE1MjE5IGZkMGU1ZGFlZjg2YWU2ZGEyZTZmN2UwYjg4ZDJhZjk2Mjk4NzFhNmEgbGVnYWN5LXRydW5rCisxNTIyMCAxNDRhODk1NzBhMzljZjA1YzUxNDdlZWEzYzJjN2EyZmE4ZmZiNzBjIGxlZ2FjeS10cnVuaworMTUyMjEgNzRkNGU0NTNhN2Y3ZGEzOTY1ZTE1MzhiMGNlZDM5NjAxYzQ2OGQxZSBsZWdhY3ktdHJ1bmsKKzE1MjIyIDE4OTUxYTAyNGQxMWRmMmE3NTg5MDZiYjYyN2U1OTlmNDY2YThkNGIgbGVnYWN5LXRydW5rCisxNTIyMyA2ZjUwOTZhOGQwM2EyMGI4YzU3NWFjNmM5OTc5NjFjODRkNGI1NzgxIGxlZ2FjeS10cnVuaworMTUyMjQgNDliMGI4NDZmNjgzNDcyZDM0MzA2MWVkMDExZWYzZjBlZDMxMDM5YiBsZWdhY3ktdHJ1bmsKKzE1MjI1IDBiZjhhYmQwMmJkOGQ3Y2QxZTY0ZTc0YWIxOGZjYTZkNzAwMjVhNDggbGVnYWN5LXRydW5rCisxNTIyNiAxODFjNmY5NWY2ZjZhNWViYmUzYzdjM2RlOWE3ODg0M2Q1ZGMzODJlIGxlZ2FjeS10cnVuaworMTUyMjcgNzYxM2Y4YjNjMWNlNGNkNTA5OGRlZTI2NzkxZTIzZDFjNzQyMmMyYiBsZWdhY3ktdHJ1bmsKKzE1MjI4IGUzOWViOTBiMjUwYTAyYTYyNDFkZmM0OTY3MDc2MjI2NDg4YzcxMTUgbGVnYWN5LXRydW5rCisxNTIyOSAyYTJkNWZmOTMzMDgwNzcxODY1YjliYTBlZTBjM2NkMzk2OTJjZWVmIGxlZ2FjeS10cnVuaworMTUyMzAgZTU2N2UzM2RlNjQ1YmY3MGQyNWU2YTRhNjI4YWIwNzllMmZlMzY4NCBsZWdhY3ktdHJ1bmsKKzE1MjMxIGZjYjkyYjk2ZjFhZmI1NjAzOTMxMmMwMjIzMDVkY2Y3ODdmNzExNWQgbGVnYWN5LXRydW5rCisxNTIzMiA2OTlkZmIxMjU0Y2JmNzIzOGJmMjkyZjQ5ZWI3YzE1N2IwMTE5Y2I0IGxlZ2FjeS10cnVuaworMTUyMzMgYzI3ZjQ4NGFlZmZmYTdmZTQzMDZmZjE0NjVlYTY2NDAxNDNmMDY3NSBsZWdhY3ktdHJ1bmsKKzE1MjM0IDM1MDBjNDM1MGY2MjZlMTEwYzA4OTI1NTQyZTdlODM2OGUxYzU2NmEgbGVnYWN5LXRydW5rCisxNTIzNSBmMWJmZjFlYzc5NmI2NDEwOTMyMTE1YzE2NDhkZjc5MzBlNDI0OGNkIGxlZ2FjeS10cnVuaworMTUyMzYgODY2YWYxZDg3OTcwODRjNjcyYWZjOGE2NTM1N2ExMzg3N2U1N2JjYiBsZWdhY3ktdHJ1bmsKKzE1MjM3IGEzZTFmZWNiNDNjNmU1MTlkZGFkZDE1MDcwZTA3NzEwZmUwZmY1OWQgbGVnYWN5LXRydW5rCisxNTIzOCBiZTFkNzVlMTZjYjgxNjI5ZTRjMTk4ZTRmZGRmYzRhZTlmZDFiOWMwIGxlZ2FjeS10cnVuaworMTUyMzkgYTg4OThhMTcyZmUyZjA3Njk3MjU3NTc1ZjM0NjU5MzRhNjlkY2Q3MyBsZWdhY3ktdHJ1bmsKKzE1MjQwIGEzYzBiNmNkZDE2OGE2OTQzMTNmYmFkODljYjhiNzk1OTMzMDM1ZDkgbGVnYWN5LXRydW5rCisxNTI0MSAxOWUzZThmOGM1NzRkMjJhNjg2YmEzOTFkMjQ5MWY2MDBkMzdlODcyIGxlZ2FjeS10cnVuaworMTUyNDIgZmMyNzY4Nzc1ZjgyMTk4MzkwMmViYTUwOTE2MWQyOGIyMzdjZjZiMSBsZWdhY3ktdHJ1bmsKKzE1MjQzIDBkYjVhMzYwMjUyNjFmZjhlNjcxZjA0N2E2ZTc0OGRmMjM4YjBiZjUgbGVnYWN5LXRydW5rCisxNTI0NSAxMGFkYmY4MTgzZTY4ZTAyN2Q1NTk5OTVmMTA3ZjEyOGJkNmZiNGI3IGxlZ2FjeS10cnVuaworMTUyNDYgZjFlODY3YWQ3ZDg1YWMzYTMwNDAyY2M0OTIzYzlhOTQyNmQwYzM4YiBsZWdhY3ktdHJ1bmsKKzE1MjQ3IDhiMzMwZDE2MzgwMDc3MTgwNTY1ODA3MDcxNzVjZmE4YzU4NDJmNDIgbGVnYWN5LXRydW5rCisxNTI0OCAxOTU4NTcxZDI1YzE2YmNlNGRmY2M1OTY4ODI4NWViZjMyNWE5NGQ1IGxlZ2FjeS10cnVuaworMTUyNDkgNGNlZTJkYTNkYWNmZDc1ZGM3ZDExNzM4YjI5NGFjM2UzNWJjNDUzMiBsZWdhY3ktdHJ1bmsKKzE1MjUwIDcyMGQzNTU2YjE0Mzg1MjE3ZmYzNTYxNmIyYmU1NmIzNjc5ZjIwMTUgbGVnYWN5LXRydW5rCisxNTI1MSAxNzI1ZTgwMmUzZWJkNTJlN2RhNWJkOWE4NDI3NjBiN2E2NTljN2VkIGxlZ2FjeS10cnVuaworMTUyNTIgMDRjZmExMzQxYTUwOWMxNzk2OWQ5MWE0ZjI3ZTc5YWI1MDU1NmI1MiBsZWdhY3ktdHJ1bmsKKzE1MjUzIDFjYmE2NTg5Y2U2NjdjZWY3YzQ1Njk5NTQ5ZmZkZWUwODM2MDcxNmQgbGVnYWN5LXRydW5rCisxNTI1NCBiZWYyNGQ0OGFmYzhjNWI0ZDM2YWQxOGM2MDQyMjA2NjdjYmUxOTFjIGxlZ2FjeS10cnVuaworMTUyNTUgMmE1M2EzYTQ3OTYyYThmZjJmMDg0ZWMzNmNmZGVkNzhjYmViZWQ4MiBsZWdhY3ktdHJ1bmsKKzE1MjU2IGU1MGJiYjhlOThkYWQyYWU4YmMyYzg3YzUyMTc3YzRlNDViOGQyNzAgbGVnYWN5LXRydW5rCisxNTI1NyAwZDc1NTU1ZWQ2ZWI2ZDk3MDkwNmVhZDBhY2E2NTkyM2VlYzQyYmRmIGxlZ2FjeS10cnVuaworMTUyNTggMDc4MGFiYTk3ODk4OTMxOGFmMjBmZTRlZDYyMzU2ZjE2MDlkMDM2OCBsZWdhY3ktdHJ1bmsKKzE1MjU5IGViNDMzZWZhMjRkZWVhODQ2MmRmMDUwODU5MDQ5ZGI0OGIyOWNmNWEgbGVnYWN5LXRydW5rCisxNTI2MCBiZDkyYzUzYjE2Njk5MzM0NGExNGI1Mjg0NTQxNDAzYjg5NzA1YmU5IGxlZ2FjeS10cnVuaworMTUyNjEgMmNlMmE4MzI1M2U4MDMxN2M0MjdiZmZhNjU2YmY2OGNlYzU4OGI3YiBsZWdhY3ktdHJ1bmsKKzE1MjYyIDIxMTQ4M2JkMGE1MTgyZGNiNjM2MGMzZTY4MDI1M2I3Yzg2OTg1ZmEgbGVnYWN5LXRydW5rCisxNTI2MyA0NGU1MjFhOTM2NDhhNTEyN2VhNGQ3MGE4ZjVmODg5NGZjZDUzMTNkIGxlZ2FjeS10cnVuaworMTUyNjQgNWMzZTU5OTlkYWExNmI4MTE5NjkzZjc5OTc0MjM1NjhiZWM1ZDMwOCBsZWdhY3ktdHJ1bmsKKzE1MjY1IGY0ZGQ3Yzg4NDhmY2E0NWQ4YjNlYjBhM2VkZTJiMDQxMDdjMzNlYzAgbGVnYWN5LXRydW5rCisxNTI2NiA1NjYxZjRmOWE0N2Y3OTg0ODhiNDlmYTU5N2NkNzIxMTdjODdhMjdjIGxlZ2FjeS10cnVuaworMTUyNjcgYjc2YmFjY2NkMzQ2MzEwZDYyYTk3OWJlN2RhOWIxZjQ0MTg3MTY2YiBsZWdhY3ktdHJ1bmsKKzE1MjY4IGU2M2VjY2JhODczYjc2NDc0MWFlNTQyNGRhNDYzMWRlMTM2NDc5ZGMgbGVnYWN5LXRydW5rCisxNTI2OSAxM2ExNjc5M2JiMWNmMDgwOThjYmRhYWM3NGQwZjAwYjhjYTE1YzhkIGxlZ2FjeS10cnVuaworMTUyNzAgODc0N2YxYzhiNWZiZWIxZjc4ZGYzYTM5ZjY3ZjNiYTc5ZmVhMDlmYiBsZWdhY3ktdHJ1bmsKKzE1MjcxIGE2MTE1NzMyOGIxMjFlMTVkYjYxMTEzYmJkNWQ4YTQ1MzI2MmU4YjggbGVnYWN5LXRydW5rCisxNTI3MiBjYTBlOWQ5N2Q1NTRjNDg1YWRkNmJiOGE4NTU5ZTIxOTFkODU1OGI3IGxlZ2FjeS10cnVuaworMTUyNzMgYmE1NDg2MmM4Nzg1YzIwZWY4ODdkZjQ5NjUwYTdiM2JlNGY4ZjJiMSBsZWdhY3ktdHJ1bmsKKzE1Mjc0IGZiNDc3NTExMWVkOWQ1MTJmNTFjODA0NGRkMWUzNzBhZjUxOGZmMDMgbGVnYWN5LXRydW5rCisxNTI3NSBlNmU5MTRkNWIyMDcyZmU0NmVkZDU4NmRkNDNkNzY4MzQ1ODkyNDA3IGxlZ2FjeS10cnVuaworMTUyNzYgNmViZTBhY2I3Nzc2NDkxMmNhM2UwOGFhMzJkYWM4ODZlMmZjY2EyNSBsZWdhY3ktdHJ1bmsKKzE1Mjc3IDllNTNhNzExMjM5NWZiNDA5ZDgwNTZkMzgzM2JiMmI2ODFlMzUxZTAgbGVnYWN5LXRydW5rCisxNTI3OCBhZjlkNjIzYmFiYjA3NzE3NzUxMGI4Y2YwMDhlODg2NjE0ZjkxZTlhIGxlZ2FjeS10cnVuaworMTUyNzkgYjZiN2JkMjBjODQ1YjczNzY4OWIxMjkwYzUxMDdhMGFiYmQ0MjE5MiBsZWdhY3ktdHJ1bmsKKzE1MjgwIGQzNTdhZThmYmZlNTkwYWFhYjFjZjVlNmNhNGY0YWE4NzFjYjQzMDUgbGVnYWN5LXRydW5rCisxNTI4MSAwYzI4YzljYWJiZGFlYjBmYjk3ZWQ2NTJkZmI5NjAzZjdjMzdmMGQ2IGxlZ2FjeS10cnVuaworMTUyODIgMDE5ZWFlZjYzN2ZmNWY5OWNlNjEyYTFkOWY4OGQ0YWQ5M2MyM2UyNCBsZWdhY3ktdHJ1bmsKKzE1MjgzIDRhZTEyNzMxMmJiZmQ3ODVlZGI3ZmQzMTc5OGU0ZDhmNDBiZWZhZDEgbGVnYWN5LXRydW5rCisxNTI4NCBiNDc2ZTRhOGM4OTExZDJjNGVlYWJhZGNmMWQ3NTE5YjNkZTQ0NmIyIGxlZ2FjeS10cnVuaworMTUyODUgNmY3Mzg0OGI4NDUyMTkxOTNmMGUwZDJiYWUwYzVlYjBhZDE5Yjg2OSBsZWdhY3ktdHJ1bmsKKzE1Mjg2IDVhZTg1YmRjNWY2MTY1MGE1NGRkODFmODFhM2IzODA2MjFhYzMzM2UgbGVnYWN5LXRydW5rCisxNTI4NyBjMGFkYmM5Y2E1ODEzMThkNjQ0Mjk4NmNkYzMyYWI0ZTQ2NjI2ZDIwIGxlZ2FjeS10cnVuaworMTUyODggNTQwZDliYjE2NDM5ZjA3YmFjZTA3YWY3YTM4NjE0NDJiNjJlNWU0YyBsZWdhY3ktdHJ1bmsKKzE1Mjg5IGMyYmI1ZTRiMDRhODlkNjNmNzAyODQzNDI0YjZmYzM2NjI1ZDUyYTEgbGVnYWN5LXRydW5rCisxNTI5MCA4NGNkNTJiNTYwZTU3MWViYTM3MWQ3MTM2YWJjYzljNDJjMjdiMDAyIGxlZ2FjeS10cnVuaworMTUyOTEgODJjYmIyZGZlOGJkYjI3YmUxMjM3MGJkYTgzMGM5Mjc1NjA0OGQ0NCBsZWdhY3ktdHJ1bmsKKzE1MjkyIDUyMzU2NTZmOWQwZjBlMjJkY2QxMTNhNTA4ODcxZmI2MGNhNTIwOTQgbGVnYWN5LXRydW5rCisxNTI5MyAxODkyOThhMWZhYjRjMjIzMjg2ZmRkMjY4Nzc5MzNlMTFlNDFlODkwIGxlZ2FjeS10cnVuaworMTUyOTQgOGE1MDM2NTQ0NzI3Nzg4MzVmMWI1ZmIyZmNlNzEzMDQyM2JiYjJkYiBsZWdhY3ktdHJ1bmsKKzE1Mjk1IGNjMDVlZGNjY2Y1MmJhMzdhZjUyZGU0ODA2OWY2ODIzNTJjNDBhZTIgbGVnYWN5LXRydW5rCisxNTI5NiA3Y2MzZGQ3Y2QzMWFjNmE1Y2Y4MjZmYjBiYzgzZDZkZmZjMzk2YzIxIGxlZ2FjeS10cnVuaworMTUyOTcgODU5ZTUwMGYwNzYwMDQ2M2Q1N2RiYjlmNjY4N2U2MTM0OWE3NjZmNSBsZWdhY3ktdHJ1bmsKKzE1Mjk4IGQ3NDg0YTc0MzM1NDFhYTk3OGYwNDM3MjZiYzc5ZjUyMTdkYTIwMDkgbGVnYWN5LXRydW5rCisxNTI5OSA4MWExMjFkMjEzNDA4M2ZkYmJmMzI2ZTYxNzRmMTM3OTdiMzRhMDRmIGxlZ2FjeS10cnVuaworMTUzMDAgYzM0YmEzZTNjZmNkMzg1MGRjYzQxN2U2YmJhOWM3YjU3Mjg5OTQ0YyBsZWdhY3ktdHJ1bmsKKzE1MzAxIDU5ZWUxNzEyNDUxMTU5YzkxOGFkMjk4NjY0ZTk3ZDgxYjRlYTBlNDcgbGVnYWN5LXRydW5rCisxNTMwMiBjOGRiZDVmNzAyODhiODQ5YzdlMGFmOTMzN2VjN2EwODQ2MzZjNzUyIGxlZ2FjeS10cnVuaworMTUzMDMgNTk5YmZhNGZmZDQ5YzE0NTk0YmNiNTQ0MjBjMGI0MzFkMThhNzc0NSBsZWdhY3ktdHJ1bmsKKzE1MzA0IDZiNjQ3ZTA4NzkyNWFiNzczOGQ0MWQ1ODE4ZmI0OGJkNDdjN2IzODcgbGVnYWN5LXRydW5rCisxNTMwNSA3NjllZGIyZGE4YjkzZmY3YTIxNGE4MmEwMTFiYTI0MDVhZjBhZjA2IGxlZ2FjeS10cnVuaworMTUzMDYgMTc3ZTYxYzU1NDI2ZGI0MTY2ODJmOWE2NzhjYjQ0YWM2MTdlZjYxMyBsZWdhY3ktdHJ1bmsKKzE1MzA3IDNlNmU4Zjc2YTk4ODM4MzYzOGRjODc1ODdhZTRjOGIzMTA5NGFlNmQgbGVnYWN5LXRydW5rCisxNTMwOCBlZmQxZTVkMjI4NGFmNTRlYTMzZjMzODFlMDNhNjA0YmM5ODcyNWNlIGxlZ2FjeS10cnVuaworMTUzMDkgZGM5ZDFiNzFjYzM4MGM2ZjdlZTU4NTcyZTU0NmViNjhhMGE4MjVkYiBsZWdhY3ktdHJ1bmsKKzE1MzEwIGJlZjY3NWRjMTFjYzBiYzE4NDQ3MmRmNjcwZjZmZDdjYWNlNjM0YWQgbGVnYWN5LXRydW5rCisxNTMxMSA2NmU0N2U4NWVjNTNiNWViYTg3YjAwYTVlZTEwY2U3YzFlMjViYzM4IGxlZ2FjeS10cnVuaworMTUzMTIgMTJjNzRiMTAyZDAyN2Q3ZGIwNmUzYTJhMDMwMzlkNWNlY2NiMzYxMiBsZWdhY3ktdHJ1bmsKKzE1MzEzIDhmN2IyNGI0MGRlNzM2MTczYTQzYzQ5MTM0YTA1NDE3ZTYzMmVlOWEgbGVnYWN5LXRydW5rCisxNTMxNCAwNGNmNzg4ZDg2MmJlMDZhYTlmZmY4ZDlmMWYyZTU0ODhkOTFkNzA4IGxlZ2FjeS10cnVuaworMTUzMTUgNzgzODBkZmIyYTkwNmRhZTI2ZGQwY2JkNGU5ZTEzYWE3NzlhMDkzYSBsZWdhY3ktdHJ1bmsKKzE1MzE2IDlhODQxZDY4NDUzYTdjOGRlZWY1MjE5Y2QzMmE2NzBiOTA0YmEzZWUgbGVnYWN5LXRydW5rCisxNTMxNyA0ZGY4NDYyYTI1OWRlYjg4MGYyYTc4ZjRjNWU0NjdkOGQxMTRlMDFiIGxlZ2FjeS10cnVuaworMTUzMTggM2I4ZDllNjNlNGUxNTdiNzE1ZTc5NjhhODZmYTRiYzRjOWQ4NzI5NCBsZWdhY3ktdHJ1bmsKKzE1MzE5IDM4ZDVhMTFkOWNkNGIwMDBlZjYxYTQxNjdmYTY2Nzg3M2ViOGU4OTYgbGVnYWN5LXRydW5rCisxNTMyMCA3YjhkMGE0N2RhYTk3YjY2NjAwZDkyNmYyZWE3NWJhNjRjN2Y1MjVlIGxlZ2FjeS10cnVuaworMTUzMjEgN2IwZTBiNTg2N2UyZDM5NjYxMDMzYmNiNzYzNTgzMzkyOTRiZjk2ZCBsZWdhY3ktdHJ1bmsKKzE1MzIyIGI4N2Q3NTc5OGQ4MTZjMzJhMTRjY2VmZTE4MGJlNjI4ZmJkZTVjNGYgbGVnYWN5LXRydW5rCisxNTMyMyBiMGE0MzUwZDVjMDMxMzc4ODM0MTJhYWU0YjQyN2YxY2Y1NzFiNTQ3IGxlZ2FjeS10cnVuaworMTUzMjQgNTM5YTFhOTlhNzhiNDgyMzZmMDBjMmQ2MjgzYjYxZGUyNjBhZGFjZSBsZWdhY3ktdHJ1bmsKKzE1MzI1IDE5ZTYxYjhmNGUwMDZjZGYyYmY2NDhiNTUxNWVjZTZlYjllZDM5YjMgbGVnYWN5LXRydW5rCisxNTMyNiAxYmUyMzMxNTg4YjIzOGIzZDhmZDgwMmMyYzM2MTQzYWYxNDg3OGMzIGxlZ2FjeS10cnVuaworMTUzMjcgNjZkZDI5OGVhZjhhNWQ0YWE1ZjgyYTY2OGEyYzg4YmNhYjI1Y2ViMiBsZWdhY3ktdHJ1bmsKKzE1MzI4IDlhOTdhNzE0YTFiZTAzMDFlZmM1YTQ5YmFiYmFkYWFhMjZlODU3MTYgbGVnYWN5LXRydW5rCisxNTMyOSAzZGJlNDEzODAyNjY2MDg0M2E2ZDZiZWY1NGRjZDM5OWYzOTE2MTllIGxlZ2FjeS10cnVuaworMTUzMzAgOGJjZDE0MzEzYzExY2RjOTE3NjhjMTY1MDFmN2RjYmQ1YTNjMDlkOCBsZWdhY3ktdHJ1bmsKKzE1MzMxIDBkZjE4Zjk0NzI2NzhjNmMwYzMyNGM4NjA3NzNjOGJiMzUzYzE3NjUgbGVnYWN5LXRydW5rCisxNTMzMiA1OTUyZWY2Nzg2YzIwMDgzM2ZjYzNiMWZhYTRjNzI5MTcxYTM5MjE5IGxlZ2FjeS10cnVuaworMTUzMzMgYWVlN2M0NGJiNGZlNWJlZmJlZGU3YThmOGE0Njc2MGY0ZmU5NmY1NiBsZWdhY3ktdHJ1bmsKKzE1MzM0IDhiYThiNTg1N2U4OTc1NmM4YWI3MWRmNzM4YTc1Yzg1OWM1ZTdmMDcgbGVnYWN5LXRydW5rCisxNTMzNSBhZjg2Y2Y4ODJkMGZmYzBkNjFhZTEyY2Y1ZWY3ZWViZWM1NzEyY2ZjIHVubGFiZWxlZC0xLjk4LjIKKzE1MzM2IDFjN2MyZGQxYmViMWY4MTA2YTdhZmE2MWQ0YjhiYWJjYzgzZTE3NTcgbGVnYWN5LXRydW5rCisxNTMzNyBkYzc4OWIzZTJiOWI5OGQ4NDYwZjAwZTFmMWM5MTVhNDVkMjIxMWE1IHVubGFiZWxlZC0yLjEwOC4yCisxNTMzOCA4NWYwMGY4Y2Q2NzRiYmM2MzdjMTgxZmU1YWM3NWE4MTcwZTVhZjQxIGxlZ2FjeS10cnVuaworMTUzMzkgMDc3NDU2YzMyNGJjNTk4OTAxNDkwYmEwYTQ1MTc3MDA1ZTVjMTBmOSBsZWdhY3ktdHJ1bmsKKzE1MzQwIDk3ODI1MzU0MjA3NjBjYmVlOTYwYjg2YzEzZjM4YWQxN2Q5OWE3OWQgbGVnYWN5LXRydW5rCisxNTM0MSBlMGExMjA5NWZhYzJlMTA4ZGQ3ZGMzNDY2MjhiNzBlZDBmNDVmZjM0IGxlZ2FjeS10cnVuaworMTUzNDIgNmFjM2EyYzAwNDBmY2IxZGZiNGM4OGQ5MmVjYTg2YjNlNmQ5YzBhOSBsZWdhY3ktdHJ1bmsKKzE1MzQzIDBiYWIxZTM2YTNhNmMyM2Y3MzZhMDk1MTk4MDlhZTkxMzI5MGRlYTkgbGVnYWN5LXRydW5rCisxNTM0NCBkYjk0NThjMmI2MzEwN2YzNTA1NjFkYTJmZmZkYzdiM2Q1ZThmMTljIGxlZ2FjeS10cnVuaworMTUzNDUgY2RlNGRhMThjNGZhMDlhYWQ4MjE5ZDY1OTZmMWJmZTM5OTdiMjA3MyBsZWdhY3ktdHJ1bmsKKzE1MzQ2IDBiOTFjM2IzODRkOGNjMzZlZGQzNGFhNDM2MTMyODhlM2NmZDZkODggbGVnYWN5LXRydW5rCisxNTM0NyA2Y2UyMWU0NWE5NmVlYmI4ODk1YTgyODZmYmExMTMyYzQ4ZTJhZTMzIGxlZ2FjeS10cnVuaworMTUzNDggNDg1ZDVlYWYwZjc1NzEwNmYwNDZiNDJjOTc4ZWE3NTIwZGEwOTA5ZSBsZWdhY3ktdHJ1bmsKKzE1MzQ5IDU0Mjc0YmViMjQ0ZDFkOWIwYzZlMzRkZjI0M2M5NzMyODRkM2UxNzggbGVnYWN5LXRydW5rCisxNTM1MCAyY2M2ZTZkZmU5YmI3NTY1ZTMxN2I1ZjZiN2NhZjExNDg1NzRlMDRjIGxlZ2FjeS10cnVuaworMTUzNTEgY2VmNDVmMWE3OTQzMDc4Y2IwNGRhNWM5NzJmMzY1NjQ4M2EwMjYxNCBsZWdhY3ktdHJ1bmsKKzE1MzUyIGU0NDI2NjJiMjhlMTg5MDAxNzFlYjllYzM0NzNjNjA1ODljNWJhMjIgbGVnYWN5LXRydW5rCisxNTM1MyA3NmIzMzk5YjM2NGNkZDY2MTQ5OGM4MWZiMDlhZjhhZWM5YWJkNTQyIGxlZ2FjeS10cnVuaworMTUzNTQgZWFlZTkyNGVmYjE5MmNkOTk0MGUwMTk2YTdiZmJiNThmZWJhZWYyYyBsZWdhY3ktdHJ1bmsKKzE1MzU1IDUyOGNmZTg3OTY2NTIwN2ExZTRjZTdkMDI1ZDkwYTkxMzIzODM3YzkgbGVnYWN5LXRydW5rCisxNTM1NiAwNWMwNjcxNTY1N2JjYzRlMDkyNmE4YzUyY2VkYTc1MDM3YmU0Y2RlIGxlZ2FjeS10cnVuaworMTUzNTcgNTY0MjNiOTM4MGY0Zjc2YjM2YzA2YzJkMmRmM2YyYWM1M2NiODRhNCBsZWdhY3ktdHJ1bmsKKzE1MzU4IDYyNmM5N2FiMTI4Y2ZlOTk3Njg2ZDYzZTdhMTNmOTE3OGRiNzgzNDIgbGVnYWN5LXRydW5rCisxNTM1OSA5MmQxZGRjMWM1N2ZkYjllMDZjNjQwYTdkZDJmMmNlYTFjNTZiYTkwIGxlZ2FjeS10cnVuaworMTUzNjAgNjQ1NWQ4ZmI3ODc2MWU2OTY3Zjk3ZWUwYzc2Njc5Y2U0MDVhNWI3MiBsZWdhY3ktdHJ1bmsKKzE1MzYxIGI1NzBkNGNkNjQwYWMzOGRmZWJmM2UzNmE5ZTk2NzBhY2Y4YjU1NzUgbGVnYWN5LXRydW5rCisxNTM2MiA4MmYxNzZiNzA2N2I3Y2YzMmM2NmQ5MmQ5N2YxYzZhZTIxYTg5NjE0IGxlZ2FjeS10cnVuaworMTUzNjMgZGQ2MDc4ZDIwZjdmODJlMDViOWIxODMxZjc2ZDlhYTAyMzZhZjc3ZiBsZWdhY3ktdHJ1bmsKKzE1MzY0IDM1Y2RiM2QwM2ZkMzUyYzUwMGRlZDU1Y2MwMTc5Zjk0OWU2ZjI0MTkgbGVnYWN5LXRydW5rCisxNTM2NSBiNWY3YWIyNzIyMzc5NTMzNGM5OTQwMzAwZjM0ZGQxNDZiODZiNDJjIGxlZ2FjeS10cnVuaworMTUzNjYgYTExMTI5Y2VlY2E1ZGY2OWU0N2MxYmJjN2JhZmQwZTdmZjg5ODU3OCBsZWdhY3ktdHJ1bmsKKzE1MzY3IDUxMjUzZTA4Zjc2Nzg4MTBjZGQxNDBkOGE2NzFlOTVjNGI4YzJmNjQgbGVnYWN5LXRydW5rCisxNTM2OCBhOGFiMDllZjQ4YjdhZjU1ZjU3NTQ2ZTk3NTUyNTE5MDQ5NDFiMDQxIGxlZ2FjeS10cnVuaworMTUzNjkgMzJiZDRiYWQxMDhiYThjY2M0YjQ2YTcyMDlhYzljZDA4N2M1MmM1ZCBsZWdhY3ktdHJ1bmsKKzE1MzcwIDcxZTQyMDI5NmVmMTEyN2VlNTUxNTA0YjFlNGQ3YjE0MmI2ZjIxYjcgbGVnYWN5LXRydW5rCisxNTM3MSBjMTk1ZmExNTc1NDFjNjFjZmY3ZDgzZGI2MTM5NzcyOTY5MWUyM2Q2IGxlZ2FjeS10cnVuaworMTUzNzIgYjMyMGNmM2E5OGI5MDZmZGFmN2Y1N2YwYTc1NmQ1MDAwMWM4ZmIyZiBsZWdhY3ktdHJ1bmsKKzE1MzczIDU2NDhkZjc0Mzk1ZjliNDM3YmQ5ZmFjMjRjOTAwZjU0YTA5Njk5YWYgbGVnYWN5LXRydW5rCisxNTM3NCA4MjI4YzNhZTkxMzBhYTg4MDgzYjRjMjY2NzM2NzBkYzIyMzRmMzBiIGxlZ2FjeS10cnVuaworMTUzNzUgOGQ3YWQzODE4ZWE2ZTczOGM1ZTljZTg3MDlhY2Y1N2RiMmQyZTk2MCBsZWdhY3ktdHJ1bmsKKzE1Mzc2IDY3MjMzZGYxMzAzNzNlNzdlMTkyYTJiNjczZmJlY2NlMTFkNTQ2ZDcgbGVnYWN5LXRydW5rCisxNTM3NyA4MWJhYmJhNWJkMzRlOTliMzEwM2ExYzkyODdiMDRhMzk4MjVhNTgyIGxlZ2FjeS10cnVuaworMTUzNzggZDljZmEyZTZmNzgyMDg1MDc4MTY3ZWQwMGFjYzFjZGU1ZDNiZTlmMSBsZWdhY3ktdHJ1bmsKKzE1Mzc5IGNjNDM1MGIxYjkxZmM5NTM3MjE3YThjNDJhYjVkNTE3YjgyMTQxYjggbGVnYWN5LXRydW5rCisxNTM4MCBlYjQ5MTQxZDZlMTBmMDc1NDQ2MWUzN2Y2ZGQ4ZWNkOGY5NDQ2NWI0IGxlZ2FjeS10cnVuaworMTUzODEgOWVhNmFlOGNmMDVjYmVjZjg5YjE4NGM3ODBjZTljYWQyNTZiN2FhMiBsZWdhY3ktdHJ1bmsKKzE1MzgyIDhhODJkZGFlYmE2YWExNDBhYzE2ZmQ3M2YzZDJjYWNhMGFlNGU3NzggbGVnYWN5LXRydW5rCisxNTM4MyBmN2Y5YTc0MGVkMWNiNWQyM2IyZDk0YTExODkyMDgyMjVkOTAyZTc1IGxlZ2FjeS10cnVuaworMTUzODQgOWE3NzI1ZWE3OGViMGIwYTcxMTQzNjBmNzI0NTcwZmVlNTQzMzViYiBsZWdhY3ktdHJ1bmsKKzE1Mzg1IDZlMDczYmE1MTQxNDJkOTkwMDc1MDk5MTRhYTRkYThhOTBhZGM3NWIgbGVnYWN5LXRydW5rCisxNTM4NiAxMTFkYzkxNjhlNDM1YzJjMmU3ZmEzYjQxMWQ1ODQ3NTdkNzMyMjY2IGxlZ2FjeS10cnVuaworMTUzODcgYTZjODQxM2IzYzRmZjUzODZiNTU4N2IyODk0YmNiNDRiM2Q3N2M1OCBsZWdhY3ktdHJ1bmsKKzE1Mzg4IDg3ZjU5NDZjNTZmNTY2YjVmYzM3MjFjOTdlN2YwMDhhZTM4Y2RhZjAgbGVnYWN5LXRydW5rCisxNTM4OSBlN2M5OGFmMDIwODQ5MWQ5Y2MxYzM4ZDJkNDJiMGRhZDQ2NGNiZTBmIGxlZ2FjeS10cnVuaworMTUzOTAgM2VmZWFhNzUyMWU0MWIyZmFkZDY4ZGIxODEzOTFlYTE0MDlmNTdiYyBsZWdhY3ktdHJ1bmsKKzE1MzkxIDU3ZDRmYzgzMDhlM2YxN2NmNzMyYjA3Mjk2NjFkOTllZTQ0MTUzMDUgbGVnYWN5LXRydW5rCisxNTM5MiAxMzJlMjcxNDlmOWYzZDY3OGUxY2FlMTNmZjQ0NDRmMDZkMmEwMTc2IGxlZ2FjeS10cnVuaworMTUzOTMgMzRkMmI1MGVmZjJlYjkzMWQ1MTNiMGNjZTg0YTBiOWQ3YzE4M2ExMCBsZWdhY3ktdHJ1bmsKKzE1Mzk0IGE1NjcwN2IwN2I4MWRkNDQxN2E0NjFlNDE1ZWI0ZWFlM2I1YmM0NmIgbGVnYWN5LXRydW5rCisxNTM5NSBkZGY5ODZhOTcxYjU2OGE0MjJiMzVmNGM1YmNiY2U4MGE3NDQ5MWEzIGxlZ2FjeS10cnVuaworMTUzOTYgYmVhM2Q3NzBiZTBhYzRlZWIwZTQ1YWIzYTI5MjFhNmQ2MGNhZTViMiBsZWdhY3ktdHJ1bmsKKzE1Mzk3IDc1ZGE5ZDYzNTMxZDMyNTc5MDQ0ODZlYzdiZGU3NmM0MTYwZWM0NDkgbGVnYWN5LXRydW5rCisxNTM5OCA2OTQ4MWNkZTUxMWQ4NjVkZjcxOWFjMGU2NjYyMGJlMWZiMTkxYTU5IGxlZ2FjeS10cnVuaworMTUzOTkgZGVmOTU5MzUyNDIyZDE4ZDdkYjNkNjE5YmQyOGNlMTk5ZTU4YmJiNCBsZWdhY3ktdHJ1bmsKKzE1NDAwIDkxN2Q4NDVlNmU1ZjIxZTQ5OWU1ZTk3YTU2MjU5OTNhY2JiNTUxY2EgbGVnYWN5LXRydW5rCisxNTQwMSAzZjA2ZjQ3NjViYTQyMWIyZmU3ODc1NDViYTQyYjUxYTY5ZDA1YWNkIGxlZ2FjeS10cnVuaworMTU0MDIgMDA0YmIyMGRiMTFlMDg2N2VjNTQwMDk3MzZjZWU3MDdhYmQ4ODNmMSBsZWdhY3ktdHJ1bmsKKzE1NDAzIDkxYjJlYzIwNzYzMzQ5ZWY0MGVhMzEyOThjZmFjMjE5Y2IxNjkyMzkgbGVnYWN5LXRydW5rCisxNTQwNCAwNmZmOTY2ZjY5ZDUyZjNiMDM3MDg0ZDQzY2E1YTk5ZjAzMmJjOTM0IGxlZ2FjeS10cnVuaworMTU0MDUgMDBhYTYzZDZkMjZlYTBkNTAwMjE5Mjc1NjgzNmY1YmZiMzVkZDc5YyBsZWdhY3ktdHJ1bmsKKzE1NDA2IGM0ZWI3MGQyNGE4NzNmY2M0M2NlNWUxOTIzZjBkNTIwNGE2Y2YzYzEgbGVnYWN5LXRydW5rCisxNTQwNyAxN2QxYTNmMWYwODVkN2E2NGUzNmY1MGJkMzBmNTM0YTRhNDkyZjcwIGxlZ2FjeS10cnVuaworMTU0MDggMDM1YWJiOTMwMzE3ZjNkYzgwZWQ0ODNmMWIyNzczODQ0ODk3M2IzNCBsZWdhY3ktdHJ1bmsKKzE1NDA5IDJhNTNmNWRjMDU5MGZkZDgwYjA2YjljY2QyYzBjNzMzOTU4OGVhOTAgbGVnYWN5LXRydW5rCisxNTQxMCBjOTI2Njg3NjZmNWRmOWI5YWUzNDMyMjdmMDJmN2I2MjNmOTYwNjkxIGxlZ2FjeS10cnVuaworMTU0MTEgMWIwODNmZWQ5YTQ4ZjNiNGU1NWE4ODRjMWQ5NjQ4NTBlMDk5ZDA3ZiBsZWdhY3ktdHJ1bmsKKzE1NDEyIGZhYTk4YzhmM2Y0MjI1MjU5ZjQwNDA0OWJhOTcxYjgxZmUyYjhkNzUgbGVnYWN5LXRydW5rCisxNTQxMyA4NjYzNjViNDRmMjM3NDg1N2Q3OTFlNmMwNjRjODc2OWI0YTY4NmYyIGxlZ2FjeS10cnVuaworMTU0MTQgMGEzMDgxZGU1NWExODU3ODdkYmM0MzY1OGJkNjI5Mzk1YmU2ODMxYSBsZWdhY3ktdHJ1bmsKKzE1NDE1IDZiMTQzY2E0ZmQ3ZjIzNGUwNDcyYmRmMTRjNDVkNDUwYjg3ZGIwNzMgbGVnYWN5LXRydW5rCisxNTQxNiA0Y2M3NGJmODBlMGJjN2ZiMjgyMzc1MWJiMmI0YTUzMjU3MGQ2YWMyIGxlZ2FjeS10cnVuaworMTU0MTcgZjdhODk5NjQ3Y2IzZmIwZjA5YjlkYzE0MDk1YjAzYmI0NmE2MTMyNiBsZWdhY3ktdHJ1bmsKKzE1NDE4IDgwNWJiOTBhZjE0ZDcxMGY0M2YxOGZhMTUwNmI1YzFmNDMzMTQ5NWEgbGVnYWN5LXRydW5rCisxNTQxOSBlMmU0MzZhNjI4OTgxOTEyMjI5MWEyZGY3N2RhNWMzM2RkN2ZlMzU4IGxlZ2FjeS10cnVuaworMTU0MjAgYjY1NjNkOWRmMDZkMDcyZTMyMjkzNDJlN2YxZTA2MTZkMWY2NzI3ZSBsZWdhY3ktdHJ1bmsKKzE1NDIxIDA1NDkzM2ZhZjc3YTExN2RkZjM3NDRiZmJmNTAwOTk0NjZhNjAyMTQgbGVnYWN5LXRydW5rCisxNTQyMiBiOTFmZGMyOWM1YmQyYzBhMzZkMjQyZDMyZmM0ZTJmZWM3ZDliYTg1IGxlZ2FjeS10cnVuaworMTU0MjMgYWE5YTYzNWE2ZjQ3N2E4NzU5OWI5YjJkMGIzNWE0OTVlNjk2ZTc0NSBsZWdhY3ktdHJ1bmsKKzE1NDI0IDFlYThjZjg4NWY3YmQ5MzFiZjhjNTlkZjY4NjE2ZDg2MTIxN2QxZmIgbGVnYWN5LXRydW5rCisxNTQyNSBiNzc4OTFmYTkzYjBlNDNkMDM0Y2M3YzM5ZDk1MDUyMDlhZDdjMzVjIGxlZ2FjeS10cnVuaworMTU0MjYgMDU3MDk3Nzk2MTIwYjg2M2NkODhkZDhjNjUxZjZiODI5ZDMxNDZhZiBsZWdhY3ktdHJ1bmsKKzE1NDI3IDRkZjUyMzk5OGU1ZDk0OTc2M2EzMjc3Mjc1MjY5NWNkZGQxYTVhZDYgbGVnYWN5LXRydW5rCisxNTQyOCA3ZDAyNTViZWUwZjk4YTgxM2RhNTcwOTBmOTA4YTBlNzM3ZmQ1MDRjIGxlZ2FjeS10cnVuaworMTU0MjkgMDZhMzQ2ZWIzY2JmMDNiMDY1ZmQxMWExNDRkNzZmYmQ1NDE4YTIyMiBsZWdhY3ktdHJ1bmsKKzE1NDMwIDJhNmRjNjVjMDYwZjU4ZGQzMDFlYThkOTk4YzNhYTliOGFlN2RhYmYgbGVnYWN5LXRydW5rCisxNTQzMSAyZmViOTc5MGI0MDQ1NmZlYzczNjRjYmFkYTk2ODM1OWM3NzBkYTdlIGxlZ2FjeS10cnVuaworMTU0MzIgYTAyZTZhNDNjYTE1YjA5OTFlMTdjNTRiYjNjYWI2OGQ4OWI0OTdmOCBsZWdhY3ktdHJ1bmsKKzE1NDMzIDQ3YmRiNjM2MTU5YzgwNWEzNTdlMmViMThkMGIwMTYwOTI2MDU4MGEgbGVnYWN5LXRydW5rCisxNTQzNCA1NjQ2NzczMzIwYmVhNmRhZDY0YjU1NDUwODA2YTI3NTc3ODFhOTJjIGxlZ2FjeS10cnVuaworMTU0MzUgMTE2ZmM0MzA1YTM5YjEzMmVkMmVmZjdjZmRkYWViNDU1OTQ2YWJhOSBsZWdhY3ktdHJ1bmsKKzE1NDM2IGRlNDM1YTU5YTRkNTM1NTVkMTUxZTA0MTBmMTUwNGVkNDkyNzM4MmQgbGVnYWN5LXRydW5rCisxNTQzNyAwN2RjM2VkMTdkZDVkOTViNmU0ZTZhZjU2ODM1YzVjOGZkY2E1YzNmIGxlZ2FjeS10cnVuaworMTU0MzggMjM0MDc0NTQ1ZWI0ZTE5N2E3ZjhkZThiMzU2NTRiMzUyZDQ2NmRhMyBsZWdhY3ktdHJ1bmsKKzE1NDM5IDg3NWU2NzcyMzZhNzE4OTg4MjZiZTk4MjA0NjNjMTJjY2VmZjBkMjQgbGVnYWN5LXRydW5rCisxNTQ0MCA4ZTgxYzZjNTI0YjIwNWFkNTEzMjVmNWE0NmE1MmJhMmMwZDllNTVjIGxlZ2FjeS10cnVuaworMTU0NDEgYjg5ZGEyMDJkMThkNzY5YzNhYTgzZjY5OWEzZmEwZjI5ODVhZDRjMyBsZWdhY3ktdHJ1bmsKKzE1NDQyIGJkYWU2YjkwOTM0ZjQ2ZGQ0NjhhM2MzMDg5NDliZDZjMzA2NzM3MjEgbGVnYWN5LXRydW5rCisxNTQ0MyA3Yzg5ZWU0MDczMGY0MGUzMDU0N2ZmMDM3ZmE1ZDAxMWNlY2ZkYTM5IGxlZ2FjeS10cnVuaworMTU0NDQgMmUxYjA0ODNiMTAxYjMwNzY0ODJjZDdjZDQ1M2ZjMmMwNzQzMThkYiBsZWdhY3ktdHJ1bmsKKzE1NDQ1IDM0ZjA5MDZmZTgyMzQ4NDYxNGRiOWZiNWExNjI5ZmIzMmI3YjJiZTEgbGVnYWN5LXRydW5rCisxNTQ0NiBjYmY5ZDY3YjVmYzFmNWIwYTM0ZTljNGRmYWY2ZjM4YTcwMjA5YjFjIGxlZ2FjeS10cnVuaworMTU0NDcgYmM5NmM5MTJkY2U4Y2Q1OWVlMGNkODQ2ZDc4NTg5ZmIxNmI1YjEzOSBsZWdhY3ktdHJ1bmsKKzE1NDQ4IDZiYWQxNjc4OWY3OWI0NTI1MzNkMjkxNzYwN2FmOTIyODhmOWE3MWYgbGVnYWN5LXRydW5rCisxNTQ0OSA5Y2I5NjA4NjA1MjhmMzM3ZmZkNDE1M2U3YzU4NTM0OGU5Njk0Nzg2IGxlZ2FjeS10cnVuaworMTU0NTAgMjBiM2I5NzY1Y2VjNjZiZGFhN2NhNGJkNTI0NmQ4MjdiNjI3MjkxMyBsZWdhY3ktdHJ1bmsKKzE1NDUxIDcyOGMxNjA1MzM2OGFlZGM2MGFkNmRiODNhMTA0YzQwYjM1NDFmZGEgbGVnYWN5LXRydW5rCisxNTQ1MiA3YjQ2NmE3M2M5NjE2NjNlOGI4YzI0N2U4Mzk4OWZhYmI5MmQ4ZTgwIGxlZ2FjeS10cnVuaworMTU0NTMgNDIwZjlhYWY4ODBiZGUzMWRlNGQxMGM4OGYyYTFiMzBhNTk4ODljNCBsZWdhY3ktdHJ1bmsKKzE1NDU0IDFkZWU5M2ViOWVlMzIxNWE3ZjVmZjZhYWRkNjcxMjg1OWU0NTQ4ZDUgbGVnYWN5LXRydW5rCisxNTQ1NSBhOTQyNjliZDY1ODU5MTk0YWQ1MWRhZTgzNDI0OGMwMDYxYWM2ZTc5IGxlZ2FjeS10cnVuaworMTU0NTYgYTQ4YjYwYjZlYjQ4MzdkYzY4ZTM2MWY4N2MwMzc0ZjY1MDUzZWQ3NiBsZWdhY3ktdHJ1bmsKKzE1NDU3IGE0OWU0NTA2ODhlMmUwZDY4MDUzZGYwZDllZGViMWRmZDIzMDg0MmEgbGVnYWN5LXRydW5rCisxNTQ1OCA5MDI4MDBkOGU4YmUxMTVlNTJlNWIyNGJiMTkxY2NkNzEzMGI4NmFhIGxlZ2FjeS10cnVuaworMTU0NTkgZWIxNzE4YzVhNTZjMGRiZWEwM2ZlZDkyY2JjZTFjZjRiYzY2NzdmYyBsZWdhY3ktdHJ1bmsKKzE1NDYwIGVlOTcyY2E2NWMxYzIzMTRhYTFhZjc4ZDRmMDcxODE0YTNlNDk5MmQgbGVnYWN5LXRydW5rCisxNTQ2MSA5NGVkZTA0YjlhOWVlYWRmYTI0YzE2OGVlM2IwYTRhZWFhZTU5ODA3IGxlZ2FjeS10cnVuaworMTU0NjIgOTBjNzkwNmIwOTk5YjUxYTc1ZDhkYTUxZjc1OWViMzA4MWI2MmU4OCBsZWdhY3ktdHJ1bmsKKzE1NDYzIDU4YWQ2MTk2ZDgxZjJiNDg5OTU0ZTE0ZjNmYWM3MmJmMWI1OWQ4YjcgbGVnYWN5LXRydW5rCisxNTQ2NCBmNTU1ZmQ4MDUwODU1ZWE4YzE5OTg0ZmRiYjczODJhNjdkMmVkOWY1IGxlZ2FjeS10cnVuaworMTU0NjUgNjA1OWE5Mjc5ZDk5OTRiMDVkYTYwYzIyZjVhYmJmNjBmOWUzOWQ4ZiBsZWdhY3ktdHJ1bmsKKzE1NDY2IDdmZjVhZTEwYTc3MWQ3YzZkOWZkODhiMmQ1MDlkZjZiMmI2MWNjNzAgbGVnYWN5LXRydW5rCisxNTQ2NyAyOTc3NWMyODcyMzc4ZjU0MzhkYTdlNGU5NWQ4ZGYyOWE4Y2IwOTMwIGxlZ2FjeS10cnVuaworMTU0NjggOWFiZWZjNWIxZDg5YTJmYjYzMTJiNzRiMGM2YTAyOGJiNGJkNzU2NCBsZWdhY3ktdHJ1bmsKKzE1NDY5IDM1MzA1OTkxNzE5YjUxN2UyOWRkNWYxYTlhYTEyM2UwODg2ZTc1NmYgbGVnYWN5LXRydW5rCisxNTQ3MCAxYmY3MTRlMGMxMGY1YWRjNmQyNTJhY2ViMThmYmY3OGNkYzNmOWFmIGxlZ2FjeS10cnVuaworMTU0NzEgOTQyY2UyMjExMjhhMjgzMDE1NTMwZjY5Mzc3ZjU4YzQzMjljY2YxOSBsZWdhY3ktdHJ1bmsKKzE1NDcyIGI4MTdmMTYzOTkzOWNmZDQ0ZjM5NmY2ZWI2YjA0ZGQ1OGFiNTAwOTAgbGVnYWN5LXRydW5rCisxNTQ3MyBiZTU1ZjVkZGM2MTViZDIxNWMxODQ2Y2Y1MjEyMDgyYjg4ZGU1YzNiIGxlZ2FjeS10cnVuaworMTU0NzQgN2VmYmI0ZTZhZmNhODMwZGIxZmU4ZGFmZDI0OTM4MmM2ZTk1ZThmOCBsZWdhY3ktdHJ1bmsKKzE1NDc1IDhkY2E1NTg2Nzk5OGE1OTJjZjA5YzNmMzk0NjlkNzliYjA0YTEzOTEgbGVnYWN5LXRydW5rCisxNTQ3NiA2YWQ4Y2QzNGFkOGM4ZjFhY2IxOGYyYmY1N2FiY2Q5MjMwMzUzMTlmIGxlZ2FjeS10cnVuaworMTU0NzcgYWVjZjM1ZjBjMTZiYTNjOWU5MzlhMjEyMzM0NWRlM2ZmNTUyNWFjOCBsZWdhY3ktdHJ1bmsKKzE1NDc4IDBhNmFmNTllYmZmZDkzYWQ1Yjg5YjJkMDE2NjUxMjBkOTk0YjMwYzQgbGVnYWN5LXRydW5rCisxNTQ3OSA1M2U1NGJkNGU1ZjRhY2IxYmFmNThlODRhMDIzMjU0MmY5NDgzMTYzIGxlZ2FjeS10cnVuaworMTU0ODAgZmY4MWE2NWUwYTliYjIyMDY3ZmM2YTVmNGMzY2NmYTA4NWQ0YmQzYiBsZWdhY3ktdHJ1bmsKKzE1NDgxIDJlYTk4ZDlkYzY2OTQ0OWY2OTE3YmE5N2FmOTAzY2VkZmRmNTU1MjQgbGVnYWN5LXRydW5rCisxNTQ4MiBhNTk4YWNlMDE5NDM5YzUwMzM5NWU5NTc4ZTgzMDQ2ZjUwYzRiOWU3IGxlZ2FjeS10cnVuaworMTU0ODMgMDUyYWZiNzQ5NTJlY2ZkMzI5ODBkMWU0ODBjMTVhOTUwN2IzYzc0MSBsZWdhY3ktdHJ1bmsKKzE1NDg0IGQwNDBjZWJkNzRhYzJmMjUzNTIwNzk0ZjNmN2Q2NTMyZDBhY2UyMmQgbGVnYWN5LXRydW5rCisxNTQ4NSAyYjQ5ODgzN2NkODU4Njg2NzcxY2MyNmE5MThjMjU1NWM2NTRhNjRiIGxlZ2FjeS10cnVuaworMTU0ODYgNDBkNmQyZmM5Y2ZmZjQ3OTcyMTU2YmQxYmRmMmVhZjM4ZTgyNDY2MiBsZWdhY3ktdHJ1bmsKKzE1NDg3IDVkZDNiMzViZmQ1MjJmOGEzMGM4ZjdjNzg4NTQ2NGI4M2Q3MTEzMWUgbGVnYWN5LXRydW5rCisxNTQ4OCBjZTNkZTI5NDM2MmI4YTg1MmJiMTA3MTdiYmM3NTc5NTFmNDNkYzc1IGxlZ2FjeS10cnVuaworMTU0ODkgNGZkODQ1OTIyYzQ5YWUwZTRjZTkyMGU4NTVmZDdlM2ZhNzVkZjY4ZSBsZWdhY3ktdHJ1bmsKKzE1NDkwIDI0YWI4NGRjNDJhYmYwOTg0MGE2YzRkZTJjYWIxZDE2NGNjYmNjOTkgbGVnYWN5LXRydW5rCisxNTQ5MSAxNDdkMGI0MTQ0ZWExN2RmMGY4MDNjNTQxOWIwZGRkM2YxZDQ3ZGQ1IGxlZ2FjeS10cnVuaworMTU0OTIgNDExOGYwMDJlNzM3NzMyZWQwNzdmMWZiZGU3YjlmZjE3NjJmMjJmNiBsZWdhY3ktdHJ1bmsKKzE1NDkzIDc5NTRmZjkzZWUzYmM2OWY3OWM5OGM0ZmQzMDFhYjAxYTk2NzliOWYgbGVnYWN5LXRydW5rCisxNTQ5NCA4MTM4MzIyMjA5OGEzZDlkNDE4ZmMyYmVkZTUzOTVhZWYwYzkyNjRlIGxlZ2FjeS10cnVuaworMTU0OTUgY2FiMjJiY2JmNWI2ZGM2YTNlOTRlNDhjOWM1YmY4ZDAxMjUyNGQzZCBsZWdhY3ktdHJ1bmsKKzE1NDk2IGQyZDg2NWQ5NTg2MTI2NDNiMDkwY2JlNjUxODBmNTRjMmEyNTdkYzYgbGVnYWN5LXRydW5rCisxNTQ5NyBkMjU3M2RiZjY4NTI1NDQ4N2RjODdiODg3ZWNkZTZiNzBmNzY0ZTA4IGxlZ2FjeS10cnVuaworMTU0OTggNzdhNWExNDY5NWIzMmE5ZTE3N2EyNTQ3MWVjZDRkNGU0ZTdlZDlkOCBsZWdhY3ktdHJ1bmsKKzE1NDk5IDNkMjZjYjM4MDhhN2QyMjBkZGY3Y2YxMjRhNzVkMmY5N2MzOTZhOWIgbGVnYWN5LXRydW5rCisxNTUwMCAxOGIwMzU2NTA1YTVhNGFjMjY3Nzg0OGJmYjU2NGU3ZmY3YjQ5NTgxIGxlZ2FjeS10cnVuaworMTU1MDEgODlmNDIwOTljNWRkNmY0MmY0MmU0MmY0YjYwYjljNmY0YzI1MDdlMyBsZWdhY3ktdHJ1bmsKKzE1NTAyIGI1MGJmN2QzOTYxZjg3ZTU2YTI4YWNiZTBmNTlkOTkwYTI2ZWM3N2EgbGVnYWN5LXRydW5rCisxNTUwMyA1NzBmYWNiNzNlMzY0Zjc3NzI1NWY2MmZlOTQ4OTkwMTVkZjZlMzExIGxlZ2FjeS10cnVuaworMTU1MDQgZTg3OGE2NDdlMDZlYWY5MWZjNGQ4MzQ0MmQ1YTA5MDc0N2Y0YjI2NSBsZWdhY3ktdHJ1bmsKKzE1NTA1IGVlYWZhYjhjOTI1YmU2ODQ0ZmZiNTNkODAxYTFmZGE4MTU4MTdjZDMgbGVnYWN5LXRydW5rCisxNTUwNiBkYWQyMDVkMTNiYjU5ZGI2MzQyNzkyZGQwYTQyYmIwYzAwZDBjMjQ4IGxlZ2FjeS10cnVuaworMTU1MDcgM2MzMGY3YjUxMGQzNDEzNmZhNmFkMzc2ZmRhNDhiNTZmNDVkMDgwNCBsZWdhY3ktdHJ1bmsKKzE1NTA4IDZjNjg0NGEyZmEzMDRmMDIwMzBkNTY4MTI5YjRkOTIyNTkxMTY0NDkgbGVnYWN5LXRydW5rCisxNTUwOSBlYjU2MmRmMGNlYmUwZWZlZmNmMGRmNjIwYmQ4MjBjNGM4ZjZlM2M2IGxlZ2FjeS10cnVuaworMTU1MTAgYmNlNDlhNmZhOGI5ZTViZDI2YjIzZTQ1OTdkZDhjMjY0MWRmYzU4YiBsZWdhY3ktdHJ1bmsKKzE1NTExIDI0OTdlMWM5ZWJjZWVhNzE4OGUzODViYmE5YTY1YzQzYzc0ZTM2ZDcgbGVnYWN5LXRydW5rCisxNTUxMiAyYzJiNDBlYjNhNjU0NjMxOTA3MzExNDA3NmRjYzUzZjI1MGYxY2E0IGxlZ2FjeS10cnVuaworMTU1MTMgN2I0OTMzNGE2MzY5NmFjYzRjODNkZDA3ZGI5MWU2YzI2MWVhNTljNyBsZWdhY3ktdHJ1bmsKKzE1NTE0IDg2ZWM3NWRhYzI3MmJhZmM3ZTZhZGQ5OTczOWFjY2MxY2NjZWIxZjggbGVnYWN5LXRydW5rCisxNTUxNSA1MjEzYWJmZTUyMzBiZWIwM2ZjMTk5NjAxMDE3NjU3MDQ4OGFiYzRjIGxlZ2FjeS10cnVuaworMTU1MTYgODg5ZjJjYjNmNzJhYWY4MjA5NjM1OTEyYjZlZjY3Y2RlMjllMDI1OCBsZWdhY3ktdHJ1bmsKKzE1NTE3IGVjZGRiMmVkNGM3NTZhNzVjZGJkZmY0YTc3YTVhYWI4NTBlNzk4ZjEgbGVnYWN5LXRydW5rCisxNTUxOCBmMGQyMjUzYjY2NGY1OGQzY2E0OTliMmEyZTU3Mzg5MWY0NzIyNmFlIGxlZ2FjeS10cnVuaworMTU1MTkgNDA2YjBlMjRkNjJlNzNmOGFiOGI0ZTU2ZjU5ZDEzNDcwYWU2YjMxYSBsZWdhY3ktdHJ1bmsKKzE1NTIwIDFkZTAwMTdlMTIyNjdiMTAxMTkzNmY1NzFmMzA2YzgwYjc3Mzc5MDkgbGVnYWN5LXRydW5rCisxNTUyMSAwZjFlNGUzOTM1ZDdjNDAwMzhiZjlkMjAwMDBjOTM5MmM0ZWJlZDMxIGxlZ2FjeS10cnVuaworMTU1MjIgZGEwMmE4OTJkNjExODY0NTk2Njk3MTM2OTliN2JkZjEzZTE5YzIxNCBsZWdhY3ktdHJ1bmsKKzE1NTIzIDllMWI4MDUwZGU2M2E0NWVhNGQyMDgzYzhiMTI3ZjEyYzVlYThlOGIgbGVnYWN5LXRydW5rCisxNTUyNCAzYzE0OWQzOGFiZjlmYzQ4OWY5NDdmOTk1NDk4YjYzNDU2MmZhZWJhIGxlZ2FjeS10cnVuaworMTU1MjUgYzhhOWQxNzY2NDY1Y2U1YWZiZWU5YzAwOTkxYjc5MDhmNmFiMGE2NiBsZWdhY3ktdHJ1bmsKKzE1NTI2IGUwZWY2MjJmOGMyM2NlOTRlYzI5ZGI1OTBjNGNjZGJhMTk5MDk3NjkgbGVnYWN5LXRydW5rCisxNTUyNyA5Njc3MzJkZDNmOTU5YmE4NmYxNmZlZDhkOWNiOWU1OWVkOTY3NzQwIGxlZ2FjeS10cnVuaworMTU1MjggOWNiY2FkMmU4NzIzODQ1OTFjYTk2Y2ZhNjNiOWE5Y2Q4NWNjMjIzNyBsZWdhY3ktdHJ1bmsKKzE1NTI5IGI1YWI0NzM2NWJhZDY1OGFjMjBhM2E5MWZhN2I4ZWIxMWExZjFhMWEgbGVnYWN5LXRydW5rCisxNTUzMCAyNjNjZGY5Yzg0MmVlNzRkNDFjNTA0OWE2ZjRkYTlkYjE1N2Y0MzYxIGxlZ2FjeS10cnVuaworMTU1MzEgZmI0MDM5YjFjZjhkNzVmMTJiZDVmOWY4ODBlZTk2MWE3OWNiNGMwNSBsZWdhY3ktdHJ1bmsKKzE1NTMyIDUyYzZhYzJkMTZhOGNhZWViODA3ODY2MTJlOGNiMjQ2NjI5OWNjZWYgbGVnYWN5LXRydW5rCisxNTUzMyA3YTRmNjQwMmM2N2Y4ODc1YzY2ZGY4MDI0OTU5YzBjNjYyNDZiYmMzIGxlZ2FjeS10cnVuaworMTU1MzQgYjA2OTRjMWMxMjg3ZDhiNmRmOTM5YTM1M2RhN2IxYmFkZDI1MWI0NCBsZWdhY3ktdHJ1bmsKKzE1NTM1IDQwZGI5MDljZTJlMzJhYWY2YTc0ZTgyOWJhYTY1NDAyNjY0MzQ5YzYgbGVnYWN5LXRydW5rCisxNTUzNiA4ZTJiMzVkMzg2YWFjYWM3NmQ3OTU0Y2Q2Y2JhM2RlMjE2YmY4NDg2IGxlZ2FjeS10cnVuaworMTU1MzcgMzQyOTQ3ZjJmYjUxNDMxZDg0Yjc0MzM0M2EyNjA5MzhiOGIxYzg0NCBsZWdhY3ktdHJ1bmsKKzE1NTM4IDM4ZGE4NjRhMGM4MDY2YWM1ZDI4NDlmMThlZDQ4YTRlMjU0YjRlZjEgbGVnYWN5LXRydW5rCisxNTUzOSAwMjYzYTk5ZDBlYjI4ODhkYzlhOTdjY2Q4ZmEzZTNiODExOTlkNWZiIGxlZ2FjeS10cnVuaworMTU1NDAgMDU3MGRlOWM4MjAyZDViZTA2M2NlZmQxOGZmMDA2MDk1YWJmN2JhMiBsZWdhY3ktdHJ1bmsKKzE1NTQxIDkzMzVkYWE5ZGRkM2IwMzg2MjYxNGIyMWUzZGYxZmMxYTBhMWFhZTEgbGVnYWN5LXRydW5rCisxNTU0MiA5MzZlZmRjMDFkNTI0NjkwZmUyMTg4YjI5MTEzYWZlODFlNjFlM2QzIGxlZ2FjeS10cnVuaworMTU1NDMgNzcxYjNlMWE3NzFjOGY4Nzc0MzQwNTc4NzgxYTIyMWMxNmNjNTg0MSBsZWdhY3ktdHJ1bmsKKzE1NTQ0IGI5MWIzNWMxZDRjMDA4ZWQ4Yjk5ZjlhOWMwNzE5ZWI5MGU1YjY2MDEgbGVnYWN5LXRydW5rCisxNTU0NSA1Mzk4YjE4ZjgzMTlkMWU0NGZlNTQyNmE2ZGRiNzMxYWNiYzVlZjI4IGxlZ2FjeS10cnVuaworMTU1NDYgZjZlNzMwZjY1YmNlNjJlYmY5NWM4MmE1N2E5OTJiZTZkYjAwZTI3ZSBsZWdhY3ktdHJ1bmsKKzE1NTQ3IGY3NjhkNGRhZDlhNjJhMzdlZGMwZmM3ODg3ODRkNzI2ODkxMDA0Y2UgbGVnYWN5LXRydW5rCisxNTU0OCA2ZjdkZjk4NWE4MGM0N2Q2MGEzYmI1M2FlZTg5OTdiYThjMTlhZjg5IGxlZ2FjeS10cnVuaworMTU1NDkgODAwNGQyOWM3N2I4YmQyOTYyOWUwN2M3OGM0YzIzMTEzZTJhMDQ3YSBsZWdhY3ktdHJ1bmsKKzE1NTUwIGYwZDAzNjg5YzFhZTAwNGZmN2VjMTYyOTgzYTRjZjlmYTAwNDgxNjMgbGVnYWN5LXRydW5rCisxNTU1MSBmOGMxYzViN2RjOWY0Yjk3MzcwNDZjYjg3NDY5M2FlZWI3YWFmMjEzIGxlZ2FjeS10cnVuaworMTU1NTIgOTM3Zjk4NTljOWRlMWI2OTY4OGM0NGY2YTk1ZjZlNjdjYjk1YzljNSBsZWdhY3ktdHJ1bmsKKzE1NTUzIDVjZTQyZTA3YWZkODVhZTljZjc4ZDg0NzU0NTQ0MTgyMjFmNDAwNzYgbGVnYWN5LXRydW5rCisxNTU1NCA1Mzk3NDQ1MWUzMWYxMTY2ODgyOGRlOTZhYzgwMjNjM2IwYmU0OGU5IGxlZ2FjeS10cnVuaworMTU1NTUgMDc0ODE5YWZkYzk1YWIxZDE2MzI0MzBmNzczMjg2MzAxNWYyNTEyNiBsZWdhY3ktdHJ1bmsKKzE1NTU2IGVlMTE5MDUxZGY3N2Y0MTVkYWViNWI5MTExODk2ZGQyMmY4MmI0NzEgbGVnYWN5LXRydW5rCisxNTU1NyA1YzBlZGIzNTFjMDcyNzkxODg1NDBjNDg4ZTRkOTA0YWU0OWY2MzQyIGxlZ2FjeS10cnVuaworMTU1NTggMDlmNzBmOTFiZGFlMmU4ZjVhYzlhZTFiMmFkNzZkYjQwYmQxZjBmNyBsZWdhY3ktdHJ1bmsKKzE1NTU5IDg4ZDBiMzM4M2ZlMjU1NjQzOWVlMzA2NTBmMzc2YTRjMTBkZjgxOGEgbGVnYWN5LXRydW5rCisxNTU2MCBkODFjOTVkZDQwMzlkZGE4ZjVhZDY5NjUzMWZiY2FiMDY5YzM3YzI3IGxlZ2FjeS10cnVuaworMTU1NjEgM2FhYjBjNTE5MDA5MGFmNjk2MTVhZDhjZTMxNDQ0MTRlNmYwMTUxYSBsZWdhY3ktdHJ1bmsKKzE1NTYyIGVlZjJiOTE4ZDA3YWM4NjkyNGRiMGFlNTAyY2JiOGExYTg2MWFkZTggbGVnYWN5LXRydW5rCisxNTU2MyAzM2RkYzEyZGYyNjdkODRkMTA4MzEyMmZkN2MwYjgxMWNkZTUwOGY3IGxlZ2FjeS10cnVuaworMTU1NjQgZjZkN2UzMjg2NjA5MjYxMWQ0NDNhNjJjOTc5MGEzNzY3ODQ3ZDM2MSBsZWdhY3ktdHJ1bmsKKzE1NTY1IDNiZTkyY2VmMTkxNzQ0OTk2ZmIwMGJmNzZmYzk4M2Y1ZjJlMjQ2MmUgbGVnYWN5LXRydW5rCisxNTU2NiBlMzZiZTdmYjc2Y2NjN2ZiYWY4NDAyYzQ2NDYyZmYxZTMyZjhmODA0IGxlZ2FjeS10cnVuaworMTU1NjcgNTgzZGVmOGNlZGY0MzEwZGMxZDE1ZTZjZWM3YTFiZTk0ZjUyNmJjMyBsZWdhY3ktdHJ1bmsKKzE1NTY4IGJjZTUzYjE0NzIxZTkxOWJjOTUyMWVmYzM3ODU4MzIwMjA1OTcwYTcgbGVnYWN5LXRydW5rCisxNTU2OSBiYzFmZTk1NjIzOTk4M2YyMmVkMzZmYTNkYmE2YzZmZDA3ZDA0YzFlIGxlZ2FjeS10cnVuaworMTU1NzAgMjU4ZWVkNDU3MGNlODkwYzEwZjczNDdkNWUwNmE5Y2Q3M2I5YWQ5NyBsZWdhY3ktdHJ1bmsKKzE1NTcxIDcxMWIzMjk2MDkzNDdkNWQyNzA2ODFmOTU0M2JiNjM4MjI2ZTViMWEgbGVnYWN5LXRydW5rCisxNTU3MiBiMTJhZGEyZWIzMTJiMDZkMDM5ZTE0MDcxMzIxMzk3M2NjNWRmZWMwIGxlZ2FjeS10cnVuaworMTU1NzMgMGMyMTdlNWYwNTViNzZlNDkwYjE4MjNlNDYxM2EwNmM0ZDM3ZDgzZiBsZWdhY3ktdHJ1bmsKKzE1NTc0IGYxZjljMzBhNDE1Njk1NzQ4YjhkOWI1NDA0MzcxNTkyNTMxZmQwMWUgbGVnYWN5LXRydW5rCisxNTU3NSBiMWIyNjBhMmRlOTg3ZTg3ODUzOTgxNzc2YTNkZGRkMjg2YWYwYjNlIGxlZ2FjeS10cnVuaworMTU1NzYgZmYwZjcyODFiZmI4NGJjMjY0NDQ0OGY4MmI4MDRmYzI1MDdjMTE3MiBsZWdhY3ktdHJ1bmsKKzE1NTc3IDQyNzJiMzY4YmY2OWY2Y2VhYTNmZTdmOWJiMThiYjVjODU1NmJlYmIgbGVnYWN5LXRydW5rCisxNTU3OCA1ZjFmOGRkYzJhMGNkZTQ5YTg3ZTkzNzhlZDI1MTk5MjMyOTFhN2IzIGxlZ2FjeS10cnVuaworMTU1NzkgNjY2NzgyMzI2ZDQyYzBkYjM1YjAxMzEyYWU2MmI5MDZkMmU1YzgyOCBsZWdhY3ktdHJ1bmsKKzE1NTgwIGEyNGQ5YWQ2Nzg2ZDY2MzkyNjYxYWEyNTZkNmM1OGFhNDg0NDI2YmYgbGVnYWN5LXRydW5rCisxNTU4MSAzNWVhNWRlMWVlODNhYjVmNTY3OWMyMTcyMDUwZDU4ZjRmOGE0ZTRlIGxlZ2FjeS10cnVuaworMTU1ODIgZjJkYjYwOTQzZDZiODMxYjk0MmZmMDU0ZGY3NjYwMTM1YjI5YTAxMCBsZWdhY3ktdHJ1bmsKKzE1NTgzIDcyM2RmMGM4MDFkMWRjNGE1YTVmNzVmNGVkZTJhZGUxNmI2ZDhhNWYgbGVnYWN5LXRydW5rCisxNTU4NCAyYzdhNDdjNjRlMzA2ZTZjYWEyZmQ4MjVjOGQ0MDEwZTUyZTdkY2ZjIGxlZ2FjeS10cnVuaworMTU1ODUgYjUzMTlmNDIyNTkxM2YwNDAxNjc1OWMxZjAyZWQzYTViNzgzNjY0OCBsZWdhY3ktdHJ1bmsKKzE1NTg2IGM5Mjk4ZWM2MzdjNWE2MTJkNzQ5ZDI5OTc5Zjg2MTkxODI1NDI3MzUgbGVnYWN5LXRydW5rCisxNTU4NyA3ZDJhMDA2M2UyNmRmZmViZTJkMjUzYTAyMjc5ZWFhMDAyMDlhZDQxIGxlZ2FjeS10cnVuaworMTU1ODggMDQ3NzRkNjIyZWEyZGUyMTliZTlhODVjMjkxOTU0OTJlYTQ1M2Q1ZSBsZWdhY3ktdHJ1bmsKKzE1NTg5IDYyYWQzNTcwOGI4YzZmNzcwMjJjOWQ0Y2ZkOGRlNjUwMWNjNWJhZjMgbGVnYWN5LXRydW5rCisxNTU5MCBhZjM4YTdhN2FmMTBiNzZjM2FhODc1ZDMwMmEzZDkyNGFmZThhOGE2IGxlZ2FjeS10cnVuaworMTU1OTEgMmY2MDY4NjdhYjRlN2IwNjE3OWRlMzA0OWU2MTNjNTkyNTdiZDliYSBsZWdhY3ktdHJ1bmsKKzE1NTkyIDFmNTMxMjA4YmUxMTczYjdkZTAzYjA0NjJlZTU3ODEzODlkMTdhMjAgbGVnYWN5LXRydW5rCisxNTU5MyBiOTBkNjAxZDRkNTkzYTgyZjQ4N2FjOGJlNTAwMTI5MzI0NGI4YzA3IGxlZ2FjeS10cnVuaworMTU1OTQgNDFjMGM2MGRjYWY1ZjUyOTZhNjM1Y2NkNWEzODA5MDY2NjQyM2JiOSBsZWdhY3ktdHJ1bmsKKzE1NTk1IGMyYTBmMmE4MWZhOGE5YjVhOWNlMjM1ZGU5NzUxM2EwNjMzYmRhMTcgbGVnYWN5LXRydW5rCisxNTU5NiBiYzM1NjQ3ZmU0NzI5YzFiMzU2NWZhNTA4NjhkM2Q4ZTlkY2IzMWJkIGxlZ2FjeS10cnVuaworMTU1OTcgM2ZlMzA0MDUwNDM0ZTNhMDA2NmQ3OTlkMjVjYTBjOTQ4YTY3NmZiYyBsZWdhY3ktdHJ1bmsKKzE1NTk4IDRlOWViODY2YWFjNmE1ODM1ZDcxZGViYWNjZjI1NTc0Yjg3NzY4MzAgbGVnYWN5LXRydW5rCisxNTU5OSAxNjE1NTk4OWZhOTMyYTYyMTgxZGE1MGI5MWRkYjhkMGVlOTA4NWJkIGxlZ2FjeS10cnVuaworMTU2MDAgYjRiYTMyYmI3NThiZWMzYzg4ZDA4ODhkZDQ0ZGRiYjM3MjhjNzIxZCBsZWdhY3ktdHJ1bmsKKzE1NjAxIDM5MTJmYjZjNjNmNjEzM2RiZmI0NmFjZTU2YmFjNmY1YzViODlhNzggbGVnYWN5LXRydW5rCisxNTYwMiA2NDVkNTdlZjE2Mzk1NjczY2Y2N2UxYjU4YWQyNjhkODA1MmVmNjVjIGxlZ2FjeS10cnVuaworMTU2MDMgNGU5Zjc3MjRhYzU1OTUwMmM1NDA3MDEwODNiMjA5ZWRiMzY1MGJjNyBsZWdhY3ktdHJ1bmsKKzE1NjA0IDA0MGMxMDk3Y2QzNTI0NGU5OWZlNjg4YzRmNDI4OTNiZDlmNTg5ZDEgbGVnYWN5LXRydW5rCisxNTYwNSBhZmQ3Y2JlMWM0OTJmNjM1NmY5YTdkMjVhNWYwNWE1ZjE1OGRkZDM0IGxlZ2FjeS10cnVuaworMTU2MDYgMjI5ZmQzYTVhZmEwODFkNGEyNGY3YWE1ODdiNzc4ZTAyNzcwZjhhZCBsZWdhY3ktdHJ1bmsKKzE1NjA3IGI1OGI5MDMzYzY1YTQyZWMwMjcyNjQ3NDdhMDVkMjA1ZTNmMzY4NmMgbGVnYWN5LXRydW5rCisxNTYwOCA0OTE2ZDQwZDk2Nzc2YTljODQ0YzgwM2Y5YTFiM2VlZGNhYjc3MDlhIGxlZ2FjeS10cnVuaworMTU2MDkgMDU3YWQ4OGFhZTlhNjM1OTczYzg4MmZhNWI4MWM4MWZlOTU0NDk0ZiBsZWdhY3ktdHJ1bmsKKzE1NjEwIDU5NGMyN2M4NzBhZGVkZmVkZmU2M2M2MjBjMjYzNDczZDk4MDFhMjQgbGVnYWN5LXRydW5rCisxNTYxMSBhOTJhZGI3ODBmNDNkOTJlNDUzYzRjMzFkNTQ0Y2IzZGIyOGEwYzgzIGxlZ2FjeS10cnVuaworMTU2MTIgZTc4N2Y2NjQxYWZiOGM5MGI5ODBmN2E1NTdhZjY5M2I2ZTRjYjg5MSBsZWdhY3ktdHJ1bmsKKzE1NjEzIDI4OTA5ZTgwZjM2Y2Y1OGQ2Yzc0NmFmNWI0NGQ3Y2Q5NWE4NzU3N2YgbGVnYWN5LXRydW5rCisxNTYxNCAyMTU1M2JkMmU4NzVmMmNkNmMzYzcxYmVhZGE5YTYzMzBjYmU3ODY2IGxlZ2FjeS10cnVuaworMTU2MTUgNjNkMzkzNThkYjA5MzQyZTA3YmYxMzQ3YWY5MjBlNjM4NzdlMTg2NiBsZWdhY3ktdHJ1bmsKKzE1NjE2IDBmZTAyMTZmNmM0ZTRhMTNlYjA0ZTQ2Mjg0NzExNDk2YjI2ODI0ZjEgbGVnYWN5LXRydW5rCisxNTYxNyAwYzg4NGM4ZDFlNzVjZGEwNDdmNzVhNmI3YTA5OGNmYTVhZDg3N2IyIGxlZ2FjeS10cnVuaworMTU2MTggNmFlMDQ2ZDRjZDA0MjAzZWEyZDViMDA4YjBhMWIxZjgwMGU3NzA3OCBsZWdhY3ktdHJ1bmsKKzE1NjE5IDE0YjFiNWRiNmNiMmRlYmJlMGRiYWUxM2IxZjJjYjYwNjUwYWM0ZDQgbGVnYWN5LXRydW5rCisxNTYyMCAzNzk3OTdmM2VlYjIwNjA0NDU1MDc3NGViNGRlZWYwYWYyYTk4MDliIGxlZ2FjeS10cnVuaworMTU2MjEgNDMyM2Q0ODU1MDQ3YjhjNzI0YjU0ZDkyN2QyMDI4ZjM0ZjZmODRmOCBsZWdhY3ktdHJ1bmsKKzE1NjIyIDM5NzFlNmIxNGEwOTc0OTdkNTFiMGJkZDM5ZGVmNjBkNmUwYTk0MmEgbGVnYWN5LXRydW5rCisxNTYyMyBhZjBkZWYwNjM2NTgwMzZjZWFhODFjY2Y1MDY4OGU5ZjI1NzZhYTAzIGxlZ2FjeS10cnVuaworMTU2MjQgYzBmZDg4ZjJhNjVhOTE2NGFjODI5ZTZiOWM0ZjFhNjRhNGUwOGU4MiBsZWdhY3ktdHJ1bmsKKzE1NjI1IDMxZDA5ODhkYThhOTczMTRmNjI2ZjBlZTE5ZmMwZDI2M2JjNTM5ZmMgbGVnYWN5LXRydW5rCisxNTYyNiBlNTQ1YTBjNDRmZTE1Y2IyZjJlMzBmNTFkY2IwM2FjZWYxNzk0ZGNmIGxlZ2FjeS10cnVuaworMTU2MjcgNTQ4Y2MxMGRmOWViYWM4MDhlNWI2NDA1OGIwMWNhN2FkMTIzZTE0NyBsZWdhY3ktdHJ1bmsKKzE1NjI4IGUwNDY0OWMzY2VkMDNkYjIxMzkwNjhmOGMxYjIwMTI5NjhiMTU0MTkgbGVnYWN5LXRydW5rCisxNTYyOSBmNGI0ODdlMzUyMTQwY2U0MWJjYzgxZDI4NjI0MTdjYWE4MWM0YWQ0IGxlZ2FjeS10cnVuaworMTU2MzAgODg4NzI3OTE5OThhMGRhMTk2MDgwMzE3YzNkZGVjYjBiMWViNjE4ZCBsZWdhY3ktdHJ1bmsKKzE1NjMxIDUyN2Y3ZTNiYjc2ZDdlYTg0ZWVmYjNjNmNlYzgxOWRhMmNkNzE4NzkgbGVnYWN5LXRydW5rCisxNTYzMiBkZGExY2E1M2VhOGEyNjE4ZTk2Y2YyYzFlNzQ3ZGIwYjMxNmE1MTJjIGxlZ2FjeS10cnVuaworMTU2MzMgZTAyNGVkMmRiNjI1YjhlM2U4ZDZmNTY5OWI3N2IyZDVjMzEyZmJmZCBsZWdhY3ktdHJ1bmsKKzE1NjM0IGVmYzZkNzc4OWQ5ZTZmNzMzOWNjMjJhZDQ3ZTAzNTVkMzZhOWRkMDQgbGVnYWN5LXRydW5rCisxNTYzNSBkOThhNzU1NzMyNmE0ZDgwZWM5MDViNjQ2YWZjZGRlNWFjOTM1NDM1IGxlZ2FjeS10cnVuaworMTU2MzYgYThjZTE5YzMyZGI5YTdjZjdhYWMyMzc5ZmM0NTNjZTdjMDU3ZmI4MCBsZWdhY3ktdHJ1bmsKKzE1NjM3IDI0MzU5M2YxMWZjZjY4ZTY3NWZiYTNhOTNmYTEzNWY4OTI2NjIxMDggbGVnYWN5LXRydW5rCisxNTYzOCA3ODIzMWJiZTYwNWRjMmVhN2NmYTgzYWI1NTU1ZWJmNTZiOWJhMDgxIGxlZ2FjeS10cnVuaworMTU2MzkgNmQ3OTE0ODg1ZDYzZjFjMzlhZjc5NjEwMmYxODJjNjQ1MDg4ZDA5NiBsZWdhY3ktdHJ1bmsKKzE1NjQwIDMwMWZmMTRiMmEwZWE2MWZiYzBlY2I5MjFlOGY1NDNlZjMxZTU0NTMgbGVnYWN5LXRydW5rCisxNTY0MSAyNmUyMGEyOGQwNTFjNmNlZDRiNzRjYTA3YmFlODYxY2NmYTI4Mzg3IGxlZ2FjeS10cnVuaworMTU2NDIgNjg4OWRlMjljNTU4NGIyOGVhOWYzMDYwZjEwYjBmOWE2MGEyYmVkMiBsZWdhY3ktdHJ1bmsKKzE1NjQzIDExZTViZjhlYjQ3MzY5YWYwZDVlYmMzMzA4NDk5OWMwZDYxYjYzNmUgbGVnYWN5LXRydW5rCisxNTY0NCA3YmFiZjkxYjZkNzVjNjY1MDJhNTdlMzBkN2U4YzJlYzkyNmMwN2FiIGxlZ2FjeS10cnVuaworMTU2NDUgMDkyYmFmNjlkNmFmODdkNjBjYmIzNWU3YWRkMDAwM2JlZDViZmE2ZSBsZWdhY3ktdHJ1bmsKKzE1NjQ2IDVhMGQxNTZjNDIwYWM3MTNiMDEyNWUxMWM0YTg5NmZjMjZjZDk0M2EgbGVnYWN5LXRydW5rCisxNTY0NyAxYWUwMzVhMzFjYjQ4MzVkMDFlOTMyNTY0YTYzODQzMjQ5MGNlNGVjIGxlZ2FjeS10cnVuaworMTU2NDggMTFkMTBlOWI1MDhkODBiMGE0ODRjZjA5ZGFjNTNjYWM4MDFlOWExZiBsZWdhY3ktdHJ1bmsKKzE1NjQ5IGI1NzUyZGUwY2ZhNDY3MzU0ZDExZjUyNDM0NjBhNzAzN2ZjNWY3MmUgbGVnYWN5LXRydW5rCisxNTY1MCBmNTRjMzY3N2JhZTdkODYxYWNiODdkMDNjY2IxM2U1NGIzMzhjZWFhIGxlZ2FjeS10cnVuaworMTU2NTEgMTdmMzVmNjZlY2Q4YmM5NTRmNzEwOTdkZDE1NjUyNWMyNGQzMGQzMiBsZWdhY3ktdHJ1bmsKKzE1NjUyIDBjOGI5Zjk2YjI2YWM3MzBiYTdjYzEwM2JmMzc0MDUwODMwZjVlZmIgbGVnYWN5LXRydW5rCisxNTY1MyAwYzJjZGQ3Y2Y3ZGM2YzYyNzJlYjA5ZTQzZTg2OWZjM2JjZGYyNzczIGxlZ2FjeS10cnVuaworMTU2NTQgZmQ1ODgxZTE3NDI3YjNmNmJjMjU0YzE2MjMxNmM1ZWRlMDQxZjE2NyBsZWdhY3ktdHJ1bmsKKzE1NjU1IDYxZjZhY2M0YWE3NDhkZDQwZThjMzgxOGM3MmM3MTFkMTQwMTA4MjIgbGVnYWN5LXRydW5rCisxNTY1NiBmMGE4ZjEyNzM0NTY0YmMyYjZiMTk0OTlkODgwNGM5YzNjMGE2NTJkIGxlZ2FjeS10cnVuaworMTU2NTcgYWRlZjk3ZjNmZWEwZjU0MDdkZTI1MjFhZTdhMzg2NzJmNThjNzhlOCBsZWdhY3ktdHJ1bmsKKzE1NjU4IGU0N2IxYTBkNjQ4NDc5NzcxMTFkOGNlMGNjZGE3NWQ0OWMxMzk1NGIgbGVnYWN5LXRydW5rCisxNTY1OSBmMzFkY2QxYWQ4YzQxMTg3OWI2NzliMjFkNWIxZWQxNGIyYjNhYTZlIGxlZ2FjeS10cnVuaworMTU2NjAgOWRmOTFmOTFlNWNjOWE0NDI0MDBiYjc0OTcxMGVkNTNiOTQ0NDM5ZSBsZWdhY3ktdHJ1bmsKKzE1NjYxIGY4MmIxNTdmNDVlMjljMTA2YjY1NmUxZGZjMjBhYTkxMTY0OWRiNzUgbGVnYWN5LXRydW5rCisxNTY2MiBlZmYyNDEwNjg1Y2M0NjBmNzUxODliNGQ2ODNmMDQyMDllYTIzM2QzIGxlZ2FjeS10cnVuaworMTU2NjMgOThlYjMwNTlhZTc2MGJjZGYxOWRlNmQ4MzM1Y2FjYmIwOTQ0MDZhYiBsZWdhY3ktdHJ1bmsKKzE1NjY0IDllZTFlNTk0NTcxZDcxNTVkOGU1ZTM2OTZjNWU3MTg1NGExMDE3MjkgbGVnYWN5LXRydW5rCisxNTY2NSA3NTJhYThkZmY1MjBiOTRlZGM1MTY5ZjY0YThmZmQ3NzBiM2I1NjJmIGxlZ2FjeS10cnVuaworMTU2NjYgMjU0MzE5NzIyOTRiNGYzN2NkNjdjNjgwNDU5ZDI2YzA2N2IwMjRjYSBsZWdhY3ktdHJ1bmsKKzE1NjY3IGY2OTEwMmMxZjQxM2YxYzY2YTRlMzdkOTAwMDIwN2ZjZmY1YWJhYmQgbGVnYWN5LXRydW5rCisxNTY2OCBkZGU3ZTkxZjJmMmU1YzMxNmQ4ZDQwYmJiOTc5MWEzYjdjY2Y0ODk3IGxlZ2FjeS10cnVuaworMTU2NjkgMWU3ODRiODc5MDM5MGUzMzY2MGNiZTliMmFmNDgwZGMyZTdiYTk5NyBsZWdhY3ktdHJ1bmsKKzE1NjcwIGJlMzZmMTAzYTk1MzljM2RkZGRkYmY1NTlmNzkwYWUzNzYwZGMzMWMgbGVnYWN5LXRydW5rCisxNTY3MSA1MTM5OGY3MWQzMDEyMjc4NDM2NDQyZmQ0ZWVlMTg1OTEyNTAwNTM5IGxlZ2FjeS10cnVuaworMTU2NzIgM2NlZTBkNzUxOTFlMjMxYzAzNmZiZGU5MjlmYjBmMjJlODVmYjhiNCBsZWdhY3ktdHJ1bmsKKzE1NjczIDM0NDUyYjg4M2E3MWQ1ZjcwYjhkODE2MTg2NTYwZGUxYWFjM2M0MmEgbGVnYWN5LXRydW5rCisxNTY3NCBlNWFhYzlkZmFjZjg3MTViZDkyZDJiNGZkZDcyYmYyMmFkM2E1OTIxIGxlZ2FjeS10cnVuaworMTU2NzUgYzhlMTM1MzVmZGMzMTlhYjIwNzE3YTc1YmQzNGI3ZjUzOGYwMmRjNSBsZWdhY3ktdHJ1bmsKKzE1Njc2IDU3ZTI5NDU0MzVjOTAwNDllNjRmNjA4MTEyZTdhZjExOWQzMjczZjEgbGVnYWN5LXRydW5rCisxNTY3NyAwMGY1ZDBkZjcwYWQ4MGUxZDhlN2JiZGRkNDgyZTA4NjkyMjM3Zjc0IGxlZ2FjeS10cnVuaworMTU2NzggMmEyY2FhZWU2Nzk3M2E4ZGJlMTE5ZjJiZjkxZmNkY2RhOTZjMzRhZCBsZWdhY3ktdHJ1bmsKKzE1Njc5IDhhMjNhYjA1N2FmNjE3NmNlMmJlMzdkNDg1MmIxZDQ3OGVlZmY2MzUgbGVnYWN5LXRydW5rCisxNTY4MCAzMWM3MjVkNzBlNjUyMTJkM2IxODc1MzUzODFkYzQ5NzljNzlhYjllIGxlZ2FjeS10cnVuaworMTU2ODEgZGVhZjI1ZGYxNWZlMjdlNjRjYjY1MWRjZjBkMGQ1MjMxYTBjNTI1ZCBsZWdhY3ktdHJ1bmsKKzE1NjgyIDEyZDBjNDY1YjEwM2NmZTk0MDg5ZGZjMGNjY2YxYTViZTlkODJmNmEgbGVnYWN5LXRydW5rCisxNTY4MyBhOGFmZWZjNGZjZWQ5OTQ3YjZlNzk2MDQ1MDAyZGZiNzBjNTRkNWVhIGxlZ2FjeS10cnVuaworMTU2ODQgMWNhYWRmYjhjYTcxMGJkOTFkODE0NmVjZTI5YTQ2MzhhNjhlNTNjZCBsZWdhY3ktdHJ1bmsKKzE1Njg1IDJkMGI5OTc3OGVkZjFiYTZjYWJlODRjZTA1NTk0ZDdlNmRiNzc0ZWUgbGVnYWN5LXRydW5rCisxNTY4NiAxMjhlN2I5OTQ1MDU5YzYwMGI1YTZjYWUxZTRiMDUxZmU0Zjk1NGJhIGxlZ2FjeS10cnVuaworMTU2ODcgZGY2ODY5YmViZTAzYzU3YzMxNDk1MDVmMDZjMmQ5Yzk1ZjI3M2FmMSBsZWdhY3ktdHJ1bmsKKzE1Njg4IDE1ZGYzZmEwZmQ0ZDdkYThlMjI4ZmMwYTEwMzdkMDA2NDQ4NGNkMTEgbGVnYWN5LXRydW5rCisxNTY4OSA1OWU0OTRjMDgwMmZjOTI1NmE2NWFlNmQ0NjVmNjkyMjQ4MDBjYmRjIGxlZ2FjeS10cnVuaworMTU2OTAgMmVlZjYzNmJhMWI2MmY2ZTEwMGM2MmMxODMyMjRhYmIwNTJkOGFhZSBsZWdhY3ktdHJ1bmsKKzE1NjkxIDY2MTgzMjU1NzRjYjk1M2VmMjdlNGZmMTUzNGQzNjU0NTRlMjhkZGUgbGVnYWN5LXRydW5rCisxNTY5MiAwYWEzZjgwZGJiMjNhZTU2ZDQwMjc3N2ZlYTQ4M2JjYmU4ZmFiMzY1IGxlZ2FjeS10cnVuaworMTU2OTMgMWZhN2MxMTliN2E1NmYyMGE5ODhkNWJhY2I4ZWJiODVhM2RkZDI0MSBsZWdhY3ktdHJ1bmsKKzE1Njk0IGI2NjBlY2JlYWViOGUzMmFkODQzOGVmNjBjMjhjOGY2ODk3ODVmMDkgbGVnYWN5LXRydW5rCisxNTY5NSA3NTNmOTE2M2RmMGJiM2YzNzkzMTk1YjJhOWNhNWJmZDg2NmE1M2JhIGxlZ2FjeS10cnVuaworMTU2OTYgYTk4MDA5YTQzOTFlNzg3OTE2ZjA2YThmZjAwZjliZTBiYjI3MzU0NyBsZWdhY3ktdHJ1bmsKKzE1Njk3IDM0MjdiMGY4NWE3Y2U3MWJhYjljZDJhMTY2M2M1YTk3MDQxNDVhNzIgbGVnYWN5LXRydW5rCisxNTY5OCBhYmJjZWI2YTI1MzI0YjViNDRjNTFiZmQ2MWE3NTVlZTcxYjZmZGExIGxlZ2FjeS10cnVuaworMTU2OTkgN2FiNWIxZWVlYmRlOTI4MzkzNGZhOWJhNjVmNGM4MjNmMmI5Yjk3ZCBsZWdhY3ktdHJ1bmsKKzE1NzAwIDg4MDA0ZjI1ZGMyNWFiYmRiMzUwN2NlMGY0MGRmMWQ2NTY2ODM2YjIgbGVnYWN5LXRydW5rCisxNTcwMSAzZjdhMzU3OThhY2VhMTA5YjRlNWU4NDM3MDdkYmZlMTI1YzRjNGE3IGxlZ2FjeS10cnVuaworMTU3MDIgOGM5NTU0ZWRiZWJiYjQ4ZjQ2ZGU2OTE1OTNhMjQyMGI0YzY3MDFkOSBsZWdhY3ktdHJ1bmsKKzE1NzAzIGE4NTMwZDM2MDIxYzZjODFlNTk5NjY3MmQ3MWNlNTQxZDZlY2JjNzMgbGVnYWN5LXRydW5rCisxNTcwNCA0MjlkZDAyMjcyZDY4MDc5MjZiMWEyM2QyZjcxZmY2NzU3YmRhZjhlIGxlZ2FjeS10cnVuaworMTU3MDUgYjFlYzQ5YjJjNWMyYTkwM2IzYjkzZGYxNzJjMzM5M2E4MmI0MjM3ZCBsZWdhY3ktdHJ1bmsKKzE1NzA2IDVkMmZiNjc0MDhhN2NjNjMyNGI4OWQyMTE2OWFkMDU1ZTlmMDcyODcgbGVnYWN5LXRydW5rCisxNTcwNyA3NTVjOWFjOWU2YWViYjVmMTQ2ODEzMTc2YjViOGZiODcxOTg4ODNiIGxlZ2FjeS10cnVuaworMTU3MDggNmIyZWNkMTcyMjAzYjRhMTE3NzJjZTVhYzk4NjIyNjllYTkyM2JiOSBsZWdhY3ktdHJ1bmsKKzE1NzA5IGFjYjAyNjFiNjk0MmYzYmU3YjBiYTM3NGVkYjFmMDM4YmI5MjMwNTkgbGVnYWN5LXRydW5rCisxNTcxMCAyYTY0ZjIyNWExMDUzMWMyNGI3NTgyOTlkOWNiZjJjZThkMDAwYjU1IGxlZ2FjeS10cnVuaworMTU3MTEgODk0ZWZlYTcxYWNmZWUyNWQ3MGJkNGJlNjFlZjI4YmVjOTBkZmNkMSBsZWdhY3ktdHJ1bmsKKzE1NzEyIDdmMDIyZTI2MGE0ZDkzMzc3MDkwYWYzNGEyNDIxZmIwN2E3OGQ1Y2MgbGVnYWN5LXRydW5rCisxNTcxMyA1MTk0OWRlNzYzNjViMWI1NDBjOTc0OGFhYjNmMzRiYjRiOWY1N2IzIGxlZ2FjeS10cnVuaworMTU3MTQgYTNlMTI4ODFjYzNjMjNlMzczZDBhOGU3M2NjZWY2YzFjNDk4ZTUxOCBsZWdhY3ktdHJ1bmsKKzE1NzE1IDQzMDk4NWQ1N2RhMzE2ZjVkMzRjOTFiNjIwMmQxMzliMWU5ZDhiNmQgbGVnYWN5LXRydW5rCisxNTcxNiBjYWFlNzUwMWRiYTU1Njg1MTU0YjlmODJlMTliZDQyMjgzMzIyNGE0IGxlZ2FjeS10cnVuaworMTU3MTcgZGMwYTIxMmZiMzUzOTBmZGJkYjkwOWIyNzU2ODNmYjgxMTc5MDY0MyBsZWdhY3ktdHJ1bmsKKzE1NzE4IDk3ZGQ2ZGMzMzUwMzY3ZjRlNjFkNDNlZDk1MWE3ZTE2NDQ2ZjdmOGUgbGVnYWN5LXRydW5rCisxNTcxOSAzYzY2NDFjODEwZGJhMmI1NzU2NGM5Y2QwZDhjYThlNjlmNWJkY2U0IGxlZ2FjeS10cnVuaworMTU3MjAgMjUxM2NkNzQxNDdjNzM4OTQxYmI1NzZkOTAxMzQxOGIyNDA4MDJhMSBsZWdhY3ktdHJ1bmsKKzE1NzIxIDQ1YWFhNzVmMDhhMzc4MDJmY2QwMjg3NjRhYTI4NGE0ZWYxNjY4NTYgbGVnYWN5LXRydW5rCisxNTcyMiBlYjkxMWVjYTllZTllODE5YzAwMDI5NTM1YzMxOTA0MjY0MzEzNjI3IGxlZ2FjeS10cnVuaworMTU3MjMgYmFjMDQ1Yjg1MjYzZjM1OWY0ZGU2MTQxMDRiNTU1ZTM1NGFmMTdkOCBsZWdhY3ktdHJ1bmsKKzE1NzI0IGFjZTEzNzAxZjMzNGQ4N2JkOTkyNDY5MGJlYmJmM2M1NWY4MzAwMTMgbGVnYWN5LXRydW5rCisxNTcyNSA5MzY2MWQwZWI1Y2M1MWRjYTU2NTU2N2FhNGExZjk0YjM3NTIxOGE1IGxlZ2FjeS10cnVuaworMTU3MjYgMDRjODlkNzdkZmRiZjdkNTVmZGQ1NmYwMjA0MzAwMzY5NTliNGU1ZiBsZWdhY3ktdHJ1bmsKKzE1NzI3IDQ0N2VmYjY0YzcyZGRjYjNhZDUxMDhmNWQ3OTUwNzM1MjUyMzY5YTYgbGVnYWN5LXRydW5rCisxNTcyOCBkMTE1YTkxY2E1ZmE3ZjNjZmM5ZTQ0ZTA0MWJkODc0NjdhNGU3YmM1IGxlZ2FjeS10cnVuaworMTU3MjkgZjMxZmZiMzdkNzJjZjczMzY0OGJmMGMzMDMxNGRiYWMxNjUzNWVjYSBsZWdhY3ktdHJ1bmsKKzE1NzMwIGU2YjQwN2JhNDcxNTNlY2I2ZjQ5ZTdjN2U3MTczYTczMTQ1YTNmYTMgbGVnYWN5LXRydW5rCisxNTczMSA2MzQzNjcxOWQxMmUwMmJkOTNkMGRhMThmMmNhOWQ2NjhlMDE5M2M4IGxlZ2FjeS10cnVuaworMTU3MzIgYmMwZDQ5NjgwYWEzZGY2YWFjOGI0ZDA0MDE5MDFlMmRjYzE2OTkyZSBsZWdhY3ktdHJ1bmsKKzE1NzMzIGZjNzdlMzRlZjI3NDNmODI5NTdiZGIwMjI3MjJjMWVmYmYzNjA2ZGUgbGVnYWN5LXRydW5rCisxNTczNCAwYjQyMjY0YWMwMjE1NDRiYWY2ZTQ4OTc3MGQ1ZWEwMTYwNmNjNmFiIGxlZ2FjeS10cnVuaworMTU3MzUgZTc5OTJkMGQ2ODA4MjhjYzI2ZDZhMDAwN2VmMWFlNDU4YzdlZGRhYiBsZWdhY3ktdHJ1bmsKKzE1NzM2IGRmNjI3ZTYxOTE2ZTIwYTEwNGUxYzk5MGY1Zjc5MjIyNDliMzFlNGQgbGVnYWN5LXRydW5rCisxNTczNyBmNzkzYzQ3YzUxMGUxMzY3MzM0YjY3ZTA0Y2UwYWI1MGM5MTM5Y2E0IGxlZ2FjeS10cnVuaworMTU3MzggZGJiMTAzZTlhNTZmNTEzZDgwZGY5YWZhYzNiZmE5MDIyMDE2MDY2ZCBsZWdhY3ktdHJ1bmsKKzE1NzM5IDc3YzY1MTEzMTk4NGIyZWViMzc3MjcyMWYyYzBlMDc1OGRjNzM2NjMgbGVnYWN5LXRydW5rCisxNTc0MCA0MDAzODIxOTAzNjQ5N2M0NDY1OWFjOWViMThlMzUyNzkzOGUzOGRmIGxlZ2FjeS10cnVuaworMTU3NDEgZGZhOGQ5ZjFjMTIzMThlOThjMmNkNDIyMDMwOGZlZmJlMTY5NzI3MyBsZWdhY3ktdHJ1bmsKKzE1NzQyIDk1NjljNTYyNTc2NTdlMDYxZWZmZjhkNjE1ZTVlMzhlYWQwNGZiMWIgbGVnYWN5LXRydW5rCisxNTc0MyA4OTYwMmYzMzI0NDdiNGVmMzJjMWI4OGE3ZDY4OTMwNGYzY2Y2NmE1IGxlZ2FjeS10cnVuaworMTU3NDQgYjU0NDI5OWU2OGM1ZmE3NGZhNDU3Y2RhYmExNTNkMDllOWQ1NDVlMyBsZWdhY3ktdHJ1bmsKKzE1NzQ1IDUzNmM2MzEyOTkzMjliMmJjMjI4NTVjMGU4YjkwMmNjNjJmNmZlOGIgbGVnYWN5LXRydW5rCisxNTc0NiA1NWUyZmM0ZDM0MGU0ODI5OTdlNDBmMGMzZWFlMDdiMDMyZDY1NmY0IGxlZ2FjeS10cnVuaworMTU3NDcgNTI3OWE2ZTAwZDM2N2IwMGY1NGFmNGUwNzllZjljZGU1NTRlMmZmZSBsZWdhY3ktdHJ1bmsKKzE1NzQ4IDY1OGM1NWMwODEzOWNjZjZiMzkzODkyMTJkZGE3N2YwMjUzMGFkYmMgbGVnYWN5LXRydW5rCisxNTc0OSAwZWI1MzFjZTA4ZDE4YmNhN2U4ZmZjMGU5NDRmYmVmNDJiMzU3ZDFkIGxlZ2FjeS10cnVuaworMTU3NTAgMjcyZGI0NjA1YmU0N2FmYTQ2ZWEyYzg5NTgzNzk3NzM5NDgxZWRlNiBsZWdhY3ktdHJ1bmsKKzE1NzUxIGU2MTU1OTZjNWM0N2MwMDE4NDIwNzJjZWZlNjIyZTk5NmRiOWM0ZDcgbGVnYWN5LXRydW5rCisxNTc1MiAxYTQwZjAwYTQ4YmY2NDlhMGJmYzYzYjVkY2YyYzllMzk2NWJjZjMxIGxlZ2FjeS10cnVuaworMTU3NTMgM2Y5OTBlZjY2NjY3OWQ3ZWViYTM2ZWM2ZTc4NDI5YjQyZmE2NGM4YSBsZWdhY3ktdHJ1bmsKKzE1NzU0IDhmNzljNWI2OWUwYWRhM2M3YzA1MzY0YWE4MWIyMzJhMjhhODgzZjIgbGVnYWN5LXRydW5rCisxNTc1NSAwMWNlODlmYzc0NWZlMWFlZGU3ZDY5MmFmMTEwNDYyNmJiNTM5MThkIGxlZ2FjeS10cnVuaworMTU3NTYgYzkxMGI5ZDlhMGMwZTg1ZTBjMjFmZDM2OThhZDQ5YzRmZGFmNGY5NSBsZWdhY3ktdHJ1bmsKKzE1NzU3IGM3NTcxOGZiZDg2MjZlOGJlZWVjNjRjODdhYjI0NzQ0NTgxMDg0MjkgbGVnYWN5LXRydW5rCisxNTc1OCAyN2YzYTE4ZmQyOTY1N2I2NWUyMDM2MjUxZWM3N2M2ZTFmMmI1YWEwIGxlZ2FjeS10cnVuaworMTU3NTkgODZkNDk4OTQ2ODY4Y2Y1YTY3MjA2YjJmMmU5MmZjMzkwMWY0NmZlZCBsZWdhY3ktdHJ1bmsKKzE1NzYwIDcxNjBiNTJjYTc0YTA2YjFiMDAzZTUyYTZiNTA0NjI0NTkwYmU4NWEgbGVnYWN5LXRydW5rCisxNTc2MSBiYzE0N2UxODliN2Y5YjQ3OTAzZWJhYmJlYjZjZGFiOTY1ZmM0M2E0IGxlZ2FjeS10cnVuaworMTU3NjIgN2NkMTUyZTE1MzljNWNiYzY5YTg4MDkwNzZmNTI2YTk2YmQwYzIwYyBsZWdhY3ktdHJ1bmsKKzE1NzYzIDVmMzYyNmZlNThjYThlZDJhMTA5Y2NlMDY0NDIwOTZlYzQzNWJmMjggbGVnYWN5LXRydW5rCisxNTc2NCA1NzcwN2RiY2MyNDVjODExNmJhMjVjMGRjODdkNDdhMTU5OWNkOGQ0IGxlZ2FjeS10cnVuaworMTU3NjUgMzdiYTcwNTZkNGFiZmI2ZGYwZjY1Mjc3MDI3Y2I4ODQzM2QzNDcwMCBsZWdhY3ktdHJ1bmsKKzE1NzY2IDgyMTgxZTgyMGRlM2M4ODhjY2JkODdjZWNhYjE0ODgyYTRjMjY2MGYgbGVnYWN5LXRydW5rCisxNTc2NyA4NzAwMzg0MmZhZWNhNmVmYzI5YmFiMjM2MDI5MjdhOWM4MTgxNTk2IGxlZ2FjeS10cnVuaworMTU3NjggNWQ4ZWYyMmFkY2E1MTQ2ODMzNzEwYzFjNGYzNDc5MjJlZTRkNmJiOSBsZWdhY3ktdHJ1bmsKKzE1NzY5IDZlMTg2MWUwZWQ2ODc2YmJmNzAyN2VlYjlkZDkwZjlmYzJjNGQ1OWUgbGVnYWN5LXRydW5rCisxNTc3MCA3YjM4Njc4YjM2NTI2NWUyYmI4ZTg1NjhjMWUwYmUzMGE0YjI0YTc2IGxlZ2FjeS10cnVuaworMTU3NzEgZmJhY2Y2ZDU1ZGM2OTM4MzM2MDYyMThkMWEyOWY4MDQ4NTNhYmY2MyBsZWdhY3ktdHJ1bmsKKzE1NzcyIDM3NDAxZWMyZTkxMGIwY2JiZWQ3Yzg2ZDQ0NzgwNDhmMjdkYWMwYWUgbGVnYWN5LXRydW5rCisxNTc3MyA5MDc2ZWZhYzg0MjBiNzYwODA2MTVkYTg2MGI0ODk5OWViY2I4OWVlIGxlZ2FjeS10cnVuaworMTU3NzQgZGFkYjBjYzVjMmQyODVlZGVkOTgyYmM5OGQ1MTljYmQyNDUyMWUwZCBsZWdhY3ktdHJ1bmsKKzE1Nzc1IDRmMTNjMmI4MzIwYmMzYWEyOTA5NWE2OWYwMDFmMDdlMTliNWI1ZWYgbGVnYWN5LXRydW5rCisxNTc3NiBhZmZlMTBjM2I5MmVjZTIzMGNiYmMxMGMwZGJlNjAzZDc0YTk5MmUyIGxlZ2FjeS10cnVuaworMTU3NzcgN2EyOTI1OGM1NWRkYWRmZmUzZjYzZjhhMTQ5YTk3YThkMTUxZGFiNiBsZWdhY3ktdHJ1bmsKKzE1Nzc4IDM4M2Y0MDRiNzZkN2ZiMTYyYjI3MDlmOGI0ZmVlYWVjYzI5YjNkMTAgbGVnYWN5LXRydW5rCisxNTc3OSAyZTJlZTExN2Q0MGZkNmIxNDQxMWNkNTBkNmEyMDA0ZDdjOGNkMzQzIGxlZ2FjeS10cnVuaworMTU3ODAgNGEzZTk4NzFiNDFiYmEwYjU1ZDhlMjlhNjZiYzIyODliZDFjYzI3ZiBsZWdhY3ktdHJ1bmsKKzE1NzgxIDFkYWM4OWJiYmNkMjE3MzNkNmYxMzJmMmZjNWYxYWIzNWIwODcwNmMgbGVnYWN5LXRydW5rCisxNTc4MiAzMGE0ZTEzOTUyMTEwMzViYmZmZjBlYzFjNGVlN2Q2NjUzYTk5ZTdmIGxlZ2FjeS10cnVuaworMTU3ODMgODdlY2UxMjdjYmEyZDY5ZWJhOTFmYjgxZmYyNTZiZGY3ZmEyMWExMCBsZWdhY3ktdHJ1bmsKKzE1Nzg0IDQxMDJmN2VkZThlOTk5Y2UxMDFhZWE3OTQwODUzZWRlZDA1NzM1OTIgbGVnYWN5LXRydW5rCisxNTc4NSAyM2U4YWE0ODVhNzBkNTZlMmUxNThjMWNkN2ExMWVjMjAxNjAyMTc1IGxlZ2FjeS10cnVuaworMTU3ODYgNTg2NjFhNTU3ZGM2OTM0ZGQ0ZWJkNDUxNDM2YmY0ZmQ5NDRlOGEzNSBsZWdhY3ktdHJ1bmsKKzE1Nzg3IGNhOTZkOGNlMTJmM2RkZTI3ZjI5MjE3Y2Q5NWM3NmEwMTMyNzQ4ODEgbGVnYWN5LXRydW5rCisxNTc4OCBiZjJlZTg1NjcyMDE1NDhmOTQ5M2Q4NmU0NzA5Y2FhMzNiOWQ1ZDI2IGxlZ2FjeS10cnVuaworMTU3ODkgOTc0ODFkN2FjNTQ4YWQ0Y2E4Y2ZhYWFjY2MwYTkyZjQyNDFlY2MwMSBsZWdhY3ktdHJ1bmsKKzE1NzkwIDcwYjE2ZGM2MTM3ZjI0OTAwZGE0NTUxZmE1ZjdhMjZjYjUyYmFkY2IgbGVnYWN5LXRydW5rCisxNTc5MSA1ZGYwMzQ4MjY3MzUyYWRkMzNlM2E3ZWU5OGViMjdhYzNjZTg5ZmUyIGxlZ2FjeS10cnVuaworMTU3OTIgMDBhOTgxMTk0Y2E2OWZmMGY0ZmE5OWI3NzgyMjhkNDI0YmE1ZmY4YSBsZWdhY3ktdHJ1bmsKKzE1NzkzIDEyNDBiYzk5N2M4ZmI4Njk0MzgwOTVlMjY2MThjZDcyNGFlMGQ0MDEgbGVnYWN5LXRydW5rCisxNTc5NCBmN2FkN2U3OTE1ZTk5ZjU3M2I0OTA5ZmZhYTRiZGM5MjQ1MmNiNmY2IGxlZ2FjeS10cnVuaworMTU3OTUgZjFlNDBhYmJlZGIzZTMxYjU2OTAwOWZjYjYzNDQwYzE0N2I4ZGRiMyBsZWdhY3ktdHJ1bmsKKzE1Nzk2IDFmNjFlZjY0NTNkNTRmMTA0ODdjNzIxNGM0NTg5MmE5NGUzNjFlZGMgbGVnYWN5LXRydW5rCisxNTc5NyBjMDlhNTcwZWI2ZWI1ZmY3NDBhYzBkMTI1YmIyMzAxMTk3MWY3NWQ1IGxlZ2FjeS10cnVuaworMTU3OTggMzYwMzIwZDJmZTk0NGQ2NDg4MGRhODFhYzgyNGQzYzNlZmRmMmI4ZCBsZWdhY3ktdHJ1bmsKKzE1Nzk5IGVhYTRjNmZhZjNjNGIyM2JlOWFhMjY3OGJhMzI0MmE2NDNiOGFhYTcgbGVnYWN5LXRydW5rCisxNTgwMCAxYzhjMTAxZjJiZTFlMzBkZGE1YTc1MTJlNTk0ZGQ5YWE2YzM4ZGRhIGxlZ2FjeS10cnVuaworMTU4MDEgMTJhYzJjMjY3YjkzMmU1YzM2OGQyYWIyNGMxMGE2YzQ4MjBjYzk5OSBsZWdhY3ktdHJ1bmsKKzE1ODAyIDg0YzJhNGQyZGY5ZjRmZjA3ZWNhMzhlZTkxNDEzYmRlYjZmNWE5YzQgbGVnYWN5LXRydW5rCisxNTgwMyAxZjI0NDE5NzhhYjE0MDA2MzZlMGZmNDBjYWU3Mzk4MTRlZGEwNjgxIGxlZ2FjeS10cnVuaworMTU4MDQgN2RmNzQ1MmQxM2NkNDMzOTI0MzUyMWMzODNiYjJlYmVhM2FiNjFlYiBsZWdhY3ktdHJ1bmsKKzE1ODA1IDBkMzA5ZjdmMDIzZmM0YWVjOGJhYjM5MTRkMWEzOGRiNGM3MWE0NDQgbGVnYWN5LXRydW5rCisxNTgwNiA3MjA1OGRjN2Q1NDViNzdlMWQxN2Y2NzY1YjRiMTA2MTU2Zjc4N2IzIGxlZ2FjeS10cnVuaworMTU4MDcgMDFkMWUxMDE4NDk1MGYyYTQzODFlNzU2ZTBmZmIxMmE1M2VkNmQ4ZSBsZWdhY3ktdHJ1bmsKKzE1ODA4IGY3MzQ1OGM1YzM1ZDAxZGQ5MWM3Nzk0NWJjYjk0OGMzNzc2ZjY1ZTMgbGVnYWN5LXRydW5rCisxNTgwOSA3MDA5ODQxMDljYjk5ZmViZThiYWFjMjhkZDZlODA1NzE1NjI1ODI2IGxlZ2FjeS10cnVuaworMTU4MTAgMGJlNGI3YjY1MGUzM2RkYTA4Mjg5ZDdmNmVhYmQyYzU0NDc0N2FkYSBsZWdhY3ktdHJ1bmsKKzE1ODExIGExOTU5NjJlMzg5Y2IyYTNjYTEyNmQ1ZGYwYzdmMzQ5M2NkNzVlMTcgbGVnYWN5LXRydW5rCisxNTgxMiBmMTMzODQxMDU1Mjg5YzdiYzZmY2JmNTVlNGY4ZDA0NzYyM2UxMzBjIGxlZ2FjeS10cnVuaworMTU4MTMgNGRiZTEzMDI3Y2IzMTljZTFjODk1MzgzY2Q3OTAxOTllMWFlNjFlYSBsZWdhY3ktdHJ1bmsKKzE1ODE0IGIwMDc0NDIzNzg3NzBkZmVmNzhjN2QwYzZjNzQ4ZmNlY2Q4N2U5YjAgbGVnYWN5LXRydW5rCisxNTgxNSAyNzdiYTgyNmNmYzk3ZmZlZDJmYTI1ZGVjYzAwNzk3YzdmMWU3MjEyIGxlZ2FjeS10cnVuaworMTU4MTYgY2I4MTA5ZTcyODc3MWNmNzVlMTcyZDE2ZWIyMmI0NzlmYzMzYTU4ZSBsZWdhY3ktdHJ1bmsKKzE1ODE3IDhhMDc0MDJlMjNkZWFmYzRlZWNhMDg1NTQ5ZDZjNWFlYTk2OTU1MjggbGVnYWN5LXRydW5rCisxNTgxOCAyYjIxY2MxYmI1NjQ5MTJhYjk2NGI3NTJkMTlhYmEwYWE3NjNiNzAwIGxlZ2FjeS10cnVuaworMTU4MTkgNTNmNDAyMmMwY2Q1ODdjOTdhZDQ3YTE1ODAzYTczMWI2NjUzMmUxNyBsZWdhY3ktdHJ1bmsKKzE1ODIwIGY0MDIwNTc1NjFiM2ExYzZjNDU3MGZjMjc2OWE0MmI2OTI2ZGVkOTQgbGVnYWN5LXRydW5rCisxNTgyMSA0YjQ4MjFiZjUzZGNmMzFiMGU3YmQ3YzM0YzViYjg0MzZiZWUxNjkzIGxlZ2FjeS10cnVuaworMTU4MjIgOWIyZTcwYjU1YzdmMTVmMzRlNzAwYjRmMzY3YzE4MTcxODM3MTIzMyBsZWdhY3ktdHJ1bmsKKzE1ODIzIGNiZGIwNTVlNzlkOTI1MDI0NzJkNmMwMjE4MmU5N2M2MTljZDM4OTQgbGVnYWN5LXRydW5rCisxNTgyNCBlYjI0MzQ0M2I4ODQwZTgyZmFiN2QzMjM4MGM0NzM3MWFmMmIwY2NjIGxlZ2FjeS10cnVuaworMTU4MjUgYmQ4ZGI3MTQyMmY2MDg5ZjZiZjA2MTBjMmQyMjEzOWQyODE4MTQzMSBsZWdhY3ktdHJ1bmsKKzE1ODI2IDdiMjRjODE4ZTJjZjJkMzE5N2M5ZDNmOThhZTgwYmQ3ZGUzNjQ2NGMgbGVnYWN5LXRydW5rCisxNTgyNyA1YmFiYzBhZGQ2NGYyNzliZmYyZjAzNmFjNzQyYTUxYzM4MWI0ZGI0IGxlZ2FjeS10cnVuaworMTU4MjggYTY3OWJkYjQzZmFkYzkxZWQ0ZTJkNzU5MTk4MTJjMTVkYWI4MmQxMCBsZWdhY3ktdHJ1bmsKKzE1ODI5IDcwNTEzMjY2N2Y3YmEyY2Q3YmM3MjM4NzIyM2JjNjg0MTQ2OGM1OGIgbGVnYWN5LXRydW5rCisxNTgzMCBiNzZkZjY4MDk5YTVmNzk2MzFiZjZkOGRlZmExYzViMGY0ZjE2YTlkIGxlZ2FjeS10cnVuaworMTU4MzEgNzM5MmU3MWY2Y2NlMDI3MmJhNzEzOTMxYmQ5MDEzNjVmNDk5YjA4NSBsZWdhY3ktdHJ1bmsKKzE1ODMyIGM4NzhkYzYzZDdhZWZhYmNhZmE2NmU1YTg0MDU4MmE0OWM3MTg4ZjMgbGVnYWN5LXRydW5rCisxNTgzMyA2YWI4ZTFiYjE2N2NkMzM3MmY4ZDVlZWNiZTllNmFjNTBhN2QyYjIyIGxlZ2FjeS10cnVuaworMTU4MzQgZWYzZDQ5OGFhMzNjMmVlNDcyMjZmMGQ5NzMzNzEwYzZhYzUyNzYxMCBsZWdhY3ktdHJ1bmsKKzE1ODM1IDRmZjNjZTNmM2NjNjIxZTRjNTkyYjM2YjVmYjk2ZjczZGE1MTQzMmQgbGVnYWN5LXRydW5rCisxNTgzNiAyY2Y5ODc0YjYyMTE0ZmZlODQ0NzYzNWMyNTY5NzYxYzVmNDRhOWJmIGxlZ2FjeS10cnVuaworMTU4MzcgNWE3MDgzNjkwODg0YjdjYzE1MTQwMDg0NzRiMmI3NmQ0ODAxNGZlMCBsZWdhY3ktdHJ1bmsKKzE1ODM4IDAzYjFjYzQ3YTg2ZDAxNDIyNzMzNjNlMTQwOTI4NGZmYTRiNGY3NGUgbGVnYWN5LXRydW5rCisxNTgzOSAxZDA0MDc5NjA5NTNhNmQ4MDMyNGFlMzZiOTllMjMxMGM5OWM5MTg4IGxlZ2FjeS10cnVuaworMTU4NDAgMTg1MDAzZDA5ZTc2NmM4M2IyYmY2MTJiYmQxNTk3N2MzMGZhOGVmYSBsZWdhY3ktdHJ1bmsKKzE1ODQxIDg3YjQ2NmI3MDJkNjA4M2RiZmI0Nzk4MjRiYzk5NzQ1ZjhkODg1NmIgbGVnYWN5LXRydW5rCisxNTg0MiAwYWNlYzIxMWEyMDkwZmM4ODQzMWEzMDBjYTU3OGU3OWExODA3ZTliIGxlZ2FjeS10cnVuaworMTU4NDMgNmIyYzY5NjNjNDBiNjhmMTFlOGIzMmRjMDU3ODRjZDUzZDdiNzg5YyBsZWdhY3ktdHJ1bmsKKzE1ODQ0IGUwYzkwMzExMmU0ZWQ0ZjRjYTA4NzAzMWIxNWFjZTIwMTEwOWEyMWEgbGVnYWN5LXRydW5rCisxNTg0NSAwODE3NGJmMjM3MDJmYzA4NzQ4Y2UxMWI5ZjE0OWFlZDk5MzRiOWZmIGxlZ2FjeS10cnVuaworMTU4NDYgOTI0NjhkNDNhMjNmMDM0ODY0ZTJiMzM3NTg3ZDg2MjAzM2I2MmEyZCBsZWdhY3ktdHJ1bmsKKzE1ODQ3IGRlNGUzMDk2MmZhYmEwMDY1OTg5ZmU1NDc0NDE2OWU2NDBlYjY4YTcgbGVnYWN5LXRydW5rCisxNTg0OCAwZjIxNmE1NGQzNGI0OTAzZTNlZTRiY2E0MzA0OTg4YWZhNjAwNGZkIGxlZ2FjeS10cnVuaworMTU4NDkgYTg4MzQ4OGI5ZGNiZjI4YWNlMjc1MGE4ZjEyMGE2YTNhMWE3YTBkMyBsZWdhY3ktdHJ1bmsKKzE1ODUwIGJmMWViZTg2OTg3ODFjZjY1ODAyM2FmZmNiNWNlMjMyOTJkZDg2NzggbGVnYWN5LXRydW5rCisxNTg1MSBkMDYwMTI5NjdlYWEyMmVjODJmOTNkYzMxMmJhNTU2ZmQ2Y2RmZDNmIGxlZ2FjeS10cnVuaworMTU4NTIgYjlhYjNiMmFjYzhjZTQwZjcwNmZlZDFhOGMxNjgwNTgyM2Y1MjhkNSBsZWdhY3ktdHJ1bmsKKzE1ODUzIDU1MmZiNDNhZTgyMzc3NjRkYmMyOTJlYWVjMzQ4NjI3NThkMTZhZmIgbGVnYWN5LXRydW5rCisxNTg1NCBjYmUwMmI4YWVlMDc4OTBmZjg3NDliODUxMjBjZThlYzdkNWE5NWQ3IGxlZ2FjeS10cnVuaworMTU4NTUgMDdhNGQxNjM3ZTA2ZGY5M2IwMDg2NDk1MWU3N2I4NTUwYmY4ZWRiOCBsZWdhY3ktdHJ1bmsKKzE1ODU2IDIyMzA5ZTk1N2ZhNzNlZTJkNzU5MTQyYTVkMGQ5NDU0NzM4YzU3ZjIgbGVnYWN5LXRydW5rCisxNTg1NyA4YzhkZTViNzM2ZGMyMWYwZTRkNDI2MDJmNDdlMmU0YTFmMTljZDVhIGxlZ2FjeS10cnVuaworMTU4NTggZDg0OWEwZDIyOTI3YWQzNjI1M2NjMTA2ZjIwNmI5MWU2ZmViMjE1YSBsZWdhY3ktdHJ1bmsKKzE1ODU5IDdiZTU0ODI0MjZkMWVmYzYyMWJlYjMxMjY1YWNkNjJhODcxOGFkNjMgbGVnYWN5LXRydW5rCisxNTg2MCA5OWNlZTBjODdmNmEwNGYwOTFjNGMwMzhjMWYxNzQ1NTE5NzIwNDRiIGxlZ2FjeS10cnVuaworMTU4NjEgMzY1ODQ0ZTc1NTg2NjkzOTllZDA4MWZiNmZmM2FjMzEwZDJmYTdhOCBsZWdhY3ktdHJ1bmsKKzE1ODYyIDNjZWE3M2EyYmJkOGMxMjY2NzA0MmUyODYyNDgwOTYyODkzMTJkMzcgbGVnYWN5LXRydW5rCisxNTg2MyA0NTlkMTk3YWRiMDhmYzY3ZDkyMDI4MzM5NmU0ODZlYjZjYTNmOTJmIGxlZ2FjeS10cnVuaworMTU4NjQgZTgzOWU4ZThkM2U5YzBhMTA2ZDBmZjNmMGM4MDZlNzk4YjE5NDVlNCBsZWdhY3ktdHJ1bmsKKzE1ODY1IDc5N2FjZjNmZmQyNjY1NzMxYzE4YzE4OTM2NTBjMWQ3MWZmMjk3NWEgbGVnYWN5LXRydW5rCisxNTg2NiBmZDg0NjdkMTM3NWQyMDRhNTk4ZGZkNDk2YzRhOTIzNmRmZWJhYWE0IGxlZ2FjeS10cnVuaworMTU4NjcgYTY3MjVhY2RmMzNiMWI5OGY0MGE5MzI2MDY1ZTMwYWZlNzc3ZDc4ZSBsZWdhY3ktdHJ1bmsKKzE1ODY4IGY2MWI0YTk4Yjk3MjkyY2Q2ZDk3Mzc1MGNlNmU3MTlmY2FiY2NiY2YgbGVnYWN5LXRydW5rCisxNTg2OSA2OGU1N2M1ZDFiZWMwNzI4NzdiZTMyYjBlYzUxMjU5ZDVkMzk3Mzk1IGxlZ2FjeS10cnVuaworMTU4NzAgYzNhMDFiNjQyYzk3MTg5YWRhNDMyZjBlM2U2ZmMwZjRiNWE3N2NjZSBsZWdhY3ktdHJ1bmsKKzE1ODcxIDM0NmYyYTFjMDJhMGEzNGEzNzBkYWNkZTUwY2Y0NzBmM2FlNWM3NDYgbGVnYWN5LXRydW5rCisxNTg3MiA1MmQ1ZmI0NzFlMTcyMGYwNWYxZWMxNzBmNTU5NTE1YzIxMWFmZDdkIGxlZ2FjeS10cnVuaworMTU4NzMgZjhiYzdmNjJkYzIzYWZkY2U2MDlkNzdkNGMzNGI3ZWE0ZWQ2Y2ZhMiBsZWdhY3ktdHJ1bmsKKzE1ODc0IDViZDEyNzMzYTY0YWM0OGIyM2JhMGZmZDQ0MGIwN2Y2OTA2ZjYwYTIgbGVnYWN5LXRydW5rCisxNTg3NSA5MGViNTgyMjRlNDMxNzIzN2YyZWNjMDliZjI0ZTE0YzVlODAwYmNlIGxlZ2FjeS10cnVuaworMTU4NzYgODE5M2UwNDU3ODdiZmYwODE2ZTI0NDZkYTNkYTI1NmM1YTFhMjE3MCBsZWdhY3ktdHJ1bmsKKzE1ODc3IDg5NDYxM2I0ZWIwNzVhODUwZmUyNTM1MDdkYjYzZTAyYWVhMjc3MzUgbGVnYWN5LXRydW5rCisxNTg3OCAyNmVjMWIzMGVmYTkzZmRmNWQ0YjMzZThiMDYzZjQ1YjFjOTY4ZmVmIGxlZ2FjeS10cnVuaworMTU4NzkgN2ZmNDBkYTA4YzJhNjQ2NTBlZTMyNzI4Y2UyZTAwY2U0YWNkN2ZiYSBsZWdhY3ktdHJ1bmsKKzE1ODgwIGZkMTJjZDk5NjE1NDQ0NGZiYzExODA0MGEzOGFmZGJlM2JhZTU5ZTUgbGVnYWN5LXRydW5rCisxNTg4MSA4OTZiMzU5ZDFjN2Q2ZDI0MjFlMzlmZTQ0YTUzYjc3YmYxOTQzYjQzIGxlZ2FjeS10cnVuaworMTU4ODIgZmFlZmZmNDNlNThhOTliMmU1MzM5YTU2MzQzMzhjNjdiM2EwZDg5MyBsZWdhY3ktdHJ1bmsKKzE1ODgzIDUzZDAwZTdjNTg0ODQzNjdiMGJjMzFjZjAxNDcwMmNhOTczYWEyZDcgbGVnYWN5LXRydW5rCisxNTg4NCA0NjIxNzU4MjdhNzRlZWJmOTA4MDc2MzE3YzZjMGZhYjkzZTlkNmU2IGxlZ2FjeS10cnVuaworMTU4ODUgNTAyMWRiNjc0MDE5MzFmNmNlNDljMzgwZmUwNTVjZTRmZjkwZjgwMSBsZWdhY3ktdHJ1bmsKKzE1ODg2IDQyNTU4ZjFiYmZjNGRjNzE5MzVhNWE4MmNmYjhlYzlmN2IyNzZhZDEgbGVnYWN5LXRydW5rCisxNTg4NyA3OGFkNGY2NGFkYzVmNDE4MjVlZWRiMWFjNjRhZmNmOTM3Y2NhYWJlIGxlZ2FjeS10cnVuaworMTU4ODggMDcwNDBkNTYxZjA5MTI0MzhmOTA3NTczYzJkNGE4NThiMjE5OTgwNyBsZWdhY3ktdHJ1bmsKKzE1ODg5IGNiOTI4ZDkyNmYyNzNkYjkxNGI3OGQ0OTRhYWVkYzZjNmIxNWM0ZmQgbGVnYWN5LXRydW5rCisxNTg5MCBlMDQyYzRjMzg2MDU2YTg0MzVhODJiNTc5MWEyZDYxNmUxN2U0YTRiIGxlZ2FjeS10cnVuaworMTU4OTEgN2E3ODcxNTM1NzI3MWU3ZjdmODI1OTVjZmQxNThiYTExZTA5MTgzNCBsZWdhY3ktdHJ1bmsKKzE1ODkyIDA1Y2M0NWQ1N2E3ZmExNjBiM2JiZWEwNzgwMTZhNDZlN2I1ZThkYzIgbGVnYWN5LXRydW5rCisxNTg5MyBlYWNhOWUyNWEwNDg5NjA3ZGQ1MWExYjI1YTE3ZDhkYWZmMmI3YzgyIGxlZ2FjeS10cnVuaworMTU4OTQgMTU2NTE0OTBhZjM0MmYwNjI1NDQ4YjIzYjM3Y2ZhZDc4NTdhNDMxMCBsZWdhY3ktdHJ1bmsKKzE1ODk1IGY4MjY1MjU0ZDhhOWZjYzU3MTg3OTIxNDFiYmM4NmFiYWM4YTcxMzggbGVnYWN5LXRydW5rCisxNTg5NiBiMzFmZmY1OTYyMmEzZGYzN2NiYzZkOGQxMmEzMmU4Yzc5OTgxM2EyIGxlZ2FjeS10cnVuaworMTU4OTcgYjZlZDhmYTI2NzVjNzdkNDFiMmNlMTYxMjI0YzZmODY3ZGFiZTdlYSBsZWdhY3ktdHJ1bmsKKzE1ODk4IDcyZTNjZGIzMmE2YzYxNDQ3YTYxZGY1NjNlM2M1ZjM3ZjZmYTMzY2IgbGVnYWN5LXRydW5rCisxNTg5OSA0MDQxNTYwOTJmNzgxYjg5N2Y0YWY2NTljYzliMTBlNDRlZjVkNGMzIGxlZ2FjeS10cnVuaworMTU5MDAgYzIyMDdkNmMwM2E4MThlZjUzZjU1YmQ5MWM2MWNhMDA0MTJjY2Q0NiBsZWdhY3ktdHJ1bmsKKzE1OTAxIDdjNmIxMmNlY2VmMjZlMzM4ZTliZTE2OTI2YWY1YTJmMjY1MzkyYWQgbGVnYWN5LXRydW5rCisxNTkwMiBjY2E4NDc0NWRhM2UwMGNiZjgzYTRmNmNlNGRlYmI1YzNiNDhiMWE0IGxlZ2FjeS10cnVuaworMTU5MDMgZjg2ZWE1YTY5YzVlYWRiODA0MGZjMThmNjdmNTI5ODQwODgyYzM3OCBsZWdhY3ktdHJ1bmsKKzE1OTA0IGY1ZjBmMDBmOTIyYTM2YWFhYzhmYTA2OTJiZmY3OGYyYzdlYjI2NmEgbGVnYWN5LXRydW5rCisxNTkwNSBmZmE0YjRiNDM3MDMxZDM0ZjAxMDBhZWZiNjNlM2RmYmRhMWFkYzZlIGxlZ2FjeS10cnVuaworMTU5MDYgMGExNDYzYmEyOTM0ODdkNmVhNTZjMDhiMWI5YjY5YjY5ZTczY2YxNyBsZWdhY3ktdHJ1bmsKKzE1OTA3IDc5NWIzMjdhOTVmZWJkYWJiZmM5YmRkYWMwMjAxYTkxM2FkYWJhZjggbGVnYWN5LXRydW5rCisxNTkwOCAyZjNlNDE4NjVkM2QzYmZiYmMzZjlhYjJmOTAxZTI2NjEwYWQ5M2ZjIGxlZ2FjeS10cnVuaworMTU5MDkgNjA3ZTUyODQxZGYyNzhmY2UyYTQxMDc5NDFlZjIxYjU2NGVkNDRmNSBsZWdhY3ktdHJ1bmsKKzE1OTEwIDY3ZTc3NDY2MTlkYTdlZDdjYjc1Y2FiNjAyYzk0YWE3M2QyNWE4MzIgbGVnYWN5LXRydW5rCisxNTkxMSBmMWY0ZDgyMmU3NjFlN2FjZWE5ZmNkMjQ1MjU2NTA5Yjc5MWNjYjIwIGxlZ2FjeS10cnVuaworMTU5MTIgM2Y4MDczYzYzMDMzYzE2M2E3OTQwZTYzYjc5NzVmNzIyZDYyM2RiMSBsZWdhY3ktdHJ1bmsKKzE1OTEzIDJiNzJhYWJhNzg5NTExMTU2NGVhNzNhYjFhMGQ4ZGU2MWFmMjM2ZGUgbGVnYWN5LXRydW5rCisxNTkxNCAzMjgxNmNlNjBhNDliMDlhZGU5NzU5MTcyOWUyODAzMzE2ZmZjMzcyIGxlZ2FjeS10cnVuaworMTU5MTUgMzU3YjcxYzY5MzNiODUxM2QyNWJmOTFlZjk0YTc1MzA0NmZjMzhmNyBsZWdhY3ktdHJ1bmsKKzE1OTE2IDk5MTlkNjVlZGM3NmNhZmZiZDZmYzI4MDAwYjY4YmYyN2ZlMTBlY2EgbGVnYWN5LXRydW5rCisxNTkxNyBjMzM5YWM3YjZkNGYxZTExMmI4YmZmZTYxZjdjNTJmYjRmOTgxZTY1IGxlZ2FjeS10cnVuaworMTU5MTggZmEzZGMyMWQwZTA4ODBlNWM0MmQwZDk2Mjg0MTg0ODYyMTk2MmNmYyBsZWdhY3ktdHJ1bmsKKzE1OTE5IDFhNDJhOWQxMDM1N2UxNDZhZmFkZGU3YjQyMTBhNjcwYzgwN2UxMTAgbGVnYWN5LXRydW5rCisxNTkyMCA1MzM1NWVkNjEyODg5MjgxODdjODVjYjdlNjFjNzRmMmMyY2MwYzU1IGxlZ2FjeS10cnVuaworMTU5MjEgMTM5ZWFmMmY5NmFiNjcyMWUzMmExOGJjMjRkZWJkNzYxZjUwNGEwNSBsZWdhY3ktdHJ1bmsKKzE1OTIyIGNjZTJjN2EzOGJkNTZkZTEyNjYzNDk3ODExYzlmNTY0MWRhNmVjZDQgbGVnYWN5LXRydW5rCisxNTkyMyBjMzYwODA2YzA2Yzc2MzI2MWFjNWRkZDgyNDE2YjRlODhiNDM1ODk4IGxlZ2FjeS10cnVuaworMTU5MjQgYTA5ZTg2MzU1MzRkZTEyYjQyZTE3OTI2ODJhMTI5ZjRhNWQzNjU5ZCBsZWdhY3ktdHJ1bmsKKzE1OTI1IDZmYWE0MTFjNjFmYjRhZWRmMzEwMmEyMjM1MDViZjlmZWJjN2QwYzggbGVnYWN5LXRydW5rCisxNTkyNiBjOWIxZjE5ODZjNDAyOTQ4ZDcyMjdkOGIzYzgyZTRhYzMxYTA0NzJlIGxlZ2FjeS10cnVuaworMTU5MjcgMDIzYTIwMThiOTZkZWJhODRmOTc3NzcyMDIxZWQxNTAzY2IyOTcwMSBsZWdhY3ktdHJ1bmsKKzE1OTI4IGY3Mjk0MjQ2ZDA0ZjhkNGM1NmQ2NmExMDMxY2E5NjQ4ZTM0MDVjYjAgbGVnYWN5LXRydW5rCisxNTkyOSA1ZjZmMDg4NjkwNWNkMzMxODUwMGVlZWIxNjE1MDQyMTFiMDIwODQxIGxlZ2FjeS10cnVuaworMTU5MzAgYjc4Yjk5NmU4ZWJjMmIwNjMyMWNmYWJmMTk3M2M2YTVlOWY0OTEwMCBsZWdhY3ktdHJ1bmsKKzE1OTMxIDIwODM0NmU5MjRjYjAyOTBhZDQwNzE3OTViMjY0MTcwNTZhZWE1MTAgbGVnYWN5LXRydW5rCisxNTkzMiBjMTdmZDJjYTY2NTljMDE0OGE4YjY4YjVlZWI0ZGFlNTQyMzIwMjMyIGxlZ2FjeS10cnVuaworMTU5MzMgMDVlNDVjNWYyZGU1YjdjZWZkNjgwZDhmMTZiN2QwNDc0NjI3YTZmYiBsZWdhY3ktdHJ1bmsKKzE1OTM0IDAwMjFmM2MwYjIzODAzMjM4ZWNjNTQyMjdhOWM5OWU1MGJlOWM5MTYgbGVnYWN5LXRydW5rCisxNTkzNSA5ZDllNWE3YzEyZGFiZDM5MTk4ZDc3NGI0YzgzMGYzM2QxZGQ1ZDcyIGxlZ2FjeS10cnVuaworMTU5MzcgZDM3YzAyN2UzZmFlOTdiZDhjNTBiNjk2ZTg5MDdmNWZhMWI1MDY0YyBsZWdhY3ktdHJ1bmsKKzE1OTM4IDI4YThiYjc5NGYxOWQ1OGM4MjIyYWJiOTU3MjBmNTMwNGE0OTNmYmUgbGVnYWN5LXRydW5rCisxNTkzOSA3YTk2ZWMwMTAzMzNkYzgyNjEyMTk3ODdkMjg5YmU0NDJhYzdhYTQyIGxlZ2FjeS10cnVuaworMTU5NDAgZDM3Mzc0NTUyYTE1ZjliNmRjMmY4YzRkMDc1YzdlMWI0YWRmNjQyYSBsZWdhY3ktdHJ1bmsKKzE1OTQxIDkxNWQ5ODU5MThlMjFkM2E5Y2RiZDdkNzNjY2ZkOTdmNjE0MDM0MjYgbGVnYWN5LXRydW5rCisxNTk0MiBlZjEzMjQyZGU0MzNlNzRkMGMyNzdkZTI5ODRlYTU5NmFlMzc2NjQ0IGxlZ2FjeS10cnVuaworMTU5NDMgNmY0NjY5ODE0ODg0YTMxMDY4ZWIwODUzZDEyZjk1NDQ5YWI4MzNlNCBsZWdhY3ktdHJ1bmsKKzE1OTQ0IDFlMzAyZDk5NmQ1OGQ4Y2I0YTk5MDFiMzk5OWQzMmIwYzljNWYyZTUgbGVnYWN5LXRydW5rCisxNTk0NSA1NGJmZmRkZGMwZWYwODMxNWQ2NTBlOWFmMmVjOTg0MzA0NTRlYWRlIGxlZ2FjeS10cnVuaworMTU5NDYgZWZlY2JiZjcyNzY1M2Q3N2E2MmFjODA3NmM5MmE2N2NhZGFhYjQ2ZCBsZWdhY3ktdHJ1bmsKKzE1OTQ3IGU5YzM0Y2NhMGM5Njg2MjQzNTUyZTZkN2MwYWY2ZjQ0Nzk4Mzg4ODMgbGVnYWN5LXRydW5rCisxNTk0OCBjNDViYzI1OGY4MzNjMTI5MGE2ZTA5NjVlYmIzYWNmZTJlZjg0NDgyIGxlZ2FjeS10cnVuaworMTU5NDkgNTkyOTRkZDRiZmRkZjFlMTQyODM3MTY4YmRiNjc2MDZmYThlMmVmNyBsZWdhY3ktdHJ1bmsKKzE1OTUwIDkyYmE5MjhjMDliOGI4Y2MxYTc2MjExMzU0NGI3ZGQyMTExZTkyMTYgbGVnYWN5LXRydW5rCisxNTk1MSA3ZTI0NWJjNTk4YjdiYzM3MTgzYTU1YTY5ZTMzNTFkYjJjMDUwMTk5IGxlZ2FjeS10cnVuaworMTU5NTIgYzdiZTg0NzgyNmIxNzI0MTBmMmQwZTZhOTFmYmM0OTY0ZGFjMjBiNiBsZWdhY3ktdHJ1bmsKKzE1OTUzIDdlNzE5NzVlYTVmMDkwZmZmYzE0M2U5MTc3Y2Y0OTRkZjU0Yjk0MjYgbGVnYWN5LXRydW5rCisxNTk1NCAzMTI4YzNjZDE4ZTg2Y2VhNDVmMjIwNWZmMTc0MmNjMjNiMzFiZmRjIGxlZ2FjeS10cnVuaworMTU5NTUgNTQxZGI1ZjYyNTllOTZhYzM0YzczY2Q5YjBiNzk3OTVkNDI5Mzc4MCBsZWdhY3ktdHJ1bmsKKzE1OTU2IDc1M2FmNjJhYjhhMTliZjlhZWIzMzY4ZTI0NGFiYjI1MTc1YTExMmUgbGVnYWN5LXRydW5rCisxNTk1NyA5NjE2N2FmOTBmYTAzMTE0ZjE5OGUzMmRjYjc2ZWIwMTQxYTJlZmY0IGxlZ2FjeS10cnVuaworMTU5NTggMTg5MjBlYWExMjI2NGE3YWZhOGQ3NGFiYjkzNDBiNWJkZGZmMWYwMSBsZWdhY3ktdHJ1bmsKKzE1OTU5IGVkZTE4ZmQ1ZWQxNWFlOGQ2ZmVmYWY1MmEzZjRhNjMwMTcyMTcxZjEgbGVnYWN5LXRydW5rCisxNTk2MCA0ZGVlZWQ1OGJmNzY0Y2Q1NjdiNDg1ZGNjZGFjOWU2YzBkZWUyODZkIGxlZ2FjeS10cnVuaworMTU5NjEgYzUyNzljMGY3MTZmMDViMjdlYzBmYzAyZDZmYWI4ZjM4MjczMTk3NSBsZWdhY3ktdHJ1bmsKKzE1OTYyIGVlMWEzNGU1ZWRiMTI3NWNjYjNmNTc1ODc1OGFmZmY2NzM3MWVmNjAgbGVnYWN5LXRydW5rCisxNTk2MyBhMDkzZmFkOTJjY2Y4OTUwNDg4ZGNkNmQ4ODA3MTg5Y2ZlNjY5ODEwIGxlZ2FjeS10cnVuaworMTU5NjQgNzljNGEwNTQyNTcyNDQyZjRmNGRmZDgzZjI4NGE4ODg0NWNkYjI1ZSBsZWdhY3ktdHJ1bmsKKzE1OTY1IGE2MjVjZTJmYmZiZDg1NTJhYWEzNGU3OWNhOTViZWZhZTg0MTBiOWUgbGVnYWN5LXRydW5rCisxNTk2NiA1YTRkZjlkOWM3YmY1NmUzYjQ3ZjZkYmEyZWY1MGJjMjk1MmFjMWE0IGxlZ2FjeS10cnVuaworMTU5NjcgYjlhNTZlNWUzZDIyN2ZkOWQwMWQ3OTZjZDVjZGU3NmYwY2ViMGU3MSBsZWdhY3ktdHJ1bmsKKzE1OTY4IGQ2NjQzNTMzN2UxYzJiNTUzYjRjY2I4M2FhY2EwOTc5NGM3MWRiY2EgbGVnYWN5LXRydW5rCisxNTk2OSBlYTRiYmFiYzc0OTczMDliZmU1MGMyYmFkYTkxNWUyOTIzYjc4NzVmIGxlZ2FjeS10cnVuaworMTU5NzAgOWQyMDY4NzNjNWJkNGIxZmE4ZTg5ZGZmNzVkYTRiMWI5NTY3MzUzZiBsZWdhY3ktdHJ1bmsKKzE1OTcxIGIxMWUwYTg5OGRlMDk1NWJkNGNlZmFkZTg2YWM4NTNmZjI1MDYyOWYgbGVnYWN5LXRydW5rCisxNTk3MiBmZjI0M2IwZjE2ZWViODg1NTkyN2MxMjYwOTViNTg1ZjliNWM4YTYwIGxlZ2FjeS10cnVuaworMTU5NzMgODI3YjU3NmUyNjViOTYwOGQ5MjVmMzMzYzBjNGE4ZjEwODE4MDk3MyBsZWdhY3ktdHJ1bmsKKzE1OTc0IGYyOWZiYTVjOThiZGY3YjA4MzMyNjMwZTA1NWJkMzgzNTkxMmQ2ZGEgbGVnYWN5LXRydW5rCisxNTk3NSBjMjkwOWVjN2Q0Y2RjYTAyNTM4NWVhMmJjNmVlYzg5YjA4MmNlNzM4IGxlZ2FjeS10cnVuaworMTU5NzYgNTU1YjJlMjJlZTg5ODJkYTJkYTZmMGRiOWZhYmE0N2VkMTYzNGE5YiBsZWdhY3ktdHJ1bmsKKzE1OTc3IDA5NzY4NGI5M2NhOWMxMDQ5YTgyNmYyNzY3ZjViNzZkNTdmZTFhNzkgbGVnYWN5LXRydW5rCisxNTk3OCA2M2ViYjY5MDY4Nzc0OWQ4MjA0ZWFhMWJlMTk4YjI5MmY0NDMzMzYzIGxlZ2FjeS10cnVuaworMTU5NzkgZTJhZWU2MTkwYjE5ODUwMDNlMDJiOGI2ZmIzMmFiYWE5NTJhNzc4ZCBsZWdhY3ktdHJ1bmsKKzE1OTgwIDc5ZGMxZWY1YzIyZDE5NjkxODkyNDc2Y2M3MTk2MDY1ZTJhYTg5OTUgbGVnYWN5LXRydW5rCisxNTk4MSBhOTJmNDNkMjBlY2IxNWY4Mzc4YjUyYWY5ZjFjNGE2ZDUyZTZlYTQ0IGxlZ2FjeS10cnVuaworMTU5ODIgMDQyYjk2Y2RmN2Q3OTQ1MDA4MjBjNzBkZjQwNzdmODUxZTNhZmJmMiBsZWdhY3ktdHJ1bmsKKzE1OTgzIGQ3YjQ4Yzg0OTE4OTUzNGI1M2Y0YTM0M2Q0NzA5OThhNjRiNmIxMDkgbGVnYWN5LXRydW5rCisxNTk4NCA1ZGQzODFhZWIyM2IyN2E4OGEyNDRjYjRjZmQ0ZTQ0Nzk1NTIyNzQzIGxlZ2FjeS10cnVuaworMTU5ODUgMDVkNWQzZjlhMThjYmZhZmRiODA3NTQ3NzI4NDJjMjFlNzg5ZGZkMCBsZWdhY3ktdHJ1bmsKKzE1OTg2IDFjZjU0NGJhMjM5ZTU2MTY1OGRlNGI1MzY0MGUzYTMxMjkwYmYwMzYgbGVnYWN5LXRydW5rCisxNTk4NyAyZWJmZmYxMzkzNmMyNGMwZDFiZmYxZGM1ZTE2ZTBiODEzMTRmYmIxIGxlZ2FjeS10cnVuaworMTU5ODggMTI0MzdkZWIwNjgwYWJhZmMxMTc0N2RhZTE2YTkwMDg5M2NjMWE3MCBsZWdhY3ktdHJ1bmsKKzE1OTg5IGMyZGY1ZDI4MDM0ZGE1NzdiODliNWJlZDBjODJkMjBhMjg5MmJjNmUgbGVnYWN5LXRydW5rCisxNTk5MCBmMTk1Yzk5ODFmYTFhOWE2NTBlYmQzYjUwNjFiYzUxYWNlZjJlYjAyIGxlZ2FjeS10cnVuaworMTU5OTEgMzQ0YWIzNDhmMWU5YzlkOGIwMDczMzJmODYwOGMwZGU3YTM1OGY4NCBsZWdhY3ktdHJ1bmsKKzE1OTkyIDcwNjZiZTJlZGMzYjY5ZDVmNjkzMWU1MWY0MTk3ZDE4Y2MxZjNlNDggbGVnYWN5LXRydW5rCisxNTk5MyAyMDllYjQ0Y2RiZjdlMTE0NjYyMjU4YTI1NGM4OGM1ODEzZDM2MmI0IGxlZ2FjeS10cnVuaworMTU5OTQgNjhkZDQwMzA3MTcyNmUxZjk5YWM0OWE1NjllNjkxNTc3N2MyNjQxOSBsZWdhY3ktdHJ1bmsKKzE1OTk1IDg2YzlmNjkxZjM3OTBhMzkwYmI3MjM5MGQwMjQzYzk4Nzg0YTVmZTQgbGVnYWN5LXRydW5rCisxNTk5NiA3OWY4ZjZiOTYzYzI2OWEyNDlmNDY4MDkwNGI1ZWEyYzFiMDQ1ZmU2IGxlZ2FjeS10cnVuaworMTU5OTcgNzhiZmM3NDBiNjFjZDFkOWNlMWRiNmVmNGEzYzAwNjg1NGZlNjU1MCBsZWdhY3ktdHJ1bmsKKzE1OTk4IDMxZjlmYTQyZGY2MDBhYWNmNWVlMDgzNzViYWI0YzZkOWZlMTEwZTIgbGVnYWN5LXRydW5rCisxNTk5OSBhZjcyODA1ZTk5NDJhZDJmZGY1YWZiOTI1YzlkMjUzYjUzYWMyOTExIGxlZ2FjeS10cnVuaworMTYwMDAgMDQ5Mzk1YjAyNjAyYTM0ZDEwYjQ1YTYyODg5MDFkMWY5ZDQxNTFkMyBsZWdhY3ktdHJ1bmsKKzE2MDAxIDY1MDE1NDI5MmVlMTE3M2E2MzA0ZTJiNjZmMTFhNDhjODcxMTdkZGEgbGVnYWN5LXRydW5rCisxNjAwMiA1M2JlMjg1Y2ZkMmNhYzZiYjliNjg2ZGE0NDM3MmI5YTAwNDAzYjk0IGxlZ2FjeS10cnVuaworMTYwMDMgNjEwNGI2MTIxNWU2N2NhNjNkNmI4NTM2MjIwZTQ3ZDVlYzZmNWE3YiBsZWdhY3ktdHJ1bmsKKzE2MDA0IDU0NjYyNzBkYmM5MjY4YTBjYTFhOTdkZGZiOTI1N2UzOWQ5MGMxZDcgbGVnYWN5LXRydW5rCisxNjAwNSAxZTQ2YzIzYjFkYWRiNzRlNmVjMzM3ZTI2ODliMGYyMmM5MDJjMTg3IGxlZ2FjeS10cnVuaworMTYwMDYgYTc5MmI3NGNjOWU4YzM1MjY3Yjk5YWJkOGU5OTk3MzU3NmJkNGE1OCBsZWdhY3ktdHJ1bmsKKzE2MDA3IDA5ZDkxNzJmYjFkMzRjZDcyMDBkMDY1YTdhNjk2MWE3MDViNTc2YjMgbGVnYWN5LXRydW5rCisxNjAwOCA1N2Q2YTMxZWU0MGUwMTQ5ZDE5ODc5OTM2OTY4NzUzZGE2MWY1ZmM2IGxlZ2FjeS10cnVuaworMTYwMDkgNTg5MjAyYzY0ODg3OTFkMGU3YzczMjdjOGFjNDlhYjA5MjNkMDAwMiBsZWdhY3ktdHJ1bmsKKzE2MDEwIDhlZGU0YjA4MDNmYjc5ZmZjMzdjYjJkMDc2ZGIxNzc1ODY2YWIxYzIgbGVnYWN5LXRydW5rCisxNjAxMSBhYzRkM2NmYmMxYzlkMTg0MTk0Y2I5YzJlNTljM2FmZDEyNzczZGRiIGxlZ2FjeS10cnVuaworMTYwMTIgODg2NDBlY2Y1NTA2MWYzMjVjZWY4YjEyMjJiYTRmOGE5NzEwZGJkNiBsZWdhY3ktdHJ1bmsKKzE2MDEzIDg2MTc3ZmIwZWRkODM1Y2NjNGI4OGQ3NmQxMmNjODQ3NmExMDllYmYgbGVnYWN5LXRydW5rCisxNjAxNCAzMTBkN2NiYmEzMjkyMzljOWJjNjdhMmI3Mzc5NzUxZDBjMDkyOTU4IGxlZ2FjeS10cnVuaworMTYwMTUgYTZhNjRlOWFiMjM4ZDBmZTQxYzI2ODRmNmVhMDVhYjlmOTVlZGU1MyBsZWdhY3ktdHJ1bmsKKzE2MDE2IGZmMDk3NGU4ODIxYmVlYzMyZDc2MWUwMWM5OTMxZmY1M2M2ZjZlMTAgbGVnYWN5LXRydW5rCisxNjAxNyA5MTZmYjAyNGNlOTQyZDA5N2IwOGNlNTc3OTQ3NGNhNmQ2YmE2YjY0IGxlZ2FjeS10cnVuaworMTYwMTggODdlZTgyZTVjNTZkMzFiNzcxZjc2ZWQ1Y2UzMGFjYjYzMzRmOWZmNCBsZWdhY3ktdHJ1bmsKKzE2MDE5IDM0YTZlNWZlY2ExOGUzZTRiMzJhZjUyZDE2Mjk0NGRiZTI3MWRjNTQgbGVnYWN5LXRydW5rCisxNjAyMCBiYWJlN2I5Y2M2MTc0NTZmNDJkMzU1ZjFjMjk5ZTA1Mzg1YmFlMDk4IGxlZ2FjeS10cnVuaworMTYwMjEgM2RhNDkzNDIxOWU1ZjQ3N2U3NWM0ODg3YjhkNmRlOGI0NDViMjYyZiBsZWdhY3ktdHJ1bmsKKzE2MDIyIDVmYzE4YmNhN2Y1NWFjMzNhNTI5MGM1MjQwOTgwNzExNGJiMzNkOTcgbGVnYWN5LXRydW5rCisxNjAyMyAxYzVhNWFkZTA0ZTI3NjJjOWIxMWUyOWRiOTEyOWEyZjI2NWFhMmRmIGxlZ2FjeS10cnVuaworMTYwMjQgYzZmZDZmZmJjYjE1Yzc4MWNhNGQ0ZWI4NTI1YjZlZDZmZWFlMjY4MyBsZWdhY3ktdHJ1bmsKKzE2MDI1IDg0ODc5YWI3MWI5ZjNmZDhkYWY5NmJmYjc3YmRmMTFhMTI2Nzg3ODEgbGVnYWN5LXRydW5rCisxNjAyNiBiOWFkYjc5Y2RlYjYzNDA5ZjlmNTFkNGI0MThiMWYyMzgzNjBmODVlIGxlZ2FjeS10cnVuaworMTYwMjcgZThiYjBkNTM2NjMzYWU3OTUyMzA5OGEyNTdmMThjNGQ1MjM3NGQzNCBsZWdhY3ktdHJ1bmsKKzE2MDI4IDRjNGU5NTE0NzI1ODExMTI1ODI3NGY1NDRkNWRlZTc1NmZkZDZkYTIgbGVnYWN5LXRydW5rCisxNjAyOSA0Y2UyNTU0OTVkYTM0MDMwNDQwYTU4YjdjNzBmNGE1NWFiYjliYWM3IGxlZ2FjeS10cnVuaworMTYwMzAgODMzNzdmYzI5OGQ4M2M4YWY0ZWQ3ZWZkM2Q4ZmNkZTZlNTkyOTIxYyBsZWdhY3ktdHJ1bmsKKzE2MDMxIGU3MmNiNDIxNzZiYzcxOTNkOTUyMjMyNGQ3ZDM1YzQ1YWNmNGM1NzAgbGVnYWN5LXRydW5rCisxNjAzMiA2MTU1ZjUzMmYxZmNjNDg4N2JmZTg5YTUwOTE5YmFkYzQ1MGQ1ZmVhIGxlZ2FjeS10cnVuaworMTYwMzMgODlmMGE2NjRlMjgzMGIxY2ViZWQzZThkYjNmYjlhMWU1MDI3Y2ZiZSBsZWdhY3ktdHJ1bmsKKzE2MDM0IGZkYjc4Y2ZkOWU3NjdkOTJhODIxMTYzMDA4NTY5ZDJlYjA5MjkzMWEgbGVnYWN5LXRydW5rCisxNjAzNSBlZmI0YjBjNjY2ODhlNDM2MzJkYzEzNTViOWM5ZWI3MDA3OTViNWMyIGxlZ2FjeS10cnVuaworMTYwMzYgYjUzMjkwYjdiNTQ2OGExOWI3ZThkMDhmNDgwYmQxYTc5NDA1YWQ1OCBsZWdhY3ktdHJ1bmsKKzE2MDM3IDFjMjdiMzdlZDFhMWFlNzdmMjVlNjVlNjZiODIzZTQ2MWI2NTgzYjMgbGVnYWN5LXRydW5rCisxNjAzOCBiYzcxNGE3YTAwNDI4NGJlZGM3NDc4YjQ1NWE3NTRhZWNlNTJjMDdlIGxlZ2FjeS10cnVuaworMTYwMzkgZTJiMzYyMWU2NTIxMzkyYWViNmJiN2NjYzc1ZjU5YjM1YmY1MjZlZSBsZWdhY3ktdHJ1bmsKKzE2MDQwIDMzNzBlZGFkMDhjZWQ1ZGY4ODhlYWNiYTc5NmY5YWFlZWE2MDU3OTYgbGVnYWN5LXRydW5rCisxNjA0MSBlMmVlMzhlYTdmMzVlNGQ0YTAzZTA3M2NlMTE0MzAwMjNiNGRkYzMxIGxlZ2FjeS10cnVuaworMTYwNDIgNTAzYTczOTk4MjIyYzUzMTI0NjljODFiNmIwOWQ2MmI2YzRjZTZhNyBsZWdhY3ktdHJ1bmsKKzE2MDQzIDNmNTk4Yjk4ZDdmOTIyNDA2ZmM0ZDE4MzdiYmIwM2IyNDk5MDlkNzEgbGVnYWN5LXRydW5rCisxNjA0NCA5MWRlM2YwM2FlODkyN2FmMmY3NzkwMTE3MjJkNDU1YjEwNzZiMTIyIGxlZ2FjeS10cnVuaworMTYwNDUgM2UwN2E3MzE1YWY1MmZmNjg0NWY5OGM0OTA2YTRkZWZmZDRhNTY1ZiBsZWdhY3ktdHJ1bmsKKzE2MDQ2IDUxMDJlZmZiMGM0YjRjNWViNWU2YzJkZTg1Yzk5YzZmOTgwOGI2YTUgbGVnYWN5LXRydW5rCisxNjA0NyBlMGViNDMxZTQzOTNhY2Q3ZjYyNmIxYzJiYTczOTZiMmNkZmM1OWMzIGxlZ2FjeS10cnVuaworMTYwNDggNzI5NWYzNjAyNjRlNDdjYzUxZTZhZTFhNjEwN2YxMDdmMTE5MDA1MCBsZWdhY3ktdHJ1bmsKKzE2MDQ5IDQwMTFhY2ZlMTQzM2ZhOTYxNWJiMmQ2NWRkNGFiM2Q2OTExNzE1MGUgbGVnYWN5LXRydW5rCisxNjA1MCBmMTE5YzJkOGQ1NjAzZjdmZjRjMTk5OGRiYmY5YmY0YzUzZjQ4OGRiIGxlZ2FjeS10cnVuaworMTYwNTEgY2IxODY0MDI1OTlhNzI3ZmFhMTAyNDMyOTcyOTA3NzhkNDAzYTRiMiBsZWdhY3ktdHJ1bmsKKzE2MDUyIDdlZGM0ODBiYjlmMzk4ZTlkMjQxZWY1OGE0M2Y1M2U0Nzk5MzY0OWMgbGVnYWN5LXRydW5rCisxNjA1MyBjZmM2NGZhZjEyY2U1OTkwMzlhZTE5ZmRkNGI5ZWQ0NTJlZTkyMzQ0IGxlZ2FjeS10cnVuaworMTYwNTQgMThjODFmMWEwZGEyMzQ4OTAzOTRiNzE2ZjJjYWU2YzJmOWRlNzVmZCBsZWdhY3ktdHJ1bmsKKzE2MDU1IGUzOGJlODcxN2VjMDMxYjYxMmI4ZWY1NTYxYmFlMzI2MzZkM2NiZmUgbGVnYWN5LXRydW5rCisxNjA1NiA4MDBhNzVkMDc4N2YwYTAxYTg4OTVjYzZkODZlY2I5OTliM2VhNGE3IGxlZ2FjeS10cnVuaworMTYwNTcgNmU0ZGYzNDE0YTVmY2Y1MDBjNTc4YmEzYzEyYjYwZjlmZWFkNTNiNyBsZWdhY3ktdHJ1bmsKKzE2MDU4IGI5MWI1NzYyYjFjZDExNGFiN2MwMzdmZDM2NGU4OTg1ZGRlYWZhZjIgbGVnYWN5LXRydW5rCisxNjA1OSBhNWUyMGQwNzQ3MGM1ZTdiODMxOWQ5MDU0ZmQxM2U0Yzk5MDM4YTZmIGxlZ2FjeS10cnVuaworMTYwNjAgNDZlZTI3MTVkMjk4MzliZDYzZWFiYWIyNDY5YmIzNTlmY2UzZmJhNCBsZWdhY3ktdHJ1bmsKKzE2MDYxIDJmYjNmYjY0NmNjNTk1OTYzMDRhMzU4ZDU2MzRjY2NiODM5ZTJlZGIgbGVnYWN5LXRydW5rCisxNjA2MiAzZGI2MmM3NWU2NWIxNTcyOWZlNjYwZTdiMDJkZTIwNDMwYmI1YTA0IGxlZ2FjeS10cnVuaworMTYwNjMgMWNmNjczODI0OWFmZjVlMzMzOWJlNzkxZjNiNDllYWQwM2Q2YTIwYSBsZWdhY3ktdHJ1bmsKKzE2MDY0IDkwNTQwY2RmOWM4ZDk2NDdhNmY0ZTZjODhmNmZhOWMyOWRmODhhNTkgbGVnYWN5LXRydW5rCisxNjA2NSAzNjA3NDIyMjE2MWMwYjFiNGU3Zjk4YTVkNDVjNmZmZmI0MzdjMTU2IGxlZ2FjeS10cnVuaworMTYwNjYgNTBmOTc3ZTFlMmFiNzBkMmJlNzg5M2ZmZDI5YjVkZDlkNDJjYjAzMSBsZWdhY3ktdHJ1bmsKKzE2MDY3IDMzY2U2M2IwNjM1OTA4ZmEzZmMwMjM3NzE2MGFkMTUwYmQ3OTQ5YzEgbGVnYWN5LXRydW5rCisxNjA2OCAzODRmYTliOWUyNTNjYTBmNzQ0MDdhY2MzZmQwZjQ0Y2EwY2UxZGYzIGxlZ2FjeS10cnVuaworMTYwNjkgMDg1YjAxNWE5MjkxZDlkNWExMzY5OGVjMzgwN2MwZDQ0MmI3NjE3ZiBsZWdhY3ktdHJ1bmsKKzE2MDcwIGZjMmFkNmZhMDhlY2U5MTJiMzhkNTE3NmU1YTE2NzdlNDc1MjllOTAgbGVnYWN5LXRydW5rCisxNjA3MSBjN2VmMTU4NTk4M2M0NjY1NGNjNGM3YTIxMTAyYTI5OTVjMDhmOTI0IGxlZ2FjeS10cnVuaworMTYwNzIgM2MzNWJmN2I1ODBiMDIyZThiN2JlNzYwMzRkODBmZGI0NzkwYjQ3OCBsZWdhY3ktdHJ1bmsKKzE2MDczIDA2OTRjZTNiZDQ4ZjY3YjExNWRiNWU3ODk1NDgwNGM2YWJkZGZkZjMgbGVnYWN5LXRydW5rCisxNjA3NCA0MjBhYjQ0MzAyMWU5NjVkM2JjY2IyYzM4MWMyNDI2MjAwODc0ZDBkIGxlZ2FjeS10cnVuaworMTYwNzUgYTJiYzhkZmY1NWRmZjU0NzQ0YTRjMTNkZjE2NDNjZmJkNDcwZTc5OCBsZWdhY3ktdHJ1bmsKKzE2MDc2IDAzYWEyNjgxOWFjMjc2NTFkOWNkOTJlMGI5NGEyMzA0N2NhODE2MjEgbGVnYWN5LXRydW5rCisxNjA3NyA1ODE4MzY3OWM5MGEyMjA5OGI2MDllMWYyYjQwZWU1MDFlMjllNzA3IGxlZ2FjeS10cnVuaworMTYwNzggZmQ3OGJjNWYyYjJjY2IxYmY0ZDM4NDQxMTE3Nzc0Yzg0NDVhMzNiNSBsZWdhY3ktdHJ1bmsKKzE2MDc5IDY2ZDQyYzUxZGYxNmFlZjkyZWFiZTQyMDhlZDJjOTM2MWE2NDdiOTMgbGVnYWN5LXRydW5rCisxNjA4MCBjZDhhNDFiZjRhYzIwYjlhNzJiNGYwZjcxODI0YmU3ZWY3Yzg2MWQ5IGxlZ2FjeS10cnVuaworMTYwODEgMzkwZTVkNTFmZjczMzJiNjUxMmI4ZjdlNDFkODk3OGU3ZDU3MTJkOCBsZWdhY3ktdHJ1bmsKKzE2MDgyIDY3YTA0ODE2ZWE1MDExYTMwMGVlMzdhMDYzNmVhNDczYmYzNDRlMDkgbGVnYWN5LXRydW5rCisxNjA4MyBhYzI0ZDgyZDhlMzNiYWE2M2E5ZTdlYzE4MGU2Njg2ODIwZTA4ZWM4IGxlZ2FjeS10cnVuaworMTYwODQgYWYxMGQ5Yjc0MTQzZDJjM2FiMThkODhjYjhhM2ZlMjM5NDNkZGFhZiBsZWdhY3ktdHJ1bmsKKzE2MDg1IGNlZDg2MGYyZDhkMmNhNWUwZWMyZmEwYzk0ZGFjMjk2ODRlNzI4Y2MgbGVnYWN5LXRydW5rCisxNjA4NiAzNDE4ZDVjMGY5NjAyMmNhOGVjM2NlNWUwNzdjZTZhZDI5NDUwYTZkIGxlZ2FjeS10cnVuaworMTYwODcgN2JhYzEwYTliYjYxY2Y2ZWEwYmRhMWYwNmMzZGU5NTJjMzkyY2MzYiBsZWdhY3ktdHJ1bmsKKzE2MDg4IDI0NzE3NDA1ZGQ4OTkwZjliMWE5NjI1OGYxZjkyMzBiMjA2M2YyMDkgbGVnYWN5LXRydW5rCisxNjA4OSBjMTU1YmNjYjdhMjJmYjI0NjhhMWU0MGRmNGI5MjY1MThiN2ZmZDA4IGxlZ2FjeS10cnVuaworMTYwOTAgZDhhNDA3Nzc3YTZmNGI3YTRhODEzMTRjNTQzNzJmM2VkOTc4OTM3OSBsZWdhY3ktdHJ1bmsKKzE2MDkxIDQ1NDk0MDQ2YzJmYjYxYzU3YmYzYTc5NTRjZTFlZDE1MjI5NWNjZDUgbGVnYWN5LXRydW5rCisxNjA5MiA2M2QyODg3YmFmMTE4NDI2ZDMyZmM0OTM0YzM2YmNjMWQ1MzJkODZhIGxlZ2FjeS10cnVuaworMTYwOTMgN2UzZDYwNDU1OTU4ZmM3Mzg2M2I2NWU0NGMyOWQxMGE0Mjc0MDcwMSBsZWdhY3ktdHJ1bmsKKzE2MDk0IDU2MjZkNDI1NWZjZWQ1Y2M5MzYxNjA4Mzk4NzQzYzlkZWNiZTdjZmQgbGVnYWN5LXRydW5rCisxNjA5NSA4OWU0N2ViYTI3NzE4OWJjODhmNGQ5MWE4M2NjM2Y1Njg5YjY5NGNlIGxlZ2FjeS10cnVuaworMTYwOTYgODdkZjFhZTRmMTEwYzVkMDk3ZDIzMjQxNWE0NTA5NWIwNjY4MWMzZCBsZWdhY3ktdHJ1bmsKKzE2MDk3IDhkMzI0ZDlkNTE4ZmRiZDUwZTBjODkzMTQ0YWJmZjE4OTBjODE5YTggbGVnYWN5LXRydW5rCisxNjA5OCBmMGQ0MDJkNDgxODBiZTk0ODhkYjlkZGU2YzIyOTIwYWU0ZGNiMTBhIGxlZ2FjeS10cnVuaworMTYwOTkgZTEwMTYwMGFkZWU0NGE2MzEyZTlmMTIwMjE2YmUxZmNhNWM1NDM2ZCBsZWdhY3ktdHJ1bmsKKzE2MTAwIGE3ZjcyMDIyYjkzYWM4OTcyMzhjMjZkY2ZjYWIzNzlmZGJkZjIxMjMgbGVnYWN5LXRydW5rCisxNjEwMSBmOThkNmQ2M2FkNzFiNmJjMTQ0YTBkZjQ3ZTFjNDdhYmQxYzA2MGE2IGxlZ2FjeS10cnVuaworMTYxMDIgZGZmMjc3ZDVmZWIyNWIwZWU5ZGNhMjVhZDgzMDIzMjA3ZTExM2U2MyBsZWdhY3ktdHJ1bmsKKzE2MTAzIDNmMWJkNDc4MjYyOGI2YTJkNWY0NzQ2MzQ2NTE2NDA5ODM2ZGUwZTMgbGVnYWN5LXRydW5rCisxNjEwNCAyYTVhM2NhZDUxNzRhNWZiYTc1NzcyYWMzZmRjYTRlY2ZjYjgwZWJlIGxlZ2FjeS10cnVuaworMTYxMDUgYWJlZDgwYjUwYTJjY2FiYTQzMzJkYWVkY2M0OTk2ODYwN2E0ZmI0NiBsZWdhY3ktdHJ1bmsKKzE2MTA2IGMzMDI5ZjI3NjA0NzJjZDg1NGIwZjk2MmUyY2ZlYzUxMWQ0M2M3YjUgbGVnYWN5LXRydW5rCisxNjEwNyA0YzQwZWY1ZGNkODI3YWY5ZmFkODFmYzI4YWVhMzlkYWQ2ZDkzZDk3IGxlZ2FjeS10cnVuaworMTYxMDggZmIzMDk5NjEwMWJjODM0ZDI5ZThhMzE2YmVhNGMwYjBjODczYjI4MSBsZWdhY3ktdHJ1bmsKKzE2MTA5IDM4NDgzNWVhMGE1YTE2YjM4NWUyMDhjYmNhZDQ0Zjc4OTY2YmQzYzcgbGVnYWN5LXRydW5rCisxNjExMCA3NjI4ODgyZGNjY2RlODdlMDY4ZWQ0MzFjOTNhNGM1NTk4MzUyNzNjIGxlZ2FjeS10cnVuaworMTYxMTEgYjM1MzBkYWUwM2JmYjk3ZmQ4YTMwNzcyM2MyMmQyZmRkYzkwYzZmNCBsZWdhY3ktdHJ1bmsKKzE2MTEyIGUwZDY3NmU5Y2I2NmMxNDBhNzdlYjVkMDk4NTc4ODgxMzEwNWU4ZmMgbGVnYWN5LXRydW5rCisxNjExMyA1NjE5YzNmN2E0NGJkYzVhZDE2NDMwNzYxNDZlOWNkMjBjZTVjOGJjIGxlZ2FjeS10cnVuaworMTYxMTQgZDg4NTM1Y2NhZWU1YzI2OWM2ODQyZjk3NWU3ZDQ0ZGMxNTFmNjNhMSBsZWdhY3ktdHJ1bmsKKzE2MTE1IDBiMjg5ZTAwZDUyYTI3NDU1MjEzYWVkY2UwYjBkMGIyMWNlY2Q0ZDAgbGVnYWN5LXRydW5rCisxNjExNiA5OWYzNDFhOTdmZGViNmYwNzkyNGFlNWQ4MGNmZWM0Njk0OTUxMDhkIGxlZ2FjeS10cnVuaworMTYxMTcgYjRhZWRkOTBjODY0MmU5ZGEwZWE0YzE2MTJjMjZkN2E2YTllMTkzOCBsZWdhY3ktdHJ1bmsKKzE2MTE4IDlhMWI5NjFlMGMzYWY1MDQxYjA5YTUzZGZkMjkyY2Y4ZjVkNTY5ZTIgbGVnYWN5LXRydW5rCisxNjExOSBkODAzODEzMzY2MTJkNjFkN2UyOGY0MTU5MDM5OGI5NWQyNjJlOGY0IGxlZ2FjeS10cnVuaworMTYxMjAgYzg3MDZlNWE4ODJmYTIxMmRmMzNjMGU1OGRhYWY5NTQxNzgyOWQ3OCBsZWdhY3ktdHJ1bmsKKzE2MTIxIDYwYTk3MjZkODVmOGUzMDM0NmM4ZmNhMGJjZWMxZWExNWU1ZmY0YmIgbGVnYWN5LXRydW5rCisxNjEyMiA0ODRiZmRlNzBkY2NiZjRjYjZiYzgzYzYwODY5ZDQ5NmI1NDg2ODFjIGxlZ2FjeS10cnVuaworMTYxMjMgYmVmN2I2MjlhYzk1OWJlMTM1YzdjZGQwNWQxZTk1OWNiNTQ1N2I2OCBsZWdhY3ktdHJ1bmsKKzE2MTI0IDAyZjg3MDViZGEwNWU1MjA2ZmQ4NjExMWU5ZThiMDg5NTQ2ZDFlMWUgbGVnYWN5LXRydW5rCisxNjEyNSBmMzY5MzZkNDNkMDJiYmM2M2JlMDMwOWY0MWFhNjhiYWU0ZmZlYTUyIGxlZ2FjeS10cnVuaworMTYxMjYgM2JlMjk0NDk1OWRhNzNjNTc5NzE3NWJmOTBhNGZiODAwZDY4MmJmNiBsZWdhY3ktdHJ1bmsKKzE2MTI3IGI1OTcwNjdlMDU2Zjc5MWIzNDU5OTAyODIyZmViY2E2N2U4NmQ4YTEgbGVnYWN5LXRydW5rCisxNjEyOCBhMTExMGRhNjU3ZTUwZGRlNTNlMGZhOTMwZWE0Njg1MjIyMjUxYmE0IGxlZ2FjeS10cnVuaworMTYxMjkgY2JmNjZlNGZmMDhmMGVlOWNhMGIxMmE5ZWIxY2U4NjBmYjM5NzlkNCBsZWdhY3ktdHJ1bmsKKzE2MTMwIDk0NzkwYjBjNTVkMDRhY2NjZjM5NmNkNjE2Mzg0MzJmMjMzNzI3NTQgbGVnYWN5LXRydW5rCisxNjEzMSBmMGM4MGI4MzY0ZTIwYjNiNDhkMjhlYWRiNjM3MWJjODg5ZjdhMjgxIGxlZ2FjeS10cnVuaworMTYxMzIgM2EwMDAzMWY5ZDYwYzdjMmRmMmUxZmMxZDgyYWRiYWE5MGMzYzk2MSBsZWdhY3ktdHJ1bmsKKzE2MTMzIGNkOGI4YmFmYmIzMzk3M2IxOTQxMDhmNjdhNzUzMjJlYmZjYWI5OWQgbGVnYWN5LXRydW5rCisxNjEzNCA3NDUxNzdiZTFhNzE3Y2YxNTMyYTE1MWYyN2E1YzljZDk2MTA4MTk5IGxlZ2FjeS10cnVuaworMTYxMzUgZDY3OTc0NWQ5ODZmZGI0OTBhNzI3NmEzMTQ0YzRmZTEwNGVlZmZiZCBsZWdhY3ktdHJ1bmsKKzE2MTM2IDhmYjczMTFkMTM4MTA4OGU1OGQ2NzBiMTliZjBlZjM1YTEzOTE1YjggbGVnYWN5LXRydW5rCisxNjEzNyBjYmJlNTEyZDI0ZTA1Y2VkMzQ3YTBkNmY4MjE5YWExZjk2YWEzYTk4IGxlZ2FjeS10cnVuaworMTYxMzggYmZlMjJjZjZlNzcwOGJhNjQyYTQwYWRkMjZmMWYwYjNiMTQ0OGExYyBsZWdhY3ktdHJ1bmsKKzE2MTM5IDIwMTdmNTRiMDMyNWM3YTY5YjI3Y2UyZGM2N2MwNDI5ZGExZTkzYTcgbGVnYWN5LXRydW5rCisxNjE0MCAxMTNkODMzZWVhN2UwN2E5MThiYjUxNmFiNTQ1NDlkOTQ0MDQxODM5IGxlZ2FjeS10cnVuaworMTYxNDEgNjJlMTQwYmE3ODJkYzA0MDA5NGQxOGRmODVjZjdlNDM1N2ZhNzQ2ZCBsZWdhY3ktdHJ1bmsKKzE2MTQyIGQxNjZhMWU2MDc2MGZkMjZmNjExYTJjMzMzZTk1YjJiNDgxMzgxZGQgbGVnYWN5LXRydW5rCisxNjE0MyA4OWZmNTkxN2JjOGJjN2YwOWNkYWU1YzM3M2VhOTE3YjA4MjE0OTNhIGxlZ2FjeS10cnVuaworMTYxNDQgYjJkMTA0MDdhYjlkYmNhY2E2ZGMwZTdhNGU4YmUyNDhlNjg4NjhiNiBsZWdhY3ktdHJ1bmsKKzE2MTQ1IDNmZjAyMmUxYjk1ZDFhYWYwNWIxODIyZmFlMzU2ZWQ3OGMyMWExODggbGVnYWN5LXRydW5rCisxNjE0NiBlYWNiMmU1MWUxNjk2NTIwYmRjODVmMDI3M2ZmN2NjNGI1MThhMzQ4IGxlZ2FjeS10cnVuaworMTYxNDcgYWZmMWM0MTQ2YzFjMmYzYTg3NGY5NmI1MzQyZDUzY2FjMTQ1ZGNkZSBsZWdhY3ktdHJ1bmsKKzE2MTQ4IDNmMDhiZWRjMWMyNjE1MTZjNTIyM2NiZTdlOWUyMmQ3NjNiYTVjMDQgbGVnYWN5LXRydW5rCisxNjE0OSAxYmU0NjY1MTkwZjA2OTUxYjM4MjJiMzhjZGRlODI4YmE4NGIzMjFiIGxlZ2FjeS10cnVuaworMTYxNTAgODgwNDRmOWRmODMzZDU2NGQ4M2ZjYzVjOTczMzg4YzI0NjNjOTljZCBsZWdhY3ktdHJ1bmsKKzE2MTUxIDFjMGQzNWJhMTZiMWM2MmIyMWMwNjM4ZDQyNTVlM2E2MjEzOTJkODEgbGVnYWN5LXRydW5rCisxNjE1MiA2Mjc1NGI5ZWM3ZGZjMDVmNTYyMGVjNjdkNGM1MGVmOWE4NmIwOWY5IGxlZ2FjeS10cnVuaworMTYxNTMgMWI0MzU5YTI5NzZkYWMzMzE2NDc1YmIxYmUyNDMwYWQ1ZGE2YTk3MyBsZWdhY3ktdHJ1bmsKKzE2MTU0IGIwNWRmNjg3MjE1ZWY0NGM5N2Y1ZmUxMGQwODIxYThhYzdiM2EyNTQgbGVnYWN5LXRydW5rCisxNjE1NSBiY2IxNDYyN2I4ZjQxY2ExMTE2ZDUwN2ZlZjRjNTc5YzVjM2VjNzliIGxlZ2FjeS10cnVuaworMTYxNTYgODEwN2RlMjhiYzgyMTM5ZDA0NzgzMTJkYTBhYzllZGIzYzZmNDcxZSBsZWdhY3ktdHJ1bmsKKzE2MTU3IDMxN2U4ZTA5Y2U4NzcxYzYyY2JjNmQ3Y2EyNDRiNjAzZGMyNGU4MGEgbGVnYWN5LXRydW5rCisxNjE1OCA3NTlmNjk4NzQwY2NmM2Q2Y2U5NmJmNzMzOTlmODkwNjhjNWQwZWE3IGxlZ2FjeS10cnVuaworMTYxNTkgOGViNWMzNmVkZTllNzEzZDY1ZTBmYjhjYjJiODU2OTg5YTE5OGY1NSBsZWdhY3ktdHJ1bmsKKzE2MTYwIGU4Y2UxYmIwNTZhZWMyMWNkZDZmYWNiOTllZGNiODBiNzQ0MmVmZWQgbGVnYWN5LXRydW5rCisxNjE2MSAyMTExOTE4OWVlMTgyY2JlODA5MTJmZGQwYThhNWI2ZWVlMDViNmRlIGxlZ2FjeS10cnVuaworMTYxNjIgOThkYjBjM2MxZmI5ZGMwMDQ5NzNhMDFhZjAyYTg0OTM3MjA5ODExYiBsZWdhY3ktdHJ1bmsKKzE2MTYzIDhmMWEyZGVlYjliMDAwZDQ4M2UwYTRhYzhhNDgwOGFkZTI1NDgwMzQgbGVnYWN5LXRydW5rCisxNjE2NCA3ZmJkYjU4MTgzOGY2MzFiZGQ3NGMyY2RiMmUxNDg4NzUxNmZhYmU1IGxlZ2FjeS10cnVuaworMTYxNjUgZTk1ZmYyMTFiOWQzYzdiOGEwMGY4ZTBkYzllYjYxYmQ4M2QxZTg0NiBsZWdhY3ktdHJ1bmsKKzE2MTY2IDRjZjIxODUyZmQ1MjE2MDA5MTc2MDJlNjI3MjUzZjNiNDk4ZDQxZWMgbGVnYWN5LXRydW5rCisxNjE2NyA1MzcxNDc4ZjZmNWI4NmRlM2U2ZDI1MWY1Y2E0YjFhZDQzNjQ3YjU1IGxlZ2FjeS10cnVuaworMTYxNjggYTUwM2FmN2U3ZmI3YmE2N2E0ZTMwZjUxNzhmNjUxNzVmM2FkNGRjNCBsZWdhY3ktdHJ1bmsKKzE2MTY5IGYyNjMzYzkzZTJlNTdlN2E5OGY4NzA3NDE5NDE1ZTUzNzgyZTM2MzggbGVnYWN5LXRydW5rCisxNjE3MCBmNTIxMmFmOWU2NDEzZjMxNzRmY2IwMTcxMWFmNDJmM2FmZTY5ZGY1IGxlZ2FjeS10cnVuaworMTYxNzEgYzM4YmFjZDhlZmFkMmZlMjI4MDA2NGU5NjEyZjJhMTZkMTA2NTBlOCBsZWdhY3ktdHJ1bmsKKzE2MTcyIDUxNTdlYjdiZTIwZDc4MDMyZTlhZGUyNjJjNjU4ODNiYzQ3ZjUwNjQgbGVnYWN5LXRydW5rCisxNjE3MyA5YTgzOTEwNTQ4NDA5Mjc0ZDJhMDNhNjRjZDZiZjdlNGJiMjA3NzM2IGxlZ2FjeS10cnVuaworMTYxNzQgZTcxMDZjMmZjMjZjYzQ3NDNhYjhjYjAyZGQwYjUzNDhiNzY0YzhiNyBsZWdhY3ktdHJ1bmsKKzE2MTc1IDdmZWE0YTFhZjA5MDlmZWFhNjljZjAxMTI0YzRkY2NmY2EzMWZmMjMgbGVnYWN5LXRydW5rCisxNjE3NiA2YTc4ZWFkMTM5ODcwNDM2OGI1Y2Y4NGFmZWZjMDRlMjY5YmJjODEzIGxlZ2FjeS10cnVuaworMTYxNzcgMmJhNzZlMzE1MDE2YjIzNmJkNTNkOWRhZDg0NTJjOTE4NmFlYjIyYSBsZWdhY3ktdHJ1bmsKKzE2MTc4IGRhNjEwOTMwNjM4YjQ3ODU5OTY2MTljOWNjMmFmMDhlZmE3OTY1OWEgbGVnYWN5LXRydW5rCisxNjE3OSA3MGU0Y2JmYzNiMjQ3OWM4ZWFlMzk0YTBjYWRjMDVmOTVhM2U0NWNjIGxlZ2FjeS10cnVuaworMTYxODAgODU1MjBjMjIwMDY3YTI5YWIxYTZiZDFkNWU3ZWI2ZWRmNzI5ODQ2ZCBsZWdhY3ktdHJ1bmsKKzE2MTgxIGRiOTM5MmEwNGJlZDQyMWNlOWUwMjY2ZjA1ZGQ0ODRlZWExZDVmYWQgbGVnYWN5LXRydW5rCisxNjE4MiBkM2YxZWVmZGNiM2E5Y2ExNmIxMjk0ZmFkMDNhYmE0MmZlNDY5YzY3IGxlZ2FjeS10cnVuaworMTYxODMgMzQ2ZGYxOTIwODczN2FiZGViNmM5M2RmM2RjNzg0NDAzNTg0NTU5NyBsZWdhY3ktdHJ1bmsKKzE2MTg0IGFhM2QzYmVjZTc3NDU0NWQyMmY2MThmNzNkODc4M2I4MzliODAzMDkgbGVnYWN5LXRydW5rCisxNjE4NSBhODc4MDNlYjlkZmIxNDQ3ZjU5ZmY2NTQxYmY2M2JjMGZmZTU2NzM3IGxlZ2FjeS10cnVuaworMTYxODYgNjRhMTRiYTc0NjQxMzg1M2YwMGQ5NWY2OGMzYzIyMTljZGQzYTZiNyBsZWdhY3ktdHJ1bmsKKzE2MTg3IDI2M2I0NDkyODQ0YTIwNmEzYjk1NGI3MTM4NTg5ZTczYzYyMmJiODQgbGVnYWN5LXRydW5rCisxNjE4OCA1ZWJhZDY4OWI3YTc5MjI0ZTA3YTQ3NGMwOTZhNzY3ZTczNDhhMzg3IGxlZ2FjeS10cnVuaworMTYxODkgNjE4YTcyODBmNmJlNTBiOTc2N2Y5NzY3MjljNTcxYmM0M2ZiODQxYSBsZWdhY3ktdHJ1bmsKKzE2MTkwIDBkNmFmMzAzYTg2Y2I0ZDM2Nzc2ZTk0ZDg5YWU5ZDdmZDc4NmUyMTYgbGVnYWN5LXRydW5rCisxNjE5MSA4YTNkNTBlZDA2Zjc5N2M3MzcwNjQ0MmNkMzAxMGVlZDllZjVmZDFiIGxlZ2FjeS10cnVuaworMTYxOTIgMDg4YzVmM2I3MDk0Yzk1OTI0OTlkYmE1Mjg0NmY1ZmM3YmFkZGZkMyBsZWdhY3ktdHJ1bmsKKzE2MTkzIGM3MTExOGI3ODA1OTRiYmJhOTE4MDcxNmY0MGNkNTlhNzkwOTBjZGQgbGVnYWN5LXRydW5rCisxNjE5NCBkMTc2NjRiZDliNjU3ZWM1NGJiYTZmYzliMmJiMmI4MmQwMmFmOWQzIGxlZ2FjeS10cnVuaworMTYxOTUgZmM3OGU1YTc4MTJhNTEwYTU5NTg5NjRhZTE2MGU3MzY3ZDFjMjMwOCBsZWdhY3ktdHJ1bmsKKzE2MTk2IGNkZTI3MzE4Y2Y4N2I1YmU4MmMxNjI4MTcxMjJkMGNlNWI2OGRhZTEgbGVnYWN5LXRydW5rCisxNjE5NyA3ZTNjZDk0ODBmNjYzOGFjMTQ2NGUwNzM5ZmZjMDdiMDFjNjU5NDljIGxlZ2FjeS10cnVuaworMTYxOTggYmM5ZTIyYWQ1YzQ2MDgxMTgyYjliMzY3ODJhMTFjZWQ3NzU5MDIyNSBsZWdhY3ktdHJ1bmsKKzE2MTk5IDlmZDMzMzY5MzM1MDgxZGI3NGI4ZmUyNTJmZmU2OTYwOWQ3YmFlOGUgbGVnYWN5LXRydW5rCisxNjIwMCBkZGYwNzRlYzY1MDYzZjg4MWEzZDMxZWYxMjY4ZDA4NzM3ZDRkZWU5IGxlZ2FjeS10cnVuaworMTYyMDEgOTY4YTAwNmU1NDgwYzI2OGNjMDg2Y2QzNzk2NjI3ZDM5NjZlM2YxZiBsZWdhY3ktdHJ1bmsKKzE2MjAyIGY4ZDA4NGUzZjhlY2YxZjgzZWE1YjIwYmRlMjEzMzFjMTI2NDk3MDIgbGVnYWN5LXRydW5rCisxNjIwMyA1ZWRlZTY4Nzg5NDMyNjJiN2QwMDZlY2QwYzQ4MzViODViYTkxOTI3IGxlZ2FjeS10cnVuaworMTYyMDQgZWQ3MjA2N2FhYzAzMjg4NDEzMzU2MGRjYjM0MjMwMDVmMmJkZmNkNiBsZWdhY3ktdHJ1bmsKKzE2MjA1IDdlNThjMDYwZDUzNDJkNDgzMjIyNjdmNDg4NTkyNGY5OTkzMzMwNjcgbGVnYWN5LXRydW5rCisxNjIwNiA1NzA5ZGRiYTQyM2NjOGRiZmVkYzE1NThjOGE2ZmY4YWVhOTRkMDY3IGxlZ2FjeS10cnVuaworMTYyMDcgMDkxY2E2YjkzNDhmNTBkNTE4ZjNmNjQ1ZjcwMDRkYmE2ZGI0NGQxYSBsZWdhY3ktdHJ1bmsKKzE2MjA4IDIzZjk2ODlhY2U1MDYzNzdiYzJlOGI1MmYxN2E2OGM1ZTBmMTRiYTQgbGVnYWN5LXRydW5rCisxNjIwOSBhODlmN2YyNjhkZTQ1ZjExNDNiNGQ5YjQxZjYxNDcxNTljNGRkYmYzIGxlZ2FjeS10cnVuaworMTYyMTAgM2UxMGFjN2E1YmYzNmZkM2M3NjczNzM2OTc1NjQ4YzE5NmRiM2FmNyBsZWdhY3ktdHJ1bmsKKzE2MjExIDA0MDlhOThjZDU4MmUzNjc1YzMwMjVlODg5ZDcyZmQ0M2U1ZjcxZDYgbGVnYWN5LXRydW5rCisxNjIxMiA0YWQyNjk2ODY2MmJlMDYyNjYyYjZiMmI3ZjJmMmVjMjNmOTcyYThlIGxlZ2FjeS10cnVuaworMTYyMTMgODA4YjQ0NmFmOTdjNzYzNjExZWE3YTg5YWI4NmViMzNhOTJhOWYzYiBsZWdhY3ktdHJ1bmsKKzE2MjE0IGVkNGY3YTIyZTkyOGNhYTIzM2NkOTIyZjU3MmVlNjMwZWQ4OWNlNWMgbGVnYWN5LXRydW5rCisxNjIxNSBkNjE5OGU3MDM2MDJiZTMwNzBiMTYwODI3OWYwZDUwZDEzNWI5Yzg5IGxlZ2FjeS10cnVuaworMTYyMTYgZmNjNzVhMzc0OGY1NDE5NjcwZjlkM2RhMDgyMmM4NDI0OTQxOGU5MyBsZWdhY3ktdHJ1bmsKKzE2MjE3IDQzMTUzOGZmYjNhZDMyMTQ2NWExMWQ0OGEyOWY4OTUxNzA3YjQyNWYgbGVnYWN5LXRydW5rCisxNjIxOCA2MjExMzE1ZWI1OTJjZWQyZGEzNzlmYjFjYmNkMzlhYWUyYmQzYjFhIGxlZ2FjeS10cnVuaworMTYyMTkgZWYyZWJiM2IwYzY0N2ZmYWMxZWNmZTllODIzNTA0N2RkZDhkNzY5ZSBsZWdhY3ktdHJ1bmsKKzE2MjIwIDc5MDhlYzg1NTY2NWRjYmQ0ZDI2YzQyNGY2YTZiZWEyZTM1M2Y0ZGEgbGVnYWN5LXRydW5rCisxNjIyMSAwZjk1YzkzZjIwMGJkZWViMmYwNWE5NGY0MWE5NWRhODc2NzZjZWFjIGxlZ2FjeS10cnVuaworMTYyMjIgZTZkMTdmMTVhZTZhZWZhZTk1YjlhMTQxMjIzZDA5Zjk1MzFkMTY3NSBsZWdhY3ktdHJ1bmsKKzE2MjIzIGY2Y2RlYWM0NGExMDUyOGRlNjI0MjAzODU4YTA2Zjk0YzYxNjcxYzEgbGVnYWN5LXRydW5rCisxNjIyNCA0Y2YwZGUyOWMwOGM3MWFiZWU5NWI5MWVmN2U2YjMwYTQ3MDcwNTNlIGxlZ2FjeS10cnVuaworMTYyMjUgYjcwNjZiYjc5NTgxMGNiMTk0ZmExMDUxMDNkODFjN2FlOThkODhmZSBsZWdhY3ktdHJ1bmsKKzE2MjI2IGVhODIzNWVkZmM5NjE1ODM3MmZhOTliOGM4NjQ4NGIxM2ExODUzNjYgbGVnYWN5LXRydW5rCisxNjIyNyA4ZTkyZDk0MWUwN2Y1MDQ0OWM4N2JkYmM1NzEyYTY4NjQ4ZmRjYmYzIGxlZ2FjeS10cnVuaworMTYyMjggYmZhZGQzNjNhMjAwYTMxYTY4ZjEyMTg1OGJiOTE0ZWU3ZmFkZDQzZCBsZWdhY3ktdHJ1bmsKKzE2MjI5IDY2OTAzNzRhMWRjMWE1YTBlYWI4MDRkZTY5MDk1ZjE4YTUyZTI5MGEgbGVnYWN5LXRydW5rCisxNjIzMCBiOTA3ZWJmM2IwNTJiOTMyMTQ0NjRkOGNiZjUyY2M5MjIyNzdlODQ4IGxlZ2FjeS10cnVuaworMTYyMzEgZGQ3ZTEzOTE1MzI4ZmM5YTU5MTc0Yjg4MTllM2MwODYyMjI1NzAwZiBsZWdhY3ktdHJ1bmsKKzE2MjMyIDc1YjBlOGNiMDc4MzFkM2RmY2ZkZGNkOTI3MmM0ZTc3YTQ4MjY5YjIgbGVnYWN5LXRydW5rCisxNjIzMyBkZjE4OWY5Y2QwMTBkZWEwZWZjZDg5OWYyMjQwMTk0MGEwNzk5MTY3IGxlZ2FjeS10cnVuaworMTYyMzQgZGJlODNmZDIzMzkzYTIxMDk5OWFhYjQ0MjJkMDFhOTY3ZmJhMjMyZCBsZWdhY3ktdHJ1bmsKKzE2MjM1IDMxYjFmNjkxYTdkOTE4OWU3Yjc3OWVlYTI2OGE1MjJlZjFmYmE3MjEgbGVnYWN5LXRydW5rCisxNjIzNiBlMWIwNzBkNzE2MmM4ZGU3NjZhYmI0MzgyYzZkMmRkNzNiYzdkZjM5IGxlZ2FjeS10cnVuaworMTYyMzcgMmZmMjc4NWU1MjkxOWMxY2M2MWM1Y2MxMGU4YTNlNWY2MGY0NzliZCBsZWdhY3ktdHJ1bmsKKzE2MjM4IDhmNjZjNWZmYTI2Yzg2MDUyNTNjNGQ0NTFjNzk0ZWI3NTBiNDQ5ZjcgbGVnYWN5LXRydW5rCisxNjIzOSAxNjIyYmIyNGRhNTU2NjRkMzhkNDU4MjBlYmFjMDJiYjg5YmM0MzY2IGxlZ2FjeS10cnVuaworMTYyNDAgNzBkMzUxZmNiOGQ1OTAwYzg2ZWFiZmIyNGM3NTJjNjBmZTc5Nzk4ZSBsZWdhY3ktdHJ1bmsKKzE2MjQxIDkzYWUzNGFhMjBhYjM2MzU2N2IxYTJlMGNiNDNkODhjM2VlZDA5MGMgbGVnYWN5LXRydW5rCisxNjI0MiA2MDg0ZjhkM2E4MjVjMGE3NjQ3YjI0MmYzYjhhZGQ1YTMwMDdmOTU1IGxlZ2FjeS10cnVuaworMTYyNDMgM2FiZWNiMzQ3MzdmY2M4MDZlZGQyMmRjYzZiOTI5NGFlZjdkNmJhMCBsZWdhY3ktdHJ1bmsKKzE2MjQ0IDAwMGExYzdlYjA5ZmJjZmE4OGZhNDNlNmMyZWUwZTU5MzQ4NjYyN2MgbGVnYWN5LXRydW5rCisxNjI0NSA4N2Y4Mzk2ODUxYjJhYTY1ZjE0YTUzY2I5NTQ1NGUwZjJlODA5MmI2IGxlZ2FjeS10cnVuaworMTYyNDYgNjdmZDE5ZDc0NTI4MThkNjk0YWI2YjRiOTY4NTk5MmRiZTA2NTJkNyBsZWdhY3ktdHJ1bmsKKzE2MjQ3IGU0ZWM3Nzg3OWRkZDAyZWQ4OGEyNjU2NWY0YTEzM2ZhYTIyNTc0OGUgbGVnYWN5LXRydW5rCisxNjI0OCAzMmI2ODZkYTNlNTE5MTNhNzQ3NDJhZGI3MWIzZTI0ZDEwN2I4YzExIGxlZ2FjeS10cnVuaworMTYyNDkgODQyNGVjNGM0YmIyMDMwY2UzNjEyOWM4MTY1YWE4MWE2MjMwYzMyYyBsZWdhY3ktdHJ1bmsKKzE2MjUwIGIzMTMxMWE3OGE1ZGE2NTMxNzI5NTFiZjExNDgxZWVkZmRlMjNiNjYgbGVnYWN5LXRydW5rCisxNjI1MSBmNTBiZGNiMGRkMGVhZTAxZDkwMDZlMTJmZjJiYWJiMGY0MmIzNGVmIGxlZ2FjeS10cnVuaworMTYyNTIgY2I1Mzk4MjQ0NDhlODVlMmI1M2NmMmI1ZmFjOGQyNWYyODlmY2VjMyBsZWdhY3ktdHJ1bmsKKzE2MjUzIDVkYTg0NTZmMmU0ZDM0NDM3YmMyOWYwYjlmOGE5YTEyNGQ5Nzg3OWEgbGVnYWN5LXRydW5rCisxNjI1NCA1MDg3ZDFkNDVmMWRhNjZjZWU3ZjUxNTIzOTc2YWU2Y2YxY2JiZjk4IGxlZ2FjeS10cnVuaworMTYyNTUgOGJhY2Y4NjMxYTExY2VjZTU4MGRlMzZkMzM3ZjdmMGM5NzA5NGIyOSBsZWdhY3ktdHJ1bmsKKzE2MjU2IDRhYTEyZTU1YmY5NWQxZGYyMjNiNjQwYWExNjBmMDgyNmEzZGFmNmYgbGVnYWN5LXRydW5rCisxNjI1NyA0MjNhNWI5NTBjYzk4M2NhMjk1NDA4YjI1YjY3NTY1ZTgzMDU4ZjUzIGxlZ2FjeS10cnVuaworMTYyNTggMDNiYzUxZTQzZjdhZjc1NWJlZTBhMmQ3Mjk5YTJjODg2ZTA3MzJhNCBsZWdhY3ktdHJ1bmsKKzE2MjU5IDk1NDU0YjczZWE5MWQzZDZiYTJkZjczMTNjMGVlNTA2Mzc0MTI5ZmMgbGVnYWN5LXRydW5rCisxNjI2MCBjODMwODU0ZmE1MDdhZGRhODNkNWY2NGI5ZGE3NDFjODg3Y2YzMGIzIGxlZ2FjeS10cnVuaworMTYyNjEgMDQ2Nzk5YTA4MDU3YzI5ZmI5ZGY4ZjAyZjA3YzIxOGI2ZDA2Nzg3NyBsZWdhY3ktdHJ1bmsKKzE2MjYyIGQ5Y2M2MjBmZjE4NmVmOGFhZmI2MWFlNWUzOGNiNjVlZWY5NWE5MTAgbGVnYWN5LXRydW5rCisxNjI2MyBjYTMyZmY3YTA2N2U2OTVjMWQzYjIyZjU5YThiMmIxNzJlY2NhM2NiIGxlZ2FjeS10cnVuaworMTYyNjQgNzM0OGNjZWVlOGZhYTlkNGI4NzU1YmI0ZjI4NjkzOWY0NjFhZDI0MSBsZWdhY3ktdHJ1bmsKKzE2MjY1IDY0ODQwOThmNDBmYzNkMjQ4ZDRkNWRiMmE1MjVmMGM2NzhjMjU1ZDggbGVnYWN5LXRydW5rCisxNjI2NiA4MjU2ZDYxOThlYzJmN2I4OWIyNDdkOTJmYzAxNTFiMjRhYzNlMDlkIGxlZ2FjeS10cnVuaworMTYyNjcgMGVkZWI0ZWZlNmRiYzM5Y2U3NzliM2UzMjcxMmE4NjNjYzM5N2I0MSBsZWdhY3ktdHJ1bmsKKzE2MjY4IDg2YjM2N2QyZTdhZmFiY2YwN2JiMGZhMGYyYmJhODM4OTI2MjIyNDYgbGVnYWN5LXRydW5rCisxNjI2OSBjMDVlYjkwMmU1NjAwZDVlNTBkNTVkMGU0NmM4MTg2ZjU3M2JkNDgxIGxlZ2FjeS10cnVuaworMTYyNzAgN2IwZjQ0ODNjMzMxNzYwNGQ0OWIzN2NlYjJjOWE2MDBmN2I4NTJmOCBsZWdhY3ktdHJ1bmsKKzE2MjcxIGZhNzQxOTg4ZGIxNzg1ZDgzM2E4NmFkNzcyMDI4Mjk2ZWIwODNiMzkgbGVnYWN5LXRydW5rCisxNjI3MiBkMDE4NDg1MjcxZmI0ZTAwMmM3MjE4ZWQxOTI5Yjc4OGRmODc0NjViIGxlZ2FjeS10cnVuaworMTYyNzMgMTgzOTVjYTVjMzBlZmJiN2UyMWUxYjQ2NTA4NTBkMDNmNDg5N2VhNyBsZWdhY3ktdHJ1bmsKKzE2Mjc0IDlhNDBmMThmMDU2MWZmZjJjNjRiNDhiNzlkYTJmOTFiYjhkYzAwNzIgbGVnYWN5LXRydW5rCisxNjI3NSA2MDU3ZjQ0YjBiN2FjNWNjNDc5OTE0NWU2NDUxNjllMzlhN2YyNmU2IGxlZ2FjeS10cnVuaworMTYyNzYgNTMwNGI4OGZlM2NjZjA3OWU1NjQzNWZiNjE1MzIxNzg4MDc0ODdjZSBsZWdhY3ktdHJ1bmsKKzE2Mjc3IGNkN2FiYjRmZWIxYmE2ZjNmNWEzYWFjM2ZkNzhmZTYxOGIwYzJhNGIgbGVnYWN5LXRydW5rCisxNjI3OCBlNDRjYTYxZGI3MTU4NGY1NGJkMDNkMDQ5ZTRmZjYwMmZjNTU2OWIyIGxlZ2FjeS10cnVuaworMTYyNzkgNGYxMTA0NDFkYjM5MTgyYWEzNzFiMjliMjQ1ZTE5MzNlOGU3MTYyNCBsZWdhY3ktdHJ1bmsKKzE2MjgwIDg2NzA0NDMyZDI4M2E1ZDRhN2RjNTA5NjNmMjhlMzczM2ZiOWY5NDMgbGVnYWN5LXRydW5rCisxNjI4MSAwNzBlNDFmMjY5N2I2Y2Y5NzZlODEwYzAzNDZiY2ZjYjE3MDc4YzQxIGxlZ2FjeS10cnVuaworMTYyODIgMjdkODdlMDcyYmZiMDUyYzk5NzJjZmQ0YWMzZTY5ODI5MTY5M2RmMCBsZWdhY3ktdHJ1bmsKKzE2MjgzIDRkYmM3NWMxODliY2VkOWNlMDYzNWZkOGNiNjdkNjYzYjg0MzVlYTMgbGVnYWN5LXRydW5rCisxNjI4NCBhY2M0NjM4ZjM3ZDU3YTYwZTI1YWU4NzczZjdmOTc4YzdkNTY2ZTZiIGxlZ2FjeS10cnVuaworMTYyODUgMDI0NzRkZjU0NmY2MDBhM2RhZjI3NzVjZjE0ODFmMjlhYzMxM2FiYyBsZWdhY3ktdHJ1bmsKKzE2Mjg2IDE2ZTQ5MDQ2MmU2YmYxOThkMTUxNzg2N2YwZDA0OGQ3Y2VlNDA3ZmYgbGVnYWN5LXRydW5rCisxNjI4NyBmMzM2YTI2N2EyYTI1NjI5NjRjYjk3YTViZjg4NjUxOTNiYTU4ZWIwIGxlZ2FjeS10cnVuaworMTYyODggMzY4NmQxMjM2MmI4YzA5NjBmYjk3ZDU0NGJkNDU0ODUzZGUzNGY2YiBsZWdhY3ktdHJ1bmsKKzE2Mjg5IDA3YzMxMTgyZjIzNzFkMDQxMjNjYWQ5MmNmNTVjMTI1OTBiOTc2YzAgbGVnYWN5LXRydW5rCisxNjI5MCBlODQ4ZDZlZDNlYjlkMDNjNjI2MjJkMWFmNDkyOTdlNjFjZTcxNjkwIGxlZ2FjeS10cnVuaworMTYyOTEgYmFiYWU5MTBjMmUxM2EzNjIyOWY4ZjY5NzRiZmEyYzEzNmM2MjA5MyBsZWdhY3ktdHJ1bmsKKzE2MjkyIGVkNTY1YjBmZTY0ODQxNzhiMWIzYTg0Nzg3MTllNmE1OTg5ZGMzYWMgbGVnYWN5LXRydW5rCisxNjI5MyAzMDQ5NWQ3M2I5NDM2MTVhNjQ3ZmYzNWUxMWJkYzYxYTBkYWU0Y2IwIGxlZ2FjeS10cnVuaworMTYyOTQgYjA2MzZhNTI3YTg3OTk5YWRmOTMxMDI1NDAxZmEyNTEwZmJlMzZmNyBsZWdhY3ktdHJ1bmsKKzE2Mjk1IDFlN2MzMmJkZGI4ZjcwMDQzNGZiNTNmOTg1NmU1MGYwYzI3MjIzYzIgbGVnYWN5LXRydW5rCisxNjI5NiA0N2ZlYzQ4Y2E0OTU5NDY5YjFjNjg2OWUyNDk1YzVmMDYxNGExNTRhIGxlZ2FjeS10cnVuaworMTYyOTcgOGIxMzQ1ZmY5ODAxM2Y5MmY4ZWQ4N2NjMzQ1OTllNWM0ZWQ1MjM5OCBsZWdhY3ktdHJ1bmsKKzE2Mjk4IDk3Y2Q0NzM2MzkyYzE3Nzc5YjBjOTcxNmQ4NzczODRhYmI5NzI3ZTAgbGVnYWN5LXRydW5rCisxNjI5OSBiOWY5ZGExYTNmYzQ3M2Y1MTMwNTc5MjQ1MWJjYWFlMzQ1MTg0MWM2IGxlZ2FjeS10cnVuaworMTYzMDAgNDIyODc3NWQ0NTVlZDU3YjE0YTk5YjJhZDY5ZTYzMDgxZDExMmFiNiBsZWdhY3ktdHJ1bmsKKzE2MzAxIGZlYWI2NzcyNjllMDhjMTVlYzBmYWE5NWVmNjkzN2ZiYjM1ZGQ4OWIgbGVnYWN5LXRydW5rCisxNjMwMiAwNjE1ZGNlZjAyNGRlMDVkMzYxMjc3NTQwYmRhY2UxZDZmYzc5YzYwIGxlZ2FjeS10cnVuaworMTYzMDMgOWRiZWU0YjRjMDNmZGFjOGQzYjNlNjJiNmQ1M2RlYzBkNjcwMjQzNSBsZWdhY3ktdHJ1bmsKKzE2MzA0IGRkZDYxMzhjOWU2ZmU3NjJkYmExZTczMWNhZjgwNzBhMzMzZjBhNWUgbGVnYWN5LXRydW5rCisxNjMwNSA3YWE1MWViZjQ4M2Y5OTJkM2U0OTAyNmE4YmQ3NDlhMDY0ZDM3MDQxIGxlZ2FjeS10cnVuaworMTYzMDYgM2NmNGY1YWVlMDBlMmZhYzNmZDQwOTRjYmI2MGZiZmU2YmQ3ZTVhMyBsZWdhY3ktdHJ1bmsKKzE2MzA3IDFkNjYzMDc5MjIxMjU5MTFhNjNlYzUwZDI4OTIwMjhjNTJiOWJkZWMgbGVnYWN5LXRydW5rCisxNjMwOCAxZjgyYTRiZmQyOTQ1NThlNWE4MThiNzgxODEwOWNlNWE3NDEzMmZhIGxlZ2FjeS10cnVuaworMTYzMDkgZGI5NjNhNjE1YmM5MzEyYzFjOTZjMzEzNDEzOTIwOTJlMDJhYmYyMiBsZWdhY3ktdHJ1bmsKKzE2MzEwIGQ4Yjg3NDlkZTA0YWJhNjFkNjk4MWY4YTkwMWNlM2Y5Mzk1ZGI0MmQgbGVnYWN5LXRydW5rCisxNjMxMSAzMzM4ODkyN2FjMmZhYTc5MDFmYTY0NWZmZGUwNWJhMWY0ZmQ5YzEwIGxlZ2FjeS10cnVuaworMTYzMTIgOTViOWRkYjAwMzUyM2UzNjdlYmI2OGU3YzcyNGJjYjIyNzE0Y2Y5OCBsZWdhY3ktdHJ1bmsKKzE2MzEzIDE1YjE4ZTBjYzNmZDI0ODI5MDA4Mzg5YTZmMzdiMzRjMjdjNTY4YzkgbGVnYWN5LXRydW5rCisxNjMxNCBkZDJiNTIxOGUwNjllYTI5ZTg4YmQzMGUwYzRmYjljNDJkNzQ3MGE3IGxlZ2FjeS10cnVuaworMTYzMTUgNjMxYjZhMDNjMTYwZWI5YzMyYTYwOGUwMzE5MTAyMmEzNTEyZjkzOCBsZWdhY3ktdHJ1bmsKKzE2MzE2IDkwNmVmYzFkYTI0N2EzNjE1NzFmZjFiZGZjY2I4N2UyMTE0YmYzOWUgbGVnYWN5LXRydW5rCisxNjMxNyA5Yzc0YjgyMzlmZjgwZjg3MmQ3OTc1N2UwZDdmNTFlNmZjNDE5NjM0IGxlZ2FjeS10cnVuaworMTYzMTggMzdiMWEzOTYwNmNlOGJmYjRhN2U4MDM2ZDQzZTIzYmViYzkzNGZlYSBsZWdhY3ktdHJ1bmsKKzE2MzE5IGMzOTZiNjAyNjE3ZGM0NjBiNzc5ZDE4NTA5ZjJlMGEzNWNiMzZiNzggbGVnYWN5LXRydW5rCisxNjMyMCA2YTQ0MzZkNjk1OGIwYzY3NDkzZWMzNjI3NDUxNWViODQ4YmZjNTBhIGxlZ2FjeS10cnVuaworMTYzMjEgYjc4NjUzNmYyMWFjYmY4MzgxMDE5ZGY0ZWYwNzJlNGZmMjMyNjIzMSBsZWdhY3ktdHJ1bmsKKzE2MzIyIDY5ODdlOTQ1MDYxOWI3Y2JkZTdmYzc0ZTc5ZDQwMDQ5YTk1ZWE5YjEgbGVnYWN5LXRydW5rCisxNjMyMyBlYTczMjcxOWIzZmQwN2MwMTQzMTJjZDEzY2M1NjM5YmNhMTRhMjczIGxlZ2FjeS10cnVuaworMTYzMjQgOTE5ZjNkNTE3MmE5NWVmMzNkYzUxMDJmNGU0YWZjY2ZlOTg4ZWJlZiBsZWdhY3ktdHJ1bmsKKzE2MzI1IGQxZjZiNjU2MTAzYjJjMjAwOGZjMjcwODNlNDJiMTVmZTVkZGQyMDcgbGVnYWN5LXRydW5rCisxNjMyNiA3OTkxYWViMzU5OGZlYjJlZTdiMWM3ZDRmN2U0ZjFjN2YwYjViODM4IGxlZ2FjeS10cnVuaworMTYzMjcgZTU1OGViMjI4YTQ2M2Y1NGRkNWNlYTljZGRlOWZkMGUxYzk4MzJjZCBsZWdhY3ktdHJ1bmsKKzE2MzI4IDQ3YTk0NzE5NTZhZjliZmFiZDE2ZWQxY2VlODY5NjJhMWM4MDE4MGYgbGVnYWN5LXRydW5rCisxNjMyOSBjZmIyYTBkMGE4Njk2ZjM3NzQyMzQwODY0MTJkYjQyM2VjYmZiYTJmIGxlZ2FjeS10cnVuaworMTYzMzAgYWMyYmI3NzA4MzIwZGJlNDc1MmE5OTBjOWJkYTMxOWZiYmQ5NzJjMyBsZWdhY3ktdHJ1bmsKKzE2MzMxIDVkNjFiNmYyYWVhM2NkYTFhNzMxMzg0M2FlZTRkMDRiNDU0N2JiY2MgbGVnYWN5LXRydW5rCisxNjMzMiBlZjNlZDc1ZjE5NWM3ODBhNzg4YzRhZTgyMjY4MGY0NzM0Y2JkN2U4IGxlZ2FjeS10cnVuaworMTYzMzMgM2E4YzY3MDMwOWEyMWRiNGIxNzY2YzVkZDhkZWI2ZjA5OTVhNDdjOCBsZWdhY3ktdHJ1bmsKKzE2MzM0IGU0MTdkOTUyOGZkNjExNTQ0YzFmZTEzNDdjMjY5YTRmODllNTkyMGIgbGVnYWN5LXRydW5rCisxNjMzNSAwMWIyMzA3MmNjNzY5Njc2MjIxMjVmNGIyODJmMGNmMGM1YTZhMWM5IGxlZ2FjeS10cnVuaworMTYzMzYgY2I3NmQ3ZGE2NzAyNzllMGU2ODlmODU0Yzg0OGM0NTFlMmY0NThlMCBsZWdhY3ktdHJ1bmsKKzE2MzM3IDdjMTE5ZjA1MDI5MGUzYTJkOWZjZTEzMDg3NGNkOTQyYjFmNzE3NjYgbGVnYWN5LXRydW5rCisxNjMzOCA2MWU0YzI5ZDUzZDhkMjc3YmM4YzI0OWVmYTFiNzNhYWQxMGQ2M2IxIGxlZ2FjeS10cnVuaworMTYzMzkgMmU0NWI3YzIzZGM2ODY1ZjgxOGFmYzQxYzY0NjQ2ODI5ZGI5YzdjMCBsZWdhY3ktdHJ1bmsKKzE2MzQwIGEwMzIxMDFlZDkyNjQ0YzJlNjJhMzZhNWUwMTM4YTA0NTEzYWI4OTggbGVnYWN5LXRydW5rCisxNjM0MSBmZmQ1ZThiNjdjODQzMzJiMjhmZDQ2ZWJhNWE5NWQzNjY3MDU0YzlmIGxlZ2FjeS10cnVuaworMTYzNDIgYjRiNmYzOTYyYmQxMjM5OGJhMDM4NmQ1YTFjYTcwNmU2MmZlMGJkMCBsZWdhY3ktdHJ1bmsKKzE2MzQzIGU4NzFiZDA1YzZhNzQ0ZDI1YmNlYjg4NGQyYTQ0Y2ExNjk5MzY1ZTMgbGVnYWN5LXRydW5rCisxNjM0NCAwODRhNzU4MDUxZTBlMWM2ZTJiNmRlMDZjNjM1YzkxMDI1ZWZmZmZkIGxlZ2FjeS10cnVuaworMTYzNDUgYWQxYzgyNzFiNmY4Mjg4NjBlNTY2ZjEzMTFkMWVhMThiYjI4YjBhZCBsZWdhY3ktdHJ1bmsKKzE2MzQ2IDI5NzdmYmFlNGNhNTFiNGEwNDQwOGUwZTMwMDI3ODhjYzZlNGVmNDkgbGVnYWN5LXRydW5rCisxNjM0NyA4OWY5MDU4NzBjMGE5MGRlN2JhYzY3Nzc5NzhkY2M5YWViOWNiZWIwIGxlZ2FjeS10cnVuaworMTYzNDggMTRjZWIxNTllNDQ5OWEzNzY2ZTBhMzBmMjA4ZjViY2M3M2NkMzVjOSBsZWdhY3ktdHJ1bmsKKzE2MzQ5IDdjMTI3YTc5YTM2OWU1NzRlN2M4YmE0N2QxZDBjM2YxYTJiYTIyMWUgbGVnYWN5LXRydW5rCisxNjM1MCA0ZmFmOGMyMmRhNjBiZTJhMmQ3ODFlM2IxYmRkOTYzOWY2MWQxNTY3IGxlZ2FjeS10cnVuaworMTYzNTEgNTAyNTExNWQyM2NmMmIxZjBkMzFhODlmOWRkNDlmYjdhMmM4OWZkNiBsZWdhY3ktdHJ1bmsKKzE2MzUyIGM1MDNkOGU0NzRiMzcwYzJhM2M5MDFkMDQ2ZDFjMjk3ZTA0M2I1ODMgbGVnYWN5LXRydW5rCisxNjM1MyAyMDc3YmYxNDFiMzc3YTQ0MjY4NGRkNDA4NWM5NmIyZjIzNjE2MGY5IGxlZ2FjeS10cnVuaworMTYzNTQgOWNhNTBlMjQzM2ViNDFlZjI0OTZjMzQzNDkyYmNmMTExOGYzYzQ1ZSBsZWdhY3ktdHJ1bmsKKzE2MzU1IGRmNjRjYzBlODRlMmE5MmE3NGU5NmU0MDQxODkzYjNiMzgyOTY1ZjMgbGVnYWN5LXRydW5rCisxNjM1NiA1OTQ5YjQ3NTg3ZDk1NTViYTQ2ZGEyNWE2MWY2Y2QyYTk0MjE4OWM2IGxlZ2FjeS10cnVuaworMTYzNTcgYTEzY2VhNDMwYzEzNjBlNGU4YzJlMTNjOGQyMzM5YTNlZDkzNmU4YSBsZWdhY3ktdHJ1bmsKKzE2MzU4IDkzMGY0YmJiZDkzYWE2ZDE1NTkzZjVhZjk3NjhlMzJjMTNlOWZlNWEgbGVnYWN5LXRydW5rCisxNjM1OSAyNTg0NjhhMjBkNzQ1NzZlNWRkN2IzMWQ2MDI4ODhhNzU5ZGUwOGJhIGxlZ2FjeS10cnVuaworMTYzNjAgMDdkNzQwM2NlYjBmMjVhY2MzYzY0YmUzZjhhMzAwNGUwMjk0MDlhNyBsZWdhY3ktdHJ1bmsKKzE2MzYxIDMyNjAyMjBhYWVlNDNkMmM1N2Y2ODY3NGZhZjUwYjQ0MDQxMWNlMzQgbGVnYWN5LXRydW5rCisxNjM2MiAzOWY1NGI5YTdmOWNiNjk2MjI0MzBlM2Q5Nzk2M2JjNmE4OTk3NTQ1IGxlZ2FjeS10cnVuaworMTYzNjMgZWY4YjIwYjlmNmY1MzcxODI3NjJjMGNjNGM2NTA4Yzk1Yzg5ODliZiBsZWdhY3ktdHJ1bmsKKzE2MzY0IGQ3YWVjMTdjZDBiNTA0NmI1OTQ4MGQ2ZDU5YTY5ZTBjNzNlM2VmYjEgbGVnYWN5LXRydW5rCisxNjM2NSA0MmI2NzJhMDljNGExMDNlNTU5ZmQ2MTAzM2IwMmY4YjY4Yjg0YWU3IGxlZ2FjeS10cnVuaworMTYzNjYgNDgzZTc1ZWZjMTExMjE4MGRmYTRmMGNkNDMwMGYyNTdkZjViODEyZiBsZWdhY3ktdHJ1bmsKKzE2MzY3IGRjMTdlZjFhNzYxMzgwY2JlZWUyYWZhNDIwZjE3ZjI4MmE0NDgxMGMgbGVnYWN5LXRydW5rCisxNjM2OCBjOWE0YTEzMTYxNzA4MDkwYjA3M2Y4NDc5NmZiMzhiMWMzNGIwNzhhIGxlZ2FjeS10cnVuaworMTYzNjkgNTU4M2NmYTZkMmIwZjNjZGIxNDNiNDlhZDA0ODdhNGMzMjgwZTc1NyBsZWdhY3ktdHJ1bmsKKzE2MzcwIGE5MDFjMmMwMTY2YmFhNmExOTUyODliZWMzMzVlMzBjMzkxY2JjNGEgbGVnYWN5LXRydW5rCisxNjM3MSAyOTU5ODdmM2ZiZDIyMDEyNzQxOTlhNGVkZWRjMTg4ZWFkMjcxNDhmIGxlZ2FjeS10cnVuaworMTYzNzIgMmVjYTQwNTFmMDVjYjVmOTQxNWFmOWQ2YjI5MmMyYTQwMGQwMWMxNiBsZWdhY3ktdHJ1bmsKKzE2MzczIDg4YjRmM2I1MDhkYWE1OTg5YjVjMjY5NDNlYTlkYWE4NDc1NDE2YWQgbGVnYWN5LXRydW5rCisxNjM3NCBmMzQwMWVkMTMyYTE0Y2ZmNGE2MjgzZWYzNzBiY2NlYWZlMTUzMDg5IGxlZ2FjeS10cnVuaworMTYzNzUgMjYwNzVjMDNmMDIyNzk1OTViMDJiMjc1NWY3ODIzOTg5MjY0MGY3ZCBsZWdhY3ktdHJ1bmsKKzE2Mzc2IGU3OGVkYzNjZmFlNmVhZTczMjM2ZDg3MDg1NmQ1MTYxYzI1ZmRlMjUgbGVnYWN5LXRydW5rCisxNjM3NyA4N2E0MTZkOWQ5YjZmNzQwMTU0ZTZlM2EwZTM4NWJkZDljMzU4NWFhIGxlZ2FjeS10cnVuaworMTYzNzggZjdkOWU2MTg1ZjYyMjJjMWViMmQ3NGZiNGU2YjNhNjlkYzg2OGZjMiBsZWdhY3ktdHJ1bmsKKzE2Mzc5IGZhODk0OTY1ODRjNjI3YjNmZGVjMjMyZDMyZGVlNjVhMzUzMDI3ZmYgbGVnYWN5LXRydW5rCisxNjM4MCAwODY5NDdjZDIwMmNjMTM1NmVhMTgzZDcwOGQzOGQxNGJiYTlhZmQwIGxlZ2FjeS10cnVuaworMTYzODEgYjc0NTQ4YTkwYTYzYzAzNjllZGQyNDc5MjljZjc1YTUyMmY0YWYyYyBsZWdhY3ktdHJ1bmsKKzE2MzgyIDViNzI3YWIzNzA5MmQ1NzJhYTc4OTRmNjM5Y2NlMTAwYzY4OThmMTEgbGVnYWN5LXRydW5rCisxNjM4NCBmMTFjNDcyNzY0YWQzNzE3MTdjYTE5ZTMxNjgyMTRlOTBlYWVkMDc1IGxlZ2FjeS10cnVuaworMTYzODUgMzc5MTk2N2NiMzJlZjg2ZmM0OTE0NTE3MDAyMGE4NzZhMzNkZDMzYiBsZWdhY3ktdHJ1bmsKKzE2Mzg2IDE2N2RlNDk1MzgxMmZhY2FhNmFkMWJmMjAzMDI0MmJlYWVkMDZhOTMgbGVnYWN5LXRydW5rCisxNjM4NyA4M2E1OTVlNjkxZTQyNjJiN2MyNDJiNjBjYjg1YWRlZmRhMzA3ZTVjIGxlZ2FjeS10cnVuaworMTYzODggZmRmZDEwNDlmMzZlOTQzZTdkNTk0NjhlZDhhNGU5NGQzNWY0OWU0OSBsZWdhY3ktdHJ1bmsKKzE2Mzg5IGY0ZGE0MzU1YWNkZTYyZmU2MmNhNjZkYjMwYzhhN2Y3ZDJlYWQ3Y2IgbGVnYWN5LXRydW5rCisxNjM5MCBmNDA4NGY0NDNmMzE5ZGE1OTk0YTU3MjI3MGI2MWU3NWMxMjY0YjQ0IGxlZ2FjeS10cnVuaworMTYzOTEgZDZkMjNkNWUyOTZkNDJmNGFjYWJmNTEwZDc3MzI2NjZmZGFiNWQ2YSBsZWdhY3ktdHJ1bmsKKzE2MzkyIGExYWQ3OTFlMTgyMTgyZWU2YzcxNDE0OGU4ODFkYTk4NDJmNjQ2MDMgbGVnYWN5LXRydW5rCisxNjM5MyA3M2M2NjFiZTFlYTNkZTYzZjczODZkZjc5Mzg5ODE2ZjIzYWNiOTJkIGxlZ2FjeS10cnVuaworMTYzOTQgZmY4MmZkNDIyZjFjMWEzMjhkMmUzYWIxNjRhOTE4MTNlOWY1YmI1MCBsZWdhY3ktdHJ1bmsKKzE2Mzk1IDA4NTk2MDdjYTNlNTNiYWFmMzUxY2Q4ZWJhZGYzYjU1OGEwOWU1M2EgbGVnYWN5LXRydW5rCisxNjM5NiBlMTQ2OWI3YTJlNjhkYjI5MjZlMjA5MGI3NDEyYjU5ZTJjZWFhYWFmIGxlZ2FjeS10cnVuaworMTYzOTcgNmYwZDk2ZTZiNWE1MTNjYjdiMTQwN2YzYzYxMmMzNGZhZjc0NGQ2NSBsZWdhY3ktdHJ1bmsKKzE2Mzk4IGRmYjdlY2ZmZmUzZDViMWM2NmI2NGI3ZjEyYTk1NzYyNzRhZDI4NDcgbGVnYWN5LXRydW5rCisxNjM5OSBiNTEyMGY1OGM1ZGE1ODMxMGY4ZGY3YzFjZTZmZDYwNWE0Y2IxOGMyIGxlZ2FjeS10cnVuaworMTY0MDAgZDkwMWM0M2U3ZDU4Y2U5OWY3YWY4NDkwYzJiMzRjODNmZmRhZTM3YyBsZWdhY3ktdHJ1bmsKKzE2NDAxIDU4Mzk4YzBmOTQ4YmM4OTY3NjM3ODkwOWJkYTE0NDlhNDFjNTg4NDYgbGVnYWN5LXRydW5rCisxNjQwMiBlMmUyNWVlZTZhNGIxNDdiOGNkMzMzNzkyN2NlMzE4MTFkNmU3OTJjIGxlZ2FjeS10cnVuaworMTY0MDMgMzcxOGU1Mzk4ZmFkMzRiNzY4MmE5MTYyY2E3ZGZjNDgwZjg1YjY5ZiBsZWdhY3ktdHJ1bmsKKzE2NDA0IDM4ZWEyNzQ1NWNiYjNjYjg4NzRhODk4NjI3NjI1MGE3ZmJlYzQ3NjUgbGVnYWN5LXRydW5rCisxNjQwNSBkYWNjOWYxNjdlOTU5ZmY3MGI2YmZmZjZkYWQ4MjI4MmE0MGZlZDM0IGxlZ2FjeS10cnVuaworMTY0MDYgMTUyOGJjM2FjNzNkNTAzMTk0OGM2ZTQzY2M4ODhkMGU3Yjc0MjNmNSBsZWdhY3ktdHJ1bmsKKzE2NDA3IDJkNWFhMjEyYTMyMmIyZjk5NTgzMzcyMzA2ZTQzYWU0NmZlYzE1ODggbGVnYWN5LXRydW5rCisxNjQwOCAwYzA4ZGZhNjM0YzM0ZTQ3YmMzMzZjNTU4NWNmYWFjY2IzZDIxZjBlIGxlZ2FjeS10cnVuaworMTY0MDkgNTI1OTViNzBhNTY4NDg4ZmEzNTY5NWJhOTFiMDU5OWQyNTg0M2QwNSBsZWdhY3ktdHJ1bmsKKzE2NDEwIGIyZmJkOWZjZTA1ZTVlNTAwNWJlMjNkOTNkNGRiMzBlN2IyZjFmNjMgbGVnYWN5LXRydW5rCisxNjQxMSA4ZWU0YTIwOWE5ZWY1YmFiZDFiZjEwODA0MDhjNmRlM2ZiZThlM2EwIGxlZ2FjeS10cnVuaworMTY0MTIgZjgwNTcxYmIyOTEzZTc4Nzc5YTQ0MTkzMWUzNmM5N2JmN2RmNjQ3MyBsZWdhY3ktdHJ1bmsKKzE2NDEzIDNkNmQyMThiNjczZDBjZjE0NTVhMzA4MmE5YzEwYTFlNDRkZGY4YWMgbGVnYWN5LXRydW5rCisxNjQxNCA4YTA2MzQyM2UwYjdkZjk5NzQ4OGYzMWU2YmI2ZWFjNTdjOTcyMTI1IGxlZ2FjeS10cnVuaworMTY0MTUgMTE3ZDIwOTY4YTEwNDJkMDA1MTg4NDUzNzdhYzEyNWE5ZmMxOTJmMSBsZWdhY3ktdHJ1bmsKKzE2NDE2IGE3NGFhNDliMGMzN2ZhZDllZTZjYWEwZmRhMmI5YjIxNmQ3M2JhNWQgbGVnYWN5LXRydW5rCisxNjQxNyAwYmI0OWIzZGJkZjBhY2FkYmUzNmQwZTAwYTA2YjBmZTZlODNhZDYyIGxlZ2FjeS10cnVuaworMTY0MTggMTI2NTJkYTZkNjMyYmEwOGQyNzUwZmRlMThjN2FjNzY4MjQyOTgxZiBsZWdhY3ktdHJ1bmsKKzE2NDE5IDk5ZGQxYzkzMzE2MTZiZGI4OTc3Y2YxNDI0OWQ5MjUwZTQ1ODhmNzkgbGVnYWN5LXRydW5rCisxNjQyMCA2YTUzMTRhNmMyYzI5OWUzM2M3M2M3OTRhZjMxZGEzYTNhMTAyZThmIGxlZ2FjeS10cnVuaworMTY0MjEgZjc5NDM0ZWU0MWZhODYwMTkyMTYyNDBiYTMyYmU2NjBiY2ZjNTQxOSBsZWdhY3ktdHJ1bmsKKzE2NDIyIGU3ODE1M2UxNzlmYmNjYWE1MTI5N2EwOTExNWYzZjdhNWFhZTYzYzkgbGVnYWN5LXRydW5rCisxNjQyMyBhMWNlMDcyMTg3ODEzNGIzNmQ1MGRiMTFmZDgyZjA3ZDg0M2RmZWZjIGxlZ2FjeS10cnVuaworMTY0MjQgZWYyNWYzMmM0NTIzOTNmMGQ0ZDEwMWMzMjczNDdhMTQzZTAxN2VkMyBsZWdhY3ktdHJ1bmsKKzE2NDI1IGEzODU2YWI2YjIwNmQ3ZDJjZjZiYTY3NmIwYjUxOTk3Y2VhZjNmNmIgbGVnYWN5LXRydW5rCisxNjQyNiAyOWRhMzU1NDM4MzMyMTYwMzZkOTQxNTI3NWNjM2VjYzYwY2RiN2MzIGxlZ2FjeS10cnVuaworMTY0MjcgZWUxMDgzNGQ2N2EzNmM0ZjdiMjYzMDgzZDdiYTczZjZhMmI0NzQxNSBsZWdhY3ktdHJ1bmsKKzE2NDI4IGVhZmI3OTk2M2VhNjRlZTkxNTA0ZGRiNGUyODgxZTJjN2Q5NWMwNDMgbGVnYWN5LXRydW5rCisxNjQyOSAzNmRlN2I2YWI3ZWI5OTQxNzAxMzNjMWNjMzlkOGUwN2IwNmFkY2E4IGxlZ2FjeS10cnVuaworMTY0MzAgYTZjN2JmZGQ2Nzc3NDY0YWJlOTQ3OWQyODJiNTU5OWFmOTk5OTljZCBsZWdhY3ktdHJ1bmsKKzE2NDMxIGQ3ZDgxZWE5YzgyZGUwMTc3MTljNTNjZmM4MTc0MTNlZmI5ZmY2MTYgbGVnYWN5LXRydW5rCisxNjQzMiBlOTRjMDUzNTFkNDM3NGJlYTVkOWEwYmI0YjYxN2U1MmJhYWQ1NmE3IGxlZ2FjeS10cnVuaworMTY0MzMgNDM4ODI0OTUwNmQxOTBhNzZhNGRiYmJjNzAyOTRlZjZiYTA2NTZkNSBsZWdhY3ktdHJ1bmsKKzE2NDM0IDI2Njg1YmQyYzA5ZTYxYmYzODk2NTVmODNlZjE0ZjQyYjU2MDU1ZDMgbGVnYWN5LXRydW5rCisxNjQzNSBiZmM1YjJhOGMxMWY1ZTYyNjY4MmI5OGQzNzZmYTJlZjY5NzBhMzlkIGxlZ2FjeS10cnVuaworMTY0MzYgY2MwYzBkYzlmZWYwZGM0NDFiODU2M2E5YjQ0YzhkMDQwYzJlMDNiOSBsZWdhY3ktdHJ1bmsKKzE2NDM3IGM5MGQ5NGQyODdkNzliNzQ1ZTRiNWEwYmQ1NTE1Y2VkYTczMTc0ZTYgbGVnYWN5LXRydW5rCisxNjQzOCBiMTk1OWYwMDY1NjY1OTFiM2JlMTQwMWI5Y2QwZjE2NDUxZWJjNjAwIGxlZ2FjeS10cnVuaworMTY0MzkgNTQyM2IxMzJiYzk3YWY0ZDI0MDc2Y2VmMTZmMjczYjY0ZmFmMDRkMyBsZWdhY3ktdHJ1bmsKKzE2NDQwIGVkYjFhOGU2Yjg1OTU5NjBiYmRkNzhiYmM2MGFlMWY3ZGU3NWJkOTIgbGVnYWN5LXRydW5rCisxNjQ0MSAzMTc3ZTI4MjkxNjc3OTdlYTA4MTZjZjcwNzJlNDAzY2Y4YzI3YWU4IGxlZ2FjeS10cnVuaworMTY0NDIgNjFmNjVkZTE5ZTFlNjhlYWFjOTc1ZTNiYzU1MjQ3MTEyYmZiMDQyYiBsZWdhY3ktdHJ1bmsKKzE2NDQzIDlmNjE4OWU4OTIxMjE1OTQ2OWE2MTVlYTcyNDEwNTlkZGE4MmYyYTIgbGVnYWN5LXRydW5rCisxNjQ0NCBiMGU4Mzk2MmY0ZGE3MDhkYjc4ZWYxNzBiNDQzMTIzYmFiM2IyZDBmIGxlZ2FjeS10cnVuaworMTY0NDUgN2RlMThmMDRmODVhNzdhMWQ1NWFiNjE5MWJmZTNiYzU5NWRhNzU1YSBsZWdhY3ktdHJ1bmsKKzE2NDQ2IDhjYjI0ZTBiZWY5YmU1OWMzZGY1MDhmZDYxODNiNWNmMzg0ZDk5YmEgbGVnYWN5LXRydW5rCisxNjQ0NyBlYzE5YTBhOGNkNjg3N2IxOWQ0MjVlNDhjN2FhZjA4NWM3YjQ3YjhmIGxlZ2FjeS10cnVuaworMTY0NDggMTI5Yzk3NzVjYzE5MzIwY2U1ODhlMDRjYTg3YTM0NzcwZWFlZDU5OCBsZWdhY3ktdHJ1bmsKKzE2NDQ5IDlhNTg1NWVhM2U1NmFlNTQzOTQwNTczZjU3YmYzOWRlZjQ5MDUzYzEgbGVnYWN5LXRydW5rCisxNjQ1MCA2MzgzMmVkZTU3N2ZjNTlmOWI0OGFlYzk5ZWI0ZjRlZDVhMGY2MzNmIGxlZ2FjeS10cnVuaworMTY0NTEgOTU4OTRjMzEwOGQxOTg1ZjYwNDg1ZTM0NWIxMDM2ODFmODExYTEzNiBsZWdhY3ktdHJ1bmsKKzE2NDUyIDlkYjg2YjI3Mjc4ZmM5MjM2NWE4ZTQ2OThmNzYzNjZmYTI3ZWFhOTUgbGVnYWN5LXRydW5rCisxNjQ1MyBjMDljMDE3MTQ3NGYwZjQ5YzFkYWJjMDg0ZGFkODQzOTk2Yjk5MGQ1IGxlZ2FjeS10cnVuaworMTY0NTQgMGYxYzYwNTNlOGQwOTIyMzcyOGNhNzhhZGNlMDY4NzZlMzNjN2FiZSBsZWdhY3ktdHJ1bmsKKzE2NDU1IDc5M2JiYWQ2ZDA5Y2YwODM4YzU4MGJjNjFlMDQ5MjQ4MWIyZjQ3MzYgbGVnYWN5LXRydW5rCisxNjQ1NiAyNWZjNjgwNzdiNjY1NDM0MDJlNzJhZjg5YTJiZGMwYWJlMzRmMDZiIGxlZ2FjeS10cnVuaworMTY0NTcgYjU0ZjExYWRhOTFlYTAxMzg4NWEzMTQ4YWQ1YmQwNjBiY2JlNmViYSBsZWdhY3ktdHJ1bmsKKzE2NDU4IGEyOGVkOGM1ZTYyZTAyNmNhMjgzNWNhODRiN2U1ZjM3MTBlY2QxZDIgbGVnYWN5LXRydW5rCisxNjQ1OSBiYjM2NGQ2ZjlmNjkyNTYwNDE2MGJlMzZjNDJlMjc4NTA3NDAyY2U4IGxlZ2FjeS10cnVuaworMTY0NjAgNWUyZTkxZmZhZGNkOGU0ODVlZmE0MTNmMmM4YWZhNGVjZGUzOWI0MyBsZWdhY3ktdHJ1bmsKKzE2NDYxIGNiMjlkNGEyYzE3YjBiM2ZlZmI0YzY3YzM5M2VlMDcyOWZjODU1YjYgbGVnYWN5LXRydW5rCisxNjQ2MiAwMjZlMTJhYzlmNzFiNDM5ZWNjNzA2ZmVmNDZkM2EzZjMwMTVjYWQ4IGxlZ2FjeS10cnVuaworMTY0NjMgZDZkZGVkM2M4NTA3NzhlYzE5YmUzY2U4Nzg3NjQ5M2MxMzUyZTg3YSBsZWdhY3ktdHJ1bmsKKzE2NDY0IGM2ODAwM2VmYjc5NmEzYTFkMDhkMGNiMWJkZDc3ZDkyYmE2MmViNTcgbGVnYWN5LXRydW5rCisxNjQ2NSBmODQwYmY2YTMzNTFlNjM4Y2E0MzE0MDVhNjYwMTFhNzIzOTNkZjQ2IGxlZ2FjeS10cnVuaworMTY0NjYgOTc5NzAxNjk4Y2QyOTcxMTVmZGMzM2E4YWI1YzBhNmZlMDYyYTY5YyBsZWdhY3ktdHJ1bmsKKzE2NDY3IGM5ZmQ1MmQ3Y2EwYWU3Yzk0M2M5OWY5NGY5ZWJiMTg0ZWNiOTcwNDMgbGVnYWN5LXRydW5rCisxNjQ2OCA0NjFmOWI2ZWU1NTU3NWJhNTYxYWNhNTE3OTU2NThhZjQzZTEwYjdmIGxlZ2FjeS10cnVuaworMTY0NjkgMmU2MDNiZDBjMWE5M2Q3YzQ3MTI5MjRhZjYxNjUzMjNiN2I4MTY4MyBsZWdhY3ktdHJ1bmsKKzE2NDcwIGRkOWZmYTBhNmIxMTA3ZTA3NzYxMTJlYjZhYTliYzdiY2NiNzYzZjQgbGVnYWN5LXRydW5rCisxNjQ3MSBmZTg5ZWExYzkxMDg5OGJhM2RiYTE5OTc0ZDU5M2ZjMDBmZmFkMzQ5IGxlZ2FjeS10cnVuaworMTY0NzIgNGUyYWFmMWU3MjJhNzg3MjUxNzI3MDYwOGNmMWUyODYyODNmNzMzNyBsZWdhY3ktdHJ1bmsKKzE2NDczIDY5N2M4OGNjNDcxNGRmYjAyZDYzZWEyMmZkMTFjOGUwMzUxM2U2NDggbGVnYWN5LXRydW5rCisxNjQ3NCA0ODg4NmZhODJhZDUwZTg2YWE1Zjg1ZWNlNWY4MmRhOTU1ZmQ3NmYwIGxlZ2FjeS10cnVuaworMTY0NzUgMDAwMzBlYjg4MTMxZjg0MGYzYjJiZWU5MmQwMzdlYzRjOTM2MWE0MSBsZWdhY3ktdHJ1bmsKKzE2NDc2IGM4N2EzN2EzZDJlNjViNzYxNGQ3MWNkZDNhMzVkYmQxOTI3NTJhY2EgbGVnYWN5LXRydW5rCisxNjQ3NyBjOWQwMzkxOTZkYjYxMDhiMjJlYWUzYmE2YTA5YTVjNWE3NmE3MzllIGxlZ2FjeS10cnVuaworMTY0NzggMDZkNDIyNTkxOWQ0ZDI2MzcyNjc5Y2UzMDcxMGM2YTdlOWU2ZjlkMSBsZWdhY3ktdHJ1bmsKKzE2NDc5IDY1NzhmYWY0OGNkMWQ0OWNkOTg5NzA0NWU4OThmOGNlZTU2M2ZiNmUgbGVnYWN5LXRydW5rCisxNjQ4MCA1YzNlZTc2ZDI0MmUzZThmMWVkNjZkYTE5YWEzYmQ3Njc5YzNkZTE4IGxlZ2FjeS10cnVuaworMTY0ODEgMTcyOTNmMTJlODg0MGViMmU3Zjg0MDEwOGU1MGNhYTkzNDcyMzE0MiBsZWdhY3ktdHJ1bmsKKzE2NDgyIDc2N2IyZjdiZTQwZTYzZGZlNTQ4ZTBkMmJmZjc4NTBiZGRmMjUxMmIgbGVnYWN5LXRydW5rCisxNjQ4MyBkM2Y2OTQwMjM2NDI1YmNmODhhMDIyNWQyMzQxOTA1NDk3Yzk5M2VmIGxlZ2FjeS10cnVuaworMTY0ODQgMDVkNTlmNDQ3NmFkNTBmNmE5NDk2NGQyYTZiYmUwNzlmMTMzZGNiMiBsZWdhY3ktdHJ1bmsKKzE2NDg1IGIzZThkMmUzZGM3M2IwNGIwZWQxM2RlYzI0ZjJlZTZlYzI2NTYyMzkgbGVnYWN5LXRydW5rCisxNjQ4NiBiN2M5M2M2NzdlNTY1ODllNjYwMzdjZWExYTc0N2Q5MmYwM2U4MzE1IGxlZ2FjeS10cnVuaworMTY0ODcgNTdkMDJmNjM0YTAyYjc3ODkwYzYwOTJkYmZkMTdiZmUwMmFlYTM3OSBsZWdhY3ktdHJ1bmsKKzE2NDg4IDQ0OWRkM2EwMGJkNzI5Mjk4OTZlYjEwNzM0Y2RmODljYzY0NzNlZTYgbGVnYWN5LXRydW5rCisxNjQ4OSBlY2I4YWFjZmYyZTNhZTg2ZmY1MzdjZTBiMGRiOTJiNTM0NmMxOWZkIGxlZ2FjeS10cnVuaworMTY0OTAgMDUxNzdjZDQ0MWExOGU3ODY3OGVkOTdhNmY0MmJkMmJkM2YxMGFlMyBsZWdhY3ktdHJ1bmsKKzE2NDkxIGI3NjllMmRkNmE1MWJmZmQ2NjA3ZTBmNTc3OWYzZGEwMjUyZDBkYTAgbGVnYWN5LXRydW5rCisxNjQ5MiA1NDg2MWJmNjc0OGRhNjNmNzg0ZjZkZTgyOGFjODRiNzgwY2MxMWZjIGxlZ2FjeS10cnVuaworMTY0OTMgNjg5ZjE5MDA0MDYzNTQzNmI5MDE3MmZjZGNiNzFlNTM1NjRmODk1MCBsZWdhY3ktdHJ1bmsKKzE2NDk0IDhkOTk2ZjljNTkwM2JmMGNkNmU3YjY4YmU2NmVjMzlmZGM3ZjFlMGUgbGVnYWN5LXRydW5rCisxNjQ5NSA5Y2UzZTA1YjdmZGIyNzRhNmE3NTU5OTUxZTE4NTMyMWQwN2U4Njk1IGxlZ2FjeS10cnVuaworMTY0OTYgYmEzNmE5YzNmNDc3MTQyMDM0NjJkMmMyZGRhODM4OThkNTA3MWFjMCBsZWdhY3ktdHJ1bmsKKzE2NDk3IDNiNjlhOWQwNDRmMWM0MzFmNzgzMjIxMjIzZmVkMjEzNThhNmNiZGMgbGVnYWN5LXRydW5rCisxNjQ5OCBhOTQ5YTcyYWY5NjljYjJmZjk0MDJhMWY4NDk1ZTRmZDBhNTdkZjJhIGxlZ2FjeS10cnVuaworMTY0OTkgMzJjZTI1NGYzYmVhNmY5MGJhNDY2YzEyOTViNjgxMTdiMjgwMjY2YyBsZWdhY3ktdHJ1bmsKKzE2NTAwIGMzMWIxM2I3ZGI3NDA3NTEwNjhiNmM3NGJmNDVlYjEwNzhiNmY2YzkgbGVnYWN5LXRydW5rCisxNjUwMSAxNDc1YzFjYzNiZjFlZTljMDE1OTViZDg3ZDYxY2JhMDZmMzQ0YWI3IGxlZ2FjeS10cnVuaworMTY1MDIgODJkOWMyZjEzMDk4ZTVjNzZmZjQ5YWNjYmQ2ZWVmZGRlNmJkMTQzNCBsZWdhY3ktdHJ1bmsKKzE2NTAzIDk4ZDgxNjk1NjNlNzFkNzRhYWUzNmEzMWQ0OWNiNmI0ZDZiZjRkYmIgbGVnYWN5LXRydW5rCisxNjUwNCBmNjViODY3MzhkM2I1OGMyMWIxMzk2ZjY4MTE3YjZmNTNiZGRmZDZiIGxlZ2FjeS10cnVuaworMTY1MDUgZWU4ZjA5ZTQxMzk1NDYxYmFiOGE4ZTAxODgwN2QzNjU4NDFmYWM5MyBsZWdhY3ktdHJ1bmsKKzE2NTA2IGM3NmU3NGFiYjY1YmFmM2RlZjU0NDVlYjMyNDA3NTU5YzgwYjBiNmQgbGVnYWN5LXRydW5rCisxNjUwNyA1YTMxMTRlOGMwMjdhOTQ2M2VhODQ5MzgyNzgyZTI2OGZiYzg1MDZjIGxlZ2FjeS10cnVuaworMTY1MDggNWMwNjdjMWI1ZWQwZDhhNWU2OTFmNzkzNjlkOTMxZTk3MmQ1YzU1MyBsZWdhY3ktdHJ1bmsKKzE2NTA5IGE0NGRiYmRlNWVjZmRhNTc5YTk2NTliOWRiYjNhNjZjMjlhNDVkYTkgbGVnYWN5LXRydW5rCisxNjUxMCA3YWU5ZmE0MDliNDZmMjZjNTIzMTAzZjYxYjM4M2NmZjU0MmNjZWU0IGxlZ2FjeS10cnVuaworMTY1MTEgMDgzYjRlNTQ3MTcxZWY5YTRkYmU0NTcyZDFkNTRmMGY3MTQwNDYzYiBsZWdhY3ktdHJ1bmsKKzE2NTEyIDFlOWYzMGVlYzQ4MjQ0ODFlZGJhYTAzMTQyZDNjZjBlMDZhMGQ1YTYgbGVnYWN5LXRydW5rCisxNjUxMyBkZmRiOTExY2JlYzI1MmM5MzY2NWJiYzFkN2E5ZjhhZGFmYjRiNGI3IGxlZ2FjeS10cnVuaworMTY1MTQgODNkYmEzZjVmN2I0NmEwMDhiOTAwMWQ5NDBiNTU1N2EwYjc2ODA3MCBsZWdhY3ktdHJ1bmsKKzE2NTE1IDhkMTA3NTdhNTc1YjBhNmNmZTUxZmQ4OGEzNDMyOGIwNTk3M2MxZmUgbGVnYWN5LXRydW5rCisxNjUxNiA4NGY4NTc5YTA3OWNkYWFiZmRiZWQ5NTVhOGUxNDk1MDg1ZjJkM2ZmIGxlZ2FjeS10cnVuaworMTY1MTcgZThkYzBhMGJlNGJhY2MwODE3YTE0NWE1NjZkNzIxZjU3MDkwYTE3MCBsZWdhY3ktdHJ1bmsKKzE2NTE4IDYzMmJlOTljYzJjYjEzODRjMDJjNWY1ZGJkMDgzZWE3N2YzMjQ1ZTIgbGVnYWN5LXRydW5rCisxNjUxOSAwMGVkNGI3NDMwMmZkN2U4Njc5ZTA1YjE3ZmRkMWMwOGJkNWE2NWY0IGxlZ2FjeS10cnVuaworMTY1MjAgNjdiOWIwNWNlNWE1ZGZiMjc1MjE2MDNjMGU2NDI3NWM3NjNhZDU4ZSBsZWdhY3ktdHJ1bmsKKzE2NTIxIGJjMzdlNmEzMzVmMjE1ZDliOWNhOTNkNWYzNmM1NGMzMTBhOGRjYWMgbGVnYWN5LXRydW5rCisxNjUyMiA0OTNiMTA2NTc2M2RiZmNiYzNmMjQyMGU4NWU4MDljYzM0NzYwMTZjIGxlZ2FjeS10cnVuaworMTY1MjMgMTZiNjBiZDZjMzc1ZGE5YmY0ZmFlNjgwZDUwYTgwZTRkZDg4MTM3NCBsZWdhY3ktdHJ1bmsKKzE2NTI0IGQ4OWRhMTdiNDZmNjEwYWE1ZmNmOTYyMjkxMDNmZWQwN2JhODE2YjYgY25yaS0xNi1zdGFydAorMTY1MjUgNmY4ZDI0YjMzMmQzNWQ1OTVjZjRmMmIyZDFhZGVkNTAwYTc3MWY0ZCBjbnJpLTE2LXN0YXJ0CisxNjUyNiA1OWY4Y2VkY2YwNDk1MWMzMGZkOGEwYzJhMjljYTEzY2I4NTI1NDdmIGxlZ2FjeS10cnVuaworMTY1MjcgMmQwMGJjZWQ2MDM4NzBhMzI3MzY4YTE2NTYyOWNlZGQzMGM4MTU3ZiBsZWdhY3ktdHJ1bmsKKzE2NTI4IGMxZmM0MDY2NDYwMzgyZjNkMzM5MjI3NmVkODMzNDI4NzEyYTA5ZWEgbGVnYWN5LXRydW5rCisxNjUyOSBmZGJjODczMGQzNTY5ODk3MGRkZGU0MGY5NTUzYWVkMGU5MmZjNDBlIGxlZ2FjeS10cnVuaworMTY1MzAgYjFiNDc0Y2M4OTY2NDM3ZGE0ZWEyMTRlZTE2NjUxNDc4Y2E3MzE2OCBsZWdhY3ktdHJ1bmsKKzE2NTMxIGRhZDAxMzE3YmVkNzJmYWY3MDVlYjUwOTZmMTlkMjlmMzEyMjdiMTEgbGVnYWN5LXRydW5rCisxNjUzMiA4YmJjMGU2NDMyYWI0ODJiYjg3OGJjZDk3ODM2MDM2NjE2NjUyMGVjIGxlZ2FjeS10cnVuaworMTY1MzMgMzIzZGUzYThmZjhlYmMyNWI4ZjM2Yjg1NTIwOTU5ZmNlMzhjNzNjMCBsZWdhY3ktdHJ1bmsKKzE2NTM0IGY3MWNkMjQ1MzVjNDA2MTljYzkxNjJkOWYzMjQ1M2Q3ZTMyY2IzMDAgbGVnYWN5LXRydW5rCisxNjUzNSBiMDhhYjJjZGY3NDJkMTBhZGM4MmYyNDMxNzJhMDhjYzg0MGExMzI4IGxlZ2FjeS10cnVuaworMTY1MzYgMmNmZmNkNzFkNWU0MTQ3MTQ4MmQzY2NjYTRiYTNjMTE2ZTU1NjQ4OSBsZWdhY3ktdHJ1bmsKKzE2NTM3IGVlYTUxMjc1YWNiZmI0NDJmYWVkYWM0M2ZkMDNmODVmM2FmYWVmMDAgbGVnYWN5LXRydW5rCisxNjUzOCBiNmQ5M2RiYTEyMGVhYjVkNTYxMDIyMzdjM2YyMzhhNmRmNTI4ZjI5IGxlZ2FjeS10cnVuaworMTY1MzkgZjFjOTdhZjRjODQ3MDliZTYyYTcwZjY2YjA0ZmYxMTMwODA4N2RjZCBsZWdhY3ktdHJ1bmsKKzE2NTQwIDlmYmNmYmY4YTFkMjkyYjhmZWYwM2JkMzhkZmM1NjM0ZTUwNWQ2OWUgbGVnYWN5LXRydW5rCisxNjU0MSAzM2RmM2I1MTY3MTE5ZTA1M2IwZGUzMjBhZGMzNTYzYTEyMWY5ZTE1IGxlZ2FjeS10cnVuaworMTY1NDIgYjM5MDNlMDUwMTdmMTYwNDJhNjUwOTE2MGZhNjg0YzQ3OGZiNjBkNSBsZWdhY3ktdHJ1bmsKKzE2NTQzIGY2ZTRhOWRkNjdjZGQzZWE0YWNjZWY3Njk2NjYzYWYyMzU1ZDkzY2UgbGVnYWN5LXRydW5rCisxNjU0NCBhYjQyZDQ1NDI0MjQ4NTJmOTBkNTllM2VmMjhiZTIyYTU0MGIyODYzIGxlZ2FjeS10cnVuaworMTY1NDUgZTIwZmUwMDUyNjgwOTU1NGMwOGI0ZjYxYjg4ZTRhMGNlNmM4MTY4YyBsZWdhY3ktdHJ1bmsKKzE2NTQ2IGFkMzkwMjQwZWZiM2IwOTVhYzFhOGZiYzEyOGUwNjJiN2IwMjg4NjMgbGVnYWN5LXRydW5rCisxNjU0NyBmZjExMWQyODk5MDVkNTI0NzdjMzU5MTEwOTE2NGQ3Yzc5OTUxYjgxIGxlZ2FjeS10cnVuaworMTY1NDggYzI0Zjc3NTViMWY1MjU1MWQwNWJkYmYzOWI1ZDMxNGE5ZjEwODRkMCBsZWdhY3ktdHJ1bmsKKzE2NTQ5IDFjMTg2MDMwNjg4MjI5NzE2Y2VlM2FiYjEzMzdiY2VjMjZjNWM2ZDggbGVnYWN5LXRydW5rCisxNjU1MCA0MjA0NTY0YWJmMjBjNTNmZmVhNjRjNjUwMGFiMWNmODI5MDdkMTBhIGxlZ2FjeS10cnVuaworMTY1NTEgNjY1Nzk1NmFmMzFlMGFhNjVmZDA1OGU4ZmQ1M2I4MmViYmZhMjRjNyBjbnJpLTE2LXN0YXJ0CisxNjU1MiBjOTM2ODdkNmM3MzE3MThmOWZjMjRjOTJiMmQ1ZTI3NTk5YTZlMDMzIGNucmktMTYtc3RhcnQKKzE2NTUzIGYxMjkwYWJhMjlkYTRhMjc4YWFlOGZjNDJkYTk4OGQ5MzA2MmY0MWIgbGVnYWN5LXRydW5rCisxNjU1NCAxZjk2NmYwZDQ2N2NhMWRhNzRiZjYyNTU4MTMyYjA1MTQ3MDRiN2M2IGxlZ2FjeS10cnVuaworMTY1NTUgZjY2NTEzYTBkZWE1YTU1ZTJhZmEyNGY4MTQ0OGYxYmEzMWQ5MzVmZCBsZWdhY3ktdHJ1bmsKKzE2NTU2IDRlZGQxM2ViNzU5ZDI2YzNmNjA4YTY4N2YxMTdhMjM2MzFmMTcxY2IgbGVnYWN5LXRydW5rCisxNjU1NyBjNjZlOTkxYjVmMjE3Y2JhNjk4ZDdkMDc4NzBjY2YzNDJhNmM5YjM2IGxlZ2FjeS10cnVuaworMTY1NTggMDYzNzQxM2U1OTM5N2U3NDg1YzVhNTY4ZjZiZTlkYWQ3MjY2NWZlZiBsZWdhY3ktdHJ1bmsKKzE2NTU5IDFiNzgxMzU3NWFmN2RjOTQyOGRmZWE2YWY2MDA5ZTMxNDhlOTAxOTUgdW5sYWJlbGVkLTEuOC4yCisxNjU2MCAzNTI5NjhlZTQwZTYyOWFkMjc4M2ZmZGEwY2M1YjY3OTI5MDc3MmY0IHVubGFiZWxlZC0xLjguMgorMTY1NjAgNmY3YWI3NGIxMjk4ZGFjNTFhMjE0M2IyZjgzYjJiNjgwM2VhMTJkNSBjbnJpLTE2LXN0YXJ0CisxNjU2MSA4ZmJmMzA3YjkwYTZjMmY0ZTQ3YWZhZDc0YmE1NGVlODg3Y2JjMDkwIGNucmktMTYtc3RhcnQKKzE2NTYyIDEzNmQzZDcyNjY2YTc5NTNmYzc0MmUzOGRlMTcxYTUwYjVkNTQ3YjEgbGVnYWN5LXRydW5rCisxNjU2MyA0YzEwYmM4MTFmZWRhYWQ2YTFiOWI3OTBmNzc2Zjk0MDAxNWEwOTU5IGxlZ2FjeS10cnVuaworMTY1NjQgYmExMzgzYzk4N2M4ZGU5ODgyODk2NDBhMzBiMmNhYjU0MzJlMTk3OSBsZWdhY3ktdHJ1bmsKKzE2NTY1IDgyOTVmODUwNmVhZWE3NTk2ZjkzYzc1Y2VjMDE2MjVkZGFhYjE5MWUgbGVnYWN5LXRydW5rCisxNjU2NiA0MmE0YTQxN2I0NzUwM2ZkMzFjMTFjZjU4NTE2NWZjMGI4ODMyNzljIHVubGFiZWxlZC0xLjIzLjQKKzE2NTY3IDJjNzg2ODk2ZTU0OWQ0ZWViNzVmMWI0NGJjMzc4Y2VjMTQ0NzA4OWYgbGVnYWN5LXRydW5rCisxNjU2OCBlMDBkM2NlNzFmODkzYWJjZTViMTc2NzBhZThhOGJmYWYxNDc4YjcwIGxlZ2FjeS10cnVuaworMTY1NjkgMDMxZGFlMDhhMGE5ODgwMmRhNmRhZGVmNjhhMGY4NGE3ODc5Zjg4YSBsZWdhY3ktdHJ1bmsKKzE2NTcwIGFjNDhkMDc3ZWFhYzk3YmM1Y2YzMjI5NDgwNDhkYWFlYzhlZjE1OGMgbGVnYWN5LXRydW5rCisxNjU3MSA1NDY2MzI0YmI4MTE0ZWY3YmE4ODlmYThmNDcxZjI0MjUzNzU3ODY3IGxlZ2FjeS10cnVuaworMTY1NzIgZmQ0MzcyNzg3NjExYWE3MWVjYzY5OWRiZGI2YjllMDdlNDBjNjkxMSBsZWdhY3ktdHJ1bmsKKzE2NTczIGIxYTdmNjFhYjc4MTFiMWNlMjhkNzRiNTJlYjBjZTBmMTQ5NWE4YjAgbGVnYWN5LXRydW5rCisxNjU3NCBlOGIyMmJjODhkOTVlYTNmN2YxYWUwNWFiYzU5MzZhYjVmMzYzNjBhIGxlZ2FjeS10cnVuaworMTY1NzUgYzc3Zjg4NzNkYTg0MTMyNDgyYzJkZjdlOTUxNmMyNzZlOTAwZWQ5MiBsZWdhY3ktdHJ1bmsKKzE2NTc2IDExNjI1NjMzZDBmNjcwMGZjMDJlODI5NGU4ZjUzZGVkNmY2YzhmYTMgbGVnYWN5LXRydW5rCisxNjU3NyBkZTkwNjYyZjJlYWIxNTQ2Y2NlZTVhZDQ3NzIyMGQ2NjJkNDcyNGIwIGxlZ2FjeS10cnVuaworMTY1NzggYmE4ZGI5NmVhNGQ5ZmQ0NWNkZTdlZTgzNjZjZjlkNTcxZjUwNDVlYiBsZWdhY3ktdHJ1bmsKKzE2NTc5IDM3NGRhNTgyZWMxMmY0ZGFhOGZlYjA2YmRkYmYxMDJlMDUwMjMwZDUgbGVnYWN5LXRydW5rCisxNjU4MCBmMzk2OGRkMTcxMWIyNWFiN2I3NTkwYzRmNWI4OGQxY2I5OTZlNTlmIGxlZ2FjeS10cnVuaworMTY1ODEgNzYyMzdjMGNiZjEzM2Y2ZGI4YTZkY2Q5NWE1YWU2OTllZTNkMWJkNiBsZWdhY3ktdHJ1bmsKKzE2NTgyIGYzOGUzMjFiZThhNDM2NDE2MDFhMjg2ZTEwYzBmZDllZjc2NDcxNWUgbGVnYWN5LXRydW5rCisxNjU4MyA2NDg3M2NmMjBiMTZiNDBmOTkxMTM4YWUwYzg4ZjE5ZTdkZGJiN2Q0IGxlZ2FjeS10cnVuaworMTY1ODQgYWNkMDc1NWVlNzcyNTEzOGY3MjUwZmM0NzdjNGQ4MWQwZmIwNDYzNiBjbnJpLTE2LXN0YXJ0CisxNjU4NSA0ZjczN2ZiMDQ1MjhkYmRiMWVkMjVjYjJmNzVlNDJjOTU1Y2Y5NzMwIGNucmktMTYtc3RhcnQKKzE2NTg2IDQxYWQzNmZiMDBlZTkzNWVmZDk2ZTNmN2I2MTQ0ZTUyNmZjYzg4NzMgbGVnYWN5LXRydW5rCisxNjU4NyA0NWQ4ZjIzZGYyMTgyYzFkNzY2NjllNDk4ZmE0ZGUwYjE4MzUwYWMxIGxlZ2FjeS10cnVuaworMTY1ODggNTFmMjlmY2JkOWJhNWEzMGUzNGZiYjg5MThiMjVkNTVjYWUyYzkzYyBsZWdhY3ktdHJ1bmsKKzE2NTg5IDMzZmY0ZDRkOTFhYzNkOGIzNzcyMzZmNTk1MzFhYmVkZGE3MTRmNzcgY25yaS0xNi1zdGFydAorMTY1OTAgYWZiYmU2NzRkNThhMGJhYmZlOWE5YzRmN2M5M2FiN2U0MjM1NjZiYiBsZWdhY3ktdHJ1bmsKKzE2NTkxIDNjMGY3NWEyMTk4ZmYxOTEyMzMxOGU0M2NhM2JlMWMxNTg5MjA1OWMgbGVnYWN5LXRydW5rCisxNjU5MiA2NjIyZDc2MzFjY2ZmMWY3MGY1MDVkZjE3MzI5ZWE4YjJiNzZmOWJiIGxlZ2FjeS10cnVuaworMTY1OTMgOTVlZWU4Njg2MTFlYzY4ZjdjMjkwMmUxYWNiMzlhNmVjMjRhOTY0MSBsZWdhY3ktdHJ1bmsKKzE2NTk0IDhiZDgyY2YzNjFhYTQyNDA4NTRjYjQyODYxODk4N2IxZDQ1YjgwOWQgbGVnYWN5LXRydW5rCisxNjU5NSAzNWUyMjY2ODZjMmVkODAwYTM4NzQ4NjcxYWRhYzkzM2M5N2Q3OTVhIGNucmktMTYtc3RhcnQKKzE2NTk2IGQ0MzAwOTdkMWJmZDE4OTllMzA0Njc5ZTRmZDMwNjg2ZjcwNmI3YjYgbGVnYWN5LXRydW5rCisxNjU5NyBjNTdiNTc0ZTY3NjY0ZGMyYzhjMGJkNDEzMGM1YjllYTVjNzY2NjkzIGxlZ2FjeS10cnVuaworMTY1OTggZWVlZDdiYzhhMjgzZDk1YTM4YzkzMzI4MzdlZTkxZTk2NDA5MTk4NCBsZWdhY3ktdHJ1bmsKKzE2NTk5IDA4NGM2M2Q4NWY5MDgyOTU0ZDU1MTY1MjgzMDdmNjBiZTMzZmI0ZTcgbGVnYWN5LXRydW5rCisxNjYwMCBhMTBkYzcyMTVjMWVjMTc1YmMzMDQ5MWI2MmQ3MzI5ZGE3M2E2NWJkIGxlZ2FjeS10cnVuaworMTY2MDEgYzYzODYzYWJlMWFhOWRkZWFiMTJkNjA3YTAzNTkyOTY0OTZiMDQzNCBsZWdhY3ktdHJ1bmsKKzE2NjAyIDVmZDgwYzgyYTE1YTkxNDM0ODcwZWM2YTFiOWExODkxZTkzMTZmZGYgbGVnYWN5LXRydW5rCisxNjYwMyAyNTRmOGI3YzRhODM4MTM2NTlmMjFkYTEwMWYyZTMxNTQ4ZTU2NGMwIGxlZ2FjeS10cnVuaworMTY2MDQgNjFjYzU0YzMxM2Y2Y2QxNTg3ZmRjZTE0YTMwMWM4YTA1MzgwODRmMyB1bmxhYmVsZWQtMi41NC4yCisxNjYwNSAwMmUwODE2ZTRiMzcxN2I5ZjAxNzFhZmVkY2E2NjY3Y2E1MmEyNzViIGxlZ2FjeS10cnVuaworMTY2MDYgZTRjMzgwZWU5MDc5ZjcxMzUyNzM3NTQyYzc5MWY3ZGE2ZmQxN2RmYyB1bmxhYmVsZWQtMi41NC4yCisxNjYwNyAyM2E2MmE4NzUxYjQ3NjJiODU4OTcyNGNkOTE1MWE2OTMzOTdmYTIyIGxlZ2FjeS10cnVuaworMTY2MDggMTUxMTRlMDE3NjUyOTQ2MDM4N2FkMWI4MjJlN2FkNzUwYWQ0M2RhZSBjbnJpLTE2LXN0YXJ0CisxNjYwOSA0MDNjOTcwZDFhNWU0YWM5Y2IxYWE2OTY3N2RkYzJjYmI5ZWUwY2RkIHVubGFiZWxlZC0yLjEwOC4yCisxNjYwOSA5YWNmZDAzN2NiOTRkYTE4MzYwNjAyNDMzODM0YWJkYmMyOWFkOTRjIGNucmktMTYtc3RhcnQKKzE2NjEwIGMzNzgzYTMzZjg0YmYwMzU3OGU5MjZkNmI0NmIzOGUzODhkOTU3MzcgbGVnYWN5LXRydW5rCisxNjYxMSBiMDE2ZWM4NzM4ZjlkMjNkZThmMmI4MTViZTllYjI1YzgyZWZlNmMwIGxlZ2FjeS10cnVuaworMTY2MTIgNTEzNmUzN2ZmNTQ4ZTY5MTAxNzMyMTQ1OWJmZGVjNmRmYjZhNTczNCBsZWdhY3ktdHJ1bmsKKzE2NjEzIDRhZWJkMGYyYTA2MjY5MjNmNWMxNzY1ODBjNTA0ZjkyYjIxMjE0MzkgbGVnYWN5LXRydW5rCisxNjYxNCA2MzFiNWRmNDRkZTYwOTUxMzg5ZWY3MGZiNzNiZWE3MmZiYTIwNzlmIGxlZ2FjeS10cnVuaworMTY2MTUgYjM2OGFhODIwOGYzYTFmNGU2Y2Y1YWRiYjExNDJiZTc4OTdhZDlkMSBsZWdhY3ktdHJ1bmsKKzE2NjE2IDExZDg4MjIwZmI1MjI4ZmY4YzgyMmQ5NDgxYjZmMGYwYjI1YmEwMDAgY25yaS0xNi1zdGFydAorMTY2MTcgMmJhZGIzMjIzNTVmY2U0OTg0MzRjNjdmYmQ0NmJkNGE2MDIwNTQ5ZCBsZWdhY3ktdHJ1bmsKKzE2NjE4IDkxZDk1YTdiNzg1ODM3NDAzMTE5YjA4ZWY2MGMyNzExNTA1ZThhOTAgbGVnYWN5LXRydW5rCisxNjYxOSAzYWUwNmM1N2QwOWVhOGNiODFiZGU5YWY1ZjE5Yzk1Mzg2MTFmODViIGxlZ2FjeS10cnVuaworMTY2MjAgNDY1MTQ0YWJmMDJhMmVhOTllMGMwNjYwZDQ4MzgwNWRmMTliZWIwMCBsZWdhY3ktdHJ1bmsKKzE2NjIxIDFlOWQxY2MyYmMzZjdhYzU4YTEyZGQ2N2ViMjY2MWI5YTM0ZjFiZmEgbGVnYWN5LXRydW5rCisxNjYyMiA5MjRmMDk4MWJmNzZkY2Q5MTRmYWI1MWQ0ZTFkMjJmYjNkZDAyYTcwIGNucmktMTYtc3RhcnQKKzE2NjIzIDk3NTczY2Y5MWU2YWRlOTQ3OGJlMGRiNDY1ZmU2NjJlZmRkNjhiYTggY25yaS0xNi1zdGFydAorMTY2MjQgODc0ODhjMzExM2YyNzZkNjdkYTQ1NTg4OGI1ZTJjNTU0MjY2NjAxNCBsZWdhY3ktdHJ1bmsKKzE2NjI1IDAwYTVjODA2Y2Y3Y2I4YWJhOTQ1NjNmMTUzMzVkOGE2MTczNmM5NGEgbGVnYWN5LXRydW5rCisxNjYyNiBiMzdmMDg2MzUwMjNmMjY3M2FiZmMyNmU1YzI3OTBhZGVkNjgxNjUzIGxlZ2FjeS10cnVuaworMTY2MjcgZmM4NzNjYTBjN2QzZjQ4ZDdmN2QyYmM4YjFlNzg1OWJmZDg1ZGFhNSBsZWdhY3ktdHJ1bmsKKzE2NjI4IDA1MjU4NTFiYTBiNzdhYjcwYzM0MmMzNjdkZDNlMWFlNDQ1Yjc1NmEgbGVnYWN5LXRydW5rCisxNjYyOSBhNTVlNDg4M2Y4ODZiOWNjOTZmNzAyMjBiYmUzOTZhNGU3YTAxZWExIGxlZ2FjeS10cnVuaworMTY2MzAgZGQwNDJmNWE4ZmEyMjE0NDhlYWJiZDkwMTBjODIwYzJhZmE1Njg1YiBsZWdhY3ktdHJ1bmsKKzE2NjMxIDA5ODgyNWU3NGEwNWFkOTJjZGZlN2ZiMDVlZWFiZDk0MTI4YzQyNWMgbGVnYWN5LXRydW5rCisxNjYzMiAzNDhhN2MxOGUwZTYzYTdmMzI2MzA1YWUxNmVkYTNmYjM0ODgyZTQ2IGxlZ2FjeS10cnVuaworMTY2MzMgYjczMWEyMDYzMDJhZTcwYTlhNDM0OGRjZjdlMmJmNjc4YjAwODRiYiBsZWdhY3ktdHJ1bmsKKzE2NjM0IGM0ODA1Mjk4MDdhYjMzMDZhYTRmYTMxMWQzYWY3M2Y0NzIyMzM5ZGEgbGVnYWN5LXRydW5rCisxNjYzNSAwN2I4NWZjN2VmNjg0Zjc3ODNhNDU1OWU0YTJiZTk3MWY2Zjk5YzQyIGxlZ2FjeS10cnVuaworMTY2MzYgNjY1ODliMDZjNjMzMDg2MTRmY2RkZGY3MDY4OGViYmMwNTAyOWZlMSBsZWdhY3ktdHJ1bmsKKzE2NjM3IDA0YTM2ZTkzZGMzZGQ4MDY2ZjUwODFhYjllNjBiYTlhZDFjMDdmMTAgbGVnYWN5LXRydW5rCisxNjYzOCA0NWVkYzMyNWU4OWE1NzY5MGQ4NmZlZjJjZDE2OGM2Yzk3ZWE4N2FlIGNucmktMTYtc3RhcnQKKzE2NjM5IDk0YWRkODhlZjA4YzA2YjU1MTg0ZjYyZjgxYzNlMDA3ZDRlYzM0NGIgbGVnYWN5LXRydW5rCisxNjY0MCA2NjgyZmYzZTMxOGY1ZjI5NDI4MzlhZmFkODFkNjBiMTZkYWVhYWRiIGNucmktMTYtc3RhcnQKKzE2NjQxIGEyOTZmZjU1MjIxZjcxMjBiNTZmN2VlNTdlMDBiMWI3MTg3ZWIzNGIgbGVnYWN5LXRydW5rCisxNjY0MiA5OWYwNDEzZWY3OTVmMzE1YjI1MWQxNzJiNzJlOWMwOTU4NzNhYTUwIGxlZ2FjeS10cnVuaworMTY2NDMgYmY4ZDU2ZTI3YzdiYmE1NmRmZjg0NDdhMGU0OWMwZmQwNDcwZDc1NSBjbnJpLTE2LXN0YXJ0CisxNjY0NCA5NGY2ZWM4NzkzMGFiZTVlZGQ0YmZkYTEyMWUyNTMzZTk2NTRlMGU5IGxlZ2FjeS10cnVuaworMTY2NDUgZDc0YTRhNDNmNDVmYjg4YWRjODdjYzJkYjY2MDM1NmFkNDgxNWJlMCBsZWdhY3ktdHJ1bmsKKzE2NjQ2IDQ2OGRmNWE4Y2Y0YWNmZDM0MmNmZmIzZTkxNTYwMDgzMGNmNDdkMDYgdW5sYWJlbGVkLTEuMjMuNAorMTY2NDcgOTZhZDMyNDk4ZGI3ODIxNDg2OTAxYjAyZTJhM2YzM2QwMTlhODdlMiB1bmxhYmVsZWQtMi41NC4yCisxNjY0NyAxYzJhZGFlNDUwNjk3ZGZjMzFjNjY1MzNmYjcyYzgwNjNmYjNiYWMxIGNucmktMTYtc3RhcnQKKzE2NjQ4IGYzZDVmNzFjY2JiNDVlNzM2ZjhjYzNjYTRiYTdlM2UxYjUzODgyOGIgbGVnYWN5LXRydW5rCisxNjY0OSA0YzNmOTc3Y2UwNmNmZTdjYjViZDQ4NzkxYTVkNTBmOWY4ODMzYWJmIGxlZ2FjeS10cnVuaworMTY2NTAgYTk0ZTM3ZWNkYmViNmZiNjhkMGRlNmRhZmVhOTNmNDIzMjZjNWY2OSBsZWdhY3ktdHJ1bmsKKzE2NjUxIGM1ODE0OWMwNjcwYWE5OTFlZDc0OGExNmQ1ZWRlMTBiMDg0NTg0MDIgbGVnYWN5LXRydW5rCisxNjY1MiBmYzQ5YTNiMzg2M2IxOTZjNWMxMGIwMDc3MzAyYjI4ZTVlNzlkYjMxIGxlZ2FjeS10cnVuaworMTY2NTMgZGZkYjYwMWNlZTFjZjUxNDM1YmIzMzg2YTJlNmI2YjFmMzhjNGM5MyBsZWdhY3ktdHJ1bmsKKzE2NjU0IDU5MmFjMjcyNjQxZDIyZGYzNWZmNzE0N2Q1YzkzNDAxNmE1NTdiZjQgY25yaS0xNi1zdGFydAorMTY2NTQgYTY5ODVkODk0NjQzNzZiOTE3M2M5YTU3N2M2NzBiN2QwYjc2N2QzZCBjbnJpLTE2LXN0YXJ0CisxNjY1NiBlMjYzYTI3M2UzMjFmOTZlOTdhZGFjYzUzMGI5YmVlODA3YmI5MjNkIGxlZ2FjeS10cnVuaworMTY2NTcgZWU4YzVjZmFkMzM1ZTZiYzZmZGY0YTc0YThmNjI0M2NjYWVlOTJhMyBsZWdhY3ktdHJ1bmsKKzE2NjU4IDRlZjQ2MWRmMzJjMTkxZTkxMzBkYzliY2I3Yjk1MWVhMGExMTQ4NzIgbGVnYWN5LXRydW5rCisxNjY1OSA1OGZlZmVmNzBmYWNiNzMwMGEyZTQ1NmZjNzU2NzYyMDkwODM4M2M0IGNucmktMTYtc3RhcnQKKzE2NjYwIGRmN2RlYjJlYmE0MTQxMDdlZGZiY2JhYmU5NjU5NTQ2OGE5ZDY0OTcgbGVnYWN5LXRydW5rCisxNjY2MSA4MzA3NDQ2YmM2YWFkNjYwZGQ1MTE3ZTYzMTE4ZjgwZTc4MGI1MmJjIGxlZ2FjeS10cnVuaworMTY2NjIgMzVmYzk1MTFhMzZmZjJjNDdhNmJhNjY3ODJhNDMwMDljNDQ5Njg2ZSBsZWdhY3ktdHJ1bmsKKzE2NjYzIGQwMTRjOGFiNmE4MjQzNTNkMzMwMDFhMjMyYjEwMTA2Yjg0MTdkNDYgbGVnYWN5LXRydW5rCisxNjY2NCAyNjZlMTFhMjI2ZjdjZDgzOWMyMjZmMzQwMTc5OTA2YTIwN2FlY2Y2IGxlZ2FjeS10cnVuaworMTY2NjUgZWE1ZWI1MWVkMGY2OThjNGI0NjYyY2QwNzkwODI1NDkxMzUwODkzZCB1bmxhYmVsZWQtMS44LjIKKzE2NjY2IGY5MTE2MThhMGVhMGZhYzQ2Y2U5NmUyY2I2NWNkM2YwMzkxZDAyYTcgbGVnYWN5LXRydW5rCisxNjY2NyAxYzAwZmVhOWFlNDBjMGYxZmI0MmZlZDNlYWIzODIxOGZjYjNkOTcwIGxlZ2FjeS10cnVuaworMTY2NjggNzU1ZTIxMzVhMTk0OGE4ZDNjMTMxZjFmYjc2M2JkMzA0YjI0YjU1YSBsZWdhY3ktdHJ1bmsKKzE2NjY5IGFiZmE0ZTRiMmYzZTlhY2UyZWYyODJkZWRmYWQ2NzlkYzg4NDFkYzMgbGVnYWN5LXRydW5rCisxNjY3MCAwZjY4MDE4Y2NlNThmOWYxZmE5ZGI0Mjc2YmJmZjc3ZWY3YTYxMDRiIGxlZ2FjeS10cnVuaworMTY2NzEgZGQ4MzBjOWU1YzIxOGZhZTU5MTgyNmU0MDE0NWUzMjQ1OTRmODM4ZSBsZWdhY3ktdHJ1bmsKKzE2NjcyIGM0ZTMyMTgzNDI1MDNhYzYyNjdkYTIxNTE1NmQzMTVjM2MzMmRhMTkgbGVnYWN5LXRydW5rCisxNjY3MyA4ODFkMzk4YTQ0ZTA3MTBhZTAwZmQ3MDYzZTAzZjNlNjNjNTU3MTNkIGxlZ2FjeS10cnVuaworMTY2NzQgYmY3MDYyZThlZWFjZjQzZTNlNzY3MmQ3Nzg0NDgxM2UwOWRmMjUxZSBjbnJpLTE2LXN0YXJ0CisxNjY3NSAzMWE3YjAwNDU1OGZiN2MzYTkxM2UwZGExZjk4M2ZkNWMxOGJkNTQ4IGNucmktMTYtc3RhcnQKKzE2Njc2IDMzZmQ2MGFiZDQ4MjJjNGFhZDU3MWJlOTc5NjdhMDk1YjI0ODg4NmYgdW5sYWJlbGVkLTIuMTA4LjIKKzE2Njc3IDE1YWQ0MDg4YTcwMGJmYjA1YmQzMDBhODZhZjcwYmMyOWE1MDUyNzkgbGVnYWN5LXRydW5rCisxNjY3OCA4ZWVhZmY5NmI0YzI0NDIyZmFhZjI3MTZmMzFjMmFhYzgwMGMwYWY4IGxlZ2FjeS10cnVuaworMTY2NzkgMDk1NjU3ODQ3MTVlMWM2NjU1ZTY5ODk5ZjY5MjlhMDA1ZmNmMjE5MiB1bmxhYmVsZWQtMS45OC4yCisxNjY4MCAzYTVhN2QyN2YxYjcyYjlkZTFmOTg4YTE4Y2QwNDQ0Yjg2ZDkxMGE2IGxlZ2FjeS10cnVuaworMTY2ODEgNjI0OTRhOTZkY2NhYjVhYTIzOWU2N2VkZTlhZjYxYjYwZWVlZmRlYyBsZWdhY3ktdHJ1bmsKKzE2NjgyIGMwYzE3MzQ3ZGE1YmJlY2NiZWZmMWM3NWQxZWEzZjAxZGE1MDQ0MzkgbGVnYWN5LXRydW5rCisxNjY4MyBhYTQ5ZDA3NGY3MTYxYjA3MjdjOTY1M2NhYzA5Njk4ZmJiYmE1MWRkIGxlZ2FjeS10cnVuaworMTY2ODQgOThmMDhjYWZlMTliMTI1NDFlYWYzZDFhM2NhNmZlMjNmNTY2OWEzMiBsZWdhY3ktdHJ1bmsKKzE2Njg1IDhmMGZjMGI1Zjc4NGNjZDA2YTBjNzExNDRmYmRmMWUzYTg1YjQzZjIgbGVnYWN5LXRydW5rCisxNjY4NiAwOGZlYjUzOGM4MzcxNjBlYjQ4NWU5YzA0NGNiMTk5OTVhNzdhODk3IGxlZ2FjeS10cnVuaworMTY2ODcgMjE5MGI3NTk5ODM3MzRhMGM0ZTk0ZGYwZDUyMWRjOGExM2M4NjQyYSBsZWdhY3ktdHJ1bmsKKzE2Njg4IDFjNWJkYjY2MjNjOGMxMTQ4NWMyNTg5MThmYzMzZThjMTI0MGJkMzUgbGVnYWN5LXRydW5rCisxNjY4OSA3N2I5ZTA0MWI1OTVjYjUwOWQwZDgyMjUxMDc0MjAwYzQ5Yjk0ZmFmIGxlZ2FjeS10cnVuaworMTY2OTAgYzMzMjBkMjRkN2RlNDZhZGQwZWU0YjczMzgwMGJmOTJmOGM2YzJmZCBsZWdhY3ktdHJ1bmsKKzE2NjkxIGUyZWEwMDYyMGVkNjg5OWE0ZDQxNzQ2OTA2MTYxNTRiODEyNWY3NDQgbGVnYWN5LXRydW5rCisxNjY5MiAwNDMwYTEzMDk1OTZjODc5MGQzN2Q3NmZkNzlmNzc1MGUxMWE2MDJiIGxlZ2FjeS10cnVuaworMTY2OTMgZDNiZjk3ZDUzMmEwOGI0ZjEzZjJkM2Y1MDc5NTUzNjFkYzVhMjM5MSBsZWdhY3ktdHJ1bmsKKzE2Njk0IDI1ZGU3MTkzZjlmY2VhNjU4MzQ1MDRhNzZmNThkZmYyZTk3Y2JlYTUgbGVnYWN5LXRydW5rCisxNjY5NSBhMGIzNjU5OGIzMWQwZDI5ODk5MTE3NDU5M2Y0YWJmMmZhZmZhYjJkIGxlZ2FjeS10cnVuaworMTY2OTYgOWM2OWJkMWEyODIyZjBlNTA1ZjA4ZGQ0YzM0MDhhYzM1MzNjZWNjZCBsZWdhY3ktdHJ1bmsKKzE2Njk3IGUzMGExOTRkY2EwMTQ4MmM0ZGUyMWM2OGRiNjQwZjE1OGU1ZTA3ZmYgbGVnYWN5LXRydW5rCisxNjY5OCAwZWZkZjQ1YmY2YmI2YjhkMTYzODYwODMxN2Q5Y2MzNWJmNDA5NGVkIGNucmktMTYtc3RhcnQKKzE2Njk5IDBhYzkxOWNhOGU2OTYyNDA1OWU4N2E1Y2NkZTUwNWVjYmU3ODdjNTQgbGVnYWN5LXRydW5rCisxNjcwMCA5OWUxOWM5ODJmOTQ0NWRmOGNmOGMzMWNmMmZiNDExZGU4YTQxNjhlIGxlZ2FjeS10cnVuaworMTY3MDEgOWMxZTY4OTg0MDI3M2Y5NDIzN2UyMTcyMmQ1Y2ZmNGZkODQxNjUzNCBsZWdhY3ktdHJ1bmsKKzE2NzAyIGM0NWFjY2M4ZTZkMDM2ZmY3NWFkYTViYzUxNThhNjhiNmFhNTcwMzYgbGVnYWN5LXRydW5rCisxNjcwMyA0NDZjMzYxNmMzMjNiMGY0N2JmZmVhOWMzYjAxZjY5Yzc0OTJlODMyIGxlZ2FjeS10cnVuaworMTY3MDQgNTI3NTdiYWYwMzBkZGEwZjA4MzkxNDk1MmE1MzZhMjg5NzYzMmViYiBsZWdhY3ktdHJ1bmsKKzE2NzA1IGIzNDdmYzVkYWViNzBjNzAwNmQzNThmN2Q0YTU4Njg2OGM5NTQ0MzMgbGVnYWN5LXRydW5rCisxNjcwNiBhNDI1OWJmY2E1YmZlOGJhMmYyZjAxZmUwMzRhMzJlOTc1MDRmMTkzIGxlZ2FjeS10cnVuaworMTY3MDcgNmJmMTI4MWVjNzYzOWJkZTQxNzE2OGM4NGRhNDU5MzVhMjIyMjgwMSBsZWdhY3ktdHJ1bmsKKzE2NzA4IDYwMjQzOTliNzhiZmE2MmY5M2RhZDliMGYwNWQwNjU2ZmViZDlmZjkgY25yaS0xNi1zdGFydAorMTY3MDkgOTQxNGQwMzFhMmMzYTRjYmY2NGNlODE4ZjU4NDIxNjViMTM1NGE0ZSBsZWdhY3ktdHJ1bmsKKzE2NzEwIGM4ZmY4MGNlYTRmN2JlNjE5MWQ1ZDdjYzk2MDk0Y2NjZmQ2YThkNWMgbGVnYWN5LXRydW5rCisxNjcxMSA4ZjQzZTU5MmNmOWE0ZjY4YTViMGU1MjFlMmQ4YzQxNjIzMmRhODBlIGNucmktMTYtc3RhcnQKKzE2NzEyIGQ3MGFlYzJlMzQ5Y2VhYjVlOWYyNGM4ZGM1ZTJiZmYyMWNmMzg0MGYgY25yaS0xNi1zdGFydAorMTY3MTMgNDY2ZTVmZjI4OTI2MjBhMDI3YzJmNDk4MWY1ZTg4M2JlZDljZjlmNCBjbnJpLTE2LXN0YXJ0CisxNjcxNCBmNDA1ZmNiYWFlZjVhOTc1NDgwYzhiODEzOGM5MDA4ODg5YTdmZTE5IGNucmktMTYtc3RhcnQKKzE2NzE1IGU2ZWZjZmNmMTc0YTg3ZGRkNDkxZGFkMTUwNzc1OTEyNmM2NWIyZjMgY25yaS0xNi1zdGFydAorMTY3MTYgY2Y1MDM0NTBmMDdiMjRjNjJkNjZkMzkxNzlhMWU1YzE5MjI3ZTMwMCBjbnJpLTE2LXN0YXJ0CisxNjcxNyBiZDY3YTRkNmY0ZjhjMWQ2ZDc1YWU4MjlmZjY0MjFjM2FjYWExOTM0IGNucmktMTYtc3RhcnQKKzE2NzE4IDA4MDIzZDI2YTBjZTg3NTA5ZTI0NjlhYTVkNjFhOTM1YjhhNjMzOTAgY25yaS0xNi1zdGFydAorMTY3MTkgNTljNmU5ODMyYTIwNDI1MjZlZTFkZGEzZjMxNWQ5Yjc0NDU5YTAwMyBjbnJpLTE2LXN0YXJ0CisxNjcyMCA2OTNiNjE1ODE3NDY2OTA3Y2JmNzQ2NDFjNzQ4NzZhNmE3YmQyNDRkIGxlZ2FjeS10cnVuaworMTY3MjEgNGQxNmM4ZGQ4OTljNGVlYTIxMDk0NjkxYTc5MjZiZTYzMWE5NGYwOSBsZWdhY3ktdHJ1bmsKKzE2NzIyIGJjMDE1M2E3MzlhZWY0NjdlNWEyY2QzMWEwN2E5YjAxZDdkYmU1ZmMgbGVnYWN5LXRydW5rCisxNjcyMyAwM2ZhNDA1MjhkMTc5ZmFiNjUyODA3OTg3NzIxODYyYTc4MTFlNzBmIGxlZ2FjeS10cnVuaworMTY3MjQgMDgwOTJkMWViMjZhZjk3Yzk2ZmIyNzM4MmFkNDIwNWY5ZTViYTYzYyBsZWdhY3ktdHJ1bmsKKzE2NzI1IDMzOTY5NzUxZTM1MWZkNzkwNDlmN2Q5NGVlM2E3ZTliOTUyYmIxMTIgbGVnYWN5LXRydW5rCisxNjcyNiA1MmZjZDA5ODU0N2U5ZWNiMzY4MWE2NzYzODc4OTI1MDgyYjViNDE3IGNucmktMTYtc3RhcnQKKzE2NzI3IGQwNTdjZDU0M2VkOTY2ZGYwMzYxMmE2YzQyZTA3MTFhZGM3NjBhMTggbGVnYWN5LXRydW5rCisxNjcyOCBjN2IzZmU4NDMzNTg2NzVjMmI3MTFmMDRlZGU3NGI5MjY2NTg2ZGM1IGxlZ2FjeS10cnVuaworMTY3MjkgMWQxN2M1ZTY3ZWY1NzI1MjQ4ODAwOGEyZjhhZTU2OWE4NTI2YzM5OCBsZWdhY3ktdHJ1bmsKKzE2NzMwIDY1OGIwODVlMTc1YmY4NDdkNzZkNmUxYTE2Y2VmMTI2MGFjYmUxOWQgbGVnYWN5LXRydW5rCisxNjczMSBkZGYzMDJkNjkyMTEzZTZlNGI5ZGIyMWNjNTM3NmNkNjE0ZDVjYjFlIGxlZ2FjeS10cnVuaworMTY3MzIgMmEwNGZiYjdjMDdkOTY0NzdkYjA3MjU2YTJkMDhlNmE2OWExZThjYSBsZWdhY3ktdHJ1bmsKKzE2NzMzIGI2ZTA3YzI3MjQ4NzkwMGZkZDk3NjkwZmYyMzNkNTgzNzJhYWQ1YzYgbGVnYWN5LXRydW5rCisxNjczNCAyNjZmYjYzMDJmMzExN2Q3MWY4YzE2NzM5ODcyNTMwNGNkMTdiYTE5IGxlZ2FjeS10cnVuaworMTY3MzUgMzkyN2E0ZDljMmZiMDJkYTI3MThmM2NmNDNkNGJjMDk5NGE2YmNjYSBsZWdhY3ktdHJ1bmsKKzE2NzM2IGYxOTRkOGIyNDg2NTkxMmJkMTZjMTc1NTMwMWU5YmUxYTM4NzdkNzIgbGVnYWN5LXRydW5rCisxNjczNyA0ZWFhNDYzYzAzMWExYmRiNWU3NzkxYzM3MGQwNDEwOGUwNjgyZGQ0IGxlZ2FjeS10cnVuaworMTY3MzggNjBjN2NkYTM1Y2ZhNDg3N2VjYzVhMTU0OGU5MDM2MjFjYTg1ODA4ZiBsZWdhY3ktdHJ1bmsKKzE2NzM5IDcxNzJjMmQ4YjkyYjY1OGYyY2RjNmQyZjRmMjIyYzcwNzNjZWY3ZDQgbGVnYWN5LXRydW5rCisxNjc0MCA0ZDE0ZWVmOGVhMDc2NTY4YmE3NTI5MDY3MmM1MDE4YWI1ODMwMjJhIGxlZ2FjeS10cnVuaworMTY3NDEgMmUwZDFhZWE5YzM3NDFlMDRhZGZmOGRhMTUzNzYyMGY0ZjUzMmI5MSBsZWdhY3ktdHJ1bmsKKzE2NzQyIDQ0YjFiODE4ZjI4ZTkyNTgzMzFhZGM0YjRlZjMyM2JiNjBhOGJkZTkgbGVnYWN5LXRydW5rCisxNjc0MyAyNWZkOTg0NmJkNTQyYzM0NGYwY2U1ODA3MzQxMjNlYjljMmNhZTIyIGxlZ2FjeS10cnVuaworMTY3NDQgNDY0YTIxOTBkOWI2NzZhNjkzNTdlYmZjZWNiZjk1NjM0MTk3MmQwNyBsZWdhY3ktdHJ1bmsKKzE2NzQ1IDgwMDg5YTQ1MGMzNGQwYjViZGExZjQ2YjFlM2EwNjBiOWE0MDYyMDkgbGVnYWN5LXRydW5rCisxNjc0NiA4N2FmMmMzNDFiNzliYTBiNTU5MTA2ZDY1MDQ4ZjIzZWE0MTM5YjI2IGxlZ2FjeS10cnVuaworMTY3NDcgZWNlNzViMDdiMTM2MDgwMTBjYjVhMjk3ZjRlMGNhNTYzYTUyMGU1OCBsZWdhY3ktdHJ1bmsKKzE2NzQ4IGQ1NmRkMTUzMGNlMTEzMmMyNTdjMWVmYWNmMTExYzkwNTFjMzQ3MGEgbGVnYWN5LXRydW5rCisxNjc0OSAzMWIyNWFjMWYwMTlhZjMwM2M2NjJiYTEwNzBhYTdmZjAyN2MzYzMyIGxlZ2FjeS10cnVuaworMTY3NTAgNTc4MGIxOThhYmM4OTllYTc4NzU4MWI0OWZjZTFkMGI3ODFjZTMyOCBsZWdhY3ktdHJ1bmsKKzE2NzUxIDY0OGJhNDA0NDQ1NTlmYjRmYTVkZjQyYTY0YmNkZjQwNDQ1MGI0YmEgbGVnYWN5LXRydW5rCisxNjc1MiBhZmRiM2Y0ODVkOGY5M2UzODdmMWU0N2M4NmI0NjBkMjkzYzYyOWQ4IGxlZ2FjeS10cnVuaworMTY3NTMgN2E5OTQ1MGRhMmQ2NGY3YjI1MDVlZmE0Yzk4NmM0NDA2YzU2MjhiNyBsZWdhY3ktdHJ1bmsKKzE2NzU0IDE5MWYyMGUwNDczZWUxZmZjNDBlOGQzZTNiNmM0OGM0ZWRjNTUxZTUgbGVnYWN5LXRydW5rCisxNjc1NSAyNjg5OGE5OGRiNmVkMGJjMWFkMDUxNDgyNjgwY2RiMjFiYjA5NDAzIGxlZ2FjeS10cnVuaworMTY3NTYgMjhhZmJjNWUwNzcwMDRhZTcyZDdmMTc4MDIxMzA2YjY0ZTk4NjQ3NSBsZWdhY3ktdHJ1bmsKKzE2NzU3IDM3MGFkZTg4YTUyYTU0NGNiZDY0Mzk4MmVmOWEyY2I3MzgzZDQ1NmQgbGVnYWN5LXRydW5rCisxNjc1OCAxYjE1NmVmODI4MWI4YmVhYmFiZmI3OTE1NTU4OWM4ZWJmODBmMTBjIGxlZ2FjeS10cnVuaworMTY3NTkgNzBjNDdhYjAxYTg1ZTJiZWNlMzBjODg2MDkxYmMzNzU1NjkwMTliZiBsZWdhY3ktdHJ1bmsKKzE2NzYwIDc0NDVkOTlkYThkZDg4MjU1MTQyNjZmM2RkMTY2OTRiMTFkNDZiZTIgbGVnYWN5LXRydW5rCisxNjc2MSA4MmEyMmQ4Mjk2MDcxMGVhOTQ2NzgwN2QwNWFhNDBiZDhiODA0M2E1IGxlZ2FjeS10cnVuaworMTY3NjIgNDk0Y2Y1ZmI4ZjE3NGVmMDQwYzQ4MjVlYjRjY2Q2YjYyNjc5YTM3MCBsZWdhY3ktdHJ1bmsKKzE2NzYzIDhlOGE4ZGYwZmU3MzRmMmI5MGM4YWUzMDU2N2VmMDBlYTM5ZjZlYTQgbGVnYWN5LXRydW5rCisxNjc2NCBiOTAwMmRhNDZmNjkzYWM3ZjQ3MjgzOThkNzczYWM5YTkwNDNiNDVjIGxlZ2FjeS10cnVuaworMTY3NjUgMGJiMGM3MTY3ZDFmYzdiMGM0NzFmYzRhOTFjMDE0ODdhMmY4M2M5MCBsZWdhY3ktdHJ1bmsKKzE2NzY2IDhiZTc1MjQwODVkNjE5NGE2MzgyOTA3MjZjNzc0ZTM0ZjQ2NmMwY2IgbGVnYWN5LXRydW5rCisxNjc2NyA3ZGRlNzRjMWViYmU0Y2Y1MjM4Nzk3ZTVmYWIxNTdmYmM5ZWM0MGE0IGxlZ2FjeS10cnVuaworMTY3NjggYzlhYTQ5ZTg3NDhlNzE1YjRkNTM3MmFhMDMwZDgxZTA5ZTFkODc2NSBsZWdhY3ktdHJ1bmsKKzE2NzY5IDcwNzlhYTA1YmJkMDU4Yzk1Njc5MDlmNjk2MzdkYWFjYmQ0ZTIwNzkgbGVnYWN5LXRydW5rCisxNjc3MCAyZWUwZjQ3ZjE0ZDNiMGE0NGQ1OGY2ZDZjYmVmNjBhOTA0M2IwMWQ5IGxlZ2FjeS10cnVuaworMTY3NzEgYTI1NmMxMDFiZjI3OTVlYzIxZWEyNDJjOTM1NTYzY2U0ODRjZmNhNiBsZWdhY3ktdHJ1bmsKKzE2NzcyIDU2MDE3NTgwMGEwN2U3MTJkZDgyNmRmODAzMTBiODkzZWM3Y2Y0MDkgbGVnYWN5LXRydW5rCisxNjc3MyA5MWRkZWVkMTJmYTcwM2E2Y2M0ODcyMWJiYjcwYTcxYTlkYzUzMDcyIGxlZ2FjeS10cnVuaworMTY3NzQgN2I3ZWU1ODkwMWZiMGYwYTdlMGYyZjA3ZDA5MmM3ZDg5MDZhZDFmMyBsZWdhY3ktdHJ1bmsKKzE2Nzc1IDg0MWNmOTAxMmFjM2NiZmZhYTE4MmNiZWUzYjlkOWJkMjlhYmI0YzggbGVnYWN5LXRydW5rCisxNjc3NiA1NWUzOTg4MjA1YjM0ODBiY2U3ZWQwNWVlMGNhZTE2OGQ0ZTNhMDQ4IGxlZ2FjeS10cnVuaworMTY3NzcgZDk5MTgzY2RiYmRjOTdhOWJiOTE4MGZhY2YxYWQ3NjNhZmRhZTI3ZSBsZWdhY3ktdHJ1bmsKKzE2Nzc4IDRlYWJkN2QzOTI1ZmM5OGM4OTc2MGRkMTJjZWFhYjM1ZTVhYmJiNDYgY25yaS0xNi1zdGFydAorMTY3NzkgODE1NWE4YjMwNDQ0YTRhNGE2ZWYwZjUwYTM5ODc5OGNkZmQxYTg4NiBjbnJpLTE2LXN0YXJ0CisxNjc4MCA2ZTJjMGQwYzNmZDU2ZDRhZTk3NGEwMzQxOWMwMDVjZWE4YzU0NzkzIGNucmktMTYtc3RhcnQKKzE2NzgxIGRlMmJmYzE1ZjllY2U1YTViZTQ1MzI0MmVkZWI0YjAwNWU2MWFjODQgY25yaS0xNi1zdGFydAorMTY3ODIgYWE0MjAyNzAyMjUyNjI3MTFlZDZlMDI2NzEwYTE4YjI1YjBmODk3NyBsZWdhY3ktdHJ1bmsKKzE2NzgzIGMyNThmMDVlYjg1ZGM5OGIzOGEzOTQ5NWViZjdiMTYxZDdjMGJlY2IgbGVnYWN5LXRydW5rCisxNjc4NCA0ZTI4Y2EzNDVjZmVlNzZmYmVkNTU1YjkxZGNiZTM5N2VhMDBmYTk3IGxlZ2FjeS10cnVuaworMTY3ODUgM2U2ZTNkMDVkMDBiN2Q1ZjE2Y2M4N2I2ZTZhYjNkZjMwYjAzZDYxMiBsZWdhY3ktdHJ1bmsKKzE2Nzg2IDMwNzEzZDUyODhkZjQ5YzQ0MjUyZTkwN2IxZmE0Y2JiYTcyYTAyODggbGVnYWN5LXRydW5rCisxNjc4NyA4YTRhMTc5NDE0ZDRhYTQ4NDFiMzQwZWQwOWNiZmZhZGU1NWI2NmU1IGF2ZW5kb3IKKzE2Nzg5IDU4YWM4MzA0MDFiZDVjOTQ5ZmUwNTFiMGI3OTlmZTNjZDhjZGJiOWYgYXZlbmRvcgorMTY3OTAgNWFkYTlmYTU0ODAxNWJlYjY5YWY1MDcyOGRiOGYwMzY1MmExZjY2MSBsZWdhY3ktdHJ1bmsKKzE2NzkxIGViOWEzNjE2M2E5ZWFhOTk0MzFjOWVkMzQwZDg4NjNjNTg0YTQzMTggbGVnYWN5LXRydW5rCisxNjc5MiBiMmNkNjZlNWVhNGMyNGI3M2Q1M2NmNmI4ZDkzMmQ5MWQxMDU5ODk3IGxlZ2FjeS10cnVuaworMTY3OTMgNjNkZTdmMDBiNWJjY2JlOWJhOTdjYmM0MGFlYTRjOWJjOGQ1OWRhZSBsZWdhY3ktdHJ1bmsKKzE2Nzk0IDg4ZjRlNzJkNzI0NTM5ZGRkMzBjZjQ0MzlkY2YwNzAwYjc2OWExZmQgbGVnYWN5LXRydW5rCisxNjc5NSA3MmY2ODJlYjlhZGJlNDFiMmE5MmU1NGQzMTg1NGFiY2M3M2U3NDJlIGxlZ2FjeS10cnVuaworMTY3OTYgNDNmNGY4ZDE1OTcxZWEyNDJmYjk0ZjM1NDRjYjQ3ZTJhY2IzNTk1MSBsZWdhY3ktdHJ1bmsKKzE2Nzk3IDFiMTA3YzliYTcwMjEzNjc5YTcxY2NlYTAwNDhiNjQ4Y2Q2NzIyODAgbGVnYWN5LXRydW5rCisxNjc5OCAyYzQyNDM5NTk0YjdlODAzNDkxMzY2NGI2OGQ1NWY4NjdkMjFkYjgxIGxlZ2FjeS10cnVuaworMTY3OTkgNjEzNDdlY2I5YjAxMzdlZTlmZDU4NjY1NDAzYjM1NjdmMzYzNWQ1YSBsZWdhY3ktdHJ1bmsKKzE2ODAwIDQwMGE1ZTNhYzc2Yzk0YWFiZDk1MTU5MDI4MDI4ZTM1MGMyM2MyODQgbGVnYWN5LXRydW5rCisxNjgwMSBmM2JmY2VlNzQ1YTc2MzZjZGRlOGIzODZhMmVkZmI1Y2FlM2I1MTc2IGxlZ2FjeS10cnVuaworMTY4MDIgZTVhNzRjZmNjOTcxYzA1ZWI4MjFjNjgzYzQ4OTY0OTk4NTIwOWVkYSBsZWdhY3ktdHJ1bmsKKzE2ODAzIGYyNzkyZWFkMWYwNmVlODg5ZGYyN2Y3ODg2ZGRiNDY3MTQyZTM4ZmUgbGVnYWN5LXRydW5rCisxNjgwNCBhOTU1ZmQ1ZGUwMzUwNTQ4ZGVjN2Y0MGQ1YzZhM2I2NGEzNDk1OThkIGxlZ2FjeS10cnVuaworMTY4MDYgYTI4NGVkMjFhMGRkYWU3MWVjZDVhODBmNzc0NjA5YTI1NGRiYzdiOCBOb25lCisxNjgwNyA3ODM0YTExM2NlMjQ4MDEwZGFjMDRmODQ4ZmE3YzM4ZDU4NjNiZjkyIGxlZ2FjeS10cnVuaworMTY4MDggOTdmNTM4OGE2ZGNlMDU3YWYwODU2YmJjYzI0OGFkNGE2ZTdmNDcyMSBsZWdhY3ktdHJ1bmsKKzE2ODA5IDcxNmUxYzRlM2Y3ODk0NzI2ZjkyM2E5MDc0M2UyNTM3YTYxNDI4NTAgbGVnYWN5LXRydW5rCisxNjgxMCAyZTg3YmJiODdhZDQ0MDVjNmQyMTE4ZGU4MmUwNzI1NmMxMTgxYjg2IGxlZ2FjeS10cnVuaworMTY4MTEgNjVjMWFiZjQ1MWRjMDUzMGY3MmYzZDZhZTY1NTgzOGU4ZWJiN2M0ZSBsZWdhY3ktdHJ1bmsKKzE2ODEyIGQ4MDY5ZWZjZDc2ZTQ4MzQ3YzgwZmVjNTcwOWZkZjk5NzVmZGJjOGIgbGVnYWN5LXRydW5rCisxNjgxMyAxNDNmZmJmODdlNTFiYjFiMjBhMTVlOGExNWYxMmNmZDFlMzk5Nzc5IGxlZ2FjeS10cnVuaworMTY4MTQgMzBkYmIzMGZmMDE5MTliMGU1NWVkMmYwZTVlNTQ0NWNjOGU2MjRjNyBsZWdhY3ktdHJ1bmsKKzE2ODE1IDQ0M2YzYzc3ZDg4Y2VkNjg3N2EyZDlmMzA0MGRhYTAwYmJhYTgxNjcgbGVnYWN5LXRydW5rCisxNjgxNiA1NWU0ZjQyODllMTg4MzNiNTcwMmY1MTVmNzU3M2E3ZjIzMzk0ZTQ0IGxlZ2FjeS10cnVuaworMTY4MTcgNzNkOTc2YWZhOGQ0M2Y0OWU5Y2YxNzE0MmJiMTFlNjBjNTk2YzVlOCBsZWdhY3ktdHJ1bmsKKzE2ODE4IDU5MWFmZTJmYzgyMzBiNjA5NGVmNzMxYzBjZDYxMGI2NzkxYmEyYTEgbGVnYWN5LXRydW5rCisxNjgxOSBmMzY5Mzg4NzRjZTVhYmI5ODEwZDcyZjEzMTFlMDUxODY5ZjdlMTI2IGxlZ2FjeS10cnVuaworMTY4MjAgOWEwNTI2OTZjYTEyMzdiYjcyY2QxNjU0M2QxZTE2NGY3M2MxNTgxYSBsZWdhY3ktdHJ1bmsKKzE2ODIxIDljZGI2Zjk3OWZhNTUwYWZmYjU2YWQ1OWY4YTNlZDhhM2NiZWMwODcgbGVnYWN5LXRydW5rCisxNjgyMiBlZDM2OWYwYWEzMmIzOTYzYWI5YTQzY2Q4YTJlYzUzNGJmN2QxZGI5IGxlZ2FjeS10cnVuaworMTY4MjMgZWRhMDlmODI0YTlmYjkwOGM2YzUxYThlYjg1ODI3YTdkMTkxMTdkZCBsZWdhY3ktdHJ1bmsKKzE2ODI0IDZjOTFhZDljMGUwNmMzY2ViODU5NTJlODg0NzNiNGE5ODc4YTcxYWYgbGVnYWN5LXRydW5rCisxNjgyNSBmYWE5NzBmMTU0MGZmOTRlYjg3NzFlYTFkMGMyMWUwYmZlOWI4MGIwIGxlZ2FjeS10cnVuaworMTY4MjYgNDljN2E0ZGQ5ZjYxNWQ3NDNkMzM2ZDZjZWIzZGUzM2ZlYTZlZmRhMSBsZWdhY3ktdHJ1bmsKKzE2ODI3IDQ5YzgzMDUwMDQ4MDFlZGM0MWFhYjU5YjkzYWE4ODExYWU1Y2I4NDcgbGVnYWN5LXRydW5rCisxNjgyOCA4MmY3OTYxOGI0NDI4NTE4MDZjNWQwYTQ0NjE4MzI2NjExYmEzNzg4IGxlZ2FjeS10cnVuaworMTY4MjkgNmM3ZmE1MjM3MjZmYzU1NmZhYWYxMjk4YTcyMjY2MTA5MzVkMzE1YiBsZWdhY3ktdHJ1bmsKKzE2ODMwIDNkNjhkNWJjY2Q0MDZlODhkNWI1NDdhYmU5ODVkNWUyZDNlZjFmODkgbGVnYWN5LXRydW5rCisxNjgzMSA5Yjk0NjFhNjU2ZGRjNTU3YWMzOWE3MzllYzVhMjRiZGM4ZTczN2VhIGxlZ2FjeS10cnVuaworMTY4MzIgOWEyOTE4ODlhYjVmMTc4ODQ2N2NlMjY1MDFkOWQ3NzFmYzdhZWUwOSBsZWdhY3ktdHJ1bmsKKzE2ODMzIDEyOGY2NDExOTFjMzNjODk1MzI1YmJmODNhNzdlZmM5YzY1ZGE0OTEgbGVnYWN5LXRydW5rCisxNjgzNCAwZDgwNWUyMzlkOGY0NGNmZTIzYTZkODZjOWQ1Zjg4ZWEzNzZjMjlhIGxlZ2FjeS10cnVuaworMTY4MzUgNTk4NGMzZDc2MWY3ODQ0MmUyODA5MDM0Yzk1OWQ4NjhiODE5M2U0ZSBsZWdhY3ktdHJ1bmsKKzE2ODM2IGI0YjI2MTJlYTMzMzBmZDdjYmVjYTFmYzZhNDg2NWNjNWE4NTZmMTYgbGVnYWN5LXRydW5rCisxNjgzNyA1YjM0YjcwZWNmMjJmZGI0YTkzZjA5NTEyMGIyZjU5NDlmYTM1MWQyIGxlZ2FjeS10cnVuaworMTY4MzggZDQ0NjAzZjJiOTI4OWI0YTY4Mjc5ZTA1MGQzMTc5MmQwODE4NzNiZiBsZWdhY3ktdHJ1bmsKKzE2ODM5IDc0MDI5MGE1NjE5MGExMzNjZDNmZDI1MzNiMmViZjY3N2E0MGRhODIgbGVnYWN5LXRydW5rCisxNjg0MCAwNDYwY2NjZWZlNGUzYjZlNDhjNmRmM2Y1Yjk4MTlmOTM1YWFmMDM4IGxlZ2FjeS10cnVuaworMTY4NDEgYWUyMjhhNjQyOTNlMTJkY2JjMTI0NmRhYTJiNmIxYTg0NWM3OGVhYyBsZWdhY3ktdHJ1bmsKKzE2ODQyIDIxOWNlOTYyMjM1MjUxNGRiZjIyNDE3MzczOWVkMTMxOGJhNWYzMzUgbGVnYWN5LXRydW5rCisxNjg0MyA2N2E1NDQ4YzlhMGYyNWE3NDFjNmYwNWRmMDFmZTQwZTdkZWQ2YzMzIGxlZ2FjeS10cnVuaworMTY4NDQgNWIwZjNjNDAwNjBmYzE4MjAyZmE4MmY1MmE0ZDRjNjYyOTBjODI3YyBsZWdhY3ktdHJ1bmsKKzE2ODQ1IGY1ZDhlNzNkNzdiN2Y1YmJiNjU4YTZlNDJkYWQ3NjIwMDVlNTFhZmMgbGVnYWN5LXRydW5rCisxNjg0NiBhOTZkN2M0NWQ5NjFmMzM2MjkzYWFhZWNmMjU0NjgxOWQ4MmExMWViIGxlZ2FjeS10cnVuaworMTY4NDcgZDI2Y2M1YmRkMjQ4MjFlNmFhNmI1NGJiZTUwNjRhNDFjOGJkZGYyYSBsZWdhY3ktdHJ1bmsKKzE2ODQ4IDc3YTYxNWM5MjE3ZTE5OWU5M2NkNjY0NzA4ZWExZjg2YmNmNDdmZDUgbGVnYWN5LXRydW5rCisxNjg0OSAzZGRmYTJkNjdiZTQ2N2NjMmY0NWNhMGIwMWRiZTdiZjI0MWE1YmJjIGxlZ2FjeS10cnVuaworMTY4NTAgOTFjNjU5OTY4YTgwMThlMjYxZmZiM2Q4ZTI0YTY1YWZlYTI5ZGY4ZCBsZWdhY3ktdHJ1bmsKKzE2ODUxIDc5YmY2YjM4YjdkNWVlOTY4YjY0ODk3MThkOTQ3MzFmOWQyMDhkMWYgbGVnYWN5LXRydW5rCisxNjg1MiAzMjA0NWQ0MjNhNzg2OWYwMDI1NzJiMWIyZmJlYWIzNDkzN2M1OTdlIGxlZ2FjeS10cnVuaworMTY4NTMgOTFmODQ3YTc4M2QyYTAyN2Y1ZjVjODI1OGZhMGNhZmNjZmU3ZWQ4YSBsZWdhY3ktdHJ1bmsKKzE2ODU0IDE4Mzg1MTcyZmFjMGI3MDk5YmQyZDIyNjRkZjYxNGVkNDQ2NmYwODMgbGVnYWN5LXRydW5rCisxNjg1NSBhMjlhOGNmNWU2NmRkM2Y3ZjE2NzdkZWJiNTM4MjkwZjE2M2Q2NTc1IGxlZ2FjeS10cnVuaworMTY4NTYgODMwODA1MzlmN2I0Yjg0OTkzOGFjMThhYjliMjZlNmE0ZDNhYjhmNCBsZWdhY3ktdHJ1bmsKKzE2ODU3IDUzYWMzZTIwNjJlZmE5Njg1NWY5MDM2MmRkMTA0Y2RmMzc5NzFkOTggbGVnYWN5LXRydW5rCisxNjg1OCA5OGUzMjU1NDg2NzkwMjY0YzJmZDA2ZDM3N2NiNjYyNDY0ZjVmMjY0IGxlZ2FjeS10cnVuaworMTY4NTkgMDIzNDY4MTE3NTE0ZjQ4ZWRlNzJjMTQyMTI0NTViZDEwNDE0NTQ2ZSBsZWdhY3ktdHJ1bmsKKzE2ODYwIGE5MDVjNWFhMDY5MWNkYjllYWE2YzQ1ZWMxNzJmNmNkOWI4YTg4NmIgbGVnYWN5LXRydW5rCisxNjg2MSBjNDQ0NGY2OGViZjk2NzczZmJkYWJjOWEwODc1MGRlYTJiZWJkNzM2IGxlZ2FjeS10cnVuaworMTY4NjIgMWY5NGExMWQyYjgwYmY0ODc4MTRiYjY3YTY1MDhmZWNlZDFhZjM4MyBsZWdhY3ktdHJ1bmsKKzE2ODYzIDBhODdjNWI3NWZlM2Q1ZWY0ZDY0YTljZGIyM2Y1YTFiZWZkYzY0MTAgbGVnYWN5LXRydW5rCisxNjg2NCA4Y2Y1NjE0N2Q3YjVkYmY5ZmI0NzYyNDdkMWE5ODU3ZjE1NDk3Y2Y4IGxlZ2FjeS10cnVuaworMTY4NjUgYjkxMzEyNTYxOWM4YmI3NDBmNTEwMTZmZDEwOWUxZmFhNTcxNjljYiBsZWdhY3ktdHJ1bmsKKzE2ODY2IDZlMmRiYTQ1YzgzZTVkZTQxM2M4NmM0YzdiY2Q3NzI1NDQ5OTc4YTkgbGVnYWN5LXRydW5rCisxNjg2NyBmZWUwZjQwMmVjY2I0ZTA4NTg5Yjg3MTFjYjFjYmI3NzMwZjhhMjgxIGxlZ2FjeS10cnVuaworMTY4NjggMjc1YmM0ZjlkNTBkMTc1ODgzMGNlOTQ2MTZjZDE4NzY1ZmVlODQ3NSBsZWdhY3ktdHJ1bmsKKzE2ODY5IDgwYTQxOTI5NDJjZTk1ZjIzYjVlM2NiNDY0OWQyODQ4MjAxNTcyMjAgbGVnYWN5LXRydW5rCisxNjg3MCBlODMwMTYxMmU3ZDgwYjkzNzU3MjNlOWFhNzFmMmZjNzI2NjY2MzU4IGxlZ2FjeS10cnVuaworMTY4NzEgN2E2YzU4NjlmNDU2NjY0MmQ5NDljY2RhMGVjYzY2MGZkMTZiNWU0YyBsZWdhY3ktdHJ1bmsKKzE2ODcyIDYzNjVhODViZjRmYjFjZWYzOTAzZjgwMzM4NTZiNGZjMjJiNzJjMGIgbGVnYWN5LXRydW5rCisxNjg3MyBjYThkYzFiYWU2N2Q3ZGM5N2E3N2YxZTI5NGJhOTViMDkwMTMyNmVlIGxlZ2FjeS10cnVuaworMTY4NzQgZjY5YTM3MjQwOWZjMGYwMTJkMjRlM2RmODU0MGIyOWJkZGQ1NGEzNSBsZWdhY3ktdHJ1bmsKKzE2ODc1IGQwMzQ4YTI2YjA5MzllYmFiY2E2MzA1YTc4ZDRjYTZhZTBmMWUwNTAgbGVnYWN5LXRydW5rCisxNjg3NiBkYzJkZWRjYTkzZjcwZWNiMWZmNTcxYzU2MGVhMDc0YzZlN2EwOTJkIGxlZ2FjeS10cnVuaworMTY4NzcgNjUzMWZiMWM4NzlmZTkxODg3Y2U3MTBjMjI5MmJjODlhNmU4ZjAyZCBsZWdhY3ktdHJ1bmsKKzE2ODc4IGM3MjJiNGM0MjI5YTYxMTU0YzliZmMyZWZjMWNjZGRiZjYzZGJjZTAgbGVnYWN5LXRydW5rCisxNjg3OSAxN2I3ZmM0NDAxOTViZDZhMDczODg5NWM2NzJjMjk4ZTQ5NDQ5MGEzIGxlZ2FjeS10cnVuaworMTY4ODAgYzdmZTc1NjllNGUxNzdkNzU2ZmZkMjZmNDU0NWQ3MWMyYWY3MGI2ZiBsZWdhY3ktdHJ1bmsKKzE2ODgxIGM1MGZlZmZhZTgyMjA5NDY4ZTQ5MzM1NTUwOGZiMGMyZWNkM2RiYTkgbGVnYWN5LXRydW5rCisxNjg4MiAyNWVlYTg4MDQ3ZTllY2ZjY2FjMjc5YWUzMzYwOWZiZWFhYjgxZGMzIGxlZ2FjeS10cnVuaworMTY4ODMgZGMyZGI0NTYyZDA2MDJkN2U4NGNjNGQ5ZjJkYTE0NDkyZGYxZTI0MSBsZWdhY3ktdHJ1bmsKKzE2ODg0IDAzNDAxYWYzNmI1YzBhMTJlNzliNTI3NjQwM2UzOGRjOWU3Y2ExNGEgbGVnYWN5LXRydW5rCisxNjg4NSA5MjBmYzI4Njg1NDM5NmZkMmExMzVjYTVhYzYzNGNkMmEzMWIzZTcyIGxlZ2FjeS10cnVuaworMTY4ODYgMjY2ZDdlYWYwNjllOGU3MmIwMTBlNjUxNjllZWUxZDllYWJjY2FlNiBsZWdhY3ktdHJ1bmsKKzE2ODg3IDFmY2Y3YjQzOGNhYjliNDkyOGIzYjJjYTMwYWY5Y2M1NDA2OTBmNmIgbGVnYWN5LXRydW5rCisxNjg4OCAwMDg5YjM5ZmU0OWNiYzMyMzg4ZjBhYWExZjdlNjIwMmExMTViZTk3IGxlZ2FjeS10cnVuaworMTY4ODkgMzE0ZWM1OWU0ZTE0Y2UyZmU1OGZiZGM1ZWUzM2MxZmZlYjQ2ZGMzYSBsZWdhY3ktdHJ1bmsKKzE2ODkwIDcxM2RkNzZiZTM3YmFjNzgyYTc2MjFiN2Q1MzhkYWI4MzZiZmU1NGEgbGVnYWN5LXRydW5rCisxNjg5MSBjNjRhYzgzZDNmMTgyMjVkZTQ5YTQ5YTdlOTgyOGVhNDMxOTJhZGY1IGxlZ2FjeS10cnVuaworMTY4OTIgZjg4NDMxMDFjOTQzYjhhN2I1M2UxMjQyZjFlMWVkNmRiZTJlMzQ1ZSBsZWdhY3ktdHJ1bmsKKzE2ODkzIGI2Nzg0OTFmN2UxMTZmODUwM2QzOTAzMmRhMTk0YzI3YjNlYjY3NDQgbGVnYWN5LXRydW5rCisxNjg5NCBiNjUyYTlhYTk0ZjEzMzUxYTEzNmNjY2E1MTk2N2E3ODU2ZDFlYzU4IGxlZ2FjeS10cnVuaworMTY4OTUgNTFjMmVlZDYwMTU5MGNmODNiMjVmNTc0ZWFhMjI3YTExNjE4ZGY4YSBsZWdhY3ktdHJ1bmsKKzE2ODk2IDU3NzhmOTNjZjIyYjRjMjE4NTdlZjU1NTQyMDU4MTM5YWUwZGEzNDAgbGVnYWN5LXRydW5rCisxNjg5NyBkZTc0MjMwM2M0NTY5MTBkNmRlMWI2NWE1M2ExZmM2YjI1MjNhZjBhIGxlZ2FjeS10cnVuaworMTY4OTggZTY3OGU1ODA0OWI0YzU0MGQ2MTNmNTcwOWYxNzE5ZThhZmIzNWQ5YyBsZWdhY3ktdHJ1bmsKKzE2ODk5IGYxOWJlYTY4MWI2NjdjNDM4NGU4NDlmZGYwNWE5Nzk5ODZjM2IyMTUgbGVnYWN5LXRydW5rCisxNjkwMCAwMmFiZjc3MTdjOTZlMTc5ZDljM2Q0ZTUxMDJkNWE2YjA1ZTNmOTkwIGxlZ2FjeS10cnVuaworMTY5MDEgMGE2M2I0Nzg5ZGZjZTRiZTIwYzlkYjVhNmNkYjZiMDUzNjA1YWY2NiBsZWdhY3ktdHJ1bmsKKzE2OTAyIDA2MTJhMWNmYmJmNjg5NTJhNGVlMjE2YWE0NWFlMjA2NWEwNzRkYmYgbGVnYWN5LXRydW5rCisxNjkwMyA1YmY1NjM5MjQxOTQzODM2M2Y3MWJmZTIxYmQ1NTI1NWQxYzE3YjI4IGxlZ2FjeS10cnVuaworMTY5MDQgZDYzOGY1MzVmNDAzYzhlMThlZWU4YTg0YzM1Nzk0Y2IyMjA4MDBiZSBsZWdhY3ktdHJ1bmsKKzE2OTA1IDU3OWU1YzcwMzVlMmQwMDM5ZDJiODlhMjI0NTA3OWYyNjA3YWU0Y2UgbGVnYWN5LXRydW5rCisxNjkwNiA5NTM0NjE5ZGFhYTEyZjc1ZDY1ZTM2M2EwMDRlODk0M2YzMjdiMTdmIGxlZ2FjeS10cnVuaworMTY5MDcgZDNmNWI0NTNhZGU4NGUxZGVhNmFlMjA1NzI2ZmJkZjM4MDUzZTc2OSBsZWdhY3ktdHJ1bmsKKzE2OTA4IDQ2NWM3YzJlOGYyMTQ2ZDc2MWZjNDA2NzYwMGM2YmFkNDVkNGM4NjUgbGVnYWN5LXRydW5rCisxNjkwOSBlYzZhMGI0YTY0NzlhNTU4MTc1NTE4MmUzNmE3ZGIwNjQyMGFhMWJhIGxlZ2FjeS10cnVuaworMTY5MTAgNjA2NzE0ZmFlMWI1MDdjOTA5MWE2ODE2YmJiMTE1OGVlM2JmYWI4MCBsZWdhY3ktdHJ1bmsKKzE2OTExIDg4ZDExZjQ4YTM4NDViNDdmMTE4ZTkyOGY3MjhhNWVlNDYyZjQwNjMgbGVnYWN5LXRydW5rCisxNjkxMiAwM2RiN2IyMzkyYWU4OGE0MDJiODI0MGQ5MjhjZTA1OTE5ZDY5NjlkIGxlZ2FjeS10cnVuaworMTY5MTMgNzQ2MzhkMjBjNGZkMGY0MTY4ZjRlY2VjMzZmMTA1NDMyZWU2OTE0ZSBsZWdhY3ktdHJ1bmsKKzE2OTE0IDQ0ZTY2NmNjOGMwN2JkZWVjMmJhMTQ1YjdkOThjYjY2MWJkZjEzYTAgbGVnYWN5LXRydW5rCisxNjkxNSA0Njg0ODExMzVjNDkwYjFhMzE5NDFmNTU1MGFlZWM5OWQ5ZWFiYmEzIGxlZ2FjeS10cnVuaworMTY5MTYgMmRlMGNjMTc0YzNiZTkxYWU0NTUwMTliMGE5NWQ0MmVkZGQ2NTIyNyBsZWdhY3ktdHJ1bmsKKzE2OTE3IGUyZWQ2OWI4MmQ4ZDcxODE4NTI4ZTIxYzllNjBjMDRmOGZhZmI5NzUgbGVnYWN5LXRydW5rCisxNjkxOCAyOTYzNmYwMjBkNGM3YjRhNWIzYWYzNDRjNWRjZDQ2Y2EzYTkxYjRkIGxlZ2FjeS10cnVuaworMTY5MTkgZjY1N2RjOGZmMjVlOTNiODc3MzA1YmJjZmM0NWUzNjAxOTFiYjMyNiBsZWdhY3ktdHJ1bmsKKzE2OTIwIGRhNjliN2QxZjIwZjBhNmNiYTRhZjJmMDM2ZjJiN2Y0OWNiMjAyOWYgbGVnYWN5LXRydW5rCisxNjkyMSBkODA5YjliNzViOTkzOTMxOWY3NDg1ZTQ2YjI2MjJlYjk5NTgwZDAxIGxlZ2FjeS10cnVuaworMTY5MjIgNGRhYzllMzE0OWJlYWM5OTBmZjEwZTQ0NjhhMTBmOTJiOWU2NjUxZiBsZWdhY3ktdHJ1bmsKKzE2OTIzIGU5NDM0MmVlYTRmODhlNDJkNWZkMjNhOTNkMmMzYTMxMTY0ZGViOGEgbGVnYWN5LXRydW5rCisxNjkyNCAxN2QzMTI4NDc4YzNiOTNmMWI5ZDI1ODgzOGRiNTQ4ZDFlZDg5MDQ3IGxlZ2FjeS10cnVuaworMTY5MjUgMzE0OGVmZTU2MDZmYzE4MThjMzNjY2UzODEzNWYyZjYxMTI1ZTA4OCBsZWdhY3ktdHJ1bmsKKzE2OTI2IDBhYmZjYTAwMzVkY2M4MzJmYTE1YzBlMmQzMjUwY2MwODFjOGZhY2MgbGVnYWN5LXRydW5rCisxNjkyNyA4N2I4ZjBlYTUwZThkMTU2MDY1MzQ5NjNiN2JkZWMxOGJiNmQ5NjBhIGxlZ2FjeS10cnVuaworMTY5MjggM2VhMjNlM2MxYjA2ZTJhNjQ5ZTMyNjlkMmE5OWE5MjY0MWIzY2FiZSBsZWdhY3ktdHJ1bmsKKzE2OTI5IDRlYWNjMGM5MTIwOTBiYTBlNTZmMDYwZDYyYTFkMGUwMDUyZWI5YTAgbGVnYWN5LXRydW5rCisxNjkzMCAzYTNhZGZkZGMyOWQxZjA4MjNlNjE1YWM2NzU3YjllY2E3NjczMmYyIGxlZ2FjeS10cnVuaworMTY5MzEgMGY4MzQxZGNjM2NiYzZiNGFmNjg2ZmIzZDk4OTk2NmZmMGM0NWFkZCBsZWdhY3ktdHJ1bmsKKzE2OTMyIDkyOTgwOTIwZDVlZDEwZGU1YjVmZWM3MWY3MTExMDUxNmU3ZjFmODQgbGVnYWN5LXRydW5rCisxNjkzMyBhYzg4MDk5NTlkMDE2NDQxNDBlNzIxZGM1MTQ5MjdlMTE3ZWI5ZWEwIGxlZ2FjeS10cnVuaworMTY5MzQgNDRmNGE4NGE4MGE4MjVkOGJmMGMwODMwOTQzZDU2NDQ1MTUyMzUyZSBsZWdhY3ktdHJ1bmsKKzE2OTM1IGY2MzM4ZDc0ZGNhMTA3YWJhODZlNDdlNmNlNWExOWU1ODZhMWZiMTkgbGVnYWN5LXRydW5rCisxNjkzNiA4MGQ0NjY4ZjFlMTAzN2I1MmQ0ODZiNWU5OGRhZjQ1Mzg0OGVmMGZhIGxlZ2FjeS10cnVuaworMTY5MzcgYzE0Y2EyMGQxZmM4ZDk1YjUxMWIyMmYwZjNiMGVkYThlM2E5ZGM4MCBjbnJpLTE2LXN0YXJ0CisxNjkzOCA3M2M1NjRlNGEwZjM1MjdhZWJkZTY2YmNmYjRiMjczZTQzZmI1ZTQ1IGxlZ2FjeS10cnVuaworMTY5MzkgZThhZTcwYzNhYmI0M2ExNzljZDlkMmIxNzcxNGZlMjg3ZWM4OWY2NSBsZWdhY3ktdHJ1bmsKKzE2OTQwIDI2ODk2N2M5OTM0YTA1ODY0MTZjM2I0ODZlNzliZjUxYjk3MTk2MzUgY25yaS0xNi1zdGFydAorMTY5NDEgZGM1ZjY3ZThhMmFmMTkzODkwZTNiZDA1NWVhOGY4ZmQwMWU5MWJmMyBsZWdhY3ktdHJ1bmsKKzE2OTQyIGNlZjRkYTQxNDdjODNkNTg5ODkzOTJlNmZjNzhhMGY1Y2RlMTQ1NzcgbGVnYWN5LXRydW5rCisxNjk0MyBmZDNmOGFjZjEwM2QxZTdhM2Y4ZjAyZWVhZDk0OTQyNTAzNTU3ZmIwIGxlZ2FjeS10cnVuaworMTY5NDQgNDFlYjc1NWU0ZWQxNTNmNjU4Yjg2M2E5Y2U2YWJiMTNjMTUwYzBjNSBsZWdhY3ktdHJ1bmsKKzE2OTQ1IDI2NzY4ZTIxYWNmOTBlY2Y1MDJkNWQ1YzY1NDlhNGY2OTNiYzM2YTQgbGVnYWN5LXRydW5rCisxNjk0NiAwMzk1ODNjMDkwYzQzNDI0YjlhODQ0MzBjMWU3OTVkY2ZkMmU5ZGVhIGxlZ2FjeS10cnVuaworMTY5NDcgMmMyYWU4NmRmZTg3NzI1OWFiMDkxZTljOWMzYTYzNTQxNjAzYWE2ZiBsZWdhY3ktdHJ1bmsKKzE2OTQ4IDdhYWQ3ZDliNjE2ZTlkZGJkZGJiYTA0ZjJmYmVhOTk1YTIwNTllZmYgbGVnYWN5LXRydW5rCisxNjk0OSA0NDFkYTJjNWRlNDNhOTUzYWNiNjVjNjU5NzY3MjhmODZiNjg5ZWRjIGxlZ2FjeS10cnVuaworMTY5NTAgNDQyMTIzMzZkNzFlYTk3ZWZlN2FlMjM3NDMyZjk3NDMwMzhiNDcxMiBsZWdhY3ktdHJ1bmsKKzE2OTUxIDNlYjEzNWQ2MmUyYWVkMmMzMWZkYzMyN2NkM2MyYjI1MGZhODZmZjggbGVnYWN5LXRydW5rCisxNjk1MiA3NmU3MzM4OWMzNDA3MDEyMGU2NjJmMjdmZTU4MjRiZjFkZTUwZTcwIGxlZ2FjeS10cnVuaworMTY5NTMgOTk2Y2MwNjc1ZGI2Nzg2OWU5NmUwMjZiZjk4NGJkNmJiNWEzZDBkMyBsZWdhY3ktdHJ1bmsKKzE2OTU0IGFhZTM3ZGM5OWY1NzU1NzA4Y2QxYTAyOTZlNjJiNmUyM2M0ZWEwOTEgbGVnYWN5LXRydW5rCisxNjk1NSAwNzA4Y2FjNTlkZWYzYTY2ODQ2ODMzYmY1ZDg2ZjQyNjRlNDA0NDk0IGxlZ2FjeS10cnVuaworMTY5NTYgZjZlNWNjMmFmNmYxOTdhNDQzMDMxNWIwZmVkMzk1Zjg5MTY1YzhmMiBsZWdhY3ktdHJ1bmsKKzE2OTU3IDMxMTZiMGI5MTJlOTc1YzYxODY5ZGE1OWU0NjAwNGYyNzE2NTEwNzUgbGVnYWN5LXRydW5rCisxNjk1OCBmN2E4YzQwYjM4ODBjNDEzNzMyYTAxMWU0ZTA3M2E2YzZiM2RlMTAxIGxlZ2FjeS10cnVuaworMTY5NTkgNDI4NzI5ZmY4ODI0OWZkZWI1MTk3YjZhMDAxZGE0Y2ZjZDU3NzUyYSBsZWdhY3ktdHJ1bmsKKzE2OTYwIGY3MDQyNGViYjM5YjRhMWY0OGMyMjQwNTg4ZGI0ZmU4ZjI5MmFlODUgbGVnYWN5LXRydW5rCisxNjk2MSAyMmI1OTBmOGNmNTM4MjQxMGUwYzM1ZDQwYjAzZmIwZWE5MzkwM2NmIGxlZ2FjeS10cnVuaworMTY5NjIgMzFjZGE4N2U5ZmY0ZWE0NzMxOGE2OGM0M2Y5N2VkZDI3MzFiMGYyZiBsZWdhY3ktdHJ1bmsKKzE2OTYzIDczZTQ4ODQ3MTI2MzA4YjIwYzc4OTlmOTIxZGE5YWIwNTI4NmJlM2IgbGVnYWN5LXRydW5rCisxNjk2NCBmNWY4Nzg0YTRjMjdjOGE1MTBhZTNkZGVmYjIzZjc0NDc0ZmU1YTg5IGxlZ2FjeS10cnVuaworMTY5NjUgMjFlYzY5YTU2MjI4ODYzZDg5Zjg3YzZkNDk3YWQyMTY4OTZhOTVlYSBsZWdhY3ktdHJ1bmsKKzE2OTY2IGI4ZTVlOTMzODAxZTM2YWZiZDM1YzY4Yzg2ZmIwM2U2ODcwYTZmZDYgbGVnYWN5LXRydW5rCisxNjk2NyA4ZGNkZGNmMTMzMGE3N2Q1ODJlMGI4ODlmYTUxMjAyM2Y0ODcyOTJlIGxlZ2FjeS10cnVuaworMTY5NjggMzAyZGZkNTNiM2M4ZmMyMjU4YWQ4OGIyMTc1MjBhZDM1YTljNjE3OCBsZWdhY3ktdHJ1bmsKKzE2OTY5IDcyZDhhM2IyMDNiMTRmNmIxZGI2ZjQzNDI5OTAyYTQ1ZTU0ZTc3MzAgbGVnYWN5LXRydW5rCisxNjk3MCAzZGE1YmYzYzVmMTU3NDg2NGUxODQzYzI0MWFlODE4NmI3ZWRhZjFhIGxlZ2FjeS10cnVuaworMTY5NzEgNDA0NDdiNjcyMDY0YjQyMDQ5OGU5NmE3MDNhNTRiMjMwOWUwYjUxMiBsZWdhY3ktdHJ1bmsKKzE2OTcyIGVjM2UwZmUxN2IzZDc3YTk5YzM5ODdjNTU5ZjY0ZDQzMjIyZDdlYzAgbGVnYWN5LXRydW5rCisxNjk3MyBkYWQ1NGQ0NGQ5ZWNjMjczNDQ2NDcxYmUxMzhmYjk2NzM4ZmU5NDNhIGxlZ2FjeS10cnVuaworMTY5NzQgMDUxZGNkN2NkMTk5MWRlOWUxNmVkMDMwYWFlNmIxZjA0YmMwZTYxMSBsZWdhY3ktdHJ1bmsKKzE2OTc1IGU3YzhiNTk4ZmY3NWZhMjM5NTM2NmZkNWYyMWQ4MGM3NDEyNDg1ZjMgbGVnYWN5LXRydW5rCisxNjk3NiBjMTJlNzk2YmM0YjY3NWIwODQ5MDk1MDY2YjFlMGY2MDRiN2VkYTZkIGxlZ2FjeS10cnVuaworMTY5NzcgNmJmMDYxYTJmYzc4MDJmNzZhZWM2M2I2ZWZkM2Y4NmI2NzVmNzA2MSBsZWdhY3ktdHJ1bmsKKzE2OTc4IDU0NjhiNmUzYjk2YTdkMTdmNTliMDU1MWY0NzUxNGQwODE4ZGI2NTUgbGVnYWN5LXRydW5rCisxNjk3OSA1MmZkNDk2ZDM1MzIwOWM1M2Y3YTdhYzAyZmMwNjQ3NTMxNTdiOGQ4IGxlZ2FjeS10cnVuaworMTY5ODAgMjdkN2Q4OWM3NzRiMTAwMDNhOGU4MzMzMGJjNjNmNjQ0NGZmMDYyNCBsZWdhY3ktdHJ1bmsKKzE2OTgxIDFiOWZkMGNiZDkxNDk0N2NjNDIxYmE3ZTQ1YWEwOTNkN2JhOWFmMDAgbGVnYWN5LXRydW5rCisxNjk4MiBkYmE0YWVjOTcwZTZjZGI1MGQxNzY1MTJjMWI3ZjBiYzYwYWI1MjE2IGxlZ2FjeS10cnVuaworMTY5ODMgMDE4NDY1NjhkMTQ3ZDE2NzA3ZWQ5NTkyZDg2OWI5MDZjZjFhZGQwZiBsZWdhY3ktdHJ1bmsKKzE2OTg0IGU5YzJmODMwZjliYTUyYmY1OTY4Y2M3Y2QyNjhkMmNlNzE3NWEyZGUgbGVnYWN5LXRydW5rCisxNjk4NSA1MWEzM2EzYjJiYTkzNTQ1N2ZkNWZjODZjYTc5ZGVhMTRmMGM3YTcxIGxlZ2FjeS10cnVuaworMTY5ODYgOTFkZWFkZmRhZTM2YmFhZTZhMmFkN2NjZTJmOWY2NDE3YzIyMzdhMCBsZWdhY3ktdHJ1bmsKKzE2OTg3IGI4ZWFkZWVkOGVkMzUxODAzNjY0YTZiODc4ZjM5OTFmZjczYWYzOTAgbGVnYWN5LXRydW5rCisxNjk4OCAwMTkyNjViM2E4NTY1OWM0MjY5YTljYWQ3ZjUzODgwMGNkZmY2YWYzIGxlZ2FjeS10cnVuaworMTY5ODkgYzU2MzcyYWQ5MzQzNWYxZmNjNWNkYzUwZWI1OTkwZTExMzUwYTE1YiBsZWdhY3ktdHJ1bmsKKzE2OTkwIDJiNmE2Mzc1OWI5N2NmOTdmM2U3YTE4NDVkNTdmMWZmZDRiYzY4YWMgbGVnYWN5LXRydW5rCisxNjk5MSBmNjZlODYzYTJhNWIxZTQyN2Q2ZmMxNzA1MjNiZWMyNDJjZTJjNjk2IGxlZ2FjeS10cnVuaworMTY5OTIgMzViNzk4OWJhMjBjOGExNTNhNDdjMDE0OGJjNjI0ZmMxZDJlZmIwNyBsZWdhY3ktdHJ1bmsKKzE2OTkzIDhkMWEwNTlhZTk5ZDQ0ZTIyNmEzZTI1MzA4YjljYTRlZjg5MDBlN2YgbGVnYWN5LXRydW5rCisxNjk5NCBhY2M3Mjg1OGViNzJjODM2MDE2OWZkYjFjOGExNjlhMTMxNjliNzkyIGxlZ2FjeS10cnVuaworMTY5OTUgYWJiYzAyNzk1YzRkZWZlY2EyOWU4YzY4NThhMTVlZmZlMTgyMGNhMSBsZWdhY3ktdHJ1bmsKKzE2OTk2IGRmZjIyZDRhNDhkYWUzNmZiMGE4YTRkYjI3ODBmZjliZGIzZTZhYzYgbGVnYWN5LXRydW5rCisxNjk5NyA1NzcyYzQ5ODNkZDg3ZDM4MjAyOTA4N2RiYzZhYWM0NzdhMWUyY2FkIGxlZ2FjeS10cnVuaworMTY5OTggZWE3MDQwYWI3Mjg2ZjIyYWNiMTI2MDFiODU4YjIwODJmN2NjZWQzNCBsZWdhY3ktdHJ1bmsKKzE2OTk5IDg5ZjgxNTNmZDFiYTE2MWY4MjNmMTk2MWUzZjRhODQxYjg1NjIyYWUgbGVnYWN5LXRydW5rCisxNzAwMCBjODVhODBkYjY4NDViMDYyZjU3OTk0YmI1ZWFhMGNiYzkwZjg3MjQ2IGxlZ2FjeS10cnVuaworMTcwMDEgMjM4NWVhNTg3MmUxOTNiZTU0YmI3YTBkZmE4YjUzMjYyMWExM2Y2NyBsZWdhY3ktdHJ1bmsKKzE3MDAyIDI4NjNmYmIxMzVmMWY5Y2M2Yzk3ZmY0NTEwZTRkNGRlNmI2OWVlOGUgbGVnYWN5LXRydW5rCisxNzAwMyA5MzAxM2U0YmJlMDJlMjRiMDJjYTAzNzcxNWIzNjQ1ODA1MWI2NGRhIGxlZ2FjeS10cnVuaworMTcwMDQgZTkyMTIyOGFmNDM1NjdlZmM5MDEyMzU4N2UwMTZlOTE0NWYwZWI1ZiBsZWdhY3ktdHJ1bmsKKzE3MDA1IDU4MTQ2MGZjZjE0MjU2MDBlNTFhOWE0MTI3NzhkYTZiMDBjZjVhNTUgbGVnYWN5LXRydW5rCisxNzAwNiA2MjIzMzk3YmQ2YTI2NjE4NDMzNjIyMDlmYTY3ZTNiODE5ZmUzZWRjIGxlZ2FjeS10cnVuaworMTcwMDcgMjc3ZmRkOTY0N2ZlMDhiMWE3YWEyN2I4MGFmNWViMTYyM2I0NDRlMiBsZWdhY3ktdHJ1bmsKKzE3MDA4IDRlNjZhM2FiNzU3ZGEzMmY2NjgxZGVjZWJlZGYwZDAwNWMzODlmYmYgbGVnYWN5LXRydW5rCisxNzAwOSBiZDNkMTQxMWI2NmMxZDQwNWQ2MzYyZDU0OWI5ZjQ4MTc0ZmJiOGE1IGxlZ2FjeS10cnVuaworMTcwMTAgOWJmMTU5ZmY0OTEyOTIzZWQyZDQ1MjA5YTMxZWE1N2EyMTI3MDAyZiBsZWdhY3ktdHJ1bmsKKzE3MDExIDIxMTk3NjAzNGNmN2VlMzkwYzMwZjc5NzY2NzYxNmVkZDRhN2M4NTcgbGVnYWN5LXRydW5rCisxNzAxMiA5ZDhjZTZlZDRhMjlhYjQyMDAzNTgwMTliNzJlMWI2OTgyNjY1Yzc4IGxlZ2FjeS10cnVuaworMTcwMTMgOTk5NjcxZjY5ZGY0ZDA1ZmY3NGZmMTkxMzUwOWFmYjViMGIxZjU4NSBsZWdhY3ktdHJ1bmsKKzE3MDE0IDQxMjM0YWU5NWQyYTA3ZTVkYjAzNDExYWU0NTJjZjEwZWFkOTVmZjIgbGVnYWN5LXRydW5rCisxNzAxNSAyNzg3ZTkzODE3YzZhMGExOGRmYmU5YTBmMzNlNTY1ZmFlYzE0MjIxIGxlZ2FjeS10cnVuaworMTcwMTYgMzRlN2RlNGFkYTcwYWYzY2JiNjA3NmEzZGRmNTgyYjc0ZjkxNTBlNyBsZWdhY3ktdHJ1bmsKKzE3MDE3IDkwMGExNzc1NDAyMTNjYmZkYTU0ZjNiMDFjM2ZhNDNlZDhkNzc5NmEgbGVnYWN5LXRydW5rCisxNzAxOCBlYzZhMjFmNTVmYTFjZTdkNzQ1YTJkYzk2YWRkMDAxODQ4YTg4N2YzIGxlZ2FjeS10cnVuaworMTcwMTkgZDIyMzYyMGE4MTEyNjg5YzhiMWZjODQ2MmI4ZmUzZTdhOGIyNTcxMSBsZWdhY3ktdHJ1bmsKKzE3MDIwIDFiMGRhYmZmYzUxY2YwOTAwNDBlYWE5N2EzOGVlMTZkYjkyZTdlM2IgbGVnYWN5LXRydW5rCisxNzAyMSAxYzM0NDUzNzg4NzliYTI2YjQ4MWIwYzJkOTVkYWNhZjYwNjU2MGZlIGxlZ2FjeS10cnVuaworMTcwMjIgNjgxNmRiMjY1MGNhYmY5YjAxZGNlMDVmY2FhZTY4OTg4NmRjZWM3YyBsZWdhY3ktdHJ1bmsKKzE3MDIzIDNhZTE4NWI4ZmYwMzFiMTQ4ZTU2NGM4MjdhNDUzNmI0MjJlYjYwNzcgbGVnYWN5LXRydW5rCisxNzAyNCA0ZTkwN2E1MWE3YWZmYzFmM2NjMmRiOTg0YmFkZWY5ZGM0NWMxYTRmIGxlZ2FjeS10cnVuaworMTcwMjUgOGM3ZGNkMWVkMDhhNTdmNjNhNzgxZWI5NjhjYTExOTc1M2M5YmMzYyB1bml2ZXJzYWwtMzMKKzE3MDI2IGMxNmYyZGM5YzA4OWU4NmE1Y2NjMDAxYmE0YjdhMWY0OTYzNTg2NTggbGVnYWN5LXRydW5rCisxNzAyNyA5NGQ3MWYyZmM5YTgzY2RkYzcwMzVhODlmZTUyMWZhYjdiMzNhYjZlIGxlZ2FjeS10cnVuaworMTcwMjggMGMwZWU4ODZmYjAzYjc5MDU3ZjAwYmI1MTcyMzc0YTBlNzg2Yjk2ZiBsZWdhY3ktdHJ1bmsKKzE3MDMxIDE5MTI2ZTU1N2NlODQxZjc0NTM2MGMwNjZiY2FiNTljOGUzNjEyMDQgbGVnYWN5LXRydW5rCisxNzAzMiBhODU2YzkyYjFkN2JmMWEzZGVjMGUzMDFhZmNlM2FlNWM0NTE3NzcxIGxlZ2FjeS10cnVuaworMTcwMzMgNTg5MTEyYzQ4MjczNDEwMDhhYzhhOTEyY2UyYTlmY2RhNThmMmVkNSBsZWdhY3ktdHJ1bmsKKzE3MDM0IDYzZWEyYTJkZjA2ZjNkMThhZTVkNGIyZWM2ZWMyY2M1ZTIxODBkNzQgbGVnYWN5LXRydW5rCisxNzAzNSBiNWZiMTc1YWQ1MjgyNTQxYzZjMjNkNzA0MmVhOTg5N2RlNjUzN2VkIGxlZ2FjeS10cnVuaworMTcwMzYgMDc5N2ZkYjI1YTc3OWUxN2E4YmNkZWYzNDM4Y2ViMTYwZTlkMTZiZiBsZWdhY3ktdHJ1bmsKKzE3MDM3IGQzMzE3OWNkYzUxMTIxZDNiOTI5NTQ4ZGE4MWVlYzhhYjk3NTMzZjkgbGVnYWN5LXRydW5rCisxNzAzOCBhZTFlZGM2ZmY1NDM1ZmFkZjhjNjNmZDc3NDM3NmY3ZDlmZjVhMzRkIGxlZ2FjeS10cnVuaworMTcwMzkgZTc5ZDNjZjQ0NDNlZDlkN2ZkNzFmNWY5NGNiYWVjZDkxMTIzZThjMyBsZWdhY3ktdHJ1bmsKKzE3MDQwIDJjMzI4MzA5NDMxMTY3OTczZWI1OTNlY2MyYTZlYzNiODUzNGQxMmMgbGVnYWN5LXRydW5rCisxNzA0MSAzMDNjMzZlNDg3NjlmOTM5NTI3YzJkMjhhNDEwZTA2NzY1ODI4ZDQ4IGxlZ2FjeS10cnVuaworMTcwNDIgZTc1ZWI0ZDhlMzI5YjQ3YWIzOWEwY2E4YjU0M2JlZTU5MzBkNThjNSBsZWdhY3ktdHJ1bmsKKzE3MDQzIGQ5NzRjZjU0NWNhNmFkYjNjMjIzMzVlZTQ1MTg5ZGMxY2ExNjkyMTQgY25yaS0xNi1zdGFydAorMTcwNDQgOGM1MjY5MzM5N2QyNGExMWRkY2EyODhhOGNjMGM1ZTI0NjcwMzRjOCBsZWdhY3ktdHJ1bmsKKzE3MDQ1IGMzOTczM2JlMGRjODExYWE4YjExMDllZjljY2Q5YjVjNDE4ZjFiYzIgbGVnYWN5LXRydW5rCisxNzA0NiBhNGY1MzI4Y2NmMTkyMjdiZmRmMGU1ZTYzODhjNTUwODNhMDljZTRhIGxlZ2FjeS10cnVuaworMTcwNDcgY2JlOTU5MGQyMzQ0YzRiODI2Y2NjOWJhYWZiNjVjNjBlZTViYzkxOCBsZWdhY3ktdHJ1bmsKKzE3MDQ4IDExYTI2ZTk2M2RjOTA4ZjZkNDAwYWVkMGNjYjMwMDlkNDE1NTFmYWUgbGVnYWN5LXRydW5rCisxNzA0OSA5ZjlmMzI4MGRjNjhhMDE3OGI2NGM0MzA5YzgyOGVmNDBhMjlkZTg4IGxlZ2FjeS10cnVuaworMTcwNTAgMjAzNzdmMTViOTZhN2NiZjFmMThjMTBlNmJkNGY1MjQ3MmYwYzQwYiBsZWdhY3ktdHJ1bmsKKzE3MDUxIGFiMGViZjEyZDRkZTIyMmMwNzQ1MWFmOTdiZWVmOGQyM2ZhNzRmZWMgbGVnYWN5LXRydW5rCisxNzA1MiAzMTkyNWFiNDZiMjM1NDJhMWMzNDdlM2ZjMzE1YjI2YWQyNzU0MGU3IGxlZ2FjeS10cnVuaworMTcwNTMgMzk2YjRhYjNiOWMyYTljYmRjYjI1ZDdhZWZhNDcxMWM1MzBlNDhjMyBsZWdhY3ktdHJ1bmsKKzE3MDU0IDFmMWExNTZlZDVhZjhmN2E1MGNlMDVmYzg1Zjg1NDIzYTI0ZjJhYTQgbGVnYWN5LXRydW5rCisxNzA1NSBiOTdlNjIwMmYwYjE5NjhiZDk4OTAzMWYyYTExODU5MDIzYjZlMjk0IGxlZ2FjeS10cnVuaworMTcwNTYgM2U1ZDZlMjA5M2RmZTFjNWJkOTY1OWI2MWFkYjliNWY5ZDhjYzE4YSBsZWdhY3ktdHJ1bmsKKzE3MDU3IDYzZDg1ODk3YzY5ZmE0ZDU3YzE3MWUzYjg5YWQzNTBhN2IzNGU2N2UgbGVnYWN5LXRydW5rCisxNzA1OCA1OGQ3OTk1Y2U3OTVmNzlmZWIwMmNmZDllY2JmOGNmZTAxN2JlNzlhIGxlZ2FjeS10cnVuaworMTcwNTkgZDk2NDNlOWM5MGViMWE1Y2M5ZDAxZTc4ODIzZWExY2QzMTkwNzA0NCBsZWdhY3ktdHJ1bmsKKzE3MDYwIDc0ZjdmMjM3ZjczOWQ4ZDZjOTFlNDUzNzE2NDNjNzRmMzRjOGFiZTYgbGVnYWN5LXRydW5rCisxNzA2MSAwZTY2Yjc3NDA5NGJmZTU1MTQ1NGNlN2IyYzliMWQ1MjU2YmI0ZTY5IGxlZ2FjeS10cnVuaworMTcwNjIgMzQ4M2E3OGQxMzVmZDQ2MjQxYmM2ZjNhNjhlN2NkZjU4ZDA0NTRkMiBsZWdhY3ktdHJ1bmsKKzE3MDYzIDNmY2FjMzVjN2Y1ZTIxZmZlZTE3YjI1YjVjYzIyN2M1NzkzMzQ0YjEgbGVnYWN5LXRydW5rCisxNzA2NCAwNjcwYzRmOTAxNzEwZjJkMDljMjI5NDdmNDE2ZDViZjQ3NjM1YzBkIGxlZ2FjeS10cnVuaworMTcwNjUgYjJhODI5MmMzOWE5YTJkZjNmZTk5MTkyMDFmYWFhNzM1NTE2ZDIxNiBsZWdhY3ktdHJ1bmsKKzE3MDY2IDdiMzJjY2RmMWQ0YTIwMjRmY2YzOGZjYjNmZjE2ZDZhNzMzNjY3MGUgbGVnYWN5LXRydW5rCisxNzA2NyA1OTk0YmI2MTkxNjMzMmM1ZmRlOTE0YzUyZjY4MjI5MGFmYzI0MmE5IGxlZ2FjeS10cnVuaworMTcwNjggOWNkMmY3OTBjNTBjMzgyODY0ZWEzNmFjZDI3ZTZkN2IwZDA1OGY1YSBsZWdhY3ktdHJ1bmsKKzE3MDY5IGExNDJlYTIwZmU5NGYxODQ2ZjQ1Yzg5YTI5ODM0ZjY5ZjdlN2JkODMgbGVnYWN5LXRydW5rCisxNzA3MCA0Mzg4NzFlNzA1MzJiMTdiZTI3MGNiOGQ1ZDgyZjI2MTY3ZDExZDRmIGNucmktMTYtc3RhcnQKKzE3MDcxIGExYjJmYjE3YmRlN2VkN2FiN2NhZjNmMDZhZTEwOWFmNjg2MzM3YTQgbGVnYWN5LXRydW5rCisxNzA3MiA0ZTM2NDBhMDY4NTcyMDZiZjE2NmVmZjVhYmY2NzhmNzNkYjVkZWMyIGxlZ2FjeS10cnVuaworMTcwNzMgNGFmYjA4ODlhMTY1YzE5NzViNGExMDYxMzJiOGMyZTdlOTg5YTQ3NiBsZWdhY3ktdHJ1bmsKKzE3MDc0IDU4ZjNmOTM2Mjc5ZmY2ODJjNjA1YzgxYjUyM2QyNGE5NzdhZmU1YjUgbGVnYWN5LXRydW5rCisxNzA3NSBhOTlmYWIwYmEyZGY4OGM5YThjMTY2MDcwM2IyZTc2Y2M1YzRlN2EyIGxlZ2FjeS10cnVuaworMTcwNzYgNzQ1OTE1OWJhMjQ5ZjQ2ZmYxZDQzMDVmNWJiMThiY2UyZmE1MWM0NiBsZWdhY3ktdHJ1bmsKKzE3MDc3IDgzMGRlNjhkZTMzMDk1YWI3M2U4ZTE0OGQ5MGNkODE4MGVjODk3NWQgbGVnYWN5LXRydW5rCisxNzA3OCBjZGQ5NWQ2N2E3MTQyNTgyOWRlOGI4NTkwODUzYmU4NzcwZDkwNzNmIGxlZ2FjeS10cnVuaworMTcwNzkgMWZjMzNkZmNlYzQ0MmNjZmY4ZTNjZjk0MTgwMGUyZjE2Yzc1ZmQxNyBsZWdhY3ktdHJ1bmsKKzE3MDgwIDVmZmY0ZmZlYjM1ZDVjNWFmMWY3YzNmZDJiYjg0Y2JkYjA0ZDhmM2MgbGVnYWN5LXRydW5rCisxNzA4MSA2Mzk2NTI5YTQyMWM5ZWE0MzEzMjY1YTAyMTM1NTZiYjVlZWY3Yjg1IGxlZ2FjeS10cnVuaworMTcwODIgYWUyNzU2NDQ0NTdiNTU0YWNlNDZiZWFmN2I4YzhjZmFkYWIxN2ViOSBsZWdhY3ktdHJ1bmsKKzE3MDgzIGQ4N2NlMmQyZTQyNTczMTY1Njg0MGU1MTEwNzgwOGQxNGUxMzA4ZmUgbGVnYWN5LXRydW5rCisxNzA4NCBhZGYzYTI4NGEyY2YxZDY2ZTZhYjAxNDJhZTViYzE3YjNjYzFmZWE5IGxlZ2FjeS10cnVuaworMTcwODUgOWIyMGE2OWE1MDVlMGU2ZjI4ODdiODY2NzIyNjkzMGM5Y2UwOTNkYSBsZWdhY3ktdHJ1bmsKKzE3MDg2IDM2Mzg1MWNjY2YyYWVkMjJhNzVmNmFiNmM2NzliNTBlZTI2Mjk0MjcgbGVnYWN5LXRydW5rCisxNzA4NyA2NjBkYmNjMThiOWVjNmU5NmZjZTFhMDQ4ODMxNTRiM2Q0NGJkNDVlIGxlZ2FjeS10cnVuaworMTcwODggMWY3NmZjOThiNGM4ZGYwMDdiMDg4NjU2MGE2ZWIzOTcxNDVjMTViZCBsZWdhY3ktdHJ1bmsKKzE3MDg5IGQzZjkyZjNmYzBiMDkwMjZkOTNhZWE1ZmFmOTg5NWFmYzljMjlkM2IgbGVnYWN5LXRydW5rCisxNzA5MCA5ODYwODQyOWNhNmU0MjkyNDMwZDIyYTNjODRkYTRmMmNlNjIyNDRjIGxlZ2FjeS10cnVuaworMTcwOTEgY2Q4YjgxNWNiMTk2NTdhMGNmNTIxYWYwZWI1ZGQ0YjJjZDdmN2U3OSBsZWdhY3ktdHJ1bmsKKzE3MDkyIDkwY2E2YWIyNjkwOWVjMzQxZTA1MWRiMjRlZmYwM2JlZTcyNWFiNzggbGVnYWN5LXRydW5rCisxNzA5MyBkYzlkOWVjNDQ2NzkzOTVhMGY5YzZhZjViMTczOGFmYTRiZTdlMjA3IGxlZ2FjeS10cnVuaworMTcwOTQgMTViNmZjMjVmNjA1MDk2ZjkzNjZjNzM3MTI5NzhjMTgwYmZhZWIzNyBsZWdhY3ktdHJ1bmsKKzE3MDk1IDIxNTU3YmE0YWZiY2VkYmNmZGQ0NzZkMDlmOTE3ZGU3YWE1YWEwNTcgbGVnYWN5LXRydW5rCisxNzA5NiBiYmZjNDlhODQzODk2NDJlOTkwYThiYmFkOGM3Y2M5NjA0OTIyMDEwIGxlZ2FjeS10cnVuaworMTcwOTcgMThkYTJiYzUwNThjMGZkZjhiNzhmNjQxZDdjYzM2MTRlMzRmMTg5NyBsZWdhY3ktdHJ1bmsKKzE3MDk4IGJkOTUwYzUwMTY3ZmExZDgxYzE0NGY4MmU3MWVjOGFkY2FkM2YyZDMgbGVnYWN5LXRydW5rCisxNzA5OSBmM2E4ZjYwMzY1NjcwOTk1M2E0ZTVkNGEyZjQ0NTAxNzRlZjA1N2EwIGxlZ2FjeS10cnVuaworMTcxMDAgOTg0YWJkMjBlZWMyNjBkMjViNDJlNDczZDllNTU3ZjU4YzUwN2VhOSBsZWdhY3ktdHJ1bmsKKzE3MTAxIGZiOGZiNTNhMmVmZjAxM2M1NmZjMWE5ZWQxYmE3MGJiYWVmZWI0OWUgbGVnYWN5LXRydW5rCisxNzEwMiBiMWEwZmQzZGYxZmM4ZDYxMDdjY2Q5ZGZmYjE0ODZjMzIxYzNkZGEwIGxlZ2FjeS10cnVuaworMTcxMDMgNjhiNjFhYTFhYTRhYTA5NDA0YjljYjBmNjQ0Nzk4OGQ3NWRiZGE0ZSBsZWdhY3ktdHJ1bmsKKzE3MTA0IDhjZjY2MzEyNjcyM2FkYWZlNjRmM2RlNGU4MWUwOWNhODFkODgzNTQgbGVnYWN5LXRydW5rCisxNzEwNSA0ZDU2NTA5NWFlOTkzMzAxNzI3MmY5NzgwMTE3ZThjODk2ZTU2MzhhIGxlZ2FjeS10cnVuaworMTcxMDYgZGY4OTIzOGFjNzQ3NzE5MTg3NThkZWQ0OWE5NTczNDg3OTgxODA5ZSBsZWdhY3ktdHJ1bmsKKzE3MTA3IGUyNWFhNTZhNTIwN2RmOGE5MGE1NzFkNjNiYjEwYWVhMWFhZmNiNWIgbGVnYWN5LXRydW5rCisxNzEwOCBkMzU3YWQzNjdmMjYwZmJiOWNiMmIzNzBmMjQxNWY2Njc2OGU2ZGFiIGxlZ2FjeS10cnVuaworMTcxMDkgZWE5NWVlZWUwNGU3MjQ5MzQ4ZTVkYWY3ZTNjYmU4YzE4NjA1ZTBhMSBsZWdhY3ktdHJ1bmsKKzE3MTEwIDZhYjU4YzU1ZTBhM2MwNjg0MDY1MDcwYTdmZjRmZWI3NjY1NTQ0OGIgbGVnYWN5LXRydW5rCisxNzExMSA3N2UyNDQzYWJmOWJkZTMyNTE4OWZjY2NmNmViZjBmNWEwYTkzNWQ3IGxlZ2FjeS10cnVuaworMTcxMTIgMmUyZmJlZTUzZTY5ZmU2Y2NlNmYwNmJlNzdhYTZmZmU5MWE5ODMzNCBsZWdhY3ktdHJ1bmsKKzE3MTEzIDU5YzE5MDUyYWU0ZmIwMjFlODAzN2U0ZDAyOGE4MWYyZGQyMGU2NmIgbGVnYWN5LXRydW5rCisxNzExNCBiZmUzMDRmYzA2YWI5MTIyNDQ0ODU3NmQ5M2I1ZjM0MjQ5MTE2ZDEwIGxlZ2FjeS10cnVuaworMTcxMTUgMTFhODkzY2JjMWEwMTJhN2RmODg1OTRlZGI0MjQ3MjFhZTE5NWQxYSBsZWdhY3ktdHJ1bmsKKzE3MTE2IDI2ZGM2MmRlOWI2ZTE1YWE1ODljZTU5NzlmYzE1ZWE4YTY3ODE2OGIgbGVnYWN5LXRydW5rCisxNzExNyAwNTM2MjdlN2FjMTQxZTQ4ZTNjMjViMjYzYWY2OTg0NmQxZmI1OTUxIGxlZ2FjeS10cnVuaworMTcxMTggZTUyNTNiNjkyZTlmYmUzNjVhYjQzNjljZDc1OWIyNGI4Yjg2ZDYwOSBsZWdhY3ktdHJ1bmsKKzE3MTE5IDgxNzJhYzlkMjE5NjZjZmJhNTA5ZmJjZGUyMTVlZjI2ZWNhZDRiYTIgbGVnYWN5LXRydW5rCisxNzEyMCBlZGE0NDlmNTRlNDQ5ZWYyMmU3M2NhYWQ1M2NlMzgwYWZmZTMxMDRjIGxlZ2FjeS10cnVuaworMTcxMjEgMTIwNWIxODBiYTkwM2M2YWEwNGQ3ZWRmM2EzNGUyMDI2NTQ2NTNmMCBsZWdhY3ktdHJ1bmsKKzE3MTIyIGJlY2IxZWYwYTU3MzUzOTA3NmE2OWI3MWIyNzQ3YjNiNGZmMWYzYmIgbGVnYWN5LXRydW5rCisxNzEyMyA1MTY3ZWQ2ODM2ZmM0YTFhYTIwMWM2MWMwMWM0YTUyMzIzYTNiNDE4IGxlZ2FjeS10cnVuaworMTcxMjQgMDEzY2U3ZWU3MTY3YzM5ZmYzOWU0NWE3ODhmZjE3MjJlNWFhNTUxOSBsZWdhY3ktdHJ1bmsKKzE3MTI1IDMxNjQxZWE4OWE1MzRkNzA2YzFiMDgzNDg3MTU3YjUzMTllNDc4ODEgbGVnYWN5LXRydW5rCisxNzEyNiBmOGIyMGQ5MGM5YWYyNTQwODA2MGU2Y2ZlOTZlZjg2ODk1MTgyNDJkIGxlZ2FjeS10cnVuaworMTcxMjcgMDE5OGQyMDIwMzkwMzY4MzE0NTVhZmM5YWQ1NWRhNzdlZWI5NzQ1YSBsZWdhY3ktdHJ1bmsKKzE3MTI4IGUzNzc5ZWU5NDJkMGEwMDVlYjMyNmFlOWI2MTY2MDkwNGRiNzZlNzAgbGVnYWN5LXRydW5rCisxNzEyOSA2MmVjMGJmZDkzZjgwOGM2N2EzYjI4ZjZlNDA3Y2EwY2RiZmJlZWNmIGxlZ2FjeS10cnVuaworMTcxMzAgYjI0ZGI3NzBkZmZkZGE5YzA4ZGZjYWRmOWI0ZTU4YmIyMTllNTk0ZiBsZWdhY3ktdHJ1bmsKKzE3MTMxIGI4YjNmNzZmZmQ1MWQxMjQxYTY4MmY4MmVkNzJkMDFmODUyNzdjOTIgbGVnYWN5LXRydW5rCisxNzEzMiA3ZDQwYmQwN2IxMjk2NjM1YmE4MGVjNmFiOGZmZDdlN2EzZDJhM2Q4IGxlZ2FjeS10cnVuaworMTcxMzMgMmRiODA3ZjM0NWJjYzA3NzU0NjkxYWM4MTc3NzA2ZmNhNzhhODY5NSBsZWdhY3ktdHJ1bmsKKzE3MTM0IDk3NjUxZjI4YjAwNGM1YjZmYmViZGNjZjVjYjIxNTA2NDIyOTE1NTcgbGVnYWN5LXRydW5rCisxNzEzNSA0Yjk4ZGZkZWQ0OWY0MGIwOWE2MTQzMGZkZTMxOWMwY2ExNTQ5OTI1IGxlZ2FjeS10cnVuaworMTcxMzYgYzBmZTFhOGI4NzJjMDQwNzMyYTk1MzE1NmVmYjExYmFlYzE5ZTcwYiBsZWdhY3ktdHJ1bmsKKzE3MTM3IDRkNDkxYWViOTgwZmQxZDMzYTc2Y2U2NTExNDkzNGFmMzRjMjRiODAgbGVnYWN5LXRydW5rCisxNzEzOCA0ZGZiZDliMzQxMmJhYWUzNjM2M2M3ZjMxYThmOWI4Y2ExMDBlY2U4IGxlZ2FjeS10cnVuaworMTcxMzkgNTExMTIzZGQ4NDI0M2QzNDJkYzA2ZjZmN2FjZGExZWI4N2Y4ODY2YyBsZWdhY3ktdHJ1bmsKKzE3MTQwIDJkY2ZhZDNiMjExNWRlYjY1NzZhZmQ5NDA4Yzc2OGE3OTViOTI3MTkgbGVnYWN5LXRydW5rCisxNzE0MSAzM2M3ZGYwYzU0OWQ3MmZlM2RhZjNmNTVmYWJkZTY5ZTE0ODgzMmUxIGxlZ2FjeS10cnVuaworMTcxNDIgZGRhZWY0NTU5NWUyZDc2MmJlM2EwMmZkODQ3N2QyMTc0MGNlMGRkZCBsZWdhY3ktdHJ1bmsKKzE3MTQzIDFmYWI5MjgzNjc1OGY4MDQzYmNjYTY1M2I0MWM5ZmVlMzIzY2FkMmIgbGVnYWN5LXRydW5rCisxNzE0NCBhZGE0ZWM0Y2ZmZDUwMWRiY2RhODhjMDlmMDQyODlhNWQ0ZmIwYWNkIGxlZ2FjeS10cnVuaworMTcxNDUgNThmMTAwYWNjM2FjMGVmYTJhNThmYWRlM2YzYzAxNzVmNjcyYzljMyBsZWdhY3ktdHJ1bmsKKzE3MTQ2IDQ2MGZmM2NmMzE5NWJlMmRjMWVkNjQ4YzRhYWU4YjMyOGY2ZTQyOGMgbGVnYWN5LXRydW5rCisxNzE0NyA1ODg0MmNiYThkYmNkMjMxZjUzNGQyOGQ1NjZlYWY1OTQ4YmZmMDQxIGxlZ2FjeS10cnVuaworMTcxNDkgMjJiMmViZDc4MzcyZjI1NTNmZWU4ODA3MTkyZjJkOTA0OGI5ZTE5YiBsZWdhY3ktdHJ1bmsKKzE3MTUwIDE0YTJiOGQ0ZmNmZjA4YmJmM2QwZTc2ZjBkZmRiY2E4MzYwYzA0ZWUgbGVnYWN5LXRydW5rCisxNzE1MSA3M2YzOWVhNGVmYjdhNzRmNjkxMzk5NjJlMGUzMjA1NDcxNGRhY2NjIGxlZ2FjeS10cnVuaworMTcxNTIgOGYyZTYxMzRjZWEwMGE1MDZhOTVjZWY5NDM3YmQ4NzI0NTNmNzgxYSBsZWdhY3ktdHJ1bmsKKzE3MTUzIGI1N2UzNjBhNmQxNjFhOWFjNmRlZmMzNjI2NjZiNTQ2MmY1OTM0MWUgbGVnYWN5LXRydW5rCisxNzE1NCA2ZGVlMTk4NWM2ODFjMTBhYzUwMmMyZTZjOTA5NmRiMzU0YThlNDE5IGxlZ2FjeS10cnVuaworMTcxNTUgY2JlNDIzYjNiYTNhMDY1YmE2NWQ2MzhiMzk0MDY4ZmM2OWI2ZWQ0NyBsZWdhY3ktdHJ1bmsKKzE3MTU2IGViN2MyN2U4ZmUzN2VlN2Q0YWM2MDJjMDJjOWExN2UxYmY0NDAwZDUgbGVnYWN5LXRydW5rCisxNzE1NyBmNTViNjczZDlhY2Q3NDI1Y2FmOTVlMGRlMTE4OWNmMThlMTI3MjY1IGxlZ2FjeS10cnVuaworMTcxNTggYmVhOGYxNGU3ZDYxY2Y4MGU1MzIzYzFkYzk5ZDI3MzhjMzBlMTJmYSBsZWdhY3ktdHJ1bmsKKzE3MTU5IDk1MWViM2FmMzQ5NDgzYmQ1NzE2M2E0MDdiNTA4YWQyMzI3ODlhMGMgbGVnYWN5LXRydW5rCisxNzE2MCAwMTE1ZjQwM2ZhZGQ4ZmI1MGRkMzA0ZmMyYzUxYmY3MDBhMGFmNzljIGxlZ2FjeS10cnVuaworMTcxNjEgM2I4NGM1ZmY4OWRhODkzZmQ5ZmJiNDc2ZGZjNWQ4YTQxYjI5Y2ZiNSBsZWdhY3ktdHJ1bmsKKzE3MTYyIDA1N2M3Y2ViOTJmMDQ0ODZmMjk3YmJmNzY4NjNlNjRmMTUyZTdmODQgbGVnYWN5LXRydW5rCisxNzE2MyBmNDhlZDk0NDg4NGJmZmYyYTU1MTczNGY0OTdkMmRlMTk5MTk3MmQzIGxlZ2FjeS10cnVuaworMTcxNjQgODAxYTMwNGYyNDhmYmZmNzY4Y2Q0ZWMyZTA5YzBjMjIzNjUzZWY4NSBsZWdhY3ktdHJ1bmsKKzE3MTY1IGFiNjFjMzM1YTA0ZGNkMWJmNDk1NWI2ZGJjMGE1MTcyOGYzNDE1MDkgbGVnYWN5LXRydW5rCisxNzE2NiBkNDFjNDEzNzFkYzEwODkwNDBkYjc0N2UxNWQzMjg1OTRmNzk5ZDE0IGxlZ2FjeS10cnVuaworMTcxNjcgNjk0OWI1MDM2NGRkMDhjODIxOGNlN2I3MzRjNjk2MTA0ZDkyMzI3NyBsZWdhY3ktdHJ1bmsKKzE3MTY4IDdiNTNlYzI3MDRlMDBhM2E1ZTVkNzQ4ZDNlMGY4MmEyOGY3MDI1YWQgbGVnYWN5LXRydW5rCisxNzE2OSA0MzJkMzA4YzQ1ZThkOGI0MWZjMWFjNzI0NzAyODdhZWRmZGVlMmVlIGxlZ2FjeS10cnVuaworMTcxNzAgNTM5N2ZkZjg4ZWMyNWExYjU4MzdkZWM5ZmM4NTI4MzlhYmU0NDFlMCBsZWdhY3ktdHJ1bmsKKzE3MTcxIDJkZTFmYjUzMDJlZDg3ZWQ2OGYyYmQ5N2QwZjUzMWU4ZWJmOTM5ZDUgbGVnYWN5LXRydW5rCisxNzE3MiA2ZDBmNjRmN2RlZGQxODM1NGU1OGM5MmIzZmFkZTZhNzQ3NjllNWE5IGxlZ2FjeS10cnVuaworMTcxNzMgMjFiZjlmYTkyMjU1ODUzZWU0MmNhY2NjMjQ0ZTRlNGVjNWNhODI5OCBsZWdhY3ktdHJ1bmsKKzE3MTc0IDczNTJiYjE2MzJiYzAxYTQ5MTYxMjIwM2NmYTVjNjI2OTZjY2JjYWEgbGVnYWN5LXRydW5rCisxNzE3NSBlZjk3ODUyMDA4NWYxMGU1OTc4MjZiMjU5YWE5MDZiMWI3YjllNjQ2IGxlZ2FjeS10cnVuaworMTcxNzYgOTNkYWJmYzNhODNmYzhjNTJiYWQ4ODJiY2I1Mzc2NTNjYjhjYWU2MyBsZWdhY3ktdHJ1bmsKKzE3MTc3IGRlYjcyNzQzNWYzOTA2NGUzNWY2ODI1ZDc5NDhkMjBlYzg5MDJiZWEgbGVnYWN5LXRydW5rCisxNzE3OCAwZjY4MDllYmE1MGE4OGM3NzNkMWQ3MTE4YmMzNjk3YWZiNTdhNjJmIGxlZ2FjeS10cnVuaworMTcxNzkgNjMwYzhhYmZhOGQ3YzA4ZTU0NTY3ZTc5NDkxNTkyMDlmYzM4MzM4YyBsZWdhY3ktdHJ1bmsKKzE3MTgwIDNiMmRmYmMzNDY4OWRlZDBiMGU3MjYyNjgyMjY3ZmE2NzJhOTJjZjMgbGVnYWN5LXRydW5rCisxNzE4MSBhMzhlMTJlNGFmYjcwYzU5ZGJlNWU2NDc4NDQxYTRhZjc1NTAwMTUxIGxlZ2FjeS10cnVuaworMTcxODIgM2VkYTMwMTBiYzBhMGRiODVkMTk4MTgyOGM5NjZiZmEwNjhmMTM0OSBsZWdhY3ktdHJ1bmsKKzE3MTgzIGVhOWU2MjViMDFhMmEwNTZkMWU1MjM1OTU4ZTZmYmM1N2ZmMDlhNTkgY25yaS0xNi1zdGFydAorMTcxODQgMzU3NjNiZTc1ZGRiN2NhNmY3MjI4ZDU3ZjgyY2NhNDY0ZjMzY2VkNCBsZWdhY3ktdHJ1bmsKKzE3MTg1IGQxZDVlMmRjMjlkYjUwZDc0OGQ5MmRhMGM4ZTQ0ZGViZWY5ZmY1NTMgbGVnYWN5LXRydW5rCisxNzE4NiA1YzUxYzA5NmRlM2JmZTZjYzM2YmE3MThkYmYwZTM0ZjU0ZDBjODliIGxlZ2FjeS10cnVuaworMTcxODcgYTY2NWJkYzQ5MjJmNWRmYjBkYWRkYmE5MjZkYzdmYzIzZDhmYzlhYiBsZWdhY3ktdHJ1bmsKKzE3MTg4IDVkYTQwNmViZWY1NTIwNGY3ZGExYjdhOWJhZmE5ODBjYzAzNGRhMzcgbGVnYWN5LXRydW5rCisxNzE4OSA2NjViMTllNzc3NmI1M2IyMDFlNTQyOTZlZmIwYTBkOTRhNDI3NThlIGxlZ2FjeS10cnVuaworMTcxOTAgYzdlZDQxMmEwNzViMDE5ZGQ1MGQ3Y2ZhNjA2NWI4MzY1NmNiMzRlZiBsZWdhY3ktdHJ1bmsKKzE3MTkxIDM2ZDBiNWIwOTRlNDIxZmI3ZTc5NjZhMGI1NGE1MzYzNzYwODAxMWEgY25yaS0xNi1zdGFydAorMTcxOTIgN2ExZmVjYzA4ZDcwYThjYTAwZTIyMDRlNWIyMmM1NmViZWIzZDIyMiBsZWdhY3ktdHJ1bmsKKzE3MTkzIDY0OGExMmE3ODBkOTA4MzQ0YWJmN2RmOTRmZTE2Y2JlYjliOGI2MDIgbGVnYWN5LXRydW5rCisxNzE5NCAwMzRiZjEwODEzMDQ3NTAyMzhhNDY1NjY5NmM4YTdiOTVmYzBhNjFjIGxlZ2FjeS10cnVuaworMTcxOTUgY2FjOTM5MDc2YzdkYmVlNzIyMDFiZGUzMGM2MGEzMzA4NzI0NjQyNCBsZWdhY3ktdHJ1bmsKKzE3MTk2IGNkMDQ3YTg1OGFjZTE5YmJiNTFkNzYwYzhlOThiZWE4NDgwOWQxNmUgbGVnYWN5LXRydW5rCisxNzE5NyAwOWRjZmY1MTkzMmM3N2RkZTUyYmJmNjJhNmM1ZDE2ZjI5NDlhZjY4IGxlZ2FjeS10cnVuaworMTcxOTggNjRjMjVmZDI5ZDZmNjcxN2JkY2FmZjcxMGJjOGM2NzY4MDNiNzQ3YSBsZWdhY3ktdHJ1bmsKKzE3MTk5IGVkMTQ3YTUzNzAxYjgwMDY1MjQ3ODE0YTU1YWFjOTVkZDY5YjAwNzYgbGVnYWN5LXRydW5rCisxNzIwMCA4ZGYxNjZjYTA5YjI1YWU5MjViNzIzNjMxNWEzNDY5OWI5MDhmNTA0IGxlZ2FjeS10cnVuaworMTcyMDEgNmY2Zjk2NWM1ZTJkYjY0Yjk0N2Q0ZmNjNzM4MWU4M2FhMGNiMDc1NiBsZWdhY3ktdHJ1bmsKKzE3MjAyIGZkNDc5OTYwZTVlMGMyYzA3NzhlYzQyMDgxMjc2YjQxN2EwMmI1NDYgbGVnYWN5LXRydW5rCisxNzIwMyBkZDQ3NjZhYTJmZDJmNzdiNzZhODI4Nzc4Mjk4NWE0ODdhNmFhOTU5IGxlZ2FjeS10cnVuaworMTcyMDQgY2E3MzE2YTAwNDY0ZWE0OGYxOGYwZWE4NTE5ZGRhOTI1ZGNmZmRlZiBsZWdhY3ktdHJ1bmsKKzE3MjA1IGIwNjlkN2Q5Y2U4YTAwZGZhZjcxMjQwYjkxMmUzYWNkMjNlYmNmY2YgbGVnYWN5LXRydW5rCisxNzIwNiBjZDBjNGRkNDkwNGM5NjM0MTJiYzJjNjUzODU3M2VlODVmNDNjZThiIGNucmktMTYtc3RhcnQKKzE3MjA3IGU5OWIwZGIxNmRkN2QzYzkzY2E4ODU4NWUyNmMwZTY5MGNhODI4MjUgbGVnYWN5LXRydW5rCisxNzIwOCA3OTU4YTg4ZWRkYTE3NzM4OTUyNzU5MmE4YzBiYjg5ODZmZDZkNjM5IGxlZ2FjeS10cnVuaworMTcyMDkgMmQ2Y2Y2OGFhNjRhNTVkMmZhMmIyZjdjZDNkZDUzMmYwODRkNTAzMyBsZWdhY3ktdHJ1bmsKKzE3MjEwIDM4OGM3MjFjMjBjZmI5NTM0MTBlODAxZWVjMTZlNWQ1MzMxNmRhNTQgY25yaS0xNi1zdGFydAorMTcyMTEgY2ZkMDc0MzIxYWFkOWQxYTUyY2RlYWU3ZTAwZWRmZDk3ZjhlODUxMSBsZWdhY3ktdHJ1bmsKKzE3MjEyIDdlNDdiMzcwZWI2NzU1MTliODc1Mjg2NDcwMjY2MTYwNjRjZWJkODYgY25yaS0xNi1zdGFydAorMTcyMTMgNmZiNjFiODM0MzVkYTFiNmY4N2Q2YmIwYThmYzMyNTU2MDAwODEzOSBsZWdhY3ktdHJ1bmsKKzE3MjE0IGQzOTVjYWM3ODZiMjI0YjE4NjFlMzI4Y2RkYWYzMDUyZTBlYWNjZGEgY25yaS0xNi1zdGFydAorMTcyMTUgMDUwN2U1NjlkNzRhZTY1MTZlYWQ2NzNkZGJjZDI1NGY2ZGMzOTNhMiBjbnJpLTE2LXN0YXJ0CisxNzIxNiA4YTkzM2VjNDdlZjczMzljZGIxNWUxMmFjOTJhYjgxNjUxNjNiM2JkIGNucmktMTYtc3RhcnQKKzE3MjE3IDM5YWIyODU3MjMwN2Y4MTg4YWU1NTJjMmFjZDZkODhjZTlhOGZmZTUgbGVnYWN5LXRydW5rCisxNzIxOCA1NzlhMWU3MzFmYzg0MjRlZTg1MWUyZGEwZTVkMDZhNzk4YThhN2RmIGNucmktMTYtc3RhcnQKKzE3MjE5IDFmZGNhMGFmNzFkMzQzZTg4ZTZiZjUwZjc5NTQ0MjEzMTRjOWJiYmUgbGVnYWN5LXRydW5rCisxNzIyMCBhZmQ2ZmFlNDY3ZTU5MjU5NTFiZTk5OTkzOTVlY2E3YTNmZDRiYjBmIGxlZ2FjeS10cnVuaworMTcyMjEgZWYyNzE0YmIwNzMwYTc1MjU2ZTgzMmI3MDc3MmE0NzNiN2EzYWJjNyBsZWdhY3ktdHJ1bmsKKzE3MjIyIDlmMDNkMmZhZjE1NmFkZTlkYzI5NmIxMDVmMDQ5ZjI1ZDI3Njg4NTMgbGVnYWN5LXRydW5rCisxNzIyMyAxYzQzOGZkNWMwZTkzNDAwNmViNDJiOWM1NjNhYTUxMGU3YTIzMzAwIGNucmktMTYtc3RhcnQKKzE3MjI0IDQ0ZmY3ZTQxNjNhYTFlMGNiMjI1MDJiYzA2ODRiOGM4ZWFlMTk5NDggcjE2MS1icmFuY2gKKzE3MjI1IDU1OGVhOTBmNWIxY2EyOGMzZjYwNDJiYzQ2ZGUxMmI5YzU1ODE3Y2YgY25yaS0xNi1zdGFydAorMTcyMjYgOWIxZGFmM2RlZTE0ZDRlNDFjZDI0N2NjNzM3Njg5MTVhNTM4NTExMCBsZWdhY3ktdHJ1bmsKKzE3MjI3IGYxYmQzMDQ0N2UzMGI1OWMwOGYwMjFjNTlmMTdjNjhkODhjNjgzOWQgY25yaS0xNi1zdGFydAorMTcyMjggMWZkNjRiM2FmNzYwMjI4YmI1ZWI1MTM0YTYyNGFlMDgxZDYzYzQzOSBsZWdhY3ktdHJ1bmsKKzE3MjI5IDYzZDgyNDY3OWIyODUzM2JmYWExMGUzNGNmNDk3YTA1NmQwYzQxMWQgbGVnYWN5LXRydW5rCisxNzIzMCA3ZTRmNjAyZGM2ODU3NmIyZTg4NmIwZjUyMjE5MjZkMDllMTE3MzNkIGxlZ2FjeS10cnVuaworMTcyMzEgMmVlYjU4YjQzZWIxODgzYmRmNDQzNzJmZjRjODExYzdiODMxYmJmNiBsZWdhY3ktdHJ1bmsKKzE3MjMyIDA1ZjEyMTI4YzM4ZGJlNDI0YzI5N2I0ZmNhYTNkZjg3NjcwYmU3M2YgY25yaS0xNi1zdGFydAorMTcyMzMgNTMyYzljZTZjODdjMTdkOWJiNTFiMDdhYTBmY2M0Y2UzODA5MGJjYiBsZWdhY3ktdHJ1bmsKKzE3MjM0IGExMGFmYjNhZDI3NTBjMGUyNjI0MTM0YjFmNTliYzkwMDkwYjcyNDMgbGVnYWN5LXRydW5rCisxNzIzNSA1NDJkMTBiZDA0ZjQ3N2E0Yjg5OTg3ZmIxMjY3NTBmZTllNGQyMmEwIGNucmktMTYtc3RhcnQKKzE3MjM2IGNkNmY3MDVjNTRiOGM0NTNiOWNkMzY5YzhmMTY3MDFhYjE0MDRkMDkgY25yaS0xNi1zdGFydAorMTcyMzcgZjYyOWFmMWQ0YmRhYTgyY2I1ZmU2MDk5MmIzNTg4ZWU4OGI3ZWJkMyBjbnJpLTE2LXN0YXJ0CisxNzIzOCA4ZDQ3MTAxNDE5Yjg0Y2FiOTNkYzVhY2YyZDIwMTExMzJiMTcyZDFlIGxlZ2FjeS10cnVuaworMTcyMzkgY2QyYmUxNTNmMjI4ZjdmY2U3NjkwM2QxYzhjOWE2ZjZmMzZjMDExMiBsZWdhY3ktdHJ1bmsKKzE3MjQwIDM2N2NhNDkxOTBiYzUyNjVlNmQ3MWVmZmFiZGM3OTUwMjRkNmUxNzkgbGVnYWN5LXRydW5rCisxNzI0MSAzMjAxNTgwMjZhNGJjNGVlOTE2NTBlZDkwN2JkNDA4MzJlMTRmNzNiIGNucmktMTYtc3RhcnQKKzE3MjQyIDg4ODUzYzEwMzA4Nzk3Yzg1Y2FjNTg4NzU5Y2YwOTEwNzFlNWExMTQgbGVnYWN5LXRydW5rCisxNzI0MyA2YTVmYmU4YzVhYTZhODg5MzhmODEyMmRiMjIwNzg0Y2RhYTk3ZGMzIGxlZ2FjeS10cnVuaworMTcyNDQgM2UzNzY5OGNkNzM3ZjRmN2NhY2M0NDkzOWVhMDE3Mjg3NGY4N2I3MCBsZWdhY3ktdHJ1bmsKKzE3MjQ1IDhiNDA2ODU2YmMzMWMxMmFmNGI3ODBjNTU1NjcyNzcyNzU3YTg5YjIgbGVnYWN5LXRydW5rCisxNzI0NiAwNTdiYzE5NzAzNDUyNmE1ZGYxMGNlNWYxYTViYTQxMzNlMDlmM2Q0IGxlZ2FjeS10cnVuaworMTcyNDcgZDY4OWI4Y2U5ZDBhOTI4YmE2NTIzOTI2ODUyMWIwZGQzZTQwMWRmMSBjbnJpLTE2LXN0YXJ0CisxNzI0OCA4NzIxOTE1YTZhY2I4MzA3YTVlYzEyMGE4NzBlZTIyOGIzYWJjYmU1IGNucmktMTYtc3RhcnQKKzE3MjQ5IGIxNzU5OGZmMmNkZDc0MDFkOGY4NjY1MWY1ZmUwMDBmYmJhYTY4MGQgY25yaS0xNi1zdGFydAorMTcyNTAgZDhkMTgxMmRmY2UwNjQ2YjJmZGU1NTliZDI2MmE5MWM4MTkyNWE3OSBjbnJpLTE2LXN0YXJ0CisxNzI1MSBkODQ2Njg1NTAyNmY1ZTliZGFiYWI3YTJiYTNkNjhjZDAzMjZiYzA3IGNucmktMTYtc3RhcnQKKzE3MjUyIDY1NjNkNzFlN2Q5NWFkMGJmOGRhYTE2YzQ0NzE4ZjA3ZDEzNDgyODEgY25yaS0xNi1zdGFydAorMTcyNTIgNzg2YTU3YjdkYzZjY2Y1NmU2MzBlYjkxYTI2MjAxNmI5YTE0OTgyZiBjbnJpLTE2LXN0YXJ0CisxNzI1NCBiZWVmYTg1YTM5MjRjM2UyMmE1ODM3YmQzZWI2MTg2ZDc2ZWM4NDljIGxlZ2FjeS10cnVuaworMTcyNTUgZmMxMGIyMjdjMTdkZGMyZjkxODk1MmFiYzg3MzZlNjA0MmRiMDJhNSBsZWdhY3ktdHJ1bmsKKzE3MjU2IDhkMDM1YzJmYzIzNDA4NTgzNTA5YzgyNWZlNzUwN2Q4OTI5NzNiOWYgbGVnYWN5LXRydW5rCisxNzI1NyBkMWMzOTVjNDcxMDJhMTU2YjQyMmIyYmY1ZDMwOTk1NTkyNDc5YjAxIGxlZ2FjeS10cnVuaworMTcyNTggYTc2YWI3YzhmYzI5MjFiYmMxZWMwMjUyYWNjMDI5MDA4OTNlOTcwMCBsZWdhY3ktdHJ1bmsKKzE3MjU5IDQzMDYxMDdiMTM5NTUxOGQ5ZDMyOTdlMTgzM2FiZWEwYWVmZDM3MTcgbGVnYWN5LXRydW5rCisxNzI2MCBhNzA3YTVmMTcxMzkzMjRhODRkYzJlNmU0NTEwMzBlY2RmNmNiMDJlIGxlZ2FjeS10cnVuaworMTcyNjEgYjE5NDRjZTU0OTJiMmYyYmMzMmYwZmRhN2E5YTAxNDc3Mjg5MTcxYiBsZWdhY3ktdHJ1bmsKKzE3MjYyIDg2MjY2Zjc2M2Q0NDE5NzE3ZWQ2NDBmMjA3ZDYwMzgyMjg5M2UzZWYgbGVnYWN5LXRydW5rCisxNzI2MyA5MGYwOTQ2ZjY0ZTc4MWU3MzJkNmY1NjdjZWNiZDQ2ZTYzNWE5MDI5IGxlZ2FjeS10cnVuaworMTcyNjQgNjA3MjY0ZTdiZjUxNDM0MGI2MjE3OTExMzUwYmYwMDc2Y2FkZDhlNiBsZWdhY3ktdHJ1bmsKKzE3MjY1IDZiZTQ0NmZmYTJkOWFiYzkxM2E3MmQzY2M2YjkyOGUwZGRlZjk1NjAgbGVnYWN5LXRydW5rCisxNzI2NiBkNDJmYzNjNzE3M2U1YzczYzdiODlmYjJlZWE2MDkxZDRiNzYwZjZkIGxlZ2FjeS10cnVuaworMTcyNjcgMTBiZTk2ODJiMDAzZjIzYzIyNzZkMTI3MWQyNWI1YjMxYzEwNmU1ZCBsZWdhY3ktdHJ1bmsKKzE3MjY4IDBkY2FlODQ1MDZiYWE5Y2I3MzUyYzI3NzY0YjcxOWI3NjliYjEyOGQgbGVnYWN5LXRydW5rCisxNzI2OSBiYTIyYTVlZDQ2NDEwYmNkOTFhYTBmNTY2Y2NhMDdlZmM2YmY4YjRiIGxlZ2FjeS10cnVuaworMTcyNzAgZTM2YWZmNTJmYjRlMGZjMzYwOGMwZDU5MjIyNmNkZGNjODhmYmEzMiBsZWdhY3ktdHJ1bmsKKzE3MjcxIGFjZDQxMTNlMzAxYTNjN2JhM2QyYTdhMDJkYTQyMTI0NmEzYjMyYTAgbGVnYWN5LXRydW5rCisxNzI3MiAyNGJlMDQ5ZDIwMzc5MzQyYTVlMDY3N2MwOTRiM2I0YzgzNGE1NTM1IGNucmktMTYtc3RhcnQKKzE3MjczIGY5NDQ4ZjQ0ZTcwMWNhZDU2YzdjZjU4MTU5NmYxNTAzNTUwYzhmNTkgbGVnYWN5LXRydW5rCisxNzI3NCA2NDYwNDExZjQ3M2VmZmNmZDg2MDY1YzZkMDdjN2E5MDYzMGZiMDA4IGxlZ2FjeS10cnVuaworMTcyNzUgYzYxNmI3OTEwNzQ1OGRmZWI0ZmFkNWU4ZjE4MTJhN2MyNTBjMDEwMyBjbnJpLTE2LXN0YXJ0CisxNzI3NiBjMzg0ZmFhZTUwNTJjNWYzOWU2ODNiYWJhMjAxMWRjMjhkZTg2N2Q4IGNucmktMTYtc3RhcnQKKzE3Mjc3IGY4ZTY2ODQ0N2UyYTFkMjkwZDU3MWE0OTlhYmMxNmRhODZkNGM0MzEgbGVnYWN5LXRydW5rCisxNzI3OCA0NDhiZGY0NDE3OTIzZmFiN2FhY2Q4ZjU1NjI3ODg2MTgzMzRlZDgxIGxlZ2FjeS10cnVuaworMTcyNzkgYmI5MDgzMzEyZDgxNGM0ZWI0ZGFjZmYxN2UxYzNkZWM5MDEwNzlhOSBsZWdhY3ktdHJ1bmsKKzE3MjgwIGNjYjM3ZTJiMjQ2MDNiN2MyMjJkNThkMDY5ZTFmNzlhZTY4ZmFkYTggbGVnYWN5LXRydW5rCisxNzI4MSA5ZjFmMGE2YmMxOGU3NTdmNTI3NGNjNzJkZTM0YWZhYzQ0OTg2M2I4IGxlZ2FjeS10cnVuaworMTcyODIgODM3NmFkNjY0NWUzZGRjNTkyODdiNWVmMWRhYTk1NTRhODMzMzA5NSBsZWdhY3ktdHJ1bmsKKzE3MjgyIDM1YzRmYzE0MTRhNTk4ODg2MTRiOWJlNzg0YTI1ZjIzM2JhNjc5ODQgbGVnYWN5LXRydW5rCisxNzI4NCA3N2U4ZTU1MGFlMTNmNzVlMWM2NDM3MDIzMDQ3NTllOTQ5MTJjOTQ3IHVuaXZlcnNhbC0zMworMTcyODUgNGZlMDE0ODA4ODg1YTQ2ZjQ3YjgxM2EzNTI3Mzg3OTk0YWI1N2U0MSBsZWdhY3ktdHJ1bmsKKzE3Mjg2IDc4ODZiM2I2YzQwZjdiZDVlZWNhZTVjMzZjZmZmMThlMjY3OTdjZjQgbGVnYWN5LXRydW5rCisxNzI4NyAzNDM3OTEyN2VlM2I0ZDkxZmYwNWUzMGU1ODNmMjZhMTY0NjgzNTdmIGxlZ2FjeS10cnVuaworMTcyODggOWZhM2M1NzFkYWZmMjAyZTM3N2QyMzBiZGUzZTgyMDk2N2QxNDE0MiBsZWdhY3ktdHJ1bmsKKzE3Mjg5IGMwNTA5OTg5NDA1ZWMwZWViYTc2Y2I3ZjJmMTU5YTk4MWMyNzcwNzggbGVnYWN5LXRydW5rCisxNzI5MCBlMzQ4ZWQ5NDZkMWY0YzFiMGJjMThiODVmZmI5ZGJhZmE5OTc5NjYyIGxlZ2FjeS10cnVuaworMTcyOTEgYWMzOTE3OGZhODVmYzllNGMyNGUxZDE2OTE2MTlmMmY4NjNiZDk0ZSBsZWdhY3ktdHJ1bmsKKzE3MjkyIDNhOTMyY2M2NDMyMzNmZGNkOGRiYWE5MmVmNjBkYzI4ODM0NmM0MmEgbGVnYWN5LXRydW5rCisxNzI5MyAxOTQ0MzU4NWNjY2MyNTVlODdjNTdkYTdlYTE4ZDY0ZjEyOGQ4NWM3IGxlZ2FjeS10cnVuaworMTcyOTQgZjdmZDA5NWMzMWE2YWFjOTljOWUyODNhZTczNWViYjJmZGY3ZjhmNiBsZWdhY3ktdHJ1bmsKKzE3Mjk1IGM3MzgwNDFmOTc1ZGJlODNlYTY0YmMxZTFkZjQ1OGEyMWRkNGI1YjMgbGVnYWN5LXRydW5rCisxNzI5NiBmNGM5MmEyNDIxMWJkZGQwMzBjZTU0MzVkNzBiMTcxZjc3NjA4NzQ5IGxlZ2FjeS10cnVuaworMTcyOTcgZjA1MWFjODM0MGY3YjhhMWZjMDdmMjNiZGEyMjA5ZjkxNDQzMTUxMyBsZWdhY3ktdHJ1bmsKKzE3Mjk4IDkzYjFkYWIwOTc2NzZkOTI5NDcwMzJhYzNmYzA1Y2YyZTk3MWVkMDkgbGVnYWN5LXRydW5rCisxNzI5OSA1MjBjZTdlY2UyNTM5ODVhZjA4OWU2MTdjMTQzMGU3NjhlNTc2ZGUzIGxlZ2FjeS10cnVuaworMTczMDAgNWQxMmQ5NjYwYzJlYThkMzg3N2U0ODJkMjYxMjQxMmNkZmQ3NDkwNSBsZWdhY3ktdHJ1bmsKKzE3MzAxIGM5ZWU2Zjc0NjcwZGFmNTVkNWViMmE2YTI0N2Y3MWU0OGM2ZTcyN2MgbGVnYWN5LXRydW5rCisxNzMwMiAzZTM4NzUwN2E5OTE5YjA1NTEzMjhjZjJjYjczMmJlMTA3NzFiMWM0IGxlZ2FjeS10cnVuaworMTczMDMgZmM1YjQwNjE2MjYyMzczZWY3NDZiZGFkN2VmMzFhZGRiY2MxMzgwYyBsZWdhY3ktdHJ1bmsKKzE3MzA0IGU1Y2RjZTJhMmIxNjQ5ZjZkNjJlNzI5NDU5N2U3N2RmNWJjMmE5MmIgbGVnYWN5LXRydW5rCisxNzMwNSAwZDA2MTNiOTU3NThlN2JjZjlkMDkzYjUyZThiNGZkOTAyNzI0MzI2IGxlZ2FjeS10cnVuaworMTczMDYgMGQxMDI1YWVmZWJmZjI0ODhjOTM1ZDUzMzI5NzkzOTE4MWVhMDA3MiBsZWdhY3ktdHJ1bmsKKzE3MzA3IDAxNWEzNGJmYmNjYmEwOTkyYmRhNzQ1MTk3OGYxNGIzYjdkOTY5YzAgbGVnYWN5LXRydW5rCisxNzMwOCA2OTE5ZDhlMTRhMzAzNjkwMDYyODkzZWJmN2YzOGFlZjIxMTBmODkwIGxlZ2FjeS10cnVuaworMTczMDkgMjBhY2ViOGVkZmE1ZTZjYTRmYWRmOWM1Mjk4N2M0MjQ2YzBlZTUwZCBsZWdhY3ktdHJ1bmsKKzE3MzEwIDBiNjZkMDMwMGVlYmU5YzIwN2I5ZmM4Y2MxMDMxNTc2NWEyNjQwNjggbGVnYWN5LXRydW5rCisxNzMxMSA5NWVlYjA2MWZjNmQ0ZDQ1NTFlNzgzNzlhZTgyZDNlMDEwYzAxNGY1IGxlZ2FjeS10cnVuaworMTczMTIgZWRhMjZmMTIzMjI3NGJmNmJmMThiMDRhOTFmYzdhZTE4NWI2YzM2NCBsZWdhY3ktdHJ1bmsKKzE3MzEzIDVlZGQ0OWQzNDBlYTlhYTBhNGRiYjQ5YjUzMGVjNDA2YzliYzY1ZDggbGVnYWN5LXRydW5rCisxNzMxNCBkYjAyNjA5MmNiN2U0OWQ4ZTc2NWZmNWM1MzgyZTc4OGEwOGQyNjQ5IGxlZ2FjeS10cnVuaworMTczMTUgYWE0NDUzN2Q4MGI1M2ZlZGQ1NmMyZTQ3OTU2YzBkNGUxNWU4YjRhZSBsZWdhY3ktdHJ1bmsKKzE3MzE2IGVjMTY1ZDAzZDQ2Y2E4NjE3NmMwNDc4ZjVmYTQxMTVjZDY0YTNhYmQgbGVnYWN5LXRydW5rCisxNzMxNyAxN2NlYzk2Zjc1YmMxZDU2MDlkMjIzMTVmODdhMDE4ZGU0MTMyODNlIGxlZ2FjeS10cnVuaworMTczMTggZTEzZGY0ZTkwNzZmNzU4YmM3ZDkwNDNkOGU4NzYzMTI5YmQzOTg0NyBsZWdhY3ktdHJ1bmsKKzE3MzE5IDA3MjFkZjc4OTI3MGU3OTQzOGRhOGMyZWMwZjljMjBkZmMzMmYwOTUgbGVnYWN5LXRydW5rCisxNzMyMCAxNDJjYjRlNzMxMGNkZWE0YzVlMDgxZDE0M2U2NTM2ODI4Y2MxMjMwIGxlZ2FjeS10cnVuaworMTczMjEgMGVmNmVhNTg1OTBiNjBhNWEzNmM4NzA5OGRjNzdhZDhmYWMxZDUzYiBsZWdhY3ktdHJ1bmsKKzE3MzIyIGY5MGI4MjMyMDVmZjFlMWM2OGJiMmU3ZGVjMjk4ZjIwNjFiNjRhZGYgbGVnYWN5LXRydW5rCisxNzMyMyAzOWZmNmIzYzQzYWZjM2ViM2FiNGQ4NmY2NjcxYWE0NzllNmI4NmU3IGxlZ2FjeS10cnVuaworMTczMjQgYzNjNDk4NTllODBiMDhmZDExMGRlNGJhMjI1N2E2NTI2NDljOThhNSBsZWdhY3ktdHJ1bmsKKzE3MzI1IGY2Yjg2ZTJkYzU1YmJmZjI2YThjYTM0NzUxMmE1ZDRmYTMzMDc0ZWYgbGVnYWN5LXRydW5rCisxNzMyNiA5NTM3ZTc4OTNmM2MzZDQ1M2FjNTJmNjQ2ZWQ3OTBhYzY4NDNmNjU5IGxlZ2FjeS10cnVuaworMTczMjcgYjdiYjRhMzVjMTIxODk3Nzc5YThlMWQ5OTRhNzhiZjA1ZTgzOGYyNCBsZWdhY3ktdHJ1bmsKKzE3MzI4IGU0Y2E4YzIxMzc3YTNjYjczYjkzYzI1ZTM1ODA5ZDJmNWEzMzJlMTMgbGVnYWN5LXRydW5rCisxNzMyOSA3MTQ1Njc4MmQ4ZmQ1YTFmMzBiOTVmZDAxMDNlMmRmNjdiMTE1Mjg0IGxlZ2FjeS10cnVuaworMTczMzAgOTk5OGI3MDg3ZWU2MDQ5YWMwZmVjMWZmN2UwZmIyY2VjY2IzNjk4ZiBsZWdhY3ktdHJ1bmsKKzE3MzMxIGNjNjgzYTBhYzU2OGViODQ0NzA1MDgwY2IxZjNhM2JmZTI4MTZlNDMgbGVnYWN5LXRydW5rCisxNzMzMiA4OWUzYjZhNTRmZTkzYzZkYzUzODI4Y2M5OWI5ZTgyYzRmZGQwZDQ2IGxlZ2FjeS10cnVuaworMTczMzMgMGQxNWM4MDUzNzI2YjI3ZjRmMmIwMmZkMTk0YTEzMWY0YmI3ZWI3MyBsZWdhY3ktdHJ1bmsKKzE3MzM0IDUwMDQzNDllZGU0ZGY4ZWNhNDExZWVmYmM0OGQ4MmRmNTI1ZDQ2ZjAgbGVnYWN5LXRydW5rCisxNzMzNSA4YTYzYzYwNGVlNTk4ZmI2NDBmMWVlNTJmOTVlMjM1NzBhN2Q5ZDM0IGxlZ2FjeS10cnVuaworMTczMzYgYzMyZjU0OTBmNWUzYWMyZTgyOTI4MWI4ZTRhM2QzZDcxZDdmNzVkZSBsZWdhY3ktdHJ1bmsKKzE3MzM3IDM0ZjlhMDE3Y2U2MzJjY2RjOGMxNzI4ZDEyNTY4NDY3NDRlNGQ5MWEgbGVnYWN5LXRydW5rCisxNzMzOCBhYzAyNDY1ODZkNTI3ODJiNWNlZmViMTc5NjcxZWQxNzE0ODFhNjI4IGxlZ2FjeS10cnVuaworMTczMzkgNTEzNjlhNTdiMGFhYjQ4MGEwNzljNmU4YmQxM2UxM2E5Mjc1YTcxMiBsZWdhY3ktdHJ1bmsKKzE3MzQwIDhhNzE1ZDJkZmViOWY5YTYxZDdhYzI2MGFjNjNmNTMxYzQ1NWVlN2QgbGVnYWN5LXRydW5rCisxNzM0MSBhYmE3ZWI5ZDhkNjE0NTRmODlhNWZkODdlOTlkYjMzNjFiMzkxMGYwIGxlZ2FjeS10cnVuaworMTczNDIgNTJhNjAwYjM4ZjdlZTU5ODBjMGViZTYyMGY5ODljMWZmMzMyMWM1YiBsZWdhY3ktdHJ1bmsKKzE3MzQzIGY3OGYyODdiM2FkZGJjODg3YzE5NDRiNWI4NzNlNjk0MWZlMDE5MmYgbGVnYWN5LXRydW5rCisxNzM0NCAzMzRkOWFlYmFhZjEwYTAyZWQxM2EyOWI3MGQyMTE2NWE0MzlmYTA5IGxlZ2FjeS10cnVuaworMTczNDUgNzcyOGIwZWE5MzQ0MWM1MzAwYWNhZmVlMzA2OGM2OGMyMjA0ZWIwMSBsZWdhY3ktdHJ1bmsKKzE3MzQ2IDJiYTA4ZDk5MWM0MzMwYWY0ZDdlZTQ2ODEwYzI5MTc2ZTE5Mjg5MzkgbGVnYWN5LXRydW5rCisxNzM0NyBiMTk4ODZiZWEzNzg3ZmFmYzBkMjFiOGQ0NWFhMmE3MGFlYTRiNjhmIGxlZ2FjeS10cnVuaworMTczNDggZTZhOWQ0MTI2NTJkMjhhOWNlNTFjNTRjMjk5YjVjYzc0ZGJmMGI2NSBsZWdhY3ktdHJ1bmsKKzE3MzQ5IGFlZDM3ZjVhYTQ3NWU3NDczZjllOGQ2YWRjZDI5ZmE0YzA4YzFiZDggbGVnYWN5LXRydW5rCisxNzM1MCBkMzI3ZmM0N2Y4ZmRkZmFkOTdkZDkwZGRkMGMxYjhiM2E4NjFlZTgxIGxlZ2FjeS10cnVuaworMTczNTEgMzcxZTg4YWY2NDVmMWU4NTc0OTVmZGE1ZWUzYTAzMDU0NjNkMDVmZiBsZWdhY3ktdHJ1bmsKKzE3MzUyIDdmMjNlYzVjZDljYTg0NThjOTZhOGYxZWZiZDNkY2Q2ZjBkMzgwZmEgbGVnYWN5LXRydW5rCisxNzM1MyAyMWQ4NDc2NTNmNTRiOTU5OTAzMjQwMzEzOWJhMzRhMDkzMzdkNWFhIGxlZ2FjeS10cnVuaworMTczNTQgNThiYTkwZTRlOTg1ZjFiYWE5Y2VmYWFlZDFkYzQ3ZTlhOGQzMzI0ZiBsZWdhY3ktdHJ1bmsKKzE3MzU1IGVlZjI1NzMwZTY0ZGFhZTc4MjEyNDI5ZGY4ODM3YjM5M2VkODE0ODEgbGVnYWN5LXRydW5rCisxNzM1NiAxNWFjZDVjNTkxZmQ0YzA1MThkZjI0ZWI5YjMxMDllMGY4ZGVlZTE3IGxlZ2FjeS10cnVuaworMTczNTcgZGViM2U5Njg1YTFlZGRjMmUxYmE5ZWNjZTVjZjAxZjc4ZmQ0NDJjNyBsZWdhY3ktdHJ1bmsKKzE3MzU4IDM4MjNmYzcyMmI1MGM1MzA5ZDE3NGQ1NWM1YjliYTFkNDlmZDU0OTIgbGVnYWN5LXRydW5rCisxNzM1OSAyOGFjMTQ4ZDAxMjlhNzgwMmNjNzU4ZmZjMThkODZhM2ZhZWU0MjFmIGxlZ2FjeS10cnVuaworMTczNjAgYzg3MjdhY2ExNDA0Yzg5ZjM2NmJkZWYwZGYzNmFlNDhiZjMwZDlhNyBsZWdhY3ktdHJ1bmsKKzE3MzYxIGMyZjdhZDA3MGI5ZWZmMzAxM2U4OGZhZTllMzZlNmQ3NWIyMDJkMGUgbGVnYWN5LXRydW5rCisxNzM2MiBhMDM5MmY0Mzg5NjA1Zjg3MDUwN2IyOWQzMmRhMjA1YTZkMzg0Y2YwIGxlZ2FjeS10cnVuaworMTczNjMgNzVlZDQyNjM0MzY2MjllYWI0OTcwZGQyYjk5YjUyOWRhYjFhOThjNiBsZWdhY3ktdHJ1bmsKKzE3MzY0IDI5ZmFjYjc4ZDZmNDE2NzQwOGVjNmYyMjg3Nzk3NTA0ZDA2ZjdiOTggbGVnYWN5LXRydW5rCisxNzM2NSAwZDQ5ZGQwZjFiY2UzMTM1ZDI2MTliNzgyMjg0NzA1M2ViZThhZDIxIGxlZ2FjeS10cnVuaworMTczNjYgYjM0MDk1ZTQ4OGNmMWFjODgxOGIyMjEzY2JkYzI5YWJlODk0MmU5YiBsZWdhY3ktdHJ1bmsKKzE3MzY3IDNiNjE5Mzg1YTkwZTQ3Yzk2OGNmMDJjZmRjOWZiN2IzNzg0ZWQ4N2IgbGVnYWN5LXRydW5rCisxNzM2OCAxZGI0NTMyOTZjNzY3YmRhY2VmYWNlZmYwNjBhZjVkZTdhZmFjNTZjIGxlZ2FjeS10cnVuaworMTczNjkgYjgyODAyYmY3ZmZmMmRmY2M0YTlhZTcxOTBmMGE1MTBiYmQzNDRmNSBsZWdhY3ktdHJ1bmsKKzE3MzcxIGJmODQ0YWMyYzgxYWJmMzAyMzI1YzgyMTJiMjRiZWYwMzNiNjA5OWUgbGVnYWN5LXRydW5rCisxNzM3MiA1MTY3ZDIzYmQ2YjBiZjAxZGFkMjA4ZTAzYjY5NDJmYThmOTFiN2IwIGxlZ2FjeS10cnVuaworMTczNzMgNzQzNTMzMWI0OGVlNjU4NDA1MTE2NWU2MTA3NGYzMWM3OGIwYWM3MyBsZWdhY3ktdHJ1bmsKKzE3Mzc0IGFkZGFiYTk5MTA3N2Q0ODM4YmJkNjFmNjQ2ZTVhODA2YzAwYWEyZTggbGVnYWN5LXRydW5rCisxNzM3NSA5ZmVkNGVlYmM1ODY0ZmNkOGU0ZWVhNTA3MzllY2NjNTU2ZmEyN2VhIGxlZ2FjeS10cnVuaworMTczNzYgMjM1YmNkM2U1ZjE3NDQ2OTNmNmE4ZDgzN2MzZmU4NDVlNDVhZjRiNiBsZWdhY3ktdHJ1bmsKKzE3Mzc3IGNkM2U0ZDczZGY4ZTQ4NjNmNjMyYzUzZTBjMDA3OTAzOTZjNTA1ZjUgbGVnYWN5LXRydW5rCisxNzM3OCA5MTlkMzZmZGE4YzhkMTg1NzExODcxOGE3NjY1MTAzZWYzMzNmZWFhIGxlZ2FjeS10cnVuaworMTczNzkgZmM1NGUzOTcxNjlmZjZlYWRiY2IwOWY2NTRlODgzNTFkM2RmMWYyNSBsZWdhY3ktdHJ1bmsKKzE3MzgwIGZmNGFlNjkxYmU5YjUwZjljMmU2ZTEyZTNiNDQwMmM2ZGE3Mjg3MDQgbGVnYWN5LXRydW5rCisxNzM4MSA4NmQ0Nzg2NzM0Y2ExZGQ2NTAwZTRkZTM5NDBkZGRiMDEwZDA5ZDQ3IGxlZ2FjeS10cnVuaworMTczODIgNzM2NmJiOTVmMjEyOTkwYTgwYmE3Y2Y2NzNmZTQzOTQ2MDFjMmQ3ZCBsZWdhY3ktdHJ1bmsKKzE3MzgzIGJlMWFiMTg3MzU4YzgxZjA5NjJkYmM4MmNhYjgwMzUwOTgzNzA5NDMgbGVnYWN5LXRydW5rCisxNzM4NCA4ZDFhNDY4ZjhlNTkxNTRiNzAyYjllNGNjYzVmMzE3NGIzZWM5MTI0IGxlZ2FjeS10cnVuaworMTczODUgMzA2N2FlMjc0NThjMjQwNTkyZWNjMmVlNWE4YzYyODQ0NDMyYTQ5ZSBsZWdhY3ktdHJ1bmsKKzE3Mzg2IDcxNTA5NzlmOTY5NDE1NjU1MWVmOGY2NDQzZGRhYjJmODBmM2UzYzUgbGVnYWN5LXRydW5rCisxNzM4OCA2MzVmNjkxMjMzNDkzZTViNzkzNWE5NDI4NzRhMDBjYzgzMmVmNmMzIGxlZ2FjeS10cnVuaworMTczODkgYTVkNjU0NTlhN2I2OTIwMzBlNTQ1MTEzNGMwNjc3NGMwOGRhYjRiZiBsZWdhY3ktdHJ1bmsKKzE3MzkwIDY4Nzk1YzEzYWNlYTAwMTE2YTE1ZTExNmNmNDM0Y2I1NjdmMzFkZjggbGVnYWN5LXRydW5rCisxNzM5MSA0MTc1ZWU4MGEwODU4Yzk4NzZmMDczMDZmNzExYzhiOWRiZjg4MmYwIGxlZ2FjeS10cnVuaworMTczOTIgMDUyYjExM2M3NWQ0Y2JlNmVkOTYwMTQ4ODkxY2RmMGRkYmRjYjAxNCBsZWdhY3ktdHJ1bmsKKzE3MzkzIDM2OWFjMTg1MDU1ZDMxMWMwMWRhMzA4OTJjZGNhZGZhNzQ3ODNmODkgbGVnYWN5LXRydW5rCisxNzM5NCBkYzNiZWY3NzFkMDczMmM2OTFjZTVkYTk1YTk1MGUyNDI2ZGNkYTIwIGxlZ2FjeS10cnVuaworMTczOTUgMzVhZThkZmY4ZWQwOTliZWE5ZDlhNWQyYjA3MjMyMGI2YWEyY2E5NiBsZWdhY3ktdHJ1bmsKKzE3Mzk2IDU2MWMwYjFkNTE0YjM0Zjg5YWJjYjNjMmNlNDM2MWNkZmE2ZmQwOGUgbGVnYWN5LXRydW5rCisxNzM5NyBhNDVjYTFmN2YyNDE1YmI3MjQxZWQ5Nzg1NjhjYWRiOWU0NTQxYjM3IGxlZ2FjeS10cnVuaworMTczOTggYzE2Mzk2NTExYWEzNTZhYTFjOWRiN2Q4OGEzZjlmZGM0NTUzMGMyNiBsZWdhY3ktdHJ1bmsKKzE3Mzk5IGZmNzEyZGU4YmQ4MTM0NWQ3NDhjNDEyYWMyYTFmZGUxMmUzODc0OGMgbGVnYWN5LXRydW5rCisxNzQwMCAxMjI3NzVmZmEzNmM5M2ZlMDJkY2Q1NDA1NGQ1Y2ViN2E4ZjQxZmQ3IGxlZ2FjeS10cnVuaworMTc0MDEgZWZiYTMwNzBjZGRlYzhhZjliYWM4YTc2MWFiMTlkNmU4MjkwMWQxMyBsZWdhY3ktdHJ1bmsKKzE3NDAyIGFlZDEyMjZhN2ZjNGYzNGQxMGNjMzRhMDcwY2E2ZWRhMWI3ODk5YzIgbGVnYWN5LXRydW5rCisxNzQwMyBlOWMzMTM3NDUzMDIxN2E2NjhjMzgwNGQ0ZjdjOGQzMTAwZWY5Y2EwIGxlZ2FjeS10cnVuaworMTc0MDQgZDQ5MGMyYTE4NmRhZmNkOWFmMzhlM2RkNmZkMDMyNTc1Y2QzYzYyNyBsZWdhY3ktdHJ1bmsKKzE3NDA1IDdmYTQzMDJhNWEwODcwZjA0NjMxOTNhMjUwYWJmNDM5NGMzN2E4MDEgbGVnYWN5LXRydW5rCisxNzQwNiAyOGRmNGY0NTk2N2ZiNjRlYjkyYjhjY2VmNTE5ZWYwYTAxMzlkNWIwIGxlZ2FjeS10cnVuaworMTc0MDcgYThkMWMwMzBiMTlmZTY4MGM3MGI2NzY5NWU0MzYxMzk1NWIxMWNiMiBsZWdhY3ktdHJ1bmsKKzE3NDA4IGIzZjE1NjExNjI3MTIzZDkwOWY5OWY1MmM2M2U3N2JkYThhYjBlZjAgbGVnYWN5LXRydW5rCisxNzQwOSA4Nzc0NWU1NTQ3MjcxNGRjYzI4OGIzNWY3NDA4ZWJmM2M4NTJjODhiIGxlZ2FjeS10cnVuaworMTc0MTAgMjE5ZTAwMjIxYzg0MzVjZmI3ZmQ0OGYzNjM3OTcwN2Y5ZGNjOGVkZSBsZWdhY3ktdHJ1bmsKKzE3NDExIDRhYzA5ZTk3MDgyODJkZjU3MWMwNWVhMjQxYzAzMzkwMmM3N2ZkNDUgbGVnYWN5LXRydW5rCisxNzQxMiBhNzEzODVmOGI0ZGFiZmQ4MWYzM2QxZWRiYmU4ODYzOWI4OWU3NDdhIGxlZ2FjeS10cnVuaworMTc0MTMgNWYyYjllZjNmMmFlYzFjMzgyM2EzOTMzYTA0YzI5NjI3OTQ0ZTM0MiBsZWdhY3ktdHJ1bmsKKzE3NDE0IDI4Y2FhYTNlMjkyZmZlMWMzYjEwODg2ZTUxMDE1ZDliNjJjYTJiMzYgbGVnYWN5LXRydW5rCisxNzQxNSBlZWI4ZWU0ODgxMDZhN2NiOWI5ZWJmM2Y5YjAxYzgzMjYxMzQxMDJkIGxlZ2FjeS10cnVuaworMTc0MTYgMDdhMmRjMWI3MmFlYTJmZWQxNDllY2I5YzQ0MGEzMTFhNjhlNjZkNCBsZWdhY3ktdHJ1bmsKKzE3NDE3IGZlOGVmNDFjMzIyM2Y5OWY5YjE3ZGE2MGQ1MmNiNjEzNmQ2ZGViMzYgbGVnYWN5LXRydW5rCisxNzQxOCAwM2U2MTUwZmQ4ZDUyNGE4MmRlNTI3NWY2N2NmN2M0MzEwNWU0NWJmIGxlZ2FjeS10cnVuaworMTc0MTkgYmNmMjNiNTJiMDJmZDlhZWIwYWI2ODVkOWJhZDE0N2I2NTk4YjM3MiBsZWdhY3ktdHJ1bmsKKzE3NDIwIGFjODFlMGNhYzVmNmNkOGIwOWY2YTMxOGUyYzA0ZjE2NjFmYzQ1MGYgbGVnYWN5LXRydW5rCisxNzQyMSBiN2VkNTQzZjRjNTZkMmE2MjFmNmFjNTE0ZDc4MTM1ZjllZTVjNDk3IGxlZ2FjeS10cnVuaworMTc0MjIgNjI5NzljN2I5YTcxOWIzMTI0MzkyYmUxMjU4MDZkMmEyZGQ2MWI2NyBsZWdhY3ktdHJ1bmsKKzE3NDIzIGY0NDRjZmQ0ZmEwNzU0MTA5MjE5NjcxZTFkYTBjMzIwNzcxNWZmMmYgbGVnYWN5LXRydW5rCisxNzQyNCA1NWQ2NzMwMjRlNWY5NmI3YjQ2NjkxMzI1ZWNjNWMzNzRhMTk2YTI1IGxlZ2FjeS10cnVuaworMTc0MjUgYmNhMWQyMDEzNjI2YjkyNDU4MTdiYzk3ZTRkYTUxZTkzMTkyNDgwMSBsZWdhY3ktdHJ1bmsKKzE3NDI2IDYwMDUxNTc0N2M1MWEzNWEyNGYyNmI5Zjg0MjlkZGRkNGE4YWQxODggbGVnYWN5LXRydW5rCisxNzQyNyAyNWI3YWMwNTY4OWU1MDkyZGRlY2YwNjczMGY2OGJlMjI1ZWJhNmM4IGxlZ2FjeS10cnVuaworMTc0MjggODU3Mzc2ZDY5OWJiOWRmNDI5YTUwOGM3N2FkMGFmYWNlMjg2YmFhYSBsZWdhY3ktdHJ1bmsKKzE3NDI5IGI0YTM3YWIzMjlkYTI0ODFiOTVjM2MzMWE2ZDlhYWIwZGVmOGUxOWQgbGVnYWN5LXRydW5rCisxNzQzMCBiYTU0MjFmZjAyNTY3YjAyZTczODY1YjY0YmU4ZDRhYjk3ZGM0ODNhIGxlZ2FjeS10cnVuaworMTc0MzEgODM2OWZjZDc5YTY0YmNkZjQ4Zjk4YTZjNGU4NjFiOWYyNDU1NDIwMCBsZWdhY3ktdHJ1bmsKKzE3NDMyIDE4MzNkMmJiZjc2YTQ5Y2ExMGZlZmYzNzRjYTQ2ZTI1M2FlNjFmY2EgbGVnYWN5LXRydW5rCisxNzQzMyAzNDRkMjJiOWRiMzJhZDkyYjg4NTNjZjA2YjhjNTBiZjMxOTM4YjY4IGxlZ2FjeS10cnVuaworMTc0MzQgMjBiMjJmZGUxY2I3OWY4ZjNkM2JkNTgyNGRkZmM3NGZjM2EwNDUyMiBsZWdhY3ktdHJ1bmsKKzE3NDM1IDVmODdlZWM3YjZiOGY2NmQyYjZhNjBlYThlNTU4YjJkMDg2ZjEwY2UgbGVnYWN5LXRydW5rCisxNzQzNiA0ZDc0NDUxNWE3M2U0YjJiNDMyZTI2NWI1OTg1ZjVmNDdjM2YwYjgxIGxlZ2FjeS10cnVuaworMTc0MzcgNjQzNWNjNDdmY2M2ZmYyNDhiMTk2NzRlNzU2MGIzZmEwZjdlNDBlYiBsZWdhY3ktdHJ1bmsKKzE3NDM4IDIxM2RiYzg4MDE1OTk2N2ZjMDAzY2MxNzcwYzVkYmE0N2RmOTcwMzcgbGVnYWN5LXRydW5rCisxNzQzOSA4OWNlNDgwOTYzZjliYjQwZTRjZWRmYTA4YWIxMzIzNTUwZTVlMWUwIGxlZ2FjeS10cnVuaworMTc0NDAgZDg0ZDU3NTk0ODE1NTZhYTdhODIwZDM5ZmE5MGFhZDIyY2Y2NzMxNSBsZWdhY3ktdHJ1bmsKKzE3NDQxIGNkMWI5ZDhkMDQ1ZGQ5NGRlMmViMzkxYzMzMjMyMjc3YWIzNjU4NTIgbGVnYWN5LXRydW5rCisxNzQ0MiBlOGQ4NzU4YWRmZGI2MzhjNjI0ZDIzMzE5M2I5ZjlhODhjYTY0ZGNjIGxlZ2FjeS10cnVuaworMTc0NDMgZGNiYzA4NGQwNDZlYmE1ZDAyNGIyNDM1Yjk4MzM0NDU0MzdmNTA5MiBsZWdhY3ktdHJ1bmsKKzE3NDQ0IDlhYjQxOWE1ZTA1Mjg5MTk4OWE0NzI5ZTQ2N2UyNjMwNWY4NTZmNDcgbGVnYWN5LXRydW5rCisxNzQ0NSBjNDIxMDViZGI1ZmM0ZWIxYWU0NjBkZTZjZmFkMDNlNzIzZjc4YjZkIGxlZ2FjeS10cnVuaworMTc0NDYgMTZhOWMwNTdkYzExOWYyYzUzNTdlMjM4M2MyM2ZmMjM3NjE0NTU0ZSBsZWdhY3ktdHJ1bmsKKzE3NDQ3IDkwZjA3ODlkNTdiNzE3ZDMwZDI3NGRkOWY2ZjRlYjZhNDgzY2Q2MTAgbGVnYWN5LXRydW5rCisxNzQ0OCA2YzMxN2FkYzE4YTllMmJhZGYxYWNiNmI4ZDY5OWRlMzAzOTBlYjI2IGxlZ2FjeS10cnVuaworMTc0NDkgYTFlMmU4ZDU1ZWYwMDUwMDdhMGZmZDczYmU0MzRiZWU3MTMwN2U2YSBsZWdhY3ktdHJ1bmsKKzE3NDUwIDJhNDQxNmFkODM3YzQ1OTZhNDJmOTM1ZThmMWI1N2M2ZDcxN2IxMjAgbGVnYWN5LXRydW5rCisxNzQ1MSAyNTZkMWJiNjM4ODg5NDdmYzYxNjBkNjJmMDhkNDU0YjdjYTEzOGJjIGxlZ2FjeS10cnVuaworMTc0NTIgZjQ4NjE3NmY1NmY4NzA4NzBhYTQ3MWY5ZDU0N2IzYmZhMDViNWVhNSBsZWdhY3ktdHJ1bmsKKzE3NDUzIDY5Zjk2YjZjYWQyOTJiNDA2MGYxMmM0Mzg1ODg3YzQ5MDBmMWU0ZjkgbGVnYWN5LXRydW5rCisxNzQ1NCA0OWEwNDEzMzA0NjFjZTg0YTg0NWUwZWFhOGVmZDRlYTI4YjExY2FjIGxlZ2FjeS10cnVuaworMTc0NTUgMDE0Y2Y2ZDI5Mzk4NzJkYWFlMmE4MTBlOGEwMmIyZTE5MzhhNGZhMyBsZWdhY3ktdHJ1bmsKKzE3NDU2IDhlNWNhM2ZiY2RiNjQ2MzJiOTUxYzI0MjZiNGFmYzY5MDg0YmYwZTYgbGVnYWN5LXRydW5rCisxNzQ1NyAyNGZiYmYxM2RhYTViZDY3NmUzZjMxOGQ0ZWE4YzczM2VjMmYwNWFjIGxlZ2FjeS10cnVuaworMTc0NTggODBhNzgyMDg2YTU3ZjE5YjdjMmU2YWJjYWFlOGY4ZTE5MTE2MTQzMiBsZWdhY3ktdHJ1bmsKKzE3NDU5IGQyNjA5ZDQzMDRlZmM1Y2FjZmM3MzBkODVhOGNjYTllMDI0MDU3MmYgbGVnYWN5LXRydW5rCisxNzQ2MCA4YWQ5YmQ5Y2E2MGMwMDRhZWNiN2VlOGJhYjQ5NDBiZmFjZGZlZDkwIGxlZ2FjeS10cnVuaworMTc0NjEgZjJmYzY2YTYxNTNiNDA1NmU2MmQ5YWVlNWYxMGM4OTQyMTM2MmMwYSBsZWdhY3ktdHJ1bmsKKzE3NDYyIGFjNTgzZTZhM2M4YjUxYTVmMjBiNjM1ODZiMDY1NTlkNDJhMDNhZjIgbGVnYWN5LXRydW5rCisxNzQ2MyAxNDJhOTBlZWE4ZjRhMTg5MjE2OTE0N2IxM2M5MWRiMTEwM2Q1MTEyIGxlZ2FjeS10cnVuaworMTc0NjQgMGI2MzMzMjU4ZjU0N2QxZTkwMGNkZDI3ZDZkOWUyNzNkOWFmOTA3ZSBsZWdhY3ktdHJ1bmsKKzE3NDY1IDEzYzczYTIxOWNiMTFkOWVlMzc3ODNkNDcxNTUwMjUwZmFjMmNjZjQgbGVnYWN5LXRydW5rCisxNzQ2NiBkY2I5MjZlNzI5NmVjMGFkMmZjNGJhMDNlYzE0NTc2MDYzZWM5YTdlIGxlZ2FjeS10cnVuaworMTc0NjcgMWU2YzA0NGQ4ZTU5ODUxNTdkNmEwZGY2YmI1MDc3NTMxODU3MTRlNSBsZWdhY3ktdHJ1bmsKKzE3NDY4IDVhNTEyZWM4YTdhZGUyOGQ5ZTljMTViYzhlZDVlOTUyNTk5NTUxOTUgbGVnYWN5LXRydW5rCisxNzQ2OSAzM2UyZWYzMzllNTBkMTkxM2Q1ZjVjYjRjZDI2MzMyMjk4YWVkY2VjIGxlZ2FjeS10cnVuaworMTc0NzAgYzRkMDU5ODVjNmYzMDY5YzkxMmU2MWY1MDcxZmFmMzE2ZWYwYTNkZSBsZWdhY3ktdHJ1bmsKKzE3NDcxIDI4NDUwOGM2NTNjN2MzZTkzMWIxYmUyM2MxYzU1OWY1NjIzMmMwNjQgbGVnYWN5LXRydW5rCisxNzQ3MiA5ZDc5OGE3NjNkMjQxNzk4ZDcwZjA1MmQxNjUzN2NlNWQ4ODkxYTVkIGxlZ2FjeS10cnVuaworMTc0NzMgY2I3NjM4MzViMTc2MWRhN2U3MWVmNzMxZjc5ZWJiMzU0NTRjYTlhOCBsZWdhY3ktdHJ1bmsKKzE3NDc0IDRmMDY5ZjVkZmE3Yjk3ODBiMGE1MmE2NmRjZjY2YWExNDVlODQwMWYgbGVnYWN5LXRydW5rCisxNzQ3NSA0YWNjYzYzZDU2ZGM1NjY4NjQ4MTU3NDI4ZTAwZmQyMDIwZDUxODhmIGxlZ2FjeS10cnVuaworMTc0NzYgNDFhZmNkMDY5YTZjNTE4NGQwMzllOTBlZDQ0MjM0OGIyMTcxYTA0ZSBsZWdhY3ktdHJ1bmsKKzE3NDc3IDQ2Zjc2MmE2MWI5OTYzMDA1MjEzMTE1YWRlNTU1ZDIzMTI4YjgyMzkgbGVnYWN5LXRydW5rCisxNzQ3OCBhYWExZGMxNjFjZTNkMmYzMGIxYzM4MTU1NjQwNGRjOTYwN2U0ODM1IGxlZ2FjeS10cnVuaworMTc0NzkgOTYxODYwZDZiZWE5M2JhNTRmNDEyZTQ1MmU0MDYxZjMxNjJkMGZhMSBsZWdhY3ktdHJ1bmsKKzE3NDgwIGFmMzZiYTUwNjFmNmU4NDUzODhlZjMyNTllZDBlZTFhYTc4NzU2NjYgbGVnYWN5LXRydW5rCisxNzQ4MSBmZTQ3ZDIzOGI1MGRlMjUyYzBkODgyMDc0YTY3MzE0ZDNkNzQxYjY5IGxlZ2FjeS10cnVuaworMTc0ODIgNDA1OTUwMTdhOTkyZTU1MmUzYmNhZTNlOWEzYmEzYTczZGM5MGQ4ZSBsZWdhY3ktdHJ1bmsKKzE3NDgzIDcyMTFmYmUwZGI5ZDg3MDliODJhMjBmYzJjODk5ZmYwZmViZmI0YjMgbGVnYWN5LXRydW5rCisxNzQ4NCA5ZDk5YTJkZjY3NWY0OTZhYjRiMDc2YWRlOTI4MTczYjAwMWUyYjE2IGxlZ2FjeS10cnVuaworMTc0ODUgNzg5YzViNmMwZjA5YTA5NzljNTkyNGZlMTEwZWIwN2E2ZWI1ODJlYSBsZWdhY3ktdHJ1bmsKKzE3NDg2IDNjZDIxNzRlZTEwZDExNjIyMzQ1MzRjMjVkNDZjNDgwM2E2N2I3OTIgbGVnYWN5LXRydW5rCisxNzQ4NyA0ZDZhNWU1ZmU5OGRjODkxMDY4ZDRlODJiNDIxMGY5Nzk4OGM1ZGU0IGxlZ2FjeS10cnVuaworMTc0ODggN2QwZTM0NTBlZTQxMDc0NmE0NmE2ODI3ZDUwMTI4N2ZmOWNlMzVhNiBsZWdhY3ktdHJ1bmsKKzE3NDg5IDhiZDUzNDllN2FhOGUwNGM2MTVjMzczNDQzYjAyNjdlN2E2MDk4MTIgbGVnYWN5LXRydW5rCisxNzQ5MCBkYjllYTViNWYzMzdlN2Y1ZjJhZTI2YzNhNmEzMjdkMDU4YWQzNTU0IGxlZ2FjeS10cnVuaworMTc0OTEgMGMzMDNhMjJkOWE0OTcxMTkxMTRkNjM2ZTE0Njc5MTMxMWM5NWJkMyBsZWdhY3ktdHJ1bmsKKzE3NDkyIDM3Mzk3YmQxZjhhOGRiNGIxODZmMTAxNTUyNTQ4OTA1OTQ5OGYwOTMgbGVnYWN5LXRydW5rCisxNzQ5MyAyZTE3MGMyZjYxZTEzOGIwZTdiNWFlOGVmMmZmNTcwNTExMjI1Y2ViIGxlZ2FjeS10cnVuaworMTc0OTQgMTMzNjI0YWJjNTI1YWVjZGViZjNlYjVlMGEyNzhkZDVjZDdiMmU5NSBsZWdhY3ktdHJ1bmsKKzE3NDk1IDNmZWZlYWZhM2Y0YTBmNWEyYTZlNmIzNDU1OTA4ZDAzMzk3MDcyOTcgbGVnYWN5LXRydW5rCisxNzQ5NiA4YTdkNDdkMDc5ODEyMmI0ZTkzYTc4OGEwZDRlOWE0MWJmZjljYWNiIGxlZ2FjeS10cnVuaworMTc0OTcgMDhlMWMzYzQxZTYwN2Y0NjFmZWEzYTAwMTliN2QyOWNkMjE5MmI5NiBsZWdhY3ktdHJ1bmsKKzE3NDk4IGI5NTRjMzNmMGI0YjBjZDc5MzRmMGE5MjJhN2Y3MmJhNzUxMTcyMDUgbGVnYWN5LXRydW5rCisxNzQ5OSA2NjM3YzA5MWZmNDRmMzYyYjg5M2QxYWZiN2Y3ZThkYzNhZWY0NzA2IGxlZ2FjeS10cnVuaworMTc1MDAgMmQzMGMzNWZlZWJlNTAzMWFlODc1NTFlMmU4MWEwMzk5MGUxYzMxYiBsZWdhY3ktdHJ1bmsKKzE3NTAxIDFiODA2NTUzOTA5ZjVkYmJmMjI0NjgyNmI4MTljYTllNjYwZjk0OTUgbGVnYWN5LXRydW5rCisxNzUwMiAzYjcwZTYwMjk5YTMxODc3NTA2MTI1YmI2OWJmNTNhZGYxOTgyODFkIGxlZ2FjeS10cnVuaworMTc1MDMgMTVjYmUzOTlhOWMzYjU4NWMyMDQzNDhkMjgxNGMzODkwZTU5Y2FlMSBsZWdhY3ktdHJ1bmsKKzE3NTA0IDFlYzZjNjMzNDdlYTM4MzNlMjc3YTU2Y2EyYWJlYTRiNTRlZmFmYTggbGVnYWN5LXRydW5rCisxNzUwNSBlZGRhMzUzYmRlMTJhMWRiNmJlODIwNzZmODA1YjBiMjU0M2M5Yzg5IGxlZ2FjeS10cnVuaworMTc1MDYgN2ZjNDU2OWQ5NjI1MDcwNTJjZDZiMzM3ZTg0MGY0NDRjZDBiY2ZmNyBsZWdhY3ktdHJ1bmsKKzE3NTA3IGY0ZjM4NDFhMjZlZGQxNGJiYzQ2OTMyNjRlMTk3ZjA1YTVlM2M4MTIgbGVnYWN5LXRydW5rCisxNzUwOCAzZDZmZTY0YmNkMjE4YTBjNGNlN2IyZWVhMWI2YjNhYTYzYTVkOGYzIGxlZ2FjeS10cnVuaworMTc1MDkgMGJkNzQ2YmM3NjI3ZjdmNDA3YWYwMTQ3YmIwM2YyZGJlNTZmNzlkMiBsZWdhY3ktdHJ1bmsKKzE3NTEwIDAyMjg5MTRlMGM1ZjBmNzEwYjZkYjI0NDBlM2Y0NjM3M2Y2MGZhOGYgbGVnYWN5LXRydW5rCisxNzUxMSA2MDAyOWUzZTA1ZWVhOGUxZmRhMDAxMjk3NmE5NjI1OThiZTQ1ZjE2IGxlZ2FjeS10cnVuaworMTc1MTIgOTQ2NzA5ZTgyYmUwMmQ3MDYxYTA5NmM2ZDdlZDY2ODMwMzhjM2M0MSBsZWdhY3ktdHJ1bmsKKzE3NTEzIDY4NmQzY2NhZWI0YTdlMWEwMzEyNDE0NmRkZWRjMTUyYzJhYTc2OGYgbGVnYWN5LXRydW5rCisxNzUxNCA2OTlmYmJiYTI5YTczMGM4YTA4MzgxOWNmZjZkYTZiY2VmMTAwNTcxIGxlZ2FjeS10cnVuaworMTc1MTUgOTgzNTAyYjJjZDQzYTQzZjhhYjdkYWFlYzg3MzhmYzcwNDdiOWI5NiBsZWdhY3ktdHJ1bmsKKzE3NTE2IGU3ZjczZDM1ZWNkOGMyZjgyZjFiNjQ5MmRiY2NkZGRhYWYyMDBjMDUgbGVnYWN5LXRydW5rCisxNzUxNyAyZDYxODhjMmVhNTZmMWJhZjllYTlmN2E5YzE1ZDIyYzFkZjZkZDkyIGxlZ2FjeS10cnVuaworMTc1MTggZDFlZDMwODI1ODFhNjI4MTVmNGYxZjY5OTNjYzJkNjIwNTNkOWI4MCBsZWdhY3ktdHJ1bmsKKzE3NTE5IGY4Mzg0MDk4NjI2ODQ0MWYxYmE5Y2JhMTExNDFhNWFiZjcyNjYzZjQgbGVnYWN5LXRydW5rCisxNzUyMCA2ZmNmNWE3MDUzM2NmMGNlY2ViOTIwMjJmNmU3ODZkNjM4NTU2YTFhIGxlZ2FjeS10cnVuaworMTc1MjEgMTU3MDg1NDkxMWNlMDZlN2ZmZmU0ZTBlYWI1MzBjOGYzY2Q2YTg1MCBsZWdhY3ktdHJ1bmsKKzE3NTIyIDA4MDA1NGIxMjM1NjVhNzRiM2E1ZjVjZWVkOWJjOTllMjRmZDdlOGEgbGVnYWN5LXRydW5rCisxNzUyMyA0MmM0MWRhZGYyOTM2ZmU0MGM2MjlkMjFhODc0MDk4MjdmNDNjNjlkIGxlZ2FjeS10cnVuaworMTc1MjQgYTViNDAyOTVkYzE5YmE3ZTI4NzhiM2ZhOGQ4ZTgyZTJjNjllMWU1YyBsZWdhY3ktdHJ1bmsKKzE3NTI1IDhkYjg2MDZkODRlYWEwYTU2YzIxM2RlNTVmNjkxZWJlZWVmZjhlZWQgbGVnYWN5LXRydW5rCisxNzUyNiAwYzZiOWRlMTkxMDBmNDkzNzIyMTcwYmJjZDc4N2RiMDYzZTIzMzg4IGxlZ2FjeS10cnVuaworMTc1MjcgMWIyMGFkNmViNTAxOTQwZDczMWM4NjU4ZGYyMzM2NGE1YjE2Njk0YiBsZWdhY3ktdHJ1bmsKKzE3NTI4IGRmOGQ1NzVkOTY3ZDg4ZDA1ODExYmQ2ZWQ0NjBiYmZhNjcxZDgxZDkgbGVnYWN5LXRydW5rCisxNzUyOSA3NTZjOGM2NTM1ZmUyZGRlYzJmMGVkY2Y4YTI0ZDQ5YTA4MzljZmNhIGxlZ2FjeS10cnVuaworMTc1MzAgMjIwMTFkOTc2OTE3Mzg0ZjY4OThmMTA5YjliYzgwNjE1NzExNmMxZCBsZWdhY3ktdHJ1bmsKKzE3NTMxIDNjNTg3MTZmYWZkZThiM2Y3M2Y2YThhZTdkNmY4MThmNjE0MDNjMTkgbGVnYWN5LXRydW5rCisxNzUzMiBhNzgxM2FkNzNhNGVkZWVkMDMyY2I1ZjlhMzMwMWRjMTkxZGUzMTNhIGxlZ2FjeS10cnVuaworMTc1MzMgOTRjYTg3YTNlNWVlZTI4YzU4MGZhN2RlYzk2NGM1YzAwYjVjMGU2ZiBsZWdhY3ktdHJ1bmsKKzE3NTM0IDA4ODIzMDk5YWU2MjZlMTEyMmI0Yjk0NjJlM2U5OGY2MmQxYmIxZjEgbGVnYWN5LXRydW5rCisxNzUzNSBlMmQ2MmQ3NDdmN2E4MmMxODNjZTdmMDRjNTBmOWE5ZDhmYzgzMjg3IGxlZ2FjeS10cnVuaworMTc1MzYgZTQzMmExODVmNGRiODMzMWIzMWVkYTZjMGVmODYzYjMxZTc3NWYzMyBsZWdhY3ktdHJ1bmsKKzE3NTM3IDI5NTEyNjQzMzg1NmNkMzMzYTIzYTAyYzFiYjhmOGExYjU3ZTY2MzIgbGVnYWN5LXRydW5rCisxNzUzOCBlZGYxZTE1YzY3MWEwODRlNTM4ZTExYmFkYWU4NjFmZTA5YWJjOGY3IGxlZ2FjeS10cnVuaworMTc1MzkgYzUyZmYwMmJiZDcwNGZlNDdjOWNmNTJiNjQ1NGZmOWQ0MzU1NmE5YiBsZWdhY3ktdHJ1bmsKKzE3NTQwIGZhZjNlNzM0MjU0ZGQ2ZjYxMWFmY2JiODA0YzZmOGU1YTFlYWFiMjQgbGVnYWN5LXRydW5rCisxNzU0MSBlMzg0ZjUwMTQ5Yzk0MDQ0NTA4YWU5MzU3ZjBmNzA5ZjJlYWRlMTA5IGxlZ2FjeS10cnVuaworMTc1NDIgZTg2ZmE3ZTg1MGYxNDIwYmNiNTQ0OGI5MmYxZmE4ZjFmNDczNmE5OSBsZWdhY3ktdHJ1bmsKKzE3NTQzIGQ2ZmZiNmQ3ZmU4YWQzNjVmYzFjNTVkOTk0NzExYTA3OTMyYzAwMjkgbGVnYWN5LXRydW5rCisxNzU0NCBjZWMwMDNiYTNjN2I5NzljNzQwM2JmMWI4OGRlMTk3NjI5NzgyMjYyIGxlZ2FjeS10cnVuaworMTc1NDUgNjdhNDkxM2MwNzdmZWZjOTEyZWY3YjMxZGNhZmQyZWMzN2NlMWNjYiBsZWdhY3ktdHJ1bmsKKzE3NTQ2IGJhYjRmYTZjM2MyNDFiNmE5ZGE0YTNkNmMyNjEwZDlmZDcwZjk2MTggbGVnYWN5LXRydW5rCisxNzU0NyBjNmY0M2M2MDM2YmExMDUxMzdiYjcxMmQ0NTE3MjJkZWE2ZGYxZjI4IGxlZ2FjeS10cnVuaworMTc1NDggMzQxMTA1MzhiMTE4NDQ4NTVkOGMxMmExNDhmNTcyZjgwNmEwNTI5MiBsZWdhY3ktdHJ1bmsKKzE3NTQ5IDJiOWIxNTk2NTk1MTVmODg5ZWE1NDZhMTZiY2JiOTczZTBjMDQ5YTUgbGVnYWN5LXRydW5rCisxNzU1MCBlZjM3MDc4ZDI3MmQ2NDJjMTEwNTRlZDVjZGRkMGMyZjFiNDhlZGI4IGxlZ2FjeS10cnVuaworMTc1NTEgODUwMzhhMDI0YjE5MWE4ODgxYWRjNmZkZGQzNDk2NTkyYmEzMDM5ZSBsZWdhY3ktdHJ1bmsKKzE3NTUyIDllM2RjN2M0N2FmYTI5ZjEwNzU5ZmEzMWE5MTg5NTQ3ZTMxMzNhOGYgbGVnYWN5LXRydW5rCisxNzU1MyA0MDdjZTFjOTllOThlMzI5MTU2NjZkNDFlNTExMDY4OGQ3ZGM2NjViIGxlZ2FjeS10cnVuaworMTc1NTQgZmE4MjgyMGJkM2ZmM2RkM2MyN2E3N2VjZTY5OWRiYWEwMDg2OGU1NCBsZWdhY3ktdHJ1bmsKKzE3NTU1IDk1ZmUwODNjNzhlZTVlMGI0ODMyZDQ0NGIxMDI3ZGRhMGZiZmQ1MzMgbGVnYWN5LXRydW5rCisxNzU1NiA1ODFkMWU3N2UzNWU3NWRlZDMzN2JmNjY4NTY3MjAwMTIwYjc3OWRiIGxlZ2FjeS10cnVuaworMTc1NTcgOTFkZGU3YmZmZTdkOWUzYzIwOWFhNTY1YzRkMmZiMTQ1NjVjMjExOSBsZWdhY3ktdHJ1bmsKKzE3NTU4IDQzOTM2YTI1ZWFmMTAwMzQ4OTI2MjRjNjRlN2RkNGI1YTg1OTZjMGQgbGVnYWN5LXRydW5rCisxNzU1OSAwNGMzOThlNzQ4Nzg5YzdjNDAxNGYyZGI0MjZkZDQ0M2Y2ZWFjODg5IGxlZ2FjeS10cnVuaworMTc1NjAgNDcxMmY1YjhmMjc5YWYyYTg3Zjk1MTEwOGU0N2JjOGU1MDE0NTUzMCBsZWdhY3ktdHJ1bmsKKzE3NTYxIGZlZjliODlhZDE2MjJhZTk3YWM2MWY1MTUxOGUzNDFmMWE0ZGYxMTAgbGVnYWN5LXRydW5rCisxNzU2MiAyZmNiOTkwYjk2NWY4NmY1ZjJhYTUyYjQ3NTNhMTUyNWVlNWY1YjQ5IGxlZ2FjeS10cnVuaworMTc1NjMgODliMmFlZTQzZTBiZDUyN2RmMmU2YmE3OWZiNDZlMDUwMjczNjhjYSBsZWdhY3ktdHJ1bmsKKzE3NTY0IGUwMjQ0Mzg1MjJkZDcwYmIzN2NhZWRmNTY0Yjk0ZjZiOGI4NGMxNmQgbGVnYWN5LXRydW5rCisxNzU2NSBhYzZkZjA0OTRjNTgyNmJiYmY4M2FhZDAyZGYxNzA5YWE1NDNiYmE2IGxlZ2FjeS10cnVuaworMTc1NjYgMTkyMjNiYmYxYWExOWU1NTBhZTVhMmUyYmEwMzIzNjdiNWU2YTJkZiBsZWdhY3ktdHJ1bmsKKzE3NTY3IGE2OTcwNDQ5ZGY0MjVhNWY0ZGM1M2M3NThiMTAwOWE5NjVlZTllNzYgbGVnYWN5LXRydW5rCisxNzU2OCA1OGI4MzJiODc0NWVlMmVlNjNlYjZlNzg4MWVlZGQ4Zjc5OGZmYjIzIGxlZ2FjeS10cnVuaworMTc1NjkgMmVjNTlhMTFkM2M2MWUzMTZhZjIyNWY2M2ZhMDRjOTU1MDVhNGRkZCBsZWdhY3ktdHJ1bmsKKzE3NTcwIDgzMGU4ZWNlNjU2MzliNTNiZGU1NmFkNTA1Zjk0MGVmZGFkMGVlMzUgbGVnYWN5LXRydW5rCisxNzU3MSA1YWUxZDhhOWYxZGQ4ZWZmYjczZTQ2MjdhNjg2MzlmMTg3ZjNiZjQwIGxlZ2FjeS10cnVuaworMTc1NzIgYzNhMjdiNmViZTFiY2IxZmUwMjViMDFlYzI5OWI1ZTJhZjk1Y2JhNyBsZWdhY3ktdHJ1bmsKKzE3NTczIDY5Y2E0NmFmNDM2YTZjMjNiNGU0YmY0MWJhN2MzZDNlZDUyYzliYzggbGVnYWN5LXRydW5rCisxNzU3NCA4NzAyMzcwODliYTI4ZTc2MzUwNzU2NzYyZTI5YzJlOGIyZDEwMDhmIGxlZ2FjeS10cnVuaworMTc1NzUgZDhiNzllMzljNDdlMTQ0MmZmMDk5YTEzMTZiYmYyMjA5OWJhZTgxMyBsZWdhY3ktdHJ1bmsKKzE3NTc2IDdmNDljNTg2NGY3NzQxYjUwZjY3ZDY5OWE0MmQzODc5ZjI0ZTlmNDYgbGVnYWN5LXRydW5rCisxNzU3NyA0ZDJlOWNmMWViMjBiNmJkYmEyMGRhZmEwMWZmMWJjZTE5ZDhjZDY0IGxlZ2FjeS10cnVuaworMTc1NzggYzA0YWFjMTg2NTZhYjI5ODNhMThiYTlhZTM0MGQ0NjE0Njc3NDU2YiBsZWdhY3ktdHJ1bmsKKzE3NTc5IGE2ZjgwMTNiYmMzZDE2ZjBhNTk0ZWEzYzczZDJiYTgzYTRmOTE4ZWQgbGVnYWN5LXRydW5rCisxNzU4MCAwNmJiNWQ1ZDg5OTI3ZDU2NTFjZjAxOTc5MDA1OWY1NDM1MGQ4MzEzIGxlZ2FjeS10cnVuaworMTc1ODEgMTc2NjYwZmYwYzk1OTY2OTQ4OTA4OGM0MjQ0NTEzMzcyOTc2NWQ1NiBsZWdhY3ktdHJ1bmsKKzE3NTgyIGJmNDZmMTg1YzVlNGMwYzE2MjZmZGFjNDcyYzQ1M2FkMzNjOTRjOTkgbGVnYWN5LXRydW5rCisxNzU4MyBlMmMwM2MzMGIwNmRkZmM2ZmVhY2M4M2RiZjdhMTE5YWIyODNhOGRjIGxlZ2FjeS10cnVuaworMTc1ODQgODc0OWNjODQ3OTcwMjI2NWExMjAxMDQ5NmVlOWQ2MWYyZDU0NTQxNCBsZWdhY3ktdHJ1bmsKKzE3NTg1IGZmYzMwMGU5ZDg2N2JkMWQ5ODQwN2ZkMDcxODg5MWE2M2E3MWYxYzcgbGVnYWN5LXRydW5rCisxNzU4NiBmMWFiZTAzYjJmMTY4NDY3Mjk4ZGIwZDM1ZjgzNzE5N2JmMDJhZTU1IGxlZ2FjeS10cnVuaworMTc1ODcgMzM2YTYxNzllMDU5NzI0ZGVmODAyZDU3YWNhM2Q4ZTdhMDZlODE4NyBsZWdhY3ktdHJ1bmsKKzE3NTg4IDgxNGY0MjFlMDMyNjczMTZkN2I3ZGE0Mjc4YjMwMmQ4MjhhZDgxODggbGVnYWN5LXRydW5rCisxNzU4OSA4YWExMTJmOWUxMzBjMzJkMTdmYjg5MTg0ODg4ODlhMGM5NzYwOTg5IGxlZ2FjeS10cnVuaworMTc1OTAgZDQ2YTA0MzZkNmUxOTgxN2YzZmUwNmYzYTA3ZGRmZDdjZDhhOThiYyBsZWdhY3ktdHJ1bmsKKzE3NTkxIDJiOWE4OTAxNjJiMDUzOGU0NzQyZDNiNGUwNDcyZTY0YzJhZWZkOTkgbGVnYWN5LXRydW5rCisxNzU5MiA3ZWQwODBiOGNkYWNhNzc5YThmN2RjYWZkYzcyY2ZjNmZlNmRjOGZkIGxlZ2FjeS10cnVuaworMTc1OTMgMjIxNDA2MjY5NWU3OTllNjk2MzY1Y2UzYmNiYTk5MDBkNTNkNTYxOCBsZWdhY3ktdHJ1bmsKKzE3NTk0IDU3MDQzNzM0MWEwOWQwN2ZmYjYyZDZlYWNkMGVmNzdhNjg1ZjI0MzMgbGVnYWN5LXRydW5rCisxNzU5NSA4YmI2ZGNhNjZlY2RjNDhhN2U1YTRiOWZmYjZmNDc0YjAxZjU4ZTExIGxlZ2FjeS10cnVuaworMTc1OTYgYzFkZTJjM2U0NWNhNjQ2N2EyM2M5ZTI3ODU5M2M4OGJkYzE5YzIzMyBsZWdhY3ktdHJ1bmsKKzE3NTk3IGQ3MzJhM2ExMzk4ZWIwOGZiYTljNzdkYTZhM2Y1NjY0M2MzNzNiYTkgbGVnYWN5LXRydW5rCisxNzU5OCA4ZGIwOTZiNzgyZjk3MzNkMmJkZWVlZWExODlkMDY2YjAwYmFiNDY3IGxlZ2FjeS10cnVuaworMTc1OTkgNGY5NWNmMWIyNjY0ZjdjNzJiOTFhNGY2YjQzMzRmMDNmMzQ0OTNlNiBsZWdhY3ktdHJ1bmsKKzE3NjAwIDcwOTQyNzY3ZGM4MTBjOGJlNTNmMDVmZTc0Mzk1ZDdlZWU3OWIwMzQgbGVnYWN5LXRydW5rCisxNzYwMSAwMjlmZjQ2Yzc5OGM3YzExNjViM2VjNGYwMjg1NDM0NmQzMGRmMmYzIGxlZ2FjeS10cnVuaworMTc2MDIgZTE1NGU3OWY0ZDIyYmY5NmJkMTQzNTQ3ZmVjOTk4NjA3YzZkYjc1ZSBsZWdhY3ktdHJ1bmsKKzE3NjAzIDlmOGIyMTNiODQxNTc3MTJlMTY4NTMxNTNjZjljOWY2ZTcwMzVmNjIgbGVnYWN5LXRydW5rCisxNzYwNCA2ZjNmZDdhMmE3YmNiMzgzYmJhMjYzYjMyOWVhMmQwYWRhOTg0YWRkIGxlZ2FjeS10cnVuaworMTc2MDUgMDBlODE3MmFjMGNiOTU0YjU0ODU2Yjg0YjcyYmEzN2Q5ZjE1NTg0YSBsZWdhY3ktdHJ1bmsKKzE3NjA2IGY4OTg0ZjAzZGUyMDI1MzE5MWY1YTQ5MDMyYmVhM2Y2ZDNmNmQ5NGEgbGVnYWN5LXRydW5rCisxNzYwNyA0NmE2OTkwNzY5ZDE3MGFiNTY2MDZmNjAwM2JkYzIyOWFjYzFmNTFiIGxlZ2FjeS10cnVuaworMTc2MDggOWZmY2Y3NDljMTVhOWZiYmM2NTg4MTVjYWViZGVlYWVlNmEzNWVhYyBsZWdhY3ktdHJ1bmsKKzE3NjA5IDJmNzdjYjg1NDdhMWMwMTQyZjRhMWU2ZWUwZjQzM2Y1ZWUxMDhiNjEgbGVnYWN5LXRydW5rCisxNzYxMCA5MzIwNzA3NmQ2MTIxOGQwY2U5ZDlmNmIwZjQ3NDEwY2I1NTRkZmE4IGxlZ2FjeS10cnVuaworMTc2MTEgNmU5MzMxZTY4YTNiZDc4ZTlmODQ1ZTUyYWM1NDNlMmI0YzU3YjdiZSBsZWdhY3ktdHJ1bmsKKzE3NjEyIGI0ZWE1Nzg3MGYyYWFjNTlkMjBjZmQwMzM4OTNhNjc5NjViZmQ1MDkgbGVnYWN5LXRydW5rCisxNzYxMyBhODY1NjhmNTQzNzVkZGM0ODI1MDVhZjc0MzE3Y2UwZmYzYTUyOWFmIGxlZ2FjeS10cnVuaworMTc2MTQgNWE5ZGZmZmYwZGEyYjQ2ZDAzMDEyOTIwY2QzNDE5OTEyNmIxNTczYiBsZWdhY3ktdHJ1bmsKKzE3NjE1IGI1NDUxYTY4NzJhMjk4YTE3NDBjNGM2MmVjMTA5M2M5OTA5NTM3NTAgbGVnYWN5LXRydW5rCisxNzYxNiBjNTY2YWM5YzUyZDc5MmVjY2Q1YjBmODA3OGI3ZjQxNWJkYzI1MDE0IGxlZ2FjeS10cnVuaworMTc2MTcgNWY2MzhhMjk5ODg4YzcwNGQ3ZTQyZGVlNThkODg3N2M5ZDYzNmFiOSBsZWdhY3ktdHJ1bmsKKzE3NjE4IGQyNzA1ODQwNDk4MTA2MzYzNzRhNjFhNzBlOWQ1ODMzOTQwNTA0NTYgbGVnYWN5LXRydW5rCisxNzYxOSA4MjhlZjdlY2QxZjc2Y2Q4MzNhYzhlZWVmOTEzMDk5ZWMxOTY2NTUxIGxlZ2FjeS10cnVuaworMTc2MjAgOWZlNWM4MmM0YzhhMGI4YzRhZTQ3YjZjN2E0M2QxNzE3YjFmZDc4NCBsZWdhY3ktdHJ1bmsKKzE3NjIxIDcyODYwZWYwMzE3MTQ4NjcxZmFlNzBhMmZlYmZhY2Y2MWFlYzRmMGQgbGVnYWN5LXRydW5rCisxNzYyMiA2MGNlMzdmMDY2ZDhjZWExMDgyZWM2ZTZkMmRhZWMzNTg1YTY0OGZiIGxlZ2FjeS10cnVuaworMTc2MjMgOTJhZWUzMWQ3NjEzOGJhNzRkZDg4MjhhMjJiMjJkMzMwYmQ4ZWUwZiBsZWdhY3ktdHJ1bmsKKzE3NjI0IGFhMThlNTIzOWI0NjljM2JmMjAxYWU1YjE3Y2E4MWE3YmM0NGZlNDAgbGVnYWN5LXRydW5rCisxNzYyNSAzZmZhY2YxZGM4ZjA1ZjZlOWY5MGQyZDA3NjU0OWQxN2M1MzViNDZjIGxlZ2FjeS10cnVuaworMTc2MjYgMTMzMDA3NjQ2ZmI0NzcwZjcyNGM4YWJkMDVjMThhZGY3Y2M0YzE1YiBsZWdhY3ktdHJ1bmsKKzE3NjI3IDY0ODYzYzU2Y2U4ZTNlOTA5MjQ1MjJjZGVkMWE4NWNmMjg0ZTlkNjQgbGVnYWN5LXRydW5rCisxNzYyOCBjNWVjMGIxMWY4Yzk1ODM4ZmZmMWQ2MzVmNWUxNjhiNjQzMmI1MWUwIGxlZ2FjeS10cnVuaworMTc2MjkgNTIxNzRiMDAyZjFmZjM3ZjMwYWQ1NTEwY2JmYWM5MTI1N2IzODhmNiBsZWdhY3ktdHJ1bmsKKzE3NjMwIDc0NTZjOTdjOTllZmEwNjg2NDZkOGJkYjc4MTQ3NGFhZTY3MzUxNmMgbGVnYWN5LXRydW5rCisxNzYzMSAxNzk4NzcwY2EzNmIyMGFjNzllYzhlMGVlNzNlYjhkMmNkZGViZjBhIGxlZ2FjeS10cnVuaworMTc2MzIgNmI3NzJjNTI3Y2E3NGNmZTcwYjk2MWM4NTVhYWUyYWQ2MGRkOTJmMCBsZWdhY3ktdHJ1bmsKKzE3NjMzIDhmYWUzZjkxMTYxZjhlYjRkYjJkNTQ0OGU4ODAyMjk2NGY3ZWQ4NjkgbGVnYWN5LXRydW5rCisxNzYzNCA3YmE0OTNiYzI0YTBjMGY4MWY0NjlmZmEyYTlkNjQyMDlkZDRhZjJjIGxlZ2FjeS10cnVuaworMTc2MzUgMDY0ZTQzNGU3NDRmMTcyNDNmMGYyNzEzNjcwNjYyY2Q3MzNjYWY0ZiBsZWdhY3ktdHJ1bmsKKzE3NjM2IDA4MTY3MWNlZjdjMWI2ZGZkMTg3NjJkZjZmY2EzM2M0NzMyNDVmYjkgbGVnYWN5LXRydW5rCisxNzYzNyAzYzAxZjkyMWM0NTNlYzM2ODQ2NDcwMzM5NWQ1MzhiMTVkOGYwYjE3IGxlZ2FjeS10cnVuaworMTc2MzggNzdlZGRkZGJiN2NjZjk0MTg3Njg4NzgyM2Y1YmIwNzdiZjYzYzQxYSBsZWdhY3ktdHJ1bmsKKzE3NjM5IDA5ODVkZGZkNDQyYmU5YjA4ODI2MDgxM2M3N2QxODBiNzcxOGUyNGEgbGVnYWN5LXRydW5rCisxNzY0MCBkMGI3NzdlYzllMDI3YWRjMWJmZjVlMjQ0MzMwNTFiNjlkOTU3Y2RiIGxlZ2FjeS10cnVuaworMTc2NDEgYWQwZDkzMmNjZTMyZDc2M2U3ZGQ5ODE0Mzk4ZjE0N2ZhYzRiYjIxZSBsZWdhY3ktdHJ1bmsKKzE3NjQyIDFlZGI2YjZlM2I1YjU5NDIzNzZlODgxZjQ4M2ZiZmRkNzYxN2NjOWUgbGVnYWN5LXRydW5rCisxNzY0MyAxNzllMDk4MjM4ZTgwOTYzOWJlZWM3MDM0ODZmZmUyMTEzODU2YWRmIGxlZ2FjeS10cnVuaworMTc2NDQgYmUyZGY5OTM1ZWRkOGZhMWJiMTA5ZGM2OGE0YTFmZTg0ZGE4YzYxNCBsZWdhY3ktdHJ1bmsKKzE3NjQ1IDQzMjkzY2Y3NTNjMTVjMDFiZjU5YWRiNzU5MTM3ODk4ODUwYmEwZDUgbGVnYWN5LXRydW5rCisxNzY0NiBmZjg4YzY0Y2ZmMmU1MTk1YTIxY2Q4ZTFjNDBmY2EzYzI5NDk4NzRhIGxlZ2FjeS10cnVuaworMTc2NDcgYWZiYWRhYzYwZmY3NGM4ZjAxNDExZWY5M2NkMTU3MTYzZjZjOTIyYyBsZWdhY3ktdHJ1bmsKKzE3NjQ4IGZmZDNlOWRhODliMGViOGY0NDMxOGUzMTY0YzVmYzRlMWQwZTA3NmYgbGVnYWN5LXRydW5rCisxNzY0OSBjMzYwMmFlNDk4OTA2OWQzYTU2YzY2YzNkYjdjYzFiZjFjZTc4ZGU0IGxlZ2FjeS10cnVuaworMTc2NTAgN2M1NzRiZmE2ZTEzOGNmM2QyZDZhNjBlODMxNjE2YjUxODBhZTUwYiBsZWdhY3ktdHJ1bmsKKzE3NjUxIGQ2ODI4ZGQ5YTkyNzA1OTUxMzgzZWM5NDNkNGMyYzkwYmY1NmM4MTYgbGVnYWN5LXRydW5rCisxNzY1MiBhOTBkYWM0YmY4OGEyNGExMDBiMDZjN2RkNTFiYzQzYjM3MDhhNTgzIGxlZ2FjeS10cnVuaworMTc2NTMgM2UzYzJlZmM3OWM3M2MwMWM5Y2VmYzcyZDYyM2U5YjM5YTI1ZWE2OCBsZWdhY3ktdHJ1bmsKKzE3NjU0IGNmOWQ4YmY1NmQxNDUwNzVkOTQxMTkyYWI2MzI5ZTgxODIwNmYzMWEgbGVnYWN5LXRydW5rCisxNzY1NSBmY2E1ZjhmMWE4ZjQ3MWU4ZDQ3Y2RhOTIwZmVlZTA5MzE1ZmM5YTBhIGxlZ2FjeS10cnVuaworMTc2NTYgMjU3NDI5NTU0NWZmN2MxNjBkOWNhM2Y2ZDg0YTUzNjdhZmNkODM4YyBsZWdhY3ktdHJ1bmsKKzE3NjU3IDFkNzgwMzNhNTNkNzcyYTI3NjgwZTNjMTBlZDJhNDg0MTljMjkwMTIgbGVnYWN5LXRydW5rCisxNzY1OCAyOTkwMmY3NzQ4ZmE2NzhlOWJmNGFiZDdmNTVkMzBhNjhmOGQ1ZTkyIGxlZ2FjeS10cnVuaworMTc2NTkgN2RhMzZmNmZkNTQ0YmE3N2YyNTFkZWEwOWEyNzczZDgxMGJjYjZiNiBsZWdhY3ktdHJ1bmsKKzE3NjYwIDY5ODczYTMwYjdjOTk3Mzg0MDE1NmRkNTU0MTI5MmNlZjA2ZWQ5ZGUgbGVnYWN5LXRydW5rCisxNzY2MSA3NDYxZWRjZDI0OWQ0NTEyODQ1NzQ3NzdkYTI2NzA4MGI1NGIwOTlkIGxlZ2FjeS10cnVuaworMTc2NjIgNmRiNjk1MmQ4ODdhYzliNTc3ZmMzY2FkMzAzYTQzNzg3NjkyNDZmMCBsZWdhY3ktdHJ1bmsKKzE3NjYzIDAzZWVhN2VhN2U1Y2JkYjJkMmFkODE1ZDEyMGVkNGNhZjg3OGFkYzIgbGVnYWN5LXRydW5rCisxNzY2NCA0ZDEwYTEzNTY4YWEzZDk1MTFhNmEyNDJmMWViZTg0M2JkMzczZTA4IGxlZ2FjeS10cnVuaworMTc2NjUgNTIzYTEyZWQzMWYwZGUzYzE3OTFkNzQ0NGZiYmY5ZDhjZTcwZmE0ZCBsZWdhY3ktdHJ1bmsKKzE3NjY2IGY1NjUzYWFlMWNiZDdjYzcyMDU2NTFmZTAwNDI4ODE3NGY5MGRmODQgbGVnYWN5LXRydW5rCisxNzY2NyBkNTQzZGFhMTVkNzE1ODg2ZDZiNjY4MmNhNzlhYzk4NDhjY2MxOWVhIGxlZ2FjeS10cnVuaworMTc2NjggYjdmYjEyMTZmNmI2MjIyMjczZWIzMWRkMWI3OTdiYTRhMWU2NmRhMCBsZWdhY3ktdHJ1bmsKKzE3NjY5IGI1NmE4ODI3N2U4Y2VmNTllYzE5YjQ5OTEzNzM4NTE2NzA5MGFiNmUgbGVnYWN5LXRydW5rCisxNzY3MCA0ZmY4NGU3MzQ1ODhmYWNkMTgxZWJjMWRjMTk2ZjNhODFjODJkYzE2IGxlZ2FjeS10cnVuaworMTc2NzEgYjQxM2U4N2VlZWQ0MjM3MzkwYWIyYTM1ZWMxODY1MDI5ZmQyMTE4NCBsZWdhY3ktdHJ1bmsKKzE3NjcyIDBkZDIwNGQ5MzZlMTYzNTIyNjY4NGE3OWU1MjkxZWYxNGQ3MmZmMDAgbGVnYWN5LXRydW5rCisxNzY3MyBjOTVjNjc2YjE4NDA3MDA0NWJlYTEyMTBhOTBmYjM5NzlmOTZhOGExIGxlZ2FjeS10cnVuaworMTc2NzQgMTgyZDgyNGYyYjQ3M2JlMDgzOTk2ZWQ3NjYyMDcwNTI2MzYwYjMyNiBsZWdhY3ktdHJ1bmsKKzE3Njc1IDA3OTYzNDIxZmFmY2M5ZmU1NDQ4NTAxMmUxYWFiMjNkZWQ0NGY0NjggbGVnYWN5LXRydW5rCisxNzY3NiBjNTM2OTVmM2Q4NDBkMTRhYzM4MGVhYzllYTYwYmYxMjQxNWVjYjY5IGxlZ2FjeS10cnVuaworMTc2NzcgM2UzOTNmOWIxMjkzOTI2ODIwN2UzOWIzMGEzNjVlOTNkMTljZDA0YyBsZWdhY3ktdHJ1bmsKKzE3Njc4IDQ5NDRlMzg1OWE4NjA5ZWQzNjA3ZDUzNzU2NmFjOWM5MGEzNWYzYTggbGVnYWN5LXRydW5rCisxNzY3OSBhMTAzMzI4M2EyNWRjNjBiZGY1NWIxZmNhMDc3M2RjZTA3NzNjZTJkIGxlZ2FjeS10cnVuaworMTc2ODAgOWZkMDMwYWYyZmUwMzlhY2U0YjhiNDRiNTEzOGE0ZTQwYTBhYWNhMSBsZWdhY3ktdHJ1bmsKKzE3NjgxIDkyZGNlYTA4NTkzMDU4NzZmZjE2YzBlZTI4YzlmMTIwMzQwODE4MGMgbGVnYWN5LXRydW5rCisxNzY4MiBiMWEwZmI1NTQ0NTZjYWUwYTI2NzM2MjM1ODcxYjkwYzQwMDUyNjE3IGxlZ2FjeS10cnVuaworMTc2ODMgOWY5NmM5MmYwM2UzYmU2YzNiMTY4N2FmYjcyMWUyNjc5Y2EyNWZjZCBsZWdhY3ktdHJ1bmsKKzE3Njg0IGIxZjIyMGY2MzZlZGQxZThjYzAxY2EyODc3ZDRkZmUwZTFkYzUyNjYgbGVnYWN5LXRydW5rCisxNzY4NSAwNzI4OGQyZGI1OTY0MjQ2YWNhMzk2Yjc0ZjU2YzdlYmNlMzFiMWI3IGxlZ2FjeS10cnVuaworMTc2ODYgMWExYjc5NWYwYzliOWVkZDBkODQyMWU2OWU1NWY3ZWFiZWM1NjJlYiBsZWdhY3ktdHJ1bmsKKzE3Njg3IDU0YWRiN2I0ZjhjODRkZThkYzdiYjUzYmQ4NjRlN2Q5M2EwYjUyZGIgbGVnYWN5LXRydW5rCisxNzY4OCBlZTgxM2U4NDNmM2U1NzBlMzZjN2U5NzQ0MGQwMjgyYjZmOTA3MjZiIGxlZ2FjeS10cnVuaworMTc2ODkgMWQ2MjcyNDJlMjlhMmNmYjZhY2RjZGU4NmQ4MTRhOTNjMmExYWY4OSBsZWdhY3ktdHJ1bmsKKzE3NjkwIDk2ZDMxYTE0Mzg1N2NmOGI1ZjM1NDk0Yjc4MzJhYzNjMzA2ZDU1YTAgbGVnYWN5LXRydW5rCisxNzY5MSA2N2UwZmY0YWE3Yjk3N2YxYWI1NjVhMWY1YzAzZDYzZDMwOWJhZGZkIGxlZ2FjeS10cnVuaworMTc2OTIgYjc3ODdhOTA1MmUzZDA4MWQwMGY2OThmMTg3NDM2OTVjMTg1ZWM3NyBsZWdhY3ktdHJ1bmsKKzE3NjkzIDc2YWFkNWIwNjU0M2FmYzc0NDRjYjdhNzk2YmNiNzY5YzFlNjM3ODAgbGVnYWN5LXRydW5rCisxNzY5NCAzYjBjYTBjYzM3NTBlMjIzM2ExYmM4NDBlOTIyODljYzM1MjhkOGIxIGxlZ2FjeS10cnVuaworMTc2OTUgNjI1YTlhNjk1NDY5YjVjYzRiZTNjOTU0YmI3ZGRjNTU0NzBkY2RmMiBsZWdhY3ktdHJ1bmsKKzE3Njk2IDY4MTg5Mjg1NjU4ZjIyODgwZmY1MWRhYzk5ZDY3NTdkMTVkNGQ5MGUgbGVnYWN5LXRydW5rCisxNzY5NyA0NjBhYjE5YTMyODliYjlmNzNhZmNjMTAxZTVhMmFmZjFkNzc0MDk4IGxlZ2FjeS10cnVuaworMTc2OTggOTRjMjQ2ZTYzOTlkMjIwMWEzOGQxZjY5MWIxNzg0ODVkOGUzYTBlZCBsZWdhY3ktdHJ1bmsKKzE3Njk5IGU3ZDY3ODk5MDhkNzA5MzRiM2M5MmRhYTFhMWE2ZDEwMGU5MTQzZmEgbGVnYWN5LXRydW5rCisxNzcwMCA4OGQzYTg5NzQ0MDllZTcyYzYyOTI1N2VkNzg4ODVkNmNiZjRhZmRlIGxlZ2FjeS10cnVuaworMTc3MDEgNDVlYzVkZjlhNjJkMzFlYWQ1NTI5ZjJjN2EzZDZiODRiMDViNDE1ZSBsZWdhY3ktdHJ1bmsKKzE3NzAyIGY2ZTUwMWZjMzJjNzcxZGZlZjU0ZTExOTVlMWI1OTZmN2RkZTk1NzIgbGVnYWN5LXRydW5rCisxNzcwMyBlNTJjMjQzMTlhZWY1MThiNDMwZTc3NzA0NDU5OWIxMmE3NzRiYzUxIGxlZ2FjeS10cnVuaworMTc3MDQgOTJjZGJjMGY1NWQ1MDMyZjY0ZjdhZGQwZDI3NjAwNmFlOWNlZWY2MiBsZWdhY3ktdHJ1bmsKKzE3NzA1IGM4Y2E5MzEwN2YyZWRjNGZmODk4Njk2ODM3NTI2NTk1MGU5YjE3NjMgbGVnYWN5LXRydW5rCisxNzcwNiA1NDQ5MzAyYzRkMmUxNDhkNDdlZDE5ZWYwMzYzMGY0YzFmZDgxY2U0IGxlZ2FjeS10cnVuaworMTc3MDcgNDYzZmFmMDE2ODVlNzEyNzE4MzI1NzFiZTVkZTMzNzdjZWI0MTBhZSBsZWdhY3ktdHJ1bmsKKzE3NzA4IDEyOTM0OTJkZmU2MDNlYTRhYjc3YTkyOGUzNWZhMzU2N2Y2OGJmODAgbGVnYWN5LXRydW5rCisxNzcwOSA4OWJjODQ3NWZjODRlMTcwZDY2MDRmODZmNWQxNWJlYWNiZWQzMWRhIGxlZ2FjeS10cnVuaworMTc3MTAgYWUxMmI4YzNjM2IzM2FiNmYwNThhN2U0MmNhODExNDhiMzlhOTM3YiBsZWdhY3ktdHJ1bmsKKzE3NzExIDgzYWZmMWVhNWI3MGRlNjUyNGZkYTExNzFjOGVhYmEzN2U5MWUwYTEgbGVnYWN5LXRydW5rCisxNzcxMiA2ZWRhNmExYTY5M2M1NDcyNWU1MTcxY2JhODZkODc2MWJhNjA3YzA5IGxlZ2FjeS10cnVuaworMTc3MTMgMTY2MTE5ZWMzMTk1NWI1OWU1N2ZlM2NiMzk3NGIxMjgyY2FmYzEyMSBsZWdhY3ktdHJ1bmsKKzE3NzE0IGU5NzY2MGQxZjFhYWViMTJlM2NmMGE1NjhlYzk5YzEyNjQzNzVjMDkgbGVnYWN5LXRydW5rCisxNzcxNSAxOGIzZGVmNmM0YjgyNzYyYzM2MDE4ZjY5Zjc0MDUyMzc0NDE1ZDNiIGxlZ2FjeS10cnVuaworMTc3MTYgMDljMTRhZTVjMmY1NDM1NzhiOGNjMTk2NWViZDVhNzU3MDdmNGM5NCBsZWdhY3ktdHJ1bmsKKzE3NzE3IDViOGNkYTZmM2I1ZjY5ZWMyNDczMDVhMDRlOTBkM2ZhMDM1YmU2NDggbGVnYWN5LXRydW5rCisxNzcxOCBjM2YwZDZmMTlmN2JmZmMzZGQ2MzQwZmQ5Nzk5OTIxZmExMmEwNWJlIGxlZ2FjeS10cnVuaworMTc3MTkgNTZmZGE0ZTllY2U5ZjdjMjI4ODgxMDRlZTJjMzkxYzA1OGQ3YzVjZCBsZWdhY3ktdHJ1bmsKKzE3NzIwIDViYWY3Zjc0Mzk2ZjFkYWZjMmY4YWZhNmUxMDk2YTZlZmNmYmI1MGIgbGVnYWN5LXRydW5rCisxNzcyMSA0YzA4OWFkMjllZWFjNDVhNGE5ZGQ2YWNkOTViYjFkODA2ZGE1ZjE4IGxlZ2FjeS10cnVuaworMTc3MjIgYzg5MmU2YWE5OTk3NmM4MzAxOTNmNDBjNGE0N2FjOTY3ODExMWFiMSBsZWdhY3ktdHJ1bmsKKzE3NzI0IGI2ODAwNmE1NjQ3MTE2YjAxYzQyNjExNDkyODc3OGMxMzA0MzM0OWIgbGVnYWN5LXRydW5rCisxNzcyNSAyNWRkZDNkYzdhN2EyZTRkNTdjMzJjNDBlOWIwYjE0NGI0OWE3YmM5IGxlZ2FjeS10cnVuaworMTc3MjYgZTM1YTNhNzcyZGNhOWVmYjI1Njg2NWMyZjA2Y2Q3MWIwNDExZDRjZiBsZWdhY3ktdHJ1bmsKKzE3NzI3IGZiNmI1MTAzM2MzYjYwZTExNzZlMTU4ZDczYjBlNGFmMWNmNjcxNDMgbGVnYWN5LXRydW5rCisxNzcyOCBhYzE0Yjg2ZjBmOGI4ZjgwZWVhNTJkYTA4NTBjNTk2YjQzYzZmNGRiIGxlZ2FjeS10cnVuaworMTc3MjkgYTkzYjJmMTc2YTVlMmYxNWVjOTAxZTRlZDFlY2NiNDFkZjljZDhhNCBsZWdhY3ktdHJ1bmsKKzE3NzMwIDY0MzFjZjVjOGEwMDRjNjY2NTFjNGY0NzkwNjEyMDhhNTUzZGYzNjkgbGVnYWN5LXRydW5rCisxNzczMSAxN2I1YzQzYzA4YTZjNGQ4YWVmMGM2ZDYxZjk3NmZiMjNkZTY3N2UyIGxlZ2FjeS10cnVuaworMTc3MzIgNzNmZGU0NDU2M2QxZWY5MjhkMWVmMWEyYzYwYjhkNjU5MDk1ZWQ4ZiBsZWdhY3ktdHJ1bmsKKzE3NzMzIDc5ODZhNDU1MzkzMGIyNjMwMWU3MGMwZGM0OGMzYThmYmE1NjJlNjcgbGVnYWN5LXRydW5rCisxNzczNCA2OGUyM2YxZmY1ZGI3YTI4OGMzZDZmZWQ2ZDlhOWJjYTkxODg5MjMzIGxlZ2FjeS10cnVuaworMTc3MzUgMjgwOTY2MmFlOWNlMTgzODRlN2NhYzZiN2NkN2Q1OGU3OTI4MWFiMCBsZWdhY3ktdHJ1bmsKKzE3NzM2IDNhNTlhMDczM2RmOGMxNmZhM2UxNmM5OWUwYWM0ZWZhMDRkYTZhOGMgbGVnYWN5LXRydW5rCisxNzczNyA1ZDA4OTA5NWY0MGY1Y2U2NWRiMGNkNDY3ZTc3MWQxZThlODdhMjM4IGxlZ2FjeS10cnVuaworMTc3MzggNTI4YjUyYmQ0YmMzMmVkMjNlYmVmMzc3MGJmNmI4ZDQ0ZWNhMDFmZSBsZWdhY3ktdHJ1bmsKKzE3NzM5IGQ2YmRjYjA4OTlkZGE5MGRmMzExOWM2YjJmNjJmYjY5Y2E1ZjNlMzggbGVnYWN5LXRydW5rCisxNzc0MCA5NjhhZTU1ZmU2ZWVhYjI4ZDBmYzg4MmQxYTcwY2ZmZTYwY2Q4YmNlIGxlZ2FjeS10cnVuaworMTc3NDAgNTViYmExOTdkNDg3MGNkYWU2MmFlY2EwMGUyMDI0MGE3NTZiODRmOCBsZWdhY3ktdHJ1bmsKKzE3NzQyIGY2NTc5MzBmZDI3NGMzYjgxZjJkYTU0MDhjMDUwNTIyYmZlOTcyZDEgbGVnYWN5LXRydW5rCisxNzc0MyA0ZmRmNjYwMGQ4YWE3MDEwYzI5ZmUyNDU2NjVjZmQ0MzQzMGU3YjRhIGxlZ2FjeS10cnVuaworMTc3NDUgNjUzNzQ5MDAzZGI5NzYzOTAyY2M4MjIxYzM2ODU2NzJiY2Y3NjcwMyBsZWdhY3ktdHJ1bmsKKzE3NzQ2IGM3ZjU1NTUxZmUzMWJjY2MwYjFiYTM4N2RhZjNlOWViMDE4Mzk5NjQgbGVnYWN5LXRydW5rCisxNzc0NyBhZmQ3ZWNlMzdjNDY5NWVlNjlmNTljYmU2MjA3OTdhOWM4MzU5NDFkIGxlZ2FjeS10cnVuaworMTc3NDggZTQ2NDFkMTkzMjIwZjM4NmMwZDk3YTczODU2NzRkODhkMTc3ZThkMyBsZWdhY3ktdHJ1bmsKKzE3NzQ5IDE5NjdiZTEzNTllZTU5OGJhOTM4ZDExYjhmMWU2NWNhNTM2MTg3ZDQgbGVnYWN5LXRydW5rCisxNzc1MCA4MzQwNjJmNjk1ZTBmMjFjNzRiOTAxN2VhOTI2NjAwNGE3NzU4M2I4IGxlZ2FjeS10cnVuaworMTc3NTEgZGUxODkyZWFjY2ZmYWNhYmVlYzA4ODkwNTlmZTg4OTFmNzFiNmYxNyBsZWdhY3ktdHJ1bmsKKzE3NzUyIDQyMGQzYzU3ZWZlYzczODc0ZWRhN2IyZGYwMTk1YWI1NjYwMDk0YzUgbGVnYWN5LXRydW5rCisxNzc1MyBhZDk4YzEzNjQ3NWU3YjIzNzMyYjliZDg4N2VkY2U5MTczZDU4MDM2IGxlZ2FjeS10cnVuaworMTc3NTQgNDExMWNmMjJhMGFkOTQxY2EyZTQ1MjhkOWVmOTUwNDM0NGZjODA0MyBsZWdhY3ktdHJ1bmsKKzE3NzU1IDRiZWE0ZjU5YzRlNDNjOWM1YzRhNjI2NTNiOGZlNDBkZmY3ZWFkOGUgbGVnYWN5LXRydW5rCisxNzc1NiA2MDZhODA4MzRhODYyMjM4YzdjYTk3Y2U1YTViYjQ0YTkzNjNiZjNlIGxlZ2FjeS10cnVuaworMTc3NTcgZjkzMmMxMjgyNzliY2YzZmM0Nzc3NmY3MDhjZGQ0N2RkZjRkOTJiZiBsZWdhY3ktdHJ1bmsKKzE3NzU4IDI5MWFiZWJlYTU1YjJlZDdjNDA4ZTFhMDlkNTc2NDI5NjlkYmYwOTAgbGVnYWN5LXRydW5rCisxNzc1OSBlYzc1NmQ1OGU4YTcwZWZhNzc1ZGI0ZjUzNWVhMjc2MDI3NDgxZWFhIGxlZ2FjeS10cnVuaworMTc3NjAgZjRhMWQzZjhmMjYyODk3NzAzYjA1ZjBlNWZjNzdiOGRjNjkwM2VhNyBsZWdhY3ktdHJ1bmsKKzE3NzYxIGIxNWZjZTg2OGU1MGI3N2EwNjk5NDdlZjYxMmZiOGI5ZTU1Y2QyNzAgbGVnYWN5LXRydW5rCisxNzc2MiA0NTk2N2ZmMWI2ZGMxOGU1NzEwZDA2MDFmNTRmNmRmYzc4ZTdlMWQzIGxlZ2FjeS10cnVuaworMTc3NjMgYTBhMTNmMTBjZTRiZjVjZWNjMjVkY2MwYzAyNmEzNTBjODYzMzAwNCBsZWdhY3ktdHJ1bmsKKzE3NzY0IGQwMTM5NGIwYWE2OTg4MGE0YjVkNTlhOWJkOGRhYTRjYzAzYTE4MTAgbGVnYWN5LXRydW5rCisxNzc2NSA4ZjU5YmQ5NTc5NTI1Nzc2OGU5Y2VmMjYyNzAzN2ZhNmY3YTZlZTllIGxlZ2FjeS10cnVuaworMTc3NjYgMTAxODcyN2YzMjMxNzZjYWZkMGUyZWM5MWE5YTNkMjEzZmU2NTg2MiBsZWdhY3ktdHJ1bmsKKzE3NzY3IDZmYjJhZjc2Njg5MmViODdiYmIzZDZjNDJjMGUyMDIxY2EyZTBmZDQgbGVnYWN5LXRydW5rCisxNzc2OCBhZjhkNzdhYTkwZjg4NTg3MGI3ZjRlZTkzMmNlNTllODc0ODY1MmU4IGxlZ2FjeS10cnVuaworMTc3NjkgMmNkZjdhYzkxNjJkOTM1MDRkZTJlZGU2NGE3ZjVlOGY0MmNhNDYxMiBsZWdhY3ktdHJ1bmsKKzE3NzcwIGEwNjI3NDliODBmOGM1MDNlZTRjZGVlN2VmMjgyMjE4MGNiOTA5OGEgbGVnYWN5LXRydW5rCisxNzc3MSA3OWNkZWVlZWZhZmE1NzU1ZTkzMTBiYzk4NmYwYzVlOGEyNDQ1ODAxIGxlZ2FjeS10cnVuaworMTc3NzIgZWEyYmE5MTBlNWYwNWZlNmNhY2NiYzA2NjFiMjQxYjBhOGNlYTNlMiBsZWdhY3ktdHJ1bmsKKzE3NzczIGFhZDJiNWEzZjdiZjRjMzdhYTIxN2UyNWRlNGI3NmIyNDQwMjg1NTkgbGVnYWN5LXRydW5rCisxNzc3NCBjZWZiMTkxMGFkMGQ3Yjg0ZGZiM2ZkOTdjYWQ3NGFmODUyNzlkODJkIGxlZ2FjeS10cnVuaworMTc3NzUgOTE0YWU3ZjljNjRjZjdmMDA2MTRiMzljNzFhZWMwNGRiNjcxNGQ4YSBsZWdhY3ktdHJ1bmsKKzE3Nzc2IDk1YjIwMDE5YjcxMTQ1NGM0NzU3YzdjZDY1YmQ1NzE3MWQzMjE4MGYgbGVnYWN5LXRydW5rCisxNzc3NyBmYWQ4MjQ3ZWYwYTUyZGE3MzRjNzI4OGY1ZWI5MDFlNDlmMmRjNWMzIGxlZ2FjeS10cnVuaworMTc3NzggM2RiOGI4MDMxYTZhNDc0NDE4NDA1OTg0OTdiZGM2YzliNmRmN2I2ZCBsZWdhY3ktdHJ1bmsKKzE3Nzc5IDlhODcwMGZkYzUyYmU4MDYwZjM3ZGY5N2JkNzY0M2IwOWViOWZjZGEgbGVnYWN5LXRydW5rCisxNzc4MCA3NWYzZDVlN2I4OWNhMmUxODVhYzAzMDE5ZjI5NDUwOWQzMzZmNmY1IGxlZ2FjeS10cnVuaworMTc3ODEgMTUzNTQxZjgyNGEzNjM5Njc5MjU3NmYxZTBjNjYyNjZmOGQxZTJjOSBsZWdhY3ktdHJ1bmsKKzE3NzgyIGI0Zjc0NDgyZjlhZmUxMDc4MDMwNjdhN2RkMDYyMDlmZGUzY2ViZWIgbGVnYWN5LXRydW5rCisxNzc4MyA3NmMxZTQwYzVjNWRlOTA2MWU0NjBhNmI4YWRjZWZmOWVkYjJmOTk5IGxlZ2FjeS10cnVuaworMTc3ODQgYzhmMjJmMTU0OTlmOGIxN2RlNjQxNjE5ODIwZTEwMjkyYzI5ODEwZCBsZWdhY3ktdHJ1bmsKKzE3Nzg1IDJlYTI5Nzg2OWIwMjcxZTBlYjUxOTI4ZTQyNzUyOWUzMDA2Zjk3Y2YgbGVnYWN5LXRydW5rCisxNzc4NiBhZjFkZTRmNTA1MDg5YjM0NmNkNDdmYzg1YTEzM2VjYjZlNDY1YmExIGxlZ2FjeS10cnVuaworMTc3ODcgNTYxMGVjZDA3ZGMwMzZlNGFhMjFiNjFlY2FjZWZkY2ExNWNlZTBiNiBsZWdhY3ktdHJ1bmsKKzE3Nzg4IDBjOTNkMmUyN2FjMDdjMTMwMzhkY2M3YTE3ODE3ZTQwM2MwMWUyYWEgbGVnYWN5LXRydW5rCisxNzc4OSA4MjdlOWQyMWE3ODE2NGRlZmIzYzhhNWVmNzI2ODQxOWJhZWM4ZGRmIGxlZ2FjeS10cnVuaworMTc3OTAgNzE1YTNlOTI0NzM3MTgyODA2YTliNTA3MjE4MzNjZWEzNWUwYjE2YSBsZWdhY3ktdHJ1bmsKKzE3NzkxIDNkYTk5ZjBjMTg0ZjI2YmE0Y2JlOWZmNDg4NDk5ZDI5MjM4YTY1MTYgbGVnYWN5LXRydW5rCisxNzc5MiAxMzQ4ODUzOWYwMmJmZTI4YmJhYWYxYjNmNDdmOTBhZmM2NmU1YzU5IGxlZ2FjeS10cnVuaworMTc3OTMgMDExZGYyNjQ3ZjQxM2QyZDE1ZGQ4NGQ3NzNjYjgwNDkyMGY1OTQwYyBsZWdhY3ktdHJ1bmsKKzE3Nzk0IGZkN2Y4NzlhZmY4MWM1YWJjZDNkNWFiYmM5MmJmZTExNDRhMTE4ZTQgbGVnYWN5LXRydW5rCisxNzc5NSBjMTI4NzVkZWZjMGU0ZTM5NjA3ZjMwNGU4YjE5NWE1N2JiZTk1YTAwIGxlZ2FjeS10cnVuaworMTc3OTYgMTYyOWVmNzM4YjJmMDk2N2ZiMzM5MDQ0OTk1MDhhNjhkZGYzY2U1ZiBsZWdhY3ktdHJ1bmsKKzE3Nzk3IDljZWE0ZGI0MWQ5ZmFmZWVkNGZjNDNmNmM2NDhlNzBkYmI5NTEyZjEgbGVnYWN5LXRydW5rCisxNzc5OCBmOWNmNjExMDk2YmY1MDJmOGZkNzliMjU5NTVlODYwMGMzMzU2ZmI5IGxlZ2FjeS10cnVuaworMTc3OTkgZTE1ZTk3YTZjMTRhODM0NjUxODNmN2M5ZDRjYzE0NDdiMDI2ZWJkZCBsZWdhY3ktdHJ1bmsKKzE3ODAwIDE5OTE5ZTE0NmZmOGYzMWI1ZTNmYmNhOWNiN2I2YWVkZGZlMjAxNmQgbGVnYWN5LXRydW5rCisxNzgwMSA3NTkyZjcyMTliN2M2Y2ExZDExMzU3NWYyOTFhODkyY2ZjYjNmNWFmIGxlZ2FjeS10cnVuaworMTc4MDIgYTU5NjAwYTk3NWQxMjQ3MGQyZWQ4NmZjNDQ1MjRlNTk0NjhiZGY3YSBsZWdhY3ktdHJ1bmsKKzE3ODAzIDllNDQ1ZGRjYTJkNzRhMDAxODJlYTkyNTk2MWMwYmVjNWNkZmFlOTUgbGVnYWN5LXRydW5rCisxNzgwNCA3M2NlYTU5NjU3YmFiYzdlNjNkNmNmYjZlM2RiOWYyNTMzODc5Mzc3IGxlZ2FjeS10cnVuaworMTc4MDUgN2FjYjhiYmMyMTViYjcyYTMzMDg4NjMyYmZkOTkzZTZhODIwZDBjNSBsZWdhY3ktdHJ1bmsKKzE3ODA2IDE0YjY0N2Q1NTBkMzc5MzFhOTIxMDg1YzQ2MzkzNjAzMjUyY2E4ZWIgbGVnYWN5LXRydW5rCisxNzgwNyBmOGI1MjZmYzM5ZjY3ZmQyNjQxOTE4MjQzZTllYWU5NzgxYTY1YmFhIGxlZ2FjeS10cnVuaworMTc4MDggMDA1YTBiNGMzODJkMzVmNDVkZDZiMmMxMjM1N2IxYzc0NDI3ZjY3NyBsZWdhY3ktdHJ1bmsKKzE3ODA5IDZlNzA1MjQ3Mzc3ODZiMzVlMjYyOWFlMzNhODUzYTIzMjc5ODM1MmQgbGVnYWN5LXRydW5rCisxNzgxMCBkOWU2NmE4M2U0MzM4NGE2MzQxZTc2MWEwNjVkYjEyMGRiMmY3YWFkIGxlZ2FjeS10cnVuaworMTc4MTEgMzQyNDk3YWQ4ZmVjOTc2MzJkNDBlMjk2NGRhYjUzODUyYWIwZGUxOCBsZWdhY3ktdHJ1bmsKKzE3ODEyIDFmOWQyMzc3N2ZkMDE3NDQ5ZWIyODkxOTZkYzU0YWM5MWFhMTc5MGEgbGVnYWN5LXRydW5rCisxNzgxMyBjNzhlNzZhNTcxYjY1ZGI5MzkyYjIwMTJiMDJiZWYzYjcxNTk2YTM5IGxlZ2FjeS10cnVuaworMTc4MTQgZGIxY2NlMWZmYjYwODI2ODExNTNiNjI2MzI2ZDQ4Yjk5ODlmOGJlOSBsZWdhY3ktdHJ1bmsKKzE3ODE1IDUwMzg2YzczYmEyMjVkMjk4NWZkMjY1MDY0NTk0YmE5ZTQ5ZGQ4ZjIgbGVnYWN5LXRydW5rCisxNzgxNiBiMDMxYWJjYTNlOTFhYmUwNWQzZTA2MGI5ZDUyOGEwZDRhODQxODZmIGxlZ2FjeS10cnVuaworMTc4MTcgNTY5MjE0YTQxODJjOTNlNGYzYzI2NzFiMzliNWFmYmE3NWJmZTFiZCBsZWdhY3ktdHJ1bmsKKzE3ODE4IGViYWViMTllMDM4MDliODg2MWNiZDJjZjFiMWRlZTFhNDQwZGU2NGMgbGVnYWN5LXRydW5rCisxNzgxOSA5YzNhZWZhNWNkN2Y1OTMyYWQzNGY3ODA2MzhjYTIyZGVjMjJkNmZhIGxlZ2FjeS10cnVuaworMTc4MjAgNzNkMDkzMjJmMmMzNjAwNzU0N2YxNTYwY2E5MzM3ODQxNDlkNDQ3MSBsZWdhY3ktdHJ1bmsKKzE3ODIxIDU0ZWM1ZWMzMjM1MmYwZWE4N2IzZTQ4YWFhOGI0OTAxNGQyMjVlMTAgbGVnYWN5LXRydW5rCisxNzgyMiAxYWEzNzAwOGZkMmM4MjVlMTBhYjc4NDI1MjJkMDMwMmIxNGU0YjUzIGxlZ2FjeS10cnVuaworMTc4MjMgOTMxNGNjNzlkNmUxMmU3YzFkYWZkZWE2NTQ0MWExMmM2OWM1NmMyOCBsZWdhY3ktdHJ1bmsKKzE3ODI0IDMxNGViOGY3YWUxMzUyOWE1NzhkNmNiY2U4MTIwODk4NDdlNzJiMzIgbGVnYWN5LXRydW5rCisxNzgyNSA1MzM2OTQ2YjY0OTVhMTY0MGViYjJkMGI3OTZkNDhhYzRkNzg2OTMyIGxlZ2FjeS10cnVuaworMTc4MjYgYjQxMTIzOGRlOWQxMGYxMmExODJiZTVkM2I1YWY3YjJmNjhmNGFmNCBsZWdhY3ktdHJ1bmsKKzE3ODI3IDZhZjlhYTE1NjQ3Zjk4Zjc4NzQ3MTlmOGIwZTg5YTRiNDZjNDM4YTEgbGVnYWN5LXRydW5rCisxNzgyOCAzMmQyNjNkNDQ3YjdlMTNhNzZiNWJiYTIwODAzMjYzNzdmMDFlNzkzIGxlZ2FjeS10cnVuaworMTc4MjkgM2VlY2RhMmJhOTNhMzg0NjY2MjAyNzY1YTA0YWYwZjc5ZTE3NDY3NCBsZWdhY3ktdHJ1bmsKKzE3ODMwIDQ4YjQ1YTI4MTI3NzAwMTYxODRkZGY0ZWVmNTBlNmY0MDc5NTUxNDggbGVnYWN5LXRydW5rCisxNzgzMSBjNzkwNzM3OWE2YmQyMjg1M2QwNjc0NGZkZDlmZDFjOGU0MWQxMjZlIGxlZ2FjeS10cnVuaworMTc4MzIgMjdlYWI4MDMyNzY2MmE3ZWU1NWRmZjNiMTEyZGY5ODZiNzc1NTcwNiBsZWdhY3ktdHJ1bmsKKzE3ODMzIDgzOWJhMzViMGFhMzE0NDI4NWU0MTkyMDI1YzZhMDExNzhkYzEwZDkgbGVnYWN5LXRydW5rCisxNzgzNCBiMDEyYWViYmJlNTE3OGZhMGQ5MWVjYjE1MGRlNGMzZmNkOGFiYjg3IGxlZ2FjeS10cnVuaworMTc4MzUgMTc0ZDM0ZWFjNTE2M2I5Yzk0YzEyMjc3ZWUzZWQ0MDFjOWEyZjdiYiBsZWdhY3ktdHJ1bmsKKzE3ODM2IGU3OWQwN2MyNDU3MWUzOGUyMTk5YzdlOWJmMmI2NDAyOWNkMDdkMGEgbGVnYWN5LXRydW5rCisxNzgzNyAyNmQyZTRmNThhZGNhOTcwYmRkZjk5ODQ0MjNjZDNmNDhkYTU1MGJiIGxlZ2FjeS10cnVuaworMTc4MzggODIxMjNjZTAyNjg0ZmUyNTAxZmRiYTI1YjMxMDc2NzQ5YmI3YWE5MyBsZWdhY3ktdHJ1bmsKKzE3ODM5IDBmYTU4ZmVhMzBjZjIxNmMyMzdmMmVmMmVjZThhZTkxZGIyMGE3NTIgbGVnYWN5LXRydW5rCisxNzg0MCBiNjFjZDFhNDg5NjAzYmM0NzlmNmRiMmU3NmNlZDNmYjY1YWM0NGVkIGxlZ2FjeS10cnVuaworMTc4NDEgZWNlNmMxOWVkY2MxNTViNGZmN2M0YmZlNjVlNzQyZGI1ODBiOWNmYiBsZWdhY3ktdHJ1bmsKKzE3ODQyIDNmYzZjNWFkZGYxZWMxYWMyNTYzZjBiZmM1OTQ0Nzg2N2U0Njc0MjMgbGVnYWN5LXRydW5rCisxNzg0NCBhOWQyNGE1M2M1NTMzNGRhMjJhYWJjYjA2N2UxNzJhNTczN2I5OGQ2IGxlZ2FjeS10cnVuaworMTc4NDUgYmJlMDljY2NiNDliZTA3MDRmMDgwMDYxZWY0YTNiODk5Y2EwM2RhMyBsZWdhY3ktdHJ1bmsKKzE3ODQ2IGU4NTc1NGZhNjkxNzRmYTcyZWM2MTRiMTcyYWNiYTA5YzUyZjAxYzkgbGVnYWN5LXRydW5rCisxNzg0NyAyYjQyMzY1ODBlMGM0ZmJhMGU2ZjZmODgzZWIxYWYxYzk1OGJjMDlmIGxlZ2FjeS10cnVuaworMTc4NDggYmI2Y2NhNTdlYjhiMGM5NGIxNjY5OWQ4Y2JlNDllNDZmNTI5YzNmZSBsZWdhY3ktdHJ1bmsKKzE3ODQ5IDVkNDFjYTQ5YTEwYWRjMmU4Y2IyZTk2OGZmMTI0OTRkOWRiNjdiZDggbGVnYWN5LXRydW5rCisxNzg1MCA0YzQ5MzRjYTg1Nzk2MjBlMjFiODMyN2MwZmMzMzI3MmNjZDQ3YTViIGxlZ2FjeS10cnVuaworMTc4NTEgZmE1YzQ4MjM2N2M3YWY1MDM4ZGViZWZmNmU3Yzg0N2QzZjc5MzJmNiBsZWdhY3ktdHJ1bmsKKzE3ODUyIDdmNGUyODA0NWRmYjQ1ODQxMjQ2MjU4MWU3NDhkYzY5YmI5NWQzNzkgbGVnYWN5LXRydW5rCisxNzg1MyBlZWMyZWIxMjFkYWUwY2MxZDBjODFmNDY5MzljNWYzOTA2NGE3ZDY2IGxlZ2FjeS10cnVuaworMTc4NTQgNWU0ZWVkMDYyYjU0YTllNmYyMzgwMDFjMjcwMmQ2NmEyZjk5NTI2ZCBsZWdhY3ktdHJ1bmsKKzE3ODU1IDBjNWIwMmNjNTQ4OTM5MmEyY2ZjYmY5MGIyNzlhNWFkMDQ0YTAzZmQgbGVnYWN5LXRydW5rCisxNzg1NiBjMTZiZGY1NTVjNzk3ODExMDg4Nzk2YzIyMWRmNzFjMGJlMjlmNzJjIGxlZ2FjeS10cnVuaworMTc4NTcgMWEzYjVjOGQ2NzMwZDk3OTczZDkwMmM4MDJkMDkzZWRjNmVmNmI1ZiBsZWdhY3ktdHJ1bmsKKzE3ODU4IDBhOTdmNWRkZTNhNzhkYzdjMzczOWJmODJjMzg4NDkzMjQ5OGNjOTQgbGVnYWN5LXRydW5rCisxNzg1OSBhMzQ5Yjg5YmYxMGVlNWQ1MWQ3YjJiMjQ0NzdiYTMwMzhhYWIxOTdiIGxlZ2FjeS10cnVuaworMTc4NjAgOWQ1MTQyYzhjZjJkZGRkOTczOGJkNGY0NTU2OGY3M2ZiY2M1NzlkZCBsZWdhY3ktdHJ1bmsKKzE3ODYxIDAwMzJkZmZlYjE2M2I0ZmFkODI1YTgyMTQzOTIzYWM0MTYwMDAzOGYgbGVnYWN5LXRydW5rCisxNzg2MiBkZGIyMDE5MDU5MWRiYmYxNmY1MjNlZjA1ZjhlNmU4NzVmZjkxMzc4IGxlZ2FjeS10cnVuaworMTc4NjMgMGNmNTExMWJmMDljYjFiZjE3MDUwZWZlZjIyOWFlZTE4ZDhjMGJmMCBsZWdhY3ktdHJ1bmsKKzE3ODY0IDhiNmZlNmI5OTdjMmRiN2I0YTM5MTJjZmZmODc1MzQ2ZmQzMzFhNzAgbGVnYWN5LXRydW5rCisxNzg2NSBjYjRiMmExNmViODcxMjU1OTg4ZWYxNjMwZGZlYzdlYWEzZGRmZjY4IGxlZ2FjeS10cnVuaworMTc4NjYgYWEwNTJhNTJlZjg3MTJmMDg1ZjZlZjU1ZGZmODVmNWNlYTFhODQzNyBsZWdhY3ktdHJ1bmsKKzE3ODY3IDk4NDdiNDg2ZDE1ZmJhODA5ZjQ3ZjMwNDBmYWE4NjhiM2E1MzBjOWYgbGVnYWN5LXRydW5rCisxNzg2OCBjNWNmNmZiYTU0ZGRiOGI3MzY2MjcyMzBmMGYzM2YxZTZjYWVkZmQzIGxlZ2FjeS10cnVuaworMTc4NjkgZGIzYTk1NzhhYjBiZWZjZWJjMzliNDc0ZWM3ZDJlNzBmMjNlZGUxMSBsZWdhY3ktdHJ1bmsKKzE3ODcwIDZjNTFiNWFmMWJkZTEzMDk2MjBlZWNhOTYzZGJiYzE2YzA1ZWE4ZTQgbGVnYWN5LXRydW5rCisxNzg3MSAyNWJjMTY5NTJhMjRlNTQ3N2I5Yjg0NDUyYzBiNzI4OGU4ZjJlMDNiIGxlZ2FjeS10cnVuaworMTc4NzIgYjBkMWRlYzIzNTNhNDExYWVjZDljYjMzMzQ5OGVkOTg1MGFiM2FjMiBsZWdhY3ktdHJ1bmsKKzE3ODczIGRhM2U4YzUwNjRjYWYzYmQyMmIxZDEzZGNmY2ZhN2U4ODk1MjAwYTEgbGVnYWN5LXRydW5rCisxNzg3NCBmYjdhYzhhNDBhOTdjMjRlMGRhM2MyN2E1YzU0NjFlZmY3ZThhYTc5IGxlZ2FjeS10cnVuaworMTc4NzUgYzI4NWRmMTVhMDUwMzgzMDE1OWRmZTRiNzBlOTJjMzQ1OGZiZWIzYiBsZWdhY3ktdHJ1bmsKKzE3ODc2IDk4YjFmYTZjMTYwMDBlN2E0ZjM1NDgxM2NjNzdjOTE4OGFjOTgzOGUgbGVnYWN5LXRydW5rCisxNzg3NyBhNmQzNWNjNGJmNWVlNWQ4MzIxNzRiYjA2YWQ0ZWVhMjY0NmRkNDA5IGxlZ2FjeS10cnVuaworMTc4NzggNDA1YWQwYTdmN2E2MTA5OWU3YmJkOGM1Nzg3ZDZhY2RiZjAyOTVhNiBsZWdhY3ktdHJ1bmsKKzE3ODc5IGYxMmQzNWY5OTQ4ODU1ZmMzNGM5NjU5N2Q0YmEzNGJmMjY5MjRjMjEgbGVnYWN5LXRydW5rCisxNzg4MCAzN2IxY2FlZWQ3MDU1N2E1OTA2MzMyZjYyZjFmNmVkNDU5ODJlMzBiIGxlZ2FjeS10cnVuaworMTc4ODEgZGI5MTM1ZjM4MDY4OWEyM2VhMDAyNDIzZjNlNTFlZmUzYmVjMWMwMiBsZWdhY3ktdHJ1bmsKKzE3ODgyIDBiYjM0ODk4NmQ1MjgxYjJlM2Q5NjY5Y2U3NTBiZTJjZWZjNTliOTYgbGVnYWN5LXRydW5rCisxNzg4MyAyOWMyZDVlNTIxNjEyYjgxMjNiNmM5NGYyMThjOGMzOTU0YTY3NWM1IGxlZ2FjeS10cnVuaworMTc4ODQgYjM2OGUwNmEzYjYyNzVlOTE0NjU2OTIyYTM2NzU3YzY1Y2U2MDQ3OCBsZWdhY3ktdHJ1bmsKKzE3ODg1IDVmZmE1MTVlNjIwZTRkNzY0NDg1NzM0MjQ1NmU4NmViNWQ0MmQ2ODUgbGVnYWN5LXRydW5rCisxNzg4NiAyNWYxMDkyZWNkODZkNTQ4MGYyODkyNDhlYjI0MzljYWVkZWUwNGM2IGxlZ2FjeS10cnVuaworMTc4ODcgNTJlYjQ5OWYyNWIwOWZkNTdiZTUwODdjMzI5ZGU3NmUwODIzNDZmNSBsZWdhY3ktdHJ1bmsKKzE3ODg4IDdhNWMzODU5YTM2MTM5OGZhMTYyY2ZhZjEzMGVmMDIxNmU0OTAyMTggbGVnYWN5LXRydW5rCisxNzg4OSA5YmM1MjcwNmQyODM0ZjdhOGM1Mzg2OWUzMjhhOWQ0ZTU3ODE4OTYxIGxlZ2FjeS10cnVuaworMTc4OTAgY2U1ZGZmMzBhOTM1ZDE5ZjE4ZWRlYjQyZTRjMTk3YmMzOWNiNzJmYiBsZWdhY3ktdHJ1bmsKKzE3ODkxIDZjOTFhMDQxYzFkMmIyYzk1ZmU2ZWZlZGJmMDYwNzlkNDJmNzU2NjMgbGVnYWN5LXRydW5rCisxNzg5MiA5NGMwMzFkN2U5YzJlODI4OWU0YTFiZjMzNDE2NjdhOTNlMmJhNjI5IGxlZ2FjeS10cnVuaworMTc4OTMgODk0ZGNhMjI1ZDI0YWVjMjg1OWNhZTlkMjVmYTNiYmEyYjU2NmE0NCBsZWdhY3ktdHJ1bmsKKzE3ODk0IDZlOWZmMDYwYTcyODgyOTlmOTk3ZTE3MjQzYmNkMjNlZGJmOWNhYzQgbGVnYWN5LXRydW5rCisxNzg5NSBjN2Q0NmVhZTk1ZDg5OGQ4ODA0OGExNGRmZGVlMGRjODAwZWM5YjIxIGxlZ2FjeS10cnVuaworMTc4OTYgZTk3MTNjYmUyYmE4ZDMwN2Q0OTcxZmY3OWMwNjc5ZWU0ZWMyYzM4YSBsZWdhY3ktdHJ1bmsKKzE3ODk3IDkyMWM3NDU5NzcxYjQxMmVjYTI0ZWZhODFjMzAwMGY1NmE4NGZkY2YgbGVnYWN5LXRydW5rCisxNzg5OCBkMTA2ZGZkZmY0ODBhZWJmMWEzNTljNjlhM2I5YjcyZGYyMjRkNGQ4IGxlZ2FjeS10cnVuaworMTc4OTkgN2VlZmRlOTBlYzBlZTRiNGNlMWY0OTA4NDM4MTUyZWM4MjhlODAzMSBsZWdhY3ktdHJ1bmsKKzE3OTAwIDI5M2NhZjBlNjMyYTE3NDQ4YjI2YzEzYjVhMWMxN2FhOWY3N2QxOGEgbGVnYWN5LXRydW5rCisxNzkwMSBjMGMyNTRmYmRlNTc2YmMwMTlkZGM4YzE1MTVhMzUyNDgyYmU0NGZlIGxlZ2FjeS10cnVuaworMTc5MDIgZGFlN2NlZjU4YWMyNmFkZGMyMTMwNTEwODVkNmFjZmJkODAwZWY1NiBsZWdhY3ktdHJ1bmsKKzE3OTAzIGM5MGMzYWFiZDhmNTAzNmE1ZjgxODdlMTcyMDUxZWQ0OGY0MzYyN2IgbGVnYWN5LXRydW5rCisxNzkwNCBjNjU0YjIwMTg0MDM5Yzg4YzVlNzA3MDBlYTNmMjZiODYyNjgwNmU5IGxlZ2FjeS10cnVuaworMTc5MDUgNDU3ZjBkZjQ2ZGQ5ODA1NWViOGVhZDAwMWU3YWY2MGVjM2Q2Zjg1NCBsZWdhY3ktdHJ1bmsKKzE3OTA2IDFkZDcyYTkyZTkyMmMzNWFkM2RjNWNmYWEyZmNlZTFhYWRjOTk4NmMgbGVnYWN5LXRydW5rCisxNzkwNyA0M2M0OWRiZDQ1NDZlOGVjYWQxNDkwYzFkMjIyODMyZjNhZDk1ODFkIGxlZ2FjeS10cnVuaworMTc5MDggNzhiY2FlNzdlOGM3MDNlODY2YmFhOTM0YmRkODhmZTI1NDZhYTdkMSBsZWdhY3ktdHJ1bmsKKzE3OTA5IGZjZjg1YzkwYTI3NDBiZmM2ZmJjMWI2NDE2MzI3NmVlZWY4NTNhNGEgbGVnYWN5LXRydW5rCisxNzkxMCAyNTU3OWNkNmNkZDkwMzgwN2ZlNDgyOThmOWFjODM4NzkxYzBlZDFhIGxlZ2FjeS10cnVuaworMTc5MTEgYmU0ZmM4YjZlMWNiODNhMDMwNjI4NmY4MWRjMTgzY2ExZGUzZjljNCBsZWdhY3ktdHJ1bmsKKzE3OTEyIDA4ZTZmMTAxOTE3MTQ5OGIwNGI3ODAzZjQ5MjNmMTZjYTQyNDk4MmEgbGVnYWN5LXRydW5rCisxNzkxMyA2MjdmZjU3OGYxMmY4Zjg1MTkyZjE3MzJiOTRiNDY5ZTU2OTkwNTU0IGxlZ2FjeS10cnVuaworMTc5MTQgNDFiZmM5YTQwZmUzOTQ5NmI4MzRkMjM1NTlkNmM4MThlZGU4ZjgzMCBsZWdhY3ktdHJ1bmsKKzE3OTE1IGJmMjdjYWJhM2QwZTQwOTIzMTg1OThjNDMzZDM3NTQ0MmVmOWVhOTYgbGVnYWN5LXRydW5rCisxNzkxNiAzYTA0YmViYjY2NmFlYjBlMGJjZThmZGNmMTBlNzk1NGIwYTM0Yzg0IGxlZ2FjeS10cnVuaworMTc5MTcgYWNiODg2MDdiNGJkN2U4YmMwZGU0MmE0ZjlmYmNiZTJkN2EwZTI5NiBsZWdhY3ktdHJ1bmsKKzE3OTE4IDE3N2FlMWM1MjAzNzY1MDIwNmFjZGI1N2UzNDEzNGM5OTYwNzRiN2IgbGVnYWN5LXRydW5rCisxNzkxOSAxMDM2MTI1MTZhYThkMzVmY2RkZWEwZmRjZDk5OWVjN2Q4ZDkwNDYxIGxlZ2FjeS10cnVuaworMTc5MjAgNjc1NzQ4Mzc4YzgxOTlkOTc0OWI1NGE4OTFjZWY3MTdkMjZmM2NlMSBsZWdhY3ktdHJ1bmsKKzE3OTIxIGY3ODA0NjlhOTU3N2Y5NWM4Yzk3NWYxMjE0YzAzMGU5ODg2OTIxZmEgbGVnYWN5LXRydW5rCisxNzkyMiBjMDU4YmMzNTY0MGY3OGFlODg0MGRiNjEyZjJhOWJiOTNiZWQ4N2NhIGxlZ2FjeS10cnVuaworMTc5MjMgMTE4YWM4NWFmMzBhMDVjNGJjMTIxNzFhY2I2Y2Q4ZDM0MjgxYzhmYyBsZWdhY3ktdHJ1bmsKKzE3OTI0IDE4NzlhNDhhMzEzMzZhNGViNGNkMjVlZDc5MWFhNDMwMTQ2NWVlOGIgbGVnYWN5LXRydW5rCisxNzkyNSA2OTBiNDFkNDdjMWQ2YWQ1NjU4NmZkYTY2ODljOTNiMDIwMDJmYzQyIGxlZ2FjeS10cnVuaworMTc5MjYgYTUzZjE2YjIwZjFkOTFiZDlkYjAzMzM1Yjg5MDk2ZGRlMWEzMTg0NSBsZWdhY3ktdHJ1bmsKKzE3OTI3IDU3ZmVhODcwOTc1OGYxZjM3ZmY4MGIxNGJhODE4NDQyZjM1YzZiNjMgbGVnYWN5LXRydW5rCisxNzkyOCA3MWE0YWFkZGUwMTk4Yjg2NmE0NjA2ZjFjNzNhNjFmNTU3MmU3YTcwIGxlZ2FjeS10cnVuaworMTc5MjkgNjNkMjM3YTI1ZjQ5MWUyNjhlY2FlNzYyNGQ4NDljNmQ4OGUyNTI0OSBsZWdhY3ktdHJ1bmsKKzE3OTMwIGIyNWVhYmY2NmQ4ZDM3NWM0NTU1MjgyM2I1MWI3NTY0ODg2NDU4NTcgbGVnYWN5LXRydW5rCisxNzkzMSA3Y2U5MDYxZjc5NjdmZmM3MzI1MjU5NTVkM2E0N2VjZmY5ZmUxMTU1IGxlZ2FjeS10cnVuaworMTc5MzIgNzdkMWQ3OWE2NWQ3NWU4NGE4NDc3M2MzN2Q4MWMzMmY1MGZmZmVhNyBsZWdhY3ktdHJ1bmsKKzE3OTMzIDMxNDIwMjdiNTk3OWRhZWFiZDUyNjE3NTE1ZjQxODRiOTE1NzZhMjYgbGVnYWN5LXRydW5rCisxNzkzNCBhZDhlZjE1NWNhMzkwZThhNjgxMDIyYWUzMTFkNDMzOGQ4YmFhYjFiIGxlZ2FjeS10cnVuaworMTc5MzUgZGM0Y2FlZGM1OTYxMWIxNzFiMTQ5NzhjMTZhNmFmMWRiNzA2MjY0MSBsZWdhY3ktdHJ1bmsKKzE3OTM2IDQ3ZTY4MDc3MTE3ZTQyMTE1MDlkYzI4M2EzZTc2N2ExMjM4ZTVmNTAgbGVnYWN5LXRydW5rCisxNzkzNyBjZGZlYzM2ZjEyY2M5ZmExYjhlOWRhNWVhYTU2MGE4NjU3OTJlOWJkIGxlZ2FjeS10cnVuaworMTc5MzggMGUwZWE1NmU0YmU4NGMwNDg4MjBiMTAyODY1YzJhMDZmZGZhYmZjNSBsZWdhY3ktdHJ1bmsKKzE3OTM5IGExMTllMGM4YjgwYjBlNGQxOTYzYmIzMzRjNjNlYTM4MmI3YmIyOTAgbGVnYWN5LXRydW5rCisxNzk0MCBjMmYxM2MzOTViOWFlN2Y4ODVmYzQ3YTgxNmFhYjA2ZjMyODhlMWUxIGxlZ2FjeS10cnVuaworMTc5NDEgMDJhZDljYjUyMjIyNzgzMDZhNTdkODczN2JkZDkyYzVlOGJjMWRmYSBsZWdhY3ktdHJ1bmsKKzE3OTQyIDliZTY3YzVhODIzYWIxZGExYzkzMjBhNjExYWNjNTFlM2U3MzM0NmYgbGVnYWN5LXRydW5rCisxNzk0MyBmOWQ0YmQ3OWI0NjQ4MGMxNGFjNGFkN2EyNzcyMzBlMTE0YTNhYzIwIGxlZ2FjeS10cnVuaworMTc5NDQgZjA5YTg0YWY2NGJkODYzMjAxYmNiNjVmZmViZjYwOWQ2Y2QxYTEzNiBsZWdhY3ktdHJ1bmsKKzE3OTQ1IGExM2EyYWNiZTIxNGVmOGZjMDZiYTM1ZTM4MDBhM2VjYzM0YjE1OWYgbGVnYWN5LXRydW5rCisxNzk0NiAxYTZmOTE1ODYzMGYxZDZlZmE5NWJlZDg3MGIwOTA2ZTQwNWJhYTUyIGxlZ2FjeS10cnVuaworMTc5NDcgZDBhNmQ0NDRkNmJjNzdiMTZkODY2MzdiMzZiYTFlNWZiYjY1MmE4YyBsZWdhY3ktdHJ1bmsKKzE3OTQ4IDVkYTk2MjJmZWQ3YjU0NzRiNWRjNGU5MWJjN2I1ZTI4N2M0N2MwY2QgbGVnYWN5LXRydW5rCisxNzk0OSA0MWM0MmIxYmQ1ODI4Yjk0ODg4MGM5NWNlNzdkYjI2MDRjMGFiNjdhIGxlZ2FjeS10cnVuaworMTc5NTAgNDRmYTE2ZjAxYjRlMTIyOWFjYzNkMjQ1NmVjNjdjNjY0ODk2YTZlYyBsZWdhY3ktdHJ1bmsKKzE3OTUxIDFiMzRjNDc1ZGE4N2ZhZTNlYThkNWE1NDY2NDcxM2VhZmQ3Mzg3NmIgbGVnYWN5LXRydW5rCisxNzk1MiBlYzFmMjM2NWJjMmQ1N2IxMWU2MGMyNTU1ZGU3MmQ3NzdhZTYwNjFhIGxlZ2FjeS10cnVuaworMTc5NTMgYzE5OTQ2MGNjZGU5MDY2MDNjOTMyNmI4MDM4MTYwODUxODkxNjM5MiBsZWdhY3ktdHJ1bmsKKzE3OTU0IDk1YmU0M2QxZDMzMjY1NzE5MzZlZGU1OTc0YTkwZWUyMDc1MWE2NmUgbGVnYWN5LXRydW5rCisxNzk1NSA1ZmI4ZGMyODk4MTJkZjllYjRkNjQ2MjAwOThlODRkMjMzMGQyMDMzIGxlZ2FjeS10cnVuaworMTc5NTYgN2RlMDgwOGYxZmUzMjA3ZGJjNjVhMTEwZjBjNjA0NjQzZTJiZWZmMyBsZWdhY3ktdHJ1bmsKKzE3OTU3IDFhY2FjNDc1NmEwM2JlYmE0MGZmYmQyNDc3MGQ4MDBhMDRhZjdmODEgbGVnYWN5LXRydW5rCisxNzk1OCBmOGU5NjI1MDYwNjNkZGFmNTA4MGQxMzY4NjU4MTc3ZTQ0M2UyOWI1IGxlZ2FjeS10cnVuaworMTc5NTkgYTAyZjlkYWMyMTZjZDk4OTQyNGZmMDljZDljMzNmYjNjZjQ2ZjdiMCBsZWdhY3ktdHJ1bmsKKzE3OTYwIDhiZmE5NzAzYTRlNGY0MDM3MGU1ZTlhNGNjNDc0YmI2ODNjYmQwNDAgbGVnYWN5LXRydW5rCisxNzk2MSBhNWE5Y2ZjMDA5YjViM2MwYWI4YjNlZGE5MTRkYjI3YjFkYzY0M2ExIGxlZ2FjeS10cnVuaworMTc5NjIgMjkwMDQ1MjAyNmNjZDVlZTIyMjVkZDg3ZDhmMWRlODJiYmY0ZjhjZSBsZWdhY3ktdHJ1bmsKKzE3OTYzIGY3NmExZWNkNmI1OTE2YWZlMGY1NjU2ZTY2ODUyNDU4OGQxYWY2YTggbGVnYWN5LXRydW5rCisxNzk2NCA2NjYwOTFmMGQ3MTQ0NzFhZWQ1NWQ4NzdlMzM4OTU2MDU5NmI0Yjc3IGxlZ2FjeS10cnVuaworMTc5NjUgZDJjMTdhZGYyZjBjNDU1Njk1MmJhNzQ0MGQ5M2U3NWVjZDViMDgwMCBsZWdhY3ktdHJ1bmsKKzE3OTY2IGNlMDY2Nzk5MTMzZWE0NzUwNTVmMTNlM2RlMDdkZTc2MDNhMmVjODkgbGVnYWN5LXRydW5rCisxNzk2NyAzMDgxZDcwMWJlODYxNWYzMmM5YTg5MTAyNzBkMmRkMWUxYjQwNjEzIGxlZ2FjeS10cnVuaworMTc5NjggMTU0YjcxZTE2NTY1MDNhNjllOGIxM2VhOWYyZGY1ZjcxMDVmNjNjYyBsZWdhY3ktdHJ1bmsKKzE3OTY5IGE4MDU0MTI0NWI2NjMyMDBkMWUyYzhjMTg0YmU4NmExY2E3ZThiYzYgbGVnYWN5LXRydW5rCisxNzk3MCBlOTZkNjY0ZGUyNTZhY2I5ZGVkODYwNzEzNmIyYmZiYmQ0M2RiZjlhIGxlZ2FjeS10cnVuaworMTc5NzEgYzZkOWFmYTZlNmEwNWM1ZTdiMzg0ZDgyZGQyOTU2ZTBjNDY2MmE0YSBsZWdhY3ktdHJ1bmsKKzE3OTcyIGZjNjg2ZGU4NjA1OWI4NDU2MGYxNGE4N2I5YmM0ODJkMWQ0MDJlNTcgbGVnYWN5LXRydW5rCisxNzk3MyA0ZTFlOWY1YzA3OTUwNjhlNDNkMmFlOGYyZWFlOWRmMDNmYzYzOTc0IGxlZ2FjeS10cnVuaworMTc5NzQgMWNkMDI4NWUzY2ZlZDg3YzIxODg3OGU2YmQ3ZmQ3MjA2NTljMjdkNCBsZWdhY3ktdHJ1bmsKKzE3OTc1IGQxNmI3NDEzZGM2OTZkZjc0ZmY5ZWNjYTRjMmIyYTc0NzYzZjc3ODMgbGVnYWN5LXRydW5rCisxNzk3NiA2NmQyNDgzMjg5NjcyZDc1ZTJjOGQzYmRjZDg5MzViOGJkMmQ2NjM2IGxlZ2FjeS10cnVuaworMTc5NzcgYTM1OGJhNzA3ZTRkMzUxZTU0NWQ0YjQ5ZWI0Y2E1ZTJlOWIwZmI1OSBsZWdhY3ktdHJ1bmsKKzE3OTc4IDBjMGU5MDliOGVkMjNhZDQwZDZiOGQyYTkyYzljYmQ5YjQ3ODY3NTUgbGVnYWN5LXRydW5rCisxNzk3OSA3ZDBhZjRlODEzZDg1ZGVlYWJmYTg5OWQzM2JkNDE3ZTc5MzVlMjUwIGxlZ2FjeS10cnVuaworMTc5ODAgZWYxZjQ3M2FhZWViZWIzZjJlNjRjYjQyZjg3ZGY5NmM1NDg5NmMyNCBsZWdhY3ktdHJ1bmsKKzE3OTgxIDMyYjhjNWE0ODBhZGUzNWNkYjU1ZmI1YjM2OTNmZDJmYWI4ZGQyNmUgbGVnYWN5LXRydW5rCisxNzk4MiAzYWU5ZDMxM2JjMzNlMGI0ZmE1ZmFlNjU1YTczMjNiMzhjMjQyYzY2IGxlZ2FjeS10cnVuaworMTc5ODMgNjgwMzQyOTI1MGU5YmQwOGZjNzUwYTkxODI2MzYzZGIwY2EyNThhMiBsZWdhY3ktdHJ1bmsKKzE3OTg0IGY3NzE0NTNjM2FmNTg4NjQ4ODJmYzMzOTczZDVhOWQwZjg1Y2NjNWMgbGVnYWN5LXRydW5rCisxNzk4NSBlYmEzMjNkNzQwN2ZhMTM2ZWIyZjI0ZDM2MzAyMzMzMGQxOGQ4N2ExIGxlZ2FjeS10cnVuaworMTc5ODYgY2YyNjYxYTQ1OThlYmIyN2M2N2U5ZDgyNjExZGE4MmJjMzkxNzQ3MyBsZWdhY3ktdHJ1bmsKKzE3OTg3IDdlNmU0MGU0MWM2ZTRhN2MzNjQ1NDUxM2U5MDVlMmI1ZTk0ZmIxYjggbGVnYWN5LXRydW5rCisxNzk4OCBiMzkxNzk0MGUxZmExYzFhMDRhNjlmMWI5NTI0YWUwZjdlZWUwZWFhIGxlZ2FjeS10cnVuaworMTc5ODkgMzRhNmUzZWFkMWMwNDg1NTcwZjIyZmI0MTU4MjM4NzA4NTJhNGIwZCBsZWdhY3ktdHJ1bmsKKzE3OTkwIDA1Njg2Zjk3ZjM4ZDI0NmRkMzQ1ZmVhYmJjOGUzNjUyNTJkMWM5ZmQgbGVnYWN5LXRydW5rCisxNzk5MSBhNWMzNDY5MjE4ZTljNDU0Y2I1YWUyNGRiNjZjZDZiYmRjYzI1ZTkzIGxlZ2FjeS10cnVuaworMTc5OTIgOWFkMDc2NGYyZTg0MWIxNjU5YmU3NjcxNzJmNDA4M2QyZjg0MDdiZSBsZWdhY3ktdHJ1bmsKKzE3OTkzIDkxMjAxZGUyNWYzNmQ2NDkwMjg0MDdlNGRkNThiYzA0MDA0YzhhZDAgbGVnYWN5LXRydW5rCisxNzk5MyBlMjc2MzI5Y2NlMDM2YTVmOWU5ZDM0NTEyNTZkY2E1OTg0ZTU0M2RjIGxlZ2FjeS10cnVuaworMTc5OTUgZGE5MDY3YmM5NDk0MjhmNmQ4ODQ4YmQ1MTYyNGNiY2RiOTdlZTJkOSBsZWdhY3ktdHJ1bmsKKzE3OTk2IDU3MTkyZjBhYzEzYTdkNmZkZjkzZjU2YTgxNjAyODA1ZjU4MzU3NzcgbGVnYWN5LXRydW5rCisxNzk5NyBkZDQ5ZjI5ZDk4Nzk1ZTI1ZDEzNDI2YmMzN2UzMDIzNDZiN2VjNmNjIGxlZ2FjeS10cnVuaworMTc5OTggZmI5OTU4OTMzYjI1OGI1ODM2ZWEzN2NhNjYxNDZjZTczMTcyZjllMyBsZWdhY3ktdHJ1bmsKKzE3OTk5IDQzMzE4NzQ2NjkwMTY5ZDJiNDk1NDQyNTU3OGNlMjVlYjMxYmEzYmEgbGVnYWN5LXRydW5rCisxODAwMCA1NjNkZWU1OThkM2E5ZjQ2M2QzODM2NDQyN2ZkM2RlOWVhODQzZWNiIGxlZ2FjeS10cnVuaworMTgwMDEgNzRjMDIwYWRkODQ2ZWM0YjY2YTIwYzliODI5YzYwYWIxZWMzYTQ0MCBsZWdhY3ktdHJ1bmsKKzE4MDAyIDZiMDFmYzIyZWY2ZWY4ZWQzZGZlMzk5OGM5MDk1MGI4ZTA4ZjFjODQgbGVnYWN5LXRydW5rCisxODAwMyBhMTliMWQ2YTU5Y2UxYzY4ZTYyYWJiM2M2NWI1NTA4ZTBjNDVlYzVhIGxlZ2FjeS10cnVuaworMTgwMDQgNWNmMGEwMmE1NzRiMTE5OTliY2UzYzczNzhlYWI1ZGU3NGQ5NmM3ZCBsZWdhY3ktdHJ1bmsKKzE4MDA1IDVlNWI0MzExOGM1MmRhNmZjNmJjOWJlZTQ3YjAyNGM1MjMwMWQ3NWQgbGVnYWN5LXRydW5rCisxODAwNiBhMmZjYzQ4N2I5ZGExODU4NzZmZDdlOWNlMDMxYWViMTViNmJkMzkzIGxlZ2FjeS10cnVuaworMTgwMDcgZmRjMmFiZGY0Nzc3ZWJkMmY4ZDlkZDMzYTZmOWZjOThkY2UwZWU3YiBsZWdhY3ktdHJ1bmsKKzE4MDA4IDQ4NmYzZmYxNGQ5NWFjOTc4MmE1M2NlYmUxOWIzNWZlYTJlZjFkZjkgbGVnYWN5LXRydW5rCisxODAwOSBjYTlmNmE4ZTk4ODU3MTNiYzdkODE5OGY2MDJhYzNkMTI1ZjNmOGFkIGxlZ2FjeS10cnVuaworMTgwMTAgZWQ0OWE2Nzg2OWU5YzIwZjRiNmMzZTQ5OWNmNjY2M2M3ZGQwYjlhNCBsZWdhY3ktdHJ1bmsKKzE4MDExIGUxN2Q4Y2QwOTY4OWYwMWFiN2NhYWMyZGY2YjQ2M2YwODdmNGU2MzUgbGVnYWN5LXRydW5rCisxODAxMiAxNzMwNTkxZDVkNWRhOGEyNTNhYmUzY2MwZjc3OTZkMDA2ZGE4MGQ4IGxlZ2FjeS10cnVuaworMTgwMTMgNzRmMTY1ZGMwYjVhZTdiNWFiZjIwNDAwYTQyZjUzM2NjYWRkNTU5NiBsZWdhY3ktdHJ1bmsKKzE4MDE0IGJlY2Q4YTEyMTQ2NGYzNmE0YWE5ZGJkMjdhNjc0ZThhNzdjMzY3NjQgbGVnYWN5LXRydW5rCisxODAxNSA0NTkyMzJhOWI4MDRjMGEwY2Y2NDk1N2M5MjNhZTk2MTdiODI2NDQ5IGxlZ2FjeS10cnVuaworMTgwMTYgN2IwN2Q2MmQyYzc5NjFkNDU0ZjZkZTA3ODczNDRjMWYzMjBlNGZlNSBsZWdhY3ktdHJ1bmsKKzE4MDE3IGU3MTk3MWE0MDJkMzE5YWVmYzRlM2NhYjJlYzdhMjc2NGI5M2U2OWYgbGVnYWN5LXRydW5rCisxODAxOCAzYzIxMDY0ZTgyMTRjMjdkZGVlNjIxNmEyODAzNDJjNTFiMmNiNzRiIGxlZ2FjeS10cnVuaworMTgwMTkgMDA3YTkxZDc3NzAzZmViNmJjMmE1NjRkMjMwMGEzM2I1Njk0ZjY1NCBsZWdhY3ktdHJ1bmsKKzE4MDIwIGIwNzUzNTk4MDMwMTY1NDBjZmI5NDI3Nzg0OGVhYzA1NTAxYjA0YzQgbGVnYWN5LXRydW5rCisxODAyMSBhODAwNmJiYjYyMjU3NzljM2EwZDdlYmE4MGZlODg5NzUwYWM4YTE4IGxlZ2FjeS10cnVuaworMTgwMjIgODkzMGVjM2JjMDBhOTFiNzIyYTI3ZmM0ZmNiZDI4OGExZmNlNzUwNyBsZWdhY3ktdHJ1bmsKKzE4MDIzIDI1Nzc1MTlkNWVhMTM5NzQ2YTZlMjk3MGQwNGUzN2YyOGYwOGQ0MzggbGVnYWN5LXRydW5rCisxODAyNCBlNjFlNjRkMWI1ZWMzYjgxYzc0MjI4Mzg4OGZiZGJjYmRkZmMyZDI5IGxlZ2FjeS10cnVuaworMTgwMjUgZTU4MmY1NzM0M2Y0ZDVjODM3NDNkZWNiN2JhODA0MWZkMzJiZGJjMiBsZWdhY3ktdHJ1bmsKKzE4MDI2IDJlZGYzNjZmNTYzYzhkYjY4NzZiMjEzYTgwMTQwYzkwOTc4MDhiYTYgbGVnYWN5LXRydW5rCisxODAyNyBmNjEwMmM1ZDNmOWMyYzMyZDk5OWZiMzhkZjU1ZjkzMTI0NTE2MjU2IGxlZ2FjeS10cnVuaworMTgwMjggMDljN2FjMTg4Y2UyMTc4Yjg3YjA2NTA0YjBlNGZlNTViM2JjNGRiOSBsZWdhY3ktdHJ1bmsKKzE4MDI5IDg1YTAyY2MzNzU5MGE2ZjQ5MGRkODhjYmQ5ODg2MDY4OTQ2NWI4ZGYgbGVnYWN5LXRydW5rCisxODAzMCBkMmY0ZDc0OGM5MjFlYmRiMDkwZjMyNzhkY2ExNmI4NGY0ODVlZjlmIGxlZ2FjeS10cnVuaworMTgwMzEgNzQ0YWEwNjJmNDcwMWE0MTU0MGRkNDY4MjdhY2U1YzJhYWU5MGI4MCBsZWdhY3ktdHJ1bmsKKzE4MDMyIDNlYjg2ODdjOThjNmY3YzJjNGNjNzkxMjk1YjVjY2E3YzVmMzdiNTUgbGVnYWN5LXRydW5rCisxODAzMyBhYjFmOTBkZDUwMmY4YWE4NTkyMDM3ZGI2Nzc0M2RjZjJjNWVkNzQ0IGxlZ2FjeS10cnVuaworMTgwMzQgZTc4MjNmMGNhMjFhMDYxMmFhMDU5OWRjYzg1MTY1YzNkNTY2NTQ3OSBsZWdhY3ktdHJ1bmsKKzE4MDM1IDUyZDJkMzZiOGJmN2Y3ODU2ZWVjNzY1MjMyNjg4NGUwZDVjMzRlMGUgbGVnYWN5LXRydW5rCisxODAzNiAxYjczYjM1MTRiNTg1NWQ1ZWQ0N2I3MjM4NWIyMzk1NzVkZTAyYWRhIGxlZ2FjeS10cnVuaworMTgwMzcgMDE1ZGExM2YwMDM4YzE2NmYwZTQ2ZWI3NGMxNjliOWY2MDkxNzI4NCBsZWdhY3ktdHJ1bmsKKzE4MDM4IDU0MjczODU4ZWFkOWM2MjUxMDU0ZTk1NDc3YWE1NDc5NjdiMzJiOTkgbGVnYWN5LXRydW5rCisxODAzOSAyZWQzNTg0NDZmMmZlMzM5MDIzOTFlOGY0ODIzNTlmZDIxMWU4ZmUxIGxlZ2FjeS10cnVuaworMTgwNDAgYjMzODdlZWJhNjhkZmU0Y2E5OGQ1ZjkyYWQyZDRlMjBmMzQwZjVlMiBsZWdhY3ktdHJ1bmsKKzE4MDQxIDRkMjE4NzI2NGNmYTdhZDExMzAwY2U5ZWQ4MjUzM2QwOTFlMGFjMGMgbGVnYWN5LXRydW5rCisxODA0MiA5ZTllZTNjNWE2MDc4ZjNhZWZiMTNhNTllNGNhZGJmMTYxYWU5MGYzIGxlZ2FjeS10cnVuaworMTgwNDMgMTAwYmVlYmRlOWRmZjU0ZDQ4YjQ1MDU1NzEyMWEyMTFiNDdkYWUyZSBsZWdhY3ktdHJ1bmsKKzE4MDQ0IGIyODkyY2JjNjNkYjczNDQxODBjYjUyNzAyNTkyZWQ1NmI3OTk1M2YgbGVnYWN5LXRydW5rCisxODA0NSA1YWE4YzVhYWZmYWRkNjQyNDVkNDA5NzM5NjcwYTY2MTE2ZDk3YTI4IGxlZ2FjeS10cnVuaworMTgwNDYgZjA0NGIwNmUzMTdkYWEyNDAyZDM3OWY2NDg0YzdmMTQ5MGQ1YThmMCBsZWdhY3ktdHJ1bmsKKzE4MDQ3IDMxOWM2ZTM3MTgyNTFjOTgzNTM0MzYxMWZkMjczMjgwZjQwZmMxM2IgbGVnYWN5LXRydW5rCisxODA0OCA2NTZkNDM0Mzg4YzhlMjI4MzAyMmFjMTRkOTZkNGNiNTIyYzQyYzRhIGxlZ2FjeS10cnVuaworMTgwNDkgZGI0ZDgwYTY3Mzg5YTIwNjFkMWExYTNkZTIzMDhjMzQwMDEwZmMwNCBsZWdhY3ktdHJ1bmsKKzE4MDUwIDFjNjNlMjI0ZjYxNjY0MGM2OGVhNDY1OWM1YmQ4N2U4NDRlN2FhYjEgbGVnYWN5LXRydW5rCisxODA1MSBlM2Q4MzY1ZWEyMzE1MTI2ZTgwM2Q0OTJkN2Y5ZDhhNzAxYjU4ODlmIGxlZ2FjeS10cnVuaworMTgwNTIgYWYwMmFjNTgwMDI4YzllNWQxYzA5MmYyMDM1MmY1Y2FjNGEyZmJlYyBsZWdhY3ktdHJ1bmsKKzE4MDUzIDM3NDNhNmRiYzRhNzcyYjViMDhiZGNkMTEyYjM4Mjc1Zjg2ZDYwOTMgbGVnYWN5LXRydW5rCisxODA1NCA0OGNjNzdiNjNhZDVkZjVkZWMwYzNiMDU5NzgyNjkxMTMxNmM0ZjNlIGxlZ2FjeS10cnVuaworMTgwNTUgMjNiZjMwODU4ZWY0NTMxZWYxNDI2MmY5MDYxZTM4ZTYxN2E1MzQzYyBsZWdhY3ktdHJ1bmsKKzE4MDU2IGQ0NjlkMTU3MjNkMzVmMDUyZmZiNjRjMDRjZGZiYjRlMjA0ZjJjYjAgbGVnYWN5LXRydW5rCisxODA1NyA3N2VhOGZjZWYyNGNiMzU1YjBiZTFmZDY4MjA4MzVlM2YxYjE4NDM2IGxlZ2FjeS10cnVuaworMTgwNTggYzUwYjc4NmViYzQ4NGIyNGZiOTA3YmYyMDFkODdhOTlhZjUzYmI0NSBsZWdhY3ktdHJ1bmsKKzE4MDU5IDRlZWIwMjgxN2I1ZDgwZTQxM2I3YTZlYWRjNWIzZTVjZmJmMjdhZWQgbGVnYWN5LXRydW5rCisxODA2MCA5YjdkZGQ5Y2FlMzNlMjc3MWU4ZDI3MmU2MzQyNTk4OTYxZWI5MzRmIGxlZ2FjeS10cnVuaworMTgwNjEgNjQxN2NlOTE0ZGFlODdlZGQyODQ5MTQ4YWQxZjZiNDIwOTllNDBiNyBsZWdhY3ktdHJ1bmsKKzE4MDYyIGUwYTU4MzVhZjgzMzUwYTA3ODYwYWI3ZTFhNzlmOTVmNDlkMDhiN2QgbGVnYWN5LXRydW5rCisxODA2MyAwNGU3NmUwOGUxMGZmNDFmZTJhZWM4YTU2YmVhZTZmZGEzNTFkYmFhIGxlZ2FjeS10cnVuaworMTgwNjQgYzk0ZjFjNzc2MTUzNmVhNzA2MzE2NzFmYzBjZTM5YzFlMTA0ZGRmNSBsZWdhY3ktdHJ1bmsKKzE4MDY1IDcwMWE1NjFiZGVmYTgxNjQ4NjRjYWE5MjgyYTRhYjJlNWE4NWJhYWQgbGVnYWN5LXRydW5rCisxODA2NiA3ODM5NjdiMTY4NzlhOGE4NGJlNThiMTkyZmUxNmI5N2FlOTIyYTU5IGxlZ2FjeS10cnVuaworMTgwNjcgOWYzMDc3NTA2ZDFhMTZiYTQ4N2JjNTEwYjA3ZmYwMWExNmQ4ZGNiZCBsZWdhY3ktdHJ1bmsKKzE4MDY4IGQyYzIwNWMzNmQ4YTQxOGY3MGRjOTExZjA4ZjkzYjQ0NGJkMzRiNjMgbGVnYWN5LXRydW5rCisxODA2OSBlNGM5YjgwNWYzOWZiZDc4M2EwOTI1MGExMDlkYzE3N2IzMzdkMTM2IGxlZ2FjeS10cnVuaworMTgwNzAgNTBhODg4ZWM1N2MxMjcxMWZkNTExYTI5M2NlMDUzNjU5MTIwY2FiZCBsZWdhY3ktdHJ1bmsKKzE4MDcxIDg4MmNlZmUyMWRjMzY4MTg1ZDdmZmQ3OTA5ODYzY2IwNjc1ODI3ZTggbGVnYWN5LXRydW5rCisxODA3MiA3ZDQ1MjQ5YjE0NzdkOWM3OGI5NTRmYTM5NDAzNTk2YjQ1YmMwN2ZiIGxlZ2FjeS10cnVuaworMTgwNzMgOTU5ODY1MGYyYmM5MDIzMjBiN2U5MjBjZWM4MmM2MGZkNDhkMDMxYiBsZWdhY3ktdHJ1bmsKKzE4MDc0IGEzOTc1ZDI4MTFmMDA4OWY1MmRhMmNlM2M1ODZhYTdlN2I2Y2E4OGMgbGVnYWN5LXRydW5rCisxODA3NSBhODJlNGMyOTViOTMwMGQzMDhiMjZkMTRiZjQyMDliYjFmMzA3ODU4IGxlZ2FjeS10cnVuaworMTgwNzYgNWI1NjU0Y2E3NTU1Yjk4YjBlMmI0MWNmNjYxMTA5ZDYwM2U0M2NjMiBsZWdhY3ktdHJ1bmsKKzE4MDc3IDk5ZjM4Yzc1NWFiZWJhNDU1MDEwOThmNmEyYWI0MDU2NjM1OTAxZTcgbGVnYWN5LXRydW5rCisxODA3OCAzZTcwMTZjNzlkYWEwZTdhZmNkM2U0NTJmZGYyZGY3MDBjNWUzM2M3IGxlZ2FjeS10cnVuaworMTgwNzkgZDdjOTNhNzhjOTQ5MjhhZmI5YzI4YzNiNDRhYjlmMTdmODkyZTA0NSBsZWdhY3ktdHJ1bmsKKzE4MDgwIDNkOTBlMWQ3NjA1ZjcxMjcyM2M0YjRkNmJjZTMwYmVjYzRiMjQwZDIgbGVnYWN5LXRydW5rCisxODA4MSBlNDcwYTk2MThjYTcyYWJhMzU4NmQxNGEzNGEzZDIzNDYxNDI3MGZkIGxlZ2FjeS10cnVuaworMTgwODIgN2U5MmI3YTUwNTdjNTEwZjFkM2JlZTI3OTJlMzQzZGYwM2FjZDdlNCBsZWdhY3ktdHJ1bmsKKzE4MDgzIDQ4NmEzMWQ4YTNiMzVjNWY5MWZlMTcyN2M1NDNjOGZhNzZjMDYzZjUgbGVnYWN5LXRydW5rCisxODA4NCA0ODdiMzUwMmE0NWIzMTBmY2RhNzBhYTA5ZmRiMmQ2NThjZDVkMWFkIGxlZ2FjeS10cnVuaworMTgwODUgZjc5MjgyMGYzY2Q0YmVmNTYwNTNjYWRmZThlNGRlNWQwMTI2NDVhZCBsZWdhY3ktdHJ1bmsKKzE4MDg2IGQyYjljYzQ0MGI4ZGQ0MmUwMzE1ZjJiOGQzMjYxZjMxMGM3YTBiMDEgbGVnYWN5LXRydW5rCisxODA4NyBiZDg4ZGYyMGRhMmY1OWFiNGVkZGQ1OTJhMzk1Mzc2MDI0MGNhNTkxIGxlZ2FjeS10cnVuaworMTgwODggMTBiM2NiZGJkZmQ5ZmQ5MTk1ZjVmNTQwMjNhMmQ0M2Y3MDEzMjA5NyBsZWdhY3ktdHJ1bmsKKzE4MDg5IDM4Yzc5NWFmYjNiODA1M2ViNmE4ZDJhY2RmNmU4N2I2OWI2ZDJhZDMgbGVnYWN5LXRydW5rCisxODA5MCA4NjRmMTcxNGFmMjg3MWIzMDdjZTQzNzFmOTZhOWFhNTZjMDRjYmRmIGxlZ2FjeS10cnVuaworMTgwOTEgMDM3MjBhMjZjZmU3MzY1NDdmODY3ZjQ3ODEzODhkMDJiN2NkZGRiZSBsZWdhY3ktdHJ1bmsKKzE4MDkyIDhmZTJhNzk4MWQ3MGIzMmE5OGRiYTY0MGE2NDQyMDYyZjA5MDdlZDEgbGVnYWN5LXRydW5rCisxODA5MyBjOTRjMmFlNzQ2ZjFjYjNhNjQyYTVmZDE0YTgzMDNjMGE3ZWJlNTlkIGxlZ2FjeS10cnVuaworMTgwOTQgZjFhZGU4YWIxODY5NTUzN2NjZWM5MGY3Y2UzM2E4NmQ2NjU2OTU1NyBsZWdhY3ktdHJ1bmsKKzE4MDk1IDc1YmZiZTM3YWI3YTZjMDkwMzRiZmE3YzBhMDZlYjc2Yzc0NmU5OWUgbGVnYWN5LXRydW5rCisxODA5NiA5YWY3ZmNlMzYzODQxMzE3M2EwMDdmY2QzNDIyNDJlZWYxOWY5MDgzIGxlZ2FjeS10cnVuaworMTgwOTcgMDIyN2I1OTYxZWVmNzRhODc4MjMwYTYwOGQwZjFmMmE5OWE1YjgwZiBsZWdhY3ktdHJ1bmsKKzE4MDk5IGRhNDNiMTY5ODZiNjc3MDFkOGI3MDQ0NTg3YzcxNWRjMmM3OTM2NjMgbGVnYWN5LXRydW5rCisxODEwMCA2NTc3NTBjMWQ3ODM1NGQ4Nzg3NzNkY2YyYzMyZDhkOTI0ODY0YzcwIGxlZ2FjeS10cnVuaworMTgxMDEgMmNkZmM0NmU4MDY4ZDBkOGFkOTgyM2M0NWM4MTFmNDZjODRlZmZhYiBsZWdhY3ktdHJ1bmsKKzE4MTAyIGU5ZTg4MjRlM2Q4ZGZkOWEzYmZiMmVkOWZkNDdhYzI0YjY4NDQwNjIgbGVnYWN5LXRydW5rCisxODEwMyA3MWVhMmJiMDE4ODk1NzJmOTY4Nzg2NjhkMTE2ZDE3NjQxNDlhOWQwIGxlZ2FjeS10cnVuaworMTgxMDQgZTRlYTQ0YjEwYWJiZWYyNWFkMTA3ZTBmZTExNjRiOWM5ZWU0ZDY4NCBsZWdhY3ktdHJ1bmsKKzE4MTA1IDY4MzcxMzUwODFkNDcyN2VlZmRlNzQ3NTRiZGYyYjAyMGE2MWQzMjcgbGVnYWN5LXRydW5rCisxODEwNiBkZDBkMTk5Njc0ZjgyYTRjZjVlMzFmNzEzMTkzYzBmNGQyZjk3MTgzIGxlZ2FjeS10cnVuaworMTgxMDcgODY4NmYyODRmYThkNzQ5MDEzZWNmNDNkOTc5NzY4MGQwMzllZjRhOCBsZWdhY3ktdHJ1bmsKKzE4MTA4IDczNWVkODU2ZGU2MGU0MThmNjc1N2FjNzNjYmFlNGJhMGMwYTU1YzIgbGVnYWN5LXRydW5rCisxODEwOSAyYTA1YzFmYmQ4OTQ3ZGQyMzMwMWY4ZjQ4MGVlZmVkYTUxZGM1OWIyIGxlZ2FjeS10cnVuaworMTgxMTAgY2M5ZWIxODdiNzMwMmNhMzc3MGIxMTZhOWFjMmNkNGFkZGM4ODk0NSBsZWdhY3ktdHJ1bmsKKzE4MTExIDk3MjBjMmM2ZjQzNWQzZDZjZGViM2I5MDJmNGFiMjAyYjJjZDY1NjcgbGVnYWN5LXRydW5rCisxODExMiAwZjlmZDNmZDc3OTlhOGFjY2YxZjU2YmJhY2VmZDE5MDkzMTExMGM5IGxlZ2FjeS10cnVuaworMTgxMTMgMDgxMzAyMGIyOTc3NWUxY2YyY2ZhMzQxODBmM2FhZGU0N2U2N2U0NiBsZWdhY3ktdHJ1bmsKKzE4MTEzIDJmYTRlMzUwODNlMDIzNDJjYTAxNGJmNWJmYmE0NmFlY2I4MTZjMzEgbGVnYWN5LXRydW5rCisxODExNSBiZDRjZDczY2IwZDZkNWY4OGNlZDdkZjc0ZDMwZDdkMTRiMjI2YmI3IGxlZ2FjeS10cnVuaworMTgxMTYgNjFmODIzMDA5MTQ1Y2ExM2E4ZmI1ZjY5ODdhMTYyOTI5OTY2MzNjYyBsZWdhY3ktdHJ1bmsKKzE4MTE3IDMxNDI2OThkMTcyYzg1N2JiOTkxOGM1MTJmMWViOGYwNTY2MjI2MGIgbGVnYWN5LXRydW5rCisxODExOCBhMTg3YWQ4MmMzM2Y0NzI5M2Y0NGE0YzM0MjM4ZDNkNDRjNjA0YWMwIGxlZ2FjeS10cnVuaworMTgxMTkgZDJhYTI2NmFlNDFjODhlYjdlYzBlMjE4OTFmZWEwNmM0NWQ4YmMwNyBsZWdhY3ktdHJ1bmsKKzE4MTIwIGJjNGY4OWVlZmIwNGQ0MmViN2UxYjFjMjNmNGEzNjZlODAzMDA0ZGIgbGVnYWN5LXRydW5rCisxODEyMSA4Nzc4MGRiZjhkMTc0YjFiZGU3NTNhZjUwZTg2MTU2MTNlODhhYjNkIGxlZ2FjeS10cnVuaworMTgxMjIgMGQzYmFiYWM0Mzk4ZmJlMzhiNWY0NzBhZDlhODhiNGYwMmExMDA0ZCBsZWdhY3ktdHJ1bmsKKzE4MTIzIGI1MTYyOTk4MGM4ODZjMjg0ZWI0M2I1ZGNiNDQyNmI5MWNhMzE1YzkgbGVnYWN5LXRydW5rCisxODEyNCAzODdmMzFhYzMyZTY0OGM1NDM3OTdmNDNhMmZmMjM5MGJkOGZmYzIzIGxlZ2FjeS10cnVuaworMTgxMjUgYzk0YzFiNjYwZGRiMTU2YTdlZmI0ZWQ4MWQwMGQ4NGY4YzQxMjVjNSBsZWdhY3ktdHJ1bmsKKzE4MTI2IGQ1MDMzNWFjNTU4MDNjMDQ5MTFmNGM5MTM1MWMyMjQzOWVjZDUxYjUgbGVnYWN5LXRydW5rCisxODEyNyAwODMyODEwYzQ2MTI0MzM3OGM1MzA1ODFhNTg0N2NiNTBhMDAxM2NkIGxlZ2FjeS10cnVuaworMTgxMjggZDU3NDBlMTJlYThhMjlhOWRhYTRhZGFiNWRhZTU5ZjM5N2IzZTVmNCBsZWdhY3ktdHJ1bmsKKzE4MTI5IDc0YzYxNTNhYmJjMTBkMGQ3ZGVkMjQwZmM0N2ViMjViYjg3OTAyNjkgbGVnYWN5LXRydW5rCisxODEzMCA5MjljOTJjNTBjYjJiYmVjODM2N2MwNThiZTAxOTEyNDA5YWYwNTdlIGxlZ2FjeS10cnVuaworMTgxMzEgM2U5NmZkNDRiOWQwZjc4ZmQ0OTI1OTgxYzQyYWZkNWNjYjhkMzgwNCBsZWdhY3ktdHJ1bmsKKzE4MTMyIDYzODFmYThkN2RmMzM3MDRiYzI5NmQ4MDRlYjdjNzZlMzBlYzk3ZTIgbGVnYWN5LXRydW5rCisxODEzMyA2ODE1OGQ2NGU4NzRlOTUwNzRjODkxNjcwZGRiNDRjMGQyN2YzZjQ0IGxlZ2FjeS10cnVuaworMTgxMzQgODQ3ZDk5ZTRmMjRhZDNlMjA3ZTlhNmI4ZDBhYmU3ZTE5NGQ4MDYwMSBsZWdhY3ktdHJ1bmsKKzE4MTM1IDY1ZDI2NWQ4OWQ4ZjQyNTVjNzM1N2I5OThkMjIwZTlmNmMwNzgyY2QgbGVnYWN5LXRydW5rCisxODEzNiBiYTM2NzdlMWY4MWI2NWRjNzRjNDFkZWY5NWVlZDVkNjA2YmM4ZDYxIGxlZ2FjeS10cnVuaworMTgxMzcgMTE2NzZkZGFmZjAxNWUyODdhMGU3ODFmMjdiOWI2NzBlODZhMjBkOSBsZWdhY3ktdHJ1bmsKKzE4MTM4IDI1NDEwNjJlZDRkZDk4YmFjOWNiMWZjNzA5NGNjZjBiMjk1MjJhZDUgbGVnYWN5LXRydW5rCisxODEzOSBhNWNhNTQ5NjlhM2ZmZTcyOGFmNTM2MTZlNzZkY2I4MzM5MTJhNzM5IGxlZ2FjeS10cnVuaworMTgxNDAgYWYyYWE4MDdhY2RlN2ZhNGNhMDg4NjQzMDQyMjQ5MjFiYTYxNmUwMSBsZWdhY3ktdHJ1bmsKKzE4MTQxIGJmMjFlNDE3YmVkMjIzNDkyMDU4NWMzMmIzOTliYjhlNDNjODZhNTEgbGVnYWN5LXRydW5rCisxODE0MiA0YzdjNzc5YmFkODc5YjhkZWI3MGRkZDM1Y2U3YTJhNDU0OGRjMjhiIGxlZ2FjeS10cnVuaworMTgxNDMgYjk0MGEwZmMyOWUzMzk0OTM2NTA3N2EwZjVhMWU4NTc3MzM3M2JmNCBsZWdhY3ktdHJ1bmsKKzE4MTQ0IDhmNDU5MmY1NDk4OGRiZWQ0NjBhNzJkOTMxNjRjNjM0YjIxYzNkZGYgbGVnYWN5LXRydW5rCisxODE0NSAxMzJlNjk4OTJhYTVkMTVhZTUwODgwYWQxYzVhYTExMWJmZDlhNGUwIGxlZ2FjeS10cnVuaworMTgxNDYgM2E3YWZkM2U2Yzk3ODE0YjQwNDg0NzgxMzAzMTAzZTcxNTExOGQzZCBsZWdhY3ktdHJ1bmsKKzE4MTQ3IDFmNGE5YWRlMzBlY2MxN2NiMWI3ODM0MWQxZTBiMDViOGYzOWZhMzMgbGVnYWN5LXRydW5rCisxODE0OCAyNzJjMjk2NTA4MWM2NTE4NjAzNjhkNzQxYzVjNmVmYzkxNGMxOWNiIGxlZ2FjeS10cnVuaworMTgxNDkgMjNiMTEwOGQ2YzhiNWZjYWQ3MjgyODAxYjEyNzhkNGQxYmY1MThhMSBsZWdhY3ktdHJ1bmsKKzE4MTUwIDFmOWQ1ZWI4NGIwYjIwYzBiYjZlOGFiYTZkYjA3NmVjODQ2Mzk2OTEgbGVnYWN5LXRydW5rCisxODE1MSA5ZGQ3ZWFiODM2ZDdjZmM5YzU5YzNlZWE2Yjk2MDRhNzBjZTQzMjNkIGxlZ2FjeS10cnVuaworMTgxNTIgMDliZjZkMzAwMjRmYjA4OGE1MDhmNjkwMmVlZjUwZTUwMzRlZDc3NiBsZWdhY3ktdHJ1bmsKKzE4MTUzIDg0N2RjNjFlMzBmNWM4ZTg4ZTk3Njk1YjQ0N2E5NDVhMDljNjk2ZGIgbGVnYWN5LXRydW5rCisxODE1NCA3NTdmZjg4ZTE3YWFkYmRhM2QzMWNmODhjNmFmNGYyOTMwZGZiMmY0IGxlZ2FjeS10cnVuaworMTgxNTUgZTZhMTA4NTcyNWFjZjQ3OGE5ZTgxZWIzNzVlNDczMDVmOGNkMGNmZSBsZWdhY3ktdHJ1bmsKKzE4MTU3IGYyMGRlYWVhZjhiOTdjMjFkNmZlMDI5NTRiZWRmYjdmZDA0NTY4MDMgbGVnYWN5LXRydW5rCisxODE1OCA4NWE1MDlmYWNjYzc5NmYzMDJkZmY5NjRkYmZhMjlkYmQzYjU1NTI4IGxlZ2FjeS10cnVuaworMTgxNTkgNjhiY2U1ZDgzZjdiOTNhNzFlZTJkNGE3ZTNkOWNkODdmNjJhNjU4OCBsZWdhY3ktdHJ1bmsKKzE4MTYwIDBkYTRjY2M3ZThjZjM2ZTZmYjJiZjVlY2ViZmI4ZDVhMzg2NWEzYjUgbGVnYWN5LXRydW5rCisxODE2MSAyYTlkMjc2NTYyNWU1YTc3NWRkNWJkYTYwZDQzNTU0YTc2N2NkMjI3IGxlZ2FjeS10cnVuaworMTgxNjIgYjIxMTAyNmNlZjg0Y2E4MDNkODZmOWRhYTJiOTYzNjgwZTU2MmFjOCBsZWdhY3ktdHJ1bmsKKzE4MTYzIDA4MjA5OTRlMmQ1ZTg3NmYxZTA5YmYyYzQ3NWQ4NzdkYzFhYzM3M2MgbGVnYWN5LXRydW5rCisxODE2NCBhNmYzZWYxMDgxNWVjYjhkYzEwZDhkN2I5Y2EwOTRhYWRkY2EwZmJjIGxlZ2FjeS10cnVuaworMTgxNjUgMDdmMjQyNjFjNmU2ZWJlM2VmY2U0NDhjZTQ5NDZjNTE2ZjdmYjI2YSBsZWdhY3ktdHJ1bmsKKzE4MTY2IGE5OTlkMDU4ZmFiNTU4MTU4MzhjMDAwNjIzNWI5ODc4ODlhNDdhZTggbGVnYWN5LXRydW5rCisxODE2NyBmODcyMWU4NDk0MjQ2Y2JhNDE4MzAxOTJlZGI3YTI4NDdlY2ViYzg5IGxlZ2FjeS10cnVuaworMTgxNjggODQ3YWU0MDA3NGQ0ZTAwNzM0YjMwYTBkNGY3NmJlMjVhYmE2NDk0NyBsZWdhY3ktdHJ1bmsKKzE4MTY5IDA3NThjY2IzMzYzY2ZkNjRlOWY3NmM0ODgwMTFjZWQ2ZTVjY2I4NmUgbGVnYWN5LXRydW5rCisxODE3MCA1ZDJhMjE4NWM2NTFhNDMzOWJhNGVhODE2N2Q2MGE2NGJmNTYwYzYwIGxlZ2FjeS10cnVuaworMTgxNzEgMzMzMzdlNWE0MzAwYzk4ZGFhMTU5YWNkOGMwZjE1OGY3NTI1ZWMzOSBsZWdhY3ktdHJ1bmsKKzE4MTcyIDg2ZDA2OTQxNDA5OWZlOTgzNjM1NDIxZjllNWI4NzEzMmFiMDcxM2UgbGVnYWN5LXRydW5rCisxODE3MyA0OTQ2OGMwMDdjMGNkNWFmMjljMzk3MWVmZjc0OTY0YzU0MTViM2I3IGxlZ2FjeS10cnVuaworMTgxNzQgODdiNWU0ODA3NjJmODZiMTc5NzBjNWIzY2E5MDFiYTY0NjgxNzAxOSBsZWdhY3ktdHJ1bmsKKzE4MTc1IGI0OWY1MjJiZjg5M2VhNTJhYjA1OTk2OGFmNjIxNWRhZWFkNTBmNGYgbGVnYWN5LXRydW5rCisxODE3NiA4ZTg2NWY1ZWNmNzg0MWZkNDE5MTJhYjA0ZTMwYmQxM2Y3YzgxZjRlIGxlZ2FjeS10cnVuaworMTgxNzcgMTM5NzVhZWM1MTUyMTU2MDE3MzM4ZmFmZjFlMjk2ZTNmOGIzY2RjYyBsZWdhY3ktdHJ1bmsKKzE4MTc4IDhhYTk0N2UxZWVlODJhMmVmMmUyY2Y2MGQwMDExYzA0MzhhZmNiYTUgbGVnYWN5LXRydW5rCisxODE3OSAwOWVjODgyY2RlNjE0NDIwYjk1NTFhMzhiYzE5N2IwZGE3NmFiNmRjIGxlZ2FjeS10cnVuaworMTgxODAgM2JkMTNhMmZjODM4MjQ4NGUwMDJjNTJlNzNjZTFiNWE1YTIzNDI5MiBsZWdhY3ktdHJ1bmsKKzE4MTgxIDExZTNhNmUxNmE5ZjIyNWZhNjJhODgxNGRlYzA0ZmU0YzAzZTA2ZDggbGVnYWN5LXRydW5rCisxODE4MiBkMTdiYTE0MTQ4MGFlN2E2M2I3NzgyNzBhY2U0NmZlMWQ0ZjllNTlkIGxlZ2FjeS10cnVuaworMTgxODMgZmQxNzIxN2Q1YmE4NjhhZjBmZWEzNDdjOGE4Y2NjYTlmYjNjODBmMCBsZWdhY3ktdHJ1bmsKKzE4MTg0IGQ4YWNhM2M4OTBmN2E0ZmMzNTI4NTZiMmMxZWU0OGI1NjIzNTA3MjggbGVnYWN5LXRydW5rCisxODE4NSA2NTU5NGZlYjU1Mjc1N2U3NmVhZDk2NzBlNTNkMGJjNDNlYmY2NzI5IGxlZ2FjeS10cnVuaworMTgxODYgZTVkNGM0MjRjNDRmOTM2Yjc2NGY4YTUwYTNmY2FkY2Y4MzMyM2RkNyBsZWdhY3ktdHJ1bmsKKzE4MTg3IGMxODQ2ZDMzMWRlOWQxZDM5NzUyZDVlNTExMzAxZjNiZmViNzkyNDcgbGVnYWN5LXRydW5rCisxODE4OCAwZDYzYzBjYTdhZTQyMjM5NDY1M2VjMWIxNDczMzRlYTA0ZjczZDk0IGxlZ2FjeS10cnVuaworMTgxODkgNWQ1ODZkNDVjYjVhNTI0YWQ4YTAzZDgxODk4NTI3MWU3NzhlOTRmOSBsZWdhY3ktdHJ1bmsKKzE4MTkwIDgxODkwNGE5OWNhMzczMTdlMWMyMzdiMTdlYmY4YjdiNzA4ZWExNjUgbGVnYWN5LXRydW5rCisxODE5MSA3ODhiNTIzZDQ4MjdiMjQ2OTQ2YzA1M2M1NWY4NDhiNjA0Y2Y5MmVmIGxlZ2FjeS10cnVuaworMTgxOTIgMTJhZWMzMzgxYzk0NmJjN2IxODg3MGYyMzVkMGFmOWFkMDI3OTc2ZCBsZWdhY3ktdHJ1bmsKKzE4MTkzIGQ1MTU3YzhiYjExYTRkZGExMmMwYzdmMWNmZDkyYjg4MzQzOGIyNWUgbGVnYWN5LXRydW5rCisxODE5NCAxMDBjNTMzZDlhM2U2MTU2NmQzYzUxZWE3MDRiYjZjNDFiODc3YmIyIGxlZ2FjeS10cnVuaworMTgxOTUgZWM3OTgwMGY0YzI3NzAyNWYwMDdjYWQzM2NkNWJlYTdlMDQ2NDVmYSBsZWdhY3ktdHJ1bmsKKzE4MTk2IGJiYzk5MWFiNmQzMjIxYTZmNTNkNTJjNWVmNTIyMTg4NmZlZGY4ODQgbGVnYWN5LXRydW5rCisxODE5NyBhODFmOTIwMjgwM2RiZDJlNTUxNjBhMTQ5NTU5NTdlMzIwNGVkMWE1IGxlZ2FjeS10cnVuaworMTgxOTggY2ExYWUyMWEzMDM5YjM0MWQzZTY2NTVmODQ5NmRkYjkzNzBjMDdiOSBsZWdhY3ktdHJ1bmsKKzE4MTk5IGMyZDc0NTFiNDJmNjZjNTI4YjUwMzI2ZmRhYTRmZTFjMjdmMDBhYmUgbGVnYWN5LXRydW5rCisxODIwMCBkOTlhMGY2Y2ZjZTIwYzhhZTk5NjI2NjZlNmNlMzk1NWQwYTE2MTI5IGxlZ2FjeS10cnVuaworMTgyMDEgYzJkMTAyNzRhMjE0ODkyZjUzZjcyM2UyMTZjYjJiOGQyOTM3NzllZCBsZWdhY3ktdHJ1bmsKKzE4MjAyIGNiMTFmYTViMTFmNDIzZGZiNTMzODlhZDRkMjIzMTU5OTBlZTc1NWYgbGVnYWN5LXRydW5rCisxODIwMyBhY2YyYjE5ZTQzNDQzMjMxNGFiNjcwMjEzYjc3MmNkZWQzYjgxZjg0IGxlZ2FjeS10cnVuaworMTgyMDQgZTU5ZjUzOGJiODI5M2FmMjg4NTExZDU5MGVjNDY0YmVmZDYxMzMxZCBsZWdhY3ktdHJ1bmsKKzE4MjA1IDAzZGM3NjFkMmNjNDllODg0ODU2YWQyMTE1YWU2NTUzNmU3N2Q2YzcgbGVnYWN5LXRydW5rCisxODIwNiA1NjNkY2ZlYzJhZTllNmMzYWUxOWZlNWJjN2M5NzViOTg1OTFjZmEyIGxlZ2FjeS10cnVuaworMTgyMDcgMzA0ODcxZDZlODY2MjQ0Njc4NDc3YmUxOTczOTI0MWJiMzJkMzdjZCBsZWdhY3ktdHJ1bmsKKzE4MjA4IGQ0YTQ2MzI2ZmFmNDM2OTRlYTY3MzllZjIwZTc2MDczNTQ2ZGEzZjcgbGVnYWN5LXRydW5rCisxODIwOSAwYzE5NjcyZDQ3YmIxZTE3MTFjZDRiYjI5MTBkNjczOWU1MGEzYjFjIGxlZ2FjeS10cnVuaworMTgyMTAgYjNkZWJmNjQ3YjUzZWE4MzEyYmI4NjBiNzUyNTgxMDM4YjQzNWI5NiBsZWdhY3ktdHJ1bmsKKzE4MjExIGE2MjI0ZGE3YjRlNDM1Y2JmZjJlMTdhOTRlMWI1ODU4NTkxZjhkNjkgbGVnYWN5LXRydW5rCisxODIxMiAzZTU0Y2VmYzU4YzYwMWU4ZjIwZTI5ZDk3NjdhZTk0MDIzZDhiMmUzIGxlZ2FjeS10cnVuaworMTgyMTMgZjQ4MGQ1MmMwNzYwYWRiMTQ5MmUyYzIzNWRmMjY2YTk2ZjVmNzU4YiBsZWdhY3ktdHJ1bmsKKzE4MjE0IDdiZTllZGM0ZDVkYjExYjAyNmRjN2NhNDhkOTI2MWQ5ZWJiYTIwNGEgbGVnYWN5LXRydW5rCisxODIxNSAyYTM2OTZkMzI3MjFlNzAwOWQyOWY4N2MxZDA1MTBmMjZmMDcxYzQ4IGxlZ2FjeS10cnVuaworMTgyMTYgNmU3MGJhYTQ4N2VkNTIzNGQ0YjNmYmQ2NWZiZDI0ZWFiZTA3YTJlOSBsZWdhY3ktdHJ1bmsKKzE4MjE3IGVlMjcxYzIwYjA1ZjNiMjQ5YTBjMjI3ZWJlMGM2ZGY3ZGZkYjhmYmYgbGVnYWN5LXRydW5rCisxODIxOCBhYjM0MzhjZjFmM2U2YjM2YTk5MGNiOGEyNWFiMTJlMmM5NWJiNjMyIGxlZ2FjeS10cnVuaworMTgyMTkgMTJiOTJhMzU2NDFiZTJlZWNiYTY4ZWZlYWNhZDBiZWZlNDJkODM5MSBsZWdhY3ktdHJ1bmsKKzE4MjIwIDc0ZTFkNzk1MjBmZDRjZGVjY2VhZmFhY2RkM2ZhMWFlOGJjN2MzYzkgbGVnYWN5LXRydW5rCisxODIyMSBhM2FmMTQ1ZDI1MzFlMGMzNjQyN2ZjNTEzNzc0ZjAzYTNlMzQ1OTI1IGxlZ2FjeS10cnVuaworMTgyMjIgOWExN2NkY2QzMzIwMzU4ZGMxNjUzM2Q0Njg0NzJhMWExYjhiZDQ2NSBsZWdhY3ktdHJ1bmsKKzE4MjIzIDQ3ZDlmYmU2NTM3Yzg3Y2Q2ZGI5M2MyYmM2NzY3YWY5ZDZhNmMyMDIgbGVnYWN5LXRydW5rCisxODIyNCAwOTk1MmQ2ZWQzNzI1OWYxNmQ1NjE2NTJiMjAwNTFiODU2YzRhYzg4IGxlZ2FjeS10cnVuaworMTgyMjUgMWU0ZGU2MDEwNTFjMTYyNDExOGRlYTMzNjQzOTFlNTc0NzhmMjk5NSBsZWdhY3ktdHJ1bmsKKzE4MjI2IDNjNjA4MzI0N2NlNzU1Yzk2MDAyNzUyZWE5YzU5M2U3NzQ1ZjY0OTggbGVnYWN5LXRydW5rCisxODIyNyA4Mjc1ZDg2NDNlNzk4OTEzNGVkYjA0N2E1M2EyMzFiNDkwOTg5ZWZhIGxlZ2FjeS10cnVuaworMTgyMjggOTAwZjI2NmM1ZDhlMmMxOTI3MjQ2Zjc3NGQ2YWI5MjgwNGM0NTEzOSBsZWdhY3ktdHJ1bmsKKzE4MjI5IDNhYmNiNjk2NjYxNzU5MjY0Y2FiNmE1NjI4NjllZThhMGUzOWYzMTAgbGVnYWN5LXRydW5rCisxODIzMCAyZTFhYjBjOTQxYzBlY2MyN2FkZWEwOTMzYzNhZjFmNzk5MDMwNTU4IGxlZ2FjeS10cnVuaworMTgyMzEgYzdmNWRkMmJkYzdkNjlmNTNlOWVmNzliMDk4YzJlNmZmYzRmNDUxNCBsZWdhY3ktdHJ1bmsKKzE4MjMyIGY2MjMzOTM4ZmY4OWIwZTY0OGY2ZjMxMDIwZTk4MWU1YWQ2OTdjNDYgbGVnYWN5LXRydW5rCisxODIzMyAwMTkyMmEwZjZmOTJiMmUzZmViM2Y4Yzg5ZWE5OWUyMTk5MjVmYzg3IGxlZ2FjeS10cnVuaworMTgyMzQgYTgyNmE0NmJhZTU0YWM5MGYwZmE5ZWQwMWZkMjY1MjBkYmFjZWRkMSBsZWdhY3ktdHJ1bmsKKzE4MjM1IGNlZTk2YjM5MWZmYzI2MDY3NWViNTY5ODEyYWQyMTZkNmU2MThiYzQgbGVnYWN5LXRydW5rCisxODIzNiA0OTNjYTllNDI2MGU1MmEyMzdmNDBkZDM0NzY1YmNhNGM4ODE4YThkIGxlZ2FjeS10cnVuaworMTgyMzcgODNjZGQ0NTQ4NWE1NzNhMmFlNWJmODcyNGI3MTUxOGU5NmY2MTUwYiBsZWdhY3ktdHJ1bmsKKzE4MjM4IDliMWJlMWQ4NDgxMDQ2NzM5NzQ2ODBhY2ZjNGI0OGY3MzA4YzU3MTkgbGVnYWN5LXRydW5rCisxODIzOSA3YTgyZjg0MjkwZjdiYmQzMDQ4OGExNTVhODZiMzlkMmI4MzFmMmQ3IGxlZ2FjeS10cnVuaworMTgyNDAgYmIwMDZhZDAwZDllYWM2Y2Y5NTc4MzdhMTJkM2JhODNmYmY0ZjgyMiBsZWdhY3ktdHJ1bmsKKzE4MjQxIDUyYzI3YjcxMTY4NjkwMDcyNDliNjNmMTU1NWMyYTRkMDYyZTI5NjMgbGVnYWN5LXRydW5rCisxODI0MiBjMTA0ZjAwYzk5MDllYjE4NjA1ZDg3ODM5MDI4M2NhOTg3ZDE1YmZhIGxlZ2FjeS10cnVuaworMTgyNDMgZWViN2M4YTViNzlmNjQzYzJkYjc3YjQ3MDlkYjdjNjk0MzM1M2FmYSBsZWdhY3ktdHJ1bmsKKzE4MjQ0IDNjYjEyZTBlN2FjZDEwMmRjMzhiNmNmNGU1YjRhYjMwMTdlNDU4NjggbGVnYWN5LXRydW5rCisxODI0NSAyMmRiY2ZmYzU0ZWYxMGY4ODAzY2VjYTRjYWRkNWQxMjQ4MGFhMjIxIGxlZ2FjeS10cnVuaworMTgyNDYgMTZjMTJkMTY5OGY2YWQ2MGQxZDY5ZDJiZDZjNTExZTJhNGM4YTYyNyBsZWdhY3ktdHJ1bmsKKzE4MjQ3IGIzNDY5ZWI3OGJjNjY4MTEzM2RhMjVkZGU1MGJhNzMyNzBjMjU2YTUgbGVnYWN5LXRydW5rCisxODI0OSBmMjkwMWI2YWM1ZWQ5NDY4YzU2MmM5MDRmMjgzMjgxYmMwODExNjFlIGxlZ2FjeS10cnVuaworMTgyNTAgODdhNWJhZTFiOTQ0YTk5OTMxZjdiNWMxYjc3NzJkYjk2YjBlMGRiMSBsZWdhY3ktdHJ1bmsKKzE4MjUxIGY2MmUzZTc4NzFiZTkyMzkyY2I5M2VkMjE0YTYwMjFmZTNkZDExOWIgbGVnYWN5LXRydW5rCisxODI1MiA1MTkyYmZkN2E4YmJkNTkwMTc5MzI0ZTAyZGM2OWI3ZmU5Y2Y1YmM3IGxlZ2FjeS10cnVuaworMTgyNTMgZmFlNWIxZTQxNDkxZDYzNmE5NGRmNTJhYzRjZGZjODA3NmI2MTFkMSBsZWdhY3ktdHJ1bmsKKzE4MjU0IDg2ZjA2YzE1M2RkYTRhM2EzNDM2Yjc5NzMyMTAxZTIxZmE5NWE1YTYgbGVnYWN5LXRydW5rCisxODI1NSA5NmMzOTRhNDNiNWJhZmM2NzFlYmIwNDBmM2U5MTIwM2QwZDNlZWI1IGxlZ2FjeS10cnVuaworMTgyNTYgZDI2NWJmNGFkYTdjOTIxMGY1NmRmM2Q5NTI5ODM1YjczNThjMWNkOSBsZWdhY3ktdHJ1bmsKKzE4MjU3IGI3MTQ1OWFlZGE5NTY4ZGU3OWNhMzhiNDRlOWVmZDY2NzNhYzMxYzIgbGVnYWN5LXRydW5rCisxODI1OCA1ZDVjNTEzMDRmN2M1YWE4YzcwNTAyNjkyNGRkY2IxM2E2OTUwNWVmIGxlZ2FjeS10cnVuaworMTgyNTkgM2FiN2ZhYWU4MDNhZjI0YzNjNjcwY2UwMThhNjZlYjZjMjc4MjEwMiBsZWdhY3ktdHJ1bmsKKzE4MjYwIGFhMWVjMjcwZjJkMzhiODRlMDJjMTdhOWU2YzQ4Yjk5NzJlZGJmYzMgbGVnYWN5LXRydW5rCisxODI2MSA4ZjgyMzE2ZjY5ZDQwNTFmYjk4MWJkZWVmNzc4OTFiNzgyNDllNzg2IGxlZ2FjeS10cnVuaworMTgyNjIgYzQ1YzUwODBjODQ0ODEwZjJhZDMxYzkxNmRlM2E4YzU3M2Q1NzAzMiBsZWdhY3ktdHJ1bmsKKzE4MjYzIGZkZWQ1YzllY2M5YmJmNGEwZDhkNDNmY2IwZTM4YmQ1MTBhZTkzNjkgbGVnYWN5LXRydW5rCisxODI2NCA1YjRhYmNlZmY1M2Q0ZDM5NWFiYzIxYWI3OTc0N2VjMWMyZDRkMDkxIGxlZ2FjeS10cnVuaworMTgyNjUgOWE2ODk0ZjhlMWEwOTczNWQ5OTNmMjQyOTgwOGZmNmUxZGViZjMwOCBsZWdhY3ktdHJ1bmsKKzE4MjY2IGFmMWU5ZTY0ZWQ5ZDI0MTg5MGRlYTY0NWQ3M2MwZmMyNTA5ZGJlOTYgbGVnYWN5LXRydW5rCisxODI2NyA3NzE3MTMxOGUzMjEyODcyOTg0MmU2NzFhZDI2NDk4YWYzYWFlYTA1IGxlZ2FjeS10cnVuaworMTgyNjggMzc1MjI5YzNhYzBkOTllYWNhYzliZTQxYjk2Nzg0ZmY0MGUwMTJiZiBsZWdhY3ktdHJ1bmsKKzE4MjY5IGRkZDkwM2ZiNmE3MTA4MDM3Y2Q0OTgyMzlkOTBhMWYwYmUwYjcwN2QgbGVnYWN5LXRydW5rCisxODI3MCA5OWNhNDE5Y2E1OGJiYjdlMTNkZTA5ZGIxMGZkMTg3MWNmMjM0YjM1IGxlZ2FjeS10cnVuaworMTgyNzEgYjY0OGNiMGQxOTg4ZjE3ZjQ0NTk4NGIxMDFhZDU1MDYwNjcxZjVhMyBsZWdhY3ktdHJ1bmsKKzE4MjcyIDU2ZTk3ZTcyNzU2OWMzYTI2MzEwODdlNzczODFlNmUyNDkyY2RjMWIgbGVnYWN5LXRydW5rCisxODI3MyA4NzZjZjdiM2QzZGZiMWI1YjlmMTI0ZDc5YWQ2MTlkZjkwMDEzMGU5IGxlZ2FjeS10cnVuaworMTgyNzQgNGFlNDkyOWIxMmZmZTFkODczMTZlN2Y4MDI3ZjBkODVkM2NlYWM4YyBsZWdhY3ktdHJ1bmsKKzE4Mjc1IDg2ZjRlMWVmODFjYWFjMDU1YjhkYzYyMDJhMmE3YzczOTA1ZjQ4MjMgbGVnYWN5LXRydW5rCisxODI3NiAwZjAwYjZjN2I5Yjk1ZTEzNjRkMGIyNjYxYjE4MWYzNDY4ZTRlM2M0IGxlZ2FjeS10cnVuaworMTgyNzcgYzhkNGU2ZjFiNWZlOTc1YzI3NmYxOTVmYTgxNGQ4YjA2YmY4YWY0NCBsZWdhY3ktdHJ1bmsKKzE4Mjc4IDZiMjUyNGU5YzY3MmU4MDVkNjBkNjU1ZTgxNjMwOGNlMmU5ZTYzNGMgbGVnYWN5LXRydW5rCisxODI3OSAwNjQ2NWVkODE4MjYzMDVhODg3ZGFhMjE4Njg5ZmFkNWRhMzQ2ZDdjIGxlZ2FjeS10cnVuaworMTgyODAgYmQ0MWU2MjczZWQ5YjMxNDY2OWM3ODJhMzk5NWMwZjQzOTVjYmFmNSBsZWdhY3ktdHJ1bmsKKzE4MjgxIDI3ZTRmNTYwMWFhNTg5YzIwZGY3NjI4ZmYxMmZhNTJkYmNjNmMyNDkgbGVnYWN5LXRydW5rCisxODI4MiA0OTE4NTE3ZWQ2YjRjYjRmMGIzZmFmODE0NTliYjY2ZTA3ZDBkOTg1IGxlZ2FjeS10cnVuaworMTgyODMgMzlhYjgyN2U3MmJkNmU3N2JkZTNkOTM0MmE5ZjViYzU4Y2ViMGZjYyBsZWdhY3ktdHJ1bmsKKzE4Mjg0IDdlYmRmZTQyNWM4MWViNjIzNjc2MmI4MzdkMjQ2ZGRiNTlhYjYwYzMgbGVnYWN5LXRydW5rCisxODI4NSA5N2VhMGI0OTQyMmZmZjJhODRhYjliOWYyYjg0MWVmZDQ1MmI2NzJjIGxlZ2FjeS10cnVuaworMTgyODYgYmUzMzA3OTM2MGM2Njk0YWNkMDU3MTc5ZWRhYWYxMTdjODc4MWRjYiBsZWdhY3ktdHJ1bmsKKzE4Mjg3IGE5MzUxMDUxOTIzZTBiMDQ1MTVhMjM4OTRiYzAzMWNiODhiNWEzN2IgbGVnYWN5LXRydW5rCisxODI4OCBjMGYxZWJkMzIwNzIzOTAwODM1MDYxZjU1MDEzYzhiMDRkZWQ5OTQyIGxlZ2FjeS10cnVuaworMTgyODkgYzgzM2RjZGIzYTE1NTQ3YTliZDkxMWY2OTMyZTYzY2Q5MDM3YTY2OSBsZWdhY3ktdHJ1bmsKKzE4MjkwIDc4YTdmOGE2NGY4NWE3NDgxN2I1OWJhZjdlN2QxM2I1MDVhNGUwMGUgbGVnYWN5LXRydW5rCisxODI5MSBkNWE1NDI4ZTk2NWM0ZDI1MGJiNDVjMTQ1ZDg1NDFiM2U3ZTUwNDQwIGxlZ2FjeS10cnVuaworMTgyOTIgODQ5Njk4NTUwYjMyYTY4Yjk1ZjVkMTM2Mzc5ZmFmM2IzZjE3ZTMxOCBsZWdhY3ktdHJ1bmsKKzE4MjkzIDIwNDlkNTcwY2E1YTdiMGU0M2NhMTU1NzFkMDUxNzdhNjQ1YjRiMzkgbGVnYWN5LXRydW5rCisxODI5NCBhYzZmYmEwZWNjMjkwMjQyODhmYmY3YTY4YjgzYjRiMWQyNTBlNmM5IGxlZ2FjeS10cnVuaworMTgyOTUgNTNjOWQxNWFkOThlZDY5MzRmMTExNDhiMjQ0YWUyYWU5YTgyNzg5OSBsZWdhY3ktdHJ1bmsKKzE4Mjk2IGZiMTA5MzcwNjBjY2JjMzg4ZDhkZDYzN2JjZWUyZGY4NTdmNTM3OGMgbGVnYWN5LXRydW5rCisxODI5NyA0ZTg1NzdmYjk0MDdmZjZlNGU0MDMxODliMzBkNzU3ZjNhOGU2YzhkIGxlZ2FjeS10cnVuaworMTgyOTggZDVmMDY5NmMzN2U4MWJhYjJmOTA3YmY5YzRmOWMyMGI3NmFkN2M4YyBsZWdhY3ktdHJ1bmsKKzE4Mjk5IDQzMzQ1ODY1MWViNDAyNzk1NGZiNzMyNWMwMzY5YzBkYjdjNDM5YWEgbGVnYWN5LXRydW5rCisxODMwMCAzMjhmYWMxY2EyMTBmY2I2MDBiMzViZmE2NDI1NjY0ZTNlY2UyZmFiIGxlZ2FjeS10cnVuaworMTgzMDEgZWY0NjZhMTllM2JjNmEyNTZkMDM0MzgwOTRkZTc0MWU1YjY1NmY4MCBsZWdhY3ktdHJ1bmsKKzE4MzAyIDRhYzU1NWE4NzZhMjNmNTAwZjc2NGY4NjQxNzUzNjRkNmE3OGZhYjIgbGVnYWN5LXRydW5rCisxODMwMyBiODU1Yzg4YzZhZjZhNDE2ZDI4MTI1MTViZTU2YzM3ODA3OTAxOTY3IGxlZ2FjeS10cnVuaworMTgzMDQgNjhkZTkxODViNDFlMmEzMWNlMjNjYTZlM2I4Y2M0YjY0OGYyYzA1OCBsZWdhY3ktdHJ1bmsKKzE4MzA1IDdlNTE0ZjFmZTMxZmNkNGZhZmM2MDdiZjBmODAxZWM0NmRlYTM1YzIgbGVnYWN5LXRydW5rCisxODMwNiBkY2QyYmViYzE4MGVmNDNiNWUwYTY1NGY5MDZlZWU5M2VlNzU5MTRiIGxlZ2FjeS10cnVuaworMTgzMDcgZjgxM2VkZTEzNGJmNjhkNDVjNzJjYzAzMGIwNGE3NjAyYTY4MmI2ZiBsZWdhY3ktdHJ1bmsKKzE4MzA4IGY4MjNiOWFhMGMwMzYxNTE0OTg0NmI3NTI5NTZhOTQzY2U4ZDE5MjggbGVnYWN5LXRydW5rCisxODMwOSAzMWY3MGNhMDZjNjhmOTRhNzRmNGE0ZDZkNzc2NDg5NWQyNjcyMWIwIGxlZ2FjeS10cnVuaworMTgzMTAgOWFiN2E1OTdlZWZlOTE0MjllZGQwODg3YjNjMjJmM2Q4Nzc1ODRlMiBsZWdhY3ktdHJ1bmsKKzE4MzExIGFlNDkwMDZiMmQ4ZmFhNmE4YjgwODA1YmEzNWNiNzQyZTA3N2Q2ZTcgbGVnYWN5LXRydW5rCisxODMxMiBkYjZkOWJiN2VjOTQ1M2I3NzRiOTg4ZjQ4MWQ0MzkwYjhhOTVlNzM4IGxlZ2FjeS10cnVuaworMTgzMTMgZjJjMTc2ZDg0NmE0YTViOTBjYzFjN2JiMjk3ODQ2Yjk0MTljY2Y3OCBsZWdhY3ktdHJ1bmsKKzE4MzE0IDc3MjFmYjUwOTQ2MjMxZDlmODYzZTIzY2M4NzZmZTM4NjE3ODlmZmYgbGVnYWN5LXRydW5rCisxODMxNSBjZTc3NzM4YjgxYWNiZjZiZGZmNDkxODE1ZDgzY2RhOGNmNDI5ZjliIGxlZ2FjeS10cnVuaworMTgzMTYgZDAxNDZkMTI4ODk3ZTczNTQ2NjFkOTE0ODgyOTY4YzBkNzFmZTE0YSBsZWdhY3ktdHJ1bmsKKzE4MzE3IDU5NzA4OWRkMjYwOWE1ZWEyZTFlZDU3YTU2NTM5YzlmMWYxYjMyOTEgbGVnYWN5LXRydW5rCisxODMxOCBhZjM5N2Y3ZGJiZDVlYjUwNzU3ZTllNWI1NjY4OGY0YTRhMzhhYjRiIGxlZ2FjeS10cnVuaworMTgzMTkgNWQ3NThjZjUxMTFkN2Q4Y2Y4NDAxMGYxNDkxYTQ3Mjc3NjZlOWMzNiBsZWdhY3ktdHJ1bmsKKzE4MzIwIGE3OWQzNjI0Zjg0NTRhNmQ0MjgyMThiOGNlNDRlN2VlMzI5ZmYzYTEgbGVnYWN5LXRydW5rCisxODMyMSBkMzk3ZjY2Nzc1ZThiYzQxY2E2M2M1NTA2NTEzNmM2OTg3MDhiODViIGxlZ2FjeS10cnVuaworMTgzMjIgOWY3NzVlMjQ5YmExODA4NDE5NmI1NjIxOWE3ZTRjNTQ1OWJlMTQ5ZiBsZWdhY3ktdHJ1bmsKKzE4MzIzIGJiZThhNjRlMjE5ZTU4ZjVmYjUyOTg0OWQ1YTFjZTYwMjg4ZmNkMzggbGVnYWN5LXRydW5rCisxODMyNCBhYWE5MWVkM2ZjZmQyOWQ1OTQwMzJkMTNjNzhjMjUxODE2NzZkODg3IGxlZ2FjeS10cnVuaworMTgzMjUgYzdmMjI1YWUzMTYwNWIyMDEzNTJmNWYzZWFiMTVlNDk4MGNiYTdlMiBsZWdhY3ktdHJ1bmsKKzE4MzI2IDBiODRiMzFhYTk3NTE4OTdmYjRmODY1NzNhMmJmYWY3ZmU5N2M2ZDggbGVnYWN5LXRydW5rCisxODMyNyA5NzMxYmJiNTJmYjRhYzQ5YjZlM2U1YzdiNjliODQ3NDUxNGY0MzIyIGxlZ2FjeS10cnVuaworMTgzMjggZDc4NjQzNDViMWM4YThjNGU3YWI5MmI1OTJmMGQzY2RmMzFlMDI4OSBsZWdhY3ktdHJ1bmsKKzE4MzI5IDIxOTg2Y2MxNGJiMmE3ZDBjNDU3MWUyNzU4ZmE4NDVlZTgyMzA4ZjggbGVnYWN5LXRydW5rCisxODMzMCBhYzIyMGMzMWRkZDdlOWFiMDNkMjA5YTJiZmZkN2VkMzk5YTVjYjkxIGxlZ2FjeS10cnVuaworMTgzMzEgZTBkOGE2ZjJkMDkxMWIyNmQ2ZmE1YzUzNDNjYmU4NGM5NjRiNWYzZCBsZWdhY3ktdHJ1bmsKKzE4MzMyIDg2Y2Y2NDgwZDJmYTYzYjdlNGRhMzJiMzExM2I0NWU0NzU5OTkxNDUgbGVnYWN5LXRydW5rCisxODMzMyA0ODgwNGRhYjc4OGNhNmRhNWMwZWRlNTA5ZTRiZDJkZGU1NjA2YjQ4IGxlZ2FjeS10cnVuaworMTgzMzQgMmVjZThmYTU2ODA4MDc4Yjc0NTY2ZmEzZTZiZTcyNGUyMWIwZWY1NSBsZWdhY3ktdHJ1bmsKKzE4MzM1IGVmOTEzOTMzNzU0NzRmYTlkNmQzNDk5NDJjMzZlYjc3OWVmNDQ3MzEgbGVnYWN5LXRydW5rCisxODMzNiA2NTVmNGM0YmI5NDQ5YjFkYTYwZDRkYjFjY2NjZWEzMTRiY2ZhNTczIGxlZ2FjeS10cnVuaworMTgzMzcgM2JlMWY1YzUyMGFkNTI1ZjJmNTc2OTAyNWJjMDA0YzY4YTVlMWM1ZCBsZWdhY3ktdHJ1bmsKKzE4MzM4IGE1Y2ZmOGMxZjRlNGE0MjE0YjhmMzljZWYzYzA2ODY3MzIwNjJkZGUgbGVnYWN5LXRydW5rCisxODMzOSA4NTZiMmJjMjE2ZjlmYjM4MjZjZjIxNTE0YTU0NjE0YzNhMTU0NjQ4IGxlZ2FjeS10cnVuaworMTgzNDAgZTk4OTY0YmMyNjgxNDMyMzE0MGNmMTk0ZTMzN2UyZTQ4NzBmNGIwZSBsZWdhY3ktdHJ1bmsKKzE4MzQxIDNjMzNmMmMzNTdkM2I2Yzc1ZjRjMzA2OWVlMTlhZDFkMGFhN2Q2NTQgbGVnYWN5LXRydW5rCisxODM0MiAwN2MyZTEzNjI2MGMzZWNlNDAyNjVkODUyMGYyMmUxZDk5Y2NmMWNhIGxlZ2FjeS10cnVuaworMTgzNDMgNjgzOGU3MmY4ZGQyNzA3ZGEwOGUyMTA1OTZlZTZkOWI4ZDBkNDVmNiBsZWdhY3ktdHJ1bmsKKzE4MzQ0IDEwNWMyNTA1MmRlOThlYzZhNDY0NTY0ZDA2ZTFmOWM2NDQ3OTI0ZDkgbGVnYWN5LXRydW5rCisxODM0NSAwNzcwNTE3N2NhNmJlZDk1YTg4MjY2NDlkNTQ5OWMxMDRlZTdmNjNkIGxlZ2FjeS10cnVuaworMTgzNDYgMTA5MWFkOWEwMzAzY2ZjOGEyNmEzOWEzNWZlNDhmZTQzYTE4NjdkOSBsZWdhY3ktdHJ1bmsKKzE4MzQ3IGIzMzk4YzQ1MmQ5NTkxYTIxNDQ1MDQwNjA5YWIzYTMwMjdkN2E0NzEgbGVnYWN5LXRydW5rCisxODM0OCBmMGNhNGM2Nzk1N2I1N2E5ZjJjYzVhZjA2Yjk1YTBjZWFlMWNiMmI1IGxlZ2FjeS10cnVuaworMTgzNDkgMmQxYmJiYWM3NmQzMDdhMGY5OGJlZWNmNWRjMzQwM2UyNDhkZWM1NyBsZWdhY3ktdHJ1bmsKKzE4MzUwIDEwZjZlMTk1NjcxZGZlN2Y3YThiOGU5YTA1ZDIyZTE4NTJjZWRjYWIgbGVnYWN5LXRydW5rCisxODM1MSA4YTU5NmQxMGJjNzA4NTNiYmZiYWE5MWNhZGMyZjkwNzIxMWNiMzM3IGxlZ2FjeS10cnVuaworMTgzNTIgNThiNGFlNGVjNTVjNmU4Y2UyYjBiYWYyNzk4NzAyZmFmN2E1MTMyZCBsZWdhY3ktdHJ1bmsKKzE4MzUzIGY2NDAzOTAyM2Q2NDkyM2EwOWZiZTQ4Yjg0OGM0NDY5ZjExZjQ4ZDkgbGVnYWN5LXRydW5rCisxODM1NCBmZDg0YjM1MjQxNDU3NjEzODlkNmNiZDhmOTk2OTBjY2JhN2ZiNDhhIGxlZ2FjeS10cnVuaworMTgzNTUgOGI1OTY0NTFmMWMxOGYxNzRmZGNmYTlhZWEzZWJhMzk0OTNlZjYyNiBsZWdhY3ktdHJ1bmsKKzE4MzU2IDMyYzQ0MGQyYjBkZmQ2ZGQxYzc2ZGZjNDcxNzliMmY0ZTBiMWQxNTUgbGVnYWN5LXRydW5rCisxODM1NyAyNmQ0MTRjMGEwOTIwMmUwYmYwNTFkYjdkOGM5MDkwNGEwYTYxM2E3IGxlZ2FjeS10cnVuaworMTgzNTggZjNiZjVmMDgyYTNmOGE3OWZmMjE2YjRmY2ZkNTZkZTZiMTQyYmYxOCBsZWdhY3ktdHJ1bmsKKzE4MzU5IDQ2Mjc1NjExY2Q1OWJlODg4MjUzZDIxZjJiM2M5ZTE0MzYwMWQxYWQgbGVnYWN5LXRydW5rCisxODM2MCA4YmU4ODllODExNWJjYjA0ZDRmYzlhYTU4OWJiNTVlMGY2N2ZmMmNjIGxlZ2FjeS10cnVuaworMTgzNjEgZDEzN2I5NGYzZGRmZDE2ZWJlMzU0ZjNlZjQxY2EzNGQ5OWI1MzZmMiBsZWdhY3ktdHJ1bmsKKzE4MzYyIDU1ZjRhNmU4YjViM2E3ZTQzMWI5MzI5YmY0OWE2OWI4NTZiZDBkNGEgbGVnYWN5LXRydW5rCisxODM2MyBkYWFkZDFlODUzMTY1ODE4NGM4NjhkNzkzNmE0MjI1ZjZmYTYyOGRlIGxlZ2FjeS10cnVuaworMTgzNjQgMzk3NDJjOTFhZGQzZTQ3ZTExMjhjNDA5MTM3ZDk1ZmRkMmU2OTEyMSBsZWdhY3ktdHJ1bmsKKzE4MzY1IDRiNjU4YzA1OWMyM2Q5ZGY5Y2JjYmM0OGM3MjY4OTJiYzYwNDVhY2UgbGVnYWN5LXRydW5rCisxODM2NiA1ZTlkMDEyN2FjZTlhMWNjNjAxYTcwNTRiYzMxNDNmMmRiODhkYTBhIGxlZ2FjeS10cnVuaworMTgzNjcgYWM4MzBjOWU5YTgzNzJhMzFjMWI3NWY3ODcxN2Y3MDk5MGJjYjg3NSBsZWdhY3ktdHJ1bmsKKzE4MzY4IDM0MDU4YWY5NzZjZWNlZWFkZjEwMzI0MGJlYzI1ZTVjOWNjNzA2NDggbGVnYWN5LXRydW5rCisxODM2OSBlY2RlNzcxNDI4ZjllYjQ3MmU4NjVlOWQzMGYyNmNkMWExZTEwN2Q1IGxlZ2FjeS10cnVuaworMTgzNzAgMzA1NDZhMmI5NDUwZTU4OWM5ODA5NTEyMDNlMmQ2MDIzMWM5Njk5MCBsZWdhY3ktdHJ1bmsKKzE4MzcxIGRiNzU3MDIyNWVmODQyMTlhOTAwYmZhN2IxOGZmNDM2ODEyZTFkMjYgbGVnYWN5LXRydW5rCisxODM3MiAzNDgwZTgzZTE3YWJiMWU4NDdhYzIyMTRhZTlhOGU2ODViYWYxYzExIGxlZ2FjeS10cnVuaworMTgzNzMgZTExYzEyMzIzZWJmNWM1MDkyNTFkOTYyYzE4NDgwNzQ5NzQ1ZGFhNiBsZWdhY3ktdHJ1bmsKKzE4Mzc0IGVmYzk2YWFiNzFjMjg5MWQwN2UxMDNlYjNiZDIxOGExODQ5ZmZlN2YgbGVnYWN5LXRydW5rCisxODM3NSAzZTk0Y2MyYTA0NzNmZjVmOGJkNzU4NjllYzA0NTMzMTkyZjFkYjQyIGxlZ2FjeS10cnVuaworMTgzNzYgZGQ1ODNjMzNmNDU1YWNhMzUzZTQ4YjgyNWM1NDhmYTY2NzJmZDFiMCBsZWdhY3ktdHJ1bmsKKzE4Mzc3IGMxMzMzNjU3MmY0ZjQxYTAxYmMzOGNmNWM5MTkwOGExZjAzMGViN2YgbGVnYWN5LXRydW5rCisxODM3OCA1ZTQxZWJkZmE5YTAwZTQzZjU2YzhmMzhjYTk5ZjE2NDE5NjQyYjZiIGxlZ2FjeS10cnVuaworMTgzNzkgYzBhZDRjMmVmNDQ0NjFmY2EyODZmMzcyN2I5ZDIzODBlMjhlMjMzZSBsZWdhY3ktdHJ1bmsKKzE4MzgwIGVkMjlkZjdlYjVjOTYxODZlN2QyMDAyNzkxY2FmY2U1YjlkN2NiYzcgbGVnYWN5LXRydW5rCisxODM4MSA4ODU0ZDlkNWFkZDVmNDYyMWUyZmU3MTk1ZjM3Y2MxMWY0ZjVmMDlmIGxlZ2FjeS10cnVuaworMTgzODIgMDcwZWUzMWNhZjI4YjcwZWMwNTEyMmIxZjIxNDZhM2MwNmIzZmFhZSBsZWdhY3ktdHJ1bmsKKzE4MzgzIGFhYTU0NzUyZTRiYWQwMzk2MDVhY2M4MzlkZjA5ZmU5NjNkZTYyNzkgbGVnYWN5LXRydW5rCisxODM4NCAxMDIyMWE2YzdjM2M1ZjZjZWNhZmYzYjMwODJhNTE1YWM5YWRkOGM1IGxlZ2FjeS10cnVuaworMTgzODUgY2YxNzUwYzNmN2Y3Zjk4ZDA4ZWRmMDAwZmFmYzRiMGY3OTU3MDYyMyBsZWdhY3ktdHJ1bmsKKzE4Mzg2IDMyYzU1ZjU3NDZkZWQyMGEyMzUzZjc0OGUyOTNkODJjZTk3OGFkYWQgbGVnYWN5LXRydW5rCisxODM4NyA4ZDlmZmZlZDM0ZjQwNjRiZGM5MGQyYTdmNWNhODMzZTU2NWI0NmE3IGxlZ2FjeS10cnVuaworMTgzODggMDQxZDU3ZTNhMmI5MDRiZTVhOGZmZjBjYzZmMjk4ZjUwN2ExMTFhNSBsZWdhY3ktdHJ1bmsKKzE4Mzg5IDVmZTJlYzUwNDgzNmMxMGYyMDk5OTQ2OGY2NTY5NTA5NTNlZThhYmMgbGVnYWN5LXRydW5rCisxODM5MCBhOTNkNzlkYTRmOGM1ZGJjZjNmODRiZGM0MDcwNzY2NTRlOWQ1MjQ3IGxlZ2FjeS10cnVuaworMTgzOTEgNzlmY2QyYjMxODA4YmRlNmNkYTE0Nzg2MzE1ZWI2MmFjOWY1MzU5NSBsZWdhY3ktdHJ1bmsKKzE4MzkyIGFkMTRkZGJkMDlhNzI1ZWY2YjQzZWVhMTQzYmM3MjgxYzYwNTdkMDAgbGVnYWN5LXRydW5rCisxODM5MyAyOWY0MjY5NDQwMmI4MGNkOTQzNzViMDI4YzIxMDU2ZGFjYzlkMjY3IGxlZ2FjeS10cnVuaworMTgzOTQgNWQ5OGQ0OTcxM2YyMWExYzY5M2RjYjMxNDE4MTQ3MjQyODJiMDFiNSBsZWdhY3ktdHJ1bmsKKzE4Mzk1IDBjYjc1MWI1NjM5MTZjMzBlOGU3YTZlYjM1NTVlYjVmNmNhMDA3ZmQgbGVnYWN5LXRydW5rCisxODM5NiA3ZWUzOWUxNGNmMmIwZjgyYzRiZTg1YWUwOWViMmM0N2ZlZDMwNjkyIGxlZ2FjeS10cnVuaworMTgzOTcgYzU5ZjY0NWRhZWRlZDBkZGE0ZThiMDExMjU5ZTYwNWM0NmZmMDc1YSBsZWdhY3ktdHJ1bmsKKzE4Mzk4IDUwMzU4ZDY0ZGM0MzdiN2U1YWIzOTE1YzJkYjgyYWE0NGU2NjY4OTEgbGVnYWN5LXRydW5rCisxODM5OSAzYjA0ZDM0MjVmZjBmMzEwODk0Y2U3MjU1ODcyMzI0Y2JmZDNkOTJlIGxlZ2FjeS10cnVuaworMTg0MDAgNWFhYzU4NzNhYWFlN2QwNGRmN2NkMzllMjc2ZDZiMGVjODdmODliZiBsZWdhY3ktdHJ1bmsKKzE4NDAxIDlkNDMxMjljOGM1NWYzMzdhOWJmNTk1NmIxN2I2MjY0OTE1OTE5YjggbGVnYWN5LXRydW5rCisxODQwMiA1OGJjOTllMDEyYTg1ZmE5OTc3MTViOGRmZDYwNmZkYTAwODc2NTIxIGxlZ2FjeS10cnVuaworMTg0MDMgNjM1OTQ4MDEwNmVjZmE5OWFkNjE5YzRlYmQ3MmJjYWUwMGM1NDRmZCBsZWdhY3ktdHJ1bmsKKzE4NDA0IDc4NTE1NWUyY2ZjYTI5NDlmMGQ3N2ZiNjA2MGU1Zjg5NDQ5ODk4YmQgbGVnYWN5LXRydW5rCisxODQwNSBjYmQ0ZjM1NWJiOTZmNzk4YzMwYzFmZWI3ZjMwMjUzZjg2Nzg2OGQ0IGxlZ2FjeS10cnVuaworMTg0MDYgZDY5NjExY2NlODc3NjgzYmNjNTk3ZDJlMjU2ZGRlMjZiY2QzNWNlNCBsZWdhY3ktdHJ1bmsKKzE4NDA3IGJiOTNiMWRjYTU3MTk4ZDE5YWQzODQyOGQ3NWNlYjU0ODRkYTdjMmEgbGVnYWN5LXRydW5rCisxODQwOCBhZjdjNjIzZDhkMzNiZDdhOTAwM2MxMzViMTI5OTFlNmJiYjgxOTNiIGxlZ2FjeS10cnVuaworMTg0MDkgZjNiMDY4MmQyNmQ2MDExYTM3ZjViMTc3MmZkYmMyYzRjZDYwMjQwZCBsZWdhY3ktdHJ1bmsKKzE4NDEwIDJmZGJjZGVlMmUxZjJlZDY4YTVlOWE2ZWRiYzYxOTA1ZDkzM2IxMzUgbGVnYWN5LXRydW5rCisxODQxMSA4NDU2NDZiMDliZjgyNDU4MmI4NzFkMDkyN2ZmOTcyMGE0YjJlNTE0IGxlZ2FjeS10cnVuaworMTg0MTIgZjliMTg0YTU3MjIzOTUwMTc5YjFjNmNmMTAzZGRjMzI3ZjJkYjhjMCBsZWdhY3ktdHJ1bmsKKzE4NDEzIDRkOWMzMWYzMmMwOWMyNGJmZTI0NDBjYTY5Y2E2Y2UwMDQzMTdkMjQgbGVnYWN5LXRydW5rCisxODQxNCA1NzQzOTMzNmMyZTBlZTk2ZWY1OTIyMDEyZjdjYjJlZjE1ODdmYTY2IGxlZ2FjeS10cnVuaworMTg0MTUgNDM1NDZjNWFlZWNjZWE3ZWQ5OTkwODljOTljZDYwMDdkYzg4MTc1YiBsZWdhY3ktdHJ1bmsKKzE4NDE2IGY3MjM0NWI0MzY2MjAxY2ZlNTY1NGUxZmQxMWUzZDY5NGNmMzFjMjUgbGVnYWN5LXRydW5rCisxODQxNyBkM2Y2ZjMxNTVjMjQwNGJkMWM5MWQ2N2EwMmNhNDE3ZTQ1OWI5ZDUwIGxlZ2FjeS10cnVuaworMTg0MTggYjE3NTQwMGU4YjIyYWZkMzNjOTQ3YjMxZjg0YTMxYTM0M2FiYTc4MyBsZWdhY3ktdHJ1bmsKKzE4NDE5IGM4MWJlZDAxNjhhMDk0OWNiMTljYTI0NDlkYTZmZThiYWI2MTVmYjEgbGVnYWN5LXRydW5rCisxODQyMCBkMDhmOGNlYjNkNTU2ZTNlZTQ1ZjQ2MWNlYmUxYjcxZWQ1OTM4YWRmIGxlZ2FjeS10cnVuaworMTg0MjEgMTQzNjQ2YmFmZDFiZTg5MGY2ZGZlZmIxNTdiM2NlYWZlZjBjMzk1ZCBsZWdhY3ktdHJ1bmsKKzE4NDIyIDk0NTNmNmZhY2VmYTQ1ZTE3NjlkMzYxOWQ1NWVhODIzMTZlMGM4MDggbGVnYWN5LXRydW5rCisxODQyMyA3NGVlNjYxNTgxYjZkNDdlODZlNTQ0ZDJiYTc1YjM5YjdiNDgwMzQ0IGxlZ2FjeS10cnVuaworMTg0MjQgMzVlOGEyOWU1NDg4NGUwM2JhNTJlZmE0NjQxZmM4MWY1OWFhOTcyZCBsZWdhY3ktdHJ1bmsKKzE4NDI1IGMxMDQyNmRhN2JjZTI0MjBkNTkzMDdkNWNhNDc4MWU4NjQ0OWFhYzQgbGVnYWN5LXRydW5rCisxODQyNiA0YzIwMzc5ZTY2M2Q0NTgyYmYwYTQyMTZiYWY0NTg4MDBmMjU1N2MzIGxlZ2FjeS10cnVuaworMTg0MjcgOTk0MjJkNjEwZGIzYWU5NmYzMTI4YjgwNGRlYWM4MmJlNmZlYTE5ZiBsZWdhY3ktdHJ1bmsKKzE4NDI4IGQzODUxNmNlNmYxNDE5ZDdlMjkzODcwODQ0MzI1NmMxZGRmOTFkZjUgbGVnYWN5LXRydW5rCisxODQyOSBiMzQyMGIwMDJkNTVjZjcxOTBhNDdhM2MyY2NiM2NlMDFjOGQ2NTVlIGxlZ2FjeS10cnVuaworMTg0MzAgNTZhZGM2OGUwNmY2OTEzZGM5NDczOWM1NDk0ZGYzMjgzY2M0NTcxYyBsZWdhY3ktdHJ1bmsKKzE4NDMxIGQ0MTBmNmFkM2M2MDE4ZWVhMzE0MTA3YWYxYjYzYTk4NTNhNTk3ODYgbGVnYWN5LXRydW5rCisxODQzMiAwMjdlZTlhODcwZDJjMjMzYzhmZDE1NTZlNWE4NjM5MjM3MTk5ZmU4IGxlZ2FjeS10cnVuaworMTg0MzMgMjE3NWU1NjdiZDA2MjkwZGJiYTcyODBiMjgwODA5NjQ3OTY1YTYzMCBsZWdhY3ktdHJ1bmsKKzE4NDM0IDI0MDc0Zjk3MjM1YzQ5ZDNiMzkzZDdhZDFlNmZhMjRhMDk2NjBiOTEgbGVnYWN5LXRydW5rCisxODQzNSA0YTlmMTU1MmJhNjhlMGJmMDM5ODcwMzk2NjU3ODUwMzE3MGMwMWE1IGxlZ2FjeS10cnVuaworMTg0MzYgMDNjMzJmYWExYTQ5YjRjN2M1NDQyYzJhMDdlMmMwYmU4NjIxZjI2MCBsZWdhY3ktdHJ1bmsKKzE4NDM3IDU4ZmU5MzdmNzM0YTQ4NzhhZjQ0OWI5YTU5OWZiOWZmOGQ0NmU1YjMgbGVnYWN5LXRydW5rCisxODQzOCA5NmMzYWUxM2RkY2E4MThiMjEzY2MxNDZkM2QxN2QzZTY0MWE5MTYzIGxlZ2FjeS10cnVuaworMTg0MzkgZTA3NjVjNTUxMmQ3MTk4OTdkMDVhYTRhNDNiMmU0NzVmMWY1ZjY2NyBsZWdhY3ktdHJ1bmsKKzE4NDQwIDMxZDc4ZjM2MTUzMGNmMDg3M2U5MzQxNmU2MjBhZDAwOTQyYzIyMTUgbGVnYWN5LXRydW5rCisxODQ0MSA2NjgxNjZhNTBjNzA3MWI2NTc2MjkxNWQ1MDM0MWNmZTQ0ZWEyNzdkIGxlZ2FjeS10cnVuaworMTg0NDIgYWZiNDViN2ZhMjUyOGNlYTkwNDcyMmI2ZDY1MmRlY2VhZWU0MGQzYyBsZWdhY3ktdHJ1bmsKKzE4NDQzIDYxNzlkNGFmYTRlNGU1Y2ZmM2MyNTYyYWI2ODBmZjM1Mjc4ZTJhZGUgbGVnYWN5LXRydW5rCisxODQ0NCBiOGY1YjcyNjdmMTQ5N2M0NTYzOGExZTJhODFlYjk1MzVhYjE2NzQ3IGxlZ2FjeS10cnVuaworMTg0NDUgNjdjMjRjNzRmMThjYzQzNDRjNDE0YjIyYTcyMzhjMTc1MzIxMWFjYiBsZWdhY3ktdHJ1bmsKKzE4NDQ2IGIyYTliYzkxNjY4YTdmMjQwZjQ5M2E4NjYxZWQ4MjA0ODY1YWEzNGIgbGVnYWN5LXRydW5rCisxODQ0NyBmZjg0MTEyZGFiYzg5NTIzNjA1ODIyZjBlN2FjNTA2Njk4MjQ0NzgxIGxlZ2FjeS10cnVuaworMTg0NDggZWJjZTliMjY3YmI4ZWE2MTkyZDE5OWYxYTY4M2M4MzkxMWVkZTRlYiBsZWdhY3ktdHJ1bmsKKzE4NDQ5IGNlOTIyMzAyODE2NDhjZmQ1YzA1YWMyNjE5NzdmNjI5NWI0M2M0MDQgbGVnYWN5LXRydW5rCisxODQ1MCA4NTdhNTQwMGJlODdlYWRhY2U4NzBmYTM4MzI1ODhlYjBmNjdmZWNlIGxlZ2FjeS10cnVuaworMTg0NTEgMWU3NTZmOTNiZjVkYTFlOTdkMzhmMjNkMmJhNjdiY2FlODZjZDc2NSBsZWdhY3ktdHJ1bmsKKzE4NDUyIDM2Mjg2NjMyZmYzYTkzY2YyM2Y5MmJkYWQ5ZDhmYWNiM2YwMzBhYTggbGVnYWN5LXRydW5rCisxODQ1MyA1Mjc1NmY2MTNjMTgyYThiMzAxNDY1NmExNTg3OTY5OWEwYTc4NjFiIGxlZ2FjeS10cnVuaworMTg0NTQgOTY5NDkwOWRiYjBhNzk4ODZjNTIwZWYyODcxOGMwNDliYzI2YTI1OCBsZWdhY3ktdHJ1bmsKKzE4NDU1IDE3NzlmODU3NGE4M2EwZjQ3Y2I2ZTQyNmVlNDJmNjllMDgxY2Y3MzkgbGVnYWN5LXRydW5rCisxODQ1NiAwZjQyZjY2NjllODAyYzJlZjI0NmM5ZDBjNmFmNWNjZWExZjQ2NGVlIGxlZ2FjeS10cnVuaworMTg0NTcgNTlhNDVmYTk1MzE4ZmVlZjc3OTA4NWVjMTM4ZmE3NTEyYzg4MDAxMyBsZWdhY3ktdHJ1bmsKKzE4NDU4IDNmZTU5ZWQxMWFmMTBlNTQxMjg2ZjZiYjk0MmUwYjcyZDFlMTI1NWEgbGVnYWN5LXRydW5rCisxODQ1OSAxNDhiOGMxYjcxM2E5ZGE5YTA4YjAxNWNkNWQ0NDY5ODQ3ZTc3Yjg2IGxlZ2FjeS10cnVuaworMTg0NjAgZDVjOWRkMjRkOTc3YjhjNzA0NTJiMjllZWM1M2FlZjQ4ZThkZWI5ZSBsZWdhY3ktdHJ1bmsKKzE4NDYxIDY2MzBjY2EyOThjYzBlYjlmY2RhNzJhNTA4N2MwM2E4MjRjMTAzYmQgbGVnYWN5LXRydW5rCisxODQ2MiA1MzQyM2VjMGE3Mjg4NGIwNTdmNDYxMjRlY2VkZTljMjAzNzg1Zjc2IGxlZ2FjeS10cnVuaworMTg0NjMgZTIzZDViMmUyMjhjNDJjMjM4YjYzNDMyZDE1MjQ3MjJjOGRhZTI3MyBsZWdhY3ktdHJ1bmsKKzE4NDY0IDk4N2M3NGM4ODQyODk3ZDZmODM2Njg5ZTJiN2ExZDg2MWJhMTRjNzkgbGVnYWN5LXRydW5rCisxODQ2NSAxNWUxZWIxMDE5YjhhMzdhZjQ4OGFjZjM2ZGViZmZiN2JjZjViMTQ3IGxlZ2FjeS10cnVuaworMTg0NjYgZTFmMmUzZWM3NmQ0ZmU2YWZiZjQ2ZmM3ZDAyZmZhOTRmNWY5Y2I2YyBsZWdhY3ktdHJ1bmsKKzE4NDY3IGY5OWJiNmE5MmU4NGY3ODFhNjdlYmZjZTY1MTI4Nzk0NGU4MjZiOTEgbGVnYWN5LXRydW5rCisxODQ2OCA1OWJmYmJlNTgxYzJkMGJhOWU3NmM4NGE3MWJiNWJkYjM0N2NkOTg4IGxlZ2FjeS10cnVuaworMTg0NjkgZmYwNzY3NzUzZDgxM2RjMDgwYjQwY2MxNjBhZGFhYjU1ZmZjMmUwNCBsZWdhY3ktdHJ1bmsKKzE4NDcwIDA5MDZjOGUyYzk2MWMzYjAzZjFiM2FhZjNmODBjNTM3ZjI0NWJkNDggbGVnYWN5LXRydW5rCisxODQ3MSBlZDMxNWI1NWYxOWU2MmZhZjM4Y2RkMDM3NGI3ZWZjMzNhMDQ3NTU2IGxlZ2FjeS10cnVuaworMTg0NzIgMmZlNzQyNzU5MWVhOTY3ZmM4N2IwZDkxZGMyNjk5OTFjNmQxMGIyOCBsZWdhY3ktdHJ1bmsKKzE4NDczIGU1N2Y5M2FlNGZlOWY2ODUyYzJjZTliYTk3MDhlMTE3ZTQxYmM1M2UgbGVnYWN5LXRydW5rCisxODQ3NCAzNTc0OWE1NTdmMWU1ZDZkMGJhNWE3ZjliM2VmYzUwMmYxM2JjZDk2IGxlZ2FjeS10cnVuaworMTg0NzUgN2JiN2I3MmZhNjY2NmMxNTJmMDQyYTVhMTJlZGJmMTZhMzg2NGI2OSBsZWdhY3ktdHJ1bmsKKzE4NDc2IDA3ODlkZDA2MmQ2YzA4MzNkMDFmYmI0ZmYxYjQyMzI1NmM4NTNlODQgbGVnYWN5LXRydW5rCisxODQ3NyBlMTJiNjUwZjBmYWNlNmQxZjg3ZmRlOWNlZTkxYWZmNTQ5MjJjMDMxIGxlZ2FjeS10cnVuaworMTg0NzggMDUyZTM3MmNlMTUxYzg0Nzc3ZjNmZGQ5YTI4YjBiMjEyZjRlNWYwMCBsZWdhY3ktdHJ1bmsKKzE4NDc5IGQzZTg2ZmY4OTNiMTA1NmQ3ZTA2NTE3ZDFlOWQ4NmE1ODQ2YmNjNTkgbGVnYWN5LXRydW5rCisxODQ4MCA1MGQ5YjU5MDYyN2Q2NGUzNmQyOWEwNTgzYmI3NGQ3M2U4OWU1MWVhIGxlZ2FjeS10cnVuaworMTg0ODEgMzBlYzg3MzMzOGFkMTU2NDRmZGU3ZmFlZTI0NjYxZDBjOWVhN2Q0YiBsZWdhY3ktdHJ1bmsKKzE4NDgyIDgyNjJiZmE1MTRjMmMwMDI5M2U3MzZkMjZmNWJhOGM2NzY2NjEzNGUgbGVnYWN5LXRydW5rCisxODQ4MyBmNTk0OTM5N2M4YTU4OGZmNmVkMDFkMzgwZWE0NjlkZTE0NWNiNjBkIGxlZ2FjeS10cnVuaworMTg0ODQgZGI2OWMwOTJjOTA2ZDM5NzkzNGIzMDIzZDY3ODI5Yjg5MzExYzdlOSBsZWdhY3ktdHJ1bmsKKzE4NDg1IDUwZGUzYjE5OGE2MjA1YjA1NzAwY2MyYTNiODA3ZWJkZmFlZGIzMzcgbGVnYWN5LXRydW5rCisxODQ4NiAzOGYwOWZiMThiODAyMGM3N2EyYzZjOWQ2OGE5ZjRkZmYzZWM2Y2FjIGxlZ2FjeS10cnVuaworMTg0ODcgNTM4MDk3MTk5NzgzOTg2ZDM0Yjc1ZWFlNjgwY2NkNWQzZWY2NzJlYiBsZWdhY3ktdHJ1bmsKKzE4NDg4IDdlMmJiOTk0YzJkM2FjNmU1NjMwMmUxMmI4ZDM0ODY0MjNjY2Y2YjUgbGVnYWN5LXRydW5rCisxODQ4OSA3ZjIyZTM0Y2U0MGUzZWFhMmNiOTJlYzU2Y2Q3ZmE4ZDc4OWU0MmNjIGxlZ2FjeS10cnVuaworMTg0OTAgNTBiYmVlZGJjZTRhNjgzYmEzMDYzZjgzYmIyMDJkODIzNDE3ODZmYyBsZWdhY3ktdHJ1bmsKKzE4NDkxIGRiN2VlNWM2MGFmMGI4N2QyMzA2YzAyMDg2NDljNzY2MTA4ZDY3NTAgbGVnYWN5LXRydW5rCisxODQ5MiA1NTJkYjhkODNhY2Q4OTZkMjFkNjNiYWU2ZGYwYjlkNjdkMjUyMGQzIGxlZ2FjeS10cnVuaworMTg0OTMgMTk3NTZiOTE4MDQxNjYyNmY5NTQ4ZTc4MmExMzZlYzY3ZmUxMWFhOSBsZWdhY3ktdHJ1bmsKKzE4NDk0IDJhNjEyYWUyNTA5NTkyYTJjMzgwOThjMzRhYTU2YjFmNzExZWVhNWEgbGVnYWN5LXRydW5rCisxODQ5NSA0NDZmM2Y5MzlkZjAzOTc2NjU3ZTE5MWNiM2MyYjkwMjZkZjAwYjQ2IGxlZ2FjeS10cnVuaworMTg0OTYgODM4NTUxODY5NzkwNGQ4OTNiNzAyYzQwNWRlNDI0OWM5MjlkNmZhYSBsZWdhY3ktdHJ1bmsKKzE4NDk3IDJkNmU3Njg5ZGM0MjA1Nzk1MmJjNjJmMjc0NWRlYzVhYWM3NjY5M2MgbGVnYWN5LXRydW5rCisxODQ5OCA3ZmI3YzUxYTJlNjE2MjAwN2MzZWIzYzVhZDc1YzFiOTNhYTRkMmQ3IGxlZ2FjeS10cnVuaworMTg0OTkgNzYzOWE5NTUyNDc5ZTMwOTNkYWNhODJkMzcwZWMwYWUxMTY1NmI4YiBsZWdhY3ktdHJ1bmsKKzE4NTAwIDdmYjUwOTliZTIwMjY5YmM1MGI3MjNiNTczYTBiOGQ4YjkwM2FhZGEgbGVnYWN5LXRydW5rCisxODUwMSBjNGJlYzdjNGQ2ZmY2NDEzOGRjZTJhMmM4MGRmNjRjMmI4ZTg3NDI4IGxlZ2FjeS10cnVuaworMTg1MDIgZjBjZGEwZDRiNTNjMjA4MjZhOGU1ODNhYTAzMDE3NTQ3NTdlNzM2YSBsZWdhY3ktdHJ1bmsKKzE4NTAzIDE5YzhhMmQzODA3ZDU4ZGEwNDBlYWE3ZDNjZTZmMzg4YzFmODQ3YTEgbGVnYWN5LXRydW5rCisxODUwNCA2M2I4MGI3N2Y1YjJkYjMwOWY5ODcyYTZlYWE1MTEwMjZmYzgyZDY0IGxlZ2FjeS10cnVuaworMTg1MDUgOGNmZTI2ZWQ3MjhkOTQyZDBkNTJmMWE0NTYzMWRjYmNlZDUwZDliMiBsZWdhY3ktdHJ1bmsKKzE4NTA2IGMxM2Y1YTIwZWEzMTIzMzhhMWZkNjliMzRkZGUxYTVjZTI4YzExNDYgbGVnYWN5LXRydW5rCisxODUwNyA1YjE1OGZjMGVkNTU1YTFhYjFlODQyNDUxOTMyMzFhMDE5MDFlNjcyIGxlZ2FjeS10cnVuaworMTg1MDggZTlmNGI3NjY5OWFhMjMxMGRjZjE5NjVjMTMzODc5Nzg1NThjMTcwNCBsZWdhY3ktdHJ1bmsKKzE4NTA5IDFhNGE1YTkzNmY1MDhjZTVjNTQ3ZmEwMDg0NDcxODkwODIyMmE3YWEgbGVnYWN5LXRydW5rCisxODUxMCA1NmM3NDQ4M2IwNTBjYzIxNjcwZWY1NzQ5M2UwZTQxOTM1MjMxNDE5IGxlZ2FjeS10cnVuaworMTg1MTEgMmYxNzhiZGRkYzE2MzdkMWIxNWMyOGJiY2ZiOTFhNzY3NjQ4NjVhMyBsZWdhY3ktdHJ1bmsKKzE4NTEyIDkyN2JjYzMxNWU1NmU4MzAxZjJjNTVlN2IxY2ZhNDc1OTY3ZjlkYTkgbGVnYWN5LXRydW5rCisxODUxMyAzZTI1NGY1NmVlZjFjZDVjNGYyNzY1ZjQyMTlmODlkZDQ0YzE1NTY5IGxlZ2FjeS10cnVuaworMTg1MTQgODJiZWMzODhjNjM2MjlhYWM1Yjg0MGE4YTgxZDQ2NTRlOGYyOTg5MSBsZWdhY3ktdHJ1bmsKKzE4NTE1IDY0MDVmMzBhYTA4YzJjYzUxMDhlY2E2ZTMzZjdlMzkzOTRhODM1YTYgbGVnYWN5LXRydW5rCisxODUxNiA4M2Q1OTk2NTJiNjIyYjUzOWFhYmVkYzhhMGRmODIwNzUzMTE2Mjk5IGxlZ2FjeS10cnVuaworMTg1MTcgMTczZDcwZTcyYzlmNjVhZThhNWE5NmQyZWU4YTQxNzQxMWRiOGM1OSBsZWdhY3ktdHJ1bmsKKzE4NTE4IDAyNmE5MjEwNTE0NTI4YzRkYmVmZGVlN2U5YTZjMjM1Yjc3MDJmOGYgbGVnYWN5LXRydW5rCisxODUxOSA1NmNlMzhlNTc1MDI2YmIzYzJiMDY5Njc0Nzk0MjllZDY2YTQ1MTNhIGxlZ2FjeS10cnVuaworMTg1MjAgNjU4NWQzYzA0YTI5ZDg1NjlhZDY0ZDY4YmEwYWY1MWNkZjJkOTI3NyBsZWdhY3ktdHJ1bmsKKzE4NTIxIGVhZjVhNzhiZDI4MjcxMThhMjYxNjZiMzA5MDNiNGQ2NGE4MTJkMDcgbGVnYWN5LXRydW5rCisxODUyMiBhZmFkNjU5NzVhODJlNWM0OTlhY2UzMTA3MjE4MzIxMzhjYzJiN2I3IGxlZ2FjeS10cnVuaworMTg1MjMgNWYzZWU1ZjFiM2Q3OTdmOWVkZjQ4Y2JlMmI3YmI3Mzc3MzY2Nzg0MiBsZWdhY3ktdHJ1bmsKKzE4NTI0IDFlNDE3MTcxN2U3N2NjZjE4MWZjNmMxZDNiNzA4OTJlOWQ4NDNhY2MgbGVnYWN5LXRydW5rCisxODUyNSAxODNkMGJkMmZkNjZkYzJlYzU0YTA4Njc2ZjQyMGU1MmY4NDE2ZTVkIGxlZ2FjeS10cnVuaworMTg1MjYgMTY5MDc1NWM1OTg2YmFiZDM0NDA1NWY2YThmZGRjODZjYjVmZWFlNiBsZWdhY3ktdHJ1bmsKKzE4NTI3IDkwZWExZTNlZWViMTRkMzQzZGQ5MWE0YjAwMWRiMWVmZDFlYTZkNzAgbGVnYWN5LXRydW5rCisxODUyOCAzZDU1YmY2NTY5OWFkZGM0NmEwZmU4MjYxMjkwNWFhNTI4MDc3NDU5IGxlZ2FjeS10cnVuaworMTg1MjkgOGI0Y2E1ZGE3ZGMyNjVkODc2Y2IzMTIzNzE5OWVhNjcxOTViYTZmYiBsZWdhY3ktdHJ1bmsKKzE4NTMwIDVjNjVlNjc2ZjI5OTZjNTBmMDg2NGI0ZjA0ODM4MmZhOThiZjk5NTQgbGVnYWN5LXRydW5rCisxODUzMSA1MWI1ODk4MDQwNTE0ZjgzYmU3NGE3MzQzMzc3MTRiOTEwM2ZlOThjIGxlZ2FjeS10cnVuaworMTg1MzIgYzNjOGJmYWQwN2NhMzJjMzI5YzhjMmU5M2Q2ZWM2MmE2ZjU0N2VjZSBsZWdhY3ktdHJ1bmsKKzE4NTMzIDI3N2E3YTE1ZWI5NGIwNTM2MTUyYzU1ZWFlZDBjODI2ZTdhNjcxMGMgbGVnYWN5LXRydW5rCisxODUzNCA2N2IzYWM0MzlmNjQwMjI4MGY5NTdjMzEwOTE1YTM1ZjJkZTg0YzRkIGxlZ2FjeS10cnVuaworMTg1MzUgNzVjM2E2NDg0N2M0OWFmMjA3NjUzMmY1YmY1M2YxMGQwNDQ4MzFiMiBsZWdhY3ktdHJ1bmsKKzE4NTM2IDkzYTU3NWJiYTA5ZjZmODU2ODhhN2I2ZWI2N2NlOTlhYjU0OGE4ZWQgbGVnYWN5LXRydW5rCisxODUzNyAzZjJmZjM4Y2M2NTc0ZWQ5OWMxMjE4MGRhZWFlZWU0ZWQ5ZTUwMzE1IGxlZ2FjeS10cnVuaworMTg1MzggMjlhMmExMTRlOWM5MzMyYzY4ZDBiNDAxNDE5MGU3ZDY2NjY1MWFmZCBsZWdhY3ktdHJ1bmsKKzE4NTM5IDAxYTRkYzMxYjU3OWIyNGQxYjY2N2U0NTI0YjBlMDVkOWE3M2I2MjkgbGVnYWN5LXRydW5rCisxODU0MCA5YzcxYWRkN2UxNjA4MThhZWNjYTI3Y2MxYjJhYTkzNmZkOWQwOGU3IGxlZ2FjeS10cnVuaworMTg1NDEgZWE0ODMyZGVlYWM1OWYxN2EwYjc1M2UwNjVkYzQ4NzFkYTJhZTBlMiBsZWdhY3ktdHJ1bmsKKzE4NTQyIDNjYTcwMmNhYTYxYWVhY2M2OTk1ZDBjYmZkYThhODYyYTRlZTEwZjUgbGVnYWN5LXRydW5rCisxODU0MyBhNTE5ZjIwN2VkMzY4NzIzZGMyMDk2Y2RiOGI0ZDA4YTE2NDY0ZWYwIGxlZ2FjeS10cnVuaworMTg1NDQgMTA2MTJjYmI0NjIzYWRlZmI5NmNmNjlkZTk4MmJmMGExN2E1NDYwZSBsZWdhY3ktdHJ1bmsKKzE4NTQ1IGVjZGFjZjUxNzU5NDUyNWRhYTViOGU4YzI0NDUxNGUzMDkzMjhhMDMgbGVnYWN5LXRydW5rCisxODU0NiBkNmY4NjYxOWRiYzczNGZhZTNjM2RlNDc1ZTVhOWYxMTAyYzVjOGRiIGxlZ2FjeS10cnVuaworMTg1NDcgOTg2ZDFjM2NjZGRlOTFhMTQxNmM5MzVlODhlZTUzZDI5ZWIxYzAxZiBsZWdhY3ktdHJ1bmsKKzE4NTQ4IGU4ZjVlNjFhOGI5NDM1YTgzNjU5NTExY2ExNGFhMDE2YWJkOTJlNGQgbGVnYWN5LXRydW5rCisxODU0OSA4NGNkYzg5YWM1NjFmOTgyYWI3Yjk4YTNkNDZkNTY1YTYwYTc0ZjllIHJlbGVhc2UyMC1tYWludAorMTg1NTAgMTc1YTNiMTcyMDY4ODBhMjhkN2Y0MTZmYzExMGM4ZWEyOTgwNTQ5YyByZWxlYXNlMjAtbWFpbnQKKzE4NTUxIDU1NmE0ZTUzYzI2OTc3MzM5MTg4MWM2MTVkZmExN2ExMGQzZWQyOGEgcmVsZWFzZTIwLW1haW50CisxODU1MiBlNjA1NjI0MDAwYmYxOTEwNTA2OWIwN2EwYzY4YjI0NmFmYjY3YTUzIGxlZ2FjeS10cnVuaworMTg1NTMgZjQxNzA1MzA0YWY0NDJmMzJjZTkwNmRkMmY0ZDg5OTExNDZjZjA5YSBsZWdhY3ktdHJ1bmsKKzE4NTU0IDI4MGE3OGVkMDAzNTUyODA4ZGM0NGNiYmY3YzU3NjI2NmFlMTlkNGEgbGVnYWN5LXRydW5rCisxODU1NSA2ZjE0NTNiYmQ1NjkwMmViNGZhNzUxNzExMDEwNzBmMWI0MGY5ZWY2IGxlZ2FjeS10cnVuaworMTg1NTYgMTM5Njg0YTkwMDQxYTBlY2M4OTA3NmE3NjVhNGJmNjFjZDU5M2U1MiBsZWdhY3ktdHJ1bmsKKzE4NTU3IDU3YTQ4NTc0MzBmZjVkMjU3NzFkNWNmMjQzMjUzN2YxZTQ4M2I5OWMgbGVnYWN5LXRydW5rCisxODU1OCAzNmY3YzA5YzJkN2YyNDNlNmMzYTZmNWNmNzdmYzA5N2ZlNWEwMjdiIGxlZ2FjeS10cnVuaworMTg1NTkgMGMyMmFmMmNkZDZmYjM3YTcxMDk4OTRiYjYyMTdiMjFhMjQ0N2Y4OCBsZWdhY3ktdHJ1bmsKKzE4NTYwIDhlMDE0MTdlYzAwMTdhYjRlNGYyNTk2NDdmM2Y2NGQ4M2Y5ODMzODggbGVnYWN5LXRydW5rCisxODU2MSA0YjE2OGVlYjYxYjNiN2M3NGM2OGJkZGJhZjBjZTYyMzQ0ZjY0MTA2IGxlZ2FjeS10cnVuaworMTg1NjIgNWE1ZTllN2ZiNmIyMTI3MDljNDVhYmJjOGU2NGVjNDFiNGJiNWE2ZiBsZWdhY3ktdHJ1bmsKKzE4NTYzIDE5OTdkZmVkOGQyMWQ2ZDlmNWViZGQ0ZDVkMGM4ZThlZjQxMTY1ZDYgbGVnYWN5LXRydW5rCisxODU2NCBmNmVlMGQ0NjcyZDYyOTYwNjVkNmI4ODE2ZWEwODE1ZmUzNGJiMzEwIGxlZ2FjeS10cnVuaworMTg1NjUgNjEyZmI3NzI3ZmEyOThlMTZmMWNjOTQ0YWYzZjhkNjY2Zjk1OGU5MyBsZWdhY3ktdHJ1bmsKKzE4NTY2IGI0MDhhY2RjYWYzZWVlY2M1ZmYwZjJhMWJkY2M4MGRlNzgwMGRiYTMgbGVnYWN5LXRydW5rCisxODU2NyBiZjliYjBlM2RkMzQxM2YzMDY3NjJmY2ExOWJlODNkYTg5NTE5NmVmIGxlZ2FjeS10cnVuaworMTg1NjggMzA3NWExNTNhMDgzZTIyOWJkY2EyZmViYWYwMTkzMGUxZTAxZjRiOCBsZWdhY3ktdHJ1bmsKKzE4NTY5IGUyOTc4YzBiN2NiZDY5MjFhZjk2YTM5ZDM0MWIwYmYwYTk1MjA3YTcgbGVnYWN5LXRydW5rCisxODU3MCAxNjE4OTJiZjdjMTVlZmU5OGVkZjQ5OTAzZWZhOTAxZTJiNGI1MzFlIGxlZ2FjeS10cnVuaworMTg1NzEgYTYyNmUzOWQ2ODRkYzIzZmE2ZjVmNGFhNjFkZTc5ODZlNWQ5ZjBlYyBsZWdhY3ktdHJ1bmsKKzE4NTcyIDI0ODFiNWZlODZkNmRjZTdhYzQ2MDNjMzNiOTUxNWE2YmY0MzE5MTYgbGVnYWN5LXRydW5rCisxODU3MyA5MDFmMzhmN2Y2Zjc1NTA3NzUyZDAzNmEyMDcwNDA3YTVhMWIzY2QxIGxlZ2FjeS10cnVuaworMTg1NzQgMzY5M2FiZDBlYWMxZDQxYTQ3MDg3ZTAyNzZlNzU0YzU2M2ZmYzE4OSBsZWdhY3ktdHJ1bmsKKzE4NTc1IDJhMzA1MTI5ZDU2NmVjMTQzZTQyNzJhOGIwNTBiZjI4NTYxOWZjOTAgbGVnYWN5LXRydW5rCisxODU3NiA0ZDk3OGFkOGZiMDVkNjA0ZWE5NzRhMDY4NjczYjcyZDhiOTA1MTVhIGxlZ2FjeS10cnVuaworMTg1NzcgMzYyZTUzZjQzZGQyMzYxYjkwOTg4ZmU2NGM4MjgyZWQ5NDM4ZGU4YyBsZWdhY3ktdHJ1bmsKKzE4NTc4IGM2NTZmMzA4YWExZjg3ZmNmZGRmYTIzYWRmYjgwYjU4MDBiNTIxMDggbGVnYWN5LXRydW5rCisxODU3OSA2ZTJlYzhmN2M4NzFmNzRhM2JlYzJlYTFmZTYxMjdmMWFmYTlkNWYzIGxlZ2FjeS10cnVuaworMTg1ODAgMjY1ZjRlZjdkN2IxZDBkNjI1YTM0MzA2ZWMwNmFkOGQ5MDY4M2VjNyBsZWdhY3ktdHJ1bmsKKzE4NTgxIDA2MTI1MmY1YzcyOTZjZDM0Njg0OGVjYzM0MWE4ZWY2MmY0OGU1OTYgbGVnYWN5LXRydW5rCisxODU4MiBlYWQ4YjViOTk0YWQ3Y2U2MTJjZjYwZWJjNDYwMmNlZjVlNGFhMzc1IGxlZ2FjeS10cnVuaworMTg1ODMgM2U4NjJhNTE4NjFmZDZiNmRjZjE5MmUxN2Q4YmY3ZDM1MGRjNWEzMiBsZWdhY3ktdHJ1bmsKKzE4NTg0IGFjN2FlM2VhZDg4YTQ0YWFhMzU0OWFmMDBiNWZlN2ZlODFiYTM2ZTUgbGVnYWN5LXRydW5rCisxODU4NSAyZGNjNGE4NmE4NzZhNzFmN2M2YTllNzM3YWM1YTYzZjVjMzYwYTIwIGxlZ2FjeS10cnVuaworMTg1ODYgOGU0MDJhZWNhMGEzZDFjZGY4ZGMzNGJmYTBlNWY0NzhjN2U5YjIzOSBsZWdhY3ktdHJ1bmsKKzE4NTg3IGRiOWYxODkzYmUwMTY4MTY2NzYyNWFhMzQ4ZTNhOGJjOWQwNTU0MmEgbGVnYWN5LXRydW5rCisxODU4OCA2NDFhZDZjODMzYmU4MDRjYWRmNWFjODA1ZTJhYTM3M2NhYTMwMmJkIGxlZ2FjeS10cnVuaworMTg1ODkgNGRkMGI5N2FhNmUxNjY5MjhiMGM1YTVhMjZiOTBmZDlkOTljZDA5OSBsZWdhY3ktdHJ1bmsKKzE4NTkwIDJiM2JjMDhkNGQ4NTNhZWY0MDQ4NGYxM2Q5N2E1YTU4MjVmYTFiYjcgbGVnYWN5LXRydW5rCisxODU5MSBkM2M3ZWQxNWNlMjU3NzhlYjk1MTFmYmYxMDcxYTgzZDg0ZmY2NWU3IGxlZ2FjeS10cnVuaworMTg1OTIgYTA2NDE1OTk0Y2I1NmE3ODZmNjFmNWUxMDMwMDk0NTc0YmRhN2EwMyBsZWdhY3ktdHJ1bmsKKzE4NTkzIDNhZDMwMDRkZmU2ZGI2ZDlkNDNhODY2ODI3NzU0ZmIyMDYwMGYzMjMgbGVnYWN5LXRydW5rCisxODU5NCAwMGM2ODU1ZDc0MmE4ZDJhNTE4ODNmNjhlNzk0ZTdjZWI4YTk2YTNiIGxlZ2FjeS10cnVuaworMTg1OTUgMzE3YzIwM2FiZWU2ODZjYjZiZGEyODdhYmZhMWQ1MmU5OWYwZmUzZiBsZWdhY3ktdHJ1bmsKKzE4NTk2IDg1ZGMwY2UwMTYyZTZmM2NlNjU2NDQzZTBhNDY0MGU2Yjg5ZTdlMTUgbGVnYWN5LXRydW5rCisxODU5NyA2MTI0Y2VkZjg0MzhkYzg2YTBmODM5NTI0M2ZjOTRhMTZmMzZiZTY4IGxlZ2FjeS10cnVuaworMTg1OTggMjcyOTBlYjljNTI2NGIwN2I5NWM1YzlkY2RmZmNkNTQ2ZDkxZjMwOCBsZWdhY3ktdHJ1bmsKKzE4NTk5IDc2Y2FmMDg1NWQxZmZlN2U5NzFiYzExMDJjYTg5MjkwYTk5Y2Y4M2YgbGVnYWN5LXRydW5rCisxODYwMCA5NzgyMWE0NmUwMDAzMDNhNmI4MmMwOTIzMTYxZmUwYmMwNWZiMGM4IGxlZ2FjeS10cnVuaworMTg2MDEgMGE3NzAxM2M1MGFjYTIwNDViMTQ4ODRmNTgzMTgwNzVjNzdkMzE5MiBsZWdhY3ktdHJ1bmsKKzE4NjAyIDlkMTViYWY3MTQ1YWZmMmU1MDVjMGYyYjNiZjQ1YWVkYmIxZDg4OTQgbGVnYWN5LXRydW5rCisxODYwMyBhYmI5NDYwOTMxOGU2YzQzNDA0NzdkMGYyMTZiM2I2MjIzYTQ2NzhkIGxlZ2FjeS10cnVuaworMTg2MDQgYmY4MDg2NjgyNGVjYjVlZjhhNzhjNTlhMzg4OGVjMTE5NzAwYzNkOSBsZWdhY3ktdHJ1bmsKKzE4NjA1IDRjMDQzZTIyN2M0NDA3ZWFkYjA5ZjFmMWJkMzg4OTlmZGYyNGQ0Y2YgbGVnYWN5LXRydW5rCisxODYwNiBmNWMwNDEzNGY0ZTJiZDdhZDNhOWRjOGM1YWJjYTY3YTAzYjE5MmY0IGxlZ2FjeS10cnVuaworMTg2MDcgNGRiYmYzMjJhOWRmMmNmYmI1NTg5MGFjNDE1YTQzYjZjZjJhNmI3NSBsZWdhY3ktdHJ1bmsKKzE4NjA4IGZhM2Y1MzdjODI0OWM0NGFhZjY2MDU1NmE1YTFlZDMyMjllMjcwODAgbGVnYWN5LXRydW5rCisxODYwOSA3OWY5ZTMzMzMxNmU2YmNkZTJiMDlhYzFjMDdhZTQ1OTdhNjVkOGU5IGxlZ2FjeS10cnVuaworMTg2MTAgNzdjNzYxY2QxMjcyZTliMDMwNDNiZTVhMjZhYjNkNjQzNjI3OTJlMyBsZWdhY3ktdHJ1bmsKKzE4NjExIGQ2N2NmY2MwNjgzZWRhODRmZDE2NDE1NTViYjhlMDE5NTJlNGNmNjMgbGVnYWN5LXRydW5rCisxODYxMiA5MzliOGZmZmM0NTJlMDUyNWIzODAwNjFiNjMyODY4ZDM1NWU2ZTlkIGxlZ2FjeS10cnVuaworMTg2MTMgYzA4MjJhMDVlOTIzYjZmNTAwOTRkODU5MGQ0MjQwZWE4MTlmZDhiNSBsZWdhY3ktdHJ1bmsKKzE4NjE0IDhkMDBmNzU1NWVlYzI3ODJmODUwY2EwZmNmYjk4NjcwZmYzYWZlYjggbGVnYWN5LXRydW5rCisxODYxNSA3YzhmYWM0YWMzMWFiZDU4YzkzMWJhYmUyNmZlM2MwOWYwMDQzYjE3IGxlZ2FjeS10cnVuaworMTg2MTYgYTQzYThhMWY0NmVlMWJiNjVjNzQ3M2JjOWJlNjllMmEzZmI1MzYwYyBsZWdhY3ktdHJ1bmsKKzE4NjE3IDQ1OTc5Y2RjZDM2OTczOWNiYjg1OWE4NWY1ZjZjNWQ2NTVhNDk0NzUgbGVnYWN5LXRydW5rCisxODYxOCBhOWUxNWJjYWIzMmNiNjAxMzNkYjc2MTBmMDFiM2QyNmU5Y2UxNTJjIGxlZ2FjeS10cnVuaworMTg2MTkgYTFkODhhYjAyM2EwYmVjZDVkZWZhNTBiOGMzNTM2ZjM0Y2UxZTcyOSBsZWdhY3ktdHJ1bmsKKzE4NjIwIGEzMWMzODY4YzgxMmZjZTc2NjZkMTI0YjhjYjU0NDVmNmRlZGZhYzEgbGVnYWN5LXRydW5rCisxODYyMSBhNTZjMDAwZTU3OWNmN2U0MzU2NzFlZmNiOGE3NTIzNzM4ZjUyOTAwIGxlZ2FjeS10cnVuaworMTg2MjIgOTVlZTc5ZGZkNzQ2MjMxODY3ZDczODRlYjBiMDM3YTRmYTUxMDQ4MSBsZWdhY3ktdHJ1bmsKKzE4NjIzIGRlZjQxNmNkOTIzZGYyMmE4YjFhZmRhNDBjNGNhNjQ5ZDg2OTBkMGIgbGVnYWN5LXRydW5rCisxODYyNCAzNWUwOGRkMzdkZjEzN2UxNjUyODU2ODA1ZTkzOTVjMmVhNmNmZTI2IGxlZ2FjeS10cnVuaworMTg2MjUgN2IzZjhlNzYxYTJkODJkYjM3NmMyODMzMDc4YjQ4NTlkZTEzODVjZCBsZWdhY3ktdHJ1bmsKKzE4NjI2IDZkOGY3ZTEyNDJjMDI5ZDgxNjI4OThjMzFkNjY0NmEwNWIyMDNkMjcgbGVnYWN5LXRydW5rCisxODYyNyBkNmU2YTVjZmViM2Q2YjdkMDFhZTVmZWRlNmM0Njk3ZWM0MjgzODJiIGxlZ2FjeS10cnVuaworMTg2MjggODc0NWZiM2ExMTkxNzJhZDhlYjNmODA0ZjlhMDcxMGUwZjVmYmY4MyBsZWdhY3ktdHJ1bmsKKzE4NjI5IGU3OTFmNDkwNWQyNTYxYzI3ZmRhMTVkYTMyZTM1YWQ3MWYyYjcwYzQgbGVnYWN5LXRydW5rCisxODYzMCBmYjE0M2ZiMjM2ZDBhZjRiNjU0ZjIxMGZiNjg4YWZlYjRiZTgzZjljIGxlZ2FjeS10cnVuaworMTg2MzEgMThhNmU2ZDliNGY4OGJlZjM5ZjYzNGQ0YmU3YzM1MDZjMDI0ZWMyNCBsZWdhY3ktdHJ1bmsKKzE4NjMyIDA4NjhjMzYxYWY1YWZkYTJmZjJhY2UzOTAxMzY3OTM2NTcyZWMxYjcgbGVnYWN5LXRydW5rCisxODYzMyBlZGI5NjY2YzA3YzA0YThmOWU4NzljYzNhOWM0NWU1ZjA5MjA0ZmM2IGxlZ2FjeS10cnVuaworMTg2MzQgMDc2YmIyOWE2NWRjNGIwOTNjY2FjMzI4N2IwMTg0NWE5NDM5ZDBmNyBsZWdhY3ktdHJ1bmsKKzE4NjM1IDVkNmZiN2ZmNjhjNzlhNjlmY2U0NGMwNGIxM2NhYzBjZjE0NzNjMTIgbGVnYWN5LXRydW5rCisxODYzNiBlOGFhZDg0MjQ3M2E0YTVkYmMxOWY1ZGU3ODA3MThlZjI0MTljYjU3IGxlZ2FjeS10cnVuaworMTg2MzcgNDM3MGZjMTk2OTdlNGE5NjkzMGRlMGI5Yzg3OTY4OWUwZTVjZTBhNCBsZWdhY3ktdHJ1bmsKKzE4NjM4IDUwNzY1NDRjMzM4YjEzOWRiOWE2Y2EwODM5YzUwYTFhMzljM2FkOWIgbGVnYWN5LXRydW5rCisxODYzOSBiNWEzN2JmOWQxMmRhN2EyMTE0OGUyNWNhN2FmNjZjZWZhYTA3OGYxIGxlZ2FjeS10cnVuaworMTg2NDAgYzY2OWMyOWQxYjhjZGY5YmRkODBhMjgzYWVhYjBiNzkyMTRlMjMyMCBsZWdhY3ktdHJ1bmsKKzE4NjQxIGQ2NDZkNjA2ODkyNDMwZDE2MjIyYzVmMGZmNTg0ZmMwZWUwMzZhMDkgbGVnYWN5LXRydW5rCisxODY0MiBiMWM1Nzc4NDgwYTE5Zjk1NjM3YjBlZTE4NDNlYTc1ZmQzMGE4OTIyIGxlZ2FjeS10cnVuaworMTg2NDMgYWI1MzUyNDQ0MjA1N2VkYTBlMjI4ZjgyY2FlMzBmNDk3OWFkNmJjNiBsZWdhY3ktdHJ1bmsKKzE4NjQ0IGZjYTJjZjg1MGU0YWNmMTIyYjRlMTIwMGEyZWZkYzBiMTM1M2EyYzcgbGVnYWN5LXRydW5rCisxODY0NSA3OGM0YjYzYjViOWQzNTRmNzJlM2Q2OWY0MDlkOTYzOWU2MTMyY2U3IGxlZ2FjeS10cnVuaworMTg2NDYgZWZmMTFmYWM1ZjM2MzlhOTkxYzI0MTI2YWRlNWVjNmI0NjRkZTk0YSBsZWdhY3ktdHJ1bmsKKzE4NjQ3IDgzZTE0Njk3NGI3MmE0YTk3ZjI4NjBiMjJmNTM4NWMwNjNkOThjOWYgbGVnYWN5LXRydW5rCisxODY0OCBiMzFhMDQ2Zjg4YTc3MjQxMjllZGE1ODNjYTdkODQzOWRlMGI4YmRjIGxlZ2FjeS10cnVuaworMTg2NDkgZGRkM2Q4YzJjY2EwNTI4YThhZDUyOTQ3ZWZlMGVkMWRiYjFhZjhlZiBsZWdhY3ktdHJ1bmsKKzE4NjUwIDllOTU1NjkyNGIwYTc0MjFlOGNiYjQ0NjdiYjdkM2VkZDA4YzkyYTMgbGVnYWN5LXRydW5rCisxODY1MSAxZGIzY2E5NTMwYzI4NjNkZTdiZmIwYmQwOTlkN2RmMWI2ZmM1MTg0IGxlZ2FjeS10cnVuaworMTg2NTIgNDg1NGVlNTg1ZTBkZjg4MWM4MDI1NjA4NTZiNjhkMGQyNGJkMGE2MCBsZWdhY3ktdHJ1bmsKKzE4NjUzIDAxMzE3OTM3NmZhMzVlNTNlMDYwZWU1NzBmNzllMTE1NTBjYWQwOWYgbGVnYWN5LXRydW5rCisxODY1NCAwZmRmYWFlYTVlMmY5MDMxY2UzMDFhODE4YmEzYTBlMTljZmJlNDM5IGxlZ2FjeS10cnVuaworMTg2NTUgYjdkNWY2OGJlMDE3ZjRjODAzOWJiODU3YWZiZGIxOWQ5MmYyYTE5OSBsZWdhY3ktdHJ1bmsKKzE4NjU2IDYzYzA0ODNlZmY2OGZmOGQyMjc0NDk2OGM1ZmQ2ODI4YzZiM2Y4OGIgbGVnYWN5LXRydW5rCisxODY1NyBiNTdlM2UzNzQzMTRlMzUzYjVhODcwYWVlNmY3ZDc0MzdiYWM1NDI1IGxlZ2FjeS10cnVuaworMTg2NTggZWRkMTkyMTdiMzk2OTVkYTliYTc2OTc2ZWI3Y2M4NDZkMTMyOTY1MCBsZWdhY3ktdHJ1bmsKKzE4NjU5IGQwMjdlODVlMjA5ZjdkODRkMTlkZmM4ZGZkNTMxNDA2NDFiYzFmNjMgbGVnYWN5LXRydW5rCisxODY2MCA1YTMwOGE5Zjk5YTU2NjQ3ZmRiM2MyZDNhNDFjZjgyNGNlZDU4YTM3IGxlZ2FjeS10cnVuaworMTg2NjEgM2EyNjAyNzRiY2M2YTE1YjRlYzY3MDJmOGIxMGMzMTM5ZDdhOWZiOSBsZWdhY3ktdHJ1bmsKKzE4NjYyIDIyOGZmZDM2YTBkZGM3MzllMGI3OTNhNDYwNDg0ZmE2NjdhMDBhM2UgbGVnYWN5LXRydW5rCisxODY2MyBlYjE3NjdiMDY4ZmVjMjI3NmY3MzJhOTI4ZTRkMTZkMjZjNDExNzA5IGxlZ2FjeS10cnVuaworMTg2NjQgOWI2ODE0YmZiMmMwZDlmNTMyMjM5OTI4MWNlOWFjYWIxMTgzNmZjOCBsZWdhY3ktdHJ1bmsKKzE4NjY1IDM3ODE5YTc3N2ZjMGM0OWVmNDMwZTQ3YTBjYTNkM2Q3OTE2MjZmYTMgbGVnYWN5LXRydW5rCisxODY2NiA1NDE1ODA0ZmIzNDVjNjkyMjRiZmYxN2Y5MWZhZmQ4NWJiYWMzOGRlIGxlZ2FjeS10cnVuaworMTg2NjcgM2I5YjhmMmRkZmU3OTZiY2Q4NzMwODA5NGU5NzgyZWQ0YjM4ZGFkMyBsZWdhY3ktdHJ1bmsKKzE4NjY4IDIyZmVkMmIxNWE1NGIyYjVjMWE1Njg0YWFmYWI3NWY2ZTIzNWIyZjUgbGVnYWN5LXRydW5rCisxODY2OSAzN2QxMjAyMWRmMDUxMTM0NTk3NDFiODJmNDUzM2ViZGI2ODEyNGI1IGxlZ2FjeS10cnVuaworMTg2NzAgZjk3NzJmODdiMTNlM2QwZmNlNmRhNWY3YmEyNTA3ZmVkZDY4YmI2NiBsZWdhY3ktdHJ1bmsKKzE4NjcxIDk1NDYxMWZkMzVlMWU5NDBkNDZjZjEyNmViYzFiYTcxYTRmOTM4YjkgbGVnYWN5LXRydW5rCisxODY3MiAxYTAwZDIxOTEwYzg5ZjFiMzhiMTJhODY1M2MxYTI2MmQ2ZTU3OTliIGxlZ2FjeS10cnVuaworMTg2NzMgYTU2M2VlYzQ2YzFhYmU5MWY2YTEzYzAwYTYxOTAwMjMxNmMxOTYyMyBsZWdhY3ktdHJ1bmsKKzE4Njc0IDA2NDAyNmRjNzY0ZTg5ZTUwZTdhODBhYTdiMWVmZGFkNDgzMDVmMDkgbGVnYWN5LXRydW5rCisxODY3NSBmYWFmOWYxMGQ4NDk0MzllNzkxM2M5ZDQ1Mjg2MGQzNDNjMzI0N2MxIGxlZ2FjeS10cnVuaworMTg2NzYgODY4ZDJhY2Y3NDU4MDhjOTAzM2Y1N2NkNTgyOWQ5N2E2OWVjZjU2ZSBsZWdhY3ktdHJ1bmsKKzE4Njc3IGM2OGIwNjI0OWQ4YTIxNDY3YTdhZTUzYzVmM2I2YzRiZWJhZDlhMDQgbGVnYWN5LXRydW5rCisxODY3OCA2NDVmOGZkNmZhOWRjYzU5OTUxY2MyZDI5ZDI2OTgwNTI4OGYwN2U4IGxlZ2FjeS10cnVuaworMTg2NzkgMmQzOTkwNjU2MjQ4MDA0MTgyNjBlZjdmOWQ0M2JjZWM5ODU1MjZjMSBsZWdhY3ktdHJ1bmsKKzE4NjgxIDc5NzcwY2ExNWM1YTlmNTI5MTRiMTYyY2I5MDFlNWU0YjNlZTcwYTEgbGVnYWN5LXRydW5rCisxODY4MiAzM2I0NDRjYmFkYjk5MmE3ZTU3MjkxYmI5ZTc1MzkxM2I4N2E2YmVkIGxlZ2FjeS10cnVuaworMTg2ODMgMGYyMmZlYjkzOTdkYjliMWI4MDdmY2U2MDRkN2Y4NmQ5NGEwNjc4ZSBsZWdhY3ktdHJ1bmsKKzE4Njg0IGM3ZGZiYTBkYjg3OTBiMDA0ZDExZmJjM2I1YmE1NTcxZmJkMTY1ZjYgbGVnYWN5LXRydW5rCisxODY4NSA5ODIxNzc3ZjhkYWQ2YzBmNDVmMzJkYjgzNTNlYTk5MDcxZGNmZmY4IGxlZ2FjeS10cnVuaworMTg2ODYgN2Y3ZWY5NDQ3ZTU5ZmNhNGI4ZTIwYTUyYmRkMzE1MzM1N2RmZWIwNCBsZWdhY3ktdHJ1bmsKKzE4Njg3IDQzMjhmZmU2NDdiZjdiZWFmY2NkZDc1NTgxMzhlZTJkOGI3ODM5ODMgbGVnYWN5LXRydW5rCisxODY4OCAxNzQ0OTBlOTI0ZDQ3ZjE5MmJkOThmYThkZDJlZTUzZDY5ZjUwN2YyIGxlZ2FjeS10cnVuaworMTg2ODkgODFkYjkyZTgwZWE4ODYzZGI5OTlmYzllZWVhMzY0ZmNmNzI1NTdmNSBsZWdhY3ktdHJ1bmsKKzE4NjkwIDA1YWQyOTdlMTQ0ZmU5N2RlNTJlZTAyYjc1MDQ0ODg4MGMxMjBjZDcgbGVnYWN5LXRydW5rCisxODY5MSA5MzA4ZGM4Yzg1ZTAzNWM0NDRiNWQ0ZmE3YTI5OTFiMTc0MDEzMDdiIGxlZ2FjeS10cnVuaworMTg2OTIgZTAwZjcxOGU0ZDhhYjM5NWU2ODE5NGUzZGNjZTE1OGU3Y2NmYmRhNiBsZWdhY3ktdHJ1bmsKKzE4NjkzIDlhMjM4NWVlMWQ5OTQ0NjQwNzYxNzg1NWM4NGQ2MjRlZTZiZGQ5MzIgbGVnYWN5LXRydW5rCisxODY5NCAwYWUzODllOTM1ZmM0MTZlYjg3NDM3YmNkMzVjZTM5MTg4MTQ4YzNiIGxlZ2FjeS10cnVuaworMTg2OTUgN2VhMzBhMTYzNDYzNmQ4ZmVhYzJkNjRlOGJiNThjM2NmOWMyYjExYSBsZWdhY3ktdHJ1bmsKKzE4Njk2IDZlMzI5ZjNlMTdmMGU1MzlhNjI4ZDg4ZDMwMzU2YmExZDZmMjgxNTMgbGVnYWN5LXRydW5rCisxODY5NyBiMWIwYTcwM2VjNGU2YTNiMDY3M2QxM2QyYjNiZjE1NzQwYjZlYjcxIGxlZ2FjeS10cnVuaworMTg2OTggMGU0ZjQ4YzVmYzg0ZDg4MDYwNTNkOWM2ODU1MzkwODYzNDdiZGJkYyBsZWdhY3ktdHJ1bmsKKzE4Njk5IGJiMzAzYTc2YTQ3ODM3Y2YwNDcyNjZiYjQ2NzllN2I0Y2I2ZDE1NTYgbGVnYWN5LXRydW5rCisxODcwMCA2N2M4YWJkMjEwMjVhNTQyZmVhNzYzNmNjODNhMTQ4OGU1NzA1NzU1IGxlZ2FjeS10cnVuaworMTg3MDEgM2I2NDM2NTNlMDc4MjBiZjU3MzViMjZkNTZhNjYxNzg1M2ViZDg3OSBsZWdhY3ktdHJ1bmsKKzE4NzAyIDdkNTAyNWJiYTAzN2M2YzRmYTUxMDkxYjk4OGU1OTVhNjVhOTU1MWIgbGVnYWN5LXRydW5rCisxODcwMyAxN2ViYTc0MDQwOTljZTUzZDNmNTg2MjE0MWFkYmZlMjkzZTJkMWRkIGxlZ2FjeS10cnVuaworMTg3MDQgZjZjZDM2NDk4YTUwM2YzMTY1MTY3MzEyZmRkNWFjODY2YTg4YzI5MiBsZWdhY3ktdHJ1bmsKKzE4NzA1IDYwMWM1M2E5ZTQ5ZGYxZmIyMGE5MmU4ZjY0MWYwYzZkMjJlMDM3NmQgbGVnYWN5LXRydW5rCisxODcwNiAyODMzNTZmYjZlZmM3NTlkYWE3OWQ0NTE1NzE4NDRkMGUyMjI3YTZhIGxlZ2FjeS10cnVuaworMTg3MDcgMjEwYmJlNTNiNmQ0YWM3OGJkZWI0NzQ3MzNkMWE5NDkzYmU3MDg4MyBsZWdhY3ktdHJ1bmsKKzE4NzA4IGQ0MWY5YjBhNDBjYWE2MTQ3ODk1ZWU0Y2EyNTc2YTBlZmI4MmI1MTcgbGVnYWN5LXRydW5rCisxODcwOSA2NzlkNTA3MDVlMDY5NWUxMTY2YjQzNTIxMjBiYzFlZjQzY2E3NWM0IGxlZ2FjeS10cnVuaworMTg3MTAgNDA1YTU5NzM1ODQxNmQwMmE0MDkwNWRmNDkyY2FmNmE0OWIwNGU2OSBsZWdhY3ktdHJ1bmsKKzE4NzExIDE3ZDNhNjNlMjJjNzQyODM5MGY4MjIxMjU3YzJiODdlM2RmZWM4YjIgbGVnYWN5LXRydW5rCisxODcxMiBjNzA0MjE0MzM5OWYzMTg0NGEyZDBhMjI0MjE1MzEyMDNmY2U0MDZmIGxlZ2FjeS10cnVuaworMTg3MTMgYTNjMWEyMzRjZWU3MTg0MTRjYzI3YzhjZWVkMGU2ODBiYzNkZWQxMCBsZWdhY3ktdHJ1bmsKKzE4NzE0IDBkOGI1YjNkOWQ4M2QwNjZjZWQ2ODFiOTllM2EyY2Y2MmU2Yzc2OGUgbGVnYWN5LXRydW5rCisxODcxNSBhODRiNTNiYTkwYzQxZGJlZGNhMzNjZjQzNjIyN2VlZWJjZWE2ZjAyIGxlZ2FjeS10cnVuaworMTg3MTYgZmM3NjU0NjRiMTc4MDEyYzdjYzJhYjliNDI0ODFiNzFiZDBiZDU5YyBsZWdhY3ktdHJ1bmsKKzE4NzE3IDE1MmQwMDcxODAwNjA5ZDUwYjBjYTRlOTYyZmVlN2E3Nzg1MjNkOTUgbGVnYWN5LXRydW5rCisxODcxOCA4YzcxNDA5YWMwYzM5NGQxOTY2NTg2OThlODk1NDFkZTUyMjE1YTExIGxlZ2FjeS10cnVuaworMTg3MTkgMGE4ZGE2ZjM5N2I3OGY1ODE4ZDkwNzg3ODQxNzA5ZGVlOGIwZGE4YSBsZWdhY3ktdHJ1bmsKKzE4NzIwIDgxZTNkODYyNmFkZjBmNzkwNTc5YmE4OTUxMTA0MjkxYWFmZWMyYWIgbGVnYWN5LXRydW5rCisxODcyMSAzMTk2N2EyMzM2MDA5MmE1Yzg3Zjg3ZGIwOWY4NDgyZGJjMWJhYTQ4IGxlZ2FjeS10cnVuaworMTg3MjIgMDgzYTVjNzVlZDkwNDUyMjEzYjQ4NDYwNDYwODk2MmI4ZDIyYzFhOSBsZWdhY3ktdHJ1bmsKKzE4NzIzIGU3ZjZkNTRjMDE0ZDM0MWVlNTNhMzc1YzlmNWU3YWExMjI4YzM3ZGIgbGVnYWN5LXRydW5rCisxODcyNCBmYzFlNTgzMWZlMTA3N2I3ODIxZWUzZDVmZmUwNTU4Zjk2NjVjNmVlIGxlZ2FjeS10cnVuaworMTg3MjUgNzFiMTlkMzZhYWZhOTNmZWIwMDNjMjE0MDI3OTAyYTczZGI3MjU5YSBsZWdhY3ktdHJ1bmsKKzE4NzI2IDFiMDNmNzZhYjAzZWE3NDI1NWViNzU0NTJiOTZhNDk5NWI5NGM4ZWUgbGVnYWN5LXRydW5rCisxODcyNyA1NTc4ZTliNDI0ZDRhYThkZGNlNTZlYTBhY2ZkMmRjMDRiYmYzMjRlIGxlZ2FjeS10cnVuaworMTg3MjggNzBhNTllM2ZiMjc4YmI1MjBlOTcxMzdiY2NkYzU1YThkODhkNjlmZCBsZWdhY3ktdHJ1bmsKKzE4NzI5IGY1YTNkOThhMzViYzRiZGM3NGE4NGZiYTZlZWQ4NTlkMGYwN2FkMjkgbGVnYWN5LXRydW5rCisxODczMCAzMDYwY2JmYTAxYmU2ZGZjNmZkYjg4ZjBmNWMxMGI3M2JiZmJmMDZkIGxlZ2FjeS10cnVuaworMTg3MzEgMWE0YzFjMGUxNGExM2Y1OTUyNjVhYjY0Y2IxNGNjNDkxMzg2NjFhOCBsZWdhY3ktdHJ1bmsKKzE4NzMyIDAxMGQwMzg1MzU0NjQ2ZjE1NzAwNTFmMTkzNmY2NTA3NDMzMWRlMGIgbGVnYWN5LXRydW5rCisxODczMyA2MmFlZWZhMDFmZGQ1NTRlMzBiNTA1ZTVlMDM3NzU0ZGU3MWM1NGU0IGxlZ2FjeS10cnVuaworMTg3MzQgMzY4NWVmMmE1NWE0OGUzZDZjMDBhOTE4ZWJhZmY3MzBmM2IyNGRmNSBsZWdhY3ktdHJ1bmsKKzE4NzM1IDNkZDIxN2ZiZGQ1OWIxZWQyNjgzNzIxODdkYzgxZDlmMTU4MDllYWMgbGVnYWN5LXRydW5rCisxODczNiA0YzAxZWUwYTgwNzNmOWRlNDhkMmMwZjU3ZDhiYWY4ZjVkNjM3MTEzIGxlZ2FjeS10cnVuaworMTg3MzcgMTk1NTU3YTBmMDUwYjgxMjcyZTJhNWE2MTU3ZTEwNzM0YTkyMjNjNyBsZWdhY3ktdHJ1bmsKKzE4NzM4IGEzM2RlMjNiMzA2NmZiY2RiYjI3ZTkxNmY0MmU4NDA4ODdlZDgzYWUgbGVnYWN5LXRydW5rCisxODczOSA5M2QwNTY3YzlmYzljYjFmMTRlODM3MmYxMTFmM2Y1Y2E4ZDIzZTliIGxlZ2FjeS10cnVuaworMTg3NDAgNzUxMjE1ZmEwZGE3ZjNjMzEyNjc0NjVmNGNkMDk2NzU4MWIyYTAxZCBsZWdhY3ktdHJ1bmsKKzE4NzQxIDkwOTkyYzgyZDQ2ZTlmY2ZmYzRmNWFmNDYwODExNGNiZjA0NmZiMzkgbGVnYWN5LXRydW5rCisxODc0MiAzZWExMGVlOTFlOWM1ZTVkNDk5Yjg0YjAwOThkMTJhNGRjZTNlYjFmIGxlZ2FjeS10cnVuaworMTg3NDMgNDE1NDYzNTMyNTVjN2YwYTliODQzNDVkZjEwYTQxMjhjNWM0ZjE3ZCBsZWdhY3ktdHJ1bmsKKzE4NzQ0IDE5MGQxNGI3MGMyN2I4ZjU1MzIwYzU5OTI0NDFiMTAxYzQ0N2U3M2YgbGVnYWN5LXRydW5rCisxODc0NSBmNDdkMWNiZmJlNzA2MzI0YjlhNmUzZDY4ZjNmNTIzOWQyMGVkZGQ2IGxlZ2FjeS10cnVuaworMTg3NDYgN2NkNDZmZjg5YmZjM2IwZWZmZTE4Yzg5NTRjNmZjOTZhZmVlMjY4OSBsZWdhY3ktdHJ1bmsKKzE4NzQ3IGU2YTBmZDU0YjYwNzJmYTg0YTI4ZWU1NjkwYTI4MGEzZWUyZmIzNmUgbGVnYWN5LXRydW5rCisxODc0OCBhNzAyNWYwNzA5YzViOTlmOTUwOGI4MjI2YzE5OTk1MDYxNDRhNWQzIGxlZ2FjeS10cnVuaworMTg3NDkgZjgzMTE1ZWRmMTZhZjZhZDZiNDdlODdmMGZlZWM5NWJhYzdiYzljMyBsZWdhY3ktdHJ1bmsKKzE4NzUwIGI1MzIwNjI5NWJkZmVmNzU0MjQyOTUyYzRhYzI0ZmQ5Mzk4MDJkMGYgbGVnYWN5LXRydW5rCisxODc1MSBiMGJhNDZiMTZlMDc1MDk0ZmIwNDRjOTVlYjkzN2Q1NDJhYTcyNGFmIGxlZ2FjeS10cnVuaworMTg3NTIgN2NiZTQ1ZDc5YWI1YzBiZDA2MjA3MjExNmYxN2IyMmQ3OTY4NzM5MCBsZWdhY3ktdHJ1bmsKKzE4NzUzIDE4YzRjN2NhOTNlYTA2YTE5Y2IzMzE3MWFiZTYxYmY1YjU4M2M4YmEgbGVnYWN5LXRydW5rCisxODc1NCA4ZWYzMWEwMzlhOTY0MGEwNTc1MWExMzY2MTJlYmU5OGI1OTY2NzMzIGxlZ2FjeS10cnVuaworMTg3NTUgNTUzYTMxNWY1OGU5MmZkMTMyZDE0ZDZlZDhkODdiN2NjNzU4Y2NhMiBsZWdhY3ktdHJ1bmsKKzE4NzU2IDFjNmIwZDNhNThlYWRiNTU2N2ZjY2RkYmQ4NjFmYzdkOTQ4NDRjNDUgbGVnYWN5LXRydW5rCisxODc1NyA4NzY0ZGZmYmFmMjM0ZTE5Njg3ZjIyOWZjODFkYTQzYjlkMzNlNzc0IGxlZ2FjeS10cnVuaworMTg3NTggYzg3ZTJhMmUzMzVkMGEyOTAyNjI1YjUyZTFkZGY0ZmNmMjExMGZiZiBsZWdhY3ktdHJ1bmsKKzE4NzU5IGM1NjhiYTlkYzE4MGEyY2EyMzA5MjRmNTE0YTAxMmQ5ODM2N2RjYmMgbGVnYWN5LXRydW5rCisxODc2MCA4MzY2ZmNmYjYwOTA0Y2ZiNWZhZjY4M2Q2MjQxYzk1MjhiZDMzYWVhIGxlZ2FjeS10cnVuaworMTg3NjEgMTUyODE0ZjZjZDExMzNlN2IzMmEyNzc2YWZhZTcyNGUzMzQ4ODIyZCBsZWdhY3ktdHJ1bmsKKzE4NzYyIDExMjllMTZhMTFkZmIzNTc5MTdkNWE2YThjMWQxNDI5MTk3MTFlMmUgbGVnYWN5LXRydW5rCisxODc2MyBjZDgzZjdhOWNkY2QxZjMxNTllNjM5MWJhMTZjMTA2YjYwZWMwYTFiIGxlZ2FjeS10cnVuaworMTg3NjQgZWVmMzIxYjZlNDFjZTY2M2M2ODZiN2ZiNjM5OGZhNmZkMzhkZTZlOSBsZWdhY3ktdHJ1bmsKKzE4NzY1IGM5ZGRiZTM0MDdmYTQ0MDBkYTlhY2NmZjRmMDdlNzVlMjliMzg4MWEgbGVnYWN5LXRydW5rCisxODc2NiAxNDk0NThhNTc0MGFmMWY1OTZkNWFlYjc4YjhiZmQxODVhMjNlNmM0IGxlZ2FjeS10cnVuaworMTg3NjcgMTNlNWViMDA2ZWIzMjFiYmZlNDkzOWMzMmE0MTc0YmRkYWFjNTBhZiBsZWdhY3ktdHJ1bmsKKzE4NzY4IDUwODkwZTM0NTRjOTUwYTg4ZWI0MzEzZTUwNGJhNmFlOGExMDQzYmMgbGVnYWN5LXRydW5rCisxODc2OSAxMzI1YmRlOTQ4OTZkZDVkZDM2Zjg1OWYxNTExNTJjM2ZkNDI0N2E3IGxlZ2FjeS10cnVuaworMTg3NzAgOThlOTVlMGY1YmVjNzQ1ZTllMDEwMjc5ZmU3ZTBhZjk2N2JlOTViYiBsZWdhY3ktdHJ1bmsKKzE4NzcxIDhkYjMxOWRkZmIzNzllN2NmNmE3Nzk4MjE3MzEwODY5MTZlZGU1MjkgbGVnYWN5LXRydW5rCisxODc3MiBmN2YzYmUzZDAwYjljOWRlZDZjNGZiNjEwMzRkMWVjZWVjNGIyY2FkIGxlZ2FjeS10cnVuaworMTg3NzMgYThlZGIzZjdmNGY4M2I5NWEwNTNiZWQwNTQxMzVjMTkzZjAxZjA2YyBsZWdhY3ktdHJ1bmsKKzE4Nzc0IGU4MjQ2NDQwYTgyNWM5NGRlYTlhZDI3OWZmNmY2YmJiZDMxNDgzNjYgbGVnYWN5LXRydW5rCisxODc3NSBkN2QxNjY1NTBjNDMzOWZhZWY5OGJiMjE5N2FjMjNlODdjMDg2MmViIGxlZ2FjeS10cnVuaworMTg3NzYgODhhMTI2N2EzMzk1ZWFmMTMzZTE5ODQ5MTViMDJkNmNmZWM4Njc0NiBsZWdhY3ktdHJ1bmsKKzE4Nzc3IDE4NTExZTExMjg3MDBkMWVkNWI4ZDY5MmU5YmZhZjgyYTBiZmVkNTMgbGVnYWN5LXRydW5rCisxODc3OCBhZTYzNmI4YWM0ODA4ZGY0YmJhOWNmYWJiOTQ4MjExMzM5NjNmZjBlIGxlZ2FjeS10cnVuaworMTg3NzkgYTM4MTkwZjcxYmYyYjVmNTc3YWI1MjMzZDBmZTUyNGU1MzgxZTMzMCBsZWdhY3ktdHJ1bmsKKzE4NzgwIGJhNmQ0YjUyMTgwYTc3ZmZkYzY2MjEzMGUyYjU2MjgyMGE3N2FiYTAgbGVnYWN5LXRydW5rCisxODc4MSBiZTI1N2E3NTUzYTIyNzE2NjNmYmQxMDVkM2YxNjY2ZDJlNDllMDc0IGxlZ2FjeS10cnVuaworMTg3ODIgMDA3ZjdmYWY2MmIyMDMxOGYyN2RhMGRiMWI0ODQxOTZkNDMzNTQ1YSBsZWdhY3ktdHJ1bmsKKzE4NzgzIDQ4OTY5MmU3OTE1MTQzMjE0MTQ4MGUxY2MwNGVlODYyZjAwZDM1NzYgbGVnYWN5LXRydW5rCisxODc4NCBmZGE5Zjg2ZGM0ZTg0NDU1ZGI5MzliNTZiNzAxMjBkYmNjODQxOGJhIGxlZ2FjeS10cnVuaworMTg3ODUgZmY2YzMwZThjYTczYzg2OWNmYmQxMmM0NDBmYzkwZGU5MGI0ZmU0MyBsZWdhY3ktdHJ1bmsKKzE4Nzg2IDcwMmVkOTk2NTIyOGJiMDdiNjBhN2Y3ZjBhNTBlNmE2MjZlMzI0YWQgbGVnYWN5LXRydW5rCisxODc4NyA5ZDViZWVkMGI5M2ZkZjM1YWNmMjExOTVmNTZhOWJmNGQ0ZDM3ZjJiIGxlZ2FjeS10cnVuaworMTg3ODggYWMxM2NlZjQyM2M4MzNmNWQxMjc5NzIzMjAzMTUxMzY5NDE1MjQ3OCBsZWdhY3ktdHJ1bmsKKzE4Nzg5IGM5NTlmNGIzZWZhMTFhZTQ5YTMxNzk2YjhhZGFlZTJiMjcxZWQ4NWIgbGVnYWN5LXRydW5rCisxODc5MCAxODcyZTYwOWE2MzRjMDJjMTQzYjE4NzA3OWM1YjUyYzQ0M2UxY2ZiIGxlZ2FjeS10cnVuaworMTg3OTEgYTQ4NDU5M2NkNDA3ZTFjNjYxNTc0YTA3MWZiMWZmYTE4Njc1M2Q4NCBsZWdhY3ktdHJ1bmsKKzE4NzkyIDE0YTI3YWNjNzU1YWI0MzQxZmI3N2NjOGM2NmQ5ZWU0MjI3MTBhMGIgbGVnYWN5LXRydW5rCisxODc5MyBkYzNiOWE1ODE2ODZjZDhjNGM0YTkyZGFiYjIxYTQ2ZTI0ODcyNzQ1IGxlZ2FjeS10cnVuaworMTg3OTQgMTg4MWI5Njg5ODliODhkYTczZGI4NDY1MDUzNzQ1NTA1NmQ2ZGQxZCBsZWdhY3ktdHJ1bmsKKzE4Nzk1IDM1YTQxOTRmOWVhZDliOTZmYzYzZjUyMjAxZWU3MjI1OTlmYTQzMzcgbGVnYWN5LXRydW5rCisxODc5NiBiMWE1ZWRiODBmNWNmY2VjYjViMzE2YmEyNjE0MTE4NzIzOWI0ZWNiIGxlZ2FjeS10cnVuaworMTg3OTcgMGIwZmNlMTRkNGU4ODI2YmZjNmJjYWIzMWRjOGI3NzQ5MTU3OWZlZCBsZWdhY3ktdHJ1bmsKKzE4Nzk4IGJlYzBmNjFjZmNkNTZlMDYzNGRiN2Y3ZTMxNDk4MmE0NGRjNzg2MjggbGVnYWN5LXRydW5rCisxODc5OSBkOWQwZGNiNzM1ZDdmN2FjNDU3Mjc1ZDFjMTUwN2EwMTRmOGQ2ZmJiIGxlZ2FjeS10cnVuaworMTg4MDAgOGZkMjIxYWVkMzU3NTliZjA5ZGViODM2MjA0OWFiNzJjZjRjMDgzNyBsZWdhY3ktdHJ1bmsKKzE4ODAxIDg2N2E0YTZlN2NkYTg3N2Y4N2I2Y2UwMGQzNzVmODI4YzZiNDllMWIgbGVnYWN5LXRydW5rCisxODgwMiBlYTQ2NGVkYTYxNTg0Yjg5ODk0MjMwNTg1ZDFhMzQ0NDZiMjczNGE4IGxlZ2FjeS10cnVuaworMTg4MDMgNWFiYWU3OTU3NDJlYTk2OTM3ZGZlYjFiZWQyNmU4NjNkMDA1MGUzNCBsZWdhY3ktdHJ1bmsKKzE4ODA0IDY0MzkwY2VhYWMxYWY5Y2Y5NjhmYzAwZmU0MzE2NzVmNThkOGY4NTkgbGVnYWN5LXRydW5rCisxODgwNSA1YjA2M2JhZWJlZjhjNmQ1N2NkOTRmZGYxZTA1MGUyMDhlYjUyMDg5IGxlZ2FjeS10cnVuaworMTg4MDYgZjQ2NGEwM2JlODVhZTZkOTEyYWFiZTBkNTUzNGZhMWFmODY3OWYxZCBsZWdhY3ktdHJ1bmsKKzE4ODA3IDJlZGY1ZWQzMDU4MzliMWNjZjI1NDExNzNlNjE4NDg3YTQ0NzRkMGMgbGVnYWN5LXRydW5rCisxODgwOCA0ZjYyMTcwODUxNGIxYWE1ZjIxYTA2MTMxMDQxMjU5ZWZiYzAwOWRjIGxlZ2FjeS10cnVuaworMTg4MDkgNmE4NTI0OGI0MzllYWEzZDkwOGVjMTNjNjJlMDk4YjAyZWE2YjUzNSBsZWdhY3ktdHJ1bmsKKzE4ODEwIDNiYzI0NDA0MjdkMzMxY2ZkMjE3YTkwZjY1ZDYzNmZmZTcwNDM4YjAgbGVnYWN5LXRydW5rCisxODgxMSA3NmFkMmE5YTNlNTM0ZTFjMDU2NGI0NjMzNTMzOWFkZjVhZGMyMGQ3IGxlZ2FjeS10cnVuaworMTg4MTIgZjJlMTM4OTViZGE3ZGY1MTgwNzcxNmZkMGFlMDFjZDBlYTVjMDliYiBsZWdhY3ktdHJ1bmsKKzE4ODEzIGRiMjZiNDNjOTI0ZjMwZGNhMDc0ZWJkYjczNTI0NTI3NTMxMTdlODYgbGVnYWN5LXRydW5rCisxODgxNCAxZjkyZDYzYjIwZjAyMzEwN2ZhNTllZWY0MDc5OTc4NGU4ZmY2MzI5IGxlZ2FjeS10cnVuaworMTg4MTUgODM0OWI0ZGZjNTFhZGU2M2QyNGZjOWMwYjI3MWYyMWZmMTdjZTUzMCBsZWdhY3ktdHJ1bmsKKzE4ODE2IDAxZWFlNDA4NTdkODNkYmU1OWFlZjgzOWE4NjgzZjllZGY0YTY3MzggbGVnYWN5LXRydW5rCisxODgxNyAyODNhMGIyYWFkYzVmMmFhOTRhYmYzZmE2Y2M2M2I3NDZlZWVjZmUzIGxlZ2FjeS10cnVuaworMTg4MTggODU3YWFkODQyYWU3ZDk5ZDEyODJmMzBkZmYwOGNlYWZjYzA5ODMzYiBsZWdhY3ktdHJ1bmsKKzE4ODE5IGMxYThkZWIxNWYwZTA2NmVlMWExMGExNzM0Mjc2MDcwYTBiZjMxY2IgbGVnYWN5LXRydW5rCisxODgyMCBjODIwNTU1MmRkZTFlYjY4ZGUwYzhiYjVmNjU2YTk0MWE5MDk4ZTA2IGxlZ2FjeS10cnVuaworMTg4MjEgZmRhM2ZmMTlkMWM0YTk2OWVhNjQ4NTRlZjI0M2RjYzVkYjdiMzIxMSBsZWdhY3ktdHJ1bmsKKzE4ODIyIGQ3M2IyMWRhZTI5YTJlZTg5ODkzZDA0YTk2NGYzOTJhYzBlYTRhYTAgbGVnYWN5LXRydW5rCisxODgyMyBjMDAwMGJkNjI1MmM2ODAzMjUwNGQxNGYyMTQ3MzVhODE2MTBiYjViIGxlZ2FjeS10cnVuaworMTg4MjQgZjE3NTFhYmY3NzFmZmM0YWNiNjExOTk2MzJjMmExOTc1ZWE5NDVkZCBsZWdhY3ktdHJ1bmsKKzE4ODI1IGNmMTdhM2NlNTM4NzQzZWQyM2FmMzJhZTZkMGNhYTVhNDcxNWVlNTcgbGVnYWN5LXRydW5rCisxODgyNiBkYzhhMzBiODg4N2M4MDczYmU1YTdkMjJkOWU4M2U3OGM1NTNiZTY0IGxlZ2FjeS10cnVuaworMTg4MjcgNWFiYjQ3MzA0YmM3Njg1ZTY5MGM1ZGUwODI5YTVmOTljYTIzM2RjMiBsZWdhY3ktdHJ1bmsKKzE4ODI4IGU1OWI4MzVhZDg5YTUyZWNmOTcxYzI0ZTVjYzFmMjY0ZGU5YjFhODkgbGVnYWN5LXRydW5rCisxODgyOSBkY2FlM2UwOGQ4NDg0ODU3M2MyZjJiYzk3NDQ0ZTc3ZDliM2M3ZjRmIGxlZ2FjeS10cnVuaworMTg4MzAgNWJiYTg1ZDQ5ZTVhZjhiNmMyOTRkNGFhMTlmZmJhMmE3OTEwNThkOSBsZWdhY3ktdHJ1bmsKKzE4ODMxIGUyMWRhODRkMGM2NWYwYTEwMjQyNGVkOGQ4NjhjNzc5NWQxNGQ0YmYgbGVnYWN5LXRydW5rCisxODgzMiA3NzAwOGYwN2NlMjVkYWEwM2M0NzI4MzdhNWFhZTY3N2E0YjEzNjY3IGxlZ2FjeS10cnVuaworMTg4MzMgZmY5Yzc5YmJjM2VlZDFiMjE1NmY3YTJlNzc3YjRkYzRkNjIzNzAxNiBsZWdhY3ktdHJ1bmsKKzE4ODM0IDg4OWI3YmFmOGJiYjRiM2M5ZGQyMDM2ZGQ1OGQ0YTlkYTc4NDE3NjMgbGVnYWN5LXRydW5rCisxODgzNSA3MjEzOTI2M2Y4YTc5NzUyZDIzMWU4ZDM5OWMwNDQ2YWQ1MDA5OTM2IGxlZ2FjeS10cnVuaworMTg4MzYgNWI5MTAzZTYyZmFjM2RhNGNmMjgyNWY5YzNhN2M2M2ZhZWRkYzkwYiBsZWdhY3ktdHJ1bmsKKzE4ODM3IDU0MjA1ODI4YjFlMTczYzZmOTJlOGYyZDlhMzM0MWRjODI2MGVmMmUgbGVnYWN5LXRydW5rCisxODgzOCA1MWZjNDUyNzZhNDMzZDdhMDViNTMzN2NkYmE2NzlhOWVkMzAyZjI2IGxlZ2FjeS10cnVuaworMTg4MzkgZjE2NTQ1ZjU4MzQ1NjA4YjVhZGNlODQzNzM0OTA3Y2M0MTBmMTIzNyBsZWdhY3ktdHJ1bmsKKzE4ODQwIDI0ZGFmYmIwZGI1OGY2NjJlNWUwZTNiNzIxMGFmZTg3NmFiNGM0ZTEgbGVnYWN5LXRydW5rCisxODg0MSBhMzZhNDkzMmUzOTkxMzVjMTU0MDRkNjU3NmFiOWZmZTViODI1ZDZhIGxlZ2FjeS10cnVuaworMTg4NDIgYWZhZTQwNjhkMmRkOTg4MjhmMjNjNjQzOTQ2ZDUyZDJkZDBjYjI4NCBsZWdhY3ktdHJ1bmsKKzE4ODQzIGQxY2I0MTM4ZmQzNGE0YTk2OTc1MjA3NGI3NzAyODVlYWRiY2Y1Y2MgbGVnYWN5LXRydW5rCisxODg0NCA5MTMwNGM0YzcyNTZmODNkNjAyNzVjYTM4Y2U1YTg1ODY2MDMwNWI2IGxlZ2FjeS10cnVuaworMTg4NDUgMmIyOTMxOWFlNjgxOTQwM2VmMDMzYzE4ZmNiMDFmZjNkZjM4MGM3YyBsZWdhY3ktdHJ1bmsKKzE4ODQ2IDZjMTc1MWY2YWZlMjNlMGRlYjQzNGI0NWFmYjRiNTQwMzI3NDlkZTIgbGVnYWN5LXRydW5rCisxODg0NyAxN2YyM2Y4Y2Q4Yzc3ZjJkNTk1OGM1MzNhZmE4MDJjMDQ4ZGI2MDA0IGxlZ2FjeS10cnVuaworMTg4NDggYmQ1YWVlNmI4MzkwZDRkYjIyMGYzOTNjNzFiMjQwZGEzYmVjZWI4ZCBsZWdhY3ktdHJ1bmsKKzE4ODQ5IDVmYjg2NTA3NTE5YzA5ZDlhZGVjY2MxZmEyYzU1NGU2OTQ3MmY2NjggbGVnYWN5LXRydW5rCisxODg1MCBhZTI5YTg5Yjc3YzNhMTI2NGRlODUzZTI4NzgzYzZjY2JhMDdiZWYwIGxlZ2FjeS10cnVuaworMTg4NTEgMWYxZWZmMDgxYTJhNzUxMmU4MjJkOTAwNGUzOGZiOGFmNTA5Y2YzYiBsZWdhY3ktdHJ1bmsKKzE4ODUyIDNmNGI2MDAyYzA3ZDMxM2RhNjM3M2M5YjViOTdlMWRiNmIxYmFkNjAgbGVnYWN5LXRydW5rCisxODg1MyA2MjA4NGNkOTU3YmQ2ZDRkMjQ4MWY1NjdhYmZhZDZkMjQxNGRjOTg2IGxlZ2FjeS10cnVuaworMTg4NTQgYWFjYmEzNzQ3NmQ0MjZlZDJjYTY1ZDJiOTg2YjJhN2IwMzg1ODI5MiBsZWdhY3ktdHJ1bmsKKzE4ODU1IGVhZTI2MTE3OTg2ZmE0YjhiMjIyNTgxOWI0NWU3NWY5MTA2MDg3MTkgbGVnYWN5LXRydW5rCisxODg1NiBmOWExNWE1ODNjNzlkOWE2MTkwNzVkMjNhZjg4NjBlNTdjZWYzOWQ0IGxlZ2FjeS10cnVuaworMTg4NTcgODgzMjViNzNhNmEzYjEyOTY2YThlM2NlODQ2ZjcwODRjM2I5NGY1NCBsZWdhY3ktdHJ1bmsKKzE4ODU4IGM1MDNmYTliMjY1ZTIyYmUyZTU1YWQ0YTVjZGQyOWVlOTcxNDA2MWQgbGVnYWN5LXRydW5rCisxODg1OSA2OTY1YzIwNWI2MDM2NGZlODhmZWI5NTM2YThlYTg0MmRiNTg4MDFjIGxlZ2FjeS10cnVuaworMTg4NjAgZjM5MGY0M2FjNGI2NDlhOWFhODMzZmJlYTJhMmM1OWI3YzBiNTFjMyBsZWdhY3ktdHJ1bmsKKzE4ODYxIDFkYzAyYjIyOTVhOTc0Njk1ZWM0YTZkNGFjMmQ5M2RiMjhkMmQ5MTUgbGVnYWN5LXRydW5rCisxODg2MiAzZjYxZWY3MmFlZjM1MDZlMjdjNGVkYTIwYjI1ZTJhY2M0NGZjNjUxIGxlZ2FjeS10cnVuaworMTg4NjMgZjM3NDA2NzRhYzViZjMyOTllZmY5NTZhZThmYTI5NzFhNjI4NzE2YSBsZWdhY3ktdHJ1bmsKKzE4ODY0IGUxZTc2ZmUzY2I1M2IxNTI1ZWNiNWM3YzA4NGJiN2NjOWE4ZDMzNWQgbGVnYWN5LXRydW5rCisxODg2NSBlOGVlMDc4NWM4NDY4NjhjZGRkNDg3M2M2MTVlZDcwMTk0YjYzNTBmIGxlZ2FjeS10cnVuaworMTg4NjYgOTI1MWNmNzBlZDFmOGI1ZWQ1YjNjMDJiY2UxNzIwZDlmZTBlNTg0MiBsZWdhY3ktdHJ1bmsKKzE4ODY3IGNlZDgwNDFlYjRlYTdkYTk1NTQ2YmQ3NDEzOTczNmMzNGJkODVmZjAgbGVnYWN5LXRydW5rCisxODg2OCA1MTgxMWQ3OGE5ZGFhNjRmZTU5YTNmYTVhNDZiNmMwZjI3NzVlNjZkIGxlZ2FjeS10cnVuaworMTg4NjkgMzIzNTJlMTIwYzM3OTQ4MmMxODgxMmQ5YWYyNjQ1NjEwNTFiYjE5OCBsZWdhY3ktdHJ1bmsKKzE4ODcwIDRjODU2YTE4MDQ1ODdiMDUxNzcwNTQ5YjhmNGRlYzA0NjU3Yjg5OTUgbGVnYWN5LXRydW5rCisxODg3MSAyZGY0NTc0ZDkwZmU2ZDg4ODQwY2U3YjhjYjQwNjhlNzBmZDM1ZTM4IGxlZ2FjeS10cnVuaworMTg4NzIgMzNmNWVlNmEwZWJlNzQ5ZmY0NWRmMmViZjgwNjk0NTYyMjY5Njg3OSBsZWdhY3ktdHJ1bmsKKzE4ODczIGQ5MGVlYWI1ZjlhNDE4ZWRmODMxMzI4MTQxOWY3NWFjNjNhZjc5MDYgbGVnYWN5LXRydW5rCisxODg3NCA4ZTRkZmI2ODE2ODliYTBjM2Y2ZWU0ZDk3OTEzMzFmMWE1NTlmYWEwIGxlZ2FjeS10cnVuaworMTg4NzUgOWJjNzU0NDEzYThjMmRhM2RiZDMwNWFjYjdmYzQ1YTA3YzIxMDRiYyBsZWdhY3ktdHJ1bmsKKzE4ODc2IDc1NGVjZDIxZmJlZjY1ZTJlZTE1NDk2NTc1YzQyYjlhYWFlYzIxZWMgbGVnYWN5LXRydW5rCisxODg3NyBjODMyZWY3MjQ5OWRiM2JkNTUyODFkZGI2ODFjMzRhZGMxMTQ2Y2E2IGxlZ2FjeS10cnVuaworMTg4NzggOGNhNmQ4Y2FmY2QzNzY3NGYwYzJmMThmNmExZDY0ZDcwY2ZkMTg5YiBsZWdhY3ktdHJ1bmsKKzE4ODc5IDcyMzRkN2MzYzI5Zjk3NWM5NDA0MDM4MjdhZTIzOGM4NDA3MmE0OWYgbGVnYWN5LXRydW5rCisxODg4MCAyMWU3YTE4ZGViZTY4MWI1NDUzZmJkYjA2NjY1NzFlMGUyNGM3NmU2IGxlZ2FjeS10cnVuaworMTg4ODEgNDZmNzcyYzZhMjAwM2NlOTIxMmQ3YmQ2NTMyYjNhMjlkMTg5MjJmZCBsZWdhY3ktdHJ1bmsKKzE4ODgyIDdjMTNiYzdjNDg1ZmE3ZTFhNDZmN2UzMGM2OTdlYzcxNjU0MDM2ODIgbGVnYWN5LXRydW5rCisxODg4MyBjZmFjMjI0NWEyYzcyZTExZjAwOWEzNDMxNzZlYTM4MWJhYzY5N2NkIGxlZ2FjeS10cnVuaworMTg4ODQgZDdmNTNmMTJkYmVlMWZmOTFmN2RmNzZhY2NjZjNmZTk2ZjZhOGNhZiBsZWdhY3ktdHJ1bmsKKzE4ODg1IGNlMGU0MWNlNzg3ZmZmOTNkNTBlNjUzNWUwZWY0YmIxMGE5MTg3OWMgbGVnYWN5LXRydW5rCisxODg4NiAwZjgxMjczNjZhM2Y3YmUyNzE3NDVlNTA3MjRmZDZlYmE5ZGQxNTgxIGxlZ2FjeS10cnVuaworMTg4ODcgNWRjMTc3M2M3ZjdjOTdlMDdlODI4M2Y3ZDk1MjNmMmM2NjJlZTZjOCBsZWdhY3ktdHJ1bmsKKzE4ODg4IDg2NTI2NjAxMWRmYTkyYTJiMWEwMGMxZWE5NjM0MzY1NGUyZjI1YWUgbGVnYWN5LXRydW5rCisxODg4OSA1OTg4Zjc2NDgwZDZkOWZhODc0MGFhZjFkMTBkZjZiOWE2OTQwMzY4IGxlZ2FjeS10cnVuaworMTg4OTAgODNkMzNmN2U5ZmQ0NTc0Nzg4ZWI3NmE5Nzc4ZmY1OWJkMWM4ZGEwMiBsZWdhY3ktdHJ1bmsKKzE4ODkxIDU1ZDg5YThmZTk2M2ZlYjE3YjExYzM1ZTM5MDEwOWRmMDNlOWVhMTcgbGVnYWN5LXRydW5rCisxODg5MiA4YmE4OTA5ZmI4MjMwNGVjYzk3ZTk2Y2Q3ZDJmZDI3YjkxNzgwYTlkIGxlZ2FjeS10cnVuaworMTg4OTMgMWJmNWQ4YjRjZWJlODhlZDA5MmYxNDk3OWRkZTJhMzk1MjQzNjBhMCBsZWdhY3ktdHJ1bmsKKzE4ODk0IDViYTQ1OTE2YWZjN2YwNzViMmU4YTMxYWJkMGM1MzJjZmM3ZDhkNDYgbGVnYWN5LXRydW5rCisxODg5NSA3NjE1NTExMjE4N2UwYWRkYjE1ZjM1ZmYwMWE3OTEyOWIyNzUxMGFkIGxlZ2FjeS10cnVuaworMTg4OTYgMTllZWUyZGIyYjE2Y2I1ODQ5OTQzY2IyZTE2ZDNkODFmMjc5Njc4NyBsZWdhY3ktdHJ1bmsKKzE4ODk3IDExNDRhZmI5NDAxOWNkYTA5ZmE5MjViNTRjOTk5MjcyYTkyZjdlNjUgbGVnYWN5LXRydW5rCisxODg5OCA3M2M0MWI0OWE5YjgwZWZlZDQ4Y2QxZTJkODg0ZTkxY2U2MGUzMzljIGxlZ2FjeS10cnVuaworMTg4OTkgYmEyOTVlMmM3M2VhNjA4YmRlMWQ4ZTU3ZDJjOWQ1MGRkYTI4ZDVlOSBsZWdhY3ktdHJ1bmsKKzE4OTAwIGI2ODYzYmE4ODk4OTYyZDU5YzlkODZiYzZlOWFkZjI3ZWI5YWM0YjEgbGVnYWN5LXRydW5rCisxODkwMSA0YTY2NThlMThmMzZmMTAwYzY5NGMxZTdkZTdmYTY4ODk5ZWVjMjI2IGxlZ2FjeS10cnVuaworMTg5MDIgNjNhMGE2ZDE4YTYwNDI1Njg0OGI1NThkYmE1YzUzNGNhMzBjMzQ0YSBsZWdhY3ktdHJ1bmsKKzE4OTAzIDMwZTMxYzJhYjYwZmE1OWJiODMwYjBkZDdmNDg3NzIyMmJkNzc4NmYgbGVnYWN5LXRydW5rCisxODkwNCA3OGJkOTdkODQxM2NjZjdiZjdiNDQzZjE1ZTYwZDQzMzMzOTgyNTEyIGxlZ2FjeS10cnVuaworMTg5MDUgOGJhYzA2NTkzOTNlYmRmZmRlNDc2NmI4NTM3OGUzYWY0NTNiZjcxOCBsZWdhY3ktdHJ1bmsKKzE4OTA2IDM1ZGZmNDcxMmM4ZTYyNWE2ZGQxNjQ5MzQ0ZjcwOWUyNmVlODRhMmYgbGVnYWN5LXRydW5rCisxODkwNyAzYTU2ZjY1MDk5YWE3OGRkYzg0MmViMGQyM2ZkN2Q5MzBjNTBkOWIyIGxlZ2FjeS10cnVuaworMTg5MDggNzkzN2JjYmJkZDI0YTA4ZDhmYTY0N2ViMjQ2MzMwZGZlZTIyMGIyZSBsZWdhY3ktdHJ1bmsKKzE4OTA5IGU1MGNmYTU0NzVmMzQyMDdjZTE5MWY3MWE3ZGVhMWQwNjVmNTM2YzAgbGVnYWN5LXRydW5rCisxODkxMCA3MGJiMTExOTA0NGFjZWVlYjMwN2Q1OWU1YmUxMjE3M2UzOWM5NGNiIGxlZ2FjeS10cnVuaworMTg5MTEgYmI4MDVjY2ViNDAzMDBhODQwM2U1NzMyYjM3MzNhZDJiODRlYjIxZCBsZWdhY3ktdHJ1bmsKKzE4OTEyIGU2MmQ1YWZmMGMzYWYxZDI0NDY1MzhkOGU5MTllYjZiNTU2NzQyNDIgbGVnYWN5LXRydW5rCisxODkxMyA0Nzk4ZGM3MzljMTlhMzlmNjQxMWJjOWZjN2UxY2U2YjgwMGQyYmY2IGxlZ2FjeS10cnVuaworMTg5MTQgNzVhMjFjMjMwYTI2ODE5ZjFlNzc3OGFkOGUzZjEyOTg5ZjdlYzgwOCBsZWdhY3ktdHJ1bmsKKzE4OTE1IGFjYTA1ZDc1ZDIzMmYxMDBkOTY4MDJhMmFkMWIyZGE0ZDliN2Y3ZWMgbGVnYWN5LXRydW5rCisxODkxNiA0Y2M5YTFlYmVhNjI4ZWQxODQ2ZDI0Nzk5ODkwYjEzOGJkYjZlODI4IGxlZ2FjeS10cnVuaworMTg5MTcgNjRmYWIwMDQ3YTE0MjkyYTcyMGE5NmZhNzVlNDRjZWE4MzIxNTdkYyBsZWdhY3ktdHJ1bmsKKzE4OTE4IDg4M2M3ZjYxNTc4OTA5OWM2NGU1N2JmYzE1MDUyZDQ0NTAxMWY5NTYgbGVnYWN5LXRydW5rCisxODkxOSBlMzI1OWU0YmVjNjA2MzkyZDc0MDM0NjAzNmJkZWExYTA4ZDQ5M2RmIGxlZ2FjeS10cnVuaworMTg5MjAgNGM0MGU5ZDc0YzVhYTVkMjA0NWI4MDk1MjcyNmEzYWE3YTk0ZDIyZiBsZWdhY3ktdHJ1bmsKKzE4OTIxIDU2NGJjMjQyZmYwZjA4M2ViMmI2YmM3MDUwNjdlZjM1YTA3ODQ4M2QgbGVnYWN5LXRydW5rCisxODkyMiA1OTZlZGY4MTI5YTA3ODBkNTY4NmI0MzQwYmU1Y2I4OTFhMGU2NjY5IGxlZ2FjeS10cnVuaworMTg5MjMgNmI2NDdhNWQ1YjdlMzkxZWU5MmIxN2NmMDNlYjMxMWE5YmQ0ZmI5OSBsZWdhY3ktdHJ1bmsKKzE4OTI0IGFmYzZmMTEzN2VhNDdjOTI0MjcwNjQ3ZGI2ODI0MjM4NTY1NmFlOTQgbGVnYWN5LXRydW5rCisxODkyNSA4MTI4NWY1NDVkNTQ2OTY4YWExZTMzYzkyMDc5ZDJlNWRlMjI2MjBjIGxlZ2FjeS10cnVuaworMTg5MjYgYTk3YWE5MjM4NzcxMTNjMTY1NjFkNTg2NzIwNGIyYzQxNWVmNTA2YyBsZWdhY3ktdHJ1bmsKKzE4OTI3IGMyOWRhMmMxNDQxN2Q4ZTA2OWVlM2U1NTc3NTZjYWUwNzYwYWE4ZmQgbGVnYWN5LXRydW5rCisxODkyOCBkOWI2OWQ3ODBhMTYwYjA1MmM1YmFjOGIzYWQzZGU0ZDMyZTc5YmZlIGxlZ2FjeS10cnVuaworMTg5MjkgZmUzNmFiNGIzZTk3MzI1NDNhZDI2ZmNmMTgxOWZmNDI1NWIwNWE1ZSBsZWdhY3ktdHJ1bmsKKzE4OTMwIDRkYjY2NDM4OTQxNTIwMmRiOWE5MWFlMWJkYmY2ZGQ3MDAzZDk1YTAgbGVnYWN5LXRydW5rCisxODkzMSA2OGE4MDNiNGQ2MTgyYWI0YzcyYTVlMGEyZmQxMGM1NjUxNzU2MmIxIGxlZ2FjeS10cnVuaworMTg5MzIgYjUzNDVlOTk1OTZiZWE5ODQ0YjcwNTdlMjUxMGQxMzU1ODNmM2JhOCBsZWdhY3ktdHJ1bmsKKzE4OTMzIGFmN2Q3OTE0ZmJmOTliY2IyNDNjYWMxN2RmMjFiYzJkOTIzMzlhY2EgbGVnYWN5LXRydW5rCisxODkzNCBiYWU4ODlmNDRjZDFmZGRkMjI1MTg2ZGU5MmJiOWYxMWVhOTRlNzY0IGxlZ2FjeS10cnVuaworMTg5MzUgNzEzZWQ2YzZiY2I1MzRmZDNmMGU1NDA4YTNmZDgxOGNjMzI3MzM1ZCBsZWdhY3ktdHJ1bmsKKzE4OTM2IDdlNTVmYTkzZjRkYmMyODc5MGU0YWMwMzBkNjY5YzRiNGZiYTAzN2YgbGVnYWN5LXRydW5rCisxODkzNyA1MGJiZTgxMWIzNDRjOTA2NTI1ZmM0YWZkMGMxMDkyNmFhOTU3OGQ4IGxlZ2FjeS10cnVuaworMTg5MzggZWFiZDAwOGIzNmVlN2ZlY2E3ZTJiZTg2NDg2ZmRmM2E5ZWMxNjE3NiBsZWdhY3ktdHJ1bmsKKzE4OTM5IDJkM2U2MDE3OWQ3YWZlYWQ3MTYwZTRjYzAzNzBiZTY1ZDk4YjM4NGIgbGVnYWN5LXRydW5rCisxODk0MCA5MWE2M2RmN2VlZTQxOGQxODcxNmI4NTFkNWNjNTE5OGIxNDQ2OWU1IGxlZ2FjeS10cnVuaworMTg5NDEgYzQzNTU5MDViMDQ0ZGUxMGQ1Mjk4Yzg5NWI4ZmM0ZTY0Y2I3NzFjYiBsZWdhY3ktdHJ1bmsKKzE4OTQyIDkzZjgzNjQzMmMyYmQyYTAyOGQxMjNhNTlkNTY4YTMzOTlhZDM1YzAgbGVnYWN5LXRydW5rCisxODk0MyAxYjZlNDU3ZDAzYWI2Y2I1ZTMyODNlZjI2NGE4MDg3OTUwOWYzNzIxIGxlZ2FjeS10cnVuaworMTg5NDQgZTJiMmIwNDNhYjRlZjk3NTUxMTdiYWQ1Mjk2Y2MwYThmNmZmNTlhZSBsZWdhY3ktdHJ1bmsKKzE4OTQ1IGFiZmIxMWY4ZTA1MWEwMTNjMzgyMmJiOWM0NWY0ZjM2ZTVjMmQyYjIgbGVnYWN5LXRydW5rCisxODk0NiA0YzMwN2ExMmRjYjk3NmE0NzE2NjZhNjUzMTU4ZTc3ODBmZTJjZDQ4IGxlZ2FjeS10cnVuaworMTg5NDcgZDU2YjQ5MjY1MzEwZmVhNGRhNjU1MTA3MjQwYmMwNzk1NzhjZGM3MiBsZWdhY3ktdHJ1bmsKKzE4OTQ4IDQ4MWMzZDUwYTRlNTU1N2M1YjVjNzE1Y2VhNDhmNjg1NWUyN2U4MjIgbGVnYWN5LXRydW5rCisxODk0OSAyNjMwMzViZWEzYWYyMTBlMjQ0ODk4OWM3NDIzMDQ0YjBmMjk5NDlhIGxlZ2FjeS10cnVuaworMTg5NTAgZGJhODM4MDlhNzc1MDc3MTMwMjM0MTdlMjRhMWZlNTZjMTM5M2UyNiBsZWdhY3ktdHJ1bmsKKzE4OTUxIDZlMTQzYWY4NDkyN2E4NmExNThiNWQzMTQ1MTQwZjI5MDhkZWZhZTMgbGVnYWN5LXRydW5rCisxODk1MiA4YWM0MGQ0OGE1ODE0YmY5NzFiYWZlMDExMTAwMzMwM2JmNWY0MzNkIGxlZ2FjeS10cnVuaworMTg5NTMgNDVjMDY1NjY4ZWE1YzhmOTljMTI4MWI3NmRmYTRlYzdjNTU4ODE0NyBsZWdhY3ktdHJ1bmsKKzE4OTU0IGYzZjZiNzU5OGJjNWEwNTIzNjI0NjdmOTEzYzIzYTE0NmZiOGNiNjcgbGVnYWN5LXRydW5rCisxODk1NSAwYzFhY2MxNTQ1NWYwYjRiMGUyOTNjZTEwZGVlODAzOWU3Y2FjODY3IGxlZ2FjeS10cnVuaworMTg5NTYgY2E0NmQzNDU0MjY5ZTY5ZDdhYWE1YTkzMGVkNWExYTZjNWY2ZWM0MiBsZWdhY3ktdHJ1bmsKKzE4OTU3IGFiMDJmMTc0MWEyOGM3Y2MxNzA3Y2RlMTYwN2FlMDg2OTIyNDBjODYgbGVnYWN5LXRydW5rCisxODk1OCBmYjY3MTIyZTVjMWVkYmFlN2I1MTFmNzM2ZjA5NjI2MmIzY2Q5YjBmIGxlZ2FjeS10cnVuaworMTg5NTkgZTM1MzZhYTdhZTRhYzRhNGExYTVlMWEzNmNjNjBlODBhZGFlYzZkZSBsZWdhY3ktdHJ1bmsKKzE4OTYwIGZiNzY3YTQ0OTYxZTcxOTI1OTc5YTNhM2ZiMjg5NjllZjlmMzkzMWMgbGVnYWN5LXRydW5rCisxODk2MSA5NjdhYmJlY2M0MDQxYTIyZTExMzI2NDIzZDkxZGMxNjc4ZjRlN2FhIGxlZ2FjeS10cnVuaworMTg5NjIgYWUyOTYyMjlmNDI2OTU3ZTY4YjVkNDRjOTg0MTkxNGMwYjA4YmNlNiBsZWdhY3ktdHJ1bmsKKzE4OTYzIDNmY2Q3ZjQ2NWYzNDlmY2I4ZjYzMjViZjBhZGE4MGUxZmYwOWMzYmQgbGVnYWN5LXRydW5rCisxODk2NCA3Y2I5NDBjMTU2NDUxZWUzZTUwZTI2NWE2ZWUxZTIwYTkwNzVjN2IzIGxlZ2FjeS10cnVuaworMTg5NjUgZTA0MThiMWY1Y2I3Y2IxNzBkMjI1OWY3ZmE1ODA3ZTczYzQ0NzFkNyBsZWdhY3ktdHJ1bmsKKzE4OTY2IGJhZTlhYmFkZWUyMmE0ODgzODA3ZGI2YTFmNmRjYTgyM2I0YTI1NGQgbGVnYWN5LXRydW5rCisxODk2NyBkNjk1NzFiZjc4NDI2N2JkZWQ3NDRmODdlNGI4NmVjMDMyZjUyYmViIGxlZ2FjeS10cnVuaworMTg5NjggMjhjNDE0ZGNiM2UxOGU1NDNmMDAwOTE2NDgyZGE5NDY3YjAxNTVlNSBsZWdhY3ktdHJ1bmsKKzE4OTY5IGRjMWM1NzcxNGIzZGQ0ZjI0M2Y2MGNmZmQxNDUyYTcwYWY1M2IyNGMgbGVnYWN5LXRydW5rCisxODk3MCAyOGQ4Y2NiZTIzN2Y2ODNkMjE1MTk2ODFhM2Q1MDFjZDI5MmFiZTg3IGxlZ2FjeS10cnVuaworMTg5NzEgNGQ0NTFjOTJiYzUwYjJkNjQ0NWE5ZjYxOGVjYzFhZDBiYjk2NWM5MSBsZWdhY3ktdHJ1bmsKKzE4OTcyIDE0MGQ0NWFhMDlkYzA5ZDYwMWU3OTRjYzYyOTUwMTU4OWYwYzVmOGMgbGVnYWN5LXRydW5rCisxODk3MyBlMDgyNGIzNTQ0ZmJlZTgxYjI2Mzc3MWRjZmJiY2U0MDU5ZWIyMTRhIGxlZ2FjeS10cnVuaworMTg5NzQgYTA1OWQxMzYwNWEwZTE3OTlhMmM0MDkwMjdhZDc5ZjgxMmExYTgzMSBsZWdhY3ktdHJ1bmsKKzE4OTc1IDcwNjY2YjI3YzFiMWFjZGQ3MTJmM2ZhYWU3MWE1ZGIwOGM3ZWE1NTggbGVnYWN5LXRydW5rCisxODk3NiA0NGZkMWE3Y2IyNzkzOWFmMWRlYTRmNDg0N2IxODcwZWY5MmZlM2IwIGxlZ2FjeS10cnVuaworMTg5NzcgM2UxMzUyNGVkODZjYzBlYzM0ZmE1MTlkN2M0MDZiOWE2OWY5MzQzOCBsZWdhY3ktdHJ1bmsKKzE4OTc4IDYwZmFjNjJmNmMxNWVhMDYwMDg2Y2U0YWViMzc1OGIzMmEwZGNlNWYgbGVnYWN5LXRydW5rCisxODk3OSA4ZTAxMmFlOWEwNDIzMjdhN2Q1MWY5OWE4MGVlNWRhMDUzYTBhNjFkIGxlZ2FjeS10cnVuaworMTg5ODAgNjQ1NDVjOTg2Yjk4YjI2ZjBkNDIyOGUwODMyNjE2ZTZkNmY3ODk4NiBsZWdhY3ktdHJ1bmsKKzE4OTgxIDkyYjIxNGJiNDI4ODQ4NTg0MTZkNWQ5MGRkY2NmNjM4ZjUxNGVjYjUgbGVnYWN5LXRydW5rCisxODk4MiBlMDUyM2E0MmM3OGNhZTkyZWFhZTg2NzAxNTM1MTA4YjU1YTA4N2NkIGxlZ2FjeS10cnVuaworMTg5ODMgZjZkOGExMzkyOWQ3MjcwNTI0NDUxNjMyZmY3NjliNjA2NzljYzRiOSBsZWdhY3ktdHJ1bmsKKzE4OTg0IDIzOWM3MzcyYzNkMzdmOGNlNGI2NDkxYjRjOTY1OTEyYTVkMmU2NjMgbGVnYWN5LXRydW5rCisxODk4NSBmOTk3ZGVkNGUyMTlmMzBhZGIwYjg5NDRiYTZiMzBhNTJmNzRkMmE0IGxlZ2FjeS10cnVuaworMTg5ODYgNDU0MGU0MThiODNhYjRmMTA4NTE2M2FlMWMwMTYzOWI4OTRkZmRlYyBsZWdhY3ktdHJ1bmsKKzE4OTg3IDU0OGU3YTU0MjkxODVmZjBhZWRkYWRjZmJmM2Q1NzQwMmMzZGFkZTAgbGVnYWN5LXRydW5rCisxODk4OCBmYmYwN2UxZjNjYTA3MWQ5MjcwZTcxMmI0MzJmN2QyZTAyMWU3OGNlIGxlZ2FjeS10cnVuaworMTg5ODkgNmYxZmQ4NTAwMzk4Y2E5MWQ5ZmQ5NmQ1YTk5OTg2YjAzMTM0ZTljMSBsZWdhY3ktdHJ1bmsKKzE4OTkwIGQwODY0OTAyYzhjN2Q4OTk0ZmVmNGU5NTEwMWQwNDNhMmQ0MjM5OWIgbGVnYWN5LXRydW5rCisxODk5MSA1NjM2OGQzNTA4ZGU1NjAyNDQ0OTBmODg1NTgxNTcwM2RlMjIyNThkIGxlZ2FjeS10cnVuaworMTg5OTIgYTllM2E1MjgxNWUyYmIzZTBlYmU3YmY1Y2ExODZhNTY5NTI1ZmQ4OCBsZWdhY3ktdHJ1bmsKKzE4OTkzIGFhMDNjMjBlODliN2FlZjkyZDg1YjNiNjFmZDZjY2Y0ZGQxYmViOWYgbGVnYWN5LXRydW5rCisxODk5NCA4ZjY1NTJjNzAzMGQwNTRmYTBlYWM4ZGRiMjQ1NmE5NWQ1MTg2MmUxIGxlZ2FjeS10cnVuaworMTg5OTUgZDQ4MDE4YjMzZTM1N2Y0OWZkYWJhMDA2MWI5YzNiMjc0MzViNDRlZSBsZWdhY3ktdHJ1bmsKKzE4OTk2IGEwNmI3M2FkMzcxZWE3NzYwZjVjNDMzYzM3MmVlMzQ5NTQ1YzI0MGQgbGVnYWN5LXRydW5rCisxODk5NyA1MTNlNTliM2I5YTkwYjQyNTBmNmZmMjhjZjRmM2FlNjc5NzI0MzNlIGxlZ2FjeS10cnVuaworMTg5OTggZmE5ZWYwZTJkYzA3ZGFkZTNlNzVhMmU3M2EzZjBkMDAwMzA3MmZmOCBsZWdhY3ktdHJ1bmsKKzE4OTk5IDg4M2NiMGUzMWJiMmIzZjUzYTJkYTgyNTk3NTVmMzI2ODBiZGMxYmIgbGVnYWN5LXRydW5rCisxOTAwMCA0OWI3YzFiYzYwMDQyOTNiZTIyZTRhMGEwY2IyODc5ODk3ZmY0YmEzIGxlZ2FjeS10cnVuaworMTkwMDEgZDk2Y2U5NzA4YzAwN2M3ZGQyOGYwZmVkOTVmYzQzMjNmNDMyNjFjNyBsZWdhY3ktdHJ1bmsKKzE5MDAyIDM4ZGNlYzA2NjE3YmRmYTFmNTJiOGFiMDI4YWJhZjc0MDViZGUxNTkgbGVnYWN5LXRydW5rCisxOTAwMyAwNThiZDFiZmYwMDgwZTU5YjAyYzUxYTUwZTA3MWU5N2NhNzZkNThlIGxlZ2FjeS10cnVuaworMTkwMDQgNDlmOTRhMmIxZGQ0MGNmOTE0ODg0MDM5MWRkZGFhYzExMGNlNDA3NCBsZWdhY3ktdHJ1bmsKKzE5MDA1IDZhYTk3MmRmODBkNTc2MmNmMjQ3YTAwMjNkZmMzODNlNjFjNWYyMDMgbGVnYWN5LXRydW5rCisxOTAwNiBkMTJiZGU0YjJhZTkyY2QxZWZkZDljNzEzMzhjMGRmMThmOGNiOWVmIGxlZ2FjeS10cnVuaworMTkwMDcgMjZlODMxYmIwZDZlYzY4OGM1MGE5ZDQ0ZDI0MTdhMGFiNTY5NDZhNiBsZWdhY3ktdHJ1bmsKKzE5MDA4IGNkOWRkZGQ4OTdhOTU1M2UyZjg2YjIyZTkwNWQzN2IzMmIzZWM5YjcgbGVnYWN5LXRydW5rCisxOTAwOSBmYmY4YWJlYzkzZDE5ZmMwMzQ3YWU3Y2RhMDNlMmQxYTIxYTAyNWNlIGxlZ2FjeS10cnVuaworMTkwMDkgYjYwODMxZWVhYjVhMDZkZDNjNWU4Mjk3YTk5ZTM5Mjk3YWE4Nzk0YiBsZWdhY3ktdHJ1bmsKKzE5MDExIDdkNzY1YzFkNDllMmYzMTU3YTZmMTg5Y2M1Nzg0ZDM2NTU5ODVkOTAgbGVnYWN5LXRydW5rCisxOTAxMiBjYTA1NTYwNmIzYTExYzE3NWIzNGY5ZTZmODMzODhmNjgxODgzOTkwIGxlZ2FjeS10cnVuaworMTkwMTMgNDk1MWY1YzQ4MTA1YmJkZGY3MjgzNGVlZTBjN2JlYzczYWFhMmU2ZCBsZWdhY3ktdHJ1bmsKKzE5MDE0IDg1ZTM1ZTY4ZTNkYjA1Nzg5NmU0NmRkMGIyZWU1YmZlMjg4ZTVlYWEgbGVnYWN5LXRydW5rCisxOTAxNSBkZjdiZmIzNGIyYTJlOGRkNjg4ZjEzMWMxMTBjMGI1ODYzYzQwZTNkIGxlZ2FjeS10cnVuaworMTkwMTYgM2VlNTU4NjM0MTY0ZGFmNDk5Zjc3NjU3MDM1YWQ4NGQ0ZTYxZmY4MiBsZWdhY3ktdHJ1bmsKKzE5MDE3IGIyYzg3OTVhMzQ0ODllYjIyZjY2OGNkYTZlZjY4Mzc3ZjkzY2E0M2IgbGVnYWN5LXRydW5rCisxOTAxOCA4M2MxZjE0NjgyYTI1NjFhZDdjNGY1ZTcyYjdkZmI2YzZkNTU3YjBmIGxlZ2FjeS10cnVuaworMTkwMTkgNjJiZjczOTk4Y2RiMjFiNDk0YzM2ZTEyODllZGQ2MGZkOTQ4NTQxYyBsZWdhY3ktdHJ1bmsKKzE5MDIwIDYzOTZjYzZiMWY3YTEyN2VkMjE3YTkxMzNiZjg0NGJhOTVlY2QyZDMgbGVnYWN5LXRydW5rCisxOTAyMSA2ODBkNmE1MGMyZTg0NGYxMTg4YThjZmFjNjFjZWQxN2JjNWZmOGRhIGxlZ2FjeS10cnVuaworMTkwMjIgNDY5MjBiNjBjZDMzNDNmMjYzMzU1NDk0NGE3Nzg4ZDQwZmIxM2M1YyBsZWdhY3ktdHJ1bmsKKzE5MDIzIGMwZGU3MTBmMzFjMDNmODAxOTQ1NWUxZGNhMzQzMjgzOGRjNzkxMGMgbGVnYWN5LXRydW5rCisxOTAyNCBmZDI3ODAzMWY0NDljYjg1MTc0NGZkYmM0NDc1NjUwNzUyZDAyZTZjIGxlZ2FjeS10cnVuaworMTkwMjUgNWY0MGZkYmRkMDJjNDE4ZDFhZTNlMWMyYmQ4YWUyNGQwYWEwZDdlMiBsZWdhY3ktdHJ1bmsKKzE5MDI2IDIyMDhhMDNkMDVhM2FkZDFmMzJjNTk2MGExMDMyZDcwNjMwODkxYjYgbGVnYWN5LXRydW5rCisxOTAyNyAwYTcyMDcwZWFiNmViYTYzMGM0ODhkYzc0NmYzODU5YzMxNDBiMjgyIGxlZ2FjeS10cnVuaworMTkwMjggMTA2NDZkMDkyYTUyZmIyZDM2MzNmZmUyZGQwYjE4MmY1YjQ2NzljMyBsZWdhY3ktdHJ1bmsKKzE5MDI5IDcxY2VhYmEzZjYxNTFiNDRmOWU3Y2I4MDhiMDQ2NjdjZjJkMzYyMTMgbGVnYWN5LXRydW5rCisxOTAzMCBhMGU1MjAzOGNjNGUxYzgxM2M2NGU4NDI3NDdjMzBjNmIxYjYxY2U2IGxlZ2FjeS10cnVuaworMTkwMzEgNzhjZGRiYTQ1ODA1MzJmYWE3N2JiNTU2YTM1MzI1YzdmNDVkZjllYSBsZWdhY3ktdHJ1bmsKKzE5MDMyIDJjN2RmNDU0OTZhNjI3NmU0NjM5YmQyNDIxNzIwM2EyMmMyMTRmMjUgbGVnYWN5LXRydW5rCisxOTAzMyA3YWU2YTA5ZDRkMDJkZWRkNWVjOWY2MTU4OTMwZDZiNTNjYTA3ODgwIGxlZ2FjeS10cnVuaworMTkwMzQgNzI1YjFiYWYzZGFiOTFjMmI0MzFlNTNiOWQ1OTdkZTAzZGU5MTIxZSBsZWdhY3ktdHJ1bmsKKzE5MDM1IGY3NWI4NjQ4OTlmYjE1MzE1ZDgxMDhlODRmODYzNjdhYmQ2NTlkNTAgbGVnYWN5LXRydW5rCisxOTAzNiAzMGM0YzRlOWUzZDU2NzdmNDQ4MDI5ZDY1MWI5MjRmYjljZTA5YWIxIGxlZ2FjeS10cnVuaworMTkwMzcgNDM4NDI4ZDFiZjI3MGU2OTcwZjJiNGFlNTYxZTQ4ZTY5ZGI0YzU2ZCBsZWdhY3ktdHJ1bmsKKzE5MDM4IDJkY2JjMWRmY2E5YzU0ZGU2MzA3MTg2NDZkN2NlMzc2OGU5YTZiNWQgbGVnYWN5LXRydW5rCisxOTAzOSAyNzc0OTgxODMwMzA3NDhhMGQ2MTk1MmZkZjk0NmYxNTU0N2Y1Yzk2IGxlZ2FjeS10cnVuaworMTkwNDAgZDBlOGUxOTU5YzBiZTQyZjEyMGI5ZDM4ODQxMDMzZDlkYmZkM2Y2NCBsZWdhY3ktdHJ1bmsKKzE5MDQxIDNhMGViNDViMmI1ZTAyNmRmZDM1MTc1MzY0NDUzNDU1OTYzNjRhNjcgbGVnYWN5LXRydW5rCisxOTA0MiA2ZjkyOTIwYzExNTAwOWRmNDVhMDIzODgyZjYzMWI3ZjQwMjE4MTk3IGxlZ2FjeS10cnVuaworMTkwNDMgYTU0YzI4MmJmYjYzZGEyYjdhNzhlNWU2YzlmYjRmMWZhYzUzMjQwNCBsZWdhY3ktdHJ1bmsKKzE5MDQ0IGI4ODJmNGM4NTY2NjhhZjMzMjc0ODc0MjU4ZTRmYzQ5NDI3ODM0YTMgbGVnYWN5LXRydW5rCisxOTA0NSBhMTMwZDVmN2U1OGFlYjIxOTY0ZGNlNjRhNDdkOWM0ZGVhMmZiMWMwIGxlZ2FjeS10cnVuaworMTkwNDYgZTI2ZjhkNmNmMjg4ZWYzNmUyYmI0NzRlZWNhMmZmZmVmMzY1YmQzMyBsZWdhY3ktdHJ1bmsKKzE5MDQ3IDExNWZkYzYxYWU5MTRiODJhOWM4ZmIxMzQzOGQwODEyZjI3ZDE2MjQgbGVnYWN5LXRydW5rCisxOTA0OCAwMWU4YTZkOGRhOGJiNjVlZmVmNTE1MTU5OTExMTE3ZWQ1ZDA5MmM5IGxlZ2FjeS10cnVuaworMTkwNDkgZDcyMThhYzk5YzA5YWIyY2VlNmRhNzRlYjAxN2JiZWEyZGZjYmY1YSBsZWdhY3ktdHJ1bmsKKzE5MDUwIDQ5OWUyMjllNmNlZGE4OTJlZjU3MjAzNWVhNTljZDY2YTRkYTFmYmMgbGVnYWN5LXRydW5rCisxOTA1MSA5OTFhMTdkNjEwMzYyNzY5Y2E0MjViY2I0N2ZlYmI2NWU0ZjI5MGEwIGxlZ2FjeS10cnVuaworMTkwNTIgYzEyZDg2MjNiMjk0OTBlMTIwYjkwMGRjYWU1MzQ5NDkxNTY4ZWQ3OCBsZWdhY3ktdHJ1bmsKKzE5MDUzIGMwMmFlN2FlMDExZDYyODJhYjIxOTNjYTM4ZGU3ZGY5M2E5YTlmZTIgbGVnYWN5LXRydW5rCisxOTA1NCA0ZmU2OWE5ZjhiMzA3NmI5ZWYxNzFmOTRmMTlmMjMwNWI1MzUwYmI2IGxlZ2FjeS10cnVuaworMTkwNTUgMWZmNGY4OTAxZDk2MDYwOTU1ZDI3YjY5ZTFmNTdkMTc3OGUyMjM3MCBsZWdhY3ktdHJ1bmsKKzE5MDU2IGY0YWMwNjBhODQxYjM5OWMwNzE2ZDc2ZTdmNDdkOGQ5MDY2M2E2MzIgbGVnYWN5LXRydW5rCisxOTA1NyAxYWE4MzQ5ZjY2OTU1ODA2YjAwNWQwNDdiYWVlYzA2NDUwODkyNzBhIGxlZ2FjeS10cnVuaworMTkwNTggNTcxMjYyMDI5ODg4MmFjMDY5NzFmMDlkY2NmOWJkMTkwYjU5MGQ2NSBsZWdhY3ktdHJ1bmsKKzE5MDU5IDFiYjc2NTE2ODNlNzQxMjg0YTE0MmM1NzNmNTgxYzg4NWVjZmI5N2YgbGVnYWN5LXRydW5rCisxOTA2MCAzMjc1NWI0NTYzNjlkODIyNjliNDczYTFhMWY0Mjg4MGU1ZGZiNWU4IGxlZ2FjeS10cnVuaworMTkwNjEgMDFlNWQzZTU4ODMzYWQ5ZTk5MGRmODdlNDMyZjZmN2IyMGY2OTY0MCBsZWdhY3ktdHJ1bmsKKzE5MDYyIDM0ODQ2NzBjMzdmMmU4ZGJmMjA2MDExYzNkOTllZmU0Y2JiMGNhOTggbGVnYWN5LXRydW5rCisxOTA2MyAzODY3OGNiMGIzY2RiOGRkNjIyMDdlZWUyZGMzMzM4MzBlMTNhM2I4IGxlZ2FjeS10cnVuaworMTkwNjQgMzk3YWU1M2YxYTQ4OTkwNmU1NjE1MTk3OWZlMzY0ZDYwMDYzZGM1NiBsZWdhY3ktdHJ1bmsKKzE5MDY1IDc0M2Q1MjA3NWJlNWVmY2JmMDc4MTkyYTZlYzhkMjg1MzAzMWE5ZDAgbGVnYWN5LXRydW5rCisxOTA2NiAyM2FiNTk5MjEyMmU4MTQwOGZmZTIzNDUyZDc1YTdkNzU5ZGUxYmI1IGxlZ2FjeS10cnVuaworMTkwNjcgYTNmNTdlZDc1N2U1MGE5YjU0OTY0MDJlNGRkNzExNzg2YjIzNTdiMCBsZWdhY3ktdHJ1bmsKKzE5MDY4IGE2NDUzY2ZiNzMzZjFkN2FmODM1ZmZmZDJhNmVhMjNhZjY2N2Y1ZGIgbGVnYWN5LXRydW5rCisxOTA2OSA3NDNmMTYzMzY4MjczYjNiNWQ1ZjQwMjk3ZTQ3MTk0MTNmNDdkODI3IGxlZ2FjeS10cnVuaworMTkwNzAgOGQ0YTI1YzgxYTliOTQzMGZiMDJkYTkwZDBkNTg4M2I1ZWRkY2RhOCBsZWdhY3ktdHJ1bmsKKzE5MDcxIDU1ZThjMDI2ZTFlM2ZmMjJjNWU2MjRiZTI1MGFkOWYzMjdlM2QzODMgbGVnYWN5LXRydW5rCisxOTA3MiAxZTQzYTI0NTZlOGZlNGNjZTUxZDUyYTQyYjJmZDQxYzdmYmFlMzI2IGxlZ2FjeS10cnVuaworMTkwNzMgOThiNjU0ODRhZGU2YTg0Y2U4MTFkYWJiOGIwZDMxM2Y1ZjFjODU1NyBsZWdhY3ktdHJ1bmsKKzE5MDc0IDFkZjQwZDc3MjRjY2RlNDA2NTdjMzhjNzQ1MThhOTM2NjQ1NTE1ZTUgbGVnYWN5LXRydW5rCisxOTA3NSBjMGY2MWQ0ZjVhMDQ4ODEyMzQ2OWZiM2NjMzBjNTU5NmY3YTc1MzgwIGxlZ2FjeS10cnVuaworMTkwNzYgNjM1ZTlkY2ZlZDJjYzY1ODQ4OTVjY2M0MjE3MDRiNmRjMzM0MzZkNSBsZWdhY3ktdHJ1bmsKKzE5MDc3IDcyODYwZWU5ZWFmMDg5MGZkMGUyYjZiYTU5MzAzNTIzMWMwYzllNmQgbGVnYWN5LXRydW5rCisxOTA3OCA1YWVhMTU4MTU0M2I0NDgyODUwYTViMjFhYTM4NWQ2Mzg3NmUwNjE2IGxlZ2FjeS10cnVuaworMTkwNzkgMzk3NDkxYWEyMGE2ZWJjYTdjOTI4OTFiNWU1ZGQ3MGYzN2Q4NTgyYyBsZWdhY3ktdHJ1bmsKKzE5MDgwIGE0ZTU0YmZkM2MyOWQ2NTY5MTFlYWFiOGJjYmRmMDk5MjkwNDBlNGUgbGVnYWN5LXRydW5rCisxOTA4MSAyNTlmNzlhMzZlMmYzNmQwYjJkZTFiNGJkYTgyNTA2NmQ0ZmViMWJjIGxlZ2FjeS10cnVuaworMTkwODIgMTg1ZGZjMTRhOTM0MmZiNzY1YmQxNTFiNGFkYzVlOWU4ZTYxOGUxMiBsZWdhY3ktdHJ1bmsKKzE5MDgzIDU4ODY5MWY4MDZmNGQwODFhMzQ0MTY3MDIxMzhjMWZkOGJmMzBlZTAgbGVnYWN5LXRydW5rCisxOTA4NCBhMGU0NmMzYmU2M2VmMmRmNGY0MWQ0NTk3MTc4NjA2YWU0OGM1ZWI2IGxlZ2FjeS10cnVuaworMTkwODUgNTQ1MzQxNDg4NzNlNmY5YzE3OTJjZTZlZmRkMmRjMmNhNTY2YWE4MyBsZWdhY3ktdHJ1bmsKKzE5MDg2IGQzMjkyZWU1YjZlMjRhMTVjNTQ1ZTBiMWI5MTEyYmU5YjgyZTczNDkgbGVnYWN5LXRydW5rCisxOTA4NyBlNTZkZDJkZDk5NjA3MmE3OTQ5Njg5ZTQ4N2EzNGZiMTUwNTEzYWIwIGxlZ2FjeS10cnVuaworMTkwODggYzdjNDA0YjM1ZjMzYTBkNTRjODJmNjc1ODk5ZjE5MGMxM2U1MGZkNyBsZWdhY3ktdHJ1bmsKKzE5MDg5IDhjNGRiOGI5YWY5YjkwZTUzNmJmYjUwMGU0NzBlNjIwNjJlMWY4ZjAgbGVnYWN5LXRydW5rCisxOTA5MCBhYmI5NDUwNjY0MzY3NTA4MDQ0Zjk0ZmRlYjAyZTRjNDEwYWYzMWJkIGxlZ2FjeS10cnVuaworMTkwOTEgZTMwMjU4NjQ1MmEzMDgzODBjYmE0OWU2MDYwMmQ4OGUxMDdlNzY2OSBsZWdhY3ktdHJ1bmsKKzE5MDkyIDM5YTE0YmM4YTBmNzkwYjg0OGJlZGZkM2M2ZDQ4N2I5OWFjZWE2Y2QgbGVnYWN5LXRydW5rCisxOTA5MyAzYTIwZGEyODkzYzQ3ZjU4YmQ2ZGE5YWEyNjVkZTdkNDg3NjJhOWEyIGxlZ2FjeS10cnVuaworMTkwOTQgZGYyZWQ1NjY0YmU1MTUyMmUxMmZkZjc4NTM2ZDdkYWRjMzdiMDNlNiBsZWdhY3ktdHJ1bmsKKzE5MDk1IDliZjQzOGM4ZjVjNzkzOGE1ZjVmNTUxN2NkMzI5NjA2MGI1MDFhMmIgbGVnYWN5LXRydW5rCisxOTA5NiA0MWVkNGQ4NmRiNzc3MjUwYzYyYzQxYmE2ZTNkMDg3MTJjZWVjNWNlIGxlZ2FjeS10cnVuaworMTkwOTcgNWM2MDE4NGY3ZjUyYWIxZDUyMjMzZWM5ZTM5ODM0OTIwYWZjOTc1NyBsZWdhY3ktdHJ1bmsKKzE5MDk4IGU1ZDU5YTlkYmZjMDI4Y2RlZjBlZDI2N2EyMzlhYzJjMDM1MjdiNGYgbGVnYWN5LXRydW5rCisxOTA5OSAzZmU3NTkyNGVhYzEwZGNhYTk3MzlhNjMyMzRlZTJiNzNiMTk1M2UzIGxlZ2FjeS10cnVuaworMTkxMDAgYjRkNGYyMDIxMTE0NGE5YzhlMjgwMzFmNDhkZmEyZWE1MGM3ZDExMyBsZWdhY3ktdHJ1bmsKKzE5MTAxIDJmZjgyNjMxOGU4OWVkZmJkMGQ3NmVhN2NhNTgyNTRkYTE0YzQzNjEgbGVnYWN5LXRydW5rCisxOTEwMiA3ZjYxOGJjMTM5ODExMDkyMmM1NTU2ZDZjYmRlM2I1M2QwOWQyZmJjIGxlZ2FjeS10cnVuaworMTkxMDMgMDViZTVmODVmM2JmNjA4ZDZiOWQ5Mjg1NzFiNWEzZGZkOGU5ZjE1ZCBsZWdhY3ktdHJ1bmsKKzE5MTA0IDNjNWYwOTQyMmI2OWE5ZmQ4NzIzMGJlNzRlZTljNWY3MDIxYzRiZDMgbGVnYWN5LXRydW5rCisxOTEwNSA5ZmQ5NmUyNDU1YjYyYzc3NTdmMWUwZTE3ZGRlNWQ0NTk2MGMwZmI1IGxlZ2FjeS10cnVuaworMTkxMDYgZmEyMDljYzg0Y2FjZTNlYzhkM2M5ODgzNzliN2YxNjg1ZTQxNzY4NSBsZWdhY3ktdHJ1bmsKKzE5MTA3IDA5NzM2YWVhYjgzMTFmZjIzN2RiYTVlYzAyNDVhNjNhMjJhNzBhOWQgbGVnYWN5LXRydW5rCisxOTEwOCBjNDFkZDIyMDRiOWM4ZTBiMzAzZDEyMjE4MGMxN2NkNWRhMDUyOGQ4IGxlZ2FjeS10cnVuaworMTkxMDkgYTY4YzcwMzJjZGYyOTlmMmIzZWY4MTM4ZGNhN2ZhNDU1MjNkMjlmNCBsZWdhY3ktdHJ1bmsKKzE5MTEwIDE0MGM1Mjg1OGY2NWU0MDg4YWIxNWZmNTc5NmFlZGQ5N2EzMDNmYmUgbGVnYWN5LXRydW5rCisxOTExMSBmYTI3MWQ3YjJhNjJiY2FmZGY5MzZmNGMxNmM5NjlkODUyM2I5MjU2IGxlZ2FjeS10cnVuaworMTkxMTIgYWFiODcxNjM1ZmZhZTQ5Yjg5MDllZjY2MGVkYjI2NGY2MDMwYWVkOCBsZWdhY3ktdHJ1bmsKKzE5MTEzIGJkOGQyOThhZjg4MGMyYTFlMDJjMThlZDc5OWYyMzQ4NmE1MDJlMWYgbGVnYWN5LXRydW5rCisxOTExNCAzZjg5ZTcyNDAwODYwNTY4Mzk0MTNlMzlmMDRhN2M4YmI1Y2MyMjMzIGxlZ2FjeS10cnVuaworMTkxMTUgNGI1MWQwNjliZTM1MGVkOWE1NDA0ZjAyNDc2Mzk2OWFjYmYwMDJhNiBsZWdhY3ktdHJ1bmsKKzE5MTE2IGMxY2Y1ZDJjMjZjYWU3MGUzMGM4YzM1ZTI4NDZiMWUxYjAwMTE4ZTQgbGVnYWN5LXRydW5rCisxOTExNyBmODA0NTNlNDQ1YjVhNDQxNThlZDk2ODYyYWQwMmM1YWJlYjEwZGFiIGxlZ2FjeS10cnVuaworMTkxMTggMDcwNzE4NzJkZTNlMTE0YjAxMjZjM2UyN2FiN2U2ZjdlOTUwNjIwMCBsZWdhY3ktdHJ1bmsKKzE5MTE5IGZkOGM3MjAzMjUxZmYzN2RiYjM5N2Y3ZDQyM2FlNDFmMTZhMDNjNjggbGVnYWN5LXRydW5rCisxOTEyMCBmNDk0Y2EwYTJiMzQ2ZmY2OGZhYWNjYzY1MDhiZWEyODAyZGE5YTA4IGxlZ2FjeS10cnVuaworMTkxMjEgOTM4NmIzMmJmZjFkYWI0MjRkMGI1NTRmNjk4NjE5YmNiNTQzYThmYSBsZWdhY3ktdHJ1bmsKKzE5MTIyIDIwZWY4NDllYzg3N2M3MmU1NGI2YTQ0YmY1OGQ0NWFlM2FkNDM1MWEgbGVnYWN5LXRydW5rCisxOTEyMyBiZGZjNmYxZmE0NzVjZTY3MzEzZDkzZGMxZTMzYWUyYmNlYmFmNTNkIGxlZ2FjeS10cnVuaworMTkxMjQgYTcwNGVhNWVjZWI2YjNkMWFmYzFmYWRjZGM4ODU0NDFjZWRmNzg0YSBsZWdhY3ktdHJ1bmsKKzE5MTI1IDc2M2EzZDQyYmFlZGYxNjdkMjkyNTkwNzQ4YWYzYTA2NzEyZDMyZjYgbGVnYWN5LXRydW5rCisxOTEyNiBlMTg4ODllMzk0OWMwNjlmMWMzNDFlMGU3N2MyYjY0NjUzYjFmY2M1IGxlZ2FjeS10cnVuaworMTkxMjcgZDYxNGI2ZTlmYjRlZDk0ZTFmMDBiNzEwOTBlOTQxYzEzOWM3YWNlMiBsZWdhY3ktdHJ1bmsKKzE5MTI4IDk5ZjM0NjczODQxNWEwNmIzMmZiN2E0YmIxMTg5MDE3OWNkMTg5MmIgbGVnYWN5LXRydW5rCisxOTEyOSA2MGVlMzM4ZjBkNjY2ZmRlZmUwMDM2MDIxNTMxOTY2ZmNjNjFmOTBmIGxlZ2FjeS10cnVuaworMTkxMzAgYzJjZTliMmU1YmI0MjNhYWVlZGIwZjFkOTU0OTg4YTE5ZTE5N2EwYiBsZWdhY3ktdHJ1bmsKKzE5MTMxIDc3OTU4MjY2YzdkN2FhYmZlYzUzOWZiYjcxZTQ1NDJmNmQ2ZTBkZWUgbGVnYWN5LXRydW5rCisxOTEzMiA5MDI1NWQ0NDFjZDVmNjIxZDA4NWE0OGUzYmUxNjcyNGZlZTMyMjliIGxlZ2FjeS10cnVuaworMTkxMzMgN2VmMjM4MmY2MTIzYTA2NWY5MDc2MjEwZGE3YzEyNDU5M2Y5ZWNmMSBsZWdhY3ktdHJ1bmsKKzE5MTM0IDgzNWU5ZGQ1NGJmYjhhYzYzZmVhZTM5M2Q4ZTFmNGNiZmUxZTg4NDkgbGVnYWN5LXRydW5rCisxOTEzNSBjODVjYThjNjIxMjljYzgxMTRjNTNhNzA0MWYzYWNiMWJhNmU0OTc3IGxlZ2FjeS10cnVuaworMTkxMzYgMmFlYjNhMzRjN2FjZGIzM2ZmYTVmOTg3ZTQ1ZjdiMmJjNmE2YWMzOSBsZWdhY3ktdHJ1bmsKKzE5MTM3IDljZTUxNDk4MjVmNmFlYWJkMGQ3Y2I0NjkwZjYwMmZkNWIwYTg0YmYgbGVnYWN5LXRydW5rCisxOTEzOCBjYTg1NTQ3ZmNiNWU0MjRmNTNiZjZjNGQ0NDZlYzBjNzk1OTY2MTc2IGxlZ2FjeS10cnVuaworMTkxMzkgMTZlMjE3NzJjYTNmMTQ2MjAyZGFkNzU5OWFlZDE5YzQyNTQ5YmIwMCBsZWdhY3ktdHJ1bmsKKzE5MTQwIGI0NmY5NTZhYmNmODUyZjU2MGFlOTkzNDBlNDJmZTFiMWU4YWIzNzAgbGVnYWN5LXRydW5rCisxOTE0MSA3ODVjZTYxOTY3OTYxNDI4MzQzMGRmNDkzMGRmZjA2MjRjZmUzNzA0IGxlZ2FjeS10cnVuaworMTkxNDIgOGI4MWE3ZTU4YTFkMTljOGJmNmY5NWFiZjQ1ODc4Mjc1NWY3ZjM2ZSBsZWdhY3ktdHJ1bmsKKzE5MTQzIDJhYmNiZTQ0MjcxYWJiMDc2MzQ1MzcyODU5Y2M1MThiYzM1ZjIzMWUgbGVnYWN5LXRydW5rCisxOTE0NCBlYTRhMmYzYjI2NmUwMTg2NWZkNjRhMzI1ODI2NjRiOGNmYjc4YjQ5IGxlZ2FjeS10cnVuaworMTkxNDUgNjVjNmEyOTk4YjFiZGVkMGM5OTY1M2Q2MjIwNzMyMjVmZTc5NDMyZCBsZWdhY3ktdHJ1bmsKKzE5MTQ2IGEwNTU4ZWJmNjYxMjc1M2UwMzg4YjZkN2FlM2MwYzA0NjU1ZGE0NTggbGVnYWN5LXRydW5rCisxOTE0NyAxNWUwYzEwMDkyYmI0ZGIwYWQ2NzMyNzJmYTI5NzMxMjhhMWM5ODYyIGxlZ2FjeS10cnVuaworMTkxNDggMjBlM2MwZDVlNDZmZDM0M2UxOGYxMWM2MGMzYWU1ZmZkYWE2YTE0OSBsZWdhY3ktdHJ1bmsKKzE5MTQ5IDRiNzI4ODhjOWUyZjdlZGQzMzY2OTNmODVmMmY2NmEzMmNlMzljYmIgbGVnYWN5LXRydW5rCisxOTE1MCBjMGEyNDQxYTQ0NTRiZGYzMGRhMWQyNzg0ZGJjMmE0YjFhZTkzZThhIGxlZ2FjeS10cnVuaworMTkxNTEgOTNiYTMzZGMzMzNhZjIyYzdhYWRlZGM3YjBiMTFjYjEwNmI4MTVmNyBsZWdhY3ktdHJ1bmsKKzE5MTUyIDdhMjUxNDQwY2U2N2Q2ODk0YWJmMmZiZGU4YjMyNmI2MmY2MDJjYTEgbGVnYWN5LXRydW5rCisxOTE1MyAwOTQwM2M1Y2RhZmJjMDhhNjBiMjY4NTZmMWQ0MjgwZGYzYjY2YWNjIGxlZ2FjeS10cnVuaworMTkxNTQgMDUwMWMyYTEwMzE1ZmM0ZjBkNGMxNDg1M2VjMTA2NDI2MzdjZjJmNiBsZWdhY3ktdHJ1bmsKKzE5MTU1IDI3YTRhMTdhZWMyNTE0Y2Q4ODY0Njc5OTcyOWU5NTZkMTg1ZjUzZjcgbGVnYWN5LXRydW5rCisxOTE1NiAyOGM2ZWM1ODFhYTY5NjgyMmI5OWUzY2YyOTJiYWEzMTI1M2Q2Yjc1IGxlZ2FjeS10cnVuaworMTkxNTcgN2IzNDc2YzEzODJlYmNiZmNhNWRkNzc3MTRjZGUwOTVjYWY1NjcyMiBsZWdhY3ktdHJ1bmsKKzE5MTU4IGFiOTliZDM5NDcwY2UzOTFiYWMyZjhjY2M2MDc5OTk5NzEzYTEwZDUgbGVnYWN5LXRydW5rCisxOTE1OSBkMGQ4YzlkNTJmMTg0OTlkMGFhZGVjZWIwMTFhNDAyODFhNDY2Y2RhIGxlZ2FjeS10cnVuaworMTkxNjAgMmRiMjk5Mzk1ODBkYmE3OGQ1MDZhMzIxYTA2MmMyYTUyNDA5MmRmNCBsZWdhY3ktdHJ1bmsKKzE5MTYxIGUxZTBlOTk2YjAwMzVkYTIyZDlkYjU2ZTg0YmYwNjJlMGE4ZTE3ZWEgbGVnYWN5LXRydW5rCisxOTE2MiAyNmMxZmZmZGZmZjJmMDhlNzRjOWY0Y2FiYzAzZjM2NGI3MWMzNmEwIGxlZ2FjeS10cnVuaworMTkxNjMgYmRmYjgxZDNjNjEwZWFkOGYzOWRjNmE1Mzk2NzNlYzYxYTNiNzg1MiBsZWdhY3ktdHJ1bmsKKzE5MTY0IDNhMWU2NThlNDQ3NDZjMDIxNmM3MGFmNmZkNTUyOWE5ZTg3OTIxNDkgbGVnYWN5LXRydW5rCisxOTE2NSBlN2Y0MTNkNGVlMTVhYjg2ZDQ2NGExNWJlM2ZjN2RhZDFkNDJkOTAwIGxlZ2FjeS10cnVuaworMTkxNjYgZmMzZjUwNTk0NWQ0Y2QwODJkNjUwNmNhZTMxODczMjA2MzE3NGFiZSBsZWdhY3ktdHJ1bmsKKzE5MTY3IGZiMGY1NmJiMTQwNTk5NzNlNTY0NTk2ZDg2ODljZGE4N2Q2MmMzMWQgbGVnYWN5LXRydW5rCisxOTE2OCA4ZTg3M2ZhNTQ1MGViZjU2YmU0MDZmMTk2YTU4ZDRlYTg4NjVkYTk3IGxlZ2FjeS10cnVuaworMTkxNjkgZjg0ZjhkODFlMzJjZTcwNzExMmIzODY1MDlkOTk5NzNiNDI2MzE3MSBsZWdhY3ktdHJ1bmsKKzE5MTcwIDhlNjZlYTYwMjYxNmRhOGZlZTkxOGFhNzExOTBkNDg3YzRhNzg1NjkgbGVnYWN5LXRydW5rCisxOTE3MSA5NjYzZDVlYmI2NDZjMTIyYzhjMWI1Mzk3NzU0NDcwNzM5NWY1ODI2IGxlZ2FjeS10cnVuaworMTkxNzIgNTRiMGFlZjY1MGM1MjlkMDc2ZTg3ODA5MWY3NzA2OWEwZDY0ZTg0YiBsZWdhY3ktdHJ1bmsKKzE5MTczIDhjNDFmMzg2MWFhZGRjY2FmMmQwZjJiYWIxNWY4ZTdmNDlkODcxOTIgbGVnYWN5LXRydW5rCisxOTE3NCBiODAxODE0NWUyYTVlNzk1MjZiNTY5ZTcyYTBmN2Q3NTczZTU3MWI2IGxlZ2FjeS10cnVuaworMTkxNzUgNjYyYWRmMDNlNGZhMmY2NmRhNmY4ODBhODFjMDcxMDI1YzU4YTJlZiBsZWdhY3ktdHJ1bmsKKzE5MTc2IDI0ZTQ1N2JhMWY5MjZjNWI0Yzc0YzhjMjIxNjZmOGIwNDM2MDY1ZTAgbGVnYWN5LXRydW5rCisxOTE3NyAyOGM2MGVmNDhmYTNhMWNiYTFlMTkzODM5OGZmYmQ0MmUyZThhMjAwIGxlZ2FjeS10cnVuaworMTkxNzggNzllNzJjZTIyYTQzMGYwMWEwNGJiZmRhNTdmZGQyMmY5YjVmYzBlZiBsZWdhY3ktdHJ1bmsKKzE5MTc5IDg2MWJmOGRjZmI1OGI4NjY3ZDg1ZTk2YTIwNzMyODIzOTAxZmZlODIgbGVnYWN5LXRydW5rCisxOTE4MCAxN2NhYzcwY2FlNzY2MjE3MGEyYTk1OGU0N2VjZGVmNjM2ZWY2ZTM1IGxlZ2FjeS10cnVuaworMTkxODEgYjMzNWQ0ZGQyMjNmMzg4NGE2NzZiYzQwMDI2YmU5NzkxMTQ2YmU1ZSBsZWdhY3ktdHJ1bmsKKzE5MTgyIDBlZmE2Yzk3YTRmYWI1NjU4NmFkNDdjMDBjOWViNTU2OTNjNzVlZDQgbGVnYWN5LXRydW5rCisxOTE4MyBhNThjOTkzZDkyMzQ1NzJmODI5ZDg1OGE0ZTgyYjNkNzc1ZWZhZmQ0IGxlZ2FjeS10cnVuaworMTkxODQgOTI1YjIzM2YwMmVhMGRjZTE5NDQ2OTY0NzlkZGYxZDRlNjIzNmY3ZCBsZWdhY3ktdHJ1bmsKKzE5MTg1IGFmZDA5MzBmODY4Mzk5YWViMjUwZmU0ZDJkMzE2MGEzYjI1NGNmZGQgbGVnYWN5LXRydW5rCisxOTE4NiA5ZDU3MjAzODIwNmUwMjc2MDg5NTYzMTNiZjdlOTFjZWEzMDk0ZmUzIGxlZ2FjeS10cnVuaworMTkxODcgMzMwMjM5NTc1ZTFlNjc1N2ZjZmU3N2E2N2ZkZjRhZTNiNmYyYWUyMyBsZWdhY3ktdHJ1bmsKKzE5MTg4IGZmZDI1MWRmYWJmNDJhZDgyYTk3MjA2NDVmMzI5YzE5ZWViYzAwOWIgbGVnYWN5LXRydW5rCisxOTE4OSA5M2FmYjJiYjIyZWQwOWJhZjhmOTYwNzA0ODAzNjUxNzJkODhlMWI1IGxlZ2FjeS10cnVuaworMTkxOTAgYWJkMzgzZjE5MDVjODFlY2U5MGY0ZTIyY2UzZGU0MThjNWM1YjVjYiBsZWdhY3ktdHJ1bmsKKzE5MTkxIDRkNDI0ZDEzOTdiMmQ4Yjk4NTQ3ODM1NzllYmYzMjBkNTcxMjE1YzIgbGVnYWN5LXRydW5rCisxOTE5MiBiZTA2YmZjYmU1MWEyZWFjNTAyNThiNzcyY2Y0MjU2YWMyN2VhZmEzIGxlZ2FjeS10cnVuaworMTkxOTMgMjRlOGM2OWNkMzRkYTU0YTU4Mjk3NzAzM2EwMGI4MmFjZTNiOTBjNCBsZWdhY3ktdHJ1bmsKKzE5MTk0IGJhY2JiNDVmZTg0NDhmZTIzNjdmNDUyMjEwZDQ3YTgxNzAyNWQxNzAgbGVnYWN5LXRydW5rCisxOTE5NSAwMWQ1YjgwYTNjMDM4MjM3NWRmOTQ2NDhhNzQ2Y2NiODkzOGRlZjNjIGxlZ2FjeS10cnVuaworMTkxOTYgMzZkYjE5MzYwOGJlZTE1NDViN2Y5NTk0MTU4ODEyN2NkY2ZjZjNlMSBsZWdhY3ktdHJ1bmsKKzE5MTk3IDI4NTJlYWRiN2RhYmE1MTJjYjMxZWRjYzQzMjY2MzUyYmQ0ODhkNjAgbGVnYWN5LXRydW5rCisxOTE5OCAyZDhlMDI5MDJkNjdlOTg4OTcxNGQ5MDAzYWFmZTlmMjZhMGZkNmY5IGxlZ2FjeS10cnVuaworMTkxOTkgZmE5M2JkMWQ4NzA5ZDhjYmJkY2JlMDRiYjk3YzA3NmE3YjA5MjhkNiBsZWdhY3ktdHJ1bmsKKzE5MjAwIDY4N2Y5M2RkZjNkNzM0M2JhMDNiY2EyM2NkZDk5YTkzOGJkODJlNDkgbGVnYWN5LXRydW5rCisxOTIwMSA2NTQ5ODJhNDY2MDc3NjllZWIyMGY1Y2FkNDgyMWM5ODZiOGYxZjBhIGxlZ2FjeS10cnVuaworMTkyMDIgMjA3MDc0NTg4YjlmZGUwNGQxZDZjMWYzMDQ1NmUyMDk0YjRmZmU1OCBsZWdhY3ktdHJ1bmsKKzE5MjAzIGE0YmJhM2ViMzRjMWYxNzM2ZTI5MzU2NjM1ZGUxYWQzNTAzNzgwMzUgbGVnYWN5LXRydW5rCisxOTIwNCAwNWE5MTNmZjk3YTZlMjEwZjZhMjAxOTg3Yjk1OTQ3MWZjYWM0MzNhIGxlZ2FjeS10cnVuaworMTkyMDUgZjg3YTQxYjk2ZTI4Y2M5OGQxMDE0NGU0YjBhZTg0NmQ3NmJjZGY1ZSBsZWdhY3ktdHJ1bmsKKzE5MjA2IGE4ZDg4NTdhYjBmMWVjZDViYWE2MGNlOWY1NTliMzAyOGE4NDUzM2UgbGVnYWN5LXRydW5rCisxOTIwNyAwY2I0Nzk1NTM0NGU0NDRlMDExYWIzNzkyNTBkZGNhYzA3NmFkYmVjIGxlZ2FjeS10cnVuaworMTkyMDggOTBlZGU1MTY1ZDFmM2MxNWVhMDhhMmI4Nzg4YjMyN2E1MTcwYWIwNyBsZWdhY3ktdHJ1bmsKKzE5MjA5IDZmMWMzN2U4MTE2MDViZmEwNTExNWNjZWY2N2QyOTliZTgxZjE4OGYgbGVnYWN5LXRydW5rCisxOTIxMCA2ZGYxMjczMmUyNjJmM2M3ODNiMmMwNjlhN2RkNmNiZWFiOGI4ZWI1IGxlZ2FjeS10cnVuaworMTkyMTEgN2M0ZWI0MGQ0ZmY3OTI4ZTUwZGUxM2QyZDYwZDg3NTAxYjA5ZGUxOSBsZWdhY3ktdHJ1bmsKKzE5MjEyIDY2ZDRiZjU2ZTMyZGJiMTg1YjJlZTJjMzYxZTQyMDMwMzI2NjFiYzAgbGVnYWN5LXRydW5rCisxOTIxMyBlZjMyYmZhNWY1YzY4MTM0ODBiNGExMzhjNjE0ZDU3MzU1MDFjODkyIGxlZ2FjeS10cnVuaworMTkyMTQgMGVlYjJlZTIwNzk5OWRhYWViMWRiNmYxYTA1OGY0ZmY5NTg0MTNmNyBsZWdhY3ktdHJ1bmsKKzE5MjE1IGFlMDRkNjE0YTNlMDMzYjQwZWJmN2RhYTg2Nzk3OWNiOGE3YjQ3OWIgbGVnYWN5LXRydW5rCisxOTIxNiBjM2I3NWE3ZmFkM2Y3ODA2Yzc0OTA5NzViMmI3YjcyMjA5NzA0YTg3IGxlZ2FjeS10cnVuaworMTkyMTcgZTQ0MjBjMjQ2OGY5MGFhNmIxYjYxZmYxNzBiM2JmMjBmYTgwNTJmMyBsZWdhY3ktdHJ1bmsKKzE5MjE4IDRmZjI4NThkN2E4NTU2ODY0Njk1NzY4MTJmZjUzMmU0YTQxY2I0M2MgbGVnYWN5LXRydW5rCisxOTIxOSA5ZjJjYTg1NWZhNDRkYjY0YTE2OGNiOTJlZGRiZjllNzVkMjgwZjhjIGxlZ2FjeS10cnVuaworMTkyMjAgZmE4YmUyODczMGM5ODUzMjQzYjQyN2ZjMGNmZjM3MzI0MjBiYmFjMCBsZWdhY3ktdHJ1bmsKKzE5MjIxIDEwOWM2YTI4MGU1MWFhMmM3ZWYyYzM1ZmQ2MDE2NjY1NDY5OGI0ZTUgbGVnYWN5LXRydW5rCisxOTIyMiA5NWRhZTYxY2VkNTE4MzNkOGYxODU5MWY4NzAxNjBjZmRmNzY4YzkwIGxlZ2FjeS10cnVuaworMTkyMjMgOGM1ZDhiNjE3OTc5YWJiMWU2YmRkMjUxZjVmOThhZGI0NzAwN2RkYyBsZWdhY3ktdHJ1bmsKKzE5MjI0IDY1NWFhY2NkMWNhZjhhNTU5ZmZjMzJmMTYzZDEwMjI4ZTU5YzQxMmIgbGVnYWN5LXRydW5rCisxOTIyNSBjMjljYTE5ODAzMDM4YmNiNGEyZjBhYTQ5NjljZWJiZmExY2ViYzNiIGxlZ2FjeS10cnVuaworMTkyMjYgZjFlMmY5OGYwMTIwNzgwMzcxZDIwYWJkYWUxNmY0YmQ2ZDI5YWI2MCBsZWdhY3ktdHJ1bmsKKzE5MjI3IDUwZjdkZDFhNTM1N2Q5Yzk1OTMyN2I5YjE2NzczMjFmMjUzOWNiMmYgbGVnYWN5LXRydW5rCisxOTIyOCAzOGNhOWNjOWZjNDhhMWNmMzAwN2E5YTkwOWJjZjIwODcyZDk1NzViIGxlZ2FjeS10cnVuaworMTkyMjkgM2MxYjQyNmIzZmY0YzZlY2NlYjFlMTI2ZmJlZmE0N2QwZjczNGYzZSBsZWdhY3ktdHJ1bmsKKzE5MjMwIGM2OTZhNTJjMjYyMTg0NTgyMzFmZDhmNjM3MWQ2YmRiOWUzNzliN2EgbGVnYWN5LXRydW5rCisxOTIzMSBjMDRjYTZjYmExZTNjOGU4YjUyZDVhMzYxNTExNDg3MDViN2MxMDI2IGxlZ2FjeS10cnVuaworMTkyMzIgNGI1YmVjZmEyZWIzYWNkNGYxZjU5Y2Q3OWMzMDYzYzczMDEzN2NmNiBsZWdhY3ktdHJ1bmsKKzE5MjMzIDNmZTg1NTUyNmM1NTYwNDlkODljNDRlMDZiMmYxMWJkNmE1YTY3NTQgbGVnYWN5LXRydW5rCisxOTIzNCA2NzBhMDE5NGE4ZGE3ZThiZThkMTk3OTE5NjlmODJmYTY4OWUyZGZkIGxlZ2FjeS10cnVuaworMTkyMzUgNWRmZDdlMTZjNjJmMTcyZTY0YWQ0YjRlZDg1MDMxN2Q5YjlkMmY0NyBsZWdhY3ktdHJ1bmsKKzE5MjM2IDYzMjViZDA2M2YwYTg4MzM2ZmJhNTUwN2M5NDU2NmM4YzRkOWE1NTMgbGVnYWN5LXRydW5rCisxOTIzNyA2ZmQ2M2M1YzE5YTkyMThiMjg5OWVjZTI5NDNkYmU5YTVmMGM3MDY3IGxlZ2FjeS10cnVuaworMTkyMzggOGIxYTM4MjI0YWRlOWI1NzVhNTUzYjI1ODU4NjlhMTI5ZDIzMWE3ZCBsZWdhY3ktdHJ1bmsKKzE5MjM5IDBkNGI2YmE1ZWVlYzg1MDUyMmNkOTM1Nzc5M2IzY2VlODFmZjFlZmUgbGVnYWN5LXRydW5rCisxOTI0MCA0Y2Q1NzQ0NjlmZTFhYThjOWRhMGRlOGYxY2M2Mjc0MmE2OWExZTI5IGxlZ2FjeS10cnVuaworMTkyNDEgNWYwNjgzYTY5ZWZjNjg4NGM2NDE3M2EwM2Q4Y2QwM2U1NDYyOTY2YSBsZWdhY3ktdHJ1bmsKKzE5MjQyIDNhNGQyYmVmYmI3NDczNDJkZjMzMGE4ZTMzYmE2ZDY3ODBjOGEzOGQgbGVnYWN5LXRydW5rCisxOTI0MyA0OGI0YWNmNzNhZDdhYmQyMDNkMzJkM2M4OTVhMDM2YzJlY2Q5NDQyIGxlZ2FjeS10cnVuaworMTkyNDQgZWM4ZjQ3YTFjYzQ4Mzg4NzgxZDgyYzQyYzc3MWU3YmE4NmJjYjU4MyBsZWdhY3ktdHJ1bmsKKzE5MjQ1IDk4YTg4YWJlNThkNDJlYjc4OTBkOTEyOGUyMzJhYjAxNGVjOTkyNzMgbGVnYWN5LXRydW5rCisxOTI0NiBjODk4Y2ViYTIyNjE4NDBlYjljZDRhMTE5MWI0OGI3NTFmZDc2YzA1IGxlZ2FjeS10cnVuaworMTkyNDcgMWZiNjY3MmIyMGVmM2NjYWYyMTA0ODY3ODAxYjkxMWNkMGFkNjdjYiBsZWdhY3ktdHJ1bmsKKzE5MjQ4IGMyNTU1YjRmMzhhMzE0MGY2MTIxMTlhOGQ2YmUwNDUxNDQ3OGNlYWQgbGVnYWN5LXRydW5rCisxOTI0OSA1NTY4ODcyOTZkMmFkOGFlMWFkZDQxODZhYjAwMDY3Njg3MjhjZGUwIGxlZ2FjeS10cnVuaworMTkyNTAgZmQ0YTYzNTY2YmExZjRkOTlhMjc5NTk4YTE2YzMwOGIxMzY4MGY0NSBsZWdhY3ktdHJ1bmsKKzE5MjUxIDQ2YThjZmU5YWZhNjM0ZDBjMzhjM2Q0MWMxYjljZjM0M2FlYjUxMzUgbGVnYWN5LXRydW5rCisxOTI1MiBkMzRmMjUwNDZhZDRiYTQ2OWQ3N2U3YTQ0NGI3ZWE4MTFkMDkyY2NmIGxlZ2FjeS10cnVuaworMTkyNTMgMmFiMjhiMjEzZDcwNWRjYzlmZDAzM2EyNTQzNGJhNGRiYTY4NmZlYyBsZWdhY3ktdHJ1bmsKKzE5MjU0IDJlY2NlYjlkODdmNTllMjIwZmRiNDZkYWYwMTY2ZTdlZDExMWZjMjcgbGVnYWN5LXRydW5rCisxOTI1NSAwMzk0MjcwZDRkMDZkNWExODcyNTdlNDk0NWU0MTNlZjI3NDc5MjNkIGxlZ2FjeS10cnVuaworMTkyNTYgZjcwMGU2YjhkZTFmYTYwNTllMjdlYmQ0ZTI2NzFiMDE0MDE0MjAwMCBsZWdhY3ktdHJ1bmsKKzE5MjU3IDc0ZDE0MGEzZjAzNDYzNTQ4NDgyNGEyMjk2Y2Y1YTBkNmEwYjEyODIgbGVnYWN5LXRydW5rCisxOTI1OCBiMjJlNGRjYTQ1MWEzNTc2OTdjNmJiZDUxYzU0OWU1YzMwMjcyZDE5IGxlZ2FjeS10cnVuaworMTkyNTkgMGJiNThjZGZhNjg4ZmYxZDkzN2ZhYjljMGVhMjkwMmZmNzc2YmY2MiBsZWdhY3ktdHJ1bmsKKzE5MjYwIDgwYzBiMjgwYTRmOTExZWY2YjdjODJmZTMyYzlkNGEwYzNjZmU0MmYgbGVnYWN5LXRydW5rCisxOTI2MSBkY2U3YjRlNmQ0MjFiY2I4Y2M3MTNkZTRhNGMzMjYwZTdhMWQ2MWEyIGxlZ2FjeS10cnVuaworMTkyNjIgMTY2ZTg3ODM2ZThlNjA1OTI2MGM5YWE3ZDM2MTE2ZDI2ZjgxMTQ3MyBsZWdhY3ktdHJ1bmsKKzE5MjYzIGFiZTg1ZDI2MjJmOWZiZGVmNTNjYjU0MGU1YjhkMmZkMTAwOTE1ZDIgbGVnYWN5LXRydW5rCisxOTI2NCAwOGFjNTU2ZjJkMTJkZTU5ZWJhNjVkMzQ1YTQ3ZDk3YTdkNWY2OTMwIGxlZ2FjeS10cnVuaworMTkyNjUgYzIyZTg3MjUwMWEwYzk1MmU0NmZmNDU5OTkxMWQ1OGJhNDdhNmFkOSBsZWdhY3ktdHJ1bmsKKzE5MjY2IDM5MGNhNDNlNWY3OWQwZjJmYjA5ZmZjMWMwYTU4Y2RkNGQ0ZmE2NjUgbGVnYWN5LXRydW5rCisxOTI2NyA3YWQ5NzgzMmE1Y2QwNWIxN2E1ZWUyMGE0NTFiMmU2N2NmMjE1YzE4IGxlZ2FjeS10cnVuaworMTkyNjggMmQ3MmRiOWY1Y2E1NDRjZGJlZDA5MmY5MDkwNGFmM2JiOGNiNzkwMCBsZWdhY3ktdHJ1bmsKKzE5MjY5IDk5ZWRlMjE5MDg3MjczNjQxNjJjMTViZTJhYzYyNGIzYTc2NGFhYWUgbGVnYWN5LXRydW5rCisxOTI3MCBlYzcwOWVlOGU2ZmE2NTI3YmFkYjAzZmQxNGE3MzIwZjdmZDY1M2QxIGxlZ2FjeS10cnVuaworMTkyNzEgNzQzMGViYWJkYmRjYWVlMzI5Y2NiMWM3YmMyZDdhZWMzNDlkMzZlMiBsZWdhY3ktdHJ1bmsKKzE5MjcyIDNkNGE3Y2QwYmYxNzhhZDYzZTM4YmQzY2VlZjUwZjEzMjcyNDAyZGEgbGVnYWN5LXRydW5rCisxOTI3MyBhZWRiOTNmOWM2YjgwZDU5OTFjMDJkYzk2NWU4YjBhZjhlMDZhY2I0IGxlZ2FjeS10cnVuaworMTkyNzQgMTBlYTQwNjBjOGRjNTViZDUzZjhhZmViMDFiZjIyYWNjY2ZjNWFkOSBsZWdhY3ktdHJ1bmsKKzE5Mjc1IDg4MTk4NjdmMTRlZjY1OWJlOGZmODA1MWMwMTI0YTRkOWM1ZDQzOWUgbGVnYWN5LXRydW5rCisxOTI3NiAxODViOTE5NjcxNDdkZDAyNzY2MTVlMjhhMzJmMmI3NjFkMmZiOTk5IGxlZ2FjeS10cnVuaworMTkyNzcgMTJkMDA0OGVkNmNhNWI2OGMyZTY0N2Y1NmEyZjM3ODgwYTQ1N2NlOSBsZWdhY3ktdHJ1bmsKKzE5Mjc4IDdkMzlkOWRjZjJkNjExMzc4ZmFjYzY4MDQwODAyNGJmYjc1NTRkY2YgbGVnYWN5LXRydW5rCisxOTI3OSA5MDFiOTQ2NTY5MjhiMGQwYWVlYjZjMDcyODBhMjljOGYyNDc5OGMxIGxlZ2FjeS10cnVuaworMTkyODAgMWFjN2U2MTg2YjZlM2Y3N2JhN2IzODVhZWRkYzQ2OTIwNDY1ZGU5ZiBsZWdhY3ktdHJ1bmsKKzE5MjgxIDFlZjdlNDM3MTVmNTQwYzMwYmRkNjEwN2M1YWZjYjBmYzM4ZDY5YzAgbGVnYWN5LXRydW5rCisxOTI4MiAzODIwNDA5M2Q5YzkyOWQ2NDRlZjljNTZiYjg5ZGFmOTk0NTg3YzBhIGxlZ2FjeS10cnVuaworMTkyODMgYWE4NDQ3MTE0NjNhYTg5NGFmZmNlMDlhODdiYmFjM2Y0YzdlMGUyNyBsZWdhY3ktdHJ1bmsKKzE5Mjg0IDhiMzE4YjhkNzhjOTQ0NjZkY2JlZjViYTkxMjVjYjUzYjM5NmYyOTIgbGVnYWN5LXRydW5rCisxOTI4NSA1YzQwMTEzNDA5YzMyNzdjNjYyNDFjOWJjN2YzY2U2MWVlOTBhYzc3IGxlZ2FjeS10cnVuaworMTkyODYgMjVlYzRmOGM2MGFhY2Y2YTAyODM0OWJjNzI4NzEyNjFlY2Q3MmUyMCBsZWdhY3ktdHJ1bmsKKzE5Mjg3IDNmZmNjOWIzYmFiODdmNzE0ODg0MzczMDZkN2MwMmJiYjBhZjQxZWMgbGVnYWN5LXRydW5rCisxOTI4OCA3ZWE3YTFjNWE4ZDIwM2IzZmIyNTAyZTY4ZWYxNTVhOTg4MDlkYTgxIGxlZ2FjeS10cnVuaworMTkyODkgYzhlZjg2NGJhODYxZjIzNGNiNTM1YWFmZDhmODM3NWU2YWZmM2I0NCBsZWdhY3ktdHJ1bmsKKzE5MjkwIDY0OTY4NDRjNGE0MjgwOTA2Yjc1MjljZDM4ZDQ5MTI0M2Q0Nzk1ZjMgbGVnYWN5LXRydW5rCisxOTI5MSA4YTQ0MGZmMjc0ZWNiY2IxZTUzNTY2NDE5Yjg5Y2UzNGUwNWNmNWMwIGxlZ2FjeS10cnVuaworMTkyOTIgMmJlN2M5MGMxZGRlZDJlNjQxMGMxNzdkOTU1MThkNTg4NDUzZDEzNiBsZWdhY3ktdHJ1bmsKKzE5MjkzIGMxNmUwNjFkMjNlODg2YmIxYjExY2NiYTQyOTQ4ZDE2NjM3NzcyMmMgbGVnYWN5LXRydW5rCisxOTI5NCA2YjVlMjBmNjllOWVlOWQ1NmNiZjUwY2RlMDQ2MzQ0NmY4YzlhN2JlIGxlZ2FjeS10cnVuaworMTkyOTUgMDA3NmU4ZDI4ZjllYmE5ZWZmNDUwODY5NmRjMzM3MzBhZjJiNDAwMSBsZWdhY3ktdHJ1bmsKKzE5Mjk2IDVhNGJkZmM2NjA4M2VjYzMzYzNjMjAwZDgxODRlYWY1MjZlOWZmODQgbGVnYWN5LXRydW5rCisxOTI5NyBhNjIxOTk1MDc2NmU3OGFmMzg2ZDllNGVlNWU3YWUyYTA1ZjBlM2JlIGxlZ2FjeS10cnVuaworMTkyOTcgYjM4MmYxZjA3ZWM2YjJjOTU1NTE2NThiMzBjNjEzOWVlYjMyMDc3YSBsZWdhY3ktdHJ1bmsKKzE5Mjk5IDY3OWY4MjZiMjRjYTI2OWI4ZjE4YzQwNDNlY2Y1YzNkNWFkODdmZjYgbGVnYWN5LXRydW5rCisxOTMwMCAyNDZiM2E2YWE3YTk0MTFlYTc3ODYxMzRhMzI1ZmQwMjJkNGYyZmUxIGxlZ2FjeS10cnVuaworMTkzMDEgZDU1N2ZmMGEyZjZjOTdkNDJhODAzMjQzNjk5YzUxMDFjZTViMWIwZSBsZWdhY3ktdHJ1bmsKKzE5MzAyIDdhMzk3MDRhNTA0N2U0ZjZmYzczMDExMDkyYmUyZGU5MjE1OGNkMzIgbGVnYWN5LXRydW5rCisxOTMwMyBjNDUzZmJmMzBmNjEzNzc4MWY0ZjU4NGQwNjk4MTZkODdkMWM1YjAzIGxlZ2FjeS10cnVuaworMTkzMDQgYjJjNTE2YmI3MzRhNzI5ZWFmMmRlNmNjNzY2NmRlY2U0MGMzNGEyNSBsZWdhY3ktdHJ1bmsKKzE5MzA1IGNlOTg1MDA1MTEyMDQ5MGRlMzA4NTJkM2ViYzk3YzBhMGQyNThlZWMgbGVnYWN5LXRydW5rCisxOTMwNiBiNzhjOGQ4YzUyZTYxZjZhMTZjNjk1ODI1ZWQ3M2JiZGRmM2RmMDdhIGxlZ2FjeS10cnVuaworMTkzMDcgZjkzZTIzYTgyYTczZDJmMWJhOWE2ZTBiMDI0MDkwNzhkNTYxZDQ5YyBsZWdhY3ktdHJ1bmsKKzE5MzA4IDU3NTg3MjU4NGIwY2ZjNmRkNWYzMjYxMDgxNjA4OWEwZjE5MmZlZDEgbGVnYWN5LXRydW5rCisxOTMwOSBhYzUyZDM3Mjc4NjczZmNmNDczOTRlZTc3MTk1OGVkZWMzOGMzN2U0IGxlZ2FjeS10cnVuaworMTkzMTAgMTg3NzA1N2FhOTI2MjA3NjE3Yjk1ZjZjOWU4NDZmNDg2NTM0YzdhMyBsZWdhY3ktdHJ1bmsKKzE5MzExIDY0YTMyZGY1YzA2MzQ1ZDg5MDZlYjI1Zjc4MjNkZGJlZGZjNDBmZTIgbGVnYWN5LXRydW5rCisxOTMxMiBhZjM5ZGUyNjJiOWM5YjhmMWI3Zjg5YWFiY2VmNWYzMTg0ZmMwYTE0IGxlZ2FjeS10cnVuaworMTkzMTMgOTliZWZlYWM4NDAwZmZhODA2Mjk5MGIxNjU4YWVlNzVmZWUwYjcwOCBsZWdhY3ktdHJ1bmsKKzE5MzE0IDI4ODVhMzM5NjM1ZWRlOWEwMjcxYzI5MGQzMmQzNTU4OGI5OTMyMDEgbGVnYWN5LXRydW5rCisxOTMxNSAyZTNkZDYyY2VhYzVmODg0MzllMzljMzgwMTJhM2IzNmIxOGNiNTlmIGxlZ2FjeS10cnVuaworMTkzMTYgZGRjZTcxNWU0OWJhMDY3Nzg3ZDVhYTA5YmEwMDM0YjhiZjkwODhkYyBsZWdhY3ktdHJ1bmsKKzE5MzE3IGIzMDVjMTUzNmI3YWE0ZDQyMGJkYmQ4N2RmYmIzNWNmMzcyYjVhNWUgbGVnYWN5LXRydW5rCisxOTMxOCBhNTA2ZjNiNzU2OTQxNDk5M2U4MTRmMDc3NWY4MTI0Yzg0MzcyNjEzIGxlZ2FjeS10cnVuaworMTkzMTkgM2NjODYzNTU4NzkzM2VjNWE5MWFiNjBjYjM2YjkzODMxOGMwYzdhZCBsZWdhY3ktdHJ1bmsKKzE5MzIwIGM5OWQ2ZDVhZmQ3NWQwYmNiMDBlYmU4YWI5YmE1NzYzMjI0YmQyZTUgbGVnYWN5LXRydW5rCisxOTMyMSA1ZWY3MWNiNjY0OTUzNjE0MWZkZWZkZDg1ZWFiNmUxM2E5OTZhMjdkIGxlZ2FjeS10cnVuaworMTkzMjIgYzE4YWM4YzJmMDM2NWJhN2QzYTU5ZTY3MjU4ZDIwMTk0YjE5NjQ2MSBsZWdhY3ktdHJ1bmsKKzE5MzIzIDBiYjE3MTI3YjJmOGVhM2MyOGE5ZmFhZDZjNGNkYzczYzdmMTFmZDIgbGVnYWN5LXRydW5rCisxOTMyNCBhNGY2YjYzMzIzMGMzNzIyZDM3YThkYjViNjdhYjlhMWYzMjllMzg4IGxlZ2FjeS10cnVuaworMTkzMjUgMmNhODc4M2NlOGEzNWFlN2UyY2U5MjNjMTRjZDhmZTFmYzI2OGIwYiBsZWdhY3ktdHJ1bmsKKzE5MzI2IDI4NmE5ZDk4NzM3NTM2M2QzZTJhNTkyNTg4ZTcxNTZkOTM0OTU1MGYgbGVnYWN5LXRydW5rCisxOTMyNyA2NWE3MDg5NTA5MjJiNmY4ZjgzMjRmOTA4YjUwYTZjMDMyYmMwZDUwIGxlZ2FjeS10cnVuaworMTkzMjggZWE4OGMyYTczMTczMDQ0ZjE0ODBhOWJmZjEyYWQ4YTM1NjJjYzE5ZCBsZWdhY3ktdHJ1bmsKKzE5MzI5IDFjNzFhYTdkNTUxMzFhYmYyZDAwYmMxYTIwZjY0MjlmMmFjZWY1MDUgbGVnYWN5LXRydW5rCisxOTMzMCBlZDQzMzhjN2U4YTQ1Yzg5N2JmODQwM2VmNThkZGQ5MzQ2NTQyYmU0IGxlZ2FjeS10cnVuaworMTkzMzEgYzBiMGZjMTMyNzllMjMyMTY0N2MyNDhkYTcwN2Q2NDRlOTVjZjkzZiBsZWdhY3ktdHJ1bmsKKzE5MzMyIDgwN2NhNjk3NjIwYWVlMThiYzI2YWUzMGQxMDJlM2Q5OWFiZjllYTUgbGVnYWN5LXRydW5rCisxOTMzMyBhYjAyYmM2YTVhYjJjYWRjMDg4NTk2YzY4MTgzZWYyZTI3YTIzZDdkIGxlZ2FjeS10cnVuaworMTkzMzQgNTQ5ZTk5M2E0NzZjZDcwZjI1MzY5MzAzMWE0NDRhZjE5NTZiYzIyMiBsZWdhY3ktdHJ1bmsKKzE5MzM1IGY1YmNiYTVmYTQxYzhiMGM2ZjJhOTc4NGI2NTM0MjAxNGY3NjFjYWUgbGVnYWN5LXRydW5rCisxOTMzNiA0ZDQwNmMyNmMxNmVhNzlkYTdhMzY5NzMyNzM2MDFkMmMyZTUwNGM2IGxlZ2FjeS10cnVuaworMTkzMzcgYjYzMTNjOTExNGVkNmQxMmM2YTljZGYxNjFhM2QxZDhjZjY0YzNjMCBsZWdhY3ktdHJ1bmsKKzE5MzM4IGY3YjE2N2M4MzMxODU4ZGQ3NDgzNWZkNGM4MTljODI3YzAxNDJkYmIgbGVnYWN5LXRydW5rCisxOTMzOSA1N2NlOTJhMTZiM2M5ZWViMjhhNjMwYjc1YzI4OTZjYzY4NzljOWJlIGxlZ2FjeS10cnVuaworMTkzNDAgZWRjMGM5OWE2OWQ2ZDIyNTYyMjczZGJiYjU5YzQ1YzljNmI2YWMwMiBsZWdhY3ktdHJ1bmsKKzE5MzQxIGQ1OTY2M2QzZTQzM2EzNTk5N2NlODY5ZGMzMzQwYWIwYWEyNDYxYWIgbGVnYWN5LXRydW5rCisxOTM0MiBlOTcyMTdmNWIzMjMxOWYzYTdmOTg3ZTMyMmVmY2I2N2ZmMmRkOTllIGxlZ2FjeS10cnVuaworMTkzNDMgODExYjBjY2I2MmFlY2U5MzdkMTAzZGI5ZWM1YTNmYzc0MTA4ZTlkMSBsZWdhY3ktdHJ1bmsKKzE5MzQ0IDFmYjdiZWZiNTlmMDczYjAxYmExNDQ3ZGYzNTYxMWEwN2VlZDk3YmEgbGVnYWN5LXRydW5rCisxOTM0NSBjMjMzZWZjYjQ4OWU1YmY1ZjQ3YzRlNjk0ZmRlMTBkNDhjM2FmY2MzIGxlZ2FjeS10cnVuaworMTkzNDYgYmY5NzgxOGRkOWUxZTI4YjhhZDFkZGM5YWY1OThlMzIxMjJkMWU4ZiBsZWdhY3ktdHJ1bmsKKzE5MzQ3IDVmMTJkZjg4YTIwODVhYTIzODllMGUyNTJkYjFlOWRlOWI1MTU0YTkgbGVnYWN5LXRydW5rCisxOTM0OCA0NjRkZThkZmE1OWU5YTc1ZGFkOWQ0NzE5OGY2YzgyZWQ5NTViMDY3IGxlZ2FjeS10cnVuaworMTkzNDkgNzcxZGJiMTU1NTc1ZmJjZmU4ZGE1ZDdkOGRjZTQyOGUxOTAwNWM2NSBsZWdhY3ktdHJ1bmsKKzE5MzUwIDkyY2JlZmRiNjc0YTY1Y2Q3ODIxYmNjNjdhZWRkYWEyODliNmM5OTIgbGVnYWN5LXRydW5rCisxOTM1MSBhNjg4ODRkZTEyZWM1NGU1NGI2OGM5NmQ3MzU1M2ZkZmFiZGEwZmQyIGxlZ2FjeS10cnVuaworMTkzNTIgODdmMmFiYjczMTg0OGI2ZmZhMmJmMjQ5NjhhZWZmNjU5NjZhN2M4ZCBsZWdhY3ktdHJ1bmsKKzE5MzUzIGE0YzZlNDAxZWUxODRjM2ZmZDUyNTgwNDgzMzQzMTNlMjNiMzAyNzYgbGVnYWN5LXRydW5rCisxOTM1NCBmYzRhY2UwMjQyY2IwOTRiNmIzNmVkNjFkYjE2NjgzZTc4YzQ3M2FlIGxlZ2FjeS10cnVuaworMTkzNTUgNmU1YWI3ODQwYjA1ZDBiYzk0ZDliZmVlYzE5MDVhMmNmYmM1MGMzNSBsZWdhY3ktdHJ1bmsKKzE5MzU2IGY0ZDE1ZmRkMTVkZDdiMWVlNzUxY2I3NjkyMzdmMmU5MDg2YzY0NjAgbGVnYWN5LXRydW5rCisxOTM1NyA2OWYxNjJkY2Q4YjRjMDljNWVmNGRkZDRiNTdiOTA3Yjc5ZDZmOGM5IGxlZ2FjeS10cnVuaworMTkzNTggMWZmOWQ1NzFiYWMwOWE3ODE1NjdlMDZhOTE3ZGE1ZTA5OWY4MGU4MiBsZWdhY3ktdHJ1bmsKKzE5MzU5IGQzMjk2MDYzNjFmOGIzYmM1ZGU1ODRkMzNlZjM3ZDlkNTJjZThlODkgbGVnYWN5LXRydW5rCisxOTM2MCBmNzUxYjk2ZGU2MjFlZTcxNGU1YWFlNWJiZThjNjgwZTFjODY5ZTc0IGxlZ2FjeS10cnVuaworMTkzNjEgNThkZTI4MjljZmRkM2I4OTgxMDI1NTNjZjk3ZWRmODEwYzk0Y2VhMSBsZWdhY3ktdHJ1bmsKKzE5MzYyIGM5N2U2MTg5YWQ5NmE5ZWFkNTJhYmE1MWY0YjkzOGM1ZTI3OThiNTMgbGVnYWN5LXRydW5rCisxOTM2MyBiMTE3ODBiMDY4ZmE2YzEyMjljYmVkMjk1ZGYzY2JlOTc0MDc1ZmFiIGxlZ2FjeS10cnVuaworMTkzNjQgYmYwMzA5ZDVmYzBhOTM5ZTkwYWViMWI3NjNlMTI4YmY0MTY3MmE1ZCBsZWdhY3ktdHJ1bmsKKzE5MzY1IDhkNzY1NWFjOGJmODY4YTUzNGUwNDEzODk2OTA2NjljY2FkMjBkODcgbGVnYWN5LXRydW5rCisxOTM2NiA2ZmZjZThiZTNlMGI4ZGQzMTRjNjk2ZTY2MWM2NDgwNmVkYTRhZjZiIGxlZ2FjeS10cnVuaworMTkzNjcgODhjODdjODliNDA2ODAwNzg5NGExMTkyNWE4YjZjZTY1YzRlY2EyMiBsZWdhY3ktdHJ1bmsKKzE5MzY4IGIyNmNiYzFmZTRlM2I1YmY2MTk2YmE2OTUzODkxNmQ2NGM5MzZkNDUgbGVnYWN5LXRydW5rCisxOTM2OSBiZGZjNmJmN2IwZGFlN2QyMjhhYTdmZmQ3NTA5ZmQ2ZGJiZGVlYWJlIGxlZ2FjeS10cnVuaworMTkzNzAgNWMzYmYyZTg5ZDgwMTFhZmI1ZmVmNjhiOThhNzFhMjZiMzc1OWM3ZiBsZWdhY3ktdHJ1bmsKKzE5MzcxIDVmNTg4ZGQ1NDM5YmYwMDZhMTZkZjBmMTQ1MWQwZGY0YjkwOTBmMTEgbGVnYWN5LXRydW5rCisxOTM3MiBjODdmZGY3ZGUwZTZiOGY5MTc3MDBkMTA4ZjFhZTE3MmE3MmZjYjYyIGxlZ2FjeS10cnVuaworMTkzNzMgMThlZjNkNWVhYjRmMjJjYjkzYTdjNzAwMmE2YWM2ZmFhODQ0N2Q2MCBsZWdhY3ktdHJ1bmsKKzE5Mzc0IDg5M2E1MTVkMzMxYTczYWFiMzY3ZDllMWJhZjlhYWNlYmZkZjVjODggbGVnYWN5LXRydW5rCisxOTM3NSA1NjQzZTM3Yjk5YWU2OWVlZjYzYmJlZTVlNGI3YzA5NjgxOTFmN2NlIGxlZ2FjeS10cnVuaworMTkzNzYgOTBjNjAwYTgxOWU5NmQ0NjA2OTc5ZTJkNjhlMzhkZDE0ZmRiNDExMiBsZWdhY3ktdHJ1bmsKKzE5Mzc3IDhiYTZiYzhjMmUwOTM4MWYzNzZmMTE5MzlhOTg5YzlkM2M0MTE0YzQgbGVnYWN5LXRydW5rCisxOTM3OCBhZjg4NDY1OTk5YzdhNmMwMzM0NmJiMGI4Zjc1ZDdlOGZhMWVlMjYwIGxlZ2FjeS10cnVuaworMTkzNzkgZWVlNjdhODRlNWZhYWYzMDBhMWVmMjY4MWI4OTllMzY4MDFkMmZmOSBsZWdhY3ktdHJ1bmsKKzE5MzgwIGIzZDkyM2E2NjE1MmNkOGQ1MzY5ZjY5ZWNmYTRmZDI0OGQ4ZTExNTUgbGVnYWN5LXRydW5rCisxOTM4MSA2MzFkNGM4ZGI3ODQwODAyODY3ZjkzYjM5NmYyMjVhNjFmNTdjMzU3IGxlZ2FjeS10cnVuaworMTkzODIgYzgwMjM4NWE2YWMzZTY0MjI2OTI4YWMwM2UyOGM2ODdkNWQ0NTNiOCBsZWdhY3ktdHJ1bmsKKzE5MzgzIGUzZDQ4ODA3NDhiNWM0NzVjNGM1OGU4ZmYwMDNlZWE1M2QxYjQ0OWYgbGVnYWN5LXRydW5rCisxOTM4NCBmNDI3OTljNjg5MjllZTY0YzljODI0ZjZmOTJhYWQ1ZGU5YWI4Mjk1IGxlZ2FjeS10cnVuaworMTkzODUgOWQ2MjUzMDNmOTE0YmU4MzBhOTkyN2QzYTU0YTI1MTA1ZDYxNTg1NSBsZWdhY3ktdHJ1bmsKKzE5Mzg2IDI0ZTk0NmU5NTFmYTJhMzVhMThhNTkyMWNhNGQ2OWFhNDUwYzIzNTggbGVnYWN5LXRydW5rCisxOTM4NyBjMzY5NjdiZGM5ZGQ0ZGFiYjc4YmM1ZjcyNDBjZTMyMDliN2Q0YjBhIGxlZ2FjeS10cnVuaworMTkzODggNTdkMjQ4ZGRiZTJhYmFiNGRmZjRhYTY2YzViMDg2OGI4MzdkZTlmNiBsZWdhY3ktdHJ1bmsKKzE5Mzg5IGE4ZTEyM2RmMjY4YjljYmZhMDUwMTg3MDBiNmQxYTZlNTkzNDcyMTcgbGVnYWN5LXRydW5rCisxOTM5MCBmM2U4M2U1MTRkZDg5YWZjZWY4MDQ5ODBmN2Y0MDFkY2YxYmYxY2JmIGxlZ2FjeS10cnVuaworMTkzOTEgNzUxZTljYzQ3N2Q5ZDAzNDkyNzVkYWI5M2FjYmE4YTRhMjQ2MmMwNSBsZWdhY3ktdHJ1bmsKKzE5MzkyIGE4MGY2N2I3MjMwOGU5ZDA1MTViZGI0OWFmZmFkZWZiZWMyNTY4NWUgbGVnYWN5LXRydW5rCisxOTM5MyAwNmRkOTRlMjBmM2I4MWJjYzE0MDhkNTM3MjhiMDEyNjU0MGQzZWU3IGxlZ2FjeS10cnVuaworMTkzOTQgN2ZjNjRkZjEzZGIwYWNhZmM2MzM5MWQwMmRjNGFhM2I2MTUxNjA3NCBsZWdhY3ktdHJ1bmsKKzE5Mzk1IGM0OGFmMzljYjI5MmUwMWI3YzkyYjcwMDc0NmZjZGY2OGU4YTk4MmMgbGVnYWN5LXRydW5rCisxOTM5NiBiNTlmM2ExZWIxMjM5MWJjMWFlZGE3NWE2OWQ5MmMzMzk1ZjE5MGI1IGxlZ2FjeS10cnVuaworMTkzOTcgMDg0YjNkYzliNmZmMzEwMmFlOGQ1ZjllOWI3Y2I0Yjc5YjU0OTJiYSBsZWdhY3ktdHJ1bmsKKzE5Mzk4IDU0ZjcyMDljYzcxZTdiNjkwOWQzMmYyYzM2ZDE0YzhlZjQxN2Y0ZDMgbGVnYWN5LXRydW5rCisxOTM5OSBmNGU3MWJhYjc4NTNjOTdiNTU3OTc5MDljMGVmZTk2NjRjYTFkM2RjIGxlZ2FjeS10cnVuaworMTk0MDAgYTU0MGM2ZmQwY2VkMWQ4ODFkYmVjYTE3YjgyMWIyMTI3ZTNmNDE3YyBsZWdhY3ktdHJ1bmsKKzE5NDAxIGE0N2Q5M2VmMTAzYTc2NzNiYzIyZjNiNjVlN2Y1MmRjYWIzMmI4ZDYgbGVnYWN5LXRydW5rCisxOTQwMiA4MjM2ZjNlNzU4NWUxNGZjODAwMGE0YTkyNmY0ZTA1NTE3YzQwNjc2IGxlZ2FjeS10cnVuaworMTk0MDMgOGVlZDM3M2JjZTdmZTUwYWRlMmE2MWY1Nzg0YzA1MGE0Zjk4YTVhYiBsZWdhY3ktdHJ1bmsKKzE5NDA0IGZlZjRjMDM5NzMzZGNiODFkYzc3OTRiYzI5NTljZTQxNmFhMGMzYmEgbGVnYWN5LXRydW5rCisxOTQwNSAxMjE0YWJlYTBjN2IyYTgzNTExNzBkODg4NDU1YTNlNmRkMmUxZDQwIGxlZ2FjeS10cnVuaworMTk0MDYgNDY1MjcyM2VhNjU1Y2E4MmE4ZmUyNjhhMWUxYzQ2NjdhNzEzZWI2ZCBsZWdhY3ktdHJ1bmsKKzE5NDA3IDM4ZWNmZDExZDliNTNhMjZjNGNlYjMxY2NjMTdlNDhlYjlhZThjNjcgbGVnYWN5LXRydW5rCisxOTQwOCA2MGEyZTk5Yzg2M2JlOTcxOWUzMTQzODk1NjhkYjM4YTllMDUxYTBjIGxlZ2FjeS10cnVuaworMTk0MDkgY2M5Y2IxZTkwYjNkMjRiZDc4ZDM0MDNiMzdmYWJhODUzZDE1NzJjMyBsZWdhY3ktdHJ1bmsKKzE5NDEwIGRhODY4MWYxN2I1MDBlNjRlMWRlNjcxZDQ0ZTQ1M2I0ZmViNTdjYjMgbGVnYWN5LXRydW5rCisxOTQxMSA3ZTlmNDA1MWJhNGFmMTNmZmQ1YTVjYzlmMWU0ZWFjMDJjZjMzZDI2IGxlZ2FjeS10cnVuaworMTk0MTIgOGY3MGI1ZGRkNWMwOGY2NDA4OGY2NzgzY2FhY2Q1YzUzN2Y3ZmI2ZSBsZWdhY3ktdHJ1bmsKKzE5NDEzIDdkZTUwNDM4MjdmNzBmZGMxODZiNmRmNmVlZWNiYzAyMTg3MWQ0YTEgbGVnYWN5LXRydW5rCisxOTQxNCBlNTU5MmYxZWY0MWY4NjUxZjI3ZTNmYjY1YzhiMTA1NTFkNmE4YWZlIGxlZ2FjeS10cnVuaworMTk0MTUgOWE5NTc5NGUwZjdlYzY1YjUzNjlkZDg0NWY3YjBmMDBiOGJiOTY3ZCBsZWdhY3ktdHJ1bmsKKzE5NDE2IDQ0NGMwZWVkNWE2NmM1YWM5NTUyMWI0NzNkMDc4NzRhNGYxMjRjMzggbGVnYWN5LXRydW5rCisxOTQxNyBkMzhhZmIyMGMzMzZhNzI0YWVlMjMyNDM4OTE3OTM1YjQ1ZDY0YWU2IGxlZ2FjeS10cnVuaworMTk0MTggMjdmY2UyZDdmYWNkYjQyN2Q5NzY4YWI4MWE2Y2MyY2U1NGZkMGI4NCBsZWdhY3ktdHJ1bmsKKzE5NDE5IDljZTllMDM0MmNjMWYwZjAyZTU5YmVjYmVlNzYwYjE2OWQ3OWJiZWUgbGVnYWN5LXRydW5rCisxOTQyMCAxOTJlOTg1NWM3YzAwNjU1NmFkMjc4ZTMwZWJhNjdhOWQ1ZjVkNGNlIGxlZ2FjeS10cnVuaworMTk0MjEgOGMxYzc4N2JkNmY5ZTJiNWE1ZGNkMzVlZDI0ZDZlMzE4ZDUyYWE2MSBsZWdhY3ktdHJ1bmsKKzE5NDIyIGU4ZTYzNmNjMWEwOTMzZDZlNzdjY2RmMGMxMzJiZjAyMzMxNTQxM2YgbGVnYWN5LXRydW5rCisxOTQyMyAwZDEzMDVjODNkZTRjOWUwZGM1ODFkZjNmMDMxNmUyYjM2MThiNTAxIGxlZ2FjeS10cnVuaworMTk0MjQgNjIzNDU2NTc2ZDZhOGU1NGQ1ZTkwYjQ2ODA2OGJkOGZjMTM1NThkMiBsZWdhY3ktdHJ1bmsKKzE5NDI1IDMwZDM0YmJmODYyMDFhYTk4YzhiNGE4NmE2OGVmM2E4ZjEwZDNiZjkgbGVnYWN5LXRydW5rCisxOTQyNiBkMzQ4NGNhNDBiOGEwZDdmOTExY2FjMTI0MmQ2MmViYTM2NmU2OWQwIGxlZ2FjeS10cnVuaworMTk0MjcgMjNiNWU3ZDAzZjc2ZmJiODU5NDBiMDAyMDA5YWVkMTEyNTZkZDZjOCBsZWdhY3ktdHJ1bmsKKzE5NDI4IDRjZWRjODI2YmVlOGI2ZDE5ODY0ODg4OTkxMzljYzQ4NGFmMjA5NjYgbGVnYWN5LXRydW5rCisxOTQyOSBiNGZmMWNmNGExMGZhZmI4NzgyOTQ2MWI3ZjU1Mjk4ZTVjNDIxZjI2IGxlZ2FjeS10cnVuaworMTk0MzAgOTE3NjMwMTNjMzZmY2Y1YzZlMWUwOWJjMGMyY2M0MzE2MjNkYzBjNyBsZWdhY3ktdHJ1bmsKKzE5NDMxIGM5MDRhNDBlMTRlYTlmZjNlNDcyMDEzMjg2YjE1YTIyYTIzMDc3ZjQgbGVnYWN5LXRydW5rCisxOTQzMiA4NjU3Mzg0ZGNjNGFiMjgzZWRkM2E3MmQzN2NkZDNiODYzYzc2ZjBmIGxlZ2FjeS10cnVuaworMTk0MzMgMmM2NDE3ZWY0NjI4NTBiZGVmODY3ZWFhNmJhMGM5YTIzODUwOTYxMSBsZWdhY3ktdHJ1bmsKKzE5NDM0IGVlMGRkMGM3OTY0ZWRiY2EwNjYzYTI2NGRhNWEwNjc0OTI5MjZhMTUgbGVnYWN5LXRydW5rCisxOTQzNSA0NzcyZmUyZGIyYzQ2YzI0NWFlMzQ4NWI4MzY5MTVjYmQ1NzNiOTFhIGxlZ2FjeS10cnVuaworMTk0MzYgYmY5YzI0YmVkYTdkNTc1MzRlOTMwZjY2OTk1OThlNzAyZmI3ZTMwNyBsZWdhY3ktdHJ1bmsKKzE5NDM3IDVmM2E4MzUwNjE1YzhiOWNlNjM4NzIzNDY4YTI5YjUzM2M2NzcxNTMgbGVnYWN5LXRydW5rCisxOTQzOCBmNjU0NDY4YjlhZThhOWEwNTFhYWEyOGRjZTdlZjE4YTQ2MzEyZmY3IGxlZ2FjeS10cnVuaworMTk0MzkgMDY4Y2I4NDk0YjdiMWU2NjFmZjAzNDIyNjk5N2Q5N2MzOTZlMDgzMyBsZWdhY3ktdHJ1bmsKKzE5NDQwIGI0MzllZWRhMDA4MjhmM2JmMGQ2YWU1MDUxYTcyZWQ2NDdjN2UyOGEgbGVnYWN5LXRydW5rCisxOTQ0MSBhNjNkYzU5YmUwZjk4NmEyNDJhYjNmNDQ0MDg5ODNiMDg4YzIzMjI0IGxlZ2FjeS10cnVuaworMTk0NDIgZGExNWU1ZjY4NjQ0YTk2MGRlYjBiNmM3MjU1YjU5ZmUxYTM5YTc1ZiBjbnJpLTE2LXN0YXJ0CisxOTQ0MyBlMmIyZmU3ZmFiYjg5NDM5MDQxZTFhNWM4MjQ3MzY3NmJkOGRkODE3IGNucmktMTYtc3RhcnQKKzE5NDQ0IDlkMDhjMzc0NzNjYjkyNmFiZjk2MzlkNjc2NjVmMTk2NzVkYzJlZTQgcmVsZWFzZTIwLW1haW50CisxOTQ0NSBjMGNkZjgyNTk5ZTAzZjM5NGM4NTIxNmYwYjZjY2YxN2RiMjViMTAwIGxlZ2FjeS10cnVuaworMTk0NDYgOWE4ZTk2MWI1MDVmMDMwNjk2ZDAyY2YxYzhhMmMzMDI4NzA0MWI1MyBsZWdhY3ktdHJ1bmsKKzE5NDQ3IDgxN2RmOWVmYWNiYWU3NDMwMTZmNThlZjc3MWQwYWZlZjEwZTc0YTggbGVnYWN5LXRydW5rCisxOTQ0OCAzZjZjMDVlMDQwODI2ZGM3MjI5ZDQzZGIzNzQxNDI0MTZmMDJkOGU4IGxlZ2FjeS10cnVuaworMTk0NDkgYWFlMmJiOGFjMzczOWUwYzU4ZTRmMmRmN2JkNWJkY2UxYTM5YTY0YyBsZWdhY3ktdHJ1bmsKKzE5NDUwIDVmYTI1NTQyYjg5Njc1ZDQyYjE1ZDhkZmE1NWI2ZjY2MjMyYjNjNDUgbGVnYWN5LXRydW5rCisxOTQ1MSA5YmIyYjY5NjNjODI1YWE5MGU1ZWU2YmMwZjc5MTFiYTdjYWM1N2Y4IGxlZ2FjeS10cnVuaworMTk0NTIgNTZhODEwNmJhZjYzNWFkYTI5MDE5NGI2MThiMDVjMWQ1ZTk4OGRlMSBsZWdhY3ktdHJ1bmsKKzE5NDUzIGJhODQ0NjNlZmM3YmM1Y2JlZWZkMmE3MzBhNGI4YjkxMjY4Y2QyMDAgbGVnYWN5LXRydW5rCisxOTQ1NCBmODEzZTk4N2U2NWNlNDBhODNmNGU5MzYyY2YwZWJiNDU3YmVmNjkwIGxlZ2FjeS10cnVuaworMTk0NTUgZGY3ZDUyYWUyMGU0Y2QwNTM2MGM4YTFlN2FhMDhjYjk4Mzc5YTVlZiBsZWdhY3ktdHJ1bmsKKzE5NDU2IDc0YWU4MGQ5MGZhNmNjMjY0MzY1OWE4ODY1OWMxZmMxMDQ1MmRlY2MgbGVnYWN5LXRydW5rCisxOTQ1NyBiMzYyNTEzMTZmNmFlZGE2ZTNiOWZiNTFkOTYwNzg4YWExMmQzYjE2IGxlZ2FjeS10cnVuaworMTk0NTggOWVmOTc4YzZmMDM5NTY1MGM5OWI3MmI4YTAxMTRkODJiMDRkOWIzNCBsZWdhY3ktdHJ1bmsKKzE5NDU5IGZmZGM3MTg1YmRhYmQ2M2UwNDkzMGIwMTU3NmE4ZjkyNjc4OWQwYWMgbGVnYWN5LXRydW5rCisxOTQ2MCAwODU1MTE5MTY3NzYyNjk2YzZhMThhNGFlNTdjYWZlMDgwNjQwNDNiIGxlZ2FjeS10cnVuaworMTk0NjEgMDdmZmIwYzNiZDVlZTY3YzE4YmViN2IyMjE0MmY0NTNkNTQwYWUzMiBsZWdhY3ktdHJ1bmsKKzE5NDYyIGUxMDQzNjcyNTZmMDIwMzc1NGQ0ZmZhNWY3M2I4MDc2ZTQ5ZGM0YzAgbGVnYWN5LXRydW5rCisxOTQ2MyAyNjBmMDMzYWU3ZGYzODk4YjkzM2I2ZjJlNzVjY2FhY2YxZDQwZTBlIGxlZ2FjeS10cnVuaworMTk0NjQgODg1ZDU0NTI0OGRiMzgwNzkzMzcxNTEwM2FjMDI2MmIzZDlmOThiYyBsZWdhY3ktdHJ1bmsKKzE5NDY1IDBiNDU1YTQyODk2Nzc4N2UwNGNjZjhjMzhjODQ2YTQ4Yzk3MmM0OTkgbGVnYWN5LXRydW5rCisxOTQ2NiA5NmQ4ODY4YTAwMjg0ZDk5Yzg4ZTM5NDI4MjRhNzY1MTljMjA2MDYyIGxlZ2FjeS10cnVuaworMTk0NjcgMGNkODdhNWQxZWY5NzRlYWU3ZjAxYzI5OGJlYTk0M2FkYzVmZDQ2ZSBsZWdhY3ktdHJ1bmsKKzE5NDY4IGVmMmJlMTJiMThmZWEzOTY2YTk3ZThhNjI0NGIzNjVkNDAzZGIwZWEgbGVnYWN5LXRydW5rCisxOTQ2OSBiMDViOGI2YzBiNDMwOTg5YzdiN2I2ZDhjNDM5YjU1ZmUxODY4ZTI4IGxlZ2FjeS10cnVuaworMTk0NzAgNDRlZjY0NGNiNTI2ZWViN2ZkYzJhNDRkOGU3ZDhhMDRjY2FhNDEwNyBsZWdhY3ktdHJ1bmsKKzE5NDcxIDk0MWE3NmYzODc0NzQyNTYxNDE4ZGI5ZGM0NjdmOGMxOWRhMDFhOGUgbGVnYWN5LXRydW5rCisxOTQ3MiBmNDI1ZDg1MjM0ODBiMDFmYzM2NDYxMDkyOTU1YjdhZTY4ZTE2NGMxIGxlZ2FjeS10cnVuaworMTk0NzMgNzMzMDY5NDkxMTljMDRkMzU4YTEwNTY4YWUwZDIzYzZmNTg0OTYwMSBsZWdhY3ktdHJ1bmsKKzE5NDc0IGYwZjU3MjlkNjAzZmI1OWY4YTk2ZjY3MzcxNTk4MzE2YzZiNmVkOTQgbGVnYWN5LXRydW5rCisxOTQ3NSBlM2NmZmMwMzk0YmZiNmMwNDUyYjU4NjVjODc3NzMyZDZkNjMwNjQ1IGxlZ2FjeS10cnVuaworMTk0NzYgOGVmMjQ2N2YwMTkxYmI2MTAwNGIzMDA2YWRmMGY5ZjA5N2Y3ZWQ0OSBsZWdhY3ktdHJ1bmsKKzE5NDc3IGY2OGRiZmZmZjkyN2JmYTU2NmZkMmMzYTllOGFlZmI1YjYxMzBhZDkgbGVnYWN5LXRydW5rCisxOTQ3OCAyMGU1MmU1YTQwOGExNmYwMjg2NmE2ZmFlMjI4NjNkMDQyYTRhMWQ2IGxlZ2FjeS10cnVuaworMTk0NzkgOGZmNGNmNDkyNjdlYzU0NzkwMWMwZGU2ZjY1MjE4ZmJiMTAwYzZiZSBsZWdhY3ktdHJ1bmsKKzE5NDgwIGUyYTYzNTg0NTY2ZjgyZGI5MzdlMGEzMzFhMWIzYmRmOGIyNTI3ZTYgbGVnYWN5LXRydW5rCisxOTQ4MSBlMDUwYjk0ZjA0ZDNjOTY3Mjc5M2VmNmE0OWNkMTgzZTNmZjkzNzg4IGxlZ2FjeS10cnVuaworMTk0ODIgNTY5MTQ4ODRhYWI2MzAxYjQ3NjI0ZWZjYjA2MDhkNmM1YzE3MjMxOSBsZWdhY3ktdHJ1bmsKKzE5NDgzIDRlMmQxYzZmMjkwNGRhNjRiZWYzYzVkMTI5MWRmOWFkODA4MzhjZTMgbGVnYWN5LXRydW5rCisxOTQ4NCAxYzZiYTk0NmQ4ZmEwYmUyZTQ0MDIxM2ZiNGNkM2E3NDVmNWQ0MTk4IGxlZ2FjeS10cnVuaworMTk0ODUgYzk1ODY3ODcyMGZkYWM0MjQ2NTQ1ZjVhODk4NTQ1ZGRiMTMwMmQwNiBsZWdhY3ktdHJ1bmsKKzE5NDg2IDkxNzgwZWFkOGMyNWIyNzI3YzQyMmNiOGY3ZWE1ZmM0ZTZlMjY0YzkgbGVnYWN5LXRydW5rCisxOTQ4NyAzYTZiNGEwMDNhMTdlNGI5YWY2ZmRmYjFkMzNhNzM0OWU5OWY3MjJjIGxlZ2FjeS10cnVuaworMTk0ODggNjdhMDY2NmYxMWUzMjMwNzBmNTMyODUyMzExZmFkNzVjMzQxNjYwOSBsZWdhY3ktdHJ1bmsKKzE5NDg5IGM5ZjIzZjgwZmM5MzBkODVmYjI5ZmEzM2VjODQ0ZWJjYTZhNGQyOTkgbGVnYWN5LXRydW5rCisxOTQ5MCA2MTE3NjgzNDlkZDkwZjM5YWRmMTA5Y2RjZDllMWFlMDkzZWIwZTFjIGxlZ2FjeS10cnVuaworMTk0OTEgMDYzZDVjNGY2Y2U1OGIzNDA4ODExYzlkNDc3YWY3NThhNTI5MTM2MiBsZWdhY3ktdHJ1bmsKKzE5NDkyIGM4N2U3MDE3ZDY2YjMzYTg4YWJkOTllMzkxZjk1OTM1YmQ3MWI4ZTQgbGVnYWN5LXRydW5rCisxOTQ5MyA5NmU5Y2NiZjE2NWY2YTRlMjAxNWY3OWQxNzE0ODJmM2E5MDliMTU5IGxlZ2FjeS10cnVuaworMTk0OTQgYzk1MDlkODRmM2RmN2Y4ZWIwZjYzOGM4MjgyMzAxZWI2ODQ0YTY2ZiBsZWdhY3ktdHJ1bmsKKzE5NDk1IGUzODE0NTMwNjIzMTI2MzVhNzQxNjMzMTk2ODdiNGM1YTk5OTZlYTIgbGVnYWN5LXRydW5rCisxOTQ5NiAwNTY0YjEzNGI1ODQwMzU1MWJkYmExZDA5OGNhMmY0NTBjZmQ5OTQ2IGxlZ2FjeS10cnVuaworMTk0OTcgMjE3Mjc3NTgzNDY4ZDA1Njg4NGU0ZjNiNWFkNWI1OWZmZmM3OWUyMiBsZWdhY3ktdHJ1bmsKKzE5NDk4IGQ0NTU5Yjc0NTdhMGUzMmEzMTUyNWRhYWI0MjY5OTgyMWMxZDBjMGUgbGVnYWN5LXRydW5rCisxOTQ5OSAyZmI2NDk4Mzk2NWZmMjIzYWVhMjUyMzkxZmYzNGNhMWI1M2E0YWU4IGxlZ2FjeS10cnVuaworMTk1MDAgZTMwYzE5NzUzMmFhMTI2YTZkYWE0YjA3ZmM2OTgzNmEwNjFiYWM5MiBsZWdhY3ktdHJ1bmsKKzE5NTAxIDU5ZjRmNjk2MDEwMTY4ZGExOGE5YmE5YTc5MGQyZjRlMmUzZjdhM2QgbGVnYWN5LXRydW5rCisxOTUwMiA3OTU2OGMwZDNlNzdhNjkzNjJiMzU3OWNjZjViNDc1MDM1NjUwYTFmIGxlZ2FjeS10cnVuaworMTk1MDMgMTQ2ZGZlN2UwMzM4MmNlYjIxOTBjYjE5Y2U5YjdkNjkxOWQzMGU3YyBsZWdhY3ktdHJ1bmsKKzE5NTA0IDdkMWU3YjZlYzgzOTQ1MzQ4NmRiMmFjZTgxZWYxZjYyNTkyY2ZlOWMgbGVnYWN5LXRydW5rCisxOTUwNSAzOGY2OTcyZGM4YjQxN2ZmMmJhYjk4NTMyMTU1ZWM4ZDkxY2M2MTY0IGxlZ2FjeS10cnVuaworMTk1MDYgMTVmMDA2NGM4NDAwOTZlZmRjOWFkYzU1NmYxNzM1Yzc1OGFhMTkxZCBsZWdhY3ktdHJ1bmsKKzE5NTA3IGY3YTk3NzY3NzFhYjBlZmUxZDY3MjA5MmU5MDAxMGJhYWE1ZDIzZTUgbGVnYWN5LXRydW5rCisxOTUwOCA3ZjEyN2JlMDdjNTA5NTc3ODFlMWMzODFlZGY3N2IzNzkwOTZhNjEwIGxlZ2FjeS10cnVuaworMTk1MDkgZDZkNWMxMWY3NWE5MjJlOTVjZTJiOTM3NGNjMGVhYmJkNjAxZjg3OCBsZWdhY3ktdHJ1bmsKKzE5NTEwIGI5ZTU0ODFmNjQ0YzMwYWY3NDYzNGQ2YzdlNWQ0OWMxMzZmMTRhZTMgbGVnYWN5LXRydW5rCisxOTUxMSA3MjhjMTE1NjIxODcyZjE3MDFjZWUzZGNmZTdmMzUzYjhmM2NkY2MyIGxlZ2FjeS10cnVuaworMTk1MTIgYTUxYjk5NjFmM2JiYjBjMDYwNWRhN2UxMmQwZTljYjRlZjA3OTQ3YSBsZWdhY3ktdHJ1bmsKKzE5NTEzIDhkODUwOTYxNzg3NDFmNTk0MDg4Nzg4ODhlMjhiZDIwZmEyYzg4MmMgbGVnYWN5LXRydW5rCisxOTUxNCBkM2U4Yjg4MDY1MWI3ZDQ3MzU0ZTk4OTkxYjEzM2YxMmM0YjMyMTkyIGxlZ2FjeS10cnVuaworMTk1MTUgOTE1MjFjNTJiMWRiNTVhZmM2ZDZmY2NhNDIwNDgzOWMzOWFhNGZkZiBsZWdhY3ktdHJ1bmsKKzE5NTE3IGRhOWE0YTE2OThmMWY2ODRlNzk2OTFiOTY2NGI3YzYwN2JiZTFjOTIgbGVnYWN5LXRydW5rCisxOTUxOCBiOWZlOGJkOWU1ZjRmYmIwNmQyOTk2N2FiMmZlNmIwYzBkYmQ2Nzg1IGxlZ2FjeS10cnVuaworMTk1MTkgNTkyMWIxMjlmMzUwNDg0MzVjMDZlYzc0OWQ5ZjhkNDcwNjExYWZkOCBsZWdhY3ktdHJ1bmsKKzE5NTIwIDFkN2FlZDA3Njk2NDgxMjZhNWY2MDRjOTNjMTgyZjcxZGY4YmIzMDUgbGVnYWN5LXRydW5rCisxOTUyMSA3ZjhlODE3YWM0MjNjNDU2OWY4OTE1NjhiN2QxMDFhN2UyMGM3OWVjIGxlZ2FjeS10cnVuaworMTk1MjIgNzlkNTMzOTM0YWMxYjMwOTVlMGM0ZjlhNGI3MzFlMjFjMGVmZmYyOCBsZWdhY3ktdHJ1bmsKKzE5NTIzIDFhNWE0NDE3NzJmZjYzYWE5ZjkxOGMxYmU5ZWI1OWJiMmIwNmExYmMgbGVnYWN5LXRydW5rCisxOTUyNCBkZWVjNmZhODA0NzEwODM3ZDE3NjgxMmRmOGU5NWFkMTkzMjg5NTNlIGxlZ2FjeS10cnVuaworMTk1MjUgMDA0OWY3N2IzNmM2MjMyMzdlNzFkMjk2OWQxYmUxNjc3ZmYwOTg3ZSBsZWdhY3ktdHJ1bmsKKzE5NTI2IDZhZjQxNWYwYzAxZWIwMGQyMzcyNDk2NWNlMjM5ZTcwMjNlNjE2NzkgbGVnYWN5LXRydW5rCisxOTUyNyA4OWMxY2NlZjVjZTgzNjBlM2I0NjY0MDNhMDNkNzEwNDVmNTI2NjE4IGxlZ2FjeS10cnVuaworMTk1MjggOTRhMzg0NDNmOTliYjU3MDU1NWNiMTcxZDU0NWE5OTI5OWM1MzU1ZSBsZWdhY3ktdHJ1bmsKKzE5NTI5IDU3NDZkMGJmNWYwNGRmN2YyNTNiOWNiMjBmNTQ2NjE1NmY2ZDI4YzMgbGVnYWN5LXRydW5rCisxOTUzMCBkZTBlODc1MmQ1YjcyY2U3NDUwY2Y0ODU1MGMzODNiMTFhMmQzMjJlIGxlZ2FjeS10cnVuaworMTk1MzEgZTlmY2I0NmMxZjJjYWNiYzM5NzQ2ZDVlN2Y1NDgzNmFkZWY2MjFkYiBsZWdhY3ktdHJ1bmsKKzE5NTMyIDcyNTIzODI5Mzg2OWNjNWFjOWY2NjVhNzBjNzE0NjNhZTdlZjM3OTkgbGVnYWN5LXRydW5rCisxOTUzMyA1N2E5NzIyYzU4OGQ0ZGEyYjhhNWEwZTg5MWY5MmJmZDU3YzVjZDYxIGxlZ2FjeS10cnVuaworMTk1MzQgOTkwZmEyNWNkZTFjY2YxNTY4Yzg2OTQzMGE4ZGU2NjNlZWYyMmIwMSBsZWdhY3ktdHJ1bmsKKzE5NTM1IGE4YTAwZGUwMjRlNzM4MGE5ZmU4NGRjYmQ3MjVmMmE3Y2I1NmI5YWQgbGVnYWN5LXRydW5rCisxOTUzNiA4YmNjMTBkYjU2MmU0ZjlmZjhlMjJmMjdjMTM1OGQwZmQ3ZTBkMWJhIGxlZ2FjeS10cnVuaworMTk1MzcgMGQzYWU4ZjA4NDlkOTJhNTM5N2UxZTQ4Y2E4OGU3YmQ2NjkzNGY2OCBsZWdhY3ktdHJ1bmsKKzE5NTM4IDViY2Y5YzQ5YjZlNzhjNDVmYjZlYTBlNzcyYzdiYWYxOTIxYmIwYzggbGVnYWN5LXRydW5rCisxOTUzOSBmNGU5N2VjMWRjOWFiNjJlNjE1MmVmZGNhMjg4YzI3NDlhNjlmZmY3IGxlZ2FjeS10cnVuaworMTk1NDAgOTYzZjk1ZWI3NjQ2ZGFhMTg4MThhNDkxZjMxMjYwZWU2MjQ0M2Q4NiBsZWdhY3ktdHJ1bmsKKzE5NTQxIDI5NGJhMTZiMGU4OGE0NzYzZDNlYTA3YjU4MWE1NGQ0YTVlYTg1YWMgbGVnYWN5LXRydW5rCisxOTU0MiBiOTU1ZTc0OTU1ZDU0Yzk1OGE2OTIyMjc5MTcxODIyZjBiZDE5ODMzIGxlZ2FjeS10cnVuaworMTk1NDMgMDZhZDUwNTNmNDBhMDYyYzkwNzc5N2U1MDNjMGIxMzViZTRmZjg4OSBsZWdhY3ktdHJ1bmsKKzE5NTQ0IGRiNGZjODJhYTQ0YmE5YjUzYjY4NGE2ODBjZmI1YWZhYTEyNTUwY2IgbGVnYWN5LXRydW5rCisxOTU0NSAxN2VkNjFmZDViNjU0MDkzM2YzNTk2Yzc0YTM3YzBiMDhkMGEyYTgxIGxlZ2FjeS10cnVuaworMTk1NDYgMjZhY2MyNDQ1ZjM3MzczMmYxN2RkNTE4MmFjMGYyZTFjMDYxYWEyOSBsZWdhY3ktdHJ1bmsKKzE5NTQ3IDNjYjAwY2JlNzQ1NTA4NGU3MjFlOTFjY2FhOGQzNTUzZjY0OWFjMjAgbGVnYWN5LXRydW5rCisxOTU0OCBkOTRmZWE1NzgzNGMzM2EwMWRhYjAwYzkxMzhkY2I3NTgwNzU2MTA1IGxlZ2FjeS10cnVuaworMTk1NDkgZjdhZTBkOTM3Y2QwNzQzMWEzMDBjNzIzMzA5ZmU4MjYyMGEzNjQxNSBsZWdhY3ktdHJ1bmsKKzE5NTUwIGE2ZjA4MGZlNTI1MTFmOTI4NmFhMzM1Mjg3MmU4ZDkwZjFmZjQ2MGUgbGVnYWN5LXRydW5rCisxOTU1MSBhMGJhZjRjZDgzNWNmMmY0MGRiOTE1NDQ2OTJjYjY5MmIwNTg0ZTVjIGxlZ2FjeS10cnVuaworMTk1NTIgMTAyZmZlMTYxMWUwZjg0NzQ5ZDhmZGZjMDJiOGY4YWVkMmNhM2I4NSBsZWdhY3ktdHJ1bmsKKzE5NTUzIDZlYmIxNGIxNDFhZDUxYjljYzRiODhmMjE3YjhkYjNiMTgzZWYwODggbGVnYWN5LXRydW5rCisxOTU1NCA3MzZiY2VlY2EzZGJkNjNhZjgzMjg4ZGIyYmJiMTc2ZjcxN2RhNGY1IGxlZ2FjeS10cnVuaworMTk1NTUgNDEzNGI1OTcyMjE5Y2ZiYzllZmU2M2E3NTczM2JiODA1NWYwOTM1NSBsZWdhY3ktdHJ1bmsKKzE5NTU2IDY2MjY2YzQ2Y2NmZGNkNjJhYTk3YThlY2IzZjJkNjg3ZjZhNjEyZjUgbGVnYWN5LXRydW5rCisxOTU1NyAyYTg2ZDUxOWY4MGU1ZTg4NTIxMzdjZjlkZWJjODM1NjM3ZTQzZmQzIGxlZ2FjeS10cnVuaworMTk1NTggZGU1YThkZDFjNmYyNDc1NmZhNDNhNDE2M2EwYzdmMzFjYjljNWU4MSBsZWdhY3ktdHJ1bmsKKzE5NTU5IDNiZGQ1NjVjNzdiZGRkZDIyODA0ZjA3M2UxNTk3ZWYyYjc1ZmRhYWEgbGVnYWN5LXRydW5rCisxOTU2MCBlMTRjNWYzNGZhMDU4NTZhNTQxMmNhODVkMDMyYTQxOTJiM2E5NGRhIGxlZ2FjeS10cnVuaworMTk1NjEgNTY0OTI3YzU1NzQyNWY4YmY1OGNkYmFjZDM4NjJkYWI0MTVmOTk0YyBsZWdhY3ktdHJ1bmsKKzE5NTYyIGMwMmE5ZGI1NmZlMTVkNWIwNTMyNjAzYTQyNWNkOWFhZjcyMjFjNWMgbGVnYWN5LXRydW5rCisxOTU2MyAxYjQwMGM4NTRhMmMyZmZlNDE4OWQyODRlZTZmMjkzZGI2NGQ4Yjk0IGxlZ2FjeS10cnVuaworMTk1NjQgNzMzNGIyY2VkZGE4ZTc1MGJlMmViNTM0OGQwYjdlN2MxOWM3YTBkMyBsZWdhY3ktdHJ1bmsKKzE5NTY1IGQyYTg0MTRhMWVhYjNkMWUzZDg1ZDI4ZDZjNzRlMzQyZDQ5ZWZhYTQgbGVnYWN5LXRydW5rCisxOTU2NiA2MGM5MGZmOWMyZjc4YWQ2ZDhlODM4YjIzNGEwNzE4MTM0M2E4OGM2IGxlZ2FjeS10cnVuaworMTk1NjcgZjlmNGMyMzNlZTAzN2NkNTM0YzU2OGNlMTA2NTcwMjVhNDg3M2QyNSBsZWdhY3ktdHJ1bmsKKzE5NTY4IDgxNzI5MDZjNmRjOGZiMzc4NjE1ODhiYmJjMGVhNmU2YTVhNDdhOWQgbGVnYWN5LXRydW5rCisxOTU2OSAwNDY4NTk2ZTMwMTg3NDAwOGQwN2U2YTdhOGEzNWUwMTBlZThlOGM2IGxlZ2FjeS10cnVuaworMTk1NzAgOTMyYTFmOGQ5MmY3MDkxNzJjMjdkNmE5ZjhlNGIyY2Q3MjU4ZGJiZCBsZWdhY3ktdHJ1bmsKKzE5NTcxIDYxN2NiNDBjYjc0YjhmNzQyMDAxZDE2NzkzM2JlMjEyM2VlZmZmM2QgbGVnYWN5LXRydW5rCisxOTU3MiA5Njk2Yzk1ZDA5Yjc0MjRjZDEyM2Q0MGJlOGY5OTdhZTFiN2MwMGYxIGxlZ2FjeS10cnVuaworMTk1NzMgNTc3OTlmMDEzYWFkMjU0YThmODlkZjZiNjE0YThiNGJkOTYwZTg0NCBsZWdhY3ktdHJ1bmsKKzE5NTc0IDFjZjM2ZWI1YTI1YzBmNTYwMmZjZTA3M2ZjNDM2MWM4Y2Q5OGU3NjggbGVnYWN5LXRydW5rCisxOTU3NSA1ODkwOGJiNDdjY2FjYWQ3YTYxNzBkZDBlODE1ZDc2M2VkMGRlODE2IGxlZ2FjeS10cnVuaworMTk1NzYgMmMxZjhkM2JiYTJmODFlYmI1MjdiNjY0ZDUyMTkwOTc2MWU5NThhYyBsZWdhY3ktdHJ1bmsKKzE5NTc3IDYzNDFmOGQ5MDlhYzVmNTZjMWMyZjc0ZDZmOWRhMDYyMzliNjRkOTMgbGVnYWN5LXRydW5rCisxOTU3OCBlNGI0N2I0MzkzYzhhZDRkNmFjZDI1ZTI4ZjgxYjkzZjg0MDJhMjc3IGxlZ2FjeS10cnVuaworMTk1NzkgNmQxZmQ5MjQ0ZGFkYWFiZWYyYTllZWVlMjE2Y2U3MTExNjVmY2I3YiBsZWdhY3ktdHJ1bmsKKzE5NTgwIDNlOTM5NmFjNGJhMDdlNGRjZDk4NjA0NTU5Zjk2NGMxNTI0NDM3NDggbGVnYWN5LXRydW5rCisxOTU4MSBlZjY0ZGM2ODUyMGZkYjk5MmZhZTUyZGY5NDM0N2Q2YjVlZGZhMDljIGxlZ2FjeS10cnVuaworMTk1ODIgYTFkOGJiNjg2NTlhNDc0MzdlZWY3MGRmN2RkMjMxNDQ5YzMwODVlMiBsZWdhY3ktdHJ1bmsKKzE5NTgzIDAxYzI0NzBlZWIyZWEwMzQxNTg3NmNhMzdjNTQ2ZGRmYzNiZjdmOWEgbGVnYWN5LXRydW5rCisxOTU4NCA4OWMxMjY4ODdkZjA5M2UwZDM3Yjc1NDkwMmFlODNhZmFiNjY4ODc2IGxlZ2FjeS10cnVuaworMTk1ODUgNDA3ZDQwMjJjYzhjMDQyOGIxNTRmZTk2YTU4ZTUwZDAzZTFkYzQwNSBsZWdhY3ktdHJ1bmsKKzE5NTg2IDRkYjBmZGRiNjkxNzhkYmZjZmQ3YmExYWFmMzkzZDc2MDkwNDc1YzAgbGVnYWN5LXRydW5rCisxOTU4NyBjYzMzOGE1YzE2ZTVjNDIwM2U0ZmUzMWQxNjUxNWYzMzVlMTE0ODZlIGxlZ2FjeS10cnVuaworMTk1ODggNTlmMWI1N2JjOTA5OThmMDc0OTc2ODZjYWM2NmE1MjU3MjI5ZGYyMyBsZWdhY3ktdHJ1bmsKKzE5NTg5IDEyMDYyMWJkMzNmY2E1OWExMDI2YTE2YjRiZGE1YjQxNmIzYzY3NWYgbGVnYWN5LXRydW5rCisxOTU5MCBkMTcwYzFlNzcyYzU1M2E5YjU4OTZiNmE0YTE0ZGVmNWQ3ZTQ5M2Q5IGxlZ2FjeS10cnVuaworMTk1OTEgNTgzYTgxMmM0NWM4ODYxMzQ1NTY3YTVjZTdjYjhjMWI3NWQ0M2FiYiBsZWdhY3ktdHJ1bmsKKzE5NTkyIDgwMGIwMDRhY2M3MTc4MGU2ZDk5M2QzMmJmODE0MzQzY2E5MTU5MjYgbGVnYWN5LXRydW5rCisxOTU5MyAyNTZlMTU5OWQ4ZDk2YzNiYmQ3NDdiYzM2MWZmNWEwZjE0NjliNGMzIGxlZ2FjeS10cnVuaworMTk1OTQgNzQxNDVhYjFmZGM1YmQ5ZGY1MDNmYTY3NWI2NDk5MmJjNjY1YjNkNSBsZWdhY3ktdHJ1bmsKKzE5NTk1IGU4MWRkYTVkMzdjNGIxYjA2MzAyMDYzOThkNmI1MWY0MjUwZThlMmUgbGVnYWN5LXRydW5rCisxOTU5NiA4NmM3NjgzYjYwNmE5MGJlZTljYzkwODQwZWFiNWViNjg5NDIwMjE5IGxlZ2FjeS10cnVuaworMTk1OTcgOGYwMzRiY2VlODU2YmFkZjBmNTQ2NGY3MjMyNzYyMjdkZTgwOGIxNCBsZWdhY3ktdHJ1bmsKKzE5NTk4IGM5OWQxOWE5NmU5ZWJiZWNmNjJkYzc3MTUxNjZhZTdmZWRiOWJjMTggbGVnYWN5LXRydW5rCisxOTU5OSAwNWVjMWIwNTRiNGQ5M2ZlMDZmMjg5ZTdlOGQzNzNjZmRkN2Y2ZDFkIGxlZ2FjeS10cnVuaworMTk2MDAgOWY4NmNiYTQ3NjZiNTRlZTk1MTcwMGRkODBmNTBkNWI3ODdjYjJlMCBsZWdhY3ktdHJ1bmsKKzE5NjAxIGIzMjc4YmY0ZjA5MTgyMzcxM2NmYzQ3MTEzMzIwYzJiYmNkYTllNzQgbGVnYWN5LXRydW5rCisxOTYwMiAzODZjYzY5OGFlZjk1NTZmNmRiNDBiYjFjNDI3OWVjMWViMmMxMzA3IGxlZ2FjeS10cnVuaworMTk2MDMgODQ0ZmRlNjAwYTYxZDMzODlhYWIxYmYxZGVkNmY2YTQ1Y2YwNmNmYyBsZWdhY3ktdHJ1bmsKKzE5NjA0IGRkYWZkYmY5MTQ5ODViODkxNGNkOGEwNGE1NzA5OTRmNmE2MzNjNzggbGVnYWN5LXRydW5rCisxOTYwNSBjMTAwNTYxMDBlYTVkZDJmZTg0ZDUyYzJlMzI3MGQ4OWJiZTllZTBjIGxlZ2FjeS10cnVuaworMTk2MDYgODQ2NmJiMzcyODljZDZlNzYxMGFhODhkMzhmZWEyNDcxNDU2OGZiZiBsZWdhY3ktdHJ1bmsKKzE5NjA3IGRiNjE4OTRiMGQ2ZmMzZTQwMGU0MDI0NGMwNWY4Yzk4Njg0MTA4ZWYgbGVnYWN5LXRydW5rCisxOTYwOCA4NWQyYWY5NzJlNjIzMDRjMGI5MjA2MjA5NzZkZmEzZWY3NGMyYTJkIGxlZ2FjeS10cnVuaworMTk2MDkgMzVmNTdjNzE3MGJkNDBhNzVkOGRjMzJjMjEwNTRlZmIxYmYyYTMxNSBsZWdhY3ktdHJ1bmsKKzE5NjEwIDRjYTYyYWZlYzAwNDUyNWZjM2NiNzM0ZmFhZjU2NjBjYTFlOTEyNTIgbGVnYWN5LXRydW5rCisxOTYxMSBiNDJiMjJhOTIyOGNjODYwNWE1OWY5MTZiMDU0OTlhYmQwOGYwNzMxIGxlZ2FjeS10cnVuaworMTk2MTIgZTJhMGRiODM5ZWIxYTQzYjQ1MjY4NjM5ZDJlNTVmMjkyYzQ2N2MwZiBsZWdhY3ktdHJ1bmsKKzE5NjEzIGU0NDRhNTI3MTE4MTJjY2NjNzEwYTlhZGMwMDE1NDFjOWRkMzFmYjIgbGVnYWN5LXRydW5rCisxOTYxNCA5NTE4ODkzY2M4YTdkNmY1ZDIyNmVjZDc4MGNlYzI1NDJmMzNkMDljIGNucmktMTYtc3RhcnQKKzE5NjE1IDA2ZjZmMGUxZTEwNjE2YzhiNjYzNGQ3N2QxZjk5NjM5OTEwNWNjMDIgY25yaS0xNi1zdGFydAorMTk2MTYgM2MwYTM1MDAyMTA4ZDJlMTIwNDMxZDU0ZDZjM2NiYmY1MTU3YjVhYyBjbnJpLTE2LXN0YXJ0CisxOTYxNyA2YTU1YjY3N2Y1MDk2NDVmM2M4N2JiZWE5NTBjYjE5ODBlZWExNjIwIGNucmktMTYtc3RhcnQKKzE5NjE4IDc4MTU5MTllMmFmOGI2M2UwZWE3NjE2NmRkMzVhOTBkMDU2MzFlN2MgbGVnYWN5LXRydW5rCisxOTYxOSA5MGU5MGM5MjE5OGI3ZGE2MDllNTYwZmMzYjNmYzc2N2U1MzZjZWMzIGxlZ2FjeS10cnVuaworMTk2MjAgY2ExYmU3ZDAwNDEzZThhYWE1ZTM5Y2Y1YWRjMzQxNjBjYWNlNzgwZiBsZWdhY3ktdHJ1bmsKKzE5NjIxIDVjM2FlZGM5NjlkYTQ1Njc4Y2M5YjBlZDIwZjM5MzQ4NWU4YjBlNDQgbGVnYWN5LXRydW5rCisxOTYyMiA1MTk3N2FmMjMwZmE0N2JlZTk0ODEzNzYzMWMwNWI3MTgyOTA3MmVkIGxlZ2FjeS10cnVuaworMTk2MjMgMjNjN2EwMTA4ZjU5MGNmYzdjMWI5ODFiMDJhZWNjNTM1MTg1N2JlMSBsZWdhY3ktdHJ1bmsKKzE5NjI0IDJmYjRkNjI1YmQzOWYwMWE0YTJjYmY4N2JjZDg5YmU5MmQ2NWYwYTEgbGVnYWN5LXRydW5rCisxOTYyNSAzNDQ4NTkxZTgyNzVlN2E3NWE0NzJlMDI5NWY0ZWZjODE1MTdjYzliIGxlZ2FjeS10cnVuaworMTk2MjYgZTFmYTk4ZmQyMzllNzVhMTNmMDhmNzc1YTgyYTlkMzU2Mjg0ZTUwOSBsZWdhY3ktdHJ1bmsKKzE5NjI3IDg5OTYyODhhODg3M2IxYzRlNzgxNGJiYjBhOGVjZGE1MjQ1ZmI5ZWYgbGVnYWN5LXRydW5rCisxOTYyOCA2Yzk2ZTgzMjhkNTMwMWI3YjZkNWMxNDIxYzk4ZDEyNmEwYmU0N2QxIGxlZ2FjeS10cnVuaworMTk2MjkgYThlNTFmNmI1Y2ZjMDk3YzVkNGZhYmQ4MjQ1MjExMzVjNWU0Mjg1ZiBsZWdhY3ktdHJ1bmsKKzE5NjMwIGZmMTIyYzQwNGY2NDMxYzZmNDU4YTRiMWZmNzc0NGQzOTg1ZGZjOTQgbGVnYWN5LXRydW5rCisxOTYzMSBkYjQ4ZDBiMTNiMWVkMDEyMjM3MTkwNTU4Mzk0ZjM3Nzc3NTMzNDM5IGxlZ2FjeS10cnVuaworMTk2MzIgMmY1ODVjYmU3MWRhNTlkZTM5N2E3N2MwYTg1ZDcwOGI1YTMxMDM0NyBsZWdhY3ktdHJ1bmsKKzE5NjMzIGE3YzUxNGUxNTAwMzY3MGFhYjkxZmNjNTlkMDczZmZhMzUzMDY4MTIgbGVnYWN5LXRydW5rCisxOTYzNCBhODA0YzkxYzE4MmUxYzE1ZTE3OTZiMTUxZmMwZjA4Y2QyN2YzNjZmIGNucmktMTYtc3RhcnQKKzE5NjM1IDBhMzhmNGQ5NjY3ZWNlZmQ5YTE4ZjFmNjg1ODFhYjYzN2Q2MTllMDcgY25yaS0xNi1zdGFydAorMTk2MzYgZjRmMjg2MGQzYTVmM2UwOTk4YzhjZDNhNmZkMmZjNjAwNjIwZGUwNyBjbnJpLTE2LXN0YXJ0CisxOTYzNyBiNGU0MmQyOTk2M2RkNGNiZDJkMmM1NmU5MGU4MjkxZGIyMmYyZWZkIHIxNjEtYnJhbmNoCisxOTYzNyA3ZWUzNzhkNWE0MWQyZDgzMTZlZTMyNmY4MTg5OTI0MTlhNDgwNGUyIHIxNjEtYnJhbmNoCisxOTYzOSA2MzQ4Y2Q0NTllZTQ5ZTNlNTU3ZTdmNWI1MTI3ZTA3OGIzMGY3YjJiIGxlZ2FjeS10cnVuaworMTk2NDAgNjgwYzg4NWRmYWNlOTFiOTQ2MTYyZWI1NjIyZmNmM2NlNmUxNTk1ZSBsZWdhY3ktdHJ1bmsKKzE5NjQxIGI2YTUyZTQzODM0NDFmNWEzMzE0MDFiYmJkMjJiM2Y5OWRlMTMzMzQgbGVnYWN5LXRydW5rCisxOTY0MiBkNDQ2ZTRlYzliN2IzOTc3MGNmZjdmYTkyOWU0ZjY5YjMwNDYxOGE1IGxlZ2FjeS10cnVuaworMTk2NDMgOTA1MDExZTg3NDBjNTQ1OWNmOGJiMWI4NzkyM2EwNWY0ZGQ3ZWJmOSBsZWdhY3ktdHJ1bmsKKzE5NjQ0IDE0YWZmYmQwMzc1MDZjNGQ5OGJjOTgwNzQwZTAyYTA2NTQ2MWE5YTggbGVnYWN5LXRydW5rCisxOTY0NSBiMjM1MTYwZjEzNDY3MDg1MTljZTI1ZjUyYTEwMDhiZjYzNTEwOGRiIGxlZ2FjeS10cnVuaworMTk2NDYgZTRkOWJhMGFjMGIyY2ExNGNiMzQxOGQyNzZjZDQ3Y2E3MGZjZjc3ZSBsZWdhY3ktdHJ1bmsKKzE5NjQ3IDY3ZWQ4YTY5MDVjMzM5ZGE4ZTVhOWExODkxZmM2MDY1YTQ0ZTViYzMgbGVnYWN5LXRydW5rCisxOTY0OCAzODM5ZjBhYTFlN2NjZWNlOGExMjA4NzMxM2Y0OTJmMzc3OWViNzQ5IGxlZ2FjeS10cnVuaworMTk2NDkgYTQxODJjNjc5YzYxYzQ0ODI1MjQwZjYzYzRlYTQyZGZmNTNjMzdhYyBsZWdhY3ktdHJ1bmsKKzE5NjUwIDI5MTVlYjA3YmQyNWEzNGI5ZmU4NGVmM2M3OTEwYTgxOGVkMDY0NTkgbGVnYWN5LXRydW5rCisxOTY1MSBiOWU1YzEyMjIxMmVmMzQ3ODZiMTA5YjUyODQ2OTgyMTFiN2NmN2Q4IGxlZ2FjeS10cnVuaworMTk2NTIgNjhiZDk2ZTQyNmUzMmJiMWI5OTJiYTExYmYxMDEyYWRmZTliNGNkNCBsZWdhY3ktdHJ1bmsKKzE5NjUzIGViMjk5MjRhMzM3MGUxZmE4MjBhYWJiODIyZGFlYzU2OTVjNDczYzEgbGVnYWN5LXRydW5rCisxOTY1NCBiZjhkMmI5MmVhMGVmMzI1MWNjYWI2YzMzYjBjYWMxMGM5MmIwOGQ2IGxlZ2FjeS10cnVuaworMTk2NTUgNWExMjMwZGU0MzZhODYwNTdmN2ZkNDU4MjgzMjFmNjMxZTYyYzg0ZCBsZWdhY3ktdHJ1bmsKKzE5NjU2IDU4NjRhOWM1OGM4MWMyMjgxYTYxNzg1NGQxOWQ3Y2U0YTkxMTY5YTUgbGVnYWN5LXRydW5rCisxOTY1NyA0ZmVlYTk5YmU3NzdmOTYyN2I0MGQ4Njk4MmE3MGJmODJhZDdjYTZjIGxlZ2FjeS10cnVuaworMTk2NTggNjBmZDlkNDU0MjA2ZGE1N2VmNWYyMzk5MjI3OWUzNmQ2YWMyZTNlZCBsZWdhY3ktdHJ1bmsKKzE5NjU5IDk5Nzc4MDZiODYxNzRkOTZkYjc3NjEzMzhlNjdhNGJjNzQyNDVjOTAgbGVnYWN5LXRydW5rCisxOTY2MCAyNmQzZThlYWNlZGZhZGVlNmI5MDlhNWUxNGY0ZGM0YTQyZTc3NjEzIGxlZ2FjeS10cnVuaworMTk2NjEgOTUxOWNhZDZiZjlkNGM1M2I2YjE4M2UzNjBkNGQyMGFjN2YwYTE4MiBsZWdhY3ktdHJ1bmsKKzE5NjYyIDAwZmVhNDE3MzBjZjQzYzVjYzgxODg5ZjJkODcyMmRkMzU1MzQwYmYgbGVnYWN5LXRydW5rCisxOTY2MyBlOTkxZDg4NDNhYjQ3ZTkxNmI5YzRiNGY2YTNhOTJlODIxNGVjNjFkIGxlZ2FjeS10cnVuaworMTk2NjQgNjdiYWQ5ZjIwYjI5YzE3OTNlZTlhYzcxZmNmZTliYjI1MzM3ODcxZSBsZWdhY3ktdHJ1bmsKKzE5NjY1IGE4OWY3ODNjMTMzYTUwMjg4OGZlNzBmMzJlN2MxNDMxNTY5NjA2ZGMgbGVnYWN5LXRydW5rCisxOTY2NiBkYWUzOWViYmMwMDQxY2MxNWJlMmNmYjViODYzYTc2OGUxOTNiZTU0IGxlZ2FjeS10cnVuaworMTk2NjcgN2Y4ZjdiZWJkMWY2NDY3Njc5ZjcyZWEyOThhMzkxMWFkMThmZGY5YyBsZWdhY3ktdHJ1bmsKKzE5NjY4IDI5YWE4MzJiODc4NzQ3ODY2ZDc4Zjk4MDJkY2FkZmMwNjRmM2ZiZDcgbGVnYWN5LXRydW5rCisxOTY2OSBiODAyNDNmN2Y5N2NiZTZhNzg2NDA1ZGM4OWM1OWExODQ4ZWRmOGM4IGxlZ2FjeS10cnVuaworMTk2NzAgYWMxODBjOTgyMjk1MDAxYTdlNDY2MjU0MGNiOGU0M2I1YzYxNTRkNiBsZWdhY3ktdHJ1bmsKKzE5NjcxIDNjMjE0MmYwNzZiNDZmZTJhYjJiZDA0NjVmOTU1YzRmZGI0N2FiYTYgbGVnYWN5LXRydW5rCisxOTY3MiAyNThkY2FmZTJkMGI4ZGM2YmNlYzE2ZTJhMjMyZDkxODc3YTAyNjhlIGxlZ2FjeS10cnVuaworMTk2NzMgMDhkOTM3MTA3ZmU2Y2MyMDk1YjE4YTY1NDkzYzhkZDI0ZDkyNGY1ZCBsZWdhY3ktdHJ1bmsKKzE5Njc0IGUwMDYyZTg5ZDhmNDI3YTVmYTg4ZTUwZmU1MTM1YTZlOTJiZmVkMGEgbGVnYWN5LXRydW5rCisxOTY3NSAyYzkxODZlNDBiMzA3NzhmZDA3MDFiMTRhNzM0MWIyYWFmMTE2M2FhIGxlZ2FjeS10cnVuaworMTk2NzYgYTg2OTUwNTE5NTg2M2M4N2FlZjIwMzczMmNmZGVlZWMxM2FmNTA1NyBsZWdhY3ktdHJ1bmsKKzE5Njc3IDQ0NDU4ZmU5NDdkZGIwNTU0NWNmOGE4NDZmZThiMjU3OGNiYjY1OWMgbGVnYWN5LXRydW5rCisxOTY3OCA4MTU2ODc5ZmU2MGQxZTJkYWIzMDc5NmI5MjQ4OTg2ZWQzMTkyMDRhIGxlZ2FjeS10cnVuaworMTk2NzkgODM4OTViNGNlMGJiZjFlZWY1ZTQ3MGYzYzZjZGJlMzQ2ZDNlZmQ3YSBsZWdhY3ktdHJ1bmsKKzE5NjgwIGIyNTg1ZDhmZGI4YmJmNDQyMjVjZjcyZGY2MWRmODk1MTE0M2VhMzcgbGVnYWN5LXRydW5rCisxOTY4MSA3NGZkMTk1OWNmNDRlZTJiM2ZjMDIxNmQwMjM3MDZkMTViMzhmYjJkIGxlZ2FjeS10cnVuaworMTk2ODIgYWU3ZDcyMDdkYTQ4ODAzNmUyZjcxOGZkYWE4YmU5Zjc2ZDc5ODdkOSBsZWdhY3ktdHJ1bmsKKzE5NjgzIDhiZjBjNDlmY2UxMDFhYmE5MTc5NmI0ZTA0MTg4YTEwODI1ZWMwMzMgbGVnYWN5LXRydW5rCisxOTY4NCA1MGQ5MTU5ZWRhYWI2NzZiYmZmMmVlNzc0ZTJiMjZlNDNmNWYzOWM5IGxlZ2FjeS10cnVuaworMTk2ODUgMWQxYmY2ODEzZWU1Njk4NzlkYzUwNzY5MzE5ZjliM2RjZTZjODBhZCBsZWdhY3ktdHJ1bmsKKzE5Njg2IDU4MGFkNjg1NDQ1ZjUxODNhNjE2MWE1ZGNjNjI0OTQzZjNlN2E1MzcgbGVnYWN5LXRydW5rCisxOTY4NyBjM2ZiMDQ0ZDdlNmYxYWM4ZDYwNjE5NjNhN2JiYWI1NTIyOGI4NjcwIGxlZ2FjeS10cnVuaworMTk2ODggNGVhZGRmNDc4ZTk3YTQ2M2I3N2E5OTE3YTczZjZhYTBmYTA5ZThmNCBsZWdhY3ktdHJ1bmsKKzE5Njg5IGIyY2ZmNTcwNTc3NWUyNjk5Mzk4Y2RkYzc5MTYxMDUxMTMxMjZmYTMgbGVnYWN5LXRydW5rCisxOTY5MCA3NjU4MDFkZTE1MTIwODNkNmE0OTYwYzBhYmJjZDNmZWM1ZTU5MGEwIGxlZ2FjeS10cnVuaworMTk2OTEgZmZjYjNjZmY5NDM5NGQwNTIzMjYzMTUwYTU1MjY0ZmQxZmQxZjMzMCBsZWdhY3ktdHJ1bmsKKzE5NjkzIGZkMmE4Njk3NjliMjQ5Yjg3NjczMTM5ZDllMTY0ZWUxNzIwMjg1OTQgbGVnYWN5LXRydW5rCisxOTY5NCA1M2U4ZWJkMTE2MjBkNDVjMDhhNzI4NGQ3MzE1NTgyNWRiYTQ2NTRjIGxlZ2FjeS10cnVuaworMTk2OTUgZjU0YmFlODZhMmM2YmNjNjE2YmUwY2UyZWU3YzgxMWY3MGU3Y2Q5NCBsZWdhY3ktdHJ1bmsKKzE5Njk2IGY3OTZhODc3MTE3ZTcxNWIzNDFmMWJhN2UwMGRjMDQyNGUyMDNmM2UgbGVnYWN5LXRydW5rCisxOTY5NyAwZjBlZmMyZDEyZjE0M2E2ODZlY2U3NjY4YzM1YzE3ODUzOTVhZWY1IGxlZ2FjeS10cnVuaworMTk2OTggYWNiZTc0ZjNhNzg2ZjJmNDU3OWM2Zjc4NDNjNmMyYzdlMzhkMTZlYyBsZWdhY3ktdHJ1bmsKKzE5Njk5IGQ0YTMxNWU0MDk0YzQ4NzFkZjQzM2QwZjZmNjYxYjIxYmIwMjA5ZTYgbGVnYWN5LXRydW5rCisxOTcwMCA1MWNmNDUxZmFhZTQ2MDE5OGY5NzA0NmMwYmY1NDA1MGJjMDFjZGUwIGxlZ2FjeS10cnVuaworMTk3MDEgYTk1NjkzNDkxZWNhYWY3MTJkZWI3ODg2NzJlN2ZhMGVjYzNmMjQ0NSBsZWdhY3ktdHJ1bmsKKzE5NzAyIGNlNDc0OThhMzE1ODU5NzNiYTdkM2M5NTVmMzI3OTgwNGJkOThhYzMgbGVnYWN5LXRydW5rCisxOTcwMyAzYjA1MjEyYzE2MTYwMjU1NzAzOGFjODg4MGU2NGY4YjJkMGM2Y2UxIGxlZ2FjeS10cnVuaworMTk3MDQgNjczMjkwNTY4NmQ0MGU4MWNiZjA4MWQyOWQ4YWU3ZDNhZjAxZWU4OCBsZWdhY3ktdHJ1bmsKKzE5NzA1IGY1MzcwZTFlMjM5MmU2ZTQyYWQ0MzlhOWQ2MWE1OWUwNWQxZDFjZjUgbGVnYWN5LXRydW5rCisxOTcwNiAyN2YwNGQ3MTRlY2JjNTM2Y2U3YWZkZjIzZWFlMWZkMjZiNWEzZTE5IGxlZ2FjeS10cnVuaworMTk3MDcgYjQ2M2FjZDZkYTIyMjk5ZWQxYTA3MGZlOGYyYmJiN2NjZjI5ZWQyYSBsZWdhY3ktdHJ1bmsKKzE5NzA4IGJiZGViNmQ0ZGVhMTUyZmMzNmE1MThhYTI5NmY5Y2M3ZjFmZDMxMjIgbGVnYWN5LXRydW5rCisxOTcwOSA1MmZlMzc3ZjA3ZjJjZTE2MGIwMzI1ZjBhZWMyMjQwNTczNmU4ZjhkIGxlZ2FjeS10cnVuaworMTk3MTAgNTkwMmI1Nzk0YTE3ZWI3ZjczMGZmMzg2ZjAyMDJjY2I0M2YzZjkzNiBsZWdhY3ktdHJ1bmsKKzE5NzExIGYyOWM3NjY4NjRjYjVhMzg4ZjM0Mjc3ZTViOTdjZjhlZDI4YTYwODEgbGVnYWN5LXRydW5rCisxOTcxMiAwZTZhM2RhNGY5NTYxMzA1MjE2NjVhYjYwYThjY2JiMWQ5ODZmYmEzIGxlZ2FjeS10cnVuaworMTk3MTMgMDlmNmMxMzcyMDU2OTkzNzA4ODZlZjZjN2M2NmYxYWM3OWI1NjY3OCBsZWdhY3ktdHJ1bmsKKzE5NzE0IGUxYjFlNjhjYmQ4YzE1YjgxY2U5MjFlNGRkZjZmZTg4ZDAzMTQ2ODMgbGVnYWN5LXRydW5rCisxOTcxNSA5NTBmYzIyNjFkYTQ2MWExMjg4OTljMmU0ZTAxZjljNzRkMjEzOWE2IGxlZ2FjeS10cnVuaworMTk3MTYgM2QyOTY5MGEyNGU4OTU1MDY0ZDA3MzlkN2UzMjNjZDI3MDg4NTM0MSBsZWdhY3ktdHJ1bmsKKzE5NzE3IDc2YTY4NGZlM2Y3ZmM1ZDgzOTBkYTI0YTAyMzc4N2NjODkyYWY4ZTMgbGVnYWN5LXRydW5rCisxOTcxOCAzMjZhNGRjYmNkMjJhNzY2ZjM5NmU0MTA0YWMxNzdhYWY3NGY1ZTAyIGxlZ2FjeS10cnVuaworMTk3MTkgODE1NmRlYjBlNjJkZTVlMTIxNTk3YTg5NmE1YWI4MjUwNTlkYWRjOCBsZWdhY3ktdHJ1bmsKKzE5NzIwIDA5ZGNmNWViY2Q4MDMyZmM5YmUzMDc0Y2M5NTc1M2FhMWY5YTNjYmYgbGVnYWN5LXRydW5rCisxOTcyMSAyZDJlZTMwZjQzZWFkZDVkY2QyZDdhYzA4N2FlY2Q5OGMxZTc1MDM2IGxlZ2FjeS10cnVuaworMTk3MjIgOTVhN2M1ODk4ZmFhMWRhN2EwYzRiNmQzNTNhMWY4MDI4ZmM1OTY2MCBsZWdhY3ktdHJ1bmsKKzE5NzIzIDQ4OTRiYTNlZGQwYTUzNDRmNGExOWYxMmUxZjMyZjhkYzExZmU5MmIgbGVnYWN5LXRydW5rCisxOTcyNCBhODc3MWE1MmFiYjM3ZmUwN2M5YzVlZWNlMWU1Yjg1ZjI1NmNjNTU5IGxlZ2FjeS10cnVuaworMTk3MjUgMmQ0ZGE2Y2ZlZTYxODI5ZjgzYjRkNmRkOWRiMzI3MmEwNGM2N2Q5ZiBsZWdhY3ktdHJ1bmsKKzE5NzI2IGU1ZjJhYjgxMWVjM2Q4MThiZDQ2N2M2NWNhODNjYTZmZGYxMGY5ODUgbGVnYWN5LXRydW5rCisxOTcyNyA4NDc4NDQyNDhjNmY5Mjc3Mjk2OGJlOTRjOWYzMDM3OWQxMzc1MTdiIGxlZ2FjeS10cnVuaworMTk3MjggMDU3ODViZGYyODljZDA2MDhhMzE1MmMxZmQ1Yjk3ZWQxYTYyYjAyYyBsZWdhY3ktdHJ1bmsKKzE5NzI5IGJjODlmMTE2MTYwYjk3NGFjMjY4ODg1M2E5M2QxZmQ5OGJmNjgxNjkgbGVnYWN5LXRydW5rCisxOTczMCBlYzkwODNhYzI2ZGY3ZGRjMWE3YmJiZjdiN2FiNDdhZDIzMTQwYjNjIGxlZ2FjeS10cnVuaworMTk3MzEgMjZjZTZlZmM5NzQ0Mjc5YWM2N2ZiYzFiYjE5Njg1ZGY5NGFiYTE5YyBsZWdhY3ktdHJ1bmsKKzE5NzMyIGM1NTc4MDgxNWE2ZTVhMzVkMzNhZjBhNjZiNmMwNjQ0ODBjMDVjYTIgbGVnYWN5LXRydW5rCisxOTczMyBiMGFhZjhmODVkMTI4ZTI0MGE2MmQ4OTQxMzdhZDE2YzY2YzMxOTNkIGxlZ2FjeS10cnVuaworMTk3MzQgOGQ3ZjcyY2MyZWNjODE0NTRjNDkxZDY2OWJjMDNiODU4YTljMjg0MCBsZWdhY3ktdHJ1bmsKKzE5NzM1IGNkNDA4NWNlZTMwOTNhYTVmNDEwMjkyZjM2OGFhYTZhZWZiNzhmNzAgbGVnYWN5LXRydW5rCisxOTczNiA5ZmEyMDA5ODI1ODMzYzgxODYxODU0NWY1NmJmM2M3ZjY1ZTJiZWY0IGxlZ2FjeS10cnVuaworMTk3MzcgNzdhNTQ3MDI5OWRiZTRkMjdlNDNiYWM1MTQ2ZGJiN2JhYmI1ZDk0OSBsZWdhY3ktdHJ1bmsKKzE5NzM4IDEzY2RiZmI1OTFhNDc0M2ExNzUwYjlmMzRiMTNjNGQ2MDBjZDkxNDAgbGVnYWN5LXRydW5rCisxOTczOSBkMDUyZGRkYmZkNDQ1MGExMTkzNWQyMDAwNzY3OWU4YjVhZjI4NTNkIGxlZ2FjeS10cnVuaworMTk3NDAgMjUxNGZjZmEwZjA4MjU0ZmYzNDVjZjVkMjQyMDkzYzM0MTU5ZmM2MiBsZWdhY3ktdHJ1bmsKKzE5NzQxIDNhNDExZDQxZWViNGZmMDcwNGQyZWIyYjQ1ZjFiZWVmM2NmY2RlNTUgbGVnYWN5LXRydW5rCisxOTc0MiA3OTc2Y2Y3ZmQxOTY4M2I1OGE0NGU0YzY0MzFmYTI5NTZhNjk4ZWFhIGxlZ2FjeS10cnVuaworMTk3NDMgN2RjNjZkNWIxMDBlZWFmZjA5YzUyNGU4ODZmNDBhMTk3ZThlMTA2YiBsZWdhY3ktdHJ1bmsKKzE5NzQ0IDQxMjY4MDNlMWE4NWRjYWZkZGVhMWViNmY1ODY1NzE4ZGE3ZDJjYmIgbGVnYWN5LXRydW5rCisxOTc0NSBmMzk5ZTZhODhmNjU4NDk1ODE2MjFjNzYxZTM4MzZmOThjNDBiMzI3IGxlZ2FjeS10cnVuaworMTk3NDYgZDY3NWQ3NWFmODM5NWViODRhZThmMzJhYjFjZWQ4MDk3ZGVlMTM5ZSBsZWdhY3ktdHJ1bmsKKzE5NzQ3IDUyODBlODQzOWQ1NTYzODQyOTQwNDU0YmExN2Y3ZDQ5ZjkwZDIyM2EgbGVnYWN5LXRydW5rCisxOTc0OCA5ZDAxOGEzZDc5NDZhYTcxZDE5NzU5NjBlMDYwZjdjOTQwNWE2NDdiIGxlZ2FjeS10cnVuaworMTk3NDkgNzliYmY3YWQwZmMxNzliMjZjNGRhNDM2ZTA4MjNjMTI1ZWRhYzIwYiBsZWdhY3ktdHJ1bmsKKzE5NzUwIDEwYjg0MDYwYjdmMzljNjc1Y2Y4ZWQ5ZDg2YjJjNzQ1NWYzZmQ2YzIgbGVnYWN5LXRydW5rCisxOTc1MSA4ZDc0ODZhOGQ2OWFjMGIxYTViY2NjODlkZWMzMDdlMzY2YTkxYTc1IGxlZ2FjeS10cnVuaworMTk3NTIgMzBiYTg4Mzc2NGViYjRlMTk1NGY2MWE3MjljMWRjODNkYjJiN2FmNiBsZWdhY3ktdHJ1bmsKKzE5NzUzIDFjZjUyNTM2YzM4MWVkMGRjMzFiNWM2ZGFlYzZmZmI2YjI2NThhMmIgbGVnYWN5LXRydW5rCisxOTc1NCBhYmFlYTQ0M2UyOGMyZmNhYjk0MTRhNDdhMjZmMTY2NjU5YjJjNmM1IGxlZ2FjeS10cnVuaworMTk3NTUgYmRjZDc5ODczOTI0Y2U2NDJiMGFjM2RiYjMwOTQ1Y2Q5Njg1ZjQ5ZCBsZWdhY3ktdHJ1bmsKKzE5NzU2IDg1OTgyOTM4NDY2M2IzNmQ5MGY5NGI5MGE4ODFlNmRmZTNhMTE4YTAgbGVnYWN5LXRydW5rCisxOTc1NyBhZDczNDM3MzdhZWU5ZTEyZWU3NDYyZTlhMmJhNmQxODY3YzFkYjZlIGxlZ2FjeS10cnVuaworMTk3NTggN2I1YjU3NTZiMmNhZDBlMWYxNGUyMzM4YWRiMGZmMjdlYjJiYWE3YiBsZWdhY3ktdHJ1bmsKKzE5NzU5IDFjZTc1MWZhNjdkODA2ZWU3YjU0OTI3MGNhNmRmOTM3MjY1OTkyMDEgbGVnYWN5LXRydW5rCisxOTc2MCBkM2Y2NDY0MDRhNDM1NzJhNTZiMDQxYzc1MWRlODc2Y2IwY2U2Yzc0IGxlZ2FjeS10cnVuaworMTk3NjEgNjhjZTMyODYxNjI2ZjhlNjQzMzU2ZmM4ZTliMWMwZjVhM2UyMGUyNSBsZWdhY3ktdHJ1bmsKKzE5NzYyIDE0ZGJkZTFlY2RlYWI5YzMzNjc3NTgyMDk2ZGU2YzkxMDIyMzIyMmIgbGVnYWN5LXRydW5rCisxOTc2MyBmY2ZiNDQyZDdiMzRlMjk2NTMwNTk0ZGZjMTQ2N2ZhZTZjZGM2NzczIGxlZ2FjeS10cnVuaworMTk3NjQgMGZlYjYzNDkwMDkzNWFhNmIzNzc0YTA0Y2Y5M2M0NGI3NTdmZTFjZiBsZWdhY3ktdHJ1bmsKKzE5NzY1IGYyODdjNjg0ZTA0YzQ1ZTY4MDFlOWFiMTlmNjdmOTJlN2QyOTFkMGMgbGVnYWN5LXRydW5rCisxOTc2NiA4MDZjNmFlMjMxMDMyNDc1NTU3YzA4Nzg3NjQ1MDg5MDY4MTI1NzJjIGxlZ2FjeS10cnVuaworMTk3NjcgZjI3ZDMyOTlkZjM5MDYyMDZhOWVjZmVmMGE4ZWYwOWNhMjc5ZWY5ZSBsZWdhY3ktdHJ1bmsKKzE5NzY4IGYxYzhlYTkyZWU4NTJlZTRhN2FiY2YxOWM4MGQ3NTYzMGI0ZDY0N2YgbGVnYWN5LXRydW5rCisxOTc2OSBiM2Q1MDRiZGQ5NzlmYTM2ZTQwYTYxMjRiNDBhZGQ3ZTY0MTI5NmJjIGxlZ2FjeS10cnVuaworMTk3NzAgOGFlY2RiMjIzNDg4MTczMGExZDgxMTQ0OGFiZTIzNjE3ZTdjN2Q3YSBsZWdhY3ktdHJ1bmsKKzE5NzcxIGZhODRmOWY0MTA5MjMxMTZiMWNkNTc4NzcxZTA1MDg0ZDllOWQxZWQgbGVnYWN5LXRydW5rCisxOTc3MiA3NGE5ZDBhNDIzMWE1ZWIwYTFiMzg2NGI2ZTE0MmY1ZTA2YmYxZjQ4IGxlZ2FjeS10cnVuaworMTk3NzMgZGNlYTA5Mzg4MzMyY2FiODU3MjkzNDNhODNmNzUyNzk3YmFlMDZlMiBsZWdhY3ktdHJ1bmsKKzE5Nzc0IDMyMGZhNTBhMWE3ZDI1NTYxODNkMTE4NmVlMGZhMTAwZmI5NjQzYmUgbGVnYWN5LXRydW5rCisxOTc3NSA4ZDFlODQ0ZmJiMWFiNWFmMGNiMDE3Njk5NWFjZDk1ZWY5NmMyZDcxIGxlZ2FjeS10cnVuaworMTk3NzYgNTcyYjY1NGJmNGVkNTRiMDdjZTMwNmRmMzcyMjUwMGI5ZWMzNDY4ZiBsZWdhY3ktdHJ1bmsKKzE5Nzc3IGY1NWYzNWRjNTMyMDFhNTQ5ZDRjYzg5Nzk2MDhmYWQwM2Y5NTVlNDYgbGVnYWN5LXRydW5rCisxOTc3OCBlODY4NzVmMDY5YjE2ZTM0ZDA5NmIwMzczYjdiNDhlODY3NzI0NDhiIGxlZ2FjeS10cnVuaworMTk3NzkgNDFmM2Y0YjJmZTRhNjc2MmFiMDEwODViZGQ3NTlkYThmZjYxNGUxYyBsZWdhY3ktdHJ1bmsKKzE5NzgwIDBmMDc3MGE3OTNhY2QyZmI4NWI5ODk0YjkyM2NhMWQ2YzExMTkxN2YgbGVnYWN5LXRydW5rCisxOTc4MSBiNzMyNDljOGRlMTgwMTY5M2QzNjRkOTkxMzI2YzAyOWQ0NGYxMWU4IGxlZ2FjeS10cnVuaworMTk3ODIgZjFkNDVkNmMxMmEyOGMyMmEzOWE4YWMxNGZjNzMwODliYzE2MTFhOSBsZWdhY3ktdHJ1bmsKKzE5NzgzIDZjOTNmMThkMzIzMzQ1ZWFmNmViN2YzNzQ0ZDhmZDE3ZThlNWZjZDMgbGVnYWN5LXRydW5rCisxOTc4NCBmYTg5MDZlY2RiNzAyNDU5NTBkOGVmZDczZTNhNjBlNTY2ZmQ4NDVkIGxlZ2FjeS10cnVuaworMTk3ODUgMjAzYWQ2ZjNlZjhjZTEyZTJiZmExOTJiY2JkZjM5OWE5OWE2ZTRjYyBsZWdhY3ktdHJ1bmsKKzE5Nzg2IGRhNjM4YzQ4NGQwOGM2M2Q2NTY1NmVhNTk4ZTVkYWNjYTBiMDMwOTcgbGVnYWN5LXRydW5rCisxOTc4NyBhNDZhMTMyMDFlZWI4ODQ0YzEzOTJkNzEyZjIwZTY0NWFhM2UxZjkwIGxlZ2FjeS10cnVuaworMTk3ODggZjA3ZmE3ZjUyNjJhOTJmZGM0NTNlN2JkOGE2YzYwNGRmODUzMWEzNyBsZWdhY3ktdHJ1bmsKKzE5Nzg5IGYyOTAyNjU5Mzc0YWM4OGU4MjRiMmIyYTFiYjQ4NzVmN2M2OTZjMWIgbGVnYWN5LXRydW5rCisxOTc5MCA0OTM0MTAyMjI3MTkyZWNiNjdlMjJjN2NhNzljNzM1MTY0MjA2MGZlIGxlZ2FjeS10cnVuaworMTk3OTEgYjA0NTZkM2EwZjFmMWQzZWM2MzJkZjE2YjBiM2FlYjBmZGQ4OTMzOSBsZWdhY3ktdHJ1bmsKKzE5NzkyIGJiMjVmMmI3YmRhZTAzYjhjNDE2MWZlZmEzN2YwZDk2YThjMDU1MzggbGVnYWN5LXRydW5rCisxOTc5MyA2ZDU5ODE3Y2Y3OTI4ZWJlYjUzOTZiZTQ5ZjRiZmQxMTZiMzhlYzRlIGxlZ2FjeS10cnVuaworMTk3OTQgNDkxZmI0OWI0NmU2ZmRlZDk2NTg1ODJhOWI0Zjg5ZWE1ZmNkZTJjZiBsZWdhY3ktdHJ1bmsKKzE5Nzk1IDAwNDk4NWE1YWQ1YTgwNjNhNTlhODUxODA5OGQ1OTcyMjkxNjk2OWIgbGVnYWN5LXRydW5rCisxOTc5NiA0MTUyMDViMmNkYjJkZGNmMjUxYWY4YTQ0Zjk2YmY0OTg3MTk4ZjU2IGxlZ2FjeS10cnVuaworMTk3OTcgYjVkYjIzYzdhODA0YTE5MmJhYmRiMGNmZWFmMmVjMmNjNzk5NDBjMCBsZWdhY3ktdHJ1bmsKKzE5Nzk4IDVhYjRkYTZhZDRmYzdiYzg4NDBjNmJkZjQ2Yjc2YWQ0ZWM2OWRiOWIgbGVnYWN5LXRydW5rCisxOTc5OSBiMGE5ODJjOTFhZjAxMzNmMzY1YWQ0ZjI2MGFiNjQ2NzU4ODNiZDMyIGxlZ2FjeS10cnVuaworMTk4MDAgZmFhN2FhZWIwMjEwZGY5MThjMGNmMmI4ZWExNGUzM2E2M2EzZWY3OSBsZWdhY3ktdHJ1bmsKKzE5ODAxIDNjNjViYWJmMzIyZmIzYzVmYWQzNmQ3MmNhMTY4ODZmMzI4Yjk0ZDcgbGVnYWN5LXRydW5rCisxOTgwMiAyNTQ4ZDFhNzAxODAwMmY1YTY2NjFlZGNmNDJiZjJiMmM5MmRlMjA1IGxlZ2FjeS10cnVuaworMTk4MDMgMDJlMDk3ZjcyZDQ3YjBhM2I1YzkzNTI4NDZhOWQ1ZmFkNjAzYjgzZCBsZWdhY3ktdHJ1bmsKKzE5ODA0IDNhMmU4YTNlZGU0ODE5Mzk0NjY1N2U3OGMzZTQ0MGI3N2I5NmQ0ZjEgbGVnYWN5LXRydW5rCisxOTgwNSA5YzkyMWE4ZWQzYTcyM2I4NGRiZjlkOGY5MTc2ODgyOWFkYjlkZGZmIGxlZ2FjeS10cnVuaworMTk4MDYgNTJhM2Y4MjYxN2M0MGM3ZTRmZTFmMWY1ZWY5Yzk4MzY3NzI1MDRmNCBsZWdhY3ktdHJ1bmsKKzE5ODA3IGFiYzhjNmMwMjVjZTgzNzExOTY0NzI5YmVhNmRmMmY5OGUxZGIxNjggbGVnYWN5LXRydW5rCisxOTgwOCBiMDQ2YTMxYWYyZTA2ZTgzYTEzMjczZTc3MDhmYjYzNWE0NjE0MTJmIGxlZ2FjeS10cnVuaworMTk4MDkgZWI0ZWQ5ZjIzZDIwNjk4ZTUxYTYxNWM2ZjhkY2U0ZjBmYWY5MWQ2YyBsZWdhY3ktdHJ1bmsKKzE5ODEwIDk0NjgzYzg1ZWM3NmU2ZDE2MDRjMDY4NGFmZDBmNTM3ZDdjM2ZkM2MgbGVnYWN5LXRydW5rCisxOTgxMSA4YzY0ZGRhMWQyNmYzMGRlYWEzZjBlNmU2MzgzYTdlN2NmYjY3ZjQwIGxlZ2FjeS10cnVuaworMTk4MTIgYjgyNTljN2ZmNDljOWJkZWI1OGQ2MjZhYWFlNWIzNWQ3YTQ3OTA3ZSBsZWdhY3ktdHJ1bmsKKzE5ODEzIDVkN2UwZWEzMTgxODBjZmIwNGJlOTcxODc3Y2I3ZTZlODIxZmU3YjMgbGVnYWN5LXRydW5rCisxOTgxNCAwOWFlYzY2OGRmM2FlMjhjMjZmZTNkYThhYjQ1YmI1NTcwYWYwNDkyIGxlZ2FjeS10cnVuaworMTk4MTUgYzI4ZGZlNWY4N2E3M2JlMTkwOGM4N2UxOTkxZTYyYTdhNDVlYmU2YiBsZWdhY3ktdHJ1bmsKKzE5ODE2IGEwMTVhZWQzYTFhYzEwOThmZTM0ZTQ1OTE2OTExYzA2NGY0ZDM1NDIgbGVnYWN5LXRydW5rCisxOTgxNyBhZjgxMGYwODQyNWJlZjI1NDhiNWZmYjUwODc3YWE4MTYyMDNhNTVmIGxlZ2FjeS10cnVuaworMTk4MTggZTk0NDVjNTFmZjI5ZjY5MjMxNjY3MDVlYzI2MGEzZGZmNDQ2ZTIxNSBsZWdhY3ktdHJ1bmsKKzE5ODE5IDRiYWE1YTk1NTUzMmFlNTVhODgxZDVjYjQ1MDQ2MTMyNDlkYzgxODUgbGVnYWN5LXRydW5rCisxOTgyMCA4YTQ2OTZkN2Y3NGMwYzIxZTZlZmZmYzYzODJiZDE3OWQ5ZmY1MzA2IGxlZ2FjeS10cnVuaworMTk4MjEgMzFlMzAyZTk0ZGE4ODFiMmRlM2I3ZGE4MmI4Yzc3NzJmZDI1NGYwMSBsZWdhY3ktdHJ1bmsKKzE5ODIyIGIyNTEzMWJjNmVjN2M4ODI1NDcxNTM5OTllOGRlYTRlZjU3MDlkZTAgbGVnYWN5LXRydW5rCisxOTgyMyBmYWE1MmYzODRhZjY1MjQ4ZGI0YmMyNjJmYjIwNzNhMTgzMzEzODE1IGxlZ2FjeS10cnVuaworMTk4MjQgMDliYTE1ZWUxOTYxYmEzMzU3ZGE5MTk3MmMyNGU2MTVhMzZkNDY4MiBsZWdhY3ktdHJ1bmsKKzE5ODI1IGI2YzBjZmIxZWZlYWNjYzY2OTViNjYzNWJmNmEwMjJiMWUxZjU5ODYgbGVnYWN5LXRydW5rCisxOTgyNiBkZmViM2FlNjkyYzExMTllZDcwOTE0MDkwMzIwMGI0MzUzODY5YzdlIGxlZ2FjeS10cnVuaworMTk4MjcgODMyZTQwOTA5ZWY0ODRmNGFkZjExMDg4OTk4YmM5MzZmODBiNzM3NyBsZWdhY3ktdHJ1bmsKKzE5ODI4IDlmZDIwY2FlN2I3NjY3NTRjNTZjN2IyNDg0MmVmZTc4YzU0NTA1NDkgbGVnYWN5LXRydW5rCisxOTgyOSBjN2M1MzUzNjE0NjdkNDkwMWQxOTViYjllMGY5MjJkNjhjZDc3N2I5IGxlZ2FjeS10cnVuaworMTk4MzAgYWNkNTA2MDg0NzI3ZTczNGQ4N2IzMDJjY2ZiNmY2Y2Y4ZmZkMTkwZSBsZWdhY3ktdHJ1bmsKKzE5ODMxIGExYjM0NDZjNzIwZjFhNGZmNzU4ZTJlMTQxYTBmMDNmYjc4M2FlOGYgbGVnYWN5LXRydW5rCisxOTgzMiBjZDZlNGJjOTkyOTViODU1ZmY0NzVhOGM3ZjE4ZWY3MTI4MTVhODUxIGxlZ2FjeS10cnVuaworMTk4MzMgZTUzYjMyODQ1MjI0ZTc5MzE5NTIxNmRhODY2YjY0YWZjNWI0ODVlYyBsZWdhY3ktdHJ1bmsKKzE5ODM0IDkxMjMxYmJiMzg0MmY0NzZmMDhjNmUzZDhhYmYwZTBhODUwZTA5NDUgbGVnYWN5LXRydW5rCisxOTgzNSBiODMyMGEyNmMwNjU3NmQ3MzhhNWMwNDRkYTNmNDhhZjBhNjFkMzIxIGxlZ2FjeS10cnVuaworMTk4MzYgMGQ0ZTgwNmM0MmNjYmQzZWMyYmEzOTMzNThlY2ZhYzk4Y2E4OWU1OSBsZWdhY3ktdHJ1bmsKKzE5ODM3IDYwMmViMDQ2YjNlN2QzNDQ0Nzk3MjIxMTdjMWU4MTAxOGRmMzI0MjggbGVnYWN5LXRydW5rCisxOTgzOCAyYzI5MGQ0YzNiMzgyZjdhODdmYjU4NjNjZDRmNGE1ZjIxZDg1ZmQ4IGxlZ2FjeS10cnVuaworMTk4MzkgNmY0MmMxZDU1ZTZhZjA2ODQwMWYxYTQ0ZTBmNTM5NDA4MTBjOWUxNCBsZWdhY3ktdHJ1bmsKKzE5ODQwIGVjMjk4OTVlZTQwY2ZkMjYxMWY5ZjU0YTcwNDI3M2U2YTI2MzIyMDAgbGVnYWN5LXRydW5rCisxOTg0MSAzOGUxN2EwODk0OTI5MDY0ZjI3NTk4MDFjZGZmNzNkMDUxMzM0NjgzIGxlZ2FjeS10cnVuaworMTk4NDIgNmJiZTI2OGY4YWQ4NDkxOGNmNGFhYmI3MjcyNzAwMThhMzQ3YjM3ZiBsZWdhY3ktdHJ1bmsKKzE5ODQyIGQwYzgzMGRiNWU2OGVkZDRhYWEzNDAxMjE2ZTYxMGM5ZmYxNDU4MjYgbGVnYWN5LXRydW5rCisxOTg0NCA5YTllYWVjZjBmZDgyOTI2YmQyMzAwZTYxZWI5ZDJjYmVjZDQ5OTcwIGxlZ2FjeS10cnVuaworMTk4NDUgNzIzY2Y1ZTM3OGU1N2RiZDJmYWVkODdjN2I3YjFkNDVjNTk2OTZmYyBsZWdhY3ktdHJ1bmsKKzE5ODQ2IDY0NTMyYmE1ZGNlZDVkZmYzZTVjNTI4OTVjZDJmZjNmNWM4MjhkMWQgbGVnYWN5LXRydW5rCisxOTg0NyBiODNhM2I3ODMxNGViODkzMTk5M2E1ZWZjZGNjMjU4ZmNhYmYyZGY2IGxlZ2FjeS10cnVuaworMTk4NDggZDg4OGRjN2JlYTMyZWJmNTMxODI2NTliZDhjNDYxZmUyNjBhZWIyYyBsZWdhY3ktdHJ1bmsKKzE5ODQ5IDJkZmVlMzMzYTY1MTAwNjM3ODAyNmRmYTZiNTMzODc4MzE5ZDA0YzYgbGVnYWN5LXRydW5rCisxOTg1MCBhNzllYmJhNjQ2NmE2MzdiZjM1OWZiODE2YjNiZTYxZjk1NzE1NzU3IGxlZ2FjeS10cnVuaworMTk4NTEgZTZjNWJjNWJlYWIzYTA3YzcxYTQ1Y2UzZTQwYmZkNmEwZTEwNjNlNiBsZWdhY3ktdHJ1bmsKKzE5ODUyIDBiNGM1N2EyNTk3N2VkYTdhOTc1NjFlYzFjNDAxNmUyY2QxYzk5YzYgbGVnYWN5LXRydW5rCisxOTg1MyBkNWU1M2NmOWRlN2MzMzA5MzYyZjRjN2RlMDY3NTE3NTE3NzIxMmE2IGxlZ2FjeS10cnVuaworMTk4NTQgMmI5MzU0ZjQ4NTJmYWFiMDVmZDgzNzNjMjBhNjNmZjg5M2RiOTQ2OCBsZWdhY3ktdHJ1bmsKKzE5ODU1IGMxZTE5NDlmMzlmZWEyMTUyZTViZmY4YTFlYWE5MGI3M2VjYTMzOWMgbGVnYWN5LXRydW5rCisxOTg1NiA2NzAyYzBkZjE2YjY2OGFhMDNkZTc2Zjg0ZDNmYWM4YjUxZTFhNWViIGxlZ2FjeS10cnVuaworMTk4NTcgYzc5ZGFiNjUyZWE4NDQxM2M4YzM0Yjc1ZjkxZDY4ZmEzYWNkNmM2MCBsZWdhY3ktdHJ1bmsKKzE5ODU4IGQ2ZWNlN2MzYjM1ZWFmNmE1ZTlkNzg4OTYwZmJmZjY1Mzc3ZGQ5OTIgbGVnYWN5LXRydW5rCisxOTg1OSBmNWNiNmQ2NmE5NzdiZGUzMzA4NzQ0YzAwZDEyMTYyNzI5MDI1NmViIGxlZ2FjeS10cnVuaworMTk4NjAgMWE1YTAzZTJkYTczOTY5ZTIyNjU1ZmVjZDZlMGM1M2RhOGY0MzgxYyBsZWdhY3ktdHJ1bmsKKzE5ODYxIGM1YTQxN2U4ZDg0YzgzNjM3NGEyOTBjMWYwODdkZWY4MmI5MWNjNGYgbGVnYWN5LXRydW5rCisxOTg2MiA2MWM5ZmE5NGNlOWQ5YTRhZDlhMTgwY2E1ODZiZTQ5YzBkZDEwMWIxIGxlZ2FjeS10cnVuaworMTk4NjMgMWM5NWI2YjA2YWUzMWQyN2E1YWI0MTU4Njk1MmFkMDc5YTY2ODMwZCBsZWdhY3ktdHJ1bmsKKzE5ODY0IDQxNTI4NTVlZjlhOGI2MzVhODQxMDEwZGZlMzQ5NTdhZjVlMTFmZDggbGVnYWN5LXRydW5rCisxOTg2NSBhOTc1ZjJjMTU0YzA2MDQ1OTk5MTNiNjNjZTFmMWExMWQ3NmVhZDU4IGxlZ2FjeS10cnVuaworMTk4NjYgN2M3Y2NmYjVkYjNlZjEzNzViYzY3MDdkOGI3ZmU2YzJjYzMyNGI3NiBsZWdhY3ktdHJ1bmsKKzE5ODY3IDFkZGM3MGRkMWQxYmJhZDAzMTk4OGJjMzUzNjE2MjE0N2U4MDExNmMgbGVnYWN5LXRydW5rCisxOTg2OCA4NjMxODczM2ZlNzA5MzU5ZmE3MTk5Y2RhNmJmMTFhZTY0MGY0ZDFlIGxlZ2FjeS10cnVuaworMTk4NjkgNDU5YzhlZjBhMDEwMzU5ODM0OWMwNTMzZGNjNWZkNTYzMjk0ZmQ0NiBsZWdhY3ktdHJ1bmsKKzE5ODcwIDkxMDRlZDM4YWMwNTFjOWQ1MDkxYWRjMmQxOTliZTk0ZjU3NzA1YWQgbGVnYWN5LXRydW5rCisxOTg3MSA0MWI5MjQ5ZTRkNDg2M2JkNWFhMmJhYzc2MmEzNTg3OTE1YjNjYTEwIGxlZ2FjeS10cnVuaworMTk4NzIgODZmZDcyM2YyOTI4NmEyYzNmZDczNjczNzdmNzA3YmY4ODU1MjE2ZiBsZWdhY3ktdHJ1bmsKKzE5ODczIDRmOWRiODM0ODI1Y2FhMGMzZmQ4YjE2ZWQ2N2ZiNzlhY2U5OTIxNTIgbGVnYWN5LXRydW5rCisxOTg3NCBlZWU3ZDBjNWFlNTkyYWY0ZGU5NTBmYjcyYjM2MjA5NGMxOGJhNTIzIGxlZ2FjeS10cnVuaworMTk4NzUgZTU5ZWRhNTI1ZmMxZTdiNTJiNzQ1ZWIzZjhmMGEwZmNkYzBiY2Q3YyBsZWdhY3ktdHJ1bmsKKzE5ODc2IDJkYzNjYTFkODkwYzc3MzE3ZTYzNGNkYjY1NWEwMzNjMTlhMTQ0NzUgbGVnYWN5LXRydW5rCisxOTg3NyBmM2ZiMDViZmVlZWIxMzVjNmU5MjY2ZjYxMGJiZTI5NjdhMjVkMjc4IGxlZ2FjeS10cnVuaworMTk4NzggNTM0YTkzZDgyZWRjYTFhZGZiMGU4ZTBjZTY2YTgwMTlkNjI3MzAzOCBsZWdhY3ktdHJ1bmsKKzE5ODc5IGI3YjA0OGRhMTY3MzVmMDRjMTYwYzFkNjEyMTgyMmFiNmExNWM3MjggbGVnYWN5LXRydW5rCisxOTg4MCA1NDg3MTZlMmYxZjEzYzM4YjhiNWZhZDgyYWUwMGY4MzhlMDM2NDcwIGxlZ2FjeS10cnVuaworMTk4ODEgM2I0OTRjNWM2MjM0ZGVhZDExYTM1Yjg2NzYxMzk4MjRkNDNjOGI2OSBsZWdhY3ktdHJ1bmsKKzE5ODgzIDRjMTdjYjJjNjIxZTliZDA5YWJiN2JiMjA5MDY2NjFkZTlhMGEyZTggbGVnYWN5LXRydW5rCisxOTg4NCBhMWRkMGIwNzA5ZDIwNjNmZjNmZjZjZTdkNTA3YWIwNTU5MjQ2Y2FjIGxlZ2FjeS10cnVuaworMTk4ODUgOTlkZTRiZjJiOWU1NTE5M2IyODBhNzBjYTlkMDliMmVlMGEzMmVmZCBsZWdhY3ktdHJ1bmsKKzE5ODg2IGQ1NmQ3N2Y5MzczYmRlZjk5YmIzYmZmODEwOWQzZmZiMjIxMDM5ZTAgbGVnYWN5LXRydW5rCisxOTg4NyBkYjU1NjA0MzUzYjNhMmE0ZGEyYzkzNmMyMTdhNjM2NmE5ODE2NTY4IGxlZ2FjeS10cnVuaworMTk4ODggOGVhZjc0YTExMWViZDkyMDU5ODNhZTgxMmE3MTE5MzM4MDFjZjc0NiBsZWdhY3ktdHJ1bmsKKzE5ODg5IGQxNWFjZTMyMTEwMjY2ZjZlM2Q1MDBiYTk4YjRmMDI5OTU5ZjI2ZGYgbGVnYWN5LXRydW5rCisxOTg5MCA2YmRmNTYzYzc2M2IzYTRkMDMzNzcwYzk3YTZhNTE1YTNhOTNkZjY3IGxlZ2FjeS10cnVuaworMTk4OTEgM2M2NTBkOWMzOGU3NGVlYWMzZmU0MGY3YmZjNjdmODI3ZTQ1YzQ5NCBsZWdhY3ktdHJ1bmsKKzE5ODkyIDE5YzJmNTBlNTM5NTcxYzRlZjlkYTU3MmM2ODY2OTFiNjU2NmMxNWIgbGVnYWN5LXRydW5rCisxOTg5MyAzZjVhNTRhOGExZmI1MDU4OTY3YTNmMGIwZGRmZDc4MDlhYWFhYzQ4IGxlZ2FjeS10cnVuaworMTk4OTQgN2EzNmY2MjAxYzk0MDA3MmQyZjM2MWFjYjgwMmE5YzQ0YmJjYjRmNCBsZWdhY3ktdHJ1bmsKKzE5ODk1IDg5NTQ2YmRkYzIyY2MwZGVlZjFiNGRjNjZjMjY0MDIwYzllMzQyM2QgbGVnYWN5LXRydW5rCisxOTg5NiA5NTNjNTBmMTIxODRhYWUyYzQwMjJiNGRiYmQyNjc0YjQ0ZTFlNTRkIGxlZ2FjeS10cnVuaworMTk4OTcgZjBlZmRjZDI0NTEyZmI4ZDRiNGI0ZjBlMDYwMzA3NzkwYWM0ZmFhMiBsZWdhY3ktdHJ1bmsKKzE5ODk4IGNkN2FjNGQ5YWRkMDIwNzlhMjhiOTcyODY1YmY3ZGI5Mzg1OTJhNGYgbGVnYWN5LXRydW5rCisxOTg5OSBlMjFkNGMyMDU2NWQwMGNhNDI0NzMzNDRhNTI5ODRhMzdkMDZlZTZjIGxlZ2FjeS10cnVuaworMTk5MDAgM2NmYmJjYmY3MTM0ZDExN2I4MjEzODBmYjJiNTU2ZGJhOWRlY2E1MyBsZWdhY3ktdHJ1bmsKKzE5OTAxIDk3MWZmNmI1OGVkYmZiN2U2NmZiNTE0ZWUyODE0ODE5YzhjMmUwZjMgbGVnYWN5LXRydW5rCisxOTkwMiBmNDE0NmNhMGYyOTIxZTIwYjRkNzQyYzU4ZjczMWYxODEyODA4NTAwIGxlZ2FjeS10cnVuaworMTk5MDMgMmE4MDE5MWQxMjAzMGU4Mzk4MWJkMDc5YTAzYmJiNTJmMTM2ZmUzMSBsZWdhY3ktdHJ1bmsKKzE5OTA0IDUxYzZhMmNiMDNkMWI0MTllMWQ0YTZhN2EzMWEzOGI5MzMwY2M4NDEgbGVnYWN5LXRydW5rCisxOTkwNSA2NWE2MzhhMjRmN2U5NTRmNDgwNzdiYmVkMzg1NzA3NGI2MzFjOTdhIGxlZ2FjeS10cnVuaworMTk5MDYgM2VjNTAwNDAzZjAxMGQ4ZWZkNTQzMDcxY2VlZWEzOWQxZDAyN2M1OCBsZWdhY3ktdHJ1bmsKKzE5OTA3IGI0MGFiMzEwNTUyMWYxOTQ1Y2RkYjc1Yzk2Y2FhYzUzMzEzMzI5MWMgbGVnYWN5LXRydW5rCisxOTkwOCAxZTU4ZDc4MmMwOWFjOWYzZmMxMzViOTU0MGMzYzc1Y2Q4YzU5YjkzIGl0ZXItYnJhbmNoCisxOTkwOSBkNTgxMWFmOGFjZjNkZDRlMzI4YmRiZDE2YjcyODFjN2RhYWY4NDQ5IGxlZ2FjeS10cnVuaworMTk5MTAgNTMzY2M5MDdlZGJkMmNiNjEzNzlkZDc1MDQwZjA1YTA4NzI1MGIzMCBsZWdhY3ktdHJ1bmsKKzE5OTExIGJhODFkNzlkYzNhMzFkYWY1NzAxZjdmZTI0ZjJhZmVlMzlhNDk0ZDUgbGVnYWN5LXRydW5rCisxOTkxMiA3ZTFlNjcyNTUwOWU2YzU5NzFjOWU5NGQ4MmU0ZGNmNzk0MmQ0N2Q0IGxlZ2FjeS10cnVuaworMTk5MTMgYWQ3NDE3NDVjYjZjMDk0MTYyNmZjYTU0MDRiMzJhZWVhNDJiY2E1ZSBsZWdhY3ktdHJ1bmsKKzE5OTE0IDhhMzQ4MzA4MzE2ZDU0NGZiMDY4MWVjNDk0OGFkODEzMmQwNmMyN2UgaXRlci1icmFuY2gKKzE5OTE1IDQyMGEwNzgxYmI5MmY3YzYwMTFjN2U4OGE2ODAyMWNjMWY2NTQ0Y2YgbGVnYWN5LXRydW5rCisxOTkxNiBjMWVkYjE0ZjA0M2JiYjczMmEyZWQyNDcxYzA2OWVhYmVlNzQyY2ZiIGl0ZXItYnJhbmNoCisxOTkxNyA0MGFkMGEwNzYxZDI0ZmE2NTRiMDE1YmVkODdiMTQwZDdjNmFmMjI4IGl0ZXItYnJhbmNoCisxOTkxOCBmMzk0YWY4YzU4MGYwNTUxZTQ2MDkzYWFkMmQ0OTU5YTQ3ZTY5MGMzIGl0ZXItYnJhbmNoCisxOTkxOSA2MmY3NGMyNTk3NjJkZmU1ZTVlZDA0ODNiY2QyMGI2NGE5MjExZDczIGl0ZXItYnJhbmNoCisxOTkyMCAzZjU1ODdjMjhhNTBmOTEzYTdjMGQwNWNiZWRkZDI4OGUyOGVkNjdiIGl0ZXItYnJhbmNoCisxOTkyMSBmNGQ0OThhOWQ5ODkwM2ZiYzE2ODEwMDJkZTFjZTI4YmYwMTBiZTI3IGl0ZXItYnJhbmNoCisxOTkyMiA1Mjc5N2I0YjM3NWJjOTQyNmNkMWIwNzQyZWFiZGQyZWUzOTVkMzgzIGl0ZXItYnJhbmNoCisxOTkyMyBkMjdmODQ0ZjZjZmU1NjJlMjczYTU4ZTA5OTY0OGRjZTE2NmZmZjVkIGl0ZXItYnJhbmNoCisxOTkyNCA5OGEyYmI5MDUyMGQ2Y2Y1ZTI4MzA4ODc0OGJiNTFmYjg1ZDAyOGYxIGl0ZXItYnJhbmNoCisxOTkyNSBhZmIzM2ZlZjE0Y2I4ZTM2ZTRjZjRiYTg4MTg0ZjA1MWUyZjZhOGFlIGl0ZXItYnJhbmNoCisxOTkyNiAzYTg2NjZlMTI5YWRmOWViNmUwYzZiMDQ4ZDdhNGVhYmI0MTc5MWNlIGl0ZXItYnJhbmNoCisxOTkyNyAyMjBiNjI3MzhkNzQyODEzMzkwMmM0M2VkMmY1MDBhZjYxNWY4ZjYzIGxlZ2FjeS10cnVuaworMTk5MjggNWQ2OGFmYzUyMjdjOTFiMWJmM2RmMmFhNjk4YzE5MjE1MTE4MTY1ZCBsZWdhY3ktdHJ1bmsKKzE5OTI5IDE3MmQyYTI4MTZiZmEzYTBhZmViMTI2ZjBiZTAzNTdmNDI4OTQ1MTIgaXRlci1icmFuY2gKKzE5OTMwIDA5NWI4MGQyZTc4NWQ5ZjkyMGM5ZWIyNDRkMmM3MmY2OWVmM2U4MmMgbGVnYWN5LXRydW5rCisxOTkzMSAyZWQ3YzU4OTQzZTYxMTJhZjI1ZjliYWE3ZGNjZjg0YTcxZThlOGM0IGl0ZXItYnJhbmNoCisxOTkzMiBjNTdhMWI2NzgxYjA0ZmI0NTE3ZDMxZWE5ODdhNmFmMzA2ODdjNDk3IGl0ZXItYnJhbmNoCisxOTkzMyA3YmIxMjU2YjUwNmRiNDY0ZGU4YWM5OTQ0Y2ZiYjRiMTFmNjU3YjI1IGxlZ2FjeS10cnVuaworMTk5MzQgMzM3NWEyYTk4ZTU2NmZkMTNlNDNjMmJiZjY5YmY4MzdhZGNkMTVkZCBsZWdhY3ktdHJ1bmsKKzE5OTM1IGViNDM2NmIzZTM5MWFhOTBjM2M4MzcxMzU1ODg5MGNhNTM5NWUxMWMgbGVnYWN5LXRydW5rCisxOTkzNiA2Y2E3MmQ3MTUzNmUwYzdmMWRlZWI4NGY2Nzg1NzE4M2Q0MTBjOTM1IGxlZ2FjeS10cnVuaworMTk5MzcgZmY3NWMzODJmMGQzMmUwZjcyZDM5MDNkZGIxYTg2OTZlMTQzZDUwMiBsZWdhY3ktdHJ1bmsKKzE5OTM4IDFmNzAwYTcyMDZiMmZjNDRmYjNhNzJlYzFkOTRiMTYyMGNkYWEwMTAgbGVnYWN5LXRydW5rCisxOTkzOSA1ZTZhYjkzOWJkYmNjNGRhNmM0ZWRkMDRiOTk3OWZjOWU4Yzc3MDkxIGxlZ2FjeS10cnVuaworMTk5NDAgYmQ0MGIxM2ZhNWFiZmFiOTNkYTRhMzU1YTY4NTNhZmUxMDZiMzliZSBsZWdhY3ktdHJ1bmsKKzE5OTQxIDdlYjVhNmU4Yzk4ZDQ1MGNjYmQzOGIwOWRjYWY2Nzg1ZDA3OTgxNmEgbGVnYWN5LXRydW5rCisxOTk0MiA3YTQxNzVlMTA2MjZjZjc0OThjMzkyOGQ0MTFlNTU4Zjg5NzM1MTM0IGxlZ2FjeS10cnVuaworMTk5NDMgZDU4ZTkzZGFmYjk4YzJmZGRkZjUwNTFlZjM2ODNhNmRhMDcxM2M2MiBsZWdhY3ktdHJ1bmsKKzE5OTQ0IDRlNmYxNGU3NTU3ZTk5MDA1NDc2YzRhMDkwYmZmMTA4MWQ0MmRkM2MgbGVnYWN5LXRydW5rCisxOTk0NiA5MGU0MDY0Y2EwNDVlY2U4ZDFhOTg1MDJkODJjN2YwMDZkZWQ0ZWRlIHJlbGVhc2UyMC1tYWludAorMTk5NDcgNDE1YTE5YmIxNjc1YzQ3OTRjMTY4YzY0ZWI4ZDQyNTJkYmZmNTFhOCByZWxlYXNlMjAtbWFpbnQKKzE5OTQ4IDc0MzI5NmNlMDUyYjE4N2FhMDc0MzBhZmRlYTU0NjA2OGM5M2E2ODAgbGVnYWN5LXRydW5rCisxOTk0OSAxNGI3YTdiOGQ1OGRiYmYyYTRkZTJkYmIxODRmNjIxZTg1YjcyNDkyIGxlZ2FjeS10cnVuaworMTk5NTAgNzk3ZWJiNzAzM2Q3MjZlZjBlOTI4ZWM0OGI5YWFlYTQxNDBmN2VhMCBsZWdhY3ktdHJ1bmsKKzE5OTUxIGExMDY2ZTVhMTA2NWNhZDQxNmVmNGMxYmFmZjk4NGMxZGVkMzcwMmUgbGVnYWN5LXRydW5rCisxOTk1MiBkYzBmNjJlNzU4OGIzZTg5NWNkZDRkODM0OGIxNjQ3NjZmYzdkMjU2IGxlZ2FjeS10cnVuaworMTk5NTMgM2Y1Mjc2Y2JiYzRkYTI0NGFhZmM0OGY5MjllYzY1ZTIxYWFmOWJjZSBsZWdhY3ktdHJ1bmsKKzE5OTU0IGE1ODE0ZjYyMGU4NmQ5YTcwM2Q2OTdjOWYwMmNkZDg4YzhjMTdiOWUgbGVnYWN5LXRydW5rCisxOTk1NSAzM2M4NjgwYjNiMzU0MDQ2ZDIzMjRhODZjMTdmYzJhZDk5OTA1MmE5IGxlZ2FjeS10cnVuaworMTk5NTYgZDdlMDJiOWVlMTc5YzFlNDNhZGNmZDRhOWRhYzlkNzkwMjI1MDcyZCBsZWdhY3ktdHJ1bmsKKzE5OTU3IDU0NjkyMmZhOGQ5OTQ5MGEzNDAyM2Q4NmVmNzFhMWNiNjBiMmVjYTQgbGVnYWN5LXRydW5rCisxOTk1OCBkZDA0YmJmZDVhNzZjZWVhYTA1MmQ0MTMxYTMyZjhjYWMxZjI4NWM3IGxlZ2FjeS10cnVuaworMTk5NTkgMmMxYmU3OTI0YjA0YWZhZjc0YmFjN2MzYzc3ZTEyMDZiZTQ1ODM2YiBsZWdhY3ktdHJ1bmsKKzE5OTYwIDI2Y2RlZDU5YzE3MjUzZjk3YzY1ZTE0ZDNjNzI0OTBlMmYzZGZjMTAgbGVnYWN5LXRydW5rCisxOTk2MSBlYjRhNWZmMGY3MmNjODUzNzI5ZGM5YmRmMzdmYzIzM2E1ZWQzZGRjIGxlZ2FjeS10cnVuaworMTk5NjIgZWU2NzkzYWUwNmMxNGUwMDM4NzI4YjY0ZjNjY2Y3YTFlZmZkZTEyMyBsZWdhY3ktdHJ1bmsKKzE5OTYzIGI2NTBkN2RhYTU5M2NjOTZiMjMzMDA2YjEwYzE4YzdiM2NjODYxODMgbGVnYWN5LXRydW5rCisxOTk2NCBiNDVhZThjNDY3YWFmNDRkMGFlYmNjODIyNzEwMjQ2NzE2NTdkNzc0IGxlZ2FjeS10cnVuaworMTk5NjUgNDMxNzI4ODllOGU2NmIxODk4YzVlZjIyNzYzNDI5NTFiNzdiYjZhZiBsZWdhY3ktdHJ1bmsKKzE5OTY2IDQ2MmI4ZGZlODc1MzkxZTk2MzE2MDk2MjdjZjc5NWNiMGNmYTgxZDQgbGVnYWN5LXRydW5rCisxOTk2NyA4MzIzYjA5OGM2Y2UwYjFjNjMxMWQyYWU1M2QyOGNjMThiZDQ0NGFiIGxlZ2FjeS10cnVuaworMTk5NjggOTA3OWY3MGE1YjgzZjlmMjI4ZTVkYTgyNDdkNjYwNDBkY2E1N2MwZCBsZWdhY3ktdHJ1bmsKKzE5OTY5IDg1ZDc0ZjA0MDcxMmU2NGRhNTMwOTQ4ZmVjMGNhZGFjMDRlZTE4NzUgbGVnYWN5LXRydW5rCisxOTk3MCBmN2UyYzNkOWMzODc5MWQzMTc5Y2I1NGEzNDExYTA1NmNiZThhZTRkIGxlZ2FjeS10cnVuaworMTk5NzEgN2UxODFlYmE2YjliZDRkODE0Yjk0YjAxMWUwOTQxMzVkNmExM2Q1YiBsZWdhY3ktdHJ1bmsKKzE5OTcyIGJjMDU1NWJlMjIxMjNhNGQ1YThkYzMyNGNiNWNjMTg4N2Q0NzgyNDMgbGVnYWN5LXRydW5rCisxOTk3MyA1MmNiMGM1ZmRmMjM4MDk5MjgzOTJkMzIzNDYxYWQxYzZhMjJjZTMzIGxlZ2FjeS10cnVuaworMTk5NzQgZjI3MTdiMDEzN2QwNzI3NGRlYWFmYTUwMWY3MzU5YTIxYjgwOWMyOCBsZWdhY3ktdHJ1bmsKKzE5OTc1IDY0MzRkYzc3NmNiOTc1YTJjMzU5NTA2NGEzZjdkYjkwMGZhY2ZkMTcgbGVnYWN5LXRydW5rCisxOTk3NiAxMzgwYTUyZjFhMjE4NjI5MGY5ZWE1Y2MyNTlhMjljNzg1NzUyN2U2IGxlZ2FjeS10cnVuaworMTk5NzcgY2U4YWMzN2RiMzAwYTVhNzQwNDhmODU3YjM5YmI0NWM0N2QzNjQwZCByZWxlYXNlMjAtbWFpbnQKKzE5OTc4IDZhNTI3YmU0YzRkMTkwN2Q4NGQ5ZWI0MzYyMGU1Njg4ZjNjOGZmOTUgbGVnYWN5LXRydW5rCisxOTk3OSAzZjIyODFlMjRlMmRjNGNjOWE2MTk5ZjRkOTU3YTVmMDQ1MzQyNzJkIGxlZ2FjeS10cnVuaworMTk5ODAgYzA2NGMwZDNjNDliOTM2MjI0OWY2ZDFiY2RiNGU2NmVjZTUwNjczYyBsZWdhY3ktdHJ1bmsKKzE5OTgxIDc0MDQ2NzgyMDcyZDYwOGM4YWMwZDc5Y2NmZjQ5OThlOWE3ODJjNDEgbGVnYWN5LXRydW5rCisxOTk4MiBiMWFiYjI2MjI5NzkzZGY3YzVmZGRiZThlYjkzMzBjYTNlYTYwZGM4IGxlZ2FjeS10cnVuaworMTk5ODMgN2U5MzhmMGU5YTQ5NzU0OGU4OTlkNDJhNmQ1ODdlOGI0NjQ0YzZlYSBsZWdhY3ktdHJ1bmsKKzE5OTg0IDc3MTk2NTU3ZmQzMTY3Y2FlNDMzZGI4MDljYTc3NTMxYzFkYjYyZDMgbGVnYWN5LXRydW5rCisxOTk4NSA5Y2ZkOWMzMjk3ZGQ0MjkzYzYwMjNjNmIwYzU0ZWE4NzE4N2FmMDAxIGxlZ2FjeS10cnVuaworMTk5ODYgNDVhZDdhNDY4YmEyYTM1M2JmYzZkNmYyNDhhYWI4NWVjNmE4MzVkNyBsZWdhY3ktdHJ1bmsKKzE5OTg3IGRkNWExYjI4MDQ0MDc5YzA2MjJmMDVlNzAzY2FkNjI3NDQwZDRjMzYgbGVnYWN5LXRydW5rCisxOTk4OCA1NzlhYzhlMzVmNWI1ZTgyNzc4NzdmNTU1ZDgzNGU4OTUxZTA0NDIwIGxlZ2FjeS10cnVuaworMTk5ODkgOGYzMzkyNjllMDI3ZDZmODkxNmMzZjNkZWQ2YzVkOWEwMjViZWI3NCBsZWdhY3ktdHJ1bmsKKzE5OTkwIGMyMTRmMzcyMDY1OGUyYjg2NTM1ZjA4NjJiYzk3NDdkZjA2OWY0MWMgbGVnYWN5LXRydW5rCisxOTk5MSA5ODlmZWQyOGI3NGYzM2E0NDhlMDRmNjM5Y2Q4NGY3MzFiNDcyMDc2IGxlZ2FjeS10cnVuaworMTk5OTIgZDllZTU2YjZkYjI2YTU0N2ZkNzNmOGM1ZWQ2OGU2ZWM3OWYwOTQxYyBsZWdhY3ktdHJ1bmsKKzE5OTkzIGRjZjczZjEwZjdjY2YwM2Q3OWNkZjExYmQ0ODkxNTE1MTgwNTYyODcgbGVnYWN5LXRydW5rCisxOTk5NCA5YmYzNzQ5MzM4NzIwNWFjZjNkZGJlYTdjODBhNzQwZGYyYTFmM2ExIGxlZ2FjeS10cnVuaworMTk5OTUgZWRkYTRhNDMyMzliY2MzMGI1MGMyMDMwNGU4OGE2N2ViNzg0MjI0YyBsZWdhY3ktdHJ1bmsKKzE5OTk2IGEzOGNjZTNmNDFiNDFkZmMyMjBkYTM1NmM1Y2YwYTUwNjUxZWU1YTEgbGVnYWN5LXRydW5rCisxOTk5NyBhNDg4YTYzY2I4Njc0ZTZiNzA0MjRjOTY3MDMxODJlNGU2OTk5OWUzIGxlZ2FjeS10cnVuaworMTk5OTggOGZmMjRhYmViMzg4MTEwY2I0YzU4Mjc1ODVhYmNkZDllZjM0MGVkMSBsZWdhY3ktdHJ1bmsKKzE5OTk5IDE4MjNmYTIzMTUyMTVjMDRlODVlMGQ0YTAyZDBlMDlkOGIxYzQ0NmYgbGVnYWN5LXRydW5rCisyMDAwMCBhZGM4YTQxYmVlOWY2OTc2OTEzYjJiMjUxOTFlMTk0Nzc2Y2UyODk1IGxlZ2FjeS10cnVuaworMjAwMDEgMzNmNzc2OWEyMThlZDdiNTRmNmI3YTg1ZDlhNTYyNWIwMjgwNWY3NyBsZWdhY3ktdHJ1bmsKKzIwMDAyIDdlYjhiMjQwZGQ2YzRiMDE3NzVmYTg5YmNiOGUwZmEzN2M1MGVlYmIgbGVnYWN5LXRydW5rCisyMDAwMyA3ZWQzZTdhMDhhMzEwMTlkYzgzOTNkNzAyNGE3MWY0MzMyN2I0NzhkIGxlZ2FjeS10cnVuaworMjAwMDQgYmY2NzhhMTFjMjFhZWM3ZDE5ZmI3NDU4ZTcwYzMzYTNiODUxMzliMSBsZWdhY3ktdHJ1bmsKKzIwMDA1IDc2ZWFiMmViY2U1OGE0NGI0ODgwZTVlMmNmM2EwMjIwOWY2NzZmNzcgbGVnYWN5LXRydW5rCisyMDAwNiA0ODYzYjU5NWJkYWU4NjAwMTI0NmUxNGJmMjEzMzNiNWQxNTlhZjliIGxlZ2FjeS10cnVuaworMjAwMDcgNmZlMTNkMDA4ZTI1ZjdhOTMyZTMzY2YwMTUwZWRhYzkwNmUxZDE3ZSBsZWdhY3ktdHJ1bmsKKzIwMDA4IGUxMjE0ZjllMTJhM2NjZjE4NjhlM2ZkNWYyNThmZDAyNzQ3Y2RhZWMgbGVnYWN5LXRydW5rCisyMDAwOSBkMzFhZGQ5OWE4NDY4Y2E4Y2IxMzAwNTJjZGY0ZDZhZmEzOWMwZWRhIGxlZ2FjeS10cnVuaworMjAwMTAgMzNkOGRkMDJhYTk5MTI5MTlmZTYyYmM3ODNhNjNmODY3M2NiZWYzMSBsZWdhY3ktdHJ1bmsKKzIwMDExIGY5YTA3ZTk5OTA3ZTZlYjk3NGU0OTNhNDRlYzUyOWFhYTdmYzFhMTggbGVnYWN5LXRydW5rCisyMDAxMiAzYjZlYTRjZmVlZTA2MmVjYmJjMGY0Njg2OTRlOTY0Y2VmYTIxOGU4IGxlZ2FjeS10cnVuaworMjAwMTMgODQ4ZjA4NTU5OTE2ZDRhNzMxODk2ZGYzMjgzYzQwMjVhMTRkMWQxNyBsZWdhY3ktdHJ1bmsKKzIwMDE0IDY0NmVjMmE0ZDdmNGUwY2IyNzYwOTAyODYxMjkwZjY3Yzk5ZGY2OGMgbGVnYWN5LXRydW5rCisyMDAxNSA5ZTZlNGY1ZTU2MDQ1Zjg2NDM1MjIyNWQ5ZTcwZDdjNGM2M2Q1YzJkIGxlZ2FjeS10cnVuaworMjAwMTYgZGE2YzY2Mjk4MmI2NDQ0M2FhZTExOWY5ZGQ2MTYyNTY2OTQ0MzFkMyBsZWdhY3ktdHJ1bmsKKzIwMDE3IGE4MzAxZDRlZDJiMWI5NTg5NmUwYjdhNDk5ZThlZjhjMmI3MDY3YzggbGVnYWN5LXRydW5rCisyMDAxOCAyMDU0Y2VhMzg3NTRiZDNiYWRiY2EzZmM0NDAzYzQzZmJjZDQ2YTNjIGxlZ2FjeS10cnVuaworMjAwMTkgMWI4NzQ1ZmFhMmVkMmM5ZjE0YmVhYzVlY2MyNWIzNzMyZjc4N2E1OCBsZWdhY3ktdHJ1bmsKKzIwMDIwIDU0YjZkMjhhNjg3OGM5YjEwMmM2OGVkNGJmMzk4MzQ4MWIyZTVhYmYgbGVnYWN5LXRydW5rCisyMDAyMSAxMTQ2MDcwZjQ3ZWM2YjdlYWM0NDVkNWM4NjY4OWFhNTQzZTE5NzU3IGxlZ2FjeS10cnVuaworMjAwMjIgMzJiY2I0ZTIxMDA1NGZmMTgyZjRjYjUxMjg2MzQ1MDc5MjM3NTk4OCBsZWdhY3ktdHJ1bmsKKzIwMDIzIDBiMzNmYzY3Y2E0ZTQ5ZDdlM2FmNDRjZDAxN2IwMGRhMTczNmYzNGYgbGVnYWN5LXRydW5rCisyMDAyNCAxYzkwYTFjZjc5NWM5NjgwYjdlNDc4YzM4ZjdjYWM5MmZjMWVlMjQ5IGxlZ2FjeS10cnVuaworMjAwMjUgNTUyMThlMDQ5NWJjNDc4NGYzYmE3ZWE1NDRjOGQxOTQyODYxM2JiNSBsZWdhY3ktdHJ1bmsKKzIwMDI2IGQwZmQ2MGM1OWFlZmFkMGE4ZWY4ZWJiOThiOWYyMzRkOTljN2RmNWMgbGVnYWN5LXRydW5rCisyMDAyNyAwZmEyYzA1MTg4YTBiNzljNmU5MmU0MDU0ZTYyN2U5NWY4YTVjNzgyIGxlZ2FjeS10cnVuaworMjAwMjggMjA2YTlmMTk3OGU1MDBhODY5Y2ZhM2Y4MjA1ZmQ2MDlhNjdkZjU4YiBsZWdhY3ktdHJ1bmsKKzIwMDI5IDJlZDg0NWY4MWIwYzVkZjg4NDgxNmRhMmYwOWFkZmUwNDYzMzYxMWUgbGVnYWN5LXRydW5rCisyMDAzMCA4MTZkODYwMDI2ODMxYjI0MDlkZjA2NTMzN2RkN2MwNjM2OWMwMjBmIGxlZ2FjeS10cnVuaworMjAwMzEgNzI0M2RlYjAyMGU4N2UzMmMwNzViYmQ0MTQ5ZTc4YjdjZmUwNWNiMCBsZWdhY3ktdHJ1bmsKKzIwMDMyIGM5YjRlZmYxNWRjZGFjZjc5MDQ4NDVjYjlkNzAwYjRhNTVmMjVkMjAgbGVnYWN5LXRydW5rCisyMDAzMyBmNThhNjVkNGNjMjM3ODM3ZWQ1NGY3M2M2YjE0NDQ4OTE1MTE1YzgzIGxlZ2FjeS10cnVuaworMjAwMzQgZjQyOWVlOTQ0OGFhZDRkMmViMzc2NDU1M2M3NTU0ZjNlYzQ3NmNjMyBsZWdhY3ktdHJ1bmsKKzIwMDM1IDhmYjEwYWZmYjYxNTdhY2RlNTdlY2Y4MjFmYjEzYjk3ZTVhMDNkYzIgbGVnYWN5LXRydW5rCisyMDAzNiBjMmU0YmEzYzg1Y2M5MmNiODM5MjkyMDcwYWJiZmI3YTQyZWExNjBiIGxlZ2FjeS10cnVuaworMjAwMzcgYmJmNWVhMmEyMmU1NTk3YjlkN2M0ZGE1OTg2ZTliZmFhYTJmZDk5ZiBsZWdhY3ktdHJ1bmsKKzIwMDM4IDgzNjg0MDQzNzNlY2NmMjYzN2YzZmJlMzAwNTM5ZTY1MjRlMDMyMWMgbGVnYWN5LXRydW5rCisyMDAzOSBmMDdiYzRmOGRiOWU2OTg3Y2QyZjY2NzVmZjIzMTM5NTI3NzZmMDQ5IGxlZ2FjeS10cnVuaworMjAwNDAgMzQ5Yzg3ODg2MDRlMjkzMjQ5YjllZWFkOTJiM2ZmMGMzMWM0MjlmNSBsZWdhY3ktdHJ1bmsKKzIwMDQxIDIwNjgwOWUyNWI1MGQyZGRlMjM4OGFhODE5MjliOWU1NWIzZTFmYjggbGVnYWN5LXRydW5rCisyMDA0MiA1MDgwN2M0NjUwMzRiNjlhMjNjMjg0NjZkZjcwYWU4NjFlZjQyNDA3IGxlZ2FjeS10cnVuaworMjAwNDMgYzc0YzRiZGNiNDExMjJmMzgwODNhOWRhZGQ5OTY4MGQzNjJlNjFkNiBsZWdhY3ktdHJ1bmsKKzIwMDQ0IDI2MDg2OGNhZTFhMWQ1ZGZkODc3ZmM0ZjFlZmU4OTZmNGU2NGVlOWQgbGVnYWN5LXRydW5rCisyMDA0NSBjZTkwZjU2N2ZhNDIwMmE1OWM0ZDdhZTExNzFiOWUwN2M3OTViNTM0IGxlZ2FjeS10cnVuaworMjAwNDYgMGI4YjZmODQwNmRjZmI4MDZkMmVkOGY1OTBlYmZmOGY0MWU2ZmIwMSBsZWdhY3ktdHJ1bmsKKzIwMDQ3IDNiOGE1YmJmZDJlNTcyMGQ2ZTk2MTQwZTRjNDBkNTBiZjQ5NTkxYWEgbGVnYWN5LXRydW5rCisyMDA0OCAxNTUwODcyMjQ5ZTllODUxOTMxMGYxYmZmY2M5Yjc4NDlkOTQwNzZkIGxlZ2FjeS10cnVuaworMjAwNDkgMWJlMGQxYzU3ODM0MDI1ZGQ1ZDFjMzM1ZDJiMDkwZmY1MDU3MTlmYSBsZWdhY3ktdHJ1bmsKKzIwMDUwIDhjNmYyMmNlZjg3ODIyZDZlMDBhYjY1ZTExYWE2OWQyYzU5ZWZhYmYgbGVnYWN5LXRydW5rCisyMDA1MSBmNzIxNzNjNzkzYjZkODMyY2JlNDc3ZjY2NjU2ZjFjMmRlMzRlOTY4IGxlZ2FjeS10cnVuaworMjAwNTIgMTA5NDA1NjFlODkxYzEwMGM5OTM1YTE5ZmU1Mjg1MTBjMDZiOTdhMCBsZWdhY3ktdHJ1bmsKKzIwMDUzIDcyOTE4OTFjYjBiZjc2ODdjYzVkZjA3M2I2ZTkyM2JlMDU4OTdhNDEgbGVnYWN5LXRydW5rCisyMDA1NCBlM2I1ZDAzZTNkN2RiN2M2Y2ZiYjNmNjBkZWFjNjJiYjM4NmU5YWMzIGxlZ2FjeS10cnVuaworMjAwNTUgMTQzZWY4OGVjODU2MzRiNDQwNjZlNmRkN2U2NzQ1NTJiMjc0YWM1MCBsZWdhY3ktdHJ1bmsKKzIwMDU2IGFkNjgzZjIwYmIxNDA3NWIxYWMyMTE0MWZmMDMyZmU5MTZmZmJiZTQgbGVnYWN5LXRydW5rCisyMDA1NyBiNDRlNzdhMTI5Nzg4ZGU1YjkwNjIyOWE4MjA5YWZkYTdiZTUyOGFiIGxlZ2FjeS10cnVuaworMjAwNTggZGM5YTE1MWEwYmQ1MmE5NjgyYmQwNzcwMGU4ZDIyOWI4YTI2OTAyMCBsZWdhY3ktdHJ1bmsKKzIwMDU5IDlkYmFiM2Q1NGRlZWVjM2ZhMGM1NDZmZTBhZTg5Yjg1MmIwYWM0YzUgbGVnYWN5LXRydW5rCisyMDA2MCAzNDZlOTc4NjMwYTljM2JjN2RlMWJmMDZmMDc2NTc0MTA5ZmIwNGQ5IGxlZ2FjeS10cnVuaworMjAwNjEgMGQ1MjM1OGNiMjg4MzQxOTU0OGQ0YTdmODU0MjYyMjUxNDA5NDhhYSBsZWdhY3ktdHJ1bmsKKzIwMDYyIGQ4MDc0ODhkZmM3YTEyYjdhZTNmYWJjOTIxYzk1MjQ4OWNjYTIxNGQgbGVnYWN5LXRydW5rCisyMDA2MyA5NjIxOTZjZTcyMzE1NjNmYjA1ODQ0ZmI2M2U2ZTliMTNkODg4NjJhIGxlZ2FjeS10cnVuaworMjAwNjQgNGY2OGQzZjhmZGM4MjAwODA1OTc3OWE4NDVhZDQ4OTdjYWVjMmY5ZCBsZWdhY3ktdHJ1bmsKKzIwMDY1IDEwOTAyZWNhYmNhOWM3MzBhMWRmMGVkMDYxN2U3OTM4MmYwOTNmZmIgbGVnYWN5LXRydW5rCisyMDA2NiA3M2Y0MWIwZmY3Nzc1YWZkZTVmNDI2YWYxYTBkMGQwYWE5ZDU5YzNkIGxlZ2FjeS10cnVuaworMjAwNjcgY2QyNDU1Y2IxM2VmNTVjNjVlYzZmNTg0MDFjMWViMGJlYzBlM2Q3ZCBsZWdhY3ktdHJ1bmsKKzIwMDY4IGU0OTA3ODEwMWE2ODc0MWQ3N2E1ZjA0YjhjYjc0YWI1MTIxYTdkZTEgbGVnYWN5LXRydW5rCisyMDA2OSA1OTZlZmE3ZTdkZjgzY2ZhZmQ3YmE4YTQ0MWEzMGE2MDQ2OTM5ZDc1IGxlZ2FjeS10cnVuaworMjAwNzAgNjNjYWNkZWI4MDQ1YmQ1MTlhMjZkNmQ2YTc5NzIwMDAxODk1Y2M5ZCBsZWdhY3ktdHJ1bmsKKzIwMDcxIDcwN2Y5NWQwNWU2OTA3NjRlODhiZDFjYzRhNjdiMjRkZDAzOTRkMjkgbGVnYWN5LXRydW5rCisyMDA3MiA4ZGYwZjY1ZTM4NjAzNTg3ODE2ZDE5NTc3ZGI0YjlmMDFhOThkYTRmIGxlZ2FjeS10cnVuaworMjAwNzMgYTdiYmYzM2ZjZTA1YWU0YmJmMDIyOWUxMjc5OWJiNWZhMzkyZTg5YiBsZWdhY3ktdHJ1bmsKKzIwMDc0IDc5MTZkMzJhYTA4MTI1ZDhjOWRmNmVkZmM2MmRkMjg4M2M4ZmY0MDcgbGVnYWN5LXRydW5rCisyMDA3NSA1ZWUzNTQzZWEzM2Y0MjUwZTk3YzgxZmU4Yzg1NTQxZjQ2ZDk3Y2YyIGxlZ2FjeS10cnVuaworMjAwNzYgOWU2NDY4MzU2YTBiMzM3MTY1ZjViMjVkZjA3ZDI1NTZjYWM4ZDk2MCBsZWdhY3ktdHJ1bmsKKzIwMDc3IDU2ZDE5NWYyMWI0ZmUwZGE4ZTVhY2RhOWVlYWI5ZjQyZDdlZjlkNDUgbGVnYWN5LXRydW5rCisyMDA3OCBmOWEzMDAxNWU4YjBmY2I0ZmNjN2Y1Y2YyY2Y3ODdjMmU0MTJlODljIGxlZ2FjeS10cnVuaworMjAwNzkgZjJmOGYzZTJhYzIzMWMxYmY0OWFjZGM1ZjI3NDc2OGMwYjE3YmQxZCBsZWdhY3ktdHJ1bmsKKzIwMDgwIGQ0OGQwOWM3ODdhODQ5ZDE0MDU4MmU3ODVmYmI5YWI0M2FmNTk0ZDcgbGVnYWN5LXRydW5rCisyMDA4MSBmNWQzOGM1YjE3NTFlM2Q3MTZkNWMxNTYzYTA4NzQ5ZjgyZGVkZGM3IGxlZ2FjeS10cnVuaworMjAwODIgZDcxOGMyOTNhMWZmYTJiN2Y0Zjk4MThiYzcwODI2YzBlMTBlYjEwNSBsZWdhY3ktdHJ1bmsKKzIwMDgzIGJhY2FjNzVkMjJmZGU5ZTg2YTI0ZDBkNjBhNzg1NTMwZGEzMzBjOGMgbGVnYWN5LXRydW5rCisyMDA4NCBlYjA2YTAyZTA1MDc2YmU0Y2UxNmQ0YWQ5OTA2NzdkYjFhMDQzYzM5IGxlZ2FjeS10cnVuaworMjAwODUgMTE1Mzc5NmQyMWMyNDA3MDZiZDA5MzEyMGU4MzNmMWQ3ZDUyZjk5NiBsZWdhY3ktdHJ1bmsKKzIwMDg2IDQxMjBlYmUwOGRkMDQxNmNjM2Q3Yzg3Y2FjYWNlNWQwZjE3YjEwOTIgbGVnYWN5LXRydW5rCisyMDA4NyAzNGVmMDU0NDE0MTNmMjZiNjVjYjE1NDAwY2FlODJhMjc3NjU4ZTA3IGxlZ2FjeS10cnVuaworMjAwODggMzhlZjQ2NjM1OTQ5MjY1NjkwM2M3NDRlYjI0ZDZkMDVkMWUwNzliNCBsZWdhY3ktdHJ1bmsKKzIwMDg5IDJlN2Y0NzMxNGFkYWEzMTc3ODM0YmNmMTJkNGJmZDFmN2Q0YTgzZmIgbGVnYWN5LXRydW5rCisyMDA5MCA1NzA1ZDVhOGJjYjNjZDk1ZTRmYWIwZDMzYzEyYTllZjM2ZDhhN2RjIGxlZ2FjeS10cnVuaworMjAwOTEgYzU4YjZkODY4ZDA4MTZmNWE2OTRlMTBhNmJlMzUyNDEyNTRkZWU4OSBsZWdhY3ktdHJ1bmsKKzIwMDkyIDdhNDk0MGE0YWNhNmY3MjllMjkwODBjYjlmZGQ5MzZkNzYwZWI0MjggbGVnYWN5LXRydW5rCisyMDA5MyA3MDU3YjZhYTQ2ZWM1NWZjYTE4MGM1ZmRlNThkNzBlMGM1NmRhZDdhIGxlZ2FjeS10cnVuaworMjAwOTQgYWM2NTZjODM3YjZjNzY0YmFjMTBlYjkyZDA5NmYzMzk3MmVhNmFmYSBsZWdhY3ktdHJ1bmsKKzIwMDk1IDZjZmEzZDY1YWI1NDY5YmYwNjhiOTJlNTJjNmFlYWQ0ODFlM2UzNTEgbGVnYWN5LXRydW5rCisyMDA5NiA5MDU0NmQ2ZTU0NDU0ZmM2ODU5NGEyMDVmOTExMmU2NjExMjFlMWM4IGxlZ2FjeS10cnVuaworMjAwOTcgYjc0MmNhZjBhODYyYTQ1YzNmMTU2NTU3MGE4YmU3M2IyMDU3ZWM4NSBsZWdhY3ktdHJ1bmsKKzIwMDk4IDQwN2Q2MGIyZmE0MWE5NGM5ZGY0ZTNjNjY1Y2E4YzA3ZWQzM2VhMGEgbGVnYWN5LXRydW5rCisyMDA5OSA3ODIyMzk0ODgwNTg1YmY3YjZhNWJhMmQyYWY3ZTdiMjFjYmI0ZTlmIGxlZ2FjeS10cnVuaworMjAxMDAgMTZmMTQ1YWFjMmVjMTJlNWQ2MTIxNzgzMmM0NzQ5YTdiOWYzNjFmNiBsZWdhY3ktdHJ1bmsKKzIwMTAxIGM4ODE3YTliYmJkZGJjNGMwY2NkYWJlMWE2YjA2YTc5Y2I2Yzc0YjMgbGVnYWN5LXRydW5rCisyMDEwMiA1MmRhMDk0YjUzZWMzOWJmOTUwNWFlZjYxOTZlYjhmMDFkODRjNzQ3IGxlZ2FjeS10cnVuaworMjAxMDMgZDNmN2M3ZmFkZWMwMzk4OWNhZWQ3OTQ5MGJlOWNkMDI4ODFiZWFiZiBsZWdhY3ktdHJ1bmsKKzIwMTA0IDY0ODc2YmI4YWFjZGM1YjFkZjlkMDYzNzQ4NDI1YjJjZDI1NWFhNTQgbGVnYWN5LXRydW5rCisyMDEwNSAyMTVkYzcyNWRiODQwNDllZDY4ZjU1YTc1YjhkN2VmNTFiNmI1ZWQ2IGxlZ2FjeS10cnVuaworMjAxMDYgNGQ2ZWU3ZjJiZWU2NjA5YTBjMzA2NzZjZGIxMmE4Njc1NDFhMjRiYyBsZWdhY3ktdHJ1bmsKKzIwMTA3IGYxYTQ5ZWVjN2MyYmYxZGI3NTg1ZDJlYzI3MzEwOTY5MWYwZDE1MjMgbGVnYWN5LXRydW5rCisyMDEwOCBmNmUxZmEyZGI0OGNiYjdhNGY3MmQyNWJlN2Y5MGYwM2QwNGZhNjBmIGxlZ2FjeS10cnVuaworMjAxMDkgYTFiOTlkMDg4Y2VhODI5NGQ1YjkyMTMyN2QyYjQzNGEwMzE4MzM4NSBsZWdhY3ktdHJ1bmsKKzIwMTA5IGI1OWE1MzZhZTFlZjM3NzRmZDg1YzE3ZjYyM2U4OTI2YjdiNmMwOTUgbGVnYWN5LXRydW5rCisyMDExMSBiM2RjZTA2ODY4ZDZkMzVmNTkwMzQ1MmU2ZTkwZDdmMGFjNDE3YzM4IGxlZ2FjeS10cnVuaworMjAxMTIgM2Y5MTJmYjhjMTgwODE4NGViYTYzMjg2N2IyMGFiMWRiYmNiYTM1OCBsZWdhY3ktdHJ1bmsKKzIwMTEzIGI2MDA5NmQ1MDAxYTZlMGQ4MzZhMDY2MGZmOTVjNzljZDExZTAxOTEgbGVnYWN5LXRydW5rCisyMDExNCBlM2NjMjBlOWVhMzZlY2RkNzg3YmZiN2JmZDZkZjAyMTFhM2VkNzQ4IGxlZ2FjeS10cnVuaworMjAxMTUgZWVjMzkxYTU1Zjg0NDAxOWViNGYzZjljNjRjMTZlMzNkODIzMWM2NCBsZWdhY3ktdHJ1bmsKKzIwMTE2IGIyOTE4MzNhMGVmYjdlMWQxNDY2ZDNlNDE3MmViMDEzNGUzYWMxYjkgbGVnYWN5LXRydW5rCisyMDExNyBmOTM5NWY3NjI3YzRiN2JmMjRhZjRiNjk5Mzk2ZDQ1ZmUwZGM1ZDZjIGxlZ2FjeS10cnVuaworMjAxMTggYWI3MDcyMDk0MDliYjk1ODU3NGFkMzQ2MTA2NWE0MTVhODEwZDI4NyBsZWdhY3ktdHJ1bmsKKzIwMTE5IDAyYTRiMGNmYzU3ZTEzNTRiMGVmN2UwYTY2ZTNjOTUzMjgwOTRhYzIgbGVnYWN5LXRydW5rCisyMDEyMCAzZWI4ZDcyNTk5NjkyNGMyYTc1N2ZjMGFjOTYxOTZkNDBmZDY3MThlIGxlZ2FjeS10cnVuaworMjAxMjEgMzJmYjY2NDNhZGYxZjA0Y2I4NzhlYjZmYWI1NTU1Y2U2YmM3MTVmOCBsZWdhY3ktdHJ1bmsKKzIwMTIyIDkyYjNlMDgzMTk3MDJhNGM3MzNiNGJmNDMyY2FlMGMwYzk5MjY2YjIgbGVnYWN5LXRydW5rCisyMDEyMyA0NWNkYTFiMzkzNTViYzc2NjM5ZTNmNWFkZDk3MTdmNzIwYzUyMmRlIGxlZ2FjeS10cnVuaworMjAxMjQgYmY0Y2M5OWQ3MTFkMGFjNzRmMDAxNDU5YTVjYzFiNWVlM2Q4M2MxNCBsZWdhY3ktdHJ1bmsKKzIwMTI1IDRlMTlmYjhjZjFmYmQzOTg3MGVjYmFkNmI2ZDc4ODIwNzhlN2JlMjcgbGVnYWN5LXRydW5rCisyMDEyNiBkMmIwMWQ0ZTE3ZTlkY2ZkMmIyNzZhOThjYTczZDQ5ZGRkMGYxMGUzIGxlZ2FjeS10cnVuaworMjAxMjcgNzFhZjNiNjBhYTYyOTEyM2E1NjQzMjk0YzlkZmVkNWI4NjIxZmVkNSBsZWdhY3ktdHJ1bmsKKzIwMTI4IDVmNzExODVlZjJiNWFkZGVkZTdhYzIxYmJkZTdjZjJmODczMzVmYzYgbGVnYWN5LXRydW5rCisyMDEyOSAxNDEyMzA5NTYzMjU2ZTFlNDMwMTYzZmM3ZmZlZWM3NjY4NWUwZTRmIGxlZ2FjeS10cnVuaworMjAxMzAgMzkwYTgzMTVkNjM0MmI0YzJmNzBmOGEyMWJlYTI0NGVjOGRiZWM3OSBsZWdhY3ktdHJ1bmsKKzIwMTMyIDdjMDQ3MjkzMmZiZjk2MGJkNTliYjI4ZDJjOTJhMTc2MjMyZTVlZjMgbGVnYWN5LXRydW5rCisyMDEzMyAyMmQ4NTAxN2JlY2U4OTg5OWI3MjEwNjJmMzBiMjljZGU5MjAxNzI5IGxlZ2FjeS10cnVuaworMjAxMzQgNTM2ZThkZDM1OTUzMjQ0ZDMwMjZmZGYzMTk2YjZhODRlMjdjNjNlYSBsZWdhY3ktdHJ1bmsKKzIwMTM1IGVlNDgwMzgyNjc4NDc5NjY5MzU3ODk3YjA0MDQzZjE3NjE5OTE1MjEgbGVnYWN5LXRydW5rCisyMDEzNiAxYjEyZTYzNDAwMzg5NGNjMThjODQxMjE1OGZkOWU3ZTFmOGU5ZjhmIGxlZ2FjeS10cnVuaworMjAxMzcgYTM0MGJhNGFhYzI3MGQ4NGFmNmI4ZDFlMDIyYTdmN2Q2NzIxZmEwOSBsZWdhY3ktdHJ1bmsKKzIwMTM4IDI1ZTkzYTAxZjg2ZDllZjA1ZGU0ODJmZmExMmM2NzgwM2I0OTYwZTAgbGVnYWN5LXRydW5rCisyMDEzOSAwMzc3ZjkyN2NhZmEzMzg0NjM4NjM0MGIyZmU3ZDQ0OWFmMDdmYmQ3IGxlZ2FjeS10cnVuaworMjAxNDAgNzUxMDNiZWYwYzI0NTVkMzM4NmNhZjA0NDdkZmJhNDIzZjM1Mjc0MCBsZWdhY3ktdHJ1bmsKKzIwMTQxIDU5NDcyYmNiZmI4ZThhNWFiZDU4YjE3MjdkMDNiNTU3YTcxYzViODYgbGVnYWN5LXRydW5rCisyMDE0MiAwMmNlYzAwZjIyYmI1M2NmNjA4ZDJlMzA2ZjBiODEyMmY4ZmVkMTBjIGxlZ2FjeS10cnVuaworMjAxNDMgNmQzMDU1MmNiNGY5OTA4N2ExZjM5MGFmZGViMTI0M2U5Mjk2Y2MxNSBsZWdhY3ktdHJ1bmsKKzIwMTQ0IDRhYTdhZmJmMjlkODIxNTdlMjQ5YzgzMGYxYjk3NmQ4MTM0NGIyYWUgcmVsZWFzZTIwLW1haW50CisyMDE0NSBmZGM1MjJkYzlkZjU1NmNjYWJiY2E3ZmQ5Njc0ODZkZTFiNDE0M2FkIGxlZ2FjeS10cnVuaworMjAxNDYgYjU1M2ZiYWMxNDZkZGJlYWQwNjliNDY5MTlhMTJiMjI4MzRlY2JiMyBsZWdhY3ktdHJ1bmsKKzIwMTQ3IDg3ZDUwOWQwODVhMGZjMzg4NTJkNzE5ODU2NGVmZWYzNGQ2ODE4MDAgbGVnYWN5LXRydW5rCisyMDE0OCA4NzBkYTI0ZDRiYWYyNGU3YWYwNzhmMTYwNTEyOTA0ZWM1NWU4NDJmIHJlbGVhc2UyMC1tYWludAorMjAxNDkgMjJkMzQ5NzQ4Mzg0Zjg2NjZhODBhODZlODY5YjUzMzZiMzlhOTNjMCByZWxlYXNlMjAtbWFpbnQKKzIwMTUwIGM0YTViZDA4ODUxYmNmYWI1ZjdhZDhhNjIwNjk2N2Q4MTViYmI2MjIgcmVsZWFzZTIwLW1haW50CisyMDE1MSBlZTI2NDY2OWI2NzgwZTk3ZWRlNTA0ZjQwMmViYzNlMzM2ZmQzNjU4IHJlbGVhc2UyMC1tYWludAorMjAxNTIgYTAwMjkxOGZjMGMyNzY0NGM0Nzk5MGMxMzcxYjk4NjMzMmNkYTdkMiByZWxlYXNlMjAtbWFpbnQKKzIwMTUzIDEyZmVlN2ZiMDE5YjNiODQzNTZiMzIyZmNjNzZiYmMyZWM5ZTdlZjYgcmVsZWFzZTIwLW1haW50CisyMDE1NCBiZWIyOTgyZDg1YWE4MjJjNDU0ZmVmZTRjOTcwNDJmZmIxNTEwYzljIHJlbGVhc2UyMC1tYWludAorMjAxNTUgMTFhMjFkNTkyODM0ODdhNWUzY2E2MTcxODY5ZWE0ZjhjMTc0MzIwNCByZWxlYXNlMjAtbWFpbnQKKzIwMTU2IGE2MjZhY2MzMGZjMjM5OWFiZDlhYmI5OTY4OWVhZDY2NDY5ZWI5MWYgcmVsZWFzZTIwLW1haW50CisyMDE1NyBmNGNhOTNlOGEyZDQ3OTY0Yzg3ZDc4YTZhMGQ2OGUzZTY3NDQyMjExIHJlbGVhc2UyMC1tYWludAorMjAxNTggNjM5M2Y1NWRiZDdiZTlkZjdlMjc4Y2JlN2IwM2MxOTJjYTVmMDcxMSByZWxlYXNlMjAtbWFpbnQKKzIwMTU5IDVlZDRjN2U4YjRmOThlY2ZkZjQ2MzVhYzY3NTBiYTA5M2ZlMzJmN2YgcmVsZWFzZTIwLW1haW50CisyMDE2MCA5ZGRiYjc2YzMxMTQ1NDM1YmUyZmFmY2I5MTZlYWIzNWYxNWM0YTg1IHJlbGVhc2UyMC1tYWludAorMjAxNjEgNDJiMWE2OTlhNWRkYzFjZDUwMGI1OTRkZWFlYTY5NmVlMjQ2YjkzZiByZWxlYXNlMjAtbWFpbnQKKzIwMTYyIGQ0NjdkMTg0YjQyOTMwNGU4M2MxYzAyOGMxMDNmZGMwZmIxMzExMTYgcmVsZWFzZTIwLW1haW50CisyMDE2MyAwOTNlOWEyNGVlNzY3YTFkNGNjZGVmMTk2ZDE1YmZiOTg1OTI3MDllIGxlZ2FjeS10cnVuaworMjAxNjQgZTJlOTE0NmY0YWI0ZDljMjliZjM0YjBiMTEwNDQ1Yzk3ZTg1YjkxYiBsZWdhY3ktdHJ1bmsKKzIwMTY1IDI0ZDIyZWVlOTRjZjM3MTU3M2QxMjMyYjZjZDAxM2UzMjY0YTkyNzIgbGVnYWN5LXRydW5rCisyMDE2NiA3MmZkMjY1N2JlMzQyODdmNTk2ZjM0YmI2YjdiMWQ1NmIxYjBmMzAyIGxlZ2FjeS10cnVuaworMjAxNjcgNTM2Y2MxMjZmYjlmOGEwNzExMmIwNTBiZDFiNzQyYmFmZjA4ZTg5NyByZWxlYXNlMjAtbWFpbnQKKzIwMTY4IDZkYzQzZTBjNmJiZjUwMzUzNDMzMDA2MmU3M2I3MjllZTBiZTE5MGMgcmVsZWFzZTIwLW1haW50CisyMDE2OSBlNTEwYzRjYzU3Mzc2M2QzZGNkMTRiNjEyZmM5NWFhZTBlMzIyYzM5IHJlbGVhc2UyMC1tYWludAorMjAxNzAgYTQ2OTY0ZDcxMTFkZGVmNGEyYTI5MjFmZDc0ZDBjM2M0ZDQ2NjdjZCByZWxlYXNlMjAtbWFpbnQKKzIwMTcxIGQ3ZTBkMjBjZGRhZGIzNjMyZTVlMDAwNmY1MjBiOTFhMzhjMGY1OTQgcmVsZWFzZTIwLW1haW50CisyMDE3MiBkOWZmMTMxMDBlMmYyMTIyY2EyM2E5OTQ1ZjY1NTkxYTVhNmUzZTRjIHJlbGVhc2UyMC1tYWludAorMjAxNzMgNWNmMzU1ZjY3YWEzN2IxZjZmY2RkNTBiOGY5YmFlM2I0Y2FhNjk1YiByZWxlYXNlMjAtbWFpbnQKKzIwMTc0IDU3M2E5MTM4ODcwNWI1MDBmY2E1YjRkNzNhYzFmM2RmMDAxYWMwMzggcmVsZWFzZTIwLW1haW50CisyMDE3NSBjY2VmMDJkYTg4YTY3Zjk5MTgzNzRlOGE3ZWEwYzE4NDNmNGIxNzU5IHJlbGVhc2UyMC1tYWludAorMjAxNzYgMzEyMDNkOTkzNTgyNzNjZjczM2I5ZmUxZGMyM2ZjNmY3ODdiZTExNSByZWxlYXNlMjAtbWFpbnQKKzIwMTc3IDk5NTZhMWM1ZDQ0MDU0ZDY0ZjYxZjg4NWFlYjBmODFlNGVjYmMxMDEgcmVsZWFzZTIwLW1haW50CisyMDE3OCAxOTJmMjVlNDFmYmJlZTk4OGJmMWI1ZDk5NTM4NmQ0ZDFkZjE4MmE5IHJlbGVhc2UyMC1tYWludAorMjAxNzkgMmI1NzY4YzEzNTk5MjAyOTNlNTZlMGU4NjM1YWQyYTM3NDY0MzA0MSByZWxlYXNlMjAtbWFpbnQKKzIwMTgwIDk5MjQ2MGM2NjhjMTViZjkyNjQ4NGNlZTMwMzZjOTA3ZTM4ODRkOTUgcmVsZWFzZTIwLW1haW50CisyMDE4MSA4ZGVjYTc5ZWE2YWJiNTVlMzNmOGIzODA1N2M5NTZiOGZhMGQ4NzhjIHJlbGVhc2UyMC1tYWludAorMjAxODIgMDQzNzc1YjNiOGIyOTY2MzQ3NDliZjkyMWY5YWM4MGY4YzdlNjY2YiByZWxlYXNlMjAtbWFpbnQKKzIwMTgzIGYzNGM5MDk4OTEzODM0NWRjZjY3M2FkMjMyMzU1YjQ5Njg1ZjYyZWIgcmVsZWFzZTIwLW1haW50CisyMDE4NCBkMWMxMzUwYTNhNWY0MmI1ODVjNjhjNDk4YWEyNGVjOGQ0NzlkYWQ3IHJlbGVhc2UyMC1tYWludAorMjAxODUgNWE0ZTA4MzljY2U3NmNmMDZkZTI0ZjEzNGU2NmJlZjQ3ZWFhZTMxMSByZWxlYXNlMjAtbWFpbnQKKzIwMTg2IDViZDY4NmUwZWNkNDFmNjAwMTk4NzI5NGJmYTg3YmZjZjAzZTY2ZGMgcmVsZWFzZTIwLW1haW50CisyMDE4NyBkMTZlZGM3MDRkYTFmNThjYzU0ZDgyOGYyYWIzOGRhMmQzZjlkYzEwIHJlbGVhc2UyMC1tYWludAorMjAxODggZDUzYTk2NzlhOTNiYjhiZTgxYWQ5NWQzZTAzYmVmM2QyNWQxNjhmNSByZWxlYXNlMjAtbWFpbnQKKzIwMTg5IDk3NzZjZjVkYmZlMzhkMGM3ODgxYjZkZWUyZDFiNTVkNmJiMGIzZjAgcmVsZWFzZTIwLW1haW50CisyMDE5MCA3NmI4OWZhM2VmMzQwNjBhM2NjMWQ0NmU0ZjlhM2VhNWY0NDI2ZGU4IHJlbGVhc2UyMC1tYWludAorMjAxOTEgYzAxMTRlZGZkMzEzNzZhODg2Y2JkN2NhYThlMTM1MzE4ZGYwNWI0ZSByZWxlYXNlMjAtbWFpbnQKKzIwMTkyIGVmMTIyM2Q4NDQyZGM1NjgxZDllYTQ4ZWZhMTk1NDM2NzIwMmJjNTUgcmVsZWFzZTIwLW1haW50CisyMDE5MyA2YjBmZjUyOWQ2MTUwMjQzYjkwZTA5ZTg2ZTFiYjY3NDRkZGE0MjY2IHJlbGVhc2UyMC1tYWludAorMjAxOTQgN2QwNDI0NWVkNzVmMzliZjJlNGZkMzRiY2RhNjcxZmE3NWU4ODc2ZiByZWxlYXNlMjAtbWFpbnQKKzIwMTk1IGQ2NTQ3ZmY5NDE2YmFiODE5YWI4OWJkYTllYjA4ZTAyN2ZjYTM1M2QgbGVnYWN5LXRydW5rCisyMDE5NiAwM2JhMDYyNDc0ODY2MzBhYWZhN2UwZjRlZGNhMjMwOGUxZWY1ZTNjIGxlZ2FjeS10cnVuaworMjAxOTcgODM2Y2RmOGQxMjQ1ZDVmOTJiM2Q1ZDM2YTg1MzY5ZDk0OTEyZDRjYiBsZWdhY3ktdHJ1bmsKKzIwMTk4IGVhMzI2ZWI0Nzc1Y2MxYzQwZWUxZTIxMmQ1ZGQ3NTk2OGUwMTUxZWQgbGVnYWN5LXRydW5rCisyMDE5OSA0NmE2YzI4ZDM1ZTVkYjhkMTRhNjE3MWMzNDc2OTJiNGY0OTNkNTY5IGxlZ2FjeS10cnVuaworMjAyMDAgMzExZTZhZWVmODU4YWQ1MDUyM2UwNmVhNjUxMDUzMzE5NTg5MjRlMyBsZWdhY3ktdHJ1bmsKKzIwMjAxIDI4OGQ4MDVhZjE0MjE4ZjNmNDkyOTk1YmViYjI2ZGFlMGQ2NDdmNDkgbGVnYWN5LXRydW5rCisyMDIwMiA1MDZhMDgwZDM5ZWNmYzIyOTIzOTg3NGFmZTBjYmU2MWJiMmExYmM1IGxlZ2FjeS10cnVuaworMjAyMDMgMzdkOWVkNTU0MTZmZjE5YWQ2NGU0ZjI5OGUzMzM2ZTA3NDM2OTM1NyBsZWdhY3ktdHJ1bmsKKzIwMjA0IDBjZGZjY2RiNjg3MTBhMTBjNTY2OGRkZGYzMmFkMzQ5ZTk0NjVhNDIgbGVnYWN5LXRydW5rCisyMDIwNSBiMGE3ZmFmOThhOGVkYjNmM2FlMDNhYzQwZjNmYzM0N2VlYzk2MWQ4IGxlZ2FjeS10cnVuaworMjAyMDYgNzYzNWY4ODM4YzY4OTJlMjljMTYwYjgzOThjZDJhNGQ0OWU2ZmU2MSBsZWdhY3ktdHJ1bmsKKzIwMjA3IGI3MzU0N2JmOGJjMjQ4NzI5MWM1MGY1ZGIzYmRlZjVjOTc5N2Y2NWMgbGVnYWN5LXRydW5rCisyMDIwOCAxMWViYTViYmZhMTRhYjUxYTMyMmMzYzQ3MjJlZDIxNTFlNDlhOWE1IGxlZ2FjeS10cnVuaworMjAyMDkgNmJlOGJiNDgwOGUxNGVmOWRkZjk4ODZiOGVjNTY4NTliYjcyZjE3ZCBsZWdhY3ktdHJ1bmsKKzIwMjEwIDU3YTVmNmIwMzM3ZDFlMTczODg0ZWI4NTRhNmY4ZGYyMTZiMjk1YWQgbGVnYWN5LXRydW5rCisyMDIxMSAzMTAwNjZiOTkyZjJmOGE4ZTFiNzg3MGRmMmFlOTNmYjhiOGE3NGE3IGxlZ2FjeS10cnVuaworMjAyMTIgYjI1YTI0MTMwMjBlMjM1OGNlZDc5OWQ3MWQyZGQ5MDk4OTUxZjI2MyBsZWdhY3ktdHJ1bmsKKzIwMjEzIDk5MDZkYjJhMWZmYTc4NjExNDdjNzc5MzI0YmM0N2M2OTlhOTU4YmQgbGVnYWN5LXRydW5rCisyMDIxNCA5MmI2NWYxMjFhM2U5NzY3MjAxZWE3MTA2ZDYzNmEwNWI5MTVkOWFhIGxlZ2FjeS10cnVuaworMjAyMTUgOWI4ZWE2Mzg3ZGM2MDlmZDBhOTNmNGY0NjliYzY4ODA4MTNlNDdjMCBsZWdhY3ktdHJ1bmsKKzIwMjE2IGJkMTEwZWFkYzE5YWQ0MDk5NTFiZjNhZjMwMmMxNGQ0OWE0NWU3NzAgbGVnYWN5LXRydW5rCisyMDIxNyBlN2Y1YjcwYjA2MDZhYmIwZDhiNWQ5ODkzYjVjODhiNTc2MDIyODkwIGxlZ2FjeS10cnVuaworMjAyMTggOTExZTIxMWI4OTMwYjkwZTI0ZmJlMjJkMTlkYTViM2EyMDA3MzA4ZiBsZWdhY3ktdHJ1bmsKKzIwMjE5IGEzZGViMjAxZWNkYTEwZjgxNWRhZjRhZDkyNmExNDgzNGE4N2Q0OTcgbGVnYWN5LXRydW5rCisyMDIyMCBiYjllMjE0MDM1ZTEyNWI5MTM0ODVjMjc1MzZlMzYwYzRmNTYzNDc2IGxlZ2FjeS10cnVuaworMjAyMjEgNzYwNzU0NDE4ZWUwMjcwYWM0ZWRlYjg1YTlhMzlhNmNjMTg3ZjQ4NCBsZWdhY3ktdHJ1bmsKKzIwMjIyIDA4MDgyOGJmOGRiZGU4ZmUxOGIxNDUzYjZhOTZjZjc5YTk5Mjk2NWEgbGVnYWN5LXRydW5rCisyMDIyMyA0YjM0NmNjMzk4OWJhYTk5M2VhNTc1OGRjOTRkYjJmNDliNzJlOGUyIGxlZ2FjeS10cnVuaworMjAyMjQgMTJmN2YxNjdhYzUzM2Q0NmE0ZmVlNDJjYzFiNjFjNTA2ZTk5NDVhZCBsZWdhY3ktdHJ1bmsKKzIwMjI1IGQzMjhjZmViMGM3NWJjMDQ2NGRlZDAwYWQ1Yzc4ZjdmYTNkMDA2NjIgbGVnYWN5LXRydW5rCisyMDIyNiAxODFkMDEzMjBlZjQzZTNmNTY0ZTc2ZDQwZThmYTEwZmQwNjE3MzlmIGxlZ2FjeS10cnVuaworMjAyMjcgYjNmZDQ0ZmZhYjFlOTE2MTAyZTJmNmFiMTNmZWIxZThhNDQ0MGU0NCBsZWdhY3ktdHJ1bmsKKzIwMjI4IDkyYjYwZGVlN2YwODM1ZGYyODljY2U1NjgyMTY2MTViN2I4MDVhNTYgbGVnYWN5LXRydW5rCisyMDIyOSBjY2FlNDEyYmJjM2UyMmNmYTYyNDlhNzAyYTk3YzhkMjdiMjEwNjQyIGxlZ2FjeS10cnVuaworMjAyMzAgMjE0NmE3M2NlMzVjMGJkZDQ0OTlmM2VlOWI0YjE3YmU4NTRmZjE2ZSBsZWdhY3ktdHJ1bmsKKzIwMjMxIDk2ZWEwZWNjZGIzMTczNzg4ODM1ODgxNmI2NzcxNjZmYmEwZjI4YzUgbGVnYWN5LXRydW5rCisyMDIzMiBjMzI3NTJhMjg2NTIyMTNlMmMzN2U2NzgzN2MyMWRiMGQxMTUwNTI0IGxlZ2FjeS10cnVuaworMjAyMzMgYTU3MTA1NzhjMmUwMjIxNjYyOTMzNGMxYTFiN2NlMWU1YmFiZjgyMyBsZWdhY3ktdHJ1bmsKKzIwMjM0IGFiNGU0Y2IwOTRjMWY2NDMwZDQzOGM5M2Y3YWZjNzNhYTlmMjg3NzMgbGVnYWN5LXRydW5rCisyMDIzNSA4M2VlNjNiY2YwMzY1OTg3MjdmYjYyNzAzYmExMmUwZjIwNTNmOGMxIGxlZ2FjeS10cnVuaworMjAyMzYgOTg3NmQ2YmFmODQzODk2MzgxY2ZjODYyZWNkZTA5ZmE0MWQ1MzdlZCBsZWdhY3ktdHJ1bmsKKzIwMjM3IGRlOTg1ODUzMGE1NTNkYzg0ZWFhZGRlODIxNjk2YmQxMTBhYjk3MzAgbGVnYWN5LXRydW5rCisyMDIzOCBmMWQyZTg4ZmExMWRlMzI2MDU4MzU5MGUyMTk1ZTMxZjhhZmZkNzc0IGxlZ2FjeS10cnVuaworMjAyMzkgNWFmZmZjYTY2ZTJmYWUyNmYyMDYwMjdmYWJiMGZjMDllNzE5YWQ2MiBsZWdhY3ktdHJ1bmsKKzIwMjQwIGY4ZmRiZWI3MzY2NzA4YjczMzljZjFkN2Q4Yzg0NjRlMjVhNjBkZWMgbGVnYWN5LXRydW5rCisyMDI0MSA4NzY4NjFmMTM1NDM2Y2U3Yzc5Y2Y5NmVjMDViMjk3MDE2NWFhM2YwIGxlZ2FjeS10cnVuaworMjAyNDIgYTllZjQ0YmJkOTY4MjkwNTk3YjU2ODY2Njk0ZjIzMDdlODI3Njg4NiBsZWdhY3ktdHJ1bmsKKzIwMjQzIGU3MjJkNDg4M2UxOTcxNWVmMjg4YTUyZTE2NTNkZjBjYzAzZTQ3N2EgbGVnYWN5LXRydW5rCisyMDI0NCAzMzA4YWZjYWExMzE1NWQ3M2Q2M2IzZWJlYjNkZDE4Mzc0Y2E3ZmQzIGxlZ2FjeS10cnVuaworMjAyNDUgMmQzMGEwOTk3MDVmMzlmY2RjZWFhZWQ4NWQ2MzQ5OTY3ZTI3YjFlYiBsZWdhY3ktdHJ1bmsKKzIwMjQ2IGVkM2U2NmYzMDgzN2MyMjExNjUxNmZjY2ZkN2UzYjVmNjM2OTNhNmYgbGVnYWN5LXRydW5rCisyMDI0NyBhZWQ2YjE0MzZkYjQ3ODcwZjVjODAwNTk0MjMwYTQ0Mzk5MGIzZGEwIGxlZ2FjeS10cnVuaworMjAyNDggMTk0MzMxOGZhZTMxNzdhNThlY2JlZWMwZjNjOTRkYzgxNjQ5OTUyNCBsZWdhY3ktdHJ1bmsKKzIwMjQ5IDQ0NjhhOGRhNjdjYTAxMDQyNGVhZWE3NGE3ODI4Y2RiZjBmNmY1ZjggbGVnYWN5LXRydW5rCisyMDI1MCAyOGNmMGE3OTQzY2ZkN2IyMzUzMWJjMmRkNjhiMTQzMDczMmE0YmRjIGxlZ2FjeS10cnVuaworMjAyNTEgY2M4YTIxYmE2NDQ5OThjY2VhZDQyOTY5MjQ1M2U3YmZkOGQyNGEzZiBsZWdhY3ktdHJ1bmsKKzIwMjUyIDNhYWVkYmFjOTViMzEyYmU1ZjEzOTE4ODQ5OTQ5NTRiNmZjNjE4NmUgbGVnYWN5LXRydW5rCisyMDI1MyBhMTg0MGI5YjE0ZjE0NWYwZDFmMTBkOTcyY2E2YjdkM2ZjZTgwOWYyIGxlZ2FjeS10cnVuaworMjAyNTQgOTYyMWQwZmJjMmU1MmYwZDdmNDk4MWI3M2Y5NzBlYmYwZTdmMzM2NiBsZWdhY3ktdHJ1bmsKKzIwMjU1IGNhNTY1ZTNkM2NjNWMwNjk3ZmNhM2QzYmU1MTgzOWRmMTU3NmFjYzcgbGVnYWN5LXRydW5rCisyMDI1NiA2YjhkOTFlYTlkZTM0MzQwZmRkYTZkNDJmMjEyYmRkZWUxYWQ5ODQ1IGxlZ2FjeS10cnVuaworMjAyNTcgZDEwOWVjNjY3ZWMyNWQ4ZmVkMTA2MmEzNDc2ZjBmZTY4ZjE0MjFhOCBsZWdhY3ktdHJ1bmsKKzIwMjU4IDhhM2JhMTBmMTBmNmEyNTQ5MTZhZDQ4MGVhYmNhMTIzODViN2MxYjAgbGVnYWN5LXRydW5rCisyMDI1OSAxMWU4YmI0ZDg0NWQyYzBiZTUzZmUwMWFiYmY1NjYzODExN2RjM2E0IGxlZ2FjeS10cnVuaworMjAyNjAgNTA3OWQ2ZTNiNjE1MDgwMDc4NjY1ZmNiNGQ2MmZkMjQ3YmQwYjJiMiBsZWdhY3ktdHJ1bmsKKzIwMjYxIGUyYjNlNmQ4NTM0MzBhMjEwZmNiYWFmZWZmYWUzYWQxMTUwMzMxZWIgbGVnYWN5LXRydW5rCisyMDI2MiBiYjc1ZDkzZjZhMzFjOTMzNGRlYTZjMzVhZWQ4MGJkYzQ3YWFkYTc3IGxlZ2FjeS10cnVuaworMjAyNjMgZjM5OGU1ODU2ZmE3NDY1MzA1NWI4YmJjMzhhNjM5MzI5MDAxYjFmNSBsZWdhY3ktdHJ1bmsKKzIwMjY0IDY1ZjM2MzIzNmVjZjdmYTZhODM2YWE5ZjM1Y2RjMWUyMzc0MjE5MDEgbGVnYWN5LXRydW5rCisyMDI2NSBlODQzZWVlN2EzM2U4NjI1YjA2MjZhNDk3ZmZhNjQyMjMyOWYxYjVlIGxlZ2FjeS10cnVuaworMjAyNjYgZDM4Mjc5MjI5MDljYTI1NzU0ZGI5Yzc2NTFlMWQ1MTU0NDE1MmNlMiBsZWdhY3ktdHJ1bmsKKzIwMjY3IGU1NGUxMWMzMGU0YjE1NDk3YzNmNzJjZmU0NjllMTg0ZDAyMDNhMDIgbGVnYWN5LXRydW5rCisyMDI2OCBjYjQwZTc3MGM5MDNkZDhlMGI5OTg5OTFmMmExMzRiNWY5MjQyMWFlIGxlZ2FjeS10cnVuaworMjAyNjkgMGM4N2FjNjc0Y2UxODIwNjc0YTk4M2Q0Y2Y1ZDIzMWFlN2EzNDQ4ZCBsZWdhY3ktdHJ1bmsKKzIwMjcwIGE4MGE4NDdmNWY0ZWJhNThiZTEwMDk1MDQ0NmZiYmM1NGZkMTYzZjYgbGVnYWN5LXRydW5rCisyMDI3MSA1ZjY4NzU0ZWIzYjZiYzgwMDdjMzNlOTcwZmQwZWNjOTFiOGQ4MWRmIGxlZ2FjeS10cnVuaworMjAyNzIgMzBlNTI3MGRiMTI4M2JmOGNkYTBhYTg2ZDE2MjZkZmQ4NGMzOTIzZCBsZWdhY3ktdHJ1bmsKKzIwMjczIDBmNmQ4ZmU0YTNhOTFjZmQ3Y2RjNzA5MjdmNWE0MmFmZWNkY2NjNDkgbGVnYWN5LXRydW5rCisyMDI3NCA0NjIyYWY0ZGE5ZTI4MmZiMWRjZTc4YTVhZTMxMTljYTE5ZDQ0YTFiIGxlZ2FjeS10cnVuaworMjAyNzUgOGEyZGQ5Nzg3M2YyNTc2MmZmNGI3Y2IzMzk3MGZhNjI1Y2I5MzQ4OSBsZWdhY3ktdHJ1bmsKKzIwMjc2IGQzNjg1NTJjMmI3MjYxMDFmOWZmYjg2OWFjNjU2NTU3OWFkOTY4MWYgbGVnYWN5LXRydW5rCisyMDI3NyA3YzRiYWMyZjdiM2FiNzE4ZTIzOWI3MDM0NTFjZTg1MTYzYzlkNTllIGxlZ2FjeS10cnVuaworMjAyNzggOWIyOTdhZjE4ZTJmMzE1MDg0NDljZTQ2NjIzYjdlNDgxODdjOGZkNiBsZWdhY3ktdHJ1bmsKKzIwMjc5IGI2MTJiNTE5ZDQxYTU0Njk4NzZlNTMwOWE5ZTZjNzEyNmY0ZWM1MjEgbGVnYWN5LXRydW5rCisyMDI4MCBiYmNjOTgzNzMxMmU4ZTU5ZjZiYzU4MDlkNTNhODFmN2UzY2NhMzQ4IGxlZ2FjeS10cnVuaworMjAyODEgMGVjMDZiNDc1NWRiNzI0ZDUyNmVkYTM5MjQzZTNmMzRjYzc0ZjgxMiBsZWdhY3ktdHJ1bmsKKzIwMjgyIGU0YWJlNzRiYzk3MzJkNzI4YjMxYTVmNGE1Mzk1MTI5MDNjMmU2ZTcgbGVnYWN5LXRydW5rCisyMDI4MyA0NzFjZTBmYWE3NzUwZjQyMDhlNjk1MjE2ZWM3NDRkNzQxZGZiZmNmIGxlZ2FjeS10cnVuaworMjAyODQgYjJiYzU2MzMyMDQ1YWUwMjUyNWFiOTMxZjg4MmM0MDdjNTFlNWQ5YSBsZWdhY3ktdHJ1bmsKKzIwMjg1IDExMmJkNDdlMDc4ZDMxOTMwYzZjNWM4MTcyYTU4YTBlY2E2Njc0NzAgbGVnYWN5LXRydW5rCisyMDI4NiA2ODczNTQ5ZDQ4NGM3NTg1ZDYwYmQyYmYzNDc0ZTg4YTJhMzJiMDJjIGxlZ2FjeS10cnVuaworMjAyODcgNGIwNmU0ZGIwMDc1ZGMzYjA1NWJmZWZkYzE4ZTZjZWEzZTRjM2I0OCBsZWdhY3ktdHJ1bmsKKzIwMjg4IDcxN2IwYzhkZTcxZTlhMTI2N2VlNjJjYzhkOGZiNmQ3YzJmZmZlNDkgbGVnYWN5LXRydW5rCisyMDI4OSA4NjNlODA3M2M3YWFmMzFmMzE3YmU4NzJmZDFkNzY1N2RjM2MwOWFlIGxlZ2FjeS10cnVuaworMjAyOTAgYmViOWQyYjAyODQ2NTdiZTIzZmE5ZjliMzQ0OThlMmRhYTg4Yzg5ZiBsZWdhY3ktdHJ1bmsKKzIwMjkxIGNmOGE1OTVjZWMzMzc0OGI1MjM2MjQwNGY3MzM1M2E1YTZmODliNTggbGVnYWN5LXRydW5rCisyMDI5MiAwMDRjOWIwMzE5MjQxYzVjMDU0NmFjMTBjYjU5YjU0YjkwNDdiN2U0IGxlZ2FjeS10cnVuaworMjAyOTMgNzA3NjNjNDc1MmUyZmEzZjdlYzZiYTM5MDEyNTA0NmJmMDAzOWE4OSBsZWdhY3ktdHJ1bmsKKzIwMjk0IDEzODU3ZmIzMzAxNzcwY2QyY2E0Mjc2YjFhMGJmMjU5ZDQxMGFmYjkgbGVnYWN5LXRydW5rCisyMDI5NSA4NTNkNmE5N2I3ZDliNGQzODZjNzM1ZjZjZjBhMjcwYzZlODY1MzViIGxlZ2FjeS10cnVuaworMjAyOTYgM2I5MDVmMjhmMjI1Njk4YzhiNGQzZjU2YzUxMzA0N2Q5OGVhZjM5MSBsZWdhY3ktdHJ1bmsKKzIwMjk3IDM0ZWM1ZTJmYTM1NjFlY2JmMDNhZWFlY2E4NTk5YWZjOWMwNjIwYTQgbGVnYWN5LXRydW5rCisyMDI5OCAwMTc5MWEwOTc0NTZiNmZlNzUxMmU2MDhkNzExMTA0M2EyMTJiMGU5IHJlbGVhc2UyMC1tYWludAorMjAyOTkgYWZiYjY1YjYwZmEyMDM4MTkzMjQxYjUwNTY2MjQ3MGU5MzI2ZWE5MyByZWxlYXNlMjAtbWFpbnQKKzIwMzAwIGM5ZTA3YmMzMDNhMjNlZDBjNzgzYjk5MDYxYTMxOTI3MGQ2OWMyMmUgbGVnYWN5LXRydW5rCisyMDMwMSA5ZDc2ZDg1NTJjMzYxMjc3NGQ2YWFhZjQ3OGU2NDc5ODZkMGUwZjkzIGxlZ2FjeS10cnVuaworMjAzMDIgNjk0YjhjM2YyNWU3YzZkMzczMWYxNDI1NTlhODQyYThjNDg4N2QyNCBsZWdhY3ktdHJ1bmsKKzIwMzAzIDg0YTNkNzBlYzZmNDRkNjVmYWViYzc0OWQ4ZTkyMzk4MjU1OTU1ZDYgbGVnYWN5LXRydW5rCisyMDMwNCBmOTY3NDg5ZWUzYjY0YmFkODZlNzQ1ZDE1ZmQ4NjdlNGQyNWJmNmYzIGxlZ2FjeS10cnVuaworMjAzMDUgYmQ4NDRiMjBiOWM4NTQ0ZmI5MTk5Nzc4YWZlNzlmMDg5NzJkZTE0ZSBsZWdhY3ktdHJ1bmsKKzIwMzA2IDM3MDRiZTNkYjMwMjg2MjYwZjYyOGJiZmI2YWJjMThlZmFlZGU0ZmEgbGVnYWN5LXRydW5rCisyMDMwNyBiYWQyZGFlYjc0NDBjMzMxMjA0MmQ1NmY4NjQwZmVmZDJkMjdjZjZhIGxlZ2FjeS10cnVuaworMjAzMDggNGM0OTdjNWU3MmFkY2UxZGI4ZGNiODVhMjZjNDkyMTMwZDAyZjFkNiBsZWdhY3ktdHJ1bmsKKzIwMzA5IDY1YTkyMjUxZDZiODVjYWMyMzU5ZTI2M2Q4MzU4NjZhN2JkMTE4ODkgbGVnYWN5LXRydW5rCisyMDMxMCA5ZGNiNGJkNjUxNTQ4ZTg3Njk5YTYyMGYwYmM2ZjkwYjNkYWQ5NmMzIGxlZ2FjeS10cnVuaworMjAzMTEgYjhmY2Y0NWRjNmZkYzc0MzkyM2RiNzY2NGM5NDA0YTJiNTdjNTU5YiBsZWdhY3ktdHJ1bmsKKzIwMzEyIDk2NWVlYjQ0ZTQ1NDQxMjFjMjIxNzQ2OTBjMDI2MTNlMTJlMGMyZmMgbGVnYWN5LXRydW5rCisyMDMxMyAzZmFkYzM3Y2ZhOTIwOWVkNDA2NzZlNWEwOWMyNjQwYTM3NzZjNTZiIGxlZ2FjeS10cnVuaworMjAzMTQgNjQzOTYyNDNjMTE0MWRjZjkwODc2MGQ3M2MxZDQwNzA0NWJiYjQzZCBsZWdhY3ktdHJ1bmsKKzIwMzE1IDM0MDJjNzE2NmQzMDgxMTQ0Y2NhNGNiZjI0MmVlYzAzNjg1NTg0NjQgbGVnYWN5LXRydW5rCisyMDMxNiBmM2Y5NjQxNzQzYTA3ZTg4ZGY5ZWZjNzk4NjUyOWFiY2YwZGM2OWI0IGxlZ2FjeS10cnVuaworMjAzMTcgNjMyYzRkNWI3NWI3YTk2ZGVjM2ZjYTMyZDNhYWFhYjlhMmFhMjEyMSBsZWdhY3ktdHJ1bmsKKzIwMzE4IDdjNjE3MTU3NTJiZTIwMjZhYmI1OGIwNDUxMzg0MDc5MDEwOWQwMWQgbGVnYWN5LXRydW5rCisyMDMxOSA4ZWM3ZjY1NmY4MDgzMWU2ZGM2NjEyYTI0M2U1ZTU2MTA3NzlmMGEwIGxlZ2FjeS10cnVuaworMjAzMjAgMjU3YjU3YmNjZGYzYmU4OTRiMmJkOGZkOTc2N2VkNzkyMTYzYTY0NyBsZWdhY3ktdHJ1bmsKKzIwMzIxIDMxNjBkYTRkZGQ4OTFhZTBiZTgwNmZkMWZmZTJlYjY3Y2EzMDc3OTggbGVnYWN5LXRydW5rCisyMDMyMiBlYzA3NWNjODJiZGIzZjU3YzJlZjViZjc4ZmNkZDQ3MzhmMzdiMmQyIGxlZ2FjeS10cnVuaworMjAzMjMgYzJmYjJkNDc2YmQzOGNkZjI3YWIzODVjMzQ5NDgzNjI4MmJiMDA4NSBsZWdhY3ktdHJ1bmsKKzIwMzI0IGU1MDA5MDI1ZTYyZjJjMWFmOThmYzM0NzBmMzAxNWZhMDJkYzZmMTQgbGVnYWN5LXRydW5rCisyMDMyNSBiNGIzY2ZmYzdjMzU1ZmYyMTRhNGI0NGQ1N2YwMGYxYWRjZTBkZDg2IGxlZ2FjeS10cnVuaworMjAzMjYgYmZjMTBhODA1NDViYWFkODg5M2IyYjkzMTQxYjhjNDRkNmQ4YjcyNCBsZWdhY3ktdHJ1bmsKKzIwMzI3IGIwMDVlYjliYzg0MmQ5N2E1YTMxNWQyMWQ5NWFjMTFiYTJlODFmMTMgbGVnYWN5LXRydW5rCisyMDMyOCAyY2NjMGYyYzllMWYyODFmYTJjZmNjMWIyZmEwNjNjNzQyZDkxNTg0IGxlZ2FjeS10cnVuaworMjAzMjkgMGYzMmFiNWFmZmY4OWU2NDRiMTY3NzA2MTRkODVhYTY2MjY2NTI0ZiBsZWdhY3ktdHJ1bmsKKzIwMzMwIDk4ZjY5MjQ1YmI2OWNkMjQ3YWZkNDMyOTg0NDZiY2Q5M2FiYjc0NjcgbGVnYWN5LXRydW5rCisyMDMzMSAwMmQ2OWE4ODcwMzg5MTIxNGI3ODcyOGM1MmMzNGFhZjFhNTRlYTBjIGxlZ2FjeS10cnVuaworMjAzMzIgNDFhNDIzMjk0Y2I1MTMxMjg1OWE1ZWM2MDY2ZGMzMmZjM2I1ZGE2OCBsZWdhY3ktdHJ1bmsKKzIwMzMzIGZiYzEyZDZjZDA1MTFiOTRlNjQxNGIwNWQ1NzBlMDM5YjlhZmZmZTkgbGVnYWN5LXRydW5rCisyMDMzNCAxY2RmZjI4MzhhMTc4ZWY0NjFkOTI0YmI5Zjg3OTY0NTRiYTcwNGIzIGxlZ2FjeS10cnVuaworMjAzMzUgNzRiOWZiMWM5NjMzOTc5MjhhM2U1YzBlYzhkYzhmOWFlNTEzMWEyZCBsZWdhY3ktdHJ1bmsKKzIwMzM2IDJkNTIxNDIwZGI4ZjFlMjkyYmUyZDRjMWNkNzExOGRlMWFmYzNjZDkgbGVnYWN5LXRydW5rCisyMDMzNyA5MjM3ZjU4ZGNjMTkyMjhmMDkwZDVmNjMyZWQ4MGEzMDVkNmJlNTMxIGxlZ2FjeS10cnVuaworMjAzMzggMTExOTAyYzk5MWE5MDRmM2NhMmUxNDAyNGZhNzhhMGY1NDQ1NDQwNyBsZWdhY3ktdHJ1bmsKKzIwMzM5IGYwZjA0NjdhMzMzNDJkYWM4Njc2OWVjMTdiOTEwMzc4NDE4YzA2ZjYgbGVnYWN5LXRydW5rCisyMDM0MCAwMTg0YzUwYTg3NTEwYWRhODE3ZWI1OTlhZWE1OTM5ZWI0NDVhYmRhIGxlZ2FjeS10cnVuaworMjAzNDEgMDQ3NWM4YjcyMjNiYTU4Yjg0NzE5YTY5ODcxYTIxZmY3OTE5NzY3ZiBsZWdhY3ktdHJ1bmsKKzIwMzQyIDQ1YzE4MjUxOTZlZDY2MDNhN2QyZGE1ZDU5ZTIwYWEyODk4MTgyYWQgbGVnYWN5LXRydW5rCisyMDM0MyA1MWM4Y2UxYTJlMjU5OTUzZjI5ZGNmMjZjNmIyMDFiNWZjZTdmODdmIGxlZ2FjeS10cnVuaworMjAzNDQgZjc0ZjVhYWZkYzdlMjUwYTVkNTRkMzM1MjM4ZjhmOTQ1ZTRjYTlhNyBsZWdhY3ktdHJ1bmsKKzIwMzQ1IDk5NDFjNDQ4MTZjMWM3MzA2ODliZDRmNWZhOTQxZTdmN2Y2ODQzYzMgbGVnYWN5LXRydW5rCisyMDM0NiAxYTJmZDVjNGRjZjU3MGZkMTBkY2U0NDM4NTEzMDBhODdkMTQ2ZTM2IGxlZ2FjeS10cnVuaworMjAzNDcgZjNiNmFjMTI4ZGU5ZjEzNzViOGE0ZjhkMDc0ODc3OGY4OWE4ZDJmNyBsZWdhY3ktdHJ1bmsKKzIwMzQ4IGQ5MTU3Nzc4MzMzNTc2NDE0NjFlNDhkOTE2ZjMyN2JjMWNiY2M5YmIgbGVnYWN5LXRydW5rCisyMDM0OSA0ZWUzNDZiMzU1MjRhODg1ZGRkZWU0MDk5Y2JhYWExOTI1ZTQ0ZjM5IGxlZ2FjeS10cnVuaworMjAzNTAgM2JkYTU5MDcxMzg5NTEzNDE3MDQxZTg4MWUxYjk0Y2ViZTA4ZGY1NCBsZWdhY3ktdHJ1bmsKKzIwMzUxIDY2YTdjOGM4ZGQyNzIzOGY2NDQzMGIyMmRmYzBmMjg2ZGY3ZDczYmYgbGVnYWN5LXRydW5rCisyMDM1MiAwZDA1NDZiZDg0NDhhYzUyMjBjMDFmZGI4M2IyMDE4ODdhY2U3ZTllIGxlZ2FjeS10cnVuaworMjAzNTMgZTg0NmU5NjBlN2Y2MzFmYmIzYWEwNjFhZDUxYzNlNTAwZmExNDIxMyBsZWdhY3ktdHJ1bmsKKzIwMzU0IDk5YzQ3MWNlZDE3MDE4NWNkZmNkODJkYmRlNjA0YjdjNzdlZDUxZTcgbGVnYWN5LXRydW5rCisyMDM1NSBhMDA0YzYyZTY5NmU2ZTIyOTEwNmY3YTM4NzgxY2ExOTMxZmJiZGI1IGxlZ2FjeS10cnVuaworMjAzNTYgZTg3NDFkYzM2YWQxM2I5MTk0MTk0ODk0ZDYyYWMyMjkzZWE4YTM5OSBsZWdhY3ktdHJ1bmsKKzIwMzU3IGMyOWVlMzczZjcxOGY3OGFiNDIzNDZkNWFjYzE0ZWE4Y2I2M2I1YWMgbGVnYWN5LXRydW5rCisyMDM1OCBmMWVjNTJlZjc3MWMxMWE2YjRiZGM0Yjc4YjVhMTU2YTNmNzBhOWJkIGxlZ2FjeS10cnVuaworMjAzNTkgZjI0MjcyZTg5NjIxNTI1Nzg4NTFkYzkxMjkwM2UzYjIwMDVjZTVhNCBsZWdhY3ktdHJ1bmsKKzIwMzYwIGI4NGYwODRiMjk5MmE4MWU2YjA2YzIwOWJiM2NlYzM1ZjcwNjc2MjEgbGVnYWN5LXRydW5rCisyMDM2MSA0YjllNjg0YmViYjg3MmViM2JlMjVmZDQ3ZWU1YWMzM2U2YzViMDUxIGxlZ2FjeS10cnVuaworMjAzNjIgOGFhNGRlMjA3YWUzNjRiNDRiYWFjMjI4NjhlYTliOGJlMDMyMWU2YiBsZWdhY3ktdHJ1bmsKKzIwMzYzIDkyNmI2NGZiYTVlN2VkNTlhMmY0MDEzYWNkNjM0MzEzYjkwNTRkMmYgbGVnYWN5LXRydW5rCisyMDM2NCBiNGUyYjhlOWYxZTY4NDIzNjhmOTZmYTk0Mzk5NWYyNTkzMWUyN2E0IGxlZ2FjeS10cnVuaworMjAzNjUgMjRlODFiNDMwNjdkYzY1ZjVhYTIzODE1ZDA5NDBhYzQ0OGEyZDgyMCBsZWdhY3ktdHJ1bmsKKzIwMzY2IDI4ODhmYzYwYmY5YWNlYWQ2NGRlMTI4M2QxYTc2NjViYzlkOTIwZDAgbGVnYWN5LXRydW5rCisyMDM2NyAzMzlhOTNiMDA4NGM3NWIzYWM0MTc4NmQ2MjMxZmU1NDU1NTg2NzY4IGxlZ2FjeS10cnVuaworMjAzNjggMTQyNTQ1ZDJhYWZjODBhNzc3M2E2ZjkwZmE3NTAwYmNmYjhiNjU0MCBsZWdhY3ktdHJ1bmsKKzIwMzY5IDRhYjU4NjI0NjUzZTdmNTVhZTFiOTA0YTI4MGY5MjE1YjlkMzZmNGQgbGVnYWN5LXRydW5rCisyMDM3MCAyNWY1NWIyZTM4YWNjODNkMmJkMmVhMTU0YTE3N2Q5ZDlhNGI1MTBkIGxlZ2FjeS10cnVuaworMjAzNzEgMGI2OWUxN2UwNTVmYTc0ZTI1OTdjZjNlNzZhZTExZDAxNmE0MTA0YSBsZWdhY3ktdHJ1bmsKKzIwMzcyIDYxM2RjZDU0NzZiNmU2ZGE5YmZmZWUzM2JlZjJmMmI0ZTczZDEwZTAgbGVnYWN5LXRydW5rCisyMDM3MyBlZDA3ZDZhODczZTczNDBjNWVkOWNhMmEwZjkzOTJiZDhjZThiNGY5IGxlZ2FjeS10cnVuaworMjAzNzQgMDRkYWVlM2FiNjI3YTBhNjkyYmFiOTIxOTRkNTJiOWM2YjQ5Mzc4MyBsZWdhY3ktdHJ1bmsKKzIwMzc1IDk5YWQwMjU3Yjk0MmRlZGMxN2M2YjJkZmRlMGFmOGU1NjAwZDc4YmIgbGVnYWN5LXRydW5rCisyMDM3NiAyMjY1MDMyZWZjOWYwZjRiYzYyOGRiMjRmOWQzZjYzNTUyOWU0MzdkIGxlZ2FjeS10cnVuaworMjAzNzcgNzE3NTJhNDFiNTdmOThiYTZjYzY1ZmQ4OGIxMTE4MmE0ZmNjY2I4NyBsZWdhY3ktdHJ1bmsKKzIwMzc4IDdlODI5ZGQwM2Y5N2E4YjY5Y2YwOWZmMWFhMmZjNjNmMzMxOTVjZmMgbGVnYWN5LXRydW5rCisyMDM3OSA2NDBhZmZkZjk5ZTUwN2VhNTE0MTJlYjg3MjcxOWQxOWRhYzJlMDFjIGxlZ2FjeS10cnVuaworMjAzODAgNzRlN2U5M2VjZDQxNDE5ZGE2OTU2YWRiZjJjZjdhMWRjNzc2YzIzYiBsZWdhY3ktdHJ1bmsKKzIwMzgxIDk2YmQ0YTg0ZjFhNDk0YzI3ZTVjNGFjYWIzZGI1ZDQzZjZhZDE1YmUgbGVnYWN5LXRydW5rCisyMDM4MiBmN2MxMmJhNDI3MzcwOGVjOGE5MjkyYTc3MDI3MDJlNjA0ZDI0MmVlIHJlbGVhc2UyMC1tYWludAorMjAzODMgNWY0ZmNmYjhkM2RkMzY2NzAxYWNlMzA4M2I0YjgwMmY0ZmEwNTA0YSByZWxlYXNlMjAtbWFpbnQKKzIwMzg0IDM1MTM5YTk0NTRkNDM4MDE1YWU3YjIwYTcyNjJkOTI1ZjNmNjk0MGEgbGVnYWN5LXRydW5rCisyMDM4NSAxNWI3NjA5ZTNlMmM4OTFkNGQ2MDIzNGZlNjBmNWE3MjZiZmM3NDM3IHJlbGVhc2UyMC1tYWludAorMjAzODYgYjY1ZDA4OWU4ODQxODkwYTEwZjdiODhhZDllYWY3YTZhMWVmMWYwNyBsZWdhY3ktdHJ1bmsKKzIwMzg3IDZlZWE0Y2ViNzUxNjUyODJlMmI5YjgyOWM2MGNiMmZlODI2OTM0OWYgbGVnYWN5LXRydW5rCisyMDM4OCBhMzQyOTNjZWQ2M2I2MTA5ZjQ3NWU2NWQ4ODM2NmYxMmMxZjdkNGNiIGxlZ2FjeS10cnVuaworMjAzODkgZTUyNmQ5MjQ4OTY1ZjQ3ZDQ3MzVjYjU1NGVmMDkxNTQ4ZGEwMGJiNiBsZWdhY3ktdHJ1bmsKKzIwMzkwIDBiMDYwY2Y3NjJjZTczODUxOWU5MmU5ZWE0ZmM0NzJhZDgyNzIwZmEgbGVnYWN5LXRydW5rCisyMDM5MSA2YTM3NzYyMDE3NTA3NWZkM2NiOTc2ZGZkMDFlYjQ1ZmEzYzdhNzM0IGxlZ2FjeS10cnVuaworMjAzOTIgZjcyZGNkNjdjY2NiMDljYjFhODAxNDlkNDFiZDU2NGU0YTVlMGMxYiBsZWdhY3ktdHJ1bmsKKzIwMzkzIDgwNmZkODgwMTVmNTNiNzM5MTYyNjZlYTRhNmE2MTcxMmU4ZmQ2MzIgbGVnYWN5LXRydW5rCisyMDM5NCA1ZTk5YTFkMGVhNGRkNzkwNDRhNzBjMDExNGQyNzE4N2RiZjFlOTQ5IGxlZ2FjeS10cnVuaworMjAzOTUgNjFkOTU0ZTdiZTk5MjNhNDM0ZWM5NzgzYzY4MDdlM2U2NDQxYWVlOSBsZWdhY3ktdHJ1bmsKKzIwMzk2IGM1YmFiNzk0ZGNkZTY0NDljMjg1N2IwYTJjYjY3MjZhNjI2NzM2ZjkgbGVnYWN5LXRydW5rCisyMDM5NyAzMjdlZmI1OWRiY2RlN2I2MGNiYTM4YzNhYzljMzhmMmFmNzMxNzdmIGxlZ2FjeS10cnVuaworMjAzOTggOGUxNDE1ZWY5YjI4ZDgzMjZlYmZlMjViY2JjNWM0MTFjNjIzYzY3MCBsZWdhY3ktdHJ1bmsKKzIwMzk5IDExMTUzYzE0MTk5OTMxYWFhNjQ2YjExNjJjNzlkN2ZhNTk1NDgxYzMgbGVnYWN5LXRydW5rCisyMDQwMCA1NWVlMTVjNGVlZTY4M2Y0YWFhMjUwYjA5NDgyZjVlNGI3MmViNDJkIGxlZ2FjeS10cnVuaworMjA0MDEgMDY4ZmI1OGExMWQ0ODY4MWMxNWFlOTcwM2I4NWMyMDIyYWZhYzk3MiBsZWdhY3ktdHJ1bmsKKzIwNDAxIGQ2MTEyNzZlOWFkNTNiNWQzMmQxZTgwNjVlMWQ4MTFjMzJmN2Q5NmYgbGVnYWN5LXRydW5rCisyMDQwMyA3YjY3ZWIyNmIzOWFiNjhiZjU2MmY3MzYyZGM5NWRiNWU0YWU2NDI3IHJlbGVhc2UyMC1tYWludAorMjA0MDQgZmQwNjgzY2I3MzAxMmZhYWMwNWZiM2QwYzkxNjY0OGQ0MmQxMzZmZSBsZWdhY3ktdHJ1bmsKKzIwNDA1IDkwYWUzN2ZmNjE3ZmNlYjYwNDE2MzkyOTAxNzFjZjVkMzM1Yjc5ZTcgbGVnYWN5LXRydW5rCisyMDQwNiA3NmZhZTYxNDUyNmNlYzFlYjZiNTVkYTk1YjljNmVkZTJjNzA4N2FhIGxlZ2FjeS10cnVuaworMjA0MDcgYzY1MWNmZDBmZmQ0ODhhNWNjMzdjYzlkOGQ5NjBiYWZjZjc1NGU5YiBsZWdhY3ktdHJ1bmsKKzIwNDA4IDc3M2M2NGQzOGFjNjg5N2NlNGU5OThhYjRkNmVhYTYwNTIzOGRkZjUgbGVnYWN5LXRydW5rCisyMDQwOSA4MTgyM2NmYjViMTQ2ODIzYjM2MjE3MmRkODI4YjNkMDNhODFhOWZmIGxlZ2FjeS10cnVuaworMjA0MTAgMzNkNzFlODBhMDljNzczMTkwOTRkZGFhMDc0MjBmNjk0ZTMyMTlkMiBsZWdhY3ktdHJ1bmsKKzIwNDExIDFlMjNkOTFjMGE4MjFjMDZkYzY4MjcyYjQwMmFlYzBmNjY1ZmQwNWYgbGVnYWN5LXRydW5rCisyMDQxMiBmOTM5Y2U1MmE3MzRkNWQyZjZiMDRjMjA2ODBkNzBiMTNiMTM2Y2VjIGxlZ2FjeS10cnVuaworMjA0MTMgZjlkZmQ1ODdjMTQyYjY4ZGRiZGZlOWNjZmM5ZGJlMzdjNzUxN2I5MSBsZWdhY3ktdHJ1bmsKKzIwNDE0IDA1YmFkMmYwNWJmYTZlY2VmMmYxNGU0MDg3M2FmNmJiOGQ3ZmRiNWQgbGVnYWN5LXRydW5rCisyMDQxNSBjOWNhZTVhNzBiNDgyOTcyMTI1MDdlYmM0OGJlYjE0N2I5OTBjZTA3IGxlZ2FjeS10cnVuaworMjA0MTYgYjI4NDBhM2M1NjAxZDc3NDMwMDAyNDFmNjg3MWU0NWZiZjkyZTQ5NSBsZWdhY3ktdHJ1bmsKKzIwNDE3IDgzODljNGRmNDg4ZGIwNWIzZTAxNTBiYjc4NzNkMDM1YjJlMzY3Y2IgbGVnYWN5LXRydW5rCisyMDQxOCA3OWVmYmM5YTAzZGVmYzMyZTM3MDA5ZTM5ZDZhNWEyN2NmYTYzMjQxIGxlZ2FjeS10cnVuaworMjA0MTkgNWZiMGM0Njc1M2Y5ODMwMTA3NzNjMjkyOWRmMTc3MWUyNWI4N2MzNCBsZWdhY3ktdHJ1bmsKKzIwNDIwIDBmNWEyNmFhNGU0YTMwYWU2NGIzZDNkMWY2ZGY3OTJmNDBhNDk1NzQgbGVnYWN5LXRydW5rCisyMDQyMSAwMWJlMDgzMzMzMDhlYTM1M2JjNDdkNmM2NDkwYzIzMThhNGYwYTA1IGxlZ2FjeS10cnVuaworMjA0MjIgNTAwZDUzNDYwZjU2MDgzNThiMDYxYWE1ODYyMzkxZWVkNTBmMWM2MSBsZWdhY3ktdHJ1bmsKKzIwNDIzIGM0NDQyZmI5OWQyNjVmYjE0OThjOTEzODVlMjQxY2M5NTg2MDllMjcgbGVnYWN5LXRydW5rCisyMDQyNCAxN2E3MWQyYjgxZjdjZjc4NTQyY2IzNTM4Zjc5NjkzODk4ZTgxZjA4IGxlZ2FjeS10cnVuaworMjA0MjUgYzQ5N2ZhM2ZlMzhhMmUzYzg1ZDkyNmZlMWNhZjM5ZjUyY2RjNGNjMSBsZWdhY3ktdHJ1bmsKKzIwNDI2IGRkNmJlNjI1YTkyMzNmODU5NTkwMjE4OTRiZTA5M2IwMjU5MzZmMjcgbGVnYWN5LXRydW5rCisyMDQyNyAxY2ZlZjhhZGUyNzA3MzkwMzQwZTk3MjJiNjBmZTM0ZGMxY2YxMzg0IGxlZ2FjeS10cnVuaworMjA0MjggMDI1OTI5YzE1MzFkM2Q3NmY2ZGU0Y2Y3YmYyY2U5MWRjZGM1ZWY0ZCBsZWdhY3ktdHJ1bmsKKzIwNDI5IDgzYzdiNGI3NTY2OGZmY2Q0NzIyZWVkNTEzOWMxMGY4YjdhZDBlMjQgbGVnYWN5LXRydW5rCisyMDQzMCBkMmRhNjgxY2NiNTRkZjRiMGIyZTZlM2RlNzYzYzNjMGM4MGJhYTc3IGxlZ2FjeS10cnVuaworMjA0MzEgZTFjNTA3Y2RjNmYxZjdjZmQ3NzAwZThkZWE0MGY5ZDNmOWViZjU0NiBsZWdhY3ktdHJ1bmsKKzIwNDMyIDE2MmZhNmIxMzY2ZjNiNGE0N2MyY2RhYjBiNDkyYTc5NzMwYjhmODYgbGVnYWN5LXRydW5rCisyMDQzMyBmMTdhODMwZTI1ZWFiMzRlMjE4MDE1NTczYTk5YWMwZWE4NjZhNWNkIGxlZ2FjeS10cnVuaworMjA0MzQgNTJhOGUzNWRmMTI3OTk0YzI4YjVlNTExNzFmOGNjMGU5Njg0NjI1ZCBsZWdhY3ktdHJ1bmsKKzIwNDM1IGUwYTVhNjNhZDc1Njk2MWJkYjZiNDRiMDA4MDQxZGE0ZDYyNTNhYmEgbGVnYWN5LXRydW5rCisyMDQzNiA0NDkzMTk5ZDJiOTU2ZWMxOGNiYmMyYmYzM2U4MjM0MDVkNjkwZTI2IGxlZ2FjeS10cnVuaworMjA0MzYgZmYwNjVlNjc0YWY2YzlhYjg5NWJkOWVmZjdkOWU5MDM5YTM3NmM3ZCBsZWdhY3ktdHJ1bmsKKzIwNDM4IDQ5MDg1YmI3YmNkOTk0MTY5OWM5YTBhZjI5NWFkZGRkNjUxNmMxNDMgbGVnYWN5LXRydW5rCisyMDQzOSBlNTIyZWQ4MGZiMzkzM2E2MWI2YTVhYTBjN2JmY2VlNWIzZmM5YTU3IGxlZ2FjeS10cnVuaworMjA0NDAgZGE1ZWFiMzMxNDdiOTU5NWIwNGMzMjRiZDc4M2QzZjJhNTA1NTBjOCBsZWdhY3ktdHJ1bmsKKzIwNDQxIDYyNTI2OTNhZmQ5YWYxY2JkOWQ2ZDY5NDZhMzIzNzliMDZjZGU4YzMgbGVnYWN5LXRydW5rCisyMDQ0MiAzNTRhNTcxYTA1YjRmNGU1MTA4MTg3YzUzZTQzZGQzNTAyOWMyOGU4IGxlZ2FjeS10cnVuaworMjA0NDMgNjkzZmE2YjQxZGZhNWUwYmNlNmEyNWNmNTUwODdjY2JkMjBkOGQ2MiBsZWdhY3ktdHJ1bmsKKzIwNDQ0IDg0ZDc4MzliZGNmNjNkYzBlMzU5NGFjODlhNDk3YzgxZGU3MDlmZDUgbGVnYWN5LXRydW5rCisyMDQ0NSBjYmM5Zjg4NjU1OTU4OWNjNGQ0MDg5OGIxYzA4MTAxY2YxZmM5MzdhIGxlZ2FjeS10cnVuaworMjA0NDYgMDU0MzZhNzQwMTJkMWM2MDI2ZDkyOTI1MWVhY2FkNmFjYTc5NjI3YyBsZWdhY3ktdHJ1bmsKKzIwNDQ3IDFkOTk1MWQxMjZmNWMzNDU5MDhlMzIwNTI1NDVkNzhlMzY4MzBhYzggbGVnYWN5LXRydW5rCisyMDQ0NyAwMjBlOTVkODE4MGQ3OTQzZmU1NDcwMWUxZGIwYTdkN2Q4N2UyYjFlIGxlZ2FjeS10cnVuaworMjA0NDkgMTk2ODZhNjI3OWY0NzVlYjg3MTE3NThiNGNhMzNkMjc2M2MyNmRiNiByZWxlYXNlMjEtbWFpbnQKKzIwNDUwIGZmZjMwMjIxZDE5YTM0YzBlZWJmZGRkYTMwYjY1OTc1YTY4NmM0OGUgcmVsZWFzZTIxLW1haW50CisyMDQ1MSA3MzJkZGVlNjg5NTcyMDhiMWU3ZWZhMjgwOTk3MzM0OTc1MGM4YzQ3IGxlZ2FjeS10cnVuaworMjA0NTIgZDA2YmJiOGM0OTNhYzAxNjk3ZWVmNDAxNDg0YTFiNGM4NWQ5NGRhNCBsZWdhY3ktdHJ1bmsKKzIwNDUzIDI4YzE0YTc5YWQyMjViNTMyMTVmM2NmNDQyNzljZWZhMjBlODY3YWMgbGVnYWN5LXRydW5rCisyMDQ1NCBkYjkyOGEyNzdmOGIyZTg0ODUzM2QzOTlkYmIyNjIzMjU4NzA1NzhkIGxlZ2FjeS10cnVuaworMjA0NTUgMzYyMzJmNTQzMjIwZWVkYzhkM2FmN2ExMTQ5MzM2MzY1N2Y3NmY2ZiBsZWdhY3ktdHJ1bmsKKzIwNDU2IDg5NWZjNWM5NTc2M2VkMTBkN2E0ZDc0ZGI5ODEzYzExZGExNDczOGMgbGVnYWN5LXRydW5rCisyMDQ1NyAyODM2ODNiNWU3NjdjNzkxNGU4MTgwZWVmZTlhMDgwYzZkZTM2Nzg4IHJlbGVhc2UyMS1tYWludAorMjA0NTggYjZmMDhkMjc5NWI1ZTI0NDJjOGZhYWYwNTFkOWY5ZWQwZWQ0ODc2NyBsZWdhY3ktdHJ1bmsKKzIwNDU5IDg4YTVjNzZmZmM4ZDNkOGFlZTM0MjQ5NjFjOWRjN2U1ZDJlMjMyOGEgbGVnYWN5LXRydW5rCisyMDQ2MCA0MmJjYWZmYTVkOWIxYWU3NDdiM2M1MmE2ODBmYzc5N2ExNTA0YmFhIGxlZ2FjeS10cnVuaworMjA0NjEgZDk0NDQyM2U2ZmZmNmRjMjYyNzY4M2NkMDJjZTg2YjBjMTBhYzQ4ZSBsZWdhY3ktdHJ1bmsKKzIwNDYyIGE5YWQ4ZGVhYzE3ZDViMmZiMjZkMzkxM2JiNmJjNDNjYTQ2Yzg5MzcgbGVnYWN5LXRydW5rCisyMDQ2MyAwNDA1YzY1N2QyYWM5ZmRkZjJkZmY2N2Q4YmI1M2NlM2M4NzRkYzZmIGxlZ2FjeS10cnVuaworMjA0NjQgNzVlMzIyZDYwNGYxNmUyOTg3MmVlMzFmOWQwMWYxMDZkYWVkODc4ZiBsZWdhY3ktdHJ1bmsKKzIwNDY1IDNlYWMyMGFmZDU0YWFhZDc0NzcyNjZkYWNjOTA0MmY0ZDkyNjY1M2IgbGVnYWN5LXRydW5rCisyMDQ2NiA1MThkYjQ1NDg2MzAxOWE0ZThmYWJiM2MxNGUyYWY4OTQ1NDBjM2E5IGxlZ2FjeS10cnVuaworMjA0NjcgZDExMmYxMzVhZjhkMTQxOWYzNzY3MmVhZmNjZTk3NTRiODg3YzkwZiBsZWdhY3ktdHJ1bmsKKzIwNDY4IDBkZDVkNmQ5YTk1MmE2ZjExMTA1NDYwODM0NDUyYTRhYzIxYTM3ZTYgcmVsZWFzZTIxLW1haW50CisyMDQ2OSA3MDc0MzAzODQ2MDMxOTE3YzI2MzBkM2Y5OGNlZWE4NTZkMTNlYjc1IGxlZ2FjeS10cnVuaworMjA0NzAgY2NjNDRlNTQzYmVlZjE3ZWI4NDEwOGI0NTk4MWY3Y2UzZmM1MDIyNyBsZWdhY3ktdHJ1bmsKKzIwNDcxIDNkZDk4NjBlNGUyZDRiZDNlN2Q4MjQ2MjRjMjZkY2U0OWQ0Y2FmZTIgcmVsZWFzZTIxLW1haW50CisyMDQ3MiAyMjhmNGI4ZDE4ZjAxYTk5MDg3MzliNDFiNzJmYjY1NzUwODMzMzVjIGxlZ2FjeS10cnVuaworMjA0NzMgNDUyNjY2Y2IyODNkZjhiOTI0NWIzMzkwNWZhOGQ5OTE3ZjAzMGQ0NiBsZWdhY3ktdHJ1bmsKKzIwNDc0IGM2NTdhMzkzNzkwMjA3NzI2NWRlMGFkYzRhMDZlYjcxZTg1OTA1MWQgcmVsZWFzZTIxLW1haW50CisyMDQ3NSBjMTkzN2ZhYWJiMjM3NDhhNGUyODNlN2M0ZTkwYzdkMmFiNzdhMGEyIHJlbGVhc2UyMS1tYWludAorMjA0NzYgMmZjYjNmYTY3ZTNiNjg3ODY2NGM1MmEzNDc5Y2NjMWJiMzJhNzBkZCByZWxlYXNlMjEtbWFpbnQKKzIwNDc3IDBkNzBkYWViODk2ZTFlZjM5YjkwNDAzMjE5ZmYyNGM5ZTRlZmQwMmYgcmVsZWFzZTIxLW1haW50CisyMDQ3OCBmOTlkZjJhMGUyY2Y5YzYyMzExOGFjNmU5OTAwMThmM2JmYjBkMmM4IGxlZ2FjeS10cnVuaworMjA0NzkgZDE2ZGMyNmVjNDI3YWIwMGI5NTQwZThjODBjMTYwZTE3ODI1YzJlMyBsZWdhY3ktdHJ1bmsKKzIwNDgwIGM1ZjcxOTFjZTY3ZTkzNGJkMWYxMmJjNWRkMTdjZTNhNTg2MWJlOGQgbGVnYWN5LXRydW5rCisyMDQ4MSA3ZWI4N2NmMTZhNTM2MGMxNDRiYzUyOWYyOWYwMDMzYWJjYzQ2M2FhIHJlbGVhc2UyMS1tYWludAorMjA0ODIgNWE1ODA1YTQ1ZGJmNDk0MTExZTBhYWY4ZjQyMWVmNjMxZjcxODU2ZCBsZWdhY3ktdHJ1bmsKKzIwNDgzIDk2ZjliODZiN2IzZGRkNjc2MGQwZWEzZjc5NjExZmM1ODA0ZDE4MjEgbGVnYWN5LXRydW5rCisyMDQ4NCAxZTMwNDJhNGU2MGUyZTNjZjEyNDdmNzA5Y2NmYjlhYTlhMTgwNDc4IHJlbGVhc2UyMS1tYWludAorMjA0ODUgNDRhM2FjNTljMjY4ZGQ4ZWE1MjBmOGZhZGI4MDgyZTg4NWRlYjNiOSBsZWdhY3ktdHJ1bmsKKzIwNDg2IDFmM2ExOTRlMjFmMzFmNDU3ZmJkZDQzYjdlNmNjOTIyOTQzYzJhOWEgbGVnYWN5LXRydW5rCisyMDQ4NyAwMGE2YjA2MDUxMTM1MzVlM2YzMTg4MzhlNDg1NzE2NTg5ZjZiNmJiIGxlZ2FjeS10cnVuaworMjA0ODggNTZmMWI4YmE1Y2ExN2QxYmQyOTUxYWZjNTg1NWY0MTg0OTVkMTVlMSBpdGVyLWJyYW5jaAorMjA0ODkgYmY5NGFmMzk2YjFlMTA3YWQzY2Q4ZjExNjcxNmIyNzZlYTgxMmRiOCBsZWdhY3ktdHJ1bmsKKzIwNDkwIDFkNzI2ZjVjZDU3YTBmZGZiYTYyMmZhYWEzNWZlYzJkNjc2YzllMmIgbGVnYWN5LXRydW5rCisyMDQ5MSAxYjQ5YjE3N2ExMDVlMTNjY2ExZjFjNGU3YjQxZmVlYmM0NjVkYjI2IGxlZ2FjeS10cnVuaworMjA0OTIgMzJlN2QwODk4ZWFiODVkZTgxMzRmOTMyNjgwYTg1YzZlN2FiY2VjMCBsZWdhY3ktdHJ1bmsKKzIwNDkzIGMzYmIwZmYzOTZkY2M2MzNjYjY3MTk2YTQzNzc2MTMzZjcwMjNmZjkgbGVnYWN5LXRydW5rCisyMDQ5NCBlMTVhYjRlNjUyYWRjYjdmYTU1NmExODE1NGNjMTE2ZDQ5YzdiNTYyIGxlZ2FjeS10cnVuaworMjA0OTUgMWZlOGU1MGU2ZTFiOTgyZDdiN2RkMWY2OGU2YTk0ZDQwNmEzNWIzNSBsZWdhY3ktdHJ1bmsKKzIwNDk2IGI2ZGJmYzQ1YWM5YmYxOTAzOGUxY2QzMjU4ZDliOWFjMjA4NDJmMzkgbGVnYWN5LXRydW5rCisyMDQ5NyBmNjNmNzQ5MzY0ZWZmZGQzNmUwZjdjODQ5OTE4ZDliNjc5MzI5NTU0IGxlZ2FjeS10cnVuaworMjA0OTggZDYzOGU0MTljMzA0NTJkOWQxZDdmZTlhOTg2MWZkMGI5ZDQ1ZWYzZCBsZWdhY3ktdHJ1bmsKKzIwNDk5IGQzMjRhZTI4OTJmZmE0YWJmYjIxN2Y1YTU5ODlhN2QyZDA5YTkwZTkgcmVsZWFzZTIxLW1haW50CisyMDUwMCA0ZDdmYjI0ZmU3OTUzZjkwZjgzNjRiMmExZmFkOTI2YjJlNmJiYTY1IHJlbGVhc2UyMS1tYWludAorMjA1MDEgNGFiZDA3MmFiM2Q1YjViZGExY2Q2YWNiZDBhZjcxMjkyMjEzYWQ1YSBsZWdhY3ktdHJ1bmsKKzIwNTAyIDM4N2U4MGUxMWE3OTVmY2U1Njc2N2NmNDlmYWMzMjFhM2U3Y2RmMWUgbGVnYWN5LXRydW5rCisyMDUwMyAyMmFmMTVmODQxMGE4YjI3NzM0MzRkOWFmY2RhYzIyOGMwNDIxODQyIGxlZ2FjeS10cnVuaworMjA1MDQgNzlmMGNkM2E3MWExZTk5NmVkODQzYTIwYzcxNzBjYjhkY2JjOTJjZSBsZWdhY3ktdHJ1bmsKKzIwNTA1IDYyNGZjOTcxM2QxOGIxMTAxNTZkZmI2NjkyZDZhNWYyNjFmMGFmODQgbGVnYWN5LXRydW5rCisyMDUwNiAxZWIwMGExMjNhMGVjZDdkNjgxNDYyMDkwNDAzNWIwYmM1OTUxYmQ2IGxlZ2FjeS10cnVuaworMjA1MDcgYzE5ZDZkYjZlOTliN2FhYzdjZjdjOGVjOWEyMGZhYzU1ODA2ODI2NCBsZWdhY3ktdHJ1bmsKKzIwNTA4IDdkY2RiMTZiZDA2OGNjYWVjNTkxNzQ3NTZkNzk5YzNiNDI5Nzc0NDAgcmVsZWFzZTIxLW1haW50CisyMDUwOSAxODg1NDE3ZjQ1ZGEzOTg1NWI4YzQyMDI4MzZhMmY0M2IwMDY3ZTBhIHJlbGVhc2UyMS1tYWludAorMjA1MTAgYjgzMGRmMDgzYTlhZGQwNzA5YjY4ZDBiNTE5MjMxNmEwMTExODU4NiBsZWdhY3ktdHJ1bmsKKzIwNTExIDdhY2JhNzhlMWUwOTFkYmI3ZWVjMjkwODMwMTZmNWJiOTFjMTc4ZTYgbGVnYWN5LXRydW5rCisyMDUxMiBhYWM2NWY1MGRmNmZmMTQ0YjY3MDFmZTUxYTE2M2IzMGE2YmNkMDJjIGxlZ2FjeS10cnVuaworMjA1MTMgYjQ0YmE3YzAxMjE3NzVkNjQ0MTBjZjFjOTNkMDI3NWI1YzgyYTRiNCBsZWdhY3ktdHJ1bmsKKzIwNTE0IDFiNzMwYmYzZjhkMmFjMWQxNTIzN2VjOWVlZTRkNTJkMjY3ZGZjNmQgbGVnYWN5LXRydW5rCisyMDUxNSBlZmI1YzgxNGZmYjZhYjQ4NTZjZTgyMmJmM2NlYTczMTYzM2JjNmQxIGxlZ2FjeS10cnVuaworMjA1MTcgOTllOTQ2YTgyNjk5MjE3MDYwYjk1ZGE0NjJhYjdmN2FmYjAwNmIyYSBkZXNjci1icmFuY2gKKzIwNTE4IGUyYWY5MGI2MWIyYmQyNjc5YjRlYWNjZTNmODRkMzVkYzY2NGRjMTYgZGVzY3ItYnJhbmNoCisyMDUxOSBiN2E3MTM1YmNjYzhiM2UxYWQxNDg1ZTdmNzcwZWU2ZDQxMWRlOGEyIGRlc2NyLWJyYW5jaAorMjA1MjAgMGI1ZDNlMDMxMjAxOGFkY2NkMDkwMDc2ZWJlMTFmMGE4ZGNiZmIwNyBkZXNjci1icmFuY2gKKzIwNTIxIGM5N2IzNzEzNmQ4M2UzNTMwMDUwOWJlYTUyYTQ1YjExYWUxZWFiYTMgZGVzY3ItYnJhbmNoCisyMDUyMiA2ODE5MzEwZGU4Mjg0NDdjZGRmZmYwZDYwMTY1MDY5MWFmZDU1OWJhIGRlc2NyLWJyYW5jaAorMjA1MjMgYTFmMDdmY2MzZDQxM2Y3NTI3ZjRmZDk1MjIyMGUzYzljNzAzZWMxMyBsZWdhY3ktdHJ1bmsKKzIwNTI0IDQ0YTBhOWEyNzdlZjY5MWEzY2IzZGI2ODVhZjEwNTdiOTM4NjA4NDUgbGVnYWN5LXRydW5rCisyMDUyNSAxNjg2MDgwYTdjNmMzNzZkMzdiMDVlZTI1MjI5N2ZiOTA0NzhkNDkxIGxlZ2FjeS10cnVuaworMjA1MjYgZDkxZmMwMjI2OGQ4ZDAxMGI3MjViMTBmMDBiNTc0YzllMTNlN2NhZiBsZWdhY3ktdHJ1bmsKKzIwNTI3IDljMTEzMmYzMDk1YTA2M2FlNGJlNmMzODdhNjA3MjJlMTQ1NDY4MzYgcmVsZWFzZTIwLW1haW50CisyMDUyOCA5NTBmMWMzYThlNmFhMTVmMWQ0MzdhMjgyMjE5MDMxNmRiMmEwMzY1IHJlbGVhc2UyMS1tYWludAorMjA1MjkgN2U4ZWQ2ZTM5ZWJkMGQ3NTU5M2YwMWFkMzEzODc3ZTkxZGViYjA3ZSBsZWdhY3ktdHJ1bmsKKzIwNTMwIDkxY2JkMDFiODVjYmRmOTFhYzM1MWY3ZDdkMTBkNjNjNzE5OTE2ZjkgbGVnYWN5LXRydW5rCisyMDUzMSBhOTQ4NWQ0MDRmMDVkMjQxMDYzNzExNDUwYTE5Nzc2Y2I4ODU0NThmIGxlZ2FjeS10cnVuaworMjA1MzIgZGE0ODA5OTQ3YTMyMTA1YjhmNGQyYjc1MjYxY2NmMWU1NTZlMjQwMSBsZWdhY3ktdHJ1bmsKKzIwNTMzIDI0OTEyM2MxZjRkYzExMzQwYTRiNDBjN2RmNDVkMmZjMzNlNDQ2N2EgbGVnYWN5LXRydW5rCisyMDUzNCBmY2RkZTY4MDMzMWU1YWVjYzQ4NDJiMjNmMTAwMzlkMDE2NTgyZjJmIGxlZ2FjeS10cnVuaworMjA1MzUgN2Y1ZTNlNmIyYTM5MjA3NTAwYzIwZTA5YzdkYjFmYTVkYTU1NGNlNSBsZWdhY3ktdHJ1bmsKKzIwNTM2IDBiYzMzNzdkMGQ3MjA4YmMyMjM5YmFjNDA0NzhjNjBmZTY2MDM2ODggbGVnYWN5LXRydW5rCisyMDUzNyBiN2RmODhhNzhhZGJhYjgxZDlmODdiNjgwNTk5OTY5ZjVhZjBkNmQ4IGxlZ2FjeS10cnVuaworMjA1MzkgOTkyMWE5ZDI3ZjcyOGM2MTkwNTYxM2VmNjJlYWIwM2YxOWNlMjNjNSBsZWdhY3ktdHJ1bmsKKzIwNTQwIDhmZjc2Y2YzMGE4Y2MzN2NmNmVlYTM2Y2Y2MDRiNGJlYjc5OWI4NDggbGVnYWN5LXRydW5rCisyMDU0MSA3ZDY3NmI0MjM3YTk5MzJmOTEzZmIyODEzMTdkYzJjOTE5MTAxMDM4IGRlc2NyLWJyYW5jaAorMjA1NDIgMzJlNzM1YmVmMGJjMjliMDU2OTM2NjQ3NGQxMTNjY2IzZWE4ODViNyBsZWdhY3ktdHJ1bmsKKzIwNTQzIGJkNjVmODg5M2JlM2FlZjQwNTAxNGM1YTMyNzljY2FhMzMzZDExOWMgZGVzY3ItYnJhbmNoCisyMDU0NCBiMTI1NDE2Mzk0ZmFjYTMwNjRmZmQ3ZjIxMjgyMGRiNGViZjY3MzY5IGxlZ2FjeS10cnVuaworMjA1NDUgYTE5ZTY4ZTM2NWM3NTcxZDk3ODQ5NDYxMzFiMzg4NTdkYzIxZmZjMyBkZXNjci1icmFuY2gKKzIwNTQ2IDk5MzQyMjVmZTI5NzgyNzQwYmYwYmZlZjA4ZTJhNjAwZmI2ODRkYzAgbGVnYWN5LXRydW5rCisyMDU0NyA5YmU3NzU4YThjOTRjODg5Njk3NDMxOWE2MzMwZGUyNGRkMzEwOGU2IGxlZ2FjeS10cnVuaworMjA1NDggYjI4MjM2MzQ5ZGU1MTQ3MzcxMTFkM2M1ZTY2YzRmMTExMjJhYjM3OCBkZXNjci1icmFuY2gKKzIwNTQ5IDllODFkMzkxYjc2NTg5ZDg2ZmFjYzQ1ZGFjMmFkMzU1YzM3MDA1NjcgZGVzY3ItYnJhbmNoCisyMDU1MCA5ODdjZWI5ZWMwMjMzM2RjMGIxZDAzNTM2NTRkYjdkNzg1ZDI4Yzk4IGRlc2NyLWJyYW5jaAorMjA1NTEgODg3YjUyOTc2NTJhM2M2ZmFmYWYwZDJlZTRhYmI2MmIwN2NhMTRjMyBkZXNjci1icmFuY2gKKzIwNTUyIGUwNmMzNmMxM2YxMjg2MjQzZWQwODVkZjA1MDU1NDM1NzgxZTQ5MTQgbGVnYWN5LXRydW5rCisyMDU1MyA1M2VlMGZhNjc2NjE3YTkxN2M5YTgyYTllNzExZGMyNmU0YWYwMGYwIGRlc2NyLWJyYW5jaAorMjA1NTQgMDEzZGViNWUxNzJiZjVjOTRhMTM2ZTExN2ZhMDUxNWU3N2QwYjdjNSBkZXNjci1icmFuY2gKKzIwNTU1IDcwMzdkMWY2ZTc5YWViNDY5NDAwMWY3Zjk2MTA4NDY2ZjUyY2Y1MjQgZGVzY3ItYnJhbmNoCisyMDU1NiA1ODdkYTI5ZDY5ZDVkMGNlOTcxNDM1NDE0MTQ3OTZkNmJlNzkzYzEwIGRlc2NyLWJyYW5jaAorMjA1NTcgMTcyMTI2MmFiYWE4MmEzMzdkYmFlYjQ1NzNmMjFmOTgxNzc0ZmU5YyBkZXNjci1icmFuY2gKKzIwNTU4IDRiODExYTcxYmU1YzJmYWQ5N2FlNWM5ZmEyMjBhYjI5Y2YxYzcwYmEgZGVzY3ItYnJhbmNoCisyMDU1OSBhZTA3NTk5YWRmMzNmN2E4NmRiZDc1ZTVjZmI3ZWY2NzI4MTFmNzc1IGRlc2NyLWJyYW5jaAorMjA1NjAgZTJkYWVmMDY4NDk2YmMxMzZiNjEzMTc0Yzc0NTAwODM3YmE0ZTFkNiBkZXNjci1icmFuY2gKKzIwNTYxIDU2YzU0NDVlYzgzNTg2ZTVmNzc3YWFmY2E1ZDA2YTYzM2YzNmU1OGYgbGVnYWN5LXRydW5rCisyMDU2MiBhYTcwODdhYzZkOTU1OWJjOTkxZjhkZDA5ZjRkZWNkNGI3NDY3MDA1IGRlc2NyLWJyYW5jaAorMjA1NjMgYmQzMTNhNWUyMGQ3ODhmZjkwZDExMDUwNTdmMzZmOWY0MWRmNjQwZiBkZXNjci1icmFuY2gKKzIwNTY0IDVkYmZlODMxNjIzNjM4OWNlN2EzZDllNjBiZDg4MzM5OGM0YTFmNzUgbGVnYWN5LXRydW5rCisyMDU2NSBiNWY1ODNlZWNiMjAzYzRjMjg0YjIwY2MzNDNiMDRjNzUyMDAxMTcwIGxlZ2FjeS10cnVuaworMjA1NjYgZDFlYzY3OWJhYTNkYjgyYWI4NWFkYzgwN2MyYWQxOWQwZTE1MGM0MyBsZWdhY3ktdHJ1bmsKKzIwNTY3IDU1N2FhZDNlNzRiYTYzNGIwMmZlYjgwNzZkMTNiNzViMmEyOTQzZjAgbGVnYWN5LXRydW5rCisyMDU2OCA2YzgyMjc3ZTc3ZjM1N2Q3NGEzNTcxODA0NzZkNGM0MDU4MGJlMDZlIGxlZ2FjeS10cnVuaworMjA1NjkgZGQyNGFiY2IyMzMxYzc4Y2Q2OGQ1ZWE0ZDcyOTI5MTVlOGNjOTQxNyBsZWdhY3ktdHJ1bmsKKzIwNTcwIDExMTgxY2QzODk3ZGMxYjgwMWNjMWQxOTc2NGJjMzFhNzA1Y2Y1YTkgZGVzY3ItYnJhbmNoCisyMDU3MSA3YTM2N2FkNDNmMzUyMzhkNDY2NGNjZmI5OGFmNGUwMTk0YWM3Mzc5IGxlZ2FjeS10cnVuaworMjA1NzIgZmE4MzI2Y2M3NjFjYjNhZmZkNjgwMmVlMDNlMTNiMzVhNWYwNGE3NCBsZWdhY3ktdHJ1bmsKKzIwNTczIGViYzI0YTEwNDEzMjljNWVlZjJlNTBhZTljOWY2YTY0ODYyODhlZDcgbGVnYWN5LXRydW5rCisyMDU3NCBhODQ4NzQ2ODdjYjFjZGUzODcxNzgwOTg2NWM1NTc4OGEwNzdiNTExIGxlZ2FjeS10cnVuaworMjA1NzUgYTk3ZTE4ZTQ5OWE5Y2Y3YjFiYjRjMGE5YTIzZDRjOTE1NmYwNTg0NSBsZWdhY3ktdHJ1bmsKKzIwNTc2IDA0NzBiYWJkYWU0OWZlZTgzMzY0ODRlNGQxMjM5Nzg3ZGNlZThlZDggbGVnYWN5LXRydW5rCisyMDU3NyBhNjY5OGEwMTZhZmUyMDYxZjc3NzQ1YjE3MmI4ZTAyNjI0MTRmNzAwIGxlZ2FjeS10cnVuaworMjA1NzggMDg1ZjQ2MGIwZTNiNTk5NGEyNGJkODQwYjAyMjlhZWFmNjBkYmNiNyBsZWdhY3ktdHJ1bmsKKzIwNTc5IGQ2NDk4YjFlZjUwZDFjZDkzZjBkNzI2NDI5M2I4ZWY1MzAxZmEzYzIgbGVnYWN5LXRydW5rCisyMDU4MCBkZWI4YTVlMTUxYTM0NmNkNTRhNjRiMDQ2N2NkZmYwYTFkZTI4NmI5IGxlZ2FjeS10cnVuaworMjA1ODEgMzBkNzUxOGUxN2U1YmZhOTM1MmQyNTY5ODVhYzY0YzcwNjBlNDVmZCBsZWdhY3ktdHJ1bmsKKzIwNTgyIDBmZjRjZGYzNGZjMWE1MGYzZTBiNmY0NWE3ZDc0YWRlZjFkMDZhNWYgbGVnYWN5LXRydW5rCisyMDU4MyA2NDUyMzMwNzc5NGU5MzU0N2M1ODU2MjVhMDZiNGI3MWYzZmJmYzM3IGRlc2NyLWJyYW5jaAorMjA1ODQgNWI2ZDU5NjFjOWUzOGUwZjYyZjE5NDhkYmIzNjMzM2M2MGY2YmU3NCBsZWdhY3ktdHJ1bmsKKzIwNTg1IGQ3NjY0OWJkMzhkMDFjOTZlNWRlMjZjMWNkZjZiMDBiYzNjMTkxNGYgbGVnYWN5LXRydW5rCisyMDU4NiBiOTA3NmQ4NzE4YWIxZDJkYmFkMGEwYzQ0ZGFhMDhmZDk3ZjAxN2UyIGxlZ2FjeS10cnVuaworMjA1ODcgNGMyOWIwNGU0ZDZmYzE4NmM1MWZkZjE0MjJlOGExMjY5Yjc1MTc0NSBsZWdhY3ktdHJ1bmsKKzIwNTg4IDEyYzgwYjU3MGQwMGEwZWNiOTI5YjhjYmU2N2FmYmQ0NWNjMTEyNDYgbGVnYWN5LXRydW5rCisyMDU4OSA3NmVlOGI2MmVlMmE4MmQ2MjNjNmM0ZTA5MWE0YzhjZmYxMGVkYzY2IGxlZ2FjeS10cnVuaworMjA1OTAgMTVjY2UzZDgwZDBmZDhkM2JiMWE3NmQzMDQwN2FhOTYyNDhiNTJhNSBsZWdhY3ktdHJ1bmsKKzIwNTkxIGQ3ZDA1MTAzYzAyM2ZjNjQ1OTljY2FlMzRmMWZkMTI0MzdiMTAyZTYgbGVnYWN5LXRydW5rCisyMDU5MiA4ZDllYjVhNGViY2Q5OGRkYjU4NGU5NDg3MGFkMmFjYWI0ZWU3NTgyIGxlZ2FjeS10cnVuaworMjA1OTMgOTliMDZhNjQ5YjE0N2I3NTBjN2Q4YWRmNWU2MTM2Yjg5Mjk5MmMwNiBsZWdhY3ktdHJ1bmsKKzIwNTk0IDc5NDhjZDRmNzY2Mzc0MjQzZmNhMTQ4N2NiNmU0YWFlN2U0N2ZjYjEgcmVsZWFzZTIxLW1haW50CisyMDU5NSA4NjQzZTZkZTEzZGZhNzAzNWE0ZThkZTQzYjIzYjdkYTM4NGViMGI3IGRlc2NyLWJyYW5jaAorMjA1OTYgZTZlODFkY2ViZmRlNWQ5ZTRjMjU2M2E4MTBjMDJmOWUwZTRjZjU0YyBsZWdhY3ktdHJ1bmsKKzIwNTk3IDk4ZjM0YzQ2NDNlOTgwMDEyNGNiZTRkZGYwZjY0Zjg3YzQxZmYyYTggcmVsZWFzZTIxLW1haW50CisyMDU5OCAwYmUyNzcwMzlkOTNiNDJmMzZkYTdjZjkzNTFmZTMyYzhlNzNiZWM1IGxlZ2FjeS10cnVuaworMjA1OTkgZDgwNTAwMDc2ZTlmYjk1Y2ZmODJiODBlMjQyOWQ4ZmI1NTcxNjQ4YiBsZWdhY3ktdHJ1bmsKKzIwNjAwIGJmN2YxNjZkM2M5NzQ2MGRiMGU4OTIyZTBhNTc5MTdlYTQ0NjRiZDAgbGVnYWN5LXRydW5rCisyMDYwMSA1NWUzMjAxODk1MDg3YjNlZDExNTE1MzJmOTU4NjBiNWYyOTZiNWM1IGxlZ2FjeS10cnVuaworMjA2MDIgMWMyZDI2ZWVmN2VkMWI1OWM5ODJkNzU1YTE0ZDg0ZTQ2Mzk4MDM4YiBsZWdhY3ktdHJ1bmsKKzIwNjAzIGJiNmM1OWE4NWNhMTQ3ZGQxNGQ3N2M3YzllYmVkMzdiZWEwYjA3YWEgZGVzY3ItYnJhbmNoCisyMDYwNCA4YjBjMGM0ODJhNTVmZDA2ZDllY2U5ZDM3ZDdjMGY2NjdmNDgxZDBmIGRlc2NyLWJyYW5jaAorMjA2MDUgODM5ZjZmMmNkNjZmM2NmZGEyNjE5OTY4MTVhZTBlYjlmOGVhY2FmZSBkZXNjci1icmFuY2gKKzIwNjA2IDMwOTFmYjgzZDUyNzFjY2QzOTEyNzdhYjUzYTc4MGY2NmQzNjVlNjYgZGVzY3ItYnJhbmNoCisyMDYwNyA4ZmM3YmVjZjc4Mzk0NzI5MjdmZjY0OGNkZjZmOWJkOTgyZWUxOGZlIGRlc2NyLWJyYW5jaAorMjA2MDggMGE5ZTNhYTcxZGI5ZjIzMGI4NTdlODlkODM4NDNlZDVhOThjMzhiZCBkZXNjci1icmFuY2gKKzIwNjA5IDgyZjhhMmIxYjc5Y2MzMmRiMTZhNzY5OGYyYzZhZmJhMjBjMmUzYTEgZGVzY3ItYnJhbmNoCisyMDYxMCBmYzY1OGFkY2VkYzhlOWI0YmMyODZlOTVmZTViZjJjOTU1NjMyYjVhIGRlc2NyLWJyYW5jaAorMjA2MTEgZjg5ZTg1MTUzZDA0NzUzOWM0ZjQ3NDM0NGEwYzk2ODAyYjVmYzBmNSBkZXNjci1icmFuY2gKKzIwNjEyIDM5Y2FiZDBhYWUxZWJkMjg1M2U1Y2M1OGNmMzY2YzdiMWQzNGRiM2IgbGVnYWN5LXRydW5rCisyMDYxMyA5ZDFlMzA0ZWNiMThhNThkYjRmZGFjYzMwODFhZDJhNzU1ODRkNTI5IHJlbGVhc2UyMC1tYWludAorMjA2MTQgNTUyN2Q2MmZhZmUwNWU2YjY2YTVlODBhOWY2ZTBmYjFhZmRkYzU5NCByZWxlYXNlMjEtbWFpbnQKKzIwNjE1IDZmOGVmZGJkZmY0ODIzYmNhZmVkZTIxYzM4YTZlYThhMWMxYjU2ZTAgZGVzY3ItYnJhbmNoCisyMDYxNiAxNjJiOTRjOGQyZDFhOTRhZTZiOGM0NWY3NTEwOGVhY2FlNzYyOWE5IGRlc2NyLWJyYW5jaAorMjA2MTggZTlhNGUyN2U4ZDRlMTZlMTRiMzJhYjI2Njk1MzAzN2VhMjQ2ODExNSBsZWdhY3ktdHJ1bmsKKzIwNjE5IDM5OWQ5OTYwMWIyZGMwZDJlN2JiNGI1NTBkODQyMThjMzc3M2QxOTUgbGVnYWN5LXRydW5rCisyMDYyMCAwYzk4NzcxMjBmMzgxNzgzZjc1MDNiZGNhYjRkNTYwMDUwNjkzZjZiIGxlZ2FjeS10cnVuaworMjA2MjEgM2NkNGFmNjY2ZGU2YjNlNmYwMGM4MTIyMjIwYjFhZDlmOTc1N2MzOSBsZWdhY3ktdHJ1bmsKKzIwNjIyIDllMDkzYmY4ZjZhOTNmMmMzM2Q3Y2ZhYjA5MTY2YmU2ZDE5NjhlNTkgbGVnYWN5LXRydW5rCisyMDYyMyAxZWJiNGU1NjYyNTdhYTg5ZGVkMGYzZDZmMDEwODM0ZjVhYTAxNGFmIGxlZ2FjeS10cnVuaworMjA2MjQgNDlkOWJhNTU1ODhiNjdiNmNjNjExYmMzMTRmYjlhYWE2MzliNDgxMSBsZWdhY3ktdHJ1bmsKKzIwNjI1IGVlNGQxNzg2MmI2MTgwYjE0MDc1ODBmZjU3NjkzNzc0NjU0ODNkMzIgbGVnYWN5LXRydW5rCisyMDYyNiAwMDJlYzczM2I1ZGM1YjYzOGQ1Y2RkNTAwNDdhYTg0MDQ3NGVlNDI5IGRlc2NyLWJyYW5jaAorMjA2MjggZDRkMDY1MjljMjE4MTFkMzBlY2I3MmFlMmMyMTEyMjQ3ZWY4MjEwNCBkZXNjci1icmFuY2gKKzIwNjI5IDllNTNhNWQ3MWYxZGExZWYzMTA0NWY1ZjMzYTM2OTY2M2VkZDFkOTAgbGVnYWN5LXRydW5rCisyMDYzMCAxODEyNDc2YjdmZTQ1NzAyMThlM2Q2YzUzYWZlOTVkZDhmYTY4NDY4IGxlZ2FjeS10cnVuaworMjA2MzEgNjhlNzFlOWJjMjA0NTQyYTlhMmNkZGFkMTViMjg1MDBiMTdiNzUwZiBsZWdhY3ktdHJ1bmsKKzIwNjMyIGFhYjZjMWYxOTI4OWRjZmRiZGJhMmMxOTg2NjFjZTk3MTE4YzcwMzAgbGVnYWN5LXRydW5rCisyMDYzMyAzMDY0YjczYWRjMWFkNzcwNGExOWVlN2MyMTQ2NmQzNTI1YmZjYWI5IGRlc2NyLWJyYW5jaAorMjA2MzQgNDQyNGUwNmQ0MTU5NTRmYTEyMjc3YjNiNmIyNzFmY2Y0MzM1Mzc0MyBkZXNjci1icmFuY2gKKzIwNjM1IDFlOTAyZmM3MzY0NTE4NTQ3M2Q3NDU0MTAyOGM4YjQ2ZDIyMWQ3MTQgbGVnYWN5LXRydW5rCisyMDYzNiBmZmMyOTIzYmFkMWE5NjQ1OGJjNmE4OThiMmEyZDgwMTBkYjc2MjhkIGxlZ2FjeS10cnVuaworMjA2MzcgZjk3MDE5NTE5NmM0ZmJlNzYzMTJjZGZmNTg0Zjk4YzE5ZDg2YmVjYyBsZWdhY3ktdHJ1bmsKKzIwNjM4IGFhZDBhZGY4MDZhZGM4MmRiMjZhZjE0NzJhMTI5OGY4MGU5ZDQ1MjEgbGVnYWN5LXRydW5rCisyMDYzOSAzNzlmZTg4NzY0NGZiODBjNjNkNzkyNzI5MWMxNzBmYzM3ZmIyYmExIGRlc2NyLWJyYW5jaAorMjA2NDAgNTQ2MjM2MjZkYTRlM2ExZmU5MThiZWIxZWUzNzBmMGU0ODRlNDNjYSBsZWdhY3ktdHJ1bmsKKzIwNjQxIDQzMzAxM2FmNDU5ODc4YThiMGM0NDViM2I1ZmYwMzhlMmY0MWY4OWYgbGVnYWN5LXRydW5rCisyMDY0MiBkZWQ0MWJlODRkYTRmYWNjMTVkOWZjMDcyZDgzN2JmNDhmYTVhMzY4IGxlZ2FjeS10cnVuaworMjA2NDMgZTNmMGZkMzhjMjRiNzBiMDliNTkxNmQzNjlhODFhNWQ3ZmY0ZWUxOCBsZWdhY3ktdHJ1bmsKKzIwNjQ0IGYzYjg3ODViZDAyMjJhNjFmZTJiYmEzODAzMjRkYzdiOGFjMzk4ZDMgbGVnYWN5LXRydW5rCisyMDY0NSBiNDFmNmVmNmVhOGY3OGYxNmFjYWJjODA4MGJhNjhhN2Q1MzdiZTg4IGxlZ2FjeS10cnVuaworMjA2NDYgMmYxNjA2MmExYjdjNzVjZmJlNjYwYTlmOGVhNzdlZWVhY2Y4OTM2OSBsZWdhY3ktdHJ1bmsKKzIwNjQ3IGFkMjViZmNjNDM3NzE1ZjcwY2ZkMzc3ZDllZmFhOThiZWEyOWEzMWYgbGVnYWN5LXRydW5rCisyMDY0OCBmZTRjMTAzNGI0ODAxM2I0ZjIyZGM3NzE4ZDMxNWMxZWY5ZDFhZTFkIGxlZ2FjeS10cnVuaworMjA2NDkgYmE4ZjhlNGQ0MmIwNDc5MjVmODE2MTYwOWYxMGI2ODc0YTRlYTY1OSBsZWdhY3ktdHJ1bmsKKzIwNjUwIDFjODZjOGQxYzljNzYyYTcyMmE2NmVhNmM0YWI3YWNiNzA1NzI2YWYgcmVsZWFzZTIwLW1haW50CisyMDY1MSA2MTk5ZTViZDM3MGI1NjBjNDUzMzg4NTJjMWMxN2YyYzM2YzhiODA0IGxlZ2FjeS10cnVuaworMjA2NTIgMzUwYmUxOWNhNmE1Zjg5ZGRjYTZiNjI4YTViYmMwNmJmZTFhNTc0ZCBsZWdhY3ktdHJ1bmsKKzIwNjUzIDJhN2NmYzE3MmE2ODRhMGEyZDc0MjAxNjliODVjNjljNDQ2YzcyYWQgbGVnYWN5LXRydW5rCisyMDY1NCA1ZTNiYWI4YWVmN2IwZmFhMjdjMWRhZWQ1ODBjZDY4Y2JhYzZhMmNkIGxlZ2FjeS10cnVuaworMjA2NTUgNjQ5M2Q1ZTk0MWMyYTgwZmZlYTU4MmZjMjc0MWFiNGE4OGM2OTI4NiBsZWdhY3ktdHJ1bmsKKzIwNjU2IGZmODEwZmI1OTUxMzIxOWFjZDJjZWQ2OTI0Y2Q5MzBiMzE3OTdiZjYgcmVsZWFzZTIxLW1haW50CisyMDY1NyA3NWU3ODE0MDQxZGFjYjhlYmQzZjk0MzJlNzczMzk3Y2NlZTllZWM1IGxlZ2FjeS10cnVuaworMjA2NTggYTZhMzk5YWNmNjIwNjRmOWFjMmZhNDEyYzY1MzA0NDc1ZmUyYTBjOSByZWxlYXNlMjEtbWFpbnQKKzIwNjU5IDk5NDljODcwZTE0NDIwYTI2ODI2N2I0YThkNjA2MDhmOTE2NTZiZjUgbGVnYWN5LXRydW5rCisyMDY2MCBiYjA5NTM0MGFjOTg3NTkzZWMxOTRlMjRhOGZjMDBlZmY2NmZlMjc4IHJlbGVhc2UyMS1tYWludAorMjA2NjEgZWRlMjlhZDY0NDBhYzAyOGI4MzcwOGI0MGY1NWY1ODVkNzg2ZTg2MCBsZWdhY3ktdHJ1bmsKKzIwNjYyIDFkZWE0MzFmYjBhMDQxMTIzMTc4NzI0YTMwZjE4YmFlMDIzNjk3MzQgbGVnYWN5LXRydW5rCisyMDY2MyBjZDkyYzBkN2VhYzQ3ZjlkNDc1NjY3YjExNmIxMmU3MTMxMGI3YmMzIGxlZ2FjeS10cnVuaworMjA2NjQgOWY2Y2ZkZjcxZDUwNjlhYTQzMzI0YzU5OTY3MDQyNzk5NzcyOTU4NSBsZWdhY3ktdHJ1bmsKKzIwNjY1IDZkYzM2MDc4ZjUzZTFlODY4N2VhM2IxMGQxN2IzZTIyMDdmYTVkYmYgbGVnYWN5LXRydW5rCisyMDY2NiAxYjFmMGNiMjg1YzI1ODM2YTYyMmYxNzhjMmI2NDQyYmNjZDNjMGUxIGxlZ2FjeS10cnVuaworMjA2NjcgYmRlZDZkMzE4NmMwZDI5OGFkNjdlOTBiY2Y4NzllZGE0OWY5OWQxZiByZWxlYXNlMjEtbWFpbnQKKzIwNjY4IDQ4OTY2MzA1OTM0MTMyMmQyNzNkMDljNGIwOTBhZmE1MjM0YTQ0MTEgcmVsZWFzZTIxLW1haW50CisyMDY2OSBhNjI2ZmEwZTNkNzUwNGQ2Y2U3MDljNWIxNDA5OTA0MDlkMDNkMzA4IGxlZ2FjeS10cnVuaworMjA2NzAgMGNmYWRkNzYwN2Q1MWUyNTRkMjI1OWJjOTdhZWFlMjBkZTUyNTFhNiBsZWdhY3ktdHJ1bmsKKzIwNjcxIDA2ZDdkYTgxNDA5ZGUxYzBmYzRmMzMyOTQzYjY2ZTBhYmNkZjdiOWEgbGVnYWN5LXRydW5rCisyMDY3MiBlMTNlZWRkMDRhNGE4MWM3NWMxMzVmYjkwYTYwNDY2ZTdmMjE0NjBmIHJlbGVhc2UyMS1tYWludAorMjA2NzMgZTc4NWQ3YmQ3NTk4ZmE0OWYwZWY1MDg3YzllY2I2MjAzYWRjZTIwNCBsZWdhY3ktdHJ1bmsKKzIwNjc0IDYwZjhjMTVjMDI1NWRiOTg3ZTNiNzY2MDc1ZDljMmUwODhmNjVjMDAgcmVsZWFzZTIxLW1haW50CisyMDY3NSAzOWJmMWY2Y2YwZjliZDVmODIwNjgxNWFmNmFmMWVmZjYxZWY1MGM2IGxlZ2FjeS10cnVuaworMjA2NzYgMTQ3NjMyYWQxYmNjM2EzZDczMzMyMzczZjIzM2U2MWRhOTk4ZTU2YiBsZWdhY3ktdHJ1bmsKKzIwNjc3IDQzNzQ4MmZlNTVlNjQ3N2M1NTIzMzgxNWYyMGRmZWJjYThkZDc0NGUgbGVnYWN5LXRydW5rCisyMDY3OCAwZWJmZTlhMWViNDNlOTVjNDRiY2QwZmE5MDc5MDdkZWZhOWI1NDIxIGxlZ2FjeS10cnVuaworMjA2NzkgODIwZTVhMGMzMTEyZmNmM2Q3OWI3ZDliZWIzNjY0NDFhM2MxZWE0MSByZWxlYXNlMjEtbWFpbnQKKzIwNjgwIGY5NzFmMjUyZDliODdhNjU2MjdmYmQ2NWMyMDJjOGEyODA0Zjk1NDkgbGVnYWN5LXRydW5rCisyMDY4MSBkMDVkYmYzZjM2ZjY3Mjk0MjhjYjllZTY1MTFmMmFkYTYyMDU0ZDY1IHJlbGVhc2UyMS1tYWludAorMjA2ODIgZWQ3NzFiNWRiNWFhZjNhNzc2NzA0ZTAxNjEzYWVkOWYzMzBmMTNlMCBsZWdhY3ktdHJ1bmsKKzIwNjgzIDFhMjFkZDEzZTYwYTZlNzQyZWExYjBiZDU5ODc2ZjAwYmFlNzMyZjUgbGVnYWN5LXRydW5rCisyMDY4NCAzZWU5YTNmNjBiYzc5NjRhMTcyMWQxNWJkNDAyNmQ0ZTc1N2FlYzc5IGxlZ2FjeS10cnVuaworMjA2ODUgNTNiYmViMjViZGU3MTlmNDZhYjZiOGM2YTkzZmFkZjQzOTE3NmNlOCBsZWdhY3ktdHJ1bmsKKzIwNjg2IGIxNmZjODljMTk0ZjZhMzU0ZjE1YzQxNzhiOGRjN2ZhYjlmZjUzYWYgbGVnYWN5LXRydW5rCisyMDY4NyBiNzZkMWI1ZTg4NjAwZDZlZWZlMzdiZTFhODcxMmFhNGE4OTY0MzgyIGxlZ2FjeS10cnVuaworMjA2ODggYzU3Y2U3NWRjZGUwYzgyZjE3NmQ4YzFlMmZmNGY0NjdkNWJhNzM2NSBsZWdhY3ktdHJ1bmsKKzIwNjg5IDI2MTE5NmJkMTZkN2VmMjJjZmM5OTdlYmI5Y2Q3ODYxOTY3YTZhNDggbGVnYWN5LXRydW5rCisyMDY5MCBmNDY1Y2FlMzAxZWU2MTVkMzAxODhkYjQwYjM1Yjg0NGEwNmUyNWNjIGxlZ2FjeS10cnVuaworMjA2OTEgYjM5MjY2Zjc0ODRjNDQ4MDU0ZTM2OWZhOGE2MWVkNWY4YTJhODcwZiBsZWdhY3ktdHJ1bmsKKzIwNjkyIGM4ODZjZDFjMjE4NDczZDJjZmZmNzYzNmUyNDMwNDY4MTUwZjU4MTggbGVnYWN5LXRydW5rCisyMDY5MyBmNDM3NGQ3OTMxYmE5ZmZiZWI1MzVhNDE0ZjkxNmFjYjlmNDc1MTVhIGxlZ2FjeS10cnVuaworMjA2OTQgYzQ3Y2M5YTk4NjRjNGU0MjFhMDRmODdmZTkzMWEyYTRmNzI1ZjE5YSBsZWdhY3ktdHJ1bmsKKzIwNjk1IGVmNmYzZTE4MTg3ODY2MzNiNGFiYTI1ZmJmM2M2YTViOTgzODA5MDEgbGVnYWN5LXRydW5rCisyMDY5NiA0N2QxODYwMmQ1ZWE0NTUxMDZlNDJlZGE5NmIyZDZjMDMzZTgxY2VhIGxlZ2FjeS10cnVuaworMjA2OTcgYTA2YTcwNDI2MGU5NmExZDVmZTVmNDU0N2EwN2QyYmE3OTk0OTc5OCBsZWdhY3ktdHJ1bmsKKzIwNjk4IGE5ODdjZjE4MTQzNDkwZGE4YWRiOTQ3YzhhY2Y0ZTM2ZTNmNjAyZTYgbGVnYWN5LXRydW5rCisyMDY5OSA1ZTBlYzM5YzRjZWNjNGM0ODRlNjM0ZTY0ZjA3MmYxYmMxNzE5OTY5IGxlZ2FjeS10cnVuaworMjA3MDEgMDgwYTEyOTFiZjZjOWY4MWY3NjEyYzQxMTYyMGJlNmFmYjc5ODNjZSBsZWdhY3ktdHJ1bmsKKzIwNzAyIDMzMjY5N2RlOGRiOGUyZDUyOTRhN2MzYmRiNTg0MTVmNmRkMzE3MzEgbGVnYWN5LXRydW5rCisyMDcwMyBiNTM0ZjEwNzM5ODdjZDM2MDMwNjg2YjczY2E2N2Q1ZWRkOTllNTE5IHJlbGVhc2UyMS1tYWludAorMjA3MDQgMDk4ZDZmODY5YTlkZTg1NTE3NGQ1ZjdmMGFlMzJhNDdlZjAyY2Y5ZCByZWxlYXNlMjEtbWFpbnQKKzIwNzA1IDY4NjA1NGUwM2FjNTljNWJkMjBjNjA0ZjJkZDAxYTQ2MWI1NTdhYTIgZGVzY3ItYnJhbmNoCisyMDcwNiBlZjY1YmNlZTcyY2EyMjM2Y2E3YjNjYTBlODEwNDNlODY2Nzk3YzM4IGRlc2NyLWJyYW5jaAorMjA3MDcgNjVlMjYxMTNiM2ZiMmUxMWY5YjYxMWRhZTMwZDhhNGQ0YzM0NDEzMCBsZWdhY3ktdHJ1bmsKKzIwNzA4IDRlZjFiNmE4M2E0Nzk0ZTE0NGI2OGU0YmY2NTk3NTVlMmI3ODUzYzkgbGVnYWN5LXRydW5rCisyMDcwOSAyZjBkZjlmMGIwODg3ODJkODY3ZmRjOGU3Nzc1ODEzY2U0Nzc2ZGVhIGxlZ2FjeS10cnVuaworMjA3MTAgNjU4YzA3N2RkMzUxMzEzNWM0OWYyMTQ3ZDZkOGY4NTk4NjljMGQzNSBsZWdhY3ktdHJ1bmsKKzIwNzExIDUxYWE0MjUwMjk3NTUwZGIxZWFhYjVlMGI3NmZhNjUzMTQyZTQyNzcgZGVzY3ItYnJhbmNoCisyMDcxMiA0N2Q0NGQ4NTQyYjdiMmZiNjUxMjI4YmUwNDUzMzdkYjFhYzExYmYzIGRlc2NyLWJyYW5jaAorMjA3MTMgZGQ2ZjhjOWNhZmYwZWM1ZTA0NWVkNTYxMTYwZjk5NzJkYWFjYWIzNCBkZXNjci1icmFuY2gKKzIwNzE0IDdhOWY2YzA5NzkxYThlZWQyNjRhNDg0MmRhOTVhMTgxZGU4NjNjMDAgZGVzY3ItYnJhbmNoCisyMDcxNSA0N2Y0ZDA1NjhjN2NiNzMyNzRkY2U4ZjQxNjJhNDdmN2ExMTFjMDk3IGxlZ2FjeS10cnVuaworMjA3MTYgYzE4ODBmNmIzMTg5Y2Y4NGMzNGVmMmUwMzgwNDQ3ZmQ0ZGQ2N2FlMSBsZWdhY3ktdHJ1bmsKKzIwNzE3IGNlMzczNDJmNmY2ZTNmMzBlNjM2YTA3ZTFlNmJkYTc2MzQyNGRiZWEgcmVsZWFzZTIxLW1haW50CisyMDcxOCBjYzhkMTQ4YzM5NmFlOTA4YzliNDMzNDZhZDg4ZWRjMThmNWUzNGUwIGxlZ2FjeS10cnVuaworMjA3MTkgZmIxMDNlM2RhMmFlYWZmM2M5ZmUxOWMyMmM5NjA2ZTE3NGQ2MzljNiBsZWdhY3ktdHJ1bmsKKzIwNzIwIDAxYjUwNDNhNDUwOWY3MDQ0NDM0MDg3MWExNDA4ZGVhNDQ2MTQ1MTkgbGVnYWN5LXRydW5rCisyMDcyMSA2Njk2MDRkOTM0M2YwNWQxN2NhODM1YjdhYTU1OWFmYmQyNTdlNTlhIGxlZ2FjeS10cnVuaworMjA3MjIgNGIyZmRhZWJiZmU1ZGUzMWM4NzBiMzRmMDZjZGQ0YWExOGRiN2JkNiBsZWdhY3ktdHJ1bmsKKzIwNzIzIDBlYTA5MTNmODI0ZGFiM2ZlMWI1YjAxMzc3ZTkyYmMzM2M5MDkzYTUgZGVzY3ItYnJhbmNoCisyMDcyNCBkN2NjYjkzMWNhNzk1NTVlZjg2NzgyNDYxNzU1YjEyY2FlZTE3ZjBkIGRlc2NyLWJyYW5jaAorMjA3MjUgN2EyYTEyMmM5OTdjMjA2Mzc1YmQxMzAxNDQ3ZWRjMDY3ODUyNjE4ZSBkZXNjci1icmFuY2gKKzIwNzI2IGRjZTFmNTM0NTFhNWFmNDY5MmU1ZDM4YTZmZTk1YjYzY2M3MzQzOGEgbGVnYWN5LXRydW5rCisyMDcyNyA1OTYwNGY1YjRkZDEyOTBlMWVjNGZkMWFiYzY3ZmEyOTQ3ODFkYTUwIGRlc2NyLWJyYW5jaAorMjA3MjggNDE5ZWJjNjczZWQ4ZGY5YzZmOTgxMGI4ZjYwMGE1NjRkZTQxMGI3YSBsZWdhY3ktdHJ1bmsKKzIwNzI5IDBlYmI5MTUyMWFlNmJjZWRiYmMwNWVlYzdiOTI2MTkyYjIxMjhiNmIgbGVnYWN5LXRydW5rCisyMDczMCBiNGIzNjU3Y2IxZmFhNDU3M2E0ZDU0ZGU3NGQ2OTcyODY0OTg3OWQxIGxlZ2FjeS10cnVuaworMjA3MzEgOTkzZmIxODAxZjQxYjI0YTZhYzA4MDhlZGFlYjZjNGJkYzU3ZjU1NSBsZWdhY3ktdHJ1bmsKKzIwNzMyIGExNTc1ZGJmN2Q4MTJiMTllODY1N2IwMDM5MjZmNGI4YjdhZDJhNTEgbGVnYWN5LXRydW5rCisyMDczMyBhYjE3YjhiODg2OTYyZDkxMDBhZTYwYmJiMTZmMDhjOWUzNjQzYjQwIGxlZ2FjeS10cnVuaworMjA3MzQgNTM4N2NiNzY3MDU5NGEyZjllZmQ2YzRmM2M0NjdmNGU2MjE3N2UyMSBsZWdhY3ktdHJ1bmsKKzIwNzM1IDFkYWNkMGQ2MDYzN2M4NzNjOTM3MWZkNGUwMzk4MDU0ZjExMjA2M2UgbGVnYWN5LXRydW5rCisyMDczNiAxMjk2ZTg2MzA0ZWY1OGY0ZjJiZTVjNTdlNWRkZGIzNmJkZGJmMTAxIGxlZ2FjeS10cnVuaworMjA3MzcgMGVkOGM1ZjNmNTMwNjI0MTI1MjFjNDMwYzMwNmNiM2UzZjJkNGEwNSBsZWdhY3ktdHJ1bmsKKzIwNzM4IDk5YzQ5ZjAwOTM4OGU1MmNiNDgyNDlkMmVhM2E2NjUxZTU2MWFhZjYgbGVnYWN5LXRydW5rCisyMDczOSA4OTlmMzY3ZWJhNTZiNTBjOTJlMTA2YTRlN2QzODQyZWIzYjlmNjU2IGxlZ2FjeS10cnVuaworMjA3NDAgNDc5ZWE2OWVjODViMzIwYjliYjYwYjMzN2QyNzMwN2Q3MTRjY2FjNCBsZWdhY3ktdHJ1bmsKKzIwNzQxIDIyYTBiMmUzMjkxZjAyYTg4OWU0ZGVjODU0YTMxMTQ2ZjMzYzE3ZTYgcmVsZWFzZTIxLW1haW50CisyMDc0MiA3OGM2NGMwZjY2MWNiYzRmNTNhODg1NGY1MmNjMDkxMDhlNTQyMjNlIHJlbGVhc2UyMS1tYWludAorMjA3NDMgODA0MjViMmMxZTRjNzAyM2NkNWViMTdmY2JlZjI3Y2UyYmVhOTEyZCByZWxlYXNlMjEtbWFpbnQKKzIwNzQ0IDJlMDE1ZjhhMWFjMjAxYjEyZjIyNTM0ZjQxZWIwYTJiNjYyMDE5NGUgbGVnYWN5LXRydW5rCisyMDc0NSAxYzYwNGJjNmI5MWU1NGZkZjE2MTY3YWJlOTFkYmY1YTJkMzk4NDAyIGxlZ2FjeS10cnVuaworMjA3NDYgMWZiM2VjYTg5NjllYThjZmU3MDAwNzVhYjgyMWZmOGFhMzMzZjg5ZCBsZWdhY3ktdHJ1bmsKKzIwNzQ3IDZlMDA4YzYxOTg1NTM4NTZmMTE3Nzc4Yjg2MWEyZmNlYmNmZTRlMmYgbGVnYWN5LXRydW5rCisyMDc0OCAzYjViZWI5Mjc3ZTA0N2JlMzMxMWI5NmY5MzQwYTk3OTIzM2U1ZDg4IGxlZ2FjeS10cnVuaworMjA3NDkgYThmYTljMGYxZTBiYjVjY2Q3ODkyYmE3NzkwZDY5MGUwZDEwMzFhMiBsZWdhY3ktdHJ1bmsKKzIwNzUwIDhhZWU1Mzk1MDU4MzA5MjUzMzg0YWNmY2IyYTNlNWMyMGU1MWJiN2MgbGVnYWN5LXRydW5rCisyMDc1MSBhMmI2NTZhNTIyOTQzYTE5MTkzYzEyYTQ5MWY3ZWRkNDRjYjlhMDRhIGxlZ2FjeS10cnVuaworMjA3NTIgYzE5OTgwYzAzZTJkZTE1ZjQ3ODc2YmU3MDgyYTQwOTQ3YjQ4OTdlNyBsZWdhY3ktdHJ1bmsKKzIwNzUzIDU1OTdkNGJjZGUwNzU4NWIzOTMxNTc4OWVjZWEzNmI0NjE5NzNkNzIgbGVnYWN5LXRydW5rCisyMDc1NCA3ZWIzMjg4YzgxZTM1NWJjZjdlNzhlZTIzNTFjOThhNjFkYjgwNjg4IGxlZ2FjeS10cnVuaworMjA3NTUgNTNmY2NmNGQ2YTQxNDEzNTcyN2VlMjRkM2QwY2M0NzI0NWE0ZTIxOSBsZWdhY3ktdHJ1bmsKKzIwNzU2IDQ5ZTcxYTgzZjc5MGZhMjI0YTE3YTU1ODk3ZmQzOWJmNTBmNWQ4YTcgbGVnYWN5LXRydW5rCisyMDc1NyBiZjcwZDFmNGY2MWY2Y2QxNTE3NDNlZWJmMzMyNzUzZWU1MDIyNWQ4IGxlZ2FjeS10cnVuaworMjA3NTggY2U4YzM1NjU0MmFiN2NlNjZiYzJiZDQyMWEzMTQ2NmQwNjQ5NGJlYSBkZXNjci1icmFuY2gKKzIwNzU5IGRkNWZiMzllNjVlZjM2NTNmMmRmMDA2NzUzNTZkZjUxNjYwODdmMzAgZGVzY3ItYnJhbmNoCisyMDc2MCAzMzgwMjc5NjEyYTMzYzhiYzdiMzkzYjgyNDAwNGQwYTAyOGVhMmM1IGxlZ2FjeS10cnVuaworMjA3NjEgZmY5YTgzMzlhZDFiNGIyOTU5YjZjNjU4NzIyMTRiNDQ3ZDk5NTFmNyBkZXNjci1icmFuY2gKKzIwNzYyIDlmNTU5N2VhOTZmYzE0ZWQxN2ZlMWU4ZjA5OTNkZGQzNzM0NjZkYTUgZGVzY3ItYnJhbmNoCisyMDc2MyA3ZjBmNWVjZTQ1NjI4YmU5YzQyM2UyODYzMzJhMWU5OTQxODcwMDE0IGRlc2NyLWJyYW5jaAorMjA3NjQgMTRmZDRiYjc3OTlhYzE1Zjc4OTgzOTNiNzdjZjRlNWFjN2QwOTBlYiBkZXNjci1icmFuY2gKKzIwNzY1IDE1NzlkMzA5Njc2ZTM1MDdjYTk5YTYzZGM1ODg0OGY0NjU5ZTU4YjMgbGVnYWN5LXRydW5rCisyMDc2NiA1NGQzOTU0MjVlOTI5MzQ2N2Q2MWJmNzdhYTNjOGNiNmM3MDlmMDA2IGxlZ2FjeS10cnVuaworMjA3NjcgYzM0Y2FiODdkNzIxOWZiZjgwZmZhODFlMzY0NGQ3NWVlMzE2YWNmNCBsZWdhY3ktdHJ1bmsKKzIwNzY4IGM4MzYyMzAzZWMzYjFlMzMyMjNiMmU2NmYyM2I4ZmMyZDkzNWM0ZDUgbGVnYWN5LXRydW5rCisyMDc2OSAyMjI3NjdlYjI4Zjc1Y2VlMGExYThjNmNmMzFiYWMyMzk4Nzk0Y2U5IGxlZ2FjeS10cnVuaworMjA3NzAgNGYyMDQ5NWI4YmVkYzU5OWVkNzQxZTdlMzUzMzZmOGE3MmJiNWVmOCBkZXNjci1icmFuY2gKKzIwNzcxIDRhZjg2NWIyMjFlZGYwYzIxOTg0ODJhZjQxNjhhMDJjZjI5MzNiNTcgZGVzY3ItYnJhbmNoCisyMDc3MiBiODgxZGMzYmNmYjNkM2IzMjI1ZDVmOWE2YzMwNjNiYWQ4ZjZiNDA2IGRlc2NyLWJyYW5jaAorMjA3NzMgNGIwOGZkMDg3ZDM2NDNlNDhiYTQ3NTY2ZDNkZTVkMzE4NTgzYTFjNSBsZWdhY3ktdHJ1bmsKKzIwNzc0IDhjZDg3NDFlYmVjMGQ0NDgzMWNkOWFlYjgxNjFlN2RkMzdjODY4YmEgbGVnYWN5LXRydW5rCisyMDc3NSAyMjExYzg5OTVhNWY4ZDg1YWNmY2Y4YWExODllMTk4MzA5Y2YyMTA2IGxlZ2FjeS10cnVuaworMjA3NzYgZDZkZjhkMzcxYjY3NDY3OGFmOTBiNTM1YzMzNDk1ZWE5NDcwZTUwYSBsZWdhY3ktdHJ1bmsKKzIwNzc3IDhmNWNlNTgxMTllMDU0YWI3MjM2NThlZmRlMjVhMjE1MzhhOGYyNDYgbGVnYWN5LXRydW5rCisyMDc3OCBmN2MzODUyMjZmNjVhODUzNWVkNTIyMjlkMzQzNjM4NDY5YmU4NDliIGxlZ2FjeS10cnVuaworMjA3NzkgMjlkODRmOTIwZDViOTczMWIwNzRjYmY1NWFjMmM3MmRmNGMzODI4MCBsZWdhY3ktdHJ1bmsKKzIwNzgwIDE5YTQ0OGZkZWRmNzI0YjYxNGJjZjg2ODg4MTlkZDY1OWMwNmQ1ZDMgbGVnYWN5LXRydW5rCisyMDc4MSA0YmNmODhlNGFiZmYyMDk5YzQ1YTYwYzljMTIwNTJiOWQ3YWViYzE1IGxlZ2FjeS10cnVuaworMjA3ODIgNzgwMjQ4Y2QxZDlhZmE1YjcwNjdjMDljNTExOTc2Nzk3Yjk4ZGVlMCBsZWdhY3ktdHJ1bmsKKzIwNzgzIDUwMzc2ZDQ3MDY0ODIxNzc4NzgxZGU1ZWMyMDUyOGMxNjQxZjRjYzQgbGVnYWN5LXRydW5rCisyMDc4NCBmMTIzOTZjNTFhZWFmNGQ0OWQyZTZjZmMxNzY4NjhlNmE0MDBhMDFhIGxlZ2FjeS10cnVuaworMjA3ODUgMGFkZmJlMzI4OWQ1YWUzY2IwZTM1MjgyMGI4ZTg4ODJjNzU4NzdhYiBsZWdhY3ktdHJ1bmsKKzIwNzg2IDBiZTE2ZDBlY2Y2NGE3OTcxMjMzODcxOWUxNzgyNjc2Y2MzM2EyZTAgbGVnYWN5LXRydW5rCisyMDc4NyAwN2E4NzUyMDAxYmFjYjljMTVkMTQwOGFkODg2ZDA4NjUxOTc1NzgyIHJlbGVhc2UyMS1tYWludAorMjA3ODggMGIzZGE5OTgyNGM3ZDVkZmNhYTMyMjg5YmIwNjNkYTA3ZDRiMTdhNCBsZWdhY3ktdHJ1bmsKKzIwNzg5IDI2NzQ1MDUzZjg0MDU5NmFjMzRkOTExZGNhNmMwNWZjOTY4MTI3NTIgbGVnYWN5LXRydW5rCisyMDc5MCBiNTRkYmVmMWY4ZDM2NTY0ZmZlY2YwOGUwYWE2NmVkN2JmMTI1NmM5IGxlZ2FjeS10cnVuaworMjA3OTEgZDg5MGEyMWJlYmRhMmI4YTE0ZjMxOTI0NmEyMzBjZjZmMTljOGRlNiBsZWdhY3ktdHJ1bmsKKzIwNzkyIGNlZjViNjAwZmExNjI4NDZmYWViZGZlODFlY2YwYjEwNTEyOGMxMTEgZGVzY3ItYnJhbmNoCisyMDc5MyA3NTA5ZWEwNzJjY2I0MjJkMWNmNzNhNzdjZDAxODQ3NzE0M2UxMWM2IGRlc2NyLWJyYW5jaAorMjA3OTQgNWMwNmE5NTk2ZmJmZmRkMTFkM2I1YmQxZDIxNWI1ZGFkN2U1MDEzYyBsZWdhY3ktdHJ1bmsKKzIwNzk1IDFiZWNmNDQyZDczNTU5YmM1NjZiOGVkNTBiYTlhMWUzMTM3MmM5ZGUgbGVnYWN5LXRydW5rCisyMDc5NiBjM2ZmNTcyMjYzZDMzMmY4NTE1YWNiMGUzMThhYTU1MDEyOThmOGVhIGxlZ2FjeS10cnVuaworMjA3OTcgZWQxZThiNmUyNmVjYjFjNzNmZjNlNzhjMGNiMzYzZWUzOTA0ZDdiZSBsZWdhY3ktdHJ1bmsKKzIwNzk4IDllYTg3YzBhN2MwNDM3ODBkNTY5YjYzYTcxZDIyNDRkODY2ZmQ4OGMgbGVnYWN5LXRydW5rCisyMDc5OSBhZDUwMGI1MjY3M2M2Mzk4NmQ2NGJkMDVlNWU1NjAyODI2NzUwOGI0IGxlZ2FjeS10cnVuaworMjA4MDAgMjg5MmFhMjYwN2Q1ZjVlNzQ3OGFkODNjNDA3NmYxNmM2ZTJiZDVkMiBsZWdhY3ktdHJ1bmsKKzIwODAxIGRiMDc0YWJhOWUzNjRjYTc2Mjc1Y2IxNjM5MjlmMDRhZDkxMDU5ZTEgbGVnYWN5LXRydW5rCisyMDgwMiAzZGQ0OTU0MmM0ZDAxYTE2MWM5ZTI5MzAyOGFlYzQxZmZmZWI2MzBmIGRlc2NyLWJyYW5jaAorMjA4MDMgYzg3MmZkZjEwMTMwZjQ2OWU5MmY4YTA4ODIxYTNhZjg2YTg2MTIwZCBsZWdhY3ktdHJ1bmsKKzIwODA0IGYxOGU4MDhjMDIzMGQwMzg3YWQ2YzIyZGUzNmU5MjQxMGViZmRkMDggbGVnYWN5LXRydW5rCisyMDgwNSAyYjVhOWJmZjFiMTFlOTM4MmQ1YTlhZjgyYWJkNTJiMGU2NmZjMTJjIGxlZ2FjeS10cnVuaworMjA4MDYgN2VkMGNhZWJkZDg2MWNlMmRhYTJmMjU0MjI1OTEyYjFkNmU3MzJjOCBsZWdhY3ktdHJ1bmsKKzIwODA3IDNlMjU2ZjlkOTlhZGUwYTkxNTI4OTdhMzA0ZDNkNjg5NDk4YTQyNDkgbGVnYWN5LXRydW5rCisyMDgwOCBhZGEzYmQxYjg3MTM0N2NjYjJhMGVmZDk5ZmE1MjJmMTlhNTY4ZWRjIGxlZ2FjeS10cnVuaworMjA4MDkgZmIzMWMzMzc2MWM5NjVmMGMwOGIxYTI4NTU5ZTEzZWRjMTFiNmQ1ZiBsZWdhY3ktdHJ1bmsKKzIwODEwIDlmZjM1Zjc2NjFiZDczZWQ2MDFiNTQyNDI2MjcwMDNlOTc4OGYzNDIgbGVnYWN5LXRydW5rCisyMDgxMSA3ZjQ1NTRhMWNhZTIyOGYwMjkxOTc2YzllOTM0ZmEzYjc4ZWY3ODNhIGxlZ2FjeS10cnVuaworMjA4MTIgNjk2MGIyYmJiZmNhYTIxMWJiZjBiMTA4OWQzN2I3YjM0NWIxNGM1NyBsZWdhY3ktdHJ1bmsKKzIwODEzIDAxN2E2NGE0YmRjN2E5OGM2MDE4YzRkNzc0YzgwZGRjNTJmYjg0MzQgbGVnYWN5LXRydW5rCisyMDgxNCAyOTVhMmY0OTI3YWI2OWE1Y2FjYTBkMzkzZWY3MjlmOTEzZjM2M2MzIGxlZ2FjeS10cnVuaworMjA4MTUgYTBkMDhjNDJlNzEwMmJhZWFiMzMxYTE0OTFmZDk2OWYxMGFkMDc5YSBsZWdhY3ktdHJ1bmsKKzIwODE2IGJhOTcxMTFhNmFkOWY5OTdmMDEwODg2NWUyMzMyY2MyZjM5NmEzOTEgbGVnYWN5LXRydW5rCisyMDgxNyAwNTVmYzA0NmUwODBlYzBlMmRhNGExOGZkMGZhYTIwMTA2OTAzMmZlIGxlZ2FjeS10cnVuaworMjA4MTggMDI4YTFkMzllZmI2NWM0YjM4ZmE4NTRjZWE0MjQ5YzE2Mzc2MGUxMiBsZWdhY3ktdHJ1bmsKKzIwODE5IGQyZDNmODg2NjFhM2U5OTRhZjcxNzgyNTYwZmQyZmM2MDRkY2MzNmQgbGVnYWN5LXRydW5rCisyMDgyMCAyODA3OTQ5ZTBiYTU5MWYxNGZmMWQyMzAxZGE1YjE5OTg4MzE5MzcxIGxlZ2FjeS10cnVuaworMjA4MjEgNzlhZWU0OThhMmJlNTFiZjg4OWExODY2NWE3YzE4MmI1ODM1N2RiMiBsZWdhY3ktdHJ1bmsKKzIwODIyIDc3NjM1NDljY2E0NTY0YTRlNTEzMWU1ZTU2ZGM0YzQyODUyZjM3ZWMgbGVnYWN5LXRydW5rCisyMDgyMyBiNzdjNDg4OGQ3Y2NhZGQ2Zjc0NzZiZmNmMzI1NmY0MzBmM2Y0MzkxIGxlZ2FjeS10cnVuaworMjA4MjQgYjUzYjYwZjFlZDQ1OTY3ODdmZjFhNGFjMzRjMjNkOTQ5ZjM1YTMzNyBsZWdhY3ktdHJ1bmsKKzIwODI1IDMzNWZiZGVlN2NmODNjMjdiZmFjYmEzMzUyNDJmNzViYjZiYzQxMjggbGVnYWN5LXRydW5rCisyMDgyNiA5N2VjZTkzMjFjNTM2NGZlODc5ZThlYzYxMTRiYjg1OTMwYmEzMzM3IGxlZ2FjeS10cnVuaworMjA4MjcgMGU4NmJkZWIwYjkyNjE3ZWI3MDgyY2U5NGRmMDQ4N2Q3N2UyNTI3MiBsZWdhY3ktdHJ1bmsKKzIwODI4IGJlOTY5ZTcxN2I5MWIwYTI4YmY1MmMwY2RhZWNhOTEyYmFmMjA5OWUgbGVnYWN5LXRydW5rCisyMDgyOSBmZGU1NTA4ZTgyZGU2Y2Q5ZDhkZDc3MGRhNjg4OWIyMzcyY2M4ZjVjIGxlZ2FjeS10cnVuaworMjA4MzAgMDQyZGNhMWQ0NTI2ZTE1OTFjY2Q5NjVlM2Q1ZTdkZWNmOTc3ZjJhMiBsZWdhY3ktdHJ1bmsKKzIwODMxIGNjYjZkNzY2MzNiZTRkOWRhMjdlYThlNmE0M2E0NGJmZjNkNzYxZmEgbGVnYWN5LXRydW5rCisyMDgzMiA2OGJmMDdlN2JjY2M5NGRkNmUyZGFiOGE3ZDUwYzlkZDc2MzRlNzQzIGxlZ2FjeS10cnVuaworMjA4MzMgYjgyM2EzMzE4M2ZjNjRiYmY5NmNiNzY3MWU4MDA3NGI5ZTBmNzI1OSBsZWdhY3ktdHJ1bmsKKzIwODM0IDA5NGNlZTY4OThjMTAyNmM0YTk4NjdmNzk1ZjZlY2NmNjM5OGY3NjAgbGVnYWN5LXRydW5rCisyMDgzNSA0M2I3ZWU3MThmNTNmZmE5MWMzZTZhNjQyZWVmMDU2MzE2ZDlmMWJhIGxlZ2FjeS10cnVuaworMjA4MzYgMjAwZjNhNWRlMWM5YWRiMmVlOGNhZDcyYzNmYTFmZGYzYzMzODc2MiByZWxlYXNlMjEtbWFpbnQKKzIwODM3IDFlYjEyMjU5ZmVlYTY0Nzk4NDgyNjc4Njc1ZWViMzkyZGExYTgyZjkgbGVnYWN5LXRydW5rCisyMDgzOCBlYjAzYzZmYzMxZTViZDlmYjUzMTBlMDgxNTk1MDcyZDdmNmRmZGU1IGxlZ2FjeS10cnVuaworMjA4MzkgMTUxYTJmYTI5NmZlNDJhZmE0MWZkY2U1ZTdjZTg1ODVhMmIxMTdhYSBsZWdhY3ktdHJ1bmsKKzIwODQwIGNiMTFjNTljMThkZDNiZmZhY2ZlMWJlNjI5NTUyOTQzOTgzODdlMTggcmVsZWFzZTIxLW1haW50CisyMDg0MSAxM2JkYjViMjA3ZDI2ZDkzNjk2NTk0NmZmZDA5M2ZlMGI0ZTVmZjQyIGxlZ2FjeS10cnVuaworMjA4NDIgNTI0ZTBmM2MxNjliMjcwN2JhYTVlOTUxMjk3NjYzNzFkZjIwYzEzYSByZWxlYXNlMjEtbWFpbnQKKzIwODQzIDE3YzIwMGE3ZGI4NWFkNmQ0OGU1YWQ4ZWE2NWQ3NGM0YzVmZWU5ODEgbGVnYWN5LXRydW5rCisyMDg0NCA0M2FiOWY4MjRkODkwZDU1Y2IzYTg0YWM5YzMyMjQyZTE1YTU3ZDhmIHJlbGVhc2UyMS1tYWludAorMjA4NDUgZDU2NjY2ZGViOTUzOGZmM2FlMDM5NTkwNDY3ZGZjOGFkMTZjMDdmYyBsZWdhY3ktdHJ1bmsKKzIwODQ2IDYwMjdkM2NmODA1Y2Y3MDdhM2I1OThhZDg5OTNmNzA5YWU3YTkxNmYgbGVnYWN5LXRydW5rCisyMDg0NyAyMDYwZWUwYTdkOTJjNDFmM2QyYjA5ZDk1OTBiMDFmNGU4YTA4OTMzIGxlZ2FjeS10cnVuaworMjA4NDggMjEzNWQ3ZGU4NmFkYjJhYTVkODcxMWExYzNhM2Y2NWYxYzJiNzlkZCBsZWdhY3ktdHJ1bmsKKzIwODQ5IGE5M2RhYWZiZDEzZDc0OGNlOTVkMTZhYzllZGNhYmNkYTViZGMxMjcgbGVnYWN5LXRydW5rCisyMDg1MCAwYWY4MjRjODgyMDMwNjFlNDA0ZWFkMDViYzNmMWY5Y2E3YmI4ZTNiIGxlZ2FjeS10cnVuaworMjA4NTEgZmQ1ZjgzMTg4Nzc4NmQzMTJjMzhiMzZmN2FiZGJhZjFhOTZjMzk4ZCBsZWdhY3ktdHJ1bmsKKzIwODUyIDkzYjU5MDcyOWJkYzg5OTBlZWY3MWNhNTQ1MWViYjFjM2FhZDY2YjYgbGVnYWN5LXRydW5rCisyMDg1MyBmZDEyZTgyYjc3MjdmYjI4MmY1ZWQ3ZGQ0MTA3YmYwOTYyMmQ5ZDI2IGxlZ2FjeS10cnVuaworMjA4NTQgYTFkZGM0MDgwY2M1NzIxOTdlY2U4Njc5OGY4OTlhMzZmOTc3MGQ0NyBsZWdhY3ktdHJ1bmsKKzIwODU1IGY5NWJhZGE1MjczZTI4OTkwY2NjYzM2ZjM2YjM0ZWYwNjQyNzM1ZmQgbGVnYWN5LXRydW5rCisyMDg1NiA5MzllM2RhNTljNjEyMjEyNjMwYTE0ZmM5NTcxMDBhNmI3YTVlNzljIGxlZ2FjeS10cnVuaworMjA4NTcgNWIwOTdmNjE3MTczNTM4OTJkMDhmNDdiZmEyYTU0ZWQ2NTUwZTIwNyBsZWdhY3ktdHJ1bmsKKzIwODU4IDhkYTk0NzNmMDczNmIwNDhiYTRjYWUxNGY4NTM0YjMyZWRjNDU3YzMgZGVzY3ItYnJhbmNoCisyMDg1OSAxNGRhNTMxNDY2NGQ5NDgyY2RhMjEwNmUwNDk1MTg0ZGY4ZWFlZTIxIGxlZ2FjeS10cnVuaworMjA4NjAgYzRmNTU0MDFlOGFlZDU3MDFlMTQxMjMyYWQ1NzVjYzdjZjNmZTQyMSBkZXNjci1icmFuY2gKKzIwODYxIGUyMDgwZGI3MWIxYjBjYmFhYjY2ZmVjOTc3NmM0OGNhNjg4MjRlYmIgZGVzY3ItYnJhbmNoCisyMDg2MiBjMTBiNDE4NTUyMDI4YWQ3YmZjMTFiZWQ1MzRjNmRiNjIwZGUwMGZjIGxlZ2FjeS10cnVuaworMjA4NjMgZjBjM2RlMjJjYWVkZGVhMjI0Yjc4MTM0NTRmMmJhNzRiMzBiZmRkZCBsZWdhY3ktdHJ1bmsKKzIwODY0IGNjOTg0ZWQyNjU4NmFjMDZjNmVjODlkNmY0NzcwZGVkN2IzZDUzZDcgbGVnYWN5LXRydW5rCisyMDg2NSA1ZDUwZDFmYWUwNzg3ZjU5MmQ1N2RkYjE3M2QwZGRmMDcyYjhiOGJiIGxlZ2FjeS10cnVuaworMjA4NjYgMzhmZGY5OGRhOTlmZGQxNjJlMmRiZjNhZmY0YzdkNmE5YzVmNjNiZiBsZWdhY3ktdHJ1bmsKKzIwODY3IDM0YjE1MDRlNjY0NGM3ZThkYTEwZGEyMzRiMGIxZDRmN2I0NDQxNTIgcmVsZWFzZTIxLW1haW50CisyMDg2OCBhZThjNGY0NzBhMGU0NDcyN2M3MzkyNDAzNWZhMTAwODA5ZTA0NjlkIGxlZ2FjeS10cnVuaworMjA4NjkgNTNkZTBlZWE0ZDI1Yzg2ZTk5OGVlYzU3YTM3MjNiOGQ1NTRhZDQ5MiBsZWdhY3ktdHJ1bmsKKzIwODcwIDY5NzM3ZDdmNDc3NmZkNmMzMjk0M2Q1MGJkNjIxY2EyMTM4ZDZkMjUgbGVnYWN5LXRydW5rCisyMDg3MSBhNDZmMWY3YTljODY5YTJjNzU0OWUxYjU3NjFiNTNkNWU1M2E5NDUxIHJlbGVhc2UyMS1tYWludAorMjA4NzIgMGE3YWYwZTUzOGQ0YWJkY2MwYjU3ZmEzMzZkNjc3NWFlYzE0MTFhNyBsZWdhY3ktdHJ1bmsKKzIwODczIDlhZjgwNmIyODZjNjE2NTQ3NjZkM2UzMGMxNDhjMTUwNDljMGIxMTcgbGVnYWN5LXRydW5rCisyMDg3NCA3Yjk3NzFmNjg1NmIzMDlkZDMzMmNhOWE2ZDJlYmM2NDI0ZTExNzhiIGxlZ2FjeS10cnVuaworMjA4NzUgZDg4NDIzNWZlNzVjM2Y0ZjY1MTMxMzQwM2QxOTIwNzBlY2U2ZTFlNiBsZWdhY3ktdHJ1bmsKKzIwODc2IDc3ODcxYzQ5OTIxNWZiMTljNzQ2NzRmY2UzMjZiN2MzMjEzODYxZTQgbGVnYWN5LXRydW5rCisyMDg3NyA2MTlmZDhlMDY3ZGFlY2YwNzcwODNkOTc2NWZhNDQ1ZjE5NzQ4MDYyIGxlZ2FjeS10cnVuaworMjA4NzggZmJmZmI2ZGUyNWRkY2IzYjgzZWRjMmY4ZWQxN2RhZjc5ZWY3MTBjMSBsZWdhY3ktdHJ1bmsKKzIwODc5IDQyMWIxZDY2MDQ5NTA4ODY5ZjFjN2U3MjhlMjk2NGRlMmM1ZTAzYmQgbGVnYWN5LXRydW5rCisyMDg4MCA4NGZmMTk3N2Q3NzI1ZmI1MjQwNTdlZDczZWJmOWFjNzRjNWFlYTgzIGRlc2NyLWJyYW5jaAorMjA4ODEgNDY5MDlmMjIxNzBjM2U4NjgyNjAyZDY2N2QwZWE1ZmJhMTI2MGRjMSBsZWdhY3ktdHJ1bmsKKzIwODgyIGZmNmE2ZDM0NzE5NWFkNGQyNDIzZDg3YzZiY2M2ZDVjY2NkMDBlY2MgbGVnYWN5LXRydW5rCisyMDg4MyAxYmU2ZDY4YWUxMmNlN2IxYTRmYzM0YWIzNjY5MTZiOGNjYmJmYTg4IGxlZ2FjeS10cnVuaworMjA4ODQgNmM1YTgwMGRhNzkxZjQyNTljZDFlMWQzZjg2NmRlMDIxN2ZmNThhNCBkZXNjci1icmFuY2gKKzIwODg1IGE2NDNhODdhNGIyY2FhNDYzMWM4MzIyNGU3MzVlOWE5ZWMwN2YxZDMgZGVzY3ItYnJhbmNoCisyMDg4NiA3MGNkOWE0MTkwNzY5NDI3NDA0MjdmZDg4MzQyNWEzMGJlNGU1YWNkIGxlZ2FjeS10cnVuaworMjA4ODcgYmQ1MzQ5YjQxMWY2MWE2OWYxYWY1MDFmZDZlZjM1NDU5YzIwZGVlOSBsZWdhY3ktdHJ1bmsKKzIwODg4IGQ0MjY5NDM3ZThiM2RjMWZjNWYxN2Q1Nzc0OTFhMWU4Yzk5ZDQ3NjggbGVnYWN5LXRydW5rCisyMDg4OSBjZTY5ZmI5YzhkNTYxNzA4Yjg5MjllM2E5MjdlZjJjYjQ1MTY2NmM5IGxlZ2FjeS10cnVuaworMjA4OTAgMTYwMDViMjg1NTc2MmRmMWRhMDBiMTNkZTc0Y2UwODhmZGE3Mzg0MyBsZWdhY3ktdHJ1bmsKKzIwODkxIGExZmNmZGNiMzQ3OTY2ODE1MzJkZmRiMmJlMzdlNGJhZmI3NzAwNmIgbGVnYWN5LXRydW5rCisyMDg5MiA1YWJjMjMyOTkyMmZlZDZhMzI2MGRlODE2ZWYwM2MxYjdiMzEwNTQxIGxlZ2FjeS10cnVuaworMjA4OTMgYTg5NWQ3ZDczOWFkNDE2Yjc0ZTJmOGQ1NmRlYTUzNjVkNjQ4ZDFlYSBsZWdhY3ktdHJ1bmsKKzIwODk0IDQ3NGUzZGUwMGIwNTBlY2JiYjA1MTJlMzRkNzgwYjg4OTc5NTk4ZTMgbGVnYWN5LXRydW5rCisyMDg5NSAyOTdhMjY2YWM0ZWUxNzJiZGQ1ZmYyZWFlZmYwNDkzZDk4MDY5NzVhIGxlZ2FjeS10cnVuaworMjA4OTYgZGVhMGJhZGU2NTZkNDkxNTEwZjA4YWJlYjRmZWZhNmFiYjlmZjJhNSBsZWdhY3ktdHJ1bmsKKzIwODk3IDY5NGM5ZjBjZDgxNDI5NzkzNDhkNmIzNDEyY2VlNTM5MGIyYWJiYTEgbGVnYWN5LXRydW5rCisyMDg5OCA4MzFjMjdmODc2YWM5ZGJjZDliNzdhYjc2NjMwMGFmYjY0YTBiZTM1IGxlZ2FjeS10cnVuaworMjA4OTkgYmJmNzAyMDQ5ZWM2YjFiZjFmOWIzNjBkMDJmOTYxOTM3ZGJmYjg2NyBsZWdhY3ktdHJ1bmsKKzIwOTAwIGU0ZTg1M2Q1NTY3NWEyOTZiZTNlNmI3YmVlZGRhY2RhMDIyYjkzZjMgbGVnYWN5LXRydW5rCisyMDkwMSBlYTBjYWQ5MmNmZDI3YjdmNmRjY2E3M2UwMmVkNDQ1MzYxNzU2N2E4IGxlZ2FjeS10cnVuaworMjA5MDIgY2U3ZjBlMzgwODMwNDg3YmQ5M2Q4ZTBmMWQ2N2Y4MGQ0YTQ1MjRiZCBsZWdhY3ktdHJ1bmsKKzIwOTAzIDU2MjE3NjE5MWU2MDQ5ODc1OWRiNmEwMGIyYmM3OGYyNTJkMGY1N2EgbGVnYWN5LXRydW5rCisyMDkwNCBlMTRiNDFmZDJhYjI1MTUyMTg4NjcyMzRmMjcxODE3NDU0YjBhNDc1IGxlZ2FjeS10cnVuaworMjA5MDUgY2ZlMDgxYzk1NTNlYzc4NDc2ZmQ3NTRhYzg5M2JjMTcxYjM2NzdjMCBsZWdhY3ktdHJ1bmsKKzIwOTA2IDNlNjlkN2RiNWY4ZDUwZmI1NTM5ZTQ3Zjg5N2E4NGUzNTI0MjE1YTYgbGVnYWN5LXRydW5rCisyMDkwNyBhNDI5MTBiNTQ0MmE4ZmQ3NzRhZjZlNDNkYzc1NzJkMzBlM2JlNzFlIGxlZ2FjeS10cnVuaworMjA5MDggMjJiNTE1MmQyM2ZjMmJlZTA4MGZmMjY5MTM2YWQyMzgwYjM3MzQyOCByZWxlYXNlMjEtbWFpbnQKKzIwOTA5IDIyMzQ0MTU0MDQ0MzE2Njc4Yjc3N2ExYzhiNjgzYzVkOWI5YjE0N2IgcmVsZWFzZTIxLW1haW50CisyMDkxMCBiODZlZWVkZGFlMjEzNDZlNGJjZmQyZjZlMDZkNDRlMjczYWYyNDM3IHJlbGVhc2UyMS1tYWludAorMjA5MTEgZGI0M2JlMTlkM2UzM2IwMDAxNTkxNzE0MzU4OGIxM2JkNjk2ZGViZCByZWxlYXNlMjEtbWFpbnQKKzIwOTEyIDA5NjA3MmQ4ODc5ODY4YWNiMGRjMmJkOGZiYTI0ZGY1Y2Y5OTI0MDkgcmVsZWFzZTIxLW1haW50CisyMDkxMyBkMDc5OGIzYTM4YzE1NmVmMTdiMjg4NGUzNzhiNDU1ZmI5N2IzZjY1IHJlbGVhc2UyMS1tYWludAorMjA5MTQgMmVkYWE4ZTlmMzgxNTE1Y2IwYTc4N2U3M2Q5ZWZkYzgyYjhiMTlkOCByZWxlYXNlMjEtbWFpbnQKKzIwOTE1IDA3MTFmM2NkNDRkMDc3MDcwMzk0M2Y2NmZkNWQ0ODllMmY0ODhlM2QgcmVsZWFzZTIxLW1haW50CisyMDkxNiBlMTgxNmY2NDlmZjhlMTIzNjQ5ODExNzI3ZmQ2YmZhOTNlYzExNDY1IHJlbGVhc2UyMS1tYWludAorMjA5MTcgNWQ4OTRhNWZjZTM4YzJjOTVkZTAwNjc2NzY1YzM4YTI2NmU1ZDA2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE4IGIzOGZkMmJkNjhjMGExOWU0NTI0MDdmNGUyZmI1NjdiMGVlYWQ1NjEgcmVsZWFzZTIxLW1haW50CisyMDkxOSAxNDU4YjU5NmE0MzRhYzhjM2NkMDQ3OTA3NmE3NGZkNzlmNTQyYTk2IHJlbGVhc2UyMS1tYWludAorMjA5MjAgNzkzYjc1NTQzZjEzZjViNWIzYjgyZjNhNWI1NTEwOGYyZjhhNGViNSBsZWdhY3ktdHJ1bmsKKzIwOTIxIDhjNDdkOWRhMzBkZTI2ZGM4ODg5YmM5YmQyMjU1YzgzOTFhMTEwOGEgcmVsZWFzZTIxLW1haW50CisyMDkyMiA5ZGZkMjJlOGU5Yjc2ZGQxOTcxMDI4NjY4MDVkODZjOWIyMjMxNTc1IHJlbGVhc2UyMS1tYWludAorMjA5MjMgYTQyOWRhN2RiNzA2OTU0NjdjZDYyY2U1Zjg2ZGI3ZGQxZjkyMGMxZiByZWxlYXNlMjEtbWFpbnQKKzIwOTI0IDI0ODQxOGNiZDAwNTI3ZDQ3ZTU1ZjU4NzZmYjQ1ZDgzMjYwYThmMzcgcmVsZWFzZTIxLW1haW50CisyMDkyNSA0ZWQ2NTdkMzdjZWE3YmQ4YzNkYTgwZTRkYTEyYjY3ZGI1Y2M4NmRmIHJlbGVhc2UyMS1tYWludAorMjA5MjYgNTY5NmRkZGEzZTQwZjk3MWZiYTE3M2RhMjRmOTQ0MTI5YzJlZDU1OCByZWxlYXNlMjEtbWFpbnQKKzIwOTI3IGZjNjhmNmVkNzAxNDIwNDU1ZjY3ZDA4YjQ4OGVkODliNGY0NzBiMDkgcmVsZWFzZTIxLW1haW50CisyMDkyOCA0YWQ3YTJhYjQyYjQyZThjNTBjOThlOWRhNzE1MzQwOTM0MTRiMmJlIHJlbGVhc2UyMS1tYWludAorMjA5MjkgZTViYTBkMmI0N2UyOTQyNTJlMWVhYjRlZjM1MWVjNTJhM2UyZTI4OCByZWxlYXNlMjEtbWFpbnQKKzIwOTMwIDEwMzExMWFkOTlmMWYwZTJlYmE1MDQzMTYzNjlkZGVjZGJlMDIxNTcgbGVnYWN5LXRydW5rCisyMDkzMSBhZjQ4OTU4NzUwOWRjZGRlNjNjMDkyZTgwM2RjY2FkZWM5YTFmOGM5IGxlZ2FjeS10cnVuaworMjA5MzIgZDg2YjI0NWUwODU4MDFjMjRjNzI0MTQzOGQyOGRlNWI5NWQzYzY4YSBsZWdhY3ktdHJ1bmsKKzIwOTMzIDk1YmFhMzMzZWU0M2NiODAxNzg3NWFkYWYyODg3YzhmZGQ1OTdmMjIgbGVnYWN5LXRydW5rCisyMDkzNCA1ZTExNDExNTdkNTNmZDk1ZTc2OGNhMGNlYzA2NzRmMjZlYjliNzBjIGxlZ2FjeS10cnVuaworMjA5MzUgNzhmNjcwNzFjOTQ5ZWIyYzkyYzNmZWU5ZGQyYTM3NzBjZDlmNGJjOCBsZWdhY3ktdHJ1bmsKKzIwOTM2IDE3OGJlZGY5NTM2ZDhjZTFjMGZjNjY2NmVlMzEwODU1YzcwNzFlMmEgbGVnYWN5LXRydW5rCisyMDkzNyAwNWFiMGE3MTRlNGNhZWE5NzQwY2UyNTg5Y2Q0NzU5MTJlYzNhMDBhIGxlZ2FjeS10cnVuaworMjA5MzggYjIwMThlNWQyMTQyYjk0MWQyMTcxMjA4ZGI2ODdjYTdjMWI1ZjRkMiByZWxlYXNlMjEtbWFpbnQKKzIwOTM5IGVkOGI3OWM2Y2I0YjJjZGFhYzQzZjc2YWI5OGQxYWE4YjkyZTY1Y2QgbGVnYWN5LXRydW5rCisyMDk0MCBmOWEzNGFjMTRjOGJlOTk2MjIyMmIyNDFiNzY4NzQ4ZWQyYzNlNjEzIGxlZ2FjeS10cnVuaworMjA5NDEgNzNmY2M0ZjRhMTgyMjkwZWQxNTMwNGI5ZDgwODUzYWZhOTY2YWIzNiBsZWdhY3ktdHJ1bmsKKzIwOTQyIDQwMWNjZmNmMjhjMzg4NDBlYTdlNzcyZGUyMTAwZGM4NzMzNTFiNjggbGVnYWN5LXRydW5rCisyMDk0MyAyZjJlZTVkYWE2MGRiNjU3OTcwY2Y1NmU3NTgxOWRmZTdmZTI5OGY1IGxlZ2FjeS10cnVuaworMjA5NDQgYjBiNDZkNzczNGUwZWQzZTQ4YzRiZjUyYTRjNDI4Y2ViZDNlYjI3MSByZWxlYXNlMjEtbWFpbnQKKzIwOTQ1IDUyN2QwZmZkZjA5OTAxNjExYmY2MzYxYzMzOGJiZjJjMzM1NmI2MmMgbGVnYWN5LXRydW5rCisyMDk0NiBkNTc5YTVkOGIzZmVhODFjMTE1Y2ZmYzY3NGEwMGUzODA4NDAyY2Y1IGxlZ2FjeS10cnVuaworMjA5NDcgMmE5NGJmMjM1ZGFhY2ZhZWY0ZTc5Mzc3ZTA5MWI3OGVmMGU3ZDUzNiBsZWdhY3ktdHJ1bmsKKzIwOTQ4IDVlODdhMDhhYmIwNTdhMTVjYTkyY2QyYWM5YmIwYWEwNWUzMzA1OTMgbGVnYWN5LXRydW5rCisyMDk0OSAxOTJkMzY4Njk0NDU1OGEzZjM1OTdkY2Y0ZGI5YzZiMTNjMGZhOTBiIGxlZ2FjeS10cnVuaworMjA5NTAgZGIxM2ZiNWM4NThhNTE5MzExMTZiMjQ0ZmU2N2IzZTlmNjAwMDY0YSByZWxlYXNlMjEtbWFpbnQKKzIwOTUxIGEyYjk5NmM3MTZhMWM1MDQ0NTk5MWJmNTRkMTBiYWFmYjQ3N2EwNDggbGVnYWN5LXRydW5rCisyMDk1MiA2MmVlYzI5MzZjZDNmOWUxYjYwMDU4NWZhOTFhMzVmYzZiMGYyOTc1IGxlZ2FjeS10cnVuaworMjA5NTMgOTUyNmYwZWQwNjZhMDQ3ZTRjNGU4ZmQwNTRkZWQ1ZTk3NzIyNDg5MyBsZWdhY3ktdHJ1bmsKKzIwOTU0IDQ3YzdjMWViOTU3NGQxOTljZTU0ZTVlMzIyYjQzYjQ2OTg3OTY5MjkgbGVnYWN5LXRydW5rCisyMDk1NSA3MDZiYjZjOTQ1ZGZmNTgzMzdhN2Y5MzRmNDY2NTAzNmIyNDBiYTQyIHJlbGVhc2UyMS1tYWludAorMjA5NTYgODU4NTA0MWJhNTdiMWJlY2UxZGY3ZDM5NDRkNjA3ZWJiZjQwZWIzNyBsZWdhY3ktdHJ1bmsKKzIwOTU3IGFlMDhhMDFmMmYyZGQyZjU4N2ZhNjk3ZGNjNWMzMDA3MmNjMjNkMDUgcmVsZWFzZTIxLW1haW50CisyMDk1OCBlODE5Y2MwYTllZjZkYzBiZWRmMTlmNTNiZTQ1Mzk1ZTNmMzM5OWY0IGxlZ2FjeS10cnVuaworMjA5NTkgODM2MTRkMGUwMGYxNWU3NDVmMGUyNGM5OThhZTJhOTI0NjczNzQxNSByZWxlYXNlMjEtbWFpbnQKKzIwOTYwIGNkZjg4YmEyZDk2OGI5M2IwYmFjNWU0MzgwOWNmODRiMTk1NDFiNzcgbGVnYWN5LXRydW5rCisyMDk2MSAwNzY5ZTExZDlkNWY0OGYzZTM2MWE1NGE5NTYzZTEwZWI3MDQzNzM2IGxlZ2FjeS10cnVuaworMjA5NjIgOWVlMjE4MjQ4MWFmOWExNDczYTZhYjcwYjgyZDliZTU0MTk3NmNlZiBsZWdhY3ktdHJ1bmsKKzIwOTYzIDQ0N2VhNjUxODFjMjg1YzA2NzQ3OTgyYmE0N2Q3ZWQxN2MxMGU4YWUgbGVnYWN5LXRydW5rCisyMDk2NCAyOThmYjI5ZGFhODFjMjczNDM2MmM2N2FmZTA4ZWY1YmU3NTRhNmEwIGxlZ2FjeS10cnVuaworMjA5NjUgODM3ODI1YTc3OWMxNmVhMzIxYzUzMjY2MTg0YjIwNDNmZjA2Yzk2MSBsZWdhY3ktdHJ1bmsKKzIwOTY2IDVhOWRlYmIxNDQ0MGUyNTJlMzM1NWYzM2JhNDk1YmMxNGI5NmI5YjQgbGVnYWN5LXRydW5rCisyMDk2NyAyN2YyNDIyZWEzMzU3ODBhNzcwZmUxNDcyODZmNmJjMjY5NGFjOGFlIGxlZ2FjeS10cnVuaworMjA5NjggYzhjYjc5NzcyMzY0ZTQ4NjBhYjFjYWY0MGMzMmI4OGJiM2QxODY0ZiBsZWdhY3ktdHJ1bmsKKzIwOTY5IGZmNjQ0ZTYwODUyOGNmNmM0NzVjYTAzYzk1YWU3MjE4YzQzN2IxYzUgcmVsZWFzZTIxLW1haW50CisyMDk3MCBlYzkzNDNhZDFlNjA5YTdjNWJhNWRlODRjMmY0M2FkMzMyNGQ2NjE1IGxlZ2FjeS10cnVuaworMjA5NzEgOTc4MDZhNTk5YzdlYjVhNjk3NjdjYzNiMzg5MTUwYjEzMGQwN2RlYiByZWxlYXNlMjEtbWFpbnQKKzIwOTcyIDQ1YmFkZmJmYjAwZWY2MTM2ZjA1NzNmMWU2MTE2YWZhY2IwN2QyNTkgbGVnYWN5LXRydW5rCisyMDk3MyAyN2VkZThiMDk1ZDZkZjFkMTRlMTlkYTJhZGE1NWNkNDczZTllOWQ5IGxlZ2FjeS10cnVuaworMjA5NzQgNjRlMWVhMzRiNTUzMDBkM2YyZTU1OTRmNzRlMGNiM2VlMTlkODVmMyBsZWdhY3ktdHJ1bmsKKzIwOTc1IGJhZjIxMzdlOTY3NmNiNDQ2YzlmN2Q0YmQxYTkzMmUyNGFhMGU2ZTEgbGVnYWN5LXRydW5rCisyMDk3NiBlNjBmYzAxNzYyYTBmOTAxNzc0NjY0NDg3NDNjYWZlYTc4NmZmMjY2IGxlZ2FjeS10cnVuaworMjA5NzcgNmEyZTI1NDhlNmNmMzlhMWQ5ZjFkMzU3NGIxZWFiZTJjYzA5Yjk0ZCBsZWdhY3ktdHJ1bmsKKzIwOTc4IGE0MzAxNDMxYjJhYzhlNzVlZmMzOGM5MjY5ZDc0Y2Y1Njk4MWM5NmEgcmVsZWFzZTIxLW1haW50CisyMDk3OSA1MGUzMzgwYjA4NmExZDQ3NjIxZTNmOTg4NWYxZWM2NjFhY2VmYTZkIGxlZ2FjeS10cnVuaworMjA5ODAgNTNiMGY2NWEwYTA1ZDc1ZGYxM2FkZTQ1ZjMyNjJlZTdhYjNjYWZlMyByZWxlYXNlMjEtbWFpbnQKKzIwOTgxIDE4MDcxMDkxMWYxNWQ3ZGM2N2Q0YTQwODY3OTZkZTZkZDY4OTQzM2UgcmVsZWFzZTIxLW1haW50CisyMDk4MiA1ODI4NDVlMTRlNWNjMTVjYzA4Y2QxODg3ZjJiNzAyZDgyZjQ2ODZkIGxlZ2FjeS10cnVuaworMjA5ODMgOTlhZWE2ZjVjZWJkMjhlZjUxOWM4MTBhZjJkZTY0NmQyM2YyZTM1MiBsZWdhY3ktdHJ1bmsKKzIwOTg0IDlmOTcxNjdmMTY0MzAxNjczY2VlY2I5NmE3ZWZhNzQ0MDExMDczY2YgbGVnYWN5LXRydW5rCisyMDk4NSAwYzFhMDRlOTgxMzQyZmQ1Yjk0ZDFjYTNhYzhlNTg2ODZmODVmNDdlIGxlZ2FjeS10cnVuaworMjA5ODYgMGQ2Zjc2MGI2ZWYxYTY0NDM2YjE4ZmE3MTE3Nzg5MTUwZTg5YmMyZCBsZWdhY3ktdHJ1bmsKKzIwOTg3IGZhY2ZmNWY1MGZjY2FmMjhlOWRkOTAwNmE0YWY1NjRiZWNiNWY3ZDcgbGVnYWN5LXRydW5rCisyMDk4OCAwMzhlMmY3NDgwMGQ5NzgzMDFlZTQwY2Q4MWRiNTEyYmQzOTQyYWYzIGxlZ2FjeS10cnVuaworMjA5ODkgY2E3ZTJlMWFlOGRmOTZlNTg2NjkwMmQ0MmY2MzczMjIyZThiNzRjYyBsZWdhY3ktdHJ1bmsKKzIwOTkwIGU4NmQzMzA4MWJiYTk0YmU5ZDc4NmU2Njg1ZjkzZjliNTVjNzRkZGYgbGVnYWN5LXRydW5rCisyMDk5MSBjOTg3ZGNkODgyYjljNzMxOGQ4NTFmNzZkZGRhMDBjMWI4MGI3NDYzIHJlbGVhc2UyMS1tYWludAorMjA5OTIgYmQxYzRmZTk3N2NiZGM3NTczMmY1ZjAxY2JkMWEyZmNhY2ExZjY4OSBsZWdhY3ktdHJ1bmsKKzIwOTkzIDhkMmJiYmJmMmNiOWZkYzJmYTg3YmEzYjgzYmRmZGJjMzMyMGM0OTcgbGVnYWN5LXRydW5rCisyMDk5NCAxOWI1MDRmYjlkMTU2ZTdiMTdmOTg5MjIxZDE1ZDZjYTgzZTBmYjQ4IGxlZ2FjeS10cnVuaworMjA5OTUgNTExNTg3YWIyZGQyZTZmMjgyZDZmYWRlODA5MmUwODhlM2IyNWNkOSBsZWdhY3ktdHJ1bmsKKzIwOTk2IDAyNDI2NzQ0MTc2MWU5NDRiZmFhZjNkY2FjODNkNjMxNTVkYTYyNTMgbGVnYWN5LXRydW5rCisyMDk5NyA1MzkxYjlkMDIyYWMxMjc1NzE1MWY3ODdiMzQxZmNiNDBiYjBjYTg2IGxlZ2FjeS10cnVuaworMjA5OTggZWU1ZjAxNjVlNGUzZWIxZGIwZDA5NDRjY2JmZmI1YTZmZGE0OTgxZiByZWxlYXNlMjEtbWFpbnQKKzIwOTk5IDRkNjJhMmZlYzkzMGEyYTg4NDAxNzdkN2NkNWQ1Zjc1NDEzMjM1MDUgbGVnYWN5LXRydW5rCisyMTAwMCA2YWU2MTIyOTEyZDJlZGI5ZDQyNTEwYjhmNjhmZWUzMGY4ZGEzZGQ5IHJlbGVhc2UyMC1tYWludAorMjEwMDEgOWViZTg1ZTcxNTUwNDEwNGMwMGJjZGIzZGY2ZTY5YTFkNmZjY2QwMSByZWxlYXNlMjAtbWFpbnQKKzIxMDAyIGI5OTk3OWQwZjllN2MwODA0ZGI0OWI3NWMxYTY5NjQ1MjU0ZjY5MTIgbGVnYWN5LXRydW5rCisyMTAwMyBiZDk3YTRmZGI2ZjNjNWY4MjZkNjY2ZWRjYmRiNzQzNTczNDk0MDQzIGxlZ2FjeS10cnVuaworMjEwMDQgYzAwMzczMTc3YmJiNmQ2YTg2OGE0NmFiMzc4YzAyN2UyYjhjOGNiOSBsZWdhY3ktdHJ1bmsKKzIxMDA1IGZhMjI1NWQzMTUwMGU5MmQ0NDc2MmQzNjgwMWNlMjlmYzQ4ZTdmZjEgcmVsZWFzZTIxLW1haW50CisyMTAwNiBhMDIwODU4NzFjM2ZlNGZjNjY1YTNkMTE2NjYxZWZhNWNlNDYxODZhIGxlZ2FjeS10cnVuaworMjEwMDcgZGYxYzUzYTgxNTAyOTEyNjVkNjc5Y2Q0M2VjNTczYTE1MjQ5NjYwYyBsZWdhY3ktdHJ1bmsKKzIxMDA4IGE2ZjhiMmZhMmUyMDE4M2U1MTExOTQyZmVhN2M2NzZiYjI3YTI5ZjggbGVnYWN5LXRydW5rCisyMTAwOSA5MTYxOWQ3ZGY1OGI5YjA3YWU5NDgxZGJjZGVlYjExNTEyYzdhNWM4IGxlZ2FjeS10cnVuaworMjEwMTAgNmZkY2U3NmQ0MDY2NWUwZGQ2MjMyNTJjMGQyNzA0MzNhNzU3NmQyNSBkZXNjci1icmFuY2gKKzIxMDExIGJmMTZjM2NhNTgwZWM2NDc3NGJlOWZmYWNmNDlmMmJlNTkwOGVlN2MgZGVzY3ItYnJhbmNoCisyMTAxMiA3M2ExZTlmN2M4M2YyMTY2MTk2M2U0MDNiYzU0ZmExOWQyOTEyYWNmIGRlc2NyLWJyYW5jaAorMjEwMTMgOGM0NWE2NGVlODMxYjc4OTJiZmI3YjkwNjkzNjM2ZTAwMGYxZDMzNiBkZXNjci1icmFuY2gKKzIxMDE0IGU5MTk0NzMxNzZjODIzNGRjYjU4MTg1MjM1MTNlMzUyMTA2OTE3ZjAgZGVzY3ItYnJhbmNoCisyMTAxNSBlZDQyNTJiZjA4MGM5N2UxZDg2NzkwZTUwM2M2NzBkMDI3MWI1M2ZhIGRlc2NyLWJyYW5jaAorMjEwMTYgNDlmMGZmNmViNGViMTM1ZGMyYTVlYzU0MjZhMjM4MmVlYzNkMjg1NSBkZXNjci1icmFuY2gKKzIxMDE3IGMwNzQzMDI1YjIzZGIzOGYxZjMwMzgyZDk5Mjg1NDE2MGNjZTI4ZGEgZGVzY3ItYnJhbmNoCisyMTAxOCA1NDY2Y2NiYjJmOTc0OThlYmJiMGY3NThmYTJkYmM0YzA4NTAzMjZjIGRlc2NyLWJyYW5jaAorMjEwMTkgNWI1MDU2Y2YxNDg4Yzc1Y2M0YzNhM2Q4ZjM2MTliMDI0NDQ1ZjI2NSBkZXNjci1icmFuY2gKKzIxMDIwIGZiOTNkZmJkODA1MjM1N2U4ZDg1ODRlZmY4OTdiY2RmZWZmMDlmM2YgbGVnYWN5LXRydW5rCisyMTAyMSBjMmQ0OWE3MzIxNjZkYmIxZDkyZTkxZGFiODJmYmRiZTNiNTUzNzgxIGxlZ2FjeS10cnVuaworMjEwMjIgOTU3Zjk0Mjg2NjBmMjI5NjRkNTJmYWMxNjBmMGM3YWQwMzIwMmNlMSBsZWdhY3ktdHJ1bmsKKzIxMDIzIDNjYmI4NTcyNmY2ZWQyMTQyNjNkOWYzYzhlMTExNWQwYzFkYjY4Y2UgZGVzY3ItYnJhbmNoCisyMTAyNCBlMGYwZjdiYzVkYTc2OTRiYWM3MDVhYjJhZTliYTBiZjlkZWE4MjQ1IGRlc2NyLWJyYW5jaAorMjEwMjUgM2FiNmM0MzRhOWM4NzUzYzI0YWJmZTUyZmQxZTcwMGYyOTE5ZDI5YSBkZXNjci1icmFuY2gKKzIxMDI2IDY1MzIyMTAzOTU1YTA0ZDA5MGYwODdlOTAxN2Q4ZThjZmNkMDIxMDMgZGVzY3ItYnJhbmNoCisyMTAyNyAwZDQ2YjdjNzEwNWUyZTNlZTExNGJmZTJlOWYyZTFjNjUxNDhhMTA4IGRlc2NyLWJyYW5jaAorMjEwMjggYTc4MjY4NDI0ODY4YTE5MWFiYjRhYjRjMzBjNTNjZGNmNTVkZDJhZCBkZXNjci1icmFuY2gKKzIxMDI5IDBlNTE4YTUzZWM1YmVhZDlhZGJmY2I4ZDkxYjg2OTUyYzRmYzRmZDkgbGVnYWN5LXRydW5rCisyMTAzMCBkY2IxYzNiZDhlMGU4OTc2NmRmZWNlNDczMThlZDg5OThhZjY5NzZmIGxlZ2FjeS10cnVuaworMjEwMzEgOTZkMTEyMTUwMTNhYjIzMzBlOTllZGNjMGZjZTljZjgyM2YzYTAwNCByZWxlYXNlMjEtbWFpbnQKKzIxMDMyIDk2MzMwY2NjODcwYTk0NDQxMzAxNDQyNzNkMGQyYWE3MzQ5OTJjMTUgcmVsZWFzZTIxLW1haW50CisyMTAzMyBlYTgzMDhmZDA2ZjIzZDlhMzk4ODU0Y2UzY2NkMGRhYjQ2ZTM3YmE4IGRlc2NyLWJyYW5jaAorMjEwMzQgODU5M2I3ZTBiNjQ1NDE2M2ZlMzA4MmM0MzZkOGM5ODQzZDU3MmU5NCBkZXNjci1icmFuY2gKKzIxMDM1IDY1NjljODQ5OWIxNzBmYTdiNTFkMGI2NjY1ZGYxOWM3MmEwYmJiZDIgZGVzY3ItYnJhbmNoCisyMTAzNiBlNzliYjViOGE1ZDBlOWFhNTI0ZmQxMWE2MjFiN2U3NGYwYzI2NjQ0IGxlZ2FjeS10cnVuaworMjEwMzcgMWI5MjcwMWEwZWQyZGQ1ZmI0NzIzZmE5YzI4M2M0MTkzMmVmN2E4YyBkZXNjci1icmFuY2gKKzIxMDM4IGI3M2MyODE3Y2MxYWMwMjFjYzcyMGY2Zjg0OTJiYTgyZGEzMGY0OTcgZGVzY3ItYnJhbmNoCisyMTAzOSAxNGRjNzVhNTYwMGFjNWFiYTI4YmU2NjAxZDFkOGRiYjNhN2IzYzYwIGxlZ2FjeS10cnVuaworMjEwNDAgODFhOGQxODMwYjYzYWJjOTgxZGJkMjYzY2M2YzkxOTkxNGM4ZDM5MSBsZWdhY3ktdHJ1bmsKKzIxMDQxIDY1YTJlM2U4YmY1NmQxMDk3ZjQzMDVlNjgyYzBlOGJlNTc5MmIzYTcgbGVnYWN5LXRydW5rCisyMTA0MiA1ODZmZDc5ZWY0ZDk3YzhkNzQ5MTdkMmNiNGYwZDE2Yzg2ZGQ4YjAyIGRlc2NyLWJyYW5jaAorMjEwNDMgMTNhOGRjYTRiMDQwYWY4ODA5ZGIwOGY2NTQxNjJkNThhMTBhNzE3MSBkZXNjci1icmFuY2gKKzIxMDQ0IGIwZmM4MzZmMmNlYWQwYjIwYTgwZGQ4ZGQyZmU3MjgwM2RmZjBlYWMgZGVzY3ItYnJhbmNoCisyMTA0NSBlODk3NTUwYjQ3NDg0MGY3NjE2YjUwM2UxYWZiMTFhMmY0MzE0MWM3IGxlZ2FjeS10cnVuaworMjEwNDYgZjg0NzVmYTZiYTM2ZGE1YzViYThlZTgxNzBiMzdkZTU1ZWNhNDdhMiBkZXNjci1icmFuY2gKKzIxMDQ3IGM0MDE2YWJkNmI3ZjNlYTFkZDUwNWQ1NmY4NzE5Yzk3MWY5NjIxNDEgbGVnYWN5LXRydW5rCisyMTA0OCBhM2MzMjlmNjllM2E2MGJlNDNhNjJhODMwMDExNmNhZjk4NDg0ZjZlIGRlc2NyLWJyYW5jaAorMjEwNDkgMmIwMTdiMmM4ZjdjYjUyZmE2YTg1NDY4YTQwZWY4NTJiNjY2MjliNCBsZWdhY3ktdHJ1bmsKKzIxMDUwIGU2NmNmOWQ2YWQ0M2VkMDU1ZmM5MzE2NzA3ZGY1NWZiZmIyODc2YjUgbGVnYWN5LXRydW5rCisyMTA1MSA5YTI2ODMyZGEwZjllNjU3NzU5ODcyM2ZjYzJlMjg0YTQxODg4YThlIGRlc2NyLWJyYW5jaAorMjEwNTIgYTFmMzU3Njk2MjY0YjNjYmVmYWY4NTNhNDdkNjUzODcxZWIwN2NhNCBkZXNjci1icmFuY2gKKzIxMDUzIDhjYWYyMTk3MWYzNzg3OWVjZTI4ZjUwODcyNmFiYjA2NzQxZGRkNjQgZGVzY3ItYnJhbmNoCisyMTA1NCA3ZGU3ZDA2OTRiYTg3YTRmZmI0YzMzZTRiNTJmNGY2MGRiNTVlMjY4IGxlZ2FjeS10cnVuaworMjEwNTUgYTIzMmE2YzNmYzhjN2RmYTgzZTEyZjY3MzkzYWQwYjhlYWYyN2JjMyBsZWdhY3ktdHJ1bmsKKzIxMDU2IDE1ZjQzODFjZmYwZjBjNjhiZjRlMzdiNDQwYTBhY2U1MDllY2JlMDAgbGVnYWN5LXRydW5rCisyMTA1NyBkOTNiNDkyOThhZmQ2ZjEyMWY5MmE5YzdlN2RhY2JlMjI3MzIxYWZjIGxlZ2FjeS10cnVuaworMjEwNTggMmVjMDhkNmM3ZDEyMDQ2OTU0N2ExMDg3NzgyYjUxMDg2MmUyMThkYyBsZWdhY3ktdHJ1bmsKKzIxMDU5IDk5OWIxM2RlMzlhNDJkYzc3Yjc4NDk1M2M2OTUxOWQyNjQ5NGYwNWQgbGVnYWN5LXRydW5rCisyMTA2MCAxYzE4M2FlNWM5MzQ5MmJjOGYyYTNkZWVmZjFlZmUxY2Q1NjllNzkzIGxlZ2FjeS10cnVuaworMjEwNjEgNWE2YjgzZjQxNTI3Yjc4MGIwNmY0MjhjN2U2OTFhZDA5NDk5YmY4NiBsZWdhY3ktdHJ1bmsKKzIxMDYyIGJiYWMyYTZhNWQxNmZjMjcyYjFhN2NhNjA3YWQwNjczN2YxYTFlOTMgbGVnYWN5LXRydW5rCisyMTA2MyBhYzU0ODlhMjU0OGRlNDYzNTdiMGZkNzc1MWYwOWMxMTJlN2E5MThhIGxlZ2FjeS10cnVuaworMjEwNjQgODg5ZGI2ZDU1NTA2MDFjNTMyYjNlYWI0MGM3NGEzMmExMjYxOGQwMyBsZWdhY3ktdHJ1bmsKKzIxMDY1IGJkZTFjZjU3NDBlYzY5ZjhiNzQ2OGNkZWNhZjBkMjUwMDE5ZDVmMTggbGVnYWN5LXRydW5rCisyMTA2NiAxMDk5MjE5OGM5ZDY3YWE1ZGVkMjQ2NzllMTBlMzFmOGUzZGQ1YjE0IGxlZ2FjeS10cnVuaworMjEwNjcgNjI0NzI2NTY4MDdlYTk4ZTRlNmEwYTg3NTM2NjgwYzNlODVkOTU4OCBsZWdhY3ktdHJ1bmsKKzIxMDY4IDhlMTg3NzQwYWE5NmE2ODMxM2NlNWM1YTNjMzMwODhkZjhkNjVmN2MgbGVnYWN5LXRydW5rCisyMTA2OSBmOTAxYTdkYzVmYjRjYjhmMTY3ZTE3NmIwYjIxMWYxYTE3ZDA2ZmY1IGxlZ2FjeS10cnVuaworMjEwNzAgMWY4M2U0MTU1ZmNkMTcyYjQ3Mzk3ODE5NDQ0OWFiMmE1NTg2YjBjMSBsZWdhY3ktdHJ1bmsKKzIxMDcxIDdkZTVkMzc4NTc4Y2RlMWQwMDc2YjBhMGViYzcyYmNkMmUxOTRkMzQgcmVsZWFzZTIxLW1haW50CisyMTA3MiBlODQ5NDg4Njc0ZGEyNjYxOGQ1NGE3YTJjNDgxMmZlZTc3MGE0MjhhIHJlbGVhc2UyMS1tYWludAorMjEwNzMgNDEwYmJmNWQ5OGY5N2FhMjM1ODFmODAyNTNlMTNiOWE4ZjhmMDFiZCBsZWdhY3ktdHJ1bmsKKzIxMDc0IDcyYjE1NzMxYTg3NjlhM2RlNDZlOWRmNzA3ZTlmZTg1OTA5M2IzNzYgcmVsZWFzZTIxLW1haW50CisyMTA3NSA5MDE5Mzc1MGNjODM3NmJmM2M4MDFkNTkwYWZlNWU5MGZmYjIwNjZlIGxlZ2FjeS10cnVuaworMjEwNzYgZjNiYWI5MjlkNzBlZTA3NzBmNWQ2OGZjNDdkM2EyYjZhNDYzZGFmYiBkZXNjci1icmFuY2gKKzIxMDc3IDYyMjg2N2U0ZDgzMmZiMDNhMWExZDI0MDQ4MWM2ZjJmMjRjNWJhMzkgbGVnYWN5LXRydW5rCisyMTA3OCBhZGQwOTU2Mzk4NTMwZGU0OWUzNTY1NzM4OTg3NmM2NTlmOWUxMDAwIGxlZ2FjeS10cnVuaworMjEwNzkgYmMwNWIwYjVlMDU3ODEzMmRhYjY1Mjc0YjhiYzhhZDkxOThlNmI1OSBsZWdhY3ktdHJ1bmsKKzIxMDgwIGZmMmQ3YzE4MzcxNTJiNjllMTk2ODJlMGJkMzM2ZTFiNTVmYzU5NDMgbGVnYWN5LXRydW5rCisyMTA4MSA0Y2NiYjhlNWZiMjRjYmM3Mzk1ZmZlMTg5NGFhZDIyNzJhY2EyZWIyIHJlbGVhc2UyMS1tYWludAorMjEwODIgYjhmYmZhNTY5YzM0ODAzYjZjNTBlMTI1Nzc2MDUxNDM0N2RhNjI3YSBkZXNjci1icmFuY2gKKzIxMDgzIDZiNmUwYjBkYjRmNzU1MTFjN2Y2ZjFlZmUwYjYyMWM2NjBmNmU5ZWQgZGVzY3ItYnJhbmNoCisyMTA4NCBjOTBiZGU4YjY3YjhkYzg3NTdiYjk2N2Y0ZmJkZmRjMDliYzhiZjU5IGRlc2NyLWJyYW5jaAorMjEwODUgZGFiZTcxMDBiMjFmMzA3ZDljMTcwZTc0MWY0OGE1MWJlNGY0MzNjZiBkZXNjci1icmFuY2gKKzIxMDg2IDRjYzJhZjhhMmY0ZTY2MzBkMWRhZDY1YzA5MmVhYTA5NDUwYjQ2NzEgZGVzY3ItYnJhbmNoCisyMTA4NyA2ZmU1NmE5YjMwMjE4ZjkyMDRkOTQ4Y2VkMjU5ZDU3Y2YyZDkyZGJlIGRlc2NyLWJyYW5jaAorMjEwODggZGQwOWYxMWZhNDBkYzk1ZGY4NWYwYjY5YjAxOTdhMWM3ZTI1ZmRkMSBsZWdhY3ktdHJ1bmsKKzIxMDg5IDVmYzZkMDI3ZTg2MTE4ZWVjNzExZGNlOWNhYTM3NDVmN2NkNWYwZTAgbGVnYWN5LXRydW5rCisyMTA5MCBiYmNkYmQ4ZjQ0Njk5NTFhYzA1ZTAwOTJhOTM5MmY1ODdiNjlhMDhmIGxlZ2FjeS10cnVuaworMjEwOTEgN2U0NTlmYjNjMzMyOWJlMmVlZWI5MzEzYzkzN2Q0Mjc3YmE5ZTg2MSBsZWdhY3ktdHJ1bmsKKzIxMDkyIDU5MjEwOWYyYTZmZDY5NjA2OWZlZDYzZDJjZDBjN2Y4Y2U1ZGJlNTcgbGVnYWN5LXRydW5rCisyMTA5MyA2MjU0NzM3Y2I2Mjk2ODAxMzM5OTY1ZDM0YmEyODgwNzdhZDI4OWZmIGxlZ2FjeS10cnVuaworMjEwOTQgODZjY2Y5M2NjOTUyMjgyMmQ0NDFlN2Q3Zjk4NDIyNjZlMTk2ZDZhMyBsZWdhY3ktdHJ1bmsKKzIxMDk1IDE4YTFlMDkzOTdkYWM5NWM2ZWZlOGM3MzU0Nzg1MzE1N2VmMjIzOGIgcmVsZWFzZTIxLW1haW50CisyMTA5NiA0MTAxNjY3NTAwMmZlNGQ5OWYyNDBkOTM4YTY3OTI3MTFhYjIwNDMzIGxlZ2FjeS10cnVuaworMjEwOTcgYTAwMWZjYjc2MTc3OWRlNDU5Y2RhODIzNmZkNTdjZmMxZjFhOTc3MSBsZWdhY3ktdHJ1bmsKKzIxMDk4IGJkMDA1NmVlMWE2ZTQ5MDVmMzkyZDMzY2ZhMGVlZjJmYjkwMmFkNDQgbGVnYWN5LXRydW5rCisyMTA5OSA2ZWEzNjZhMmIyYTYzNGY0YzE1MTY5NTZlMWMyZGE0YWEyMDRkMzBkIGxlZ2FjeS10cnVuaworMjExMDAgMjM2N2I3YTAwMWE3ZTdlNjlhOWY0YWY2ODdjZDg0MDhlZDJkN2UzOCBsZWdhY3ktdHJ1bmsKKzIxMTAxIDdhOWE2OTI3MjliNDAzOWNmNzQwMzFmZTE2YjNhZDlmNjYyOTRlMTUgbGVnYWN5LXRydW5rCisyMTEwMiBjMmZjYTc3YmJmM2FiOGQ2ZmMyN2IxZDJlZGU5MzUzYmIxNDM3ZjI0IGxlZ2FjeS10cnVuaworMjExMDMgZGU3ZjlhYTBhNjNhNTIzYmYyNzE2NGI4NDNhNTU4ZWZlNTE3NjBiZiByZWxlYXNlMjAtbWFpbnQKKzIxMTA0IGY3NGU5MmM4ZWFjMWE2OWU5OGYxNzFlODI4YjcyYjQzMDc2OGQwOWYgcmVsZWFzZTIwLW1haW50CisyMTEwNSAwMzczODZhMmIyNDdjYmU5MzIwZjAzODdjNmRkODJjNjIxMjk3OWIxIHJlbGVhc2UyMC1tYWludAorMjExMDYgMTQyMTI5ZTlhOTg1NjQ5MDYwNzZkNTA4MmE0MzBjYzFjYWJjZGZiMSByZWxlYXNlMjAtbWFpbnQKKzIxMTA3IDlkZGEwYzExZTAwNjk5YTk0NDAyOGZjMWMwMTdmNmRjYzI2ZWE1YjMgbGVnYWN5LXRydW5rCisyMTEwOCBhM2M5YjQxNDBjYzVlYzViZmY3YTNiM2UxZDE0YTdmY2QwODA5MDQ2IHJlbGVhc2UyMC1tYWludAorMjExMDkgMDIyNDg3M2MwYWM3NGIwMWIwMTM3ZGNkMTU1ODE2NGY4NGU5NjFkOSBsZWdhY3ktdHJ1bmsKKzIxMTEwIDVkNmZjMThjNDAwOTg1ZGFkNzQ5MTZiYWQ0OTgwNjg0MzI0ODVkNzcgcmVsZWFzZTIwLW1haW50CisyMTExMSAxNWMwNGZlMjRkODU4NjYyZGY1MzJmZTIwYzU3MjFiM2EzYmYzMjQxIHJlbGVhc2UyMC1tYWludAorMjExMTEgODM0NTljYzE5MWMxYzljOGNjNmIwOGFkYTk5YzAyZjBhZjZhZDU0ZiByZWxlYXNlMjAtbWFpbnQKKzIxMTEzIGM1NzhiNzVhZDYyZmRlZDcwYjY0YWI3MzUxZmQ0YTI4ODY5NTk3ZGEgbGVnYWN5LXRydW5rCisyMTExNCA4Y2Y3MmIxODdiM2FiOTg2NmU4ZDg0MWRmOTJmMTg0YTc2MGU1MjgyIGxlZ2FjeS10cnVuaworMjExMTUgYmUyZGRiMjViNjk4YjM5YTg3OWM0NjQ1MTYxNmFlY2E5YmIyYjFmYiBsZWdhY3ktdHJ1bmsKKzIxMTE2IGUyMWNkNDEzNWYzZGIxYWYyM2IzZTVmNzEwYjA3ZDYzODAzM2RiYTQgbGVnYWN5LXRydW5rCisyMTExNyAwOTlhZTQ5MTgwNjlhNWJiOTUwODM2NDQ4NzY4YzFjNTBjYjRkMjIxIGxlZ2FjeS10cnVuaworMjExMTggN2Y1ZDgwNDRmOTk0YzFmNTE0MDY5NTNkNTg3OTNlMmMwNzE1OWFiMiBkZXNjci1icmFuY2gKKzIxMTE5IGIxNDBiNzhmMTc4NWNiYTg4NGQ1YmE1Y2IxMWZjOGUwM2U5ZGM4YmUgZGVzY3ItYnJhbmNoCisyMTEyMCBhNjIzMWYyNGRiYjZlMGE0NzRlNDgzZmVlMTVkMDA4NTk3Mzg4YmQzIGRlc2NyLWJyYW5jaAorMjExMjEgOWViNDY5YTQzMTQ0MTc2OGRlODExMTIxMDVhMzZmMWY2MWJkMjhiMyBsZWdhY3ktdHJ1bmsKKzIxMTIyIGU2NGM3MDMxZDk0ZmNiNzJhNDQ1MmMzMjBjMWI5MWFlNTI3NmI2OGUgZGVzY3ItYnJhbmNoCisyMTEyMyBhNDc2M2JmZWQ5ZjBlOTMwNzU1M2I4YzI1Y2JlZjUzM2Y5ZjlhMGQ3IGxlZ2FjeS10cnVuaworMjExMjQgMzFjZDBkYjBmMDlmY2Q5OTVkMTk4NTgxNDkwOTIxZjljNjRiMWM1YiBsZWdhY3ktdHJ1bmsKKzIxMTI1IDJlY2FmOWUyMWEwNDZkNmZlOTE4NDliOGVjZDY1MWFiN2EwYzI5ZTkgbGVnYWN5LXRydW5rCisyMTEyNiA3NTE3ZmNhMzIyNjJjYmFmZDM4OWM5YzAyMjQyMjI3ZmU4NWM4NmU2IHJlbGVhc2UyMC1tYWludAorMjExMjcgNjk5MTAxOTQ5NTk5NDQ4NDAxMzhmYzIwY2M5NDllYzVjNzdlOGM1MCBsZWdhY3ktdHJ1bmsKKzIxMTI4IGMwNjE2ZTA5NjQzMGYyMGQ3MTFjNDQ5ZjYzODQzNWQ0ZWFiNGU2MDQgcmVsZWFzZTIxLW1haW50CisyMTEyOSBlNDA2ODE1NzgyYWZkNDcxYjhhNGE3NTg4N2M0NDE5ODY2OGJkZTQ5IHJlbGVhc2UyMC1tYWludAorMjExMzAgNDBkNzk0YjUwNDFkZjA0MTQ3MDUxYTE2NzRjMmY4MTFkNGQyMjI0OCBkZXNjci1icmFuY2gKKzIxMTMxIDAyNTMwNzc3YjUyMThkNDFiOTY5NjBmYzlmOTZlYWVmZDgxMGFkOWEgZGVzY3ItYnJhbmNoCisyMTEzMiAwNTA1NGJkNzk1OWI2NDUxNTg5ZDdkYzAzZjA0YWIwNDRmOGE0MzhkIGRlc2NyLWJyYW5jaAorMjExMzMgYzYxNjY1NTc4MmYxYWZjMTkwODc5MDVmNjE0MWI2YTIxN2I2M2I2OCBkZXNjci1icmFuY2gKKzIxMTM0IGMyOWYzMTM1YTIwY2IwNDQ0OTU2Y2IxNTRlYzU3ZWM0OWQ1NzlhZTUgbGVnYWN5LXRydW5rCisyMTEzNSAzMzNhMmM2ZWI3NDM4YTUxNzE1ZTVhYzgzMmEyODhiYTg4NGVjZDY2IGRlc2NyLWJyYW5jaAorMjExMzYgMTY2YjdiMzY1ODUxOTNjYTc4NmQzZjdkNzRkZTE1YmI1MDc0YzI1ZCBsZWdhY3ktdHJ1bmsKKzIxMTM3IDk1MjI5NzZkMWU5OTZjY2NiMzU0MTM5ZjdmMDNkMTM0NDJlODllNjYgbGVnYWN5LXRydW5rCisyMTEzOCBhYzdkY2YwZTUxMDRhZmExNDBmNDM3YmUwNWExNjU0YmMzZDIxYzIwIHJlbGVhc2UyMS1tYWludAorMjExMzkgMWYxMzY0ODA2NTk5Y2EzMWVlOGJkNTBiMWVmMjU5ODg3OGM0N2JkMiBsZWdhY3ktdHJ1bmsKKzIxMTQwIDllOWVkZGFjMjViODU4ZjZmYzBhMWVkOWRjMDExMzU2YTFkYjc0ZWMgZ2VuLWJyYW5jaAorMjExNDEgMjdkZDllYzMxNjJjZDhjYWI5NGJkNzM0MDk0ZTIwNDU3MDM1MWViMyBsZWdhY3ktdHJ1bmsKKzIxMTQyIDBhZjZlYWY5Zjg5ZWVmNGE5ZGFlZDE0ZDNmMzU5MmVkYzliODMyNmEgcmVsZWFzZTIwLW1haW50CisyMTE0MyAzNjQyNDQyNjk1MDYzYTk4MTA5MmVhNGU5Nzc2YjllNWRmMjIxNjlhIGdlbi1icmFuY2gKKzIxMTQ0IDZhY2JhOWU0NzU4Y2IwMTg5MGJlMDY5MTcxZjhkZWZiZmNhMTY2MzcgZ2VuLWJyYW5jaAorMjExNDUgZTMyODIxODU0NmI1OThiZmU0NmY2ODk0NTJhYTNiZjI4ZmE4NjFjYyBsZWdhY3ktdHJ1bmsKKzIxMTQ2IGI3ZjJlMjMxMjYxMGVjNGZiMzUxZDdkZWY0M2MxMDgzYzgyYjAwMWMgbGVnYWN5LXRydW5rCisyMTE0NyA5ZDUzM2FlNTc0ZDIwZDE0YzNkY2FkMmI2YmMwNDM2YjY0NzAwZjYzIGxlZ2FjeS10cnVuaworMjExNDggOGVlYTJlZmIzNGNkMWYxNmU2Y2JmNzEyNzI3NWM5ZTUxNzFhMjk2OCBsZWdhY3ktdHJ1bmsKKzIxMTQ5IDg1ZTNmYTFlYjgzNmM4ODIyMGVmZjRhMGI3NWFhOTcxNzdkMmNjMjcgbGVnYWN5LXRydW5rCisyMTE1MCBlODg3ZDY4NjJmNzdiNDA4MzBkNzQ3ZjFhMDVhMTZiNDY5MGFjYTNlIGxlZ2FjeS10cnVuaworMjExNTEgYjQ5OTQ1ZTgwNDRhODA2ZmIyYmEyOGM1MDE2ODhkNWZmYmZjZGNiZiBsZWdhY3ktdHJ1bmsKKzIxMTUyIGVmZjhkYTdjM2RjYjliZWIwZTg1YmJmZjgwODU3MjkyYzc4NTA5NDcgbGVnYWN5LXRydW5rCisyMTE1MyBjYWMyMDdiM2E0M2ZkOGE4OTQ2NGRkMmNlMGNhZTRjM2QyM2ZkODk5IGRlc2NyLWJyYW5jaAorMjExNTQgN2EzMzhmNTM3ZTQyYmIyYTNkMWFiNGM2MGQxMGE0MDBhMzY1MTkxZCBkZXNjci1icmFuY2gKKzIxMTU1IGE0NDdmYzk0NzI5OTlhMTYzODgwMjY0ZjM1NDE4Yzk4OWE4NWQ5ODcgZGVzY3ItYnJhbmNoCisyMTE1NiAyOGM0YjY2ZWNiYzU4ZGFiNGEzOTE2YTc5Y2FkNTlmY2Q1Zjk4MzQzIGRlc2NyLWJyYW5jaAorMjExNTcgYTdjMmZmZWJiZDI2NmZhZmIwMTRlODEyNDkxZGY1MTFmMzk2MDU2MiByZWxlYXNlMjEtbWFpbnQKKzIxMTU4IDRjYjM0MzE0YmQ5NzA5YzAwNTZmNzMzZWE3MzI0OTkyOThmNmQxNTYgbGVnYWN5LXRydW5rCisyMTE1OSA1NDFlMDk1YTZlZDY1MTY5MjVlNjYxZjhiOWJjOGM3ZjcxZWU3NmMwIGxlZ2FjeS10cnVuaworMjExNjAgNDE4Y2FiY2I3NjNmMGFjMmQ1NWIwZmE1ZDc2YzgxODNlMmQ5OGVkZiBsZWdhY3ktdHJ1bmsKKzIxMTYxIDM1NGE0ZGYwOWUzODViODQ5M2UwMmQ4MzBlOTVhN2E1YzdhOWYwMDUgbGVnYWN5LXRydW5rCisyMTE2MiAzMWNiNWQxNzMxMWFiNTI4OTA5MTFmNzI1ZWFhNTFkZTJjMjIxYjNkIGxlZ2FjeS10cnVuaworMjExNjMgMDExNmU0NTlkYWQyY2JkZTZlOTIyNjRkZjE3N2RjMDY1NmYxZDgyMSBkZXNjci1icmFuY2gKKzIxMTY0IDRlMzAxOWRhOTFhOTM2NWViYTUxNTcyMmIyOGQwZTgxNDIwYmExZDYgZGVzY3ItYnJhbmNoCisyMTE2NSAyMmZlYmE5NjU5Y2U3OTIwZGQ2MTJjZDg1MzYyZWM5NDJmMzQxYTk5IGRlc2NyLWJyYW5jaAorMjExNjYgMTFhYzAyYzAzNjkwZDQxNDRhMGJmZWY1MjVhN2Q0NGY1YzM0ZDQ1OSBkZXNjci1icmFuY2gKKzIxMTY3IDk3YTIwODI5MWNkOGJiMDg0OWJkNTVmODk1NzFhNjk0ODNjNjU0NTYgbGVnYWN5LXRydW5rCisyMTE2OCA0N2M5ZDBjYjZlMzE0ZGJiNzk2ZDk4MTNiMzQ3MTA4MGI2MDY3YTI0IGxlZ2FjeS10cnVuaworMjExNjkgNzY3YzRiMjgyMTBhZGViNGVlMjhjM2RhYjZmYTZiZWJjMGE1MGM1MSByZWxlYXNlMjEtbWFpbnQKKzIxMTcwIGRiZTgyYTljNmY3ZDczZjU5OTNjNDUxMDYzNjg5Y2I3OTkyM2M5YjYgZGVzY3ItYnJhbmNoCisyMTE3MSA4MDY0N2I4MmUxYjJkODc0NmM3Y2ZiNzFhY2IwZTFlZDU1MmMxMTIwIGRlc2NyLWJyYW5jaAorMjExNzIgMGU3Y2FkNTFjZjY2NTMwZThhNGFkN2E3NzFmYjRjODIxZWE5ZjVjOSBsZWdhY3ktdHJ1bmsKKzIxMTczIGE3MWZlZTg0YjRlNDkwMWI5NTcyNDQyMGI1ZTE4OGJmNTcyMzFhNDkgZGVzY3ItYnJhbmNoCisyMTE3NCA4Y2Q0YTNmMDE5NTIxZDlhN2Q0NzU2MDY0MTI2MjFhMmMwZjlmYjdhIGxlZ2FjeS10cnVuaworMjExNzUgYjUxYjRjMmJmNWY5ZWFmYTg5OGYwMGU4M2MxOTI4MmI4ZjNiMmQ4ZSBsZWdhY3ktdHJ1bmsKKzIxMTc2IDE3YjNlZTljYzQzZmEyZjkxMzU5OGMzZmJkZTEzZGIwMzcwZmQ0YzggZGVzY3ItYnJhbmNoCisyMTE3NyBlMWIzMDYyNWE0Njc0MDg5MzNkNDhiMDY1NGQ4YmVjZDQ2N2Q2MjA3IGRlc2NyLWJyYW5jaAorMjExNzggMmNlNzBhODgzYWY2YTdjMDYwZTNlNzU3OWI5MDBiM2NlZWUwMGE2YSByZWxlYXNlMjEtbWFpbnQKKzIxMTc5IDMxYzExYWIxYTNlODU3NGVhNDJiMmVkNjRmZjVjNTIxZmI1M2I0NjkgZGVzY3ItYnJhbmNoCisyMTE4MCAwNDYzYjllNTcwNGViMjg3ODU3ZThjYzMyNmQzZWQ3ZmU5YTcxMDlmIGRlc2NyLWJyYW5jaAorMjExODEgN2JjNDczYjJjNjU0MjQzMDQyNzg0YjhhY2EyNjRjYzAyNWNjZGM4OSBsZWdhY3ktdHJ1bmsKKzIxMTgyIDFiY2U4YmI0MWRiZDNmMDlkNzBlMDJmOTBjZDgyMzE2ZjA5OWI5NmIgZGVzY3ItYnJhbmNoCisyMTE4MyAyZTRjNmJhN2QwOWMxNGQxMGI4MTQ4NzdjNDhlZTlhMGE2YWJkZjFlIGxlZ2FjeS10cnVuaworMjExODQgOWNlOGE5OTViZjEyZTU4M2Q0NzQ0YTQzM2UyYThlZWI2YmZiM2VmMSBsZWdhY3ktdHJ1bmsKKzIxMTg1IDA2NzZlYTJmZjg2N2E5OGRhNDJkOWU1ZDhmZGNkNGFhZmQ5OTBhZDUgbGVnYWN5LXRydW5rCisyMTE4NiA1NGY3NjI5M2Q5MjY5ODUxNWQ1MDMzN2M4OTI1ZDM0NzhhOTI1YTc0IGxlZ2FjeS10cnVuaworMjExODcgOGVmODRiODNlYzFmYTQzNTUxNGNiMTVlMGY4ZTBiN2FiNTU5MTY5YyBsZWdhY3ktdHJ1bmsKKzIxMTg4IDEyNmE2NmIzNDEzY2QyYmJmZjQyYTY3ZWI2ZjgyMmI4ZjIxNmRlOWMgZGVzY3ItYnJhbmNoCisyMTE4OSBiMWY2MzI4MGIyYzI5OGVjOTExNTE4ZmVjODU4MWU4YWZjYzhhZDY2IGRlc2NyLWJyYW5jaAorMjExOTAgNjUxYzY2NDA2YmY4MjExYzBjMTBiZDBjNWU4ZTRmMmFlYjRiODMxMyBkZXNjci1icmFuY2gKKzIxMTkxIGQ2MzlhMWUxZjFmNDhmODhmZTQzYzA3MWYxNTA3ZmMxNjYwN2ZhYjkgbGVnYWN5LXRydW5rCisyMTE5MiA3YzM0ODk5YWQ1MDYyM2UyYzNiNTFkNzEwYzNiNTZkOThiYjk2NzI0IGxlZ2FjeS10cnVuaworMjExOTMgMGVjMDNlMWJlNTU4OGViN2VhY2YyYzBkODhiZGM1Njg3YWE0OTU3YSBsZWdhY3ktdHJ1bmsKKzIxMTk0IDRkMWM3ODQ5MzIyMWFiYWEzMjFhNmQ5MDM0ZjE0MmE4NzIyN2E5NDMgbGVnYWN5LXRydW5rCisyMTE5NSBlNWIyNzNlOTVmNzRiODQ5OGM4M2M4YWMzNzliZmE5NWJhMzQ0MzQ0IGxlZ2FjeS10cnVuaworMjExOTYgMzFiZDI1YTJkOGM1YjhkN2FmNzE4OTU1ZDE2YzJhZmJmMDRmYjczMSBsZWdhY3ktdHJ1bmsKKzIxMTk3IDZmYmM1ZjIwMWExZjg3NjBjZTdhMTUxZTczZTllNThjZDcwOTZlZTEgbGVnYWN5LXRydW5rCisyMTE5OCBhNjY1NzJhYzcxZTdkYzc4NGI5NTFhNzkyNzE3NzZjZmM4N2ExMjcwIGxlZ2FjeS10cnVuaworMjExOTkgMDJhYTEzM2RlYjUzOGU0ZTg3ZjJmNDEwZDJmOTljZjljYzlhMWQ3MSBsZWdhY3ktdHJ1bmsKKzIxMjAwIGY5MjZlYjFmNTc3MDFjMjMwMTA3MmQxMDdiOWFlZmRjMzliYWQwZmMgbGVnYWN5LXRydW5rCisyMTIwMSBlZmI1MDY5Y2M3NGZlNzA4YzM4YmY1NjFkMzdhZDBjMmQ5ZTk0OGRkIGxlZ2FjeS10cnVuaworMjEyMDIgMGJhZDQyZTU2MzIwNDE1YzJkMTI3NTJiMWI2N2RjMDRhYzgxMDdjOCBsZWdhY3ktdHJ1bmsKKzIxMjAzIGNmNmE4NjQzODdkMzc4ODFhZDcyODU4NjQzZjZmYWZhOTdmNGVlODggbGVnYWN5LXRydW5rCisyMTIwNCBjNWFjNmYwNTVjNjIzNWMyNDdhMDRkYjM0ODkxNmNiZDJjZDAxN2E4IGxlZ2FjeS10cnVuaworMjEyMDUgZDNlNDM5OWZlMmY5NDMxNjE1YWRiYWJmNmE0M2I3ZGY2NGViOGU3NiBsZWdhY3ktdHJ1bmsKKzIxMjA2IGM2MzhhN2EyZmU3N2I5MzIyMmYwN2ZjMGRmYjI4MGQ2ZjFkNTI5ZmEgbGVnYWN5LXRydW5rCisyMTIwNyA2NzcxZGFiMWZlMzJmZjM5MDgwYzZiZTQ0ODU3ZWZkZjhhM2YxYjJjIGxlZ2FjeS10cnVuaworMjEyMDggMzQwZTkzMDFlODViMzI0ZmM1YzE1NTgxMWJiMGZjOTdjODQ1YTIzZiBsZWdhY3ktdHJ1bmsKKzIxMjA5IDEyZDdkNGRiNjlmMmY2ZjA1MTZhZmUwYjJkNTFiMTBkNjkzNWI5OGEgbGVnYWN5LXRydW5rCisyMTIxMCAwOWEwOGExZTQ3ZDY4YWE3NmZjZmY2YjA0ZjEwN2FhMTVjNTk3YjI4IHJlbGVhc2UyMC1tYWludAorMjEyMTEgZTdmN2VlZjE4Yzk4NjNjYzNhNzZjYzE4NjY5NWI5NGM0MDJlY2UwYyByZWxlYXNlMjAtbWFpbnQKKzIxMjEyIGI3MzI0MWU1MDU1NjcwZWU0ZjQ5MjhiZTQ2MzE4YjE3OWIwM2Y4ZTUgbGVnYWN5LXRydW5rCisyMTIxMyBjYzc2MzFmYmY3ZjkyZTEzZDRkNGE0YWU3YmI5NjlhOTUyNzhjOWE5IGxlZ2FjeS10cnVuaworMjEyMTQgODI2MDAwYTQwODY2NTIyOGM2NzUwMGRkZDcwYjczMDBkZDUwNjlmNCBsZWdhY3ktdHJ1bmsKKzIxMjE1IDJmMjFmZWJmNmQ0NjJiN2Y3NGI1ZDY3OWJlYzM5NjQ4YzYzNjc4MDMgbGVnYWN5LXRydW5rCisyMTIxNiBmNWFiMzQ3OWFjZDRkNTMyYTgyZmVkOGM4MjM0MDI3NWY1M2Y0YjI0IGxlZ2FjeS10cnVuaworMjEyMTcgYzI1ODc2YTUxZjFiNTk2MzBmZGMwZjA5OTg3ZGFhYWQ4Y2FiMTJkMSBsZWdhY3ktdHJ1bmsKKzIxMjE4IGEyZTZmZmY0NzFiMDI1MzIwMDk2N2RhZGNhMTQ4OTlhOGE4ZWY5ZTIgbGVnYWN5LXRydW5rCisyMTIxOSAxNWEyNGUwYmY5NGYyMmQxMmE1Zjg1OGJkMTViNTU5M2NkOWM2MzcyIGxlZ2FjeS10cnVuaworMjEyMjAgZDEyMjFmYmRkODVkOGNkZjk0Y2RhNTZkMjg1ODA1ZGY3ZDlkOGM4YSBsZWdhY3ktdHJ1bmsKKzIxMjIxIGJkMzk5M2M0OTRhMWJlZWExYTdiNmViNDM1MTQyMTYxYTI3OTI2MWEgbGVnYWN5LXRydW5rCisyMTIyMiBkM2IxOTU2ZTNkZTBjMTNlYzA0ZDZhODU3YWI4OWVlZmNhZTY4OWIxIGxlZ2FjeS10cnVuaworMjEyMjMgYWUwZjA5YzdjMWU5MTE2MDQ4YzdjN2NjMTUyYjllYmZiMzg5MjNjNiBsZWdhY3ktdHJ1bmsKKzIxMjI0IDNhNTgwMjdjYWU0ZTdkZGY3ZDQ2MzkzODZhNmE0ODA5ODg4Yjg3YjAgbGVnYWN5LXRydW5rCisyMTIyNSBhNzgyNTQ0MWNhYTRhNzc3YTdlYzAzNGM4NGM1MGFkNmMwNzI4OGNhIGxlZ2FjeS10cnVuaworMjEyMjYgYTQzOGFiYTJkMTM3YjdhNTkxMzI3MzZiNTk3YTU0M2MwZDRlZWQ2YiBsZWdhY3ktdHJ1bmsKKzIxMjI3IGFlZGMzZTkyMGRlYmNhZGE4ZDJmOGUxM2ZjOGZjZTMyMWNkMjNiMzYgcmVsZWFzZTIwLW1haW50CisyMTIyOCA4ZTViNTM3Zjg3YTE5MThjYzI3NTNhODYyMWQzOWE5ZGQ5MTE2NTQwIGxlZ2FjeS10cnVuaworMjEyMjkgMTliYzYzYTg0NDM5MGU0YTgyYjc5MWJlNTI0YTAwYjY5MzEwN2JiZiBsZWdhY3ktdHJ1bmsKKzIxMjMwIDU5NjUzMzk0MjljOWNkMjJmZTViMDUzMDBhNjQ2YzMxMDNjYWNiMmEgbGVnYWN5LXRydW5rCisyMTIzMSA5OTBiNzNmYTA3NGNkYTRjYWIzMTJlYjg0ZTY2NTllODA2ZTc3Njc4IGxlZ2FjeS10cnVuaworMjEyMzIgMzZlODI1NjYwYTI0NTFhY2M4YjZlNTUxZTVjOGJkZDk1OTBmNWMwZSBsZWdhY3ktdHJ1bmsKKzIxMjMzIDlhNGNhYzJiOGI4ZmM5ODY3MDMxMmM4YWQ2ZDgzNTNlZTY0MTVjMTAgbGVnYWN5LXRydW5rCisyMTIzNCAxYTZiOGY2OWZlZDYyMTg0ZmExNzU2YTc3N2Q4ZjQxMGMwMzI0NjlmIGxlZ2FjeS10cnVuaworMjEyMzUgNWU0MzU3M2YwZGYxZjE5YTczODk2NDdkMTAxNmM0Y2IxZWQ3MDYzZSBsZWdhY3ktdHJ1bmsKKzIxMjM2IGVkMzc0NWRhNzQxOTI4MDg2Yzc0Yjk2NDZkMjYwYjAzYTBlZGNmMjQgcmVsZWFzZTIwLW1haW50CisyMTIzNyBiZTQyY2UyOTVlZGI1M2EzNTk0ODdlMDRkYWJjZTUwODZjMTM5MWQ2IHJlbGVhc2UyMC1tYWludAorMjEyMzggNTg3MzZjYTkxNDNjMGY2Zjc1ZmNkM2I4OTAwMzNjODhiNTJkYTY0ZCByZWxlYXNlMjEtbWFpbnQKKzIxMjM5IDkwMDU5NDNjNzU0ZWU5MjBhMGI2ODJmNTY2NzZhZTljYjA0MTQxZWEgcmVsZWFzZTIxLW1haW50CisyMTI0MCA0YTg3MjY3NzliYmFmNzNhMzZmMmFjMWEzMTg2ZjRiYTI5Zjk3ZGExIHJlbGVhc2UyMS1tYWludAorMjEyNDEgMjU2NDA2YjVjZjBjNGY0YjhmZDEzOGJiM2JkZmQ0NDJmZmQxZmIxMSByZWxlYXNlMjEtbWFpbnQKKzIxMjQyIDc2YzNmZjU3ZWI2ZDA2NmYyMTQ5MDQwNGFkOGM3NTRjODBiMThmNzQgcmVsZWFzZTIwLW1haW50CisyMTI0MyA2MjUzZDEyOGE3OGJmOTJjNzY3ZjUwZDczMzllOGQ0Y2I5Mzk0M2Q2IGxlZ2FjeS10cnVuaworMjEyNDQgZTM3MDhjYjFlMGQwN2NiOWM1Y2NjMWQwMTBiMjFlMjA3MDg0MmMzYSByZWxlYXNlMjAtbWFpbnQKKzIxMjQ1IDgyNjk5NDk5YjM4ZWMxZDMwNDI5YzhkMjk4YzExYTFjMmEzOGVlN2EgbGVnYWN5LXRydW5rCisyMTI0NiA1NDZjNzg1MmJhYzU1Y2Q5MjI2NzdhMzc1ZDNiOWE5ZDExZGIzYTBkIHJlbGVhc2UyMC1tYWludAorMjEyNDcgMGQ0YWQ4OWVkMzJkODdlY2FlZGIzZThhNWRjMTNiMjA5OTAxZDcyNyByZWxlYXNlMjAtbWFpbnQKKzIxMjQ3IDczZGU5NGE3MjJkMjA2YTQ1YzBiNDlkMzAxMWM2MjllYWQ0ZDYyYjEgcmVsZWFzZTIwLW1haW50CisyMTI0OSAwNzU3YjZjOTkzMDQxNDM3ZDFmYjMwMDg0NDZhYmQ1NDg0M2EwZWIxIGxlZ2FjeS10cnVuaworMjEyNTAgZjlkMTI3YWIzMmVjOWFhZDMzNzI4ODA2MDY0ZWUzYTAzNjVhYTY4YyByZWxlYXNlMjEtbWFpbnQKKzIxMjUxIGI2NjRiMDJjM2U5MWNmNDllMmUxMmVlZjBlYzg3MzkwYTA2MmUzMWEgcmVsZWFzZTIxLW1haW50CisyMTI1MiA0MDlhYmYyMjUxODVkMjFkMzcwNGI5MzEzYmYwNGUwYjQ2MTA5YjdkIHJlbGVhc2UyMS1tYWludAorMjEyNTMgMDg2MTliZjE4Mjk5MDQyMzdlN2EwY2M5ZGE4YTdmOTJlY2M4OTM1NiByZWxlYXNlMjEtbWFpbnQKKzIxMjU0IGUxZGQ0NjMwZWYzYjkxYmFkN2YyMWQ1ODFkMzlhZTY5NDg3OWQxN2YgbGVnYWN5LXRydW5rCisyMTI1NSA2OTkxZGRhZmUzODI4YTJkYzE4ZmVkNWQyZjhhM2FkM2E4ZGNmZTEzIGxlZ2FjeS10cnVuaworMjEyNTYgNmVlZjIxZTUyM2I2NDU2OTQ5MTQyNzgyYjFmOGM1M2YxZTM2NTY5ZSBsZWdhY3ktdHJ1bmsKKzIxMjU3IDNhODczMmM2Nzg5OGM2ZGFhNGNmYTBhYTVkNDllMDQzZGI1YWM3NDkgbGVnYWN5LXRydW5rCisyMTI1OCBhY2QzZGE1ZDU2M2NjODJjZmIwNzQwYTU1Yzg0NGM2ZWI2YTAyODQzIHJlbGVhc2UyMS1tYWludAorMjEyNTkgNDk3NTE3M2UxYTAyZDgyYWVkODg5YzA3MzNmNmE1ZTZjYzc2ODk3YSByZWxlYXNlMjEtbWFpbnQKKzIxMjYwIDIyMDQwNWMwNzIzMjU5M2E0Y2Q5YTcxMjc0YzMyOGRiMmVmYmZmMGEgbGVnYWN5LXRydW5rCisyMTI2MSA4M2M0NzQ4YjkzOTBlOGNlNDI0NDBmYTA1OGYwMzE4YzlhNzRjNWZkIGxlZ2FjeS10cnVuaworMjEyNjIgYWE4ZTIzOGFiMGFkNzYzNGU3ZGRkNjdkYTlmMWNhNzhhYTMzNDFhYSBsZWdhY3ktdHJ1bmsKKzIxMjYzIGE0ZGMyMWI0Nzc0ZGM5OTdlMDcwMzllMWJlYmFkNzkxMTFhYjM4ZTUgcmVsZWFzZTIxLW1haW50CisyMTI2NCA3ZDJlNmUxZDYwY2U1OGJhNGY5ZGZmMDllYWQxZTZiNzBjODM1Y2MxIGxlZ2FjeS10cnVuaworMjEyNjUgNGViZDI5MmM5NzVmODA5OGYxZjVhYjRhOWNiMjc1OWM4NzJhNjhmYyBsZWdhY3ktdHJ1bmsKKzIxMjY2IGYwMzYxODM3MzIzZDZkNmE0ODI3NDMxMmM0YmExZDgzZWIyNTZkMTUgbGVnYWN5LXRydW5rCisyMTI2NyBiODkzZDEyMDQ1Y2I0NjA5ZWEyMjEzNWY1N2MyZGI2NWViZjE4NThjIGxlZ2FjeS10cnVuaworMjEyNjggZjkyNjE5MDRjZWJiYzU1OWE0Y2UwNGVhYzYyMjcxNjZmNjRjYTNiMiBsZWdhY3ktdHJ1bmsKKzIxMjY5IGQ5MjNiM2M4YjE1MjY5YWNmMjdjN2QxMDAxODhlYmM3OTI0OWI2NTMgbGVnYWN5LXRydW5rCisyMTI3MCBlYWU2NmJmMjQ4Nzg4OGJkNDY5MTY2MjhjY2YzZDM1NzBhZTUyNzI2IGxlZ2FjeS10cnVuaworMjEyNzEgZmU0MDcxYmVmZjQxODY4ZjhjMGY0NjkwNGNkZTM0MzFjODdiZWI1OSBsZWdhY3ktdHJ1bmsKKzIxMjcyIGViNTI0MzIyYTFjMzFjNjM1Mjk3OWQyNTVhNTIxNTIzMjY3YWFlNjMgbGVnYWN5LXRydW5rCisyMTI3MyBmODI4N2Q4NGI3NTUxNzE2ZjVhYzhjMjFlMzVhZDU1MmQ4Y2RlZWQ2IGxlZ2FjeS10cnVuaworMjEyNzQgZjAyNjA1YjhmZGMxZTU5NzE1NjIxZjg4MWY1ZGI5ZTA4MWU4Y2M1YiBsZWdhY3ktdHJ1bmsKKzIxMjc1IDAzN2M4YmU1MDVlMDU5ZDc3NGM4NzM0NWY1MTE1ZjE1OGNiZDIzZmIgbGVnYWN5LXRydW5rCisyMTI3NiBhMWVmNDNhNmQ2ZTEzMTNmNDlhOTE3ZGE2NjFmOWJiYmNmMGI4NGU0IGxlZ2FjeS10cnVuaworMjEyNzcgMDQzOWM4MmE4ZmY0NzU2MTMwNjVhYmY2NDRmZDY5YzU0ZWE2N2I5NyBsZWdhY3ktdHJ1bmsKKzIxMjc4IDQ1MTcwOTNlYjk5ZWFjYmE4YWQwOGIxMmVmM2YwZjBhOTUxZjRiMzAgbGVnYWN5LXRydW5rCisyMTI3OSBlNGQ2NTVhZTkxNDBlMzEzZjk5NTMzOTNkOWJmOTc0ZDliNGUyNmMzIGxlZ2FjeS10cnVuaworMjEyODAgNDc3MTdlNTY2N2ViMTVmMTg0ZTBhNzcyZDMyYjVkN2M4YWY1ZmY1OCBsZWdhY3ktdHJ1bmsKKzIxMjgxIDI0YzI5YjM3MTUxMDJjZGIzNTY5ZjBiNmE0OGMwYzJjMmIwZWUxNjEgbGVnYWN5LXRydW5rCisyMTI4MiA5ZmE1NGJkN2E3Y2I1NmVjOGU5NGRkNDQwMzA4ZGYyMjM0MTc0MTZjIGxlZ2FjeS10cnVuaworMjEyODMgYzRkYjA5Yjg3NDI0MjMwZDIyZTlmZmVlZmRmM2U1YzRiYjdiMzA5OSBsZWdhY3ktdHJ1bmsKKzIxMjg0IGUzY2YzMzQ4ZmVjYTUzMGFmNDgzZGVkYzc0YTc0NThkMWY4OGEyYzEgbGVnYWN5LXRydW5rCisyMTI4NSBmMWI1ZmJlZWNjMGU5OTIxNzE0NzJkOWU4ZWZlMTI3YmRmNWY4ZDJkIGxlZ2FjeS10cnVuaworMjEyODYgNDgyNmE2Y2RhZmM0MGRlMjJhY2JlY2U0MzdkMDBmMzhmZjY2ZjE2NiBsZWdhY3ktdHJ1bmsKKzIxMjg3IDQ1ZGUxYWMyYTM3NjdiNjg1Y2EwYmExMDhkNThlNGE4Zjc1OTUzMTIgbGVnYWN5LXRydW5rCisyMTI4OCA1ZDNlN2Y5OWNmNTJjZjQ2ZGZjOWE1ODFiZmQ3OGFkNGJjOWJmZjY0IGxlZ2FjeS10cnVuaworMjEyODkgMDY1YjE3ZmMwZDJlZTA2ZjY1MTI4YjVhYmViMjYyMWNkM2VlZjE3MCBsZWdhY3ktdHJ1bmsKKzIxMjkwIDlmMWRmYTc4NmJhNjU1ZWRhMTI3ZjFmZTVjNjI4ODlmNmE0OGRlOTIgbGVnYWN5LXRydW5rCisyMTI5MSAwNTE0YjE2YzFhNjgzZjNiZDU0N2FjZDlmYTBkNDY2M2MxYmViNzExIGxlZ2FjeS10cnVuaworMjEyOTIgZmI3YzQ0YWU0YTYyNzdkNDJiNjYzMWZlNjBmNmFhYjY2YTdmNDRiOSBsZWdhY3ktdHJ1bmsKKzIxMjkzIGQ1MGQ0ZjgxYWE0YzVhN2MwMGVkZjkwNDUzM2M1ODk1ZGFmMDAxNGYgbGVnYWN5LXRydW5rCisyMTI5NCAzNThjYjc0YzA4NjRmOWE4Yjc5M2E2NzFkZjJhMzZhYTQxZDZlM2E1IGxlZ2FjeS10cnVuaworMjEyOTUgNTdkZDEzYjZjODAzMTBkNDQzYjIwZmY1NWNjZmQ2M2YyOGIzOGY0MCBsZWdhY3ktdHJ1bmsKKzIxMjk2IDMwOWZiMDI2Yzg0ZWNkNTdmZDI1NzA5NWU3YzgzNWRiMDIyOTczOGYgbGVnYWN5LXRydW5rCisyMTI5NyAxYTJhOTE0YjI0NmMyMmM2ZjEzMWViY2EwNGY0ZThkMTkyMTU4YjJjIGxlZ2FjeS10cnVuaworMjEyOTggYzg4ZjQxNDg2MDVmZDUyY2UwZWIyMDYyNjM0ZDc5ODk0MWY2MjlhOSBsZWdhY3ktdHJ1bmsKKzIxMjk5IDZiMGE4MTU3YmUzYjY4MDZmMTNlMGEzMmIwNGZlZWFjMGI3ZDdhYjYgbGVnYWN5LXRydW5rCisyMTMwMCA0MTQ5MWQxOTY3NDhjZDRkZmY5MDMyMjlmMGQ2NTExZDI1NzZlNDdhIGxlZ2FjeS10cnVuaworMjEzMDEgM2Q5MTY0ZDk1ZTc4OWY3MThkNjc5ZDgyNjE4MTE3ODI3ZjVmMzQ2NiBsZWdhY3ktdHJ1bmsKKzIxMzAyIGE0NmUzNWFjZjljMWM2NGJhOTAxNjNiYWMwZWQ0ZWNkOWI2ZjE4NTcgbGVnYWN5LXRydW5rCisyMTMwMyAxNmU0ZWI0Mjc3OTc4ZjY2YmU4YjQ2NmNlZTU0OGNlOTUzZTc1MzgyIGxlZ2FjeS10cnVuaworMjEzMDQgNzhiZmJlMmU3MTljYjNiZDkwMzU0ZDQ4NDk3NjZkMTBlOTQ3MmE5NyBsZWdhY3ktdHJ1bmsKKzIxMzA1IDQyNmUwYzcyMWJiZjZlYjIwYTUyOTdjYmUwNzRjZDE4MTk0MWQwZjkgbGVnYWN5LXRydW5rCisyMTMwNiBlYmY2MWI1YjVhZWJiY2E3MTFjYzZjYTc1NGZkYTIxMTUwYzRhZWM2IHVubGFiZWxlZC0xLjEuMQorMjEzMDggZmQ4MzIxMmViOGYyNGVmZDY0OTRjODlhNDMyNjI1YzU4NTdlZjQwNSBsZWdhY3ktdHJ1bmsKKzIxMzA5IGRlZTQ5ODk2MWJmZTNjOTBmYzc1OWUwMmFiNGM0YThkZDhkM2Q3ZjIgbGVnYWN5LXRydW5rCisyMTMxMCA0YWQ4NDJmOWQ0MzE0N2E4MDE4YmMwZjhiMWQ3ZDlhMzE5ZWU3Yzc3IHJlbGVhc2UyMS1tYWludAorMjEzMTEgNDQxMjJlN2I0OWNmMmM5NDczZTY4ZGEyMTNkY2E4OTI1ZmM0OWMwMiBsZWdhY3ktdHJ1bmsKKzIxMzEyIDllMzI2YzllNmJlNTk0MjEwMWMxMDNkNmE4YzY3ZDU1NDU2ZGZhMjUgbGVnYWN5LXRydW5rCisyMTMxMyA4NmRhYjBkNDNiNzMxMmYwYjg4N2U1NzY5MWM0ZmU3OGQ1ODdlNzM4IGxlZ2FjeS10cnVuaworMjEzMTQgOTczNGY4OTVmNGZiZWQ5OGI0N2ZhNjJkZDEyNjY5OGYwZjQ3ZDkyYSBsZWdhY3ktdHJ1bmsKKzIxMzE1IGQyYzk1MDAzMjM5MzAwMWY3YmQyMzJmYzhhOGZlNDVkMWIyNjU2NTQgbGVnYWN5LXRydW5rCisyMTMxNiA3YzhkYWQ1ZjJkOTY2ZGMyMWRiZGRkNzBkZGI5MGY5MWUyOWI3ZDA2IGxlZ2FjeS10cnVuaworMjEzMTcgYjU2NThhMjMwZTFhNTI3NjA0NWUyN2JkNDZhM2U5YWMxM2ZmOGYzNSBsZWdhY3ktdHJ1bmsKKzIxMzE4IDhiN2ZmNDRiNDY2OTU5N2E2NDdmNDgwNjIzZDM1ZGE4ZjY4N2FjOTAgbGVnYWN5LXRydW5rCisyMTMxOSAwNjMyZGNkNjllYTNhZjE5YTY5ODM1Njc0YjRkNjQ1YTcxNDZiNjQyIGxlZ2FjeS10cnVuaworMjEzMjAgZTNiYTM3Mzk4NTVhZDFmZjc3ZDg4NGJkN2Y1N2JkYzA4OWZjM2U0OSBsZWdhY3ktdHJ1bmsKKzIxMzIxIGYzODkyM2NlM2M2YjBmNGFkYmEzMTY3YmYyNDkyNTg0NjdmN2Y4NWIgbGVnYWN5LXRydW5rCisyMTMyMiAxZjFkMmM1MGIzYzc4NDgxMWM3NGExM2E0YzY2Y2Q2NTg4ODM0ODk4IGxlZ2FjeS10cnVuaworMjEzMjMgZjdjMDFiOTM4YTE3MzhhZDc1MjVmMTQxMTI1YTBmMTg2YWEwOTQwOSBsZWdhY3ktdHJ1bmsKKzIxMzI0IDA0M2UyMDAxNzRmMWI3ZTljMzRmNGVkNjFmMWQyYzhlZWM2OTgyYzkgbGVnYWN5LXRydW5rCisyMTMyNSBlMzFhMzQ5MTY2ZjRlMGNkMWUyNWUxOTk4MGVmYTI3YzMwMTNiNDJkIGRlc2NyLWJyYW5jaAorMjEzMjYgYmMwNWE5NTI0MmEzNzgwM2E1MWJkZTUyOTJhMWQ5YmRiZDE5MzI1ZCBsZWdhY3ktdHJ1bmsKKzIxMzI3IGY2MDc4YTMwZjcwYTI4MGVhNmViNTg0ZTIzM2I5ZWM4MzZhNjg3NmQgbGVnYWN5LXRydW5rCisyMTMyOCA2ODAwYmNjZTA0NTU1YjlmYTNmZTI0ZjM0MDUwOTVhZTY1Mjc2YWM1IGxlZ2FjeS10cnVuaworMjEzMjkgNGZhMzFlY2EzYmU0YTU0ZDhlOTE3ZDM1MDgwYjQxY2NkMzEzNmQwOSBsZWdhY3ktdHJ1bmsKKzIxMzMwIDI5NWFjYzA3NTVmMGM3ZmVjOGExZDlhZGVjNTAyYTFmZWEzOWUxYmIgbGVnYWN5LXRydW5rCisyMTMzMSA1NWYzYTA0ZTA2NDExZWNmZjI3NjVkMDdmMDNjZDlhNzA0MzlhZDgxIGxlZ2FjeS10cnVuaworMjEzMzIgZmZiYjljOTE4YWMwNDZiMGNlNmM1YmI2YjdiMTQ0MGIzNDg2NmY3MCBsZWdhY3ktdHJ1bmsKKzIxMzMzIDAzNDRlNGFjNzBiMGM4Zjk1NWUyMTVmMDNkNjY0ZDUyZGM5ZDZkYjUgbGVnYWN5LXRydW5rCisyMTMzNCBiMTQ1MjFmZDhlMzkxNjIxYTMxZDBmYmZjYjEzNWZlZDFlMTFjODBhIGxlZ2FjeS10cnVuaworMjEzMzUgMjBlM2E2ZTEwYzI0OGZlMDNjY2JjZGY0NTJjZDdkNzA3YWY3MDVjNSBsZWdhY3ktdHJ1bmsKKzIxMzM2IDIyZjg1YzZhNjUyMGE2OTU4YjNhOTExODVjOGNkOTVlNWIwMjM5ZWIgbGVnYWN5LXRydW5rCisyMTMzNyA5MzI5MDNjN2QwNTRiMDJiYjg5NzBjZTJmMjIxNGY5NzEyNjAxOGVkIGxlZ2FjeS10cnVuaworMjEzMzggOTgyMTYzYzRlOWQyYmUwYTAzMmY2ZTYxODUxYzgzODllMDIyYjMwOSBsZWdhY3ktdHJ1bmsKKzIxMzM5IDY4YzEyZDU1NTZkZjcxNmJkMDQ2Y2RmODgzMTUwMDczNDYyZmFkN2EgbGVnYWN5LXRydW5rCisyMTM0MCAwZmY3NmQ3ODFkMmM2MTE4ZDY5ODIxOTg5YzRkZTQ5NDliMjZmMWQyIHJlbGVhc2UyMS1tYWludAorMjEzNDEgZmY4ZTE4M2FlNThmOTQxZWUyNjk2NjUyNjEyNGU0NGZjZTI0YTk1YSByZWxlYXNlMjEtbWFpbnQKKzIxMzQyIDdjZDZlNTE1ZmQzMGE2OTE2MTc5NDFhYzZlMTFmNGE2YmE2NGNjYjUgcmVsZWFzZTIxLW1haW50CisyMTM0MyAzMTQ4NDJkY2Q1MmU5NGU3NDFlYzc5Y2U5MjJlYTJhNmFmZTczODcyIHJlbGVhc2UyMS1tYWludAorMjEzNDQgODkzYmExZjAzNzhhMWY2NDRiYzA1YWQ0YzQ4YjYwYjQ4ZjNkZDcxNCByZWxlYXNlMjEtbWFpbnQKKzIxMzQ1IDY3Yzg0MWQ4MjFlMDc0YTliN2Y0Y2U3MTQwMWI1NWQxMzUyMmQwNTcgcmVsZWFzZTIxLW1haW50CisyMTM0NiA5MDk4NDE1OTcxZDAxNzAxYmMzZjJhOTljYzI3MjQxZDIyYjljNzg4IHJlbGVhc2UyMS1tYWludAorMjEzNDcgYmU5NjcxZTYxZjRhNjA4NjdhNGZmMTFkMDFhOGJlZWMyYWY3ZDMwZiByZWxlYXNlMjEtbWFpbnQKKzIxMzQ4IDNhNmEyZTU5ZGUwM2MzNzFmZjM5ZjgwMjYzODIyOWFhZGYxMTY5YjUgcmVsZWFzZTIxLW1haW50CisyMTM0OSBhYzAwMjdlMmIzYjdhNGZkM2YyYjAwNGY1NWVlNzZlM2NlNDk1YjI1IHJlbGVhc2UyMS1tYWludAorMjEzNTAgZTg2NTBkNzVlNWE0NTRjODhjNTA2ZGIyNjU2MmI5NWU0ZjBiNTMwNSByZWxlYXNlMjEtbWFpbnQKKzIxMzUxIDc1YzFmOWMzZjBkMWY3YjgzMDZhODY3MzVmY2NhMTAwOTYzY2NiMjcgbGVnYWN5LXRydW5rCisyMTM1MiA5YzJiYzNlNGRmNzM4MzcxZmE5NzQwZjg3ZGU1OTIzNjQyY2EzODdiIHJlbGVhc2UyMS1tYWludAorMjEzNTMgZDUyZTYzNWUyMDVmODc2MzQzNGFiZTc1ODgyZTQ1M2UxOTAzYmExNyByZWxlYXNlMjEtbWFpbnQKKzIxMzU0IDZjZWM3NjFkZjJjMzRhZTE5OGE1OTQzNWYyMzIyM2RhYmI1NjlkOWEgcmVsZWFzZTIxLW1haW50CisyMTM1NSBmYTRhNzdlNDI0ZGRiMzVlODkzMTEzNzQ1ZmVmMmIzODU0MjAzZTA0IHJlbGVhc2UyMS1tYWludAorMjEzNTYgMDcxYzk1NzIyMWVjYzU5ZDg1NTQ1YTIwOTYwYzJlN2Q1MDE2ZTA5NSByZWxlYXNlMjEtbWFpbnQKKzIxMzU3IGM4MjNlYzQ3ZGY0OTVlNThjZjE3Mzg1MTNmMDMwNDU3YWQ3N2U0MDUgcmVsZWFzZTIxLW1haW50CisyMTM1OCAxYWE1OTFlNDE4MTU0NWMzYmRjODUwOTgzNDFlNTQ3YzI0NDM1OTZmIHJlbGVhc2UyMS1tYWludAorMjEzNTkgMTQwY2IyNDZiODY0YWVhMDNmNWFiNjdlMWVhMDY4NzA3NDU4ZTcyNyByZWxlYXNlMjEtbWFpbnQKKzIxMzYwIDE1OWFiZmM4YjFiYzUxYmZjOTJkMTZhMGJkZDY4YTA1NzY1MDk0Y2UgcmVsZWFzZTIxLW1haW50CisyMTM2MSAwYzk3ODcyOGViYWZlYzg3MzJkODg5YzQzZjBlZGE3ZjVjOWZhMTAzIHJlbGVhc2UyMS1tYWludAorMjEzNjIgMGQyODc0MzQxNDRiNTljMmMxZTc2ZjRjYmQyYzQwNTkxNzc5MDc4MCByZWxlYXNlMjEtbWFpbnQKKzIxMzYzIGNkYTZjYTlkZmQ1OTBkNDlmODE5ZTFmYTdjZTM3NDZhOGFhOTk1ZWQgbGVnYWN5LXRydW5rCisyMTM2NCAzYmE3YTM1OGNlMDI4ODVhZjRkNWEzYjViMmVkNjU4MjQ4ZDNlNDkzIGxlZ2FjeS10cnVuaworMjEzNjUgZmIzNWIzYTIyNjA0NjIyMWY3YjdkMzRhMmI2NjViNDNiYTM2MjkxYSBsZWdhY3ktdHJ1bmsKKzIxMzY2IGU0MjdhZmI1NjM3ZjA4YzFjMjQwZWZlYWUxOTUyYjMyOTA5YTBmZGUgbGVnYWN5LXRydW5rCisyMTM2NyA5M2JkYzVlY2UxYmY2OTg3YjYxN2I4OWNhYjRjZjI1OWE2YWQ3N2IwIGxlZ2FjeS10cnVuaworMjEzNjggZTQ1MjdkNDVlOTQyZDFjOTVmNjIwZWUxOTYxYmQzNWIyYmFmODM2NiBsZWdhY3ktdHJ1bmsKKzIxMzY5IGY5OTVjNGYyNTEyMDA4YjNhNWE2NGM5OWM5ZDRlM2NiMzJjZmZkODYgbGVnYWN5LXRydW5rCisyMTM3MCBkMDE0YjUyMjY5MDBkNzMzMjExOWI2OGZhMzg3Y2JlYWFjN2EyMzUyIGxlZ2FjeS10cnVuaworMjEzNzEgYmY5MzZjNTI5NjM1M2MyNjk0Y2EzZWZjNWNkYzcwMjAzODM0ZmM5ZCBsZWdhY3ktdHJ1bmsKKzIxMzcyIDQ5YWNjOGFjNjBjMjMyNDE1ZDliZDU3ZGJjYmViNDYyMjFiODdiZjcgbGVnYWN5LXRydW5rCisyMTM3MyA0MTI0M2NiNGVhMDVkNzc3MTJhNTQ2Yzg5NjQ1MTgwNTQ1NDg0YzU2IGxlZ2FjeS10cnVuaworMjEzNzQgOTc2YjBhZTRmNTI3YzFhMWU3NWM1YjVhYzQzNTEyMzFkYWViZWUxMiBkZXNjci1icmFuY2gKKzIxMzc1IDNmMGJkZDRhZTY4NDAwZjY0ODg3YzA4NjZjMzNiNjVhMDE4ZGI1YTkgZGVzY3ItYnJhbmNoCisyMTM3NiA3NTRkZWI4NjgyMGU1ZjVjYThjZmJhNjBmMjRmMmEzOTk1MGMwNmJkIGRlc2NyLWJyYW5jaAorMjEzNzcgNmNhM2RkODJjYjA3ZWQ0MzU1YWI1YjIzMjJkYWFkNThiNGQzZjAzNyBkZXNjci1icmFuY2gKKzIxMzc4IDA0YTY0ZDJkOGIyZDIwNTc4OTA1YzU3ZGNlYzQ2MzBhZDQ1MmIzNTggZGVzY3ItYnJhbmNoCisyMTM3OSAwMjI2ZDA2ZTNlZmY1OTI3NDkwZWE3Y2U2NzU4YzA0NmI5ZDU3OGZmIGRlc2NyLWJyYW5jaAorMjEzODAgN2VmNjYyYWVkOWRlNGUwYTY3YTU5Y2MyNDM4YzYxYTc3NTczNTg3MCBkZXNjci1icmFuY2gKKzIxMzgxIGY3MzAyOWM3MWIwZGYwOWVlMDc5NTU5MjExYjRhNDA2YTk0ZWY3NzkgZGVzY3ItYnJhbmNoCisyMTM4MiAyZDBiNjlhNjdmNjk0YzY1YjM5YjVmMzdlMmUwZjA5YjIwODE0MzA2IGRlc2NyLWJyYW5jaAorMjEzODMgNDA1ZWFiYTM2YjJmYzg2MmVjMmJhN2E0ZDdlYWY5ZWIyOGNjYTIyZiBkZXNjci1icmFuY2gKKzIxMzg0IDI3ODM5YmE3ZWMyMmVkNDllMmMzMTRmOTE2M2FiZDY5YTU5NGJjNTMgZGVzY3ItYnJhbmNoCisyMTM4NSA4NWRiOTg5ZjZhNzNjNmNjYzU2YWM0MzlkYjY4YjRlOGY1YTkzMmEyIGxlZ2FjeS10cnVuaworMjEzODYgNmExNjMwMTE3ODA1MTY3ZWFiOWMwOGQ0NmNkM2E5Zjk3NDUwODhmNyBsZWdhY3ktdHJ1bmsKKzIxMzg3IDc5NDU4MmZjMDYyM2UzYjk1ODc3YWQ4ZmQ1ZGVhZjE1MzUyMWNiMzAgbGVnYWN5LXRydW5rCisyMTM4OCBjMmE2MGRlOTFkMmM3MTM4MTNmM2NkMjIxMjc1ZWU4ZTAyNGViMDU3IGxlZ2FjeS10cnVuaworMjEzODkgZWRhZGZhMjgzNTlmODUyNTMwMGRhY2I0MzA0NDAxYTBmZDI4OTQxNyBkZXNjci1icmFuY2gKKzIxMzkwIDU4NDY5MjAyZWU4ZDhiMWI1Yzk3ZDFkNWQ4NWJhZTZmNDAxMmFiY2YgZGVzY3ItYnJhbmNoCisyMTM5MSBmZTYzMzUzNGY0NDc4NjM3NTQ3YTI3NDc4YjljMzY5NjY2MzUyMTMwIGRlc2NyLWJyYW5jaAorMjEzOTIgYTEyZWM4ODc2NTE1YzM3ZTc2Mzk2YjZhYzU3YWM1NzZkN2Y0MmY5OSBkZXNjci1icmFuY2gKKzIxMzkzIDU2NjhhODU1MGJlNDU0NWI0YmU0ZDIxNTNjZDg5ZTI5NzNiZTY5ODAgbGVnYWN5LXRydW5rCisyMTM5NCBlOTBmYzM0ZDczZDAwZmEyMmExYjUyYWFmNTk1YWQzMzk5YTI2ODYyIHJlbGVhc2UyMS1tYWludAorMjEzOTUgZThkYzczMzg2NzA2MmExNDlhYTEyNzczMjgwZjk1N2FiNzc0YmIzOSByZWxlYXNlMjEtbWFpbnQKKzIxMzk2IDBmZGMyNzc5ZThkNDNjNGNkN2VmYzJiMjZiNmFjZmUzMjk5ZjcwYjIgZGVzY3ItYnJhbmNoCisyMTM5NyA4ZGI5NDM2N2ZhZTFjODA4MDcwYjFjMWZjMjExOWY1NDAwN2I1OTg1IGRlc2NyLWJyYW5jaAorMjEzOTggYjNiYTBmNDhhZGM0Y2U4MDViNTE2ZTNkZmNkZjg3ZmJjYjE0NDdkZCBkZXNjci1icmFuY2gKKzIxMzk5IDExNjYwMTFhOWNmY2E5ODJlMDMwMjgzZDUyZjYyMzJmZTljYmJlMDEgZGVzY3ItYnJhbmNoCisyMTQwMCBmNzBiMmQ2M2YzMDlhOGUyNjExZjY1MWFiODI3ZGI2NDhhMzc2NDEwIGxlZ2FjeS10cnVuaworMjE0MDEgZDMyZmU0OGZiYjk2OGQ3MGMxMDBlNmRlYjdjMmVmMzg3NTI5MmIyMCByZWxlYXNlMjEtbWFpbnQKKzIxNDAyIDI2NGVkNTVkZWM2ZTFhZDM1NDE5Y2Y5ZGQwYmIxMzY0NmIzNDA1YTcgcmVsZWFzZTIxLW1haW50CisyMTQwMyA0NDlkYTg1N2RjZTU5NDQxYTkxZmQyN2UyMGY3ZTMzZmRkZjY1NmY5IGxlZ2FjeS10cnVuaworMjE0MDQgYzAyOWI3NDMzMmQyYWFmY2JiYzBjZDgwNzFkNTQyZmI2YjExNWM1NSBkZXNjci1icmFuY2gKKzIxNDA1IGQyYzk5NjNlNDI5MTU1NTY4MTdjMWJkYzZiNmViNTlkN2E5ZGE2Y2EgZGVzY3ItYnJhbmNoCisyMTQwNiAxZGE3MjRjZWUyMmQzZjY1NTljZGJhMDFkMTI3ZWRlOTFjMGQzYjc4IGRlc2NyLWJyYW5jaAorMjE0MDcgNWE3ODQxMzQwZGM3YzFjOTMwZDFkNTk4NDM1ZjIyOWNiODI5ZTg0NCBkZXNjci1icmFuY2gKKzIxNDA4IDA4YTJjMmU3OTRlZmRlNmM5NDFjOGE2MTUzZjE5ZmY5MTFjYjM2ZWYgZGVzY3ItYnJhbmNoCisyMTQwOSAwMjAwY2QyMjQ5MmVjMjYwOWNmMTRmZDQwNjMwNDIzOThjZDEyZmYyIGxlZ2FjeS10cnVuaworMjE0MTAgNGJhYjllY2YzZTA1ZTJmNjY4ZmYwYmZmYjBmZWYxMDZhN2E5ZmM1NiByZWxlYXNlMjEtbWFpbnQKKzIxNDExIDE3MzMwNDI5Y2RmZWI1ODA4YjA4MWI4M2NlZWI5NzdmMmMyZjQzNTEgcmVsZWFzZTIxLW1haW50CisyMTQxMiA3OThiNWU2YjQ5MTVmMGRlOTRlYTYyODMxOTkzMTNhYWI2M2E0MmJkIGxlZ2FjeS10cnVuaworMjE0MTMgNTU5NjUwNGFkNDlhZmIwYTVjZmEwMzc1NjdjOWVmNjlhNDVhY2YyNiBkZXNjci1icmFuY2gKKzIxNDE0IGU1ODc5OWVlZmEzOTc4MWMwMWI4OGRiY2FiOTIwNDEwNzllYjkxYTcgZGVzY3ItYnJhbmNoCisyMTQxNSAyN2I4NjY1MTRjOWViZGNmZDJhMDY4MDg1MDdlODQzNDAwNDI0MjAyIGxlZ2FjeS10cnVuaworMjE0MTYgMjUxM2JjMWRiMTJmZWRhYTQzMDk4MmMyOGYxYjUxOGU1NTA1Zjk0ZSByZWxlYXNlMjEtbWFpbnQKKzIxNDE3IDUyMGUxZjQwMTAxYWEwMWQzODFiNDIwODA2YTQxMzMzNTk1ZmQxYjYgZGVzY3ItYnJhbmNoCisyMTQxOCA4OTM3ZDIzNGIyYThkNjUyZmM5NWI2MDNlM2E1M2YyNTUwODRkMWM5IGRlc2NyLWJyYW5jaAorMjE0MTkgYzY3MjNjZDU1NDU4YjI0OGRhNzgwYzUxYzEyYzcxM2EwNGY3OGNhYyBkZXNjci1icmFuY2gKKzIxNDIwIDY1MGY3MDA0ZTZkMzlhYTMzNjI3NDZkM2ZhNmQ0MDQ1NDEyNzFmZmMgZGVzY3ItYnJhbmNoCisyMTQyMSAyM2JiM2Y0OWNiOTQyNDk4M2JkYmFhZmMzOWJhOWEzZmY4ODNiZDA2IGRlc2NyLWJyYW5jaAorMjE0MjIgNDRhODdjMzAwZjJiYTRmM2EwZjg0Y2I0M2ExODIyMTM2NjM3YjY4MSBsZWdhY3ktdHJ1bmsKKzIxNDIzIDNlZGE2MjMxZTFjMjU4NDkwOGE0ODE0MWEwZTE3ZTJmYzg4MjJkMzQgbGVnYWN5LXRydW5rCisyMTQyNCBkMjNmOTkzMWIwMzM1OWE4NWZjZjJjMjk3YzhlMzNmZjgyMDg0NDY3IGRlc2NyLWJyYW5jaAorMjE0MjUgNGUyNmI0MWQyZjNkYmNiNmU3NGM0NDg4MGM3MjQ1YWMyZWVjN2IxYiBkZXNjci1icmFuY2gKKzIxNDI2IDlkZTY1NjAwNDIwYjYwNzE4MzQxZmJiOWNhYzM0ZTczNjJmNjdkNmEgZGVzY3ItYnJhbmNoCisyMTQyNyA5YzU4ZGRjNDcxOTVhZDgzMzExODFlOWU5NzI0ZDYzMGZiNmE2MGJjIGxlZ2FjeS10cnVuaworMjE0MjggYmUwOTZiYjRlM2YyMjdhNzQ0NDMzYTM0MmIyZDM1ZGQ2NzQ1M2U5ZiBsZWdhY3ktdHJ1bmsKKzIxNDI5IDk4NTU2Y2RmZTcxNjk0ZWI1YzBlYThiNzAzMDZlY2NiMDA5YzEwMjUgbGVnYWN5LXRydW5rCisyMTQzMCBhODBlMGQzOWYxMGIyN2ZhOGFkNGU5NTFjNjBkYTNkMDI5MmFiNDQ0IGxlZ2FjeS10cnVuaworMjE0MzEgZmEzYTQyMDdkOTU3MDg0NzUyY2Q1YWQzZDNjZjkyYzUxMDA1OTgxMyByZWxlYXNlMjEtbWFpbnQKKzIxNDMyIDU2NjUyZTY4NDczN2I5ZGIyZmM1MmUwZGUwZGY1M2ZiYzJmYWNjNWMgbGVnYWN5LXRydW5rCisyMTQzMyA5MDMyMTI2MTI3NzEyOTBhNDlmNjA3YjY2MjRiMjVhNGYyY2Q5NzdhIGxlZ2FjeS10cnVuaworMjE0MzQgMTE3MzcxYWY1NDRiMDkwYTU0MDhiMzAwMmI1YTcyOWJmZTRiZWRkNyByZWxlYXNlMjEtbWFpbnQKKzIxNDM1IGNhYThmZmMzY2QxYzcwZTA3Yjc2N2Y0NDJlNTE2ZTEwMjNiZjU3ZTUgcmVsZWFzZTIxLW1haW50CisyMTQzNiA3N2Y0MTYzODc5MjJlYTc4MThiMjY0NWZhODMzYmEyZmQxODQzYzRmIGxlZ2FjeS10cnVuaworMjE0MzcgYzAyODg2NzAyMzBlOTMyNWJmNDYzZTQ2ZTI5Mzc4ZWIwMDc5YzNiZSBsZWdhY3ktdHJ1bmsKKzIxNDM4IDJlMWFkYmU4OWU0YTU4NDQxZWI3ZTEyOWJiYWM4MjUwZWY2MjY1Y2MgbGVnYWN5LXRydW5rCisyMTQzOSA4MTE4NDJkYWNkMzllMWU5Yzc5OTFlMWI5ZjQwNTdkYmNmMzBmNjU4IHJlbGVhc2UyMS1tYWludAorMjE0NDAgNDUxYzBhYmJmOGE5ZjU0NTI4ZTFjMGJkOTVmMTE1ZDU0Y2MzN2FjNyBsZWdhY3ktdHJ1bmsKKzIxNDQxIGVhYWJjYTEzMTc0ZTAzZmM0ZGY2OWVhMmIyYzljYjVhOTMyMDFjYjQgbGVnYWN5LXRydW5rCisyMTQ0MiAzZmRlMWQyMDMzMWVhZjYxZGYxMGQwMzI0MmFmNTczYjE2ZmQxMmVlIGRlc2NyLWJyYW5jaAorMjE0NDMgNDcyZWY2ODMxOGE4YmY4ZmQyNzE5MjAzYWM5MzIzZWQ5YTgxNTQxYyBsZWdhY3ktdHJ1bmsKKzIxNDQ0IDRkMzdiNzJhZTJkMjYwNDAwNTY2YzZjMTIxMDU1ODQ0MTQzZGY0MDUgZGVzY3ItYnJhbmNoCisyMTQ0NSBmMjRlYzIzY2Q0N2VkZmY3NmI0MmQyYjY4YWYyNjljODA4MWRlMzQ2IGxlZ2FjeS10cnVuaworMjE0NDYgYzc2ZGFkMDY0NjFiODg4NDAyMDcxMDNhZmIzZGQ4N2E3MmVhNTI5MCBsZWdhY3ktdHJ1bmsKKzIxNDQ3IGZiZTBkZWQ1ZTRjMWJmMDI5MWU0N2RiMzljMjRjMjUzY2Q0N2IxOWEgcmVsZWFzZTIxLW1haW50CisyMTQ0OCBmYjk2YTc4ZTcyYWM2ZjU0ODdkMjgzYzY1M2I0NTczMjdiOGVkOTU0IGRlc2NyLWJyYW5jaAorMjE0NDkgNzY0NDkyYThmNmE3NTkzNzNlNmFiZTEzNGM1YzllMTU1YTIwNzg3YyBkZXNjci1icmFuY2gKKzIxNDUwIGUzZWFjMjFlMWQzMDRiYzM3NmMzNzFkNDlmZTZlMzExNjhiNjc1ZGUgZGVzY3ItYnJhbmNoCisyMTQ1MSA5ZDZkMTExNmJmMmNjZThjNDMyOWQ5MDlhZTU4NjZiZDRhYmYxN2FiIGRlc2NyLWJyYW5jaAorMjE0NTIgMTY5NGFiODdmMWQ3YzMzMzk1ZTk5M2FiZGJhZWIyNjJiODQ3MjE1YyBkZXNjci1icmFuY2gKKzIxNDUzIGYzOTllNmJjNTBhZmQ1ZjNkZTQyMjRlMTgxZDUzZDc0ZjRhNDU2MTAgZGVzY3ItYnJhbmNoCisyMTQ1NCAwMWI5MjBlYTUyZjE2ZmRlZDQ1NzkwNzViNTljNzZmODc2ZmExN2Y5IGRlc2NyLWJyYW5jaAorMjE0NTUgMmUzMTY2NWJiZGMyNTUzMTQ4OWUwNjNiNTVjOWIyYTY5Y2M5MDA0MCBkZXNjci1icmFuY2gKKzIxNDU2IGJmZWQyMTIzYjE0ZDdjNDUwNjc5NmUwY2IyOTgzMTJlZmQ4NzM5OTAgZGVzY3ItYnJhbmNoCisyMTQ1NyAwYmQ2N2M4YTk2OWUwNTE4ZGE5ODk0YzI3ZmEwZGMwZjI4YjYzOTAzIGxlZ2FjeS10cnVuaworMjE0NTggYjYxZjNiNmNlMWZmOTBkMjQzYzg2ZWIxM2Y3MjRkZDQ2NDU0MjAzNyBsZWdhY3ktdHJ1bmsKKzIxNDU5IDNiMjk1Y2UyNzA1ZjY3YWM2ZjEyYjU0YWMyZGQ2MTJlYzFhNjc5MTEgbGVnYWN5LXRydW5rCisyMTQ2MCBlMTAwYzA1ZDQ0NGVlOTAxNjVjYzlkM2NmMDliYWVkM2U5MGZlMTQ0IGRlc2NyLWJyYW5jaAorMjE0NjEgMjRhMGY4NGFkNzQ2NWU3YjIxMzBjZWYzMjRiNDBkZGI1N2IxMjA1YSBkZXNjci1icmFuY2gKKzIxNDYyIDMzOGFhYTE0YzRlNWFlZWJlMzFhN2ZhZjg4MzZmYTE0OWMwZThkYWUgZGVzY3ItYnJhbmNoCisyMTQ2MyBiMjFlNzBjNmQwOWQ0YTMwMzdmNTkyNThkZmU1MDhhODE5ZWZmZWUxIGRlc2NyLWJyYW5jaAorMjE0NjQgNjMwYzg2ZDMzMzBiZDQ5N2NhNjJlNDdlYjVmMDc5N2Y2MmY5NzE3OSBsZWdhY3ktdHJ1bmsKKzIxNDY1IGJhZjA0Y2RmNjVhMzAwZGU2YTQ0NjNlMmUyZGJhMDExNjExYjFlYjcgbGVnYWN5LXRydW5rCisyMTQ2NyBmZGMzYjE2MjE1Yzc1ZjMyZGEyZDA3M2RlMmIyOWZhN2IxYjViNzc4IHJlbGVhc2UyMS1tYWludAorMjE0NjggZjY5MjVhZDJkMTkxMWIzOGU4NzI3ZTkyM2IwZDQzNWI3MjRlMTczMiBsZWdhY3ktdHJ1bmsKKzIxNDY5IDQwZDE5ZjkwN2UxMjAxNTQ2MDA4ZTk1OTlkMjIyNTMwODZmMDVhNTEgbGVnYWN5LXRydW5rCisyMTQ3MCBkMWM2MGIwNzIxN2Y4YzYyZGY2NDhhNWRhNjFmY2RjMzE1NjZmOGEyIGxlZ2FjeS10cnVuaworMjE0NzEgZGM3NDgyM2I0OWVhNTcwZGVjNGQ5OWFmZDZhMjdhMWQyMmY4MzljNyBsZWdhY3ktdHJ1bmsKKzIxNDcyIGY2YjNhN2E5MGQ4M2ZjMGJhMDI0ZTAzYTBjMWIzZDUzZmI5YmEyMGUgbGVnYWN5LXRydW5rCisyMTQ3MyAwODAxMDA2NDczOTZjOGQwMzRmYzZlMzA2ZDc3ZjQ4ZTBjYjU1MWJkIGxlZ2FjeS10cnVuaworMjE0NzQgOTVlMzk0N2NhM2NlYTE5NDUwODc4ZmQ4YjVkNzVkODY2ZDQ0MTVkYyBsZWdhY3ktdHJ1bmsKKzIxNDc1IDgzNDc5MjUyMzA5NDg5MTIyZjhlODkwMjk5NWY0ZTlhNmNkZWI1ZDMgbGVnYWN5LXRydW5rCisyMTQ3NiA4Y2RmZjU0NWNiZGU1MGUyOTU2ZmYwZTFmNjZkMzU2ZGEzMTVlMTg2IGxlZ2FjeS10cnVuaworMjE0NzcgOWM2YThkY2Q3MjJkNTU1MzEwNmFhYWM5ZjU3N2M3OWU5YmUyZDJhMCBsZWdhY3ktdHJ1bmsKKzIxNDc4IDA2MzMyYjNjNDMzNWQ0MzMwMGIyZDQ0MmUyZTcxNzIwYTNmY2NmZjMgbGVnYWN5LXRydW5rCisyMTQ3OSA2MTM1YzEyZTg0NDg2NzJiMTNkYzRiYzhmNGI4YjBmZTNkMzM1NmI1IGxlZ2FjeS10cnVuaworMjE0ODAgMWUwMmUyMDE0ZTM2YTQwOWQ0NjU2Y2NiY2U3ZGM1ZWQ1ZWFmOGQwZCBsZWdhY3ktdHJ1bmsKKzIxNDgxIGFhZGQ5OTgzMDUzMWFmNTA2NTM4YTFkOWUwOThhNTM4NTBhOTMwODAgbGVnYWN5LXRydW5rCisyMTQ4MiA3NGIzYzRlM2Y0ODYxMTBhNDhhYTNhMWE4N2IzMmMzMWE3NTAxODc2IGxlZ2FjeS10cnVuaworMjE0ODMgZjgwZjZlOTIyOGRlNmRlNDNmMDBhOWRkNmU2OGM2NGM2NjUyMzZkMSBsZWdhY3ktdHJ1bmsKKzIxNDg0IDExNjUzMjE0MWFkZWUzODA0Mzg0Mzg4MDQ4MTU3NWZmMWZkZjkzMDIgbGVnYWN5LXRydW5rCisyMTQ4NSAxZDBkM2U2YTMyMDFhMDEzNjc1ZjVkNGMyZDQxN2YxZTNlODE1NmMzIGxlZ2FjeS10cnVuaworMjE0ODYgNzI2ZTVmMmNkMzZlZDBkN2RlYmE4MzkwZThlOTQ2OWQ4YzQ3OGNmNyBkZXNjci1icmFuY2gKKzIxNDg3IDdkZTVjMzc2MjMyY2I0YTM4MDY2MTk3Y2M1MDM5ZWMzMWM1Y2I2NzUgbGVnYWN5LXRydW5rCisyMTQ4OCA4MjRkNjExMTNhNzEyMjBjYzkzM2NmMmY4NWU4NDNkNTU4M2U4MzczIGxlZ2FjeS10cnVuaworMjE0ODkgYzg2NjI1NDNjYTZhNjg1ZDQxNjdlOGRjN2NkYzNkMDAyZGZlYzM2MSByZWxlYXNlMjEtbWFpbnQKKzIxNDkwIGNhZGMxODk0MmEzNDQ1NzkxMWZlZDYzYmY4ODM2OTliNjM3OGFhNzcgbGVnYWN5LXRydW5rCisyMTQ5MSA3ZjgzZWUzNzk3YTI2NDY2ZGZmNGM5OTNmNTVmMDc4NTNjMTA4OWY5IGxlZ2FjeS10cnVuaworMjE0OTIgN2IwM2MxNTA3NTRhMDlkNDJmYzljYTVmODYwM2QxY2Y0MjE0YTMxZiBsZWdhY3ktdHJ1bmsKKzIxNDk0IGFmZGE1ZmZmNTAyNzFiZDQyYzRjMDZjZjE5YWQ1NWIyM2MyYTU5MzIgcmVsZWFzZTIxLW1haW50CisyMTQ5NSA4MmY5NTI0Y2M4NDQxMmFhYjQxMzI0MDc4NzU2MDU5YzIwMDE4NWM4IGRlc2NyLWJyYW5jaAorMjE0OTYgYjRhZjA5MWUzMWM0YTQ2MTczZjRjZjQ3MjI5NDNmNTllOTdiMGQ5NiBkZXNjci1icmFuY2gKKzIxNDk3IDJlNmZiNmU2NDI4ZmEwOTdkY2Y1ZTJiNjhiNTk5OTljMDk4YjA3YTQgZGVzY3ItYnJhbmNoCisyMTQ5OCBkOTRmOGIzMjEzZThjZGZlZGU1OTUwNTMwZmIwNjQxMWRjNGY3Y2Y5IGRlc2NyLWJyYW5jaAorMjE0OTkgYTQ1Nzc2MjcwYzhlMTFhY2M4MjhhODY0ZDk5ZWM5MjMwY2RmYmFiMyBkZXNjci1icmFuY2gKKzIxNTAwIDIzMjA4ZjMwMjdmNjgzMWEzY2I5NDgzZWFkMTg4MWI5YTg4ZDM2YTIgZGVzY3ItYnJhbmNoCisyMTUwMSBhMzE4OTFjYmFkNDQyN2I0ODcyYzgyYWNjMTE2MjRhZTAwMDBhNGI4IGRlc2NyLWJyYW5jaAorMjE1MDIgNjliODhkMzRlNzIyZGU5ZjI4Njc4MDFhMTc2YzdlMjQyZjY2MzY5MCBkZXNjci1icmFuY2gKKzIxNTAzIDQ3YmIwNjAyM2U4MDU5M2E5NDc4OGNkMmM3MjQ1YzU2MWViNjUyMWUgbGVnYWN5LXRydW5rCisyMTUwNCBmNDAzMmJlZDQ3MGYzOGYyZGZmMDgyMjBjMDNlMWJkNjhiZGY4NWU3IGRlc2NyLWJyYW5jaAorMjE1MDUgYzVlNDY2MzRjN2Q5NzhlNDcxYmU4N2U0YTg1MmIxNmNlMTZiMGNkNiBkZXNjci1icmFuY2gKKzIxNTA2IDUzZDRlNzJiYjQ0M2IwYjM1OGI4MTA2YzUyNGI4N2Y1MjM2NjdlMDkgZGVzY3ItYnJhbmNoCisyMTUwNyBmZjgxZTczNWUxODRmZTM1MWVkZjlmNzNkZmFkZDI2MjQ1ZjkyZWI3IGRlc2NyLWJyYW5jaAorMjE1MDggMjM5Mjc2NjRjNzI5NWU4NmVmNjNhYTNlMzM3OGNhZDAyMmM1YjJhNyBkZXNjci1icmFuY2gKKzIxNTA5IGViODBiNDljN2IxNWZmYzZkNmRhNWY4NzExNGFmYTJiMGQwMGUyMzggZGVzY3ItYnJhbmNoCisyMTUxMCBlNmRlZmUyNGNlODU1NjVkOGQwMDhmMTllMDExMDc0YTM0NjcwOTBlIGxlZ2FjeS10cnVuaworMjE1MTEgYjY4OTQwY2YyMDE3MjEwNGI4YTNjYjA2YzI1N2IwNmE2NTkzYjdhMCByZWxlYXNlMjEtbWFpbnQKKzIxNTEyIDExNjVkM2Y3ZWFmM2NhNWZkMDRlN2RkYTI2OGZmMWNlZGVlMzUzMGQgbGVnYWN5LXRydW5rCisyMTUxMyA5NTEyNzQ3YWZlOWU5NDJhNzljNDQ5Y2NjNzE2YTk4MmY2NDBmOGI3IHJlbGVhc2UyMS1tYWludAorMjE1MTQgNTY4MmY5NmYyNWRlMjQzODlhMWE5ZGU4MGY2YTRhYzdkYmZkNmQ0MSBsZWdhY3ktdHJ1bmsKKzIxNTE1IDI4MzZiMjY4NjE4MDZjNjk1NTU0YTBhOTQwZDJhZWUzOThiNzI0OTAgbGVnYWN5LXRydW5rCisyMTUxNiBmYzE2ODBmYzlkMjM2ODljYzI0MTNlZWQ3OGUzYTdmOWNjYWFlODk5IHJlbGVhc2UyMS1tYWludAorMjE1MTggYmNiYmM1MWYwYmIzZDk2Y2JhM2M2NWM1NDVmYTJjM2RhYWY1ZmQyOSBkZXNjci1icmFuY2gKKzIxNTE5IGIwZjk4NDc1OTE3ZDRlNWUxMDA0YWI1YzI1YjQ5YjE1N2I4NmYwMDUgZGVzY3ItYnJhbmNoCisyMTUyMCAzN2Q5ZDJhN2NhNTBkZmFiYzljMGIyODI1OWExZTc4MzQwYWUxMWJjIGRlc2NyLWJyYW5jaAorMjE1MjEgZWViMmU3N2M1YmFkMmFhMmQ2YzlkMGFlMDE1ZDk5NTYzNjZhMzYxNCBsZWdhY3ktdHJ1bmsKKzIxNTIyIDdhYjA5ZmJiODY5YTBlNWM3OWZmMzhkNGRlNDc4ZWM2MTZhMTFjNWYgZGVzY3ItYnJhbmNoCisyMTUyMyBhMjliZWY0NTdlZDhmMDJiY2NjNTA1NDY1MDg4NDA4N2UyYTliMGYxIGxlZ2FjeS10cnVuaworMjE1MjQgYzFlNDEzZWY5ODE3NzY1MTRjZDc2ZDZlZmYyYThlNDAzOTE3ZjA5MiBsZWdhY3ktdHJ1bmsKKzIxNTI1IGRmY2MwMzhjMmQ0Y2E2OTk4ZmUxNGM0MzhiMDcwOTFlOGRlMWU2YzUgbGVnYWN5LXRydW5rCisyMTUyNiBkODQxNGY1MWQ0ZjU4ZWY3OWMzNmJkY2MzNDE3NjZjYTkzZDc2NjM0IGxlZ2FjeS10cnVuaworMjE1MjcgMzNiNDM1N2FlYmI4YzNiMWIyYmIzM2M5NjM3ZmRjMzIwZmMyNDk2YSBsZWdhY3ktdHJ1bmsKKzIxNTI4IDRlNWU5NzdiZDNlMmE3NDBmMjU0MzE5NmZjZjRlYmI0ZDdjYzc5MTMgbGVnYWN5LXRydW5rCisyMTUyOSAwOTIzNWJlNzQ2NDkzNzUxODYxMTFiNjMwMDg0Y2E2ZmUzZjAzOTlkIGxlZ2FjeS10cnVuaworMjE1MzAgZDU2ZWNhZTU3ZTBjMjUyOTNkOWU2Njc5NmQxZDlhYmNkOTU5MTIwYiBsZWdhY3ktdHJ1bmsKKzIxNTMxIGI2Y2ViYmViMDdkMWIyOTIyNGVhNmJlNDA2ZTJlZGY2ODNhNGFkYmEgbGVnYWN5LXRydW5rCisyMTUzMiBmODNiZGQwNzUzNjFiMWY5OGEyNTM0MTIwZjQ0MjgwNjM1ODMwNDVhIGRlc2NyLWJyYW5jaAorMjE1MzMgOWYwMTNkMTNhMjhiMWRhZjE4NWYyOWVjNWMxYjVhOWJmYmRlZmVkYiBkZXNjci1icmFuY2gKKzIxNTM0IGI0NDExZGUwMTY2MmY3ZjkyNDU4ZjNmNDhiZDQ1Mjk5NjAxZjhlYWQgbGVnYWN5LXRydW5rCisyMTUzNSA3NjM2MGFmZGI5NzAyN2YwM2ZhZjY2OTcyZTM1NjkwNmM4MjYwYjJhIGRlc2NyLWJyYW5jaAorMjE1MzYgZmExZTg4ZWIxOTk0YTZiZGQyYjAxZDBiZDkxY2M1MjE3ZWE2YjQ0OCBkZXNjci1icmFuY2gKKzIxNTM3IDE0MTdjZjQ3MGFlOWU1ZGY0NzE4OWU1NjY4ZTJhN2I4MWUyMDAxOGUgZGVzY3ItYnJhbmNoCisyMTUzOCBkMmViMjM2MzZjYzYyN2VjOTk1NTJkZjQ4MGVkOTNkNjM3ZDNiZjY1IGRlc2NyLWJyYW5jaAorMjE1MzkgNDY4MjVlZDIzNTI4YTJjM2JhMDBiZmRlOTIyZWM3OThjZDVhMTEyMCBsZWdhY3ktdHJ1bmsKKzIxNTQwIGYzMTVmNTY3NGI5NWY2MmJhNjMyOTI2YTg5MmQwZWYxYTI3OTUxZDYgbGVnYWN5LXRydW5rCisyMTU0MSBhOTczMzQ5NzFhODE4NmI0YTc5YzQ0ODA4NmQxNjBhZTE4M2JmYThlIGxlZ2FjeS10cnVuaworMjE1NDIgMmZkMTM3N2VjNDhjMGQyYjFhNmIzYzEzMGI3OTM1OGFjOTczN2YxMSBsZWdhY3ktdHJ1bmsKKzIxNTQzIGE4M2ZmNzczOTk5MjlmNWNmZmNkYWIxM2VmMGJkOWZmNzcxZTY4MDEgbGVnYWN5LXRydW5rCisyMTU0NCA2YTVlZjE5OTQxNTM2ZTFiZDRkMjk1NTllM2RjNWU0ZTRiMWI5MmUyIGxlZ2FjeS10cnVuaworMjE1NDUgOTljOGI1YjBjODk2Mzg0NThhYjdiYjY1ODgzMzVmY2ZjODc2OWFhNSBsZWdhY3ktdHJ1bmsKKzIxNTQ2IDljMzU0ZTY5YTQ4OWU4NTkxYmJjNmU1MjFhYTA4ZmYyM2Q5ZTQ5YzAgbGVnYWN5LXRydW5rCisyMTU0NyAwYjQwNjFlZWM2OGUwMzk4YzBiYmMzZjViZGI1ZjdjMThjOGVjZDU1IGxlZ2FjeS10cnVuaworMjE1NDggNDU5MTczMjM3OTE1MDNkOGNhNzY5NzA2YWEwNGU1NWQ4ZDRmNDkxNyBsZWdhY3ktdHJ1bmsKKzIxNTQ5IDcxZjE2MWU4YTFkNzE2ODY3ZThkODExZTI3ZDFhMWM4NjVhZWY2OTAgbGVnYWN5LXRydW5rCisyMTU1MCA0MGUwZjVhMzMyZTkwYTY2YWUwNDBkZGFjYmRiNGYxYzQ4YjkzMmVkIGRlc2NyLWJyYW5jaAorMjE1NTEgZDkwNTJjZDllMGE3NjNlMWMxOTc0NmE5MzhhYWVlY2JiM2QxMWI1NSBkZXNjci1icmFuY2gKKzIxNTUyIGYwNGExZGRkNzQxYTM0ODY1NGViNzAzOTcyY2JlMWU5NzNmZTNjZTAgZGVzY3ItYnJhbmNoCisyMTU1MyBiYThhNTYyYmUzODM1OGNmNWQ0ZTkxMjMwNGNkZTBiOWQ4NjZiNDE2IGRlc2NyLWJyYW5jaAorMjE1NTQgNmE1ZmUxYTk0M2NjZDVjMTVkNTVkZWUwMGY2ZTc3NWVkYWJmNzEwNCBkZXNjci1icmFuY2gKKzIxNTU1IGVhY2I3OGQ5Y2I4ZWRiMGNjZjdhYmZlNDU5YTkwOTQyMzI2MmJjNWYgZGVzY3ItYnJhbmNoCisyMTU1NiA2NjM3MDE2ZGY2ZTI4ZjY2Zjk0MjZmMWVhYzIwN2ZlNTIyM2M5MjQwIGRlc2NyLWJyYW5jaAorMjE1NTcgMTczYmM3MjRkMTEwZTI5ODAzNjFmM2RmODE5OGM2NDQwOGVkMjY5YSBkZXNjci1icmFuY2gKKzIxNTU4IDNkYWUyNTFiNWRmNWEzMjc1ZGNhZjc2MTU5OWJhMTFkMmE4ZDIzNDkgZGVzY3ItYnJhbmNoCisyMTU1OSA1Yzk3NjkwMTY3M2U1ZDA2ZjQyZDU0OWFkNjE0MjA0MWYxNjNjNmUzIGxlZ2FjeS10cnVuaworMjE1NjAgZjdkZTllMDQ4N2NmMTRjMmUxNDQ2MjQ1NGUxZGI0YjAxZjA2YjZiMCBkZXNjci1icmFuY2gKKzIxNTYxIDg4ZWU5NjY1ZGUwNTQzZGJmZjYzZWIzMDY1Y2UxNjUzNzA0YTdhYjkgZGVzY3ItYnJhbmNoCisyMTU2MiBmN2YwNzZiZmNhZTljOGMyZDI4ZTM5ZjZkNzIwZWNiOTEyNzk1MmJlIGxlZ2FjeS10cnVuaworMjE1NjMgYjY2YTY1MmUzYzNmZTdiOGE3MWYwM2VkNDcyYTUxMjNjZGMxZmRlYiBkZXNjci1icmFuY2gKKzIxNTY0IGFhNzZjMTdhNWYwOGNkOTk5Zjg4OTE4OGFiODdjN2RhMTA2MGNkYmQgZGVzY3ItYnJhbmNoCisyMTU2NSBkZTg1NjBjNjhjNmZkY2Q2NjcxYTU2NDhmZDllYzllMGI5ZmI1NDRkIGRlc2NyLWJyYW5jaAorMjE1NjYgZThjNjYxZGYzMDM4MTRhZWQ5Y2NmNjgzNzUxNmNjOGJhZTU2NTczYSBkZXNjci1icmFuY2gKKzIxNTY3IGMxNWFjZjJlMDExMDhjYWQzYmYyMzYzZmE1MmMzZDUzYzY2ZDVlMmQgZGVzY3ItYnJhbmNoCisyMTU2OCBlYjA0YTA1NjRhODE4NjA3YjEwOWQ3NGIwOGY0NzQ0YTIzNjhjMmRmIGxlZ2FjeS10cnVuaworMjE1NjkgOTY1MzI3MmYwMzZmNDBhMzM2ODFlZWUxNzUyNjRkZDgxMWFkNWZkOSBsZWdhY3ktdHJ1bmsKKzIxNTcwIDY4NGIwMDk5MDMyZDQ2MmM4YTJhM2FlOWI2MzMzNTYwZWEwMTU5YWMgcmVsZWFzZTIxLW1haW50CisyMTU3MSAwNWM0OTM0NmI2OGI4ZGY2ZTkwNjJhYjI5ZGUxNDJiY2E0ZWY4NzJiIGxlZ2FjeS10cnVuaworMjE1NzIgMzExMTlkMGExOGU2ZmMyOTNmMDk4ZDlmZjEzODdkNjhkYjBlYzA5NCBsZWdhY3ktdHJ1bmsKKzIxNTczIDEwMzAyODcyNTI1M2IzODdkNzNlZWI0ZTI5NTBlZWQyNjlhNmEyYWYgbGVnYWN5LXRydW5rCisyMTU3NCA1MWM1MDFjNjg2MDhjNTNhZjA2N2Q5YmIxZWM2YzNhZGJjMzFlOWQ1IGRlc2NyLWJyYW5jaAorMjE1NzUgNjVjOTI4N2FiZjg1YmE4OGUwMDk3ZTZmMjhkZmVhYjhmMDliOGIzNCBsZWdhY3ktdHJ1bmsKKzIxNTc2IGVlN2E4NmY4NzM4MzVmYzU3YjZiZDEzNzIxNjAyM2Q0MTdhYjg5ZmQgZGVzY3ItYnJhbmNoCisyMTU3NyBhNGZiYzJmMDEzOWE4MmQ3ZWQ3YjJkNTY4ZTZhOGFhM2Q2NjE5NGI0IGxlZ2FjeS10cnVuaworMjE1NzggOWMwNGUyM2Y4ZDQzYjM5MTg2ZTIzNDRhNWRkMjdkNjE2MGU0NWJlYiBsZWdhY3ktdHJ1bmsKKzIxNTc5IGQ0NWFiNzE0NmIzN2NmODc2OGQ0MGZkNTk3ZWRiNjlkOTFiZDU3ZGUgbGVnYWN5LXRydW5rCisyMTU4MCA2ZGE4NjIzMzlhMGU5OWRiNWQ5N2U1ZDM2MTQzYWI4ZTM1YzY3NzkzIHJlbGVhc2UyMS1tYWludAorMjE1ODEgMjkzM2FlNDkyMTZmMjYzODJjMmFmNTAyN2I5ZGJmNmQ0ZTYyNDkyZiBsZWdhY3ktdHJ1bmsKKzIxNTgyIGNhMmVhNzVkZjNmMjUyYjA3Mjg4NjEzNmEzM2JmYjg4NjU3OWIzNjIgbGVnYWN5LXRydW5rCisyMTU4MyA5NDZiODE2YWQ1Y2I4ZmRmODNkNzI1YmNiYzZjMjg3ZDJkNmYzOTliIHJlbGVhc2UyMS1tYWludAorMjE1ODQgOWFkNGRiOTdlMmQ5YjZlZDI5MTA5Mzc5MWVjYmNjOTQyNzgyNzY5YyBsZWdhY3ktdHJ1bmsKKzIxNTg1IGQ0ZmI5NDE1M2IzMDgyMDllNWY5YjBjNzE4OTg2ZmNlZjU0ZmM2ZDQgcmVsZWFzZTIxLW1haW50CisyMTU4NiBmYmNjZjE4YWE1N2JmZWIwYzNkN2ZlMGExN2U0ODQ5YzMwNTdhMmY1IHJlbGVhc2UyMS1tYWludAorMjE1ODcgYTc4ZjRiZDU5ZTEwYTBiM2VmM2QzZGUzMGRlZWM4NDA0MDM2OWIzNCBkZXNjci1icmFuY2gKKzIxNTg4IGFiYzRhM2I3ZDE4ZTAxYzc5MWIxOGFmZjAxZDAwN2I5MDQ0YTJjZGYgZGVzY3ItYnJhbmNoCisyMTU4OSAyZjFiNGNkY2JiMDZjNDQyMjI5YmI2MmZlZGE3MzQ2ODU5NWE1OGU5IGxlZ2FjeS10cnVuaworMjE1OTAgZTc4YTUxMjY4YzgxZGZjNzU3MDdmYmI3MDRhMjQ5OTI3MDc3YzhkNiBsZWdhY3ktdHJ1bmsKKzIxNTkxIDhjMzg0NDlkZjc0NjA5NDExYzEzNGE0YmRiYmI0MDc1YzNiZWNhMDkgZGVzY3ItYnJhbmNoCisyMTU5MiBmZWU1YjU3MTdkYmJiODkwZDRmOTRhZDdkYjBkYzNlZDliZjNjYjUyIGxlZ2FjeS10cnVuaworMjE1OTMgYzZkODY0NWQ0Yzg4NWZmZjk5YTAzMjg5YjZiOGU0ZmU4ZGFjNTYxOSBsZWdhY3ktdHJ1bmsKKzIxNTk0IDcwYWY0YTE3M2E5NTY0ZjA4ODA5ZTY5NjcyNzAyZmQ2ZTNhN2Y5Y2IgbGVnYWN5LXRydW5rCisyMTU5NSBjYjJlYWY0NTczODZiNzg2OTAxNDQ0Nzg3ZTQ1MjdkNjA5MjBiNTg3IGxlZ2FjeS10cnVuaworMjE1OTYgNmI5MzFiZjZiZGY2N2Y5YjdlODg2OTM4N2MwZjRlOTY2ZDkwYTg2MiBsZWdhY3ktdHJ1bmsKKzIxNTk3IGNmODE0OWNlZGNjZDIxYWYyZWY2YzQyNjEyODZjNmU0ZGNiZGVjZmIgbGVnYWN5LXRydW5rCisyMTU5OCAwMDkzNGQ2MmU3ODE2NzIzMmRjMzVhOGI2OTUxMmZkZTZmNTVkZWVhIGxlZ2FjeS10cnVuaworMjE1OTkgM2RiOTIxZjNlZGUwYmE1NWM4YjYxOTZkNTI3NGY0OWNiYjE3ZjBhZSBsZWdhY3ktdHJ1bmsKKzIxNjAwIGVkMGYwZDk2NzUwY2RlNjU2NjQ5NGU1NmFjODE4NDQ1MDFiN2FkMDEgbGVnYWN5LXRydW5rCisyMTYwMSA5MzliYmM1MWNkMjE5M2QyZGMyMWQzNDU0NTY3ODg5MzIyNzczNGUyIGxlZ2FjeS10cnVuaworMjE2MDIgYzFhNWU1MTc1OTA3YjEyNjFkNjRiOTZhNWMyYmNkM2EzNmUwOGQ0MyBsZWdhY3ktdHJ1bmsKKzIxNjAzIGNkYTE2MzgzYmM2YmFhMmViZDc1ZTRlOTRiZTVjNzU2OTc4Y2M3YzIgZGVzY3ItYnJhbmNoCisyMTYwNCAzYjEzYjI2OTViN2E2Yjc2MDNhMmJhNGRkN2ZkZThhY2NjYWZmM2U3IGRlc2NyLWJyYW5jaAorMjE2MDUgYjczZTFmNDIyZWE4YmZhYTNiMjRjNjI3Y2FkZTc2MDJiN2RkMjNjMyBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjE2MDYgNDA0YzYwZTAwMzQ0NzA2NzNiOTEyY2UxMmNjYzBkMTBiMGJmMmY5ZiBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjE2MDggOGQ2YjRhYzA0NDBiNGMwYzIxNzdlYWZjMmRiMGFkYTRjMjMxZjg4OSBsZWdhY3ktdHJ1bmsKKzIxNjA5IGZlZWEzZDJmMzU2M2YwYmZhZjU4NmUxYjdhZjFhYzQwMDNhMDI4ZTMgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjEwIDExZDllNDZmMTQ3MDUxNzE5ZjM4OGE3YmMyYzIyY2I2YWIzYjFhOTAgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjEyIDhiOTNkMDRmYTdhOWI5ZjUwYTU4NmYwYThjYWFiYTdhMDlmNzA4YzkgbGVnYWN5LXRydW5rCisyMTYxMyA5Zjc0OTY1ZTBmMzU4NTVjODYwYzhmMTg0ZWNiMGJlZThkMDUyNjI1IGxlZ2FjeS10cnVuaworMjE2MTQgMzRkNWU0OGMxZWQyNjI1N2M1YWRmNTc5OGI1ZDY4YTZhOTg2MGNhNiBsZWdhY3ktdHJ1bmsKKzIxNjE1IDZjNTAxZDg5MjAwMzBhOTJhZGQ5NmE0Y2Y3MjE0YjhhMTgwM2NkNTggcmVsZWFzZTIxLW1haW50CisyMTYxNiA0OThkN2RkOTlkYTQxZTkyNjYzODlmMWUzMTg2MTMyNTJkOWEwNWNiIHJlbGVhc2UyMS1tYWludAorMjE2MTcgOTlhZDZmZDI3OWU5YmY1YTYwOWExMGU1NGE4ZjE0MzhjMTQ2MzA0ZiByZWxlYXNlMjEtbWFpbnQKKzIxNjE4IGIxYTFkZTE4ZjkxZmJjZDA3NDY0NTgxOTgzNjgxOTNlYzE5MmU1YWMgcmVsZWFzZTIxLW1haW50CisyMTYxOSA4N2VlMWMzZmQwYzgyMjc1NTg1ZTdiMDdhN2E0ZjhhZDZmYjM5YzNjIHJlbGVhc2UyMS1tYWludAorMjE2MjAgODJhMzQ5MzJlYTIyZDYyOWQxNGNlMmY4N2YzODcyNjZhNjIxY2I4NSByZWxlYXNlMjEtbWFpbnQKKzIxNjIxIGM5OTEyOWEwYTQ3ZDkwN2JiN2Q0ZjMyNWYwMDhkY2ZjZjc0NmI2OGIgcmVsZWFzZTIxLW1haW50CisyMTYyMiAwNGUyNWMwMTg0OWI0NGJiNDRmZTI5NDc0YjQ2Nzk1OTBjY2M4NTllIGxlZ2FjeS10cnVuaworMjE2MjMgYzM5N2Q0Y2Q4MzdkMjA2ZjVhMTBhMzFkOWMyZDNiYWNlMDA1YTU4ZSBsZWdhY3ktdHJ1bmsKKzIxNjI0IGE0ZDM1MDhhZWZjMGY5NThhOTkwMDhjYzA5NDQxYTA5MTMzZGNmZDIgbGVnYWN5LXRydW5rCisyMTYyNSBkZmI3NzQyMmM2MDc0Mjk2NzAyMDc0MWIyZDMwMTI0NzMyZmI1MjZkIHJlbGVhc2UyMS1tYWludAorMjE2MjYgMTA2Yzk5OTVkYjY4YWU1YzhmNzY5ODMwYzcyNjFiMDQ4NzE0NzlhOSBsZWdhY3ktdHJ1bmsKKzIxNjI3IDc5NWFhNDU5MDIxMTBhOTk4NjFkNzNmYjg3MzZhYmZhMjA2YWViZDAgbGVnYWN5LXRydW5rCisyMTYyOCAyZTJlZjQ3MTE0Zjc3MjQwZDA2OGIxYzM3M2UzNjgyYTY1ZjM3ZjQ4IHJlbGVhc2UyMS1tYWludAorMjE2MjkgMmZiYjI1YzMwNzJlYjZkNDdlNjY4MTEzNDk2MDE3ZWQ4MTQ3M2U1YyBsZWdhY3ktdHJ1bmsKKzIxNjMwIGUwNjExNTVmOTllOGViMDc3MDQzZjIwNDA5Y2QwYTljOWIzODBjZjggbGVnYWN5LXRydW5rCisyMTYzMSA5OGJkZTZlNWU3NDMyZGM3ZDc3NjdlZjc0Y2U5YjI3OTg5OTRhNTFhIHJlbGVhc2UyMS1tYWludAorMjE2MzIgMjZmYzkwNWRkYzEyZTU1YjdiNzgxY2RiNDNmNjA0MzMxOTFjZmZkZiBsZWdhY3ktdHJ1bmsKKzIxNjMzIDZmOGEyNDAyZjZmYTRiM2Y5MWU1MGRlYzMxZjQ0Nzc1NjFkNGEwOWMgbGVnYWN5LXRydW5rCisyMTYzNCA5OTc3Y2YyMDY1MzJiMTQ2ZjMxOTI3MmFhODIzMGJiOWNkZDRiOGYxIGxlZ2FjeS10cnVuaworMjE2MzUgNGMzM2RjMzQ1OTAyYTkxNTdmZjAzOTQxODZhN2I1NmU1ZTNjZmQ3NCBsZWdhY3ktdHJ1bmsKKzIxNjM2IGM3YTI0ZDNiMzU5NzM5Njk3Mjk3YmYwZDUxZTkzY2QxMzQzZTRmYWEgbGVnYWN5LXRydW5rCisyMTYzNyA0YjdmZDNhZTFkOTMwYjkyMjU4ZTRmOTdjZjA2ZTg5MjFiYjFmZTQ1IGxlZ2FjeS10cnVuaworMjE2MzggZjQwOTJhNWY3YmJjNzE0MGIxZDQwOTcxNjNkMjA4NmM5OGNlODYyYSBsZWdhY3ktdHJ1bmsKKzIxNjM5IDA2OWI4MTUxOWJlNzg1MGJiNDBhYTNjZTY0ZGI0M2IzMmRlNDE2Y2EgbGVnYWN5LXRydW5rCisyMTY0MCA1ODQ2YzI1OGI4ODk2MzY5NmQ4ZTU1ZWM4ZmJhYjgzNDc5N2RjNmRjIGxlZ2FjeS10cnVuaworMjE2NDEgYzRmNzU4NTc1MDJhNmQzZjY3MThmMDc2YWJmNjM5ZDA1YTY4N2ZhZSBsZWdhY3ktdHJ1bmsKKzIxNjQyIGJhMWYzZGUxMDA4NTQzNGYxMWVmOTcxMTczNWYxZTA1YjVjODhlNDUgbGVnYWN5LXRydW5rCisyMTY0MyA0Mjc0MWU2NzczMzg0MWYyOTNkOGJkYTQ4OTEwYjhmZGJlMjI4MTBlIGxlZ2FjeS10cnVuaworMjE2NDQgZWE3Yzc3ZmU1MGFlOTlkYWE0ZDA1ZTkwMTliZmZhODcyYzY5Mzg3NSBsZWdhY3ktdHJ1bmsKKzIxNjQ1IDJiYjc1YTFmMzE4NDE5Mjg1Y2Q4YzI4Nzg5ZDlkNGU3MDk2NzAyNDggbGVnYWN5LXRydW5rCisyMTY0NiBlNmVjZDhhMDdlYTg4ZjI3YmY1NTA0OGFlNmJjMjk1MDg4NTUxNGE5IGxlZ2FjeS10cnVuaworMjE2NDcgNDZkZDg3M2QyNmY2NDRmNDk4MzFjNmY4NGY0Y2I1YTdhODZhMzJhOSBsZWdhY3ktdHJ1bmsKKzIxNjQ4IDIwMmRkZGI3Yzk3NDc0Y2E3MDZmNjc2NjRjZjE4YzRiN2QyYTU1ZWQgbGVnYWN5LXRydW5rCisyMTY0OSA4NjI2MTcxYjJjNzI1Mjg1NTJjMTYwYWU2YzYzNTk1MGM1Njk1ZDIxIHJlbGVhc2UyMS1tYWludAorMjE2NTAgY2MyNDg2NzU3YzhiZjNlMjJiYjk0YzZiMzM1MmJjMDI3ZmY2M2JkYyByZWxlYXNlMjEtbWFpbnQKKzIxNjUxIGM1YjUwNTUyZDU2ZDFmNjI3M2MzMWM2M2M2YmIxM2Q1MDhhNmIyNTkgcmVsZWFzZTIxLW1haW50CisyMTY1MiAzMmNiMjk1ZDA4NjJjMjJhMWIwN2U4MTQ1OTE3NmVhMGY3ZTk3MjU4IGxlZ2FjeS10cnVuaworMjE2NTMgODZiMWM4MjE2MGVhOThkNTdhMGY5ZjQxYTJkMGJiODllOGJiMjE2YyBsZWdhY3ktdHJ1bmsKKzIxNjU0IDhkZTkxMDQyMTczZjdmNGUxMDFmYTQ4MjdkYzA5MmFmOGFiNzRlZWIgbGVnYWN5LXRydW5rCisyMTY1NSAyNTRhNGE5YWYwZmJjNmU4NTgwZTQ5YmEyYzViNzIxYjVkYWQxMzNjIGxlZ2FjeS10cnVuaworMjE2NTYgZjRlYTIxYTBmOTU0MmQzN2ZkMzhhNGFjNTY2Mzc2MzRmM2QwZDU3MSBsZWdhY3ktdHJ1bmsKKzIxNjU3IGQyMTE3MDlmMjVmMWVlY2I0MTdhYzUyMTkxMGVlMTgwYmMyMzg2NGMgbGVnYWN5LXRydW5rCisyMTY1OCBiMmJmODhlMDZmYzU5OTdiNWZkZGY2MmQ0MTA5YzNhNGMxZmY4MTM4IGxlZ2FjeS10cnVuaworMjE2NTkgNjVhZmFjODRkNGY3MzIzNmVjYTEzZTc4MzY0MDRlODcxNzY4YzRiYyBsZWdhY3ktdHJ1bmsKKzIxNjYwIDczMjhjOGNkOTE3ZDllZjYwZWViMTg2ZDBhYzNhZmMwOGFmOTI5MGEgcmVsZWFzZTIxLW1haW50CisyMTY2MSBhNTljYTg0NDZmOTJiNmVkYjc3YTE5YzMxYjM5OTI5NGE3OTZjOTgwIGxlZ2FjeS10cnVuaworMjE2NjIgNDg2MTM3Mzk1OTE3NmM1OGNkMjY3YTExYjQxMzc0OWM0ZDc2ZDQwMyByZWxlYXNlMjEtbWFpbnQKKzIxNjYzIGY3MmJjZWNkZDFmN2UyZmNiMWQxYTFjMjJiOTEyMDRkY2NlZDFjOGEgcmVsZWFzZTIxLW1haW50CisyMTY2NCBkOTdjODJjYmQ3NjY5MWNjYzAzNmJiMTVkYmE5NWNkNGU2Y2Y2NzUzIGxlZ2FjeS10cnVuaworMjE2NjUgZDUwMjY2YjVkYzQ4YzVhZTFjZjA2NDRkNTc5Yjk5MGE0NDUwZWEzNyBsZWdhY3ktdHJ1bmsKKzIxNjY2IGVhZTkyNzI5MDM1NzFhMjc3Y2IwOGRkNGI5YTQ3ODg3OWQ2YWZhMzAgbGVnYWN5LXRydW5rCisyMTY2NyBiMWQ2YWUzMjlkZDA1OGZkNWE1NjU1YjRlYjMzMzkyYzYxNGY2YzM3IGxlZ2FjeS10cnVuaworMjE2NjggZmQ5NDYxMzczY2FiMzAwOGI4MjkyYTU1MTM5Y2E1YmY0MzA3MTY4OCBsZWdhY3ktdHJ1bmsKKzIxNjY5IDIxYjViMmVhZWIzZDQxZTYyODIzYTEzM2U4NGE2MTZlOTE1YTNiM2EgbGVnYWN5LXRydW5rCisyMTY3MCAxZmJjZjU0OWMxYzQ1MzVmM2JlODAzYTE4NDRkODA2ODQwYzcyMjRmIGxlZ2FjeS10cnVuaworMjE2NzEgNjRmYTcyYTg0MzQ3NDkwMDM5MDVmODBkNWFjZTRiZjBhOGE4NzYwMSBsZWdhY3ktdHJ1bmsKKzIxNjcyIDIzZDhlYjI5ZTRmYTBmZmU2ODNmMmMwMWM4YTkxN2U0MTgyOTVkMTYgbGVnYWN5LXRydW5rCisyMTY3MyBlNGQ2YTczOTk5N2Q5NjFkMmQ0ODIwNmQzMDJkNjBjN2QxZjZmZDBmIGxlZ2FjeS10cnVuaworMjE2NzQgMzdlZTljZDU0YTExM2ZjYjI1MjUyYmMzMTc1YTQ0NzkyYzI3MjQzYyBsZWdhY3ktdHJ1bmsKKzIxNjc1IGUwNjRmNTI2YTZlZmU4MTkyYTJhY2MzYTlmOWRhYzUyNmExNmRlNzcgbGVnYWN5LXRydW5rCisyMTY3NiBmYzVhM2VjMDc0NWUxZDZiODdmNTkwYTA1NzFmY2I5NzA1NTlkZTk1IGxlZ2FjeS10cnVuaworMjE2NzcgZWM5YWEwZGM4YjczNjA2YTcxNmViMWVhMGY5YzMyNzAwNDUyNjFiZSBsZWdhY3ktdHJ1bmsKKzIxNjc4IGJmNTYyNDE4ZGZiODFlMGY2NmEzYTRiYWIwNTRjYTI0YmNiZGVlZWIgbGVnYWN5LXRydW5rCisyMTY3OSBjZDNiNGRkM2U0Y2ExOTE3OTRlZmViMzAzNTJhYTE0YmY2MDg1NzZmIGxlZ2FjeS10cnVuaworMjE2ODAgZWEyNmM5YjY2ZmJkOWQyZWFiMzUzZmRjYzM3ZGNjYWQwZmJlM2FmNiBsZWdhY3ktdHJ1bmsKKzIxNjgxIDBjNzAxMzUzODk5ODNjYzQ1YzU0MmExMzcyM2FhZWVlZjdmZjE0MTMgbGVnYWN5LXRydW5rCisyMTY4MiBiMjg3ZjI5MjdkYjM4YTNlNTFkMGRjMDVjODkxMTRlYTExNDk1ODk0IGxlZ2FjeS10cnVuaworMjE2ODMgM2ZjZjk4Y2E2YzRhMTQ2ZjVhZjdjOGZhMzA5ZDRhY2EyZjE3NmUyYiBsZWdhY3ktdHJ1bmsKKzIxNjg0IDkwNjBjMDZiZWRiYzQzMTg0NDRhYjIwYThhOTE5MzdjZWI2YWZhOWMgbGVnYWN5LXRydW5rCisyMTY4NSBjNDkzMDEzMWY1ZTNhYzcyNzVhNjdjNGQzNTI2MTljZjhhM2Y2YzQ0IGxlZ2FjeS10cnVuaworMjE2ODYgYzFlYzg3ZjEwNDRhNDljZDE3ODZlODBlOWVhYjBkYjUwZGE3YmJmNiBsZWdhY3ktdHJ1bmsKKzIxNjg3IDcwNDYxZjJkMjEwOThkMWM1MjkyODQzMDI2MGQ5ZTJmMzE5NDZkNTQgbGVnYWN5LXRydW5rCisyMTY4OCBlNjc1ZmY1NzQ4ZjA1ZjI3OWFjNDY5ZjQ0M2VjMTYyZDAwM2YzZDRlIHJlbGVhc2UyMS1tYWludAorMjE2ODggMjJiZWQyZGQxYjI4NjU2NGRlYTRkOWE2N2Q0ZWQ4MGRjMzIyNTE5MyByZWxlYXNlMjEtbWFpbnQKKzIxNjkwIDEzNzgzZTBhMzQyMzdkNTBkNTJhYTkyMGQwNzU1OWQwZWExMjUwYzEgcmVsZWFzZTIxLW1haW50CisyMTY5MSA2ZDRjOGEyOWJlNzA4N2Y5MDZlZTJmNDY5Yzg5NGE2NWFjZDU0YjFlIGxlZ2FjeS10cnVuaworMjE2OTIgMDQ3ZDdjNDgwNjhhZGQ3YTM1MDRkNDEyZDY3MmY1NGIzM2Y1YzQyMCBsZWdhY3ktdHJ1bmsKKzIxNjkzIGY1M2Q4YzUyYzgxZjhkOWUzNGQyZjE4YzA2OWI0YmU3OTlkOTAxYmQgbGVnYWN5LXRydW5rCisyMTY5NCBmNjBlODUzODRiNzk4MWE2ZWY4ZThhMTFlYmUxNTliYzEyYjJjYzEyIGxlZ2FjeS10cnVuaworMjE2OTUgMDAyM2E3OGMxYzgyYzcxNTIwZDQ1MzU3YWE3Y2FmN2JlMGQzMjE5NSBsZWdhY3ktdHJ1bmsKKzIxNjk2IDA5YTVmZTJhNzQyNjczODg5YzE5YjEyMzQ4YTAzNWEyNGI1NmE0NTIgbGVnYWN5LXRydW5rCisyMTY5NyA3MjkzOWEyMjMwZDNiZjE3MDg5YTNkMjUyY2ZmZjM4ZjIyMjUzNTYxIGxlZ2FjeS10cnVuaworMjE2OTggYmZhYTk3YTE5YjMwODNmMzRmODdhY2I0OWVlMWM5YWRkMWQwMDAyYiBsZWdhY3ktdHJ1bmsKKzIxNjk5IDI5YmU4NzFiZDg3Njg1NjYzZGI4NTIyN2E5NjU4ZWQyYTUxMTc1YTkgbGVnYWN5LXRydW5rCisyMTcwMCA2NDE3ZDU4ODE2Y2ZkZDViOTY1NDA5MDYxN2I5MmM5NmFmNDNjNGM1IGxlZ2FjeS10cnVuaworMjE3MDEgYTA2ODMxYjM1NDA3NjFiMDg1YmRjZGM5MzE1YTUzMDJjMDY5YmFkMSBsZWdhY3ktdHJ1bmsKKzIxNzAyIGZkODk2YjdjYWJiNzQyMjUzMmMyZWU0NTA2ZjQzYjdmN2I3YjVkOTMgbGVnYWN5LXRydW5rCisyMTcwMyA3NDYxMzQ4ZDk5ZGE0NDM2ZmZkMjg2NmM5ODY2OTQ3OTEwYWM3MDcxIGxlZ2FjeS10cnVuaworMjE3MDQgZWFlMTdjNTc2NzI3NDI1OTdhMDZjZmE3NDZkZTNjZGVhZmE5YTRlNSBkZXNjci1icmFuY2gKKzIxNzA1IGNmZTUzYTYyMGNmZmU4MTI3MzY4ZTY5YjAwYWJkYWQyZjNiMGU3NjUgZGVzY3ItYnJhbmNoCisyMTcwNiA0OWMwN2FjYzZlODNlN2I3YjY3MWJmNzE5ZTVjNjZmNWNhMjk4Mjc1IGRlc2NyLWJyYW5jaAorMjE3MDcgYzk0MDI4N2RiYTc5YmRmNTYzOTBhYWQ5M2U1ZmE2Mzg2ODZhYjJjNSBkZXNjci1icmFuY2gKKzIxNzA4IDY0NmUwNTJlMDViZWQ1MWVmMmQ0MzAxZWE0NWMxN2M3YmFmMmUwNWYgbGVnYWN5LXRydW5rCisyMTcwOSA1OGViNTA1Mjg2OTJjOGU2YzQzODE3MmI4ZWNlY2JkMDFmMTk3ZTczIGxlZ2FjeS10cnVuaworMjE3MTEgMTJlN2FkMTA4MjI5MTYwNWRlNTU0YjdmNDkyMDlkNGI2NzYxNjRmNyBsZWdhY3ktdHJ1bmsKKzIxNzEyIDliNDJkZjRiNzRkNDU2M2VhNGY5YjNmYWVmYzMzNTIwYTNlMGY3NWQgbGVnYWN5LXRydW5rCisyMTcxMyBmNDAxNDA1ODhiMWU4M2E3NWZhYTU1ZTNiYjM5YzRlZDZkNTJiNjcyIGxlZ2FjeS10cnVuaworMjE3MTQgZTc2MGVlZDVmNjg4MmNkNDc2MGM1MDcwODE1MDI1NWU3YzQyMjYxNiBsZWdhY3ktdHJ1bmsKKzIxNzE1IGFhMzQ0MzYxNDVkMDMzZGJiMDI0MTQwYzZjMjczYWRlZTJlMDhiYmIgbGVnYWN5LXRydW5rCisyMTcxNiA1ZDM5NjRlNjIyYTg1MmNjM2I5ZTk2NzQ0ZmI2MWE2OGEzNTIyYzEwIGRlc2NyLWJyYW5jaAorMjE3MTcgNjM4ZDkwNDRmYmUyMWViOGZhNjM4ZDViMGVjODc3NDk0NTcxNzY2YSBsZWdhY3ktdHJ1bmsKKzIxNzE4IGE3NWNhMjE3ZjczNzc3ZDRkZmY2NjVmNmU1MDAwNzBjZWU5NzBmNWQgbGVnYWN5LXRydW5rCisyMTcyMCBhY2U3MGUzMjc5MjljYWJiZGU1ZDkxOWE1ZDUyZDEwNTgwZjU5MGI3IGxlZ2FjeS10cnVuaworMjE3MjEgNTU1MTFjYWEyNGVlYjU5NmVjNmY3ODI2MzFiNWM1YzEwODQyYTcxNyBsZWdhY3ktdHJ1bmsKKzIxNzIyIDVlMWExNGQ5OTNiMzViOTIzNTYyOThiNTNhYWE5ZGIyZTc1MTAwMGUgbGVnYWN5LXRydW5rCisyMTcyMyA5OWI1ZDMzNGRlMWU0MzFmZGI2ZjAwZDA1ZWNlZTExOTI5M2Q3ZjkyIGxlZ2FjeS10cnVuaworMjE3MjQgMTQ0YTMwMDViNWJhZTNkYTUxYzJhNGYzZWM4NzY1YTY3NzVlOTU0YSBsZWdhY3ktdHJ1bmsKKzIxNzI1IDliODU2NGY2ZTM0ZDUxY2FlMjk1ODJkYmEyY2FkOGZmMDBiYjY5MjkgbGVnYWN5LXRydW5rCisyMTcyNiBjNDA0MTA3MmQxMDEwMTBkYjJkM2M4NTQ5Zjk3Nzg1ZjI1OTNjMGM1IGxlZ2FjeS10cnVuaworMjE3MjcgMzQ2ZGNhZmM4NzhiNDY2ZTZlMDgxZjI5N2NlN2IxZTkzZGM3NDllYyBsZWdhY3ktdHJ1bmsKKzIxNzI4IDY3MDQ2NGM5NGI5MmE2ODIzMjBkMTc5NDkzMTM1YzliMGMzYThhM2IgbGVnYWN5LXRydW5rCisyMTcyOSA3ZDc3NjE0ZmQwYjdmZDcwMWM3ODYxODNiYWE2OTNmMzIwNzg5MDRlIGxlZ2FjeS10cnVuaworMjE3MzAgYzZjMzBlNDVhYjViYTY2MmI1ODVmMzQ5MzNjZDY5YzY0Mzg3ZTkwMCByZWxlYXNlMjEtbWFpbnQKKzIxNzMxIDQzODRmOTE5YjQ0ODU0MWZmMTI4Y2U4YzMwMGNiOTYyNjQ2OGIzZjUgbGVnYWN5LXRydW5rCisyMTczMiA4ZDYyZGRlNzYyN2NlZjdjZjBlNGY4OGMwM2ZjM2M2NDFmMWViYTFkIGxlZ2FjeS10cnVuaworMjE3MzMgMTMyYTA2YWQ5NmVlYzFhNWU4OWQ5YjZmMzIyYWQwZWYyNGI1NTdjOSBsZWdhY3ktdHJ1bmsKKzIxNzM0IGE4NjE5NWU2YzdlMzMyYTU3YjY4YmFiMGMzZWQyZjgxNGRlZjEyNjcgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNzM2IDZiNjBkMGQ5NzRjMzFkNWI5ZGM5NmU5N2I5ZTgyNTEzMWQ3YzhhN2MgcmVsZWFzZTIxLW1haW50CisyMTczNyAyODgxODc2NmE2NGNhNWY5NWJiZDFmNjhlNmQzYThlMmUyMDdmYzYwIGxlZ2FjeS10cnVuaworMjE3MzggNjFlNTBkMGFhNTlhMWQ4OTY5ZDlkODk3ZTczNDFlYjljMjk4NWQ5NiBsZWdhY3ktdHJ1bmsKKzIxNzM5IDQwNTM1MmVhNTBhMDdkMzFmNjVkN2IxYmQwNTMxMjgwYzFhZDIyYzIgbGVnYWN5LXRydW5rCisyMTc0MCA0MjQ3YjRiMmM0OGU2OTE0N2E5OGIxZTFhMzcyMmFlODgyM2FlYTM1IGxlZ2FjeS10cnVuaworMjE3NDEgZmU0NDQyOGY5Nzc0ZGY4NDViYmYzNzM1Y2ZhOGFhNWEzOTZkMTYyNSBsZWdhY3ktdHJ1bmsKKzIxNzQyIDMwNDE0YjQxZmFjOTc4NGI2ZjEzNWJhNzViMWVhMjk0MTMwM2IzYTEgbGVnYWN5LXRydW5rCisyMTc0MyBlOTk1NDU2N2M1NGIwMmY3MDRhOWNmZDBhMTI1ZGQ1ZGYwZGQ3NGI4IGxlZ2FjeS10cnVuaworMjE3NDQgMjFhMDRkMTVlMzhjMjZkODMzZDFlMDFiOTY5ZGZlM2JhMmU3ODQxMyBsZWdhY3ktdHJ1bmsKKzIxNzQ1IDViODIwZDdhM2U3YzEzZTI5ZjNmMzQyY2M5NDY2ZDhhYjRjZmY5MTEgbGVnYWN5LXRydW5rCisyMTc0NyAyNzgzMTgzMDQzNTc5MTkyZGY1MDM0OTdjYjg5MjIwNDIyNzM2NDgwIGxlZ2FjeS10cnVuaworMjE3NDggYzdiZWY2YWE2ZjkyNjcyN2QxMTk5ZmJhY2E3YTVlNTZhYzA3MmQ3YSBsZWdhY3ktdHJ1bmsKKzIxNzQ5IDIxYzU0OWI2NjcwMjQxMWM4ZTYyODcxNTMxMzdjNGYyNTkxMjkxMmUgZGVzY3ItYnJhbmNoCisyMTc1MCAxMTUzODgwNTk3Y2M3MmE4Y2VjYmQxZWIzZTgzNTIwMzE5ZTcwNDY2IGRlc2NyLWJyYW5jaAorMjE3NTEgOWEzNzNhMTQzYTEzMGYyYWJjODYzNDAwYjgyMzFhMDNlMjMxZjlkYSBsZWdhY3ktdHJ1bmsKKzIxNzUyIDE5MjUwZjkxODFkYzQ0ZTFhOTU2YTkzOTU3ZjZkYjZiODQyYzgyMDggbGVnYWN5LXRydW5rCisyMTc1MyAyM2U2YmJhODhkNmE3ZmM3ZjViOWM5ODYyMTA2OTZiNjNmNjA1OTg3IGxlZ2FjeS10cnVuaworMjE3NTQgMjhiNjI5MWUyYTVjZjdmNTUyZDNkYjk5ZmI3ZTkwMDZjYjc2ZDUxYSBsZWdhY3ktdHJ1bmsKKzIxNzU1IDNmMjgzYzk4ZTgxNTA3OWI1NGNkZmQzYTA3M2QwNjM5Y2NkM2NiMTMgbGVnYWN5LXRydW5rCisyMTc1NiAxMTUxYWI4YTJjZGZlNThlMjUwYjUwNTYxZGRiZDFiNWU5MTFjODcwIGxlZ2FjeS10cnVuaworMjE3NTcgN2ZkYjQxNjAzZTlhM2MzYzMxMGNhOTdhNzRlMDA0NDc4NDg2ODRlMiBsZWdhY3ktdHJ1bmsKKzIxNzU4IDg1OTUwNTIyNDg1MDIwZWZiMDFmOGIyMzhmY2U4NWRmMzVhMmFlOTkgbGVnYWN5LXRydW5rCisyMTc1OSA3MjFmMWE4OTNmYmJjMjQ4Y2MwNzFmZTMyM2Y1OGNjM2VlMjU1ZTRmIGxlZ2FjeS10cnVuaworMjE3NjAgOWY0M2UzYTliYjZlZTI1MjZlMjg5YzkyNmQ1OWJhODI2NzQ0OTVkNiBsZWdhY3ktdHJ1bmsKKzIxNzYxIGI5ZDQ3ZDA4M2QyY2FmMzQyODdiNWQ4OTc3ZjQzMjc5ZjU4ZTc0N2EgbGVnYWN5LXRydW5rCisyMTc2MiAyNzVhZmI1YTc2N2UyYmQ5MTExMGI5Nzk1NjAzZWMwYmM5N2Q4YjU4IGxlZ2FjeS10cnVuaworMjE3NjMgZjg0YWNjOWRmZDBiNWNkY2JhZDljZjMxNDAyZTcwMDVlZDJmNTI5YiBkZXNjci1icmFuY2gKKzIxNzY0IDA4NTdmYjQ4OWZhM2E2MzEwNzdhOTczMWQ4ZTYxNWY3MDM5MzllNmYgbGVnYWN5LXRydW5rCisyMTc2NSA3MzBhYjBiZWQ2YWI0NmYwYTE3MDg3OGNmMWI0OGM5NzU0NzJhZTUzIGxlZ2FjeS10cnVuaworMjE3NjYgZmFmN2YxNzFhOWYzMjI0MDliNTE4ZTAxNmZjMzU1ZThkYTBlN2U0NCBsZWdhY3ktdHJ1bmsKKzIxNzY3IGRjZDFhMGFhYWVjYjQ5Y2E3OTdjYTZjZWE3ZTViODZmZDdlNzYzMzIgbGVnYWN5LXRydW5rCisyMTc2OSAyMWQ3YmFlOWRjMmRiNmMyY2IzZDcyZDllM2Y3M2Q5MmE5M2E4MDg1IGRlc2NyLWJyYW5jaAorMjE3NzAgNTk0NDZkMGY4MzQxZGQxNzMwZjE2MWUwM2UxZDcyOTYyMTU3NDA5YyBsZWdhY3ktdHJ1bmsKKzIxNzcxIDFmOWM3YjRjZWU3N2FmZTlmYThhNGE1ZTRkZWUxMTAwMDc3NmI1MmMgbGVnYWN5LXRydW5rCisyMTc3MiBmZGIzNmEwYzdlNmU5OGU2MjBiZmYxZmEwNjQ4ODY1NjEwZTY4MTM1IGxlZ2FjeS10cnVuaworMjE3NzMgNGFjOThmZTdhYmQyYjUxNjc2MjY5ODY3NDZkZTQyYzQ2NDUzMTQ0MyBsZWdhY3ktdHJ1bmsKKzIxNzc0IDYyMzhhMjIyYjdjZDY1OGFiNDMzOWVhNmMzYTZiYTQ3NzVjYTg4OWMgbGVnYWN5LXRydW5rCisyMTc3NSAzODRhNjFmYTZmNWEyMDQ3ZGM0ZjM5ZWY2ZmIzNTlkNjc3N2NiMTQzIGxlZ2FjeS10cnVuaworMjE3NzYgMGE5MGU1ZWM2MWI2OTgxZTY1NmU3ZWM4ZDQ5YTI5NjRmODM3NTg3NyBsZWdhY3ktdHJ1bmsKKzIxNzc3IDAxZmM5OGJhMzk5ZjFhOGFmMWYzOWQ0Zjc0MzQ0YmU0MGYyMTRlMzQgbGVnYWN5LXRydW5rCisyMTc3OCAxOWRjZmI5MzVmNjBlNGUwZjhhY2Y4NjEyOGJjMzA0MjhkNGNjNzcxIGxlZ2FjeS10cnVuaworMjE3NzkgMjcxMDY0ZGExZDUyY2NlYzk4ZmUxODUzMTAwYjg1ODM0YzhjZjVkZiBsZWdhY3ktdHJ1bmsKKzIxNzgwIDFmM2Q3NjZkYWQ5MWU1ZWUyNjkyOGU1OTI1OTRjMjFjZDVjZmRiYjEgbGVnYWN5LXRydW5rCisyMTc4MSA5MTU5MjIyZTY0NjNmZDU5NDUwNDhiNjdkM2M5ZDc2MmJiNmE1YWQ5IGxlZ2FjeS10cnVuaworMjE3ODIgMTA3MTdmOGE2ZDk2ODRjMjk3ZTE1MDliYWNmZTQ4NWFmNGIwM2QyZSBsZWdhY3ktdHJ1bmsKKzIxNzgzIDk4ZDgxY2JlOGJiZDdmZGIzOTYxNzQwNWEyYTBlYTczMjNhYWM3MzQgbGVnYWN5LXRydW5rCisyMTc4NCAzNWZlYzQ4N2JjZWY3NzczOGQ1ZmIzZmZhOWQ4MzhjNzJkMTRhYTAzIGxlZ2FjeS10cnVuaworMjE3ODUgZTVlNWJiNTQ4MmQzYjcyYzY3MTEyNmE4OTcxMzhjYjQxODdlN2EwMCByZWxlYXNlMjEtbWFpbnQKKzIxNzg2IDkyMGVlN2YyYTU5MjJlNjg1ZWE4YzU0MzIwN2Q5M2VjNjVjNjE3ZWYgcmVsZWFzZTIxLW1haW50CisyMTc4NyAyYjVlNzM4M2M3N2ExNmYzNGVkZTQ4NzZlM2ZmODFmOGQ3ZjVmNGIwIGxlZ2FjeS10cnVuaworMjE3ODggMjk1NTE4ZTZmY2VhYmUxOTA3NjI1ZDg1NGJlZDk5MDIyYWZlMGZlZSByZWxlYXNlMjEtbWFpbnQKKzIxNzg5IGMwNmQ4MTc5ZTllM2IzMzY4OTZhNTZkOWQyMDhkMzg2ZDE3ODU5ODcgcmVsZWFzZTIxLW1haW50CisyMTc5MCA5MTQ5NDA5NDZlMmVhMWZjY2FlMDAzZmMwMTAzZGJjODA5MGVjYjgzIHJlbGVhc2UyMS1tYWludAorMjE3OTEgYzliNGM4YWU2MTc5MjMwNTFhNjFmZjI2MzI3YjhjODFlYWY4MTE2MyBsZWdhY3ktdHJ1bmsKKzIxNzkyIDQwMzBjOTAxOTA2N2M1YzIwNjdlODgzMGEzMmYwMWIwYzY4NGUyNTQgbGVnYWN5LXRydW5rCisyMTc5MyBmZGRlOWZhY2JiNmVhN2QxNTVkMGQ0ZGUyOGFjNmNjMWVkNmUwODZlIGxlZ2FjeS10cnVuaworMjE3OTQgNzdjODI4MjRkZjQxMjlmMzdiZGE2MTE5NzdhYjE4ZDM4ODE0NDBmZiBsZWdhY3ktdHJ1bmsKKzIxNzk1IGQ1OWE4NDc2YWZhYjlkZjU0YWEwNDE4ZWQ1Y2UwNDNjN2EzNzJlMjEgbGVnYWN5LXRydW5rCisyMTc5NiBjOGU0NzI4ZDJhYjBmM2NhOGEwZDJiMjE2OWRmZmE0YzA1Y2VmNTU1IGxlZ2FjeS10cnVuaworMjE3OTcgMWQzYzU3Y2M4ZDA4NWM4Njg3Yjc4ZDg5ZTY5OGFkMGMzMzZkZDI1OCBsZWdhY3ktdHJ1bmsKKzIxNzk5IDk4M2FjYWM1NjQ2NmIzYmNmY2RkZDJjNDMxODI5MGVhN2M5NTM2ZGMgZGVzY3ItYnJhbmNoCisyMTgwMCAwNWNmNmIzZTYzZGU1NTRlMTdiOTM1NjY1MzQ0MGQ2YmM1M2RiYTQzIGxlZ2FjeS10cnVuaworMjE4MDEgZTUzYmNiYzMxNjVlMzk2NzlhZjYzODk5M2VlMjViYjQ1MDc1NmNjZiBsZWdhY3ktdHJ1bmsKKzIxODAyIGQzYzI1YjA2YjdlNWI0NGRjNTMwMWZkZmNjMjY0ODgwMDk2NjVkZjIgbGVnYWN5LXRydW5rCisyMTgwMyA1N2U1OTUyNWQyMTdkZmNlMzVkMThhNDZlYjhkMjQ4ZWJhYjhjZWVkIGxlZ2FjeS10cnVuaworMjE4MDQgZmRmOGQwODMxMjc4OTUzYTI4NTc5YzFkY2EwMzJiNzBkNzA1ZDUzNCBsZWdhY3ktdHJ1bmsKKzIxODA1IGY3MTk2NDg2ZjQyZDE4MDlkNWU4YTRhNmVkZDdjMWNjYWZkNTM1MmEgbGVnYWN5LXRydW5rCisyMTgwNiA2YTUwOTEwY2EzMDNhZDA0YTM3Y2Y5ZDhhZWZlOTljM2VhNmM4Y2ZlIGRlc2NyLWJyYW5jaAorMjE4MDcgNTU3MTdkYzIyN2Y0ZGUxMGI0OTBjOGY1ZjYzM2I1ZDY1Y2JjMWVhMiBkZXNjci1icmFuY2gKKzIxODA4IDk0ZmJjZjE5NjU0OTU1N2I4ZTI3MWZiNmQ5ZWFmNjdlOGQ5ZGE1N2YgZGVzY3ItYnJhbmNoCisyMTgwOSAwNzcyZWFhMTc2MzE5YWI0ZmZjNTk0OGU2ODAzOGZlZTA0NTA3Nzg1IGxlZ2FjeS10cnVuaworMjE4MTAgNzMzNWFjN2M1MzE1N2ZjMDBkOWMxZGUzOGE1MjBhYTM4OGZiYTA3ZCBsZWdhY3ktdHJ1bmsKKzIxODExIGNiNWVhNGQ4ZThiZjk4MTFkNjY2ZGY0NGMzYjQwYTBjNzY5NDQzYTkgbGVnYWN5LXRydW5rCisyMTgxMiBlNWEyZTg5MTZlMGI0ZTY0YzNmMjc4MGJiZTI1MDQ2NjFlMzdiMTdhIGRlc2NyLWJyYW5jaAorMjE4MTMgYzQzZmUyMTNlZTEwOGY1MzUzMzliOWIyOTNiNTU3OWNlNmI0YmFlNCBsZWdhY3ktdHJ1bmsKKzIxODE0IGFkODJjYWZlNDVhY2Y0OTFmODk4NjE1ZGFmOTJhM2MyZDI3NDM5NDMgbGVnYWN5LXRydW5rCisyMTgxNSAzMzgxOGVjNjM5NWJhZDkwYThkY2MzMjhmZGJhNWYzMjE0NzVmZGYzIGxlZ2FjeS10cnVuaworMjE4MTcgMWYxYzc4YmE1N2ZmNDU3ZjYwMGEyNGM1NDYzNTYyOTM4NjQ1ZDYxMSBkZXNjci1icmFuY2gKKzIxODE4IGQ2MjMzZjdiNzRjMThmZTVjYWY2NDQ1NzU2MTU3ZjE3NjIzZWYzNmEgZGVzY3ItYnJhbmNoCisyMTgxOSA4YWE2M2FlYTcyNjk1OThhNzEzYmU0NDc0ODZhYzU2ZTg4YTgyMDE3IGxlZ2FjeS10cnVuaworMjE4MjAgY2I2NmE5ODMwOTZmN2NmMzk1MTViNGMzM2FlNGFlZTE1NjZjNTBjNSBsZWdhY3ktdHJ1bmsKKzIxODIxIDNiODg4ODU5ZDUyYjNhNjA3YmM4NWI1OWQ2YThjODk0MGRlYWUwYzMgbGVnYWN5LXRydW5rCisyMTgyMiBjYThhNDhhYmEyMmVjZTI5YmQ2NzcwOWQ1NWVhYjlkNThkZmUxY2U1IGxlZ2FjeS10cnVuaworMjE4MjMgNWViZWU1YzA2MGQwZTdkYjIxOGM3YzFiZmUyMTA4ZGE1YTdiNjRkMiBsZWdhY3ktdHJ1bmsKKzIxODI0IDc0OGY2YjNhOGJmNjI3NDgxZjI5NzYyZGViMjI1NDM4YzJjYzlmMDYgbGVnYWN5LXRydW5rCisyMTgyNSBhYzExYWY3ZDg2MGEzNWY1Y2U3NjY5NDc2MTRkZTNmYzUzODU1MTJmIGxlZ2FjeS10cnVuaworMjE4MjYgZmNkYjhjOTRiNWQ4ZjMzZGViOGI0NjcwYjZmMjdjZWZjYzdiOWU5OCBkZXNjci1icmFuY2gKKzIxODI3IGNkNjM5YTk0NzFiOGY3OTA1ZWY1ODFlYzk0NmE5MGFjMGZjMTM3ZWEgbGVnYWN5LXRydW5rCisyMTgyOCBlNjM4ZjEyMDZlZTBiZDk5YTlhOTFmMjQ1MmQ4OTM4ZDBhNTNhMmE0IGxlZ2FjeS10cnVuaworMjE4MjkgNzAyNzUwMzdmMTJkOGRlZDZhZDIyYmNhZjkzYWQ3NDMyM2MwZmI4ZSBsZWdhY3ktdHJ1bmsKKzIxODMwIDc0NjIzYjA3NmQxYmU5ZTMzZDA4ZmNkZjY1ZTExZDdlZmI2ZWM5NjUgbGVnYWN5LXRydW5rCisyMTgzMSA5NWRkY2Q0NDRkMzkyZmJiMTM2Yzc2N2IxYTNhMjM3YWExNDgyYTE2IGRlc2NyLWJyYW5jaAorMjE4MzIgZDg5ZTkzNmUxYjEwNjVjNWY1NzBjMDI1OWU3MzMwMmRkNjQzYzVkYSBkZXNjci1icmFuY2gKKzIxODMzIDcwNzExYTk4ZDk4OTdjODkzNzliYWQwNGFmZTQzOWMzMTVkYzlmOGIgZGVzY3ItYnJhbmNoCisyMTgzNCBlMDliZWU5YjU3MjkyZDc2MTNlZTc2MjQ0YmU4NDI0YTU2NzQ3YWUyIGxlZ2FjeS10cnVuaworMjE4MzUgNTg0YmUwYmJkOTQyYjY0NTVjMzk5MmZhYjQ4NmNmMTYxNmM5MGU5YyBsZWdhY3ktdHJ1bmsKKzIxODM2IGY2NWNlNTk5MDU0N2Q1MTA0Y2FkYWZhMDA5NjUyYzZlZjhiNjAxMTggbGVnYWN5LXRydW5rCisyMTgzNyBiNzc3NWViYmY0NDkwOTlhNGUxYjA1NDk4MjU4NTE1Y2YwZTYzZjViIGxlZ2FjeS10cnVuaworMjE4MzggZjE0ODAwMjI5Njc3ZGVhMGFhYjZlOGY1YTdkYjJmNGZiOTU4ZmQ4OCBsZWdhY3ktdHJ1bmsKKzIxODM5IDkyNjI2ZjQyZTA0MzNjZWY2NmY1ZGU2NjBkZWU4YTQ4YjY1Mjg1NmYgbGVnYWN5LXRydW5rCisyMTg0MCA1ZmMyYmExYzNmMjQyM2VlOTM5MzAzMzI4YmRhNjZhNTgxZTA2YmUzIGxlZ2FjeS10cnVuaworMjE4NDEgYTAyNzc5ZmQ5YjkyMGViN2ZhOTViNzljNWM0MTMyYjllNTkyODdlZiBsZWdhY3ktdHJ1bmsKKzIxODQyIDFmOTc0M2ExZWQ3YjBiMDhhYTk0MThiOGU3M2Q3MmIyMmMxNTUyMmYgbGVnYWN5LXRydW5rCisyMTg0MyA2ZDRhNTMwZmU3YzE2MjIxMTE2ODk4MGQ2ZTBhOTExOWQ0ZmFiMTk0IGxlZ2FjeS10cnVuaworMjE4NDQgMzg0YjkxMTNhMmUwYzY5YWRmYjQyZDVhNzFkOTIwMzJhMWQyYTdkMCBsZWdhY3ktdHJ1bmsKKzIxODQ1IDc5MjdlOGNmNDYxNTBhYzRkMTJhZTA4NzIyYzdmNzVhOTM4YzllZTggZGVzY3ItYnJhbmNoCisyMTg0NiAzODIwNmYyOWIwZmMxYzU0NzVkNzcxODVhYWJhNTNmMjIyY2YxYmI5IGxlZ2FjeS10cnVuaworMjE4NDcgY2ZiNTdkYjRjMzg4ZTc1NWY5ZGUxYTA1ZDcyZWFjY2U2MGI2Mzg4MSBsZWdhY3ktdHJ1bmsKKzIxODQ4IDQ5MmExYmQ0ZDBjNWZlMWEyZGZjNmRiYzEyMTU3ZjVhZTViM2Q5YmYgbGVnYWN5LXRydW5rCisyMTg0OSA5ZWU4ZjE2YjBlMjcyZjY5ZWE0NDBhZjU4ZjI4OTU3Yjg1MDY1ODQ2IGxlZ2FjeS10cnVuaworMjE4NTAgZjdiZTdlOWE2ZjIwMjgxY2JiZTU2ODNhMGQxODA1ODUxYmI5MmFiYyBsZWdhY3ktdHJ1bmsKKzIxODUxIGQzYmM4MmQxYzVhOTI4NTVjMDQwODc0NDNjZDFlOTJjOWI3ODQ2ZjQgbGVnYWN5LXRydW5rCisyMTg1MiBlNDIxYWE0NTA0MGNkMDg2OTFjYTM4MjI0OTU1ZjI1NzNiMmFjMGM2IGxlZ2FjeS10cnVuaworMjE4NTMgYTdiYzMzOWVlMmYzNTA4OTdjYTU3NTFjYTNjMTE2MzFjZjJmYTFlOCBsZWdhY3ktdHJ1bmsKKzIxODU0IDJiYTFkOWQ5OTZhMzgzZWUyMTI0ZGMzYjc3MTYxZTdmODYzNmE1ZmMgbGVnYWN5LXRydW5rCisyMTg1NSAwNTA1ZDlkYzgzM2Q3NDAzNTk1MjgzNTMzMWRhMmNkNGNlNmFmNmVlIGxlZ2FjeS10cnVuaworMjE4NTYgYzY1OWQ0YzAwOWNiZmIzN2YxNDRjZDhmMDZkODY5OTllZDcxMTczYSBsZWdhY3ktdHJ1bmsKKzIxODU3IGFkMmY1MjZmMDAxOWQ0MTk4MWU5OTIwODA0Mjc1MjdlYWJlNDA5OTEgbGVnYWN5LXRydW5rCisyMTg1OCA4Y2E3MGM5YzE5NzEzNzZlNTRiNTU1NTk2NGI5ODBmYTFlYmZiYmY1IGxlZ2FjeS10cnVuaworMjE4NTkgNDc5MzJkODJiOGViMWZmNjAxOGFkMWM4YWJkMzFlNmQ3MDFjNDY1NiBsZWdhY3ktdHJ1bmsKKzIxODYwIGEzOGU3NzI0MGE2NzM5ODBlZThkOTgxODE0NjE1ZjMxMjcyZDI0NDIgbGVnYWN5LXRydW5rCisyMTg2MSA1NGQwNDU5YzhlMGZkYmQ2M2MyNGJlYTNiNDVhNTg3NjUwMTU3OGQ5IGxlZ2FjeS10cnVuaworMjE4NjIgZmQ3NGNiNWI5NTczMmM4OWY0ZjkwZjY4M2EyYTU1MDE2NDhiZDgxZiBsZWdhY3ktdHJ1bmsKKzIxODY0IDA5YzZmZTdkYmIxYzUzY2Q3YWUxZTg1YmQ0MTI1NjE4NWU2YjFlMzkgZGVzY3ItYnJhbmNoCisyMTg2NSA0NWY1M2ZlNDRjMGU2ZDVjYTZjNTJmNDc0YjQ0MjRiMWY2NWViMTg2IGRlc2NyLWJyYW5jaAorMjE4NjYgNjJlMjRiYzQ3YjYyMDcyZDMxNTc0MTNlNDI0MjAyZGQzOWEyY2E1ZCBkZXNjci1icmFuY2gKKzIxODY3IGIyMWRmMDkxZmJiZmQ2ZDdjN2ZmZTg2ODE2Yzg0YmU0MWU0MTJiYzEgZGVzY3ItYnJhbmNoCisyMTg2NyBkMjUwOTU5MTMzYjVhOTk2YjFlZGY4YTQ3NzJmYTAyZTU4YTNhOTcyIGRlc2NyLWJyYW5jaAorMjE4NjkgNGM1OWU5MzRlNzY1ZGU1MDNiZTkzNjk4OThlNjkxMTY2OWZmN2U5MiBsZWdhY3ktdHJ1bmsKKzIxODcwIDA2NGRlODQzODVjYWVhMGQyN2Q3ZTU5ZDA0ZTZhOWNmYTIzODkzN2MgbGVnYWN5LXRydW5rCisyMTg3MSA1MWMzODJkNTg1MWI5MTkyZjg2ZDFjNDVjNjE4MmU3OTRhNWI4YWQ0IGxlZ2FjeS10cnVuaworMjE4NzIgMDc5MTdmMTQzNDg4NjIxNjAzZWM1NjcxOWQ3OTliNzQwZDIxM2YyMiBsZWdhY3ktdHJ1bmsKKzIxODczIDAwNjk1NTUxZDcyMTIxMTcwNWRkNzNhMjI1MTYzMmYyMWQ4NmJkOTUgbGVnYWN5LXRydW5rCisyMTg3NCA0MzgxNDYxY2NlNWRmOTJjZTEzNWQ1YTRkNGJjM2YwZjI2ZTdmMTVmIGxlZ2FjeS10cnVuaworMjE4NzUgOTIxOGZhNjUyMzkxZjNhODkxYzcyNGM0Yjk4ZDM3Zjg2YjdjYzQ3NSBsZWdhY3ktdHJ1bmsKKzIxODc2IDI1MjQ0YmRiMTYzZDkyMWUyMTMwY2U2YWUwZTAyZTJhZjNmNjFhNDcgbGVnYWN5LXRydW5rCisyMTg3NyAxYzJkYTc4YjgzOWI5YjA1OGQ2NmI2NzM1YTI4ZTUwZjA2NTBjYjI5IGxlZ2FjeS10cnVuaworMjE4NzggNjc5NGRjYWU1ZDBjZDk4NGUwZDBkNzQ4M2FhNWFlODI0OGQwYmIzNiBsZWdhY3ktdHJ1bmsKKzIxODc5IGM3NjY3NTZkODRkMzM3NTgzMzhlOTQ5ZjRhZTdlYmQyZDdjNWY3MDAgcmVsZWFzZTIxLW1haW50CisyMTg4MCBkYWVhOTRmMDY0Mjk2MDlmNGJmYmRkOWJmYjY0MGNlNzkzNjFiODM4IHJlbGVhc2UyMS1tYWludAorMjE4ODEgYTFmMTllZTAxYWFlMGQ1ZWUzYzMyYjk3ZWZiYzNjM2YxYjUzMWY1NCByZWxlYXNlMjEtbWFpbnQKKzIxODgyIDUzNTQ1YzM3MWZlMzg0MGQxMjA5NDdjNTkxYzQwYzNkODJlMTY5ZDAgcmVsZWFzZTIxLW1haW50CisyMTg4MyAzY2QzMDgxZGY2MDFjMjBhOTJmODFhZjQyNTE4OGFiMTdjMDcyM2IxIGxlZ2FjeS10cnVuaworMjE4ODQgOTVlYTYxMGYzZjU0ZDcyYWM4NjZlMzQ5N2I4MTZiODEyNWU3ZGQ2MSByZWxlYXNlMjEtbWFpbnQKKzIxODg1IDM2YzU2MWVlOTZiNTMyOWY1MGIwMzBjZGI5M2Y1YTliYmVmMDMzZmUgbGVnYWN5LXRydW5rCisyMTg4NiA4ZGY3NzQxNWE2MWQ1NjRjODYzOTU2ODIzNTliNGNjMWI4Y2Y2ZmFhIGxlZ2FjeS10cnVuaworMjE4ODcgMDNjMjBlN2NjZTZhY2Q0ZDI4MDQ0ODBkYjRiN2JjYmUxZGQ5MzVmNiBsZWdhY3ktdHJ1bmsKKzIxODg4IDcwZTE4NThhZDcwMzIyMWE2MjYwODM3ZWNhYjkyOThmYzhmODhkNTIgbGVnYWN5LXRydW5rCisyMTg4OSAyMzczNjg2NDRjMTNkNTM3YzdjMmNjODczYTU5MzMxNWY0NDMyNTA5IGxlZ2FjeS10cnVuaworMjE4OTAgNzI2ZjRkMDZiZDRiZDM4ODAyOTFlY2ExNjM3Y2E5ZTIwNTUxYjE1MiByZWxlYXNlMjEtbWFpbnQKKzIxODkxIDI0ZDAwNTU3ZmJjOTVhYTdmZDFmZGEzMzgxMmY4YjdlMTAwYzI5YWQgcmVsZWFzZTIxLW1haW50CisyMTg5MiBiMDk0OTY1OTYwYWY5MWQwYTkzMTY3YTI4OWZkMTQ1OWVlYjRkMzUzIHJlbGVhc2UyMS1tYWludAorMjE4OTMgNGMwYWRiOGE1YmM2NTM5MzQyOGY2NDUxYTQwNDdjOGI0NzMzMjEzMSByZWxlYXNlMjEtbWFpbnQKKzIxODk0IDhjZjUzZDBmODVjODc0ZTdhMWU3ZjdjMDE1ZmUyYTI0ZDNiNWRlZGYgcmVsZWFzZTIxLW1haW50CisyMTg5NSA1YzczNjIxYzk1NTliNThmYmZjYzA1NjljZjdkODNlMDdhNTk3MTljIHJlbGVhc2UyMS1tYWludAorMjE4OTYgNWIwNzQ3MDIzOWRiODkyNGI4NzM2NDNiZjQ2NzMzMzRlOTc5YjYxMCBsZWdhY3ktdHJ1bmsKKzIxODk3IDRjYTlhY2VkNTUwMzdjZjMxNjU3MTk5NzFjODQzNjJjYWVlYTI0NzEgbGVnYWN5LXRydW5rCisyMTg5OCA1NTMyMGQ2MjkxYzlmNWFiOGU4ZDYxZWU0NTBiZWJhNjFmNzRiNzIyIGxlZ2FjeS10cnVuaworMjE4OTkgM2MwNTBkMWUzNWIxMDJhOTZjZDEzMTA1ZGQxYjgzOGZmZGRmOWI2NyBsZWdhY3ktdHJ1bmsKKzIxOTAwIDExZjRjZDQ1YTgwYzA3ODM3ZDA4NDk1ZGNkZWQ4ZDA0ZmRmZjg2ODcgbGVnYWN5LXRydW5rCisyMTkwMSBiYWFhYzk0ZmVjNTQ3NTIwYWZlNzE2NjQ2ZGY1MjRlNDZlNjhiNTc1IHJlbGVhc2UyMS1tYWludAorMjE5MDIgZWU5YjQ1ODA0MzM3NzBiNDI3ZGU2ZjJlZTFkMjczMjlmNmM1ZjBhOSBsZWdhY3ktdHJ1bmsKKzIxOTAzIGNhOWQ3YTYzNzk0ZjAxNWI4YjhjNzg1ZTVkMTM5ZTU3YTRhYzg4YTEgcmVsZWFzZTIxLW1haW50CisyMTkwNCA5MTcxNjhmYmZkOTRiM2RmN2ZlNmEzZThlYjMxZGU4MjA5ZmIyMTg0IGxlZ2FjeS10cnVuaworMjE5MDUgYTU1N2U5NWI5MmYwYmRmMmVlMWU1NzE5YjI4ZGJmNjI5YjNmZWRiOCByZWxlYXNlMjEtbWFpbnQKKzIxOTA2IGFlNjc2Y2YxNDk1ZDRmY2ZmMzdlNzg4Y2NkYTUyODg4NzUyYTk0NzMgbGVnYWN5LXRydW5rCisyMTkwNyBjNzgwYzYxYjM1Y2VjOThkYjkyZTkzYjRmNWJmZTI4N2E4MzI0ZjA4IHJlbGVhc2UyMS1tYWludAorMjE5MDggYWQ2YzVjMjdlY2JlNjNlODYxNmEyM2YzNjhlYTE5ZTA5ZGM4MTdjYSByZWxlYXNlMjEtbWFpbnQKKzIxOTA5IGY4ZTI4Njk5NzZiMGU1MDc1MDkxNDUyMjBhYTZiODUyMjQ4YTVkODIgcmVsZWFzZTIxLW1haW50CisyMTkxMCBkNTFiMmQ5MzM4MTQ3ODYxOWMyN2NmYTRkMzBiZGY1ZTkwNGUxMmRhIGxlZ2FjeS10cnVuaworMjE5MTEgMzM1ZTc1YmNiNTFhZDg2ZTAwYmI3NThlNDI1ZTUyNDI2OGMwOWM2MSBsZWdhY3ktdHJ1bmsKKzIxOTEyIDJjZTZhOWIwYTUxZDY4NDc3OTIwNzUwNGE5YzkyMjQ2YTFmNDIwMGEgcmVsZWFzZTIxLW1haW50CisyMTkxMyAxNDBiNzI5MTMwZDBjNWYwYmUzMjhkZGY1NzIzYmYzNDQ0NDg5ODc4IHJlbGVhc2UyMS1tYWludAorMjE5MTQgYjAzMjk2NDliOGNmY2ZhNWJhMzYxZmExNjJhZTk0NzZmZWQ1ZDY2MSBsZWdhY3ktdHJ1bmsKKzIxOTE1IGMyNWYyYzEzZDM4MDZmNGMzODc2NTdlY2FiMzllNTY2ODkyNGQxNDAgZGVzY3ItYnJhbmNoCisyMTkxNiBkZjRiNmI1ZWE5Yjg1YzVjNzhiOGRmZTg3MGU5NGE0NTdiOTVhNDg2IHJlbGVhc2UyMS1tYWludAorMjE5MTcgNTlkMTRjODg2NTFjYjQ0NGNhMGU5MjU3NWFiYTEyNWI0MTE3NWNmMCBsZWdhY3ktdHJ1bmsKKzIxOTE4IGZlYzhmNDAzNWZiMjg2NmFlNDVlODE0ODIzZGU2OTFjOWFhZTc2NTUgbGVnYWN5LXRydW5rCisyMTkxOSBkZTZmMTU4OTY4NjE5ODBjYThkNzJmM2Y4MWQzYTc3ZjkwYzAwNTJkIGxlZ2FjeS10cnVuaworMjE5MjAgYjI2ZmYxNjQzMjExZjE0YzJjNjBkNGEzOGU5MTFjOWNkMjExZTJkZSBsZWdhY3ktdHJ1bmsKKzIxOTIxIDcwNDQ4NjY0MjA3OWZlNjMxMzdjM2ExMzg1ZTYxYjYyZDFkOTMzODQgbGVnYWN5LXRydW5rCisyMTkyMiAxYWE3ZTIxOWY1MmRjODJhOWQ1NmM2ODA0ODJlY2M5NmQzYTU5OWRhIGxlZ2FjeS10cnVuaworMjE5MjMgYzdjYjFjOWU5ZDljNTdkYjUyNjE3NWI3ZjNmZmNkMjg1MmI1OTI0ZSBkZXNjci1icmFuY2gKKzIxOTI0IGM3MTJiMTZmZmFjZDYzYjVkNjI4MmIxMzM5ZDAxMjZkYmJhNDI2YWEgZGVzY3ItYnJhbmNoCisyMTkyNSBiMTQyYjUxNzMwOWM3NTJkMTExYTU0NTUyNDBlZWE4NDExYTFlMDg2IHJlbGVhc2UyMS1tYWludAorMjE5MjYgOTIwZTAzNjFkZDZlM2U3NDJjZDUwMzJjNGNlNzA0NTZlYzg0MTBmOCBsZWdhY3ktdHJ1bmsKKzIxOTI3IDEzM2U1NzAxNTEwMTRmOWRmMDdhMjIwNmRjMjI2MTQ2MzFiNmZkNjggbGVnYWN5LXRydW5rCisyMTkyOCA4Y2EyZWY2NjNhZDIwY2JkOWU4MjAzYjgyZGY4OWY2OTZkMzU0MmM4IGxlZ2FjeS10cnVuaworMjE5MjkgMjc2YmY1OTZlOGQxODA4NjE1OGUwZWI4NjIxYzg4YmU4N2RjMmI3MCBsZWdhY3ktdHJ1bmsKKzIxOTMwIGRmOWM0YzU0ZWYzZWY5ZDYzNDI1ODU3M2ViYTJmZjVmYzY1OGE0N2YgbGVnYWN5LXRydW5rCisyMTkzMSA3NGI3YjhhOTYyOGI2NjIwMGYwMTQyMjcwMDM5ZDM0YjI2ZDZkYjU1IGxlZ2FjeS10cnVuaworMjE5MzIgZTViYWZkZGQxZGEwNDJlOWM0MGYwYTQxZDBkYTFjYjk0YmNmZGNiZSBsZWdhY3ktdHJ1bmsKKzIxOTMzIGQwOTM4YmMxMmExMWU2N2IzYmUwOGUxZWJjNjAzNTUzMTUwNDQ3YTQgZGVzY3ItYnJhbmNoCisyMTkzNCBjNmVmNzFlOTQzZGQ2NDBiNGZkMjFlZTNiYjkyZmQ2M2ZhZWE4MzYzIGxlZ2FjeS10cnVuaworMjE5MzUgYWFjNjJhYWE4NDZkZWZhZDBiYzQ1NTQ5Y2EzMzQ1ZmVmMjdkNGYyZCBsZWdhY3ktdHJ1bmsKKzIxOTM2IGRiNjQ3ZjdjODMxYmM1OGEyMzAyNmRhZmJhZTc0MzhlZjA2MmMxM2EgcmVsZWFzZTIxLW1haW50CisyMTkzNyA5MmY4MTQ0OWUxNmMyMWU3ZjhmOTRhNDVjNGExOGExMTEyMThmZjg4IGxlZ2FjeS10cnVuaworMjE5MzggMDE2OTJiZjAyZjk3ODUwNTU3YTZlNDRjODg2NjJlMzE5YmRmMTNmNyBsZWdhY3ktdHJ1bmsKKzIxOTM5IDNjZDAzYTY0YzMzOGMwMDM0Mzk4YTMyNDYyMWQ4YmUxNjMxZmRlNzkgbGVnYWN5LXRydW5rCisyMTk0MCBmOGJkMTRhZWY0ZDZmYjVkZGY0ZTlkN2M3MjZmMmZkODY4OWM0OTdjIGxlZ2FjeS10cnVuaworMjE5NDEgYWY5YWQ5MGE0NDQ1OGI2ZTJkNDhjY2Q4ZGRlMWMzMTQzODJkNjVmNyBsZWdhY3ktdHJ1bmsKKzIxOTQyIDRkNDZhMWIzM2M2MjEzYmUwMGU3ZTdjOTQ1OWU0Y2QzZDBlMzM4NGYgbGVnYWN5LXRydW5rCisyMTk0MyBlNzA5MjllMTA2NjNjZWRkYTgwYjZiNDBjNGE3NDNiOGU1NTc4YjhmIGxlZ2FjeS10cnVuaworMjE5NDQgODAyYTg0ZTg0ZWE5NDJmNjA2NDA4ZDFkNDY2NzIzNGJiNTYxZjM2MSBsZWdhY3ktdHJ1bmsKKzIxOTQ1IDI5ZTA5Yjk2ZWQzNjM1YTkzYzM5Y2RlZGNmN2Y1NWQ2MTM4NTEzMzQgbGVnYWN5LXRydW5rCisyMTk0NiA3NGRmZTMyMDA0MjNkZDM2YzNjYWEwZGZiZmJjNGM2MjA4ODQ3MzQzIHJlbGVhc2UyMS1tYWludAorMjE5NDcgMWQ1MDgzZTZkMTdlNmNjZTU3ZTZhOWEwMGMyYjgzYmY4MzgyZDExMSBsZWdhY3ktdHJ1bmsKKzIxOTQ4IDZiZWYwOWRhOWI5MzI0ZjI4MmQ5YWQ2YjMzZjM2NDI5NzVmN2FmNTggbGVnYWN5LXRydW5rCisyMTk0OSAwZWJmYjI1OWVjYzY1ZThjYzI3MTVlNmE0ZTk1OTg0MGUwOTc5ZmQzIGxlZ2FjeS10cnVuaworMjE5NTAgY2JkMjJjOTAyN2IyYjNkM2YzNDk2NjY1ZjlhMDFlNDY0MmNhYmFkMiBsZWdhY3ktdHJ1bmsKKzIxOTUxIGZmOGUwY2UxZDk4Njk4MDZmYzY4ZDY1MjZhZDViMDA2Y2E1YWI2MTEgcmVsZWFzZTIxLW1haW50CisyMTk1MiAxNDFiZDcwZTBiNzIzMDU5YzZkZDU0OGZiYzc5N2Q0ZWM0MGFlNjg0IGxlZ2FjeS10cnVuaworMjE5NTMgMmUxNzNkYTExZDJkMTQ2YzhiYjgyM2E3MmZmYzU5ZjNkNjg3MWJmZiBsZWdhY3ktdHJ1bmsKKzIxOTU0IDgyNDI5MDdjODk1NzNmOGVlYjM2YWNlMjFiNGMwOTI5MTUzNzdmZjcgcmVsZWFzZTIxLW1haW50CisyMTk1NCA1NzI1MzNhMzAzOGQxODMyYzhhMjAwZmI4NzE4MTEyZGQ4Mzc1OGU5IHJlbGVhc2UyMS1tYWludAorMjE5NTYgNzlkMzA0ZTNiYTI1N2M5MGNhOTE0YTk4NTJmZjE0YjUxZDViNWQxYiBsZWdhY3ktdHJ1bmsKKzIxOTU3IGIxMGZmMzM3ODk2YmU1NzdlZDdjM2VmNDAxYjNkOWFiNjNkYjU2ZDAgbGVnYWN5LXRydW5rCisyMTk1OCA1ZGUyM2E2MzhhZDY0ZTlmNTk1ZGNhZDk3NzRjZDAyZjM3YTlhOWIzIGRlc2NyLWJyYW5jaAorMjE5NTkgNzQzZjhlMWQ5NTNjYmMxYmVmNjg5NGFlYzA2ZTA4YWIyYThlYTdhMSBsZWdhY3ktdHJ1bmsKKzIxOTYwIDU3Njg0ZDNjZWZjZTkxYzAzOTE5YjFjNTFkYjQzZDhkYzVmNTRjYWMgbGVnYWN5LXRydW5rCisyMTk2MSAyZDY4NjI2MTQzYTc5YzlmYWY3MWIwOWU3YmM0YzVjYzA0MTA5OWJiIGxlZ2FjeS10cnVuaworMjE5NjIgMjJiMmY0YjQzNmFmZjgzOTAyNWE1Mzc3Yzk2ZDMxMzBjZmI4OTVjZiBsZWdhY3ktdHJ1bmsKKzIxOTYzIDRkMzNhY2JkYzUwOGY0YmQ3OTZiZjFiOGYyY2JiMDRkODM3NjVlYTIgbGVnYWN5LXRydW5rCisyMTk2NCAyM2FlNDdlMDAxMTlmM2M2OTYyZWI3NDg4NjE5MDUzODE2NGMzN2I4IGxlZ2FjeS10cnVuaworMjE5NjUgNDQxNTUxMjFmMDJiMWUyODM3NDFmNTYyYjIyNDNhYjZiNTBmY2E1MCBsZWdhY3ktdHJ1bmsKKzIxOTY2IDVlYjQ2MGE2NWZmNzBhMzRlNWY0NTg4NWU5YzA3OWM2NDVkNTk2MDcgbGVnYWN5LXRydW5rCisyMTk2NyAwMWFlOTYyZGY4ODVlNGU2ZTdiY2NjOGYyNTU0NjEwMjM4Y2MzMTc0IGxlZ2FjeS10cnVuaworMjE5NjggOTg0ODRlZjIyNWY5Mjg5ZjYyMTgxNTljYTdmM2I4NGY3MTZjODAwNyBsZWdhY3ktdHJ1bmsKKzIxOTY5IGFjMTNhNmNlMTNlMjRjZDBkYWExOGNmNDAyYzg4YzM3NDU5NGZjNTYgbGVnYWN5LXRydW5rCisyMTk3MCAwMWM2Mzk5NzFiZmYxM2JmZDU0Zjg0NDk2ZTgyYmVjOTYwNTAyMTk4IGxlZ2FjeS10cnVuaworMjE5NzEgYjQ2NWNkNTBjZjM2NGE5NjIzNWFiMjM3YzQ1NGQ5OTY5N2FlZjE3OSBsZWdhY3ktdHJ1bmsKKzIxOTcyIDBlMjIzMTJjNDczMzRiYmQ4OWNiOWRlMzIxYjUzY2Q1NWRlMDZjN2MgbGVnYWN5LXRydW5rCisyMTk3MyBmOTk5ZDM2MDlmNzQ2NmRjNjQ1MjczMmZiN2E1YmQ1NzNmMDE1ODA0IGxlZ2FjeS10cnVuaworMjE5NzQgMjQwMjA3MGVlMDI0YzMyZTIxYmE1YzA3NzhmMDI3NTY0Y2YwN2U5YiBsZWdhY3ktdHJ1bmsKKzIxOTc1IDE4ZGYwOTc4ZGU1ZDJlMTEyMjg3NmRmZGM5ZDIwNTZhZTI4NjYwMjYgbGVnYWN5LXRydW5rCisyMTk3NyBiMzA3ZTVhOGI0ZDhkNTkxZjlmZTk0NjE4OTJjMmUzZDYxZGNhNjE3IGRlc2NyLWJyYW5jaAorMjE5NzggMDE0NjM5ZGM2NWY4Yzc2NGQ5MTY0YmE0YjQ4NGZjMjM4NWZkNzc5ZiBkZXNjci1icmFuY2gKKzIxOTc5IDdjZDIyYmY1NmQ3YmMyMTgxYzQzMmRlNjc3ZjUwOWE3Y2FhOGIyMTIgbGVnYWN5LXRydW5rCisyMTk4MCBkMTExOTYzM2E3M2U5Y2RkYTZiN2QxZGZjNDFjZDVjNTkwYWQ1YWIyIGxlZ2FjeS10cnVuaworMjE5ODEgMDJiODFkZjA0OGJjNTlmNjdmYzY5YTVjMTA2ZjIzZTQyZWU2Njg2NiBsZWdhY3ktdHJ1bmsKKzIxOTgzIGMyZmJiNTk0MWVlNTZmYjhhOTg1NmU5M2IzMDNkNDQ3ZjA5YzJmZGYgbGVnYWN5LXRydW5rCisyMTk4NCA0ZDBlYTRjMjM4NmQ1ZDg4YzQzMzcxOTFmMGIxNzcwYTliNzc4MGYyIGxlZ2FjeS10cnVuaworMjE5ODUgM2Q1M2I1OWY0OGU2NmM4MzVkMDI4NjM5Yzg2ODhlNjNiYTkxMGE0ZSBsZWdhY3ktdHJ1bmsKKzIxOTg2IDYwNDc5MGQ0OTNmYTczNTlkNjZlODJmOWQwOGY5MjhmY2RiMmZhOGMgbGVnYWN5LXRydW5rCisyMTk4NyAxOGEzZTBkODgwOGUwZjc1NTY0YjEzYzkxZThiYzEzMGNhN2RiZjk5IHJlbGVhc2UyMS1tYWludAorMjE5ODggZDU5MWE5NmFlZDA2NDNkNTllZTY3NTRiYmVmYTZjY2NiY2Q1MWJmNSBsZWdhY3ktdHJ1bmsKKzIxOTg5IDk2NDU1ZjRhYmFkZDMzZTdiYTQxMTA0ZjBiNDIyMmU5Njc2NzUxOWIgbGVnYWN5LXRydW5rCisyMTk5MCA0YTQzMTk1MjY3NmI1N2IwMmViYjE3YjIyODM3OTA1NzU4NWI3NmNkIGxlZ2FjeS10cnVuaworMjE5OTEgNmQ5ODc0YmI5NzhmYmY1YzVmZDlmNjJlZThlMzdhZDM1ZDZhNmRmOCBsZWdhY3ktdHJ1bmsKKzIxOTkyIDk5OGY4MDUxNGExMzEyOTg4YjM1NDQ5NTgwZDQ0NGM3YjA1ZmQ2NDYgbGVnYWN5LXRydW5rCisyMTk5MyA3NjNiYjZmYWUyODBmZjcwMjdlZDc0ZmUwMGU3ZTQ1NjZkZWMyOTczIGxlZ2FjeS10cnVuaworMjE5OTQgNzBiOWI2ZjRlNzljMmE4Mjk2NGNmOTdlODhlN2MyNDJkNDEyZmMzNSBsZWdhY3ktdHJ1bmsKKzIxOTk1IDQ0NjJjNTdmNmM5NDhkZGQ4ZDAyNmJjZTZjZTVkMTZkZmNhNzA2Y2IgbGVnYWN5LXRydW5rCisyMTk5NiA3NGYwNTBmN2MzNjRkZWZiNThjMTlhNTc4YjZmNzQ1ZjI2YzUzZDg0IGxlZ2FjeS10cnVuaworMjE5OTcgMWI2ODY4ZTg5YTIzZThmMGEwZTA3Y2FiMWQ4Y2VlYzI3OTQyYjJmOCBsZWdhY3ktdHJ1bmsKKzIxOTk4IGE4YjFhY2M3YTIxZjU0ZDNkNTJkNGVmZWY0ZTA3M2I4NjRjNWRlZjAgbGVnYWN5LXRydW5rCisyMTk5OSA4MTMxNWI2Zjk0Njk1MTAyMDc0ZjRiMWMwNDc3ZjMyYzMzYThlMGRhIGxlZ2FjeS10cnVuaworMjIwMDAgNDEwMDdkNTBjY2I3M2QyNzU2MDNkY2U2NDA2M2Y5YmYxODg0Y2JiMyBsZWdhY3ktdHJ1bmsKKzIyMDAxIDI5ZTY2MWM1MmMwYjU1ZTliNThiYmIxN2YwMjU2YTdlYjRmZWU5ZjYgbGVnYWN5LXRydW5rCisyMjAwMiAwYzNhZDUwM2FkNmM0OTIwMjgxZTM2Y2Y5ZTM5ODUzOWY5ZjE5NDJiIGxlZ2FjeS10cnVuaworMjIwMDMgYzMwNzFiZDZhNzEzMzE4Y2IwYWI3OWVmOTY5ZmMzM2ZkNWMzMDA2MSBsZWdhY3ktdHJ1bmsKKzIyMDA0IDEwNzMyNjUxNTQyNWRiNzlhOTI5NDJiMDU2OTA1YjgxNmE4NGU3NWEgbGVnYWN5LXRydW5rCisyMjAwNSA2OTNiMzk4MzFmNzE4MTA3MjU1NzQ2ZTIwMTQ1YjU0NjQ0Y2Q5MTk3IGxlZ2FjeS10cnVuaworMjIwMDYgNTAwMDRiZWQ0ZTY1YTkxNmIzYjUxNTIzNGE3YWY5Yjk1MzNjYWVjYiBsZWdhY3ktdHJ1bmsKKzIyMDA3IDMxNWIzY2IxMjdjMDYyMjFkODQyZWVhZWRiNWIwMDAxODQyMTEwYzAgbGVnYWN5LXRydW5rCisyMjAwOCBjZWJiNGUxODc0NDk5ZDQ4MzA1NzcwMTE1NTAyYjg2MjJjNjRhZTNjIGxlZ2FjeS10cnVuaworMjIwMDkgZGM5YmFmODBjNDVhZmQ5MjY3Njc5YTY1NjYzZDllMWFhNDdkZGIxMCBsZWdhY3ktdHJ1bmsKKzIyMDEwIDQ2NzdkMmZmMzE1MDhmNWZhNmFhYjY0MGM1ODM0ZjU1OTA2MzNmNDkgbGVnYWN5LXRydW5rCisyMjAxMSBhNjM2MWMyZTUwNDRhY2Q0NDcxYWE4NTQ5YzNhZDA0Y2UxMGU5OTc4IGxlZ2FjeS10cnVuaworMjIwMTIgMzNmODIwODA1NTllMTY5OGQ0MDc5MjM5MjJjNDBjMTdhZTZhYTY5NiBsZWdhY3ktdHJ1bmsKKzIyMDEzIDNhYTg3ZjM0Y2FiMDFiNjQ0ZDI2MjJhMDM5MGYxMjYxZDNjOTQ5OWYgbGVnYWN5LXRydW5rCisyMjAxNCA2ZjkyNDJkODcwNTllODRmYThhOGFhNjdlYWU0OWJjZmRlZDYyNjY3IGxlZ2FjeS10cnVuaworMjIwMTUgNDA5MDA2MjAyOTNlNmQ2ZGNjMDFjZDVkYWNmZTIyOTYwMzlmMTFmMyBsZWdhY3ktdHJ1bmsKKzIyMDE2IGI4MGFjOGUzMWE4MDJlZmU3NDk2MGQzMzg3NTI4MTI0MzMwMzc1NzMgbGVnYWN5LXRydW5rCisyMjAxNyA3YzkyODExNmJhYTAwZGUwZjNkMWMyNDY1MDVlYjRhM2VmODllOGFlIGxlZ2FjeS10cnVuaworMjIwMTggMDgxZDk2ZmJjZjQzMmNiYjc1MThkZmU3NjBkNTdjMGYxYjY1ZTgwZCBsZWdhY3ktdHJ1bmsKKzIyMDE5IDFiYzFmZGYxNDgyYjA2Yzc3ZmFjYTU2MGE1YzJjNmI2Y2I2YzVhYTUgbGVnYWN5LXRydW5rCisyMjAyMCBmZGIzODhmMmRmNGVhYTczMTkwYjQyNTAxODQ1NGUwZTkxZDRmZWI2IGxlZ2FjeS10cnVuaworMjIwMjEgMTMyYzRiZmRiYTc0ODAxOGNkMDY2MGUwYzkyMzQ5YzI3ODkzOWYyOCBsZWdhY3ktdHJ1bmsKKzIyMDIyIDEzMWE5Zjc1ZTI1ODJkZDU0ZWY2YzEzZGE5NjU2NTcwY2U1ZjJkNDggcmVsZWFzZTIxLW1haW50CisyMjAyMyAzY2M2Njc1MDY4N2Q1Y2U4MzRlNjUxOGRkNmYzZjUxYTBkOTVkYmZlIGxlZ2FjeS10cnVuaworMjIwMjQgN2U1MmJmNTJhZTMzNDg3ZGM0NzVmMjAzNDYzOGZjNWJjOTA3OWM2ZSBsZWdhY3ktdHJ1bmsKKzIyMDI1IDJkZWE0MGU0MGQ5ZDU3M2U1MDY3YTVjNzYwZTk5MGEzNzUyNGQwYzcgbGVnYWN5LXRydW5rCisyMjAyNiAwMzMwNTYwMmJhOWI4NWIzYmZhODFhMzM3YjI2ZDQ1ZTRjYjhhNDQ4IGxlZ2FjeS10cnVuaworMjIwMjcgNWUwYTQwY2NiOWRhNGNmYzk1YTcyN2U1NDBhMGIzZWRjNDlmMDZmZCBsZWdhY3ktdHJ1bmsKKzIyMDI4IGE4NTc1ZjM1OGI5ZmRmN2Q3MGE1NGMxMzU0ZTlhYWU4MGYwYWQ3YWQgbGVnYWN5LXRydW5rCisyMjAyOSBhYjhhYTQzMDIxMDk5MTMyMjZlMzE3ZjA3YTc5MTY1ZGUzM2VjN2JhIGxlZ2FjeS10cnVuaworMjIwMzAgYzAzMmFhZjZjODEyMzIwZGYyMTIxODUwOGRmZDM5NjgwNzk5NzA0MCByZWxlYXNlMjEtbWFpbnQKKzIyMDMxIGExZjZmZDAxMjA1ZjAyMmNjZWUzMDI2ZGYwZTViYThmMGRjMDFhNmIgcmVsZWFzZTIxLW1haW50CisyMjAzMiBlNjZkNjQ3YjczMmYyM2Y3NWI0MWE3ZWJlZTg1Nzk2N2IxYjY2OWNhIHJlbGVhc2UyMS1tYWludAorMjIwMzMgMWM1ZDI1NmIxMjVhNGM0OGEwOTgzY2QyODgwZWRhZmJkZTRjYmVmNyByZWxlYXNlMjEtbWFpbnQKKzIyMDM0IDA0NWY1NTEzNWFkMDA0YTRjYmIxZmVkN2U1NTM1OGRhYzVjZGMwNWQgbGVnYWN5LXRydW5rCisyMjAzNSA4NzZhZWNlZjY0ODNmMzRlMzk1MjNjYzg5MmE4MzJjMDc5MzMyYzViIGxlZ2FjeS10cnVuaworMjIwMzYgM2U1Y2U5OTQ1OTg2MmEyMjI3Njk2ODQyZjUxZWViN2RjODVmZGUxYyBsZWdhY3ktdHJ1bmsKKzIyMDM3IGUxNDY0MTQzYzQ2MzMwNjI0NDY0YmRlZjlhYzE0NDc4MjA3NGY5OGYgbGVnYWN5LXRydW5rCisyMjAzOCAxMmNiYzk0MmY1NDlkNTM4ZWZmZjA1ZDk3NmNmYTY3MDcwMDk2ODE2IGxlZ2FjeS10cnVuaworMjIwMzkgNzdmZDIwYmNjNzY2MWE3MGI4NGI1YjE0ZDQzYmFjZjhhMmE5YjQyYSBsZWdhY3ktdHJ1bmsKKzIyMDQwIDQzYWMxODA0ZDJhYWNiZGRjYjVjOTM5OGI4OThlNTEzMGQ0NzZjMDQgcmVsZWFzZTIxLW1haW50CisyMjA0MSBlZjIwMzFjNTQ4NzU3NjMyNGQ2N2YzNjcxYjlkNTFiODQzZjA1ODZlIGxlZ2FjeS10cnVuaworMjIwNDIgNTMzMWY0NzA1OGExOTkxMjMyMDFhMjFmZmRjMjc0NzJiZWZiYzQyZCBsZWdhY3ktdHJ1bmsKKzIyMDQ0IDJiMTY1MjZhMzVhNGRlMTIxZWI3ZjFhMmY2ZTVmNmM2OGM1MTFjMjUgZGVzY3ItYnJhbmNoCisyMjA0NSBmNTJjMDgzYjU1ODgxNmUxM2I2MzU5ZmY4ZTc0NzQ0NzA3YmYyMzFlIGRlc2NyLWJyYW5jaAorMjIwNDYgMzE0N2VmZTMxZWI4OTgyMTUzNjljYjcxZDFhODEwYjY5YWViYzUyNiBkZXNjci1icmFuY2gKKzIyMDQ3IGQ5NzJjZWI0ZGMwNjQwY2YwNTE5YjVkMzgyNjc1Y2M5MzQ4YzJkNzUgbGVnYWN5LXRydW5rCisyMjA0OCBkNjQ2MjhjYzhmZmM4YTg2ZGZmNzNmYzEzYjY3NWYzZDUzYWNhNDYyIGxlZ2FjeS10cnVuaworMjIwNDkgNmYzMDFiM2NmMzIzZWM5MzU0OWM2ODg2ZjAxYjA1YjgyOWU3NTg3NCBsZWdhY3ktdHJ1bmsKKzIyMDUwIDRlZTFmZWUxZDRhZGI3NDMwNDBiZTVjOWM2NGM4ZDQ1N2Q3MWIxZWUgbGVnYWN5LXRydW5rCisyMjA1MSBkMTY2OWFmOWQwZWM1MmQzN2I3NDk1ZTEzYzM1MzBkNjEzZWU1MWViIGxlZ2FjeS10cnVuaworMjIwNTIgNzM0MzYyMmYyYjg1ZDE0MTI0YTRjM2I3OGU5ODBlNjBjNWI5YjhlNSBsZWdhY3ktdHJ1bmsKKzIyMDUzIGQzZDljZWEyMzE1NjY5YTIxZTc0ZTRlOGNhMjJhNmRjMDFmMDUxNDMgbGVnYWN5LXRydW5rCisyMjA1NCBhZTE5YzY5OTA3NDk2MjBiMGFlOTE4YTc4N2U3MjA0NjJjMzZkYWJlIGxlZ2FjeS10cnVuaworMjIwNTUgOWFjMWQzNWY4MTM2NmNlMmIyNTRlODIyYjVhZjg4ZWJiYzJlMWExNiBsZWdhY3ktdHJ1bmsKKzIyMDU2IGVhOGU5NjNkOWU2NzI0NDY5ZGNmNjM2MTYwMWJhNmYxYzI3OTlkYTEgbGVnYWN5LXRydW5rCisyMjA1NyA2ZjU5MDMyYWYxNThmMTg1NjE0NjA1ZTkzYTBlOTYzNTMwOWM3ZWMzIGxlZ2FjeS10cnVuaworMjIwNTggODEzMzdmYmE3ZGRiZTA1OWIwOTE4MmYxNWY4ZGYxNTI3OTk5ZDQ0MyBsZWdhY3ktdHJ1bmsKKzIyMDU5IGMwNzY1NWY3MjY0N2IwZGZkOTQ0MmRmNjAyZGMyYjJlYWI5YjE4MDEgbGVnYWN5LXRydW5rCisyMjA2MCBhNWFhZjY4ZmZjZGFhYWJjOTE4N2RkYWFhZTRhMjc4NjkzY2IyZDNkIGxlZ2FjeS10cnVuaworMjIwNjEgOWVjY2Y3OGZlYTFhYzAzZWI1ODliYzc5MDYxZmI4YTYzYzRiOWYwZCBsZWdhY3ktdHJ1bmsKKzIyMDYyIDQzMjQ1N2YwMjI4Nzg0MTA5NmJiZmY0MWQ1YWRhZGJkNzMyYTJmNjUgbGVnYWN5LXRydW5rCisyMjA2MyBjYjc2MTE3YzFiNGJiODAwOWIzOWU0ZDgxODExNmZiMWVlNzQ3Mzk1IHJlbGVhc2UyMS1tYWludAorMjIwNjQgMjc2MzZjOTFjYjI3YzVhMTA1NDQ4NzRhNjUxYWUyMzZlZTAzN2JmMSBsZWdhY3ktdHJ1bmsKKzIyMDY1IDFiMDlhOWNiMDZkNTlmNTAwMGUzMjdkZDM3YWRhMjdhZWQ2YTNiNTAgbGVnYWN5LXRydW5rCisyMjA2NiAzYzEyZWVlN2JiZDQyMzY0NzZiYWM0NDFhN2M3NGEzNWEwMThiMjEyIHJlbGVhc2UyMS1tYWludAorMjIwNjcgYTM1NjZlZTViMWY5NDg0NDRkOWY0YjZhMDQwNTM3NTE2NGY0ODdjMiByZWxlYXNlMjEtbWFpbnQKKzIyMDY4IDExMTEyYjczNmM3YjVhYzBlMjdhYWU3ZTQwNDFkMWM3NGI3N2U4YzggbGVnYWN5LXRydW5rCisyMjA3MCAxMmI0YmM0YTgwNDg4ZTU4M2EzMDAxNjdlY2RhNDAzZDU0YmQyZDZmIGRlc2NyLWJyYW5jaAorMjIwNzEgNDA4MWI1NmYyMGZmNTliZmIxMTM1NjQ0YThiYTJlZWExMDY0MmQyYyBsZWdhY3ktdHJ1bmsKKzIyMDcyIDJkZmZhM2QzZDk0ZmYxYWRhMmI3ZGYwMGM1MDVkODgzY2YxNTc5OTcgcmVsZWFzZTIxLW1haW50CisyMjA3MyAwZTIxMmU4OGQzM2QwOTJkOWQ0NzE2N2VlNmE3NDE2MjJiMDQ1NDU5IGxlZ2FjeS10cnVuaworMjIwNzQgNGQ5ZWJlZWRiZDA0NWZlMThhOTdkYzQ2YTUxZDBlYjI2Y2FlZjgxYiBsZWdhY3ktdHJ1bmsKKzIyMDc1IDhjNDAyYWRlZWNjYmI1YjAzYWFlNmRlNmYzZmNjMDAwYzY3YzI5MmUgbGVnYWN5LXRydW5rCisyMjA3NiAwYjljZWE2M2JjZmNkY2MzM2M5ODQyOTk0Mzc0NmVjNjk5MGY1ZjU5IHJlbGVhc2UyMS1tYWludAorMjIwNzcgZjVlMjVmZTQ2NmE0MTkxZGQ1ZDBkNjIzMTc3OTkyNDQ2ZWVmNzFlZiByZWxlYXNlMjEtbWFpbnQKKzIyMDc4IDkyZWYzOGIwMTM0NjNiMjYzZTM3OWI1NTBlMGY1YzQ5YzBkMzBlMGIgcmVsZWFzZTIxLW1haW50CisyMjA3OSAwY2UzNWU3ZDZlMzM2NjM1MzZjY2NiOTlhMDRlZGQ1NDdlZGNlYzQ5IGxlZ2FjeS10cnVuaworMjIwODAgNjQzNDNhMTI3MjA4M2MwNTBjYzJlYzZiNjhhNWY2NWFjMTk0YzI4OCBsZWdhY3ktdHJ1bmsKKzIyMDgxIDIyNDU2ZDBlZTczNzk4YzQ3MjI2NjNmNjc3NGYxYjlkZDg2MDQ0OGUgbGVnYWN5LXRydW5rCisyMjA4MiBjN2JiOTU2M2IxNDk4MDM3YzNhMDJiZmVlZWI3MzMzM2E1MjNhMDEyIGxlZ2FjeS10cnVuaworMjIwODMgOWIyOTFjYTY1NDZjNGI0ZjkyNGZlNmZjMWIyZWM5ZmYyNTM2ZGNjNiBsZWdhY3ktdHJ1bmsKKzIyMDg0IGYxMmUxYTc2NmExNDJkNTQ3NTU0N2RkNDM1N2Q3MjE2MjUyOTZhMzcgbGVnYWN5LXRydW5rCisyMjA4NSBhYWFmYzg1MmMyZDUzZjhkMjkyNTJmNzdlODkzODg0N2E1MjMwNjkyIGxlZ2FjeS10cnVuaworMjIwODYgZmI4MzdjNWFlNWQzZjM2YjE4NjllZjMwOTBhNTU5MDg1MGM1ZDA4MCBsZWdhY3ktdHJ1bmsKKzIyMDg3IDViZGJlNjFhMGMyOGJiMmMzZjk2MDU4NTBmZGJkMTBkMmMyNzI0OGEgbGVnYWN5LXRydW5rCisyMjA4OCA1OWI3ZThlY2ZiOTY2NzMyMWQyOWY0YTMzNzZiY2I2NTE0NGEyNzVmIGxlZ2FjeS10cnVuaworMjIwODkgNzFmZWFlN2JmNTYwOTRiZjM0MDE3MTk0Y2YwYTZjOTk5MWEyMWMwMiBsZWdhY3ktdHJ1bmsKKzIyMDkwIGJkYmI3YzRkYzYzYWRjNTc3Njc1MGExNWQyZGQ2YjYzMTAxZGU2ZjMgbGVnYWN5LXRydW5rCisyMjA5MSAyMjE1NWE3MTgyNTQxNWU3M2JmODVhYTllMmUxNDc3NjA4MDU2MmYzIGxlZ2FjeS10cnVuaworMjIwOTIgZGVhZDlmYWJiZWZiN2I1N2EwMTllY2VjNGU5NTU0MGYwMWEwYzVmNSBsZWdhY3ktdHJ1bmsKKzIyMDkzIDBiMTYyNWE5ZTg5YTcyY2ZlYzY3Y2Y3Y2VhMjgyY2Y3MGU1ZTEzNGEgbGVnYWN5LXRydW5rCisyMjA5NCBkMjBhNGNhMDcwNWMxZWFkOTMwOWQzNmEyNjRhMmFhOTRlMTBiYTg1IGxlZ2FjeS10cnVuaworMjIwOTUgMDEzMmFmNjM1MDZiOWNkZTBkN2Q3NmM3MWQ5MjRmYWFkN2YyZmZkYSBsZWdhY3ktdHJ1bmsKKzIyMDk2IDg1ODQyMTdkZGM4ZDZkMjA4MjFmYTI3OTg3N2MzYzkxYzg3NzAzNGMgbGVnYWN5LXRydW5rCisyMjA5NyBjYmFiZTUyMmI4ZjE2NzZlNWY3YTgxZTI3MWFhODIzZDEyMTE1NGJjIGxlZ2FjeS10cnVuaworMjIwOTggMjJlODIzMTQ2M2JhNmIyM2UxNWU0ZGRhMTQ1YzZkYzlhYmM2Y2Y2NSBkZXNjci1icmFuY2gKKzIyMDk5IGVkZjA1OGIxNmRkZjNmYWQzZjIyNTUwZDQ1ZDU2YmIyNGE0M2NmMzggbGVnYWN5LXRydW5rCisyMjEwMCBjYmZkZjYyM2MyNjZmNjkzZmRhMjllNTUxY2NlYjE0Yjg3ZTViNDYzIGxlZ2FjeS10cnVuaworMjIxMDEgNWFmMWVlNDIyNTc1MjdiNTI0YWQ2YWQ5YzNlZjcxYTBhYzM5ZDQ2MSBsZWdhY3ktdHJ1bmsKKzIyMTAyIDc2MjhhYTgxNmFkYTlkYTk2OGEyNGMzNTM0ZDEwYmU5YjMyM2ZiZjAgbGVnYWN5LXRydW5rCisyMjEwMyAyOTEwNDE3M2EwNzJlYmQ2M2MxY2RmZTY3MmNkZmNhYTMwODc1MDFkIGxlZ2FjeS10cnVuaworMjIxMDQgNDQzYTg2MjJlODUxYWJjZjYyZTI4NjVmYWNjMjU5MTdmYTAyODc2NCBsZWdhY3ktdHJ1bmsKKzIyMTA1IDc5YzY3NmY5YjM0YTkxNDBiOTg0N2U3OWMwNTgxOWEwNTBiMWRiODMgbGVnYWN5LXRydW5rCisyMjEwNiA5NzUzYjAyNjlmM2FjMGRkNjg0MGVjOGEyMTk0M2ZmMmViZjQ5NmMyIGxlZ2FjeS10cnVuaworMjIxMDcgMzRmMDFjNmNjODE4NjEzNzJlZjk4OTgwYWFjZDM4Mzc5NmJiZDhjZiBsZWdhY3ktdHJ1bmsKKzIyMTA4IDU1YjQ1YjQ3ZmM0ODc4ZmJmNDU0NDhkYzczNzkzODY4OWMyYjRjNTIgbGVnYWN5LXRydW5rCisyMjEwOSAzNmU3ZDFlYWJkOTIxYWIwNDM0ZTc1MjBkYWZhYzFkMzE5N2I0YzQ4IGxlZ2FjeS10cnVuaworMjIxMTAgOTE0MTIyZmJlYWQyZGMyZGRiYTk5OGIzZGQxYWM0NTM0ZTBjMzg5YiBsZWdhY3ktdHJ1bmsKKzIyMTExIGY2MWRmOGYwY2I0MzhhNjc1Mzk0ZTcwOTlhYTk0M2RlMjU5MGRkNjUgbGVnYWN5LXRydW5rCisyMjExMiBkZWFmN2IxMzliYzhmNGJiYzBjNmNkM2VhMTg1MmY3M2FlN2RmNDhlIGRlc2NyLWJyYW5jaAorMjIxMTMgZjA4MjE4OWE0NDQyOTRiNDY4OThmNjVlNWE5ZDZkZDViNTM2MTgzOSBkZXNjci1icmFuY2gKKzIyMTE0IDUxMGY3ZjZhODc3ZWNmNzRiNTYzZmVmZDg2ZTQ5YzQwYjE0NmVkNGYgbGVnYWN5LXRydW5rCisyMjExNSAyYmM2NDg5MzJkNDRmYjE1MzNkYzQ2NmI4NzBhZjQwZDQ0OTg0NzdlIGxlZ2FjeS10cnVuaworMjIxMTYgYjczMjY5MGY1NjFjNmU3NjViNTAzNzU4YTBlMGU5NTZkM2JjNTk5ZCBsZWdhY3ktdHJ1bmsKKzIyMTE3IGU3YzNjOWJmNTJiMjdkNThlYWI2YzliYmYxYTE1NTBkYjNmNzQxZGMgbGVnYWN5LXRydW5rCisyMjExOCA0MmRkNjI1MWNjM2NjNGYwMWJkNDExZWIwOTEzMTljMzM3NDI4NDUyIGxlZ2FjeS10cnVuaworMjIxMTkgNzJhMzY5MWYxMDcxZmFmMmUyNjExYmU5YmMxZDdiYTJiNGJmZTQ3YSBsZWdhY3ktdHJ1bmsKKzIyMTIwIDUyYmQ5ZTFkYjNkOTBhNTIxNjllZTFhMjdlMDZhZDdiZmYwMzI0ZjcgZGVzY3ItYnJhbmNoCisyMjEyMSA1MmU5MmNmYWIyMzc2YTNkNDUwYTA4ZDk4NDg4MWFhMWRkMjM0Mjc0IGxlZ2FjeS10cnVuaworMjIxMjIgMmYyNzgzOGQ4ZmM1OTQyNzU4NjI0ODZmMDMzNTA1MDEzOGUwNTc0OCBsZWdhY3ktdHJ1bmsKKzIyMTIzIDJlNDlmMGU5MmJjNWFhNWM4Yjg2ZmRlOWJjZjJlZDNiZTMyZWIwZTcgbGVnYWN5LXRydW5rCisyMjEyNCAxZWZkNjliZjE4NGMzOTA4NTIzYjM5MTg1Nzc1YTViMTJkY2IwYjJkIGxlZ2FjeS10cnVuaworMjIxMjUgZmEwMmY3OWJiNDkxY2M3MTEwZjg3NGE1MDVhYjIyOGJiNjM2YWEzMSBsZWdhY3ktdHJ1bmsKKzIyMTI2IDBhYTE5MTZjZjEwMzQ5MWRjN2I2ZDRlY2Q4OWJiYWY1ZDZmMzU4N2MgbGVnYWN5LXRydW5rCisyMjEyNyA4ZTJmNjI5NmZkN2I0YTY3NWQ1YzBiYTZhYzAwYWUyZjZhY2NmZWFmIGxlZ2FjeS10cnVuaworMjIxMjggZjQ5YTEyZTdlMjRhNDBhMGY0NzQ1MzQ3ODI0MjkxOGZmYjI0NjhkMiBsZWdhY3ktdHJ1bmsKKzIyMTI5IDRiZmQ4YTVkYTBiMWRmMWI3Zjc3ODlkNjQxNDRhZDEzYTVkNmVmZjQgZGVzY3ItYnJhbmNoCisyMjEzMCAyM2Y1NWI5ZjRiYzc0NGIxMTBmNWI1NTVmNDQxNGQ5NDUyODcwYmYyIGxlZ2FjeS10cnVuaworMjIxMzEgNGE4ZGVkMDg3MjYyZjJjNTY2ZTA3YWRkMzBiNjFjMTBkNDVjNTZhMyBsZWdhY3ktdHJ1bmsKKzIyMTMyIDBkZWRhZTdiZTNhYTEwNDcxYmFjMGVlOTdjOTZlNmRlMDY2NTlhMzMgZGVzY3ItYnJhbmNoCisyMjEzMyAwZmRjNWVlYmU0MmQxYzUxODdiOTY0YzZiNTEwYjc2MTE5ZTBjOWExIGRlc2NyLWJyYW5jaAorMjIxMzQgNmMwMTg1ZGY3MTQ3YzM5ODMwNDUyZjZjNWZjMzQ5NjZiOGE0MDZhYyBsZWdhY3ktdHJ1bmsKKzIyMTM1IGRhYjk1Y2E4YWNmYzJhNGE3MDY1MjA0NWM3NTlhYWY5MzM0MzE0ZWIgbGVnYWN5LXRydW5rCisyMjEzNyA0MTkwODY5Mzc3NDY3NWFiNmEwMWU4NzhiZWE5ZjNiYjJjNjU0ODI4IGRlc2NyLWJyYW5jaAorMjIxMzggNjUwOTczZTI5MjZjYTFmNDA3ODJkMWE3MzEyYmQwODFjYjQxNzZkMiBkZXNjci1icmFuY2gKKzIyMTM5IDA5ZGYzMjU0YjQ5ZDdjOTMwNjU4NTMwMmZlODE1YWIwYmRiNTM0MzkgbGVnYWN5LXRydW5rCisyMjE0MSAxNTQxZDVjNmE4ZjE4MTIwOGFhNzM3NmU1NzhiMDdhMDcyYzllZWRiIGxlZ2FjeS10cnVuaworMjIxNDIgOTAwZTM4NTI0YmYyOTFiMWNkNmFlZTJlMTNiMDk4NTk2ZGYzNjQ3YiBsZWdhY3ktdHJ1bmsKKzIyMTQzIDcxNDkxNzNlOGVkY2RhYzZiZmIyNmFlNTUzYzBkMDNiYTk5MjI0NjMgbGVnYWN5LXRydW5rCisyMjE0NCBmODU4Zjk4N2U3NzJhMjkyMDA2ZThmNDYyY2ZkMDQ1Yzk1NGFjNmE5IGxlZ2FjeS10cnVuaworMjIxNDUgNmMyMWU5Mzk0YjQ0ZjRmZTFlZDg4ZDY4YjdjOWEyYTdjMTM2ZGI2NyBsZWdhY3ktdHJ1bmsKKzIyMTQ2IGZlM2JjNGE0YWQ4NDM2ZTlhZTFkOGM1MzA5MDdjMzMwMDRmYjNjNmIgbGVnYWN5LXRydW5rCisyMjE0NyBhNWU0ZDRhMzBjOTgzODUzNjc2OTljMWQyYzM3MzBlMTRhYTYyMGU3IGxlZ2FjeS10cnVuaworMjIxNDggMDEzY2ZmY2ZkOGEzYjQwMTlhYTYzMmQwYzUyNTIxZDE0OWNhOGFjYiBsZWdhY3ktdHJ1bmsKKzIyMTQ5IDkwZDA2Y2JjZTI2YTRiMDE0NTc4OTUzY2RjMjEyNzI4MGUxZDQ2ODUgbGVnYWN5LXRydW5rCisyMjE1MCBlMDFkMjk2MzlkOGU1ZDNjN2E1N2UzN2MyN2Y1ZjU1MTk0YjQ2N2RjIGxlZ2FjeS10cnVuaworMjIxNTEgYTA4MTk3MDhmZTljNzJkNThiNGZlNjE3NTA4YWY1MTAzMWE0YjI1YyBsZWdhY3ktdHJ1bmsKKzIyMTUyIGY4ZmRkNTA4M2FmMzY1OTM4MGZkNTU5MTRmMDViNTIwOTZjNjhmNmUgbGVnYWN5LXRydW5rCisyMjE1MyAyYjE0ZjEzMDgyNzU1MjdkMmI0ZDRlYTJlNjZhMjNiN2YyNjIyMGM2IGxlZ2FjeS10cnVuaworMjIxNTQgMTM0NmVjZjMxOGYyNzdkMGJlNTJjYWMwOTc1YzQzZWEzMDlkZjYxZSBsZWdhY3ktdHJ1bmsKKzIyMTU1IDkzMDZkYWRkYzI2ZmRhYjc4NTgwY2UwNjhjODkxZGZlZDYxYzRiM2QgbGVnYWN5LXRydW5rCisyMjE1NiAzODhkZjQ5YzFjMzgyMjgyOGMzNTNhYjE5MTRlNmQ5Njk0NDZlYjMwIHJlbGVhc2UyMS1tYWludAorMjIxNTcgNGRkYzVhYjliZWM0MTlmNjMwYzNiNGU3NDg0YWM3ODNiYmQ0NGMyZCByZWxlYXNlMjEtbWFpbnQKKzIyMTU4IGY3MmQ2MWIxMjQ2ZWUwMWMxMzE4NjhhMjllZTg5MTcyYmY5ZTJiY2MgbGVnYWN5LXRydW5rCisyMjE1OSBlOTBhNjU4YTU4ZDRmNjMzYWZhMTYzOGI5YzBjMDczY2FmNWExNWQ3IGxlZ2FjeS10cnVuaworMjIxNjAgNDhlMGZiMDU1YzMzY2FiYTI0OWUzNzVlNGI3Mjk2Yzk1ZTg4NzQ5ZCBsZWdhY3ktdHJ1bmsKKzIyMTYxIGZlZmNjMWU4MGNlZTM1NjBhYjVhNzEyNGNkYzE2NzJjNzBkOTQwMWIgbGVnYWN5LXRydW5rCisyMjE2MiAxZGI2OTAwYTA3ODM1YTNmNWMzZTllYTg5NDk1Mjc3NDI3ZGZmN2E4IGxlZ2FjeS10cnVuaworMjIxNjMgYjc2MjIyMGE2MTU5ZmMzM2NjMmU3NzIxOWZkMjRhODdkYTNkZmU1ZiBsZWdhY3ktdHJ1bmsKKzIyMTY0IGYyODg1YjBkZGJhZWI2MGFjYjA2MDhlYmI0YWExODI5MzNiYzY0MzQgbGVnYWN5LXRydW5rCisyMjE2NSA0Nzg5YzEyYTg5ZjFiZjQ0MzIzYmIwN2YzZDg5YjhkYWZjYWY0NmU5IGxlZ2FjeS10cnVuaworMjIxNjYgY2Y5MjU0MjEwMDE1ZGI2Zjk2NjQxZmJiYzliYTJlNDY5YTFkYmM5ZiBsZWdhY3ktdHJ1bmsKKzIyMTY3IDlhYTVkNjZjZDEzZGNmYTNkMjJlNWRiNmQ4MDg4MGIyMjYzYTRhZDQgbGVnYWN5LXRydW5rCisyMjE2OCBlZWQ4YThhOGY2MjJjOGQ5OWQzOWNjODgyNmEwMTRjNjE0MGI5ZjE3IGxlZ2FjeS10cnVuaworMjIxNjkgZDc1OTAxMjJmOWEyNjEzNzMxMTMzYTNiNjJlNmQ0ZjZkMDljNDhiNSBsZWdhY3ktdHJ1bmsKKzIyMTcwIDkzMTNiNDhmMTFjM2Y4YzY3YmQyNzI4NWY5MDUxMTA3Zjg1NTUyNjkgbGVnYWN5LXRydW5rCisyMjE3MSA5MTllNjBkNzczMzQyY2E0YWFiYTM5MWE0OTllNTVjNjI5MmMyMWY4IGxlZ2FjeS10cnVuaworMjIxNzIgZjk0NmI3ZjdkODMxOGVmMzA0ZDNmNTY1ZTUyZDlkYjI5ODdjMGI5YiBsZWdhY3ktdHJ1bmsKKzIyMTczIGVkNjJhZDMwODM0ZWIwYjUzNTU4ZGE3MTFhZGY1MjE3NjYyOTE2MzIgbGVnYWN5LXRydW5rCisyMjE3NCAxYWU3MTg5NzZhYzZkYzExOGViMjRiZjM0NzdkZTRhYjJhZDI4NWI1IGxlZ2FjeS10cnVuaworMjIxNzUgMGMzMDdmYTM0NGI1Y2E2MzU2MzE5MWE0Njg2ODdkYjIzNzJjZGZlMSBsZWdhY3ktdHJ1bmsKKzIyMTc2IGIwMGU3YjM4Zjc3ZjI3NTFmNGQ3NTBhNzI2YzlkOGRjZWIzY2E5MzEgbGVnYWN5LXRydW5rCisyMjE3NyBiZDk3MmZhODQxYzVmZWI2YWNkNDc0MDVhNjg2NDQ5NDU0ODNkZjAwIGxlZ2FjeS10cnVuaworMjIxNzggOWMzZDUzOTVlM2ZkOTMwOTM5MmJjNmZkM2IzZjJlYjFkM2EzOTQyNSBsZWdhY3ktdHJ1bmsKKzIyMTc5IGQxNDRjODFlYWY0NDY4MGY5NTA3NmM4MjUzMDVkY2UyYWMxOWViOTUgbGVnYWN5LXRydW5rCisyMjE4MCBkYzRiZTdiZDY3NDYxMDQxZTAwMTY4YzI1NDI2MjM1NGU0ZjllMTlhIGxlZ2FjeS10cnVuaworMjIxODEgNjUxZTYzOTQyMDhjOGQ5MWQ4MzJiY2I1ZWE4OGNmYjhlOGFlZjEzYiBsZWdhY3ktdHJ1bmsKKzIyMTgyIDFlNjg2YjA4OThhMmY2ODczZWYzZTFiYjlmZTYzMTBlMzMzNzY5ZWIgbGVnYWN5LXRydW5rCisyMjE4MyA0NzFhOTAxODEyOWMzZmQxOTE5MWQ2NzdlZjc1MDk1MDdkOTM4NmYwIGxlZ2FjeS10cnVuaworMjIxODQgZjFjZjJhNDQ0MTc0OWZiMjAwMjMyOWVhZGZjNzFiYTAyOGRjOTQ0YyBsZWdhY3ktdHJ1bmsKKzIyMTg1IDM0Mjg0MjE2MjAxYmVhOTkzNWI0MTgyM2MxZTlkMTkzNWVhYjZjMGMgbGVnYWN5LXRydW5rCisyMjE4NiAzZGQ4ZTY0ZjUxMmU4NGFmYzRjMzg4YmY0NjU0Yjg3YjRjZmI3NzE5IGxlZ2FjeS10cnVuaworMjIxODcgOWU0YzEyNjczZmFiNDRmYmU1MjZlZGJjNmJiY2UwOTJkNGM5YmUwMyBsZWdhY3ktdHJ1bmsKKzIyMTg4IGRhYzljY2E0OTAxMjFjMWFiNjBhNTFiYWZjYWY3MmIwZDdkODA5ZGQgbGVnYWN5LXRydW5rCisyMjE4OSA4YjlkODdhZjYxZWJkYmY2OTUzYmZhMGE4YWU1ZWM0MzQ1MmE5M2JmIGxlZ2FjeS10cnVuaworMjIxOTAgMTEzZjBiNTc0NGM0MGM5MWYwOTA1MTA0NWY0MTEyYTYwZjQ5ZDIxNyBsZWdhY3ktdHJ1bmsKKzIyMTkxIDAwOTM1MDMxYjM3M2M1NDkwODZlMmQwMzZkYzc2MzdkZmQ0OGNmODUgbGVnYWN5LXRydW5rCisyMjE5MiBiYTllNGY1NTEzM2Y5M2JlMzY0MTJiMWMzOTZhYmRkYzJlZmNjOWY3IGxlZ2FjeS10cnVuaworMjIxOTMgOWY3ODc1OWE1MWIwZjczYzgzOGY4NmM1MzUwOTBiMmY4MGZhZGQyOCBsZWdhY3ktdHJ1bmsKKzIyMTk0IDRmNGQ4MzAzZGU2MGNmNmMwNmZkZTRmODk4MmQ3YjVlMmVhMzIxYjEgbGVnYWN5LXRydW5rCisyMjE5NSAwOGNkODFjZGZmYTlkZDJmNGQ2NjkzOTI4ZTM2N2Y3NmQwOGMzODVhIGxlZ2FjeS10cnVuaworMjIxOTYgYWNjZjE5MjU0MzFjNzcwZTgzMWYxNmI1NzRkNWRkZTdiYjFlY2I1YiBsZWdhY3ktdHJ1bmsKKzIyMTk3IDJiMTFkMTY2YjA3YjcxYTBjNTA3NDU2MzlmOWU5ZWYyZmQ4NzMyOTEgbGVnYWN5LXRydW5rCisyMjE5OCAzNjBjZWNlNzYxMjM1NWUzZmFlNGJmNGFjMjhiYjZkMTFhMjIwZWFiIGxlZ2FjeS10cnVuaworMjIxOTkgN2ZhMWY4N2NhNmIyZDNmNjJhYjhhODc4Y2ZkMWQ0MjAwYWQ4MTY2MyBsZWdhY3ktdHJ1bmsKKzIyMjAwIGIwYWFmNzgwYmNhNjZjN2RmNDFjOGVkNzkyMzM5MjJhYmE4NjU3NmMgbGVnYWN5LXRydW5rCisyMjIwMSAxMTRhOTBhNDNkYjdlOWU4MDdiZmQ0MTUyNDgxZmNmODY0YjMxNmNlIGxlZ2FjeS10cnVuaworMjIyMDIgODA1MDkwY2UzMjhhMDAxN2M4ZWUwOTI5NzBjNzkxYWUyNGZhMmNhNCBsZWdhY3ktdHJ1bmsKKzIyMjAzIDkwNTllN2MxZDhiMDE4YjdkMTcxNWY3ZTVkODIxZjU2NjFlZGI0YzUgbGVnYWN5LXRydW5rCisyMjIwNCA5ZmM0YTVhYmIzNjk0M2FmZjNlMzM0ZmM3YmM5YzdjNDc3ZDFlOGJiIGxlZ2FjeS10cnVuaworMjIyMDUgYWU0M2Y5OWI0N2UxZTI3NjZiZDI5ODg2NzUzY2VlY2FmMmY2NmQyNCBsZWdhY3ktdHJ1bmsKKzIyMjA2IGEyYjM1ODdmNTkyYThmNWRkZTlkZTdjNjRkMWJjMTczZDU5MGM0OWMgbGVnYWN5LXRydW5rCisyMjIwNyA4ZWE2MGUyYjBmMjE5ZTQyMzNiZmJhNWJlYTE2ODE0MGUxMDg1N2Q4IGxlZ2FjeS10cnVuaworMjIyMDggMjhmMGVhOGQ2Mjc4MWI0YWMyYzU0ZThmYmFhY2U0OWYwMDc3YmIzMCBsZWdhY3ktdHJ1bmsKKzIyMjA5IDJhZTM3Y2ZiMTg5ZjllOWFiNDhiMjI1M2Y1ZWQ5NGM2OTI2NGM4MjAgbGVnYWN5LXRydW5rCisyMjIxMCAxOWEzYzZhZjQzNzQ0NjRlMDE3MmMxNmQ2NDk1YTRlZGFjNmM5OGJhIGxlZ2FjeS10cnVuaworMjIyMTEgYjE2ZjhkMDFjNTFlM2EzM2E4MzU4MTY1ZTVmYWU0MmRkNTZjNDhkNCBsZWdhY3ktdHJ1bmsKKzIyMjEyIGM5NDJhOTgyMWQwOTk3Mzg2YjRlNGE1YzY5ZDlmZGRmZmVlMzQwMDIgbGVnYWN5LXRydW5rCisyMjIxMyA4MTExNDIwOWVlOGVlZTg5YTYzOTYyOGRkNTkxNTk2NzNhODhjNzUyIGxlZ2FjeS10cnVuaworMjIyMTQgY2VmZGNkNjBhOGIyYjAxNjQ0Y2VjN2RmNjJlNGUxNDEzZGRiZTE5ZSBsZWdhY3ktdHJ1bmsKKzIyMjE1IGY1YjdhMWVjNGI5ZjJiMWQ0NjdkNTE2NDlhODE5YWM1MDk1ZjJlNmIgbGVnYWN5LXRydW5rCisyMjIxNiAxYmM2N2NmNTdkMGFiNmE2YjczMTYzODgwNmQ2ZDkzYjA2YTE1YWQ4IGxlZ2FjeS10cnVuaworMjIyMTcgZmUyMGQxY2ZlYzNkOWEzYzM5ZTFmYjFlMDhkNmJmY2NlNTRmNzNhNiBsZWdhY3ktdHJ1bmsKKzIyMjE4IGMxZGFhOTRjMjFkODMwZTMyZThhYzE4NWY1OWRhM2NhMzhjNTMxYzggbGVnYWN5LXRydW5rCisyMjIxOSBiYjg1Y2NiZDRmZWU1NTQzZGU5MmVmOGFlYmQ5ZjlmNDc0YzcxYzA3IGxlZ2FjeS10cnVuaworMjIyMjAgN2QyN2UzODhlYzZjOWVkMDIzNTE1OTg2YThhMTg2ZDUyZDM2Y2E4MiBsZWdhY3ktdHJ1bmsKKzIyMjIxIGVjNjc2ZTE0MDczZDdmY2ZhNTIxY2Q4ODFiZmQ0NThlNzcxNjllMjcgbGVnYWN5LXRydW5rCisyMjIyMiA1MGRhNjM3MzQxYWU1MjJmYmEyYWNiNTI1YWVjMDFmMGQ1M2VlZTM2IGxlZ2FjeS10cnVuaworMjIyMjMgMDM4NDk5NDY2NzI3MjhmMWE3YzJhYjA3ZGEyZjAyZTViZDYxZTlhNSBsZWdhY3ktdHJ1bmsKKzIyMjI0IDA3OGMxOTYxZTE3NTE0NjAwZDY1ZmE4YzUyMTJjNjRhYjE4NGQwYTUgbGVnYWN5LXRydW5rCisyMjIyNSA4MjFlMzU3MDZjMDcxNTlmNWIxMTIyMzFiZThiMzc0N2QxYzZiNzcxIGxlZ2FjeS10cnVuaworMjIyMjYgMzBhZTNhZmYwM2JkOTg0ODk5ZjVhNzEwMjk1ZTQzYzlkNTFmYjc4ZSBsZWdhY3ktdHJ1bmsKKzIyMjI3IDYwMGFjNWRiYzY2NjRmNTRiNjMxNTYzMjcyMDRiOTY0NmZlZTAwMDYgbGVnYWN5LXRydW5rCisyMjIyOCBlNTc1NGYwNDhmMGJjMzVmYmMwMGU0NWZmNTE0MmYyZDMzM2I0ZDQ3IGxlZ2FjeS10cnVuaworMjIyMjkgYmFkNDA4YzdkOWQ3ODU0MDZjZDVhOWI2ODMyNmJmOTIzZDM4MDcwNiBsZWdhY3ktdHJ1bmsKKzIyMjMwIDdiMWEwODA0MTYxZWVkODcyNDVkYmVlZmJjYjE4MTg3NzgzNjkwMDMgbGVnYWN5LXRydW5rCisyMjIzMSAwYWI4ZjkzN2ZmNjY1Yjg1OGRhZGJiOTcyOTk3MTM0OWI0ZGQ5YTg5IGxlZ2FjeS10cnVuaworMjIyMzIgMjM4NzZlMmQ4NGI2ZjFlNTEyMjUwMTBlZTVmMzU2NWMzMjliMTJjOSBsZWdhY3ktdHJ1bmsKKzIyMjMzIDYwYTc1MDAyYTc0Y2ZkMDJiNTdiNzlkYjFiZDMxZmJkZWNhZjhkMGIgbGVnYWN5LXRydW5rCisyMjIzNCA5ODMxNWYwZTFkMjZkNzQyN2Y2N2I2MDFlNjVlNDhkMmVlMmExOWIwIGxlZ2FjeS10cnVuaworMjIyMzUgNmI4YjY1ZmNjYjAzZDlmMWZjODM2YjFmYTE4MTk2ZjU4ZTllNjk5YSBsZWdhY3ktdHJ1bmsKKzIyMjM2IDI2M2RjYWYwMGVlZGNlMGNmMmI2Y2I0ZDE5MjVkZGNjMDgxOTM3YmYgbGVnYWN5LXRydW5rCisyMjIzNyBlNGI2NzA1ZGM4NGY5MGRkMTg1MDA1MjU4N2FmODQzZTY5NTdkNTZjIGxlZ2FjeS10cnVuaworMjIyMzggOWU1NzhmY2I4ZGRhYjczZmQxMzBjYzJhZTIwOTc2N2I3OWFkOWQwYiBsZWdhY3ktdHJ1bmsKKzIyMjM5IGQzMjY4ZDYyZTQ2MjIxZDI2ZGRmOGQ5NzdjODEyYTlkMTAwNTRjNTggbGVnYWN5LXRydW5rCisyMjI0MCBkOTE1YTBlZGIyZWEzMTExZDczNmFkMjBkYWE3YzMyMWQxMzg4ZWFlIGxlZ2FjeS10cnVuaworMjIyNDEgYjE1MzA3ZDI5YmU3YmM0ZmRlYzg4MzY0MmIxYmU0ZmYzMjYwMDVlMyBsZWdhY3ktdHJ1bmsKKzIyMjQyIGMxNzI5Y2RjMDczNDBjZTYyMGQ0YmU4ZGU3MmQyODBmYTdhZmJkMzggbGVnYWN5LXRydW5rCisyMjI0MyAzYTdkNjdlZTEwMTEzZThmYjI1NmRjNDcxOTFkNGViMjcyNzg0M2M5IGxlZ2FjeS10cnVuaworMjIyNDQgODAzYTdhMTQ0OGIyZDFmYWZhMTU0MDA3OTMyZGU4NTA3NjcwYTczZiBsZWdhY3ktdHJ1bmsKKzIyMjQ1IDJkMGEwNGUyNzU4MWU4YWRiZGNmMWEwNDllNTAzYzBhZjQ1OTI4YzUgbGVnYWN5LXRydW5rCisyMjI0NiBmNjZjY2YyYzYzZWIzYTkzZTAyYWRmYzkwYmJjNDQ4ZTg3NzJjZGU1IGxlZ2FjeS10cnVuaworMjIyNDcgNGRmNzJlYTc4YWU4MDYyODBjMmU3Yzc2OTI0ZmZjNGQyMTFkM2NkYyBsZWdhY3ktdHJ1bmsKKzIyMjQ4IDlhODhlNTBiZjExNDU2ZTE4ZTVlMDA0MGRkYmMwZGNiYjA5ZGEyMGMgbGVnYWN5LXRydW5rCisyMjI0OSBhZDJiODA3NTVkMmQ0YzZiZGJlNDcwYmY5ODdkMmE2YTJhN2I1YmZhIGxlZ2FjeS10cnVuaworMjIyNTAgOGQ0N2EyMWQ5NWUwNDIwN2NjNzRiOTU0OGVmMjA4MzllZjMzZTM3ZCBsZWdhY3ktdHJ1bmsKKzIyMjUxIDhlNjBmMzAwMzdhMWZjZjk4ZDg1NmEyM2E1ZTE4ZmIyODFlNjRkNDEgbGVnYWN5LXRydW5rCisyMjI1MiA3NDU3NzRkYmVkNThlNzVmOGJhZDYyMmFmZmI4NDY3Y2JmNTg3OGU0IGxlZ2FjeS10cnVuaworMjIyNTMgN2RiNWI1NDIzY2NmOTkwM2RjMWIyZmQzZjVjODMxNjc2ZmIzN2RjYyBsZWdhY3ktdHJ1bmsKKzIyMjU0IDM1MDUwZDE4OGE2YWMxYzFjNDlmZDdmOWM0Nzk1NGM3ZmZlOTk0NGUgbGVnYWN5LXRydW5rCisyMjI1NSBlMjgyZDZiMmI3NThlNjRmMzRkMjUyMjdjYzU0OTUxZDdjMmViODk1IGxlZ2FjeS10cnVuaworMjIyNTYgMjhiNjQzYmFkNzRkMmI2ODUwN2VjM2VhNjZiMmNmMzc0MzgyMjNjMSBsZWdhY3ktdHJ1bmsKKzIyMjU3IDBjNWU1MTY5NGIwZjdlZjRkZmY2NDA3YTMxNmQ1YTI5ZWM1ODM2OGQgbGVnYWN5LXRydW5rCisyMjI1OCBmMjA3MjdjYzNkMGYyZjNiZjEyNGRhZTE4OGYwYjlhYzVmMjM5MTc4IGxlZ2FjeS10cnVuaworMjIyNTkgMzk2OWZjYmY5NTAwODZmNGU2NzJlMDhmN2E1MTZmYmU1YTY0YmZmYSBsZWdhY3ktdHJ1bmsKKzIyMjYwIDJiYjI0MmRjNjlkOGU0OWE3NmRiYzAxNGEwYWRiMjdlZmQ2MmMxNjUgbGVnYWN5LXRydW5rCisyMjI2MSAxMWJiYTMwZTljMjg0MGUwNDMxZTQ1Zjc2YjNkN2IxYjUzZjA4NmE0IGxlZ2FjeS10cnVuaworMjIyNjIgYzkwZjAwMzYxMDlkNGJhYTcxYWM2MjFmMGI3ZTEwODEwNDJhOGE1MyBsZWdhY3ktdHJ1bmsKKzIyMjYzIGEzMDc3Zjk2ZDQ3ODk1OWYyZDE0ZTVjZmM5MWMwYmJiMjgxN2M2NDggbGVnYWN5LXRydW5rCisyMjI2NCA2NWZlNmIwNzI0N2IwMDcwN2I1Yzg5NGE0N2E4NzI5OGQyODMwYTA3IGxlZ2FjeS10cnVuaworMjIyNjUgZjk0OTQxMzViNTc5MDk1ZDBiY2JkMmVkN2I4NjZhZDFjOTdlNDM1OSBsZWdhY3ktdHJ1bmsKKzIyMjY2IGM5Nzk2MjVmZWI0OTY4OTFlNTQyOTdmZjY2OTk3MjQwNTFiYzUzNjEgbGVnYWN5LXRydW5rCisyMjI2NyA4YmQwNmUzMjQ5YmI1ZTBjMWI5OGEwODRhZWI4YjE4ZjQ0MjY2NzZkIGxlZ2FjeS10cnVuaworMjIyNjggZjUxYjEzYmY1ZDU0ZjlmMmE4ZTBkYWE0MGVhNGUwZDliYTQzZmNiZSBsZWdhY3ktdHJ1bmsKKzIyMjY5IGU0MjYyMzBlYTU3MzFjOWYxNjExNTYyYTJlOWY5ZjFlZWRkYmNkNWMgbGVnYWN5LXRydW5rCisyMjI3MCA5Y2M2N2FhZmVjNmMxODgwMDJiZjk0ZGFkZTk4ODc5M2U3ZGEzNjFjIGxlZ2FjeS10cnVuaworMjIyNzEgZTU3YTQ2MTQ0NjllNmY0Y2IwMzdiY2M5OTdjMTk0ODYyNjU2OGM3YiBsZWdhY3ktdHJ1bmsKKzIyMjcyIGFiMmY4MDk1YzRmY2M2ZDAyYjgzYTQ5YTliYjU1MWM5MmNlYzQ5ODUgbGVnYWN5LXRydW5rCisyMjI3MyBhMWI0ZjNhMWVlMDc5NjU1Y2JlYjVjYmE5Mzg0Y2JlMDU4NDE2Mjc5IGxlZ2FjeS10cnVuaworMjIyNzQgZDc5ODY1YzBmODA0NTg5ZDhiN2JhMWNjZmQzMjVlMGUwYjhhM2M5OSBsZWdhY3ktdHJ1bmsKKzIyMjc1IGQwMDgwMmM3NGJhNGRjNDE5MDI0MWUzMDQ0ZmQwNWI5ODI5NTM1ZTEgbGVnYWN5LXRydW5rCisyMjI3NiBiNjJjODBkNThkMWVjM2JlNWQwNzc3N2I0NWUzZTg2YWVmNzdhODk0IGxlZ2FjeS10cnVuaworMjIyNzcgMzlhNzNjNjc3M2YxMmVkOTliYmIwZGI2ZTkxOGM4MTlmN2I3MGU3YiBsZWdhY3ktdHJ1bmsKKzIyMjc4IDc2NDkyM2Q5ODVhNzY4MTRlNGE3YzkyYmU5NGQ3ZmNkM2UzZDRmZjMgbGVnYWN5LXRydW5rCisyMjI3OSAzMTBhOTE3MGFhZDQ3NmRhZTEyZDZjNDk4ZjAzZGU1ZWE0NmQ0MzRlIGxlZ2FjeS10cnVuaworMjIyODAgZWZkZGNmNzE5ZmYyZWZjNzJhMjVmZDcxNGQ3ZDUzMThjMWFmOTA3NCBsZWdhY3ktdHJ1bmsKKzIyMjgxIDk0Y2E4ZWJhN2U0ZjA5N2JhMTYyMGQyNDVlZTY4OGYzNjJkMDA3NDQgbGVnYWN5LXRydW5rCisyMjI4MiBlMmU1ODlmZWFkMzBmMWFkOGZlNzRjMjE3ZDAzNWJkNzk2ZGM2MDg1IGxlZ2FjeS10cnVuaworMjIyODMgZjc1MTI1ZWFkMGEyM2I5NjM0ODA2YWFjMWU4NmJjNWI2MGM5MDVjMCBsZWdhY3ktdHJ1bmsKKzIyMjg0IGMzZThmNDdmZTdjODRkZjU1YzZjNzMzMjczMzVlMDg1Y2QzNDQ2YzAgbGVnYWN5LXRydW5rCisyMjI4NSAwYTljZTgxZGUzOTk5MTZhNzFjYWNjNGI5OWMzMzZkMGFlNWE1ZmM1IGxlZ2FjeS10cnVuaworMjIyODYgY2I4ZmRjZTllNjVhNmQyOWM5OTlhNTZiM2UxOGViOGQzYjFkM2JlYyBsZWdhY3ktdHJ1bmsKKzIyMjg3IDI3YjRkYmQ0MjhmZTdkNWIwMDY2ZTliY2NmOGU3ZmMxOTVlYzMyMGIgbGVnYWN5LXRydW5rCisyMjI4OCAzNmNhMzc2ZTU4NjQ2NWVkZTA4OGY4NzYxMTVjZDA0MWNkYTFkYWNjIGxlZ2FjeS10cnVuaworMjIyODkgODhkMTI0Yzc0NzY2MDZmNmQyYzMyMjBmYmM1MTgwZWFjYzY5Mzk5ZiBsZWdhY3ktdHJ1bmsKKzIyMjkwIDVjMjdmMGU0ZjUwZjczNmVmODVlNjE2N2E3ZTcxYzAwOWVlNGIxNGMgbGVnYWN5LXRydW5rCisyMjI5MSA5Zjc4NTA3M2U0OGJkZjNjNDlkZjQzYTJiY2RhNzQ2YTAzNGVlYTUwIGxlZ2FjeS10cnVuaworMjIyOTIgNmU5NThkNWU5ODhiZDA1YzM0NmM3MzUyZDUzMDdkOTM4ZDAwOGFlOSBsZWdhY3ktdHJ1bmsKKzIyMjkzIGYzZTI3OGJjNDM5ZTI3MDhhMWFkMDc0MjJjOWMyMGM2MDJlNGU5ZjAgbGVnYWN5LXRydW5rCisyMjI5NCA5NmViZjJiODg2Zjc2ODI5YjRmOTc5YTk3NjNhODFjY2FiYWJjMzQyIGxlZ2FjeS10cnVuaworMjIyOTUgMTk2MGNlZWMxYTAwYmE1NjIzOTE0YTBhZjQzMGNlMjNjMGY4ODZkNiBsZWdhY3ktdHJ1bmsKKzIyMjk2IGM0YjMxYmU3ZTA4MGI5NWJjOTZlZTFiMTlhOWEwZWQ4NTQ4ZTQ3NGQgbGVnYWN5LXRydW5rCisyMjI5NyBlNDExYmZiOWRiNTc2NGFiYjQ1ZTM3NWVhODM1Nzc0ZmI0MzJkZWVmIGxlZ2FjeS10cnVuaworMjIyOTggNmZhZWQ2MTViMDU4ZGZjMDJhMjlhNjViMzBiZTFhZDRlZGI4ZDczNiBsZWdhY3ktdHJ1bmsKKzIyMjk5IGU3OWZkMzkzNGY2MTAyN2ZmMDQ0OTNhZWE5ZDVkNzViOGZhNmFiY2EgbGVnYWN5LXRydW5rCisyMjMwMCA5N2RlODY4YWQwZjQwMjg0M2M1NmMxMTU2Nzg5ZmIxZjA2ZTRkMzk0IGxlZ2FjeS10cnVuaworMjIzMDEgOGViZjcxZTFlZDI5OGVhOTIxYjY4MjFjYWI2NWU5ODJjMjZjOTgzMiBsZWdhY3ktdHJ1bmsKKzIyMzAyIDExYTk3NjdlNWQ4YTUzZjI1ZTRjMTU1N2JjOGEzMTc3NjhmMGIzMjUgbGVnYWN5LXRydW5rCisyMjMwMyA0NWNjZjNiODg5YjUwMzY4ZGQwMTVmYTkwYWFjNzc3OTAzYjIwZDQ5IGxlZ2FjeS10cnVuaworMjIzMDQgOWU2Zjc4MDRlZjE0NWRkOGMzNzU2M2Y1N2IzM2E2MjgxNDc5YzI2NiBsZWdhY3ktdHJ1bmsKKzIyMzA1IGM5NWYwYTEyYjUxYTU5ZDA2YTc1MWJmNzYwOWQwYTA3ZTBmNzZjNDEgbGVnYWN5LXRydW5rCisyMjMwNiBkZTVkN2E5NDI4ZWY5MGNiN2YzOTRhYTUxNjY1MzFiMWIzNDhlMThmIGxlZ2FjeS10cnVuaworMjIzMDcgYzIzODc0NWUwYWFlNmMwNjZjZTIyMDgzOTUyMjlmYTc3ZjgyN2M2OSBsZWdhY3ktdHJ1bmsKKzIyMzA4IDYzNTBiYmFhNjMyYTc1NWQ4MzljM2Q2NmNhMGQ4NDRmZjEwNWRmOWUgbGVnYWN5LXRydW5rCisyMjMwOSA5ZWM1NjExY2ZlOWMwMzMwMzQzMmJhNzU5MGM5YTEzZDFmZmQyZTA1IGxlZ2FjeS10cnVuaworMjIzMTAgMzQyMGM5ZTZhZjExMjllNWJhNjQ1ODBmN2NkNzE5YjE2NDY0YTA5YSBsZWdhY3ktdHJ1bmsKKzIyMzExIDg3NWFjOGU5MzU0MjRiZDZiMDM1MzI4NDE0YjE3MmRjYmJmODgxYTggbGVnYWN5LXRydW5rCisyMjMxMiBlZWE4ZGZiYmVlODYwMjkwZjc4MzFmYjllMmE3ZTdlNmI0MDc2ODQwIGxlZ2FjeS10cnVuaworMjIzMTMgMTBlYzM5Njg0MjhkYzgzYzg1YzIxMWRmNjAwM2FkYzg0YTgyODFjNiBsZWdhY3ktdHJ1bmsKKzIyMzE0IDEzMWEwMWI2ZjZjNzE0ZTU5MThiZWVlNWQ1MGE4OGMwNmQ3MjY4NjQgbGVnYWN5LXRydW5rCisyMjMxNSBiNzk4NGM5YmJmMmNkZTAzOGI0M2EwMDZhNWM1NzBiYzBhYTc1N2FhIGxlZ2FjeS10cnVuaworMjIzMTYgMzczY2M1OTQxNTkwMGI0NGI1OWJlMjczNmNhMDc0NTNmMGNlMzQxYiBsZWdhY3ktdHJ1bmsKKzIyMzE3IDAyMDFiYjVlM2I4MzZiMzdiNmZhNWNjNGI3Y2ZjY2NmYWJjYTI4ZGYgbGVnYWN5LXRydW5rCisyMjMxOCA2YmE0NDE1MDcyMjA0YTYxYmMyN2IxOGUyOWNjZWI3MDBiOTQ0Y2I5IGxlZ2FjeS10cnVuaworMjIzMTkgYjU1NDc4YmQ5MTY1YzRmZTM5ZjQyNjYyZjdmODQyOGVhMTllYTQ4YyBsZWdhY3ktdHJ1bmsKKzIyMzIwIGIzNTUzNzZkMDczMTI3OGFlYzVmYWQxZTkzOTkyYmE4Nzg5N2Q5MzIgbGVnYWN5LXRydW5rCisyMjMyMSA3ODI2Y2MzN2EyMzRiOGIxMGJmYTVlNWFkODU5NzhmNjNjMzk5MTZhIGxlZ2FjeS10cnVuaworMjIzMjIgMTc1MjViNmM1MzJjNTkyNGU2MWY4MmMxYzM3MTRjNTk3MWJlOTc4YSBsZWdhY3ktdHJ1bmsKKzIyMzIzIDEzZDBmMzRiNmExNjA5OTlmZWMxMWJmNzUxOWY4OTY0MDA3NzcwNDIgbGVnYWN5LXRydW5rCisyMjMyNCA4Y2JmOTg0YzljMTNmNDc1YTZjMDhmMGE3OTY0ZjgwNGM1ODk0NWJmIGxlZ2FjeS10cnVuaworMjIzMjUgOTEyOTk0MThiNzJkYzlhOGJmY2IyZTYxMjYxMmIyZTcwNTE1Mjk5YyBsZWdhY3ktdHJ1bmsKKzIyMzI2IDYwMGE5YTJiN2ExODMxMzBmMGI2NGZkZTJjMGYxMmVjY2FiZThkNmMgbGVnYWN5LXRydW5rCisyMjMyNyA5NTUxNWM2YjY5NGFiNWNmYWRkYzY1ZTRlNTMyMjg3YzI4MDBkZDU4IHJlbGVhc2UyMS1tYWludAorMjIzMjggNzdlNDA1ZjNhOTQyYTkxN2ZmMWU0NThjNjEwNzNhYjFmOGU5ODFmOSBsZWdhY3ktdHJ1bmsKKzIyMzI5IDY3MjliZjMwZDNhZTViMThkZjY1NjUyNmU1MTQwMzRlODI0NGE3ZmYgbGVnYWN5LXRydW5rCisyMjMzMCBlMDg0N2JhMWQ2ZjRlYjA2YTNlODY4MTQ3NGY0YWE4MWQ4YzQzNDhmIGxlZ2FjeS10cnVuaworMjIzMzEgYWY0ODIwNTVkNWNlNDkwYTBkY2NiZGY2YmNkNTMxMDBjNjYwZTQ3MyBsZWdhY3ktdHJ1bmsKKzIyMzMyIGY4YjUxYzhjYTA4MjYzMThjNmYyODdhMDNhZWViYWU1ODRkYzk3ODkgbGVnYWN5LXRydW5rCisyMjMzMyA2N2JlM2E2OGZkZTQ5MjQxNGJhMjIzNzJlZjQzMzUwOGVhOTM5NDVmIGxlZ2FjeS10cnVuaworMjIzMzQgNzg3NTJlYWUxMzJlMWIyY2E5ZDE3MzFhYWY5Yzc1ZTMyMDFmMWEwYyBsZWdhY3ktdHJ1bmsKKzIyMzM1IDQ5MDFhOTM1NDkwZGQ4NmJiNDA3MmVhZmQxNDk2MWE1NjE3MTY3NmYgbGVnYWN5LXRydW5rCisyMjMzNiBjMzk1OWY2ZTQwNDQ3OGJkNTYzMzlhM2UxNmMwMzFhNjJhMDIxNmZkIGxlZ2FjeS10cnVuaworMjIzMzcgOTU3ZGQ2NDZiNWI3NDM0ZmQ4OWEzMDYxNzQwNzdiMzEyYjY1MjJiZCBsZWdhY3ktdHJ1bmsKKzIyMzM4IDY3Njk4ZDY4OTIwMzIwZmE4ZTIxYWVlM2VmZWZiMDE0YTZiODJhM2YgbGVnYWN5LXRydW5rCisyMjMzOSA0MGExN2Q5NTAwYThiNmVlN2YyOTRmNjNiMjQ2Y2QzMmJhYTdjNTI4IGxlZ2FjeS10cnVuaworMjIzNDAgOThiYmE5ODNiZmQzN2NmZjk5MDkyZGI3MDI0OWY0ODk0YTVjM2JhNiBsZWdhY3ktdHJ1bmsKKzIyMzQxIGQ5ODEyMTkzMGU3MDYxZjRjYmY3MjUyZjA3ZjdjNDBhZDVhNDcyOGQgbGVnYWN5LXRydW5rCisyMjM0MiAzZjhhNTZmNTJjZDYxYmJhNTVjOTgwZWJkOTRjNWU5MTQ3OWJiMDMwIGxlZ2FjeS10cnVuaworMjIzNDMgNjQ2M2NkOWRiMmZjZWVjZjU4YzJlNjhkNDM5NTkzMjA4ZDVkZTAxNSBsZWdhY3ktdHJ1bmsKKzIyMzQ0IGZiMTJlYTkyOTBiMmQyMTcyOTE2YWEzNWMzMmE3MzFjMWY5MDJlMDUgbGVnYWN5LXRydW5rCisyMjM0NSA4MTVlNzgxMjUzNTdhZjc5OGQ1ODI4NTU1ZTUxOTBlNTZlMjIyNTBjIGxlZ2FjeS10cnVuaworMjIzNDYgNGE4YWI2Nzc3M2E5YzZjNTNhNTMwNWNkZDYxOGI3MDZiNTBlNjNiOCBsZWdhY3ktdHJ1bmsKKzIyMzQ3IDhjMzc4ZjkwODZjZDczYjU0YmZiYjIxYmJkZTA2NjgwMmMwM2NkM2MgbGVnYWN5LXRydW5rCisyMjM0OCBlMDAxYTljZGU2YmFmNmM4YWNkYjZlNWEyZGU5MzdkZWQ5ZDhiZjY1IGxlZ2FjeS10cnVuaworMjIzNDkgMmQ2N2QyMzhkNGU5MThiYWJlYzFiMzRhMjYwZWMxMTVhYzJkM2QzNSBsZWdhY3ktdHJ1bmsKKzIyMzUwIDg1MjkyZDk1OWUxYjg3N2U5NTc4MzllYjUxNjVmZWMzM2I3M2RkMGEgbGVnYWN5LXRydW5rCisyMjM1MSAwOGNmZDhlOTk4MDY2Mjg0MTk5MjNjYmRiYmUwZDg3OTNkYTAxMzRhIGxlZ2FjeS10cnVuaworMjIzNTIgZjBkNTJhOGZkZTVmZThkOTkzODlkMTViMWY1MWU1NWJiNDVhMmYxZiBsZWdhY3ktdHJ1bmsKKzIyMzUzIGVkZjhkMmQxYTkwYjY5ODkzZDVhZTZiNThlMDQzZjhiYWE4YzM5ZGUgbGVnYWN5LXRydW5rCisyMjM1NCAyZjNiMTgzMDljY2U2NzhjNDZmY2RlY2I2Njg0NTRjNTY0ZjAyYjEzIGxlZ2FjeS10cnVuaworMjIzNTUgODA5YWVjNjRhNzhlYmEyZjgxMDI5YzJhYjRlOTI5YTc4YWNiMWQ4MCBsZWdhY3ktdHJ1bmsKKzIyMzU2IDQ4MWI4MWQzMDBkZjgyZTk0ZTk4MGY0NWJjMTEzOTZkZmM1NThjOWIgbGVnYWN5LXRydW5rCisyMjM1NyAzZjM0ZjcyNGYwMTQ4OWJjYmQ2MTkzZTg4YWQwNjY1YTAzY2RhZjgzIGxlZ2FjeS10cnVuaworMjIzNTggY2Q0NDI1NDM2MGI2ZWE5NGM3ZjRkMTdkYzIyMjZlY2VmMWJmNWU1MSBsZWdhY3ktdHJ1bmsKKzIyMzU5IDFlNmY0YmI2NTA2OWQyM2UyNGM2MDAzYmQ2MGFmNmI5NmI2YjkxZTEgbGVnYWN5LXRydW5rCisyMjM2MCA2NGQ0YWQ3M2E4ODc1ZTBlODE4MjEzMGQ0MGFkMDljY2JlNzk2YmNmIGxlZ2FjeS10cnVuaworMjIzNjEgN2ExZWY2NzVkOGFjZjA0NGFkMDFjYTQwOGJjNzdiYWEwNWNlNDA5MyBsZWdhY3ktdHJ1bmsKKzIyMzYyIDJmNDFjOTUyYmViMDU4ZWQzOGY2OTMzZmViZjVhMDEzZDA0NzBhNDIgbGVnYWN5LXRydW5rCisyMjM2MyA3NzY2MjhlZWE4ZjczNjc0NjBmYWQwOWQ1M2FkZDRjNjk1Zjc4NTU2IGxlZ2FjeS10cnVuaworMjIzNjQgYjc2NThlNjY1ZDJlYzdhMzk4NzRkOGZmYzc3YmExM2ExODkxZjBhMyBsZWdhY3ktdHJ1bmsKKzIyMzY1IDk3YTNkM2Q3MDI5ZjhmYjI2YjI0NDUwZGVkYzU0N2ZhZTE5ZTQ1NzIgbGVnYWN5LXRydW5rCisyMjM2NiAzNTM3MDYyYjNkYzFiZTA4MWQ0YjhlNDY4MjcxNGU0ZDVjMWZhOGZmIGxlZ2FjeS10cnVuaworMjIzNjcgOWQwMjRhZTA1ODM3Yzk0YmU4NjUzZWNkMTIzZTg2OWM2NGI4YTU0YyBsZWdhY3ktdHJ1bmsKKzIyMzY4IGQ2NGUwNTljZDE5OWRhMzhlYTEyZjY0MzdhNGMyMGRjYThiMTUxZGQgbGVnYWN5LXRydW5rCisyMjM2OSBiMDZkOWRiZGFmOGZiZTc1YmIzMTMxOGNiNTM0MGFmOTkwNDFiYWM4IGxlZ2FjeS10cnVuaworMjIzNzAgYjE2MGZhNjNmNDBjNTdhNDQxMzY4NDA0ZjUxYjVlZDFiMDNiOWExMSBsZWdhY3ktdHJ1bmsKKzIyMzcxIDVkNmIyYzE3ZWEyY2Q3YTg3MTgxMjAwNjhmMzY1YzY5OWNkYzg1MTMgbGVnYWN5LXRydW5rCisyMjM3MiAwMzllM2QyNmVhMzVjYTYxMzM4YWEyNTEwOTY5ZGU4NjM5ZmU2NzA5IGxlZ2FjeS10cnVuaworMjIzNzMgNjdmMzU0ZDQzNDdkNTgyMjgyMzZiNmFhOGRmNWY1ZWJhYzA4OGU5OCBsZWdhY3ktdHJ1bmsKKzIyMzc0IDMwODYwYmUzYWU3YmU5ZjRkZGY1ZjE3YzYwYjdkYWU1MmI0NzU0YjEgbGVnYWN5LXRydW5rCisyMjM3NSA4MDJjNGY5NDBhNGVhMzFhMDk5MzYxYjNhNmMwMDNjMjQ5YTFhMjNlIGxlZ2FjeS10cnVuaworMjIzNzYgOTY2MTA5M2QzZTJhZmZjM2Y3NjkzMDM3MGZlYzUyOTFkYTc3OTU1MCBsZWdhY3ktdHJ1bmsKKzIyMzc3IDgxZjRjZGY4Njg1NTcyMjYyYjJiOTgxZTlkNWM1NTU5YWQ5NzdlZmMgbGVnYWN5LXRydW5rCisyMjM3OCAyZjY1OTNiZjU4YWZiZjkzZmRhNDZkNmI1MDQ1YTA2NzQwZDc4MzY0IGxlZ2FjeS10cnVuaworMjIzNzkgY2IzNDZiYWVkYWQ2YzRhNDE4YmNiY2Q4MDYyMTQwYTViMWE1ZTk0ZSBsZWdhY3ktdHJ1bmsKKzIyMzgwIGYwZGIzNDU2MjFiYTdlZmNhZjJkMDI3NTNjMTE0NGI4Mjk1YjdiNjggbGVnYWN5LXRydW5rCisyMjM4MSA3MDRhZDgzNGRlMjc2OTZiZTVhNTBlOTFlZGRiZTY4NzMwNWI5YjU0IHJlbGVhc2UyMS1tYWludAorMjIzODIgYjAwMDJkN2MyMmIxZjBjZGNhOTZlYTU1MTE4MjVmYjAwM2RiZDEyMiBsZWdhY3ktdHJ1bmsKKzIyMzgzIGZmZjZjNjYyODU5ZDljMGEwOWI4ODFhN2RiYzAzYjE2MTVlYjI5NGYgbGVnYWN5LXRydW5rCisyMjM4NCA1MGY4OGVlNzFkNDVhM2Q3ZjI4MDcyMDY5YmI0MThkMzczNmRhMjhlIGxlZ2FjeS10cnVuaworMjIzODUgY2ExMmUxZTMzM2VhMTA0MDM2MDI4OTEzOWVlMzdiODg1YzQ4ZDI0NiBsZWdhY3ktdHJ1bmsKKzIyMzg2IDYzNzBhMGY5ODhmMGQzZjY1YTIxNzljOWFmNjlmNmU5MTZhYmMyMzkgbGVnYWN5LXRydW5rCisyMjM4NyBmZGUzYjBmNzJlMzg5MDJlZWNlNTc4Y2Q4YTQzNTVlMTNlNDc1NjBkIGxlZ2FjeS10cnVuaworMjIzODggMWQ0NjJiNzM3ODEwZGM4MjBkOTk3ZjJlODEzNDYzYjE1ZWJiYzU1MiBsZWdhY3ktdHJ1bmsKKzIyMzg5IGZjMzljMjJiNWE3YWQxNWI0NzQ4ZWM1ZTEwMDc4ZWRhNGQ5NmNjN2MgbGVnYWN5LXRydW5rCisyMjM5MCBiMTQ5NTFjZDI1NjczYTYwMTY2YzcwZThhNDkxNDc1NmUxYTE2YzFkIGxlZ2FjeS10cnVuaworMjIzOTIgMjk2N2NhOTZkMDdlZTdlZTA5OTdiYjY4MDgzOTE1NTc0NmM1YzlmNCBsZWdhY3ktdHJ1bmsKKzIyMzkzIDc4ZDAwZjcwMjNhMjE2ZjFiNzc1ODIxMzY4YmZlMWYwYTFmNmRhYTAgbGVnYWN5LXRydW5rCisyMjM5NCBjZGQwYzdhNDU1NzVhMjkxMWY5NWI5MGNjZjM5YjRmZmY5ZGVjOWMyIGxlZ2FjeS10cnVuaworMjIzOTUgMzBmOGI2NTRjMmU1YmZmM2NkYWYxMmE5YjE4MTAxY2Q1ZGY1YzAxNiBsZWdhY3ktdHJ1bmsKKzIyMzk2IGJjZmUzMGNkMWYwZGUxNmM5ZWQ5NTgyYzRjODcwN2RiODRlODg0ZWYgbGVnYWN5LXRydW5rCisyMjM5NyAxMTVlNDA5OWYzZDk3OWZiMGRlYjQ0YzliNmIzYjM5NmZmZjIxMGQ3IGxlZ2FjeS10cnVuaworMjIzOTggYmVlNzU1NzIxM2IyMjk5MzI5NjQ2M2Q4ODkwMzIzOWUyYzk2YzdmOSBsZWdhY3ktdHJ1bmsKKzIyMzk5IGE5N2M4MDY0YzlkODNhNDE1OGE3YWU2OTJlZDk4OGIxZjM3MTM1M2IgbGVnYWN5LXRydW5rCisyMjQwMCA2ODAyMzJmYjYxZjMwMjA3ZjFkYzdmZmQyNzRmOGQ0NjlhYTU5ZmNmIGxlZ2FjeS10cnVuaworMjI0MDEgMDk1Yzg5YTgyNWE5MGExYmY5N2Q4ODExNWIwNTU2NjA4MTNiN2FjNSBsZWdhY3ktdHJ1bmsKKzIyNDAyIDdlOWY1YzU5ZTlmMjdmMDI2NGRhMjY1NzA0NzRmOWFkMzVhZjRlZWUgbGVnYWN5LXRydW5rCisyMjQwMyA3ZTQ0ODczZGFmN2JkYzM3YmExZWZjOTNiMWYyMjMxODlkYmRjMWQ3IGxlZ2FjeS10cnVuaworMjI0MDQgMzAxYmNiMDFiNTAzNDVmMWFkNjAzNzQ5ZGY4NmI3OGFkOTRmY2EyZSBsZWdhY3ktdHJ1bmsKKzIyNDA1IDAxYTliNzgwNzE2MGIxODEwOGEzODk0MmI3ZjMxMjAzZmI2OGY3Y2MgbGVnYWN5LXRydW5rCisyMjQwNiAzYzFjOTk0OGZmNjU1N2NlZGMwY2M0MmY0Y2IyODhiNWRjOTA2YmY2IGxlZ2FjeS10cnVuaworMjI0MDcgMzgzN2RjY2QxMWNhZDM1Mjc1MDBkYTEyNGFmZjM4MGE4NDc1N2M4NSBsZWdhY3ktdHJ1bmsKKzIyNDA4IDUwZmI0NjgzYTQ2MTg2Mzc5ZmQ1N2IzMThkY2NlNzQzM2QzMTBlZmIgbGVnYWN5LXRydW5rCisyMjQwOSAyYzRjMmNhYWJjZmNkOTNiMzRiZjIzOWNkMmViNzNmZGUzNDE4ZThmIGxlZ2FjeS10cnVuaworMjI0MTAgNDdhNDVkYTAzYjA5YWM4MTI1ZmM1MDc1Y2UyNzk5NTMwOTI3N2E0MiBsZWdhY3ktdHJ1bmsKKzIyNDExIGNkMTMxMGU4N2ZlMjE1NWYzNDNjNWE1Nzg5MzhiYWE4ODVmNjc4Y2YgbGVnYWN5LXRydW5rCisyMjQxMiA2N2RjZjA0ZmE3NTQxODU0YzVhYWFlODE4Zjk2ZGY2NjY3NzcwOGZjIGxlZ2FjeS10cnVuaworMjI0MTMgYWNjMGZmYWIwNzcxYzkwMzc0MzhkZmJlOTU0Nzk4M2Q1ZDA3NDU4OSBsZWdhY3ktdHJ1bmsKKzIyNDE0IGRlMWMyZDRkNzJiYTE3N2EyYThmZTNhMDZkZmY0OTMyMTM0ZGEwNDMgbGVnYWN5LXRydW5rCisyMjQxNSBmYjE1M2UzMDYxNTI4ODZlMzQwZDViZDFkYWE0NzVlNDQ1ZWMzNzA5IGxlZ2FjeS10cnVuaworMjI0MTYgN2I1M2ZiM2JhMDExOTJiZWEwNDkzMTEzNTZhNDBjZGZhMDA2Yjc0YiBsZWdhY3ktdHJ1bmsKKzIyNDE3IDg2OTE0ODRjNWJlZjUzM2RkYTA0Y2FkYmZkNTU1MjJkMjE4MWYzZWQgbGVnYWN5LXRydW5rCisyMjQxOCBiNDg0YjIwN2U5NjQxOWU4MGM1YjNjNDYyZGIxNjQ5NTMwNTQzNmMwIGxlZ2FjeS10cnVuaworMjI0MTkgNGRkMzhkOTMwMTU3M2M5MGNjZDk0ZTg4NTJmYjJmOGQwM2M1NjNmMyBsZWdhY3ktdHJ1bmsKKzIyNDIwIGM5YTRlNmQxYmMzMGIxOThlYmZmYWYxMTA0N2IyNzI0ZTNjODUzZTQgbGVnYWN5LXRydW5rCisyMjQyMSBjMGExNmI0YzllZGI3ZTFhMDliYjZhMzMxYTU2ZGNiNmE4ZWU3MTk5IGxlZ2FjeS10cnVuaworMjI0MjIgZDM3ZTE3NjU4MDQ4ZGFiOGVkM2U5ODBlMDhjMGI4Yjc5MDZkMDI1ZSBsZWdhY3ktdHJ1bmsKKzIyNDIzIGY1MTNjNmM3ZDE2NzBiY2NlZDU5NjNhMTI1YmM4YTE3MzBjMTE1NzkgbGVnYWN5LXRydW5rCisyMjQyNCBlOGJlNDBjNzVhM2Y3MTdjN2U1NWM0YzgxZGNmYThjY2UzOTIwMGI5IGxlZ2FjeS10cnVuaworMjI0MjUgNzc2NDBjMzg4NDdiYTI1N2IzOWE5OGJjMDE1YzhiNWExYTI5Y2MzMCBsZWdhY3ktdHJ1bmsKKzIyNDI2IGQxNmEzYTVjOGE4NmIxMzBiMjlkMmNhMTBhMmVkZjFkN2ZjYjU3YTggbGVnYWN5LXRydW5rCisyMjQyNyAzNzNiNmFiYWRjNTAwZmNjOGNmY2M2NjEzNmY2MjRmYjExODgyYzdlIGxlZ2FjeS10cnVuaworMjI0MjggMjQyYWM0MjdmMGQwZjBkM2Q2ZjkxN2JiZTA5NTNmZDgxYTNhNzc1MyBsZWdhY3ktdHJ1bmsKKzIyNDI5IDNjN2FkNTAzN2FiMWJjNWEyMjNhOTQ2YzlkMzkxMTFlMjUyNGIzOGEgbGVnYWN5LXRydW5rCisyMjQzMCA0MTc4NTc5M2E4YTM3NWUwYmUxZmY4YWZjMDBmNDM5ZmJkOWY4M2NhIGxlZ2FjeS10cnVuaworMjI0MzEgY2QxYzI3ODdlYmI0YTkzMDE5NGIyYTRjM2RhYzhhNjAwMjM3Mzc1OCBsZWdhY3ktdHJ1bmsKKzIyNDMyIDZlNDZjN2NkMzc0OTBlMTQxNDQ5MGQzMGE0MjBhZDg4NTcwMjVlNTUgbGVnYWN5LXRydW5rCisyMjQzMyA3MWYwNWZkMzBlNzNkNWNiNzgyNzU0MzY1Y2M0ZWU5NDYzNGRkNzhhIGxlZ2FjeS10cnVuaworMjI0MzQgMjU1OTI2Njk4NjkyZDQ2YzkxYTEwZmE0MGQ3MGQxYzA1OGY1YTVjNyBsZWdhY3ktdHJ1bmsKKzIyNDM1IDg0YjYwMjEzMTU5YjAyMjM2ODA5MjVhZDNhOTM2OTExZGZmMDhmZTYgbGVnYWN5LXRydW5rCisyMjQzNiAwZjYxMmQ2ODdlYmNkNzc0NzRlZDkxMzIxYjc5YmMxNzFiYTAxZTVkIGxlZ2FjeS10cnVuaworMjI0MzcgNTNmMzk5NTk4Nzk5OWVjM2Y2MTI2YTQ1OWM3YjIyMjZkMmU4YzE0NiBsZWdhY3ktdHJ1bmsKKzIyNDM4IGFjYjE4YzlmYjIwZjZhNTE5MDhhYjFkZTNjY2QxNTYxMTViNTIyMzEgbGVnYWN5LXRydW5rCisyMjQzOSBlMjliYThmMWU3ZjgwYTJlNjIyNWVjNTI4MzM0N2Y1MzQwMzU5YThhIGxlZ2FjeS10cnVuaworMjI0NDAgNjU4ODVlYTc2YzM3NzE2NDE4ZGQxMmQ2Y2FkZGU5MGUxZjk0MWRhMSBsZWdhY3ktdHJ1bmsKKzIyNDQxIGNiN2ZiNTY1Yzg5Yjk0ZmM4MzFmNDlkMzNhZDNlODAwMmNiMzU3ZGMgbGVnYWN5LXRydW5rCisyMjQ0MiBjMzM2M2U0ZDZkMWQ2MGFkNGFlZWEyYWNiZmU2MzYyMzk1YTdhZDJkIGxlZ2FjeS10cnVuaworMjI0NDMgYzYxMjk0MjhlMDUzY2NhZDAxYmQ3ZTYxY2RmYmZjZDVjOGZmZGI0MyBsZWdhY3ktdHJ1bmsKKzIyNDQ0IDM4YjU5MDZmZjAzMWQzY2Y5M2MxMjY4ZDVkMDk1MTEyNGQwODFiZDggbGVnYWN5LXRydW5rCisyMjQ0NSBlMTEwY2Q0ZmMzYzYyNTBkMTYwZGYzNjI2NTNlNzU5OGQ4NzI2Mjk0IGxlZ2FjeS10cnVuaworMjI0NDYgNWI4N2VlNDQwMDBiYWEwNmI4NWI0OTNiMzhlZDk1NTdiNjJjNDZkZSBsZWdhY3ktdHJ1bmsKKzIyNDQ3IGEwOGQwZTU4NjFjY2YyNThhYjNkNDhmOTU1NjM2M2QzZjA5NTVkMzEgbGVnYWN5LXRydW5rCisyMjQ0OCBhYzZkOWM3NDI4NjQzMjUzMTZkOGY2OGY4MGRkZWI4M2ZlNWFjNjAwIGxlZ2FjeS10cnVuaworMjI0NDkgZDNkZDBmMmZiMWY0NDFhODY1NGZiYzdmOTQzMWE0ZWExZDg0M2NiMCBsZWdhY3ktdHJ1bmsKKzIyNDUwIGQ5OWMxMjQwZDBhYzNlZTk5YjRlYzQzNmQwZjVjODZmYzY1ZTE2ZjkgbGVnYWN5LXRydW5rCisyMjQ1MSA3ODhhMTYzNTFlMTg5NDM4ODY5NTJmNmZlNThlZjRiNTE2ODQxNDk4IGxlZ2FjeS10cnVuaworMjI0NTIgZmJlMjA3NGM1ZmE1YTIxOTE0MjNlOTQ4OTFiZDUzOGI0NDJjNGVhNyBsZWdhY3ktdHJ1bmsKKzIyNDUzIDNiOThjZjE2OTJkNDE1NWNmOTJmY2QxNTk0YTViNDM5NjNmNWU1ZmMgbGVnYWN5LXRydW5rCisyMjQ1NCBiZTAyNGMyNzRlMDJjZjlhMjdjNDNmZjQ4NWE4Njg2YWZjODRjZmFjIGxlZ2FjeS10cnVuaworMjI0NTUgMzg4YmNkZWU1MTI5YTNkZmFkYzVkMDU2MDE1NDY5NTk0MjhmYWQ3NyBsZWdhY3ktdHJ1bmsKKzIyNDU2IDlmODBjNzBhN2E1MWViZjcwMTIzMjY1OGZiZWQ5NTUzYjlhNmYxYmYgbGVnYWN5LXRydW5rCisyMjQ1NyAwNmY5MDI3MTQxZmY5YWI5MjI4MGRiMjMzOTNhZTJmNzQ0N2E0MGE5IGxlZ2FjeS10cnVuaworMjI0NTggMmZmNTcwMmFkYjU2ZGFiODQyOWMwMzBjNjQwM2ZiMzcyNWQ4YjNkOSBsZWdhY3ktdHJ1bmsKKzIyNDU5IDM5NTZiMjJkNWUyOTM0ZjYyZWJkNzFlMzRkNDQxYTc1NzAyZmY1ZDggbGVnYWN5LXRydW5rCisyMjQ2MCBmYmYxYWU3NjkzMDY2MDE1Y2ZmZDUzOWJiOTY5YjQ4Y2ZmNmZkZWUwIGxlZ2FjeS10cnVuaworMjI0NjEgOTY4ZDE2OTUwMWYyNzY2YWJkMGIyZTUxMzZhYTJjY2RhN2NjMWI2NSBsZWdhY3ktdHJ1bmsKKzIyNDYyIDY2MTcwMzBjNTFlM2FkODUwMzBjN2RlMWQ1MzI3NTQ0YzVkZjY3Y2UgbGVnYWN5LXRydW5rCisyMjQ2MyBhZjFjNjg5MzI0ZjUzMTZhZjY1ZTE1MDU3YWFjNWRmZWNlNjU2YWQxIGxlZ2FjeS10cnVuaworMjI0NjQgZmVkYmE4Njg2NWUyOTRjOTRiMGZjOWNlNWM4NjQwZTBkNGFhMTg1NiBsZWdhY3ktdHJ1bmsKKzIyNDY1IDFjMzliOTZkMjljMzI1ZmFkMTE1Mjk1NzhkNTBjZGFkOTIxM2UyZGEgbGVnYWN5LXRydW5rCisyMjQ2NiAxNGY3ODJiYTQwZjkxMmY3NTg4YzYwOGU2M2JkOTI1Y2VlNzk1MDEwIGxlZ2FjeS10cnVuaworMjI0NjcgMDQ2NDNhMTg0NTQ2YTExNjdmOWZiZmNmZTk0NmRkMjAwZThkYzIyYyBsZWdhY3ktdHJ1bmsKKzIyNDY4IDQ5ZmQ3MjQzNTFmNGE4NTRiN2IyMmIyZjI1ZTI1YThjMTVjY2UyMTQgbGVnYWN5LXRydW5rCisyMjQ2OSBjYTdkYmFjYmJlMTg2NmI2ZGE3NGQ3MDdiZDU5MGM3YjdiNTEzNTUyIGxlZ2FjeS10cnVuaworMjI0NzAgYzNjODdjZTRhZmRjYTZiMzc4YmViM2QxYmZjNDA4NDhkZjAwZTc4ZiBsZWdhY3ktdHJ1bmsKKzIyNDcxIDc4NjFlZTk1MWE5MWM0ZTlmNWZmNzE0MDJjMjRjMmVlNGRjZDI0NDYgbGVnYWN5LXRydW5rCisyMjQ3MiBlYjVlMmI2ODM1NGY1ZGViZjIzZDMwMjBmOGFlYzI0MzRlNzBkZDkyIGxlZ2FjeS10cnVuaworMjI0NzMgYmQ4Y2I2NjViNWUxMDhiMmY5NGNmMDRkNDhjNWVmNmYyNzM0MzA0YyBsZWdhY3ktdHJ1bmsKKzIyNDc0IGU5YTk3YjAyODg5YjA4MGY4M2M5ZGY0OTM5ZTc0Y2U5OWM4MWRiNGQgbGVnYWN5LXRydW5rCisyMjQ3NSBhOWZmMGY2ZmYyNjBlYTQxMzYxMTk5YWI4ZDY5MmI2NGVjODM0Yjc2IGxlZ2FjeS10cnVuaworMjI0NzYgZGQ4MmNkNDg2ZDhhMWQxOWEyNDc4Y2YwMWMwZGM3MGE4NTdmMTY5YyBsZWdhY3ktdHJ1bmsKKzIyNDc3IDM1YzY1ZDlhYTg2YTI2Zjg3OWJiZWY2MGY4ZDdjOWQ5MTg2ZmMxMzEgbGVnYWN5LXRydW5rCisyMjQ3OCBiNjUzMTIyMzhjMGI2NjRhYWQzMmRlYzhlYWY4N2VmYjI3NTJhMmU5IGxlZ2FjeS10cnVuaworMjI0NzkgMWNlNWE5MGZiMTkyYjg0Njk4MmNmYWYyNzQ1ODIwOWFiODhjZWFkMSBsZWdhY3ktdHJ1bmsKKzIyNDgwIGQ4OTliZmJmZmJiYTE3OTQ3NTdjZjAxNzZmM2Q1NTIzZjYzMTM4N2QgbGVnYWN5LXRydW5rCisyMjQ4MSBjMzRiYmYxNzM4NWU0ZDRkMGM4NWM0NjQzNzYzYWNjMzRkMjhmN2ZhIGxlZ2FjeS10cnVuaworMjI0ODIgNTUwMTk1OGVkYzM2MWQxNGM4MWUwZGQ3MjAzMjhlNWI0ZWQ2NmRmNiBsZWdhY3ktdHJ1bmsKKzIyNDgzIDRjOGQ3ODY4YThlNzYxMDAzNTNjNGE2NzMwZDVjZDUyMDNjNTNmMTIgbGVnYWN5LXRydW5rCisyMjQ4NCA5ZmI0OWNlMjQwZDE5ZWJlNGVjZDkxY2EwZWUwZDYxMmUyYzZhMzJjIGxlZ2FjeS10cnVuaworMjI0ODUgYjk1MDJkMWEyN2E3YTU5NzhhOGJhY2Y3MWNhZGVkZTJlMzllNDhlZCBsZWdhY3ktdHJ1bmsKKzIyNDg2IDFhZmMzMTE2YzYwMjM1YmEzMGRlOTJmZmRkZTQyNmYzZDVkZmQ4ZTQgbGVnYWN5LXRydW5rCisyMjQ4NyAxYmE5ZTM2ODRkMzU0ODJiNzNhMzc0ZmY1NzQyYjU2NGNlMzZkZGZiIGxlZ2FjeS10cnVuaworMjI0ODggZjEwYjY4ZWNlZWZjMWFhZmUyOTQ1ZWViOWYzMWUzM2M1MzhhNjg5YSBsZWdhY3ktdHJ1bmsKKzIyNDg5IGJlODVmNjg2YWQ5N2JiYmUyMGZjNGUwNWViY2YzYjI2ZTYwM2UwZDQgbGVnYWN5LXRydW5rCisyMjQ5MCA2ZjZhY2JmNzg5Mzk0M2Y4MzRiNWM0MjNjOWUzOTA4MWIyMGY3OTE3IGxlZ2FjeS10cnVuaworMjI0OTEgYjg2NWNkNWMxOTI1MDM2ZGFlYWIzZDhiMmFkZmMzYjZhMzVlNTBjNiBsZWdhY3ktdHJ1bmsKKzIyNDkyIGE1YTkzMmMyMTU4MzBlMDk1MDU3ZDZjMjY2NTllY2YyMjczZTUxZGYgbGVnYWN5LXRydW5rCisyMjQ5MyBiYThjNjJlNWY5MmQ2OWRmYTMxY2JlYjAyZDhmZmM1ZDZiNjRhYzkwIGxlZ2FjeS10cnVuaworMjI0OTQgMTRlNjA1MWQ1ZjFmMDdhOGI0NDBhMjdjYzA1M2NlODM0YWMwYTRiYyBsZWdhY3ktdHJ1bmsKKzIyNDk1IDNhYTA2MDY0NDkwMzE2NmU5MWQ3NWFjN2ExMjQzYWE0MWY4ZTg5NDkgbGVnYWN5LXRydW5rCisyMjQ5NiA1YWQ3MWZkYjIwNWIzNTY3YWIyYjBiMDc3NGNjYTZiZmYxOWEyMmY5IGxlZ2FjeS10cnVuaworMjI0OTcgNWMyYmY2Y2RlMTIzMDNiMWMyYWMyMjNhOWIyN2EyN2YwNjJhOGRkNyBsZWdhY3ktdHJ1bmsKKzIyNDk4IGY3YTIxMzBhMjU2MzY3NzQ0ZGU3Mzg0M2RkZjY5MjhkN2Y5NTg3MDggbGVnYWN5LXRydW5rCisyMjQ5OSAzNzU1OGU4NjVlYWQ1NGMyNzljOTYxNTdkZGE1NTdiMjU2YzQ3YmFhIGxlZ2FjeS10cnVuaworMjI1MDAgYzNkNTNkMzRhYjQ0ZGViYzY5NGIzMGIzNmRlM2ViOTZkMDVkZDhjMiBsZWdhY3ktdHJ1bmsKKzIyNTAxIDFlODdkYjBjYTI0ODJlMWM4ZTUzMTM2YzdjNjk3MjJlODcwNDIxYmMgbGVnYWN5LXRydW5rCisyMjUwMiAxNDU2ZWM3MzUwODcyZDY3YTk1MmI5NTJmMGU1OTRkMjY3Njk1ZGMyIGxlZ2FjeS10cnVuaworMjI1MDMgMTU3YmJiODk2MTk4Yjk4YzFmZjljOWEzNTMxY2I1NjgzMDQ2NGE3OSBsZWdhY3ktdHJ1bmsKKzIyNTA0IDEwNjkwOTBiMTI0ZWY4N2YzZTVjZDNmMzdlODc5OWM1NzY5OGYwNTUgbGVnYWN5LXRydW5rCisyMjUwNSAzZGRiMjEwOTMyY2E2ZGQxYzhjMzRmNjUyM2FlMjJlMWM3ODAwOWYyIGxlZ2FjeS10cnVuaworMjI1MDYgNmM0YTg3MzA2NjNhZGUwZThlMzg0N2U5ODk5NWVkMDE5OTMyYTFjNSBsZWdhY3ktdHJ1bmsKKzIyNTA3IDYzMDMwMjY2NjQ2NjJiOWZkMGI5NDNlN2Y1ZTg3ODNjODc2N2IxOTEgbGVnYWN5LXRydW5rCisyMjUwOCA4MTQ0MGRkMzI2YmJlMTc1MmVhZmQxMDY4NWRlODVmMjI5ZWI5MDlkIGxlZ2FjeS10cnVuaworMjI1MDkgYjk3MDE1MzhmODI3NmE2OTRjNWZhYjVhN2M1ZjZjZDlkZjU4NDI3NiBsZWdhY3ktdHJ1bmsKKzIyNTEwIGVkOWFiYWI5NzEwNzhjZGFmYjExZDhiY2U4ZmI3MTJjNDY5YWE3MmIgbGVnYWN5LXRydW5rCisyMjUxMSBjZWE5NDU3NjRkYjIxOWZkOTRiNjY5OWJjODYyZDdhMjZlMzI0NjA4IGxlZ2FjeS10cnVuaworMjI1MTIgMTE5MDNlYjAwOWY2NzAyMWM5YmQ2NDM5ZjVhNTQ2NmUxYzg2ZGVhYyBsZWdhY3ktdHJ1bmsKKzIyNTEzIGZhNzg2ZjhhNzU3MGE1YjNjMjYyODliMDIzZThhYWY1MmIxODBjYWMgbGVnYWN5LXRydW5rCisyMjUxNCBhN2JiYWM2OWM4ZWYyMjY2MDY3ZTY5MThjZWVjMWZlMmJlNWMyNmY1IGxlZ2FjeS10cnVuaworMjI1MTUgYjBkMmRlOGNlMjRmNGMyNTczMzRjYmQ2NmMyNjU3MjQxMTgzZGU4NyBsZWdhY3ktdHJ1bmsKKzIyNTE2IGFmMDAxOGJiOGNmYzMxOWVjYmI5NjEzMjMyNzc1YWExN2E2YjIwMjYgbGVnYWN5LXRydW5rCisyMjUxNyAwYzJiNDM5MWRmN2RkMGM0ZTVhZGVmYjQ3YTViMzYwOTc2ODA5MTExIGxlZ2FjeS10cnVuaworMjI1MTggNmNiOWY1MzhkY2U0OTg3ZDBmMmJkYWQzMzZkY2ZiODlkMzM0NjFkOSBsZWdhY3ktdHJ1bmsKKzIyNTE5IGZjNzYxNzMxMjE4MjgzZjdiMWI2ZTE3NjU4OTI3YzgwOWI2NjE3NWUgbGVnYWN5LXRydW5rCisyMjUyMCBhNjNhNjkzMzU1NGY5NTBkODJlMzkxNGJmMmZiYjQ5NmU0ZDAwOGQwIGxlZ2FjeS10cnVuaworMjI1MjEgNmY2MmY1YTYyYTJjNmJkMDZhOTFlZDc0YWE5MzkwOTBkZGJiZjAyMiBsZWdhY3ktdHJ1bmsKKzIyNTIyIDJkODhkZWE0NjQxNzdjYTU3YzI3MmRkZWYzYzY0YTEwNjhkYmMzZTMgbGVnYWN5LXRydW5rCisyMjUyMyAxZjRlYjhjOTI1ZDUxOGU1OWJjYTgwMjZhNDI0MmJhNDFlZTQ0YTU0IGxlZ2FjeS10cnVuaworMjI1MjQgZjdkYzIxY2IxNjYxZGMzNzhiMjM5MzQ1ZDhkMjFiYzQ1YjM4MzMxMCBsZWdhY3ktdHJ1bmsKKzIyNTI1IDNlYTI5MDllMDUxZmZiNjY3NzE4ZDUxNDc2ZTNjN2I4Mzk4NTllMzMgbGVnYWN5LXRydW5rCisyMjUyNiBjYmFhNTQ1Yzc4OGRhYTk3OTIxMDQ2MDY4MTU0ZjJiN2ZiYjgxODdhIGxlZ2FjeS10cnVuaworMjI1MjcgZDM3MGE1OGZiN2ZkOGYzZGQwNTkyZmFkYTRhZDM0NjAzM2E3ZTc4ZCBsZWdhY3ktdHJ1bmsKKzIyNTI4IDc5NTdiM2Y1ZDQ2MmQ3ZGQwMTVhMzBhY2ZlMzU3MzQ2YjZhYzk3YmIgbGVnYWN5LXRydW5rCisyMjUyOSA0MjI0NmI4YzU4YmJhODk2MGIzY2I3NDQyZDA3MmQ4MDQ1NjdkODYxIGxlZ2FjeS10cnVuaworMjI1MzAgMWZlYzAzMDEyMzQ2Nzg5NTRjMDNjMmQ2ODM1ZjdhNjJkYTYyZTk3YyBsZWdhY3ktdHJ1bmsKKzIyNTMxIDI2MWUyOGU3ZmEwMWZhYTEyNWUzNGJiMmI0N2MwZDI5ZjlkNjQwZjAgbGVnYWN5LXRydW5rCisyMjUzMiBiNTI1ZTYwMmY2YzJhNDI4NTk2NDljZGM5NzQxOGYzZjJmNmVlMjRiIGxlZ2FjeS10cnVuaworMjI1MzMgZGI0ODhjYzlmMjU5ODg2ZTY2ZTcxZDg1MWVlNjNjMzk4Mjc2MGI5ZiBsZWdhY3ktdHJ1bmsKKzIyNTM0IGVmZGNmNDJmODg1MjcyZWJkZDhhOTFhMmJmYjA3ODU3Mjg4NmI5NTUgbGVnYWN5LXRydW5rCisyMjUzNSA3M2Y2ODVkYjhjMGM3OTI5N2Y4Yjc1ZjJjYTI0MmM2NTI5ZmZkYjIyIGxlZ2FjeS10cnVuaworMjI1MzYgYjQxNjM4YTExZTRlNDM5ZWZkYmVmYjAwNWFhY2Y1ZDI4ZWUyODdhOCBsZWdhY3ktdHJ1bmsKKzIyNTM3IGY5M2MxNmMxMGE1NWMwZTlkZGEzNzMwYmRjYTNhYTA2YTJjYjgxMzEgbGVnYWN5LXRydW5rCisyMjUzOCBlYTljZmMzOGUxMWJkODBlMTg3Y2Q5MTMyNmFkMzEzNDkxMGE3MGYyIGxlZ2FjeS10cnVuaworMjI1MzkgYmE4N2MyNDRmYjU5YmU2NTRiN2ZiYWRlZDcxNjY3YTFjMDc5ZWEzMyBsZWdhY3ktdHJ1bmsKKzIyNTQwIDA2MTNmYTU3YWU2ZDljNzM1NGZlZjg0YjVlMjU2ODAwMmNmMDZhY2EgbGVnYWN5LXRydW5rCisyMjU0MSAwNWM5YTM1ZjIxNGYyOGI0OWY1NzVmZWQ3Y2UwZDczMDIzNGI2MGMxIGxlZ2FjeS10cnVuaworMjI1NDIgNjAyNjRkMWUxMDBlOWQ2NGU5MjFmNDRiOTI2ZWRmZmM0NDMwNDk1OCBsZWdhY3ktdHJ1bmsKKzIyNTQzIGQ2YjA4NGMyNWJhOGJkMTE3NGYwZjQyYjllMjkwOGU5MmU1MmJiZTcgbGVnYWN5LXRydW5rCisyMjU0NCBlYmZiNzRjZTdlNTY4MTM0Nzc0OTIxMmIyNzU4MDBiMTg3N2NkNDYzIGxlZ2FjeS10cnVuaworMjI1NDUgYjExMTJhMmMzNTRmZjNiNGQ1ZjQ5MDM2OGEzZGRhOTRhZTQ3Mzg0NiBsZWdhY3ktdHJ1bmsKKzIyNTQ2IDc4NmFjZWQ5MzdjNTM4OWIxYzVmOTE4NTExN2MxZWYxYTllZjkwYWIgbGVnYWN5LXRydW5rCisyMjU0NyA2MTMwZGVlYjRjYzYxNWI0YzAyYzBlNjUxZTRiMDhmYzNmNmUwNWVmIGxlZ2FjeS10cnVuaworMjI1NDggODZjZDU3ZjlkYjliOTZmMGVkNmNmOTU5OTYzZmIzZDBlMTNlMjg0ZCBsZWdhY3ktdHJ1bmsKKzIyNTQ5IGQ0NjY4MmJkYTgyZmY1Y2Q4MDJhNjFhZGY0OTMyMThiMTNkZTI3YWMgbGVnYWN5LXRydW5rCisyMjU1MCA4MTQ0NzIyZGMwNzY1ZWY5MmEzZjA3ZmVlNzZiYjk0Y2I2MGMyNjdkIGxlZ2FjeS10cnVuaworMjI1NTEgNzI1N2U4N2UwNzIwMTZhMzc4MDBlMTZjYzc2OTc2MTcwMmFkMDI5ZiBsZWdhY3ktdHJ1bmsKKzIyNTUyIGRiOTc2MjUyOWY0NTQ2NjY2NDJiMGUwNDk3NDFmZWRjYWYwMGRhM2QgbGVnYWN5LXRydW5rCisyMjU1MyAzOGJlMTc3YmQ0OTNhMDhmMTI1NzRjMjA5ZWFiNTFjMmJkYTFlZDQwIGxlZ2FjeS10cnVuaworMjI1NTQgYTQ4YTNkNzU0NzVlY2YyZjAzNWQ1YzQwNDk5YTI4NWU0NTUzNDYyZSBsZWdhY3ktdHJ1bmsKKzIyNTU1IDNkOTdhNGI1YzZhYTVlNDczYTkwODhkODZhZmQ5M2MyMTg1ZTk1OGEgbGVnYWN5LXRydW5rCisyMjU1NiAxM2Y0YmEwNTU2ODdmNDdlNzE4OTI1NDI4NzIyY2RkNmRhYzc3NjZjIGxlZ2FjeS10cnVuaworMjI1NTcgOWI1YTJjMWEwMmYzYzBiOWQ1Nzg2NDZlMjExYzVlZTJiODE1ZjJhZCBsZWdhY3ktdHJ1bmsKKzIyNTU4IDViNmE2ZDdkNDRhZWQyYjIwMWI3ZTQyNTRhNmMwMWMyMGI4ODdhNWQgbGVnYWN5LXRydW5rCisyMjU1OSBmOTIwZGRiNzdkOGIzZjg0MDdhOWE5ZDlkOGIzNjZhMWNkNTg3NDM2IGxlZ2FjeS10cnVuaworMjI1NjAgOTQ5MDVlYjcyZjRmY2I1YjIzNTg5OTFkZjdiYjI5N2UyZGQxOGZkYSBsZWdhY3ktdHJ1bmsKKzIyNTYxIDA1MWQ4ZTM4MGYzODJmZWQxYTQ2ZmRjMWVkMmFhNzRlZTRmNzFlYTMgbGVnYWN5LXRydW5rCisyMjU2MiBlOTNmNWMzODVmZjQ0MzRjMzRiMTA4ODdhMzA4ZjNiMjViODliMThhIGxlZ2FjeS10cnVuaworMjI1NjMgZDVhY2ZmMTc4YWQ1ZTY2NDNmZWUyZTIxNjc2YTc2ZTdmMzExZmNkMSBsZWdhY3ktdHJ1bmsKKzIyNTY0IGMwZWUxMGUwZTEzZTM1ZTU0MjgyOGYwNGJkNTA4N2QyMDYwZjY0NTYgbGVnYWN5LXRydW5rCisyMjU2NSBiZTliNTA3MDRlNGMwYTgwMzE0OWM1ODBjNDFlMGZmYjc4N2Y0ODBiIGxlZ2FjeS10cnVuaworMjI1NjYgMGRhZDBkYzcxNDliMmI3YzFkYjA3ZDJkZTdkM2MzM2ZjZDNiYWQ3YyBsZWdhY3ktdHJ1bmsKKzIyNTY3IGVmZjhjYTY3OWJmNmFlY2E2NzNkMGFlNDVjY2Q4YjZhMjJmOTkyNzYgbGVnYWN5LXRydW5rCisyMjU2OCBlYTEzMWZmMWQ4Y2Q4MmY5OTkwODk4MzFkZWYxYmFmMDg1ODIzMDZhIGxlZ2FjeS10cnVuaworMjI1NjkgOTIyMmI2ZTNiMzY4N2VmMDI5MjVjMjI2OGFiODU0Mjc2YzFkZTFkNyBsZWdhY3ktdHJ1bmsKKzIyNTcwIDc4ZGFjYjU0Mzg4N2VmYjgxYjVlZGNkOTQ2N2JhNDJmMzU4MTA1MzEgbGVnYWN5LXRydW5rCisyMjU3MSBmMTk5ZDBhYTlmODEwZjdjYTVlYTQxYjI5YTM4OWJiMzllMTdiZTlmIGxlZ2FjeS10cnVuaworMjI1NzIgYjczODQyODIzOGYxOTUwMGNiMTBhZDUwYzBmZTMxZDlkMzI1NWYzNyBsZWdhY3ktdHJ1bmsKKzIyNTczIGExYWRiZjA3NTY1NzczYzk3MTBmNWZlZTdjYzU0OWI5ZGM3OGQ0ODMgbGVnYWN5LXRydW5rCisyMjU3NCA2M2I5YjE3N2UzNTBmZDY2ZDUzNjQwNzQ5ZTI2ZGMxZTVhNDc0YzY3IGxlZ2FjeS10cnVuaworMjI1NzUgMTc4MDIwNzdlNzdjZjU5ZmQxNDdjOTJiNDBhNWY3YjNhNDQwNDVhOCBsZWdhY3ktdHJ1bmsKKzIyNTc2IDNiMzA3OWI4NTcyNzQzNTIwYTc3YTcwOTdmNDU0NmY4N2Q0OTEyMmIgbGVnYWN5LXRydW5rCisyMjU3NyA4YzJhMjliNzU0OGVkNjI0MmUxNWQzNTAyMGNlMjk1MWUyMTNmYTc4IGxlZ2FjeS10cnVuaworMjI1NzggYmFmYmU1Y2M5NDFmZjFhYzcyMDdkNTdhNWZmMTlkYmE2MTI0NDI2MyBsZWdhY3ktdHJ1bmsKKzIyNTc5IDJiZjI2OTA5NjZmZmQzMjFhYzY1M2ExZTFmNjY3ZDYzY2U5YTQ1N2EgbGVnYWN5LXRydW5rCisyMjU4MCAzNmZhOGU5YmMyZGE5ZTgyNTQzOTBhOTRkMjViMGU2NDY2M2Q5OTY0IGxlZ2FjeS10cnVuaworMjI1ODEgMDMzNDYyZGYxN2JmNThiN2I3ZGI3NzlkNmUzYzE1YjUwNjFjOTVmMyBsZWdhY3ktdHJ1bmsKKzIyNTgyIGM0YjJhNmIwNGQwYjkwYzEwNDMwNGE0ZGUxZmUwYmI5OTE1ODQwNGIgbGVnYWN5LXRydW5rCisyMjU4NCBmY2FiMzZjOTMzMjdjYTVhNTZmYzBhMDY3MGJhZmY0NTRhMjIyYmI1IHIyMmEyLWJyYW5jaAorMjI1ODUgNDg0YzA1ZGM0OTk4NDE3N2QxNWZlZGRiOTYyMWYzZTcyZDM1ZDc5YyByMjJhMi1icmFuY2gKKzIyNTg2IDI5NGE1NmJmNzMxNWYwMDA0YmZkNWExZDc4OGNiY2FjNTUyNDY2ZjkgcjIyYTItYnJhbmNoCisyMjU4NyBmZDExOTg5OTA0NWM4Mzg0Y2NlZWQ4NjM2MGVlNDBlMjIxZDYyYjU2IGxlZ2FjeS10cnVuaworMjI1ODggOWU0ZjczOWU5YTg0ODY4ZWEwNWY2MGU0ZTFmZjgxMWFiZWIzOTMxNCBsZWdhY3ktdHJ1bmsKKzIyNTg5IDYzODZmMDFmMjQwMTYyZDk3YTA4YjllZTJiODY3NjM5ZTRmODJkNjQgbGVnYWN5LXRydW5rCisyMjU5MCA1ZjFlNzU3MWIxMjljYjA3YjkyYTU1MWUzYWM4NjA3ODBjZDdhYjNiIHIyMmEyLWJyYW5jaAorMjI1OTEgOGE2Y2RhMTc1NWViOTkxZDI0MzQ2N2Q3ZDkwNjFiOTQ0MzI0ZTUzOSByMjJhMi1icmFuY2gKKzIyNTkyIDczNDA2NmYyMTY0ZjM2ZTQyYjI2NTFjMDE3MDE5ZjExM2JiYWRlMWMgcjIyYTItYnJhbmNoCisyMjU5MyA1YzhkZTY4YjNjZGNiYzQ2M2RhYTUzMzU5NGI3ZTI0MmI3M2ZiZjljIHIyMmEyLWJyYW5jaAorMjI1OTQgYWYwNThkNjllYWVkZDc5MjJiZjEyYmQ2ZWI1MTI5NzNmZWJjNGU1NSBsZWdhY3ktdHJ1bmsKKzIyNTk1IGQ3NjRkNTU2OTJhMTRmNDFjNjUzZmY5ZDdhNjEwZGYxYzQzZGJmNGUgcjIyYTItYnJhbmNoCisyMjU5NiA0NzliNTYwZGVjYTcwMTcxN2FhOWYyMjA5NTM0ZmE5ODMzNzgxYTNkIHIyMmEyLWJyYW5jaAorMjI1OTcgOTM1YWEwNzRjZGI4NmFiYzkxNTMyYmI1NmJkNjRiMDczNjU1ZWUwYSByMjJhMi1icmFuY2gKKzIyNTk4IDJhMDgzZTA1MDYxN2I1OTIxZDIyMmJjYmE2OGMyMjhiNWE3NDExNTAgbGVnYWN5LXRydW5rCisyMjU5OSA1MGQzYjM2NmU4YzhhOTBkNmYzMGRjNzJlMTQxOTgxOGE4NjQzN2E3IHIyMmEyLWJyYW5jaAorMjI2MDAgODg0MjIwODEwOTVhZjQwOGVjYjg4NjhkYTNjOGE1NzM4NmExODM1ZiByMjJhMi1icmFuY2gKKzIyNjAxIGU5Yjc5NWQ0YzA2MGNkNzIyMDQzZDcyMjkzNzc0NjI5NjU4N2MzNjkgcjIyYTItYnJhbmNoCisyMjYwMiA3YjU1M2IxYzNlOGJkMTRkMGM4YjQxNjljNGJjMjM2YWEzNGFkOWFmIGxlZ2FjeS10cnVuaworMjI2MDMgNjBkNWNiYmVhZGMzYjg2OGY2ZWVmNWVmYzZiZWZkYTE1ZGM2YjQxMSBsZWdhY3ktdHJ1bmsKKzIyNjA0IGZiNDdkYjg1NDEwZTQ5Zjg1NTgzMDA4N2YxZGNmZDVmYmZmNjVlM2YgbGVnYWN5LXRydW5rCisyMjYwNSBjMmRiMThjMDcwZmVjZGExNmM0ZGY0NTE1MjA4NGRkZWY4ZjBiMzliIGxlZ2FjeS10cnVuaworMjI2MDYgNWViZGMzYWQ4ODc3OWZlOGFkZWU5ZDJlYTdlNGFkZTc2MmQwOWJjYSBsZWdhY3ktdHJ1bmsKKzIyNjA3IGNlNmVhNDQ0OWU5N2NiMWVhMjk5MDM2YmJiODYwMWUyYzE0YTk2MTkgbGVnYWN5LXRydW5rCisyMjYwOCBiOWNhZjhjYjEyYTJlYzM4ZjYxZjNhMWI4YmRjMjUzMDUxMzM3NzBkIGxlZ2FjeS10cnVuaworMjI2MDkgYjQ1MDg0NzMwOTE2ZDk5ZTAxMjAyNzRjYWUwMTI1Y2RlMGRhNzIzYyBsZWdhY3ktdHJ1bmsKKzIyNjEwIDc3ZjQ5NWU4MjJjMTU4MjAxYWY5ZWFiZTUzODBmYmE0MjFjZTZjZTIgbGVnYWN5LXRydW5rCisyMjYxMSAwZTdhZWQ1M2I1ODMzMzJiZGJiNjc5YWM3ZWRkZGI0ZmU1ODJkMjlkIGxlZ2FjeS10cnVuaworMjI2MTIgM2EyZmU3NDVhMGJiZmFmZjc1NTljODI4MWY0NTQ4MGIyMjVhZGExMiBsZWdhY3ktdHJ1bmsKKzIyNjEzIGIyMjY1OGE0NjhjZmFhZDQzNjU0MmMwMWM3MjI5NzYzODZhNTdjMGMgbGVnYWN5LXRydW5rCisyMjYxNCA2MjE4NDk5YWViZGEyYjk5OTI2MjQxNjAzMDA2NTg5N2M4ZTBkODk0IGxlZ2FjeS10cnVuaworMjI2MTUgMGY4NzNkMDZhYzEzZmJlMTUzMTczODI1MmZjYmM3YzZiZTA2ZTVhNSBsZWdhY3ktdHJ1bmsKKzIyNjE2IGZiMzE5ZTljYzJhZGZlZDNmYTU4N2MyMDFmMWVhYWI0NjVmYTBhN2EgbGVnYWN5LXRydW5rCisyMjYxNyA3NzYxYWM4YmViODE5ZTJjYWJjY2U5YmExYjM2NDc2MDJiN2ZmMDFhIGxlZ2FjeS10cnVuaworMjI2MTggMGM2YzZlODc4Mzg4YjlhYzQ5Y2FkYmJjNTM0ODE2NmY3MGNhNjg2MiByMjJhMi1icmFuY2gKKzIyNjE5IDg4YjFlY2QwNDhmYmMyM2M1MDdlOTA5MmU4NDE0Njc5YTI5YWY5ZGMgcjIyYTItYnJhbmNoCisyMjYyMCA4YmM3YmNhMzJhOTU2OGM2YWMyZDYzODMxMjgxNzUyODIwNWE1OWMyIGxlZ2FjeS10cnVuaworMjI2MjEgMmZjMTAyYjgzOGVkODIwZjc2ODE2YTQ1ZmZjYzkxOTFiYjQ3M2YwNSBsZWdhY3ktdHJ1bmsKKzIyNjIyIDk2MjYzY2ZiMmM5NjYyOTk5YmM2YWE3YTI0MzU4MmQ3ZWVkZjQwNTQgbGVnYWN5LXRydW5rCisyMjYyMyBlODUxZTYxNDhhZDhkOWU1NjVmZjM4ZmY4MzU0OGZlODYyMzEwNzdmIGxlZ2FjeS10cnVuaworMjI2MjQgMTAwZGNjOWU2ZjJmM2FhZDkwMDI5MWQ2NjMwNzcyOTI0NjhlZDBmMiByMjJhMi1icmFuY2gKKzIyNjI1IGI5NGNlN2Q3MGNmY2E5MDY1NWRiZTZkZjhiNjc3MGMyMWQ4ZWU2ZmYgcjIyYTItYnJhbmNoCisyMjYyNiA2MGMwY2ZmNWQ1N2VjYmUwZTljZjFiNzVkY2NkZmQzOGVhNGRjMmIzIHIyMmEyLWJyYW5jaAorMjI2MjcgODUzZGJlMTJiYmU2OGE2NjJhZWM3NmI1MjRjMGIyOWMxMzBlNGI5NyByMjJhMi1icmFuY2gKKzIyNjI4IGJlNWJlOTg5Y2FmZmVhMDQ2YmEwZTMzMGNmYzdlNTg1NmYyYTE2ZGYgbGVnYWN5LXRydW5rCisyMjYyOSA4NjA3YmM4OTBiMWYwMjVkMmRkZWZjOGYwY2MxZjMxNGIxNTMxYzdjIGxlZ2FjeS10cnVuaworMjI2MzAgYTAzODk5Mzg5MGIyM2U2YzMyY2RlOTQ1ODAxNDk2NTFmZmJjNzc5NiByMjJhMi1icmFuY2gKKzIyNjMxIDU1NDQ1MDQwOWE3MzhlMjFmOTgwMDkzNzBhMGY4MDU3M2U2OTc1NGYgbGVnYWN5LXRydW5rCisyMjYzMiBkOWVhOTlhNmY2YjQ0NjY4NmU3Yzg3ZWQ2MTBjODNjMGY2N2JhNjJkIHIyMmEyLWJyYW5jaAorMjI2MzMgNWJjYmM1OTBmNGE3MTE2MGNlODYxMTExNjA0NjM4MDI3ZTMwN2NjNiByMjJhMi1icmFuY2gKKzIyNjM0IDg5OTZkYzUyMGI1N2JiNzI0YTkzZmJjNmExZjc1YzY1MzRjNmE1ZmMgcjIyYTItYnJhbmNoCisyMjYzNSBhYzZiZmE1NWZjZWJmNGI4MDEwNmI1MTYzNzkyNTYxYzhmODg3ZGIxIGxlZ2FjeS10cnVuaworMjI2MzYgNjEyNWQ5ZjkyNDQxZGMzMmE1M2Q2MTE1Yzg4MjkxYzQ2ZWM3ZTM3OCBsZWdhY3ktdHJ1bmsKKzIyNjM3IDlkZTgzZGRhOWYwOWEzZDE2YmFlMjlhOWNhNDMxNTU5NTdjNWI5NTQgbGVnYWN5LXRydW5rCisyMjYzOCA5MzA2ZjgyOGZiYjc3MzRmYjEyZDU3N2Y0ZjA5NWY3NjEwOTVmMzY5IGxlZ2FjeS10cnVuaworMjI2MzkgMDFlNjY3ODBhZjYxNjMxYmViNzY4MTY2ZGE1ZTgzM2NmZjFiNDliNiByMjJhMi1icmFuY2gKKzIyNjQwIDgxYzc1NjVhNTZhY2NlODU4ZTZlZGZjZWFlODYzMzVjNzc2YWIzNGUgbGVnYWN5LXRydW5rCisyMjY0MSA3ZTVlOTc0YjNkMzc2ZDRiYjVlZmExMzE5OGFiZjJhYzlkYjc0NTc3IGxlZ2FjeS10cnVuaworMjI2NDIgYmM5YzhjZWJjMmVmYzgwNzg2MDUxNGE5ZWVmMGM4Y2U1ZDAzYmYyNSBsZWdhY3ktdHJ1bmsKKzIyNjQzIGM0MDNhZjAwMzg4NGU2YWRiNWY1MjNkOTFmNzZmZGY4NGU5YzFhZDkgbGVnYWN5LXRydW5rCisyMjY0NCAwZDFiYmU2NWExZDg3N2I4NTc1MDRlODMyYjM0YTU0ZmYzMTU3NzI5IGxlZ2FjeS10cnVuaworMjI2NDUgZDRiYTZlMmFhYWUzNGFjM2UwYmIwMzkxMTc5ZjQ3YmYxZGVkNTM4MCBsZWdhY3ktdHJ1bmsKKzIyNjQ3IGNjYzRhZjY4N2NhYzZjZDIxOGVjMDEzOTViYTFhYjlkYWFkODk3ODQgbGVnYWN5LXRydW5rCisyMjY0OCA1ZjczMTExNWUzNTI2YmRhNzhhMzFhY2Y5YTk3MDNmMDM2MGJmZWIyIGxlZ2FjeS10cnVuaworMjI2NDkgNDc2MzNiNzllYzE5ZjNhZTY2ZWRkZGZiNjFjZjY2OTc3NjAzMjgyNSByMjJhMi1icmFuY2gKKzIyNjUwIGIyZGFkNGQxN2NhOWFlMWRmZjNmYjVjMjM4ZjA1ZGU3Mzk4Y2ZhMmIgcjIyYTItYnJhbmNoCisyMjY1MSAwOTI4Y2Q2MmRkZWE1ZDIwYzFhYzgwMjQwNzgzMmNmYjYzZDgzMzM0IGxlZ2FjeS10cnVuaworMjI2NTIgYTZjZTJkMTZkNzM5ZjcyYjI0YjcxOWQ4ZmEwOTUyOWUxZjcxZjc3YiBsZWdhY3ktdHJ1bmsKKzIyNjUzIDBiMTFmMDljZjFlNDBkM2NjMDUxN2M4Zjc2MDQ5MmZmYmUyZjA0YTQgbGVnYWN5LXRydW5rCisyMjY1NCAyOTNhNDEyYzlmZDk3ZDk1MjRiZTU5ZWM2NjExNzhjMTZkMTczYzg5IGxlZ2FjeS10cnVuaworMjI2NTUgMTI1Nzg1ZjFlMTJmZTdiODJhNTE4ODJlNTBiNjU5YWQ3MTc4NmQxZCBsZWdhY3ktdHJ1bmsKKzIyNjU2IDgxMWYyODk2MzdhZDI0ZWYxZTJmMjRjY2RmMWRjODk5MzFiZmY3NTAgcjIyYTItYnJhbmNoCisyMjY1NyBiMTU5Y2UzMzE1Y2I4ZGE2OGMwYmVkNTBiOGM3NTVkZDIzNWI4MWFjIHIyMmEyLWJyYW5jaAorMjI2NTggMzRhNzRiODFjOWIyZmE2ODU2NDAwODJiMjE4M2MwZDRlZjgyM2ZiMyByMjJhMi1icmFuY2gKKzIyNjU5IDczMGRjZDZkNTkwYjJiYmUxY2E4ZWFkMmFhN2JkOWViYjE4NmMxODAgcjIyYTItYnJhbmNoCisyMjY2MCBmNTJmYTJiNzAzZDcyYzZkZDAxOWYyNWRkZjY3NGMxNWVlMmY3MzNjIGxlZ2FjeS10cnVuaworMjI2NjEgZTc2ZjdjODNlYjBkNTYwOTc5N2E2NDhiYzUwZGE1NzY4MWMzN2FiMiBsZWdhY3ktdHJ1bmsKKzIyNjYyIDVjMDM1ODRjZjNjYzFjNjVkZGIxOTZhNTM4ZDcwMDY5OGZmNjFhMWYgbGVnYWN5LXRydW5rCisyMjY2MyAyYjdjMGJlZGZmZGJkMzk0Mjk0NjMwNWNmMDE2NDVmNTU2NWU4ZTE3IGxlZ2FjeS10cnVuaworMjI2NjQgODU4NjI4Y2Y2ZTI1Njk0NTQ3MmFjYzk2OWRlYjZjNzcyOTc3ZjUzMyByMjJhMi1icmFuY2gKKzIyNjY1IDE3ZTdiMWEzMzFmMzVkZmVmMDJkYjg5ZGY0ODliMDFlNDFiYzI0ZTYgcjIyYTItYnJhbmNoCisyMjY2NiBmYTM5ZjAwZGQ1YzMzM2JkYWNjYWQ4ZDdlYTAwZWIxN2U5NDhjZTFhIHIyMmEyLWJyYW5jaAorMjI2NjcgZmZlZjRlNDFmMDZlZGM0MWZkODJhZGMxYzU0NTI0ZjM0YmNhZWFjOSBsZWdhY3ktdHJ1bmsKKzIyNjY4IGM2MzdmMjljODE5OGFlMDM3MmM1ODJkMDI2NjkyYzRkZWIxZTcwYmEgcjIyYTItYnJhbmNoCisyMjY2OCBkN2Y0MmM5ZGU5NDQwZDdhNmEyNTJjNTBmM2RjYjA1Yzk3ZWJlY2M0IHIyMmEyLWJyYW5jaAorMjI2NzAgZGUyZmJjNTJjMWViOWY0ZDgxOWIyN2QyMTY3YmZkMWQxMzI3N2UxNyBsZWdhY3ktdHJ1bmsKKzIyNjcxIDc1MjY5YWIyNmQwMzEzNzdiMTcwMjYxNGM5ZjJlNGNkMDkyNTllOWMgbGVnYWN5LXRydW5rCisyMjY3MiA4ZDY0MDQ0NTM0NDg1N2U0OGQ1YTM0OTcyYWVmYmM0MzE2NjJkNzZkIGxlZ2FjeS10cnVuaworMjI2NzMgYzcyNjE2ZDYxNDNjMmM4OTcyNzJhZjEwODBhNDIyNzQ0MTZlYzk5MyBsZWdhY3ktdHJ1bmsKKzIyNjc0IDljZjY2OTU4MTExMDM0YmU2MzI4MTA3ZmFiNDkzNWRlMGU1ZjU4NzQgbGVnYWN5LXRydW5rCisyMjY3NSA1MDBjMzU5MDM4YzdiMjM1Zjk5MTdmYTA4ZDIzOTgyZWFjMWEyYTNiIGxlZ2FjeS10cnVuaworMjI2NzYgYjEzOWJkYjZkNDhhNGJjZDUwOTljYzhmZTM3Zjg0MmFhZDAxZTkxMSBsZWdhY3ktdHJ1bmsKKzIyNjc3IDk5OWRlNTRhYzZhNjIxZTZlN2ZiZjJmOTg5NTliZjhhODFhMDk4NmQgbGVnYWN5LXRydW5rCisyMjY3OCA1ZDgxYzZiZmYzMDZlNWFmMGE2NTgwMTYyZjllZmY2YjVhMmNhNGZjIGxlZ2FjeS10cnVuaworMjI2NzkgYzE0MGJkN2QzYmRjZmZjZWZlZTBlODk5YjRmOTk2NzNkNjNhZjVkZiBsZWdhY3ktdHJ1bmsKKzIyNjgwIGRhZDMyMDljZTk3MzMyYTlkYTI1NTllNmI5ZjVlOTEwOWJjODg5YmMgbGVnYWN5LXRydW5rCisyMjY4MSBlMTZhZDVmN2YzODcyMjFiZjdlZTBiZTdjYmUzZmNiNzY2N2M1MGFkIGxlZ2FjeS10cnVuaworMjI2ODIgNWZlYzFjOWEyMWVhZGY0ZTk1NWUwMmI0YzY4ZGM4YjFkZjU4ODFlMyBsZWdhY3ktdHJ1bmsKKzIyNjgzIDdiZTRjNzNiYWM1M2UxNDkzN2E0Yjg4YjhkMDgzZWViMjNkOTU0ZDAgbGVnYWN5LXRydW5rCisyMjY4NCBkZTc0ODM0N2E0MDQ4MGZmNDI0MDI5ZmM3OGRlN2IyYThlODY2NjU2IGxlZ2FjeS10cnVuaworMjI2ODUgY2ExYjhjYzFiYTJiZDY1YmRlZWMwMjZmZGMwNTYyZTcwMTg1MDNlMCBsZWdhY3ktdHJ1bmsKKzIyNjg2IDA3NTcwOTgzNTBjMjg1N2Q1MDZmNGYwMzBjOTc0ODg4ZmRlNjUwM2QgbGVnYWN5LXRydW5rCisyMjY4NyA0ZDY5ZDc0MmRiMmY0NGJkODY0ZTA4YTVhY2EzZmY3MzEzOTViNjcyIGxlZ2FjeS10cnVuaworMjI2ODggMDkyMmQ2MDlhY2QxMjUyYTc3ZWEwOTVkOWM3NmJkMjQ3YjVkZjZiNCBsZWdhY3ktdHJ1bmsKKzIyNjg5IDcxMzcyYTBmNTBlMWI0ZDUwZDgwNDExYTdjMTM2MjU3YmMxMWMzZmQgbGVnYWN5LXRydW5rCisyMjY5MCAyYWVhMzk0ZjQ3ZGQ0MGUxZjJjNjRjNzQxYTA2YmExYzYyZTFkOTU5IGxlZ2FjeS10cnVuaworMjI2OTEgZjVkODdjNDFmNjViMjAyN2I2MDkwYWFlNTdmZTYxMzA4NjY5MzNiMiBsZWdhY3ktdHJ1bmsKKzIyNjkyIDNiZmNkY2FiYTcwMzQyNTQ0Y2I1YzUxOTg2YzNlZWE1ZWZjNzFmYTAgbGVnYWN5LXRydW5rCisyMjY5MyAyNWQyZjY0ODMzODQxOWZiNWEwYTkzZDIzZGNhNjk5OThmM2E3ZDczIGxlZ2FjeS10cnVuaworMjI2OTQgZjk0YzRiYjc4ODhiMmM3ODI3OWEzMWI0NWNlNmVjZDI3MmQ4ZTg0NyBsZWdhY3ktdHJ1bmsKKzIyNjk1IGNlZTFkZWNjNGZmMjA5YTNmNDJlZjM3ZTVjNDNmNGM0YWU2YmI3ODAgbGVnYWN5LXRydW5rCisyMjY5NiAyODE3ZjFkM2FkYmUzMDNmMGFhMDU0YTFjODc5NGE1N2U2Yjk1MWQ5IGxlZ2FjeS10cnVuaworMjI2OTcgMTBiNDRlM2IzOTA1NDdhMTc2ZmE0MGFjNTQ0MzY4NDEwMTJiYmVlYiBsZWdhY3ktdHJ1bmsKKzIyNjk4IDdmYjVmMTU2ODVkZDA2YTkyNjhhYjk0ZWQ1YzVlMDkxM2RlZjQyN2IgbGVnYWN5LXRydW5rCisyMjY5OSA5YWZkOWQ1ZmI5N2EwYjYwZTZjMTQwNjIwOTM2OTQ3ODM1YWJhZWQxIGxlZ2FjeS10cnVuaworMjI3MDAgMjViOWI2MzRkOWUzZDFlYWZmNTcwNTMxMTk1YzcxN2QzOTEwMWJlYiBsZWdhY3ktdHJ1bmsKKzIyNzAxIDNiNWYzNGM1YmM2YzkzYTE3MDA4MGQ1YjQ3NTViMjQ4OWM0NTQzYWIgbGVnYWN5LXRydW5rCisyMjcwMiA2YzJiN2I2MjRlZjIzZjIyZDI4NDc4NTg3OThjN2ZiNTA2NTIzOGIxIGxlZ2FjeS10cnVuaworMjI3MDMgOGY5MGUxZjUwYzExODM4ZmNhZDAzYmY4MDJmZWUxYjhmYzM0Nzc0MSBsZWdhY3ktdHJ1bmsKKzIyNzA0IDUwMDE5Y2I3ODRlMGRjZWViM2RkYTE1NGY2YWI5MDIzOTcwNzc4YjggbGVnYWN5LXRydW5rCisyMjcwNSA3NTMzNDEyZGM1OGNkNmE5ZmNlYmZiNjk5M2Q5YTc0ZGZjODRlY2YyIGxlZ2FjeS10cnVuaworMjI3MDYgZjdhYWY3MjFhODFiM2NmYjc1Yzg1YmM1NmY5ZDk1OTg3NmUwNDYzNSBsZWdhY3ktdHJ1bmsKKzIyNzA3IDEzNGUxMzNkOGM0NDVjYzZkYWZjNjU5MWQ3YjU3YjNkYTNlZjgwN2QgbGVnYWN5LXRydW5rCisyMjcwOCAwYjY0MmQyMjBiMDJlMmQwZGY4OTNhYzIzODhkZDc2OWE1MWZiNmFlIGxlZ2FjeS10cnVuaworMjI3MDkgNDVkMGUxMTQyMTJlOTgwNTE2NDhiYzFjNjhlOTc4MDZlZDczZDdmZCBsZWdhY3ktdHJ1bmsKKzIyNzEwIDRhMzBlYzc5OGU2YzJlYjg1OGEwNzBiODUyNDZhNjg0NDQxNmZjMzEgbGVnYWN5LXRydW5rCisyMjcxMSA2MWQ1M2MwNTNlNDM0ZTllYTA2NjJjNTEzYzIwZDFmMjNjNGJkZWZhIGxlZ2FjeS10cnVuaworMjI3MTIgNmU2ZmM3YjZhMzYwMWJkZTZlZjQ4MzczOGFkZmI2MjRjMjYwOGQyOSBsZWdhY3ktdHJ1bmsKKzIyNzEzIDBkY2VlOWJjZDgxM2U4NjE2MDUyNzhlZDk2ZWMxNzQxNjdhMDgzZjEgbGVnYWN5LXRydW5rCisyMjcxNCBiM2M5MmYwMTM4NjlmMDY4OWVmZmQ1MmNiNWEwMTk5YWE3OWQ1YzlmIGxlZ2FjeS10cnVuaworMjI3MTUgNDVlYTNiNWZjYmU1Nzg3YjA1Y2JlYzY1NzYxZjY1ZDhhZmJlYTYwNyBsZWdhY3ktdHJ1bmsKKzIyNzE2IDhkMmIyY2IyZmViY2YwNGU5NTEyMWQ4YTY4ZWJhOGMzZjQwM2YzOTAgbGVnYWN5LXRydW5rCisyMjcxNyA1NTNkNjg4NDM4YzQzNDU2ZWE3NDVlNTQ4Y2ZhMjM0ODEzMjU5MTQ1IGxlZ2FjeS10cnVuaworMjI3MTggYzM5MmMzZTQ5ZGQ1NmVkMTQyZmVjNmViYWNhYTMxNTAxZDIyNmZmZSBsZWdhY3ktdHJ1bmsKKzIyNzE5IGY5ZjRiZGNiYzI1YWFlM2I4NTJkYjRjMTJjNDg5YTI4N2EwMjE3YTEgbGVnYWN5LXRydW5rCisyMjcyMCBiYzYzYWZjNzAxZWY3MGRhNjVlMGY3ZDY5ODZmYzMyODZiOWNkZWRhIGxlZ2FjeS10cnVuaworMjI3MjEgMGU3MGRmOTg0MjRlZGNjMzZiODg4MWZjYjBkYTJmZjQzM2I3YjFhNCBsZWdhY3ktdHJ1bmsKKzIyNzIyIGUxYzkxYWM1NWNjYTgwNGNlN2QxMjkyM2I0NTgzNjdlNDIzZTQ0ZDYgbGVnYWN5LXRydW5rCisyMjcyMyA2N2IzMjVjZTAyMjZkNDBhZjEwMTI0ZGJhMzk1NmZmZTFkMjMwNzI3IGxlZ2FjeS10cnVuaworMjI3MjQgNDc5NmE2N2E5OThiOTkwY2I4MjMzNzhiOGQ3ZTFlMWNkY2YxZWQzNSBsZWdhY3ktdHJ1bmsKKzIyNzI1IDk4NGZmYTEyNDYwNjA5Yjk5MjdjMWI5NzcxNTMyMjQzNzg2MzcyMjUgbGVnYWN5LXRydW5rCisyMjcyNiA3N2ZlYThmYTFmMTY0MzFjMzlmZWU3MmRmYzQ3YmRhY2MxZWZhY2I5IGxlZ2FjeS10cnVuaworMjI3MjcgOTNjYjVlYzQ0MDE3OThkNTIzYTY4MWYyYWJkNjUwZmYwMzFhMjc2OCBsZWdhY3ktdHJ1bmsKKzIyNzI4IGMxNzFiMDdiZjZhOWU4ZGVlZmNkOTdhY2ZhNmM5OTZhYWE4YzAwZTcgbGVnYWN5LXRydW5rCisyMjcyOSBkZTk3N2Q3NjI3ZWJmZmMxOTE3MTIwNmNhNDE1MDJlZWM2NTFiY2YyIGxlZ2FjeS10cnVuaworMjI3MzAgMDAzYTBmZTljMzUwM2VlZDA2YWU1ODlhNDc1MzRhNmFlYmM4Y2ZiYyBsZWdhY3ktdHJ1bmsKKzIyNzMxIDVjODU5ZDJjYjM3YmRjNTA2OTY1MmNhODM0MGIzM2IwYTQ4N2NmYWUgbGVnYWN5LXRydW5rCisyMjczMiAzZTY4ZTFhMDJhZDIwOGFkZDhmMzNiYWNjMmQ3MDIwYmY0YzYyMDE4IGxlZ2FjeS10cnVuaworMjI3MzMgNDJiMmYxOTM2MjU0NmVkM2I4MTUxN2ZiZGI3MzgxZDI2MDZlYjIwZSBsZWdhY3ktdHJ1bmsKKzIyNzM0IDNlNzQzMThhMWI3NjNiZGI0YjE0YjM4ODI2NjAxMzZiN2RiMDk4ZmYgbGVnYWN5LXRydW5rCisyMjczNSBjNjM4NTAzOGRlMzlhZmU1YzcxMjYyNmJkMTgxNGI3MDZlODFlNThhIGxlZ2FjeS10cnVuaworMjI3MzYgYzFhYzVmODI3YmMyNjMwMDNjNmMyZjU4ZTRjYWIzMzZiYWMwYjAzMyBsZWdhY3ktdHJ1bmsKKzIyNzM3IGQ3OWI1MTg2N2NkYjUxOTAxYTVlZDEyNGY5M2VjZmMwM2U1NDY0YTAgbGVnYWN5LXRydW5rCisyMjczOCA1NmI1MGU0ZDY4N2ViYTUxMjNkZDkwMTQ5Yjg0MDlmYTZlMTQ0MDMyIGxlZ2FjeS10cnVuaworMjI3MzkgNjczNGM4MDY1MTE0OGY1YTA4NTVhZjY4ZDdlN2RkZDgzNmI1MWMxNSBsZWdhY3ktdHJ1bmsKKzIyNzQwIDQzNTRiYTQ3MzVhMDk2Nzc2MTQ0Yzg2NzkyMWJlMjc1YWRiZTk4NDUgbGVnYWN5LXRydW5rCisyMjc0MSA2MTc1NTU1Nzk2MTFmYTNiYjI1NzY5OTBmZTczMmExODliNDIzYTNmIGxlZ2FjeS10cnVuaworMjI3NDIgNTQ3YjZlZjExMDhjODQ5NDc5ZDkwNmEzNGJhZGZiMWVjZmFhNDE1MCBsZWdhY3ktdHJ1bmsKKzIyNzQzIGZjNWM3NTgwN2UxOTUyY2I2ZGU5NjIyMmIwMjdjZDlmODU5NjE1Y2QgbGVnYWN5LXRydW5rCisyMjc0NCAwNzgyOTJiZjk0Y2M3MjEwYTc1YWVlZDA0ZDQyODQwOGI1YmZhNTBhIGxlZ2FjeS10cnVuaworMjI3NDUgZDBjZTA0NjBmNGE3YzYxYWRkNDg0YmI1ZWJhN2JhMGFhNzlkOGQyNiBsZWdhY3ktdHJ1bmsKKzIyNzQ2IGNlNGYxZTk4YmE3ZTQzNjliM2VjOTA2ZTkzYTc4M2Y4YWM2NjM3Y2MgbGVnYWN5LXRydW5rCisyMjc0NyA2MmJmOTQwMWExYWNmZGRmYjllYzllNGU1MzNjODBiYmQxZjVmZjE4IGxlZ2FjeS10cnVuaworMjI3NDggMTdiMmFmYmE3YTZmYjA0YTMxMjFlMjQxNmM5OTllNzBlYmQ5NGFjNCBsZWdhY3ktdHJ1bmsKKzIyNzQ5IDU5OTMxZGI1NzJiMjQ0OWE4ODI3MzU0YjBmZDFiYmRjM2I5YWE3YTEgbGVnYWN5LXRydW5rCisyMjc1MCBmZWZlOTUzMTlmMjRiMGQyMjIyMGYwMjNjODQ1YjIyMGNiMzY5NzM2IGxlZ2FjeS10cnVuaworMjI3NTEgODc2MjgwMzBhZDc1ZDY4N2JmZGU0OTY4NWI1OWQ5Nzk4MzVhMGM3NyBsZWdhY3ktdHJ1bmsKKzIyNzUyIDA3NmFiOGNiNDUxZWEwMjM3NjljYzBhNjMxZWY4YzZmZTYxOThhNjkgbGVnYWN5LXRydW5rCisyMjc1MyBkYmJhMmNhN2RjMWU1ZDRkMzZlZGI5OWRhY2Q1ZWFjNDA1NTYwMDRhIGxlZ2FjeS10cnVuaworMjI3NTQgMzM0ZjQxNzg0NzdhYTc3NzIxNjkxYzQ0YzMwMmM3ZGVhNzMyNjc1NCBsZWdhY3ktdHJ1bmsKKzIyNzU1IGNlMzE5YjgyYThlNGRkOWQzMmZjMjY1MjZlZWU3ZDlhN2QwOWJkOGEgbGVnYWN5LXRydW5rCisyMjc1NiA1Y2Y5MjQxZDM1YjA5YTliMGRkZmMzZDkyOWVkZTdjNzNhMmRjYjhmIGxlZ2FjeS10cnVuaworMjI3NTcgY2MwMjM0MWRlZGU0N2UwNThkNWQ2NDc3MTQyZGU3ZmZiNzBhZmE0YSBsZWdhY3ktdHJ1bmsKKzIyNzU4IDI0NDgwYTZkMjdjNGQ0NzkzNWM5NDRjZDEwOWMzNWM3MDBmZWQ3NTMgbGVnYWN5LXRydW5rCisyMjc1OSBiMWFjYmNmN2Q1ODY4NDI2Y2VjZmI0MGY4OTY4ZTUxNjk0NzU1ZTY5IGxlZ2FjeS10cnVuaworMjI3NjAgNTQ2ZWYzMThiYTVkY2Q0YTczYjlkNzdhOGI4NTM2Y2JiNDA5NjBlYiBsZWdhY3ktdHJ1bmsKKzIyNzYxIDRhZWM5Y2I3ZmU1ZDlkNTgzMzIwMDVjYjU1ODA5ZTQ3ZDc1ZWJjNjYgbGVnYWN5LXRydW5rCisyMjc2MiAxYTZjZjMyNTE0MWUwZDk1NWYyMGZmZWUyMjViNDgxYzU5MTE0MzRkIGxlZ2FjeS10cnVuaworMjI3NjMgZmJiMzUyNjhmZWQ0Zjg3OGIxZWNhODIzNGM3OWQwNWE2YTdiZTBjOCBsZWdhY3ktdHJ1bmsKKzIyNzY0IDk5ZTk1M2M2NzA5Y2VlZjQ3MThiM2UyMTcyNzU0NzUzZWM4NjBmN2YgbGVnYWN5LXRydW5rCisyMjc2NSBjMGM1ZmU3OTAyY2YyNzFjMjYxNGM3NDRlYjkyMGVkOWRkMGY3NGVlIGxlZ2FjeS10cnVuaworMjI3NjYgNDEyZDBlYjVkNGJhNTIxNDI2ZDgyNGE0ZTE5Yjk0YTQ3OGRmMzExNCBsZWdhY3ktdHJ1bmsKKzIyNzY3IGEwODQ3YjdhODkwMjhjNzY2MTVmODBiMWIyOWU3YzY2MzI1ZDg2MGUgbGVnYWN5LXRydW5rCisyMjc2OCAzYTkwMjExYTAyOTU4ZmVhZTQ4N2UzMDNlOTVkYWQ5ZTI2YjUxZGIyIGxlZ2FjeS10cnVuaworMjI3NjkgYWIxOTRmMWYwNTNiNjZmZGY4NmNmY2JhZmY4M2NiNzllMWUzYmZiMSBsZWdhY3ktdHJ1bmsKKzIyNzcwIGYzZWM1NDg4OTA4YjNjNDk5ZDg2MDAyMDM3MjJkYmJkYmE4MGYwZDkgbGVnYWN5LXRydW5rCisyMjc3MSA0NDMzZWJhNzM5ZTdmMTZhN2MwZGYwMTIzMDI5ZjlkNTVjYTQ4MDNmIGxlZ2FjeS10cnVuaworMjI3NzIgZWM1MWUxMGE2MjI5YzZlYzE2Mjk3ZGUyZjVlZDUxODJlNTgzMjJmOSBsZWdhY3ktdHJ1bmsKKzIyNzczIDk2YTBiYjNhODUyMWExYjZiNTk4MjM3ZTQ4N2QwOTcwNmFlZDRhODEgbGVnYWN5LXRydW5rCisyMjc3NCBkZDhkNjE1M2E4YzY1ZGI4ZTFjNDc1YzU0NDk4OGZkODFjNzFjMWZhIGxlZ2FjeS10cnVuaworMjI3NzUgZWRlN2ZjYjhiMGIyMzc3MWY3MTgwZmE4Y2QzOGI5NzZiZGFlZjI5NyBsZWdhY3ktdHJ1bmsKKzIyNzc2IGRlYWNkNjAyNzJiZTMyNDdiZjA4NmQ3ZDA1ZjJiMjdkYmM1ZmY0ZDAgbGVnYWN5LXRydW5rCisyMjc3NyAyMDJkOGRkNjVlYjViMmZmNGY3MGM5N2YzMGU0YTQ3N2E5NjU0N2Q3IGxlZ2FjeS10cnVuaworMjI3NzggM2U3ODk3ODIyNDU5N2Y0MTYxMzA5ODYxNTVmNWFhMjgzZWRkZTMxOSBsZWdhY3ktdHJ1bmsKKzIyNzc5IGRlMTAxNTFhN2Y2M2VkYmQxOWY0ODVhYTVhZjBmM2E0NDUzM2IxM2QgbGVnYWN5LXRydW5rCisyMjc4MCA5NzUzNjA4ZTJkNTdhM2QzYzgwNzJjMWM0MzA1YmEzYWNkY2RlMTk1IGxlZ2FjeS10cnVuaworMjI3ODEgY2Y5ZTM0MTg4NzYzYzAyMTQ1MjNjNzkwODlmYmUyMzM4MzIwZTA1ZCBsZWdhY3ktdHJ1bmsKKzIyNzgyIDQ3ZmE0YWMwNDJkN2YwZTMyZTgxMjk2Y2FlNjFkM2RkYTg0ZTdmOWMgbGVnYWN5LXRydW5rCisyMjc4MyBiNGEzZmMxNDc5Mjk0YjQzOTNjNDFhNWUxNWFiNTgxNzc5NDIxNTc3IGxlZ2FjeS10cnVuaworMjI3ODQgNzJkOWI3YzBkMjExZGI3Njk1YjM3N2I3YjczMjYzNjE4ODY2MWU4YSBsZWdhY3ktdHJ1bmsKKzIyNzg1IGUxNDFiMzkyYjYxZGQyYjQzZTU2NTdmN2ZkMmI4MTkxOTg0OTk3NjIgbGVnYWN5LXRydW5rCisyMjc4NiAzZTEwYzA4NzQwMWNmY2NlYjVkMGUwMGNlZjEwMDcyMDUzZDNmMTQ2IGxlZ2FjeS10cnVuaworMjI3ODcgMmQyNTE2ZTM3Mjk5MzEyY2E3NDY0Y2ZkOTVjMGY5YTI3ZGYwYjEzYSBsZWdhY3ktdHJ1bmsKKzIyNzg4IDFjZDg3NjQyMzU5Y2E1OTUyOWY4OTM1ZjE5NGIzOWJkYjgyYWQ5MjQgbGVnYWN5LXRydW5rCisyMjc4OSBkNzExZTgyZWNlMjMzMmYxMDE5OTVlZjdjMDg3OTE5YTgyNDQ0NjhiIGxlZ2FjeS10cnVuaworMjI3OTAgODU2MDVjOTM2NTJiNWE0ZTAzYWIyMGVmMDRjZGUyNTNlZDBmOGU2MSBsZWdhY3ktdHJ1bmsKKzIyNzkxIDQ3N2I2ZGRkNDI0MjVmNjJkMDgzNmU2NjdkNDQ2YjkxMTczZTA5MWYgbGVnYWN5LXRydW5rCisyMjc5MiA3ZTYyOGY2MDI0NWU5YjJkM2IwZWZkYzQ3NjAyMmZmMjcwYjk0M2Q4IGxlZ2FjeS10cnVuaworMjI3OTMgZGE1ZWViYmZlNDFkYTVmNzU4YmZkNGQzZWVmY2Q5Mzg1MDI2NTEzZiBsZWdhY3ktdHJ1bmsKKzIyNzk0IDExYTc1OGM1NjAyNzkwZjY5MzRhMzAyN2ZhMGZhNTUzNDIxNTUwZTkgbGVnYWN5LXRydW5rCisyMjc5NSAxOWQyNzFmMjk3ZGM3NThjZTM3ZTc1MDY2ZWYwOTJkNWUxNjI4N2NkIGxlZ2FjeS10cnVuaworMjI3OTYgMDFhNjkwMWNkMzA1ZTI5ZWFjNzJlNTJlMmE3NzYxYWEzZTk3YmRkOSBsZWdhY3ktdHJ1bmsKKzIyNzk3IDZjMzBkMjBkMjdmMmNjYThhYWE1ZTkyNWJhOGU1MjE5Yzk2NzJhOGIgbGVnYWN5LXRydW5rCisyMjc5OCA3YjM5ZDkxNDI0YTJhZjBjOWYxMmY2NTA3MGY4MWUzODllYmNmODQ0IGxlZ2FjeS10cnVuaworMjI3OTkgZGRjNGMyZjVlZmJjOTU5OGM1YTgxZDg3ZWYwMmI2MTJlYjY1YTNjMSBsZWdhY3ktdHJ1bmsKKzIyODAwIGVhNzZkZWE2NDQwZjk3ODU3NjliYzQ0M2UxM2E3Mjg3MmZkNTc5ODQgbGVnYWN5LXRydW5rCisyMjgwMSAzN2UwYjBmY2NhNTQwZjY3YjM4MTY5ZTVhZDU0ZWFhNzg5ZWU1M2JhIGxlZ2FjeS10cnVuaworMjI4MDIgMmMyY2MzMWJkZjE1M2FjNjcwNWMyY2U0NDU5YzJhYzM1MTA5ZWZlZSBsZWdhY3ktdHJ1bmsKKzIyODAzIDAyMjUxYjA0OGJiYmYxOTJjYjA2NjA3ZTQ0MDRkODdlNzY4MDg1MDEgbGVnYWN5LXRydW5rCisyMjgwNCAxODQ5ZjQ5YWE2Zjg2NjVmYjk4ZTdmMTAyODhmZGM0NDAyMmFjMWNiIGxlZ2FjeS10cnVuaworMjI4MDUgMDczODhhNmE1NTI2Yjk1YTQ0MjNmYTAzZGQ3MzM0OTQ0NjdjYjk0MCBsZWdhY3ktdHJ1bmsKKzIyODA2IDgxMTY4ZWY0Y2I2NThiZjVjZmY0NzliMTM0ZTBiNjlhZTllNDkwZDkgbGVnYWN5LXRydW5rCisyMjgwNyA0OWJiNDFhNjlkZmMzOGViYzZjNGE3ODA5MDMwMDA5M2NkNzMyZTNiIGxlZ2FjeS10cnVuaworMjI4MDggZDllY2IyMTcwMzU0ZjU2MmRmYTZiY2JkZThlOTIzNjZlYjFmMmZhOSBsZWdhY3ktdHJ1bmsKKzIyODA5IDM4MTE1ODBmZGMzNzNjY2Q3MmQ4ZWNmYzk0ZjQ0ZWY1MTdlNjkyODQgbGVnYWN5LXRydW5rCisyMjgxMCAzZmEyOWNmNzMxOWQ0ODQ1MDU2OGRkOWY1YzI5YmYzMDFiNjk4YjY1IGxlZ2FjeS10cnVuaworMjI4MTEgODU2ZTNmYTE0Y2JhNjhmZjg0M2QwNmQ5ODM5Y2VhMDI5YmQ2N2UzOCBsZWdhY3ktdHJ1bmsKKzIyODEyIGI5OGU0MzQ2MjU3YmZiYzM3YzE4ZjgzMTA5YjBhOWM3Njc1MDZkOTggbGVnYWN5LXRydW5rCisyMjgxMyBiMGY1Mjc4YTJhYjQzN2YyZDExNjc5ZmU1MTg0YmMzMjU2N2YxYjYxIGxlZ2FjeS10cnVuaworMjI4MTQgY2VhN2ZlYTE3NDJiNDAzODQxNjM1NGIwMmYzNGI3MTYxMmYxOTY3MiBsZWdhY3ktdHJ1bmsKKzIyODE1IDlkYTY4YzAzNzlhYmI5YmJlYjViMWZkYjkxYWU1MmQwMTc0MTUzM2IgbGVnYWN5LXRydW5rCisyMjgxNiBjNDg1ZDc3Mzc2ZmE0MDc1MDYwOGYzNTNjNTc3ZjM0NTgyZWFlNzEzIGxlZ2FjeS10cnVuaworMjI4MTcgNDc2ZWI3ZGNlZWVjMjQ5N2Q0YjE3ZjJiMGUwYjcyNjI0YzM4YjExMCBsZWdhY3ktdHJ1bmsKKzIyODE4IDcyNTc2MmNhMjc3NDlhZDZlYTk3YzM3NTlhODQ5MmFkOTdhZjFkZmQgbGVnYWN5LXRydW5rCisyMjgxOSAyNjU4OGQ3MDM1MzA4ZjEwYzM5NTQwZjQzMjhjNmE4ZDU2MWU1NjZkIGxlZ2FjeS10cnVuaworMjI4MjAgN2VkYzJmY2UxZjg4MTU3NDgyOGVkOGRlYWFmZDRiZDRmY2RjOWIyYyBsZWdhY3ktdHJ1bmsKKzIyODIxIGI2NzMwOTQwN2NmYzg4NTRjMTM0MGYwMGMyNDU4ZDE2ZjdjZmZmY2YgbGVnYWN5LXRydW5rCisyMjgyMiBmYmQ0OWQxNzE3YzRjMjgzOGFkY2VhYTM1YWZmY2ZjOWZhZTYxYWJmIGxlZ2FjeS10cnVuaworMjI4MjMgZjZmOTM0MTliZmI2ODAyM2NjMjRiODBmZWUwZjBmZTM0MDc3Mzg4ZiBsZWdhY3ktdHJ1bmsKKzIyODI0IDQzZGRjNDZjNWE5OTY3OGM3OTAyZTI2ZTgzZGRhNTI2OTYzNzBjZWQgbGVnYWN5LXRydW5rCisyMjgyNSBkYzI3ODM5YzBiODBmYWIxZWYwYTMwNzhhZmY3MmU1NDM4MGQ4ODQ5IGxlZ2FjeS10cnVuaworMjI4MjYgZmQ0OGE1NWFjMzY0ZmUzMDdmYWMyNmE3ODZiYTg0MTNiNDFiZGQ5NyBsZWdhY3ktdHJ1bmsKKzIyODI3IDEzYTkzYTVkY2IxZGU2N2U3MmI2MmI0MmFiY2ZmNGRkODA5YWJkODAgbGVnYWN5LXRydW5rCisyMjgyOCA0NGE2MmUzYjcwNmY5MjdmMmFiMzAxNmI0OWIyNGVlZDJkYzdmYjY4IGxlZ2FjeS10cnVuaworMjI4MjkgYzBjZjFhMjRmYzEzZGQ5ZDkzMTQ0N2UzMjJiZjI2ZmQ1YzJiOGIzNiBsZWdhY3ktdHJ1bmsKKzIyODMwIGM0M2Q3YThmMDBhNDU5NWFhMDAyZmU2MmNlNGViNmQzNGJhZTY5MDQgbGVnYWN5LXRydW5rCisyMjgzMSBjNTlmMDZmMzhhNDY4Zjk4MDNlMGU3YTFkZGUzNjQ5YjczZDE2ODI0IGxlZ2FjeS10cnVuaworMjI4MzIgNTAwOWZhNmRkZmViMzIyODY3NWI1NjFiNTU4N2YxNzlhMWI1MDJlOCBsZWdhY3ktdHJ1bmsKKzIyODMzIDJmZTA4OTE4ZmFjNjY3YzlmMGUwYTExZjZkN2M3MjZmMTRkOGQ3MWYgbGVnYWN5LXRydW5rCisyMjgzNCA4NDQ1NTM0NzNmYTQ2NjhmMDM0YTlkODEyZGNhNGUyOTI3NWNlYzAyIGxlZ2FjeS10cnVuaworMjI4MzUgYmYyYzc3ODQwZjFjYzZmZmIwODcyYTE5NTg4YTY3MTYyZjE3NGE5MSBsZWdhY3ktdHJ1bmsKKzIyODM2IDQ3ZTBjMGZkZDRjOGEwMDc5N2JjN2E3ZmU1ZmUyNWM5YTIyMmJkMDYgbGVnYWN5LXRydW5rCisyMjgzNyA4NTc2NWU2MWRlYjBjMzFkODNkNDBkZDU5MDIyYzBhMjI3YTcwNjdlIGxlZ2FjeS10cnVuaworMjI4MzggYTgwYjRiMDA2ZWI3Y2YzM2Y4MzgyYjIxYjNiMzY5MTUxYjdiMTA2MCBsZWdhY3ktdHJ1bmsKKzIyODM5IGM0ODY1NDk1OWRjNDZmZDAxNDllOTEzYmRiZTBlYzBiMjFiZGQ1MTggbGVnYWN5LXRydW5rCisyMjg0MCBkYjM2ZTM5NmYwNDMxNzIyYWE2YjAwMzJhZTllMjcwNjYzNmU5ZDc5IGxlZ2FjeS10cnVuaworMjI4NDEgMWJlMThlZjg2OWE0Nzg4OTM3M2RhMzIxOTliNDRjZmM3OTcxNzU4YSBsZWdhY3ktdHJ1bmsKKzIyODQyIGJiZGY4NmYzNThlOTU1ODg4YjQwNGQ3ZDUxZDU0MGM3OTE5ZTBlNGIgbGVnYWN5LXRydW5rCisyMjg0MyAwNjYzMTU0NDc5NDE2YjA5N2I0ZmQ1MmFkZDI2YWQyZGI4MzA2ZTI5IGxlZ2FjeS10cnVuaworMjI4NDQgMDBkZTcxOWFlODMxOTc3OTRiNTVmYjljNWFmMDI0OGQxNTNiYzJlYyBsZWdhY3ktdHJ1bmsKKzIyODQ1IDFjZWNlNzQzYTcwODQzYWMzMzFmYmJiNmRhZGM1ZmVkZDdlMmM4M2YgbGVnYWN5LXRydW5rCisyMjg0NiAwNGZkMzg2OWM2YmJlYjIwNWQxMTkxZDcxMWRkOTZjNzViZjJlMmMxIGxlZ2FjeS10cnVuaworMjI4NDcgOTA0YjJmOTgxMWEyOTEyZWRkNWFmNTU2YTE5MTM1NTQ0Y2QwZGU4ZiBsZWdhY3ktdHJ1bmsKKzIyODQ4IDVkOTczNDQ4ZTY5MWRmMzM4NTRlYjQ2Y2YyMWU3YWUyMWVhNWUxY2YgbGVnYWN5LXRydW5rCisyMjg0OSA0YWM5YTQ0YzdlNDc4YzlmOWI4ZjFmYWE5NjJhOTAzNzBmM2E5MTcxIGxlZ2FjeS10cnVuaworMjI4NTAgMTBiZjRiZWQ1MDk2Zjg0YjE3MzE0ZGUwNTBhN2FlOTY2Yjk1Yzk2NiBsZWdhY3ktdHJ1bmsKKzIyODUxIDZkNWFjM2M0MzQxNjM0ZjYxNDZkMmFiOWQyMmI3ZmM3MTM2NTcyM2YgbGVnYWN5LXRydW5rCisyMjg1MiA0M2ZlOTM3N2UyY2Y2MDM2NTZkNTE0YjM5YzJiMjg5YzZjZTFmODE5IGxlZ2FjeS10cnVuaworMjI4NTMgNmJlYmE4YjZmNjBhZGQ5NmIwYTZlZDg5NTNkMGEwM2E4NDYxZTllYSBsZWdhY3ktdHJ1bmsKKzIyODU0IGI0ZTkxODYxMmRjOTc1MGJlZTM4ZDFhMTc5NzZhNzY3NDQxZTcyMmIgbGVnYWN5LXRydW5rCisyMjg1NSBjNzczZGFhNDQ4NDA2ZThjOTRkZDlkYjRhZjY2ZGZmMzI5ZjMyODFhIGxlZ2FjeS10cnVuaworMjI4NTYgOGYwMzU4MDBhMzczZDc2Yzk5NjZmZDcyZmYwNzZjM2M2OGJmYzJjZCBsZWdhY3ktdHJ1bmsKKzIyODU3IGMzOTZhZmVmMWFhOTIzMjlhNDFlNzA4MzFkNGU5ZDIzMzVlMjQ1MGUgbGVnYWN5LXRydW5rCisyMjg1OCBmN2NmODk2MWM2Njc4ZTQwZTNkNTRlMzBkNGY2YzY5MjcxNmI3NjU0IGxlZ2FjeS10cnVuaworMjI4NTkgZjRhODk5ZTdlYzkzYWYwNTY4YjZiMjYyN2E3ZTZhNzc2Y2UxNTgyOCBsZWdhY3ktdHJ1bmsKKzIyODYwIDI1M2FhYTFlZGNiZDE4MDUzYjJhYjE0Y2IyYzBiOGQ2OGZjYTlkZGUgbGVnYWN5LXRydW5rCisyMjg2MSAzMzdiNTM2NzljNzM0ODlkOTUyOGUxMTRhMTZkNjg4ZTYyNDgzMmVlIGxlZ2FjeS10cnVuaworMjI4NjIgYjczMDEwN2RiZDEzNzUyYTBmYzk3NzMwMTUwZmQwMDUwOGMyOTgxMiBsZWdhY3ktdHJ1bmsKKzIyODYzIGE4ODVkODc2MWJkMjkwNTAwZjRhYWZkNDdkN2FkOWQ4OGI1NDM4OWMgbGVnYWN5LXRydW5rCisyMjg2NCA1NjYzYjg4M2VhNWQ5OTliNjE4NDc2ZThiODBiN2EwM2NhODNlMTk3IGxlZ2FjeS10cnVuaworMjI4NjUgYjcwNmMwMjdjM2MwY2ExNDI1ZDQ5MTYyMTA5M2NkMzgzZDBiMGQyOSBsZWdhY3ktdHJ1bmsKKzIyODY2IDBiZWM2OTk3ODNkMDA5YmRjMmEzNGY4MmI2NjFhZjU1NTlmZDg3NWEgbGVnYWN5LXRydW5rCisyMjg2NyAxYWMxMTBlOTA1YzJmMjVlNGE0OTVhOWNiYTAwYjBiNDAzYmI2MmQ3IGxlZ2FjeS10cnVuaworMjI4NjggMzhhNmRkZmY4NjZmMTc4NmU1NjQ0ZTIwNTUzOGMwNGJjMGYwMzZhZSBsZWdhY3ktdHJ1bmsKKzIyODY5IDBmNTE0NjVmOWYzMzQwYzY5ZDEyNjQzMzUxMzU1NDI2MDdlMGY5MmUgbGVnYWN5LXRydW5rCisyMjg3MCBkMTA2NTNlNzFjZmUwNDIyMDVjMzY4MGJiMjg3YmNlZGFkMGJkNjMyIGxlZ2FjeS10cnVuaworMjI4NzEgZjA5YmU2NDFjN2EzYTFiMTkyZGRkMmFjZTdjZjAxYmM2ZmY5NTg4NiBsZWdhY3ktdHJ1bmsKKzIyODcyIDU0NTA4MGUzMDYyN2NkY2IwZWNlYzA0MDEzODAyMjgyZjI5MWI3OGIgbGVnYWN5LXRydW5rCisyMjg3MyBlZjJjZjk5NDNhY2RhN2VlZDJjNDJjN2QwYmM3OTI3MDUxZjI0ODc3IGxlZ2FjeS10cnVuaworMjI4NzQgNDNjZDBiNGU3MjYxZmQ4MTBmOGYzYjk5MWQzNmUyNGEwODNmMjdjNiBsZWdhY3ktdHJ1bmsKKzIyODc1IGFlMDU2ZjExNDk3NDk2NTUzZTg4OTdkM2JiMjI5OGZkNDAyMjMwMDAgbGVnYWN5LXRydW5rCisyMjg3NiBhZDBjY2U0YTVkZTFmNzhhMjA5M2ZhYmNjYmYzZTE5MzZmYWZhMzZkIGxlZ2FjeS10cnVuaworMjI4NzcgMjBmYjc1OTFmODg1NTljMGE2OTY1NTIwMjA0OTI2MjQ5ZWRlNWFjMSBsZWdhY3ktdHJ1bmsKKzIyODc4IGMwYTQ0ODI5YmNkNWZmMjYxMTVmMWI5NWE3NzdjYjQwMWQ3ZTJmMzAgbGVnYWN5LXRydW5rCisyMjg3OSBjZjE5MTllYTk0YzI4YTJmMWQzZDk4NDBjODZiNjQ3Yzg3M2MxMjY4IGxlZ2FjeS10cnVuaworMjI4ODAgZjVjZGU3ZWViNmQ3N2RhNjlmYmY1ODczYzU2MDAzY2NiODBiNTAzOSBsZWdhY3ktdHJ1bmsKKzIyODgxIDcxZDQ1ZjMxNGQ5MGFlMzUyZWYxNmUzODI5YjMzYThkMzA5NTRhMjEgbGVnYWN5LXRydW5rCisyMjg4MiAwOGFiZWUyYTM5OGVmYTU0ZWY0NmE5OGQ0NjE5NTU5NjU1ZDBjMTQ0IGxlZ2FjeS10cnVuaworMjI4ODMgNDBmZWFlZGI3ODY3ZTM0Yzc3OGY2ZjdiY2JmMGQ4YmYyMmJkYzRiZCBsZWdhY3ktdHJ1bmsKKzIyODg0IDYwZjI5MGE3ZWFlOGMxNDg5YjNmN2Q4MjZhOTY4MTJlMmNlYTVjOTYgbGVnYWN5LXRydW5rCisyMjg4NSBmNGFmMjdjYjI2MzI0MGEwYTIxZTJlMjc0NzVlZDg0N2UxY2FjYzIzIGxlZ2FjeS10cnVuaworMjI4ODYgYzk2NDdmYTc4ZjA1MmYzZWYwYjUzYmFlZWYzNTAxZjA1NjEwMTIzNiBsZWdhY3ktdHJ1bmsKKzIyODg3IGUwM2NlMmQ2NTU4NTU3YTI5NDJkYWUyNjI4MDg2OWNlMmRlMWRjOWMgbGVnYWN5LXRydW5rCisyMjg4OCBiMWIwNDc5YzkxMDZkNWVkNzNhZmZmYzUxYmU2YTE1OTRjMmNjOWI2IGxlZ2FjeS10cnVuaworMjI4ODkgOTJkZjY4NDUxMjBkNjQ2MTgzNzllZmM5ZDY3NzU0ZGZhOGQ1NDRhMSBsZWdhY3ktdHJ1bmsKKzIyODkwIGQ1NWI3NWFjMmZiNDg4MzE2NWY0ODUwMDE5NzVmY2Y1OGVkYTRkZGQgbGVnYWN5LXRydW5rCisyMjg5MSA3OTc0MDlkOTcwMjI0NWEzOWIzN2M0MTVhODhhZGVmYzY3NTYwYjExIGxlZ2FjeS10cnVuaworMjI4OTIgMDFkYWU4YTAzZjg2Mzc2MjA2Yzg0ZmQ2YmVhZGE2ZmFmMTEzNzhkMiBsZWdhY3ktdHJ1bmsKKzIyODkzIGEzYzA0NWZhNDlmNTBjYTk1N2UzODU5YWIwNzc1ZDliMDc4ZDljYzIgbGVnYWN5LXRydW5rCisyMjg5NCBhNGZlZWZjZTBjZTg0OTY5YWM0OTU3NGYxZTcyMTA3MjMzZmY2MWVhIGxlZ2FjeS10cnVuaworMjI4OTUgZDRiM2I4ZTIzNTQ0YjhmNGRlZjgyYjc2YTliODkwYzRmNDZhMDhkYyBsZWdhY3ktdHJ1bmsKKzIyODk2IGIzOWU1NmRmZTM1ZDJiOTk0NGU0MjFmZjFkZjY4ZThiMTJjZWI2MjEgbGVnYWN5LXRydW5rCisyMjg5NyBkZTBmMDM1MjA1ZWY5YTM0N2MzYjQ2NzZjODg1NzhkZTJjYWM1OTM4IGxlZ2FjeS10cnVuaworMjI4OTggNzllMjMyN2U1MWQ2MTM2ZDhkMjJmNmVmMzVkZWZhMjhjOTVjZmUwYSBsZWdhY3ktdHJ1bmsKKzIyODk5IDZiODFmOWU5ZDg2MDBhMjg0ZmVhM2MyZTgzOGUxZWVkM2YwM2JhZDggbGVnYWN5LXRydW5rCisyMjkwMCA5MmQwZmFjOGExNjkzNGY1OWUyMjI1ODdjNTFiMzMyNmU2OGMyMTRlIGxlZ2FjeS10cnVuaworMjI5MDEgNTc1ZjUwY2VjZWJhMTgzMWE5ODkyMGY0MjM3ZmM4MDFkMjQ1NDlkZCBsZWdhY3ktdHJ1bmsKKzIyOTAyIDkzNzk2NTUxNmI1NDcyZjI5ZjRmNDU2OGI5ODJkOWJkMGU0NTU1ODggbGVnYWN5LXRydW5rCisyMjkwMyAyZmE2MTVkZmM0NjRjODBlMjYzNDBhNjRiYTg4YjYwZDZkYzFkZDM4IGxlZ2FjeS10cnVuaworMjI5MDQgODBiZWJjNTM4OWZkMGQxOGJmNTcxNWMxMWJjNGI2NDczYTAyOTg2ZCBsZWdhY3ktdHJ1bmsKKzIyOTA1IGI0ZWRjZTlkNmU5OTBlYzRlOTE1NjNmZGE2ZjYxOGE5ZDU3NjM5NmYgbGVnYWN5LXRydW5rCisyMjkwNiA4NGJlMGNhYjYzYTg4NGI0NmIwYTI3NmZlN2NhZGRmMjg1NWZkZmVlIGxlZ2FjeS10cnVuaworMjI5MDcgNzgwZTc0MTU4NWUxMGUyNmM1NmQxMWY4YmZjMWJiMzY3YWY4NjgzMSBsZWdhY3ktdHJ1bmsKKzIyOTA4IDhmOGU5NzExMzJiODY3Mzg0NjU0MjcxNDMwYTQ3MjY0ZWUyOWQxOTEgbGVnYWN5LXRydW5rCisyMjkwOSBlYzdhMmE2Y2RiZTljNDg2YTdhNjg5MTRiODMwZjY1YjBmMDAzNTdhIGxlZ2FjeS10cnVuaworMjI5MTAgMDhjM2M5ZWRkOTliYjBiYTFlNDgwODFhYmM0MGZlOGMwNzQ3ZjJhZiBsZWdhY3ktdHJ1bmsKKzIyOTExIGNmNjVlYmY4NzU2MDkxMzFlOGM5M2U2MzJjNjVkMTM4YTg1ZDU1ZDkgbGVnYWN5LXRydW5rCisyMjkxMiA4ZDM1OGMyNGRjZmJiMTA0M2E5NzBhOGZhMTFiN2RkYzE2ZWZiOTgzIGxlZ2FjeS10cnVuaworMjI5MTMgY2M2MDRiNzEwMzZjNGZmOGMyZDIxM2I0OGViY2M4NjI3NTkwOWM3OCBsZWdhY3ktdHJ1bmsKKzIyOTE0IDg3ZThmYzBhOTg2MmI1NTM5YzdmMmE2ZjI3YjE2MTNjNGY0OTY3NzkgbGVnYWN5LXRydW5rCisyMjkxNSA3OGNmYjk5M2YyNzQxOTA2ZDc0MTg3ZjBmMzY1Mjg0ZDkxN2M2OTJkIGxlZ2FjeS10cnVuaworMjI5MTYgN2RmMzAwZDI4NGM2YWEwMjNmM2IzZmYyNTA4MzA4NWNlMDY4OGFmNiBsZWdhY3ktdHJ1bmsKKzIyOTE3IDM1ODQ1NTBhNjIyYWQ1OWE2OTJlYWU4MjkyYWUxOWNiYmM3ZmQ0MGEgbGVnYWN5LXRydW5rCisyMjkxOCBiMzI3MTI5N2I5ODRlYTQ5YjY5MzYxNGRlYWNiODRiNTc3OGNiYmM3IGxlZ2FjeS10cnVuaworMjI5MTkgNzE1MjQ0MTA4ZmFhMGY3NzE4YmU5YjU4NjBmY2IyZGVmMmI1YzY5ZSBsZWdhY3ktdHJ1bmsKKzIyOTIwIDY4NWRjYWU1YzEyMzcwMjk4MzZiOWViMzllMTM2NzQ1N2EyMDkyODkgbGVnYWN5LXRydW5rCisyMjkyMSBjNzY4ZDMxOTFkZjFjMWViZWE1YjlkMTg3NmFmZjE2OGQxYmU2ZmY2IGxlZ2FjeS10cnVuaworMjI5MjIgOTE1MzM2NzVkNmNiZjBhZDVmMjc1MTc1MWQxNTcwMDU1NDVlNTQ2NyBsZWdhY3ktdHJ1bmsKKzIyOTIzIDgyZGI5YTkwMDZhYzVlZTNjZWJmMzczYWFhZmE1ZDY0YWU3OGRkMmMgbGVnYWN5LXRydW5rCisyMjkyNCA2OTU4Nzg0YjFjZWYwMTVjZGRmZTIzMmI4ODU2YTg4ZmI5OTVjNDRhIGxlZ2FjeS10cnVuaworMjI5MjUgM2Y4NGIyMDAwZjYyYjQxNDhmZjdhNGZmNjIyNzQwNjgwMTNhMTRjNyBsZWdhY3ktdHJ1bmsKKzIyOTI2IDdkZTRlNmI4ZDE5OWMwZTRhNDUyZGNlZGQxODNkZGE5MGQ3MzM0MGQgbGVnYWN5LXRydW5rCisyMjkyNyA4ZGZiMTNhNGUxNzVjMGYzNTE1NjEzNmRhMWQzYzU4NGUwZGU1NzcwIGxlZ2FjeS10cnVuaworMjI5MjggOGNiYzc0ZjU1ODZiNTA3NjdkMzBkNjJlZjNlZDZlNzI1ZWIxOTg1ZiBsZWdhY3ktdHJ1bmsKKzIyOTI5IDcxNGFlZWNjMjMxNjJmNzQ3YmFkMWFmZjdlMmVlZGNjOWY2M2RlZmQgbGVnYWN5LXRydW5rCisyMjkzMCA2ZWJjMjYzMzNlNmQ3Y2MxZWFlZTM4YWU1NmRhNGE5NjU2ZjZmNDI1IGxlZ2FjeS10cnVuaworMjI5MzEgNzQ5ZTQ5Yzk0N2MwNzFiZTkwMzBhOGQ4NTBiZmQwMzhjZTMwNTlmZCBsZWdhY3ktdHJ1bmsKKzIyOTMyIDM3MzFhZDFkOTAzMzNlZDExYjM4Mzg3MzU4YjM3N2U3ZjFjZTAyZWQgbGVnYWN5LXRydW5rCisyMjkzMyAzMWE2NmMwYzdkMzAxZTZhM2FlMjU3YWYxMDc4NzU4ZDVkNDg3OWZiIGxlZ2FjeS10cnVuaworMjI5MzQgY2ZjNWU1MTYwY2Y1ZGY4MjY1MDIxYjczOTI0MjY1ZGZiYjc0OTE0YSBsZWdhY3ktdHJ1bmsKKzIyOTM1IDZiODI4NTNkZjJlZGI3ODY3NzdmYjJkY2YzNWY5N2I2ZmQ0MDU0OTQgbGVnYWN5LXRydW5rCisyMjkzNiA5MzNlODEyOTc0YzNlYTkwZDkzZTJlMDIwNDU3NjY3MTY0Y2MwYzEwIGxlZ2FjeS10cnVuaworMjI5MzcgMDQyMThlODViMTU2ZmQ2NThmNDcwMGMwMTAwNDMwMGY0YjcwZWRjMCBsZWdhY3ktdHJ1bmsKKzIyOTM4IDYxN2Y1ZTcyYjBlYzgzMzJkOTJmZDk1YTE2NGMyNDMxYTIyOGJiODYgbGVnYWN5LXRydW5rCisyMjkzOSAzNzE2YjExNmZiMzEzMjI1NWI0NTc0Y2IxNTkwOWZlYWUzMWQ0ZDFlIGxlZ2FjeS10cnVuaworMjI5NDAgOTgzMGQwMGI4ODdkZmE0MjZkMGQ5OTIwNmJmZGE0ODhlN2RiNDI3OSBsZWdhY3ktdHJ1bmsKKzIyOTQxIDg0M2RhOTc5NTM4MTMwN2YwMTUyNDdiMWZjMTlmY2JlOWQ3MzQ2NDkgbGVnYWN5LXRydW5rCisyMjk0MiBiYzZiZDM1ZjU5OThkZjQ5ZjVkYzRmMjIxMDE5NDE2YzZiZTc3M2ZiIGxlZ2FjeS10cnVuaworMjI5NDMgMzcyZDhjMWQyYjY0ZTI4OGQ2MTAyMDcwY2U2MWU4ZjU1NjFkMWRiNCBsZWdhY3ktdHJ1bmsKKzIyOTQ0IDJhNGUzYzkyODViNTRmYmU4NmJjODdjMTJiYTFlNjc0MjE5MDlkNmQgbGVnYWN5LXRydW5rCisyMjk0NSBmYmFmNGU1NTI2M2Y5MTAzOTNmOWY4N2EzZjBkY2U4MzE0OTJkYmYzIGxlZ2FjeS10cnVuaworMjI5NDYgNDU2NTczNzZiOWI4Y2M5MzQ2MzViZmY2OGYyM2NhNjNhMmVmNzczNiBsZWdhY3ktdHJ1bmsKKzIyOTQ3IGQ2ZTFiMTA5MTYwOTcxYjM3MjQ4YWMxZGM2MmUzYzA3MzQ2M2UyYzggbGVnYWN5LXRydW5rCisyMjk0OCBlMjAyYTc1ZDg4MWUxNDc5OTViYjQzNjU1NmY2ZTc4NjlkNmVkYTY5IGxlZ2FjeS10cnVuaworMjI5NDkgMTkwMWY4NzViN2QzZDFkOGQ0ZjMwMmQxMjc5OGI2MmIxZGI4M2ZiYSBsZWdhY3ktdHJ1bmsKKzIyOTUwIGI3ZjZmYmMwODdhNzdlYWE3MDc2NzFiMjZiYTBlZTEzM2JiZTg0M2EgbGVnYWN5LXRydW5rCisyMjk1MSA1MDA1NTQ1YjY0ODdmMDZhN2VkNjlhZmZiM2QzMjA0NTFhZjI0NDc5IGxlZ2FjeS10cnVuaworMjI5NTIgMTFiMzczYjAwZjJhZmUxYWVmMDU3ZThjZjIzMGY4MDk0NzRkOWY3YSBsZWdhY3ktdHJ1bmsKKzIyOTUzIDZlYWZjNGE2MzU5YTgwYThlZTE1NDFlMDc4NjVhZTQ2OGI4MTExZTEgbGVnYWN5LXRydW5rCisyMjk1NCAwYjBjODQwNzhmOTE2MGRhMjYxNWVkODBmNzBjM2I0NzljOTBjNDRhIGxlZ2FjeS10cnVuaworMjI5NTUgMWM4YTk1MGQ2OTcwMGU3NWIxNDQzZTgxOGI0NzhlZjAxMTBkMjIwOSBsZWdhY3ktdHJ1bmsKKzIyOTU2IGJkMjUyYjE4MzJhMmRiYTE4OTA4MDJlYTBjMzYxNmM1NjVkMDA5MDIgbGVnYWN5LXRydW5rCisyMjk1NyBiNDUyMTQzNmU4ZjhmOTlkMjgxNzI3YTM3NzY3ODNhNTdkYmE1M2ZiIGxlZ2FjeS10cnVuaworMjI5NTggOTQzM2RkM2MxOTdlZjRiMWY2YTNkNWE1OTkyYjY0MWI1MDk2MDVmNSBsZWdhY3ktdHJ1bmsKKzIyOTU5IDQ1MGU1YTBlOTI2Yjk0MGRiODkzOWExNDcyYjg3NTc4NGM3MjQwNmIgbGVnYWN5LXRydW5rCisyMjk2MCAwZDk2MTQ1YzQ0Yjg5ZjZhMGZkM2I4MWQ3Mjg2MzVlNjE5MmI2MjBjIGxlZ2FjeS10cnVuaworMjI5NjEgZmIyZDgzYWFmZjY4NjQ1ZmU3ZjZmMmExMGY2YzE4NTRiYjE5NjY1MCBsZWdhY3ktdHJ1bmsKKzIyOTYyIDAxZGUwYTcwMzA2OThjNzRjMzI4ZTUxNGY1M2JmMmJhMmU2NTY2NjYgbGVnYWN5LXRydW5rCisyMjk2MyBkMTk2NDhjYTg3NDljY2MxYTQyNDliMTQ1NzUyNTlkYjI1YjhiNWVjIGxlZ2FjeS10cnVuaworMjI5NjQgY2RmZGQ1MzU5NDExYTA5NzQyOTBiNDA0Mjk3N2I3MmVlZjQ3YTA4ZSBsZWdhY3ktdHJ1bmsKKzIyOTY1IGE2ODRiNGMxMDEyODQzZTkzMWJlMzAyMjdhNjRhYjQ1Nzk3MTM1NTkgbGVnYWN5LXRydW5rCisyMjk2NiA3NzY2ZWE3MjQzMjA5NGY3OWYzYWJmMzQ5MzhkOTYyOGY0NDI0ZjU1IGxlZ2FjeS10cnVuaworMjI5NjcgMjFkMmI5ZWVkYzJkZTE3OTk2MDQzYzQ1OWVmNWEyMDQ2ZWEzMjY2MCBsZWdhY3ktdHJ1bmsKKzIyOTY4IDJhOWJiZGJlZmJiMWM5NGYxZDJmZTIwOTYzMTZlNzk3MTY2MTJjNjYgbGVnYWN5LXRydW5rCisyMjk2OSBiYTlhYWJjZDg5ZTNkZWNlYTJlZTkyZTFlY2Q1Nzc3OTk2ZDJmYjQxIGxlZ2FjeS10cnVuaworMjI5NzAgMjI2ZDVlZWZhNDRhZmQ2YjVjYmM1NmI4NjY4ODdhNjAwZDk5NjNhYyBsZWdhY3ktdHJ1bmsKKzIyOTcxIDU0ODdkOWQ1M2EwZTFlNTUyMTIxYmM5MDBkYjczMzMzNzUwOTYzZmYgbGVnYWN5LXRydW5rCisyMjk3MiBmMzAzNmQ0ZTNjMjJhZjgxMmYwODlhYWUxNDEzNWZlMWY3OTBjZjI5IGxlZ2FjeS10cnVuaworMjI5NzMgNGQyY2I2ZWFhNDExMzhjOWEwMDQyYjI1M2ViOGQxZDVlYjVjMDVjZCBsZWdhY3ktdHJ1bmsKKzIyOTc0IGRlYjA4YWY4OWEzNWQ2OTg4NDYxMmQzMmVmMTE0Mjg5ZDA2NjMwOWIgbGVnYWN5LXRydW5rCisyMjk3NSAyZTZkYTJkZDJhYjgyMDcwYjQxMTFmNTlhYjQ0ZmFmNTM1NDc3YTQ4IGxlZ2FjeS10cnVuaworMjI5NzYgODVlYjFjOTExYWU1YzBjNzY2YzBmNzg4ZWJmNWNlMzhmODAyY2QxOSBsZWdhY3ktdHJ1bmsKKzIyOTc3IGI3ZGM1MTU5NDQ4ZjQ4YTc3MzIyYjkyZGVmZGJkOWEzNDI4M2I1NjIgbGVnYWN5LXRydW5rCisyMjk3OCAyYzFhOTgzMDk4YTA2NGI0OGQ5MjVhMjkzOGY0ZmNmYjJjNGY5ZTU2IGxlZ2FjeS10cnVuaworMjI5NzkgZDlkYWE0YTY3YmUyNjIzODlhMTBjNGY2MjIxMTBkNGFhMTQzNDYzMiBsZWdhY3ktdHJ1bmsKKzIyOTgwIGY1NmM5MTgyMGZhZTJkMmNhODNiZDNmYTgyMWQ1NmIwYTg2MjdjZmEgbGVnYWN5LXRydW5rCisyMjk4MSAwZTQ2NDZiZjgwNDExMGUzMzdlZTM4NDk0YTdlMWU0OWE5ODEyYTQ3IGxlZ2FjeS10cnVuaworMjI5ODIgNTZjNTQ5YTI1M2E2ZTk0YzZmYzlhNmExMWE0NzkzYThlOWIyOTMyNiBsZWdhY3ktdHJ1bmsKKzIyOTgzIDVkZDI4YWEyYmU2YmZkMDA0MDQzMTJjMGM2NjQyMTU5MjAwOWQ1MWUgbGVnYWN5LXRydW5rCisyMjk4NCA4ZDJjNzQzNmI5ZDI3ZjdmMzI1Y2U2NDliNDMyNzAyY2QzODRlYTA5IGxlZ2FjeS10cnVuaworMjI5ODUgOGU2ZTI0OGRmZGQ4NjViYjhiNmMzMjAyOGI1YjQyNjE3MjY4OWExMyBsZWdhY3ktdHJ1bmsKKzIyOTg2IGE1ZWViMWU3MGY0MWYyZmU4NmRkODUyNzYxMjgyODY3ZmQ5OWMzYmUgbGVnYWN5LXRydW5rCisyMjk4NyAyYTQ2NWIwZWI1NGU0MjBhYTNkZjI0Nzk2ZGJmMmUzZjBlZWEyMDA0IGxlZ2FjeS10cnVuaworMjI5ODggODU0MTg3OGNmMmUxM2QyNTYwNGZhOTUwMzhiNGJmOGY0YzNiODcwYSBsZWdhY3ktdHJ1bmsKKzIyOTg5IGYxNDMwZTMzODJiYmU0YmFmODI0MmI4YjU4NTk5ODE2OTNjMTc1OWMgbGVnYWN5LXRydW5rCisyMjk5MCBkYzA1OWJmYjUzYjIyZWNkNjUxMjI4N2U5ZjBiYmQyMjU1NzhlMjJlIGxlZ2FjeS10cnVuaworMjI5OTEgOTg4NTZhNGFlZDEwMTcyNmFlNmQyNGI1YWQwNjdkMDFkODcxMmNjMSBsZWdhY3ktdHJ1bmsKKzIyOTkyIDdmYTQwNTk3ZGE3ZTdmOTJlMzQ4MGZjNjdiYTIwYzU3NTU0M2IyZDAgbGVnYWN5LXRydW5rCisyMjk5MyBjOTNkN2QwODU3YTI3NmRiY2IxYTEyNDMxZDExNTJjZTQzNGI1YzE4IGxlZ2FjeS10cnVuaworMjI5OTQgZmEwNjIxZTRhZDhhYzdmN2Y4ZDU3NGM0ZmFlMzRjNTMxYWUzNjljNiBsZWdhY3ktdHJ1bmsKKzIyOTk1IDM1YjZhMWQwYjFlMDU0YjRkNjRlMjA1ODlhZjhkMjRmZDhjYTE1NmMgbGVnYWN5LXRydW5rCisyMjk5NiAzZDc2ZGZjMzRjNTdlNjM3NTUyOGQ4MTc2ZTAxYmY4ZDU0MjFiYzgyIGxlZ2FjeS10cnVuaworMjI5OTcgZGJiOWQ4MmM3Y2UzN2ZmNDI4NTczMDQ5YTRmMjhhY2JiNzkzNDgwMyBsZWdhY3ktdHJ1bmsKKzIyOTk4IGMwNTgwZDhjMTkzZTNlMzNmY2I3OGM1Nzk0YjNhYTY0OGQyNDU1OGYgbGVnYWN5LXRydW5rCisyMjk5OSBlMWYxZTllYmYwNTAxM2E3MDZlNmYwNzkxM2M2MzIxNTRjYzlmZGIxIGxlZ2FjeS10cnVuaworMjMwMDAgNWE3YWM4YzA2M2NjY2ZjMGM2ZWMyN2EzMDRjZGQ5ZjVlMzRjMGZjNCBsZWdhY3ktdHJ1bmsKKzIzMDAxIGExZDM5NzA4ODViZGJlYmJlNzA2YWRiNjQ5ZjFlOGEyYjcwNzAwNTYgbGVnYWN5LXRydW5rCisyMzAwMiBjYTdmNzU3NmQ4MjNlOGM3MGI4NmQwMmE1Zjg4ODJkZWYwNTE3MjVlIGxlZ2FjeS10cnVuaworMjMwMDMgNjRiY2VmMTcwMmFkOTdhZTAxN2ZlZjZjMDc5ZmI3MThhMWI2Y2U5YSBsZWdhY3ktdHJ1bmsKKzIzMDA0IDhlODdjZGRlZDk2ZmJmZTdmNWE2ZTVjMmM0ZTMzNDlkNWU3NjE2YjMgbGVnYWN5LXRydW5rCisyMzAwNSA5NmRhOTg1Y2RlOTg0MjZhYWM0ZDNhMWI1ZDRkYTQ5M2E5MDZhYzIwIGxlZ2FjeS10cnVuaworMjMwMDYgNDQxNzViYjBiN2JmYzgwN2VlYzZkZGE5Mjk2MGRiYTk4MGQ0YTE0ZCBsZWdhY3ktdHJ1bmsKKzIzMDA3IGQwOTI2OGQwZWE1MjliNjQ5MTNjZTA0YjliYmJmYmM1M2IwYTcyYjkgbGVnYWN5LXRydW5rCisyMzAwOCA5NGQwZjJlZWEwNDdlMmU4YjEyM2UzMTk3NTFkZjRmMTA3MGY1NmQ1IGxlZ2FjeS10cnVuaworMjMwMDkgNTc4ZWYzNmY4ZmRlMGE0MmI2Y2JkZDRhNGJiZThlOThkODRjMzI4NyBsZWdhY3ktdHJ1bmsKKzIzMDEwIDVmY2QwZDQxYTQ0NmJkNjUyNTA3MDk0ZTAwZjRhOGFlNDE0N2Q3YmIgbGVnYWN5LXRydW5rCisyMzAxMSAyYmNjZThiYWI4YmJlOGRiZDM3ODIzYzgyNjU3N2E0MGVhMzMwZWM5IGxlZ2FjeS10cnVuaworMjMwMTIgZDU0Mzc4ZDMzMzRmZDQyOGUwYWFlYzkxOTQyMjgwY2M0ZjUwZDEwOSBsZWdhY3ktdHJ1bmsKKzIzMDEzIGQ0ZjUzYjFmYjQyNDBkZmMyYjM4N2NkZWUwZDI2Y2NmZGU5NWI1NzkgbGVnYWN5LXRydW5rCisyMzAxNCBhNWVhZWY0N2E5YjMzNjBmZjQyMmM3ZDNhNmE0MjgzMDJjOTA0M2Q5IGxlZ2FjeS10cnVuaworMjMwMTUgNDJkMGJkZTczNTMzZTEyNDVjNjM1MzE0MjZjNmZjYjI1ZjFlZjQ0MCBsZWdhY3ktdHJ1bmsKKzIzMDE2IDQzMjU5MTMyODQxMDI0NWJkOGI1MDY2MTdmMTQxYjAxOGJhNmNkZGUgbGVnYWN5LXRydW5rCisyMzAxNyAzMzViZjNlYWI5ZjFhZGQ5ZDlhNWYwM2E4OTY3Mzc0ODkwMTZmNWZiIGxlZ2FjeS10cnVuaworMjMwMTggNmM3ZGQ5YjNlNTBiNWYzMzY4ZDQxMzJjYjIzMzAwMzkzMzI4Y2NmYSBsZWdhY3ktdHJ1bmsKKzIzMDE5IGM1NTIzYjBmODlkNTgzZGVkZWQxZWE3MGUyZTAxYjM4NzMyMjZkZGQgbGVnYWN5LXRydW5rCisyMzAyMCBlZTEyYzM4ZTQ2YTZmYzAzNWM4N2FjMDIzZTQ5ZmU5NDE2MDY3NzkxIGxlZ2FjeS10cnVuaworMjMwMjEgYjIzMjM4NjQ2ZDE1NmIyZDE3MDk1NDFkYWFhYWZlYjg3NWM5OGM3NyBsZWdhY3ktdHJ1bmsKKzIzMDIyIGU3MTQ3MTU2ZWYzM2U3NGE0NzdiYzA3MTNhMWJhNDA5OTAyN2ZmMmUgbGVnYWN5LXRydW5rCisyMzAyMyAxYzYyYjRhNTk3ZjZlNzJiMDVjNzNkZjJmYzEyZmI1ZjM3YzVlZTgxIGxlZ2FjeS10cnVuaworMjMwMjQgMDdiYjA5ZGYzMzI0ZjEwMjAxYzg4MjkyOTk3OThkZDZhNDY3Mzc4OCBsZWdhY3ktdHJ1bmsKKzIzMDI1IDFjYzg0ZGZjZDZiZDI3NGYzYjU3ZjRiMzQ2NmVmODljMGNhYzI1ZDIgbGVnYWN5LXRydW5rCisyMzAyNiA3YjcyMmI2Y2M3N2IzMWMyODlmMjY1ODAxYWU3YWIzMDIzYmM3ODYyIGxlZ2FjeS10cnVuaworMjMwMjcgOWRlMmY3ZTFiNmU4YjliZTM4MWJhMTBhZjEwNjk1MzYzOTdiYzk4YyBsZWdhY3ktdHJ1bmsKKzIzMDI4IDEzYjY1NGNlNjNhNDc3YmY2ZDY4NWE1YTE4ZGNiYjFkMjNkYTQ5MDkgbGVnYWN5LXRydW5rCisyMzAyOSAxNzMxMjJlNWVkZTQxNzJjNDExYTFlOGI2ODBhZDcwNmI0NjgwOTVjIGxlZ2FjeS10cnVuaworMjMwMzAgYzczN2QxM2RhOTJkMmFlMGEwNjAzMGE2YTkwOGIyMTg5MTU1NTdlMyBsZWdhY3ktdHJ1bmsKKzIzMDMyIDRhYmZjMTc2Njg1YzMwMmEyMWMxNjAzYzU3ZTRjN2JjYzQzMDk2ZjQgbGVnYWN5LXRydW5rCisyMzAzMyBmODE0ZWE2YmI2Njc2YjgyNDE5NWM1MTIwOGRkNjYzYTdjOWZlYWUyIGxlZ2FjeS10cnVuaworMjMwMzQgY2FkOTMzYTQ1NGZlNjFkNGRmMTgwYWEyYmUyOTM4ZjI3ZThkYzY2YiBsZWdhY3ktdHJ1bmsKKzIzMDM1IDk0ZTE0MWUyMGQ2MThlOGUxMzFmOTBiZjdjZGFjMjYxMWJhYTg4Y2EgbGVnYWN5LXRydW5rCisyMzAzNiAwYjU3NzI5Mjg0ZGZiNGU2YzIzOWYxNmFiMzQ5NDFlMTk0MjZlMDk4IGxlZ2FjeS10cnVuaworMjMwMzcgOTA3OTcxMGVjMjE2OTZlMzk4NDY3OTgyY2JjNjFjOGM5MWI2OTZjNiByMjJhMy1icmFuY2gKKzIzMDM5IDk2MDQ3NGQxMjlhZWQ3MzY1ZWM3OWFhZWIwYTI2YmNhNGRmZTg2NDMgcjIyYTMtYnJhbmNoCisyMzA0MCBjOTdkZGEyMzhiMzYyNjYxYmFiNzdiYmE5ZDBhYzNhNzljNTJhMjE5IGxlZ2FjeS10cnVuaworMjMwNDEgM2Y2MjE0ODliZTcyMWRhNmU0YWU1MmJjZTQ0NjcyOWRkNzA1YjcyNyByMjJhMy1icmFuY2gKKzIzMDQyIGIzNWEyYmYwYzk4MGFiNDUzYjRkYWE0MzFkZDFhNGE5ZGMyN2RmMzcgbGVnYWN5LXRydW5rCisyMzA0MyBlMmU5ZjE3MjJjNGZhMjlmMGNmY2UwZmNkZDgzOTQxOTU4NzJlMDBkIGxlZ2FjeS10cnVuaworMjMwNDQgOTVlYTY2MTIyMzI1Njg4ZTI0YjdlYjE3MTRhZjMyMjM4NWZmNTczYSBsZWdhY3ktdHJ1bmsKKzIzMDQ1IDljNTRhMTZhYzhiOWVkYzUzNGRhOGE2ZDMyMTVmNDZjMjg2ZTAyYTEgbGVnYWN5LXRydW5rCisyMzA0NiA3MDBmZWZkYzAzZDI4NWYzMjRmYWNlMzNiM2E4Nzg1ZmEyYjgyY2ZiIGxlZ2FjeS10cnVuaworMjMwNDcgYzBmOTRiYzVmZmU4MDZlNzc4NjFmNjkyYmJkMTYxNDRhMTM4ZDg3OSByMjJhMy1icmFuY2gKKzIzMDQ4IDc3MDk3YTU1ZTk3MzFmMDVlMDRmNzhkNWE1MzI1NjlkMzllOWJmZTkgcjIyYTMtYnJhbmNoCisyMzA0OSAwMzA4MGUzOTVjOWVkMGZlYTg1ODM1NmZlOTAzNzVhZWJlZmU3YThmIHIyMmEzLWJyYW5jaAorMjMwNTAgNzhlNzNiODUxYWE5ZGJhMzY0ZmU5MWZmYjYzN2QzNDc5NjhhYzg5OSByMjJhMy1icmFuY2gKKzIzMDUxIDI4NWI3NDBiODQ0MTkyYzY3Zjg0MzgyMGM2MjZkNjRlZGFjYzY2YTMgcjIyYTMtYnJhbmNoCisyMzA1MiA0M2RjODI3ZGQ3MTdjYWZiYWQ1YjRhNDQ1YTdmMjY1M2Y1MWU4MTM1IGxlZ2FjeS10cnVuaworMjMwNTMgMDkxYzAxZDA3ZDk4MTQyN2NhMTRjMTIwODRkMjJmOTk4ZjllYzlkZCBsZWdhY3ktdHJ1bmsKKzIzMDU0IGQ0ODAxNGRiYjg1ZjZhOWE1YjZkMmVjMDQ0MGNmNWMzMDYyOTJjMDkgbGVnYWN5LXRydW5rCisyMzA1NSBlZDU0OTQzY2UyNGUwZmU0NDY4ODhmOTVmODA2ZDE4ZDk2Y2M0NzYxIGxlZ2FjeS10cnVuaworMjMwNTYgZmUyMjk3MjdhNDBjZmQ0OWRiNDE5NjNiYzUxYWFlMzJjZjYzNzdhOSBsZWdhY3ktdHJ1bmsKKzIzMDU3IGI0N2QyOTY5OWNkMjk4YjFiMmI0MzI2Zjg0NTUzYmU2OTVkYTM5MTggbGVnYWN5LXRydW5rCisyMzA1OCAzMmNmY2U0ZDgzZGMwNjA0ODBiOTFmYjQ4YTQ3YmM0OGJlYTNlODQyIGxlZ2FjeS10cnVuaworMjMwNTkgOTAzMWFhYjI3ZWFlZGQyYTUwYjRiM2Y0MzUxZTAzZDBmNzg4YzVjOSBsZWdhY3ktdHJ1bmsKKzIzMDYwIDU2MDE1NWU3NTA4NzhjMmRmMDAwZDlhZjU3NTA2OTFlZWUwMmEzZmUgbGVnYWN5LXRydW5rCisyMzA2MSA4Y2FjNWViNzAzZmQ4NDY1ZGMyNDA5ZWZjYTk2NmU0NTU1YTVjMjhmIGxlZ2FjeS10cnVuaworMjMwNjIgMDg2ZmZhZmFlZDU1MjU5OTBmNTQ4NzVhMGFkYTNlMDQ3YTIwMDUwOSBsZWdhY3ktdHJ1bmsKKzIzMDYzIDA1ODRjOTEzMjUyNWE1ODhlMDU0NDYyYzc0ZmQ4YTZlYjAyZjk4OWEgbGVnYWN5LXRydW5rCisyMzA2NCA3OWEzMWJhODczYTM0M2RkOTc1MzhhZTA0ZTJiZjQyYmNjY2MxZDVjIGxlZ2FjeS10cnVuaworMjMwNjUgY2U1N2ZmZjkzOTYyOWQwY2FiZTgxMzFlYTEzMDg1MDg5ZWRjMzM2YyBsZWdhY3ktdHJ1bmsKKzIzMDY2IDM4YzEyZmFmNjEyYWE1ODljODA5OTA0ZWU0MDc4NzUxMTE1NjE4NTMgbGVnYWN5LXRydW5rCisyMzA2NiAwODc5NmExMzdmMWFkYTI0NjJmN2EzMTc3MzA2ZGY1ZjY3YTc2N2UxIGxlZ2FjeS10cnVuaworMjMwNjggNzA0MTFlYmEyMjViMWE1MWY3Y2MzYTdmMjY4ZWU5NmY1Zjc1M2JlYyBsZWdhY3ktdHJ1bmsKKzIzMDY5IGRjODdkOTFkMGRmZDY4NWU4NTQ0ZTFlNjJlNDdkZGI0NzQ3YjdlODUgbGVnYWN5LXRydW5rCisyMzA3MCA4ZDU4NWQ4MjJmOWQwZGIxY2M5MTBhODJkNTVhMmMwMzBmNDhlNzNlIGxlZ2FjeS10cnVuaworMjMwNzEgMGNiYjA2MGRhMmMzNGJjZDA5NGVmNWExYmIxOTJkMDk5OGMzNWFmZiBsZWdhY3ktdHJ1bmsKKzIzMDcyIGI3Mzk2Mjg3Y2Y2NWI5NzI2YzI0ODUxOTc5Mjc5ZjVkNzcwYTAxYWMgbGVnYWN5LXRydW5rCisyMzA3MyA2YjFiZTE0ZDc2NTAzMjQ5MDM3NWQyMDBlODQ0NGVjMWMxZGEzOTAyIGxlZ2FjeS10cnVuaworMjMwNzQgNTNlMGNhZTNjZjZjZDA5MzFiNmU3ZDdlOGI3ODI2NjFjZTY0NWIwYiBsZWdhY3ktdHJ1bmsKKzIzMDc1IGZlNWVjMWEzYTdlMGY3MzBiMDdhMWQ2NTljYzJiYTRlZDJjZjllNjAgbGVnYWN5LXRydW5rCisyMzA3NiAzZjczYThiZjc2ZjdjOTliYTk2ZjE2OGU0NmNhYjFlMjdmOTU0MjkzIGxlZ2FjeS10cnVuaworMjMwNzcgM2RjMzE1NDA5OTY4MTQyYzBkNmQ1NmQ1MTFiZTNkZGFiNTQzYzM3NiBsZWdhY3ktdHJ1bmsKKzIzMDc4IDZlNTdkYzMwNTU1MTA4YTZmYzE4MzM0YTFhMmQ4MDE2Y2RjMDJlODYgbGVnYWN5LXRydW5rCisyMzA3OSAzNzIxNDk3NzkyNDA2NjlmODQ3NTMxMmJiYjg4OWQzZDlkNWJlMzE3IGxlZ2FjeS10cnVuaworMjMwODAgOTE5NTMyYzUwYTE3NTliODk0ZGI5NWYwMTA1NTM0YjQxZDFiNWEwMSBsZWdhY3ktdHJ1bmsKKzIzMDgxIDhlZjQ1Njk0OWI3NjI0NmFlZTg0YzY4NTUyZDk1ZTQzNWMzZTE3YjggbGVnYWN5LXRydW5rCisyMzA4MiAzOWVlYWI2ODlkMDY3YjA5Y2E1ZmRiMzgwOWIxZGE3MzE5NGMxNzU4IGxlZ2FjeS10cnVuaworMjMwODMgNWIyOGQ3ZGMzMDA2MjViNTgzZjJkZjE2MmQ4ODMzMThkZjM4NTdiMSBsZWdhY3ktdHJ1bmsKKzIzMDg0IGJiYWVhNTNhYzA4N2Y1ODY1NzgyZDUwNTgwZjU5MmY5NGJkY2Y5YzggbGVnYWN5LXRydW5rCisyMzA4NSBlNDE5MDYwZTEzYzhkNDQxM2YwZDdhNmRhNGMyY2ZhZjU5YTAzOTA0IGxlZ2FjeS10cnVuaworMjMwODYgMTM1OWZhYzYxN2YxYmI0N2I4NjZmMDZhNTk1NGNmMDk1Y2E1NGNkZCBsZWdhY3ktdHJ1bmsKKzIzMDg3IDAwZDgwOTQ3ZDgxNzlmODg5YTBjNzgyYThiNjMxMDIzNWFmMDA5OGUgbGVnYWN5LXRydW5rCisyMzA4OCBmNDQ2MDZiMjQyYzU5MTExNDA3OTE2MTQyNjk4OTZhODVmMmUxOTg1IGxlZ2FjeS10cnVuaworMjMwODkgNTMyNTBjYjEwNmViNDcxYjc0NDgzYWI2ODFlNjZkODIyNWYxMzQ5MSBsZWdhY3ktdHJ1bmsKKzIzMDkwIDljZjEzMzhmZDhkOTg1MDAyMjI5ZGJlYjE0YjM2MTliYzM1ZDkzYzMgbGVnYWN5LXRydW5rCisyMzA5MSA1NDIwZTdkMzQ4YTQ0YzYzMWI4YzM1ZWM5YmI1NTY0MzQwMWZiZGQyIGxlZ2FjeS10cnVuaworMjMwOTIgNTE1OGU0Nzg5NDU5MjE4MTBlMGQ2NjkzNmNmMTI2OTljYjA2YTc5YSBsZWdhY3ktdHJ1bmsKKzIzMDkzIGMxNTkyMGMyY2Y2Y2NiOWZlOTg4NDQ4NGQ0MDIzZjZkNDJjOGVkMTMgbGVnYWN5LXRydW5rCisyMzA5NCAxMGY1OTI3ZGJmMDVkMDg5ZGM2YjZiMzAyNjA2ZjVjNTVlNDQxM2U3IGxlZ2FjeS10cnVuaworMjMwOTUgMzc3NzQ2YTM4OTcyMTk5OGM0MWI5ZGI0OTQ3OTg3MThmYzk5NmZhMCBsZWdhY3ktdHJ1bmsKKzIzMDk2IGQ4ZGQ3NWUzYjMwNDY1ZmIxZTU3M2I2OTA4YmRmZmE4YjA1NWZlNmMgbGVnYWN5LXRydW5rCisyMzA5NyAyMDkyNGE3MGZhMWJiYzY0NzNhODJhNzcyNDY3NjBiZDhhNjQ4NDk2IGxlZ2FjeS10cnVuaworMjMwOTggNmZmN2VlODRkNWExNTgzNWQ5YzYxNGJjN2UwYTk3ZGIxODZiM2Y2YyBsZWdhY3ktdHJ1bmsKKzIzMDk5IDllNGQxYTYzMDdmNjM4NTU1MjViMzBiNzA5ZTMwZjhmMGMzZTNkNzQgbGVnYWN5LXRydW5rCisyMzEwMCA3YTk4MGM5OGM4YWVmZmQzZjIyZTNjOTAxN2M4NDJjN2I0MGZkOTc1IGxlZ2FjeS10cnVuaworMjMxMDEgNjYyZTIyZjk5NjM5ZjUwNzRlMmM4NGU4NDRjZTI5Y2FmYTgwZDMxMiBsZWdhY3ktdHJ1bmsKKzIzMTAyIGM1YzI0MWJlZjg4ZDNiMDY2ZjRiOGZhMWZhMDk3YzJjMmQwODk1YjQgbGVnYWN5LXRydW5rCisyMzEwMyA4YWY3NGYwMzU4YWMzOWE5YmNkMDk1YjAxYjRhNjJlNDI5NDZlNTI3IGxlZ2FjeS10cnVuaworMjMxMDQgYmYwMjAyZGFjNDQxNzE2MGJlYjc1NTFmZTdlZmQyNDlkZjI0YjZjOCBsZWdhY3ktdHJ1bmsKKzIzMTA1IDJiNTgxZjRjNjliNGYyMDk0ZTNmMTBlMjM4ZjMxNzI0ZTIzYmY5MDAgbGVnYWN5LXRydW5rCisyMzEwNiBmM2Y2OTQxMTFlYTA4MTYwYjQ3YTM2MTI0ZDkxZThiMDhkOTM5ZDMwIGxlZ2FjeS10cnVuaworMjMxMDcgNWU3OWJlZDM0MjZmOTNkZjMzNmZkNmE3N2VlMGQxOWE5MDc5MWE5MCBsZWdhY3ktdHJ1bmsKKzIzMTA4IDk4MzAzMjNmNWY4ZWIyZTU4YmE2ZWE1YTY3OGJkNjMzOTMyNzMzYTAgbGVnYWN5LXRydW5rCisyMzEwOSA0M2VkOGEzNDVmNGQ4MzM5MWQzODVlNWNkN2YyOGYzNzA0YzljNzBjIGxlZ2FjeS10cnVuaworMjMxMTAgNTU2OGIzMjA5MTRmNmRiOTU3NDIzMDdmODM3MjEzM2JlNDEwZTNlNyBsZWdhY3ktdHJ1bmsKKzIzMTExIDQxNDEzYzc4MzgzNjc5MzczOTYyMGU2ZDhmYWVhZDM0MmJhMGU3NzkgbGVnYWN5LXRydW5rCisyMzExMiA5YTViYmY4NDVjNjMzZWM3YTFlNjVjNThjZWYxNjFhMTBjNDQ3OGNkIGxlZ2FjeS10cnVuaworMjMxMTMgODczYmU4ZTM0NjJiZWU2N2JhYjUzYzdmOGJmODI5ZWMxNThjYTU2ZSBsZWdhY3ktdHJ1bmsKKzIzMTE0IDU4NzFlMGFhMDIxYjg1MGNjZDllYzlkY2NhMTliMTIzNjEwYTZlNjAgbGVnYWN5LXRydW5rCisyMzExNSAyYTgwOWIzZDAzZTk0YmZmNjA2NmQzZDJhNmVlN2M5Y2JhMTM5ODM5IGxlZ2FjeS10cnVuaworMjMxMTYgZDk5NzBkNjMxODc4MGI5ODhmNTM1NGUzOTBhYWY5MGQyMDcwYzdlOCBsZWdhY3ktdHJ1bmsKKzIzMTE3IDM2Y2ExNmRjMzViOWQ5OTlkZjA0YWNlYTMwMTU3ODBiNTMxNjI0MGYgbGVnYWN5LXRydW5rCisyMzExOCA2NzYyOThjMGM3NjI5NjM0ODg3OGMwZmUwNzJmZDRjZDE1MDhjMTNjIGxlZ2FjeS10cnVuaworMjMxMTkgMzA0NjUyZmZjNmFjNjAzNTRmOWRjNzNhMTMzZTQ4MDgwNDFjNTgxNSBsZWdhY3ktdHJ1bmsKKzIzMTIwIGYyYTMwMDliNTI4ZTkzZTVjMDYzY2E1NDZlMmU3NWEzYmI4OGRlNjIgbGVnYWN5LXRydW5rCisyMzEyMSBhMzQ5OTFiOTEwMDg2MTljYmM3ZTA1ZjA1YmI4ZWYwYmJmODIwNGMwIGxlZ2FjeS10cnVuaworMjMxMjIgNTc4MDcyNDQ3MGVlYjRlN2EwYmQ3N2UxZTAzZjZiYjAxZTQyMWU2ZCBsZWdhY3ktdHJ1bmsKKzIzMTIzIGFmOTgyODJlOTI3N2I3Y2RjYTg2MTliNzY5Y2I5ZTZmNGE0ODk0YjYgbGVnYWN5LXRydW5rCisyMzEyNCBkZjQ5MzY0NmVjNGRjZDllODZiMTMzZTIzYTk4NmEwZjcwODY1YjUzIGxlZ2FjeS10cnVuaworMjMxMjUgZTkxYjk5MTM4OTg1YWU5NTE1OGZiOGE0MTMxZWZmODQwZWI2OTY1OCBsZWdhY3ktdHJ1bmsKKzIzMTI2IDE4MDg2YzkxM2VkNWM1MTMxYjI0YWUwOTMyNmVmYzk0YmQ4ZTQ4ZWIgbGVnYWN5LXRydW5rCisyMzEyNyA1MTM2MzM0OGRjZmFiN2IwMmY3ZDBmNDRiYjczNTU1MGQ4NTYwYmZlIGxlZ2FjeS10cnVuaworMjMxMjggYTE5ZWVhNDE2NjhmY2ZmYTAwZWYxMmJiNDA4MDVjYjdiYjE5MTEzYyBsZWdhY3ktdHJ1bmsKKzIzMTI5IGVkM2U1MjlmYmU0NzkxYzhhYmU5ZDQyZjgwNjU2Yjg4NTM4M2M0NTQgbGVnYWN5LXRydW5rCisyMzEzMCA3MGJkZjg0ODYyYWQxY2IzMzQzZjhmNTNhNDQ0ZWI4NjdiZmNmNjJmIGxlZ2FjeS10cnVuaworMjMxMzEgYjg3YzA1ODYyODE1NTk2NzJlYzRkYjg5N2VhODU1ZjI2NDhhZTA4ZCBsZWdhY3ktdHJ1bmsKKzIzMTMyIDYyZDMxZWM0M2RmNjYzNDk3ZDQyYzhkNzNiMWYxZjFlMjZiMDk0OWYgbGVnYWN5LXRydW5rCisyMzEzMyBjYzE0NmVlNTI4OTc1YjUyNzNhY2Q4NmMxZjU3ZjA4NTVkNWFjMDRiIGxlZ2FjeS10cnVuaworMjMxMzQgYmM1MDU4MWIzZDdjZGUyNzhmZGNjMDUwY2JiYmJhZmExZWY2ZjM5NiBsZWdhY3ktdHJ1bmsKKzIzMTM1IGQxY2Q0Y2Q3MjI3MWUwN2E3NTdmZjkwMDRkNDgwMGRmNGEzZWJkMmEgbGVnYWN5LXRydW5rCisyMzEzNiAxNmU0ZDA5NmY3ODdkMWE5NTI0ODkyYmI5MWYxNDdhMzRkY2M1NDFhIGxlZ2FjeS10cnVuaworMjMxMzcgOTZmNTNmODgzMWVlZTRkMjkwOWY2OGY4Yjg2NzIzNWJjNmE1YTk2ZSBsZWdhY3ktdHJ1bmsKKzIzMTM4IGM4ZmVjZTM3ZjAyMGIwZTk2MjYyM2YyODkwMWRlOWMzNjE5Zjk0MTMgbGVnYWN5LXRydW5rCisyMzEzOSBkZjY2YjRkZDBiMGRiYjQ0ODhiYWNmNmEzZjZiYTc3YTBkN2Y2Yzg1IGxlZ2FjeS10cnVuaworMjMxNDAgNzJlNmViNjUzMzEyMDdiODE2ZTNlYmE1YjA4MmI0NDkxNDQyYWY1MiBsZWdhY3ktdHJ1bmsKKzIzMTQxIDNiMGRhMTNhY2U0ODU3MjJlZDJlNDY4OTE1MGEwMjJjNmFkNDdlMjEgbGVnYWN5LXRydW5rCisyMzE0MiBiMjhmYzhjMzZlM2RlNzhmN2UxNTExOTNjODkwNDQ0YjNiZWQxYzM1IGxlZ2FjeS10cnVuaworMjMxNDMgMmRhNjZjZTdlZTIyOTUxNzQ3MjA5MzQxMzEyYzk2NGUxNWQ5YmJjNCBsZWdhY3ktdHJ1bmsKKzIzMTQ0IDczMzMxNGZjZmRhYTBhOTVlZjZiYjc4ZDdmZWVkMjQ4MmMyZWZmNzkgbGVnYWN5LXRydW5rCisyMzE0NSAzMWZlOGIzZTI3NmJhYWRlNDUwMWY3NWQ1OGYwN2I4NGNkODEwYWE0IGxlZ2FjeS10cnVuaworMjMxNDYgYzMzYTg1NWMxMjc0NWY4MmE5YzhkNTJkY2Y4ZDliZjI3MmRlMjgwMCBsZWdhY3ktdHJ1bmsKKzIzMTQ3IGU5MTNkNzU3MTNlNjQzMjUxNzM5YWQ2MjFiODY2NDU1YTBmZWEwY2IgbGVnYWN5LXRydW5rCisyMzE0OCAzYWYwMDY1MDM2NzhhN2M0ZWE2MjU1YWIwNWY1ZWUyMzQ1NjkwZjA5IGxlZ2FjeS10cnVuaworMjMxNDkgNTFjYzgyNjA1ZDMyZGI3YjE0MmY1NTM2NmU5MWRlNmIxZGE0MWZlZiBsZWdhY3ktdHJ1bmsKKzIzMTUwIDFjNDFmYmQwOWQ5M2E2ODYxMWMyMGVjYTdiMDhkNDc4Y2MwMDY3YzAgbGVnYWN5LXRydW5rCisyMzE1MSAwNDkxZWE2MTFiYzRiNzczYzFiYjlmY2E1YjUwY2ZjNjAzZmRhNWU3IGxlZ2FjeS10cnVuaworMjMxNTIgODQzNzYzNTZmZjg5MGU5MDI3OTIwZGQyMjQ2ZjBkNmRkYTRlYWUwZSBsZWdhY3ktdHJ1bmsKKzIzMTUzIGZjNDBkMGI1NDA0MzdlOTg4NzM0MjgzNmUxYzMzOWEyY2ZmZDY0ZGQgbGVnYWN5LXRydW5rCisyMzE1NCAxZjYxNTI2MzA3YzAwYjY3ODhhMWE2OThiYzg5ZjQ3MDg1Njk2ODE1IGxlZ2FjeS10cnVuaworMjMxNTUgZmYzNzc0NzJlYWM5NDBiMjVkYTEzMTI0NDY5ZTI3NGM2ODI4MGYxZCBsZWdhY3ktdHJ1bmsKKzIzMTU2IDA3ODE4Y2JjZDMwMjY4OGNhMTI0MTc1NmZjOTllZjdjMTllZWU2Y2EgbGVnYWN5LXRydW5rCisyMzE1NyBkZTM5OTU2YjU0NTgwNDM2NWYxNjI0YTUyZTUyZDI3YjQ5ZDEyOGQxIGxlZ2FjeS10cnVuaworMjMxNTggYzA4Mjk3MTgyM2NlOTEzMDg4YTE5OGRmOWE4ZWJjMTlkNWNkNjhhNCBsZWdhY3ktdHJ1bmsKKzIzMTU5IDU4ZDUwMDk0YmY4MDg0NzQwMTFmOGI3NGRkMzgxOWE4NjM5YWE3OTEgbGVnYWN5LXRydW5rCisyMzE2MCBhN2JhMDBlM2IwZGUyZmQ0YmRjNzI5ZDMwMzUzZWRiZWM3ZjE1YmJmIGxlZ2FjeS10cnVuaworMjMxNjEgZjM5YTliZTdjOWFmNzQ2ODVjNDExZWE1NzgzMjkyM2EwY2E3ZmJjZCBsZWdhY3ktdHJ1bmsKKzIzMTYyIGQ2OGNmZDg1ZTZkYjliNWZiYmM4MzJmNmQyYzUzMWEwYzk3MzNiYjEgbGVnYWN5LXRydW5rCisyMzE2MyBkNTdhNmM4MTM2NThjYzAzMDBmNWY0ZDM2OWFlZTcwM2QzY2VkNWI2IGxlZ2FjeS10cnVuaworMjMxNjQgYTI4OGE1NWY5MjkxNTFiYmFkNWVhMmU2YThmNDY0MzBlNmE3NzgwMyBsZWdhY3ktdHJ1bmsKKzIzMTY1IDQ5YjdlMzk4MDg1M2JjMmQ1NTM0N2MxYmNkN2U2ZGEyYWMxYjg1NDMgbGVnYWN5LXRydW5rCisyMzE2NiBjYmE0NDlhYjU5MTU3OWM5NGZjZDJkN2MwYjVmYTc3ZjU5NmQzNjgyIGxlZ2FjeS10cnVuaworMjMxNjcgNzFjODUzZGVkYjA3MjkxZGVmMGJjZThjNDYwYWZjMjQ2ODg3NzIzYyBsZWdhY3ktdHJ1bmsKKzIzMTY4IGNhMGY1NGRhY2RkOGM0NWZlNWZiZDBjNjAwODRlZTBiMDRlZWQ5MzcgbGVnYWN5LXRydW5rCisyMzE2OSAyMDI3ZGMxMjRlZGRhZGJjOWU4MDRlYzZjZjBhMmY2NDI2Y2YyZTlmIGxlZ2FjeS10cnVuaworMjMxNzAgMjI2M2NiNDNlYWFiYmVhMGNmZDVlYjFjZTMxMjU0N2JiNmUyMjYxMyBsZWdhY3ktdHJ1bmsKKzIzMTcxIDFiNTVkNzljNjlkNWZlMDQ5ZDM1M2E3NTMwMzNhZGFjMWE2ZjQ2MWEgbGVnYWN5LXRydW5rCisyMzE3MiAyOTRhMzhhMTliNWE5N2VlNWFhZGUxYjg0Y2VkYmYwOTU0NWI5NjdhIGxlZ2FjeS10cnVuaworMjMxNzMgZDk2Y2RiYjRkMjdiYzFlMTVjN2I1ZmRmOGJlZjk2N2Q4M2RiYWExMCBsZWdhY3ktdHJ1bmsKKzIzMTc0IDhlNGQzNWJjNjczZmZhZDlkYjNjMmI5NzRiODc4M2Q5ZTFlMWRmYmYgbGVnYWN5LXRydW5rCisyMzE3NSA2MzkzMDE1OWNhM2M3MmE4YjhmNDQzZjM0Mzk3M2ZhYThjMjIwMDU3IGxlZ2FjeS10cnVuaworMjMxNzYgMTZmNjRkN2RhOGUzMjFjMjFkYTA3NTZmYmQ3ZDEwNjVlMzI5NDUwZCBsZWdhY3ktdHJ1bmsKKzIzMTc3IDk3Y2Y2ZGNkMGFlZDI3YTZiZGZiZWEyYWVmZWExODg0NjNiZDQzYzcgbGVnYWN5LXRydW5rCisyMzE3OCBjYjM1ZDBmNzA0ZGUwYjcwYjA2YjFiYmZlMTAxMmIwM2NjNjFjZTI2IGxlZ2FjeS10cnVuaworMjMxNzkgMDFmNjZmNWRiMzI2MTg1MzE4MmRjNGY5OGU5ODJlNzI0NmJiZDgyOCBsZWdhY3ktdHJ1bmsKKzIzMTgwIGRmNDA5ODQ0YjY1OTc5M2YzNjlmYWFkYjg1YWNhOTY4ZTY5M2RkNDEgbGVnYWN5LXRydW5rCisyMzE4MSBjZTQxNGE2ZDMwYjQ2ZTgzNmVjZTY2MWQyOTczMDBiNDgwZjQ3NDcyIGxlZ2FjeS10cnVuaworMjMxODIgMjg5NDQ1ODg3N2M4Mjk5MzcxMjkwOTFhMmI1NDYzMDc3Y2JjNTNkYSBsZWdhY3ktdHJ1bmsKKzIzMTgzIDYwNDZlOTU0NmE3MDJiNjE1MzIzNjFhOTFjNmZjYzk3NGMwNDk2ZDUgbGVnYWN5LXRydW5rCisyMzE4NCA5YmM3NmUzNmJhNTdlYzhmNWEzZmJjYzMxNDhkZmUzYjg1MjJmMWIxIGxlZ2FjeS10cnVuaworMjMxODUgMzZjMDdhMTcxOGU5ODkyOThlNjBkOGYwZjQ1N2U4YWFiNTdlMzc5YiBsZWdhY3ktdHJ1bmsKKzIzMTg2IGMzMjdhOGFjOWYyYjVmZDEwMGYwNWZhNDI2MGFlN2Q4Mjg1ZGFiZWQgbGVnYWN5LXRydW5rCisyMzE4NyA2MjFlZDEzNDQ1ZGU1NWY3OWE3YTEwMTc5NmI5ZDIzYTU5ZWFkYWQwIGxlZ2FjeS10cnVuaworMjMxODggYjZjZjJmMjdlNDRmYWE1M2RhZWQyNTMzOWQyNDMwN2Q3YmQ0NzkwNSBsZWdhY3ktdHJ1bmsKKzIzMTg5IGYyZjI1YTczOGY3ZjA5M2I0NGM1MjkyZDU3Njk2NmRjZThiY2M5NzEgbGVnYWN5LXRydW5rCisyMzE5MCA2MTlhMmQ2YjVlYTkyMTlkMTc2NDE1MmUzYzU2YTFlOTlmNjA1MjhmIGxlZ2FjeS10cnVuaworMjMxOTEgNjk0NGY1YjlkZTAzZGI5ZTg2MGE4YjkxYzhkNDdkYTkxM2Q3ZGRlZiBsZWdhY3ktdHJ1bmsKKzIzMTkyIDg5NmYyZDFlMmY0NmQ3NmMxNzM0MzMzNDE5ZDk5NDNhOWNmZjI0MWMgbGVnYWN5LXRydW5rCisyMzE5MyBmZDdhN2Y4MzIyNThkN2E5NzIzOGE5YzMzODJkNGUxNmJjNWQwODljIGxlZ2FjeS10cnVuaworMjMxOTQgYWFjYTRkM2NmNjJiNjc1YmUwNzBjNjc3YTIzMGY4NDE0MzgzZjhkZSBsZWdhY3ktdHJ1bmsKKzIzMTk1IDNiZjYyMmJjMjc5MjE4MTkzZGYxODgxNzE1NTQ1NjkzYTAyMGU1NjAgbGVnYWN5LXRydW5rCisyMzE5NiAwZDUzNWM4NmJlNWY1MmYwYTg0MTFjOGRjMWE5YTE5MjJmYTRlY2MzIGxlZ2FjeS10cnVuaworMjMxOTcgODUyMmIwMjJmODBhMjkzNWY2NjAyYWMwZTg0NjNiYzU1MmVkYjllZCBsZWdhY3ktdHJ1bmsKKzIzMTk4IDY3NzNkY2ZlMzRhMzY5MWY1ODBmMTllMjYyNTIyYzRlZmMxYjZhNTIgbGVnYWN5LXRydW5rCisyMzE5OSBkOTQwYWY1MjU4NDA4ZWQ0OGQwYmQ5ZmMyNDNhMzMwM2M5YWY3M2ExIGxlZ2FjeS10cnVuaworMjMyMDAgYmU0YmFhZmE0YzUyOGQwNjIzNTY0ZTNlYTc1NDU5MGUxZmY5YjZlNyBsZWdhY3ktdHJ1bmsKKzIzMjAxIDQxNzk5YjcwYTk2YzFlM2NjMTE5ZWE5MzNjNjJmOWE1MDhkOTFiNTkgbGVnYWN5LXRydW5rCisyMzIwMiAzZjE5MjI5OTA5MDM0OTI0MGNhMzJkYTA5Y2NmYWM0NTg3YzE1NzAwIGxlZ2FjeS10cnVuaworMjMyMDMgZWFmMTIwM2I4NWNmZDA4NGUwMjdiYjRlNGE5YTdmOGI5M2U2ZjRhNCBsZWdhY3ktdHJ1bmsKKzIzMjA0IDA0Y2UyYTQ4YzBhODMxYTg0YjFhMjJiNTYwOTllODRiMDZhZDFiODYgbGVnYWN5LXRydW5rCisyMzIwNSA3NjEzM2E0NjVlMDM5NmY0OGNkZjNjYzk1ZDJjNTQ2MjY3NWZiMjVjIGxlZ2FjeS10cnVuaworMjMyMDYgNzg5NDZhNzg0MzUxMjAyZDA1MmQyZmFiMzliZjRmY2E4ZDUyYzYzMiBsZWdhY3ktdHJ1bmsKKzIzMjA3IDk2YzRhM2YwOGRjZTI0ZGJkZjVmNzA1MWUxOTkwMGNiZmVlOThiZjEgbGVnYWN5LXRydW5rCisyMzIwOCAwZjlkZjU2M2I2NWRlNGUxNDgyMjMxYTNlNGQ0ODRiYjE3ZTIxNjFlIGxlZ2FjeS10cnVuaworMjMyMDkgODRhZjFkZDAxMWVlMzNmN2FjZGY5ZGU2NjY1ZWRkMDg3MmI3NzkxNyBsZWdhY3ktdHJ1bmsKKzIzMjEwIGYzNmEyZDQwYTFkZjY4YWYzNDIyMzMxNzExMDQ2YTdjODRmZjIzMzIgbGVnYWN5LXRydW5rCisyMzIxMSAzMzY2OWM4OTE0YjRhZTEyM2MzYzk1ODQyN2E5MGQ5Y2JmNTQxNDUxIGxlZ2FjeS10cnVuaworMjMyMTIgOTA5OGEzMDhhNTdiMDc4Y2EwMjY3NDNhNTcwYjcyOTliOGE1YmMwOCBsZWdhY3ktdHJ1bmsKKzIzMjEzIDYwODFkNzM2MTY3YjBlNjkzZjA1YjM3OWVmYzA3NWY2ZDAxNTUxMWIgbGVnYWN5LXRydW5rCisyMzIxNCAwM2YzYWIwYzcyODZkY2ExYWViZDEzNmFkYTdiNjRkMTdkNDI4YjY1IGxlZ2FjeS10cnVuaworMjMyMTUgY2FlM2ZmMzFiZDkxMmMxNDM3ZGFiNDZjODIxM2E4YzNiNTlmODNmYyBsZWdhY3ktdHJ1bmsKKzIzMjE2IDA4Mzc0YTg1MjZlMjEwM2ZkNmMwYjZjZDQyMGIyMGQyMWRjMDdhMmUgbGVnYWN5LXRydW5rCisyMzIxNyBjYzUyYjA1YWM5Nzk1NDQyYTc0NzdkZjgxY2RmODExYzM1YThjMTdlIGxlZ2FjeS10cnVuaworMjMyMTggOTY5ZTMwNmI2MmZkZTliZGE2Nzg0ODYzNzBiOTNjNzUxODIwYWZmNCBsZWdhY3ktdHJ1bmsKKzIzMjE5IDQzZTVmZDU0ZjhjOThkOWE3ZGY1ZjI5ZTVkNmQ5M2RkOGNmODY4ZWUgbGVnYWN5LXRydW5rCisyMzIyMCA4MTc3NDVlNWFkZmIzNzZkMTY1NzE4Y2Q0YjhjMjQxZGUxOTg4NmUxIGxlZ2FjeS10cnVuaworMjMyMjEgNDg2ODkzNDZlOGJiZDY2NzAyYjRiMTc0YzZlMTRjMzVhNTJlMzAyMSBsZWdhY3ktdHJ1bmsKKzIzMjIyIDBiNTFlNjA3ZjMzMzdmOTQ1NzAyNDRkOTY5YWQ1NTVmODNmMTQzMTQgbGVnYWN5LXRydW5rCisyMzIyMyBlOTEyOGVhNDVjZGE4MjNlNzc4ZTU5MDIwNTE2MDk0MDVlNGYxY2Q3IGxlZ2FjeS10cnVuaworMjMyMjQgYjE0MDhhMjhkOGJlMmI2ZjE2Nzg5ZTMxYzUxOTQyYjQ1Y2YzNmI1MiBsZWdhY3ktdHJ1bmsKKzIzMjI1IGY3NjFjYWIyOGMxYzEwZjQ5NWU5ZDEzMjZmZmFiOWIzYmY4ZWZhNzAgbGVnYWN5LXRydW5rCisyMzIyNiBkNGM5NjUzMTY2MTA0ZjY5ZGZlNGIzNzFjMTQxODJjYTQyMDBlYTg2IGxlZ2FjeS10cnVuaworMjMyMjcgMjBhZGZlYzYxNDY3ZDViYzRkYzJhMjNmNzIzNzg1YWEwMjFhMWMyNyBsZWdhY3ktdHJ1bmsKKzIzMjI4IDA1ZjZiMDk4OTk1MzJhNjYxN2I1NmNjMjliOWRkMGQyYWViOWI5OGMgbGVnYWN5LXRydW5rCisyMzIyOSA4ZWRjNDRiZDBhYzdmMTQzYTM5MDdlNTNmODU4ZDAwMmI2NjNjOGI0IGxlZ2FjeS10cnVuaworMjMyMzAgNGU0NDVhM2UwN2M2YjUzNThiOWZlMWZmOGViZjQyZjJiMjQ0YTIzZiBsZWdhY3ktdHJ1bmsKKzIzMjMxIGRhMDAxODhkNTI3MDlhZjY4OWEzNTNkOTA5ZmVjMTMyMjg5NTRlOWUgbGVnYWN5LXRydW5rCisyMzIzMiA2MzEzZmEzOGU5MGVhZGEzNGQ2NDA5MjI5NzgwYTk3MWViYWRmYmZlIGxlZ2FjeS10cnVuaworMjMyMzMgYTk2MGU2NzMwNzdmYzViMjgzNTVlMzFmMWY1NDJhZjcyYWZiYzhmNyBsZWdhY3ktdHJ1bmsKKzIzMjM0IDhkY2ZhZjBlNjU1OWJiNmRjYjQxYmE2OTRjYjgyYjJhYmVjNjA4OTQgbGVnYWN5LXRydW5rCisyMzIzNSA5YWI2YWY2ODE1YWZjYjZkYTA2MDVjZmViYzhjOGIwOTJkOWUxMzhkIGxlZ2FjeS10cnVuaworMjMyMzYgMGZkOTUyMDBhYjZlYzRkN2EwNDkxNjJmNTMyOTQ0MmYxZDA1ZDI4MiBsZWdhY3ktdHJ1bmsKKzIzMjM3IGJmNGIxYjA4YTJjNmYyMjlhOThmZGNiODM3MmQyODNiY2I5OTg3ZGMgbGVnYWN5LXRydW5rCisyMzIzOCBkNTY0NmMwYzUxMzBjYzJmOTJkZTA3MWFjMTM4YjhiZTg3ODM2OWFjIGxlZ2FjeS10cnVuaworMjMyMzkgOTg4MTJkMjIxMDc1MTgwNmNlNzJmNjM2MjgzMTIxMDRiYmUxNGFiMSBsZWdhY3ktdHJ1bmsKKzIzMjQwIDcxMmFmZGFlMTEyMzk0YzBhOTg5ZjBmMTRhNWNjOTU4YzkwOGQyNzggbGVnYWN5LXRydW5rCisyMzI0MSBmNDJmODliNWI4ZjliYjQ2YTJjNDViMTUwZjNmYTM5MmI0YzJiOGJlIGxlZ2FjeS10cnVuaworMjMyNDIgZGIxNmUyNmEwNzFiODM0M2MzOWI5MDRjOWU5MWMwZTI2MTkxYTI0NCBsZWdhY3ktdHJ1bmsKKzIzMjQzIGZjYjg3NzA2OWZhYTcxMTczMmMwOWJmMjA4MzgwZTI3ODRmMmY1ODIgbGVnYWN5LXRydW5rCisyMzI0NCBjZWM5ZTI1YWYxMjFiMTY1NzFmODEwN2IxMjIzZDcyMmNiMWMxZGU2IGxlZ2FjeS10cnVuaworMjMyNDUgZmZhMWE4N2FjNDNhODg2ZWYyNTQ4MjIwMjM1ODZhOTViOGQwMTExZiBsZWdhY3ktdHJ1bmsKKzIzMjQ2IDg3MTM0YzdmMmJjNzdiODM2NDU0YjZkNmE5NzM5MTc5MjEzNTcxZWQgbGVnYWN5LXRydW5rCisyMzI0NyA5ZDdjYTU5MTRkMWNlYjU2M2I1MGI4M2RlZjc4NDc4ZTUyNjVhODEzIGxlZ2FjeS10cnVuaworMjMyNDggMjhlZjIyYTI1OThlNWFhMzFiMTdlYmU1YTJlNDdiZDBiNmU2YmRmMyBsZWdhY3ktdHJ1bmsKKzIzMjQ5IGFiNmMxNDgyMmRlMWJmNjVlYzEwZGMwZTc2NmJlYzdmYTE2MTI4NzEgbGVnYWN5LXRydW5rCisyMzI1MCBiMDdjYjUxZDczMWM4NzExNWExNjIxNTcwZjNjOWY4MWNjYzY4MmZkIGxlZ2FjeS10cnVuaworMjMyNTEgNjQ2ZTI0NzI4ODUyM2I4ZWM5MGEwYTc0ZTI5ZjIyN2MyYjFkZjA0YSBsZWdhY3ktdHJ1bmsKKzIzMjUyIDk0MWMyODY4NjAzOTY4NGYwMjE4Yzc5MDQ3YjRmYjAzYTg2YmEzYzkgbGVnYWN5LXRydW5rCisyMzI1MyA4YTBjOTc0NTNkZjQ4MzVkMmZiY2ZiYTMyNGQ5MjI4MjY5N2UxMWExIGxlZ2FjeS10cnVuaworMjMyNTQgMWY0ZTI2MjdiNjI3MDExZDQzYjEwMjQzZmNhMWY2NzA2ZDQ0NTg1OSBsZWdhY3ktdHJ1bmsKKzIzMjU1IDM0YWYxOWRjZWY1OTNmMWNhZDBlNjdlOTkzM2U5MzRmODEzMjU2YzIgbGVnYWN5LXRydW5rCisyMzI1NiA3ZmZlMjc2YTY4NTRjODMyMjdkMjRkNTgwM2JmMWQxYmY2MmE2MzAyIGxlZ2FjeS10cnVuaworMjMyNTcgYjBhZmI2OTEzNDAxYWE3NGFlYmM5NjJhY2JhNWYwODc1YmYxYzU2NiBsZWdhY3ktdHJ1bmsKKzIzMjU4IGM3Y2FmNzlmNTE0MzNkODZiYzRiOTUxOGJlZDBmZmQ0NGU2NGFmMmQgbGVnYWN5LXRydW5rCisyMzI1OSAzODE1YzhhZDAyZDAzMzQwOTFlMjA3YTg2ZDA5OWQ2YmJmYTI3MTIxIGxlZ2FjeS10cnVuaworMjMyNjAgOWM4YjE5NjE1MDM0MTM0MzU2MDRmYWMyZTQ2NzZlN2ZjODRkZmU4NCBsZWdhY3ktdHJ1bmsKKzIzMjYxIDJhN2I0ZDQ0NjBkM2ViZTg2YjJkOTNlZDFmOTc3ODAwYTNmNTRmNmUgbGVnYWN5LXRydW5rCisyMzI2MiA1NmZmZWUxZWVlZWM0Zjk5MGRhMTJmZWE0YmYxMzliN2I5MDcyMGZhIGxlZ2FjeS10cnVuaworMjMyNjMgZWQxOGQ0NDM5ZjA4NGYyOWVkOTYyYThiOTAyMWE2OWQ1OTg1OGQ3ZiBsZWdhY3ktdHJ1bmsKKzIzMjY0IDBmZTMxOGE3ODk5MDQxNDlmYzAyODU1YTJjOTIzNzg0YjYzYWQ5ODAgbGVnYWN5LXRydW5rCisyMzI2NSBkMDNjMTlkYjMwOTQ3N2JlYjQ0ZTkzZTVkNzI3NWRlZDBjZTIwYWFkIGxlZ2FjeS10cnVuaworMjMyNjYgNzViN2U4YmRiMjFlZjYwNTQ1Yzk2ZWE4MWMwMzFmOWY2MTk5MzVlMSBsZWdhY3ktdHJ1bmsKKzIzMjY3IDNmYWFiZjU0YjhiODNkMTI1ZGZjZWNkNWJhOTc1MjQwNmMwNGJmMzMgbGVnYWN5LXRydW5rCisyMzI2OCBlMzE4NGU0NjMwM2I1NDk4MjlkZTY4MGE1NTYyMWRjODA4ZDAzZGI1IGxlZ2FjeS10cnVuaworMjMyNjkgZjAyMGRhNzgxYjkxNWNjNmFiYTNkYTY3MzA0MmNiZjZiM2YxYzA1YiBsZWdhY3ktdHJ1bmsKKzIzMjcwIGNhN2FmMmE1ZDkxNWI5YzY0ZjNhMzM4ZTU5NDI5NDhmM2ZhMTU1OTMgbGVnYWN5LXRydW5rCisyMzI3MSA3MTg5NWRkMjY4ZTJkMDYzODQ3ODYxNWZiNzk2YmI2MGM4OTdkZmYxIGxlZ2FjeS10cnVuaworMjMyNzIgMDg0NDZhOTg2YTU2MmQyYWE5MGVmMzU5ZTE5NzUwZDU3YTRhYTRmMCBsZWdhY3ktdHJ1bmsKKzIzMjczIDhhYTFhZGEzM2Y2NGUyMDI3YmM0Yzk5MzBmMjY0Y2ZhZjFkNTZmYjEgbGVnYWN5LXRydW5rCisyMzI3NCAwZmQxMmY5MmNlOGYwYzYwYzY1NzJjZWYwMjA3NDU4YzA3NzZjMjQzIGxlZ2FjeS10cnVuaworMjMyNzUgYjcwYzA4ODEzYmE5N2MyNGFhMDczMGEzZDBlNjk2NGExNTEzMjExMiBsZWdhY3ktdHJ1bmsKKzIzMjc2IDQwY2M2NjIxZWRkY2EwNzIxYmQxOTllN2U3OWRlMmY0ZmNhODRiZTUgbGVnYWN5LXRydW5rCisyMzI3NyAxMDlkZWY0YTVmNmU5ODUyYTYyMjFiMjNkNWE5NjU4ZWM3NmJjNzlhIGxlZ2FjeS10cnVuaworMjMyNzggNzI5ZmRmMDQ1NDk0MWU5NjBiOTIzZDliN2VhZmI4MDU4ZjE5NTVjMyBsZWdhY3ktdHJ1bmsKKzIzMjc5IDRmNzQ3MTQyZTg0YzgzOTkyNjBhMzM5Y2Q4NTM5MDE4YzAzM2M3ODQgbGVnYWN5LXRydW5rCisyMzI4MCBiN2VjOTg1ZDg1YzYxOTZlMjIwYjUyMDQzZmZlNmNkMTMxZmFmOTNhIGxlZ2FjeS10cnVuaworMjMyODEgN2M1Y2Q2ODVjMWRlMDJkOTc1ZjM5ZTBjZTc0YWNkN2ExYWViMjRmNyBsZWdhY3ktdHJ1bmsKKzIzMjgyIGU2M2Y5NzU2MmE2MjkxNDE2ZmViYjRkNGMwOGFjMDBhZGU5Nzc0ZTggbGVnYWN5LXRydW5rCisyMzI4MyBkZjFiODNmZDBlYmJkYmI3YWRhZjdkMDljZTJlNmJmOWEwYmQ4M2E5IGxlZ2FjeS10cnVuaworMjMyODQgNGJiYjRkOWI0ZDc3NjQxZDBkNTlhOTJjY2NhMjhhZmZjZTdmMWVlYSBsZWdhY3ktdHJ1bmsKKzIzMjg1IDYzNzhjYjExN2I3M2JiMzJhZTlkNTBkOWM0NTA0ZDI5MmJhNTA1ZjEgbGVnYWN5LXRydW5rCisyMzI4NiBlNWEzZjlkNzc2NmI3ZDBmNGI5NDAxZWM2Yzc4OGFmNWMzYmFkZTJlIGxlZ2FjeS10cnVuaworMjMyODcgNWM5YTk1NWVmMTdjZGExMTczMDEyY2RlNjI5ZTE3MWEzZjE0YTkyYiBsZWdhY3ktdHJ1bmsKKzIzMjg4IDEwNGI1YzliODhlYWU5N2RkYjhjNTkxNjIzOTRlMjE2OTk4ZThjNWYgbGVnYWN5LXRydW5rCisyMzI4OSAwNjJhYzlhYWZlNDdiODMwYjM0OWE0YmNjNTgxOTc4ODJhYjdhMmEyIGxlZ2FjeS10cnVuaworMjMyOTAgMDk5NmYwN2QwNGEzYWNmMGQ2MGMxNGUwNWZiNzg0MWIxMThiODBlZSBsZWdhY3ktdHJ1bmsKKzIzMjkxIGFiNjJkMTQ3YmE5MGYzNTk3NTM4ODhkMzU3NTNmMmUxNmYyYzMyZGYgbGVnYWN5LXRydW5rCisyMzI5MiBlNTIxZmMzNzBiZTIwNTBmNDUzYTZhMWU5ODBiZDQ0NzBlMDBkZjRhIGxlZ2FjeS10cnVuaworMjMyOTMgOGE2ZjJlZTZlYWJhMzFhNGNhNDY4YWQ3ZjRhMmExYTcyYWI0ZTlhMyBsZWdhY3ktdHJ1bmsKKzIzMjk0IDNhNGEwMDM5ZWRmMzJiZjY5MjU4ZDlkMGY5OWRkNTI5ZDJlZDcyNjcgbGVnYWN5LXRydW5rCisyMzI5NSA1OTg4MmU3YWFiODljOTEyNDQwZGQ3YjE1MDlkMzcyYzc0YWVkMTNiIGxlZ2FjeS10cnVuaworMjMyOTYgY2Q3MmI2NGFlYzk3ODljZWRmZTdmMDcyOWVlNDEyNDRmMWZlZDJkMiBsZWdhY3ktdHJ1bmsKKzIzMjk3IGUwOGY0MjNmOTE2NWMwNWNlZWQzNDAzMTY5MWE0ZDFiYzY1NjlkYWEgbGVnYWN5LXRydW5rCisyMzI5OCA2NmJiMTBlZTQ5NjEyYjkxNjBkYjdkOWFhYjI1YWU1NzI4NWVhZjY0IGxlZ2FjeS10cnVuaworMjMyOTkgMTkyOWZjNjk2YTA0ODQxYzNkNjFkZWY5OWY5MDc1ZGI2YWZlYzVlZCBsZWdhY3ktdHJ1bmsKKzIzMzAwIDdiOGMxMTczOTcxNGQyNzAwNjQ2ZjYzY2IyYjdjMDFhZWVmMDMzMTEgbGVnYWN5LXRydW5rCisyMzMwMSA5YjgxOGFmMGQ3MzBlOWJjMGE1NzY4YmJlOGNhYzVjMjRlYTg2NjY0IGxlZ2FjeS10cnVuaworMjMzMDIgNGM1Y2QzZDFjZjRiNWJjM2M4MWQyN2NiZTlhOGZlODU3NTdlYWQzMiBsZWdhY3ktdHJ1bmsKKzIzMzAzIDYzMTA4MzdjYTUzNDM5MTc3YWE0NjdmZjkwNGJlYWI0N2M5MzNhM2IgbGVnYWN5LXRydW5rCisyMzMwNCAxYTU4Yzc0NjYyZTkzZDY0ZDg2NjllNjdlM2IyNjMyYjM1MmRlODA0IGxlZ2FjeS10cnVuaworMjMzMDUgNmU5M2ExNTg2ODAwYTc5YTVlZjZiMGZkNGI3Yjk4YjhhYjkwMDBiMyBsZWdhY3ktdHJ1bmsKKzIzMzA2IDQ5NjZjZjc5M2I0NGMwNjIzOTZmOWNiMjMxY2Y5YzYyNzhlNjI1Y2QgbGVnYWN5LXRydW5rCisyMzMwNyAwZWU4OTAzZDNmZWQwMTcxMjdjZDE0MmI4NjIwYTFmODRiYmFkMmU4IGxlZ2FjeS10cnVuaworMjMzMDggYmZkNGUwM2FkMjEyZDI0OWRmNDk3ZmRmNWY4MWZlMWVjZjVlYWZkMyBsZWdhY3ktdHJ1bmsKKzIzMzA5IDkyMGM2M2NmY2EwY2RlMzI4MmFkNWZkYmVjNTZkZWM0MGM0OGM2ZTEgbGVnYWN5LXRydW5rCisyMzMxMCA4OGEwM2VhNTc3MTRmOGYxNTVkZmE3ZTYyNDFlMmVhMGUyMzFiMDlmIGxlZ2FjeS10cnVuaworMjMzMTEgMzNlZGM5OTg2MWI5MGQ0ZDNmNWE0MTA0YThmMzFlZmIzN2FjN2IyYyBsZWdhY3ktdHJ1bmsKKzIzMzEyIDViMWFkN2FjYWJiNWJjNTRjZWRkOTQ0ZjgyODY1ZWU3NDJmY2ZiNTUgbGVnYWN5LXRydW5rCisyMzMxMyBjMmJmMGIxMzM4MGUzMDRmMGQ2NjA5NzY5ZTk0NjgzZjUyYTQ5M2YzIGxlZ2FjeS10cnVuaworMjMzMTQgZDJkODM1YjM1ZDQ3NWU1Yjc1ZDJmNGEzMTA2ZGYwYzRkMWM1NTNlZCBsZWdhY3ktdHJ1bmsKKzIzMzE1IGNjZWMwMmJmZTlhMDU4ZjY0NDk2OGVhZGFjNTg2NmE1NjBiZTYwYjAgbGVnYWN5LXRydW5rCisyMzMxNiAyY2FkZGI4MmZmZWEyZjUzYmI5OGFmMzU0NzRlYTZkNWY1MDVlNDlkIGxlZ2FjeS10cnVuaworMjMzMTcgNjM5MDEzOWFkMDgyNWRjYjFkYWRiNzJlY2JjMTM1MmI2OTRhMmVhYyBsZWdhY3ktdHJ1bmsKKzIzMzE4IDlhNTk5YjFkOWQxYzg0YTc3NzhjZWRlNTczMmQxNGM5YmMxODkyYTQgbGVnYWN5LXRydW5rCisyMzMxOSBlZjMwMzRhNjBhM2VjMmVmMjlkYmIyMGU0MzAzYTQyNWZiZWFlYTEzIGxlZ2FjeS10cnVuaworMjMzMjAgZjg0NjkxYjExNDAyN2E5YTk5MTk3MmJkNzNiOThkMmI0MTQ3NzMxZSBsZWdhY3ktdHJ1bmsKKzIzMzIxIDE0YzgzY2Y3ZjMzODJlMmZjMGYwYjE5NTBlNTY5YjVjYzg5YmQ3NTQgbGVnYWN5LXRydW5rCisyMzMyMiAyOTlmNWZjYjBiYTgwZWNkZDZkMGJhNmVkY2M2NjkwYWFlNmIzM2MwIGxlZ2FjeS10cnVuaworMjMzMjMgNjllODIwNjI0Y2JjMzE2YTM5ZTE4OTVlMGVkMGEzZDlkOWRhMzgxMyBsZWdhY3ktdHJ1bmsKKzIzMzI0IDkwYTRmMjNhYmRhN2RjZjA2MmQxZTM1Y2E0MTIyZTNjYWU1NGM4MDAgbGVnYWN5LXRydW5rCisyMzMyNSA5Mzk3N2YxNzU1MmQ1OGU4MzkzY2VjMDAzNjdlZDk0MGNjMGY2ZDY0IGxlZ2FjeS10cnVuaworMjMzMjYgZTAxZGU4YmM1ODEzNzc4YWY4YzU3NmM5ZmYyYTMyMGFhMGI3YTY3MCBsZWdhY3ktdHJ1bmsKKzIzMzI3IDM5OWQ3NzdhZjA0ODUxMjY3ZGQwNzA0NGUyMGExYjM5YWI5NWYwYzEgbGVnYWN5LXRydW5rCisyMzMyOCBkOGFiZjljZTMyMjUzMjU2NzljYzM4NDdhZGVjOWNjZDIxZDM4ZWY5IGxlZ2FjeS10cnVuaworMjMzMjkgNTExNzc2ZDZkN2Q4Njg1YTg2YTQyOTcxNTBiZTMwNmFhOTRhMGZiMCBsZWdhY3ktdHJ1bmsKKzIzMzMwIGFhZTVjZjdlNTg2MTVjNDdjYjE1ZmM4NThkNzFiZDRhM2Q3MzI3NzIgbGVnYWN5LXRydW5rCisyMzMzMSBkOTI1MGQ1Yjc5YTc1OTI2Y2IxYjY1MjI2YmMzZGM4NjEwYTU2MzJiIGxlZ2FjeS10cnVuaworMjMzMzIgOGYxOWIyYThjNjNjNjc3OTcwZDI3NDk2N2MwZDIxNTJkODJiMzQ0YyBsZWdhY3ktdHJ1bmsKKzIzMzMzIDAwNGNkZWZiNzBkMWY5ZGJjZjJkMjk1N2QyNDllNmNmMjNhNTdlNDYgbGVnYWN5LXRydW5rCisyMzMzNCA5Mjk4ZmVlNDQ2Yjc3NDBhZDNmYzZjYWYzNDgwOTBlZGNkNDhmMWE3IGxlZ2FjeS10cnVuaworMjMzMzUgZjQ4YTQxYzk3MDIxNTY5NDIyNWEyOTY1YTQ5YmUxY2ViNWNjY2QyYyBsZWdhY3ktdHJ1bmsKKzIzMzM2IDQzOTdmYTUxNTJmYTQxNjY4MWI2NTI2ZTFhZmMyMzM1NmY2NWY2ZDAgbGVnYWN5LXRydW5rCisyMzMzNyAxOGRmMzJmNmNlYTEzZTNlMjdmZGY0ZGExNGNmMDAyMjZlNGVhN2ZjIGxlZ2FjeS10cnVuaworMjMzMzggZmRmYzE4ZDU1NjE1MzA4OWQxMWU1MDlkYmEzNzhiNzNmYjFmZmI5MiBsZWdhY3ktdHJ1bmsKKzIzMzM5IDQ4ZTkzZWYzYzViNzBiOGU0NDNiN2QwY2U2MTZkMDdiMTg1MTUwNTcgbGVnYWN5LXRydW5rCisyMzM0MCAzMTkyYTMyZmQ0OGY2YzRjOTg5YmQxNzBhNDIwY2U1ZmU5MDMxODIwIGxlZ2FjeS10cnVuaworMjMzNDEgZGFkOTRjYTQ3ZTIxMzkxNGU0MTFhZDQ1Mjk5Y2ZjN2U3ZmY1Mjc4ZiBsZWdhY3ktdHJ1bmsKKzIzMzQyIGI0MTYxY2U1ODVlNjRjYTFjOWQyMWVkMWFiOWFhNGQ4MmZlZWNlODQgbGVnYWN5LXRydW5rCisyMzM0MyAzODZmYjI2ZTA4NzQ3ZWJmNTVlZjIwYmViOGRhZjQyZTVlY2MyNzE4IGxlZ2FjeS10cnVuaworMjMzNDQgMzcxOWJhNWVlODQ0NmE2ZGQyMzFkZWE3ZTRlZjUzYWFjMGMxNzQ0YyBsZWdhY3ktdHJ1bmsKKzIzMzQ1IDkzM2JmNjhlMjY1MDNhOGMyYjM2YzE4MjNjMWM3N2VjMmQ3YTdmZmEgbGVnYWN5LXRydW5rCisyMzM0NiA0MGQ0ZDFjZDZjODRhNDE2MTY2ZjZjZTI5OThkNGU0YTNlMzY0MGZjIGxlZ2FjeS10cnVuaworMjMzNDcgYjUyYTYzMDUyMzA2ODY5YjJmNWY1NjlkNDkyNWE1NTE2M2YzMjhkZiBsZWdhY3ktdHJ1bmsKKzIzMzQ4IGIyOGMwN2ExYjQwZGY5OWU1MTMzMjNjMmUyYmVjZjc3OGE3NGEwZmIgbGVnYWN5LXRydW5rCisyMzM0OSBkNjU4YTE1YTkwYWQ5NTkyODZhNjI3MmVmODA1ZDYwYWUxY2JmMzk3IGxlZ2FjeS10cnVuaworMjMzNTAgMjg5YzFhNzAwMjg2NGI5NWMzZjU5ZWNhMzQ2MGYyMTUzNDk2Yjc0OSBsZWdhY3ktdHJ1bmsKKzIzMzUxIDE5YWJjMzM5ZDNmY2YyZjFiYTkyZGEzMDI3Mzk2Yzc3MDE3OWVjMTkgbGVnYWN5LXRydW5rCisyMzM1MiBhMzgxYWIwZjlkMjgzYmJhYjI2NmM4ODg0Y2ExYTMzNjEzOTVhMmI5IGxlZ2FjeS10cnVuaworMjMzNTMgNTZiZGQ5MGM5ZmQ2ZGQ4NjY2Zjc0MjczYThiMDAyNWJiNDEzOTdjMiBsZWdhY3ktdHJ1bmsKKzIzMzU0IDgxOWI2ZmY3ZTU2YTZiNWZjNjAxODQ2ZmFhMmU1MzdkYzdmMzhhNzggbGVnYWN5LXRydW5rCisyMzM1NSAyYTY4YzZlMWY5YzU0YTlkYWFjMjY3ZDdkYzk3MTVkNjY5MWJmNDc3IGxlZ2FjeS10cnVuaworMjMzNTYgYWIxYWYxY2EwMzBjNWM1YmM0MGRhNGIwYmJjZjBiNGUxZmFiNzM5ZSBsZWdhY3ktdHJ1bmsKKzIzMzU3IDYwMDlkODU5ZmI1NzNlY2IwYmFmMmMwZDhmZmY2ZTIzOTM2NTRhNzYgbGVnYWN5LXRydW5rCisyMzM1OCBkMTkxMDIyM2IyNDdkZjNkMzAxZTMzOGNlYzFkYzZlN2E0OGZkMGFlIGxlZ2FjeS10cnVuaworMjMzNTkgOGExNjE0Y2ViMzc3N2VjMGJhZTBjNWExOTRiZGI3YTlhZjZmMjU2MyBsZWdhY3ktdHJ1bmsKKzIzMzYwIDNkZjRiOGNkYjhjNjg3OWMwYmViZDAwN2E4MTMwMjg3ZGUwYWQyMmUgbGVnYWN5LXRydW5rCisyMzM2MSA4ZjI1ZWMwMTAxOGI1YTg2NWQ2NTc0OTQ1ZTI2YjVmZDVmNDYxN2M3IGxlZ2FjeS10cnVuaworMjMzNjIgODMyMTZjYTY3ZWJlYTFiMzQwZWY2Mzc3NDI0ZmNkMGQzOWZlNTAzYiBsZWdhY3ktdHJ1bmsKKzIzMzYzIDMzNGJmMGJhZWViN2ViOTFhMGU1OTU2NDMxZjZmM2RlODQzZTFhNTggbGVnYWN5LXRydW5rCisyMzM2NCBkN2Q4NGVhZTkyYmEwYTEyOWIxNjcxMTM0OTg2MTRmN2U5NGExM2Q1IGxlZ2FjeS10cnVuaworMjMzNjUgYmVmYTcyNThjMjAwZjM4ZTg5ZTE1YTNlZTZmNTVjYjBjOGM2NDQ3NiBsZWdhY3ktdHJ1bmsKKzIzMzY2IDgwZTM2ZGFiMjExMTdhNDQwYjFmZDdhOTM4NDJmMzUyNjk4ZDJjN2UgbGVnYWN5LXRydW5rCisyMzM2NyBlOGEyOWQyM2M3MGE4ZDNjYmNmYjAwMzIzY2FkMmU3ZDYwZmVlZTY3IGxlZ2FjeS10cnVuaworMjMzNjggMTJhNzg3ZmI3MWRmMzUyNmUwMTg3ZWZkYmMzNzgzOWQyMjIxNWE1OCBsZWdhY3ktdHJ1bmsKKzIzMzY5IDIzM2Y5NjA2YmE4ZTI0ZTAzMjE3NGYxNzgwYjkzZDExYTUxOGQ1YjYgbGVnYWN5LXRydW5rCisyMzM3MCA4ZWM5NWNlNzg3MzU4MzY2YWJiZmVkYmM2Yjc2ZDJkNDI0M2FlNzBhIGxlZ2FjeS10cnVuaworMjMzNzEgNTU4NzRkOGUwZGZiYThhMGQ2Y2E1OGEyZjVjNjYwYzEzYjkxZmQxYSBsZWdhY3ktdHJ1bmsKKzIzMzcyIGUwMjZmNTE3ZjY1NWI0NTA5NjAyZGQwMDcyODI4NWU2MjM0MjcxNTkgbGVnYWN5LXRydW5rCisyMzM3MyA4YzM3MTQzNWY2OTNjMGZiZTZkOGZhODc0N2RiOWVjOTczZWQwZTk0IGxlZ2FjeS10cnVuaworMjMzNzQgYjlmNjBiODI1MjYxYTBmOTVkNjMwODQwNjMzZmVhMmJiNGNhMDUzYiBsZWdhY3ktdHJ1bmsKKzIzMzc1IDAxNzZmNjFhZjg0NWQ0YzhjZjJiZDJhNTBmNDk0NzBkY2RkMDU0Y2UgbGVnYWN5LXRydW5rCisyMzM3NiBmODIyYjM1NmMzZDlkZmE4MGE1YjZkYjQ5NDZhNzczZjMzYzVlMDIyIGxlZ2FjeS10cnVuaworMjMzNzcgMDk4MTg2NjEzYjA1N2Q4MWNhYTBlZjg0M2Y1MWQ4Mjg5NGY2MTBiNSBsZWdhY3ktdHJ1bmsKKzIzMzc4IGFlZDYyMTE4ZDYzMmU4OGQzNWJiZjZkMjc3NmM0NGM3NDkxMTRmZTMgbGVnYWN5LXRydW5rCisyMzM3OSA5YzJiOWI3NmEwOGUzZWNkOTk2ODI2Y2Y0ZmQ4ZTdkNWFkMWMxNzBjIGxlZ2FjeS10cnVuaworMjMzODAgM2JjZGI1MTlhYmY4ODExMjkyOWQyMGY2MjY0Nzg3OWIwZmU0YmJiOSBsZWdhY3ktdHJ1bmsKKzIzMzgxIDNmYjI5M2ZhMTdjNTQ2ODQ4OWZlYWNiM2I2Mjc5MGIzYTAzN2JlOTggbGVnYWN5LXRydW5rCisyMzM4MiA2OTcyMDZlNzQ3NjM5YjE4YWE5NGE3OGRlZTgwYjUwNjg1MDU2YmNhIGxlZ2FjeS10cnVuaworMjMzODMgZmRmY2ZmYzIxNTJjNjBlYWI2MjM3ZWVlYmFmYTVlZTEzYTE5OTlmYiBsZWdhY3ktdHJ1bmsKKzIzMzg0IGUzYTJlNjA3NmJjNTI2NTBhMDJiN2FhZDE4MDJiZjcxNjg3M2M1ZWIgbGVnYWN5LXRydW5rCisyMzM4NSA3M2ZiY2M5NTgyOTVmMzk1NjllM2I1MDUzYjA5NTYxMGZlM2Q0MTBmIGxlZ2FjeS10cnVuaworMjMzODYgYTI3NmFlNWZlOGMzMDI5YjJkMjk4ZTc5MTE2NzA4ZjhmNDE2Y2ZiYiBsZWdhY3ktdHJ1bmsKKzIzMzg3IGJhMzcxNDE5MWE3YTJmM2VlYmRhMmI3YTA0MWE0YTRkYzA1Y2Q1NjcgbGVnYWN5LXRydW5rCisyMzM4OCA0NDFiMmUxNTU4MjZjMThlZjcyNjkwM2E0NmU2YjRjYTYzYTBhYzc4IGxlZ2FjeS10cnVuaworMjMzOTAgY2UyN2Q5YzBjMzU4MjMxNTRhZWU5YWQ2Y2FmYjcxNjc1NWVhYjc0MSByMjJhNC1icmFuY2gKKzIzMzkxIGMyNzgyYzM1ZTcyZDc0NWIzNWZjM2YwYzliYjg5YjY3NzM2YTg2MWIgcjIyYTQtYnJhbmNoCisyMzM5MiAzYWFjOTE2YzE1MDVjN2RiNzZmOGRiMDZhMTU5MDgzMWMzYTFlOWY3IGxlZ2FjeS10cnVuaworMjMzOTMgYTk3ZmJjNWIxOGI2ZmMxMWM5ODBjNDhkMjc2YmMwYmI4MmExNWEzZSBsZWdhY3ktdHJ1bmsKKzIzMzk0IGZjYzIxNmM1OGM4N2ZhMmM2MjAxNWFjMzYyODAyMjA3Y2FkMDk2MTcgbGVnYWN5LXRydW5rCisyMzM5NSA3MjdiOTVkZDg2ODg2MTE1YTE1Y2I5NTI5ZjY1N2RhM2MxY2I0NTg3IHIyMmE0LWJyYW5jaAorMjMzOTYgMWM1MjkxMjgwNTRjOGMyMGNlMWE1OWNkMjkyYTk5YzA4ZTNiOTc4MSBsZWdhY3ktdHJ1bmsKKzIzMzk3IDgzMjU2YmVmMGQ3NWUzMTM1ZTQ4NzE0YTY5ZDY2N2ZlNWYwMjFhZDYgbGVnYWN5LXRydW5rCisyMzM5OCA3MGU1N2Y3NTk0MDI3ZDI4ZjhmY2Q0NGFiMTUxOGVhNjY5MzNkYjVjIGxlZ2FjeS10cnVuaworMjMzOTkgZWMyZDRmOTliYWRjNGI3MTNjZDFlYjIxYzZiZTEwODhjNGYyYjI2ZiByMjJhNC1icmFuY2gKKzIzNDAwIDY4OTAwNzE4NzdkYzg2MGNkZDk2M2E0ZGE3NDVlMWFlOGY5OWFhOGYgcjIyYTQtYnJhbmNoCisyMzQwMSAyMjVmMTdlYzg5MzIzYThiMTdiODk1MGNlOTkxYzQ0YjllYWM1ZWEwIGxlZ2FjeS10cnVuaworMjM0MDIgOTU2MGY4NmM0ZmE0YTdmMzBkMzQ5MzdjNjYzNzFiYzQ3ZDI0OWFjNSByMjJhNC1icmFuY2gKKzIzNDAzIGNhOTViY2U1YTMzZWZmZjdiOGIzY2E4YWY1MzU2MTgyYTE4ODIwNzMgbGVnYWN5LXRydW5rCisyMzQwNCBiZGU5ZGViNTlkMWJjMDk1NzMxZWI3YmQ2Yjc5ZWM1OTc5NDEwM2NhIHIyMmE0LWJyYW5jaAorMjM0MDQgMmFjNmMzMmZjMjA2ZGY5MTRkYzJmOWQ0NTZlNzljNTk2NTM3MjhiNiByMjJhNC1icmFuY2gKKzIzNDA2IDg5ZTVmMTBjOWY5OTQwMGYyODcwZWQ4NzBiODZiOTNhNDNmNWNiNzAgbGVnYWN5LXRydW5rCisyMzQwNyBiOTRiYzdlYzdiZTg1MWViZWY0ZGYzNDQ0ZmMyOWVmNTY3NjRmZmUzIGxlZ2FjeS10cnVuaworMjM0MDggZTc4YzhmNGUyYjhjOTQzNTUzMzA0ZTJiZjJiMWRiYzdhMzVkMGExMiBsZWdhY3ktdHJ1bmsKKzIzNDA5IGM2ZmM4NzgxMDU1MTQzYzA0M2VkM2Y5ZWNmM2RkNTAzZGE1OTMyNmYgbGVnYWN5LXRydW5rCisyMzQxMCBiNWNjNTg2YWMyNWFlZDBkODJmMDYwMWQ1YzlhMGEyMmNiMjUzZmE3IGxlZ2FjeS10cnVuaworMjM0MTEgODhkYTM4YTVmMGJmNWE4NTI2MmY2NGZmYWZjYzcyZDBjNGE2NzQyYyBsZWdhY3ktdHJ1bmsKKzIzNDEyIDIwNmIyNWZlYmRlM2NlYTAwMDQ0NDVlMjZlYmM1NWZiMDczNzg1YzYgbGVnYWN5LXRydW5rCisyMzQxMyAxZjRkOTllN2IxZTc1NDk5Y2MzNTNiZTVhOGRjNzFmOWViYWRhMzk0IGxlZ2FjeS10cnVuaworMjM0MTQgNTcwN2RhOTAwOTM2MjliZmY2YjFiZmZmZmY1MTczMGEzMTE1MzcyZCBsZWdhY3ktdHJ1bmsKKzIzNDE1IGM4ZmIwMGY1ZWI1ZTVkYThlOWI0MDlkOTUwYzRjZTdmZGQ4ZmYwYzkgbGVnYWN5LXRydW5rCisyMzQxNiA3MmE1MzQ3ZDJmOWFkOTllOGQ5MDRkMDQ4ODU2M2YzY2Q4MWE0NTNiIGxlZ2FjeS10cnVuaworMjM0MTcgYzY4ZWY0N2IxNzA5ZGFlNjZkYTNhY2ZkYzc1M2UyNTZlY2NhZDk5YSBsZWdhY3ktdHJ1bmsKKzIzNDE4IGQ1ZDAwMDg2MmE2NjlhOTg0NjQ2MGM3ZTEyMDM3MWQ1MTE3OTJiMTEgbGVnYWN5LXRydW5rCisyMzQxOSBiYmIzNTNkMzFlMjU0MjVjOGVjZDZhMzRjNGIwZGFhYTBhYTEyMDFiIGxlZ2FjeS10cnVuaworMjM0MjAgNDE2ZjBiYzIyOGU4Yjk0NTk3OWQ4OTQxNWI2ODY5N2QxYTFlZDRjOCBsZWdhY3ktdHJ1bmsKKzIzNDIxIDhiYTMyODcxODNlMDViZTFhZDYxODliOTI5YzAwZmZiODc1ZjZkOGQgbGVnYWN5LXRydW5rCisyMzQyMiAyYzhhNWExNzJmNDdiYjM1YTg1YTEwZDQ1ZGE4MmFkNGFhZTUyM2QyIGxlZ2FjeS10cnVuaworMjM0MjMgNmZmNTMxNDM1YjM0ZGM3MTk4NGZhZGUwMjE3NThkMjIyYzcxNmRjNiBsZWdhY3ktdHJ1bmsKKzIzNDI0IGJlYTY4NjQ0OTU5NTYzNTQ4MmIwNGJiZWI4ZmE0NjhjYjMyNDQ3MTYgbGVnYWN5LXRydW5rCisyMzQyNSBlZGIwYjgwNWU1NDk4ODkwYWIwMGFhNTJmNDBhYTllOTNkOWU5ZmVhIGxlZ2FjeS10cnVuaworMjM0MjYgM2IzNTZmNzc5MjJkOGRiNWQxMzM4M2U3M2QwMWY2OTYwNjYzODhhOSBsZWdhY3ktdHJ1bmsKKzIzNDI3IDQ3MGMxYzcyYTBhN2E1ZjBiOWJhMDQ5MGE0YmE0NDdjMzYzNjE0YjEgbGVnYWN5LXRydW5rCisyMzQyOCA1YjRmNzMyMWQ5Y2JmODFiNmJkNDUxYTY1YWFjYWU5NGU2NDJlMzhhIGxlZ2FjeS10cnVuaworMjM0MjkgZGI4MmMwYjQwZGZjNDBmZWUxYmVkZGI1ZmRlMzZmNjEyNmY4MjhkOSBsZWdhY3ktdHJ1bmsKKzIzNDMwIDY1MDhhZGJkMGJiMWJiMjY2Mzc0ZDdiNDk3MjM4N2M3ZTVkMjYxMjcgbGVnYWN5LXRydW5rCisyMzQzMSAwMDZjZmFhYzAyOWE3Njg0YmM3YmIxODkzNDY0MWQ5ZWYyNmY1NjBmIGxlZ2FjeS10cnVuaworMjM0MzIgMDkxZTllM2NlZWFmMDdiNDI5ZmIxNTExYzRlZWNhNTA1MTM0NGNmMyBsZWdhY3ktdHJ1bmsKKzIzNDMzIGFiZDZhMDhiMmMzMjcxYWZkOGYwNDRiMjE5MjcyZDM0MjBhNzcwZmUgbGVnYWN5LXRydW5rCisyMzQzNCA1ZmIwNjkxZmI2OTAzOTFlMzdjMjE3YzE5YTliMTI0MjAzMGQwNjRlIGxlZ2FjeS10cnVuaworMjM0MzUgODMxMDY2MzNmOTMzMzRmNTcyODY3NGE3ZTM4ZDJiZjkyMTQzMjljNCBsZWdhY3ktdHJ1bmsKKzIzNDM2IGRlM2U4NTE4MThhNDMyN2ZiOTljZDBjNWYzYjdmOTExNzAzZDVkMjYgbGVnYWN5LXRydW5rCisyMzQzNyBmMTAwNzkzY2E5YWZjNzBmYzNmYjk4MGI4MWI5Mjg2NDFlZDQzYzVmIGxlZ2FjeS10cnVuaworMjM0MzggOGY3OWZhNTM3YmQyNGIzMGEzOGMxOTc1Y2E2OTA1ZDYzNjY2NmY5NyBsZWdhY3ktdHJ1bmsKKzIzNDM5IGZlZjI4OWQ2NmU4ZTE1ODIzMTI5YTdjNzc1ZTQ1NWZiZWIzZjM1MjYgbGVnYWN5LXRydW5rCisyMzQ0MCA3NTRiODE2Mjg0ZDEzOGVlY2Y2Nzg3Y2NiYWY4M2Q3OTQ2MTVmNDFkIGxlZ2FjeS10cnVuaworMjM0NDEgODc5OWRmYTBmNzZhYzQ3YzUxMmFmOWMyZTVkYmZjMDJkZDU5NmNmMiBsZWdhY3ktdHJ1bmsKKzIzNDQyIDAxYTVjNDNmMTg5NGNkZjFjMTM2Zjk3NzY1NzkzMzA5N2ViZGE1ZDkgbGVnYWN5LXRydW5rCisyMzQ0MyA1ZWNjMDJjMWVkYWMzYWM2Nzk2MGRiOWMwNmVlM2RmZTYzN2U0MzAzIGxlZ2FjeS10cnVuaworMjM0NDQgNzg0ZTIxYmRkOWEyZjlkZGEzNGZlNmMzNjIxMjA2MzUzZjdhMmU3ZiBsZWdhY3ktdHJ1bmsKKzIzNDQ1IDlkZTI5MTY5NGIxZTFiZDFjZmNjZGVhN2IyY2VlNjAwZThjODhlMzEgbGVnYWN5LXRydW5rCisyMzQ0NiA2ZDczYjU0ZDkyMDUyMDE0ZTIzMWJhOTc5Y2IzOWI2NTM1NTA3Mzk4IGxlZ2FjeS10cnVuaworMjM0NDcgYzZiNjE4OWE4Mzk3NjA4YzY0MjRkYzg0OWViMGM1ZGZiOWM0NWU1MyBsZWdhY3ktdHJ1bmsKKzIzNDQ4IDRjNjkyMmYyNjZmMDc5NGZhODAxNTUyYjk0MGY3NWQzNWY2YjQxZDkgbGVnYWN5LXRydW5rCisyMzQ0OSA4ZDc5ZGIwMWIyYmEyNWRiOGVlMWI5MjNkOWE4YTQ1MDcwNTBkODkwIGxlZ2FjeS10cnVuaworMjM0NTAgYzc4MTdiNjA3NGI1ODA0NGNhNjhiN2M5M2MxYjAyMjRmZTE5Mzc5ZiBsZWdhY3ktdHJ1bmsKKzIzNDUxIDhlNGU0OTEwNTU5NTRiYmY2N2IwNDhhN2I3NDU4M2Q3ZTMxNWYwMzcgbGVnYWN5LXRydW5rCisyMzQ1MiA2ZGRhNDk4Y2NjYzQ4NTVhMjJkZjAzMjUyYjMxZTVmNjU5NDg1OTZkIGxlZ2FjeS10cnVuaworMjM0NTMgNThiNGNmYTU0ODcxOTFjMWZiMmY4MmYwZThiYTAxOTk5M2Q2Yjg0NSBsZWdhY3ktdHJ1bmsKKzIzNDU0IDU2NDJkMzdmMWIxNjFkNTU1MzU4NDdjOTEzMjk1MzEwNDk0MTdhODggbGVnYWN5LXRydW5rCisyMzQ1NSBlOTQ2YzVkMmZlMTUxZjViMWIyNzUxZDgzYjBhOTBmZjlmM2RmZGM0IGxlZ2FjeS10cnVuaworMjM0NTYgNDlhMTNlNmU5MzVkYjI5NjZhMjVlZDEwMzQ0MTdlMGM2NzE0ODFhZSBsZWdhY3ktdHJ1bmsKKzIzNDU3IGJlNTQ4ZDRiZTg4OGY0N2VlYzg2NTkwYzhiYzgyMTkyMmNjZmZlMjggbGVnYWN5LXRydW5rCisyMzQ1OCAyMTA2MDMxOGY1MzlhZjA5OWFhNGM3MTc2MTgyOTgzNTVjZjU3ZWI2IGxlZ2FjeS10cnVuaworMjM0NTkgMzQwOGQ5MjliYjk0MGFkNjEwZDJiNjk0ZDY2Yzc5MzkwMzUwMTUzNSBsZWdhY3ktdHJ1bmsKKzIzNDYwIDZkZTRlZTQ3Nzk0OWY4ZDc4NjM3NDFmMzk0MTg1MmMyMDMxMzA0ZDYgbGVnYWN5LXRydW5rCisyMzQ2MSBiNGYwZjEwYTZjNWY0ZDM3MjEyNTE4YzYyZjJhYTQyNTNkOGRhZDNhIGxlZ2FjeS10cnVuaworMjM0NjIgNTc4YzFiYjcyODM5OTI1NjU5NjRhMDhiMWU0Yzg5NjJmODU3Mzc5NCBsZWdhY3ktdHJ1bmsKKzIzNDYzIDcyZWU1NzM0N2FlYTY1MzM0MWFjNmY3NWM3M2ExMmUxYjllOWU3OGMgbGVnYWN5LXRydW5rCisyMzQ2NCBmNWQ3OTFjMmFjYzk1MGVlYjhlZmVjODU1ZmYyMzE1NGI3MzJlMTAxIGxlZ2FjeS10cnVuaworMjM0NjUgN2Q1YWU3ZDdjN2E5NjM2ZWFjN2MyYmRkMGVlNGFjNDIyZGMzZDUxOCBsZWdhY3ktdHJ1bmsKKzIzNDY2IGU1YzNjYTdiNTA5OTI0YjVjNDU4MjE3MjAxMmZlMzNiZjUxY2QxM2UgbGVnYWN5LXRydW5rCisyMzQ2NyA5ODczYzk5YzQzZjc1MzY3ODc0M2M0YzMzOWZmNmVkOGI2OTc0MjE0IGxlZ2FjeS10cnVuaworMjM0NjggOGU2ZjYwNGIwNzk5MzdiYTg3NGMxN2U3NTJkYzJkOGEyMjZkNjkzNSBsZWdhY3ktdHJ1bmsKKzIzNDY5IDAwMTUyZTY4NzQ1YTUxOGRmZTJlNTJmNjU4OWMxMzRmNGE3NWYxMjUgbGVnYWN5LXRydW5rCisyMzQ3MCAyMGJhNDJjY2IzNmY2NzY1NDkyYjg4NjgwMmUyNDVhYjMzNjliNDE3IGxlZ2FjeS10cnVuaworMjM0NzEgZTJkYTlhOTI5YWNhYjU1MjkwZTllNzY4MjViZGMyZDZmYzg2ZjgzNSBsZWdhY3ktdHJ1bmsKKzIzNDcyIGJhNWFhYTZiYzFlNTZiNWJkNzYxMWZkZTAxZTk1NjhkODM2N2MzZWIgbGVnYWN5LXRydW5rCisyMzQ3MyBlN2VmODgxMzg5NDE5YTY4Njc3MDg5MjAyMTliMTdiNGFmNThmNTBmIGxlZ2FjeS10cnVuaworMjM0NzQgNjliOTQxZDEzMTc2NzUzNWY4OTFiMTBjOWEwM2FmYmM3N2UxMmRiZiBsZWdhY3ktdHJ1bmsKKzIzNDc1IGIyZjk1N2Y5YzZmNDEzYmNmMzk3OWYwMjExY2JhN2VhZTdkNjc4OGQgbGVnYWN5LXRydW5rCisyMzQ3NiBlM2Q3NTc3ODYxOWUzZGM2YjdlZjYyOWE1ZjY1OTdhNzNmNWU2YmY3IGxlZ2FjeS10cnVuaworMjM0NzcgZDA1MzcyNmZiMDFiZGM2NGFhNThiYTc0MzAyZDk2ZjkzYzFkODNjNyBsZWdhY3ktdHJ1bmsKKzIzNDc4IDk2OThiNzFiMDAzMTVhYjlhYjczODk1YmM0ZDY3NDM0MmRiOWNiMTUgbGVnYWN5LXRydW5rCisyMzQ3OSBmYWNlMWVhYTY4Y2E5YjVhZWVlZmU2ODI2OTU4MDE2Y2RhNjAxYzQ1IGxlZ2FjeS10cnVuaworMjM0ODAgYTVhMzMwNjQ2YzEzMmFjMmY0M2RlNTBlYWM4YWMzYTNlZjBlZWI4ZiBsZWdhY3ktdHJ1bmsKKzIzNDgxIGMwYTZmNTM3NzNlMzUzY2U5MmEyZmE4MTEzNDI2YTZmMzUwZmViMTkgbGVnYWN5LXRydW5rCisyMzQ4MiBiZjU1NzRmNGY0MWY3NmZkNjRlMGFiM2MxZjc0Y2NiMGExOTJmMGNkIGxlZ2FjeS10cnVuaworMjM0ODMgNWFjZDJhODFkNmZhNzE0Njc3YTg3ZTAyMDU0ZjEzMWMxODVkNWM3MyBsZWdhY3ktdHJ1bmsKKzIzNDg0IDBiOTkxNzRkNmIxNzg0NTg3NmJlNzg5MzU1YTc2Y2Y1NDIzNGMyYTcgbGVnYWN5LXRydW5rCisyMzQ4NSBhYmFmOWVhMmU1NjA3Mjk5NTA5NjJjN2UxNzM3ZDRkY2ZlYzU1ZGFiIGxlZ2FjeS10cnVuaworMjM0ODYgYTRlZjAzYjVhOTI4NmQ5ZGM5MWI1MTFiMDBkMTlmMDg3MzBmODU1MCBsZWdhY3ktdHJ1bmsKKzIzNDg3IGE4MWRiMTI5NWE5ZTIyNzhlY2ZlYTIwYjk3N2Q1Y2VkZmZiYjBkNDUgbGVnYWN5LXRydW5rCisyMzQ4OCBkNmVhZTY0ZmRiNWFjMTg2MGY3YWY5YjUxMzhhZjA2MmIyYzdiMmM0IGxlZ2FjeS10cnVuaworMjM0ODkgYWExOGMwZWNjNGZiNjc4NDdlZTQ1NDczOWFjNWQ5ZDFiNmU4Y2JjNCBsZWdhY3ktdHJ1bmsKKzIzNDkwIGFiNTA0MjA1OGI2ZjFlZmVhNDBlNjk1MmQzN2RkNjc2NWVkOTA4YjQgbGVnYWN5LXRydW5rCisyMzQ5MSA5MmY4NjQzNmI2YmU2MzNkYTMwYTM4ODg2MGVkNGIxZjYyMjRjMDFkIGxlZ2FjeS10cnVuaworMjM0OTIgMWJlZTQ5YmM4ZDljNTVlZDllNjE3NWM5NjBiY2Y3ZGY5YzliY2I2MSBsZWdhY3ktdHJ1bmsKKzIzNDkzIDhiYWQ1NWVkZmRmMzkzODFhNjZhZmZhN2I3ODRlMzM4NTQ0M2NiZjIgbGVnYWN5LXRydW5rCisyMzQ5NCA1YTJlN2M3OGQ0MzM0NWViNmM4MjdjOWY2ZGE3OTE2NjZlZDg4NzZkIGxlZ2FjeS10cnVuaworMjM0OTUgNDY0ZjlhMDlhOTEwMzhhOWRjYzg0MTA5MTgxY2QwODQyYWM1YzFiMiBsZWdhY3ktdHJ1bmsKKzIzNDk2IGQ0NzgyNDk0YTFlM2MyOWVkMzI0ZWU1NDYyOWM1NDZkOThiNmViZjIgbGVnYWN5LXRydW5rCisyMzQ5NyA4MTM4NmE3MWVjY2U4NjVjODgyYzdkN2E3NTAzYzdjOWFlZGM0ZjBlIGxlZ2FjeS10cnVuaworMjM0OTggN2VhNjFkYTg3OGFmMTA3M2UxZTgyNThkMTk4NDk0ZTc2YTM5MjAxNSBsZWdhY3ktdHJ1bmsKKzIzNDk5IGFjZmIyNzg2NjJjNjJjMzIwMjI1OTUwNTdlODIwZTk0NWYxZTM2MjYgbGVnYWN5LXRydW5rCisyMzUwMCA5ZWU2YTk4ZjAzMmMzMTNlOGYwODlmYTRlZTU1MmNmN2I4ZWYwYzlhIGxlZ2FjeS10cnVuaworMjM1MDEgZDE2NzFkZGVhY2UwYjY0NDE2NjRmY2RhMDg4ZTk1MWUxYzE0YzQxMiBsZWdhY3ktdHJ1bmsKKzIzNTAyIGU3YWNhMmEzMDJjZDcxMzQ4NDRmOTkxYzNhZDU0YmMwZGZhMDNiNTkgbGVnYWN5LXRydW5rCisyMzUwMyAyNzQ1YzNkYzI0YWYyOWNlNDMwOTZkMDQyYjdiZWRlOGQwYjgwZTFlIGxlZ2FjeS10cnVuaworMjM1MDQgNWM0MjYxZTc0NDc4MGNmMDAzMTFjYTY4MjFkZWU5OGU2ZWQ0MjNlZSBsZWdhY3ktdHJ1bmsKKzIzNTA1IGFmZjZmY2QyNmMxNWM0NzEzMDFiNmRhOWMxMWFhYTVkY2Q5N2QxZjkgbGVnYWN5LXRydW5rCisyMzUwNiA3Y2VkYmFhYTEyZTQ3NGZjNTY4Mjc5MzBhMzBhYmIyNjNkMWQ5YWMzIGxlZ2FjeS10cnVuaworMjM1MDcgMGU5NDBkYTg0NWJmODM3OTA4MmIyNDM2MzU2N2M1YzdmOTMwYjk1NCBsZWdhY3ktdHJ1bmsKKzIzNTA4IDE2NjU4ZGY4NDU2YTY2MjgxYjVmYzBmNTcwNzEyYmY2YzhhOTU4NmIgbGVnYWN5LXRydW5rCisyMzUwOSA3MTYwZDc5NTQ3M2U5MTgzZTc0ZGRjMWIyODNmOWNlZWQ5MTkwYjQ5IGxlZ2FjeS10cnVuaworMjM1MTAgZjNiM2ZkNWFiZmE2MTZkZmEzYzcwZTAzNzNjMjg4ZWM3Mzc1YWQyMSBsZWdhY3ktdHJ1bmsKKzIzNTExIGE0ZDMyOGQ1MDg5NzU5YmNkODE4NWVmMmU1MTllMDc3ZDhmNDY4MmMgbGVnYWN5LXRydW5rCisyMzUxMiAxMGI5N2FlNjkwMjVjNjU0YTczNWM2M2MzNjgwMGU5OTczYzY1NDliIGxlZ2FjeS10cnVuaworMjM1MTMgMWFjZWNjOTA4ZWU4NmI0ZjNkMTA3YzE5ZWI3ZGM1Zjg5NDA0NmI0ZiBsZWdhY3ktdHJ1bmsKKzIzNTE0IDFkYjVhYTY3NjVjMDFiMTQ1ZDFhM2M2OWFhNDMwMjRjM2JkMzBlZmUgbGVnYWN5LXRydW5rCisyMzUxNSBiMGNlOTI1NjFlMDc1YmQ1YWIzNzM4NTQwNDdkYWUzYmVkYjJjM2ZiIGxlZ2FjeS10cnVuaworMjM1MTYgYjg1Y2QxNjNjZDVjZDBlN2QxNTY1ZjE2ODA0YzNlZDc4YTQ0NmYwYyBsZWdhY3ktdHJ1bmsKKzIzNTE3IGQ5NmNkMzhhM2ZlYzcyOTQyNjA3ZGFjMTQyMWNmZjhkOTEyNTEzMmQgbGVnYWN5LXRydW5rCisyMzUxOCBjNjhmMzY0MWJhY2Q4MjcyM2QzMGE1MTVhNzRiOWU3NmNmNTYwYThmIGxlZ2FjeS10cnVuaworMjM1MTkgNjY5Mjg1NTkyMjg4NGI1MWM4OGFiZWIyZTI5YTlkZTViNjc0NzkwYiBsZWdhY3ktdHJ1bmsKKzIzNTIwIDZmMDI1NjljYzQ2ZmRhNTIxN2ZjYjc3NGQzNzA0NDMzNmRiZmU5NWYgbGVnYWN5LXRydW5rCisyMzUyMSBlM2Y2M2E5NTQ1NWY3YzAyNDgyZjk4YmQ1ZmZmY2YzZmNiZTgwNzk4IGxlZ2FjeS10cnVuaworMjM1MjIgMzE4NTg5NDA0Yjk1NzI3ODMwYmViNTM5MmEwMmU3OTQxYzkzY2Y3ZSBsZWdhY3ktdHJ1bmsKKzIzNTIzIDYxNTJmODJlYTgyMzgwMzBkYzU3YWM5MGU0NTcyMDc0ZTQ0ODIyOWEgbGVnYWN5LXRydW5rCisyMzUyNCAxZWE1YmJiYWI3ZDc3MWRjYTk4OWM2N2EyM2ZiODA2NmVhYWEzOTExIGxlZ2FjeS10cnVuaworMjM1MjUgNTZmMTc4MTA1MzRjMmQzYjU1OGQ5OGI4MjBjYjYwM2M5Yzg2NTFhMSBsZWdhY3ktdHJ1bmsKKzIzNTI2IGRlMjljOGU0ZGU5YjMxNGE4NzU2NDlmNjFiZjM2MmI1YTkyZDEyZDggbGVnYWN5LXRydW5rCisyMzUyNyA4NzNkNTg0YzEyMjEzOTBiOTlmMTVjNmI0NTAzNzA4NDg1YTVlMWJjIGxlZ2FjeS10cnVuaworMjM1MjggZDA5MmFiY2Y5YzRiNzZlZjI4MmNiZGI1YmFjNzllZWE0NTAwMWU5OSBsZWdhY3ktdHJ1bmsKKzIzNTI5IGU0ZTc0OWM0MmY0NjE3ZmU2NDBlZDE0NjkyZjE0MDAzNzZlNmE3ZjEgbGVnYWN5LXRydW5rCisyMzUzMCAyNDFlZjhhOTIzYzc2MzlhM2YxODdhNTllYWU4Zjk0ZjgzNDkxOGIyIGxlZ2FjeS10cnVuaworMjM1MzEgNTkzNGFlZWIzOTdmMGVmZTVlOWJiZGYwYjJiZDFlNzAyMmFhZDJhYSBsZWdhY3ktdHJ1bmsKKzIzNTMyIDA1MjUwNDc2MTU4YTY1NWE1OTAyNDk5YTJjZDQ1ODJmZGQyZmRlNTggbGVnYWN5LXRydW5rCisyMzUzMyA3ZWEwNDAyOWQxYWVhZDdhMjkzMjE5M2M4N2JmYjJiNzIzMjZkY2Y4IGxlZ2FjeS10cnVuaworMjM1MzQgY2U0YTdlNGFkNmM0OGM5ZjAxNmY0YmViMjI1YmE5ODMyMTViN2ZlYyBsZWdhY3ktdHJ1bmsKKzIzNTM1IDYxMmU4NmE0Y2Q5ZjZlYzNhNTE0MDI2MWVhNDBkY2I0MGUyZTNmMTIgbGVnYWN5LXRydW5rCisyMzUzNiBmMDkxNmE2ZGNlZjI3NWZmZTJjYTQ5MDU3MmZkZjE2ZGNjNjU3NDliIGxlZ2FjeS10cnVuaworMjM1MzcgMjI2OWNiMzcxZTA1ZmMwY2I1Y2Y0ZjU0ODBkYTNkN2FiNjg5OTdjYSBsZWdhY3ktdHJ1bmsKKzIzNTM4IGQ3ZDk1NmI0N2QyNDJlMmI3ZTYwZDQ5NWY5YmIyMzFiYzMxYWE4MGIgbGVnYWN5LXRydW5rCisyMzUzOSAxNjdlN2Y5OGI1MWZiMzdkMDE2NDA1MDg3MDM1OTk3ZjBhMTBmMTc3IGxlZ2FjeS10cnVuaworMjM1NDAgNjZhNTZhMjBjZmEzZjZjZTIyNjk1MDU1ODdjZWRlMzU2NDUwZmIzZCBsZWdhY3ktdHJ1bmsKKzIzNTQxIDI5ODNiNTQyNTZjNzIyNWU2MWRlY2JiMmJkNWU1OWRkMjc0ZjU4OTkgbGVnYWN5LXRydW5rCisyMzU0MiBhMjY1ZDhiZDJmMjc3N2MxZTU5NmQzM2I2ZDk5NDI0NjE5ZTU2YmM4IGxlZ2FjeS10cnVuaworMjM1NDMgOGIzZWE3MzM1YzFiZGM2NTMyMDNkMzFjMDI1MjQ4OWI4MWM0MjJhZiBsZWdhY3ktdHJ1bmsKKzIzNTQ0IDk3Y2ZhNDYxZDc5M2QzNWRlNzlmNWJhNWVkNDYwMGQ0NmVlNDY1ZjggbGVnYWN5LXRydW5rCisyMzU0NSAzODBkNGI0ZWU2MDI0M2MyMjNhZTA1YTIwN2UxYzM2YjVhNTk0YjlhIGxlZ2FjeS10cnVuaworMjM1NDYgZTM3NTFhZjBmMWRkMTc4YzI0MDU4NjJkMWVmOWE5M2M3MTZmOGYzNSBsZWdhY3ktdHJ1bmsKKzIzNTQ3IDA0ZjI5NmY3MTFkZjAyM2FmZDFmMjFjOTE5MThmZjkwNDA3ZGQ2OGMgbGVnYWN5LXRydW5rCisyMzU0OCBmYjVmMTIxMTcwMzYwMzUwOTYyNWFkYzMyZmVkNTVhZmU2MDg1OTAyIGxlZ2FjeS10cnVuaworMjM1NDkgY2NiN2FiYzcxNGVkZGE3ZTk0OWQ4MTI3YjgyZmU3YWEwNGRkMmMzOCBsZWdhY3ktdHJ1bmsKKzIzNTUwIGM4NTNkMjQ2ZjNjOGY3MDA0MTA2NTQ3MTlkNWEyNTFhYzFmMmQ4YjEgbGVnYWN5LXRydW5rCisyMzU1MSBmNDg3ODIyMzdmODUzMjg4MDI3YjI4ODY2N2ZlNWY4ZTZiMjQ0NWRlIGxlZ2FjeS10cnVuaworMjM1NTIgNWNjZmUwNDQ5MmFjOWI3MzQ2YmZiNGYzNWJjMDFmZWNlYmQ4YTFlZiBsZWdhY3ktdHJ1bmsKKzIzNTUzIDZlN2Q1YWUyODAwZmM5NDc0MTQwZWM4YmM4MTYzMmM5YmNhOWJiZDUgbGVnYWN5LXRydW5rCisyMzU1NCBhY2Q4Mzc4MjE2YzMxZjFjYzJiNjYwN2JiN2NhYTI4ZTE4ZjgwNzdhIGxlZ2FjeS10cnVuaworMjM1NTUgMTc4YmEzM2Y2N2U0ZThkMWU0NjdkZWQ0YjcwMzUzOTZmYTM0OTkwNyBsZWdhY3ktdHJ1bmsKKzIzNTU2IGE0M2NiNmM1OTA3MGY4MGU1MGM2N2I3ZDk2ZmFhYTU4ZDEwNzVjYTggbGVnYWN5LXRydW5rCisyMzU1NyBiMjg1ZGVjZjA0MjFlYzY2OTkxNDAwMzQ5MGY1NjQxMGMyMzRlMmIwIGxlZ2FjeS10cnVuaworMjM1NTggNDI2YjM3OWExMzhiNDFiNzFhYjc2YTc1ZDlmNDE4M2NkMDg3NzVjNCBsZWdhY3ktdHJ1bmsKKzIzNTU5IDVkMmQxZTJlYzQ3M2IxMDI1MGIxODk0NTA0Yzk1ZGIzMTliMGYxNmEgbGVnYWN5LXRydW5rCisyMzU2MCA2Y2MwYjQ4MDQ5ZWM0YjU5ZWJkNzVlZWY2YzViZDY0NjdhNTRiOTkzIGxlZ2FjeS10cnVuaworMjM1NjEgNzkzOTJhYjJjMDJhOWUyZGQ5YmY5MzFmY2EyMTYxMGY2NTlhZmRjNCBsZWdhY3ktdHJ1bmsKKzIzNTYyIDYyMTE2ODRlZDlkZGYwNzczNjAxMjZhYzk1NDNlY2Q3ODI0OTY0YjggbGVnYWN5LXRydW5rCisyMzU2MyA0MmI1Mjc5Mzc0MGMwZGYxNzA1YTFmYzI5ZGIzNzgyMTI0NzkxNWNiIGxlZ2FjeS10cnVuaworMjM1NjQgODc0YmIxNzA3NGIwZDRkZjhmMzBjYTY5YWUyNTcwMjU3Zjc1ZWExZiBsZWdhY3ktdHJ1bmsKKzIzNTY1IDNiM2VlOTc2MzNjMTFkYjA0OWU3YTJmZjlhZGExNzI0ZmYwNTQ0ZjIgbGVnYWN5LXRydW5rCisyMzU2NiBjNTM0NWMwYWJkNzA2MTkzMDY0MDU5YTc2ZDI3ZGY4YjYzMmM0YzVjIGxlZ2FjeS10cnVuaworMjM1NjcgZmFlYzY5YzExNjQwMzYxYTFhZThjMTlmNzk4ZTU0NmVkODBlYjQwMyBsZWdhY3ktdHJ1bmsKKzIzNTY4IGU0NGNkZWY3OTFlZTg0MDU1YTgyZTViMWNjZGIzZGQ3YzBiYzhmNDUgbGVnYWN5LXRydW5rCisyMzU2OSAwODI5NWVjNThlYTk3ZGRlMTY1YmRlOWJkZGU5M2I1YWU4OWUyYjdkIGxlZ2FjeS10cnVuaworMjM1NzAgMWNhMjI4ZTIxYTk4N2E3MjJmMTQ0NmM4MmVjNzljZmE2YTRhNDU1ZCBsZWdhY3ktdHJ1bmsKKzIzNTcxIGFhNjgxMzQ1YmZhYjEzMzczZDJhZjI5YTVhYjQxNTU4NjQzYjM3ODMgbGVnYWN5LXRydW5rCisyMzU3MiBjYTJiYzVjZGFhOGU5ZWQyMWQ0NjJlMzNkY2I4ZWY1ZWIxYWE4OTlkIGxlZ2FjeS10cnVuaworMjM1NzMgMzI2ZTVhNzJjNjYwMjhlMmJhN2QwYjI2MmM1OTRiNjQ1MmE5MjRhMCBsZWdhY3ktdHJ1bmsKKzIzNTc0IGI0NDQ3YmI1YWEwZWFkZWM5NTZhOTViNzkwM2Q2YTNmMDdlNjllNDUgbGVnYWN5LXRydW5rCisyMzU3NSAxMjM1M2IxMzEyMjRjNmFjYzg1OTk2NjljYzRlMmU4YjcyYjA3ODc4IGxlZ2FjeS10cnVuaworMjM1NzYgMzM5M2Q2ZjgwN2Y1ZDdiNWJhMzFlYTFkOWNlMjliOWY2YTFlNDYyZSBsZWdhY3ktdHJ1bmsKKzIzNTc3IGVhMTkxMGQyYzc4MWRkMGE5ZGRiODBiNDMwZmJhMjczOWVlZDNmNWUgbGVnYWN5LXRydW5rCisyMzU3OCAyODRlYWJlM2I1NTJjZGEzZmNkZDA2OGE1NjY4ZjI4MTYwZTk4OGYxIGxlZ2FjeS10cnVuaworMjM1NzkgN2I0MWY3YTJlNTI4NTRmMjliY2NhMDc4ZDgyNjNjMjhmZjE1MGI5NiBsZWdhY3ktdHJ1bmsKKzIzNTgwIDJlMDczYmM3MjY4Njk1MWEyYWE5MzYwOWU2ZDU4NjIzMzYwZGFjNmMgbGVnYWN5LXRydW5rCisyMzU4MSA0ZWY3ZWI5MGI2OWFjNzRkYzdmNDYwMTkxMWVlZmQ2OGIxNDg1NmUyIGxlZ2FjeS10cnVuaworMjM1ODIgZjlhNjZiMjRiZmZmYmEyZTJmNjA5Njk0MDhhNDBlNTI2NDY1MDE3YSBsZWdhY3ktdHJ1bmsKKzIzNTgzIDEyNTM1NTNmYzNjYzhlYzJiMzE5MGY0ZjQzODNkZTI3ODdjMzJlMzAgbGVnYWN5LXRydW5rCisyMzU4NCBmMjliOGVhMGI2OTU0NDljYjhiMmM0OTA2Yjg1MDI1ODNiYTMyMmFmIGxlZ2FjeS10cnVuaworMjM1ODUgMjY3YzZmZTBhYmMyZWViOGI3ZGIxMjhkZmUzNThjNGRjMDY2YzgzNyBsZWdhY3ktdHJ1bmsKKzIzNTg2IDVhOTg4MDE1NmQ3MTI1MzdlNTRhZjY0ZmNiYmIxYWM5NmUyYmEzZmUgbGVnYWN5LXRydW5rCisyMzU4NyBiZGEyNzRkZGUyN2UxMDI2NGIxMGU1MzhlMjAyYTVhZDE1ZmMxNjAxIGxlZ2FjeS10cnVuaworMjM1ODggNDI5YTA4ZTJmYzc4MmMzYzZiNmNlODkwMmQxOWFmNWY4ZjI3YzQ4NCBsZWdhY3ktdHJ1bmsKKzIzNTg5IDg1ODU1MzVlNDA0YmNhYjlkYjRkMTQ4MzVkMTk4NDQwMzc5Y2JiZTYgbGVnYWN5LXRydW5rCisyMzU5MCBiMzJkNjZhNGI1ZTZhZDQyYjhiNTZjY2ZhN2VkNmI3OTJmY2E5M2I3IGxlZ2FjeS10cnVuaworMjM1OTEgNTRmMDViOWIxZmM0YmJiYTkyZjZjZmU5NTBjN2U4NzgyN2YwZDY4NyBsZWdhY3ktdHJ1bmsKKzIzNTkyIDI2YjVmOGI5NDg3MmI3YWZmNzJhZDc0NzFhMTVhOWZkMDc3ZTJkNjggbGVnYWN5LXRydW5rCisyMzU5MyBhOTc2MzY3NWI3NGM3YTVmYmQyYjU0NDdmMDUzNWQyYTE0MTUwM2U3IGxlZ2FjeS10cnVuaworMjM1OTQgNzlmYmNmZmY1Nzk3MGJlMTZhOWMzYmMwOGJjNGNhYmUxODA1NWEyNyBsZWdhY3ktdHJ1bmsKKzIzNTk1IGM1MjQ3YTM2NmZmNTdiZWQ4ODhkZDQ5NGQyZGNlZDg3YjI4ZTYzNTkgbGVnYWN5LXRydW5rCisyMzU5NiAwNGZlZTcwZmVkOGZlYWI5NGMyMzlkNWE0ZjM3ZmUwMjM5ZmJiYmI1IGxlZ2FjeS10cnVuaworMjM1OTcgODY4OTZiNWYxZWJjMmY4MWIyMTM4YWI0YjBmYWY5NzQ3Y2M3ZDBmYiBsZWdhY3ktdHJ1bmsKKzIzNTk4IGM3MGEyYjU3YTRkZDI1MWVhYzI0NWYxYTVhNjg5NjMyNzEwN2UwOGUgbGVnYWN5LXRydW5rCisyMzU5OSA4MzgzN2FjNWJiNDBmNGQ1YTUxNDA4Nzg3NjUxM2U0ZTczZWM1YjY5IGxlZ2FjeS10cnVuaworMjM2MDAgMWIzZmZkZjEyMTUwOWJmNjQ0MTQxZGZiOTAxZDQ3OGVkZGFiYjE1YiBsZWdhY3ktdHJ1bmsKKzIzNjAxIDRiZjNmY2UzZjZjZWRmNWViZmU3OTMyMmE2YjZmMmU2YWM0MWJiMjEgbGVnYWN5LXRydW5rCisyMzYwMiA3MDk2ZTQ0Y2QxYmQyOWVlMTBmOWM1ZWU4YTZiZmI5M2M2ZGNlOGNmIGxlZ2FjeS10cnVuaworMjM2MDMgODUyMjZkZjlhNWJlOTFlMTc4YTgzYzhiNDFiY2JiMjYxNTEwNzY4NCBsZWdhY3ktdHJ1bmsKKzIzNjA0IDUzYTk1NzJiNjIzNzc3ZTAxYTc5YmZmNjA3ZDhjNzUxZDFlZjZmYjkgbGVnYWN5LXRydW5rCisyMzYwNSAxNGUwZmUxNTI3MTFmYTI0NjdkZDkwZjA3MzdmMDA0MWFmOTVjODMwIGxlZ2FjeS10cnVuaworMjM2MDYgNDRiZWQyNTRkODM3M2NlY2ZjZmJjMGQ4OTk3NDczZGE4MzVjYWJhMCBsZWdhY3ktdHJ1bmsKKzIzNjA3IDdiZDEyMjcwZGMzZTc3Y2RjOWY0ZjhiMjNiMjI1ZTQyNmQyMDUzMjcgbGVnYWN5LXRydW5rCisyMzYwOCAzNmQxNDgyMTRkOGUyN2RmZjQyNTg5MzYxNjNkNDJiMTFhMWM1ZTBkIGxlZ2FjeS10cnVuaworMjM2MDkgNjdhN2E5OWYyZDVhYzM4YzYzNmRiYzAzMmJkNDE1ZDc5NzkxNDQ4NSBsZWdhY3ktdHJ1bmsKKzIzNjEwIDMyZTEyZjhkNzVkODMyNmIzNDY3NDkwNDk2ZDI4OWM2MThhMjBjZTkgbGVnYWN5LXRydW5rCisyMzYxMSBiNzlmZmQzZmNhMjhjOGZmNWE5ZGE4YmVlZGU0ZTRlMzdiODcxNWFkIGxlZ2FjeS10cnVuaworMjM2MTIgNDI1YzZjNTU4ZmFjMWFhOTljNDU5NTQ4YjA0Y2Q1OWQzZTBmY2JmNSBsZWdhY3ktdHJ1bmsKKzIzNjEzIDMzZGFjNjE4MWJlNTdjOGU5MjhmMDEzYjFlYTg1ZjUxMGRiMGIyMjMgbGVnYWN5LXRydW5rCisyMzYxNCAwYTkxNWIyMmUwMDZhYTFjYmIwMGVlZmVjOTFkNDE0MTJkYWE2MWYzIGxlZ2FjeS10cnVuaworMjM2MTUgNjZlNzc1ODViNGJkOTU5NDM3NTIzOTBlOWI5NWU1MGQ2NjYzZDIxNSBsZWdhY3ktdHJ1bmsKKzIzNjE2IDllN2EwYWY0YzBhM2I2YTcxYzQ3NzRkOGI1NjI5ZTNhM2I2MTlhOWEgbGVnYWN5LXRydW5rCisyMzYxNyBkMWM3YjNlZGU0ODE1OTI2MjAyNGQ2ZGYyZjhiMDU1ZjIwZmQ1NzlkIGxlZ2FjeS10cnVuaworMjM2MTggZmRjMTkxNDQwNmUyNmUyNzJmZmI0NjlkOGMyMzU2YzU5ZDI2Zjc3OCBsZWdhY3ktdHJ1bmsKKzIzNjE5IDRkYmI1MDU4MWQ5MDNhNDQyOGI0MTU4Y2U3ODE5MmFlZGY2MDllZDIgbGVnYWN5LXRydW5rCisyMzYyMCBjMGQ2NjI5NjYyNzI3NDY0N2M5Y2ViMjFmNTFjNzJkZjNlNDlhY2Y1IGxlZ2FjeS10cnVuaworMjM2MjEgOTJkNTZhZTYzZWQzZjdkMGRjNTMwZmJhNDA2YWZjNWNlNDQyY2Y5MCBsZWdhY3ktdHJ1bmsKKzIzNjIyIDk4ZjU5N2ExN2M5MDdmOTYyZDgzMmJjYTEwMjRlNWRlNDAwNjA5YzUgbGVnYWN5LXRydW5rCisyMzYyMyBlMTkxY2VlZTY3MmZmZTE1NWY1YzQ4OTE4NjJkNmQ3NmVjYjBlODI3IGxlZ2FjeS10cnVuaworMjM2MjQgOGEwOWM4NTVmOTU3MzA0MTA1ZGI4YjYxMmRhNmMwMmM0MWE1YTEwMiBsZWdhY3ktdHJ1bmsKKzIzNjI1IGM0MDgzMzNkMzdmMDYxNTU2MDJlYjU3MzAyNTIxNWIzMTJmYTNiYjEgbGVnYWN5LXRydW5rCisyMzYyNiBiOTk3YWM3MGU0NDVlZGJhM2ZiNTE3NjNmZDMxMmY4NDkxMGNjYTUxIGxlZ2FjeS10cnVuaworMjM2MjcgNmIxZDhjYjk5MDRhYzAxZDQxMjZmMmQyMGY4ODRhZTEzYzI5ZDAzYiBsZWdhY3ktdHJ1bmsKKzIzNjI4IGIwZDgzMDZjMDljNTFiMGI2OWRjYTg2YzM2MGQ2NDUwNTgwYmU3MmQgbGVnYWN5LXRydW5rCisyMzYyOSBlNDZmNjlmNTc5OGI2ODhjMWIwMmNiYzgwOTZlZWViNGRlNjRiMzZlIGxlZ2FjeS10cnVuaworMjM2MzAgN2JjYWNhNjUzMzg4MjRkNjQ2MjczMmRiZmJjODg4MWMwM2JiYTI5NSBsZWdhY3ktdHJ1bmsKKzIzNjMxIDMwMGIxZDhiZmE0ZGUxZDM1MTMxZGVhODY1YjY5NzgyOWY2YzhhOTUgbGVnYWN5LXRydW5rCisyMzYzMiA5ZTcyYmNlYjU0MGI1NDc0MGY0ZGVhMTQ0ZGIyYWQ5Yjk5NDU2NDFiIGxlZ2FjeS10cnVuaworMjM2MzMgODgzMGJlMzIwOWEyYWQxYmZkM2E0MTY3MDE1NjZiOWFlMmZiMjU3YSBsZWdhY3ktdHJ1bmsKKzIzNjM0IGFiZmQxNzAwMWU4ZjVlZmUxYTczOWNiZjNmMjYzYTdlYTA4ZDhmNmIgbGVnYWN5LXRydW5rCisyMzYzNSA4ZWYzZTk1MTgyYzM2ZGMxM2Q1YjUyZmMxNWQ1NGY4MDU0ZDg5NGJiIGxlZ2FjeS10cnVuaworMjM2MzYgZGJlYzg2M2QzM2Q3ZWEzNTAxNWM0MGUwNWZlZjllOTQ4OTFjYmJjZCBsZWdhY3ktdHJ1bmsKKzIzNjM3IDRiY2MyMzFjMWE0MWE0ZTI5M2QzZTZlMjJiNGQ0NjliNGMxZTgyZWIgbGVnYWN5LXRydW5rCisyMzYzOCA5NDk4Mzk0MmM5NGI5YjdlYWJlMzFlOTI5YTdiY2NiOGM4Yjc4YTUyIGxlZ2FjeS10cnVuaworMjM2MzkgM2FiM2I1MzVkYWYyNDk1ZjZlYTA5ZDJkY2M2ZmNjOTA3OTA1MmM5MSBsZWdhY3ktdHJ1bmsKKzIzNjQwIDA2MWRhMjJmNDIwMzljY2FkYWJkMWQzNGVjNTdlN2Q3YWQ2M2ZhYWEgbGVnYWN5LXRydW5rCisyMzY0MSA5YzJkNDQ0Njc0ZDA5MDFmNTk0ZjVlMjgzNmNmNGM4NTg4OWRhOGY3IGxlZ2FjeS10cnVuaworMjM2NDIgMmY4OWIzNDRmZGIzZGQ1Yzg0YzI3ZGM1OWZiOGFiZjY1YzZmMTdkZiBsZWdhY3ktdHJ1bmsKKzIzNjQzIGFmZjhkMTRiMjhhZGEzZDc5ZWYwYjY1YTUyYWY4OTVlM2E0MjU4ODcgbGVnYWN5LXRydW5rCisyMzY0NCAzYWRjM2ExNGNkZTQxMjdhYzFmNGFlNGRmOWI0MGQ3ZGJmYTI3NjE4IGxlZ2FjeS10cnVuaworMjM2NDUgYjRmODI5OTQxZjNkZjQxMWUxMTQzYTExY2RjN2RkMTgwODJlNjcwNSBsZWdhY3ktdHJ1bmsKKzIzNjQ2IGJlMDg3MzRiMGFmZDIxMDE2OTJhZDg5YTIyNDVkOTExNmE4NmM1OTcgbGVnYWN5LXRydW5rCisyMzY0NyAzYjQ1YzA0YTQ4MzNiZTkwY2U3YzRkNTRiOGM4MzBjODcyMGVlNjE1IGxlZ2FjeS10cnVuaworMjM2NDggMmJhNDAxOGRlMmUzMTA2NDgwOWI1YzZkNTNlMjRiOWY3NzQ0NTc3ZSBsZWdhY3ktdHJ1bmsKKzIzNjQ5IGJlNThlZWU2OWE5NDk0NDNiMGE5ZWVmODg5NDY4ZmJiNTIwMmI0OWQgbGVnYWN5LXRydW5rCisyMzY1MCAzYzAxYzM0ZDA3ZjY4ZWMxNmNhNGM5NTJjNzJhODg3YThkNWFkNWI3IGxlZ2FjeS10cnVuaworMjM2NTEgZjkwOGIwNjNmMjhiNzk3NWU1ZWY4ODViZDZlOTYyYzcyZDgxZGM4ZiBsZWdhY3ktdHJ1bmsKKzIzNjUyIGJlOGNiYTVhM2I3YmU4Nzk5MzBjZGEzZGUzNzYyY2EwMGQ5NmZjYmIgbGVnYWN5LXRydW5rCisyMzY1MyBiNDcxNjgxNzhkODc5Y2JlMzI5MzgwZDdkNzBiNzE3Mjc0ZGY5N2E4IGxlZ2FjeS10cnVuaworMjM2NTQgOTQ2YmViZDAwMTMyYzNiYmQ0MDM3ODIwYmNhYmEwMGRlN2EyMTI4ZiBsZWdhY3ktdHJ1bmsKKzIzNjU1IDc3M2ExMzBiMzMwZWJlYWNlYzkzYjE0NDcwNGZhY2Y2MmM2Mzg5OTcgbGVnYWN5LXRydW5rCisyMzY1NiA4NTNjMjY4YmYyNDc5NWU3YTI1YmVhY2I3NDNhYTMxNTQ2YzEwOGIzIGxlZ2FjeS10cnVuaworMjM2NTcgYzI3Y2Y5MTNiMWQ2OTEwMzBkN2UyZDMzZTcxNDAyZmQ4OGQyMjMyMyBsZWdhY3ktdHJ1bmsKKzIzNjU4IGFkMWYwODEyODBhYTAwOWY1ZTMyZmFjNTM5ZTg5MWQ4N2I4OGVmZDIgbGVnYWN5LXRydW5rCisyMzY1OSAyMDUwODc3YzBjMzYzYWMxODExYWI1Y2EzMTA1NTE3ZjYxNDA1ZjM2IGxlZ2FjeS10cnVuaworMjM2NjAgNzI5NDkzMmQ3NGVjYWVmNWM1M2M5NTZkNThhNDZjMmFlZTZmYTQ4MSBsZWdhY3ktdHJ1bmsKKzIzNjYxIDlmZTk3NTQ4ZDk1MjFmZDhlYTg0OTdiMjhiYmY0YzY5NDczN2JhMzggbGVnYWN5LXRydW5rCisyMzY2MiBjOWEyMTIzMjlkYTZmMGNhMWJjN2UxZjM4YWEyZWU2ODY0ZmFhZWUwIGxlZ2FjeS10cnVuaworMjM2NjMgNjVmNjBkM2ZjZGQ3N2UwMmU3MzAyNWE0NGZmMjIwYzdjMjMwMDQ1MiBsZWdhY3ktdHJ1bmsKKzIzNjY0IDY1NzkwNTYyMDMzYzEzY2JjODJiMGZkNGMxOGVlN2FjMjdhNzhjNDYgbGVnYWN5LXRydW5rCisyMzY2NSBiNzQ2MTBjOTJkOGI4MjZkMGIzYmRlYmViMjdlYzIxMGYyNDEzMzYwIGxlZ2FjeS10cnVuaworMjM2NjYgZjU3ZjE3Y2I0MTA4NjU0MmJjYWIwYTIyMDhjOGY5MjAzYTNkY2Q2NiBsZWdhY3ktdHJ1bmsKKzIzNjY3IGVkMmVlYWI4MDJkMmM0OWJkMTU0OTQwMjczOGYwNWZkOTY3MTdmMDIgbGVnYWN5LXRydW5rCisyMzY2OCA5YWU3OGVmODU4ZTJjYTliYmVhNmZiMDJiMDliNjMyZTFmMWJjNjc0IGxlZ2FjeS10cnVuaworMjM2NjkgYjZhNWZlY2JlYzNjYmVhNmY4Y2NjYzBjMDk2MjhmYmYxODVkNmEzOSBsZWdhY3ktdHJ1bmsKKzIzNjcwIGMzYTkzN2NmNjBhNWY1Y2RhN2Q2NWJiMzE1MTQxYWFiYWIyMzk4NDEgbGVnYWN5LXRydW5rCisyMzY3MSA2YjEwNDA4M2Y1ZjMzYTkwYjhlN2NmMTdiNmE4MTAyZTU1NDkwNTNjIGxlZ2FjeS10cnVuaworMjM2NzIgNDY5YThlMWY3ZWRmNTEzN2YwYzMyMjE0Y2I4MjQ4MzcwYzI3YWVjNSBsZWdhY3ktdHJ1bmsKKzIzNjczIGI5ODE4NWM4ODJlNGU3NmZhMTkyOWE4YzFhNTg1ZGRmNGE5YmY2OTAgbGVnYWN5LXRydW5rCisyMzY3NCAyYTRiYjdkMTliNjAzZmU4NTZkNDg1ZmZjM2M1NTQzNDU4NjA2NGQ2IGxlZ2FjeS10cnVuaworMjM2NzUgNGRhYjYxZjQ4NDU4MTcyMWZiMDlkY2JlNjI3Nzk3YjZkNWZkYzlmZCBsZWdhY3ktdHJ1bmsKKzIzNjc2IDY5OGJmN2MyMmJmZWJhNjJjZWVjZTc5YzRhZTk4Nzg0OGE1Mjg4NWQgbGVnYWN5LXRydW5rCisyMzY3NyAxY2E2MjdjNGMxMDVmMjFmYmQyYzI3ZTk1NWQzOTc4ODM1Y2Y1YjE4IGxlZ2FjeS10cnVuaworMjM2NzggZTRkMGIxZjk0ZWNhOGQ2YjIzMjQ1NzI1NDYzZGI4ZWMzMWFjN2JhNiBsZWdhY3ktdHJ1bmsKKzIzNjc5IDYyMWM3NzAzZThiNzUyOGU5ZGY5YmEzNzM4YmViYWNhYTY4NjYzYmIgbGVnYWN5LXRydW5rCisyMzY4MCA1OTAwYTlkODA4NDgwOTI2OWM1NWJiYmJjODk0ZDBiZTE1NTk1YjdmIGxlZ2FjeS10cnVuaworMjM2ODEgYzE2OGVkYTczNmU0NGE3YzhiNGNkYWUzNGIyMTZjNzExNDE4NmI4NSBsZWdhY3ktdHJ1bmsKKzIzNjgyIDkwMzIyMTg1MmMzYTU5YzMxNzA3MzZlYTI0M2FlMmExMzhkZTYwM2EgbGVnYWN5LXRydW5rCisyMzY4MyA0ZjNkMTI0MDgzMGU2ZjUzMDM4YTgwMmVkZGEwNDA4MDRkNWI1YTFmIGxlZ2FjeS10cnVuaworMjM2ODQgM2ExODEzM2Y5OTA2NDM1MDRiNDhlMDAwNGJjNTkxODRkMmIyZjIzNCBsZWdhY3ktdHJ1bmsKKzIzNjg1IGVlODk1NjdiY2FiNDQ1MGE1MWFkZTg4NDExYTc4YTUyODExMmM4YTQgbGVnYWN5LXRydW5rCisyMzY4NiBmNjE4NjA3ZThmOTg0MjBkNjg4OGM0ZTQ3NzcyYmU4MjI4YTlhODAwIGxlZ2FjeS10cnVuaworMjM2ODcgNDY5OGEzZWM1ZmE4Y2ZhZDliNGQ3OTUxMzllNGRhZGJiNjQ2ZjU5NiBsZWdhY3ktdHJ1bmsKKzIzNjg4IDZkYTAzNzE4YzEzMzBjM2MyMjExODc4NzNhYTljOTc4ODE5ZTJhMGIgbGVnYWN5LXRydW5rCisyMzY4OSA3ZDFmNDkwYjZjYjE3MjgyNGY5ZGRlYjA3M2VhNGRmNTE1MjQ5ZjA4IGxlZ2FjeS10cnVuaworMjM2OTAgNTE4ZTMwZjkwZDFmN2Q4ODQ0ZTI3MTg4ZGFhNTljY2E1NmM0NjgyZiBsZWdhY3ktdHJ1bmsKKzIzNjkxIDQ3MTJiYjYyY2MyNWQwNWIyZDBjNzZhOTNjYjNiZjU4YWVlODg5MWEgbGVnYWN5LXRydW5rCisyMzY5MiA2MzJiOWQzYThkMWE3YjI5MDZmN2M4MmIxNzQxZmNkNmIxOTY0MmFhIGxlZ2FjeS10cnVuaworMjM2OTMgYjAyOTg2ZTlhNmJlNDcyMjY2NDJiN2U1ZWQ2NTdkZTE4YmFkOGU1NCBsZWdhY3ktdHJ1bmsKKzIzNjk0IDVkNWFkOTUxYTZkNmUxNzBkNGYzM2I2NDI5YTY4ZWNjYThiYTkwOTYgbGVnYWN5LXRydW5rCisyMzY5NSBjZWUwZmU1ZmNlMTE1ZGE1OTU5OGE4NGZhOWU4YzI3YjNjZTA1ZjNjIGxlZ2FjeS10cnVuaworMjM2OTYgNTYxNDFiODZhN2YyYzk1YTEyZjY2ZGVlYTQ5ODJmNzRhNTM1OWNiMyBsZWdhY3ktdHJ1bmsKKzIzNjk3IDdmNTFhNGI3ZGViNDQwZWUyZmQ1ZDZjNDczYzRjZjEwMWQxNjNkNWEgbGVnYWN5LXRydW5rCisyMzY5OCBiYTI4NTA0MDhmMGEyNjBkNThkOTQzNmNhMjQzNGE0ZWY0YmQ0N2QyIGxlZ2FjeS10cnVuaworMjM2OTkgNTAwMGI1ZDRjMzI2NWY1NDEwZTc3OGIzM2FkN2MyZTI1Mzg3YmQ0YSBsZWdhY3ktdHJ1bmsKKzIzNzAwIDIwMTE4ZjQxMjlkZWZkZmUzMTlmZTA4Nzk3ODEwNzdmZGNkNTBiYjUgbGVnYWN5LXRydW5rCisyMzcwMSAzNTgzOTdiOTA3MGY2YTdlZTk1ZmUzOTM0MDk3YTBmZGYxYjk3OWM0IGxlZ2FjeS10cnVuaworMjM3MDIgMDhkN2E2NzU2YmZlZDkyYTg4OGE4MGIzYWY0ZWM5N2M0NTY2NzkxYSBsZWdhY3ktdHJ1bmsKKzIzNzAzIDg1NTcxZDVmNjU0NWI2N2JhNmViZjgwODdhZjdhNjQwZWFmODBlMWQgbGVnYWN5LXRydW5rCisyMzcwNCA5YmUyY2M2Yjk5NTlkODMxYzUxYWIwNmUwNGIwMTM0YzY5OWYyMjQ2IGxlZ2FjeS10cnVuaworMjM3MDUgNTYyODM0ZWQ4YmFiZGY3YWUzMWNiNmI5MzE4MTg5ZjRmOTE0NDFhZCBsZWdhY3ktdHJ1bmsKKzIzNzA2IDQ2N2FjNDUzY2NjMzJjN2ViNjNkMmI5ZGVkYTVmMjg0N2FjYmY3YjIgbGVnYWN5LXRydW5rCisyMzcwNyAwMzYyNGQ3NDg0ZmEwNjAwZTBjNDhmZGVjYTc0YTE4NDIxN2U3NWU5IGxlZ2FjeS10cnVuaworMjM3MDggYmM5MDVhMTFjMTQ4YTQ4YmNiNWZkNDBiMTMzNWE1MmQ5ZDY0OWYzMCBsZWdhY3ktdHJ1bmsKKzIzNzA5IDI3YWIwMzI3YjJmYzNhOWU3YTdiZDAzYThlODYzYzMzNDVmZjQ5MTIgbGVnYWN5LXRydW5rCisyMzcxMCA4NTUyNDViYjRkNDI3NmNlZjc4YTJjY2VkZDllZjZlNjNiNTQ2NjY3IGxlZ2FjeS10cnVuaworMjM3MTEgMzUzYTNlOWY4NTE2YzE1OTliNzhmZGFhM2UzNjgzNDhjZTUwY2E1YiBsZWdhY3ktdHJ1bmsKKzIzNzEyIGIxYTg2MTZmMTNlNGNkNzI2YmU1NTgwMzk4Zjc0NGUwNGFlOWQzOGUgbGVnYWN5LXRydW5rCisyMzcxMyA2OWU2NWU3MzkxYjgxN2JjMDQ4NDZiN2U4YTFiZjcwOTg1ZjQwMjcwIGxlZ2FjeS10cnVuaworMjM3MTQgYjcyNTY4YTJjMTdjZWMyMzA4OTExNGNhMWQyNTRkM2RhZDQ1ZTZiZiBsZWdhY3ktdHJ1bmsKKzIzNzE1IDk5YjJiZDI1YmIxMmQ0N2EwMWZjMTQzMTQ0NTk1NTVhZTYxNmVmMjQgbGVnYWN5LXRydW5rCisyMzcxNiA0MWJlZDFmNmQyNmNlYjNhNzU3YjNlYTIxMzM5OGMyZjgxNTZmMmJiIGxlZ2FjeS10cnVuaworMjM3MTcgNjRmNGFjNjA2YWU1MzEzZDQyNWVkOGEzYzAwODZjZmFjYjEyYWNjNCBsZWdhY3ktdHJ1bmsKKzIzNzE4IDU5OGMwMmFiMDYyZDQzZmZjYzY2ZjFkZTk0YjQ3YzBjMTYzYjViZDQgbGVnYWN5LXRydW5rCisyMzcxOSBlYzk1OTY2ODcyOTI5NjNlMzZlNGJhZDRiNzlkMTg4NDI4NWY3NWU2IGxlZ2FjeS10cnVuaworMjM3MjAgYmZmNmMyZDc2ZjMzNmM1MmQ2ZGViNDhjNjc5MTQzM2VhN2EwM2ZiYSBsZWdhY3ktdHJ1bmsKKzIzNzIxIDRmNzFkY2ZkMGE5MzcwZWY3YmU0MjZiNDM5ODcyNzY4MTgyN2M3MmUgbGVnYWN5LXRydW5rCisyMzcyMiBhOTYyMzViMmNhNjI1YjMwYTY4NjQ2YTYzODRlYWVhYzNjNjhkOTdmIGxlZ2FjeS10cnVuaworMjM3MjMgYzY4ZDE4NTVkYWE5ZWEyNDg1MWFhYmMxZjMwOWM4NzViOTc5NDg3YiBsZWdhY3ktdHJ1bmsKKzIzNzI0IGZmYmY5NGZkOWNlZjhlMmY2ZTg1MzFkYWNlMDNlMzFlZTJhYjAwNjMgbGVnYWN5LXRydW5rCisyMzcyNSA3ZTcxZWViYWI0ZWEzOWU5OWQ2MjZkNzJjYmIzOTVhYTVlOTc2YTVhIGxlZ2FjeS10cnVuaworMjM3MjYgMmYwYzVhZjRkNWVhMDdmYjU2YTA1YjZlNmQxNWJhNGJkYjFkZDRlNCBsZWdhY3ktdHJ1bmsKKzIzNzI3IGNlMTJiYjEwOTdhNDE2NzUzNGU0M2M0NjRmN2YxZTc2NTFjNTNmY2UgbGVnYWN5LXRydW5rCisyMzcyOCA5OGRmMDExNWVjZjkwMTJjNDZjZWM5OTlhYTk2YzM3YzFkNjUzMjViIGxlZ2FjeS10cnVuaworMjM3MjkgYzcyOTE1ZDhhYWM3Mjg5Zjg2Y2RjOGIzMjQwMTRhNGZhNmU1ZjQzYSBsZWdhY3ktdHJ1bmsKKzIzNzMwIDYwZTEyZjgzZDJkMjI1ZTNiMWE4OTJlZjA0ZjFiOTZhODY0NmQzZWIgbGVnYWN5LXRydW5rCisyMzczMSA1YjVjMTVhMDk1Y2M3YWJiNTE1ZjQ4NzE1NGU0NDRiOWU5NjIzMjEwIGxlZ2FjeS10cnVuaworMjM3MzIgZWJmZDg3ZTg3ODg0ZTA2ZjgwMmUxMGRhYWIyZTkzMTg5ZWNkYmY3MyBsZWdhY3ktdHJ1bmsKKzIzNzMzIGM0NmU5NGZkNjk4NmI2ZTBlYTY2Zjc4YzA0NDM1MWUxMzgzN2ZiZTQgbGVnYWN5LXRydW5rCisyMzczNCA4OTY0ZWY4NGM5MmY0ZDIxNzhiYjM4ZmU0MWQxZjlmYTM0YzU4ZTRiIGxlZ2FjeS10cnVuaworMjM3MzUgYmJkYzBhYmZiYjEzOTdmZjUxYmE5NzM0NzcyYmNjZTVlZjJkOTlhZSBsZWdhY3ktdHJ1bmsKKzIzNzM2IGRjNzIwNGRkMjY4NmVhM2VjZmI5MjhhZDhlZjA2OTU0M2QyNTIwODkgbGVnYWN5LXRydW5rCisyMzczNyA4ZDVjMDAwZTBlNWI0NDM4OGY1MzMzOTJiZTI2MDk3Y2EzODVmM2FmIGxlZ2FjeS10cnVuaworMjM3MzggYTVhMzBiYTI4OTlmNTdlOWRlZjYxZmM3OWIzYzVjMjRjNDZiYjYxMSBsZWdhY3ktdHJ1bmsKKzIzNzM5IDJmMDk1YzNlMDA3ZGQ3NzZkNDc0NDljZDgxYTViYzY2ZmNkMDliNjkgbGVnYWN5LXRydW5rCisyMzc0MCAwY2IyODdjZDc1NDdhODQ3YzYyNDNlZWQ2NTYxNDU1ZjIyMjUwNWI2IGxlZ2FjeS10cnVuaworMjM3NDEgYzIzOTg5ZTIyZmZhNTAxMTRmYjE1ZmY4ODJkZjM4NTBmYjYzMmM0YyBsZWdhY3ktdHJ1bmsKKzIzNzQyIDA3MWNmZWU4ZDhlYjlhYzI5NjgzYWFmODAwNDM3ZTQ2YTgwNDE1MTQgbGVnYWN5LXRydW5rCisyMzc0MyA3NjlkZjg1ZDcwYmMxM2ZmMGRjNDI1ZTQzZjQ2ZDRjZTc0ZTcxYzRmIGxlZ2FjeS10cnVuaworMjM3NDQgZGQwY2RkM2RlZmQ4MzlmODhjNmJmZWZhMWJiMDBiNGUwOGYxNzVkMCBsZWdhY3ktdHJ1bmsKKzIzNzQ1IGNkOTZjNGIwMWZmMGYwYTgzMTNlYzAzMWZiZDM2MDRhNjgyYjAxYTAgbGVnYWN5LXRydW5rCisyMzc0NiA4ZjQ3MzE3OWIwNzMwMDk0ZjJhNTgwODhmNGMwYzJlN2JlYjRlNDc5IGxlZ2FjeS10cnVuaworMjM3NDcgNWQ2NzgzNTZjODk0MjliMmU0YjkzY2E5ZmM0YWYxMGM0NDYzZWZjZCBsZWdhY3ktdHJ1bmsKKzIzNzQ4IDFhOTQ5NGY5ZWRiMjcwMjE3ZDY4MDA4NDg4MjA5YTIyNWZkZDliOWUgbGVnYWN5LXRydW5rCisyMzc0OSA0YWY4ZDI0ZmE2OTFlZWExYTBlNmExZjUwMDE1ZWQzZWE5YWU0NGQwIGxlZ2FjeS10cnVuaworMjM3NTAgNGJmZGJjODIzMTBmMWJjMzVhNmQwYjZlNGFkMmE1MjA0MGY0OWE2NyBsZWdhY3ktdHJ1bmsKKzIzNzUxIGI2OTI3M2JlZTA5NTBjZDdjOTBiMjIzMjA1ZWUzYzZlNmVmYmRkNzYgbGVnYWN5LXRydW5rCisyMzc1MiBiZTY3YjY2ZTVmZWQwZjcyNjZjZWU3OTNkMTZmOWRhYjBiODRjYzI1IGxlZ2FjeS10cnVuaworMjM3NTMgZTA5ZmI0ODQ4NzY1MzUyOGZlNjQxMmMzYzMzNDYxYTg1YjI0NDhkZCBsZWdhY3ktdHJ1bmsKKzIzNzU0IDdjYmQ0MDdiZTZlN2QzZDE2ZDc3ODY0MmVmMTIyYTcwMDYwMjFiMjUgbGVnYWN5LXRydW5rCisyMzc1NSAxNDlhNjVmYTQyN2MzNDk1OWI2MjFkZmZhZDcyNTg2ZjdlZGNhODBjIGxlZ2FjeS10cnVuaworMjM3NTYgYmY0ZmYwNWVhYjUyMDdhZDA2NmVlYjIwNTMxNDEyYTk5NTlkNWRlMCBsZWdhY3ktdHJ1bmsKKzIzNzU3IDFkOWU2OWZjZjBmOGQ0ZjUxNjI3ZWVmMjFlOWVkY2RkMWJhZDM2ODcgbGVnYWN5LXRydW5rCisyMzc1OCBjOGIwZTk5NDUxNTk5ZjVjNzcxNzhiMTYyZWFkNjM0NTIzYzFlNWQwIGxlZ2FjeS10cnVuaworMjM3NTkgNjhmZWZhOTgyYzVjMjkxZTk3OWM3YzI2MjY1NmE1YzUxZDBiMGRmMyBsZWdhY3ktdHJ1bmsKKzIzNzYwIDdjYmQyODg3ZjYwZmNlM2U0YTk0NjkyYTA5MDU0ZmUzZmIxNDg5MTcgbGVnYWN5LXRydW5rCisyMzc2MSBhOWIxOWRiMTgwYTI2MDBiMDIxYjNjNjgxZTZiZmM5ZDQzNTM2OWQzIGxlZ2FjeS10cnVuaworMjM3NjIgMmJjNDE4M2ZiNTdlNjlmYTE2MGRjMjQxZDQ4ZWM4OTRhNTAzZjQ5NiBsZWdhY3ktdHJ1bmsKKzIzNzYzIGEwYzhjMmU1YTQ0ZDA4NzJhYzUyM2Y4ZDhiOThmNzU2NzQxNGYzZWMgbGVnYWN5LXRydW5rCisyMzc2NCBmZGRhY2VmZWViMzZkZmEyNmIxNTEyYTU3MWVkYTE2ODg4M2ZlY2M5IGxlZ2FjeS10cnVuaworMjM3NjUgNzMzY2IyNjhhZDJmYjBiNzQwN2NjY2Y1ZDg1YTI3OWZlMzc0YjgwYyBsZWdhY3ktdHJ1bmsKKzIzNzY2IDY0MjZhNWFkYmY3NzUzYmYwNmM3Yzc1ZGQ0MGExNmRlY2RlNDc3ZjAgbGVnYWN5LXRydW5rCisyMzc2NyA4NDMzMWM4ZDk4YTQxYWRkOTBkN2I2NzE0ZmY0M2Y5OGY5ZmU1YmM1IGxlZ2FjeS10cnVuaworMjM3NjggZTA4NjRhYWM5YjZiMjVkMjdmYzE1ZGFmOWM2ODlhZWE5NzM1NTBmZCBsZWdhY3ktdHJ1bmsKKzIzNzY5IDkzODQxYzVmNDc1YjEwMGE4YzI1NGZkZmRhNjM5N2QwNzRjMjQ1NTEgbGVnYWN5LXRydW5rCisyMzc3MCA5N2M3NWY5ODFhOWU2MjczZDczYzZmMmRjMTdiMjIzMGJmZjEwNzViIGxlZ2FjeS10cnVuaworMjM3NzEgMzY0YzIzOGE2ODcxMGZkOTQ2MzJiZDUwODYwZTFkOGZiNTNhNGI1MCBsZWdhY3ktdHJ1bmsKKzIzNzcyIDhlMGMzMTg0OWM2NDhlN2QzNmVmYmJkMWNlNzU4MWJjNWQ0MTliNjEgbGVnYWN5LXRydW5rCisyMzc3MyBkZmM5ZjIzYzg2NTUzNDUzMzIzMTVkZDcyNGIzYWVhNTcwNzRkMzczIGxlZ2FjeS10cnVuaworMjM3NzQgYmRjNDg2YzY2ZGYwNGJhMGQ3NDQ5MTkxYTc2ZWM5NzZlOGFiMzdkYiBsZWdhY3ktdHJ1bmsKKzIzNzc1IGMxM2E0NzNjZTFiN2VkZGJiMDhkZjA4YjYzY2QwNGY4ODk1MDA1NDIgbGVnYWN5LXRydW5rCisyMzc3NiBkZmIyZWZhNTU5NjcyYjg3ZWVhMGY1N2I1ZTU5Njg1MDY2YjU1MDFhIGxlZ2FjeS10cnVuaworMjM3NzcgNjJiMjA3NTg4ODY2Y2M2ZjUwZTU1MDhmM2FhZjMxYmU5NWM5Y2MwOSBsZWdhY3ktdHJ1bmsKKzIzNzc4IGY5MzhjZDFiYTk0ZWM0ZTMyNzMwMDU0MDRlMDlhYWE4NTAwMDZiOWYgbGVnYWN5LXRydW5rCisyMzc3OSAwNmYxMjU0ZDIyODA4ZWFkMTgyMDIzYWE1YzY2NDlkMDA4MWI3ZTZiIGxlZ2FjeS10cnVuaworMjM3ODAgZDIxMTYwYTkyMTc5MTM4OWMxMjg1NmZiMTNlNTBmMzQ5YjVjM2ZlNCBsZWdhY3ktdHJ1bmsKKzIzNzgxIGQ1MWZlNTIwZTVmZGMwMjBjMzI3NWRiYTQwMDIxMDJiYjI4NzZlMTggbGVnYWN5LXRydW5rCisyMzc4MiAyM2RjN2JiMGJlNGZiNzc4NjhlMDUzOTZmMTUxMDFjOTVlMGU5NDg5IGxlZ2FjeS10cnVuaworMjM3ODMgZDAxYzVmMjk5MTVhMjhjODM4YTQ3MjUyNzUzZTIzZjg1Zjc4NWIxOSBsZWdhY3ktdHJ1bmsKKzIzNzg0IGJjM2M4NDE5ODc0YzZlMWYzODljZjVjODc5N2YyMDE4MDA3N2FhZDAgbGVnYWN5LXRydW5rCisyMzc4NSBjYjg3YmQ5N2Y3NDBmMTc1MWFmZmU0ODAxZTI1MWIyOWQwOTMxZjdmIGxlZ2FjeS10cnVuaworMjM3ODYgM2QxMzQxN2E2M2UwZmQ3MzVhODVlMmQxYjA2YzhlZTA3MTdjOGYwMSBsZWdhY3ktdHJ1bmsKKzIzNzg3IDU0YTgzOTYwNDU0MDNjMGUyODdmMmVjZmQxYjM4YTcwZmQwZTI4MTYgbGVnYWN5LXRydW5rCisyMzc4OCBmZDU2MTQ0YTk2ZThmYTY0NGM1ZTI5MTg5YjY1MzkxZTZhNWU1OTNmIGxlZ2FjeS10cnVuaworMjM3ODkgYzk0OGJjYjA0MTVlMGMzMmVhNDEzODZiZjg0NDNmZGQwNGNjOTE5MiBsZWdhY3ktdHJ1bmsKKzIzNzkwIDFmM2MxZTgzMWYyMTZhNDliZTZjMDgzMjNhNzMwNjI5Y2Y3ZTA5NTcgbGVnYWN5LXRydW5rCisyMzc5MSAzZDNiNmI0Y2I3OWYzOTliMjJlMjE0OWE3NzA3MmE5MjYxNzNmMjE1IGxlZ2FjeS10cnVuaworMjM3OTIgY2IzMzRhOGM4ZGQyM2E1NjZmZGFkMGJmN2IwNDQ1YzEyOWRhZTJjNyBsZWdhY3ktdHJ1bmsKKzIzNzkzIGRiZmVkM2JmMTYwZWVkYTAzZDNhMzIwMTc5OWEzMWEzNTM1ZTg0MzYgbGVnYWN5LXRydW5rCisyMzc5NCBmMGUzM2M1N2U0NmU4MDEwMTRkOTc4ZDEwYmNhY2NiNDU2ZDlmOTJiIGxlZ2FjeS10cnVuaworMjM3OTUgOWI4NGVmYmY2YjBkMGI3NzY3MzMyZDIzNGMzZTdlNDZkZjQxMjYzMSBsZWdhY3ktdHJ1bmsKKzIzNzk2IGJjMTM4YmM3M2NkZDFjMzU0ZjcxOWU3NjMzNjdhNzk2YzAxYWQzMTEgbGVnYWN5LXRydW5rCisyMzc5NyA0ZjdiZWZlYzM1YjAxOTdmNGI3OTA3MmE1OGExODlhZTQyODc2YmYyIGxlZ2FjeS10cnVuaworMjM3OTggYzIwMDViYjg3OWI0NjdkNTQ3OWZmMzJhY2MyN2Y1ODY0NGNjNzM1OCBsZWdhY3ktdHJ1bmsKKzIzNzk5IDgwYjhiZmEwNDQwNmJmM2Y0OTE1ZjdiYWEyYmM2YzQwZjcxMzQ4MTQgbGVnYWN5LXRydW5rCisyMzgwMCA0YjE2MTViZjZlYjA5ZDMxYzc2MjFjNjVhOWVmOTEzNDEzZTkzOWI4IGxlZ2FjeS10cnVuaworMjM4MDIgMDFhZjkxYWVjY2Q0NDcyNTQyNDE3OWUyN2FmNjgzMWYzOTM2ODk1OSBsZWdhY3ktdHJ1bmsKKzIzODAzIGZlMWI2Y2U0ZWI5MzYzNTk4OTJjNDcwZmM3OTUyMjk3NmE5NDQwZWIgbGVnYWN5LXRydW5rCisyMzgwNCAyZDU5OWEzNmI2N2E4YzMwY2I5OGE0M2RlZjQ5YzdlZGYzN2VkOWFhIGxlZ2FjeS10cnVuaworMjM4MDUgYWQyNjYyMDk1ZDc3MjQ2OTFkMGM0ODRhZmY0NmMyYmQyOTZkNDg4MCBsZWdhY3ktdHJ1bmsKKzIzODA2IGY1NjdiNDU3MzdjMGUzNDgwZTI4ZDEyZjExMDI4ODNlMDUyMTZjYjggbGVnYWN5LXRydW5rCisyMzgwNyAyOTQ5MDFhYjg2MzBiNWRjMDk3MDNjZmMwNzcwOGEyNDZmYWU0YWUwIGxlZ2FjeS10cnVuaworMjM4MDggYTg5OTVhNmRlOGQwMDVlNjYzNjZlNzMxNWM2MGY4MzA5OGFhZDQwMiBsZWdhY3ktdHJ1bmsKKzIzODA5IDRiYTQ1NDhiYTk0MTc5NDBkZTJiYjgzMzk3YzEyZjNjOWE2MzEzOTYgbGVnYWN5LXRydW5rCisyMzgxMCAzNjcxNGI5OGZlNTEyMGU2NTI3MWQ4MDMxZTdkYWVjOWZlNTk4Y2M4IGxlZ2FjeS10cnVuaworMjM4MTEgNzNhMTM5NWEyMzUxNjQ5MDk2OWEwNDMxZjZkMzM5ZGYxODE0ZjQzMiBsZWdhY3ktdHJ1bmsKKzIzODEyIGExMmNjZGJjZThkYTkzZWJhNjViOGZhNGU0MjljNTE0Njc4OTdjNjggbGVnYWN5LXRydW5rCisyMzgxMyBhNTY0MjdlNWM1ZTE3Mjg0YzIyZjkyN2VmMWNiMzQyZTNlMjE3ZWU0IGxlZ2FjeS10cnVuaworMjM4MTQgZDg4MjU0NzViODAwNzJlOGVhOWI5ODdmZTg2Y2I4MzBiOTdlMDM4MiBsZWdhY3ktdHJ1bmsKKzIzODE1IDZhNWExMGE1YjUyNjVkZDEzZTY2NTA4YmZhMDFmYTFhY2ZlNWVlMTggbGVnYWN5LXRydW5rCisyMzgxNiBjOTYwOGM3OTBmNmY1ZmE4NTEzOTE0YTM0OWU0ZWVhNWM3ZTk3MTM0IGxlZ2FjeS10cnVuaworMjM4MTcgNjVkZDYxNTdmOTk5MzRiYTQxMDcwZjg2YzhmNjNlYWM5MGQyMDM0YyBsZWdhY3ktdHJ1bmsKKzIzODE4IDcyMmJiMWZkMzFlYTA5NmZjZWJmMGNjMDFkMWY4NmU5ZGEzYmI1ZjEgbGVnYWN5LXRydW5rCisyMzgxOSAwMzM2ZWU1YjQ2ZDQyMjJlYzMwN2E0YmRlNmY3ZmI1YzJkOWFlYmQ0IGxlZ2FjeS10cnVuaworMjM4MjAgOTQ5YmE0N2U4ZjMwY2E3ZjNkNjM4MjE5YzUzOWZkMTdjZDdlZTBkZiBsZWdhY3ktdHJ1bmsKKzIzODIxIDg3ZTVmZTA1NmQyOTlmNWVhMmFhYzUyZDhhNzg5MGQ2MTQyZWE3NzEgbGVnYWN5LXRydW5rCisyMzgyMiBhZTUwN2NmNjdmYmZjNDNkMmYxOTE4OTkyMDA4MWZjNDcwZDI3ZDc5IGxlZ2FjeS10cnVuaworMjM4MjMgNGEyNTdhNThiZThiZmI3MzMxYWY3NmE2YjkwMjk0OGQxZjhkNDM1OSBsZWdhY3ktdHJ1bmsKKzIzODI0IGRhODExMjViMmFmOGVhZjEwYmQxMzJmYWIzMGFlNzY1NzJiZDYzNmEgbGVnYWN5LXRydW5rCisyMzgyNSA0NzNhZGJmNTIxNzE4NDhkMjE3MzMxNjE0ODNhMzBlNTU2MDI4NzI0IGxlZ2FjeS10cnVuaworMjM4MjYgZWM3MmI2M2QyNjlhZWI5YTMyOTI4NGIwMGQ3ZTZhYjVlY2M3YTY0YyBsZWdhY3ktdHJ1bmsKKzIzODI3IGQwNjIxYTY2OWM1NjkwZDA2YmRlMjg1MGU2YjM2ZDY5NWQzMzRjNGEgcjIyYjEtYnJhbmNoCisyMzgyOSBlYzA1YWZhZmUxM2I5NWQ3ZjY0YWE1MTJhYWI3NmU3ZTA3Yzc4MGY1IHIyMmIxLWJyYW5jaAorMjM4MzAgMzc3YjA5YWM3MjZlN2VhMmUyNjU4NDI3MWI3YTNkYThkNmZmZmFkMyByZWxlYXNlMjEtbWFpbnQKKzIzODMxIDkwNThlNDljNmM1N2QyMzdiOTBiYWM2NDBlOGM1MDRlODBjYzAyYjQgbGVnYWN5LXRydW5rCisyMzgzMiBjZTJhM2YxNTYxNWY2YmEzYWY3MjczZWMxMzUzMjI0Y2JlYjk5YWJiIHIyMmIxLWJyYW5jaAorMjM4MzMgOGRkZGZmZmI5ZjJiYjdlNGM4ZjdjMWM5MmU1YmYyNzZlMjE1MzYxZiBsZWdhY3ktdHJ1bmsKKzIzODM0IDZmOTkwMmFjZTE4ZDhlYjZmMGI4MDJiZTY5MjZhM2UzNjg4YmZjNjYgbGVnYWN5LXRydW5rCisyMzgzNSAwOGYxNjVmMTM1YThhNjQzNjBlNGQ4MjM1OWY4NDQyNWRiODY1M2RmIHJlbGVhc2UyMS1tYWludAorMjM4MzYgY2I4ZThiNDJjZGZiZWI1ZTE3NDMwNGM0MWY5YTRmOWNiODQ3OGU2MSByMjJiMS1icmFuY2gKKzIzODM2IGU5ZmFkNTVlZjcwNGRiZWJjZGU1ZTE0Y2I4ZGI5NmFmODRjMjJlNTUgcjIyYjEtYnJhbmNoCisyMzgzOCA2MTgwOWM1MTRhZDgwNjllZjI0MzIzNjIwZDYzYzRlZDJjZDRlYzBmIHJlbGVhc2UyMS1tYWludAorMjM4MzkgODA1ZjE4NGI2ZGUwOWE1MjljYTIwMzdjMTYzZGVhNTc2NGZmZjJiZiByZWxlYXNlMjEtbWFpbnQKKzIzODQwIGQwNjQ0NmQ0ZTc4ZGEyMzQwOGJmNTg1NWIyMzA4Y2Y5MzhiYTY1YjIgcmVsZWFzZTIxLW1haW50CisyMzg0MSA3MTExMzVjZTFlNTRmNWU3NjkxMTUwMTJkMWM5ZDNmZGRjMzdkMzE5IHJlbGVhc2UyMS1tYWludAorMjM4NDIgNTQxZjgyNWM3ZDYzN2NlYzlkY2ZlY2QyNGJjNjg1NmE5MTY1NDdlZCBsZWdhY3ktdHJ1bmsKKzIzODQzIGE5YmFiYTE2ZWJmMzlkMWM5OTg3MDAwZDc3YzhmZGZlZTNlYjFhYjYgcmVsZWFzZTIxLW1haW50CisyMzg0NCA1ZjQ5NTBkZDM3YzhhOWI3M2M0MjE2YmE3NzhlNDJhMTMxNWRmYTc1IGxlZ2FjeS10cnVuaworMjM4NDUgNWFmNmM4OWM4Y2I3NWYzMzdkMzA1ZTk3Njg3OTI5MDAzOWIzZjRkOSBsZWdhY3ktdHJ1bmsKKzIzODQ2IDE1MWU0NWU5OGMxMWQzNTYzMDE5NTdhMzAwZTUyM2Y4MWEyM2QzOGMgbGVnYWN5LXRydW5rCisyMzg0NyAyY2IzMmY3Zjc4YzJkMWU0ZmQ2ZWY4MWIyNmNiMjQ3ZWE4M2RjMGEyIGxlZ2FjeS10cnVuaworMjM4NDggY2U4OGViNDY1Y2U3NmMxM2FkMDlkOTExYjBhYjFkZDkxYTdmMzhiYSBsZWdhY3ktdHJ1bmsKKzIzODQ5IDkwNThiY2NlNjllMzE4YzgwZDQ0ZmEwM2FmMjJlYTVjMmIwMjZmNjAgbGVnYWN5LXRydW5rCisyMzg1MCA4NGE1ODZhY2RjMDIzNzMzYWFlM2ZlMWRhOGVlMzEzM2IzN2NhNTNlIGxlZ2FjeS10cnVuaworMjM4NTEgMzc2ZWUxNzRlY2QwNzc0MjExNjliODkwMzNjMDQ3NzRlNGI0NTdiYiBsZWdhY3ktdHJ1bmsKKzIzODUyIGJmMDNiOGUzZWY5M2FmMTE1MDkwOWQ4Yzk1Y2MzMzNjYjQ2MDM3ZTggbGVnYWN5LXRydW5rCisyMzg1MyA4MGJjYzhiN2Q2MTkwZWI3M2UwYTExZjQxZjY0MDRlM2VhYzQ3YTVkIGxlZ2FjeS10cnVuaworMjM4NTQgYjVjYTA2ODdiYTZhODA5NmIxMWJiZjhkNmU2ZTk1ZTBiYWNiZmFhZSBsZWdhY3ktdHJ1bmsKKzIzODU1IDg4N2E5M2Y5ZDVkNWQ5Y2JmYTM4YzRiZWJkMjMyNTA5Y2YzNGZlMGEgbGVnYWN5LXRydW5rCisyMzg1NiA3ZDEyNTc0ODVhZWYyZTdiODBmNzFkN2ZlZmI4YjEwZTAxYmEyOGE0IGxlZ2FjeS10cnVuaworMjM4NTcgOWJkNjAzZDQzNGY1NTJhYjgzM2IwMzMxNTU1NzU1MDgxZjdhYWVjMiBsZWdhY3ktdHJ1bmsKKzIzODU4IDMyNWQ1MTNhNTBiYmE4ZTkwMGJiNmZhNDJlYWIyNjA0Y2FkZTIyZTQgcmVsZWFzZTIxLW1haW50CisyMzg1OSBhYWQ3NjI1MDNkMTFlOGMyNDQzMjY1ZmE5NTQzMmUzMDAzYzczZmJiIGxlZ2FjeS10cnVuaworMjM4NjAgZDMyOTg0MzVkODViNTg0YjY1MDlmYjA4YmJjYzI3NzNlY2RhZjc2MyBsZWdhY3ktdHJ1bmsKKzIzODYxIDA1MGVkOGEyMWNkZTVkZGYzZWZiNWFkNWYzMzJlOGRlYjYxNGUwMjIgbGVnYWN5LXRydW5rCisyMzg2MiA5MjQ2YjZjN2U3NDIyYmM2ZTkyMzU3M2MwMmEyMzM3NTYxOTY5NjgwIGxlZ2FjeS10cnVuaworMjM4NjMgODJiY2ZhYzg5NjQyNWNjOGFmZmQ1YzczNmQxNmU4MTJlYzI1Yzg2NyBsZWdhY3ktdHJ1bmsKKzIzODY0IDI1ZDc2NGQ4ODE0OTFjNzNkMTAxOThlNDgyODRlMWVlMjBhNGY1NWMgbGVnYWN5LXRydW5rCisyMzg2NSAwZDVlNmZjMDQ4MWQ2MTRhY2ZjOTAyNGVkMzdkYmMxNWMwMzBhNTA1IGxlZ2FjeS10cnVuaworMjM4NjYgYzRkOWQ4Njc0NTA2MmVhMWUzMjRiMTk0N2IxNzc5YTgxYTRhOTkwZiBsZWdhY3ktdHJ1bmsKKzIzODY3IGNhNWYyZmY4Mzk3OTJhYzgyZTk1Yjk5YTNlOGU1MWI4ZDAyM2UyMmEgbGVnYWN5LXRydW5rCisyMzg2OCBiNDdlMTVmYTQzZTg1MWMzNjA3MmI4ZjY4ODhmZjA1MTdjYjJlZDYxIGxlZ2FjeS10cnVuaworMjM4NjkgZWI2Yjk1M2VjZjdjYTdlZjM1M2M4MjI5NTMxYzJhN2I5MDE4ODI2ZCBsZWdhY3ktdHJ1bmsKKzIzODcwIGZmNTdhMWEzNzBiMzUwMWYyNTIyNmUyYWQyNmI2YzcyZGM0Y2E0MjAgbGVnYWN5LXRydW5rCisyMzg3MSBlZWJkZGQzYjk0YTUzMGNhOTE1MDNhNDVhOGU2YjI1ZjAyZWRmMDA5IGxlZ2FjeS10cnVuaworMjM4NzIgNWMxZGZkOTI4NzdkNDU3ZDc1MTFhNWNmN2Y0OGE5MjYxZTcxNGRiMyBsZWdhY3ktdHJ1bmsKKzIzODczIDkwMDljMjU2OTRkMWZjMWJiY2U1NWEwZGEwZDYwYTc5MTBiYjg3NGEgbGVnYWN5LXRydW5rCisyMzg3NCA0Yjc5ZDdkOTFiNGY5YTJhM2U5M2VlMjkzOGQ5NTRlZGNiN2VhNjhmIGxlZ2FjeS10cnVuaworMjM4NzUgNzk0NTYzOWRmMjY1MDBjYWNkZGQwNDE2OGFhOGVjNDRiN2MyMWI3NSBsZWdhY3ktdHJ1bmsKKzIzODc2IDczNzAyZDdmMTNiMWIxNTlhMzhlZWU5ZTcwZmVlYjk3ZmZkOTYxYTcgbGVnYWN5LXRydW5rCisyMzg3NyAyZDhkYmViZjgxZTA2YTE3Y2VmNGJjOGZkZmY0M2YzNmQ4NTcxMWNhIGxlZ2FjeS10cnVuaworMjM4NzggN2YzZDBjYzIxODg5OTZmZjAzMWRiN2EzYmY3MmE5OTg5OTlhZjdjZCBsZWdhY3ktdHJ1bmsKKzIzODc5IDY4OWQwYmJjOTFiMTM5MjU5MjczZjRhY2FiYmFjMTAxMzY3OWQ2YWUgcmVsZWFzZTIxLW1haW50CisyMzg4MCA4MjhjYjBjMmM0ODA1ZGUzMTRkYjMyMDQ0NTQzZDUzOWI1OGQyNGIzIGxlZ2FjeS10cnVuaworMjM4ODEgN2RjYzhhMjgxMzNhMjJiMDk0M2U4NTFiNThiYWI3Zjk3YWVlNDJjYyBsZWdhY3ktdHJ1bmsKKzIzODgyIDcxNmE0MDZlOWI0ZmIzZDVhNzQ3MDk1ZjBkZTRlYmQ4ZThmYzlkNWMgbGVnYWN5LXRydW5rCisyMzg4MyBiZWE5NDA0Y2U2MmNkMjQ4M2FjYmQ3ZjM4MTVlYjFiZTAxMmUzZGEwIGxlZ2FjeS10cnVuaworMjM4ODQgYmY0YjM3NTE4YzE0NzcyZWEyM2VhYWNiZjMwMDI3MzMzNDk3MWE2MiBsZWdhY3ktdHJ1bmsKKzIzODg1IDQwM2RkNTljYTdkNWRmMDEyMDM4ZGVjN2IzNDk1MDhlY2FkYWFkNDEgbGVnYWN5LXRydW5rCisyMzg4NiAzMDJhMWMwMjVkYzc5MmVhODgyYjk0MDcwMzRmODQ2ODM0NGFmODdhIGxlZ2FjeS10cnVuaworMjM4ODcgYTNkNmIzMWU4YmI5ZmRjZGVjNDBkODI0NTAwZWRiNTkwYTU0YmM2ZSBsZWdhY3ktdHJ1bmsKKzIzODg4IGI5NzQ1MjI5YmQxMzJjNzI0OWE5YWVkZDIyOTk3MGZkNjNhY2RhM2EgbGVnYWN5LXRydW5rCisyMzg4OSA1N2I1MTk2NmE0ZjFmMDZmMzA3MmU2OTFkOThjNzhjNzA0MjY1MTk1IGxlZ2FjeS10cnVuaworMjM4OTAgMGIxYzEzOTRiZWM2MTE5M2EwMmRhOWIwNTY3Zjg0YTVmMzM2MmFjOCBsZWdhY3ktdHJ1bmsKKzIzODkxIGU0ZjUxMzgyOTJlNjU5YmUyNjVmZDcwMGI0YTA5NmEyODVkZGU5ZjkgbGVnYWN5LXRydW5rCisyMzg5MiBiNmY4MTk3ZjRkZjc4NGFhYWJhNjhlMjhmZWEzYjQwNGQ2OWNjMGIzIGxlZ2FjeS10cnVuaworMjM4OTMgYWE1NjQ3NTY5ZWUyYWIzNDE1ZmIyZDA4MzZkYTMzMWEzMDM2ZTlkYiBsZWdhY3ktdHJ1bmsKKzIzODk0IDRmYjc3MjdlNGY0NzViZWFjMDg0MGVmNWE0MWRhNmRhNWUzNzJlMDYgbGVnYWN5LXRydW5rCisyMzg5NSA3YzM4MWRkMDc3OWNhNzZjOWZiMDYxNTY1MmU4Nzk2OWI1NjQyY2RhIGxlZ2FjeS10cnVuaworMjM4OTYgMmMxYTQ1ODRhNzA0MzM1ZTA1NjllOTkwNTA2ODY0NGNlMDlmZTFlNyBsZWdhY3ktdHJ1bmsKKzIzODk3IDNkMjk5YjE1NjUxMTE4Y2M5OGZlZjI5MzY4NWIzYzk2MjU5Yjg1MmMgbGVnYWN5LXRydW5rCisyMzg5OCA5N2IxOGMwOWQyMmEyYTM0NjQxN2ExYzEwN2YyNWQ4NTdkZTc3NWZlIGxlZ2FjeS10cnVuaworMjM4OTkgMTU5ODU4OGVmMWFkYjdlNGY4ZDk0MTZjZDYyNTFlOWE2ZTVmNzJhNyBsZWdhY3ktdHJ1bmsKKzIzOTAwIGFjYzdlM2I0ZDA0MmZlZTVhNzc0MjMzOTgxNGNlODdiYTJjOWU1NmYgbGVnYWN5LXRydW5rCisyMzkwMSBlNDk2Yjg1MjI5Yzc5YmQwMmE5Yzc2YzkyMzc4ODc3Y2ExYmM2OGM3IGxlZ2FjeS10cnVuaworMjM5MDIgZDViMzFlZjIzY2ViZTMxZjM2YjcxMGVlNDUwM2Y0ZTI3YTc2NTVlMiBsZWdhY3ktdHJ1bmsKKzIzOTAzIDZjODRkNTVhYmI1OGExMzU3YTcwYzg4YWVjYzM5YWYwNzU3NjU1ZDAgbGVnYWN5LXRydW5rCisyMzkwNCBmZWQ4YTE4ODk0ZjVmOWJiZDRjODVmNTBlMzA1MTU3YmQ0MWVkYzFiIGxlZ2FjeS10cnVuaworMjM5MDUgODk5YmViYzg5MDQ3ZTUwODBiMzIwOWI0MmQyMDg5NmQ1ZjUxMzZlMCBsZWdhY3ktdHJ1bmsKKzIzOTA2IDA0ZjI4MDFkOTk3NzBmNTkzNDdjYTVlZTVlMWQ5ZmNlNzFhOTM5YzggbGVnYWN5LXRydW5rCisyMzkwNyAzZjgwYzkxYjVjM2NmZGI1NGU4YTBmN2JlNmVhZmYxZDdkNGI4ZGY0IGxlZ2FjeS10cnVuaworMjM5MDggOGI5ZTJmYmNhZTFmZmNmYmNjMjRkNzU5NjAxYmI1ZjhhYWI5MDQwMiBsZWdhY3ktdHJ1bmsKKzIzOTA5IDZmMmNiMTgwNjhkZGY5MDY1MmU3NDk5NzY3ODNjYzkyMjJmZDQxMzQgbGVnYWN5LXRydW5rCisyMzkxMCBhYTQ2YzY2MTg4ZDM2Yzk1NTAyM2QxMmJkMGRjYjk1MjVmYzcxYzJiIGxlZ2FjeS10cnVuaworMjM5MTEgNzFhOWIwNTNhYjQyYjJjZDJiYjUwNzk4NGNkMDliNDViM2E3ZGJkZSBsZWdhY3ktdHJ1bmsKKzIzOTEyIGM4MGRhZmNlMWI3NGE2YWRmOTQzMjMyN2FjZTA5ZjUwYjUzYmNjNmEgbGVnYWN5LXRydW5rCisyMzkxMyBhYjgzM2Q5YTA5Yjk4MGFmMGRmYjk3NzE3MDA2ODU5ZjFiMjU5ZWY5IGxlZ2FjeS10cnVuaworMjM5MTQgZWY3OGVjNjAyYTQwNjM4MDdkMDljZjRmZTA5MWJkNjRhZTM2ZTcxNiBsZWdhY3ktdHJ1bmsKKzIzOTE1IDdjNDFjNGZiZjljNzNjMmE3NWY0MzFlMzc4NTU3NTJmNzg2YmE5ZmYgbGVnYWN5LXRydW5rCisyMzkxNiBiMDc4OTkxY2I1NmEzZDAzZjA0YzVkMjQwYTI1ZTQ3MWFiMDM1NzhmIGxlZ2FjeS10cnVuaworMjM5MTcgY2FiYjU2OGE1NThiMWU2MzRjZTVlM2Y1MDExMmI1OTc0ODI4NmU1MSBsZWdhY3ktdHJ1bmsKKzIzOTE4IGRkNzhiMWE3MWYzZWFmNzMxMjE1ZDI0ODNlZTVhYTQ0ZTcwNGU5ZDkgbGVnYWN5LXRydW5rCisyMzkxOSBmZWM5NTBkOGMyNWQ3YjRmYWIyYzkzMTQ4YjI0NjQ4Y2VhMzMxZTk1IGxlZ2FjeS10cnVuaworMjM5MjAgNTI5NTdhMmRmYWZlNjkwNDU5ODk2MzI0MjAzYjRiZmJlZDFjMzBjNSBsZWdhY3ktdHJ1bmsKKzIzOTIxIGViMDA0Y2MwMDhkMjc3NmM4YTgxMDE3MGExMzdiNTM1NGViMTFmMzEgcmVsZWFzZTIxLW1haW50CisyMzkyMiA4ZGViM2I1ZmQ3YzE3ODlmYjZkMjljOTgzYTQ4Zjg0NTI5ZWM4MzUyIGxlZ2FjeS10cnVuaworMjM5MjMgMmQzY2VlOWYxNjMzMjBhYzM0NjA3ODVkMDMxZWRhMzgxNjU0ZWJhMyBsZWdhY3ktdHJ1bmsKKzIzOTI0IDc1N2JjZmEyMDFkYzE5OGE0NjI3ODIyN2IzOWQ0MzIwMjhkYTcwMDggbGVnYWN5LXRydW5rCisyMzkyNSBlZGQ5ZDBiM2M0N2VmYWU3ZmIyMDEwZTEzMzI5MGI1NmVhYWYwYjdmIGxlZ2FjeS10cnVuaworMjM5MjYgNzM0NDY4N2JmMmMwYWI4ZmRkOWQ1MGQ3MTcxOThmN2YxNzRkN2VjYyBsZWdhY3ktdHJ1bmsKKzIzOTI3IGQwZWIyMDM2ZWNjYWYyNjRlOTVmYTVhYTg3YWY0ZmQ5MmQ0ZjdkNGUgbGVnYWN5LXRydW5rCisyMzkyOCAzOTM1NTZhZGIyOTUwYTM3NzJiNDFhNjVmY2Q4NmVhYmYxYmRjOWE4IGxlZ2FjeS10cnVuaworMjM5MjkgZGNhYTJjODk0MzBlNzhmZWMxMWE3ZmFmYjgzYjk3YTdhOTIwY2VhMiBsZWdhY3ktdHJ1bmsKKzIzOTMwIGNlMTNhYTMxZTE4OWEwOTgxZGM0NWMyZjI1NjZjMDdiMTQ1YWQyMWUgbGVnYWN5LXRydW5rCisyMzkzMSBjMDVkNDg5NTIzNGMxMGViOWRmMWUzMWE5MjgwMTJjNjlkZTc4YTQ2IGxlZ2FjeS10cnVuaworMjM5MzIgZjcwMDkxNjdkZDY3YzM4ZGQwNGFkMjU2MzA5NzczNmQ4MDhhODExOSBsZWdhY3ktdHJ1bmsKKzIzOTMzIGM0NzhhNTA5MWYzZmZmYmQ1YTk4OTIzY2Y5OGJhYWMyMThiZDczNzYgbGVnYWN5LXRydW5rCisyMzkzNCA1Y2Q4Yzg3YTg4YWVkODFiNDc0YTBlYWYyNzAxODNiNTEzNjRmMDNmIGxlZ2FjeS10cnVuaworMjM5MzUgMDM5N2E3NWE1YmZkZDVmY2ZkMmIxNGJkYmE1YThhNGZmNWNkNTlkZSBsZWdhY3ktdHJ1bmsKKzIzOTM2IDNjZTAzZTJmMDFlZjdmMDE2ZjI0MThmMmUyNzc0OTFkNzhlMzhkMTUgbGVnYWN5LXRydW5rCisyMzkzNyA4OGEyNDJiZmIyM2FiMGExNWQ5NGFiODAwZDE3NjIxZTlmY2UwMDE2IGxlZ2FjeS10cnVuaworMjM5MzggOThlNWQ5MDFiZmRmZDkyMDg4MzQ0MzNmZWY5ZDI4MDVhODdkODEwOSBsZWdhY3ktdHJ1bmsKKzIzOTM5IDNlOWI4NWRlNDQ3YjlhNjA3YzZjZTI5NzRhZmNkZDk5YjA5MWY5ODQgbGVnYWN5LXRydW5rCisyMzk0MCA1MzVkYzM2NTBiZWNmNTNkZWFlYzhjZjAwZmNjZDQ2ZmU0YzFlYTM3IGxlZ2FjeS10cnVuaworMjM5NDEgM2NmZDU3OGY2NDhiMjQ4ZWRmMjA3OGJkYzFkMjRlYjBiMjkwNGQ2NyByZWxlYXNlMjEtbWFpbnQKKzIzOTQyIDNmYjQwM2VhZWRlMWU2MjdhZTJmM2M2N2ExOTcwNmRkNzEwYWI0OTkgbGVnYWN5LXRydW5rCisyMzk0MyBkOTUxYzJkZTA5NWNhZWM0OTZlYjg4ZGY1MWQyNTBkOTJlNGE1OTM5IGxlZ2FjeS10cnVuaworMjM5NDQgYWY5ZjI5MDI2NGFmZGQ3OTNiNDdjMzcwYTY5ZTM5NzU3Y2QyN2I4ZiBsZWdhY3ktdHJ1bmsKKzIzOTQ1IGFiYTdhNDg5NWU0ZGFlNDkxY2ViMDQxODE2MmM5MmNmYjEyOGRiYmEgbGVnYWN5LXRydW5rCisyMzk0NiA3NDE4ZTBkNWZjMDEwZmExODc5ZDA2NjA3OTU2OGFhZjU4NmIxNmYzIGxlZ2FjeS10cnVuaworMjM5NDcgYWU5NGI1ZjdkZDMwZjU1NDEwMTljYjFjODU4YjQ5MjViZTNlMjM0NyBsZWdhY3ktdHJ1bmsKKzIzOTQ4IGY2MTQ4MjVkMzI2YWMyNzhiM2I3OTZkMjExNGMwMDMzMmEzZjVhMzAgbGVnYWN5LXRydW5rCisyMzk0OSA2MWU4ZjAxZGU4MjEyNTg1NjNlNDQ3ZDljYmIxMmU3YmFiY2E0MjZmIGxlZ2FjeS10cnVuaworMjM5NTAgZTg5YzI1Y2E2YjI5ZjYwNTA2NzZlMWY2YjdjZWNhNTNiNTgzOWUwYyBsZWdhY3ktdHJ1bmsKKzIzOTUxIGUzYzI0ZmMyMGE4ZGJjMDZjNDQ5NDI4NDhkMGNlZTY5MWQ1NjRiNzcgbGVnYWN5LXRydW5rCisyMzk1MiBhMGYxYzJkMmFjOWU0YTIzMDMzMjM0OWM0N2Q3MjU1MGM1M2M1YzRkIGxlZ2FjeS10cnVuaworMjM5NTMgZjMxYjEyYTQyOTUxY2Q3NTdmMjJiMjAxMDI1ZjVjYzUzYmFiMzczZSBsZWdhY3ktdHJ1bmsKKzIzOTU0IDUwNWRkMzRlMGVlYmY5ZjgyODkzNmI1OTUyYWY3ZmY4NWY4OWFmMmYgbGVnYWN5LXRydW5rCisyMzk1NSA0MzNhZTQ4Mzg3MDM1ZjE5NjczZjFkYzcxZDU3MGQ0NTNjZTRjZDk2IGxlZ2FjeS10cnVuaworMjM5NTYgOTlhZDJhOWQyMGUxYzEyNzhmMGFjZmE4Njk2MjA2MWE5MmJhMTk2YSBsZWdhY3ktdHJ1bmsKKzIzOTU3IDMxMWEyYWJlYThhNDdhYzMyYTM1MzRiMWU1OWYzYmM3OWE3YzU0MDcgbGVnYWN5LXRydW5rCisyMzk1OCAzNjdjZDhlNWRmNDc5NDk0ZTdjZTA3NWJjMWY1YTQ1NDNmMTA3MjRlIGxlZ2FjeS10cnVuaworMjM5NTkgOTllZTcxOTE5N2JhN2VjMGE0MGQzNTcxZjhkZDlkMTlhMDkxNzY0NCBsZWdhY3ktdHJ1bmsKKzIzOTYwIGEwMzMyYWU4NDhlMjZmYjk2YWM2MDM3OWViNjMxZGIzZmJhMmMwYTkgbGVnYWN5LXRydW5rCisyMzk2MSA4NmZiMThmYTM0NmY4YThhNjk3ODc0NGYyNzZiNWQ0OGU1ZmIxNzY2IGxlZ2FjeS10cnVuaworMjM5NjIgYzNlMGJkMjA3NzVjYzQ5ZjQzNDRiNTZjMmE1MmJhNDEzZmNlMmI0MyBsZWdhY3ktdHJ1bmsKKzIzOTYzIDM4MzgwZDVmMjdkNDBiMmNiNDZkYzE1YjgwNGJlNzQ0MzI4NjVhYjIgbGVnYWN5LXRydW5rCisyMzk2NCA2OTAzNDIwZjBhODI1YWNjZWVmNDk4YWM5YzhhYzViOTA3NWUzMDQxIGxlZ2FjeS10cnVuaworMjM5NjUgZDAyMDY4ZDE2M2NmY2VkZWMxMDYyNzllYWQyN2I5ZmIwYTM4ZGIzMCBsZWdhY3ktdHJ1bmsKKzIzOTY2IGFkZjU2NWYwZjhhZTYwODVlZTgwY2JiZTYwYTdmYTBhYzhhODcwYzkgbGVnYWN5LXRydW5rCisyMzk2NyAzOTgxMzVlNDAwYzdmODNiNTJkOTc2YTdiNjRmN2YzZjllMWFiNWIxIGxlZ2FjeS10cnVuaworMjM5NjggNjQ4YmM3NGM0N2FiNzI2MmUzZjgxZGQzYTk0NjEwYWVjZDIyZGU0MiBsZWdhY3ktdHJ1bmsKKzIzOTY5IGIyMjkyMDhhMmE3MjczOGI5OGVmZGQwOTEyNDk2ZGJjMmI2YjU4ZjkgbGVnYWN5LXRydW5rCisyMzk3MCBmYTBiZjZjNzllMDQyYTAyYWYzM2Q4MjhjMDg5YTM0NzA5MjhhMzQ2IGxlZ2FjeS10cnVuaworMjM5NzEgNWRlM2E1OTQ3MjU3YmJiMTQ0NjQ4ZDEzNjNmNGEzYzAyNjBiYWEwZCBsZWdhY3ktdHJ1bmsKKzIzOTcyIDVmNjg1MGQxZjllODUyMzkyMWRkYTFhNDhiOTA5NjQ2NmRjMzc3ZWEgbGVnYWN5LXRydW5rCisyMzk3MyA0YjNlZmM3NTAxMzk2ZmMyMDFkNjM4NjQ1ZDQ4OGRmZWM3ZGJkYjliIGxlZ2FjeS10cnVuaworMjM5NzQgYjNhMDBkMzE2NWJlZTIzMDhlMTI1OTM1MmViNGM5Y2VkYmE3YWIyYiBsZWdhY3ktdHJ1bmsKKzIzOTc1IDI5MjVlMjdhMjgxYzUyMWEzYmYxYWExNDMxYjYzZGM5OWFhMzk4NzEgbGVnYWN5LXRydW5rCisyMzk3NiA3OThmNjE5OTdjMDhkNWQyZDA0MWVkYmZkMTc0YmE1MWU4MWYyMjMwIGxlZ2FjeS10cnVuaworMjM5NzcgNDEzM2FiZWY1YWJiZDFhMGZjOWFkODMyZTQ1MjE1YzE0ZTI1OTJkNiBsZWdhY3ktdHJ1bmsKKzIzOTc5IDE4NGI4YjlhMjY1NGNiZGZjZmNmNTdjNDZiNzM2OTIwNmM3MjI0MTQgbGVnYWN5LXRydW5rCisyMzk4MCBlOTEyYjY4M2VkM2UxNTM2ZjBiNGM5ZjVlNmUxZDNiNTZhMjBmNTQ0IGxlZ2FjeS10cnVuaworMjM5ODEgMzEwNDUwZTc0ZjJmNTdkZGZkYmFiMmFlNjhhOTJiYjM1ZTQ3NzQ2NSBsZWdhY3ktdHJ1bmsKKzIzOTgyIGE0NGNjMGMyMWNmZTMxNTQyNWUzODBlNjQ2YzAxYWQyZDFlMzMzMzcgbGVnYWN5LXRydW5rCisyMzk4MyAyODkwNzY5YjFlNjk2NjI0ZjZmOTNkMGE5ODFkYzQxYmJiYzRkZTM1IGxlZ2FjeS10cnVuaworMjM5ODQgYTZhNGJkMmYwNmQwZjlmZTI4NDcxMDg0NDk3OGY0NTZhM2ZiZjRhYSBsZWdhY3ktdHJ1bmsKKzIzOTg1IDdmNDA4OTUxOTkyNmU1YzVhMTQzMzE3MjQ0Y2I0YWRiZGYzYzE1MjQgbGVnYWN5LXRydW5rCisyMzk4NiAwOTFmOTY1NmQ3OWIzNTkxOGY5MDQyY2FiNjc4ZWFhMjE4MjUxY2E3IGxlZ2FjeS10cnVuaworMjM5ODcgNWU2ZjgxODdiZDQ4OTNmMzk1NDUwYjJmMWMzODQ4NWVmNzgzMDdjNyBsZWdhY3ktdHJ1bmsKKzIzOTg4IGRjZjc2OWMxMmQ4YjQxMmZiZGI3MTU3OTUyMjk0NTQ0YmRlY2ViNTAgbGVnYWN5LXRydW5rCisyMzk4OSA4NDcxNWQ1MmQ5NTRlOWQ1MDc5NDdiNTY1YmQwMDBkMGI5MzRlYmY2IGxlZ2FjeS10cnVuaworMjM5OTAgYzYzODQ1OTFkODQ2Y2U2YTFiM2Q2NmM3MjRhMTczN2UzNTIzNjRkOSBsZWdhY3ktdHJ1bmsKKzIzOTkxIDVlMzQ3ZTRlMDViZjVlY2M4YjBkYTQyM2ZkNDkzNGQ1YTY4ZGNlZTcgbGVnYWN5LXRydW5rCisyMzk5MiBhYWVmYzJmMjFiYWVmMWNlMzllODJkMGIzNDk0ZmNhYWQ2MWYxZmIyIGxlZ2FjeS10cnVuaworMjM5OTMgYWNiODU0Yjg5N2JiNjE1NGY4NDlhMzkwYTY4NDJlYTNkY2I5NzI0MCBsZWdhY3ktdHJ1bmsKKzIzOTk0IDY3NmYxMDZhNTAwMjNkNDEwZjI1YTAwMzYxYjdkNDEyMzhmMTAyZmYgbGVnYWN5LXRydW5rCisyMzk5NSA2YWM0NTI0NGM0MWUwYWU3Y2Q1NzcwYzU4NDQyNTMzZmNkM2MwYmY5IGxlZ2FjeS10cnVuaworMjM5OTYgZjIyNDYzMmQwMjYwM2YxYjY4NDM2ZWY0MjY3Yjk0NjViNDVkY2I4ZiBsZWdhY3ktdHJ1bmsKKzIzOTk3IDcxMzA3NTBhNjIyMjJlNDRmYzRiMWVjMWM0ODRkZTI0NjcxYTk5Y2EgbGVnYWN5LXRydW5rCisyMzk5OCA1ODdiNzQ4NTRmOGMwNTA0OTJiZTNhOWZlZTYwOTExOGIyY2QxYTEyIGxlZ2FjeS10cnVuaworMjM5OTkgYWJkNzFlODk4NDBmNzc4NDFmMDU0OGY2YzJkYWU5YTE4ZjI3MDQ0ZiBsZWdhY3ktdHJ1bmsKKzI0MDAwIGNkODM1Y2FhNTA2YzA5MmIxMDRhMWYyNjZmZjU4NjE2NGVhYjdlMzIgbGVnYWN5LXRydW5rCisyNDAwMSBjZDYwMDAzOWExMjNlMGY3YjU1NzNhZWEwYjJlZGFmNWVjOWEzMGU2IGxlZ2FjeS10cnVuaworMjQwMDIgNzNjYWJlNjY0YzExZWI2YmE3YmIyYjQyMTdmNGM3MGM2ZDUxNWY5YiBsZWdhY3ktdHJ1bmsKKzI0MDAzIDgzNTljMTE4OWY3MzAyNTA0OWRmOTFlMGRkMGM2MmVhYjU1ZDYyY2MgbGVnYWN5LXRydW5rCisyNDAwNCBiM2IyZmE3NmEzOTI5ZWNlZjA2YzFiNzkzODAxZTNhN2UyODY2OThhIGxlZ2FjeS10cnVuaworMjQwMDUgNjM1ZmExNGVkYTUwOWE4MWViMzU0MmM5NDBlMDQ5ZjUxOTA1YzQzMyBsZWdhY3ktdHJ1bmsKKzI0MDA2IGIwNjI4MDQzZTUzN2RhZDc4NGE1MDFiZjJmNjI2OTBkOWY0ZGQ4N2YgbGVnYWN5LXRydW5rCisyNDAwNyBmYWEyNzI2ZGVhMzcxNTc4MzdjOGI5Mjk2MmIyMDZjYzIxMzYwMThmIGxlZ2FjeS10cnVuaworMjQwMDggYTc4ODRlN2VlY2M5YjI1ODkzOTkxNzFjOTE1ODdjYjJlYjExY2RjNSBsZWdhY3ktdHJ1bmsKKzI0MDA5IDAwYTU4MWJkZWRlYmFmMDI0MmY1MWM5ZGFiNzg4MDFlOTVmZjU0NDggbGVnYWN5LXRydW5rCisyNDAxMCBjN2FhYzc4ZTIzYjQ5YzMxYmUxOTQ3M2RkYjlkY2E0MWY4ODExM2MzIGxlZ2FjeS10cnVuaworMjQwMTEgM2I4Nzc0MGQxYmJjODVhNjI4ODQ0NTZkZDllMDQ2ODI3MmJiYjliNiBsZWdhY3ktdHJ1bmsKKzI0MDEyIGFkNDVkMjJiMTk1ZDEzYTgyOWY1MmE0MTQ3MjkzMzQxZGFjMzc2ZWEgbGVnYWN5LXRydW5rCisyNDAxMyAzZTQ2MjU4MThmNWZmNTk2NGNhOGU5YzBhZjhlOTIyZGZlZmMxMDZjIGxlZ2FjeS10cnVuaworMjQwMTQgZDVmNmI0ZDU4MzgwZWFhNWQ2NGI3ZWQ5MmJhNzkwMTVjMjk5ZmEyZiBsZWdhY3ktdHJ1bmsKKzI0MDE1IDdkYTQxNzk5OTUxMTEzMDhmNjU5N2ZmMTNiYjc3N2U2YTZlZjk0ZjAgbGVnYWN5LXRydW5rCisyNDAxNiAyM2QyMzBlZjQxNWJhNTZhMzJiMjNlMmZmNjcyMzU4OGQwY2NkNGUwIGxlZ2FjeS10cnVuaworMjQwMTcgODM2MGQ2NDMyNzA3YzViODc0NDNlMDNkMTMyNTczY2U2Mzk4Mzg3ZCBsZWdhY3ktdHJ1bmsKKzI0MDE4IDQ2MTdkM2Q3NzBjNTk5MGZiYjMwZDA2OGNjZTEzZTgxZTUzMDgzZWYgbGVnYWN5LXRydW5rCisyNDAyMCA5ZjYyOTU1ZGU0YzNhMWU3MmIwZDIxMjQyZDA4NDljZDAxMjhkMDFmIGxlZ2FjeS10cnVuaworMjQwMjEgMDhkZmQzYzIyZjQxZGNlM2ExNDhiNmMwYTJiODIyN2Y1Y2I1NGFmMCBsZWdhY3ktdHJ1bmsKKzI0MDIyIDc3NTkyNmJjZjA2OTI1ZjcxZWI3ODE4NjhlOGZlNTBmMGJjMTZkYmEgbGVnYWN5LXRydW5rCisyNDAyMyBjOGJhMmRiMWMzYzI0YmNhZjAxZDc1NDk4NzNmN2JiZTY2YWFlMThkIGxlZ2FjeS10cnVuaworMjQwMjQgODUxMDlhNjA5OWI1ZTFmMjdiNDMzNzY2YjNkMDJiNjI5YzBjMDliZCBsZWdhY3ktdHJ1bmsKKzI0MDI1IGYyYWY0MmNmODI3YWI3ZTM5NjExZGI2ZDc2NzQzMzBhZDI3ZDU3NTYgbGVnYWN5LXRydW5rCisyNDAyNiBlY2Q2NDkzMTQ4MmM5ZjJlNzU1MTZjOTc2ZWI3MTU4ZmU0NjM4MWIwIGxlZ2FjeS10cnVuaworMjQwMjcgMjcyMzM2NjQ4ZDFmZjFlMmNhMWUxZGY3NTdlMThjYjQxNGQ3MmE1YSBsZWdhY3ktdHJ1bmsKKzI0MDI4IDE3ZjdjOWMxZDY2YTUxNGFiZDg4MjMyZDc3MTljNGExNzU0OGZmYWYgbGVnYWN5LXRydW5rCisyNDAyOSA4MjhiZjMxNzg4MGEyMDVlOWU3NDMyMDU3YWFjYzM3ZmRiZjRlZWNjIGxlZ2FjeS10cnVuaworMjQwMzAgMDUwZmM1MmFiM2Q0MTUyNzIwYTE2ZGE4YzY0OWYyMWRjMGZkMDZlNCBsZWdhY3ktdHJ1bmsKKzI0MDMxIGE0YmYzYzVjYzQ1YTJiYTIzYzQ3YTg4OTk5NDlhZWUwYTBiMTkxNDIgbGVnYWN5LXRydW5rCisyNDAzMiA1YjIzNmYzNzdhMjU4ODcxZmRlNjA2ZjI3MDM1N2Y4ZDM1ZTExNmUyIGxlZ2FjeS10cnVuaworMjQwMzMgNmFlYWIzODAyOTJlZDQ2OTljODJmZjlhYjBmYzFlNjYxNTliNDRiMCBsZWdhY3ktdHJ1bmsKKzI0MDM0IDA4MzQxMzYyMjU5NTk3YmE0ZmYzYzEyOWZmY2YxZjg5YjViMzQ4ZjAgbGVnYWN5LXRydW5rCisyNDAzNSA2YjE0ZDI5ZTUzMDg5NzAyZjBiMTM1OGE3OThmODViYWZhOTVhOGU2IGxlZ2FjeS10cnVuaworMjQwMzYgNzgxYWUxNzZiYWMyYzI1MjAwOGY0ZTUxY2UyZTdhOTMyOThhNzk0NyBsZWdhY3ktdHJ1bmsKKzI0MDM3IDM3YjhkOTJlMTJmNTE4ZGM3MGZhMThiZGNkYzdlNjRjYWY0YjNhYWYgbGVnYWN5LXRydW5rCisyNDAzOCAzYTA3YmQyYjAzODZlMWYzYjBmZmU4NDRmYjgxYzFlOTgzYTJmNTQ0IGxlZ2FjeS10cnVuaworMjQwMzkgYTZhZjAwOTM0N2UxMzEyODg2OWM1ZWY1ZDQ4NzA5MjdjOGViOTkwMiBsZWdhY3ktdHJ1bmsKKzI0MDQwIGIzZjQ4YzVkNmUxNjc0ODI2YjNhMzU5OTVjZmMzNjQxNTU2MjZlODMgbGVnYWN5LXRydW5rCisyNDA0MSA3YjA1NDZlZTQ3ODllZGQ2NTcwNWEwYmY5YTk0MmMwNjAwOGRjMTVkIGxlZ2FjeS10cnVuaworMjQwNDIgNTIzZWM3MDIxOGU0OTBhNmU4YjgyZTdjYTBlMjJiY2QyYjdlMjc3NiBsZWdhY3ktdHJ1bmsKKzI0MDQzIGViYTYzZGQwYzJmNWE5MmRmZTUwNDZjODk5NTQ1YzY4MmJlMDA3M2QgbGVnYWN5LXRydW5rCisyNDA0NCAxMjQ0ZWUxOGJhZWMzM2Y0NmY2YTBkZWRlMDk0ZWYyOGE5ZDhjZDc0IGxlZ2FjeS10cnVuaworMjQwNDUgNzQ0MTJlNTliZmY4MjYxMDAwYjVmNjg0NTU0YWY5M2Y2YTg5YzhjMiBsZWdhY3ktdHJ1bmsKKzI0MDQ2IDc2YTg1NzUyZDQ1MjRjMjQ0ODBiMWU3MzU3YjAzMmVhOTBlYzA3MjEgbGVnYWN5LXRydW5rCisyNDA0NyAxMDQzZTEwYmU3ODAwOTEyMTA0MTEyMTk4MzAxYTc0N2UzYzYyMGI3IGxlZ2FjeS10cnVuaworMjQwNDggNzQ0YTE5MjIwYTNjYjc2ZmUzMzBkZjIyYWUwNWFmNzE1MTg5MTY5ZSBsZWdhY3ktdHJ1bmsKKzI0MDQ5IGE2YmJhMzFiM2NkNzc1ODE0MjFkZTBjMTQxMzE1MjRiYzhmNGEyZDIgbGVnYWN5LXRydW5rCisyNDA1MCA1N2M2MWM2MjI0YTJmNGI2MGM3Mjc4ZTZhM2FhMzVhNTA3YTE0ODQ1IGxlZ2FjeS10cnVuaworMjQwNTIgNGJiNjc1M2U3ZDUzZWU1N2Q2ZDU2OTUzNWUxZGZhMWRiMjJhZTUwNSBsZWdhY3ktdHJ1bmsKKzI0MDUzIDYxMTIzYjg2MGI0NTU2YTRhYTdkNmNlZDM5Mjk2YTI4MmYzZWUxYTEgbGVnYWN5LXRydW5rCisyNDA1NSBhYjJlMzE1ODQ5YTdiNmM3YWEzMTViZmM4NTFmY2YyNTUzOTFhMDI3IGxlZ2FjeS10cnVuaworMjQwNTYgNjEyMjZkZGFkYzk3NTcyMzY4NGM1M2NmZDM3MTQ1NmJmMWZmYzgxMCBsZWdhY3ktdHJ1bmsKKzI0MDU3IGIxZDkwMjllMDlkMTRkNTE3NzU4YmQwMDdhY2IwMjY3ZDVkNzI4NWIgbGVnYWN5LXRydW5rCisyNDA1OCBhMmIxMWQwMGI2OTc0NjZjMjc2YjkwM2U4OWQ5OWU4MDIzYTUzMGE4IGxlZ2FjeS10cnVuaworMjQwNTkgYTkwMDJmYjBhN2Q3OWQzYjRjZGNjMTMxNGExM2E2NmUzOWMxMGIzYyBsZWdhY3ktdHJ1bmsKKzI0MDYwIDRkZjY1MjdiNzg4MjIwNzg4ODhmNzBiNzU0MTI1ODdkZDI1ODY0Y2QgbGVnYWN5LXRydW5rCisyNDA2MSBmZWI4MDUwOWZiMjE1MDYxODM2ZGE4Y2UyYzZlYWQ1MDA4NTAyNmY1IGxlZ2FjeS10cnVuaworMjQwNjIgMjVmZWQxZDA5NjA1MzVlMzEwODU1NWVhN2Q5NzkxMzFjYzFiYzdkYiBsZWdhY3ktdHJ1bmsKKzI0MDYzIDQwZGU4NGJjNjJhZDAyMTQ4ZjAyYWMyNjE3YzE4MjUyYzM5ZDBiZjUgbGVnYWN5LXRydW5rCisyNDA2NCA5NjFiMjRmOGUxZDgyOThmN2YzNWQ4NWE5NmU2NjdhNDc3NTM4Y2QyIGxlZ2FjeS10cnVuaworMjQwNjUgYzkxZjE3YTRkYzdiZjIyZTk3YWIwMmI4YmM2ZGUxNjU1MTI2NmU1ZSBsZWdhY3ktdHJ1bmsKKzI0MDY2IDJmN2I2OTI2ZTM4ZGQxMjU1NjQ4ZTk2OWI4NjdiMDkyMWFiMjdhZGUgbGVnYWN5LXRydW5rCisyNDA2NyBlMGFmMjgyZjVkZmFjNGFiOWMzYzViZjZlYWI1ZDZkNWNjMjdjNzY3IGxlZ2FjeS10cnVuaworMjQwNjkgNzlmY2JjMzFhMDNlYzlkZTQzOTVlYTQwM2E0NGI3YjYxOTlkN2E1OCBsZWdhY3ktdHJ1bmsKKzI0MDcwIDgzYTNlMjFhN2NjM2Y0N2FiM2IzZGM2Y2IxY2FmNTdmNjJjOWZjYmIgbGVnYWN5LXRydW5rCisyNDA3MSA3M2FiZTBhZjdlMDcwZWFjMTc4NzY4NzEyYmQ0MWE0OGY5OWRhYTc3IGxlZ2FjeS10cnVuaworMjQwNzIgOWMyM2FiYWI5NjJkYTUwYWYwNjIxN2Q1MWUzY2IzOGY5ZjRmOTgyYiBsZWdhY3ktdHJ1bmsKKzI0MDczIGZhOTdjOTk3MmQxYjM4ZWI3OTFjNDM1MmMwZmVlYWQ2MDBmMjNhZGYgbGVnYWN5LXRydW5rCisyNDA3NCA2MTBhNjQ0ZmQ0YzNhYmY0MmFlMmQzZmM1MzBjOTM3MTU5NDQzMjI0IHJlbGVhc2UyMS1tYWludAorMjQwNzUgZWY4YmQ4YmU5OGJlYjBiNWEyNDEzZGE2MDVkZGRjMTk3MTkwMzQ1NiByZWxlYXNlMjEtbWFpbnQKKzI0MDc2IGVlNzBmYWM5NTM1YjQ1MDliNTdiN2YzMjljZjA0M2JhZWM4MzQyNmQgcmVsZWFzZTIxLW1haW50CisyNDA3NyA3NTZiOWVkZjI1NGZjMjEzZDRmMjMxYTA5ZWNmOGE5MzljZmRmN2RhIHJlbGVhc2UyMS1tYWludAorMjQwNzggNTFlYWNhZGM4MTVhMjk2MDVmZThkODM0MzJlOTNiMDIzM2U5NTgwNSByZWxlYXNlMjEtbWFpbnQKKzI0MDc5IDEwNDIyM2IzMjI2YTQwYWIzYjcxZDRmNGViMTQwODU3YTRiYjAyOGYgcmVsZWFzZTIxLW1haW50CisyNDA4MCAwNjI5NjY2ZTY1YzUzZjhkNGNiNDQ4MzgxZDE5OTBlOTgzMWZkNTQyIHJlbGVhc2UyMS1tYWludAorMjQwODEgMDc2ZTVlNDllMjdkMzk0NjI3YTZlMWFmMGY0MDEzZDA2YTdmNzA0YyByZWxlYXNlMjEtbWFpbnQKKzI0MDgyIDQyZjIyZWE2YTBmMTM2MTM3M2VlYmFkNjUzOTFjYTUwNmZhNjFiOWEgbGVnYWN5LXRydW5rCisyNDA4MyAwMjZiZjBhYjY4YTUxNWI0ZDc5YTM5Zjc3OTNmNDAwZmM3Y2ZiM2JmIHJlbGVhc2UyMS1tYWludAorMjQwODQgNDY0ZDIxM2RhODg4YzdmMmYxMTYyYzIxZWU5NjYyNzUyNzllMzg5YiByZWxlYXNlMjEtbWFpbnQKKzI0MDg1IDgyMWUxNDJlMTlmYTRjZDgxYjBhM2VmNTRkM2Y0YTVhZTZhNGYwOTkgcmVsZWFzZTIxLW1haW50CisyNDA4NiA2ZDM4ZmJhMDVmMzU3NGU4MjcwMWM3NGNmYWY2NDhhNWZlZGIyMWMzIGxlZ2FjeS10cnVuaworMjQwODcgOGQ0YjY2NDJhNjA0YTAwMWI3YzJjNTlmZGU3NDY3ZjRjM2RkZTc1OCByZWxlYXNlMjEtbWFpbnQKKzI0MDg4IDE5NjUxMTZkMWFlY2E5NDRiMWViNWI1ZjEwMjYxNGM1NmRkODc2NDAgcmVsZWFzZTIxLW1haW50CisyNDA4OSBmNGVmZjMyNDdjNjZhYzlmODA5ODQwZjhlMjc4ZDY1NzE3ZDJhZDJiIHJlbGVhc2UyMS1tYWludAorMjQwOTAgZWYxZTljOGFhM2RkZmRiNjgwNDkxNjI2YjUxMzk5NzNmYTM5ZjdjZSByZWxlYXNlMjEtbWFpbnQKKzI0MDkxIDU3YWI2NWMyZjE3MDc5MWQ2ZTBhYzQxYmQ5Zjg1N2U2ZTAwOTE4NmIgbGVnYWN5LXRydW5rCisyNDA5MiAzZTA5OGE5NjM1NjFkNzcwMzc5MjA4NjlkZGYxNmU0ZDQzNmQxNTYzIHJlbGVhc2UyMS1tYWludAorMjQwOTMgM2E3NDhjYWEwM2I5MWExNTBjNWFmYjA4MjFhY2MxNzQ4ZTMyZjI4OSByZWxlYXNlMjEtbWFpbnQKKzI0MDk0IDlhZGVkNjIzNWQ4OTBlOTBhMjM3MzhkZmQ5ZDg1YjAyOTU4NzlhZGQgbGVnYWN5LXRydW5rCisyNDA5NSAyNjFhNzBjMGFhNzkyYzNiNjg2ZTc0NmJlMjA5ZDY3NDY1MTIzZjhjIGxlZ2FjeS10cnVuaworMjQwOTYgNTM0NmI2OTA2ZDFhZjg1ZTkxYTNmNzIwM2RiYzM4OWI5Y2U5N2E4OCBsZWdhY3ktdHJ1bmsKKzI0MDk3IGNhNDE4YTVmYTQ3MWNiOGQyNTk3M2VhYzliYjA4M2E0ZGUxN2EwZDUgbGVnYWN5LXRydW5rCisyNDA5OCA2NTZjM2M4NGRlYmVmNGVmN2I5YzQ3N2QwNTg5ZTI5NDVhNTAxOTNkIHJlbGVhc2UyMS1tYWludAorMjQwOTkgYzdhYTMzMmEyZmZhZmI3MzQwNGQ1N2M0ZDIyZTI3NWUxODdhZTAwYyBsZWdhY3ktdHJ1bmsKKzI0MTAwIGIzZDhkMjYxNWIyM2JmNGYwZGIzYjA4ZjdhODRkMjhhNDM4NTRlYzQgbGVnYWN5LXRydW5rCisyNDEwMSBkZWYyYTExOWQ1Y2RhMzFhNDZiZWJiNmVkYzVmYjY1Y2M1Y2EyNGVlIGxlZ2FjeS10cnVuaworMjQxMDIgMzc1MTM2NmMyZjM5MzFjYTlkYjI4MTEzZDY3ZWQ1NWFlZmVlN2Q3MSBsZWdhY3ktdHJ1bmsKKzI0MTAzIDk1MjAxMTUzMjUxY2JiMGJmOTM0NWZjNGZiNzlkNzdmZmVjNTA1ODEgbGVnYWN5LXRydW5rCisyNDEwNCA2ZjI1OWY3YmJlZDgwZTRhNWNhOWYzMmQ2MmYwYTBiZWRhYTEzYzdiIGxlZ2FjeS10cnVuaworMjQxMDUgMTRkYzY5M2FmNTMyMTk1Njk5YTgwMzU4MjRmMTlhYTEzZGY2YzI0ZSBsZWdhY3ktdHJ1bmsKKzI0MTA2IDVmMjRiMjBlMTAzZDIzMmQ5ODQ3OTVjNGJlYzE0Mzc1OTBkZTZlODEgbGVnYWN5LXRydW5rCisyNDEwNyBkYWI1MmRiZDEyYWExNDQ0YmU5NzczOGRiODRlOTIxOWVhYjMyMGYyIGxlZ2FjeS10cnVuaworMjQxMDggZDEzOWVjNDlkMjA0ZDcwNzg5Zjg0MmZlNzFkNzIxM2VmOGRjY2U1OSBsZWdhY3ktdHJ1bmsKKzI0MTA5IDg2MDQ3Mjg3N2RkYTE1MTExYjgxMWI0ZGE0MzBkYzk4Y2I2ODY4MjEgbGVnYWN5LXRydW5rCisyNDExMCBiMGMzMTBjZGI5ODY5YWY2OTNlMGJiMmZiNjdjYjY3MzliM2RjMGVmIGxlZ2FjeS10cnVuaworMjQxMTEgM2ZiZDI1M2RlYTVkNGE5YzZmODUzZjJiNGJkYTQzNzk4ODM4ZTE2MCBsZWdhY3ktdHJ1bmsKKzI0MTEyIGMxZWJjMDI4NWE1ZTdkMWIxOWM4MDc5MDgwYjZiYmM3MzY0MmJhMzMgbGVnYWN5LXRydW5rCisyNDExMyA5ODFlNTQ2OGM5YjUzMWZlZDQ5ZDAwMjMzNWJiNTZjMjk5ZTQ1MDg4IGxlZ2FjeS10cnVuaworMjQxMTQgZjE4N2QyNDA1NmY0OGQ4NTZmYWM0N2E0Mjk4YzJhNjIxY2E1MGQ5ZSByZWxlYXNlMjEtbWFpbnQKKzI0MTE1IGY2Yzc0NjBjY2FmODk5ZjEyMzg4ZmY4ZDQ4YjAyOGVkZDY2MjBhN2YgbGVnYWN5LXRydW5rCisyNDExNiAzODAzYWY5ZDg3OTYzZjhjMjk3YjQ3MjQ2ZjYxZmIwYWY4NTAxZjk2IGxlZ2FjeS10cnVuaworMjQxMTcgZWFjZjgxZGY2YzQyNzU2ZGZiYzFkNzM2Mjk3OTFlNDhkMjA1YWI3YyBsZWdhY3ktdHJ1bmsKKzI0MTE4IDkxNmYxOTFmY2ZmNDNmMDViNjQ5NWQ0MDQ1OGNlZGNiYjNmY2RmOGMgbGVnYWN5LXRydW5rCisyNDExOSA4ZDE0ZjUzNGE1YzI3NmY2OWM1ZmI5MDNhNWQ5NmUyNDMzNGQxMDZiIGxlZ2FjeS10cnVuaworMjQxMjAgNjk5MGZlOWM0MGY2YTdhMjhiMGU5MGEyNDk5MTNjMmNmYzA2MzAwMSBsZWdhY3ktdHJ1bmsKKzI0MTIxIDRhZGU3NmE2YjI0NWJhNzhkYmVlODU4YmU5MDM3ZjNiMmE1ZGEyMDggbGVnYWN5LXRydW5rCisyNDEyMiBlMTBkOTA3MGUxMDczMmMxMWVjM2FiNTNjNGVmYWRjNDcxNjlmMzUyIGxlZ2FjeS10cnVuaworMjQxMjMgZWM2MzJhNDFlZTM1ZDliNjQ2MTM0ZGNhYTE4YTU5NTJlYjg5MzBjYSBsZWdhY3ktdHJ1bmsKKzI0MTI0IGQ5YTlkOTI2MjRkYjk3NDI4YTM0YzJhZWRiZGRlNGQwZjk1NmY5N2EgbGVnYWN5LXRydW5rCisyNDEyNSA0MDRhZWVjYTUxZTljNDUxYTEwYmNjM2ExYWZmYjA1NDQ3MDA5MjU4IGxlZ2FjeS10cnVuaworMjQxMjYgMjk2MmYwMTkyNGM5OTdhMzVjZjkyZWVmNGNhZTY0MGRkNmQwZGRlOSBsZWdhY3ktdHJ1bmsKKzI0MTI3IGYzNGE4ZGY4YmJhNDYwMDg4YjFlZTkzNDFjNDM1YThlNzU0OThmZjcgbGVnYWN5LXRydW5rCisyNDEyOCAwNTNkYmQ5YjU4ZGYwM2MwMDIzMTk3ZDgzMDk1YmJmMDg2ZWJjNTFmIGxlZ2FjeS10cnVuaworMjQxMjkgNzdiYjJhZTA2N2MyNThjZDRhN2Q2NmNhYTkzZDFhMjcxY2Q3M2JiZiBsZWdhY3ktdHJ1bmsKKzI0MTMwIDA0NDRmNTc2YzkyYjE5ZTgxYzI0NTVkYzYyMDViMTA0M2M3NTQ2ODQgbGVnYWN5LXRydW5rCisyNDEzMSA2Mzk4ZDEwNTVmY2ZiOWRlMmNkZDg2NWM4YTc0MjA5YTgyZTBjNjk1IGxlZ2FjeS10cnVuaworMjQxMzIgOGNmMWQ5MjY2OTExMzI4ZTgzZDZlNDg2OTkyZGFkY2UwMGY5NjcxZiBsZWdhY3ktdHJ1bmsKKzI0MTMzIGQxYjNjYTg5ZDc4YjQ5ZGJkY2ZjYjViMDkyZGU4ZTNmMmY0OTk3ZTMgbGVnYWN5LXRydW5rCisyNDEzNCAyNDEwNWU5ODlmMTc4ZjJmNjA4ZTUxZDFkZjBhN2RiZjk5MDJmMmQ0IGxlZ2FjeS10cnVuaworMjQxMzUgMTVjOTI0YTExYWVjYzRkZTRhNjc4ZDk0Mzk4NzFjZTg0ZTgwODBjNyBsZWdhY3ktdHJ1bmsKKzI0MTM2IDBjYWVhNWZlZmE1YzFjN2RkZTY4YjE3MjU5ODNhZWFmYzQ3OGY3MTAgbGVnYWN5LXRydW5rCisyNDEzNyA1YTQ3YjU4YTQ0YmI0ZTRhYjEzYzFhNTViNjM4Mzk3MmQ5ZWJkNjUwIGxlZ2FjeS10cnVuaworMjQxMzggZDliOWI1YjQ4MTViNjIxZGNmMzJiMGM0NjZhOTNiOWE4ZWRmYzc4YiBsZWdhY3ktdHJ1bmsKKzI0MTM5IGQ2ZmYxZGFhZTM5ODE3NjQ2ZTc4YTg0YjQwN2NlOTgxNjgxNGUxNTcgbGVnYWN5LXRydW5rCisyNDE0MCA4OTU3MzQxZjk4Zjg0N2Q2ZjRkNjNkZTBkNDYwN2U2ZjVkZWU4YTVhIGxlZ2FjeS10cnVuaworMjQxNDEgZjU0ODI4ZWI4ZTA3Njg5YTFmNWRkNTk2MGIwMTBmOTc4M2U4MWE4OCBsZWdhY3ktdHJ1bmsKKzI0MTQyIGViYmRjMzhlYjExYzhhOGJmOWYxNjVlOTU2OGVlYTAxYzliN2M4NmQgbGVnYWN5LXRydW5rCisyNDE0MyA0MGE4ODk4OWQ2Y2JhNDRlODUzYWUyZWEwOTUwODY0YWFjMjU3NDczIGxlZ2FjeS10cnVuaworMjQxNDQgMmQ5ZTQxYTcyYTY4YjM5MjRhNWVhNzc5ODZjYzliMWUwZmUxMGQ3NSBsZWdhY3ktdHJ1bmsKKzI0MTQ1IDdiYjMxZmI0ODNiYzg2N2I0NDc5MmEzOTU5OGM1ODY5MzMyODg4MGIgbGVnYWN5LXRydW5rCisyNDE0NiBhOGE2NjEyMGJhZGVkYmFkYmY4YmMxOGI5MzU5NjJmZTdlN2FlMmZmIGxlZ2FjeS10cnVuaworMjQxNDcgZjU3NmZmZDU3OTY2YjU3ZGFiZDY1ZDY1MmI3MTIzOWE2MjI5YjU2NSBsZWdhY3ktdHJ1bmsKKzI0MTQ4IDdlOGNkZTQ2NGRiNDBlOTkyOGZjOGNiNDMyNWI2NDBjZGJlNjU3YjMgbGVnYWN5LXRydW5rCisyNDE0OSA3ZTI0N2YwODM3ZTI2OTU0NGQyYmE4NTg2Zjg1NTRjZGE2ZjY2YjdhIGxlZ2FjeS10cnVuaworMjQxNTAgODExYWNlM2M0MGQwMWMyYWVlYjBlNDNiZThmNmIzZWJiMTE5MGZjNiBsZWdhY3ktdHJ1bmsKKzI0MTUxIDE3OWNkMzcwYjYyMWZhMjRmYzM2YzgzY2YyNjdlNDdkOWQyYmI4MmMgbGVnYWN5LXRydW5rCisyNDE1MiAyNzg3NGM4NjAyNjgzNzMxMTkxOGRjNjQxY2M0Y2I1MDJkYjg0Yzk1IGxlZ2FjeS10cnVuaworMjQxNTMgZDU0ZTI5NDQ4NGIyYmZkYjNiMjcxYTA0YzhiMDg2MWNmMjNjZjEwMSBsZWdhY3ktdHJ1bmsKKzI0MTU0IDczMmVhMjJlYjUxODJmZDMwYTBlYjI3ZjNjMDhkZmRiNjE2ZDU3YmQgbGVnYWN5LXRydW5rCisyNDE1NSA4YTcyZWY2YjgxMThkN2M1YWM3N2E0MWU4ZTU2OTExOTY1MDJiNzBlIGxlZ2FjeS10cnVuaworMjQxNTYgZWVmOWJkODdmY2MwNzhkODg5NjExZGYyNTliNzhlMGY5NjMwOTA4MiBsZWdhY3ktdHJ1bmsKKzI0MTU3IDE5ODE3YTRmYTJiNmNmYmJiNTUwYWY3ZGRhMDg2YTBhN2Y3MGQxOTcgbGVnYWN5LXRydW5rCisyNDE1OCA4OWQxNzFmNmJjN2Q2MzA1ODI1NzA0ODcxODZiZDUxNDk0MDMzNzk5IGxlZ2FjeS10cnVuaworMjQxNTkgNmVlMTljMTliMmMzNzNhODM2M2I3YzVmMGYwY2ExNDA3ZWI4OGMxNiBsZWdhY3ktdHJ1bmsKKzI0MTYwIDVjNDM1YjViNTlkZjkwZWYxNTJmY2I5OWM3NjQzNGMwZTc2NWY5OWUgbGVnYWN5LXRydW5rCisyNDE2MSBhNjBjMWU4YjBiYmJlYmE4ZjA4MjVmMDhkMWE2OWZlOTUxYWRjYWZkIGxlZ2FjeS10cnVuaworMjQxNjIgN2Y1NjFmZTllZGZjMjI4M2M0OTJmMmE5Yjg1Zjc3YTU2ODBhMTZhYSBsZWdhY3ktdHJ1bmsKKzI0MTYzIDBjMTc1MTViMDVkYjhiN2EyZTQ2Y2Y2YWIyMTcxNWE5YzY3MmRlYTkgbGVnYWN5LXRydW5rCisyNDE2NCAyY2QyYWU0ZGUzMGQ5MjFhYjJmNGY0YzI0NGVjNWZiYTQ1ZmE2NzBlIGxlZ2FjeS10cnVuaworMjQxNjUgNjQwZjAyODRlMzBhYjI5NGNjYWM1ODM1MjQ2ODJiYTc0YTgzN2ZjZiBsZWdhY3ktdHJ1bmsKKzI0MTY2IGUyMzE0MGY2ZmI5MDM5NmUzMzQ3NmE5MjNhODQ5ZDA2MTEzZGIxY2UgbGVnYWN5LXRydW5rCisyNDE2NyA0MWQyZDAwYTMxZjE1ZDkxNThkZTU2ZGVjY2RmMWJjNDhkYTAwM2NkIGxlZ2FjeS10cnVuaworMjQxNjggZjQ2NzlmNmE5NThmOTU0ZTk2Y2RmZGY5NTYwNDBmY2I4ODU3NDQ5MCBsZWdhY3ktdHJ1bmsKKzI0MTY5IGRlNGY2YjE0ZDM4MGFjZDEzNWZkMTdmMmIzODkzNzYwZmFmY2E5NmEgbGVnYWN5LXRydW5rCisyNDE3MCA1YjYxYTJmZjY5NmQwZjVhODY0YTQ2NDhlMjJkZjdhYTdhMzAyZWZhIGxlZ2FjeS10cnVuaworMjQxNzEgYjVmZTlhOTQxNGZjYTY2Yjk2ZjU3MjNiZjc5YjgwYjYzMDQ5NmVlNyBsZWdhY3ktdHJ1bmsKKzI0MTcyIGFmMzY3MzgxMmUzMzYxMmExYWJiZjVmODg0YzFjZmQwYWI0YThhYTYgbGVnYWN5LXRydW5rCisyNDE3MyBlMTg0YmJkNzE2N2MzZjA0N2Y5YmQyNDFjZjEwNGIzZDhiY2QyOWIxIGxlZ2FjeS10cnVuaworMjQxNzQgYzNkM2RjODI3NjRjOWY0YTE5ZTExMTFiY2YzNTQ3YmE2OWNhOTE4ZCBsZWdhY3ktdHJ1bmsKKzI0MTc1IDg3MjJiMGFiZWFjNjI3OGVmZmM4ZTc2MWY5NjdjN2MyOWJmNDFlM2QgbGVnYWN5LXRydW5rCisyNDE3NiAwYjYzMzJjMmFiYTAxY2FjZTY3NmM0MzZlNWIxOWU4ODc3YWQwNTA4IGxlZ2FjeS10cnVuaworMjQxNzcgMzU4NjQ4ODczYWRlYTJkYmUwYmQ2ZjkxYzIwYTQ3N2UwMzZhN2E3YyBsZWdhY3ktdHJ1bmsKKzI0MTc4IGQzZjNkMjFhYzA0YmM5MzYzMjhkOTA3NjA4MGNlYTU2OWNjN2NkMGYgbGVnYWN5LXRydW5rCisyNDE3OSBiZmNjMmVkOWNhYmEyN2VkNDAxZjMwM2M1ZjliNWM4NmJlOTdmY2NhIGxlZ2FjeS10cnVuaworMjQxODAgZjJjNzg4YWRiZGJiYWYzYjQ1ODE0ZjA4MjJhYTVlNzQxYTI2YTlmNiBsZWdhY3ktdHJ1bmsKKzI0MTgxIGIwYTZkYmM5MDA0NzA2Mzk4NzRjZjJkODRmNjIwOGRmYjYyMDVmM2MgbGVnYWN5LXRydW5rCisyNDE4MiA2MDI3ZmRmMWViZGEzYWMwOTlhZWU1M2VkNDA1MTA0YzU0OWEzMWQ5IGxlZ2FjeS10cnVuaworMjQxODMgMzE2ZmZmZDgwYjE2MWM4ZDIzZjQ5MWEzMTc0Y2IzOGE3ZmFkYTkxZSBsZWdhY3ktdHJ1bmsKKzI0MTg0IDgwYmFhMjdiZjBlYzMxNjUyNzlmNDU4MTYyNTA2ODk0MWQ0NDQ1YjAgbGVnYWN5LXRydW5rCisyNDE4NSA2NjllZGRmNDcwYmFkZDZlNzc4NzNiMmNjZTY1ZjMzMTdhYWU2MGFkIGxlZ2FjeS10cnVuaworMjQxODYgODM0NjI1NWNjYTdjN2E5MTJmOGRmZjY5NDBkNTRkNWQzZDRjZjFjZCBsZWdhY3ktdHJ1bmsKKzI0MTg3IDU1YTA2MGY0MTczZjcyMDY2ZDY5YzgwNDQ3OWJkMjEwOTIwZTc0ZDcgbGVnYWN5LXRydW5rCisyNDE4OCAwNmQ5NWI2ODc3YzQ1YWFmOTkwZGNjOWI4MDNkZmEyNjZhNjQ1NTg5IGxlZ2FjeS10cnVuaworMjQxODkgZDg4ZGQ1YzJiMjgyYjk1MDYxNDVmYTZlNTZlNTMwMjQ1NGQ1M2I2YiBsZWdhY3ktdHJ1bmsKKzI0MTkwIDkzMjUzYzY1ZDg2MzExNWNlZjU1NTAwZmIzYTQ5MjlmMmY1ZDUzMWQgbGVnYWN5LXRydW5rCisyNDE5MSAyM2EyMDk0ODRmMDI4ZTY2MWU4NGUzODI5MTY4Yzk4Nzg2MTM3YWQ1IGxlZ2FjeS10cnVuaworMjQxOTIgYjk4NTBjNDQ3NTZiM2M3OGMwYjlhZWVkNTdlNWYzYzRjYTcxOThmYSBsZWdhY3ktdHJ1bmsKKzI0MTkzIDIwMDE0NzE2NTU2YjZiYmJhYTY4MjMxOGM3ZTQyOTMxNDY4YjY2NTggbGVnYWN5LXRydW5rCisyNDE5NCA3YjU4NjQ5NDdiYWY2Y2M5MzQ4OTUzNjQxYWVjN2M1NTAxMmNiMzA4IGxlZ2FjeS10cnVuaworMjQxOTUgYjIxYjQyMzMwZTQwMjE5ODk4Yjc3MTQ0YjE4M2RiMzk1OTEwMmJmYSBsZWdhY3ktdHJ1bmsKKzI0MTk2IDkwODcxZmE0M2Y0ZTBhZTAxMTQ3YjQxN2U5ODYyYWEwMmE0Y2ZmMTQgbGVnYWN5LXRydW5rCisyNDE5NyA5ZTg4ODViYmRiYzk1MzMxYmM0ZGQ4NzBmMTI2MDcwNzYyNTZmMGExIGxlZ2FjeS10cnVuaworMjQxOTggN2E5OTFkMDEyY2Q2MzFjYTEyMDQwMWY5OWJiY2IzNTUwMjlhZjY3OCBsZWdhY3ktdHJ1bmsKKzI0MTk5IDk4ZGJiMDc5YzVkNDhjMWM5YzdjOWE4ZDQyM2Y0NzQ1YTg0ZDU1MTUgbGVnYWN5LXRydW5rCisyNDIwMCAyMWZhNzU3OTA4MjIyM2M3NjUxNGIyOWZhMDJkZTJiY2MwZTY3ZTM2IGxlZ2FjeS10cnVuaworMjQyMDEgZWUxNDM3ZjVkZTAzMzI4ODlkNWU4MzRlZTdmNDA1ZjBlODY0MTVhNiBsZWdhY3ktdHJ1bmsKKzI0MjAyIDdjZWRiZmFjNzQ2Yjk3NzNkMjQ5OWQ1NzQ3YmEyNzNmNWYxOTFkNjMgbGVnYWN5LXRydW5rCisyNDIwMyA1YzAyZDIxNWEzOGRiOTAyNjg0MWNhZTE1MzAwOWVjOTQyMzdlYWZmIGxlZ2FjeS10cnVuaworMjQyMDQgMmI1ZDMzMjlkN2UyYTRiZTkzYzkyMjdlNjY3ZWM0ZjQ5MGI5M2M4YSBsZWdhY3ktdHJ1bmsKKzI0MjA1IDlhZWQ3NDUyODY2MWY3MjUzNzZhYzQwMjYzZDBiYmYzMDc0OWUyOTUgbGVnYWN5LXRydW5rCisyNDIwNiBmYTdlMGQwMGM4MjhlNDVlNDZlOWE3NTk4MGVjYzEwNTNiNmRmMTg1IGxlZ2FjeS10cnVuaworMjQyMDcgY2Q2MDZhNTg0OTAzZTQ4MTVlZmJkYjUwNTI5MzFkN2UyOGViMDY0NyBsZWdhY3ktdHJ1bmsKKzI0MjA4IDE5NzUwNWU2NzUyYTI1NGRhOGI1NDMwMGY1ZmM5ZmJlM2UxMmE4NDggbGVnYWN5LXRydW5rCisyNDIwOSBlY2NlNWQ3ZGE2MDdkZTRhZjI5M2NlNGUzOTVmMTIxNmMwZTlmZTJiIGxlZ2FjeS10cnVuaworMjQyMTAgYmE5NDU1ZmM0YzhiMGUyNWIyZGE2NDk1MzM2OGQ4MjY4MDMxOTJmYSBsZWdhY3ktdHJ1bmsKKzI0MjExIDBiNjQ1MjBjMjAwYzg4YzdkNGU0NWMwMzk5MGRkNjZlNWY4N2E4Y2IgbGVnYWN5LXRydW5rCisyNDIxMiBlMDUzZTQ0Zjk2NjZmZjhkYTQ2N2Q5OTQzOWQyY2UxNDljNTkyN2Y4IGxlZ2FjeS10cnVuaworMjQyMTMgMTNhMThjYmZmZDljNzBiY2JkYzFkMjAzZDAxZjFiZTEzNjdlMGI4NCBsZWdhY3ktdHJ1bmsKKzI0MjE0IDU0MGU1MzI1ZmM2YjA4ZGIyMjA0MzE0NWUyYzZhYjBlOGM2MWYyNTkgbGVnYWN5LXRydW5rCisyNDIxNSAxM2RmOGI2YzJiODBjNzUyODE2MjJkYmNjMDMzM2Y2OWYxMTQ5OTFkIGxlZ2FjeS10cnVuaworMjQyMTYgNDVjOTUyZDJhNjExMzUyMzNmMjE3NGRiMGM4NmYzM2QyZjk0YmI0MCBsZWdhY3ktdHJ1bmsKKzI0MjE3IDVlNzM1ZjE5N2NhNjdkYmY4NmM3ODM5NTcwNjNjNTUyNTMyYzM0NzkgbGVnYWN5LXRydW5rCisyNDIxOCBkM2RkMGMyYTE3NzFkODVmZWZhYjZkOTJlMzkxZTY3ODEzOTBkZGJiIGxlZ2FjeS10cnVuaworMjQyMTkgZTRkMzgwZjVmMjk3NjY0MWI2YjYyZjQ4NjY4ZTA2MzNlNDYxZjgwYSBsZWdhY3ktdHJ1bmsKKzI0MjIwIGMzYjMzZWFkMzU0NmVmNDFiOTc0MWZjN2YzM2I0ZWI2ZTNkODA5ZTAgbGVnYWN5LXRydW5rCisyNDIyMSAzYzVkMGVlYTFhZTJiMjI4Y2E3YThjOGNmNjlkMTQzNzRkNGUyMTE3IGxlZ2FjeS10cnVuaworMjQyMjIgZWYxMmM5ZGRlZmE3MDU2MDNiOTAzNGU1YTY3MzYyN2M3N2Q3MmIxZSBsZWdhY3ktdHJ1bmsKKzI0MjIzIGM1NTVmMWU3YzRiZTRkOTNkMzk4NmEyOWQyN2M3M2UxMjgxNGU0MDcgbGVnYWN5LXRydW5rCisyNDIyNCA5YmZjMzFjYTgwZjM0MmZhMjQ2N2VhMTZhM2Q2NjkyNjU1YzNkNWE0IGxlZ2FjeS10cnVuaworMjQyMjUgZDI3Y2U4ZmU0M2Y4Mzk5MWYzMTQ3MmU0ZTczM2U4YmU5M2IzN2U5MCBsZWdhY3ktdHJ1bmsKKzI0MjI2IGMzYjA4MzE5OTU5YzRjYTA5ZDJkMzUwYzU5OGNiOTllMzY1YmY0MTggbGVnYWN5LXRydW5rCisyNDIyNyAwZDE3Njc4NDRjNGI3MDdhMjRiMGFmOGZmMTQxZDhkMjBiZDE2NWU1IGxlZ2FjeS10cnVuaworMjQyMjggNzcxYjAyOWJkYjhhMTgzNmNjZjBlNWMwMmJmOGI0ZThjNDhiYjQyMCBsZWdhY3ktdHJ1bmsKKzI0MjI5IDllZGU0ZDZjYzlkZThkNWVkZjIwMDlmODUyYWNlZjE0MTM3YzM2OGMgbGVnYWN5LXRydW5rCisyNDIzMCBjM2IzZTJlNDAwMzVlYTBlN2UyOWZhZTdiM2Q1YjEwMjJmOTMwZmU1IGxlZ2FjeS10cnVuaworMjQyMzEgNjE1YTRmNTYwMjY4NTEwNjg3MzJjMTY0MTdlZmY4YTM3YTM0M2E3MSBsZWdhY3ktdHJ1bmsKKzI0MjMyIGY3OWNmZDA1NGYyMWI4MWM5ZTIzN2U1ZWQwNWJiOWYyNjQzNTc0NzIgbGVnYWN5LXRydW5rCisyNDIzMyBjYThiZWM0YjMzODM3NDJjZjNhYmUzOGIxMTM3OGZhNTQ3ZTkyMWU0IGxlZ2FjeS10cnVuaworMjQyMzQgYTEzZDdjZDBlZjdmMjc1MTFkMTRjZjZiMzIzMjhlMTRkNTBhYzE5NiBsZWdhY3ktdHJ1bmsKKzI0MjM1IGRhNWZiYzFlYjFkMDVmZjkxYzYxNjRhMjQzNDlkNDYyYTJhNDE0NmEgbGVnYWN5LXRydW5rCisyNDIzNiAzZDUyMmNiYjdhODFmMTk2NWIyNzdiNzU0OGUzNWM2YWU1MTBjZWVjIGxlZ2FjeS10cnVuaworMjQyMzcgMzAwYjY4ZDYzYjlmNGMyNWJiNWIwNjIzYTcyMzU1YzY4OGQ4Yjc5YiBsZWdhY3ktdHJ1bmsKKzI0MjM4IGEzYzU3ZTU5YjVhODEzYmZkZmI0Y2E3MTcxNTM1Y2Y2ZGVhMzI5OWIgbGVnYWN5LXRydW5rCisyNDIzOSAzZTlkNmU5ZmJlNThmNmE2MzZkY2U5NDcwNjZjOTIwMjUxMTg0ZmFlIGxlZ2FjeS10cnVuaworMjQyNDAgOWNhN2U0NmZhYTI0YmMyOTg0YThkZmRkZDE1MTY2YzY4NjhkNzI4NiBsZWdhY3ktdHJ1bmsKKzI0MjQxIDU1NDU4MThmNTgxYTgyZjZkNjMzYjFjNmU3ZDllYzJkMzYxZTgzNzEgbGVnYWN5LXRydW5rCisyNDI0MiA5MGEwZjA5NTE4YzhmNmVmMmI1MWZhNDlkZjg1Njc5YWMxNGNkY2NlIGxlZ2FjeS10cnVuaworMjQyNDMgYmI4NzE2MDk1YTgxYTVjZDU1NjUyYWNiYzYxZmVjMGVjYTVkZTBjMiBsZWdhY3ktdHJ1bmsKKzI0MjQ0IGYxY2ZkY2E3M2Y4Njk1ODc3YzhiZTllZjhlYjBlYjQ5YTE4ZjE0ZjUgbGVnYWN5LXRydW5rCisyNDI0NSBjMWVjYWZkMTU1NjBiNTE5YjFlNjQ0MTllNTFlY2VjNGE2MWMyNmYyIGxlZ2FjeS10cnVuaworMjQyNDYgZTE2N2I4MmM2NDQ0MGQ4MGMwZGNhN2Y3Yjc4MjQ2YjQwNWU1NDk1NyBsZWdhY3ktdHJ1bmsKKzI0MjQ3IGViYThjNzcxZGI2NGNiNTA5OGEyYTdiMWY1ZThhNjFjNzA1ODBlMGQgbGVnYWN5LXRydW5rCisyNDI0OCBjZTY5ZDRlZTJmYTAwZTE3YWY2NWNjODU3Mjg5OWM0NjlmNzY2ODgwIGxlZ2FjeS10cnVuaworMjQyNDkgYWM1MTkxNmJmZGEwN2UyZDg5MGMwOTI5MzFiZTJmNDU0MzQ4NWVhNiBsZWdhY3ktdHJ1bmsKKzI0MjUwIGYxNjcxYTYxMDA3OTkzOTYwYWUzZGU0NzAwNmJjZTcyNGZlM2UzNzUgbGVnYWN5LXRydW5rCisyNDI1MSBlNzFjY2ZiZjM2YmI4ZGVkNjI4NDYyZGFmNTQ3NDljOTM1NjdmMTE4IGxlZ2FjeS10cnVuaworMjQyNTIgMDdmMWQyYzVkZDA0MWM4ZDg0MTE4ZjRiNmE2NmNhNDBiZDhkYTBmZSBsZWdhY3ktdHJ1bmsKKzI0MjUzIDk1ZTM1ODRhYmU0NTc2ZTFkYzQ4MmI2Mjc0N2QxYjc1NjJmNzdiMGIgbGVnYWN5LXRydW5rCisyNDI1NCA0NGYzZjVhNWJmZTI0NWQ3NGFhN2QwODZkZDU1OWFhMjdhNmYwMzNkIGxlZ2FjeS10cnVuaworMjQyNTUgNjNjMTQ2Njk1MjdlNDk3ZDkwNDFhMmYxOWIxMmYxOGZkYjhlMjRjMiBsZWdhY3ktdHJ1bmsKKzI0MjU2IDRiOWU2M2NmMDJhNmY4MjhjOWQwYzkwMzFjMmRjNTY1N2NkZDNkMDUgbGVnYWN5LXRydW5rCisyNDI1NyBiMGRmMWZkODE4ZmMxZjU2NWIxYTI0NWUxOGFjYjkwYWE1NzQxNzgyIGxlZ2FjeS10cnVuaworMjQyNTggYjE2M2U3ODZhYzc0ZTRhNTY3ZTQxMDhiOTA1MTg3YzQwYjc0OWEyYiBsZWdhY3ktdHJ1bmsKKzI0MjU5IGY3MTFjZjQ1ODUyNWVlZDdjYmY4YTJjMGQxNmQ0NWFiOGZmOGVjYTUgbGVnYWN5LXRydW5rCisyNDI2MCBhYWNlNGZhZmYxN2RkOTI0NWVkZmI3ZmI1MTRmMmZlZjMyNDQwYTIzIGxlZ2FjeS10cnVuaworMjQyNjEgZjk2ZTg5MWNmMGU0ZWU1MmRiOWI0NGQwYWVmMTc4YTk4NDY5YWVkYyBsZWdhY3ktdHJ1bmsKKzI0MjYyIGFjMmJjMDdlODY5N2Y3NjVlYTU5NDlhNjM5NDgxY2IwMzlhZmY0Y2EgbGVnYWN5LXRydW5rCisyNDI2MyBhODVhM2MxMGJhNGRhNGFkOTBjYjM4MTA5NDcxN2NlMWE0NTQxOTYyIGxlZ2FjeS10cnVuaworMjQyNjQgMDFlNDdjZTk2MjAxMGY2YzE0YWFlMGJhYTEyYmViMWRkMGMyNDVjMyBsZWdhY3ktdHJ1bmsKKzI0MjY1IDgxNjI2NGJkYTEzNmNlNjIxN2Y4NTlmMGYwYzg3YWUxZmQ3ZWM0ZmUgbGVnYWN5LXRydW5rCisyNDI2NiAwZDFkZWI0MDIxOWY5ZmMwMjg3ZmNkZmExNzE1ZjI1NWRiMWM2NzBhIGxlZ2FjeS10cnVuaworMjQyNjcgNWI1NzhkNGQ4OTAyYjk1YjUyMWRkYmUwYjQ4OGEwY2E0Y2NlODAxMSBsZWdhY3ktdHJ1bmsKKzI0MjY4IGQ5Yjc4NTNhMDQzMWIzNjg0ODg2M2VlYTJkMTVmMDM4OWU1YzI4YmUgbGVnYWN5LXRydW5rCisyNDI2OSAzYTU0M2FmMTljNzk1ZmExOTNmNDg1MmEyNjIxYmQxZWMwMGQyMzRiIGxlZ2FjeS10cnVuaworMjQyNzAgMjJkZjNlZDExZTIxOTZkYzJiMzhmNDBlODdlMmM0ZWFiMmUxZjMyMSByMjJiMi1icmFuY2gKKzI0MjcyIDA5MjQ0YzQ2ODMwZjdiODkwODZiYjhjMmY3NGQyNjI5NDhjNzhhYzIgbGVnYWN5LXRydW5rCisyNDI3MyAxNzRjY2IwMzViM2Q4NTg5M2JiODBiYWY4ODUxYWYwOWNmODI2NWM4IGxlZ2FjeS10cnVuaworMjQyNzQgNTcwYTU0YmIxYTU5ODg4MmMxMDViN2UxYzJkZGI0YjI2OWMxMWY4NSByMjJiMi1icmFuY2gKKzI0Mjc1IGMzMjliODExZWU1NDk2YmQ1OWM0ODQ5MjQwNDcwNGFlMzhhMzY4MmEgcjIyYjItYnJhbmNoCisyNDI3NiBmMGI1NzVkNmZlYWE3MGRmNDMzOWU0MDQ3Y2E3NzMwN2U5YjJjMjhjIGxlZ2FjeS10cnVuaworMjQyNzcgNTU1YTllMDAxOWE3Nzk5NmI5MzliZDllNzdjOTZjOWViYTA3YjQ1MCByMjJiMi1icmFuY2gKKzI0Mjc4IDZiZmZkMmUyMzI2YTMxNDE4MDY5ZmQyNTgwNzdhOGE4OWVhNThkYmIgcjIyYjItYnJhbmNoCisyNDI3OSA4NGJjYTFlZjExNjhiYzk3YTgyZTU0ZjdkNDc3NDRkZGQ1OGQ1ZGRlIGxlZ2FjeS10cnVuaworMjQyODAgM2UwY2NjY2M0ZGNiMWU3N2FhYjFlOTVkNWQxODczOTc1NmRiYmI5OSByMjJiMi1icmFuY2gKKzI0MjgxIDQ2NWJhYjA3ZDJhODg0ODA4ZjYwMDVkNDhjZDYzNTIyNTk2MTUzMmQgcjIyYjItYnJhbmNoCisyNDI4MSBmNzE1ODFjZTdhM2NlZDY5YzFiYmU1YWI5MTM5OTBhNWM4YzQxNjk0IHIyMmIyLWJyYW5jaAorMjQyODMgOTJkNmY2Zjk3YzcwYzk0ZjY4ODdhNWMzMjM0YzgxZGM0ZWY0NWVlNSBsZWdhY3ktdHJ1bmsKKzI0Mjg0IDMwZTEzZjBlYTc2YjIxYzdhMjUyY2U0MjM0NmJhMDIzMjJhYzhiM2QgbGVnYWN5LXRydW5rCisyNDI4NSA0MzY1MzFiMGFjZjgxYTE0N2JhMDdlNjI3MDQ0ZWVlOGVhMTM0NWEzIGxlZ2FjeS10cnVuaworMjQyODYgZjdiNjEwMDU5M2RjZjE3Njk1YzNkYzMzMzc1ZDEyODhkYTc5ZTAwYyBsZWdhY3ktdHJ1bmsKKzI0Mjg3IGJlYTkyYzNkNzdhMzJhNDE2ZTYzYjBlY2I2MDc4OTgxM2RkMjhjODIgbGVnYWN5LXRydW5rCisyNDI4OCAzOTRkYTRlZmZiZWM2ODgyODRjMjhmMzEzZjc0YWQ5YzA4NzJiYjFkIGxlZ2FjeS10cnVuaworMjQyODkgZDkxNGUwZjM5ZjgzNzhlMzE5Mzc2MzBhNTU2NmNhYmNhMWZlMGQ0ZCBsZWdhY3ktdHJ1bmsKKzI0MjkwIDFiNGUyYTc5NzU5NjFhMDg5ZGE5NDBhYjA5MTA3ZTBmZjJkM2I5ZjEgbGVnYWN5LXRydW5rCisyNDI5MSA2ZTEwYTE0OTllMjQyM2QyYjQ3ZDRmNGNkMjRiNmVjNzlmZDZkNDM0IGxlZ2FjeS10cnVuaworMjQyOTIgOTRmZTE3YzY3NzE1NDA4MDI3OTA2MmU3YjQ1MTVhNGQ2YjViMGEzNiBsZWdhY3ktdHJ1bmsKKzI0MjkzIDYxYTJkZjU2NzQ2ZWVlM2ZkYTFmOThmODY5Y2QyMTc4M2QzNDZkNjIgbGVnYWN5LXRydW5rCisyNDI5NCAyMmNlZGVkYTJhNzNjYzU5NmM2ZmE3YTgzMzAxMjhiMzdhYWI3ZTgzIHIyMmIyLWJyYW5jaAorMjQyOTUgYjVjMmY3OTRkODA1OTM3MTdlMmU4NzdmNjE4MDQ5NzRkOTQ3NDcwZSByMjJiMi1icmFuY2gKKzI0Mjk2IDFmZGI4OWE4YjYyMTk5YmE4ZTYyODgxNzlkM2U0NTRiZTk3Y2EwYzYgcjIyYjItYnJhbmNoCisyNDI5NyA0NGM3NzgxZDNmMGNjZDQ4YzExOTdjNDliYThhNTY5NmVjOWQ0YmNiIHIyMmIyLWJyYW5jaAorMjQyOTggNDFlZjk4MmE2NGIxYjFkMTlkN2FhOTkzZWZkYzBkNjNmYTE1NjhmNSByMjJiMi1icmFuY2gKKzI0Mjk5IDEyNjg5NWEzOTJiYTczZmI5NzgzNTdjM2JkZWVmMWNlYTJmOTViM2YgcjIyYjItYnJhbmNoCisyNDMwMCAxNDVmYWYyOThjZGNjMTMyNGNlY2JlYmQ1ZGIyMzYxNWNmNmI0N2Q4IHIyMmIyLWJyYW5jaAorMjQzMDEgOTRjODU4ZmVhZTdmODg2MTBjZjNlMzI3YzA3MjY0MWE4N2IzMTc0MSByMjJiMi1icmFuY2gKKzI0MzAyIGM1MmJiODYyZDBmNzczNTRkYTdjNGRhZjQ3YzkzODA2ZmE1MDk5MGIgcjIyYjItYnJhbmNoCisyNDMwMyAzMGE0MDgwYmMzMGI1OTFkY2NiYTgzMTNkYmFkYWFmNzQ3MDNiY2I2IGxlZ2FjeS10cnVuaworMjQzMDQgNGE5YTljYzA0MWRlY2U2YTE5ZTFkMDhiMDBjOGNmMDc0MWVmY2ZjOSBsZWdhY3ktdHJ1bmsKKzI0MzA1IGZlMjkzMjdlNDcxY2UyZTZmNGYxYzU0ZDFmMTUxZTdhODY3MWQ3NzMgbGVnYWN5LXRydW5rCisyNDMwNiA4YzMyMTlhNGRjZDZkZWI2MTlhODVjNmI3MDc0NzE4NThjNjhiZTEyIGxlZ2FjeS10cnVuaworMjQzMDcgNDFiOGQ2NjczMGQ2MWY0YTFhNjBlYTk5NWI0NDE5MDEyY2ZiZTgzYSBsZWdhY3ktdHJ1bmsKKzI0MzA4IDMzZWI2M2I4NmExOTM2ZWU0NzQ4Y2VhMmZjNzIxNWI1MjViMDQ3MGEgbGVnYWN5LXRydW5rCisyNDMwOSA0OWRjMTQ0YTE1NTU3YzE3ZTZhOTE1NzNjOTRkYjE2ZmY2NzAzMWEzIGxlZ2FjeS10cnVuaworMjQzMTAgNTdjNzkxYTVmODFjNzU4NzJiZWRiZTRiZDAzMTlmNzFlZjMwNTY3NyBsZWdhY3ktdHJ1bmsKKzI0MzExIDJiNjUwYzIxYTU2MzhkNThmYWRlODcwNGI2NzI3OGVjYzU1Y2NjYjMgbGVnYWN5LXRydW5rCisyNDMxMiA0MjM2NWI3MGU5ZDhiOGU0ZWI1MDRiMzA1MGY0MDY3NDYyMGQ5YmY0IGxlZ2FjeS10cnVuaworMjQzMTMgZjRkOWZhMjA3ZTQwZTViMGViYWRlZTcyNjQ4YTBkMzUxZTU5NTg3NCByMjJiMi1icmFuY2gKKzI0MzE0IDYyYzYzYmE5MGRmMjEwYmEzNjBhOGY5NzVmNjYxODE1ZTgzZTk3N2YgcmVsZWFzZTIxLW1haW50CisyNDMxNSAwZjQwODI2MWIzYzhiN2FhYmFjMWQzOWIyNTVkNjlkNTlmMGQyODlmIGxlZ2FjeS10cnVuaworMjQzMTYgYTk2NTM4MTE3MzFhMDAzYmE0ODAxY2NhMmQ3MDNiYzkxMzBkZWMyMCBsZWdhY3ktdHJ1bmsKKzI0MzE3IDlmNjZhYWRkZjhkNDBiZjFhMzgyMWYyYWQxOTFmOWRjMzg3ZjhlNmMgbGVnYWN5LXRydW5rCisyNDMxOCA3ZWJjM2UyOTgzZDExYjJkNWZhM2NjNTY1NDlkOWZhOTgwYzU5OGUzIGxlZ2FjeS10cnVuaworMjQzMTkgMWRhZWJmZjE3N2VmMTM3N2UxY2I5OTBlMzJmYmQwMWY5ZmNlOTU4OCBsZWdhY3ktdHJ1bmsKKzI0MzIwIGY5NTdkMzk2Yzg0ZTcxZGYyMjdiZWY3MzBjNjIxMjhlMmFhZTU4ZWUgbGVnYWN5LXRydW5rCisyNDMyMSBlNzlmYzI1N2JjYTBlNmVkMTA3ODFiMDdiYTgzNzc2NjE2Y2E2NGVhIGxlZ2FjeS10cnVuaworMjQzMjIgZGVlMGU4NjY2NTNlNmU0MWI1ZjY1MWEyMDkyMjM5MGViZGQ5OGIwZCBsZWdhY3ktdHJ1bmsKKzI0MzIzIDNkZmJiZjQyYmYxNmFlOTdmYmJkMmE0NmVmMTNiMTliMGZmMGM1ZWIgbGVnYWN5LXRydW5rCisyNDMyNCAxZWU3NWJkNGVlMzQ2OGQ1MTdiYzUxNzViYzdkZjYxNTg4ZjdhODM2IHIyMmIyLWJyYW5jaAorMjQzMjUgMTA5ZWQ2OTY0ODMyYWRmODdjOWIwNGRjNDU2MDYyZjcxZTAxYzRlYyByMjJiMi1icmFuY2gKKzI0MzI2IGJkMmU4OWQ3N2Q0NWFkZjE3YmUwN2Y4ZDUxMjgxMmYzN2FlNGI2MTUgcjIyYjItYnJhbmNoCisyNDMyNyA0YzgzMjg3OGRlNzRlYjcyMWE1ZjZjZWZkYzE2YjlhYjRkNDI1ZDBiIHIyMmIyLWJyYW5jaAorMjQzMjggZTNlM2NkNDdiYWQ1ZmQzODNiYzU4YmIyMjU4OTI1ODI4YWY3NDEyOCByMjJiMi1icmFuY2gKKzI0MzI5IGQyMTAyOGQ1Y2M4NTI4YzQ2NWQ3OGQ2NmUyNmVjZjQ0YjEwMTg3MzEgcjIyYjItYnJhbmNoCisyNDMzMCA0ODI2MGIwYjUyNmY2OWExNWExZDQ3MGQ3ZGM3NmQxZWZlYTU3N2I0IHIyMmIyLWJyYW5jaAorMjQzMzEgZWUyNGJkMGNhZDI5MDNiMTA4NGFmMGIxODMzNjk0NDNmNzM5ZTY3ZiByZWxlYXNlMjEtbWFpbnQKKzI0MzMyIGM3ZTgzM2IzY2Q5YzVhYWEyZmVmNWRkMmNiNTIzYjM2ZDg5ZmYxNzggcmVsZWFzZTIxLW1haW50CisyNDMzMyA5NzQ2MjE5ODEzZjk5NzkyN2VlZGMyN2FkZWVjNTUwZTY1ODkyYzFlIHJlbGVhc2UyMS1tYWludAorMjQzMzQgMTFjYjNkZTA4MjNkYThlYzI4YjhlMjU2NDJkNTcxNTk1ODc5ZDIyMiByZWxlYXNlMjEtbWFpbnQKKzI0MzM1IDIyMzk1MzA2OWExYTA5ZjAyOTZhZjJhOWRhZjEwZWQzNjkxMDQwMjkgcmVsZWFzZTIxLW1haW50CisyNDMzNiAzZmMwNmMxMTQ5YTQzZGIyZjg2NmE3NTM5ZWU3YWY5Y2IwYjkzYWMzIHJlbGVhc2UyMS1tYWludAorMjQzMzcgYzQ0OTk1OTZiMWE0MGZkOGJjZjFkODk2Nzg4NzA4ODI3NGI4ZGI2MSBsZWdhY3ktdHJ1bmsKKzI0MzM4IDFjZjc3ZGY5NWY0NTI1Mzg5NzY1OTNlNGY5YjdlZTgxYzMyN2RjOGEgbGVnYWN5LXRydW5rCisyNDMzOSA1OTgxZGZkZGE4NTcwYjYxNzIzZWQ4OGY5OTE5ODkzMjMwOWJjNjdmIHJlbGVhc2UyMS1tYWludAorMjQzNDAgYWZiNzg5YWFkYTE2ZmQ4ZGE2ZmQ0MmQ5M2U0YmQ2ZWFlODFjZjYxMyBsZWdhY3ktdHJ1bmsKKzI0MzQxIDc3OGU2YTgwZmNlZTRmNTVmZjQzNjZkODhhZGNmZGMzMjk1NmI0MTYgbGVnYWN5LXRydW5rCisyNDM0MiBjM2U2ZTYzZDliYTJkODI5ZjAxY2M2ODYzOTRhMThiYjhmZjY5MTY1IGxlZ2FjeS10cnVuaworMjQzNDMgZTVjZjc0Zjc5MTY3OWJhZTE1ZWEzNDM0MjY3ZTE0ZGQzMTQ4MzRlNiBsZWdhY3ktdHJ1bmsKKzI0MzQ0IDA4NDZiNGUyNTE3ZGYwMjhiY2EyYTRiNmQyYTAwMmU4ZmUxMTkyNTYgbGVnYWN5LXRydW5rCisyNDM0NSA3MGI0MzA2ZjQ4OGRiMTQ2MGVhMTAwOTdhZjc4MWU0ZjViMWYyZGI5IGxlZ2FjeS10cnVuaworMjQzNDYgYjNkNjI3ZWUyYjczZmUxYzA1ZjcwNjFhMzJiOTY1YThmZDc2ZjYzMiBsZWdhY3ktdHJ1bmsKKzI0MzQ3IGU2ZWFmOTU3ZWEyNmY3MTY0ZGZiNmQwYWQwNGMwNjI0NmU4ODhiNzQgbGVnYWN5LXRydW5rCisyNDM0OCBiMTE0YjEwMDc0MThlZTJlMTBkMTQxNmMwZjFhMjBkNzYzY2U0Yjk1IGxlZ2FjeS10cnVuaworMjQzNDkgODgxZjQ5YmVmY2EzYzAxYTA0YmE5OGNjNmQwN2ExZDJhNDUyMDI4ZCBsZWdhY3ktdHJ1bmsKKzI0MzUwIGNkMGI3NWIxOWRmN2Q4MjYyNzgyYWE1NTcxNThjYWIwMzUxZjAwNDEgbGVnYWN5LXRydW5rCisyNDM1MSBmZWQ1MDcxZGE5NTc1ZDRkNjk0NDVmNDhjMzAyMWU0MTFlNmFmMjQ2IGxlZ2FjeS10cnVuaworMjQzNTIgN2NhNWE0ODFjMGQxNzk1NTY5NjNjZDJkZWM1NTZlZjU3YWM4NDdhOSBsZWdhY3ktdHJ1bmsKKzI0MzUzIDFhZTJhZmU2NzVmZGE3YmNjNTEwY2Q5NmNjZjllYzUwNGM3NjMxNjQgbGVnYWN5LXRydW5rCisyNDM1NCBkYTM4OGUxZDQwNGJmYjgzZjU5MTAzYmYyOGM2NjJlZGNjMzc3MGI5IGxlZ2FjeS10cnVuaworMjQzNTUgYjdmMzhlNzY1MTQ3OTMzOTM1YWFkZWM2YTA1YWVjZGFkYWY3NDJkNiBsZWdhY3ktdHJ1bmsKKzI0MzU2IGJjYmRhNjA2ZDhjNzU3MThiNDAyODNjN2M1Zjk4MWMxNjBkY2NiNmEgbGVnYWN5LXRydW5rCisyNDM1NyBkNDU2OTFhNjk4N2ZlOTY3YTA1ZmJiY2YxYjdmMDk3YzQ5MGNmMzM4IGxlZ2FjeS10cnVuaworMjQzNTggYmFjOTQyZTY4NWZhZDJkYmJkMjBkOWY2M2FlODE5YjA0MmM4MzdkYSByMjJiMi1icmFuY2gKKzI0MzU5IDM2Yzg5N2JjZjRkN2U2OTQyNDAxMTM4NjIzZWYzYzM5Zjk5MTJlYmEgcjIyYjItYnJhbmNoCisyNDM2MCBmOGZkYmZhOGQ1ZjNiODJmZWE5OWY5NWViNzk5Zjg3ZDg3MmQ4NjM2IGxlZ2FjeS10cnVuaworMjQzNjEgMmMwYTlhNTA4NmUxMGI5OWYwNDFkMGIwYWNhMmRiNmNjMWRkZDQ3MyBsZWdhY3ktdHJ1bmsKKzI0MzYyIDlkZjgyYzEzYzY3NWYwNzQwMDJkMDI4MzJiZmFkOTkxMzU5NzY2ZGUgbGVnYWN5LXRydW5rCisyNDM2MyBlNzYzMDZlZWEzNzA5NzUwZGI1NzY4MzVlYWM1YjY3ZDIxYzQyZmZiIGxlZ2FjeS10cnVuaworMjQzNjQgNTk3ZDEwY2Y3OTM4ZTliYjI2NTk3ZTMzNmY1YWVmMjZkM2Q2ZTE2OCBsZWdhY3ktdHJ1bmsKKzI0MzY1IDE4MDJhOWVkYjRlZWY0ZDhlNjBlZmQ4ZTE3NTljOTQwMGFlYjA3MjcgbGVnYWN5LXRydW5rCisyNDM2NiBiYzAyYzNiMDk2MjZhMDQ1ZjY2YjQ3OTBkMmM5Zjc3YzY2ZGU0OTllIGxlZ2FjeS10cnVuaworMjQzNjcgZjE4NzQ5NmZmYWVmOWQyMWZjMjYzODkwZTlhNTk3ZTg5M2U5Yzc5MyBsZWdhY3ktdHJ1bmsKKzI0MzY4IGEyZDc4ZTIxYTc4NTdlMTZlYzA3ZTQwNjk3MTAxMDQyNWMwMmJiNjEgbGVnYWN5LXRydW5rCisyNDM2OSA1MGNmYmRkYzYwMzdlOTc1MWU4ZTE5N2VhNDc5YTdjMTYyZGQzMzBjIGxlZ2FjeS10cnVuaworMjQzNzAgMjI1YzdkZDE3ZTM3MjY3OTQzZDNkNzNhY2U0NDAyN2JjM2E5YTgwYSBsZWdhY3ktdHJ1bmsKKzI0MzcxIGM5YzRjNTIzZGNiZjEyOGQ3YTY1YWI3OWFiZDcyYjJkMTRlN2NjOGQgbGVnYWN5LXRydW5rCisyNDM3MiA5YjA1OWYxYjJhMWYwNTY5OThmOTk4NjUxMjdjMzEwMmRjMDFhMmQ0IGxlZ2FjeS10cnVuaworMjQzNzMgN2QzYTIxMWVmMjMzNjk5ZmVkYWY0OWFkOTA5NzI0ZDg4NjJhYTE5YyBsZWdhY3ktdHJ1bmsKKzI0Mzc0IGJhNjdiOWM5N2I2OTZiZjYyNTVkNWIzOWIwYzJmNWEwNzVhNTlhZTUgbGVnYWN5LXRydW5rCisyNDM3NSA2MzkyZjAzMjIyZTAxMGU4MDMzODY3MjhhNzlmZGE4NjhmMzc1ODJlIGxlZ2FjeS10cnVuaworMjQzNzYgNjM5YzBhM2FlOGRjYjQ1ZGExNjFmMmQ4MGVjZDhkMjc5MTAxNmQ2YiBsZWdhY3ktdHJ1bmsKKzI0Mzc3IDMwNGIzNDAyMzg3NjkyMGY1NzA0NjVjMjg2MmJlZDQwNmY0MmM2YzAgbGVnYWN5LXRydW5rCisyNDM3OCA0N2VhNzNmZDdlNmJhMzBjYjk4NmIwMTM3OTE0ZDczNzkwMmE2MDNhIGxlZ2FjeS10cnVuaworMjQzNzkgZGM2NDFlMTI1NmY5YzRkZTgwNzI3ZWY2ZDI1ZGMzMDAyMDllODBmOSBsZWdhY3ktdHJ1bmsKKzI0MzgwIGM1ZmJlOTJlMDJkM2ExNTcwMGM5ZjQ5YzRlZDhhMjliMzZkZjhhNGUgbGVnYWN5LXRydW5rCisyNDM4MSAzNzlmYzY2ZjRjOTZkMGExZjdjMTc2ZjliZWRkMTBjZDczNWI2ZDJmIGxlZ2FjeS10cnVuaworMjQzODIgMDI1YWQyN2Q0MjI0ZjQ1NzI0NTEzNGZjYzliYWVlMGIzODZjZTZhNSBsZWdhY3ktdHJ1bmsKKzI0MzgzIDhjZWY3NWNhY2IwMTYwNGNkZjAwMDBhZGZlYjY2OGM2NzFkNDk4NWEgbGVnYWN5LXRydW5rCisyNDM4NCA1YjQ1OTY3N2ZjNDQ0ZmM5YjBjMDNiYmI5NmRkNTBhYjE4YTBkMTk5IGxlZ2FjeS10cnVuaworMjQzODUgOTRmNWE5ZmEzNTgzNDc1MDgxNGQxNjI5ZDY3ZDQzZGFlYmQ5NDBiMyBsZWdhY3ktdHJ1bmsKKzI0Mzg2IGM4ZDc3NWI5ZmY5MmE5YmI5Mzk1ZDUwYjZhZjZmYTIxNjg2ZGE0MzAgbGVnYWN5LXRydW5rCisyNDM4NyBkM2I2NDAxY2EyNzNiNWU0YzhlY2RhM2FhOTM3NzU4OWZiODA0MzMxIGxlZ2FjeS10cnVuaworMjQzODggNTJjZTg4N2RiM2M5MzFhNjM4ZTFhZjVmY2E1YzIzZThmNzk3OGYzZCBsZWdhY3ktdHJ1bmsKKzI0Mzg5IDNlYjI0ZjRjODhkNWIxOWNmZWE0ZjhkZWVjOWJmMTQ0NGFlZmIzYjUgbGVnYWN5LXRydW5rCisyNDM5MCBlYTViMGYwYjcxNmYyNTQ4NDMyNjhhOTI3YTI4NGM3NDc2NDRkMWI4IGxlZ2FjeS10cnVuaworMjQzOTEgNDFlYTJhYmI3NGZiMzljMWJjNzc3YjZlZjdhOGFiMTk2OGU1N2Q5MiBsZWdhY3ktdHJ1bmsKKzI0MzkyIDM0N2VhNjkzMDAyZDUyYjg5ZTMxMGQwYjQ1ODYwZjNiMTNmYjRiNTMgbGVnYWN5LXRydW5rCisyNDM5MyBkOTVhNGVjNjg1ZTBlMzhhMzk3NGVlY2JhNjlkNTA1YTIxNmE0OTkxIGxlZ2FjeS10cnVuaworMjQzOTQgNWUyNWM2Njk3NDFjZjkxMWExZGFhOTExNjFiNTU3YjRmMzdjMmE5MyBsZWdhY3ktdHJ1bmsKKzI0Mzk1IDQ3ZjY1MzM2NzRmZGEyZGI2MjZiZGZiNjM3NDMzNzM1ODVhOTNjYmIgbGVnYWN5LXRydW5rCisyNDM5NiA1MzI3MGQyODFiZjA4M2JkOGQxNjRlMjg3NmQ0NDY0ZmE2MDlhZTViIGxlZ2FjeS10cnVuaworMjQzOTcgN2RlMTMzY2JiYWYxOGU4NjgzYTA0ODEzMjkxMTJhNDU2NGI0NWM4MCBsZWdhY3ktdHJ1bmsKKzI0Mzk4IGMyMTUwMzEzZDlkMTNlNmI1MjZlZWNiMWY1MmE0MGU0OWQzYjE4NjUgbGVnYWN5LXRydW5rCisyNDM5OSBiMTI4MGNiYTc5YjU5YWMzZjZiOWNkNGRmMWZjNDM0YjQ3ZDA5M2U3IGxlZ2FjeS10cnVuaworMjQ0MDAgY2RiNzBiZjg4ZGIxYThkMGJhNjAwZjQwMjQ2MmRhMTMzYmEwNjAwZCBsZWdhY3ktdHJ1bmsKKzI0NDAxIDliYTNjODI5NDZiODk2MWMxNzY3OWU2ZTAzZWI2OTdlY2Y4N2U0ZDAgbGVnYWN5LXRydW5rCisyNDQwMiA4MmQ4NDEzNjM2ZTc3OTBkNTVmOWY4ZmI4M2I0NDc1ZmUzZmI4ZWUwIGxlZ2FjeS10cnVuaworMjQ0MDMgODNmYzg4MzUwZjgwYTIyYjllY2FjNTc1YmRkMTExMTc3NDY5NWRiNyBsZWdhY3ktdHJ1bmsKKzI0NDA0IDBmZWFjNDVlZTY2MmVmZDA5ZTczMGM2NDgwMGMzZmU1MmU1Mjc0ZmYgbGVnYWN5LXRydW5rCisyNDQwNSAxODNmMjg1OTk3MzY2MzFkNTA5MjMwMzk4ZmIyNzEwMjUyMWY5MTE5IGxlZ2FjeS10cnVuaworMjQ0MDYgZDZjMTgzY2EwOTNjODAzYjQ2ZWU4NmI3MDRhOTYzYjlhMWEyYmZmNiBsZWdhY3ktdHJ1bmsKKzI0NDA3IGNlYzgwMDkzMWEzNzBkMjVjOTRhOWZhZTMzYThmZjM0ZjZlMjkxMjUgbGVnYWN5LXRydW5rCisyNDQwOCBlNDIyMDMxYjhmZDcwODYyZTA1Nzc0YTAzNjk4OTU0NjU3YjhlZGRhIGxlZ2FjeS10cnVuaworMjQ0MDkgNjc0NzEwNzBiOTY2ODNjMWYyZTVmMGYzZmI1ZmUwN2VjMjI5NDg3OSByMjJiMi1icmFuY2gKKzI0NDEwIDExNDc1ZGQ0NmZhNzYxMzI3MDQ3MjNlMzNlODgyYjE2NGY0NTQzYjMgcjIyYjItYnJhbmNoCisyNDQxMSAzNGZjNTIzODMxMGQzM2M0MDg1MzRlZWZhOGY3MjAyMTlkYzc0ZTlmIHIyMmIyLWJyYW5jaAorMjQ0MTIgZTlhMDFlMjRhNGE5NzRmNTRjMGI0YjhkYzFiMzU0Njk4ZGNhNzljYiByMjJiMi1icmFuY2gKKzI0NDEzIDYxODVhNjdiMzAxMjg0MDllOTUzODE3Y2Q5ZGUxOGQ1MmQwNWI1MzMgcjIyYjItYnJhbmNoCisyNDQxNCAwM2FlYTc1NzVhZmJhNmJmOTgyMGQxYmM0MzIzMDkwOTAwODJhZGIwIHIyMmIyLWJyYW5jaAorMjQ0MTUgYTcxOGJhOTkyZjEwNGFmM2Q5YWJlN2E5ZWE5NDViNmI5NGQ1NTFkMCByMjJiMi1icmFuY2gKKzI0NDE2IGJlMzlmYTU1NThjNTQ1ZGEzM2U5YzgzM2U0NTc1ZTFhYzk3ZGYwNTAgcjIyYjItYnJhbmNoCisyNDQxOCBkMTk1MTNlMjg5M2M5OWVmZTVlYmNiZjE1ZTUxNzZjNTA0YmMwYmMxIGxlZ2FjeS10cnVuaworMjQ0MTkgMzgyN2YxMzZlMGQ2ZTZhMGExOTU0YWEzOTI1YmU5ODI5YmJhYjJmYSBsZWdhY3ktdHJ1bmsKKzI0NDIwIDI3MTFmOGRiMTY0Y2ZhYjVlN2Q5NGRkZWY0Y2UyM2M5ZWUzYTNlMzIgbGVnYWN5LXRydW5rCisyNDQyMSAxMjY2OGQwYWY4ZjdmNTRmNzkyN2U4NjlhMmNkMDI4OTk1MDNmZTJjIGxlZ2FjeS10cnVuaworMjQ0MjIgMDUwOTUzOThmOTM5MmUyZTg3NGEzYWVjNjliOWRiNTU3MjYzYjYwZCBsZWdhY3ktdHJ1bmsKKzI0NDIzIGFmMWM1ZmI2YTcwMzkyYjMwZWM2MWExZjFhNjMxMzFhYzRjZTE5MGUgbGVnYWN5LXRydW5rCisyNDQyNCA4ZDBjMTA2ZDkwOTkyNjgxMWUzM2EwMzdlYjMzZjExNmIzNGIwNjIxIGxlZ2FjeS10cnVuaworMjQ0MjUgMzhkMGJkMGZhN2YyZTdiNzBiYjUzZTljOWU5NDUzMzk1YTU5ZDY0MiBsZWdhY3ktdHJ1bmsKKzI0NDI2IGVkM2RjZTE3ZmM3OWI3YTZjNmZmY2NjNmEyOWRjYzU1NTFiZTA2YzYgbGVnYWN5LXRydW5rCisyNDQyNyBmN2RiMmMwYTMwZmNlOGQ1OTczYzIwZThiMTg0ZGQ5ZTBjNzEzN2I3IGxlZ2FjeS10cnVuaworMjQ0MjggMGVkNmZjN2MxYzA5M2QwNmNkMDhkNThmNDQzYTg5ZmI2YjMzMjI3ZSBsZWdhY3ktdHJ1bmsKKzI0NDI5IDBhNjc0NjNmOGI3ZDIyNTljOGZmMmZlMWU2MTZlNGU1ZTg4Y2E1YTkgbGVnYWN5LXRydW5rCisyNDQzMCBjZjc5NzAzMzQwNDE4ZmQ3NGQ5NDNjN2Q4MGYzMzZhYjk2N2Y2YTMzIGxlZ2FjeS10cnVuaworMjQ0MzEgMmU2Y2UzYTU2Mjg0YmZlY2E1YjhmN2E1YTYwMGMzNDRkODc4YjIxNiBsZWdhY3ktdHJ1bmsKKzI0NDMyIDQ5M2Y5MzJkNTgyOWIxZGM4YzE4MDJjMTE4MjQwZmZjNmNlZWZiMmYgbGVnYWN5LXRydW5rCisyNDQzMyA0Njg1MzA3Mzg0ZWIwZDdmZDMxYTA4NjBhOGM2NWQwMTY4MDVkYzAzIGxlZ2FjeS10cnVuaworMjQ0MzQgNjcxYTg0ODY2YWM5OTk2MzhlY2YwZWJkOGE2NjJlODc4NmFhMmUwMyBsZWdhY3ktdHJ1bmsKKzI0NDM1IDY4N2I4YzcxOTJhMWExNjZjMDZkNDdhYjcwZWM5ZmUxY2IwYjk1MDEgbGVnYWN5LXRydW5rCisyNDQzNiAyMTgyMDczMmExMTcxYmZjNjc0NmI3MmFkM2Y5ZmY0MDcxNzgyZTRkIGxlZ2FjeS10cnVuaworMjQ0MzcgMjFiYjRjNGI3ZTI2ZjUwODcwNmViNzhiNGZlNTQ4Y2Q1YWE5YWEzNCBsZWdhY3ktdHJ1bmsKKzI0NDM4IDE3ZTg3YWEzNzc5NjJjNTg2NGQ2YWQwOWY3MjQwZmI4MTAxNWY3MzQgbGVnYWN5LXRydW5rCisyNDQzOSA2YjZhOWNhZTI1NmVlMzFjMzRjZDg2NWRlYjMwMjE4MDhkYzI0YWEyIGxlZ2FjeS10cnVuaworMjQ0NDAgZGQyOGE0ZWNiMzdmNjA5Mzk0OTUxMGU5YmU0ZTM4OWY2ZGMyYWFhNyBsZWdhY3ktdHJ1bmsKKzI0NDQxIDE1ZmY1MDQ2MzJlZDZhOGU4MWQ3N2Y5MDFlM2E5ZGVkNTQxZTMxMzcgbGVnYWN5LXRydW5rCisyNDQ0MiBhMTNhNDM5M2Y0NWMwMWVhZWIwYzAyNTEzNmYxNGM1MDdkYWIzMjNlIGxlZ2FjeS10cnVuaworMjQ0NDMgNmUzNDE1MWFlZmU2NjMwNTNmMWJjZDI4ZmRlMDFhYzNmZDk3NzIyMyBsZWdhY3ktdHJ1bmsKKzI0NDQ0IDYwZTM2ZDUxODc1OGYxZTI5NGZjMTcyYjljZDJhNjZmYzBlNTYxMzMgbGVnYWN5LXRydW5rCisyNDQ0NSBhOWE4NzM0MWE5ZTdiMDZlY2QwNDhmZDQwNzA0ZDVkZDU1OTQ3ZmNkIGxlZ2FjeS10cnVuaworMjQ0NDYgZWM4OGZjNDMwMTI3NjExZTZhODgwZWJjYTlmNjBlNWY3NTQxZGY2NCBsZWdhY3ktdHJ1bmsKKzI0NDQ3IGFiZTE0YWM2MjAyNDIxMzc1NTM4N2Q2MmMxZDA5MDk2NDg2NWNhYzMgbGVnYWN5LXRydW5rCisyNDQ0OCA5NDM2MzliOTQ0YWI0ZWUzMmIzM2Q5NGZiMTVlMGI3ZDhkODgzMjg0IGxlZ2FjeS10cnVuaworMjQ0NDkgMTk3YTkwNDg5YmVlZDljNWRhZDU0NzBmZjE1YzVmMGM4YWYwMWE2NSBsZWdhY3ktdHJ1bmsKKzI0NDUwIDViOGYwN2U2Mzk5YzFlNjcwMmU5ZGE0MjM1MTU5ZjE2OGJhYTk3N2QgbGVnYWN5LXRydW5rCisyNDQ1MSBhMmQwM2NlYmE4MGViZmE2MjVjYzJhNDU3ZThmMTA0NTA3ZjNlYjA1IGxlZ2FjeS10cnVuaworMjQ0NTIgNjc1MDhhMzUxYWEyYmZiYjYyNzkwNDBiZjA3OGY5N2QxMWIyMDkyYSBsZWdhY3ktdHJ1bmsKKzI0NDUzIDFjNmMwMjdmZDExMGJmOWI1ZTNmNGY0OWEyOTJlZjQ4YmM2NTBlOGYgbGVnYWN5LXRydW5rCisyNDQ1NCA1MWI0NTcyY2YwMTNkMWE2YzhjNzk2YjE4ZTIwZjU2Yjg1OWU3MzUwIGxlZ2FjeS10cnVuaworMjQ0NTUgODQyYjI4MDQyMWJhNjFlY2Q0YTE5YWRiZmMwOTFiNzA2ZDJlNzY0MCBsZWdhY3ktdHJ1bmsKKzI0NDU2IDcyOTY2YzlkZjlhOTk4N2VjYzYzMTQzYjIyOThhNDU5NTk3ZjRiMDEgbGVnYWN5LXRydW5rCisyNDQ1NyA5NmEwOGZkMzhlZjgxMjU5OGQ0NThmZjhhMzc0MTg0ZjM1YmI5MTljIGxlZ2FjeS10cnVuaworMjQ0NTggODdmYTZlOWJkNzdlYzNjN2JkNjE4MTNkZDZjNTMyYzdiMjU2Y2MwMSBsZWdhY3ktdHJ1bmsKKzI0NDU5IDM0ZmU3NDMzNTI2YmE0Nzg1YmE2ZTIwNmYwMjg0OGZhYjcyODFlNDEgbGVnYWN5LXRydW5rCisyNDQ2MCA5MGEwZDgwMDMzYjRmNzAzNDZiZmY5NjBmZTc3YjBlYjk5NjllYzg1IGxlZ2FjeS10cnVuaworMjQ0NjEgZDQ1MDljZjkzZjUwZjkyYzBhNjcyYjMxODdkM2NmOGE0MTg4ZWZlNCBsZWdhY3ktdHJ1bmsKKzI0NDYyIDhlNzI0NTQ2MGQzMGJmZjQ5ZThkNzUxZTE2YTVmYTI0ZmRlY2U1MDQgbGVnYWN5LXRydW5rCisyNDQ2MyAwZGQxNmZkMzZlZThlNWM0YjkxNTU1Yzc2ZjQ1NzBjY2VkMGJiZGQ1IGxlZ2FjeS10cnVuaworMjQ0NjQgOTE4YjU3MzU0ZDg3NDhiOTczNGQxM2MyYTQ0Mjg1NGEyZDBlOTk0NiBsZWdhY3ktdHJ1bmsKKzI0NDY1IGJlNWY1Mjk2MmFkYjM0ZDJkNTNjYTFhMGIyN2RiZTZlMGI3NmI5NjEgbGVnYWN5LXRydW5rCisyNDQ2NiAxMWE5NjllMmZhNTA1MzU2YjBmMDZkM2QwZGNmZDBiNGNhMzkzMTYxIGxlZ2FjeS10cnVuaworMjQ0NjcgYTIwYjM3MmZiOTM5YzIyMDg0MTA4ZWE1YTAyMWNjOWI0MzBjZjUyYSBsZWdhY3ktdHJ1bmsKKzI0NDY4IGJjYTUzYTM3YThhNWFmZTI0OTk4NmUwOTI5NjYwZDI2ZTdlOTI1MWUgbGVnYWN5LXRydW5rCisyNDQ2OSA5ZmVjYmE1MjY5MzY3YWViOTNjYTc1NWFmODFhODVjOTA0NTE0ZWI3IGxlZ2FjeS10cnVuaworMjQ0NzAgZTU5MjQ3MmQ1NWEzOGYwYmRkNDg4ZGExZWQzOTVlOTM0MWMwNTIxOCBsZWdhY3ktdHJ1bmsKKzI0NDcxIDFhY2M0YmE3M2I5ZDE2MTc3YzM2ZDcxNzVlY2MwZjdjZWQ5MDhkOTQgbGVnYWN5LXRydW5rCisyNDQ3MiA2ZmE5NmIzMjllMTVlZTFjMDVkZjc5M2I2ZGVlYzA0MDczNzdkM2RhIGxlZ2FjeS10cnVuaworMjQ0NzMgNzMzODRlMTNiZDJhZTExMmJlNDZkY2E1YThiMTFmZTg5YzA4MDQ4NyBsZWdhY3ktdHJ1bmsKKzI0NDc0IDk0M2NhODFhZDFkZjNmNTM5OTczMzNmOGI1ZGEzYzA4NTk1NmEzMGQgbGVnYWN5LXRydW5rCisyNDQ3NSBlMWE2N2JlNmM2ZTQwYTNlMGI2NWYyNGJjZjNhMWQ0YTYyMTRjMzAxIGxlZ2FjeS10cnVuaworMjQ0NzYgN2I2ODc5NzE0Yjc0NjZlNDQ5ZjE3YTI3MzM2ZWJjY2RiZjQ3ZWY0ZSBsZWdhY3ktdHJ1bmsKKzI0NDc3IDIxYWM1NWZiMmRkOGM4MmFkMjBmY2Y2YzFjYThjZDkzZDg0ODE3MGUgbGVnYWN5LXRydW5rCisyNDQ3OCBjZmU0MDdlNGQ4YzAxNWRhNjRiMTg3OGVhNmIyOWJjOTRlOGRmMmE2IGxlZ2FjeS10cnVuaworMjQ0NzkgMGI0YWViNDEzZDdkZjczMGE4ODE2ZWU4MzYwYjBhMTgwMmYxYWVmOSBsZWdhY3ktdHJ1bmsKKzI0NDgwIGZkNDJlYWNlNTBlYTVkYWI0Njc2MzRiZjFmNzg1ZjVhZWE4NzI3N2MgbGVnYWN5LXRydW5rCisyNDQ4MSA0NzVjODI3MWUwNTdlOWZlOGE2Njg0ZTRlN2UwZDgyMDkzMDZhOWRiIGxlZ2FjeS10cnVuaworMjQ0ODIgODkwNWU2NzI1Y2ExYjNhODMwODE3YmYwNWIzNzkwOGVkMWM3NDc0OCBsZWdhY3ktdHJ1bmsKKzI0NDgzIDJkZmM2MDBmOTljZWU2ZDYyMWE3OWRmZjIxYTE1ZjFhZjdmMzExYTggbGVnYWN5LXRydW5rCisyNDQ4NCAyNDU4Y2JjYzFkZDM3NjVlNmY2Y2U1YjgzMmM5YTcyZDZmZGI0YzcwIGxlZ2FjeS10cnVuaworMjQ0ODUgZGYyZmZiMGNkNmJiYTYwYjIyY2I4Yjg1MDVjODkzMDQ0ZjFhZDc2MiBsZWdhY3ktdHJ1bmsKKzI0NDg2IDBiNmExOGM2ZTU5ZWM0NTA4NTZhYzZkMWJiNTlmOGVjNjkxNWM5MTUgbGVnYWN5LXRydW5rCisyNDQ4NyA3ODkyOTJjZjA5MTRjNDM2M2Q0MTQ2ZTRjNmIxMDk3MjE1ZjJmNTZjIGxlZ2FjeS10cnVuaworMjQ0ODggYzlhNzk2NDAwYTUxYzUxNDg3YzI3MWUzMzU0MTk1NmM3ZThmMWE3OSBsZWdhY3ktdHJ1bmsKKzI0NDg5IGQ0Y2MwNWY2ZTE4MzlkMzBmNGRiMGJhOTgxOWI1MTc3MGE5ZDI4OGUgbGVnYWN5LXRydW5rCisyNDQ5MCA3ZDFlYWM0MWNlM2VjZmUwYWUyY2ZkNDkyNzEyYzhmOGY1NGE3MzZiIGxlZ2FjeS10cnVuaworMjQ0OTEgYmM1MWRlNjQzYjVlNThjYWNmM2ViMTY3Y2NlOTQ3MTRlY2ZhYzgwYyBsZWdhY3ktdHJ1bmsKKzI0NDkyIDQ4NTQyMjkwMGVmMDc5YzIxN2ZjNzVkZmIzZmI3MTdmNTk5ZTYxNjAgbGVnYWN5LXRydW5rCisyNDQ5MyAwZmJjOTI4OWE0YzdjZTQwMzliYzRmMTJjZDQ4MGM4YzdmNTJhZTRkIGxlZ2FjeS10cnVuaworMjQ0OTQgOTQ0ZDZlMDJmMzU5MTc3ODNiNGNiOGIzNjU1ZDZjMGUzNDc5Y2EzOCBsZWdhY3ktdHJ1bmsKKzI0NDk1IDQ3M2YyOTQxMWYzYjJlZDIzODczNTZkNzE2Mjk0OTgzZmVhODNhN2YgbGVnYWN5LXRydW5rCisyNDQ5NiBhYzEzNTdmZDFhZWExZjhhMTI0Y2Q4MjI2NWVjZTdhZmU5NGJkMTY5IGxlZ2FjeS10cnVuaworMjQ0OTcgYzJiZmZhNjcyYjc1OWJmOWFmMzc1MzMzMWY3ZGVlNmU5ODEyYjk2YiBsZWdhY3ktdHJ1bmsKKzI0NDk4IGFlYmNlNDg1YjU2YjljYjUwNTlhYTY4YWJjMWE3MTg5ZTBmZWEyZDcgbGVnYWN5LXRydW5rCisyNDQ5OSAwMTg5MTg2ZjRlZDkxODIyOTFmZTc0MDc3ZDc4Y2RiOTExNTkwYzFkIGxlZ2FjeS10cnVuaworMjQ1MDAgZWY2ZjY5MmM3NmUyMmE5YmVmMWU3ODNkM2E5YTkwNGQxOTY4YmFiNiBsZWdhY3ktdHJ1bmsKKzI0NTAxIDA4ZjIxYTUzNzRkOWE5ZmI5YzlhYjI0ZWJjYjk0YzNhZTIzZDYyZDUgbGVnYWN5LXRydW5rCisyNDUwMiBhNjIzZjljZjk1MzU0MjMxYTJkY2JiYzI1YjBjMGQyNzNhYzg0ZDlmIGxlZ2FjeS10cnVuaworMjQ1MDMgNmE3M2Q1OGUxNzQ3MjJmMjlmOGUxNGFjOGJlM2QwMGYyYTk5N2U2OCBsZWdhY3ktdHJ1bmsKKzI0NTA0IDMzYzhkMzM1YTJjNDM3NzYyZThhN2MxYTA3MWI0YmVlYjMzMzdhNTAgbGVnYWN5LXRydW5rCisyNDUwNSBjMThhZDUyZGVjZTM1YzM4MWNkYzhkYWM0OGMwMzliYzFhNmU3YzMwIGxlZ2FjeS10cnVuaworMjQ1MDYgNDI2YzBkMjRkZWJkOGE1OGVlN2I2MTZkMDUxN2QzZjcyYjI2ZWE1YyBsZWdhY3ktdHJ1bmsKKzI0NTA3IDE1MTlkNmZhYWIxNTk0MDQ1ZWRhNTdlMzdjNTcwMTk1ZjM0YjQyNjAgbGVnYWN5LXRydW5rCisyNDUwOCA1YjNiMjkyNDc1NzM1YTk4ZmRjZjE4ZTcwZmY2NDBiYzA5YWY1MDNkIGxlZ2FjeS10cnVuaworMjQ1MDkgOTIwOTAyZjVhODg0YzA5ZjQ1YThkMDEyZjQ5ZTVkZmZhMTYwNDhkMSBsZWdhY3ktdHJ1bmsKKzI0NTEwIGFkN2I0NDI0YWFiNmYzYjMzYjRhMzQ4NzRiN2Q2NDE1NGE3YjcxYTcgbGVnYWN5LXRydW5rCisyNDUxMSBmMTdhMzdkZTYyODVhYTUxZGRlYWE5M2FjNThiNjhjMTA0OGQ3NjRlIGxlZ2FjeS10cnVuaworMjQ1MTIgNjA0MTViZjVmOGYyYTQ2NjFlMDlmOWZhNWJjNTg0ZTA3OWFjZTdjMiBsZWdhY3ktdHJ1bmsKKzI0NTEzIDk0NzkzMTM5MjY5NGVkMzlhMzJhOWZiMzVmMzdlMmUxZDkwZTJlNzAgbGVnYWN5LXRydW5rCisyNDUxNCBkYjliNTk3NjgyOWU0NDdjM2EzNmYzZmE5N2EyZWRjM2UzNjU2ZDU3IGxlZ2FjeS10cnVuaworMjQ1MTUgYzg0ZGY4NDg2MTYzNjZmN2FmYjg3NjQxMDg4ZWI4Yjc2MWMyNTdkNyBsZWdhY3ktdHJ1bmsKKzI0NTE2IGQ5NWViN2VjNDU1MzU0MmI1OGVhYTJjMTUyNWNjNGY3Y2U4ZTVmYTggbGVnYWN5LXRydW5rCisyNDUxNyBmNzllNDcxOWRiOTY0NWY1YzM4MDg1OTZlZTQ4YTJjYTE5OTk3ODYwIGxlZ2FjeS10cnVuaworMjQ1MTggODY0Y2M1OTNiZGRhMjc3ZGY5Nzk5ZjQwMTkzMmU3ODNlNzBlNmVmMiBsZWdhY3ktdHJ1bmsKKzI0NTE5IDgxOTI4YzlkNzAxMTdlZWQ2ZDNhMmM0MjAyYTNmN2EzMzFkNGRjNGYgbGVnYWN5LXRydW5rCisyNDUyMCBiY2Y2NjZlODgzMTIxZDJiN2UzN2U3MTUzZGMwYzBlMTc2NjEzZjdhIGxlZ2FjeS10cnVuaworMjQ1MjEgZWFkMWZhMjY5NTAyYTFjZTZmYjRmZDNiNThkMThkNTdlOGYwYThhNSByZWxlYXNlMjEtbWFpbnQKKzI0NTIyIGQ4MjY1YTBjM2NmMDI4OGE2ZDIxZTllZGI5YzUwNTU1ZjM3Y2Q1NzkgcmVsZWFzZTIxLW1haW50CisyNDUyMyAyZDIxNjUwZjQ2Zjg5ZDJlYTBmYzViZGE2NmI3YmFkNTcxZDQ1MTVkIHJlbGVhc2UyMS1tYWludAorMjQ1MjQgMTUxYjY5NjdiZDIxMGIyYzEyY2U1YjFkN2Y4ZDlmMjgxZDY4NWIwMSByZWxlYXNlMjEtbWFpbnQKKzI0NTI1IDY3MDlhZDRmZTc1ZWM4ZTU1OGM2ZWVhOWYxYmNmOTUzNDQ3NThkZGUgcmVsZWFzZTIxLW1haW50CisyNDUyNiAzYjA5ZWE3MjNlY2U3MjJlOTFjODAzOTI5ZGUxZDY1MWYwMmY3MGU5IGxlZ2FjeS10cnVuaworMjQ1MjcgZDI2ZTY1OTUwNzQwMmMzNzZkMjhjNWUzYWM3NGQ1MDQzZGY1ODE1MCByZWxlYXNlMjEtbWFpbnQKKzI0NTI4IDE5OGFlYmUxMjM5OThkOTY1ZDdhYWFmYjUxNjIxOGVkMTdlNGYyMzQgbGVnYWN5LXRydW5rCisyNDUyOSBhMzlhZjgwMGI5YTNlZDlmNDdlNTE0ZjYwZDBiZGY5YzJjODM5Yzk4IHJlbGVhc2UyMS1tYWludAorMjQ1MzAgMTQ4ZmZkOTU3NjE4ZDMyZWFlMDk0YmQ5OThkZDQzNTZhYjA5YWIyMyByZWxlYXNlMjEtbWFpbnQKKzI0NTMxIDY1NmM0Y2Y1MTY1ZmE4MGRjMzVhNjc2Nzg0Y2JjZTc0OTA4ZGYzY2IgbGVnYWN5LXRydW5rCisyNDUzMiA5MjA1Y2ZiNzcwOTQ2NjUwMDQxODA4MmQ5YjAxYTdmYmNlNDUxYmFiIHJlbGVhc2UyMS1tYWludAorMjQ1MzMgZDIyOTBlOTdkZTE4N2QzZGQ5NjRkM2JhYmFhMzUzNmM2OTg0MjE0NiByZWxlYXNlMjEtbWFpbnQKKzI0NTM0IDM0MzI3Y2Y0NTI5OTRhOGYwNWIzODZhZDk4ZDI0NjQyNDQ5ZjQ2NGIgcmVsZWFzZTIxLW1haW50CisyNDUzNSAyMmQ4MjE2NzNlNTI2N2ExMzM1ZDg4ZTIzY2EyODgyMTUzYTA5NmY2IHJlbGVhc2UyMS1tYWludAorMjQ1MzYgMDJkMDE3MDM5Nzg4NWM2ZGU3NjU3OGQ3NTQwMDBiOGEyMWIzNDhhYSByZWxlYXNlMjEtbWFpbnQKKzI0NTM3IDRhZjMxODZlNjYzMTUxODgxNzBiMDdiMGJmMmI5NzFlZTI0NTNlOGIgbGVnYWN5LXRydW5rCisyNDUzOCA1YWIwZGM3ZjJlYjA0NjJmZmUzNDUxZTc4MGYxODk2NmMwNGM5MGU2IHJlbGVhc2UyMS1tYWludAorMjQ1MzkgOTViNDJmMTA1NWMyNGU3MGMxOTRiZmFiMGFjNjcyNTM3Mzc5MDYzNiByZWxlYXNlMjEtbWFpbnQKKzI0NTQwIDBiYzg4Mzg0MDdiYjU3OTZlODlhYmFmYWQ2ZWIxMzg2YmRmMGRiZjkgbGVnYWN5LXRydW5rCisyNDU0MSBhY2NiZTU2ODRhYzYxNGQ1ZWIzM2Q5OWMzOWY4MGYxMWIyYTIxN2ZlIHJlbGVhc2UyMS1tYWludAorMjQ1NDIgMDBlY2ZlMTlhOGQyOWZlYTQ0ZWRkMjkzODZjOWFhODMwMTdhZTlhMSByZWxlYXNlMjEtbWFpbnQKKzI0NTQzIDA2MGMzNzU4Nzk1MWIxYTg0MWM1MWE0MmFiOWFhYTgwZDY0ZTY4NDAgcmVsZWFzZTIxLW1haW50CisyNDU0NCBhM2QwMWEyMjUzMjk3M2RiNjEzMWNiZTE1N2ZjYWFhYTA2YjA4NDU5IHJlbGVhc2UyMS1tYWludAorMjQ1NDUgNDkzMDE5OGY5MmRiZjM2MzQxYzAyMDI3OGRhZTZkMmRkOTk1MDI1OSBsZWdhY3ktdHJ1bmsKKzI0NTQ2IDgwM2NjYmUzZWU3Y2FiNWMyMTgyOGEwY2RiNThjZTQ3M2U4Y2ExYjMgbGVnYWN5LXRydW5rCisyNDU0NyA5ZGM4N2U2MWI1YTJlMjJlZTIyOWUwMmNjOTlmNzFjYjliZGU2Yjc1IGxlZ2FjeS10cnVuaworMjQ1NDggYjc4MjQ5MGRhN2YwODIxODQyNjE0MGUwYjI1YzA4MThlYzczNGMwZCBsZWdhY3ktdHJ1bmsKKzI0NTQ5IDg5YTVjMTEwNmI4MmYxODA4NzIwZmI3OTU4Y2RlNTM5ZDlmZGMyYjYgbGVnYWN5LXRydW5rCisyNDU1MCA0MmQwODE5NTQ2ZDYwOWZiODJiOWJjMjYzNTg1ODRjN2IzZmVkOWQ0IGxlZ2FjeS10cnVuaworMjQ1NTEgM2U4NDYwZmIyZmJlNDlmODA3NmZlNTMxOGU3MDU3NDVlZTBhNTc3YyBsZWdhY3ktdHJ1bmsKKzI0NTUyIDlkNmZiY2I5NTBmOWIzNGE0ZGMxZGJjMWU0NTU4NzExNjNiZWQ2YWUgbGVnYWN5LXRydW5rCisyNDU1MyA1NGRkYzM3OWQ0ZmMyODk4MDI4OWMwMDA0MGJmZjk0OTA1NGI3YmRhIGxlZ2FjeS10cnVuaworMjQ1NTQgYWQ4NzY3NGRlM2ExYjNjNGVmZWUyNTYzYWQyNTc0MmVlZWZkNmRlZSBsZWdhY3ktdHJ1bmsKKzI0NTU1IDVjMGJhNmViYzYyZDBjZGI5MzI1MzYzNDUwYjYxYzFhMGEyYjAwMDcgbGVnYWN5LXRydW5rCisyNDU1NiAyMDM0OTAyYjBmMWFjODRhZmJiNWVlOTdjMTlmODJkYWRiMWVjN2M1IGxlZ2FjeS10cnVuaworMjQ1NTcgMTI4OWEwNTU5ZTVhNDRkZDFkMGM3ZTA3YTU0YmM3NWE0MTY1NGI4ZiBsZWdhY3ktdHJ1bmsKKzI0NTU4IGJhNmE3YTVjMzJlODcxNzMxYmZjN2Q1NjMwYmFlYzZkOTAwODE4NzYgbGVnYWN5LXRydW5rCisyNDU1OSBjYjkyMWQ0ODNlMDA5NDJlNDRmYzEyNjNjMTk5YmM0YzhkNWJhZTE3IGxlZ2FjeS10cnVuaworMjQ1NjAgYmExNjg1NmJmYmFiZDhkNGRlYTAxMjBmNmQ5MDBlOWQwNmVkNzIyZCBsZWdhY3ktdHJ1bmsKKzI0NTYxIDA2MmM2ZjQ3MTA2ZmJlMWFjZjRjODA4ZmMzMTQwMmRhNGI2MmFmMDMgbGVnYWN5LXRydW5rCisyNDU2MiAyMjRlZGJhZjYzMDE5MTU0NDI1MWJhMjg3NTA3MWU3OGUzM2IzMjk2IGxlZ2FjeS10cnVuaworMjQ1NjMgYjI2ZDU4Yjk4MTBjYWQ3ZTgzMTZjMjA2MTg3MzhmMDM3ZjY4ZGU1MSBsZWdhY3ktdHJ1bmsKKzI0NTY0IDQ1ZTExNzc0MjRlMWM3OTk2ODcyZjViYmVlMTBiNzNlZTc1ZDdmZWEgbGVnYWN5LXRydW5rCisyNDU2NSBlMzg2ZjZlMjZhNDJlMzgxZjc4NGU5ZTE5MTVmNTBiYzMwZmFiY2FkIGxlZ2FjeS10cnVuaworMjQ1NjYgZDAyNGE1YzcyY2I1NjNjNGI0MzQ0NjljNDgzZGM5OGJhZjgyZGQ4NiBsZWdhY3ktdHJ1bmsKKzI0NTY3IDE5MTg2YjE3ZDI1YWEzOTAwZDdiYWEwYTg4M2YwZTA5MzU2MDcyZmQgbGVnYWN5LXRydW5rCisyNDU2OCAxNDUwNzY3MWMwMmNjOTk4OWQyOTlhYzEzMmRhNmFmZjhiNjQyNjgyIGxlZ2FjeS10cnVuaworMjQ1NjkgZmJmNjhjNTlkNjZjY2QyNjA3MWE3NGE4N2FkMzc1MzBkN2FhZDczOSBsZWdhY3ktdHJ1bmsKKzI0NTcwIDA4ZGJmNmIzYzMxNjQzMThlYmIyNTcwZGJhODdhZjE0NzVhNWIwNjcgbGVnYWN5LXRydW5rCisyNDU3MSBlNWQyOTU1NDJjN2ZiOTY2MTE2OWMxN2E4ODAxNWRiYmY5MDA3MTExIGxlZ2FjeS10cnVuaworMjQ1NzIgMTAyZDE4ZWEwMmNmYWMzOWEyMTM4ZWFiNzI5ZWEyNTkxYzg4YjAzZCBsZWdhY3ktdHJ1bmsKKzI0NTczIGM1MDZiZjdiMjZiOGEwZjFmOThmMmNlOWFmMGNjZDM5NmI3Yzg2NTIgbGVnYWN5LXRydW5rCisyNDU3NCA0MjcxZGE3MGVkOWUxMzYyMWYzZTU3NTViYzBlYjI0NjRiOTJkM2UzIGxlZ2FjeS10cnVuaworMjQ1NzUgZThmZWE5NWE4MmE0MDM2MDc4MGFkYjMwMGJhYjRmNDcyNzRhYjUzNSBsZWdhY3ktdHJ1bmsKKzI0NTc2IDJmMmFiZWVlZmQ4NzhiZWYzMzdjNzE2YmU4OWUwMjI1OWQ1MzI1YWQgbGVnYWN5LXRydW5rCisyNDU3NyAyNjU2N2YyODY3N2UxNGFmYjQ1ZWQ5ZDVlZjNhODM4ZjY4NWEwNmJjIGxlZ2FjeS10cnVuaworMjQ1NzcgYWJlYzRlM2IwODFmMmY4MDJjMGYyN2JjMWVhNzBlZDc1MmFiZDg0YyByZWxlYXNlMjEtbWFpbnQKKzI0NTc4IDRkYWU4NDJhYTdjNThmZmRlNGI0N2JmOTUwMjgzZjcwN2QzNzkzNDUgbGVnYWN5LXRydW5rCisyNDU3OSA3YTdmNTU3YjRkNTQxOGViMzcwMmRhNTJlOTVkYzljODNkZTk2ZTJiIGxlZ2FjeS10cnVuaworMjQ1ODAgZDI5NmU2YmIxN2U1NGNmMDdjZjAxZTFhYWZjZmJhZmI3NDkwYzlkZSBsZWdhY3ktdHJ1bmsKKzI0NTgxIDJiNWRjNmM3N2MzZGU2ZGZiNWYzMTVmOTU5YjlhM2M3NDU3ZTVhMDcgbGVnYWN5LXRydW5rCisyNDU4MiA5NzcwOWZkOGZkYTAyNmJlZThhYTNkN2U4ZWFiNTNiM2IzMTg2Zjk3IGxlZ2FjeS10cnVuaworMjQ1ODMgYWMzZmRkMTQxMmQ5ZWFhODNjN2NjMDE1OTE0OTU2ZDY1MDY2MzA2OSBsZWdhY3ktdHJ1bmsKKzI0NTg0IGQ2NGRmYmRjNWY4YzQ0ODA2YzAyNDNjMjYwMmIzMmMyMDEwNjFjNGIgbGVnYWN5LXRydW5rCisyNDU4NSBlY2JiZWNjZGUwN2RkM2I5NjA1ZTRjYjA4NWE3OTI5M2U4NjNjMGVmIGxlZ2FjeS10cnVuaworMjQ1ODYgY2ZiZTM4YTAzZThjMTkwN2MwY2IyZTY5OWEzMzM2NmY4NDAyYTc5NiBsZWdhY3ktdHJ1bmsKKzI0NTg3IGIwMTMyM2JmY2Y2Y2U5MzI5ZjQ5MmZlMmE4ODQwMmJiOGU2Njk2ZmMgbGVnYWN5LXRydW5rCisyNDU4OCAyOGY0Y2VhMjA5ZDc4ZWE4NmE1Mjc5ZGY4NjdmOTA1MTljMGUyNjA1IGxlZ2FjeS10cnVuaworMjQ1ODkgZjcwMmZmMzkwZTRkYzc3M2QyYzFmMjU2YTU4YTVhMTI4YzNjYjI1ZCBsZWdhY3ktdHJ1bmsKKzI0NTkwIDAzZjMxNTVjYjZlYmUxN2ZjNjdkNmU1OGFhZmM3Nzg1YjhmNjY2NmIgbGVnYWN5LXRydW5rCisyNDU5MSA2NDMyNDRmN2Y0NjcwOGQxZTcxOTRkMTM4MWM5N2IyMzIwYjdkMmM4IGxlZ2FjeS10cnVuaworMjQ1OTIgMzY1N2JlZmFiYTRmMGE4MWRhMWJlMWVlYmJlZjQyMjI5NTVjNTA4NCBsZWdhY3ktdHJ1bmsKKzI0NTkzIDk5MWIxNzBjZjQzODVkMTAyNTcxZGEzYTkyNmViMDIzZjAzNWE0NTQgbGVnYWN5LXRydW5rCisyNDU5NCBkMzVhNTc3MWM0YzY5ZjRlM2I3ODYzMDcyMTc4MTgwMDU0ZDVjODNlIGxlZ2FjeS10cnVuaworMjQ1OTUgZDQ5MDdjZGNjMjk5NDU0MzY2NjM0NWY4YzBiZDhkMGI4YzZlNDUwMiBsZWdhY3ktdHJ1bmsKKzI0NTk3IDQzYjhhOTYyYTMyYWVlY2VlMjNkMmI2YjRmMjA5OTRlOWFkNzA4YWMgbGVnYWN5LXRydW5rCisyNDU5OCA1MGYyOGVkODA0NGZmYzFjNDQ1ZmM3M2MwZmQxYThkMTc3OWExOTY2IGxlZ2FjeS10cnVuaworMjQ1OTkgMWU3YzBiODQ5NTg0ZDdmZjdmZmJkNzNmYTIwZmY2MGExNTgyNmM4NCBsZWdhY3ktdHJ1bmsKKzI0NjAwIGQ1MWYyMTU4ZmE3OTA3MGE0YWQxNTM1ODE4MDBhNTBiZjRhYTNmMGQgbGVnYWN5LXRydW5rCisyNDYwMSBkMGMyMDQwZmVkZTdkNGZhZDg1ZjNhOTEwMGQ5NzkyYTQ0ZTFkNjgxIGxlZ2FjeS10cnVuaworMjQ2MDIgNzc2ZGQyZTc2NzhlMDQzZDY1ZTg0YzFkNDA4OTFjYWEyM2RiYWUzOCBsZWdhY3ktdHJ1bmsKKzI0NjAzIDk4MzViYWIyODc2ZTQyZjgzZDZiZWM1NGEwYjc4MmE2MDgwOGUzMTQgbGVnYWN5LXRydW5rCisyNDYwNCAyMzc1ZDJkZmI1YjNhNjJiODZjZGE4ZjNiYmMyOTQ0YmRhZThmYjM5IGxlZ2FjeS10cnVuaworMjQ2MDUgZThkZGFiMTM3MzJhYmFkMGIyOTQ5YzhiOWNiYzYzYWRlZDcwZTM2MiBsZWdhY3ktdHJ1bmsKKzI0NjA2IGI4MTBjMzBiNGFhMWE3YWQ5MGUwN2RiYTk2ZDA0NzVjNGY3ZjViYzEgbGVnYWN5LXRydW5rCisyNDYwNyAyNGE2YzNmZDBlNThiYzBhMTk0MzZkMGFlN2NmNTU0NWM4MDJlYTg0IGxlZ2FjeS10cnVuaworMjQ2MDggNTk4OTQ0OTZiNWM3MzYyZGQ0ZWM5Y2ZhNjU2NDMxZjQxOWQ1YTMxMiBsZWdhY3ktdHJ1bmsKKzI0NjA5IGJiNzhhNTJiOGZmY2UyNzA1ZGU4M2E5NTEwNjAyNmU1MmMxNmNiZjQgbGVnYWN5LXRydW5rCisyNDYxMCAxMTk0MjI0MzBlOGZjYmUxZjIwYzkwODk4YTc1ZjE1ZTRhMTk5MzdiIGxlZ2FjeS10cnVuaworMjQ2MTEgOWEyNDNlZTM1NGExMzRjYzVkM2ZhYjc3MzZiNTdkNTczNDYxNjY1YyBsZWdhY3ktdHJ1bmsKKzI0NjEyIDYyZWEzMTdkZmM3ZjRhMGE1OGU1ZjAyNmVmNmQ1YjZkNTVmMDI1NjEgcmVsZWFzZTIxLW1haW50CisyNDYxMyBmNTUzMmNjMTUxNGI3ZGI2MzViMDY2NGU3ODY2MGU5NDgxODI3ZjUyIGxlZ2FjeS10cnVuaworMjQ2MTQgMTJjMDk0YTIzMjczNDZlNmI5YjNhNDkxM2EzZjljOGQ0MGNmYmVjZCBsZWdhY3ktdHJ1bmsKKzI0NjE1IGRlNzY0NjYzYzMyNWMwNDY3YTQ0MDJmNmE2ZTEzYWE4ODJjM2Q5ZjAgbGVnYWN5LXRydW5rCisyNDYxNiBiNmY1OTJlZWMyNDFkNmVjY2NiMjZkOWM5OGIzYjcyMmYzNGMzZGU1IHJlbGVhc2UyMS1tYWludAorMjQ2MTcgZDk4MGViY2M2OTZhMjg4Mjk1YTg0NDdjY2NjYzVkMzY4YmRhNjBkZiBsZWdhY3ktdHJ1bmsKKzI0NjE4IGQ4NmQ2ZTBkMTU4YzVjODI0MDc0MTJjYzEyM2UwN2M3NGMzODY4ZjUgbGVnYWN5LXRydW5rCisyNDYxOSAwZDJlZWY2MzZkMTI5YzU3NWQ5MmQ5ODU4NWFhNjc2NjJlODkwYmRhIGxlZ2FjeS10cnVuaworMjQ2MjAgODk4YzgyNWUwOGFjY2NkNjQ1MDVmM2QyZTYyNzlmYWU1NWQ3ODdiNSBsZWdhY3ktdHJ1bmsKKzI0NjIxIGNiNjIwM2ZmMjllNWExZTNiNTg4MDA3MDZmYzUyNjQ0YTU0ZmNjNDkgbGVnYWN5LXRydW5rCisyNDYyMiAyNjA3NDMzYjEzZTllODFlY2EyODJkMzJhMzYwMmE0MjY4Mzg5OWExIGxlZ2FjeS10cnVuaworMjQ2MjMgOTA4MDRhMzQ4OTIzZGM3ZjI3NjhiZDAzNzkzNjA2MjUxYzdlNGVmYSBsZWdhY3ktdHJ1bmsKKzI0NjI0IGJmYTVmN2I0ZTc4ODU5OGJlZmYxZjIwZmM4NTdlYzAzZDViYmZkMGYgbGVnYWN5LXRydW5rCisyNDYyNSAwMTAyNjkyNDE3YWYwZmUzZTEyZTFiMjE3ZWMxZjk1NWEzMGNlNmE4IGxlZ2FjeS10cnVuaworMjQ2MjYgOTFkZDIyMzgyOWM2ZTAzNTYwMTFiZTJjNmMxZjRiYjQ3OWIxNjVhOCBsZWdhY3ktdHJ1bmsKKzI0NjI4IDRkNTA5OGNmYTc4MWJmZTNhN2JmMzNlYTY2NGJiMmExNTljMmYxYWUgbGVnYWN5LXRydW5rCisyNDYyOSA5YjJkMWY4ZjRiZTM0OTgzYjg0MDlmMjkxMDNmMDkwZTU4YWM1ZWZkIGxlZ2FjeS10cnVuaworMjQ2MzAgMGMyZWEyMzNhZDI0OTNiNTA0OWIwYzJkODJlZWJjMTBmZThhNTViNCBsZWdhY3ktdHJ1bmsKKzI0NjMxIGI1ODNjYWYxYmU4ODJiMzI5ODA5YjE5MDNmOTllNjAwZWVjY2I4MjAgbGVnYWN5LXRydW5rCisyNDYzMiBiYjU2NmY1MjVmMTJjZjg4ZWRjYmEwMDdiOTg3Y2Y4MzI4NTUzNTIzIGxlZ2FjeS10cnVuaworMjQ2MzMgNGJjZmI5ZGM1N2UwM2RjYjM1MDg4MmU3NjA3NDZkNzMxMGFmYTY4MSBsZWdhY3ktdHJ1bmsKKzI0NjM0IDYwZGYyYmY4NTRhY2U0MTdiNzEwMDhhNTQ2MDE4YWQxMmMyMzk1YTcgbGVnYWN5LXRydW5rCisyNDYzNSAzYTJjZjVlNDU2NTZhOThhNzU3Mjk0MzVhMzYzZDZjOWMwYWYwYTliIGxlZ2FjeS10cnVuaworMjQ2MzYgMTg1MmNhYmE3MDE0YjQxNTQ5N2IzOThiMmZiMjA5NWYxZDdmZDQ2NSBsZWdhY3ktdHJ1bmsKKzI0NjM3IDY0NDg4NTExOGZlNzc5ODc2YzczOTliYWFiMzRiZjU2ZGRlNzNhNzAgbGVnYWN5LXRydW5rCisyNDYzOCA3NTJmYTQ4NWM0YWJhNWY0NzJhMTEyNWFmNzY5MWFlZDkyZjU5OTUwIGxlZ2FjeS10cnVuaworMjQ2MzkgOGEyNmJiMzY5ZjUzNzdkNjhhMzk3MTBmY2E0NTRlZjc2ZDlhMmNjYiBsZWdhY3ktdHJ1bmsKKzI0NjQwIGM5YWRhY2UzYzgyM2VmZGY1N2Q0YWZkOTlhM2U2MDIyNDE1ZjcwZDAgbGVnYWN5LXRydW5rCisyNDY0MSAzNGExYTUwZTZhYjZmODE5MWExNmM2ZTJmZjNiZjY0YmQ4ZGVlZDAzIGxlZ2FjeS10cnVuaworMjQ2NDIgNzg0YzhiYzBiMzAzNGE1NDg1YTNmZDc5YTgyYTM2ZmUwMjY4MjVmYSBsZWdhY3ktdHJ1bmsKKzI0NjQzIDg0OGY2OTg4ODI5ZjFhMmU1NDBkNGZmZjc3ZjhhNzUyMDY1YzMxZWMgbGVnYWN5LXRydW5rCisyNDY0NCA0NDIwYTRiZDk2YTQ0YzFhMzBjNWEwOWNiNzY0MjZkZWVjNzkxYzYxIGxlZ2FjeS10cnVuaworMjQ2NDUgMmE3ZDVmZmVjZTFjOWI4N2JmNDQzYjhhNWM4MzYxNzkzOThkNTZhYyBsZWdhY3ktdHJ1bmsKKzI0NjQ2IGZiYmQ4YTRjYTdhNmZjYzViOTg5OGE5YjdlYzZkMDQ3Yjg0MmNiZjUgbGVnYWN5LXRydW5rCisyNDY0NyA2ZDg3NGE5MWI1OGI4MWI4ODNhMGM5ZTNmYTNjNmRmNDUxYzgyYjU2IGxlZ2FjeS10cnVuaworMjQ2NDggY2YyZmIyMGE2Y2U3ZWIzYjAyZWQyOWViYWE2M2JhZDYxMDE3MTRlMyBsZWdhY3ktdHJ1bmsKKzI0NjQ5IDE4ZjYwODEwYjk0YTNmMDEwZmU0ZDgxNDVlM2RlMzU3ZmY3YmVmN2QgbGVnYWN5LXRydW5rCisyNDY1MCA3YzZkZjk2NGIwNGJiNDE0YWI0NWI5YmE1NjJiMjBiNWM1YzFiMWUwIGxlZ2FjeS10cnVuaworMjQ2NTEgOTNmNTQwNThlZjQ4ZjVkY2JmZDljYTA1MjJjNTYzOTIzNDJjNDQ1MCBsZWdhY3ktdHJ1bmsKKzI0NjUyIDY4MDQwZGIwODRiNmFhNTdhY2Q1ZTZmMjI2N2U1ZjkwMjkwNjc1MzEgbGVnYWN5LXRydW5rCisyNDY1MyA1MjVjNzczNjhjZDA1N2RmMzU5NzZjZTdiYTg4NDg3ZTJmYTNlMzBkIGxlZ2FjeS10cnVuaworMjQ2NTQgM2Q2OGUzMTEwZTFmZTU4ZWU2ZTZlNTMyMWNiZTQ3Y2QzNDEzNzU3NyBsZWdhY3ktdHJ1bmsKKzI0NjU1IDBiMWZhZjExNmY2M2VhOGM1NmQxN2YyNDc5NTAxMmFhOWQ0MTcwYWYgbGVnYWN5LXRydW5rCisyNDY1NiBhMzkyZTFmYWU2MWRkMjJmZTkxMjI4MTQ1ZWVlM2NlMDk5ZDIyMjBhIGxlZ2FjeS10cnVuaworMjQ2NTcgN2E1OGNkMzM3Y2Y0NDBhMWMxMTBkMTJjOWUxMjUwNTM1ZDgyM2Y4OSBsZWdhY3ktdHJ1bmsKKzI0NjU4IGY3ZWFlZWFjOWM2NWU3YmU0YjgxYzg3MzZkODViMmMzZTZlOWFiMjQgbGVnYWN5LXRydW5rCisyNDY2MCBkMWY5MzhlZWU3MDBhMjYyOTE3NzhhZDkwODUxOWY3MzBlNzgwZjc4IGxlZ2FjeS10cnVuaworMjQ2NjEgOGE4ZjU3ZGNmOWZlNzM2Mzk3ZjQ5OWIzMjUzMzg3YTYzNWRhNDQ2NCBsZWdhY3ktdHJ1bmsKKzI0NjYyIGY1OWM2YjVkZDEyMjJiMmZjYjIyZDU0ZmFmZTZlNzIyOGQ3NDllZDUgbGVnYWN5LXRydW5rCisyNDY2MyAxMjMxMGQ2NDNkOGQ3Mjk3NjVkMTEzMmM0MTk2ZTMyYmIwOTJjY2JjIGxlZ2FjeS10cnVuaworMjQ2NjQgOTM4YjViZjc0ZmI5NGY1YmY4NTVmNzgzMmQwYTIzM2Q2YTQ4NjE5NiBsZWdhY3ktdHJ1bmsKKzI0NjY1IGE1MTQ2Zjg0MzAxMDA2Mjc1MGIzNDFlNjdiOTczMzFmNzc1NDliNzkgbGVnYWN5LXRydW5rCisyNDY2NiBiZTk5MGU3MDNkMGYxNDcyY2ZkYzc0MjRmOTExOGVmNjQ2YjI2YzAyIGxlZ2FjeS10cnVuaworMjQ2NjcgYmUzMjgzZWQ4Zjk3NTg4NDM5MzA0Yzg1OTQwMGUyNzY3MTZkYWI4ZSBsZWdhY3ktdHJ1bmsKKzI0NjY4IDI1N2M5Mzg5MDBhNmU1ZTNkNGU3ODAxZmU4YThmOWQwMTE5ZGQ5OGUgbGVnYWN5LXRydW5rCisyNDY2OSBmYmRkYjY0ZDIxYzJjYjNkOThlY2JmYjBjOTUxNTIxNjZmYjgzODc1IGxlZ2FjeS10cnVuaworMjQ2NzAgMDAzZGM1NzNiMjk1MGNlYjRlNzgzMTUyNjI2MWQ0NThlNWE1NmU3YSBsZWdhY3ktdHJ1bmsKKzI0NjcxIGM2NzA0NmVmNTM4NTY3YmNkNGFjOTU3MjljMjcwZTUwYjUzNTQ4MmUgbGVnYWN5LXRydW5rCisyNDY3MiBkZTNjODhiNWY4ODk2MmJkN2ZlMWEzZjY0NTRhOTA5NmEwYzFhNjczIGxlZ2FjeS10cnVuaworMjQ2NzMgMmViMjVlZjM0Mzg2YzM5NzVkZDJkY2YyZWIzZDcwYTdhZTM5OGQyYyBsZWdhY3ktdHJ1bmsKKzI0Njc0IDJjMjA4ZGJmMGNiMDM4NzU3MDdiZDEwN2NkNzFlNWNhM2JmNTg3NTkgbGVnYWN5LXRydW5rCisyNDY3NSAyOTA3MmU4ZThkOTgyYjFhZmJhNDI2NzkxYWIzZTcxOTk3ZWNjY2FmIGxlZ2FjeS10cnVuaworMjQ2NzYgZThiMDk4ZmUzZGY4NzhmOGM0MWJkZGEzODNlMDNjZWFlODg3NzFlNSBsZWdhY3ktdHJ1bmsKKzI0Njc3IDMwMTJmNjI2ZGY3Y2IzNWUxMzBjZWRhMDliNjAyZjczYzgwNGIzMmEgbGVnYWN5LXRydW5rCisyNDY3OCA3MWU1ZWVjZDU4OWU1NWMzMzU2ZWNiY2NmMGFkMmM4MDJmN2Y4ZjVlIGxlZ2FjeS10cnVuaworMjQ2NzkgMDQwMjMwYzE1ODkwNDdhN2UyY2MyZjVlYTkzODdmYmI1NTlhN2YxMCBsZWdhY3ktdHJ1bmsKKzI0NjgwIDVhYjlhNjVlMjM0NjYxNDYxNTM1YjFhNDQ3MWZjNmYwN2FjNmZlYmMgbGVnYWN5LXRydW5rCisyNDY4MSBmNTc3NjdkNzZkZTZkYjdmNGY0ZGY1MGE0MzlhMzczNDVkYjc0YzMxIGxlZ2FjeS10cnVuaworMjQ2ODIgOGE4OWZmMWUwNjYyZGI0ZGEwNGU1OWU2YjdlYThlM2ZjODZmYmZhMSBsZWdhY3ktdHJ1bmsKKzI0NjgzIGQ4N2NhOTMyZTcwZmNkMGJhNTAwYWE4NzA4ZWNjYTUxMzY0Nzk0NWEgbGVnYWN5LXRydW5rCisyNDY4NCBhZjUxNjA0ZDAwZGIyNzE0NDliNzdmMTNiNjgxNmE1MDY3YjdmYmMyIGxlZ2FjeS10cnVuaworMjQ2ODUgOGEwMzUwODdlYjcyOTc3NmIyN2RlZDJkYWViZjE5NGZlNzA1MWUwNiBsZWdhY3ktdHJ1bmsKKzI0Njg2IDczNDY2YTc2ZjI1ZTJlNzE3MjUyOTA0ODdhZGM3ZWEyZmUxNDQzMWUgbGVnYWN5LXRydW5rCisyNDY4NyBjMjk2NmE3YmQxMTM1MTQ5ODM5ZDQzZTBiMWZkY2UwZDY5ODEyZmEyIGxlZ2FjeS10cnVuaworMjQ2ODggYzU5MzlkMGM3NDdhNDkyYzI1MmVmYzQ3MjhjM2NlYmMzNjFhZTE2OSBsZWdhY3ktdHJ1bmsKKzI0Njg5IDQ5NzcyZDMxODQ0MGI4YjQ5NTZiYWFkMzA2NGNhOWY1MDY2MDA1N2IgbGVnYWN5LXRydW5rCisyNDY5MCA3ZTBkMmQ1OWJiY2U5YjdlYzQ4NzU5MWJkNzY2NjI1ZGU5Y2E2ODkwIGxlZ2FjeS10cnVuaworMjQ2OTEgNTBkMDM2NmU4ZjA1ODIyZjljZWI4MTM0Y2QxMzQ4OTExZDA3MGZlNyBsZWdhY3ktdHJ1bmsKKzI0NjkyIDVmNTcxMzQ0Yzg5Y2NmMDMyNjcwYjBkZDcxODYyZWI3OWIzMmIzZWQgbGVnYWN5LXRydW5rCisyNDY5MyAxMTZhZjJmMDE0NDJhOTAwYjA4OGRlN2U2MTc5MGEyNTRiZDBkYTVhIGxlZ2FjeS10cnVuaworMjQ2OTQgNzQzZjY3YmVmYjU3ZTk1MzI2OGM3MjdlNWZjYTEzYzJhNTgzYmI5OSBsZWdhY3ktdHJ1bmsKKzI0Njk1IDQ0ZWJlYWIyNjljNWE3N2VmZTIwODAwMmZjOGM5NzhjZmVlN2I1ZDIgbGVnYWN5LXRydW5rCisyNDY5NiA5MTM0NThlYWVmOTAwYjljMTY5ZmE0Yjc1NmY4NGM3ZThhY2QyZTUxIGxlZ2FjeS10cnVuaworMjQ2OTcgZDE2YjMyNzE4MWE4ZDZiMTYxM2QyMjY3NTFiZTU2ZWZkMmNjMzMwYSBsZWdhY3ktdHJ1bmsKKzI0Njk4IGFiY2QyZjUyZjMxNmRhMDdmMzI0ZDVhNGMxOTE0YTQxMzEwOThmZWYgbGVnYWN5LXRydW5rCisyNDY5OSBjNDRjOTExNjA2YTQ0Y2Y3MTNhMDIwZmUwNGE4MGEzYTZmMWRhODhmIGxlZ2FjeS10cnVuaworMjQ3MDAgZWI3OGYwM2RjZGVjNjgzMDI4M2YzYTFlNzA5ZTQ2MGFiZTBlMzJhMiBsZWdhY3ktdHJ1bmsKKzI0NzAxIDgxYTU3OGViNzM0NjM5NWNmZDc3MmVmYjZlYTkwN2YxNmVkZGY5NGYgbGVnYWN5LXRydW5rCisyNDcwMiA0MmNkNTA1OTRkMGQ5NzgyZDFjN2I2MDNhYmIyMTBmNzMyYWQ4NTEzIGxlZ2FjeS10cnVuaworMjQ3MDMgZGZhY2M3MzNjYmY0YjVjOTQ1NmMyN2QyZmU1ZDNmMTMwNGM4NTU0NyBsZWdhY3ktdHJ1bmsKKzI0NzA0IDc1MDM3ZDg2YjExMzYzMTgxNzBmOGVjN2U5ZWQwMmMyOWZjMzI0NTEgbGVnYWN5LXRydW5rCisyNDcwNSA5NmJiYjNkMGM2YTA0NGYwMTYyNWUxYWJlN2VjNDU3ZjQ1ZTFlZTZkIGxlZ2FjeS10cnVuaworMjQ3MDYgMmMzMmZjNWYyM2MwMzcwNDNmMmU1ZTFiZWI3MzFkYjMzN2I2ZTcxZiBsZWdhY3ktdHJ1bmsKKzI0NzA3IDY1NzhjN2RjMzI4YjFlNzI3NjlmOTliZTRkNjI0NWQ5MmE5YzE2NjkgbGVnYWN5LXRydW5rCisyNDcwOCAzZjNlZjA3NDM1MzdiMjdhNDA4NzBlYmU3ZDlmZjM4MGEwMjIxYTBmIGxlZ2FjeS10cnVuaworMjQ3MDkgODJhZjU0YjQzODE3NzUxY2UzZTRmNDEwNGJkNDQ1MDI3MDVkMDVjNSBsZWdhY3ktdHJ1bmsKKzI0NzEwIDU2MDIyMmU5ZDQ3MTBiMGE0ZjYyNzVmMmJkNzUzYWEyNjVkNGZmMzAgbGVnYWN5LXRydW5rCisyNDcxMSBlYzMyZTU5ZGY0MDBiYjc2N2Q0MDcyZGU2YzJlZmIyZjk0MDAxMzA0IGxlZ2FjeS10cnVuaworMjQ3MTIgNWM5YmEyNDE4MzkwMWJmNTkyNDM3OGM5MWU5MmVmMjI3ODg4ODJmMyBsZWdhY3ktdHJ1bmsKKzI0NzE0IGRlMTI1NzkyYmZhYWRkZDA4MmE3OTA2YjkyNTZjMDI0ZmNhYjVhZDMgbGVnYWN5LXRydW5rCisyNDcxNSAzM2Q1OWUxOGI2OGQ0NDRhMzVkNTc3YzZmZmE5MDU0MWJmOGRmYjhiIGxlZ2FjeS10cnVuaworMjQ3MTYgY2IwOGJjNjk4Njg1OWU3NGQ2NWE2OWFjMDQ3OTQ3NWJkMDgzYWMyMSBsZWdhY3ktdHJ1bmsKKzI0NzE3IDZkYTYwOTFhMzFlZWYyMDlhNjExNDdjMTliZDNlODhiZjE0MTRlNWQgbGVnYWN5LXRydW5rCisyNDcxOCAwNWJjNTkwNTIyNDkzNGVmYTQzNjQwODAzMzJiMzNjNjExYmM0MDBjIHIyMnJjMS1icmFuY2gKKzI0NzE5IDIyYzk4OGNjMTUyZDEyMmIyNDcxN2U3NmRjNjQwODM3ZTk1MmQ5MmEgcjIycmMxLWJyYW5jaAorMjQ3MjAgM2Q5N2EwNTRmOWQ0YWZlNWE2YTc4NmQzYjZlODE3Y2RmMGExMzdhNiBsZWdhY3ktdHJ1bmsKKzI0NzIxIDY5OGI2ZWViOWE4NmQ4OTM4MWJiMzM1OWE4MjQ4YzFiMzlhM2U3NDkgcjIycmMxLWJyYW5jaAorMjQ3MjIgZWJmOGEwMzYxNTFkNDY1YzI1OTZlYTgyY2YwYTIxMWE5MGYzZGU3YSByMjJyYzEtYnJhbmNoCisyNDcyMyAyMDRkMWQ1YjA4ZDY4YThjNzhmNTcwODM4NWRiYmEyNmU5NTFjNmU4IHIyMnJjMS1icmFuY2gKKzI0NzI0IGZiZDU3ZWU1Yjc3ZDc4MjUwMDkyOTFjZTc1YTFkNWQ4NmEyMjA5MzYgbGVnYWN5LXRydW5rCisyNDcyNSAzY2U4NzFhMDQ1NWI1MmQ1ZGI0NDIxYWI5MGZkNTZhOWJmZTEzMWM2IHIyMnJjMS1icmFuY2gKKzI0NzI2IDM2M2IyZjc1MjkzNTFlZGNhYmIwNWU5YmJkMzlmMTI2MzUxNzgyMWEgcjIycmMxLWJyYW5jaAorMjQ3MjcgNmVhNzE5M2JkYzJlYWZkMTk0M2U1YWQ4MzU3YTkyMjgwNmI2ZmVlMiByMjJyYzEtYnJhbmNoCisyNDcyOCAwNjQzMTExNDljYjRkM2RmYzQ4YmVlMmZjNGVjOTE3YzA3ZWM2YWMxIGxlZ2FjeS10cnVuaworMjQ3MjkgMmFmZTQyZjI0NTU5MDhmMGQwMGU0M2RiZmFhZjJjZTgyM2YwNGQwMyBsZWdhY3ktdHJ1bmsKKzI0NzMwIDljODBiNWFmODEyMWE3NGJkYTI3MDhlZmEzYWY4YzFmNjBlYjUxNzQgbGVnYWN5LXRydW5rCisyNDczMSBmZTE4ZWIwNTUxMDc0MDgyNjliNTI5NmJkY2UwMDIwMzVkN2JkNzhkIHIyMnJjMS1icmFuY2gKKzI0NzMyIGNlZGI1MDM5MTU1YTY1NTMzMTRhMmY3NDNmZjYzOTdjNDg3NjY0M2EgbGVnYWN5LXRydW5rCisyNDczMyAzMWEyNDlhMzQwZjgxN2FkMjkxYjdiYmI3Yjc1YzdjNWU4YmNhZDFmIGxlZ2FjeS10cnVuaworMjQ3MzQgODUwODZmM2U3MGYzNDc4ODkzZjRjNmNlZGQ3MmE5NGJlODIwMmUxYyByMjJyYzEtYnJhbmNoCisyNDczNSBmZGMwY2Y1NmJhOWNmZDVmMDI0ZWU0MmU3YTkwZDViMTYwZGZmZGJjIGxlZ2FjeS10cnVuaworMjQ3MzYgMjc2NjhkYWI3N2Y4OGFjZjJlZWEwNWY3ZjBkNThkNjE5YzFjYmQxMyBsZWdhY3ktdHJ1bmsKKzI0NzM3IDA0MDcyOTQwMjFhMGE2YTAxOGExNjgyMzQ1MWZmZmRkNDVkOTI1ZDAgbGVnYWN5LXRydW5rCisyNDczOCAxZDg5ZGE4MjVmOTU3ODg2ZWJkYjJjYTEzMThmZjUyNjEzYWJkNWMzIHIyMnJjMS1icmFuY2gKKzI0NzM5IDBhOTQ4Y2U0N2U3YTA2YTM1MjY3NTdmN2IzZmFmZTkzNTNlYzFkZGMgcjIycmMxLWJyYW5jaAorMjQ3NDAgZTYzZjQ2NjhjOTVkMDg3MDkzZWI2NjRhN2UyNDFmNTU5MjE2OGY3NCByMjJyYzEtYnJhbmNoCisyNDc0MSBmZjFiNTcxYWNhNzEwZjQwMzkxOTk4ZDY5YzViMDQ5ZTBhM2RjYzMxIHIyMnJjMS1icmFuY2gKKzI0NzQyIDhmYjBjMjRmNGQ0NTBkOTQwYjRlNWNmNjMzM2M2MWNhNjNjNWM4MmEgcjIycmMxLWJyYW5jaAorMjQ3NDMgYjExNzc0Y2NkMTAxZjczMGU5MjcxMzBjZWYxMGM4MTg2MWIwMzhjMiByMjJyYzEtYnJhbmNoCisyNDc0MyA3ZjQ2NzhlZWZhZmIxNDM5MzVjMzljMDM2NGUwYjUzYjMzZDI4ODIwIHIyMnJjMS1icmFuY2gKKzI0NzQ1IDQyMTZlZjE5NjIwYmJkZWRlNGNiM2IxZjMwNWY1OTZhOGUzN2VlNjMgbGVnYWN5LXRydW5rCisyNDc0NiA4YjJiZDA3ODA5MjVmOWQ1ZjFjNmI3NzcwZWNhODgyZDMxMjQ0NDY3IGxlZ2FjeS10cnVuaworMjQ3NDcgZjUzNmY4NTI5NWI4NjM3Y2JmMTVhNzVlM2E1NzI3MWZmMjIyYjQ2ZCBsZWdhY3ktdHJ1bmsKKzI0NzQ4IDNmY2IyMjQ4YmJlOGQ5MDdlOGU2Y2NlMTg4NWM2YjExODJiZjhlMjIgbGVnYWN5LXRydW5rCisyNDc0OSA2YjMwYzNmNDM3OGQ0MzA0Y2UxZTdmNjg2NDI2NzUxYWRjNWVhM2U0IGxlZ2FjeS10cnVuaworMjQ3NTAgYzM5MjBjNDM1MzMzMTg4NGYyZjIyOGRhZmU1MmNhZmY3YmU5NjdlNCBsZWdhY3ktdHJ1bmsKKzI0NzUxIDU3MWQ1YjdiNzQ2YzgyYWQ4MTE4ZDQyYzNiNmEyYWZlY2VhZTA2ZWQgbGVnYWN5LXRydW5rCisyNDc1MiA4MTM0OWU1MTY1OWI1MWM1ZmNkZTJhZWEyY2QxYmE0OTk2ZTcwY2ZlIGxlZ2FjeS10cnVuaworMjQ3NTMgNGNiMjIzZWY4NjliYTA1MzdjN2M5MWJjYjcwMzhkYTc1Mzg1ODY2MCBsZWdhY3ktdHJ1bmsKKzI0NzU0IGFhNDc1M2Y5NDU3MjIxNDE2MjE2MDliOTk3ZDFmMGJhODM3YjJhYzIgbGVnYWN5LXRydW5rCisyNDc1NSA1NTkyMTI1NWVjOTNkMjM0Mzg0YWYxYTY3NmU0NzgxNDEwMzU2NGUwIGxlZ2FjeS10cnVuaworMjQ3NTYgMjc0YWE5MWI0MTdjMTNmNTA5OTAyMmYyMGZkOTYzMjdhMzNiN2Q4MyBsZWdhY3ktdHJ1bmsKKzI0NzU3IGUwZTJiNjE2MWM3ZmQ2YmRlYWU3YWE4YzE0MjQ2Y2M1NTAyNjM1MDEgbGVnYWN5LXRydW5rCisyNDc1OCBhOTY1NmNlMDE1YjBkOGYxMjlkNzlhODc3MGNhNDA0NzVmYTJlNzliIGxlZ2FjeS10cnVuaworMjQ3NTkgMDYzZjhhMzFiNmI4YjcyOWUyYzhmODdlMTkzNDlmNjIyN2FiNjRlYyBsZWdhY3ktdHJ1bmsKKzI0NzYwIGE2MjBlZjg0YjBmYjI2MjMxODUxODI4NDNkZmNmY2Y1MzUwYjdjNzEgbGVnYWN5LXRydW5rCisyNDc2MSAzZmNjMmUyOTkyZDRkNWU1N2I0NzdiOTQ1NWUwMDhmMTdmMTRiOGQ4IGxlZ2FjeS10cnVuaworMjQ3NjIgYjJkMzM5MTM2NGJiYjczMTZjZjAzMDQ4Mjg5NmJiZDc5MDczNDIxOSBsZWdhY3ktdHJ1bmsKKzI0NzYzIGRiZDZhNzYxMjE1OTZiZTAzYjNjY2FhNzNkY2M0ZmJmNGMyOTQxNDMgcjIycmMxLWJyYW5jaAorMjQ3NjQgYTAyOWUzNDgzMDRjOGU3Y2E1OTEzOGYwOTQ2NWViZjJhOGI5MzIxMSBsZWdhY3ktdHJ1bmsKKzI0NzY1IGZkOWQ3YWUzZjk0YTcwMjVkZTY1ZDUyMThmMzRiMzg4ZGQ3NjUxMmMgbGVnYWN5LXRydW5rCisyNDc2NiAzZDJjYzg1NzcxMjdlNTYzZThmYjJjY2I0YTA0YTJhNTBiNTk4ZjI1IGxlZ2FjeS10cnVuaworMjQ3NjcgMTQ1MGVlNmI4YjllY2Q3ZGE5N2FkNjAyNjYyNDM5MGRiZTJlMDM3ZCBsZWdhY3ktdHJ1bmsKKzI0NzY4IGM2NWZhYzdjMjg0MzNlNmU4NjE0ZjVjZjg2ZTg5MzQyZjU5M2RmOGIgcmVsZWFzZTIxLW1haW50CisyNDc2OSA5N2Q4NTc4ODFjODJhZjNkMmRlOTdiODdlZWRiNjRlY2IyMDliYzUxIHJlbGVhc2UyMS1tYWludAorMjQ3NzAgZjU0NjYyM2VmMGM2NTY1ZGNmYjRlOTE0YWUzOGM5ZGQ3ZWZjNTQzMCBsZWdhY3ktdHJ1bmsKKzI0NzcxIDVhNTkwZjE5NmVjNTgzYTcxODBhZTdjYTU1OGRkMmQ2YjFkOWI0OWEgbGVnYWN5LXRydW5rCisyNDc3MiA5YTYzNGQ2MDU0MmFlNzE2NDQ2MjczMGM1NTQ2N2VjMDM5NjUxYjM2IGxlZ2FjeS10cnVuaworMjQ3NzMgZDdhOWViYTc0ZmUyNjExY2ZhMGViMGYxMDcyMWUxMGRiM2M5MzUwNSBsZWdhY3ktdHJ1bmsKKzI0Nzc0IDMwZWZlNDZmOGUzY2FhNWFiMWZlNDQwYTE4YjMxNzM5ZmI3ZWE0NjQgbGVnYWN5LXRydW5rCisyNDc3NSAwNWFkN2E2OWQ5MzMxMWM3ZGYxYTlkM2FjNWIzNTQ5MDg2ZTUyNTJmIGxlZ2FjeS10cnVuaworMjQ3NzYgZDdkMjVlYzAyZDQxMjliZWNlM2VmMGVjNmNlYjAyYjRiNzI4NDM2NyBsZWdhY3ktdHJ1bmsKKzI0Nzc3IDRmNjIxYmFjNzUyNjVkYTI3ZWQ0MmIzM2E4ZjIxMWM5NGU4MTAxZGQgbGVnYWN5LXRydW5rCisyNDc3OCA1MTkzMjkwYWVmMGE1YjRjMWUzMzg2ODJlNzU0MTg4MGFmM2ZkZGIyIGxlZ2FjeS10cnVuaworMjQ3NzkgNDBjNTZmZWZhMTc3MmI2Mjk0MDY5YWEyNTNhZDUzMWI1MTUxYzY2OSBsZWdhY3ktdHJ1bmsKKzI0NzgwIDc3Yzc0NzZmNDFiZGU3Njc0MTI4M2EwNTkwN2M3ZDljMjJmMmI2OTggbGVnYWN5LXRydW5rCisyNDc4MSA3ZTc0NTU4OTBmZDZlYjFhNTljNmZiNTU0NDE2YjJlYTAzMzQxMGFmIGxlZ2FjeS10cnVuaworMjQ3ODIgOTdmMDk5NjcxYmJjZGRlOGYwMmI4ZGUwM2M2YmIzMTUzYzgzZjYxMyBsZWdhY3ktdHJ1bmsKKzI0NzgzIDNhYmYwMDIxNWMxY2NlMDYzMDNiNTIwMmQ3ZTI5ZjE1MGU1ZDVmZmQgbGVnYWN5LXRydW5rCisyNDc4NCBmYTBiZGUzYzg2YjI3OGI5NWQwZGVkYWRiZDdmNGRkMGFkOWM5MmRlIGxlZ2FjeS10cnVuaworMjQ3ODUgYmU1Y2EwYjI1YmZkYzdiZGIyNjMxODMwYTVkMmUxYWFkMDgwZjM5NSBsZWdhY3ktdHJ1bmsKKzI0Nzg2IGZiNmIzZmM0ZTBjMWFhYjEzNDY4MGM5ZWJmMGY4NzQ2NzM3MGEyYWYgbGVnYWN5LXRydW5rCisyNDc4NyBiZDEyYjU5NzNkYWE5OTY1MjRlMTk1YTY0NmY3NjdiOTY5Zjg1MmY0IGxlZ2FjeS10cnVuaworMjQ3ODggN2FmNDVhZmZkMzUzMmEwYjA4Y2Y3YmE4NGM2Yjc1YjVkNjhiMGQ3ZCBsZWdhY3ktdHJ1bmsKKzI0Nzg5IDk4NDY0Mzk0Y2NlMzM2ODNiYWVlMTZmZmI4YjJjYTg0NjNjNTA0NWIgcmVsZWFzZTIxLW1haW50CisyNDc5MCBlM2MyZmQxNzdhNmU0ZTJlZTc4OTg5MzZhODBjNWNlZTUyOGVjNGYxIHJlbGVhc2UyMS1tYWludAorMjQ3OTEgYzU3OTdhMDA4M2Q4ZmEyYTBkNTM2ZTZkODRkNTlmYTkxZmFmOWVhMCByZWxlYXNlMjEtbWFpbnQKKzI0NzkyIDQ2NWM5MzI1YWY2OWY0MTg2NGQyNmNlODc3MGVkYzY5YjUyZTlmM2QgcmVsZWFzZTIxLW1haW50CisyNDc5MyBmNjg1ZjA3MDRiYmQzYTk4NWNkMmNlN2ViNzdiOGZlMDEwMDg0N2ZmIHJlbGVhc2UyMS1tYWludAorMjQ3OTQgMGY3NGRiNzRhOGY0MDgwMzA3YmM0OGE3YmRkMGI1ZGVjOTZjNjI4YSBsZWdhY3ktdHJ1bmsKKzI0Nzk1IDMzMDNmMmQ5MmNlZjljOGQzNDg5MmVjYzc0MDQ3OWU3MDFkOWEzNzggbGVnYWN5LXRydW5rCisyNDc5NiA2NjRhYzgyMjdjYzUzZjNlMzRhYzlkZmU5MDZiOWJhZTJkZGQ4NjZhIGxlZ2FjeS10cnVuaworMjQ3OTcgZGY3NzBkZDBiZWM0YTc2ZmVmYmE0YjE3ZTIxN2JiZTgxOGJiZjhhMSByZWxlYXNlMjEtbWFpbnQKKzI0Nzk4IGIyNzU5OWFiY2M0OWExMTdlODFkZGU1Nzk5N2ZhZGY0OWEyY2Y5NmEgbGVnYWN5LXRydW5rCisyNDc5OSA5NDIzMjQ1NTE0YTg4NWVjOWU3N2JkOWI3Y2ZhOGExY2VkYTcwNTU0IGxlZ2FjeS10cnVuaworMjQ4MDAgM2E5MzE0NWI2YTk2MzJkYjI2OTQ2ZGE5Yjk3YWYyM2FlNzA1YmY4ZCBsZWdhY3ktdHJ1bmsKKzI0ODAxIDRlMzVmYTVkNTcwOGRjNTU3MGNiZWEzMTc5MmQ2YTc0YzNiMWMyZmQgbGVnYWN5LXRydW5rCisyNDgwMiA4MzQ4ZTg0NDFlYWY3NWJlODhlYmJlOTc3OTJjMzA4MjFiNDJiNTcxIGxlZ2FjeS10cnVuaworMjQ4MDMgZjE4Y2ZkZTJlODA0OWU4ZTBkMjk2ZmNkZGQ0ZjNjYmNhNmQ4ZTMxYyBsZWdhY3ktdHJ1bmsKKzI0ODA0IDk1OWEyZWQ1NzM1Y2QwODU5YmRiZTlkZDZmYzE5YmE1ZjkxMWM3MWUgbGVnYWN5LXRydW5rCisyNDgwNSA4MDNhYTBjMmIxMzBmOTJkNWQ0MjU3OTZjNDhmMzVjODZmNGQxYzg2IGxlZ2FjeS10cnVuaworMjQ4MDYgNjczYmJmMTE1NTA4OTIyNWY0ZTliYWIyNjBmODM0OTg2NmU2ZDQyNiBsZWdhY3ktdHJ1bmsKKzI0ODA3IGUxZjNmZTU2NzdkYTNkOGVlNWVlOGE0YTA4YmQ4ZmU1MzJkNDM5ODggbGVnYWN5LXRydW5rCisyNDgwOCBhM2IwNjczYmEyY2E1ZmE0M2MzOTg1NTY3N2Y0ZTQ1ZDQ1N2ExMjZmIGxlZ2FjeS10cnVuaworMjQ4MDkgYWFjMjMzMzFhMjVkNzgzMGVmY2ZiNjNhOWQzMGM3M2MzNWYwMmNjNSBsZWdhY3ktdHJ1bmsKKzI0ODEwIGFmMjYyM2JiNWQwYmMzZDhkYTRiMmVkMWRlZDkwN2YxMjRkOGU2MmIgbGVnYWN5LXRydW5rCisyNDgxMSBjY2IyNmExMTg4NjdlODIwNGM3NGE3NmRlODgwYTc0NjI1MDczNDg0IGxlZ2FjeS10cnVuaworMjQ4MTIgYjQ4OTEwYTk1Nzk3MWE3OWU5YTM5NzRlY2I3OTNhODg2ZWY0NTAzZiBsZWdhY3ktdHJ1bmsKKzI0ODEzIDRjODJjOGVkNmRmNGQ0YzQ3ZDQ3NTVhOTk0M2UwY2YyYTcwNDgyMDIgbGVnYWN5LXRydW5rCisyNDgxNCAyMWM3ZDc1NjU5NzdjZWE2OTY2N2ZkODQ2MzQzOTNlNjhkMTNlNzJmIGxlZ2FjeS10cnVuaworMjQ4MTUgMDBiM2FkMWNlNDA0ZDZmZmQzM2FiNjRlZWZjMzU2ZDBhMTA4YmM5ZCByMjJyYzEtYnJhbmNoCisyNDgxNyAwMDNhOTg1Y2FiOTViYmI2YTk5YjYzNjE4YjBhZmQyM2E0M2M2MmMyIGxlZ2FjeS10cnVuaworMjQ4MTggNzYyMjU0MzRhNmZlZDc0NGExYzJkNGU5ZGVkZWUwMTQ3ZWJlODdmNiBsZWdhY3ktdHJ1bmsKKzI0ODE5IDg3MzI5MWE0ODg5ZWM5MmU2ZWIwOGY0NzYwNWM2MzgzNDFjYzRmZGQgbGVnYWN5LXRydW5rCisyNDgyMCAyZDM3NmQ5MjZkYTgyYTkwMjFmYTgxNDJiNGQ1ZWY0NjAyMDgxMzhhIGxlZ2FjeS10cnVuaworMjQ4MjEgOWQ5NWMxYTg5Y2ZjYjBhMzM5N2E5NjhiZTc0YTMwZmUzNmMyNDhjMyBsZWdhY3ktdHJ1bmsKKzI0ODIyIDVlMDZmOGZlMzhlZTRhZmY4MzdlMTE2ZDFhNDNkYjgzOGE2OGRkNDcgbGVnYWN5LXRydW5rCisyNDgyMyBhMTk5MjY5NGM4MjQyNWUwYzQyNWM0ZTMxMzExMjNmNGFlZDdkNTkxIGxlZ2FjeS10cnVuaworMjQ4MjQgYmIxNjhkZTUwYTAzMmI3Mzk4YzhlNDUwZjFhYjM2MjYxOWJkZDNkZiBsZWdhY3ktdHJ1bmsKKzI0ODI1IDFkMWM0NjgyNGZjM2U3ZWQ1MDBhYTc0YTU0YmY0N2UyYjFhNWJmNGQgbGVnYWN5LXRydW5rCisyNDgyNiBiZjY0NDhmMDIyNzM3NGVkYTkxODllZWU1YmRhYzU4Mjc2Y2JkMTYzIHJlbGVhc2UyMS1tYWludAorMjQ4MjcgY2E0NTBlNGRmZjlhNjI2NDg0MDUyMTdjNGU0NDA3ZGVmZDhjOGVkNiBsZWdhY3ktdHJ1bmsKKzI0ODI4IDA0NDYzMDE2MTA5M2M5MTc0NGM1MzllNmY1MGI5ZWQ0MGI2M2FkYTYgcmVsZWFzZTIxLW1haW50CisyNDgyOSAxNjIxMDZiMTZlNDQ0YzFhNDc1YjYwODRkMGRmZmE0NGIzMTRkZmIyIGxlZ2FjeS10cnVuaworMjQ4MzAgNDRjNDc5Zjg0ZTM2OGMwYjVmM2Q4NTM1ODRiYzg4OWFmMzI2ODEyOCBsZWdhY3ktdHJ1bmsKKzI0ODMxIDI0NzQ0MTRkNDM0MjkyNGIwNmZiYjlkYzE4YmIwNjQ0NmZhZjg0ZjEgbGVnYWN5LXRydW5rCisyNDgzMiA3YzJmOTVkZWNjYWQ1ZTI0ODQ4NWMwNTAxNzM4NzAxNzAzNmI3YTgxIHIyMnJjMS1icmFuY2gKKzI0ODM0IDY1ZjQwOTRmNDNmNDZmZDUyOWE2ODRmZTI5YTc4YzE1MjIwMjEzYmYgcmVsZWFzZTIxLW1haW50CisyNDgzNSA4MTRjZTA5Mjk1M2VjMjNmMzk4MTRmYzhkYzBkNDBiZmQ3ODVlNzVhIGxlZ2FjeS10cnVuaworMjQ4MzYgZTkyMDJmZTMyZjBiOGZmNmVhYjg1OTlkMmMzNGY3NjhiYzhiZDZmZCBsZWdhY3ktdHJ1bmsKKzI0ODM3IDg4YmFhNGM0ZWVlMTA1YjZlNDc5YWY0ZTViZDEzNzY2OTMwYThjN2YgbGVnYWN5LXRydW5rCisyNDgzOCBjY2E1NmE5NzZjYjI1Y2IwNjAyNDg1MWU4MWZhMTJmMjBiMmE2YjQ2IGxlZ2FjeS10cnVuaworMjQ4MzkgNGEzNDg2MmEzOTk0MjNmNDcwMjU5MzlkMzQ0ZmMzOGYwYWQ4MzU3MCBsZWdhY3ktdHJ1bmsKKzI0ODQwIDY1MmUxODI3OTU4M2MxNDZhOTI5NjQ4NWQxN2NkZDllNGFhZmYxNGIgbGVnYWN5LXRydW5rCisyNDg0MSA1YTUwNDEwMmEwOWM1MDI0N2ExMjNhNzdkOTFkMmFjZjMzMTlkYmFjIGxlZ2FjeS10cnVuaworMjQ4NDIgYTAzYjEzYmUyZjY4Zjk1YmQ0NmRiZGUxYjJjYTg2MWJmY2ZhNDk5YSBsZWdhY3ktdHJ1bmsKKzI0ODQzIDM4MTVhOTU5ODE5YzQ2OTM4M2I1ZTdmMTNmZjg4MTFjYWE0YzQ0MWEgbGVnYWN5LXRydW5rCisyNDg0NCAzYzlmMzkxZDdlMDMzODQyMGNjMmJmODk1OWFmZWIwNTBkOWIyY2JkIHJlbGVhc2UyMi1icmFuY2gKKzI0ODQ2IDMyNDhlYWQ3MTkyODc5ZDhjYmQwYzQwNDc0ZjEzMzQwN2ZlYzFkNjkgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NDcgZDZhNDRmZDFmNGMxNDM3MDkwNjc5Mjc2MjE5ZjRkNjc2NjYxZmM4OSBsZWdhY3ktdHJ1bmsKKzI0ODQ4IGUzZGUzOGFhNjQ2MjMxNDgxYWQwMzY0ZTQ5ZDAwN2M4NDQwNjdkYWYgbGVnYWN5LXRydW5rCisyNDg0OSAwOTdkZDk1M2UxMTk2MjRmMDE5Zjg5MDVlYzM4YmY3NTUzMzZkNmZmIHJlbGVhc2UyMS1tYWludAorMjQ4NTAgNTY4Yzc1ZGQ1MDc4MmE5YjQwMzExNzE2YzIzYjk4Y2IwZmUzYjBjZiByZWxlYXNlMjEtbWFpbnQKKzI0ODUxIDg1ZTY5NGU5YjlmYzE0NjQ0ZDI1NTFiMDM0MWQyZDBhZmRlZGU5OTcgcmVsZWFzZTIxLW1haW50CisyNDg1MiBlM2FhNWFhYjI4NzZkZmJlMWQ5YWQxYWY5ZWU1YmRmZDA3YWNlZDEyIHJlbGVhc2UyMi1icmFuY2gKKzI0ODUzIDgyYWM4MzQ3NDQ2MjkxMTI1YWUxY2VjZmNmYTgzYzY4Yjc2MGZkYjYgcmVsZWFzZTIxLW1haW50CisyNDg1NCAyNWJhYmQ0MzJiMjRmNGJiMTI1ZGFlMWUyY2JlZThmMTc2MDA2ZmZmIHJlbGVhc2UyMi1icmFuY2gKKzI0ODU1IDMyNmQ5OTcyZjZmNjEwMDM2ZjlhNGU4YmJlZTIxYTFhNmE3ZjY0MDcgbGVnYWN5LXRydW5rCisyNDg1NiBlOGQzNmMxODMxMzc1NzM3NGZiYzI4NjViZDIwMGU0NzI0NWU5ZGI2IHJlbGVhc2UyMi1icmFuY2gKKzI0ODU3IDA0NjEyZGMzMjNkZjMwODIwYzQ4ZThlOGU4ZDIxNzA1NGRjNzNjZmYgbGVnYWN5LXRydW5rCisyNDg1OCA3NjdkMjQ1ZmQ4ZGNmYjY5ZWY2YjRmMzNiNGI5YjI4MWYwZjM3ZWU1IHJlbGVhc2UyMi1icmFuY2gKKzI0ODU5IDA5NTE4YzRjNjg1MDhiNDJkMDhmNzA4OWE0NGI4OWFkOTAwYTI1NjQgbGVnYWN5LXRydW5rCisyNDg2MCA0OGYzMjE5OGNlYjkxZjQ5ZGQ4YTAwYTQwZDkyZGQ0YTU1ZmUwNTdkIHJlbGVhc2UyMS1tYWludAorMjQ4NjEgMDgyNWViMWRiZWI4MWNhYjc2MDE3ZjVmNGVhMzdmYmEwMDhhZDgyNyBsZWdhY3ktdHJ1bmsKKzI0ODYyIDE3OTk3ODIwOTcxZDBjMjliZTU3ZGNjNWExZDlmOThhOTIzZDE0ZTMgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjMgZmM5ZTI3MTE3MTRkZWU5OTU5NmFkMzY0MTNkMDJhMmJjZmZlODdiZCByZWxlYXNlMjItYnJhbmNoCisyNDg2NCA2YzIzYTNmYjBiMDQ5ODcyYTUzNzc0YWViMTc1MDY3MjUwNmIzYTJlIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY1IDYwNjM1NDQwMTM5NmY1NDA2YmZhMDE5OWQ3MmZhNGFiMWY3MDYzZmYgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjYgM2ZmZWVkYTAyMGRjYWUxMGQ2ODIyMzJlN2M1YWIzYThiNDAwZTRkYiByZWxlYXNlMjItYnJhbmNoCisyNDg2NyA0NzljZjg4MmJkYjVlNjYyY2I3MThmZDNiZTMzYTA1MDcyYjQ1ZDAyIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY4IDExMDAzYjY2NTU0NWQ2MWYxNDhiZTdjMDg1MDA5YzJlYzUwN2Q1MGUgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjkgMzI0Njg0YWRiNDgzNTI0MTA1MzAxM2NlODcwMGE1NjQwNjA4MDA1YyBsZWdhY3ktdHJ1bmsKKzI0ODcwIDc0YzVkY2MxNWI3MzU1NjU0OTI2ODhhNWJlNjBhZTg2NWE3MTY4NTMgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzEgZTkzZjE0NDg2MmRlOTcyYjFiMTE3ZTQ2YTFmY2EzMmZmZTIwNDQ2NyByZWxlYXNlMjItYnJhbmNoCisyNDg3MiA4YWY4NmE5NTJiMmNhM2ZhMjBiNzgzZmU4ZDhkZTAzNDFkNzJjZTdlIGxlZ2FjeS10cnVuaworMjQ4NzMgNGY4OTMyMTM0ZGNhM2IzZmQ3YTQ4MTAyMTIzYmI2NzQ4ZWE0NDEwOSByZWxlYXNlMjItYnJhbmNoCisyNDg3MyBkY2E4YjU4NzQ2NDM5YTlmN2RmMjEyZjY0M2VlNGQ0MGViOGRmMjRiIHJlbGVhc2UyMi1icmFuY2gKKzI0ODc1IDkzNWI4NjAyY2FkOTgzNjcwNGEzYWExN2NiYmQ4ZTRlYzk4MjQwOTIgbGVnYWN5LXRydW5rCisyNDg3NiA5MDI1MTk3YThlYTBjNGJiYzc2YTBkMDhiMjQ0ZTRhN2RkOGIwMjMyIHJlbGVhc2UyMS1tYWludAorMjQ4NzcgZTBhNWQxNmE5Y2I5NTE5NmNhMTg2MTQ0MjMwOTNiZWIyMjFlMzlkMCBsZWdhY3ktdHJ1bmsKKzI0ODc4IGNiNTVmMTViMjczMDEwNWZkOWI1OTNlMjFhOTkwNzI0YzliOTQ1YTcgbGVnYWN5LXRydW5rCisyNDg3OSBiNDg0YWE2MWNhYjRhNmFlZTZmZjA3ZjE4OTJmOTVhNDVhOWI3ZWExIGxlZ2FjeS10cnVuaworMjQ4ODAgOWQ0ODBkMGZlNjkwNTcxY2ZiYWU1MjBiMmQ3MWQ2NWJjMWVhZTAyMiBsZWdhY3ktdHJ1bmsKKzI0ODgxIDI2OGI1N2Q5ZGFlZDE4YTNjOGU3NmI1ZDQzYjBmYThhNWQ5MGM5MzQgbGVnYWN5LXRydW5rCisyNDg4MiBmYzgxMzE2NGNlOWY5ODEzZTY3MjAwYjQ2N2JjOGU5Zjg1OGJkZGNiIHJlbGVhc2UyMi1icmFuY2gKKzI0ODg0IDM0OWQ2NmNkODc0YzMzNWRjNDY1NjA5NGJkM2JjNDc2ZjFhYjk1MmQgbGVnYWN5LXRydW5rCisyNDg4NSA3YzI4ZTk1NmY5YjBiYWQ2YmM2YTE0OWUzZWVlY2JlMDFmMjdlYzA2IGxlZ2FjeS10cnVuaworMjQ4ODYgYWMzY2UxZmFlYzY4ZWEzYzcxMTRhMWNmMGRlNGNmYzI2NjBmN2EzNCBsZWdhY3ktdHJ1bmsKKzI0ODg3IDQyMzJkMjU3ZTRmZjIyZWI4N2Y3YjMzNTAxODc0N2E5ZDc2YjMwYTcgcmVsZWFzZTIxLW1haW50CisyNDg4OCA0MWZmNDc3NzkyNmViNTE5MTk5YTVkYjk3MWVlNTVkOWVhY2RmY2E1IHJlbGVhc2UyMS1tYWludAorMjQ4ODkgMTMzOWI2ZDMyZTk1M2RiOGI4YjZiNDA2NzY4Nzk5NDc4MjIzNDRkZSByZWxlYXNlMjEtbWFpbnQKKzI0ODkwIGU2OWIyMWYyNTI5ZWU2YzQ1OWFhMmZiNzI2OGZlOTQ4M2ZhMzU1ZGEgcmVsZWFzZTIxLW1haW50CisyNDg5MSA0YTJjM2FlMDllMGM0ZWZkZWEyYTU2M2NjODM3MDZjYjFlM2RkYzAyIHJlbGVhc2UyMS1tYWludAorMjQ4OTIgMmE3ODViNjY4YTE2MDkyNTRlZGM3ZjYwYjNkNjg2M2ZiMGE3MmNkZSByZWxlYXNlMjEtbWFpbnQKKzI0ODkzIDAwNmM1NWJkZjdlMTU2ZmMyZTU3NTZlZGRjNDBmNTI3ZWY2OTkyYmEgcmVsZWFzZTIxLW1haW50CisyNDg5NCBjNDhkOGIzNjJhY2VlMWNkZTJiMDc0MDZiYWMxM2MwOGQ0MjZiYzQ5IGxlZ2FjeS10cnVuaworMjQ4OTUgY2EyN2Q4MmFjODliNDZlM2QzZTllYTNlMDdhMzM0ODkyYzlkNzcwOCBsZWdhY3ktdHJ1bmsKKzI0ODk2IGU4Y2IyMzZhYWQyNzk2MjZmYWFmN2ViYTZjNGY4NmI1ODE1M2M2MWIgbGVnYWN5LXRydW5rCisyNDg5NyA3YmRlOWNhOTA1NTQ5MzRlMTJlZGE2ZDRkNmQ5MWJjZGE0OGRlNzE5IGxlZ2FjeS10cnVuaworMjQ4OTggMGFmOWFjODdmZmJjMWQ5ZTMyNTY2ZjgyMTUzMTExNjUwMWEwYmU4ZiBsZWdhY3ktdHJ1bmsKKzI0ODk5IGJmNTE5MzIxZTc5NjdlMmQyMDZjMTkwYjgyY2I3ODAxNWRhZGM3YjQgbGVnYWN5LXRydW5rCisyNDkwMCA1ZDQxMzU2MDllZmMxYTg0MDgzZGZlYjFmMWNmZDUyMTk5ZjBjYTlkIGxlZ2FjeS10cnVuaworMjQ5MDEgOWMzMmU5MjAwYWJlZTkxZTIxNzA5MjcyNzVjOTFjZGMwYTQzNzY4YyByZWxlYXNlMjEtbWFpbnQKKzI0OTAyIDVmMzIxMzY1NWQ5NTVmNDE3YjUxMDFiODdjNGFkMzU1ODZmNjgyMWMgcmVsZWFzZTIxLW1haW50CisyNDkwMyAxMTRhNmJjZmU4NmJiODRmMWZjYTY3YmNlYzUxYjFhMWMwMjhmYjhhIGxlZ2FjeS10cnVuaworMjQ5MDQgZjcyMjQ0Y2Y4NWE5Yjc2MjJiNDdiYWQ2ZDc0ZWIwOGQ2OWE2ZTE2ZCBsZWdhY3ktdHJ1bmsKKzI0OTA1IGFkMTI2YzA2MzY1NDhkMzViZTQ3NWExMWQ2MTZjZTZlNzdiY2I2MzMgcmVsZWFzZTIyLWJyYW5jaAorMjQ5MDYgYTYwZmNkYzc1MzQ2YjNlMzY4YTQ0ODQwOTlmZTFlNTdiYzdhNzM0NCByZWxlYXNlMjItYnJhbmNoCisyNDkwOCBkNTk4NjhiYWZlYjEwYjJjZWQ4YzJhYjI2YmQ0NjM4YjA2Njg5ZTkwIHJlbGVhc2UyMS1tYWludAorMjQ5MDkgNThhODJhNGJlOGIxNzNlNTJlOWZjY2UxZmVlMzNiNmZkYzVhM2IwMCBsZWdhY3ktdHJ1bmsKKzI0OTEwIDY4ODQyZDI5NWQyY2NjZGY4NmI5MGNjYjljMWM4NDY0NTU2YTcxNTggbGVnYWN5LXRydW5rCisyNDkxMSA4MmNiMTc0OThmYzFmYjdkZWI3M2IyZjNiOTkyNjM4ZGM1NDgzNDZiIGxlZ2FjeS10cnVuaworMjQ5MTIgM2IzOWJhMmI4MDBlZGQ3ZDlhMjQ1NDdmMDVmMzBkNTlmMzgzZmM2YyBsZWdhY3ktdHJ1bmsKKzI0OTEzIDE4OTQ3OTZlOTMwYzE0NTc0YmQzMzRkYmRlNTI4NmU1MTg1NGU5ODkgbGVnYWN5LXRydW5rCisyNDkxNCA0NTU0MDcyZTc2YjRmMDlhYjZmZWM5OTNiOGNlOTA4MDRlYTFhMjQxIGxlZ2FjeS10cnVuaworMjQ5MTUgYjJlNzljYWE2OGUwYjFjOWJjODVjZTM5ZGNiMzNiYTExYWI0ZjJjMSBsZWdhY3ktdHJ1bmsKKzI0OTE2IGU2YTdhZDZjMzY1MmRhM2EzOGQ0YmZhMjY1OTdjOGRiNWZjZDA3NzYgcmVsZWFzZTIxLW1haW50CisyNDkxNyA1OGI3N2VmNDcyZDRjMmEzMzIwZjY1YzQ5OGI3NmU3NGIwYThkYjA5IGxlZ2FjeS10cnVuaworMjQ5MTggNTIwNTNhZmNhZDMyNWM2Mzg2N2E5YzU2ZTA4MTUwYmNjYzk5ODYxMyByZWxlYXNlMjEtbWFpbnQKKzI0OTE5IDFlYzM0YTBkMDJhNzdjZTQzYWIyOWJlZGI1NTNkODhlY2E4YTkzNTUgcmVsZWFzZTIxLW1haW50CisyNDkyMCA0M2I2NDI0NWYxYWE3YjllMTNjNzdlNzk2OWNhOTk5Nzg5YjlkMWZmIHJlbGVhc2UyMS1tYWludAorMjQ5MjEgYWI5MmVhYTE0MGVmOTRlNzVjZDJmNjM5Yjk1ZTRmNmVlYWQ2YmFlOSBsZWdhY3ktdHJ1bmsKKzI0OTIyIDg0NzQyNWQ1YmNhODA3OTM5Yjc2ZDkxODY5MTA4MWY2ODQzN2IzZTkgbGVnYWN5LXRydW5rCisyNDkyMyBmODQ3NTEzNWFjMTM0MzZmMDYyYzM1ZWUxOWY4YzZjN2M4OGYyNWU4IGxlZ2FjeS10cnVuaworMjQ5MjQgZmNiNjQ5YjEwMDRkZTM3ZTk4ZDFmMjc3ZDRmYjE3YTM4MDQxZGFiYyByZWxlYXNlMjItbWFpbnQKKzI0OTI1IDVkNzc4MjViYmMxMDY1OGYyMTE1MTMzNTVlODdiYWNmYmFkZjBmOTkgcmVsZWFzZTIyLW1haW50CisyNDkyNiA5ZTAyMzNjMGUwMDNjOTE4Yzc1MjQzOThkMGYwMjA4NjY3YjEwZmI3IHJlbGVhc2UyMi1tYWludAorMjQ5MjcgYWM4ZDg1ZGE2ZDBkYmJlNDg3MzdjMGUxMDcxZTVjMmZjNmY3ODI4ZCByZWxlYXNlMjItbWFpbnQKKzI0OTI4IGUyMDQ3YWYwYjJlNmU2ZmQyYjUyNWVjMTkwYWQxNmQyNGQ1ZjY1ZTMgcmVsZWFzZTIyLW1haW50CisyNDkyOSAxMmUwZDU4ZTQ0YmRiYTE0Y2E0NjZhM2Q3N2Q0MzhhMjZlNDVlYTBlIHJlbGVhc2UyMi1tYWludAorMjQ5MzAgMThkYjkxYzBhNzhmMWNlN2YyMGI0MjgyN2VhMTJkODU3NDFjNTczNiByZWxlYXNlMjItbWFpbnQKKzI0OTMxIGVmZDA0ZDFmMzA4NWUxZmE2MTQyZGYyMjM4MmQ2YzIxZWM2YTdjNTAgcmVsZWFzZTIyLW1haW50CisyNDkzMiBjZDc3YWExMWVkZGMxOWY2YzhhM2Y1ZjI1MWYyY2E1ZmQ5ZmVjNjljIHJlbGVhc2UyMi1tYWludAorMjQ5MzMgODEyZDE1NDNiYTA4OWFhMTAzZjQ2NTZiM2I4OWY3ZTgxMmZiNTNiMyByZWxlYXNlMjItbWFpbnQKKzI0OTM0IGQwODlkMWU4NDExY2NjNDM0OWI1MWM1MzQ1Y2Q5Nzk4MjEyYTRiZmUgcmVsZWFzZTIyLW1haW50CisyNDkzNSBmNzc3NThjODcyZmI1MTFmNjNiMDAxYmRhMGM3MWEyMDhmN2U5ZWE2IHJlbGVhc2UyMi1tYWludAorMjQ5MzYgOGQ1MWM3NTM5NzE5YjE5YzU0MTViODYyNWQ4MWY2OTIzY2Q0ZTU0NiByZWxlYXNlMjItbWFpbnQKKzI0OTM3IDljY2VhZDVmZDI5NzExNzhhNmQxNjRiNzhlNjBkNTFlZGE3NTlmZmYgcmVsZWFzZTIyLW1haW50CisyNDkzOCAzOTc3YWQzYjA4MjU3ZDUwYTY0N2FiODY2MmQ4YWU0ODk4YTA1Njc0IHJlbGVhc2UyMi1tYWludAorMjQ5MzkgYjkzNzFmMzI0MWI4NTAwN2UyYjhhNWY2ZDUwNTVmYjliZTI4MWFhMCByZWxlYXNlMjItbWFpbnQKKzI0OTQwIGFjNGIxYzRjM2IxMmYyODRkZjM3MWEwZmVjN2ZkNGZiZTQwYTA4NzcgcmVsZWFzZTIyLW1haW50CisyNDk0MSA3YjJkNzAxZWM0MDRkNzM5YTg4MDY2MmMyMmVhMzAxNjg2NzcyNzQyIHJlbGVhc2UyMi1tYWludAorMjQ5NDIgYTk0ZTQ4MjEzOThkYTI5YzU4MjAxN2Q5MDIzZDFjYjNlOTE3MzU3ZCByZWxlYXNlMjItbWFpbnQKKzI0OTQzIGEyZWFiNGRlNTUwNTM5OWIyMDE0NTczYWI5OGNjZjBmZmIxNjVhYTYgbGVnYWN5LXRydW5rCisyNDk0NCBlYzYyMzA0NzA3M2EyYmU0MTcyODQ0OTk1ZmMwY2Q1ZGQ2NGM0Y2Y4IGxlZ2FjeS10cnVuaworMjQ5NDUgMTZhODI0MjNiODYwMjA0NTdhNGY0ZTgxOWM4MDRiNGJmZjIyN2U5YyBsZWdhY3ktdHJ1bmsKKzI0OTQ2IGZkYzM5ZTI3YTQ5NGU4YjZhNzRiMmU1MDM3MjE3MTZjYzk4YTI4ZWQgbGVnYWN5LXRydW5rCisyNDk0NyAyOWMxYTU4ZGRhNTNmYWYzNTk5ZWNlNmY4YTFhZDk0NDIyNTMwMzVjIHJlbGVhc2UyMi1tYWludAorMjQ5NDggMDk3YWUwYWRmNDdmYmM0MTZjY2RmZDQwMGFlYTc5MTEzODE3NDcwYyBsZWdhY3ktdHJ1bmsKKzI0OTQ5IDZlOWE0ZjlhNTVhNDFiMzRhNmY5YzZmM2IzZGI4N2MxNWE1NDdmNjkgbGVnYWN5LXRydW5rCisyNDk1MCBkMDRlYjhkNjY0ZTJkZjMwYzZmYmUwNGFkZWUwZGNlM2VkZmNmODI5IGxlZ2FjeS10cnVuaworMjQ5NTEgOTJkYTc0YzhlNWU4YzAyYjdkN2ExOTU1NzkwY2VhNWZjNTgzNDM5MCBsZWdhY3ktdHJ1bmsKKzI0OTUyIDViN2IzODZjYjBkNDUzNTc2YTdiODUxOTY4YjhkMWZiNzkxNzRjZmYgbGVnYWN5LXRydW5rCisyNDk1MyA3ZGQzOTU5ODgyNzU4MWNiMTVjZjZmNmU5ZmI3NmY0N2ViZTdiNmVlIGxlZ2FjeS10cnVuaworMjQ5NTQgZmY3MGU1NjM0YWU5MTI3YTc5MWZiMWIzN2ViZWRhOTQ2MmY3NjIwYiBsZWdhY3ktdHJ1bmsKKzI0OTU1IDE4YTcwYTgyYWYxNTk3ODg2MTQ2MmY3Yjk2ZmVkYmI2OTQ1OWQ5OGMgbGVnYWN5LXRydW5rCisyNDk1NiBlNTYwNDdkYjY1Mzg0NzIzNTMyMmI0NTAyMDIyMmNhM2IzNGEzZTgwIGxlZ2FjeS10cnVuaworMjQ5NTcgNWZmOGJiMjUwMzFjODIzMDhjODFhMWExOWFmYjJiZTgyYWQ2YTJmZSBsZWdhY3ktdHJ1bmsKKzI0OTU4IDg1NzgzNTVkMjNkMzQ5NWEwNGEzMDhjNzljNTkyZTAwNTIzZWM2OTIgbGVnYWN5LXRydW5rCisyNDk1OSBjYWM5MzFhZDNjYzVhNjcyZDBlMjY2MzU5MTZiZGQ5MDAxZWY2MGI0IGxlZ2FjeS10cnVuaworMjQ5NjAgNjk3MDUxZjY3ZTk3NmE1MDNhNjgzNjEyZjhmYjgwNzc4ODhjNWZmMyBsZWdhY3ktdHJ1bmsKKzI0OTYxIGZlNTRlOGQ5M2NiNDhjMjBkMWY4NTAwNmUwNzE0NzRmYmE1YjliZjIgbGVnYWN5LXRydW5rCisyNDk2MiA1MmIzYjg0NmYxMWY1NGRjYjVkNjdhMDM2MmZjMjJmMDA3MzBhMjYwIGxlZ2FjeS10cnVuaworMjQ5NjMgYTUwZGY2NWFjYTdhOWI4MTUwMDRjY2NiYzQzYTY5MzExYTU0NzVlNCBsZWdhY3ktdHJ1bmsKKzI0OTY0IDJmNDA3MzI2OWRhZmQzMzg3YmExODFhYWRmOTlkM2JkMmUwZmY3OGIgbGVnYWN5LXRydW5rCisyNDk2NSA2NGQwYzk0OWYzM2UyZmViZGE3YmMxZTQ2M2ZhOGQ2NzY0MGI1NjM4IGxlZ2FjeS10cnVuaworMjQ5NjYgMDM1ZDljOTZhYWVjZmM4ODQwZDU4MjQ0MGI1ZjFkN2JjYjczNjM2OSBsZWdhY3ktdHJ1bmsKKzI0OTY3IDY3ZGExMTI5MzQwNmNkNGY3NDRmYzMxODY3NzUyNTUwMzA1ODIyNjYgbGVnYWN5LXRydW5rCisyNDk2OCBiZTIxM2YxY2Q0NjJlMWI1OGFhZmNhZjFkMjQwMmVmYjQ3ZmZiMDg1IGxlZ2FjeS10cnVuaworMjQ5NjkgZmIzNGY1NWEwM2ZhYmY0MDIxN2YyMTc0ZGVhMWMyMzMwNDkwN2I2MyBsZWdhY3ktdHJ1bmsKKzI0OTcwIDNiYTBmMWIyMDMyMGM5NzRmYjBiYzA5NWM0MTFiMzk4MTIzYjIyMTMgbGVnYWN5LXRydW5rCisyNDk3MSBhOWUwNmZmYWY3ZmJlOWQ4Yzc5YTk4OGU2ODRlNjgxNGJmYWJkZDc2IGxlZ2FjeS10cnVuaworMjQ5NzIgOTM3Y2MxMGNkMzlkZjAxNzdjMWUyY2Y5NzE4Nzg4MWViNWEwYWVmMyBsZWdhY3ktdHJ1bmsKKzI0OTczIGRhOGI5OTc0NjllN2RjMGZiNTgxODFiMTVhNzNjMzY2ODNjNDRjZjUgbGVnYWN5LXRydW5rCisyNDk3NCA4ZGZiZmJjOTMxYjRhNjdiODkxZjQyMWQ4ODRmYjljNThhYzE3NzIwIGxlZ2FjeS10cnVuaworMjQ5NzUgMDk1Y2ZmMjE5NTZjYmY5MTRlNTcxZTllYmUyZTIwZjRkNTZhMjExNiBsZWdhY3ktdHJ1bmsKKzI0OTc2IGVhODVlZWE2YjJiOTQ5ZmRhNjJiNTY1MGFiYzk1NmRiNDUxNTcwYWQgbGVnYWN5LXRydW5rCisyNDk3NyAzYjQzZjQwYWYyN2E5ODRhMWE2NjA5MTBmZDMwMDBmYzY3YmZiMGNhIGxlZ2FjeS10cnVuaworMjQ5NzggY2NlYTg3ODJiODQ3MjMxZTBjZTg0Y2MzYWI3ODRkNGMyYmI4MTFkNSBsZWdhY3ktdHJ1bmsKKzI0OTc5IDNjOGE5ZWYzYjk1NDM5NjJlYjdkYjBiODVjMjRlNDExNmEwZDk1NzEgbGVnYWN5LXRydW5rCisyNDk4MCA1ZDAwOWU1ZTEzZjc5OWVlZDg1NDQ4MGMwYmNkOWZkODY1ZTg1ZjExIGxlZ2FjeS10cnVuaworMjQ5ODEgNzI0NmZlNWU1YTI4MjdlMmQ0ZTk5MGI4YzZhOTBlMTg1YmUwNDczMCBsZWdhY3ktdHJ1bmsKKzI0OTgyIGQ1OTRhNThiNDQ2ZDVmM2NlNGJiZWNkZGYxOGVmMWQwMDFkOGU4ZGQgbGVnYWN5LXRydW5rCisyNDk4MyAxNDkxZjExMzdlMGVhNTcwZTU4YWI0OWMyMTg3MDRjNDE1YWYzN2Q5IGxlZ2FjeS10cnVuaworMjQ5ODQgYmU4Njk3YzcwZTdjMmU1NTQ0OWE1NjIxM2I5YmIxMDk5MmI1NDBiMiBsZWdhY3ktdHJ1bmsKKzI0OTg1IGEzM2JiNzMyNDY4MzlkYjhjZDkzYzQ3MTA2NGU3YmNiMzQ2MjIwNDcgbGVnYWN5LXRydW5rCisyNDk4NiA3NTgzMzlkYmRhZWE3ODJkNWZlMDE1ODgzMTE3MDA2Mjk0YzQ1MTA0IGxlZ2FjeS10cnVuaworMjQ5ODcgZGUxZWJjZWY3ZDMxMDdlNGIzMDgyMmY5MmRlYTUzNzczMTcwNWEwMiBsZWdhY3ktdHJ1bmsKKzI0OTg4IDA1MWYzYjY1ZGRhYjg0OTViY2YxYjA2NjY4MmNhMjRlYzQ4ZDU2MzkgbGVnYWN5LXRydW5rCisyNDk4OSA2ZDQyODhlODkxOGIyNjc0Yjg3Y2Y0MzhiMmQzNzE3NzBlMWI1N2I2IHJlbGVhc2UyMi1tYWludAorMjQ5OTAgZGNjY2I5Y2VhMDU5MzFhMjU0MjQ3MmNkNTQ5YzU2OGZjOWIyMDRiZCByZWxlYXNlMjItbWFpbnQKKzI0OTkxIGRmYzk3MDQwOWY3ZWQwMjM0MWY3ZTIyYjY3MGZmYzUyNmY3NjMzNmIgbGVnYWN5LXRydW5rCisyNDk5MiA2NmUwMDgwYzZkY2M5MDFiMGI4NGNjODgwM2I0YTdhODg3NDI0YThhIGxlZ2FjeS10cnVuaworMjQ5OTMgNTg2MTg4NTU3N2U5OTcwNTFhMjkyMzU1N2Q4MDFiMmU1ODQxNTQyYSBsZWdhY3ktdHJ1bmsKKzI0OTk0IDZmNmYwZTEwMzU2NmRjOWM5NTFmNmYzMjk5MDZmY2JiNjI0YzYwNmMgbGVnYWN5LXRydW5rCisyNDk5NSA2M2EyZmFjMjEwNGM5YTdhMmRjNTEwYjNmZTRhYjYyNWQxZGI1ZTMyIGxlZ2FjeS10cnVuaworMjQ5OTYgNmFlODVkODM4NDY2YTI1N2NmNTNjM2U2MWYwM2E3ZDk4YmMwYzYxNyBsZWdhY3ktdHJ1bmsKKzI0OTk3IDljN2RhMjcyYzliOTRlODgxNjI3YzdiOGE2MGZlYTFlZmQzYmY0YTkgcmVsZWFzZTIxLW1haW50CisyNDk5OCBjZDA3ZTg0MjM1ZTZkYjAzNTNlMWFjZmMwMzlmZDg2NzAxYmFmNzMyIHJlbGVhc2UyMi1tYWludAorMjQ5OTkgMmI3NDY1NDNhYjNkNzI4ZGU0NzY4M2UyYTQxOGY3ZDU1OWU2NTdjYSBsZWdhY3ktdHJ1bmsKKzI1MDAwIDYyMjE5ZWQyMTU5OWJjZTRkOTMwYmRiNTFkYmY4MmM5OGM3OTdjNWUgbGVnYWN5LXRydW5rCisyNTAwMSA4NTFlNGJmMzAzNThlZjhkMDNlMDQ2Y2QwOTNjMTdkMzM2ZWU0ZTFhIHJlbGVhc2UyMi1tYWludAorMjUwMDIgYjcyZGEwNzgwZTdhNTkyYTJlNWM0MDllYmZhZjJjMzVkZmE2MjhlMiBsZWdhY3ktdHJ1bmsKKzI1MDAzIDNhNGEzNGZkZmE4MWEwOTZiY2E4YjFkZDY4YWJhYTIxYTU5NmY3NDMgcmVsZWFzZTIyLW1haW50CisyNTAwNCAzNWUzZjI0MThiMmRhOWY2ZjI5OGM2YzQxNDEyNmZhZWI0ZDMyOGQ5IHJlbGVhc2UyMS1tYWludAorMjUwMDUgM2MwYmQyZjM3YTc4OGExZmYwNGJmOWQ0NTE3ZDkyYWU1YWE1NzZjMyBsZWdhY3ktdHJ1bmsKKzI1MDA2IGEzYTYyZTQ0MGYyYTY5MmQwZmY3NTM4MGIzMTA5NGE4ZDNlODQyMGQgcmVsZWFzZTIyLW1haW50CisyNTAwNyA3ZTJhM2EyYmFjMzNmYzk4OGZlNjE0NjZiY2YyMTIzZmI5ZWVkYzViIGxlZ2FjeS10cnVuaworMjUwMDggYTViZTA3NjVjNTcxMzYxMTlmNTRlNGFlMjU4ZGU4NDUzZWI4NGYxYyByZWxlYXNlMjItbWFpbnQKKzI1MDA5IDk5MTJhOTZjMWZiMzk0ZjBjMTE3NzBjZjcwZTZhYWVjNTM3NjJhNTUgbGVnYWN5LXRydW5rCisyNTAxMCAxOTU5MTdiN2E2MDI0MmZiNGQwNmVmMTMwNjViMGQ3N2MxNzZkNTU2IGxlZ2FjeS10cnVuaworMjUwMTEgZWIwNTE5YTQ2N2FiYTI0ZmQwNzNkOGRmYWE1NmMxZjI1Njg2NGZjZiByZWxlYXNlMjItbWFpbnQKKzI1MDEyIGVjNDhmOTZjOTI5NWRkZTA4MGVmMjdlZjQ5ZjU0YjFjYjM5NDBhZjQgbGVnYWN5LXRydW5rCisyNTAxMyBjM2M2ZGUxNDUzMDk5NmE2NmJhY2EyNzY4OTdiYzdhZmMyZmU3YzM0IHJlbGVhc2UyMi1tYWludAorMjUwMTQgNjg4MzRhNjk3NDZhODVmN2NiYmMwZDNlZjM4NWIxZjMyODIxMmIyNSBsZWdhY3ktdHJ1bmsKKzI1MDE1IDI5YjNkYzkwYmU5NWNiNDhhYTVlNWJiOGQ5NmM5NWI0NTEwYjZkYzAgbGVnYWN5LXRydW5rCisyNTAxNiA5YTI2ODI5ODI2ZTk3OTJiODE3NGYzN2IzZjE5ZDc5YzkxMDQxYWZhIGxlZ2FjeS10cnVuaworMjUwMTcgNmIwZTE2Y2I2NWQ1OTI5ZWRjOGRmNzc4MTI3ZjYyNGVlYTlkZmIzZCBsZWdhY3ktdHJ1bmsKKzI1MDE4IDM0ZWRkY2ExZmRhNzlhNTU0MGMyNzllNDdlMGNiNjBmN2E3YzFmZWQgbGVnYWN5LXRydW5rCisyNTAxOSA3YzU4MmQxYjljZjgxZTFhNGFiYjM2ZjFiYTQxNTA4MTZhODRhMjc3IGxlZ2FjeS10cnVuaworMjUwMjAgMjJkYWQ5ZmUwOWNhMTNkY2Y5OWFkMTFlMjk4ZjAzMTZjMjcwOWQxNSByZWxlYXNlMjEtbWFpbnQKKzI1MDIxIDM2MjkxNWIzODcyNDQ0Y2M5OTQwNzgzMDI1Nzk5NmM2YzhmZmY2OWIgbGVnYWN5LXRydW5rCisyNTAyMiA5ZGUzNTBhNjU0MmVkZjFhODcxOTM0NzRiM2U2NGIyZmNhYzM2NzI5IGxlZ2FjeS10cnVuaworMjUwMjMgYjU2ODQzYzE1MjQ5YjM5ODllZTQ1NmQzMTgzOGI5NDRlNmZjNDE5MSByZWxlYXNlMjItbWFpbnQKKzI1MDI0IGE5MTE5MzQxMjZmZDg2NmRjMTBmYzlhNTBmMWYxNTAyYjIzNjc3ZTQgcmVsZWFzZTIxLW1haW50CisyNTAyNSA3MjQ4YzM3NTEzZjM3NWRkMzAzMDU2YjhkOTUyNTE2NGNlZWRkNWM2IGxlZ2FjeS10cnVuaworMjUwMjYgODIzOTEyOWU3NWQwYTBhYTUyNWMyMjdmOTVmMGI1OWRhNmM0YWFmNiBsZWdhY3ktdHJ1bmsKKzI1MDI3IDcyYmI3MGU5NjQwZTQ4MDRiMTI2Y2JkNzUxZTRkNTk0OTBkZDVlNjYgbGVnYWN5LXRydW5rCisyNTAyOCAwZDNiYjY4ZTNhMjhhMzJlMTI2MDZhZWY0ZTNkYjUzYzZmOGRhZTg4IGxlZ2FjeS10cnVuaworMjUwMjkgNTQ0ZTI2MjA2MWEzNjJjY2QyMDU4MWNmMWU3MjE5MGIyMmU1NWFiNyBsZWdhY3ktdHJ1bmsKKzI1MDMwIDY0NmY4YzA4OGY1ZDg0N2ViODcwZGZhYzk4ZmU5OTRkN2Q5YzE5OWEgbGVnYWN5LXRydW5rCisyNTAzMSA4OTcwZTc0NjY4MTEzM2E4NDJhNWEwOTdhMDhjNGUyNGM1YjJiZTc4IGxlZ2FjeS10cnVuaworMjUwMzIgZmZhYmFjNTA5NzNkZmM2MTkzOTRkMGE4YzYzZWFlZTZiNWNhZDZhMyByZWxlYXNlMjEtbWFpbnQKKzI1MDMzIGExYzMyODMzN2M4ZTg0ODg2MjIwN2MwYjVhZmUzYzIyMWYwZjAxZjIgcmVsZWFzZTIxLW1haW50CisyNTAzNCA4OGM0NjNmODc5ZWYyNzU1YmIzMTRiNTJlNDAzNTNiOWM1NzBhNTAwIHJlbGVhc2UyMS1tYWludAorMjUwMzUgMDY4ZTg3M2YwOTMyYWFiYWIzNzg0NmRkMzgzZTRjMjY1ODAzMTI0YyByZWxlYXNlMjEtbWFpbnQKKzI1MDM2IDA4YTNhYTk1MTJlOTgyYjIwYWI4NDBjYzZkYjQ4YTAzMTVmNDU0ZTAgcmVsZWFzZTIxLW1haW50CisyNTAzNyAyOTk5NjhjMjc5Yjk4MGQ3MzEwNmQxYzkyMThmNTRjYjc5MDJhMDg0IHJlbGVhc2UyMS1tYWludAorMjUwMzggM2E1NTE1MDUwYjQzNmJjNTIzZjY5M2MxNzE1MTZjOGFkZGNmYzY3ZSByZWxlYXNlMjEtbWFpbnQKKzI1MDM5IGExZDZjZDk3ZTMxOTYzY2UyZWY2YWI5MzEyMGE3MDBlMjY4ZjgyYzQgcmVsZWFzZTIxLW1haW50CisyNTA0MCBlZGMzNTMyZmIyYjhmZDBmZmQ2MTA2MTllNDg2ZmRhYTBjMGE4M2E0IHJlbGVhc2UyMS1tYWludAorMjUwNDEgYzRmZTk1ZmVhM2U2ZmZhZmYwMmQyYzljNzlmMmI3YjFjODhiZWY0MyBsZWdhY3ktdHJ1bmsKKzI1MDQyIGQwNWViYmQ5NjVhMzcxMjVmNzQ3MTU4NDZmODY2ZWI5YjhmMDNjYzEgcmVsZWFzZTIyLW1haW50CisyNTA0MyAxMTZlMzIxOGE3Y2E2MDdhOGUyNzdjNzcxYWUwNGVhYmY4NDNlM2NlIHJlbGVhc2UyMS1tYWludAorMjUwNDQgOGIyNDUyOTdjMTY2ZTZjYzI1NmNjMmYwM2UzOGRjYTg4MjEwODZjMyByZWxlYXNlMjEtbWFpbnQKKzI1MDQ1IDU5MTVkNDViODA5ODQxNmY5OGUxZmI3MjQ5MDQzNTkyMWI5ZDE1MWUgcmVsZWFzZTIxLW1haW50CisyNTA0NiBhNDlhNjVhOTVlMzVjZDM2OWNjOGU2YTNkZmEyOTBmZTExZDI1M2JlIHJlbGVhc2UyMS1tYWludAorMjUwNDcgMWVkZjVlZDFhZjA4MWEwMjU1ZDBlODFmNWI5M2NhODgwMzkyMjYxYyByZWxlYXNlMjEtbWFpbnQKKzI1MDQ3IGY3NmE0MjViMTRlNGVlOGFkZTVlOTIzOTU5ODUzODUzNGIzYTkwYTQgcmVsZWFzZTIxLW1haW50CisyNTA0OSAzZTc4YmYwZTJiZThkMmRkZjE5MjZiZGRjM2MyMzg0NWZmYmJjZjExIGxlZ2FjeS10cnVuaworMjUwNTAgZGIyYzEyODEyNWY0NTY5YWI5YmRkYmYwYWJhOGFkOGYyYmI5YzU2ZiByZWxlYXNlMjEtbWFpbnQKKzI1MDUxIDEwZDFkN2Q2MzVkNDIyZWY3NGE0ZDYzYmU5NTkyNzIxNzVjM2UxYWIgcmVsZWFzZTIxLW1haW50CisyNTA1MiAyZjM2NDg2MDBlNjAxZmRkOTk1OWM3YTQ1MzliNjRmZWNhNjhhMDg1IHJlbGVhc2UyMS1tYWludAorMjUwNTMgN2ZlM2U2MWFiY2UzZWE4MmMyZDNiNDlhYWYyNmUxYWExODVmOGE5MCByZWxlYXNlMjEtbWFpbnQKKzI1MDU0IDVjNjJlZmJjZTRmYTA2MWRkZGM4ODYxOTNjMmU2NjY5NTc4MmIxMGUgcmVsZWFzZTIxLW1haW50CisyNTA1NSBkNzRkYzQwNjY0MTY4OTI0OTAyN2VjN2FhYzczYzIyMGUxNDhlMWM0IHJlbGVhc2UyMS1tYWludAorMjUwNTYgYWVkZDg1MTg3NDk2NDg3ZWI5MWM3NGIxYTE3MjRiMjU0MGQwNjJiOSByZWxlYXNlMjEtbWFpbnQKKzI1MDU3IGNlMzVlNTcwZmZhMjFlYmRiMDc0N2M2YzQ5ZmIxMzlkYTc2MTc0NzUgcmVsZWFzZTIxLW1haW50CisyNTA1OCBhMGIzNTJlNzY4NjJkZjBjODk5NWJkYjllNTc1ZTgwYTI3ZWQzMWY4IHJlbGVhc2UyMS1tYWludAorMjUwNTkgZWExNzU1ZDczZTkyMWFjOTBhNjAzZmMyZTJmNmM3ODA4M2JhMzU5OSByZWxlYXNlMjEtbWFpbnQKKzI1MDYwIDJlMjI4NDYxYTM5MWIxOGQ3OTY1YzU5M2M0YzljNmE4MmE0M2Y0MWMgcmVsZWFzZTIxLW1haW50CisyNTA2MSAzMmMxYzBhZmNmOThkYzRjN2Q3ODU2NDFiNmEwZjFjYzg3N2IxZGE1IHJlbGVhc2UyMS1tYWludAorMjUwNjIgM2I1NGM0NDUyNGViNjI0MzQzOTY2MzM5YTU3ZWYyNTdiYjdhZDY1OCByZWxlYXNlMjEtbWFpbnQKKzI1MDYzIDQ4ZWNkNjA2MWU4OGQwZGJlOTAyY2U2NzNjNzE0M2Q5MWI1MzQ1M2UgbGVnYWN5LXRydW5rCisyNTA2NCA0MDI3MzYxZTc5NTZhMjFlZmY5ZjA0YjEwODA4NDU0OGYxODY1NDM2IHJlbGVhc2UyMi1tYWludAorMjUwNjUgNzUzMWNjNTkyZTQ2M2ExZjg0MGVkZDU3NjQ4YTBlM2E2NzhlMjlkZiBsZWdhY3ktdHJ1bmsKKzI1MDY2IDRhNWEwMTBjOGY0NDQyOTk3OTZhZGU1ZGUwNWRiYTcyOTg0YjcyNjUgcmVsZWFzZTIxLW1haW50CisyNTA2NyBhYTgzZmU2ZTljNGY1ZGRjNGZlNDFiNzNhMTE4YWNlNDZhNTQ5MmQ0IGxlZ2FjeS10cnVuaworMjUwNjggM2I3MzMyNWIzMmU1OTQzZmI0MTdkNTY4NjYxZGE4NzdkNDFkYmY5YiBsZWdhY3ktdHJ1bmsKKzI1MDY5IGE2YTMxYzU1YTE2ZDA1MDA4OGQzN2M3NTU0YWJhYWM2OTMzOGNiOGYgbGVnYWN5LXRydW5rCisyNTA3MCA4NjY2MTVmMGFlMmE3MjU4ZDZiMDQ1MWZlZmQ0Y2I4MWE5N2RmZjRlIGxlZ2FjeS10cnVuaworMjUwNzEgM2JlNDBkM2FmZjk0NWY2YTkwMzhhMzZmNjNhZGNiYTM4MTZiZTNkNiBsZWdhY3ktdHJ1bmsKKzI1MDcyIDQzNzM5M2U3ODBjYmZmM2QzMmVhOTQ0MDI0MWM0MGE4ZWM0N2YwNzIgbGVnYWN5LXRydW5rCisyNTA3MyBjNjRmYzU2ZjYwNzI1Zjg5MjgyODFmY2QyNGZmYTBiOTljMGNjZjI4IGxlZ2FjeS10cnVuaworMjUwNzQgZTIyMzM5N2IyNmZhNWEyNjVmZGYzNDkyZmZhY2NlZjgwY2VhNDE1MiByZWxlYXNlMjItbWFpbnQKKzI1MDc1IDYzMDI5M2JlMTAzNTZlMWIwNjI3MzU2YTRlNzYyMzY5NzZjZDJmYWUgbGVnYWN5LXRydW5rCisyNTA3NiA0YzZjMTNhYThhOTk3NTI5ZjcwNjI4YzVmZjZiY2E3NTUwMWZkNjU0IGxlZ2FjeS10cnVuaworMjUwNzcgNGVhZTY2YmUxZDI5MWJhMjc0NTlhYjYxODc2ZDI4YWJjOWEzOTQ5NSBsZWdhY3ktdHJ1bmsKKzI1MDc4IDFkOTE4MjAxMjhhMWM5OWNhMDg0NDhlMTk2ODkyMDA2NmQwMzM3YTYgbGVnYWN5LXRydW5rCisyNTA3OSA4MWE4M2E2NTI0NmQzMDA2Yzk2N2E0YzUyNDdjZGRlNzhlMzhmNTM4IGxlZ2FjeS10cnVuaworMjUwODAgZWM2YjY3ZDI4MDNkMmZhMjJkYzFjMmU1ZjhiNzM0MDQzMDE3MmNmOSBsZWdhY3ktdHJ1bmsKKzI1MDgxIGU5OTE5ODIzNGQ5NmQyNGQ1NGI0OTMwY2Y5MDcxMWIzOGNjZGE0ZGMgbGVnYWN5LXRydW5rCisyNTA4MiAyNWU0NGEwMTI1ZTQ1N2M2YWY2NmQ3NDU0NmY1YjY2ZTQ3ZmU2NGE0IHJlbGVhc2UyMS1tYWludAorMjUwODMgOWUxNzNjYjM1YjZkZmRkNzNlZDM1YjBkMWRkNjM0MmU0YjkzZDk1MCByZWxlYXNlMjItbWFpbnQKKzI1MDg0IGViZTZiZDU3NmY2NWQ5YjhhZWUwOGMyODkxNDNlM2NkMjg4NjY1YWQgbGVnYWN5LXRydW5rCisyNTA4NSA4ODRlNTdiZjNhZGE0MTA3M2I2ZTZkNzkxOGFiOGFlMjMyMDg5M2UzIGxlZ2FjeS10cnVuaworMjUwODYgNWQyYmZiZDQ3ZjFiZTJhMDJhZmIwMjA1MjdkMmNhY2ExOWQ2YmEyOCBsZWdhY3ktdHJ1bmsKKzI1MDg3IDY3NzYxZDViNGFlNmEyZWYxNTcxZGY3ZDQ2OWE1MmQwZmU1NDJjMmMgcmVsZWFzZTIxLW1haW50CisyNTA4OCA1YTMyOWEyNTcxOTdmOTUyYzZkZGY2ZGE3YzQ2ZGNhODY1ZTNiMDYxIGxlZ2FjeS10cnVuaworMjUwODkgNTRlY2NjNWQyMmRkMjc0MWVmODlmODBlMDA1Njg1M2U5YThlNjIyNiByZWxlYXNlMjEtbWFpbnQKKzI1MDkwIGU2NTQ3NWI0ZjNjZjhiNThlNjk5NGE0YzBhOWFhYWY2NzllNzgyMzcgcmVsZWFzZTIxLW1haW50CisyNTA5MSAzZTI2ZjVkYWNiYmU2NjJmMTBiNTljZjhjYzYxZjQzZjI2YzYzYTliIHJlbGVhc2UyMS1tYWludAorMjUwOTIgZDk2MzE4NDM4MTE4NzI4OGRmODk3ODQxZjA2NmZmNjc1OWE2YWY1MyByZWxlYXNlMjEtbWFpbnQKKzI1MDkzIDMxYjI1MDE0MTc0YmQ2Yzg0ODI0M2NmYWRjZTk0NjY5NDVlMmQ3NzkgcmVsZWFzZTIxLW1haW50CisyNTA5NCBkY2NiZDdiYjViZDVjODUxNTMzM2VjZDk2OTc0ZjhmMDljZWU5Mjk3IGxlZ2FjeS10cnVuaworMjUwOTUgYzNhODY0OGJmMDk3YWI3MDEyOGI0ZmIxZmVhOTYzZGM3Zjc1YjA0NyByZWxlYXNlMjEtbWFpbnQKKzI1MDk1IGNmMzFiMTBlNDViNDg2MTUwOTRjYWU5MGUzYzViZDA3MjU4N2Q4ZTYgcmVsZWFzZTIxLW1haW50CisyNTA5NyBiYThkYjkwZWVmNGVjYWE4YTFmY2JlNDAzYTZlM2E0OGIwODQ1ZGRiIGxlZ2FjeS10cnVuaworMjUwOTggMzBhODE3MDM4YWYwZjRiZDZkYjY4OWRkMzBkNjY1MjM5ZDI4ODQxOSBsZWdhY3ktdHJ1bmsKKzI1MDk5IGNhMWI2N2Y1YTNlY2Q4ZjQ3YjYzYTQ3N2NjNWNlMDJlOWRlNGQ0NmUgbGVnYWN5LXRydW5rCisyNTEwMCAyYjU2YWY2OWY2N2RlZDlmNjg0ZmEzMzZkYjZkZjYzODNkYjhlODdhIGxlZ2FjeS10cnVuaworMjUxMDEgOGY0Y2M4MjFhZmFhNzI4M2E1ZThlODEzZmIyNTc1ZDk1M2Y0M2YyOCBsZWdhY3ktdHJ1bmsKKzI1MTAyIGVhOGM4NDAwYTRjOGQwMGU3NGU3NGFiNGUxODNlMWNmNjBkZjVhYjkgbGVnYWN5LXRydW5rCisyNTEwMyA5ZDVhZGZmODdmMzAwMjBhYTJiZDhjMzRiMzc1NDdhYzg1MGMzYTBhIGxlZ2FjeS10cnVuaworMjUxMDQgMzRmODVhMGE3ZmFhZGNiN2RjZmQ4ZGQ4ZWM2YWYyMGFiYzY5ZTBjNSBsZWdhY3ktdHJ1bmsKKzI1MTA1IDUzZmM2ZWM4YTgzNzYwNWIzMWZjODA5ODczN2U3M2ViMTA1MGM5MzcgbGVnYWN5LXRydW5rCisyNTEwNiAxYjdlYzM5NWQzOTI0ZjhmMjlmNTRkZTQ3YTM3MTAyY2ZiM2Q5MjliIGxlZ2FjeS10cnVuaworMjUxMDcgNDQyZWZmMjliNDlmN2IzMzYzOGY4MzA1YjFlOGU3OWUzNmIxY2U3OCByZWxlYXNlMjEtbWFpbnQKKzI1MTA3IGQ4MjNmYzEzNWU5MGU3YmI4NDU5MTVjZWM5MDI3N2ViZmNkMmM4ZDMgcmVsZWFzZTIyLW1haW50CisyNTEwOCA3NDI0NmEyZDk5NjIyM2VjMWVlMWRlYzlhNzQ2YTg3Yzk3MWU5MjUzIGxlZ2FjeS10cnVuaworMjUxMDkgNjYwNWYwNzZmOTVhMmQwNTZjMjNjMGM4ZWQxMWU4Nzc1MmFkYWQ3YyBsZWdhY3ktdHJ1bmsKKzI1MTEwIGM0ZjcyYjQ3MjJkYTYzNGQwYzUxN2UwNGRlNDM0YmIyZGU2YzNhOTIgbGVnYWN5LXRydW5rCisyNTExMSA5YzBhMGM4OTc3M2YxODJiMDA2NTk3ZWU5ZjQ4YWRjZmUxMGQ2ZWJhIHJlbGVhc2UyMi1tYWludAorMjUxMTIgOWQ3NzA4ZGRjZmI5OThlMjk0OTAyNTQyZWJjMDVlMzQzNmNmNjk3OCByZWxlYXNlMjEtbWFpbnQKKzI1MTEzIDE5ZDY2ODc1MWIxZWFmMDM0MzAwODA2NmM1ZTNjYjgzOTU5ZTRmNDQgcmVsZWFzZTIxLW1haW50CisyNTExNCBjZmJkZTg1MTllNTAwZTEyMzBhM2U2NzRiM2QwM2VhZTMxOTMyZTUxIHJlbGVhc2UyMi1tYWludAorMjUxMTUgMGVmZjk2MWExNWI1Mzg4ZWViNTMxZTQ3YjlkMzkzZGRmZTJhOTg2YSBsZWdhY3ktdHJ1bmsKKzI1MTE2IGQ2MDM1MGQ3MWI2MDU4MjhlNWI2MDQ0ZmY3MThiMWFjOTk3M2FhODMgbGVnYWN5LXRydW5rCisyNTExNyA0MDYzMWFlNzRiMTdiYmEyMDUxYzg3NGI5NTkyZGVlN2Y1YzQzMzBiIGxlZ2FjeS10cnVuaworMjUxMTggY2I0MGFjYTQxODg5Y2U3NzM4NWY2ZjQ2OGViOTM5ZWYwZDIxZmFhZiBsZWdhY3ktdHJ1bmsKKzI1MTE5IDcyMzNiODZiZTY1NmUzOWY5NGVhOTJmNjBiMDNhMTQyN2IxYjU5ZjkgbGVnYWN5LXRydW5rCisyNTEyMCBkYmI3MDNlYjZiM2Q5YjRlMGEzZWZjOGQxN2RhOTYyMWIyZTBmYjQxIGxlZ2FjeS10cnVuaworMjUxMjEgMWEyNmRjZGZiNmNjOWRlZTNkOGQzMDk1NzU5ZWMyYmU5MDQzOWEzMyBsZWdhY3ktdHJ1bmsKKzI1MTIyIGExYjA2NTgyOTNhNzA5OTEzYjgxMzk0ZDk2NTIyNWNiYmU5MzIwNWEgbGVnYWN5LXRydW5rCisyNTEyMyA2NTJkYzUxYjVmODMyMTg3Y2JhZDA3MzRmZjg0MGFlMTY1MWM4MmNiIGxlZ2FjeS10cnVuaworMjUxMjQgMDExMGEwOTgzZTYxOTMwY2MxMDVkMWM0NjE3ODRkZjZmN2I0ODUxMSBsZWdhY3ktdHJ1bmsKKzI1MTI1IDM2ODU2MTVkMjFiMzI3ZjU4MTFlNjhkMTIzZjAyOTdlYzE0YTM2NjQgbGVnYWN5LXRydW5rCisyNTEyNiA4YjExNmE4NDQ5YmQ1ZWVkZmM4MmNmZTc2M2QyYTJkMzI3YzcyMjljIGxlZ2FjeS10cnVuaworMjUxMjcgOGEyY2QxYzBjMTM1NGVjOGZhZDZiMzhmMjMzNWMwMGI4OGZhMDQ2ZiBsZWdhY3ktdHJ1bmsKKzI1MTI4IGUyMjdjOGQwM2Q2ZDhjMjRkNDU0YzUzYTcxNjMxZGE0ZmNkMDk3MjcgbGVnYWN5LXRydW5rCisyNTEyOSBlNmQ1YzRjNzQ1YmMwMTNjNGZjNjMxMDg4YzUzZmIzMTc0NDVhN2I5IHJlbGVhc2UyMi1tYWludAorMjUxMzAgNTc4N2ZjNDhjMmI1NWE1MDcxOGFhNDA2ZGY0YTM5MWI2MThlMDdmMiByZWxlYXNlMjEtbWFpbnQKKzI1MTMxIDhlNjdkOTAzNWI2OTlhYmJhMjExODEyYzU1M2I2NWUyZDlkYTE5NWIgbGVnYWN5LXRydW5rCisyNTEzMiBlYzc1MGUzNzY3MWJlM2ViNTI1ZWQ4OGVkMTdlOWQ0YTlkNTgyMDFlIGxlZ2FjeS10cnVuaworMjUxMzMgZDVhMzhhMzJmNzhiNTBjYzg1ODhlY2MyNDQ1YTQyMzY3YzRlNTVmYSBsZWdhY3ktdHJ1bmsKKzI1MTM0IDFlZDI2OGVhMmQyNjMwMzkzMzY1MWM2ZjFjMTAyMWU1ZTY5OGMxNGUgbGVnYWN5LXRydW5rCisyNTEzNSAxNmNjNTM4NDAxYjNmMDgyZGRkOGZkNTY3ZTdkNWEyM2QxZjlkYjFiIGxlZ2FjeS10cnVuaworMjUxMzYgOWJlYzE4M2ZlZmZmNjFjZWQzY2NhZDFjMDVkNmQzZjE2MGIzOTllZSBsZWdhY3ktdHJ1bmsKKzI1MTM3IDYzM2U2NDU2NGVkZmExYWJjNWNhMmE2NTY4NjA4ZmViMTc5YjlmMGEgbGVnYWN5LXRydW5rCisyNTEzOCBmODg3MzYyNWQ4ZjYwNGI2ZmJmNTgzZDFlMzMzMzljZjBlMTljNWIzIGxlZ2FjeS10cnVuaworMjUxMzkgNmY5NThmNDk5YjQyOTU3MDUzNjRlNWNlZmJmNWMxNGYwZWRjYTIwMCBsZWdhY3ktdHJ1bmsKKzI1MTQwIDBmZTg3NTg2NmQ0ZWY1Njg2MjU1MzgxZDZiYmE1ODY0M2E1OGZjODIgbGVnYWN5LXRydW5rCisyNTE0MSBkYTE3YTEwZTJmMjMxYzkyMDc2NTk0MmViNWIyN2ExMDYxYTRjYjI1IGxlZ2FjeS10cnVuaworMjUxNDIgM2UwZGI5ODRiZDNlMzA0Yzc3YWUxOWIzYTJjZGY4ZmVjODdiZWQ0MiBsZWdhY3ktdHJ1bmsKKzI1MTQzIDJjNjYxN2YyNzBlMmM5MmRiYmNmMDFmMGQyMWM3ZGI2NDIyY2VmNmIgbGVnYWN5LXRydW5rCisyNTE0NCA1YTVkOTRjNDk5NzUwZTNkM2NhOGM1OTQzNjhmNWRlYjQ2YjE2ZjFhIGxlZ2FjeS10cnVuaworMjUxNDUgNmM1YzExMmQ0NTMzOWJkNzcyODUzYmY4OTk5OWNkMWQ4OWZhNjEyNiBsZWdhY3ktdHJ1bmsKKzI1MTQ2IDEzODNlNmY3YjExZjk5ZDc0MzY5ZWVjYjkwM2IyOTNiNTAyYmY2YzAgbGVnYWN5LXRydW5rCisyNTE0NyAzZWY3YmVkMDA3ZjZlZDM3YzI5Njk5ZjY0Y2VjMDNkODY3N2RhNDAwIGxlZ2FjeS10cnVuaworMjUxNDggMDVmYWJkOGY0ZTdmOGQ2NWYzZDFiMGFhNTMxNWFmOTQyYTRlMjA2MiBsZWdhY3ktdHJ1bmsKKzI1MTQ5IDE5ZTBhOTJlMzI3NzdlZDZmYTVkYzI3Y2ZiZjllODg3MWE3NWVkZmIgbGVnYWN5LXRydW5rCisyNTE1MCA2YThjNDZkODIxMmJjNjdiMjkyZTY5ODJlNzU0MTQ2NzExZjI5YWIxIGxlZ2FjeS10cnVuaworMjUxNTEgOTU3NjBhYjExODc1NWY1NzFmYjFkYzllNDIzYjk3OGM4YWFkNDU5NyByZWxlYXNlMjItbWFpbnQKKzI1MTUyIGE2OGJhNzU1ZDcwMGU1ZTMxYWNmZWY0MThmZjIzZmU1M2MyOGRlMmIgbGVnYWN5LXRydW5rCisyNTE1MyBjZTEwYTdmOTY3ZTVhN2JkYjYyNGVjNzNkNjQwOGE1ZDEzNTU5YjRkIGxlZ2FjeS10cnVuaworMjUxNTQgNDgzZjVmMjcyZGVmYzZmNDdlNDk5YzNmNjliNzY2YmMxZTE3NDYwMyBsZWdhY3ktdHJ1bmsKKzI1MTU1IGM4ODg2MjBlODA2MmM3YzdkMGY1MDhiMDIxOGIzMzlhMzdjYTcwYmEgbGVnYWN5LXRydW5rCisyNTE1NiAyNmE1NGQzZjU1ZTQ3ZmYzNTQ3MzRmYTA2NWM1OWMzZWZjYTdjNTcwIGxlZ2FjeS10cnVuaworMjUxNTcgZTdkOGE5ZGEzYjE4MDQwYjdmMzEyZGIzNmQ4OGZkNGRmMjNhMzgzNSBsZWdhY3ktdHJ1bmsKKzI1MTU4IDAzYTJiYTc0MTc5YjlmMTVmMGRhYzczYmI3NGEwYjFhNTJhMDgyMWMgbGVnYWN5LXRydW5rCisyNTE1OSBhZGNjMTQxNDI0MzJlODE0ZTIwNzU1YWM4ZDNhZWYwNTRjM2RkMmM1IGxlZ2FjeS10cnVuaworMjUxNjAgMjQwOThmNGY2ODJlZDE2ZmVmMTZkZmEyMjk1MmJmZTc1ZDdmYWEwYiBsZWdhY3ktdHJ1bmsKKzI1MTYxIGZhMzA1MWUwZmQ5MzIxMjA5ZjdlYTQ2N2M1NzQ5ODA4MjhjYWIxNDggbGVnYWN5LXRydW5rCisyNTE2MiAyYzhiMDNlZDM5MDYzYTRlMzBmZTA1NTRmZTc2ODQzYWE0NTdmNjhhIHJlbGVhc2UyMi1tYWludAorMjUxNjMgZTBkYmQxNzU0YWE5MDhjMTdjMTVmOGUzNzViOGI2YWExMmM5YzA2NyByZWxlYXNlMjItbWFpbnQKKzI1MTY0IGFhZTk3N2NhNThhM2E3YjFlMTNlMTQwMjM3NmI4YmI3ZTI0MzAzYjEgcmVsZWFzZTIxLW1haW50CisyNTE2NSAzNDViOTJlZDJhM2ZiN2FhMmZjOWE1NDFkNGRjOTQ1NmZiNTgzNWUzIHJlbGVhc2UyMS1tYWludAorMjUxNjYgOTI2MGY2OTQzMmE5M2M5YTdkNGFmZDIyZTRiMTk1YzMyNGM2MTM0OCBsZWdhY3ktdHJ1bmsKKzI1MTY3IDU5ZDA5YmExZjc4MmM4ZjhlYWYzYWUxN2I2MDQ1ZmZiODcxNTYxYTEgbGVnYWN5LXRydW5rCisyNTE2OCA2M2NiYTQyM2ZhMDQwYmYxMDVmMmM4OGM4YjE4ZTUzMDcyZDE5ZGM1IGxlZ2FjeS10cnVuaworMjUxNjkgNzQ0MTUzM2FjYTNiYjliZjYwNTNmZThiZjkxZDkzNmM1MTc4OTQyYiBsZWdhY3ktdHJ1bmsKKzI1MTcwIDdhMTFiZmM2NjIxNDMxNzEzN2YzNTYxOGVlMGQ2NDU1OWYxY2MzZmYgbGVnYWN5LXRydW5rCisyNTE3MSA0NDQ1OTFhZmZkMGUwM2NjMzA2YzZjNjYzNDljNjdmNGZjNWJkMzg4IGxlZ2FjeS10cnVuaworMjUxNzIgZmZjNDExNmVjMTE5ZjhhYmNkOWJmOWVmYjZiNzBjMDNhZDQxNzg1ZiBsZWdhY3ktdHJ1bmsKKzI1MTczIGYzYjBlM2NiMzQwYjMwMjE4OTEwOTMzYzliOWNhMTgwNjJhYzhiOTEgbGVnYWN5LXRydW5rCisyNTE3NCAwNWU2MzExMWMzMTA2ZTBkOWJhM2I5ODU4OGYzNjMzNjE1NDE3NDI4IGxlZ2FjeS10cnVuaworMjUxNzUgOTA1MjEzZTI4Njc3NTcxM2NmZjNlNmJhYTVjZWQ4MzEyNWZiMjgwMyBsZWdhY3ktdHJ1bmsKKzI1MTc2IDk2OWNlMDE3YmQzYTE3NWI1NTA1NDU2MjE5OTVlYmFiMzZhNDQzNzMgbGVnYWN5LXRydW5rCisyNTE3NyAzYTcwNzUyMGRlMzA5M2U3ZjgxYTlmODAwMGNkM2JjMWMwMDRjNTdjIGxlZ2FjeS10cnVuaworMjUxNzggOTBjMWYzZjM3ZGFlNDZhODVmZTcyZjZiMTBiZmY2MTcxZGY2YjgyOSByZWxlYXNlMjItbWFpbnQKKzI1MTc5IGIxMmRjZDI3NmRiMGZkMjNlOWVlOWEwNzk4MTNhMGIyMWRlMjRmYjMgcmVsZWFzZTIyLW1haW50CisyNTE4MCBhNGU0NzM2Nzk5YjE4ZjM2OWY3ZmNiMjNlYmUwOWU1NGYxMmMzZmVkIHJlbGVhc2UyMi1tYWludAorMjUxODEgMWQ4NmNkYjE3MjkxNjA5ZWQwZWRjMzExMGY1MzIzMjVjNGZkN2Q5MCByZWxlYXNlMjItbWFpbnQKKzI1MTgyIDE0ZGE3ZGQzN2M5NGU2YTY0OGIyODM3OTFiZWY2ZWZmMjQ5MTM0NWEgcmVsZWFzZTIyLW1haW50CisyNTE4MyBkZmYyMjhhZDE3Yjk4MzUyNWEzNzY1OGRmY2U4MTI5ZWNhZTFiNDIxIHJlbGVhc2UyMi1tYWludAorMjUxODQgNmY0NTVkNDkxODcxNWYzNzE5ZWY3ZDgzZDYyMTljMDExNWI3OWQxNSByZWxlYXNlMjItbWFpbnQKKzI1MTg1IDA2ZjhhODIxYjY4M2NkMTM1NTVjOGU1OGJjMWY4MGE5ZmRjMzM3MzIgcmVsZWFzZTIyLW1haW50CisyNTE4NiA3ZTc5NjRjNjgyYjU2MjM4ZmNiZDMzMzg5NzdkNjI1MmVkMTYxZGE3IHJlbGVhc2UyMi1tYWludAorMjUxODcgN2JhMmE4YzE2MmZhMjY3YTc3M2ExNTFiMzEyMDU1YzkwNTM0ZjgwNCByZWxlYXNlMjItbWFpbnQKKzI1MTg4IDliNDE0ZGY0OGUxNDdlOTU3NDQ0MjFjNjE4NjU2YzVlY2Y4Yzc3M2UgcmVsZWFzZTIyLW1haW50CisyNTE4OSA3MzFiZWI2N2ZlYzkwMTdhOTI2YjI2ZjlhNmYyYjU5MDQzNzQ4ZTBmIHJlbGVhc2UyMi1tYWludAorMjUxOTAgNWNhZWEyYjEzMmNhMTg1ZTA3ZTBiZmY1MGQ5M2E3MzZhZjkxOTYyNSByZWxlYXNlMjItbWFpbnQKKzI1MTkxIDRmNTRlOWEyOTc2ZTZjMjIxY2Q2MDZiZmE5NmM3MDEwYThmYzNmOTUgcmVsZWFzZTIyLW1haW50CisyNTE5MiBhYTcxM2M0YzQ5OGRlZGYzZGIyMGZhNTcxN2QwMjdkYWE1OWY5NzY0IGxlZ2FjeS10cnVuaworMjUxOTMgMDcwZDM5MjA0MmUzZWVmNjcwMmM1MTg3OGJjZWYzMzcyZWRiOGEyNSBsZWdhY3ktdHJ1bmsKKzI1MTk0IGMxZDU1YTYyNzg5Nzc0MDM3N2NmMWU3ZjBjMDllYTE0Y2NkZDdiMzcgbGVnYWN5LXRydW5rCisyNTE5NSBmMzc5YmMwYzVlM2ZjOTcyNDczYzYzZTI5YjFlNWMxZDQ5NjhjNDRlIGxlZ2FjeS10cnVuaworMjUxOTYgNmExZTc0YWRmOGQ2Y2VjNGQyYzExMjY2Nzk2NjU4MTk4N2E5MDA4YyBsZWdhY3ktdHJ1bmsKKzI1MTk3IDExY2MwNTk4NTc0ZDgxODQ1ZjE4YzJkYmZjZWEwMzIzZmZmZjUzYWIgbGVnYWN5LXRydW5rCisyNTE5OCBmYzEwZTcwMjE4ZDNiZTNjMjVmY2EzMzg5ZTM3NDRjNWFkOTFmNjMwIHJlbGVhc2UyMi1tYWludAorMjUxOTkgNWU2N2FkNzZjNzJmZGFkYmM4YTcxNDgwOTk5NDRhZjdiYzc2NjU3ZiBsZWdhY3ktdHJ1bmsKKzI1MjAwIGZkNDE4NGRhMDk4MzBmNmRjYjBiNTFmNmExNDMyNjIxZWViMTYxOWUgbGVnYWN5LXRydW5rCisyNTIwMSA0YjNiMDZkZTAyYTMxMTViYzA0MDhlNWFmNTVjMzY3NjQ4ZWQzMTk1IGxlZ2FjeS10cnVuaworMjUyMDIgZmUyYjY0ZmM1N2EwYTBlNDBmY2FlODYwZTRhMmI4YzAzN2RiNDU2NSBsZWdhY3ktdHJ1bmsKKzI1MjAzIDQzZDljMmY5YTJmNmJjMDIxNzM1ZDkwNjIzYmJhZThlNzQ2Mzg2NWMgbGVnYWN5LXRydW5rCisyNTIwNCA0OGI1OWZhNmY2NDcyMmQ1ZWNmYzc1OGExYzRmYzUxNDExZjI2ODgzIGxlZ2FjeS10cnVuaworMjUyMDUgYTkzYTdiY2JjMzg2ZmQ2ODc4YWRhNDBiYjI2ZDlhNWQ1NjcwY2VjOCBsZWdhY3ktdHJ1bmsKKzI1MjA2IDI2Yjc1OGMwMGZiNjA2NDUzMTExNmMxMTJjYjgxZGVmNDg3Y2Y5NTIgbGVnYWN5LXRydW5rCisyNTIwNyA0NTczMWYxMzYwZWVjZTI2NWI5MmZmMzU5Njg1ZDVmYzhlZDE0MzAxIGxlZ2FjeS10cnVuaworMjUyMDggZmQ0MjRmNTE5YThlYmU4M2U4NjAzODNlMTQ5NWZkNTc1MDU1ZTRhMSByZWxlYXNlMjItbWFpbnQKKzI1MjA5IGZhYWFlYjUzNWQzOTJlN2UwZGJhZmJlMzZkNDZhNWM4Njg3NmIyMTAgcmVsZWFzZTIxLW1haW50CisyNTIxMCAwZDA4Y2I4NDk1MTE4MDhhMzlkZWJmZGVkZTc3ZjhkMzY0ZmI2NGIwIGxlZ2FjeS10cnVuaworMjUyMTEgZTBmYzI4NmQ1N2E0NmNkNmE3ODdhYTViOTFlMTlmZmIyYTY0YWVmNiBsZWdhY3ktdHJ1bmsKKzI1MjEyIDllMzg0ZjEwMzA0NzIxMDg3ZWY3NWIxZDFmOTU2ODMyYjY5MjVhOWYgbGVnYWN5LXRydW5rCisyNTIxMyA2NTgzYzk1Y2Y2OTIyNDJkYjEzOWZjZDBkYWJkOWIwOGI4NTkwZDNiIGxlZ2FjeS10cnVuaworMjUyMTQgYzQzM2RlMTdjMTU4M2FhYTc4MjhlYzhkNmEwNThjOTY4NDc2MWI3NiBsZWdhY3ktdHJ1bmsKKzI1MjE1IDFmMmU5Mjg1MDE4ODczODg4OWFjM2IwZDkwNWVmYTAyNmMyZTgzNWYgbGVnYWN5LXRydW5rCisyNTIxNiAyZjYxNjQ3NGVhZWM3ZGY1YWIxOGM1NzMzNjI5Y2MyZDA4OWY2Y2NkIGxlZ2FjeS10cnVuaworMjUyMTcgOWNmZjg5MGI0ZmIwNzZhODM1MWYzZGNhZjBjZTY3MDY4NGQ2ZTMzMCBsZWdhY3ktdHJ1bmsKKzI1MjE4IGQ1MjFjZjA4OTljODAzYjUyYjBkYWVkNDliN2U5ZDg1ODdiNzIxNTUgbGVnYWN5LXRydW5rCisyNTIxOSA3NjYwN2EwYzY5NTYwOGY1NzYzMDQ0MzM4NmM0Njg0MWQzNGVhMWE1IGxlZ2FjeS10cnVuaworMjUyMjAgMjBiYzRmZjEyMTVjMGZlNzBjODc0MDE0MGJjZmI0NzQyOTRkZDA2NyBsZWdhY3ktdHJ1bmsKKzI1MjIxIGY1YWFiOGViODEyNDE1N2IyZGZjOThhNTJhYWNhYjZkMDIxNDBiY2UgbGVnYWN5LXRydW5rCisyNTIyMiA1M2FjODI4NDIxN2FmZDFmYTczM2NmMjI5NWUzMzUxNzExODExMzI3IGxlZ2FjeS10cnVuaworMjUyMjMgY2JmNDE5MjVkZDNlOTMxNzFiMGRkOTE2MWEzZmY2MGRiYWI4NmY3YyBsZWdhY3ktdHJ1bmsKKzI1MjI0IGY3MDhhOTA3ZGM2OTFhN2FjYjM4NzQ0MTY0MGQzNGE2YWMzNmFmMTQgbGVnYWN5LXRydW5rCisyNTIyNSA1M2ZlY2M4ZGQ0YzkwNWNjYzc3NWFlMzRiZGFjNTgzNzI0NzA5ZWU0IGxlZ2FjeS10cnVuaworMjUyMjYgNmY2MmQ1MWM5YzEyODE5YWQzMzg4ODY4OWIzOWJhMGM5M2ZkZjkyNCBsZWdhY3ktdHJ1bmsKKzI1MjI3IGRhMDA4YjVjNTAzNWVjMDVkYjUyODkxMTNhNDMyNWRjN2VjYmM4ZWQgbGVnYWN5LXRydW5rCisyNTIyOCAzY2QwYjRiYjVlMzRkMjQ5YWFjMzgxNzkzNTczMTljNGMxOWQ3OWFhIGxlZ2FjeS10cnVuaworMjUyMjkgYjVkMDAyZTkwODI3ZTA2ZmU3ZGIxYmI1MDkzMjAwOTE2ODg4YjYxYyBsZWdhY3ktdHJ1bmsKKzI1MjMwIDA0MmRiMDM4MmNkM2I4MzJmNWVjZWFjZWRlNmMzNjMzMTU4NmRkOWIgbGVnYWN5LXRydW5rCisyNTIzMSA1MDQzYjczOGIwNzIwYzNmMGUwNGMyNzUyNjgwZTdmMjQ0OWViYzcyIGxlZ2FjeS10cnVuaworMjUyMzIgZWQ4NjFlMGQ0YTcxZDQ4NjZjZTYxNTAzMDhhNDFiNzM0MGZjNzY4ZCBsZWdhY3ktdHJ1bmsKKzI1MjMzIDg0NGZlNzI1YjFjZDQzMTI4ZmY1ZmZmZmViYjJmNTQ2OWYzNjU2OGYgcmVsZWFzZTIyLW1haW50CisyNTIzNCA0ZDcyMTM1N2JkZGI1YThhZjU2OTllNmNkOTQyZWU2ZjM1NjFhYTU2IHJlbGVhc2UyMS1tYWludAorMjUyMzUgN2ZhZjBmZGRmN2U2OGFhZmM5ZDJjNjI3NjI1M2E3ZTUyNmYyYTUxNyBsZWdhY3ktdHJ1bmsKKzI1MjM2IDc4ZTM2ZjA1MjNhOGM4NThhM2JkNzMxNzA4MWQ1NmZkMmE5Zjg1NTkgbGVnYWN5LXRydW5rCisyNTIzNyBlNDg4NDY3MTdjMjZmM2MzNjhiYzc5N2E2MWI1M2Q0N2Q2YmRjZWRjIGxlZ2FjeS10cnVuaworMjUyMzggNDlkOTM2ODk0MDJiNTRlMDEwNGJjMzBmNjQ0MmQ3MzdjZTJkZjgzYiBsZWdhY3ktdHJ1bmsKKzI1MjM5IDhkYWZlNGE3OGNhYzQ2NTE1YTYzZjU0MDM0MzcwNDY0OGZhZDMxNzIgcmVsZWFzZTIyLW1haW50CisyNTI0MCAzNWY4NDg5M2FjZjc2OWM4ZDJmMDBhMDkxMDlhYTViMWJjNDFiMDk3IHJlbGVhc2UyMi1tYWludAorMjUyNDEgMWM3NjkyMTdjMTA1OWYzZmUzMzU3ZTBjZTg5NTY1NDM2NzUzNjBmMSByZWxlYXNlMjItbWFpbnQKKzI1MjQyIDk0YmFjODhmMTUwZjAwMTAyZjU0MDI2YmE0ZjIxYWE5NDY4NjNiNDQgbGVnYWN5LXRydW5rCisyNTI0MyAwYTgxM2EzZGRiOTJkZDljYWY5YTViMWMyYjIzZThiMmVhNThiNjU3IGxlZ2FjeS10cnVuaworMjUyNDQgMDRjZjRlMTNlNWM5ZmIzNGVkNzQxMzBkNWQxOWFiZjkyYzE1ZTYwZSBsZWdhY3ktdHJ1bmsKKzI1MjQ1IGM4Mjg2Y2M3MDJjOTkyNGYxZTJiMjEzY2ZlZWFlMjIwMmZkZDA0MDIgbGVnYWN5LXRydW5rCisyNTI0NiBhYmVkYjI0MThmNjIzMWFkZjI0MjA1MDkyYTU5OTk2ZjFmMWU0YzAyIGxlZ2FjeS10cnVuaworMjUyNDcgZTEwODY5NzI2Y2Q0MWI3MmE4YjFmOTFkYzBhZjNiMzNmNGZjNzQ1NSBsZWdhY3ktdHJ1bmsKKzI1MjQ4IDgzNmMxZGJmMjNhMGVhOTgxY2RmNjNiM2Y3MWQzNTQyNjRiY2JmMWUgbGVnYWN5LXRydW5rCisyNTI0OSAxOTgzNGNkMTAxZDkxYjVmMzI2ZTQ1MWQ5MTQyZTkxMTRhYWVmZDA3IGxlZ2FjeS10cnVuaworMjUyNTAgNjRlNWEzOWYxZmYwOTYxNTgyZjYxYTM5NTYyN2E1YmI1ZDQyNWY0ZSBsZWdhY3ktdHJ1bmsKKzI1MjUxIDE3YTU2ZTFjNmZmOGUyN2QyZDNkZDk2NTNlNGIxZDA2YzFmODkyNWEgbGVnYWN5LXRydW5rCisyNTI1MiA4ZWQ3YzYxYjVmMWJhMzViMTVhMWE0YjUxOTMxMTI2NjIxYmNiZTU0IHJlbGVhc2UyMi1tYWludAorMjUyNTMgODYxM2RmMTdmMTliYmQzOGU1OTE0MThjODRkZDFmMjNhYzExODAwNyByZWxlYXNlMjItbWFpbnQKKzI1MjU0IGYyNDU5NTViM2ZiZTdmNGEyYzFhYWFiMjI1MGE1ZGI2ZmI1NzhkMWIgbGVnYWN5LXRydW5rCisyNTI1NSAyMWY1OWQ5ZWQxNjlmNGRiMDc2M2I4M2NlMDA0N2MwZGQ4MWVhNTAzIGxlZ2FjeS10cnVuaworMjUyNTYgOTM3MzQ4ZWYxOGI4NTYwNDIzYTg5ZTY5MjU4MTQwYjQ2OWEyMTczZiBsZWdhY3ktdHJ1bmsKKzI1MjU3IDk4ZTkyYTY0ZTczYzJmZjc1MWViYWIyNTVjMWY4ZDE0NTFjM2U2ZTEgcmVsZWFzZTIyLW1haW50CisyNTI1OCA4NmZjZDk0MzhjYmViZDcxODM3OGU1NGU2NGIyMmI5ZWMyMjVlYTlhIHJlbGVhc2UyMi1tYWludAorMjUyNTkgNGI1YzI4YTYyZDE2ZTRhNGY3OGMzYjRkM2ExMjdmMGJhMzcxMTg1NCByZWxlYXNlMjEtbWFpbnQKKzI1MjYwIDU3ZWFhNWQ2OWFjMzVmNTBkODBhN2RjMGQwZmM0ODMwZjFmYjllNWIgbGVnYWN5LXRydW5rCisyNTI2MSA0YzFjY2YzNjAyNWNkOTdhYWRkMGVhMTMxNjdmYWZjZDQwMWM5MDA0IGxlZ2FjeS10cnVuaworMjUyNjIgMWY2YmM0OThlNmU1NmUyZmM1NWU1ZWYzZDA0NDBiZmEyN2E3ZDgzZSBsZWdhY3ktdHJ1bmsKKzI1MjYzIGMwNTE4YWQ3MmI5MmUwYWE5Y2FkYTUxMDY3MDU2YjdmNzBlZTAwMTAgbGVnYWN5LXRydW5rCisyNTI2NCBmMDA3ODFkNjY0YTlhNGI0MzFlYmIwN2U0M2ZhMTY4ZDZkNzQ3NWI4IGxlZ2FjeS10cnVuaworMjUyNjUgZGNjMDc3OGViN2QzYjQxYzE3ODJhY2JkMzY3ZDEwMTIzNjU1MTVlYiBsZWdhY3ktdHJ1bmsKKzI1MjY2IGY4ODFlMDYxOGRmMGFmNjY1MGQxMWQ2NzY1YTRmMzE0ZWE3N2M0NTkgbGVnYWN5LXRydW5rCisyNTI2NyA3ZjY1MjNiMzIxNzkyNjIzYTYxYzI2ZjBiMzI1Mjc2ZDQyZTE5ZjExIGxlZ2FjeS10cnVuaworMjUyNjggMTZmYWY2ODc1MDA0NTJmOWQyYjMzMTE4M2M0ZWE2YWViZTE2Y2JkNSBsZWdhY3ktdHJ1bmsKKzI1MjY5IDdjMzBjYjE3YzJmNjU2ZDdhMDUzNmViOWVjYzMyN2VmMjA4ZGNmMmMgbGVnYWN5LXRydW5rCisyNTI3MCAxNmMyYWUzNjlkNzE1ZTJlOWY2N2YwNmYyMTUyOGYzZTljYmUzMjAwIGxlZ2FjeS10cnVuaworMjUyNzEgNzk0ZmUzN2NhNWY0ZThiNTk5NjNiMThkNzdhNmFmM2JmOGM2MzYwMyBsZWdhY3ktdHJ1bmsKKzI1MjcyIDE1MTdiNDU0N2I4NzY2Y2EzODc1MDUzZjU5MGQ4MTk1OTYyMWI0MDMgbGVnYWN5LXRydW5rCisyNTI3MyA5ZDJhZTg1MzE5NDQwNDU4ODA2ZTRmZDlhYTEwMzhhNDg5MThmMjhhIGxlZ2FjeS10cnVuaworMjUyNzQgMGM2OTk5MmNjZTA5OTQ2ZDM4OTc1ZjIzNDEzZDYwMWY0NzcwYThmMSBsZWdhY3ktdHJ1bmsKKzI1Mjc1IGUxNjM3MTNiNDdjZjIxYjEzY2Q5Yjg1OTFhNmRjMTVhZjY4MmVmMmMgbGVnYWN5LXRydW5rCisyNTI3NiAxNWMwZTdhZWY2NjZkMTg4M2MyZDdlNWY3MmM5YjhhNDBkZmRjY2U5IGxlZ2FjeS10cnVuaworMjUyNzcgYjk4MTVmNGQ4YmUzNTg1NDk1NmZmMmY3N2E4ZTY2MmNjODE5YTNkMiBsZWdhY3ktdHJ1bmsKKzI1Mjc4IDA3NmU5ZGM3N2FhZGIzODU3MDIzNjU1ZjVlZjUxMGQ4ODk4OWI3YzcgbGVnYWN5LXRydW5rCisyNTI3OSBjMzc2Mzk3NjExMmQ1YWZmYmI5ZTQ1NTlmOTAxMDIxODVkOTUzNmI3IGxlZ2FjeS10cnVuaworMjUyODAgNTliYjQzYjZlYjExZjI1ZmM5YzQyMGRmMjNlMjk4Njk3ZDg2YTkxNiBsZWdhY3ktdHJ1bmsKKzI1MjgxIDBmNWRmYTMzZjllZTg0ZTBkNmMwNzg3NjU0Y2FlYzBlMmJhYjQxMTYgbGVnYWN5LXRydW5rCisyNTI4MiBmN2FhMzI3ZmYwZmViOTI3MWUzZWZmYTJhNjQ5ZTY5ZTFmOGY4ZDAwIGxlZ2FjeS10cnVuaworMjUyODMgZWZiNmU2MTdhZWEzOWRkMWFhYTdmMWNjOGM5MGVhNDIxNTZhYzkwZiBsZWdhY3ktdHJ1bmsKKzI1Mjg0IDg3YWZmNjQ4ZDk5NGUyMzdkYzI2ZWY2NmQ0NDgyYTVhZmQ1MmE4ZGEgbGVnYWN5LXRydW5rCisyNTI4NSAxMDk3ZjczMDI5NGIyYzkwYTljN2FiZjYyNTUzY2JjZDc1YmVhNTNiIGxlZ2FjeS10cnVuaworMjUyODYgOWY2ZTBjZjFhYjMwOTdhMTU1ZTc1ZmYyZjEzZjg4N2MxMDkyNTZkZiBsZWdhY3ktdHJ1bmsKKzI1Mjg3IDI0NDgyOTIxYTc4YTliOTJkNGE1OTVkOTU2NjU0ZGY0N2I2NGIzMWMgbGVnYWN5LXRydW5rCisyNTI4OCBhMTNiZjJmNzI2MjlhYjY4YTcxMzA3NTRjN2E1Y2QxNjYwOGQ3NDE1IGxlZ2FjeS10cnVuaworMjUyODkgN2U3MTU5YzAyODMwOTFmOGZlYjdiMGVlYmY2MGQ1Y2YxMmViMjJiNCBsZWdhY3ktdHJ1bmsKKzI1MjkwIDg4ZTIxN2U1MDUzZmU0NDdkZmRkMDc4ZjUwYjBlNGFmNDdkZTJmMjggbGVnYWN5LXRydW5rCisyNTI5MSA3NzgyNDE1ODFkNGEzNTZjNjAzODNlZWQ2ZGI2MDc2MDNkZDBmMjljIFNvdXJjZUZvcmdlCisyNTI5MyA3ZjM1YmI5MmZiZjc1MzQ4MDJiODlkN2VlOTc4Nzg5YzYwMzZiZGQwIFNvdXJjZUZvcmdlCisyNTI5NCA3ZDViMmM2NzlmM2JjZDEzZDZmNjhhMDdmZWFmN2MxMTBkN2I2MDU1IGxlZ2FjeS10cnVuaworMjUyOTUgYWI2OGFkNDNkNTE0MzVkNjEwM2E1NTU0YjRlMzI4ODQwOWIwYjFmOCBsZWdhY3ktdHJ1bmsKKzI1Mjk2IGIzODYyOWI5MTU0NTEyYmFjZDMxZDE0MzRmNTFiNzY1ZTExOTA4NjcgbGVnYWN5LXRydW5rCisyNTI5NyA3MWZmYzlmYjU5ODZmNTk1MzFhMDg1OWNlMDAyYmM4ZTk5Zjk4NmE0IGxlZ2FjeS10cnVuaworMjUyOTggZTIwZDEyYjVkYWQxYzBmYzYyM2FlZmU2MDg1MGZkNGIwODA2Y2YwZiBsZWdhY3ktdHJ1bmsKKzI1Mjk5IGQ3NDI3OThjZDRiNGE0NmI4YzQ3YTcxOWRjZjgwMTNiYTliNjY2ZDcgbGVnYWN5LXRydW5rCisyNTMwMCA4Mjk4ZTljNTM1ZGE4NGYxOTM1ZmI1MmYyNjNlZTE1ZTA2MmY4ZWRiIGxlZ2FjeS10cnVuaworMjUzMDEgNGFiMjliMDZhNzZjYmEwZTIyYzQ4YTIzYTE1MzI1ZmI2NjI0YTRlMCBsZWdhY3ktdHJ1bmsKKzI1MzAyIDZiZGZjOWY2ZjA1OTAzMmQ1ZWZmYzgwOGI0YjFhZTYxMDE0ZjM2MjEgbGVnYWN5LXRydW5rCisyNTMwMyAzMmQwZWY2ZjE5NTU3MDYyYzJiMDMwYTYwODNiZGY5YzAwMWYyMTE3IGxlZ2FjeS10cnVuaworMjUzMDQgZjc0NTdmYWI3NmYwZGJiYzcwYjI3OWQxODc0Y2MzYTA5MTAwNjUwNSBsZWdhY3ktdHJ1bmsKKzI1MzA1IDlkNDRlNzUyZDYxN2VjNTQwOWI0YWRmZjhmNWY1OWJmZGQzMjE5N2QgbGVnYWN5LXRydW5rCisyNTMwNiA5YzgzMjNhYmYxZGJkMjdkOWNhMGNkN2Q3MjU0OTllOWE1OTY5MTc2IGxlZ2FjeS10cnVuaworMjUzMDcgZjM5MjEzNDA1ZTA1YzQ4YjYzOWYzYzdjYTJjYmUwZTY4MmJkNDNjMCBsZWdhY3ktdHJ1bmsKKzI1MzA4IGNiZjFkYmNhMWY2MzBjYzM3MDJmY2JkZTBiNzFiZDYyOGE0NmNkZGQgbGVnYWN5LXRydW5rCisyNTMwOSA3NjZjNTkzN2E2MWVjNjc3YTlkODI3NjYxMjM5YWZmZjEwMmU2MTI5IGxlZ2FjeS10cnVuaworMjUzMTAgOTFhNmRiNmVmYTE0OWEyNTE1Y2VkYWNkOWU0NmViNTM2NTE5MDFlMyByZWxlYXNlMjItbWFpbnQKKzI1MzExIGQyNDQxMTA1YTliZmYxMDhjZWM5MDMyZDIzNWNkZTMwZDg3NzE5YWMgcmVsZWFzZTIxLW1haW50CisyNTMxMiAxN2Y4NDY5ZjA5ZDIwN2FlYjM1MjBiOTQ2MTdmMjZhMzNjYzNkYTAzIGxlZ2FjeS10cnVuaworMjUzMTMgODFjMmJkYTVkMzc3ODg4NjRkMjM4ZWQxZWJiNmVjOGM5ZTY3MmUzOSByZWxlYXNlMjItbWFpbnQKKzI1MzE0IDQ4NjQ0NDQ1MjBkOTJiY2EwZGNmMDc4NmMxZTI1MGI0OTRhY2EzMmIgbGVnYWN5LXRydW5rCisyNTMxNSA2NzZkYjAzMDBmMDY3Nzg1ZmJkOTI4NGIwMWU0NjdhMzcxOWI4YjFiIHJlbGVhc2UyMi1tYWludAorMjUzMTYgMGM5ZWJjZjE3ZWJmZDU5Mjk2ZTE2OWE0YTk5NTJhNWFlZWI4NDA3YyBsZWdhY3ktdHJ1bmsKKzI1MzE3IDk3ZjQ5ZWRjYmRlNzIwYTA3MzQ4YjQ1MWJmOGM3NmE2ODYwZDM0MWUgbGVnYWN5LXRydW5rCisyNTMxOCBiNTVmMmZmOGIyNWY2MTdlNDRmMzk3OWI5NjcxZDExN2M4MDVjMGE1IHJlbGVhc2UyMi1tYWludAorMjUzMTkgMmU5ZTFiMDJiN2Q3YjYyYjI4MjJkODA3NDVjYmIxNTNiM2M3N2VjNSByZWxlYXNlMjEtbWFpbnQKKzI1MzIwIDlmYTVkNDBjYzcyMjJkNmYxN2Q1OTE5NGYwOGZiMDQzMDAzZDdiMGIgbGVnYWN5LXRydW5rCisyNTMyMSA1ZWQ3ODJiZGJiMmFhMDA3OWE2ZDFjMzU1MGIzOGM1YWQ0ODlkNzU4IGxlZ2FjeS10cnVuaworMjUzMjIgMzk1N2QxNTVmOGM1NTAxOTRhOGU1ZDM4ZWE2MzkzOWY1NjhhNDA5NCBsZWdhY3ktdHJ1bmsKKzI1MzIzIDdhOTE3YWQ4ZjQ0MjRmNTJmZDQ5NmIxMGFjOWY3ZWZkNWM3MzE1MWIgbGVnYWN5LXRydW5rCisyNTMyNCBlYTIzZTZlNDkyOTAzZDEwM2U2MzY2MzViMzk3YzU5MGRhZjUyMTQwIGxlZ2FjeS10cnVuaworMjUzMjUgZDNiMWYyYzBlYmNmYzNlM2Y5OTA1NWRjNDY0OGYwYWI2ODQzN2Y2MyBsZWdhY3ktdHJ1bmsKKzI1MzI2IDJmYWEyM2ZhY2VmNzJkZjI0ZWY4YjM2YTJlYTM5OGFlNWQxNjJiNWEgcmVsZWFzZTIyLW1haW50CisyNTMyNyA5NGI5MGNkZDZlMGZlNWUzZjdhMjkzOWJiNWE3NGE3ODg3MGRkYTc4IGxlZ2FjeS10cnVuaworMjUzMjggYzVkM2U0NTg3NDllNzgxZThjZDMwNmVkMjRmY2M0ZDdjZmMxNTg2ZCBsZWdhY3ktdHJ1bmsKKzI1MzI5IDljNDAyNTIzZjhmNWFiNTdkNDU4ODc4YTRiNDViNzIzNDdiY2YyMDEgbGVnYWN5LXRydW5rCisyNTMzMCA0ZDU1NDcwMGM0ZDE3MjMyNjhhOTg2NDNmOGIzMjdlZTdlYTA5NGI0IGxlZ2FjeS10cnVuaworMjUzMzEgNjI3NDFiMjVlZDY1MTc4NjQ4NTI1NTkzZWZmYzY3NTUxODhjMTJlYyByZWxlYXNlMjItbWFpbnQKKzI1MzMyIDcyYzk1NDQ4ZWU0YjNjMGI1YzRkODJmOGVmY2RmZjdjMzE3YWRhZmMgbGVnYWN5LXRydW5rCisyNTMzMyBiMWE4NzFkYzUxOTYyZDViODEzN2YzZjI4NjRkZmMzZjdkY2JlNTlkIGxlZ2FjeS10cnVuaworMjUzMzQgZmNlNzI3OGQ0NmIwYTg0OTBlNDY5YjVmYzM5ZDAwNjcyMjhjZmMyNSBsZWdhY3ktdHJ1bmsKKzI1MzM1IDRhMTMzNzkwNjYwOGZiNzZhM2U5NDAxMTY4MmZiMzc5ZjdkOGI5MjEgbGVnYWN5LXRydW5rCisyNTMzNiBlYThkYjZmNWQxYzU3OTI2Y2U1NzEzZGM4ZGI0NjcxNDg4ZDE3MjBmIGxlZ2FjeS10cnVuaworMjUzMzcgMDUyZWZjMDY1MjBhMjFkYmY2OGMxYzg2Y2JiZWFhMTA3NjYzMjk5NiBsZWdhY3ktdHJ1bmsKKzI1MzM4IDhlMGMzYjc1ZWZmNThiMTVhOTg2NmJmODBjYzRlOWI0OTllYjgxMGUgbGVnYWN5LXRydW5rCisyNTMzOSBlOTY0ZTBmYzRiZmU3MWJiM2QwMzI3ZTA4YTYwNTBkMWU1YmNhYjg5IGxlZ2FjeS10cnVuaworMjUzNDAgYTBhZDY5YzBiYzM2N2YzNDEzZDU4N2U0ZDgwOTUyOTc5NzJiY2RkNyBsZWdhY3ktdHJ1bmsKKzI1MzQxIDE5ZTNmODY1OWVlY2UyYzUwYzNmMzZjN2FiYzUyNDU1YTE0MGViZGMgcmVsZWFzZTIyLW1haW50CisyNTM0MiA4OGE4ZmNhZDAyZDBkY2NiYzRmZjc5N2E2NzhmMjRjNmZjM2EwN2U4IGxlZ2FjeS10cnVuaworMjUzNDMgYzgwZjU2MDEwYjI4NWM4M2JlZWRlMzFmNjk4NGI2MWEzODMzMTJiYiBsZWdhY3ktdHJ1bmsKKzI1MzQ0IDRlOWNjMjZlMDNmZGU5MDM4YzlmYjFhNjE5MWFmMmQyNmQxZjQzNzAgcmVsZWFzZTIyLW1haW50CisyNTM0NSBlMDhhYjM0N2QxMmU4YjNmYWZlMmFhZTNhNDliODAwY2IzMzUzYTQwIGxlZ2FjeS10cnVuaworMjUzNDYgNGMzMzg3YmExMTlkMDE4N2IyMmExNThlNGI0MjFmZDE5ODMwMjA0NiByZWxlYXNlMjItbWFpbnQKKzI1MzQ3IDE4YjVjN2Y2NGM4MDVjMTVlNGY2Y2RhM2NhNTFiNjA0NTE4MmI0MmYgcmVsZWFzZTIyLW1haW50CisyNTM0OCA5YjQ1YTU4NzRjMDk5MTlhYzBjNGFlNmM2MDU4ZmFlZmFhNDIzN2QyIGxlZ2FjeS10cnVuaworMjUzNDkgMzVkOWY1NjkzNjFhZmU2Y2EzZDA5NjU0MTkwYWEwYzFkMWJlNmNhZSByZWxlYXNlMjItbWFpbnQKKzI1MzUwIDBmNjMxMTFiZjRjNWQ3NzVmOTI2Njk3ZDNkYTg4NDNhYzZkYWI4MTAgbGVnYWN5LXRydW5rCisyNTM1MSBmOTJlODY4ZWI0NDBiNzYwOTk0OGE1NTc2MmRjYmM5YWVmNmM5Y2U3IGxlZ2FjeS10cnVuaworMjUzNTIgYzg0M2JlNWQ1OGE5ZGM4YzdkYzJiZjU0YTVhNzZjOTkzOTEzOTE5NSBsZWdhY3ktdHJ1bmsKKzI1MzUzIDA5YWI5Y2UxZjUyYTYwMjRlZWI1MmU3MTUyZWNjMzgwZjgyYTdkNWEgcmVsZWFzZTIyLW1haW50CisyNTM1NCAwOGM1YjBjN2Q5ZDgxOGU3Y2FlYzljNzUxMzdmNzEyOWI1YmNhZDg1IHJlbGVhc2UyMi1tYWludAorMjUzNTUgYTdmYmRlNmUzNGE1MGY0NThmZGJlZTFjMzRhNmFlYWI2M2E0OTY5YyByZWxlYXNlMjItbWFpbnQKKzI1MzU2IDRlOTk2MzE0ZjhmYjQ0MTM5ZDM4MWI4NjI2ZDNhMWU3NTQ3NjA5MTIgcmVsZWFzZTIyLW1haW50CisyNTM1NyAxYWEwY2U2MGY2YTg1MjcwYzE1MjQ2OGIyMTlkNjFjODhiNjVlOGU5IHJlbGVhc2UyMi1tYWludAorMjUzNTggMjcxNDczOWQ0ODNiNjI3ZDcxMjg5MGM5YmRhYWY2MTE0YTRiNDVhNyByZWxlYXNlMjItbWFpbnQKKzI1MzU5IDBiMTVjZjExNDMxZTRkMTc2ZTBmZmMxYTg2NzU0N2I4ZDQ5OTljZDEgcmVsZWFzZTIyLW1haW50CisyNTM2MCBjYjViNGE1NGZmMTJhNGNkODMwMWY2MjQ2YWIzODk5ODNlMmEzNjcwIHJlbGVhc2UyMi1tYWludAorMjUzNjEgZGVmZDJiMWE4NDI2ODhiZjE2MzkwOTYzZTFjYjcxNWI1NGVhMGRhNCByZWxlYXNlMjItbWFpbnQKKzI1MzYyIDdhZWUwZjhhZmFjNTA4Y2U2ZmMxOGUwZDcxZjM0YTVmOTcxMTllODEgcmVsZWFzZTIyLW1haW50CisyNTM2MyBiYzViZjcyZmI1ZDQ1ZDRjMGQ2YWVmNmEzNTI0ZmIwZGU2YzdlNDg2IHJlbGVhc2UyMi1tYWludAorMjUzNjQgOTY1ODc0Mjc5ZWUyZDI2NjU5NjEwNWUzZTZmZDUzZGYyMWMwZDkzNCBsZWdhY3ktdHJ1bmsKKzI1MzY1IDVlOTVmM2VlNzdlYzE0M2M3ZTIzZjBlNjY1YzU3MTZmM2E0OGI2MWIgcmVsZWFzZTIyLW1haW50CisyNTM2NiBhNmE1YjFmY2MyYTdlOGY1NGVhMDBjYjIyYzQyZTZlODJkNzhkMWI2IHJlbGVhc2UyMS1tYWludAorMjUzNjcgNTEyNjZiMmI0MzYwZDRlNmQwOTk2OTkzNTBkOGI5ZWI1MTU2ZjFiMyBsZWdhY3ktdHJ1bmsKKzI1MzY4IDUyYWEzZTNlNTc3ZjEyMGM1OTJjOGZlYzBhNzczNzliMjBlMWI1NDAgcmVsZWFzZTIyLW1haW50CisyNTM2OSA0Y2RhZmZjOWUxOGNjMGYwYmU1MzgyMDNlNDY1ODY2OGFiZmNjODIxIGxlZ2FjeS10cnVuaworMjUzNzAgOGE3OTEzMzBmYzIwM2I2YzI1MDc0NTM1Nzc1MjFlOTk2NDIwYmNiNCByZWxlYXNlMjItbWFpbnQKKzI1MzcxIGQyNGFhZGZlM2MwNmE5YThiYzE3MzdkMDlmNDMzZWMxMWRiMWRhYjggcmVsZWFzZTIyLW1haW50CisyNTM3MiA4Y2UxN2RhOThlOGNiYWZjYjk4ZTBiMTgyMTg3NDkwNDVhZmYwMjliIGxlZ2FjeS10cnVuaworMjUzNzMgODJmYjBmOTllMmRhZDMxOGRlNDAzYTRkZDk4YmJjNWMwMjllMWY3NiBsZWdhY3ktdHJ1bmsKKzI1Mzc0IDk2MzY3NWZlOTdlNzg5MWUyMzhmYmZkOWI3NzJhYmQ4OGE4MTI2OTAgbGVnYWN5LXRydW5rCisyNTM3NSBlNzk5NDk4ODM2Yjk0ZWM5ZmQ0NWZiMGM2MWQ1NDdhMWIxYThkNjA2IGxlZ2FjeS10cnVuaworMjUzNzYgOTg4NWRhM2ZlZWVjZDFiMTMwYWMzZTQwZTljMDg2ODY4YmY4MTMzNiBsZWdhY3ktdHJ1bmsKKzI1Mzc3IGUzZmI4ZDE2YTUxYWNhNTdkM2Y5YWYyYThmZDM4OGMwNGEwNDhhMDAgbGVnYWN5LXRydW5rCisyNTM3OCA0ZWI4MTg2OWY2MTk3YjViMjVhZWRkMDM3MmQ5ZGRjZjg5NzU5NmQxIGxlZ2FjeS10cnVuaworMjUzNzkgNDgxZTlhNDZkNjgwMTFiMzIzNzhiZWZmMGE2ZmI5YmFmMzY3NTVlZiBsZWdhY3ktdHJ1bmsKKzI1MzgwIDgwYTA0Y2JjZDBjODAxMWE2MDJlYzEwNjY2MTNlNDY5MTc0NGZmOTMgcmVsZWFzZTIyLW1haW50CisyNTM4MSA0NGVkYmUwZjIxNzQ4ZThlMmUzY2Q1MDAxMmJhYTg3NTBkZDUxODdhIHJlbGVhc2UyMi1tYWludAorMjUzODIgMzJkMjRmOGQ2NGY3YjM2ZGE3NDQyOTE2NDQ2YmM2MDExZTE0NzViNSByZWxlYXNlMjItbWFpbnQKKzI1MzgzIDlmNWUzNTc4Njc1MjUyN2JkYmU5NjYwYWRhYmQzZWI5ZWIxNDc3MTIgcmVsZWFzZTIyLW1haW50CisyNTM4NCA3MWYyNWY5NWU5MDI1OWQ1MjEwNmQ3NGU1ZDJjYmQ1ZTY0OGU2YzIxIHJlbGVhc2UyMi1tYWludAorMjUzODUgYjg2OTE2MDFkMmEwMjg4Mjk3YTU2ZDE5OWUxOWYwMDY0NGY1ZmQyYyByZWxlYXNlMjItbWFpbnQKKzI1Mzg2IGUwNjg0NDBlMTE2ZjkzOTZlODVmZWYxNDI4MTJmYWE3MTYzZjQ2YjIgcmVsZWFzZTIyLW1haW50CisyNTM4NyA5NWRjMzAyNDkyN2M5ODhlYmYxNjJkYTY1NzVkYjFkZDhhNTQwODk3IHJlbGVhc2UyMi1tYWludAorMjUzODggMDJhN2M2NGUzMzMxZjk5N2RjNTAzMjA3ODdiMjQ3NjgxYjMwNjdhNCByZWxlYXNlMjItbWFpbnQKKzI1Mzg5IGZiZTgyMGUwYzYwMWQ2NjU3OWYxYjAxMzBjYjY2ZGZhZjgwMTk2NzkgcmVsZWFzZTIyLW1haW50CisyNTM5MCA3ZmJlZmUzZTNkZWUyZDcyMmE1ZGNkYzVmNWVlMzJiYWFhMzJjMGFmIHJlbGVhc2UyMi1tYWludAorMjUzOTEgNTU2ZmI3ZjFiNjA2NzQzZTE4NjU0ZGUzYmY1NDlmMWNkN2I2YzkwOCByZWxlYXNlMjItbWFpbnQKKzI1MzkyIGE1YjI1YTgxNmE2ZDY4YzJlOTNjYzg2NGRjMjU5ZmE4Njc1Yzg2ZGUgcmVsZWFzZTIyLW1haW50CisyNTM5MyA5OTM0MWU4NTAxN2VhNDZiZGU4MGNkZGNkMzQ1NjU2Zjk4NzljYjQzIHJlbGVhc2UyMi1tYWludAorMjUzOTQgNzYxMDc1MjgwYTk1ZTYwYmUxYTU2ZGY1NDYyNTc4YWU3YzM5MjkzOSByZWxlYXNlMjItbWFpbnQKKzI1Mzk1IGIxMmU5NzE0MzY2OGQ4N2Q4YjZkYjNhNTgyZDQwNTU3ZDlkYmNlYmIgcmVsZWFzZTIyLW1haW50CisyNTM5NiBmZGFhZmFhODk1ODdkNzk5MGM0ZWNlZWFhMGQwODgzYTczYTI1NmE5IHJlbGVhc2UyMi1tYWludAorMjUzOTcgYWU0OGQ1NDFmNjVhYzM5YWE2NWViYThkMTJmNDZhNTBiYjFkODJmYSByZWxlYXNlMjItbWFpbnQKKzI1Mzk4IDIyOTNlMGQ3YjVjNDUwNmZlMTM1ODNlNzZkZjlmMDVhZWIwZjFjZTYgcmVsZWFzZTIyLW1haW50CisyNTM5OSAyMjliNjI0YzZiNTRjOTE2MGIzOTIzNDNiYmE2NGE1NjVlMzI3NDZjIHJlbGVhc2UyMi1tYWludAorMjU0MDAgNzIyM2M1NGIwNzI3NmQ5ODBkZGU4OTMzYTVkYjAyOTkwMjNhNWJhYiByZWxlYXNlMjItbWFpbnQKKzI1NDAxIGU2ZDQ0Y2YyOWRiZjk3NmE1MWU0ZjVhY2RjYmFiZjA0ODU2ZWYwMDMgcmVsZWFzZTIyLW1haW50CisyNTQwMiAxMzM5Y2JlOTRjZWU1NTQ1YTMyYmIyZmVlNDFjNGQzNTk4ZGE3ODdkIHJlbGVhc2UyMi1tYWludAorMjU0MDMgODc1ZmI1YjcyOTEwYzM1MWY4YTI0M2QwMzAzYmMxZmFkYmU1Njc4OSByZWxlYXNlMjItbWFpbnQKKzI1NDA0IGUwYTI4OGRiMDIyZGUxYjExY2NiZmNhNjRhYmY1NTk2MmYxODllODYgbGVnYWN5LXRydW5rCisyNTQwNSBmMzg2MzMwM2E5ZjRmYTU1ZjBiZWFjNzc5MGFkZjcwY2JiNmZlN2ZlIHJlbGVhc2UyMi1tYWludAorMjU0MDYgNDdhYTEwODFhZjI4MDk4MDA3ZTFkZmY4ODU5ZmE2NGFiNGQ1MzA1MyBsZWdhY3ktdHJ1bmsKKzI1NDA3IDE0OThjNmU0YjQzYTFmNmRiOTEwZWJmZWZjZDRiZTM5ZTA3YWRkOGYgcmVsZWFzZTIyLW1haW50CisyNTQwOCBjYTJjYmExMGI0NDg3YWFmMGZmZjI5NWVmMGU1NmNmMDA4M2RjYjU3IGxlZ2FjeS10cnVuaworMjU0MDkgMjc2MmQyMjUxZTg1ZGM2NGE3NjIxMGExMWE1ZjBlNGQzY2VmMTVkOSBsZWdhY3ktdHJ1bmsKKzI1NDEwIGVmYTIzZDI2ZmEzNWQ0NmU0ZmVjYzQ3NDRmNTExYjgxZDE3ZjhlYTMgcmVsZWFzZTIxLW1haW50CisyNTQxMSA2YmU2NTkyM2MwMmQ2ZGM0NjU1MWY5OWI3ODcwNGRjOWZhN2JmNzFiIHJlbGVhc2UyMi1tYWludAorMjU0MTIgOWIxY2M5OWY1OTMyYTg0OTc4YzIzOGUzNTQ0OWFjYTZiMzJlNjIzMSBsZWdhY3ktdHJ1bmsKKzI1NDEzIGVjZmY0MDQ2MTk3ZGExODA4YjdhMjFkODBhMzMyMWNlZTcwYThmZjMgbGVnYWN5LXRydW5rCisyNTQxNCBlMzFhZDRkZDMwZDk5ODgzMzM4ZGI3NTMzNzc5YjBjYzRiNzg1ZWFjIGxlZ2FjeS10cnVuaworMjU0MTUgMDhkNWNmNTk2YjAxMDcxYzBkYzYzYzQwNzRlYzYxMDM3MTI3MWQ2OSBsZWdhY3ktdHJ1bmsKKzI1NDE2IDQ5MTk3ZmQ3NjM2MmIyZjc0ZmVlYmIzNWNiYjIxODBmYWVhNGNlNTEgbGVnYWN5LXRydW5rCisyNTQxNyA1Y2JjZmRlM2FkNTUwNzY3ZGY4OGExOTUxNDU0NjdhM2VkNmUzZGU3IGxlZ2FjeS10cnVuaworMjU0MTggODZkMGY3Zjg2NTUwNTg3YTE5MTQ1N2ZmODVkNDVhNzZkOTBkMmQ5OCByZWxlYXNlMjItbWFpbnQKKzI1NDE5IDlmMWViOGZmMTc5NTZhZDhlMjgxNzY1NTI0ZmRkZWE1OWYyZGVjNDQgbGVnYWN5LXRydW5rCisyNTQyMCA0Mzg1NDMxMTY0ZGE1OWZjNjVjNzY5NmI3YzkyOWI5ZWNhOTFmNTc1IGxlZ2FjeS10cnVuaworMjU0MjEgY2E4YTI4NDlkZDU2ZWMxMzdjNWVmNmYxYjUxNWUzODQwNWYwZWVkYyByZWxlYXNlMjItbWFpbnQKKzI1NDIyIDQ2YmNlZTExYjQ4MDUwZDExNTk1ZjJkMDNhYTM0NWMzNTM3ZGU2NDMgbGVnYWN5LXRydW5rCisyNTQyMyA1MWVlM2JkZGI3MmNlNmU0MTM0YzcxMmRiNDNhMWJlYzYzMDg4YTljIHJlbGVhc2UyMi1tYWludAorMjU0MjQgNWNiNmNjNDZjZDQyY2U0ZDY0ODU4MGU1ZmE3Y2Q2MjMzYzU1NTM1OCByZWxlYXNlMjItbWFpbnQKKzI1NDI1IDEwODdjYTUxOWViOWFlN2YyNWUzNjNmM2E4ODNjYWE5YmFhYTYxNDcgcmVsZWFzZTIyLW1haW50CisyNTQyNiBhNTBiYWExMjZjNzVlNmU4ZDZjZjhkZDU0YmQwNTMyZjA4NmFjOGM4IHJlbGVhc2UyMi1tYWludAorMjU0MjcgYjgzNzRkZTg0ZTJhZTczNTE1MWNiYTQ2MWMzNTcyN2QwNDY5M2ZhMyByZWxlYXNlMjItbWFpbnQKKzI1NDI4IDk3MjI0YTljYzgzYzY1MTJhNzBkZmI2YTk4N2NlNzc3NmFhZmVlYzIgcmVsZWFzZTIyLW1haW50CisyNTQyOSBmNTc2ZDkwMDAyNmYzNmI5NTk5M2Y2NDk1ZWY1ODA0ODkzOTdmNTVhIHJlbGVhc2UyMi1tYWludAorMjU0MzAgNWMxNDhmNWUxYzExNDIwMDI1OWJiYzc4NGU1YjQ3MGUzMDE2OTdhMyByZWxlYXNlMjItbWFpbnQKKzI1NDMxIDNjM2FjYWM4NjczNDU0OWZhMjUwMzMyOGE5ZTNjMmVjMjFkMGZmZGEgcmVsZWFzZTIyLW1haW50CisyNTQzMiA1MDMyZWM4OTFlNzQ1NjNlOGQyYjEzNjM3YmYzM2Q4MjZlZGMxZmYyIHJlbGVhc2UyMi1tYWludAorMjU0MzMgNGJiYWNhZWRjNmUyZDc0MTViYjAyNWM0NmE1YzBlODVlZmE3NDEzYyByZWxlYXNlMjItbWFpbnQKKzI1NDM0IGMyZjkwY2U1OTc1NTM5ODMxMzdhYjA3NzI4N2JmNWZjNjQwZTFkNzYgcmVsZWFzZTIyLW1haW50CisyNTQzNSA1MjEwNjI5MGQzOTJjOTRhZTRlZDRiNDJlNWE1Yzg5ODliY2RkNjMwIHJlbGVhc2UyMi1tYWludAorMjU0MzYgZWNlNDMxNWMxMjA2ZjdkNDJiNDQxYjk4MjczNWVkZGMzYThmOGY0OCByZWxlYXNlMjItbWFpbnQKKzI1NDM3IDY1OTI2YTk3MGExNzFjODFlMzJkMDM4MzYwNmRkZWFjMmQ0MGI2ZGMgcmVsZWFzZTIyLW1haW50CisyNTQzOCA1ZDFiMjIwM2I2ZWNmN2NkMjU2YjNmNzg2M2Y5MzA3ODYyMzI1MzJkIHJlbGVhc2UyMi1tYWludAorMjU0MzkgYjM4M2MzZmYzYjFlY2JlMjZmMTYzNGNhMzM4ZmU2MjkwYzdiYzU2MiByZWxlYXNlMjItbWFpbnQKKzI1NDQwIDI4NTJiNGNiN2Y2YWJmMDg2NDVkNTU3MDBhYjI5OWM4NGE5MWM1ZWYgcmVsZWFzZTIyLW1haW50CisyNTQ0MSBiNzAyMTFjMWQyNTY3OWU0ZTRhM2NjYzExNmE1ODA3Mzk2YzY3YWZiIHJlbGVhc2UyMi1tYWludAorMjU0NDIgYjViNzczNTBhMDA0NDAzZDcwNGU3ZTA3NDAxMjg0MDZhYTc0NDVlOCBsZWdhY3ktdHJ1bmsKKzI1NDQzIDhkNWRjMWE3ZWUxODdiY2ExMDJlMDBlNTczOGY2NDU5MWU2NjViNjggbGVnYWN5LXRydW5rCisyNTQ0NCA2MDcyZmE0MTBkY2M5NGE0YzNjOWMwM2NlOWViM2IxYThlNjRiZTkzIHJlbGVhc2UyMi1tYWludAorMjU0NDUgNTVjNGQwODNjMzA5YTBlYTc3MmE3MGM1MTA5NDk4ODhiNDg4MTYwMCBsZWdhY3ktdHJ1bmsKKzI1NDQ2IGRmZWFjMDMzNDU3NGY3OWUwNmI5MzRjM2YwOTU4ZDQ1ZDBlYjAxNDkgcmVsZWFzZTIyLW1haW50CisyNTQ0NyBhZDNkNTk2MTIzNDVhMjQxMjhiODZjODk5YTJkM2E5ZmNmMDhiMDFlIHJlbGVhc2UyMi1tYWludAorMjU0NDggNjhhNmE5ZGQ0MmY4MDExY2ZmYzUxYjY1ZjdlMmQzMDkyZDBhMjYyOSByZWxlYXNlMjItbWFpbnQKKzI1NDQ5IGE5YWY4OTg2ODY4OWEwNThmZjBmYmMzZWViMjlmMzU2YTJhOGI4ZDkgcmVsZWFzZTIyLW1haW50CisyNTQ1MCA1YjI0YTZhZTJkYzRmMGQ4ZGZlZWIyYWE4NDdjZTNmZTRkZTczMTljIGxlZ2FjeS10cnVuaworMjU0NTEgNzM2ZmI1YWVjOWIzYjdjMWU1Nzc2ZmRhODI4OGEwMzk5ZjZjZWQ1MiBsZWdhY3ktdHJ1bmsKKzI1NDUyIDQwMDljMDg0MDJiMTQ1NjA1NTIwZTY3NDhjZDQ1NDJjOGUyZTBkOTYgbGVnYWN5LXRydW5rCisyNTQ1MyA5MGQzY2UzZWIxOWNiNTlhYzkxNjYyN2QwZTliNzVjZTYyM2JiMmQzIGxlZ2FjeS10cnVuaworMjU0NTQgNzA2NTEzNWY5MjAyZjM4Y2U4OGRhMWE0Y2Q3NWEyOTA1MGMzOTQ3YiBsZWdhY3ktdHJ1bmsKKzI1NDU1IDdhM2UwM2I1NDFmZmIxMjc4MTJhZWVjNzM0OGQwZjI0NTY0MDQxZTMgbGVnYWN5LXRydW5rCisyNTQ1NiBjYzhiN2Y3MTEyN2Q4NGQwZmE1MzhkOGI4MDE3MzljNGNkNmNjNzBkIHJlbGVhc2UyMi1tYWludAorMjU0NTcgNjZjNzQ1YTdhYmIxZmU4MjFlYWI1NGM1MjZhYTQ1MTNlN2ZiYjE0OCBsZWdhY3ktdHJ1bmsKKzI1NDU4IDU5NTVlMGUyOTc2ZDNlOTE1MTQ3NmY3ZjZiMWFiYjdkMzgzOGRjNDMgbGVnYWN5LXRydW5rCisyNTQ1OSA5ZTVmZjY3NDc0MzdmOWZlNDM5NmE5YTE5MjdkMDI0M2U2M2FjZmEyIGxlZ2FjeS10cnVuaworMjU0NjAgMmVmZDQzY2EwMzNmNjQ5ZGUxMzUyNTc5MWQxZThlYjg2OWY3ZTkzZCByZWxlYXNlMjItbWFpbnQKKzI1NDYxIDk2NjcyNTA5NTg1NDZkZjJjZWQ5OWJkOTcxMjg4ZTkzYTAwYzY1YmQgbGVnYWN5LXRydW5rCisyNTQ2MiBkMGFjYjNjYjAxMWRhNTVlYjc1NjMxMTc0ZDRmNzliMGU5ZmU1NjdhIGxlZ2FjeS10cnVuaworMjU0NjMgNDIzYmM5YjUxYTdlNDEzM2M1ZGI0NTVkOWY3YmE0ODhiNDY1YTVjNCBsZWdhY3ktdHJ1bmsKKzI1NDY0IGM4MWU4ZWEwYzRiYTdjNzM2NTc5NjQ4YmNiOTQyZDhhOGM1MmJjYjMgbGVnYWN5LXRydW5rCisyNTQ2NSBmY2YwYzI0NGUyODdlOTJkNmM2MDA2YWJkY2RhYjBkZjNjMGFhNDU5IHJlbGVhc2UyMi1tYWludAorMjU0NjYgNjQ0MmZiZTVkZDA0MjQwYTE2NTc1MGVjYzkwNTU0OWQ0ZWVlMGQ3ZCBsZWdhY3ktdHJ1bmsKKzI1NDY3IGNkMGNlNDcwYzE1M2M5NDhhYWFmOGZjNGM1MzlkMjkxYWM3NjRkMDkgbGVnYWN5LXRydW5rCisyNTQ2OCBkMzg0NTgwNTI0NDJmZjE1MmNkYTQ5YWI5ODdkMDc3MWU0NGViODZmIGxlZ2FjeS10cnVuaworMjU0NjkgOTNlYjRiNjFmNjg3YmJkYjQwNjQyNDRjYzVmZDkxMjA1YWQ3MGY4NSBsZWdhY3ktdHJ1bmsKKzI1NDcwIDEzYWMyN2ZhMDcwNDgzOTQxMGZkNWJlZGNlYmIzNDQ3YzdlYmQ0ZmEgbGVnYWN5LXRydW5rCisyNTQ3MSAzNTRjZGU3ZjkwYTE1MjdhYWZiNjhmODE5NzMyOGZiYmUwNjE5YjdiIGxlZ2FjeS10cnVuaworMjU0NzIgNThmMmMyOTliNjU0NDMzOGIwNzY3MmViYjk4OTQyOTE2OWQ4ODQyYSBsZWdhY3ktdHJ1bmsKKzI1NDczIGFkNzk2OWU4ZjU4ZGZhYzM5NTE5ODY0Mjk0NWJiY2U2NWEwY2Q2MGQgbGVnYWN5LXRydW5rCisyNTQ3NCBjNDk0MDg0ZGM2ZDg4OTA4MzFkMzJkZWMzZmZiODk1ZWI1MDgxZTc4IGxlZ2FjeS10cnVuaworMjU0NzUgOGIxMDRhODViOTljN2EyNzc3NzRhMWZlNjA5MmM5MTFhODJhOTBhYiBsZWdhY3ktdHJ1bmsKKzI1NDc2IDc5ZjI5MmRiYWJjZWEyOTVkYjZhNjEwYzk0MmI1MzExNTkxYWVmMDIgbGVnYWN5LXRydW5rCisyNTQ3NyBjNDU0Yjc2ZDUxZTdiOTAwNzE1Y2ZlNDIyOWQwZWM1NWM0ODIwMjNhIGxlZ2FjeS10cnVuaworMjU0NzggZDEwNGJiNTBhMTk0ZDMyYWVjZDUwMTU1ZWVkY2IxM2RhYzA3NmJiMyBsZWdhY3ktdHJ1bmsKKzI1NDc5IDBjNDIzMDI2OWVkM2VmYjk4Yzk3ZTRiNjg0MDJiMGI0MzU5YjU3ZjUgbGVnYWN5LXRydW5rCisyNTQ4MCAxMDQ2OTY0ODk2YTFhNGUzOTY2NDY1ODUyZGFjNGI0OWZiOWRmODY3IGxlZ2FjeS10cnVuaworMjU0ODEgY2JjMDhiMTcyZDFmZDYxNzViZWQ5YjY0MDYzNDk1MTE2MjI0ZDczMiBsZWdhY3ktdHJ1bmsKKzI1NDgyIDA4NTllNzY0NTA5ZTZhOTYyNjE0NDI3NTQyNGIzYTJkMTBjNGVlZWMgcmVsZWFzZTIyLW1haW50CisyNTQ4MyBiMmEyY2MwYzJhNjM3MzBiODUzMGNjMzVkOTczYTZhYjBlMDA5MTY5IGxlZ2FjeS10cnVuaworMjU0ODQgZDQ0MDZmYmZjYjRlNTRlOWI0MTUzNGU5MDk3ODQ0NDVjODJmMjIwOCByZWxlYXNlMjItbWFpbnQKKzI1NDg1IDA3NGI3ZTNlNTQ4ZDhlNzMxMTFlOWFkOTJmZWE4YTBjZGRjMTYwYjYgbGVnYWN5LXRydW5rCisyNTQ4NiAzYTA2ZTE5ZGY0NmI5MDNiMjk3YWVlMzgzNGFkZjE0ZTY4NDhjYWJiIGxlZ2FjeS10cnVuaworMjU0ODcgZWRmMDVjNjliYmYzYmJiZTUwMzVmYmZjNDY4MGMwNjkwZDE4NWI1YSBsZWdhY3ktdHJ1bmsKKzI1NDg4IDc0ZjE2ZjdhNjM2OTY2OTdjNjE5ZTZkZTEyZjIwM2EwYmY5OTE3ZjggbGVnYWN5LXRydW5rCisyNTQ4OSA5ODZlYjFkNGViZWY1M2FmNDU2ODM2YTMwYjk5OWRmNTYzMTEwM2NlIGxlZ2FjeS10cnVuaworMjU0OTAgNTk5NDQ0MGU1ZGQ1MmI4NmM1MzdkYTMwYjA3MGE1YmZlNGZlNTkyYiBsZWdhY3ktdHJ1bmsKKzI1NDkxIDJiZmQxMzdhOTc2ZjU5ODNlNGU3YzE2OTFkMjdkYzk1MzAxM2E5NzggbGVnYWN5LXRydW5rCisyNTQ5MiBlMTNhYTRjNjcyYTk0OWJhODcwYzhkOGM4NjU3MjY3OWVkZTM3ZTViIGxlZ2FjeS10cnVuaworMjU0OTMgZTgxYjMwNzZhNmMzMGQ5Y2E0MjdjNjVkYjkyMWRjOTY1YTgyYWFmMiBsZWdhY3ktdHJ1bmsKKzI1NDk0IGNjYTk4OGYzZjY0ZjIwNDdhM2Y0ZjNlMTQyYzZiYWQ0MzI3YzE4YzcgbGVnYWN5LXRydW5rCisyNTQ5NSA5OWU2MDgxN2NlNmVjZTI1MzE5NmYxOTQyMzRhYzNkMThmN2Y2NTVlIHJlbGVhc2UyMi1tYWludAorMjU0OTYgNTQ5MzIwNTRmNmE5NDFlNWViYThjOGIyNzViZDgzODAyOTZlYmVjZiByZWxlYXNlMjItbWFpbnQKKzI1NDk3IGU1OTllN2I4YWJmNzAyNTNiZGU1YmQ0ZGViNGU3ZWZiNjQyNWZhMTUgcmVsZWFzZTIyLW1haW50CisyNTQ5OCA5ZmRkZThjY2RjYTY1ZTQ0Yjg2NzNmMGEyMzMxNGVkMjE5ODlmMTE4IHJlbGVhc2UyMi1tYWludAorMjU0OTkgN2UxODgxNDBiNjE4MWMyNzkzMDllYWUyMzk4NWE2YzlkZDA1M2RlMSByZWxlYXNlMjItbWFpbnQKKzI1NTAwIDFhNTExMGI0YmQ3MmEyZTA2Yjk2MjM2MzM5ZjViZTEwNzBlNjJlZTQgcmVsZWFzZTIyLW1haW50CisyNTUwMSBlZDJhMTdhMzc2ZDBjNmJlZTZlMzRiYzFiYjBkYmUyODg0Y2Y2MmRmIHJlbGVhc2UyMi1tYWludAorMjU1MDIgMzQ3NzAzMDMyN2E2MGUzMGZhYWQyOGM4Y2I2ZDAyMjM3YWQzNGYyMSByZWxlYXNlMjItbWFpbnQKKzI1NTAzIDFlOGJlNzRhMzc0YmJhZGQ2MjI2NTY0ZTFiZDZmNmJlNGI1Yzk3YTMgcmVsZWFzZTIyLW1haW50CisyNTUwNCA0ZmY5ZjhhNzRjODI3ZWYzZWEyYjMxMjVkZThlNWM5YjBkZjViOTBjIHJlbGVhc2UyMi1tYWludAorMjU1MDUgYzI1ZDZkNzgwYjFiNDcyZDhiNWE2MzUyNzViMzZlM2VlOWFmMDkyZCByZWxlYXNlMjItbWFpbnQKKzI1NTA2IGZkMGVlMGEwNzA0N2QxN2VjNzE4ZjE0MjQ4OTllZGRiNjE0NDdjYzUgcmVsZWFzZTIyLW1haW50CisyNTUwNyA4ZWI1OTFkZDc2ODI2OGQwZmFiOTE2YmI5YzM0YzAzNDNlZjgwYmNkIHJlbGVhc2UyMi1tYWludAorMjU1MDggYmVmNDRkMTA4ZTU3NjEzODBmMjBkYjNkNzNiMDlmZGE3MTA3NGJiNyByZWxlYXNlMjItbWFpbnQKKzI1NTA5IGRiMDQwOTM4ZGM2NjNiM2Q2ZWVkZDYxNTVlMWVmNzJlNTBjYmQ5MjMgcmVsZWFzZTIyLW1haW50CisyNTUxMCAxZDFhMDFkOTU2YTJlZjBlODQ5ZjA4ZDY4ZTY1YzE2NjA5NmIwODY2IHJlbGVhc2UyMi1tYWludAorMjU1MTEgZWE5YmUyZTVkOTU0NDU0NDFiZjczZjAyMmQxYzUxZGZjYTNkZTNkZCBsZWdhY3ktdHJ1bmsKKzI1NTEyIDFlNjBiMWUxODE0NWRkZTI4MmNhOTRjYjEyYjg5MTliZDFmMTFiZjkgcmVsZWFzZTIyLW1haW50CisyNTUxMyBlNGQ3ZTUxMjllNGMxNjdkMGNiZjlhMjZkOWY0ZDgxMmNmOThmZTE1IGxlZ2FjeS10cnVuaworMjU1MTQgNGIzNDU5NTFhNWM1MWNmZGZkNTM1YTc5NmQ0MjJjMWM3YjE2MWZhMSBsZWdhY3ktdHJ1bmsKKzI1NTE1IGE1MzczMGNkMjljMTQ3NGE1ZDdjYzhiZTNjODkyOWI3ZmE3ODZkOTEgcmVsZWFzZTIyLW1haW50CisyNTUxNiA1MTMxMDMyNDk0NjJkN2M1YjNmN2JhMGIwYjhmYjQyOGRkZmQ4OWU2IGxlZ2FjeS10cnVuaworMjU1MTcgZTgxYTRlOTllY2ZhM2M2YjEyMTM1YjM5YWM1ZGZiY2Q1MDA1Yzg2NyBsZWdhY3ktdHJ1bmsKKzI1NTE4IDM0NWRlZjM3YjBkN2E1ODdlNzUwYTQ2YjZmZTAzODJmOWU2NjNlYjEgbGVnYWN5LXRydW5rCisyNTUxOSBlMzAxNjJiMWIzMDQ2OGRiZmM2MTk0ZjY3NzJmMDVmY2IzZTgxMTU0IHJlbGVhc2UyMi1tYWludAorMjU1MjAgMmIzZjQzODA2NzNmODE2MmZmMTI4ZDJjY2I4OTJiMWJmYjAwZjM5OCByZWxlYXNlMjItbWFpbnQKKzI1NTIxIGIxZDU3M2EyYTc3NDViMzc5M2ZkYWRlNDY4NDNmY2E4NzM0N2E0YTEgcmVsZWFzZTIyLW1haW50CisyNTUyMiA3MTkwMmUxY2ZiZWYzMGIxNzZiOGI2ZTg5ZmQ5Y2VhNDhkY2I0NWQxIGxlZ2FjeS10cnVuaworMjU1MjMgZDY5N2Q4OGQyNWI0MGNhZWFjYzUwYTQxZjc5OGRmMTBiMzhiZGRmMyBsZWdhY3ktdHJ1bmsKKzI1NTI0IGFmNTJiZjhlMmI4OWY0MzU1YTBhYWQyNjFlNDFhOTY2ODZiZmVlOGQgcmVsZWFzZTIyLW1haW50CisyNTUyNSA4MWRmYTJkYjRjNjFiMzBlY2I4ODNlZjVmODRhODc1MTE1YTQyMWNiIHJlbGVhc2UyMi1tYWludAorMjU1MjYgNDI4NjIxNjk1NDFmYjlkNTAzMGE1OWEwNTVmMDA4MDcxZTZhMjAyMyByZWxlYXNlMjItbWFpbnQKKzI1NTI3IGFmNjEyMmRmMjhlMDdlNDJjYTU2OTgwODVmMjJhNTU0ZmE4YjI2YzYgcmVsZWFzZTIyLW1haW50CisyNTUyOCAyMmM2NjU4N2M0NTJlMjQ5OThjYzIzOWZjMWQ3ZWZmOTM5NWExZDAzIHJlbGVhc2UyMi1tYWludAorMjU1MjkgODM3OTUxZWNkY2U5NTc1NGM5OTllODU1ZDFkYTlmNmZkNWVlNGZlYiByZWxlYXNlMjItbWFpbnQKKzI1NTMwIDg1NzlkM2QzMDFkNDhkNDg1MGFlZDY0NDRkMDYzMmRlMWI0Y2VhNzQgbGVnYWN5LXRydW5rCisyNTUzMSA2ODgzMWFjNTQ5NWJiMDEzZmQwM2Y4OTA0MjBmNGU4MmQ0ZDAwM2Y5IHJlbGVhc2UyMi1tYWludAorMjU1MzIgNGQ1YmVjYzY5MDJiY2NmM2Y2Y2JmNGM3ODM2OTAwMDQwYmE5YTNlZSBsZWdhY3ktdHJ1bmsKKzI1NTMzIDMyYTFiNDg0YTJmM2E1MmE4YzRlOGUwOWYzZjc3YTNhY2E2YWM1ZWEgbGVnYWN5LXRydW5rCisyNTUzNCAxMDNjNGM0Y2NjZmI3Yjc5NGJlMzUzN2YwZTljYzVhZTJkMDIxNzMyIHJlbGVhc2UyMi1tYWludAorMjU1MzUgY2E4YmQ5OTdlNDE5ZDQxODk2OWM4NmI5MTFmYmM2MzJjM2MwODRkNSByZWxlYXNlMjEtbWFpbnQKKzI1NTM2IGM1YzllMzZjMzkwOTlmOTM5MzcxZTg0OWQ3OGQxZDI5NWU4MmEyMmUgbGVnYWN5LXRydW5rCisyNTUzNyAwZTNlNjllMDFlY2Q2NDdkOWJmMzU3YjA1Y2IyYjg5ZjE2NjVjNzRkIGxlZ2FjeS10cnVuaworMjU1MzggY2RhMzA2YjIzMjFmNmQ2MmI1NWI2NDM0YWUxMWJkOWNlOTIyNmY2NSBsZWdhY3ktdHJ1bmsKKzI1NTM5IGUyMTk2YmEzNDMzMGZjZmQ5YTY4NjUyN2EyOGM3MmRlZjExMjhkYjUgbGVnYWN5LXRydW5rCisyNTU0MCBlZTMzYmJhZjMzODE5MzRmNmI3ZmFiNzgxMmFkYzY3YTk1OGQ5M2RiIGxlZ2FjeS10cnVuaworMjU1NDEgNmZhNTZjNDNhMWJhZTQ4YzhhMDE5Yzk1YThmMDE4ZmE3ODAxNTZjNSBsZWdhY3ktdHJ1bmsKKzI1NTQyIGRhZjA0ZGIxYTY5OThkNzkyYzA0NWQ2YmU5YzBmOWFhNzdhYjI2NmYgcmVsZWFzZTIyLW1haW50CisyNTU0MyAyNjYzMzRhNWM0Y2EyNmM2NWU2MzIzZjk2ZGNkYTI2ZTIxNDMzYmFlIHJlbGVhc2UyMi1tYWludAorMjU1NDQgZDJhNzZmN2RkNjUxMDY2ZDY3N2JkNGU1MDAzYzUyMmZkMWUwODM3YiByZWxlYXNlMjItbWFpbnQKKzI1NTQ1IGY4YTlkYjY3ZmE1YjQ1ZTlkZWJiYjE1M2I3MDI3MzM2MTM2NzNlODcgcmVsZWFzZTIyLW1haW50CisyNTU0NiA1MzRlNzkwNTliZTEwMDg3Njg0ZGY5MDY2MDFlZTgyNThiNjQ2OWYyIGxlZ2FjeS10cnVuaworMjU1NDcgODFhOGRiMTVmYjk4OGJlYTQwOTM0ZGVkNGZhZTIxM2Y5MzE3OTRlZCByZWxlYXNlMjItbWFpbnQKKzI1NTQ4IGFjMTEzMWY3M2QxZmQ3MDlkYjc2ODgzYWY5MzQzNmJhOGUxNWY0ZjkgbGVnYWN5LXRydW5rCisyNTU0OSBjNjI4OWVjOGRhMGE3OWNjMThkZWRlY2Q5ZDg3ZWI2Y2RlNzhmODU2IGxlZ2FjeS10cnVuaworMjU1NTAgMmM1ZjgwMzcxMjYxZWRmYTlkZmYzYTI0ZWJhY2RkOTMzMDEyMGRmYSBsZWdhY3ktdHJ1bmsKKzI1NTUxIGM2YTY2MGY4OWZmZTg1NjhlZmQ5ZDBiMjE4ZGY1ODAwNDg0MWY4ODcgbGVnYWN5LXRydW5rCisyNTU1MiAxY2EyZWI2NTBlMTM3N2I1NWY3YzlhNzQwZjQyMGE5YzVhNTAyMGQ2IGxlZ2FjeS10cnVuaworMjU1NTMgOTVlODY0MzA5ODJiZTdkOTIwMDY3ZjIzOWQwYzIxY2UwZjU3OTg3MSBsZWdhY3ktdHJ1bmsKKzI1NTU0IGNiNGVkZDEwODc3ZDkxN2M4ZWRmN2FmMzQ3ZGQ1NGVjNWY3NTRlMWMgbGVnYWN5LXRydW5rCisyNTU1NSAwNDRmOWU3MTMyMGY2MmNlYzYwMjJkMzVmOWMzYjkwZTZhMDM1MjBhIGxlZ2FjeS10cnVuaworMjU1NTYgOThhM2ZhNWY2ODdjYWFlZmMxNTlmZDFlNTZhNjFiZDlkOTAyZTRkMSBsZWdhY3ktdHJ1bmsKKzI1NTU3IGZjNmRjMmVhMjVjZjc3YjhjMDcwM2Y2NjIxYjg4NmE2MDQwMWIyZGUgbGVnYWN5LXRydW5rCisyNTU1OCAyNGJhNjkzZTljNzM5ZTY3NmVmMjI0NTAwODNhOTFkYjk2MDFkYThmIGxlZ2FjeS10cnVuaworMjU1NTkgMDFkNDU4MjY5NzUwMmQ2NTAxYWJiZTc2MDk0NThhMWYxOTgwMzgyNyBsZWdhY3ktdHJ1bmsKKzI1NTYwIGQ3ZjNmODNiOTY1ODhjMmMwZTUwZmQ1YjcyYTRhOWQ4YzQ4NDlmMjMgbGVnYWN5LXRydW5rCisyNTU2MSAyNmUzYjU2M2UyNjEzMmRhYjhiMTRmZTc0OTFjMTg2ZWNlMjFjMjA4IHJlbGVhc2UyMi1tYWludAorMjU1NjIgNGViYWNhZWUzMDA5ZTI2N2RkZmRiNTllNzBlMGIyMTU1YmY2N2U5OSByZWxlYXNlMjEtbWFpbnQKKzI1NTYzIGRhYjA1YWIwMzQ3YjkzYjcxN2UwNjAyYjZhOTI5MTg1MWFhYTJjY2IgbGVnYWN5LXRydW5rCisyNTU2NCBhZDgxZjhmYjRlZTQ3NTE0MzhhNzUxMmVkMGNmODM2MGJhMzU4YjAyIGxlZ2FjeS10cnVuaworMjU1NjUgNWYyYzBmNmYwYWY3MzQ5Yzc1MWQwZDgzNTIxMGRhNjNlZDZmODYyNyBsZWdhY3ktdHJ1bmsKKzI1NTY2IDQwOWFjMGY2ODk4ZjQxYjJkNzI0NmE3MDQ4YTFhNjY3OTliYzczMjAgbGVnYWN5LXRydW5rCisyNTU2NyA5MjhjMTI4MmU1ZTJiNWNmYzhiZjdhMzNkNmNhNDhmNzEyYjQyNTk5IGxlZ2FjeS10cnVuaworMjU1NjggZjQ0ODczNTBjNTM3ODdhOGY0YmM0OWUyOTJhYWRhM2MzZDI0MjMxMCBsZWdhY3ktdHJ1bmsKKzI1NTY5IGI4OThjMGZlYjc1NGU0ODlmYzQzNTNmZDlmYTI5ZWZjNmU3MTVlYzUgbGVnYWN5LXRydW5rCisyNTU3MCBmMGFlMzc2MjUxODk1YzgwYmIxOWNiMDlkNjMzYWU2NTlmNDQxZGQyIGxlZ2FjeS10cnVuaworMjU1NzEgN2ZlZjM1NmRhZDc1ZjkxYmI3YzI0NmI2MzVmZmViNjNmODc3NDk4NyBsZWdhY3ktdHJ1bmsKKzI1NTcyIDBiMDhlZWZiNmZjMDc3ZWRkZTZkNzU3OGUyZWRlZTQ1MjdmNzUwOWMgbGVnYWN5LXRydW5rCisyNTU3MyAwZGMxMGQ1NTcwNjIzOGQ0NzdmOWNhMWZlYThjNjNlNjlmYTlkOTlhIGxlZ2FjeS10cnVuaworMjU1NzQgMjM5MjY5Yzk2NTE0NDNkZDJkYWJiMjU4YjA2ODA2NTkzNGFiMWQ2YyByZWxlYXNlMjItbWFpbnQKKzI1NTc1IDIzNjA2YjQ5YWY3NDMwNDY0M2E5MDdhZTA2ZDUwZTU1N2U5ODMyOWIgcmVsZWFzZTIyLW1haW50CisyNTU3NiAyNmJlYmYyMDg5MWU3NTliYjIwYTA0MWRhM2ZjNGM5Y2NjZGM3MWM1IGxlZ2FjeS10cnVuaworMjU1NzcgZTI0YmEwNGQwMWIwOGU3MWNmZTY2ZjNhMmE5YzgzYTY1YTM0NTk4ZiBsZWdhY3ktdHJ1bmsKKzI1NTc4IDkwNzgzMmVlNzE3MzcxMzk0M2MwMzJjOGM4YjIwYzg3OTQ5NjJjZDYgbGVnYWN5LXRydW5rCisyNTU3OSA2NGM3MzFkMTgwZTkxZTFkZDI2Nzg0MTk5ZTI2ZmQwNmI3ZDg4YzRjIGxlZ2FjeS10cnVuaworMjU1ODAgZGE1MThmYzc4MDY2NzQzMjY4NDdjNmY5ODg1ODM0NmNiYjk3OTNjNSBsZWdhY3ktdHJ1bmsKKzI1NTgxIDU0NDBlNGIxN2FmZmIyZWUzYTJhMjM3ODRhMjhkMDRmZjZlMzY1NmIgcmVsZWFzZTIyLW1haW50CisyNTU4MiA3OGJkZmJiNmU1OWUxMzVkZTliYTExYjc1YWEyYWMwMmI2NDAyODdiIHJlbGVhc2UyMi1tYWludAorMjU1ODMgODEyNTViNWJlMjE5ZmEzNjFmMzk3ZTU1YjBkY2UwNGM3MGFmMzk1OSByZWxlYXNlMjItbWFpbnQKKzI1NTg0IGQ2ZDEyZTIxZDQ0ZjUyNzBiNmQ1YTI5OWFkMjg4Zjk3ZmY5ZTAyN2IgcmVsZWFzZTIyLW1haW50CisyNTU4NSBlNjFkMjk4MmZjMTM1ZDQxNWM3ZTM3ZDg0ZWFiMTQzNzZkYmI3MGZlIHJlbGVhc2UyMi1tYWludAorMjU1ODYgMDFhNTVjM2Q1MDVjMGQ3YWFkNzk1Yjc4ODVkOGMxNTIwZTEzMjcwNiByZWxlYXNlMjItbWFpbnQKKzI1NTg3IGE3NjJlZGIwNDYxYTdiZWM0NzBhMGNjYWFhNjc5NDA4NjdhYTE1NTUgcmVsZWFzZTIyLW1haW50CisyNTU4OCA2N2E1ZTI1ZGM4OGJjNzRlYjFjOTBmMTBmZGUwMWM4ZDhkMDJkYzFhIHJlbGVhc2UyMi1tYWludAorMjU1ODkgN2Y0ZDE1ZDg3OGNjZDYwNTJjMTJjZjA4MTFlZTVhNzI4NjEyNWE1NCByZWxlYXNlMjItbWFpbnQKKzI1NTkwIDJmNDhhZTVjOGE5NDcwZDE5ZDI0YmNiYWMwMWNiNDZmNGE4MDUxNWYgcmVsZWFzZTIyLW1haW50CisyNTU5MSA0YjZlZGE3ZDBjOGY1NGNlY2QxYThkODBkYTM5NjBkMzYyNmY3NDI4IHJlbGVhc2UyMi1tYWludAorMjU1OTIgOTk2OGQ4ZGRkZDUzZGQ2Mjk2Y2NjMWU3MDFjOTVkMjYzNGNhZWE3YSByZWxlYXNlMjItbWFpbnQKKzI1NTkzIGZjNDA1NmI5Y2YxOGMxNzE2OGE3NmUwOTVkZTM2MDM4YWFkMTJmODggcmVsZWFzZTIyLW1haW50CisyNTU5NCA0NTJjYzBmM2FlM2NhOGY3OWYzYTEwNTcxODc0ZjcwNmRjYjA5ZDUxIHJlbGVhc2UyMi1tYWludAorMjU1OTUgNjQxZjI2M2Y0ZjQ0YmI4ZTQ5NGRlZGIwNDA4NDhkNGEwMjI4ZmVlOSByZWxlYXNlMjItbWFpbnQKKzI1NTk2IDE4MmYwMTczYThlZWY1YmMxNTUyYTg4NjYwOTQ3ZTU3N2QzZmI0NDQgbGVnYWN5LXRydW5rCisyNTU5NyAyMmZjOGI4MjJkNDBkMmIwNjExZTEzOTBlNzg0ODIyZTBiOTBiMDk4IGxlZ2FjeS10cnVuaworMjU1OTggMjk4ODc5YTlmOWY0YmI0NWJmMDBmZDViODdiNTNhZGUyN2FjY2M4MyBsZWdhY3ktdHJ1bmsKKzI1NTk5IDUwYzY2NjZmYzQ1NjcwMzlhNjgwOGYzODAwNGM2ZjNiNzA3MmEzZTQgbGVnYWN5LXRydW5rCisyNTYwMCA0MjdlMzMxYjQxYTJlMWNlNDI5NGMyZGM3ZmVjNzczODg0MjkzMjFlIHJlbGVhc2UyMi1tYWludAorMjU2MDEgYWU1NzhjOGM2Y2VkMzgwNzg2NTRjZTFlYjMzMGUzMmRkZmI3N2YxZSBsZWdhY3ktdHJ1bmsKKzI1NjAyIGU1NGY1YzUwZWYwOWI5ZGFlYWYxNmVmZDNjZmIwYzBiOGM5NmI2ZGMgbGVnYWN5LXRydW5rCisyNTYwMyAyMzZhZTUzZDY0NjYyMjQ2MzExN2JlOTc1MDRlN2Q3YWM2MDQzMWIxIGxlZ2FjeS10cnVuaworMjU2MDQgNzU4NGI2ZjFhZmRlNDI0ZGQ0MDUyZTdlNmExNjVlMGZhN2ZjZjFjYSBsZWdhY3ktdHJ1bmsKKzI1NjA1IDE2M2RlNzFmMTk0MjkzOGFjMmE1Y2Y5MWM5MDBkMTZlYmU5YjQ0MWIgbGVnYWN5LXRydW5rCisyNTYwNiA2YTI3OWUxNzJkMjIzZTZmZjI5ZGUxYjAzMjQ4OTBlOWZmYzI5YTExIHJlbGVhc2UyMi1tYWludAorMjU2MDcgNzJmZGE2NGIyYTJlOGNkYjRjYzM4MGMzN2FjZjI0YThiYWM3YzcwNiBsZWdhY3ktdHJ1bmsKKzI1NjA4IGU4ZTQ2NWU2ZDQ1ZjlmMDkzMWExMzM2N2JhMWFkYzhiNDY3OTliZTMgbGVnYWN5LXRydW5rCisyNTYwOSAyN2EwZmIwMTk1OTkxMjRiYTM2MTk1NDY1NjM3NGVjMTQ5MThkNGQwIGxlZ2FjeS10cnVuaworMjU2MTAgYWJjZWQ1NTgxYzE4NTBhNGFjMjMxMWY5OThiNzIzNWI0OGM0YzgyNCBsZWdhY3ktdHJ1bmsKKzI1NjExIDFlN2NjOGU0YmFhYjk1YTRhYjY3NmMyZDA5MGI0YmNlNGU2OTA4OGYgcmVsZWFzZTIyLW1haW50CisyNTYxMiAyNzJmOTY1Mzg1YzcxM2M3OGMzMGZhOGZkMjVkZjllYTE1Y2NjMWYzIHJlbGVhc2UyMS1tYWludAorMjU2MTMgZWRhYmFkMDI1ZWYxYTViNWU1MTcyYTU5MzA1MWE3MDBmZmE5OWRiNSBsZWdhY3ktdHJ1bmsKKzI1NjE0IDlmMTE5MTMyZmZiYzQ2M2U5NzkwZGE1ZjliNGZlNDQ1Y2Y1MmJkMzUgcmVsZWFzZTIxLW1haW50CisyNTYxNCA3MGVkZDI5MmM3NTdhZjY4Y2EyMjU5MGNlZThjN2QxMzE5Yzk5ZWU0IHJlbGVhc2UyMi1tYWludAorMjU2MTUgMzdiNjk4MTVhZjIyZmQ1NmY2M2RmZjRmODRiNTgyM2FlY2Y4OTM1NiBsZWdhY3ktdHJ1bmsKKzI1NjE2IDkzZGI3MjNkNWU0Nzg5MTIwYTE4MzIyNzQxYjNmYzE5MWU2MDI5YmQgbGVnYWN5LXRydW5rCisyNTYxNyAwOTM5NDJiYWUxYTYzOWFmMDM4MTFhNTQ4YjUwYTVhNTBjOTFiNzZiIHJlbGVhc2UyMi1tYWludAorMjU2MTggNTRiNjM2MTYwYWNkZmU2NDZkNTIyYWNhYmYyYTEwYzhmY2I1M2Y4YiBsZWdhY3ktdHJ1bmsKKzI1NjE5IGFhM2JmNTI1ZjQ4MmNiOThkNTc3MjdhNDBkNTJlMDQzMTJhMTk0Y2QgbGVnYWN5LXRydW5rCisyNTYyMCAyMTZjY2RhMjg0ZDg1ODVlNWJmZGMyNmU1YjQ2MjMxNzM4NTM3YjM2IGxlZ2FjeS10cnVuaworMjU2MjEgMDc1MDVhNDUxMDE3NmJmMzgwNGJkMzMxZTg0Y2E4N2M5NjlmMTljMCBsZWdhY3ktdHJ1bmsKKzI1NjIyIGQzMDc5N2U1Y2MxYWI4NTUzNTkzODk3MTQyZTEyMGQzNzdkZGMwM2MgcmVsZWFzZTIyLW1haW50CisyNTYyMyA2YzM0Y2QzYTk4YTkzZTAyOGZlZTdlZDlkMmNiMjVhZGQ2M2Q5MjM5IHJlbGVhc2UyMS1tYWludAorMjU2MjQgYWZmMjE0NTNiZWZmZjFhMzMxYTI1Zjg2MDU4MTgzY2I4YTAxZjc3MSBsZWdhY3ktdHJ1bmsKKzI1NjI1IDE3ZThhM2M5MzEwY2MzOTAyZjRjN2E2ZThlZDUwYmE2NjJhOWViOGIgbGVnYWN5LXRydW5rCisyNTYyNiA4ZTk5ZDU2ODE5ODQ2ZWY0MDg1ZjUzODU4Y2YyNGRkMWY4NzRkMjc1IHJlbGVhc2UyMi1tYWludAorMjU2MjcgMTUwYTJhOWM1NWI4N2NhZWYyNDczMTY2OGVhZGQ1YTdhOTZlMjdhYiBsZWdhY3ktdHJ1bmsKKzI1NjI4IDY0ODVkMWJhNzM1Y2M1ZWM1YTY4MzAwMzRmNmU5ZThmMTg0OGM2M2UgcmVsZWFzZTIyLW1haW50CisyNTYyOSBmOWE1YThmYzMxNzc5NmUwMWM2MGM4ZDMzZjNmYmIzNmFmMzYwMzU1IHJlbGVhc2UyMS1tYWludAorMjU2MzAgMmE4YmYzZDBiZDg2NWViNzBjMTllNTJjODZhMTI5NGE2ZDM2YTcxNyByZWxlYXNlMjEtbWFpbnQKKzI1NjMxIDEwMDA3YWE3OGE1ZTk1NDYyOGQ5NTcyYjNlMDBmOWZiYWUyZDM1ZTkgbGVnYWN5LXRydW5rCisyNTYzMiA2OWFkMmExYWQ2ODllMTQ2MGYwMTllN2U3NDAzZGU0NzU1ODA3MjUxIHJlbGVhc2UyMi1tYWludAorMjU2MzMgMGJiMTdkM2I1MTk3ZDE2YjAyZDZjOGMxOWMwNTg1OTY0MjFlNDBiZSByZWxlYXNlMjItbWFpbnQKKzI1NjM0IDI4MzgxNjUyOWU3MjUwZmZlYzU0NDI3ODlhMmI2NDM2NDQ3MGZlOTcgcmVsZWFzZTIyLW1haW50CisyNTYzNSA3NjNkNWFlODllOWVkODdjMDRkMDlhZmQxODNlMmZmYjYwYjUyY2VjIGxlZ2FjeS10cnVuaworMjU2MzYgMTdjYTI5MDdkMTM1OWQxMzIyZTg5M2UwMzcyNWRiNmVhZWZlMDI5MSBsZWdhY3ktdHJ1bmsKKzI1NjM3IDNjNjg1YzAzNzc5NGZhODJkZDgxODRmMzBhZGNjYzg3N2M4ZmQzODkgcmVsZWFzZTIyLW1haW50CisyNTYzOCBmMmRhMjU4YWFjMjA5Njg1NjZiZTRhNjQ4YjY3NTY1NGY3NDYwZmFhIHJlbGVhc2UyMi1tYWludAorMjU2MzkgOTg5MTk1OGZjNGIyOTZiNzExNDJjZmRhMzIxZDg2ZGFmZTBlMGMxNyByZWxlYXNlMjItbWFpbnQKKzI1NjQwIGFhNDRkMzc5OWI0N2JiYjM1MmFjNmMxMmU4Y2M4MTkzOWNlMWM1YTcgcmVsZWFzZTIyLW1haW50CisyNTY0MSA2ZDRlMDVkMjU3NTk2ZjRlNjM1OGUxMDZiOWUwM2FiYjUyZjE0NGIxIGxlZ2FjeS10cnVuaworMjU2NDIgMjJlMGRhZGE1NmQ3Yjg2NGJiM2VkNTI0OGZhN2M1ZjYwN2JhNjkxNCByZWxlYXNlMjItbWFpbnQKKzI1NjQzIDZhMzQ4YTM5MDBjZGY4MzYwNTAwYmYyNTU0ZmU1MzI4MjQzYzFjNmIgbGVnYWN5LXRydW5rCisyNTY0NCBmMDM0NmQ5MzA3NzAxNmUyYzZhMTMxN2IwMjJiZTg2MDdlY2E4YjM4IGxlZ2FjeS10cnVuaworMjU2NDUgNWFkZTdlODIwNGU1MjAyZjYxMTUxNDc1ZWVhMWQ5MzRjNDdlM2JmZSBsZWdhY3ktdHJ1bmsKKzI1NjQ2IDE2MGUzMzVmYmU2ZmRkMmI0MWRlZDE2MzYyOWM1ZjNhZTM2MDY5NzMgbGVnYWN5LXRydW5rCisyNTY0NyA1NmY0ZGZjY2E5ZDgxZmMxNTJiNTI0ZGY4OWE4NzY4NWY5ZmUxNDYzIGxlZ2FjeS10cnVuaworMjU2NDggY2I2Yzg1ZDgzOTFmNWVkNTE3MjUyN2M0YzgwMjBjOTJiMjA4NTU4MSByZWxlYXNlMjItbWFpbnQKKzI1NjQ5IGU0ZTU0ZmM1ZmIzZDM5NTI4OGFhMWQwNGQ2NjZkMGZkOGZkMmZiMzggbGVnYWN5LXRydW5rCisyNTY1MCA5MDc4ZjI5NzZiY2NhM2MwNDRlODhkZGE1ZjY2M2ExNGUyNDM0ZTI1IGxlZ2FjeS10cnVuaworMjU2NTEgMTg3MzgzM2M2MTZkZjQzM2IxN2RhYzFmOTc2YjMzOTliMjc4ZWIzYiBsZWdhY3ktdHJ1bmsKKzI1NjUyIGE3OTU4OTcxZGUxYzcyZGMzY2VlYThjNDk0ZjYxODM3MTY0N2VlOTkgbGVnYWN5LXRydW5rCisyNTY1MyAxMjU3N2FlOTU5NTYyMzI2NmNjOTlmZWU4OGMyODIwZDQ1MDAxODI5IGxlZ2FjeS10cnVuaworMjU2NTQgNDllZGJlZTlkYWUyMjI0OGM1ZDMxYzg2NDdhMzIwOWUyNzQ2N2ZlNCBsZWdhY3ktdHJ1bmsKKzI1NjU1IDI0YWY4NDIwMzBhMGI0Nzg3ODYzYTQ5OWZhY2I5OGZkNWI0YzA2ZTYgcmVsZWFzZTIyLW1haW50CisyNTY1NiBjNmMxYTVmYmI2YzFmM2VkZWVmOWY3N2NkZjY5YWE1MzBiNDJiZDFhIHJlbGVhc2UyMi1tYWludAorMjU2NTcgM2M3NGExYjEyODdhZmFjY2UyYjg3YTdhODkwNjgzMTg4MGRmMWE3OSByZWxlYXNlMjItbWFpbnQKKzI1NjU4IDlhMDkxZDcyMTM2YWMwNWYxNWU4NDc2MmI2ODE5Nzc3N2FmN2Q3MTkgcmVsZWFzZTIyLW1haW50CisyNTY1OSA1NDNiMmE0ODQ2N2I2NGNkYmUzNjQ2NjkyNTAyMTg4YWMyOTJlNzQ1IHJlbGVhc2UyMi1tYWludAorMjU2NjAgNjMzYTk2YTY1MDA5MTQ4ZWNlOTNlYzhhZjg0MzM5NzJjZjVmMDZhNyByZWxlYXNlMjItbWFpbnQKKzI1NjYxIDQxYjUxNTNkNzA1ZTVmN2MwYTY4MWJmNTUxZWIyMzBjMzYxOGMxYjEgcmVsZWFzZTIyLW1haW50CisyNTY2MiA1NGJjYzVlYzNhNTEyNTU3MmQwOTAxNWJhMzkwNTMyMmRlNDFhYzM3IHJlbGVhc2UyMi1tYWludAorMjU2NjMgYTM0NjBjYjIzZjE5NDUxNTQ4N2VkMjg5NDIyYzI1OWJmMGI1OTE0YyByZWxlYXNlMjItbWFpbnQKKzI1NjY0IGEwY2M1MjczNWU2ZTQ2OGQ5NGZmMjBlZjY0NDYxOTRjYzI3OTNhZjUgbGVnYWN5LXRydW5rCisyNTY2NSBjNDAzNjMzMzU1ODU1MTk2NjY4YWY1NzM3MDZkYjJjZmZkOGFiN2E4IGxlZ2FjeS10cnVuaworMjU2NjYgOWM0MzViMWI1OWE1NmMwNDRhZmM5ZjA3YzAyNDY5YTdlYjQzNjdhZCBsZWdhY3ktdHJ1bmsKKzI1NjY3IGVhM2IxODc3NDZmN2Q1MzllN2MyMjM4MzEzYjg2MTU4N2U5ZmE0YmIgbGVnYWN5LXRydW5rCisyNTY2OCAwODlhYjViYTk0NjZiNDZlZGE2MDMyMzkyZTI2NjFkOWE0Y2ZlZWRkIGxlZ2FjeS10cnVuaworMjU2NjkgOTllMWZlYzI2YjQwNWFiYjQ0YjYyMTBkYTNkY2IwNTFjMGFlZTQ5MiBsZWdhY3ktdHJ1bmsKKzI1NjcwIGI1NWQ3YmMwNWVjODg2NzZiMmYxMDhmNDg5NjVlMzM2MDRiMjcyMjMgcmVsZWFzZTIyLW1haW50CisyNTY3MSAxMzRjYjQxODY5NDY2YWJjZjQyZjgwOGViNWJhMWFkYzdkZmUwZjRjIGxlZ2FjeS10cnVuaworMjU2NzIgMDQ5NzM5Y2EwYzEzNWQxYTUxYzFlNTEyOTI4OWJhOTk1ZGY0OTI2YiByZWxlYXNlMjItbWFpbnQKKzI1NjczIDM1YzliZTY5Mzg4OGUwMGJkYWY4NTBhYTBmZDhiMGQ5ODU2MDk3YWYgbGVnYWN5LXRydW5rCisyNTY3NCAxOWQxZDM1MDIwYmQ0MzdkM2JkYjQ2MTI0MGNlZjBkMjA2YTRkMzhhIGxlZ2FjeS10cnVuaworMjU2NzUgM2Y2ZGRlYWM0ODU2YjUyODhmZTA3MDNmMmM1NGYxYTA5N2Q3ZGJiYiByZWxlYXNlMjItbWFpbnQKKzI1Njc2IGE0MTVjYTNlODkwMzg2MDE0Yjc4MDEyZTVlMmU4NGI4NmNmOWU2N2UgcmVsZWFzZTIyLW1haW50CisyNTY3NyAwNDA4ZWNkODRhYTJhMjYwNDlmMmU5MWRkNGY2YmU2NmZlNWMzMjUzIGxlZ2FjeS10cnVuaworMjU2NzggY2M3ODhiM2IyMWI2MjI0YjM2ZDc2OTk1YjM4ZWNlZGRmZGZmNzI0NCByZWxlYXNlMjItbWFpbnQKKzI1Njc5IGRjODBjZTExZmFlMzkwOWEzMTQxNzU1ODBiNGIzMjRhMGI0YTMxZjggbGVnYWN5LXRydW5rCisyNTY4MCA1ZjRmZmJmZTZiZTY4MWI1Zjk2MGI2YjE5ZjQzOTBmZjAzYWJhNmI5IGxlZ2FjeS10cnVuaworMjU2ODEgYWI3NGZmODBmOWQwYWM1M2IyMzIyY2Y1ZmJlNjM4OTY5ZTU0MGU2ZSBsZWdhY3ktdHJ1bmsKKzI1NjgyIGRjNjA1NGU1YjY0MmNkM2MzZjFmNjE3ZDdkNDMyOTBlMjRjMmQwZjAgcmVsZWFzZTIyLW1haW50CisyNTY4MyAwOTZiNzUxMjBlNzJiNDRmZTRhMzJkZTI5M2NmOGNiMjAwZWE2YjIxIHJlbGVhc2UyMi1tYWludAorMjU2ODQgNWE3NzhhZTE4NTEyMzg5MWNlZWFhMGQ2MTlhYzRhMmZhNWY4N2NiMyBsZWdhY3ktdHJ1bmsKKzI1Njg1IGFjOTc2ZDM2NzA4ZDNkNzgxYzBmN2E2MDY2OGM3MTRlZjQ4MDZiYmIgcmVsZWFzZTIxLW1haW50CisyNTY4NiAzMWQ5ZDExYTI5NGNhOTdkNWJjZmI5MWNmZjllYzYwYjI0M2MxZGRkIHJlbGVhc2UyMi1tYWludAorMjU2ODcgZGZmMGE0NGIyMzY4ZTQxNGE0NDU2OGVhZjcyYTEzNWZmOTYwYjRiMiBsZWdhY3ktdHJ1bmsKKzI1Njg4IDE2ZjBkZWZhNDVjMjBkZjI2MDQxNjBhZjM4MTNjYzI5MTAyMmFhNjkgcmVsZWFzZTIyLW1haW50CisyNTY4OSAzOTkyNTQ0ZGMxNDVmYmViZmIxMzczNTAyODY2Y2M0OTQ4ODA5YzZiIHJlbGVhc2UyMS1tYWludAorMjU2OTAgNmQwOGEyOTU1YmI2MjUxODcyNzkyMWYxNDA4ODEyZWU3NWQ4MzA3MCBsZWdhY3ktdHJ1bmsKKzI1NjkxIGE2MTkzYTg3ZjUwMGUyNzc3YjNmMTk2ODM4ZTYwMmI2YmY3ZmI4NTQgcmVsZWFzZTIyLW1haW50CisyNTY5MiAxYTc1MGZiOTNiMTY5MzYxY2JiMGVmOGQwNDYxZjUwNjBmMmU5NmZlIHJlbGVhc2UyMi1tYWludAorMjU2OTMgZjJlYjk1ZmI0NTI5ZTI3Njk1NmYwNmFkZWFhN2IzMjJiMTU0MDg1ZiByZWxlYXNlMjItbWFpbnQKKzI1Njk0IDI4ZTM3OTA1YmVlNDU4MjkzNDg1OTczYmIwYzE3NGNkMjg5OGUzOGQgcmVsZWFzZTIyLW1haW50CisyNTY5NSA3OTg1NmFkNzQ5YWI3ZGM3Mzk4NmE5MzEyMzIwNmI1MWNjNzVkM2YyIHJlbGVhc2UyMi1tYWludAorMjU2OTYgZGViYjAwNWYxNjczYTAzOTJmNzNkMDc4OTkwZWI4MDFhMWQyMTM2MCByZWxlYXNlMjItbWFpbnQKKzI1Njk3IDBmZDM4MzFjZjJhMDc1N2EzZjYzNzA3NWRhNjI0ZjhjMjlmZjAyZGUgcmVsZWFzZTIyLW1haW50CisyNTY5OCAwMjllNGNiZDIzMTI5OWIxYmQxY2NhMmFhZjZmZGQ0NGVlMTM0Y2UyIHJlbGVhc2UyMi1tYWludAorMjU2OTkgYzkwMWQxNThhZDY4OTM2ZTljMTE1MTZmMjNhZDI4OGExM2IwNmJkOSByZWxlYXNlMjItbWFpbnQKKzI1NzAwIGEzNGY5MTk1ZjYxMWU3M2Y2MzI1ZmVmNGRhM2IwMTE4MDcyMDgwOTUgcmVsZWFzZTIyLW1haW50CisyNTcwMSA2YzNlMzIzNTdkOTEwOGMzMjc2MTZhYmFhMmUxYmJkYWYzNmFiYzlhIGxlZ2FjeS10cnVuaworMjU3MDIgN2VjYzQ5MTE3ZDdlODhiNjcyNTBmNGMzNDM3ZjI2M2I3ZjdkOTliMSByZWxlYXNlMjItbWFpbnQKKzI1NzAzIDI1NDhlMmYzMjNmYTdlOWNlM2YwODY0YjM3MjRjZTA0OTBkNzNjYmYgbGVnYWN5LXRydW5rCisyNTcwNCAxMmQyMDRkOTNhZjM2NTM0NTJmY2YxYzE2ODJjYzZhNDUyOTc0NjVmIHJlbGVhc2UyMi1tYWludAorMjU3MDUgNjQxZmI0YjQ3MjBlNzY5Y2ViODFmY2Q0NjIxYTU3NWI4MzAxMmM3OCByZWxlYXNlMjItbWFpbnQKKzI1NzA2IGY5NzZmYWEzMzBlYTE2N2Q4MmFkNWVmYmFkZDg0NTQ4ZmEyZTE5ODIgcmVsZWFzZTIyLW1haW50CisyNTcwNyAxZjczMjUxYzYyNWFjNjIyMDlkZjY2YzYyOThhZjE4NjhiYjM0Y2FjIGxlZ2FjeS10cnVuaworMjU3MDggMjdmMzZmNGJmNTI1OGJlYzQ1MDMzMzE0ZmJmZDUwODI4MjM0ZTBlNCBsZWdhY3ktdHJ1bmsKKzI1NzA5IGI4NzllNjg1MWJlM2I5OGYxYjFjMGE1MTBjOTJhMjVjYjI3NmViNDggbGVnYWN5LXRydW5rCisyNTcxMCA1MWFhOWViMjRkODFmNjI3YjBkOWNmMjdiN2Y1M2MzYmVlYzYyZjc1IHJlbGVhc2UyMi1tYWludAorMjU3MTEgZmI5YTAwODIxYzBkNTBkMzNmODBkYzZkYzEyYmNmNGI3NDM4ZDQ2YSByZWxlYXNlMjItbWFpbnQKKzI1NzEyIDRjZTUxN2IzZTMwMWY2Y2M1MmQ2NGRhODhkMTFjYTFjOWJjMThlOTYgcmVsZWFzZTIyLW1haW50CisyNTcxMyBhMjczM2ZlZmZiMzY2OTdhMWMxNGRiYjVhZjg2NDljOTA3Mjk1Yjc4IHJlbGVhc2UyMi1tYWludAorMjU3MTQgMWJiNGQyYmFiYzE0NWM2ZjJiNWU3YWMzMGMwZjI4YmMyMzcxNTkyOCByZWxlYXNlMjItbWFpbnQKKzI1NzE1IDVhOWRhZGE3Y2JhYzM3ZDU1ZDcyNDI2ODkwYTU1YjBjMDNhYjQzMWEgcmVsZWFzZTIyLW1haW50CisyNTcxNiBkY2E0YTdjMzZlYjk5Y2M5YTViNDNlOGJhNjM5YzAzOGJhMTA3ZGVlIHJlbGVhc2UyMi1tYWludAorMjU3MTcgMzUxM2E5ZDA5MGE5YTk1ZTNmZTRjZDIxNWNlMzYyODYwZjdiYWEwMyByZWxlYXNlMjItbWFpbnQKKzI1NzE4IDkyZWJlNDlkMjJjNTNiZDE1OGE5Y2Y2MTQ4ODhlMGU5YWNjMzNiNWIgcmVsZWFzZTIyLW1haW50CisyNTcxOSA4NGYyYzc3ODNkMzEwMTY1YjdiZmQ4NGY4MDg2MTVkYjU3NjI4ZDJhIHJlbGVhc2UyMi1tYWludAorMjU3MjAgZGQxN2FhZGUzYmViOGE1NTI0NWVmYmE2N2U4YmJiMzdmNDEwMTU3ZiBsZWdhY3ktdHJ1bmsKKzI1NzIxIGRmOTc5YmRkNmFlZmQyYmVkYjI0NTM3MDA4ODA0MjIyZWZjODU0ZmMgbGVnYWN5LXRydW5rCisyNTcyMiBjOGE2ZWEwMGE5ZTFhZGNiYjE5YTYyYzAxZWNlZDA0MjUxYmYwYjI3IGxlZ2FjeS10cnVuaworMjU3MjMgMTdkNTYxMjQzZmY4MTJkZDEyYWY2ZWQ4MDU3NWJhYWNkZDU2MmVmNyBsZWdhY3ktdHJ1bmsKKzI1NzI0IDhlZDY0N2QzMWY0NGVmNGZhOTViMTVjNmZlMTIzNTg0MmJlMDBjMTQgbGVnYWN5LXRydW5rCisyNTcyNSA2YWM0MTUwYzRlODg0MWEyOWIyMWI2Y2EyNjZmM2JlZjg5MTlhMjk3IGxlZ2FjeS10cnVuaworMjU3MjYgMzRjYmVmZDJjM2ZlOTY2NzY1NTg1NzAwNTE3ZTQxOGY3YzhjNTk0MyBsZWdhY3ktdHJ1bmsKKzI1NzI3IGM4NTRiNmQwYjJjMDRiYjcxOTc3ZmMxYzRmMjQ4OTczZDQ0OGFiZTYgcmVsZWFzZTIyLW1haW50CisyNTcyOCAxMjFlMTk4ZjZkZGE5ZThiOTUzZDc0NmYwMTQyZTgyNDQxMmEwNGQzIGxlZ2FjeS10cnVuaworMjU3MjkgZjJiNmNjYzAwODA4NTE0Y2EzNGMxYmJlZDM1Mzg5NDIwYjc1N2YyOCBsZWdhY3ktdHJ1bmsKKzI1NzMwIDcxNWQ2MzFlZWEyZjQyNjIzYWNmY2M4YWZmYjUxNDEyZDNhMDY4NTQgbGVnYWN5LXRydW5rCisyNTczMSA3ZjBkMzkwMTRlMmUxNWVhOWZiM2RhYTEwMGE5MjZjOTI0MmQ4MjcxIGxlZ2FjeS10cnVuaworMjU3MzIgYzIxMDU2MmUxNTU4MGM2MjY1MTdjZjJiOTJmYzY1NzVjNmEzMzRiZiBsZWdhY3ktdHJ1bmsKKzI1NzMzIGIzNTdkZjMwMWY1ZjI1NmYyZjM0YWQyOWYzMzg3YWI1MzA0Yjc1M2MgbGVnYWN5LXRydW5rCisyNTczNCAwNzFmNTAzZTVmNGY0YWVjMzUzYjRmOWQyOTkyYWNhM2EwNmJiNGE0IHJlbGVhc2UyMi1tYWludAorMjU3MzUgMGE5NmRhYjcwYTE1NzRlYjhhMGJkNWM0MWZiN2QwODdlNTc3ZmQ0NSByZWxlYXNlMjItbWFpbnQKKzI1NzM2IDI0MTc2OTQzMjRlZjA4ZDEzMGZmM2ZmYmVlOWJlYzhmMWI5Yzg0MjUgbGVnYWN5LXRydW5rCisyNTczNyA4NjAwZGJhNGY1OWQzZDI1MjE3MjJjZDdkYWExMjM3NzM4OWU1YjA5IHJlbGVhc2UyMi1tYWludAorMjU3MzggY2Y5ZjFiNmRiYTNiNDc4N2RlYjlmYjVlOWMxOWQ5YmNlYmJjZWJhMyByZWxlYXNlMjItbWFpbnQKKzI1NzM5IDc3NWRhNjE3OGU4NjU1N2YwMWMyN2FkYjYxNjJjMThlNjllZDdkOTkgcmVsZWFzZTIyLW1haW50CisyNTc0MCA0NjY4ZDFjOTI2Y2RmMDQ5Y2Y1OGNmOWE3YWE5M2EyZGEwODM3MDdjIHJlbGVhc2UyMi1tYWludAorMjU3NDEgNTU1MTJmZTFkNmYxNGE0MTcyZTU0ZTc1MTkzNzhlZDk0ZjNhYWM3ZiBsZWdhY3ktdHJ1bmsKKzI1NzQyIGI5MDA0YjgzNjk5NGQ5NDNjOTRjYTBkNGZjMzYzOGNiYTM0NDIzODAgcmVsZWFzZTIyLW1haW50CisyNTc0MyA2OGU3ZThkZmM1ZjUwMmJkNjNlNDcyZjBkNGE4NjQ5YzZiOWUxYTgxIHJlbGVhc2UyMi1tYWludAorMjU3NDQgMTY1ZTIwYWMwYWIxMmE3YzI5NDM5MzU5NDQ1ZDlmZWEwNzA2MjdiMSByZWxlYXNlMjItbWFpbnQKKzI1NzQ1IGQ1ZjYzZTdjYWIzMWJkNGI2NTNlZDYxYmZmMmMxMGZjNzgzMWJjNjIgbGVnYWN5LXRydW5rCisyNTc0NiA0MmU2YzNjZGMwOTU4Mjc2YzYyMjYwMTk4ODA1YjUxNzBhNWVlMzFkIGxlZ2FjeS10cnVuaworMjU3NDcgOGZjOWE1NzZmYmZmYzQxZGE1MTBjMGZjZjIxMTdjM2NkNTdkNDEyMyByZWxlYXNlMjItbWFpbnQKKzI1NzQ4IDA5Mjk4OTRjZGY5NWZjMDU2MWFmMjBiMTkzODdkMDU2OWI4Y2FlYTQgbGVnYWN5LXRydW5rCisyNTc0OSBiNTllOGE4ZGY1N2U4NjdiMmI1NThkOWJjMTMyZTE3NjQxMDk4NGUyIHJlbGVhc2UyMi1tYWludAorMjU3NTAgYzczYzZhNWI2YTgwNDRiZTM3OTVmZTAwNTA0Y2M1NmJhY2U5NzY5YSByZWxlYXNlMjItbWFpbnQKKzI1NzUxIGZkMDUwYWMxZTBjZTViMjhkZjdlYWVkYmEwOWRiZTM5YzA3YTJlNTAgbGVnYWN5LXRydW5rCisyNTc1MiBhZjg4NDFhYzI5ODlkYmFiZTJmZGNjNDY2NDQ4NmVlMDU1MjZlODYwIGxlZ2FjeS10cnVuaworMjU3NTMgMTFmNmY4YzFjZTczNGY5ODU3N2FhZWE5OGE1ZWU1OTFkNmNhODU2MyByZWxlYXNlMjItbWFpbnQKKzI1NzUzIDc2NTQzNGU3YWEwMTljMWJiODJmOTgxM2I4MDI1ODMwODY3Y2JkYzAgcmVsZWFzZTIyLW1haW50CisyNTc1NSBlODhkNWUyNjg3ZWU0NzMwNjZlZmI4MDM2Y2Q3OTM4Yjk0ZDkwZWQwIGxlZ2FjeS10cnVuaworMjU3NTYgYWI2NjE2ZTZjZWJmZDFmYjljNzhlMmM0OWFmMDhhNjA4OTRmY2NiZiBsZWdhY3ktdHJ1bmsKKzI1NzU3IDBjOGEzODVmYzhhMDEzMGExMGMzYzgwZmM4N2M1OWM2ODRmYzIzNzggbGVnYWN5LXRydW5rCisyNTc1OCA2NzA2YjgzZDFiZDE1YzM5YWI5NWRmNDM3OWY0YzM3OWRmYzg1YmJhIGxlZ2FjeS10cnVuaworMjU3NTkgMTMyYTA2NGRhNjU2ZTUyM2U2ZjA1Y2U4NWYxMzI3YzI0ZGI4MDAwZiBsZWdhY3ktdHJ1bmsKKzI1NzYwIDk2M2U4MTRlNjljY2Y1ZmU2MDJjNGJjMGMyNjRhMDU5ZjMxNzQ4YzkgbGVnYWN5LXRydW5rCisyNTc2MSA5ODRlYjk5NWZiOWVkYzNjNWNjMWU4ODIzMGRiMjY3MjFjYzhkZTZkIGxlZ2FjeS10cnVuaworMjU3NjIgNzE4NTdmMTYyMjMxMTU1NjMxYmYxNmIyMTU0OTViNTUzYTgwYjE2MyBsZWdhY3ktdHJ1bmsKKzI1NzYzIDhiZmNmNjgyNzI0ODJiYWI3MzEwNDc0YjIxMzI3OWY1MTk5ZmE4MDEgbGVnYWN5LXRydW5rCisyNTc2NCBhNmJiODAwMjhhY2YyZGNiYjY0MmNlZDc4YmI2MzQxY2JmZjg3ODRkIHJlbGVhc2UyMi1tYWludAorMjU3NjUgMzUxZjliNGQ4MGM1ZDI3MGM1YmQzZWY0YzVhZjkzMTFlNTBhNzRkMCBsZWdhY3ktdHJ1bmsKKzI1NzY2IGNlY2RhNGVjYzA5MGNhNjk4OGRiOGRkNjI3NzJiZTkxODE3YjJmNmQgbGVnYWN5LXRydW5rCisyNTc2NyBlMTUwMTA5ZDJiOWM2MGM5YWQ4MzhlMjc0YjAwNTQ4YzkwNWMwOGJlIHJlbGVhc2UyMi1tYWludAorMjU3NjggMDczZGI2OGEyYzJiYmVmZmExYjdjMTQ2N2ZlOWY4ZTNiMTA5YWFhMCByZWxlYXNlMjItbWFpbnQKKzI1NzY5IDBjOGVkMzg0MWE2NGY4ZjgyNmJmZDU3ODhiYjc5MDMwMTc0YTBjYmIgbGVnYWN5LXRydW5rCisyNTc3MCBhM2VlNzEzMjAzNmFmMDVkMTFlYzYyMmFiMWU2ODhjNmQ2MzE3OGVlIHJlbGVhc2UyMi1tYWludAorMjU3NzEgNGU4MjNiZjI1MTJjZWU4N2Y5NjkxNzYzNGMwOWUyZTZiMGIxZTRkYSByZWxlYXNlMjItbWFpbnQKKzI1NzcyIDQ1N2JmMTg0ZTdiYThiNTc4ZTJhZTRhMGFhNzdmNmVjZTcwZWY5ZTMgcmVsZWFzZTIyLW1haW50CisyNTc3MyA0YTQ1OTdiYzRlYTIyMjc4NDAxNGUwY2M0YTM4YWY2ZWRkMmQ1M2FlIHJlbGVhc2UyMi1tYWludAorMjU3NzQgMzZjNTJjZmJkMGI3NWU2MDU0ZDJlMGZlZTg4Njg1MjY5NDNiN2YyMSBsZWdhY3ktdHJ1bmsKKzI1Nzc1IDkyN2JkNGY2ZTM1YjJlZThlNjI1MmE3MDQ0Y2JhNmRiNDUzZDMwNDkgbGVnYWN5LXRydW5rCisyNTc3NiA1M2ExZjIxYjA0NTE0ODkzYzVkN2RlYzU1MThhOWExMmVhZWJkMzM5IGxlZ2FjeS10cnVuaworMjU3NzcgNzAxMzQwYzg3NzIzMTliYzZlNGU0MDliNDg4YTdmYWZjODdlYmYxMCBsZWdhY3ktdHJ1bmsKKzI1Nzc4IGM3OGZmYmZjMzZkOTM2NjBkZGZhOGM3ZDAxMTNmMDNlYjNiZDRjMTUgbGVnYWN5LXRydW5rCisyNTc3OSBkZjM1NjU2ZTdkOTk3MThmZjdhN2RkZWNmYWRkNTgyZGE0OGNhNjNhIGxlZ2FjeS10cnVuaworMjU3ODAgZTYyMTc0YzdkOGU1MTc2ODZmODg0ZWZkMDBiN2M5YWNjOTIwMDNkNSByZWxlYXNlMjItbWFpbnQKKzI1NzgxIGIxNDhlMThhZTc3YWIwMzkxYjI3MjliM2E4NWNhNGRjODM4MDU3YjEgbGVnYWN5LXRydW5rCisyNTc4MiA3YWZiYmUyODhhZjNkYTZjZDljOGI5ZGZhOWNlMWE2ZmJiNTVjYWFiIGxlZ2FjeS10cnVuaworMjU3ODMgZjY0YTExOTdhNTJhNDc4MTY1YmFhMzk4NTY0ZDc0NDhiY2M3NzllMSBsZWdhY3ktdHJ1bmsKKzI1Nzg0IDk4OTVlMmUzMzZjM2ExMGY2YmRjMWM3NWI4M2MwYWVjNWZlZjBkNzIgbGVnYWN5LXRydW5rCisyNTc4NSBiNTIzYTQ3MGEwY2U5OGJlOTRjYTBhYTY0NGQ0ZjdiNGIzMGE4YTIwIGxlZ2FjeS10cnVuaworMjU3ODYgNWMzYTI1OTIzOGNmZjUzYzQ2NzdiMGNiYTU1N2IxODNiN2I2MDg0OSBsZWdhY3ktdHJ1bmsKKzI1Nzg3IGJlNDkyZGY4M2QwMzAwOGJhNTdjYWUxMjZkYjkxNTQ0Mjk1ZjkyNWMgbGVnYWN5LXRydW5rCisyNTc4OCBmNTJkNmE2NzVmNWY3ODc2MzE0NmM4Y2ExYmM5ODA4NGNhYmVjNWE3IHJlbGVhc2UyMi1tYWludAorMjU3ODkgZWFjNTYwY2MwMzk5ZDdmMzM4YjAzN2FkZmVhYThhYjYwNjhkOGNkZCBsZWdhY3ktdHJ1bmsKKzI1NzkwIGMxMDY4YjA5Mjg3OWZjZTYxYjk2OWJhYTcxMjU5Yzk4NjFmMDRjNGQgbGVnYWN5LXRydW5rCisyNTc5MSBmNGUyNGFiMGQxMjRhZWRiNTg5NDk5NDk1MDNjMTJiNTY1ZWUxMGRmIHJlbGVhc2UyMi1tYWludAorMjU3OTIgNzAwMmYyNGY4MThmYjJjN2UwOWE3YzhmZGJjMDg1ZTFkNmZjOGIwMCBsZWdhY3ktdHJ1bmsKKzI1NzkzIDUwM2I5MmU2NmE4Yzc2NWVlY2Y1OWMwZjBjYWJlYjMzYWEzMzZiMzUgbGVnYWN5LXRydW5rCisyNTc5NCA4MzIwNThmMjFhYTI3NDQ1NWUyM2Y1YTg4ZTNjY2NkODMxOGVmOWNiIGxlZ2FjeS10cnVuaworMjU3OTUgMjM3YWQ0M2Y4OWE4Zjk0NTAyZmRkMDQwM2Y2NDY0M2MwNWYwMjQwMyBsZWdhY3ktdHJ1bmsKKzI1Nzk2IGMwYWU2ZjQ2ZjIzMTU3NDMyMmVjYWIwNmVmMmEwMDA1YWU0Yzk4ODMgbGVnYWN5LXRydW5rCisyNTc5NyBkOGQ5ODFkMGE0N2U1ZjJhOWVkZjU5MjA5OTZlMGRlZDgyMzBjMTljIGxlZ2FjeS10cnVuaworMjU3OTggODg4ZmNkOWI4NThkY2UzMzE3MzgwYzk4YmY3YjM1MjE0YWM1N2QxYiBsZWdhY3ktdHJ1bmsKKzI1Nzk5IGQyZTQ1N2M0NGJmMjc1NzUyOWZiNWFjMWVmMWU3MTY2N2RiMjYyODkgbGVnYWN5LXRydW5rCisyNTgwMCAwOGY3NDJkZjk5MzdhMmNjYjNjOWRjNTcyYzMxODM5MzMyOGM0YzE2IGxlZ2FjeS10cnVuaworMjU4MDEgMjczZWVlMzg3MTJjZmZlYTFiM2E3ZjViMTg0ZDNkNjk2OTVjMWY3MyBsZWdhY3ktdHJ1bmsKKzI1ODAyIDEwODQ2ZjFlMTU5MmY5OWFiYmQwYjcwZjFhZTNkNDk1Mjk5NTY0NDQgbGVnYWN5LXRydW5rCisyNTgwMyBiMTgzNmNjYzk1MWM5N2Y1MDE1YzZmYzUyNDBlNmI5ZWJhOWIzNmZkIHJlbGVhc2UyMi1tYWludAorMjU4MDQgOWFmZWFmOTk3OWEwYTJiYTFmODU3N2JlYjUzNDdhZDlmMTU0ODg1NyBsZWdhY3ktdHJ1bmsKKzI1ODA1IGQxYWVjZjY2MzE2NzkwZTVlODFmODY3YmU1NjBhYzVhOWQwOTgzOGQgbGVnYWN5LXRydW5rCisyNTgwNiA3MmZkODQxNjk4NGI4MDg1MDhkNDZhYmE2ZTIyYmExYWUxODZkYzI2IGxlZ2FjeS10cnVuaworMjU4MDcgZWMxYTVhMDI5Zjc0YzU3ZmUyODI5MzZjNTA3ZjdlYjcxMTJlYjg5NCBsZWdhY3ktdHJ1bmsKKzI1ODA4IGQ1YWFkNmM1ODFjOWFlNDczZTkyYzVkMmM3NDk2MTA5MGMyZDZkM2QgbGVnYWN5LXRydW5rCisyNTgwOSBlZjZlMmZlZjgxZDJhOGI4YmE4ZTEyMDViYjA5YzM1OTdlN2U5NzcxIGxlZ2FjeS10cnVuaworMjU4MTAgOWU4YWEyOTUyM2YwOTc5NzYyYmZkZTBlYjVhNTEzM2ZkOTg2NmM1NCBsZWdhY3ktdHJ1bmsKKzI1ODExIDg4MWI2NDg0ZjBkZmFhNjFiMjdlMzgyN2YwZWYwZjZiZTUxMTgzZjEgbGVnYWN5LXRydW5rCisyNTgxMiA1MjIwOGZlNGFjNDcxMTQ4Y2M3MWY3NDhiNGM1ZDA5YWMzMWIzOGIxIHJlbGVhc2UyMi1tYWludAorMjU4MTMgZDg2NGUyYmQ5MWE2ZTExNDNmZTlkZmI4MWNmZDYyM2ExZWY0Y2UwMiByZWxlYXNlMjItbWFpbnQKKzI1ODE0IDIzOTI1ZGY0ZTM3MTMwNjhmZWQ4OWU1MGI4OGJmNDIyMTNiZjYxYzggcmVsZWFzZTIyLW1haW50CisyNTgxNSA3YjVkNmYxZjFjNmVjNzY1M2IzOTgyMjIxZWVmZjZiOTRkYTAzMmRmIHJlbGVhc2UyMi1tYWludAorMjU4MTYgMmE3ZjcxYTliZDJlMzBjZWFmY2FkZGI1ZTNlNWQ3OGI5NWM4NjdkOCByZWxlYXNlMjItbWFpbnQKKzI1ODE3IDFmZTM4MDIzMzZhMzU2Y2FkZTg3ZWY2MGM2ZjNhYzQ5ZmJkOGNlNzkgbGVnYWN5LXRydW5rCisyNTgxOCBhMzY3YmM2MWQ1YjYwN2U5ZjFlZDliMjgwNzEzMTIwNGM2MDc3MmRjIGxlZ2FjeS10cnVuaworMjU4MTkgZjZlNmZkYjkzNWQyMTQyMTkzNGE1MzRmMDVlOWE3NDNiNjM0MWY0ZCByZWxlYXNlMjItbWFpbnQKKzI1ODIwIDY4ZmUyYjM5MTE1OTQ3MmVhMGY0NjAwMzU1MDU5N2E2MTA2MmJiZDEgbGVnYWN5LXRydW5rCisyNTgyMSBiZWEwMWRjMmYwMGUyYmYzZTJlN2I4NGU1ODk4MTE4Yzc1YTllNGY3IGxlZ2FjeS10cnVuaworMjU4MjIgYzNlMGVhMDk3MzczNjZkYjk5NGMyYzljNjBiNDY4MWU3MmU0NWJkYyBsZWdhY3ktdHJ1bmsKKzI1ODIzIDliYTlkMTIzODgwNGY0NTg3MDhlZjRkZTk1MTM0MDRkNjNkNDA0OGUgbGVnYWN5LXRydW5rCisyNTgyNCA4NWJkNTM0Y2JkMTlmNjkzMzE1ODg0NTgwMjA0ZDNkMzFlZWE2ODg0IGxlZ2FjeS10cnVuaworMjU4MjUgZjU1MWFmOTI2NjBlYjIyZjA2YjU0MWU5NTAxYzc3ZjI4YTQwYzg2OCBsZWdhY3ktdHJ1bmsKKzI1ODI2IGFiOThhMGRlZjlkNzYzMzM3ZjAxYjY2NTU3MmIxYmVmMmZlMGI2YmIgbGVnYWN5LXRydW5rCisyNTgyNyBhYjI0ZWYyYzkzMjM4OWFmZDc1NTczOWU0Yzg3NjYwNjU4NDE0NzNjIGxlZ2FjeS10cnVuaworMjU4MjggMWRiMTUxMGFiZTIxODdiNjU2ZWIyNDdkOWQ5NmM1NDYyYzRkYjRjOCBsZWdhY3ktdHJ1bmsKKzI1ODI5IGFhZjVlZTNiOGY5MzU1NjQ4ZTVmZTY1MTQ3MzcxN2Y0ZjY0ZGM1MjAgbGVnYWN5LXRydW5rCisyNTgzMCBlZWJhZTRmNjBkMDVjYTM0NDI3NzNkNzg0ZDU5YzYzNmEwZGEwNWM0IGxlZ2FjeS10cnVuaworMjU4MzEgOGQwMDYxNDkzYzU3ZDIyN2JlYzljOWI5YmU1NWQ3NTExOWIxYjFjNSBsZWdhY3ktdHJ1bmsKKzI1ODMyIDBlNDc1OGNjZmUyYmU2OTBlYzNmZmM4ZjVjMmNiMTVjMTM0ZTEzYWMgbGVnYWN5LXRydW5rCisyNTgzMyBhY2Y1ZWNkODA2YWZjNzlmYTUxODdmNGU3NWM4OTZiYTQ2N2JmNjIyIGxlZ2FjeS10cnVuaworMjU4MzQgYWQzODI1ZDA0ZGVjZDYyMjY0ODkxZDFiMDNiMmZkNTc4NzUzZmZkYSBsZWdhY3ktdHJ1bmsKKzI1ODM1IGJjODhmMWI0NzY0OGRlNmU2ZTU3YjFmYWFlMzFjYzA1ZmRmYjYzZmMgbGVnYWN5LXRydW5rCisyNTgzNiA3YWRlZDZkMDY5NmUzNDU4NGNiOTllMjhhZGFiMWFkYTNiN2JkY2RhIGxlZ2FjeS10cnVuaworMjU4MzcgZTRkMTBiZDM5NzNmMTY0ODNlMzY2OGM5Y2NiMmQ4NDJhNWFlMGUzMCBsZWdhY3ktdHJ1bmsKKzI1ODM4IGQ3N2U3NDg4NjVmZjliODliYTkzYzhjMzllMmNjODk5ZGJkZjIxNDUgbGVnYWN5LXRydW5rCisyNTgzOSA4MDViZTdjMGUyNmM1MzA5ZjM1ZWM5NjhlZmY3ZWQ5MWExZTUyMGJjIGxlZ2FjeS10cnVuaworMjU4NDAgNjQwODM4NGM4MTM3YjI0OGI1NzE1ODRjMWM0M2U1OWJhODEwN2NkOSBsZWdhY3ktdHJ1bmsKKzI1ODQxIGZiNDU3OTExNTBkMTk3Nzc3Mzk2Yjk5MzU4YWUyMThhM2EyY2NjODUgbGVnYWN5LXRydW5rCisyNTg0MiAxNTcwMmUxYjk2MWViYjZjZmVhYTRhYTY2MDMzODJlZjA3YTdmNjQ2IGxlZ2FjeS10cnVuaworMjU4NDMgN2RlM2M5YjU4ZGI4ZmVmZWY0ODc0NzUzNDg0YThjN2ZhNmFiMDZjNyBsZWdhY3ktdHJ1bmsKKzI1ODQ0IDIzYjlhZTZiM2Y3YWZlYjVhMDRiMzQ2MTE1MTY3NWVlNWY5ZDkxODYgbGVnYWN5LXRydW5rCisyNTg0NSAwZjFhZTM3Y2Q4ZWIwMjdlOTM3NTdhODIwMGRiNjRiOGViNGZlODM5IGxlZ2FjeS10cnVuaworMjU4NDYgZmZjYjJmZDI5NDdlMTI4YTc4MTJhZTY5NjU3MzRmNzYxMDE1N2E4OSBsZWdhY3ktdHJ1bmsKKzI1ODQ3IGIzNjBhNjUwYTBkYmU0OWVkMzE5YjViMzQyZmMzZjc5OTIwZDE4ODUgbGVnYWN5LXRydW5rCisyNTg0OCA4ZWNkMWJhZDI0MDgxYjVjOTUyMTg0MDVhMWVlNzdhY2JlZmQ3OTljIGxlZ2FjeS10cnVuaworMjU4NDkgZjAyY2RiMmJjMTdhNzNmYjlkNDEyOTZmOGZjMmUwYzA0NmQwNzNkNyBsZWdhY3ktdHJ1bmsKKzI1ODUwIDEzNjFmN2JiM2YxOTkzNzE2YmQ0OTAyYTE2MGZhNWE2ZDJiZGY3ZGMgbGVnYWN5LXRydW5rCisyNTg1MSA2MDM5MjU0YWFhZGM0ODcyNzk3OGJlOTQ3N2RhYTQ5MGM2ZjQxOTRkIGxlZ2FjeS10cnVuaworMjU4NTIgZDRmNTQxNDY3YjZkNTJlNTg4ZmYwYzQyMzI2NDU5OWUxYTYxNjgxOCBsZWdhY3ktdHJ1bmsKKzI1ODUzIGZmOWFiN2QzMGJiZmJkMjFiNmI3MTYxZDRkYmMzNTUyZDM3YTU3MGYgbGVnYWN5LXRydW5rCisyNTg1NCA0MjI1MTNmNDIwY2YzOWZjMjcxYjQ1NmFiMTRjYjU3MzYwMDJkMTE0IGxlZ2FjeS10cnVuaworMjU4NTUgNjZhZGI1NTFjZDM4ZjNkMmIwZmE1OGM2MDcxMjc5ZjgxN2FmMjRmMyBsZWdhY3ktdHJ1bmsKKzI1ODU2IDcyMjRhMWRmNDgwOWZiNDcxYWYzNGIyZGQwZjMyYTkzN2M5MmViNWUgbGVnYWN5LXRydW5rCisyNTg1NyA5MWY5YTI0ODg3Y2I1ZTU4MDhlZTA1M2E3YWYwY2JlMzMyMTY5YzdiIGxlZ2FjeS10cnVuaworMjU4NTggZWNkMTgxYjAyYThhOTY2YWUxZDdhYjkxZjEwZmQyMWUxZGJiNzhjNyBsZWdhY3ktdHJ1bmsKKzI1ODU5IDM5M2IwYzNkOTc3MzI0N2E2ZmYzMTNlZDBmOTNjZjhjYzJjN2MzZjUgbGVnYWN5LXRydW5rCisyNTg2MCA1NGJjZTNjYWJjY2Q1N2M3YzM4ZjZlNDMwYTZjYTY5ODg1ODNmZjM5IGxlZ2FjeS10cnVuaworMjU4NjEgM2EzZGU2NTY3ZjFhNWQyMTU5NzJlNjU2YWZiNjk5NTUxMzc3MjQ5NSBsZWdhY3ktdHJ1bmsKKzI1ODYyIDgyYmRiY2EwMmMwNzUxYWNhMzkzN2EzZTllYzM1ZWFlZTU0Zjc1N2MgbGVnYWN5LXRydW5rCisyNTg2MyA5ZTNkNmI1Y2VlMDc2MmQ2NjA1Mzk2MmEwYmVhYzhiOTA3YzgwMWNkIGxlZ2FjeS10cnVuaworMjU4NjQgNWI4YmU4NjExZDhjZDg5MWQxMjJjODk4ZDNhZTVmNWRkMzcwODU0MCBsZWdhY3ktdHJ1bmsKKzI1ODY1IGM4MTY1NzU4YTZkZTdjMmEwNWFjYzk1Nzk1YTZkZWQ1N2UyNzVkM2IgbGVnYWN5LXRydW5rCisyNTg2NiAyNWUyYjU4MGIyY2ZiYmNiMWJhMTU0ODIyZDBlNzY2NzExOTI0MzVkIGxlZ2FjeS10cnVuaworMjU4NjcgYTMyYzdiM2YxZjExMDZjOWM4OGQ4MDJlYzQxYWQxZDBlOWQ1NjE1NiBsZWdhY3ktdHJ1bmsKKzI1ODY4IGU5NGVkZGVjZjMzMGEwNDA0Mjk0OThmYTdmZDkyYThlZDI1NzEwZGYgbGVnYWN5LXRydW5rCisyNTg2OSBlNzc3NDUyNjQ4MzA2ZWU2MjE0YTVjZThhYTM3MDA5MDY0OWQwZDM2IGxlZ2FjeS10cnVuaworMjU4NzAgM2JkMjJiZDE4N2MzMmI1M2MyZmQ2Yjg5YjE2M2I2OGIyNmQ1MTdkNCBsZWdhY3ktdHJ1bmsKKzI1ODcxIDU0YzA1YTk0N2JjYmM1OGQ4OTUwMTcxNDU3YzMzOTI0ZTYzYTg5YWEgbGVnYWN5LXRydW5rCisyNTg3MiAwZWRhM2Y4MmI2ZjNmNDI4MTRmNzk4ZjFhNDhlZjM4YmZlNDMyYWJjIGxlZ2FjeS10cnVuaworMjU4NzMgMjA1YzEwNjMyZjA4N2YzOWUxOGI0MWU1MjBkYzNlNzI3YmNmNTIxYSByZWxlYXNlMjItbWFpbnQKKzI1ODc0IDY1OGVhMDI2NjM0YzRjMjIwMTNkYzgxZGE5NTM4ZDllOTU2MDk4MWQgcmVsZWFzZTIyLW1haW50CisyNTg3NSAwZGQyZjliNTdjZmY1YWM5MThlODc1YjI3ZjY0NjUyYWZhZDE5MmNjIHJlbGVhc2UyMi1tYWludAorMjU4NzYgYTQwNTQzYjNlM2JmMzI2NDNiYjM1ZDljZGQ1MmQ4MGExYmNkZjE4YSByZWxlYXNlMjItbWFpbnQKKzI1ODc3IDgxNDMyOWE2NDI2Y2Q3N2Q5NjA2ZjEzYzhiMDM1ZTJlMWNhMzBjMDYgcmVsZWFzZTIyLW1haW50CisyNTg3OCA0ZWYzNjkzZjFhMjZhYWQ5MDM3ZGVlOTUxM2QyZWYxOTgyM2I5Y2MwIHJlbGVhc2UyMi1tYWludAorMjU4NzkgNjY1NzkxZDUzYzQzNTZhMjI2NjU3Yjk4YzE1NmFmNTJiNTljMTgyNCByZWxlYXNlMjItbWFpbnQKKzI1ODgwIDE2MjQ1YTljYmZhMWRmMzcwZGE3ZjE0MmZiY2ZkOWYyODFlZjA3YTIgcmVsZWFzZTIyLW1haW50CisyNTg4MSA3YzdjOTBmYzcwMDVhN2VmYzc5ZjcwODRhZjMwZWEwN2IzOTMzNGM5IHJlbGVhc2UyMi1tYWludAorMjU4ODIgYzNkZjliN2E2YWNhYjE4OWM0Y2FmNDVkZjMzMjkzMWQ3NzNiZjQyNCByZWxlYXNlMjItbWFpbnQKKzI1ODgzIDc5NWJkZDY5MjE3NjAyNWE0YTkxYWM2Y2VmODUyODEyMDJmMGM0ZGMgbGVnYWN5LXRydW5rCisyNTg4NCA4YmZjOTE4NDkyNDJjMzA4OThkY2FkZDk5ODk0NzQ0NWYyZThjMmFmIHJlbGVhc2UyMi1tYWludAorMjU4ODUgNjRhNjgzNjE4NDhjZDQwMjZmZGZkYTFiNzE0NWVhNjkzYjBkZWMzNiByZWxlYXNlMjItbWFpbnQKKzI1ODg2IDBhYWUwOTk4NmZjOThmNTZkNzljMzJiZTA0MWNhZDFkYWI0MzIzNWUgcmVsZWFzZTIyLW1haW50CisyNTg4NyA0ZmYzN2M1OGFiODkzOTNhZDkyN2EyMTYwMzI4ODkyNTYxZGNlYWQzIHJlbGVhc2UyMi1tYWludAorMjU4ODggMGMxOTEyZjlkMWNlODNkZWZlNDcxZjdkMGY5ZjZiMGU1N2FlZmE1NCByZWxlYXNlMjItbWFpbnQKKzI1ODg5IGEyZmUwZWNkMGNlMmFiZDBjZGE2Njk5ZjVmOGNkMjVmZjJmNjcyNjAgcmVsZWFzZTIyLW1haW50CisyNTg5MCAyZjljNmNiZWFhNjI4ZDVlM2RkYmQ1YzY1NWUwNDViMDIzZmM4MWFkIHJlbGVhc2UyMi1tYWludAorMjU4OTEgZDY2ZTRlN2M5ZTlhNzBjNTYwM2U0NTk4ZmQ5MjEzZTcwMDYyNzkxMiByZWxlYXNlMjItbWFpbnQKKzI1ODkyIDQ1NzIxYzAyMTYwNjY0ZmNiNWRjNTdmNjIyYTBmMDZjMmFkOGVlM2EgcmVsZWFzZTIyLW1haW50CisyNTg5MyBlZjMxNGIzN2UyNjBjZWRiYmM1NzFiNmZjNTIwMzcxODAxNWU5YmI5IHJlbGVhc2UyMi1tYWludAorMjU4OTQgOTE5OGZiMDQzNWZiYWFjZWE5MDcxODg1Y2MxY2RjODU1Y2RkNDAzZCByZWxlYXNlMjItbWFpbnQKKzI1ODk1IDI5MTIwMTVhMWU3Yjc2Yjg1ZTVlM2MyYTc0NmFhNGJhYTkwNmM1YTMgcmVsZWFzZTIyLW1haW50CisyNTg5NiA4MDkwZDBkNjNlZTFhNTkxN2UwZGNiOTVlODgyODk0OGY4ZjYyZjlhIHJlbGVhc2UyMi1tYWludAorMjU4OTcgZjZhN2ZkYmQzMGQ0ZjIxNmY2MWRhNjA2ZTk4ODljZWQ1MWUzZDNkZCByZWxlYXNlMjItbWFpbnQKKzI1ODk4IDIxZTg5NzJkMzdlNDY4MWVjYjRlOTlhNDNkODg3MGYxNDBlN2FmNjMgcmVsZWFzZTIyLW1haW50CisyNTg5OSAxYWZiYzU2MTg4YjAwNzQ4Y2I5YTEwNzc4ZjE0OWIwYTFlMDhjNDhhIHJlbGVhc2UyMi1tYWludAorMjU5MDAgZGE5YWRlYzY2ZTJiMjE5YTE0NzE1OGI4OWQ0OTU2NjIzOGFlNjVjMCByZWxlYXNlMjItbWFpbnQKKzI1OTAxIGUyY2JlOWMzMzQxMWEwYjBiNTc4NGVhNTU4ZjM0MGYwOGQyMWJmZTUgcmVsZWFzZTIyLW1haW50CisyNTkwMiA3NWVmMWYxNjcyNWVmNGVjYWJkY2VkOTYwMmIzMTQ1NDQ4Y2I2ZWZmIHJlbGVhc2UyMi1tYWludAorMjU5MDMgYjcyNmU2YjNhODUyM2NhNDUyMjQyOTc3NWEzMzU3MDM1NDY5MDY0OCByZWxlYXNlMjItbWFpbnQKKzI1OTA0IDE2ZTU0MmFmMmM0NWJjMDc5MDNhYTMwY2JlZDFiYTZjYTU2ODg4NzggcmVsZWFzZTIyLW1haW50CisyNTkwNSBjNWMxMzI2MTY2YjkyMWE0Nzk2NGMwZDk1OTg5ZDgxNjY2ODY2N2U4IHJlbGVhc2UyMi1tYWludAorMjU5MDYgNzU2NjE4N2EyMDFjZjIxNDU5ODZmNzM4OWIyNWFiNTlmNTlhNWRkMCByZWxlYXNlMjItbWFpbnQKKzI1OTA3IDE0MmZkM2UxMDczZDFlMDc1ODQyMDJkZjM4YjYxNjdjZDI1Y2FhODcgbGVnYWN5LXRydW5rCisyNTkwOCA2YjNlOTliMmZmOTFjNDU3MWEwZDZiMjY5YjJjYmQ1MzllMmExZmQ0IHJlbGVhc2UyMi1tYWludAorMjU5MDkgMDkyMmM5MTljZWRiZTM3YzBkNTk3MGYyMzkwMDg0YTU2OTFiOGZlYiBsZWdhY3ktdHJ1bmsKKzI1OTEwIDYzZmJjYTg5OGVhYzI2YWM0NDg0ODVkMzgwY2Y3N2RmNWRmYzQ3MWQgbGVnYWN5LXRydW5rCisyNTkxMSBmYWQwNzFmYjQxNDFmZTYwOWJhNjc2ZmY3NTg1YTQ1YTlmNGU3ZmYzIHJlbGVhc2UyMi1tYWludAorMjU5MTIgYWQxNWIzOWFkOGY3MTI0MDQwMTFhMjkzNTMzMzQ0MGVmOWE5OGJhMiBsZWdhY3ktdHJ1bmsKKzI1OTEzIDhiNjM2ZmNiODYxNWVhMjkyMGVjZGI5NzdmNWQyNjFhNDJhNDgzNzggcmVsZWFzZTIyLW1haW50CisyNTkxNCA5ZWI0ZTYyMzA5YjBlMjMyZTA3Y2VmZDQwN2NmZTczMWFiNmIxYTE4IGxlZ2FjeS10cnVuaworMjU5MTUgMjViNTk5ZjM2MGJjMjFkMTgzNTc0ZmJiOTljM2RhNDRmZWZhZDYwYyBsZWdhY3ktdHJ1bmsKKzI1OTE2IDZkZTFhMTlmNDdhNDI1ZmUxMWYyOTFiYWM2YmE0MjBhMmIyYjRiMGYgcmVsZWFzZTIyLW1haW50CisyNTkxNyBmOWQ5NmRlZGQxZjQ2NmI0N2QxMDQ3YTYzM2FlOTAyMzIyZjI1Y2MxIHJlbGVhc2UyMi1tYWludAorMjU5MTggZjJhM2FmNGZhNGZmZWVmMzRiN2VjNzBlOGExNDY1Yjk1YmVkNTMwMSBsZWdhY3ktdHJ1bmsKKzI1OTE5IGI2OGFmNGE4MDAwYmExMmE2MWFkZmY4Y2Q1NjI5YTI0NDRkZWZkMjUgcmVsZWFzZTIyLW1haW50CisyNTkyMCAzZjQyMTYzNGMzN2NjNmM1ZTJmNTUwMjg1N2I1N2JiODY0YWY3MGYzIHJlbGVhc2UyMi1tYWludAorMjU5MjEgYjU5YWQ0Yjk3YTQyNmUxNGZiNWYwMzQyOWM4ZjhmNWFlOGI5YTBiNSByZWxlYXNlMjItbWFpbnQKKzI1OTIyIDdhNGNiNGU5Nzk3NjZhYTYwZWQ1NzQzNTU2OWU3NzI2ODdhYmNmOWQgbGVnYWN5LXRydW5rCisyNTkyMyAwNDNhZDdhZGM4OTZmNGE0OGZlMzM0NTJjNWVmMDJmOWVjOTJmZWQyIGxlZ2FjeS10cnVuaworMjU5MjQgMzAzYjZhZDEzYTMyZDk5NTExMmM5YTMxM2YwN2RiYzU2N2M3ZDhlYyBsZWdhY3ktdHJ1bmsKKzI1OTI1IDNiZjJiNWFjYTYxZWMxODUwZDUwMjY5ODIyNDI2ZDE4ZTZiYmNmMDggbGVnYWN5LXRydW5rCisyNTkyNiA5YmI0NTAzNjVkZjc4NzFjMGU0OWMzZTI0ODI4Mzg1NzM5NzM2ZjkzIGxlZ2FjeS10cnVuaworMjU5MjcgOTA2YWQzNmNiN2JjY2U3NWQ1Yzg4NTEwOGNkZmFhY2UwMDc1ZjNmMyBsZWdhY3ktdHJ1bmsKKzI1OTI4IDM5ZTQyZDZmNWRhMmQwNzA0YTUyNjJiYjNiOWRmYjBiZmEzYmNlZDQgbGVnYWN5LXRydW5rCisyNTkyOSBhZWRkYTBhYmQzMTNlMDBlYWE0N2NkMjU4N2Q4ZmVhZDVhMzkzMzBlIGxlZ2FjeS10cnVuaworMjU5MzAgNmExYzg3NTJhNjVmYjA3MWZkZDQ1MTJhOTUzZGFlMTYwZmUzYzIwNiBsZWdhY3ktdHJ1bmsKKzI1OTMxIGVlNGI1OWI1ZmViNzJmN2JlYjAyZDI3MDlhNDBiMWQ5OTg1M2E4YTQgbGVnYWN5LXRydW5rCisyNTkzMiA0NzBlOWRhMjFjNGFlNGZmNTFmMzYyNzgyNTA3M2FkZjczMTRlZjBhIHJlbGVhc2UyMi1tYWludAorMjU5MzMgZDE5MGIyZDMwM2MyODFkN2JkMmMxOTZkNDgxNDIwYWJiZTA0YmViNiByZWxlYXNlMjItbWFpbnQKKzI1OTM0IDVhMzBkNGIzZGEzN2ExMGM2MDE0YTc4MTQ2MDJlOTYxZTI0MGQxYzkgcmVsZWFzZTIyLW1haW50CisyNTkzNSAyOTg4MDJhYmQzOGRmZmZhNzliNDcyYzJmNWRkYzMzNzBlYjI0ZmZjIGxlZ2FjeS10cnVuaworMjU5MzYgMDZhODE1NmUzYmNmNzNiZmNiNjQ1N2QwODZiYjI1Y2NkNjIyNGY2YiByZWxlYXNlMjItbWFpbnQKKzI1OTM3IGJjMjBiYWFhZTNlZTExOWUzOWE5ZjJlMmEyZjZhMjQzZDE5ZGIwNDggbGVnYWN5LXRydW5rCisyNTkzOCBkNzFkM2I3MTViMTNlYTI5NGFkODNmNTJmZGZiZjFkYmJiMDMxYTE0IHJlbGVhc2UyMi1tYWludAorMjU5MzkgZTZjNmJhYmNlZWU1MzYwZjNkYjczODRkN2E0OGNhYzFhOTU5ZTI3OCByZWxlYXNlMjItbWFpbnQKKzI1OTQwIDNhMjFkYmUxYjZmZTQ2ODlhOGU4NWQ2MGRjNTFiYzE3NzM0ZGFmMTkgcmVsZWFzZTIyLW1haW50CisyNTk0MSA2NGExMDQ5ZmU1M2I5NjFhNTFiODk5MGQ1NDkwYTliZDE0MDJiN2RjIHJlbGVhc2UyMi1tYWludAorMjU5NDIgZjBlZjhiNDI2ZDhkOWIwN2NhYjNmYWM3YmJhMzRjOWJmMjg4NGQ4NyByZWxlYXNlMjItbWFpbnQKKzI1OTQzIDJkMzNjZmQ2YzE3ZjA3NzliZjdjZDNkNDAyNDFiMDBiODhhNjk1NzAgcmVsZWFzZTIyLW1haW50CisyNTk0NCA5YTE3YjNhM2FmMDk4OWMwZDQxZjRhZDMxNGFlM2RhMWZmNDEzZTE4IHJlbGVhc2UyMi1tYWludAorMjU5NDQgMTFjOTUyYzdkNGJlNjYzODA0MDc2NDkxMGJlODBiZDljM2MxN2RlNiByZWxlYXNlMjItbWFpbnQKKzI1OTQ2IGJjZDFmZGYxM2FjZmUzNjcxYWY2ODY2NDEyMGE0ZmU4OGNmZDRiYzUgbGVnYWN5LXRydW5rCisyNTk0NyA5M2RhYTRmZGUwODdlZGRhYzgzZDUxMjVhMTk5YjRhMTc4OWI2NmFkIGxlZ2FjeS10cnVuaworMjU5NDggM2Q2ODA4NWY0OTVmOWU1OGUzNjUyNDdkZTMyMTQ5Njg2YmIwZTE5NSBsZWdhY3ktdHJ1bmsKKzI1OTQ5IDkxZWFiNzQ1ODEwZjExM2M0MDVmZTZmMjQ3NmE1MjZhZTRkNjE5YzAgbGVnYWN5LXRydW5rCisyNTk1MCBmMWRiZWNiN2U0MTYwZDI3NGUyZmFkNDJiNDRkODBkOTNlMzY3OTNmIGxlZ2FjeS10cnVuaworMjU5NTEgNjZlODVhNzMyZGRkZTE5MjU4NmNhNGEwMmI0MDI5NWY0MWI0YThkYSBsZWdhY3ktdHJ1bmsKKzI1OTUyIGMxOGZlNDg3MjU3MTYwZmQ2ODM3M2IwNDAyYjI3NTk1ZjlhMjFiYzYgbGVnYWN5LXRydW5rCisyNTk1MyA3YmNlNDc1MWJmYjM0MGYyZjE4MjhlZDFmMzc3ZjZjZjIyZTA3ZjU3IGxlZ2FjeS10cnVuaworMjU5NTQgN2QwZjBiYjk0NDhiMDEwMDYyNmQ4MzhhYTcyNzZmMTdjMTdmZDlhNCBsZWdhY3ktdHJ1bmsKKzI1OTU1IGE3NThkNGM0MDFlMDhlYWFkYzgyMDVhY2YzNmM3NzA4MDM2NmM1ODEgbGVnYWN5LXRydW5rCisyNTk1NiA5YjUzMTBjZmEyZTBkZGIxNjBjNzNmN2I3ZGI1YmJhNzY1YWM3Y2ZiIGxlZ2FjeS10cnVuaworMjU5NTcgMjA0ZDQ2ZmM1NGY2OGUwMzM0ZmQ3MTY5MzYwZGQ4MDlhMjkwYzFhNSBsZWdhY3ktdHJ1bmsKKzI1OTU4IDBhM2JmMjJhZWNhNGEyZTRiODVmNGVlNzIxYTE3YmQ1NTQxZTM0YzIgbGVnYWN5LXRydW5rCisyNTk1OSAxYzcyMDdhZDVkYjgxNTc4MjMzOGVkY2U1N2Y1Y2ExNGY5YjI2OGY1IHJlbGVhc2UyMi1tYWludAorMjU5NjAgODA4MjFhNjVmZDQ5ODE4MThkNGU3MjhiOWM4ZTc0MzdhNWZkZmQwMCByZWxlYXNlMjItbWFpbnQKKzI1OTYxIDE5NGVkNWUwZGM4ZmYwZGUxMzBlOWIyNWU2ODkzMjA0MTZiMzZmOGIgbGVnYWN5LXRydW5rCisyNTk2MiAwYzVjNjRiNzVkNWQwYTE4MTJkZTllYjNhMDc1NTUxYjZjNDk3NDA0IGxlZ2FjeS10cnVuaworMjU5NjMgYTMzMWM2MTZiYjBhZDVjYzU0ZWE5Zjc5M2VkZmZkNjY4Y2NjMzRmNiBsZWdhY3ktdHJ1bmsKKzI1OTY0IGYzYTkxM2U2NGViOGVkNGRiOTI2YjEwMDkwYTlkZDFhZTgwMmFjZmUgbGVnYWN5LXRydW5rCisyNTk2NSAyODY4ZTlhOWUyODBiNjhhMzk2NTJlMjY5N2U1MmI3YTU0NDJhNjg0IGxlZ2FjeS10cnVuaworMjU5NjYgM2Y0YjJmOTNlOGI1YjU0MjZlODg4YzQ5YjQ0OWI3YzVmODNkZGE5OSBsZWdhY3ktdHJ1bmsKKzI1OTY3IGRhMTY0NWZkOWMyNDM4YWZlYmU3NGMwOTMyMDdkYjhiZjY1YTk5YzQgbGVnYWN5LXRydW5rCisyNTk2OCAxYzgzOGJlNmQwMDRiYjg4NjA2MmYzZWRjOThhNjA0OGYwOTNlNjAyIHJlbGVhc2UyMi1tYWludAorMjU5NjkgYWMyNGMyYzliY2FmODNkOGNkZjVlY2RmZGFiODAxNjZlNmJmZmE1MyBsZWdhY3ktdHJ1bmsKKzI1OTcwIDgzNzc2YmE1ODBlZjIwYTVjNDM1ZGU0MmI3ZDZjODc1MmNiODg0MDEgbGVnYWN5LXRydW5rCisyNTk3MSA0YzdiYjBiNGQzNTRiZDI0NzYxM2JmZmJhMTNiOTZlNDY2YzBkMzE3IGxlZ2FjeS10cnVuaworMjU5NzIgYzliNzMyNjI4ZTZjNjA2M2YxOGYwYjJkMDVmYzY5NWU0NWRlZjczNyBsZWdhY3ktdHJ1bmsKKzI1OTczIDI2Nzg1ZmU2M2NiYmUyZDRjNjU5MWFkYjg2OThkNjMyNmIzNDc5NmMgbGVnYWN5LXRydW5rCisyNTk3NCBmNjJiZmIwYjA5NDZjZDZjMTM3Mjc1OTM3MWNhMGZhNTE1Nzg3ZWRlIGxlZ2FjeS10cnVuaworMjU5NzUgZGRjOTU0M2M3NmEwMzFjOWNiMmQyMzc4ZDNiMTI1MzI5MjAyMTViOSBsZWdhY3ktdHJ1bmsKKzI1OTc2IGYyOTRmZGQxOGI1YjA4YTRjMDczMWZhOTA1YTRlY2IwNzY3Mjc2MWEgbGVnYWN5LXRydW5rCisyNTk3NyBkNmY1MDY0ZjI2NzM3MTNmYTY1ZTkzZmUxNDg3MmMwZWY0Y2Y5MDZiIGxlZ2FjeS10cnVuaworMjU5NzggMzI5OWI3YWJhOGViZTcwMzI5YzFlYzFjMDRmZWNlYTk0NTkxNGYwZSBsZWdhY3ktdHJ1bmsKKzI1OTc5IDY3OTZkZDMwYTYwMjQ3OTRiZDBhMTBiN2Q0YTY5NmU2MGJhMjliZDYgbGVnYWN5LXRydW5rCisyNTk4MCAxOWQ0ZTgzNmJkMDc1ZWVkZWEyMTE1MjBjMjZhZGIxMDBiZDY5NTNmIGxlZ2FjeS10cnVuaworMjU5ODEgZWM2ZWNiYjM0YjA2YjllMDQ1Yjg4ZTY2MmQ1ZGQ4NzAxYmUyMzFkMyBsZWdhY3ktdHJ1bmsKKzI1OTgyIDZhODUwNDQ4ZmM4ZThlM2FjOWIzNmVhOTcwNzU0OTQzZmYxMTgyNzcgcmVsZWFzZTIyLW1haW50CisyNTk4MyA4MzBjODI5YTdlYjJhZWQ1NTIyYTdhNDc5Nzg5NjlkYTg2ZjRlY2ZmIGxlZ2FjeS10cnVuaworMjU5ODQgYTZiYjNjYzkxOWI5NjU2ZDY3ZTc3ZDg4NTljYzQwYjIyYmM2NGExYyByZWxlYXNlMjItbWFpbnQKKzI1OTg1IGQ5ZjMwMzAzYzg2MGQwMjE4YzFkNTgwNDI2M2YxNDJlMTc4ZDBiNDcgbGVnYWN5LXRydW5rCisyNTk4NiA4ODBkMzEwNjQ5OWJhYjViZWY0Yjk3NmEzN2RkMmJlYWNhMTI1ZTdkIHJlbGVhc2UyMS1tYWludAorMjU5ODcgODk4YzM5MjQ3N2Q5MWQxMjg2NTJjNTc0MTg1MTg0ZTcyNjUyYjk5MCBsZWdhY3ktdHJ1bmsKKzI1OTg4IDA0NDZlZWI3ODdiN2Y5MmRhZDIxYTU2ZGFiZDJhYzczMTRlYmRjNTQgcmVsZWFzZTIyLW1haW50CisyNTk4OSA1MWIxYzVlYTBmYmI0NTYxNzRlNTQwYjg4ZjczYTQ1YTM3YWUwMDEzIHJlbGVhc2UyMS1tYWludAorMjU5OTAgODQ2ODRmYzAyZGEwMDRmNDhjM2VjOTVmMGE1YzU3ODY2ZTE2ZTk3YSBsZWdhY3ktdHJ1bmsKKzI1OTkxIDcyMzBlMDFjM2M0OTRlZDRjMzMyMDU4YTkyNGY4YzA0MjkzODY4MGUgbGVnYWN5LXRydW5rCisyNTk5MiBlNmZjY2RlNjEwODY2ZDFiMmZhMjY3YjRkNzExNTdmMTg1MjUzZDk4IGxlZ2FjeS10cnVuaworMjU5OTMgNzg3MGZhYzA0OWY3MjEzYTc3ODYxZTUwOTc0NDEzMmIxMWU0NzM3MyBsZWdhY3ktdHJ1bmsKKzI1OTk0IDM0OTQwNDQyNmZhYWMzN2UyNDVjNWQ3MmQ1ODkxMmM1ODI0NTFiOWIgbGVnYWN5LXRydW5rCisyNTk5NSBmOGM2NTk4NDhhZDZmNzgyYjc4YjBhZDNhMGJhYTcyOGM2Y2Y0MGY1IGxlZ2FjeS10cnVuaworMjU5OTYgYjljZTk2OTI4MWNiNzM4MjEzNTFmNjllOThjNTY0ZDBkZmMwMGQ1NCBsZWdhY3ktdHJ1bmsKKzI1OTk3IDcyNmM5NjFmM2RiNTFhNzUwZmVlZWMxNWY5OWQ5ZDY2YzZkZTZmYjUgbGVnYWN5LXRydW5rCisyNTk5OCAwZjgwMTYyNmMyZDM3OWM4YzhiNGE0OTIzMDcwNDg4NTBhMWU2ZjcyIGxlZ2FjeS10cnVuaworMjU5OTkgZDc3OGVhOWRlNzgwZmFjMGY4Nzg2MzMxNTQ2MjE5NDZjNzQ1ZjhiOCBsZWdhY3ktdHJ1bmsKKzI2MDAwIGMxNjY2MTA0YjU1NGY5YTZjZWNlM2I0YTFmMzQ2MWQwMTU4MzNiOTcgbGVnYWN5LXRydW5rCisyNjAwMSA5YzJjYTM3YmRlZWM1ODE1NmU0YWEyOGRlZmE1ZjQ0YjIwMWI3YTEzIGxlZ2FjeS10cnVuaworMjYwMDIgZWMxMDQzZjZkMDVlZmNlNzc3OGE2Y2ZiODZlNGIzMjcyODU2YzhlNyBsZWdhY3ktdHJ1bmsKKzI2MDAzIGNlY2YzMWRiOGIwZGI1NzM0MzgwYzI4YWMzNWM2NDZlY2I4MzQwMmEgcmVsZWFzZTIyLW1haW50CisyNjAwNCA5NmIxMzZiNjExNzg0NTQ4ZWJhMDczMjMxOWRlNjFlNTU4MjFkZjU5IGxlZ2FjeS10cnVuaworMjYwMDUgZDI5MTE5ZDI0M2U5ZTM3YTRhNDA1ZGVlMTdmZDUxNWU3YzBlYTJkYyBsZWdhY3ktdHJ1bmsKKzI2MDA2IGIxNzJlZTkzYzEzYzZjOTMyZGRiMGZlNmZiNjlhMDBhOTY1Yjg0NjkgbGVnYWN5LXRydW5rCisyNjAwNyAxNTBmMDM0MDdkMGQyNjk3MjQzZDE2YWEzYmZiZmYyNWRlODRiYzcwIHJlbGVhc2UyMi1tYWludAorMjYwMDggODZhMjdiYTFiZWU3NWYwMjJiZGUyMmRlMTJhMDk2ZDhkOWY2ZWQ1YyByZWxlYXNlMjEtbWFpbnQKKzI2MDA5IDU2NTViZmI2MDdjYTcyMjRhZDk3Y2M5NWJiYzM3MWYzOWZiMWRkMTggbGVnYWN5LXRydW5rCisyNjAxMCA4YTgzNmQwYjU5NzQxNjVmZjBiODQ3ZmMzMWI0YjIxY2IwNTFlNDQyIGxlZ2FjeS10cnVuaworMjYwMTEgMTYxNmJkOGIzMWJjMDQ4MDg3MzU0MDk3OTg2NzRhNWI0MThkMWRkOSBsZWdhY3ktdHJ1bmsKKzI2MDEyIDIyODhjNzI0ZmUyYmFkMDE0MGZhNjk5YzY0YzIwMGQwNGNmZmRhOTUgbGVnYWN5LXRydW5rCisyNjAxMyBmM2E0MTZiMTc4YzQyM2NmMDljNDBmNDFkZWQ5NmYwMTEwY2Q1ZmViIGxlZ2FjeS10cnVuaworMjYwMTQgZTk3MTQ3NWMwNDcxOTMxY2VlYjYzZTdiZWE2Y2QxYmZiZGZmOGYzZSBsZWdhY3ktdHJ1bmsKKzI2MDE1IDJkYTExMzc2MDBhZTdlOWVhYTFkNTM4OTlkYWUyZDBiMDUzOTk5MjEgbGVnYWN5LXRydW5rCisyNjAxNiBhODJjZTE5OGZlNjk4YzJlNTc2ZDQyZTJmOTVmOWI3YTFkYmJhMWIyIGxlZ2FjeS10cnVuaworMjYwMTcgMTA3MDIzYzBjNDU2ZGYzYzJjODMyNDk0NTU5OGZhMDdlZmY2ZGUyNiBsZWdhY3ktdHJ1bmsKKzI2MDE4IDNhYWRlMTUwZTcxNzI0N2IzOWFlZTA0Njg3ZDZkODlmMTMxMGZhYTkgbGVnYWN5LXRydW5rCisyNjAxOSBhZjcxOTE0ZDhiZGYwZGZlNWRiNDdkOTk1ZmQwYTAwYWJiODM3ZGJjIGxlZ2FjeS10cnVuaworMjYwMjAgNDA5MzExYzc4MzgzNjUzZDY4MTA5OTMxNGMwNGQ5OWUxYjc3YWVjYyByZWxlYXNlMjItbWFpbnQKKzI2MDIxIGJjY2Q0NjEzYzQ5NmEzMGJiMWJhZDY0MTljYTc4NDliZjU5ZWY2ZDkgbGVnYWN5LXRydW5rCisyNjAyMiA0NjQwN2QwYTYwMDBmNWVlMjg4YjVhZDk0OGU0MzIwY2NhNmFlNzMxIGxlZ2FjeS10cnVuaworMjYwMjMgYzE2YmVhNzlmNGRiM2I0ZTdjNTFhNTEzM2U3MzM5NzVhZTI0M2NjOCBsZWdhY3ktdHJ1bmsKKzI2MDI0IDFhZWE3YWYwOTI2MGU3ZjIxNGYzZmNlNTRkMjJmMjAxYzJmMWY5MTEgbGVnYWN5LXRydW5rCisyNjAyNSA5ZDJhOGY2YjA2YjZmYjljNDVkNzc2ZGRkZjQxOGI3NzdkZTUyNWQyIGxlZ2FjeS10cnVuaworMjYwMjYgZjYzZjJiYzhiZGJhNmYwZDVkOGU0MmEzZWRlN2I1MDM0YjM1NzI4NyBsZWdhY3ktdHJ1bmsKKzI2MDI3IDQ1ZGJmY2YwZmExOWZiY2I4MDdhNTZiMTllZTcxNTVjYzFjZTA1NWQgbGVnYWN5LXRydW5rCisyNjAyOCA1MzJjMjdhNzM1YjdiOTI1YjY2OGRkOTgxM2FhOWNjOTRlOWYzNDk0IGxlZ2FjeS10cnVuaworMjYwMjkgZDk3MWQxZWI3MmY2ZTI0ZmZhZDliOWE5ZjZhOTAyNGRiZmE3YmUyOSBsZWdhY3ktdHJ1bmsKKzI2MDMwIDNlMGRhODQ5MzlkMGIzMzQwNmJjZWEwODM2MmM2MGRkYTdhMmU0ZjkgbGVnYWN5LXRydW5rCisyNjAzMSBiZjNiMDdjNjJjZjdiZTI0ZTQ2OWUzYzQxOGJhNjU0NzRmNjhiYTYwIGxlZ2FjeS10cnVuaworMjYwMzIgZmMyZTdlMzk3YmM2NmJmOTdhODYwOTAxN2RlYjQzZDNiOTIyMDVjMCByZWxlYXNlMjItbWFpbnQKKzI2MDMyIDQwNDVlNmU5MmZhZmFiYWQ0MmY2Yzk5ODliNjcwNzZmYmFkNDUyY2EgcmVsZWFzZTIyLW1haW50CisyNjAzNCA4NmNlOWVlMTQwNDUwZTE2YTViYWJmZTE0ZDAzYTU3YjU2YzQwMGI2IGxlZ2FjeS10cnVuaworMjYwMzUgYjk2NzQwYzQyZTgwNzBiNzJkNDMxNTY0NTYwODk0NTkxMjgzNjU1ZiBsZWdhY3ktdHJ1bmsKKzI2MDM2IDkxMWZlMDc5MzA1MDQ2ODEzMWFhN2Q5MmM3ZDg2NmFjZDc3OWY3NGQgcmVsZWFzZTIyLW1haW50CisyNjAzNyA1NzgxMWMzNTVmM2FiY2VlNTdiMzMzMDcxOGU2NDJjOWUxMWJmNTIxIGxlZ2FjeS10cnVuaworMjYwMzggMGI1OGVhMDc0OTVjYjA3ZWI4ZmZjZDhmYWU0ZTg3ODJlZTNjNmI4ZiBsZWdhY3ktdHJ1bmsKKzI2MDM5IDg4MWE2YzJkNWRiMmI4Y2Q2ZmFiZThmY2JiYjE5MzU2Yjk3YzlhMGYgbGVnYWN5LXRydW5rCisyNjA0MCAxOGNmZWYwMTFhYmU3ZTY4YWY1ZTBmYmRmY2NjZDhmODFjYzkzNGNjIGxlZ2FjeS10cnVuaworMjYwNDEgNDg4YjliM2Y1OTlhZDQxMGRiMWMxMjY3NTk3Yzg1ZmE5YmU0MGM5MCBsZWdhY3ktdHJ1bmsKKzI2MDQyIDdjMGNjYWM5N2Y4ZWZkN2Q4NTY4MTNjZTRjODU0ZDNlZjMzZjE4NjEgbGVnYWN5LXRydW5rCisyNjA0MyAxMjBlNGJhMDU1MGJkNzA5Nzk3OTI5MWI4OTcxOTVkZDlkZTJmOGQ3IGxlZ2FjeS10cnVuaworMjYwNDQgNDRiZTVlNzRmMTcyN2JlNDU1OTBjZjIyMWRiZWI4OGJmOTRjZGIyOCBsZWdhY3ktdHJ1bmsKKzI2MDQ1IDZmMmYxYjA0ZTgyZTBkYzk2ZDcwNTE4OTc3M2M0ODhiY2MzZDQ4OGYgbGVnYWN5LXRydW5rCisyNjA0NiBmZDFiOGViZTRlYWU0OGI2ZDQ3YTE4ODAzMjUzOWMyMGY2MjBiZWJhIGxlZ2FjeS10cnVuaworMjYwNDcgYjQ1NzYzNjUzOWU4MGQ1MTExMWIwZDhmNTU2NjAyYzk1YjA1ZTdjMiBsZWdhY3ktdHJ1bmsKKzI2MDQ4IGY4YmQ5MzA2NDRhYTM0NGU1OTY5ZWZlYjk0Y2M2MzZjNzMxNDYwZjYgbGVnYWN5LXRydW5rCisyNjA0OSBlZWUzMzcyYzJmOTYyZDQ4NTUyOTJhYTU0ZDQ3MTU4ZmU4MDA1YThkIGxlZ2FjeS10cnVuaworMjYwNTAgYzA1OTZmODRhOGZiMTQ5YjM3ODM3MDlkOTUxNjI4Y2Q2ZWIxNTBiNiBsZWdhY3ktdHJ1bmsKKzI2MDUxIDYxNDE2N2RmMjA5NjBhNjJiY2RjZmNmNjBmYWQ5ZGU5NmYzNDFlNWQgbGVnYWN5LXRydW5rCisyNjA1MiAwMGIyOTcyYWI0YTRiMWExYjNlOThhNjk1ZjJmMDk1NTViZWJiZDljIGxlZ2FjeS10cnVuaworMjYwNTMgNWFlM2MzMTY3M2U0ZGQ2NjIxYTdmZjcwMzhiZGY2ZWFiMWMyOTFjMiBsZWdhY3ktdHJ1bmsKKzI2MDU0IDJjMDJjZjI3OGYwMjgyZjE3ZWM5NTlhZDZkOWZjMTMwNjU0ZGQ3MWYgbGVnYWN5LXRydW5rCisyNjA1NSA1OTYxNjc2NDdiY2Y1N2RhNDYyNTlhZjYzY2IzNTA1NDM5MDU5MGRjIGxlZ2FjeS10cnVuaworMjYwNTYgMTczODcxMjkzMDM0NGFhMjRjNDMxMzljZDI5NTMzYmU1ZjNlMDUxYiBsZWdhY3ktdHJ1bmsKKzI2MDU3IGYwNTgzYjFlOTNhYjBmOGE1MjYzZjRkNjM5YWMyYzQyODY3YWIzN2MgbGVnYWN5LXRydW5rCisyNjA1OCBmYTBmMzVmOTQ0YjU2MzAwZDRhZmE5ODMwZjNiM2FiZDVmMDY3YTAyIGxlZ2FjeS10cnVuaworMjYwNTkgNmJiNDM4NmIxMTExMDMzNDRjZTg4MzNiMzcyMWNmMjczYmJlZGFjMSBsZWdhY3ktdHJ1bmsKKzI2MDYwIGE0YTFlNmY1NTUzMThhZTAyMzYzMzM1Nzg5MjIwNzMxZDBkODVmYmYgbGVnYWN5LXRydW5rCisyNjA2MSAzNWY1OGMyOTc4OTk2NDRjYzM3OTE2YjYxZTY5MzdlNGE5MTM2NWY0IGxlZ2FjeS10cnVuaworMjYwNjIgMGVlY2U3M2MxM2MwOGRlYWQ3NGEwOTVlNGY4MmQxYmUxZmUwY2IyOCBsZWdhY3ktdHJ1bmsKKzI2MDYzIGNmMWEwNWM4NjU5NWMxMGNiMjBhNGZiMTUzMDZjZWE5YWRhNjc1NGYgbGVnYWN5LXRydW5rCisyNjA2NCBmMDdjYTk5NzIzMDQwODkyOWQyNDMxZDU0YzljNjhhYzYyMzM4YWRlIGxlZ2FjeS10cnVuaworMjYwNjUgZTBlZTAwOTQxN2RmMDczZWQxZTQwYzc5ZWMwZWI5Y2QwM2NjZWMzNSBsZWdhY3ktdHJ1bmsKKzI2MDY2IDE4ZGNjZGYyYzQ2ZDgwMjc0ZWJiZGQ5YzNiOWUzNTY1ZTQ1NzFmNjMgbGVnYWN5LXRydW5rCisyNjA2NyA4NzAzZDIwNTIzMzk5ODY2ZjI5MTdjNTdlYzI1MGYyMWRjN2NjY2E2IGxlZ2FjeS10cnVuaworMjYwNjggMTRlYmQ3NjEwOTAyNmNhY2M3ZjNkMzQ3NzJhNTJhOTYwNGQzNzhlMCBsZWdhY3ktdHJ1bmsKKzI2MDY5IGRjMmY3NDVmY2M2N2U4MmM3ZGU0NGNlZGZkNDJmY2Y1Y2FiOTI4NWUgbGVnYWN5LXRydW5rCisyNjA3MCBhZWE2ZGZlYWFhYjg0MTY5MmMwMjg4ZDAwZjVjYjMxM2Q3MzJlNzEwIGxlZ2FjeS10cnVuaworMjYwNzEgM2FhNGJmN2FjMzFlOTg1ZjM1MTNhODY3YTQ3MTcxNTA1OWM1N2ExZiBsZWdhY3ktdHJ1bmsKKzI2MDcyIDhhMjI1YmQ4NzYzYWQwZmQ2MGJkZDM3ODlhZWY5ZWE0ZWQ4YzkxOGQgbGVnYWN5LXRydW5rCisyNjA3MyBjYTQ2NWU0ZDg4YmMxZjcyYmMzNjkzNGVhMzk1Zjk3MzQ1MTE5MWYzIGxlZ2FjeS10cnVuaworMjYwNzQgYjM4M2RmZTM2ZWVlN2RlYTM2ZmIzMmE2MjNlOTViMWE4MGYyMTA0NCBsZWdhY3ktdHJ1bmsKKzI2MDc1IGNjOGI3MzA0MGU4MzdkNmJlZTMwNzExODdlMmU4NmQ2OTU0YTAzMDEgbGVnYWN5LXRydW5rCisyNjA3NiBjZWNhNmNjNDQ0MjA4YzEwOGNkNjk4N2UyODQyODJkNTAxODI2ZWFmIGxlZ2FjeS10cnVuaworMjYwNzcgZTBlZGZlZWE1MTgzYjQ2MzAxNzM3MjY4M2FmOTA4Mjc1M2I2MTc2YiBsZWdhY3ktdHJ1bmsKKzI2MDc4IDIyZmRiNDE2YmEyZjFiNDI5ZmVhNzYyMDNkNmJmYzExMjJiZWM5MTUgbGVnYWN5LXRydW5rCisyNjA3OSAwYmRkNDEzYTM0MTY5YjQ2OTQ5NjFiMDkzOTIyYTYxOThkZjU0MmMzIGxlZ2FjeS10cnVuaworMjYwODAgYzNkNjM3MzA4OTU0YTMxMjNkY2E4N2FmYTM5YTUzMmU3MDk1YWM2ZSBsZWdhY3ktdHJ1bmsKKzI2MDgxIGZhMGFjODQ1OTI5YjIxZTBlY2U2NWEwYTZiNzMzMDlmYjZhOTVlYmYgbGVnYWN5LXRydW5rCisyNjA4MiA2YzRiMTkzMDE2YzY3NWMxYzUwMzBjMzE3Njc5ZGFhOTA0ZDQ4MGFmIGxlZ2FjeS10cnVuaworMjYwODMgMjUzZGU1ODhmMmZiNjVlMmYxNzRjZGRkOTIzYWVmODI1NmI2N2I3OSBsZWdhY3ktdHJ1bmsKKzI2MDg0IGJhNjhkZGExNWRmMDY4N2VjY2ExMjJlNzZiMTAzZGE2YmYwZmUyNDMgbGVnYWN5LXRydW5rCisyNjA4NSAxZTMwNjJlNjlmMmNjMTEwMzU5ZDE1NGU2MmMyZWE3ZDQxNjk0YmM3IGxlZ2FjeS10cnVuaworMjYwODYgOWJhYThjOWExZTg0M2E5ODEzOWJlY2I2OTU5MDg1ZDkzOGJhYzZhYyBsZWdhY3ktdHJ1bmsKKzI2MDg3IGZhOTU1OWM1YjEwMzcxNTMyNjQzNmJhMGY1NDY3NjJkNWNmOWIyZGUgbGVnYWN5LXRydW5rCisyNjA4OCBjODQxMTBmMDVkYzM2YzQ3MTk3NjAxZjY5ZWU2MjNjOWNiNWY1YjNlIGxlZ2FjeS10cnVuaworMjYwODkgMDk3MzY5M2U0YWQyMWQ2ODhiM2E0Nzc3MTliNmFmNTdlNTBlYTExNyBsZWdhY3ktdHJ1bmsKKzI2MDkwIDE0Yjc5ODZhOTJlMTAzOGZhOTAyYzQwNjkxNjNlNzBhZGE2Y2JhMTQgbGVnYWN5LXRydW5rCisyNjA5MSBjZGZmM2M3YzFhNzY0Mzc5MTBmNDE5Y2UwNDM1Y2I5YWYxY2Y3ODJjIGxlZ2FjeS10cnVuaworMjYwOTIgNjkzMWRiZDJlZGI0MjFkYjUyM2UyYjljZTZiMDc5M2RmZDlkYWFiNCByZWxlYXNlMjItbWFpbnQKKzI2MDkzIDBiNjQ1NTBhNzQ2MTE1YzQ3ZWI2ZTgzNDJmZjJjM2FiODg0YjBhNzUgcmVsZWFzZTIxLW1haW50CisyNjA5NCAwMDE1NGEwZmRlNjE3NWE0Yzg1NGRmNmI3NTdiMzQ4MDdjNTY0YzJhIGxlZ2FjeS10cnVuaworMjYwOTUgZDI0NjcwMzg0YzM5Y2QyNjBjNDBlZmZmYmMzNjdjYTMzZWQ1ZDRmMCBsZWdhY3ktdHJ1bmsKKzI2MDk2IDFhZTQyMzI2MmZjOTg2ODE1ZWQ5NjhhYzE5YzY3ODkwNGJkYzY0OGQgbGVnYWN5LXRydW5rCisyNjA5NyBmMDJlYThlODI0YjBjMTM3ODhlMWUxNDNiZDc2MTIyODUzYzNkN2YwIGxlZ2FjeS10cnVuaworMjYwOTggNzNlODI3MjJiMDNjMzkyZjE1NmExYWIwNTk3ZDYzYjU5ZGQ0YjdlOSBsZWdhY3ktdHJ1bmsKKzI2MDk5IDgxMGMxNGYyNDM3MzZkOTIyYjcyMDMzYWQxZDk4ZWIwMGRkMDc0Y2MgcmVsZWFzZTIyLW1haW50CisyNjEwMCA4MjZiYzE1MjJkMjIxMmMzZjRlYjMwMDA3OTFiYTQ2ZDQwZGE3NGIxIGxlZ2FjeS10cnVuaworMjYxMDEgZTQ0OWM4MWMxYzAxZjRlMDJjNTBlOGJjMTU2YzFlMTNlMzljYmJkMCBsZWdhY3ktdHJ1bmsKKzI2MTAyIDI3MWQ2MjFmMGU5ZmRmMjJkYTgzYTgyOGNjMTk1NTFiZGU0ODYwMGEgbGVnYWN5LXRydW5rCisyNjEwMyA3NzFiMmE4ZDQ0NWRjMzIxYWQ1NzNmNzliM2NkOGRiN2QyMmFlZmY5IGxlZ2FjeS10cnVuaworMjYxMDQgZjUxYjc3ODg0MDEyODdlZmUzZWY2ZTY3ZDZjZWM3OTRmNmNkNGVhYyBsZWdhY3ktdHJ1bmsKKzI2MTA1IDczNjFlYzg4MTg4YTkxZTFhMWU4YzRiZDRmZTNkNWRkYmU1NWM5NmYgbGVnYWN5LXRydW5rCisyNjEwNiAyODBlN2EyMGUzMWE1Yzg2ODM0YWJlNGFhOWMyMzA5YjFmOTRjOWQ3IHJlbGVhc2UyMS1tYWludAorMjYxMDcgYzExOGQwOTViZGRlYjVkYjE3MzZjZGFmZmQyMmQ1Yzc4YzNmYzc1YyByZWxlYXNlMjItbWFpbnQKKzI2MTA4IGZlZTJmNjZmM2MxNjVlZjBjMTYxOTE0ZmMyYmFlMzllZjY1MzAyNjkgbGVnYWN5LXRydW5rCisyNjEwOSAxYmRmMjE3YmFkOTMwOWI3NjY5MTZhNDhmYTBlN2RmZmNiYzEwZWNkIGxlZ2FjeS10cnVuaworMjYxMTAgMjIyNGFmYzYzYTViYjk2M2ZmMzUxNDQ0ZGQyNDRkMTAwNjk3YjQ0ZCBsZWdhY3ktdHJ1bmsKKzI2MTExIDUzZWQ5ZGQ2YmNkNWQ0OTA5ZTc5OTQzNjBmMWQ4MTA3YjU0YjM5NjcgbGVnYWN5LXRydW5rCisyNjExMiA1MjI0MDVhYjM1YzFhZDJjNjIyOGMwNTYyNmQ2ZmM4ZmJmYWE4Y2FhIGxlZ2FjeS10cnVuaworMjYxMTMgNGMxMGYxNjkyNTIzMjY0NTc5ZDE2MGJmYjY3ZDQ5ZTQyMzhhNjZmMCBsZWdhY3ktdHJ1bmsKKzI2MTE0IDQwODFlZmY5MzJmZTI4NzkyNmIzY2M5MjEyMjU5NjVkZWMyOTU5ZDggbGVnYWN5LXRydW5rCisyNjExNSAyYWE5NDlkMDJkNDA1MzI4ZDMxMDRjNDI1NzIzODY5OTAxODkxZDYwIGxlZ2FjeS10cnVuaworMjYxMTYgY2I1ZmNhM2NlNzlhOWZhNzhjNmE3MmE3OTA4OGYwN2Q1YTFjZGZkNSBsZWdhY3ktdHJ1bmsKKzI2MTE3IGZkNDQ5OTllN2VhZDQyMTdmZDUxM2Y1MDg1ZGFkZjU5MDYyMTU0ZGYgbGVnYWN5LXRydW5rCisyNjExOCA2ODcxZTY3NDVhYTU0MjEwYTliMTAyY2U4Y2EzYzQ3NTQ4YmUzZjI4IGxlZ2FjeS10cnVuaworMjYxMTkgNmZhNDZjMjE3NjZkOTIzMWRkYWE4ZGM3Y2FhZmRhNzQxYmY2MTQ4OSByZWxlYXNlMjItbWFpbnQKKzI2MTIwIGU3MGM5YjdhYWYzZDY4OTY0ZTFmYzNjOTYyZTI1NDc1NGU1YTRkZjIgcmVsZWFzZTIyLW1haW50CisyNjEyMSA4NzE5ODY2MDE0YWIzNmE5MDlmNzU2MGIyOGU0NjQyYWE2MjEwYzYzIGxlZ2FjeS10cnVuaworMjYxMjIgOTkzMWYxNTRiZTk4OGY1ZDg4ZDRlOWVkMGE4NjVkZTlkNzE3MmE5ZiBsZWdhY3ktdHJ1bmsKKzI2MTIzIDgxN2I0OTRjOWI1ZTQ5N2I0ZmQwMDM3OTcwYWMwYTRlMmEyYWI3YTQgcmVsZWFzZTIxLW1haW50CisyNjEyMyA1YjU0NjQwZTcyYjY2YjhjMDg1Nzk1ZTI4ZWY3NTZkNThiOTU1YzZjIHJlbGVhc2UyMi1tYWludAorMjYxMjQgYTc4ODRkN2QyZDQ4OTAwZjk1ZDJkMGQ0NmFmOTM0ZDQ0OTMxOTEyOCByZWxlYXNlMjItbWFpbnQKKzI2MTI1IDM0MjgyMjlmMTJiYjE5YTI4NjljMzNmYjQyZTA5ZTg1MzQyYzc0NWUgbGVnYWN5LXRydW5rCisyNjEyNiBhZDNjZTczMDE2YmZhYTFiYzZjYzVlNjY3N2M5ZTc2NzM2M2FkMWMwIGxlZ2FjeS10cnVuaworMjYxMjcgZDI2ZDg1NzVhYzYyMWNmMmZjOGVkNmI5ODJlYWIzMjliZTRlOGY4NCBsZWdhY3ktdHJ1bmsKKzI2MTI4IDU0ZWE4YTkzZWNkN2U2MjE5N2IzYjZmMzMyZGVjYWY4ZWMyM2IzNmEgbGVnYWN5LXRydW5rCisyNjEyOSAzYTUwNjUwMDVmY2ZkMTIxMTJhYTJiMzJjZDM2NWE1ODhhNTU5NTE0IGxlZ2FjeS10cnVuaworMjYxMzAgOWY1MDllNDkwZmNjNzljZmZlZGRiMmQ0ZjVmM2Q2MWViNmJmMzA4ZSBsZWdhY3ktdHJ1bmsKKzI2MTMxIDMxNGUxNDE2YWE1ZDVmNWRjY2U2MDFiNGE1NjZlMTlhNjQyYzU4YjkgbGVnYWN5LXRydW5rCisyNjEzMiAyNjBhMTcyMGY2MjljNGZmMzcwMWFiNGE0ZDY2MjM2NmQ2NWFlMTU4IGxlZ2FjeS10cnVuaworMjYxMzMgNTlkMzkxM2EyOWM0NDM5MzIzYzc0MTBhN2JiNjQ4YzllZWMyNGZjOSBsZWdhY3ktdHJ1bmsKKzI2MTM0IGE2ZjhlMTI4NmIxNTU2ZWRlZWJkNTEyM2FlMDRkNjZkNzcyYTNiNjggbGVnYWN5LXRydW5rCisyNjEzNSAwMmZkZGY3YzI1YzJkZTNlMzJiZjA3ODE4MzMyN2IzNTAzYTBmM2I5IGxlZ2FjeS10cnVuaworMjYxMzYgNzRkZTg2NDE4Mjg0MTBlMjU2MmRiNTdmNzI2NDZjZjVkMmIxNmMxOCByZWxlYXNlMjItbWFpbnQKKzI2MTM3IGQ2ZWY5NTdiZjI5MGZjNmU2NWY3MWZkNzIzNDJjNjk0MTYxY2EyZWEgbGVnYWN5LXRydW5rCisyNjEzOCBhNmE4YzY5ZWMwZTdjNThlMTNiOTBjYjViYWVlY2VmYTYzY2M1MzY3IGxlZ2FjeS10cnVuaworMjYxMzkgMzYxODZhZjNjMTI1MTY0YTcwZWExZmFkMmE1N2E5NzI3MGU2YjhjYSByZWxlYXNlMjEtbWFpbnQKKzI2MTQwIDE0OWZiYmIwMzkxNTc1YjVmODg1YjdjOTJlMDcyOWQ5NmFjZWZhODUgcmVsZWFzZTIyLW1haW50CisyNjE0MSA1ZjdkNzBhYjc0ZWVmZmRmY2RkZTcyMWNkYTVmYWViNzE1YzRhZWU4IGxlZ2FjeS10cnVuaworMjYxNDIgZWM2N2ZjZTNmYTNjZWQ0YTNjOGQ4Y2M0OGI5NjU3MGZmMmZjZGZiZiBsZWdhY3ktdHJ1bmsKKzI2MTQzIGQ5OWExZGRmOTUxODA1MTc4ZDhmMTg1YTdmMzI2YTgyYjNmYTFiZTEgbGVnYWN5LXRydW5rCisyNjE0NCAwMWM1YWU2ZmM1YmJiYTNhN2UxYWExNTdjNjZkMWU1NWU5M2YzMGRlIGxlZ2FjeS10cnVuaworMjYxNDUgMGIyYzA4NzU0MmJjYmZmMzcwNDYyMjM0OWFiYjlkOWM1YjViMDZiYyBsZWdhY3ktdHJ1bmsKKzI2MTQ2IGFhOGQ1OTgyM2FkZDFhOGU3ZjdlOGE3ZmU4YzdmNzEwYTk3ZTNjOGIgbGVnYWN5LXRydW5rCisyNjE0NyBhOGM3NWNmNzRkYzE0MTEyYzBlYzgwYzJjMmRiZjY1YWZjNzM5ZGE4IGxlZ2FjeS10cnVuaworMjYxNDggMDI4ZWJjOGZiMzkwOGE4Y2RiN2E5NDBiZTFhMWM0NWM0NDE3Mjg2OCBsZWdhY3ktdHJ1bmsKKzI2MTQ5IDIyMzk2Zjc3YzM1NmFhMzA5ZmI4ZjAyMGE2ODlkODQzOWE0MzNiOTEgbGVnYWN5LXRydW5rCisyNjE1MCA5N2EzNDY0M2U1NDRhOTcwNWRkZGQ0ODc4MWQ4MjE4MzIxMDUxMTJmIGxlZ2FjeS10cnVuaworMjYxNTEgMDY2NjhkOGQ5MzQzZjQ2NGQ5MTA4ZDNkMmNhYmFlNGY1OGIzOWI2NSByZWxlYXNlMjItbWFpbnQKKzI2MTUyIDlhY2FiNzZiMDAxNzhkNjQ4N2Q2NGNiMDBkMmVhODUwMDNhM2EzNGEgbGVnYWN5LXRydW5rCisyNjE1MyAxOTIyOTE1Y2I3M2Q3YThhY2NjNTFmZjk1ZDU0ODgwODE5ZWY2ZjYyIHJlbGVhc2UyMi1tYWludAorMjYxNTQgM2M4NzgxNDkyZDFmZGI4YmEzOTUwZTJlOTRhNGY3NWVlYjJlNGE3YiByZWxlYXNlMjEtbWFpbnQKKzI2MTU1IGY2NjNmZmJlOWU1YzQwZDRhMmFjNTllOGE4OGQ1ZjA4ZWE5MmI4YWQgbGVnYWN5LXRydW5rCisyNjE1NiA0ZWQwNmY4YWFkZDM3ODYzMjg4ZTM2ZGFhNmVlMzE2ZTRiZTliYWYyIGxlZ2FjeS10cnVuaworMjYxNTcgYWM1ZTFkOTAyOWI3OTQ1MjZjN2QzMjA4MmM3ZTMwODBkOWFlOGUxMSBsZWdhY3ktdHJ1bmsKKzI2MTU4IDY5M2UwMDE2NDA4MWFlZGNjYzhjZjQ3NTAyZjg4NDhlOGNiNmYxNTUgcmVsZWFzZTIyLW1haW50CisyNjE1OSAwZWI4M2FhY2UwNzE2NjdkYTk1YTgzMmZkZWFhYTg2ZjM2YWYzOGVjIGxlZ2FjeS10cnVuaworMjYxNjAgNThiMmY0NjI2YjY0ZDc4YTFmMTg0NTg3NjI0NzFmODQ1NWRkMTg5YSBsZWdhY3ktdHJ1bmsKKzI2MTYxIDIxMDA4ODdiNDdjYmI5YmUyY2ZlYzFmM2M4YjZhY2RkZjgxZjA4NWYgbGVnYWN5LXRydW5rCisyNjE2MiBmMDI3NzE0NmFhMTZkYjY0OWY3ZDNmOWE3MmY5YjVhYTQ0ODg1ZjkzIGxlZ2FjeS10cnVuaworMjYxNjMgMTdhMTc1MWFkMWQ5MDIxZmVhODRhMTk2MDVjMzg5OWI3ZGZkZjc3ZCByZWxlYXNlMjEtbWFpbnQKKzI2MTY0IDIxZjM1MzEyNDE0NWM0M2EzOTIxYzgyMjVlOWU1NTczMDVjZjlhZmYgbGVnYWN5LXRydW5rCisyNjE2NSA3NzM0M2FhMDNlMmYzNjNjN2I0MTA0MTYxMGY3OGM4MzM0Y2I2MWY1IGxlZ2FjeS10cnVuaworMjYxNjYgZjFhZjhhZDExMDAwYTA4OWJlMGY5ZmRiNWJhMzcyYzE5ODJjMTdhMyBsZWdhY3ktdHJ1bmsKKzI2MTY3IGM4MTVlMDAzZGJjZDhiZDVjMGNlNDU4NDQxMTRmNjE3ZjY1NmJlNGMgbGVnYWN5LXRydW5rCisyNjE2OCA4ODJlYTVjYzc2ODdhYmJlOGY0YzcwYzAyNGQ4OGE4ZTNhZDQzMjk3IHJlbGVhc2UyMi1tYWludAorMjYxNjkgMzMzN2M0MWMxMzJiMTE0YTk0YzUyYjUwYzE4NGZkOWYyYzgwMjQyYSByZWxlYXNlMjEtbWFpbnQKKzI2MTcwIDJiNzAyNWEyMzJlMWY3ZjQ5NGNjOTliMzNjZmI1ODkzMmE2ZDNlMjQgcmVsZWFzZTIxLW1haW50CisyNjE3MSBhM2JmMmM5N2U4MDhlNDE2NDhkNjRiMWE1ZmE2OTNmMTFiODhmNzEzIHJlbGVhc2UyMi1tYWludAorMjYxNzIgZGQ4OTg4Y2E0YjE0NjZkMzY3YTE4ZmNjMGZlYTg2MDU2MTQ1MDZkYSBsZWdhY3ktdHJ1bmsKKzI2MTczIDEyYjAwM2JlNWQ5NmM1Mzg5NzcwNDdhMzJmNmU1YTFmYWU3YzJjZDEgbGVnYWN5LXRydW5rCisyNjE3NCA1MzNjZDUxOTc1NzVkYTc3YzA3ZjExYTY2YTVkMzYyM2IwNTlmZTcwIHJlbGVhc2UyMi1tYWludAorMjYxNzUgNDNlZTczN2ExYjdmMTBhYWEwYTliZDU5MjI4ZjM3YjY4OWRmM2NkNyByZWxlYXNlMjEtbWFpbnQKKzI2MTc2IDM1MTU3NjcxMjNkOGM4Y2U1MzhmYTJlMzUxZjZkODZlZmFhMTdiMzAgcmVsZWFzZTIyLW1haW50CisyNjE3NyAzNWI3OTg0Mzg1MjdlYjYyZmQ3NjJiNmI0NWY1Yjk4NjA3YTRhZGZiIGxlZ2FjeS10cnVuaworMjYxNzggNmFmZmZmZjFmZmYxZWVhNTdmZWQwMzIyNmE0NTk1MTQ2ZTBmYTc4NSByZWxlYXNlMjItbWFpbnQKKzI2MTc5IDQzY2VlMTgxODI0MjBhMWNjNjg1M2M2MDMyOWI5NTQ0ZjU0ZmU2MDggcmVsZWFzZTIxLW1haW50CisyNjE4MCBjMWFlYzYzMjRhZDU0ZTBhOGU1MjYyZmUzY2UzYjFhNmEyNzQ4NjFhIGxlZ2FjeS10cnVuaworMjYxODEgMGFjZjY4MjBkOWUzNTEwMzM1NzNiNjQ4OGVhNzZlNjNhM2UwNzMyMCBsZWdhY3ktdHJ1bmsKKzI2MTgyIDQyY2M4N2M0MDEwMzZiMWYzMDY3Yjk1ZjU1OGZiYWFkYWE1Y2NmOWEgbGVnYWN5LXRydW5rCisyNjE4MyBjNTZlYWFkM2EwYjM5ZjJhZTBmNTM4MjY1MDQyZTYyYmJlNWY0MTNhIGxlZ2FjeS10cnVuaworMjYxODQgZjg5ZjIwMTA4N2VhNjc1YTUxMWI4OWIyYWIyNmM3NzVmYWZiMmMyMiBsZWdhY3ktdHJ1bmsKKzI2MTg1IGY2OGRkZjdmMjFmODRhNWI1ZTBlMjQyZWQ3M2E3NDc1YzhmMDgxNjIgbGVnYWN5LXRydW5rCisyNjE4NiA4YmE0OTllY2M2YzkxMjRjNjA0M2FlYjZmZTMyNTM5NDJkOTlhYjE4IGxlZ2FjeS10cnVuaworMjYxODcgMjk1NTFmNzQ3YzBlZDlkNDY3MThkODQ0YjhlY2M5YWFhYzk2Zjc2OSByZWxlYXNlMjItbWFpbnQKKzI2MTg4IDNiNmY0OGI1NDY2NmVjZmExMjFlYTE2OTY2YTRiNzM0MGY3MzJkOTMgbGVnYWN5LXRydW5rCisyNjE4OSBhYWY1NzJlMzM0YzNjOGJhMzk0OWRhYTEzNmFjYjNiNGZiZjIzNWM2IHJlbGVhc2UyMi1tYWludAorMjYxOTAgZDNjZjM4M2RmMDk2YzJjOGNlNjU0NWMwODQzNzIzMGUzNTczMzlmZiByZWxlYXNlMjItbWFpbnQKKzI2MTkxIGE5ZGQ1ZTZkNjgwNTYzZTA3ODYzZDc0ZjdkNThjMjgwMzExNzVmMDMgbGVnYWN5LXRydW5rCisyNjE5MiAzYWY4YWIxYjA1ZmM3ZjEyOTAyMzY2ZjEzYjdlYTU4NjE3YTczYmM1IGxlZ2FjeS10cnVuaworMjYxOTMgNWVkYTdkYjAwN2Q2ZDc4ZTY4MTE5MTZlMzA1YzgzNmMwNTVjNGFlMSBsZWdhY3ktdHJ1bmsKKzI2MTk0IGM4NjVjZjhiZWU0MGQ2OTUxYjAzMjFkMjYwY2YxMzI4N2QzM2ZkZDAgbGVnYWN5LXRydW5rCisyNjE5NSAwOTA4NzI5ZTk0ZTBmMTVmMWQ2ZDg3MDAxNTk3OGU2OWYzOWFiNmZmIGxlZ2FjeS10cnVuaworMjYxOTYgNzNkMTQ1YmZkOGU0NWUwYjBjYzE4OTk2ZjRmNDFmODhmNWJkYTJmNCBsZWdhY3ktdHJ1bmsKKzI2MTk3IGYxZjU3YmYwOTA5MmViZTZjMjY5OTMzYzg3NTk1MGUxODc5MzI5YjEgbGVnYWN5LXRydW5rCisyNjE5OCBlZjJmYmNlNzE3MzY5ZGZjZTA4MDc1MGNlZTIzZjRlODg4MWI2N2YyIGxlZ2FjeS10cnVuaworMjYxOTkgZDc1MzEzMDc0MzU1NTFhMGRiNWY1ODcyMGE3MGI0OWYwMWRhYWEwYSBsZWdhY3ktdHJ1bmsKKzI2MjAwIDJlZGRjZTQ0YjNiZWRiYzcxMjA1MTI4NWJmZGNlOTg4NTk1YzM5ZDMgbGVnYWN5LXRydW5rCisyNjIwMSAxODY5NmZjMzUwNjJmNjJhYTQwYzEzODQ5MDQxZGRjMDcyNDVmMTA5IGxlZ2FjeS10cnVuaworMjYyMDIgMzllYTA5ZmY1NzM0ZWNjZGYxYzYyNzJlNWYxNTJiM2ZkZGFjOGZmYiByZWxlYXNlMjItbWFpbnQKKzI2MjAzIDA3OWFiZTA1ZThiYzgxYzNkOGI5MjZlYTViYWVjMTE5MDc3ZDMxZmMgcmVsZWFzZTIyLW1haW50CisyNjIwNCAzODI3OTFkZGNlMWMxODMyZjA1MGY1ZTZkYmNmZjkwNmJlMTc2NmEyIHJlbGVhc2UyMi1tYWludAorMjYyMDUgMjE2ZGFkNzIwOWJjNzAxMzJjYTIyOWI5MjBkOTRhYjI0NDhlYjcyMCByZWxlYXNlMjItbWFpbnQKKzI2MjA2IGQ3MDI5Njc5NDM1ZjdlYzI5MDYwY2UxODA1N2UxNDNlOTQ1NWJkZTAgcmVsZWFzZTIyLW1haW50CisyNjIwNyA2ODA3MWE3MjY5NzA2YjgxYmE1Nzk1MTY2NDRjMDMxYWRiNGFjZWQyIHJlbGVhc2UyMi1tYWludAorMjYyMDggZjYwOTNiYWM5ZmI2NGZlMzRmMjViNjg0Zjc1ZTY0YWY3NzY0ZTg3NSBsZWdhY3ktdHJ1bmsKKzI2MjA5IGU1ODllNDczZjIzMmZiZjc3Zjg5ZTg0MTk3ODAxZGQ3OTk1ZDQwYmMgbGVnYWN5LXRydW5rCisyNjIxMCBkNmQ2NDIzOWFhMDUxNThhMmY3ODM2MmI2YzhiNjI2ODMwZDE2OThiIGxlZ2FjeS10cnVuaworMjYyMTEgZjY2MDBiMGRiNjg4YTc3NjgwYzAwMWZmMGY3ZTUwZjc0Nzc0OGNjOCBsZWdhY3ktdHJ1bmsKKzI2MjEyIGVkMDM4MDZkODhjZGM5NzI5ZWYwMDViOTBkNGNhMWYyODBiNjM0ZTYgbGVnYWN5LXRydW5rCisyNjIxMyA2ZTljMGQ5YmRkN2ZkNGE2MjQxNzg3ZjQ0Y2VmZTRhN2ZlNWMyYTFjIGxlZ2FjeS10cnVuaworMjYyMTQgMTg4YjBmYTI4MDA3ZTg2YTk4ZTUxMzVjMWYwMjViYjQ0OTI2MzI2ZSBsZWdhY3ktdHJ1bmsKKzI2MjE1IDMyZWVjNmQ3OWM5M2YyYWI1MTI2MjgxNTBkNDM2ZWI4OWZkYmIzMjcgbGVnYWN5LXRydW5rCisyNjIxNiA0MTZkYjhkOTYyMTZiOTExZWM4YTk1NTRmNzVlYzMzYWE0MjVhYzMxIHJlbGVhc2UyMi1tYWludAorMjYyMTcgMjczZjUxZjUyMDAwMTkxNzg0NmQ0NWQyZWM4MmYxYmUxMDUwYTMzZCByZWxlYXNlMjItbWFpbnQKKzI2MjE4IGUyNGI4ZDBiNjQ3MDRiMTBjZTNiMTUwNDA4YjIxNGUzZGRiZjcxNzcgbGVnYWN5LXRydW5rCisyNjIxOSAyMmY3ZWY3YmE3MmJhNDVjZTU2OTE1OWRlZjc3ZDNkNDU2MTgyZjY4IGxlZ2FjeS10cnVuaworMjYyMjAgYmJmMDVhZjNjMTkxMzhkMzU3MTcyNTI5NGNmNmQyM2RhNWRhNjc0NCBsZWdhY3ktdHJ1bmsKKzI2MjIxIDA0MzY3Y2ZmODY4OTVmNmNjYjU4MGY3MmUyMDFjYTk3MWI5MDk4NWYgbGVnYWN5LXRydW5rCisyNjIyMiBhNjUyN2QxZWU0NzQyOGFiNjIyNTY5ZjE3N2FiZWQyNTg2ZWQ0OTcxIGxlZ2FjeS10cnVuaworMjYyMjMgZjkyMzZjYWQ2OWU2MjgwZmE4NzcyNGI3YzRjZmY0NDY1ODU4ODRmNCBsZWdhY3ktdHJ1bmsKKzI2MjI0IDZmOGE1YWQzOWU2ZmU3MmUxZjBlMTA4NWQwYzJlNWE3ZDQxNTg0YzcgbGVnYWN5LXRydW5rCisyNjIyNSA2ODA0ZTQ4YTAwMzNiNDY2NDViODc4Y2QxYTQ5MWVjNjYxNzQ1ZjA0IGxlZ2FjeS10cnVuaworMjYyMjYgNzAxNDkyMTgyMGE1MWNkMWFlZWFkM2QxZGE0MzgyNDVhZDIzOGY1MSBsZWdhY3ktdHJ1bmsKKzI2MjI3IGE1NjFmZjFiNGZmYTFmYmE5NzllMzMxMmQxN2NkN2Q1OWFiZGJhNWUgbGVnYWN5LXRydW5rCisyNjIyOCBlMmYyMTg3YzNkMmMxY2E3OThlYWY5NjhhYjk1MTM2MjUyNTA0ZGQ5IGxlZ2FjeS10cnVuaworMjYyMjkgMDBlNjQwZTY4MGJkMjk4ZGM3NzA5N2M4ZWU3ZDc3NDEwYzkwMzY1NiBsZWdhY3ktdHJ1bmsKKzI2MjMwIGIxZmE5MGY4YjZjMjEyMDNkMGJmMDM2ZGI2MmE3NGYwZWU5OWNmNjIgcmVsZWFzZTIyLW1haW50CisyNjIzMSBjOTE2MjZkMWY0MTFmMGNiZmEyNzRhZmExNWIwYzFjNzQ1ZDMwMzcwIHJlbGVhc2UyMi1tYWludAorMjYyMzIgMjUyNDM4YmIwNWQ5N2E4NGFkMWQ4ODFjYTUyYmJhZDY4NTY5ZGYxMCBsZWdhY3ktdHJ1bmsKKzI2MjMzIGQ0NjJjNzkwY2M1YmQ3Njk3ODdmOWI4MWI3NDNjYjMzZTdiYjc3ZjMgcmVsZWFzZTIyLW1haW50CisyNjIzNCA4ZDMzN2IzYjY1NWEzYWE2MTc4YTI2NWI5MWVhY2Q5NDhhNzZlOTBkIGxlZ2FjeS10cnVuaworMjYyMzUgYzNlOWEwNTJlMjY4YTAwNzBkYTdiMmE2MjliN2NhOWQ1NzdlMTQxMSByZWxlYXNlMjItbWFpbnQKKzI2MjM2IGUzZGU5ZDE5ZmFhYWZjNmNmOGExODQ2MjE2NjJlYzZkZmMyMjA0YzYgcmVsZWFzZTIxLW1haW50CisyNjIzNyAxYTNiMDg2NjNlYmUwMWU3YmY3OWExNjYwNWMyNzJhNGIxOTQ4YWIxIHJlbGVhc2UyMS1tYWludAorMjYyMzggYTQxYTFlMDA1MWM1ZDZlMjAyZGYyOWQ5NTRhZTkxZDcxZDRmMDI5ZCByZWxlYXNlMjEtbWFpbnQKKzI2MjM5IDNhNjcxOGI5YjY1YTgzOGIyODc2ZDY5ZDExMTFmZDliNjgzZmZhYWIgbGVnYWN5LXRydW5rCisyNjI0MCBlMTQyM2VjOWU2ZWMzNjJkMDk2N2E3NTQ0NzdjNGI3ZWJiNjFkOWZjIHJlbGVhc2UyMi1tYWludAorMjYyNDEgMzg5ZDQyOWFkYTcyYzZkNDdlMjNmZjM3MzJhZjliZjYyMWE2NjdhOCByZWxlYXNlMjEtbWFpbnQKKzI2MjQyIDc5Mjg3NTFiZmRlZTUxODdhYjM5YjZiODhhNGJiMzg1MGEyMDliODMgcmVsZWFzZTIxLW1haW50CisyNjI0MyA1YmUwNjc3ZDgxMGQwMjZhNzk1NTZkMWFkMzk3ODJkNzY5NmZkOGIyIHJlbGVhc2UyMS1tYWludAorMjYyNDQgZDhiYzY4Y2IxN2UwMzcwMTI4YjlkZTRmMzUwZjQxNGEyMDIwMDgwOSBsZWdhY3ktdHJ1bmsKKzI2MjQ1IDVkMzgzMDA2ZDM2YjlkMzY0YTUyNDJjMDY5NDJlMjY0OWY1MmUzZDkgcmVsZWFzZTIyLW1haW50CisyNjI0NiAyODllYTFkNWM1YWNjY2RjMTlkZmE2ZTc3Njc3NjI0YWE4YTYwYmE0IGxlZ2FjeS10cnVuaworMjYyNDcgYzBkZDhiYmRkZTYwNDA4MzQ3OTVkNjVhMmVhNmE0MDNhMjkxNjk2YyByZWxlYXNlMjItbWFpbnQKKzI2MjQ4IGY5NzQ3M2IzNDBhNTgwM2NiMGRjY2Y3NjRlNDM1MDc0MmViY2Q3YzIgcmVsZWFzZTIxLW1haW50CisyNjI0OSAyYjNhNmE4NDRiZmZkYmI5ZThkZTg1M2ZlZTUzNTg2NDY0OTExMTg0IGxlZ2FjeS10cnVuaworMjYyNTAgMTcwZmI1Yjk0NzNmOGEzNDI0ZDJhNjBiZDY3MjQ0MzE3MWMwMGNmNiByZWxlYXNlMjEtbWFpbnQKKzI2MjUxIGFmNzJkMmNmMmM1NWViODg0OTAwNmQwZTAwMDY1YTgxMGFjNTFkMDggcmVsZWFzZTIxLW1haW50CisyNjI1MiBiODFkMGU4OTA0MTJjYzFhZjJjNDUyMDJhMjg5MTNmODQzNzFhZDBiIHJlbGVhc2UyMS1tYWludAorMjYyNTMgMzNiMmE4OWJmNGE2YTViMjY3YjVkMTgzZTI1ODUzNjU3MDg2ZmRhMyByZWxlYXNlMjEtbWFpbnQKKzI2MjU0IDFhMzc1NjYxY2M5NzMyOTUwMTA0ZDIwNWU0Yzc4ODFiYTBjNGY3OTcgcmVsZWFzZTIxLW1haW50CisyNjI1NSA1NzBhNzgwMjc5ZDFhNDYxYmU2NDJlM2I3NGExMWNiYTE4ZjllZTlhIHJlbGVhc2UyMS1tYWludAorMjYyNTYgYjVhYWRlOTdkNzIzZmE4YTYzZTdiMTliYjE2MzBkYzYxZmUyYzcwZiByZWxlYXNlMjEtbWFpbnQKKzI2MjU3IDdkNDBiNjkxZGJhNzYzN2NjYmY3N2ExMjkzZGQyMzhlMzcyZTliYTQgbGVnYWN5LXRydW5rCisyNjI1OCA4YmFjYTRlY2U2NDU1MzUyNzA3YWI2ZmFmMTExM2QwYWQ1MjY5ZDBhIHJlbGVhc2UyMS1tYWludAorMjYyNTkgZWE0MzUyM2I1YmU3NjI3ZjRiYTYyMmI3OGE5ODc4YWVmMzVjYzJkOCByZWxlYXNlMjEtbWFpbnQKKzI2MjYwIGMwZDdiNTc4OGNiZTYzYmFhYzAyNDQ5NTIxMDczOWQwNjc3ZDg5NzQgbGVnYWN5LXRydW5rCisyNjI2MSA4OTEzZGZhMTEwMjdlZGFhN2FhMTE1Y2NlYjcwMTZjZWE5YmU5ZjEzIGxlZ2FjeS10cnVuaworMjYyNjIgMTFjZmU4MzgzY2Y4ODc1MWZhZDNkNzllMWU2YjJiZDMxMjJkMDA2NiByZWxlYXNlMjItbWFpbnQKKzI2MjYzIGZiZGQ0MGI5MmI4NzBiN2ZmN2JkNGVkZDYyMzZiMDY3YjhiNGFkYTkgcmVsZWFzZTIyLW1haW50CisyNjI2NCA3ZTg0ZGE5Yzk4ZWJhNmI4MDgxZmMzYzNjYzFhNjdlYjIzYWVlNTdjIGxlZ2FjeS10cnVuaworMjYyNjUgOWQyNmQ1NjhkYmIzMDc2M2M1ZWUyYWIzMDRiM2EyY2FhYWQ5MWIxZCByZWxlYXNlMjEtbWFpbnQKKzI2MjY2IGI2MDg0NDViMjVmMDI5YjJkYWRjODVmZjBhZjMxY2ViNzIzZjNjYTAgcmVsZWFzZTIxLW1haW50CisyNjI2NyBhYzk5YmVkMjRiN2QxMDZjYTUxYjYwNDRjNTBkN2NhMTY5NTg2MGZkIHJlbGVhc2UyMS1tYWludAorMjYyNjcgN2QxNTA0YzgwZmEwNzJiNGJhODZlZGRhMTNhMTNiMGEwNWFlOGVhYiByZWxlYXNlMjEtbWFpbnQKKzI2MjY5IDVhYjNlOGYxNGQ0NjYzOWQ2YzQwYzljYjYyZDBkN2NmOGI4NzY4NzMgcmVsZWFzZTIyLW1haW50CisyNjI2OSAzOTQ3OTAzMTZhYTM4MGQyMmU0ZDY3MGJjNjlhNjM5ZTcyNWYwMzAwIHJlbGVhc2UyMi1tYWludAorMjYyNzEgOTkwMDFmZDk1ZTQ4ZGI4MTVhOGZkMDFiM2RkMDE3NzllMWVlNzhlNSBsZWdhY3ktdHJ1bmsKKzI2MjcyIDA3NzNkMjMyMjRkMmFhNmI1NTA1MWNmZDA3NjlhZWYzYWM2ZmRmN2YgbGVnYWN5LXRydW5rCisyNjI3MyBjMjZhZjFhYmMyYzYyMTMwMTJhZDU5MGY5NDFkOWE4OWVhZGZhMTkwIGxlZ2FjeS10cnVuaworMjYyNzQgMTIxMzNjOGI4M2NmNWY0ZWUzMjRjZTc0M2I0MGJmZGFiNDk1ZWNlZSByZWxlYXNlMjItbWFpbnQKKzI2Mjc1IDcyODFhMDZlM2I1N2YzYmViYzU3NTIxNDFlYjAzYWNmNWJiNjUyZmEgcmVsZWFzZTIyLW1haW50CisyNjI3NiBmZWI2ZDFiY2RkMWQ2MmUxODlkZTIzMDVkYzU4ZTJjYjU3NzNjMTBhIGxlZ2FjeS10cnVuaworMjYyNzcgOTA4MWM5MmEwY2M4NWU0NGZjNjdlYzNmY2E3MzQ0OWJmZmU4NzgxZCByZWxlYXNlMjItbWFpbnQKKzI2Mjc4IDhhMDJjMzNlZDJjMThiYjM4NDBiMDliMWUwZjVlNDdmYzY1YjAxZTAgbGVnYWN5LXRydW5rCisyNjI3OSAxNWMxOGJjOWQ3MTU2NWZlNzg3OTQ4ZmRlNmEwMWYwZWEzMDY5Y2FlIGxlZ2FjeS10cnVuaworMjYyODAgNTQyMjljMzUxMzJlNzc1MWYxYmQwNjc0MGEyZjk0MGE4YmRlNTZiMyBsZWdhY3ktdHJ1bmsKKzI2MjgxIDIzOTJhZjA1ZjA1MjZiNTYwMzAwMGI3OGNlNWI4ZjYxYjlhZjJhNjYgbGVnYWN5LXRydW5rCisyNjI4MiAzYzg3NmZmMjlhODNlZDllZmRlNDkyNWExODc3NmFiNTViYmEwYjY3IGxlZ2FjeS10cnVuaworMjYyODMgM2YyMWU0ZTM5MjY4MTAzZjIxNTQzNTA5MjI5Yjk1ZWZjY2M1ZTA4MSBsZWdhY3ktdHJ1bmsKKzI2Mjg0IGE1ZWViMjg4ZTAyMGY3MzBjOTBkNjg0OTgxMTlhNDJlZjVhM2Q0MDggbGVnYWN5LXRydW5rCisyNjI4NSAwNzdjZThiNWQ4M2I1OWI3M2U3M2M3YWE1ZDEwM2I0NTNmMmJlZGE5IGxlZ2FjeS10cnVuaworMjYyODYgNGM0OTk0NDdjYzQ5Zjg4NzNlZTE4NWRhODg5YThlOTQ1ZGIyMDM4MCByZWxlYXNlMjItbWFpbnQKKzI2Mjg3IDMzMjNmM2Y0MjJkYjA5YTEyMjRjZTBiOTNmZWQ3OWY0MzNkZTQ0NGIgbGVnYWN5LXRydW5rCisyNjI4OCBlMjMzODFmYTQ3NTAzODAyY2QxNDNiZjJhZmE5M2M5ZTQ0NjhmYWZkIGxlZ2FjeS10cnVuaworMjYyODkgZTJkZWMzY2RmM2MyNjgwZmZkN2U4NjJkYmM4MmJmYTFhY2E2NzE2OSBsZWdhY3ktdHJ1bmsKKzI2MjkwIGUzMDdhOTRkZDc3YmZkY2Q1YjdkZTdkYjI0MDVhYWE1M2U4NzY5NzYgbGVnYWN5LXRydW5rCisyNjI5MSAyNjdiOTczMmJmNDY1NTAwYjJhMDQ4Njk5MDRmNmY2ZjExN2JmNTFkIGxlZ2FjeS10cnVuaworMjYyOTIgYTk2ZTdlNWYzNDA3NzE1YTcwMjMyZjJhNWZjNzhjZjg2YTExNTJiNCBsZWdhY3ktdHJ1bmsKKzI2MjkzIGY3NmNhOWZiYzdhNDc2MmM0OGQ2MzA3OGJjNDczMDQzMzYxNDQ0MTMgbGVnYWN5LXRydW5rCisyNjI5NCAzMmE5YjE5ZGJhMWRkNjcwMGFlM2I3ZTliYmJiMmEyNmUyMjMyNWJkIGxlZ2FjeS10cnVuaworMjYyOTUgNDRlZTY4YWM1ZTdmOTYxYjZmYzM5OTE0N2YwYzE3YzI0MmU4NmIyZSBsZWdhY3ktdHJ1bmsKKzI2Mjk2IGQ0ZjllMTliOGMwYjQyNzYwYTM4N2E3ZjQ4MGQ1ODlmNDc0ZDcyOWUgbGVnYWN5LXRydW5rCisyNjI5NyBmMTRlNDU1MGIyZjNjZWE4YzkzYjc3YTQ0ZGNkN2ViYjQxNjA2Y2ExIHJlbGVhc2UyMi1tYWludAorMjYyOTggYTU0YjIzYjJmMTcyMGMzMzcyNzFiODg3ZjkwZGVjYWJkMDViZWJiZSByZWxlYXNlMjEtbWFpbnQKKzI2Mjk5IDVjNTUzNzcyY2E1NGMzZmQ0ZGU5ZjBiYjRlOWE4NGMwODZhOTE2YzcgbGVnYWN5LXRydW5rCisyNjMwMCA1MzRhYWI1YmNjZWE0NWIzYzZlYmYwNjQ0OTgyMmUyZDY2MWQ2MzBmIGxlZ2FjeS10cnVuaworMjYzMDEgYWI2Nzk5MzFhZTBkMTcxNzBmYmZhMDkwMmE4MzhjY2RlY2M5NjlmZCByZWxlYXNlMjItbWFpbnQKKzI2MzAyIDA1N2M1ZDc5Yzk4OGFkZGI3Nzk3NmRkN2M5OGY1ODNlN2IzNzZjOWQgcmVsZWFzZTIyLW1haW50CisyNjMwMyA5NzkzOTgzNGE2NzM1MjIwMWE0ZDJjNWE1ODU4Yzc2YTQ4MDBkODA5IGxlZ2FjeS10cnVuaworMjYzMDQgYzg3NTBkNjNkYzM1NTg0MjY0ZDNjZjcxYzEzZGE4ZDAxZTA0ZDAzMSBsZWdhY3ktdHJ1bmsKKzI2MzA1IDUwYzljMjQxNDYzZDIxYWVhZjE2YmUwODIwOGRiMzZmYjZhNDI4ZTMgbGVnYWN5LXRydW5rCisyNjMwNiBjMDQ5MDZmYTE3OGM4OGJiMDI0ZjQ3YTY0MDY3ZGY0YzdhMDA3ZmI2IGxlZ2FjeS10cnVuaworMjYzMDcgY2M1MGEwOTFmNTczYWZmYzMxMTJkY2NlY2YzZGI4NDQ4NjQ4YmY5OSBsZWdhY3ktdHJ1bmsKKzI2MzA4IDFhOGE3NDk4YjBiYjM3MWFjZTIyZGRmYzJkM2E1NDQzNTQ2ZjQyMTQgbGVnYWN5LXRydW5rCisyNjMwOSA2Y2I1MjgyOWRhMWEyYWFjNjc2OTZjMGI0MzhjN2MyMGE5NmVlY2JmIGxlZ2FjeS10cnVuaworMjYzMTAgNWY1NDU0YTQ4YjVhYjk2ZmUzOTMzNGQwZmQ3NjVkYmM3MmQ4Y2Y2ZCBsZWdhY3ktdHJ1bmsKKzI2MzExIDIxZjMxOTM5ZGMyZjc0OGYyZmY5MGU4MzhiZjM5YzI0Njg5OWE4MDkgbGVnYWN5LXRydW5rCisyNjMxMiA2YTM2MTEyYTNkY2UwNjc1YmIyYmE1NjdkZjU2NGQ5ZjY5YTlmOWM0IGxlZ2FjeS10cnVuaworMjYzMTMgYzhjMWRjMDcyN2NkNTBjZGU3ZGNjNmIzYTFmZjViM2ZmYTRlMWY2ZiBsZWdhY3ktdHJ1bmsKKzI2MzE0IGJmYTMzMGI4NTIwNTA3ZDk5MTI3ZGZjODJiOGNhMDcwZjIzODc2YzMgbGVnYWN5LXRydW5rCisyNjMxNSA5YTU4ZTk3ZGI0NDdjM2Y0OTZhOTY4NTQxODljOWYwNjcwMTY4NzRlIGxlZ2FjeS10cnVuaworMjYzMTYgY2VhODUyZjhhYTQ3NjMwMzdmMDE1ZTIzMDc5Nzk1Yzg2ZDZkN2JhZCBsZWdhY3ktdHJ1bmsKKzI2MzE3IDAzYTgzMzQwYzkxNGE5MmM2ZmI3ODM3MWRlOGY1ODk1NzZiMGNhMDAgbGVnYWN5LXRydW5rCisyNjMxOCA0ZjlkNWVhNGYzN2Q5YzEyMWI4MGE4NTdmMDYwMGVkYjQ4ZmNjOWYxIGxlZ2FjeS10cnVuaworMjYzMTkgNWYyZGNkZDA5MzI5MzZjNWQyYmY0YmE0N2Y0MTBmZWFhODk1OTU5ZCBsZWdhY3ktdHJ1bmsKKzI2MzIwIGY4MTcwMWI3MTIxNjRmNjYyMmVhOGEwNTRjMDYzY2EwNDAwZmE4Y2EgbGVnYWN5LXRydW5rCisyNjMyMSBhMGJiNWZhMWFiMmRjZGUwZWYwYzMzOTdkMjQxMzU1NmM4NWZmMTdlIGxlZ2FjeS10cnVuaworMjYzMjIgM2YyM2Q3MmVmNDEwZjY2NmUwNGU4YjI5MDFhZmRlYmIwYjNhMTEyNiBsZWdhY3ktdHJ1bmsKKzI2MzIzIDZkNzMxYjY0NjcwYjY5MGQyNGIzODg1YmU0ZWY5YTc4NWU4OGQyOWMgbGVnYWN5LXRydW5rCisyNjMyNCA5NTYzYzk2NjRhMGJiOGEyZWNlNjg5ZjM1YjRhMjA0MDIyNWRjMTA3IGxlZ2FjeS10cnVuaworMjYzMjUgYTAwNDczZjMzMTdiOTNmNzU0ODQ1YjE2OTRjNzg1MzNjNTIzNDIyZCBsZWdhY3ktdHJ1bmsKKzI2MzI2IGIzNzMxNGZjYmNjOWY3NTIwNzQ3ZTJkMGE0ODlmOGUxMWFhZDI4NGMgbGVnYWN5LXRydW5rCisyNjMyNyAwODRhYjczNzc3YTM0MTc0ZGU3ZDg5ODMwOWU0MDcxY2JmYjFiYmM4IGxlZ2FjeS10cnVuaworMjYzMjggNTQ5NWI2ZGYwYzY1ZDMwZjdkYjNkNTFjNDhjODgwNzJmZTQwMjE1MiBsZWdhY3ktdHJ1bmsKKzI2MzI5IGJhMDIzNmY4NDMxOGMyMzllZDgzYThiZjU2ZWE4ZmQ1M2FkMDhiMDEgbGVnYWN5LXRydW5rCisyNjMzMCAzMTAwYmEyNjkxM2M3ZDViYWExMTMxZmRhNzRmNTBjMTM2ZDQyNGViIGxlZ2FjeS10cnVuaworMjYzMzEgZjkzYTI2ZDFiZmEwZTlkZDgzMTgxMTgwNmM0Mjc1YzdjMWVlNzE5OCBsZWdhY3ktdHJ1bmsKKzI2MzMyIDkwYjgzNGNlNTcwNzdmZWRhNWZjMTlhMDVjMzI4NDMyYTdkMmY5MzAgbGVnYWN5LXRydW5rCisyNjMzMyA5NTgxOWY3ZjBiY2QyY2RjOGZlNWNhMjliMDQwMTU4NTk2NGRmODIwIGxlZ2FjeS10cnVuaworMjYzMzQgNjk5Y2MxMzlkMmQyNDg2NmExMGJhMWFkYzk2MzJjYmVjZTAzMWE3NCBsZWdhY3ktdHJ1bmsKKzI2MzM1IDcyNzc4ZWM5NGRlYzY2NzYzODI3MzMxMTAwYmI4ZjE4YTAzYmNhNTUgbGVnYWN5LXRydW5rCisyNjMzNiAyOWU2Y2I4MzI0OTdiNWZlOGFkMmU3MzM2OGJiZGYwM2I5NGIwYmQ5IGxlZ2FjeS10cnVuaworMjYzMzcgYTllNDAyNGQ4YTM3NzAxOTU2MDUyOWJhZGUwNTg3MTJkYjUwYmZlNSBsZWdhY3ktdHJ1bmsKKzI2MzM4IDRiYTA5MWNjNzBiODliMTY2NDRhYTc1ZTE3MzdkZmRkMjRkNDAwZDYgbGVnYWN5LXRydW5rCisyNjMzOSAzNjNjN2ZjMTc0YWM4YmRiN2I4MzE5ODFiODljNjNjMzIxMzQ3MWEyIGxlZ2FjeS10cnVuaworMjYzNDAgOWZlOTRjMDFlYWYxZmZmNTAwN2MwMzg0MjU1ZTQxODFiZDBkY2Q3NSBsZWdhY3ktdHJ1bmsKKzI2MzQxIDlmOTQ5MDI3ZDdiYTE5M2JkNjE0M2YyYWE2NDRiOTAzNzA0NjdkMjggbGVnYWN5LXRydW5rCisyNjM0MiBkYzFmYjE5ZDk5MGQ2OTJmMTdjZDFlMGNlNzcxMDVjYzMyYzU0NTgwIGxlZ2FjeS10cnVuaworMjYzNDMgZDA5NzQwYjJlMDNkZTFmODVjYTA4NDM1NmE0NWQwMWFjMDJlY2NhNCBsZWdhY3ktdHJ1bmsKKzI2MzQ0IDFjMjZhMzEwNjY1MzEwZjYzZmU1NzU3ODc3M2ZkMDMzMWEyYmUzNTIgbGVnYWN5LXRydW5rCisyNjM0NSBjNWE2N2Y1MDUzMmU5MTQ3MTFkMGNmZjU5N2JhM2VjOTQ2YjRlNDAxIGxlZ2FjeS10cnVuaworMjYzNDYgZDlkODJjMWVmODY0NTBkZjIzMzU1MDBlOWJlM2JiNzNiYWI3YzZmYiBsZWdhY3ktdHJ1bmsKKzI2MzQ3IDI5OGE3YzUxZDJjMDFkZWRkNWEwODBjNDY5ZTZjMDcxNGNlZTIwZDUgbGVnYWN5LXRydW5rCisyNjM0OCBjOGQ2MWZmMWMwZDZiNzQ5NTQ5MGFhOTlkNDAzZjJmZDhlMzM0NzhlIGxlZ2FjeS10cnVuaworMjYzNDkgYmU1NDQ2NWEzOWM0NTRhNThiMmIxN2MzNGVhOWI5NWFiMGU3MmQxNyBsZWdhY3ktdHJ1bmsKKzI2MzUwIDYxNjYxNTgzYTEyZmFiMmFmMGNmZDBjNTA4M2MzYjMyYWUxMzFhMWUgbGVnYWN5LXRydW5rCisyNjM1MSAyNDY2M2I4NmI5NzUwNWVjYTYwNzIxOTE3ZDQ3M2UyYjIzMzlkNzljIGxlZ2FjeS10cnVuaworMjYzNTIgMWUxYzcyMTQzM2Q4ZTRhM2IwODc1M2NlNDgxYWVlNWJiZjc5NWQwMiBsZWdhY3ktdHJ1bmsKKzI2MzUzIGJlYjMyMTg5MDVhMmZlOWIxNGI2MzRlMjBiMmQ5Zjk0YTI0M2ExNWEgbGVnYWN5LXRydW5rCisyNjM1NCAwYTE5ZjAxNmE5OTQ2NDdlYTEyODljYjQxMzIwYzJiZDNhMTBhNTRhIGxlZ2FjeS10cnVuaworMjYzNTUgMTk2ZGZhN2VkMzQ4ZGJmZTk2MTU3NjI2ODE5NDVkYjIxMDg2Yjk0MSBsZWdhY3ktdHJ1bmsKKzI2MzU2IDY5MGQ3MTJlMjgwN2MzZTFjOGNjNTEyMGI3YTU5YjM0NDcyYmYyMmEgbGVnYWN5LXRydW5rCisyNjM1NyBiOWFkMWU5ZjU5YTg1ZWEwNzllODcwZThlMTY1NjQ3ZWU2NjEwMDVhIGxlZ2FjeS10cnVuaworMjYzNTggMmRkMGY4NGFmMDcxNjkyOTAxNjFlYTM1MzM1YTRmOGEyZGNhNTYwYiBsZWdhY3ktdHJ1bmsKKzI2MzU5IGE5Y2I5MTllNDllMzMxYmJlOGJlOTExZDZmNzljNzcwZmE2N2NhN2IgbGVnYWN5LXRydW5rCisyNjM2MCAyNWE2ZTM5YzMxYTIwNzBlMTUxZmU4ZjZhZmU2ZGFiMDY0NDEyNjU1IGxlZ2FjeS10cnVuaworMjYzNjEgMGIxZTIwYzM0YzhlYTZjMTllNGM1MzE1NTc1OTkwYjlkMmRkOGYxMiBsZWdhY3ktdHJ1bmsKKzI2MzYyIGEwNTYxY2Y0OTE2MzRkYjE0Yzc2ZTMyMzlhZGY2NmFmMGNjMGI0NDEgbGVnYWN5LXRydW5rCisyNjM2MyA4Zjk4Y2IzYTBmMzY4Y2E0M2YxZjUwMzMwYzA0MTBjYThhNGExNGEyIGxlZ2FjeS10cnVuaworMjYzNjQgNGYwNjNiODAzMDhkOTkyM2QwNWE2NzFlNDdhNDkyZDA5OTJhZmU4ZSBsZWdhY3ktdHJ1bmsKKzI2MzY1IDFmN2FmNGZiM2E1MTUyY2ExNDhlMWUwYWMyZjY2M2U0ODU2ZWExMjggbGVnYWN5LXRydW5rCisyNjM2NiBlNTRiOWMzODQ4YjdhMzQ5MjA4MGE0ODlmMzQ1ZDcxNzMwNDEzZWRlIGxlZ2FjeS10cnVuaworMjYzNjcgMWNlYWY3ZjgwNTVkNmYzMGFmYTdkYWZhNWQ3ODJhYTdlZmU5YjQyNiBsZWdhY3ktdHJ1bmsKKzI2MzY4IGRiMDAzYjhhOWJiOTU0NjAwOTA5NWIwMzBhNzdkZDE3ZmM1NzljNzggbGVnYWN5LXRydW5rCisyNjM2OSBkNTA0OGY5YjhiODI1N2IxYzFiZGRjYWI5MTljYjU0YWRmN2MyOGJhIGxlZ2FjeS10cnVuaworMjYzNzAgOGJlNjIzODc0OGM0ZDBhZjNjYzcwYTBiYjY2M2FkNzE3YTg0OWM3NSBsZWdhY3ktdHJ1bmsKKzI2MzcxIDkzMWQ0NDg4MjBhZWVmMzhkYjYyMjAzYmIwOWJkZWMxMjM1YWYwMDcgbGVnYWN5LXRydW5rCisyNjM3MiA5ODkzNzdjZGYwNTMyZDc3NzZjYjY2N2M2YzU2MzdmZDNjN2E4ZTZiIGxlZ2FjeS10cnVuaworMjYzNzMgMDhhYjBhNmJmMWViYjE0YTkwZjRjYjkzMjhjZDBmNmRiYjlhM2EzYyBsZWdhY3ktdHJ1bmsKKzI2Mzc0IGQ2MzIyOTgzMDY5ZTA2YWEyNGM5M2RlOThmZWM5NTk4NWJlNzJiODYgbGVnYWN5LXRydW5rCisyNjM3NSAzYjA4M2IyNjI5NmE4ZTgxMjc2NGQyOGUxMzZiMjdiYTIyNTg2ODE2IGxlZ2FjeS10cnVuaworMjYzNzYgMjAyYWU1Yjc1Y2NhMjQzODI3MjQ4NzNiZmY5OThmYTAyMzQ2MTQzZCBsZWdhY3ktdHJ1bmsKKzI2Mzc3IGI1ZjlmN2E4ZjU2NjZlNDg5ZmJiNTVkMmIwMzkyYWQxZjkzNmIzNjggbGVnYWN5LXRydW5rCisyNjM3OCA0NDYzN2JkN2Y1OWI2NDI5OGMyZDJjMjQ5MmI0YjNiNTg1ZmMwMDE3IGxlZ2FjeS10cnVuaworMjYzNzkgYjFhYjRiYzUyMjQzZDAwZDkwNzQwYzg4MjMyZjMzOWM2ODQ2MWRlYyBsZWdhY3ktdHJ1bmsKKzI2MzgwIGM2MDAzZGU3Mzk3NTU3YjljODRkMzVlYjM3MGNmNjgyNzk3MmFhNTMgcmVsZWFzZTIyLW1haW50CisyNjM4MSBlMjg0ODYxOGJkMTk1OWFkMTQ2YTliMWExZWY5ZTVhOGNlZDA5MTRiIGxlZ2FjeS10cnVuaworMjYzODIgMjQ3MTgzMjcwMDk1OGY3NGM5MjM2YWFiMzg2MTg4NjgxNWIzZDhkNiBsZWdhY3ktdHJ1bmsKKzI2MzgzIGViZTNjZTZjYmZkNzg2MTUyMjhiZWNjZjkwZTNiN2UxYzc4NWY3YzAgbGVnYWN5LXRydW5rCisyNjM4NCA4OTkwMDJhODgyYTA4YTUwOWZmNmIyZWMyNDNhMWZlNDdkN2QyM2VkIGxlZ2FjeS10cnVuaworMjYzODUgNGU1OGEzOGUzYzA2MWFhYzFkN2RlN2Q0ZWFlZThlZTdkYmVjZWMyNiBsZWdhY3ktdHJ1bmsKKzI2Mzg2IDNlODkyNTgyYTg1MGJjOGI2MTE4ZmQ3ZTcwODJiZWE0M2M4OTc5ZDUgbGVnYWN5LXRydW5rCisyNjM4NyBmM2ZjOTdkYTY4YTk4NThjM2Y5YThmOTAzMDRlOGVkZmUxNWI4NGIzIGxlZ2FjeS10cnVuaworMjYzODggMDNjMzk2NDBkODFhODk0MmRjZmM0NWExM2VhOWFlN2MzYTFmNGQ1YSBsZWdhY3ktdHJ1bmsKKzI2Mzg5IGE5YTZjMTE4ZGZiYTc1NDNiMmY2MWVlZjg3NWZhZjc0YzYxMzAyYjcgbGVnYWN5LXRydW5rCisyNjM5MCA4MjkxNDczZmRlM2ViMzJjNTE3YzA3NTE2ZGY4YTk5Y2IyOTYwZGUzIGxlZ2FjeS10cnVuaworMjYzOTEgMTg2MjM3NGFiMjUzOTlkNTVmODY5ODc3OWM1Mjc3YmEzMjQ2ODdhYiBsZWdhY3ktdHJ1bmsKKzI2MzkyIDViZGE1NDZlYmUyNGFjZjllYWIxNzBiZjIxYzZjODA3NTE2YWU1YzkgbGVnYWN5LXRydW5rCisyNjM5MyAxZGIzYTAyOTY1ZTY1NWVmNGVmODUxYTU4ZmQ4YTk3NTlkMmU4M2FkIGxlZ2FjeS10cnVuaworMjYzOTQgOGI5MjYwZTkyMDEwYjU0ZThhYjVlOGUzNGZkNmU4YjU0NjliMmY5NCBsZWdhY3ktdHJ1bmsKKzI2Mzk1IDUzYmE5MTEwYTFmMTc3OTdjNzUzZWMzZDcxMTdlNmJkNDQwZTM3NDkgbGVnYWN5LXRydW5rCisyNjM5NiBiMWVlNDMyMWE1MGE3YjJjNTliYWQxMzAxNDY4YTNiMjcwMmQ0MjM1IGxlZ2FjeS10cnVuaworMjYzOTcgOGY2NDUxODA1MzRkNTNmNmJmNjM3MzU1MTU5ZWFhMzZhYWY2OTU4NCBsZWdhY3ktdHJ1bmsKKzI2Mzk4IDg5ZGI5ZTNmMzVhNzQ4YjE5ZDk1YjM0YTk2NTI1ZThkNTIwNjRjM2EgbGVnYWN5LXRydW5rCisyNjM5OSA5ZDM1MjY2N2Q3MTVlZWMwNzgzNDhjOGQ5NTRmNjAwYTdhYTBiYWRmIGxlZ2FjeS10cnVuaworMjY0MDAgNDU0MzUxZWY1MGYxZDE5NzBjZTRiOWMzYmQzMGNhNTg4MTIzZDY1NiBsZWdhY3ktdHJ1bmsKKzI2NDAxIGNkMjAyZWY2NzI2ZTM0NTdmNTNiNjVjZDU0NzAzNzJhM2E2MWVmNWYgbGVnYWN5LXRydW5rCisyNjQwMiBmMWFhMThjOGM5NmI4MjFjOTViMjBiNTRmMjEwMTU3ZmZkNzNlMTE4IGxlZ2FjeS10cnVuaworMjY0MDMgZTFmOGUyOTU0NzQ5OWY0OTczZmY5YmFiZGIzM2YzYjhmYTBiOWIzMyBsZWdhY3ktdHJ1bmsKKzI2NDA0IDdmZWNkNmQ1OGYzOGVmMTc0ZDNhYjM0MjRiZmU5ZWM0MzQyY2Q1MGUgbGVnYWN5LXRydW5rCisyNjQwNSAwZjM3Y2I1YTdlOWU4Y2Q1YjA4MmQ3ZjUxNjk1NTAwZDQxZjM0ZTY3IGxlZ2FjeS10cnVuaworMjY0MDYgOGIxMjY4YmMzNzFhNjRmZjViYmNmMzc3OWNjYzEwZjQxNTkyNTFjNiBsZWdhY3ktdHJ1bmsKKzI2NDA3IDc2OWUwYTUzOGU1NDNkMTVjZDg3ODZiYjdhZmM0ZmJmYTM2YmFjNzggbGVnYWN5LXRydW5rCisyNjQwOCA3NTEyODljZDFhYjcxMmQ5ZTc2MmExODQ5ZTgyNTBiOTJkZWZlNTU5IGxlZ2FjeS10cnVuaworMjY0MDkgYzE2NjhhODE5MjQyYzUxM2EyYWVjMTkzYzQ1ZGQyZjA4ODhkYTJiNyBsZWdhY3ktdHJ1bmsKKzI2NDEwIDllNmZmNzg3MjgwYTk1ZGQ0YzA4ZmQwYWQ1MTQ4MDAxNmM5Zjc0YjcgbGVnYWN5LXRydW5rCisyNjQxMSA4YThhZmZjY2Y0NjNiYjVjNTc4MGRlNzBmOTg5OTk3Mzk3N2Y5NTIxIGxlZ2FjeS10cnVuaworMjY0MTIgMTllYTAwZmVkYTMzNmNkMTFkOTk0NjkxODAwZDU1ZmRiZTA4MmRkMyBsZWdhY3ktdHJ1bmsKKzI2NDEzIDhlYjZkZDNkODMyMmVmYmQ0ZjhiYzQyMmM4ODEyM2ExMDlhMDllYjEgbGVnYWN5LXRydW5rCisyNjQxNCAwNGZiZjY1YzczZWY2ZmM2YTc4OGZjNDg4Yzc2NWU3MDU1OWE2MTNhIGxlZ2FjeS10cnVuaworMjY0MTUgNzFiZTViYTg4YWE3YTcyYzdhYzAwZTYyODI4ZTM4YTg3NDkzZWM0NSBsZWdhY3ktdHJ1bmsKKzI2NDE2IDNhZjJjYWRjY2Q2YWM2NTIzZTliMGU5YzYyMzU2YmM3YjY0NjY5YTEgbGVnYWN5LXRydW5rCisyNjQxNyBhMTM1OTgwZGQ0ZTliNmI5YmYxMmViZTNkMTkyNzA3YTE4OGM2MGQ4IGxlZ2FjeS10cnVuaworMjY0MTggNmJlMjgzZDE0OGY3ZTM4ODI1NTk0OTQ0MTU5NGQzMGY5MWE2ZDRkYyBsZWdhY3ktdHJ1bmsKKzI2NDE5IDgwMDVmYzFhZWYzOWM4ZjA2MjRlNDE1YzY5MTJmNzBlYWY1YjI5ZDYgbGVnYWN5LXRydW5rCisyNjQyMCA0YzBhYjVkNmE2M2M0MWVhYzI5Y2EyODdjN2Q3YzYxNTI2MjY1ZTYyIGxlZ2FjeS10cnVuaworMjY0MjEgYzMyOGQ3MjUwZTkyNjYwMDM2YzliYThhZDVjYzRkZjAyYTM0YjZiOSByZWxlYXNlMjItbWFpbnQKKzI2NDIyIGRiZDBlZTdmNjBlMDU2OTcwYTZhMDczMWI0ZDU5MGEyMzc4ZmI1ODMgbGVnYWN5LXRydW5rCisyNjQyMyBjMzcxYmIzZTg1MjkxYjllMzM0ZmM1MzQ3NWM0ZjZkMjQyOWFkZWVkIGxlZ2FjeS10cnVuaworMjY0MjQgNTMwYWJhMzExNmE0MGQwODVlNGExMDg5NzlmNjAzZTI5YmViZjNmOCBsZWdhY3ktdHJ1bmsKKzI2NDI1IGRjMGMxMjEzYzc5YWJkZGEwOTM1YjM4MDY0YTNmZjIwYWYzYzJiYjggbGVnYWN5LXRydW5rCisyNjQyNiA5MzhmZjNjYjUxYzI2YmZlNDE5ZWI2NWNlYjdhZWNlMzdiOWQ2MThmIGxlZ2FjeS10cnVuaworMjY0MjcgMDNmZjM1NjliYTA0Y2FmNmM1NjgxZDI4MGVlNmFkZGQzZjBjMTY5ZCBsZWdhY3ktdHJ1bmsKKzI2NDI4IGYzNjc3NDE0YmMzZGVmNmEwOTA1NWZjNmVhNzQ5NGQyYjYzMzZlYmQgbGVnYWN5LXRydW5rCisyNjQyOSA0MmM5OTcyOGI2Y2NhMmY5ZWMyYjc4M2U1M2YxNGNjNzY3Mjk0ODEwIHJlbGVhc2UyMi1tYWludAorMjY0MzAgYmJhYjNhMTdiNGNmNGUzYzdjZDNmNGY0YzViNzEyZmE1NTAwOTE3YSBsZWdhY3ktdHJ1bmsKKzI2NDMxIDk3Yjk0ODBiYmVlYzc1ZTYxNTljNTQwOTcxMzc3MDczNDVkZTM4OWEgbGVnYWN5LXRydW5rCisyNjQzMiBmZGE3M2JmZjIxZmZhNTZkNWE5ZWNlMmYyNDljZjFjOGNiYzhjYjMyIGxlZ2FjeS10cnVuaworMjY0MzMgZDg5ZTU1NzNkZDIzN2UxM2IwNjI0N2FkMjA1M2RiOWYzZGQyYzFlMCBsZWdhY3ktdHJ1bmsKKzI2NDM0IDIxZDI1MjAyODQwNGM4MGRkODIyOWVmOTJjNjhlZDlhODJlMDE0ZDIgbGVnYWN5LXRydW5rCisyNjQzNSA0ZmY5MGM5OWMzMDJhYTZiZDQzYzRkMjI4MWVjM2ZlMWZlZmI3NzIyIGxlZ2FjeS10cnVuaworMjY0MzYgYjdlODc3MzJmNmFiOTQxM2Q1NGZkY2RhYTllYzk5ZmYzNGI2ZTE2OSBsZWdhY3ktdHJ1bmsKKzI2NDM3IDBmY2U1NTY3NWNiY2IzODBjMjQyZjM5ZGVmNzNiOGUzODgzMTQ4YTQgbGVnYWN5LXRydW5rCisyNjQzOCAzYmQzMzZiNmNiMDNhNjdmNzNlNzEwZWYxNjY0MGFkMzE3ZjVhM2NlIGxlZ2FjeS10cnVuaworMjY0MzkgNGFkZGY0Y2VhZmM1NDdmNDdiZmUwNDhjNTdiMmVjNjgxZWEyNDUwNCBsZWdhY3ktdHJ1bmsKKzI2NDQwIDk2OWMxZDExOGM5N2RlYmZkM2ZhNmE4ZmY2YTEyY2FiNDkyZTUyNGEgcmVsZWFzZTIyLW1haW50CisyNjQ0MSAxMGUwMTIyYjVmZWQ1Zjg4ZDcyMWRhOWRkOWFkN2Y1OTU1NzhmODFkIHJlbGVhc2UyMS1tYWludAorMjY0NDIgM2JmNzYyZTBlMDZlZDA5YTkxZTNlMjY2NDQxNDJmYTFiOWVlYmEzZiBsZWdhY3ktdHJ1bmsKKzI2NDQzIDM5M2U5YTIxNmE4OGI1MDAxMDlmMDMxODM2ZWE2Y2ZmMmNkMGQwN2QgbGVnYWN5LXRydW5rCisyNjQ0NCBlNDg0ZjMwZGFjNzdhNjE3MWEyN2I5N2VlMzY1NjAxYWFlOGM4NzlmIGxlZ2FjeS10cnVuaworMjY0NDUgOGMzZGQxYzJlZjQ3OWVlNmVjNGU2MGUxOWJhYThlZDM1N2UyNzJkZSBsZWdhY3ktdHJ1bmsKKzI2NDQ2IDQyM2EzNjc4YmM3YzcxNzZlYTYwYWIxZTIxNzdhOWI2ZmExOWVhZGQgbGVnYWN5LXRydW5rCisyNjQ0NyA0ZTgyNTIyODQ3ZDBkZTgxZTAwMzc3NTA2M2M1ZWFiNTkyZDk0YjEyIGxlZ2FjeS10cnVuaworMjY0NDggMDlkYjNmNWQwYmQwZWEwYmYzYmIyYTVmNTlhMTY0ZDNkYjNkYWYyMiBsZWdhY3ktdHJ1bmsKKzI2NDQ5IDhjN2EzOWQwZmVmZDgwMWY2ZGRjODljZTBmZGZhYTEyNmYzOTBjZTcgbGVnYWN5LXRydW5rCisyNjQ1MCAzMTRmOTJhMjQyOTNiMmFiYmNmMDdjZWEzZTdkNTdjNDAxNjQ1YzE5IGxlZ2FjeS10cnVuaworMjY0NTEgYjM5NTQ3N2Q4NGQwZDc2OTk3MzA3ZDRkYTY4OGEwMzc4M2FlN2JlNyBsZWdhY3ktdHJ1bmsKKzI2NDUyIDk5NzU3NTYyYmZiOTU3ZmQ0YjU5NDk3OWYzMDllY2U5Mjk3NzJiOGUgbGVnYWN5LXRydW5rCisyNjQ1MyA5ZWJhNjBhY2UyZGFlMGMyNWM0ODllYzZmNWEwNTlkYzI2YTc1OTViIGxlZ2FjeS10cnVuaworMjY0NTQgOTExZjlmMTRlMmQ1N2U5YjYyNDJjNmEyYWVjMjk0NTZkNWFkYjdiYyBsZWdhY3ktdHJ1bmsKKzI2NDU1IDJhNTQyNzg0MDYyZjVhOTNkNWMzYzA5MDVjNjI4Zjk5MzFlMjU2ZGYgbGVnYWN5LXRydW5rCisyNjQ1NiBiNWFhZTJhNjVmNmQxMjJhMGY3MzVmYTJlNWU5Yjg0NjI2M2Q3MmYxIGxlZ2FjeS10cnVuaworMjY0NTcgZjg2NzlmNjc5OGJmNjdiOTE0ZjM3MWUxNzRjMWNiNzY3MTgwODQ4NyBsZWdhY3ktdHJ1bmsKKzI2NDU4IDAzYWJmYTdkYjQ0OThjNWNiOWNlZGIwZjlkNTg5YzJlYWU4OWMwZWQgcmVsZWFzZTIyLW1haW50CisyNjQ1OSA3MTcyY2VmMjNiMDU0OWViZmU2OTNmOGJiOWY4NmM5YzM2ZTUxN2FjIHJlbGVhc2UyMS1tYWludAorMjY0NjAgNzM4OTVjOTlmY2M1YmJlZWM3NWUxYzczYjJhODVhOTkwMTg3OWJmZiByZWxlYXNlMjEtbWFpbnQKKzI2NDYxIGI2ZjQzMmIzMjE0MzhjYWNiNTRjYjg4NzVkYmMwM2IwYTBiNmY5Y2YgcmVsZWFzZTIyLW1haW50CisyNjQ2MiA1NjllMzgzYmUwZGE5YTZkNmM3ZTNmYzZjNjlmZmEzNzA2OGFlZDE1IGxlZ2FjeS10cnVuaworMjY0NjMgZDQ0NTQ1YzRhNDdhODJmMzIwZTUwNWIwMjI2YWNiMThjNDY5N2M2OSBsZWdhY3ktdHJ1bmsKKzI2NDY0IGQyN2U5N2I4YTg2NmU2ZGM0ZmJjY2MyOGM1MDZjNmM1NDU2MWQ3OTUgcmVsZWFzZTIyLW1haW50CisyNjQ2NSAyNmUzZmU4YTg4ZjU3YjcxY2NhZmJjMmRhMjM4ZTcxZDhmZDM2ZGZmIGxlZ2FjeS10cnVuaworMjY0NjYgMDFmNzNmZDY2MzEwOWZiMTIyNDNkOGJlNTU5ZWNmMzE2MDE4M2M0YSByZWxlYXNlMjItbWFpbnQKKzI2NDY3IDk3ODM2ZjYxOTNkYzMwNzE1YjgyMGZjMTEwYjhmMGRiYzZiMTQzNzUgcmVsZWFzZTIxLW1haW50CisyNjQ2OCBmNWVkZjcwMjUyNjc2ODVlMzE3Mjk1MmViYjZjZWZhZjFmNzY0ZWM3IHJlbGVhc2UyMS1tYWludAorMjY0NjkgZGY0NWFkZjc3ZDM2ZGZkZTRkOGI2MTRmYzJjYzczNDYyZmVkNzg1MiByZWxlYXNlMjItbWFpbnQKKzI2NDcwIDdiMDBkYWI5ODhjZjQ0MDc4NmUzOWNhNTg5OTU3ODUwZWMwYTc3ZTMgbGVnYWN5LXRydW5rCisyNjQ3MSAyZDNhMmJlYjNkNGQ3MDI5ZjNlZTk4ZDU3ZWQ1YjczOWM0NDZiNjZlIHJlbGVhc2UyMi1tYWludAorMjY0NzIgNDA3OWU5YzIzZmMxNzI3NjNiZWI2ZDhmOWY0YmY5YTE3ZGFjODMzMCBsZWdhY3ktdHJ1bmsKKzI2NDczIGEzYzk4MmQ0MTJiNDZlMWNmOTRjZjQ0YzcyMzMzOGQ3MGY5ZGU0ZmEgbGVnYWN5LXRydW5rCisyNjQ3NCBlNzUxM2UxNDJjNzBlZGZiYzkyMzQxMDY5ZmIyNDg2NzVjNjcwMWVhIGxlZ2FjeS10cnVuaworMjY0NzUgMWRhMDJiYmE2Mjc2NzNhY2ZjNDNiMDNjYjQxZTAyY2RiMzdmMjUxOCBsZWdhY3ktdHJ1bmsKKzI2NDc2IDcxMjFkN2Q1NzJkMDFhZjMwYjYyMjZkODUwZmE3NzFlNWNiYmUxMWEgbGVnYWN5LXRydW5rCisyNjQ3NyBmZGU4NzhiYzBlM2JlNWU0OTgxNzhmMTVjMmRhZmQwZWQyZDdkNTk1IGxlZ2FjeS10cnVuaworMjY0NzggMGZmYjU0YjFjM2VhNWNhMWU4ODc5NGNmMTllZDMxMmJjODU4Mjc1MiBsZWdhY3ktdHJ1bmsKKzI2NDc5IGY5MTdlN2E2ZTkxMWI3NzFlMWQ2MTQ1OGRkZjM3YmFmYTJlNTBmYTMgbGVnYWN5LXRydW5rCisyNjQ4MCBmYTQxZjI0MTA2ODg3MzEyYjVmNjIyY2IxMjk5NGYxNjM1ZGVjYWRiIGxlZ2FjeS10cnVuaworMjY0ODEgNzM3ZjQ0NThlNWRlMDExZTAzYzMxOWUwOGUzOTUzNjhmZTc5NjdiOCByZWxlYXNlMjItbWFpbnQKKzI2NDgyIGIwZTU5ZjFlNDk1YWM2ZGI5NTY2Zjg4N2RjODIyYTM3MjU3ZmY0NGIgcmVsZWFzZTIyLW1haW50CisyNjQ4MyA2MjdiN2NhNTIyMWFjMGM5MWVhMTkzOTFhNzIzZmVlOGJjNTBjZWFiIGxlZ2FjeS10cnVuaworMjY0ODQgMjJkYTI2MDgyODVjZmU3N2E0ZWFiYzY2NWZjZTdiNTIzNTY1MDNhNSByZWxlYXNlMjItbWFpbnQKKzI2NDg1IDBiYTIzMzQxZTVjZmY0ZThlNWVkMWI3Njc2ZmU1NzY5ZjdhYWU3ODUgcmVsZWFzZTIyLW1haW50CisyNjQ4NiA5MDgwNWZjYzZjNzAyNTczZjExOGViOTlkYmM3ZGEyNmRkMzc1MWY0IHJlbGVhc2UyMi1tYWludAorMjY0ODcgMzY4ZTgwODFlNzNjNGRiZDI4MDQzZWJlMWM4YmFhM2U2NzhkZjFjYiByZWxlYXNlMjItbWFpbnQKKzI2NDg4IDcwNjUwYWUxYTJjZjAwMjNmMTczODFiZTI4ZGVmYjc4NDEwNDIwZTggbGVnYWN5LXRydW5rCisyNjQ4OSA1YWFmM2Q3YjhkOGMwODkzYjE1MGVmMGRiNzc5ZWQwZmJlNDQ4NmRmIGxlZ2FjeS10cnVuaworMjY0OTAgYWQ0NGJmMTE3OWViMjU0YjVjYTk3Yzc1NWZjY2JmZTJiYzU1OWFjZCByZWxlYXNlMjItbWFpbnQKKzI2NDkxIGRlMDliODc0ZjA3YTY4OGNjYzY2MjcwYjc4M2U3YWIwNWQyODgxM2MgcmVsZWFzZTIyLW1haW50CisyNjQ5MiA5MGFkYmNmNjIwMTM2MWM3ZGJiOGNjODM1MzlhZDk3NzUwMmM0NDUzIHJlbGVhc2UyMi1tYWludAorMjY0OTMgNjc1NzhhODMwZDgxY2EzOTI2ZWJlNjk2YzkxOWUwMzliNWYwMzUyOCByZWxlYXNlMjItbWFpbnQKKzI2NDk0IDZkYTFmOTkxN2U5YjNlNTMzNWZiNTVhYjM4MWJkNDJhNTk3ZjdmNDggcmVsZWFzZTIyLW1haW50CisyNjQ5NSA0Njk0YTBkZjE3NGU0OGI5NTFiYWVlN2I5YmM1Y2NlZDFjZjMwNjNjIHJlbGVhc2UyMS1tYWludAorMjY0OTYgYTA0N2YxNmZiOGIzZTcyMjBjOTIxNWI0OGQyNzUyNGU2ODE5ZTgwNyByZWxlYXNlMjItbWFpbnQKKzI2NDk3IGQ5YjcxZjYyODE0ZjhkMWE1ZmU2ZDk1MTlmNDFiODljYzVjYTI5YzggcmVsZWFzZTIyLW1haW50CisyNjQ5OCA5MWEyMjI4ZjMwMjFiNzkyZDBkZDhkMjIzZTk2MTQ5NWI4NDJiMDYyIHJlbGVhc2UyMi1tYWludAorMjY0OTkgYWI1MTIzMjc0Y2NmZjNmNmYwZWI5NDc4ZTFjZGJjZmYyNmFhYjg5NSByZWxlYXNlMjEtbWFpbnQKKzI2NTAwIDJhMTExNDRmOGYwYzA3NzgzNjYxOTk4YTRiNjdmY2NjYzE3YzA1ZDUgcmVsZWFzZTIyLW1haW50CisyNjUwMSA0NmZmYjE0OWVhNzNhNDQxNDQyNjViMmVkYWFhZjk5Njc4MmMzMTcxIHJlbGVhc2UyMi1tYWludAorMjY1MDIgOGJhMzBlMmQ4YWU2NTZkMmUyNzZkNTFjOGNhNzVkZDRjMThlMjdjYyByZWxlYXNlMjEtbWFpbnQKKzI2NTAzIGI3Zjk1MDZlNjBjOTRmZTAxZmY2ZmQ5NmJiOTczNjVlMzg4Mjc2ZmIgcmVsZWFzZTIyLW1haW50CisyNjUwNCBhNTc1ZTZlZTg1ZDk5Njk1NTE0ZDFhOTA1NTY3NDBiYTBjZWJjMTNmIHJlbGVhc2UyMi1tYWludAorMjY1MDUgYTM2ZjlmYjJjNDA0MmFmMjY0NTI4NjQ2NmUyNzZhMjM2MDI3ZTM1NCByZWxlYXNlMjItbWFpbnQKKzI2NTA2IDBlY2VmOGJmYmQ0YjAyMDAyNTk3NzQ2Y2E0YTQ5ODFlN2ZjMGJhMzUgcmVsZWFzZTIyLW1haW50CisyNjUwNyA2MWNjMDg3NDVkMzE1OTM2MGFiMzRhOGFlMGM5ZmM2YjA4M2JkZTZjIHJlbGVhc2UyMi1tYWludAorMjY1MDggZGJmMDEzY2MzZGVlZTBhNDVmZWM5NDZkZjEzMDFjNGQ3NjI0ZTA4MyByZWxlYXNlMjItbWFpbnQKKzI2NTA5IGM0NjA5Y2ExN2UzZWEwZDA3ODUzYmZiM2NkZjAyMjk1ZjExOGNjZDEgcmVsZWFzZTIyLW1haW50CisyNjUxMCA2MmZhYmJkNDU3YmU2YjRiNDljYmVkYWRlMDg5MTIxNDk1NDliOTFmIHJlbGVhc2UyMi1tYWludAorMjY1MTEgNTIyNTdhZmZlMGM5ZWEzYWE1MzI3NzgwNjc4Y2YyMjA5MDJhZTlmNSByZWxlYXNlMjItbWFpbnQKKzI2NTEyIGY3NjliNDk1OGU2NjYzOWZiZjZjMjM3YjZlN2JjNDM5MWUwNWE1NTAgbGVnYWN5LXRydW5rCisyNjUxMyA5NTA1MjcxNTY1MWI2MDBkNjA0ZWY1OTc0Yjk2YTA1OWI1MWI1NThjIHJlbGVhc2UyMi1tYWludAorMjY1MTQgOTM2ODU2N2ExMDQ3Y2U3OGI5OGI5MmU3YWQ4Njk5M2FlYzljNWY1MCByZWxlYXNlMjEtbWFpbnQKKzI2NTE1IDFlYjQyZmM2OGI1Zjg1ZThmMjljYWI2YWYzMDMwZmU4NjNmZDg3OGUgbGVnYWN5LXRydW5rCisyNjUxNiA2MWViNzE4MjUzNWVmMDg1MDljZTA2ZjhmOGE4OTIyNTk4MzNkYzY4IGxlZ2FjeS10cnVuaworMjY1MTcgYWFlODE0Zjk0YmFkZGZhZDA4ODk3MmJlMmFmNDE3ZTY5ZTYzNzRiNiBsZWdhY3ktdHJ1bmsKKzI2NTE4IDU0YWY0NDk2NzYwNDU1ZjU1ZDE5ZWRkYzQ3MGYwOTkwMzRmYmVlODAgbGVnYWN5LXRydW5rCisyNjUxOSA0YWIyMWUzNTQ0MDNlMDViZmExY2M1ZWRkNTY3ODQ2YmVlYTFmYmE4IGxlZ2FjeS10cnVuaworMjY1MjAgZmNhMzc5YzMwOTA2ZTFkNmZhYzliY2I0YTg1ZWJkOTMxNGJlMmUwNyBsZWdhY3ktdHJ1bmsKKzI2NTIxIGM1NDhlNzI2YjNiYzhiZTZjN2RhMGJlY2Q2ZWFhODUyMTg3NWE5ZGQgbGVnYWN5LXRydW5rCisyNjUyMiAzNjJjMWI4MWVlOWM3OWViNmU2YWYzZTE3NzA4YmM5ZGRjZDNlNzViIHJlbGVhc2UyMS1tYWludAorMjY1MjMgZGQ0MTYzNzRhYjM4NjJlMmVhZDkwZDNjYTZmYTFmZjY1ODgyMTM2NyByZWxlYXNlMjItbWFpbnQKKzI2NTI0IDhjMTQ0MjQ1YjMxNWNmNDQ0Y2FlMzczYTI1YmM5NTJmZTViYzk5MDEgbGVnYWN5LXRydW5rCisyNjUyNSA4ODNkNjlkZTU2MGJmZjkxMWY3MzJmYjkwNDI4ODdjNmJiNDQ1ZjYxIHJlbGVhc2UyMi1tYWludAorMjY1MjYgMTk1ZmU1ZmY1MGFiOTAwYjFjMjUyZDRjMzg4ZmZkYzgyYWI3MzY5ZSBsZWdhY3ktdHJ1bmsKKzI2NTI3IGYwZGM5N2JiOWMwZGZhNTcyNmVlYmUyNzkyNTE2YjM2M2ZkMGUwNjMgbGVnYWN5LXRydW5rCisyNjUyOCAwYWIyNDVkZTdkZGE3NGNkYzQ0ZDUzMmNmNmJiOThjMThmZmMyOWJkIGxlZ2FjeS10cnVuaworMjY1MjkgYjYzZjRhMTllYmRkMjdmODcyNjRhMGM5ZTVkYTVlMTRkY2YxMTY1YyBsZWdhY3ktdHJ1bmsKKzI2NTMwIDcxM2ZmODg5ZDA5NDg1OWQ0MTNmNGUxYjIxOTQ3Y2ZjMGRmMmUwNjIgbGVnYWN5LXRydW5rCisyNjUzMSAzYTBhMmYwNzdiOGYwMTA5ZDRiMGEwMWJlNDcyNDQ4NGEyMDYyMTdhIGxlZ2FjeS10cnVuaworMjY1MzIgZDVjZTdmZjUzMWJkMTZiZWQwMTYxYzdhNTMyNmQxNDgwZjhhNTNlZSByZWxlYXNlMjItbWFpbnQKKzI2NTMzIGYwMzU3MjA4NDg1MWI0OWVmOGZhMGQ5YTAzZDM0ZTBkN2M4NGI1MGQgbGVnYWN5LXRydW5rCisyNjUzNCAyZmM5NGJhNWRiZmYxMzI5MjdkY2U3ZjU1OTU0ZGE3ZGVkYTEzOTJiIGxlZ2FjeS10cnVuaworMjY1MzUgZTFkMGQ3YzY5OTlhNTE2NzM4ZDc2ZDU5MDQ0MmVjZGIzMzEzMWIzNiBsZWdhY3ktdHJ1bmsKKzI2NTM2IDE2MzI4NzYxZWFiZjU5NGNkMjNhM2I5NDk0NzYxNTJjZjUxOWM3NjIgbGVnYWN5LXRydW5rCisyNjUzNyA2OGQ3MGI0MTAwOWVkOTY0MTBjZjg0MmRkNDkzZDZjYjNlMmZkMTgyIGxlZ2FjeS10cnVuaworMjY1MzggZWY3M2ZmN2E5ODllN2YwZTU5NjQ5ZGViODFmNDQ1MmY0YjY5NDc3OSBsZWdhY3ktdHJ1bmsKKzI2NTM5IDhjZjFlZjgxNGVlNDNhOGI4Y2M4ZDU2MThhZDEwYmZkMDUwYjg2MDIgcmVsZWFzZTIyLW1haW50CisyNjU0MCA2MjE4ODI4YjBhMTEyYmRlYTg2NmNiMGU0ZWFiMjQxYTJiNjIwMDgzIGxlZ2FjeS10cnVuaworMjY1NDEgMWE2MTgxOTZlMTVhOWM1NzMwMzVkYjk2MzNlOWJiNDExZGQyMTBhZiByZWxlYXNlMjItbWFpbnQKKzI2NTQyIDFkZjkzMThiMmI4ZTA2ZTNmMDFhOWEyNjNjZWRhNWJiMjQ1ODNiZjggbGVnYWN5LXRydW5rCisyNjU0MyAxYTc3YWY2MTExMDU5ZmJkNzRkNzJhYTkyYTMwYWEwYjk2NTA3NjViIGxlZ2FjeS10cnVuaworMjY1NDQgOTk4Y2M0ODQ2NGZlZmFiN2YwMmZmMTQ2YmE4M2IwMGVjOWU2NjdiZCBsZWdhY3ktdHJ1bmsKKzI2NTQ1IGMyNzdlYmMzY2UwZjE5MTNiYTJlYzE1OWI4YjI4NGM0YjUwMWUyZDMgbGVnYWN5LXRydW5rCisyNjU0NiBlNzc5OTkxNjU5NmQzOWU1OTY1Y2ExOWQyMWY1MGRkZmM0YzJlNDEwIGxlZ2FjeS10cnVuaworMjY1NDcgYjQzNTJmNWEzNDUyMjEyNDY4ZDU4YWI5NmIzMTdmNmYyNDc1Y2I2YSBsZWdhY3ktdHJ1bmsKKzI2NTQ4IDdjMGU4ZGJjZjU3YTU5NGVlZGZhNDE2OGRmNDVjNDkxODQ0YmZlNTIgbGVnYWN5LXRydW5rCisyNjU0OSAyZmQ2M2Q3NWU5MmY5NTI4NTRjZjk3ZWY0ZjM4YTJkMjhjNDhmNThiIHJlbGVhc2UyMi1tYWludAorMjY1NTAgMzc0MzVmOWYwNGQ2NDU1MmZhMDA0ODZlYzgxYjM5MmQ3NDdjM2EzZSByZWxlYXNlMjItbWFpbnQKKzI2NTUxIDBiYzNhNDFkNGU0MGEyNmI2NzE3NzVkMTFlYjgzMTIxODQzYmI1YjMgbGVnYWN5LXRydW5rCisyNjU1MiBkNDc4ZjhhZmMzNmRkNTE4NGM4ZGQ3M2ZhYjhmZDg0ZmI3ZDk0MjA0IGxlZ2FjeS10cnVuaworMjY1NTMgZjFkNjE0MjEyOGQzZTQ5Mzk5MjdhOTliODBmZjFhYjdkMDY5Yjg1OCBsZWdhY3ktdHJ1bmsKKzI2NTU0IDUwOGZkOTUyYzllOWYyM2U0M2U5MDQwMjVjZTg5ODFhZDZhMjcxNmQgbGVnYWN5LXRydW5rCisyNjU1NSAwYzhlNzYyYTY3N2M0ODFjYmUyOTE1OGVjOTk2ZTdmNzQ3YWI4NzJhIHJlbGVhc2UyMS1tYWludAorMjY1NTYgZjNiZTA1ZTYyYWQxYThkNjhkMDg4YTRmNzIzYjJmYTY3MmRlMmQ4NSBsZWdhY3ktdHJ1bmsKKzI2NTU3IDYwZjI0MjU4OWMzMjdhOTM5NTAxMWQxNzJmOWQ0ZGQyOWMyNmYwZWMgbGVnYWN5LXRydW5rCisyNjU1OCA2NzU5YmUwODhkNjhiZGU2N2NiMzQxOGY2ODZlNmU4Mzc5MDMzNDFmIGxlZ2FjeS10cnVuaworMjY1NTkgOTUwYTIyZWI4Y2M4YWRlZjVhZDY5MjJiNjhmNDdlY2ZmMTg4ZjQxNSBsZWdhY3ktdHJ1bmsKKzI2NTYwIDIxN2VlYTlkNjYxNTk1ODEyNGI3ZmY1ODljNGRmMTA2NDY2MzFlYjUgbGVnYWN5LXRydW5rCisyNjU2MSBkMDc4Zjg0OGFjM2I4ODBmNWMxYzg3NTk5ZTU0MzE0Yzk1NThiNDMyIGxlZ2FjeS10cnVuaworMjY1NjIgYzQwOGU4YjI2NzVhYTJlYWU3MjExOGFjNDFlYzI3ZTg5MTRhOTI4YSBsZWdhY3ktdHJ1bmsKKzI2NTYzIDQ5YmY1YThmYTE1MTdlMWJmOTFhMDU3YTlhZjQ0MmYwOGEyMzI5MTQgbGVnYWN5LXRydW5rCisyNjU2NCA1ODNjMjI2YWZkZTZjYjIwNGEyYmRjYjdiMjYzZjkyMWMwYWRhMDg4IGxlZ2FjeS10cnVuaworMjY1NjUgNmU1NjhlZTMxYTljZWMwODMwYTVkOWIwYjA4OWY5MDMwM2NlMjcyZSBsZWdhY3ktdHJ1bmsKKzI2NTY2IDhmOWFkMmMwNWRhZGVhOWU1YzNlNDE0YjA3MDA5N2JjZjllM2IwNmQgbGVnYWN5LXRydW5rCisyNjU2NyBmZDYwOWQyYzE2NjkxZjAyMTAyZjg3OTU1Zjg1YjllODFlMTQxMWU3IGxlZ2FjeS10cnVuaworMjY1NjggNWMzMDE3NzU2NjVkOWNmYWQ4NWY5ZGY3YzM5MzNlNTE2MTQxNjZiMCBsZWdhY3ktdHJ1bmsKKzI2NTY5IDM4MmUzN2FjMzc0ZGEyY2E3NTRkNzY2YmY5ZWNhODgyNWIxMjE1MzIgbGVnYWN5LXRydW5rCisyNjU3MCA2YjJhZjZkYWZlN2M3M2Y1NjhhMmY0YzBkZTU5YTVlMTQ0YmM4ZGNkIGxlZ2FjeS10cnVuaworMjY1NzEgMGU0NDk3ZmIyZGU4ZDRhMTA5NDgxZmZkMjFmZmZjNzczODQyNzAwMSBsZWdhY3ktdHJ1bmsKKzI2NTcyIGUxNmRiZjg3NTMwMzczODNiZTg1YzE2OWMxZTI0ZTE4MjRlN2QzMzQgbGVnYWN5LXRydW5rCisyNjU3MyBlZjkxOWQyOTVhMTIwZDY1ODVhOGIwNDg5OGIwZTc3OTdjNTA1NjNlIGxlZ2FjeS10cnVuaworMjY1NzQgMTlmNTNhYTRlMWU1MTQ3NzMyODk0M2JmOTg1ZjA4NzhhMDFkNjMyMSBsZWdhY3ktdHJ1bmsKKzI2NTc1IGQ4ZTlmNmY1N2YxMzM2NTMzOWZiNDhjOWQ0YTEyOGYyYzlkODRhNWEgcmVsZWFzZTIyLW1haW50CisyNjU3NiBiMTlhNWFkYjY5OTAwNDkzYTZiNmJjMzAzZjM3NTlmMDU3ODcyYTE5IHJlbGVhc2UyMi1tYWludAorMjY1NzcgYmE4ODk5ODlhN2ViMDFmYWRmMGE2ZGIxMzY5Mjk5MTE3NGIzNThhYyBsZWdhY3ktdHJ1bmsKKzI2NTc4IGQ2MTRhZTk0OGJjM2FlM2I1YmViMWY3ZjI2YmE0YWMxZjgyNTYyZDEgbGVnYWN5LXRydW5rCisyNjU3OSBiMjM2ZDIwODMwZmU1M2Q1OGYyNGJlYWM3OWJkNTM4YjFlM2E3NDhiIGxlZ2FjeS10cnVuaworMjY1ODAgYjA4YjUxZGNlMjY0ZTNmNjQxODhlNzRkZDlkMGI5NWI2ODY5N2NhMiByZWxlYXNlMjItbWFpbnQKKzI2NTgxIGJkMDhjNjk1NWU5YmRkMTY0NDUwOWY4YmVjNWQ0NTNlZjgwZTVlMGIgbGVnYWN5LXRydW5rCisyNjU4MiA1NTRmMjE5N2E3YTc2YzhmNzM5MTMzNWE0ZTdiYzFhYzM0NzhiZWI3IGxlZ2FjeS10cnVuaworMjY1ODMgYWI0ZmE3OGFmZGRmNjE5YTI2YzdmY2NiZmVkZTY5MjllN2RmMzlkMyBsZWdhY3ktdHJ1bmsKKzI2NTg0IGY1YWVlYWFmMDM5NzRlMWU3ZTVlZjdhMGJhNjIyM2I4NzVkZWJkMWUgbGVnYWN5LXRydW5rCisyNjU4NSBlZDVkNzU5MTJkNjBkYTkxZDViOTNmMjM2NjEwMTc0ZDNmYWE0ZGFhIGxlZ2FjeS10cnVuaworMjY1ODYgZTYzOWUzNGVmOTAxMWU4ZjNhZjM4YjdjNWMxYWVkMTFiZGEwOTU1NyBsZWdhY3ktdHJ1bmsKKzI2NTg3IGRkMzUwYjYzOTMwOTk5NDY4ZDM4ZDBjY2MyN2UyMWM2ZGJlODFiYzkgcmVsZWFzZTIyLW1haW50CisyNjU4OCBhNDMxODkyM2M3YWEzMzQ4NjRkMWI2YzhiMzU2Y2E1MTk0NDM1NzM1IGxlZ2FjeS10cnVuaworMjY1ODkgNmRiNmUzZGM4MzY2YmVjNjY2NDI1ZTY3Y2UwMmI3YTM0ZDE0ODE1NCBsZWdhY3ktdHJ1bmsKKzI2NTkwIDJiNDdkMGRjZmE2NjZhOGQ1ODFjMzRiMGE2YWJiNzM4ZDUxNTk1ZWUgbGVnYWN5LXRydW5rCisyNjU5MSA4NjMxMjU1NDUzMDE1OTMwNmI0ZmRjODQ0ZWZkNDYwY2FkYTUxNjM1IGxlZ2FjeS10cnVuaworMjY1OTIgOGJiOTBlOGJmMzYzZDNkMGY0ZGVmYjE3MzI3M2U1M2U3NmVkMTE4YSByZWxlYXNlMjEtbWFpbnQKKzI2NTkzIGQzMjU0MzMzN2EyMTc1ZTViZGU3Mzg5OTM5MGQxYjIxMDQyYTFjODQgcmVsZWFzZTIxLW1haW50CisyNjU5NCA0MGExODgwNTUzNjkxZmNjOTliM2U1YWNiODQ1YzI1NjkyYWFmMjdiIGxlZ2FjeS10cnVuaworMjY1OTUgYWVmMjQ4YzE2NDVhMjQyYmJjNzE1ZTA2MzFjZTkwNmE0ZTEwYmFlMCByZWxlYXNlMjEtbWFpbnQKKzI2NTk2IDc3MGMyZDJmNTQ3Mjk5YmQ1MTIzMDYwMTVlZGM1MTIyNGE0MjA0ZDUgbGVnYWN5LXRydW5rCisyNjU5NyBmNTFkMWEyZDRhNGExZmFkMWFhM2JhNDZkZTRiNGRiNWMwNDJhMDY2IHJlbGVhc2UyMi1tYWludAorMjY1OTggNWQxMzVlNDE0Yzc2NDMyZGQzZTIxNDIxOTkxYzJmMjllMTRkYmQ3OSBsZWdhY3ktdHJ1bmsKKzI2NTk5IGQzMjhlNWJiOGE4ODBmNjQ4MjU4YjI4YjE1MTFhODdlNTk0MzhhNmIgcmVsZWFzZTIyLW1haW50CisyNjYwMCBkYWJiMGEzZjQ3YTU1NDIwMjA1MWZiOGQ1ZDY3OGJkZGIyYjJkNmRjIGxlZ2FjeS10cnVuaworMjY2MDEgNzZjNDUwMzcxMTNmZGEzNjNjMjA5NWYyYjJlNDVjOGVmNTA0ZGI3NSBsZWdhY3ktdHJ1bmsKKzI2NjAyIDMwNDU4YTExYjVlMDkzYWQ1MzBhZmY5ZTg0NTQzYWVmODc3MjAxY2QgbGVnYWN5LXRydW5rCisyNjYwMyA0ZTIzNGI4NzE3MGIwOGVlMjZhNWRhZDlhOWI3YzhiNDZkOGIzMjJlIGxlZ2FjeS10cnVuaworMjY2MDQgMjRiM2VhZDg5Y2FlODc4MzYwZTQzYjllM2UyY2VmM2FlMWVkZTY1MiBsZWdhY3ktdHJ1bmsKKzI2NjA1IDhmZWMxMTBlOWQwMjA4NDkwZGM5MGFkMmY2ZmE3NjA2ZjdmODFiOTkgbGVnYWN5LXRydW5rCisyNjYwNiBlMDQ3MGYyZGQ0MTBlOGJiNzUyMWY0MzgzZWU4YzAwNWJlMzFmZjY4IGxlZ2FjeS10cnVuaworMjY2MDcgNWZkYWRjOTQyNjY1MDJkNzI2NzNkZDJmM2ZmMTI1NDM0ODgwNTc4MyBsZWdhY3ktdHJ1bmsKKzI2NjA4IGIwYjYzMjEwNmZkNzY1ZDFjYWJkOWNmODE4YzU0ZTZlNzNkMzg2MDcgbGVnYWN5LXRydW5rCisyNjYwOSA5NzY1MGVkZjU4YmIxN2RiMzk2MDIyNWU4ZWQxYWYxYmU2OTBlNWZkIGxlZ2FjeS10cnVuaworMjY2MTAgNWU4MGFkMzZkOGZmYmM0NGIxNDJiN2ZiNDhmNWYxNWEyZTk5ZDYxOSBsZWdhY3ktdHJ1bmsKKzI2NjExIDI4NGNmY2E3NGRmNDBkNjEzNTZkNDFmYmEwY2I2ZjEwOWVmMGFjY2IgbGVnYWN5LXRydW5rCisyNjYxMiA0MDViMjkxYzMyMWRhMGU5MWMxMTNhZmIwNDljNzRhYmM2ZmZiNDQwIGxlZ2FjeS10cnVuaworMjY2MTMgNGYzMzVjYTNmMTFjYzE4NDQxODFjMzI2ZDAxOWM1NWJlMjYzNGU0NCBsZWdhY3ktdHJ1bmsKKzI2NjE0IDcyY2EwZmQ0ZGNhNmJmNTY1OGEyMGVmNjUzM2MxZGQzZGUwYTQyOWYgbGVnYWN5LXRydW5rCisyNjYxNSA5YjE3NTAxOGZkZWY3ODVjYTJjOWY3ZTk1MjBjYjU2NjIxMWVjNDUzIGxlZ2FjeS10cnVuaworMjY2MTYgMjkyMjExMzIxNzY5N2MxYjA3MWNiNzkzNGQ4ZGI1ZWY0ZDBiMjcwMiByZWxlYXNlMjEtbWFpbnQKKzI2NjE3IGE4MzlhNmJlODU3ODhkNTAzNzA0YWY0ZjQ2YzdmMjk2MzUzNGVjY2MgcmVsZWFzZTIyLW1haW50CisyNjYxOCA2NjdiMDI2YTg5ZDkwZTJlNDhjMWYyMDE4OTI2MGUzYzAyNjRhZGM3IGxlZ2FjeS10cnVuaworMjY2MTkgOWE5YmVjMTBhYThjNmNkMjhiNzI5ZWMwMDAwZjRlNjE2NjcxZjczOCBsZWdhY3ktdHJ1bmsKKzI2NjIwIDFjZjg4NTkzMTY2OTM5MDcyOGJmNzliN2MzOTZkZTcwNjcwYmE1MzkgbGVnYWN5LXRydW5rCisyNjYyMSA5ZTM1MzJiNzU0NzFlNjhmNmNjZjY5ODk2ZDkxM2JmODc4NWU5NThmIGxlZ2FjeS10cnVuaworMjY2MjIgZTUyNDlhNmNjMWQ4N2ZlNmMzZTMyOTQ2ODg0NDk3NjAzYTA5OGM0MCBsZWdhY3ktdHJ1bmsKKzI2NjIzIDczNTM5NzdkNmI2NGFjZjIwYmYyNTVmN2JjZjFkYWMxNDczM2UyNWMgbGVnYWN5LXRydW5rCisyNjYyNCAzNzgxMmYyYmExYWFiZWI1OGFiNDE4M2NlMWU0ZTE3NGI1NjBjYTA4IGxlZ2FjeS10cnVuaworMjY2MjUgYjU3MmY3YTBiYjU2MzVjNTZmNGRmN2RiOTU0Yjk4MDdiMzdiZTAyOCBsZWdhY3ktdHJ1bmsKKzI2NjI2IDhkNGIyNWNlZWVmZTlmOTE4ZWNmNWVmMTU3Y2EwZWVkMWViYmY4MjAgbGVnYWN5LXRydW5rCisyNjYyNyA3YjY2Y2QxNWRjZTk5MDMxYTk3YTQwNmMxNDRhN2MyMzM3OTMzNmJhIGxlZ2FjeS10cnVuaworMjY2MjggMjFjZTVkNWUwZWM3MTRhOTZjYjY3Mjc1MDAzMTcxN2JmNzgzODc5NiBsZWdhY3ktdHJ1bmsKKzI2NjI5IDQ5MzIwNmI3MDFkYjUxNzQxOWNkMmY4N2UzNDE3NTBmNGM2YjM3M2YgcmVsZWFzZTIyLW1haW50CisyNjYzMCBlYzJhNTU1OWU3Njk1YmJkNmU3NTZmZTVmYjYxZWIyZWZhZDYzNjY0IHJlbGVhc2UyMi1tYWludAorMjY2MzEgZjk3MDU4OGU4OWIxMGQzMmVlYzA5ZDcyZjkwN2UxMzFjY2M1M2FiMiBsZWdhY3ktdHJ1bmsKKzI2NjMyIDgwM2U2YTY5NTMwNjRjMzk5ZTMzNzhiM2E1YTNmYTJiNzJmNTk5YjYgbGVnYWN5LXRydW5rCisyNjYzMyA1ODI4NTVmNmQzNWJlZGZiMGIxNjdjYWNiMmNkYjFmZGE2YWQ3ZDkxIGxlZ2FjeS10cnVuaworMjY2MzQgNzBhMDg5NzIyMzkzNWJmMjFjYTJmMDQ0MDQ4MDY4NDRjMTdmYTNiMyBsZWdhY3ktdHJ1bmsKKzI2NjM1IDI5Y2E5ZTEyYmYxMDE5YTJjOWI3ZTllZDA1YTYxOThhMjdhNWEwM2UgbGVnYWN5LXRydW5rCisyNjYzNiBkNDcyOTBkZDJkNTdlNjUxNjU2MTRkZjRiMWY5ZWU4YzhlMGE2ZWRkIGxlZ2FjeS10cnVuaworMjY2MzcgNDY0NTBmMTdhMDcwNTYxYzZmNWFjODcyMTIwZjI3NjQ1ZmQ4OGQ5MSBsZWdhY3ktdHJ1bmsKKzI2NjM4IDMxNGUwOGU4MDkwZmI0ZDkwYTZmYjRjNWIxMTk1MmEyNGYyNWFmM2EgbGVnYWN5LXRydW5rCisyNjYzOSA1ZjVjZWEyNzJiNDYyMzFjMDhlMTBlNjJjYzJlMzI3ZmFkYjk0M2ZjIGxlZ2FjeS10cnVuaworMjY2NDAgMjAwNTU5ZmNjNjY0ZjdiNjZiOTM4MjgyNTFlMmNkODFiMjNhNWE3YiBsZWdhY3ktdHJ1bmsKKzI2NjQxIDllMjJhODcwMmRlMmQ4NGQ0OGNlZGE4NzBkZGIwZjcxOGE2MDMwZDIgbGVnYWN5LXRydW5rCisyNjY0MiBmNWZkN2UyOTU4OTc1OTVjZjEyNzZkMzViZmUzNTI3MzJiNjZhOTZlIGxlZ2FjeS10cnVuaworMjY2NDMgYTRlNzVkNTNkMzJiNGY1NzdiNTYxYWQ1ZmEwNGE0NmFlZDkyNmQ5NyBsZWdhY3ktdHJ1bmsKKzI2NjQ0IDNlZGRkOWQ2OGFmN2RiYzA0NWYxZDY5YThmMzAyYjdkMTIyYjI1YmEgcmVsZWFzZTIyLW1haW50CisyNjY0NSAwMGY2NjM2MGJlMTk4NjA2NTIzNDNiYWI3OWVhMTYyMTEyMGJlNjYzIGxlZ2FjeS10cnVuaworMjY2NDYgYWZlMjYzNjcyZmQ4NGJhYmJkMzUzODVhNDI4Y2ZkNTIxNDExZmU3NCBsZWdhY3ktdHJ1bmsKKzI2NjQ3IGUxMTQ3MWEwNjI2YzEyMmQ0NWE5MTg4NzQ4MjkxZGViMzdjYzYyZTkgbGVnYWN5LXRydW5rCisyNjY0OCBiNjBiNzNkNDFlYjRhODNkZTRmMWFkNjE4OThmNjhkMTY5ZjVhNTUwIGxlZ2FjeS10cnVuaworMjY2NDkgNDcyOGJlZGY0Yjc4OWE3MDUxOGU4MTJmZWIzNjgxYjE3MTM2Y2Q2YiByZWxlYXNlMjItbWFpbnQKKzI2NjUwIDdjNjA5NGIxOGQxNjEwMGFlOWQ0MmQ0NzhiNDczYTM2MWExODdiMDggbGVnYWN5LXRydW5rCisyNjY1MSA1ZGQ1MmE5YjA0MzhhODY5NWZjMjg0Mzc0Y2E1ZmE1MmUwZWNmODA3IHJlbGVhc2UyMS1tYWludAorMjY2NTIgNjU2MTBiYzRlNmE1NzNmMDQ3YzU0ZDJkZDk5NTA5MTEzZDQ0YThkOCBsZWdhY3ktdHJ1bmsKKzI2NjUzIGI5M2VkMWE0ZTQ5ZjFhODY5MmUwMThhMDlkYTUxNjQzY2RiMTRhZTMgcmVsZWFzZTIyLW1haW50CisyNjY1NCA4ZjFiMzcxZmZiYWY2MWQ3YWIyOTNkYjQ3MDcyODVkODUyOTk5MzBmIGxlZ2FjeS10cnVuaworMjY2NTUgYjczNWU4OWNjZGE3NGY4MGQ3MDJmMzNiMmY2YzI3ZGE0ZGMxYzU0NiBsZWdhY3ktdHJ1bmsKKzI2NjU2IDZmYTc2YjRlNTlmZWZlODFjNTExMTk4YzdmODk2NWQwMmEyNzkzNzQgbGVnYWN5LXRydW5rCisyNjY1NyAxN2NhZmU4MDVmMDQ1ZjY1MmE2NTIzNDlkOWY4NTNjODgwNGZjZjkwIGxlZ2FjeS10cnVuaworMjY2NTggMDhlNmY5NGYzYWIwMDc5ODQ2MjI1Y2MzYzZlODg0MzIwNTI5NjRmNiBsZWdhY3ktdHJ1bmsKKzI2NjU5IDVhNmJlOGZhOGRlMjRlNmM3YWZhMzc5N2Q1MzcxNTkwZjJmYjRkZDggbGVnYWN5LXRydW5rCisyNjY2MCAwMTQ3OGExMzI5MDg5YjgwMjljZTFjZWE4MzdiYzMzNGVmMzA5NTA0IGxlZ2FjeS10cnVuaworMjY2NjEgYjVmNmU5ZjZlN2Y0Yjc5OGRlMDg2MDc2YjUyMDJlM2E4YzBjNjllNiBsZWdhY3ktdHJ1bmsKKzI2NjYyIDU3MzJhOWNjOTFjN2E5NDJiMGJmZmEzNzg4ZDA2YWViYjdiOWJlODAgbGVnYWN5LXRydW5rCisyNjY2MyA1M2ViYWU3ODIzZDk3NDJmMzUxNGJjZGQxODU5OGVhYTM3MjA3MWMwIGxlZ2FjeS10cnVuaworMjY2NjQgYTIxNTMyODU2NTI0NjAwOTY5NjJkM2ZjNGZiMWZiMmU0MTc1MTY3OSBsZWdhY3ktdHJ1bmsKKzI2NjY1IDIwYTdiMmNmM2MxZmUzOTVlN2U1YjczYTljZDI5MTRmMTE3NTA2MzQgbGVnYWN5LXRydW5rCisyNjY2NiBlZjZlMzFmMGNlZTEyNzYxNmI3YjcwYWVhNDFiYjQyNzc5MDRkMDRiIGxlZ2FjeS10cnVuaworMjY2NjcgY2Y5NjQwYmU2ZjhhOTUyMGUzZjIxY2QxYzZhYWVjMGFkMGMyNzVkMCBsZWdhY3ktdHJ1bmsKKzI2NjY4IDhhZTdiNDBhYzZkMDdlYmVkNjU3MGQ0MDVkYWQ3MWUwZWFlZTc2OGYgcmVsZWFzZTIyLW1haW50CisyNjY2OSBkMDUzMmFlMDVlZDcyYWMyYzcxYTkzZDJiMDk0MjQ5MzU0MTc3N2VkIHJlbGVhc2UyMi1tYWludAorMjY2NzAgNGNlNjExNjUwZDBjZTg3ZTIzNzAzMDJiOTZiM2U5NTQxZDFhYjg3OCByZWxlYXNlMjItbWFpbnQKKzI2NjcxIDAxNzY1ZDMwNTMyZTI5ZDQ2ZmJiOTQ0ZGFjODQ4ZWMwOTAxZDA4NjkgcmVsZWFzZTIyLW1haW50CisyNjY3MiBiYTY3MjFhZTRiODA5MzNjYjViODJlMDM1ZDcwYjc4MWM0M2QyZjk5IHJlbGVhc2UyMS1tYWludAorMjY2NzMgNWRiYzc5ZWUwODg1YmQ1NjNjMzRmYjNhZGEwMTRlMDEyN2VhZTBlZSByZWxlYXNlMjEtbWFpbnQKKzI2Njc0IDBiMDg5YzhhYzA3NzMwMTJlYzYwZjY5M2VjZmRmMDM1N2UxNTQyNWIgcmVsZWFzZTIyLW1haW50CisyNjY3NSBhYWI0MjczYTdjZjcxNjczOWFkNmFlNjZmZTZiODQ2OGMxN2VjYjk2IHJlbGVhc2UyMi1tYWludAorMjY2NzYgNGM4ZjVhODkwZjk4YmVlZWYzNzZiYWFiYjNhMWI2ZmIxNDA4Y2NhMCBsZWdhY3ktdHJ1bmsKKzI2Njc3IDEzMzc2MzMzMjc2NzM0MDNhZjhjMGMyZjNmM2U3Y2FiN2YyMTRkZGYgbGVnYWN5LXRydW5rCisyNjY3OCBhZjFmZjQxYmU0N2I4NDUzMDZjNmViZjdkMmZkNDY3NDE4MTQ4YWI0IGxlZ2FjeS10cnVuaworMjY2NzkgNDZjZmI4NWYwYWFlNzYwNDA3ZTM0YjNiNGI3NTI4ODQwZjVmMzJkNiByZWxlYXNlMjEtbWFpbnQKKzI2NjgwIGE0NDNlNWU1ZWNlN2Y2MWMyY2FiY2FhMmU2YzcwYjU0MzA2ZDQ4MjkgcmVsZWFzZTIyLW1haW50CisyNjY4MSAyM2JmNjg3NzhhMmE4NWMyOTFhYmFmMWZkMTdkZWMyOTZmMmExOWJjIGxlZ2FjeS10cnVuaworMjY2ODIgMzg4NDQ5MzcwOTQ2MjQ3ZjA3ZTc3YTg3ZTNjOWI1MjRiMTI3Yjk0MCBsZWdhY3ktdHJ1bmsKKzI2NjgzIDE3NGJhMDNjODlmYjQ4MTNhNGE4ZmFjYjRjOGVhZmQxZWY3Y2IzMTAgbGVnYWN5LXRydW5rCisyNjY4NCBhZjQ5OWI1MGEwOTQ2NDNjNzdmN2I2ZDEyNzc3MTMyZmU3Yzc4ZDM0IGxlZ2FjeS10cnVuaworMjY2ODUgM2M3YjIyZDExMmQzNWUzY2YyM2VlNzNjM2UyOTU5NmVkNmI5M2U3YSByZWxlYXNlMjEtbWFpbnQKKzI2Njg2IDE4MDZkMDJjMDhjNDQ3YTUyZmFjMTk0Njg1NTA5YzQxNTMwN2RiOWEgcmVsZWFzZTIyLW1haW50CisyNjY4NyA2ODkyNmQwYWFkNDAzYmY4YTRkYWJkZjAzMWMzYjk0ZjkwNzU1N2EzIGxlZ2FjeS10cnVuaworMjY2ODggYmEyOTAxMjg3Y2I3Y2E4NmJmY2QzMTkxOTEyZjg2YjE4MThjYTQ5MyBsZWdhY3ktdHJ1bmsKKzI2Njg5IDhiNTkyNjAzMmI1NmEyMDVhNGNhZWYzZWUxM2Y2M2JmNmNlMWQ1MmIgcmVsZWFzZTIyLW1haW50CisyNjY5MCBmZmQ1ZDg2ZTk2Y2ViMGY5MjQxMWZhZGMzNzY1YzBmY2U4ZWUzODFhIHJlbGVhc2UyMS1tYWludAorMjY2OTEgYzMzMDc3ZGMwYzgzYjljMTlkYTYyNzk0MWMwNTBhOWVlY2EzZGFlYiBsZWdhY3ktdHJ1bmsKKzI2NjkyIGFhZTZkYzZiMmE1ODk4ZTMyYzEwMGM3ZjQ1ODEwNjJjNWZkY2NmYTUgbGVnYWN5LXRydW5rCisyNjY5MyBjMWQxYWUxNWRlOTJjOWFmNTQ2NjlmMmQ5NzRiMzAwZThmYTM4ODZlIGxlZ2FjeS10cnVuaworMjY2OTQgY2QwMmEzNjcwNGZlZjIzYWJhNTM5MTExODc5NWY2NTljMjIzMDdhZCBsZWdhY3ktdHJ1bmsKKzI2Njk1IGM5MTdmZTliYzY1NGZlOTY2MDYxNzcwZGM0MGQ0ZGI1ZGM0ODU5YzkgbGVnYWN5LXRydW5rCisyNjY5NiAzZGViYzhjMzRjYzkxMGM4MjM3MDhkZGJjNWFlMmI1MGU5OGEwY2JlIGxlZ2FjeS10cnVuaworMjY2OTcgODdjOThhZjYxZmM0YWI5NWNmMDM0ZmZiY2ZmOTZkZmVmODk1OTA2NiByZWxlYXNlMjItbWFpbnQKKzI2Njk4IDgzODQyN2YwYWYyMzJkMTRkYTQ2OWUxZTFhMzAyMmZhZjgzNDA0NzkgcmVsZWFzZTIyLW1haW50CisyNjY5OSA5N2UwYjUwNGMwMDA5ODgxYWViOTRlYWJiOTU2ODUyMDEwNTc5ZTg1IHJlbGVhc2UyMS1tYWludAorMjY3MDAgMDJkNTI4M2IxZTIxZmM2MmU2ZTlhYzE5Yjg2Zjg1NmE5MDYxZGZhNiByZWxlYXNlMjEtbWFpbnQKKzI2NzAxIDM2OTdhMzM2NDAwZmFiYzI2MTQwNjQ2NmE2NzAxN2ViYTBmMzFhMzggbGVnYWN5LXRydW5rCisyNjcwMiA1NTQyM2MxYWJjZDE0OWRlODgzMGU1ZmE2OGY3YjNkYmQ3ZWQwZGVkIHJlbGVhc2UyMi1tYWludAorMjY3MDMgMTMwNTZiNjI2N2EyNWYxNmVjYTBlYWJmOWM2NmE3Yzc2ZmVlY2EwZiByZWxlYXNlMjEtbWFpbnQKKzI2NzA0IDAzYjFlOTg5YjFkOTc3NDU4ZDc3YmM2ZDM5NjUxNmIwZGQwNWNkYTAgbGVnYWN5LXRydW5rCisyNjcwNSBiZmZjNzIzNmM0YmEyODkxNDdkZThkZDhhYWI3YTM3MDljODE1NGRiIGxlZ2FjeS10cnVuaworMjY3MDYgZDkzZjUzN2E3NTJiODg2ZWRlYTY0YWRmYmUxOGNkOWM4OGI1NGQ3MyBsZWdhY3ktdHJ1bmsKKzI2NzA3IDg3YzcxNmIyOGEzZWNmMGIwZmI3MGRmNGY3YTJiMTU4NTEwNTI5MWEgbGVnYWN5LXRydW5rCisyNjcwOCAyZDJmYWE1MWRjZmRhZThjZTNlMDEyOTA0NDRlMjY4OGM0NDA2MjIyIGxlZ2FjeS10cnVuaworMjY3MDkgYWEwODU1NGQxYTliNDFhYjlhMjMyNDc2YzBkMGNiNDY2NjliYmM5NyBsZWdhY3ktdHJ1bmsKKzI2NzEwIDFjOWNlMzRkNTI5ZGMzOGYyOTYwN2M0ZGNhNjc1OTMwZGE0ODk1ODIgcmVsZWFzZTIyLW1haW50CisyNjcxMSBiNDkxYWI3ODc3ZDJkMmEyNWE5NzkzNGJiYjBmMjkwMjAyNDg2OWM4IGxlZ2FjeS10cnVuaworMjY3MTIgMjM4ZGZlYzljODk5ZThlMzNkYzQ3ODEwYjU3YzkxNTc5ZmNkYTM3YSByZWxlYXNlMjItbWFpbnQKKzI2NzEzIDk4MWM2YjZmZjJmMTcyMDE5YTlkNDAwOWJlYjNiYWMyOWEyMDhmM2QgcmVsZWFzZTIxLW1haW50CisyNjcxNCA5YzllMDczNTlkNmU2NDA0N2E5Y2ZhZWVlNzc2YjI1Y2QwMTgyNjI1IHJlbGVhc2UyMS1tYWludAorMjY3MTUgZDQ2NmJjMTlmNzMxMmFlNTc3MGJlYTE0MjI1YTg0YWU5OGY0MmMwYSBsZWdhY3ktdHJ1bmsKKzI2NzE2IDY3YmNiNGY1MjM3ZjI0NTI2MDc5Y2U1ZWYzMjBhYzBkYmY2MjVlZTMgcmVsZWFzZTIyLW1haW50CisyNjcxNyAwYTRkNmIyNDBhYjI0ODc3YmRlZTg0MWYxN2JmY2ZlZWNiYzliNjJmIGxlZ2FjeS10cnVuaworMjY3MTggMDY2ZDgyNzVhZDY0M2FiZWJmODNiZDFhZjgzYWNlODQ0YWQwMzJiZiBsZWdhY3ktdHJ1bmsKKzI2NzE5IGZkNjlmM2VlNzdlYWMxZjYyYTI2NzQyMTM0NmRkODNiODJiYjdkNjEgcmVsZWFzZTIyLW1haW50CisyNjcyMCBlY2YwNzBjMzQ5OTllNjU2MzdhYzlhZDM4MWVmY2M4MDdmZmJmMGVjIHJlbGVhc2UyMi1tYWludAorMjY3MjEgN2JmN2NmM2EzNWI5MDQ0Y2RhYzMwZDNlMjhkZTBjZmVjYTVhZGM0ZCBsZWdhY3ktdHJ1bmsKKzI2NzIyIGFlZThmMTZmMjc3NDFkMTY4MjA4NTQxMjhhYWNjOTVjOTAwNDMxMTMgbGVnYWN5LXRydW5rCisyNjcyMyAxOGY4YTdiNTZmODkwMDIzZWIwZWFlMDk2YmE2NWE5NmQ2OGNlNzI3IGxlZ2FjeS10cnVuaworMjY3MjQgMzY4NDBhOTg5NzIyZDdlODQ0M2U4NmU4OWEyZGUxYzhhMmZkODlkYiBsZWdhY3ktdHJ1bmsKKzI2NzI1IGJlYzE1N2RiZWUyZTA4YTZiMjU2NjNkYjk5NDRkNGMyYTJjMjdjZTggbGVnYWN5LXRydW5rCisyNjcyNiAzZWZkMzRmZTY2NjgwNjRhYTQzZjNhMTE5ZGJlN2RkZmFmMzE4ZmZkIGxlZ2FjeS10cnVuaworMjY3MjcgM2IzMjNkZjk0NWJiNmJmMTljZmFlMzY1YmRkOWRmOWU2NGQ2MzZjZSBsZWdhY3ktdHJ1bmsKKzI2NzI4IGIyN2YzNmNmM2QzZTAyM2RjZWFhNmU3NzBhYTc3ODljODJkMGNlN2UgbGVnYWN5LXRydW5rCisyNjcyOSBkM2Q4NTdhODgyZjBmODM5Yjc3MWI1YzdjY2RiMGNmN2FmYmI5Yzc5IGxlZ2FjeS10cnVuaworMjY3MzAgN2VkNDlhZjA0OGJhMDkzZTQ3Mzg0ZTc0NjRmNzY0ZjhjYmMyOTgwYyBsZWdhY3ktdHJ1bmsKKzI2NzMxIDEwNWJlOTM2YjVjMzZkNjM3OGU3MTdhNTMyODA2Y2RjZDg3MWY4OWUgbGVnYWN5LXRydW5rCisyNjczMiBhZDk3ZmNlOWRjZmUyNWVjNjhhNjQ2M2YwYjBmMTE0NTI1YjE0ZmZlIGxlZ2FjeS10cnVuaworMjY3MzMgYzU2ODg4ZDE3MDk4NGUxMzJmM2ZlYzg4YmRmODE4NDkyYmE3MjFjNCByZWxlYXNlMjEtbWFpbnQKKzI2NzM0IDRhZjY2OWY5YzQyZTA4MmIxYWU3ZWY1OTlhZDJjZDY1NDM0MmE4MjIgbGVnYWN5LXRydW5rCisyNjczNSA2NzUxZThiY2ZkMjkzZmNhYjA3NjQwZDNmZTI0NjkwMGE1M2Q3MmI0IHJlbGVhc2UyMi1tYWludAorMjY3MzYgM2I4MjU2NzVkMTE5NDQ3MjRhZmFiODdkNGJhYjEzYjQyYjYzZjgyNyByZWxlYXNlMjItbWFpbnQKKzI2NzM3IGNiYmUyODllN2MyZTkyODVmMzhjZTRmYTcwYWMzZWJkNjcxZGIwODQgbGVnYWN5LXRydW5rCisyNjczOCAyZjdkODY5ZGFkNGRmN2JiZGY2NzExOTFmZTZkZWVhYzAxYWQ5MGZlIGxlZ2FjeS10cnVuaworMjY3MzkgNGQ2YmVhYjc2NmUyNzRkOWY5ZmUzMjE2OWRiZDJkMTM1MzAwNDQ1NyBsZWdhY3ktdHJ1bmsKKzI2NzQwIGU1ZGYwODZlZDQ1NTE4NTBlYWI5YTk2OTUyNjY5MDc4NGY2ODgzMjUgbGVnYWN5LXRydW5rCisyNjc0MSA5YmUwMWI3YjZjODBhYmRjOWQzMWRjMDA2OTQzZTJlOGZkMzZmNGI4IGxlZ2FjeS10cnVuaworMjY3NDIgODJhODUwZGI3ZWM1NzdlODI3MDA4MDdhODU3ZjVjZGU1YzllZDBhYyBsZWdhY3ktdHJ1bmsKKzI2NzQzIDEzMDNkYzA3MjNmY2MxMjNjOWNmMDU4Njk0NjFmYjdhNTRhZTRlNzggbGVnYWN5LXRydW5rCisyNjc0NCBjYTkwN2YyOGUyZDU1ODJhY2UxNjJjYzc1ODQyNzVmYWY0ZWM1NTE3IGxlZ2FjeS10cnVuaworMjY3NDUgMDcxOWEzNzdhNjE2YzEzOWZiZDBkODdmNGMzMGM4MWE4NWJmMmIxNiByZWxlYXNlMjItbWFpbnQKKzI2NzQ2IDQyMjc4NDcwOTM4MGFhNGVhN2ZiNGQzNjRiNmYwYjQ1YTFjOWVlMTMgcmVsZWFzZTIxLW1haW50CisyNjc0NyBmOGZmOWZhYjkyY2VlNDU0ZmM5MzFiYWE5YzE2NjcyMTBlZDBiMWYxIGxlZ2FjeS10cnVuaworMjY3NDggYTljOTgxODNmZjg3ZmU2NjU4ZGQ3ZDlkYzNkMDM2ZTkyYzYxN2IyNSBsZWdhY3ktdHJ1bmsKKzI2NzQ5IDZhN2IyNmJkZTBlOGI5Yzg2MWQ0ZGRjYTQ0Y2M5NmI1ODQ5MjFmYmMgcmVsZWFzZTIyLW1haW50CisyNjc1MCBjNzhiNTJkYWM5NjMwYzA0M2M2YWVlMzNjZTFiYjhiNmE0N2E0NmQ0IGxlZ2FjeS10cnVuaworMjY3NTEgNDBmZTE4M2E4OTIyMDJkNWM2NDc3ZDRlY2MyYTllODk2MTZiOTRmNiBsZWdhY3ktdHJ1bmsKKzI2NzUyIGZhNzMyMGNiMzdkOTVlYzRmZjg1OTAwNzUwNzhjMGEwZmM5YjJlZmEgbGVnYWN5LXRydW5rCisyNjc1MyAyMzAwNzM0MTQ1MDQwYmNhODFhZWJiZDhjYjZkODBlNWU0NjNmNjZjIGxlZ2FjeS10cnVuaworMjY3NTQgZGZkOThlOTUyMWIzN2VmOTA5YTA3ZWIzMjFjOTZkNGY0NTQ2Y2IxYSBsZWdhY3ktdHJ1bmsKKzI2NzU1IDQ0ZmVjYzMzODg5ZDhjMDBkZDExZGZmODhiNGI0ZjI5YzEwMDAyYzAgbGVnYWN5LXRydW5rCisyNjc1NiBiZmU5MWUxZTMxYjIwMDYyNzY5M2MzZjBkMjU5OGQ0OTFjYTQ4M2I5IGxlZ2FjeS10cnVuaworMjY3NTcgMzg4NDFiZWEyNGZkZGRlOTUzY2NhODc1MGQ3M2E5YTM3MmJkYzFmMiBsZWdhY3ktdHJ1bmsKKzI2NzU4IDBkODc0MDA5NGJlY2EyNmQ3MGVlNjVkZTQyM2NhMTNhNzQ3MGExNWUgbGVnYWN5LXRydW5rCisyNjc1OSA5NTZkMDM4YjFkZDI2ZjU2YzE1N2M2NDAyNzNkZjMwNzdjNDM5YWY2IGxlZ2FjeS10cnVuaworMjY3NjAgYTg2OGJhZWJlOTU2NDY1NmUzNThiZGZiMjVkNGRhN2M2N2I1ZGUwNyBsZWdhY3ktdHJ1bmsKKzI2NzYxIDkzNTQyZWZhYzA2NjY5YmFhYTg0YTc5MDUzYjI4ZDMxN2Q0MjQwYTMgbGVnYWN5LXRydW5rCisyNjc2MiA0ZTc4MTVjOTVkM2VhYTk0ZDMwMzFlNGI1OTZkMWQzM2ZhMTlkNTQxIGxlZ2FjeS10cnVuaworMjY3NjMgYjk3MjZiYTcxYWEzZjVlN2IyYzc1Yjc0MmFkYmJlYWYzMGVmZDA1MSBsZWdhY3ktdHJ1bmsKKzI2NzY0IGM1YzJiMjRkYjhhNzExOTUwODk5YWYzNGQwYzYxMjMxZTI0NTgyZTEgbGVnYWN5LXRydW5rCisyNjc2NSBiMmFhMjY0OGRmMjdiMGFlNmQ2OWZhMDZhZGI4NTgxNzIyNTBlZmY1IGxlZ2FjeS10cnVuaworMjY3NjYgOTc3ZTUzNGZjNmM3NzQyMjBjZDI1OGJiZWQ2ZmEzZTBmM2NiZGMxYyBsZWdhY3ktdHJ1bmsKKzI2NzY3IGUwZWQ2OGFkYmEzMzI3NTZmNDIzYTMyZTYyZGI4YzI2MTUwZmMxZTMgbGVnYWN5LXRydW5rCisyNjc2OCBlZTI5MmE1M2U1ZmNlODk0ZjA1YTVkMGE2NGJjMTk2Nzg4MjE1NTMyIHJlbGVhc2UyMi1tYWludAorMjY3NjkgYzVjNGMxMTIxMDg3Nzk3ZGVhMTBmM2I0MjEyOTk5MTY3YTcwN2U1OSBsZWdhY3ktdHJ1bmsKKzI2NzcwIDEwYWUyZDYxMWFlOTQxN2Q2OGJhMmUxODFjMDRlNmY0NDhlYjIxYjcgbGVnYWN5LXRydW5rCisyNjc3MSA0NzMzODVmY2EyOTkyODgzZmJlOTQ2NDg1ZTI5MzFiMTMyNjA4NjVlIGxlZ2FjeS10cnVuaworMjY3NzIgOTRiZjZhY2VmZjc4OGJlZmFkZmI1ODQ0OTg5MDE2MGU4MmJmMGE4MiBsZWdhY3ktdHJ1bmsKKzI2NzczIDIzMzlkZGU2YmFiZWNmOGYxMjkyZTQ4NGU3ZGYzMDIxNWU3YzBlZWUgbGVnYWN5LXRydW5rCisyNjc3NCA2MGQ4NmIyZWFiMGZhZmEyMjg5MmU0MDg0M2M1YWUwZDhkNzM0NGM2IGxlZ2FjeS10cnVuaworMjY3NzUgZTVlZjE2NmZjMjJmNjIzZThjNjBmZmMxNmVlODE1OGMyNDM2MzJiOCBsZWdhY3ktdHJ1bmsKKzI2Nzc2IDIxMWIxNmFjMDY2YTcwNDgzNDcyMTEyODc0Yjc4Yzk3YzZlYTU3YzkgbGVnYWN5LXRydW5rCisyNjc3NyA1OGNhYzcwNjAyYWE2OTkzNTkwOTQ2OWI3ZDZiN2Y5NGY3ODRhMTlhIHJlbGVhc2UyMi1tYWludAorMjY3NzggMzllNWMwZDZjMTgyMmE4MGU3YmY5Yzg4YjZlZWFkZWUwMWU3YmM2MyByZWxlYXNlMjEtbWFpbnQKKzI2Nzc5IDgxZDA2NzIwNWI4NmYyYjdkMDUxZWVlYjMwMTVhOWVmNWZhN2U4ZmEgbGVnYWN5LXRydW5rCisyNjc4MCA0ZjY3ZTU2Njg2ZTU4ZDlhZWRjZTY5OGMwODgxOTVhYTE3MTdmYzY3IGxlZ2FjeS10cnVuaworMjY3ODEgOTBlZmExY2FiM2JjMmM3NTYxZDhkODcxYjljNzRiNjRkZmJmOTI1MiBsZWdhY3ktdHJ1bmsKKzI2NzgyIDY0MmE0NTNlN2EyZTkyM2UwNTkwMGU2MjU5MjFlODdjMjBmODc0NjcgbGVnYWN5LXRydW5rCisyNjc4MyBmMzhiZGIyZmNhZTAyZDA1NTdjN2UyZjAxY2ViODk5MmE0NDQxNzc2IHJlbGVhc2UyMi1tYWludAorMjY3ODQgYzM3NWM1YjI2NjMxMmUxMzAzNTk4NDQyMjU5OTc4ZGMxNGJlNjE5NiBsZWdhY3ktdHJ1bmsKKzI2Nzg1IDYzODkwYmMyOWE3Y2JmNGY4OTY2YjIwODAxNjI5YmFhN2Y4N2FlMmEgbGVnYWN5LXRydW5rCisyNjc4NiA2MjQwM2I5M2Y0NzBiMjJlMDk4MjhhMjg5ZjdmMWNlZDA0ZDZjMWZlIGxlZ2FjeS10cnVuaworMjY3ODcgMTE1NzI4MWYwMGEwMmIxMzc3ZjhmN2QxZWIxODFkNWFkYTJiY2M5NCBsZWdhY3ktdHJ1bmsKKzI2Nzg4IGE0ZDY3NWI4YjUzYzAyNDA3OTNiZTkyNTI0NThiMTAzMGFjZTllNDEgbGVnYWN5LXRydW5rCisyNjc4OSA4ZWJhNGM5MmRmMmI0ZTRlNTYxN2U1ZGY0OTI5ZDY1YWViZTY3M2IyIGxlZ2FjeS10cnVuaworMjY3OTAgZTExZTk1MGFjYzIzNTE2MTA1MWZiZmI4NzE5MDdkYTUyNWNjZDMyMCByZWxlYXNlMjItbWFpbnQKKzI2NzkxIDFiZTZlNzliMWQ0NjA1MDgzOTZhNTNiMzE3MTQ3MjFmZjRkMDIyZmIgbGVnYWN5LXRydW5rCisyNjc5MiBhYjUyMzEyZjgyYzc5MTg4NjQwYmMxYTkxODUyMzU1NWM2ZjMyZjA5IHJlbGVhc2UyMi1tYWludAorMjY3OTMgNTYyNDBiY2RhODhjOTFmMGIxMzFjOWZjNjM2ZDVjODBiNWNjM2RmOSBsZWdhY3ktdHJ1bmsKKzI2Nzk0IGZiNjRmMjExNzZhZmFlYWRlMzU0OTlkOGY0MGFlMjZiZjA0ZmQ5NDEgbGVnYWN5LXRydW5rCisyNjc5NSA5OTNjNzc1ODdkY2EyMzkyMzJjZDdiMWZmZjY3NTU4NGNjNWY0MTQ2IGxlZ2FjeS10cnVuaworMjY3OTYgMjVmZDRhOGY5ZTA5MjI3NGNkM2UzMjNlOWIxMmFhZTE3M2FmOGMyOSBsZWdhY3ktdHJ1bmsKKzI2Nzk3IGY5ZDVlMWZiMmFhNjk3M2NhYTQyZjdlZWRiYjQ5ZmNlNDRhMDBiZWQgbGVnYWN5LXRydW5rCisyNjc5OCA4MjQ2MGZkYTRmNzY3MTBiNjNhMjEyY2FlYTUwOGRkNmU0YmYyNDE5IHJlbGVhc2UyMi1tYWludAorMjY3OTkgMDhkNmM4Yjc4MGQ5Njk5ZDI5OGQ2OWU4Y2RiNGNiNWI2ZWMzMGRmNCBsZWdhY3ktdHJ1bmsKKzI2ODAwIGRlMGFjMDNlNWU3MmQ4Yzg1NmZmZjhhY2ZjMmUwZmVkNGM3ZThiMzMgbGVnYWN5LXRydW5rCisyNjgwMSAyOGY3MWM0YmQxNmJiNTkzYWQ1MDQxNDE1MTYxYmY4Yjg1OWFjMjRjIHJlbGVhc2UyMi1tYWludAorMjY4MDIgNmIyYmEzYjdlZDMyNmJlNGFhNDg3OTMwZDgyZWFmNGIzNGZhOGI0OSBsZWdhY3ktdHJ1bmsKKzI2ODAzIGIxNTg5NjA1MzkzMzM0YTMwNDA3MGE5ZjE2NDI3MWE2ZDg5ZDIzMGUgbGVnYWN5LXRydW5rCisyNjgwNCAwM2RmZTdkMzQzZGJhYzNmODBiNThhOTQxNmRjMjljYmY4NWVmMWI3IHJlbGVhc2UyMi1tYWludAorMjY4MDUgZjEyMTkzMDU5MjM5ZGIyYTQ5NDE4ODI1ZGE2YmQ2ZmMxZGMyNDAzZiByZWxlYXNlMjItbWFpbnQKKzI2ODA2IGQzZjI3NWJkMmM2MGExZDBmODYxMGRhM2JkMTAwNThiMzU2NWNkOWIgbGVnYWN5LXRydW5rCisyNjgwNyAxOWE5NDkyNTM3ODEyZmEyMTE4MjBjNTY4NzFkYjU0OGYwOThlYmJlIGxlZ2FjeS10cnVuaworMjY4MDggMDhjY2IwZjNlMmQ0OTZjN2JlNzZhYjNiM2QzMTYyNmVlYWY0ZGRiMiBsZWdhY3ktdHJ1bmsKKzI2ODA5IDQ1M2U1OWE0NzJiMjFhMjhmOWIxNDcwYmMzMjAzZWUzNDQzNWE0N2YgcmVsZWFzZTIyLW1haW50CisyNjgxMCA3MmYwYzFhMjQ1ZjhkZjk0ZjBmMTY3YTJmMzlkMGIyMjNhMmRmNjY4IGxlZ2FjeS10cnVuaworMjY4MTEgMWNjOTNkNTAxYjQ1ZjA2Yjg0YmJlYzdjZmI0NzBlYWJkZGFiNTFhZSByZWxlYXNlMjItbWFpbnQKKzI2ODEyIDI3M2RkMjUwOGM1N2UxYjY1N2Q2NmI4ZjJjNDc4MTY1Zjk1Mzc5NzQgbGVnYWN5LXRydW5rCisyNjgxMyA2YmFlMGMzMWJiZmIyNjEwNGZhMGZmODg0Y2FiYWQ3NTdmOGEyNGQ3IGxlZ2FjeS10cnVuaworMjY4MTQgMjRlMjMzNGU3YmIyZjhhZmI2ZjE4NWJmN2YzMWY4NjlhODE4ZmVlOCBsZWdhY3ktdHJ1bmsKKzI2ODE1IDI2YjkyNGFkMjY2Y2ZiNTZhZjdhYTc3ZmI0MTIxNmM5ZjM1MGIyMmEgbGVnYWN5LXRydW5rCisyNjgxNiBmOThhMjdjYjkyODIzOTQyZTUyYzY1NDlhZDUxMjAxOTY2NGI4MDBiIERTX1JQQ19CUkFOQ0gKKzI2ODE4IDY4Yzc3NmJhNWVhNWFkMWM1ZGZiZWQ1YzQ5YjE4MThhYzUyMDdjZDIgbGVnYWN5LXRydW5rCisyNjgxOSA2NGViMTE5YjgxNmQ1YWQ1ZjUxODJiZTk2YjkwMDdkZjA4OTJkMDdmIHJlbGVhc2UyMi1tYWludAorMjY4MjAgZGRiNDFlODdkNjUxNGY3NjBlMjc4NmUzZDlkNjZhOGVjMjU1ZGNhZCBsZWdhY3ktdHJ1bmsKKzI2ODIxIDhhNDViZmQ2YjQ3MTdjMWI0MjVhNWM4YTQ1ODM4MzU3ZTIzMzllOWQgbGVnYWN5LXRydW5rCisyNjgyMiA3ZTUxNDFiNjhjNWYxZDA0ZGMwYjc3NDEwN2RmN2U5OWZhZGFjMmVlIGxlZ2FjeS10cnVuaworMjY4MjMgZDliYjRlYzNlNzViMzI3ODgyYjAwMjAzOTdjMmJlM2ZmNmU1ZjE3MCBsZWdhY3ktdHJ1bmsKKzI2ODI0IGU0M2FhZmZmYjAzYzY3NmYxYTYxYTllYTQ4ZGVmYjc1OTZlZWY5YmEgcmVsZWFzZTIyLW1haW50CisyNjgyNSA2MTM0OGFhMmZmOTg2ZDViZmQ2Y2Y3ZDk5ODc3YzllYjliYzM2ZmRmIGxlZ2FjeS10cnVuaworMjY4MjYgODE4Mzg1OWRjZmNkMjE1MTU1Y2ZlODEyZDEwY2Q5NTJkZDNmMzFhMSByZWxlYXNlMjItbWFpbnQKKzI2ODI3IGJlNTRiYTRiMmM0NDBlOGVjOTcyMzEzNmJiZGNjOTdhOGE1MDNiNWQgbGVnYWN5LXRydW5rCisyNjgyOCBjMjU1NmUzMGZjYjQ4MmFkZDBlYTIwMWRjNGIwN2NjOTE5NTA1MTEwIHJlbGVhc2UyMi1tYWludAorMjY4MjkgYWIyMzQxMDdlMjY3MzI3YzUzMTY5YmRmZTY5MmFjNzNlOTJiNjYzYyBsZWdhY3ktdHJ1bmsKKzI2ODMwIDNhYmZmMTFmODJiMzUzNzU2OWI4MGQyY2ExNzU3ZmRmYTcxYTgwMjkgcmVsZWFzZTIyLW1haW50CisyNjgzMSAxMGM4MjAwODNjMmRjMTY0NGM4MmQwYzg4MTQzMTE1ZDAyNjJkOGRmIHJlbGVhc2UyMi1tYWludAorMjY4MzIgMTJiNDY1NzU4NzI5ZGEyOTAwNDRjN2Q5NGRhZTJkNjgxNmRkZTA1OSBsZWdhY3ktdHJ1bmsKKzI2ODMzIGJkMWM0YjY1ZGI3OTEwNGQ0NWVmYzdmYjFmYmY4MjQ3OTIxNmJjNmQgbGVnYWN5LXRydW5rCisyNjgzNCBhMjE5OGY3MmQ1ZWJlYTAwN2YzZGY1ZjFlZjVhN2QzZTI0OGM1ZjMyIGxlZ2FjeS10cnVuaworMjY4MzUgYmUwYmM1NWVjZjRhMGY2MThmYjA4NWI4M2Y0NzE0NDc0NWM2ZmZmZiBsZWdhY3ktdHJ1bmsKKzI2ODM2IDA3N2Q0NGIwNDA1YmU2YjIwY2M4NTMzZWZjYzY1YzEyMTZjNjcwMWMgbGVnYWN5LXRydW5rCisyNjgzNyAzNDRhZTUzMWU2YTczZTIyNzExNzE3OWJlYTA0YWUzM2Q1YTJjOWI0IGxlZ2FjeS10cnVuaworMjY4MzggN2NlMDE4ODM3OGVmM2E4ZDg2NzYxYThiZjE2NTE1MGQ3OTg4ZTY5MCBsZWdhY3ktdHJ1bmsKKzI2ODM5IDUwYTk3YTk2Mjk5ODdhMDJjYjcxMzY5OTlmMzIwMWM2NTNlYmFmMTIgbGVnYWN5LXRydW5rCisyNjg0MCBkM2UwMjVlZjFmYjJkZjk4YzA4NjFhMTk3OWRkNDAwNDZjMjBkN2RiIGxlZ2FjeS10cnVuaworMjY4NDEgZDM1YjlmZmY4MWUwOWIyNWZlMzdiNWQ1OWU5M2U5Y2NkODNlMzYyNSBsZWdhY3ktdHJ1bmsKKzI2ODQyIDczMjQ5YWJlZDY4Mzc2MGRiMjE4YjZkNjJkZjI2ZmE4YTU4MDljMDUgbGVnYWN5LXRydW5rCisyNjg0MyA1ZDczYTJjN2ZhZTYzZmU2MTMyNjY2YmFjYzZjOWI1YmUzM2Q5MWU3IGxlZ2FjeS10cnVuaworMjY4NDQgZDkxNzg1N2ZkMzM0ZWE5ZThkNTM5OTA1NGE1YTQxYmNiNzAxMmFmYyBsZWdhY3ktdHJ1bmsKKzI2ODQ1IDViZDMwYTM2ODk3YjFlNDc2MGRjNDc5ZDBmMTExYjE5Mzg4NWUyYjIgbGVnYWN5LXRydW5rCisyNjg0NiAxNzU2MjEwNmMyYTA0NjY4MmQ3MjY4N2JhZjMyMDUyM2IzMGNkZDdhIGxlZ2FjeS10cnVuaworMjY4NDcgY2RkNWM3NTE4MjNjZDkyODg1ZTVhMTc2ZmExMTVlZjkxNDI2ZmRhOSBsZWdhY3ktdHJ1bmsKKzI2ODQ4IGM3NmU1YzFjNmU0NTQ1YjU3NDBiNDQzYjZjOTFhZmY4NTcyZGJiOTggbGVnYWN5LXRydW5rCisyNjg0OSBiYjU3OTBjNmNkYWExNDczNzQ1ZWJhZTI2NTFhYjljMGMwMDk5MDI3IGxlZ2FjeS10cnVuaworMjY4NTAgOWIxZTNiN2JkN2YxMjQyNjliYzM2OGI5M2MyOTY0Mzc3MWVhYTg3ZCBsZWdhY3ktdHJ1bmsKKzI2ODUxIGJlNjUzNmYyZWJlZmIxNjMzMjI1YmJhNjZiMzYzMDEzN2ZhMTg2MzMgcmVsZWFzZTIyLW1haW50CisyNjg1MiAyNjdhZTU5ZWRkYjRjNGI1ZTU2YjE1NjhlOGM1ZDhhNGVkZjBkZWM4IGxlZ2FjeS10cnVuaworMjY4NTMgNjg0ZWRkMTZiYmQ4MWZjNDg3YjJjZjM4MDZiNDBlMmY1YTkxNjFjNiBsZWdhY3ktdHJ1bmsKKzI2ODU0IDg2NzNjMmVkZjIxY2JlNDA0YTU3MWNkYjQzMmUwMmFmMzBhMGZjYjQgbGVnYWN5LXRydW5rCisyNjg1NSBiZGE5OGJhYzY5NTYwMWMyYmJkYzQ3ZTI2ZTM1YjM5NDNhNjRiOWE1IHJlbGVhc2UyMi1tYWludAorMjY4NTYgMGM0MmNlZTQ3NWRmZjM1ZDYyYjExM2M0ZjQ1YmZjY2FlNGFmYjRjNiByZWxlYXNlMjEtbWFpbnQKKzI2ODU3IDc2ZjM3NmJlYTVlNWE5YTkxODg1MzZkMTFkNWM3NTE2YzhjMDllZTkgbGVnYWN5LXRydW5rCisyNjg1OCA2OGUzZjNkZDRkNDg4NDkxOWQ5NWRjMDhkNDI5MmJmMTNiNTk5YmYwIGxlZ2FjeS10cnVuaworMjY4NTkgZjQzMTg4ODVjZTlhNjMyODhiMTAwOWVhMDk3YzljMWYwY2Q2OTI4YyBsZWdhY3ktdHJ1bmsKKzI2ODYwIDk4OWE3YWRmODRlZmIzNTdjNTE3NWRjY2MxODQ0ZGZmNGNkYjE2YjUgbGVnYWN5LXRydW5rCisyNjg2MSA4NTYxNWVhNjViMWJmODBhZjk2NWM2Nzg2ODc0MDY0ZDZlNWI4N2YzIGxlZ2FjeS10cnVuaworMjY4NjIgZGJhNGY1MTc2NDkyZjQ1NDFlNTZiNGNkMzBhMzEyNWVjNGI3MjhkZCBsZWdhY3ktdHJ1bmsKKzI2ODYzIGFkOTA0ZGI3MzQ0YTlmOTQxZWEwZmZhMmEzODUxY2Y5ZDY4YmM4ZjcgbGVnYWN5LXRydW5rCisyNjg2NCA2MjY4OGQ2YWMzODc5YzBjZDdlNWU0YzMzYjA0ZWEzNjJkNGU2NzFiIGxlZ2FjeS10cnVuaworMjY4NjUgZGMzYTdmOThkNGVkMTJmM2U4NjJiYjUyMmJhYTAyNGFjMTFlN2MyOSBsZWdhY3ktdHJ1bmsKKzI2ODY2IDYzMWY5Mjg2NjczMjliYjZjNmQyOGFkZDFhZmY5YjMwODYxNGMzYzUgbGVnYWN5LXRydW5rCisyNjg2NyAxNzJiNjI1MGQ1MjYwM2JmNzc1OGUzMzRjMjdkZmIyZTY3Njg1ZDQ2IGxlZ2FjeS10cnVuaworMjY4NjggNzZlZjRiOTQyYjEzMWJkODgzY2UxYjU3YzZmNmIzMDNiNzgzZGZkOSBsZWdhY3ktdHJ1bmsKKzI2ODcwIDdhYjhjMzgxMTcyMzk3MTRlZTY1ZDk3Mjk4MmJjYmQ1MjcwM2Q5OTYgcmVsZWFzZTIyLW1haW50CisyNjg3MSBjNDRiMjFmY2QzOGFkMzJlNjc4NTM0YjliYWY0ZjVlNzI1MWQ2MzMxIGxlZ2FjeS10cnVuaworMjY4NzIgYjFkODY4MzUyMWVjNGYzNzRmYTkyYTc3NGFjMjllYWU4NGM1YmVlMCBsZWdhY3ktdHJ1bmsKKzI2ODczIGZiYTA1MzQ3YmIzMGFkN2FhMjZjYTZiZWFhYjViYjBjOWJiOGY1MGEgbGVnYWN5LXRydW5rCisyNjg3NCA4MjMwOWM3MzI1ZWZlMzY4NmM4MWEwODk2NmZiZDhiYTE3MTg0NTkxIGxlZ2FjeS10cnVuaworMjY4NzUgN2JjMzFhZDk0NzdjZjVmNjVlMDI2Njc0NDZhOGY4ZTYzZTM3MGY3ZCBsZWdhY3ktdHJ1bmsKKzI2ODc2IDI2NzViMTU4YmY2NzdkZmQ5MzA5ZTlmYjQyNmM0MmVkNWIzZTkyMjcgbGVnYWN5LXRydW5rCisyNjg3NyAzNWYwMWJmMzRkNjA0Mzc2ZTkzNDI0ZWRlN2U4NmI1NWU3OGFmODk5IGxlZ2FjeS10cnVuaworMjY4NzggOWVlYTVlZGQ4NTdmNmFlNGUzYzEzOWIwM2M3ZDU2NWU2N2IxMDE3OCBsZWdhY3ktdHJ1bmsKKzI2ODc5IGIzODk4ZDMyNjUxOWVlMjM5MDY0NmI4NTY4NGU3ZmE2NzNiM2Y2ODkgbGVnYWN5LXRydW5rCisyNjg4MCBiZmVhMTRmOGZmMzUzYzVmZjI4MDE1Y2IwMWJiYzRlNDVhYzM2YjY3IGxlZ2FjeS10cnVuaworMjY4ODEgNzNjMDFiMWNiZGIyYzAxNjFlMzFkM2QyNGM1YzA2OTFiNGU4YzExNSBsZWdhY3ktdHJ1bmsKKzI2ODgyIGMwM2U4ODk5ZDRiMTkwNDQyZmQ3NzE3NmFmNjk4YzlmMTY1YWJmMWEgbGVnYWN5LXRydW5rCisyNjg4MyAwMDE0Mzg3ZmQ2MDQ0ZDExMjU0MDNiZmUyNTdkMDQyZDljYWMwYzQ4IGxlZ2FjeS10cnVuaworMjY4ODQgYjg3MjhkNThlOWMzMzNlYjBlODU2ODYyMGJkZWI0MzAzMmJkZmRjNSByZWxlYXNlMjItbWFpbnQKKzI2ODg1IGE5MGZhYTVmOTQxNzFjNzA3MTE1M2E3MTM5ZmMwM2E2NjljNGFhYjUgbGVnYWN5LXRydW5rCisyNjg4NiAyYWZmMTJlMmE5NGY1YzlkZTM1Njk3MTE3YWZjMTJmMTE3ODQwZDBmIGxlZ2FjeS10cnVuaworMjY4ODcgYjYwMmYyMjkxYjVmZDNmZTQ4N2U4NWI3MDBhYTBiYTViMDJlNGZiZSBsZWdhY3ktdHJ1bmsKKzI2ODg4IDBlMTc3MWZjMDEyZjI2ZGQ3M2M0OGE0ZjVmNzgzZjFlZDJhMjJiNjcgbGVnYWN5LXRydW5rCisyNjg4OSBjNzliMWU1NTUyZTg0OTU5YWYyNGVhYzg5MTA1MWNiNzhhNGU4NjU1IGxlZ2FjeS10cnVuaworMjY4OTAgOTg4MjdhOWQ2MmMzMmVhYzZiOTYxOGViODM0OGZmMzU0Zjg3M2U3ZiBsZWdhY3ktdHJ1bmsKKzI2ODkxIGIyMWI2OTY1ODY2Mjg5YjBkMzM5MTBmYzE2NDg1MmY3YTRiYTc5MDMgbGVnYWN5LXRydW5rCisyNjg5MiA4YTQ5YTEzZmIyOGRmNzBlMzM0N2I3M2I3N2VlMGM4ZjU0YzlhYzVhIGxlZ2FjeS10cnVuaworMjY4OTMgY2VjYTI4MTY3ODAwOGEzZDEzNGRkMTM1ZWZiNjA1ZmMyYmJkMmI4NyByZWxlYXNlMjItbWFpbnQKKzI2ODk0IGVjZWY2NWU1N2NjNmJkOTliNGZjZTAyZjkxZGE4ZjBiODI3NzEwMWEgbGVnYWN5LXRydW5rCisyNjg5NSBhOThlOTNlYWZlZjdlMDNlZTBjMzNhM2YwZjM1NmI5NGUyYzI5YmMzIGxlZ2FjeS10cnVuaworMjY4OTYgMjYwMGNmN2QzM2FmODIzY2I2Yjk0M2MyZjU2Y2RkNWNjY2IzOWU1ZSBsZWdhY3ktdHJ1bmsKKzI2ODk3IGE0ZWZiNTlmODc2NzE4MzI1NDBkMzYzZDNkY2Q2MWY4YmI3YTU4MGUgbGVnYWN5LXRydW5rCisyNjg5OCA3MGI1ZTExMWNjYjA5MDJmNzIwYjYxOWUwYzE3NGU3MmQyOWFjZTM3IGxlZ2FjeS10cnVuaworMjY4OTkgOGQ5NDZjOTMzOWU4MjEwMWViYWI3ZWE3MTgzOTJlYTFhM2QxNmM4YSBsZWdhY3ktdHJ1bmsKKzI2OTAwIDBhNGM5MjU1OWEwYjQxNjY0ZjIxYWMwNGU3MmM1MTFkZDM0NDI1N2MgbGVnYWN5LXRydW5rCisyNjkwMSBmYThmZTJlOTgwNjI1YWU2OGJiNWQzZjQzYzQ3ZTljZjA1YTI2NjhmIGxlZ2FjeS10cnVuaworMjY5MDIgOWU2N2EwZDU3MDVmYmFiOWZiNmFhZjNhYzI2OTZiY2Y4NzE3MjQwMyBsZWdhY3ktdHJ1bmsKKzI2OTAzIGI0OTBmZjE3MDZkOTY0NjJmMzI5ZDkxNGYxMTczYTI1OTFhNGZkYWUgbGVnYWN5LXRydW5rCisyNjkwNCBiZDU4OTQ2YWE1MjFiMmVjZjdlZTRmNTVkMzk4MTIyZjcxYTNlNDY2IGxlZ2FjeS10cnVuaworMjY5MDUgZjZkZWQ2ZWZhYmNmMzA5MDI2MGIzZWQ5MjE3MGU3MmMyMzkwY2Q1NCBsZWdhY3ktdHJ1bmsKKzI2OTA2IDIyMGI5OGYwNjQxNTY0YTA1OTdiNDY4NGMzYjdiMmQxMTI1MDViODkgbGVnYWN5LXRydW5rCisyNjkwNyA0MGEwMzExNTU4OTdmOWJlYjcyZmY3ZDBhOGYzZTI2OTFjZmJjMWU1IGxlZ2FjeS10cnVuaworMjY5MDggMWJmMzRmNDM5NGM1MTdlNDM0NDYwMTMyNTg3MzRhMGJmNjQ5OTAwMyBsZWdhY3ktdHJ1bmsKKzI2OTA5IGNlMWRhMmY5NzgwNzZlNGM2OWIyOWM0MTg3MWE4ZGZhMTE1YjNmZWMgcmVsZWFzZTIyLW1haW50CisyNjkxMCA4ODkwMzg1M2YxODBlZTZiYjJlMGMxZTgwODdjYmQyODhiMDI0MjRmIGxlZ2FjeS10cnVuaworMjY5MTEgYjc0YWZkZDA3MmViMGExODk5ZmNkNGYxNjY1ZjhhODIwZmE4YjlhMSBsZWdhY3ktdHJ1bmsKKzI2OTEyIDMwM2Q4MWUxNWU3MGMzYTI0MjdhNzJhZTY4MmVmMDc2OTViYzI4ZjcgbGVnYWN5LXRydW5rCisyNjkxMyA0NDZiMmYyYzAxZDhhYWNhMzI1N2FiM2MxYzJjMTM4NTNmNDhhZjRjIGxlZ2FjeS10cnVuaworMjY5MTQgYjNjNTBmNjlmMzhiZjIzOGJkZDU2MGY3ZDFhZTU4OGU1OGEzZDI1MCBsZWdhY3ktdHJ1bmsKKzI2OTE1IGE2NzI0OGZkMjM3MDEwZjgyYTU3MzRmOWU3ZjE4OTExMjViOWRmZDAgbGVnYWN5LXRydW5rCisyNjkxNiAzYjJhN2VlMDg2Njc2MWRkODQwM2RlODdlOGQ1NTQ2YjgyMDU3NDhjIGxlZ2FjeS10cnVuaworMjY5MTcgM2FlY2RiYTQ1NTI4NWEwZTZkYjQ3NDRmYzRiNDdhYTNiODdkYmI3NyBsZWdhY3ktdHJ1bmsKKzI2OTE4IGU1MjQyZjU4YTViNmY5MGQ4NmRjZGE3MzAyNDEwMTRkNDNjOWJjMTEgbGVnYWN5LXRydW5rCisyNjkxOSBjNGZhMzdmODk3ODM5OTMyMWU0ODY2MmE5OTQ2MGUzYjc3YTc0MzVmIGxlZ2FjeS10cnVuaworMjY5MjAgZmVjY2UwMTczMjU0ZjdlYTJkY2VhMmFhODM3NTAyMGY5MWY3M2RjNyBsZWdhY3ktdHJ1bmsKKzI2OTIxIGEzOTlkOGIxM2MyZjQ1OGI0OTUxMGFkODA1NDZmN2UyZmE1NWI3MGEgbGVnYWN5LXRydW5rCisyNjkyMiA1ZDA5NTg5OGRhZTY1OWJmZDFhZmM3ZGZhYmQ1NDI4ZDQyOTU5OWI1IHJlbGVhc2UyMi1tYWludAorMjY5MjMgNTNjNjE0Mjg4ZWFiOTRmNmIwZWRmOGE0NTcwODRjNGFmYTU0MTcwYSByZWxlYXNlMjEtbWFpbnQKKzI2OTI0IDNhNDc5MzU3NWVjZDdlZjY4Y2VkYWVlMjU3ZTA5ZWI5NjY5OTk2MGMgbGVnYWN5LXRydW5rCisyNjkyNSBjNWU4Zjg5ZmQzNTg2OGQ1MWZjMjY1YzQ5YTU0MDFlMDQxYTY2ZjYwIGxlZ2FjeS10cnVuaworMjY5MjYgZWFjYTYyN2YyYTU0NmNlOGU4ZmM1NDJlNmY5YjcyMmVkYWNkZjM0OCBsZWdhY3ktdHJ1bmsKKzI2OTI3IDUwODk2NWNlNWU0NzJmOTZkOTI2YWM3MTJlMGIyN2FiYTQ1OGNmMWEgbGVnYWN5LXRydW5rCisyNjkyOCAzZjI0MmNkZDA5MDRlZTExNWM1ZjQ2NWU1MGJjZmNmYTEwMWE4YzFiIGxlZ2FjeS10cnVuaworMjY5MjkgMWE2N2ZiYzdhMDY2ODIzMWI5OGU0OTI5OWQ0NGRhYjFhOGQ3N2QzZCBsZWdhY3ktdHJ1bmsKKzI2OTMwIGNhZjYyZWVmNzcyM2U0Yzg3ODQ0ZmQ3YTYwYTVkM2Q0M2I3YTM4ZGMgbGVnYWN5LXRydW5rCisyNjkzMSAzZDgzZmFiZWYwYTQwZWU1ZDFmMGRjYzQ5Yjc2YTMzZWMxMmVkZWZhIGxlZ2FjeS10cnVuaworMjY5MzIgYWUwYTNiMTRkMmU4YmU3ODAxNGZlZDUzYzhkZTJkZGJiYzBmNGUzMiBsZWdhY3ktdHJ1bmsKKzI2OTMzIGRjMjYyM2UwMjQzZTI4YmY3N2ZhZTljZWY1MDgyNWIyZTE2MTZjMGYgcmVsZWFzZTIyLW1haW50CisyNjkzNCBiNmMzMmJlYjRkYmNjOWM4MDI5MDlmMzdjYjI1ZmE4NDhhMGYyOTA5IGxlZ2FjeS10cnVuaworMjY5MzUgZDVhZTZmNzE0Y2Q1MWNjN2QyYWY5NzI0NjBmY2JmMDBiMWVjMGE0MCBsZWdhY3ktdHJ1bmsKKzI2OTM2IDRkODg0YWQ4MGRkYTU1NGU5OWU4Nzg4NTEwMmMzNDRlMTJjZGM1ZWIgbGVnYWN5LXRydW5rCisyNjkzNyAwYWM2NTNmNDY5ZjA3MGQ0NGJhNWFiYjliYjY1NjY1NDBmYTcwMmE1IHJlbGVhc2UyMi1tYWludAorMjY5MzggNjY4YzVjYTRlMGQ0OGM2MTcyYTVjYWMxMmE2OTIxZDE2YTE0MTM1ZCByZWxlYXNlMjItbWFpbnQKKzI2OTM5IDk5ZGYyNTcxNDJmNjQzOGRhN2UxYzUxMjRhMWUyMzVlOWIyOWNkNzAgcmVsZWFzZTIyLW1haW50CisyNjk0MCA3ZDRjNWU0YTBjY2MyNmY5OTg1MGFlNjNjYzI0NzdmN2E4MmE0MzFjIHJlbGVhc2UyMi1tYWludAorMjY5NDEgOGY3Yjc5Y2RhMGQzMjFkN2U4M2VhZDYzNTE2MGNmN2ZiMGMzNjZiMCByZWxlYXNlMjItbWFpbnQKKzI2OTQyIGMzNjc2MDdiYjVmN2QyMDQ4OTg2NWIwYTQ4MGUxZDZlMTJlNDliN2IgbGVnYWN5LXRydW5rCisyNjk0MyA0ZTNlYTU1ZjdlMTE4Y2E2ZTI3YjhlODVhN2RlMjIzNzgwOGE0YjI3IGxlZ2FjeS10cnVuaworMjY5NDQgN2RiYTgwZDU4ZmZkNjY0NDM2ODkwOWM2ZjM4NjZjOGMwMzhkYjViZiBsZWdhY3ktdHJ1bmsKKzI2OTQ1IGJlYjUyNzE1OGNiY2RlNzJjMTk4NTdmNDM4MDcyZDMzNTE3MzIwNjggbGVnYWN5LXRydW5rCisyNjk0NiAxOTBiNmJjMTkxMmE1ZDVkNjJkNzliYzk4ZTVhNjJmMTc2NjAwYThkIGxlZ2FjeS10cnVuaworMjY5NDcgMDYwMmM3ZTZiOTRkNzIxM2E0ZWQyNzc2YWUwY2M5MDYyYzFhMmExNiBsZWdhY3ktdHJ1bmsKKzI2OTQ4IGM2YWY1NzRiZGEyOTI4ZjFjZGQxOGYzNjNkOTNjOTg3ZGY1MzAwYjQgbGVnYWN5LXRydW5rCisyNjk0OSAwZTgzNzBlNzA4ODg2M2NkM2QxNTVhMDI3NjdhNmU4ZGQzNjUxMmE1IGxlZ2FjeS10cnVuaworMjY5NTAgZmJhNTdlNDBmNTQ3ZDBiZDYzOTgxZGVhZjUxOTA0OTJhZDk0YWYzZiBsZWdhY3ktdHJ1bmsKKzI2OTUxIGYxMjQ5MTE3MTYzODYwMzgyMWI4YjgyNmJjNTNjMDFmMzM4ZWJhYzUgbGVnYWN5LXRydW5rCisyNjk1MiBhYjk0ZWM0YWY5OGE5MzRmNmQ5YzdmZTY0YjAxOGUzMDgzNTAxMzdkIGxlZ2FjeS10cnVuaworMjY5NTMgYjA2NThmZWVmOTM5ZTE2YzI0YTE2NWIyMjY2MDM2ZWU2MWFkZjhmOCBsZWdhY3ktdHJ1bmsKKzI2OTU0IGE0YmIxODIxMmI0ODBlYjkzZDFiYjc1OGE4M2Q1MmRiNTI5MDM4NDIgbGVnYWN5LXRydW5rCisyNjk1NSBhY2JlOGU3Zjk5ZDkzYjdmZjM0ZGMyZGZiZTgyMDY2NTRmZTFhYWFlIGxlZ2FjeS10cnVuaworMjY5NTYgZDY3ZjFlM2E5ZjFhYmY1OGYyYjNhZTJkZDMzYjNiYTJlOGVjMWMzNCBsZWdhY3ktdHJ1bmsKKzI2OTU3IGM4NDRmY2MzYzk1MjNmZmE3YzdiMzY4MzE2ZDBhMWJiODNiZmQwZmIgbGVnYWN5LXRydW5rCisyNjk1OCBjM2E2N2NlNTgyNDVmNDI1NGEwOTRjODdmNWY3NDU4ZjI0NzNmYzI0IGxlZ2FjeS10cnVuaworMjY5NTkgNDM4MGE3YWExOGRjNmNkZWM4ZDg4OTQ1OGM1ZjNlYjk5N2QxYWNiZCBsZWdhY3ktdHJ1bmsKKzI2OTYwIGMyYmMyZWQxNDVmNzI3YzVjMWI0MzZiMDk0NDFjZjNkN2ZkODUyMGMgcmVsZWFzZTIyLW1haW50CisyNjk2MSBlZDAwN2U0N2IzYTEzOTk4OTBiMjJhYjFhZjBlNzRmMjk3MzJhYzUzIGxlZ2FjeS10cnVuaworMjY5NjIgMmIxZDYxNzgxZDYzNzQ4OTcxMzI3YjZkZTA5MWQ5ZWUyYTY4ZDlmMCBsZWdhY3ktdHJ1bmsKKzI2OTYzIDE5N2ZiMzA1ZmM1Y2NjZmM4MjM0MmNkNDcyMTAzMDNiMjliYzBjNzAgbGVnYWN5LXRydW5rCisyNjk2NCA5MGVlNTViOWQ3MmFkMWMzN2M3OTBjMjliMDE1ZjJhNTBhNmM4MzU3IGxlZ2FjeS10cnVuaworMjY5NjUgN2U0MDA1ODM3NTVmZjQ4MDZjZGRjZTBkNDVjMzJmOGJlYTc4MzRiNCBsZWdhY3ktdHJ1bmsKKzI2OTY2IGRiYWJiMWY3ZWQzYTQ0Y2I3OGRiN2Q1YWE4ODc1YTY3ZDI4MzY5MGQgbGVnYWN5LXRydW5rCisyNjk2NyBjZmZkMDkxZjU2ZDBlZjA1YWFhYWY4ZTVmN2RkZDVlYTE5NTAyMmI0IGxlZ2FjeS10cnVuaworMjY5NjggZWY4ZDQ1NjA2N2ZkMjhjNzYyODVhMjc5YjUxMTcyNjExMzc0NTVkOSByZWxlYXNlMjItbWFpbnQKKzI2OTY5IDcxMjA2MjBmNDMyYmQwOTBhNjFlZjgwOGFhMDFkZDBiNTIzNjYwZTggcmVsZWFzZTIxLW1haW50CisyNjk3MCA1ZWRlYTc1MmE0MjE5ZGMyYWQ5NThkNmJlOGRkYjg1ZDAwNTMzYTY2IGxlZ2FjeS10cnVuaworMjY5NzEgYTY4ZmFhMjY4NTNjZTczOWFlZWExYzAwNzgwNjUzNTNjNjFmN2ZlNSBsZWdhY3ktdHJ1bmsKKzI2OTcyIGVjMjdhYzE5ZjllM2MxYzlmMDk4M2MwYjU0ZjE3OGJiMjcxMTk4NDIgbGVnYWN5LXRydW5rCisyNjk3MyA0NTZkNTg0NTFmZWVhNzQ3Y2UxMWU4N2IxOTA4NWNjZTIxZjM2ODhhIGxlZ2FjeS10cnVuaworMjY5NzQgMGEyODE4Y2MzNDJjZTRkNDIxNmNmNjkxZTYzNzQyMmE3ZmQ1ZWYwYyBsZWdhY3ktdHJ1bmsKKzI2OTc1IDIxYjFkNzQyZTRhNzAwOWNkYTA2NTFkZDZmOGZhNmE2YTMyMDQxZmEgbGVnYWN5LXRydW5rCisyNjk3NiAzY2FlZTI5NTgzODdjZDkyZjNkZTQ2MGIzYjJkZjlhNjFjYWRmMTVhIGxlZ2FjeS10cnVuaworMjY5NzcgNGExZjViZDQ4NmZmOWY4MGViYmVmYjExNzFkMTVhZjhjMTM0NDJlOCBsZWdhY3ktdHJ1bmsKKzI2OTc4IGY0ZWFiMjY4ZTYxN2U5MDQ5MjYxZmI0OGRlMTMxYmY2YjYzOTFiMTcgbGVnYWN5LXRydW5rCisyNjk3OSBhNjcxNWFkNDE2ZTVkYTJlZWYwZDBmYWIzZTE4YTgyOWY3YTYyZTA5IGxlZ2FjeS10cnVuaworMjY5ODAgOWRhODU4MzdmZjI1MDg0YjNlMzg4YTIzZDcwOGY2YmUwNDE0YzczMyBsZWdhY3ktdHJ1bmsKKzI2OTgxIDNlM2IzYzE3NzBhYzExYjU5ZmNjZDU5MzE3MWU2YjkwMDUxZjYxYTMgbGVnYWN5LXRydW5rCisyNjk4MiA1NDQ4M2JjMjE4NzFlZjg1YmM3YTMyYzhkMzNkNzYxZmI5ZDk3NDZhIGxlZ2FjeS10cnVuaworMjY5ODMgOTI2MjZlNWFiMDY3MzU0ZGQxYjlkYjEyYTczZGU5ZTFlODZjYWVmZiBsZWdhY3ktdHJ1bmsKKzI2OTg0IGExZGUwYmFiNTQ3NTA5M2Y5MDVhMjI1ZjZhMjYzMzAwNDVjYzFiZmMgbGVnYWN5LXRydW5rCisyNjk4NSA4N2Y0MDM3N2NmNTQzOGI1MTA2MTlkYmM3ODNkNDkxODExZTMzMjJlIGxlZ2FjeS10cnVuaworMjY5ODYgNWVkZDgwNzI2ZDk2NmZkYTJlOTBkZDViZmU0YjI3YzRiM2IyZTVhNSBsZWdhY3ktdHJ1bmsKKzI2OTg3IGMwMGZlYmJlMDkyOTVlMzAwZDE4MTY3NjY1MDU3ODIzNTBkY2RjZDEgcmVsZWFzZTIyLW1haW50CisyNjk4OCBhZWQzOWNhZjk4NjBkZDYwOGJiMmM4NGY4MWUzNTc3Y2ZiNTUyMmY5IHJlbGVhc2UyMS1tYWludAorMjY5ODkgNjVjZjQ3ODk1MGZmNWMzYTg4MWE1ZWJkZGE4NzUzMzk2YWJlNTdlYSBsZWdhY3ktdHJ1bmsKKzI2OTkwIDYzZDE0MTQxZGQxMGQwMjU1Y2NmYjZjMGM0Yzc3NzZhMjNjYWU4M2QgbGVnYWN5LXRydW5rCisyNjk5MSBhNmE3NjVjN2QzM2I0ZDcxYTc2M2I5NmEwZDZmYWZkMzFlYjA2YTg2IGxlZ2FjeS10cnVuaworMjY5OTIgZWE5NzljNTIwNmI3ZTZiODc1NWQ5MDcxNDFkMzc5NDM0YTdiZWI2NCBsZWdhY3ktdHJ1bmsKKzI2OTkzIDRhNGQxMjBiMmIwZTA5YThmNTZiMDUzMmM4ODMyNTdiNTlkNWJjZmYgcmVsZWFzZTIyLW1haW50CisyNjk5NCBhZmU5NDY5MTgyNjdhMWM1MDYzZDEyMTY3MzEwMGY1MmVkZjYzNjg0IGxlZ2FjeS10cnVuaworMjY5OTUgMWE1MjE2MjM1NjAyOGQ0ZjNmNGJjNzllZmM5MDRmNDJlODlmODU5MiBsZWdhY3ktdHJ1bmsKKzI2OTk2IDExNjYwMTNmYWI3Nzk1MzZmNjU1MzNhNmE0MTg5MTUwZWYzMTU4NGUgbGVnYWN5LXRydW5rCisyNjk5NyAwZWU4ZWY3Y2EwOWM2MzJlMzcyMmE0ZGE2ZmU2ZDA5ZjJhMTViZWJhIHJlbGVhc2UyMi1tYWludAorMjY5OTggZGJlZTJmNjI4YTkwNjcyMmZjNDMwZTBlMzQyYzgyOTVjOGExYWQwZSBsZWdhY3ktdHJ1bmsKKzI2OTk5IDFlNjBiNWQ0MTQxN2IxMzg0YTA5NzhlNDhiZWI3ZTM3ZjUyNTBkYTIgbGVnYWN5LXRydW5rCisyNzAwMCA4NTUxZTY0MjcyN2MyMzVlMTU3MzI5YzNiOWRjZWQ2NzIzN2JlZGY4IGxlZ2FjeS10cnVuaworMjcwMDEgMGI3ZmUwZmE5ZGM2YjFjM2E5ZTgyZmQ0MDExY2Q0YTEwNzVkMzI3NCBsZWdhY3ktdHJ1bmsKKzI3MDAyIDhjMjE1ZGRmZDNkMWExODVjZmNiNWZiZGIxYjE5Yzc2M2IyMTg0OGEgbGVnYWN5LXRydW5rCisyNzAwMyA5NDBmZWYzMjRlYmNiNWY4YzMxMzQ2MWU3YzM4MTUwM2YyMTJkMWVlIGxlZ2FjeS10cnVuaworMjcwMDQgYTI1MDgwZjY5MDFmZTZjOGU5MzNiNmM0MzhkOGMwZjBiY2UzMmI1YSBsZWdhY3ktdHJ1bmsKKzI3MDA1IDA0YTRhMGU3MWE4ZGNmNzAxYzg4NzRmMDkzNTU4Y2IyOGU5NTYwMzAgbGVnYWN5LXRydW5rCisyNzAwNiBjNjQ2M2FmZDlmMDg2MGI4NDNiYWVmMDFlMjBjOTUzYmI4MmFlYWZlIGxlZ2FjeS10cnVuaworMjcwMDcgNzBkNzY4MzM1NTBiMGQ5MzU5NTg5NDU4MDhmZDk2NGE2ZDI0NWRmYiBsZWdhY3ktdHJ1bmsKKzI3MDA5IDNlYmQzNzZhYTRjYjZiNzk3NTI1MWE5MWYwOWRhMzdiMzVmZDMzYjQgbGVnYWN5LXRydW5rCisyNzAxMCBlMWU5MGIwZjFmNDUwMGJiNTVjYmUzMDI5ODg2MDNjMWNlYmM4NjM4IGxlZ2FjeS10cnVuaworMjcwMTEgMjIwZWQ3ZmViYjAwMTljYTZmYTY3NmVmZjlmY2ZhNTc0MmJlZTc3YiBsZWdhY3ktdHJ1bmsKKzI3MDEyIGVjODk0OWU0ZTQ2ZDc4MjQ2MjVkMDZmZWViMmYzMGJlM2NhY2ViOTggbGVnYWN5LXRydW5rCisyNzAxMyBiOTRhY2MxODc0MGU3ZTY4NjJlYTc0ZjIzY2Y3ZWU5ZWNhM2Y0NzcxIGxlZ2FjeS10cnVuaworMjcwMTQgYjkyMThlZmFlOGY1NWM4ZmJiYWFlMjYyMGY5ODZjOWU1MjY5ZjZlMCBsZWdhY3ktdHJ1bmsKKzI3MDE1IGEzNDUyMzEyMWNmNDQxNGU5MWMxY2RhYzVlNDNmN2VmYTY0OGQ1MjcgcmVsZWFzZTIyLW1haW50CisyNzAxNiBmMGNhMzkzNWQwMTFkZGE3MmYzOGRlMDRhMTQ4ZjBjNjFlMjVkOWQ4IGxlZ2FjeS10cnVuaworMjcwMTcgYjQwMTY1YTRlZmU5YWQyYmRiMzZiYjM2ZDEwZWNmZDI4NWJjY2FmOSBsZWdhY3ktdHJ1bmsKKzI3MDE4IGViNmExNjUxY2NkYTAzNzJmNjdjMmVkOWNhM2E2MDkzMzdiYTVjMzggbGVnYWN5LXRydW5rCisyNzAxOSBiODZlYWViMGQ3ZGQ0MmE3N2U5Y2ViNTZmZjNhMzY2ZmU1YzlmM2JkIGxlZ2FjeS10cnVuaworMjcwMjAgZWU3NzJmNmU4ODFiYjIzNDIwYTM3N2M2YjkxYjFhNmVhZGQxMTQ2OSBsZWdhY3ktdHJ1bmsKKzI3MDIxIGJmZGJlMjVhNDViMDY4NjhmMTc3ZTA4ZThkN2VkYzg0NmYzNjdkNzQgbGVnYWN5LXRydW5rCisyNzAyMiA1Zjk3ODE5NmZkM2QwMmZmMTdkYjhkNzYxYWYyZjcwNmI5Y2M5NWQyIGxlZ2FjeS10cnVuaworMjcwMjMgOTRhYTRlYjliYjdkOTQyZDA1ZjQyMmJjMGNiYWE0YTVjMTJkMjc3MCBsZWdhY3ktdHJ1bmsKKzI3MDI0IDVjNWZmZjVkZTI1MGQ3M2I3MGVmM2UyZjVlYmMwMTBiMmQyMmQxODAgbGVnYWN5LXRydW5rCisyNzAyNSAxOGQ1OGRlMjAzZDZlOGRlMzBkZjNjYjM4MWIyYWRkYjI0NjRhMzc3IGxlZ2FjeS10cnVuaworMjcwMjYgYjVjM2YxMGNlNjM5NzlkNjc2N2YyOGFiMjEyZjIwM2RjNGQ0NDAzOSByZWxlYXNlMjItbWFpbnQKKzI3MDI3IDI3ZTIxMjBjYjQ3NjMxM2Y5MjdiN2ZhZjk0ZDI2YWRhYTgxODFjOGIgbGVnYWN5LXRydW5rCisyNzAyOCBlNDE5MDY2ZjQwOGYyZDQyZTdhNzA1NzAyZDAzNGExNmM1NjM0NjM3IGxlZ2FjeS10cnVuaworMjcwMjkgODEwZGNmOWQ4MWM5OGRjY2ZjNmMxMTdlMGNiNjFmODBiMDEwZjA4OSBsZWdhY3ktdHJ1bmsKKzI3MDMwIDZkY2Q0YjZlZTVkYTllOTRkOTU4Yzk3MGM4NTgyOGU3Yzc4YWJhYTMgbGVnYWN5LXRydW5rCisyNzAzMSAyYmVjYjU3OTNhY2QxYzk4NmZkMWY0MjhiN2QzOWFkOGM0ODRkNmI4IGxlZ2FjeS10cnVuaworMjcwMzIgZGM3ZDVjMmQ1ODQ1YTljMTZkODdjMjUxZTFhMjQwNTIwNWZmZjc4OCBsZWdhY3ktdHJ1bmsKKzI3MDMzIGNhODcxMTkyNTVlYjE3N2ZlN2Q2ZTRkZTVkYjVhMmQwNmNiMzIwMjggbGVnYWN5LXRydW5rCisyNzAzNCBlMzIxNTJhZmRlNGFiY2NhODkyNmQ3YTM3ZmM3NTg0YTY3OGVjNjllIGxlZ2FjeS10cnVuaworMjcwMzUgYzNkYmE5MWFmYTZkMTQyZTM5ZjlhZGZlM2JhYTgzYjJmMWFmN2Q5OSBsZWdhY3ktdHJ1bmsKKzI3MDM2IDhlZmE1MmUwYTg0NDg1OTM5YTI0YTU0MDk2NzhkYTk5MTBmMDk1NmIgbGVnYWN5LXRydW5rCisyNzAzNyBlZGM0MjM5NDBjZDY2MzllNDRjMWYxYjVhOGRjNmRhNTFmYTUzMTJhIGxlZ2FjeS10cnVuaworMjcwMzggYjkyZjgxOTM4ODQzZjliNmY5N2NmNzUwZGE1NTlhZjZlMGEzYmMwYyBsZWdhY3ktdHJ1bmsKKzI3MDM5IDJmY2M2ZDRlNGNkMjYxZjI2NTg2NGE2YjZkOTEyZjZhYWVkZWQ4MGUgbGVnYWN5LXRydW5rCisyNzA0MCBmMzVlNzUxZjVmZjI1ODQ2NjEzNGM1OWMwMzVlMWE2YjM5MGUwZDA4IGxlZ2FjeS10cnVuaworMjcwNDEgM2ExYWMxMWViZTUwYzNlMjA2ZjE1OGNkNmQ3NmZmNTQwYzEyODRlZCBsZWdhY3ktdHJ1bmsKKzI3MDQyIDczMmI2OTMxODE2OGMyYzgxMTkzNDBlMzdmZjUwNzI0ZDVjMTNmOGIgbGVnYWN5LXRydW5rCisyNzA0MyA1YzU5MDJkZTVhNTQyMTRmMmJlNTA1ZDA5MWViN2ZiMDYxNzAwMjk4IGxlZ2FjeS10cnVuaworMjcwNDQgYjE4MzQ4YmRjYTA4M2UzM2U1ZjYzYzMxMDkzZTljYTQ1Zjg5NmUxZiBsZWdhY3ktdHJ1bmsKKzI3MDQ1IGYxNTllYTk1NWU4MGVhMmJlNGEzMmZlYjQwYTdiNTFmMWZkMTZhNDYgbGVnYWN5LXRydW5rCisyNzA0NiBlM2E4NDBmYTU4NGNiOGJlOWM2N2NhZjJiNDk5OTQyOTIyOTA0NzI3IGxlZ2FjeS10cnVuaworMjcwNDcgZDUwN2FkODYyMzQyMzIzNzY2NzlkMmU2Y2JmODdhYTllMDBiM2YxOCBsZWdhY3ktdHJ1bmsKKzI3MDQ4IDYxMzU4ZjgwMGI2MTY5MDI3OWFkMTRmODRlNTFlZGY0YzgwYmI5NmMgbGVnYWN5LXRydW5rCisyNzA0OSAzMjViYmI0OTM3YzVkYzlmM2Y0NzJhNTA5NzI1MDU4M2MwYzM5NGRmIGxlZ2FjeS10cnVuaworMjcwNTAgOGE5YTNhZmYzMmZjNThkNDFkODlhOWM1NzM3ZmYyOWYyNWNhMjY3ZiBsZWdhY3ktdHJ1bmsKKzI3MDUxIDE0OTM4ZTc2Mjc2YTFhNjk2NjBjOTkzNzI5ZTE0YTcxODg1OThjZTEgbGVnYWN5LXRydW5rCisyNzA1MiBjNGQyZDMwNWZkOTgyYTdkY2U5MDBmZmI5N2RlMTQ0MmRmNGRiMzhhIHJlbGVhc2UyMi1tYWludAorMjcwNTMgZDdiZDdiNzMyOWE3ZWNkNzM5NThiNzI0NTM4NzczNDE0NzJhNzU1YyBsZWdhY3ktdHJ1bmsKKzI3MDU0IGQ2ZmFhMTM3OTQ4ZGVmY2QzZjQwYzY0MDc4ZmRjNGEwNWRkMzgwNTMgbGVnYWN5LXRydW5rCisyNzA1NSAzOTlhZmNlODZlYjBkODA4MjY3MGVmMjAxZjdjYjcwMmU1Nzg2ODlmIGxlZ2FjeS10cnVuaworMjcwNTYgM2JkZmM0NWQ5MDk2OGM5Yzk5ZTM2YTdiN2Q0NWNhN2MzOGQ1MmM4MSBsZWdhY3ktdHJ1bmsKKzI3MDU3IDNhMmE2YWY5MDk5MjgzYmQ5OWY2MWVlY2EwMjE4ODFkMjJlZmMyZGUgcmVsZWFzZTIyLW1haW50CisyNzA1OCA4OTgzMTU4ZTlmMTEzNDZlY2VmZGQyMGVjMTVmN2RjMTc1YzdhZWIzIGxlZ2FjeS10cnVuaworMjcwNTkgMDgwNTdhOTg3OTEwYjNmOTRhMWE1N2I2YjE5NDFlZGI2N2YyZjAwNiBEU19SUENfQlJBTkNICisyNzA2MCBhNTZmOGMzMGFmNzFjODk1YWRjYzg4NmEwZjU2MWFlZTgyN2U1ZTA0IERTX1JQQ19CUkFOQ0gKKzI3MDYxIDhiOWQ5MTMwODIwZWY3ZWQ4NGQzNjRjMjk4MjBlMTZhYjI2YTg0N2IgbGVnYWN5LXRydW5rCisyNzA2MiA2MjY2ZjFiZDFhYjkzZWZkZjE2OGI0NGQyODM0OWIzYTcyMGM0ZjlkIGxlZ2FjeS10cnVuaworMjcwNjMgMDE5OWFhMjc0YzdiZmZkZTg2MzRiN2ZjZDllNmExZDFjZDVmMTJjZCBsZWdhY3ktdHJ1bmsKKzI3MDY0IGNjZWFmNzhiODVkYzcyZTAxYzEwZWZjM2M1YTRkNzZlZWJlYzBmOWIgRFNfUlBDX0JSQU5DSAorMjcwNjUgMGY1NzBiZTY3MzZlYmUyZWY0Y2I2ZTU5MjAyODg4ZWZhZmQwOTJlNSBEU19SUENfQlJBTkNICisyNzA2NiBjMGU4YzA3YWUxZDZjYjU1ZTE4YzJlOTM5ZTZlMmU4M2QxYTY5ZGRhIGxlZ2FjeS10cnVuaworMjcwNjcgNzcxOGIyNzRhZDhiMTJjZDAyYTBlNDhkMzk5Y2VhMTdkYWRiZWVhZSBsZWdhY3ktdHJ1bmsKKzI3MDY4IDE4ZGRjMDJjZTM2ZjM1ODJlOTIwOTQxYTYxYWMyYTAxNTBlODMzZjMgbGVnYWN5LXRydW5rCisyNzA2OSA2N2I5ZjUzYTc4MDE0Y2FkYzUxNzBjMTRkMWNmMWFmNjk0MWU1MTdlIGxlZ2FjeS10cnVuaworMjcwNzAgOWE1YzQ4NTc5NjMzOWVkNmEwZjBlNzM5Y2VjZmJiOWE3YzMzMGY0YSBsZWdhY3ktdHJ1bmsKKzI3MDcxIGQ0ZjZlMmFkZGU0ODQ2YzIwN2UyOTFhMTYyZDg3MzA0YzgzZmVjMjMgbGVnYWN5LXRydW5rCisyNzA3MiBhYmUxYmI3NmVlNDQ3NDQ5NGI2NjA5ZjBiMmMxNGQ3MmQxNGYyMzMzIGxlZ2FjeS10cnVuaworMjcwNzMgZTRhZGQ3YmI1ZjE0OGRiNTFjZDcwYmNiM2ExZGU5YTQ2Y2M3Y2E4OSBsZWdhY3ktdHJ1bmsKKzI3MDc0IGY4NWY0NTMxYzNjMTY0NDg5MjY2MDE3MjdkYmJkZGM4ZWZmMDEwMjQgbGVnYWN5LXRydW5rCisyNzA3NSBlMzdmMWMwZjlhMWU5MzZmYTc2MzhlZTcwMWRmY2ZmOGU5MDNmNDNiIGxlZ2FjeS10cnVuaworMjcwNzYgMDU4YmQyZDUwZTMzMzlmNjE0ZGUwYzc5Y2NiZGYwMzE5YTBkMWZhYyByZWxlYXNlMjItbWFpbnQKKzI3MDc3IDU2YTRkM2E1MGI3NmI4NmRiZDUyZDY1ZWQxNTk0OTE5OGQ1Zjc2OTEgbGVnYWN5LXRydW5rCisyNzA3OCAzYjM3OWFlMzU2OWQ5MzEwYzRmMzVkMTM1MDFlYjk4NTIzZTI1ZGY0IGxlZ2FjeS10cnVuaworMjcwNzkgNDRiOTk3N2Q0ODQ4N2RlZGE1NTI1MTAyNDliNmExNmMwZjZiMTkzMiBsZWdhY3ktdHJ1bmsKKzI3MDgwIDU2NTAzMmI0OGY1MDljNTMzMzhlYjI5MmU1MTMwNWI2YTEzZDg4YjkgbGVnYWN5LXRydW5rCisyNzA4MSAyOGI5OTcxZjA2OGY3Y2Q0YjRjNGQ5NDgzNzU0YzgzOGRjOTg1YWI3IHJlbGVhc2UyMi1tYWludAorMjcwODIgMmIxMjE5YTcyZWZjYTZlYzc2NmZhZjE3ODdiYjA0YzdmNGU4MTg5NyByZWxlYXNlMjItbWFpbnQKKzI3MDgzIDk2OWJkNTk3ZjkyMzhjNzk2NjZlY2EyZGU2YzMwNWQyNWZlY2M0OWEgbGVnYWN5LXRydW5rCisyNzA4NCBjMjczM2U4ZjY2MTJiOWIyNWVhOGM3NDZiMDc2MjI3Y2ExODQxMTcxIGxlZ2FjeS10cnVuaworMjcwODUgZmM1MzYxZTAyOGYzZDdkNmY3MGU1ZTA2NjQ4NWNlZDA4NGY2ZDBjMCBsZWdhY3ktdHJ1bmsKKzI3MDg2IDc3MTU0Y2VmMjlkMTlmNDBmMzVjOGE2MmQxNTI5MWY1MDJhZDY0OTcgbGVnYWN5LXRydW5rCisyNzA4NyA0NDQ5NTRjNTQzNGMxZWY3ZDgxNGY4ZjI4ZmFlYjRhNmEyNmZjZGExIGxlZ2FjeS10cnVuaworMjcwODggMjM3Y2JkMmE5MWU5YmJmY2IyNmU2MzE1NDg1OWIwOTUwMDViOTJkZCBsZWdhY3ktdHJ1bmsKKzI3MDg5IGIwNjIwODVjMWZmMmI4MGE2NTcyYjM1MzFiYmI2NzdmM2VlN2Y3M2IgbGVnYWN5LXRydW5rCisyNzA5MCA0OGU5MzdlMWIzZmUzZDEwYzI2YWEwZDM5NTE5ZjMzNmNlMDhlNDliIGxlZ2FjeS10cnVuaworMjcwOTEgNzVjNTE5OTljOGQ1NGY5NWFkMWI1ODgwMTMxZTRiYmRkODY0NTBmNSBsZWdhY3ktdHJ1bmsKKzI3MDkyIDJmNmY4NzA4ZTNlOTQ1YTcxNjkyYmM5Yjc2OTY0ZTc2MGM5NzBmNTMgbGVnYWN5LXRydW5rCisyNzA5MyBkYjIzOWVjMzA3ZTA3NDcxYzJlOGJhMWYzMDAyZWZlMmUyNzA4ZWVkIGxlZ2FjeS10cnVuaworMjcwOTQgMTIzNWE5NWZlZGNkNmNhZjJmNGY5NGQ2Njc2MGNiMWExY2VjY2IwOSBsZWdhY3ktdHJ1bmsKKzI3MDk1IDJjZDZlZDFjMWI1ODNiYTI3ODc1MDk4MDAwYTZiYWNmZTgwMzYwOTcgbGVnYWN5LXRydW5rCisyNzA5NiA5ZDExZjUxODYwZGQzZTFmZDNmM2ZmYzJiZmQ5NWM4ODBmZDhlZGU5IGxlZ2FjeS10cnVuaworMjcwOTcgNTU2MmE0OTlmYjdmODQ1MWNmZTljZGQxNTVmZjVjNWFmMmQ4ZmYzMCBsZWdhY3ktdHJ1bmsKKzI3MDk4IDVmODVjYWUyNWUxODU1NDE5ZjJlYjM0MjNlODk2ZmE0MGU4MjA0ODcgbGVnYWN5LXRydW5rCisyNzA5OSBhZjhkNDBlNGMzNzc3MzIwNzFhYTI4NjkzNDU3NzBmZDFlMjQ5NGY0IGxlZ2FjeS10cnVuaworMjcxMDAgZTBhOTFjNjczODhmNGZkMGFhNTBkNzYyYjU2NjIzNTQ4M2FkOTJhZiBsZWdhY3ktdHJ1bmsKKzI3MTAxIGJkMjZjMTIwNTkxYTU3OGU5YjE0MGNiNTE2YmIyNjMyOWJhOWM0MjQgbGVnYWN5LXRydW5rCisyNzEwMiA3ZWFhYmU3N2Q1Y2JkOWY3ZmIzZTZhMzBjNDM4YzZkMmJiZWU5NjExIGxlZ2FjeS10cnVuaworMjcxMDMgMzA4MTIyYjY5OTZlNDRkYzE4ZWU5NTgzYzU0ZTQ3MzM1YTM2M2Y1MiBsZWdhY3ktdHJ1bmsKKzI3MTA0IDY1NWY0ODYyODQzNjljZDRjODM3NTMyOTFlMjU1ODdkYTBkNjY4OWUgbGVnYWN5LXRydW5rCisyNzEwNSAxODQyZGI2YTEzOTQ4NTQ2YzFkNmFiZDRjZGYzZDlkZDM4OWY1MjNlIGxlZ2FjeS10cnVuaworMjcxMDYgZGYxYTI3NWZmNGYyNWI1NGEzNTQyZGI5MzVhZmRkOTRmYmQzMDgwNSBsZWdhY3ktdHJ1bmsKKzI3MTA3IGE2OGQyNDY2ZDk0YmY1NTQ5MjA4YmZhZTRkZGNmNmY0MDkwM2Q1ZjggbGVnYWN5LXRydW5rCisyNzEwOCAyN2Y0ODMxNGJhOWQwZTFlYzMzNjRmNjRhMTE2MDVhOTQ1MjhhODEwIGxlZ2FjeS10cnVuaworMjcxMDkgYTIxMzZhZTlkNGY3NmU3MjUwOTA3NDMyMzNiNzIyNjA4ZGE4YzVmZiBsZWdhY3ktdHJ1bmsKKzI3MTEwIDY4OTUyMDBkNjJiMTljZTlkOGI0YzFmZTM3ZWZiYzY4ZDEzM2Q3Y2IgbGVnYWN5LXRydW5rCisyNzExMSBmZTc2OWIwNzE1MDM1M2ZlMjFjNDc2MzllMjdjNzc5YjU0NDA4MzQ0IGxlZ2FjeS10cnVuaworMjcxMTIgMmUxZGVmNDE3ZWNiODk3Yzk0ZWY3NmYxMTg0MDJmNTI1NjQ4ZGQyZSBsZWdhY3ktdHJ1bmsKKzI3MTEzIGVhMDM1NDkwZjYyNDVjMjg5MTQ4MjFkYmM0MzkxYjQ4MjRkMzJkNTkgbGVnYWN5LXRydW5rCisyNzExNCAzODgzMjAwMGY3ZTk0NWJlNWM0NGE2NzY2MDRlNTA3ZjY2NGUyNTBjIGxlZ2FjeS10cnVuaworMjcxMTUgNDNkZGNkY2QzYzcxZmU0ZWY3NDEyYzY5NDBkMmU2YzY0YjhkMjUyZCBsZWdhY3ktdHJ1bmsKKzI3MTE2IDRkNTkzMjU0YmE5MzkyNWRlZWRkMDBhYWNlOTc1NjE0Zjk4OTE2MzAgbGVnYWN5LXRydW5rCisyNzExNyAyZDY3YTBiYTkwMjBkMjhlODkyZDhkNjVjM2E0YjIzMTczZTM0MGU1IGxlZ2FjeS10cnVuaworMjcxMTggMzY2ODc3ZWRkNDg3NjNjY2E4YTE3NDZkNTMzMzcwZDkyMzFkNDc3NSBsZWdhY3ktdHJ1bmsKKzI3MTE5IDdiYzQ4MDI5ZWFhOWNiM2Q5MGJiZTgyN2RkZjc2NzJlOWI0N2VhNDEgbGVnYWN5LXRydW5rCisyNzEyMCBhMTY4YjJmNmQ3ZGFhZDZmNTgyNmVmOWVlOTU2Mzc5NjcxODkwZmFmIGxlZ2FjeS10cnVuaworMjcxMjEgNDcxYTU3YmYyZGFlMTg1ZDQ4MGFlM2Q4Y2JhMDQ5NmEzMTUxOWQ0ZSBsZWdhY3ktdHJ1bmsKKzI3MTIyIDQxMDk3ZTkyZjU2MGY5OTkzNGJiMmFjZmNkMjgxNjQ4Y2IxZjkxMWUgbGVnYWN5LXRydW5rCisyNzEyMyAyYzhlYTdmOWEzY2VkYzM3ZmYxYTY1MzlmZmI1ZDM5MjkxYzA3YTkwIHJlbGVhc2UyMi1tYWludAorMjcxMjQgMDI3OTA0MGFlMDNjYmE0ZDg5YmUxMGFkNTQyNjM2NTEzMGY2NzcxOCBsZWdhY3ktdHJ1bmsKKzI3MTI1IDhlNWYyNjc5NjYyMDBiMDMzNzIyNzNmNzljYTRjZGIyNzIwZmUyMDAgbGVnYWN5LXRydW5rCisyNzEyNiAwNzcxZjkzODJkMWUzMmRlODk1NjBiZmVlNTJmYjMxMWUzZmM0ODJmIGxlZ2FjeS10cnVuaworMjcxMjcgYzdlODA3ODE3MTU5MWNjZDdjZWJkN2VmNTQ1ZTFlMTdmN2EyYmUxZiByZWxlYXNlMjItbWFpbnQKKzI3MTI4IDkxMzE3MzAxZGQwOThjYTMzYjdmMjEwMjFiNzU2NjhmNzUxMWEzOWMgbGVnYWN5LXRydW5rCisyNzEyOSBlNjQwZDg5YjQ5MDc0MTVhMDg0MDg2MjBmZjMyMmVmZGMyZjlhODQ2IGxlZ2FjeS10cnVuaworMjcxMzAgOTRkMGRjOWQ2ZTQ0ZWYxMDc0MjNiZTZiOTMwZWY4YmVkNjZhODA3NCBsZWdhY3ktdHJ1bmsKKzI3MTMxIGJhZGJjNTMzNDQ4ODYxMjJhYTg5ODI1MzFkY2JhYmVlMGE0ZWJlMGUgbGVnYWN5LXRydW5rCisyNzEzMiBmMTZmNmRhNGY1ZmZkYjZkNWRkYzcwYTIxMGRjZDgyOTY2YTBjNjRhIGxlZ2FjeS10cnVuaworMjcxMzMgZDU4ZmI1NDQ1MTE4ODhlNmZiNTkxODYzZWM4NTllNjY2NjdhYTkzOCBsZWdhY3ktdHJ1bmsKKzI3MTM0IGE3Y2VhZGIwM2VkYzkxNzQ1NDRhNTkyYjU2MTE2NGY4MjY4MWQyNzUgbGVnYWN5LXRydW5rCisyNzEzNSAxY2JjZGRjYTMzYjAyODNjMzg0NmU4MDJjMzlhM2NiY2JjYmRlY2JkIGxlZ2FjeS10cnVuaworMjcxMzYgNWZiMDhkODMyZWFjOWM5MDgzN2Q0ZjIzY2Y4ZmU5ZDVkYjcyMWVlZCBsZWdhY3ktdHJ1bmsKKzI3MTM3IDQ2ODBlZjRmZTkwYWQ0NTMzZDM0YmI2NDYwNzQ5NTNlMmE3MDQ5OTYgbGVnYWN5LXRydW5rCisyNzEzOCAzNWI2MjkwODU1ZmMxZTg3NDM4ODM1ZmNhOTE1MzdhYTkwM2JhMmRjIHJlbGVhc2UyMi1tYWludAorMjcxMzkgZjZiMjcxOWZiZjExOTg5N2VhZDI1MDcxY2ZkYzJhZDU5ZDM1YTBhNiBsZWdhY3ktdHJ1bmsKKzI3MTQwIDA2ZGJkMDg5OGIzOWUyNDNkYTMxZDQ3ZTcxYWZkNmYwMzhkMWYxOGYgbGVnYWN5LXRydW5rCisyNzE0MSBhNTUzNGZhZTUxMTAxNjg2NzcyMjkxMTcwMDNjMTgzN2MyZGEwYjMwIHJlbGVhc2UyMi1tYWludAorMjcxNDIgMGM2NWY0MWZkOTIxOWVkOGZkMjNiZGM0NmI5MWM1ZDM5YjVmOWY4ZSBsZWdhY3ktdHJ1bmsKKzI3MTQzIDUwMDYzMDE2ZDA0Njk5ZDExODZmZTI4ZDE3ZWNhN2M2ODFlMTdjNGQgcmVsZWFzZTIyLW1haW50CisyNzE0NCA1Zjg2YzIxYmQ5ZmM4OTA1NjU2YTJhNDRmN2I3YmZmNDQ5ZDMyYzBhIHJlbGVhc2UyMS1tYWludAorMjcxNDUgNzFkYjQyOGY2ZTA4YTQ1OWFlNGM0MmIxZTg2ZTQ1YmM5NjczYTMzNiBsZWdhY3ktdHJ1bmsKKzI3MTQ2IGJlYzFiOTQyZTBiYzNjZDcxZTc2OWEwMTcyMzExZjU2OTIzMGJiYjggbGVnYWN5LXRydW5rCisyNzE0NyAyNDUyMjRkMWI4YzkyMDFhMmFlODQzZWUxMjE3ZTNiZTNlNzUxNjQ0IGxlZ2FjeS10cnVuaworMjcxNDggNTVjOTIyNjY5OTEzMTM0MWUyN2Y0OGE0ZWU4MzdiOWZhYzUxMWM3MCBsZWdhY3ktdHJ1bmsKKzI3MTQ5IGM3Y2RhNjNhMDA3ZTQ0ZjYxNmQwNWE0YjA5NmJkZDYzN2Y4YjU5YTggbGVnYWN5LXRydW5rCisyNzE1MCA3MzA0OTBmZjI1ZWEzOWJkNjUwMjFhOWU0ZWUwYTg4MzYyOGFjN2JkIGxlZ2FjeS10cnVuaworMjcxNTEgNTRmNmY4OTEzOWRiNTNkOTE4ZTU1NjFjNzU1OTczZjIzMDVhNTI2YyBsZWdhY3ktdHJ1bmsKKzI3MTUyIDBkYWI4YmExZDI5ODA3OWY5YzA0NTllNmUxNWVlNWQ2ZWIyYzZjM2IgbGVnYWN5LXRydW5rCisyNzE1MyAyNGIwZjZkNjkzZTM0YjM3YzUyZGYwNTkwOGUyYjdjNWRkODNkNmVhIGxlZ2FjeS10cnVuaworMjcxNTQgN2EzMmMyMzU2ZTU2N2NmODk5YTI2ODQ2MjNmNTRmMDBhNWIyMTQ5NyBsZWdhY3ktdHJ1bmsKKzI3MTU1IGUwZmJmOWM0ZDQ2YzJkMmJlOGQ3ODUzN2RkMmZiNGViNzc1NzNhZWQgcmVsZWFzZTIyLW1haW50CisyNzE1NiA5MzI5NzcwNjM3YTg1ODUyMTk0ZjZlYjY5NGQxNDc1MzkwMmQyNTc1IGxlZ2FjeS10cnVuaworMjcxNTcgOWRhMmQ4YzEzMjA5MDk0ODM1OGI4NjNiNWEwYjdlM2EzMTBhMGY3YSByZWxlYXNlMjItbWFpbnQKKzI3MTU4IGMwMWMxYjRhODE3MTZkMWUyMzdkNDEwYmMzYmUxOTk2OGM0ZGM2NDAgbGVnYWN5LXRydW5rCisyNzE1OSA0ODZmNDA0NWQxM2RmNjA4OTZhZWY5YmMyMWQ5NjE2ZjM1Y2ZlOTQ3IGxlZ2FjeS10cnVuaworMjcxNjAgY2RlNjYwODczOWM0MmQ0NWExZjZiMDg1MDdmNzU1N2M0ODljNDUxMCBsZWdhY3ktdHJ1bmsKKzI3MTYxIDdkZDQzMmUxZGUyNjY2NDAyZWY2YjU5MGZmMzIwMDU5ZTJhYzZmMjAgbGVnYWN5LXRydW5rCisyNzE2MiA3Y2RjNTMxZTZhNTA0YTA5ZDc4MzdmN2ZiYmJhNTNjMjkwNjMwZWFlIGxlZ2FjeS10cnVuaworMjcxNjMgMWYxYTZmN2RkNjAwMTRkYjA2Y2Q4YmFlZWQ4ODllMTQ3OWEzZjk1MiBsZWdhY3ktdHJ1bmsKKzI3MTY0IDgwZDQ1MGU1NTJmNjk5Y2U2N2EwZjc4MWU3YmExYzc4Y2Y5MjYwOGIgbGVnYWN5LXRydW5rCisyNzE2NSBmY2MzNmVlMTkyNGIzMTZkYTk3NjQ2ZThlOTIyNDczNDU5N2UwY2JmIGxlZ2FjeS10cnVuaworMjcxNjYgYmEyOTQ4NWQwNzIwYmVlYThmMDE2NTdlNDJhMmQ1ZTNjZjJlODk4NCBsZWdhY3ktdHJ1bmsKKzI3MTY3IDFkYTZkNjdmNGEwNWM1ZTMwZjNmNTQyZjZiZGE1MmFjZDQ2MTU1MDIgbGVnYWN5LXRydW5rCisyNzE2OCAyYWQxM2VlNmQ4NTA1YzJjMjQxMDA4NmMxOTYwNTFmODUxODgzMDU3IGxlZ2FjeS10cnVuaworMjcxNjkgYmYxNTU1YTkyNzExN2RiMThkM2VjNjI5M2RhODk0YWZhOGZjNDYxNyBsZWdhY3ktdHJ1bmsKKzI3MTcwIGIyYjFmMWZmNWM3MWNkYTdjMmRmNzQ1OGZjOWRmOWZlYmE2YjU1NTUgbGVnYWN5LXRydW5rCisyNzE3MSA0ZWM1OGMyNzBmM2VjMGMwYzllZWY4OTg5NTEzNzY2NjMxYmQ0MmNhIHJlbGVhc2UyMi1tYWludAorMjcxNzIgN2VhZDJkOWRmN2Y5NjhjZDU0Y2NjZjZiMWI3MDY1N2E3MDQ3M2Y0NCByZWxlYXNlMjEtbWFpbnQKKzI3MTczIDBiMTJhZmM0MDEyYTgwNmNiYTQ1ZTYzNTQ0YjBiNzk1YWM4NzdkNzMgbGVnYWN5LXRydW5rCisyNzE3NCAwNjAxZWNjN2Y0YmY3MzlkZDM5NzgyMTdjMmMzZjM0NzBjZTA3N2NmIGxlZ2FjeS10cnVuaworMjcxNzUgYzc0ZDg2ZGM0MDE3NzRkYzk4ZWU0MDUxNGZjNmNlZDY3OTgyZGVhYiBsZWdhY3ktdHJ1bmsKKzI3MTc2IGNjNjViNWJjZmMzODM2OWI4ZDliNjU3NmE0NzlhZjYxYzE2OTY1N2MgbGVnYWN5LXRydW5rCisyNzE3NyA3OWRjZDU3ZjI3MmRlYzQ5MzMzMzU2YzkwNDVjNzY0Zjk2NzY2MjA2IHJlbGVhc2UyMS1tYWludAorMjcxNzcgYmI1YjM3MDQ5MmQ2YTM3NjllN2UzYWE1MGJmNDU3MDZjMmQzNDJmYSByZWxlYXNlMjItbWFpbnQKKzI3MTc4IDAxZTRiNjk4ZmY3ZWZlMGIxZjMyOTdhMWI2OWNiN2RkYjI0YWM2YTkgbGVnYWN5LXRydW5rCisyNzE3OSBlM2UwMTliYzRlMWVjZTQxNDVlZTE3NTc1MWNkNmM2Yjg0NzAxYzU1IGxlZ2FjeS10cnVuaworMjcxODAgODlhN2ZhOTE4YzNiN2Y2ODlhZjQzNGJmNTc4YjM2ZjM2N2JhNGY5YyBsZWdhY3ktdHJ1bmsKKzI3MTgxIGY2YzI2ZDA4M2JmNmM4ZGYzMDg5M2VlNmRhYmY0ZmM5ODYxODZmNWEgbGVnYWN5LXRydW5rCisyNzE4MiBjN2Q3ZDIzMTliM2ExYzdiYjUzYjFkZWYxYTY4N2MxNzMwYjgxZDMzIGxlZ2FjeS10cnVuaworMjcxODMgMjAzZDE0MTJhN2U4MjZkM2MwNDI5NjJlZjVmYjI1MTlmNTFmMzZjYyBsZWdhY3ktdHJ1bmsKKzI3MTg0IGU0ZDU1N2Q0NmI5NmZkNjU0MjJkYmUzNzY2NWE0NzNkZjczMDNhZDQgbGVnYWN5LXRydW5rCisyNzE4NSAyZDk3YmMyYmE1MGQyNzhkMGJlYjYyZjYzZGY0M2VkMDY2NmI3NWIwIGxlZ2FjeS10cnVuaworMjcxODYgOGEwYTE0ZTM3MjVlMzc2M2YxNTY3Nzc2ZmFhMGI5NzFlMWRmMjkyMCBsZWdhY3ktdHJ1bmsKKzI3MTg3IDQzZDY1OGRjOGRkMzZlNDQ3MzZkM2I1MTZiY2VjYzkzZmRlZjMxMjggbGVnYWN5LXRydW5rCisyNzE4OCAxMzBmZmY0ODZmYTY0ZWY4MjAwNmQyNzA1NWQyNDc2MWU0NTAzYjg1IGxlZ2FjeS10cnVuaworMjcxODkgMzEyNmM0MjYyOTYyOWI3OTVhYzNkYzA0YzY0N2MxN2FlMzcwOTdlNiBsZWdhY3ktdHJ1bmsKKzI3MTkwIDk5ZDIyNzIzMjUyZjU5MDg5OTVkZDg2YTM2NTc2YjI3NTI4MGJlZTAgbGVnYWN5LXRydW5rCisyNzE5MSBjNDhiZjVkZjYxNGFjMDRhN2QyNTU2ODdhOWIwZDc1NTA4NjUyMjFhIGxlZ2FjeS10cnVuaworMjcxOTIgOGZmNjkxZGM3ZjI5MWRkZDBjN2I1MjY4N2FkYmI1OGZmYTE3ZGM4NiBsZWdhY3ktdHJ1bmsKKzI3MTkzIDlmMDAwOWNhOTdiOWE1YzJkN2M4N2VkOGRhOGQzYzA1MTEyY2VmYzAgbGVnYWN5LXRydW5rCisyNzE5NCBhYmNmYTQ5OTUyYzQzMjYyN2U2ZDExNGM2ZjAwYzhmODE4ZGNkZWQzIGxlZ2FjeS10cnVuaworMjcxOTUgZDVlODhjMGM5ZTA5ZWU1NWFiMzgxNTkwMDNlMzNkYTllYTIxZjg5OSByZWxlYXNlMjItbWFpbnQKKzI3MTk2IDQxYzRkZGFiMzZmMmUyMWUyYzEzNzQyMThlMmFlMGRkZjZhNTE2NjggcmVsZWFzZTIxLW1haW50CisyNzE5NyBlNDI3MmFkMWE2MzY5NGEyMGQxYjE1MzJjZWJlNDQ5YWY3NzNmMzgwIGxlZ2FjeS10cnVuaworMjcxOTggYWRlMWQ1NjEwOWE4MmY5NTBiNTk4OTIwMzAxZDc2YTMyYjNiZGM5MCBsZWdhY3ktdHJ1bmsKKzI3MTk5IGY3MzA2YWU4NjYyZGI1ODgyMGNmZWRiMjg0NjVmOWQ0OTdlYWRiNTEgbGVnYWN5LXRydW5rCisyNzIwMCBlZDFiYTM3YTQ2YjczZjBjNWIyNzEyNDU1NTRjMmRjN2JlNDdhMzJmIGxlZ2FjeS10cnVuaworMjcyMDEgOWYwYWQwZWI2MWYwODZjY2Q3YTdmMmE2NjJlYmUwOGQzNDNmNDA3OSBsZWdhY3ktdHJ1bmsKKzI3MjAyIDhhZTI2ZDliZTFiNGZjMTNmNGRmNTkxMWJjMTRhOGM1OWQ1YzFhYWUgbGVnYWN5LXRydW5rCisyNzIwMyAxY2YxZjk4MTIyMTk3OTg5NDMzMTRmMTNhZjI1YTAwODNiZmJhNWEwIGxlZ2FjeS10cnVuaworMjcyMDQgMDY1YTdmMjNiZTJmZDQ0YWM3YWIwOWU2ZTNjNzU0N2Y4NTU0OTQ4NyBsZWdhY3ktdHJ1bmsKKzI3MjA1IDM1OWE1N2U5NmQ1ZWI2M2JkYzU3N2UyMmU4ZDY3MGEzNzAzYWQxYmMgbGVnYWN5LXRydW5rCisyNzIwNiA5NTI2M2NjZWM4MTljY2M1MmZjMWRlYjU4MjQ4Y2EzNjhmZGM1Y2MyIGxlZ2FjeS10cnVuaworMjcyMDcgYzg4MTViZDAxZmY1NzhlNTlhNTY1NDYyYmEwZDU1YWEwOTI5MjEwYSBsZWdhY3ktdHJ1bmsKKzI3MjA4IDkwMzExMmMxYzg4NzYwODhiOTdmZjExNzc5MzYyM2FmNGFkNGYxNGIgcmVsZWFzZTIyLW1haW50CisyNzIwOSAzZjE5NmI0ZGM0YzEwNmVjMzY2OGI3ZjY5ZWJmYTkxMjdiMmNmMTJiIHJlbGVhc2UyMi1tYWludAorMjcyMTAgNmM2MTljMTYxYjg3ZjhkZmQ4MTEyNjU2YjA3NjBmNzJkNjA5NmQxZSBsZWdhY3ktdHJ1bmsKKzI3MjExIDg1YTRlNzI3YjE2YmExZTczYWNhNGQ1YjEyOGIxZDNiMTllNWNiZmEgbGVnYWN5LXRydW5rCisyNzIxMiBiZDM3ZWI0ZGFmM2I2NzQ4MjhkNjBjNDljYTQ4N2U5ZDIxOWYwNzE3IGxlZ2FjeS10cnVuaworMjcyMTMgYjQ4MWJhOTY3YWQ4MzcxMGQzNjlhYWE1OTZmMTQzZTUwOTI5Y2Q3MCBsZWdhY3ktdHJ1bmsKKzI3MjE0IGJlYjY5OWUxMGIyOWNlMjI0ZTAxMGU1OTg5NDBlYzgyOTgyYjA2ZDggbGVnYWN5LXRydW5rCisyNzIxNSBmNmMyYzA4OWZkZjJhZTAzZTM3OWI2OTljNDYzMjNkYzMxM2U4N2M2IGxlZ2FjeS10cnVuaworMjcyMTYgNzI1MmI4NjdkODFlMjhlZmNmNjI5ZTEwOWE0OTZmY2U0OGU4YTRkNSBsZWdhY3ktdHJ1bmsKKzI3MjE3IGM5YzhmNTIzZmYxYjU2NjdmZmRkZDZjMjgxOGY5MzZjY2VjZmQ2ODYgcmVsZWFzZTIyLW1haW50CisyNzIxOCA4NTQ1ODNjZDYzYzdjZTU3M2I3Yjg3MjkyZDBiZTQwY2FhZDQxOWZkIGxlZ2FjeS10cnVuaworMjcyMTkgZDZhZTU0NGFjZDI0YTFmNzJjZTAwNTM0ZmVkNDY0ZmRlOTFlZTUwNCBsZWdhY3ktdHJ1bmsKKzI3MjIwIDQ2Mjc1ZjllNzQwNzEwZDliMGU1YTBhZjI2NGJkNDJkOTY3MTdiNzcgbGVnYWN5LXRydW5rCisyNzIyMSA4YTQ3NjkyNGVjZmVhMTk0ZjQ3YzBjMjY2MGNkMDZkYjFkODBhMzVhIGxlZ2FjeS10cnVuaworMjcyMjIgOGJjNGU1YmExZjY1MTdhNzg4N2U4OTJhOGJjNzJmMzE1NWE4MDI2MSByZWxlYXNlMjItbWFpbnQKKzI3MjIzIDJiMDcxMzM3MjA1YzAxYzI2ODViMWJiZjIyYWZmM2E1ZjA1NGY1MmQgbGVnYWN5LXRydW5rCisyNzIyNCA4NjhjZmJkY2E5MDk2OTliMGM1NjkzMDBhMWUwMjc0ZDI3NWE4ZGFlIGxlZ2FjeS10cnVuaworMjcyMjUgNTAyN2U3YzEyYTE2MDAzYTA2ZmIwM2EwYTQ0MWZmY2JlZDhkYzk1MSByZWxlYXNlMjItbWFpbnQKKzI3MjI2IDU5ODZkYmQwMDk0ZmMzYjNmNDMyNDFlMDFhOWU4YmNjY2FiZWRiYWYgbGVnYWN5LXRydW5rCisyNzIyNyA2ZDAwOGE0ZTI2MzMzNWVmZjdlZTM2ZDc1MTRiNDdlOWQwYWUyY2FmIHJlbGVhc2UyMi1tYWludAorMjcyMjggNjNlZTMxYmIyNWYzMjU2MDI5Mzc3ZjZiNzQwMzY3YzhhOGUwNTJkNyBsZWdhY3ktdHJ1bmsKKzI3MjI5IGQ3YjMwN2MzNzljOGRjMWRkNWQwMzZmZmM0NzlkYTczNDNiOTkzNzAgbGVnYWN5LXRydW5rCisyNzIzMCBiNzlkNDMzMDVjNzJkOTQ3M2Y1ODUzNmNlYTE5MzFmZjkzYTczZTY0IGxlZ2FjeS10cnVuaworMjcyMzEgZGZhNjg2NjhkMDBlY2RiNTZhZmJmZGJlNDVkODZjNTM2MzA1YjY3NSBsZWdhY3ktdHJ1bmsKKzI3MjMyIDZjMWEwZGM4NTFiNmMxY2MzOTVjODZmMTdhZjY3MjlhZTE4YzIzNmQgbGVnYWN5LXRydW5rCisyNzIzMyAxYTc2ZTNjNDUwOGYzNjM1M2IyZTNkYjY1Y2UyZmU3ZDZmY2NiYjQzIGxlZ2FjeS10cnVuaworMjcyMzQgNDg3YTZiOTlmNzgxMWIwZTgxMDZjMDNkZGYyMWUxYTRlYjM3ZDJmNCByZWxlYXNlMjItbWFpbnQKKzI3MjM1IDQ1ZDY3NjkzMzg4MjhmN2YxYmRhMzA4ZTE3YWU0MTc1ODZjMjNlZjIgbGVnYWN5LXRydW5rCisyNzIzNiA4ZTY3NjBiZjE4ODRlN2NiNDAwODdhMWJmNmU0OTM1NDRkYjViNTEyIGxlZ2FjeS10cnVuaworMjcyMzcgOGFkODFiMzc5NTUyMDA1OGFlMWM3ODQzZjAxMDMwZDYyZWY1MmFhNyBsZWdhY3ktdHJ1bmsKKzI3MjM4IDYzZDFlMzI2M2Y0NTYyZjM5NTQ1OTI2MTM2NDE2YmUxNDI0Zjk0ZWEgbGVnYWN5LXRydW5rCisyNzIzOSA5NWU3YmJiZDA5NTQ5NDVlZGE5ODdjZTcwMWVhMzczNjUxNWU0MTc5IGxlZ2FjeS10cnVuaworMjcyNDAgYzAyZDFjOWE2NjJlNjY1YTQwN2Q1MDk5NGE0NDRmMjIxNDMxNTMzYSBsZWdhY3ktdHJ1bmsKKzI3MjQxIDQ1ODhiNjgyMGExMWU1NGJiZDQwOWZiZWZjYzU3MTkwYmE1YmM1NDIgbGVnYWN5LXRydW5rCisyNzI0MiAxNWFiMjkzOTM3NzlmMTlhYTgzYTJhYmY0YzlkZjNiN2I3NTAxMWQ2IGxlZ2FjeS10cnVuaworMjcyNDMgNWFmZDE0YTJhOGJjNmM4NzYwMTQ4MWE2NTJkODgxZjkxNmNlNDc5ZCBsZWdhY3ktdHJ1bmsKKzI3MjQ0IDgzMmYwNTAxMTQ4YmI3OGVjZjJlZTQzZTI5ZDNiMjY5NWM0ZWQxN2YgbGVnYWN5LXRydW5rCisyNzI0NSAwNDk5ZGY1ODg0ZDJmNTRmZmM0M2YwNGY2NzMxZTQ2NjcyNjg1MWQ4IGxlZ2FjeS10cnVuaworMjcyNDYgNGY2ZDMxZGFjZDVlNjdlNDljNTJjNTc3MzliZTJjZDAwZWY4OTMxNCBsZWdhY3ktdHJ1bmsKKzI3MjQ3IDA4NDc1Yzg3ZDI0ZjUwZDI3Yjg0M2UxMmU4ZTEwNzY1OWZkNzc3Y2MgbGVnYWN5LXRydW5rCisyNzI0OCBiYmFlYWYyNzE5YzRiYmU2NTYyZTg3Y2UwYTBjZTkxODY1NzZhN2JiIGxlZ2FjeS10cnVuaworMjcyNDkgOGI3ZDg3ZWE0ODk0ZTFkNjA5NjBiYjA4NmZkMjg1M2I3Zjc2YWFkNiBsZWdhY3ktdHJ1bmsKKzI3MjUwIDNkYmE4NjZlODYyZTlmZmE2MWJhNDUxYjRiNmY5NzFkNTAzMDAyMzYgbGVnYWN5LXRydW5rCisyNzI1MSAwMDBhYjU4NGU3N2E2MWI0Mjg4YWViMWI2M2JjZDBlNzVjY2E1N2YwIGxlZ2FjeS10cnVuaworMjcyNTIgZWE3ZTcxN2RlZTI3MjNiNDE2NDk5NzYwZDU1NTQ3ZjA5ODA4NjAyMiBsZWdhY3ktdHJ1bmsKKzI3MjUzIDRjNjdkZDQyYTFkOWVhMzhjNTk5Yzk3MzQ4ZmVjY2NjYzdkNDFiZDkgcmVsZWFzZTIyLW1haW50CisyNzI1NCBhYjUzNTVkODczZGQ1ODdjMWJlZTQ3MDBkZDIwM2YzZThhYWQ3Y2M5IHJlbGVhc2UyMS1tYWludAorMjcyNTUgMWNlZjYxZDU5NDc4NjcxZTA1YmIzMjU0YTE2ZDhjYjJlNjJlNWNmYyByZWxlYXNlMjItbWFpbnQKKzI3MjU2IDdiNjZmMDAzNDIzM2E3NjY3NDFjMzM2ZTQ5NjAxYmYzYjY3ZGJjMTIgbGVnYWN5LXRydW5rCisyNzI1NyA0MWFiNTMyZDRmNjAxY2NhNDRjYzY5OTViMDAzN2I1YTliMzhkY2UxIGxlZ2FjeS10cnVuaworMjcyNTggYzE0NWZkZGVhMzQwODRmZjYzYTE5MGJhMzYxMjM0ZmMwMDgwZjM3ZSByZWxlYXNlMjItbWFpbnQKKzI3MjU5IGVhOWQzMzNmOTAzNGUxZDUyMzc0NjJiYjgzMDAzMjg4M2ZlZWFlNDAgbGVnYWN5LXRydW5rCisyNzI2MCBhNDRmMzg3N2EzODZiZjI3Mzg3NTRlMTljNTMxNzhiZGQ4ODBkNDc3IGxlZ2FjeS10cnVuaworMjcyNjEgODNlNDU4YTYzYzNmYmFjNDM3NmU0MmQ5NGIyMmRkNjM4MTMzM2ZkMCByZWxlYXNlMjItbWFpbnQKKzI3MjYyIDMyNGM3MjY3NWM4ZDA0YjRiMjI1M2MwY2E0MjhiNjhkNDRkYjJlZmMgcmVsZWFzZTIxLW1haW50CisyNzI2MyAwMmM1MDQ1ZDViNGUwYTMyN2Y4ZmU4ODkyNzcwYjg2ZWNhODMyNDgxIGxlZ2FjeS10cnVuaworMjcyNjQgYWQxZDg2MmZiNjMyNjRkZjBhM2Y4MjJjYzQ4NmE4NTY0ZTExNzk0NyBsZWdhY3ktdHJ1bmsKKzI3MjY1IDgzMDVhMTk1ODRiYzg4YWUxNmU2OGE4ZWNmNTVlYWQxMjA2NjYwMjggbGVnYWN5LXRydW5rCisyNzI2NiBmNTAzMGEyOTkzNWRjYWIzYTMyY2RhMGE4NmIxMDEwYWZmOGVhNzYxIHJlbGVhc2UyMi1tYWludAorMjcyNjcgMjg1NzAyZjA4MjRhNjM3ZTczYzhlNWYxYmE1ZjRiYWZjNDI1MmQxMiByZWxlYXNlMjEtbWFpbnQKKzI3MjY4IDA4OTk0MDlhMGNiNmQxZTFlM2E4NjM2OTg3Y2MzOWM2ZmVhNTY0MjkgbGVnYWN5LXRydW5rCisyNzI2OSAwMWNkZDM4ZDM1ZmEwZDBjMjBiMWUzZjMzZmE5ZjFhMzhhZGRkNTczIHJlbGVhc2UyMi1tYWludAorMjcyNzAgYTA3YmMzMDNhNjBkOGFlM2I3NGU1OTVjMTYwYzNjODhmYWY1NTE2OCByZWxlYXNlMjEtbWFpbnQKKzI3MjcxIDA2NmY4OTM4MDcxYTU1MDg4ZGRmN2RmY2NiNjkyMjgxYWZiYzNhOTAgbGVnYWN5LXRydW5rCisyNzI3MiA0ZjA2MDZjZWVlZjhjOTQzOTRlYjJiY2YyOTNlMWRlNTA1ZTM1NzAyIHJlbGVhc2UyMi1tYWludAorMjcyNzMgZThiYWUyNTM3ODRiM2VkY2JjZTEzMjY0Mjc0Y2JlNDczNzIyYjc3ZCBsZWdhY3ktdHJ1bmsKKzI3Mjc0IDljZTcxYjFjYzE3ZjcxOGU5Y2I5MjUwY2IyMGRmMjdjMWVkM2VhNzEgcmVsZWFzZTIxLW1haW50CisyNzI3NSA3M2NmNGQ4NDc1NzBlY2FhYjU0ODUyNDNkYTg3YmVhNDE1OTEwOTdjIGxlZ2FjeS10cnVuaworMjcyNzYgOTJmMjg5YzJmN2M2M2Q5NzdiMTU5MTllOGIzOGRhZmU0OWQzNTliYiBsZWdhY3ktdHJ1bmsKKzI3Mjc3IGIxNmQ0YmU2YTIzMmVlMTgxMTE4NDc1ZTMwZDBhYjkxZTRlNDUxYWIgbGVnYWN5LXRydW5rCisyNzI3OCA5MjEwNjRjMjYyOTdiMjVlYjIzYmE5NmQ0Y2MxYmViMTc0M2E1OGNmIGxlZ2FjeS10cnVuaworMjcyNzkgNjg5M2NlZWM4NjEwZTljNTQ4NDM0NjFkNDkzOGQ3OTVmMmZhNGJhNyBsZWdhY3ktdHJ1bmsKKzI3MjgwIDA3NWY3NTVhNjVkYTE2YmRlZmZmMzcwOTAwYTgzOTIyYTA1NDE2MzQgbGVnYWN5LXRydW5rCisyNzI4MSAxMjk4ZTk3ZmIzNDNhZGIxNmIyZGQxZWRiZDNjNDZjZTZjNzVkYmExIGxlZ2FjeS10cnVuaworMjcyODIgN2UzZWFjNWQzMjk5NzljZDk2MjBmOGUwYjFmZTM0YTU4NDdjYTBkZSBsZWdhY3ktdHJ1bmsKKzI3MjgzIDYyMGI2OTk2ODVmZjA0MjhkMjk1NjBjOTk3OWFjMzJkM2UzZGZhMWQgcmVsZWFzZTIyLW1haW50CisyNzI4NCBmZjBjZDY4NzhiZGRlNWZiZjIzNjU3NTcxMWEwODVkMzRiNTcwNzZmIHJlbGVhc2UyMS1tYWludAorMjcyODUgY2UxNjNmMzQwY2RmZjVjMzYyMmY5NjIyOGViODFiZTMxNDJhNmU5MCBsZWdhY3ktdHJ1bmsKKzI3Mjg2IDBiY2VmM2NhMjFjMDZhMzcyMzg3ZDE5MThlOTc1OGVkN2EzOWM3MTcgbGVnYWN5LXRydW5rCisyNzI4NyA1ZjY5ZDZmMTdhYTMxMDkyZDcwNzdhZjJmOGNkYjg3NThjMmEzMGM3IHJlbGVhc2UyMi1tYWludAorMjcyODggODE1ZDAyODAwZDk4MGJmMDIxMjA4NDQ5NTVmZmQwODI4MTQ1YzhmNiByZWxlYXNlMjEtbWFpbnQKKzI3Mjg5IGJhZTk5NmJiN2Q4MmNlMmRlZTkyNDE3NzFmNGEyYWU1Y2MyNTk3NjYgbGVnYWN5LXRydW5rCisyNzI5MCAzNzU2MGY0MzRmNmEyYmVhZTBkYTZkMmE3NWNiMTQxYzE4N2NkZjZmIHJlbGVhc2UyMi1tYWludAorMjcyOTEgMTJmNDlmYThmNDdmMmFiYTI0NjZiZjIwNGMxYzQxOWUxOGViMDdmMyByZWxlYXNlMjEtbWFpbnQKKzI3MjkyIDkyMTFiYzcyNDlhMDdlYjM0NDJkNGNjZDA1MjI2M2FlNTk1NzA1MTYgbGVnYWN5LXRydW5rCisyNzI5MyBmYmE3ZDEwMzVmZWQ1ZWZjMWFhNDAzMzFhMTBjNDdiNWMzZmNlNDg4IHJlbGVhc2UyMi1tYWludAorMjcyOTQgNTU4NmYyMDg1ODE1ODZiNWY5MWI4ZDkzMDdjMzQ0M2VlZWJiNzM0MiByZWxlYXNlMjEtbWFpbnQKKzI3Mjk1IDk3MGFhOTcxMjgxMzFhZTQ5NzdlNzk5MjcwNjFkMDRkOGUyOTJhYmEgbGVnYWN5LXRydW5rCisyNzI5NiA3ZGZlNDhjN2FhNjVlMGM2Y2VjZDE1ZTk4MWFmYzBhYTg0YjA4NmE3IGxlZ2FjeS10cnVuaworMjcyOTcgMjZiYTE3Yjc1OGI5ZWRkOTliYmRjY2U5NDU4NjU1NTk2ZjVkYTQ3ZiBsZWdhY3ktdHJ1bmsKKzI3Mjk4IDhlYjJmMzFlZWE5ZWIzZWFlMmFhMmM2NDM4NmYyODljMDQxYTA1YjMgbGVnYWN5LXRydW5rCisyNzI5OSBlNTU4YTQwYjZiNTIzMTE2MTBkOGIwOTFlNGYzOGMwOGIyYWEzMWJhIGxlZ2FjeS10cnVuaworMjczMDAgZWFiOGVjYTllYzUxZDJiOTJmNzI5ZGEyM2E1MDNmZDI5OGRjYTRlOCBsZWdhY3ktdHJ1bmsKKzI3MzAxIDVhMjMwMmY3OTcyNDllOWExNjZjMDY5MTA4OWI5YWQ0NWI5NWE5NTUgbGVnYWN5LXRydW5rCisyNzMwMiAzMDQyZGFkMTQ5YWU3M2U3M2NkMmM1NDkyNTdiMTg5ZjBlZmY0MGFiIHJlbGVhc2UyMi1tYWludAorMjczMDMgYjViZGU3N2RhMjBlMDdjZjkxN2RhOGZmY2IyODJiODIxOTA4NjIxNiBsZWdhY3ktdHJ1bmsKKzI3MzA0IGQzYjVmYWZlY2IyOWRmOGZhZTFmNmM2NjkyYjFiNzlmYmRmMWMwZGMgbGVnYWN5LXRydW5rCisyNzMwNSAzNTAwZGE2NjZjMGMzZDY5NmUxNzc5ZThkMzFhZWJiNDFlZmFjYmNhIGxlZ2FjeS10cnVuaworMjczMDYgZDYyZTY4NDU0MmI5YmJmNTM2NmNlYmVkM2RhYzMxMWVhN2VjOWIwYSBsZWdhY3ktdHJ1bmsKKzI3MzA3IDg0ZjA5MmIxMDZlZmI5MGZkYTYwMjkxMTE2ZDY2MTgwMzI1YTdkMDEgbGVnYWN5LXRydW5rCisyNzMwOCA4MzM1NGMyY2EzOTAzZDE2YjQxNTlkOGQzZWIyMDg1M2ZiYzljNWIxIGxlZ2FjeS10cnVuaworMjczMDkgYTYwYTNkOWM2ZmQ5YTZlODYzYTgzOGUzMjA4MWJjZTA1NzNjMjJkNiBsZWdhY3ktdHJ1bmsKKzI3MzEwIDZlMmEzYzU3MDBhYzljN2ExMWRiYTY3NWI0MDU2ZGYzODY2NDk0ZWYgbGVnYWN5LXRydW5rCisyNzMxMSBkZTYyNTUxN2FkZTgwMmQ0ZDMzZjg0ZjhjYmQ3ZDU4MTE4YmQ1NWJlIHJlbGVhc2UyMi1tYWludAorMjczMTIgYWVhOGZiM2UzZjNkN2RiODM1ZGU3YTMxMzg4ODg4ZTllYzM3YTI3YyByZWxlYXNlMjEtbWFpbnQKKzI3MzEzIDg1ZTEyMDRiNjYxNzFiY2Y3YTk4MmEwYzBkNzBkZTExYmI0ZGIxMzMgbGVnYWN5LXRydW5rCisyNzMxNCA2NTJmMWIzMThlNWEwODFlN2Q1Y2QxNDYyODM5ZWRlMzM2NGM3MzBiIHJlbGVhc2UyMi1tYWludAorMjczMTUgMzcxMThiNmU1ZjQ2MTI0Y2E0NDYwYjcyYjAyNTE3YjYwYmU1OTczOSBsZWdhY3ktdHJ1bmsKKzI3MzE2IDgzYWE5OWRlZGE3NGRlMTU4YjVkOTkyNDA1NzI5MDg5MTIwZTY2YjcgbGVnYWN5LXRydW5rCisyNzMxNyBlZDYyYzA0YjE5ZjUyMGUzNTliNjgxNWMwZTNiZmRiMjJmOTdkZThhIHJlbGVhc2UyMi1tYWludAorMjczMTggZjdjZTY5Njk3OWUxOGIwMTFhN2U0MDc3OTVmMWQ5OGFhMjMyNGM0MyBsZWdhY3ktdHJ1bmsKKzI3MzE5IGQ0YmQ2NjAxNzAxZDM1ZGM5NzlmZDdhOTk1Njg1ZTlmN2Y3NDgxY2IgbGVnYWN5LXRydW5rCisyNzMyMSAzODM0Y2IwZTdiZTY1YzVjY2M4NTAzMDlkMTZlYmE1NjQ5ZDYxN2JjIGxlZ2FjeS10cnVuaworMjczMjIgY2IwOGNhNTdlMmE5NjYyODg3MTgwN2RkZWEyNGY0NGJhM2I1MTM5MiBsZWdhY3ktdHJ1bmsKKzI3MzIzIDExYTZkOWI1Zjk5MDY1OTZhMTFhOGUzYTJhZTkyODI4MThlYWVjMTYgbGVnYWN5LXRydW5rCisyNzMyNCBhYTIzODc3MGQ4MDhmNTNlZWU2NjFlZjU4ZmQzMzUzZjlmYTdiNjNiIGxlZ2FjeS10cnVuaworMjczMjUgMWEyYjUzNDRkMWNjZjNlNjE0OGQwNjFlOTk2NGVkMDhiNzM4NzBiYSByZWxlYXNlMjItbWFpbnQKKzI3MzI2IDAzYmJhNzI4Mjg1MmNiZDJhYzRhMWM4ZDg0NjNkYmI0MDczZmJjZmIgbGVnYWN5LXRydW5rCisyNzMyNyAzMTM4MTY3MjAxYWFjZDc4Y2MzZWUyZjU2OTkwNTdkYmI0MTU2MjBlIGxlZ2FjeS10cnVuaworMjczMjggNGVlZDUxYWQ0OTNkNGVmM2E1ZjNjOTFlNDM4ZjBkMjNjMTA5OTI4NCByZWxlYXNlMjItbWFpbnQKKzI3MzI5IDA5NmI0NzVlMWJlZjAyNTgzNzM5MGNjNTlmOGY4ZjQ0YzIyZTg3NTMgbGVnYWN5LXRydW5rCisyNzMzMCA3ZDhjNmI4ODliNTRlMzAxZGRmYThjNjA3NDJmNDQ2MzQ1NDg1ZDI2IGxlZ2FjeS10cnVuaworMjczMzEgMTExYzFlNTlhZDcyZWEwMjY1MTUzYjAyMjQyMWJlYWRjZDI3MjAwYSBsZWdhY3ktdHJ1bmsKKzI3MzMyIGY1NDA1YzZlYzRhY2QzNjlkM2UyOTM2NmZlMWEwOTM1OTg3N2ZlNTQgbGVnYWN5LXRydW5rCisyNzMzMyBmN2UxOTFjOGRiMjNmMzI2NmZhMDU5MWMxMTMwMGVlMzdhMTRjNTg3IGxlZ2FjeS10cnVuaworMjczMzQgMWZlMDA1YzQyODM2ODdiYzVhNWQ2MWUxNjNjMjQ1ODZlYThjOWIyNCByZWxlYXNlMjItbWFpbnQKKzI3MzM1IDI1YjBhZjI3ZGRjODU3MmQxMDAxY2U2ZDAwNTVmYzAyNWMxZWFiZDEgcmVsZWFzZTIxLW1haW50CisyNzMzNiAxYTgwOTZiYjRjNDgyODBjNDhjMjQyZjhhMDM2YmQ5NTU4MTU3MDNkIGxlZ2FjeS10cnVuaworMjczMzcgZTJmYTc0MWM1NDdmNTE1MTBkYWY2ZDU3YWE0ODdkYzA1Y2E5NTJjYyByZWxlYXNlMjItbWFpbnQKKzI3MzM4IGVkZDdjMDE0NmFjODI0ZjViNGU0YzljYzU1ZjJhZGI5M2QzYWZiZTkgbGVnYWN5LXRydW5rCisyNzMzOSBhNzI5OTdmN2RiNGM3MDE4ZjViOTU0NGQ3MDc2MWM1ZjM4OGFhMDg5IGxlZ2FjeS10cnVuaworMjczNDAgN2ViZDJjZDNhZWYwMWI3Mzk2YjgxMzYzOGZmYzkwODk3ZTZmZjA2OSBsZWdhY3ktdHJ1bmsKKzI3MzQxIDgxNDlkOTc4YjAwNmY3NzBhOTFhNzk5ODY5NmI2MDQxZWZmZDI0MmYgbGVnYWN5LXRydW5rCisyNzM0MiBmZTljNzEzMmE4NjdlOGU3YTJhODU0NDYyZGQ4OTliYmUwM2E1ODljIGxlZ2FjeS10cnVuaworMjczNDMgYzY5ZGM0M2I3MDBhOTdmOTVmODVmYzUwNWExMmI0MjZjYmU4Mzk0MyBsZWdhY3ktdHJ1bmsKKzI3MzQ0IDQ4MWU0YTRiOGRlMDY5YzE1N2QwZDczOWNjNmFkZTRjMGFmZmU0YTUgcmVsZWFzZTIyLW1haW50CisyNzM0NSAzNjAwZDhkMDczNTgzMjlkNzdlZTQ2ZTljZmZmMTQyZGZjZDFlY2YyIGxlZ2FjeS10cnVuaworMjczNDYgYTdiMTY5ZWY4M2VhY2MxY2Y4MzIyMmE4MGI5MzBjZDYxOTJlMmZmZiBsZWdhY3ktdHJ1bmsKKzI3MzQ3IDI2YTBkMGRhMTMxMmMzYzBjZmM2NjgwZjIyZGFlZThmYjk0YzFhZjIgcmVsZWFzZTIyLW1haW50CisyNzM0OCAwODI1YmQ3YjViNTU4ZTAxZTlhNDQ0YTBlM2I0OGQ4Y2Q0MDE0ODJiIGxlZ2FjeS10cnVuaworMjczNDkgMzVjOTg5NGYwNmI5NjBjZTEwNWMzNjI5YWM3ZDJlN2Y5NGExYTlhYSBsZWdhY3ktdHJ1bmsKKzI3MzUwIDMyNDYzZThlNWUxYWU2Y2Q5ODM0YzExNjdjNTc3OTM3ZjU3ODVmZTEgcmVsZWFzZTIyLW1haW50CisyNzM1MSBhMTgxY2NjYTEzMTI4MzJkYzJiM2EwMzJlZWNmZjJlYzlhNWIzNDFjIHJlbGVhc2UyMi1tYWludAorMjczNTIgZDdhNjIwNDJlN2VmYTU5NTBkMGY1YjI1NzZlZjkwNGFmYThiZGIwOSBsZWdhY3ktdHJ1bmsKKzI3MzUzIDIxMmVlNjM2NWJmZjk4M2Q5MWQ4NTE5ODQyZTM0Y2M2MjA4NjNkNjYgcmVsZWFzZTIyLW1haW50CisyNzM1NCA3ZDhhMTUwNDk2YThmMDZkMDZhMzcwMjU4OGVkMjk2MmY4ZWMzMjg2IHJlbGVhc2UyMi1tYWludAorMjczNTUgZDdmODUxMmRhNDIzNmM5ZmMxZDU5NzMwZmE2YzkxNzYxMWQ2MGYyNSBsZWdhY3ktdHJ1bmsKKzI3MzU2IGE1NjI5MjczMjU2NmRkNDc4MjRhMGVhMmE3YjJmYmRhOWIxYzVlMDggbGVnYWN5LXRydW5rCisyNzM1NyA4ODYzMDc2ZTJkZjkzMDc3Nzg2MjVjNGQ5OWQ5MjU2ZWMyZWQxNThiIGxlZ2FjeS10cnVuaworMjczNTggMzNlYTUyMmRkM2QyMmVhOTkxM2NlMjdmY2RmZjA0NzA1YjU1NzAxOSBsZWdhY3ktdHJ1bmsKKzI3MzU5IGI3NzE4NTdlZDc4ODhkZTMzYjk2OGFiZWFhMzg3MzhiZDlhZTZlYWQgcmVsZWFzZTIyLW1haW50CisyNzM2MCA0YWI5ZGYyNDE2ZjkzNmRjMmFmMzdmYjA0NzFlMzQzMDEzYzIzOTk4IGxlZ2FjeS10cnVuaworMjczNjEgOTVkYTk5MTg3YzU3NTQyMDkzN2Q3ZTVmMjExNGE1MDY5YWQ0NmQzNCBsZWdhY3ktdHJ1bmsKKzI3MzYyIGFkNmZhMWMwNGU0NzQ3NzA4ZGRhYjIyM2U1ZjJhY2U3ZWJlMDE4NzkgbGVnYWN5LXRydW5rCisyNzM2MyA0OGFkNDcwYzFmOGUxNmE0MmFkMTkzOTVhMjg2YmZkZDFkY2UyZGViIGxlZ2FjeS10cnVuaworMjczNjQgNDE0NjhmOTM1M2NlOWE4OTMzMzNjMTcyMDMyODYxNTVmMDQ2NGI0YiBsZWdhY3ktdHJ1bmsKKzI3MzY1IDcwM2U2M2FlMGYwMWZjNGRmMDBjZWJjMjQ4ZDgyNjQyYmI0MzkzMDEgbGVnYWN5LXRydW5rCisyNzM2NiAxZjY1MTAwNTFjOGFlODYyZDkyYTRlNGEyN2ZlMjgyM2Q3YmQ1MzMxIGxlZ2FjeS10cnVuaworMjczNjcgZGFiODcwMWJkM2ZhMjRiNDE1ZThjM2NmY2YxYTUwM2E4ZWNlY2FmNyBsZWdhY3ktdHJ1bmsKKzI3MzY4IDRlNjNlOTc3MWYzMGM1MDk4NDk2MTZkOGVlNzlkZmIyZjdhNTE2NTYgbGVnYWN5LXRydW5rCisyNzM2OSBiODg3NWYxNmE0YmU1NDVmMmI3OTA0NGZmNDgxNzIwN2I1MGVlMTI5IHJlbGVhc2UyMi1tYWludAorMjczNzAgNDViOWUxMjJjMzNhN2ExZWRmMTgyMmEzN2RiM2VkNmVkZmUyOGY0NyBsZWdhY3ktdHJ1bmsKKzI3MzcxIGI3MWUwZjk2ZGUyMzM1N2FmMzIwODMzZjJhYmFlMDdhMTBmYjgwZTAgbGVnYWN5LXRydW5rCisyNzM3MiBlYTE4Nzc4ZGY2YzM3MDA4YzIxOWFkNjkyYmIzZTUyYzg2YTdjYWNjIGxlZ2FjeS10cnVuaworMjczNzMgMTRlMmViOWU1ZWYyYmVhNjBhYmQ4YjE0OWE1ZmMzMWM5NGQ0YzQ2ZiBsZWdhY3ktdHJ1bmsKKzI3Mzc0IDE5YTYwOTUxN2FiOGE2YmY1MmIzYzllNDNmOTM1OGM4MDc0YjJmYWEgbGVnYWN5LXRydW5rCisyNzM3NSAxNGQ4ZWUxZThkZTVjY2QxNGM1MTA4MDI0NzRmMGZhNjRiYjZjMThhIGxlZ2FjeS10cnVuaworMjczNzYgMDBlNTc4Zjc4Y2FhYTJhODc2M2VkMGM1MjdlNTgzZjMyZGY0ODA4NSBsZWdhY3ktdHJ1bmsKKzI3Mzc3IDQ0ZjdmYzMwNzY3MzY4Mzg0MDQ4ZTIwNzU1OWQ5OGU0ZWM1M2U3ZDAgbGVnYWN5LXRydW5rCisyNzM3OCBjODgyOTA0NjA3OTE5Y2EzMWRhNzRkYWIxYzczOTU5MDlkZTczYTc0IGxlZ2FjeS10cnVuaworMjczNzkgZGM4NzJhMmY1MTNiNDQyMWFjMGU5NGNmMTM5ZGU0OTMxOGNmOTEwMyBsZWdhY3ktdHJ1bmsKKzI3MzgwIDlkODlhOWEwNTRlMDQwOWVmMTM3ZTVlZjI1ODZhNTZiNDdlNjk1YmIgbGVnYWN5LXRydW5rCisyNzM4MSBlOGEyNjNkYjFiZTAzM2FiNTljYmY0ZmYzMzg5OTFjMTY5OGQzYjc2IGxlZ2FjeS10cnVuaworMjczODIgNzFmMTNjZjRmOWUyZDkzMmI1ZDk4OTA0ZjQ2N2I2YjgxNDA2NTNmNCBsZWdhY3ktdHJ1bmsKKzI3MzgzIDJlNWExZThjMGI0ODFkNjRhMzhmZmRlNWRlZjViN2MwNTkwZWM0YTkgbGVnYWN5LXRydW5rCisyNzM4NCBlZGY5NTBiZjQyMzI1OGM2ZmE2MjY0MzljZTRmNDg3MTM0ZjRkYjNjIGxlZ2FjeS10cnVuaworMjczODUgNTg0MzNiNjZmNTgzODk4MDZkNzE3Nzg1OWY5MGI1ZWE5ODNkYjU0NiBsZWdhY3ktdHJ1bmsKKzI3Mzg2IDdmODNiMjEyNGI0ZWQzOTM2ZWNlOTk1YjNiODZmN2Y3NmVkZWE1MWUgbGVnYWN5LXRydW5rCisyNzM4NyBkOGRlOWI1ZjU2MWVlZThlZjI0NDY1NjE0NjVhNGE0NzIzZGE0YTJlIHJlbGVhc2UyMi1tYWludAorMjczODggMzg0OGFhM2VkYWZjNmM3NzM0Nzk5Yjc3MDg2OGI1YmMyYzcwYzIwMiBsZWdhY3ktdHJ1bmsKKzI3Mzg4IDc0ZDVjZDY5OGJiZjcxY2Q5YjRiOTY0MTlkOTBjMDkwODgzNWM0YWQgcmVsZWFzZTIyLW1haW50CisyNzM4OSBmY2YyZTAxYzYxNmE2MDRlYWYwZjUzNWE1ZTg4ZmUyNzQzMGI4Y2ZkIGxlZ2FjeS10cnVuaworMjczOTAgOTEzNTcwYWIwNzM3NDMzNzc5MzYyZTgxNjIzOGQzYTc0YmE3NGU1MyBsZWdhY3ktdHJ1bmsKKzI3MzkxIDlhOWQ2Y2U1ZWQ0ZTIyNWZjNWNmM2Y3NmZhMGYzOTcxZDNiNWVhNmMgbGVnYWN5LXRydW5rCisyNzM5MiBiYmZlZjk0OGM0M2U4MDA0MWM1MWZmZjg4YzNhYjcyZGRjMThlMmI1IHJlbGVhc2UyMi1tYWludAorMjczOTMgNzQzNjg5ODdmN2YwYTAzZGUxOTQ1ZThmN2NkYmZiMWIwNWJjN2U0NiBsZWdhY3ktdHJ1bmsKKzI3Mzk0IGJiY2VlNzQ3OGZjYjg0MDQ4OTc1ZGQ0NGExYTc5OGYxYTc0NGUzYjIgbGVnYWN5LXRydW5rCisyNzM5NSAzNGI4Y2RiYmQ4ZmUzMzk0ZTU0ZWI1ODdjOGZhYWViY2I4ZWU2NGMwIGxlZ2FjeS10cnVuaworMjczOTYgOWI2ZDI1OWMyNWViN2VhNjAxZWU0ZmNiOTFhNmRkNWNjYjFkMGI1MiBsZWdhY3ktdHJ1bmsKKzI3Mzk3IDViNTA4Y2UwNDlmNWQwODViMzYxOWRlNjVjYmE3ODNhMWJkMDE1ZTIgbGVnYWN5LXRydW5rCisyNzM5OCBjNGQ2OGY4MmE2ZGRiODE2OGI4OTBlMzNjNzMwYjgwNWQ1MDdjNmViIGxlZ2FjeS10cnVuaworMjczOTkgZDEwZjFjNmQ5ZWU5NDMwNjgyOTVlMDFhNWY1MDBhMjA1OTFhMTg2NSBsZWdhY3ktdHJ1bmsKKzI3NDAwIGMxMGMwOTE5MmMxMmJjYTFlMWM5MDg1MzFlYmY2NDg5NDQ0YTY5NGUgbGVnYWN5LXRydW5rCisyNzQwMSAwN2U3NDk5MzU3M2M1YjVlZDVjYTY1Y2FlMmFkY2QxNmU5M2VkZmY2IGxlZ2FjeS10cnVuaworMjc0MDIgMjc1ZDA0YTM1NTQyMjY0YmQyMmIzY2Q4NWFjZDY4ZDIwY2ZiMDA4OCBsZWdhY3ktdHJ1bmsKKzI3NDAzIDc3YTk2YWM0ZGRlNGMwODA1YWE2MTZmYTliZDcxMzMxMDI3Njg3MGUgbGVnYWN5LXRydW5rCisyNzQwNCBlYWU0OTZlZmE0NjAxMzI3NDZjNTEzZTFkOGFjMjY1MTk2ZjFiZGJiIGxlZ2FjeS10cnVuaworMjc0MDUgMmMyMjQ1YWFjZWY4OGZjODVlOTVkMGE0OThlMTkxODI2ZjY0MTA2YyBsZWdhY3ktdHJ1bmsKKzI3NDA2IDkzNzcxNTg2NTJkZDBkNGI4NmExZWMyYjJmYzBiNTFhZDUwZjhmNGYgbGVnYWN5LXRydW5rCisyNzQwNyBhM2Q2MTI4YWZiMmU1NTMxYzkyZDAxNTA3NjNmNmRkN2MzMjk4NzU5IGxlZ2FjeS10cnVuaworMjc0MDggYTc4ZDQxZWU5NDc0Zjc2MTc0YTFjYzJjMTQ1ZTI1MDI5NmRiMzMyZSBsZWdhY3ktdHJ1bmsKKzI3NDA5IGFmMDUzMmYyM2FiM2ZmZmY5ZTcwMDQxNzZhZDUzOWViMGI3YWU0NWMgbGVnYWN5LXRydW5rCisyNzQxMCA2M2ZiYmVkMTA3MTRhYTU0NjgwZGI4ZjY1NjViZjA1ZDQzNGY3ZTM2IGxlZ2FjeS10cnVuaworMjc0MTEgZmVmMzk3YjFiODVjM2Q4OWY3YWQ0Y2NlMmQ2MTYwYjVhY2U5YWU5YiBsZWdhY3ktdHJ1bmsKKzI3NDEyIDkwY2NhODU3ZDIwMzIyYTFiMjdlN2ZhOWU2OGEyYjRkNjEyYjkxNjcgbGVnYWN5LXRydW5rCisyNzQxMyA0MDQ2MjgyY2IzMzhjZjdlNTM2YWExMjQ2YmZjZjI1MzY4ZjBkOTM5IGxlZ2FjeS10cnVuaworMjc0MTQgOGVhODY1NjRmYjMyNjQzOWZlZWY2YzBhNzliYTkzZWY2ZDQ0NTc0NyBsZWdhY3ktdHJ1bmsKKzI3NDE1IGJjNmFhZTc0ZGRmZTVjNDBiM2U3NTM2NjFlOTM0ZjE0ZTY3ZWJkYTggbGVnYWN5LXRydW5rCisyNzQxNiAyYzc5YjFhOGQ2MTY1MzkxNTFmNmZmOWVhODIzMmY5NWJiYzk3MDBjIGxlZ2FjeS10cnVuaworMjc0MTcgZDkzZjM0MjAxNTAzOGE3OThmNjc5NThkM2RhYjA3NzVlMmVhOGM5MiBsZWdhY3ktdHJ1bmsKKzI3NDE4IDcxODQwYTFiZDgyZmM3YzQ2NDdiNDNiMTFiNDI2ODE5YTNlMmRjM2UgbGVnYWN5LXRydW5rCisyNzQxOSBhOTIyMTEyZDc4MGM1ODk3ZmY0NDU3MGM4MzRhMDRmOThjODc2MmE3IGxlZ2FjeS10cnVuaworMjc0MjAgY2IxNjk5NWFhN2U4MDllZTI0ZTczZmFkZjZkZGU0NDczM2NiZDI2MSBsZWdhY3ktdHJ1bmsKKzI3NDIxIDk5MTNjZjdjNDA4NjFmZjQ5NDRjOThjZmVmY2EyYzI0OGM4ZDhmOGYgbGVnYWN5LXRydW5rCisyNzQyMiA2N2YyYjQwYmFiNzA3MGEyZGEwNTVjMDFlYjNjZmU1ZTZlYmFjZWNjIGxlZ2FjeS10cnVuaworMjc0MjMgZTlhNmEwYzRiMzNmM2M4ZGZkZGUxN2ZmMTRlOWEyYTBkZjA4MGE2ZiBsZWdhY3ktdHJ1bmsKKzI3NDI0IGRjYzJiNzVkN2E3OGMwZjRkMDQxYjlkMzIzNmQ2MGJjZWFhNjgzNTEgbGVnYWN5LXRydW5rCisyNzQyNSAxODcxNzMzNTI0MzU0OTY1Y2ZlOWIyZGU3Y2Q2OWYzNjFkNTA1OGI2IHJlbGVhc2UyMi1tYWludAorMjc0MjYgMzdmZmNlMmQ5YzNjZTA1MzZmMGY1OWI5NGJhNjkxMmJmYTZmM2FmYiBsZWdhY3ktdHJ1bmsKKzI3NDI3IGQyNGM4Yzk0Njc0MWJmYjc5NzMzMWM5MTY3N2FhMGZlMTIxYTM5MzcgbGVnYWN5LXRydW5rCisyNzQyOCBkZDlkMmVjOTZlYWQwY2U3MjRhMzU4ZmY2NjZiZTg4NjFmZTA3NTEzIHJlbGVhc2UyMi1tYWludAorMjc0MjkgYjllMGM1NzUzMjM4MDg0YjY1Y2I4MWVlYzI2MTM1Y2VmYWQ4ZWUwMCBsZWdhY3ktdHJ1bmsKKzI3NDMwIDNlODYzYTY1YjFhNDQyY2RjNDZiMzYxNDZiMDE0ZTk5YjMzYjg2ZTQgcmVsZWFzZTIyLW1haW50CisyNzQzMSBlODc4OTc1MWE1Y2NjMzY2NTE0OGJmMWI5OTNlMDcyOTExNzEzM2ZjIGxlZ2FjeS10cnVuaworMjc0MzIgOTI4MzRhMjQ4YzE1Y2JmN2VmM2ZjMTRkODQxOGI4YTgwMzJhZTQ4ZSBsZWdhY3ktdHJ1bmsKKzI3NDMzIDYwZTQxYTU0ZTdiMTA5YjIwYmYwMTMwMzk1ZTA5YWE5MzEzMjcyN2MgbGVnYWN5LXRydW5rCisyNzQzNCAyYzZmOTMxZDhkZDI1MTQxYmJhNjBlN2I0MzY3OWZjYzM4YjdjOWZhIGxlZ2FjeS10cnVuaworMjc0MzUgYzc5NDMyZmViODYyMTU0YWE4NmZmNzgyODBmNDc0YmVkNjFmMTljYyBsZWdhY3ktdHJ1bmsKKzI3NDM2IDVhZjkwODFhNmNkNDA5ZTRhZWIxMDhhMzExZjJiYWJjNmQzMDAzODUgbGVnYWN5LXRydW5rCisyNzQzNyAwZDk3MTZjM2I4ZWNmMzVjOTkyNGZmZTMwNDg0YTM2NmYyYzZlMGFmIGxlZ2FjeS10cnVuaworMjc0MzggYjEyODI1NWMyYmVhNzA3N2RiMzI4OWVkYTI4ZTQ0NDkzYTg0NTA2OCBsZWdhY3ktdHJ1bmsKKzI3NDM5IDgxNDJmOGQ2NjhhMGY0YWI3YWFmZWU5MGJlYzliYmIzMTcyN2NlMDcgbGVnYWN5LXRydW5rCisyNzQ0MCA4NmIzNzYwZDI4NWQ2MGY2ZGM5MjI2ZGE3YzhkYmUyN2Y1ZWYwM2M2IGxlZ2FjeS10cnVuaworMjc0NDEgMTMxNDY0MmNhMDk3NmJiZjBlYmM1NjNiYmNhODQ2Y2Y1MmE4OWE4NSByZWxlYXNlMjItbWFpbnQKKzI3NDQyIGExODA1YTU0NjY2ZmJiZmQ5MWEwYzZmMzI4YjU4ZTIxMzJkZjA3NzIgbGVnYWN5LXRydW5rCisyNzQ0MyAzMmRiMDc1ZGVmM2Y1NjRiNWI2YjFkMDEyN2FkNGM1ZDUwMjFmODNhIGxlZ2FjeS10cnVuaworMjc0NDQgOTVjY2Q1YmJkYzg2ZDRmMjVjZDhmOWU5ZDQ5NmIzODc0ZjA1NDk2NyBsZWdhY3ktdHJ1bmsKKzI3NDQ1IGE1MTYyZmQ2NWMzZDViYjBkOTg2MmI4MzM5NTlmNGFhOWI2NjI0MTMgbGVnYWN5LXRydW5rCisyNzQ0NiA3MDJhNTkwMGRmN2Q2NWY5ZDQwNjhiMjUxMDA4OTg3NWM2OGM2OTYzIGxlZ2FjeS10cnVuaworMjc0NDcgMTgzZWJhMmQyMjE0MGMxZTFlYmE1YzYzYzFlMmRmZGI2ZTU5N2E0NCBsZWdhY3ktdHJ1bmsKKzI3NDQ4IDE1NDQ3YTU1NzNiZDExNDg5MjczZTUxNDFlMzAwZGUyMzAwMjE0MWMgbGVnYWN5LXRydW5rCisyNzQ0OSA4MDA5MTJmN2RmMmUzOTJhMDQ4ZDE2ZmJiZDlkY2EzMjI1NGM4N2JmIGxlZ2FjeS10cnVuaworMjc0NTAgZTY2Y2VkNDgxYzc3YTRiY2IyNTU0OWQ5ZTMwOWFhZTg1ZWMyYjAwYiBsZWdhY3ktdHJ1bmsKKzI3NDUxIGQ3MTI2YzM0MTI4YTlkOWJkMTMzNjZmMDkxNjBmYjg0ZjE5ZWY1N2UgcmVsZWFzZTIyLW1haW50CisyNzQ1MiA2ZmVkMTM0MjJiYjFhYWZkMTIzOTYxOWNmYzM1ZTFmNzNiMWVmMWI1IGxlZ2FjeS10cnVuaworMjc0NTMgMjJkMmYwMzdhZjlkM2M0Y2ViNDNjNmVjNTM0ZmQ1MGJiMmZjNTJmZCBsZWdhY3ktdHJ1bmsKKzI3NDU0IDg2ZGZiOTZhMTgzMWZkMjdlYWEzYTBjMzM0NWQyZjBjZjE1MjljYzAgbGVnYWN5LXRydW5rCisyNzQ1NSAzNTVlNDZjYzEyNGZmMTExNmU0NWNmMDMzZTJmMTRiY2VhODA5NDkzIHJlbGVhc2UyMS1tYWludAorMjc0NTYgYjc0ZDRhNTk3OTNhYWQ0NDdiNTE1YzIxYzlkNzA5NmViNzBkYjI1MyBsZWdhY3ktdHJ1bmsKKzI3NDU3IGIxODVjODU5NTJmZTgzOGQ3MDlhMzYwNWNiN2Q2YmYyYWYzYjhjMGIgbGVnYWN5LXRydW5rCisyNzQ1OCBiYzAwZWVlZjBhYzdiYWNjMDQzMDE1MzZhMDJlY2JjNzY3MTg2MGVlIGxlZ2FjeS10cnVuaworMjc0NTkgNDI5OGUyNjliZDY3MjAxMDQzOGNhM2NmODk1NWMyMjdhOWQ2ODFiYSBsZWdhY3ktdHJ1bmsKKzI3NDYwIDQwMjY1NjVmYTdlYmRmZjE5MGIyYzUyOTE4MWU1NWU4ODk4MDNmMDQgcmVsZWFzZTIyLW1haW50CisyNzQ2MSBhMmI2NzdhZjdiMjg5ZDY1YTBjMTE1MDkxMjg4NGI3NjQ3MzZkY2VmIHJlbGVhc2UyMS1tYWludAorMjc0NjIgNjg5OTVlODU0YTg4ZTNkNWQ3ZjdiZGE3Nzc2NDNlMTcwNjBkZjhiMyBsZWdhY3ktdHJ1bmsKKzI3NDYzIGRiYjE0Zjg1YWU3YjYwZGQzMjhmZjFhNmUzYTRkYTg5YjM3NzdjOTIgbGVnYWN5LXRydW5rCisyNzQ2NCAyYTIwNTc0NDAwYWZiNjA4ODBhNDVhOThjODYyYThjNDZhM2Y1MDdjIGxlZ2FjeS10cnVuaworMjc0NjUgZjdhYmJkMTViNGY0ODE5YjE3ZDBjODRiMjIwMDc3OWFjOTA1N2IwMCBsZWdhY3ktdHJ1bmsKKzI3NDY2IGNmY2ZiNWRmNmU2MWNjNGI1MGZlM2M1MmIwNzU4NDlkODY2NGJiOGUgbGVnYWN5LXRydW5rCisyNzQ2NyA1MTQ4MWIzOWNkODY1YzFlN2VlNGIzMjFlYTgwMjhmYjY5NTQzYWVhIGxlZ2FjeS10cnVuaworMjc0NjggMGExOGVmNWNiM2U3ZWQ3NzE5OGM3MzBmMmU5ZjQwYzI2MzYyY2YwOCByZWxlYXNlMjItbWFpbnQKKzI3NDY5IGY4ZDQxZTI2NDliN2U1ZGU3N2I2NjkxMjcxN2ViNjg4ODJkZWRkNzUgbGVnYWN5LXRydW5rCisyNzQ3MCAyOGYyYmFlMTAzMWJmM2YwODU1NmEzOWUyOGY3MTA5MjFlOWY4ZmJjIHJlbGVhc2UyMi1tYWludAorMjc0NzEgNDZhODRkMmZmNGUyYWM3YTAyOGRjNGMzMWRmMWE0MzgyMmFmZmMxMCBsZWdhY3ktdHJ1bmsKKzI3NDcyIDY2NzY2MjNiM2I3NDIxOTE2ZTc5NTQ5ZmU3NGJkNDMzYTBhODcwYzEgbGVnYWN5LXRydW5rCisyNzQ3MyA4Y2VlZTY2MzAzMjJjNTc1NDU0MzZjMzc2YjA2MTBmNGE4NWZjMzZlIGxlZ2FjeS10cnVuaworMjc0NzQgZjdjMGQ2ODcxYjA3ZjAzMTFmZDY5Njk2NDBhOTMyMDBhODE1ZGUxNyBsZWdhY3ktdHJ1bmsKKzI3NDc1IDczMzZmNTFmYWE0NmNiN2UxYjUyMjAzNDNhOTU1ZTQyODA5N2RmNTIgbGVnYWN5LXRydW5rCisyNzQ3NiA2Y2Q5MzJmZjBmMDlkOGNmZTczZDZkZDBmMTViNzM4Zjk5ODEyODg0IGxlZ2FjeS10cnVuaworMjc0NzcgODAxNjJkYmQ0N2YwMTMyZmE1OWM4ZmRmMjBjNmNhYjNkZWI2ZTg0OSBsZWdhY3ktdHJ1bmsKKzI3NDc4IDgwNWMyMjhjZjc3YjZmZmY5MjBiOTg3YTRlNjQ1MzIyODc2YjQ3YzQgbGVnYWN5LXRydW5rCisyNzQ3OSAzNGQ3MTM3MDk4YTc1MTk0Nzg1ODFlNGMxYjA1OGQyY2UxMjk2MWYzIGxlZ2FjeS10cnVuaworMjc0ODAgY2JkYmI5MmVmZDM2OWY4NDk3ZWE4YTgyMzQxMmZkOWI2MTVlODdiMCBsZWdhY3ktdHJ1bmsKKzI3NDgxIGYzNWUyOWFhMGQ5MjRjNDI0NWJlNDFiMTVjYWQyMjM5ZDMyODc2N2YgbGVnYWN5LXRydW5rCisyNzQ4MiBmZjY4NzNkMjhhMTQ2ODNlNWMwZmI4NDY3Yzk2NjkwY2Y4N2IxODFlIGxlZ2FjeS10cnVuaworMjc0ODMgZmE2YmU5ZWU2YzljNGViN2ZkYjM5NWVjNDIyMWMyMmQ2OGQ2ZmZhMSBsZWdhY3ktdHJ1bmsKKzI3NDg0IDEzMjQwYjhmOGNhMDE0MWEyZWFmZDg5MDI2MmY3NzU3N2I4ZWJmOTcgbGVnYWN5LXRydW5rCisyNzQ4NSAxZTBhY2I0NWNhOGYwZmNlMWM1ZjY1YWQyMWVhNWJkMjBmZDBjM2VmIGxlZ2FjeS10cnVuaworMjc0ODYgZjM2ZmExMGViZmEwYzI2MDU3ZWNlM2Y3ZTcxMjk4YWNlMDJmYjUzNiBsZWdhY3ktdHJ1bmsKKzI3NDg3IGYzM2JiOWMxMzFmOGNjZTU2NDQ4NDlkZTE1ZDBkMDE2YmI3YWNlMGYgbGVnYWN5LXRydW5rCisyNzQ4OCBiNTFhNTc4ZjU3NjliNWYxOTk5OTk4YWNmNTAxYjYxZDJjOTc1ZjIxIGxlZ2FjeS10cnVuaworMjc0ODkgYmYzNDIxYTI4NzQ0NmNkMjE2ODI5ODJmM2JmMjdiMGM2MDY1ZWU2NSBsZWdhY3ktdHJ1bmsKKzI3NDkwIGQzMzI0ODRlMzk0YTgwYjQ2ZjBmZjBmNjRiNTBiN2M2NGEwNjExNTEgbGVnYWN5LXRydW5rCisyNzQ5MSBhYTYyMTdiZjk3NzY0M2FjNDc4ZGQxMDhjZTFhODMwZTQ0MzE1MmY2IGxlZ2FjeS10cnVuaworMjc0OTIgNWRhNjA1ZDJiNTQ3N2E0MTE5NzRmZWUyNmQ4NDBkZGJkYWFhYmZhYyBsZWdhY3ktdHJ1bmsKKzI3NDkzIGYzODExMmI4ODM4OGU3OGZiMzhiNjhkOTRkYmQ5NGVkOWQ4ZjNhYmYgbGVnYWN5LXRydW5rCisyNzQ5NCA3ZGNlZjJmODcwNjgyMjZkYzdkYmE5YjJjYmRhYTBjMjg5NDE5MWE2IGFzdC1icmFuY2gKKzI3NDk1IGUzMzM5M2NlNGM1MTNhZDdjMmVjMDc0NWFmYmExNDI4ZmFlNGMxOTEgYXN0LWJyYW5jaAorMjc0OTYgMzBjN2NjNWYyNTg3M2VmODczYmFmZjBhMDljNTYyNzk0YWE1MTFhMiBhc3QtYnJhbmNoCisyNzQ5NyAzM2YyMWVhYmMxNTUwNmRkNWJkOTFiNjAxNTdhYjc2NTA1ZjQ2NzA3IGFzdC1icmFuY2gKKzI3NDk4IGM5NmU1ODQzOGE5ZjE2NTMzOGY3MmQ0ZjJkZDZkZWI2NjAwYWYwZDcgYXN0LWJyYW5jaAorMjc0OTkgZjc0ZjNjMzE5MDk5M2RhMjQ5NmY2NGNhMjE0Y2Q4OWEzYzBlYzRiMCBhc3QtYnJhbmNoCisyNzUwMCBjNDI2MzYzMDZlOTZiNmQwODdkMDY5OGNmNWU5MjM5YjkyZDkzZDdjIGFzdC1icmFuY2gKKzI3NTAxIDJhNmVjOTkyMjI4YmE3YTM1ZjA0ZjIxNGZkZjI1ZmUwZWZkMzYyOGUgYXN0LWJyYW5jaAorMjc1MDIgODQ0ZjEyOWZhMTI4NTI4NTU3N2NlNDU1OTAzOTExZDhkMDQ2YjVjMCBhc3QtYnJhbmNoCisyNzUwMyBmZGY4MGUwNGU0YmJkMTJhMWMxNmIzM2RiMDc3MzkzMjUxYWY5ODllIGxlZ2FjeS10cnVuaworMjc1MDQgMzExMzc1NDY0ZmFjMzMyYWNjMzIyNDdjOGYwMTg0NzQ0Njg2YjAyMSBhc3QtYnJhbmNoCisyNzUwNSA5ZTYzYjBmNDA5ZDRiMzYwNjdiN2MzNjE3NTZlMzFmZDZmYTQxMmVmIGxlZ2FjeS10cnVuaworMjc1MDYgNzZlOWExNGZiN2M1YTBhZjNiOTY3OWZlODhmNGViMjM3NzBkZGNkNSBsZWdhY3ktdHJ1bmsKKzI3NTA3IDM5OWIwOWEyN2FmMzE0YjQ3MGIzMTYzNzk1ZjI5YmIzZTlmZTY3M2IgbGVnYWN5LXRydW5rCisyNzUwOCA3MDdjNmYwMjYxNDJhNDBkNmI1ZDg2ZDE2ZDJmZDk0YTA5OWU5YWM3IGxlZ2FjeS10cnVuaworMjc1MDkgZTVlY2VmNWExMjNhZDg5MGYzNTEyMTZhYzcyZmFjN2Y1NDI4MTFhMyBsZWdhY3ktdHJ1bmsKKzI3NTEwIDEyZjJiZTg1ZGEyNTlhNTI2MzAxOWI5NGYzZWE0ZjE3ZjVjYzQyZWQgbGVnYWN5LXRydW5rCisyNzUxMSA4ZGZhY2IwNmMzZDFhNGYxMDJhYjFjNjgyMjBiZjVmMTA2OWU5OWZiIGxlZ2FjeS10cnVuaworMjc1MTIgODY1YTc3Y2U0MGE5Zjg2M2Q3NDQzMmI2YTAxOTkxM2QzZWM1ZjEzZSBsZWdhY3ktdHJ1bmsKKzI3NTEzIDdjMWE3NmI3ODcxMjIyYzJhMTliZDJhZTg4NDFiMDhmZjQyZWVkN2EgbGVnYWN5LXRydW5rCisyNzUxNCBhNDgzYzVkZGI3ZjFiNWU3MTEwZmJkOWIwZWYxOTQ3NjI0MWUzZjVjIHJlbGVhc2UyMi1tYWludAorMjc1MTUgMTc2YWQ3MDZhZmJjNTZiYjczN2QzNzMyZTFlZjI0YWFhYTQyNjZkNSBsZWdhY3ktdHJ1bmsKKzI3NTE2IGMzNmJlNzlmZGJlYTE3MTYwM2M0NTE5YTc5MWY5NmE2MGNkZWUwZjMgcmVsZWFzZTIyLW1haW50CisyNzUxNyBhYmVkYzVjZWNjNjQ5ZDczYzk0ZmQxMDE4YjA5MDM0Njg2YzBlYzQ1IHJlbGVhc2UyMi1tYWludAorMjc1MTggMzljMGJmMjAxZGI5YzQzMWVhOWQ4NDIzYmE3NzY2ODA5ZWExOGIyNCBsZWdhY3ktdHJ1bmsKKzI3NTE5IDQwYmRhM2UwOTBmNjdiYTY4NGIzZjZmNzZkNDM2NTBhMjMyYzEwNzcgbGVnYWN5LXRydW5rCisyNzUyMCAyMWJkODZlMDBiY2VjMWIzMzQ2MzU4MDUzYjE0OTJhYjFiOTBkZTUwIHJlbGVhc2UyMi1tYWludAorMjc1MjEgZTllNjExMWJlZWMxNzE5ZThmZGQ1OTRkNGUxMjMxMzE4NDk5YjRhYyBsZWdhY3ktdHJ1bmsKKzI3NTIyIGQ3ZDgxNmUxZjUyMjY0YWE4NDk4MmIxMWYzYTE4MzA0MGU1MDkxOWEgbGVnYWN5LXRydW5rCisyNzUyMyA3MTg5MDkxMjE3MzcxYmY0YmQ3ODgyMjJjOWVkYmEzNDU2ZTc4NmIzIHJlbGVhc2UyMi1tYWludAorMjc1MjQgNjlmZDgyNjU4YmZiMzI3NDgxOTU2NzM2NGFlNmMwMWVmYzExNDhiZiBsZWdhY3ktdHJ1bmsKKzI3NTI1IGJlMDJkNTE0YjlhNjY5NmMyMGM3YmZiM2UxN2M5ZTE1YTg2NDkxZDIgbGVnYWN5LXRydW5rCisyNzUyNiA0ODEwODBmNzE0MzlhYjMyYmVjYjkwNmJhMGI4Y2YwZDBlOWVmZDEyIGxlZ2FjeS10cnVuaworMjc1MjcgN2JjZDgxNzc2MjhmMzVhYTZhMzk2OGE4M2QwMTg2YzY5OTIzMTkxYiBsZWdhY3ktdHJ1bmsKKzI3NTI4IGVhMDM4NDM3NTRjMDAyNGU3NDNlZDkyNTI4NDA2Njc3ZTI3M2JmODcgbGVnYWN5LXRydW5rCisyNzUyOSA1NjJkN2Y4YTgyYTE5YmIzMmUxZGE4M2YxNDQzMjU1MGM0Y2JhMmQwIGxlZ2FjeS10cnVuaworMjc1MzAgYmI3YzM5NmRlM2FiYTc4MGExMGEyMzk2OGRiNTc2MzZkMzRhYjA4NSBsZWdhY3ktdHJ1bmsKKzI3NTMxIGE1OWRmMmZhNGVjOGFmZjQ2NjgzOTAzOGE2NTcyOThlN2QzMjBjNWMgbGVnYWN5LXRydW5rCisyNzUzMiAyMDhmYjFkNjExNDg0ZTcxMWMwNGZmMjVjN2RmYTAwMGFmNDEwOTg3IGxlZ2FjeS10cnVuaworMjc1MzMgOTQ1NmEyY2NkYTYxMGExZGE0ZGNlZmRhNDcyOTc2MmY3YWY1ZmRhZCBsZWdhY3ktdHJ1bmsKKzI3NTM0IDQ0YzE5Njk5ZmE3ZWY5ZGQzZjMyOTJjOWQ2OGQwOTI0MDcyNDU5OTIgbGVnYWN5LXRydW5rCisyNzUzNSA5ZGRlZDZmMTg4MTkxZDA4NzQ0NDMyZDRkODQzNDhiMmM3YjRjZmRiIGxlZ2FjeS10cnVuaworMjc1MzYgMjMzYTUwZTEwZTY2YmE0Y2YwMzVkZmRmNzk2MmU4MzIwYmExY2I0NSByZWxlYXNlMjItbWFpbnQKKzI3NTM3IGNiNzI4MTQxYWUxMmEyNTNjZDZlNWI0MTNjNTEwZjFkYzUwYzRkYWIgbGVnYWN5LXRydW5rCisyNzUzOCA2MzdkZmNkOTYzYjk4MzJhNGI4NTFkZDc4MDUwZDY2MjM1NDc3YTExIGFzdC1icmFuY2gKKzI3NTM5IGQ0ZDVjMzQwZTA1NDM4MmIwNzhlZDI4YmU3MDAzZjM3MmJiODQzNzIgYXN0LWJyYW5jaAorMjc1NDAgMjJiMjEyZGQ4NmMxZGEzYzVkYmQ2NjhmZGJhZjE1OTBhYTExOTI1YyBhc3QtYnJhbmNoCisyNzU0MSBmZDE3Mzk0ZjZkY2VlMWI4ZjI3ODBlMDQ0MGE1NjQ1YzYwYTA2OGY0IGxlZ2FjeS10cnVuaworMjc1NDIgZTY4NWYzMmQ4MDY4OGQxOGE5YWQzYzMwZWE5MzY4YmE0MDI1ODU0MyBsZWdhY3ktdHJ1bmsKKzI3NTQ0IDhlZTJhYjRmMmEyZDQ5OGUyYTIwN2JlNDg2MjE5MzVkYWQ0NWVlYTAgbGVnYWN5LXRydW5rCisyNzU0NSBhMzg3ZDRlNTM5YzJkODJlN2RiYWUzYmE3OTViZDQwMmRkYjlmZTc0IGxlZ2FjeS10cnVuaworMjc1NDYgNzhhYjA4NmEzNTQ4NDZmY2E4ODU0N2Q4NmJlOWQ2NTc2NjRhNzI4OSBsZWdhY3ktdHJ1bmsKKzI3NTQ3IDA5NTQyNmFmNGE0MjQwNjY0NjkyMjM1MjcyZjNmYTBkODBhOWE4MjYgbGVnYWN5LXRydW5rCisyNzU0OCA4MGRhOTUxYzg5ZmJlMTQxZTE3NDIwMTkzNTIxMDI3OWNhZGEzNmI2IGxlZ2FjeS10cnVuaworMjc1NDkgZDNlNDkwYTUxNDA4Yjg4ZmI4ODlhNDVmM2RhM2NhNDA4OTdmYjdkNiBsZWdhY3ktdHJ1bmsKKzI3NTUwIGZkZDgzNjU3NTI0OGY4NjlkZjgzYzM4YmNkY2FiMzVjMjBkMWUzY2QgbGVnYWN5LXRydW5rCisyNzU1MSBjMzFhZmVhODg5MzRlMDY0NjgyMTM5MmJkMjY3YjJkNTE1Y2RlMjgzIGxlZ2FjeS10cnVuaworMjc1NTIgMGNhYjRlNGZkY2YzODBjNjFhMWQ5OTJkNGQwN2JhNGY3MGUxMmIzNSBsZWdhY3ktdHJ1bmsKKzI3NTUzIDVlNGI4ZDFlOWZkNmIyYjk3ZDBiZTQwZjU3MzQzM2EzYWY2YjZmMzYgbGVnYWN5LXRydW5rCisyNzU1NCAzNzE5NTQ3ODU3MzlmNTc0NjNkODYzYzdmOTk4Yjg1NDljMGZkMGIyIGxlZ2FjeS10cnVuaworMjc1NTUgMmFiZjllOTQwMjc0ZjA4ZmM0NWVhOGUxMWFlNmQxZjMyOWMyZmRkZiBsZWdhY3ktdHJ1bmsKKzI3NTU2IDQzZmJjNjczNzRhNTdiNmVmNjYwMzc0N2U1YmE3YTRkZGYyZjAzYjIgcmVsZWFzZTIyLW1haW50CisyNzU1NyAyNWZlM2EwYTgwZmI4NjIzOGNhZGFjNzAyOTg1ZTIyN2VjZThhODFmIGxlZ2FjeS10cnVuaworMjc1NTggOThhZDc3MmRlZmFhYmJjMjA2YzM4ZWI5ZDZiOGFmZjA2ZjNiNGI0ZSByZWxlYXNlMjItbWFpbnQKKzI3NTU5IGEwMzhhYmQwOGU0YWI1MmIwYmI0YjJhYjBjODY0ZjVhNDhiNWFiNTQgbGVnYWN5LXRydW5rCisyNzU2MCBjODlkMzMzZmUwZmUzNDY3MTY1NzVkODBhNDcyMjkyYzNiNjVkZjZhIGxlZ2FjeS10cnVuaworMjc1NjEgYjk5M2U2NTFlYjc0NWY3ODQ2YTAyYmMyNzgwNTRmMDc1ZTljNTJlMCBsZWdhY3ktdHJ1bmsKKzI3NTYyIGNiNzNlODkxZDNlZTNmNjBiMjk1NmE5MGJiOWUxMGQwOGQzZjAwNDYgbGVnYWN5LXRydW5rCisyNzU2MyA2M2E4ODdkOGExZTNhNTE5M2EyN2Y5NzMyMTAyNzY1ODRjZTRkNWI5IGxlZ2FjeS10cnVuaworMjc1NjQgNWMxNTFkOTU4ZmMxNDQyMTEzYzUyMWQyMjRkNmE2ZDNhYjMwNjBjYSBsZWdhY3ktdHJ1bmsKKzI3NTY1IDE3MjNiY2RjMWU4NTRlODkxYjc5ZDU3MTUxNTc1N2RkNTEwYTRiZjAgbGVnYWN5LXRydW5rCisyNzU2NiBjNGRjYjgwZjQ4ZWExNThlZTA1NTQ0YTQ5MTc0NTc2ZjlmNjc5MTNmIGxlZ2FjeS10cnVuaworMjc1NjcgYTMzZjJkZDQ2NDQ0YjY3ZDA5Y2FkNTIxNmExYmI4YTQ4YjZiN2U2NiBsZWdhY3ktdHJ1bmsKKzI3NTY4IGJlYzViNjYxMDYyMjljNzBhODk1MDY5ZmEzNGQ4MTY2NzAyMjZjZjcgcmVsZWFzZTIyLW1haW50CisyNzU2OSA5ODJhOTBhNGQ2N2I4M2UzOGJhMmJjZTM3NzM0ODI3NWRjYWZmNmFiIGxlZ2FjeS10cnVuaworMjc1NzAgZGMyMGM3ZWI0MzRmNTIxYWU2N2FjOWZkOGJiYjlmNzcyNzcyNGM1ZSByZWxlYXNlMjItbWFpbnQKKzI3NTcxIGNjZTkzMTZhNjJmODg2NzhjNTAxZTNlMGYxNTNhZWJlMWY1MGE4MjMgbGVnYWN5LXRydW5rCisyNzU3MiBhMmJjYjAwZGNiZDU5NWIxMTQ5NWMxMzdmODZmNDNhOTI1MDdmYjMyIGxlZ2FjeS10cnVuaworMjc1NzMgN2I1ZTYxMzczZjZlZGM5YmQ1MDA1OThiMzQ1NzVjNTIwMGJiZTZkZiBsZWdhY3ktdHJ1bmsKKzI3NTc0IGI5ZjIzZTIyNTNmODg3YzI4ODUwNDYyOThiMWI3ZGVlNWMzM2FjYmIgcmVsZWFzZTIyLW1haW50CisyNzU3NSA2ZWI3NGU4M2E2ZjExYTQ4Mzk1MDk4MzYwNTc0NjQ4MTAyMmMzOTY0IGxlZ2FjeS10cnVuaworMjc1NzYgMDc4MDlmNmE3OTY4YjI3ZGFmZjUwNjc0NWZkYjZlNjEzZjZlNDhmZiBsZWdhY3ktdHJ1bmsKKzI3NTc3IGJmNjQwMThhNjRmZjRjNzU0Y2UxMDNmMGFiYjU4NDI3YTQ5ODc3YTggcmVsZWFzZTIyLW1haW50CisyNzU3OCA1Y2NhYWFkNGYzM2IxYmFmYzhkNjMxZmZiOTVlY2FiYzNmZDc0OWUwIGxlZ2FjeS10cnVuaworMjc1NzkgM2QxZjNiN2FkZTA3MzQzMzk2Mzc1YWQ2ZjQxZWZiMDU3ODcxMjU4OCBsZWdhY3ktdHJ1bmsKKzI3NTgwIGYwMjU5OWVjNWNiOTMxMDZmM2MzMjI3YTMwYTJhN2Q3MGIwNDdlOTYgbGVnYWN5LXRydW5rCisyNzU4MSA5OTBmYzA0Y2YwZDQwMDE0MTU1MTVlOWE1NjY0YTM2OGJkZWQ2YjU3IGxlZ2FjeS10cnVuaworMjc1ODIgMGI2YTJhZTcwNmUyMWE4NzYxYTY0ZDNmNTQ3NDkyNGY3MjQ4OTRiMSBsZWdhY3ktdHJ1bmsKKzI3NTgzIDc3NGRjMDdmMWMxNmUyMzk2ZTA5NDMzMWRjNmMxMDFhMzNkNzlhMDEgbGVnYWN5LXRydW5rCisyNzU4NCA5ZGViYTM1ZTYyNGNiZjk1MjJiNjY3YWYzZjRhMTQ4Mzc1NzU3NmVjIGxlZ2FjeS10cnVuaworMjc1ODUgMDgyMDIzYzIwY2VmMjI1MDU4ZTBhNWE3ZmY4MzFmY2MwOGQ0M2MyYiBsZWdhY3ktdHJ1bmsKKzI3NTg2IGU0OGE0YjBiZGJiNTVkYTQ5NmRkNWY0YTAzMmI2ZTg1ZTcyNGNlNzUgbGVnYWN5LXRydW5rCisyNzU4NyBmMjAxMmRiMTYxNmMzZTU2OTI0NzIxNTRlYjhhYzhlMzg3MDUzNThlIGxlZ2FjeS10cnVuaworMjc1ODggZmE5YWYyNDVjZWI0ZWFkMjU2NWUzZmU5ZDQxY2RhMmFiZjdjMDY2ZSBsZWdhY3ktdHJ1bmsKKzI3NTg5IDU2MWUzM2E2YTMxMzg0MTdjNmQ5ODE3YThhMzYwZWVlYzJjMDhiNzcgbGVnYWN5LXRydW5rCisyNzU5MCBlZmFiYzE1MTFkYzI3MWVjMDk3YjQ2OWRjZmRjZDcxMDY4MjhiNmM0IGxlZ2FjeS10cnVuaworMjc1OTEgYTU0NjU5Mzk2OGQ2NGRmNDY1OWQ3NjI3NTM4YzQ3OWJhZjhhNmZkZiBsZWdhY3ktdHJ1bmsKKzI3NTkyIDI1MzY3YzdjNDBhNGM2ZGU1NDA4MTkwODkyYWRjMjM0NDVkMjE0ZGQgbGVnYWN5LXRydW5rCisyNzU5MyAwNmVlODYyZDk4MTU0MzQ0OTUyOTYzNDg2NzA4ODdjNzlmYjM1ZGEyIGxlZ2FjeS10cnVuaworMjc1OTQgMjk2ZGQzMjQyNWQ2YTczZjQ4OWQ0OWU0NzkzZWQ1ZWQ3ZmUwYzAwOCBsZWdhY3ktdHJ1bmsKKzI3NTk1IDA4NjdkYTVlODU0ODlhYzg1NWY5NzE3YWUxZDkyNzRmNzEyYzExMjUgbGVnYWN5LXRydW5rCisyNzU5NiBmMGEyZWM3OGJkMDVjMzc1N2FlMDQzY2FjNTEzYTgyOWVlNGM3MDY2IHJlbGVhc2UyMi1tYWludAorMjc1OTcgMTYzMTRmZjU4ZWY0ODA1MmM1YzMyZTY5MGExYTU0ZGM1N2UzOWIyNCBsZWdhY3ktdHJ1bmsKKzI3NTk4IGM4YTE5YTQyODM1ODRiYjliY2VhZWEwZTI3MTg2YmIyNjdmYjM1N2MgbGVnYWN5LXRydW5rCisyNzU5OSA0OTRhOGJlYjQ1ODI2NWExZGJhNTUwYWFlMmFjMmNiODRhOTdmZDAyIHJlbGVhc2UyMi1tYWludAorMjc2MDAgZGZkODVlOTAyM2ZjYmM0OTZiOWJlNGVlNGQ5NWUwZTRiMGQzZGVjMiBsZWdhY3ktdHJ1bmsKKzI3NjAxIGRhYTViMTQ0OTJlZTkwOWRhMmVkMWEyOTIyODdlZTc1NDc2ZmU4NjAgbGVnYWN5LXRydW5rCisyNzYwMiA3NmFmOGIzMDg5NGE3Y2Y5ZjA1MzRlNTExNzQ5OTBkYzc4MjA5M2VkIHJlbGVhc2UyMS1tYWludAorMjc2MDMgYWQ1ZjNhMDUyNmQxZjQzZTc4MTQwZmIwYzA4ZGQwYzNmNGM0ZDZhNyBsZWdhY3ktdHJ1bmsKKzI3NjA0IDU2NTc4MWVhMTM3YmUyYmRjNTI4YzM2YjViOTViY2JiZjc1YjM4NTUgcmVsZWFzZTIyLW1haW50CisyNzYwNSA0MmVkMDJhZmE2M2JmNzZiNmZiNGRkNTU2Yjc4YzFhMmRiNzkzNzZjIGxlZ2FjeS10cnVuaworMjc2MDYgYjM0NzIzMzc4M2VlMzkzYmNlYzViYmU4NzYzZmFhNjQ3NjUyNjc0YiByZWxlYXNlMjItbWFpbnQKKzI3NjA3IDliZWEyYzBjODM4ZTZjNjc3ODQ2NGM4YWEzY2IwZmVkMmNjMDBjNTMgcmVsZWFzZTIxLW1haW50CisyNzYwOCA2MmQ4Zjk3NDgxMWYxYTQ2MjZlOTc4MWU3OTRiZTFmYjIzMzI2ZDA3IGxlZ2FjeS10cnVuaworMjc2MDkgOGE2N2YyOGE0MmE1ZGMxOGNmNTAxNmI5ZjJlMmY3NTM2ZjNjYmVjMiBsZWdhY3ktdHJ1bmsKKzI3NjEwIDViNjZlNjNkN2FiYjcwZDQ4NGYzOGNlOTA1NGIwYjUwNjg1NDI1MGEgcmVsZWFzZTIyLW1haW50CisyNzYxMSA0MGQ5NjQ5M2E0Mjk1MWJmOWIyNjY1ZjFhNzQyYmYyZDFjMzdhYzQ0IGxlZ2FjeS10cnVuaworMjc2MTIgMjg2MGJlMjQ0MjYzZTQwNDk3NGM3ZDc5NDk5ZGY0MzAzMzVhOTAwYiBsZWdhY3ktdHJ1bmsKKzI3NjEzIGI2MjEzODQzZDhiZWQwMGVkMDI2MzFjMjEzYTFlZGZkYjVlMjVlYjYgbGVnYWN5LXRydW5rCisyNzYxNCBlMDZiMWFiMGJkYjgwYzM0ODRjMWY4NDgxZjBlNGQwMjRiNDgyZmEyIGxlZ2FjeS10cnVuaworMjc2MTUgMTFjNDI1MzY5OGRjNzNkY2E0ZjUwODZjOGVmMTA1Y2I3Zjc2ZmZkNCBsZWdhY3ktdHJ1bmsKKzI3NjE2IGM4OTE3YjU5YzA2NTlhYTM4ZjUzZDg2MjcwNzc3ODMwODAwMWRlNjIgbGVnYWN5LXRydW5rCisyNzYxNyA3M2E4ODQ0ODdhNzY2ODBhYjNhMjZhODZiZDAzYjlhYTk5NGMyMDg5IGxlZ2FjeS10cnVuaworMjc2MTggMmJlNjNlMjBhNDk4MmQ1YWI3NDkxZThmMmNlZmJlNmZiNTQyNWNjZSBsZWdhY3ktdHJ1bmsKKzI3NjE5IDA1OTc3YzVmODgwY2Y4YTFjY2M5MGY0NjAzNzRhYzQ4YTM4NTE5MjcgbGVnYWN5LXRydW5rCisyNzYyMCAzODk1Yjc4ZDNlZTBjZWNmNWQ4MmU4NjRkYzI4YTMxYzI3NTEwYzI5IGxlZ2FjeS10cnVuaworMjc2MjEgNTFjZGE2ZTg3NjRhNmUyMmQ1NzMyYzZjMGIyZGFiNDgxMzYzMTUzZCBsZWdhY3ktdHJ1bmsKKzI3NjIyIDllYWZiNGNlYTQ3YTVjOTAwM2Y2YmIwOGRhYmM4YTE4MTE1Mzc1ZjIgbGVnYWN5LXRydW5rCisyNzYyMyBmYzI3ZmZlMjAzNmFhMTBmZTcyZWJjNjZlZWQ4NTJjY2MyMjVjNmY1IGxlZ2FjeS10cnVuaworMjc2MjQgYTNmYzFkOGUwYWU4MWU0YTNmZDIwZWY4YmZkZDAxYjAzNzM3MjRiNiBsZWdhY3ktdHJ1bmsKKzI3NjI1IGM0MjNhODhiMjJjZWQzNDZhOGM0YzM3OGZmN2EyZGRmZTgyOWUxMjQgbGVnYWN5LXRydW5rCisyNzYyNiBkYTRjNzEyMDE0M2YwOGQ5MzM4NTEyNDM5ZmVhOGVmYjJkNDMzZWRhIGxlZ2FjeS10cnVuaworMjc2MjcgNTA0NDMxMjdiMjFkYzQ5NzE4MjM0YzI0YWRiODU1NTJlYmZjODFjOSBsZWdhY3ktdHJ1bmsKKzI3NjI4IDlhNThkNjRmOGZjM2ZkNTI2NGM2ODBhYTAwY2IzNzFiMTI5NTFjNDkgbGVnYWN5LXRydW5rCisyNzYyOSA1ZDNlYzI4ZTlhN2FkM2U4MGNhMjQyNmZlMDY5MjFmZThiYzdhZmQzIGxlZ2FjeS10cnVuaworMjc2MzAgMzA1NDIyZDY5ZDMxMzMyZGE5OTMxZDU0YTJjZTNiMjEzNTI1MTFmNSBsZWdhY3ktdHJ1bmsKKzI3NjMxIDRhN2IzYmFjMzgxMjg3YjI0MTZjZjYxMzc0NjRlOWEyMjY2MzM2NzEgbGVnYWN5LXRydW5rCisyNzYzMiA4MDRlYTUxY2ZjZTZlMmMwMzIxMmI1M2Y4ZTg0NzI0YTQ1NjM4M2Q3IGxlZ2FjeS10cnVuaworMjc2MzMgN2QwOTgyMDU2ZjcyYjU3ZDg3YTkzNWFjYjU3YzNkZmYyYzgzN2JlNCByZWxlYXNlMjItbWFpbnQKKzI3NjM0IDU1NDJiZjBiYmNlMjNjYjhiYTJkMjMxZDM4ZWUwZjRlM2RiMWY1ZmMgbGVnYWN5LXRydW5rCisyNzYzNSA2MmY0YjQ1YjA1ZmRkYTEzYjk0NDAxOTRkNzZhMTZjMjBmMWIwOGM1IGxlZ2FjeS10cnVuaworMjc2MzYgODMxMjBmNWE0OGMyMTM5ZWVkYmVjODE0NWNlYjllZTU5M2NlYWJhNSByZWxlYXNlMjItbWFpbnQKKzI3NjM3IDQxYzU0YjM3ZTAzMDg4NDcyYWI3YWYwMTU4NDM3MzE5NzI1MjkzMTcgbGVnYWN5LXRydW5rCisyNzYzOCA4OGNkMjdkYjc5YjkzZjI4NTVmMGVmZWI4NTgzNjgxMjYyZWViM2M2IHJlbGVhc2UyMi1tYWludAorMjc2MzkgYTY3MTcyNzUxOTVjOTI5MDNiY2U2MGM4ZjZlYzI4ZWExZWQ2ZjBkYSBsZWdhY3ktdHJ1bmsKKzI3NjQwIGVhYzU0YTgzMjcyZjQyMDBlOWRhZTFmMmE1NWQ3YTAxZDNlZGY0MDcgbGVnYWN5LXRydW5rCisyNzY0MSAyZjYwZjkwY2UzMDkzZGJiMTU5NzEzNzY0NjRhYTcwOTNiZGRkZjEyIGxlZ2FjeS10cnVuaworMjc2NDIgNmFhMmQwOWUzMmMxM2ZiNTZjOTY4MWJlZjIxNjA0NzQyZGJhODNkMCBsZWdhY3ktdHJ1bmsKKzI3NjQzIDI3ZTk0Y2FjYjQzYmQ2YzM0ZmFmNTYwMGNmMDc1MGUxM2E1Yjc3MGMgbGVnYWN5LXRydW5rCisyNzY0NCAzYjU3MWUzMmE2ZTQ1ZmI4MjViYmI2OWE5NjFmYjIwZDJlNTEwYWVjIGxlZ2FjeS10cnVuaworMjc2NDUgZTYwMzMyNTRkZjIxNDU1YjhmYzQxNDU4NTI5M2U1MjZlNDYzY2YwZiBsZWdhY3ktdHJ1bmsKKzI3NjQ2IDE4YzFiMjkwZTQ4NDI5NzQ3MjNmMzEyNmNkNGZjZWZmMjVhMjIyN2EgbGVnYWN5LXRydW5rCisyNzY0NyA0YTVjNmY2OTQ0N2Q2YjlmZjc3NzhiMjBhNWNlMDJjY2M1OTAyZDg2IGxlZ2FjeS10cnVuaworMjc2NDggZDk4YjBjZGY3ZTUxYjZhMTkwZmE0MDM0M2IzYThiNzljMTIyNGM5MCBsZWdhY3ktdHJ1bmsKKzI3NjQ5IDc2Y2QyODZlN2RlNWU3Nzk1YjkxOTMwNWQ5YmI2ZjNlZDk3NGVhYWQgbGVnYWN5LXRydW5rCisyNzY1MCAzYTNlMDcxZDg0Zjk4NWZkYzIzOTk1NjA3ZDc5Y2FlNmEwZmU0ZmE4IHJlbGVhc2UyMi1tYWludAorMjc2NTEgZDcyMzcwMzdmMzc5NGQ5MjQ3NDFmZjk4ZTM4NDhmNzMwMWQ4YWU1OSBsZWdhY3ktdHJ1bmsKKzI3NjUyIGE0ZjRjZTVlOGFhOTkxNGUzMjMwN2Y1ODhmNzgwNWViMGNjNTI5NTIgbGVnYWN5LXRydW5rCisyNzY1MyBkMWIyYmZkOTNhMjcwODk1MGNhMGNlNmQ2YjNmNzM1YjM5ZGZiNzAwIHJlbGVhc2UyMi1tYWludAorMjc2NTQgYzNjZjIyMzM4ZTFjZTk0NzI4ZmZkN2M0ODk0YWU1NDE2NjE4MzhkYSBsZWdhY3ktdHJ1bmsKKzI3NjU1IGMzMjBhMDdmMDE0NjcxYTNlMzBhOGQzYzAxMzI4OWEwY2M2MzQ3NzYgbGVnYWN5LXRydW5rCisyNzY1NiAxY2ViY2U1MGZlNzEyMjRkMTA5NGM2NWRhMGEzNDk1OTdlYmY4OWIyIGxlZ2FjeS10cnVuaworMjc2NTcgOTlkYTkzNjgzZWE1YjI1NDg2MGUxNjEzZjE5MGEwNDk0ZDBlMzZjOSBsZWdhY3ktdHJ1bmsKKzI3NjU4IDM1MjlhZDIxMzk1NTk0M2QzNDU4YTEwMjkyMjc2YjY1YWU3ZjUxNTEgbGVnYWN5LXRydW5rCisyNzY1OSBlYjA0ZjE3Y2MwMDhjYTc1MzNkNzQ4ZDM3YTUzZGIwZjk3ZTk4YTYwIGxlZ2FjeS10cnVuaworMjc2NjAgNzFmMWYzNWMwMzU3MzQ3NmVhMzk4MzEzNTQ2N2YwNDA3ZGYwZDAxZiBsZWdhY3ktdHJ1bmsKKzI3NjYxIDFhNzAzZjliYmRjMGZlZGNhY2U0NzlmNzU0ZmEzMTkyODc2ZGYzMjUgbGVnYWN5LXRydW5rCisyNzY2MiAxNTk4YTFlNDczZTI0Nzk4ZmQ1OWFjZGIxNDNiYzYxNjc2ODMxNDU5IGxlZ2FjeS10cnVuaworMjc2NjMgODE5YzgwMzM3MDViOTU0ZjU1NmU3MmZlYWMyMzVmN2ExMGQ4YzI2NSBsZWdhY3ktdHJ1bmsKKzI3NjY0IDk3MDc4NmQwMmU4MDVkZjE3ZDRkOWI2NDcwNzdjNGNhMWRiZjY0ZTkgbGVnYWN5LXRydW5rCisyNzY2NSBjMGE2N2ExY2FiMDljOTczN2MyMWU3YTA3NDMzNGU1ZmUwZTQwOGI3IGxlZ2FjeS10cnVuaworMjc2NjYgZDg5MDk3OTIwMDVhYjgyZWQxYmMyYjEzMTBmZGRhZjZjZDE4NGIyYiBsZWdhY3ktdHJ1bmsKKzI3NjY3IDQ0NTIyYTc1ZGVlY2VhOTQ0YzgzMmVmZTRkMzlkNjcxMTFiMjE5MDIgbGVnYWN5LXRydW5rCisyNzY2OCA0ZTg1MzA2YTliYmZhODFlYzViZTVmMzg2YjE0MzI4MWQyZWM4NjI5IGxlZ2FjeS10cnVuaworMjc2NjkgMTU3NmEyZGZmMDFmOGU5OGEyNTVhMWU4N2Y1NjI1M2Y0ZDU1MzQ3ZSBsZWdhY3ktdHJ1bmsKKzI3NjcwIGQ4MTRhNzMxOTI0YTMxNWVhNTk3ZWUyZGM0ZGY0ZDM5Y2FhYjE4MTcgbGVnYWN5LXRydW5rCisyNzY3MSBiNTk2MmI1ODdjYzA5MjllYTFjZmY0ZDVlZWFkYzAyN2IxNmQwMTdlIGxlZ2FjeS10cnVuaworMjc2NzIgMDllNGRlNWRjYjNiYWIxZWNkNDhlYzU0OGI0NzkzOGNmNmY1ZmI2NSBsZWdhY3ktdHJ1bmsKKzI3NjczIDNjYWNlZjI0OWViNTUwYjI2MzAyNmM5YWRmNjcxNTY4MzM4ZjI0YjUgbGVnYWN5LXRydW5rCisyNzY3NCAyZDQwNzQ4NGE0ZTYzMzhlZmY1NDZjMWRlYzRmMDViOTA0ZGZmY2M4IGxlZ2FjeS10cnVuaworMjc2NzUgNjQwMzcwZjA4ZTJhZjI5OTY3YmFiODhhZmM0MTRhNmE0ZDVjYWJjYyBsZWdhY3ktdHJ1bmsKKzI3Njc2IDBhMDhlZDA1YmQ0MjVjMGExNmFmNzI1MWMzYmMxODBhM2Q2MWRiZGMgbGVnYWN5LXRydW5rCisyNzY3NyBhMjZjYThhYjI3ZjJiMjAxNTEyYTk4NTE0ZjJlZGRhYTNmZmU3NzZkIGxlZ2FjeS10cnVuaworMjc2NzggODdlMjUzNGU5ZDY0YjM3MDUwYzI3MDdmODgyOWRjNTVmODdmNGViMiBsZWdhY3ktdHJ1bmsKKzI3Njc5IGU2NjIyMjYyMTFlNTM5Y2FlZGZkMTRjOWNlMjNiZmI4NDJjODdmMDEgbGVnYWN5LXRydW5rCisyNzY4MCAzNzliMDFlMDc0MjIxOTkwNjk2M2I4MmY5ZGQwZmIzYzAzOTYzOTIwIGxlZ2FjeS10cnVuaworMjc2ODEgYTAzMjk4YTNhY2FkMTQzOTA5MmUwZjQ5ODMwZTBhYzhmYmUyMjkyYyBsZWdhY3ktdHJ1bmsKKzI3NjgyIDUyYjA5NzZlNDhhMWQ2ZTQ5ZDQwNTNiOTgzN2Q5ZGI0YTc3OGEyMGEgbGVnYWN5LXRydW5rCisyNzY4MyA5YzAxNzg0Y2U3Y2FiNTE0MzFkOGI5ZDQ1MGVhZWZjYmNjNzMwYjYyIGxlZ2FjeS10cnVuaworMjc2ODQgYzRiZjQ1Y2E0ZDU1Njc2OWYwMTI3Y2ZlNjY5NjhkMDExOWU3YzU1OCBsZWdhY3ktdHJ1bmsKKzI3Njg1IDkzNDM0YmMwODk5ZDlmZDU0YTc5YjhlNzUxMTk1YjQ0MmU0ZDA3YzAgbGVnYWN5LXRydW5rCisyNzY4NiBjOTFiN2YzNDYyNmI5Y2QzZTU4NzNjZDJiNTRjNzkzNDc5ZjU0ZGUzIGxlZ2FjeS10cnVuaworMjc2ODcgNDI4Y2JiZjA1NjM5MDY5ODUzMDg5YzkwNmM3YWY0ZjE3ZGRhN2E2ZCBsZWdhY3ktdHJ1bmsKKzI3Njg4IDEzMjU3N2Y2OTNiMWNjMTU5NzMxODE5NGIxZTgyNDUzNzc4MWQ1YTIgbGVnYWN5LXRydW5rCisyNzY4OSA0MTY2NTRlMjdkODg5MzM1NjNmMmJiNDI1NGQ3NGMwMjQ5MjRjZGY4IGxlZ2FjeS10cnVuaworMjc2OTAgNjkxMzRjNjFmODdjMDZiYzFhZDM4MTE0MzNiYzIwMGUyNjE1OWU2YyBsZWdhY3ktdHJ1bmsKKzI3NjkxIDA4ZDMwN2NiY2NkOTUxMjBhZWQ5YzY3YjgzZWNiNjUwYWZkNjM2NGQgbGVnYWN5LXRydW5rCisyNzY5MiA1ZWRlOWJjYzY1MWViMmYwMTlhNGNhNmUzZTYyOWRlNzY1NWFjM2JkIGxlZ2FjeS10cnVuaworMjc2OTMgYTM1M2Q2YTQ1Mjc2OWVhMDJiYjI5MWI4N2Q1MTBlYzAwYWRjYTIxMCBsZWdhY3ktdHJ1bmsKKzI3Njk0IGM0YjNhMmIyNDdhYzM3YTM3MTI1Zjk3ZTI4NWY3ZTBkMTcxZWIyNGEgbGVnYWN5LXRydW5rCisyNzY5NSA2NThlMTJjYzAzMzYyZDVhNjQyNzc3N2M4YzE2YzNkYmIzNWFiZmVlIGxlZ2FjeS10cnVuaworMjc2OTYgNzRmOWEyMDZkNGYwOGRlMTMyM2UyNDUzYWFhNGJiZDI3MzM2YjA2MyBsZWdhY3ktdHJ1bmsKKzI3Njk3IGE4ZGYwYzBiZTI0MjNhZWI2ZDYxZmVhYjM2ZTQyYzhmOTYyYjZkMTAgbGVnYWN5LXRydW5rCisyNzY5OCBkZDM4MjkxYjg5ZmI1NDAwNzViOWRjMWJhNWIxZDUyNDc5MmU4OWIxIGxlZ2FjeS10cnVuaworMjc2OTkgMjlhZThlODkxNTNiZDZlNTU3YmRkOTliZDBlMjdkNjNmODhkNDkwMiBsZWdhY3ktdHJ1bmsKKzI3NzAwIDEyODE1ZDA1MDgwY2Y2OWMyYzlhOTkzZTRlZWMxOTYwNzA0MDIzOTggbGVnYWN5LXRydW5rCisyNzcwMSBjNDM0NjZmN2RhZTg0MTY0NTdlNzA4MWE2YjQyOTJiNjRiODQwNGQxIGxlZ2FjeS10cnVuaworMjc3MDIgNDc4YTJkNjRhYzU4MzA4ZmFiZjRlNGNkNzU3YTcyNjRmZTk3M2M3YyBsZWdhY3ktdHJ1bmsKKzI3NzAzIDMxMjI3MzUzY2JiY2MwMTBiNWQ4MjY5NjBlMzA2NzQ2ZDk4MTc1MWYgbGVnYWN5LXRydW5rCisyNzcwNCBhZmU0NzlhNjIzNWVjMDg0MTVlNzQ2NTNiYmIwMzM2MmQwMjQ0Y2U0IGxlZ2FjeS10cnVuaworMjc3MDUgYWIxODc3YTdiMjYyNWJkNmM0NmVmYjMxNDkwYzU2YTVlZmUzOTI5YSBsZWdhY3ktdHJ1bmsKKzI3NzA2IGQ5YWRkNDBmOTJmZjMyZjE5ODQ3ZGUzMjViNWJmM2VmYTBkYTNiYTMgbGVnYWN5LXRydW5rCisyNzcwNyAxN2Q1MjYyOTc3NTU3ZjdlNjE4MGNlN2FiMTc5ZWVjMTZhZTUwYWJkIGxlZ2FjeS10cnVuaworMjc3MDggYWE0YjlhN2IzODE3YTE5ZTVmYTU4NDkxYTlhMDNhY2MyMTZlOTg2MSBsZWdhY3ktdHJ1bmsKKzI3NzA5IGViMzliYTYwZGFlMGNmYzI5NWJjODNjZThkMGQ0ZGE2NWQwZDFlODcgbGVnYWN5LXRydW5rCisyNzcxMCBkNDk3ZjUyM2I4MmVkNzRhY2ExMjYzOTk1MTZlMzNhMWNmZDgwOGFhIGxlZ2FjeS10cnVuaworMjc3MTEgZTM3NTFmYzAzZTZjODc4MmU5NzZiY2Y1MGVhM2ZiMWY5NmZjMWZiZCBsZWdhY3ktdHJ1bmsKKzI3NzEyIDUzYjMyMjcxZThlMWYxNmRmNGQ5MzhjYmNiZDc0N2YzNmZkOGJhMjMgbGVnYWN5LXRydW5rCisyNzcxMyA2OTc3NzdjYzgzY2MwZmYwNjM1ODUxMmZhNGZmZTZmZmQ3MWNjNzU3IGxlZ2FjeS10cnVuaworMjc3MTQgOGI0YTE2NWJhYWVlZGY2OTg0ZTRhYzBlYmYwMTVhNzE3NTM1ODZlMiBsZWdhY3ktdHJ1bmsKKzI3NzE1IGRkZjY3MTYzMzQ2NWU1MDZmNWI3Yzk2N2FlMWMxZjZmOTYyMDdhZDEgbGVnYWN5LXRydW5rCisyNzcxNiAyMTMxYmI3OTBhZjk1OGM2NTEzNDE3ODU3NTA0YjYwMGExNDg0ZWQ4IGxlZ2FjeS10cnVuaworMjc3MTcgMDZiOWE4ZGFkNzIxYjE5MDZlMGY5YmRjMGYxZjIxNzEzNTg1ODA3ZCBsZWdhY3ktdHJ1bmsKKzI3NzE4IDJmNjAzNDRhNDllODhjZTRlZDk5NzQzNTEwOTMxOTUxM2YwNTQ5M2IgbGVnYWN5LXRydW5rCisyNzcxOSA0OWEzZTgzMzQ3ZGRlZDBiMDk5Nzg0OWNlNzA1OGI5MGFhODc2YzkxIGxlZ2FjeS10cnVuaworMjc3MjAgNjdlYWFiYjAxN2UwZTBkMDFiODlhZDBlMWU2YjdkMTQ4ZjA5MjExZCBsZWdhY3ktdHJ1bmsKKzI3NzIxIGE5YjgwOWM4YjlkYmFhM2U0MTVlMTY1ZDYxNmIzNDM5NzE4ODZkMjcgbGVnYWN5LXRydW5rCisyNzcyMiAxMzk4NTkwMTZiNDRiYjlkMDY3MjRiMTBlODhlNjQyNjNkNmQ1ZTliIGxlZ2FjeS10cnVuaworMjc3MjMgM2VmMDE5Y2FhZDFlNTE1MDhkNDliNjhmMDlmY2E4Y2MxOWU4OGVkNyBsZWdhY3ktdHJ1bmsKKzI3NzI0IDJhZTAxNDU5MzFmMWYzMDhkM2RkYjI5MjhlZWQ4ZTgyZWEzM2MwNDYgbGVnYWN5LXRydW5rCisyNzcyNSBmMDljZjhlYmE3ZTIzNzkwZmQzNjU1NjU4ZmJmZTk2ZWYyNjMyNTJhIGxlZ2FjeS10cnVuaworMjc3MjYgYmIwNjkyZTMwZmM2YjAxZDNhMTUwY2UwYjFjZDM1MWJjY2ZjM2VjZiBsZWdhY3ktdHJ1bmsKKzI3NzI3IDIzMmFiMGQ2NjM3NTJiYTJlYTZhMTFlMTM0NmUxNGY4NzE0ZjI1ZTYgbGVnYWN5LXRydW5rCisyNzcyOCAyZGMyM2YwZjM0MjE1ZDZmNDZhMzc5NDM1OTA0MjIyYTBlMTBiYTM2IGxlZ2FjeS10cnVuaworMjc3MjkgNDg5MzBiMDA0M2I3NzJiOGE2MDI5MTM0YzRlMWRlNmZkMmYzNzgzNCBEU19SUENfQlJBTkNICisyNzczMCAxODdjNGZhZGUzZGIzZWI1ZjkxMWE1ZDU2NTk5ZDE5MTc1NjY0MDY1IERTX1JQQ19CUkFOQ0gKKzI3NzMxIDMwZDBkOGRiZjI0NDU4ZWIxNjg0ZDhiMDZlOWYyMzI4NjE4NDVhMTkgRFNfUlBDX0JSQU5DSAorMjc3MzIgN2ZlZDM1MTNhYmZhNzEzZGVjMTY2ZGU5OGJjYWQ2YzUxMzM0NjgyZiBEU19SUENfQlJBTkNICisyNzczMyAzYTNiYzdkOWYxZjVlNjE2MWMyMDhmMDk4MzhmNjk5YmNhOTYwNDk3IERTX1JQQ19CUkFOQ0gKKzI3NzM0IDRmNmU1NmM0NDczOWZlNmI5NGZiYzdkZjNiZTg1N2QwZGFkODcwMWIgRFNfUlBDX0JSQU5DSAorMjc3MzUgZDJkODFkNTNkNGExMmRmMzBhY2Q2MWVkMDNkYmRhNWU0YTVhNTljNyBsZWdhY3ktdHJ1bmsKKzI3NzM2IDgwOGI0ZmU1MTg0ZmNhZDc2NWYxZWI5YWZhMzk0OTcwMjI4N2UwZjAgbGVnYWN5LXRydW5rCisyNzczNyBhYTVjOTliNjFkZjc3NzQxYWQ2OWIyZTY5ZmQzMWUzZTBmMmJkNzkyIGxlZ2FjeS10cnVuaworMjc3MzggMTM3ZmRkZTcwMDA2MDEwMmYyNGM0MjkzZDlhMWU0ZmZiMzhlZDg1NyBsZWdhY3ktdHJ1bmsKKzI3NzM5IDE1N2JiZmIxN2Y0NGNlOTJkYmY2YjU4Zjc4MjJiYmI0YmM1ZGM1ZTAgbGVnYWN5LXRydW5rCisyNzc0MCA1NWVhYjEwZTQ3MmQzOWYzODQ2MjJiZjdkYTViY2Y1MTFiY2Q3ODhjIGxlZ2FjeS10cnVuaworMjc3NDEgZmRhNTEzYjY3MWI2YzlmNjJiZTY3OTk3NDRhMDA5M2M2ZWNjN2E0ZiBsZWdhY3ktdHJ1bmsKKzI3NzQyIDRlYWRmN2RmY2RiNGE4ZWVkNGRhM2ExOWU3NWY0MGFhZjAzZGQyNzMgbGVnYWN5LXRydW5rCisyNzc0MyAxOTQxNDBjODMyNzYwNDlkZjU1NTYyZmE0NjU3ZDM4OTc0YjQzNDVjIGxlZ2FjeS10cnVuaworMjc3NDQgYTM1NzE0MzY4MzdjMWEyNDVkMjMwOTJjOGU1Y2IxM2EzNjg4M2RiOSBsZWdhY3ktdHJ1bmsKKzI3NzQ1IDE3ZTk0ZTYyMzUzYzczOGQzNzVlNzY1ZmU3N2MxYTlkMjFlODRmMTUgbGVnYWN5LXRydW5rCisyNzc0NiAzMzA4YTk2Yjk3NmY2ZTg5NTBkN2Y3NmVmMjQ2NTk4ZGE2ZmFmN2YwIHJlbGVhc2UyMi1tYWludAorMjc3NDcgZjNjOGUzYWY3YjZiZjYyNjc4YjJhNmY3MDUyM2I0ZDE1Mzc1ZTIzZSBsZWdhY3ktdHJ1bmsKKzI3NzQ4IDAyMGQ5NjYyNTM1Nzg2N2NmNjBmNTcxNzk1MjkwOGU5YjhiYzE5YTUgbGVnYWN5LXRydW5rCisyNzc0OSBlOGZkNWNhYjBkYjNlYTcyNjA3NWQ0OThhZTllYjIwN2U5NGU1ODZjIGxlZ2FjeS10cnVuaworMjc3NTAgNzEzYWQ3ZTA0MDZhYTYyYWUzMTBlZmNiMDk2YzBjODMzMzY5ZGYxYyBsZWdhY3ktdHJ1bmsKKzI3NzUxIDk3OWZmNWQwYWUwN2FmNTQzYTc3MzczNjQ3ZWRmZDVlMDlmOTM5YzMgbGVnYWN5LXRydW5rCisyNzc1MiBhYTBkMmQ1MWZiZGVjMTEyYWYzMDQzMzIxNjcxN2RjZGRlNWZkMTY5IGxlZ2FjeS10cnVuaworMjc3NTMgYTcxODZiYjkxNDJjOTI5ZWUxZDAwNWE4YWU2ZDNlOGIyMTdmOWQ0NiBsZWdhY3ktdHJ1bmsKKzI3NzU0IDEwMTI5MDZlOGFkZjBmYzUxMDFhNjQ2NWMwYTllNTEwMDZiMTNhOTYgbGVnYWN5LXRydW5rCisyNzc1NSA4ZDIzYmZhMjBjZGJjZGIwYWFjYTA0OGU0YzJkN2E3ZDcyOTM0MDllIGxlZ2FjeS10cnVuaworMjc3NTYgNGFiNGRhYzQ2MmZmZGM5OTVmM2Q5MjY2OWQ4Y2E3NWIwMjI1ZjI4YiBsZWdhY3ktdHJ1bmsKKzI3NzU3IGUzNjA1ZWIyZjg2NmIzYjUzM2Y5YzVkMWY3YjFiN2I5NzAwMDI4NGQgbGVnYWN5LXRydW5rCisyNzc1OSBmNmVhYTlkOTk2ZWMyNDJjNjViNmQ4NjdjMWVmMDczMDlkY2Y0YzE1IGxlZ2FjeS10cnVuaworMjc3NjAgNDBlMDE0MDE4MWNmODUwMDBjMDVhMTE0NTZhNjAwZDVhMzQ3NzM2YyBsZWdhY3ktdHJ1bmsKKzI3NzYxIDQzZWUxYzA3NTBhMjM1NTRiZGU1NTRmZjczYTczMzAzZGI5Mzk4YzIgbGVnYWN5LXRydW5rCisyNzc2MiBkZmU1NGFmMjlhNDczZmZlOGUzNzk4MjNkMzBiMzU3NmFmNTc2ZDQ0IERTX1JQQ19CUkFOQ0gKKzI3NzYzIDlkNjQxY2U2NmFmMzU4MjFjYTgyYzVmMDg4NmFhOGVjZTg4ZGMzYzcgRFNfUlBDX0JSQU5DSAorMjc3NjQgZjc5YzdhYWU2NjIwZDhiMmIzZjc4Nzk5MzAwNjE3ZjJmYTRkYzQ1MSBsZWdhY3ktdHJ1bmsKKzI3NzY1IDMwNzBiNzE3ZmMzZDgzMzI2NmI4ZmU4YTM1ZWE0YTk2Njc0NTAxZGMgbGVnYWN5LXRydW5rCisyNzc2NiA4OWNlNjIxMjY2NjRmMjRiNjQwYmY5Yzk0NjJiODJhY2YxODRjOTUyIGxlZ2FjeS10cnVuaworMjc3NjcgYWE5ZTA1NDI3MGEyYTlmZWZhNjZiOWVlYWIyNzlkZjNkNTM1Nzc3YiBsZWdhY3ktdHJ1bmsKKzI3NzY4IGVjMmM4NTRiZDE5NmQzYWNhYzQ3NGMzMzA1Y2Q2YmUxMTU3ZWVjMmIgbGVnYWN5LXRydW5rCisyNzc2OSBjOWRlNTVmYmIyYjFkZWE3Y2VmZDEzZWQ2ZGNjNDJlMjc2MWJmMmZjIGxlZ2FjeS10cnVuaworMjc3NzAgZTJkNDYxYmVmYzdhOGM1YjIxNzRhZjc3MGUzOWQxZjViYjQwNDY5MiBsZWdhY3ktdHJ1bmsKKzI3NzcxIDY3Mjg0M2VlNGI2MWZiMzkxYTA4ZjNhYTVlYzVlNjk3OWQ5YTg1YTIgbGVnYWN5LXRydW5rCisyNzc3MiBkOGE2ODJkNGM2OTI0MDQ3MDA2YzliMjQ4Y2IzM2VkMjNiMjM2Zjc3IGxlZ2FjeS10cnVuaworMjc3NzMgNDE1NmJmOWIwMDQzYzBiNzhiOWZhMDQ0M2RmMDZjYzViZjc4ZmI0YyBsZWdhY3ktdHJ1bmsKKzI3Nzc0IDNjNDVkY2QwMTAxZGVlYmVlOTRlMGY4OGMwNDE0MjFiM2JlZDU1ZDcgbGVnYWN5LXRydW5rCisyNzc3NSA2NjczMTcxZmMzN2ViZjFiZTE4NThiOGQwZWMyZjVmNjFlMzk2ZDNlIGxlZ2FjeS10cnVuaworMjc3NzYgZGJkYWRhOTY2ODU4MmRmMTRkY2NlNzM1NTc0NTgzMjM3YWJhZWFjZSByZWxlYXNlMjItbWFpbnQKKzI3Nzc3IDBlMjdiNjcyNDdkYWE0YjBmMGVhNDg0YzQ0MjllMGFjZjViZTRiNzIgbGVnYWN5LXRydW5rCisyNzc3OCBiNDVkMWIzMDQwYWVmMDBmNzVjOTYyNTc1MzM0ZDQ2OGNhZmFiNjJmIGxlZ2FjeS10cnVuaworMjc3NzkgM2FhYWQ5ZGY3MTFlNDNlNGZlOTI0ZWEzOWZlMjc4NTc5NWE5M2M3NiBsZWdhY3ktdHJ1bmsKKzI3NzgwIGViNzU5ZGEwNjRhYTg1ZGI4NjNiNjkzMzUzN2FhMzBjMjIzNmQ4N2QgbGVnYWN5LXRydW5rCisyNzc4MSBhYzQ5YjI4MDdiNzUwZDQ3OTc4ZjA4OTI0NTk5MGQ2ZjRiZmRmMjE1IHJlbGVhc2UyMi1tYWludAorMjc3ODIgYjhlMzU5NmNlYmQ3ZDM0NGMwNzkyMGMyZTUxMWNkYjFjNDM5MTFmZSByZWxlYXNlMjItbWFpbnQKKzI3NzgzIDBhMzI3Yjc2ODg2ODc0YWJkYmYxOTcwMTg5MjgzNDM5ZWRjMzQ5ZDYgbGVnYWN5LXRydW5rCisyNzc4NCAwN2RkMmZjNmFjOWI3N2FiY2EzODViYjdjMDIyN2FjNDlmZGIzODA5IGxlZ2FjeS10cnVuaworMjc3ODUgYmI2NGE4NjE0ZjY2ODE3NGU0M2MwMzg5YjcyMzI5ZWFjZjcwZDQ5ZSBsZWdhY3ktdHJ1bmsKKzI3Nzg2IDQ3N2M3NGQwMDY2ZjA2Mjc2ODBlYzkyZTZlNjhjYmZlOGEzOTIzNDkgbGVnYWN5LXRydW5rCisyNzc4NyBlZDk4Yzg4YjIzNTNiZTQwOTNiMDcwNTNhOTk2MmQ3YTVjNTMwZjk3IGxlZ2FjeS10cnVuaworMjc3ODggZjYwNTJhZWIxMzRmY2ExZTgxNmZmMjJiZmZmMDgwOWNmMGUwMGEyMyBsZWdhY3ktdHJ1bmsKKzI3Nzg5IGM3ZWQ5MjVjNzViMzEwYTlhZWI4ZmEzMzE4ZjIwOTZiODgwNmY4Y2MgbGVnYWN5LXRydW5rCisyNzc5MCA2MDg3MzVkZDJlYmM3ZDZlNTFjODIwNmRkMThhMjBlNmNiNTE3MjYyIHJlbGVhc2UyMi1tYWludAorMjc3OTEgODFjYTZjYTVjMzA3NGIzNDNjZWJhN2Y5ZjFhNTA2NzlhMzE2ZjFhMCBsZWdhY3ktdHJ1bmsKKzI3NzkyIGJkMzY2NWJkMmY3ODMzMjQwOTZlOTM4M2E2MzExZmVmNzgwMmNiYmYgbGVnYWN5LXRydW5rCisyNzc5MyA4YzZhOTkyMjQ1NTc5ZjM4MTJhOTU5Y2M5YWEzYjUxMTU0MGYyZDQ0IGxlZ2FjeS10cnVuaworMjc3OTQgZWI1NTRhYTM2MWU5Y2U4MjA2ZTdjZWIzYzRkNzc0MjUyNTVkYzc4MCBsZWdhY3ktdHJ1bmsKKzI3Nzk1IGNhNWFjOTY3YzdjNGNjY2ExM2RjYjlkODVjNzAyZDhlMDVjMGU3ZTUgcmVsZWFzZTIyLW1haW50CisyNzc5NiA4MDEyOWQ0YThjZWMxNzUzMWUzZTYzZWE3ZTg5ZDI2M2IwNGYwMmU0IGxlZ2FjeS10cnVuaworMjc3OTcgMzA0NDA4NzFjNmU1NjQwYzZkNTZlNTAxZjM5NDdiNDM1ZWQwZWZlMiBsZWdhY3ktdHJ1bmsKKzI3Nzk4IGQwNDlmZDU4ZTRkZGM0ZGRlZWM3NDgyZGUyNGM5YmVlODgxNGYxYmIgcmVsZWFzZTIyLW1haW50CisyNzc5OSA0ZGU1YzdlNjIzMWU1ZDM2OTA1Zjc0YzdkYTFmNGI3NGNlMGFiYjhiIGxlZ2FjeS10cnVuaworMjc4MDAgZDZlYzRkYWI5MjdlNjdkMjI4NTc0YTVmOTNjN2FhZDY3ZWNmMzU3MyBsZWdhY3ktdHJ1bmsKKzI3ODAxIDMxYTcxMTliZDhkNGRlZjcxMzc0MjExOTYxZTNiZWRiYWVjMDNlMjUgbGVnYWN5LXRydW5rCisyNzgwMiA4ZTI2NmQwYWNkMTBhMDgyMWQ1MTI2ZmZkNzE4ZDc4NjMwMDgxMmQ2IGxlZ2FjeS10cnVuaworMjc4MDMgNDcwOGMwOWYwMzUwZjk1NDY0MDYzNGEwODAwOTljMTZjNWFlZmQ4NSByZWxlYXNlMjItbWFpbnQKKzI3ODA0IDA4OTI2Y2M1ZjJhZmQwNDE2ZjBhNzNmYjE5MzBjYTQwM2NkM2MxMzcgbGVnYWN5LXRydW5rCisyNzgwNSBhMDg4Y2QwOGRhZGU3NjYyNTBkMTg2NjA2OWQ3OWQ3YzQ3OTA3YjZkIGxlZ2FjeS10cnVuaworMjc4MDYgZjVjZmEwZWUwMmNmM2Y2NmEyYWI3M2I0ZTJhNmQ4MWQ2NmMwYmY0MiBsZWdhY3ktdHJ1bmsKKzI3ODA3IGRkNmE5NzExYjQzY2Q5MDZmMGU0MjFiNjkyM2Y4ZmFjZmU0MzUwMDUgbGVnYWN5LXRydW5rCisyNzgwOCBhMGE1OWU1MmJhZWM1ZGQwYzhlYTYwNWM4MGI3MGY2M2RjYmVkOGExIGxlZ2FjeS10cnVuaworMjc4MDkgNTE1ZTg3MjNjYWVmZjY1OTYzNGYwOTM5NGY5YWNjNjBiYjJjNzhiNSBsZWdhY3ktdHJ1bmsKKzI3ODEwIDI3NTY5M2JjZWU3NDAyYjMwYjZjODM3N2I2MTI5MGQwODcwNzExNWYgbGVnYWN5LXRydW5rCisyNzgxMSAzNmUyZmQzZjA4Zjc1ODBkZWU0NmFkOGIwNjllOTM4OTdlNzNiYzg1IGxlZ2FjeS10cnVuaworMjc4MTIgNWJlOTYxYThlOWRiM2UxODBmODYzZGY0MjJlYmJhOThmMGYwZmJkMSByZWxlYXNlMjItbWFpbnQKKzI3ODEzIGJkNjI2OGIxN2I3NTc3YzkxN2FiZDJkYjk5NzZkYmNlNDJlNDQ2MzYgbGVnYWN5LXRydW5rCisyNzgxNCAzZGIyNjFhOTNhNWI5ZjczYTM3ZTYzNTI5ODNlYTg5NzllZjZhN2MzIGxlZ2FjeS10cnVuaworMjc4MTUgZjRjZDc4YjNiNzc0Y2ZiOTRhNzJhYTZmZjVhNDU2NDgwNzFhZWQwOSBsZWdhY3ktdHJ1bmsKKzI3ODE2IGVkODkyNDExZWUwZDAwYjVlYTg0ZTQ4YmI5MjBkMGRiYzMxMWZiYjQgbGVnYWN5LXRydW5rCisyNzgxNyA5YWZhYzBkZDZiNmU0ZWEwZTYzMmUwNTA4ZGMyOTU4ZTlhOTkyZjM1IGxlZ2FjeS10cnVuaworMjc4MTggZWE0ODIxOTY0MDQzMjRjM2IwZjk5ZDQyYzUxNGNjOWJjNmMwYjMzNyBsZWdhY3ktdHJ1bmsKKzI3ODE5IDE1ZWU0NDVhZjA3ZjdhODUyNjk5MWNkMWM4MjA2M2Y4MmY1NjE5OWMgcmVsZWFzZTIyLW1haW50CisyNzgyMCBmNTVkNThlZTRlYTNmY2MwMGUyNjA0NGQ3YmRmYWEzMDhlNzkyNjJmIGxlZ2FjeS10cnVuaworMjc4MjEgMTRiZDVhYjBjZGI2NmM2NWY1NzU4Y2VhMzcyODYxYmJkYTE5YjUxMyBsZWdhY3ktdHJ1bmsKKzI3ODIyIGY0NDM2ZTFiMTg2OGZlZjJmMTJkYzcyNjk5ZTUyY2U1ODM0OGI5ZTAgcmVsZWFzZTIyLW1haW50CisyNzgyMyA3MzgzZTY3NGZjZDUxYjkzMDBlNzU5ODU5NzdlM2I1ZWU3YjljYzcwIGxlZ2FjeS10cnVuaworMjc4MjQgZmUyMjUwZjQ1YWMwODQ1MzBiOTFjNzM0ODg2MWMzZGZmOTY4YmQ5ZCBsZWdhY3ktdHJ1bmsKKzI3ODI1IDllZjgyMzc3NjY5ZDUzYTliYjVjMWI4MjJmOWQ3ZTZhN2M4MmM3NTEgbGVnYWN5LXRydW5rCisyNzgyNiA3ZGMzZjQwNzdlNTk1NTNlYzdmOTU5M2RmMjQzZjNhMDU2ZDZkYWQ0IGxlZ2FjeS10cnVuaworMjc4MjcgZDk4ZjhlMDNmYTMxMmEzYjQ2MDUyMjM1YWIzNDQ0NWI1MDBkY2IzMSBsZWdhY3ktdHJ1bmsKKzI3ODI4IDMwMWRkNTQ2NWI4ZTJiMjg2MGQ4ZmJmNTAwMjVkNDA1NTZjY2YxZTkgbGVnYWN5LXRydW5rCisyNzgyOSA2Njk4OTY2ODM4YzhlNDkwMmFjMzU2MmM3ODlkYzZkOTI5NDY1MzkxIGxlZ2FjeS10cnVuaworMjc4MzAgZmUwM2FiNTgwZjk1NWI5MmI2ODQ4MTg2OTkzOTExYjA1ZGQzOTljOSByZWxlYXNlMjItbWFpbnQKKzI3ODMxIDJjZDUxYjA1MmRkZjc3YjkzNWI3MTQwNWNhYzMyOTMxMmVlNjQ4NjggbGVnYWN5LXRydW5rCisyNzgzMiA2ZDYxMTI2YWNlNjk1YjM4NzU5MmViYTQyMjI2Njc1M2M2OTAyZTM0IGxlZ2FjeS10cnVuaworMjc4MzMgMjI2YmEzNGJkOTk4YjVlZTNmZDBhYWM5ZWE2ZTBlODI5YTM0MWZlYSBsZWdhY3ktdHJ1bmsKKzI3ODM0IDlkNDczZDRkMTFhNjkzZTdkY2MwNjk1OGE0YTRhM2RjMzhhM2RiYzAgbGVnYWN5LXRydW5rCisyNzgzNSAzMmRkZTM3YzhkOTU5NzQwZmViMWY1M2Y4ZmQwY2Q2ZjFlZjMyYjZhIGxlZ2FjeS10cnVuaworMjc4MzYgYzNkOWUwMWM2MTI0MDk3ZWIzYmMyNzQ4Y2FhYThmNWI1YjMxYzcyOSBsZWdhY3ktdHJ1bmsKKzI3ODM3IDZmODI0ZDZmMTI4NjI5MTI0YjcxMTk0MTM0OTk0Y2M3ZWY2YThiZDggcmVsZWFzZTIyLW1haW50CisyNzgzOCBkZGQ2ZmYwNjkzYzRmMDBkZDdiMWVmNzNiYWM2MzEyN2NlMTgzYzIzIGxlZ2FjeS10cnVuaworMjc4MzkgMzU0MzIzMzcxZTM4NDhkNWJhM2I1MThmYjVmN2JkMzgxMmM5MjMyMiBsZWdhY3ktdHJ1bmsKKzI3ODQwIDJhZGQyN2I1NTg2NGFiMDBkOWI2ZDdjOTA0NmJlMjIyMzkyN2Q3MmYgbGVnYWN5LXRydW5rCisyNzg0MSA3NDdmYTY1YTliNDc1YTkyZTQwYzRjOWMxMmFlOGMyNTY5YmYzNmFlIGxlZ2FjeS10cnVuaworMjc4NDIgMjI1NzBlNzZjY2ExNjIxZTZkYzNmMDk2ZjU5MjhkOGZjZGVlYjUxYSBsZWdhY3ktdHJ1bmsKKzI3ODQzIGE1ZWE0ZGQxNzg4M2E3YWFhNjEyOWVlZjA4Y2Y5MzViZmJlMjBiMTkgbGVnYWN5LXRydW5rCisyNzg0NCBmMGQxMzk5YTI0NDVkMGRjOWI1NDhiNzkxMWIyMDEyYzZlNmYzNmFiIGxlZ2FjeS10cnVuaworMjc4NDUgZjgyOGYzMjIwNmJhNTJiNGUzNDRiN2RjMGRlMTQ3YjQwYTEzOGYyNyBsZWdhY3ktdHJ1bmsKKzI3ODQ2IGQ5NzFiODcwMzUwODEyMWNiZmFmZTRjYjVlZTRjMGJjNTQyYjU5MzggbGVnYWN5LXRydW5rCisyNzg0NyBkMjE2ZTY3YWMyMjFjMjIwYTA5OWY3NjlkYWQyYzM0NGVkMmE1ZDhkIGxlZ2FjeS10cnVuaworMjc4NDggMjc4MjVkMjY4MzE3YTExMTYwNDRjYjE4YjM3ZmE0MDBiZmExZDc2NSBsZWdhY3ktdHJ1bmsKKzI3ODQ5IDVmMTQ5YWRlOWFmMTkxNjE2YjcxYWM5NDVjZTk4ZTJhN2EwYjYxM2QgbGVnYWN5LXRydW5rCisyNzg1MCAxODllYjZmYTlkZWQ4NTMxZmZhZDJiMWIxMGUwMGE1ZDdhMjM5ZTAzIGxlZ2FjeS10cnVuaworMjc4NTEgMmQ3N2JlNDFlZTVmYjA3ZTU4YTlkMjQ5ZmVkMzU2MTQ3M2M3YTAwMiBsZWdhY3ktdHJ1bmsKKzI3ODUyIDdmYzJjZWM0ZGM4MjhkNDllYzliMmQ0MzBiMWVmM2M1ZmFiZjhjMzMgbGVnYWN5LXRydW5rCisyNzg1MyBhMWJkZGY2YTMyY2FiZjZkYTEzMzg5N2ZjNmI0MmIwMTIyYmRmZGVmIGxlZ2FjeS10cnVuaworMjc4NTQgZWJjODY2N2YzMjVhZGJiYzcwYjhiZDcyMDU1NjY0MWYzZmM4ZWUyMCByZWxlYXNlMjItbWFpbnQKKzI3ODU1IGUzMzRkZDRlNTEwZmYxNzI3ZjkzZTU0MGFjMDA3ZmMyZGIwYzg0ZTcgcmVsZWFzZTIyLW1haW50CisyNzg1NiA0YTY2YmVmMTVjM2JiNjdkYTAzNzQ1MjBkM2UxYTMwZTAwZDk0N2IyIGxlZ2FjeS10cnVuaworMjc4NTcgMTYxYTVlZjAyMzBlMzkwNjllYWNjMGU4YzEyY2Y5MzFiMjFhNTBkYyBsZWdhY3ktdHJ1bmsKKzI3ODU4IDliMjQ5N2UyOTc5NTNhOTlmOGUxZDhkY2VjNjZkZTM5MTY1ZGI0ZjUgbGVnYWN5LXRydW5rCisyNzg1OSBlNTYyOThkYzBmOGFlODIxNDQyZTQxOWNiZGZlYmRkNTMyODQxYzVkIHJlbGVhc2UyMi1tYWludAorMjc4NjAgNzlmMTI5YjA3M2RlYmUzYmRjMGE4MmM1MWM5NTkzNTQwZGZjODU2OSBsZWdhY3ktdHJ1bmsKKzI3ODYxIGI2YTgyZjgxODU0MDZjNGNlY2VmMzc5OTI0MzNkMDVlZWNhYWFiM2UgbGVnYWN5LXRydW5rCisyNzg2MiBmNjZiM2EzNTA5YzcwY2EwNmIzNjU4NzIwMGZjZTUyNjRkMjUyMmYzIGxlZ2FjeS10cnVuaworMjc4NjMgNDViNGZjNjNiZjY3MTkzNjU0YjBlZjQ3NzI4NjBlOGEyOGJmNDJkMiBsZWdhY3ktdHJ1bmsKKzI3ODY0IDkwYjQ5NjY4ZDBhYzNmOThhOTZiZjYyNWM1MjkzNmI2NmNkZDQ5NjIgbGVnYWN5LXRydW5rCisyNzg2NSA1ZGJjY2UyMWRmZWVhNjcyMjA0MTZkYzJhOWRmN2ZlZmEzNDA5MmFmIGxlZ2FjeS10cnVuaworMjc4NjYgZTE0MDlhYjBmZTY5ODczNWQyY2ZlYWRkOTA2MzdhM2ZmNzYwMTE3MSBsZWdhY3ktdHJ1bmsKKzI3ODY3IGFkNGQyM2YxYmY2ZTZhMmJjNzM4NmQ0Njg1NjdjOWQwZDQwNjVmN2UgbGVnYWN5LXRydW5rCisyNzg2OCBiMzg3NTRmMWNiNjExMjJlYWVjYjJkYWQzZDc1YjcyZmU5OWY3MTIzIGxlZ2FjeS10cnVuaworMjc4NjkgYjZlNTFiMDg2Y2Y0ZDZjYzVhOWUzNjc5MzdkM2ZjN2JkNzAxYmNmZCBsZWdhY3ktdHJ1bmsKKzI3ODcwIDU2NDYyOWQxZjFhYzRhMjBmZTEwZmVmODc2MjA1YmM3NWM0OWE1N2EgbGVnYWN5LXRydW5rCisyNzg3MSAwM2Q4NWQxOTcwNTJhOTEyYzZlZmY5MTk1NGNkZDdiMzM2ZGUzMDIwIGxlZ2FjeS10cnVuaworMjc4NzIgODY5MWVkYTRjMDU3MzM0NzlhMzU2OTFkNTYxYTg0NjY3OTA2N2Q4MSBsZWdhY3ktdHJ1bmsKKzI3ODczIDc4OTlmZDJhZjkxMjVmODY1MTUzOTNmNzY2NmVlYWJjNzlmMDNkZWYgbGVnYWN5LXRydW5rCisyNzg3NCA3MWJhMmU5NjljMTE0MTVkNDBkMTc2Yzc0ZjMzODA1Mzc3YjlhYzY0IGxlZ2FjeS10cnVuaworMjc4NzUgZTAxMjhkNjE2Zjg3OTU5Zjg2YWRlYTdkNzlmMTIzNzg2ZGYxZWI3YyBsZWdhY3ktdHJ1bmsKKzI3ODc2IGYwNWEzMTFkNzk4ODYyNTdlMjdiMjk0MTkyZTdhNTMxZDMzMjBhNTggbGVnYWN5LXRydW5rCisyNzg3NyAxMmFhZjhkNWFkMmJlNzA3NTcyODYyNjA2NjA3OTA1NmVlNDRiMjUyIGxlZ2FjeS10cnVuaworMjc4NzggNGU2MjdkOGNmOWY0ZDJhODQ5NmY0YTM3OWZkYWZlODVmMjA3ZmQxMCBsZWdhY3ktdHJ1bmsKKzI3ODc5IGRmMDYyODY2MmI0ODFlMzg1NDk0NTM5NmE2NmFmNjAxZjk0OGVkN2EgbGVnYWN5LXRydW5rCisyNzg4MCBiY2MzNWEwZjFhNzhlOGNmYjE5ZTBmZjgzOWNiOTkwMzg2ODA0OTMyIGxlZ2FjeS10cnVuaworMjc4ODEgMDg1NDUyNGVjZTAwODQwZGE1NDIzMjZkNDJiNmY3MWU4ZDNjNDg3MiBsZWdhY3ktdHJ1bmsKKzI3ODgyIDRiZmM4YzUxOWI2ZGQ1NGE5NWQ5YmRiNmVjOTE3YzUzMWNkOWIwMmUgbGVnYWN5LXRydW5rCisyNzg4MyBmYjA2OTFmMTBkOTEyYjQ5ZjQzYjg3ZTVjNTBiYWRmODNmNTEwODhmIGFzdC1icmFuY2gKKzI3ODg0IDNkZGFjZTFkMTJhOWZlNTBjNmNlZjRjOTA4YzNjYTA0YjEzYTM3ZWIgbGVnYWN5LXRydW5rCisyNzg4NSA4MDkxYTRhM2I4YWVjMmVmMzJlMTdmOGIyOGVhZGY5NTMwYmJkZjM1IGxlZ2FjeS10cnVuaworMjc4ODYgZWMxYTJkN2FjMDJiYzA0OTIzOTkyZDYzNTk4OTUxYmI3NjkxYmVlMiBsZWdhY3ktdHJ1bmsKKzI3ODg3IDMwMzM1YzY4Yjc4N2Y5MWZlMDYxOGZjY2Q2ZjFjODBjYzgzYTc4ODcgbGVnYWN5LXRydW5rCisyNzg4OCAyNjcwYTVkYjY4NDMxNWNmZTQ1NzNkYzEzM2JhNzVhZjQ5YTM5ZThiIGxlZ2FjeS10cnVuaworMjc4ODkgZGFmNzU3OWMyMjQ4MjE5MmNjZTk4NTQ1YmRlN2Y1ZWU0NjY0ZDVkYiBsZWdhY3ktdHJ1bmsKKzI3ODkwIDZkY2YxMjhkN2UwMzA4YWNmODVmNmMwNjYwZGNmYzRhOGMzNTJjNzYgbGVnYWN5LXRydW5rCisyNzg5MSBhYzc2Mjg3NjliYTUzZTFiYzU2NGE4ZmI1ZGYzOTMzMWQyOWI0YjhjIGxlZ2FjeS10cnVuaworMjc4OTIgMTdhOGI3NGJiZTVjZjA0YzY4YzBlOTQ0NjAyNDc4NTU5OGQ4YmFiZSBsZWdhY3ktdHJ1bmsKKzI3ODkzIGRmZTY4ODRiNTllMGU3ZTQwYmVmNjZiN2QzMDU4MWE2Y2ZhMmE2NGIgbGVnYWN5LXRydW5rCisyNzg5NCBmZTJjZmNlNGU2NTg2M2VkMzE3MmI1YjEzNDU0YjljZTQwZTdiMTk2IHJlbGVhc2UyMi1tYWludAorMjc4OTUgNDg5N2UyOWUxOWNjMDY3YzZiOTMwZjBmZTIzMDNjZTBjNDA3NWI0MyBsZWdhY3ktdHJ1bmsKKzI3ODk2IDg3ZjgyODcyNmZlNmVhYjYxOTU5OGZlZDYxOGExMWNiOTc4Y2UzMzYgbGVnYWN5LXRydW5rCisyNzg5NyAzMjRiMmU3YWY2ODM1N2EwYjczZjkzMjgwMThlMzVmMDVlMGJkMzMzIGxlZ2FjeS10cnVuaworMjc4OTggZmEzMmU3YTY1YTdlOGY4YmVhMzNjOWE1YzI4Mzc3YzQwZDgyY2E5ZiBsZWdhY3ktdHJ1bmsKKzI3ODk5IGRmZTVhNjg5OTc5YmE4MjNjZmJlZDc1MGVhMjE1MWUwNWJkZmY1MjYgbGVnYWN5LXRydW5rCisyNzkwMCBhYmI1MmQ1NmJhNWFhYmM1ZjIwOTdjMmE5NzAxZjhjZTRlNjEyZThjIGxlZ2FjeS10cnVuaworMjc5MDEgMTJkODViNzg1MjYzNjM0ZTdhMjY5ZGE3MTE4MzFkZGE1MWJmNTZkZSBsZWdhY3ktdHJ1bmsKKzI3OTAyIDdlY2I2ZWIxZmU3NzM5NzQ1NzM2NTZlMmJiNGYxMDdhMjhmM2I2MGYgbGVnYWN5LXRydW5rCisyNzkwMyA3ZmFjMTMzZDUzOWZmYWNiMGEyNTdhOGI1YzQ1NDI2NzRhZTgwMjNmIGxlZ2FjeS10cnVuaworMjc5MDQgNTZjZTRjOGY0ZjE2OWYyMWM5YzE3OGQ1MWEwMGI5YzllYmRjNTgwZiBsZWdhY3ktdHJ1bmsKKzI3OTA1IDcwMmUxMTNkMzliMGQ1NWJkYjhkOGViNWMxNjlhYTk5ZTBhNzk1NzggbGVnYWN5LXRydW5rCisyNzkwNiBkOGJhMzczYmYyYjNjNzI3YjQxNjMzYjM0M2U3MDE3MjU1NWEzMDZmIGxlZ2FjeS10cnVuaworMjc5MDcgOTRmZjA3NDM4Mzc3Yjg3ZDQ4YjY1OGI0NjA3YjIwYzUwOTRiYjM3MCBsZWdhY3ktdHJ1bmsKKzI3OTA4IGFlMmZiOGRhMzg2M2U5OTY0MjU5ZGU0ODE3YWU3MWI2YjA2ZGU3NzEgbGVnYWN5LXRydW5rCisyNzkwOSA3NWZkODYyOTAxZDgzZTdmMDMzNjVhYzJmNGZkYjM4N2Q2NjQyZGY0IGxlZ2FjeS10cnVuaworMjc5MTAgOGExMGE3MjFiODRiY2VlY2NiZWJlYWIzNjdhMGJkZDdkMDI0NzU0YSBsZWdhY3ktdHJ1bmsKKzI3OTExIDBjZjRlMDUzOWNjMWY1ODBjM2Y2YmQ2YTY0ODE3NDI1MzI4MzMxOGEgbGVnYWN5LXRydW5rCisyNzkxMiAxNzVjZDBlMDg4YWFjY2Y5M2Q0YTAwMDU2YjM5NDU0MzY5YzUzNmY2IGxlZ2FjeS10cnVuaworMjc5MTMgYWRmMGIyMTVhNTJhZTI1OTA0ZmQyOGQwYjc2ZTk3MzllYjM4N2JhYiBsZWdhY3ktdHJ1bmsKKzI3OTE0IDViZDBmMjQxZWM1YWRiYjkyOGE1ZjE1NzJlMmM5Y2QzOWIxNDA3MTMgbGVnYWN5LXRydW5rCisyNzkxNSBhNzNhNTg5OGJmNDkyYTU2MTJiYTFlYWVhY2FlOWU0YWNhMGY1Yzk3IGxlZ2FjeS10cnVuaworMjc5MTYgYTUzMjRiMDk0OTQyZTMyODU2NzQ0YzAwNWNkZDNkMWExNTNlNjdmZiBsZWdhY3ktdHJ1bmsKKzI3OTE3IDNjYjA1NWFhZTczOTU3ZDgwMjIzNTM3YjhiMmM2NjU1ZTFmMDYwNmMgbGVnYWN5LXRydW5rCisyNzkxOCAxZjAxNzg3MDU1MmU2NTNiYjhkYTE0MTliYTNiYjgxMzQ5MWY2OTE4IGxlZ2FjeS10cnVuaworMjc5MTkgMzJmOTJkNzY2YjgxMzZhYWI0M2I2MmI3MTU2OGQ2MTk2ZmNlMDljOCBsZWdhY3ktdHJ1bmsKKzI3OTIwIDYyZjZiYWJlY2UxZmMzMjQ1NzRkYzJiZTUyNjZlOWEwMzQ1MWJjM2QgbGVnYWN5LXRydW5rCisyNzkyMSAzNDQ0MDA1YjY1MjcwM2QyZmI0MWRiYzkxYTdhOWI1ZDZlZWYxNzllIGxlZ2FjeS10cnVuaworMjc5MjIgOTVkZjg3ZDQ0OTIzYmZkNGNlZmFhMGQ5YTRiNTg1NDg2ZmZkYWZmMCBsZWdhY3ktdHJ1bmsKKzI3OTIzIDk1MGM1YTA5YWQ5OTg5NDE5ZGZhYWZmNGFmMzkwMWMzNGRhNjJhNDYgbGVnYWN5LXRydW5rCisyNzkyNCA4MmM0ODY1Mzg2MWI1NmU4YmMwYzM4NmFhMGNlNDc4ZjFlN2NlNTRjIGxlZ2FjeS10cnVuaworMjc5MjUgMWMyNmViNzY4MjkzNmQwMTkwNzYyYTgxNGU1ZmNiMWY4NGYzZDI4ZCBsZWdhY3ktdHJ1bmsKKzI3OTI2IGFmMWZiNGZlYzJiNDRkNDI2MGY0MDY5YTc2MTU5ZWE5ODJiM2EzNjMgcmVsZWFzZTIyLW1haW50CisyNzkyNyA0MTg5NTYwOWQwODRjZGE3NTA4M2FjOTY1YjZiZjYwMDEzZDZhMzAzIGxlZ2FjeS10cnVuaworMjc5MjggZTk2MWNkMmYyMmU0MjhhNDFlMjVjNzUxMTk5NzQ2NjI2Yjk5YmIwZSBsZWdhY3ktdHJ1bmsKKzI3OTI5IDI4YTVjOGFmYTA1NmU1MmNlYjcwZGUwYTJkYjFjYjEyYzAxZmIyZDAgbGVnYWN5LXRydW5rCisyNzkzMCA4ZDVlMGUzZjY0NDUwMGYyNmVmOGIyOTQ3ZGExNjNkNmQ0N2FkMjU3IGxlZ2FjeS10cnVuaworMjc5MzEgMDZmMWUyZmQwNWJjYWFlMTZmM2NkODNmZDMxNmM5NGFjMjlmNzRjOCBsZWdhY3ktdHJ1bmsKKzI3OTMyIDYxNDM1OGUzYzRmNmFlZmYyYjBkOTg4NmNkZjkxZmZkZTliMzYzMWEgbGVnYWN5LXRydW5rCisyNzkzMyBmZjllZmE2OTI1OTRmYmI4M2ZlYjg1Zjc1NTYxNzk0MGQyZGY5NGIwIGxlZ2FjeS10cnVuaworMjc5MzQgZDBkM2Y3NjBkMDY3NWRlMzc3MDY1NDE5MWYyNzJkMGE2M2E2MWU1ZSBsZWdhY3ktdHJ1bmsKKzI3OTM1IGMwMGRmMjNlODU2ZTVlMmJkMWRiYjE0OTQ0MjMzZDljNzM0YTk1YWMgbGVnYWN5LXRydW5rCisyNzkzNiAwYmQ1MjFlYjcxNGVhY2E4NmY4Y2EyNDUzYWU0ZmI1MzY0YmUxYmUzIGxlZ2FjeS10cnVuaworMjc5MzcgZGQ5OTNkMDFlNzQwNDExODgzODQ0M2NkNWMzMWQzYWE0ODM5NDFkMCBhc3QtYnJhbmNoCisyNzkzOCBiNWI5YjAzMzQ0NjljNDc2ZmVmZjBmYmY2ZDJjNzY5YzIwMjUyOTQ3IGFzdC1icmFuY2gKKzI3OTM5IGQyZjQxYzhhODFmMGQ5NTM4Y2E1MmEzMjBjZGEyZTMzODhlYzYxNjggbGVnYWN5LXRydW5rCisyNzk0MCA5NmZkZTk4MDhlMTVjN2EwMzNkYTczZmVhNGNhZWIzNWJlM2NjNTJiIGFzdC1icmFuY2gKKzI3OTQxIDQyMjg2ZDJlNGQyZmY3NWE2MTgyOGQwMWM0YmFjNWEwOWEyYTgyYjYgYXN0LWJyYW5jaAorMjc5NDIgNTNmMjFmNDM0OTU2NjU2YWM5Nzk3OWZkNDg5ZDI1M2U3YmRmZDYxMSBsZWdhY3ktdHJ1bmsKKzI3OTQzIDRmMDAxMzRiNTYxZGI1MzRhMzJmNWZkNDNiZmFlMjA3NTZkOTdlYmEgbGVnYWN5LXRydW5rCisyNzk0NCBmMjAyNWM2NzZlMjQxNTcyNWY2ZDNmY2MzZjQzMGU5NWZiYzdhYTVjIGxlZ2FjeS10cnVuaworMjc5NDUgZDg3NTA4OTdjODk3Y2FhYjExNDM2ZjlmZDUwMzczMDIyMTA5NDE4NSBsZWdhY3ktdHJ1bmsKKzI3OTQ2IGE2YTRhOTUxYzYxNmNlN2E5M2ZjZjU3ZDI0NTUxMzUwOGQ3YWZjODQgbGVnYWN5LXRydW5rCisyNzk0NyBlMjEzODFmZDg3NTY0MTBhZGQzZTc5ZGQ2YWFhNmQwOTQ2MjFjYmZjIGxlZ2FjeS10cnVuaworMjc5NDggYzk4MDhmNTIxMjBhZmI5ZTI2ZDRkOGRmNjM4M2MzZDk4ZDk4NTVjYSBsZWdhY3ktdHJ1bmsKKzI3OTQ5IGQ1ZjE3ZDg1ZjZhMDY1ODNiNmJmN2FjNjZhYjIzYjc5MjZhYzFhYWIgbGVnYWN5LXRydW5rCisyNzk1MCBkZjRhOWQzYWJjNTZhMTJhN2FiMDhkODQ4NGVlMmY5ODI5MjA3OWE0IGxlZ2FjeS10cnVuaworMjc5NTEgNWQ2ZTQ3MGNlMDVjZDViMTgwZTIxZmI0MTk0ZmYyMzhjOTlmNjZjMyBsZWdhY3ktdHJ1bmsKKzI3OTUyIGJiYWM0ZTNjY2I2MjUyMzY2YjljYmQ5MzBkNGYzM2M2NmIxZTQ4MjEgbGVnYWN5LXRydW5rCisyNzk1MyA0YmY5NDE0OWQyMWM3ZTQ2M2JhOGRhYmExZGIxOTE0OWYzMGM2Nzg1IGxlZ2FjeS10cnVuaworMjc5NTQgZDI2YjYyZjBjNmRiYzM1MmYwYzI1MGY1Yjc0NTA3NGM5M2JjODJlOSBsZWdhY3ktdHJ1bmsKKzI3OTU1IGYwNTlkNTQzNWQ2NTMyZWRlNzA1ODM4NDNlOTIyMzgxNzE5ODczYjIgbGVnYWN5LXRydW5rCisyNzk1NiBiNDI2OWZhNjdjM2U5Y2M0YTBlMWY0NzM5ZjM0MmZhZjY1OTk3NTNiIGxlZ2FjeS10cnVuaworMjc5NTcgYjI1YzMxZTAwOGM4YzdkMjE0OTdlM2Y1NmJhYTY2MWQ3ZWVkOThkNSBsZWdhY3ktdHJ1bmsKKzI3OTU4IDkzNDhmYTIwZjIxNDkyMGQxYWVjYmQzZmJlMzBiYzJhYzdmYzJmNjkgcmVsZWFzZTIyLW1haW50CisyNzk1OSA0NzlmOGY0ZWU0YWQ0NTVhYzM1MWUyYzcyMzViYTI1NDRlZGRmOTBmIGxlZ2FjeS10cnVuaworMjc5NjAgMGJiMzk4NmNmNjUzYTYwNWVkZWQ4NmI5YTUxY2E1OTkzOGMyYzM5OCBsZWdhY3ktdHJ1bmsKKzI3OTYxIGM4ZDY5NGI2NDFmMTkyNDlkOWNkYmM5OTRhY2U1ZTFlMDliMGUyOTggbGVnYWN5LXRydW5rCisyNzk2MiBhYWJjOTc5MDJlMTA0NmFiY2JlNTIzNDU1MDk5ZDc1OWE3MmE2ZWVlIGxlZ2FjeS10cnVuaworMjc5NjMgN2NhNDZlMDgyMDBkZmVlNTNlMjE2YjE3YmUzMTg0NmE2MmYyNTlmNSByZWxlYXNlMjItbWFpbnQKKzI3OTY0IDQ1N2EwNDc4MzE4M2Y1NmY3MDE2MThhZTRkNThiYWQ1ZmJhYjcwZGEgbGVnYWN5LXRydW5rCisyNzk2NSA4YzM4ZWEwOTJmMjA3ZWJmNDcwOWMwYmVjYjU3OWIxMmY4NTI2MGVjIGxlZ2FjeS10cnVuaworMjc5NjYgMTBkYmRlNjk4NzY2OTI0ZGZjZDM3N2EyODc5ZGQyZThkYTlkODY2NSBsZWdhY3ktdHJ1bmsKKzI3OTY3IDgxYzU2Y2JjMWQ1ZmY0ODVlNjQyYTdjYWQ4NTViNGQ1NzAzYTAzMmUgbGVnYWN5LXRydW5rCisyNzk2OCAwMDQ4OGNhOWUwNGY3NTRiODY3MTIxMzIxZGNhMzU4MjE3ZGU1NWFlIGxlZ2FjeS10cnVuaworMjc5NjkgODUxMTIxZWNjMTExMTdhNDc4MjU4OTNjNTA5NWMzN2UzZjAwNTY3MiBsZWdhY3ktdHJ1bmsKKzI3OTcwIDgwZmQwZDM2MWUxN2Y2MDRhZGFmNmYxYTc2MDMwZmFiMzBkZjU2Y2QgbGVnYWN5LXRydW5rCisyNzk3MSA5MjBhZDA5OTMwZGM1MDljOTdkZDJkNjRkYThjMWE2ZGNkMmNlNzIzIGxlZ2FjeS10cnVuaworMjc5NzIgM2U3MThjM2Q1MWVmYWJkMTM4YTFkMTcyYjAxMWE3NGVkNDAyMzVhNyBsZWdhY3ktdHJ1bmsKKzI3OTczIGEzMmNmZjBjNzVkY2M3ZWZiNWRiZTJkYTlmN2FhMzczYzhiMWY4Y2MgbGVnYWN5LXRydW5rCisyNzk3NCBjY2NiYzJjNzhjMDk4YjM3OWZhMTI4YzZlNzNhMzVhMWU1YWFlNzAyIGxlZ2FjeS10cnVuaworMjc5NzUgMjQ0MTE3YWViYmQ1ODViZWU5ZWVhZjVjYTAwNDM3NWY2ZTkzNmVmMiBsZWdhY3ktdHJ1bmsKKzI3OTc2IGNhMjBiZTI0MzgxZmIzMDVmMzI5MTJmNzk0Y2NiZTJkYzg3OTZjNWEgbGVnYWN5LXRydW5rCisyNzk3NyA0MzgyYjIzNzQzOTAxZGU3MjRlYzU4OGJhOWM3ZGVkNTU0MGFmYjc5IGxlZ2FjeS10cnVuaworMjc5NzggOWIxYjJiNThjODY2NjIzNjcwY2E2NDBiNTE5OWVkYTg1M2Q3M2MyYyBsZWdhY3ktdHJ1bmsKKzI3OTc5IDAwZjhkZGExN2VlMmI1MmFmYWRlOTUxNDhjMTA3OWUwZWZmMTRkZjIgbGVnYWN5LXRydW5rCisyNzk4MCBlYzJlMjgzMDBiNzY1OWM2Nzk3MzNiMGU3MWE4ZGE3MDQ4YjNmNDU1IGxlZ2FjeS10cnVuaworMjc5ODEgMjVkNjdjOTRhNmQxYTBjNzMzNWM5ZmQ2ODc1N2QzZmI5OTEwZjg1YSBsZWdhY3ktdHJ1bmsKKzI3OTgyIGMzOWFlZDQ1ZGJlOTlkYzlhMzQ3OGEzZDU5NzQwZDE5MDgyY2E5MTkgbGVnYWN5LXRydW5rCisyNzk4MyA5ZGJhMTIxNjdkYjZmN2QyMjZmYTk0NTJlZjM5ZjVlYTY2ZDkzYzZiIGxlZ2FjeS10cnVuaworMjc5ODQgY2IzMDhhMTNhMWZkMjA0Njg3ZWJjNDZmM2RiY2JlYWVhMTViNWFkZSBsZWdhY3ktdHJ1bmsKKzI3OTg1IGZkMDVjMmQzNWZlNzE5MWYyZGFlZDhlZGJlYTgwZmM4YTc5NTMwNTQgcmVsZWFzZTIyLW1haW50CisyNzk4NiA4MzkzMTVkZTBjYTEwZTJjYjQ5ODUxMzE2Mjc2YzIwZDI4ZjBhNDczIERTX1JQQ19CUkFOQ0gKKzI3OTg3IDFlYTU2OWVhNTFmZDlkZTgwMDg3NDE5NTI2OGNhOWIyMThkZmViOWEgRFNfUlBDX0JSQU5DSAorMjc5ODggZTdiNmJjMmIzNWUyZTQyYmU4NzdhNGQzMTZiMTdhMzQ5NDQ2OTRhYyBEU19SUENfQlJBTkNICisyNzk4OSAzMDczMzJmMzdiN2Q5MzdkNGZlM2I1MTY1NDlmMjI2OGMyZTY5MjIxIERTX1JQQ19CUkFOQ0gKKzI3OTkwIDMyNTdlZmRhNDUxMzMxZTdiY2QzYjYwZDAxNzQwNjU3MzVjODJiMzYgbGVnYWN5LXRydW5rCisyNzk5MSBlNGE4ZTNlNDIxMGQ5NzdlN2U3OTc2NmM0YzY3MzU3NDExODQ0MDFiIGxlZ2FjeS10cnVuaworMjc5OTIgZGE4OGU5OTBmOTJjY2QyZTcxODNkNjM3NzFiMzY0Yzk5YTE4ODdkMyBsZWdhY3ktdHJ1bmsKKzI3OTkzIDZlMGRlZWViOTc4N2QzYjNkN2ZiNzI5NzE1NjNlYzRhYjcxZTE3ZDQgbGVnYWN5LXRydW5rCisyNzk5NCBmOTI4ZjdlZWEyZDY5ODU4NmQzMDRmZDU0Yjc4YWQ5ZmYwMGQ5OWFjIGxlZ2FjeS10cnVuaworMjc5OTUgYTUwNmFiOWJiNGE0MTQ3MDQ5ZWQ3ZDc0MDVlNTkzMmIxOGUxN2E0YSBsZWdhY3ktdHJ1bmsKKzI3OTk2IGEwMmFiYTcyY2JiMjQ5OWU1YTMwMTc3NjZkODcyZjNiMmRjNDI5ZGYgbGVnYWN5LXRydW5rCisyNzk5NyAwMDE2N2IyZWNhY2M1ZWJjMzc5YjZmZmI1MDdhYzUwNTVjNjQ3OTBhIGxlZ2FjeS10cnVuaworMjc5OTggMTJlMTQ2MTcxZjNkYzkwNmI5MWJhZTBjNmM5ZjRkMWZiZTRhYTY5YiBsZWdhY3ktdHJ1bmsKKzI3OTk5IGQ3Y2EwYTJjZTA3NDZiODZiMzEyMjc1NjU3OWJhODJkOGQ1MTY1MmQgbGVnYWN5LXRydW5rCisyODAwMCA1OWQ1MzM1ODBlNzJkNjE1M2M4Y2U0ZDYzMTdkYTA1OWMzZWJlMTUwIGxlZ2FjeS10cnVuaworMjgwMDEgMjYyYWQxNmI0ZGUwOWEzMmIxYzEzNGJjMjUwMDFmN2EwMTc5NTc0MSBsZWdhY3ktdHJ1bmsKKzI4MDAyIGY1ZTI5YzczMzZkZDg4ZWJlMTYwZTQzZTUyYTE2ZGU0MjM5ZTJkMjEgbGVnYWN5LXRydW5rCisyODAwMyA3M2IzMDljZjAyMTM1NTI5Yzk5ZDg0YmNjM2YzNGY5ODYzYmQxNTEzIGxlZ2FjeS10cnVuaworMjgwMDQgMmIwNzY2YWZhYTIyMmQwYWIwNzFlYjA3Y2E4ZjgyNGIzY2IwYTNjNyBsZWdhY3ktdHJ1bmsKKzI4MDA1IGZkNDU3NWI1NmE0ZGUwMThlNjc4Y2U0NzM2NmUyNGU4ODRmOThhYWYgbGVnYWN5LXRydW5rCisyODAwNiA5NDBjNGY1NDZlN2YxN2U3NDgzY2U5ZDQ0Nzk2NTdjMTY0OGY2MjNlIGxlZ2FjeS10cnVuaworMjgwMDcgM2U0ZDQzMjg3MmVhNzkxOGYzNzMyZDI4NTFlYThmZDM1MThhMzQxNiBsZWdhY3ktdHJ1bmsKKzI4MDA4IGI2NzA3ZTE1OTkwOWE2NWY4OGM4YzdmZGMyNjM5ODVlZjA2ZTY4YjggbGVnYWN5LXRydW5rCisyODAwOSA0MzRlYzUyM2YzMmM3ZDYwNmRmMjg2MzBhODA0Njc0MDY2NWJiOGUzIGxlZ2FjeS10cnVuaworMjgwMTAgMTNkZTJmNmYwN2RkZGM5ODE5MDNiMzU2OGM0ODZiNDg0ZTNmMWM5NCByZWxlYXNlMjItbWFpbnQKKzI4MDExIDY1NDJkZmE0MGU3N2M3NjFkMDE0ODA5Njg2YTIyN2E2OTAxYmFjM2IgbGVnYWN5LXRydW5rCisyODAxMiA4YTc0ZjMzNWNmYmFiOWUxMjc3NTQxN2I5NzI2ZTM5ODVhMzc0ODUzIGxlZ2FjeS10cnVuaworMjgwMTMgNzkxYmJlZGJiYmU5ZTM3NmNmOGJkNDk0YjI0YjgyZTczYWM3NjdjMyBsZWdhY3ktdHJ1bmsKKzI4MDE0IDQwZWI4MGRjNDI1MDBlOTgwZTE4Y2FjZDNmNjgzOWIzMTBmNDg0MmMgbGVnYWN5LXRydW5rCisyODAxNSA4YTFjMDg2YWQyMTNhNzY1ZDQxZWU2MDk4MGY1MjJhMzBmYWUxNWFjIGxlZ2FjeS10cnVuaworMjgwMTYgMzVkYmE2MDA3YWMzN2QyZjRkNGQ4YzI2ZWRkOTQ5ZjdhZjU5MTk2MSBsZWdhY3ktdHJ1bmsKKzI4MDE3IGRiYzBmMmYxMTQxNDIwY2RmMjk3OGI1NDI2ZTA0NWYyYzZkZTNhZDUgbGVnYWN5LXRydW5rCisyODAxOCA2NDJkZGNmZTg2NGE0ZmVhZmE4OGVmNmJjZjAxMmI1NWVhN2I0OTQ4IGxlZ2FjeS10cnVuaworMjgwMTkgYjY0ZGI1NTA5NzJjMTQwZjQ0YTFmZmRhOWVlOWNmNjU3OTVjZDg2YSBsZWdhY3ktdHJ1bmsKKzI4MDIwIDczNTQ0MWZkYWI3ZTQ3NGZlNDUwYTE2ZDhhNjZiNDQ1Nzk1ZTA3YTcgbGVnYWN5LXRydW5rCisyODAyMSA4MGIxMjk0NGE0MmIwYWY3MTUwNTc1MjI4NmI4ODg4OTAxYmNlOTNmIHJlbGVhc2UyMi1tYWludAorMjgwMjIgYzlkMjQyOGE2YTg1ZWU4ODVlZWU0YTgyODlhMjFhNjg5MGRmMjg0NyBsZWdhY3ktdHJ1bmsKKzI4MDIzIDExYjI2MmZlZDU4MDljY2M0NTQ4NTJmN2Q1NGJjNmVmNzBhOTBiODQgRFNfUlBDX0JSQU5DSAorMjgwMjQgZmI0NTkxYzA0NzBlMjgwMGZjODg3NTc0ZTFkZmU1MDVhYmVmMzVmMSBEU19SUENfQlJBTkNICisyODAyNSBkNmU1ZTlhMWJjYTA4ZDVjNDI3MjJmZmMzNTg1OGJhMjcyN2YxMzRkIERTX1JQQ19CUkFOQ0gKKzI4MDI2IGI0N2E2YTJhMWU1NjBjMjkxMWU2MGQ3ODI2Yjc1ODY5YzFkNjZmZTQgRFNfUlBDX0JSQU5DSAorMjgwMjcgMTg2OWNlY2QzOTMzNDkyMTA0ZGZjMzgzMzE3NjcyYzJkZDNlNzhlMiBEU19SUENfQlJBTkNICisyODAyOCBmNzMyNTk3Njg0MjY3YTliYmI0ZjkwZDAzNmI4MjMxYjhjZmI5YzdkIGxlZ2FjeS10cnVuaworMjgwMjkgNjQ0NWU0NGZjYjc4MzYwZDcyNWU5YzgwYTVmM2Q0MGJmNTJhMGVlNiBsZWdhY3ktdHJ1bmsKKzI4MDMwIDQ4MmM5NDFkNTkzZjg2MWM0ZmY1MWFhNTlhNGUyOTNlM2Y3N2Y2NTAgbGVnYWN5LXRydW5rCisyODAzMSBmM2U2OWI5YWNjNDA2YjNlMWRmMGQxNDMyMDQyMzIxMjIwMjNhNTI0IGxlZ2FjeS10cnVuaworMjgwMzIgZGRjYjljZTA0NTQ2NDk2MzJkYjI4ZmI2NjQ2NDMzNDdhNzZhYzViZSBsZWdhY3ktdHJ1bmsKKzI4MDMzIDBkZjlhOWMwOGMxMzllOTYxZDNmMjIwOGQyZTEzMTYwODQwOTY4OTggbGVnYWN5LXRydW5rCisyODAzNCA3Zjg5NjdmNTljZjgyZjBmMjIwZDdkZTNkY2NlNzhjN2FmMTExYTcwIGxlZ2FjeS10cnVuaworMjgwMzUgNDNjYWEyMTJiOTU5Y2Y3YjBhOWE4NTcwNGNjYmZiMzI0NTE1OTIxMCBsZWdhY3ktdHJ1bmsKKzI4MDM2IDExMGM2ZWRhZjYyZjM4NThlNGQ2MTFhNmU4MmE5NDQ4OTQ3ZWU3ZGEgbGVnYWN5LXRydW5rCisyODAzNyBmNmE5N2NkM2JhMjRiNDU1N2UwNzNlZTBiYTBlMGI2OWViZTllYzJlIHJlbGVhc2UyMi1tYWludAorMjgwMzggMWViYzEyOGU0ODQyYzI4NGEyYzRjNGI0Zjc3N2NiNjRiMzY1Y2E1NyBsZWdhY3ktdHJ1bmsKKzI4MDM5IDc3ODA5MzUzM2E0NjM5OWFiYjNiMTA3ZjhiNDkxNDA2YTc5YTRmNjggbGVnYWN5LXRydW5rCisyODA0MCA3YWUzZDc0ODY4MDFlN2ZiZWZjY2Q3NzRiYjgzNDYwZDYxYzM5NjM3IGxlZ2FjeS10cnVuaworMjgwNDEgZGE5MDY1M2ZjMmM2ZWJjZWIwYzJkNGVmODcwYjZiYzRjY2ZlM2QwNyByZWxlYXNlMjItbWFpbnQKKzI4MDQyIGYzM2MwMWNjNDE0Yzg5NzU0NTY0MjA5NGU5YmQ0NmVlYzA3YjllOTEgbGVnYWN5LXRydW5rCisyODA0MyBhOWYyNTY3YzJmODM3NjU4MjE3ZTZkY2EzMjc1N2ViMWFmOTk2MWJjIGxlZ2FjeS10cnVuaworMjgwNDQgZmIxZDBlNTViMTUyMWQ2YmFiZGM2OThiMThiMjM5NmUwYWRmYzU1NiBsZWdhY3ktdHJ1bmsKKzI4MDQ1IGJlZWQxYzFlN2M2ZGY2NzcxNzMzZmYyZTI0OWEyOGMwMjJjNWU4MDUgcmVsZWFzZTIyLW1haW50CisyODA0NiAwZDk4NjYwZTM2NTM5NWRkZDk0NWNiMTc2M2E5ZGVlZGJmZWM2N2UwIGxlZ2FjeS10cnVuaworMjgwNDcgYTBlYjhlMzgyZDc0Y2IxMjJiN2IxY2E0NzAwMmMzY2I1ODJhYjc5OSBsZWdhY3ktdHJ1bmsKKzI4MDQ4IDI3ZGEyYjgxYTQ5NmE5MjVlMTExYjQ1YjhlN2YzNjc4ZThmN2MwMmEgcmVsZWFzZTIyLW1haW50CisyODA0OSA3YmEzZTVmYmFhZDgwYzMzMGFkZGM3YzVmNjY4N2Y0M2RiNDVjMmFkIGxlZ2FjeS10cnVuaworMjgwNTAgOGNmMDAzMzhiNzI4ZDM4N2RjY2MxMDllMTM0ZmM4MWRlOTM3M2JiMSBsZWdhY3ktdHJ1bmsKKzI4MDUxIDRiMzQyZWQzMDllMDJjZjliNmJiMjJhNzdkMzZlOTA4M2ZhNmQ1NTAgbGVnYWN5LXRydW5rCisyODA1MiA2OTdkMjIzYTJmNzY2NjAzNjZkMzI1MmQ3ZmM2ZjVkNzI4ODYzZGMxIGxlZ2FjeS10cnVuaworMjgwNTMgZWRmNzU3MjEzYTkyZGIwM2NmODhlNzEwOWFmZTBjOWJkZWQ3YTU0ZiBsZWdhY3ktdHJ1bmsKKzI4MDU0IDIyNGM1MTZiYzExZjFlMTQ0NmVjNzNkNGI5MzM4YjIwMGRmM2YwOGUgbGVnYWN5LXRydW5rCisyODA1NSA5ZDg0YTViZDc2N2ZhOGQwNjU4NjFmMjQ4ZTQwOWU0NTI4MTdiMzk3IGxlZ2FjeS10cnVuaworMjgwNTYgYWI1ZWVhMmRkM2MwMGMwOGQxNDE0ZGJhZjE4Y2IwZDJkZmQ4NGQ0NyBsZWdhY3ktdHJ1bmsKKzI4MDU3IGZkMWI1ZWZhMGNlM2VhY2M4OTMyYzg1MDcyMWQ0NGQxMTIwZTI2ZGEgcmVsZWFzZTIyLW1haW50CisyODA1OCAxYWIyN2MxNzcwZGY1Yjg2OWI3ZGU3Y2EwNTBiMDEwMTFiNTlmMGZiIGxlZ2FjeS10cnVuaworMjgwNTkgZjY3MmUxZGJhZDkyMjQxMWI0MzJjODI4MjExMzZhMWM4NTVmZWQzMyBsZWdhY3ktdHJ1bmsKKzI4MDYwIDE4Y2E0ZTc4M2Y5ODdiZDMzYTZjNTJkZDJlZjU3ZGNiNjBhMWZmYTggbGVnYWN5LXRydW5rCisyODA2MSBlNjFiMTE4ZTljYWIyOTI2Y2I1NGViZmUyMGE0ZGQ5YzI5NGI5MmE0IGxlZ2FjeS10cnVuaworMjgwNjIgOTU1OTE0YjBhNGQ2NDZlNzhiMWFiODBkN2NkMDZlMjI2MDVjZDQ1NiBsZWdhY3ktdHJ1bmsKKzI4MDYzIDhiYzI2NWIwODRkOTdjMWY3Y2ZmM2JmZTRiMjExOGYxZWE0OWIzNzAgbGVnYWN5LXRydW5rCisyODA2NCA1OWQ5MjI4Nzc4YWQ2M2U4YmQ3NjhmMDJhNjVkN2ZiMWNjNDUwNjY2IGxlZ2FjeS10cnVuaworMjgwNjUgNzI5Mjg3ZjdmYzJlNWZhYjAwNDE1MjlkOTViZDQwZGMwNTc4NjA2ZiByZWxlYXNlMjItbWFpbnQKKzI4MDY2IDJmNDExZjJkNzkxYWRlNzY5NjUwMGRmYTc5NjRjMWE4ZTI3NDYwNTkgbGVnYWN5LXRydW5rCisyODA2NyBhNjE4OTNkN2NlZjI1MGNkMzRkYzIxNDhjMGZmODg5MThkOGUwNWM1IGxlZ2FjeS10cnVuaworMjgwNjggYjI2NWU3NmJhYjg4MzI5MzQxYmE4NDQ3YTUyZTljOTgzYjg3NjUzZSBsZWdhY3ktdHJ1bmsKKzI4MDY5IDZhNmQwMmJlMzIxY2NkMTAxODIzNzNjNTBiOTJlMDUyYjZhN2M2MjggbGVnYWN5LXRydW5rCisyODA3MCBkMjVjZjk0ZDIwYjFlYWVlYjA4ODhkYzYyMWMyMjcwOTRjMTM4ZjRmIGxlZ2FjeS10cnVuaworMjgwNzEgNGZiZjUzNDIxMWI5N2M4ODJjMDk4NDRiYzAwNGIxNjgwYWYxMWVjOSBsZWdhY3ktdHJ1bmsKKzI4MDcyIDU3OWYwOWMwZmRiY2Q5MmFkZDg2NjNjNDJiNzYwMzFjNjAzMmY1NTIgcmVsZWFzZTIyLW1haW50CisyODA3MyBiZGJhNzJmZmQyMWJmOWQ2MjY3NGJiMTA2M2JiN2Q3ZjYxZDY2YTRiIHJlbGVhc2UyMS1tYWludAorMjgwNzQgOTVjNDYyM2Y4MTg1MDhmMmZiOTQ0ZjBhNzJmMzBhNTBkMmE3NDAyZSBsZWdhY3ktdHJ1bmsKKzI4MDc1IDcwYjY3NTMxMTdjYzAxYmQ3Zjc3NDI0NzZhMzhiZTBjZDliYTA0YjggcmVsZWFzZTIxLW1haW50CisyODA3NiA2NDdmOTM2Nzc1MGU4NzQwMTMxYzQ0ZDFjYWVkNmE5OGQ4NWY3ODdlIHJlbGVhc2UyMi1tYWludAorMjgwNzcgNjg4ZWVmYmEwODY5YmI1ZDNmMmM4MTZhNTAwZWFjMjAzNTIwMDUwZCByZWxlYXNlMjEtbWFpbnQKKzI4MDc4IDM3OTZkMzlmMGI4MGM4MWM4NWVkYzk3YzZkNGIwYTliOWZjOTU3ZTQgbGVnYWN5LXRydW5rCisyODA3OSAzMjY5YmRkNjU5ODhlZmY4OTc2MzcwODRhODMxYWNlYjViZTQzYTk5IGxlZ2FjeS10cnVuaworMjgwODAgZmVjMGIwYWVmMTRiYTQ4N2UwNjY4NjRhODZmNGViMzk1ZjgzODEwMyBsZWdhY3ktdHJ1bmsKKzI4MDgxIDk4MDc2N2M2Y2Q5NzViNjE3ZTNhMDdjZjFiNmZkOGZhM2EwNWQ5YzIgbGVnYWN5LXRydW5rCisyODA4MiA0NzljYjVmZjJlNjA5YzVhMjE3YTgyOTQwYmZmOTM5M2FiN2MyMzE5IGxlZ2FjeS10cnVuaworMjgwODMgNzFkY2E3Yzc2ZmEyMjc5MmJlOTNmYjkwYzRjNGJlN2U5MDkyNWMxYyBsZWdhY3ktdHJ1bmsKKzI4MDg0IDdiMTBlN2ZmNzk0ZGM1MDAwZmFlY2ExZjMwNjAyZmUxZWQ4MWIyNzAgbGVnYWN5LXRydW5rCisyODA4NSA2ZDI2ZDRiOWM1YTM2YzE4ZTU1MDczOTNiMGU4NzgyZWRiNTI2M2FhIGxlZ2FjeS10cnVuaworMjgwODYgYWVlMThlYTNkMjg0NzY1MzUwN2YyYjFhYjE2OWU0MThhM2RmNDExYSBsZWdhY3ktdHJ1bmsKKzI4MDg3IDA0OTJhZDFhYzYyMzVkMWZhZjNhODQzOTI4MDVjY2MyYWVlNTE4NTMgbGVnYWN5LXRydW5rCisyODA4OCA1Njc3MDRiZmE1OTVhNWFiN2I0Y2U3MWE5NmM0MTYyYjI0MDE3NDIzIGxlZ2FjeS10cnVuaworMjgwODkgMjc0ZTQyYTY5MWUwYzg0MzY1M2ZmOGIyYTI0YzljNmIyYzk0OWNkMCBsZWdhY3ktdHJ1bmsKKzI4MDkwIDM2NDkzYTdjNjI1MzliY2E5OTVhOTNiMTM2NzFmNGM0Y2Y5MzA1MzYgbGVnYWN5LXRydW5rCisyODA5MSBiZTQ3ZGIzODMwN2UxODMxYTZiNGY0N2M2YWU2MjgxZTViYTgxMTExIGxlZ2FjeS10cnVuaworMjgwOTIgOGI0NzAyODE2NDVlNjAxZGYzMmRkMGRkODY1ZTdkMDFjMjAwYmY0ZCBsZWdhY3ktdHJ1bmsKKzI4MDkzIDczNGY4OWMxOTRkZDlmMTAzZWMzMDRiYWNkOWVmODhjNDM1ZWY5Y2UgcmVsZWFzZTIyLW1haW50CisyODA5NCBkZWJjZjcyMDY3ZjA1OTY3YjVkNzU2NDdkNjM0NGQxZjA5ODBiZjA2IGxlZ2FjeS10cnVuaworMjgwOTUgOWM2ZjBlMTk5OTAzNWE0ZjE0NzU1MjYyNzIxNWQ3NWRmYTc0ZDY4YSBsZWdhY3ktdHJ1bmsKKzI4MDk2IDBjZGI2ZTliY2I1MjE0ZGIzODcwZTViOGE2YTE0NTJlZDA4YzM3YWUgbGVnYWN5LXRydW5rCisyODA5NyBhMjhjOWMzMzZhYjcxMTkxNzFkYjdlNWQ2Y2MzNDU5MDM1YzlkNWE4IGxlZ2FjeS10cnVuaworMjgwOTggZTcxYmJiYTBhMGI5NzY2OGM3Njg0MGY0ZDZhMzBkZTliZGIzZDRhNiBsZWdhY3ktdHJ1bmsKKzI4MDk5IDgyZTNmZGIyODE2NDUwYzJjYjVlZGVkMGZjNjgwYzhkNTI5OWMwMTAgbGVnYWN5LXRydW5rCisyODEwMCBhOTg5YTJlYWEyYWMxMDkyNTU4NGIwZDIzZmY3ODM3ZGMxNDA3MjE5IGxlZ2FjeS10cnVuaworMjgxMDEgYmEzMDM4YTI3YzFlMzliNzU1ZjQ4YWRlYmE2YzE1NjMyYmRlOTUxYSBsZWdhY3ktdHJ1bmsKKzI4MTAyIGVlZjczZTg4MjNkNWFlZjkxZDQ5YjdlYzFjNzAxZjk3ODczZDkzMjcgbGVnYWN5LXRydW5rCisyODEwMyAzMWI5ZDM2OTg2MWQ4NDk5N2Q5NWJkMWJhNDU0MDJiNzUxYmUzYzFmIGxlZ2FjeS10cnVuaworMjgxMDQgODBjN2E4MmQ2MTQ0ODllOTQ1MDRmMTY4YmFkNjhmZmYxODBkNjAzZiBsZWdhY3ktdHJ1bmsKKzI4MTA1IDM0MTI4Y2NmMmVlNjE5M2IyZmY0N2VhYjhmYTRlZjNlNzEyMWU5ZWYgbGVnYWN5LXRydW5rCisyODEwNiBhMmY5YmI1NDIzMWIxM2E5YmM3MzdmNWExMDYwNWU4OWUyNTJhMDE1IGxlZ2FjeS10cnVuaworMjgxMDcgNmViOTU4NzE2ZDk3Yzg0MGNlZDJiZWNkNDkzNDMzNTI4MTA3ZGIzZiBsZWdhY3ktdHJ1bmsKKzI4MTA4IDQxODFlM2E0MmQwYTIzZGFiZGEwZjdjZjg5YTA5ZDE0MTJiMDUwYzYgbGVnYWN5LXRydW5rCisyODEwOSA1NjRhYmI5OGRlYjg5YzRlMjlkOWE3YzY5ZmFiNTViMjgzYjdiODM1IHJlbGVhc2UyMi1tYWludAorMjgxMTAgZTViYzQ3MGQxZDFlMWZlMDc2NjY4NmMyNDQ5NWEwYTY2Y2FmNGE5ZSBsZWdhY3ktdHJ1bmsKKzI4MTExIDBkNDZlNGI4OWNhZTdhNGVhMWUzZWQ0YjJhYzllZDA2ZDUxNmFkNDUgcmVsZWFzZTIyLW1haW50CisyODExMiAyZGNkNGQ5MjgxNDcwM2Y5OTFkZjRlYTY4ZmYyYjFkOGRkN2UxNDM4IGxlZ2FjeS10cnVuaworMjgxMTMgYWE4YmQwZGM0ZjhhMTA2ZjA2ODQwYTM3YWU5YTU5NDI3ZTRmN2MwOCBsZWdhY3ktdHJ1bmsKKzI4MTE0IDZjOTY1ODdhMTk3ZjljZGE0MzJiOGY1MjU0YmZlZTBiYTViNGQ5ZjUgbGVnYWN5LXRydW5rCisyODExNSAxMWM3MDEwMzg4MDU2NTE5M2VhNGM1ZjA3OWU3YjIzNjZkZDJmMWU5IGxlZ2FjeS10cnVuaworMjgxMTYgNDA2Nzg4Y2FlZjZmMjZlY2YwZDUwNzFiZjk5ZmViZWMxNjQ3NGE4NCBsZWdhY3ktdHJ1bmsKKzI4MTE3IDk0MjljM2NmNDJhNzEyYmY0MGEwYjhmMTY4ZmFkMGU4NWYxODdmZmMgbGVnYWN5LXRydW5rCisyODExOCBkYjI3YTQyY2NmNDhhYzMwZWFhMTcyYjE0MmRmMjY4ODI5OTJhZTVmIGxlZ2FjeS10cnVuaworMjgxMTkgNzQxNDNkYjZhZTJmOTdmYjZhNTQwYWY3NThlYTYwNTdkZGUyNjRkYyBsZWdhY3ktdHJ1bmsKKzI4MTIwIDRjNzQ2YmEyNGRlMjFjODEwYjUwYTc5YWJmMDU3Y2UzMTY4NGVlZTkgbGVnYWN5LXRydW5rCisyODEyMSAzNDNlNjRjOTJlYjI4ZTA5YjVlMGM3NDk0Mzk2MjIzOWJmMGNmYzQ0IGxlZ2FjeS10cnVuaworMjgxMjIgMWQzZDk4MGEzMTg2MDQxYzA2MjM5NmI5Y2Q1N2Y5OTI2YWE3YjlkZSBsZWdhY3ktdHJ1bmsKKzI4MTIzIDEyOWQ4ZDJlMTkwNGM3MjY5NDRjMWQ1OWM3MWNjMmU2ZTA3YTVjNzYgbGVnYWN5LXRydW5rCisyODEyNCA1Yzc3MzE2YjIxZjcwZDc1OGNkYjY1YzVkODhhMjBmZjIzYzg1ZDE4IGxlZ2FjeS10cnVuaworMjgxMjUgMzc0Zjg3OWM1ZDhiZDk3ZjBhYzRiYmY5Y2M3NTFiYTQ0NmExNDZkNSBsZWdhY3ktdHJ1bmsKKzI4MTI2IDJkM2M0YTdhZWMwYTcwNmRmNTI1MmI2NDU0ODNiNGIzODljMTIxOTkgbGVnYWN5LXRydW5rCisyODEyNyA1MTBlNzNhZTNlOWU5ZDEyM2VhMzM2MDJlZWYxNDkzNzYxM2ZlNjE4IGxlZ2FjeS10cnVuaworMjgxMjggOWUyZjUzOTYzNGU4MGExZWQ2M2NjODYxZTA5MTJhMDgwZDRlZTBiYiByZWxlYXNlMjItbWFpbnQKKzI4MTI5IDExMjVkOTQ4OWRmYTQwMDdiZTY3YWJmNzc5ODg4ODVhZTc1M2U4YmIgbGVnYWN5LXRydW5rCisyODEzMCA2OTA3OWFjN2M1MTJlNTYwYTgxY2U0MDcyYWI2M2ViNmNiMzA0YjM1IGxlZ2FjeS10cnVuaworMjgxMzEgYmJkNWY4YWY1ODhhYzEwY2YxNGQzMGFmNzA5Njk0MGZhNWQ5NjczZCBsZWdhY3ktdHJ1bmsKKzI4MTMyIGI1NjQwZTc0YWE1YzI4YmVmYzE5YmNmZmNiYjQ0NmE4OTE1Mjc1N2UgbGVnYWN5LXRydW5rCisyODEzMyAzYjhhNzA3YjQxYzQ2MmYwZDkwZTZmZTA5YjBkM2RlYzdkMDY5NWNiIGxlZ2FjeS10cnVuaworMjgxMzQgYjJmN2RmNDY3NzIyMWNjYWRhZGM1OTM2NWFlYWNkZjBlODVkZjQ3MiBsZWdhY3ktdHJ1bmsKKzI4MTM1IDhkODUwZDU4ZjEwOWM3ZjU3ZWQ0N2FjMmM4NzAxNThjYzBjNWRlOTUgbGVnYWN5LXRydW5rCisyODEzNiBkNzE1Y2E5ZGIzYWFhMmQxNGMwODZhMjk1MWZmMmFjODMzYzhkZjYxIGxlZ2FjeS10cnVuaworMjgxMzcgMDlmZjBlZDMzZWZjYjkxOTdlYTg0YjdlNGNmZDliMjgyZTY3MGY2MSBsZWdhY3ktdHJ1bmsKKzI4MTM4IGIwMjczZjM5N2NmMTIyZGJhMjMyYTljMzI5ZmVkMGEzMWUyMTA0NWYgbGVnYWN5LXRydW5rCisyODEzOSA0OTIzMTYwZTA3MDdmN2MzZTRmZTAxYzU5NmQ1ZTU0ZjNiMDFjMDFjIGxlZ2FjeS10cnVuaworMjgxNDAgYjBkNWZiNTc3YWI2MDFjZGEzOGJhZWY0MjRmYWFmOTg5NGUyNWIzNiBsZWdhY3ktdHJ1bmsKKzI4MTQxIGZmMDVlZWYzYTZkMWViMGQwYWM1MDM4ZDFlOGYxMDYxMzM2NGE4MjMgbGVnYWN5LXRydW5rCisyODE0MiBlYWE4NzYzMmIxZThlZGY4ZTJiZTgzZjMzZTkwMmQyNDJkZGU2ZGM3IGxlZ2FjeS10cnVuaworMjgxNDMgNTY1NjA5YmI4ZDg5OGQzYzM3NWI2MWU1ODM4OTg0MzllY2YzMDYzOCBsZWdhY3ktdHJ1bmsKKzI4MTQ0IGVlYzY4MzI4MThhMzcwMDllOGQ3MGIzYmI5M2I0YTA0ZjU1M2EyOWUgbGVnYWN5LXRydW5rCisyODE0NSAxMDM5MWQ1OGQxODQxMWUzNzY0MDI0MjY4MGNmMGRiOGVmMDJjMDNjIGxlZ2FjeS10cnVuaworMjgxNDYgZTc1Njg2N2FjZTgxMGM4ZmJjZjU5OTU5MGMyNzdlMjZjMWVhMDFmMyByZWxlYXNlMjItbWFpbnQKKzI4MTQ3IGM2NTlmMDRlZTQ5OTM2OGQ1NDYzNjAxNWQwY2VkYTNlYjU0MzFmYjAgbGVnYWN5LXRydW5rCisyODE0OCA2ZDk5NzRiNDVmZWExMzMzOTQ5ZGFkNjY2ZjU2OWNlYmM2MTg5ZWRlIGxlZ2FjeS10cnVuaworMjgxNDkgMWEzMjcwZTI2YzE2MmY0OTlhMGYxNjQzNTNmODY5MjJmMWY5MjJhNiByZWxlYXNlMjItbWFpbnQKKzI4MTUwIGJhMDM1ZjRiNDdjMTU2MDJmMTE1NDA3YzQ2NTM3Njc4Y2FhYTBjM2UgbGVnYWN5LXRydW5rCisyODE1MSA0OTE2OWQwMGFiMTgyMjQzYzk0ZWM5ZjdkMGJlZjI2ZGJhNDhmMTY3IGxlZ2FjeS10cnVuaworMjgxNTIgMTllMDEwZjc5MmEzODNlMmVjYjczNTlkZTAxODE4OThiZjc3MjEzMyBsZWdhY3ktdHJ1bmsKKzI4MTUzIDE4YzM1YmI1ZmUwNzQzZmY1NzFjODAyNmQ0ZTdiOWE3MTk5YWE4NTQgbGVnYWN5LXRydW5rCisyODE1NCBhNDM1MTk4ODdiMTc5NGQ3MDE3ZTFhNzE3OGJjYWU3OWFiYjkwNDg2IGxlZ2FjeS10cnVuaworMjgxNTUgYzI0OGJlZTUyZGM2YTc4ZTlkOGFhMDYxMzk5NWNlNGRiMzllM2U3ZCBsZWdhY3ktdHJ1bmsKKzI4MTU2IGRiZjZlNTYzMDIzYjlkNGY2NzU1YjdlZmVjNmRkMmE1NjUwNDZlNTIgbGVnYWN5LXRydW5rCisyODE1NyBjMWViNjY4NTI1ZTExY2U0N2ZhOTQ3YjEwMDk5MGQzNGIwM2M0ODlhIGxlZ2FjeS10cnVuaworMjgxNTggMjdhZTk3OGJlZTU4NTczNDI5YTk3NjYyMTBkMGQ1Mzg5YzBlOTgwMiBsZWdhY3ktdHJ1bmsKKzI4MTU5IDhhYjMwMzM3NWIzMDVlODM4ODU0N2UxZDRjN2VjYTg0Njg3ZGU3NTQgbGVnYWN5LXRydW5rCisyODE2MCBjODhkMDg0OGM1YzkzMGMyNmMwMGRiYjExZjU4MzExODIwYzlmN2MxIGxlZ2FjeS10cnVuaworMjgxNjEgOWMyNWFhMTNjMzZlMWM5MmI5MDRlZjAzMGI3OGJkNjU3N2M4NzA2ZSBsZWdhY3ktdHJ1bmsKKzI4MTYyIGI1MDQ4MzU2ODVjMzRlYTczZTcyMGU2NjgwMDM4YThkYjg5MmQ4MmQgbGVnYWN5LXRydW5rCisyODE2MyAyN2VjYTQ3NjY5MzdhZWY0Y2JlMmZiOWVkZDk5YjU2MjM0ODlkMDRiIGxlZ2FjeS10cnVuaworMjgxNjQgM2QyMzM1MDk0Yjg4YzE3ZmE2YjVmNmQwODU0OWRjYzQyYjI1ZmI4ZCBsZWdhY3ktdHJ1bmsKKzI4MTY1IGRjZmFiZTY1YzIyZTViMmI2OGNlMTU1M2FlMDcyNDllNWU5ZjhiYzMgbGVnYWN5LXRydW5rCisyODE2NiBlMDQzMWQ5YzQ0NzQyMDI3ZjcyOGI1YzMyNjBlYmI5Yjg0OTRjNWIyIGxlZ2FjeS10cnVuaworMjgxNjcgY2NmNjZhMWFhMGI4NDQyOWQ1NTQ4ZDJiNTNmNjAxOWQ1MTcyYWQ4MCBsZWdhY3ktdHJ1bmsKKzI4MTY4IDVlZDdjOTc3ZDJhOTZkYjZkNDAwY2Y5ZmE1ZDZlNDg3ZDFlZTNjMjIgbGVnYWN5LXRydW5rCisyODE2OSBmMGJkNWNkNGIxNzA2YjMzOWYwYTEzN2U0YWVmMjllNmM2MDkwYzFiIGxlZ2FjeS10cnVuaworMjgxNzAgNGNhZmQ5ZGJjOGI0NzkxNmU5MjM1NjQyMzhhYTkzNmViYTMwOTA5ZSBsZWdhY3ktdHJ1bmsKKzI4MTcxIDU4ZWE0MjBkZGM1ZWVhZGUwZTJmZmJjYmEwNGJjMjRhMGYzM2Y0NTcgbGVnYWN5LXRydW5rCisyODE3MiAyNzIyMDU3ZmZlODYwMTA5OTc0NjEwYWM2MTZjNmI0MzYyNjJiOWVhIGxlZ2FjeS10cnVuaworMjgxNzMgYWNiMjU4NTQ1YTVjMTI1NDZiNDUxOWMwMzQ1NDQzNjkyOTY3YWQ0MyByZWxlYXNlMjItbWFpbnQKKzI4MTc0IDBhZmFjZjVkYzQyZWFiZjhiMGMyOTlkMDE3ZTIwOGE5MjMwM2U2NWUgbGVnYWN5LXRydW5rCisyODE3NSBkNzViZDllNWM0ZDljM2Q4NGQ1MzE4NTAxOGQ4Y2U0YTE2ODUxNTE0IGxlZ2FjeS10cnVuaworMjgxNzYgMTgyNDk4M2ZkOTRhNzQ0ODQ4YTMyZDQyYzlhMGEzZjUzM2U1MWZlZSBsZWdhY3ktdHJ1bmsKKzI4MTc3IGM2MGU4OTVkMTEyNWIzNGRiMjgxMzM0Yzg1YzFlOWRkZWQxMTY5ODkgbGVnYWN5LXRydW5rCisyODE3OCA4MDFhNDRhYjJhYWU2NzIxODlkYzc4ZTQzZTNlM2M2NWM5YWZiMWJmIGxlZ2FjeS10cnVuaworMjgxNzkgOWU3ZWMyZjVhMWJkMzczZWJiODFiY2I4MmIwZTE1NjEwYmZiNGI2MyBsZWdhY3ktdHJ1bmsKKzI4MTgwIDZjNmRmNjkyMzZiMWQyOTVhODY2Y2M5ZTI3ZWRiYTA2MzNiMzg3ZmYgbGVnYWN5LXRydW5rCisyODE4MSBmZTM0NzJmMmY4ZWI3MjJkNWVlMTM4OTFmMGZmOGQ5ZDg5ZDczZmQyIGxlZ2FjeS10cnVuaworMjgxODIgNjk2YTI4NDU2OWU2NGNiOGExMGY2ZDM3ZjlhMzY3N2M1ZWFkZTE5MSBsZWdhY3ktdHJ1bmsKKzI4MTgzIGYxZDE4ZmNkNTZlNjk2Mjg1OTkyZGQyNjFkZDI3NjJjMWI1MGQyMzQgbGVnYWN5LXRydW5rCisyODE4NCA1M2NiNzE2Mzg4NDFlNmRkODgzOTUyNmQ3NWU4MjU4OWRmNTI5MjVlIGxlZ2FjeS10cnVuaworMjgxODUgMWZlMDY2NTVjNTBjOTU5ZTNlZWFkNDgxNDNlYjY4NWUxY2JlMWVlZCBsZWdhY3ktdHJ1bmsKKzI4MTg2IGZhZTM4NmQ1ZTM1NDU2ZTVhYjE5ZTE5ZDMxOGY5YjFhMTVkNmFhNGUgcmVsZWFzZTIyLW1haW50CisyODE4NyBjMjM4NTNmN2ViZWI5ZTA1Y2ViMzU4Y2JlYTExYWEwMGMxYTZlMDZkIGxlZ2FjeS10cnVuaworMjgxODggMDFkNmM1MTQ2ZmY5YWVjYTJmZjMxMDc0Y2RkZWYwZWI1YmU4MDM3MiBsZWdhY3ktdHJ1bmsKKzI4MTg5IGNlYzQxZTM3NjFhYzNlNDM0OGM1Y2ZkODM3MWQ2NTJhZDYzYTFhMzAgbGVnYWN5LXRydW5rCisyODE5MCA0ZGU5YWMwZTQxNzM2NjFiZTFmMWRlMzIxMTQ2OWNiMGZmZTFhMzQ2IGxlZ2FjeS10cnVuaworMjgxOTEgZjBkNjNhYTFkZmM3ZTkwOWEyZDAzYWEyNmE3MDhkZjNlNGI2M2RiZiBsZWdhY3ktdHJ1bmsKKzI4MTkyIDBmNjFlMDc0MTQ3ZmIxYWFmY2EyNDc4MzVhNzcwZDIwMGRhNjY0MTIgcmVsZWFzZTIyLW1haW50CisyODE5MyAxZmQzODkwMGY1M2I4NjEwZWU5ZjIwZmZiMzZhYTQwMWY4YzU4ZDM1IGxlZ2FjeS10cnVuaworMjgxOTQgZmNiZGUyMjY1NDVjYzM4YzI2M2I1YzM3NTQxNTAzMzY1YzQ0N2Y1YyBsZWdhY3ktdHJ1bmsKKzI4MTk1IDgyNTk0OGMyMWYwZGMxMzg4NWNiODEwZWIzMjE0MzY1NjU0M2I2M2IgbGVnYWN5LXRydW5rCisyODE5NiBkYmY0Y2M1NjA4OTg4M2UwNzljNzA4ZTNlNjhkNjc3ZGYyZTM2Mjc5IGxlZ2FjeS10cnVuaworMjgxOTcgNGM0NmIzZWRhYTU4N2MwZTFmNzUwYjM5NGI5MDEyZDk4MzNkOWQ3MCBsZWdhY3ktdHJ1bmsKKzI4MTk4IDE5NTFiMmM2NjA0NDM4YjEzMmZiMTgzNzhmOGYyMDJmMGU4MzlmZjMgbGVnYWN5LXRydW5rCisyODE5OSAxYzYzZDMwODI2NTY5ZWExNzQ2NWI5MDVlMTg4NjljYjdiMTJkMWEwIGxlZ2FjeS10cnVuaworMjgyMDAgNDUyZDZhOTE2MTk2MjQ2M2Y1NjVlY2Q5MWE0YzYyN2Y4NWNlOGNiNyBsZWdhY3ktdHJ1bmsKKzI4MjAxIGRlNzFlNmZlNjRiMDUyNTk0OWQzMjk1OTljMmJmZGNlNjcyZTJmNDAgbGVnYWN5LXRydW5rCisyODIwMiA2YTllYTBjMjJjZWExZjlhYjEwODlhYTg1MDk1M2QzZWUxNGI0NmMzIGxlZ2FjeS10cnVuaworMjgyMDMgNDYxYWZkYjVjYjllZGY2MzA2ZDNlZTg3YWUzMjc4MDZkZDZkNGMzNiBsZWdhY3ktdHJ1bmsKKzI4MjA0IGQ5ZmY5N2NlNzViYmVkMWU3NjczOTc4YTEzNzBmYzdhZDE0NjYzNzEgbGVnYWN5LXRydW5rCisyODIwNSA5MzFmYjM3MDBkMGJhOTFiOTA1ZWNkMTI4YTc4ZTE3MGE5NTY3OGEwIGxlZ2FjeS10cnVuaworMjgyMDYgODYyNjk1YjkyMGZkZDg4ZjhhNmIzNzdlMDIzYjhkNzMxOGY5ZDRmMSBsZWdhY3ktdHJ1bmsKKzI4MjA3IGE2MmNlZTRlZWQ5NjZmMWZjMmQzZDkyYzlkYzRlNTE0NGNkZjAwMTYgbGVnYWN5LXRydW5rCisyODIwOCAxOGNiYWRkODA3MTI1YWVkNDJiMThhMWU3YmJhNjAzYmNkNTM1YmVmIGxlZ2FjeS10cnVuaworMjgyMDkgMzBjZmY5YzFiZjY5M2MwOGNlYTJhOTZlZDNlMTkxN2Y0NzIxNjY4MyBsZWdhY3ktdHJ1bmsKKzI4MjEwIGYxNDdiNTk0NDI0NDY3ZjE0Mjc5Mzk0ODU3YTQ4ZWU1ODRlMzgzMTMgbGVnYWN5LXRydW5rCisyODIxMSA5YjA2ZjQ0YmQ0YTM0ZDg3M2Q2ZDVjMzU0ODY0MThmNzJmNzk5Yzc4IGxlZ2FjeS10cnVuaworMjgyMTIgNjg1Y2Q1MmM0YzQzOGMzZmY1NTQ3MDcwMjU3NTBhYTFiY2IwZTQ5YSBsZWdhY3ktdHJ1bmsKKzI4MjEzIGFiNjNhZjNlYzM0OTVjYmM3Yzg5MDNhMzFjNzRiODBjM2Q2MmEyYzUgbGVnYWN5LXRydW5rCisyODIxNCBjNzVjZGM0NzFiMjI0NGE4YjNhN2M1ZTFjZTk0YTFhYTNlNWYwYjljIGxlZ2FjeS10cnVuaworMjgyMTUgN2NlODJlOWQwOGM3OGE1MDU5MGJmODBmYTIyMTlhYTQ5NGI2NzU5MyBsZWdhY3ktdHJ1bmsKKzI4MjE2IDU4NjIzY2U5NGQ0MDZjNDkxNGQ1OWRlNTA1ZTc4OWNhY2E5NmE1NjkgbGVnYWN5LXRydW5rCisyODIxNyA3NGVkNDU3MjA4YzFhMGY1MzQ4OTdjY2Y4NjNhNTQzNGFjZmYwYWZlIGxlZ2FjeS10cnVuaworMjgyMTggN2I3ZDg4MjBhZTM4MGYwOWU2MGJiNmFjZWUxOTNkYzFmNmQzMTk3OCBsZWdhY3ktdHJ1bmsKKzI4MjE5IDY0MjBiOTdlYjU5ZjE3YzExYWJjYTRiNDc5N2E4YzI4Mzc0MjQ5MWQgbGVnYWN5LXRydW5rCisyODIyMCA1MGZhYTY4MzVkZGM0MTc5OTQyMTAyMjE5N2I4MWFlODc2ODhlNWVkIHJlbGVhc2UyMi1tYWludAorMjgyMjEgYzQ1NjQyZTFkY2E5M2M1MzVmMmY1NjcwZTMyOWM1MWU0M2NkYzdjMSBsZWdhY3ktdHJ1bmsKKzI4MjIyIDNhZThlM2ZmN2UzZjM0MzdjYzZlOTFjYjhiYjJkZWY4MjRiMWUxYTkgbGVnYWN5LXRydW5rCisyODIyMyAzMWQyODYwMDg5ZTYwMGI2ZjRiMjFkNTg5NjEyOWQ4M2I0NTRlYzFjIGxlZ2FjeS10cnVuaworMjgyMjQgNGU0NGZhYmUwZmEwMTdiYjg1YjI1MDFjNDIxNjgyMTBkOGIzZWRmMiBsZWdhY3ktdHJ1bmsKKzI4MjI1IDAxMTEzOGI1ZjM4OWEyODQ4ZTI1ZWI2MjEzY2U1N2ZkMzRiZTg5ZGQgbGVnYWN5LXRydW5rCisyODIyNiBhZTljOWY5MGI0YjAxYmZhMGIxOTExYjU5NzdkMjVkNmM5OGM4NzNhIGxlZ2FjeS10cnVuaworMjgyMjcgZDNkN2RlNzAzYTIyZGFhYzhkOWQ5NzI3ZDY2ZjlhZWFhMjg2ZDE5YiBsZWdhY3ktdHJ1bmsKKzI4MjI4IDU4OGQxNDVjNDRkZDllNmM5NjE3ZDllNzIwMzZmNzkzMWZmNDYwNjQgbGVnYWN5LXRydW5rCisyODIyOSA3YzkxZDMwM2M1NjNlYmU4NmE4MWQ5NWVhNmU2ZjRjZTg1YThhYzk0IGxlZ2FjeS10cnVuaworMjgyMzAgYzAwMWU1YTE1MzY5ZjM3YTdiYTEyMWUyMDk3ZjZhZTg2MjgwODI5NSBsZWdhY3ktdHJ1bmsKKzI4MjMxIGE3ZGJlNGU3ZjVkZWRjYzJmMGZjMzg1M2MwNzBlZWY0MjYzYmU4ZmMgcmVsZWFzZTIyLW1haW50CisyODIzMiBlNWEwN2NjODE1NTkwNTg0YzVhY2EzZjFhYmZkNGJlOTJmNWZkY2Y5IGxlZ2FjeS10cnVuaworMjgyMzMgNGNmNTAyNzE2ZDE1ZDUzZmVmZTVjZGFhYWIyYzgwY2UzMWNmODA0NCBsZWdhY3ktdHJ1bmsKKzI4MjM0IDMxZWUzMmMyM2QyOWM1OWY5ZjMxMDMzZmI3ZTM1YjUxMTQyM2Q2ZGEgbGVnYWN5LXRydW5rCisyODIzNSA4ZTNlMGUxMWYxNGNhY2EzMzM1NDdhYmVkM2ZiYTRkMzZlNzliZTE0IGxlZ2FjeS10cnVuaworMjgyMzYgYTYwMmU0ODc4YjRlY2QwY2FhYjM5NDU5YzQyZGY0OWRiY2ZhOWZmZSBsZWdhY3ktdHJ1bmsKKzI4MjM3IDQ1M2M4OGY5NjNlYzMyNjM4OGU4NWYzNWQ1ZmIzOGYwZWVhMThiZmQgbGVnYWN5LXRydW5rCisyODIzOCBjYTU4ZjVhNDU1OGI4ZmE5MjhjM2QyZTBiYTM2OTE0Yjc0M2ZhZDFmIGxlZ2FjeS10cnVuaworMjgyMzkgNjRmNGRkNzcwYzY3ZGE2NTA5YTkyMTg0MThmODRjZTI3NGZkNWJjZCBsZWdhY3ktdHJ1bmsKKzI4MjQwIGUzOTlkMGE4NzViN2UxZmYzODkyNGNkZGQ4ZTQ3M2I4ODgzNmE2NDIgbGVnYWN5LXRydW5rCisyODI0MSBjMDA0YjJiY2Q1NDIxYzQ0NDdlMzQ1ZWY5ZWU0OWRmMWVlZWM5MDNiIGxlZ2FjeS10cnVuaworMjgyNDIgMTlmMjViY2Y1YTAwMmVkMWJlN2JmZWMxOTQxMzFmZDU1ZmMzNGIwNCBsZWdhY3ktdHJ1bmsKKzI4MjQzIGFlYTY4Y2IzNjg1OTYxMzRjYzJhNTFhMjMxZWU2NWJhOWIxN2FhMDEgbGVnYWN5LXRydW5rCisyODI0NCAxN2U5NWNjMDZmNjkzYjA2YzhkY2Y4MTJjMWY2NGMxZDdmY2YyOGJiIGxlZ2FjeS10cnVuaworMjgyNDUgMmZmNDI2OGYyNWRjNzM4YTk4OTYwMjA1NjZlZWYxYjJhYjQ0NzEzMiBsZWdhY3ktdHJ1bmsKKzI4MjQ2IDNhZjhkODFkN2Y4NmU0OGFmOWM4M2QxNTkzMjFjYjY4M2UxNmI0MjAgbGVnYWN5LXRydW5rCisyODI0NyBjOWFmODc1MDQ4ZTcyOTZiNTBmNGI3MWI3ZmFkNzIwYjUyYmMzMDYxIGxlZ2FjeS10cnVuaworMjgyNDggMTFjMWNjOTdiODdhMzFmNmY2MzVkZmE1MTNlYTI4MmUyOTA3NWI3ZCBsZWdhY3ktdHJ1bmsKKzI4MjQ5IGNmNTkyOGZhYjEwOGRlOWZiZTAyNjMyZDA3MTc2YzcxN2MyYjNhYTcgbGVnYWN5LXRydW5rCisyODI1MCA2OTM5ZDcyMTgyZTZjNDk5MWNjNzRlNTRjNzRjZTUwMzQ5NzM4YjVlIGxlZ2FjeS10cnVuaworMjgyNTEgMTBhNGVjNDU1NDlkMGQ4OTQ5MTBkZGE5ODE4Yjk3ODgxOTM1NDVlMiBsZWdhY3ktdHJ1bmsKKzI4MjUyIDg3M2YxMmY2OGUzYjEwMTQ5YmNkN2YzZDk4ZDI5NWY2ZmZiOTljZTcgbGVnYWN5LXRydW5rCisyODI1MyBkYWNkMTBkNDZlNTI5NDA1YjhjZjg0ZTljZGRmZTA5MDJmNDZjZjllIGxlZ2FjeS10cnVuaworMjgyNTQgM2M5YzU2ZDk3ZTU1ZTcyM2I2ZTczYjgzYjE3ZGZhY2U1YWIyYjhkZiBsZWdhY3ktdHJ1bmsKKzI4MjU1IDhhYjQ2ZGYzMTgyZTc5NDMzY2ZiMjllNzEwODJhMWVjZjdjMWFkMGQgbGVnYWN5LXRydW5rCisyODI1NiAzNGNjOTg4OTJlODkyZTY3MzdlZTFiMzE0Mzg4MDJlNDJjNzFlMWY1IGxlZ2FjeS10cnVuaworMjgyNTcgYWQzNjFlMWQ1NGJiYTNlMmY0YjEyNTAzYTZkZmRjNGE0MDE0ZGZhNyByZWxlYXNlMjItbWFpbnQKKzI4MjU4IGU5ZGQzZTkxZTY1MzEwYjcwNzg5ZjA5YWY4MDc1YzNhNzE2MjhkODcgcmVsZWFzZTIyLW1haW50CisyODI1OSAxMzZiODUzNjIyY2M5MjM0NzY5NjA3N2FlMzJkOTQ3MGQ4OWZlMThmIGxlZ2FjeS10cnVuaworMjgyNjAgYmVkNWQ1ZTUzNmJjMGNlYzJiYWVjNDFjM2Y3YzRkZmRlODUxZjE0YSBsZWdhY3ktdHJ1bmsKKzI4MjYxIDg3NDQ4YTIyOGNjYTJiZWNiMjcyYjM4NTY2OTNjZjdlYjlhMjIzYzYgbGVnYWN5LXRydW5rCisyODI2MiAwZWY2YzJhZDA3NmIxMzM5MGQ2OWI4NWYxOGFhYjAzOGI2ZmZiNmUzIGxlZ2FjeS10cnVuaworMjgyNjMgNTkyNDA2ZTBjOWIwMTliNjY0MmFjNGIwMmQ2ZDk4YmI5YmEzZWY5NSBsZWdhY3ktdHJ1bmsKKzI4MjY0IGYyNDQ3Njg2ZWM1ZWJlN2YxOTlkN2VlMDk2MGNmOGNmN2JjZDVlNDMgbGVnYWN5LXRydW5rCisyODI2NSBlNDVkMTYxMWU4NjlkNjQwZGQ1MTM3ZTkyZDM4YWZhZTMxMzI5YWI4IGxlZ2FjeS10cnVuaworMjgyNjYgNGU3OTVmZTlmNTRiMjFiOGZlNDAzZTMxZmQ5YTUwZWYyZmQ4M2UwYyBsZWdhY3ktdHJ1bmsKKzI4MjY3IDViNjU2YzNlMTMyYjg2NzQxY2U2YzVhMjMzMjZjYzdhNTEyNzcxYjcgbGVnYWN5LXRydW5rCisyODI2OCBhM2ViZDEyMzNjMDBlYWJmOTA5YmU4MjIyM2ZmYmQ1ZjE4ZmE5MjVlIGxlZ2FjeS10cnVuaworMjgyNjkgZTUwMTRhYzk3YmExODc5YTZlNDk0NjU5ODM0NDY1NDViZWI5NGJiZiBsZWdhY3ktdHJ1bmsKKzI4MjcwIGI1NGNmYTk4YjY2YjliMzRjNjM0NzI1YjhmZjM1MDA5YTAyNDAwZjcgbGVnYWN5LXRydW5rCisyODI3MSBmMGRiZDViNDlkOGEwMWY1MTk3ZDEwNmM0MWRlZDhjOTczNDBkNDIwIGxlZ2FjeS10cnVuaworMjgyNzIgMjU1ZDFkM2U2NmEzYWQ5YjJkM2JiMWExNjA2ZGJmMWFhYzQ5ZDRlMSBsZWdhY3ktdHJ1bmsKKzI4MjczIDIzMDYwMDFmNmVhYTM1MGZhMDU5NzIzMWI2OGJkZTQwYzRkOGM0MjEgbGVnYWN5LXRydW5rCisyODI3NCA5Y2E4OTY0MjMzNzQzMmNkMzhhYzNjN2I2ZWM2ZWFmMmJhOTg0MDA0IGxlZ2FjeS10cnVuaworMjgyNzUgZGYyMzI2YTQ4OTRkZWU3NDNhYWI5NGE3ZWFmOTA1NTA5MTg0NDBlYiBsZWdhY3ktdHJ1bmsKKzI4Mjc2IDI1OGUwYjEzNDdjMmFkODY4ZDNiNjc4NDM4Zjg3Zjk0NTMyMjEyODkgbGVnYWN5LXRydW5rCisyODI3NyA5YmVjZmVmNmUzMWE2YmQ3MDdlZWViYzc2NjczZjZjYzU0OGNmZjgyIGFzdC1icmFuY2gKKzI4Mjc4IDRmMTNlNTlmZDBhMDNmOTY1MGFmN2Y2ZDlkMjMyYTk3ZDJlY2FlMGMgYXN0LWJyYW5jaAorMjgyNzkgY2Y1NjFlNjEyMzc4YzFhM2FmYzlkZDI0ZWMxZGRmZWRhODYzNjJjNCBsZWdhY3ktdHJ1bmsKKzI4MjgwIDk5ZjVkMThiZTU4ODAzODZkYTY0Mjc1MzBiOWQ4Yjc1MTU4MjcxNzMgbGVnYWN5LXRydW5rCisyODI4MSBiNTE3ZDkyOTJjZTdjMGYxZjI2MzJhMjNkOWNhMTcyNTg2NjRiNzViIGxlZ2FjeS10cnVuaworMjgyODIgODA4OWJhMzk3NDgwZTQwY2NkYmI2NTUyNThlNjRkZjgwOTlmMTZlNCBsZWdhY3ktdHJ1bmsKKzI4MjgzIDcyNTMzN2I2OGNhMDJiM2MxYTgwNzk5ZjgzOGU4MWNmNDJhZWUzNTYgbGVnYWN5LXRydW5rCisyODI4NCBmYzc0MDNlMTE4NzgzMzBjM2FkNGY4NTdkZmFhNWVjYTNjYWNkMWRjIGxlZ2FjeS10cnVuaworMjgyODUgZjQ4NTEwNGU0ZWU4NTJiNGMyOTFlYzlkZDY0ZDIzZjk5MzViYjg3NCBsZWdhY3ktdHJ1bmsKKzI4Mjg2IDIzOWJkYWJiNjNhZjlkNzE3ZmRkOWM3MmY0ODUzOWM1ZGU0M2IzZTUgbGVnYWN5LXRydW5rCisyODI4NyA3MTBiZWJlMjE4MmNiMTQ0YTE5OWQyZDlmMDE3YzNkY2RlMmI0OWRmIGxlZ2FjeS10cnVuaworMjgyODggZDM1NDFkOTBkNWUwNmU1YmRiMDY0MTdmN2Y2Njg1N2QyMmYwZmFmYiByZWxlYXNlMjItbWFpbnQKKzI4Mjg5IGFhYWU2OTMyMTc3MTcxODM4YmRmOTM3NzMwOTU1YWNiMjhjZmI1NjkgbGVnYWN5LXRydW5rCisyODI5MCA1ZmYzZDhhYWE4ZjhhMDZiMTgyOWEwMzQzYzdjNzZhMGNiMzI5NGYxIGxlZ2FjeS10cnVuaworMjgyOTEgYzRlNTUwNzAyYTI5YTM0NTlkZWQxMjZmZTQwOGMyZGNmOTZkYjgwZCBsZWdhY3ktdHJ1bmsKKzI4MjkyIDg3OTExOTNiMDlkNjQxN2JlNGZkNjBlYmUyOGIyZjhjMzhhMzUyZDQgcmVsZWFzZTIyLW1haW50CisyODI5MyAwMmIyZjA4ODVjNTIxMDI0MGRjMmZiMTM5MTQwYjI1NzYwMjA2NDFhIHJlbGVhc2UyMi1tYWludAorMjgyOTQgZDc5N2NmYThjYTBkMDQ1ZDVkM2FhMGUwYjE5MDk4MDFlMGYyMmEzNCBsZWdhY3ktdHJ1bmsKKzI4Mjk1IDI0ZjFkODQ1Y2RiNTczMzFhYWY1YTRkNzE1ZTY1NTZmMGQ4NTc2ZjQgbGVnYWN5LXRydW5rCisyODI5NiA0OTJhZGRiODEyZWYxMTc4MDgxYTlmMzJkZmQxZDQ0YzZhNWFiNTFhIGxlZ2FjeS10cnVuaworMjgyOTcgZDdlZjJiYTFiNmY1ZWYwYWMxZjU5NjI4ZGZlNTU2ZGE5OTNkNjZmNCBsZWdhY3ktdHJ1bmsKKzI4Mjk4IGFlYmY4YzUyYTg0MmQ0MWQ5MmE4ZTYzMDA0Y2ViMDBhYzM1ZDc5ZmIgbGVnYWN5LXRydW5rCisyODI5OSA0ZTRhMzQ0YzliNmNlN2IwYzcxY2I1MjgwMGU2MDQwOGY4ZjE0OGFhIGxlZ2FjeS10cnVuaworMjgzMDAgNDRkMWQwYjYyM2E5YWY3OTQyZmY3YjE1ODYyMTU4ZGZlYzE0MzhhNyBsZWdhY3ktdHJ1bmsKKzI4MzAxIDg4NjJiYzU5Njg1YWNkNjM3ZjVhZjQ2NjRjYmY2YmZiMGRkN2Q5ZGYgbGVnYWN5LXRydW5rCisyODMwMiBjOGQ5NTkyYzllNzQ5N2EyMTdhMjAyMDA0ODcxNDhlYzRiNGQ4ZGFlIGxlZ2FjeS10cnVuaworMjgzMDMgMjdmMGRlZWJmMjY0OGFmYTU1N2Q2YTU0ZDEzNjQ5ZWJhOTI0YmFjMiBsZWdhY3ktdHJ1bmsKKzI4MzA0IDYzMTBhNGEyMWViODkyY2UzZmI4YWI3NDE5MjgxNzE0YTY1ZWE5MTUgbGVnYWN5LXRydW5rCisyODMwNSBhODY5ZDJkZTUzNmY4ZDMwY2M2ZTdjNmZkMzUwMWY0YjI2ZTlkNzdiIGxlZ2FjeS10cnVuaworMjgzMDYgOGY4ZmU5OTBlODJjMzM0ZjUwY2M2YTVmZTlkZWUxMmM0MmI4YjZjZSBsZWdhY3ktdHJ1bmsKKzI4MzA3IDJjZGYzZDBkZmFiZDUwMTBhNjlhN2RiZDYxNzhiNzkwZmUyNmFiN2UgbGVnYWN5LXRydW5rCisyODMwOCBiYzY2MGY3Mzc5NWNkN2NlMDcwOWNkYzg4YTc2YWNmYWYxMzk4MDY5IGxlZ2FjeS10cnVuaworMjgzMDkgZjU3ZDZkYjQyM2YyZGJkYjQ3M2I4YzVlNzUxOWE0OTgzOTA5YzFjMiBsZWdhY3ktdHJ1bmsKKzI4MzEwIGVjZDRhZGEyNTJiYzA5YWQ5YTg1ZjQ4OTFkMGFjZDM5Mzk2ZjFlMjIgcmVsZWFzZTIyLW1haW50CisyODMxMSA2NDE3ODZiZWExM2UyYjVhNjFhN2Y4ZWE0MjliMjBkOTY1ZDc1NDZiIGxlZ2FjeS10cnVuaworMjgzMTIgYWFiN2RlYmM3M2E4OGUyMTM1ZGM3MThlY2Q3MjI3ZjcxZmY3ZDA2MSBsZWdhY3ktdHJ1bmsKKzI4MzEzIDMxMTQ1ZDY2N2IxNGE1ZTY2NGQ3NDFlY2YzODVmZTM4NjI3NjdlNGQgbGVnYWN5LXRydW5rCisyODMxNCBiM2VmYmRjY2Y3YzY0YzBiZDU3ZjQ2YzJiNTA0NGZjNjEwOTg5MzYzIGxlZ2FjeS10cnVuaworMjgzMTUgYzZhZDYwM2JkMjY0NWFlYzhiZTY1MDlmMmRmODI4ZWQ2YzBiMzcwNiBsZWdhY3ktdHJ1bmsKKzI4MzE2IDVhY2FlNzE5Y2I4YWJhNWM0NGVhODM1MzNhNjE5NDQ3ZTk1NWY4ODAgcmVsZWFzZTIyLW1haW50CisyODMxNyA1YzM4NDU3ZjZiM2I4NWI2YzFiNzQxNDgzMDQ2ZDlkNDA2MjE2Y2I4IGxlZ2FjeS10cnVuaworMjgzMTggMzVmZTVlM2NmODg1ZjY0NmE2OWUxMGMwOTI0ZjdjMTFhMTczMDQ2ZSBsZWdhY3ktdHJ1bmsKKzI4MzE5IDBlZTQ4YWVmYTQ3NDllNzNkOTE3M2JiOTllN2U2MmY2MGFiNzQ4NGQgbGVnYWN5LXRydW5rCisyODMyMCA1OWFjZDUwMjg4MDQ0N2Y0MGUyZGQwZDM4YmZjNDhjNzY3YTZkYTgzIGxlZ2FjeS10cnVuaworMjgzMjEgNjg0YWIwNjQwZTA0ZmEwZmZhODkzYzg1ZGEzYzEzYjYyOTRiM2FiMSBsZWdhY3ktdHJ1bmsKKzI4MzIyIDAxZTFkNmFiYzUwMTIyZjI4ZWJjMTQ1M2U1OGRhODI5YjUxODZkZDYgbGVnYWN5LXRydW5rCisyODMyMyBlM2Q5NmUwMGRjNmMxYzMzMzlmMzllZmUzNGY1ZDZkYTM3MzQ1YzhjIGxlZ2FjeS10cnVuaworMjgzMjQgODg2Njg2ZmM5MmE5OWNmZDFkMzE0MDkwNGU3ZmFiMjBkNDI3M2EwNCByZWxlYXNlMjItbWFpbnQKKzI4MzI1IDBkNWQ4ZTFjZGMyMmNhMTY3MDZkYzFjZTUwMmQyOTRkYmU2NTEyOGIgbGVnYWN5LXRydW5rCisyODMyNiA0Y2IyNTNjNTU2YjEwYTNkNGI5ZjQxZjczMWZjYjU5MmViZmY4Nzg3IGxlZ2FjeS10cnVuaworMjgzMjcgNzE0Nzk3MTU2YzUxMmI5NGRlZTQyZjQxYmMwMTZjMjRhZWI2ZjlkNSBsZWdhY3ktdHJ1bmsKKzI4MzI4IDhlZWYwMzg1MGY1Nzc2N2ZhYzcwMDQxZDVkZDgzNzY5MWU4ZTdlNTcgbGVnYWN5LXRydW5rCisyODMyOSA1ZmM0NjA5ODE1ODkyMDU3NWNkYTZiNzQ5NjY2ZDA3NjY4ZWUxZTE4IGxlZ2FjeS10cnVuaworMjgzMzAgNTFjMjY5OTRkOGVjNjlhNzMwNzk4OTIzMGYzNzU5MjY4NmQwMDIyMyBsZWdhY3ktdHJ1bmsKKzI4MzMxIGExMTQzMjI0ZWUwZDBmNzY5NGE5NDY4YWExNTZiMWRjNjFhNTBhYmUgbGVnYWN5LXRydW5rCisyODMzMiA5NDA2MDVkNDE1NWZkYzY3OTNjMTA0NDNlZTg0OTQ4ZGFlMWRlZGYyIGxlZ2FjeS10cnVuaworMjgzMzMgZDJlYjAwNzQ0OGEzZTY1OGFkNjcyNDBhNGZkZjY5OTNjMjViNjE5NiByZWxlYXNlMjItbWFpbnQKKzI4MzM0IGM0YTRiNzQyYWQ2YzY1ZGIzZTE3ZTNjNmZjYzAwYTg3YjJmMzMzNDIgbGVnYWN5LXRydW5rCisyODMzNSAwZGQ1YmNjMWVlMGJkM2U5OTg4ZjFmN2Y2MjliNjRlNDViMDBlMGQyIGxlZ2FjeS10cnVuaworMjgzMzYgNDE5ZDQ3Yzc3MTQzNDI4ZWZkNmVjMDU1YjZmOWQwOGEzMDMxZmU0YSBsZWdhY3ktdHJ1bmsKKzI4MzM3IGU4Zjc3MzA3ZDljNmEyOGQwMTdmN2Y1MTVmYzM3ODBlMTY3NDUwZTkgbGVnYWN5LXRydW5rCisyODMzOCBjMGU5ODBhYjU0ZGIzYmQ5NTBhNjNkMjVlZjExMTk1ZDdkMDE3MDM3IGxlZ2FjeS10cnVuaworMjgzMzkgNjE3YmQ1NWI0YTZlZGJjMjRmNGNlNWU3ZWIyMzc4OTNkNDBjZDNmZCBsZWdhY3ktdHJ1bmsKKzI4MzQwIDllZTRmNGNiOTc3MDY5OTgxYTQxYjQ5ZTU5ODEzY2I2Yjc1ZTMyODggbGVnYWN5LXRydW5rCisyODM0MSA2MDYwY2Y2NjgyYzAyNTY5ODM0MmI5NTQ2MzdmNTUxZjc1YTZiOWFiIGxlZ2FjeS10cnVuaworMjgzNDIgNjQ1MDhhMzdhOGQ1YjUwYzgxYzFlMThlOGJlMzU4YmQ3YzFiNjUwNSBsZWdhY3ktdHJ1bmsKKzI4MzQzIDI5NGY3YmUyNjE5YTYwMzFlZDljZjM3OGE2YTBhYzVkNTVmNGVlZjQgcmVsZWFzZTIyLW1haW50CisyODM0NCAyMTllNzAzODkwNzI2Nzk5N2NkYTczOTE5NzdiZDAyZmVkMDU0YzlkIGxlZ2FjeS10cnVuaworMjgzNDUgZTk1MDA3MDlkNDljOThhODZkMDVjMmY2ZmQzY2Y1YmEzYzcwNzRhYiBsZWdhY3ktdHJ1bmsKKzI4MzQ2IDJiNjZhZGRlMDIzMDY2OTI0MjZhM2M0N2Q0ZDA2YjkwOGNlOWRjYjUgbGVnYWN5LXRydW5rCisyODM0NyBiYjZhNzFkM2ZkY2I3NTVmODc0N2JjMTQxZWNlODk0ODQ2NDljZWUzIHJlbGVhc2UyMi1tYWludAorMjgzNDggNjcwNDg0NTRhYTFlNzQ2NzkzOWQ3MmNjMDg2NWE4OWMzMDViYTYzMiBsZWdhY3ktdHJ1bmsKKzI4MzQ5IGQxMzU1MWNkNjYzZTU3NzJlOGUzMjliY2E5Zjk0ODhiNDE5YjMyNjkgbGVnYWN5LXRydW5rCisyODM1MCA1MzA2NDA4NjU3ZmM2NjRhYWMwMjk5ZWVlYTUwMWQ5M2M4NDExYmUwIGxlZ2FjeS10cnVuaworMjgzNTEgNTRiNjAxZDNiMmE2ZGQ5MWYyNjVlNDYzYzIyZWJmMzY3ZjEyMmU4NCBsZWdhY3ktdHJ1bmsKKzI4MzUyIDc0MTdhNmRjNzM2NjYyZDNhMWJhZDdhOTExNWFmNWU0MzhjMjI0ODkgbGVnYWN5LXRydW5rCisyODM1MyAwYzIwMTU0OGQzZDRmZTUzOTVjMjYyYTA1ZTE4ODMzMzYyNGY3OWMzIGxlZ2FjeS10cnVuaworMjgzNTQgNTQ0YTMyNmJhZjdmMjlmMTI2M2IwY2U1MzAxZmRjZmQxMDE5YWZmOSBsZWdhY3ktdHJ1bmsKKzI4MzU1IDhhZGNhNWY5YmZmZDg2ZmVjNjMyZjRlZWI5ODlmOWUyMDQyMWQwNGQgbGVnYWN5LXRydW5rCisyODM1NiA5ZjI2ZTBjMGM2OTI3MTA0YmNmYjYyZDBiMDMzODE5YmQzNDJmYzZiIGxlZ2FjeS10cnVuaworMjgzNTcgMTMzODhjYWZjMTZlOTYzM2IzZjFkNTIzMGIwMDZlMTMzMGQ1Mzk5NCBsZWdhY3ktdHJ1bmsKKzI4MzU4IDFiY2FmYmM2OWM5NjcyNzVkZDdjNDcwYWU1YzZkOTg4MmY4Yjg1MmMgbGVnYWN5LXRydW5rCisyODM1OSA2YTE4YjRlODM4ZWFmM2Y5Yzc1MzIyOTIzZTBiNzExYWQyZWE0NzRmIGxlZ2FjeS10cnVuaworMjgzNjAgMzMwZjZlNDIyNzRmODM4N2MwOGQ1NzI0Yjc4ZjJlYjIyMTI4ZDBhZSBsZWdhY3ktdHJ1bmsKKzI4MzYxIDA1ZGE5NWJjZDcyNGRmZjdlNzhlNDdlNDczODExNDM2ODU3YzhlNDIgbGVnYWN5LXRydW5rCisyODM2MiBjNTVlOGQ2YzA5MWYwMzNjZjdlZWI2MzZkZTQzN2I1OGRjZTIxZjFiIGxlZ2FjeS10cnVuaworMjgzNjMgNjI4MTBiZWI5YWY0Nzc3MzBiY2YwN2ZkYzc4NmVjNjY0YTIwNjZmMCBsZWdhY3ktdHJ1bmsKKzI4MzY0IGRjNjZlYjRjZDE3YWMyYTAwMGZmMTkwNjBlOGEzODQ0MWE5MmE2OWMgbGVnYWN5LXRydW5rCisyODM2NSA2ZTc4YTU0YmFjM2M4NDA0MWJhZmUzYzAwMzAzZjU0NWQ4ZWYwODlmIGxlZ2FjeS10cnVuaworMjgzNjYgOGI2YmY1YmM1MTIyNmI3MjI4ZmEzMTZjNjc3ZjhkNTBiZDIyZmNhMSBsZWdhY3ktdHJ1bmsKKzI4MzY3IGI5MzNkMTlhZTg1MTJjYmEwMWU3MjY0Y2E0NWQxZWEwMDAxODEzNjcgbGVnYWN5LXRydW5rCisyODM2OCAwNDNlYmE1MThjNjg5Y2JkZGIzNzFlNWI3MGZmZTk5MDRjNWQ5MjA1IGxlZ2FjeS10cnVuaworMjgzNjkgYzFmNjgyYmVlYmVhMWNmMWUxZThlYWU3Mjc5OTcyM2NkM2NmY2MzMyBsZWdhY3ktdHJ1bmsKKzI4MzcwIDczZmJjZjIxYjJjMGZiYWNjOWY3MmQ0NDc4OTZkZDA5MzRhM2E0NDkgbGVnYWN5LXRydW5rCisyODM3MSBkOTBhNmFkZDdjYTM5ODI4N2MwZjk0NjhmYTg4ZGFkYTY3ZTNmMTFiIGxlZ2FjeS10cnVuaworMjgzNzIgMWI0ZWY5Y2QxODk3NDJiYzgwYWViYWZiZTVmNGRkZGQ2NDMyMDY4OSBsZWdhY3ktdHJ1bmsKKzI4MzczIGM0NWIyODY1ODgwNWZhNjY5NGUzOTM2NTJlYjAxOTI5MzU4YjJhZTMgbGVnYWN5LXRydW5rCisyODM3NCA4MGY2NWM2M2U4NjBjMjZkZDViMjczMmE4NjM1NzJhMWE2NGY4YzQwIGxlZ2FjeS10cnVuaworMjgzNzUgOTUxODY1OTFjYmNmZWVlMTQ2NzA2ZWZmMDhlM2M1NzM4N2MyYmRiNyBsZWdhY3ktdHJ1bmsKKzI4Mzc2IDgxNjc5ZWJlYzA3ZDcxOWJhNmNjYTU5ZTJkNWI3NjgwNjI1ZjRhNjMgbGVnYWN5LXRydW5rCisyODM3NyBmNjU4MTI5OWJjMDNiNTE4YmE3ZGNjMTUxOThmODc2N2E3OTY5ZGMxIGxlZ2FjeS10cnVuaworMjgzNzggNDI2MzYzOGE0NjlmOGRiODY3ZGIwOThjYTMwY2ZmYmFjNzJhMDIzYiBsZWdhY3ktdHJ1bmsKKzI4Mzc5IDhlYTExN2ViYjJmMzQ5ZGU1ZThlM2Q0NDE5Zjc4YWE4ZTQxN2ZmYWEgbGVnYWN5LXRydW5rCisyODM4MCA2NjhlZWFkMTNhN2M1N2VlNjVkYjYwZmYxOGNlOTM3NTQ4NDhiNmJkIGxlZ2FjeS10cnVuaworMjgzODEgNzE5MDM0OGQ0NjZkZmY1ZDY2MDU2Y2FhMjI3M2EyODkwNjQwZjFiZCBsZWdhY3ktdHJ1bmsKKzI4MzgyIDdiZWIxNjkyM2I3MWJiNzBmZTk1YWYzNmE2NThlNjk4NmY5MjhkZGMgbGVnYWN5LXRydW5rCisyODM4MyAwNjNmMjAzMTY2MGMzZTI1OGYzNjg4MGY1ZDA4ZDQzMTg5YjMyNzdhIGxlZ2FjeS10cnVuaworMjgzODQgMjVmNjk1NGZlZjM0MjNkMDdiOGYzYWY4ZTc3NTg1ZDczODY2ZTI0ZCBsZWdhY3ktdHJ1bmsKKzI4Mzg1IGIxYWI0ZThkN2Q5YzVhMGIyODlmM2Q0MzY4Yzg5YzJiNDRjN2NkYmUgbGVnYWN5LXRydW5rCisyODM4NiA4MGFjODYxOTRhMTJiYjk0YWQ2MjFlN2MyMWUzNmQ1ZWY2OWU5YmYxIGxlZ2FjeS10cnVuaworMjgzODcgOWUxMWJiODNkOTUzYmEzYWI2MWUzYjk2M2U1NDdjNTdjZWRmMTU1NiBsZWdhY3ktdHJ1bmsKKzI4Mzg4IGVlOTlkMjIyNTcwYTk0NjAwZGYwNzAwMzhlZjczZDQ0ZmNmYThlZDYgcmVsZWFzZTIyLW1haW50CisyODM4OSAyMmI3MGMzOTgzYjUzOGNhZTU3NGFjOGNkN2JmOTQxMDk4ODIxMzUxIGxlZ2FjeS10cnVuaworMjgzOTAgNGJiNzc2YTAyZTZlODRmOGE3YTA4MmM1YzIwZTk2NDA2MWU5YTk1MSByZWxlYXNlMjItbWFpbnQKKzI4MzkxIDgwZDAzNWM0NTE0OTNkZGVjNzRmY2IwYjI0NGU0OWI0ZWJiMTczNGYgcmVsZWFzZTIyLW1haW50CisyODM5MiAxNDYxYjk0NjA2YzU0MTRlYjI5YjE2NTdhY2E3N2QxZDM0ZDgyYmQ3IHJlbGVhc2UyMi1tYWludAorMjgzOTMgMDBmMTFlZWRkNjAzMzQ1Y2JhOTkyM2EzNmRiYWYwNTY1MzQ1MTZjZCByZWxlYXNlMjItbWFpbnQKKzI4Mzk0IDkxMzBlYTY2OTNkYTdlZTk5YTNjNGUzYjdkNTNiZDA1ZWM3YWMxYzkgcmVsZWFzZTIyLW1haW50CisyODM5NSAwZDY2MTdhOWNiNjEwZDI3MjJhYTI1MjM3MGQ1MTMyYTNlZjM0YzQwIHJlbGVhc2UyMi1tYWludAorMjgzOTYgZjRiYjBmZjMxMGQzNDg5YzIzZjc0ODY0MjA1M2UzZGVkNmNiZjM5OSByZWxlYXNlMjItbWFpbnQKKzI4Mzk3IGJjODFlZTIwNjI4ZjNjYzlkNTAxMGNkNDE4OTc4ZjVhZTJkZDZhNGIgcmVsZWFzZTIyLW1haW50CisyODM5OCA2NDYxYWNkZWI1OGM5MDgyYWZlZThlNTY0ZjBiY2VhYmNkZWU2MTA0IHJlbGVhc2UyMi1tYWludAorMjgzOTkgYzU0MTdmMGVlNWYwODAyYjE4NzM4OWI3MThiMTJkMzFiOTQ1NTQ3MSByZWxlYXNlMjItbWFpbnQKKzI4NDAwIGZkMDY2ZDE5NGNmZjQxYzJiYmY3YTRhNWEzYTdmZGVkNTZjNDVjZGMgcmVsZWFzZTIyLW1haW50CisyODQwMSA1ZTRlYWRmMTkwM2EwMjhlNjU1YWI1ODI5ZmY1MTAwZTkwMmU1ODZiIHJlbGVhc2UyMi1tYWludAorMjg0MDIgODZhYTJjMmRhNDBlNGI1MmNjNmRlZTEwM2Y1MzM3YzZlNjZiZjdiMSByZWxlYXNlMjItbWFpbnQKKzI4NDAzIGM1MTJhOTQzM2VhZjNiM2YxNjBiYmE2OTA1ZGM1NTUzNWFlNzM4NDEgcmVsZWFzZTIyLW1haW50CisyODQwNCBhMGRjNmY1MDQ5NzI4NWExNDZiMTIwZjkzYTFlNThkYzQ2NTVmODNlIHJlbGVhc2UyMi1tYWludAorMjg0MDUgYWM0NjhlMjBiNGNlZDhiY2EwNmVhNGI4ZWIwNTllNWNlNDZkNDk4YyBsZWdhY3ktdHJ1bmsKKzI4NDA2IDNhNzQ5OTQzMWRjY2YzY2ZmZDFmZjQ4ZGMyN2YzMmJjYjkwMGYyYmUgbGVnYWN5LXRydW5rCisyODQwNyBmOTVjMGI4OTRmMjc2NmU5MmRlODE1Zjk0OGU4MTlhOWFhOGJiNjBkIGxlZ2FjeS10cnVuaworMjg0MDggMmNjY2Y4MjQyMDA5YmFjNTU5OGIyNjJiMzkzY2QxMWE2YTRhNTlkNiBhc3QtYnJhbmNoCisyODQwOSBmY2I1MjAxYzY5ZWQ4Njc1MmE1ODQ2NjNhNDU2YTNhNTNkYTA1OTE1IGxlZ2FjeS10cnVuaworMjg0MTAgNDgxMzgzNzM3MDliNDcwMDQwNDNjNDM5MGIwYWYwNDJhNDA4YWZkZCBhc3QtYnJhbmNoCisyODQxMSBiYmFlYmU2YjdjMWFkZmViZTdkYTU5YzViYWVhZjMwMjcyNjBkNjExIGFzdC1icmFuY2gKKzI4NDEyIDBiNzI2NDk2Y2Y0NGYxN2FkZmUzYjdjYmZhNDYyNzZlNGNjZTQxMzcgbGVnYWN5LXRydW5rCisyODQxMyA1OWI3ZjRlOWZkNjE0NzBkYmRkYWQwYTZlNTA1YWU3MDhhNTA0NDkwIGFzdC1icmFuY2gKKzI4NDE0IGM3NDQxNDRjNDA0OWRmNjczN2FkZGU3YmIwZDYwOTZjZWI4ZTA1MmEgbGVnYWN5LXRydW5rCisyODQxNSA5NGFkZjY5OTYxOGZlZDVhZDQ3YzcwMjAxOThjNzg4ZDBiY2I4ZGEyIGFzdC1icmFuY2gKKzI4NDE2IDhmZGIwODc3ZDM1MjM4Mzg3MGFiMDliNDlhOTA3MGY5MDg2MTZlNjAgYXN0LWJyYW5jaAorMjg0MTcgNzYyZGQwOWVkYjgzNDJmYjA0ODQzOWZhYjZlYTgxZDYyYzEzMWQ2NCBsZWdhY3ktdHJ1bmsKKzI4NDE4IGI0Mzk4NmY3M2ZjOWY4YTI4YWQ5ZGY2NzAzMzA3OGRkMDdlNjE3MmMgYXN0LWJyYW5jaAorMjg0MTkgZjgyNDc1ZDc4NDE1MjVjODZmNThlYmQ4MmFhNTA0NDI0MTYyZmZmZSBhc3QtYnJhbmNoCisyODQyMCAxMmJiNmYwYzYwZjhjNjM4YzEyY2JkYjhhNGY0NjkyZjRiNzFlZTE0IGxlZ2FjeS10cnVuaworMjg0MjEgMDg1N2FhZGM2MTJhMzM1OGVhMjRjYjE0NGNiYmU0ZmJmMDRmMDZjNSBsZWdhY3ktdHJ1bmsKKzI4NDIyIGI1YjcwZTQxMGYxMjRmOGViOTU5MzZlYzczMTY0NzUwNjhlYzIxNjEgbGVnYWN5LXRydW5rCisyODQyMyBhY2VjZGM0ZjczMzM2M2M0ZTdlMTQ1MmFiZGVkNjkzNzcxM2E1YmE0IGxlZ2FjeS10cnVuaworMjg0MjQgYzY4MzExZWZkMzQ2ZWQ5ZjQwNjc3ODkyMzM0NjRhMDFkNWEyMjlkNiByZWxlYXNlMjItbWFpbnQKKzI4NDI1IGQ0MjFiYmM5OTYxYzhjZmUwYWEyNjU5YjIwYzgwYzY4NzRlMTlhZjggYXN0LWJyYW5jaAorMjg0MjYgMzU3NDlkYjEwODA5MzA1NjEwMDUwZmJmNjFiNWQ4NTVjZDJiNGUxZCBsZWdhY3ktdHJ1bmsKKzI4NDI3IGYzNmUxNmNhOGY1MDU4MGY1Mjg1ZWQ4M2UzMjEyZjA2MGVkMWM1NjEgbGVnYWN5LXRydW5rCisyODQyOCBmMmQ3NTc0OWU2MWM1ZTMyMjQ5MmExZTI4Y2ZkY2RjMDc5ZDMwMzE4IGxlZ2FjeS10cnVuaworMjg0MjkgNjg2MjdlMGFjZDE1YmFiODViYWVmYjNkYTJhZGE5ZWRiNmJhZTM4YSBsZWdhY3ktdHJ1bmsKKzI4NDMwIGZlZWIwYjAyYjhmMjUyOWU1ZTQwYzk3YWEzZmRjNTY4ZTlhODdlYjggbGVnYWN5LXRydW5rCisyODQzMSAyNGU4MGQ5NmJkMGI2ZTkyNmFiOTg1MTRhMDQ0NGVmNjhlYjU3ZjU1IGxlZ2FjeS10cnVuaworMjg0MzIgMGViZWM4M2ViM2RkZmMxYzViNWEyYWZkMTJkZTc2MmFkZTNhYWIzNCBsZWdhY3ktdHJ1bmsKKzI4NDMzIGFhNDUwMzU1NjMzOWVkY2UwMzc0OTMyYWJiMjVkOWE0NGE3ZTg5YjIgbGVnYWN5LXRydW5rCisyODQzNCA4MWJlNjEwNTY3MTdmODgxMzYwNjJmYjcyODg5Zjc2NzhiNTEyZmE4IGxlZ2FjeS10cnVuaworMjg0MzUgYmIyOGJiYzI4YzMyM2FiMjlkNTA2NTVlMjY3ODg4OTBjNDZjNmM3NiBsZWdhY3ktdHJ1bmsKKzI4NDM2IGU0MTA1ODg0NWI3OTJlZDY2MjdlOTg0ZjBjY2IxMmQ0YzAxZDI2ZjYgbGVnYWN5LXRydW5rCisyODQzNyA5MGIxM2Q5OTk4MjcxMGZmNmMzOWUwOTJiZWNhNjdhNzM5MWQzMmRlIGxlZ2FjeS10cnVuaworMjg0MzggODFhY2JlMTY4MGEzMzA4YmI4MThhZTA2MzJmNzdmOTE1YzFiMGM1MCByZWxlYXNlMjItbWFpbnQKKzI4NDM5IGE2ZGU1MGMwZDQ1N2ViNjFjZmViNTk5MmQ3NTExYzBjYzgxZDczZmQgbGVnYWN5LXRydW5rCisyODQ0MCAwNDkwOTZlZmEyYzNjYTg3NmIxOWMzN2IyNDY4ZDczODQ1ZmQ5NjBhIGxlZ2FjeS10cnVuaworMjg0NDEgOGZhNzUzYTk3MDc3YmEwOWFkNWM0MjFjMDA3MDdjYWRjMDkwMzZmNyBsZWdhY3ktdHJ1bmsKKzI4NDQyIDJjMmI4NGJkYTE0MWI3YTRjOGM1OTMxZWFmN2EwZjZhMmIyNzJiZDUgbGVnYWN5LXRydW5rCisyODQ0MyAzNDg0MzA5NTczZjIxYzgzOWM3NzUzOTJiNWNiZWRlYzExMjNmMTgwIGxlZ2FjeS10cnVuaworMjg0NDQgYWQyODlmYmI2YjQ4ZDcyYjc4MzhlODNmZTBmMzBiN2Y4N2YzNmZhOSBsZWdhY3ktdHJ1bmsKKzI4NDQ1IGFmZjA2N2JhOGQwNzg4ZjBhOTM3ZTliZTNkZWY2MjUwYjczOGE1ODcgbGVnYWN5LXRydW5rCisyODQ0NiA4YzYxYzkyMDI1YjZjNzdiODNlOTJiYzc4OTMwNzRiMDQ3YzFkYzY0IGxlZ2FjeS10cnVuaworMjg0NDcgNDBlOWNmZGUxYzUwODgwYTFmMThlMGE0YmVlMTMxM2NkZjQ5MTg3ZSBsZWdhY3ktdHJ1bmsKKzI4NDQ4IDdmYjM3NTlkMzg2NmQ1MDg0ZTRhMjIyNTkyZjBkYzc2Nzk1ZTg0OGIgbGVnYWN5LXRydW5rCisyODQ0OSA4YzgwNTIzNzgwMTdjYjQ1M2IwZjIzMTU1MGVkNzNhZTU3NjA1Mjk4IGxlZ2FjeS10cnVuaworMjg0NTAgNGU5OTZlOTU5ZWMxODdjNzEzNzgxNzc3N2U3MWMxMDRlZDAxZDI4NyBsZWdhY3ktdHJ1bmsKKzI4NDUxIGQ1ZWJkNjE2YTNlNmY0YmNkNTgwOTNiYzU1YzM4YTM2NTk2YzExODMgbGVnYWN5LXRydW5rCisyODQ1MiAwZTAxYjg1YWRkODEyNmU2YWM3Mzc4NTdjZTk5ZWI2ZjAzYjFkYjMzIGxlZ2FjeS10cnVuaworMjg0NTMgN2QzZjgzMDZhMDFlZDVhZTU0M2ViODQ4YWZjNTlmZGY4NGRiNzBjNiBsZWdhY3ktdHJ1bmsKKzI4NDU0IDBiOTc5MmNiZTkwMDQyYjE3NzAxZWQzMjQzOTNjMTZlNjY3ZDM4YWYgbGVnYWN5LXRydW5rCisyODQ1NSAzNjQ3YjMwYWE5ZGUwOWFjNTZiMmRiNzJmNzRhMTZlNGVlMjY0OTgzIGxlZ2FjeS10cnVuaworMjg0NTYgZGI0OWVlNzZiN2QwZTNmNzZkY2YwNWJhMmIzMjRjODM5MTA3MDNlYyBsZWdhY3ktdHJ1bmsKKzI4NDU3IGVkMGIwMjY3MmYwOTA1ZGQwYTlhM2ZhNjBmMmZiMDViOGYyMDFhYjAgbGVnYWN5LXRydW5rCisyODQ1OCAxMTg5Zjc3Y2RmODQ1ZDJjZTc5ZTljZWQwMmY4NmUyMTA3MDMyZmM0IGxlZ2FjeS10cnVuaworMjg0NTkgOGNmMjA1ODkyZjY2Mjg5NjA2Y2MyNmEzODhiNTNlY2QzMzQ1MWFiYyByZWxlYXNlMjEtbWFpbnQKKzI4NDYwIGJkMmFhMDI0N2FkYWFkOGM0NmE5N2Q5NzQ3MjQ0MGM5OWVmNjc2NWUgcmVsZWFzZTIyLW1haW50CisyODQ2MSA3NmNmODhlODkzNzZkYzI1NGFkN2ZmNjEyMGU2ZjgzMWMwOTQ2Y2UzIGxlZ2FjeS10cnVuaworMjg0NjIgNDM0YmMxZGVhNGY4YmE3ZTc3ZDY1ODZiMzNlZDRlZjdiZDExZjAzYyBsZWdhY3ktdHJ1bmsKKzI4NDYzIGVjMzczNjk2YzE3YmMzNzg2MjY1Yzk3MjFjN2Y5OWZlMWU2NGJlNzcgcmVsZWFzZTIxLW1haW50CisyODQ2NCBkMDQxM2RlMTQzZWMyNDVhYjBlMTI1ZmNlM2QzMzA4NWYxMzg0Yjk5IHJlbGVhc2UyMS1tYWludAorMjg0NjUgZDgzYzE0YWU2NDdkZDAzMTBjMWFhMGZlMDVmMGZlYzQ2ZDNiNWVhMiBsZWdhY3ktdHJ1bmsKKzI4NDY2IDQwMjlkNjdjZGJkNWZkYmQ0MjI1ZmQ3N2I4ODQ3ZTBiMDM4M2RkNTEgbGVnYWN5LXRydW5rCisyODQ2NyBjYmVlMmVkNmNkNzU1YTc3MjdiM2I4ZWEwMjZjODZjYWRhNTM0NDY0IGxlZ2FjeS10cnVuaworMjg0NjggYTdhNjBiMTQxZDFkYTY4MzhkYzllMWUxYzMzNDk5OTk1ZTZiNzUzMSByZWxlYXNlMjItbWFpbnQKKzI4NDY5IDYzY2ExMmFiYTA3OTM0YTU5YTVmNDVjNzM3ZWU2ZjdmOGNiNmRkYWUgbGVnYWN5LXRydW5rCisyODQ3MCA4ZThkM2U0YWY0ZjQ2ODk0Yjc4MmM5YTdkMjA5NzNiMTJlMjJmNmNjIHJlbGVhc2UyMi1tYWludAorMjg0NzEgMWFhMDgxNWZhZDRiMTE2NzFjNTgxMzUyNDlhOWY5ZWZjZDA0MWZiNCBsZWdhY3ktdHJ1bmsKKzI4NDcyIGUwYjg1NWFhZDIzMDIwOTJlMzM2ZGFkMDE2N2IwZTNmMzFhOGE1MTYgbGVnYWN5LXRydW5rCisyODQ3MyBlMjA0MmM3NmFmMDY1NjBjY2EyYmU2YTQzMWRhOTVkOGViNmJhMzk5IGxlZ2FjeS10cnVuaworMjg0NzQgYjgwNjdkZGMxMWY4N2E5N2Q0NWYzZmU3Mjc1OWIzYWUxY2JjMzRlMyBsZWdhY3ktdHJ1bmsKKzI4NDc1IGFkM2JlNDcxYjM5OTIxOTMzMDY4NWQ0MWZiOWIyZjVkZjgyMTJiZmUgbGVnYWN5LXRydW5rCisyODQ3NiAwZDQ5MjkwMjg5NGE1NTg4NzBlNzUzYzQ2ZWFjNDkwODJkNWMzOWExIGxlZ2FjeS10cnVuaworMjg0NzcgN2M3NmMwZmMyZTkyYTA5N2JmOGU5MDA1ODNiMWQ1YTI0ZTBhNWU2NCBsZWdhY3ktdHJ1bmsKKzI4NDc4IDEwMGYxNTQ5ODJjOGJiZTA5Y2E1MThhZDBmOTNkY2Q0YjQ5ZjhjNmMgbGVnYWN5LXRydW5rCisyODQ3OSA3ZGM3YWI1ZGI5MDk5ZTg0NjQ5YjRjMzU0YjFkNGQxMTgwMTY5ZjIwIGxlZ2FjeS10cnVuaworMjg0ODAgODFhMzZkMmEyZDEzN2QxMjA5YjU0MTgyM2ZlZGU0ZDM3YWE4MjMyMCBsZWdhY3ktdHJ1bmsKKzI4NDgxIDVhODhmMTc0YjY4NGNiYmY4MGMxYzdiNzE2NGVkODAyMzA4YzM4ZWMgbGVnYWN5LXRydW5rCisyODQ4MiBhYjE3NmUxNjRlYWI2OTQ4YjI3OTI1ZTRmMjFhZGU2ZjJkMGFjMmY4IGxlZ2FjeS10cnVuaworMjg0ODMgNDZiMDUwNDU1NTMzNjgzYmQ4ZGQyMjcwNmVmYzE2YzcwMDI4NTJlNCBsZWdhY3ktdHJ1bmsKKzI4NDg0IDAzZWFkYzU3ZDQyOTljNDE0YTFkZTk5MTJkNjNhOTI2NzI4N2IzYjUgbGVnYWN5LXRydW5rCisyODQ4NSA4MjMxZjg2Yzg2MjhhNDYzOWMxOTAxNDBjYTc5ZmY0OTA5Y2U1YTEyIGxlZ2FjeS10cnVuaworMjg0ODYgMjc0ZmEwYjM0Y2E3ZTZiM2Q0NGExMTVkZDcyNjhhYTIxNTE0ZGExMCBsZWdhY3ktdHJ1bmsKKzI4NDg3IDA1YjE1Y2UyOGUzMWZhNGY5NGE4NTI5NDhjNDBkM2M4MjE0NWUwY2IgbGVnYWN5LXRydW5rCisyODQ4OCA1ZmI2ZjViYjc2OThmYjhmOTkxMWUyZjk4ZjBmMjAyMGU2ZDQ3NjI2IHJlbGVhc2UyMS1tYWludAorMjg0ODkgZWZjMTI4YTMzNGE1NWYyNzRhM2JkMWMzMWM5NjIzZjIxMjcyZWVjMCBsZWdhY3ktdHJ1bmsKKzI4NDkwIDgyNWZjODU1MjMyNTdkOWU5MGM2NzIyOGE5Y2M4MDNjM2I1ZTQ1NzggbGVnYWN5LXRydW5rCisyODQ5MSAzMWE3NzRhNmY2MDRiNTcwZjkxNzE2ZTU1OGU3ZGFmNGE0MWQzMjQ0IGxlZ2FjeS10cnVuaworMjg0OTIgNmEyMjE4MzRlZDdkZjQyZTgwYzIwMWExMTQyNjA3N2RkNGU2MjkwMCBsZWdhY3ktdHJ1bmsKKzI4NDkzIGE1NGM1Y2ZhM2Y4ZmIyMTRjZDM1ZjQxYjlhMWY4Y2M0NzNlNTI2ZDYgbGVnYWN5LXRydW5rCisyODQ5NCBiZTI4NjhhNjNlZDUzZDFmMjRlNGMwNzFmNDg5MDZlNWExMzkyOGMyIGxlZ2FjeS10cnVuaworMjg0OTUgMDA0ZGUxYWMyM2M0NDIzM2Q5YWI0MjAxZmVhYzNhNjE4MWVhZjM1NCBsZWdhY3ktdHJ1bmsKKzI4NDk2IDRhZWFjZjlmOTg1OGU0NWZkMDIwMDQxNGJlODMyMDFkMTY2MDAzOTYgYXN0LWJyYW5jaAorMjg0OTcgMjZjNTBmMzIyNjIyMDAyMjgwYmRmMzJjOGVhNzk5YmQyYTc2NmRiOSBhc3QtYnJhbmNoCisyODQ5OCAwMmUwZTZkMzgxM2U5ZWIzNDJmNWQzNmE4NGY0MmM2MDE5MjA0OWMwIGFzdC1icmFuY2gKKzI4NDk5IDhlNDczNjFjNGI1YjAzOTQ5YmU5MjcxZmMxNGU2ZjU0NDViN2M5MDEgYXN0LWJyYW5jaAorMjg1MDAgMTNlOTBlM2M0Yzk5MzFiZmY1YjA1N2I4MGE3YjlmYTdiMmNiYjBiNiBhc3QtYnJhbmNoCisyODUwMSBjNTU2OTA2NDc5NjEzMDEyOTM2OTQyYzk3MmIzMzI0Y2E2NGQwYzM1IGFzdC1icmFuY2gKKzI4NTAyIDg5NDIxNTA1ZGI1OTAzMjkzZGJlYTBhZWEwMjI1ZTNiM2Q4YjE5NjggYXN0LWJyYW5jaAorMjg1MDMgMGM1NDQ4OGE3NDgyMTlmZmRhOGJlNmZmOGM4NTQ2ZDVmM2Y2MmZkYiBhc3QtYnJhbmNoCisyODUwNCBlZDJhOGM1NDhjNDQ0ZDhiOWY5NWNiZDM2NWUwMTU0YzQ0NmJhYzk5IGFzdC1icmFuY2gKKzI4NTA1IDVhMTAxNmIyYzQ0MGNkYzFhNDJlODQyZThhYjNiZDZmNDRlNWEwNTUgYXN0LWJyYW5jaAorMjg1MDYgNWE0MWE3MGJjNWQxN2NlMTQzZWY2OWIxMWJkYzFjNDgxMDZhYTYwMiBhc3QtYnJhbmNoCisyODUwNyAyYmU5NjlkMjk1MTBiYTljNGNhZmJlZGZlZDJjMDM4YTQ2NDkxYjA5IGxlZ2FjeS10cnVuaworMjg1MDggOWEyZGUzOWU4ZGE3NWZiYmZlZWU0YjI2MGRkNGE3ZjdhNDMzMjAyNCBsZWdhY3ktdHJ1bmsKKzI4NTA5IDcwNjAzZjQ4NDAyOTQ2YTIzODdlMGUzNWMzODgyMTI5OWZmYjg3OTEgbGVnYWN5LXRydW5rCisyODUxMCA0YzRmOTJiMGFmOTAzNjk1NDMyMGZiNTJlMmI3YmY2YzExZmY0N2M1IGxlZ2FjeS10cnVuaworMjg1MTEgYjMzN2VmMTZjMGQyZDhiYzMxMzBkNzM1NDRjNzc1NzMxYTY2MWEzNyBsZWdhY3ktdHJ1bmsKKzI4NTEyIDVmZTRkOTNkZjQyOTEzNGVmODY5NWMxMmU1OWZmOTYyZmY4YjczZDIgbGVnYWN5LXRydW5rCisyODUxMyA4NGJmYjhhODA1ZmM5ZmY2NmIzODFlZTFlMTY0NmMxZDMyMTJhMzQ2IGxlZ2FjeS10cnVuaworMjg1MTQgOWExNzhhZGI0ZTJkYjAwODcyZGNjNWZjNTc5MzAxZGNlYWM0YmY1NiBsZWdhY3ktdHJ1bmsKKzI4NTE1IDE5OTgyYzVlYjQ5M2FmMDlhMjJmNTA3YTViZTUwMmFkNTdlMjFkYTQgbGVnYWN5LXRydW5rCisyODUxNiA4NzcxOTg3MDVjOTJhZGIwMjhkYWEyZTA2YWVjOTk0ZWFiMmMxNGU0IGxlZ2FjeS10cnVuaworMjg1MTcgYzE0OWQzOTMxNDM0NDc0MGY0Njk2Yzk1MDY1YWRhZmNkNGI0ZWE4NCBsZWdhY3ktdHJ1bmsKKzI4NTE4IDAzMzdkYWQ4NDAzZTEwYTczNThiZTU2NzVmMzI2NjM5NDBlZjNkMDMgbGVnYWN5LXRydW5rCisyODUxOSA0MjdlZmMzNWI1YmViNmRlYjliZDI5ZjAyMzFiZTU3NjgzZDMyMDU4IGxlZ2FjeS10cnVuaworMjg1MjAgYWUxNDY5ZTQ2OGEwNDkwODk2YmIxYWI5MWZlY2I5Y2UwOTQ5NDIwNyBsZWdhY3ktdHJ1bmsKKzI4NTIxIDZhODVhMWM5ZDMzZDhmM2FmMzJlNzQ0NjFmMDM3YTAzNzUyZDRlNDcgbGVnYWN5LXRydW5rCisyODUyMiAxYjgwZTBmZDVhNDgxNDU5OGY0NGE1NTcwNjhlNmJjOGEwNWVmYzAzIGxlZ2FjeS10cnVuaworMjg1MjMgOThkZGM0Mjk3ZjM2MWRlNWRiZTliY2IzMzQ1MmY2MzU3NTAzZTZjNCBsZWdhY3ktdHJ1bmsKKzI4NTI1IDU2NzJiMTU3Mzg1NWE1MTVhYTM2M2ZkN2Y4ZTdkYWUyYjQyNzBiOWQgbGVnYWN5LXRydW5rCisyODUyNiA3M2IyY2JhZTlkOTAxNzgwNDM3MGNlNWJlYjVmYTk5YzcwYjI2NjVhIERTX1JQQ19CUkFOQ0gKKzI4NTI3IGMwMmE2Njg0ODhkMDgyYzRkMGRiOGIzODcyNzc3ZTY4YzFhMmMyZDYgbGVnYWN5LXRydW5rCisyODUyOCBhNjlhMTI0ODRkNjlhYTg2NmU2NzI2OGY3YTc2MTQ1MmQwM2EyNzUyIGxlZ2FjeS10cnVuaworMjg1MjkgYmM1OTBiZWFkZjBiZDE3NjM0YmIwZTFmNjQyZGI2Njc3YWQ3ZDM4YiBsZWdhY3ktdHJ1bmsKKzI4NTMwIDMyMzMxZDI2ZDdjZjE5MTE0ZjFmODBiM2VlYjU5YTU1NzlmNDhlOTUgbGVnYWN5LXRydW5rCisyODUzMSA4YTE2ZGUwYmUxMTE3ODA5MmJiZWEwNTA2NTAxNGM3YWQ0YjQ3ZWZlIGxlZ2FjeS10cnVuaworMjg1MzIgZjllNDI0M2ZmNzkyZTc5NDExYzE4OGE1MTE2ZGUyNWM2ODZmMTZmOCByZWxlYXNlMjItbWFpbnQKKzI4NTMzIDRiNTgwYTQ2MjUwODBjZGJlYjIyZGI4ZjE0MGE1YTA1ZWM1YjRiNzggbGVnYWN5LXRydW5rCisyODUzNCAzOWUwOWYzMGY3ZWYyODQ2YTdmMWFiNTk2MjMwZTFmNDRjNGU2ZDNiIGxlZ2FjeS10cnVuaworMjg1MzUgYzBkNWZmODU1NWFkZWE0NzA1ZDQ1NTZmZmIwOTk1NDdhYzhiYmI2NSBsZWdhY3ktdHJ1bmsKKzI4NTM2IDBlY2IzY2FiZjQwYjlhODZlNjM2Y2I5OTc4NzZiNWQ2NzFmZjMzNTcgbGVnYWN5LXRydW5rCisyODUzNyAzYTI2ZTM1MmYwYTZkMjc1ZmYxZTA3N2M4MGFhYThjYWQyMTI5ZGUxIGxlZ2FjeS10cnVuaworMjg1MzggMDBiNmRkNDE0YjgwNDYxZmI3ODAxYTRlOGMxZDZkM2UxYzFiODcxYiBsZWdhY3ktdHJ1bmsKKzI4NTM5IDA0MDFhMGVhZDFlYjMzNDdkMTIwZDJhMDgxNGRjYTUyMmYxMmI4MTMgbGVnYWN5LXRydW5rCisyODU0MCBiNDcwYjQxNzgzOWQ4Y2I0NmRmMzFhMzQ1MjcwYjdlMzJlMzZlZmUxIGxlZ2FjeS10cnVuaworMjg1NDEgZjBmZjA2MGNkMTk0ZTUxNzg3MjVlNWM5MjgyMTc2Njk0MDM4MmMzNCBsZWdhY3ktdHJ1bmsKKzI4NTQyIGZiMzM0YjFhNTZhNjVjMDcxMDhhYjM4YmU4MTkzMDcwNzE5MzNlNWUgbGVnYWN5LXRydW5rCisyODU0MyBhMmIxZjNjMTEzODdhNjQ3MDhjODVlZGUwODhjYjFkMWQwYjUwZGI3IGxlZ2FjeS10cnVuaworMjg1NDQgODgzNDM4NWYyOWJmNTQxMGQ5ZjcyOGFhMGQzN2E2ZDc2YzU3ODg5NCBhc3QtYnJhbmNoCisyODU0NSA3NTk2MWNiMzc0N2Y5ZGI5YmY0MDFjZmQxYTk0ZmRiMTQwMzExMjdjIGFzdC1icmFuY2gKKzI4NTQ2IDY5MjkzYjg0OWQ4NTgwN2I0ZDZlMTgxYmIyNDZiNTUwYWEyZmNhZTggYXN0LWJyYW5jaAorMjg1NDcgN2M3MzMzODAyNzE0OWIyMGM4NjlhOWY0MGRhNTIzM2ViNjg3YzM1ZSBhc3QtYnJhbmNoCisyODU0OCA0ZWEwODExMDAzMDUyOWI4YjhiMjhkZjk1YjA5YzgyNTA1MjU3ZGIwIGxlZ2FjeS10cnVuaworMjg1NDkgZWZjMGVkYzMwZmVhNDM1MGZlYzBjMDViZGY5ZTMzYzU2MzJmM2UwYiByZWxlYXNlMjEtbWFpbnQKKzI4NTUwIDMwMTVjNjc4ZjgxZGRmODUwZGYxMDBlNWE4NmUzMTNkYzA3NTAwMDYgcmVsZWFzZTIyLW1haW50CisyODU1MSAwY2UyNzIyYTNlMTU0ZDA5MzRiYmI5YjU1MjZlZGM1ZTkzOGY4Mjg0IGxlZ2FjeS10cnVuaworMjg1NTIgNGM4MTYzYTI3NjQwMjk3YTZiMWNiYzk5ZjVkNDVkZjVkMmQ4OTk4YyByZWxlYXNlMjItbWFpbnQKKzI4NTUzIDk1M2ViZTBjMGMyNWVlYWFlM2IzZWY3OGU1NGExOGJlMDk4MDhmOGUgbGVnYWN5LXRydW5rCisyODU1NCBjNzMxMGYzNDhjNzhlMmFmY2FmYjZhY2IxYmVhYWE5NjNlMWY5OGEzIGxlZ2FjeS10cnVuaworMjg1NTUgZTUwMGYxOGYzMTMxMjgyYTk3ZTdjNmZjM2Y1YTQ2ZWMzMTViYmEyZSBsZWdhY3ktdHJ1bmsKKzI4NTU2IDZiNjdkMjYwNzlmMjU1NjkwZWNmY2MyMmRlMmIyMDc1NzY2MmJlZjUgbGVnYWN5LXRydW5rCisyODU1NyAyN2M3MThjODJlZmRlMTQ2YzRmODljMTc0NDY4ZmI2MTE0ZDZjYjZkIERTX1JQQ19CUkFOQ0gKKzI4NTU4IDQ4ZDEwOGU1Yjg4NDFhMGU4OTM4OWYwMWY4YzAzZTBlOTg0YzU5ODEgbGVnYWN5LXRydW5rCisyODU1OSAxNzI4NDVjMDlhZmVjZjU0MjUzYTRmODQzY2E0YWU3ZWUzNWQxMDRlIGxlZ2FjeS10cnVuaworMjg1NjAgNTZmOWY1YWI2ZWMxMWY4YTlmYzNiNjhhNGExZjhjMmRmYjJiMDIxYyBsZWdhY3ktdHJ1bmsKKzI4NTYxIDUxNjVhMGVlODRjNjIwYTZmNmVjZDAzZDUzYWRjZGQ5NDJjNjdhNDcgbGVnYWN5LXRydW5rCisyODU2MiBmMWM2OWMzMmM0MmIyYmVhZTY0OTMzY2YzYmEzNTZiMzYzODU1MGE2IGxlZ2FjeS10cnVuaworMjg1NjMgOTY0ZDY4ODhhMjM2OGU5ZTFjMGMxMmU0YzQzNDZhMjMwYmU4NTViNCBsZWdhY3ktdHJ1bmsKKzI4NTY0IDM2OGJjM2E0OTE5ZTMwNWM1YzgzNzJmYjM1MDZmZmViOTBiMDg2N2IgbGVnYWN5LXRydW5rCisyODU2NSA4NTI5ZTU1OGY3MWQ3NDJmZTViZjc2ODNmOTEyMDZkZDE3NzFhNGMwIHJlbGVhc2UyMi1tYWludAorMjg1NjYgYjg5ZWJkNTdjZWI0YTk1ZjJjYjM4MDRhZDM0ZmZkMTk2M2MzNWRhNyBsZWdhY3ktdHJ1bmsKKzI4NTY3IDM4ZmE3NGEyMDVlYTU2ZDg1NjZmNDY5ZjVkNDA0YTQ3MDQ0NTA5NjEgbGVnYWN5LXRydW5rCisyODU2OCBjYzUzZGRiNjQyNGYzYjQxNTI1ZjkwOGU3M2Q3Y2U2ZDRlOTU3YjQ2IGxlZ2FjeS10cnVuaworMjg1NjkgMGYwMDE2NjMyYmU0OWY5ZjA5YTA1MDI5MGQ0YWJjZjgxN2JmNWIzNiBsZWdhY3ktdHJ1bmsKKzI4NTcwIDBkOTJlYjYzZGI4OWFlODk0YjhiMDQ4OGFhN2IxY2U4YjFiODhhN2QgbGVnYWN5LXRydW5rCisyODU3MSBkZGFkMzY3YjgwYzNkNDY4MTJkYTJkYzViOGUzODlkMTZhYTQ3YjQwIGxlZ2FjeS10cnVuaworMjg1NzIgODA2MzRjYTAyZGJmOTM2NGMyMTIyMTkyZjkxYzMwZDRjMDlhY2NkMSBsZWdhY3ktdHJ1bmsKKzI4NTczIGQ0NDZiNTE1MTMxNmVhODJlNzgwNTNhMDE1ZmVjY2JkNGVhZWQzYmQgbGVnYWN5LXRydW5rCisyODU3NCBhZjY5NDVmMzNiMDg2MGZmMTBjMDYwMDI0NzM1ZWJiMWI5ZTJlZjUxIGxlZ2FjeS10cnVuaworMjg1NzUgYmUyNWQyMzZmMjg2ZGQ0ZTcxYWExMWQ5YTcyYTBhMDAzZmE1NDhmOCByZWxlYXNlMjItbWFpbnQKKzI4NTc2IGRlYjY0ZGZjODQxNjZjYTUxNTY3NTIzM2IxMzYwYzg2ZGM3ZTI0NzMgcmVsZWFzZTIyLW1haW50CisyODU3NyA2NWUwZjJlMzk1YWM4Mzc2NjAyNmJkZmVmYTZhYjJlMDIzZWJmYWI3IGxlZ2FjeS10cnVuaworMjg1NzggYWRhYmRiOTllY2M0ZWU3NDZkMjhjYzUzMmYxMmFhOTg1MDc5YjJjMiBsZWdhY3ktdHJ1bmsKKzI4NTc5IDRiMTU0ZjE5ZDFhZjJmNGYwZWRjM2QzZjRjOTkwM2U1ZjhiYmViMDcgbGVnYWN5LXRydW5rCisyODU4MCAwZTIzNjY4NzkyODllMjI2MGNhMjkzMGJmODU1ZDlmNzEyZmQzMDc0IGxlZ2FjeS10cnVuaworMjg1ODEgNGIyMDVlMGZiNDZiYzFmODYxMjJmNjdjYWI2ZjM4ZWJhOTQwOTk4MiBsZWdhY3ktdHJ1bmsKKzI4NTgyIDVjMjQzMzhmM2FlNWY0MjJiNjliNDM5ZjczMWIxZTYxOTQ4NmNjN2YgbGVnYWN5LXRydW5rCisyODU4MyAxMGY5ODg4ODUzY2M2MDQxMmJjZmJlZTc2YzFhODRmOTdiZjk4NDIyIGxlZ2FjeS10cnVuaworMjg1ODQgYWM3NDE1ODdlNjZiOTIzNDc0OGQ2ZGViNGQxYzk4ZDkyNjE2MTEwNiBsZWdhY3ktdHJ1bmsKKzI4NTg1IDVjYjhkNTcyYjRkZWYwMWFjM2MyMmQ1MWMyYmY0ZWU2NjFiMDdlNjQgbGVnYWN5LXRydW5rCisyODU4NiAwYzlkZmQ1YTA2ZDQ0NzBjMDAwNDI5OWFjNDViMDZhNDExYmI2NzhhIGxlZ2FjeS10cnVuaworMjg1ODcgNzQxZWRkMWNhMjNhOGJlOWJmNGQ2MTg3ZjVkMTFmNjFhOGZmMmMyZSBsZWdhY3ktdHJ1bmsKKzI4NTg4IGU1NjZhZjk0NjQ4YmE2NjMyMDk0NTIxYzhjNDA3YWJmMDQzZGU0ZTcgbGVnYWN5LXRydW5rCisyODU4OSA2NDVkYzMzY2Q0ODEyNDBmMDg1OTdiNWQzNmZkZGVjZjdhZTYxYTI3IGxlZ2FjeS10cnVuaworMjg1OTAgYmY5MGZiNzFhYTc2ZDkzYTM2MTMxMjZjZDVjOTM5MmNhMzU5OTBkZSBsZWdhY3ktdHJ1bmsKKzI4NTkxIGMxY2EwM2VlNTE2ZTEzZGM2YmRiMDg4Y2ViNmY3YmUxMTNiM2FkNmMgbGVnYWN5LXRydW5rCisyODU5MiAwZjBkMzQ3NGYzZjY4OWRmZTIxMzdkNTNmOGFhYzQxYzY5ZTJmMjY0IGxlZ2FjeS10cnVuaworMjg1OTMgMTNhNWYzMjYyODMyMTI1N2JlYzdkMDNiYzA2OGQzMTZlYmY3ODJmOSBsZWdhY3ktdHJ1bmsKKzI4NTk0IGUxNjE3MTU2ZjkzZmRjOWE3MzhiZjRiMmY2OWJhMDIwNjNhZTY1ZDIgbGVnYWN5LXRydW5rCisyODU5NSBjMjEzZTliODAwMjYyOTk3OWU1OTE5MWZiMDdhYjNhMWRkZmFhYmRlIGxlZ2FjeS10cnVuaworMjg1OTYgYTM3Y2ZjMWM5NzE2YzdhNjU4MzRmOTNhYTM5NjBiZGFmYTUxY2ZiMSByZWxlYXNlMjItbWFpbnQKKzI4NTk3IDJhYzEwZDkzMmQ3ZjU1OTE3MmIzNmI5ODlmNDRjY2RmOGJiNTJkMGUgbGVnYWN5LXRydW5rCisyODU5OCA2MTA0OGFkYTA1YmNjOTU0OTMyN2Q4YTViNjEyNjNhYTdlNDhlZDNkIHJlbGVhc2UyMi1tYWludAorMjg1OTkgYjZiZmFhNmNhODRkMDU0YTgxODlkY2I1ZjcwMGQ0OTc0MjQxZDIzYSBsZWdhY3ktdHJ1bmsKKzI4NjAwIGI4YjkyYjNmNWIxN2M2ZWNmOWI3OTBlOTliYzE3N2ExNWNlMTVmMzMgbGVnYWN5LXRydW5rCisyODYwMSA5OGQ4YmIyZWU0YzMzODQ4MWNhMWE3YTFhZTJiMWJkNjJkYjIxNzVmIGxlZ2FjeS10cnVuaworMjg2MDIgNDBjMzUxOTEzOWRlOGI2YzAyMDNjZTkyNmI0MjFiNjUyMWNkMGMzOSBsZWdhY3ktdHJ1bmsKKzI4NjAzIDllZTJmYjI3ZDMzYTcyMTg0Yzg3YjIzMmRjMWU5YjIwYmI0ZDNkZjEgcmVsZWFzZTIyLW1haW50CisyODYwNCAxM2QwNmU1YzhhNWMzZWY0Yjk1NTBkZTYyNWY0NzhkNzQ4NTFlMjg1IGxlZ2FjeS10cnVuaworMjg2MDUgMWMwMTk3ZjQ5YzU5YzAzNzc2NWQ1OGEyMjEzMTIwMTY4MzQ4NDlkOCBsZWdhY3ktdHJ1bmsKKzI4NjA2IDVhMTdmMDk3ODMyNjAwOWMwNmExMDZiZmY5Njg1ZWY5OTdkYTBjZDIgbGVnYWN5LXRydW5rCisyODYwNyBmNGU5ZjA5ZGY0ZjIzOTgzYzYzOGIwMTg2NTIyYTdiY2IzOTE5MGRmIGxlZ2FjeS10cnVuaworMjg2MDggMjllZmMyZDgzYWRlNjE5YTBhMzZjNmEyNzYyYTI0NTE5NjdlMGM1NyBsZWdhY3ktdHJ1bmsKKzI4NjA5IDRmNDAwMzA0M2I1MDEzMWVkN2RhYmNkMDAwZDFhODk1M2ZjNzI3OWUgbGVnYWN5LXRydW5rCisyODYxMCAwMzg3MTFhZTEzZTBlMTgzNDhhNTMxMDE4YjQwOGM0YTgzMTcwYjVlIGxlZ2FjeS10cnVuaworMjg2MTEgYmNkYjYwZGY0ZTNlZmIzMzA4YjllODUxNWI5ZTQxMDVkNmNlNmI5ZSBsZWdhY3ktdHJ1bmsKKzI4NjEyIDNlZmJkMTk0M2I4YzFlODg4Y2RjY2Y2ZTNkM2EyZTY1ZTc5ZTBmMGQgbGVnYWN5LXRydW5rCisyODYxMyAxMTUwNTYwYzEwMDMxMDhmMjY2MWRjYzY5MTQ2MmE0ZjI5YzA2MmFiIHJlbGVhc2UyMi1tYWludAorMjg2MTQgMjRmZTJhYzVhZGNjMTljOTg5MjQ4MDlkOTYwOGM5Y2EwYzgwMTZlMyBsZWdhY3ktdHJ1bmsKKzI4NjE1IDhhNmY1NGI3NjM0MzQwNzZjOTJlNmZmNDVlNDU2YzcxNzA5ODBjZGEgbGVnYWN5LXRydW5rCisyODYxNiA0Yjk4NDQxODhkMDRlNzBkMjdlMGY1Njk1MDJhOThjYzc0YzUzODYzIGxlZ2FjeS10cnVuaworMjg2MTcgMTgxNjBjYjYzNjUwOWNmZTRkY2Y2MjU2OWNjOWEyMTZjOWNhZGQ3YSBsZWdhY3ktdHJ1bmsKKzI4NjE4IGEwYmUxODI2MzFjYzNiYWJkMmI3NDQ0Y2FkNmY1MmQ4NmMyODNhMmEgbGVnYWN5LXRydW5rCisyODYxOSA0NmFjMzY1Mzk2YTQ5Nzg0Y2IyMDFkOWQxNTJmYzgwZTBjOGVhNzgzIGxlZ2FjeS10cnVuaworMjg2MjAgMmJmMDk4OTI0YmE0MDk1MmQzNDZiZGVmZjAxOTAyNDZmNmI0ODhkYyBsZWdhY3ktdHJ1bmsKKzI4NjIxIGYxODg1Yjk5YTM5Y2RhYzY3YzZhZmUwZjA4YjVmYTNmYTE3NmRjNjEgbGVnYWN5LXRydW5rCisyODYyMiBiM2M0NThlM2MyODBmOGZkNjFkMjQ5YTJlMjA0ZDE4Yjc3M2U0OGI4IGxlZ2FjeS10cnVuaworMjg2MjMgNDZlNzJhNzA4ODU3ODQ0YjgyZmEwNWEwMThiYzQ0NzFmOTAyMGFhNiBsZWdhY3ktdHJ1bmsKKzI4NjI0IDkwOTYwZjdmNGYzMTQ0ZGUxYTdiNzAwOGJmZTg1NmJmYWI3MGZlYzYgbGVnYWN5LXRydW5rCisyODYyNSA0NWRmMmRlMzRjZDM5YmY3Y2JlMjY0ZTcwOTJhMWMwNDYzNTI4ZTBmIGxlZ2FjeS10cnVuaworMjg2MjYgNWQyMDdlNTdkMDQwMTQwY2UzYjUyYTc2ZWUyNjAxZDcyM2RmOWQ5NSBsZWdhY3ktdHJ1bmsKKzI4NjI3IDU1MDhlMDRkNDk3YzY4NTE2ZmFkZWViOTA4MzY0Y2Y2MWViNTA1OGUgbGVnYWN5LXRydW5rCisyODYyOCA5NmRkOTkyN2UwMTFkOGIxNWE1YTQzY2VlOTkyNzgxZTQ3M2E2ZjkxIGxlZ2FjeS10cnVuaworMjg2MjkgNGIzMmJlNjYxNzc4NWQzNTAwNTRiNWQ0ZWY5OGU0Y2RhODhhNTNmNCBsZWdhY3ktdHJ1bmsKKzI4NjMwIDQ3MDgxYTc1M2VjYzQ4MjY0YzZkOTI4YjE3YTc4ZTFkYzM3N2IyZTQgbGVnYWN5LXRydW5rCisyODYzMSA2NGQxMDVkZDA4MjNiYTliODg0YTBkYjJkMGQ4OWI1MzJhMzE4YTdhIHJlbGVhc2UyMi1tYWludAorMjg2MzIgOGRkNmY1NWZkNGI3ZTdlZDljNWE3ZmEwODY4ZTg0ODM3MzIyYjI3NCBsZWdhY3ktdHJ1bmsKKzI4NjMzIGMxODRlNDE2OGQxNGM4ZTk3OWNmNTg1YTNmYjE5MGUwNmY2YzgzNDcgbGVnYWN5LXRydW5rCisyODYzNCBjYmI2Y2M3OWQzMzY1MDc1NDUwMDljNmI3YmY3N2M1ZTVmMmZmNTAzIGxlZ2FjeS10cnVuaworMjg2MzUgMjdmODM1NGY0MWI2ZTcyNDY4ZWY5Mjc4YTJjMTIzOWZmMjc3NDg1ZiBsZWdhY3ktdHJ1bmsKKzI4NjM2IGFmZDAwMzBlNGMzOGM2MGZkOWE2NjU4ZGJkZjI2MjZjNmRmZGY0ZjIgbGVnYWN5LXRydW5rCisyODYzNyBhYmQ2MjU0MTdhNTM1OWEwNTM5MGI4YzJmZTUwZGMwM2IyODc0NjlmIGxlZ2FjeS10cnVuaworMjg2MzkgMmU3ZmU1NWMwZTExYWNlNzY3NTVjNTlkNWZkNzJhOWJjNTY2MDRhNyBsZWdhY3ktdHJ1bmsKKzI4NjQwIDJkMTNmOWQ5ODEzNTc3ZGY1ZTdmODZkYTkwNTExYzgwODBlYzRhNDMgbGVnYWN5LXRydW5rCisyODY0MSBiZjc1ZjNhNDU5MjdmZmIzMGEzNTMwYjQwZjk4YWVkNWE5NjA4NTVlIGxlZ2FjeS10cnVuaworMjg2NDIgMWU0NmRhMWU2NTIyNmQwN2VhNTEwM2YyNGJlZjEzNGE4NzIxN2VmMiBsZWdhY3ktdHJ1bmsKKzI4NjQzIDI0OTBjZjdlNjhhNDRhZTFlYTU0N2VjMmJkMWRmOTE1ZjMxNDUxNjAgbGVnYWN5LXRydW5rCisyODY0NCA5ZjNlYTM3ZGM0M2NiNzg1OGY0MDdlNDg2Nzk4Mjg3MmI4MGQ2MzhiIGxlZ2FjeS10cnVuaworMjg2NDUgNzY3NjhhZGI2ZjIzMjhiMmUxZTExODA4YzY4ODMwZjY5MzU3NWJmYSBsZWdhY3ktdHJ1bmsKKzI4NjQ2IGNiY2Q3M2Y1ODdhZDdhNDk4ODBiYWQ5MDc5MzVkNzdkN2EzZjRiNjkgcmVsZWFzZTIyLW1haW50CisyODY0NyAxMjk0OWVjZWQ1NWZmN2Q5YzQ0ZjljYWZlMzdkZWFhNTQ2YmJhMjQ0IGxlZ2FjeS10cnVuaworMjg2NDggNzVjZDRjMjAzZDhmM2JkZjM0NzViZjQ0MDQzYjZlZWMxZGVmODcxZSBsZWdhY3ktdHJ1bmsKKzI4NjQ5IDUzMzBjMDYyMDgxMGU1ZGFhYThhN2JjMzhlZjdiZjVjMTdjMjBmYzMgbGVnYWN5LXRydW5rCisyODY1MCAwMjIwYjAwNzVhMzVkNDk4NWE4MmMxNWNiYmE5NjJlODBmODc3YTQ5IGxlZ2FjeS10cnVuaworMjg2NTEgOTUxZjVmMjhmMmZlYjMzYTM5NGJmYTExNjdhMDMxY2Y5NjlmMmI2NCBsZWdhY3ktdHJ1bmsKKzI4NjUyIGNkYWQ2YjA5MjFkNTc4MjUzMTE1OTkwY2FiYmNiOGM0MjcxN2M4MTUgbGVnYWN5LXRydW5rCisyODY1MyA0ZmQwYjc2Yzc0OWVlYjYxYzdiNzVkOTM0Njg2YjA5NDFiZTY1ZTdlIGxlZ2FjeS10cnVuaworMjg2NTQgOGE3YTJmMWY4OGYwNjUzNGM2YmQzOTAyYzgxYjc5MzdjNWQ0M2FiNiBsZWdhY3ktdHJ1bmsKKzI4NjU1IGFjMGUxZTkzMWYzOTAwYzllZDYwYTYyMWI2NjU0ZjE5OWJhOTE3YzggbGVnYWN5LXRydW5rCisyODY1NiA0MGU1YjJkYTlmMjg0M2NiMmJjMzhmNTg3MmFhYzU1NGY2ZjQ1ZTBhIGxlZ2FjeS10cnVuaworMjg2NTcgNWY1ZjFjODI1Nzg0NDAwMGM1ZmZjNDFjNzEyODBmZjYyZThkYmRjZSByZWxlYXNlMjItbWFpbnQKKzI4NjU4IDJiMTcwMWNkNDU2NjIxNGY2NmE0ZGM0MzZlZmJhNjVjM2MyZWQyZTQgbGVnYWN5LXRydW5rCisyODY1OSBlNzA5YTNjOGJmZWNjNWRmZGNiZjE4MDIzMWNiYmY4YzEwNjFiMmVjIGxlZ2FjeS10cnVuaworMjg2NjAgMjNhMmJhZDhkODJjZTY0MTdlYmZmMGJjMzg2MDliY2RjY2M4MTJhYSBEU19SUENfQlJBTkNICisyODY2MSBmZDhhYTdhZWQ0ZDUxZTZjZjc4NmVhYjM5YTIyNWVjYTJmMTc3M2QzIGxlZ2FjeS10cnVuaworMjg2NjMgMTk5MDQ3NTBjMzY1N2M3NTczNjMzMDYwZjhmM2U3M2ZiMjU3OTE0MSBsZWdhY3ktdHJ1bmsKKzI4NjY0IDgwOWMxNGYxMTAxYTk1YjkwNjNiYTczNjExOThkYTQxMjc0YzQwZTAgbGVnYWN5LXRydW5rCisyODY2NSAxYTc4OTVmOTdiMzBkMTM4NzNhZGU5NzcyOTUwNTA1NTdjM2EwNjcyIGxlZ2FjeS10cnVuaworMjg2NjYgODc3NWRlZTYwZDg5YTU1OWFhYzliNzkwOTU5N2ZkMjBlYjllNzU1ZiBsZWdhY3ktdHJ1bmsKKzI4NjY3IDI5NzBlNWU3NjAxZmYyNmJlNDI3OTY1ZDZhNjBhMTRkYjgzNjI1NzcgcmVsZWFzZTIyLW1haW50CisyODY2OCA4ZmQ0ZTIyZTc4ZjAxYzVjODcyOTQ0YmM5YzFmNWVlNjk0NDJiMjU1IGxlZ2FjeS10cnVuaworMjg2NjkgYWFjMWVlOTY2ZjU2YTRkNjBhMjkyNDk5YTFlNmM2OGVhNzMzYTgxMCBsZWdhY3ktdHJ1bmsKKzI4NjcwIDhkNzUxYjYyZWNjNDI1YjRlMDdmZjQzNDU3NDAwOTQzNWZmYWE1ZGUgbGVnYWN5LXRydW5rCisyODY3MSA5NmIyZmZiNzdiMDE3NDM3ZTUwZDQ5MTNhZDFmMzNhZjZmNDNkNTIzIGxlZ2FjeS10cnVuaworMjg2NzIgMjkzMGZhZjEyNWNhOWYzZmQ0NWMxNTNiMzZkZGE3MjdhZWRiNThkNiBsZWdhY3ktdHJ1bmsKKzI4NjczIDcwMDhlNTM1NzllYmQ3NThmZjc4Zjk3ZWFkNDdiMmY1ZDVjNjhmZTQgbGVnYWN5LXRydW5rCisyODY3NCBhMGY2NDE5Y2IxM2ZlNmFjZGM1Y2VkMGExMDI3NWUxNDNlNWE5Zjg2IGxlZ2FjeS10cnVuaworMjg2NzUgNzc4ZjcyMjFmOTU1MTE1NTIxMjQ3MjNlZDRjOGJiYjU4YjU1NzNlZCBsZWdhY3ktdHJ1bmsKKzI4Njc2IGNjMzVkN2I4Nzg1MmY0MTg4YWI5YzZhMDkwMTJhODA0N2RhZjZiNDUgbGVnYWN5LXRydW5rCisyODY3NyBjODA0NDEyM2QxMTBiNmRhYWExOTdiMTliNTFjMzcyYzIzNDBhOWM2IGxlZ2FjeS10cnVuaworMjg2NzggMGJmOTY4ZWUxNWM3NjU0ZWY3Nzc1M2ZkNmQxMzkxYTNhMWEwZTJmMyBsZWdhY3ktdHJ1bmsKKzI4Njc5IDFiYmVkZjU0ODFjOGJiOWQ4YzgwNGNmNGFiM2ZmNzUwODNlYTNlMzQgbGVnYWN5LXRydW5rCisyODY4MCBlMWJhNDFkYzk3ODQyODE2ODJjZTI0MTY3ZjMzMzgxZTQ3OGJiZGUxIGxlZ2FjeS10cnVuaworMjg2ODEgZGJmM2NjMWY0NzMzYzVlYTliYzQ1ZTQwN2ZlMDQ1N2Q1NDI3YzM0ZiBsZWdhY3ktdHJ1bmsKKzI4NjgzIDEzODVkMTc5YTE3YWRhNDIxMTQxZWQ4ZTBlN2FiZjAwZTY0NWNhMTcgbGVnYWN5LXRydW5rCisyODY4NCBiMTI4ZThhMTFlMjk1YWUyM2U5OTg2NjVhMWMzZmI4ZGMwZjU1OTlkIGxlZ2FjeS10cnVuaworMjg2ODUgNDgwY2FmN2MwYTE0ZTA0NWVjMjhjMDFlZmM5ZDc3ZjM2ODRhODUxZSBsZWdhY3ktdHJ1bmsKKzI4Njg2IGZjMmI3MzgwMmY3YjlkOTcxZDg1ZDQ2ZTZmZGJkNWMxNzYxNWQzZjIgbGVnYWN5LXRydW5rCisyODY4NyAxZGQ3ZTUxZmUwYmU3Y2FiNmM5YjhhNDYwYjkxNmU3MDNiMGE4MGZiIGxlZ2FjeS10cnVuaworMjg2ODggNDY5MGNhNzU1YmVjNjM5ZmJiYmNiNmYxYmUyNDNkYjNkZjNjMGM0YiBhc3QtYnJhbmNoCisyODY4OSA2YjBlODQ2YjhkMzdlNTQxNTdhZTc2ZmVlYjliMTBhNDI2ZTg2MjM3IGxlZ2FjeS10cnVuaworMjg2OTAgOWZjYjc3YjA0Zjk3ZmIzMDk3MGFjZTUyN2U4NDQyNzUxYmU0OGZlZCByZWxlYXNlMjItbWFpbnQKKzI4NjkxIDZlYjhkYjUzZjdmY2FjNDgwYTA0MTUzMDVlMTlkMTc0MWU2NDkzNTEgYXN0LWJyYW5jaAorMjg2OTIgZTIwNWM3ZGU1YTVhNDU0YTNjMzcxMTJkMzk3NWI5NmZlOTA4MTMxYyBEU19SUENfQlJBTkNICisyODY5NCAyOTU1OWUyMWNkNTMwNDkzZmI0NWNkYWRmYTkwNWFiMjc1ZTE3NzI3IGxlZ2FjeS10cnVuaworMjg2OTUgMWJkMDg5YjFkYjdmZGFhYzk1YjYwYWQ3NmQzNjk2NmE4MjA4YzE3YSBsZWdhY3ktdHJ1bmsKKzI4Njk2IDNkYjAzYzBkMTUzMTBhYTRjMTc5NzFjMzI2ODk2NDdiMzY4OGEzZTkgbGVnYWN5LXRydW5rCisyODY5NyBlNTdlNGJiNTMyYmFiNDg5MDIxNmY1Zjk2ZjQ1OWFhMTliODlmMDg5IGxlZ2FjeS10cnVuaworMjg2OTggMDRhNTQxZTY4OTY0NDJhNjE2NjZmZjhlY2U4NDdhZmQ0OGVjNGMwMyBsZWdhY3ktdHJ1bmsKKzI4Njk5IGFkNjUyODY5MWMzMDlhYTg3OTJlYWRiNjRlZjBhNmUyMTc1OWY3NGMgbGVnYWN5LXRydW5rCisyODcwMCAwZWM0NzUzY2NiMGZiNjJlMTU0MzRiODQ2MDdlYmVmODRhOGVhZTA1IGxlZ2FjeS10cnVuaworMjg3MDEgNTI3MmI3NjNjMjljOWJhN2Y0ZmMyYjAwOWJiNmZhNTk3MGE3NzQzMiBsZWdhY3ktdHJ1bmsKKzI4NzAyIDYxNThmY2E1YmNiZjIyYTlmNjE4MTVhMmMwMzJmNjdkY2E2NDk4ZWUgbGVnYWN5LXRydW5rCisyODcwMyA0YjYxODUxMjg4MTRjMTQzY2M5MThiMDhiMTk4ZWY2YWE5ZGQ2YzliIGxlZ2FjeS10cnVuaworMjg3MDQgZmRhNDhkZDk0YjA3MDQ5MzFlNTJhZTJkZDdhODZjM2FhMjY0YzNlZCBsZWdhY3ktdHJ1bmsKKzI4NzA1IDczNDI5Y2E3NDhjZWJiYWUyZTQ5ZDlmZTA4ZjllMjk0ZGFkYWNkZWUgbGVnYWN5LXRydW5rCisyODcwNiBlOWE2M2U0ODMxMDljZThjOWI1OTUwZWNhNGNhZTE2ZDIxNmY2NDllIGxlZ2FjeS10cnVuaworMjg3MDcgODVkODFlMDllMmY3ZDc5NTRhMmE0Njg2NWQ2NTRjMTQ1NGVkNTBiNCBsZWdhY3ktdHJ1bmsKKzI4NzA4IDZlYzE1NDY4NDBhZTY2MmZmODVhZjhhMzY5OWQxMDBkOTljYzYxYTYgbGVnYWN5LXRydW5rCisyODcwOSBhMDNmNzc4NjliMmY1NDk2MDJmMWRhZjVmMjk5NzhlZjIzMGJiMTlkIGxlZ2FjeS10cnVuaworMjg3MTEgOTczZjVmZjIwN2NjNThhNWI5NTJkODE5NzkzYzU3ZDMyMDYxZDkzOSBsZWdhY3ktdHJ1bmsKKzI4NzEyIDVlYTgyY2I1NTY4MjNkNWJjOGExMDE3NWE2YjYwNzQ5YWU4MjZiOGEgbGVnYWN5LXRydW5rCisyODcxMyA4NTRkZDc2OTZlYjJiZWFjYTI3Y2Y1NzQ4M2FmYmU4OGM0NzU5MjI0IGxlZ2FjeS10cnVuaworMjg3MTQgNTdkM2I5NjY1MWI2ZWM4NjM1MDg0NzlkNzk4YmM3OTY4ZmU4MGNjNiBsZWdhY3ktdHJ1bmsKKzI4NzE1IDhjZTRiYTg1Mzk2OTE5ZDFmMjRmMjk4ZWQ1MzRhMDBiMWM1ZjkxY2YgbGVnYWN5LXRydW5rCisyODcxNiBjNmRlNjhjYzhlMmJiY2U5NzBjM2QzN2VkNDk0NDk4ZGMyNGRiNDM4IHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyODcxNyA5M2UyNTQ1NzdjZmE1MzFiOTg4ZDhmYTI4M2JhNzlhMjBiMDQwZGY3IHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyODcxOSA5OGUxMmFhOGM1NDc1ZjU3YjQzMjc5MjFkMGQ0YTk2NWU2OTcyMGVkIGxlZ2FjeS10cnVuaworMjg3MjAgZmIwMGZkOTMxODhhNzY1OWY4M2RhZmNlZGY4ZTFlYjcyZDgzMTFhOCByZWxlYXNlMjItbWFpbnQKKzI4NzIxIGM3NzI2NDBkNTM1ZTA0NDE4YTc0ZmVkMjM5MjRiZjQxZTI0ODE0NDYgcmVsZWFzZTIxLW1haW50CisyODcyMiA2YzIxZTk1YTQ4ODE3NzU2ZDZhZDBlMTcxOWE5ZDlkMDliZWVlMDYxIGxlZ2FjeS10cnVuaworMjg3MjMgOWI4OTI0YmQ1YjVjY2RkZDE0YTY2Y2UxMzcwZGNiNGJiNDJkNTkxMiBsZWdhY3ktdHJ1bmsKKzI4NzI0IGYzZDg4ZWUwNTkyOGQ1MDYxYzBkZjQxNDdhZjQ3NmU2MjAyODgwNDcgbGVnYWN5LXRydW5rCisyODcyNSA0NjkyYzQ4N2VlOTExZWFjNThkY2FjNWViNTBiNjIzNzkzNTUyZWRkIGxlZ2FjeS10cnVuaworMjg3MjYgMWJiZjhlNTVhOGJiOWIwZWU0NDVjOTQ5Y2E2YTcwODU2ZWNhMDUwZiBsZWdhY3ktdHJ1bmsKKzI4NzI3IGFlYzBmOTQ0ZjZhMDE3NjFmMzAzYTQ0MDMxZGI3NGNlNTVjZWQ1N2IgbGVnYWN5LXRydW5rCisyODcyOCA2MDlmM2QzMWQxYzI0YTczMDg4ZjVjMzVmNDdlYzBmN2ZiYzRiZWY5IGxlZ2FjeS10cnVuaworMjg3MjkgY2Q3MGM4ODAzZWI1YzBkMGE0YWJhYjRkMmJmZmNhZmE1YmFlYTExZCBsZWdhY3ktdHJ1bmsKKzI4NzMwIGM5N2E0Y2UzYzU4ZWRhYmU2ODcxODc4ZDcwOWVjMDYwYTVkZjk0ZjkgbGVnYWN5LXRydW5rCisyODczMSA0ZDZmODIwNDIzNGE4ZDY5Y2VkMmEzNWMzMGViYzljZjQxM2ZlZmFkIGxlZ2FjeS10cnVuaworMjg3MzIgYjY0ZmM2YTEwNDllOWI3MTU3ZjlmYzcxZDM5NjQwYTRiNjkyYjEyMSBsZWdhY3ktdHJ1bmsKKzI4NzMzIGM0NTU2NDc2OGY1MjZlZGY5YTZiZTE5MjhjZGRkZjliODhjM2YyMjAgbGVnYWN5LXRydW5rCisyODczNCAwNTVmN2ZhZTgxNTA5MTM0ZmUzOWVjMWFjNmI0MWFmMGZiNzYyOGM2IGxlZ2FjeS10cnVuaworMjg3MzUgNzUyZjY4OTVjYzYzMGE4ZmY0ZGI3YWZiMDgzODdjYzk1OGQzMWEzOCBsZWdhY3ktdHJ1bmsKKzI4NzM2IGY1ZWMwOGQ0NTg1OTI4NzRjNDlkZWMyODMxYjc1YzYzOTMxYzlhODcgbGVnYWN5LXRydW5rCisyODczNyBkYTRlNWU0NmFlM2ZiOWVkNjk4MWJiMDhhYmU1ZDFjM2E2NjFlMzFmIGxlZ2FjeS10cnVuaworMjg3MzggNjc3NzgxMTk2MTUyNjA3N2ZhOGRiZTc5OTQyNTdhMmMyZmMwNzA5NiBsZWdhY3ktdHJ1bmsKKzI4NzM5IDYxYzI1MDZlYzJlOGVhNGQwY2Y5ZDUzNTU0YTI0YzJmYzRhYTgzZjUgbGVnYWN5LXRydW5rCisyODc0MCBkYmY5MmM1NWZiYjhiNzg5MjJjNjQxYjZlM2U1ZTIxMGQ1NDk4MDQ4IGxlZ2FjeS10cnVuaworMjg3NDEgNDAxNDliNTAwMjBjYmI2ODZlYzc3ODQ1NThmNzNmZjUyZjY4YzBlOCBsZWdhY3ktdHJ1bmsKKzI4NzQyIDFiMGVhNDcyNzljNjhhZDhmNDBkNDBmYTIzNTEzNWE1ZTJiMWExODcgbGVnYWN5LXRydW5rCisyODc0MyA3YmUyNjU0NGJlNGUzNWU0ZmU1YmM3ZTdkNTQxZGI2MDNlNmY0NjdhIGxlZ2FjeS10cnVuaworMjg3NDQgYzY3MDk0NWM4Njk1MjI4ODljMjA1ODk4YzM2MGJmMDE2ZWI4YjU3ZCBsZWdhY3ktdHJ1bmsKKzI4NzQ1IDIyZDE5ODkxMGIyMDhhNjA2NzQyNjZjYzIxMjY3NWFiMTAwNjQ0NDcgbGVnYWN5LXRydW5rCisyODc0NiAxYzdlZTIzZGM0OWUxNjk4YWU3OTUwNWM3NjBjNWQzOTJjOWJlMmI2IGxlZ2FjeS10cnVuaworMjg3NDcgZWZlNjM5MTUxYmZlYzViZTIxYWY1MjEwNjI5MTAzOTM5NTEwMWNjMiBsZWdhY3ktdHJ1bmsKKzI4NzQ4IGViMjhkY2RkZDM0ZGJiYzI2ZTdlMjBmOTY1MWJiYWEwNDU1Y2NmNTEgbGVnYWN5LXRydW5rCisyODc0OSBkZjAzZmNjNjYxMDQzNjE4Mzg3MzUzNTMwMTRjMzExNmJiMzJkYzdjIGxlZ2FjeS10cnVuaworMjg3NTAgNzE3NzliODM5ZTA5ODc0ZDliYTQ5Mzk3NzVhMDAzMTVhZjVlYjJhNyBsZWdhY3ktdHJ1bmsKKzI4NzUxIDAzOTljOGFlYTdiMjg2MWQxN2Q4MmYxYjk5Y2Y3OWIzNzk2OTMxOTEgbGVnYWN5LXRydW5rCisyODc1MiBiZDY1MTBjNWNhYmM0N2Q5NWY1ZjZmZjA5NDNjY2I3MTUzMGYyYjk0IGxlZ2FjeS10cnVuaworMjg3NTMgNDY4YzNiZTZjM2UyY2QxMjQ4OWFlYmQxMjY3N2E1MzMwMDA1OTc1MiBsZWdhY3ktdHJ1bmsKKzI4NzU0IGFiYjc2OGI0MTdhMTMzMGQ2ZjQzZWRkNjg0NjdiOGY1Y2JkOTU0MzAgbGVnYWN5LXRydW5rCisyODc1NSA4NmZmOTViMWM2MzZkNWUxNTllMGI0NThmOWZhNmMzMDBiNmFlMWIxIGxlZ2FjeS10cnVuaworMjg3NTYgZWI3YjdiNzE5ZWU1NjQ5ZGU5MzY0NGU1MjJjMzVkODdkMzcxZjM4MyBsZWdhY3ktdHJ1bmsKKzI4NzU3IGJkM2I5MmRjOTQwYTY0OWVjN2VmMGQyZDFhMTY2Yjc2NTg0Y2YzY2IgbGVnYWN5LXRydW5rCisyODc1OCA4ZWRhMTY2YjEwNGVjYTkwNGRhMmQ4NjExMzlhNzllNzYwMThhYzdlIGxlZ2FjeS10cnVuaworMjg3NTkgOTJhM2Q4OTdlODE5M2VkMjM4ZDM0ZjE2NjcwMDIxOGI2NGY1MzRlMCBsZWdhY3ktdHJ1bmsKKzI4NzYwIDUzZTJjNDQ4YjE2OWEzMjc1MjQwMWFhNmQ4MWIxMzNlNGFiM2M2OGUgbGVnYWN5LXRydW5rCisyODc2MSBiOTY4ZjAzODIzNWVhMWE1NTEzNGU4MTc3Y2NjYTFlOTQzYTZiYTdhIGxlZ2FjeS10cnVuaworMjg3NjIgZGYwZmY1YjE3ZTFhYTE1ZGRiOWQ4MDc2YTAzMDVkZDMxMmQyYmRlMyBsZWdhY3ktdHJ1bmsKKzI4NzYzIGU5ZTc0Y2M1NTQwYWQ4YmEwZjFiM2RlMjhhYzI4NTlmOGFiZjE4MDMgbGVnYWN5LXRydW5rCisyODc2NCBiZGMzZGVmM2QwODVkZGFkMWZiOGE5ZTNiOTgyY2M1ZTg4ZWUwZGYyIGxlZ2FjeS10cnVuaworMjg3NjUgODIzZjAyYTIyMjEwZDhhNmE0YWRhNzQyNzA0MGVlZjczZGUxMmNjZSBsZWdhY3ktdHJ1bmsKKzI4NzY2IDE0YWQ1NjBmNGE5N2Y4MWI2OWY1ZmQ2YTlkNjY3NWNiYTE5YmJlMDEgbGVnYWN5LXRydW5rCisyODc2NyBmMTc1ODI3Mjc2NGM3MGM1MjkzMDUwMDIwZDBiYzA5MWM0YjhkOTM5IGxlZ2FjeS10cnVuaworMjg3NjggN2RlODhjZjA3ODNlMmNjM2MyMmQ1NmM3ZGE4ZWJhYjFkYjExZGY2ZCBsZWdhY3ktdHJ1bmsKKzI4NzcwIDljN2EwNmFjOGIyNzcyZTk0MWNkNDJmMGYwNTAzYmQ0MzlhYTgwN2QgbGVnYWN5LXRydW5rCisyODc3MSAyNGU3ODliNmNjYjY0MTZkMDQzZjY0YzlhZjJlMjQ5ODJjNTU1NzgzIGxlZ2FjeS10cnVuaworMjg3NzIgNmI2MmFiODQ4NWViODE5NjQ3Y2M0NzE2YjViNTQxOWU3NmZlNjRlYiBsZWdhY3ktdHJ1bmsKKzI4NzczIDA3MzkwNDZhMGMzYTUxNDgzNGRmYjJhYjkyN2I1MzRiNTkyMjQzZTAgbGVnYWN5LXRydW5rCisyODc3NCAzMzdmY2MyNDk4NWIzNDRhYjZiODgzOGMzN2RlNTg4ZGFlNDM2ZDE5IGxlZ2FjeS10cnVuaworMjg3NzUgYTNiMjk1OTE4YzVmZDVhNTNjZjEwYWM2MjRkNmIyMGFhN2JkMjE3OSBsZWdhY3ktdHJ1bmsKKzI4Nzc2IDMzYjI0OWFmNDM2NGRjODRiOGFlMjFjZjU0NDRlNmU3ZmU0YWRlMzAgbGVnYWN5LXRydW5rCisyODc3NyA5Yzk1NGU2NGQxN2E5NGEwYjE0MzBlZGFhNTY4Y2IwZDliYTU3ZGI2IGxlZ2FjeS10cnVuaworMjg3NzggYTMwMjMwODgxOWYwNWRhODc5MTc3MzU5ZmNkZmZmZGQ3ZTgxNzE5MyBsZWdhY3ktdHJ1bmsKKzI4Nzc5IDJmNDRhOTBmZmYwNzdlZWFmYjdjMmM5NjI5YTJmNDY4ZjgwMzY5MWEgbGVnYWN5LXRydW5rCisyODc4MCAyYWUyYTIwM2Y0N2FjMmE2ZWE1OWY1MjBiYTk4Nzg4ZDQ3YzE4OThmIGxlZ2FjeS10cnVuaworMjg3ODEgOWY2MTcxMDYyOGM0ZjI5NWJiNTE2ZDUzM2MxZGVkNDkwYTI0YTlhZSBsZWdhY3ktdHJ1bmsKKzI4NzgyIDJjM2I1Mzk3YzNmOWVjMTE2ODk2YWI4ZjBiZTJlZWY0N2VkNzA1MTIgbGVnYWN5LXRydW5rCisyODc4MyBiZDI0YzI1OThhNDI5ZDc2ZjE1MTBiODc5MGVjY2MwNzdmYjc5YmQ4IHJlbGVhc2UyMi1tYWludAorMjg3ODQgYjUyOWFjMmY5YWI2NGI5MGJkMDE1M2FkYjkzMjg0ZTkxYjdlNWY5YyBsZWdhY3ktdHJ1bmsKKzI4Nzg1IDQ5YTNlYmU5ZGYxNDc2NjU1M2ExMTFlN2Y0NWRhMzFhM2U5NzVhYmYgcmVsZWFzZTIyLW1haW50CisyODc4NiA2ZWE4OTg3Yzc0NmZiNTVlNzY5NDBlOTFlMGM3Mzc1MmRlMTc2M2Q1IHJlbGVhc2UyMi1tYWludAorMjg3ODcgMjdmZjY5NGM4YzA1MGI0NWYxYTk3Yzk5NDAzN2JkODVjY2ZhODE3OCBsZWdhY3ktdHJ1bmsKKzI4Nzg4IDNhZWNhNmM1MGYzODAwY2FlOGI1MjllYmZmOGFjZWZlNmMzMTg0MDcgcmVsZWFzZTIyLW1haW50CisyODc4OSA4MDI1ODNmODhhZTBkODI1OTI5ZmZkMWE1YTAxY2JmYjNmMzhjYTI5IGxlZ2FjeS10cnVuaworMjg3OTAgYzhjYjg5NzkwNjJjZTdkNjE2YjQ2MWEwNTFiZDkyNWNjYWM5NTNlYiBsZWdhY3ktdHJ1bmsKKzI4NzkxIDBlYjg4MjA2OGE3Y2VlMzZiZjFjOTI5YjIwMzY5Njk0ZjlhMGEwM2YgbGVnYWN5LXRydW5rCisyODc5MiA4NjYyMGFmYjIyMTI0YmRiMTVkODhhMGE0YjY0MWNhMDNkYjgyZjk1IGxlZ2FjeS10cnVuaworMjg3OTMgNmRlYzc0ZjQ0MjQyMDlkZjNhODk1OWE5MGQ4MDFmZjJkZTk1MTQ0ZSBsZWdhY3ktdHJ1bmsKKzI4Nzk0IDM3ZmM2YTgzYTEzNGVhNzJkOTVkNjA0YTY0MGY0ODQ4MWNkNDBjMDggcmVsZWFzZTIyLW1haW50CisyODc5NSA1ODZmYTI0NDU5ODI0NzMyYjQ1Y2RjYWQ0OTg0MWI0M2JlNWY2MTFkIHJlbGVhc2UyMi1tYWludAorMjg3OTYgYzQzYzQyODM5MDExOGUxNTQzOGNkMjBjMTI5MzdhY2E1YzRmZjcxNyByZWxlYXNlMjItbWFpbnQKKzI4Nzk3IGU3ZGIxYzlhMTBmY2I4NzExMjI4NmY4ZWFhODYwMDMxZTAxNjhiOGQgcmVsZWFzZTIyLW1haW50CisyODc5OCAwMzNhZGNiYjRjYjJhNzQ0YTliMzQyNTc0YWE1ZmE1Y2Q2NWU5NTM5IGxlZ2FjeS10cnVuaworMjg3OTkgMmJhODBhNDMxMmZmNTAyMDdiNTIzYjc3NjU1OWZiNzUzM2JlZTM4ZSByZWxlYXNlMjItbWFpbnQKKzI4ODAwIDg1YWI0NjUwZGZhYTZhNDMxMmZjN2M1OTY4OWJmZmIyMWI4MzU1ZDggcmVsZWFzZTIyLW1haW50CisyODgwMSA5NmUyZWZmZWM5NGQxYmVhNTkwYTYzNzA0NDc2OWY3ZTVkOTdmNjJhIHJlbGVhc2UyMi1tYWludAorMjg4MDIgOTg4ZjQyNWQxNzY2NWU3ZGNjZTUwMjBmYjk0MjE1ODE3ZDQzOTk4MSByZWxlYXNlMjItbWFpbnQKKzI4ODAzIDQ2MTcwZTU2MGUwMWUxOGM3ZDJhODM5MzRkMDE1Zjg3OTFkNmEyNDkgcmVsZWFzZTIyLW1haW50CisyODgwNCAxZjllOTc5ODMwMmJmZmMwYjE3MWI4YWFiODQwMTI4NzdhY2IxZGNhIHJlbGVhc2UyMi1tYWludAorMjg4MDUgMGZiYjc2YjUwNzRiN2U5MWZmNGNjZGIyYjRkMzUwZWJmZTE1MmE5YSByZWxlYXNlMjItbWFpbnQKKzI4ODA2IDNmNTA0MTI5NTQ0OGM4NmJlNWI5YjA2NzhjODg5ODMzZjUyZWI3YWIgcmVsZWFzZTIyLW1haW50CisyODgwNyA1MjU1YjQ1ZmRkYzI1OWFiNzhiMWQ4MmQ5ZGZmZjkyM2RhZjI3M2ZmIGxlZ2FjeS10cnVuaworMjg4MDggZjNjM2U3MzJkMTJlNjk0YmUxY2NmNDUwMmJlM2MzNzc3ZGVjZmJlMSBsZWdhY3ktdHJ1bmsKKzI4ODA5IDUyNDIwZmU2N2M5NjkwMDQ3ZGEzYzgwOTc5MTE4MjVlZTM0NWFlM2YgbGVnYWN5LXRydW5rCisyODgxMCBjNjMxMjM2MGM4NjE3MWZkY2E5ZWQyMjdkMGVmMDczNjE3N2Y4OTZjIHJlbGVhc2UyMi1tYWludAorMjg4MTEgMzdkODhiNDJlZDExYThhMDkyMzc5ZGM4YzMyZjZlMjdmMTZhMjYxZiByZWxlYXNlMjItbWFpbnQKKzI4ODEyIDY1MTM0NjZiYjc3NDdhMDczNGY5ZmZjN2EyNzVjYjJiODY2N2VhYWIgcmVsZWFzZTIyLW1haW50CisyODgxMyAwYjY4ZDgxMGE4YmVjZjJiODc3OThjNDIwMTQ0NjNkOTNjYWQ3MzJiIHJlbGVhc2UyMi1tYWludAorMjg4MTQgOWRkMjFjMWZhZDlhNDAwNzAzMDA5MTE0ZDA5NzhkOThhMjY3ZGY5ZCByZWxlYXNlMjItbWFpbnQKKzI4ODE1IDc4NmUwZTlhNWY3ZjkyODI3ZTJkNTdkY2UxZWViMGMxYWE4NTc5MDAgcmVsZWFzZTIyLW1haW50CisyODgxNiAxMTZiMDg1OGQ0YjBiZGIwMjQ0ZGY0ZGEzMmExMTMzODNhMjFmZDdkIHJlbGVhc2UyMi1tYWludAorMjg4MTcgNjUxYWJjZjYzZmUxM2QzZTI2ZjA4ODM4ODcwY2MxNjA4MjA4NjBhMiByZWxlYXNlMjItbWFpbnQKKzI4ODE4IDJiZmU0NGM0ZGFjYmYzNzhkNDI4NTk2NmUwMDJmYzc4ZGYyZDlhMjIgcmVsZWFzZTIyLW1haW50CisyODgxOSBjYWEzYTJmYzZhMjA4NjU5ZGIxNTgyMDM4MTQxODRhN2ViNjU2YWNlIGxlZ2FjeS10cnVuaworMjg4MjAgYzA2NmRjM2VhMTUyMTY5OGU2YzBjYmJhNDM1ZGFjY2U1ZGE2OTM0NSByZWxlYXNlMjItbWFpbnQKKzI4ODIxIGU4NGQzMjRhYzY2YTQ4ODY1YzQ4ZmMyMmY4NzhiODk3OWU0MWJiYjEgcmVsZWFzZTIyLW1haW50CisyODgyMiA0ZGYwZTY5MWY0ZGFlODZiMDdjZWVkMjUzMzhmZmYxZjU4Y2JkZDEzIGxlZ2FjeS10cnVuaworMjg4MjMgMmRjYmJiYjAwN2MyYWI3N2MwZGVlOTlhZDU5ZjZjMGNiYTQ5MTRiMSByZWxlYXNlMjItbWFpbnQKKzI4ODI0IDRkMTBjMzE3OWVhZDBmNTYyODEzNjA1ZWMzYjMyOGE3ZjM3NjNiZGYgcmVsZWFzZTIyLW1haW50CisyODgyNSBmYmM4MjBkNzAxYmNhOThjYmM0MDRmZmZhYTUwNDkzYjgzMzE3NWQ4IHJlbGVhc2UyMi1tYWludAorMjg4MjYgNWU0ZThjMWFiNzA0MDAxMzEyZTA3OTIxYTBhMGY0MTM3YjI2MDEzNiByZWxlYXNlMjItbWFpbnQKKzI4ODI3IDRkZjgwN2FkZmY4NzNkNTBiMTNhYTNjOWJlMzdiNDgwYmE1YzYxYzkgcmVsZWFzZTIyLW1haW50CisyODgyOCAxMDc2N2E4YzJlMmQ2NWNkOWUzNWIyMWIwMjQxOWZhMzFlMTU1MDk0IHJlbGVhc2UyMi1tYWludAorMjg4MjkgMGM0NGZhMDRmNTMzNWVmZGQ4ZTMzMDJmOGZkMWVhM2I0MmFkMjQzMCByZWxlYXNlMjItbWFpbnQKKzI4ODMwIGU1Mzc4N2IxYWQ4NTgxODA2YzI1ZWE2YWM0YWI4OThhMTAwODI4ODAgcmVsZWFzZTIyLW1haW50CisyODgzMSA3MjVmODc1OTdhZDllMjdjYzQ3OGIxZWUyNTFkNjhhMzQwZDdmODVjIHJlbGVhc2UyMi1tYWludAorMjg4MzIgZTg4OTFlNjk1MmViNjAxNWNjMDYwMDhmZGM3YjcwN2U3ZmM2ODZiNyByZWxlYXNlMjItbWFpbnQKKzI4ODMzIDQ2MmMzNWI5YWMxZmE0YTQ2MjVjMDFlN2E5M2M4NjZhNDNhMDQzNjIgcmVsZWFzZTIyLW1haW50CisyODgzNCA4MGNlMzg0ZDQwOGE2ZjllOTQ2ZTM5YjI5MTVlYTEzN2Q1Y2FjYTc5IHJlbGVhc2UyMi1tYWludAorMjg4MzUgOTExMTA3ODI5OTAzYjhhZTMwYjcyMzA3ZDU5Mzg0MTdhNWRhOTYyNyBsZWdhY3ktdHJ1bmsKKzI4ODM2IGU1ZTA1N2E2ZDI4MWYzMTVmZDJhNzA5NDYxZDJlMWE2ZjBmY2MwM2QgcmVsZWFzZTIyLW1haW50CisyODgzNyBkZTIxZTkzYmFkZjYzNjU4MzNjNmY3OTNlYTRlNmJhODAyNmNmMWY5IHJlbGVhc2UyMi1tYWludAorMjg4MzggNzkyOWQ3NTY2YTk0Mjg5MTk3ODAxNDlhOWJmNDhhNjU2NzI5YmNmYSByZWxlYXNlMjItbWFpbnQKKzI4ODM5IGJiMjAzM2M4YjkyZmRkYzQxOWUzZjE5YjI3ZDA4NmQ3YzRjZWM2NGUgcmVsZWFzZTIyLW1haW50CisyODg0MCBmNTU5ZTk3YTQxYmU0ZDBiNDZkOTdhZjFlNzU4ZWNmNDY2Y2Q5NGUyIGxlZ2FjeS10cnVuaworMjg4NDEgMzBiZjU1NDkxZTc5ZWRkOTY5OGFkMzhjOWE0M2IyNWYxNTgyNzE2YyByZWxlYXNlMjItbWFpbnQKKzI4ODQyIDljYTYwOWY4YmRmMjI2MTdjNDc4NmNkZTczMzA2M2MwYmE3YjZiMTkgbGVnYWN5LXRydW5rCisyODg0MyA4OGQwZjZkNmIwM2VjMWJhNTlmMGIyMDMxNDNjYTRkNTJlMWVlMWRhIHJlbGVhc2UyMi1tYWludAorMjg4NDQgYjQ2YzdkYTA2NDEwZTcxZjk3YzQ5NzczYTJkZTdmMzM3NzA3ZjQ1NCByZWxlYXNlMjItbWFpbnQKKzI4ODQ1IGRjMzE2NjhhN2MwOWRjYmIxNTcyNzkzZGUzY2NhZjBlOTI3YjNkZmMgbGVnYWN5LXRydW5rCisyODg0NiA5NzQyNGI5OWRmOTFjNThmMjE1MTYzNTAxNzEyMzI1MjEyMGMxNzI5IGxlZ2FjeS10cnVuaworMjg4NDcgZDRmZjk4NDE0MTdhZTA2ZjI1MmYzOWVlMzI2Y2ZmMzhjYjM5ODc1ZiBsZWdhY3ktdHJ1bmsKKzI4ODQ4IDAyMjZmMTY1NmQ4MTUxZjc4YWZkOTM0OGI4ZmY2NzIyNGE4ZjNkMWMgcmVsZWFzZTIyLW1haW50CisyODg0OSA3MTAzNTQ4MzNiZDE5ODA5OGY1NjZhZTQ1MGZlNGQ4NTE5OWYwMGIzIHJlbGVhc2UyMi1tYWludAorMjg4NTAgNTFjZGY0NzBmOTc0NDA5ZjViMDE3YmJmMWU2YWQzYjQyY2MyMGYyZSByZWxlYXNlMjItbWFpbnQKKzI4ODUxIDc1YzRhNjdkY2I4YzM2MDMyMWFiYjUxZmM2YjQyODUwYzk5ZjYyODggbGVnYWN5LXRydW5rCisyODg1MiA0MTBmNmVhYmJjMGI4ODQ0YTBhMWYyMGZmNGMxY2NhYWE4ZDg3OTA2IHJlbGVhc2UyMi1tYWludAorMjg4NTMgNmZjMGI3MTZjMDM4OWEwOGQzNzFlMjQyZjA5NDQ3YzRiMTkyZDY2NiByZWxlYXNlMjItbWFpbnQKKzI4ODU0IDQwODAxZGY4NTkxMjFhNGU2MGEwOTc4ZjY0MTgyNDc0NmRjODhiZWUgcmVsZWFzZTIyLW1haW50CisyODg1NSBiNDhhMjM2YjhjN2I3N2Q4MTBiYTgwNWI0NjRiMzRiYjQ5M2MyMGNmIGxlZ2FjeS10cnVuaworMjg4NTYgZDkzNWExZDcwMjMwYjkxOGZlNjJlOWYwODg4ODUyMjUxOTFiZGI0MSBsZWdhY3ktdHJ1bmsKKzI4ODU3IDRkN2U5ZTQwZDNlNGFjOTgyNzFmZDJmNGZlNmQyMzBjMjZkZTJiNWIgcmVsZWFzZTIyLW1haW50CisyODg1OCBkMmRiZWExN2ZjNmZlOGMwZDA2OTgzZjlkMTk1NjQwNGIxMTYyODA3IGxlZ2FjeS10cnVuaworMjg4NTkgOTQzMTVhOTdiMzllNjZlY2M1YzE1MDJlNTM0MThkMmRlZWVjNzYxYSByZWxlYXNlMjItbWFpbnQKKzI4ODYwIDdkMGM0ZDdlMGE4YzcxOTFkMmI4OThlNjZkYzcwY2VhNzJmMTRjNjYgcmVsZWFzZTIyLW1haW50CisyODg2MSA0NWEyMTRmMWJmMGI0NTRhZmY5M2M4NzcwOWFhMjEwNWM5OTZkYzM3IHJlbGVhc2UyMi1tYWludAorMjg4NjIgODMyMDg0YTMwMjgwOTZjMzdlMGVlZjc4ZjVmMmE5YTU5MWZjODdmNSBsZWdhY3ktdHJ1bmsKKzI4ODYzIDA0ODk2OGNhMjY2OGQ0MjM1MjI1MDUyMGI1ZDdkNTc3YTdiY2MyZmMgcmVsZWFzZTIyLW1haW50CisyODg2NCAyNTNlMzk3ZGY2N2IxZTM3NDNmOTFjZTY5M2Y0MDdlYTMwNDhkZWIyIGxlZ2FjeS10cnVuaworMjg4NjUgMGEwOTVhMjU3NDI0NTAwMzkyZGNkY2FmNzRlM2Y3NmZmYzgwMDIxMSByZWxlYXNlMjItbWFpbnQKKzI4ODY2IDE4NDllMjM1NTJkZmJjMWUxNmE5YzM4ZmVlZjk0YzBkZmU0NmRhNmIgbGVnYWN5LXRydW5rCisyODg2NyA1NmNiOTJkYmJhYWZjMDViZGVlYzEwMzQzNTNkYjM2ZTYxODk0YmQwIGxlZ2FjeS10cnVuaworMjg4NjggYWEzMDQ4ZWJkMTlhMGE1YTZkODQ5MDhmM2ExODQ0MzM2YmFjOGY2NyByZWxlYXNlMjItbWFpbnQKKzI4ODY5IGY3NDlkNTBkY2NkYzVlYmZlNTA0OWE5MmE0MTNiNWMzN2VmYmYwZjAgcmVsZWFzZTIyLW1haW50CisyODg3MCA5MWI0ZjdhYmViYThkNTUyY2IyMmI5YjBmZTBhZWI0ZGVlNWI1ZGFhIHJlbGVhc2UyMi1tYWludAorMjg4NzEgZmIwZjdjYzVhNjlmNmJmNGE1NmZhODk3Y2Q4M2EyYmEwMzgwZmMwMiBsZWdhY3ktdHJ1bmsKKzI4ODcyIDYyMzdiZTI3YTU5NzM1YmY2ZTcwMjE2ZTBlOTRmYmNhYzc0NjdiMTQgbGVnYWN5LXRydW5rCisyODg3MyA1NTRmOTc1MDczYTAzODBlZjcxODk1YzZiYThiOGQ3ZDMyMDJiNTljIHJlbGVhc2UyMi1tYWludAorMjg4NzQgMjlmNjE2MGVjMGJkOTNjODA5YTQzNGVjMjI0YmQzZjEzYzQyMGJmYyBsZWdhY3ktdHJ1bmsKKzI4ODc1IGZlNjIxMWJmOTBiYjhmNTQ5OGQ2OTZlMjcyMDFmZDlkYmI0ZDg1NjAgcmVsZWFzZTIyLW1haW50CisyODg3NiBjNmYzMDcyZDU5NWQ1NGY1MTMxMjc2YWNkNjg2YTkzNjA5ZWVmNThkIGxlZ2FjeS10cnVuaworMjg4NzcgZWIyNTJiMzc0ZWNmYzg1ZTZiNzcyZWRlYjI1ODkxODJiYmY3ZmZhMCByZWxlYXNlMjItbWFpbnQKKzI4ODc4IDFmOWIzY2I2NmUwOThlMDNjNGRhYTIyZmViZjg3ZTVlOWFkM2M3Y2MgbGVnYWN5LXRydW5rCisyODg3OSAxMTA4OGM1MzQ2N2ExNzY4ZDZhYjliNDQ2ZDIyODgzZWFhOTc5NWMxIHJlbGVhc2UyMi1tYWludAorMjg4ODAgNzJkNTZiNDQ2MGNiOWRmM2NhNTE5ZDc1MTMxMDBhY2NiNGJlZTRhZiBsZWdhY3ktdHJ1bmsKKzI4ODgxIGI2MjUxNGMyMTc2MjllMjAzZTQzYTZjZTZmYjNlMmJlM2JlZGYzZWIgbGVnYWN5LXRydW5rCisyODg4MiAzYzNiODk0NmRjNjNjNWRiNjkyOGE1Y2M3NjcxMDViNzBiOTIyNDgzIGxlZ2FjeS10cnVuaworMjg4ODMgMGM3Nzk0OTJjZDgwNzc4ODlmOTM1NzFmMmRlOWRjNmE3Y2ZkNjQwMCByZWxlYXNlMjItbWFpbnQKKzI4ODg0IDg1NDUzNGM2MDdhMTZjZDRkZmE5NDA1YjUzNjAzMzAxNjlhZjdkZjIgbGVnYWN5LXRydW5rCisyODg4NSBkZmI3NGQ2MTE4M2Q3Mzc4OTAyMDlmYzNkYWMwNTZkNTkxNTg0ZDNlIHJlbGVhc2UyMi1tYWludAorMjg4ODYgY2Q4MzdlY2IxZDcwOTUzZTVhNWFhODY4YWVjYjI5OGRlOWEwZmY0ZiByZWxlYXNlMjItbWFpbnQKKzI4ODg3IGJkZTBkMjYyNmIyMDVkY2IzODY1MWE0OGZlMjk5MmY5OTY4YmY2ZDMgcmVsZWFzZTIyLW1haW50CisyODg4OCBkMzI1ODhjODg2MzMyOTQ2OGNjNGY2ZDk5NzU4Y2JkNWU5OTAzYzQ0IGxlZ2FjeS10cnVuaworMjg4ODkgODk4MzA0ZjZkYTIzYjVjOTcxNWM1YzBmYmNhNjdhMDA1MTUxZjg5YiByZWxlYXNlMjItbWFpbnQKKzI4ODkwIGI2MTEyMzI3MTI0YjQ2YTI3NDFlZTA1ZWY1ZDQ2Njk0ZmU3MWI4YjQgbGVnYWN5LXRydW5rCisyODg5MSBhYTMxYzY4ZGE4NGRmNmYyOGQ3N2VkZWY4YjJlN2Q2NzRkNTY3YzZkIHJlbGVhc2UyMi1tYWludAorMjg4OTIgZGI1ZjFkYjdiMzRlMThjNGJhNmI1N2Y3ZTMwNWY2NzI3ZWYyNGNkOCBsZWdhY3ktdHJ1bmsKKzI4ODkzIDliYTAxMTEzODgzMThhNGMzYmYwYmVmNjg0ZjY1NWFjMDQ4NTA1YTggcmVsZWFzZTIyLW1haW50CisyODg5NCBlOGNkZWE0NGY3YWJjZWM2YTE1ODM2NThkNDIxNTg4MmIxYzc0ZTJmIGxlZ2FjeS10cnVuaworMjg4OTUgNmEyZGY0NGI4YmZkNDk2ZmFlMDc1MWU5YjBmMDNiOWM0NzJjYWVjMCBsZWdhY3ktdHJ1bmsKKzI4ODk2IDdjZDZmNTQ5MDc1OGM2M2I2MTY4MzA3NjlmNWQ2MWM3YjMzOWZiMjMgbGVnYWN5LXRydW5rCisyODg5NyBmODE4MGE3NGIwZmE1YzZlYzc1YjVkNjM0MDJmOGQ3NzU4N2ZmMmJkIHJlbGVhc2UyMi1tYWludAorMjg4OTggMDVmZmUyMDFlOTAyZDgwZjg4NzAzYTAzYTdiMzIyNzdjYjM2ODI5MyByZWxlYXNlMjItbWFpbnQKKzI4ODk5IDJlYjRlZWQ1MzhjNmQzZWZkNWRhMmM1ZjUwMWRmYzFiM2U4MmU4ZGMgbGVnYWN5LXRydW5rCisyODkwMCBkMGFhZDUxOWU3MTMwZGEzZDAxMjJiYzIzZDJiMmI3YzQxOTI1MWQ2IHJlbGVhc2UyMi1tYWludAorMjg5MDEgNGQzNjc4NzJmY2M2NjViZmMyNGZlNmFjMTllOTUzZmZmOTlkY2I2YSBsZWdhY3ktdHJ1bmsKKzI4OTAyIDc2Y2NkNWJmOWZmMjYyOWZlNDNiMTU0NDUyZDYzY2UwNWVjNjUwZDYgcmVsZWFzZTIyLW1haW50CisyODkwMyA0MWViMjRiNzQ3YzAyY2RjZjVhOTAyYjBlYzYwMjhmZTU0ODZkMGQ0IGxlZ2FjeS10cnVuaworMjg5MDQgZGNhZmQ5OWM4NWI2OGE4ODMwNzM5MTI5NDUxMGE4MjhhYjU1ZThhZCBsZWdhY3ktdHJ1bmsKKzI4OTA1IGE3NzI1NGNiZDRmMDZiMWU4MjViOTVhNWFiYjk2MDZkYzU3MjVmNGQgcmVsZWFzZTIyLW1haW50CisyODkwNiBkMDdmOGRiM2RiNDFlNGI5NDk3ODJhNjBjYmQzNzMzMzgxNTM1ZDY2IGxlZ2FjeS10cnVuaworMjg5MDcgYjVhOWFhYzRiMTBmZmY3ODNjOTQ0ZTg4ZTgyM2UwNGVjNzg3MTgyMyBsZWdhY3ktdHJ1bmsKKzI4OTA4IDA5NTUxYzZkYTI5OWY4MThjYjlmZGZmNzFkMmI4NmJjMTg0YmUyYTYgbGVnYWN5LXRydW5rCisyODkwOSAxNmU2NjE5NzA5MzA3MGM4ODc2YjZlZTc5NTk2MGY1MDg1MDI2N2EwIGxlZ2FjeS10cnVuaworMjg5MTAgMWQ5MWVkZmQ3NWYyYjQ1ZDZlNGU4OWMzYWU3ZGZhZTY0ZjEyNzE1NSByZWxlYXNlMjItbWFpbnQKKzI4OTExIDRkYThhNGRlMDdjMjMzZDA3YjNkYzA3ZjAwNDU2MTk0YTJkMzYxZDUgYXN0LWJyYW5jaAorMjg5MTIgMjgzMGY5NjE0Mjk0MDVmY2NhZTc4MTU3NWU3MDkwODAxNjRjODVkYiBhc3QtYnJhbmNoCisyODkxMyBkOGY0OTgwYjk2NWNlYmEwMWE5MjQ4OWEzMmQ5YTIwMjVmOThiOGJiIGFzdC1icmFuY2gKKzI4OTE0IGRmZjQ4YzQxNzk4MDIxNGRlNWI2MTI4M2RhYjZkZjk0MmM3ZGEwZTkgbGVnYWN5LXRydW5rCisyODkxNSA5Njk2MGQ2NzM5ZTA5NzJjOWVmMGZlOWE5YzIzYzkxNTEzODdkMWMzIGxlZ2FjeS10cnVuaworMjg5MTYgMWYyYjFlNjg0ODUwMzZiODM0M2Q4ODY0Yzc5MTViZGIwOGFlNGI0YyBsZWdhY3ktdHJ1bmsKKzI4OTE3IDc4NDNiNTMwMDlkMDY5MjI5ZWM4ZTYzN2FkZTc4YTUzOTQ4YTg4NDQgbGVnYWN5LXRydW5rCisyODkxOCBiNjg2ZGRiMjVjNjliNGI2NjFlZTMwZGQ0N2JmZDk5NjJiZDI0YTZlIGxlZ2FjeS10cnVuaworMjg5MTkgNTVmMDkwYjM4Yjg4ZDM4ZjMzODNmNmRhN2Y5ZGY5YTU5MGYzNWQwYyBsZWdhY3ktdHJ1bmsKKzI4OTIwIDBmYmJlNzliNGVkYjViMGE0ZWJkNTkxM2NkZjQ4YzIyNDVlMmVkZjQgbGVnYWN5LXRydW5rCisyODkyMSAxOGU2NzliZTIxMTkzNjg5YTdkNjMyZjYyYzQyNDk3OTZlZmE4OWIyIGxlZ2FjeS10cnVuaworMjg5MjIgOGE2ZWViMGM3OTM0MTQ0ZTZlNmJlZTc0MTdmNjg3MTgwOGZhNzlmYyBsZWdhY3ktdHJ1bmsKKzI4OTIzIDJhNzYzZTdiN2RlYmQwN2RjYzViZGFjNDc1NjUxM2M0N2UzMzQ4Y2YgbGVnYWN5LXRydW5rCisyODkyNCAyNTY1NGI4MTE2MTZiMGYwNTdhZTkwZWYxYzYzYmY2NzcyNWVkOTA4IGxlZ2FjeS10cnVuaworMjg5MjUgNTdlYzE2NDMxODhjOTAzMWZjYTY1Y2VlYjhhYTUzYTgzN2I5ZGY5ZiBsZWdhY3ktdHJ1bmsKKzI4OTI2IGUyZjY1YTQ5Y2EzNDNlMTkxNWU2ZjY3Mjg3NWYxNGUzNjMxYzMyMTEgbGVnYWN5LXRydW5rCisyODkyNyA3ZDI2OWJjMTI1ODdkZDU3MzczMWUxMjY1YTZjOTkwNzM2ZWNkNzFiIGxlZ2FjeS10cnVuaworMjg5MjggOGM5NTQ4NjMwMWIzZjc0OWM2Y2M1OGM4OWE1MGZmNmM2YTJjYTUxMiBsZWdhY3ktdHJ1bmsKKzI4OTI5IGJiZjhjZjVlZTlmOTQyMjg0ZWI2OTNkYzM5MTA2N2U5ZGIwZjE3NjYgbGVnYWN5LXRydW5rCisyODkzMCA5ZDUwYmM4MzFiY2EwNGM2YjZiOTE2Y2Y0YzNjMzQ4NGFkMjQxZGQyIGxlZ2FjeS10cnVuaworMjg5MzEgMjE0NDRiZGNiMDljMDQ4OTFkMDY4N2VmZTY5YzE5NzM3ZDY3OTI0ZSBsZWdhY3ktdHJ1bmsKKzI4OTMyIDgwZjY3Mzg1ZjU5OWRjMTczM2ExNzlkOTE4NWIyMDk5MTFhY2IyY2IgcmVsZWFzZTIyLW1haW50CisyODkzMyBmYzUzNGQxYzljMjgzOTY3YTFhOTE4NzVjMmRjNWMwNTcxZDlhZDExIHJlbGVhc2UyMi1tYWludAorMjg5MzQgY2FjMWIwMzRiOTAzNzZiYTlkYmNmMzhlZWEwNjgxZDMyMzYwYTRmMSByZWxlYXNlMjItbWFpbnQKKzI4OTM1IGU0NzUyZjMxNjA1M2ZhMzY4YmZhMGM5OGUwMzYwZWYwYzkyOGMzYWEgcmVsZWFzZTIyLW1haW50CisyODkzNiBjZTdiYmYzZDk0OTM1MjEzMjg2MjAxNDAzNjFiMWU4NWQzYjY4NDkxIGxlZ2FjeS10cnVuaworMjg5MzcgODc3YTM5MTRkZjIyNDM4NGM2OTQwN2QwY2FjYjcwNzNiNTZiMWFhOCByZWxlYXNlMjItbWFpbnQKKzI4OTM4IDc2NmJmYzkzZWNiYTY2YjZkNjZkMjY0MzgwODNmOTY3NjRjYTNiN2IgcmVsZWFzZTIyLW1haW50CisyODkzOSA3NWIwOGU2ZTk3YzYwZDZlYjFlZGU3OWZlMTMyN2EyOTk0OWJmMGQ2IHJlbGVhc2UyMi1tYWludAorMjg5NDAgMjBkN2E1NDU1OTA3ODNiNDc3NjM3ZDliNWJhNzMyMDI0ZThkNDhjOCBsZWdhY3ktdHJ1bmsKKzI4OTQxIDZkNTg3MTU0MzBhN2JiODA0NGQ1ZmJjYWQ2ZTM5ZGEyNTM0ZjUzYmMgbGVnYWN5LXRydW5rCisyODk0MiAyYWM3YjA5NjRjN2JhOTc2NzMzOWFjMWEyMGFiZWUyMTRlNzdiMzNkIGxlZ2FjeS10cnVuaworMjg5NDMgNGUwNWFhYjYwYmRmYWE1ZmM3YzRhMTkxMzNmM2ViNDU2ZmM5MmE0MSBsZWdhY3ktdHJ1bmsKKzI4OTQ0IGMzZWVhYWZlNjI2NWUzYjQ1YjQ4YzgwMzk3Zjc4YjkxMGZmMzUxMDYgbGVnYWN5LXRydW5rCisyODk0NSA1ZjVmZDJjNGZjZjIyN2U4YTM3MGFjMTBiMTBhYWU4NzMxZDgyOWY5IHJlbGVhc2UyMi1tYWludAorMjg5NDYgZDBlNTc0MzI2ZDE4YjNiMzhiYWMyZjIzNGFhMjQ0OGJmMzk3YzhiZSByZWxlYXNlMjItbWFpbnQKKzI4OTQ3IGI1MjZlMTJiOTQxYjdmZGI2ZWExMWUzZWEwZGYwNGUyYjAwMjEwZjcgbGVnYWN5LXRydW5rCisyODk0OCBjNTczODQ4Yzc1YzMzMmFiYTliN2MyMDEzOWYyZjZmZTllMWQwM2NmIGxlZ2FjeS10cnVuaworMjg5NDkgMGFhNjRlZWJkNDkzMmNmOWM2NTMxNmQxYWE3MWRiMjM5NGUyODgzNSBsZWdhY3ktdHJ1bmsKKzI4OTUwIGRlYTYxOWI1ODgyZDBjOTY0NWVjZjdmZmIzNTM0NzA0ZmFmNzA4ODEgYXN0LWJyYW5jaAorMjg5NTEgMTk1ODMzYTNmMTBkYWYwZDJiNzIzZDFhOTcyMGY4NjgzODUzMjgyMiBhc3QtYnJhbmNoCisyODk1MiBjNDYyOGQ5YWNjOWExNTcwZDUwNGRhZDhlOTEwNDYyYjVjY2QzYmNjIGxlZ2FjeS10cnVuaworMjg5NTMgZGI5ZmVlMzczYjMwM2IwMGRiOGVjOTlhYWJmNDY4NGMwYjFkMmEwYSBsZWdhY3ktdHJ1bmsKKzI4OTU0IDc0MjlmMjI0NzNjYzdjMDRjNDNkOTYzODYzZmM4N2ZiYWVlOTMzZDkgYXN0LWJyYW5jaAorMjg5NTUgNTZkZDg2YjRjYjg3NzdlMTdmMzU1YjM5MmFjOGEyNDRkZGJlMmJjYyBsZWdhY3ktdHJ1bmsKKzI4OTU2IDJjOThlYjFjMzE2MmQ4ZmRkZDU3MWE4NDljYTE1MGQ0MjlmMmE1MWEgYXN0LWJyYW5jaAorMjg5NTcgMjdmODM1NTE5YTVlN2RlYmU4N2UzNzk2MTlmNWFlNzVlYWEyOWQ3NSBsZWdhY3ktdHJ1bmsKKzI4OTU4IDkxNjc0OTBiMGRlOTRiYzIzMGM1ZGFkZjlkNmU1ZTg3NmIwZTg5OGQgbGVnYWN5LXRydW5rCisyODk1OSAyYmMyZTAyZmQ2ZGQxMmRiNDVlZTI0NGJmMjZkMGQ5NTg3MmJmNWM5IGFzdC1icmFuY2gKKzI4OTYwIDQ1NTc3ZTE4NTZkMGU5Mzg2NDljZmQ0MjRhYWZhNmRhNGI2YjAzNDQgYXN0LWJyYW5jaAorMjg5NjEgN2ZkMmRhMjAxODIzZDFjZTdkZGM1NjA5M2QwMzBiM2JmZWI4ZTFiNCBhc3QtYnJhbmNoCisyODk2MiAyNGM1YTFjODdmM2JmMTIyOWU1MDZmODc1OTNkNGMxYjEzODU1OTU3IGxlZ2FjeS10cnVuaworMjg5NjMgNjY5NGYwY2NmOGVhNGJlNzU2NzRmMTU3MjBiYzM0NjJlNjAwNGY2YSBsZWdhY3ktdHJ1bmsKKzI4OTY0IGJjMDk3ODQ1OWZmYjc4MGNmMzgzNmQ0N2Q3NDRhNWY1ZjYzNzNmOGEgbGVnYWN5LXRydW5rCisyODk2NSBiM2E5OGVlYTM0Yzg0MWMyM2Y4YzczNjRlYWNiZjBiMDRhY2Q1MjIzIGxlZ2FjeS10cnVuaworMjg5NjYgMmQ4MGJmNjVjZDA5NzlkOTAyYTQzN2NhNDJhODdhM2ZiYjU0ZGNmZSBsZWdhY3ktdHJ1bmsKKzI4OTY3IGUxYTczMjg4NWJlMDk2MTU4ZTZmNGY1MGZkODkwZTI0ZDVhOWJjODYgbGVnYWN5LXRydW5rCisyODk2OCBkMWI2YjJjYTlkOWI4NTFkMjM2NDkyMmNjMDBjMzhiZDQ4YzZiZTRkIGxlZ2FjeS10cnVuaworMjg5NjkgZDEyNGZiMDg3Nzc4NTVkZmYyYTc1NzhkMjkxYzg4NjZiZDc2NzRlOSBsZWdhY3ktdHJ1bmsKKzI4OTcwIGJkMDRlMmJkNDM3ZmM1ZDM5ZGQyZTYyNzQwYTM4ZTk3MWViYmQ4MTAgbGVnYWN5LXRydW5rCisyODk3MSA1OWY4MmQ5NjY4MmU5YTgwODVkYzRkZDdlMTBkZjgzMTU2ZjFiZjVjIGxlZ2FjeS10cnVuaworMjg5NzIgMzc3ZDY0Y2I1MzQ3MGIwNjYyOWJlZGRhMTM4MDk0MzU3YjMxNGIzMSBsZWdhY3ktdHJ1bmsKKzI4OTczIGQ3MjJiYjUyMDVhZDcwMjlkZGIxNmY1MDUyYzBjODE1ZmExYmNjYjcgbGVnYWN5LXRydW5rCisyODk3NCA0MDU5NGVmMzRiMzA5YzRlZGUzMTE0Yzg3MGRiZTQyYTEwOTk4NzhlIGxlZ2FjeS10cnVuaworMjg5NzUgYWUyZjIzNDg4MmIyMTY4NjNlMjQ3OTExNTIwNDg0ZWRmYWNiMDFiNSBsZWdhY3ktdHJ1bmsKKzI4OTc2IGEzNjQ3ZDExY2I3MTM0NzkwOWE5NWVkMTBlZTI0ZWNhNDYwODRlNDggbGVnYWN5LXRydW5rCisyODk3NyA1OGJmYTdkZGM5OTlhYzk2NDJlZjhmYTY2ODJiMjY4MTZkZDQzOGEwIGxlZ2FjeS10cnVuaworMjg5NzggYjVkMDVmMTBkMGE1YmMyYzM0ODkxM2YyZmVhYmMxMmQwZTU1NWUwYiBsZWdhY3ktdHJ1bmsKKzI4OTc5IDFlYTZlMzU0NzYxMDM4MGY4ODA2MGUxYzkwMzBlYjhjYjNmNjFjOWEgbGVnYWN5LXRydW5rCisyODk4MCAzMGVlOTlhOGIwYWUzNWE5YjhjYjFmNzMyMmUwYmViYmFkZjYxYzNmIGxlZ2FjeS10cnVuaworMjg5ODEgYzEyYTRmN2EwMGI3NGFmMTlmNTEwYjU2ZTdhYzU0YTY3MGVkNjRiNCBsZWdhY3ktdHJ1bmsKKzI4OTgyIDJlMTQwNzAwZmI2YzBjNTNiYWY0MDExY2ViNmM5NTFhYzM2NTI1NTUgbGVnYWN5LXRydW5rCisyODk4MyBkN2JiYTdlYjBlYWQwYzcxM2YxMjc0ZDVkOGU1ZWRhZTAxODM1ZjYyIGxlZ2FjeS10cnVuaworMjg5ODUgNTQyMDk2OWRkZDcwYmE4NWJiMmFhNDUxZThlNzMxOGUyODM4ODU1ZSBsZWdhY3ktdHJ1bmsKKzI4OTg2IDYzNmMwZjhiMzk4NzkzNjg5NDRiMjdhZDQ0Mzk4OTI4ZDIwMjlhMTEgbGVnYWN5LXRydW5rCisyODk4NyAxOTVkMmYyNTc2ZTQyY2E0ODZkYTNlYzZmYzE0ZjE1NzhhZGJkNGMyIGxlZ2FjeS10cnVuaworMjg5ODggMTE1NzM2ZGRlZDdkMDhjZTQ4YTZhZjVlNTY5YTVjN2Y5YTEzY2I4MSBhc3QtYnJhbmNoCisyODk4OSBiOTIzM2VjZDlkNDE5NDczMjNmNzAxYmMxMGZkMTc3MmU5ZWI3YjVmIGFzdC1icmFuY2gKKzI4OTkwIDcwZDkzYjYyMzcwYjdiYmE5NDk1MmFkMTFiNTZmZGE0OGQxM2Q4YTYgbGVnYWN5LXRydW5rCisyODk5MSBiOTZiODI2NGQ2YWQyZmZkOWUyMTgzZThhZDQ1MDc5OTMxOTY2NjIwIGFzdC1icmFuY2gKKzI4OTkyIDllODE1ZjJjMGU4NGYwMzc0OWY5MjE0NjM4ODJlM2JjNmI5YTE4ZGIgYXN0LWJyYW5jaAorMjg5OTMgMTA5NGM2ZTAzNjVlNWIwNTcwY2E4NTJjMjI5MmU1Y2E3MmZkZWYyOCBhc3QtYnJhbmNoCisyODk5NCBmZTk1Y2ZjNmViYTdkYzM0ZDU1OTVjODcwM2M2NDgxNWM2ZmIyNTAxIGFzdC1icmFuY2gKKzI4OTk1IDhlNGNhYmIyZTAwM2QyOWI5YTlkYzY0YThlMzJlMmQ2YTk4NzE5NDYgcmVsZWFzZTIyLW1haW50CisyODk5NiBjYTAxZjRiODU4NTNlNDRiMzZmNDI0YzEzYTQzNjk0NWRjNjg4OTRkIGxlZ2FjeS10cnVuaworMjg5OTcgNzVlNWEyYTcxNzI5NWFjMjA5ZDQ1MjZiN2U5MDczNzkwZGQyMWEyOSByZWxlYXNlMjItbWFpbnQKKzI4OTk4IDA4MTQ4ZTkxNmQzODUxZjI4YjdlNzk5ZjdlZmVhNWYyNzdiMmU1Y2QgbGVnYWN5LXRydW5rCisyODk5OSA4NjEwNjUyNTY0ODcwYTgzMGI5N2NiNGRjODBlNDBkZWFlYjg2Yzk2IGxlZ2FjeS10cnVuaworMjkwMDAgOTNlZjc0NTU1NWQ3YzBiNTIyNDVjMzJhMGY0NzE2NzJiOGM0NDFhNyBsZWdhY3ktdHJ1bmsKKzI5MDAxIDYxZDYyNGY1YzEwN2E3ZTg3NzM1YzA3OTYzNmIwZTgwM2U4ZWFkZTcgbGVnYWN5LXRydW5rCisyOTAwMiAyYzBlMGYwZGNhNmY1MTJmNDVkZjIyYmI2MjI4YTlhN2NlMjUxNWFiIGxlZ2FjeS10cnVuaworMjkwMDMgNWZlMDdjZDRiMmJmZDcxMTQ1MjE0ODY3MjI3NGM0NzUwNDI1MWRlYiBsZWdhY3ktdHJ1bmsKKzI5MDA0IDJkYzBkYTUzNzJiNDcwMmJlNTVmMjU0MDg4N2RkMjhiMGQxZTFkY2IgcmVsZWFzZTIyLW1haW50CisyOTAwNSA0N2FhOWZjNzRkYThjZjUzMGZhMGM0ZGFmM2E4ZTg1MjZhMjU1YjYxIHJlbGVhc2UyMi1tYWludAorMjkwMDYgOThlNThkM2M1ZmNmYTQ4OWZkY2I0MDc2ODhkMzdjODM2ZTJmZjZiOCBsZWdhY3ktdHJ1bmsKKzI5MDA3IGRmZWVjM2IzNGZhZWMyNDU1ZDQwNTljZWZjNGQzZTQxN2Q2ZTIyNjQgbGVnYWN5LXRydW5rCisyOTAwOCAyZmE1NTlmYjZlYzUyMjk5Yjg3MTcxZTliOGYxZTE0ZGNkODNiODI4IGxlZ2FjeS10cnVuaworMjkwMDkgMzczMWJlMjhlMWEzMjY0Yzg5NGQyYjVhZGNhYmNlZmY4YTI3ZWEzZSBsZWdhY3ktdHJ1bmsKKzI5MDEwIGM3YjlkYTg1OWI1NWY4MzY1MThjYjRhNDEwN2IzMWVlMzdiZjQ4MzcgbGVnYWN5LXRydW5rCisyOTAxMSA2MTgyMmQyYjVlODg2YTc1ZTQ3NTY2NTRlMDk3ZTQyODU0MWUyYmQxIHJlbGVhc2UyMi1tYWludAorMjkwMTIgMGVkODI5NDc1NzE3NDhkMDA2YzdhOWRhZmYwYmYyNzYwNDQzMGY2MSBsZWdhY3ktdHJ1bmsKKzI5MDEzIDBlOTI4ODA3NTM2YzE2YTIxMzM4ZDA0ODc3MzNhNDFlNjM3ZTJlMWIgbGVnYWN5LXRydW5rCisyOTAxNCAxZGE1ZTE3YmZlNjNhMjA4MTM0ZGRkMzgwNTVlNTdlZDU1NjY2MDYxIGxlZ2FjeS10cnVuaworMjkwMTUgNDFlMWQ4YzIyNGRmMmUzYWFlNzgxNTgyOGUxOTI3ZjkwOTk5OGU3MSBsZWdhY3ktdHJ1bmsKKzI5MDE2IDU1NTIzNGQ0ZjBkMDA5MTRjNjhjZmE1ODU3ZTgwZmRhYWY4NjQ3YzAgbGVnYWN5LXRydW5rCisyOTAxNyBmNjFkMWQyYjljZTNiMjJkYTRhNjJiMmRhNGU5NWI5M2U2ZjdkODI5IHJlbGVhc2UyMi1tYWludAorMjkwMTggMzYxMjQxNTdiMzE3YWRiYWI4MzVmYjYzOTgxODhkNmE4OGVlZTBhNCBsZWdhY3ktdHJ1bmsKKzI5MDE5IDQ4ODI5NWQxYmExMWViMjE2NzQ0NGNlYWFlNTQ5MTJjMWViNjY3YzkgcmVsZWFzZTIyLW1haW50CisyOTAyMCA4Y2IwNzQwZGExZmQ1OTkyZWJlYTA3NTdiNWY4Y2NjNGQ1Yzg3NGE4IGxlZ2FjeS10cnVuaworMjkwMjEgZmM3MDI5MDgxMDkzMDY4ZjQ3M2ZiMmFlZjY0MDY2MDFiNjAxZjRhYiBsZWdhY3ktdHJ1bmsKKzI5MDIyIDE0YzRjODMzY2RhOWNhNGU0ZWRkNzFmMWI3YmI2Nzc5ZjlhOTljMWUgcmVsZWFzZTIyLW1haW50CisyOTAyMyAxM2ZiNGQxNmY2MDQyYmFlMDIzMGUwMTc5Njc4MjNmN2QzYzEwNmQ1IHJlbGVhc2UyMi1tYWludAorMjkwMjQgZmIwY2U3N2EzMThhYmQzODQwZTU0MDg2YTJjY2Y4YzI5Mzc1Nzg4ZSByZWxlYXNlMjItbWFpbnQKKzI5MDI1IDA3MDVjYTI5YWI5NjZmZDEzMmM3MDIwNjkwODgxMzAzZTc3MTcxYWEgcmVsZWFzZTIyLW1haW50CisyOTAyNiA0NDQ0N2YzMTVhZTkxMTVkOWQ0ZDFkY2EzNTY1ODMwYzM1OWM3MDhmIHJlbGVhc2UyMi1tYWludAorMjkwMjcgNzc5YmI2ZGRkZTRiOGIyNDI0NjBmNzU2OWVjZjYyNDc4NzM1ZDEyZSBsZWdhY3ktdHJ1bmsKKzI5MDI4IDZkY2QwNjY0YjA5ZTJjZDkyNDU2YzI0ZGQ1MmViMTQxY2M5MDc2ZmYgcmVsZWFzZTIyLW1haW50CisyOTAyOSBkMDcyOGI0YjA3YzMzYjE3ZDZmNDBlYzI3NWUxNTg2NTBiNWIwOTBkIHJlbGVhc2UyMi1tYWludAorMjkwMzAgYjE5OTAyYWQxODVmYmQ4YjM4ZGIyNDQ1ZTMyMWY4NDFhNjRkZDg3NSBsZWdhY3ktdHJ1bmsKKzI5MDMxIGIxMWJjMjE0ZTRmMmY3NmQ5OWZiOTBiMTQ3NTMzMWU4ZGZiNzQ3MTIgbGVnYWN5LXRydW5rCisyOTAzMiBjNDJjOTg4YjJiOTljYTkwYTJmYWM0MDg0ZTY4N2RmNzg5NThmZjk5IHJlbGVhc2UyMi1tYWludAorMjkwMzMgYWFlOGI5NDM4NWQ2YjU4YTliYTUyZGJmMjBiNDI4M2VlMDk0MmU3MSBsZWdhY3ktdHJ1bmsKKzI5MDM0IGRlMzcwZTY1MDNkZjY4YTIzZWE4M2MyN2FiMTAxZDAxY2ZhN2RhYzYgbGVnYWN5LXRydW5rCisyOTAzNSBjODVkN2NkZDk4M2YzMjg1NmIyYTkwMWY0NzQ2YTMzZjRiMDk5MWU3IGxlZ2FjeS10cnVuaworMjkwMzYgNDM2NzFlMDExNmQ1MmYwNTM4MTJjZjAxZTZjNjZhNWZjNDUyOGRkOSBsZWdhY3ktdHJ1bmsKKzI5MDM3IDAyMzFjYzU0Zjg3ZWFjNDg0NGFhNjdmYjhkZjdlNmQyNDA4OTI2N2YgbGVnYWN5LXRydW5rCisyOTAzOCA4MjQxNjJlYjc5NzczNzBmZjAzODU4MGRiMWI1YTljNTRhMjUyZjgyIHJlbGVhc2UyMi1tYWludAorMjkwMzkgYzVhODFjM2JkYWRhYmM1Nzg2MWVkMGQ3N2JkNGM2ZWUwMTk4ZGZkNCByZWxlYXNlMjItbWFpbnQKKzI5MDQwIDQwNWE1YjRmNDUzYmVjNDcwNWUyMWJjOTY1MjIxYzIxYjExODJlYzUgcmVsZWFzZTIyLW1haW50CisyOTA0MSA2Y2NhNjE0YjVlMDMzYTc5NmZlY2NjODNkZmYzMjVhYjIzODlkNDZjIHJlbGVhc2UyMi1tYWludAorMjkwNDIgMTAwZGFhMzYxOThkZDg1OGUzODhiZjU0MzIzZTQyMTNiMjg1NDg0YyByZWxlYXNlMjItbWFpbnQKKzI5MDQzIDgzZjY0YzA0ZjAwMjY5MGYyN2MyYzI0ZDJiMDJiZjNiYTg3NTdkYzkgcmVsZWFzZTIyLW1haW50CisyOTA0NCAzNjc5YzRmYzY4YmMwNDg2NmU5YTYxZWNjNGZjYTM5N2RjNTExYjMxIGxlZ2FjeS10cnVuaworMjkwNDUgMjc2YjZjNDUyOTk5NGNlMzVhYjY2ZGI1Y2E3MjIzYzBiYjg2MmYwYSByZWxlYXNlMjItbWFpbnQKKzI5MDQ2IGQ0OWYxNjRlNmE5NzRkNzRmMGVmZDE2NDM1MTU0MmZjODM5Mzk1NGYgcmVsZWFzZTIyLW1haW50CisyOTA0NyBjMWE2ZjQ0ZTI1MzRkODNiOGZjNGQ4ZjY5ZDkxYjUxMDlhMGYyMWMzIHJlbGVhc2UyMi1tYWludAorMjkwNDggYTUyNjk1YjcxZTdkYWI1Y2JmYzc1MzczNTM2MmFhODEwZDVmMTU0YiByZWxlYXNlMjItbWFpbnQKKzI5MDQ5IGRhZTIyODJiYzc2YjQyNzI3ZDFjZDhmYjMwYjljZDY1YWE2NWRjYmIgcmVsZWFzZTIyLW1haW50CisyOTA1MCBiMjg3YmRhY2RlMzlmYWYzNmMwMjRjYjgzZmU1NzYzNjYyNzM1NWZlIHJlbGVhc2UyMi1tYWludAorMjkwNTEgNjAwMzk5MTczMWE5OTA2YzhjY2M5Mjg0ZTM1NmI1OGE4NTgwMjRjOSByZWxlYXNlMjItbWFpbnQKKzI5MDUyIDIzNDdmOTAxODQzMTUzZDkzNGViZmU0M2IzODhmYjk4M2JlNDVmZmYgcmVsZWFzZTIyLW1haW50CisyOTA1MyA0NDkyZDc3MzI3YzVlZTA5ZjczYzA3YWNmM2E2MzVmNDQ5MGZiZDA0IGxlZ2FjeS10cnVuaworMjkwNTQgMjkxMWViMzc3MjY2ZDk3NWE5ODg5MDE0YTMyNTc1MDE5MDUzZWJlOSByZWxlYXNlMjItbWFpbnQKKzI5MDU1IGIzMjU2NDg3YWVlODg4NjM2NGRmYWYyZjllNzljZjhmOWIwZWIzOTggcmVsZWFzZTIyLW1haW50CisyOTA1NiA3NzQ3NzFjNTBiMTg3Y2Y2MzEwZmY2Y2E1NjUxNTgzYTY5ZTRiZWJjIGxlZ2FjeS10cnVuaworMjkwNTcgMmE5NDJhMWM0MmU4NDlmZGM1NGI3ZjlhZmZmNzFjYjhiMTNjZWMzMyByZWxlYXNlMjItbWFpbnQKKzI5MDU4IGZlZDdjNDFjYWFhZWY1NTMyMWVjMmE2NmEyNDJmYWE0YzQzZWY1OGIgcmVsZWFzZTIyLW1haW50CisyOTA1OSBjNjJmYjYzZGNmZDFiNTNkMTc5MmQ3MDkxNGJkMDJkNzM2ZjE0ODMxIHJlbGVhc2UyMi1tYWludAorMjkwNjAgNmIxZDQ2NDNhMGZkNTBlODA4NDk2ZWNjNWQ5YzM3M2ZmYjZjNTAwNyByZWxlYXNlMjItbWFpbnQKKzI5MDYxIGU4NGUwODM3MmVmYTFlYzUwNTNhYTFhYTgwZTYzMjYwMzQ0Yjk2MjMgcmVsZWFzZTIyLW1haW50CisyOTA2MiA1MjNmZDg5MDM1OTg3OGFkZWJkNWZhN2U0MjQ0MTFkNDkyN2FjZjRhIHJlbGVhc2UyMi1tYWludAorMjkwNjMgMWUzNTlkY2I0ZmIzYjcyMjQ0Zjg3Y2U1MDU5OTJiMmNjMjdhYmY1OCByZWxlYXNlMjItbWFpbnQKKzI5MDY0IDM5MzhlOWEwOTY4OTRjNmM4NjZhZTQ0YzhkNTI2YTE5ZjZkMWVkNzcgcmVsZWFzZTIyLW1haW50CisyOTA2NSA4NmY2NjA2MTAwM2MwNmNiOTc0MzdlMDRmZTMxM2Y3YWRmMGNmOTFlIHJlbGVhc2UyMi1tYWludAorMjkwNjYgYWQzN2I5M2U3YTJlNmYxMzQxMjRkZTAxZDAzNzBkODhmZDRhNzcwMSByZWxlYXNlMjItbWFpbnQKKzI5MDY3IGE2N2I5YTE5NTI2NWI1ZWIwZTQxZGQ0NTQ2ZjRkNTFlMjNhNDk4MDQgcmVsZWFzZTIyLW1haW50CisyOTA2OCBhNmVkYzFiM2ZkNTY2MTZjNDZiMzNmMDU0YTMxZjA0MDgzMDA0YmY4IHJlbGVhc2UyMi1tYWludAorMjkwNjkgYzFmN2FmNDJhN2YxNzY3OTM0YzdhNjlhOTk2NzUzMTMwMzJiYzljMSByZWxlYXNlMjItbWFpbnQKKzI5MDcwIDFiODY5N2Q2MDU2OGM0N2I3NGI0NDA3OTU4MDM0ZmNlZWI0ZDJmYjUgcmVsZWFzZTIyLW1haW50CisyOTA3MSAxZGFlYWJiMzYyNDQzMGVlMjJjNzI0MWY4ODcwOGJjYjQ1NWFiMTYyIGxlZ2FjeS10cnVuaworMjkwNzIgOTc3ZmExMzU5MDZkMWExNGI4NDViOGVmYjhmNDA0NzA4Mzk0NWEwNyByZWxlYXNlMjItbWFpbnQKKzI5MDczIDI4OGMxZmZkNjA2ZWFiYmY1YjRkNWM5MGYzYzk1MzAyNDVmOTNjYjcgcmVsZWFzZTIyLW1haW50CisyOTA3NCBmMzdhMzRjMjU2YzRiMDQzZTMxYTJjYWU1MzEyOWVhNjBmYjA0ODExIHJlbGVhc2UyMi1tYWludAorMjkwNzUgZjk5MDZlNjI2MWM1ZjBkNDcxOGRkMWY3Y2Q2MWI0ZDAxMThkMTM4NCBsZWdhY3ktdHJ1bmsKKzI5MDc2IDNlZWU3MjkzMWQxNzgzZTUwZWE5OTBlMzM4ZjFiMTNkOTNmYTYyODIgbGVnYWN5LXRydW5rCisyOTA3NyBmM2U3MGNjMjY0MjJkMGQxMzk1MTA5ODBiMzVlNTgwMDE1ZjM1Y2JkIHJlbGVhc2UyMi1tYWludAorMjkwNzggYzRjMDkzZTIzYzZkZDFjODA1ODc5NTBmZTc5ZjY2MjEyMGZlMDhkMCByZWxlYXNlMjItbWFpbnQKKzI5MDc5IDM4YTFlNTZiOWJmMzUyNDk1YWEzNGUxNmM5YTA5ODAwZTBkNmVkYzQgbGVnYWN5LXRydW5rCisyOTA4MCA2Mzc5YTU1MTQwNjVjOTU2YzEyNWRhNTczMDdiNmEyZjkwN2NhYTkxIHJlbGVhc2UyMi1tYWludAorMjkwODEgNWYyYzZhYzIxNWM3OTk1ZWRkNzk0YjE2Y2YyOGRmY2Y4N2M0Yzk4MCBsZWdhY3ktdHJ1bmsKKzI5MDgyIGI1ZGVjMGE1NTRiMzgwZmZjMjdkNDVjMTRmNzIzYTYzOTg0NGI2YmIgcmVsZWFzZTIyLW1haW50CisyOTA4MyBkZjI3NmI3M2ZlNGI1Nzk0ODBjZGQyMmJlMmY0NTQxNmUyYzJkOGUwIHJlbGVhc2UyMi1tYWludAorMjkwODQgMmRjZGU5MDM5MWFhZTM0NzU4YWVkMDJlMTlkNTZjYjljNzQzNzM5NiByZWxlYXNlMjItbWFpbnQKKzI5MDg1IDg3ZGFhNTY1NDQyZGI4MDE4YThkZmJhOTIwMGZjOGIxZmNkYTBkYzEgcmVsZWFzZTIyLW1haW50CisyOTA4NiBhMDAwNWQyNjc3M2QwMmMxMDUzZWZhNzMxODU2ZmJmN2NkNTNlZDk2IHJlbGVhc2UyMi1tYWludAorMjkwODcgYjk4Zjg1ZGMyZDg4MTU1OGIxMTM0NjNlNWVmZTE4ZmFkNjkxMmU0MSByZWxlYXNlMjItbWFpbnQKKzI5MDg4IDhhNzU5NzMzNjc2ZmJhOWFhZTZiNjMzZGRlY2RhZjYyY2U5YzI4YWIgcmVsZWFzZTIyLW1haW50CisyOTA4OSA0YmI5MThlYTY0ZDFlMmJjNWRiYjBjOWFmYTAxZTUxNWY0NjhiOTFjIHJlbGVhc2UyMi1tYWludAorMjkwOTAgZjg2N2NhNmM3ZDY5OGU1ZWJmMjFlNjk1ZDNkNTljNDZhNDc0YzkyMyByZWxlYXNlMjItbWFpbnQKKzI5MDkxIDNiNjA5NTIwNDNjZDA1MDkzZDU1Mzc4ZWZjZDE2ZTEzNmVhMjIzZDkgbGVnYWN5LXRydW5rCisyOTA5MiA1YmIyYzA1N2ZkNDBiODhhMmRkNmM3YzczNWZkMDYxMjdlZDg1MDIyIGxlZ2FjeS10cnVuaworMjkwOTMgNDQ2YjgzNWZjMTliMmNmZWQ3OTM4MGI3ZThmZTgzY2Q0OGE1Y2ExZiByZWxlYXNlMjItbWFpbnQKKzI5MDk0IDI1ZDFmNGY5MTQ4N2UwZGFiYzc3MjM3ODY2NjhiMTdjODEyMDdmZWQgbGVnYWN5LXRydW5rCisyOTA5NSA4NTA2MmExMmMyNGY4ZmI0NTQ0Nzk2YTMzOGI3OGZjODVhOTBkODhiIHJlbGVhc2UyMi1tYWludAorMjkwOTYgNGNhMzJlNGY3ODM5M2EyN2FlODA2ZTY0N2JiMDllN2VhNzQzNjA1MSByZWxlYXNlMjItbWFpbnQKKzI5MDk3IGVmYTlhODY0NjRkMzQyY2YxZTYzYTBkNTg4MDkxMDI0ODA2ZWMxYTkgcmVsZWFzZTIyLW1haW50CisyOTA5OCA4NTUzOTI3OTA5NGQxNWU3MTE1ODVmZTI4OTNjMjRjNDBkNGM4NDA4IHJlbGVhc2UyMi1tYWludAorMjkwOTkgYTk0ZjI3MmU2MDBkOTA5OTRjMjQ1ZTQ0Y2Q1ZmQ3ZDBkZDFjNTIxOCByZWxlYXNlMjItbWFpbnQKKzI5MTAwIGViODQ5OTczYjk0MThkZTM2OGUwNTMyYTNhY2FjNWE0YmZlOWMwNzEgcmVsZWFzZTIyLW1haW50CisyOTEwMSA0MjEzOWFiZmRiZTViZWI1ZDYzZTExZjNjM2VjMDZhY2MwMDg5MDg5IHJlbGVhc2UyMi1tYWludAorMjkxMDIgMjlkNDBlYWU4NzM2YjNmM2JjZmZiYTczOTZiN2UxM2ZiODhjY2NmZiByZWxlYXNlMjItbWFpbnQKKzI5MTAzIDBlNmYwYTIyYzZhOTIzYzg1ZjM3ZjAxYTdkMDAzOTA3MGZkNzE3NzUgcmVsZWFzZTIyLW1haW50CisyOTEwNCA1Y2YzM2RiNTUwZDc1Y2ViYzhmOWE5ZDIzNjI2NjYxZDVlNTc4ZmI1IHJlbGVhc2UyMi1tYWludAorMjkxMDUgMTM0Mzg1ODZkYWE2MzczY2RiNGMxNjRlOTZmMGY3YjE1ODlmMDJiNCBsZWdhY3ktdHJ1bmsKKzI5MTA2IGJmMjhkMGY3OGJkNWIyOWI0MzZhM2M2NzZkODA3MzY0YjZlNGE5NTUgcmVsZWFzZTIyLW1haW50CisyOTEwNyA1YzZmYWM5NWE5NGI0ZmNjOTY1YTFkMzM2NGQ0OTMwYWFmMWJiYzlhIGxlZ2FjeS10cnVuaworMjkxMDggMTk5ZjBmNmE4YTM2MzIwNmQ3NDkzNTQ3ODc3YjdmNGRkNjVmZjJhMyByZWxlYXNlMjItbWFpbnQKKzI5MTA5IDg4YzFjNGQ3ODkxNjZkY2UzM2RkNjI4ZmMwMmM4NGE1MzczZDNjNWMgcmVsZWFzZTIyLW1haW50CisyOTExMCAzM2JkNjQ0NWI3ZTkzOTRjMzY3ZGQ3YTE3M2ZiMDY5YzgyNDhkYmRjIGxlZ2FjeS10cnVuaworMjkxMTEgZTIxODQ3NTMxNjc0Mzg0YzQ0MjAzYzE0Y2ZjN2VjODBlMzY1OTRjZCByZWxlYXNlMjItbWFpbnQKKzI5MTEyIDE1ZWUyOTlkMzllNjcxZDkyMGM4MThhZjVhZGZlYThjNGIyNDIwMzYgcmVsZWFzZTIyLW1haW50CisyOTExMyA1ZDhiYjAwZmVlMTg5OWM3NmE5ZTU2OTUzY2JjNTRiNmUwNTYyMjJkIHJlbGVhc2UyMi1tYWludAorMjkxMTQgNDk5MjdiNmI1ZjQwZmE0M2U1YTFhMzQxZjkyYjQ3NjZkMTczOGEwNSByZWxlYXNlMjItbWFpbnQKKzI5MTE1IDNmYTU0NGEzYzVlZGFhZWQ3ZWY2MDkxZGQwZTkyYjJlODY4ZGRmYjYgcmVsZWFzZTIyLW1haW50CisyOTExNiAxMTU3YzQwMDMxNmIxZTZjOTZjNDM1MjAxOTM5MjExZmU5YmFhODJhIGxlZ2FjeS10cnVuaworMjkxMTcgMjEwMzg0NmVlZjczYWY1NDg5Zjc4NjUzOWJiNDViZGMyYzIxODYxNSBsZWdhY3ktdHJ1bmsKKzI5MTE4IGM1ODA0MWU2YTc5OTc0ZTRjOGNiNDhiZjM4OWU1NzdmMWJkMDk0MWYgbGVnYWN5LXRydW5rCisyOTExOSAwYTFjMWM1ZTFhYjRmMjllMGY5N2ViMDAwY2IxNzg3ZjM1MzQzM2ExIGxlZ2FjeS10cnVuaworMjkxMjEgNGJlOTdlZGE0MzZiYjYzMzA5ZWEyNDg4MzE0MTM2YTJmNjUzNDE5YSBsZWdhY3ktdHJ1bmsKKzI5MTIyIDA2OTBlYTZkMTE1MzU3MmIzMmM5ZTc3YWQxMGY4N2UyYTAyNDQ3ZGQgcmVsZWFzZTIyLW1haW50CisyOTEyMyBmNTA5OWE1MzBkNjdhZjgwYWVmMDIzNTFiNzMwY2RjYmI1M2RlMjY2IHJlbGVhc2UyMi1tYWludAorMjkxMjQgY2I5YzFmOTQyMjBiOTllYWFlZWE1Yzg2OGE3OTQ0ZjQ5ZDc0MzA1ZiBsZWdhY3ktdHJ1bmsKKzI5MTI1IDAwMGQxNTU4MWE3Njg2ZDk1ZWUwMGExNTI5NWRjZThiY2E3MzBlODggcmVsZWFzZTIyLW1haW50CisyOTEyNiA5MDI3NGJhMDQ0MjRkNzYxMDVlMjZhMTEyMWQxYTc5ZWMwZTc2MzhmIGxlZ2FjeS10cnVuaworMjkxMjcgMTRiNjhmNTkyOTVlMzk1NmI3ZjEzNWJlZDdmOGRhOGMwMjBiZGE3MyBsZWdhY3ktdHJ1bmsKKzI5MTI4IDM3YzA0NDViZGM5MGQ5N2Q1NGI4ZGY0ZjdiYmY3NmIwZmE0MWM5MWIgcmVsZWFzZTIyLW1haW50CisyOTEyOCAwMTI4MzEzYzI4NTVkNzE3NTNmMDBmY2NjNjBiYjM5ZWQ5MmEwYzU0IHJlbGVhc2UyMi1tYWludAorMjkxMzAgZGRiZjY5YWJiOTVjYzg4NmFjMWJjZDJhMWIyMDRlNzIwOWY3NWVhMiByZWxlYXNlMjItbWFpbnQKKzI5MTMxIDRhODI1YjkwMjMxMGU4ZGNmNDg4YzQzMGY4ZGQ4M2E0NGRkMGM4ZjggbGVnYWN5LXRydW5rCisyOTEzMiBiNjU5YWI0OTQ1NzFlYTdlN2IyOGNhNzBmYTM1NzMxMDM4YzMwNzNhIHJlbGVhc2UyMi1tYWludAorMjkxMzMgNjNjNmY0NWU5NDdkZTQ5Mjk0ZGYxNjk0NGU4NjZlYzE3NzZiYTg1NCByZWxlYXNlMjItbWFpbnQKKzI5MTM0IGNmOTI2NjBlMWUzY2UzZjRlZTk4ZDlhYmNjMjAyNjNhMDNjZDlmNTQgcmVsZWFzZTIyLW1haW50CisyOTEzNiBjNWQ5MTc5MWU1N2IyOTYzNGQ2YTk1YjQ0MzU2MDEzNjk3OTA4ZmMwIHJlbGVhc2UyMi1tYWludAorMjkxMzcgODg5N2EwYjFjYjA3NTQxOGEwZDI1ZDFhODkxMjhhYTQwODM2YjU0NyByZWxlYXNlMjItbWFpbnQKKzI5MTM4IDFhNzliOWUzOWU3MjUyYjYwODFhYzkxNzhkNmYxM2RmMTFiZWNhYmYgbGVnYWN5LXRydW5rCisyOTEzOSA5Y2Q2ZWQ5NTQwNjVkYjYyMGVmYzIzNzhlZTFmZDgyN2Y2NGEyMDE0IHJlbGVhc2UyMi1tYWludAorMjkxNDAgNjI4NTMxOTViZTY4ZDFmZDI1MjZiODk1MTQ3ZDFmNTYzNTdjZjcxMyBsZWdhY3ktdHJ1bmsKKzI5MTQxIDQxZTgyODBhMzY4NWE3MDI3ZTA4NjU0YjBkZjgxODdhMDE3N2RiMDYgcmVsZWFzZTIyLW1haW50CisyOTE0MiBiYWM1YTQ5MzI5MDU5OWE4Y2E5MzQzZjBjMjk2YTUyMmQ3M2MzYmI0IGxlZ2FjeS10cnVuaworMjkxNDMgNjg5NmNlZWQ0NmE2YjJkMmVkMzc1MmQxMjkxZmZmMTRhYzBiODY0ZCBsZWdhY3ktdHJ1bmsKKzI5MTQ0IGM1MjE2NWYyY2RmNDM5MWZiYjY0YzNjNDAxNTIyZjdlNzYxODcxMmIgbGVnYWN5LXRydW5rCisyOTE0NSAzODZlNmZlMmM4ZDJjOWEwNmMwNTM4ZWI0OWYzZDc4ODY5YmI5NmFiIHJlbGVhc2UyMi1tYWludAorMjkxNDYgNjVkZmZjOWMwYTE2OWU3YmViYTNkNzRiMzI4MzI3NTg2OWI5NmMxNSBsZWdhY3ktdHJ1bmsKKzI5MTQ3IGJhNTIyYzc0YTkzMTAxYzQzNWFlZmZlN2VlYWVmMjliMGU2MDdiYjQgbGVnYWN5LXRydW5rCisyOTE0OCBjZTQ5ZjEyYTE3NjllNmE5N2M5ZGM2NGQ3ZTc3Zjc5MTI0Y2FmMDc1IGxlZ2FjeS10cnVuaworMjkxNDkgMzg4NDNkMzViNjQ2NjAyYTQ2YmI1NmE1ZWQxMjY3ZDZlYjk3MTBmOCBsZWdhY3ktdHJ1bmsKKzI5MTUwIGM3ZDU4MDFiYmFlOGJjZGM1ODk1NWNkZGM4MWVjYWJlZjQ3MzNjODYgbGVnYWN5LXRydW5rCisyOTE1MSA2OTVhZDhmODc3MDk1MTEzMzlmYWMyZDg4Y2JlZjZhY2ZhMWRiOTUxIGxlZ2FjeS10cnVuaworMjkxNTIgMDgwOWRjNTk4ZmUyM2EyYjMyYzcwMThlMTk5N2I1OWMxNWZmN2UxMCBsZWdhY3ktdHJ1bmsKKzI5MTUzIGY0YWE2NTY3MTBmMDM5ZjM3N2Y0YTBlNzBlYTBjYjdmMmMwZWI1ZGEgbGVnYWN5LXRydW5rCisyOTE1NCA1NmMwYmEyMDMyOWI0ZGVkNDI1ZjFkNzc3YmZlMWU3Y2M5MzNkNjNjIHJlbGVhc2UyMi1tYWludAorMjkxNTUgYjJlODM3ZjJkMTQxYzZmYmY5ZDcxZmYyZjI3MTc4MDJmMGYwZTU5NSBsZWdhY3ktdHJ1bmsKKzI5MTU2IGQ4ZWM5OGI3NGZhNzhiNTU0YmE5YzFmMTRmN2ZiZTljZmZkYzFkMzkgcmVsZWFzZTIyLW1haW50CisyOTE1NyBiMzliZDAzYThkYWI2NjkyMzg4ZDljMTY4NDRkY2U1Yzg1Y2EwYWQyIGxlZ2FjeS10cnVuaworMjkxNTggMTNkNjM5YTRhZmQ3YjgzYTk4YzNhZjAzMTQ2YTVhN2YyMzBkNTg3ZSBsZWdhY3ktdHJ1bmsKKzI5MTU5IGE5NjIxYmE3ZTNkYmQxMzQwYjBkMDg3YTc2Y2U0NGMzNDg0Mjc1NWMgbGVnYWN5LXRydW5rCisyOTE2MCBlOWU3ZjE2MGFhYzk5MGUyMTViYWZkZmEwZmQ4YjNmZGRkMTk0MjlmIGxlZ2FjeS10cnVuaworMjkxNjEgNTAwMTNkMWM2YTQzZWExYmVlZjUyNmYxM2MwNjdiNTNlYmEyNjg0OSBsZWdhY3ktdHJ1bmsKKzI5MTYyIGI3OGY1YzdlNTc5MDIxOTA4MzUzYTYyMDg3MDJhZTk3MGFjYmJiZGYgbGVnYWN5LXRydW5rCisyOTE2MyAyZmI5MTBiMTM5YzJlMjVkNTZjZWIxNDQ3NTQ3YmI0ZGM4YzM1ZGY0IGxlZ2FjeS10cnVuaworMjkxNjQgZmViODg2M2I2ZmM0Njc0YmQ3YjlkNDc5MWRiNTkwNTc2NzdjYjYyYiBsZWdhY3ktdHJ1bmsKKzI5MTY1IDZhZTZmMjA2MGUyOGQzNjQzNWE5Mjk5YTE4NGZlY2M3ZGFlZTZkNzkgbGVnYWN5LXRydW5rCisyOTE2NiBjNjIxZjcxYmM3MDI1NjA5ZjA5YjhkMTg4Y2Y1NTE0MGU4YTQwZDdiIGxlZ2FjeS10cnVuaworMjkxNjggODEyMDRlMjBjZmU1OWUzNzJhN2E2MDExZmE2YmY1NjUwNDVhNzdmMCBsZWdhY3ktdHJ1bmsKKzI5MTY5IDBhN2FhODc0YzQ1MGJkZGE1OTk5YTMyYzBiMmRhNWUyYzI0ZjM1NmQgbGVnYWN5LXRydW5rCisyOTE3MCBlOTU5MTcyY2FmNDkzMjE4ODBmODNjOThkZmMzNmUzYTkzOGNiODQyIHJlbGVhc2UyMi1tYWludAorMjkxNzEgNDQ3NzYyZWJiMTFkMmQ3MmExNTE4ODliOWIyZTQ2MTg1YTg3NzJiMCBsZWdhY3ktdHJ1bmsKKzI5MTcyIGVlNzU2YWI2YTEzZTBkZjczOGZiNzliZWMxOGQxZTczZDExNmI5ZDQgbGVnYWN5LXRydW5rCisyOTE3MyAwZjUwNTM2YTEwYmI3NzY0ZTdkNzcyMmZjMGYwNjdkNGJmMDQyMWQ2IHJlbGVhc2UyMi1tYWludAorMjkxNzQgMWZlMWE1N2Q4ZWIxYjI3YjhlMzg3YmRhZGQ3OWU3MGRjOTliYWZmOCBsZWdhY3ktdHJ1bmsKKzI5MTc1IDczM2RmMmQxZWJhOTcxYmY1MGE0NzEwZDU4MDZhNzc4YmQwNjM2NTYgbGVnYWN5LXRydW5rCisyOTE3NiAxYTlmNDc4ODUyNjA0YTdkMGNjYzM4MDFiYTM2YWZjZDczNjIzNjYxIGxlZ2FjeS10cnVuaworMjkxNzcgYmFkOTY5OTU3NmQ5ZDliZDU2MGQ4MmQ0YjI3OGQwOGU4ZGViZDdjZCByZWxlYXNlMjItbWFpbnQKKzI5MTc4IGFlNjg2M2U4NzcyNDM3YmMxYzcyNTZjZDEzZTQwOTRjYWRiNmM5M2MgcmVsZWFzZTIyLW1haW50CisyOTE3OSAwNmY2MTczYjgwZmI0MTcxZDA3OTdiNjk0OWEwNmZhMzdlNjZlYzQ4IHJlbGVhc2UyMi1tYWludAorMjkxODAgZTA2NzQzZmFiNDc3NWNhODQzMzliM2M1YzBjNzhlN2Q3YjZkMDNiNyByZWxlYXNlMjItbWFpbnQKKzI5MTgxIDQxYzU5MjEyMmY2MjlmZDVkOWQ2MDlhNDdiZDZkZjdmOTMxMTZjNWMgcmVsZWFzZTIyLW1haW50CisyOTE4MiAyYWRhZGMxOTkyM2NlMTJmMzA5MzEyMzg5NTMzNmYyZTM3ZjU4N2Q4IGxlZ2FjeS10cnVuaworMjkxODMgMjkwZWEwYzZkZTZhNWExYWNmMmEzYzA2YjIyMTY3MTYyMWQzMjBjNSBsZWdhY3ktdHJ1bmsKKzI5MTg0IDU1YjE4Mzk0MTIzYjdhYzYyNTc1OGRlYzc3ZDRjODU5Y2U5YjJmNTUgcmVsZWFzZTIyLW1haW50CisyOTE4NSBlMzc0ZWE3YWM0Y2U0OGEwNDQ5Mjk1NDgyODBhZGUxOWZjY2FmZGUwIHJlbGVhc2UyMi1tYWludAorMjkxODYgZjUzMmU5YjY5NTUxYzJlN2U3ODRhYmIxZTVjZjAyZWM5ODgyNDAzYyBsZWdhY3ktdHJ1bmsKKzI5MTg3IDNjMjZhZTYxZTk1MjNlYmRmMzUwNWMxZGJkZTk3ODVjMDAyZTQ0Y2EgcmVsZWFzZTIyLW1haW50CisyOTE4OCA4YjIwYjI2ZjExODY5OTgwMjM5Y2IxMDY3OGQ3MTVkOGQyMmM5NGE4IGxlZ2FjeS10cnVuaworMjkxODkgZjZlZGIxZWYyZTNmODAwZjY1YzZlMDY1ZmViZjRmY2FkMWI0NGU3YyBsZWdhY3ktdHJ1bmsKKzI5MTkwIDYxZTZiNTdlYmJlMWQ4MGVlYTI4MjBiYzcyMGQ3MzViNzJkYzVhMmUgbGVnYWN5LXRydW5rCisyOTE5MSBkNjM0ZmJkNWU0MjMyZGQ3YzA5MTcwN2U0MjhlZTI5ZTE5ZDI1ZGJhIGxlZ2FjeS10cnVuaworMjkxOTIgOGU5MmJlNjVkZWQzNjY4ZmU2YWFhYThkNGYxNzU0NTIzZTA3Yjg2YiByZWxlYXNlMjItbWFpbnQKKzI5MTkzIDY1ZmExOTNlYTEwOTBjZTdkOWNmOTY0ZjQxYWY3ZmVmODNlYWI1YWMgbGVnYWN5LXRydW5rCisyOTE5NCBmNDYxODI3ZGM3ZGU2YzNmM2YzNWY5MWNlOTAzZjcwNDI2ZWIzNDVmIGxlZ2FjeS10cnVuaworMjkxOTUgZmExNzM3MTlhYzhjMGVhNjExYjhhNjZhZTRkYTYzNzkwZjhjYmMyNiBsZWdhY3ktdHJ1bmsKKzI5MTk2IGI1OWQxYTExOTM5MzJkYjM2ZDMzZjYxYzliNDM2ZTM3OTdlMDViMDIgbGVnYWN5LXRydW5rCisyOTE5NyBhY2U4MmRhM2I0NTBlNGEyOWFiZjFjZjMwY2RmMWNlMTI4Y2ViNmY5IGxlZ2FjeS10cnVuaworMjkxOTggNzg3ZmVjZDBhYTFiYjEwNzY4NjlmNTEzMDA2Y2FiOTk5ZmU1ZGQ2OSBsZWdhY3ktdHJ1bmsKKzI5MTk5IGM1OWNlNTEzZGVmNjI1YmVhNmEwNTgwOTM4NzE2ZTZhZmNhNzZlMzEgbGVnYWN5LXRydW5rCisyOTIwMCAzYTNkNWFlYzdhNmFmZjFkZmVlNGY1MzhkNzlmYmNmNjU3YmFiNzRmIGxlZ2FjeS10cnVuaworMjkyMDEgNzAwNWY0YjZjYzEyMmNjZDlmZmI5MTFiYTg5YTZlMmU1ZGJlYTI0ZiByZWxlYXNlMjItbWFpbnQKKzI5MjAyIDZkMjEzODM4OTY2NzI1NjIwNTdmM2I3NWNhZmE5NGNiZjA5OTQ2MTUgcmVsZWFzZTIyLW1haW50CisyOTIwMyA5MmE4YTM1MmUwMjQzMDYzM2E4ZWNmZGY2MTRjMDUyNzA2MGRlZjY0IHJlbGVhc2UyMi1tYWludAorMjkyMDQgYjBmYTVmNmE4YmI5N2RlN2E1NTc4OWYzNDgzMDk0OGZkZmVlZGNhNCBsZWdhY3ktdHJ1bmsKKzI5MjA1IGVlZWQ3YzhiMjMxYWVkMTY3NjdlMzcwZTc3ZjJjMTIzZTA1NjhiNjAgcmVsZWFzZTIyLW1haW50CisyOTIwNiA5NzAwMmIyNTA0MjU2NzlkMTg2MjZhNjdjNzgyZWNlN2E2ODkxYzY3IHJlbGVhc2UyMi1tYWludAorMjkyMDcgNzBmOTAyNmEyYjE2ZmQzOGQ4N2MyNzI0ZDU2ZjAzYjM4YzFjOTFmNyBsZWdhY3ktdHJ1bmsKKzI5MjA4IDIxYWIyYTY3NGMwYTE0NjRlYTA2YmRkMmM5ZWIwYjQ0ZTRkN2Q0YzEgbGVnYWN5LXRydW5rCisyOTIwOSAzOTZjOGEyNDg4MGM4MjVkNTQyNGYwZTZjZjJjNGJmOWNlMTdmMTk3IHJlbGVhc2UyMi1tYWludAorMjkyMTAgODZiZjg0MGMyYTFjYThiZTRmZGQ0MDI1NzcwMmUzMDE1N2JjZTgzNSBsZWdhY3ktdHJ1bmsKKzI5MjExIDU0ZWJmMDg1ZDI2ZmE5NjRjYWY2MmRmNjdjNmE3NDFjODFmYjMxNWEgcmVsZWFzZTIyLW1haW50CisyOTIxMiBmN2NjZjQ5OTE1NjVjM2ZiMzMyMDI4YTFkM2MyYTZhYzNmZjFhNmQ1IGxlZ2FjeS10cnVuaworMjkyMTMgNzM0MGI2NGE0OTA4MjIzZWJiZjNlMDJhZTdlOGRkYTFkNDYzZmQ4MyByZWxlYXNlMjItbWFpbnQKKzI5MjE0IDQ4OTBmMWJkZWFhNjQyZTIwYzdlNGY4NzY5MWNjMjU0Mzc5NjZmMzcgbGVnYWN5LXRydW5rCisyOTIxNSBmN2E0NmIwZDNjMDdhYTMwZTY1YWUxYzI2MzMzYWVmYjE2NzVkMTY3IGxlZ2FjeS10cnVuaworMjkyMTYgZDQzZTgyYjhkNzlkNTY4OWU4YmM5YmI3NjZkYjg0YzNjNDk2OGQyYyByZWxlYXNlMjItbWFpbnQKKzI5MjE3IGVjMGE0OGFlOGViNDdlYTE2ZjczNzg0ODE2NWVjZThkNDk5ZmI5ZWMgbGVnYWN5LXRydW5rCisyOTIxOCA5YmQyZjk3OTJlZmJhNjdmZjU0ZmRhZmFjYzk4MmZjMDhhM2EzMTkwIHJlbGVhc2UyMi1tYWludAorMjkyMTkgM2M5NWUwOTc2ODQ0OGVjYTM0MjNkYzAyZTBhYmY2MDUwMDQxOTYwNiBsZWdhY3ktdHJ1bmsKKzI5MjIwIDJkMTdlM2NiNzc0ZTgzNjNkOTE1NDQ0YzRlMWNkMjU1NjNhZTM0MTIgbGVnYWN5LXRydW5rCisyOTIyMSA3NWNiZWM0MGRiN2Q1ZmM1NDFjZmQwZmRiZTNiYmU1MDNlNjJjY2U2IGxlZ2FjeS10cnVuaworMjkyMjIgNmQzNWQ0MjkyZGVjNDZkMjE4MzkyNjJjNWZhZWIyM2ExZDEyZTM3OSBsZWdhY3ktdHJ1bmsKKzI5MjIzIDYzMjI1ODExNDk4ZDUxMWQzMWIxYzNiMDQyYWRmYTZkZjQ5ZGViMGYgbGVnYWN5LXRydW5rCisyOTIyNCAwODM4YzQyNDc5MTc4M2ZlYzhhNWUzZGRiNmQxZDQwZDA0NWIxODE4IGxlZ2FjeS10cnVuaworMjkyMjUgZjQ0OWZiNWJiYWI4YWQ2OWE1M2IyNTQyYzRkMTk2MzRjMjkzMmQ1MCByZWxlYXNlMjItbWFpbnQKKzI5MjI2IDU2MzI4NDFhMzJhNDA1OWViZWEzNzU3ZjVjMzZiZjdmMTA1MTlkNDMgbGVnYWN5LXRydW5rCisyOTIyNyA2ZWQwYmJkYWJkYzgxOWVjMGEyNWExYTA3ZDA1MGExZjIyMDcyZmE0IHJlbGVhc2UyMi1tYWludAorMjkyMjggNjlhYTYwZDc3MWQxZjMxOTljY2QzNjMxNGQ1MGE2YzQyYzM0OGJhNyByZWxlYXNlMjItbWFpbnQKKzI5MjI5IGI0ZWQ5ZjkzMTljZGU0MTE1ZGExZjE1OTRlOGVjMDcwNDAyYTA2YTMgcmVsZWFzZTIyLW1haW50CisyOTIzMCBmNDQ3YjY5NjAxYjkxNTZlMWQ1YWEyMGYxMDU5NTc1YTNiZTVkZTI4IGxlZ2FjeS10cnVuaworMjkyMzEgY2E5ODlhNzFiNmM3ZGQ3ZGNkMTE1ZmJmMWY5ZTI3MDYzMWZiYTNhMCByZWxlYXNlMjItbWFpbnQKKzI5MjMyIDcxZTNhOGU5ZDg4NDA2MWMxZDU3Zjk2Yjk5YTI0MWY4MTQ5ZTM5NTQgcmVsZWFzZTIyLW1haW50CisyOTIzMyA0NDcyOWZiYjNkNWJiYzFhZmM2YzdlYTcwZWNjMzZkYzIyYTEyMGQ0IGxlZ2FjeS10cnVuaworMjkyMzQgOGFlOWMwYjBhYTBmMTU0ZGNjNDhkZjE1YTFkM2NjYmJiNDY1ZjMxNCBsZWdhY3ktdHJ1bmsKKzI5MjM1IDdhNTdkZGY3Mjc5NGVmOWYxMzlhNjRmMGMwZThiZTk0OGMzZGRmYTYgcmVsZWFzZTIyLW1haW50CisyOTIzNiAwMzdkZmJhMDcwYWM3OGMzOGE2MDJkMmRhOTlmNzk0M2M3NWQ0NWYyIHJlbGVhc2UyMi1tYWludAorMjkyMzcgNTY5OGYwZmUyZWEwMDkwMDYwOGViNzRiYjMzYWRlNjMwZjM3MTZmYSBsZWdhY3ktdHJ1bmsKKzI5MjM4IDk1MWUzZmU3ZWQzYWQzYTU2ZTRiNmNiNzdjODFkN2QzYThjMjA5MTggbGVnYWN5LXRydW5rCisyOTIzOSAzYTg3OWYyZmNhMDY2YWQyNjgyNDg2MGU0MTk2ZWU1YmFjOGY4MTgwIGxlZ2FjeS10cnVuaworMjkyNDAgZDU4NzFkNmU3MzVkNzRkZmM3MTVhZWFhNjg5MTNiYjBkZjcyOGRjOCBsZWdhY3ktdHJ1bmsKKzI5MjQxIDM2MjMwMWE4YzNlNDI4OTg2ZDQwNTIzYzI0ZTljZDNlMzUxOTUyN2QgcmVsZWFzZTIyLW1haW50CisyOTI0MiA5MWViZjQ4OGI1YTE4N2JiM2NiMzEyMzllMTM2MGE0ZTU0OGY5MWJlIGxlZ2FjeS10cnVuaworMjkyNDMgYzM1NWZkMzdkNjQwN2IxNDJmYzJkZjE3OGNmZDg1NDIwODM3OTlmMSByZWxlYXNlMjItbWFpbnQKKzI5MjQ0IDg0ZWU1YTQ5OTc0MzAxMDY4ODZmOWQ2ODllMzRmNmU3MjY4MmJiMWMgbGVnYWN5LXRydW5rCisyOTI0NiBlZGY1ZTdlNTVkMTQwYTc3MTc1ZTcwMmFmNTZkZWM3MTFhZDk2ZWZkIHJlbGVhc2UyMi1tYWludAorMjkyNDcgYWRlOGFmMWFhM2M2OGY0MzNiNjcyZjhkMTc5MWVlOWQ2M2EzYjgwZCByZWxlYXNlMjItbWFpbnQKKzI5MjQ4IDFkYWNiNmFjMzhlOWNlZTUzMGE3Zjk1MGI0NzhiODliYWQxZTVjZjggcmVsZWFzZTIyLW1haW50CisyOTI0OSBjYzQxYjljYWNhZTg0N2U1MTNmNmZjNTEzNDg0YmUyYTQ1Nzg2Mzg5IGxlZ2FjeS10cnVuaworMjkyNTAgZjBhNzRhZTA5YWQ3M2U0OGEzNTE5NTVkNjA5YTg4NWM3MDBmOTI4YSByZWxlYXNlMjItbWFpbnQKKzI5MjUxIDJlZjcxZjM1MWM3NGEyZTFmNTBmMTM2ZTI2ZGFmZGFhMGViNGIyNWMgbGVnYWN5LXRydW5rCisyOTI1MiA0MjNhYTVlZjkyNDdiZDRmNWRmZWJmYzQ4MWI5MDA3NTI0MDE5NzFmIHJlbGVhc2UyMi1tYWludAorMjkyNTMgY2YxOGNhMGVlYTg5MmQ1NWI0OTM5NDhiZjEyZmNmZjE0OGEyZDg0YiBsZWdhY3ktdHJ1bmsKKzI5MjU0IGFmMjBhZWFhYTk4MjA0YTA0NjI3ZDI3YmZjOWNmMjZjNzZiOGRmOWMgbGVnYWN5LXRydW5rCisyOTI1NSBiZjM4NDExMWIzYjM4ZjdmODIxN2UxZGIwMjg2ZWZiNTIxMTk0NTZmIHJlbGVhc2UyMi1tYWludAorMjkyNTYgZWExYTRjZWJjNTMwYTViM2RlN2ViZGU4ZmU4OGE0MzBhZGFkNjI2ZCByZWxlYXNlMjItbWFpbnQKKzI5MjU2IDYxZDUzMTUzM2E4NjIyNGExYzI2OTE3YzE4MDEzZDkxZjU5MmZiZmIgcmVsZWFzZTIyLW1haW50CisyOTI1OCA4MzgyODU4M2Q5MTczOGY2YmE4NmU1Njg4ODhmYzVmNzUwNjYxZjM5IGxlZ2FjeS10cnVuaworMjkyNTkgMzFiMmZiNDQ4NTE0NjMyYTU1MTlkYjc2N2Y5ZTdmNzJmYWQzNTNjMyBsZWdhY3ktdHJ1bmsKKzI5MjYwIGEzZDYxMmYwNTYzZjE2NDM2ZGI3ZTBjYTY1NGQ5MTIyZmRmNzY1NDMgbGVnYWN5LXRydW5rCisyOTI2MSBiODU4ZjRjODgzZGRkZTRkMDg0YzliOGU0YmQ0YmViMzhiZjlkZjM3IGxlZ2FjeS10cnVuaworMjkyNjIgMDAxYjc4OWYxZjg0YzAwNzhjY2M1MWY5ZDZkZWNiMGZjMTIyYzkzMyBsZWdhY3ktdHJ1bmsKKzI5MjYzIGFjMTQzMTdhOWFlOGIzMTZlNGJhNTI3YzcwNzQ5MmNmNzc0ZjZkZjUgbGVnYWN5LXRydW5rCisyOTI2NCAzZWFmYmRlNTZiMjE5ZjFkYWE1ZTJjODUyZWFlMDlhYzFiZmM1ZGMxIGxlZ2FjeS10cnVuaworMjkyNjUgNjZlM2U1ZjA5M2NhMTEzNzQ4N2RjODA4NjkzZmJjZjNiZDQyNmU4YSBsZWdhY3ktdHJ1bmsKKzI5MjY2IDg1Yzg3YjNhYzk2YmMyNmU1NzRmOTU0ZTMxYjc2YmY5NGE1Y2I4NzUgbGVnYWN5LXRydW5rCisyOTI2NyA2YzkzMGUyNTZhMTZkMjQ4OTg2YWVkNzkwM2Q3NDUzZWNmMDkwZjVkIGxlZ2FjeS10cnVuaworMjkyNjggYmM4MWQ1MzFjNjI5MzIyNTJhNzI1OGUzNmI4MjExZjdkZmE5YmM1YyBsZWdhY3ktdHJ1bmsKKzI5MjY5IDM0Mjg0ODI1ZDljZDgxYzI5MzMzZmVkODlhM2YxOTRkZWQ1ZmZhMWQgbGVnYWN5LXRydW5rCisyOTI3MCBjNzdkODM1NzBiM2ZjYWZmNmEzNmI3ODIwNDg0NmU1ZjllMDRjODZhIGxlZ2FjeS10cnVuaworMjkyNzEgYWI5ZDQwMTZiNTg3ZDVhZTlhN2Q1ZTk0MmYyMTRhZGViYTNhODk4YSBsZWdhY3ktdHJ1bmsKKzI5MjcyIDYwMDEyNjVlYzY4NjE1NmM3YTdhNGQxOTJlMzA1YWNhYTMwMDVmMmYgbGVnYWN5LXRydW5rCisyOTI3MyBiOTc2OWY3MTMzYzYwYWMyYjQyNmEyNDFmN2VkM2MyMTRlYzIyNmRhIGxlZ2FjeS10cnVuaworMjkyNzQgMGJiZWE0ZGNkOWJlZDZkODFjOTI3NDVjZjY4ZTg4OGIxNmZiY2Y5NiBsZWdhY3ktdHJ1bmsKKzI5Mjc1IDM3YmQyYTkwMWMxMDBhOWZjZmMwYmJjNTU0NGJlN2ExOThkN2UxMjkgbGVnYWN5LXRydW5rCisyOTI3NiBmZGNhODdjNDIzNGVhNDZhNTQyYWZjMTc4YjcyMDBlNWU3NDE0MWU0IGxlZ2FjeS10cnVuaworMjkyNzcgY2RjYjEwMmY4ZTU2YzJjZjRhOTBhODczZjQzZjViYjViYTdkZGJhZSBsZWdhY3ktdHJ1bmsKKzI5Mjc4IDkxNTExMjY3MTE1MmY0M2ZhOWQ3ZGNiNmVmYTMwNjY1YTg2MWQ5MTcgbGVnYWN5LXRydW5rCisyOTI3OSA1NDgzNDM2M2NjZjBkYTY5ZjM0MGQwZmI3NDE3ZGVhMmU1NmU2ZDAwIGxlZ2FjeS10cnVuaworMjkyODAgNWQzNTJkZTk0NDE1ODBjODNjMmRjMDJhNmVjNDA2OTE0NjgxN2I3MyBsZWdhY3ktdHJ1bmsKKzI5MjgxIDc3Nzk5OGEyMjdiNzRkMTdmNGRjYjI3MTkyZWJlN2I5ZTlhZTY5YzIgbGVnYWN5LXRydW5rCisyOTI4MiBiOGNiZGI3MzVjZjJiMTk5ZTU2NGY5NGU5MTg5YjRhZjQyMGI1Njk5IHJlbGVhc2UyMi1tYWludAorMjkyODMgNGE5MmM3ZDlkNDE1NGIwNWZiZDI0NWZmZTA2ZGFkOGE0ZTBkNzA2MCByZWxlYXNlMjItbWFpbnQKKzI5Mjg0IDc2YWMxNjI5M2U0YjZjNzQwN2VhOTUxNGY5MzcyYjdkODFhMGY4MWMgbGVnYWN5LXRydW5rCisyOTI4NSBmZjY3ZDVmZjEyM2U1NjljYjBiNTU1Y2M0ZTQ5ODdlNzQzNDRjM2FkIGxlZ2FjeS10cnVuaworMjkyODYgNzk0MTk4OTdhMzZmZTc5Nzc1NTZiNzRkNjAwOGI1NjZjZjEyMjM0MCBsZWdhY3ktdHJ1bmsKKzI5Mjg3IGM0NDAzYTNlZmE1ZDVmOGI4ZDg0ZTQ2Y2QyYjg5OGRjNmJmZDE1MDMgbGVnYWN5LXRydW5rCisyOTI4OCAxMjIyN2Q3OWY2YmE0Yzc2ZGYwNWZjNjcxZjE1YzZiNzUxODZmZWMwIGxlZ2FjeS10cnVuaworMjkyODkgMGY0ZTk5OGUzZWJiNjMzNGNiMWJhN2E1MjEzNjViNmRlMDMwZWY3MSBsZWdhY3ktdHJ1bmsKKzI5MjkwIDAzMmYxOTYwNTlhYTBiNGY3MWUwYzgwZTRmY2MwZmU5N2E2YWJlMTMgbGVnYWN5LXRydW5rCisyOTI5MSA5OTBiMjc1MTQ5MzgyYjRlN2Q3ZDk0YjRhZjQ4YWY5MWRiYTZjNDI5IGxlZ2FjeS10cnVuaworMjkyOTIgMWFmYjIyOGU0MjY1YjVhODZmMDhjMGM4NGRiNDA2MDY5NDMxNTAxNiBsZWdhY3ktdHJ1bmsKKzI5MjkzIGNlYmVlMmE5ZTNjZjk5NjBjMDA1NTUzNWYzOWEwNGI1ZWFmZTU2YjkgbGVnYWN5LXRydW5rCisyOTI5NCBjMmRkNDEzMDE4NDEwOGJlNTNiNTFmN2UzOWE4NTg5ZjFmYWM1MzEwIGxlZ2FjeS10cnVuaworMjkyOTUgMDkzZmU1YjlmNmY5NDlhYTViYmQxMTRmMDM1YzkyOGMwMWQ1NWM5NSBsZWdhY3ktdHJ1bmsKKzI5Mjk2IDdlYTY3NGFjNTkwZWY1NzQ4ZDNjNGExZGI3NDE3NjA3NzRjMTU3MTMgbGVnYWN5LXRydW5rCisyOTI5NyBkYzQyMGRlMTdhNmVlNjNjZWUwMjBiNTE5NjQ3YTEzZjJhMzQ1NjMxIGxlZ2FjeS10cnVuaworMjkyOTggZGVhYmQwNTNiNmRlMWY0ZWQ2NTZhZmQzOTc5NWZmZTk4NTdkN2FjOSBsZWdhY3ktdHJ1bmsKKzI5Mjk5IDgwNTAxNTdhNDQzMGJiN2JkODcyMTM1OThiNzQzODRiYjAwMDNhOTggbGVnYWN5LXRydW5rCisyOTMwMCAwOTBiNzJjMGQyZWI3MzAyNTlhOWE3NjI5NWRlMjUxMjZkMWZhODZhIGxlZ2FjeS10cnVuaworMjkzMDEgNDRjYzdjNjJkOThkYjM3NzYxYzQzMTdjNTRlYzUyZjJlNTAyN2NmZiByZWxlYXNlMjItbWFpbnQKKzI5MzAyIDAzNWI4ZGViNTJjMWVmNGQwZWI1MzAxN2NhN2E0MDJjMThlZTczOTYgcmVsZWFzZTIyLW1haW50CisyOTMwMyA0NzAyOTIxMjk3ZDEyNTVhMTBjYzljNzNiZDEyODdiMzVhMDcxMDcxIGxlZ2FjeS10cnVuaworMjkzMDQgYTg5ZDAxNDU1OWUwNTdmMDE2MjMyOWNjNGQ4ZTQ1Yjk3MDllYzY0ZCBsZWdhY3ktdHJ1bmsKKzI5MzA1IDJmMzY0N2IyMWIwNzYzMzkwZjJkMTc4NzUxNDFkODM1NTRmNDlmZjggbGVnYWN5LXRydW5rCisyOTMwNiA4NTQwODg3YmNlYzZjOWI5MGEyYWFhYjQxMDIyNzk1MjJkMWY3YzU5IHJlbGVhc2UyMi1tYWludAorMjkzMDcgMjQzNTAzOTI2YzgxZDgwZWM1M2UxYWIwNGIwMzVkMzM1YmVkZDA0MiBsZWdhY3ktdHJ1bmsKKzI5MzA4IGVlYTQwYzQxNzIwNTM5ZmJmN2IzNDMwZDBkMGJhMzMxOTliMTI3NzIgcmVsZWFzZTIyLW1haW50CisyOTMwOSAwOWUzZjBkOGJlMTBiZWI1YWIwZWZlODQ4NGFkYTQ3YjRhN2IyMmM5IHJlbGVhc2UyMi1tYWludAorMjkzMTAgZWFiNzk0MDI3N2ZiYjNjMTM0YmRjNDQxMTg3NmQyZTkyYzM0YjdjOSBsZWdhY3ktdHJ1bmsKKzI5MzExIDdiN2I5NjU1NTg0MmE5NGQ0Njc1NzNjNDZjMjVjNDcwNWIzM2NkMWEgcmVsZWFzZTIyLW1haW50CisyOTMxMiAzMWJkYzY2ZmIzMDdmMDE1Y2YwZThjMDcwOGE1ODU5OWQ0YWQzNjFjIGxlZ2FjeS10cnVuaworMjkzMTMgNGFjYjU1MDFiNDkwMGM3MTNkMDIyZjAzZGU3ODE0YzRlYjlmNWNmMyBsZWdhY3ktdHJ1bmsKKzI5MzE0IDhmYjEyYWM3OWM5MzdhYTQzNzg1OTY1NmZiMWFkNjEzYWI2MTViNDcgcmVsZWFzZTIyLW1haW50CisyOTMxNSBlZWQwZmNmODViNjIyOTA0MjljMjExOWM1ZGZkN2YwY2UwNjczMDhkIGxlZ2FjeS10cnVuaworMjkzMTYgYTVkYjI0NmQ5NGEwYjkxYWQ5NDQzNGIyYzk3NmY5NTMwM2ZlMjkzNyByZWxlYXNlMjItbWFpbnQKKzI5MzE3IDA1N2RlNDFkYWY0ODkyZDAxZmZkZTk5ZTM4NmZiMzQ0NmI2N2U3OTYgbGVnYWN5LXRydW5rCisyOTMxOCA2NzM4MWViZDVmNGY3MjYwODNhYjg1NWQ3YTI1ZTRmNzQ4MDE4Y2RjIGxlZ2FjeS10cnVuaworMjkzMTkgNzg4NTg5OWZiNDNlYjUwY2QyOTk0MmFmZjcxMDQ0YWJiN2IwODIxYSBsZWdhY3ktdHJ1bmsKKzI5MzIwIDFmNWY2NDgxODg2ZDlhYjM0ODExZGU2ZTQ1ZjkzMDYyNWY1MmY3ZDUgbGVnYWN5LXRydW5rCisyOTMyMSA2ODBiZmNjOWNhMDY2YzZjNmRlMjdkYzAzZTQzYmFjN2RkMGI3MmM1IGxlZ2FjeS10cnVuaworMjkzMjIgMmY5YjBhMzVlMjA1Nzg4ZjdlMjNhMWJmNDc3ZDA4ODA0MmEyNDgxYSBsZWdhY3ktdHJ1bmsKKzI5MzIzIGExMWNmYWU3MWRlYjA3ODZlNjIyMzAwNzA0OTg5NDAwY2E5NjU0MGYgcmVsZWFzZTIyLW1haW50CisyOTMyNCA4NGEzZGQ5OTRjZDE4ODA0ZjYzM2I2YzgzZjVmMjk2ZDBiZDEzNTM1IGxlZ2FjeS10cnVuaworMjkzMjUgNTRmMzJiYTcwNDdjYjNmYjE4OTIwNzEzZTdiYjRlNGJlNThjNWVjZiByZWxlYXNlMjItbWFpbnQKKzI5MzI2IDlkZDljNTMxY2E3OGM0ZjEwZGMxMTY0YzYxMjk5ODAzNWQ2NzA1YzQgbGVnYWN5LXRydW5rCisyOTMyNyA0YzhhOGM3NGY0YmRhOTRmZjM4NWY2NWMxNWU0YmYyMzdmMGNmZjBiIHJlbGVhc2UyMi1tYWludAorMjkzMjggODIzZTk0N2UyNDUwMjU3ZmZjNTdjOTgxZDI1Y2RhMWJmYWVlYTZjZiBsZWdhY3ktdHJ1bmsKKzI5MzI5IDM1ZjQ3NmQ2NDgxZWY0MjlkZWRhYzBlNjI5NDJmMzYyOTA5M2E4ZmIgbGVnYWN5LXRydW5rCisyOTMzMCA0MWUwMzYxYTIxOTEyMmZhZTczM2MwZjZkMmQ1MzJmMTBhMzRhNTYyIHJlbGVhc2UyMi1tYWludAorMjkzMzEgZTU2YjUyZTc4YmM5NzkwYjUzYjY3ODg1MGEzZjM3ZDJmMjgxZGM5OCBsZWdhY3ktdHJ1bmsKKzI5MzMyIDE1MWFhMzQzNGFhNjcwMjM5NzJjYTczYWRkY2NmYzM3ODk0MTdhOTcgbGVnYWN5LXRydW5rCisyOTMzMyBkMTdmZmEwNTIyYjc1OWVlOThhNzNjZDUxZDY3YjhkZDY5OWVlYWFlIGxlZ2FjeS10cnVuaworMjkzMzQgYjlhYTg3MWY4NDRiZmNmZmNlYzYyNTZlNzIxMjY1MmJjYzJmYjhhNiBsZWdhY3ktdHJ1bmsKKzI5MzM1IGI3YjAxMmU3OGRhMzVlM2JjNTUxN2M1MjAxMWQ1YTFhOTZiOWIzOTAgbGVnYWN5LXRydW5rCisyOTMzNiAyYjE1ODI2N2IwMGU0YzA5YzAxMTMwN2IwOWMyOGEyNjJlNzJlZWE0IGxlZ2FjeS10cnVuaworMjkzMzcgMmJjYjQxNjExZmFlOTE5MzUyYjQwNzJiMDlhN2ZiZWE5YTIwYjE5MiBsZWdhY3ktdHJ1bmsKKzI5MzM4IDRlYjk0YzU2YzQ2YTQ3MWE0NmQzZDlhN2QwZDdhMDgwMTJmNzkxODEgbGVnYWN5LXRydW5rCisyOTMzOSBjYjkxMGMzOTQ5MjcxNDk1Mzc1MDE0MDIxM2VhMjVlNTY5MGEzNjI0IGxlZ2FjeS10cnVuaworMjkzNDAgYTljZmViNDJlMjQwOTk4NjRhM2ZjMDY2Y2NkMzE3ZDlkYmYzN2Q3NyBsZWdhY3ktdHJ1bmsKKzI5MzQxIDU3ZmIzZDVlM2RkMzc2MDFlZmY4Mjc5ZWIwNjViN2FkZGExNWZiZDUgbGVnYWN5LXRydW5rCisyOTM0MiA3OTMwNWEyZWZhOGM4NzhlYzM3YjFiYzkwZmY5YTliMTE2ODliZWE4IGxlZ2FjeS10cnVuaworMjkzNDMgOTI1M2ZlODZiOTIyZmExYTFkMTJiMjBlMDFlMTYxYzMzYTliM2YwYiBsZWdhY3ktdHJ1bmsKKzI5MzQ0IDVmN2EzMzRjMDkyNTEwOTk0M2I1ZmVkYmY1ZWU4ODA0N2FmYTViN2QgbGVnYWN5LXRydW5rCisyOTM0NSAxNTYwN2VjNDlmYWYxMDgxODQ3YmRiOTA0ODI5NzFjZmQ3ZDgzODdjIGxlZ2FjeS10cnVuaworMjkzNDYgZDRjZmE0MDQzYzA5NGQ3YmEwYmYwNWM2YzQxMjE0OTk5M2NhNjJjMiBsZWdhY3ktdHJ1bmsKKzI5MzQ3IGNhMDI1ZTlmZTViYzJlOTA0YjQyM2VmN2FhZWFlYTA2YmY3Zjg3ZGUgYXN0LWJyYW5jaAorMjkzNDggODNhMzJjNTQ3YjQ5OTNiNjBmNWE0ODNhNDgyZGRhN2JlOGZlYmZmMCBhc3QtYnJhbmNoCisyOTM0OSAwOThjZGJhZDU1Y2YyZTc2MDQyZjY3MjQ0NmUwMTgzYjQ4MTI0M2RhIGFzdC1icmFuY2gKKzI5MzUwIDJkN2Y0Mjc3MDczMzI1Y2E4OGRhMzg3ZjFhOGNkZjgxN2U1NDczYzkgYXN0LWJyYW5jaAorMjkzNTEgNDU4N2QxYWYyYzQxNDNlNWE0OTBhZmQ2M2E5ZDMxMGViYjBiNTRhYSBhc3QtYnJhbmNoCisyOTM1MiBhYTJlYTVmZjVmNDI3MDlkNzQ4ZDY4ZDk3ZGM4M2MxNTllMjllN2I0IGFzdC1icmFuY2gKKzI5MzUzIDA3YzZkM2I5MjkzYzI3NWRjOTUxOTllNDM2YmI2YzAzYmQ0Y2E5NDQgYXN0LWJyYW5jaAorMjkzNTQgNDZiNTY3M2NhMzgwZGFiODQ1YTVmZDk5YWQyYmI4ZGVkYjkwMTIxZCBhc3QtYnJhbmNoCisyOTM1NSBlMzY1ZTZiZjQxYmIwMWY2ODMyYmRmMjNiZTExNmQ3OTRlNTg3NzQ0IGxlZ2FjeS10cnVuaworMjkzNTYgNGQ1MDMxOGIzZWIxODFkYjdkNjI4OGZkNTVhMDM1MDFlYjk2Y2U2MiByZWxlYXNlMjItbWFpbnQKKzI5MzU3IDhkNDRkNjE0OTQxZDQ3N2E2NmJjMzE3ZjA0NTYzM2NkYTIyMGI2MDkgbGVnYWN5LXRydW5rCisyOTM1OCA2ZjE4NTA4YmVkM2QyNzg4NWNiZGZmYWU5YTNkZDE4ZWQ3ZWZkZjE2IGxlZ2FjeS10cnVuaworMjkzNTkgN2U4MGU3ZDA1YTE2YzgzOWI3ZGEyNzVhNjk0NjgzMmM0Yzg2NmM4YyBsZWdhY3ktdHJ1bmsKKzI5MzYwIDM0ZjE3ZmI0OWM1MTMxMTAzOTg2Y2U5YjIxNWQxMWI0YjBlNjJiYzUgbGVnYWN5LXRydW5rCisyOTM2MSBmZWMxNWJhZDM4NmQ5ZjBkMzA3MDVjNGQ2YzM0NTA0MjMxNGJiMDM3IGxlZ2FjeS10cnVuaworMjkzNjIgYTcwZmNjNWRiYmE1MDVkZGI1NTg2OTdmMTc2YTNlZDA4YTg0Y2RmMyByZWxlYXNlMjItbWFpbnQKKzI5MzYzIDUyOWRhNTA1ZWFiYzczMTAzODkzMGJmODcxMWJkZDliZjQxMmYwOTIgbGVnYWN5LXRydW5rCisyOTM2NCAxNzUwNDFlMzQ1ODdhNzYxZWFiZjZlODcwYWE5MDRhOGRjOTg0MWYzIGxlZ2FjeS10cnVuaworMjkzNjUgN2YwMzBiOGY5MTdkOTBiMDJjNGYzOWUwYjAyZTExZWJlZjFjOGVhYSByZWxlYXNlMjItbWFpbnQKKzI5MzY2IGZiZWE3MGE0MDI5MTU0MjE4MzFmYTVjYjJhMTQ4MGE3MWY5MjJjYmEgcmVsZWFzZTIyLW1haW50CisyOTM2NyBhYzIzOWVlMGM5ZThiODcxZGEwODZkMDRhNGMzZDY3ZjdmNjY2ZDQxIHJlbGVhc2UyMi1tYWludAorMjkzNjggY2Y4NzkyMDM1MWFjZTkyNzdhNjdiOTE0YzM1ODU2ZjNhMjAzY2JjNCBsZWdhY3ktdHJ1bmsKKzI5MzY5IDQwMmZkYWU2N2U0NDBmNGQ4NmE1NzM5MTM3NjQ0YmY1OGNkNGIxZmUgcmVsZWFzZTIyLW1haW50CisyOTM3MCAxOTUwMGM5YjU4YzE2MWJmYzUzYTZlN2M2MDA2ZjY1OWVjM2U2OTlmIGxlZ2FjeS10cnVuaworMjkzNzEgNTA5YmIwYjZkZmEzY2JjYzkwYjczNzIwZmI4NjhlNzY0MDc4MmM3OSBsZWdhY3ktdHJ1bmsKKzI5MzcyIDEyNDkyNDUyMTJlNDQ2MTYxYzRmNWE3ZWY3YjBjZGE0ZmZiYWFjOGYgcmVsZWFzZTIyLW1haW50CisyOTM3MyAzN2Q4N2RjODAzZDdhNGJkNjJkZTc1ZjExMjJhZWUxN2RjMzY4OGM5IGxlZ2FjeS10cnVuaworMjkzNzQgZDNiNzM3N2M4YWZhZGUxMjA5ZGY4OTAwMDQ4NzIzMzIyZTc1Nzg2NCBsZWdhY3ktdHJ1bmsKKzI5Mzc1IGMzMzk4YzI1ZGZlZjdkOTA2NTZlZDNjZGExMzcxYTMwYzJjNjkxOTUgbGVnYWN5LXRydW5rCisyOTM3NiBmYjdjNTJjYTk4NDA1MTBlNmZmMWI2YjM3OTAxMzkzNzRkY2Q3NmI0IHJlbGVhc2UyMi1tYWludAorMjkzNzcgMDk1ZGJiZWJhOWMwNGZkNjQ0MzUzZDM5NTFkNDA4M2NkZjRhYTlmNSBsZWdhY3ktdHJ1bmsKKzI5Mzc4IDQ4N2QzYzI0OTBiYzAzNTg4MTIwZWFkMjVhZDkwN2ZhOTg1ZjEwYTUgcmVsZWFzZTIyLW1haW50CisyOTM3OSAwM2MzZjYxMGUwNTQxMzA4YjRiNTg0ZTZmMmU4M2QxNWIxMmUyZWRjIGxlZ2FjeS10cnVuaworMjkzODAgNTE4MjhlYTUwYjU5YzBlODFlNGM3N2NlNTBhNDFjOWY0MDI2MDg1MyBsZWdhY3ktdHJ1bmsKKzI5MzgxIDE3OTQ4Mjg3NWNmYmE1YzQwZjdmODg3MmY3MTg5ZWU1ZmFjODk4NjkgcmVsZWFzZTIyLW1haW50CisyOTM4MiA1MDkwNWRiMzVkYTViMGYwNjlmZGM0ZjI1ZDU5YjAxNmZjOGMxOGI3IGxlZ2FjeS10cnVuaworMjkzODMgNmVhOWVlZjk5MTA4NDc4NjMwOGY5ODc4ZWE2MDIzY2ZhODlmNzJmYyByZWxlYXNlMjItbWFpbnQKKzI5Mzg0IGRmMDU1YTllZmY5Y2Y5MDc3OGMwZGJlNmRjMzBhOTEwYjIwZDdjMTIgbGVnYWN5LXRydW5rCisyOTM4NSAwYmFjNjZlMWIzNTY5MDRlYWU0MmQ3ODgwY2U3YjNmYTQ2NTViNjcyIGxlZ2FjeS10cnVuaworMjkzODYgYWNjZDJmNTRlMTg0N2FjNDVhOWVkODkwMzk0MTg0ZTJhZjFlYmE4YiBsZWdhY3ktdHJ1bmsKKzI5Mzg3IGQzMmM0NWQyNzhiMjQ5MGRmNTVlOWY3MDgyM2YyMTFhYTg0OGVhYzUgbGVnYWN5LXRydW5rCisyOTM4OCBmN2RhMzNiY2UxZDkzOTk2YzhlN2JjZjI0NDYwMTYzOTgyZjgyNzYyIGxlZ2FjeS10cnVuaworMjkzODkgZmJhMTZiOWJjOTUxN2Y0YmQ5ZjU0M2EyZmMzODYxNWZmMWU1ZTgzNyBsZWdhY3ktdHJ1bmsKKzI5MzkwIGIwNjM4MzI5ZTNiOWExYTliNjViYTFiNzBiZTVjMzEwZmJiZTZlYmQgcmVsZWFzZTIyLW1haW50CisyOTM5MSBmMmRhZTNkOWE3NWJkM2MzZTU4NmRlMjJhMjljMTZjOTQxMjQwN2Y5IHJlbGVhc2UyMi1tYWludAorMjkzOTIgOGJiNjAwM2Y3ZjU0YzU5NjZlYWVlZTQ4ZTZkOTBiZmQ1MGJmMjAwYiBsZWdhY3ktdHJ1bmsKKzI5MzkzIDViNmQ1NWI0NTI4N2M0MzRmNjJkMTBjNzdlYTQyZmI3MDc3YmVhZDUgbGVnYWN5LXRydW5rCisyOTM5NCA5OTAxZmRhN2MzNjY0YTdmNzUzMjMyZTllYThkZThlZmUwMWNlYjU5IGxlZ2FjeS10cnVuaworMjkzOTUgNGVmNzY4NmM0Yzg4OWY2NzE2Njg2MmIyM2ViNDE2ZDk5MWI2NzBmMyBsZWdhY3ktdHJ1bmsKKzI5Mzk2IDRmNGUwMjYwYjc3MTMyMzgxM2YzN2NkOTVhMGJmZjE1YzExZGZiNWIgcmVsZWFzZTIyLW1haW50CisyOTM5NyBlOGZjNDU5ZWMwMTU1ODViZmIxMDEyOTcxOWJmMTUxOWZjMzYxOTVjIGxlZ2FjeS10cnVuaworMjkzOTggNmU0MTRmYmE0NmY2OGMyOWEwODY1Y2NjNWNlNGRhOWRkZDUxZTVhMyBsZWdhY3ktdHJ1bmsKKzI5Mzk5IDgzNGIwZTAzODljNWE5YjNhOTI4OTU0MjVjNzRkNjk3MDRhMzk3NWMgbGVnYWN5LXRydW5rCisyOTQwMCBkYzRhMDMzNmEyYTMzY2MxYzZhODQ5ZjQzMWQ1MzgzNjI3MjI2NmRlIGxlZ2FjeS10cnVuaworMjk0MDEgNmQ1NTQyY2EyNzdhMzlhODk3NjRjNjdhMzcwNzgyNTJhZjM5NTY0ZCBsZWdhY3ktdHJ1bmsKKzI5NDAyIDU4OTQxZmNiNmY1YmMxNTZhMWIxZWI4Y2Q0NTI0N2Q3NDYyNTI4NTIgbGVnYWN5LXRydW5rCisyOTQwMyA3MDQ5MjY4ZjI1MmQyNzI1ZTc4ZDk1NTZhZGM5ZDdjODQzYWVkY2RjIGxlZ2FjeS10cnVuaworMjk0MDQgNzU3NTZjODU1OGJkOTExNzFjYzU4NDA3MzczNjVkY2U5ZWQ1ZjU0NSBsZWdhY3ktdHJ1bmsKKzI5NDA1IGRlZjk2MDlkOTM2OWNhOGFlNmVlMjlkN2EzYTVmMzRhZjllYmU0OTIgbGVnYWN5LXRydW5rCisyOTQwNiAzMDY1YjU0ZTNhYjcxYmYxN2RmMjZhMWJkM2IwYjA3ZDdjYzk3ZWZjIGxlZ2FjeS10cnVuaworMjk0MDcgMTFmY2NjY2QzNjAwNDc5MTY3NGE0NWZiZjI0Y2JlMDJkZDkyMjY2ZiBsZWdhY3ktdHJ1bmsKKzI5NDA4IDc5MDcyOTQ3NzYxMGVhNzdiODE2NzczYmQ3MzYwMjZmZGQ1ZTk5YWYgbGVnYWN5LXRydW5rCisyOTQwOSAwNGNjMTJiZGNlZGVhYTc1YmQ1NGIwZTYyOWZlYjAzMTRjNTg4ZGFlIGxlZ2FjeS10cnVuaworMjk0MTAgYmU4ODE2MTQ4NDhiMjg4NjNmZjIzZDU3ZmUwMTA3ZTg5NjZmZWEwMyBsZWdhY3ktdHJ1bmsKKzI5NDExIDk0MjQwYWQ1MGRiZTJlNzFiOGNiM2Q2OGZlYTk1MTNlYzdmZWQ3NzUgbGVnYWN5LXRydW5rCisyOTQxMiBiNmVlODA0N2IyNTBkNGE5NGRmY2M5NmY4YTllNWVjMmIwMjc2M2IyIGxlZ2FjeS10cnVuaworMjk0MTMgZmI1N2Q1Nzc3YTI0OTJiNzI3M2YwNGY1YzhhMjQwOTNhNmI0MDYyNyBsZWdhY3ktdHJ1bmsKKzI5NDE0IDQ4ZTQ2MTJmODdjZDkyOGI5ZWY3YWM5N2MzZWM2YWYzOTgwODdhMTMgbGVnYWN5LXRydW5rCisyOTQxNSA0M2Y3MDEwOWNkYTVjNTU4YmUyOTY2OWM1ZjQ5Mjg5MTZmYTQ4MDg5IHJlbGVhc2UyMi1tYWludAorMjk0MTYgZTFkYjFmOTBlMTdmOWQzNzBmMTI3N2ZhZTk0ZDc2NjBhMTU0YWM4ZiBsZWdhY3ktdHJ1bmsKKzI5NDE3IDdiNzczYTEyNzFjM2RmMzgyNGY3MDllMDRjODVlZjZiN2E5NDhiM2YgbGVnYWN5LXRydW5rCisyOTQxOCAzZGI3NzJkNDVmOTg4NmM5YmMyMzAxNjQyYjBjOTM3OGRmZTI2NDRkIGxlZ2FjeS10cnVuaworMjk0MTkgMjZiNDQwYzM3Yzk0Yzg5MjYxY2NmOTkzM2M2Y2NlM2Y1NmEyY2UzNyByZWxlYXNlMjItbWFpbnQKKzI5NDIwIDI1M2U5ZWRmZGZjMDYwZmY3N2I0ODk2ZjRhZTJiNzcxY2YwOTg5YmUgcmVsZWFzZTIyLW1haW50CisyOTQyMSBhYWUzNzY0YzRkNThkNDkxZjRjNjVmMWFhMmUwMDRjZTEwMjFiNmUxIHJlbGVhc2UyMi1tYWludAorMjk0MjIgYjkyNDZmOGZiOGZkMzA0Y2VjNzM2ZWViYWExZDIyOWE5ODcwZThhZCByZWxlYXNlMjItbWFpbnQKKzI5NDIzIDgwOGU1MTNhMmY1YzJmYzQ4ODk2Zjg3YTc2MjEzYWEwZGU2MDljZmQgcmVsZWFzZTIyLW1haW50CisyOTQyNSA4NTg1ZmQ5YWVjZWY5NWFkZTY1ODVmODFkOGY3OWExMmQ2NDQ5ZjIxIGxlZ2FjeS10cnVuaworMjk0MjYgMzZkNDE4YmVhNTUyMThmMGYwZjYxMDQ4M2YyNTZhNDhiNjM5OGE1NyBsZWdhY3ktdHJ1bmsKKzI5NDI3IDQ0NWZlYjI2YWRmYjlhYTUyMDFmMjY0NTVlYmIzMDgwNGU5ZGE2MWYgbGVnYWN5LXRydW5rCisyOTQyOCBmNGYxNzY3OGZkZDg2NThkYmE0YmZmZDllOTIwMjAxZDEwZmYzMDdjIHJlbGVhc2UyMi1tYWludAorMjk0MjkgOTQ5ZWQ4MzY1ZDU4ZDM1MWJjNzIwNTU2YTMxZWQwZmUyYmI1NGFhMiBsZWdhY3ktdHJ1bmsKKzI5NDMwIDE4ZWRmMjNiZjQ5OTNkNzEwMjk0N2UzNDQ3ODllM2MxMzVhMDQzZWYgbGVnYWN5LXRydW5rCisyOTQzMSBkYmE2MGQwMjRlNDg0MzYzYTJmOGU5Y2QzOTc0ZWVjYTdiNDRhYjE5IGxlZ2FjeS10cnVuaworMjk0MzIgMDk2NjQyZDdlY2EyNWJiN2QyY2IyMjYzMjU4OGM1MjE4MGRjNzJlMCBsZWdhY3ktdHJ1bmsKKzI5NDMzIGZjNmExOWY2OWFjN2UyYjYwZWU3OWNlZmEyZmZjMTYzZTJkMDlmMzcgcmVsZWFzZTIyLW1haW50CisyOTQzNCAwMWJmOWM4OGQ5NjAzNmI2NjYyYTE1OTI3YWRkMjZjMjRjNDU2Y2UzIGxlZ2FjeS10cnVuaworMjk0MzUgNzI3MzRiMzlmOGFhMGFjZjUyNmFkMjNhNjc5YWVmYTQ2YWEwMjhhZSBsZWdhY3ktdHJ1bmsKKzI5NDM2IGQ5MGVmNDZkMDgzODI4YmM5NWMwYmQ0NmI5MTFlZmViYzkyYmU3MzEgbGVnYWN5LXRydW5rCisyOTQzNyA0YTI0YzZhNjQyOWE2NjczNTA3ZTNhNmI3OTUzMDZmNTk4ZDY3NzE5IGxlZ2FjeS10cnVuaworMjk0MzggOTFkM2Q0NDUyYzQ4MjIwYjQ2Nzk1YzAzM2NjNGNiZTRmMzA1N2IxNiBsZWdhY3ktdHJ1bmsKKzI5NDM5IGUzNDlmZTA5M2IzNGE5MTg0OWQxODk5YWRhNTViYTNiMjk5YjdkMzQgbGVnYWN5LXRydW5rCisyOTQ0MCAzMjNlNGMxMTQ2ZDBjNjAyNWY2YmZkZTQ4YzJmMTA2NDMwZTcyMjBmIGxlZ2FjeS10cnVuaworMjk0NDEgNTUxN2MzNmFjNDk3ZGMzNjQwYjA2YmNkYjkxZWQ5NDM5N2E4OWE3NCByZWxlYXNlMjItbWFpbnQKKzI5NDQyIDY4NzViZDdjYjU3MDU3M2VlYzMzY2JlNjc0MzVlYjE5MGNjYWFiZWIgbGVnYWN5LXRydW5rCisyOTQ0MyA1YjgyOGZmZTFiMzVmMDFlZTZjYmUzNzAyMTVlN2IzYzdkOWQ5Yjc1IGxlZ2FjeS10cnVuaworMjk0NDQgNDI1MmIwNGYzZWVkNjM0Y2UyM2NjZDIwN2Y4ZTU1NjQ0MmYxOTQ4NiBsZWdhY3ktdHJ1bmsKKzI5NDQ1IDhlNzMzODM0NzRlYWViN2VlMjkyZjZkMzliNjM5ZGM1Njk1M2I1MGYgbGVnYWN5LXRydW5rCisyOTQ0NiBkN2RhMDgwZDc3NjMwNGM4YmMzOWVkNzU3ZGViMTdlYWRhYTA5ZmYxIGxlZ2FjeS10cnVuaworMjk0NDcgNDcyYTQyZTIwMjQ0MDlhZGM1OTYwYTYzMDEyZDIyOTVmOGIwMzkwZSBsZWdhY3ktdHJ1bmsKKzI5NDQ4IGNiODI5OGE2ZWQ0N2M0NGRkZjEwNjUxYTZlNzAyYWU0MTk2OTE3MTggbGVnYWN5LXRydW5rCisyOTQ0OSA2NjYyZjlkNDIyMGI1Y2RhMDY0NWUxNmI2MzliM2FhOTg0ZjA4MTZhIGxlZ2FjeS10cnVuaworMjk0NTAgYTY4YzZkNjJmZTc4OGRmNDAwNDkxZDhmNjg4YWVmMzk3MjljNGZkMiBsZWdhY3ktdHJ1bmsKKzI5NDUxIDA0MGFmOWM3MzZiYjE5OGJlODUzNjMyN2ZiZjEyNzUzZGU1ZWM3YzAgbGVnYWN5LXRydW5rCisyOTQ1MiBiNjQ3OGQ0NjM1NTU0YmUxNTI5YWU5NWRhODkxMjRlY2Q1YmQzMTZlIGxlZ2FjeS10cnVuaworMjk0NTMgMmQ4MzdlMjA4M2ZhZjM1MDk0MmQ2YzQ2ZjZkOGI4ZTY2YTdlOGU0NSBsZWdhY3ktdHJ1bmsKKzI5NDU0IDFkMDJiNDA1ZTMxZmIyMTljMDc1MmQ0MDIyOThmNTlkMjAwNTk1NmUgbGVnYWN5LXRydW5rCisyOTQ1NSA0ZjFiNzM5NmEzYzU0MjY4OTQ0NzdlNzMxZWJiODA5MzMxNjNjYmEzIGxlZ2FjeS10cnVuaworMjk0NTYgZDgxMmI4YWFlZmIzMWI0NjYyZmI2YjU2Y2Q5Njk5YzdjNzQ0YmRhNyBsZWdhY3ktdHJ1bmsKKzI5NDU3IDAxNDdlYmVmOTQ1M2MzNjFmNDM4NDJhOWUzMzdhNWJjNDFiYmUxY2YgbGVnYWN5LXRydW5rCisyOTQ1OCAwNmUwMDU2NjZjNDIyOTFmOGZkZDBiNTY1MmQ1ZDQ2MjRhMmE4MjQwIGxlZ2FjeS10cnVuaworMjk0NTkgZTFiZjQ2MDRjMGE1ODRiMWJiMTgwNDgyMzkwNjU1NzdlODI2ZTJhOSBsZWdhY3ktdHJ1bmsKKzI5NDYwIGQzMDhkZjgyNGUyZDE1YmMwMTJmOWMxN2RiMjU3M2NmMTkwMWRiMjggcmVsZWFzZTIyLW1haW50CisyOTQ2MSAxNTIyMTk4MDcxNDQ3MmQxMjM0YTA2YmE0YjE5OGM3M2IxNWFjMjc0IGxlZ2FjeS10cnVuaworMjk0NjIgMTQyNWJlYTJlYTY2YTEwYzhkYjM4YmJhMDNhNWQ4NzQwMWQ3ODc0NiByZWxlYXNlMjItbWFpbnQKKzI5NDYzIDljZWQzZTUxODdlZTFkNjY1OGVkNDBlMzFmZGIxMDc0NGU1ZmQ2NzQgbGVnYWN5LXRydW5rCisyOTQ2NCA2ZTExYWUwNGFmMTA5NDlhNjBlNWRiY2FmNzA4YjdlYTMwMmI3MDI1IGxlZ2FjeS10cnVuaworMjk0NjUgOTBmNGVlZWZjNTE2ZjlmM2QzZTA3YzEwNWMzMWFkZjM3ZjEwMGI4MiBsZWdhY3ktdHJ1bmsKKzI5NDY2IDYxMWFmNzljMGU4OTJiNGVjMzQzYmEwZDlmMjljOTUyYmQ5MWZkZWUgbGVnYWN5LXRydW5rCisyOTQ2NyAyNzNjYWQ3ZjdkZjcyMTk2N2RhYmI0YzQ0ZTFlZDczYTc0MmU0MWM0IGxlZ2FjeS10cnVuaworMjk0NjggMTk3NjJhNDkzNmZjODRiNGMwOWNlMDVmNDZlMTkxYTI2MjBlMmRmYSBsZWdhY3ktdHJ1bmsKKzI5NDY5IDBmZGZjY2RmZWMwNmYyZWVjMjQ1YjNhY2JjOTE3M2UyMzdjNjJlOTYgbGVnYWN5LXRydW5rCisyOTQ3MCA5MGEwOWNkMTUzMDU5MzFkZjVkMDE3NjQzMjhiNjA5N2U4M2FiOWE5IGxlZ2FjeS10cnVuaworMjk0NzEgYmI4MTMzNDZiMjI3ZWUxYzk2NDYxZjJjM2U1YTM5ODk0ZmU1ZTdhMSBsZWdhY3ktdHJ1bmsKKzI5NDcyIDFhYWExMmMwOGIzNTk0OWY5NGQ1Mjk2NGE2YWQ2Njk3ZTA4NmVhMmEgbGVnYWN5LXRydW5rCisyOTQ3MyBhNzUzNmNlYjA2ZjYzY2JmZWZjMjA5MmFlYWNjYjZkMjc4YTYzNDgwIGxlZ2FjeS10cnVuaworMjk0NzQgNTQ4ZTZmZmJmZjc1N2FiODk2YWNlMDg5MjUwNjk3NjI4ZjJhZmNiNyBsZWdhY3ktdHJ1bmsKKzI5NDc1IDNmM2I3YTYwODZiNzNiM2JlYjBjODc3YjgzNmU3YmI1OWRhOWMyZDggbGVnYWN5LXRydW5rCisyOTQ3NiA4YTg4ZTk3N2E3MWJiZTYzZWMwYjdjNjcyZmE3MmQzZjBmNDEyZjA1IHJlbGVhc2UyMi1tYWludAorMjk0NzcgODNkMjFlYTk0NTdkYjJlY2ZjNmQxOTE0NjNkOWYyYmRmOWFlMjliZSBsZWdhY3ktdHJ1bmsKKzI5NDc4IGJkZTM2NjA1NDJjZDNlMTkwYWM5OGY2YmQ1ZWFiZDc0YjNiOThmZTEgcmVsZWFzZTIyLW1haW50CisyOTQ3OSA0MWVjYWVjNWI0ZjgxZWY4M2RiN2VjYzM1MjAyMGEzZGNlYmViNmJlIGxlZ2FjeS10cnVuaworMjk0ODAgNzIwNTdlZjkwMmFhZWUwNzBkMTFmY2QzM2YzNDQxYmRmNzU2NjEyYyByZWxlYXNlMjItbWFpbnQKKzI5NDgxIDI4Y2ZmNjBhNjA5NzAyZGU3OTkxNzE5NjQwZTk2MDU5MWQ2NzZkMDEgbGVnYWN5LXRydW5rCisyOTQ4MiA0OTQ2ZDRmMzdkODRlMmFhNDg4OGRjMGUxYWFjNTVlZjg4OThhOWYxIHJlbGVhc2UyMi1tYWludAorMjk0ODMgM2Q2MjdlM2Q5NTYxMzY1MjFhYTdiNzQ0MzNkMzM3MTM1MjM5YTUxNCBsZWdhY3ktdHJ1bmsKKzI5NDg0IDMxYjU4NDljYWM0MmZiNTgxMzQxNTJiZjJkMTA0MTk0ZDk1MmMyMjQgcmVsZWFzZTIyLW1haW50CisyOTQ4NSBiMjhlOWJmMGYwNDZhZTlhM2NjOWQxMDhhMzQzMDk2ZjQxNWY3NmI3IGxlZ2FjeS10cnVuaworMjk0ODYgMDI5ZTc1ZmZlNzUwZDM0YzNhZGUwNTIyMTJlMjMwY2RmZDY5NmNmYyBsZWdhY3ktdHJ1bmsKKzI5NDg3IDM2ZWEzMWJjOTA3NjUwZTEwNGY4ODY3ZWYzNTE4ZDk5ZTI5MTJmNTEgbGVnYWN5LXRydW5rCisyOTQ4OCAwM2IwMjcwZTExNmIzNzJhNWM4MTNkOGYwNDFkOWUyZmZiMzAxZDFiIGxlZ2FjeS10cnVuaworMjk0ODkgYzZjYTM5YjE1OGNkZjliMzYwM2VmODMxOTU4OGM2ZTEwMWU3NTMyNyByZWxlYXNlMjItbWFpbnQKKzI5NDkwIDMyNjNhZDRmY2Y4MTFhMTU3ZWE5OTBlY2U4YjkzOGM4ZGE4MmU5ZjggbGVnYWN5LXRydW5rCisyOTQ5MSBkNDI0NTU4ZDI0ZjkwMzJhOWFhMGQ3NTU0YjMxNGE2MmEzZGZkYzU0IGxlZ2FjeS10cnVuaworMjk0OTIgNWJlNWM4NGRlYTIzZmY3MDI0OGQ2NDI5YTJhMzgyZWI2MjU2YzhmNSBsZWdhY3ktdHJ1bmsKKzI5NDkzIGJkNjc3YzhlNDA2NzAyNDk0NmFjZDZmMGI5NjAzOTQyNmQ2YjU3ZmIgbGVnYWN5LXRydW5rCisyOTQ5NCAzNmRlNWE3MzEyNTdlYmFiMTRlYzExZmRmYzI4ZWY0NjY0YWU5MWIxIGxlZ2FjeS10cnVuaworMjk0OTUgOWJmZDQ3YTljOGIzNTAxOTRiZmQ1OTg1YzIzMjhlYzQzMjE5YWMzNyBsZWdhY3ktdHJ1bmsKKzI5NDk2IDZmYTVjOTU0MDhlYmQ4NDQxOGY4MDNmMWEzZjBhMTcwODdiNWE1NjEgbGVnYWN5LXRydW5rCisyOTQ5NyA4ZTMyNDY4NDI3NzM0YzlhYTE2YjU0MjEwNjRiZWJiMTc5YTY4M2NmIGxlZ2FjeS10cnVuaworMjk0OTggNzU4MzAxZWUwYmI3NjVjOGFkZTc5YmY2NDJhMWJkNmUxNjNiNzFmYiBsZWdhY3ktdHJ1bmsKKzI5NDk5IGY1NGU4OTI3MmFkZWQyOTUzYjE5YTI2NzE2MzA5YzRmYjJhMTg4YTEgbGVnYWN5LXRydW5rCisyOTUwMCA5YjQ3Mzg2YmE1YjgwNTRjNzdmZTc3OTllN2VmZWNmYmQ4NTRmNDE2IGxlZ2FjeS10cnVuaworMjk1MDEgMTI0NGY0YzM4MzRmNDkwMjJmYmU4MmJiNGExOTVjNmQ0NWM2Y2EyNSByZWxlYXNlMjItbWFpbnQKKzI5NTAyIDE4ZTA5NzIwNzM4ZjZmZjUzMWQ3NzQ2NTU0YjlmMDRhYWYwMTRjYjggbGVnYWN5LXRydW5rCisyOTUwMyAwYmRhMjBhZmU2MjMzZmIzN2QyOTkxNDNmNGU0NmQ2NWYwYTQyYWFlIGxlZ2FjeS10cnVuaworMjk1MDQgZDY4ZmM0OWE3MDk2MDFiYzAwOWIzMmI5NmE1Y2Q0YjgyYjg4OTFjMyBsZWdhY3ktdHJ1bmsKKzI5NTA1IDY0YTk2Yjk3ZTFlOTdjZWI3Y2Q1YzYzZWI3M2JkMGZlZmQ2ZjY2MWIgbGVnYWN5LXRydW5rCisyOTUwNiAyZGY5OGZmMmNkZGExYTY1Mjc2NDExY2UxM2I0ZGJhZDRlNjk0MTQxIHJlbGVhc2UyMi1tYWludAorMjk1MDcgYTJmMzY5MzQ2MzkzMDdlYmZlMDY4Yzk0NzYwNzlhNjk1NTAzYzA5ZSBsZWdhY3ktdHJ1bmsKKzI5NTA4IGY1NDM5ZjgxMzNmODU3YjM4OWY2OWE0YWVhNWExMWRkMzE1OGU4YjggbGVnYWN5LXRydW5rCisyOTUwOSAyMjVlYTFmNTJkZTk1YTkxOTYwNTVlYjk4ZmQxYTZhNWUwZjA2M2M5IGxlZ2FjeS10cnVuaworMjk1MTAgMWRlN2FjNzI5YmZhOTIzYTJlMDBkNjI1ODgyNjNhMzhhMTNiYTg1NiByZWxlYXNlMjItbWFpbnQKKzI5NTExIDE4M2ZjMjFmYjg2NjIzMjNkY2IzMjk4MDNmMzNlZWNhNjJjZTAwZWEgbGVnYWN5LXRydW5rCisyOTUxMiA2ZWQyZTIzYWFlNDU2NTIzODA2ZTJmZDcxMmY0Njc5N2VkZmQ0ODRiIGxlZ2FjeS10cnVuaworMjk1MTMgNzcxYjZmNTIxYjk1NjFkOGU0MmU5MjRkMWExNTQzM2U0YzY5MzkyMyBsZWdhY3ktdHJ1bmsKKzI5NTE0IDUyMWU4OWM0ZmY0NDc4MjA5MTczYTQ1ODk4OGYzMDA2MWIxMmE2M2IgbGVnYWN5LXRydW5rCisyOTUxNSAzYTc2MDZhMjIzN2JiNjk1NzIxY2QwNjM5MTViMzVhNTAyZGQ2OWE2IGxlZ2FjeS10cnVuaworMjk1MTYgNTI1Y2RkYjc2ODJhY2VlN2VkOGI5Mzg2NGE1NzhkMjFlODcyMDFhYiByZWxlYXNlMjItbWFpbnQKKzI5NTE3IGU5YWEzOTRjNzE5MTcyN2ZiYWM1ZjVlODVkODNlZDI5YzhmNmM5NzYgbGVnYWN5LXRydW5rCisyOTUxOCBjZTM2OWNkNTYyNmJlNzE0MWIzYjgyYTZmOGQyZDk2YjA4OGJjY2FjIGxlZ2FjeS10cnVuaworMjk1MTkgNGI4MDQ0ZDFmMWFjMzI4MTlhNmMwYjYwMTE5YzcwNmY1N2Q5MWIwZiBsZWdhY3ktdHJ1bmsKKzI5NTIwIDlkYTAyNjkzN2ZhNTI4MDk1MGM1ODc5YjBkNjhmNTgwNDNjNzlhNTQgbGVnYWN5LXRydW5rCisyOTUyMSAxYzk5YTVhMGI4N2JkZTYwMmRkYTBmYmVkY2ZlNDM1YTE0ZTQ4NTRiIGxlZ2FjeS10cnVuaworMjk1MjIgNmVlMmY5YjRiZjVjNGI3MmZjMTA3NzQ1NTYzYmU5OGYxYzkyZjM2MiBsZWdhY3ktdHJ1bmsKKzI5NTIzIDFkYmFiYzViZWZmN2Y1NWE5YmJjNDAyYjViYTgzZTc4M2E2MDM4YmYgbGVnYWN5LXRydW5rCisyOTUyNCBhNTU5OTc0MGE2ZTgwZjkwODIxYTZlODE3ZDk1OWJkYThjZTZmY2UzIGxlZ2FjeS10cnVuaworMjk1MjUgYjRhNjI4M2I5MTViYzYxZDViNjY5OWVjM2Y0OTVhMmU4YmU5MDdlOSBsZWdhY3ktdHJ1bmsKKzI5NTI2IDU4MTljNDQzOWJhMjQ2NGU5YTM0NGU0N2Q0NzlmMWY2MjQxMDIzNGYgbGVnYWN5LXRydW5rCisyOTUyNyBjNTQ3MTZhZWQyNmEwNmRlYWE2YTlkNTFlMjQ4OGFlMzlmMjMxYjZkIGxlZ2FjeS10cnVuaworMjk1MjggMWI0YzVlNjZhNGI0YWQxN2NhMTA1YmM0OGZjOWVlNmQwNzA0OWU4YiBsZWdhY3ktdHJ1bmsKKzI5NTI5IDgxMjEzNThlMzIxNzAzYTU3NGU4OWYwN2Q0NjM1NzAxZmI2MzhhYjIgbGVnYWN5LXRydW5rCisyOTUzMCA2OTY4NjRhYTA1ZDMzNDMxMDI1MDcwMjU2MGZjOWFkNjE2MDcwMTYxIGxlZ2FjeS10cnVuaworMjk1MzEgNmE0MjUzNmZiOWVlYmI5OTAwZTRlYmJhZjM5YTkxNzY1OTFhZDgzMSBsZWdhY3ktdHJ1bmsKKzI5NTMyIGJhMjE5NGFkM2I0MjNjM2ViODNjOGQ0MzgwODBiNDI2MDk5OTkwZDUgbGVnYWN5LXRydW5rCisyOTUzMyAxYTMwZWQxOWY2NGFmZjkwYzBlMWU2MTA1YTJmMzEwMzUwZTg5ZDMyIGxlZ2FjeS10cnVuaworMjk1MzQgMTNiMmVjNTM2ZTA3MDVlOTgxM2MzZGNhNTZjNzQzNmJiNGRhNDM4NCBsZWdhY3ktdHJ1bmsKKzI5NTM1IDlkZDkzNzlhYzZkNjc5M2I3NzY4YjFiOWEzYzVjZDRiODM4OWEwY2MgcmVsZWFzZTIyLW1haW50CisyOTUzNiAzYzIzZTRjM2RhMDIwODZmNWE2ZmNiNzJlMzQ3NmFmMjg4N2Q2OWJkIGxlZ2FjeS10cnVuaworMjk1MzcgOTUxZGFjYzIxODQ3ZDcwNTBmMjE4Nzk0OGFmOGNlZDUxZjAwMjcxNiBsZWdhY3ktdHJ1bmsKKzI5NTM4IDliNWI3ZGEzNjJhNWM2ZmE1ZGVmMzIwMWJiNTU0NzBjNzdkNjJjNDggbGVnYWN5LXRydW5rCisyOTUzOSAwZGJkNmI3M2FiZDIzMWYxMzg5Zjk2ZTYzZGRkNmNmMTQ3OWQ1NGUyIGxlZ2FjeS10cnVuaworMjk1NDAgZmU2ZTk4OTRjMmQ0MmE0YmFlY2JkMDZjOGQ5NWFiOTI5YjdlMGY1YiBsZWdhY3ktdHJ1bmsKKzI5NTQxIDk1MTQwNzkzMjAwMTlkNjlkMDE3N2RkODEyZTMxYThlODc5YTQwNzggbGVnYWN5LXRydW5rCisyOTU0MiBkMjdlNWNhZDM4ZDc4MjRlNGU4ODA5ZjFlYzFkYmYxMWEzMzI5YmNlIGxlZ2FjeS10cnVuaworMjk1NDMgZWY1ODkzYmI3OWVmMzljOTljNzU2NDgxNzQxMWVkYTU5MTk2MTk1MiBsZWdhY3ktdHJ1bmsKKzI5NTQ0IDg3YjdmYWUxMGExOTMwNzc3YjkzYTE3MmYxYTcwYjJkYTBlNzJlZWYgbGVnYWN5LXRydW5rCisyOTU0NSA4NjhmZjBkZmFiZDJjYmIwNjQ5NDBhMjA5YmMzMDgwYWVhZjQ1ZThhIGxlZ2FjeS10cnVuaworMjk1NDYgZjJlZDcyMmZmMDAzNTBjMjYwODFhNmJjYzhlODRkOTFhMzFlZDliNyBsZWdhY3ktdHJ1bmsKKzI5NTQ3IDg4YmJjMzBiMDg0NzhkMTMyNjczMmFmOTVjNDcxZTdiY2VlYTJhMDIgcmVsZWFzZTIyLW1haW50CisyOTU0OCBiMDYzYzQzZjRkZjAzMmNlODgxZDExYzU3ODEyZDA4NmU2YTE2MGQ4IGxlZ2FjeS10cnVuaworMjk1NDkgZGFiMmMxMmI2ODJlNzg3NTU4NzFjMzdiYWU5NGU5OWFiMmNmNTc1NyByZWxlYXNlMjItbWFpbnQKKzI5NTUwIDdmYTkzYjVkZGZiZDQ5MjU3ZTQzMjI0YTgwOTM4ODE1NTk2ODBmMDUgbGVnYWN5LXRydW5rCisyOTU1MSBkMmJlNzk2YzRiODFkN2I5YTczNzJiYTYxYTRhMWNiZWIwNWQ2OTBmIGxlZ2FjeS10cnVuaworMjk1NTIgMWFmY2EzNzVmMmE5ZTM2ZjI4OTkxNWIwNjIzNTIyOGFkNTQwOTZhZiBsZWdhY3ktdHJ1bmsKKzI5NTUzIGYzZDQ0OTI2YTFiZWZkZWZkN2UwZmE4ODRiNGRmMTdhY2QyMDUxYTQgbGVnYWN5LXRydW5rCisyOTU1NCA5ODMyMmMwNzVmNGQ5NTM4ODYyNWM3YjBiY2UxZDUxNzdkNjQzN2UwIGxlZ2FjeS10cnVuaworMjk1NTUgNTNhMzgyMzQ0OGQ5M2FmMjNmN2U5YzQyOTRhYTJkODVlMWRmODYzOSBsZWdhY3ktdHJ1bmsKKzI5NTU2IGNhYjE2NzYxM2U0M2I3MzdiZjk1NGM4MmQ0M2RjZjVhMjk5OGM1N2YgbGVnYWN5LXRydW5rCisyOTU1NyAxM2FmODBmMDIwODAwOGYxMmEwMDBmYTlhNDY5M2Y1NzBiY2FjZmNkIGxlZ2FjeS10cnVuaworMjk1NTggOTk5YWNjZmE5MWM1NmRhN2FhOGViMjMyNjM4NGM2ODMzMjdmMmVjZSBsZWdhY3ktdHJ1bmsKKzI5NTU5IGYzYTY0MDM1YmE4YmYxOTYzMjk1MzRlMjc4MGJkZmM5OWIxN2QzYWEgbGVnYWN5LXRydW5rCisyOTU2MCAyYzFiYmZjMTIyYzFhNjZmZWQyNjY0MGQyZWNlMTIwN2QyMTNhOGIyIGxlZ2FjeS10cnVuaworMjk1NjEgNGEyODhiNDk0Y2IyYzlhODBhZDNlM2Q0MTkyNzM0YTBjZjFlNTlkYSBsZWdhY3ktdHJ1bmsKKzI5NTYyIGQ2OWU4YTlmZWQxMWZjZjM1OTgyNDUwOWRjMWMyZmY5ZjNlMWE4NmUgbGVnYWN5LXRydW5rCisyOTU2MyAzNGU3MGI4OWJiYjcyMzI0M2E2OTIwZDBlMmViZjM5MWI3NmFjNDEwIGxlZ2FjeS10cnVuaworMjk1NjQgYjU2NGVjNGI3ZTViMzMxOWU0MmMzNzI2OTBmNjczMDQ1OWM5OGQ5OSByZWxlYXNlMjItbWFpbnQKKzI5NTY1IGYzNTM3MzE3YjFiMjVhNmYxZTA0NGJmNTUwODI2YzMxNDc4OTMxYmQgcmVsZWFzZTIyLW1haW50CisyOTU2NiAzNTE1OGZkNjBiM2JhMjJiNzJkOGFmMzljOTE3Nzk0Y2RmODc1YjhjIHJlbGVhc2UyMi1tYWludAorMjk1NjcgNjJmODhjMDJjOTg3MjhmMzA2ZWI2YmQxZTI3YWM3YjgwNTliZTM1ZSBsZWdhY3ktdHJ1bmsKKzI5NTY4IGQ5NDc0YzA0NDViYWJmNTU2YWU0MTcyOGIyNTY1ZDA0MmQ5Mjk3MWMgbGVnYWN5LXRydW5rCisyOTU2OSA1MjY1MmZiODY0OWQ3MzFhZDlkNzA5YWEzYWY4Njc2NjI4NjdlYjAwIGxlZ2FjeS10cnVuaworMjk1NzAgZmYxYzYwNDZmMTBiOTQ3ZjYxYTZmOGE4NzA2NDY3MDBkM2UzZTcwMyBsZWdhY3ktdHJ1bmsKKzI5NTcxIGY2MmY3NzNiYzlmZGQyYTJkOWEwZjZhMzNhYzhiMDRhMmIzNDFhMjQgbGVnYWN5LXRydW5rCisyOTU3MiBmNDY3NDI3ZTAzZmE5ZDVjYmMxZDMyMzJiY2E3ODc1ZjUzNDVhMTVjIGxlZ2FjeS10cnVuaworMjk1NzMgY2JiZjdmMjQyNWQ5ZTEwOGEyNjQ5MzFhOWFmMDRlMjM1ZGZmMWQ1YSBsZWdhY3ktdHJ1bmsKKzI5NTc0IGU1MjYzNjVkZGNjZGZkMGVkZDAwOTk5YjBjOTRlNTZjZDA0ZTA3ZWMgbGVnYWN5LXRydW5rCisyOTU3NSA5MzNjNmQ2MDhkMDFiM2NkNDMwOTdhMzIyNjFmYzkxOWIzY2VkMWI4IGxlZ2FjeS10cnVuaworMjk1NzYgMTM1ZjA4YjczYmQ1ZDhiMWU3MTBhMWNmOTViMGJmMzk1NjZmMWNhMSBsZWdhY3ktdHJ1bmsKKzI5NTc3IDc1NjMxOWExMzdiODMyNmRmMGEwYzgyZTVkZjU1MTI1NTZiNmFmNjcgbGVnYWN5LXRydW5rCisyOTU3OCAwODIwYWQ0OTgyOWQ4MGI5ODc1ODM0YmMzMjdiYmFkMzhiYTI2ZjFlIGxlZ2FjeS10cnVuaworMjk1NzkgMWYzNjViOThmMTFjYzU0NWFiMWM2ZTk3MWJlYWY0NzY0ZDVlYzcxOSBsZWdhY3ktdHJ1bmsKKzI5NTgwIDA4MTE5MDQ4NGFmNjE2MTZhYTFjN2VjOTU0MDZhYWIyMDc1Y2ZkOGIgbGVnYWN5LXRydW5rCisyOTU4MSAwMDg0ODM0MmQ0OTg0YWU0NzVjM2QwOThjODM3YmE5ZWI0NmVmYWEwIHJlbGVhc2UyMi1tYWludAorMjk1ODIgNTNlOTA0MWVmYmUzZmQ2YTQ5MTk4ZjY2Y2IwZjQ3ZjRkODMyMDNmNSBsZWdhY3ktdHJ1bmsKKzI5NTgzIDU0MDg4MWVlMmQ0YWNjNGM1ODg2NzM5MGE5NjdhNzdiNWE1MjljMjggcmVsZWFzZTIyLW1haW50CisyOTU4NCBlZjNmNjkyOWZjMGUxOTU5NTRiZDVhN2Q1NjQxY2NmODJiOGI0N2RkIGxlZ2FjeS10cnVuaworMjk1ODUgMjgzMjYyOGVlOGNjODQwOGEzNjZhYWQ5Yjg0ZGExZGI3MDJlNDBmNCByZWxlYXNlMjItbWFpbnQKKzI5NTg2IGU2MWI5NDY0NzRkZmM2OTI4MmNkOTE3ZWI2YTBmYzNjMjg5ODYyOTIgbGVnYWN5LXRydW5rCisyOTU4NyA5NjRkNmI3OWMyMmUyZTljM2RmYWE1MzgzMTFiNzBkN2ZjYjRiYWI2IGxlZ2FjeS10cnVuaworMjk1ODggMjY3MzczMmFkNWYxOTFiNjY5YWQ5NDYzNDg3NmRhM2RlMDY1NTg4NCBsZWdhY3ktdHJ1bmsKKzI5NTg5IGFkYWE0NTBlN2Q3MGRjMDIxYTIxNzRhZTlkNDI2OGFjZWU5NDc0ZTcgbGVnYWN5LXRydW5rCisyOTU5MCA5ZmZlYTUwZTgzMzAxNzc5YThkMGIwNGViMjNhOTQwYjYzYzI1YWY0IGxlZ2FjeS10cnVuaworMjk1OTEgMmYyYTJmZDg0NGJkNzRiYThmNjQwYjQ0OWI2NzFlYWZkY2M0YmYyNSBsZWdhY3ktdHJ1bmsKKzI5NTkyIDkwNDgyMDc5OTJmMDBiYjUzY2EyZGUxNTU3ZGJhZDQwYjcxYjU4ODkgbGVnYWN5LXRydW5rCisyOTU5MyA4OTY1YTJiODA0YjUwNDk1YmNmNzEzNzlkMmNmYTFjZDExY2E3N2VhIGxlZ2FjeS10cnVuaworMjk1OTQgZTlhZWJkNGNmNTZjZjRmODI2OGIyYWYwZjNkZTUyZDFlZjRjNjAyYSBsZWdhY3ktdHJ1bmsKKzI5NTk1IDljNGJiYjNiYmQwZGU3MjM2ZWU1NTI0Mzg3YWU5YjkzMWFjNTNiZjUgbGVnYWN5LXRydW5rCisyOTU5NiAwMDQyMTZkN2ExZGFiYzAwOWYyZjA5ZjE4ZDRlOWVmYmM4NzQwZDhkIGxlZ2FjeS10cnVuaworMjk1OTcgMWViYjVkYzdmNjk2ZWY3NTI3NzY2MDc3ODk1NWU0OWRkZGRjY2JjNyBsZWdhY3ktdHJ1bmsKKzI5NTk4IDY0MTY3NzYwOTk4YzQzMTQzOWJkZWI4NjFiZTEyOTJhODc1MWQ5MGYgbGVnYWN5LXRydW5rCisyOTU5OSAzYWQ0ZmFlOWVkM2FkMGM2Yzg0NDU1MDZjZTdlMWRjNDg2ZmRhMTI1IGxlZ2FjeS10cnVuaworMjk2MDAgY2ZiMzE3ZTRhNzcwMWQyYmZkNGQyZTQ3NGI3NTE5ZmVmY2VkNjcwOCBsZWdhY3ktdHJ1bmsKKzI5NjAxIGE2ZDE2ZTg0ZmVjMDU0ZTk0MjFkMWQ1ZDA2Y2Q3ZWI2MTc4NWYyMjcgbGVnYWN5LXRydW5rCisyOTYwMiAwOTlkMzZjYmJiNjExYWI1ZmIzMjRiYjJmNDI1NjNhMDQxMzA0YzhhIGxlZ2FjeS10cnVuaworMjk2MDMgOThmM2ZkMWVkNDJmMDU3NjY1NTIyZDk0MWYwZTY4NzcxNGE4MzM2ZiBsZWdhY3ktdHJ1bmsKKzI5NjA0IGUyMjI2ZDQ3ZWJmMDEyOTdjOThhMWE5MDdiNGFjNTkxMGJkNDRkYjYgbGVnYWN5LXRydW5rCisyOTYwNSAyM2VmN2MxNjNhMTI1MDI5ZjUxMDljOTg1NTcxNWIzOThjN2U1NWVhIGxlZ2FjeS10cnVuaworMjk2MDYgNDIwMzA0N2UyMDIyMzdlNGM5MWE4ZGU0MjViMDUwMGNhNzVmOWZkYSBsZWdhY3ktdHJ1bmsKKzI5NjA3IGE1NmM5MGNmYzAwYzBkYmE3NTA3MTA5MTc4ZTgzOWJhNzFhMmUwNGIgbGVnYWN5LXRydW5rCisyOTYwOCA0MmNmMWI1ZTYzOTI2ZjZkZGEzNjllZDk4NmFlMTRkMTQzMTgzMGI5IGxlZ2FjeS10cnVuaworMjk2MDkgZTk4YTIxMzEwMWIzOGE5YjhkNTNiOGMxYzIxMmE1MjgwMTQ3MTNjYSBsZWdhY3ktdHJ1bmsKKzI5NjEwIDRiOTA1ZTE5ODNiNjEwYjI1YTM1MzViOTU5MjA3MmE2OTg3ZWI3YTQgbGVnYWN5LXRydW5rCisyOTYxMSAwNzY1MTJhMGM2YzIyYzkyYjcyODMyMTRjZDg5YjQwMGIyZmE2YjY5IGxlZ2FjeS10cnVuaworMjk2MTIgZjQyNzhhZjhlZWZhMDJiYWZhNzk2ODZmZDllYzRiYjIzOGNiNDliNCBsZWdhY3ktdHJ1bmsKKzI5NjEzIDZlNDFjZmQyNWJkZjBmZTI4NmExZDZkNzMzZGM1NzBmOTlkYTlhZGYgcmVsZWFzZTIyLW1haW50CisyOTYxNCBhMmFlNjM1ZTQzYjYxODcxMTI1ODU3MjFkOTc2OWNkMTM1NmZmZTBiIGxlZ2FjeS10cnVuaworMjk2MTUgNGFiNmI3YzNmMzExN2QyNzYzMDI2MjdlNmI5ZWIwZDAwNDdlMzJkZCBsZWdhY3ktdHJ1bmsKKzI5NjE2IDE0NGQ5ZDQ4Yjk2Y2ZlYTgzN2EwMGM5ZTNlNGUxYzJjMzY4MWUzOTMgbGVnYWN5LXRydW5rCisyOTYxNyAwMGI0Y2ZmOTM2MThlODAwMmQ5YjM3YWJlOWJkZjkxOWJiNWE4NmNjIGxlZ2FjeS10cnVuaworMjk2MTggNmNlOTIyOGEzZGEyMDBhMmNkMTEzNWJlMTkzN2MxMTc5ZTA3YmY0ZSBsZWdhY3ktdHJ1bmsKKzI5NjE5IGMyZWM3ODlkZWU1Njc2YmVkMDJjNmE2ZmU3MjU5OTBiZGFhNDk5ZmUgbGVnYWN5LXRydW5rCisyOTYyMCBiZGRlOTRlMDI5MTgwYjU0ZTM1MzAwMWM5MDdmNDY3MDZmOWE1MWEwIGxlZ2FjeS10cnVuaworMjk2MjEgYTQ4YWNiNWI0MGVmYzQ1NTY4NWQ1N2IxNGZiOWU1YzRhYjk4N2Y3YiBsZWdhY3ktdHJ1bmsKKzI5NjIyIDkxMzkyN2QzMjYxZWRiMjEzZGQ2MjY3NTg1YzM1NTg5ZDljMWQzY2MgbGVnYWN5LXRydW5rCisyOTYyMyA5YmI0YWRmYmZjYzgzMTM5NzQ4NTI4ZGFlMTM2ZDc5MDEzN2U1MTY5IGxlZ2FjeS10cnVuaworMjk2MjQgNjVkNmYwYmZhNDYxNTA0MGQ0YWI4YjExY2FjMTJjMzQwYzk5ZjdiMSBsZWdhY3ktdHJ1bmsKKzI5NjI1IDBiNjExZTUwYzVmYzNjNGRjZGU3ZTA3NDBiZGVhY2I4ZTZkZjc5YWQgbGVnYWN5LXRydW5rCisyOTYyNiA1ODA4M2Q4ZWE5YTVhZDNlNjAxYjNhMDBjMzZjYjgzNWYzNGVmMzQ3IGxlZ2FjeS10cnVuaworMjk2MjcgM2UxZTk2MTZmOGM4NjVhMDI0MjhjNWJjMjAzZmY2MDEyMzNlYjE0YyBsZWdhY3ktdHJ1bmsKKzI5NjI4IDk3NDk3MzJhMGY2YjlmZmU4MGY5ZmQyMzAzZjI3MzVjYzZmYTlkOTQgbGVnYWN5LXRydW5rCisyOTYyOSBlYzM0MTRjNTg4NzI2Mjk4NDYxNTkzNTQ5MzhkMTFkNDg4NWNiM2M0IGxlZ2FjeS10cnVuaworMjk2MzAgNjA3OGFiYzY5MDM2ZmM3NmZiZTBlOWM0ODM1YzRkOWI1NjY5NDY3YyBsZWdhY3ktdHJ1bmsKKzI5NjMxIGJiNzE4NzgyZTczNjljNWMyNWI3ZmZkNWUyNDI4MDZjNzkzN2ZjOTMgbGVnYWN5LXRydW5rCisyOTYzMiA4Y2ViNDU1ZjU1NDExMmNjN2Y1ZTAyNTg5OThjZGEwODIyNTExOGE1IGxlZ2FjeS10cnVuaworMjk2MzMgZjQ5MjkyNjIxYjE3M2FhZjdkOThhYWMxMGFiMDA3YzBiZjhiYmQ0NyBsZWdhY3ktdHJ1bmsKKzI5NjM0IDI0YTU1MjJkMDc4NGIzNTlkMjA5ZDQ4OWJlNzFhNmIwMzIwOTk5NGYgbGVnYWN5LXRydW5rCisyOTYzNSBmMGVlMzdlODkzMmZhYzhkMDUzZTcwNjMxOWFkNWYxOTcxNjZlOThlIHJlbGVhc2UyMi1tYWludAorMjk2MzYgMjdmNjQzMTRmMGRlN2VmYWI2YjZlOWI3NWRiZjkwODhiZjgxNWU0ZSBsZWdhY3ktdHJ1bmsKKzI5NjM3IGU2Mjc3NGI0NDdjMTA3YTg4OGM0NGRmMzYzMDMwMmQ1NGE3OGVlNTYgcmVsZWFzZTIyLW1haW50CisyOTYzOCBkZDEwZDk3ZDMyOWE2MGU3MGUxMmE0MjY3ZjkxNmJlNWY2ODA0YjU2IGxlZ2FjeS10cnVuaworMjk2MzkgM2MwODNmODgxNjU1ZDM0ZjZjYzMwMDg1YzY3ODE3NDFmMzEwODM0ZSBsZWdhY3ktdHJ1bmsKKzI5NjQwIGFmNWI0MTc2ZjRlZjY4NmRhMWVlY2Q4NGZjN2M3MjAwYWI1OTZlMzIgcmVsZWFzZTIyLW1haW50CisyOTY0MSA2M2EwODYzOWRhZTJhM2VjMGUyM2Y3MDM3MTQzOGU1NDlmOTkxZGExIGxlZ2FjeS10cnVuaworMjk2NDIgMjlmN2QxZDVlNmQ2MjQ5ZmZlYTYyNGY4NjE0MDljODZhY2Q0MzhlMCBsZWdhY3ktdHJ1bmsKKzI5NjQzIGUzZDI2OTFmYjZiOGMyZmEwY2M3ZGM0NTU1NTI4YmJhOTEzODIyNTYgcmVsZWFzZTIyLW1haW50CisyOTY0NCAyM2RmNDY1NmU4YTJhYTQ3N2MwN2FkZjRiM2M1OTc3N2RlNTJkOGJhIGxlZ2FjeS10cnVuaworMjk2NDUgMWFiNjU3ZTAwNzYyNzU4NGM5ZjhhN2RkNThiZDhiYjE5YzdiYjRjYiByZWxlYXNlMjItbWFpbnQKKzI5NjQ2IDk1YzljNTY2YmRkNmQ4Y2VjY2VhYTc5NTBjYmJjMzYzMWJhOTM2ZDcgbGVnYWN5LXRydW5rCisyOTY0NyA0YjZkOGY1MTY2OTgxN2YxMzcwOGU2Y2EzM2EyYWM1ZmZkMDg0OTk5IGxlZ2FjeS10cnVuaworMjk2NDggMjUxZTU1MmM4MzUyMTBlNjdiYTAzZGE4YmM3NmY2YjE0ZGY1ZTI0NiBsZWdhY3ktdHJ1bmsKKzI5NjQ5IDViNjJiOWVhNDYwYjIzOWUzMmZiNjJjMzZiM2I4MGMzYWU3ZDk4NWEgbGVnYWN5LXRydW5rCisyOTY1MCBlNzE3NzBhN2Y1NDlmYThkM2ZiYzY0MjNhNGRhN2ZhNDE3OWZjM2YzIGxlZ2FjeS10cnVuaworMjk2NTEgMDRkM2Y5NWNmZDg5ZjBjMGI0ODBmZGIwODUzNjAzMGZkMzNkNzhjNCBsZWdhY3ktdHJ1bmsKKzI5NjUyIDA4MjkzMGRmYmViZGRiZTk2ZmQyN2FmMTIyNDY3MzY5ZjZmMTE2ZDggbGVnYWN5LXRydW5rCisyOTY1MyAxYzA1NTE3MWI4NzExZmJiOTk4NjRjM2Q5YzdjZjRkOGQ3ZWFkNTRhIGxlZ2FjeS10cnVuaworMjk2NTQgZjk2ZmEzYTZkZGE0MThjMjQ0YzFlZDhmZDVjYThhYmE1NzYwNzE3YiByZWxlYXNlMjItbWFpbnQKKzI5NjU1IDgzYWU0YTkwMmRmMDhmNzM5OTMyMjI2YmI2Zjg3OGQ5ZWEyMmE5ZDQgbGVnYWN5LXRydW5rCisyOTY1NiBkYmUyNTY4N2JlNmU1YzM2OTE3M2Q3OTQwODY0ZmJkZjg3YzM0ZjFhIGxlZ2FjeS10cnVuaworMjk2NTcgMGIyM2NkYTAwNDE3MGQ5YTYyYzIwYTQ5MGI4NTMwZDRkMDE3ZjYxZCByZWxlYXNlMjItbWFpbnQKKzI5NjU4IDQ2ZDBiNDZhNzU0ZmUxYjU3YWZiOWJhZDliOTdlMTQ5ZDYwMzZjMzIgcmVsZWFzZTIyLW1haW50CisyOTY1OSAxYWY0MTBlMzNiZWNmNTgxZDc0YjdmNDI5OWE0NTQxYjkxZDA2OWZjIGxlZ2FjeS10cnVuaworMjk2NjAgZjcyYjFmODY4NGEyYjk4MjZkNDQwOGNkMzAyN2E2NjUyMjA4YTc4YSBsZWdhY3ktdHJ1bmsKKzI5NjYxIDNlNTlkNjc0YjhjMzY0MzNlY2UwYzVhMDlmYzg2ZDc2YmNiZjhjNDQgbGVnYWN5LXRydW5rCisyOTY2MiA0YzI1MzJjMWNiMmRlMjRkM2Q1MDEzMzNkNGU0ZTBhOWQ4ZmQ2N2IzIGxlZ2FjeS10cnVuaworMjk2NjMgYWYzOTY0Njc5ZTJmYmQ5YmY5Njk2YWZjYTBkNDFiODM2ZmE2YjEyMiBsZWdhY3ktdHJ1bmsKKzI5NjY0IGFlMTY5ZjViOTRlMDQ4MTM2NDg5NDg1ODg5YjMzODczZDdhOTMxYzQgbGVnYWN5LXRydW5rCisyOTY2NSAwZTBiM2RjZjc4Nzg5ODk0MzFkOTg4NzU2NjcyMDNjZmVhMThlNmUwIGxlZ2FjeS10cnVuaworMjk2NjYgMzhkMWY4M2Q1NzcxMDhhNmUzMDllMDYwMGI4MDE5OGE3MTg3NzE0NCByZWxlYXNlMjItbWFpbnQKKzI5NjY3IGQ2ZGM0NmI5YWYzYzBlMjY4ZWE0NzBlMjdjNzI2MGNkYzg1MDE1NTAgbGVnYWN5LXRydW5rCisyOTY2OCAzOTBiZjVkMmQ4ZTdkZjY2MDAxOTE5ZGEyY2JmMDUwY2UxMTM4Y2RmIGxlZ2FjeS10cnVuaworMjk2NjkgOWM3YWE0M2IyMWE5YTliMGVmZWNlMGM4M2NmZjM3NjkzMWE1ZTkwMiByZWxlYXNlMjItbWFpbnQKKzI5NjcwIGQ1NjMzZTkzZjcwN2YzNDJiNTQyMDAzZGM5ZWRmMzEwYzljNGZkNWUgbGVnYWN5LXRydW5rCisyOTY3MSA5MzczNTc4ODIyYjU5MGUwN2EwMTBkNjVjZTc2NGNjMmUzZTRkYzU5IHJlbGVhc2UyMi1tYWludAorMjk2NzIgYTQyZjYzYTgwY2M4NzM2YTdhNjUwZmM0YTE2ZTFjYWNmNDVmOTU2NyBsZWdhY3ktdHJ1bmsKKzI5NjczIDc4NWFkMDc0MDI3YmYwZTMzZmNiYTU0NTk2YTA5NjEwY2E1MzM1OTMgbGVnYWN5LXRydW5rCisyOTY3NCBjYjcxZTdjNjIwZTJmNTBhOTdhZWYyNGMwM2VkNzJlMDNkZjc1NDQ5IGxlZ2FjeS10cnVuaworMjk2NzUgMWRmOThmNjhkNjA3NTMwZWFhYzg5OGFhNTQ3YWUxNjc2ZTA4OWJhOCBsZWdhY3ktdHJ1bmsKKzI5Njc2IGQzN2YxMzc4ZDhiOGJmOWFkMzY5YWJkMDYzMmJiYjJlMjQ3NzI4OWMgbGVnYWN5LXRydW5rCisyOTY3NyBlMDIzM2M0NDI1MDI2ZWE4YjA5Y2NhM2Q4ODliZTM0OWQzZTE3N2M4IGxlZ2FjeS10cnVuaworMjk2NzggN2U1OGExNTA0ODcyNmYyYmIwNGVlOWM5YTdmNWI5NTYzMGYxZjk2MiBsZWdhY3ktdHJ1bmsKKzI5Njc5IDFjZDgxMDZiY2QyMDcxYzlkZjU2YTExOTRhNTI0YmQ5YmM4ZWM1NDIgbGVnYWN5LXRydW5rCisyOTY4MCBiYWY4N2QyNmJhMDNkNTM3YmViOTNmNjA4NWQ5YTVkMDNjNTI0NDJmIGxlZ2FjeS10cnVuaworMjk2ODEgM2Y1NzczYTg4ODhlZmQ2NjViYTc2MzZhYTZmY2M0MThiZjYxZDMwZSBsZWdhY3ktdHJ1bmsKKzI5NjgyIGQzMzAwNWY4Mzg4ZTc0ZTE5NTdkYmFmZWIzN2NiZWViZjEwYTQ5MTkgbGVnYWN5LXRydW5rCisyOTY4MyBmZjkyY2MyN2ZkMWZmMzBkNTQxNWI4ZDBlMTE5MGJhNzE2ZTEzNGFkIGxlZ2FjeS10cnVuaworMjk2ODQgZmZlYzY3NDA5MTQwNTliZGVhOTEyMmMzM2JkYzcxMTBmMTlmZGI3OCBsZWdhY3ktdHJ1bmsKKzI5Njg1IDU4ZmJhNTk1NzI2ZWFkYWZlZjYxZGNkMDIzYTc1ZTZlYWRmZjc0MWIgbGVnYWN5LXRydW5rCisyOTY4NiAzODM1ODcwMjdjNzRkMWMxYjgzNzNkZjA3ODgxMjA1MmQ3Yzk0ZGE4IHJlbGVhc2UyMi1tYWludAorMjk2ODcgZjQ2NWQ2NjkyYmRlMzM1MDMzMTRjMDUzNGZkMDkxYzQ4Nzk1OGZiYiBsZWdhY3ktdHJ1bmsKKzI5Njg4IDdmODcwNDY3YzE4MmE3NWUwZDQ0ODU0ZjRhNzhkNTJhYWRiN2YyNjAgbGVnYWN5LXRydW5rCisyOTY4OSBiODMwMzQxM2E1N2U1YTE1ZGMxN2M0OWM3NDY4ZTY0NmFlNmE1MjA4IGxlZ2FjeS10cnVuaworMjk2OTAgYTVkMWUwODE0MDYxYzUyYWIyYmMzN2Y2MWQ0MWU1MWVlMDYyODA5NiBsZWdhY3ktdHJ1bmsKKzI5NjkxIGU4OTA1NjcxODIzNWRjYTg3YTEyNmU1MjJkYjUzN2U5NmZkN2Y1ZDAgcmVsZWFzZTIyLW1haW50CisyOTY5MiA3Y2ZiNTJmOTgxMzk2ZmVlZTg5ZTcxYjNmMjA3NmI2OTlmODdkNThiIGxlZ2FjeS10cnVuaworMjk2OTMgMTI3ZTRiZmFjYmI3NTA0OWMzMTRlNWIxMDdkOTI4MmNhNzYzMDU0OCBsZWdhY3ktdHJ1bmsKKzI5Njk0IDc2ZjMyZmJlMDNjYzU0ZTU1NGYyMDQ5ZmFhMDFlZWI0MzAxMTJmNDQgbGVnYWN5LXRydW5rCisyOTY5NSA1N2ZjYWNiZGM4ODVhNTU3YzIyMzNlMjFiYTI0ZTVkYzNlMWRmMDUzIGxlZ2FjeS10cnVuaworMjk2OTYgMjBmYTYzMjliNThmZjgwNDA2MmFhODlmOTUzMmY5YjdiNGM1OGUxMCBsZWdhY3ktdHJ1bmsKKzI5Njk3IGViMGMwYzgzYjkyYTA5ZmY2YWRjNDg0NmVkNmQzNWRjOWU5MjAxMmMgbGVnYWN5LXRydW5rCisyOTY5OCBmZmJlYWQzNDg0ZTEwMzNiMmMzMGMzODYwY2RhYWQ2YmI0NDJmZmRmIGxlZ2FjeS10cnVuaworMjk2OTkgYzk1MTkwNTMyYzBjYjZkOWUxZTA0NDg3MDYzMjExOGFjNDYxZmExMyBsZWdhY3ktdHJ1bmsKKzI5NzAwIDUyZjYxMzNlMjBkMjBlYjYwM2JiZWIzODY4NDIzZjkxZDJiMWNjMGEgbGVnYWN5LXRydW5rCisyOTcwMSBhZGI5M2Y0ZTk3ODA1MWU0NmZhYTAwYTdkOGRkZTJhOTgyNjQ4MDM0IGxlZ2FjeS10cnVuaworMjk3MDIgMTkwMzg5ZmQ4MTU5YzdjNDZkZGY5OThhZTI5NzQxYjJiM2EzZGFhNyByZWxlYXNlMjItbWFpbnQKKzI5NzAzIGVjZGZmNDYyMDJjMGZmMzVjYmVmMDU5ZmIxNDY4ZGVlMTZhMTYzNGMgbGVnYWN5LXRydW5rCisyOTcwNCA1Mjk3MTlhNTM1MGU3NWVlMzFmMWQ0Mzk0MzU0ZGQ1MjhmYWI4ZjgxIGxlZ2FjeS10cnVuaworMjk3MDUgY2IyNDg3MDRiNzg0ZTNjNzI3NDU5MTk5ZDY3ZDYxOWM1NGMyYTJiOCBsZWdhY3ktdHJ1bmsKKzI5NzA2IDc5NDIwZmEyMjJiODUwNTk1YWM1N2Q0ODhkM2MyYTYyNzhiOTlmMzYgbGVnYWN5LXRydW5rCisyOTcwNyBlMjZmZjc1ZGNmNjkxMWMwMWIyMzFkMmJlYTE2NWUzZGEzN2QwYTlmIGxlZ2FjeS10cnVuaworMjk3MDggYzQyYjYzN2I5NTE0NmQ3Mzg2ZDQ4NWEwMWIxOTM0NGYxOTk3ZjljZSBsZWdhY3ktdHJ1bmsKKzI5NzA5IGM4NTQ4MDY5MmNhZTljZDkwMGE1MGE2MWRmY2I0ZTllZDA5ZWIyZTcgbGVnYWN5LXRydW5rCisyOTcxMCA4N2U2OWJhZGExOTVlZWY1ZjZjYTVlZjhiYzc2ZDViMjVhMjQ3MmYyIGxlZ2FjeS10cnVuaworMjk3MTEgOTNmMzBjMzg4OWFhNGI3YTgyYjM0MTFmMTdmMmMzYTM1MDFiMDZmYiBsZWdhY3ktdHJ1bmsKKzI5NzEyIDNlZTk1MTllYWE0YzQ3Njc4ZjYwZTU5MGU1NTM3ZTE2ZWRiMWE1ZDUgbGVnYWN5LXRydW5rCisyOTcxMyBlOWY4OWRiYTUwOTNiMGEzODNkOWI3MjFkMDE4YjE4MGVlYmI0OWFiIGxlZ2FjeS10cnVuaworMjk3MTQgNDQ5YjJiNWNhZjU4MmZkZGM4OTExZWU3ZDMyZDYwY2M3ZDI3ODUwZiBsZWdhY3ktdHJ1bmsKKzI5NzE1IGVkZDJlYjg4ZmQ2Y2EwZWNiNGQ2NDdiYzk3OWRiYzQ5N2ZkOTk0ZjQgbGVnYWN5LXRydW5rCisyOTcxNiBhMGVmYTRjOTU2OWUzMTk2ZGRiYmU0ZTBkNTI2ZGYzNTNiMWEyNTliIHJlbGVhc2UyMi1tYWludAorMjk3MTcgZTQyOTk3YWNjN2YxZTc1NDY4NjZmN2U3ZGNkZGRiZTZhNGRmNmVhNyBsZWdhY3ktdHJ1bmsKKzI5NzE4IGE0ZTMwMjFlYWE3ZDQwYjllZGI2MTQzMTU3ODgwYWYwZTc5MzY5NTUgbGVnYWN5LXRydW5rCisyOTcxOSBiMTM4OGY1OGJkYjVkMTBlMTYwMzMyYjBjNTlkMWQ4YmJhMDY2YWI2IGxlZ2FjeS10cnVuaworMjk3MjAgNGMwNmJkZDdkMDVjMmYzMmI3ZjQxMmZlMzkxNDM5OWQ0NmJlOGRmZCBsZWdhY3ktdHJ1bmsKKzI5NzIxIDhlZDY2ZWRmZjM4N2M2ZDQ4MjQ0NzQ3MWI4ZjRiNTljMTBiNGUxYzkgbGVnYWN5LXRydW5rCisyOTcyMiBmZjc2MzlkZGNhZjIxY2I2YzZmZmMzNDE2NjVhMmQ1OWFlMDAzNmQ3IGxlZ2FjeS10cnVuaworMjk3MjMgNjFhMGVmNTQyYjZmNWUxYjU4NWIwYTQ5ODg3MGVhN2IwOTYxYjA2OCBsZWdhY3ktdHJ1bmsKKzI5NzI0IGQ2MmMxYmEzMzk2NDA2ODY0ZGE1ZDA2MmRlMzM1ZTdkMGExNmJmY2EgbGVnYWN5LXRydW5rCisyOTcyNSAzYmUxYmRjNzc5ZTA2ZjA0OTYwYWQ5MWRiMmUxZjI4YzRmYzZkY2RmIGxlZ2FjeS10cnVuaworMjk3MjYgMGU4OTkwZTg5MmI2ZDZhMmM4Y2MzNGNkMTU1ZmJlN2I0MzYwMWMzOSBsZWdhY3ktdHJ1bmsKKzI5NzI3IDAyZDQ4ZWQ0NDdhODNiMzRjYWU4OGIzN2Y3MjE4YzMzYTI4YzVhMDggbGVnYWN5LXRydW5rCisyOTcyOCAxNDkxNjVjZGZmN2NkYzQ5MzcxOTUxM2ExNDYzNGZjZTBjZTA5NDNiIGxlZ2FjeS10cnVuaworMjk3MjkgY2RkMjg5YTA2NjE0YTNjMzQ5NzI0ZmI5OWYzNDIwNWU4ZDRiMDBkMSBsZWdhY3ktdHJ1bmsKKzI5NzMwIDY3OWIyYjgyNTRhZTY2NmQ3OGY2ZjUzODMzZGRjYWY1YmI4OGJjODkgbGVnYWN5LXRydW5rCisyOTczMSA0YmUzNGJkNzNkZmY0MWU2N2E5Y2VlMTdmNjQ5MjNhNTcyNDdiNzdhIGxlZ2FjeS10cnVuaworMjk3MzIgMjJkNzMyNWJhN2FjNDk2OTgyM2NlOGNlZTZkNTRkOWM4ZTQ0OWQ3OSBsZWdhY3ktdHJ1bmsKKzI5NzMzIGE4ZDEzMGE2YTc0ZDY4ZTliYTA1YTc5NTNlYThmNThlZjJhZDgyNjAgcmVsZWFzZTIyLW1haW50CisyOTczNCBmMjNjMzVmODEwMzM5OTljODUzOTg3NWMwNTRjYWUxNDY4OTllYzAyIGxlZ2FjeS10cnVuaworMjk3MzUgYjE5NDQzYmRmNDQ3ZTdkODFhMDljOTczZjc2YTExNWVkNDc5MTkxZSBsZWdhY3ktdHJ1bmsKKzI5NzM2IDYwZDgwOWEyNWJhZWM4MTM5MDkwYTc3NGViNDhmYzgzNDYzNWQzYWUgbGVnYWN5LXRydW5rCisyOTczNyBiMzI3ZmZjZmU5YjdiOTYxNGFhMDI4NjNkMWZlNzFlNDYxNDEzNTkwIGxlZ2FjeS10cnVuaworMjk3MzggMjA1ZmJmMWJkMDc1NjJmMjQyNTYwNmFkZjhmOTEyZmQ1OTZiODA5NSByZWxlYXNlMjItbWFpbnQKKzI5NzM5IDc2NjAxZmIwNzhkNDAxN2M4MDU3OTQyYjI3NjE0NTgxMjM3NDk3OTAgbGVnYWN5LXRydW5rCisyOTc0MCAyNDRlOGZiZTRlMjA0NTQwZDNmNDRlYWRjMzVhODE1Zjc5NDcyOTQ5IGxlZ2FjeS10cnVuaworMjk3NDEgNTMzZWI1M2E3ZmJkZDAzZWY1NDZlN2IyMGY1NjU3MjAzZTBiNzJhMSBsZWdhY3ktdHJ1bmsKKzI5NzQyIGUzOGQ1MDMzN2U4Y2Q4MzAyNGZkZDNhYTRkZGI3OTQxYjJmNTAwZDIgbGVnYWN5LXRydW5rCisyOTc0MyA0MjI3OWY3ZDI0NGRmNzRiMjc2YjMwOTUwMTVlMGY1ZjNmZDdhMDUzIGxlZ2FjeS10cnVuaworMjk3NDQgMzRmYmJjYjEwNWE0M2I2NjU2MDJiNWViNGZiNzg5ZmM0YzhkYzg0YSBsZWdhY3ktdHJ1bmsKKzI5NzQ1IDgzY2NhYWFiM2U1ZTQ3N2Q2MmY5NzY1MDQ4NWEyOTA5ZjQ1YmI1YmMgbGVnYWN5LXRydW5rCisyOTc0NiA2YjU1NmM1NDVmZmIzOGFkYmI3MGRjNDA5MmMwYmI4MGJkMWRhNTk0IGxlZ2FjeS10cnVuaworMjk3NDcgZTI3MGMwZDQxYTA1MDU3YTMxMTY0N2M2MjRiZDJjOWM4ZGEzYmRjZiBsZWdhY3ktdHJ1bmsKKzI5NzQ4IGM0MTlmY2UxNTI5ZTU3YmU0YWYwMmY3YmZjMWIwYWY1ODk3ZjYxZDAgbGVnYWN5LXRydW5rCisyOTc0OSBmYmNjZWY4YjMxNTMzMWIxNDI3NzgyZmM0ODJmYjQ0YjlhZWJkYzgyIGxlZ2FjeS10cnVuaworMjk3NTAgNTdjNmU4NGY3MWNlYzY2YTBkN2I4MTU2NmJjNjlkMDk2ZDU5MTIyYyBsZWdhY3ktdHJ1bmsKKzI5NzUxIDk1OGQwNzA4NWRjZjRhZTgwOGM2ZGI5NmVkM2YzNWNmZmEyMDU3MWUgbGVnYWN5LXRydW5rCisyOTc1MiA1MGM5NThmNzAzZTMwMjg5ZTI2YTZjMDY4ZjAwOTg2N2I3NDhiNTY3IGxlZ2FjeS10cnVuaworMjk3NTMgZDY2MTI5YjU1MWRiNGZhZTIwOGYyN2FjNTljNDc2NmZiNmM1NWEzMCBsZWdhY3ktdHJ1bmsKKzI5NzU0IDNhYzQ2NGMzNzM3NGM0Mzg0ZmVmMTgxNTA0ZGNjMzgxOTg3NWVhOWMgbGVnYWN5LXRydW5rCisyOTc1NSA3YzA4ZjZjYjkwZTRmOTZlMTJjOTMxZWQ0Mjg1MDQ1ZmVmNWFkNmYyIGxlZ2FjeS10cnVuaworMjk3NTYgZDQ0MTFkOTUwZDQ4MzI1NTAzNDU5NjA1ZGExMDVkOTI3ZTUyZWYwOSBsZWdhY3ktdHJ1bmsKKzI5NzU3IDg3NTE0MGQzMGUxNzY1NjBhZGY0MjZkZGY1MzQ5YzBiOGMxNWY3ZGMgbGVnYWN5LXRydW5rCisyOTc1OCBlZWM5OTc4MzcxNmMzYWNkYzRiZDU0MmZhNjAwZmNhMzk0YjZlNTcxIGxlZ2FjeS10cnVuaworMjk3NTkgY2U2NDBkYWIxMGU0MzJjODc5ODliODBlNGM1NWU3MTQ4N2QyMDhjZCBsZWdhY3ktdHJ1bmsKKzI5NzYwIGVmZTU4YzEwY2NmMTZkMDA2NmJkYTIxMjQxODRkOWEzYjY4ZjZmN2EgbGVnYWN5LXRydW5rCisyOTc2MSA0ZWQyMzBhMGM5MzFlYjBmMWNhNTNkYTVkOWZiMTRmNGUzNDFhZTdmIGxlZ2FjeS10cnVuaworMjk3NjIgNDJiZmM5OGQyOTViNzg1MWUxNzAxNzdkZWY3MTBmZjI0OTI4MzQ0YSBsZWdhY3ktdHJ1bmsKKzI5NzYzIDk2YmRiNDQ3NjNjMzZkZjE5NjU0MTkyODk5ZjRhODViYmIyMTdhODggbGVnYWN5LXRydW5rCisyOTc2NCBhMjRiYzZhMmUyY2RmYTY2NjNjYTI1MDcyZGY0YzY5YjhjNTEzZDM4IGxlZ2FjeS10cnVuaworMjk3NjUgYjBiNjA4NTk4MTcwMjA1ZmQxNzQwYTQzMzQ1YmU3NDQ1NzJlNzgxYSBsZWdhY3ktdHJ1bmsKKzI5NzY2IDA5MzRhOGEwYmEwZDg1NGZhZDM0MmRiMjU4ZDIzNjk3N2ZlYWY0YTQgbGVnYWN5LXRydW5rCisyOTc2NyBlOTY1NzVmN2U5NmE3ZWMyZjAwNGFlNzFjZGUwNTJiOGEyZTMyOGZmIHJlbGVhc2UyMi1tYWludAorMjk3NjggZDMxZGRjNjZiMWI1NTFmOTljZmZlNGY4NmZiZjNhNDM5YmNhMGI5NSBsZWdhY3ktdHJ1bmsKKzI5NzY5IDMxNmZkZGJjMWUwN2VlZWJkYTgwNmUxMzYwMjgxZDZjODU0NzA2ZDkgbGVnYWN5LXRydW5rCisyOTc3MCBmZjViNTEwZWJhNmI2Nzk0NWJmODMxMjQ2NmQwN2MwOWVkMzg5NTVmIGxlZ2FjeS10cnVuaworMjk3NzEgNmQwY2Q4MGUyODA0MzBkODhjYjAwMjE5ODg1ODdjZTI4MGJkOWEyZiBsZWdhY3ktdHJ1bmsKKzI5NzcyIDFiZDlkOWYwMmFkMWI0NTYyYzhiMDM4YjVkMDY0YTY4YzdhMzk0ZWQgbGVnYWN5LXRydW5rCisyOTc3MyBiZWE5OTFlNjVmZmQzOWM4OWU4MTA4Y2ZkNTgwZGVkYTM0OTgzYTU2IGxlZ2FjeS10cnVuaworMjk3NzQgYmFjZDY3OGIzYzRjZWQyMzRjMmM2ZDk0MzRhZTI3Y2MxNjI4MzA0MyBsZWdhY3ktdHJ1bmsKKzI5Nzc1IGY2ZTQ2NTg1YjZiMzRjMGRjNmJlOTk0YzNlMzE0NDAxMTA4ZDI3ODYgcmVsZWFzZTIyLW1haW50CisyOTc3NiBjNzc0MzVkODdjMmU5MjBkYzQwNTYwNWM4YjM4MzQzOTk5NzQzM2I3IGxlZ2FjeS10cnVuaworMjk3NzcgZGNkZTI1MzQ3ZTkzODkwMWQ1MWEzZmVkNzMwMjJhODI5MTJjMDIxZiBsZWdhY3ktdHJ1bmsKKzI5Nzc4IGUzYjhmNzdhNjk4MDBiMmNiMmIwOGRkMDk1ZWQ2NGRmMGNiY2I1YjUgbGVnYWN5LXRydW5rCisyOTc3OSBmZjdhZDMyYzk1NTRlZGYyOGI5ZGQ3MmRmNjRhNjBiOTMwOWY2MjdlIGxlZ2FjeS10cnVuaworMjk3ODAgMGM4OTkzN2NlYmVkMzc2ZTQwZGU2OWY4NjE0MWY4MDk1MjllM2JmNyBsZWdhY3ktdHJ1bmsKKzI5NzgxIDA4MDgzOGUzOGU3YzRhZTg0ZDIyODExZTE4NmJmYTc2YjAyYjI4NmUgcmVsZWFzZTIyLW1haW50CisyOTc4MiAzMmRmOGQ1OTYwZDE4MmZkN2M0YTExZDJhZjJlMmJjM2ZhOGRlMjQwIGxlZ2FjeS10cnVuaworMjk3ODMgMjUxZGQxMzZiYWMzYmIwMzE1N2M3OTNkMDcxMzJkNTAwZGJlZDA2MiByZWxlYXNlMjItbWFpbnQKKzI5Nzg0IGVmMWUzODMyYTllYTIwMjM1MjcwYzJiNTNiYmU3MjQ0YjM0NTliZGYgbGVnYWN5LXRydW5rCisyOTc4NSA0MDNkY2JjOTA0M2Y2ODc0ZDBmZmFkYjRjZDExNDBmMzk3NzI5M2NlIGxlZ2FjeS10cnVuaworMjk3ODYgN2ZjNzA0Y2NhMTgxM2JiM2MwN2ZjNTEzZWJjYTNhZjE1NDE5Y2E5MyByZWxlYXNlMjItbWFpbnQKKzI5Nzg3IGJhYTQ3ZDdlODRlMjU4MzYwOTI2MjZhYjEyODU5Mzc2OTE5YjZmN2MgbGVnYWN5LXRydW5rCisyOTc4OCBmMmZjMzhmOGNhOWRlMmU4YjUxZDAzNjc0NjBkN2VhZTNiMzI2ZmFhIGxlZ2FjeS10cnVuaworMjk3ODkgOGI2MzhiZTc2Y2JlMjQwYjU2NGQ0MTQ2YmY3NDc2MDk2YzQyZDBlNCBsZWdhY3ktdHJ1bmsKKzI5NzkwIDQxZmY1MGI0ZDA5NzQyM2IwZjJhNTNjNmQ5YmVhNDQ2YmJkNTQ5NzkgbGVnYWN5LXRydW5rCisyOTc5MSA4ZTYwMTNiYmU3YTdjM2M0ZmU5OWQwYTU0NzJhZDk1NTBmN2Q4YjQwIGxlZ2FjeS10cnVuaworMjk3OTIgM2ZkOGMyYWZmMzA1Mjk3Mzk5ZmYxZmJmMjU3ODg3ZWJlYzE0YWI5YiBsZWdhY3ktdHJ1bmsKKzI5NzkzIGEyN2FjOWQzMmYyMzM4ZmFhYzRmODk1MDllOWUyMGYzMGFhZjlhYTAgbGVnYWN5LXRydW5rCisyOTc5NCBhNGRiYTA1OGY3MGVhZmZjM2Y4YjM2Y2UzMTg1ZDliN2Q3MDRiNzNlIGxlZ2FjeS10cnVuaworMjk3OTUgOTEwZmE3MzlmNGE0ZTdjMzQ4NTA5YzFmOTNlNWQxYTFiNTNmM2ZmYyBsZWdhY3ktdHJ1bmsKKzI5Nzk2IDkwZTlhM2VjZGE0NDlkYzZiYjFhNmE1ZDlhYjg3ODg4OGRmY2U4OWEgbGVnYWN5LXRydW5rCisyOTc5NyBkNDFjNGI5NWU3MTRkZTE4ZmY4MzI0NzQ5YTExYTNlMjcyN2IzODI3IGxlZ2FjeS10cnVuaworMjk3OTggNjgwMzYwZTY4YTA2M2E2NzhhODhhNTA1MjUzYTc5MDI0YmFjM2FjMiBsZWdhY3ktdHJ1bmsKKzI5Nzk5IGZhZGNhYjY1YWE4NzRiNjQ5MjE2OThjMzJmYjgxNDFlMjVlYzcyMmEgbGVnYWN5LXRydW5rCisyOTgwMCAwNjc1NGQ3M2M2M2U0Njg3YmU2OGUwN2JiNDM2MjcwN2NiNDliNmZmIGxlZ2FjeS10cnVuaworMjk4MDEgMDVkNmFkZTNlOTJiNGIxYzU4MTVkOTllMjg3MDcwNTMxYWZmYjRhNiBsZWdhY3ktdHJ1bmsKKzI5ODAyIDgyMzg5NmNlMmU1ZDA1NjhjYjljMzQzN2ZlNWUwMTI4YzNkMjE1MmEgbGVnYWN5LXRydW5rCisyOTgwMyAyYjBlODE1YzBiMzA3ZmZlM2M1ZGMyMTMwZjA1ZTQ0MTNkNzkyODI3IGxlZ2FjeS10cnVuaworMjk4MDQgZWExZDIwNTBkN2RhYWVjZjU2MmFkZjUwZjkwNWM2OTdmODhjYWRjMiBsZWdhY3ktdHJ1bmsKKzI5ODA1IGYzYTY5MDM3ZmRmMGZhZDNhNTlmMDM3NTdlNzBkZjRiYmM0M2RkNjIgbGVnYWN5LXRydW5rCisyOTgwNiA0NGQ3ZWFhZTBkOGQzOGIyMjYyZDMyY2NiZWVlMGE2NzY1YzRlYTU4IGxlZ2FjeS10cnVuaworMjk4MDcgMzA4NmUxMTE3ODNhNzkxMDQxYjhjZDhkZDUwM2VmOWQzMDNiNjdiOSBsZWdhY3ktdHJ1bmsKKzI5ODA4IDYwYmQ3YWYwMzI0ZTgwY2EzNzdjOTQ0NTQ0ODM0M2I5OGFjMmZlZDYgbGVnYWN5LXRydW5rCisyOTgwOSA2MDFiOGZjMTJmYjk1M2ExODcwYzc4OTI3N2JiZGZjMjNhMzk2OGM0IGxlZ2FjeS10cnVuaworMjk4MTAgZjM0MDBlZjAyYTQ1OWM0N2IyMDE5OTI1ZWJlODBkNTI0YWEyODE5MiBsZWdhY3ktdHJ1bmsKKzI5ODExIGM3Njc2MmQ2NmY0MjFjMTcyZTUyYzAwYTI0NTRiYzIwOTQ3M2E4ZmUgbGVnYWN5LXRydW5rCisyOTgxMiA5NTdjYTJjNTE3OTA0OWEzNTgzZTU0ODI4OTg3MGExNmE0YjZlMDlhIGxlZ2FjeS10cnVuaworMjk4MTMgMTA4NzFmNDRlN2RiMjlkNmNkZjYzOGU3OWVhNDFmOGM2ZDBhMTRhZSBsZWdhY3ktdHJ1bmsKKzI5ODE0IDczM2U0YjlkNTkyZWJjZWIwOTRjMjk5ZDA5OGZkZDU4YWYxMWUzOTYgbGVnYWN5LXRydW5rCisyOTgxNSBhYzc4NzJlNTU0MDU5YmQ5ODk0MDM0N2FhZWFhMTZlNzJjY2E1YTEyIGxlZ2FjeS10cnVuaworMjk4MTYgNjU4OWMzN2MwZGRkNzJiM2YzYzhlN2Y4NDg5ZTc0YjUzNmYwNTFjOCBsZWdhY3ktdHJ1bmsKKzI5ODE3IDRlYzE5MDJlZTZiNzdjYThkOTVjNTc0MDFjOTk3NDI2MGZlODExMDcgbGVnYWN5LXRydW5rCisyOTgxOCA1NjExODVkMTNkNWNjNDFmNzYxMmQ2Njg0ZWNiNjM5N2RmZTExMTdkIGxlZ2FjeS10cnVuaworMjk4MTkgZjc4NTI3MGNlZTE5N2QxNzE0Yzg1OWQzOGQzZGE2MTU1YjAyY2ZiYyBsZWdhY3ktdHJ1bmsKKzI5ODIwIDNjNjRlZjg3ZDVmODlmNTQ2ODA0NGIyODc0NDVkYmNjZmIxMmZjNmEgbGVnYWN5LXRydW5rCisyOTgyMSAwNjdhMmVmNmQ4YTlmMTZmM2I4YmI0ODc4MGVlZDM4MDJiMjZjMDM2IGxlZ2FjeS10cnVuaworMjk4MjIgOWY0NjlkYTU5MWE5ZTdmYWYxYzU2MDg5ODJiNTUyNzUxYTIyNGRkMCBsZWdhY3ktdHJ1bmsKKzI5ODIzIDU0N2RlNDA3YzEzMzQ3M2VkM2YyMzljYjY0MjU0ODkwYjQyY2MwMGEgbGVnYWN5LXRydW5rCisyOTgyNCAzZTAyZWFkOGRlMDU4MDA3OTc5ZjBiNzQzYjYyZmI3ZmE1NjdmMjUyIGxlZ2FjeS10cnVuaworMjk4MjUgNDZiYjlhZDgzMThmMThmYTRkNTRjZTlmY2ZkNzM0MDY2YmUwZGYxYSBsZWdhY3ktdHJ1bmsKKzI5ODI2IDdiOTA5NjUwMWVhODBkODA1OWVlY2I5ODYwYzgxNjNmODkwZTEwMzYgbGVnYWN5LXRydW5rCisyOTgyNyBhYmY1NjVjZjViNTQ3NGM4MmU0ZTkwMWNlMjkyNzE5NTUxMjNlOGEyIGxlZ2FjeS10cnVuaworMjk4MjggMTNjMWFhMTVlMGZiNWRhOTQ4Mzc1MTNkNjI0ZWUyMDgzMjRlYTBhMCBsZWdhY3ktdHJ1bmsKKzI5ODI5IGRjMzk5ZTljYWI4OTg2ZTkyNzJhMzgzY2Y1ZGYyOTkyZWRkYmZiMGQgbGVnYWN5LXRydW5rCisyOTgzMCAzMjJiNjY0YTIwMjJkODc4NGE5NjMzODQ3NzUyNmJjZDkyNjViZmFlIGxlZ2FjeS10cnVuaworMjk4MzEgMzVmMTI1ZDUyY2Y1YTgxYjEyYzAxMGIzZWEzYTBiNTE2YmJkYzY1MSBsZWdhY3ktdHJ1bmsKKzI5ODMyIDhmZTI5NmFkNTkzNmIzNzAyOGJlZDZmMjVkYmZmY2IxZGViMGRiZTYgbGVnYWN5LXRydW5rCisyOTgzMyA3NzA5M2Q1N2NjYTk5N2JlNjQ4NWM4MmIwYTY5NWIwMDczZTExOTllIGxlZ2FjeS10cnVuaworMjk4MzQgM2Y3YWVhNWI5M2ExODY3OTI4MDMyYTM3YjM1M2ExNWRkNzg0NzdiYyBsZWdhY3ktdHJ1bmsKKzI5ODM1IDc5MTE4NjMyZTM3ZTQwMWUwNzljYmUwMDhmYjUyYjc2OWVkMTMwYWYgbGVnYWN5LXRydW5rCisyOTgzNiA1NGE3NGIwZGZlMjZjZmE2MmQ5NjliMjJlNTM0Y2NmMzM1ZTFjMGRjIGxlZ2FjeS10cnVuaworMjk4MzcgODIzNmQ1Mjg4NDEyNTZiYzFlZDc3OGJjMDA2MDk0NzA3NjVhMDNmYiBsZWdhY3ktdHJ1bmsKKzI5ODM4IDg3OGZlZGM2YzdlN2M0ZTU1MTQzMGMzMmJlZGQ2NDE0ZTMwOGQ2Y2MgcmVsZWFzZTIyLW1haW50CisyOTgzOSA2ZTIyOGUxYWZmMzg1ODdlMDFlMzMxODM3YTRiMjYxMTkxMWM2NzMyIGxlZ2FjeS10cnVuaworMjk4NDAgYjgyNDI4YjE3OTc4ZmIwZGI2ZTBiZjkwNTJlYTZkOGE5YjAyNGY1MSBsZWdhY3ktdHJ1bmsKKzI5ODQxIDRmMmQ1MTc0YmQ0YWM1YjhlZWJhODBmMGMyM2I0YTBlNTc3OGZhNTkgbGVnYWN5LXRydW5rCisyOTg0MiBkMWQ4OTU5YjEzOGFjZmVkOWY2NDUzMDI4M2FkZjc0MDIzYWVkMjEzIGxlZ2FjeS10cnVuaworMjk4NDMgMDhiNzIwY2QzODdlMzM1OTVjYjZhNjVkMWYyYzBkNTY2OTg0M2MyNCBsZWdhY3ktdHJ1bmsKKzI5ODQ0IDBjN2NiMjc0NmQ4NjQzNDU4ZWRhMmRlZjE3MGQ0ZGE4NTk4NDBiZmMgbGVnYWN5LXRydW5rCisyOTg0NSBjMWNhYTViZmYyOTJhZjUyZTBmMDI2ODRiYWQxYjI5NTdkMWQxNjA4IGxlZ2FjeS10cnVuaworMjk4NDYgYzI2MDRkNjlhYTVkNTJiYzJkNjgzY2JjM2EyNzgwZGJiNThmM2IxMSBsZWdhY3ktdHJ1bmsKKzI5ODQ3IDllNDg5YTBkZjdiNWFmOWQ2NjhkNjUzOTBjOGI2MjBhOWJhYmVhYzUgbGVnYWN5LXRydW5rCisyOTg0OCAzZDBlMDI5NzZiYzMzNjY0N2E3OTU5NWJkZTUyY2E2MDQ4OWU3Yzg3IGxlZ2FjeS10cnVuaworMjk4NDkgZTE2ODc2M2U4NjFhMmM0OTEyN2ZjYzg0N2ZiYzVjMWJjNGE2ZDdlZCBsZWdhY3ktdHJ1bmsKKzI5ODUwIGQ0Y2M5NzFkMThhNjNlMTBmZGZkYzlmYmRmOTAxNjIyYzkzMmExOTkgbGVnYWN5LXRydW5rCisyOTg1MSAxMzViYjExMjE1YTA5NGJlODYyYWI2OTkyNGI4NTczOGU4YmVlNjM0IGxlZ2FjeS10cnVuaworMjk4NTIgZDBmMmQxZjNmYzg1NDJhNjMwOWMwMDlhM2IwNzBjMzdlOGJkN2I3YiBsZWdhY3ktdHJ1bmsKKzI5ODUzIDBmMjc2NjMwMmJhMGE5ZjM2OGU3OGI1NDQ1ZGI3ZTBkZDRjYjEwZmIgbGVnYWN5LXRydW5rCisyOTg1NCBkMmZiNDJlYzhiYjQyMmUzMTZkYTMzMzYyN2Y5NDg4ZjFhMjA3MWMwIGxlZ2FjeS10cnVuaworMjk4NTUgYWIzNzYzZDQ3N2NjNDA4YTY3OGNkMTNmMWIxYzQ2OWM1NDUyNWIzMiBsZWdhY3ktdHJ1bmsKKzI5ODU2IDE4ODViMmQ2MzkzYThhY2Q3MDRjMjgzOThjMWE5M2NhNjdhZTEwY2QgbGVnYWN5LXRydW5rCisyOTg1NyBmOGExYmE0NDYxNTg0NjljZWM2ODdiYzI5MTdkMzIzZjM4N2Y1MWY3IGxlZ2FjeS10cnVuaworMjk4NTggMTE5MTk3ZmE2MTQwOGVkNWFiODEwMzFiZmZiYWJlNGJjMWFkMzAyYyBsZWdhY3ktdHJ1bmsKKzI5ODU5IDNkNTIzZGJjOTliZWVhNGE3OTQ1OGIwZDEzY2I0ZTUzNmY1MjMwMGYgbGVnYWN5LXRydW5rCisyOTg2MCBlNzQ4NmYzZWY3NTlhOGIyZTU0MjdmNDAwZTJkOTdhMmRmODMxYzNkIGxlZ2FjeS10cnVuaworMjk4NjEgZGY1NTZmZGVjNjlkMDVmMzU0NzhlMWRiYzVjNmU4YjQ4YmNiNGI0OSBsZWdhY3ktdHJ1bmsKKzI5ODYyIDFmODAwMDU3YjYzNzI4ZjUyNTdhMWE2NzM0NzY4MjY2NDU0NjFlYzAgbGVnYWN5LXRydW5rCisyOTg2MyBkZjcxOTczNmUxNTFiNTc2NDY4YzNjMGY5Y2I5NmZlNjBmYzRkY2NhIGxlZ2FjeS10cnVuaworMjk4NjQgZmNmOTczNGUxMDIxNGJlM2M0ZjM3NzA3NWEzY2FjMjMyYWI2YjVjMyBsZWdhY3ktdHJ1bmsKKzI5ODY1IDFiYWYxY2RkYzBlY2Q5NjljNjc0YzdiY2Y3NGM5YjZhM2UyMDQ3NjIgbGVnYWN5LXRydW5rCisyOTg2NiA4YTAxMGMyN2Q2Y2I5YTM2Y2ZlNWNhOWY1NTQ2NmQ0NjBhYjllNDM1IGxlZ2FjeS10cnVuaworMjk4NjcgYThjYWRmYjBmZjgzMmY2YmNiY2YwZGFkN2YzMmVkOTA2NmE1ODA5NCBsZWdhY3ktdHJ1bmsKKzI5ODY4IGQyMDdkMWQ3OGM1ZDVhMWZiZGQ0MjliNzU1YjI0MTZmYmYxYzcyMDMgbGVnYWN5LXRydW5rCisyOTg2OSA0ODJhZTA1NWJiZDRmYTBhYzVjNGNhZTVkNTc2ODNhZDIwY2Y3MjhlIGxlZ2FjeS10cnVuaworMjk4NzAgYmIzOGQ3YWJjM2ZjZGNmNzhhOTczZmNjNzJkMWI0ZDQyMjY0ZTMwOCBsZWdhY3ktdHJ1bmsKKzI5ODcxIDQ5MWJmYzRhMGY1YmI2MjI5N2E3Y2M3YWFiYTRkZTNjOTc1NGU1YjQgbGVnYWN5LXRydW5rCisyOTg3MiBiMDU1ZTc4ODNjODNmYzUyNzQ2NmJkMTEzOTFlNTVhZjZiZTRhZjBmIGxlZ2FjeS10cnVuaworMjk4NzMgZTNmYWU3YjZjMjA3OGY0ZDhhYzU2ZTExZjc2ZTJjZjA4Y2ZkN2ViNiBsZWdhY3ktdHJ1bmsKKzI5ODc0IGIyN2MxY2FkNzdlYTcwNzUwZWM0Zjk2ZmZmODNkMTBiNGE4MGY3MzkgbGVnYWN5LXRydW5rCisyOTg3NSBhMGQ3NTJiZTU1NzczMGJlMzE5MDJhOTRkOWIzOThlMzkyNjk1MTU3IGxlZ2FjeS10cnVuaworMjk4NzYgMjgxMmNhY2UzMDFhY2Q3ZmU1OTI1M2M0MmNlNjFjZDA1ZjFkY2VjNCBsZWdhY3ktdHJ1bmsKKzI5ODc3IGNjNjI4NTRmNjM2Y2YyMTA3YTc4MzYxMDU4NGM5MWEyZDZmZmI3ZWUgbGVnYWN5LXRydW5rCisyOTg3OCA0MzgwNDM1ZmVmNjY1MDRmNGMxZDQ4NTgwYTgzNzI0NzgzZmYxZWJhIGxlZ2FjeS10cnVuaworMjk4NzkgY2JkODFkMDhjNDMwMWM0YjgwY2NmOTNkYmI4YjQyYjBkODNlOTgxYiBsZWdhY3ktdHJ1bmsKKzI5ODgwIDQ4ODE2MDIxZjU4ODI5MjE1ZmM1ZTllYTA4YTU3Y2EwZmZmY2VmZGUgbGVnYWN5LXRydW5rCisyOTg4MSAxYjQ3YjU3NmUwZDRhNjFkMTVmOGYwZDA5OWQxMGJiMGU5NDNhYmJjIGxlZ2FjeS10cnVuaworMjk4ODIgYjM4NTMzZTAxZDY1ZmM5ZmE4YmY5ZDdiZmRlYTRmZTM4N2ZiZjQ4MSBsZWdhY3ktdHJ1bmsKKzI5ODgzIDcwMGUxODJiMjkwMTkzNDI3N2MzYWMyNzAyYWE5NmViODgyN2Q3MmMgbGVnYWN5LXRydW5rCisyOTg4NCBmNzEwMTcwMjJmY2VjYzYyZWZjNzU2N2NiOTI3NDYzYTlkNmZjYzY0IGxlZ2FjeS10cnVuaworMjk4ODUgM2ZhNmRlZDBhMWU5NDgwZmUzYmQ4MzdiNWVkNWE2OWNiYTc0NzI4ZCBsZWdhY3ktdHJ1bmsKKzI5ODg2IDU0NDcyN2Q0MWY1Njg3ZmVjOTU3OWVlYWRhMjM1Mjg1YTIzYmIyNDggbGVnYWN5LXRydW5rCisyOTg4NyAyNjkxOGUyZWZkMTc3YWE3YjhkMTkyZmU5MjIzYjk0Y2E2YjVjZDEwIGxlZ2FjeS10cnVuaworMjk4ODggMWEwOTRlZjBmYzg2MmM0NGJmMGExYTg2NjYzMjQ2MDEwYzAzMzNhMiBsZWdhY3ktdHJ1bmsKKzI5ODg5IGRkZTljNjJhNzJmZTAzYWIzMGM2NGE5MGIyZWYyNDMwMWY0YTM1YTggbGVnYWN5LXRydW5rCisyOTg5MCA1NjllMTkzYmY1OWZjYTcwMzUxOTIyMmY3MWIxOWQzMTcyYjRjY2M5IGxlZ2FjeS10cnVuaworMjk4OTEgZjI4MzU1MzEwODY3MDU1YjUxODNhYmMxN2QzOTdmODhlNmNkNWVjZCBsZWdhY3ktdHJ1bmsKKzI5ODkyIGQ1ODgyNGNlYjM1ZDU4Njc5ZDMyMTA3Y2I0NDZjNGU3MWRmMWU1ODcgbGVnYWN5LXRydW5rCisyOTg5MyBiZDA5ZTNhMmQ1MzY0MGU4M2RjYWIyZjQ4YzJlNTgxMTkzNjc2NTkzIGxlZ2FjeS10cnVuaworMjk4OTQgMDMwMzU1MjNiMzg1ZWU5NjNiYjIzMDdkODJjMWE5MmY3MTllYTEyNiByZWxlYXNlMjItbWFpbnQKKzI5ODk1IDM1ZjQ0NGNhNWUwNWMzNzM3MDE2NzdhMDMzMzQ5OTczOWM5ZmQ4ZjkgbGVnYWN5LXRydW5rCisyOTg5NiAxZTUxNGUzNzc2MTNlMTc2ODI2MDE5MWJiYzlhZjNiNmViZDE5MzUzIGxlZ2FjeS10cnVuaworMjk4OTcgYWI2YzdiMjdhNGNiOTE0Y2Q5OGJmNmY2YzdjNmE1MTk4ZWZkNTFjMyBsZWdhY3ktdHJ1bmsKKzI5ODk4IDlkNmFlZDJlNjBlMjhmNjc3N2Q2NWU2ZWMwOGNhNmY3NGIwMzIxMmUgbGVnYWN5LXRydW5rCisyOTg5OSA0ZDQ3MTUyNmFjZTEyNGI5OWQ0YmQxMmMzYTc0MDdkMTlhNWNjOWQ2IGxlZ2FjeS10cnVuaworMjk5MDAgM2QyODY5ZGUyMzM2Y2IxMjkzYTEyOTAxMjFjYzMyZmI1NTU4NzFjNCBsZWdhY3ktdHJ1bmsKKzI5OTAxIDUxZDAwNTc4MWM4NjkxNGY2YTE3ZGQ2YWRlMTQ5NjNmM2Y2OTdmMTEgbGVnYWN5LXRydW5rCisyOTkwMiA2MDliNWYzN2YxNGZlMmJkOTFmNGQ5YzYxNjhkZDM5MjVkNmRkOTY4IGxlZ2FjeS10cnVuaworMjk5MDMgNDU3NGI2NTllYzM3YWJkODg3YjI5ZTQ3YjZhNDg5YzE1YmFlMWUzZSBsZWdhY3ktdHJ1bmsKKzI5OTA0IDY1MTFiMTZmZmU4OWZmYmVmYjlmN2MxYzQ1ODZmYmU5MjViNDljZWEgbGVnYWN5LXRydW5rCisyOTkwNSAwMTAzZjBiNzVmZTI2MzQ3ZTg4NjA4ZWRlZThjNjU0YzEzNTliZjFhIGxlZ2FjeS10cnVuaworMjk5MDYgNGJlZTMzNzkwOTQwY2NkZGYyMzBhMGQ0OWZmMzdiNDNhM2E0ZDZkNyBsZWdhY3ktdHJ1bmsKKzI5OTA3IGIwNDg5YTYwNTk3Zjc0MTQxYzhjODEyYmViNzRmMWNjZmU0ZThlNGEgbGVnYWN5LXRydW5rCisyOTkwOCBhZDc1ZWZlMmYwYTY2YzdmZGQxZjA2YTg4MGFkZDI0OWE4ZGU0Yzc4IGxlZ2FjeS10cnVuaworMjk5MDkgYzUyMmM4YzcxY2FiMGMxMGU4NTZjNTczYzAxODYxYjMyYTZmZTliOSBsZWdhY3ktdHJ1bmsKKzI5OTEwIGM2ZmZkOGU2MWNjZTZkYmNjMGYwYTEzOGY2ZTY1OWIxYzczZTY5NzEgcmVsZWFzZTIyLW1haW50CisyOTkxMSA2ZDU5MDY4NTNhN2Q5MDdlNjgzNTUwMWFmNDk1M2QwNmUxYmM3YTlmIGxlZ2FjeS10cnVuaworMjk5MTIgYzJiZTRkYzI1NDA1NTQzNTg3MDg5N2U5NzI5ZjM2MDdjNzM1OGEzZCByZWxlYXNlMjItbWFpbnQKKzI5OTEzIDRhMDEyMDk5MjY5MTZkOWFiNTNlMDA4NjBhNGU5YjM0NzhlZjc1NDMgbGVnYWN5LXRydW5rCisyOTkxNCA1N2QwMzM3NWFlYWQ3N2E4NTk5NTAyNDlhYjZmZDg2YWUyMmJmZGE0IGxlZ2FjeS10cnVuaworMjk5MTUgZDQ0OTQ1YjgxZmZhZTAwNzc1ZjEyZmJhODVmMTdiNzNkNDg0NTQ2MSBsZWdhY3ktdHJ1bmsKKzI5OTE2IGM1YjEzMDUwODFkZmQxMjk5ZmNhOWM1OTVhM2JiNTE1NjUxNjA1MWYgbGVnYWN5LXRydW5rCisyOTkxNyBhYTBlMTliNmUxZTc1YTBjNTc0YWI3NzNmMTU4YTRjY2MzYTk2YWRkIGxlZ2FjeS10cnVuaworMjk5MTggYTM1MGE0ODdlYWMxMWIzNjU1OWM5NTQ2ZDUwYTFlZTMxOTcxZDZlOCBsZWdhY3ktdHJ1bmsKKzI5OTE5IDM2NzI1MjIxNGRhZjBmMjc1MjljMGZiNGE0YWM3ZjU2ZWViMjY4YTUgbGVnYWN5LXRydW5rCisyOTkyMCBjMTI1OGIxYTM2YzZmNjhkZjZjMDE5ZWFkOTUzNWZiYTY5NTNhMWVkIGxlZ2FjeS10cnVuaworMjk5MjEgNGFjMzhmMjhjZDEwYTE1Y2NjOTI0Yzk0YzNjZGIzMjcwMWUyZjNmMiBsZWdhY3ktdHJ1bmsKKzI5OTIyIDc0MjEzNjcyNzRiNDU0ODFlZjI3MWRhNjI3ZGZjNmE3ZjUyZjZiNDQgbGVnYWN5LXRydW5rCisyOTkyMyA3Nzc3ZGNlYjY2ZWUxNDRjY2M1NjVmYzNiNTY2N2MwNDc4NTUzYjY1IGxlZ2FjeS10cnVuaworMjk5MjQgN2EwOWIzNmNhMzc5YzJjMDdkNmQ3OTE4YzBmZjRlMDg3ZjI0NDExMCBsZWdhY3ktdHJ1bmsKKzI5OTI1IGJkZGM0MTMxNTMzNjUwZDhiZGRkODU2MTUwZmYyYjNjYzA3MjhhYWUgbGVnYWN5LXRydW5rCisyOTkyNiA4ZWEyZTM1OTk3YTA0YjIwNTQzMGU4MTQ0YzJlOWMwMzU1MTNhZjU5IGxlZ2FjeS10cnVuaworMjk5MjcgOGI5ODhhMDlkZTk2ZGRhNjY5YWM5NzUwYWZlMzY5MmVlMTcwZGNkZCByZWxlYXNlMjItbWFpbnQKKzI5OTI4IGNhMDFmM2RlNjY0ZThiNjA5MzEyOTE5NWQ2NDRmNTk3ZDAyNTc5NDUgbGVnYWN5LXRydW5rCisyOTkyOSBjYjg1YWFlNzg5ODAyYWQ2N2E2NTVlYzc0YmQ3YzhlMDEzOTAwYzI1IGxlZ2FjeS10cnVuaworMjk5MzAgNjBlNTc3OTdiOGU2MWEzMTFjYWEyOWVhNjRjYjU2OGJlYzYwY2Y4OCBsZWdhY3ktdHJ1bmsKKzI5OTMxIDI3MjA0ZjA3MTJhMjZlZThjNDU4Y2Y5MjFmNTViOTY4YjNmOTMwNjQgbGVnYWN5LXRydW5rCisyOTkzMiA1YzdhM2ExNzMxMGQxYTJhOGQzNmY3M2UzMDM5YWNlZDY2ZDEzYjNjIGxlZ2FjeS10cnVuaworMjk5MzQgNDlmNDlhZWJmNWMyMGJlMzJkOGU0Y2M2MmI5MTBmZjY3Nzg3MjkxOSBsZWdhY3ktdHJ1bmsKKzI5OTM1IGU1MWNiZGNhMjA4NWJhOTcyYTc3ZWZmYmM4MGNiYjZmYzMyMzY5MmQgbGVnYWN5LXRydW5rCisyOTkzNiAwM2FmZGE5YWQwOTA4YTNmYzEyOGU4M2UzYmIyMzYwOTYzZWNlMDM3IGxlZ2FjeS10cnVuaworMjk5MzcgZGQ4MTdiYjM2NDZiY2I5MmRkZDk0ZGRjMDQzZGE2NDRmYWNkYzY2MSBsZWdhY3ktdHJ1bmsKKzI5OTM4IDM3YTE3OGMwZmQ1OWYyZjI0MzJlOThjNTU3YmU4OTAzMGZmZmE3M2IgbGVnYWN5LXRydW5rCisyOTkzOSBkZGJiMDU3ZTVhYjMxNWJjZTk0NjFkMWMwNjI2OTBkNDM4YTFmNGExIGxlZ2FjeS10cnVuaworMjk5NDAgMTU5NTdiN2U0MjQ3OWUyOTk5ZmQ4MGU0OWRmMzc1M2E1YmVlM2EwYiBsZWdhY3ktdHJ1bmsKKzI5OTQxIGM4OGY2ZmZmMWMzZjFjNzgxNzM2NGQzMzlkOWJhOGUxMzIxYjg2YTYgbGVnYWN5LXRydW5rCisyOTk0MiAxNGZjMTg3MzM0YzU4MTVhOThlMzgxZDBiZDFlN2ExOGE0ZjVjODQ5IGxlZ2FjeS10cnVuaworMjk5NDMgZTFhMzMxMzZiNGUyNjdiYmY0OTg5YmMzMzMzMzYyNjY2N2I4NWIxMiBsZWdhY3ktdHJ1bmsKKzI5OTQ0IDQxOGE3ZWM5MjU5OTMwZmZmODczNTczNDU1MzU1ZDNkYTc0NmNkZDcgbGVnYWN5LXRydW5rCisyOTk0NSBhNTczYWY1ZGI4MDc0NTJlYWM3NGM3MTZlYTJmOWVhN2Q5ZjAyN2ZkIGxlZ2FjeS10cnVuaworMjk5NDYgZmJiMjRjZDU0NzY2Y2U3N2I5MGUzMDViYWU1MGM2OWJjM2IwOTRkOSBsZWdhY3ktdHJ1bmsKKzI5OTQ3IGY3OWViYmFhNDgzMzRkNTgyZWRkY2RkNWFiODJkMjdhZGRjYTE0MzUgbGVnYWN5LXRydW5rCisyOTk0OCA5NWVkYjQ4ZGJmYTE2ZjYzZTY4MmJlOGIwZDNiMTgwNTcwNzgzYjYxIGxlZ2FjeS10cnVuaworMjk5NDkgOTljNzhjZjk1NjEwNTFhOWEwMzBhNWNlYWRjMDRjNjYxNmVmZWM4OSBsZWdhY3ktdHJ1bmsKKzI5OTUwIGI4ZmZmYmJkNjgzMjY2MzZkZGQ2NjFiNGUzZThjMWM4ZGExMzRiNmEgbGVnYWN5LXRydW5rCisyOTk1MSAwNjkwZjgxY2NlNzhiZTc0YTEwODIwYzA5OWNlZDE1ZGI2M2U3MzBmIGxlZ2FjeS10cnVuaworMjk5NTIgMTM4Mzg1MzBmNjE5NTc0NDdmOWQ5OWEwNDAwODQ4ZDUyNmQwYWU1YSBsZWdhY3ktdHJ1bmsKKzI5OTUzIDZjNDU5ODVhOGZkYmZmM2FhMTRkNzYzNDU3YmI4NjY0NmUzZmIyMmYgbGVnYWN5LXRydW5rCisyOTk1NCBmMjU1YjNmNWU5MTM2MWM0NGVhYzMyZTFmZmVhYzIyNjYwNzg2YTg4IGxlZ2FjeS10cnVuaworMjk5NTUgZTA3OTQ4ZDVjZjY3YzQ1ZGM3Zjg4MTk4YjI5MTA0YmI4YzRjODViOSBsZWdhY3ktdHJ1bmsKKzI5OTU2IDc0NjhiNjhlOTgyODZmNGVjMWFjMTdkZTNiZmNjYjQwZjljYzBiZGQgbGVnYWN5LXRydW5rCisyOTk1NyBkMWI0ZTcwMTZkODhhNTJlYjhiNjJjZDU0N2M5OGFhYWY3MTFkNjJjIGxlZ2FjeS10cnVuaworMjk5NTggN2JhMDcyZGIzODI4ZjdkM2FkOTYyNjBjNmI0YTM4NjNhY2ZlODFkNyBsZWdhY3ktdHJ1bmsKKzI5OTU5IGIyNjhhNmU4NTljYjdiMjg2NDljZWY5OGFhOGRkM2JkOWM2MmQ4OTEgbGVnYWN5LXRydW5rCisyOTk2MCAyOGVmZTE2YThiN2RmN2FkMGU5NjRkYzI4MzQ2YzU0YTVlYmQ0NmEyIGxlZ2FjeS10cnVuaworMjk5NjEgZTI2YTIwOGVhNzFiODM1NzE2ZmEwM2I1ZTVmMmQ3NDgxZWI0NDc1MyBsZWdhY3ktdHJ1bmsKKzI5OTYyIDBmODQ4YjA2MTQ2ZjBjOTc1NDY3ZGEwMTQ4ZTU1NDRkZDgwMGNlOGQgbGVnYWN5LXRydW5rCisyOTk2MyBiNGNlNmFjMTdmNjA3OWU2NmYzNDIxYThmMDY1YjA3ZDA4MmU0MjNkIGxlZ2FjeS10cnVuaworMjk5NjQgMmY0MGZhNzliNTlhNWYyNzljMDNkNzFhY2MwZDFmZDlkZDhhNDNkMCBsZWdhY3ktdHJ1bmsKKzI5OTY1IGI4YTdjNGNmM2U2ZDI2MDA1OTcyMGVjY2I1ODIwNzlhYWFmMzVjZmIgbGVnYWN5LXRydW5rCisyOTk2NiBjMTM1ZmIyYmI4MjVhZTgwODViMjgxZmM2OTI5NmYyZDMzYWJlNzc1IGxlZ2FjeS10cnVuaworMjk5NjcgYTU2ZTBiMjUxN2JkODM1NjRhODIzZDY5YjcyMGY2YjFhZDEzMGZmNSByZWxlYXNlMjItbWFpbnQKKzI5OTY4IGFmNDY5OGU1OTFlY2M4ZTI5ODViM2U5MTNjMjBkMmZkNDBlZWFkMmEgcmVsZWFzZTIyLW1haW50CisyOTk2OSBlMGI1OTYwNjAzMTNlNjM3MDhmN2EyOTRlNWIwMGZlZmE0NDE2MTRhIGxlZ2FjeS10cnVuaworMjk5NzAgMjM4Y2FjOTdkMTY1ODRiZTMxNTViN2E0ZWQ0NDRjNGU2NmFmNTQxOSBsZWdhY3ktdHJ1bmsKKzI5OTcxIGIzMWJkMDA0ZjQzMGM3MzM4OGEwOWM3M2IwYTgyM2U3MWI2MDhkMTggbGVnYWN5LXRydW5rCisyOTk3MiAzZjgwMTkyNzM1NDllY2YyYTg5ZTk2ZWJkYzZmZGZjZjAzOWJiMDBlIGxlZ2FjeS10cnVuaworMjk5NzMgNTQ2N2M2ZTFmNTQxYjA0ZmViNTAxNzM5ODc0ZTdmYzAwNmY4NzY2NCBsZWdhY3ktdHJ1bmsKKzI5OTc0IDI3NzVkZTM1ZGQyOWQ0OWNlZDUwNmQ2YjcyZDBhYzcxNWE3NmZkMWMgbGVnYWN5LXRydW5rCisyOTk3NSBmMDc3MmJkN2NjNDAxMmMyMGY4NzRmODEzZDg5MzBjODQ4ODQ2ZmFkIGxlZ2FjeS10cnVuaworMjk5NzYgZjhkMWM2ODIwYmZhZWM1Mzg5ZDc3MTk2NjE3NTI0M2VkZWU0YTQ2ZCBsZWdhY3ktdHJ1bmsKKzI5OTc3IDc2Zjc5YmIzNmZjNzczZGM5MWFlNDEzOTdmZDVlN2VjM2NhZDU0MTkgbGVnYWN5LXRydW5rCisyOTk3OCBjZDFmZTRiNWY3ZmZjYzIzZWU5YzkyYjk2MjQ2NWE5MjVlMWRiNDhhIGxlZ2FjeS10cnVuaworMjk5NzkgZjg2MTMwZjQ1YmY3NTBkOGY5YmQ4OGQ1ZTI0ZGJkNjlkNjM5MWVlOSBsZWdhY3ktdHJ1bmsKKzI5OTgwIDY3MTMyNzE5NWRjMzBlYTVkMmM0N2ViMjk0OTU3MjYwNjM2MDY3MjIgbGVnYWN5LXRydW5rCisyOTk4MSA4MjU0NDVmOWQ2YjhiMDJjOGViY2EyMjI3NWE4MWNmMWRmNGIwNTBmIGxlZ2FjeS10cnVuaworMjk5ODIgMDAxNWQzZjE4OWUxNDlhMjliNjZhNTIxNzVhNjg0MDRkMmRjYzczNyBsZWdhY3ktdHJ1bmsKKzI5OTgzIGVkYThlNjg5OGRkM2VlN2MxMWUzMmQwZTk0OGQ3YTVmM2FhZGQ3Y2QgbGVnYWN5LXRydW5rCisyOTk4NCBhOWI0YjZhYTEyMjAyNzc0Y2U0ODMzZTNkMmViMDVkYzAwNDkwYTUwIGxlZ2FjeS10cnVuaworMjk5ODUgZmE0NTMyZWY5OWM5YTlmMDg4M2EyYjExYmViMWE5YjQ4ODYzN2JmMiBsZWdhY3ktdHJ1bmsKKzI5OTg2IGU5MjNmNmQzYjRhMzMwOTE3NzE3ZmRiNjk3M2NlMDAyOGU1N2EwOGEgbGVnYWN5LXRydW5rCisyOTk4NyA5ZTRjODAzNDBmYTFkOTc1NWVmMmNkODNmYjU4ZmIyMzMzOWQ2MTFlIGxlZ2FjeS10cnVuaworMjk5ODggZjQwYTJkM2EyYWI1NTM3MmE1Y2Y2ZjJkMTI0ZDBmODcwMDU5YmNkNSBsZWdhY3ktdHJ1bmsKKzI5OTg5IDJkNDRhYmU1N2I0MjYzODQwZGNmODA1ODk0MzJjY2UzM2NkNjFkYzcgbGVnYWN5LXRydW5rCisyOTk5MCAzNzZiZDM1N2M0ZDVhZTZkMTY3YTJmYWQ3YTdkNjI2ZTU0ZWYwNjk0IGxlZ2FjeS10cnVuaworMjk5OTEgNWE5ZTcwNjRjOTIzNGQxMjdkMjA4NDdiMDM5OWVjMzFkMDliMDQ0ZSBsZWdhY3ktdHJ1bmsKKzI5OTkyIDY0MzEwMDE3MGJkZTkxZjg2NWU4ZWMzZTgwNDU2MGU0NDZiY2RjNmEgbGVnYWN5LXRydW5rCisyOTk5MyA1MGM2MzNhODdlMzU1NDdmMWIzZDljYTBhMmM5YzdiOGIzODFiNTAwIGxlZ2FjeS10cnVuaworMjk5OTQgZmQ2ZmI3M2ZiMjBmZGExZmM5ODhlOWU4Y2NmNDA5ZTdkZjY3M2M3OCByZWxlYXNlMjItbWFpbnQKKzI5OTk1IDg1MDQ1OTFlNGM2MzFiNDQ3N2FhMDFjNWEwYTU2M2Y5MDBkMTNmOWQgbGVnYWN5LXRydW5rCisyOTk5NiA5NGM1NTNlYjg4YzNhNTc3OTJjZDllOWY3ZWE2NDI0ODEyNTI3ZDUyIGxlZ2FjeS10cnVuaworMjk5OTcgMGI2NmQ0ZTlmNGY0ODU5Njc5YjViNDA1ODBkZTMwNDIyMmQ4ZDJmZiBsZWdhY3ktdHJ1bmsKKzI5OTk4IDE3ZDEyM2YzMzYxMTA2MDA1OGFhNTRkZmYwMzY1MmM2N2QzZjg4ZGEgbGVnYWN5LXRydW5rCisyOTk5OSA3OWY5MDYzZmI1OGVjYjI4ZGFiOTg0YjA4ZjA3OGM3ZmYxNjI0NDc0IHJlbGVhc2UyMi1tYWludAorMzAwMDAgNGMxNjQyOGZiY2Q4M2M1ZjE3MDM5MDI2NjhkYmUwOWFjNzIzMmI0MCBsZWdhY3ktdHJ1bmsKKzMwMDAxIGE1YTg3MzU3MTFlODE2Zjg1MWQ0MmJkZGU4NDBiMjkwZTc1YWRjNGEgbGVnYWN5LXRydW5rCiszMDAwMiA3YWJhODU5Y2VlNTQ1MzI3Yzg4ZTU1NGU1YWUzMWIzMTM1YmUwNDhjIGxlZ2FjeS10cnVuaworMzAwMDMgZDJkNzgxN2ZjY2JiYmFlMTNkOGU5MTdlNTIyYTdlOWM2MzA3YTMxMSBsZWdhY3ktdHJ1bmsKKzMwMDA0IDlmYjhhYWRlODg3Zjg1NWNmZDI1YjE3MDhjODA3MDMxMDc5ZWM4M2UgbGVnYWN5LXRydW5rCiszMDAwNSAxOGRjZjgwZTZmOGRlZGQ0ZTFjMDlmY2RhZjVlMjY3MjU4MWIyYzliIGxlZ2FjeS10cnVuaworMzAwMDYgMzhmZTVlYjZhYzI1NjcyMTI2MTc5ZWUyZTAyNzkzZjllNDVlNTkyMyBsZWdhY3ktdHJ1bmsKKzMwMDA3IDM5ODFjZjJhNTczMDUzNGQ4OTZkYzc0ZGMzZmJiYmNlNTkzOWQwNTggbGVnYWN5LXRydW5rCiszMDAwOCBiNTgzN2I4ZjNiMmM0YzJiNmIwMDVlZmYyNzY3Y2ExM2Y1MWViYmM0IGxlZ2FjeS10cnVuaworMzAwMDkgOGUxNTY3ZGJjYmE4OTNmZTY2YjNjMDkzMDc5ZDNkNjljY2M3MGMwYSBsZWdhY3ktdHJ1bmsKKzMwMDEwIDYxNzdhMTNlNGMxNDVhNDBkMThmMmNiYTBlZmU0YzRlZmZlZDBhYWQgbGVnYWN5LXRydW5rCiszMDAxMSBkNmQ1MjIyYjdlNTU1MmE5MmU3YTIwYWI1NDNhYWRlNzkyN2Y2N2ZjIGxlZ2FjeS10cnVuaworMzAwMTIgY2E2ZmE2OTcxMWJiNWUwZTJkZjk2OWYzZjAyYTdhOWQ4Mjk3MjM3OSBsZWdhY3ktdHJ1bmsKKzMwMDEzIDYxZTJiOGNlZmQ4NjcwMGJmMWRjZjFkMDczYmUwM2NlN2JiZjNhZTAgbGVnYWN5LXRydW5rCiszMDAxNCA2ZWE3ODY1MjgzOTVhYjc0NDA3OTdhOTIzZDQ3YjJiMGEzZDdhYzY5IGxlZ2FjeS10cnVuaworMzAwMTUgOTk3ZmEwMjI0NGJhYzJjMmFkMDY1YTY5ZDgzYjFiMjc2NzM2ZWJkMiBsZWdhY3ktdHJ1bmsKKzMwMDE2IDI2MjE5NjgzMTlmMDM0NGEyZmMxNzllMmU3Mjk4YWM0NjU1MWZiOWYgbGVnYWN5LXRydW5rCiszMDAxNyAwZTZlMzlmYjljZDczMmFkNmRkMDFjODg0MDIxZDQwMjVlNjVkM2Y5IGxlZ2FjeS10cnVuaworMzAwMTggOTEwZmI2NmMzYjgxY2JjZTNiNjU4Y2EyZmIyYjYxOTUxYmQ5OGE1ZCBsZWdhY3ktdHJ1bmsKKzMwMDE5IGU0MjczMmUyODliOWE0MTZkY2M2NjZmNGQzZTZkOWM4YTM0YzdkODQgbGVnYWN5LXRydW5rCiszMDAyMCA1ODQ0MGQwYjliNGVhNmM3YzZiY2M4MmQ5ZDJlY2I1NTJhZTI5ZjA2IGxlZ2FjeS10cnVuaworMzAwMjEgOTc1NDgyZDVlYjVjZTc5NGQ1MjEzZTQ4MjhiOTUwNjhlNTdlZjNhOCBsZWdhY3ktdHJ1bmsKKzMwMDIyIDk5NzBkNzc5ODBhMGUyZmI5MzljOTA5OWFiNzM0MDU0MzliYzQ0NDMgbGVnYWN5LXRydW5rCiszMDAyMyA4YTc1YzY2YmZhMTRkZTRiYTcyYWNjNWEwNDQ5ZWY5ZmE0NjAwYzI4IGxlZ2FjeS10cnVuaworMzAwMjQgMDljN2VkMWI3YTg3MzlkODI3OTY3MjI4YzYwMTRkZDc4ZGM3NjE0MyBsZWdhY3ktdHJ1bmsKKzMwMDI1IDY4N2I0YjE2NTI2OGM3NTlmZDQ3N2UyODhlYjg1NTBiYjYyMjBhOTYgcmVsZWFzZTIyLW1haW50CiszMDAyNiA2NzkxMmQ4Mzc5OWY3M2MwY2U5NTcxNjRiOTAxZDI0ZDA2ZGJkOGFiIGxlZ2FjeS10cnVuaworMzAwMjcgOGIzNjAxYTYyMzM2MzMyZGUyNGIwNmIzNGJmZjQ1N2U5NTg2NmUyNyBsZWdhY3ktdHJ1bmsKKzMwMDI4IGI5YzkxMmUyYzNjMDA2M2RjOTBiNTQ1NTQwNTFiY2NhYTg4MTg0ZDcgbGVnYWN5LXRydW5rCiszMDAyOSAwYzk5NWNkMDcwMjY3NzE5NjAzZmE3MTNkOTVjZWE0OTNjZmYyYzFmIGxlZ2FjeS10cnVuaworMzAwMzAgNGU2YWMyZmU2OGYwYmNhOGUzZjE5MDYwOWFhOGYwMzc5MWY4NmI3ZCByZWxlYXNlMjItbWFpbnQKKzMwMDMxIGM4ODRhNmM0N2UwNjBlOGIxZmYwMzAzOWVlNTRiOTU2MGNkZjM5YzIgcmVsZWFzZTIyLW1haW50CiszMDAzMiA0YmViZjFhMTkzMTljNDE1Y2U5M2MzZGQ3YzAxNDM4ZTQwZjZkNzdlIGxlZ2FjeS10cnVuaworMzAwMzMgYTM2ZGZmZDc1MzAwOWI4ZWYzZWU5MmEzZDgxMjcwYTU5N2UyZjg4NiByZWxlYXNlMjItbWFpbnQKKzMwMDM0IDI0MmFkNWM1OTJjYzJhZmRhODVkYTBiYzI5M2ExZWFkNDJiOWRiODQgbGVnYWN5LXRydW5rCiszMDAzNSA0YmU2MmRjOWEzZTdkNzQ5MjYwYzQzMTQ4YzcyN2RmNTc1ZDA3OGFlIGxlZ2FjeS10cnVuaworMzAwMzYgNzAxYjc5N2JiZGM4ZmI0NDYwZDBlMzUzMmNjMGMxNDMxMjJhNTY2OSBsZWdhY3ktdHJ1bmsKKzMwMDM3IDBkYmY5OGVlMTE4ZTI2OTUzYjYxNzFjNGRkYjlhODRiYTQ1ZWJjODkgbGVnYWN5LXRydW5rCiszMDAzOCA4Zjc0M2ViZTZjNjYzMmIwMGEzY2IyZWYxMzdjYzY3NDJmZGVkNmE4IHJlbGVhc2UyMi1tYWludAorMzAwMzkgMTJiYzRhM2U0NWFmOGEyNGMxYjhlY2ZlYjg2ZGI4NWRkNzJiNzM0OCBsZWdhY3ktdHJ1bmsKKzMwMDQwIDg1MWM2MjkyMDVkMmYzZmFlMzJhODQ0NDk4OTM0OGQ2ZTA5ODk4NTkgbGVnYWN5LXRydW5rCiszMDA0MSBiNTY2YmU4YmZjMjNjNzkwMjY0ZGUwYzhiZDI1MWQzNTcxZGE0NGM2IGxlZ2FjeS10cnVuaworMzAwNDIgZmE2NWY5NGRjNGNkYmM3NDU5MGY1ODA4NzUwMWJkNDFiZDFlMTU0YyBsZWdhY3ktdHJ1bmsKKzMwMDQzIGE5ZjZjMDA2YWE0NTg4NjkwOTZjNDM4ZjUzMWZlZmNjZTRiNTg4ZDcgbGVnYWN5LXRydW5rCiszMDA0NCA3MTVlMjg4OGYzNzdmYjkyZWQyMTNmYzQ1OWNhZGJjYWQwNjQ4NzY4IHJlbGVhc2UyMi1tYWludAorMzAwNDUgMDYwMWE5MDU1OGZkYmFmMzllY2JkNzg2ZWFiNjlmODZiNTE1NjM0OSBsZWdhY3ktdHJ1bmsKKzMwMDQ2IDM0MmMzNGM0MzhhMjYwOGExNTU0NjVmYTJhZTQ4MzYwNGM2ZWE1ZTggcmVsZWFzZTIyLW1haW50CiszMDA0NyA4MmI5ZjVjN2QwMWExNDY2MjdmZWU2OGY0YWJhNGY1YWJhZGY4MWE1IGxlZ2FjeS10cnVuaworMzAwNDggMmFiYTFhYzQ3NDRjOTY3OTM5NTUyZmVlOGRiZGI1N2YwMDI1ZGU4MCBsZWdhY3ktdHJ1bmsKKzMwMDQ5IGNiOGNmYWRmNzVhMjdiZjhiNTNlM2EwNjhiMDc5OGExZTk1OGE1OTIgbGVnYWN5LXRydW5rCiszMDA1MCBkNzU1ZDQyOTJmM2ZmYjEyZmI4MTdjNzAzZTIyNjdmYzc5ZDZlMzUwIGxlZ2FjeS10cnVuaworMzAwNTEgMjllOGRlNTk3NTZhNDViNjJlZGZjYjg4MjY4YjUwZDkxMGY3YWM0OSByZWxlYXNlMjItbWFpbnQKKzMwMDUyIDFkOWUzMGMwNWNkZTRjYjI2OWFjMTVkZGVjNjE3YWRlMDRiZDdiN2UgbGVnYWN5LXRydW5rCiszMDA1MyA5M2I1Y2E5NDIzZWIyNzk1YmQ3YTMxODEzMzExM2I5NTdmZDcwYTUyIGxlZ2FjeS10cnVuaworMzAwNTQgN2FlOWMzNmNiY2I2NmE3MTliZWNhODAzNDkwZjBiODI3MmVhM2ZlMiBsZWdhY3ktdHJ1bmsKKzMwMDU1IDQwNTIzOWE3ZTBkOGJjOTQ4OGM3Yjg2YmMxYWMyYmViMTY1NTFhNWMgbGVnYWN5LXRydW5rCiszMDA1NiA4Y2E4MDg0M2E2NzE2MTc1OTk3MjkwZTk2YWRhMDJjYWQ5NzQzMWNiIGxlZ2FjeS10cnVuaworMzAwNTcgZTg5NDBkNGNkOGNhZTdhZTM2ZmNmYmZmZTY2NDczZTNkZWE4YjE2ZSBsZWdhY3ktdHJ1bmsKKzMwMDU4IGQ0Yjc2ODE3YzllNjNjNjUxMDNmN2M0MzNlOTM3MTU3M2ZhYjI2MGEgbGVnYWN5LXRydW5rCiszMDA1OSA5MjA2YjAwNGYxNTJjNDNkNWExZWRmYzJkMjNiMmYwZjU0YWJhZDU0IGxlZ2FjeS10cnVuaworMzAwNjAgOTUyNjg3ZWE5Y2IxMmQ5OGQ2NjAxZTRjODAyY2Q3MzVjNGExNjlhNyBsZWdhY3ktdHJ1bmsKKzMwMDYxIDg5OTFmNzg4MTdjNzkwMDRhMGM4MTczZmM5NGNiMTYyZDYzMTljMTkgbGVnYWN5LXRydW5rCiszMDA2MiA0ZTk0YWEwNzI3Njg2MjA1NWY0NTQ5YjJiOTY2YzlkMTZlODY0ZDBmIGxlZ2FjeS10cnVuaworMzAwNjMgM2Y0MzgzYTA0YjYyNTRiMzZhMmUzMzAyZjc3ZDhiZDc3OTAzNTNlZSBsZWdhY3ktdHJ1bmsKKzMwMDY0IGU2NDQyNWJiOTRkODlhMzIwYzkwM2JiN2YxMTI5Mjc3MzNiMmVkNWIgbGVnYWN5LXRydW5rCiszMDA2NSA4MTAzMmU5N2JhM2NhMjAwMjFkNWFmOTc5OWYxYjEwMjBkOTI4MTA4IGxlZ2FjeS10cnVuaworMzAwNjYgZjViNGUxNzc0OTYxN2E5NjAxMDU3Nzg1MjQxY2VlNGE2YmQ4MDA3YyBsZWdhY3ktdHJ1bmsKKzMwMDY3IGY5ZDUxNmM2MWU3YjkzMmNmNjVmN2VhOGY3MDU5ODE0OTUxOTUxMzggbGVnYWN5LXRydW5rCiszMDA2OCA2MTVhMjVhNmViNWJhYWM2NjZmYjU0NjU0YmE1M2U5YmE1MDUxYzI3IGxlZ2FjeS10cnVuaworMzAwNjkgYzIzNGY0OGRlMTM4ZjQ5OWIwZDRkOWYzNzRjZTc1MWJlM2I0YTUyOSBsZWdhY3ktdHJ1bmsKKzMwMDcwIDBjNjQ2YmFlZWM1ODIzMjViYjFkOTQwZDNkNjA5MTBiMTZlZDMyNWQgbGVnYWN5LXRydW5rCiszMDA3MSAyMTEwMzg1MDVlNTZjNGViOTczYWJiNTZhMDJlMTIzYTliMzc3MmM0IGxlZ2FjeS10cnVuaworMzAwNzIgMDU2Mzg3NzY3ODMyNTU5ODAxYWI1MDM5OGZjZGIzYWE1YjMzNTZjYSBsZWdhY3ktdHJ1bmsKKzMwMDczIGMzNTc2OGQ3ODgzZTQ4NDdlOWVjNjBiZDliMGI2MmYyOGEyNWEyMzQgbGVnYWN5LXRydW5rCiszMDA3NCAzMDg0YmY4YmQxMWMwYWE2MGEzZjM2MThmMTA0YzhjMDdkZWQyNDM0IGxlZ2FjeS10cnVuaworMzAwNzUgN2RkZWE0ZGZhNTE5ZDNhZDhlNjAyYTk4NGIxZWY3MzIyNzU3MWE2NiBsZWdhY3ktdHJ1bmsKKzMwMDc2IDU2ZGJkOTA3OWExM2VkNmVmNzQxYWY1NjQ3YWJiMjM0NjIwMWFkYjAgbGVnYWN5LXRydW5rCiszMDA3NyBlY2VhODQxMDE3OGUwNjViMTI3NDBmZTMxNzFmNjFmN2Q1ZDJmMTA5IGxlZ2FjeS10cnVuaworMzAwNzggNzViZmMyNGZkNzQ4NTBkMTdlOTUyMzI1YWI1NWRkNWNjNzU2YTYwMCBsZWdhY3ktdHJ1bmsKKzMwMDc5IGNjMDVjMmM4NjYwZTBjNjhhY2NiYzU2YmQ4ZTY4ODcyZGU1NWYxNjkgbGVnYWN5LXRydW5rCiszMDA4MCBjMTYzZWQxN2Y4YmEzODVhYTg3YzAzNDkyYzU0Y2Q3YTBlNTE2ZGNmIGxlZ2FjeS10cnVuaworMzAwODEgYmZiMjY2NGNkYjFiZTg3YzAxZDYxZGQ0OGIwODUyMjFhY2Y2MTAzNyBsZWdhY3ktdHJ1bmsKKzMwMDgyIGFmNTExOWJlMjIxZjQzOTk5M2YzY2Q0MmJjODJjMzVlYTgyZTE0MTkgbGVnYWN5LXRydW5rCiszMDA4MyAzNzhjZTAyMGQ5ZTY4YzY3NWY0NjZlMTJlYjJhNGU1NWNkMGUyOGJiIGxlZ2FjeS10cnVuaworMzAwODQgOWRiMzk2YmNlNGU3NWYyMDViNzQzMDJlZjM4ZGZjNDE2NDFhMTYyMyBsZWdhY3ktdHJ1bmsKKzMwMDg1IGUzOWU3NGFlYTJmYjhhNzM0MTRkOWZkYzVkNjRlMGU3ZTU5Y2U4MWIgbGVnYWN5LXRydW5rCiszMDA4NiAxNGY1M2I2ZDdmNThiMjA0YjZkYzM4YmU1OGY5YmUzYjNhNjU0YzNiIGxlZ2FjeS10cnVuaworMzAwODcgMmZhYjBiNjQ4OGI1MTBhYzkzNjMyOThmNTJjZTEwNTA1NGIyNWEzNSBsZWdhY3ktdHJ1bmsKKzMwMDg4IDc0ZDFhZDYxZjg0M2NiMmZlNGU4ZTJiYzAzOGNiODc1ZmY2YjRhM2EgbGVnYWN5LXRydW5rCiszMDA4OSA4NzcxOTkzYzlhYWNhZGE0MGZiODEyMmM0MDM1OTJjNjhhNTJkYjRjIGxlZ2FjeS10cnVuaworMzAwOTAgOTdmODM1NDJmOGVlZmFhZTFkZjQxYmM0ZTk1NzlkYjkxZDRhZjAxMyBsZWdhY3ktdHJ1bmsKKzMwMDkxIDI4YmMyZDNhZjkxZGI2ODlkNDA4MDE4Mjc1YzhmNjIzMjU2NmI4MTQgbGVnYWN5LXRydW5rCiszMDA5MiAyYzdiZGJiNTBlNzYyOGNhNTAzMTNkYmQxYTA1ZGVlZDAwOGYyOTBhIGxlZ2FjeS10cnVuaworMzAwOTMgMDI3ODUyNDhlMDBhNmY0NGM3ZjE1NmIwZWQyOTgxMWQyYzE0MjE3ZCBsZWdhY3ktdHJ1bmsKKzMwMDk0IDIwZTA3NTVmMzU1NDFkNjllZTY0OTc3MTkxM2U5NjA3YjA5MThjZTEgbGVnYWN5LXRydW5rCiszMDA5NSAzYmU0ZjVkMzc3ZDhiMmM1NGE3NjU4OThiZTg1NGI4YjA4Yzk1ZDg0IGxlZ2FjeS10cnVuaworMzAwOTYgOWU3NTFlZWU4MWY1MDRlNDUyNWU2NDRiODIwMTRhODQ5NTFlYmFjNyBsZWdhY3ktdHJ1bmsKKzMwMDk3IGI2Mjk5OGY5ODk3M2UzMzFkODFhY2FiNzEyZjQxM2UyMWYxMmYyMTYgbGVnYWN5LXRydW5rCiszMDA5OCBjYjkzZDkyODdiNGVhZWM0ZGYzMGU4NjRmNDEyOTM5OTBhM2QwNGU4IGxlZ2FjeS10cnVuaworMzAwOTkgN2QxOTI4NzVhMTJmNzk5MDJhYmYzNjE5ZTBiZGFlODU2NWQyNjRkYSBsZWdhY3ktdHJ1bmsKKzMwMTAwIDE5NTA3YTFkMDI1NDhlYmE5MmQ0ZDlhNGNlMWU5M2I3NDEwYmM2YmEgbGVnYWN5LXRydW5rCiszMDEwMSA4MDk2ZGNjN2FmNjViYmI2MTAzY2Y2ZGY0N2IxNjJkZTFjMDY0Y2Y1IGxlZ2FjeS10cnVuaworMzAxMDIgNjM3YjEwYjUyZTAyZTY3ZjM0MzYxZGNiMGFhMTQwY2FmNzk0MDI2ZSBsZWdhY3ktdHJ1bmsKKzMwMTAzIGJhMTU3OGJlNTcwNmVkNWU5NWRiMTczNGM4YWMwMGM4YjdlNWRlNTYgbGVnYWN5LXRydW5rCiszMDEwNCBlNDFlZTJiOGU3M2RlYWNlZjZjZjFlNjE3NzRhZTY1YjZlMzIyYThiIGxlZ2FjeS10cnVuaworMzAxMDUgN2JhYmRhZWE3ZDE5ZDdmM2ExYjJhMWQ4YjllMjk1MTBlMDI1M2ViNyBsZWdhY3ktdHJ1bmsKKzMwMTA2IDhkZmMwZmM0YzE0YjUxMDAxMDIyMGI1MWVmODI0NWI1OWE3MTZiNGIgbGVnYWN5LXRydW5rCiszMDEwNyA5ODE2NDY2NmQyYTg5NzJhNDc1ZjI5MzFlMzdiNjJhOWFhMDQ1NmJjIGxlZ2FjeS10cnVuaworMzAxMDggNTlkZDkyNTdiYzAzMTZmNmFjNzY1YzVlMjA4MWE0Y2UyNzc5ZThmMiBsZWdhY3ktdHJ1bmsKKzMwMTA5IGQ3ZDUyNWUzMGNjMDIwZjYxNThkZjA1ZmJkZTg3YWY2YzVkZmNkZDEgbGVnYWN5LXRydW5rCiszMDExMCA4OTBhYTkzZGQ5YzM4ZTczMjY4YzQxODM0OWQ1YmJlNjAyMWRmYWUwIGxlZ2FjeS10cnVuaworMzAxMTEgYjBiZjM2MDQyNDRmZDU5Y2QzZGNjN2E3NmRiMDMwOGQ5M2ViNzJkOCBsZWdhY3ktdHJ1bmsKKzMwMTEyIGZkNDU1ZGY1NWIxMzViYjUzM2RiOGI4YTE2ZDJhMWUxMWI1ZDczM2UgbGVnYWN5LXRydW5rCiszMDExMyA5NmI4YzhhZTcyNjJlZGQ2OGVlOGZiOGJlMzhjODAzNzIyZWUwMmQ3IGxlZ2FjeS10cnVuaworMzAxMTQgYzY5YjhlNjFlNjk1YmQxZTg5ZDhmNDA0NDNlOTRmOGJjOTc2MzIxYiBsZWdhY3ktdHJ1bmsKKzMwMTE1IDM0Mjk5NTU3MjRiMjc5MjJkNmE3YWVlNTRlYTJiYjg0NzViMDE5NTMgbGVnYWN5LXRydW5rCiszMDExNiBmZDZiZTg3ZTVjMjk3ZTU4YmI3MDNmNDA2MDMwZTk4YWY4MTE4ZDZjIGxlZ2FjeS10cnVuaworMzAxMTcgMGZmNDczNjJiYjgxMTRhMDQ2ZTc5MGE0MGY4OTgyNTBkMWU5ZjM4ZCBsZWdhY3ktdHJ1bmsKKzMwMTE4IGJiNmVhMDc5MDk0NzlhNjNkNjczYzcwY2NiZTQ4OWMyNzk0Mzg1NTcgbGVnYWN5LXRydW5rCiszMDExOSBlNzgzY2RmYTBiNDE5YTFiNDA0YjBlZmJhMzhhNWE2ZWU2YjJmMDk3IGxlZ2FjeS10cnVuaworMzAxMjAgZDIzMDIzMzlhOGFkNzg0MjM0Y2M2NWE2ZTg5YTg4MTBkNTM3YjlhOSBsZWdhY3ktdHJ1bmsKKzMwMTIxIDAyYmE0NjYzY2FkMjEyN2E2MGFlNmIwYTJmZjhmYTJjNmQyNjhmNDAgbGVnYWN5LXRydW5rCiszMDEyMiA0MTE4OGUzODljNjE0NGYyYzFlOTM4OGEzMDkzZWRhOGM0OWM1NjJmIGxlZ2FjeS10cnVuaworMzAxMjMgZDE3NmNiZmQzNzY1NjAwZWFhMzk1Nzc1OWY0NTE4MWQ5ZjZlYmIxYSBsZWdhY3ktdHJ1bmsKKzMwMTI0IDkyNjdkZmZmZjMyZDMxZDNlMTY3MGZiMmNkNTZmZTlmOWJhZjFmNzcgbGVnYWN5LXRydW5rCiszMDEyNSBmODgzZWQ3YjkzYzg2OGRiMTJlZTc0NDQzODg1ZmMxMzg1ZjU0ZjRiIGxlZ2FjeS10cnVuaworMzAxMjYgNmVmYTgyMTZkYjZhODkyODI3YTYxZmFkNjI3M2I3OGUyMzQwMGMxYSBsZWdhY3ktdHJ1bmsKKzMwMTI3IDdiMWQxMDdlNjNhZTZmNzZhNWU1MjAwNmU3YTM4ZmQ3MTUzOGE0ZWMgbGVnYWN5LXRydW5rCiszMDEyOCBjYWEyNDVhZjc3ODY0MThkNTNhZjgwNWI0MzA2MDA5MDVkN2JlZWFmIGxlZ2FjeS10cnVuaworMzAxMjkgNmUyYzJmMTIyMWU1MzUyOGI2Y2JjOWU0NDdjYjFhMGZkZDBkYmI2ZCBsZWdhY3ktdHJ1bmsKKzMwMTMwIDQ4MzRmODM2ODAzNjM4NmQ3Y2YyZDAzYTQ4ZmY5MTQ2YzljOTFlZmUgbGVnYWN5LXRydW5rCiszMDEzMSBhODAwMDE1ZTdjZjJhNmRiMDhiNjc2MzNmNmQwYzAyMDUxN2M4OTc3IGxlZ2FjeS10cnVuaworMzAxMzIgNjFiM2QxNzlmODY4ZTc0MTU2OWMyOTY0YWMxYzFiNmE0MDQxMDFjMCBsZWdhY3ktdHJ1bmsKKzMwMTMzIGYzNTZmY2I3MGVhZTU1ZDM3MzcxZmVmZjA1OTIzMzNkYTc4Zjk3NzkgbGVnYWN5LXRydW5rCiszMDEzNCBiN2JmMzhkNDQ1OThmNTU4OWMwOTQzZTg1YWJkN2JjYmVmNGM3NTQ3IGxlZ2FjeS10cnVuaworMzAxMzUgNjNkN2I1ZTM5NmZiODlkMWVlOGNmZDc2ODc2MGRhYjY3MTJkZGJkOCBsZWdhY3ktdHJ1bmsKKzMwMTM2IDQwZjhiNjQ4ZTc2NTliNzkxNTQwNzFkMjY0MDJhMjMzZDc5NzcyZmIgbGVnYWN5LXRydW5rCiszMDEzNyBkOTllMzhiYjZkY2QzNWJiYWFiZTI3YTFiN2VmNGYzYWNiZjI2YmZkIGxlZ2FjeS10cnVuaworMzAxMzggZjgzOGJjOTA1NmNjMzc5ZDU5YzJiMmZmZWU1YzAzMGUxMzE4NjA2MSBsZWdhY3ktdHJ1bmsKKzMwMTM5IGIxMmUzMjZiNGVhMjQ3ZjRjNTc1MTdjODE2N2ExMGYxZGJiMjg3MmIgbGVnYWN5LXRydW5rCiszMDE0MCBlOGRjMWEwZDZmNGQ0ZDEwYTQwZGY3NTRiOTVkMjkwMmFhNDJkN2NkIGxlZ2FjeS10cnVuaworMzAxNDEgMzM4ZTAyNWZkZThiNTE2ZThlYzliYmVkNTIyMmRlZDM5YTVlOWU5MSBsZWdhY3ktdHJ1bmsKKzMwMTQyIGZlMmQ0MjIzODViMWZlZTY2Zjk5ODdhYjZlMGE5OTIyMWJjMDE2ZTUgbGVnYWN5LXRydW5rCiszMDE0MyBjYjA2YmZjODg3N2IyNDliMmNmOWZmZDk1NmVjNjNkMGZlMWZlZTllIGxlZ2FjeS10cnVuaworMzAxNDQgOThkMTE4NTViNDZjY2VlZjgzNDNiZDdmNGYxNTRiMzMyOTg2OGIyMyBsZWdhY3ktdHJ1bmsKKzMwMTQ1IGY3NjcxNzcwN2E2ZDdhMDkyYzJmNDAyYjBmZWM2YmJiMTkyM2E2ZGUgbGVnYWN5LXRydW5rCiszMDE0NiAzNzNkMGE4ZWQ2YmU2NGE1ZDFmMWZkZjRlZTA5ZWM4N2EzYTI5NDViIGxlZ2FjeS10cnVuaworMzAxNDcgZWQyOGI5NzUyZjhkMmFiZjhkZTU0Zjc3NGIyZGFiZmM1YTAzN2QwZSBsZWdhY3ktdHJ1bmsKKzMwMTQ4IDEzMTIyOTc4ODdhM2Y3ZTA2ZWE5YjNjZThjZDFkYzdhMjVkNDdjMzggbGVnYWN5LXRydW5rCiszMDE0OSAzMDBmOTI2ZjJiM2ViNThmZDQ5ZjA0MWUzYzRkMjNiMDFhNzk2YmFmIGxlZ2FjeS10cnVuaworMzAxNTAgOGRkMjVhNmY1OTEzOTA0YzdkYTgzMjM2ZjdhMTc0ZDZlNDQ0ZjliMSBsZWdhY3ktdHJ1bmsKKzMwMTUxIDViNzE1Y2FkMzRkMDgyNWRjMTgzMThlYTFkYmQ0ZTkxZmY3NzA4ZDcgbGVnYWN5LXRydW5rCiszMDE1MiBjN2VjOGFkMDIzNGZhZjRkMjE5NzUxNTA3YjU1M2RkMWYxZWViYzM2IGxlZ2FjeS10cnVuaworMzAxNTMgYmM5MDU2ZDg0N2VmN2Q0NmZhZTU5NTRkYmE1ZWY3ZTI5NjBiNGZkYyBsZWdhY3ktdHJ1bmsKKzMwMTU0IGY3ZDhkNDllOGY1ZGUyN2NiM2MxZTc5MDE2MjhjMGU2NmU1MjM4MTkgbGVnYWN5LXRydW5rCiszMDE1NSA0M2I1NGMyYmM0ZTYwMjA1ZGUwNWFhZDc3MDI1MzBmMGIyZDQ4OGNjIGxlZ2FjeS10cnVuaworMzAxNTYgNzhkODcyY2QwNjRjMmVkYzQ5MGNkOWM2OTBhODdjNTVlMzQzZjI5MCBsZWdhY3ktdHJ1bmsKKzMwMTU3IGFiNTBhMjFiODdhZWExMmRmMTgxMWEwYWU0ZjVhYmQ4MTFlMzQ1ZGEgcmVsZWFzZTIyLW1haW50CiszMDE1OCBiYzY2NjJiYTNhNzc1NWJiYTU2OGZhMjJjZmZkZDNlMTdlMjlhYmFmIHJlbGVhc2UyMi1tYWludAorMzAxNTkgNTc5MTAxOWI2ZTRlOGUyYmVlYWM0ZDRmYWMxNmViMDU0ZDljOGJkZSBsZWdhY3ktdHJ1bmsKKzMwMTYwIGMxMWE2ZTFjZWRlMGRlMThlMTVjNDFiYTk2NWQ0ZjliMjYxM2RmMmYgbGVnYWN5LXRydW5rCiszMDE2MSA2MDU5ZTQxYmQ3N2EzZTU3OTNhODVjNzYzNGNkZmNmNTdkNzk2YThiIGxlZ2FjeS10cnVuaworMzAxNjIgYTk5NzRhNDhhNGQ2Y2Y5YWNjMGY1MjJhM2E3NGJmNjViMzZkZGFiMiBsZWdhY3ktdHJ1bmsKKzMwMTYzIGEyMGNiNWFiYWI2Yjc4ZjVhNWNjZmIzYWNhZDhlMDcyMTY0Nzg3NDMgbGVnYWN5LXRydW5rCiszMDE2NCBhZDNmNjZlN2ZiMTA0MjAxM2E5NDFhMWYwZmVjNDVmZjJlNDBmNzQzIGxlZ2FjeS10cnVuaworMzAxNjUgNmIzOTA1NDhjNjk4MDA0MGI4MDIxZmRjZTBlM2U4NDgxYjMwMDdkZCBsZWdhY3ktdHJ1bmsKKzMwMTY2IGM3NGI2OWFiNDc0MmFiODQ4NDc0ZmNmNTc4ZWNkY2E5MjY4MGIzZWUgbGVnYWN5LXRydW5rCiszMDE2NyAyMzE4ZjRiYjBiYzVjZDg1YmVlNzRkYjBlMjVjMjBlODIxYmNkYjI4IGxlZ2FjeS10cnVuaworMzAxNjggMmUwZGM5ZTA4MjIyODk2YTM0MjU4NDMwYTlhYzAwM2UyZTgxNWViOSBsZWdhY3ktdHJ1bmsKKzMwMTY5IDM2Y2QyNjQxZTgyNjc0Y2ZjNDJhOWUwODdiMGYwYTg2MzdjYTE1MmMgbGVnYWN5LXRydW5rCiszMDE3MCA0MTczZTQzZWY0MGNjZTY2ZjYzZGRkYWNmMWRjMDcyM2QwODVlZjRiIGxlZ2FjeS10cnVuaworMzAxNzEgOTc1MzMzZDQwYmY4MzJhNDAyYTA2YmZhOTY2MmE2NmFiYTA5ODAxNSBsZWdhY3ktdHJ1bmsKKzMwMTcyIGM0Mjg2YTZhYjAwYzllMzViOWM2YWMyNGNlYTk3YTJkYWRhODIxYWQgbGVnYWN5LXRydW5rCiszMDE3MyA0OWNlZWUwMjZkNjYzZTIwODlhNDQ3ZDFhMjQzMzMwOWM1NDk1OTUxIGxlZ2FjeS10cnVuaworMzAxNzQgNTFlNzQzMjFhZDNkNjA3M2RiMzlmNDAwOTdjZmJjMjg3MmY2ZTg5OCBsZWdhY3ktdHJ1bmsKKzMwMTc1IGEyMjNlMjU1NDE5MDFjZTc3NjhjNmNlZjVlZDQzMTljOTY5YTcyMTggbGVnYWN5LXRydW5rCiszMDE3NiBhZjY2MGNhYjFjYmU5MTFkZTljZWZlZGEwYjQ3ZGQ5MWE3NjkyYzQwIGxlZ2FjeS10cnVuaworMzAxNzcgZTQwNGJiZWZmMDgzNzFiMzVjYzYxZjU1MTdmYjY0NjRmZWYxYjM0MyBsZWdhY3ktdHJ1bmsKKzMwMTc4IDNlZDQ3YjA3ODUwODE5ZDFkYWY1MzNjN2ZiZTE2MDA5NmQ0NTQ2M2YgbGVnYWN5LXRydW5rCiszMDE3OSA0NWFiMzExMjdiZjkyMmI5OWE1NDI5ZTljZDgxNjMxNTY0OTM0ZDE4IGxlZ2FjeS10cnVuaworMzAxODAgMTAxZmUzMmY1NmZmZWE1NDA4YTgwMjhmNzIyZGQyNjUzZDU3MWZkOSBsZWdhY3ktdHJ1bmsKKzMwMTgxIGJmZTM4OTYxY2E0MmM4ODZkNTFkMzcxOGFmOThlOTUxMWMxMDE3NTMgbGVnYWN5LXRydW5rCiszMDE4MiBmOTFkNzhlMTljODY2ZjllNjhkYTVlZDhmYWZkMWIxODkyMWZlNDk2IGxlZ2FjeS10cnVuaworMzAxODMgMmVkMzRmMDFjODFjYTEyYTdlM2Y3MDBiMWMzYTg5MDA3OWM0NjIwNiBsZWdhY3ktdHJ1bmsKKzMwMTg0IGQ2NDIxNDY5NDA4M2JlYmQ0ZDI4NGRjOWMwZDdiZDRiNjM1NWZiMjggbGVnYWN5LXRydW5rCiszMDE4NSAxZTE3MGE5NWI2NGZkZWZiOGZlMTYxYTliMDEwNDFiZmExODQ1YmE4IGxlZ2FjeS10cnVuaworMzAxODYgMzU5M2YyYjkxZDdkNjA1ZTVjNDU4MDhlODM0OGU4MmMxYjZkYjU5MiBsZWdhY3ktdHJ1bmsKKzMwMTg3IDg5MzE3ZDkzZjYzOTczOWUxNjYyYzYyZmNmMjY0NGJlNDc1MWQxNmQgbGVnYWN5LXRydW5rCiszMDE4OCBkMzQ4YjE3Y2VhYWQ2OTM2M2Y5ODZjYzBmNjI3YWFiNzE4ZDJjYmQ1IGxlZ2FjeS10cnVuaworMzAxODkgZDkzOWFkYmNhNzc0ZjAwZGI5ZjRiMjBjODNkMTFhMjQ0NzVjNzI1YiBsZWdhY3ktdHJ1bmsKKzMwMTkwIDA0YjNhOWY2YmU0MWY0ZTQyZTcwMTQ4YjI1NzA5MzBjZmNjNGE2YjMgbGVnYWN5LXRydW5rCiszMDE5MSBlYWI2ZDdjODAzNDE5MTc5ZDIwMjE5MGI5Y2EzYjlhNjRjM2E4NmJiIGxlZ2FjeS10cnVuaworMzAxOTIgMmY1MjNhZTkwZTA2MGM4N2IzZTU2YTJiMzQyNGM0ZjYyYzJjMzA5MCBsZWdhY3ktdHJ1bmsKKzMwMTkzIGU4MjMyNjk5NjQ4MWIyMTA0MDM4YTYwOTM2NDJiMDM4NmUwYWY3N2UgbGVnYWN5LXRydW5rCiszMDE5NCBhMzYwMGM0ZWNjOGJmMmMyMmFiZTQ5YzZjMTQ1MDMzOWRlNzRhNDc0IGxlZ2FjeS10cnVuaworMzAxOTUgZjU1ZjVlMWUzMGJjOTI1NzU5N2EzMDQ1MDk5YmYxM2NhYjUwNTY2ZiBsZWdhY3ktdHJ1bmsKKzMwMTk2IGRmY2MyMDU3YTc1NWFlN2M2ZjlkY2I4MDgwZGVhZTNkZTA1MWU1ZDIgbGVnYWN5LXRydW5rCiszMDE5NyA1Mzg0NDdjOWQ1NDNkYjJiNDA1MzRmMmE0YmQ1Mzk1NzU3NGYyYTk1IGxlZ2FjeS10cnVuaworMzAxOTggYTEyZTE3Mjc4NTBhZjliMDYxNWZjZDlmZDQ0Y2QzNTQwMjc5MTUzNyBsZWdhY3ktdHJ1bmsKKzMwMTk5IGNmZDVhNjgyOTM3ZTBjNDM2NDk4NGFlNmFiNTgzNWFiZjBiM2ViNGUgbGVnYWN5LXRydW5rCiszMDIwMCA5MjRjNGYyMmJhYzc5NDkxY2M5YTlmODIxNmFkMWE3N2M2OWNkMmIzIGxlZ2FjeS10cnVuaworMzAyMDEgYTU0MzYzZWE2OTQ2MDU2OTFhMzMwNzRiMmExYWU5MTE3YzQ5ZDhkZCBsZWdhY3ktdHJ1bmsKKzMwMjAyIDkwMWU0N2NjOGNhY2M4MjBmMzU1MjNlNWMxNjEwZGU5NWVmNzAwZDcgbGVnYWN5LXRydW5rCiszMDIwMyA5NjZiODI3OWQxZmFkODE0NGJlMzdiMWM5NTAzNTdmYzg4YmRlMTJiIGxlZ2FjeS10cnVuaworMzAyMDQgNDk2Nzc5MDQ3MmRiZDNlYzVmYThiYzAyZTAyZWE4Y2QzNzlmNTdmMyBsZWdhY3ktdHJ1bmsKKzMwMjA1IGM3YzJiMjIyYmI4YWU4ZDRjNmZmNWMyODI0YzhmMmM0MzBmYWVhM2UgbGVnYWN5LXRydW5rCiszMDIwNiA1ZmJhNTFmMzcyOWIyZGRmNTg1ZjNhOTkyZTkxMmI4NGFiOTg4YTZhIGxlZ2FjeS10cnVuaworMzAyMDcgNDFiZDM3YmVmM2M3NzNiZWI1MjNkYzA5NzdlNzEyZDdiOGMzOTczNiBsZWdhY3ktdHJ1bmsKKzMwMjA4IDliNGMwMTRiM2EyMThlNzZhOWQ5NzYwYzdkNDU1ZjQ0NmE3ZmE0NDYgbGVnYWN5LXRydW5rCiszMDIwOSA1NzNlNDgyZWRlYzFhNTgzNjkxNmMyZWMxYTBiZTk0NGM1ZDFjOGVkIGxlZ2FjeS10cnVuaworMzAyMTAgYTAzY2U1ZDhmMjk3NTRmNzZjNmZkNjhjNjVlMzJjMzgyNjE1OTVjMiBsZWdhY3ktdHJ1bmsKKzMwMjExIDcwOWY5MDU0MTU4NTIxODc0ODA3ZjZhN2UwMTJlYmI5MTIxNzJkNTMgbGVnYWN5LXRydW5rCiszMDIxMiBkOGZkYTQ4MThiZmQ1ZjU2YWE1MjA1N2JlYmVmNTAxNjBhZWRiMjkwIGxlZ2FjeS10cnVuaworMzAyMTMgMTZhZmY3MDc3ZTRiZWU0YWMwOTcwYWFhZDE0NGM1ODQwMTIxYWVkOSBsZWdhY3ktdHJ1bmsKKzMwMjE0IDJiNDZkNzI5MmYyNzc0MzBjZmZjMzhjNGIzNmFhOTY5ZDVlY2M1Y2MgbGVnYWN5LXRydW5rCiszMDIxNSA2ZjFmODQyMDNlY2YwYjFhNTY1NTA3YmRkMDNjOGRhODVhYmNhY2VlIGxlZ2FjeS10cnVuaworMzAyMTYgNzhlODU3ZTlkZDQ3NjkwNTVmNDg4MWQzZThmYjk5MTMxYzQ4NmQyNiBsZWdhY3ktdHJ1bmsKKzMwMjE3IGM2NWU4Y2I5MWY0YzM2ZDlkZjhiOWRmZDdhYThjN2I0ZjYzYjZiOGYgbGVnYWN5LXRydW5rCiszMDIxOCA3MmNmMDg5ZDYzNGExOTg0MzQ5MTI3MzM2MjI1YzFiYmY0ZTk5MDA5IGxlZ2FjeS10cnVuaworMzAyMTkgY2FkZmNlNjZkODYxOWE2YmMzNTc5ZDZhMjJhZjhiN2E1NmMyNDZmOCBsZWdhY3ktdHJ1bmsKKzMwMjIwIDJmM2Q2Yjc5ZjExYmQzYzRkYmQxMGNhZGNiMzgxZmJkNDVmMWM5OTMgbGVnYWN5LXRydW5rCiszMDIyMSBkMDUyMTEyNzMxYThlMjViZjE3MjFiMWY1MWMxZmU2OWE4NTk0OGYwIGxlZ2FjeS10cnVuaworMzAyMjIgYjBhY2Y1ZGUzNDIxY2UwZjZjYTkwNDFiZDc4ZTJjY2FjMzkzZTUxOCBsZWdhY3ktdHJ1bmsKKzMwMjIzIGMxYzhiZGM0ZTNkYmRjZjBiOWJkMDIyYThmODQ4ODhmZTUxMWIwN2QgbGVnYWN5LXRydW5rCiszMDIyNCAwNjU4NjQwNGVjNGNkYTMwMjBkMjY5ZTVjN2IyMTNlNzlmNzY2ZWI4IGxlZ2FjeS10cnVuaworMzAyMjUgMzM2OTY4ODIxZGNiY2UxYWE4ZDA2ZDAxZDRkODc3N2RhNTllMTI0ZiBsZWdhY3ktdHJ1bmsKKzMwMjI2IGRiOWZjYTE0NTA1ODRiNTNhM2U5MDAwNTkzZGQ5NDI3MTA5ZDg0MjkgbGVnYWN5LXRydW5rCiszMDIyNyA2MGIzODlhNGRjMDg1NTAxYWU0NTU2NzNiZjkxOWYzNjUxZWNhY2YyIGxlZ2FjeS10cnVuaworMzAyMjggYjllNDViODI4YWUxMWEwZTU1Y2ViZWRlNmI1MDJhOWI1YjhkMzRhNSBsZWdhY3ktdHJ1bmsKKzMwMjI5IDY1YWNlYzljYmU2OTIyN2U1MmZkNmMzNzAwNTUwOGM2MTU1NGFkYzYgbGVnYWN5LXRydW5rCiszMDIzMCAxNjI4OGIwNTRmYzNmMTMzMGRiNzhhNzdiMjU1N2U4YzUzMGUzMzA4IHJlbGVhc2UyMi1tYWludAorMzAyMzEgN2MxNWJmNzcyNmIyNGU1MjI1MDBlNDZlMDAyZWNlMjU3Y2FlNjYwOCBsZWdhY3ktdHJ1bmsKKzMwMjMyIDhjM2VmNTI0ZmFhMDY3ZmRiODYzN2FjMTU5NWMxMWYyNTVmYWM5YmUgbGVnYWN5LXRydW5rCiszMDIzMyA5NWJjMGMwNTIwMzQ1MDg3ZDMwNTIxMzgzNmMyNDhhNGY0ZTQ0MjU0IGxlZ2FjeS10cnVuaworMzAyMzQgY2NmMGIwMjdiNTg1NmQ1N2JmMzZiOGQzNjE3ZTMxZDM5MDY3ZDNiNCBsZWdhY3ktdHJ1bmsKKzMwMjM1IDdmZDFiZjIwYTBjMGU5Y2JhNTE3ZjJmY2QzNjkwZGIwNWFiYzBkMGIgbGVnYWN5LXRydW5rCiszMDIzNiBjMTI3MmYzZjI4ZjUxNzliMjMzZDNjNmUzN2MwMDM2NGU2MTZjYzFjIGxlZ2FjeS10cnVuaworMzAyMzcgZWNjMjdhMWMzM2NhNzk4OTUyZTEyZGVjMzM4MDBjMmExZWZkY2IzNCBsZWdhY3ktdHJ1bmsKKzMwMjM4IDYyMDA5NmZkNTU2NGMzNmQwMzc2NjNlZGJmOTc0ZGNiNDBjOTg1ZTAgbGVnYWN5LXRydW5rCiszMDIzOSBjNjA5Y2Q0OTA2ZmI0YWVkYWMzY2FhNTQ0YTI4MjcxMjJmZTIzZTA4IGxlZ2FjeS10cnVuaworMzAyNDAgNDlkMDIyYjVmZDY0MDUxOTBmOTU2NmY2YWJjNWM2ZGQ2ZWEzM2M4MSBsZWdhY3ktdHJ1bmsKKzMwMjQxIDRjOWZlNDkwNWU4ZmEwNmIyN2Q1OTI1N2U3OTNkNjRmZTIyMDQ4YzUgbGVnYWN5LXRydW5rCiszMDI0MiA2YjMxYjI2ZTQxOGRkYzg0NTllMjZlNGE3NzVlOGFhOTg1MGQwYjVmIGxlZ2FjeS10cnVuaworMzAyNDMgMDk1NDQwYjk3NWExYzg3MDU4ZmY5NzNmNjE2ZDk1NmE0NzExZDM5YiBsZWdhY3ktdHJ1bmsKKzMwMjQ0IGFmMjE3Y2NhM2JmYzdjMTM0OGQ4NDg2OWJkMzI5MThkNDI1ODRmZDMgbGVnYWN5LXRydW5rCiszMDI0NSBhZDI2M2QyNjgyNTU0ODAyNDgwOWU4NjJjMWMyZDFkODEzYmNhNTI3IGxlZ2FjeS10cnVuaworMzAyNDYgMzQ2YTA3MjcwZTg3ZGQ2NDljOGIzYzIwOGE2MjA5YmEzZmFmYzA4YiBsZWdhY3ktdHJ1bmsKKzMwMjQ3IGFlZjNhMDNhNzlmMTBlMTc3YWUwZDdjYjU2ZDFlYzY0YWY1ZTMwNTcgbGVnYWN5LXRydW5rCiszMDI0OCA4YWE3NTZlNWFjY2M4NWZjY2M5YjE1NmZhN2Q4Yzc0YWYyNDY3ZGNmIGxlZ2FjeS10cnVuaworMzAyNDkgZmM3ZmRlYzNmYjg2M2QyYzkxMjkzYmFhZDYzOTgyYWUwYmNjZTQwMSBsZWdhY3ktdHJ1bmsKKzMwMjUwIDI0MGZkYmVmOGM2MGMzNmEwYjg4YThkMTY0ZGZiNmNiN2I5YWRkYjcgbGVnYWN5LXRydW5rCiszMDI1MSAwZjE0MDVhY2U0MzdlOTI2YzliODQ1MjJlZjJkYWQ1OGNjMmIyMTk2IGxlZ2FjeS10cnVuaworMzAyNTIgODlkZDc0ZjdhZTMyNmMwZWUzMmU0MjA0YmViYWUwYTNhMWE3OTZiNyBsZWdhY3ktdHJ1bmsKKzMwMjUzIGQxNjA4MTZiOTFlNTgzZDIzMGRiYzhkMDQ4NGM1MjQ1OWVkOTY4MzkgbGVnYWN5LXRydW5rCiszMDI1NCBmODVjYjA4OTU1MzVkZTc2OGE2MGQ5YmNlZTJmMzM3OThmOTRiMWQwIGxlZ2FjeS10cnVuaworMzAyNTUgYmI0ZGYwMDAwYjZkMWFjNGU3NzFmMzdhNTUxMjE1NWE2MTlkMmIzMSBsZWdhY3ktdHJ1bmsKKzMwMjU2IDQ0ZDc0NjhkNmRiNmUyMzM5MThiZWRmODA5MGYxODk4MzM3ZDI2MDUgbGVnYWN5LXRydW5rCiszMDI1NyA5MmE0MDYxMTVlN2NkMzQxNjY2YmEyNTA2NWYwZWUyMmQ4OGJlYzRjIHJlbGVhc2UyMi1tYWludAorMzAyNTggNWVmZTZiMGFjMGU2YmNjMjBhNTYwYWI4ZjMwMGRmNTBiMjU4MjdhYyByZWxlYXNlMjItbWFpbnQKKzMwMjU5IGM1NWU2ZTYwMWI5OThkNzJiODlhNTZiODBkZGIzYmViZTk2M2U2MTggbGVnYWN5LXRydW5rCiszMDI2MCBiYzdmODkxM2Y1Y2E4NjZjYWU4YTIxZGJmNzFmMmY5Y2FlZTRmNDcxIHJlbGVhc2UyMi1tYWludAorMzAyNjEgMzAwMTM0MjliYjg0NTllM2I4MDY0MDczNjliY2JiMTQwMGViM2ZiZiBsZWdhY3ktdHJ1bmsKKzMwMjYyIDhlMjc1MTJjYzE3ZGRjYjdkNDdiNzE3YzViYzc0YTNmNjYzMWRkOWQgcmVsZWFzZTIyLW1haW50CiszMDI2MyAwYjM0ZjUxZWFiNGVhNDg3YmExYzAxY2U5OTQxMzQ2ZDZhNzBlZWExIGxlZ2FjeS10cnVuaworMzAyNjQgN2M1MTk2ZjAxNTI0YjllOTdjMTgyMjY4YzY2ZDZhN2VlOTc0NzEzMCBsZWdhY3ktdHJ1bmsKKzMwMjY1IDJmMjg0MzYwNjBjNDU2NTRiYjg1ODFmY2MwNzUxNGNhMmM1OWUwYTUgbGVnYWN5LXRydW5rCiszMDI2NiAxNDM5MjJhNDBmYWM2ZjdkZDUwMDQ1NDU4Njk1MGE4NWUyYzMxOWRkIGxlZ2FjeS10cnVuaworMzAyNjcgZmJjODVhYWEyNjBiYTFhYzRkNTg5YTdhNTRiMjY5NzU1MTViNzAwOCBsZWdhY3ktdHJ1bmsKKzMwMjY4IDg5YzljNmM0MDVlZjhjNDE1ZGU4N2YwMTM2NjA2ZDA0NTYwYjY2ZTkgbGVnYWN5LXRydW5rCiszMDI2OSA1OGJkNzEwMGVlMTU3ZjE3Yjg1ZDk0NDgwMWFjMWVjMmZlNTRmY2MxIGxlZ2FjeS10cnVuaworMzAyNzAgODE2YjhkZGNjZmUxNjUxNjE0ZDE2NDAxODk5OWNkNjgzYWM5MzkxZSBsZWdhY3ktdHJ1bmsKKzMwMjcxIGRiOTM4OGYzN2Q4YzQ3MWYxZmQ1NGQ4YzA3Njc3Njg2MTk1YWY3ODcgbGVnYWN5LXRydW5rCiszMDI3MiAwNjg2ODM3NmFhMjhkMzlmYzZlOWVhMjg5ZDkxNTU2ZTk3OTdhY2I0IGxlZ2FjeS10cnVuaworMzAyNzMgYTJkNDAyZTdjZDhhZGQzMmE3OGJmYWQyNWIyMmFlNzNkZjRlOGZkOCBsZWdhY3ktdHJ1bmsKKzMwMjc0IGNmNzM2NjNjZmY1OWVhNDE2M2Q4ZjEyOTUxMzNjZTg4MDYyMWRjZTAgbGVnYWN5LXRydW5rCiszMDI3NSA0N2U3YzcwZTg0MWZlMzMwMjdjNGViOWE5NmM2OWRlZGFkY2M2ZmY1IGxlZ2FjeS10cnVuaworMzAyNzYgMGYwNjE1NmM4ZTAzNzY2ZjlmZjRmZDE4OTc1ODg3ZWVjZjNlMWQzYiBsZWdhY3ktdHJ1bmsKKzMwMjc3IDUwN2FhOTZhMTI4ZmZkYWQ5NDE3YmE1NGU5ZWVlYmM1ZTI1NGFlY2EgbGVnYWN5LXRydW5rCiszMDI3OCBiMmI0Nzk3MDUyYzZmZGNkY2JmZWZjNjFiOTQzM2E5NGNjMzIxYjVhIGxlZ2FjeS10cnVuaworMzAyNzkgMjk5NjIxZWNhOWFkNTMxMmVlNDJmMDNhZjc1Mjk1N2ZmZDAxNTZlZCBsZWdhY3ktdHJ1bmsKKzMwMjgwIDMwYTc3Mzg5NDM4MThiN2FkNTAyMjZjMGJiMGRlOGE2ODQ3MTI2YzggbGVnYWN5LXRydW5rCiszMDI4MSA4MmQ4YjVjNmFjNGE3ZmMyZWU3ZDllZTBjODI5MDk2NmEwYTQyZWQzIGxlZ2FjeS10cnVuaworMzAyODIgMjU4NWQ0NTk2ZDkwM2IwYTEwODBlOGFiNWE0M2Y2NjZkNDM4MTRjNSBsZWdhY3ktdHJ1bmsKKzMwMjgzIGZmYzFlOWU1ZmY5YTcyNDdjZWE2YjU2N2E1MmJmODlhYWVhNTgzNzUgbGVnYWN5LXRydW5rCiszMDI4NCBiMjA0YjRhNzJiNGVlOGJhZjA0NTBjOWE1YjMyZmIzOGMxNGNiMDlhIGxlZ2FjeS10cnVuaworMzAyODUgMjMxOWQxM2Q1NGY1NzUxNTUwNThmNTcxMDMyMDczMGNjMjc1OTgwNCBsZWdhY3ktdHJ1bmsKKzMwMjg2IDdmODFkMTZlMmM1ZDdhYTM4NGNlYzE5ZjFlMzcyNDhkMmExMjAwYjIgbGVnYWN5LXRydW5rCiszMDI4NyA4NThlZTExNzE0YTYzMjQyN2UzM2M4N2JjNmY4MWEyOTE2YTU4MGY5IGxlZ2FjeS10cnVuaworMzAyODggOWQwZTYyYzlhMTI4ZDdhMTQ3MTYyYjNiNTY3YTZmYzFhNmU2YzJiOCBsZWdhY3ktdHJ1bmsKKzMwMjg5IGVkZjMwNGU2MGNjNjFlZDliNmU0MTFlOTI4ZGI4MDk1YjUxMWU5MWMgbGVnYWN5LXRydW5rCiszMDI5MCAxNzg4NDQ5ODg4MTJmMmRmMDYyOGMyM2YyMDViYmRjNjlkNTNjOTViIGxlZ2FjeS10cnVuaworMzAyOTEgMjI1MTE5NWEzZGQxZmNlNzE0ZjUxYmY4ZGJlMTdjNThhZWQ3MzBiZiBsZWdhY3ktdHJ1bmsKKzMwMjkyIDdjOGFmMTk3OWU3ODg1Yjc3ODk5NWU3Mzg0NTAyOTRkNzdkMjZlNjcgbGVnYWN5LXRydW5rCiszMDI5MyA4ZWNjZmFlMDRiYjRmNmZlNjYxOTQxYzgyNzg0YjU4MWMyMDc4ODZkIGxlZ2FjeS10cnVuaworMzAyOTQgNjkzMjc5NDgxN2MyZDFkZjExNmE5NGVmNjMzN2MyNGYzZDU2NDE3YyBsZWdhY3ktdHJ1bmsKKzMwMjk1IDBjODVhOTQ3ZTJjMDAwZDY2N2I5MzRiMzJiMmJjZjBlYTI0NjRlYTYgcmVsZWFzZTIyLW1haW50CiszMDI5NiBlMDk0YTAzYTgwZmY0NWVmNmNmMzRjMWMyYzhiNThjYmY4ZjA3NjAzIGxlZ2FjeS10cnVuaworMzAyOTcgNTdhMDBkYjczMWZjZjFmMmNjZDM0ZDgyNzIxN2JhOTE0YTE3MTVlMyBsZWdhY3ktdHJ1bmsKKzMwMjk4IDZiYmJlNjdkMWVhZjcxNzMxOWRmN2VlYzZiOTc5NmJiZWQ4OTdhY2MgbGVnYWN5LXRydW5rCiszMDI5OSBkNmY0ODNmYzllMDJlM2RlZDdiZmU4ZmRkMDNhODJjODBkMzAyN2M2IGxlZ2FjeS10cnVuaworMzAzMDAgZmVhOTJlN2VjNjdhZTM1MDU1OTA5NzI2MDlkMWRmYjY4MDUxM2UyNCBsZWdhY3ktdHJ1bmsKKzMwMzAxIDJlMjE5NWZlNmMyOGE3OTRmZmU5YzU2ZDM2ZWMxYzc1MTkzMzMwZWQgbGVnYWN5LXRydW5rCiszMDMwMiBmYjM2ZDliNTBkZjU4Yzg3MWY5NGFlYTFiOWI3ZmNiMmE4ZDk2NDI3IGxlZ2FjeS10cnVuaworMzAzMDMgZTE1Mzk2MWY5NjFmMmY2YmE3MTc3N2QyMjEwMjk0NTZhZTE1ZDk1YSBsZWdhY3ktdHJ1bmsKKzMwMzA0IDNjMzJhOTRiMGIxNzYyNjI5YWI5YjFiYzBhZjJkYTZkZDg4ODE4NDggbGVnYWN5LXRydW5rCiszMDMwNSAxM2Q1OWRiZmI4ZDQ0YWU2NGJiYWRlYmI0MDExNjViYjVkMmE0NDRlIGxlZ2FjeS10cnVuaworMzAzMDYgN2Q3YTAxYmZjYWFmYjg2OTc1ZGJlNjdkMGQ1Mjg5MDhkMjlmOTQ5NCBsZWdhY3ktdHJ1bmsKKzMwMzA3IGY2NGM5NjkyMjcwOGE1MTA0YmZiMDZlOGRlN2E0ZjZkZTczOWIzYWEgbGVnYWN5LXRydW5rCiszMDMwOCBmNGIxYmVlZDY0MDUyZDBiM2M1MWI3NmQyNWFkODU0YTMzNjkxZDRkIGxlZ2FjeS10cnVuaworMzAzMDkgOWU0MDkxMDdhZWVhYTFmM2MzMWI4MzBhYTdmYmJhNDc4ODc2OGQyMyBsZWdhY3ktdHJ1bmsKKzMwMzEwIGJiMTU0NmI0NjAxYmQwZDJmYmUxN2QxMTA3NzhiYTFjNzE3NzQ1NGYgbGVnYWN5LXRydW5rCiszMDMxMSA1OGQ3NWEzYzhhZmVhN2VhNGRmMzEzMTc3M2Y3ZTQ2MWYzYmIwN2MxIGxlZ2FjeS10cnVuaworMzAzMTIgM2UxYmQxMzdkM2MyYjg4YTU4MjRlMWY1ZGE2M2I3MTNiMjFhZGIyZCBsZWdhY3ktdHJ1bmsKKzMwMzEzIDVjY2RlOGExNTI2YTQwZDkyZGM1NGM4ZGI3OWI2N2VjM2YxMDk5YzUgbGVnYWN5LXRydW5rCiszMDMxNCA3OWM5YTA3YjI4OTY1OTI4NmYxNDM1MWZkYTM4MjQxODlkYTk2YTg0IGxlZ2FjeS10cnVuaworMzAzMTUgMTViYjY3NmYyZThjMGYyYzJmOGQ4NDhlNTcxMjNlMTMxZGJkNWFhNSBsZWdhY3ktdHJ1bmsKKzMwMzE2IDAwMDc1ZjFlZjg2NmJmNDRhYzdkODI0MGY0ZTFiOTBjYjk1M2MzMzYgbGVnYWN5LXRydW5rCiszMDMxNyBjNDRkOTk0YjM5ZTU0MjY5NjI0NGM1ODZlYWFhZDA1YWJiYTFhYTdjIGxlZ2FjeS10cnVuaworMzAzMTggNzg2Nzk4ZTg2NDY5Y2I4MDhjMzAwOGNjNWU0NjE5ZGExMzcyZWY4YSBsZWdhY3ktdHJ1bmsKKzMwMzE5IDM3ZWYwMTc2NDZjNDYxOGEzZmMwYmNhZmEwMDMyOGNkZWI5NjFiYzQgbGVnYWN5LXRydW5rCiszMDMyMCBkMmIwMzYyODE0MDMxM2I4OGExZDAyMzQ2ZjY2OTEzMzQyNDA1MmU5IGxlZ2FjeS10cnVuaworMzAzMjEgYTliNTIyZTU0NWNmNmYwODNlMDljZmI3OWE5Yzg1ZGVkNjEyZWJjMCBsZWdhY3ktdHJ1bmsKKzMwMzIyIDU0MTllZjRhNGQ3MGIwYzVmZGEyOWE4NDhhZTFhZDcyMWRhOTg3M2IgbGVnYWN5LXRydW5rCiszMDMyMyA2NzNkY2I5YjUxY2UyYmRmMTJkZGEzNTEyZWRjMjJiZjRmY2I5ZTAzIGxlZ2FjeS10cnVuaworMzAzMjQgZmM1MTY5YWE0MWNlZjg1Yjk2OTdjMzk0MmZkZjk1NTMyNWI2NTUwMSBsZWdhY3ktdHJ1bmsKKzMwMzI1IGVhNzU5MTljNzY5ZGI2NWRiMmY0OWI1OThlMDQzMTdmNWUyNmE4ODMgbGVnYWN5LXRydW5rCiszMDMyNiA4NjVjNTliNWJmZDcxMjgyOGYzNGNhZDVhMzc3ZDhjZTAwOTNmNTg1IGxlZ2FjeS10cnVuaworMzAzMjcgYmNhNTQwOWI3NmVjZmI5MzQyZDI0YmFhMTIzMjFkOTVjODY5ZWIzOSBsZWdhY3ktdHJ1bmsKKzMwMzI4IDgwMzMwMjU3MzE1MjdiZTRhYjM0MDk4OGU4YWZiMmQ2OWE0MGQ2NjAgbGVnYWN5LXRydW5rCiszMDMyOSA1Zjc0ZTA0MDAxMmQ2OWVmODM1ZTJjNjZlZjVhN2E3M2E2NmNmZDUwIGxlZ2FjeS10cnVuaworMzAzMzAgM2VlNTRmYmZlODQ2ZDg5ZWRmMGU1YWRkM2E5ZTRiMDE5MjU5ZWVmNyBsZWdhY3ktdHJ1bmsKKzMwMzMxIDJjZThjZjI4NGIxNTBjMDgxODE0NTQyMDhmNDVmNTIzY2JiYWE0NjAgbGVnYWN5LXRydW5rCiszMDMzMiBkYWE0NThiMjgzODUxYmZkM2M5NGZlZTE5YTk0OGIxZWE3NDk0YWMzIGxlZ2FjeS10cnVuaworMzAzMzMgNjYwOTk2YTI4ZWU4YzRlNmIxNjY5NWYxZTE3OWE4ZGMzNjU3YjRiOCBsZWdhY3ktdHJ1bmsKKzMwMzM0IDcwNDg0MmYwNWIwOTFlNThkM2U5M2Y0YmUzNTY5ZmIwOTFmMTllY2UgbGVnYWN5LXRydW5rCiszMDMzNSA2Y2Y2Mzc3NjdjZTI0ZDJjM2E4MTFjY2Q2YjIwZjA2MTgyODBhM2ZlIGxlZ2FjeS10cnVuaworMzAzMzYgYjRjYTViOWJhOTMzNTUyOGFhNjhiY2NhYWMwOTgyOWQ0MTExNmNhNCBsZWdhY3ktdHJ1bmsKKzMwMzM3IDI3NTJlOWFhZTk3YmVkNjAxZGFlOGZjZmNlYjViNTE2MTUyNTIxZDQgbGVnYWN5LXRydW5rCiszMDMzOCAzY2Y1YTc4NTJhMmYzZmQ0ZjBiMGE2ZGVlMjY2ZWY5OTA2OWJiOThiIGxlZ2FjeS10cnVuaworMzAzMzkgM2ExMzAwNDcyOTAxNjNhMDU5NjZkM2FkYWMyNDAxNDE3NzkzZmFiOSBsZWdhY3ktdHJ1bmsKKzMwMzQwIDAzNjkxOTlhMjY1YWY4NDFmZmExNjE0YWIzMTU5MTk3ZWY1ZDRiYzggbGVnYWN5LXRydW5rCiszMDM0MSAwMjllZGE5MzdiYjQ3NDNmMGUxNzE2MDNkYTYzMGZhNDhlN2YyNTg2IGxlZ2FjeS10cnVuaworMzAzNDIgODNmOGJkNmFlODExNzIyMGQyYjEyZmQwNzg3MTYzOWNiNWRkZmIxYSBsZWdhY3ktdHJ1bmsKKzMwMzQzIGFhY2E4YTNiMjNjZDA1ZDIyMjgzMDk4ZjAxOTc2ZjZjZmYzMWVjNTAgbGVnYWN5LXRydW5rCiszMDM0NCBhNmYwYmM2ZThiMzhkZTVmNzcwNjM0YzQwNDliZTU2MWJhZmUyZTY2IGxlZ2FjeS10cnVuaworMzAzNDUgZjMwNWE1NzhiMzk0MGVjODNjYjg2Zjc3ZWJlYmY3OWY5N2I4ZWVhNCBsZWdhY3ktdHJ1bmsKKzMwMzQ2IDQ4YWZiOGUxNDIwYmI4NmY5YzlhZWZkOGZhYzRhZWNiYThiYmE5NGIgbGVnYWN5LXRydW5rCiszMDM0NyA0MjI3OWEwMjEyNWUyODQ2MWVhNDc0ZDYwNjRmYzAwNDQzMGFhY2Q4IGxlZ2FjeS10cnVuaworMzAzNDggMjNhOTgwZWI4YWZiYjM1YTI5MzNlMmU4YmVlMzZkYmE2OTI1MWQ0NyBsZWdhY3ktdHJ1bmsKKzMwMzQ5IDFlYWIyNmY3MTcxOTlkN2NhMjgzNjhkN2FjNGZhMjQ0MzhjNjZjMGUgbGVnYWN5LXRydW5rCiszMDM1MCBmNDgzZWZjYTIyNGM2Y2ZkYjM1N2UwZjU3ZDQ4Y2U3NTYzM2ZhMzJjIGxlZ2FjeS10cnVuaworMzAzNTEgM2QxMDYwZGI4MDYyOGJjNWU5NDlmZDM3M2UyODZjZTllMGMzNzRlMiBsZWdhY3ktdHJ1bmsKKzMwMzUyIDI2ZGY2MDEzYjMwM2Q0YWJkZTRkZjMxZDVmYTBlZTY0ZDUwNmE3OTAgbGVnYWN5LXRydW5rCiszMDM1MyBkMTc3ZGQwY2E4ZjcwZTQxYmUwMWM3ZmZhMGUzMzQ1ZDllODUwMDk0IGxlZ2FjeS10cnVuaworMzAzNTQgMzU0NjhhZDUwMjJhNzc0NTY5MWQ1MDk1MjNlYzQxOTllNmUzODAxZiBsZWdhY3ktdHJ1bmsKKzMwMzU1IDEyMGFmYmEyZGJmNjQwN2NkNzdiNTZjMTVkMjk2ODVlODExNzM5MGUgbGVnYWN5LXRydW5rCiszMDM1NiBjMjQ5NjA3ZWY1MzVmMTEyODRmN2QzMDU3N2JmZTE4YTQ1MjA5YjI4IGxlZ2FjeS10cnVuaworMzAzNTcgMzFiMWIwNDYwMzAzZDg1ZDc0NzBkYTgwMTlmMjQ3YTdhNjVkZWNiYiBsZWdhY3ktdHJ1bmsKKzMwMzU4IDkwOTM0ZTRjOTFiYTRiY2QyODY2ZTJlZmY3YjNhNjRlOGVjMmQ3ZmYgbGVnYWN5LXRydW5rCiszMDM1OSA2ZWMzODZiNDVlMWZhZWUxNjljYmJlZDdhMzMyNDZkODJiNjFlOGI3IGxlZ2FjeS10cnVuaworMzAzNjAgZDIxOTlmYzE0ZDA2MjRhZDgwZDg2MTI1MzNmYTM0ZTFhYzdjNTgxYiBsZWdhY3ktdHJ1bmsKKzMwMzYxIDIxMzNjZjM1NWJmYzhhMmM5MjUwOTc3YWIwMjNhYzBlMTBlNTI1YTUgbGVnYWN5LXRydW5rCiszMDM2MiBmMGY5YWNjYTQxNjRhYmQ3OGI1ZTFkNjA0YTZkOGUyOWMzYzY2MzE3IGxlZ2FjeS10cnVuaworMzAzNjMgNTRhYWNiODdiZWRhMzAzN2RmYWJmZTNiZjNlNjdmOTAyODAwNmZlZCBsZWdhY3ktdHJ1bmsKKzMwMzY0IGI2MjVmMWJmNzJmOTBkMDRjNDk1MDkzYjQxZDM5YzRlMzY4ZTExNWUgbGVnYWN5LXRydW5rCiszMDM2NSA0NWZjMGU0YjUwODQ1MjI3NWI0NmJhZDkyYjJlNWU3MWMyNDVhNDhlIGxlZ2FjeS10cnVuaworMzAzNjYgYjljMTU5N2Q4MTAyZTQ1Y2E0NWQ4YjNlNmViNmYyMjZiZmY0NGJhOSBsZWdhY3ktdHJ1bmsKKzMwMzY3IDEyNzUzZTdiMTVmN2U4NmJlMTQzNTZlNTRkMTA5Y2YzNjU3OTcxZDYgbGVnYWN5LXRydW5rCiszMDM2OCA4MDUzYmMwYjhiYjU4MWI0Yjg2NzBjYTVmZGNjNmI2NjQ4N2YxYjUxIGxlZ2FjeS10cnVuaworMzAzNjkgYmMyMGU4YjQ2ZGUwZDBhZTdhZWYyNjhlNDQ4OGQ3ODZlMjYyZmMwYiBsZWdhY3ktdHJ1bmsKKzMwMzcwIDk1NTEwZjBhMDYyNDU4NGI0MWJiN2I3NWZhZjg4NjVjODlmY2Y1MWMgbGVnYWN5LXRydW5rCiszMDM3MSAyYTk1YjdkNWZiZGUwZDRjZTcwNzQzMTMwMmI3NjYzMWIwZDAwMGIxIGxlZ2FjeS10cnVuaworMzAzNzIgMTQwNjQ0ZjIyZjY0OGNkZjBiM2QzY2M0Y2I1ZDBlOThkOWU2MDlmYyBsZWdhY3ktdHJ1bmsKKzMwMzczIDBhMGM3NTllZDE2Nzk5YWEyZTA2Y2U5ZjNjOThiZjg0YTQxYjJkNGIgbGVnYWN5LXRydW5rCiszMDM3NCA0Y2JkYmIwYmRkNWQ0YWVjMTAyNWE2YTY4ODY2Yzg0NTlhYmVhMzAyIGxlZ2FjeS10cnVuaworMzAzNzUgM2JjMmFmNDFjMDE2NTc5YThlMWMyYWY0YzNhN2E0MWM3MjM1OTM0YiBsZWdhY3ktdHJ1bmsKKzMwMzc2IDA5NmQxMmRiMjYzNjUyM2NlNWI3NTVmZGMzY2MzOGM1YjcwOGZjNzcgbGVnYWN5LXRydW5rCiszMDM3NyBhNDQ3NGUxNGZhYzk3YjRhNjIyOWEwNWY3NzYyMzAzOWFmZTEyMWU4IGxlZ2FjeS10cnVuaworMzAzNzggMThkNGY3MWY1ZWQ2YTkzNmE0YjA3M2I4NDZkMGRjOTA2OTJkY2I0YiBsZWdhY3ktdHJ1bmsKKzMwMzc5IGQ1YWQyOWE0NzNlMWQ5OTBhMzAxMTQxMGRkYmVlM2M2MmIzZWYwZTEgbGVnYWN5LXRydW5rCiszMDM4MCAyYzUyYWJlZTdkMTA2MmM1MDBlYzI4Y2FkYTcxNTA0MWEyZjRkNTJjIGxlZ2FjeS10cnVuaworMzAzODEgOTdjNWFhODJiM2U5YzE1MjRiYmFmZGQ3NDljYTY1YTcyYTMyMjYyMCBsZWdhY3ktdHJ1bmsKKzMwMzgyIDQwZGI3ODE1OTE3NzYyMGRlMTNhZTliZTAxZGJkNzE2MGU3M2MxOGEgbGVnYWN5LXRydW5rCiszMDM4MyA3ZWE3NjM3MzQxZDBhMTQ3YTRjMzQ2ZWI1OGI1YjNkMjYzM2ExYTJiIGxlZ2FjeS10cnVuaworMzAzODQgNDdlNmFiOGQ1NzUxZDRhMDdmOGM2NjY5ODU2ZDg4OWYzYzMxMTkzOCBsZWdhY3ktdHJ1bmsKKzMwMzg1IGNjYmEzYjY2ZDY3NjY2MWY2ZTE2M2UzMTA5OTE4ZGVkMDRhMzk3M2EgbGVnYWN5LXRydW5rCiszMDM4NiBiY2FjYTM2YTU4M2NjNDU5M2I1ZGVkOTFiNzdmMTBiOTM5NGY5MDllIGxlZ2FjeS10cnVuaworMzAzODcgMDc0OTE5NzE1MzU1YWM4NmUzNzNjODBhNTMzZDdlZTdmNWI3MWE5NyBsZWdhY3ktdHJ1bmsKKzMwMzg4IDY4OGZhNmNkYWI5NDNjNTgwMDQwNTI2OTc4ZGU4MzYzYTY1ZGMyYjIgbGVnYWN5LXRydW5rCiszMDM4OSA4OTk5ZDcyYzJlNmNkZWIxYTYwMGZkMTVkMTk3Y2FhZGM0N2JhYTIxIGxlZ2FjeS10cnVuaworMzAzOTAgMDAzMmRiZWVjMzkxYzE1NzAyMmY4ZDRlNDdmN2RkZjNkN2U0YjUxZiBsZWdhY3ktdHJ1bmsKKzMwMzkxIDdjZGEzNjAzNTY3Zjk2N2FhYjJkYTcxZTNhYzZiNTk5YzQ0ZTAyMGQgbGVnYWN5LXRydW5rCiszMDM5MiBjMjVkN2QyYzE3MTA0MjZjNzY2MTY5MzMzNDFmMWEzMDE5MzY5NTAzIGxlZ2FjeS10cnVuaworMzAzOTMgZmJjZjNjNGI0MjcyZTIxNWZjMmQ3NWY1ZDMxNTdiZDJhODMyN2UxNSBsZWdhY3ktdHJ1bmsKKzMwMzk0IGY1MTYxY2E0ZGQ2ODBkNGZiZTMzYTE5YWFjNzliNjM0MGE2NTQyN2UgbGVnYWN5LXRydW5rCiszMDM5NSBhNDNhMmIxOGI1YzQ4YmZlNmNkN2FlM2EyMTFhMGQyYTEyM2RjOGEwIGxlZ2FjeS10cnVuaworMzAzOTYgMDUwMTZiYjkxNzY2ZmU5ZDFiMTliMTZiNzE3NTI3YzI4NjhiYzNmZiBsZWdhY3ktdHJ1bmsKKzMwMzk3IGI5Mzg0NTIyNmRiNjhkODMyYzJhYTE4NDZkNWEzMTViOWM1Y2Q5MTAgbGVnYWN5LXRydW5rCiszMDM5OCA0MmYxOWE2YzY1NzAxY2RmMzY1MDBlNDcwZTliMGVlMGRiMTRhMjRhIGxlZ2FjeS10cnVuaworMzAzOTkgZmFmOTY1ZDczODI0YmYyNDRlYjY0ZjFmZWEwMjhlZTI2OWEwYmQ3YyBsZWdhY3ktdHJ1bmsKKzMwNDAwIDlkMDU4MGFjYjQ1ZmY0NWVhNzU3MWQ0MzMwYzlmYTZjYmU2MTU3ZTAgbGVnYWN5LXRydW5rCiszMDQwMSBkYmZjM2VmN2QwMDM1MGUwOWU5NTUzZTk1NjQ5NzM2NGI1YjNkZTkwIGxlZ2FjeS10cnVuaworMzA0MDIgMzFhZGVhNDlhNTU4ZjcyOGNlOTMzOTliZWZlYThmNWJjZWIyMTYxZSBsZWdhY3ktdHJ1bmsKKzMwNDAzIDk2NDY4ODcwZDIwNmQ5NGYxYThhNGQ5Y2QwNDMwMTgxOTRhN2QyODAgbGVnYWN5LXRydW5rCiszMDQwNCAzZGIxNjVmMDIxMDc0MzYzYjE2MDhhYWFiMTVjMzU3MDRlZjY2YTY2IGxlZ2FjeS10cnVuaworMzA0MDUgMzNkY2Y0ZmQwZmY5MDNmYmRmZTMwNzZjZTg0YjgyYmQ4YjY5NTRkOCBsZWdhY3ktdHJ1bmsKKzMwNDA2IDI0Y2I2MjIyNTA0MGNlYmIyODJhYmIyNGFjMWMzYWRjMjliOGUwMGQgbGVnYWN5LXRydW5rCiszMDQwNyBmZmE0YWIzNzAzNmYwMTVmZTk5NjQwZDIxNGE5YjA4YzhmMTRhMTBlIGxlZ2FjeS10cnVuaworMzA0MDggMzJlNGM3NzUzNDE2MmM1ZjdhZmNkYTRkNDFkMDFiOGIwMjc3MGNlMiBsZWdhY3ktdHJ1bmsKKzMwNDA5IDZjNTM1ZGNlZGFkMzAzYzEzZTQzNDcyYjlkMGY3OGQyNzgzMTk3M2QgbGVnYWN5LXRydW5rCiszMDQxMCA3OTQ2NmYwNGYxYzU0YjUyYjcyZWQyMWM5ZGE1MjcwOTE1NTVmNjViIGxlZ2FjeS10cnVuaworMzA0MTEgYjkxZDk1ZTliMjQ5YTc5MzM1YTZhNjYwOWMxMWU2YWFmZmFkYWY4YiBsZWdhY3ktdHJ1bmsKKzMwNDEyIGEwODVjYzA0NzY4MTA5NTlkYWNkMGMwNzc3ODhmZTBmNTZmZDE3YzEgbGVnYWN5LXRydW5rCiszMDQxMyA4NDY4ZTNmYzNhMmJjNzFjYzJiNzA4ODZkOTYxNGMxY2MwNDM2MzE4IGxlZ2FjeS10cnVuaworMzA0MTQgM2Q1YWJkM2Q5ZTRiYTgwNTE5NDNmODU1YzQ1YmYwYjUyYjEyNDViNSBsZWdhY3ktdHJ1bmsKKzMwNDE1IGJjMzA1ODQ5NTIyZGY3ODcyOTgyZTcyMGI4MGQzNjUzYjhlZjViYjkgbGVnYWN5LXRydW5rCiszMDQxNiBhODJkOTJmNzg0NzJjNzA3ZTZlN2UxMWM1MGZlZWQ0M2Q1YWFkYTk3IGxlZ2FjeS10cnVuaworMzA0MTcgYmQwYzQwNzE5NTgzNmJkMGYxOTlmYmQ2YmNlMjdjOTZkMzg5YzBlOCBsZWdhY3ktdHJ1bmsKKzMwNDE4IDZlNTQxYTcyYWYxYWU2NTQzNzc0MmQyODQ1NmU3YjkyNDUzMzA3YjYgbGVnYWN5LXRydW5rCiszMDQxOSA1Y2E3MDcyMzYxYmQ5NWEwMGQ0YWVlMTA5OGFkMjM2YjE5MjU0NjljIGxlZ2FjeS10cnVuaworMzA0MjAgNzIzNzIxZWE0MDI1OTZjNDM1ZWU2NmZjNzc1NmYyMTU1NjI3NjE3ZSBsZWdhY3ktdHJ1bmsKKzMwNDIxIDU1MTQxMTQ0ZGFiNWU1MDkxMmIxMDc0NDQwYzViZTdhNDU0Y2UxZTUgbGVnYWN5LXRydW5rCiszMDQyMiBiZWVhNDIxNTI3ODc0M2RhMTFlYWRiNTM5YmNiZWViYTQ4YTcwMzgxIGxlZ2FjeS10cnVuaworMzA0MjMgNTI2NzQyYTc0ZDA2NWIzYjNmZjQzMjZkNmQzM2M3NWI5MTQwZjA3NyBsZWdhY3ktdHJ1bmsKKzMwNDI0IGFjZGIzOWI3MTRiMWVlZTQ4ZDRkYmVjMjMzODFiODM0ZTBhMDIzNTUgbGVnYWN5LXRydW5rCiszMDQyNSAwMmM2ZmQ1Y2Y3NWJjZjU2ZmI0YmVjNzc2YmZlMDE4OTExMGNlMDg3IGxlZ2FjeS10cnVuaworMzA0MjYgYmU3MzJlMjE5ZWQxMDI2N2Q5MDI3ODNiZWU3MzE0ZGIxNGEyNTJkZCBsZWdhY3ktdHJ1bmsKKzMwNDI3IGE1OGNlY2Y1OWIwNjNmNTU1MWM4YjRhMTNjNDU0YzA3YjA0NzBhMmUgbGVnYWN5LXRydW5rCiszMDQyOCA3YjVhN2NmYzE3YTllNTAxN2Y3NTAzZDAzMmFlNWFiYzg1ZTA3NGRjIGxlZ2FjeS10cnVuaworMzA0MjkgOTRiYzgxMmEzYzUyODUxNThlNjBmZTEyNDVlNDE3OWQyMWViOGY3NSBsZWdhY3ktdHJ1bmsKKzMwNDMwIDM1ZmNhYmVmYzlkMmZkMzU2OTU3MjllYTlhZDZiNGNmMmI0YTIzNWUgbGVnYWN5LXRydW5rCiszMDQzMSBmMTU1OTQ2MGI5NTI2MjY5MzJjNDY1MWY3MTFjODU0YTcxYmIyN2FkIGxlZ2FjeS10cnVuaworMzA0MzIgMTYzNTYzY2NiN2Q2MGFkZjg0ZThiNTA2MDRhOWI2NTYzY2VmMTAxOSBsZWdhY3ktdHJ1bmsKKzMwNDMzIDI0MGEyNDAxYzQwNGRlNmFmOTk4M2MyNGNkMDA5NjM0M2M0NWRjMDggbGVnYWN5LXRydW5rCiszMDQzNCAzODkyN2ZkNTY3YjRlNGYyZjkyODhmOGZkYzczNGQzMTc5OTM1YjRiIGxlZ2FjeS10cnVuaworMzA0MzUgYjgyMzY2YmM1NDM4NDI4YTlkOTVkNmMyNGM4ZTc2ZGE1ZTY5YmNkYyBsZWdhY3ktdHJ1bmsKKzMwNDM2IDNjMDQxYjE5ZjFkMzY3N2EzYzM5MWFiYmY1NWI4Yzk0MjM0NWUzN2MgbGVnYWN5LXRydW5rCiszMDQzNyBiOGM3MmU4NmExMmQ0MDcwMGIxYmUwNzQ2NzMyOTQ1ZWI5ZmJlMTAzIGxlZ2FjeS10cnVuaworMzA0MzggMWM1OGZlNWM3NjlmM2MwNmU3MWJlM2IwMDAwYzg3ODkwOWNhMDUyZiBsZWdhY3ktdHJ1bmsKKzMwNDM5IGE1Yzg3OTcyNmIzYTMyMzM3NTE2YmY1YjEwYjFkMWJkMjk0MmFmNWUgbGVnYWN5LXRydW5rCiszMDQ0MCBiOWM0NjJkMjNmM2M2NTIxNGQ0N2QxNmE1Y2I1NGNmNzJiNjQ0MmNmIGxlZ2FjeS10cnVuaworMzA0NDEgYTU3M2ZlZGU4OGUyYjE4ZTRlN2QxZjA3OGJmZmFmOTliZmYwOTBkNyBsZWdhY3ktdHJ1bmsKKzMwNDQyIDVkZjdhMjg0ZWFmNGVkNzcxZjE3NzRjMmIzYjQ2NWNhN2RkNWY5OTcgbGVnYWN5LXRydW5rCiszMDQ0MyBiNzkwZGEwNjcxZjdhNzFlOTAyMGU0MTI4MzQxYjUwYTdiOWUzNjQ0IGxlZ2FjeS10cnVuaworMzA0NDQgNGI0Y2UyNDkwZmUyZWQ3ZWVjNTE5YjZhMmNjZmQ4NjQ5OTkyODJhNCBsZWdhY3ktdHJ1bmsKKzMwNDQ1IDEwMzg5OWNlODhiMmZjYTNlN2YxZTc5NjRiYWExOWVkMWI2OTM3MzAgbGVnYWN5LXRydW5rCiszMDQ0NiBiZjllMDQyNDIzN2Y1MTU2MjJkODA1MGUxYWNhMGZiYjY0MWI5ZDJkIGxlZ2FjeS10cnVuaworMzA0NDcgNzc2ZjI3MGE2ZWE5YzcwYmZlNjdlNDRlNDEzNTRhMTM4ZWIzOTJhNSBsZWdhY3ktdHJ1bmsKKzMwNDQ4IDQ0NDhmZjhiMzIzOTBiZmQ5MjVmNjkzNTNkNWRkYTE3MTViZTEwMjcgbGVnYWN5LXRydW5rCiszMDQ0OSA0YzAzYTRmYWQ3MmVmMjYxNzA3Yjg4MmVjZTQzMTBlMmUwZTg0MWU3IGxlZ2FjeS10cnVuaworMzA0NTAgODQ4NzllMTgzNzczODQ5NDlmYTI5YmNhNjIxZWFiNTUwY2MzOTlmMyBsZWdhY3ktdHJ1bmsKKzMwNDUxIDkwOTk4MDc5YTFhMjM4OTMyNTRkYmJmNTkyZDJhNDhlNmViZDc4ZWYgbGVnYWN5LXRydW5rCiszMDQ1MiA2N2RmMjg5M2E1MGVlODE3N2MxMDI2OTdjNDk0MDliNGJhZGY4NjljIGxlZ2FjeS10cnVuaworMzA0NTMgNzAxYjEwMjlhZjQwNzkwNTUwZWU3ZDQ5OTFiMWZiMWMyYjI3OGM4ZSBsZWdhY3ktdHJ1bmsKKzMwNDU0IDcwZjBmMjViMTM0ZTQyOGMxZDE3ZmI4MmI1Mzc3ZTEyMzdjYTEzZGUgbGVnYWN5LXRydW5rCiszMDQ1NSA3NzRmNzU0ZmQxZmYxNTAzOGZiZTkxMDdhY2FkZTkxNTUyZjIyN2YwIGxlZ2FjeS10cnVuaworMzA0NTYgMzVlNWIwMjFiNzc0NDQ3MjAzZWU3MzQxNmI5YjE5ZGMyZjA5Yzg1YiBsZWdhY3ktdHJ1bmsKKzMwNDU3IDc4NGU3ZmRmOGM1MjQzNDZmZTAzZjUzZGJhYjA1ZjFkMTQzNmY1ODMgbGVnYWN5LXRydW5rCiszMDQ1OCA2OTg5NjBkNTYxZjhkYTU4OThlMGZkYWEyZmMwM2FlZWUxNzIxODIzIGxlZ2FjeS10cnVuaworMzA0NTkgNWIxNTc1OTY4ZjdmYWY4MGU3MDI4MzQxYjFjYjkyNmJmMjRkYzY4NyBsZWdhY3ktdHJ1bmsKKzMwNDYwIDU2NzdlOTgwZTA0N2U0MjQ4ZmZmYTAwNTBiNzcyZjcxZDBhOTNiNDQgbGVnYWN5LXRydW5rCiszMDQ2MiAyYzY3MTY5ZjZlMTNmYmRkMTdiNDc3NmRjNzliYzUyYWVlMjVhZTQ5IGxlZ2FjeS10cnVuaworMzA0NjMgZTAyZGFmNjMwN2ZjOGE4ZWI1ZTAwMjZlOGM3MGRlZTllYzA3Mzg2YyBsZWdhY3ktdHJ1bmsKKzMwNDY0IDU0OWQwN2QwYWVkN2VjYTE5MDI3Yzk2NWNiNzA5MTFhZDNhY2YxZDUgbGVnYWN5LXRydW5rCiszMDQ2NSBmNzIyYTgzMDE0MGZiNDE1ZTVlMjg3M2Q0ZTExMTRmNGQxZWU3OGU0IHIyM2ExLWJyYW5jaAorMzA0NjcgN2UyMzUxYmM2ZTdhNjliZjY4ZGY3MTI1MzUxODZiYzViMDZhYzI3MSBsZWdhY3ktdHJ1bmsKKzMwNDY4IDFjNjVmYTVlNTJjM2Q4MWFiMDFiYThlZjNhMGJkZWQ0YWYzZjZiZGUgcjIzYTEtYnJhbmNoCiszMDQ2OSAxNTAxN2E3OWJhY2RkYWQyN2JiYWFkNGYzOTJiYjRiMDkxMTc3MzE4IHIyM2ExLWJyYW5jaAorMzA0NzAgZDZkY2ZmNGIzNTc0MjM0ODBlNDdhNTU1ZWEwMGJmMzJmMmNlOGYzMiByMjNhMS1icmFuY2gKKzMwNDcxIDJiODAxMTY4MTViNTM1ZGQ5ODAyZDZjMzU5MWE2ZDljYmQ2NGFiOTcgcjIzYTEtYnJhbmNoCiszMDQ3MiA5MmU1NzJlM2NhOWY4YzgzMzlmN2U5NmE5NTZiYTliNzgyYjg4MjZkIGxlZ2FjeS10cnVuaworMzA0NzMgOGE4ZGZmMjUwYmU0MzYyZmExYTY3ZDMxYWQ0ODg3MGI2MDNmMjZmYyBsZWdhY3ktdHJ1bmsKKzMwNDc0IGJjYmQ5NGM2MTBlODIzZjI5NWQxYjc0Mzk5ZWJiNjhiODc4ZmFjNTIgbGVnYWN5LXRydW5rCiszMDQ3NSA3Y2I3M2E3MzJmNzcxZWFhMjM2ZjJkZjQyYjk4Zjg1MjQyZWI5MGFiIHIyM2ExLWJyYW5jaAorMzA0NzUgMDE4MzA3NzY1ZDM0ZGNmNjJkNmQyYWQ2NmJkN2Y3YmRlNTMxZWZhMiByMjNhMS1icmFuY2gKKzMwNDc3IGNmYTEzY2U5ODNiYTJiNzg5NjZjMGVjNzg3MTFjZGY3YzgyMjM2M2YgbGVnYWN5LXRydW5rCiszMDQ3OCA2OTkwNTA1OWM3YmQxODg1OWIzZjhhMjYzY2U4N2VlZWIxZWEyN2UzIGxlZ2FjeS10cnVuaworMzA0NzkgNzQwNzliZTZmM2YxMTRlMTkyMjgzMzUyZjkwMjcxYTc2ZDEwMDNmNSBsZWdhY3ktdHJ1bmsKKzMwNDgwIGNmODFmODI1ZGFhYzkyNmNkNTQ3YTI0MmEwZTU1Y2JlYzQxNTE5YmMgbGVnYWN5LXRydW5rCiszMDQ4MiA0ZTA5MzJhMTEyZjQyYjU1OWI3MzFjOWVkOGY4N2RkOWI2MzE2Y2VkIGxlZ2FjeS10cnVuaworMzA0ODMgOTZlMWFiOGRmODgzODRhZGE3ODMwMjJiODc1Y2I5NzQyZmQ1YWJhNCBsZWdhY3ktdHJ1bmsKKzMwNDg0IDJhODdkOTQ4OTExMmZhMmUzNGFhM2U4NzViNmYyMzYwZWNmZGMyYmUgbGVnYWN5LXRydW5rCiszMDQ4NSAwMGNkMWQ3MTU5YzJiNDUxMzExMjExZWMwZWY5YzlmOTVmNDQyYWJjIGxlZ2FjeS10cnVuaworMzA0ODYgNmNhMWMwZDNlZjE5MzEyMjQ0MTQyNTBhMTIxNzNlY2QzZTY5NTExNiBsZWdhY3ktdHJ1bmsKKzMwNDg3IDhlZDQ3MmU1YmNkNDRkZDMyMWI0MzVmOWJkMTk5MDU1YTA3OWNlZDEgbGVnYWN5LXRydW5rCiszMDQ4OCA4OGRmMjY3ZGI4NTllM2Y0Yjg5ZmQ2ODY0ZDkxYmU0NDMwMTQxOTQ3IGxlZ2FjeS10cnVuaworMzA0ODkgYmRhNDE4NTY3MGNjYjc0OGU4Mzk5YWY2MTkwYzc3OWZhZjE5YjdlZSBsZWdhY3ktdHJ1bmsKKzMwNDkwIDI5M2VkYTNlNjlmNWY1ODIxNGFhYjI5OWNhMDM4OTZkYjE0ZWRjMDIgbGVnYWN5LXRydW5rCiszMDQ5MSBmNTcwODNhMzQxOTY2NGFiNDhlMDk0YzBiNGU3YTNlMTg3ZTBkMTU0IGxlZ2FjeS10cnVuaworMzA0OTIgMWM0MDYwZDllNjg3NGMzNWZjMmI3ZmMzZDBhYWUwYjZiOGY1MTRhMCBsZWdhY3ktdHJ1bmsKKzMwNDkzIGVhNjdjZWE2NzZlOTkzNDViMGRmZWEyNDViYzk0MWFhZDllZTQ4YWIgbGVnYWN5LXRydW5rCiszMDQ5NCBkODVlYWY0Nzg1NTZlZmM2MTNmNmY0Zjg5MDliMGI2Mjc5M2FkMDVlIGxlZ2FjeS10cnVuaworMzA0OTUgODEyMDljMGYwOGEwNTkyNmY3YmQwZTlmOTA1NWFjY2VhZGIwMmQwNSBsZWdhY3ktdHJ1bmsKKzMwNDk2IDQ1NzllODNjNjYzYjcwMmVhMjBiYWIxYTYyMzJhMTExYjViNGFhNzQgbGVnYWN5LXRydW5rCiszMDQ5NyA3MmMzZjczNDdlODhjODk0NDA2ZGVkZGE3ODdhMTZmYWNjNWE5YzYxIGxlZ2FjeS10cnVuaworMzA0OTggMjY4N2E5MDg1NDExZTc4NTdmNjU2MmUwMjI3MDg2MTUzNjBiZDdhYyBsZWdhY3ktdHJ1bmsKKzMwNDk5IDVjNGZhMDRjOWY2MjhkODk5MmMyNTA2NmFiYjRmYzliZWM0NmJlNjYgbGVnYWN5LXRydW5rCiszMDUwMCA2YTVjZmZjNjIzODdkZGFhMDkwYmFjNTMzZWM1MGE4N2M5ZjdiN2ZkIGxlZ2FjeS10cnVuaworMzA1MDEgYzBiM2JiNDg1YmNmODAwMTZjZTg2MGFkZWY1ZGFhZGVkZTRmOTBiYSByZWxlYXNlMjItbWFpbnQKKzMwNTAyIDk3ZGM1MzBkOTBlYjc4NTI2MmQxNTlmOTU5M2RjYWY5M2U3ODA5NjkgbGVnYWN5LXRydW5rCiszMDUwMyA0NzkzMTAxNDliMmVkZTFlNzA5NzIxOTdhNGVhOWY1ODIyZWViMmZjIGxlZ2FjeS10cnVuaworMzA1MDQgZmQ5ZjIwY2UzYmJhMWZjOWMzOGJiMzNjODMwNzA0ZjRiNTIxMjNlNCBsZWdhY3ktdHJ1bmsKKzMwNTA1IDc0MWFhOWQ2ZDhiZWQ3NDA1ZmMzMzFmMzdiYjIzMDBlZDI2M2JmMjcgbGVnYWN5LXRydW5rCiszMDUwNiAwYjNmY2NmYmUyYTI4NzYxZWU0YzU3ODYxYjEyNTAyMGM2YWI0MGU0IGxlZ2FjeS10cnVuaworMzA1MDcgOWVlNGZkMDVkM2NiY2Q1YWQ3ZGFiMzgzM2JiY2Y5MGIyZGMwZjhjMyBsZWdhY3ktdHJ1bmsKKzMwNTA4IGJmYTMyNjEzZGVjOGVjYTBlODE3NjI2Zjk4NGRmZGZmNWM1OGJkNTggbGVnYWN5LXRydW5rCiszMDUwOSA3MjdiY2I4MTFjNTBmOTVmZDk0NWIyZjBlZjQzODkyODk1NmEyYTUxIGxlZ2FjeS10cnVuaworMzA1MTAgZTJjODhjNDUxYzE5YTU0NDRjOTViYzcwOWYzMmJmNTBiNTkzMzQxOCBsZWdhY3ktdHJ1bmsKKzMwNTExIGY0NDFjNGU1YjIzNDY1NjU0NWM4OGZlNTQ2MzE5YjdkOWJiNGE3MzYgbGVnYWN5LXRydW5rCiszMDUxMiAxMDk4Y2NjODRkNjNmODkyZjYyZmFjZTgyMzk1MWQ1YjdiZmFiNDc2IGxlZ2FjeS10cnVuaworMzA1MTMgODA2ZDM2ZTU2YmZhM2UwODAxMWY0OWJiMGIzYmU3NzBmM2Q0YjgwZiByMjNhMS1icmFuY2gKKzMwNTE0IGFkMTJlYTljN2VmZGY0NmI2Mzg5YmYzY2Y2NWU1NWRlOWZkZTVjMTcgcjIzYTEtYnJhbmNoCiszMDUxNSA0NDE0NzA3ZDkzNzYxNmM2YWQ0YjYwYzI2MGEzMzFhOWFmODQ5NTkyIGxlZ2FjeS10cnVuaworMzA1MTYgZTMyNzFlOGIxNGRlZTBmYmUwN2QxYTg1MmMwMGY4MjEzZjdmN2ZmZSBsZWdhY3ktdHJ1bmsKKzMwNTE3IGM0MjlmZTVkZTQxNzM1NjJkNTMwMzFjMGYzODUxNmE0Y2RjYTY4YzYgbGVnYWN5LXRydW5rCiszMDUxOCAzMzhhYzg2ZjQ0MmQ5OWFjMWFiYTc1NDRjNGYxZmY4ZTRjZjljMTRhIGxlZ2FjeS10cnVuaworMzA1MTkgZDI3OWQ3NjNmNDYyNTRlYzVkYzFmYTZkMjVlMjI2N2VhNzI3MjFhOSBsZWdhY3ktdHJ1bmsKKzMwNTIwIGQ1OWI3Y2JjZWFjMWM2Yzk2NTdkMWIzOTFjNDY5YWFlMjJiNmJiMWMgbGVnYWN5LXRydW5rCiszMDUyMSBiMWUyM2MzNTcwN2JlNGMwMTAyYjc1OThiNTQ5NTdkYzliYmI3NTIzIGxlZ2FjeS10cnVuaworMzA1MjIgYjYxYTY2MDIyZDVhNDAxZjRmNjMyNTEwNzEzMDM1MzlmMTRmMzU1OCBsZWdhY3ktdHJ1bmsKKzMwNTIzIDhlY2RkZjRhZDhiMDI4MWQ2OTQ2NmRiODU2Y2ZlMjY2Y2IyYTg0OWEgbGVnYWN5LXRydW5rCiszMDUyNCBkYzMzZDAyNzY0NWE0ZjNkOTBkYTZkMzNmZmEyYjkyYmI5YjU3Mjk4IGxlZ2FjeS10cnVuaworMzA1MjUgOTNiNmEzZjYxMzJkYzgyODczMjMzMTcwMmVjNjBkZDM5ODgxZDg3NyBsZWdhY3ktdHJ1bmsKKzMwNTI2IDQxZjc3MjZlM2U1MTE3YTkxNDQ0ZGQ0MzgwOTE5MTkzZDE1NTgwMzIgbGVnYWN5LXRydW5rCiszMDUyNyBhOTg2NzNiZTIwYzI4MDJlZmE0NWM3NGY1ZDE3NDIyNjI3MDhhNTI4IHIyM2ExLWJyYW5jaAorMzA1MjggNDJmMzNiZDY5YzcyNGNmNGY1ZmE0ZjE4NTAyNWI1ZDI5YTI1NTFlZCByMjNhMS1icmFuY2gKKzMwNTI5IGYwYmRmNGM1OTBlYzQwZjk4MWZlYTRhMjM5MjA1YTM3YzAzMjQzYTYgcjIzYTEtYnJhbmNoCiszMDUzMCBiZTUxMTIwMzExNmYwNmYzMDhjNjc1NmZjODI5N2M0MWQ4YTlkM2JiIHIyM2ExLWJyYW5jaAorMzA1MzEgMTNjOTAzOGZhOTM3Njk5MzhjNjFkN2VkNjJjNjBiMTJmMDU0NTk3MCByMjNhMS1icmFuY2gKKzMwNTMyIGRkNmYxZGY1MjRkZGM3NDAyNDkxYzRhYmY4NGIxMzg0ZDU1NjFhYzIgcjIzYTEtYnJhbmNoCiszMDUzMyA2OGRhZmUxYmMwMTY5YTg2Njc5YWNmMzAyZjUwNDc1ZDE4YzY3MmQ0IHIyM2ExLWJyYW5jaAorMzA1MzQgMDI1OTg1NmMxZTQ3NjEwODI3YzUwZDVlOTVlNTBkYjM5Y2EyN2FmOSByMjNhMS1icmFuY2gKKzMwNTM1IDk5ZGYwZTUyZjYzNDMzMjY1ZTU2N2YyODA1YmJjNDkxZTRkNTZkMGMgbGVnYWN5LXRydW5rCiszMDUzNiAxYWU3ODI0OTMxMzJiOWE0MGU5MDhhZmJhNDUyYzJiMjE2OTI3M2FkIGxlZ2FjeS10cnVuaworMzA1MzcgYjMwZmU0ZGNjNjk3OTg2M2JlNjc2ZWMwOWM2MmZjNGRkZGU3YWJkYSByZWxlYXNlMjItbWFpbnQKKzMwNTM4IDZlMWE3NDM1ZGYyNWQzNTMxNzNkMzYwZGYyMmM2ZGE0MTBjYmM5YzUgbGVnYWN5LXRydW5rCiszMDUzOSBlNjVmZmNiNDM2OTUxOGQ3MmExNWRjODFmNGNjMTBkMTA4MTk3YjJlIHIyM2ExLWJyYW5jaAorMzA1NDAgYWU5ZDhmNTBlNzZhMzYwM2MyZjU1YmUyNmYxN2E1NjU3ODM1NzVhNiByMjNhMS1icmFuY2gKKzMwNTQxIGY5YTU1NTdjOTQ0N2FjYTE2ZGQ2MzgyNTIzYjViYmVmMTczMTE5ZGEgcjIzYTEtYnJhbmNoCiszMDU0MiAwNDFjNTJmNDlkZjIyNzhkZjNiOTJlN2YyZjQwNzU3NDk1ZGYzNDUyIGxlZ2FjeS10cnVuaworMzA1NDMgMTg4NDE2ZmI3YWM1MmQyZWFhNTE4Yjk0NjllMDZjNDJiZmZmNTgxNSBsZWdhY3ktdHJ1bmsKKzMwNTQ0IGViZjcyNjVhYWU0ZWE5MmZjY2VmMzA1ZTBlNjhkMmQxM2M3YmQzMDkgbGVnYWN5LXRydW5rCiszMDU0NSAyMzI4MGE2NDI4OGUzZWExN2E0NDBiNzg4ZDVkMGFmMDIyNWEwNGVjIGxlZ2FjeS10cnVuaworMzA1NDYgNWQ5OTcyNjNiODU5YjkyZjI3NWY3ZWVjMTFmZjM4Mzc4YmE0MzRkMyBsZWdhY3ktdHJ1bmsKKzMwNTQ3IDIzN2ExNDYyMDc4NTliNWQ2NzVmNzczYThmZjgzMzNmZmNjNTE1OTAgbGVnYWN5LXRydW5rCiszMDU0OCA3MzdhNTQ3NjM5NmI2NDE2ODQxZjIwMmEzMDExZDdiZGE4YzlmOGI0IGxlZ2FjeS10cnVuaworMzA1NDkgMjY3ZjQ1YmU5YzAyY2Q0MGJlZWQzNzA0NDhmZjdjMGVjZmNlNjYzZSByMjNhMS1icmFuY2gKKzMwNTUwIDU1NDEyMWZjYmI5ZGNiZmQ2MDM0YjY5ZDJhODAwZGNhMDc4YWY4ZDcgbGVnYWN5LXRydW5rCiszMDU1MSAxY2Q5Yzg1NjQ4NzViODViNTIwN2E0ZDA1OTU4YzM4YzRkNjA5MmI3IGxlZ2FjeS10cnVuaworMzA1NTIgNzBkMmNiMzZmYTE3YTMxZmU3YTVkNmRjZGE2NTI3ZWQyMGFkMjhmNiBsZWdhY3ktdHJ1bmsKKzMwNTUzIDc4MjI3NzA5Y2EwNDRmNzllNGZlMWJkNjU5NjA0N2ZhMzQ2OTg5OGEgbGVnYWN5LXRydW5rCiszMDU1NCBhZjM1Nzk1MTFmODQ2OGZkMjEwMmQ2MmM5M2RkYzQ1NTVkN2M5ZmVkIGxlZ2FjeS10cnVuaworMzA1NTUgOWQwODI5MWNkNDExNjYyMTllYmQxYjUyZmQwZDU4OTBjYzNiODA5NCBsZWdhY3ktdHJ1bmsKKzMwNTU2IDcxNGNkZjA4MDZjMTZmN2E0MjYzNjA0YjBjYTk1Mzc4ZDE2MWU2M2QgbGVnYWN5LXRydW5rCiszMDU1NyBlMzgyZDM5MzMzMWQ1YzEyMWVjN2ZhZmVkODk5YjNmNDgzYWU3NWY2IGxlZ2FjeS10cnVuaworMzA1NTggOTRiOWNmNDI3NGRlMWUwNWY5ZjE2MGEyYmRhZjkzYjMxNjM3MDI5YyBsZWdhY3ktdHJ1bmsKKzMwNTU5IGVlMzRiNjQ5NTJjMGY4YTY3MmIwN2ViYTk3NTY4MGUyMzhhZTM2YWIgbGVnYWN5LXRydW5rCiszMDU2MCBjZDNjNGRmMTliMDM1YjZhZWFhMGQxNGZhMjJlNDI0NmEyMDI0NTBjIGxlZ2FjeS10cnVuaworMzA1NjEgYWZlYjcwYzg3NmFhMzUxNDIxN2I5MTRkMWY4YjRhZGViNTU5YzY2YyBsZWdhY3ktdHJ1bmsKKzMwNTYyIGNmOTAzMDllZmVlZTYyMmRmNjQxYTk2OTA1MDBiMDgzOWFkNzUzYmYgbGVnYWN5LXRydW5rCiszMDU2MyA2OTc3ZTMyMGE3NTZjNDY4NWViY2JiMjE5ZGFlM2Y4ZGQzNzkwMTM1IGxlZ2FjeS10cnVuaworMzA1NjQgZDNiYTdmNGE5Zjg4YWZlNWQ4MjYwZDkwMGUzMDVlNmM5ODU5ODQ0OCBsZWdhY3ktdHJ1bmsKKzMwNTY1IGFhZTk0OTUwNmQyYTdkMzI4MzkzMTZjNThlNjM4YTI1YjJkZTFiNmEgbGVnYWN5LXRydW5rCiszMDU2NiAxNTdhOTVmNDE3ZjNkN2JjY2QwM2YzMGZhMWYzYTA0YTJhNzNiMjdmIGxlZ2FjeS10cnVuaworMzA1NjcgNzkwMWZkOTUwMTdmMDk0NzgzZjIyMWNlYTczYzBmNmIxYzY4ZTRmNyBsZWdhY3ktdHJ1bmsKKzMwNTY4IGNiZGY2MGNjZjU0ZjVkZmM3YmVkMDBjYWRjNzAyNDRjMTVkYmRkMzkgbGVnYWN5LXRydW5rCiszMDU2OSBlYjMyMmVmNjdjOWZlYzUwMTk0MmYzYTIwYTUwMTYwZGU1OWIxMDRiIGxlZ2FjeS10cnVuaworMzA1NzAgY2M1YjJkMGE0YWQxZDg2ZmUyNjk3OGRjOWY0ZThhN2ZiNmY3ZTYzNiBsZWdhY3ktdHJ1bmsKKzMwNTcxIDA2YjNmYTI1ZDlmMWRlM2ZhNzUzZTE3MmY2NzlmYjhjYmY5NzM5ZDkgcjIzYTEtYnJhbmNoCiszMDU3MiAxNzEyZTIwNGFhOTJmMTIwN2YyZTE2ZDdmOGJhYjFkZWExNjM1MWQ1IHIyM2ExLWJyYW5jaAorMzA1NzMgZWY1MzE0ODJiYjM3YjBmYjM4YmYwMTYyYTg2MjdjZGUyMWZmM2QzMSBsZWdhY3ktdHJ1bmsKKzMwNTc0IGU5MjA0NGMwYjhlY2VlODE3NWFhNDY2ZWU1M2EzM2NiYTQ1MzVlMjcgbGVnYWN5LXRydW5rCiszMDU3NSBjMzBmOTcyODc2MDI5NGYyZjg4ZWZlMzVkOWViMzNlYjJjMmQyMGUwIGxlZ2FjeS10cnVuaworMzA1NzYgMTU2NGM2ODM5ZTZiMGViODA1OWFlNGM4MWNkMDIxNTlkYzA5ZGIyNSBsZWdhY3ktdHJ1bmsKKzMwNTc3IDBiYTQ2NjA2ZjBmOTExOGRlY2JhNDBkM2ZmMDgyODBlMjU4ZTc3YWEgbGVnYWN5LXRydW5rCiszMDU3OCBiODY1OTI1ZWY2OGFiNjNmNzQ4ZWVmZDY4Y2Q0MDlkMjI2Yjk4Y2NjIGxlZ2FjeS10cnVuaworMzA1NzkgYzI5YWRhNmMxYzkwNGEyNzQ1ZGE1YTA1MTg2YThhMjhiMDBhMzJlMSBsZWdhY3ktdHJ1bmsKKzMwNTgwIDc1MzMwNmY5YjBhMGUzMzhjOWIxMzYyMmI0ZGVmNTQ1ODYwMWUyMDcgbGVnYWN5LXRydW5rCiszMDU4MSBjMWY0ZTUzYzQyZGQwY2UwNWE0ODMxZGExZGE1NDAwNDMyYjY0NTc2IGxlZ2FjeS10cnVuaworMzA1ODIgOTcyZmVjMjFmMjIzYjcxMzhiYzliZDA3NTViYWMxYzcwOTdhN2M1OSBsZWdhY3ktdHJ1bmsKKzMwNTgzIGE3NGM4ODgzOGE1NWI0MjFmOGJiZTk5MjQ5ZTcyZmUwNzQzYWZkMmYgbGVnYWN5LXRydW5rCiszMDU4NCAyYWUxZDE3NTcyZGE2YThlNzRmY2Y1ZjcwMTE2Y2JlNTVmYTZjNDUxIGxlZ2FjeS10cnVuaworMzA1ODUgMzE5OWU5NzRmNTVhYTNmNmRlNTJmNjkyNGUyMDhkYWJhOTE2MTU3MCBsZWdhY3ktdHJ1bmsKKzMwNTg2IDY0ZThjNjk4NjYxMGMyYjM3ODY0ODA2NGJkZmZkMTRkZGM3MWYyYTMgbGVnYWN5LXRydW5rCiszMDU4NyBkNWUwOWQ0MTJiNTM4ODA2N2ViOTNkYzhmZTE4N2QwYTJmNWFlZjJhIGxlZ2FjeS10cnVuaworMzA1ODggZjcyMjY0MjJjMWQwYTRiNzE0MTZiYTMwNTI1MmIzODBmMTM4YWU0YiBsZWdhY3ktdHJ1bmsKKzMwNTg5IDkwMzUwYjVkMzM5N2M0ZmQ2OGNhM2VjNDZjZGNkOTk4YzlhYzFlZTYgbGVnYWN5LXRydW5rCiszMDU5MCAzODMxOTQwOWU4OTU2N2UyNDI4YTE2ZDA1YzllMDFiZGM3OTkxMDU2IHJlbGVhc2UyMi1tYWludAorMzA1OTEgOTNmMzIyZjU2MmYzOTk4Y2ZmMjY1MTI2MDAyYzJkMWI3ODNkMjY4MiBsZWdhY3ktdHJ1bmsKKzMwNTkyIGFiYjVhNjlkNjBjYmZmOTk0NjM5YmYzNDA4NmY4YjIxNTUzYTIzYzAgbGVnYWN5LXRydW5rCiszMDU5MyBhMTIzNzkzY2ExOTNiZTdkNDkwNWQ1M2MwYjRmYmNkZjEwM2ZlMjZhIGxlZ2FjeS10cnVuaworMzA1OTQgM2EyOTVjZWJhNDAxZjU3YWQ2ZGE2NjY2ZWQ3YjA1NWMzZTM3OWMwOSBsZWdhY3ktdHJ1bmsKKzMwNTk1IDM4OGU1NDc0Nzc0MDBmNDUyZjNiMDFjZTRmZjdlOWJkNzY4ZTQwODUgbGVnYWN5LXRydW5rCiszMDU5NiA1NGVmN2Q1Mjk2ZjEwNDBhYTM4ZDgxYWViMzU2MTkwZDNkNTNkMTU0IHIyM2ExLWJyYW5jaAorMzA1OTcgMWFjOTk5NGRjNmMyNTgxMzAyYWM5OGE1MzU2MzRlZDA5MzQyMWY2MSByMjNhMS1icmFuY2gKKzMwNTk4IDFhMGVhYmJkYTY1NGFhNTUxZWRjNmU2N2M0NmJiNjEzZjBiMmZjNzMgcjIzYTEtYnJhbmNoCiszMDU5OSA5N2I1YWI2N2I5ZjI5MDlkODRkMjQyOTUwNjBjM2RjYjZkNjEyN2E4IHIyM2ExLWJyYW5jaAorMzA2MDAgNTJjZTcxMzU4ZTMyYTExNjlkY2YwM2NhNzRjMWY0ZGZhYjMxYjg2ZSByMjNhMS1icmFuY2gKKzMwNjAxIDdkYWIyNzczMWJlODE4ZDA0YjIyOGZlNTI3YzUxNjFmZTU1ZmY3MWUgbGVnYWN5LXRydW5rCiszMDYwMiBiZDc1MDM3OGQ1YzFmZmMyZDMzMDdjNTAxNjAyMTk3Y2MxYzUxMmFjIGxlZ2FjeS10cnVuaworMzA2MDMgZTg0MWM4NzNhOTM3MDNjZjQ2YTM1NDQzYzM0NGFhNTNjOWFjOGIxMyBsZWdhY3ktdHJ1bmsKKzMwNjA0IDI3ZTljM2NkNThhZmQzMzJmMzkzYTRmY2E1YmEyNDJiMGRhYTk0MTIgbGVnYWN5LXRydW5rCiszMDYwNSA2YzRiZDQ4N2ZkMjYwYmQ5M2RhMGFhOTQyNmU2ZmZlMjJhMzVjMDA5IGxlZ2FjeS10cnVuaworMzA2MDYgYTE2NjRiN2RhNzZmNzljMjJhNzhkMjEwZGIyNWNlY2ZmOTE0NWE3YyBsZWdhY3ktdHJ1bmsKKzMwNjA3IDNlMjNkZTgwMmE1ZGFjZmYyNmM2YTY5MzAzMWE1NDNkODZkM2IyYTkgcjIzYTEtYnJhbmNoCiszMDYwOCBiNDIyNTVjODIyYjFlNTcxZDVjNGUwM2Q5NmEwNmY4NWJkNTVlMGE0IHIyM2ExLWJyYW5jaAorMzA2MDkgOGQ3ZGRiYjMzMGQzMWNiY2ZhNTU5MGQxNTBlNWU1YjhhYTQ0ODczYSByMjNhMS1icmFuY2gKKzMwNjEwIDVhYjRiNjQ4YTRjZjQ3ZGZjMzJhMTkwYjY4NWI0ZDRmZWI4ZjMzY2QgcjIzYTEtYnJhbmNoCiszMDYxMSA5NmE4ZWZkOTE5NDhjMWVhYzM1OGQ3M2Y2N2YwMjgyM2U5MGM5YWNlIHIyM2ExLWJyYW5jaAorMzA2MTIgMzNiNDYxMGE4OTIyNTNjM2I2ZWE0YzZmMDM1N2JiZDljMWM5MDIwZiByMjNhMS1icmFuY2gKKzMwNjEzIGY5YTVlZDA5MjY2MDA2MTAwOGNkZGQzZTkxZjRhYTAxZDM1NjUyYzkgbGVnYWN5LXRydW5rCiszMDYxNCBhMTZiYzY0ZjExNDViNDQ4ZjVlMjI5YTA3NmNiMzJmMDUzZGZjMzEwIGxlZ2FjeS10cnVuaworMzA2MTUgODIyNjY1OGE2M2JiMmUzYzUwNjFkODMzMzIxZjJhMGYxYjlkODcxOSBsZWdhY3ktdHJ1bmsKKzMwNjE2IDZkN2RhYTUzMjljNmFjYWVjOTU2M2JkNmRiOTViMWJmMTNlZGNlMTcgbGVnYWN5LXRydW5rCiszMDYxNyA2OTMzMWZhYzRlZjI1YjBkMTA4MDE3MDA2ODMwMTE3M2NkZGU5OWFhIGxlZ2FjeS10cnVuaworMzA2MTggNDMwNmM2NjVmODU3Y2NlODk2MDYyMzA4NDA3NWRiMTFjMTc3ODkxYSBsZWdhY3ktdHJ1bmsKKzMwNjE5IDI0NDNjNTU3Y2JjM2QzYzkwMDQwOGU4ZDMwYjUzZTU1ZDRhYzYyYTIgbGVnYWN5LXRydW5rCiszMDYyMCA4MmVhYzMxZTZlMmRjOTk3NmQzNWQ1NjkyNGY5OTZiMThkNmI5NzJhIGxlZ2FjeS10cnVuaworMzA2MjEgYWVlNDNhNGYzNTcwZDcyMzg0MTBhNjBhMTg0NDEyNzRlOWVmZDlhZSBsZWdhY3ktdHJ1bmsKKzMwNjIyIGEwYTZmNGRkNzMyODY4NTY4NWNmZjc5ZmIzZDBhMzk0N2JkNGRlMWYgbGVnYWN5LXRydW5rCiszMDYyMyBmYWJhNmU2YzgyNGRmOWU0OGJiZjRmMjhhYWMxMDFkYzBjMTViYTdmIGxlZ2FjeS10cnVuaworMzA2MjQgMDQ2NGFjYjViM2U0NmIxZTU3YjNiOGZiNWY3NmUyZmI2NjM0Njc4NyBsZWdhY3ktdHJ1bmsKKzMwNjI1IDU1ZGUyYjk1MTgxZTkzOWYyYmQyN2VmNDAzZDU3ZGJkMzUwM2UxNjIgbGVnYWN5LXRydW5rCiszMDYyNiAwMzY0YWFlNWE1YTQwYmFmODA3YzkzY2VmNWM0NzQwN2Y4M2NlYjU2IGxlZ2FjeS10cnVuaworMzA2MjcgZTcxOWFiNDZhZGFiZmNiMWE4N2Q1NzdjMThiMTYzOWRiNzZlNTNmYiBsZWdhY3ktdHJ1bmsKKzMwNjI4IGQyZmExZGRjZGY2ZGE2ZWRmMmExNDM2ODFlMWUyOTg3OWU0NzBkMzcgbGVnYWN5LXRydW5rCiszMDYyOSBiMmZjNDk0OTYzYjJlYzk0MjU1MjZlNmYwNzc2NmFiNGMwN2JmODUyIGxlZ2FjeS10cnVuaworMzA2MzAgOWRiNDg4MjYxMGU1YjgzYmIwNmRkYThmNDgyMmI0NWQ5ZTNlMTlhNyByZWxlYXNlMjItbWFpbnQKKzMwNjMxIGEyZjE3ZjRhNmEyMmNmYjliM2M0YTU4YjRkNTRjMGNhMjhlYjBjMjQgbGVnYWN5LXRydW5rCiszMDYzMiAzN2JlYjRkNjA5Mjk4M2JjODNiOGJiNjU1ZGE5NTE0OGY3YTY0N2NlIGxlZ2FjeS10cnVuaworMzA2MzMgZWI5MzUzYjQzY2QxMmMxNzkyZTM5MTljOWI4NjBjMmVkMTVlZjBiNSBsZWdhY3ktdHJ1bmsKKzMwNjM0IGIzYzhkOWM0NzJkYzkyNmJiY2UzNjBiNDkwNDRkOTNhYWQ0ZGI3YzggbGVnYWN5LXRydW5rCiszMDYzNSA4NmU3YTFmN2YyNjUyNzcwNjY1NWQ4YmQxZmMzZDAwYjYwYWI1YmE0IGxlZ2FjeS10cnVuaworMzA2MzYgN2VjNzcxODkzNDEwMmE5OWJiNjYzM2U1ZjZmZDA1MTg5Mzk4ZTJiZCBsZWdhY3ktdHJ1bmsKKzMwNjM3IGMwZDVmZTlhMGYxYzNlNDIzNzYzMzcxMDcwZDZiNzg1NmRjM2VjNTIgbGVnYWN5LXRydW5rCiszMDYzOCAxYjg4MWQ1ZTRhOTAzZTVjNDY3YmVjNTMwNzFkMjg0YWVmMmU0NjMzIGxlZ2FjeS10cnVuaworMzA2MzkgZDE4NTBhMzZhZTQxZmQ5ZGY5M2JmYWFiOTA0NzM4ZDcxZGQ4OTE0OCBsZWdhY3ktdHJ1bmsKKzMwNjQwIGU1NDg1NTI1N2E0ZjkzMGYzMWQ0MjJkYWE5ZGQ2MGJlNTc1NDBmZjYgbGVnYWN5LXRydW5rCiszMDY0MSBhY2M4MGVhY2U0ZGMxMzRlMWUzMzE3OTQyOTVmZDc2ZjZhOGQ3YTRhIGxlZ2FjeS10cnVuaworMzA2NDIgNDZhNmVkN2NjNGZlOTVlYjgxNDEyYWRjMjYyNTY5YzIwNzQ2YzE5ZCBsZWdhY3ktdHJ1bmsKKzMwNjQzIDQ1ZjFlNmIxMmE4MTNiNDNiMzk1MzMwNGU1ZjNlZjgxNDFjMzNkN2UgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMDY0NCAwNDdiNmUxNmFiMmU0ZDlmOGYxZDFhOWZiYWFjNDE3MTMxZTgyODhkIGxlZ2FjeS10cnVuaworMzA2NDUgNmRmZGIxYzAzMDhhZDFmZTg2NGFlY2Y2ODY3ODMyZjE1ZjQ3YWYyOCBsZWdhY3ktdHJ1bmsKKzMwNjQ2IDg2MTdjMjUwNmI4ZTQ1NDliMmRlYzNiZjAwMjBhNzQzYjMzYzRhYmEgbGVnYWN5LXRydW5rCiszMDY0NyBlODdkNTkwYTVkZTE4NzQ3Yzc1ZmIxMGNlNmMxZDA0ZjRkOTNjOGJmIGxlZ2FjeS10cnVuaworMzA2NDggMjJkNjYwNDk0ZjI5YzRkNzkxYzQ2NDk4ZTU1NzA3ZWFiODE0ZjY2ZSBsZWdhY3ktdHJ1bmsKKzMwNjQ5IDQ5YmNmZWNiMjk2MjcyNTZhZTI4ODNkZjBjYzIyNjUxNzFkMmU3NmYgbGVnYWN5LXRydW5rCiszMDY1MCA2NTdhZWFmYmJjOWEwYzg0ZmQ2OTg5ODMzMWU2ZDlkZWU2M2U3NGE1IGxlZ2FjeS10cnVuaworMzA2NTEgYzI2NjNjYTMxZDdkMGUzOGRhYjM4ZWQ3NzhjNGEwMDMyNTM0MTQxNSBsZWdhY3ktdHJ1bmsKKzMwNjUyIDNkMjk2MmIwMjQ5ZTU0NTFhZTFiZjU4MTMyZTY3YTYwMzc3ODNmOGQgbGVnYWN5LXRydW5rCiszMDY1MyAzMzMwYTUwOWQyYmQ4MzVjZmVkYzQwMTgwMGNhZTg0MTRiN2NlZjg4IHJlbGVhc2UyMi1tYWludAorMzA2NTQgYWY4YTMwZGU2NjcyNWEwMWFhYTAzMzAzMDk4NjFmMTU3YTFjYzhjNiBsZWdhY3ktdHJ1bmsKKzMwNjU1IDdiYmIwZGQ4ZDIzMDY4OTdhNDlhNGY1NWFjNmY1NDk1ZmI1ZmUzMGYgbGVnYWN5LXRydW5rCiszMDY1NiA4ZTIxYmNmMjE1OGFjOTEwNDdjMTYzNjlhNTYyNzExODFmM2UwNjY4IHJlbGVhc2UyMi1tYWludAorMzA2NTcgNWQ0ZjMxNmQ4NzFjMGU2YzE1YmY4MTJjZGUwMWEwYTI2MTRkYmEzNiByZWxlYXNlMjItbWFpbnQKKzMwNjU4IDgxY2RhYmJkNjNkN2NkOTk4NDQyODkyNmQ2ZDM0MWE4NDVkN2UyMjggbGVnYWN5LXRydW5rCiszMDY1OSBhY2YxYjUxMjEyYzU5YTliN2RkZTljZWU5ZDEyYzAwZjZiMTliOTViIGxlZ2FjeS10cnVuaworMzA2NjAgZTIwNGRmZjNmY2JmOWUwNGQxMGNiMzA3MDk1M2Y4ZTUxYTFjMzJiYyBsZWdhY3ktdHJ1bmsKKzMwNjYxIDkyZTkyMmU3MzI3YWUzMjczOTM2MWQ5ZDdkNGNiOGFiOWRkMTBlMzcgcmVsZWFzZTIyLW1haW50CiszMDY2MiA1NzZlMmI1ZDhjZjg4MjVhODU2N2YyNzZiMzQyNzg5MjUxOGRhNDFhIGxlZ2FjeS10cnVuaworMzA2NjMgMTM3NWJmY2I2NzdlNjIwZWUxMzVkNTU3ZWMyODViMDFkNWMxYmViMiByZWxlYXNlMjItbWFpbnQKKzMwNjY0IDQ3Nzk5YzI3NjQ2MTE3ZTk2YjE1MTJiMGY4ZWQ3MDNlZWYyMmJjNTIgcjIzYTEtYnJhbmNoCiszMDY2NSA1NmI4ZjkwODgxM2NiMGNiYzRkYjI4YjM2Y2UxOTkwYzMyNjNhNjc3IHIyM2ExLWJyYW5jaAorMzA2NjYgNWNmNDEwZTQ3MjUxNjYzMDVhYjI1NDlkZTRiNTQxZDVmMWJjMzVjMyByMjNhMS1icmFuY2gKKzMwNjY3IGUyNjVlZmNiY2JkMTY1MjA3MTlkYTM0M2FkNDU3ZTQ0OTNlMGE3ZDggcjIzYTEtYnJhbmNoCiszMDY2OCAyMjI3YWQ4NmQzM2M1MjM4MjMzMTMyMjcxOGMzNDA1MzQ4ZDFmMzVlIGxlZ2FjeS10cnVuaworMzA2NjkgNWVkODIwNjcwYWYzNWM5ZGU3NDkxZjgwNGIyYWJmOGVmZWQxMTQyMCBsZWdhY3ktdHJ1bmsKKzMwNjcwIGI5NDM1NjBlNWY3YjUyNTY3MDg0ZTVhMDQ0Y2E5ZWNjNTdmNmJhYjIgbGVnYWN5LXRydW5rCiszMDY3MSAyOWY4OWM3MjU3YmQwYzk4MDZlN2I3NTYyNDYyMzU1ZWI1NjZkYmY2IGxlZ2FjeS10cnVuaworMzA2NzIgZTE4MDA4YjcxMWIwMjJmY2I1ZjM3NzRhMWFmMDc2NjI4N2MyZjlhYSBsZWdhY3ktdHJ1bmsKKzMwNjczIGFlODM4Zjc3NGY2YzFlMWQxZjdmZDg5YmFhZjViZDI4MDE2M2M1ZjIgbGVnYWN5LXRydW5rCiszMDY3NCA4MGZjZWFiMDY4MzVlNjE5MjhiZTliYTRkN2I1OTA0MDM3YzE3NGI4IGxlZ2FjeS10cnVuaworMzA2NzUgM2Y0ZTgwZWJkY2E4MzU0YjBiMWY1ODMwNDI1ZTQyOWNkYjVhY2NhMSBsZWdhY3ktdHJ1bmsKKzMwNjc2IDU4NWE2NDYwZjU3NzZmZWI4ZmViZmZjYWI0N2M4NGI3MWRjZDU4ZWYgbGVnYWN5LXRydW5rCiszMDY3NyBiMWY1ZmRiZTYzOTcyZjc5M2JlNjcyMmM0NDhmOWY1YzRjNzI2YWYyIGxlZ2FjeS10cnVuaworMzA2NzggZWI2YjM2YjI2ZThkMmI2YTJmZTAzZjMyMmFiNmQxYWJlY2RiMTMzMSBsZWdhY3ktdHJ1bmsKKzMwNjc5IDIzMjYwMTk4ODg1YWNmM2IxZjhkNjVhZGY2NTY1NzBjNmRhZTk0MTkgbGVnYWN5LXRydW5rCiszMDY4MCBjNWQwMmQ1MzcwZDkzN2JmMDA2YzQ2YTdjZGU4ZWU5NDMwNDI0Y2MxIGxlZ2FjeS10cnVuaworMzA2ODEgYjQ5YTQwZGI3YjQ3MmEyNDVmNDBkMGU4MzU3NWM3MWNiNDc1NmQ5OSBsZWdhY3ktdHJ1bmsKKzMwNjgyIDkxMGU3NmRkMDRkYWY2NWVhYzE2NmU5NmRjMzhhN2U4MjdkZGRmOTcgbGVnYWN5LXRydW5rCiszMDY4MyA3MzRlYmQ0N2JjMmE5ZDQzMDM2MTNmMmFlZWZlOTA3Nzg4ZDY5YWYwIGxlZ2FjeS10cnVuaworMzA2ODQgMmY5M2MyMzFlYWUwZWE4Y2NjYzkxODIwYjJmMmQ4ZTE5NzMyMzgxYyBsZWdhY3ktdHJ1bmsKKzMwNjg1IGVmNDNkZTU2MmZkMWIyNTFiYjE1N2MyYmI2NGM2ZTMyYzhmNjg4NjAgbGVnYWN5LXRydW5rCiszMDY4NiAwY2FkYzI5MTgwZTYxNWNmMGQxN2VlMDYzYzY3MTU3ODAwZjlkZGJmIGxlZ2FjeS10cnVuaworMzA2ODcgN2YwOWIxOTkyY2U5ZmMzNWVhYmU5MmExYjM4YWYwODUzMzZhOGM5MSBsZWdhY3ktdHJ1bmsKKzMwNjg4IGNjZjU5ZjFhYjQzMTI4NjRmMzBiMjlhZWQwYjgyZWEwNjZhNmFlOWYgbGVnYWN5LXRydW5rCiszMDY4OSAwYmQwNzM5MWQ5MjFiY2MxNTA2NDE2ZGEzNDJiOGYyMjMxYzA4M2ZjIGxlZ2FjeS10cnVuaworMzA2OTAgYWRmNGFiM2VhYTYyMWM0NDFmYTc3YjJiMmQ1N2ZhM2M3YTU3MzIxZSBsZWdhY3ktdHJ1bmsKKzMwNjkxIDRiODlkNzZmYjIwNWFjMGRkMzM0MjY2Yjc0MTQ0MjA1MjBjY2ZiODMgbGVnYWN5LXRydW5rCiszMDY5MiBkNWQxMmVhM2E1ODA5ZmVhMjNjOGRkNzVjZWUxZDRiNzU5MjE3MWZhIGxlZ2FjeS10cnVuaworMzA2OTMgYjlmNWJlZThlYzE4ZThmZjA0Yzk4MjBkMzllNzRjMDQyNjdjNGI4YiByZWxlYXNlMjItbWFpbnQKKzMwNjk0IDBhOTc5NmE2NDY4ZWYxM2YyMzE1NjZjMzFiYjhhYzI0OGI2ODA1ZDkgbGVnYWN5LXRydW5rCiszMDY5NSA0N2IxMzRiYjUxYzMwMmQ4ZWEyZWQwMTQ2ZDY0YzcyNzMyODQ3MzQxIGxlZ2FjeS10cnVuaworMzA2OTYgMzE4YWJhOTRjMWU3YjFlY2VkOTRjZmQzODQ0NmMzZDUwYmZhMmU2NCBsZWdhY3ktdHJ1bmsKKzMwNjk3IDkyNWE3YjFmOTNlZTAwZjhlMDRlMjFmZjhjYWQyNjJkZmI0MTIyYzIgbGVnYWN5LXRydW5rCiszMDY5OCAwN2M2YzJlOThhMWNkZTFjYjUxZWZmMTZiYjVmYzM5ZmEwNzQzNWFlIGxlZ2FjeS10cnVuaworMzA2OTkgNmZlNDlkYmYwM2ZkNDZmYmY2MzY2ZThlZDVkZWJkNTBiZTgyNDA3MSByZWxlYXNlMjEtbWFpbnQKKzMwNzAwIGEwZTBjYWI1YzkyN2ZjMWFmOTJlZjBjMWI1MTZiZmNhNjliY2ZlNGIgcmVsZWFzZTIxLW1haW50CiszMDcwMSBjZGYxYmEyYWI3MTUyOTQyMjZiOGUxNWI2YWM4MjViZTA4NjM3ZDUxIHJlbGVhc2UyMS1tYWludAorMzA3MDIgNzcwNmEwNmY1ZTY5MjY5NGY1YmFlN2JmYWYyMzQxZWIwOTY1NzA4ZCBsZWdhY3ktdHJ1bmsKKzMwNzAzIDAxZDlmZDU5NTM3NWZlNTVkYmQwNGY4ZGI1YjQ5YWJmMTJmMzY3ZDQgbGVnYWN5LXRydW5rCiszMDcwNCA3MjgzODNkYzczOWVmMDBmMjUzZWY4MmI5MWUxODNlMDJiNWY3MmFkIGxlZ2FjeS10cnVuaworMzA3MDUgYzc5ODYxM2E4NzY1NWJhMjYzNTc4Mjc1M2YwMzQ2NzcyMmUzYzViMSBsZWdhY3ktdHJ1bmsKKzMwNzA2IDA0YWE4NmQ0OWQ5M2U1NTY0OTBiY2Q4OTJkNzk1OWFhODcwYWI4N2UgbGVnYWN5LXRydW5rCiszMDcwNyBmYzRiYjM4MjA0NDllM2YwZmFkZTliYmRlNTY1NDRkZDFjMDQ5YjcwIGxlZ2FjeS10cnVuaworMzA3MDggYmNhZTJhNzBlMWVjN2M5Zjg0NDAzMTM4MDUyN2ExMzBiODhlYzg2NCBsZWdhY3ktdHJ1bmsKKzMwNzA5IDdlYTQ0MzA1MjJkZjQ5M2EwODRkZDdjYmE4OWYxZTdjMzcyNWI5MGYgbGVnYWN5LXRydW5rCiszMDcxMCBkMDNjMTMwMzQ1NjBhMzYyZTRkOGQxOTI5ZDhkY2ZhZGE5NmRlYzc4IGxlZ2FjeS10cnVuaworMzA3MTEgYjI5Y2ZhZDQ0MDk3YjU4YzJiMTYyYWFkYjFkOGU3NTg0ZTViZTc0MiBsZWdhY3ktdHJ1bmsKKzMwNzEyIGIzNDYyNzI1NDRhMTgyYzE2YmQzZWQwMWQ0ZmFhZDM1YmJkMGNmNDkgbGVnYWN5LXRydW5rCiszMDcxMyA5MzQ3MzI3ODc0MTk0YmY4YWU0NjRiYTliNDk0Y2M5OTBjZDFhZTZkIGxlZ2FjeS10cnVuaworMzA3MTQgNTkzMDlkNGJmODQxYjY5Mjk2MTc3NzcwYmZlYTZkZjkxOWI3OGQ0NCBsZWdhY3ktdHJ1bmsKKzMwNzE1IDY1ZGMwMTEwYTczNWMxMDEyOGVlZjIwOWMwZDE0ZjY5NThiOWVmYWMgbGVnYWN5LXRydW5rCiszMDcxNiBkNGM4YWY5MTE5ZDE5MThmZjY2Zjc5NTdiMDI2N2JkZDNmYmIwMGE1IGxlZ2FjeS10cnVuaworMzA3MTcgYTUxZTVhZTI5ODgyYmNiMWJmNWUzNDJhMmMzYmRlMmNmOGJkMDYzNiBsZWdhY3ktdHJ1bmsKKzMwNzE4IGI4NzI0MzQxYmIxYWJjMzJmOWZmNjE1ZDhmMDFkM2Y4N2VmZDVmMjMgbGVnYWN5LXRydW5rCiszMDcxOSA3N2I3MGE4ODg0Y2IyM2I4NmZkMDEyZTQxYTAxMjhkMjdkYTNiNTc2IGxlZ2FjeS10cnVuaworMzA3MjAgOTI4MTJmNmNkNjNiNWIyYzJiYmQ4NTVlYzdiZjA3MGQyNTBmZGUyOSBsZWdhY3ktdHJ1bmsKKzMwNzIxIGRjNmZiOGE2YWYzZGVmMjc4MGVmZjVlNjk0ODAzODI2NTY0MzQwMGIgbGVnYWN5LXRydW5rCiszMDcyMiBhZTEyMjY3NWRmMWU5MGNlOTY0MTQzNjU2NDJhZjdiNDQ3ZTk0OTJmIGxlZ2FjeS10cnVuaworMzA3MjMgODFkYTczYjkzYzNjNjJmM2MyMjY3NjhkN2EyZWUyYzY3M2RjMTRiMSBsZWdhY3ktdHJ1bmsKKzMwNzI0IDBhMDM1ZjkyOTlhOTc5Zjc4OWMxYmUxMTZmNTc5YjA1NmUxMjY3YTYgbGVnYWN5LXRydW5rCiszMDcyNSAzYzhkOTFmM2Y0YzY3ZGU3ODMxN2E1NzRmMzkxYWU2ZGIyNjQ3OGRjIGxlZ2FjeS10cnVuaworMzA3MjYgNGYxOWM4NTI0ZjFhYzdlNGU3YWNiNDQxNjlkNzg5MWQxNDcxOWU1MCBsZWdhY3ktdHJ1bmsKKzMwNzI3IDZhZTM2MWRmODcwZWVhMzE4ZjdiYjAwZGJhNGQ0OWZhMjgyMWYzMmIgcmVsZWFzZTIyLW1haW50CiszMDcyOCBiMGQ1MjgzMjdjNGMxYTZjZjZjYzUzOWU5Y2ZlNDY2ZThjNjVhNzcwIGxlZ2FjeS10cnVuaworMzA3MjkgODBlYTA0OGZjMGQ3MzVmMWZkYWE5MGFlZmM3YTAwNmI2NDJlMGRiZCBsZWdhY3ktdHJ1bmsKKzMwNzMwIDQyOGVlY2RmZDU3ZmNhY2UyZTdkMTkxZWE4NjkwZTYzMDE4YzM0OTQgbGVnYWN5LXRydW5rCiszMDczMSBhNDk0ZjVhODYzOWYyOTA0NWZiNzk3MDc1YzA0YjZjMTI1NWM0ZWVlIGxlZ2FjeS10cnVuaworMzA3MzIgNGE2MmE5NDFmM2IxMmEzMDM1YWNiNzE5YmM1ZDhkMDlkYzU0OTk1ZiBsZWdhY3ktdHJ1bmsKKzMwNzMzIGRlMmM5NWQ4MTk4NDE2MGY1OWVmMDAxYWI1Y2FhMDBhYzNlMTAwOTQgcmVsZWFzZTIyLW1haW50CiszMDczNCBmOTY3NzJlMzFlMjMzZjc3N2VkMjFlYmI3MzhiOGNkNWQzOTk0MDQ5IHJlbGVhc2UyMi1tYWludAorMzA3MzUgM2IzY2U5NjRhZGM5YzEzZjJmYTU2OThhMmE3ZjY3NGYyZTE1YzNkZSByZWxlYXNlMjItbWFpbnQKKzMwNzM2IDdhNGQ3ODI3MTVmNGM3NjYyNDk0Y2U2Y2NmZDhkMjIzZTFiNDIzNWQgcmVsZWFzZTIyLW1haW50CiszMDczNyAxMGI3ZTYwMjQ1YjU2OTQwMWI5NjM2MjdlYjVmOGQwNzJiODQ3NjYzIGxlZ2FjeS10cnVuaworMzA3MzggMzhkMjIzOGM3OTVlNDZlOWIxNmU3YWIzOTkyZjI0YzQwMTU0NTI0MiBsZWdhY3ktdHJ1bmsKKzMwNzM5IDJlZDUxOGFiMmZkMjBhMmQyMjI5NDA0NDY0OWEzMTZmMWQyMjUwZTEgbGVnYWN5LXRydW5rCiszMDc0MCAxNzg3OGQ0NThjZjEyZjNkZmQxM2UyYTEwNDkwYWZmNzc4YWVkN2E0IHJlbGVhc2UyMi1tYWludAorMzA3NDEgMTExOWQ1ODI2MDlhMTRmMjRlMGY0YTdlNmYyMjA1NTAzOGM1MmMyZiBsZWdhY3ktdHJ1bmsKKzMwNzQyIDIwOWQ2NzIxMjg4M2QwMTBjMzZjNmU1NmYxZDI3MzFhMDZjOTBjY2UgcmVsZWFzZTIyLW1haW50CiszMDc0MyAyMDFjZGViMzA1ZjY0YTA5NDAzZjJmZWQ0NmM5MjllNmUxMTZjNDA0IGxlZ2FjeS10cnVuaworMzA3NDQgNDIwZWEyMDVmMDI0MWVlNDUxOTU0MDI2YzgyYTRmNWVhYTUwN2Y1NSBsZWdhY3ktdHJ1bmsKKzMwNzQ1IDVkNDJkYmE0OWZlNTA3Mjc1Yjk4MGI0ZDFkYzU5ZDQwMjgyNzY2NzIgbGVnYWN5LXRydW5rCiszMDc0NiBlYmViMDBiOGQ1MDJhMGM5OTUzYjQxYWQ5MGNmODgyZWJlYTc3ZTBlIHJlbGVhc2UyMi1tYWludAorMzA3NDcgMTFiMzQ1NjRhMGZkMDU4MjFkYTQyMjA1NmM5ODAxOTJiMzQ4ZGViYyBsZWdhY3ktdHJ1bmsKKzMwNzQ4IDNhMzNiZDBmOWM0YmZkYzc1NGVjOGZlMWUxMzUyM2M5YzgwOGRhYjUgbGVnYWN5LXRydW5rCiszMDc0OSBmMzRjMjg2NTBmMTRlMThlNWZmMjUzNWNjODQxMTVlMmQ5OTVkMzFhIGxlZ2FjeS10cnVuaworMzA3NTAgN2YzN2VkNTQyOTIwMDNlYThmMGNjNDhmZGRlM2FjMzQ1NWNmY2M2MSBsZWdhY3ktdHJ1bmsKKzMwNzUxIDE4ZjA3MmQxNDBhOWM3ZmU3NWVlNGIxNDUxNGM2YzcxOTkyZjJkN2MgcmVsZWFzZTIyLW1haW50CiszMDc1MiBmZDNiMDcxMWIyNWZiMDU1ZmFmMGJiZDgzODI3NzVjZDgyYzVmNDFhIHJlbGVhc2UyMi1tYWludAorMzA3NTMgZWViYzRmZGFjNTk0ZTY5MmNmMWYwODAwZTNhMWQ0ODhhYTU4N2IzYiByZWxlYXNlMjItbWFpbnQKKzMwNzU0IGU5ZjQ1YjhlZmQ2YjRkN2M4NzZiNDBlNWJmMjRhNjZjNjVmYTM4MmQgbGVnYWN5LXRydW5rCiszMDc1NSA4YmQ2YjJhZTI4NzRiMDc5ZmIwZTVhZjdiYzk1MWY1MTAxYmVmNWZjIHJlbGVhc2UyMi1tYWludAorMzA3NTYgM2VkZTkwZDZlMWNmMTI1YTAyMDNiNDllZjNjNzQ5ODQ4ZDhmMTc1YSBsZWdhY3ktdHJ1bmsKKzMwNzU3IDg0YThlN2QxZGFhOTc2OTgxNWQ5OWQ2ZDNlZTc5NTg1MjliNzY1YzYgcmVsZWFzZTIyLW1haW50CiszMDc1OCAzYmZkYmMzZGZiY2U5MjhjOTE3MWRjNDhhODcxNzhmNTRmMTkyYjQxIGxlZ2FjeS10cnVuaworMzA3NTkgMGE2Yjg4MTkwYjhiMWQzYmVmNTJhOWNlNDczNTI3ZWNlNWE4YTllMiByZWxlYXNlMjItbWFpbnQKKzMwNzYwIGY1OWQ4MGM3ZTFiYjRkMThmOTAwMGQ1MDFkMDMxZmJjOWRmY2Y0ZTggbGVnYWN5LXRydW5rCiszMDc2MSBmOTVlOWYzYzlmZWE3OGQ0ZDcxN2VkYTAzZDFmNTBkODY0ODc0NjEwIGxlZ2FjeS10cnVuaworMzA3NjIgYTc3MDZkNGM2OTBjMjBhZTYxZWU4MTZkMmQ5M2Q0NWE0ZmQwOGJmMSBsZWdhY3ktdHJ1bmsKKzMwNzYzIDNhZmJkNTVmYjE4ZmE0YWIxM2EzOGNmMWIxNGQyMTUxNjNlNzc0NGEgbGVnYWN5LXRydW5rCiszMDc2NCBiM2YxMDUzOTlkMjI4MTFkYmE1ZDE5OWE5NTY2MGM0NjYxZjQ0NzI0IGxlZ2FjeS10cnVuaworMzA3NjUgZDNhYjUzMmIzYjZkNmViYjIwYTcxZjZhMjVmMmNjOTVmMTY3NWYxZSBsZWdhY3ktdHJ1bmsKKzMwNzY2IGE1NmMzYzU2Mjg4YjlmZWIyN2RiNWJhOTA5ZGQ0NTJiNTcwZDhkODggbGVnYWN5LXRydW5rCiszMDc2NyA1ZGRiOTBmODE2OWE1ODkzOWFlNDQzYjA3NzI0YjdiZGFiMDJiODJjIGxlZ2FjeS10cnVuaworMzA3NjggYzQxNTBmN2Y2YTY5NjE1MjRhZTg4ODcyMDc3MDJlMmI3NzU3YjRmMSBsZWdhY3ktdHJ1bmsKKzMwNzY5IDdjMzRlNWJmMmUyMmIxZjg1ODlmODI3NWVmZWVlY2VlMzJjMTNmMmIgbGVnYWN5LXRydW5rCiszMDc3MCAxNmE4NzY3NDYyODUwYzc0NmQwMjVjMzhmYWJkZDhhYzBmNDc4MmZkIGxlZ2FjeS10cnVuaworMzA3NzEgYzk5NDkzYWJhMDk4ZDI1M2MyZGI3OGQxOTZhMTY0NTkxZWE3ZjZlMCBsZWdhY3ktdHJ1bmsKKzMwNzcyIDQwY2Q3NDc4MjYwMDgxMWFkMDI4N2U3OGM0ZDgzNzI3ZjY1ZDE3YmIgbGVnYWN5LXRydW5rCiszMDc3MyAxY2E3YjJkNjkyNDI1ZGM2N2I4NDA5MzM2Y2FhNWQzOGJhNGY0NGZmIGxlZ2FjeS10cnVuaworMzA3NzQgMjYxNTQ3NzAzNDQzZGFiNDU0MDk3YjUwZDUxNTUxYzA1Mjc0ZDZlMyBsZWdhY3ktdHJ1bmsKKzMwNzc1IGJhZmY1NmFkZmJjMzM4MjQ4Zjk1ZWJhNzlmNTc3NWE0MWVjNWRjZjYgbGVnYWN5LXRydW5rCiszMDc3NiBhZTg5YjU1NjA1MGFlMDU3MmY0YzZkZWJkNTcyOTAwNDk4NzNjYTkxIGxlZ2FjeS10cnVuaworMzA3NzcgM2ZiZmZkNzM2ZDlkMDRjMjIwODg5NmVkNDc2OTIzZDZkM2Y5YmM2YSBsZWdhY3ktdHJ1bmsKKzMwNzc4IGU4YzFhOTU0MmY2NmE2NjhkNzhmN2QyZmZiZTc4Y2ViM2Y4ODc1MWIgbGVnYWN5LXRydW5rCiszMDc3OSBmYWYyNTZhNTllY2ViMjkzNzc3ZjI3NjQ3MjQ1ZTU0YmUzNDQwM2VhIGxlZ2FjeS10cnVuaworMzA3ODAgNGNkYjUwMWFiNmEyMTc3YWYzYmRhMDg4MjI3Njg1NmQ4ZDU3ZjQ1YyBsZWdhY3ktdHJ1bmsKKzMwNzgxIGYwNTc2NGQ3MDgyY2MxYTBhMWEyYzdmYjYxNzJmOTEzYjk1YjI5MzAgbGVnYWN5LXRydW5rCiszMDc4MiA3NzQyOGU4MzVkNjdlZDgwNjM0MDhhNGYxOWVjYjUxZDhmOTdjZTM2IGxlZ2FjeS10cnVuaworMzA3ODMgN2FjZjU3NDQwZjRlMDlmZTViZWZjY2EwODU1OWM5ZGMzZDVlNDhlNCBsZWdhY3ktdHJ1bmsKKzMwNzg0IDhkMGUwN2MyNzBlZjliMzExNDc3NGNhYmVmMzdlMDU1ODhiZDk5NDcgbGVnYWN5LXRydW5rCiszMDc4NSBhZjgxMTE3MjcxN2QwYTMxMDE0ZWVkZmFlNTQ0ZDQ3YWI2NTY0YTIxIGxlZ2FjeS10cnVuaworMzA3ODYgYTlkZGFkZjc4OWVhYjhmNjk4ZGEzNzNlN2M3MjlhNzNlNjI0ZjM0ZCBsZWdhY3ktdHJ1bmsKKzMwNzg3IGI3NDQ1MDhkNWIxMjY0NmFmMjBiY2VjMjUxNGFjM2IxMTNlZTliN2EgbGVnYWN5LXRydW5rCiszMDc4OCBiZTNkMWI3ZTYyZGMyNjljYmI4NDdiZGI0MWNlMTI4N2I0MTRiOWI3IGxlZ2FjeS10cnVuaworMzA3ODkgZGJlNGY1N2U4YmIyOTU2Y2M5OGFlOWYyMTk3MzEyMjkwMzVjNGY0MiBsZWdhY3ktdHJ1bmsKKzMwNzkwIDM5MmZlZWNkMmYxYzcxZWQ4YjczY2M5MjcxZTA4MTZlZGVlMjhkM2IgbGVnYWN5LXRydW5rCiszMDc5MSA5MWQ2NzhhOTRjNzM2M2Y1MGRlOWQ5ZjY3MzAyZGMwMDRmMmNiMWM4IGxlZ2FjeS10cnVuaworMzA3OTIgNjRkM2ZlOTA0YTBhZjhkNjc0YjI0ZWFlMDQ1ZGQ1ZGYzOTM3YWNiYSBsZWdhY3ktdHJ1bmsKKzMwNzkzIGNkYTVhYjYyNTc3NGZhZGQ1MjAyOTc5NDVkOTRlMjJhNjYyNjVjZWMgbGVnYWN5LXRydW5rCiszMDc5NCBkMmFlNWFmZmRlMTRlNzk2NDAxMmE0NjE3OTBmNjdiY2E2ZmNhOTZmIGxlZ2FjeS10cnVuaworMzA3OTUgYmVkYjc1ZDkwZTAzYzM5OWYyZTAxNmY2MTgyZWEzN2FkYWMwMzEzNyBsZWdhY3ktdHJ1bmsKKzMwNzk2IDdmZGQ1ZDYyYzYxNWFmMjBhZjY0Yjk4MTAyYTVjMTk4OGZlYmU4NWQgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwNzk3IDlkYTQzY2RlOGExNjYxZTY4YzQ1NWZhYWU4ZTQ3NmZlNWI0MmFjODggbGVnYWN5LXRydW5rCiszMDc5OCBjYmYzNTVmMjhjYTlmNjg5Mjg3ODk5MTQ5YzlhMzM0MTBjN2U1ZTBlIGxlZ2FjeS10cnVuaworMzA3OTkgYzgyMzRlMjYxMTVjNjZkNGFjOWI0OGEyYmVjNmU2MTY0ZTJiNmJhZiBsZWdhY3ktdHJ1bmsKKzMwODAwIDlkZTA2NGM3YTI0N2YxMWZjMzhlMDRiY2Y5YTc0MjEwMDJlZTUxODEgbGVnYWN5LXRydW5rCiszMDgwMSA4N2I2NmI2ZmY1ZTc2Zjc3MDJlYTNlYjc0NTUwNzNlM2U1NDRkZjc0IGxlZ2FjeS10cnVuaworMzA4MDIgNWEwNTAyMDBmNzM2NTg2YzVmOGQ1MGNkZGQ3N2ZmYmY3YzllODg2NSBsZWdhY3ktdHJ1bmsKKzMwODAzIGM2ZjQ5Yjc5Nzk2M2VjYmZmOTg1YWE0YmU4YzdkYWFlZDZjNDM3ZWIgbGVnYWN5LXRydW5rCiszMDgwNCA4NjY3NTZmNjcwZmZkNTg0NTNkMTVhY2UwMGE3YjRhODc1ZDhmMTU4IGxlZ2FjeS10cnVuaworMzA4MDUgZGYyNzU0YWNhNzE3MDRmNGJhNDdlODQ0M2FhY2U0NWM1ZmNlNjJkZiBsZWdhY3ktdHJ1bmsKKzMwODA2IDQwZTVlYjllMDRlMGU4MzVhYjVjZTVmNjVlYzVjMjEwOWViOTAxYTAgbGVnYWN5LXRydW5rCiszMDgwNyAwNGU1NjEwYzVlZmU5N2FmNDU4ZmNkZDQ2NjFlYzdkNzQ2NWZhNWViIGxlZ2FjeS10cnVuaworMzA4MDggODhmYWE5ODVkOThjM2YzNjYzYTA3MzY3NmQ1MDNjZmJjMDliZTgyNSBsZWdhY3ktdHJ1bmsKKzMwODA5IDk3ZjQ5NGJmNzMxOTBhZDliZDA2YjJiYmFlNWJkODY3MWI3YTc1NjQgbGVnYWN5LXRydW5rCiszMDgxMCA3NWRhNDk5Nzc1NzFhNGVhYjlhMTkyYjAyYTZhMmFiOGYxMzEzZWI2IGxlZ2FjeS10cnVuaworMzA4MTEgZTgzYTQyYTkwZGYxNjM5NmE3YWZiZjg3NWVkNDBlOGE1ZmQ3ZThlMyBsZWdhY3ktdHJ1bmsKKzMwODEyIDcwMzkzNzUyMjZhN2YyNjI3YWYwYjU1NDU4ZGFiYTAxMjUyZTc0YjkgbGVnYWN5LXRydW5rCiszMDgxMyBkN2Y4MDAyODMwMWRlYjc0YTAxZjU4NTUxMjczZmRkNDExZDU5M2U3IGxlZ2FjeS10cnVuaworMzA4MTQgYmZjMTQwYzdlM2QwNjUxZjAzYTM5MzlhZWIxMmRlZDlmNDlmMzhhNyBsZWdhY3ktdHJ1bmsKKzMwODE1IDcwNTVmNGMxZWRjYzM0MWU3ZDRjNDU0ZDZhMTk0YzY4NTAwN2MyOGIgbGVnYWN5LXRydW5rCiszMDgxNiBiODM4NzczMGRkOGZmNDE1ZTc5MjdmNmZhMmQ0NDM4M2E4ODA3NjA5IGxlZ2FjeS10cnVuaworMzA4MTcgYzFjNDU0NzVmMTcwZTQwZTdlOTJjZGY1MjM5ZjA2ODdlODMzZGMyMyBsZWdhY3ktdHJ1bmsKKzMwODE4IDgxNTUxYWRmMTJmNmQxZWNmMjQ1Yzg5OTg2ZGQ3N2E3MzQ2Y2U4YWUgbGVnYWN5LXRydW5rCiszMDgxOSAwNWZmOTA0ZWU0ZTA3YjZjNjZjZjcyYTU4ZTIwOGRjZTc0NDdiY2ZhIHJlbGVhc2UyMi1tYWludAorMzA4MjAgNGZhOWFkODVjM2IxNWRjMmRmOGJlODY1NDVhYjdjOWY3NTViODAzZCByZWxlYXNlMjItbWFpbnQKKzMwODIxIDEzNjlkMjRiYzg2MWRjYTI2ODcxNThkZTlkMDAxNDA1ZTM2ODJiOTAgbGVnYWN5LXRydW5rCiszMDgyMiA1YTk3NWU4MmQ3MGZiNWJjMDQ5Y2Q0NDYyMGQ4ZWQ3YWFkNTk0MWYyIGxlZ2FjeS10cnVuaworMzA4MjMgZGU4MDE3MzNlYzE4ODc1YmMyY2I2ZDhkMzYyNjdkMTUyNTg5MTA1OCByZWxlYXNlMjItbWFpbnQKKzMwODI0IDBmOGQxODkzMTBiNDVhOWZkYjY0NTQzZjU0ZThjZWU5MjgwYWYzZmUgbGVnYWN5LXRydW5rCiszMDgyNSBhNTU1MjMwYmUzY2IwMDczYjNlODJkYWNhYjBiYjc4NTdmYjU4OWE4IGxlZ2FjeS10cnVuaworMzA4MjYgNzA0NjM5ZDIwYTZjZDYyNWJjMGEzMTJiNjdmNWViNGU0MTQ4ODc4YiBsZWdhY3ktdHJ1bmsKKzMwODI3IGVhNzY4MGVhZjkzN2RmNzM4MjY0MjUyZDU1NjA3MzZkMDBmMGJmNzUgbGVnYWN5LXRydW5rCiszMDgyOCBkYWRkMTc4YjY1ZmE1NjhhZTBkYTZjODVlMDc4YTBkMjk4NThhZTMxIGxlZ2FjeS10cnVuaworMzA4MjkgZmYxNzliYWRlM2YwZGMzOWU0YmQwYTk5Y2U1YzMyZDlkYTM4N2ZlOCBsZWdhY3ktdHJ1bmsKKzMwODMwIDE4NTg0NzE0MGNhNWRiZGRhMTFmZjhmMmIxZTMyNjNkOGMxYWVjYzIgcmVsZWFzZTIyLW1haW50CiszMDgzMSBhMmY4NGQyODM1ZmFmODI1ZDhlMDNlNGM2MWQ0MmE0NzJiNDllMDEyIGxlZ2FjeS10cnVuaworMzA4MzIgZWFhNjEyYTQxZGQwZDY5ZWIwZDlmMDk1NzJiYTMwYWQ1YmQ0NjRlMCBsZWdhY3ktdHJ1bmsKKzMwODMzIDkyMjAwOThmMDMyN2U5YjJjMDEzMGM0ODBlODdlZjM2OGY1Mzg5N2MgbGVnYWN5LXRydW5rCiszMDgzNCBjNjgyOTA3OTBkNTNkNmUwMWRjMzIyNzBkZDQwOTRjODExMmZjNmNhIGxlZ2FjeS10cnVuaworMzA4MzUgY2RhYjJiNzRmMzA3ZWFkNjM3OTc1NjhlNTk1NDNmNjNiMzkxZDU4MCBsZWdhY3ktdHJ1bmsKKzMwODM2IGVmYTJmOGFiYjAyYzlhNjE1YjAwNGI4OTFmMzRlOTQzMjljZjhjZGEgbGVnYWN5LXRydW5rCiszMDgzNyAzYzcwMjNjOWU4ZTI2NzFiZGNkZDc2NGJkOTU2ODkzYzZiY2U3NzNmIGxlZ2FjeS10cnVuaworMzA4MzggZDk2NmJiNTRiM2RlMGQ4ZTVkNzUwNDFmODExNWYyZjQwOTkyZjQ4NSBsZWdhY3ktdHJ1bmsKKzMwODM5IDcwNjdkMzZjM2NmNDcwMTk1NjEwNzVjY2I1NTcwOTMxYTU1ZGY4NWEgbGVnYWN5LXRydW5rCiszMDg0MCA3NWYzOGM0MTVlN2Q0ZDA3Yzg2NGJiMDAxMmJmZWFhZDhiOWMyOGRjIGxlZ2FjeS10cnVuaworMzA4NDEgMTU2MmMxZTEwYjQ5N2RhOTcxNDhjZWY5NmMyMGQ2Y2FjOTMwNjlkOSBsZWdhY3ktdHJ1bmsKKzMwODQyIDI5OWVmMmRhYmI1MmM2NjI0YzAzN2ZiMzYzMzdmOWNmZDIxNTY2MTIgbGVnYWN5LXRydW5rCiszMDg0MyA4OGJmMTAzMTM1ODRkZTQxNjdmMzg2NzQwNThmOTU3NDY4ZTUwMjgyIGxlZ2FjeS10cnVuaworMzA4NDQgMWI2MjI5YWRiM2RmOWRmMDJjNDRhNjlmMWVjNDI5YWUzNWJjNDEwYyBsZWdhY3ktdHJ1bmsKKzMwODQ1IGQ1YTMzODZjNzZmNDk0NTZjYjUwNWIxZjk4MjcyMDgwN2UyNTZiODQgbGVnYWN5LXRydW5rCiszMDg0NiBjNDA0ODc5Y2Y5OTliMDMzMDVlMTFiMTlhZDQ1MGY1ZDU3NzQyNDBhIGxlZ2FjeS10cnVuaworMzA4NDcgNDRlMzUyZDdkNTJmZmJiNDRmYWQxMGQ3MjFhZjI1MDE3NmM1NWJmZCBsZWdhY3ktdHJ1bmsKKzMwODQ4IGUyZGEwZGYzNjEzZDFjYTNhYzRhYjM4ODcyYTIwMzg2MWQ1NTk5YmQgbGVnYWN5LXRydW5rCiszMDg0OSA2ODMzMzliODUyYWJkNDliOWJkYTZiNjViZmE1ZGIwNzI0YmYyN2JjIGxlZ2FjeS10cnVuaworMzA4NTAgODcwNDVhOGVjNTQ3MTc5MTYwMzA3MTc1ZTk5YThmMDQ5MWM1MzA1NSBsZWdhY3ktdHJ1bmsKKzMwODUxIDZjZGE3YzYxMjE1NGE3Njg2ODU3OGM5ZGRhOTUyYzU2ZjU0MmMyMDQgbGVnYWN5LXRydW5rCiszMDg1MiBhMGE5MTQ3MjNjNDgwYjcxMjZjMTk5ZDZjNDJjYjI4MGEzNmVkN2QzIGxlZ2FjeS10cnVuaworMzA4NTMgNTk3YWE5OTY2ZWM2YmIzMzMwNzdhODc2NGNmMDhlMWY3MjE1YzQ4NCBsZWdhY3ktdHJ1bmsKKzMwODU0IGY0YzY5NGEwMTQyNTY4MzViN2NjYTBhYzZlZDVmNDU0Y2Y2NjE3NjQgbGVnYWN5LXRydW5rCiszMDg1NSAyMmZiNzZjNTM5MjY3NTE2ZGQ2MWM2NWFlNzI4Y2Y1Y2I1ZmFmYTNjIGxlZ2FjeS10cnVuaworMzA4NTYgMmM2NDljN2FlOGYzZjJiZjdjNGFlMWQwMGFjNmExMTI4Nzg2MmQwYyBsZWdhY3ktdHJ1bmsKKzMwODU3IGNiY2EwYmNmMWMzMWU5ZWFjZDkxZDcxOWQwOGI3NzRhYjM3YTdkYTUgbGVnYWN5LXRydW5rCiszMDg1OCBiNDcwY2E4NGZkMmI1ZWM5OWVhNjlkNmFmMWU5YmU1M2MyMjg4MmEzIGxlZ2FjeS10cnVuaworMzA4NTkgZTgwNDU2YWQxOTViNjhkODA2ZWI2NjA2YmI2MWQyMTI0MTA3ZmMyYSBsZWdhY3ktdHJ1bmsKKzMwODYwIGQzNGVmMDBkOWRhOGEwODYwODY0NDNmNzI1ZjhhODYzZDdjNGQxYTkgbGVnYWN5LXRydW5rCiszMDg2MSA4YjUzYjBjZTA2ZDQ1OGU3ZjQxYWU2MDFhYTI3MjRjNGRiY2FmMmNiIGxlZ2FjeS10cnVuaworMzA4NjIgYmE2M2Q3MTdjNzVmMDAwNGMwYmNlYWM3MTI0ZTViOWEzYjNjYTIyMSBsZWdhY3ktdHJ1bmsKKzMwODYzIDlmZTM2YWUyYTRhMmIyYTg1ZjRiYmRhZDhhNDk1M2JjMTRjNjAyMDIgbGVnYWN5LXRydW5rCiszMDg2NSA5YmUzMTQ5ZmJlZTcxN2I0NjNhODhhZDQ3MjkwYWFmOTdlYmRkZmM1IGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzA4NjYgNDEyZTY2ZTM1MzBlZTdmMGI2NzEyNzQ4ZmRkODBiYmI5ZmY0YjVjMiBsZWdhY3ktdHJ1bmsKKzMwODY3IDRmNTk5ODFmNzgxN2RhYzExNTkwODkwNDI5YjM2NDk3ZWFmNDUyNzAgbGVnYWN5LXRydW5rCiszMDg2OCAxODAwNjdjMjg4MGZlZTVjNGQ0NmNjODIyNGRjMzRlOThkOWUxNzE2IGxlZ2FjeS10cnVuaworMzA4NjkgMjA1NWQwMzcyOTVjZjA5OThjMGM5MGMzY2FkYmZiMTBlM2Y3MjFjYiBsZWdhY3ktdHJ1bmsKKzMwODcwIDMwZGE4Yzk2ZmQyOWVmMzY1Yjg4ZmM5NmFlMjk1MDRjMDhiYmE3M2UgbGVnYWN5LXRydW5rCiszMDg3MSA1YWNmNjk2N2Q2ZGQzNzE0ODYwZGMzZGM5NmYxOTBjMDM5ZjhhZTk5IGxlZ2FjeS10cnVuaworMzA4NzIgZGRiNTJmNTY3M2RiNWE4NTNlNzI1ZmViNjVmNzhlYzFiMTg5ZGU4NCBsZWdhY3ktdHJ1bmsKKzMwODczIDIyOTkyZmE1MTgzMTBmZWYxOGE4NWMxODk5NDA4MTYyZDMxMjY4YjkgbGVnYWN5LXRydW5rCiszMDg3NCBiYmYxNDE4NWJmMWU3ZTZiNmQyOTFlMTE4NGFjNTg4YmU0MTMyMTE2IGxlZ2FjeS10cnVuaworMzA4NzUgNDA2NzdmZTg1MDNkMzBlMGUxYzFiOGVlZTUyZTFhZDBkZWI5MTdjNSBsZWdhY3ktdHJ1bmsKKzMwODc2IDI3YWVkY2Y0NmJjYzkyZmYzZjE3OTRkZGNiODExNzk4ZWIwMzI3M2YgbGVnYWN5LXRydW5rCiszMDg3NyA0MjhjOGE0MjMwNDNlYWRkMzY1YjZhODYzM2E2OWIzYTRlMzU2MjAxIGxlZ2FjeS10cnVuaworMzA4NzggZGM2MTE2Mjc4MjU5M2Q4Yzc0MGRmZTFkODgwYjUzMTM4Y2EyZWEyOCBsZWdhY3ktdHJ1bmsKKzMwODc5IDhkYjJlNzRkZGIwZTVhYTRmNGYwZWNmY2VlYzhjOGYyNDc3YjcwOTMgbGVnYWN5LXRydW5rCiszMDg4MCBhZmQxZGM2MmUzNTRkZWUzM2FhMzljYzQzOGFlMmQ4ZjU2MjhiYWZiIGxlZ2FjeS10cnVuaworMzA4ODEgNThiYWQ3Njk3NzZlNTk5OWU0YWQzMzEzZjdlM2EyMDM2MjhkOTg2NCBsZWdhY3ktdHJ1bmsKKzMwODgyIDA0ZTQ1NjU4MzJiZGQzOWM4YjRiNjNhNGRmMWZmZDQxZTkyYWNmMGQgbGVnYWN5LXRydW5rCiszMDg4MyAyNzNiMmI0OWJmZDg2ODk5ODYwNGM0ZmUyYjRmNmYxY2M4NmQ0YTJiIGxlZ2FjeS10cnVuaworMzA4ODQgODkxZWM0ZDI2NmQxNzg2N2ViMGMzM2MxODQ4OTY0MWE5NTBlOGEyMCBsZWdhY3ktdHJ1bmsKKzMwODg1IDRhNDliNWFhNWQyMTI3MThjNDE0ZjVlMmY5MTdkY2E2MjE0ZjMyNzkgbGVnYWN5LXRydW5rCiszMDg4NiBlYjFlNTI5ZmRmZGYwZDRiOWMyZDIyOTI1ODg2ZDNiZmQ5M2EwOGMxIGxlZ2FjeS10cnVuaworMzA4ODcgZmRlNzhkODBlMDk4OWQyYTM0MDNhZjNjOTVkNWQzZGFkOTNkYjdmZSBsZWdhY3ktdHJ1bmsKKzMwODg4IDAwZjI5NGJmODI5OWY2MTc2MjMxZTlmNjUxMDkyY2UzZDJhZGNiZDMgbGVnYWN5LXRydW5rCiszMDg4OSA2MTQ3YmMxNGQyNzdiNmRiZDU2YWNlZGQ3MDcxYzBkZDVjNzQ4OTQ5IGxlZ2FjeS10cnVuaworMzA4OTAgZmYwZTFlZDk5OGRlZGFiM2NmNzE2ZTVlMGEwOTU4YTBmZjNlNjMyOSBsZWdhY3ktdHJ1bmsKKzMwODkxIGMxZGM1MGRmNTc4Y2RjZWJhNWYyNWQyNDYxYWVkNzIwZDEzMzk3YjYgcmVsZWFzZTIyLW1haW50CiszMDg5MiAxM2JlZWEyZDJkMjZhYTFhMWY1MWExYWM4NGZjNDk0MzQ0MDM5ZjcyIGxlZ2FjeS10cnVuaworMzA4OTMgOWM0YjQyMDdlOTc5ZGMzYmZjMDQ2MDlhODQxZjFlMWZkMjk0ZmFhMCBsZWdhY3ktdHJ1bmsKKzMwODk0IDViM2ZiZmYwNWZmZGE5YjNmY2UyMDliZTcwZDlmMmIxMTA0NTY4NTMgbGVnYWN5LXRydW5rCiszMDg5NSBiNzI1NjQ5NmM5YjAxYzc0NjNmYTFkMWI5ODQ5MmYzZmI5NGVkYmM4IGxlZ2FjeS10cnVuaworMzA4OTYgZDI5Yzc4ZDI3YzVlM2I4OGFkOGYxOWUxNzg2OWIzMTkzNThhYjQyOSBsZWdhY3ktdHJ1bmsKKzMwODk3IGJlMTc4YWZkNDE4MTQ1MTFmZWE4OGU0NDY3NTQ0ODBmZDIxN2E2MmQgbGVnYWN5LXRydW5rCiszMDg5OCBlMmQ3OWZmYTI5MjhjNDBlYWQ0ZTE1ZGRiNzgxZTUxNjBjNTg4YzhhIGxlZ2FjeS10cnVuaworMzA4OTkgODQwZTlmZWQ5MDhhMWZiODVkZmVkNWUyMTU1NmY5Y2U0NWU0NGM2NyBsZWdhY3ktdHJ1bmsKKzMwOTAwIGYzYmFiYWVkZTE4OWEwYjZhM2EyY2ZkN2YyN2E5MmRhYzEyOTljODQgbGVnYWN5LXRydW5rCiszMDkwMSA4MTU2OWNjZGU1YmRmMDBkZjY1ZWY3NWZkZGUxNGJjODg0ZTczYTk0IGxlZ2FjeS10cnVuaworMzA5MDIgYTQ1NzUzMWMwZmQ0OTUxMDcyMTc2OTUwZTA0ZjFjMTc3ZjBmNzczNCBsZWdhY3ktdHJ1bmsKKzMwOTAzIDYyOTYwM2Y2NDQxMjZjYTM1MmMxMTk5NzBjZGQxNzNiYzM3ZDgwMDggbGVnYWN5LXRydW5rCiszMDkwNCA4ZDg2OWY5MjFmMjI2NDIxMjdmOTlmMDI4MzYwNGYyYjExOWUzNjBmIGxlZ2FjeS10cnVuaworMzA5MDUgOWJjZjg1ZDAxMzVjMmU3NGFmZThjODE3MjAzNGFkMDZjOWVhN2Q5OCBsZWdhY3ktdHJ1bmsKKzMwOTA2IDUxNzRiNGE3MWU2ZTRiNzc0ZmE5NWZmNjhmMjdlNTZjYmI4Y2U4NjcgbGVnYWN5LXRydW5rCiszMDkwNyBkMzYzZjgzYzI4NDZhNTJmNTcyM2UxNTVjZDJhNjhlMTNiMDMwZjdjIGxlZ2FjeS10cnVuaworMzA5MDggOTFhNTczMjQzZDVkNzllYWE1MDgyNzhjYWJhZGE1NThlOTY5MTMwMCBsZWdhY3ktdHJ1bmsKKzMwOTA5IDAxNTY0N2M3ZTE4NDMzNjRhNjZhM2EwZjlhOTY1YTA3ZjM2ODY3YTkgbGVnYWN5LXRydW5rCiszMDkxMCBmOWM0OGVkNjdhOTNhZDZlYTc5MDk1MDQ1MGQyNmM4ODRmZWVhZjc2IGxlZ2FjeS10cnVuaworMzA5MTEgZTdjZGI1MDNkMWUwNWJhZTkxODRiMzc0ZDkzY2JjYmY3Y2ViMmZmNyBsZWdhY3ktdHJ1bmsKKzMwOTEyIGFhOTRjODIwYjNlZDAyZGNkOWI0NjJlNGI3OTVhZmU2MGI1MGMyMTUgbGVnYWN5LXRydW5rCiszMDkxMyA4ODJlM2VlYWMzZGQ3YTMwNjA1YTA2YTE2ZjQ4OWFhNzVhYTk3ZTE3IGxlZ2FjeS10cnVuaworMzA5MTQgZTdjZDNjYzExMmQzMDAxMDkyNDM1Mzc3OTc4OTJjYWM1MzNhNjIwMyBsZWdhY3ktdHJ1bmsKKzMwOTE1IDI4YjNkOWE4ZWUxYTMzNmFhOTZiMDI1NWM4YmQ4NjVlNTU5MTNlZTQgbGVnYWN5LXRydW5rCiszMDkxNiBlN2JlNjg2ODAzMzI2ZTQ4MDgxZjFjNGFkMTk2YzdkMWYwOWM0MzI0IGxlZ2FjeS10cnVuaworMzA5MTcgMTIzNTllNTM3NTEyYzMyOGNkMjNmODIxZGRmMWQ5OTE2Zjc4MjRhOCBsZWdhY3ktdHJ1bmsKKzMwOTE4IDAwNjQwNzE0YTU5YTVkODhkOGMzZDcxNjIzODkyNWY2MDVhMjM5NTggbGVnYWN5LXRydW5rCiszMDkxOSBmMWRkOTAzNTdkY2JhMTdjZDgyOWNhMGQ0MjRiOGViOTc3YmI0ODE0IGxlZ2FjeS10cnVuaworMzA5MjAgZWFmM2Y4MDcwMGIzZDVkMTliODliZmFiODk5NzllMjE2NmEwZjgzNCBsZWdhY3ktdHJ1bmsKKzMwOTIxIDQ3OTU4Yzk5NDUyZGUzNmUyZjhlMDNjM2NjYWUyOGVmNzc4YTliN2YgbGVnYWN5LXRydW5rCiszMDkyMiBkMTZhOTc3NzQ2YTIzN2M2MjRlNDk1MzkwZjM4NGUyNTRlNjJiN2IxIGxlZ2FjeS10cnVuaworMzA5MjMgZGEwYzk5MTI1NWMyZWY2NDg0MzFkMDRmZDAxZWFkZjg4NmM3NjIwNiBsZWdhY3ktdHJ1bmsKKzMwOTI0IDQxNzJiMjg2ZDY1OGM3YTFiOGE1ZTE2NWIwNzVlZWViM2ExY2JlN2UgbGVnYWN5LXRydW5rCiszMDkyNSBlOTQ1YTAzZWU1NmM2OWVmNTdkODY5ZGFhMGY4ZmJlNjVmYjUxZjExIGxlZ2FjeS10cnVuaworMzA5MjYgYWVkMmVmOTZlZDU0ZDc5NTliYzUzMWJiMjA1YmMyYjFiZjJmYzFjMiBsZWdhY3ktdHJ1bmsKKzMwOTI3IDZlYjVlMWEwOWI5NWQ1ZTZhOTFhNzNkMDY2MWUxMmI4MTMyOTA4ZWUgbGVnYWN5LXRydW5rCiszMDkyOCBhY2VkZWNkMjAxMjZhZGZiMzM3ZDQxMWMyZTk0NzBhYmI4MDFmN2ZhIGxlZ2FjeS10cnVuaworMzA5MjkgY2FhNmRmOWUwODgwNWRjYzc1NGE3M2Y0MGMwOTdmZGU4YTM2NTVkNyBsZWdhY3ktdHJ1bmsKKzMwOTMwIGQxOWJjM2IxODEzY2I1MThjNzZiZGVhMjI1ZjYwMjExMTM5OGZiZmYgbGVnYWN5LXRydW5rCiszMDkzMSBlYTVlZTNlN2JmYjEwYTc4ZmE4ODcxOTk3NzI2ZDRkZjAxYTliYzRmIGxlZ2FjeS10cnVuaworMzA5MzIgMWZkMDRjMzc0MDlhYjNlYjU0N2UwMGQ1ZjFkOWQwODUxMjYwOWQzZiBsZWdhY3ktdHJ1bmsKKzMwOTMzIGEyNGZkNDVhY2ViMThiZmIyMTRhNDk3OTdjMDNjMGQ3NzFiNjZkNmMgbGVnYWN5LXRydW5rCiszMDkzNSA1NmQ4M2QwYzU1YjYwZmMxN2Y5YmQ2NzQ0MTRlYzBhZmFlMmQ4M2JmIGxlZ2FjeS10cnVuaworMzA5MzYgNTUwYzE1YzQ5MTliMTYyODNjYzgwYmViNGE0YWQ4NTIwYjI1YTAyYyBsZWdhY3ktdHJ1bmsKKzMwOTM3IDVjMTMzZDEzZjMyNTYyY2M0MmY3NjE4MjQxYjY2MGQ4NGJlNDY3NTIgbGVnYWN5LXRydW5rCiszMDkzOCA5OTI0ZjIyZDY2MDRlNDI5NGIzMGI2Zjk2ZmFiOTA2ZTEzNjJkMzJlIGxlZ2FjeS10cnVuaworMzA5MzkgMjc0MmVhOTNhYjIzM2E0ODgyNzYxNDlmZDNkNjE5NDc1NmVjYzM4YyBsZWdhY3ktdHJ1bmsKKzMwOTQwIDIwZGYyNGExMzM0OTAyOWU2YTI1OTVkZjI2YzU5ZmFhMGZlZGMwMTUgbGVnYWN5LXRydW5rCiszMDk0MSA5ZTQzMGFjY2NkYjhmNWMwMWUwNjNiOGE5ZDI3ZWVhMmVlYTFlMjkxIGxlZ2FjeS10cnVuaworMzA5NDIgMDA5ZjNhYmJmNzI2MmEyNWFmZThjYTFkMDAzMjJhZTAxZmE1Y2NlOCBsZWdhY3ktdHJ1bmsKKzMwOTQzIGM3NGNlYTI0MzcyZThmNWYzMjFjYTEzYTYwZTYzOWZlYWYxOTI5NDcgbGVnYWN5LXRydW5rCiszMDk0NCA3ZDNjNmFkNGUzZWRjOWMyY2FmMjlhODIzZDQ0YjMzODA4Y2U2NDE3IGxlZ2FjeS10cnVuaworMzA5NDUgMGFlYWEzZDFlMGZmNzk0MmMxN2E3NmVmNDBiNzY3Yzg4MGUyNGIzMyBsZWdhY3ktdHJ1bmsKKzMwOTQ2IDI0YzhmYmVjNzYxZjIzMWQ3ZjM4ZjIyODQ5YjdlZDA0MGIwNGMzOTcgbGVnYWN5LXRydW5rCiszMDk0NyAzYzNlNGM4YzRhOWRmZjAyNmIyY2MxNmMzY2IwN2MyNzMwOTE3YzMxIGxlZ2FjeS10cnVuaworMzA5NDggOTNiYTQyY2Y0ZTUzYWNmOGIxMTJiZWNjYTlkNWI1YzE4ZTJmMzVjYSBsZWdhY3ktdHJ1bmsKKzMwOTQ5IGZhMjQ1MzhmODY1MGE1NjJjNTUwMTRlMGEyMmRiYmEwYTFkNmRhOTcgbGVnYWN5LXRydW5rCiszMDk1MCBlMjZhMmY3ZjIyNGI1OWE0MjIzODYzOWQ3NDRlMzFhN2FiNDg4MzE2IGxlZ2FjeS10cnVuaworMzA5NTEgYmYwYmM4NDgxNTAyMTQzYjFjN2RiMjEwZWJjZmM5ODE4MDMzYTg1ZCBsZWdhY3ktdHJ1bmsKKzMwOTUyIDNjZDlkZGQ1NTYyZWEwOTliYTJhYjZiNThjYmNhY2QyYWQyYWJkODcgbGVnYWN5LXRydW5rCiszMDk1MyBiNDY1YzlkMjE5NmEzY2JhODc5M2JmZTNhYjNhMWI3OGEwMzMxODA1IGxlZ2FjeS10cnVuaworMzA5NTQgMWFlMGIxNDIzNzBlNDA4NGVkYTRjYjIyMDQ5MmUzZjZiY2NhMDM5ZSBsZWdhY3ktdHJ1bmsKKzMwOTU1IGY4YTkwMDg1YWNjNDFlOWEwNjEyYmFiNzhjOGJhYmQ2MzI0NGZmZjUgbGVnYWN5LXRydW5rCiszMDk1NiA0MDQ3ODIxNDE5YjU3YTg4NTkwYzE5ZDhiN2UxMGI0Yjg2MzZjMzMxIGxlZ2FjeS10cnVuaworMzA5NTcgMzU3MzY1OTFkYzFlN2E1MzFlYzMyZDNjOTk5ZDc0YjAzN2FkNmI3YyBsZWdhY3ktdHJ1bmsKKzMwOTU4IDcxMTZjYjViYWM1MDgzZDQ5YjIyZmI1Y2UyZjU5Y2NkZWNlZjYyMWMgbGVnYWN5LXRydW5rCiszMDk1OSA0MzBlZDFjOGUwNzFkYWIwMTE1NDBmM2RhOWMyOGM5ZDI3ZjYwZTg0IGxlZ2FjeS10cnVuaworMzA5NjAgNjBmZjFiYTQyOGMzZmEwYjA2NGRlNzgyOTJiOTAwNTBkZDA3NmY0MiBsZWdhY3ktdHJ1bmsKKzMwOTYxIDkxYWUyOTJjM2E5N2YwY2QzOGEwMmJjM2IyOWZiYjViMTk3ODIyYTQgbGVnYWN5LXRydW5rCiszMDk2MiAxOGU4ZWQ4MGU4ZDE3NDhkZmY1ZjNmYjc0MGEzYjMwY2Q0NWViZjJiIGxlZ2FjeS10cnVuaworMzA5NjMgZDlkMjRjZTFjYmY2NThkMDczM2FhYmQ4MzI5MDY2ZGMwNzQzNTc1ZCBsZWdhY3ktdHJ1bmsKKzMwOTY0IGU0YTVmNzUzNTA4YmM1MGIwMTU0NDdhMTRkYjU2YmQ5Mjg4YTYwYTYgbGVnYWN5LXRydW5rCiszMDk2NSA1ZGIyY2YzZTc3ZGIzM2M5ODBmZDBlMTQ5YzgwZjY3NjZiNDdkOTFiIGxlZ2FjeS10cnVuaworMzA5NjYgNmIwZGJkZTBmZWQ3MTVhMjk4Y2I3NDIxMWFlZDFkZmY1OWMyMmVmNSBsZWdhY3ktdHJ1bmsKKzMwOTY3IDhmMTM3MjlhOTRhOTY2YTFhMThjYTQ3ZDgxMWRjNDY1OTg0NGMzNTAgbGVnYWN5LXRydW5rCiszMDk2OCAxZjYzMjcxNDBmYzIzY2ZiODA3ZDlmOTE2ZTEzNWVmYjkxNTk0Y2Y3IGxlZ2FjeS10cnVuaworMzA5NjkgYTE2MjYyYmM2MDk4ZGQwODAxN2MzNjE2OGY4NGQ0M2UyYmUyZGJkMCBsZWdhY3ktdHJ1bmsKKzMwOTcwIDkyNWVkZjhlMDAwY2E3ZGZhYTIxMGY3ODg2YTMxMzRmYzI5ZGFhMTggbGVnYWN5LXRydW5rCiszMDk3MSBkOGMyYzQwYjM4NmIxOWEwZDY3ODZlZWI4NzE5MTFmNDcxYmE1NTU5IGxlZ2FjeS10cnVuaworMzA5NzIgYjNjYmU3YTAxNDJhNzhkOTY3NTY5ZTZiZDczMmMyYWI2MzRmZTg5MCBsZWdhY3ktdHJ1bmsKKzMwOTczIDBhNDdkODMyYTY0YjViNGYxM2EyMGFjODg0MjljZGJhNjViZjM2MTkgbGVnYWN5LXRydW5rCiszMDk3NCA0MDE1YTI3YTFkMTNmMmM3NGQ2M2MyMmNmMWViYTE5NDY5NmFlYzJhIGxlZ2FjeS10cnVuaworMzA5NzUgYTIzMGQxMjAwYmMzNWIzZDI2NjVhZmQzYTk5Y2IxNjhkMDViNzRlNiBsZWdhY3ktdHJ1bmsKKzMwOTc2IDdmYjVlOGE1NDFhYjhmY2U3M2FkNjU5ZjRlNjgyMTFjMGU4Njk1MjYgbGVnYWN5LXRydW5rCiszMDk3NyAzNTA5YWQwN2QxNTZhY2I2ZTU2ODJiM2ExYzQ0ZjFiMWZhMzA5MTY5IGxlZ2FjeS10cnVuaworMzA5NzggOWZlMzIxNTRkMjg5MDJlZTY1ZjdmOTAwOWY0NDU0YzBmZmMzMDhlOCBsZWdhY3ktdHJ1bmsKKzMwOTc5IGIyY2U5YzYzN2EyYmM2MDJjODI5MDQ3MjU5NjY1ZTE1YWVjNzQxMmUgbGVnYWN5LXRydW5rCiszMDk4MCAxMTVlZTQwNTE4YTg0ZGNhZGViYjFiOGVlMDhjY2FjZDRhYTdmZTI3IGxlZ2FjeS10cnVuaworMzA5ODEgNjJjNjY4OTNjMmRiYTJhNDUwM2Q0NjRhMWE5M2FmOGViNmE2ODAxYiBsZWdhY3ktdHJ1bmsKKzMwOTgyIDRjMDNlZjA2YzNmZjcwNGZhMWQwYjhjMjhiMzZhZDc1MDIwNTFmNTEgbGVnYWN5LXRydW5rCiszMDk4MyBlYTQ4MDQwNmNjNjU2MjFjZjBlZTYyZDU0N2U2NDM4YjM1Y2Q2YWZhIGxlZ2FjeS10cnVuaworMzA5ODQgMDU1NGI3YzVmNmQ3ZDI2OTIwMzljMDBmMjUyZjExYmE0MmIyZjJkZiBsZWdhY3ktdHJ1bmsKKzMwOTg1IDg4M2FmMjhiOWEwZDA2NjBlZmJiMmY5ODcxMWM5YWI5Yzk0Mzk4ODMgbGVnYWN5LXRydW5rCiszMDk4NiAyNmE3OTIwMDc2NjUyNWI5NTJlNmFmYmI0N2Q4MGRmNDQ5OTI2MTFkIGxlZ2FjeS10cnVuaworMzA5ODcgMmVlOTc0MmFhZGQ4OTIxNDdlNTU0MzAyMmMwMmJlMjZmMTMzYjRjYyBsZWdhY3ktdHJ1bmsKKzMwOTg4IGVkMGQ0YWU2YzZjZTQwOTE4OGMwNWYxYjZjMmJkODkxMjE4YzJiMzggbGVnYWN5LXRydW5rCiszMDk4OSA4ZGNlN2E1ZTVmY2NkMjdlYzUwZGIyMDE1ZDQyNDgyY2YxMzk4NzYwIGxlZ2FjeS10cnVuaworMzA5OTAgNzY0ZGYyZmRjOWM2MzY3NWVjNTBhNmQyZTA3MmMxZWU4NzcwNThiMCBsZWdhY3ktdHJ1bmsKKzMwOTkxIGY0OTExZjdhYWQwMjUzODUyNDA2YmNmMDIwZjM0MGI0MmNlNDA5MWEgbGVnYWN5LXRydW5rCiszMDk5MiA2ZmZhZmNlZjk4ZmIzN2ZkNWY0MjE1Nzk2ZTZlOGNhMjI2MjA3NWVlIGxlZ2FjeS10cnVuaworMzA5OTMgNWM3NTQ4YmYzNzdiMjI4OGM2ZjM4NThlZDAwYjgzZWEwODRkMmIyOSBsZWdhY3ktdHJ1bmsKKzMwOTk0IDE3ZDg3YzViYTZlNGI3MTUyMDA3MmUzZDc1NjI2Y2FjODE4ZDJiMDQgbGVnYWN5LXRydW5rCiszMDk5NSAwNWY3ZTFjNjVkN2U4MzgzYjYzMTdkOTI1YzE4ODUwMTE0ZmZjYjY2IGxlZ2FjeS10cnVuaworMzA5OTYgZjRlOGE2ZDRhYTdjMzdlMWJmNjQ0ZDUwYjk5YmJiZWRiOGMyY2E1MyBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzA5OTcgZjhkMjhlODJjNGNjOTlhM2JlMTAyYTU0YWU5ZTY4OGQxNjY4OWNhYiBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzA5OTggZGU0MDYxNTg0YzgzOTE1NzIyNWZkOGM5NDEzZTY3ZWVmMTQzMmQ5NyBsZWdhY3ktdHJ1bmsKKzMwOTk5IGZjY2Q5ZTk0MzIxMWFkNjNiM2U2NjY3MTNlMWJlMGI2NDY1YjlhYjUgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMxMDAwIGI3OWMxYWZmZjExMjgzNTFhODgyMzAyODc4YzNkMzM3NDViY2JmMWQgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMxMDAxIDE1NGJhYzBiMjZhNTRlYzE5MDkyNmM3YzhiYjU1NGI2YTZmM2I3M2IgbGVnYWN5LXRydW5rCiszMTAwMiAzMTAxNGZiZTIwZGJiMDg4MzAxNDFlNmE3NGQ3NDQ1NjcwMmQ5OWU0IGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMyAzOGM3YzJkNGNkNWFjZjQzNWUzYTU2NDQwMzE5YmQ4MmMyNTk0NmQ3IGxlZ2FjeS10cnVuaworMzEwMDQgOTI0YWRlODAxMDRiMTczOTY2NmFkNTE3MTQzYzA5YzkwNDYzNWQxNyBsZWdhY3ktdHJ1bmsKKzMxMDA1IGJhOTMxMGZlZjQ5ZGQ4MjkzOGRlZjg3OGFkNWIxMGNjN2EyNzE1NDggbGVnYWN5LXRydW5rCiszMTAwNiA2ZTg5ZTgwZTZhMjY3YzUxNjQ2N2RiMmFmNWI4MDFhZDBlMmNiNTcxIGxlZ2FjeS10cnVuaworMzEwMDcgNzEyYjAxZDUyZThjZDJiM2Y5NWJhOGVlOTQ0YTNiMjRmYWNkODk0MyBsZWdhY3ktdHJ1bmsKKzMxMDA4IDE0YjE3NThkZmRkZWRhY2RhMDViODU2ZjI4NTQ5MTRmMDI4MGUwNmIgbGVnYWN5LXRydW5rCiszMTAwOSAyOWZkOWZkYWY1MmE5MDVhNzU3NDc5Zjg3OWUxMTc1YmI5OGUxNDg2IGxlZ2FjeS10cnVuaworMzEwMTAgZWUwZTUxNTQwN2ZkOTc5ZGUzMThiMWY1YTk3ZjI0YmMwMjI2NTUxOCBsZWdhY3ktdHJ1bmsKKzMxMDExIDdjOGRmZDNmNGFlOTA2ZTNhYTEwNzdlMjcwYzBkMzAxYzcyYjRlOWIgbGVnYWN5LXRydW5rCiszMTAxMiBmOTI4NGI1N2I0MjI5YWVkODZjOTFmNDZmY2JjYmI5NWY4Zjk2ZWExIGxlZ2FjeS10cnVuaworMzEwMTMgNWJhNzkzNGE3YmEwMjE4NGM1MmUzZDUwNTdhMmFlNTMxOTdiODg0ZiBsZWdhY3ktdHJ1bmsKKzMxMDE0IDM2ZjcxZmVmNWIxMDhmYzgwMzIzMGJmYTMxMGZlZmRiZGQxNTg5ZmUgcmVsZWFzZTIyLW1haW50CiszMTAxNSBlOTU3ODc0N2Y0M2RmZTY2YjcwNjU0NDliZmU2ZDJlOGE3ZjE2Y2Y5IGxlZ2FjeS10cnVuaworMzEwMTYgMDkwNGQ4NzhiOGYxODc3N2RhZjc2NTc5MTdkNjRiNmM0YWY2MmY1MSBsZWdhY3ktdHJ1bmsKKzMxMDE3IGU5Y2QyMjgxMDRhMTMwYmZkNjExODRlMjNhMjFmZmIyOTM4MzA3NTYgbGVnYWN5LXRydW5rCiszMTAxOCAzYmM3MWQyMzRhMjllOTg5OTI5OGU5YjZiM2JiNTIyYzQ1Y2IwZWNmIGxlZ2FjeS10cnVuaworMzEwMTkgYjgzZmE4ZmExMjFlODRkODMzZTYwYTU5ZmZmYmRiZWU4YjZlNWRlYyBsZWdhY3ktdHJ1bmsKKzMxMDIwIDQyNDdlNjQwZTJhNmViMmE1OGM3OWQwMGJhYmI1ODg1OTFkZTFhNmUgbGVnYWN5LXRydW5rCiszMTAyMSBhODljMDc3ZTY0OGExOGZjZDJlNDZiNDJlODQ3NmFmZjAzZWIxOTAxIGxlZ2FjeS10cnVuaworMzEwMjIgN2I3ZDNiOTA2MzYzMGU0YWZmZDE0ZjQwNzU0OTMxMDE4ZWY2MGQ4ZSBsZWdhY3ktdHJ1bmsKKzMxMDIzIDFmMTZhYmZhZjYzZTlmMGVlNDg4YTg5ZWNlNjkzYjdmYmUwYjkwOGIgbGVnYWN5LXRydW5rCiszMTAyNCBhZGJjM2ZlOGM4MWNjM2EzYTBhOTUxYmU4YTQ5ZmUzYzk4MmQxOWQxIGxlZ2FjeS10cnVuaworMzEwMjUgNWU0MzU1ZDgwZGQxNTk3MzQwZmE3NmIxNzAzMWY4ZWQwZDUzMDlhOSBsZWdhY3ktdHJ1bmsKKzMxMDI2IGU5MDViMjJlMzkyYmE1OGZlZjkzNWViNjdiYjNlNjFhYjA5ODlhZDUgbGVnYWN5LXRydW5rCiszMTAyNyBkODc1MGUwZDNmYjg4ODgzNmFiNzgzOGE4MDY1ZWQ3ZDJhMGM2MjlhIGxlZ2FjeS10cnVuaworMzEwMjggNGMzNWE2NmZjZTRkZjBlZDk1ZWI5MzkwNDQ3YWZiZGIyNTNhOWUxMyBsZWdhY3ktdHJ1bmsKKzMxMDI5IGFlMzFmY2I3YjU4ZTRjY2Q4ODExMjFmMDlmMjliMDMwNGY0ZmQyNzEgbGVnYWN5LXRydW5rCiszMTAzMCAwOTBhNTBjYjI2OTAwZTA4OWU0NTI3ZjM0MWFjNmJhM2FiZDNkZjMxIGxlZ2FjeS10cnVuaworMzEwMzEgZTQyZTMwMjViYWUzYjQ5YTU4NzcyNTlkOWY3NGE4NDExNmZjYTRkZSBsZWdhY3ktdHJ1bmsKKzMxMDMyIDYyMDUzOTE2NWU1MzA4YWM5YTg0ODBhMmVlN2RlMTA4ODM2NGFmMzMgbGVnYWN5LXRydW5rCiszMTAzMyAwZGQ4ZDhhNzYwMTVlZjBkYmI5NmJlZmQ5MmVkN2ZmYmRmNTg2MjYwIGxlZ2FjeS10cnVuaworMzEwMzQgZmU0MGZjZjQ5ZWU1NjZkZmI1ZmMyOTE4OTE3MGQxNTY2YzAxNmUyOSBsZWdhY3ktdHJ1bmsKKzMxMDM1IGI0ODBhNGY3MDdmNjE3OGIyMDYyNjgwMWZlZDA1NmEzNGUzZjE3MzQgbGVnYWN5LXRydW5rCiszMTAzNiBkOWQ1N2Y1Zjk4Y2RhNzIyYjc4NGFmZjlkZTg4YzBlZmNhZjMyODU3IGxlZ2FjeS10cnVuaworMzEwMzcgMTQyNzZlNDNlY2U2MDQ3OWRhYzY2NzIxNDAyZTQxZDljOWY4NTUwNyBsZWdhY3ktdHJ1bmsKKzMxMDM4IDQ0ZjQ2NTY4MzkyN2IzY2ZjNmRjM2MzYTZmMDM0YTQwZDk5NjBlNWIgbGVnYWN5LXRydW5rCiszMTAzOSAyMGM1ODFjMjNiY2UzMzM2ODY1MjQzNDc0OTBkNDkyZGE1NGNmOTFkIGxlZ2FjeS10cnVuaworMzEwNDAgMGRlMTQyNTJkMjZjZTZkZDNjMTQxMWZhN2FjYTIwMWU1YzgxNDY5OSBsZWdhY3ktdHJ1bmsKKzMxMDQxIGEyZDk2ZTdkOTFhMWE5ZjllYjA5MTQ3Mzc3NThmNDM1ZTQzOTFmZjkgbGVnYWN5LXRydW5rCiszMTA0MiBiMWQxZmU3ZmI1MTRiMTczYTgwOGNhNWRiOTY5ZjViNDBlZDI2NTA4IGxlZ2FjeS10cnVuaworMzEwNDMgZDYyYmQyNDA3MjkxOWFiMDQ1M2U0N2ZmY2FjMjJjZTQzZDI5MzM0NiBsZWdhY3ktdHJ1bmsKKzMxMDQ0IDBlNmRjZTFlYzIzMWNkNDdjNDMwZDJmMWY1YjI5YzRhZjJlN2VkMjYgbGVnYWN5LXRydW5rCiszMTA0NSA1ZjMyOTQyYTIyNWFkYTllYTViOTVhZGY4MGJmZGI3NWIwMDk5YThjIGxlZ2FjeS10cnVuaworMzEwNDYgNTFhYmI1ZTg2MjI2MjU1NWZjZTUyOGQzYTQyOWVhNzQ0MzA3YjdjNiBsZWdhY3ktdHJ1bmsKKzMxMDQ3IGIyYjU3NDExOGZmZGEzZmRmNzRkNmEyZmJlMmE5ZmM4NzY5OThhYWEgbGVnYWN5LXRydW5rCiszMTA0OCA4MWEyZDE4OGVhMWY5ZjZhMzNmYThiNDk1ZWUwNzljY2U1MGIwZmVmIGxlZ2FjeS10cnVuaworMzEwNDkgNjc4NmU4NmI4ZmYwYWQwYmEyNTczODJiZDNmYWFhNWM4YmYyY2U0YyBsZWdhY3ktdHJ1bmsKKzMxMDUwIDE3YmZkNWRiYzBmMTZkYzg1YzE2YjIwODhhY2M0MjgwN2Q2OTMyMzUgbGVnYWN5LXRydW5rCiszMTA1MSAwZjllYjg0MTNiNjFiNGU2MjUxZTQ5ZjA3NzYyNTk0N2JjYjIyYTJhIGxlZ2FjeS10cnVuaworMzEwNTIgYjE3M2EyYTIzMDgyNWE0MWZhYjFkYWY4ZDBjNTQ4ZTNiNGYyYjk3NyBsZWdhY3ktdHJ1bmsKKzMxMDUzIGQ1ZjQ3ZTE0NjVkNjZkZTUwMzI4MjlhYmJlMjRlMzUwZTc3MmQwMTggbGVnYWN5LXRydW5rCiszMTA1NCAwYmIxNTRmYTgwNDdjOGYwZmM4MDNiZWNhZjZhMzk1ZDE0MWJlNmZmIGxlZ2FjeS10cnVuaworMzEwNTUgZGRlZThjMTU4MzAxYzY4M2NmYjk4ZTU3Zjk2ZmQyNjllZmM5MDU1MiBsZWdhY3ktdHJ1bmsKKzMxMDU2IDJlMThkYmNkOWUwNGNhYmQ2NDdlZGMzMmI5YTBjYTc4OGMzYzJiNGUgbGVnYWN5LXRydW5rCiszMTA1NyA2ODkyNTdjYTRkMDkyYjZkNzlkODUyMDM0OWI3MGQ1ZGYxMjE5ZDRhIGxlZ2FjeS10cnVuaworMzEwNTggNjk2YzQyZGE3ODc1MzMxODIxMTMwZTA4OWViNDUxNDJiYzdmNjA3MyBsZWdhY3ktdHJ1bmsKKzMxMDU5IDU3NjVkNTI0ZGU3MWUyYWNkYjllZGJiMGEzZTUwMmZlZDQ1NTZkYmIgbGVnYWN5LXRydW5rCiszMTA2MCBkMTEyMjNkYWFmNjFkM2M1MTNiZWNhYTBhZjE5ZjkzMjlkNzNhNmJlIGxlZ2FjeS10cnVuaworMzEwNjEgMDJmMTM4YzYzOWEwODNhMTM3NGUwNzQ0NjZmZDdkNzIwODhjZjY2ZSBsZWdhY3ktdHJ1bmsKKzMxMDYyIDg0MmQ2YTI0NDk3YWU4M2E1MzY5MjgxYjVlYmFkM2FiMGJhYzdhZDIgbGVnYWN5LXRydW5rCiszMTA2MyA5OTA5OWRlYjYwMjY0MGJiOTU2ZjQzMTI2OTJlMzkzNmRjNWJhYjM3IGxlZ2FjeS10cnVuaworMzEwNjQgNzJiMzhkNWZlNjFmOWFmZWVkMmEyYzZmZDRkMTYwZTVhODU0Y2FhOCBsZWdhY3ktdHJ1bmsKKzMxMDY1IGNiYzg2MDI4ZDlmM2JhYjcwYWQ4MjQ5NzViMzFhY2MwMDg5Y2ZhZDkgbGVnYWN5LXRydW5rCiszMTA2NiBmZGM1MmIxMTk3MDkwZTEzMjkwZjk4NDM4ZTU1ODM1NjJhNjQ4MjIxIGxlZ2FjeS10cnVuaworMzEwNjcgODc5NDNmYWY0ZmQyMTZhNjEwMmUwN2Q0OTk1NDFjOGFiYzUxMThlNiBsZWdhY3ktdHJ1bmsKKzMxMDY4IDk3YjI4MTcwNjM0Y2NmMTkyYzlhZWY1NmI1ODA4OWI5ODY0NjEyNzQgbGVnYWN5LXRydW5rCiszMTA2OSAyYWRkMDA4YjFiN2QwNzVkMzMwMjc3NGJhOTlmNTVmZTJmYjIyNjlkIGxlZ2FjeS10cnVuaworMzEwNzAgODhjZWVlZWQ3MGJkMTUxZDVlYzA5MDExMTM5YmJlYzlhYzM4NGM5YSBsZWdhY3ktdHJ1bmsKKzMxMDcxIDBjODgxMDM3M2ExYTc3Mjg2NDkwYzk2MWJiNTQ1Y2Y0MDE0MWQ1ZGQgbGVnYWN5LXRydW5rCiszMTA3MiBlZDJkMjNkMmZkNDEyYjlmN2U3NjVmMjY2YTE3MDllMDVkMGM5MmVlIGxlZ2FjeS10cnVuaworMzEwNzMgYzQ3ZGU4OGFlODVkN2U1NDdhMmZkOTE2YzUzOWRiNWZmMjM5MTNjMiBsZWdhY3ktdHJ1bmsKKzMxMDc0IGY5ODIyYjE4Y2Y5MTljNTZjYmM5ZmVhNjVjYjU4MzM5OTFjZDliMzkgbGVnYWN5LXRydW5rCiszMTA3NSBiZDYzZjI4Y2U3YThiZmRhMTAwMDVjMzA3NDc4MWJiYjlmYjQ1MTZhIGxlZ2FjeS10cnVuaworMzEwNzYgY2U3NDhhZmJkNmVmZDJkNGE3MzQxNGI2MjE5Mjc3ZmQ1YjNkZGVkMyBsZWdhY3ktdHJ1bmsKKzMxMDc3IGM0MjVmNjZkYjQ1ODIyNTAzZDllYzlkNDRlMjQ1Nzc3OTZiMWJlNGMgcmVsZWFzZTIyLW1haW50CiszMTA3OCA3ZmNkZWViMTZlYzBkNjRlYmMyZmM4OWNkYWI2MDc3ZDRkNjEwMmVlIGxlZ2FjeS10cnVuaworMzEwNzkgMzE4MDc4ODBmNTk5NjU5MTRjYzAxYjFmY2Y1NTJmZWE4MWNhYTAwZiBsZWdhY3ktdHJ1bmsKKzMxMDgwIGQzYWYxZTc5MzI0Mzg5MmJkYmMyYTIwYTViM2ExZjQ1ODc1MWI2ZmEgbGVnYWN5LXRydW5rCiszMTA4MSA1MGM3MzQyNTBlMDUyOWI2NmI1NWRjMjk3ZTBjNGFmZWI1ZjI4NTg1IGxlZ2FjeS10cnVuaworMzEwODIgNjU5N2MwOWIxZTZkYzlkMDBkMWYzNTI4ZTI3Njk4YzMxNjgwMDk1YSBsZWdhY3ktdHJ1bmsKKzMxMDgzIDNhZTBhMmY4N2FhMDZjNzRkNjlhYjcwZjc5ZjA4NDJhZWQ2MzMzMWUgbGVnYWN5LXRydW5rCiszMTA4NCBjMjY3ZjI4NzI0ZGRjY2RlYmM1MzE4OGVkYTVkYTllMGNhNzIwNWI5IGxlZ2FjeS10cnVuaworMzEwODUgMjRlMzRhYmM2Mjk1MDA5NzMwNjUwYTUwZTE2N2M1NjkyMDY1MGE0MCBsZWdhY3ktdHJ1bmsKKzMxMDg2IDVlZWZlYzk0YTc4NDg1NDJiOWEwNmU4YzVmMjFjMWU4ZGRiOGI3MDEgbGVnYWN5LXRydW5rCiszMTA4NyA4ZDgzNTc4ZGJhODE0MWQ0NmZmZmUxMDI2YWFkMzVlMTQ2ODVhODQ0IGxlZ2FjeS10cnVuaworMzEwODggZmFhYmQ5ODY3ZmI4ZGM0OTk0MGQzOGMyMjk2ZGE3YTZjMGFiYmJlYiBsZWdhY3ktdHJ1bmsKKzMxMDg5IDRhYTRlNmIzZWNhNzIzZjQzNDllNzQ2ZjdiNjYzMGQ1NjE3MWEzZTIgbGVnYWN5LXRydW5rCiszMTA5MCAzYzg5MDQ5ZmU2MjhkMzRkYTFlYWExZTQ5YWE2NTA4MTJlNWRjNWIyIGxlZ2FjeS10cnVuaworMzEwOTEgZDQyZDgzZTU2ODZjM2I5NmJlZGVlNGQzYmM4NWRjODgxNDlkNTg3ZSBsZWdhY3ktdHJ1bmsKKzMxMDkyIGFiMTQzYWVkNDliOTA2ZmI4MzM2MDAwM2QyZTZkNzZlOWE0ODhmODIgbGVnYWN5LXRydW5rCiszMTA5MyAyNTY3ODlhYWFjZDY1YzAzMjMyYWMyZjFlMTQ0MDM4ZGFjMjljN2Y1IGxlZ2FjeS10cnVuaworMzEwOTQgNjIwYmIzNTUxYmI2NzQ3YTY2MGI0ZGVmYWRkZTNmMjA0NTUyNzE0ZSBsZWdhY3ktdHJ1bmsKKzMxMDk1IDg3NjNhOGY2YzBkNWJlZjJlODAwMjVjMDA0OTEyYWI3YzU2YjQ4MjAgbGVnYWN5LXRydW5rCiszMTA5NiBjMDc1YmEyYWJmN2FiYTZmNmZkZDMzODBmN2NmNTIzZTUyNjFkNGRmIGxlZ2FjeS10cnVuaworMzEwOTcgZjMzZTY0NDg0NjIwODFjNzRjYmRlMWJiMTg2OWJjY2JiOGJiYzQ0NSBsZWdhY3ktdHJ1bmsKKzMxMDk4IDc2ZmE4Yzc5YTg5ZDBhNjkwYmMzNWRlOWU5ZGI3OTI5MmRiN2U0MDggbGVnYWN5LXRydW5rCiszMTA5OSBiYTU3YzNkYWY2ZTlhMzlkNmViMDJkMjYyMDU2OWYzM2IzMjllZjAzIGxlZ2FjeS10cnVuaworMzExMDAgYmQ4ZTYyMjJlMTZhMzJhM2FmNDMyNmIwMTA5MzAzN2EyY2NkNmFlYiBsZWdhY3ktdHJ1bmsKKzMxMTAxIGYyMzVmMTM1ZjNmOGEyNzg2MjkzYTc2OTM5MDFiYTA0OWNmN2UwNzcgbGVnYWN5LXRydW5rCiszMTEwMiA2NzRmM2VlY2ZmYzUwNjllNzFjYzdhYWFiMmY4MzZkYzJiMTU4NjhiIGxlZ2FjeS10cnVuaworMzExMDMgMDE5MDg3MmViY2YzZDc3NDg0MDE2M2ZjNjY0OWUwNjQwZDUzYjg2NyBsZWdhY3ktdHJ1bmsKKzMxMTA0IDNiOWZiNTdmYWMzNGEyNWQ0OThhNGQ1NWIxM2NjNGMyMzNhNDRkM2EgbGVnYWN5LXRydW5rCiszMTEwNSAxNjA4NTA3YmNjM2ZmODQ3YWY1NjFiOTZiYjYyZjIxM2Y0MTk0OTk1IGxlZ2FjeS10cnVuaworMzExMDYgOWJjMWM4NGIyM2U2NjIzNjkzMjgzMjY2OTljZDYwZjc4YjFlODk3YSBsZWdhY3ktdHJ1bmsKKzMxMTA3IDJmMjI3ZmYxMWY1ZTNhZWMxNjRhOTU5YjM0NGFkNGM1YzdiZTI4MjMgbGVnYWN5LXRydW5rCiszMTEwOCA2ZmZiNWM4ZTY1MzhlZTg1YjhhMmU0MjI0MGEzYjc5YmRjMjU5ZmVlIGxlZ2FjeS10cnVuaworMzExMDkgZjQ3YWYyY2RiOTgzYjQxZjVlYWNiYmViZjMxMzcyNjY4NTM5NjY1NyBsZWdhY3ktdHJ1bmsKKzMxMTEwIDJkN2MwY2JjODNjZjNmNDliOWEwMGFhMTE1M2I0MzNjYTM3ODIwOTEgbGVnYWN5LXRydW5rCiszMTExMSBkMWVkYWFhOTM4ZmJlNzQ4NTJmZjU1NTJhZjQ1M2M5Y2E0ZGU2ZTE3IGxlZ2FjeS10cnVuaworMzExMTIgYTJkYjQzN2QzMTRiNDg5MzdiYTBiY2U3ODlmMDU1NTVjMjcxNjQyMCBsZWdhY3ktdHJ1bmsKKzMxMTEzIDY1NjM1YzcyMTM1ZTFhY2M5YzY3MzM1YmRmZTVjNzc2YjdkMzE0MGYgbGVnYWN5LXRydW5rCiszMTExNCBhMDU4MTQxODRlOGM2ZTUwNjFjZjBiZjMyZTAyMTRkODU3YWQ5YzEyIGxlZ2FjeS10cnVuaworMzExMTUgOTgxOTdlYmU1Y2NiN2RlZjc4ZTdiNDQ3NzliZmY5MTYyNjRjMzEwMiBsZWdhY3ktdHJ1bmsKKzMxMTE2IDcyODMxNDBkNDMxOTg2YjI0M2RhYTcwMmE4ZjNiOThhOGZjZjMzMjYgbGVnYWN5LXRydW5rCiszMTExNyAzZWIxMGExNGJhMDBkOTZiMzQwNDY0YzJlZGNmYjNiODlkMTU1ZjA5IGxlZ2FjeS10cnVuaworMzExMTggZTNmYTgzNzdmMzBjNTgwYTUwYjRiOWFlZWRjNjZmZDA1YWNiOTNjYyBsZWdhY3ktdHJ1bmsKKzMxMTE5IDkzMjEwNTY0YmI0NjA3OWYwZDYyZTE1NDYzNWY0ZTRiZTdjMGRhNWUgbGVnYWN5LXRydW5rCiszMTEyMCBkNmI2NWUzODU1YTI1MDBkOGQxNTllM2I0ZDQzNmVmYmY4MjEyZDk1IGxlZ2FjeS10cnVuaworMzExMjEgNzhlNDNiMzZlNzg0NGViOGQ0NTllOGI5NDJjNmMzOWM5YjA0NGU1NCBsZWdhY3ktdHJ1bmsKKzMxMTIyIDU3YmRmNGJhYzQzNWE3ZTY2ZWNkNWZjYzE3ZjllNjY5MDdmNGI5MjcgbGVnYWN5LXRydW5rCiszMTEyMyBlNWQxODExMjAzMDM0OTExNWViMjZkZDczMTBiNDQzYzUwNjZjNDY2IGxlZ2FjeS10cnVuaworMzExMjQgOTE1ZDMyN2EyMTRhOWFmYTliNmU4NDAxZjllMTZlZWNlY2Q2ZTRlMyBsZWdhY3ktdHJ1bmsKKzMxMTI1IDcyMjI4YTI1ZGFhYTI1OTIzNDkwOTExZTYwODk2M2E3MjY5NjllOWMgbGVnYWN5LXRydW5rCiszMTEyNiA4ZTYwZWM4OGVjYjg0ZDkyNTMwZDgzNDY0MmEzODk2OTVmZWU4YjZlIGxlZ2FjeS10cnVuaworMzExMjcgYTM1ZGZjYTkzMzE4ZDFmOWU4M2MxNzg2YzVjNTkzZmQ5N2EyZmEyYyBsZWdhY3ktdHJ1bmsKKzMxMTI4IGQxNThkMTBlZjRhZWIwMjdiNzQ0ZjU2YWFlNWQzZGFhYWVhNDlhM2IgbGVnYWN5LXRydW5rCiszMTEyOSAzMTNlOTQ0YTJjODg2MjM2YTZlMTk3YWZiMWM1YTc1YzYzZjk0NzA5IGxlZ2FjeS10cnVuaworMzExMzAgOWEzYjg0NDNkNWE2MTYxNWZmZDlkZTNmNWYzODcwNTM5MzE4OTQ3OSBsZWdhY3ktdHJ1bmsKKzMxMTMxIGM0MjE0YzIwYjIxZGMwMjBhODA3ZjYwYjEyM2Q0MjQ5OTQwOGUxZjMgbGVnYWN5LXRydW5rCiszMTEzMiA4MmE4Y2EzYzkyOGMwYWRlMzNkOTdiMjExYjAwZDMwZWI4NTk2ZTJjIHJlbGVhc2UyMi1tYWludAorMzExMzMgMWZhNDQ0MTQ5ODU4OWQ1MDE4NTczZjJhNTAyN2QyZWM0NGM2MDc0OCByZWxlYXNlMjItbWFpbnQKKzMxMTM0IDQyYjYxN2ZkOWM2OTIzZDc1NzIyODJiOWMxN2RiMTY4ZWZkYzFlY2MgcmVsZWFzZTIyLW1haW50CiszMTEzNSAyMjU1MWUxZDJjNmU3MGVkNGQ0OGJkM2JlODU5MWViZGU2NDJhMDI4IHJlbGVhc2UyMi1tYWludAorMzExMzYgY2NmYWNhZWMwOTY4OTE5ZWJiZmU4YmQ5OTkzYjA2NjBlMWJkYzc3NiByZWxlYXNlMjItbWFpbnQKKzMxMTM3IGJlYjIwMDhhM2MzMjk1ZDdlNWJmMGEyYWE0ODk1YzJhNTU1Zjg3ZWMgcmVsZWFzZTIyLW1haW50CiszMTEzOCBjOWNjYzlkMGJhOTlhODhkYmU5ZWE0NWQ5MTFhYzRmYzU5NDY1ODRiIHJlbGVhc2UyMi1tYWludAorMzExMzkgMWQ4Yzg2MjM0ZDljMmJkZjA2NDEwMjg4MDhmYjU5NDNmMGI0OTg2ZCByZWxlYXNlMjItbWFpbnQKKzMxMTQwIDA2MDIwNzhiZGNlMTIzYjAyYjAyOWZlNDhjNmNhZTQzZTg0ZTI5NGEgcmVsZWFzZTIyLW1haW50CiszMTE0MSAwNzI5ZjgzOTNiMTYwM2Y3ZTdlMjQ1ZDQzOGZlODFiYmZmMWMzZDkyIHJlbGVhc2UyMi1tYWludAorMzExNDIgNjQ3YzI5MTQ3ZDVkMjdlZTg0YmI0M2ExZjY3NDhmOGI2M2ViMTBlOCByZWxlYXNlMjItbWFpbnQKKzMxMTQzIDgzNzAxZmFiMzJmZTExNzU4OTU4ZjVkNzdhN2EyMWEyNTk1NWU5ZTIgcmVsZWFzZTIyLW1haW50CiszMTE0NCA0NWFkNzdhNDNkODdmNjliYWY0MDJiMDA1YTkyODNjZjhlMDgwYzU2IGxlZ2FjeS10cnVuaworMzExNDUgMmE4MWMxYTg4M2NiYjVjM2VjYTIwMTFmNDdiMTNkM2YyMGRiMDZmNCBsZWdhY3ktdHJ1bmsKKzMxMTQ2IDljZGMyMzNiNzIyNGIwMzdiZGNkNzY3NGI2MDgwYjliMTk0Y2Y4Y2MgbGVnYWN5LXRydW5rCiszMTE0NyA3NGQ5NjA0ZTkzNTMxNmQ3YTE2N2QzZjU3OTMyMjFlZWUxNGE3NTk0IGxlZ2FjeS10cnVuaworMzExNDggNTU4ZDBmM2I2MjU0OGJmNDM2MGY4MzVjY2IyOGIwODUzYzQ0N2UxNCBsZWdhY3ktdHJ1bmsKKzMxMTQ5IGJiZDhhYmFhMGYzMzUxMjgyM2Y2Y2NiNWIyZGZlZTkzOWVjMTM3M2IgbGVnYWN5LXRydW5rCiszMTE1MCAxOWQwYzk5OTU1NWU5MWNiZjc3MTEzYTY3OGUzODYyYmY4OTc2NjEzIGxlZ2FjeS10cnVuaworMzExNTEgNjVmZGJkNzgxY2E5OWFmMTk5ZDhlNWU5MTI1OTk4NTgwODUxMmJiZiBsZWdhY3ktdHJ1bmsKKzMxMTUyIGEyNDUyODMxOGJlOTZjYmEzZmIyMDIxNTQ0NGZlZjEyZjE5YTFmZGIgbGVnYWN5LXRydW5rCiszMTE1MyA4MjAxMDM4YmJmMzBiZDViZDFlNDEyZWM0YjcwZjhmYTk1OGRiNWU1IGxlZ2FjeS10cnVuaworMzExNTQgZWFhZWY1MTZhNjg1M2RlNzI0ODQ3MmM2ZmU2YjQxYWNmYjA5MWZkNiBsZWdhY3ktdHJ1bmsKKzMxMTU1IDQ1OTA2MjIzZWZiMjM2YTExZDBjMmYzNjQyN2YwMTI3OGJmYTRmZjUgbGVnYWN5LXRydW5rCiszMTE1NiA0YzlkMDJjNTY1N2IzNWFiZTg3MDlkYTA1MGQxY2FiZTM4MjQwMTFjIGxlZ2FjeS10cnVuaworMzExNTcgYWZjOWEwOTVhMmQ1NmY4Zjc4OWU4NGJmMDMzNGE0ZTJjZTcwMzM0YyBsZWdhY3ktdHJ1bmsKKzMxMTU4IGY3YjM4MjZkMDEzYTFkZWRiMjEzYjMwMmRkNTk1ODdlYmU5ZTgzMDcgbGVnYWN5LXRydW5rCiszMTE1OSA2NTY3ZjQ4MjllN2VjNGZmMWE1YmZkM2YwYTZiNjNlNmQ3YmRmMDBlIGxlZ2FjeS10cnVuaworMzExNjAgN2JmN2RhYzRkYzQ5NjE0YjkyMDM2ZGUyNzMyMmExNjhiZDE0ZDBjNSBsZWdhY3ktdHJ1bmsKKzMxMTYxIDY0MGU1MmRlZTFhMDNkMmEyMjU4NzFiMDY1MTQ2ZWE0ODYyOTczYzggbGVnYWN5LXRydW5rCiszMTE2MiA0ODAzMzAxN2M3OGYyMDE4Y2FkMjI1NGJiZmY0MzI4YzY2N2FjNGFlIGxlZ2FjeS10cnVuaworMzExNjMgYzQwY2I5YmZjOGU3YzNkZjE2NTg5YmRlMmJlYmZjOWU3YjcxOWYwYiBsZWdhY3ktdHJ1bmsKKzMxMTY0IGU0ZTI2ZmUyODZjMGI4OWMyYmE2MWI5MTJlYzJlNGVlYWM0ZDBhZWYgbGVnYWN5LXRydW5rCiszMTE2NSA5NzRmMTk2YWJiODdiZWNjZWI4NmU0ZDRiMzlhYWViMDM3NzM5YmU4IGxlZ2FjeS10cnVuaworMzExNjYgNjAxNTQ5YzY0MDM5Yzg0YmJlODFlNDYwNDk3YmI5N2UxZjM1OGE2YiBsZWdhY3ktdHJ1bmsKKzMxMTY3IDJjZDRlMGRmZjNhNDMyNzYwYWU5NDIxYWY4MjBlZTE5ZmFiZTI5YzcgbGVnYWN5LXRydW5rCiszMTE2OCA2MjA1ZGEzODNlNGNiNDFiNjg1MDY5OThiM2EyMzAxOGRlMzRjZGNmIGxlZ2FjeS10cnVuaworMzExNjkgMDA0MjZjN2YxNDdkMjAxYTQzMjU2ZGFlZjg3ZDMzNDczNDA0OTFmOCBsZWdhY3ktdHJ1bmsKKzMxMTcwIGRkNzNhMTIxOGY2OWE4OTY0YTBkMmJhNTRjZjU1YTgzY2JjNWY4ODIgbGVnYWN5LXRydW5rCiszMTE3MSA0ZDA0ZjQ1ZmY4YTFlNmM1OGU3MDVlYzliNWRkYzE1ZWMzMWVmYWJlIGxlZ2FjeS10cnVuaworMzExNzIgOTM0YTJiNDk3ZDFkZDJhZGU1MzMwOGU5NDgyMjYxMDk1Njk4ZDUzMCBsZWdhY3ktdHJ1bmsKKzMxMTczIDhhMTQ3YTQxYzNmN2ZhZTBiY2Y1MzMyZTI2ZTdjZjZmYjhjMGQ2NTAgbGVnYWN5LXRydW5rCiszMTE3NCBiNjZhY2JlMjk1NzVjNDVkNWFlZmE2OWFiMzcwNTlkOTliYWZhNDc3IGxlZ2FjeS10cnVuaworMzExNzUgZTk5NjE1ZGU3NjQ3NjNjOTBlMjNlNDBiMWIwNjg5MDg0MTY4ODI4NyBsZWdhY3ktdHJ1bmsKKzMxMTc2IDUyY2U1N2I3OGM3MWE4NjAxMmY4MmUxZmFlZTgyNjljMWFiZTQzNzQgbGVnYWN5LXRydW5rCiszMTE3NyBkYjc4NGQyOWY0ODFlMDViYjdlMjNiYzU1ZThiOTY2ZDQyYTVmMjI2IGxlZ2FjeS10cnVuaworMzExNzggZjYxOTg2MTQwNTAzMGFhYTgyZWU1NGZhNGYwYmU3ODFlMzZiOTg4ZiBsZWdhY3ktdHJ1bmsKKzMxMTc5IGYyNjAzNDNlY2NmMTMyMmNiOTMwNGFkNDRiZDIyMjBjMWNkYjE4N2IgbGVnYWN5LXRydW5rCiszMTE4MCA1OWI0ZWJjMjlkNTMxN2E2YjdmYzFiNjBkMzljM2NhMzcxYjBkYjdhIGxlZ2FjeS10cnVuaworMzExODEgZWQ5MWJmNjAxYjJkZTk4YWYwODRkYzk3NzJjNmVmNTg5OTRkNzcyNCBsZWdhY3ktdHJ1bmsKKzMxMTgyIDEwNmE0NGE0Yjk3NWRiNGYxYjA4NmFmNDVjZDQ3Y2U1MmI2YWE1ZDQgbGVnYWN5LXRydW5rCiszMTE4MyBhOWRkMjE3YTliYjEwMWUwOGIxMjMyNGQ4MzIzNjY1OTY0YmQwMjg0IGxlZ2FjeS10cnVuaworMzExODQgZTExZTk3NmZlZTc4MTJhYjQxMThjNWJmYmFkMzJlMzQ4MDdkNTkyMCBsZWdhY3ktdHJ1bmsKKzMxMTg1IGJhM2VhZmY0OWI3YWUwODlhODhmYzAxMjg2ZjFkYTQxZTY1MTZmZjAgbGVnYWN5LXRydW5rCiszMTE4NiA2NzMxNTAyNmQ2ZDM1OTliNjZjYTU5MTQ3MzFlYmFjODUyMzY0YWYzIGxlZ2FjeS10cnVuaworMzExODcgYjU5NWM0NzM1ZmNjYzZmZDAwM2IzYTg3OGU4OGE0MTUwNTk2OWQ0MSBsZWdhY3ktdHJ1bmsKKzMxMTg4IDBiYmJjYWNjMDVmYjllN2U4ZWU4NDcwZGRjNjMzNWRjY2Q5OGY2N2IgbGVnYWN5LXRydW5rCiszMTE4OSA2YTEzOTQ2NjAyNzA3NDE3MDI1NjZlZDg3NmM1MmEyN2VkZDY4YWJlIGxlZ2FjeS10cnVuaworMzExOTAgMzUyNzhhYWFlNzc1Y2Y5NzFjMjBlYWYyYzU1MDQwNzYzYjU1N2ExMiBsZWdhY3ktdHJ1bmsKKzMxMTkxIDNhNTI4YWEyMjJiNmM5ZDZkZmUyMTNiYmU2YzcxYjU4NThkODhlODEgbGVnYWN5LXRydW5rCiszMTE5MiBkZjM2M2QxYjM4NDI4ODU2ZmI0YjU0OTIzODJmZjNkZDY5Yzg3YTU5IGxlZ2FjeS10cnVuaworMzExOTMgNjUyZGY0NTQ5NzA4NTUyYTMwNmZmNzJiZTc0YmI1ODY2N2UxN2I3MCBsZWdhY3ktdHJ1bmsKKzMxMTk0IGQ1ZWIxMmJjY2QxZTlmNTU0NWEwZDQ2NDAwZDNiNGQ5ODQ0MTE4ODYgbGVnYWN5LXRydW5rCiszMTE5NSA1ZDc4ODhmYmVhMDA0ODRiNzUwMDFjNWU1M2Q4NWUzNDIyYzQyOWM1IGxlZ2FjeS10cnVuaworMzExOTYgZjYyZWMyNDA1ZTlmY2I1NWVmMWRkZDIwOGM1NGY1NDkzOWI3NTg0YSBsZWdhY3ktdHJ1bmsKKzMxMTk3IDhlNWRlNDM1MjliNzU3M2NmYjQ1MGJlODQyM2JjYmNlNDE2MjM4OTIgbGVnYWN5LXRydW5rCiszMTE5OCAzZTk4ZDJlMmQ4NDdmMTZjNDNjMjE1M2UwN2MyMGMyNjRkNTEwNzcyIGxlZ2FjeS10cnVuaworMzExOTkgMjAzMzBlMTMyMTFlYWRmZmU3YjViNDY3MTVkYjE3MmZkZDRhMmQ1NiBsZWdhY3ktdHJ1bmsKKzMxMjAwIDNiMGIzNmNkZDljZDk5ZTc0YWUwNTNhNjNhZjU2ZWY1ZmI2YTRmNjMgcmVsZWFzZTIyLW1haW50CiszMTIwMSBjODk0M2Y4N2M2OGI5OWYyZjE2NWZmYmUyMDdkMTZjMTM4YmYyZTA1IGxlZ2FjeS10cnVuaworMzEyMDIgOTYwODAzZjlmNjk4OTk0ZmEzZDBhYWY0NzA4OTM2NzFkN2JiOWZhNCBsZWdhY3ktdHJ1bmsKKzMxMjAzIGNlM2ZhYWIwNmRlNzUzYTZhOTE0Mzk1NTdmNzc4MTAxODhiMTAwZDQgbGVnYWN5LXRydW5rCiszMTIwNCA4Zjg0NDhmYjU4ZDZmODk2MDc1MmEzNTM5NmVmN2E2ODliNTdkZGE4IGxlZ2FjeS10cnVuaworMzEyMDUgOTVmM2ExY2QwMGUxNjBkODVmNGU4NzM4OGVmNzQzZGVhMWEwNWUyNSBsZWdhY3ktdHJ1bmsKKzMxMjA2IDUxOTlmN2VhNjc0NmYzOTgzMzVhNzkzZTk5OGI5MDg2ODk3MWZmZTkgbGVnYWN5LXRydW5rCiszMTIwNyAyNjE5MTVhNmM2ODUyYzk4NGZiY2YzYjcwNzAzYTYyZTAzYTZkMzg0IGxlZ2FjeS10cnVuaworMzEyMDggZDY5OGM1NjIzZGEwNmY1MWVjNTk3ZGRjNzAwZDgzNWU2MmIyNmJiMiBsZWdhY3ktdHJ1bmsKKzMxMjA5IGIxOWFhYWViNmQ2NDIwMzE2M2FkOWNmOTBkZTYzZjBiZDRmMDE4NTEgbGVnYWN5LXRydW5rCiszMTIxMCBlNTQ1NGZlMWFhZmQwZGNmOWYyZWE2OGJhZWY5NmEzYjhkYmRiZDRhIGxlZ2FjeS10cnVuaworMzEyMTEgNzRhYWJkNDQxOWQ0MGQ2NWJjN2ZmYmVlZDRkNDM5YTI2YWE2N2NhNCBsZWdhY3ktdHJ1bmsKKzMxMjEyIGVkMWQ0ZTc5NzEwOTViZmNjNGExZWM5MzEzNDI2M2NhYWVjNzYxNGYgbGVnYWN5LXRydW5rCiszMTIxMyA5NmZkMDA0YTU4YjBkMzJmZWVhZDhmNjI1OWMwOWI2NDkzNGMzZDlhIGxlZ2FjeS10cnVuaworMzEyMTQgOWU0N2Y5ZWQ0OWY2NDYyMmNiNzg3ZmYxOWY0NzI2Y2RkMmQ0NmE0ZiBsZWdhY3ktdHJ1bmsKKzMxMjE1IDM1OTlmNjU5M2ZlOTBjMGM5OWFhZDY4M2Y2MDljNDkwZTFmYjNhNTAgbGVnYWN5LXRydW5rCiszMTIxNiAyMGI4MDNjZjIxOWQwOTg0ZmU4YTZhOTEzZTNiNWY3MDZlNjA2YTRlIGxlZ2FjeS10cnVuaworMzEyMTcgNGM3YjFiN2Q3ZjMxMTE2Nzg2NjkwZTE4N2M2YmQzYjAzNDZmZWQ0ZiBsZWdhY3ktdHJ1bmsKKzMxMjE4IDBlYzM4OTY4ODZlNjk2YTc4OWYwZmZiOTMzMGQzNjJhMWVlNGRjYmIgbGVnYWN5LXRydW5rCiszMTIxOSA4ZjM3ODM1Y2Y0YTQxMWI0MmYwMWNkZWJjMmZmYjMyNGQwODkyMzQ3IGxlZ2FjeS10cnVuaworMzEyMjAgOWFiOTcxY2QxOTY1NzI0YWYwY2E4ODMzNTZlODQ4YWFlZDkwNTc0MSBsZWdhY3ktdHJ1bmsKKzMxMjIxIDYzZDYzNGVkOTQ1Y2MwMWU4ODcwNGVlZWQ2N2QyNWZhZjBiMTJhYjcgbGVnYWN5LXRydW5rCiszMTIyMiBhYzQ1M2JiMzcwYTJlOWM3MWJhODgzMDQ5ZmU3YmJkNDE4NDVhZmE0IGxlZ2FjeS10cnVuaworMzEyMjMgN2M0ZGRhMGMxNDVmMDQwMWI1NWUwYTFhNmM0NzE2ZDdmYjhkMTJjZSBsZWdhY3ktdHJ1bmsKKzMxMjI0IDFhMzAwZjQ3NTMzMjA1YzA4NjY1ZDg0MTAwYjczYTBhNGZjNmQzY2UgbGVnYWN5LXRydW5rCiszMTIyNSBlYjI4Nzg5NDA5MDU4NjA0ZTQ3Y2JiNmUxYmQ2MmZjNzlkOGJjMTQyIGxlZ2FjeS10cnVuaworMzEyMjYgNDMxNDNkNGRkNmIxZDUxM2IxMmU4OGFiMmNiYTBhMTI5MTI4NWVjMyBsZWdhY3ktdHJ1bmsKKzMxMjI3IDE4NjEzMzVlNzhhYTExNmM3ZDM5ODAyNGZkNGNmNjBlM2Q3NDQ4ZDQgbGVnYWN5LXRydW5rCiszMTIyOCAwZmNhNjVhMDlmMDYyODI4YzVlNTlhODE2ODkzMzk2MThiYzc3Y2UyIGxlZ2FjeS10cnVuaworMzEyMjkgNjE0YWJiYTViNzYyNGZjMzU3Zjg4NTc2NjA5ZGM5MmIxMmI0YThmYiBsZWdhY3ktdHJ1bmsKKzMxMjMwIDM3OTk5ZjY5MjRiNGU1NTMyODgyZmViOWUwY2RlYWMzNmNmMWViM2QgbGVnYWN5LXRydW5rCiszMTIzMSA4NGYyYzQzOGMzZjUyYmExOGVmMzJmOTNmOGJlZjRhZWIzZTY0YTA4IGxlZ2FjeS10cnVuaworMzEyMzIgMDQyOGQ1OTA2OWE5ODQxMjdkZjY3YjJlNzkxZjBhOTYwNDkzM2M1NCBsZWdhY3ktdHJ1bmsKKzMxMjMzIGM4Yzc4MTZkM2EyZGE2ZTMwOTY0NGNiZTAxZjc0M2I1OWJkOTllODggbGVnYWN5LXRydW5rCiszMTIzNCAwZjY3MzFkMTI2ZGViMThjMzdlZDc2OWFmMDVjNDYzNWE0Zjk1Yjc3IGxlZ2FjeS10cnVuaworMzEyMzUgNTM3YmZjZTJiNzMwM2YxYWYxZDYwODdhNTEyNmM3Y2ZhODZmZjZjMCBsZWdhY3ktdHJ1bmsKKzMxMjM2IGUwZmE1MjA2N2RiZWZiODI3M2Y3YjJiOGYxOWNjYWU0M2Y2MzYyOTEgbGVnYWN5LXRydW5rCiszMTIzNyBmODdiNmQxNmJhZTg1YTc5ZmZlMTUwYWMxNjJiZmZjZDEzN2IwZjRlIGxlZ2FjeS10cnVuaworMzEyMzggOWMzYzk5M2U5YjljZjIzMzRhZDIzZGVhNzMzZGYxMDk5ODQwZTE2NSBsZWdhY3ktdHJ1bmsKKzMxMjM5IGU0ZmUxNjhlMzVmMTQzZmJjYTUyZWUwYzk0MWUwMmVkOTlhYTYzMjEgbGVnYWN5LXRydW5rCiszMTI0MCAwMDFjZjc0ZGFjNTAxYTllNjUzZDMzNTcyMGM3YmFiMzg3ZGViYWViIGxlZ2FjeS10cnVuaworMzEyNDEgMTY4NTZjOTUxNGUwNWE4ODQ2ZDRkZDY1NDU2ZWE5N2NhYTdlNThjNyBsZWdhY3ktdHJ1bmsKKzMxMjQyIGFhZGU0YmMxMjVmOGZmMjkyNGU0ZjM1NTliMWM2ODQyYzJmZWRhOWIgbGVnYWN5LXRydW5rCiszMTI0MyA3NjM3NmU1YWYzODhkMDE5MmVhOTRiYTBkMzZiM2I3YzgyZjQzYWQ3IGxlZ2FjeS10cnVuaworMzEyNDQgZTNiNWYzMjFlZWJiMDNmNGJlZTUwNTJlODUxMTY2YTJlYjY3YzE4NiBsZWdhY3ktdHJ1bmsKKzMxMjQ1IDU5MzViODI0M2Q3NGU0ZmYxOGRkMjU0NzlmMGE5YWY0NzZiNzEwMDUgbGVnYWN5LXRydW5rCiszMTI0NiA0MTMxM2QyMGQxZGRlMjY4YWJlMzhjZjNlZDM1MjM5NzExOGRhZTYxIGxlZ2FjeS10cnVuaworMzEyNDcgNTIyZWRkNTkxZDJjZjEzNzViYTQyNzVkMGUzOTUxOTkzZjhlMjIwZiBsZWdhY3ktdHJ1bmsKKzMxMjQ4IDQ3NGNiYmRmMDBjZTdkNjQ0NzhlODA1MDlhZWE3MGE4NzNhNThiNzggbGVnYWN5LXRydW5rCiszMTI0OSAyMTI4M2I2ZWE3ZjFhNmRmYjcwODY1ZjJiMWZmMTI2YTA5ZTQ4MjE4IGxlZ2FjeS10cnVuaworMzEyNTAgMDQzODRmNDI5MGJhZjZlZmJjOGUxOTFkYzJjMTlkMjQyYzA3NDI0NyBsZWdhY3ktdHJ1bmsKKzMxMjUxIGNhZDExODVlZWVmN2MxNjhhZWExYTI5YzUwYjc3ZDgxN2E5MTFjZTkgbGVnYWN5LXRydW5rCiszMTI1MiA3MjY3MjE0ZjA3ODU2YmNlNzQ3MTg2MmM1ZjdmMDgwZWYxMjM2YmNiIGxlZ2FjeS10cnVuaworMzEyNTMgMzk4MmYxMTc2NzllZmI4MzY4Yjk4MmU2MmI3Nzc5NTYzOWU4MWI3MCBsZWdhY3ktdHJ1bmsKKzMxMjU0IGYyZjA2YjZlY2RkNzFiZDc1ZjQ0YTI0ZWMyZjhlOTJjMTk0NGJiYmMgbGVnYWN5LXRydW5rCiszMTI1NSA1ZTMxNTI5ZmRkNGZhZjk4NjFmZDJmMTM5ZjRkYWM1NzA4YzA2ZWY3IGxlZ2FjeS10cnVuaworMzEyNTYgZDUwMjE4N2IyYjA2ZTAwYTdmNWI3YjNlYTA2YjE4NzU5ZTcxYzlhYiBsZWdhY3ktdHJ1bmsKKzMxMjU3IDhkOTJhZjE0NGMxNmVjNzg3NzAzN2FhMzhjYWU0MjEyNDZhNzM3Y2IgbGVnYWN5LXRydW5rCiszMTI1OCAwM2NmYzYzN2MzOTM1ODgyZjIzYzg4N2ZmMDM0MWViYzAxNThmODk2IGxlZ2FjeS10cnVuaworMzEyNTkgYjQ2NmM1ZmI0ZDhlYWJjYTNhZWUwM2MzYjAwZGY3Y2IwOWQ2YzhkYSBsZWdhY3ktdHJ1bmsKKzMxMjYwIGMxZWNkZGUzMmY4NjNjNDhkYzgwNDNjNWY3MTYzMGExYzE3YzBjZTAgbGVnYWN5LXRydW5rCiszMTI2MSBmYTlmOWU1N2U5OGY4NjA4YzI0YWVlOTM2ZTQzOWQ3YThjNDBhY2U1IGxlZ2FjeS10cnVuaworMzEyNjIgZTVlMjQyY2Y0NmIxYzRjNzdhNTI3MDQyYmEyMGU0MGM3N2IxOTI0YSBsZWdhY3ktdHJ1bmsKKzMxMjYzIDdiMmNkODAwYzIyOTZkNDJlY2E0MmY0ZDU0MWM3Y2E2MTIwZDIzMTAgbGVnYWN5LXRydW5rCiszMTI2NCAzMmZiOTRhNmE0ZmU5YmVjY2UzMmVkOTE2YTIxOTk1MDVlYmFhMDBjIGxlZ2FjeS10cnVuaworMzEyNjUgZGI0MTZiZDE4ZDRmNzlmMmY4ZWYwMDExYzM1MjhkNjJhZWVlYzg1MCBsZWdhY3ktdHJ1bmsKKzMxMjY2IDQzNjdmODA1ZGIwOWMzZjY2MDY2YzAyN2I1ZTk2OGUwOTg0MDg5MzIgbGVnYWN5LXRydW5rCiszMTI2NyBkOGM3NjVjMDlkOGMxYThlYTY2Yjk4YzRlM2ExNzZhN2U1OGE2NWYxIGxlZ2FjeS10cnVuaworMzEyNjggY2UzNDBmYjRiNjE0OTUxMmI3ZmRiYmNlZjI1YzM5YmE3M2Q0YTBjMiBsZWdhY3ktdHJ1bmsKKzMxMjY5IDRiOWI4ZGY1NGRlOWFkODU1NDIyNGVhY2Y2NDY3Y2EzZTgxYzUyYTYgbGVnYWN5LXRydW5rCiszMTI3MCBkZjc0MTI3ZTJjOWZkMTUyMTU4OTI5NDUyY2NhMzg4YWEyYmE4OTBkIGxlZ2FjeS10cnVuaworMzEyNzEgOTUwMzY4NWZiNGU4ODA4OTI1MjYxZThlZTZkNjI3MDM4YWJmZmZiOSBsZWdhY3ktdHJ1bmsKKzMxMjcyIGIzMzFlNWU1Y2M0YWJmMzU1ZGVlZTdkZTA5NzUwMDkzNTQ5NzFlZjcgbGVnYWN5LXRydW5rCiszMTI3MyBhYmY5YTkxMmNmY2U5YzViYjgwYTc5NDgwZmJmMGVkMWFhMmJiOTJjIGxlZ2FjeS10cnVuaworMzEyNzQgYzQ5NjM4MzA1YTI4YjBkMjgwNmYyYTQ3NGE5MWJkMmRmOWY0YmM4NyBsZWdhY3ktdHJ1bmsKKzMxMjc1IDg1MzU5MjE3MDkxY2FhYzJiZmI0YmE0MmJhYTc2NjA5NjFkODEyNzEgcmVsZWFzZTIyLW1haW50CiszMTI3NiA5NDFkZTc5MWIxN2FlYjMyN2RmMGQyYzNhNjg2NDRkNTY1ZDhjZDIwIGxlZ2FjeS10cnVuaworMzEyNzcgNTlhZTQxZTA0ZmZiZTdmYzdiODU2NGU0MDc4NWQyMmEyN2YzZTY0NSBsZWdhY3ktdHJ1bmsKKzMxMjc4IDlmOTQwMDliMWFlMGNlNzhhZTI0YjE2ZDI0YTJmYjZhYTdkODcwZDkgbGVnYWN5LXRydW5rCiszMTI3OSA0N2E2OTE1ZDFjMzZiNGIzOTYzZmM5MzQ3ZmQ5MzM2ZDY3ZDNkZjdjIGxlZ2FjeS10cnVuaworMzEyODAgYzdjZjFiNWQ0NzFiN2U3ZjNlMmVmZTQ0NDcwYTNkZTFiNTY5OGU4MyBsZWdhY3ktdHJ1bmsKKzMxMjgxIDc4NTBmYTdmYjZmMWExNDlhODk3MWIzMmZmNzRkZDVkOTA1ODBlM2QgcmVsZWFzZTIyLW1haW50CiszMTI4MiAzMjlhMDA3NzdlMzIwY2FlN2VhODhhMzQwYmY0Njg2YzRjMTdiMWMwIHJlbGVhc2UyMi1tYWludAorMzEyODMgNmIxNzg5YWMyZjk1ODEzZTEyODU5MzQyZTk5M2JjMThiNmNjNGQwOCBsZWdhY3ktdHJ1bmsKKzMxMjg0IDk4YzM0Y2MxY2Y0MDBiNjRlNDhhZjJjYjQ0NDllMjJmY2MzYmI2OWMgbGVnYWN5LXRydW5rCiszMTI4NSAwMzk1NTEyY2UxYjVhYjg5YzFjNjY3NjcwMGNkMjQ1ZjA1ZmVkNDE1IGxlZ2FjeS10cnVuaworMzEyODYgMzhkMDUwNTYxOTVjOWMxODdlNzg2ZDA3ZWQ5NmYwZGRlZDdkNjk2OSByZWxlYXNlMjItbWFpbnQKKzMxMjg3IGE0YmRlOTE1MTE4YzYwNTkzNGVjYWIwYWE1MGQzYWFhMjQ2ZTFjODUgbGVnYWN5LXRydW5rCiszMTI4OCA1OTQ4MjMxNzE2NmU2YTc3MzI0NzNhZmUyMWM2YzkzMWJhZjFhMTE2IGxlZ2FjeS10cnVuaworMzEyODkgYzgxNDhkN2YwYzk4NmUwZjBkZThmNjJkMDk2MDcxM2UzNTdkYzhiOCByZWxlYXNlMjItbWFpbnQKKzMxMjkwIGE4YTY0N2UxOTI3YjU2ZTlkNjc3MjQ2YzVmYmU1YmU1NDIzYmM1NGEgbGVnYWN5LXRydW5rCiszMTI5MSBmNGNkYmE4M2JlNTYwMjhlNjVjZmFjOTM3MGRhYTkzZWZhZmNhZDlmIGxlZ2FjeS10cnVuaworMzEyOTIgZmM4ODE3NGMwYzBhZGRlMzZjYTYzODYxOTQxYWNiNGNkZmIyMTg2YSBsZWdhY3ktdHJ1bmsKKzMxMjkzIGEwMzZhNTE5NzYxMGM3YzkyOWQwYzkwNGY4ZTIwYzJkOWYzNzMzNzkgbGVnYWN5LXRydW5rCiszMTI5NCA3YjUwNDNjMGZmNDc2ODY3ODYwMmVjOTJmMzlkNmY3MzdjZjhkNGYzIGxlZ2FjeS10cnVuaworMzEyOTUgYzVhZDBhMjQ4OWI4Mjc1ZDBhMmQ0ZDAzODMxM2MzZGEzZTViZTZiYSBsZWdhY3ktdHJ1bmsKKzMxMjk2IDgyY2JmMTE3OGU0ZjRmMmE2NjAwZmQ0OWUyOWRiZTI5ZjBmYWNhYzUgbGVnYWN5LXRydW5rCiszMTI5NyAyZDU1YmUzYThlYzM0ZWNiMTkxMzJkNGJhYmYxMDE2MTRmYmJmNzZkIGxlZ2FjeS10cnVuaworMzEyOTggZGM1ZTFkOTE4MDU1ODEzNGQyODZmYjc0ODgyZDg0ZTIxOWZhNjUxNyBsZWdhY3ktdHJ1bmsKKzMxMjk5IDJjMzg5YTA0NDhhNGZiMDhjNjQ1MjZjN2NhM2I4ZWFkNDc3NTJlYTEgbGVnYWN5LXRydW5rCiszMTMwMCA5ZjcxM2M3YjdmZDkxMDBlNTY1Mzg1YzA2M2ZlNzEyZjk2M2I1Yjk5IGxlZ2FjeS10cnVuaworMzEzMDEgMzU2NmI4NGU2NmI5ZTc1NmIyMzA2YWRlNjI2MDJiMWMwMjM4MjI3OCBsZWdhY3ktdHJ1bmsKKzMxMzAyIDI0ZThjN2U1MjFmNTk4ZTVkMGVkNjcwMWE0OWMyMDQ1OGIxMWRmMjggbGVnYWN5LXRydW5rCiszMTMwMyBiZmM1MjQzNzkzMDcxMTg0MTY0NWVmNzJkMDM4YWU4MWEzMTU0Nzk2IGxlZ2FjeS10cnVuaworMzEzMDQgYzE4NDIyNzE2ZmYyNmI4ODEwNTI3MmU5ZWE4OTI4NWUwMTIyMzZlYyBsZWdhY3ktdHJ1bmsKKzMxMzA1IDhiZmYzZDA5NDRiYTc2OWZiZjI3YjRjYWVhZGY4Yjg0MTdmZmUzOGYgbGVnYWN5LXRydW5rCiszMTMwNiA1ZjY5MzFiODM1MmU0MWYwZTFiYjM1NWJmYmZhNDc2ZmEyNGE5NTM5IGxlZ2FjeS10cnVuaworMzEzMDcgMWRjNjM2NjU0M2Q0ODVlNzY0YWY1OWE1MDNhZjMwMTk4NGM0MmY3NCByZWxlYXNlMjItbWFpbnQKKzMxMzA4IGZjNWE2MGE2MWUzMmY1M2VkYzA4ODgzMjIwNWI5ZGU3YWVkODA2NTIgbGVnYWN5LXRydW5rCiszMTMwOSBkZDExMzAyNTNmMTAzYjk2ZDZhYmRmYWRkMWUyMjg3ZTQzNTYwMmM1IGxlZ2FjeS10cnVuaworMzEzMTAgY2MwMWZiNjU0Y2UzZjU1Y2I2ZGUzZTE5NGM5MzkwZGM1N2JlOTgyZCBsZWdhY3ktdHJ1bmsKKzMxMzExIDkwNGYwZTc2OTgyMDkwNWViYzc2NWMyMDRhN2Y1MmZiMjM4MjA0ZWYgbGVnYWN5LXRydW5rCiszMTMxMiBlYmNhZWQ3OTQ4ZTgwZTFjYzk3ZjZiZjUyYWIwYzVlODdkZjYwY2QxIGxlZ2FjeS10cnVuaworMzEzMTMgMjEwMDE4MmY3NGUzOGFjNTVmNDBiNDQzMzdmZmRmNzcxNzM2Yzk5ZSBsZWdhY3ktdHJ1bmsKKzMxMzE0IGMyMGZlY2I1Y2M5YzU2ZTM3ZmU2N2Y4ODk3OGY5MzUyYTFmN2JjYWMgbGVnYWN5LXRydW5rCiszMTMxNSBmMzQ0NDZmYTIxNmU1ZmNjMTM3MmE0NWFjZjU5MjYwNWRiNWQ4ZjdjIGxlZ2FjeS10cnVuaworMzEzMTYgMGJkZmQ2NWJiMTIyNTkzMTA5Yzk3NmIxMGE2YTMwMjZhOTE3OWFlZiBsZWdhY3ktdHJ1bmsKKzMxMzE3IDM5YjFiYWM4OTM2NWY4MjBjZDM5MzgyZjRiOTc3MzNkYTg0NDIzMzEgbGVnYWN5LXRydW5rCiszMTMxOCBmMmI0MzEzNjRmNmZjYmYwZmE0MjIzMmNkMTk0ZGUyNDI4MzA5ZmQyIGxlZ2FjeS10cnVuaworMzEzMTkgYjY1MGE1NGE3NmZkYWRhZWI3ZTE1MzFlNGYyZTJmMjhlNjE0NGJjMyBsZWdhY3ktdHJ1bmsKKzMxMzIwIDlhNjA1NGM2ZDQ2ZmFiNmRiM2JmZjJmOTlkYTc4ZTYxNzc3YWIxMzggbGVnYWN5LXRydW5rCiszMTMyMSBiNTZmMDBlYzgwODMxMjc4N2JlMjJlMmY4YWM1MDQ3MzU1OTQ5ZWU0IGxlZ2FjeS10cnVuaworMzEzMjIgZjA0MDlkNzU0YjkzNzdlZmJjYjlmZTVkYzE2ZTgxNTQ0ZWNhMDM3YSBsZWdhY3ktdHJ1bmsKKzMxMzIzIGQyYjAxYzlkZmYxNjgzNWI5ZWFmODE5OWJkZmEwZWZjOWJmODA5MDIgbGVnYWN5LXRydW5rCiszMTMyNCAyMDQyZTIwNTFkOTc4NDc1NjM3NTc5OWU3YTZjZGIzZTE1MmEyOGQ4IGxlZ2FjeS10cnVuaworMzEzMjUgMDQwMGJhNzhhODk3OWE0Zjg4OTgwOTZlZDQzOGE3NmFiMzkzODFlNiBsZWdhY3ktdHJ1bmsKKzMxMzI2IDYxOTczZDVmNmUyNTNjODk3Yjg5NzYxMDUwZDc3NWRiNGNiMWU5YWQgbGVnYWN5LXRydW5rCiszMTMyNyBlNjIwOTljNjVhM2MzYzFlMzQ5NDAxN2JlMWVhZjJhYjg1ZjBiMjY3IGxlZ2FjeS10cnVuaworMzEzMjggYjA1MzlhNDUwOTE3MjUwY2M2ZjVlMWZiMmI1ZjYyNzc2ZTk3NzJmMyBsZWdhY3ktdHJ1bmsKKzMxMzI5IDM2MTE5NzZjYjE3NGE1Zjk1MzQ5ZGI1YTc2YzE5ZmZkZDYzNzI2NzAgbGVnYWN5LXRydW5rCiszMTMzMCAwYzdlOGMzZjY0MmY2MTVhNTcyYTZjYTQ0NTYyMTA4YmQzYmVkYjgwIGxlZ2FjeS10cnVuaworMzEzMzEgMzcyZTM0ODNkMzI3NTQyODFjNjE3NTBhYjBlYzZmZjk3MDI4ZDllZiBsZWdhY3ktdHJ1bmsKKzMxMzMyIGM3ZGYyMjVlNGU0YTU3NTE4ZDNmMDY3MTM3OTMwYzgwMDNhODI1NjIgbGVnYWN5LXRydW5rCiszMTMzMyA4ZDFiMjcyYzllNzFjMjQyOTRkYmM3NmU3NzgzOTdjODk5OTA2NmU1IGxlZ2FjeS10cnVuaworMzEzMzQgOWVjNDdlNjUxMTdkMzlkYWEzNDM0ZjY5YjZiN2ZiMDVkNWQ4MGU2OSByZWxlYXNlMjItbWFpbnQKKzMxMzM1IGU4ODc4YzhmNTRkZjVkNWUxMWJhN2JkNTA3ZDYzYzcwODIwNjA0MzYgbGVnYWN5LXRydW5rCiszMTMzNiBiOTViOWFiYjliZjM5ZTU3MWU3MzZlMzE2ZTA1NWY4NTlkY2FlOTQ0IGxlZ2FjeS10cnVuaworMzEzMzcgZDJlN2Y0NjhmMjI0ZTgxMmVkNTNmZWY5N2RlYmEyNzEyODY2NDY1MyBsZWdhY3ktdHJ1bmsKKzMxMzM4IDhkNmVlMTU4NjZiMjE2ZDQxYWI5ZjAwYjc2MTgyYmU4YzQxOTFmODIgbGVnYWN5LXRydW5rCiszMTMzOSA1NjYzZTBjODE4NjAyZjE4NDBmYmU1MDU2ZmM5NGQwYzFmZjlkOGFlIGxlZ2FjeS10cnVuaworMzEzNDAgNDIzOTZhNzg2ZjU5MzMyZGMyNGRkNDc2NTZiYjkzZmI5ZDExZTZlNCBsZWdhY3ktdHJ1bmsKKzMxMzQxIGNkMDVhZjcwMWU1ZDY1YmI3MDIxZGJmY2I1ZTI1ZjliY2JlMGVlMDggbGVnYWN5LXRydW5rCiszMTM0MiBmNmM5NWY5MTM4YWQzNzJkOTEyODYzMDQ3Yjk5YmUxZjIxY2M5ZGY3IGxlZ2FjeS10cnVuaworMzEzNDMgNDhkYzRhNTlhNTBlZjg2ZTFhMDMwZDQzNjU5MmY1M2I4MzljNjMzOSBsZWdhY3ktdHJ1bmsKKzMxMzQ0IGNiMWVlYWViNzRhMDY2MDc4OTNhZWVlOGQ0NjM4ZDczMGE1N2YzMDMgbGVnYWN5LXRydW5rCiszMTM0NSBmYWZmYjExZjU0ZThkMGE0Zjg3OTVjNDI5ZDYxMTJiNThkMDQwNGRlIHJlbGVhc2UyMi1tYWludAorMzEzNDYgYmYwODNlMzUxODVmNTQzMGNjMWJlNWRlZTMyN2I5NjE0MzkyNzgwYiBsZWdhY3ktdHJ1bmsKKzMxMzQ3IDU5ZmJhZTMzYTBmOWQ3ZTVkZTdiMjBiYzI5NWVmOTM4ZmFjOGZkZWMgbGVnYWN5LXRydW5rCiszMTM0OCBlZTEwZDdlN2Y4MThjYzQzYmZkN2JjN2NiNDM0N2JmY2Y1M2I5ZGY4IGxlZ2FjeS10cnVuaworMzEzNDkgZmJjNDViZWFmMDM0NGNmZGRjZDMzZTU3YzFhODYxYjU0M2M5ODE5ZiBsZWdhY3ktdHJ1bmsKKzMxMzUwIGI4MDRlZTViZWI0OTIzOWRlODAzMzJhOTMxMWYxYjI2ZjE0MDNkZDUgbGVnYWN5LXRydW5rCiszMTM1MSAxOWFjMTJhYzgwNDE1MzUzYzhmYzJmZGIwYjgzYWIyMTFhMGJjY2M4IGxlZ2FjeS10cnVuaworMzEzNTIgNjUxZDExMjNlZDZlMzcyMmEzYWFmZjAyYTllOWMyNDAxYzk2MTdkMSBsZWdhY3ktdHJ1bmsKKzMxMzUzIGJkZWFjZjdiMTVjOTY2YmI1MTQxNzViMTgwMDcxYTBmNGVlOWY3NGIgbGVnYWN5LXRydW5rCiszMTM1NCAwMTFmNzM0MjU4ZGI5YmJlYjQ3MjBjMTVjNGFlYmI3NmRjMmY4NjFkIGxlZ2FjeS10cnVuaworMzEzNTUgN2RmZmNjNDk4YzQ1ODMxYjZjYmI0MzcwNGE2ZmU4YjkzZTY4ZjdlMSBsZWdhY3ktdHJ1bmsKKzMxMzU2IGMzNzdjNTZlZGZjOGQzNmIwNzdjZDM1MGI3M2VhZWMxNzk2N2IzZjUgbGVnYWN5LXRydW5rCiszMTM1NyA2YmE5NDBjZDk5ZWY5ODMxYzYyMDVhODY2NzE2OTIzM2I1NmU4MDZhIHJlbGVhc2UyMi1tYWludAorMzEzNTggNGEwMmNhNmJkYjZmNGY3Y2NjOWM3YTI0NzczOWNlOTdkYWU2YjA0ZCBsZWdhY3ktdHJ1bmsKKzMxMzU5IGJmOWNhMDg2YjhhYTYyNzA0MmEyNzhkYmE3NTQzYjQ5YmVjYTA3ZDggbGVnYWN5LXRydW5rCiszMTM2MCA2YjU2OTY1NDFiYTRlZjRhOTNlNTgyODRmOGIwMzYxOTdjOTBmNDcyIGxlZ2FjeS10cnVuaworMzEzNjEgN2YxNzFmOWRiOGFmZTQ4NDA1ZjA4YzQyYWQwMzU3NWE5OTIzMTViYSBsZWdhY3ktdHJ1bmsKKzMxMzYyIDUyM2VmZDc3MzI2MWE2NzJhYTlmYmJhYmViZjVjODNmNmU4NTM2YTUgbGVnYWN5LXRydW5rCiszMTM2MyA5NGJkMTFiMTFkZjdkNWZkYjA3NTE4YWE2OTI5NzdhMTA5OTUyZGQyIGxlZ2FjeS10cnVuaworMzEzNjQgNWQyZDI0YTczODI1OTJkMDEzZmQ5ZmEyNTczYWYwNWJlY2RhMjY4MyBsZWdhY3ktdHJ1bmsKKzMxMzY1IDIyMWVhZjc4MTRmNDRiNjI5MDYwYmIyYmRiMWEzMmJjYTQ4ZTYwMzQgbGVnYWN5LXRydW5rCiszMTM2NiAxMDI1OTEyMmJmNWYyZDEzOWFlNjc3NDk3Yzk3NTE5NjBkZjJiOTNjIGxlZ2FjeS10cnVuaworMzEzNjcgYjUxOTcwYmEyMTgwNjMzMDk0NTI5NjJiZDZhYWM1YzVhOWRjYTAxYyBsZWdhY3ktdHJ1bmsKKzMxMzY4IDUwMTczZWExZmQ0NDA3MTZhOTAwMjg1NmQ5OTE0ZDQ3N2YwZGQ3NDYgbGVnYWN5LXRydW5rCiszMTM2OSAxNWIwMzE3NDgxMTZjMzY4YzViZGIzMGMzNjdjMTcwYzljOGUyODAyIGxlZ2FjeS10cnVuaworMzEzNzAgMzE2MGQzMDQxNTIxOTRjZTA4N2Q4YzIxMjk2OWViNDAzOTBmMjU5MiBsZWdhY3ktdHJ1bmsKKzMxMzcxIDFjMTI5OWJjMzNkNjA3Mjc2Y2IzMjQ5ZjY0ODFiZjFjYzQ4ODk3NjkgbGVnYWN5LXRydW5rCiszMTM3MiAyM2Y2YjBkMDFiYzZhZDQzNGNiNjA5OGQ5ZTVkZTMyYTZkY2E2ZWFhIGxlZ2FjeS10cnVuaworMzEzNzMgZTRkYmYwZjAwOTViZTg2Y2YzNTFmNzRiYTFkZDY0ZTc2NjljYTMyYyBsZWdhY3ktdHJ1bmsKKzMxMzc0IGRhYTQ0OTVjZjYxYWIxNGM0NTg2M2NhYzgyZjk0NjgyMzBiOWZmMTkgbGVnYWN5LXRydW5rCiszMTM3NSBlOWQ3MTAyZjgyNzgwZmZiZTAyMjk0YTFjNDg5NjJiMWM2MTlhODEwIGxlZ2FjeS10cnVuaworMzEzNzYgZTBkYTQ1NzdhYWE2MjQxNTk2N2I1NmQyNDgzODRhOGMzNmZlZTZlNSBsZWdhY3ktdHJ1bmsKKzMxMzc3IGNiMmMzZmJiYTcyZWU3NmJmZWUxNmM1MDVjZGM5YmI4Zjc5ZTY4MWQgbGVnYWN5LXRydW5rCiszMTM3OCAzZWIwMzc2ZTkzZTg0MjA2NTBiNDMzMGNiNDM0ZGU5NWYxZDJiMmM5IHJlbGVhc2UyMi1tYWludAorMzEzNzkgYzVkZDA3N2RlMGZjNjQ2YTdlMTdkZDMyNzE5MzI5ODY5N2EyMzI0ZiBsZWdhY3ktdHJ1bmsKKzMxMzgwIDdhMjBiYmRiZmYzNjgyZjdmNjY1M2Q1Yjk3MDI3NTEzODU0MTkzMjUgbGVnYWN5LXRydW5rCiszMTM4MSA0Yjc1YTBiNzY4NTcxOWJmOGIzZTEzMjQ0Zjk3ZGE1OWM5MDI2ZjgxIGxlZ2FjeS10cnVuaworMzEzODIgNTYyMGIwNzg2MjcxMTliNjliNmQwMzRmODc1YzUyZjk1ZWMzMmNkMiBsZWdhY3ktdHJ1bmsKKzMxMzgzIDgxYWZjYTc0N2NhYTVjMTg2ZWQwMTg3OWU2MjA3OWI4MjM1Zjk2OTIgbGVnYWN5LXRydW5rCiszMTM4NCAwMTYwZmZjYjE5ZTMzN2JmMTNiODI5YzUyNzExYmVmZDJhZDMyZmVjIGxlZ2FjeS10cnVuaworMzEzODUgY2QxMGZhNzIxYTUxMmFjOGIzODJlMGI3ZTNjMzM3NzRlNmI0MGU0NCBsZWdhY3ktdHJ1bmsKKzMxMzg2IGE4NzgwNDc5ZDRlMDk3N2MyMjhlYjdmOGM3ODI2OTU2OWU4ZWVhZGYgbGVnYWN5LXRydW5rCiszMTM4NyA5NDUzZDhjZGQwMWU4ZjdjMDhiNTA1MzZhY2IwODlmY2I2ZDNmMTgyIGxlZ2FjeS10cnVuaworMzEzODggZTdjZDA4NjFjMjczYjU2MjY0Y2I3Y2EyNWU3ZWNjM2Q2MzJjZGM0ZSBsZWdhY3ktdHJ1bmsKKzMxMzg5IDM4NzQ2MzM3YWU2ZTA4ZTE1Mzg2YzU0NjMyZmY5YjM4MzZlYTNkMjAgbGVnYWN5LXRydW5rCiszMTM5MCBmODQ0MGJiOGVkZTVkMTlmNDlmYzJmNmZlYWM1ZWFmZjkyM2I3ODJkIGxlZ2FjeS10cnVuaworMzEzOTEgODNiYjZjOWRkNzhjMGM2M2JjNTExZDk0MDkwNmRhZWExM2Y5ZjUwNSBsZWdhY3ktdHJ1bmsKKzMxMzkyIGQxOTY2MWUxOThmNzQ3MmI2MDM2MGVkZWI0NWZlOGJlNzM3OTJlM2QgbGVnYWN5LXRydW5rCiszMTM5MyBiNGViMzQzNzJiZGI1ZTcxMmM3YjY0OGYwMzhjYWQyMGZlZDZiNzRhIGxlZ2FjeS10cnVuaworMzEzOTQgNjU0OTQ0NjlhZDNlZWZkZTI0ZGJjNjJjZmQyMjJiNzVmNjU3NDU2OSBsZWdhY3ktdHJ1bmsKKzMxMzk1IGJiYmJhMGVlNjFmYjZmMmY2MDg0NjYzODRhYTliYWU4Mzk5ZmQ2YzAgbGVnYWN5LXRydW5rCiszMTM5NiBlNmNmOTU1N2RlNDJhODk5YzlmOWFiNTQ3NmRmMzczMmZjMGRlODlhIHJlbGVhc2UyMi1tYWludAorMzEzOTcgYTUyMTM3Yjg4ZWIzY2Y2NGQ5YjY1ZmQxMGNiNWNjZDljM2U3YWE1NSBsZWdhY3ktdHJ1bmsKKzMxMzk4IDg3MGNmMTRhZGQyYWRiYzcwNmE0OWQ0N2IzNTdhZWZlMGQ5YTdmY2YgbGVnYWN5LXRydW5rCiszMTM5OSBhOWM5NmJiNDY5NTNiZGU4YjE0ZDdkMzI4YzU2MmVkOTBhOTBlYzkwIGxlZ2FjeS10cnVuaworMzE0MDAgMTAwZmI2ODRjZjNlNWY1MzQzY2EwYjA0YjY0MWNjZjUzMGVlNmUyZiBsZWdhY3ktdHJ1bmsKKzMxNDAxIDExZTYxMjNkZTZmZWQ2ZmY5MDY1ZmFlZDliNzBhNDg5YWNmZmZhYTIgbGVnYWN5LXRydW5rCiszMTQwMiA4OGE0MmE3YzIzOGE2NGU3OTAyNWVjY2RmNGU1OGExODE4ZWM0N2FlIGxlZ2FjeS10cnVuaworMzE0MDMgNmFmNzgwZTA4NjJkMDA5YzY4MGFlMDg5NDA0NWQ2OTljNTkxMzIwNyBsZWdhY3ktdHJ1bmsKKzMxNDA0IGFiZGVlYjgxOGE5YTA3YzQxMzU2MGUxNTM5YzQ2MzhmNmI5YjNiYWMgbGVnYWN5LXRydW5rCiszMTQwNSA4Nzg5ZTk4MjJhYTRjOTcxZGYxZjhlYWM2M2ExMjdmNDM2MTE5YWNmIGxlZ2FjeS10cnVuaworMzE0MDYgOGE2YzQ1OTEwZWM5MDhkNTc4MzY0OTZiZDEzYTdjODhlOGU3Y2NlNiByZWxlYXNlMjEtbWFpbnQKKzMxNDA3IGJlNzY4M2E2ZjUyMWM1YTZkMDI4M2M1Zjc0ZjEzNjQ1N2EyZWI0YTEgbGVnYWN5LXRydW5rCiszMTQwOCA4ODRmYjU1OGYyYjkxZDBiZDAyMTY3ZmEzYWFkYjY2Y2FjYzg3NzBlIGxlZ2FjeS10cnVuaworMzE0MDkgNWZlZDExNDJmZDM0YjkwNjZhNDZmMTM3Nzk5MTY3ODE0MWY0YjliYyBsZWdhY3ktdHJ1bmsKKzMxNDEwIDE0OGQ4YzBiOTY0NzIzMzlhNWIyODc5MWFmNDhkZWM4NmI4MjMwNjEgbGVnYWN5LXRydW5rCiszMTQxMSA0NjY1OTY3NWQ3Zjc5MjA5Y2ZkZTQ2MGY1NWFhOTEyMmVjMDJjNWFkIGxlZ2FjeS10cnVuaworMzE0MTIgNTIwYThjMGM5YTI1ZWM4YjcxZDM3YTQ1Y2QwOTAyZmQ2NjQxZWY2MSBsZWdhY3ktdHJ1bmsKKzMxNDEzIDIwOTRlMTk5ZmQ1NTYzMWYwYzYyZjEwMDdjNTE4NjQzNGU1MjNkOWUgbGVnYWN5LXRydW5rCiszMTQxNCBlYWNmOTc3NTkwMzhjMzU5MmQ4MGNlOGNkYjAzMzQwZmE1NjY3ZWMyIGxlZ2FjeS10cnVuaworMzE0MTUgMjA2YzVlM2I1YmU3NWIxOWNlZWNmZmVkYTY5YmZkMmQ5YmI0MWNlMiBsZWdhY3ktdHJ1bmsKKzMxNDE2IGNlZGY5ZWZhNjhmODE0ZjM4YTMxMjc5NTVhMzcyOWQzMDk1NDE0NzMgbGVnYWN5LXRydW5rCiszMTQxNyAzMWU4NTgxYmNmMjU5Mzc4ZTk1YWYyNjg5ZjQwNTJlNzQ5OGNjODI3IGxlZ2FjeS10cnVuaworMzE0MTggNTdkMGJhZDczYzhlNWEyNGJjZjE1NDFlYTBmMjYwYjIyZTFmMDQyNCByZWxlYXNlMjItbWFpbnQKKzMxNDE5IGU3ZDU5ZGI2ODM5YTcxOWFhNWY3NGFlYjQ5YWQ5ZmU0MjAyYzg0Y2QgbGVnYWN5LXRydW5rCiszMTQyMCA1YWVlMWMyNzI5MzhkNTA1MDNiMDg0ZWM0ZDM4MmVkNTMzMDRiOGMxIHJlbGVhc2UyMi1tYWludAorMzE0MjEgZDhiMDYwMTJiMzgxNWYyYTljZjBiNGU4Nzc0MDRkOWRlODliZjQwNSBsZWdhY3ktdHJ1bmsKKzMxNDIyIGE3NTkwNTdlY2YxYjMyMDU3MDUwOGM2Zjk5YmE3ZTVlOTFiZmNiYjcgbGVnYWN5LXRydW5rCiszMTQyMyA2NmZhMjQ3NzdmMGFlZmQ4YzRkNzhjZTkwNDNhM2VjYjExYmI1ZDgwIGxlZ2FjeS10cnVuaworMzE0MjQgNzQyOGMxMmY1MDNmNmQ5NjljZmQxYzI4YjM5ZTM5OGQxNDNmMmEzNiBsZWdhY3ktdHJ1bmsKKzMxNDI1IDRlMzFlNDA4Njg0OThhOGJhYjljNGE4ZTgxNWU4OTM4YzhlOTc4ZDMgbGVnYWN5LXRydW5rCiszMTQyNiBjZjFlZmNhODJiMTgzN2ZiMGMzYjU5NzgwMWUzY2NlMDAzZjUyZmQ0IGxlZ2FjeS10cnVuaworMzE0MjcgYzE2M2Y5NWIzMDBjNjQ5ZjkwNTcxOGFhYjg2ODk2Y2E3Y2E2NjVkNCBsZWdhY3ktdHJ1bmsKKzMxNDI4IGQwZjRmM2NkNGZlNDFjODU3NTJlYTlmMDI4NTk4NzRhYjNmNDUxZTAgbGVnYWN5LXRydW5rCiszMTQyOSAxOTdkNjRkYzA0ZGMyNDZmNDg3MGE0ODRmZjQxOTc1MWEyNzVjZmM3IGxlZ2FjeS10cnVuaworMzE0MzAgNTVhZGYwOGEyMTNhMmQ4NDYxZjE3ZjdhMmJmYmRjMTE2Mzc3NTIyOCBsZWdhY3ktdHJ1bmsKKzMxNDMxIDgxYjJiY2JmZTM5YmI2MDA4M2JkZDg3ZjE4NDkyMTk2Y2VhMjUxNWUgbGVnYWN5LXRydW5rCiszMTQzMiBlNTgyMGExNTBkODdmZTg0MzRlYzgwZWRkNDBiODM0ZmM0NzA1ZmRjIGxlZ2FjeS10cnVuaworMzE0MzMgOWJkYWNjZDhhOTA4YzIzMDIxNTAwNjAyMmM5Njg5NDM3MjNkODNmMSBsZWdhY3ktdHJ1bmsKKzMxNDM0IDIzM2VkNmNjOGUxNGE3MjRlYzZmOTdjN2M4ZTlkNzhlMzAxNWFkYTggbGVnYWN5LXRydW5rCiszMTQzNSBhNjgyY2VjNmI4ODBhNDk3NDc5MWNkMDBmZTBmMTJhNmZhNzFkNzQzIGxlZ2FjeS10cnVuaworMzE0MzYgM2UxNjlkMjk0Mzk1YjgxZDRhODA4ZjA3MzBlZjk2ZjI1OTMyMzJjNiBsZWdhY3ktdHJ1bmsKKzMxNDM3IDE3NDc0OWY1YjMyZmFhMTg2MzNiNjY0Nzg4MmRlM2QyZGNkNzRhYzUgYXN0LWJyYW5jaAorMzE0MzggNDdiOGNhYmFiN2IxMDNmZWNiNTk0ZDhjYzdkM2JmOTdhM2U5MjEzMyBsZWdhY3ktdHJ1bmsKKzMxNDM5IDliNDIzMjBmMWUwZmIwNDg3OWFjMGZjNTY4Njg4NmYzYjhlMzA4M2QgbGVnYWN5LXRydW5rCiszMTQ0MCBiMGRjYTkyYzI5OWE1ZTk2M2U0YTFlYjMwYmE0ZDUyY2IwOTZjZTNkIGxlZ2FjeS10cnVuaworMzE0NDEgOTViNzUwNDQ2YmI5OWQ0YWQxYTAzZmMzMTEzMTIwMWRmYzJmZjAyZiBsZWdhY3ktdHJ1bmsKKzMxNDQyIGM1ZWJhY2JiYTBiZWMwNTkzMWE4NzY3YTg2ZWYzYjkyMjBmMzliNWUgbGVnYWN5LXRydW5rCiszMTQ0MyBjZGIxYWJjMWI0MDkyOWI4MDFhMTkwNDkyYmRmYWM2OGMyZjU2ZWYzIGxlZ2FjeS10cnVuaworMzE0NDQgYzdkN2YzNTBlOTZjNDVhOTY4YTVmNGE4NzA5OTFiNTg0Nzc1ZjdhNiBsZWdhY3ktdHJ1bmsKKzMxNDQ1IGE2ZGZhYmYzYjkyYmQ3YTM1NWU4NWExMDcwODBmMjA2ODdhYzk4ZjAgbGVnYWN5LXRydW5rCiszMTQ0NiA5M2Q0NDg3MGU4YjU4YTFlY2QxMjNkNmFhOWJkOWM5NGNlOTE4ZDIwIGxlZ2FjeS10cnVuaworMzE0NDcgYzM0NmQwOTU3OTFkNzg4ODU3ZDYwZjRhNWQ4MTlmMGYyOTRmMzJhOSBsZWdhY3ktdHJ1bmsKKzMxNDQ4IGJlMzcxZmZjNGNkMDdhMWFlNTExM2E3ZWM1NTA1ZDhmYjlkYjBlOTYgbGVnYWN5LXRydW5rCiszMTQ0OSA0YjVjMmUwMjVjNWVmNWY4OTJkZjdlZDhkYmI0YTQzMmFmNDQ3YjU5IGxlZ2FjeS10cnVuaworMzE0NTAgOGU3NDMyY2RmN2Q4ZmM2NTRhY2JjOWE0MTYwZjgxMTYwNzYxNTE3MCBsZWdhY3ktdHJ1bmsKKzMxNDUxIDI3NTliMDQ4ZGE5YjZmNDA5ZGMxOWMwNDNjM2ZkODQzYmI1OTAzNTQgcmVsZWFzZTIyLW1haW50CiszMTQ1MiBlZmM0NjU4MTBlMWVkYWM5ZmYxMWFhODI5YzllMmJjMmU1ODMwOTllIGxlZ2FjeS10cnVuaworMzE0NTMgZWMxMDUyZWY3M2JhODljNDczYTQ3YWQzMjkzNmI5ZmMwNGFkN2JkMiBsZWdhY3ktdHJ1bmsKKzMxNDU0IDMwMThmMzFmNjgzMDkyM2I5MDhjZmNjZWYxODUzNjY2NTVjMzU1ZTMgbGVnYWN5LXRydW5rCiszMTQ1NSAyYzRhYjFkYTZlYjQ3ZWExOGNhNjRmNmRiODgxNjI3MTFhYzk5MGYwIGxlZ2FjeS10cnVuaworMzE0NTYgYmVkYWNhOTg1M2Y5MDRjYjNiOWI0ODEzNzhmZDQ2Y2M5MzRiNDBiZCBsZWdhY3ktdHJ1bmsKKzMxNDU3IDg0ZDMwOWI2NzZmYTdiNzcxMjhiNDlhMmNhMDAzZDFlMWQyMDI3NDUgbGVnYWN5LXRydW5rCiszMTQ1OCBlMzFiMzk5MzBhMzEyODM0ZWNkYmM4NzM1ZmQ1MDQyZjcxZmQ2YjRhIGxlZ2FjeS10cnVuaworMzE0NTkgM2RhMzE3NzhlY2Q3MjRmOGExNDBmZTc3NDZkNDQzZDFmNWEzYTIyMiBsZWdhY3ktdHJ1bmsKKzMxNDYwIDg1MGMwZGExMDFiNjNlYmJlYmM0NmEyY2U4NzRkNGU4NzFlZTNmYmIgbGVnYWN5LXRydW5rCiszMTQ2MSAyZDUwMDQ5YmQyMWRmN2NhYTExZWMyYjFkNTA1MzlkNzk5NmU5Y2NjIGxlZ2FjeS10cnVuaworMzE0NjIgNzBlMjllZjlmYTYyZjAxZDRmM2IzZjc5MmU3NWM0MGViNTc5OWIxNyBhc3QtYnJhbmNoCiszMTQ2MyBhYzY4M2FjNjc1OWFmY2ZmNTQzODRhNDcxNzkyY2ZhMDMwNzNmMGExIGxlZ2FjeS10cnVuaworMzE0NjQgNDRmM2UzMTU5MjliOWU0ZDlmZGYzM2RmOWFhOWZjMzdkMjJkZmFkMiBsZWdhY3ktdHJ1bmsKKzMxNDY1IGY2N2FiNmI2NjQ1NDBiNDJkNzBhYWQwZjRmZWExNzAxYmZhZDI2MGQgbGVnYWN5LXRydW5rCiszMTQ2NiA4NmI1MDZkYmVhMTgwMzJmZjFjYzEwZTU4Y2Y4MGE1MDg4NTA0YmNhIGxlZ2FjeS10cnVuaworMzE0NjcgMWFmYWZlZDlmYTc3NTViYzM4NjU0M2RlNzA4ZWY4Mjk3ZGYzM2ExYSBsZWdhY3ktdHJ1bmsKKzMxNDY4IDhjMjExY2NkZTJiNGI0ZDhjNTViZTM2NGE0ZjYwYWZkN2ZhOTcyMmQgbGVnYWN5LXRydW5rCiszMTQ2OSBjOTQwMWEzNmJhZTcxNGYwY2Q1ZjE0MWNkMTdmNDY3MzI2ZWE1ODdlIGxlZ2FjeS10cnVuaworMzE0NzAgOGM2Yzc5NzcyN2E5MzVmYjA1Nzk1MzFjZWMzOTBkZmY1Yzk1YWE5YiBsZWdhY3ktdHJ1bmsKKzMxNDcxIDFiZDQ4NTcxNzU2NDYyNjBiOWE0NTE3YTc3MjYxMDE2YjA0MzU4ZTAgbGVnYWN5LXRydW5rCiszMTQ3MiAxNDQ1MWRkM2FjYjA0ZDFhZGQ4MTFhYzE2ZDRjMDY2YmRhZjJjZmY2IGxlZ2FjeS10cnVuaworMzE0NzMgOTI1NWZiZGU0M2YzNjJkMWMwNGYzNGRlNDYzZWI3YTcyZjBmMTA5NCBsZWdhY3ktdHJ1bmsKKzMxNDc0IDNiMzBmNjYzNjJiZTAwNTg3OTQ0YWU5NjljNjkyYjBmYWMxZTI2NTQgbGVnYWN5LXRydW5rCiszMTQ3NSBhNjk2MmY1MmYyMzk4MWE0YzE4OWM5NDNiMzhmODQwYjk4YTAxNzhlIGxlZ2FjeS10cnVuaworMzE0NzYgYjU1NjBhZTRkOTcxZGUwNTUzMzJlYjc0Y2YwZmNlMGI2ZjkxNGQ4ZSBsZWdhY3ktdHJ1bmsKKzMxNDc3IGRhZTc5ZDc4MzIwNTc5NjA2YzVmZGNjM2IyM2MyNTlhNGM1YzIyNzYgbGVnYWN5LXRydW5rCiszMTQ3OCAwZjAxOGRmOTc0ZGJiOWM4MTEzOTg4NWZmMWUwMTVjNWJjZGJhNzY4IGxlZ2FjeS10cnVuaworMzE0NzkgZGIxZDQ1ODRhNWUxYzExNWNiMDgyYTI1ZmM5MTdjZTQ4NjdkNzk1NyBsZWdhY3ktdHJ1bmsKKzMxNDgwIGI0ZWViMGJiZGQ0OGI4Y2I0NWI3ZDE0M2YxZDI3YzdkZTNmYWE3M2EgbGVnYWN5LXRydW5rCiszMTQ4MSA0N2E3NjRlNDNlOTAxODUzYmZlOGYzNDYwNDZiM2E1OGJkZTBkZWU4IGxlZ2FjeS10cnVuaworMzE0ODIgYjU0MGU2MDhiYjhhNmJjYjE4NDYwY2U2MTVkNjY0NzZhZjdhMTIyNCBsZWdhY3ktdHJ1bmsKKzMxNDgzIGFhODhhZWYzYWIwZWVhODQwMzczMzFjYWQ4YjcyNjczN2JlYThkNDAgbGVnYWN5LXRydW5rCiszMTQ4NCAxZTc2YWUzYzExNTRkNmVmMWFmYmNhMjY4NzJhMWIzMGVmNjk4MWE1IGxlZ2FjeS10cnVuaworMzE0ODUgZjMxMDg5NDEwN2NiMTk1M2ExYmQ1YTc3OWJlZTZkYjUyN2JmYTk2YiBsZWdhY3ktdHJ1bmsKKzMxNDg2IGYzMzEwZGNlZjNmOGI1ZTA4OWY2N2M0M2ZhNzQ3MWU3MDJiYWRiMTYgbGVnYWN5LXRydW5rCiszMTQ4NyA3MGUxOTZhZjQ3NmQ0OGVlYzM1MWZmNjEwYjAzNWYyYjkwZjk0NTlkIGxlZ2FjeS10cnVuaworMzE0ODggOTFmYzk2MzdlNTZhMDljMjAzMGQ1NTFjZmZlZWYwMzYyMTEwMTBiZSBsZWdhY3ktdHJ1bmsKKzMxNDg5IGUwN2IyMWVhM2M0NWRkZjQ0OTMwZWZlOTFhMDgxNjI4ZDczNjAxZDQgbGVnYWN5LXRydW5rCiszMTQ5MCBjYzRhZDlhZmEyMWQzMzg4MGVlMmQyMjMyY2NlZjViYjE2ZWQ0YjVjIGxlZ2FjeS10cnVuaworMzE0OTEgY2IzZjE4OTA4Y2ViZWUwNWI5YzkxODQyMDBmOTBlZTU2NDFhNWYxMCBsZWdhY3ktdHJ1bmsKKzMxNDkyIGFjMTA3MjlmMDkzMmQwOWFiOTc4YjkzZDMzNzgwMWZlZWQ1MzBjYTcgbGVnYWN5LXRydW5rCiszMTQ5MyBlMjczNDJhNjQxNzM3ZjdlMDA0NjgxN2YxZTcyZGM5NGFkMGJmOThjIGxlZ2FjeS10cnVuaworMzE0OTQgMjI2NDYzNDQ1Njk3MjAzYTI3NTAzNWJkMDZiMzI5NmU4Y2MwODg2ZSBsZWdhY3ktdHJ1bmsKKzMxNDk1IDNiYWFiZDAyN2NjNGQ0MTIwZThlMTI3MGI3NTAwMzJmZTYzM2E3OGUgbGVnYWN5LXRydW5rCiszMTQ5NiA4ZGNjNTIwZDNhMjk2N2EyYmJjNTYxNjFmNmIyYzZkMjVjOGRjYTkxIGxlZ2FjeS10cnVuaworMzE0OTcgYjI4ZDRmZGU5ZTlmYjhmM2M4YjkwY2U5M2Q4ODc5MzU0YmYyZTBjOCBsZWdhY3ktdHJ1bmsKKzMxNDk4IDQzMzdhODk5ZmQxMzI0N2YzMjQyMWU0MTM5MTJiNTZkMWE1ZTNjMmYgcmVsZWFzZTIyLW1haW50CiszMTQ5OSA0N2M5NDIxMzU4ZGQwNDdkMjljMzMyMDc1MzhiMGM4NjY1MWYxNDVhIHJlbGVhc2UyMi1tYWludAorMzE1MDAgNGM4NWRlMjQ3ZWVkYjk3ZjQ0Yzk0OWZmOGQzODZjNjRlMjBlYzBhYyBsZWdhY3ktdHJ1bmsKKzMxNTAxIGUwYThjMzExNTAwNWUxYzMzOWU5MzZhNjkwMGEyN2FjZDc1ZGUzZWIgbGVnYWN5LXRydW5rCiszMTUwMiAyZTBhYTY4ZDQzNGZjYzQwNmFkYTlmZjVhMzk4YTc4NjUyYWRiMGE4IGxlZ2FjeS10cnVuaworMzE1MDMgNTNjODAyOTI3MjAyZTg0Mjc1Mzg0NDZhNDU3OTMxZWU1M2Q1MDI0MCBsZWdhY3ktdHJ1bmsKKzMxNTA0IDhmYzkxZjUwYjg2MTUwNjVkNmZjY2VlOGZlODMxOGRmYjdkODk5MzggbGVnYWN5LXRydW5rCiszMTUwNSBkMGQyOWRmMmI2MzkwMDUzZDViM2RiNDk1OTk3MDM1MjUyNGVhNWFlIGxlZ2FjeS10cnVuaworMzE1MDYgY2M5NWJiNzg3MGRjNTQ3YzBjYzhlODM1ZmQ3NDE4ZTY3Zjc5MWEzNSBsZWdhY3ktdHJ1bmsKKzMxNTA3IGQ1ZWEyYjY3YjVmNDQzZjNjNjU3NWZjYmRmYzhhNjAyNzQ3NGViYTEgbGVnYWN5LXRydW5rCiszMTUwOCAwZmUzMjFlNzhhZDMxYTFiYWFiZDk2NWQ1NTc5MTYxNzI4N2E2MzQwIGxlZ2FjeS10cnVuaworMzE1MDkgNGI5OWE3MDFkZWZlMGViNzBiNjMxOTg4MTBhNzYwNDI1MWJjYjBjNCBsZWdhY3ktdHJ1bmsKKzMxNTEwIDk2MzI3ZWM3NmQ5ZTAyYjg0MzExNThkMjQ2MWMxOGNjM2U0ZmQ4YWYgbGVnYWN5LXRydW5rCiszMTUxMSBlMDFkNWRiYjY2YTQ1OTAxMWUxNGNmYzgyYjQ3MDMwYzM5Mjc2MDllIGxlZ2FjeS10cnVuaworMzE1MTIgZWIyYTk4NGQzNzQ3M2VjZGU3MzVkMjViYmU5NjY4YWI2MzI0YTFiYSBsZWdhY3ktdHJ1bmsKKzMxNTEzIDM4N2E0MTIyY2JkMWU2NmMyZGJjYzVjZTUzMTllYjZlM2I2YmMyNGMgbGVnYWN5LXRydW5rCiszMTUxNCA5ZTBmMjI0MjI3N2JmYzFmYzQwMmYxNDYwMmI0YTY3N2FkZjExMGFlIHIyM2EyLWJyYW5jaAorMzE1MTYgY2VmN2M5NWU3NDhjMWNjNjhlOTRiOWFjYjMyNTQ5ZGZhOTM5MmZjYSByMjNhMi1icmFuY2gKKzMxNTE3IDc2NTAxOTc1OGU5NTEwMmEyYmFhMWNiMjJhMDJiYzRkODliOTkxNjQgcjIzYTItYnJhbmNoCiszMTUxNyA3MjFiNmYxODFmY2I5YTk0MjBiY2E4OGQ3YzBmNWY4NTQ3NDgyM2MxIHIyM2EyLWJyYW5jaAorMzE1MTkgYzRiOTE5ZmEwYmUzZWI5NGY3M2M3NDhiNjhkYWE1YmRkZjk2ZjU5ZiBsZWdhY3ktdHJ1bmsKKzMxNTIwIDQ4MDlmYjBlODY2MDE4ODRmOGYzZTBjYzc1ODZjODRiZDU3ZTBiZDIgbGVnYWN5LXRydW5rCiszMTUyMSBmNTk4NzA5NzYxNDY4NjBiYWJjNWQzNjQ4NjVlNmQ3ZGNmYmYxNDQ4IGxlZ2FjeS10cnVuaworMzE1MjIgNjU4NjAyMTI0ZGY1MjgyM2E2NTkyYTZkNjU4ZGFlZjUwNmExYWI3ZSBsZWdhY3ktdHJ1bmsKKzMxNTIzIDJjNzUxOTM2ZjY5NzY3YTdhZjQzNDlkMWRjZmY3MjUzZGFlOWVlN2YgbGVnYWN5LXRydW5rCiszMTUyNCBiMjZmNTc1ODQxNGEwZjEzNTA4ZjBiYTQ5YWViM2U3MjliNTczMjkwIGxlZ2FjeS10cnVuaworMzE1MjUgZTdiMjZjM2YzNTZmNTdkMzU5YzU1MDkzZjY5MmY4YTQ2Nzc0MjYxZSBsZWdhY3ktdHJ1bmsKKzMxNTI2IDBiM2RiMGVkYjE1MWVjMDA3ZmNkM2ZiNTI0YmZkNzY0Y2Y0ODIyNmEgbGVnYWN5LXRydW5rCiszMTUyNyA1MzY3Y2QwZWVjNDc3Yzc1OTBhMzBkMjBlZTE2OWFlNDAzZjk3N2FkIGxlZ2FjeS10cnVuaworMzE1MjggNDQ4OTkxOGE0Y2NkYjkwMzYwMjRjYzgzYjI3NmI4YTk5OWIwNWM4ZSBsZWdhY3ktdHJ1bmsKKzMxNTI5IGJlZWE0ZjIxYzlmMDU3YzNiMTM5ZmY5NjgwZjU4MTYyNjFiMGU4MzggbGVnYWN5LXRydW5rCiszMTUzMCBlMjY3ZWQxMDBkODVmY2FhYzk1NmMwOTAyOThmMTFiODEzMTljNzNiIGxlZ2FjeS10cnVuaworMzE1MzEgZTExYTE3OGJiNDUzZmE0NDc2ZDE0YTVkZGIxNjY2NjQxZGM3Y2Q3NCBsZWdhY3ktdHJ1bmsKKzMxNTMyIDEwN2Q5ODg5MDFhMGY5M2M0NjhhYzkxMDUwNzY2MDEwMTIyODcwM2MgbGVnYWN5LXRydW5rCiszMTUzMyA5ZTM4ZjgxNzA5MmZlZjA5MmFkZjdhYzQ3MzRkYTZjMDcxMThmZDY5IGxlZ2FjeS10cnVuaworMzE1MzQgZTI3ZjU4YTUwNzM3MDQ4MjljN2Q5YjEyN2E3OWE1M2E3YTIyOWI2ZCBsZWdhY3ktdHJ1bmsKKzMxNTM1IDhmNzA2MDJmYmViYjNjM2NlMTc3MWEwNGY5MGQwMjA0NjM4NjljMGMgbGVnYWN5LXRydW5rCiszMTUzNiAxZDkyYzE1YmQwZTcyNTg5MTM3ZGNkNjRkZTA0YjQ5Mzg5ZjYxZTY5IHJlbGVhc2UyMi1tYWludAorMzE1MzcgNzM5ZWNmYjVmMTVlODg5YzBmZjExOGM4ZTJlYTA0YjE4NGYzMjk1MiByZWxlYXNlMjItbWFpbnQKKzMxNTM4IDc3YmVmNmFhNDhlNTVmYjBkODZhOGIxOGQ0MzM2MjIyMDMxYWNhM2YgcmVsZWFzZTIyLW1haW50CiszMTUzOSAxNmIyNTAzMjIxN2ZmNTEwMTM2YTljZmZiYzcyOTFjMzJkYjVjZDQyIGxlZ2FjeS10cnVuaworMzE1NDAgZDkyZDliNmE4YTdkM2MyNjg3YmI1MWVmMDI3YjRiNWM5OTVhNDA3ZCByZWxlYXNlMjItbWFpbnQKKzMxNTQxIGViNWUyOTYxNzMxMDlkMGNjZjA5OGZmYWI5ZjE1YjUwNjlkYWU1NTYgcmVsZWFzZTIyLW1haW50CiszMTU0MiA1Y2YwOTIxZjRiOTYyNjI1ZTlkYWUyZjFhMWNhZmM5NWNjNGI1NTVhIHJlbGVhc2UyMi1tYWludAorMzE1NDMgMmRmOTIwNDlkOTI1MDE3YmJiODYwMTUyYWNmN2FiNzY4NDRjNmIxNiByZWxlYXNlMjItbWFpbnQKKzMxNTQ0IGE0ZjlkOTFhMzIxYTc5ZGY0OGI3NTc5NTVkMjZkMjE0MzBmNmFhMmQgcmVsZWFzZTIyLW1haW50CiszMTU0NSBmZTEwZWNlOGJhNjhjNGFlZmE0OGQxMzM3MzU3NjA3ZTNhZjllMTdkIGxlZ2FjeS10cnVuaworMzE1NDYgN2FhMjE2Mzg4OWFjZjg3ZjA2NTQ5MWFkYTgxNTAzOTQzZTVlMmE0OSBsZWdhY3ktdHJ1bmsKKzMxNTQ3IDBlYjk0ODM2NDk5MGZiOTkxNTI0ZGI0NjdmOTUxZDA2NGIzNGUwZjQgbGVnYWN5LXRydW5rCiszMTU0OCBmYWNmZjUyMmU3NDQyY2UwMWZhOGNiMzgwYjY1MmM1ZmQxMzhjZDM3IGxlZ2FjeS10cnVuaworMzE1NDkgNzI5YTFjMmVjNGU4ZTBmZGEyZGU1M2EzZmQ3YmExNDJhZGVkZjVjZSBsZWdhY3ktdHJ1bmsKKzMxNTUwIDYxMjg4M2VhZjUwYzZlNzFjYTE4NzAwOGU2ZjUxZTk5ZjhlYjcxNWUgbGVnYWN5LXRydW5rCiszMTU1MSA3OWFkNjE1NmQ2YzQyNDQ2NTgxN2M1YmJlNmY0OTY4ZjRiMWE0NjM1IGxlZ2FjeS10cnVuaworMzE1NTIgMDU2ZmZhNTU0NTE3YTc4ODc3N2RlZWJkMTdiMjI0MzM3ZTVlYjkxZSByMjNhMi1icmFuY2gKKzMxNTUzIGE4YzBhZjgyMjg4ODQ2ZThhOTVlYWZlNjhiMDAyZjQ2ZTMyZjFhNzkgcjIzYTItYnJhbmNoCiszMTU1NCBhMmU5NzA1ODhlNWJiNjg4MDJlYWNmOTkyODAwMjkwOGIzYWU1MWRjIHIyM2EyLWJyYW5jaAorMzE1NTUgYmNlM2RmMDc1ZjM3ODA5M2IyODBmNGYwZjMyYjU4NDFlMDMyOGUxZSByMjNhMi1icmFuY2gKKzMxNTU2IDNiYmNjM2JiYTU2MGM4YjQ2NzNmMzFmOGFmZDFmODZiZjJjZGE1NjQgcjIzYTItYnJhbmNoCiszMTU1NyBiODQ5NDgyYzcwYzZkOWYwYjU1MDJjYzJhZWEwMjk5NWJhOTNjZjI0IGxlZ2FjeS10cnVuaworMzE1NTggZmFjNzYyMjgzYWJjY2FmMTAyNmZmY2MwMGNkMGJiNzU3ZjA5ODY4MiByMjNhMi1icmFuY2gKKzMxNTU5IDFlOTA3NDYyZTgzYWRiY2Y1NGRiYTc1NGVmNDQwMTBlNjBlOGY5ZmMgbGVnYWN5LXRydW5rCiszMTU2MCA3OGM5YzRhMDE4Y2QxYTAzOGI3ZmFlNTk0MzRkYzEyYWYyYTFhYjMyIGxlZ2FjeS10cnVuaworMzE1NjEgMzJhMGMyZjQyMmYxOGRlOTE2NGUwMzAxMWU2MTM3OThhMDhhM2YzYyBsZWdhY3ktdHJ1bmsKKzMxNTYyIDIxYTUwYzMwOGRiNDU5MmVkMGY4ZmQ1ZmEwOTQ0Y2FlNDRiZjM3MzggbGVnYWN5LXRydW5rCiszMTU2MyA1ZGZhZmY5ODA5MTAwMWRkNmYyNWFiMjBjYzczNDFmNTBkZWIxOTQ2IGxlZ2FjeS10cnVuaworMzE1NjQgODcyYzZmMjAyOGZjNGI3ZjM2ZmZmZjVjMzVjZDVlZDZmNThkNGIzMiBsZWdhY3ktdHJ1bmsKKzMxNTY1IDgwODQzN2I4M2IxNTE4NjZhZDIzYjA5OGU1YjVkNTkzMGM1MDQzNmMgbGVnYWN5LXRydW5rCiszMTU2NiA2MWZhNmI1NWMxZGUyZDY1YTRlNjMzMmQxYTg5OGVlMDVjY2ExY2E1IGxlZ2FjeS10cnVuaworMzE1NjcgZTYzZjFlY2NkMjUwZGFkMzlhNWViOTE4OGE5MGI4M2E1ZWQzZGRhMSBsZWdhY3ktdHJ1bmsKKzMxNTY4IDkwNjQ1OTYxNGI1ZTcxMmI1MThjOTE2MjllODUzZmUxZDBmYmM5ZjAgbGVnYWN5LXRydW5rCiszMTU2OSA0M2E5ZWNiZDk2MDdjYTMzZDE4NzI3OTE2YTgzYTkzNWQwNWY0ZDRiIGxlZ2FjeS10cnVuaworMzE1NzAgYWJkNTdjNTM1OGJkN2EwZWEwMzEwMmU5ODAyOTAzMDA0YTczOWUyMSBsZWdhY3ktdHJ1bmsKKzMxNTcxIDZlMjBiMDQ5ZWQ2ZjZjNDVjODE5NTgzYjExOGVlMDcwM2ZkMTJlNTcgbGVnYWN5LXRydW5rCiszMTU3MiAyNWZkMjhjOGJiNmJhZTlhODFlMzM2ZjJlYjUyZDUyNTdjMGE0YmRkIGxlZ2FjeS10cnVuaworMzE1NzMgOTA0YThiODIyZGFmYmZiYzZlZmEyNDU4NTY5ZjM2ZmUxNGJmNzcxMyBsZWdhY3ktdHJ1bmsKKzMxNTc0IDUzYmVmMjBmODRjY2QyZTkyMzk5M2JjZjVjYTFmMmEyZmRhNWZkZDIgbGVnYWN5LXRydW5rCiszMTU3NSAxYzJjOTdkMzQ1NjM4NGU3MmI5ZjFiMTQwZDllNTBmZTNlYTlkYWNiIGxlZ2FjeS10cnVuaworMzE1NzYgOTE2MjRhNDc1MzdjNzAxZDU4ZTg0ZmNjODc5MzAyYTAwYjE0ZWYwMCBsZWdhY3ktdHJ1bmsKKzMxNTc3IGYzNGZjZDYzYWUyOGUwODM1NzcyNmNmOGZlN2ZmMjkxY2I1MDhjMDMgbGVnYWN5LXRydW5rCiszMTU3OCA1M2ZmYWI1ZGIwMTVkZDdhYzZhYjhhOGFkNjU3ZjdkYzU3ZDBiY2IwIHJlbGVhc2UyMi1tYWludAorMzE1NzkgYmUwOWQzMjY4N2Q4YzVlZjU3OWQ1OWQwYzEyYzQ0Y2JkODBhNGIwYSByZWxlYXNlMjItbWFpbnQKKzMxNTgwIDNkZGIwOTJhY2VhOGI4YWU1MzNlMjhiYTJkNTZlMzc0NzFjZDIzY2EgbGVnYWN5LXRydW5rCiszMTU4MSA0ZjZjNjMzMDgwNjMzN2Q1MGIyODRjZjM4YmNkOGU2MWI3ZDE0MmFjIGxlZ2FjeS10cnVuaworMzE1ODIgZDhiOWQ3YzA0MTQ2NTQzZTcxYWJkNWZjYjBmZGFjNzhiMzE1NGMzZCBsZWdhY3ktdHJ1bmsKKzMxNTgzIDFiNjUzOGFhMDk1OTFlMWU5YjQyNjA4YjdlYTZhNmRlMGQ5NDA4NDEgbGVnYWN5LXRydW5rCiszMTU4NCA0ZWEzNzhhNzFmOTY2YThiZDhmMDJkNjZjMzU4MjhjYzhiZDViMGFkIHJlbGVhc2UyMi1tYWludAorMzE1ODUgZGI5MmM3N2IwNWUyNmI1Y2UzOTA1YzdiMjIzYjU2YTQ5MmEwNjA0ZCBsZWdhY3ktdHJ1bmsKKzMxNTg2IDQ4NmEwZjUxNmRiMDNkMTdjNzA4N2ZhNDViOWVhNDM4NGMyZTY4OTMgbGVnYWN5LXRydW5rCiszMTU4NyA3ODRlZDYwNWI1MTMwYmFhNmY0M2ZiMGJhMmFmNDRhYTJjZDQzN2ZiIGxlZ2FjeS10cnVuaworMzE1ODggNzgwMmQ4YzFhZGFjODQwYjIwNDI4Mjg3MWU1N2UzMjhjZThkZTI4YiBsZWdhY3ktdHJ1bmsKKzMxNTg5IDJlOGYwNTMxOTE5YmIyZjE0NDFjMmVhNzdkNWM0ODMxZWY1MTc4MjAgbGVnYWN5LXRydW5rCiszMTU5MCAxOTJiZDZlMTM1YWFkYTU4ZjU3NWMzNzM3ODVkN2U0ZTI4ZTRiYzg5IGxlZ2FjeS10cnVuaworMzE1OTEgYjM4Y2ViYzc2ZDgyNTFmNWEyOWRiYzMwMTlhMmViZWMwZGVjMzVlZCBsZWdhY3ktdHJ1bmsKKzMxNTkyIDVhYmM1ZDA4ODE0Zjk2OGEzYWNkYjRjM2UzNzU1YTUwZTg4Y2JjNGYgbGVnYWN5LXRydW5rCiszMTU5MyA4MjNkNWIxZjMyZTEyZWI1OTk1NTMzYWE1NmUwNDdmMmU4YjljYzQxIGxlZ2FjeS10cnVuaworMzE1OTQgMGE4OWI0MDZjNzMyZjFmNmEyMzhjMmExOTg1OWJhOGJlNDVkY2E3NCBsZWdhY3ktdHJ1bmsKKzMxNTk1IDQ5OGRiMWJjZDY2NDg5NGNhZDNhYmNjMzdjYzgzNDU1NTM1YmZiZDcgbGVnYWN5LXRydW5rCiszMTU5NiBjYTViMGNkN2E1MjUwNDk1Y2RiMGFkY2Q0MzZlMTg2ZjZhZmM5MzM0IGxlZ2FjeS10cnVuaworMzE1OTcgNDAxMzQwNzBlNmE2YTBkZGJiMWY3ZWE3ODg0OWY4ZmU3YWUzZjdhYSBsZWdhY3ktdHJ1bmsKKzMxNTk4IGE4Yzg3YTBiZWI5ODAzNjEwOTE1Y2QwNjYxM2IwMzA3NmIwZjgzMWYgbGVnYWN5LXRydW5rCiszMTU5OSAxYTBjMjMxYzZiMGNhZTgwNDI5NDI2ZjE4OTlhMGMxODZmNmY3OTkzIGxlZ2FjeS10cnVuaworMzE2MDAgNzIzYzU0NTczMDdkOTM4NWFiMmFhYmVlMTkwZTk0MDE2N2ZmOTIyMiBsZWdhY3ktdHJ1bmsKKzMxNjAxIDdmOTBiNWI3MDAxZWQxZmQ4OGY5ODNkYjVmMDM1YjgxNWYyY2MwYmEgcmVsZWFzZTIyLW1haW50CiszMTYwMiBmYjc5Y2MyNjMwYzFlZTQyNDJiYjcyMTljMDU4ZDdiOGJmMjRkMTg2IHJlbGVhc2UyMi1tYWludAorMzE2MDMgZjhmYzVlMTRiZmU4N2E1Y2Y1ZGQ3NWMyZDE2MzFlNGM3MDQ4ODUyYiBsZWdhY3ktdHJ1bmsKKzMxNjA0IGM3NTY2MTQ0NDY1NTM4ODMyNWQyMDEzNWNkYmQ3NjI1ZTYyZmIxMTAgbGVnYWN5LXRydW5rCiszMTYwNSBjMzY2NWRmNjZkNmQ1YjJjOGRhOWI5NjViYjFjYzAyOTEyZTFjOTE5IGxlZ2FjeS10cnVuaworMzE2MDYgMzI0ODk2YjdmNGUxZTI1OTE4YWYxYThlOTkzNTM0NDYxZWNjYTk3OCBsZWdhY3ktdHJ1bmsKKzMxNjA3IGM2MWVmMTgzY2UyZjE1NjQ1YzRhNDAwYWMwMWZhNjVhOWE5Yzg2MjIgbGVnYWN5LXRydW5rCiszMTYwOCBkNjczMDU5MDUyNmMzMTRjNWFlMGY2ZjhiYTZhNzFlMzY0N2ExMTNmIGxlZ2FjeS10cnVuaworMzE2MDkgOWQyOTdkM2RlMzZmNTg2MWE1ZGI3NjdlOWNhNzQwZWJiZTE1N2Q3NSBsZWdhY3ktdHJ1bmsKKzMxNjEwIGY3MmMzODNiY2M0NWQ0Zjg4NDRmMzAzYzQ0NjE5NDY1YWExNWVjZmMgbGVnYWN5LXRydW5rCiszMTYxMSA4NmQ4Mzg0ZDg4MTAyZmUyODg3MjMwMTc1NjRiMTM3NmEyYjZjNWU2IGxlZ2FjeS10cnVuaworMzE2MTIgODY2OTY0Yzg1YjhlMjZkODM5NWM0MTc3NjllYTRlNTI1Y2NmMzgzMiBsZWdhY3ktdHJ1bmsKKzMxNjEzIDViM2Q1OWI5NzhhMmQ2OWYxNjZlM2Q5NzJhYWIzMjFkMmRkYzliYzUgbGVnYWN5LXRydW5rCiszMTYxNCBhOGE2NDM2NGE3MTFkNDE5ZDZhOGJhNWY2YmU4NWRlZGVhMWJmZjk1IGxlZ2FjeS10cnVuaworMzE2MTUgMDQ1NWNmODliMTIzOThhMGU2OGMzZTY1M2RjNDA4OTEwOWJmZjU5NSBsZWdhY3ktdHJ1bmsKKzMxNjE2IGIwNDYyNWNlYTA2MTNhYWQ2ZGE2ODBhM2ZmN2I4ZGYwOTJhNjFlOGIgbGVnYWN5LXRydW5rCiszMTYxNyA3ZmRjYzRjZmM3NTkxNzU1NGU5YWQ3NzMxMTY3ZGZjMmVjNzhiOWYzIGxlZ2FjeS10cnVuaworMzE2MTggMDBkZWQ2MmQyNjc4YTQzNWZkNDBkNmJjZDAwNDFiOGJkMDk2YTY4YiBsZWdhY3ktdHJ1bmsKKzMxNjE5IGZjYjM5YjBhNmUzMDZjODA1OGNmZTc0NWZhMDFmZGVkZGRiOWRmNzIgbGVnYWN5LXRydW5rCiszMTYyMCBiYjZiZDU0OWY5MmE3OTY0ZWI5NjlhZmUwNGNhYTUwOWZlMDI0NTdiIGxlZ2FjeS10cnVuaworMzE2MjEgYjhjYjkwZmMzNTIzZDM2ODQ5YTRhMDk4ODBiZDk2OTE1NTdmOGU2ZCBsZWdhY3ktdHJ1bmsKKzMxNjIyIDBjODlkYzYyNTRiZThkODc0ZWYxMGIzYzlmZjE4ZTQ4Y2M2NDE2N2UgbGVnYWN5LXRydW5rCiszMTYyMyBjZjlkOTEyODM0NWMzZjFiNDlhZGZjZGY2ZWU5Y2IyN2U4Mjk3NWZlIGxlZ2FjeS10cnVuaworMzE2MjQgYTU4NzQ0NTNiZjE3YzY2MDhlNTkyZDdmYmE4MmY3YjNkOTQ0ODcxYyByZWxlYXNlMjItbWFpbnQKKzMxNjI1IDI5OTY1ZDBkNDY1MDU5ZDMwODc0ZTZmNzgwYzU0ODRhZTEyNmNjNDMgbGVnYWN5LXRydW5rCiszMTYyNiA0NGJhMTU3MjUxOGY3MDI5ZGE1NGIwY2EzNjNiOTE2N2M3ZWVjMTE3IGxlZ2FjeS10cnVuaworMzE2MjcgZjQyZmJjN2M3ZDhlOWFjMmUwNWZkNDJlNzQyMDAyMWJkMDZhZmMwNSBsZWdhY3ktdHJ1bmsKKzMxNjI4IDI0NzQzODE1MjdiYmM5YzQyYTIwZDVlOTQ5ZDc1MjIzZDRhMDc3MDcgbGVnYWN5LXRydW5rCiszMTYyOSA0NjU0MDVhMTU5YzFmNDI3N2Y2YTRlNmQ0Njc0YzgxMTM3OTU4MzE5IGxlZ2FjeS10cnVuaworMzE2MzAgZDllOWM5NjRiNmE0NmU1MGRhZmYzNDkzNmE1YjllMDczZWIyMzc2ZiBsZWdhY3ktdHJ1bmsKKzMxNjMxIDE0ZjY1ZDY2MTA4NDhlNWJjOTU2YjQ3NjhkNDljOGM4OGRjZDU2NjMgbGVnYWN5LXRydW5rCiszMTYzMiAzYzVhODgxNDQ3MGM5YzRiZmFiNzVlYzcwZDM1NjAyM2Y0ZDg0ZGUzIGxlZ2FjeS10cnVuaworMzE2MzMgMDRhOTNiN2JkY2U0OTYxMTViMTA3OGI5N2YyOTJjYzNkOTRlNzQxYyBsZWdhY3ktdHJ1bmsKKzMxNjM0IDEyYmFiODdhM2RkMjM0NWNlOWE0M2EwMjM0MGZiOWI5MzNhNTA4NTIgbGVnYWN5LXRydW5rCiszMTYzNSA4OTlmMmQyMTBhMzRkODU0MGU2YTNmZjRkYzZlNDZkNGU5NjUxMzk1IGxlZ2FjeS10cnVuaworMzE2MzYgZDVhYWE2N2MwOTZhZjM1NjkyZTNiZGM5NDJhZWZlYmE4MGFlOGJjMyBsZWdhY3ktdHJ1bmsKKzMxNjM3IDc0OGYyZTViODI5Mzg4MmY3ZmNiYjIxODlhMjg5ZmMyYmM5NDJiMjMgbGVnYWN5LXRydW5rCiszMTYzOCAzMTAwODQzM2M3NGZhZGY4YmZhOWI5ZDE2ZWNiNjA0ZTU3YjJjNTU5IGxlZ2FjeS10cnVuaworMzE2MzkgZDUwZDFmZjQyYjVhY2U4ZDU1NjE2ZjEyMDlhYTY1MWU3M2VkYjllYSBsZWdhY3ktdHJ1bmsKKzMxNjQwIDJkNTljYTI5ZjM4NGQ3OTJiM2E4MTZiOWU1YTVlMjIyY2ZiNmVkNzUgbGVnYWN5LXRydW5rCiszMTY0MSA3ZTY0OTEzODMxMmIzZmY0ZGQ4MmRiMWNkNGY1ZGY2NWM3NDM0ZGFiIGxlZ2FjeS10cnVuaworMzE2NDIgNTRiMzVkYTk4NzllOTg4MDVjZmUxM2I1NGRjMzYzYmFiNmNhMjBiZiBsZWdhY3ktdHJ1bmsKKzMxNjQzIGFiMjcxODNjODkyN2Y2NTA5NjUxNDk5YjU0ZjM5YmI0NzI3YjM0YzEgbGVnYWN5LXRydW5rCiszMTY0NCBmNGU3MmExYTlmMTNlODZjMjYyZWY0NTNjNTUyMDI3NTUxNTdhMWUyIGxlZ2FjeS10cnVuaworMzE2NDUgNWU1ZWVmYTI1ZjNhZDFiZjU5NjhkMGM0MjcyMWI4NzBmODJhZjVmOSBsZWdhY3ktdHJ1bmsKKzMxNjQ2IGJmODY2YWIzOWRmZjJhNTc4NzQ2YjcxMzg4NDViZjQxMjdmNDU5MjIgbGVnYWN5LXRydW5rCiszMTY0NyAyZjNjZDNmNTQwYWQxYWE1MGQ4Y2VlMzFiMGIxODlmMjBlNmZlODQyIGxlZ2FjeS10cnVuaworMzE2NDggZDliNDg3YjkwMzRhNDkzZjY3NDljN2NhMjg2NDI2OTYyOGQyY2E4OCBsZWdhY3ktdHJ1bmsKKzMxNjQ5IDE1NzczZTc1OGZjNzNhYmM0OTU3NGM5ZDhkZDllNDBjZjU3NDM4NDEgbGVnYWN5LXRydW5rCiszMTY1MCA5OGQxMDcxMzYyZjA0MGQ0MzhlNTdhYjVhOGU3M2ZiZTM5MDFlZmQ1IGxlZ2FjeS10cnVuaworMzE2NTEgZGQ2YTYyNTc4YmM4NjQwNjQ0ZjliYTE0NzFiYzQxYTZiMWZhM2Q3MiBsZWdhY3ktdHJ1bmsKKzMxNjUyIGQzNmRkNDFlODkwZjJiYTE5NmMzODBlMTc2ZWU0NmY4MWRmMjRiZjggbGVnYWN5LXRydW5rCiszMTY1MyA3YTJmNjgzMzk1ZTcyODJjOGIzM2RmZTI3NmE4NjBkZGQ5NDBkOTY4IGxlZ2FjeS10cnVuaworMzE2NTQgMmM4YzJjNmIyYWI3OWIxZTRmMjYyMDg5NzlhMGY1M2NiOGFkMjcxYSBsZWdhY3ktdHJ1bmsKKzMxNjU1IDYyODg4YTdlZGYwYjU1NGYzY2RkMjA1MTg2ZDk3NmViYThkN2E1YWQgbGVnYWN5LXRydW5rCiszMTY1NiAxNDQ2M2Y0NzgyNDAyMjY4YWFkMzY2YjNlOTE3NDU5MDAyMzhkYWMxIGxlZ2FjeS10cnVuaworMzE2NTcgMmZjNTJiZTc3OTk5MTM0ZDcwZjI1NmY1MjdmODJmZjVkNGQ3ZDJjMyBsZWdhY3ktdHJ1bmsKKzMxNjU4IDkzNzhmNmU1NTFhZTcyMTZhMWQwYmY1MGUyYTgwZTUyYzIzMmI2MWYgbGVnYWN5LXRydW5rCiszMTY1OSA5YjRlZWQ0YmIzZTJlNGExODMzOWM1Mjk4ODdlNjE3NjFjNGE0NDIyIGxlZ2FjeS10cnVuaworMzE2NjAgNGY0ZjJhMTU0NDc4NDk1NWFlMzE4YTJmY2JjYjU2ZTczZWJkOGYxMSByZWxlYXNlMjItbWFpbnQKKzMxNjYxIDg2OTY5NWNiYTJjZDM3ZTYzYWQ1ZDRjYjkyY2E1NWFhZTU4YjQ1ZGYgbGVnYWN5LXRydW5rCiszMTY2MiBkMjQ1NjRlN2U5OTljZGRjYzlhYTNkMjU3NDg0ZWMwNTU4NjU3Y2ZiIGxlZ2FjeS10cnVuaworMzE2NjMgYzI0YTIzYjFmMTk4YWYwYjUzNTcxOWNiYTdhNjg2ODJmZjZjZTU3ZCBsZWdhY3ktdHJ1bmsKKzMxNjY0IDM5Y2I5MTdiNWY3YWI0YmFlOTI0MmI2MGFlMTg4MTJmY2IxNmM5MGIgbGVnYWN5LXRydW5rCiszMTY2NSBmMTk4MWVlOTgyMjNjZTVhYjI1MGU3MDA2M2E4MDQ4ZDBkMzBmMDM1IHJlbGVhc2UyMi1tYWludAorMzE2NjYgODhlNThlM2Q1ODA3NzNlNzA0ZTE2MTk1ZGI2MWZkYjk2MmEzZTQ5MSBsZWdhY3ktdHJ1bmsKKzMxNjY3IGY0NjlhNmQwNzdmMWU5NTA4ZTdiNDRlZGRkNWE0YmRhNzVkODhmNTEgbGVnYWN5LXRydW5rCiszMTY2OCA0Y2NjZWY5YjRkNTQ1NzU3YmUyYTMxNDM1NmY4YzU5N2VlYTkwZDI3IGxlZ2FjeS10cnVuaworMzE2NjkgNWY5MjMxNjUzMTlkNWNiNjhjOTU5Yjg2MzY4ZmViZmRmZDczNzYxZCBsZWdhY3ktdHJ1bmsKKzMxNjcwIDg3OTEzNTI5ZjI0ODA5OGY5ZTU0N2QyYjZiNTkzNzcyOGVhMGI5ZWQgbGVnYWN5LXRydW5rCiszMTY3MSBhMjRhYWJjZjVlYTI4MTg2Yjg1ZDZhM2MxNjA4OTNlM2E2YjI2NTc0IGxlZ2FjeS10cnVuaworMzE2NzIgYjAwOWMzZWYyN2I1MWM1Mzc5YjAzYjczOTM4MWFhMzdmMDA5Mzc0OSBsZWdhY3ktdHJ1bmsKKzMxNjczIDUwZWE4ZGVkMjlkMDE3ZjM3MjUzOWQ4YzUzOTA3NTM0NzNhNTUzYWEgbGVnYWN5LXRydW5rCiszMTY3NCAwNDdiNWQwMDBhYWE1MTY0ZGQ3OGJlNWQxMTYwNjc3Nzg2NWFmZTg0IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2NzUgMWQ2NjIzNDJlMTlhNjRiMzY5OWM0YmQ3N2UwOWE4YTc3MTEyYzc5YSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc2IDk3Yjk3ZTU3MTkwY2ZmNzM5OThmZDE5ZTIzYTlmNDg0NjZlYTk1OGEgbGVnYWN5LXRydW5rCiszMTY3NyBmOWYzMDEwZmM4NmY3NmE5MWJjMmY1NDAxOTk4NGJhM2M1ZDFlNWQ0IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2NzggOWNhNGE2N2I5OTczNmZiZWEwN2Q4YTA5NjI0NDBmMDkzYjM1ODhiYSBsZWdhY3ktdHJ1bmsKKzMxNjc5IGNkZTQ0NDE4NDMzNmZiZGM3YjY1NmE1MGNjMzI5N2Y3NDdlM2ZjNzYgbGVnYWN5LXRydW5rCiszMTY4MCBiNTM0NTVhNTFiNzgwOTVmNTNkMDc2NmU2Y2YwMDY2ODBkOWQwMzg4IGxlZ2FjeS10cnVuaworMzE2ODEgNjU1YTA4NTU3YTQzZWMxNjI0YWI2NWIyMjI2NmMxNzA4YjY0NjM4ZSBsZWdhY3ktdHJ1bmsKKzMxNjgyIDc4OWIyNGQ2NWQ0MjA0NTc3ODY3OGJiZjg3ZjQ0NjNmNGUyNjhlZTcgbGVnYWN5LXRydW5rCiszMTY4MyBlYjE1ZGU2YTRhNGNkMDZkMjBlYmEwOGZhNzMwMjBhNDE4OTE3NzE3IGxlZ2FjeS10cnVuaworMzE2ODQgYjIwYTM2ODVkMjNlMWQxYTZlMzVjZjQxZWY1YmJjZmM1OGEyNDI1ZCBsZWdhY3ktdHJ1bmsKKzMxNjg1IGY5ZGI5ZGM0NTZhYjU3MDM4MTdjZTc0ZDRhMzIyOTdiMDY3ZjdjYmIgbGVnYWN5LXRydW5rCiszMTY4NiA3ZDA0YmQ4OTc2NjE4NzQ1YTAxYzhmZjRmNDMyNzNkM2EwNWQwNGM1IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2ODcgNDFhOWEwNzJjNjgxNzZhZjZjYzhkNTIwZWRkOTc3OTc5YTlhNTkyMSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjg4IDJjYzE5YTMyNWQ2Njc2NDBlOTMyOWNmZDRhNzM4YzcyYmJkYmI0NjAgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY4OSBkYmYzZWJlY2E3YjFkYTYyZTYyMjk1NmU1NTI5MjA2ZTYyMzg2NjIzIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2OTAgMzc3OTYxZDc2NjEwNWZlZTM3ZjQwODIxMjc4MGUyZGRkODdkMWZiNyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjkxIDM5OTJjYTcwMGU2NTgwMzEzNGY2NjFjNjg3MjdiYTk2NzIxZDU5NjYgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY5MiBhM2NmMDdiYWMzNzM2OWYyYTY1ZDUyNjU1ODY4MjAzY2MzNWY5NDIxIGxlZ2FjeS10cnVuaworMzE2OTMgNTI0ZTVmOWY4NWU2YWYwMzM3Y2EzYjg5NTZjNThmMGQzNmNiNGY3ZiBsZWdhY3ktdHJ1bmsKKzMxNjk0IDg4ODk2NTRjMGRkNWQwOTlmMDU4NThmMDVkODliMWM1ODg2MDk0YTAgbGVnYWN5LXRydW5rCiszMTY5NSA4NDNkNWM3ODk1MmE4MjJlYTAxOTI3ZjAyYjVhYjAwNDNmYzVlNWU2IGxlZ2FjeS10cnVuaworMzE2OTYgODk4Y2U0ZTk2ZjU5MmIwYzViMDY1YzE1NjRjMDlkNDUxYjcxNTMwZiBsZWdhY3ktdHJ1bmsKKzMxNjk3IGY5YjcwMmM1MmRhZWEyOTk2MmNlMDM5MmEzNzVhMDZlMDVkMTQzYjMgbGVnYWN5LXRydW5rCiszMTY5OCAyODE1YzFhOWY3MzU4MzRiZTc2MTJiMDZiYzI2OWExY2M0MGU3OWQ1IGxlZ2FjeS10cnVuaworMzE2OTkgOWU3MzdkNjNmMzgwMWU3NGRiZWRmMzBjMjUyZGZhY2MzNTA2Y2MzMCBsZWdhY3ktdHJ1bmsKKzMxNzAwIDQ0YzMxMjM2NzQzYTA3ODE1MjEwZDA0YWUxMDU5N2E1N2JmNGIzYWQgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwMSAyOTQ3NDU5YjA3ODkyMzI5M2Q3NjhiYWQwNzA5YmFlYjJmMzhiZjQ2IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDIgOTAyZmNmZDVkNjVkMDk4YWU4YWIwMTEwOTdhMzk5MGVlYTc1MDgzYiBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzAzIDc2ZDA2MThmM2ZlMGQ4NzkyYjg0MmU3NTU0MzIzNjExMmU2ZTE0M2YgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwNCBhODM2MWJjYTFjNWNjNzdlNDZhMTExZGI0Y2QwZDhjNzgyYzk4ZWM3IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDUgNWMwZGI0MWQzOGY5MzYwOWI4MzI2ZmFkZWExMmJjNGJiOTBlNjJmYyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzA2IDk1YWJmM2ZjMmIyZDMzNDRjNDcxNWY2N2Q2OGIwYzgzNjQwMDk4YzcgbGVnYWN5LXRydW5rCiszMTcwNyAxMmQ0ZGY3MWJkYWEzNWRmNDJlZTY0NDcxZWRiNTZmNmIxYmE4MWExIGxlZ2FjeS10cnVuaworMzE3MDggYmRhNDkwZmMyNjkxZWI5ODc3NGRiZjk0ZDhkYmQ1NTYxMzZmMDE0ZCBsZWdhY3ktdHJ1bmsKKzMxNzA5IDBkODU1MjQwOGZjZGUxOGE3NWRiYjA2MmNkMjczZTY4NDhjYWU5NTUgbGVnYWN5LXRydW5rCiszMTcxMCBlOWZjMmMxNDE2MDg5ZWI4NzAxOWY3OTMwN2I2MWYxNzdlM2JjNjEyIGxlZ2FjeS10cnVuaworMzE3MTEgNmQ3OGM2YmYzMWY3ZDJjOGZjZmFjMTc3MjY0ZjU5ZDIzMGNjMjY2ZiBsZWdhY3ktdHJ1bmsKKzMxNzEyIDE3OGQxOWNmZjE2MzgxMzJmYzczMDNmZGIzYWY3YjM3ZDQxMjI4NDMgbGVnYWN5LXRydW5rCiszMTcxMyAzZmU3MmE5OTQxMDNiMzVjZDNkM2UxOWU5MzZlNTkzYjYxNDFiMzMzIGxlZ2FjeS10cnVuaworMzE3MTQgOGE3MTMwMWFmYzJkYTYwMmI2Nzk0Y2NjMThhZGZmODQ4OWRiMGVhZCBsZWdhY3ktdHJ1bmsKKzMxNzE1IDQzYzdkOGEwODRmYmMzOWQ5ZTJlNWVjNzVhYTAzOTlhMjg2ZWZmMTEgcmVsZWFzZTIyLW1haW50CiszMTcxNiBlNDA1OTI5YzIyM2U1N2NiMmQ4YTRiM2ZkMmM2N2UwMmJjYjhkNjBlIGxlZ2FjeS10cnVuaworMzE3MTcgMjlkODAzNDBmZDQxNGY4NDMzNjMwYzcwZWQ1YjgwYjk2OTIzYTFlMiBsZWdhY3ktdHJ1bmsKKzMxNzE4IDAxYWVkNzJlMzA5ZTUyYzFkYmU2MGJjMGRkN2NjNDcyNGM5OGE4MjAgbGVnYWN5LXRydW5rCiszMTcxOSBiYTFiZDZmNmU2ZWRjNTYwOGRjNjYxMjU1ZTg3NGVhZGQ2Mjc4OTliIGxlZ2FjeS10cnVuaworMzE3MjAgYWM5NjVhNTAyZDFiNzdjNWRhNmI5ODFkZGQwYWUyZjQxNjNkMDViOSBsZWdhY3ktdHJ1bmsKKzMxNzIxIGFiODVjNzU2YzVkZjNjNjFiYzYzMzQ0ODA0ZTJhZjIzYjA3ZGRhZWMgbGVnYWN5LXRydW5rCiszMTcyMiA4OTEzN2JlMjVlN2FkN2VlNGZhMGQwYzg4YzBhNGRiOTA2Nzc3OTQwIHJlbGVhc2UyMi1tYWludAorMzE3MjMgODc3MDRmODllYTNmNWNmMzlhMTVhODM5NDljZDFkNWMzY2I4YjJlMyBsZWdhY3ktdHJ1bmsKKzMxNzI0IDM3Y2RlMDc4YjkzMzJiZDI5MjhmZGU5NGY5NjE4YjA1MjM3M2RjNTggbGVnYWN5LXRydW5rCiszMTcyNSAzMDMwZDY3ZmI0YTU2Njk3ZDU0NDNmODQxN2FkZjQ0ZTVlM2VhNjhlIGxlZ2FjeS10cnVuaworMzE3MjYgYmMyZDA3MjMwOTM0ZDRjZWVlZmYxYmExZGYzZmY4YWYzODVhNDMzMyBsZWdhY3ktdHJ1bmsKKzMxNzI3IGNlMzc2MGU4ZTY0MDZhNzc1YjI0MDRmYTIyZjBmMzUzMDg5NTVhNjkgbGVnYWN5LXRydW5rCiszMTcyOCAyNGZlMDIzOTAxYjA3YjViYmMyYTQyZTA5OWZjNzY1ZTM5OTUxYzczIGxlZ2FjeS10cnVuaworMzE3MjkgYTZjZDlkNmQ1Y2EzYTQ5MGMzZDAxNzYzNGM1ZWE2M2U5YzJmZTk0ZSBsZWdhY3ktdHJ1bmsKKzMxNzMwIDU3NzZmZDE4OGYyMDU0NTg2ODJjM2UxNjZhNzJhYjdkNjA2ZTMxMjcgbGVnYWN5LXRydW5rCiszMTczMSAzZjkwZDIxZGViZTk2ZTE4MjI1OTQyNDBhMmMzZjllMWYzMjUyZDMyIGxlZ2FjeS10cnVuaworMzE3MzIgMzk1ZWI1NjFlY2UxMzY3NmMwZjJlZDA4ZmZhZDY5NDk4NDVhOTM3YiBsZWdhY3ktdHJ1bmsKKzMxNzMzIDQ4YTUxMTNkZmVmOTgxMmI2MmVkNWY3NzBmZmY1NzIwMzgzNzA0MGMgbGVnYWN5LXRydW5rCiszMTczNCA1OWNhMzIwMGI2ZTUwMzRlMjNlMGFmMjQxMjI5MTFhNzQyZDY4ZmIwIGxlZ2FjeS10cnVuaworMzE3MzUgMGE4ZTg2MzJjNjMxOGI4YzVmMGY0Mzg1OTkzMjgwZmQ3ODU3NDdiNCBsZWdhY3ktdHJ1bmsKKzMxNzM2IDA0ZGY5NjVkNjc1YjdkN2QzY2IwNzM3YjVlZWJmMjc4Zjg2YzQ4ZTIgbGVnYWN5LXRydW5rCiszMTczNyA1ODUyMzUyZDk1MjIyYmFlNjkwYTdjMGY1MDhiZTIyODFjNjA3ODA2IGxlZ2FjeS10cnVuaworMzE3MzggY2QyMWJlODJmNTBiYmNiYmU3OGZlNjM1NjM2ZDQwZGRkZDkwMWExYSBsZWdhY3ktdHJ1bmsKKzMxNzM5IGExYjhlNjU0ZDVmZTE1Zjk5ZjNjOTkyZjQ3MjU5ODYwYjFkMDM0MTcgbGVnYWN5LXRydW5rCiszMTc0MCA5MmYxZDAyZTI4ZjBhOWE0ZjU5Yzc1MjNjMDc1NDU5ZjA2NzcxYTU5IGxlZ2FjeS10cnVuaworMzE3NDEgNzM2YWQ3M2RmNWI0OGVmZmM2N2UwNjA4NjE2YjgyNjgxMjVlYWZiMCBsZWdhY3ktdHJ1bmsKKzMxNzQyIDQ2YTgxYmQ4Y2EwY2QwMzExNGQ2Yzc4N2ZhYmY2ZGEyZjQ2YjY4NTIgbGVnYWN5LXRydW5rCiszMTc0MyAyOWRkZGMwMWI1ZWMzNzY5ZGYzNGM5NTNmYzE4N2JiN2U4MDcxZDBjIGxlZ2FjeS10cnVuaworMzE3NDQgOGU2MDcxODU2ODlhNGQ2YWFhMmUwMGQyNzY2MGZhZGMwYjQzNjNjNSBsZWdhY3ktdHJ1bmsKKzMxNzQ1IDE3ZTZlODE0ZDA5NGU5ZGIzZmI3YTdlYmE0MzRiY2UxOTZmYWJmN2YgbGVnYWN5LXRydW5rCiszMTc0NiBlNDhmYjVmYmZkZjRkYTdiYWUyZWZiYTg2YThiYjkxOGFlMDgyZmJlIGxlZ2FjeS10cnVuaworMzE3NDcgMTQ5YTU3NzJkZDBjNDYyYjY0NGQ0ODQ2NjU4NjBmYzFkNzRmMmE0MyBsZWdhY3ktdHJ1bmsKKzMxNzQ4IGZjYmM4MjRiNmUzODA5NGM3ZmQ1NGI0Yjc1ZTNlYzI5NTJiZjI1NDYgbGVnYWN5LXRydW5rCiszMTc0OSAwMjdkYzIxM2M1N2U3MmRhZTNjNmE0MmI5OGMwMGU2YjE1YmVlYjczIGxlZ2FjeS10cnVuaworMzE3NTAgNWNhNjUwYTkwMDVmYTRiMmM4NzA0YzczZmJkNTI4MWU3Yzc1MjhkNiBsZWdhY3ktdHJ1bmsKKzMxNzUxIDhmMDA4YjdjYjk3YjNjNDI0OTM0OGVjZjZmZjQ3ZTdhZDg1ODhhNGUgbGVnYWN5LXRydW5rCiszMTc1MiAyYWJkOGE1YWY2ZGRiMTE4YmE4NmY0OGFlMjY3ODNjY2UwMDYxOGE3IGxlZ2FjeS10cnVuaworMzE3NTMgYjdjMjlkYzhhZmEwZjMwNWI5MTYwMjFiNGY1MmZkYTRlZTZlMjk2ZCBsZWdhY3ktdHJ1bmsKKzMxNzU0IGVmZTI0OWQwNjliYTQxYjgwNTc5YzZhYTA5MjA5YmY4NDU5ZjQ1YTYgbGVnYWN5LXRydW5rCiszMTc1NSA4MTQxNTA0OGIyYWVmMDAxMDQ1MWY0ZTNhYjIwNzU2NGI4NjcwYzM3IGxlZ2FjeS10cnVuaworMzE3NTYgOGI3ZDllYjQ5NzU4YzU2MTJiODNhNDUxMmE2NzliMTlmMzJmNzcyYyBsZWdhY3ktdHJ1bmsKKzMxNzU3IDA3NDk3ODc5OTRkYmYzODNmZjc0YzU2NmY2MDE1NjU1YmU0MGQ0YTggbGVnYWN5LXRydW5rCiszMTc1OCBmNTdkMzBkNTA2NDhlZDgwMGZiNzkzMWJjN2E4MDY0NWE3OThmMjM4IHJlbGVhc2UyMi1tYWludAorMzE3NTkgYTdmMDEzMDJiMTZkMmIxNDdlNTU0NDhhN2Q1NDhmOTVlM2MzOGRkYyBsZWdhY3ktdHJ1bmsKKzMxNzYwIDBhYjQ1NDU5M2I1M2ExNWY1YWNjNzMzNzFlYTIzZmVmMTFmYjJlYWMgbGVnYWN5LXRydW5rCiszMTc2MSAwNTU3NWI3ZTY3MTQwODQzZWIwZTE1MjA1MDc4ZjQxMjRmOWI5YzI3IGxlZ2FjeS10cnVuaworMzE3NjIgYTM4MjI2M2RmMDFkNWEyN2YzMGQ2N2M0NDE0NzIzNDQ1ZmQ4YzdkOCBsZWdhY3ktdHJ1bmsKKzMxNzYzIGJhZDkxNTY0NWZhMjJkZmU5NjVmZDFjMzczODQxYTYyYTRjNjE0NTMgbGVnYWN5LXRydW5rCiszMTc2NCA3NzE5NjFlNDUzMTRmMDJjMWMxMGQ0NGZiODQ5OTY4NGIxNjllYjZiIGxlZ2FjeS10cnVuaworMzE3NjUgNDM5MTAxZDQ3MDViYjA1ZWJjMWY3YzE0N2ViMTBjNGZiZWRmNzg4MyBsZWdhY3ktdHJ1bmsKKzMxNzY2IDJjM2VmNDYzNTllZjQ2MDVjYjU3OGI5M2FhODUyYjhkNmRlZjdjNjEgbGVnYWN5LXRydW5rCiszMTc2NyBmYjhmNzZkZjY0ZmY0MDU1NWQzZGE1NTJiNWYzMWU1NTM2NjFmNTE2IGxlZ2FjeS10cnVuaworMzE3NjggOTJlM2I2MTFkYzlmOTIwNzIwYjcyYjYwYWRjZDg3NDAxNzQwY2IzMSBsZWdhY3ktdHJ1bmsKKzMxNzY5IDAwOGEyNmMzNTNhZjk3MDk0Y2NjODFmNmI3YWY4MTk4ZGZmNjkyYTggbGVnYWN5LXRydW5rCiszMTc3MCBjMDNiZTIyZmRkMjRjMWU1N2QyMzE0NDUxNjU1MzVlNGFiODdkMzE3IGxlZ2FjeS10cnVuaworMzE3NzEgZDRiMjYyZmJkMDRhMjA3ZTY1ZmNlNmRhYmNmMGI4MGFkMGExNzQ4MyBsZWdhY3ktdHJ1bmsKKzMxNzcyIGYyYmQwZjRkODU3NTBiOGNlZTQzYzY5NTg0NGJiYmZhNjVmYzBkNzUgbGVnYWN5LXRydW5rCiszMTc3MyBiM2MxNTg3YjJiOGUzMjJjZDcyNzE0YzJkZTgwMWQ2NTIwZmY0ZGIzIGxlZ2FjeS10cnVuaworMzE3NzQgNzNiMGRjMjhjOTFhN2FlOGMwNTRhNzM1YmY0YmIzOTQxMDMwNWQ1MiBsZWdhY3ktdHJ1bmsKKzMxNzc1IDkwNzA0MDRmMjRmYWQ1ODc0ZmVlMGNmNmQxNjZlY2ZjODI2MDkyMTYgbGVnYWN5LXRydW5rCiszMTc3NiA3YzhlODgwN2FlZDI5YzZmMmRmZWQ5M2MyYTRjZDJmY2ZiODFiNWVkIGxlZ2FjeS10cnVuaworMzE3NzcgOTk3ZDQ4MWVhNDA5MTBhMTRjNGNkMmZhMzk1ZDVkMjA5ZTAxZjlhOSBsZWdhY3ktdHJ1bmsKKzMxNzc4IGRjOTQ3NWVjNzk4NTVjYzkwODg5NmNjNmNmOWQ2MzkyODdjOGI1ZTcgbGVnYWN5LXRydW5rCiszMTc3OSBlY2E2OTdlMDZhMDdjYzI5NGIxNmU1YTc1YjdiYjM5YWJhZDVkZjdhIGxlZ2FjeS10cnVuaworMzE3ODAgNzMzYWViYjU3ZmIwMDljMGNhMzA0MzczZTUyZWUyY2ZhOGQ5M2U3ZCBsZWdhY3ktdHJ1bmsKKzMxNzgxIGEyZDc5YjkzYjUwYTBhOTNlYmI3ZGVhMDQzM2JiYjU5ZGQxNTI4OTUgbGVnYWN5LXRydW5rCiszMTc4MiAyN2FkZGVhMzNlMGNhZDQ4YWE3MWE0OTQzMjI5MWZmZjY5MGEwYTI5IGxlZ2FjeS10cnVuaworMzE3ODMgY2RlYTViMWI4MjgwY2Y5ZWY5MTYxNmQ3NzIzYWI5ZTc4MDcwMjY4MiBsZWdhY3ktdHJ1bmsKKzMxNzg0IDQzMDY2ZjY3YzVkYmE3NDE3MDA4ZjU5MzhmMjM2YmM0NDg5Njg0NGUgbGVnYWN5LXRydW5rCiszMTc4NSBiODRlNmI0ZTE4Yzg1OTljZmQzOTc1MTg0ZmZlODFiMjlhY2MwNDRkIGxlZ2FjeS10cnVuaworMzE3ODYgNmU0OWJhM2Y2MGJlNTU2MDA5ZTU2ZTNjODVhMTE2N2Q2N2MzZjBmMSBsZWdhY3ktdHJ1bmsKKzMxNzg3IGEyZTY4YWRkZThiMGY0Y2EwOTQ4YjA0OWNmM2UzZTg2ODBmZjczYzMgbGVnYWN5LXRydW5rCiszMTc4OCA0Y2FmYTUxNDEwMTI1MmQ1OTE3ZDkxNjA2NDBjODNmZTQ1YjIxNjY1IGxlZ2FjeS10cnVuaworMzE3ODkgNDdjYjg1Y2RkNWYzMWRlOGI1ZmY3ZTFlM2E5N2I1Mjg3OGEwY2M0OCBsZWdhY3ktdHJ1bmsKKzMxNzkwIGQ0NGY5Y2MyNzI5MDU1NTUzMmUxZmVlZTgyM2NiYTEyZTNmOWM1ZDggbGVnYWN5LXRydW5rCiszMTc5MSAyNzFiYWE4ODQyNGJlMjlhODgzYTUyMTlkZGI3OTMzMWFhYWNhYTcxIGxlZ2FjeS10cnVuaworMzE3OTIgNjI3M2ExNThmYjBhY2Q3MWM3NWI3ODE4ZTJlODEyNmY2MjMxMTA5YiBsZWdhY3ktdHJ1bmsKKzMxNzkzIGI1ZDZjMzhlYjE2MzZmZTYzOTA4MDMyYzcxYWRjYzdmYzNjYmI2MGYgbGVnYWN5LXRydW5rCiszMTc5NCA0OGE2MWE0YjczYTEwYmUxNTgwMDBiYTljNGZhMDY3MzFmZDk4YWQyIGxlZ2FjeS10cnVuaworMzE3OTUgMzBmYTFmNjFiMjMxYTdlZDZiODNiNGE4MGFlYjZjZTJlYjM2MTM2MiBsZWdhY3ktdHJ1bmsKKzMxNzk2IDhmMjNkMzlhOWEzMzg3YTYyODdkYmM4ODZiMzQ2MTFiZjQ4NjhhYTAgbGVnYWN5LXRydW5rCiszMTc5NyBlYTcwMDMyYTI0YjEwMjQyMWZkYzMzMjRhYjMzMWFmY2YyMDY0NDU4IGxlZ2FjeS10cnVuaworMzE3OTggMDA4OTJhZmZiNjBhZTg0ZjYwZDhjZDlmNzQ1MzM2ZDcxYTM2ODRmNyBsZWdhY3ktdHJ1bmsKKzMxNzk5IGZlMWQ1NzFjM2Y4MDNlMzczZjA5OWQ2ZWRjZTAzMGVlNmQ0MDM1YzAgbGVnYWN5LXRydW5rCiszMTgwMCBmMTNhZGMwMGMxNjUyMDM0N2E5MGQwYThiNjJjOTY1MmY1Mjg4ZjU3IGxlZ2FjeS10cnVuaworMzE4MDEgMDU3NDMyNmM3OGJiYWU0NmI3ZWZkODc2ZWM3NzU0MjYzYTMwYTBmYiBsZWdhY3ktdHJ1bmsKKzMxODAyIDU4NTU5MTViMDBmNWU1MTQ3MTMwZGIxOTA3ZDhmNGY5MmJhNDNlMzEgbGVnYWN5LXRydW5rCiszMTgwMyA1YzNhY2JmMjJhMjZmNjcyZmIwZDgxNDc2OWIxZjNhOWI2MGI5Zjk3IGxlZ2FjeS10cnVuaworMzE4MDQgNjI2OWVhYWRkNDFlZjRiYjNiOGIzMDM5MzZmYzMzZDE0MzQ5OTlhMSBsZWdhY3ktdHJ1bmsKKzMxODA1IGY5NWRmYjMzZDc2MjkzYzgwODkxMTRlOWE2NzE4ZjczYjNmYTYyY2UgbGVnYWN5LXRydW5rCiszMTgwNiBhNTlkOGU0Y2I5MDM4NjdiZjFlNzAyMDAyMDFlY2UzOWY1YjhhZDY5IGxlZ2FjeS10cnVuaworMzE4MDcgNGY2NzlhYTYyM2MyZjZjMjU2M2Q0ZmRkZjA3ODk3NDE1MDU2MWViZSBsZWdhY3ktdHJ1bmsKKzMxODA4IDRiNmQ3Yzc1Njk4YWM3YmYzMWY2NzRjMDQ2ODA1ODRjYzJhMTNhOWMgbGVnYWN5LXRydW5rCiszMTgwOSA2ZWU4ZDVhMzBjYmMyMjI0YTFkNDEyYmM1OGRiZDcyNjM3YmJlNWE1IGxlZ2FjeS10cnVuaworMzE4MTAgMzY1NWU5MWIzZGVhY2ZmMmNmYzFhNWU0NTc2MzMxNDE0N2RmZDhmOSBsZWdhY3ktdHJ1bmsKKzMxODExIDRiMWZlZjM3YWM3YmQ3YWE4YzFiNzVmZjY4OWRmYjE3MWY5ZWVmOGEgbGVnYWN5LXRydW5rCiszMTgxMiBkNzYzMDE4NTg5NDFjOTBiOGU3NmQ5OGU4MmFiMjIyZDdjNzFlZGM1IGxlZ2FjeS10cnVuaworMzE4MTMgYjI0NmNhMDMzZTNlZTdkODQyNWRhZjNjNjE2NGZkNWRhZGQ5ODVjYiBsZWdhY3ktdHJ1bmsKKzMxODE0IDAzZDNmYTNlMWQ0ZTVjYTRmYzU3NTVlYmEyYTI1YjAyZTQxMzc1MjMgbGVnYWN5LXRydW5rCiszMTgxNSBmYTE4ZGY3NDZlYzUyNWQ3NzI2YTViY2I1YWU1ZTAxNWM1Y2JhZjc5IGxlZ2FjeS10cnVuaworMzE4MTYgNWM0NmM5NTg3YTJmYTMxNzhlZjFjMGJlZjczNjBjZDg5M2YzZTQ5NyBsZWdhY3ktdHJ1bmsKKzMxODE3IDkyN2E5ODMzZjgzYjc5YWUxYmE5ODcyYmZjYThmYTNhZTEyYTE5MjYgbGVnYWN5LXRydW5rCiszMTgxOCA2YzA2NjdhYzkzOWVkZDNmNWMwNmZjN2EyYzljMjNmYTA3ZDliMWY4IGxlZ2FjeS10cnVuaworMzE4MTkgOTJiOTMwMTMwMGMzOTY4MDVlYTFmZDQyOTYxYmE3ZGYyYzExOTI5NCBsZWdhY3ktdHJ1bmsKKzMxODIwIDI3NTFjNWVmOThiZTZjYzk3OTMzZDA4NGFkOGZlZWU3ZDRlYjZkMTkgbGVnYWN5LXRydW5rCiszMTgyMSBhNGU3ZWRjNjkwNTRkNTAzYmYyMzBhYmU2ODU0NzBiZTA5OTFiYjg0IGxlZ2FjeS10cnVuaworMzE4MjIgMTU2OTExZGJhMzA2YzEyNzgzMmM3ZDc5YzRmZTcyZjhiZThmNThlZSBsZWdhY3ktdHJ1bmsKKzMxODIzIGJlYTNkMWZkYTNkY2IwMjExMjFmN2JmNmJkZGNlZWVkNzViYWE0NDkgbGVnYWN5LXRydW5rCiszMTgyNCBiNzhkOGJiNWViZDcxNDc0ZGE3OTlkMDg1N2I2ZWZkZTAwNzIyODE0IGxlZ2FjeS10cnVuaworMzE4MjUgZTI4YjQ4ZmM5MDBiZmRhYWQzMzEyMWYxYmU4YmU4NGY4ZDczZTliMyBsZWdhY3ktdHJ1bmsKKzMxODI2IGZjOTI5ZDcxYTQ1MGY0MzhkODgyM2MzYzE0ZTg0YWQzOWQ4YzBkMjQgbGVnYWN5LXRydW5rCiszMTgyNyA2NWI3MjI2NzM4MjkwOTczN2RiM2Y1NjMwOThmZDdmOGZkZDZlZWJkIGxlZ2FjeS10cnVuaworMzE4MjggZmQ5Yjg4MmJlMDc5NzViZmZkNWJiMjc0OThlNDQ3ZjAxMjNjZGRkMyBsZWdhY3ktdHJ1bmsKKzMxODI5IDdmMGJmYmVjOTg3ZmEwZGYyN2VlZDA2YTBhMGNmZGQ5YTFjZjE1ZTkgbGVnYWN5LXRydW5rCiszMTgzMCAzMzY1NjY0YjgyOTQyYmFjNjY1Yzk3MzEyMDNlMWJkYzlkNmUwMWE4IGxlZ2FjeS10cnVuaworMzE4MzEgNGM2NDRhNjBjMzBkOTM4NTVkZjFhOGJkNDAzZGMxZmVjN2ZhNzliYSBsZWdhY3ktdHJ1bmsKKzMxODMyIGIxMzU2ZGJhYWI5YTJiOTZlZmI2YTgxMTgyODE2YzhkMDFjMzZlNTUgbGVnYWN5LXRydW5rCiszMTgzMyBmYmFlMjBhMmUxMTZkZWVmN2FmMDk0NGQ0ZTRlNWQ2MTFmODAzNmI3IGxlZ2FjeS10cnVuaworMzE4MzQgMTAyOGRjNjgwN2E1Zjk4MDVjYmE5YjYyNzBjMTNhYjAxZDljMmJkYyBsZWdhY3ktdHJ1bmsKKzMxODM1IDQ1OWM0MjkxZjc1OTYzMGQ3YTE1ZTkzMzc0NmVjZjg1MDFiNTc1Y2UgbGVnYWN5LXRydW5rCiszMTgzNiA2YTJkOWFlNDMwYmVhNmMxZjM1MjA4MTg2NWE2MjRiMjA2YTZmNjk0IGxlZ2FjeS10cnVuaworMzE4MzcgYTI5NTdmZmNiNTk4NjVkMmY2MDc3NGUwZDRmOGJlNmU1ZTFiMDg2MyBsZWdhY3ktdHJ1bmsKKzMxODM4IGVmNTI1Yzk5YjRlZWQ2Njg1MGNkM2M2ZDQ4NDJhMzRmYmU3NDY4YWEgbGVnYWN5LXRydW5rCiszMTgzOSA1MWM3NGI3OTVlOWU5NDk0YzA5ZmQ3NzE2ZmQwMDZkM2NhZGM2NTlmIGxlZ2FjeS10cnVuaworMzE4NDAgMTYyZWQyYTljYzBjOGEyN2U2ODM2MzEzZTlmYTVmYzEwMGUwMTVmYyBsZWdhY3ktdHJ1bmsKKzMxODQxIDdmYzNlNjRkMTQyNDE1MzJjZTYzZDI4M2RmZDYzMzhhMTFjYWMzZDQgbGVnYWN5LXRydW5rCiszMTg0MiA3MzgxNGNiNTgyN2Y4YzVkMjM0YjM3OTQyOGZlNzg5MjhlMjhhYWJkIGxlZ2FjeS10cnVuaworMzE4NDMgOGQxMGY2OGQ3YzNiMGFmMjkxYzE1YjgxZTUyNjY2OGQwNmM2OGYyYSBsZWdhY3ktdHJ1bmsKKzMxODQ1IGE4ZDI0Yjk3YzgxM2IyMGRkYzRhNjM2NGZjYmQ2ZGZjMjI4ZWNjMjYgbGVnYWN5LXRydW5rCiszMTg0NiBiOTcyYmU4MDY0NzdmMTMxYWVjYWQxYTk2NmVlZDViNzExNWQyN2Y1IGxlZ2FjeS10cnVuaworMzE4NDcgYzlmYzM1ZDBhM2ViYWJmMGQ0YzAxNDg1YWI0YTI3NTIzYjIyMTY5ZCBsZWdhY3ktdHJ1bmsKKzMxODQ4IDIyODk3Y2ExMDI4OGRkMWMyZDU2NmExNTk3ZWE5OTU2NWI1NTc0YTAgbGVnYWN5LXRydW5rCiszMTg0OSA1YTRjN2U2ZjAwOGUyMTJmM2YwNjBjYzU0OGI3ZTFlZTA0YzhlNjQ2IHJlbGVhc2UyMi1tYWludAorMzE4NTAgZTQwNTI3NzY5ODY0Y2IyOWQ2OTFiYjFjZTM5YjI3ODAzY2RkOTFiYiByZWxlYXNlMjItbWFpbnQKKzMxODUxIDE3MWYxODYyZGVhOTU3MzU0ZTQxYzFmNjg5M2M5NDgwYjgyZjRlZDcgcmVsZWFzZTIyLW1haW50CiszMTg1MiA2NWRkOTYxMmE3NDgwODAxNjExMDdiNjQ0N2JmZDU1Y2Q5MzgyMzNkIGxlZ2FjeS10cnVuaworMzE4NTQgMGJhMTdlOTNmMTM5ZjU3NGZlM2E1YjMwMjMyZDc1Mzg1Y2VhODZkNiBsZWdhY3ktdHJ1bmsKKzMxODU1IDc2NTRjMjRkZWNjNGVkYjljNDQyYmU3OWRjMTg5OTAxNWE0NjhkZWEgbGVnYWN5LXRydW5rCiszMTg1NiAyYzIyYjVjMDlhNThkYzYxOTNlMmE3NGU3YTAzZDcxM2M1YmVjODkyIGxlZ2FjeS10cnVuaworMzE4NTcgYWJmZTRiMzgwMzA1ZWQ4YzJhOTE3YmUwOTNjYTIzM2I5YjIyNGVkNSBsZWdhY3ktdHJ1bmsKKzMxODU4IDE0MzE2ZGYxYzI5OGI3MTY1M2RjNzU0YjUxZDA4NDAyNmIyNzJjZTAgbGVnYWN5LXRydW5rCiszMTg1OSA5NjAyYzY2NGVkN2EyY2JlNjgxZjIwMTllZGFkYjY3NTk3NzYxMmExIGxlZ2FjeS10cnVuaworMzE4NjAgNzM0MzRmYTlkMjg1MmI3OWM5OTlkMjc4N2M0Y2UxYTM5YmJmNmZjMCBsZWdhY3ktdHJ1bmsKKzMxODYxIDhjMDgyOTM2ZGFhZmRhZWUzMjM5NTdhY2Q5ZGVjNWY2Y2FkYThiMzggbGVnYWN5LXRydW5rCiszMTg2MiA0NzA1MDRlZjU3OGIyMDUzNjY4NThhYTQ3YTAyMDlkOWFhNjRhMWZmIGxlZ2FjeS10cnVuaworMzE4NjMgYjE0ZDY3NDFmNDk2NTFiODZmNjIwMDAxZWQzYjY2MDBmYjkzNTljMyBsZWdhY3ktdHJ1bmsKKzMxODY0IDcwMmU1NDdmMzFlMGQ1MjVkZjU1NGNiM2VhMDQ1ODdmMDgwMTk3MGIgbGVnYWN5LXRydW5rCiszMTg2NSAyMjZjNWJkZDE2MGI5NWFlN2M3MGZkYjgxYWZhOTg2MzQ1MjA2OGNhIGxlZ2FjeS10cnVuaworMzE4NjYgMDBiZGE1NmY1NDMzMDYzY2ZiZWMxYTU1NzEyMDNmM2JhNzJiOGQzMyBsZWdhY3ktdHJ1bmsKKzMxODY3IDljMzU3MmE1NTc1Zjk5NzMyMjRkOTA1MWJhODc0NGZmY2IyZDJlZWQgbGVnYWN5LXRydW5rCiszMTg2OCA1YzlkY2RjN2ZlOGQ2OWIzYjJmNGMzZTdhMWRhMThhZjdiZDM4NDRjIGxlZ2FjeS10cnVuaworMzE4NjkgNGY0N2RmMjA0MTVjNzFlYjk5MDk2MWRjZTYxNGZmMzM2ZjM2ODMyMSBsZWdhY3ktdHJ1bmsKKzMxODcwIDI0ODlkMjIyMjhkYmJjOTdkZDEwMWExOGRiNmM3YjFmMDZhOWI4MWYgbGVnYWN5LXRydW5rCiszMTg3MSBlZjU1ZjIyMzJhMTBkNzMxYmRlYWUwN2VmZGM0OGM4NjBmZmFiYWMwIGxlZ2FjeS10cnVuaworMzE4NzIgOTBmN2ZiY2IzNzA2OTU3ZWY3Njk4ZDg2NDgwYjRjMDIzZGFiMmYwMyByZWxlYXNlMjItbWFpbnQKKzMxODczIDkxODhjYjhlMTkxYjQ4OGNhNTMwYmRmYzUwZTMwZTU3Zjc5NTQwOWUgbGVnYWN5LXRydW5rCiszMTg3NCA5Mjc4YjFjODBhNjdmMGNmY2VhZDI5NWQ0Y2I0OTU3MjI2NTM4ZWZjIGxlZ2FjeS10cnVuaworMzE4NzUgM2UxOWUzYjcyZDliMWI5NzZkY2M0NzE2NTUzMDAyOTUwY2VhMThiZiBsZWdhY3ktdHJ1bmsKKzMxODc2IDAyM2QzYjUwZTU5Nzk3NGViM2Q0MWMyYTdiYWQzZDRjZTYzMzJiN2YgbGVnYWN5LXRydW5rCiszMTg3NyBiYzM3MGI4NzUzZjEyNjBhMGY0ZDY2OWIxNmJiNGRmNWMxM2JmMTY0IHJlbGVhc2UyMi1tYWludAorMzE4NzggMzYwYTU3ODA1Njc2ZGQyM2FiOWE2NDBlYWY4NDg4NGRmMjhkMTBmOSBsZWdhY3ktdHJ1bmsKKzMxODc5IGZkNWVmNzAwMzQ2OWE2MzE4NjQ1OGNhMTdlMWFiYTJjYWM0YmVlZjYgbGVnYWN5LXRydW5rCiszMTg4MCA5MmRhZjhiMDZhYmMxODYyZjVlZmU2OGM1MTA3OGUwNDZmMmU5YTliIGxlZ2FjeS10cnVuaworMzE4ODEgOWViYzYxYjllOGJkYmE2NWEzOTE1MmVjNTI1NTUyMTUwMzFlNzdkMiBsZWdhY3ktdHJ1bmsKKzMxODgyIDY3YjIyZmE0YThmZTVmNDY0ZWZiZmNiYmNkOTM0YmVmY2RhNmZlMDQgbGVnYWN5LXRydW5rCiszMTg4MyA0ZTIyMTM2OGFmNzA3YjRiMTUzYWJmN2E4NmZlNzlmZDA0MGYwNWIwIGxlZ2FjeS10cnVuaworMzE4ODQgODUwNjI2ZDQ3NTc0OWQ0NmRlZWI3NDY1OGJhMmZjODk0YzRkN2Y2OSBsZWdhY3ktdHJ1bmsKKzMxODg1IDMzNThkZmIxYjE4YjQyMmUwYTliZWM4NDAxNmQ3MGJkY2MyNjYyMmUgbGVnYWN5LXRydW5rCiszMTg4NiAxODU4YmNiNjE3MDY4MmMzYjc3ZTNiNGU4Yjg3MTJiYjk5N2E1Mjg2IGxlZ2FjeS10cnVuaworMzE4ODcgY2RkNWQwY2ZhNmRjZTM1OGQ5MjZiOWVlODM2MWMwZWIxYmU3NGNhNyBsZWdhY3ktdHJ1bmsKKzMxODg4IDYyZGYxN2U1MDFkYzY4M2EzNjI0ODg5ZjBlNWQ1MjgwNjc5ZTAwNzAgcmVsZWFzZTIyLW1haW50CiszMTg4OSAwMmNlMjI4MzBhYjk2MDk3OWEwMjY4NWQwMjBjNmU4OWZlYmNiNjcxIGxlZ2FjeS10cnVuaworMzE4OTAgYjkxYTgxZDY4MDY4MGUwMWZkNjE0MTczYWIxNTVmZjZjNjc5MjE3MiBsZWdhY3ktdHJ1bmsKKzMxODkxIDI5MWI5ZDg2NmVjZjJhOWM4ZDdmM2VmZGRiNzk4NTljYjgxZDBiYzIgcmVsZWFzZTIyLW1haW50CiszMTg5MiBlZWMzZmQxNjRhN2RiOGRkNGM3ZmU4OGMxOWUyMjQwZGZlNzQzMWQwIHJlbGVhc2UyMi1tYWludAorMzE4OTMgOWYyODdlNWViMDM3NzUyNDllZTFkNDhhMjM5OTdiNDEyM2RlZGQ4OSBsZWdhY3ktdHJ1bmsKKzMxODk0IDcwMDAzYjBjYjgzNzk1MjBkNjgwMjQxY2ZlODA2OTUxNDlmM2U2MmUgbGVnYWN5LXRydW5rCiszMTg5NSBiNTZkMTBlZDMzYzVlODVhZjJlZWRmM2NhNWEwMGJhMTk1MmI0MTY5IGxlZ2FjeS10cnVuaworMzE4OTYgOTBmMTdjMzc0ZjU5MjcyOGU4OWU0OTlhMDY2NDdjMzI0ZDQyMGU5YiBsZWdhY3ktdHJ1bmsKKzMxODk3IDM0MzRkMWI5MjA2YTViZDhkZTk3NGMxYTUwMGJhN2Y5NTg0NDdkODMgcmVsZWFzZTIyLW1haW50CiszMTg5OCBjYzM1ZWQyYjI2YThiMmI1MDQzMzU0NGMzMGQzMjZjNTJmZTU1MjMxIGxlZ2FjeS10cnVuaworMzE4OTkgNWNmMWYyZjMwZGJkNmNjNDA2NWIzNGQ1ZTU5YzZmZGM1YmI2ZjdhZiBsZWdhY3ktdHJ1bmsKKzMxOTAwIDc5NzkwOTQ5MmMzODY3MjA0NDM3ZDFiZTVhYjFjOWZjYzRkZjYzOGQgbGVnYWN5LXRydW5rCiszMTkwMSAyNjgwOGFjN2VlNTFhZTk5MmE5YTBhN2VmN2JkZTc0MDMzNmYzNWQwIGxlZ2FjeS10cnVuaworMzE5MDIgOTgwZDZlMDExMmNlMWU0NjQzZDRkZDFhYzJjOTdmY2ZjNWI3Zjg0ZSBsZWdhY3ktdHJ1bmsKKzMxOTAzIDYxYjBmZjk4ZDk1ZGQzODFlMWNkNzNkYTlmMzA0OTJiYzRkNmU2ODcgbGVnYWN5LXRydW5rCiszMTkwNCAxNDM5MTU3NzZjYmMyZmYzMTc2MmUzYTU3OTI0YTAxMzI1ZjU0NzllIGxlZ2FjeS10cnVuaworMzE5MDUgZjVjOTdiNjVmOWU4NTY4NTc5Y2I5MzI1OWI3NDQxN2FlMTc4YzQ1ZCBsZWdhY3ktdHJ1bmsKKzMxOTA2IDFmYzFhMzA1ZTM5OTlhNDQxMDgzMGNkNDdlMjA1YTZjYjQ5MWIzNGIgbGVnYWN5LXRydW5rCiszMTkwNyBiNzM0MGIwOTU1NWQzMGJlOGJkMzRkZjVlZWVlODIwYjUwNmI5NDI5IGxlZ2FjeS10cnVuaworMzE5MDggMzA5Njg5OWY3NzRmZWFjOTI4M2FhOWI2NThjM2UzOTdmMWIxMTFkNCBsZWdhY3ktdHJ1bmsKKzMxOTA5IGUzNmZmNDkyY2JiMTYyM2MwZGQ3YzE2MzA4YmQyNzU0ZGYzYThlY2IgbGVnYWN5LXRydW5rCiszMTkxMCBkNTc0MjE2MjM0NDliN2FiMDkyYTllZjEwYmMyNGE5YjMyNzE3NWYxIGxlZ2FjeS10cnVuaworMzE5MTEgNDUwNTRiZjU5MmU1ZTAzZWQ2MTcxM2Y1YmNkMjMzNjRjYTUxZWU1ZSBsZWdhY3ktdHJ1bmsKKzMxOTEyIGRkODNhOWE1M2RiZmI5MWY4OTUzOTE1MWU4NmU5YmIyNDQyNDE4ZjEgbGVnYWN5LXRydW5rCiszMTkxMyBkMzRiY2IzY2IyMTZlYTk2OTY5M2FmYjdjNmUxYzg4YjM1ZGQ5ZjNlIGxlZ2FjeS10cnVuaworMzE5MTQgZWRkZjU5ZjVjYzU4NDE0NzdkZTYyMjJlOGU3MWI0NWQyZGEwZTcwMyBsZWdhY3ktdHJ1bmsKKzMxOTE1IDNmZmJiYjRmNDhkYTYzM2YyZWE0MzcyM2FiMjVlMTMzZjU0OTA4MjEgbGVnYWN5LXRydW5rCiszMTkxNiA4ZDdmZmU0Y2FhZDlhY2FjODQxYzU4ZThkMmQzMWFhZGQ1NDlhMmEwIGxlZ2FjeS10cnVuaworMzE5MTcgMzRlMjJjZGZhYWQyNDYzODUzODA0ODE3NjgxMjNhOTI4MzgxYTlmMSBsZWdhY3ktdHJ1bmsKKzMxOTE4IGM3Y2ViOTU2MGViMGUxYmFhMTk3ZmVjMDBjYjIyZjg5NTlhMDM4MjYgbGVnYWN5LXRydW5rCiszMTkxOSA3MjI0N2VlMjI2NTM3NGNjNTViOTBjODgyNWY5MTkwY2M2Y2JkZTY2IGxlZ2FjeS10cnVuaworMzE5MjAgNmZkZGNkZDExZjQ5ZmFkYzBjNzhhZTQ5MDJmNThmMWE4MGJjYmI1NyBsZWdhY3ktdHJ1bmsKKzMxOTIxIDMxYTUxMWY3NGIyODE2YjEwYmNiODFmOTNkM2IyODE2OGI0ZTRlZTMgbGVnYWN5LXRydW5rCiszMTkyMiBiYWIyYjI4NjNhNmUwNGMwMzhmNDMzZGZiNTMwNTFmYjVjYzcxNjVmIGxlZ2FjeS10cnVuaworMzE5MjMgOGUyNDczYWQ3YzBjYmFiM2Y2Y2IwMGQ5YmY2MTNhZDdiMTRmZDQ2MyBsZWdhY3ktdHJ1bmsKKzMxOTI0IGM5N2MxMDRjMmQyNDk2YzhiMWQxNWQ1YzczM2Y5NmJjODkzMGM5MWIgbGVnYWN5LXRydW5rCiszMTkyNSA5YWFjODcwZjAzYTI5OTAyYzFmODNiYjE1ZDg3MDYyZGZhMDBhN2FkIGxlZ2FjeS10cnVuaworMzE5MjYgZGUwMTMyNzY1ODRhZWJlZTQ5YzY3MGM3N2JkNDAwNWU1ZjRhYzY1MyBsZWdhY3ktdHJ1bmsKKzMxOTI3IGZmNzhjM2MzZWJjNDY2ZDAyOTBmOTFhYTlhOTVkMDU2MTJiOGI4YjUgbGVnYWN5LXRydW5rCiszMTkyOCBlYjQ4Mjc4YzJlMTAyNWNiMDg2NzM1YjdiNjZjZDQwMjgxODk3MGFkIGxlZ2FjeS10cnVuaworMzE5MjkgN2Y5ODFkZDdmYThkMmRjYTQ1Yzk5NTczODNmZGJkOWMwMzMzMzg2MSBsZWdhY3ktdHJ1bmsKKzMxOTMwIGZiYWU2NDU1MTNkNzQ3MzRmMWJiYjU3YjgyODA1OWQ1M2I0YTRlOGIgbGVnYWN5LXRydW5rCiszMTkzMSA3NzA4OTJkNzhmMmJiNzk4NmExZTI3NTcxNDM0MzcxYWEzZjA1NmM3IGxlZ2FjeS10cnVuaworMzE5MzMgNDU4NTRmYzcwN2Q2NDk5NDJiNjgxMDIwYjFhZDRmYmQ0OGIzY2QxNCByZWxlYXNlMjItbWFpbnQKKzMxOTM0IDMwNzQ4YzE1YTQ4MWFmNzcxNjMxZmZjM2I0NWEwNzgzMTU5ZjBiZjAgbGVnYWN5LXRydW5rCiszMTkzNSBlMzMzZDc2NWY0MWVlMWYzOTVhYTM5OTcxYmFjNDQzMGQwYWQ4ODQzIHJlbGVhc2UyMi1tYWludAorMzE5MzYgZDg3N2ZmYTRmN2YyMmFjNWZlNmVlNDlhMTQ1NWEzNDJjNjUwMDcyOSBsZWdhY3ktdHJ1bmsKKzMxOTM3IGNlNGI5MjhjODM0MGExMjI4YWE5MDQ3OTZlN2Q1ZDU1YzU4ZDdhZWUgbGVnYWN5LXRydW5rCiszMTkzOCA3OTVkNjE0NGQyZWU0Y2Q4NDMwMzlmNTUwZTdiMTFiYTdlMzBiNjk1IGxlZ2FjeS10cnVuaworMzE5MzkgN2RhMmVlM2E5YzQzYjNiOWYyNDM4MmFkY2MyMmQzNGI5YjRhNTk1YSBsZWdhY3ktdHJ1bmsKKzMxOTQwIGNhNDNhYmIwNzYzODY4NzkzMGQ3ZjBmODE0NTBlZWM3MmRjNmU4ODkgbGVnYWN5LXRydW5rCiszMTk0MSBlMGViZmEyZmI5MzY5ZGJjOGM3NDY0MjFmMWZhYjMzNDM2ZjJmOWYyIHJlbGVhc2UyMi1tYWludAorMzE5NDIgZjZiZjc4MTczMWQ0MjU2NGRiOGU2Y2Q3MzdlZjgzZDllYTA1MWM1OCBsZWdhY3ktdHJ1bmsKKzMxOTQzIGY5OWNmOWJmYmJhZjViZWVmZjNjNjI5YTcxYzM4OWQ0MTkyZTY4YTUgbGVnYWN5LXRydW5rCiszMTk0NCBiODcyMjk3NDA2YWE5YzlmYjg2ZWMxNjRjNmNmZDhlN2I1NzM3MTI5IGxlZ2FjeS10cnVuaworMzE5NDUgYjIzNDM0MjExZDAxZGQ4MDBmMjFmZDkxNjNlYjlmNjE5N2VkZTlkNyBsZWdhY3ktdHJ1bmsKKzMxOTQ2IDk0NjAxZDhmYTUxZGI2OGQ4YjQyZjlhYjI0ODQ1ZDU3ZGUwZTc3YTAgbGVnYWN5LXRydW5rCiszMTk0NyA5ODNlOTI5MWE3YjQ2MWUyYWQ2NmE0MDc1NzYxMGQ4Y2NmY2NjNGQ3IGxlZ2FjeS10cnVuaworMzE5NDggZjgxMjM5YzEyYzYwZjgwNjIyMzE5ZTZhZTU4NThlNmIxNmVjNWVlNCBsZWdhY3ktdHJ1bmsKKzMxOTQ5IDRlZGU1N2E0MmM2MjBiMmQxZTAwZTU0YmY2MzI5ZDM1MTljNzMyNTUgbGVnYWN5LXRydW5rCiszMTk1MCAzMzMxOTQ1OGZlOTk1YmVkYmU1ZjI4NmU3OTM5MmM5MDY2ODcyZDY5IGxlZ2FjeS10cnVuaworMzE5NTEgMDc2MTdkMDkwNGE2M2YzNjE3ZWIxOWFiNGVkNGE1YmViZmY4N2I2OSBsZWdhY3ktdHJ1bmsKKzMxOTUyIDVlZTI5ZjEzNjRmMzM1NzgxNWYyOGMyNGJhMWQ2ODllNTdhYzA3OTIgbGVnYWN5LXRydW5rCiszMTk1MyAxNmFhNzJhOGMyODFlZjIwYTUxZGI3YThjYjNmMDRkMjhjMzE3ZDYxIGxlZ2FjeS10cnVuaworMzE5NTQgYmM5MDc2YjAxNjk0OThhYTUzYjM3NDQ3NmYwODU1NGM3NDBmY2VmZiByZWxlYXNlMjItbWFpbnQKKzMxOTU1IDFlMGU2Nzk0NzE3NThiNTlmMDY1N2U0ZjY1ZjRhY2M1ZmMyN2Y5OGMgcmVsZWFzZTIyLW1haW50CiszMTk1NiBkNTYyODJjMjhhMWVmY2RmNWVjY2QwMTE5MzQ1NDBhMTAyZDQ0ZGRjIGxlZ2FjeS10cnVuaworMzE5NTcgNGYwMzhkM2E4ODc4Y2JmNzQ5NWI3MjRhNTFkZWFiYjI1NzQwNTIyNiBsZWdhY3ktdHJ1bmsKKzMxOTU4IGEyMTEwY2IxNjVmMTExYmZmZTk0NWI0NGMzMTcyZjUxNzAwN2M4ZjAgbGVnYWN5LXRydW5rCiszMTk1OSA2NjQyMTJhNmUyODNlMmEyYmI4MTM0YTEyNWQ1YmM3YjljZjM4ZDUzIGxlZ2FjeS10cnVuaworMzE5NjAgZWU5NGE5OGNmMzk2YzA0NDVhMzhiYTk3NmY2YWFlNzIwOWE0YzVmZCBsZWdhY3ktdHJ1bmsKKzMxOTYxIGM2YzJmMjZkZjY1YjA0ZWNkZGY3MTcyMmZlN2Y1OGU1NmNmZTYyMTUgbGVnYWN5LXRydW5rCiszMTk2MiA1ZjUzNjRhYzRhZGJjNDdjMGRjODE0OTRmZDJmYTZiZGZjNTU1NDdkIGxlZ2FjeS10cnVuaworMzE5NjMgZjAwY2Q2OTNkNGUwMmQzMjdhMTZhNDc1MDZlNTNjY2JiNWY0MmI2NyBhc3QtYnJhbmNoCiszMTk2NCBlNTMwNDNiZGI4ZjIzYWQ0ZDkxOGQ4YWQzMzhlYWFlMGExMjZiOTk4IGFzdC1icmFuY2gKKzMxOTY1IGNiOGQ0MjdhZmQyMTE1NzJjZDZjODE3Y2ZjNGFkMDVmZGMyMzY5NzIgYXN0LWJyYW5jaAorMzE5NjYgZmEzNWM4YjQ1YjI0NTZkNTMyYTRmMDBiMTk2YmNjNGYwNjQ4ZDgwYyBhc3QtYnJhbmNoCiszMTk2NyBkMWQ2MGMyZTBhZTk5M2E2YzE4YTA5ZTYxNGQzNzkzMmM3YTI5NzFhIGFzdC1icmFuY2gKKzMxOTY4IDMwNWMxNzUxMWE4NjljOTZlNzIzYjA5NDgxNmM4ZDYzOWU1ZDU3ZDAgYXN0LWJyYW5jaAorMzE5NjkgNTVkMGU5OThiYzQ2YzQ3NTBlYmU2OGI4ODdlODRiZjRkMjhiM2MyYiBhc3QtYnJhbmNoCiszMTk3MCA3MzY1ZjEzMGYxNTgzZGE2ZmM0Yjc5ODAxNzJjZDgyZDg2NTEzNzdhIGFzdC1icmFuY2gKKzMxOTcxIDkwNzNmOGZmNzI1NjJhYzc5NzFhODMxZTk4OGZkNGNlMDI0YzYzYzcgYXN0LWJyYW5jaAorMzE5NzIgNjNlZDg1MjkwNDEzMzYwOTg4OTgwZWYzMzZmN2JiMDRlZTM4MjM0MSBsZWdhY3ktdHJ1bmsKKzMxOTczIDVlZjYxMzJmM2NhYmM5ZGRlMWE4MGMyMDVmNDQ3MWY0YjQwYmE1MWMgY2FjaGUtYXR0ci1icmFuY2gKKzMxOTc1IGVjODAzY2M1NzE4NTE3ZTI2NTk4ZTUzYWUwZjFhN2E4ZTdkZTk0MzcgYXN0LWJyYW5jaAorMzE5NzYgNWIxNTJhYWM4MTNkN2RiMGJlMGVmYTVmOTJjZDU0MGE1MGY2YWVkMSBhc3QtYnJhbmNoCiszMTk3NyA4ZmZmYTZkMTU0NGE4NDM1ZTQwMGExOGNiMzUxOWU5MjExMmM4N2RjIGFzdC1icmFuY2gKKzMxOTc4IGRjZGM0NTE3NDBmYWI0Yjk1NDIyOTlkMWIyOWZhNzkxOWVmZTI4MDMgbGVnYWN5LXRydW5rCiszMTk3OSBmMzYyYzlhZWRmMTM0YTVhYTQ1Njk5NjI4MjU4ZDlkMzU1MTVhMDUwIGFzdC1icmFuY2gKKzMxOTgwIDczNjdhMzg0YTc0NTU1OGE3MDcwMDI2MTY5MDk3YTBlOGZhNjJlYWQgYXN0LWJyYW5jaAorMzE5ODEgMTFkODI3ZDkzOTA0MjliOGIxNjZmNGI3OWU0MmRjYTA2NTRkZDRlOSBhc3QtYnJhbmNoCiszMTk4MiA2MzNhNGJiZDc5N2UxN2VlODllNjQxY2ZiYThkNTAyNmNmOTViN2EzIGFzdC1icmFuY2gKKzMxOTgzIDc1NmY5ODdjMzU5MDEzYjk2NjFjMzdiMzA5NjkxMzVkN2Q1YmRmNTQgYXN0LWJyYW5jaAorMzE5ODQgMzUwZWEyNmU3ZmQ5NWU5ZTgxM2EyYjQ5ZTZkNmE3OTY0MjY3MzQyMSBhc3QtYnJhbmNoCiszMTk4NSAyMzBjY2I5ZTUwMDBlYTMyYTg4ZjRjMTgyMzZiMmJhMjhhMWI0ZGViIGFzdC1icmFuY2gKKzMxOTg2IDA3ZjNmYTYzOWQ4ZWM2ZDVlNjRlM2Q5MWU4NGZjNjUyN2Q5ODFiN2UgYXN0LWJyYW5jaAorMzE5ODcgYjA5ZGIwYjk2YTc2YmMyOGJlNjVkMGVjZDhjNDVmNzJiNzRmODc3ZCBsZWdhY3ktdHJ1bmsKKzMxOTg4IDJkYTE0ZmM5ZTcyYmNhYzhiODdkNmNlZDZlYTk2MDQ2OGU0MzE2NzkgYXN0LWJyYW5jaAorMzE5ODkgYzI1YmI5MTNhMjM2M2JmNjk3MmUyN2VlYWQzY2M1OTIyMTFhZDFkMiBhc3QtYnJhbmNoCiszMTk5MCA4ZTY3YmVmNDI5YTQwOGRkMDg5YWI5NDNiZTAwYmVjZjIwODE5NWIxIGFzdC1icmFuY2gKKzMxOTkxIDI1YTNjYzM3NjU3MmE2NzkwYmZlM2UwZWQzMWYyMjk1ZjA4NzczZWQgYXN0LWJyYW5jaAorMzE5OTIgOTA5ZmJlMjQzZjkwMjY2N2M5NDMwYmFmNTEzOGQ4NjZkNDI1ZmYwNiBhc3QtYnJhbmNoCiszMTk5MyA2ZWEyMGI4NmFjOGRjZjY0OGI3ZDljNDJjZGIzZmY4YTM5NjEyOTEwIGFzdC1icmFuY2gKKzMxOTk0IGY2YTExOTIwMTQ2ZWI1ODNjYWZmMTk2YjEwY2NlNTMyOTQ0ODI1NjAgYXN0LWJyYW5jaAorMzE5OTUgNGJjZGE2M2UxMDU0MWM1NzYxY2NmYjQ5MTUxZTE3ZjFhYWY5YTk0ZCBjYWNoZS1hdHRyLWJyYW5jaAorMzE5OTYgZjg0ZTFmNGQ0MzhlYjA4ZTc1N2UwYTNkZWViMTdjYTE2NWRiMWRmNSBhc3QtYnJhbmNoCiszMTk5NyA0NDk2MjAyMTk1OWYyOGQxMjM0NjYzZmY3M2EzZTZiMTNmOGIwMDU0IGFzdC1icmFuY2gKKzMxOTk4IDYzYWMzZDYzYjlmZTdhZGE5NDBjYzRmNjE4MGQ4N2M0ODlhYTFmNTYgYXN0LWJyYW5jaAorMzE5OTkgMTNlNTY3YWY5NGQ4YTljMjMzNzI0Y2QxMjcxNmJjZDBjYmQyZDI2MSBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDAgYmM3NjU3YWM0NmJiZTdlYWY4YThhNDJmZTYyN2YzZDFiNTY3ZDdkYyBhc3QtYnJhbmNoCiszMjAwMSA0MWIxZjIyZmNiMDE3NTZlMzAxYzYwODU3MWJjZmYwM2I3MzQyYmIzIGFzdC1icmFuY2gKKzMyMDAyIDE0NTY2MjE4MDBkNDU5NjU1NGEwYzUyNzBhZGRiODUwMDBkMDgyZjkgYXN0LWJyYW5jaAorMzIwMDMgOGU4YTkxMTNmYTJkODVkMjc0MGE2MGVjZDFmOTZkNTM4ZTZmN2RiYSBhc3QtYnJhbmNoCiszMjAwNCAzNjRiZmU3OTQ3OGY0Y2I1NmQ3NmVjNWUyNGJkZDM2YTVhNDc0YTA0IGNhY2hlLWF0dHItYnJhbmNoCiszMjAwNSBhZjE3NjQ4ODdhYTIzYzU5Y2UwZjkwZGU2MGRjMTA4ZGM4YjQ5M2M1IGFzdC1icmFuY2gKKzMyMDA2IDNlZmQ4MzRkMGZjNTJiZjFhZTE4MGM2YTcxMDU0YjI1Yzc3Y2NiMGMgY2FjaGUtYXR0ci1icmFuY2gKKzMyMDA3IDczMzcyOTI2MWM0MWEyMjY2MDU0MTBhZTIzYTE1YzdkOWI3OTAwNzEgbGVnYWN5LXRydW5rCiszMjAwOCBiMGNjYzViNWY3ZTJmMmU4NGY3YTQ0NDVhZmU0OWZiZDYwZWQ3Y2M4IGNhY2hlLWF0dHItYnJhbmNoCiszMjAwOSA2MzJhNmNhZTBiZTZmMTY0Y2UwOGRiOWZkYjFmMmM5ZTgyMzFkYWZiIGxlZ2FjeS10cnVuaworMzIwMTAgYWM3MjFlZDYxOTE0NGZiY2JkY2I5ZjFmZGI1MWZhZmM4NjBiNjMwNiBsZWdhY3ktdHJ1bmsKKzMyMDExIGUwNmM1NDBkYzJlMmYxM2FhNzViYjllNzcyMDJmMTdhNzJkNzA3ODkgbGVnYWN5LXRydW5rCiszMjAxMiBmZWEyOTI5MmI5MzFiNjc2OTc3N2E3MzgzZmNjMGVmMGExMzBjNDIwIGxlZ2FjeS10cnVuaworMzIwMTMgZjNkNGNjMjk5NmQyYzg2MTgzYmYzMDU1ODkyNzM3YzdiZmRmNjM1ZCBsZWdhY3ktdHJ1bmsKKzMyMDE0IGY1MjlkZWNkODIxZmVmZjQ4YjRiZDM3MjdiMTgzNjA1NDcwNzNjZWYgbGVnYWN5LXRydW5rCiszMjAxNSBlZDNjNzAwOGY5MGU4YzVlNDRmMjcxYjliYTYyMDk5N2YzZDZmNTJlIGxlZ2FjeS10cnVuaworMzIwMTYgMGNmNGUzMjQwMzgwN2UwYzlmMDY1Nzg2MDVmNTExYzQwYWQ2OGRkMCBsZWdhY3ktdHJ1bmsKKzMyMDE3IDU0OTZiODYxYzg5YWI5Mjc2NzMxNTA1ZWI2OGMxZjMwOTNhMzI4MmQgbGVnYWN5LXRydW5rCiszMjAxOCA3MGJkOGQ4Yzg3N2JjM2QzMDUyMjQyMGRhODk3NjI3ZjQzNzRjMzdjIGxlZ2FjeS10cnVuaworMzIwMTkgMGM4MDJlZWE1NjE1NzhhOTI4YzY1NTE1MTIxZDQyNTAwOThhYTlkMyBhc3QtYnJhbmNoCiszMjAyMCBiNmU2MmNiYmRmM2RlZDI4YTUzZjA0MWEzN2RiNjIwMDc2ZjU5MDc4IGFzdC1icmFuY2gKKzMyMDIxIGI0NTFhOWU2ZDk0MDkwZmFmNDAxNjU2OWQ1NGQ5ZDU5NjVlNzMwM2UgYXN0LWJyYW5jaAorMzIwMjIgMzM5MjhhNTFmMmYxMTJiZjM4YjNjZmQyYzI0NTc2MzU2ZTExYmJlOCBhc3QtYnJhbmNoCiszMjAyMyAxYTJmZDEwOWY2YjY5NjE5NDcxMWMxZTg0MjljNTJhMTQxMWZkMjUxIGxlZ2FjeS10cnVuaworMzIwMjQgYjU3NTQ2YjMzY2IxMzY3ZjA1NDYzMWExNGQxM2E0MmYwOTg3OTAyMSBhc3QtYnJhbmNoCiszMjAyNSBlYzYyMjFlOWI3OWFjYzQ2ZjJhMmZjM2IzN2M5Y2FkYmZjZmQyOTExIGxlZ2FjeS10cnVuaworMzIwMjYgYTkzNTEyNzAzODVhYTA0YTFjMDI2N2EyZWEzMDhkZWNiOTNlNzJiMSBsZWdhY3ktdHJ1bmsKKzMyMDI3IDMwZDFjODQ4ZDJiMDE2ODU4ZmYwOGQyNmUzYTE0YzJkMGMxMWZmMDQgbGVnYWN5LXRydW5rCiszMjAyOCBkNjU1M2QwODI3YWI5NjhjNzkwOGQzNWIxZGQzMWViZmVlMjU3YTQzIGFzdC1icmFuY2gKKzMyMDI5IDg0YjE2MzUyM2NkNGRhMWNkODcyOWEwYTIwMjQ1M2U5MGRmMGQ5ODAgYXN0LWJyYW5jaAorMzIwMzAgMTUyYmFmNGUzNTU1NTFlNzFhYmM1NDkyYTU4MGQ0NzkyODAwOTkyZCBsZWdhY3ktdHJ1bmsKKzMyMDMxIDcyMWU5ZTRlZWMxZWYwOGUxMTI3MGRkZTAxYWUxMjkzOGE2MWY3OGYgbGVnYWN5LXRydW5rCiszMjAzMiBmYTc5NWY0ZTZkYzc3NGJkNjM0OWNlZTFiZGZmYzUyN2E4MjNhNmRhIGFzdC1icmFuY2gKKzMyMDMzIGU1YzAwODk1NTM4MTExMjZjZDUyNDMxNGYwNDdjZWVmY2UzMDFhZTkgbGVnYWN5LXRydW5rCiszMjAzNCBhOGVjNzNkMTNkMDMzYzVhZmRhZjFmZGFlZTUwOTI3ZjU4ZWJhODRmIGFzdC1icmFuY2gKKzMyMDM1IGJiODViZTgzNzZiOGViYjkwN2M5NjNiOTM0ZGQxMjg5Njk5ZjUzMmUgYXN0LWJyYW5jaAorMzIwMzYgOGFkZTkwYWY2MTRjMzhjMmRlZWQzODA5ZGYzMjQxZWZmZTdkMDVmMyBsZWdhY3ktdHJ1bmsKKzMyMDM3IDJlZDdjMWM0NTdiOTNmZmY3YmI0NzhhYjYxMDFiZjBmYTg1NDk2YzQgbGVnYWN5LXRydW5rCiszMjAzOCA2YzY0NjE2ZDE3ZWRiYzliZjY3NjNjYTIxY2EyN2VmNDkwYmNjY2ZiIGxlZ2FjeS10cnVuaworMzIwMzkgOWQzYTI1ZTk5MDc1YjAzMzE0YTUyYzk5N2ZmY2M1OWQ1Y2JkZTUxZiBsZWdhY3ktdHJ1bmsKKzMyMDQwIDFiMWQ5OWRkYTJhMWQ2NDFhZDFmZWFkNTJiODNkMGM2MTE1MTdkMTggcmVsZWFzZTIyLW1haW50CiszMjA0MSA0NDU5Y2RjYmY1Mzg0MjdlYmJhNTkwZTJhNmJiNzJhNTllOTk3YWVmIGxlZ2FjeS10cnVuaworMzIwNDIgY2IzMzJkNDQ5MTcxNmUyMzg3MDZmYjBiM2MyZmU3MTVkZDFkNzA1ZSBsZWdhY3ktdHJ1bmsKKzMyMDQzIGNkNTU4ODc2MjRiMzI1ZjkxZTRkM2FlNTYyYzRmOTQzYzYxOGJjNDMgbGVnYWN5LXRydW5rCiszMjA0NCAyMTE0MzQ4NmNlNDBiMzc3Nzc2ODRiOTEwMDEwZjc0MzAxMmFhOWM4IGxlZ2FjeS10cnVuaworMzIwNDUgMDQxODJlNWE2MGIxMTIyYzIwNzYzZjQzYjY1MjcxZTVkNzQ4OTcxYyBsZWdhY3ktdHJ1bmsKKzMyMDQ2IDJlMjA2OTJkZDI4NjgxMzZmZTk1MzE0NDExNjUxY2E2MzBhY2NhMzggbGVnYWN5LXRydW5rCiszMjA0NyBlZTFjNzA5MDUwYjI0OTQ2MDU3YjBiZWZkZDM5NWE3ZDFlYmM5MTBlIGxlZ2FjeS10cnVuaworMzIwNDggNjMwNDA5ZjQxY2MzZjU5YWZiZWE4MzNiZTYxOGI2MjA1ODFlMjA2NSByZWxlYXNlMjItbWFpbnQKKzMyMDQ5IDg3MWRhNzAzZTRjMGE1YzI3YzFhMmRjZjExYjg0ZjhiMzc5YjI2MDYgbGVnYWN5LXRydW5rCiszMjA1MCA1ZGRiYzk3OWM2NTU5NTE4MzA4YTYzNWMzNjcwNTUxYThkYTY5NGQ5IGFzdC1icmFuY2gKKzMyMDUxIGQ3MDAxZmFkZmVmYzM3NzVlYjQyNWQ4NGEwMGJkZjA5ZTE5NTYxNmIgbGVnYWN5LXRydW5rCiszMjA1MiBkOTNhODQ1Y2U1YzA5MDNmZGQxYzFmMmUxOWJlMTAyYTMxYzRhOWIzIGxlZ2FjeS10cnVuaworMzIwNTMgOTM0ZGJlYjQwYjMxNzE1NzVmN2RhMWQzMWFkYWJlMmNiYzhiNmY3YSByZWxlYXNlMjItbWFpbnQKKzMyMDU0IGYyNTgwYzJlNzRkZDc5NjY4ZTNhN2IzOWFkNjFjMWRkNzRkNTM5MDcgbGVnYWN5LXRydW5rCiszMjA1NSAwMDkyYjY5ZjdmOTlhYTRhZGE0ZWYwMTBjOGJmMzhlMTM2M2ExMTNkIGxlZ2FjeS10cnVuaworMzIwNTYgMTYxYjhiZDhhMjI2ZmNmOWRhNThlOTBhOGYzZWM1NTI0ODc5NzI4NiBsZWdhY3ktdHJ1bmsKKzMyMDU3IDI0MDUzNzFiZTM0Yzk2NjhlNTIwZWYzMGRhNWZjMGI4MjhjMWE3YjcgbGVnYWN5LXRydW5rCiszMjA1OCAzZmM1NzY0MjczZDk2ZjBhYTM4ZjQ0MWVhMzc3NTc1YzI2ZjU3M2JlIGxlZ2FjeS10cnVuaworMzIwNTkgNTAwZjU0NWEyNGYwN2Y3ZjE3MmI2NGJiM2QzZjAwNGQ3N2FlZGU4MiBsZWdhY3ktdHJ1bmsKKzMyMDYwIGYwYWQ4ZmE4OGQ3Y2NlZjJkNDRjMzA2YjRmOTFhNjM0MGNjNmU2NjkgbGVnYWN5LXRydW5rCiszMjA2MSAwYTNjZTMwNmIxMWE1ZDRhOWY4MWM3ZmNiZDQwMmE5ZDZiYWE0MWRjIGxlZ2FjeS10cnVuaworMzIwNjIgMTU3Yzg3MmU2ODkyYjliM2Q2ZTU2NWYwZjlkNjJjZTE5NjA0Y2ExOSBsZWdhY3ktdHJ1bmsKKzMyMDYzIDM3ZWI4OTI5ZjBjYjQwMzBmMmEyMmM4NWU2YmE1NTgwNjk1ZTVkMTMgbGVnYWN5LXRydW5rCiszMjA2NCA1NmQ5YmJiYWU2ZjgxMGNlMDExOTk4MDkyNjY5YjgwYzBkMWMwMGE3IGxlZ2FjeS10cnVuaworMzIwNjUgMDU0NDM0MzBkN2VkM2RkNGQ2ZmE2YzIzMTA1MjA2MGNjNmMzODcxNCByZWxlYXNlMjItbWFpbnQKKzMyMDY2IGRmOWI3Y2VlMTMzOTUxNmJiODU3ZmVjYmIwNjljOWE5NGViMTc1ZDQgbGVnYWN5LXRydW5rCiszMjA2NyBmMzA3ODY1NGE1YzAyZmRmODliNWRhNjFhOThmOWU4ZjQwM2YzY2E4IGxlZ2FjeS10cnVuaworMzIwNjggMjM1ZDU0M2UwYjg0OTcxMTM1ZjRlMTM5NGZjMDcxZWMyNjQwNDIzNSByZWxlYXNlMjItbWFpbnQKKzMyMDY5IDdhM2Y3Mjk4M2E3ZWQ1NzdlZmMyYzEwNDg3NGU5MjMyZWZmNzZkNjkgbGVnYWN5LXRydW5rCiszMjA3MCA4MDQ0NzNjZjcxMjE1NDQwNTA0ZjAxZDA4Y2IwMTgyMzQ1YTE0OTExIHJlbGVhc2UyMi1tYWludAorMzIwNzEgZDhmOThkYzZlN2UwNGExN2VlZGMwYmNkN2U1ZTE1N2ZjZWI5MmYwOSBsZWdhY3ktdHJ1bmsKKzMyMDcyIDA3NmM4NjdiOTE2ZTIzMDZhNDNhMmYzNDE0MTg4NGUyNWZhZWY5ODYgbGVnYWN5LXRydW5rCiszMjA3MyBkZjY1YjAyMTdkZDdmMDhlNjgxZWQ5ZjI5MzY3YjdmMDA0ZDkwODcwIGxlZ2FjeS10cnVuaworMzIwNzUgYWYwNWY4OGI5NjQxMzU5NjVhZWY0YzQ0NGVkOWMwYmJkMzAzM2E3ZCBsZWdhY3ktdHJ1bmsKKzMyMDc2IGE4ZDY1NzZiOTVhZmFjYjFkMTUzMmE2ZTQxNTE5ZTkwMGNiYjMwZGIgcmVsZWFzZTIyLW1haW50CiszMjA3NyA5YzYyMDkyNTM2MTVmZjQwYmFjZTQzOWE0NzhkNDZjZGFiOGY3MWU5IGFzdC1icmFuY2gKKzMyMDc4IDVmYmQ4ODAxZmEyNjI1ZWIyYTg5NDI5Mjk3Mzk4YTMzZDJiM2NmYjIgbGVnYWN5LXRydW5rCiszMjA3OSAxNTkyZWEzNmE3MDIzMjdlNWI2YjYzNTZkMjUyNmJhOTdhMzY2MTcxIGxlZ2FjeS10cnVuaworMzIwODAgYWQ0MmNiZWEyMjU4YTc3MjI5NGE1ZmI4MWNmOWJlZTZhOGI2YjdjMCBsZWdhY3ktdHJ1bmsKKzMyMDgxIGM3ZjEwYTkwMGQ2MzI4ODgzYTkyYWU1YWU4OTQ3NWYwYzY5ZTU2MWMgYXN0LWJyYW5jaAorMzIwODIgYjg3MDk1ZmJiMDUxNjhkMWNlMmUxNzA2Mjk4YWQ1NmRlMGE1Y2ZkMiBsZWdhY3ktdHJ1bmsKKzMyMDgzIGZjODQxNTM1MTgwYzk4NGJjZDg2ZTUxYmQxODBjNTJkZTI5N2YyYTEgbGVnYWN5LXRydW5rCiszMjA4NCA3MTQwYTYyMzZjM2E4OGM5ODJhNDJiMWZmNWUxZmU0NDBkNjFkZWUwIGxlZ2FjeS10cnVuaworMzIwODUgNzUxZDdjZTliNGIyM2E4NGM4ZDdjMTRiZjRiOGFmOTYxNjk3YzRhYSBsZWdhY3ktdHJ1bmsKKzMyMDg2IGI2NmEyZTQxZGEzZWU5OTE1ZmY1ZGY2NDViNGM3MzgxNTVjZWIxOWUgcmVsZWFzZTIyLW1haW50CiszMjA4NyAwNGMxYmE1MWVmZGJjYmJjOTlmNTMyYjI4OGQ0OWNmOGU3YmFjZjA5IGxlZ2FjeS10cnVuaworMzIwODggODUyYWFlODRjOTgxMzczZTAyYWM0ZWY1ZDg3MGJhYmI4YmNiNzdlNiBsZWdhY3ktdHJ1bmsKKzMyMDg5IDBmNTU4ZWVkZTZjNTc3YTU4Y2MxMzliNWJjZmQzZTJmZGUxNGZmYmMgbGVnYWN5LXRydW5rCiszMjA5MCA1MDVlOGMwZmE5MmZlMmNhMmMyYjc2NDg3OGIyNTgyZTMwNGY0Njc3IGxlZ2FjeS10cnVuaworMzIwOTEgYmJiNzQ4ZjY4MTRkNjQwYTY0OWRmMzU0NDFhZTNhYmViMjMxNWViZCBsZWdhY3ktdHJ1bmsKKzMyMDkyIGYzYWRkNDE2NjI4ZGM3NDE0MzZmYTVjZjQ3NDE5ZWQ4MGE4NWUwN2EgcmVsZWFzZTIyLW1haW50CiszMjA5MyBiMWZiYjgzZTUxMzkxNDllOWI3NjU5NTJhYzQ1OTU1ZmU1ZDg2NzQ0IHJlbGVhc2UyMi1tYWludAorMzIwOTQgODgwMmRlMGRhNTMzOTExNjBmZDNlMzVkN2I5NTIzNzQyMjUxOTEyZCBsZWdhY3ktdHJ1bmsKKzMyMDk1IGUxM2E3ZTFmZGI5ZTViN2MyOGMxMmNmMjdkMmJiZTkzOTUxMTk2MmEgbGVnYWN5LXRydW5rCiszMjA5NiA4NmE0Y2VhNzA5NzNhYmViNDczMjg2MzU1NWM0NDhlNGY0NDYwZWQ3IGxlZ2FjeS10cnVuaworMzIwOTcgMTJkYWQyMDgxZTJlODIzZmU5MjE5NTY0NDVmODFlMDk5MzNlN2JlNyBhc3QtYnJhbmNoCiszMjA5OCA0YWViYWNjNzg2N2JiMWUwZmFhY2YyMjAzMWM4ZTgzMDhiYmFlZDA3IGFzdC1icmFuY2gKKzMyMDk5IGYxMTU0NDczZGFjOGE3MGRmNDM1ZmFmZWFmODcwN2Y5N2Q0M2VkNDMgcmVsZWFzZTIyLW1haW50CiszMjEwMCBhZmQ1YzJlNGI0YWY2ZGMxZWNlMDgyMDVjNGI2MzFiMjdkZjgwNjE4IHJlbGVhc2UyMi1tYWludAorMzIxMDEgMjg3ZGFhNmE3ZjRmMjIwZGU4MTA4ZjhmNTYwNzRlMmUzODEyZDRhMCByZWxlYXNlMjItbWFpbnQKKzMyMTAyIDhlZmU5NDQ1NDk1YjBiNzZkNDA2YTVhYTVjZWM5NDVkY2RmN2I2NjQgcmVsZWFzZTIyLW1haW50CiszMjEwMyA1NTUwZjVhOWQ3MGNhNzYyMDJlZDMwNzcyYWYwZTNmNWIwNTljMTg3IGxlZ2FjeS10cnVuaworMzIxMDQgYThlNWVjMDcwNDMzZjVhY2EyYmJkZTc4OTFmMzM0NWYzNTVlMTc1YSBsZWdhY3ktdHJ1bmsKKzMyMTA1IDM2MjIyZDM4MjNmMTI5ODYwMzQxMDY2NTY0Y2ZmMTFkN2Q2M2Y5NTIgcmVsZWFzZTIyLW1haW50CiszMjEwNiA5NzNmOWQzNWNmMWQwZjE1MjRkNzM0ZWI1ZDc5YTI3M2E1YzIwMmVkIGxlZ2FjeS10cnVuaworMzIxMDcgYWIyYTU0M2U4NTViYzk4OGViYmIyYzkzYjUyM2IzNjM2OWY5MDc0NyBsZWdhY3ktdHJ1bmsKKzMyMTA4IGYzOGNhOWUxYjY4M2JmN2E4YjZiODRjYjVkYzU5OTI0ODc2MTdjMjkgYXN0LWJyYW5jaAorMzIxMDkgMGM0MzM1ZjEwYzY3YTJkM2E3ODM5ZjdiNGIwMmIyMjdhMmViZTZmZiBhc3QtYnJhbmNoCiszMjExMCA0MzA4ZThhNmM0ODBkZTAwYmUyZjYwODk1ZDgzMzAyOGRiODhmNjBhIGFzdC1icmFuY2gKKzMyMTExIGRjODkwYTRjMDUyODA1NWVkMzFmYjAyM2IzYzNkNTA1MGRjY2E4ZTAgbGVnYWN5LXRydW5rCiszMjExMiBiODVhMjA1NjMxYTQ1YzAzOGE1ZmRhMzMyZjhlYmQ5ZTdhNWNjOTAyIGxlZ2FjeS10cnVuaworMzIxMTMgZjMxMWI1ZDIxZWY1NjRiMTBkYjg1YTNkYjY4ZDg3ZTBjZDU3MGFiMSBsZWdhY3ktdHJ1bmsKKzMyMTE0IDRmOGYxN2FmMzQ4N2JhYjE0YjAwYjQ2Yjk3ODdiYmFjM2M0ZjNkNTIgYXN0LWJyYW5jaAorMzIxMTUgNzM4ZTM3OGZhMGNjMTcxOGMxMGZhZjFjNjhkYzQ4YTgyNmMyNzFmMyBsZWdhY3ktdHJ1bmsKKzMyMTE2IDMyYmVhNDFmZWY2OGQwNDhhMjZjY2JhY2E1OTQ5NmMzYWI1YWI4NGMgbGVnYWN5LXRydW5rCiszMjExNyBkN2Q3YWY1ZjMyMzFmMDEyZDU4ZjUzZDQ3MGM0YTZiYWQ2YmU4YmNjIGxlZ2FjeS10cnVuaworMzIxMTggNDkyMDI4ZTQ3MjZmMTU3NTUwM2FlNWEzYzU4ZTc5YzE4YTQ1Y2JhYSBhc3QtYnJhbmNoCiszMjExOSA4MWJjYzBmNTdkNTcwZmJkZjVmMGNkYjIzNjAyNzE5OTU5MzM4OTJiIGFzdC1icmFuY2gKKzMyMTIwIGNlYjdiYjc5MTM1MzM2NjMwMDVmZTNkNmVkYjc5OGM0YmRkYjdmZDMgYXN0LWJyYW5jaAorMzIxMjEgZWQyMWQ4YjM3ZTMzZDU1ZjVmOGVhMzkwNTIzNDNhZTE2ZjY1MzQzNSBsZWdhY3ktdHJ1bmsKKzMyMTIyIDNkOGMxMjE0YTFjNzliYTc4MTQwYjNmNzRhZDQyOGEyNWU2NmRkNTIgYXN0LWJyYW5jaAorMzIxMjMgZWQ3M2Q2NTg3MjVhYTc4ZGE2ZmNlZGYzZDAwYTdmOTYxMGJkYzk2YiBhc3QtYnJhbmNoCiszMjEyNCA0MGQ5NjU5YjU2Yzk0NmM1NzE1MWVkNWIyMGZhMmNlYjBiNDQzMjVhIGxlZ2FjeS10cnVuaworMzIxMjUgM2UzOTlhODYxOGRiMzViNDdiZDUxYjgyYWJjMjdkMTI0NDhjZDIwZCBsZWdhY3ktdHJ1bmsKKzMyMTI2IDQyZGZhMDg5MWIzMzI2NjExNzA4ZDI3MzU5NTZjYWU5MGUzODU2NjggcmVsZWFzZTIyLW1haW50CiszMjEyNyBjYmEwYWVlZTBkNjUxNTMxYjlhYTU1NWY0YzhiMDNhMDkzODQ1MzU2IGxlZ2FjeS10cnVuaworMzIxMjggMDBhNTZmYmVhNjlmYjBhNzBhYjcwZTYxNGQ0NDA0ODM4NjIyMjFjNCByZWxlYXNlMjItbWFpbnQKKzMyMTI5IDBmY2Y5YWUyNWNmZWJlNzNjMTBiODEyMTBlODkyOGU5YzMxNGM1ZGUgcmVsZWFzZTIyLW1haW50CiszMjEzMCA0YjZlMjBmMGJhNGNkYTUzOWM2M2M5MDAxOGVmZmY3NzJiYTZkODhjIHJlbGVhc2UyMi1tYWludAorMzIxMzEgY2I1ZGI1NTYxY2RjYTlkMzRkMmIwNjY0NjI3NWIwNmEzY2Q4ZThlNCBsZWdhY3ktdHJ1bmsKKzMyMTMyIDg0OWRmZWExODJjYTM3NzMzOWRkYmVjNGQ5YjE0NDZiNDYwMzVlNTAgbGVnYWN5LXRydW5rCiszMjEzMyAxMTdhY2U4NTIxYTFkMjk2N2FkMWUzNmMyMWFjOTg5YWE2ZDcxMTU4IGxlZ2FjeS10cnVuaworMzIxMzQgYTA1MDNiZGIwYzI0MmNkODhkZjNmMjZlNjdiMDM2MDBlZWQxZjc2MyBsZWdhY3ktdHJ1bmsKKzMyMTM1IDgyMzNhMDI5NGM0MWUzZGUwMDU3NDRjMGRkYTE2MTA4ZjljMTA2ODIgbGVnYWN5LXRydW5rCiszMjEzNiAzNzVmZGI4MmEzY2FlMzI4YTU4MjcyN2Y0ODNkZWZiZDMyYTdiZTUxIGxlZ2FjeS10cnVuaworMzIxMzcgMGRlMGRlZDE5OTY4ZWM0NzIyMTg3ZjZkOTcyY2NhYzA2NjVhMjQzMSBsZWdhY3ktdHJ1bmsKKzMyMTM4IGFjZjM1OTZmY2MyOGQ1MDRmZmI4MTU3YTE3ZWMwNDgzNjYwNDExOTIgbGVnYWN5LXRydW5rCiszMjEzOSAxNzRjZTRjZGVjNDcyNmQ5MTE4NGM3YzdmZDg5YzQzMDBlNDM2ODQzIGxlZ2FjeS10cnVuaworMzIxNDAgOTBjNzdiOGFmMWE0OTc0NDYwZjI2ZmIyYjM3ZDc1ZGNjZDU0YWJiMiBsZWdhY3ktdHJ1bmsKKzMyMTQxIDk0MDA1MDRjYjBiMjYxZTAzM2VkZGYyODhjMjYxOTJjZmRkNTFjMzEgbGVnYWN5LXRydW5rCiszMjE0MiA0YzU5NmRkNjBjMjJkMzBkNGRlYmY4Njc0ZTE0NGE5MzRiNGRhMzg4IGxlZ2FjeS10cnVuaworMzIxNDMgNzhmODQ2ZmI1NzBhMDYzMmE3NmU3YmUyOGQ1MDI5YmNmYjM5ODQzZSBsZWdhY3ktdHJ1bmsKKzMyMTQ0IDM2OGJlYmUzMjc0MzM5MDFjNjY3ZWZlZjFiNTg1NTkzNzFjNjc3MjAgbGVnYWN5LXRydW5rCiszMjE0NSAyNWU3NDY3ODcxYzU4NzJiOWI3MWNmODQ3YzljMzUyYjU2NTVhM2Q4IGxlZ2FjeS10cnVuaworMzIxNDYgMmEzMDk1YTQxNWIxMGJhMTAzNTczNDgxYTcxYTRiMDQzNzI2MzJmZiBsZWdhY3ktdHJ1bmsKKzMyMTQ3IDY2NTNhNTYwMDJlZjlkODMxNmRiOGEzZmE0ZDYwNDkwMTQ5YmQwYTMgbGVnYWN5LXRydW5rCiszMjE0OCA5NjRiZDk3YWMxZjViZDNkOTUzN2ViMDQzOTYwNDE4OTI0MjNkN2Q2IGxlZ2FjeS10cnVuaworMzIxNDkgNDg3ZGYyOTRkMzI4MTBjOGVhZjE1MGYyZjVmNzdiZmVkZDIyMDY2YyBsZWdhY3ktdHJ1bmsKKzMyMTUwIGMwMWZkYzNhOTE4MDQyZDk0MWVkNWVjNzBkNmViNDdmYjg3ZGE0NjEgbGVnYWN5LXRydW5rCiszMjE1MSA0ZmY2MTFiMTY0ODQ5MzNmMDIzNGZkMDhjNjFmOWEyN2MxNDlkNzBkIGxlZ2FjeS10cnVuaworMzIxNTIgOTJkMDFmMTAyY2EwOTkzZWIxNDRiNWI3YzM2NzcwMTRjOGQzYzEzYyByZWxlYXNlMjItbWFpbnQKKzMyMTUzIGI1YjNlNmYzZjMxN2VkOGQ0Mzk2YTc3YTQ1MThhZDFjMWYyY2UzZWYgbGVnYWN5LXRydW5rCiszMjE1NCA1YjU0NjJhZTMxNGRkZDM1NzNlMjc0YjJjZGVlYTAwOTgzMDZlNmU0IGxlZ2FjeS10cnVuaworMzIxNTUgNWZhODM0NGQ2ZTZmMDFkNTJhYzA5NDYyZmY5YTk2ZTgzMjI3NGYzNiByZWxlYXNlMjItbWFpbnQKKzMyMTU2IDhiZjA4NGM0YWQ5Zjc0YjhhMzUxMDQyMmVmNTNmN2JkYzZmMmNmYTUgcmVsZWFzZTIyLW1haW50CiszMjE1NyBiYTcxNjIyNDk3NGU5NzY5Zjg3YzI5NmIyMjMwM2IyMDQ0NzA5ZWZmIHJlbGVhc2UyMi1tYWludAorMzIxNTggMTYzOWY2MzVkOTgzYjlmYzQ3MGE3NzM0OWVmODk0OWUwZjc2MjMwOSBsZWdhY3ktdHJ1bmsKKzMyMTU5IDg3ODM2NmIwZTk3YWM3MTVhMmFjMzUwOGI1ZTgyNzVkNjc4YzJiMmUgbGVnYWN5LXRydW5rCiszMjE2MCBmMjEzZWU2Y2U1NWVlOGZhM2MxNGI2NTkwZWZlODZlNTgyMjhmOTJlIGxlZ2FjeS10cnVuaworMzIxNjEgYjkwNjRlYTA1OTNlYTFkNzM0NzJiZjY2ZmRhYzEwOWRkODQ5YTBmMiBsZWdhY3ktdHJ1bmsKKzMyMTYyIGFlMGFlYjBkNjMxYmM1YzVjYTNmMGZlMzUyMTNjNTI5YjM2N2M1MDggbGVnYWN5LXRydW5rCiszMjE2MyA0NjlmYjZjZTk2OTM1MWZiMzA3NmZmODNhODU5MGJmMWI4OTczOTIzIHJlbGVhc2UyMi1tYWludAorMzIxNjQgYzdiYjI1NGFiODkwZTFiOTUyNGNlNGI3NWM5OGJmYzhhNTVjNGQ1NyBsZWdhY3ktdHJ1bmsKKzMyMTY1IDcxMTAzZGY5ZDY0YjA3ZGMzYzEwNzVjMTk5YjU5NjZhNDE3ZmJiYjMgbGVnYWN5LXRydW5rCiszMjE2NiBiYmVkN2UxMmI4NDIyYzA5MWVlZTIxNzQ5NTdhMzZmMzNlN2QwYTFkIGxlZ2FjeS10cnVuaworMzIxNjcgODk4NGRmMmRjMjdiMjcwZDhjMjkwMzMxNTczMDg1ZTI5YWRmY2E4MiBsZWdhY3ktdHJ1bmsKKzMyMTY4IGI2MWE5ZTIxYTY2ZGNhNTlmZTE4YWNkZmU4ODkyZjA2ZWNjMGQwZDUgbGVnYWN5LXRydW5rCiszMjE2OSAzNDQ4Mzc2OTA3OGIzMzM3MGFkZmRmNzgyMGRiNzNmZTE3NjQyYmU2IGxlZ2FjeS10cnVuaworMzIxNzAgZTkzMGJlYmVjOGMwZjVkZDNjNDBmOTBjZjNiMzVjOTYxYjQwNzkxMyBsZWdhY3ktdHJ1bmsKKzMyMTcxIGVlODg1M2NjOGNhMWY2OWE4OTczODZhOWNmYjYxYzE4ZWY0NmE3N2MgbGVnYWN5LXRydW5rCiszMjE3MiAwMTdkMmUzZWEyYWU0YmE2ZGQ0Mjc1ZjUyNTUyNmViZTkxMjVhNjI3IGxlZ2FjeS10cnVuaworMzIxNzMgZmQ0MzRiZWI1ZjU2MDc5YjM0OWQzMjJmN2M5MDc2M2YzZjAyYzZlNCBsZWdhY3ktdHJ1bmsKKzMyMTc0IDZhYTFjMDgyNmEzOWJlNjgzNDQyOTlmMWRkMDdmY2ZlNjI1MjU0MGYgbGVnYWN5LXRydW5rCiszMjE3NSBkMTBkYmI5NGM5ZWUxYmZmOWMxNGU2YzVmMDg3ODE1NzMxMmY2NTk0IGxlZ2FjeS10cnVuaworMzIxNzYgMmQ0YzFlNGU1YjM2YjU0NDk5MjE2NjU2YjY1ZjczMzAyYmE5MjQyNSByZWxlYXNlMjItbWFpbnQKKzMyMTc3IGRiNDc5OWNhMjAyMWJjZjU1ZDkyN2FmZTM0ODIzNDIzZDQ3YjhkZDYgbGVnYWN5LXRydW5rCiszMjE3OCA5YWNkYzZjNDQxNmFjNTIyODgyNTc4ZWY4NGYyM2IxMGVkZTU2NWEwIGxlZ2FjeS10cnVuaworMzIxNzkgYjM3YjI5ODIwODZiYzMzMzExODk2MjIxM2FhMTY2MTM4ZGQwYjA0MyBsZWdhY3ktdHJ1bmsKKzMyMTgwIDYyZTg4M2UyZDUxNzExZjAwOGYxMzk4M2UwZTE0OWJjOTI4ZjljZmYgbGVnYWN5LXRydW5rCiszMjE4MSBlNmJmMDhkYWRkNWMyMTc2MDVlZTlkZmNiMTQxM2ZlMTFiMDlmZTNmIHJlbGVhc2UyMi1tYWludAorMzIxODIgYjQ0ODdhM2I1ZjFhMWQxYmYzNDQyMGY5YWRkMzRhY2Y1ZWY5Nzc1OCByZWxlYXNlMjItbWFpbnQKKzMyMTgzIDc4Mzk1ZTViNDc4MmNjMzQ5Mjg4NGZjM2U5YzU1ZDA5Nzc1ZGYxYjMgbGVnYWN5LXRydW5rCiszMjE4NCBiYTJkODkyMWE4ZGEwMTliOGYyMDMyMjcyMmZiNmVmNDZmNWNhODMxIGxlZ2FjeS10cnVuaworMzIxODUgODRhY2JhMjI3OTU0MjRjZmRlNWMxNDM4M2QzMjA5MzU4NGJlZTgzZSBsZWdhY3ktdHJ1bmsKKzMyMTg2IGFmZjA4MGYyZWZiNDg2OGJmOGFhNjc2M2Y2NDk3YmRmM2QzMmY2ZmEgbGVnYWN5LXRydW5rCiszMjE4NyBlOTJjMjVkNDI4Yjg3ZjAyMmJkZGMxYmEwZDMxNzg4ZWQ2NGQ1NGUyIGxlZ2FjeS10cnVuaworMzIxODggMjFmN2NmZjE3OTBmZGM4ZDU5ZTUxYzdjM2I4YTc5ZTdlMWFiMGE2MCBsZWdhY3ktdHJ1bmsKKzMyMTg5IGNkNTAxMTIxNzE1YjA2OGEzNThjMmMwNTJmMTE3YzlhYTkwNjRmNTMgbGVnYWN5LXRydW5rCiszMjE5MCA3YTYyODE0OTNkMmM2NzEwNDdjMWRmZDU1ODUwYjRiYzcwOTQwYzEwIGxlZ2FjeS10cnVuaworMzIxOTEgZjIxY2QwNzlkMTA4MzVmNDE0MTQzY2RlNDFmODk1YTEwNTBhZGI4YiBsZWdhY3ktdHJ1bmsKKzMyMTkyIDZlN2VmZDZjMjUxMGEyYjJkMWNkMWI1ZmI3YjBlYTMwNjVjMWM4OGUgbGVnYWN5LXRydW5rCiszMjE5MyA5ZGRjNDk4YjcwMTNiODZlNzFiODhhYjYwMDM5MmZiOTUxODgwM2Q1IGxlZ2FjeS10cnVuaworMzIxOTQgYmM4OTIzZmRkODNiNTg4ZmJhY2RmNTRkMmE4M2M5MmI5Y2U3YjViMSBsZWdhY3ktdHJ1bmsKKzMyMTk1IGQwOGQ3YjRiZTUzMjAxMzIxMmZmYmIwMGE1ZTc5OWRjMGJkZGY1NWEgbGVnYWN5LXRydW5rCiszMjE5NiA3NTExMzc1OTI1MmM3ODhjMTYyNzcyOWY3MzU2YzU4YTNlMjQ3OGY1IGxlZ2FjeS10cnVuaworMzIxOTcgYmZjN2E5ZmEzNGQ2ZGIyMzRlODkxODIzMTA5Y2I0MTcwNWRkMTE5OSBsZWdhY3ktdHJ1bmsKKzMyMTk4IDVmYmRjYWVmOWRkYWEyMzI1YTc0NTRlNTkzNDZlZmIyYzIxMjIyNDkgbGVnYWN5LXRydW5rCiszMjE5OSBmYWViNzA4YmFjYzQyMTY2N2Y2MGEzYTRmNjcwNWNiOTExMjA3MjcyIHJlbGVhc2UyMi1tYWludAorMzIyMDAgZGE3NGJkZDkzNDQxYmQ0MDI0NmI5Y2Q5NjE2NGJkOTQxNGI2ZWE0NiBsZWdhY3ktdHJ1bmsKKzMyMjAxIGJlMmVjYWZiMTVhZDBlYTAyNmZhOTZiYzIxYWNmNWMxZDUzM2Q2MTkgbGVnYWN5LXRydW5rCiszMjIwMiAyMTVmMWY0ODUxYTQ2MzlhZWNmNjQyMTk3ZTczZGZjZWFmNzdlMjQyIGxlZ2FjeS10cnVuaworMzIyMDMgMWJkNTBjMjgyMDNmY2YyN2UzMGRiYzVkM2UwM2E4NTM5YjUyYjQ3NyBsZWdhY3ktdHJ1bmsKKzMyMjA0IGYzMDFlYWVkZGU4NThiZGE3ZDAwMmM4OGZlNTY5Y2ZkZWIyZDgxMzAgbGVnYWN5LXRydW5rCiszMjIwNSA4YjQ5NDQ1YzBhMGUwMzkwYmYwNWJiMTM2OTk0MTRkOWMxYWQ2MDY5IGxlZ2FjeS10cnVuaworMzIyMDYgOTgxMDMyZTY0NzM2MmYwODFhODkxZDkxMWNhNDc0ODZiYzE5M2NiYSBsZWdhY3ktdHJ1bmsKKzMyMjA3IGE1YzVkYTU0NmMyOTI4YzdkZjE1ODY4MjM5Y2EwZDFlZDEyYzY3MTEgbGVnYWN5LXRydW5rCiszMjIwOCBjMmFkNjJmNGVhOWIzMGI1YWUwM2U3YTMxYzVhMDhjOGIwYzBiY2EyIHJlbGVhc2UyMi1tYWludAorMzIyMDkgMDNiYjBjNDA4ZDU3MzE4Y2E1YmU4ZTlmOTUyZmM5MTVlMzFhNDI3MiBsZWdhY3ktdHJ1bmsKKzMyMjEwIGEwYzAwMjA1MDUyNjVhOGUzODk3ZGQ2MjQ0YzYyZDlkYjVmMWExYTkgbGVnYWN5LXRydW5rCiszMjIxMSBjMzZiZDFjODM2YjhjODBjZGY2ZDg3OTk5YWIyMDA0YmJmNjY0Y2U2IGxlZ2FjeS10cnVuaworMzIyMTIgMGQyNjhjNmVmMDBhY2RlNmEwMTgwZjBkOGZlNmIzMjQxMzMzYjVlYyBsZWdhY3ktdHJ1bmsKKzMyMjEzIDk0YTk4NjVhYTFjNjQ0MTljM2JiNDljODNiZDBhMTUzYmVjODVlMDUgbGVnYWN5LXRydW5rCiszMjIxNCA4YzkzMDc1YjljYjU1MTBiYTkzYTkxODMyM2UwNWNmNDFkODM4M2FhIGxlZ2FjeS10cnVuaworMzIyMTUgMDJjODdmMzQ4ZWRiMjJmOGU1YzEyM2Y0OGUyZjljYjgxYjMzZTgxYSBsZWdhY3ktdHJ1bmsKKzMyMjE2IGE1N2VlN2IyYTg3OWRlMDJiYjU1N2VkOGRkNWNhMmEzNDMxYmM4NWMgbGVnYWN5LXRydW5rCiszMjIxNyA5NWI2ZGQwNGRhOGZkYzFkOGRhZDg2NTc2MzZjNmE3YmQyYzIxMGJiIGxlZ2FjeS10cnVuaworMzIyMTggODgzYTY5NDc5NWY1NzAzY2I0MWVjZmI1Y2E5MmY2MDBiYmVkYzI3OCBsZWdhY3ktdHJ1bmsKKzMyMjE5IGVmMDVmOTgxYmM0YjhkYWIxYmJkODliYWE1MWNmNDUyNmVhODhjNWQgbGVnYWN5LXRydW5rCiszMjIyMCA2ZjEzYWRkZTFiNTFiYjQ5Mjk0NmFhZTBkYTI2Y2MyMzRmMzM3MGE3IGxlZ2FjeS10cnVuaworMzIyMjEgZGU1MDkzNGUxMTQ1YmY2ZDkwYjY1OTU5ZjZjZTE4NmYyZTA1MjkwZCBsZWdhY3ktdHJ1bmsKKzMyMjIyIDIyYWZkZTI2YjNkMTY2YWMwZjI2YTZhNDU5ZmZmYzZmMmYzZTJmYzEgbGVnYWN5LXRydW5rCiszMjIyMyA5ZmVkZTcwMDNjNjVmNmY2ZTFiMTk1Nzg1ODY5NDcyZWViOTg3NDA5IGxlZ2FjeS10cnVuaworMzIyMjQgZDJkMjMyZTI0MjdiZjc0ZWVmZmRjNTRiMmM3ZjFjZWM5M2JhZTkzYSBsZWdhY3ktdHJ1bmsKKzMyMjI1IDNjZjI2YjlmOTZmN2U2NDY0MDg3MjBiM2FkZDVjMGRkMzNhYWQ2Y2MgbGVnYWN5LXRydW5rCiszMjIyNiAxMTY2MGY0MzYxZjhhMzY4OTc1OWFjYWE1NjAxY2ZmOGNjMDQzNmY5IGxlZ2FjeS10cnVuaworMzIyMjcgMWFlYWQwYzg0NTA3N2UwODA3NTQ3MjJhZjI5MDI4N2NkNzIyM2ZkMyBsZWdhY3ktdHJ1bmsKKzMyMjI4IDU4ZGI1ZmJkOWMyODJhNDk3NWQ3NDVhZWEwZjcwNmU3OGI2NjkwYzcgbGVnYWN5LXRydW5rCiszMjIyOSAyMGVlNjhjYjBiYzQ3YzY3M2QwZTk5MmYyNDdiNDU3ODgyMDc0NmEwIGxlZ2FjeS10cnVuaworMzIyMzAgN2ZlMzNjMTU0MWRmZmFmODFhOTNmOWYyNmQxMGI3MWVhMmZhMDIyZiBsZWdhY3ktdHJ1bmsKKzMyMjMxIGVlZTQ5NjlhZGJhZTBkMTY0MmZhMWEyYzQ0NmM1MDczZWQ2Yjc2ZmQgbGVnYWN5LXRydW5rCiszMjIzMiA5NDQxNjk0YTcwYzdlZDM5ODM2NjA3NjQyZGY0MzNjYTJkYWU0NzRmIGxlZ2FjeS10cnVuaworMzIyMzMgNDM2ZDgxMmYyYjk0YjdkYWI3YWFkMmM5NzA1MzE3ZDFlYWJlZmNlMyBsZWdhY3ktdHJ1bmsKKzMyMjM0IGYzYjI0YTJmNmY0ZGE4NmE5MjcwZTlhYTRiNTE0YTM1NjEwMjJmNTMgbGVnYWN5LXRydW5rCiszMjIzNSA4MzIyMDc3ZDIzNGNmYWI4MGFlOTg2YzM2NjEwMzUxNjM5N2MzNDhlIGxlZ2FjeS10cnVuaworMzIyMzYgNjk1MjM3M2U4ZmU1Yzg3MmU2Mzc5MTQ4MDI2MjI5OGVjMjM4YjVmYSBsZWdhY3ktdHJ1bmsKKzMyMjM3IDY3ZDM2ZjRkZmVhMTI0YWU4NWMwYzEwZDI4YjgzMzgzM2FiNzJiMmQgbGVnYWN5LXRydW5rCiszMjIzOCBjNzFiOWJhMWYwNGMxNDgyOWZhOTY1NGQ5ZGQ1M2QwYmIzNzlkMWViIGxlZ2FjeS10cnVuaworMzIyMzkgMDc5MmNhYTYzNzFjOWQxZDI1ZDA0YmIwYzc1NzU4MTYyNDNjY2ZlZSBsZWdhY3ktdHJ1bmsKKzMyMjQwIGIxNjcxNTUwYzdlMWRjNzgyODE3MmJiMGI0NjJhNjkxYzc2NzhlYjEgbGVnYWN5LXRydW5rCiszMjI0MSA0YzY1ODUyNTNlNmYxMzI0ZDIxM2FmNGI5ZmE0NmQxZjg0OWUxNGMwIGxlZ2FjeS10cnVuaworMzIyNDIgYjRiOGZlMmE2MzJjM2JjYjQ1MmJjMDQwZGE4ZDIzOGNhODczOGE5ZSBsZWdhY3ktdHJ1bmsKKzMyMjQzIDRmMGI3YWNmZmM3ZDRjNGM3ZWI0MmQzYzBiMDhjY2EyOWY1N2I1OWEgbGVnYWN5LXRydW5rCiszMjI0NCBkNTM1N2FhZGU0YjczMDY0NzBjYWY4NGZhMGYxZWIyOTJmMGRkMmFjIGxlZ2FjeS10cnVuaworMzIyNDUgOWZkZmE3MzY1NzhkNzM2ZDcwOGE0NzRlNTNjNjVkYzhmMDdhZTU5NCBsZWdhY3ktdHJ1bmsKKzMyMjQ2IGViNTUxODhmMTYzYWNlZTdhM2M5YWU3OTEyZTkzMzBlMjY0MmRkMzcgbGVnYWN5LXRydW5rCiszMjI0NyBkZGQ5MDZlZmZkOWMzYjY1ZDBlMTNjOWQ4NTVmYzUzNjNjMTNjZTJiIGxlZ2FjeS10cnVuaworMzIyNDggODI0ZGMyOGY5MjJkMjk5YzE3NmJiNzM2OTI3MjY0MzIzZmQ3NWVlOCBsZWdhY3ktdHJ1bmsKKzMyMjQ5IDZjMDAwNDY5MDk0MThiNzIxYmNhZDQxMWY5OGI5MWU3YTRlMmM2MTAgbGVnYWN5LXRydW5rCiszMjI1MCA4MWU1YmY2MjNlY2Y3NThiYzI1YzYyY2JiMWViZDRlYzEyMGRlZDkyIGxlZ2FjeS10cnVuaworMzIyNTEgZTgwZjE4YTQ5Y2M5YWM4ZTMxMWY0MWQ4ZDYwNzEzMTRmYjA0Nzk5ZSBsZWdhY3ktdHJ1bmsKKzMyMjUyIDA3ZDhlMGVhYjNhZjQ5ZDU4ZTMyMDJiOWU4MjY5NGUxOTk4NWJlMGMgbGVnYWN5LXRydW5rCiszMjI1MyAyY2ZkOTE2ZGQzMTI0OWRmMmQ0NTU4YWUzYjliZDNlOTNiYWZjZDEzIGxlZ2FjeS10cnVuaworMzIyNTQgM2MzOTE5NWRhYjlhNDBlZjMxOTA4ZjY0ZDBmZTg0ZGRlMzhhYTNiMCBsZWdhY3ktdHJ1bmsKKzMyMjU1IDNkOTNjMzAzOWM4NzFjY2U5MTk3OGZmYzdiNDhlNjczMWRhZGQ3N2IgbGVnYWN5LXRydW5rCiszMjI1NiA4YWI3NTJkYjQ3NzVkNTUzZjczMWFmZDNkMDMxMjA5ZGRiN2Y4MDUxIGxlZ2FjeS10cnVuaworMzIyNTcgZmE4MmY4NmVhYTA5OTQwYTY2Y2UzOTM0Yjg1Njc1NTY0YjNmNTc5NyBsZWdhY3ktdHJ1bmsKKzMyMjU4IDMzOTJmMzhiZDExNGI4ZTE1OWEyMWUyMDJkZjAwYzRmNGNlYzBlYjQgbGVnYWN5LXRydW5rCiszMjI1OSA5NDdjMjkzN2MwOWUyMjEzZTE1NWIwMzVmZGI5NDNiYWYwOWExZDJjIGxlZ2FjeS10cnVuaworMzIyNjAgYTI2YjZiMjc1ZmI3MmQ5ODk3Y2UxYzk5NzliMjEwZTZmNWJmMTg1ZSBsZWdhY3ktdHJ1bmsKKzMyMjYxIDM2ZTliYTQwNTQ5MjU5ZjNlZTFlNzRlMmY0NTgzZDg2OGJjZmRlNTMgbGVnYWN5LXRydW5rCiszMjI2MiBjNjI5ZWQ4YTlkYmIzYTg0Y2MzNWZlOWMzZGFiMjdhNGZmNWM5ZWUyIHJlbGVhc2UyMi1tYWludAorMzIyNjMgMTFmN2YxMTgwNzJiNjRmZjAxZmYyMzYyNDI5MTY5ZWRjNDVhZWVhMSBsZWdhY3ktdHJ1bmsKKzMyMjY0IGFjZmEwZmY4YzVhNDAxNmI1OWVmMDU2MWQyYjlhNGMxNjFlNzJmNDEgbGVnYWN5LXRydW5rCiszMjI2NSA5YmU0MTAzODA3ZjVjNzQ1ZmY5YjI1MDY0ZmM2ZjJmNzY4YzRkMWI5IGxlZ2FjeS10cnVuaworMzIyNjYgYmUwZDRlYzZiZjVhOWI4MGU5MWNhNTNmYjNkMjczYWZjNjZiYzA4ZiBsZWdhY3ktdHJ1bmsKKzMyMjY3IDQ4MjRhYWIxMjU0OWJiMGMzN2NhODAyYTMzZTFjNzAwMTc4MDFmZTYgbGVnYWN5LXRydW5rCiszMjI2OCBhOGU2NDBiNDc3ZjY2ZDViNjE1MjJiZDc5YzljNTgwNzIwZjRhNDA0IGxlZ2FjeS10cnVuaworMzIyNjkgY2ZlY2UxODIyZTk0MjM3MWY3Zjk5YjRiMjNkMmY2NjY1ZWQxMjM4YSBsZWdhY3ktdHJ1bmsKKzMyMjcwIGNhMjQ4MjAxMmIzYzYwMGY4NjVkM2FmOWY4OTQxOGVkZWI4ZjJmZmYgbGVnYWN5LXRydW5rCiszMjI3MSA4ZTU0MWIwNzhlZGI1MDliNmNkZWYwYzIwNzYxMGRjNDk4M2MyOWJkIGxlZ2FjeS10cnVuaworMzIyNzIgYjk3NDVjZDc5MWJmZGRhNzgwMDZmMGJkN2IyM2UzYzg2NDgzMzc5MCBsZWdhY3ktdHJ1bmsKKzMyMjczIDE5M2I4YWVjMDBjZTFiZTJmMDNhYTk2OTlhNWQ2ZjY1MTZjZjc5MzAgbGVnYWN5LXRydW5rCiszMjI3NCA5ZDRlMTM4NDk0ZmIzMTJjZTI4YTg1MjRlOTFiMDVkMjY0ZjhkMzg3IGxlZ2FjeS10cnVuaworMzIyNzUgMGU4NDE2YmUyMDhlMGViNjA0Y2ZmZmU3Y2I1NzBmNjM2YjNjMDNkMSBsZWdhY3ktdHJ1bmsKKzMyMjc2IDA0YjE3Mjg0MzI5Mjk4MTIxNDhjYjFjNjhkODVkZTg3NmU1OTA4MWYgbGVnYWN5LXRydW5rCiszMjI3NyBkOGE4Zjc0NGEzZTUwOGI1ZTEzMDczNzYyNmZjNDU2NGQ5NTY1YWIyIGxlZ2FjeS10cnVuaworMzIyNzggN2ZkYTA5Zjc1MWFkNWIxYzliNDc4ZjkzZDcwYjM2NzY3NzFkNjgzZCBsZWdhY3ktdHJ1bmsKKzMyMjc5IDI4YTI5NzU1MTRjZDYxZDQzNjAwYzg1M2VmYzhkNzkyZjZkYTNiYzUgbGVnYWN5LXRydW5rCiszMjI4MCA1NjAwNmQ5N2JjZWYwYmU1MGM3YmJmOGEyYmI2NWQzNjkwOGQwZWE0IGxlZ2FjeS10cnVuaworMzIyODEgMWU5MDA0NTUzZTFkOTA1YjQxMDljZDczNjY5OWZkYmI4ZDViZDUxOCBsZWdhY3ktdHJ1bmsKKzMyMjgyIDE2ZjQ3YmQ0MzFjNDg3OTJjZWNlNzU0YjBjMGQ0ZGEwOTM0Y2YxZGEgbGVnYWN5LXRydW5rCiszMjI4MyAyZmFlNWY3NjMxZWY0YWFlN2EwYzFiZGFiNmM0NTM3MjUyYmQ2ZDkxIGdldGFyZ3NfbWFza19tb2RzCiszMjI4NCA0ZDIyNTljYjc3YTBlMWNkN2Q4NTRkZDBkNTBkNTgyZWU3M2YyYjc4IGxlZ2FjeS10cnVuaworMzIyODUgN2ZhMTRmMjBhZWE0MjIzMmI2NGE2YWUwNjQyNDE3MDUxMmM3YTY1MCBsZWdhY3ktdHJ1bmsKKzMyMjg2IDg4MzY1MjllOWU2NjcwYTU1Zjc0NTcxN2VjMjlhNTY1NWE0M2U2MTIgbGVnYWN5LXRydW5rCiszMjI4NyBlZTE2NWZlMWI0MmY2MzRjNmM5NjBiMWYyNmU1NjIxYTlmNTI2YzUwIGxlZ2FjeS10cnVuaworMzIyODggNWYxZWYxODgyYjI1MTg4ZWUwNmUyYTg0YmVjYzg3YWQ4ODlkY2I0MiBsZWdhY3ktdHJ1bmsKKzMyMjg5IDdlNjY1YzE2MDU4M2ZiNjYzNzhkM2VjNWY5Zjg0NDA2Mzc3MmVkOWYgbGVnYWN5LXRydW5rCiszMjI5MCBlZTZkZjJjNjY4ZWFjY2RkOWMwM2EyZDI0Njc3YWU3MDE0MmUwNjdmIGxlZ2FjeS10cnVuaworMzIyOTEgMTJkNDQwOWU1OWUzMDNhMzk3OGY1ZDBiNDMzYTdlOGQ2NzU2Nzk0NiByZWxlYXNlMjItbWFpbnQKKzMyMjkyIGUzM2ZlZGI1ODFmNGIwN2E5Zjg0NTdlODAxODg5ODliYzI2ODhlMWMgbGVnYWN5LXRydW5rCiszMjI5MyAyMzk0MjlkYzAyOWZjOGQ1NTdhYzY4MGNjODI0MjNiNWMyY2NkMWVjIGxlZ2FjeS10cnVuaworMzIyOTQgYTkzOGIxM2UwMjkxMTIzODJhZjQwNWY4ZGEyYjIxZmMyMDdlNGJkNSBsZWdhY3ktdHJ1bmsKKzMyMjk1IDViZmRiYzBmZDE3MjJhODQzM2MzOTM4ZGZmZDQzNzUwNGIyOWU3YzUgbGVnYWN5LXRydW5rCiszMjI5NiAwNDZiYzlkN2ZiMGU0MzNjNDVmMTc3NzI2NzQ3MTZmZmUyMmExNDFmIGxlZ2FjeS10cnVuaworMzIyOTcgMGQ4ZDRjOGRjNjhiYjg4OWJlNGQzYTVjZWY2ZjE3NmVmMjUzOWJhNSBsZWdhY3ktdHJ1bmsKKzMyMjk4IGM1NTVjZDAyYjBmOTYzY2UwNDFlNmRjYzJmZWU2NDU0NTY1YjdmMTMgbGVnYWN5LXRydW5rCiszMjI5OSAxOTI1NDEzNDMxYTZlYzI4ZmM4NmE5ZjY3OTljZDY4MmFjMzJlMWZhIGdldGFyZ3NfbWFza19tb2RzCiszMjMwMCBmZGEyZjdkNzgzYzI0YWYzYWFjMzUzOTE1MDg1MmNiN2NkYjFjNzAyIGdldGFyZ3NfbWFza19tb2RzCiszMjMwMSBkNDFkOGRlOTc2OGYzN2YxNzFlNzNhMDdhZTU3YjQ2NWIxN2RiOWVkIGxlZ2FjeS10cnVuaworMzIzMDIgMmEyM2ZjODM3MjBmYTEyNjRjM2M1ZGE1NmEzMjYzMzAzMjU3ZTg1MyBsZWdhY3ktdHJ1bmsKKzMyMzAzIGMxYmE1MDc5MGM4Mzg0ODViYmRiZDNlODVmYjFmMzk1ZGM1YTBlMTMgbGVnYWN5LXRydW5rCiszMjMwNCA5ZWI2OTY0YjRiNmM5ODhkODZlY2U0YWQxMzc3ZTY1YzI4MzA0YmJiIHJlbGVhc2UyMi1tYWludAorMzIzMDUgMTU1NmEzOGQ1Mjc4MTU0MWQ5OWE0MDcwYjQyZmI5NDNjM2M4OTFlZiBsZWdhY3ktdHJ1bmsKKzMyMzA2IDVmZjFmMmY5ZmMzNDkzZjNiYWNhMjM1N2Q1NDY3YTlmYjUyZTlkZWQgbGVnYWN5LXRydW5rCiszMjMwNyAxODE1MTY2ZTgwOTc4NzVlMjZjMjY0M2NhN2U5M2E0NjJkNDBlYjEzIGxlZ2FjeS10cnVuaworMzIzMDggMzFjYjhlMDI2MGRiNTEwMmIwYWI1MDZjNGFlZTM5YzlkMTI0MjhhZSBsZWdhY3ktdHJ1bmsKKzMyMzA5IGFiMGMwNjdmZTI4NmZiZDMwM2FjZWMxNjg4Mzc0Mjc0YjU4OTY2MjcgbGVnYWN5LXRydW5rCiszMjMxMCAyNzYzNTJiZmNiNDJiNDFhYWU5NjYxNGZhYjNkZTMyMTYxY2UzZjgyIGxlZ2FjeS10cnVuaworMzIzMTEgY2E2NGMxYmUyMzBiYWNlNGEzYmUyYjEwM2M5MzA0MDhiMjEyMTg3YyBsZWdhY3ktdHJ1bmsKKzMyMzEyIGNmNDVhZDNjYTRiNzVkZGNkYmM1MTJkNzJiOTNiM2ZjMGQ1NDE0YjAgbGVnYWN5LXRydW5rCiszMjMxMyA0NjJhNGMzMTE4YmJjMDY4MjljYWYxZDBjMjhhZmNmNGEzNjcxNGRkIGxlZ2FjeS10cnVuaworMzIzMTQgOGJkMzRkZDU4YTkyYWEzMzQ3M2Y5Zjk3ZWIyNzRjYjdjYjE2NmIzNyBsZWdhY3ktdHJ1bmsKKzMyMzE1IGM1YmQ4YTg0NTIyMzlmMzZiZTIzMThhNjM0NGM1NmQ3ODU5OTc3YTIgbGVnYWN5LXRydW5rCiszMjMxNiA3MGQ2ZjhiMGZjNjk0NWU3MWY0NDM4Y2UwN2I0YTkxY2ExMzBjMzE4IGxlZ2FjeS10cnVuaworMzIzMTcgNDBkMjg3YzNkOTA2MjBhNzc2NTMwMTU4ODlkZWQ1YmJiODQ2NGQ2YSBsZWdhY3ktdHJ1bmsKKzMyMzE4IGQwYWU2MjBhZmJkNGQ0MWI4YTY1ZjEyNTA1MmFjOTBlMjRlN2Q2ZjUgcmVsZWFzZTIyLW1haW50CiszMjMxOSBlZDVlY2Q2M2MxY2Y5YjdmNGYyOTljODEyYjg2OGRlODVhMGU3MzBkIGxlZ2FjeS10cnVuaworMzIzMjAgOTY0MmZiNGNkYTJmZTRhZjU2ZTBiOGM5OGM4ZGY1YzU1MzIyNjIyMyByZWxlYXNlMjItbWFpbnQKKzMyMzIxIGM5OTI1ZmEyOWVhMzdlNTU4ODQ4NmQ5NzUyNjU5ZGJkY2NmYTNkNDYgbGVnYWN5LXRydW5rCiszMjMyMiAwNmQxMzdhNDI3ZTk2MTFkM2ZiMjYwYTIxM2RmNDE4ZmNhZTljNzdlIGxlZ2FjeS10cnVuaworMzIzMjMgNzkyMmQ1ZjQzODU0M2E1NzY1ZGU2NGY4MDIyOWNlMzE3MWQyMDM0NyBsZWdhY3ktdHJ1bmsKKzMyMzI0IGE0MTU0ZGQ1OTM5YWE2YmIzYTExMjg5MzllOTA3NGQ2YjEzODNkMTUgbGVnYWN5LXRydW5rCiszMjMyNSBkNmFmZTE5NmVmODIwODNmZjIyMjYyMGM5YWE1OTVlZmNjNTM5ZmIzIGxlZ2FjeS10cnVuaworMzIzMjYgNjU4YjEwYzViYTJhM2Q2YmUxNjdmMmY0ZDdhMTFlM2E3YjYxNjYwZCBsZWdhY3ktdHJ1bmsKKzMyMzI3IDAxODE3MGE0YTJkN2FjMjUwYWVkZjA3N2ZiOTY4ZTZhYzk2OGM4N2UgbGVnYWN5LXRydW5rCiszMjMyOCBhZWYwMWEwNzZlZjk2N2FlNzkzYzRkNjNjNzI0NDBiNTEzMmRjMTNkIGxlZ2FjeS10cnVuaworMzIzMjkgOTc4OTAxMzRjOWM0NDM5M2JiMzZhMzgyN2MwN2I1NTZhYjIwNTM5NiBsZWdhY3ktdHJ1bmsKKzMyMzMwIDQxZjQ1OGI4ZGEyMGEzMzRlZWM2NzgxOGVkZDk4NjgyNzlhNWU0NDYgbGVnYWN5LXRydW5rCiszMjMzMSA0MmRlNTBlMTkyZGY1YjllNDgwNjMzYTIzYzg2OThmZmZjYzAwOWY1IGxlZ2FjeS10cnVuaworMzIzMzIgZDZlMTNkMTIxMGM2YjU4NTBmYTE1MTgxZDQwZGI5YjgwODk1ZjA2OSBsZWdhY3ktdHJ1bmsKKzMyMzMzIDJjZTM5YTdiZTc5ZDlhNWIxN2U4ZGNkN2QwODcxMmJmNzRhYTgyYjUgbGVnYWN5LXRydW5rCiszMjMzNCBmYTc4NzRlYzZhNzFlZThjOTljMzIyYzJiODRkYTExMGMyYTUwNmMwIGxlZ2FjeS10cnVuaworMzIzMzUgYmUxNDk3MGE5OTU1MjJmZWRhYTg5ZmJjNDc1ZmIxNDc4MjVkMGI1ZCBsZWdhY3ktdHJ1bmsKKzMyMzM2IDUyOTMwYmU5ZGZlYTVhNTViNGNkODIxYjA0YWU4YTYzZjc4NmRkZGQgbGVnYWN5LXRydW5rCiszMjMzNyBkZTc2OTA1Mjc1ODQzZTc5YTY0YmE1MTU3MmU5NWJhNzBhOGNhMzc3IGxlZ2FjeS10cnVuaworMzIzMzggZWRjZmRiMmE4NTJlOWFmM2VkOWY3YWU5NTUyMjQ3NThhNGU5MDBiNCBsZWdhY3ktdHJ1bmsKKzMyMzM5IDI5ZjNiMjM3NTA0OWVmMDY4MjdlNTNiMWMzMGQ1NzdmZTYxMzE1MzkgbGVnYWN5LXRydW5rCiszMjM0MCAxNDliZDBlZjk0ZmI4NGRlOWJjYTJhMDAwNWRiNmM3NGE3ZTJkNmFiIGxlZ2FjeS10cnVuaworMzIzNDEgODIwZDk1NzBlZGViYzNjMmJkOGZmZDA1ZDk0MTRkODBlNGE5MWZlMSBsZWdhY3ktdHJ1bmsKKzMyMzQyIGQzMTI3YjY3MWQzNmMzOGQ4ZDdiY2Q0YmQ1OGNlZDU0ZjRlZWM3NzEgbGVnYWN5LXRydW5rCiszMjM0MyBkMDhkMTVhNzAyOTUwYjU3YWQyYjVkY2M3ZmQyYWM5MjI1ZjYzMGExIGxlZ2FjeS10cnVuaworMzIzNDQgZWMyYTBmMTVjMTRjZDE5ZDQ0OTQzY2NmZmE5YjgyYTc5ZmRjNjcxYSBsZWdhY3ktdHJ1bmsKKzMyMzQ1IDFkOGU4NGQ5NmRkZWM2ZGYxNzA2ZDg4YTNiNTg3YzhiZDg3MGVhOGQgbGVnYWN5LXRydW5rCiszMjM0NiBhYjRmYmY4ZWJhYjNiMGI1ODA2YTZiNDFkZGNjMjg5MmE5NGJmY2RmIGxlZ2FjeS10cnVuaworMzIzNDcgMTNkMGEzYzRlNDY1NzViYzcyZGVmMzhjNDQ5NzQ1Yzg1NDE2N2Y3ZCBsZWdhY3ktdHJ1bmsKKzMyMzQ4IDE2ZWY1YjliYzc4OWNiOWEzODU0MGQ1MTIxZWMyODI0ZDQwZDQ3MzYgbGVnYWN5LXRydW5rCiszMjM0OSA1ZTZmZmE2NTU0NjIzNGNiMjhhMTVhNjRkY2Q4MzEwYjMzMzZlNDQzIGxlZ2FjeS10cnVuaworMzIzNTAgMDNhZjQ2ZDFhYzI4NDA1Njc1NTFkY2Q4YTEyMmRjMzBiMzM0NTkwMSBsZWdhY3ktdHJ1bmsKKzMyMzUxIDQ2NDlmMzE4ZmNiMDJkYWZiZWUyZjYxOTk0NzNmMDgxYTY5NTRmY2EgbGVnYWN5LXRydW5rCiszMjM1MiA4MTYwYmM3OGM5M2FiMWE2MjJlYjg3NWY5YTIwNDczNGQyMTBhNWRmIGxlZ2FjeS10cnVuaworMzIzNTMgODkyMDVmNWJiNDQwYmZjYWI1ZGYwZjliYzJhNDE4MDVjOTAwNmMwMCBsZWdhY3ktdHJ1bmsKKzMyMzU0IDllYTBjY2RkYmVhZDM2OTRmZjMyMDhkOGI3MjE1MjVmZGRhMWMyZWQgbGVnYWN5LXRydW5rCiszMjM1NSBkZTZkMWU3ZTk4MjU3MjQyZGNlNDQyMTJkYTU3ZWNhZDY0MWI0NGZlIGxlZ2FjeS10cnVuaworMzIzNTYgYWM4ZGJiZTYyNDMyYjk0ZjNkNjAwNmU5OGI5OGMxYTJlY2EwOTUwYiBsZWdhY3ktdHJ1bmsKKzMyMzU3IDA1MWE0ZjEyY2M0NjI1NzE3ODUzZDgzNWMzMTBmYzUxNDliMzZiYTMgbGVnYWN5LXRydW5rCiszMjM1OCBmOTY4ZTkzZTNjZTAxODcxNzY5OGFkMTRjNDI2Y2QxMzVkMDY4M2FjIGxlZ2FjeS10cnVuaworMzIzNTkgMzFjYmQ0NmYwYzdkNjhkYjBlYzM5NzA0YzgzM2RmYjhjZGJkMWY1NCBsZWdhY3ktdHJ1bmsKKzMyMzYwIGFjNTg2MDhjZDIzY2U4NmU1YmJjNTMyNWQ2MzUxOTk2MzJlM2FjMTkgbGVnYWN5LXRydW5rCiszMjM2MSA4NmY0OTMzZmE0Mjk1ZTFlZGQzYjAwZjYwNWIzMWNiYWMzMzQ1MTk2IGxlZ2FjeS10cnVuaworMzIzNjIgYmE5MDkyMzZlYjEzYjEwOGUwNTIyZjY2ZTgwOGFjMmU0NGJmODhmYiBsZWdhY3ktdHJ1bmsKKzMyMzYzIDQzZDMyZjRmODkxMzg0NzQ4OWYzNjAwZWZjZmNkZTI1ZTFhYWJkNGIgbGVnYWN5LXRydW5rCiszMjM2NCA1Yzg4NmUwM2I0M2U0MWNiNzFmNjRmMmQ2Y2IwNjBiY2VmNDFmZmNhIGxlZ2FjeS10cnVuaworMzIzNjUgN2JiYTNlMmJlNTRlN2VhYTUwMDJmNjkwM2JmMDcwNDYwMjZiYmM3YSBsZWdhY3ktdHJ1bmsKKzMyMzY2IGFhNjM0YWRiNDFhOTAwYWQ4Yzk3NjAxZTQyMGNmNDk1YWRiNDkwZWYgbGVnYWN5LXRydW5rCiszMjM2NyBkNzkyNTQ0YWIxMTFmNDQyYzk2ZWQ0YjBhMTc3YmNjNDk1NTJiMzcwIGxlZ2FjeS10cnVuaworMzIzNjggNTJmM2Q5MGMxN2U4M2RlNTM0NTRkODgxNTI2NjliYWE3N2JjNmI2NCBsZWdhY3ktdHJ1bmsKKzMyMzY5IGNlYzlkMTNjNDNmZjdkYjgyYWI4MGQ2MzBhY2IzNmM1ODRkMjlmZGQgbGVnYWN5LXRydW5rCiszMjM3MCBkMzI5N2UyOTgyMTFiOGM3YmE1MTZmNjkzMzNjMDBkMjljNTlkM2I2IGxlZ2FjeS10cnVuaworMzIzNzEgNjZjY2ViNzU2MmI1NmE5MzRmZjYwZWExZWYzMTJmM2Q0YzQxYjU3NyBsZWdhY3ktdHJ1bmsKKzMyMzcyIGJkNjc4ZTY1Zjc4NDMyMGY0M2JjM2RjMmJlODg5OGM2ZjRhZDI5N2UgbGVnYWN5LXRydW5rCiszMjM3MyA2ZTJlNTk4NTM3NWM2MjQ3ZWM2YmUwNWRhNDAwNDRmOTM3ZDNjY2M5IGxlZ2FjeS10cnVuaworMzIzNzQgMDE0Y2ZhYTdhNzg0ZmJhMGEyNjJmZDM0M2I0MjEzYTlhZTBlMGM4YyBsZWdhY3ktdHJ1bmsKKzMyMzc1IDFmOTYwNDlhNzlkNGNmOWYyOTI5OTAzMDM3ZDhiMTcxZTg0NDllMTYgbGVnYWN5LXRydW5rCiszMjM3NiBjMGEyNmM1YTc5MzY0NzBlMTljMmI3NTQzNzMyMzU4NDkzOGVkNTAwIGxlZ2FjeS10cnVuaworMzIzNzcgNTYzYmFhM2U0MjhmNjk0NjViYzRkMTg5OTE0MzMwOGEzZDIzYjdlOSByZWxlYXNlMjItbWFpbnQKKzMyMzc4IGI0OWZmMDRjMThkZTdlZDBlNGQ3ZWY1OWRkM2IyOTdkYjQ0MWU3ZjMgbGVnYWN5LXRydW5rCiszMjM3OSA4OWRjMzI2NzQ1NTRlZWQwMDU2MzYxMzM0NGEyN2VkZWMyZDY0YWJiIGxlZ2FjeS10cnVuaworMzIzODAgNzU2NTEyZmJiNTI3OGQyNTFkNDViMjk5NzI0MmY4ZGQyYzBiN2IzMyBsZWdhY3ktdHJ1bmsKKzMyMzgxIGExZDdjY2Q5NWE1ZTgzZDYxNDg5ODBjYWE4Y2I4YTM0ZDAzZDg2YjggcmVsZWFzZTIyLW1haW50CiszMjM4MiAwYWQ3NDUzYTlmODI3NzUwMzA2ZWZlNzNiZDIwYTY4MThlYWY0MjM5IGxlZ2FjeS10cnVuaworMzIzODMgMDg1ZjY4MDA5Y2FkODE4Y2ViNGQzMzEzNzBlMjU5NzhkMTJlZDFhYiBsZWdhY3ktdHJ1bmsKKzMyMzg0IDljN2FkMWU0NTU5NjBjY2U3NDYyMzdhYmMzYWZmYWJmZTc3MDA5ODEgcmVsZWFzZTIyLW1haW50CiszMjM4NSBkZDAyMmQ0MjNiOGEwODg2ZGVmNjEzNDY3MThhNzAzOWVmZGQyNmNkIGxlZ2FjeS10cnVuaworMzIzODYgMDcxNzI0MjI5NWIxMWNiMzdmYWEwOGFiMWQyYmNhNzY3Y2Y2MDZiOSBsZWdhY3ktdHJ1bmsKKzMyMzg3IDk5ZTgyZGJhZjBjY2Q4Mjk4Nzc2NGFkN2FkY2JjOTA1NDEzMTE2YzggbGVnYWN5LXRydW5rCiszMjM4OCA3ZjIzNjY3ZDNjZmM0YWRkYjQyMTczNzIyMGM4NWQ3MTgwYmRlYzgyIHJlbGVhc2UyMi1tYWludAorMzIzODkgM2RmMGNmMTZkZWZjMjI4ZjdjMzgyZGVjYmIyNzIzYmM4MGQyYTBmMSBsZWdhY3ktdHJ1bmsKKzMyMzkwIDIyZDE3NzY4MmFlMTRmZjE3ZmExNmY2ZjZmMTI2NTdmYmYyZTIzNDAgbGVnYWN5LXRydW5rCiszMjM5MSAxNzFkYmRkZjBhMDIxNjcwYjUzOGNmNTM0NTU5MjQ2NTJkMjY1M2JhIGxlZ2FjeS10cnVuaworMzIzOTIgNjUwM2FkOGRjYTg4MTdkYzEwNGFjZThiYzU4OTE3MDdiMTg2YTkwYyBsZWdhY3ktdHJ1bmsKKzMyMzkzIDYzNDhiODViY2I5ZGU4MGI1ODg2ZTFiNDdlMDYzZWE0NWY2NGQyMTIgbGVnYWN5LXRydW5rCiszMjM5NCA5YzBhZDY5NGUzZTIwYTNmMjZmZWYwYTNjOGI0MjIxMzgwNzA4OTVkIGxlZ2FjeS10cnVuaworMzIzOTUgMmM3NDQ3ZWZjMmE4ZDBlMTZlMGZkNDZlMzhiZGQ1NGVkZDRmZjlkOSBsZWdhY3ktdHJ1bmsKKzMyMzk2IDc1MzgyZDEwMjc0OWNjZTk0MGRkMzBiMzQxNzAzMzVlNDM1ODljMWEgbGVnYWN5LXRydW5rCiszMjM5NyA2MGVhY2JlYTcxOTkyYzE2NzFlNjEzOTFhODZjZThkMDQ4NDhlYWYyIGxlZ2FjeS10cnVuaworMzIzOTggOWI3OTYwNTE3MWViZDRmNTU2ODgyOTE3NGE5M2E4YWY2OWJmMmYzZiByZWxlYXNlMjItbWFpbnQKKzMyMzk5IDk0NjZiNmUyNDgzMzJlNWEyNmJhOTk4YWQwZGEwNWFjOGY4NmI1NGMgbGVnYWN5LXRydW5rCiszMjQwMCAwMGI4OTQ3MjYyMGQ3ZTRiYTg4NGVhOTVjMjNkNDEyYzZiMzA3ZTRkIGxlZ2FjeS10cnVuaworMzI0MDEgMjliNmE0OGY0YzQ1MGNmZmE3NzQ4MDdiYmEwZWZmMGZkMDUxMjU4ZSBsZWdhY3ktdHJ1bmsKKzMyNDAyIDBlYTU5OTFmNmVkYmM0YzI3M2NlNThkNjUxMzdhZjQxNzdkZTYyODAgbGVnYWN5LXRydW5rCiszMjQwMyBlMDZmMmJmNTZiNDA2ODM3NGM5MmZiMzI3ODZkMjY1YzNmNTY4ZjhmIGxlZ2FjeS10cnVuaworMzI0MDQgYzliZWUxMWVhYThiOWU1YzljMmJjYjNkMGQyMTVhZDM5ZGFmYTg4MCBsZWdhY3ktdHJ1bmsKKzMyNDA1IGJjNDIzMWViMjc1ODQxNmY2NTMxNDBlZDlkZDZmMGFmMDY1OTY4ZDYgbGVnYWN5LXRydW5rCiszMjQwNiAyMTFjMDJmYjY1NzBhZmUxYzJlZDA0MDlhOTlhYjExODI4ZDE3OTk1IGxlZ2FjeS10cnVuaworMzI0MDcgM2ViYjRiY2ViZGQ3ZWQ2NDcwNjE5NjJkMjkwNmY1OGMwOTMwODc4MyBsZWdhY3ktdHJ1bmsKKzMyNDA4IDBkNTMwMjliNzk0OTdhNjFkODcxZGJhYTA2MjExMzIyMzAxZjg4YjYgcmVsZWFzZTIyLW1haW50CiszMjQwOSA3MDhhZWE4MmFkZTg3MGFiMmIzZjIyZmVhN2YwMzRmMGFhYzRiNTYwIGxlZ2FjeS10cnVuaworMzI0MTAgNTFlZDlmNWUzNmExOGM3NzI0NjNkNTBlYTM2YmMzN2QwY2I1YmYzMyBsZWdhY3ktdHJ1bmsKKzMyNDExIDc4N2Q2NjVlMWNkYzczMDNjYmE5ZTNlMjkyZDc4NjVlNjQ5ZDExODIgbGVnYWN5LXRydW5rCiszMjQxMiAzOTVmMmI5OWM3NTJmOTA2YTdjMzUyZjI4NGIxNjNlMDllN2VhNTFmIGxlZ2FjeS10cnVuaworMzI0MTMgMmM1YmYwOTdkYWY4NTVhMGRhZWU5ZTFjYTdkYTA4YzYxMjEyODNhZSBsZWdhY3ktdHJ1bmsKKzMyNDE0IDc0OTgxOWY4YjJhZGNhNzNmNWRlY2ViZWRmMmExYzUyZGVkYjEzMGYgbGVnYWN5LXRydW5rCiszMjQxNSA2M2ViMGM5ODdkZTdkYjQwMjkxMjFiYzk3YjBiMWFlMzVmYmQ1MWY5IGxlZ2FjeS10cnVuaworMzI0MTYgOGE2ZTRjOTJiZDdmMmJkMTI3ZTIzMTQxOTI4ODQ1ZmU3NjFlZGIyYiBsZWdhY3ktdHJ1bmsKKzMyNDE3IDY4MTY3MTlmNDM5YzU5ZmQ3MjZlNTkyMTFlOTQwNWUxMTJkZjk3MzAgbGVnYWN5LXRydW5rCiszMjQxOCA1NTg2ODliNmQ3ZjBlYjUyZWYxZjYxYWJiNTM2YWQwODg2MDBmNTg1IGxlZ2FjeS10cnVuaworMzI0MTkgMDE1ZDg5MWYzODczZGMwMzQ4NDcyZDliMDEwMGNlYmEwOTM1ZGM5OCBsZWdhY3ktdHJ1bmsKKzMyNDIwIDI0ZDJhMDVmNDFjY2ExODAyYTdhZjhhY2FiZjgwMjkxNWNiNmU2NTYgbGVnYWN5LXRydW5rCiszMjQyMSA2NGQ3Yjg3NjcyMmZkODc5NDYxNmYxMDdhZmM5ZGE1NzUwNDBkMjJhIGxlZ2FjeS10cnVuaworMzI0MjIgODA5NGMwZGI5NWY4YjZhOTQ4NjgzNjBhMmNmMjU5OWZlZGY0YjIxMSBsZWdhY3ktdHJ1bmsKKzMyNDIzIDgwM2JjYTIyNGM4ZmE3ZDIxNzIwODAyMjczODQwYzE1MWRjYmQ3ZjYgbGVnYWN5LXRydW5rCiszMjQyNSBhNzZhMzY4MzAxMmJjMzdjNDAwMDJkMTUwYjI4MGMxMmFlMjA4MDM3IGFzdC1icmFuY2gKKzMyNDI2IDA1ZTU3Mzg4Y2I4ZmRjZWU4YzhhOTk3NDMzODRkZWIzMzIxYzY1NmQgbGVnYWN5LXRydW5rCiszMjQyNyA3MjViMjgxY2NlYWQzOGJmNzEyMTYzYjYyZDFkNGYyNTc5OWU2MmIyIGxlZ2FjeS10cnVuaworMzI0MjggZjg3NGE0ZDI5Y2E0MTc4ZWI1MTI5MzBhZThmZThhYzEwNDlkNTJhZiBsZWdhY3ktdHJ1bmsKKzMyNDI5IDIxNjMzZTlkZjhjYzQ2Yzg2NDUxMjE4NDIyZDg0ODgxZjM0YjkyYjggbGVnYWN5LXRydW5rCiszMjQzMCAxMTI1NDAxNjBiNjUyZTZhYzIyYjdlOWRjMTBhMTJiNzM2ODg3YjhhIGxlZ2FjeS10cnVuaworMzI0MzEgNDZkMjZhZmE4Yjk1NjNmZDEyNWFkYjM3MjIwNzlkODI4ZGUyZjE1OSBsZWdhY3ktdHJ1bmsKKzMyNDMyIDcyZGI3NTc1Zjk3MDAwYzk3YjI2OWExYWM2ZGY3MDlmZWRlZTBiOWMgbGVnYWN5LXRydW5rCiszMjQzMyBhOWI1NmM3OGUwZDY0ZWNkZTQzNGM5YWMzMzgzODU4MmNjYWM5YjYxIGxlZ2FjeS10cnVuaworMzI0MzQgMjVjOGNlZTQ0NTdlNmFkMGFmZjIxMjg3ZTAwMDcxMzJlYTBlMTJlNSBsZWdhY3ktdHJ1bmsKKzMyNDM1IGMzNGNmOWNlOTUyZjlmYTI4MmJhNjYxOGE2ZmZmYjYyMjg2ZjZhZWYgbGVnYWN5LXRydW5rCiszMjQzNiAwYzk1MGUzMzIzZWU0ZWU2MzcwNjJiOWVhYWZhNTBlYzNjZmEwNmMxIGxlZ2FjeS10cnVuaworMzI0MzcgY2E0YmRhZjVjNzU3NTg1OWVhZTNlYjQ5OWM1YjllZTY4MzRkNjA4OCBsZWdhY3ktdHJ1bmsKKzMyNDM4IDEwMmY5ZTM1OGY1MjEzOGVjZjRjNDE0MDY3NDc1OGNkZjE3MDM3ZTYgbGVnYWN5LXRydW5rCiszMjQzOSBjMGExZWZlMTAyODQ3M2NjYmYxZmQyNWQ4YzgyMzNmMzk1MTBiM2ViIGxlZ2FjeS10cnVuaworMzI0NDAgMmJhMjBmYzlmNDk1M2MwOGJhOTVhYjQ3NzZiOGZmZDgwOTcwZWQ2OCBsZWdhY3ktdHJ1bmsKKzMyNDQxIDI4YTA5NzY3YTI0ZmZhNzkxYzY3MTNlNDIzNWVlMjViZmZhZWE5M2EgbGVnYWN5LXRydW5rCiszMjQ0MiBhNWUxYjE2NjJlYzAxMTkxZWQzOTdiMGY5YmM5ZTUyNGM2ZDcwNzMzIGxlZ2FjeS10cnVuaworMzI0NDMgMmFmOTNmZGZmNjA4ODhlNTQ3NmQ1OGVmNDk2NWE1NjhlYTcyYjFjZCBsZWdhY3ktdHJ1bmsKKzMyNDQ0IDExM2MzMTg4ODc1NTYxNDY2ZDExZWMzNWUxMTQ3MzlhYTdjN2YwYzMgbGVnYWN5LXRydW5rCiszMjQ0NSBlZDc0YWMyMWMxMzMyMjBmYzJjNjRlNDY3NTBhM2MzMjBhMmU5NWRjIHJlbGVhc2UyMi1tYWludAorMzI0NDYgYjMxNjI5MzM1NjM1NWVmZjc2NTRmZDRkYTFmY2EzYmYyZjE3ZjBlMSByZWxlYXNlMjItbWFpbnQKKzMyNDQ3IDczZGNlODkzZWI0YjM4MDI4ZDNiZWI2YjMyODQwNDk0MDM2Njk4ZjIgcmVsZWFzZTIyLW1haW50CiszMjQ0OCA2YmQyOGFiZDMxYTdmMGQzZTZhOTJkMGY3NmE2YTllOGY4M2M1OTM2IHJlbGVhc2UyMi1tYWludAorMzI0NDkgOTExMzBhNGNjMWNlMGVmNDZkMjljZjg0MmMzYjZmNDA5ZDMwNjc0NiByZWxlYXNlMjItbWFpbnQKKzMyNDUwIDU3ZTYxNTg4NTcxYjIwYjEyYjAwNTJjNmVjZTk2ODQzMGY5YzliMzEgbGVnYWN5LXRydW5rCiszMjQ1MSAwNDViZDE0Zjc0NjgyNWIyMDQ4ZWQ2ZWY0NWE0NzdmZmUzNWFhZDJhIGxlZ2FjeS10cnVuaworMzI0NTIgNjBlNzIyMzg0ZDYyYzZmODA2N2QyZGYyMWE2ZDAzYWU4MTVjMDkzZiBsZWdhY3ktdHJ1bmsKKzMyNDUzIDY0Y2I2NTdiMDMzODQ0NGQyZTM4ZWY3ZGI5NzE0MjU5YWRlYThjY2YgbGVnYWN5LXRydW5rCiszMjQ1NCBkZWYwOWVjMGJjMzE3MmM1NGY3NWIxMjlhMjE1MTM4MWY4ZDY5YmVjIGxlZ2FjeS10cnVuaworMzI0NTUgNzI5NmNkM2Y0NWM3ZjQ3M2RlN2IyYTVkOTZjZTI4YTQzYWM0NmZkOSBsZWdhY3ktdHJ1bmsKKzMyNDU2IDBjZDhkNTcwYzU5MTEzOWJjNGFjNjFlMTNjMGNiNzZkMjYwMWU4YWMgbGVnYWN5LXRydW5rCiszMjQ1NyAyZmFkNTQ4MzkxZGVkNmVkNGJkMDFhNjA4Nzg3N2M5YmQ4Yjk1NjZjIGxlZ2FjeS10cnVuaworMzI0NTggOWM3ODVhYjFlZmYwM2EyNzExODhkZjNjOWMwYzViNDc5MjgwMjYwYiBsZWdhY3ktdHJ1bmsKKzMyNDU5IGRjNGU0N2U2ZjAwMjM1ZGJiYjY0MDI0MmE3OWIyNDViMDFmNTJmMTUgbGVnYWN5LXRydW5rCiszMjQ2MCBiMzdhZjIxYjc3YmUzMTVjODIwZDdlMWRlOWNhNmNhYjljMDY0ZTMyIGxlZ2FjeS10cnVuaworMzI0NjEgZTA2YWFkOTBjMGFlMjRkOThmZGJiMThiMmY5MjkyMTlhNzE4MTFlMSBsZWdhY3ktdHJ1bmsKKzMyNDYyIDFjNWFkOTM2MDM4ZWYyNmMyOWQ2MGY1NjUzYzk0NDFiZTdjNTFlZjUgbGVnYWN5LXRydW5rCiszMjQ2MyA3MDEyY2E2NGJjNzQ5NWM3M2JkMDdhMzljNmQ1MjFlN2Q5NmFlYjI1IGxlZ2FjeS10cnVuaworMzI0NjQgZTRhNWYzOGZmMDA4OWJmMGMyYjZlZmIwOGZmODdlN2M0MTY2MWU4NiBsZWdhY3ktdHJ1bmsKKzMyNDY1IGZhMTU5ZmVmMjczMDA0ZGY1YWY2ZDExNDgxZjQyN2I5YWI0ZTRlODQgbGVnYWN5LXRydW5rCiszMjQ2NiA0NWM0YTJmMTU3YjM4ZWJiY2Y2MjI1YTQ5M2RhZTY3NGExNTllYmVmIGxlZ2FjeS10cnVuaworMzI0NjcgOThlMzFjZmQyNmRjMjYxYmI0ZmYyMDBlNDVmOTBiZjY1OGVkZGQ3MiBsZWdhY3ktdHJ1bmsKKzMyNDY4IGQ4MjIzODgwODJiYWQ0NzE0OTYyYzY1MDA5YWI2NGM5Y2VkNWM3OWIgbGVnYWN5LXRydW5rCiszMjQ2OSBjMmEwNWUwNzg1ZjE0OGZhZTk3Nzc5ODJmYzVhOTU2ODk0N2UwZWY3IGxlZ2FjeS10cnVuaworMzI0NzAgMjdhZjM3ZGQ1YTBiZjUyMTg0NWE4MzJiNGM3YjA1NjIyMzVlNmE4ZCBsZWdhY3ktdHJ1bmsKKzMyNDcxIDM5ZDgyZDAzODg3ODk0MWFjMTI4MGYyMGY2Zjg1ZTI3NTc4NTY3MTUgcmVsZWFzZTIyLW1haW50CiszMjQ3MiA0OTBhZjAwZmIxODMwYzM1NGIzNjg4OTczZjY4YTMwNGM0YmZiZTRjIGxlZ2FjeS10cnVuaworMzI0NzMgZWYwNzlkZWZkMmNjMTFmNWEyODg5YmY4Mzc5NDI4ZjQ4MTMwYzkwZSBsZWdhY3ktdHJ1bmsKKzMyNDc0IGVlODE1YTZiMTFlMjAyYmViMjY1NTI4OGRmNTg2M2FjZTY5MDZiN2EgbGVnYWN5LXRydW5rCiszMjQ3NSA4NjUxMWI5NmQ5ODBjN2NjY2U2ODA2MWNlOTVmNWExMjEyZWFlZDJmIGxlZ2FjeS10cnVuaworMzI0NzYgY2Q4MjI1M2YyMGI3MGMzNjc5YTdmYzJiNjJjMGFlZGE2OTVlOGYxNSBsZWdhY3ktdHJ1bmsKKzMyNDc3IGZlYjM1OTU0YjAzODY4ZDEyZGMxZTFiNWQ1NmFkOWM4OTkzYjNiYmUgbGVnYWN5LXRydW5rCiszMjQ3OCA0YzUzYjY5NGFmYTY5ODI0ODJmZjYyNjVjMjdiZjhkMDU3MDM3ZWU4IGxlZ2FjeS10cnVuaworMzI0NzkgZjM1MWZhYjczODk3ZGRkYjhiM2I4MmM1OTU2ODY4YWQ2M2NiZGY5YSBsZWdhY3ktdHJ1bmsKKzMyNDgwIDFiZWYzZWNhMjBjZTA5OTFmMzAzNGYxN2YyZGU2MDUyNmIyZDUxYzAgbGVnYWN5LXRydW5rCiszMjQ4MSBhZTE3ZmM4MTkzMDhiM2FiNjZmNzFiNGY2ZTkzMjIwMTYzNjY3ZGM4IGxlZ2FjeS10cnVuaworMzI0ODMgNzM2YmJkZWNhYTFkZjlkNGJmOGI2MWRlNDVkMDNjOTBhOTI1OTg4NyBsZWdhY3ktdHJ1bmsKKzMyNDg0IDU0NWZhZWM3OTBjNDczMjYwYzY1MmJhYTNiY2JhMTExYjljZWYxMzQgcjIzYjEtYnJhbmNoCiszMjQ4NiA1Y2NiNTUzNmZlZmViYmI2NGEzMjkxNzU2YTU2MzhiYzI3OWIyYjZlIHIyM2IxLWJyYW5jaAorMzI0ODcgNWNkYjcyODBjMzI2NmQ5NTQ4Y2NkOGE2YjNkNDA2YTIxZjM4YzljYSByMjNiMS1icmFuY2gKKzMyNDg3IDVmYzYwZTBiODgzNjgwMjA3Y2ZiMTAwODY1YzQyY2EzYTJiMTY2MzcgcjIzYjEtYnJhbmNoCiszMjQ4OSA1NzZmYTE3ZmYwN2NjMTczZDJiMjc3ZTQ1ZTRhNGRlYWI0NmFiZDJiIHJlbGVhc2UyMi1tYWludAorMzI0OTAgMTcxZWNmZmYyNjU3OWI3NTlmODhiOWVhYzVhMTVlMzUzN2RhZDY5YiBsZWdhY3ktdHJ1bmsKKzMyNDkxIGJkY2YzN2JlOTA0ZGJkMmUzNTNmMWM3ZmFlZjMxNjJiYTYxYTAyODEgbGVnYWN5LXRydW5rCiszMjQ5MiAzMDMwZDk0YTljMDU5MGJlNDE3MjBiOWM3Y2FlZDE1MjE0ZTdjODNlIGxlZ2FjeS10cnVuaworMzI0OTMgYjYyZDg3ODE2OTc2OTU0MTJkNjg2ZWQwMDQzZmZkNzFlZDFhNDE0ZiBsZWdhY3ktdHJ1bmsKKzMyNDk0IDk4ZjViZmIxOWM4NjhiMzYzZmQ0MDA0ZjMzMmZlYjg0NmM1Yzk0ZWUgcmVsZWFzZTIyLW1haW50CiszMjQ5NSA2OGM2MTg2ZGMxYTExYmI0MTJlZTAzYWViOWQxZWJhZGQ3YzNiZjE3IGxlZ2FjeS10cnVuaworMzI0OTYgYjY3ZjVjMzk1YTY4OGU1OTA1ODM2ODA0ODkyZmRiMzZlNmNlNjI0OCBsZWdhY3ktdHJ1bmsKKzMyNDk3IDEwM2ZhYTBjMmUxZTZmNmZiNGI0N2I3ZWQyNDU0MjUwYTAwYTcxMjIgbGVnYWN5LXRydW5rCiszMjQ5OCBkYjk4NDU5MDdlOGJlZDAzOTY0NjVhM2JkNzNiY2U2ZTJlZjc4NjE1IHJlbGVhc2UyMi1tYWludAorMzI0OTkgNjQyMzBlZThlZWE1OTViZTJlNDA0ZTNlMzFkYjljM2NkYjRlMGYyYSBsZWdhY3ktdHJ1bmsKKzMyNTAwIGY1MGQwZDBmMjlhMmQwYjUyN2E1YTI4ZjEzN2FiNGQzYmI3ZTFmNDEgbGVnYWN5LXRydW5rCiszMjUwMSA2ZDg1MmViZmYzNmZmNjNiNzk4NmU2OGUyM2E2YjA2OTljNWE5NjEwIGxlZ2FjeS10cnVuaworMzI1MDIgMTYzNzQwNTJjYjVkYjNjOGM2YzI0MjRiNjUzYjc1YjMzMmFiMmVhNCBsZWdhY3ktdHJ1bmsKKzMyNTAzIDUzZmYyM2JiMzI0OGZiODQ3MjgwNzAwYmRhNjdjY2U1NDgwNzcyMTkgbGVnYWN5LXRydW5rCiszMjUwNCA3NDNhZTljYjNhODNkYmZmMjMxMDFjNDY4YTVlMTFkOTFiOGJiNTJiIGxlZ2FjeS10cnVuaworMzI1MDUgMWEwYjdmYzQ2MjViODgwM2UzMzgzYmQzMDlhNmYzNjcwOWY0MjRmMSBsZWdhY3ktdHJ1bmsKKzMyNTA2IDNhOGI4YWVkZTEwMGQ4YzhlZGE5ZDY1OGE4ZWMxMjg5Y2Y2YmM0NjcgbGVnYWN5LXRydW5rCiszMjUwNyBhNTM1MjkwOTVlOTU0MDk0Mzg0ZjczYTdjZTZmNTk3NDM4OTZhMThiIGxlZ2FjeS10cnVuaworMzI1MDggNWYzZThiY2M4YzdlYmNhNjRiY2YwMTZlNmQzYjdiNzM5YzBlZTIwOSBhc3QtYnJhbmNoCiszMjUwOSBiMWJjOWUxNzFjNjJlODI5YWVjY2FmODAwOThhYzg5NzE5OTM3ZjgwIHIyM2IxLWJyYW5jaAorMzI1MTAgMWQ5N2Y1MmJjODRmYjBkYmI5NTMzZDNhMTQ0N2VlMDA1NGMzNjVkZSBhc3QtYnJhbmNoCiszMjUxMSA3MWUxOTFiODNkMDQ2NWJjZDE3MTQ2NzdjNzhjZGU5MDE3ZTk4NGQ3IGFzdC1icmFuY2gKKzMyNTEyIGI4NDYxMjE4MjliZGIwMDdjZjU0Nzc5MjlmN2ZlMzlkZmRjN2NlNDcgYXN0LWJyYW5jaAorMzI1MTMgYTYxMzMwYTNkNTljMjFjZDYyNDk1NzdmMTY0ZjFkMGU0MDk4MTMxYSBsZWdhY3ktdHJ1bmsKKzMyNTE0IGY1NWI1NTNhMGIzNDk5OWY2MDUwNmE4ODgwMTRiNTFiYzE2ZThiMDggbGVnYWN5LXRydW5rCiszMjUxNSA2MzkyZTg0Mzc1ODg4MTMxMjA3MzU1OGI2YTNlMmU5NjZiOWQwZGIyIGxlZ2FjeS10cnVuaworMzI1MTYgYzZkNmFkODYyYThjMzMxMTNlZTc0YjJjM2E0MGIwNTg5OTIxMTI3MiBhc3QtYnJhbmNoCiszMjUxNyA2NWY3MjBmYTYyMDBmZGFmZjQwYWQyOTgwMzE4NDMwM2QyNjYwN2JmIGxlZ2FjeS10cnVuaworMzI1MTggMjQwMDcxYTJiNDY2ZTRmMmEzM2Q4MmU5MzQ0OWI3YzM4MDc4NTg3OSBsZWdhY3ktdHJ1bmsKKzMyNTE5IDg1ZjBlNjA5NTRjYTdiMDAwNzY2NjhjMWZjMzQ2Njg1ZGM2N2Q1ZTMgcmVsZWFzZTIyLW1haW50CiszMjUyMCA5ZWI1YmU5Mzc5OTBhODkyZTVhNzNhYWI2MThhNjIxZjUwNzk4ZDM4IGxlZ2FjeS10cnVuaworMzI1MjEgMGYwZjYyMzRmMmZmNGVmZGNjNzNmM2NhNjMxNzgwYTliMzdjOGY3YyBsZWdhY3ktdHJ1bmsKKzMyNTIxIDY3Y2U0ZWU0YTI5ZDFlN2NlMzU3ZWY4ZDFjMDBjNjlkNTU3YzEwYjIgaWRsZWZvcmstbWVyZ2UtYnJhbmNoCiszMjUyMiBlMmQyOTU2OTk5NmQ4MGQ2MDVkYTY2ZTE3YmQ0Mjk0MWUwM2UxYzk3IGxlZ2FjeS10cnVuaworMzI1MjMgMjMxOGE5ZTE2YWIwYTlkYzk4OGRmZmZlNzE1ODNhYTNmY2NkNzQ3MyBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMyNTI0IDc1YzFjZWQ5M2JiNTJjMmFiY2EwNmJmZDEyMTFlNDc0MjgxZTM0MzUgbGVnYWN5LXRydW5rCiszMjUyNSA2YzQxNzU1MmY0NzM1YzA4YzhkYjU2NjEzNDJlZWFiM2JiY2JkYTAxIGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzI1MjYgNmU5ODYyMDY2ZTI5NmVjODQ4NjhjYTdhMDIwM2QwNDY5MzdmNWMzYiByMjNiMS1icmFuY2gKKzMyNTI3IDk5ODgxYjZlYTlmN2Q5ODBiMTQxNzU4ZjJiMGI4NjlkYTY2MzQ4NjQgcjIzYjEtYnJhbmNoCiszMjUyOCBhMzQxOTc2ZmY0NzZkOGQ0Y2QxMWRhM2JiNDIxMDc1Mzg1ZGVmMDBlIHIyM2IxLWJyYW5jaAorMzI1MjkgYjE4ZDJmMmRiMThkMDkwYzYxOTBiMzMzMmUwMTUwYTFhN2Q0M2RkMyByZWxlYXNlMjItbWFpbnQKKzMyNTMwIDg5ZTM1Y2RiZWNjYzBjZjE5MmNjZjliMmM4ZDBhZWRjNjQwNzExZmUgbGVnYWN5LXRydW5rCiszMjUzMSA2ODczMzc5YjhkOGM1YTA3MTUyNWFjNWUzNWM4ODMyMjcyM2YwZDJmIHJlbGVhc2UyMi1tYWludAorMzI1MzIgZWE3NzcyNzMyZGExOWMzMTQ3ZmJlMGU4OTFkYWFjZjFkZWMzZWQ4MyBsZWdhY3ktdHJ1bmsKKzMyNTMzIDQ5NDg2YzU0NGFjZGQ1NjE3MmFkZDQ2ZThjZDI3YjIwOTRlNmIwZDIgbGVnYWN5LXRydW5rCiszMjUzNCA2NzFlNGUyZWVjNGJhNzNlODRhODU4N2M4ODJjZDBlMTY4YmFjYTMwIGxlZ2FjeS10cnVuaworMzI1MzUgYWY1MzcyOWQzY2RkNjQxMTk1MjI1NDcwNjM5NzAwMzJmYzVhZTkwYyBsZWdhY3ktdHJ1bmsKKzMyNTM2IGU0ZWFiZTViM2RhMTNkNGZhYTNkMjcxYzNhMDM4ZTVhYjlkZTdmMjYgbGVnYWN5LXRydW5rCiszMjUzNyBkMzE2NGEzMDQ1OThiMTRmMTRkYTkzYmExZGE0YWZlODBmN2U1NjU1IGxlZ2FjeS10cnVuaworMzI1MzggOTZiNmNjNWQ0MDhiODRkMjVmMWVmMjYwMWFkNGZmZTIwMWFmNzQ0NyBsZWdhY3ktdHJ1bmsKKzMyNTM5IDM5ZjRiOTdjZTgyODE5ZGMyZjExMDNhMDVhNDdkZDJkNDNkZjg4MTYgbGVnYWN5LXRydW5rCiszMjU0MCBkNWUyOTFmMGFlMzk1NWNhYTdkNzAwMWI3MzAxOGVlNjk4MmY1NWMzIGxlZ2FjeS10cnVuaworMzI1NDEgMzVjOTBkOWNjMzEzNTc1MDZhOGQ4Njc2Mjc2YTdkYzc4NGJiNDA5ZSBsZWdhY3ktdHJ1bmsKKzMyNTQyIGQzMGE2YTU3NDk3OWM4YjZmMTY1YWNkMmM1OGFhZGU5YTIzNWU0ZGYgcjIzYjEtYnJhbmNoCiszMjU0MyBiYzEzNWQ3YjdkZjE2ZmI3YWMxZGEwNjA1YjBmZThmM2IxNzQyMzk3IHIyM2IxLWJyYW5jaAorMzI1NDQgZWRkY2I3OTBlZDhkOGJkNTFmMTkwNzY2NjljMGM2MzQyMzY2NTZkOCBsZWdhY3ktdHJ1bmsKKzMyNTQ1IDJkMDY5YzE2YzhiMmQxOTEyODU3Nzc2OTQxMDRjNDViNTNkOTdhMzUgcjIzYjEtYnJhbmNoCiszMjU0NyBkMWNkZTNkYWY5YTllNjE2NjdlZjc2ZmM5ODRkODhmNDIzMzk1NzQ2IGxlZ2FjeS10cnVuaworMzI1NDggZjQyMzgwMzYwMDBjNDU1NmM0MzliZGMxODk0NzI2MjgxMDc2MjU4ZCBsZWdhY3ktdHJ1bmsKKzMyNTQ5IGI5YTMwNzNmOTM5MjhjMWI4MDExMjRiZjQ3YjZlODM1NTg0MGUzZTUgbGVnYWN5LXRydW5rCiszMjU1MCA4MWQzNzNlNTg5ODM4YzMzOWUwMzJlNmVjMTcxMWQ4ZWMxNjc3Njg1IGxlZ2FjeS10cnVuaworMzI1NTEgMjM3Zjk3YzcxNjkxYmYzZjg0MGY2ZmNkMjRjZWU1ZTRlYjg2ODY1YSBsZWdhY3ktdHJ1bmsKKzMyNTUyIDA4MWVmN2I2YmUwNDM3NjgzN2ZiMjQ1YTI3MjJlN2RiODc0MWFiOTYgbGVnYWN5LXRydW5rCiszMjU1MyAwZTM1YzE1OTc0MWI1NzFkZTUzMTA2YjVkZjVhZTcwODc2MzZjZThjIGxlZ2FjeS10cnVuaworMzI1NTQgYWFiMGRiZTNjMDA4MWZiZDg0YTlkZmVkZDZjYjI4MWJhNjgwNjI3YiBsZWdhY3ktdHJ1bmsKKzMyNTU1IDAzOWFiMzFlMTAzNDc3OTZiNGI4MDY4Y2FhYzRmMjIwMmM0YWNhODEgbGVnYWN5LXRydW5rCiszMjU1NiA0NTI4Y2MwZWRiNmRhNTRmOTYzMDMzMWY4N2Y5ZTg0ZmU1ZTMxMmQ4IGxlZ2FjeS10cnVuaworMzI1NTcgMWQxYTg1ZjBlNWU5OTk4NTdjMTAzZjcyODlmM2RjNDk5ZDEyMzcyMyBsZWdhY3ktdHJ1bmsKKzMyNTU4IGZhNTk1MGZiZTczNjc0ZDZlMDBjNWZhMTk3ZWUzYjc2MDY2MTUzZTggbGVnYWN5LXRydW5rCiszMjU1OSAxZWFjMWEzNWIzNzA0MjllNmJmNmE2YTFkMzdlZDJmZWI0MjdlNDAzIGxlZ2FjeS10cnVuaworMzI1NjAgZTRlNzJmYTRjOTE0MTJmMzYyNjgyNmUzMGUxZGQ4NzVlM2E3NDc2OCBsZWdhY3ktdHJ1bmsKKzMyNTYxIGNlOWUyYWU4ZDU5ZDY2NDE2YWVlOWEzZTUyNmJmM2Q3NGJlOTllOWYgcmVsZWFzZTIyLW1haW50CiszMjU2MiAwNmFiZmM5YzY4ZTc3MjdlZmMwYzc4ZTY3N2JmNTFmZWE5YTdmZDI4IGxlZ2FjeS10cnVuaworMzI1NjMgNmE1MWQxMWZiMWU5MTVmNzZhZDQ4YTQyNGM5YzNmN2UzYTMxMjcxNSByZWxlYXNlMjItbWFpbnQKKzMyNTY0IDk2ZWVlN2QwNGQ4ODQwN2Q3Mzk2NjZlODRkOWNhM2NiMWVkM2FkMDYgbGVnYWN5LXRydW5rCiszMjU2NSA0ZWYxMDhmODE4MWYzMGM1NGU1OTI4NjlmMzNjNzhlODY1ZGEyMTgyIGxlZ2FjeS10cnVuaworMzI1NjYgYjA0YzA3NDU4NmFhNDI2NjM0YWU0YzMxZGE0YjkzNDI0ZjlhMjNlNCBsZWdhY3ktdHJ1bmsKKzMyNTY3IDMzNDc1NjYxODIzZDM3M2Q2NWNhOTM1MTdjMjdhNTdkNjJmZGJhY2MgbGVnYWN5LXRydW5rCiszMjU2OCBmYTAwNjM5Mjg1MTgxN2MzMDhmYTI2MmY3ZjYxNjQxMTkyMzU5NGZlIGxlZ2FjeS10cnVuaworMzI1NjkgMzlhZDc2MTQzMjg4YmEyYWFkYzI5YzM1NGNjZWNiMmJkNDE2NTg2NyBsZWdhY3ktdHJ1bmsKKzMyNTcwIDE3NDFhZjQ4ZmQ5ZjNlNjlmYTM1NTkyODNjZGU2N2U2Y2E5MjFhN2EgbGVnYWN5LXRydW5rCiszMjU3MSA5Mjg3Mjc4OTE2ZTNjNWYxZjFlN2Q4ZDNlYTJmNGU1YzU1NzE5OGY4IGxlZ2FjeS10cnVuaworMzI1NzIgZjJjNzRjZmVhMDUxMjQ3NGFkYjIzNjM4Zjg4ZTUyZTQ1MzdjZTQ3OSBsZWdhY3ktdHJ1bmsKKzMyNTczIDAwZmMxMzhkODU1NjU4Nzc0OWJiN2E1MjY1ODFmOTRiYjdmNDc5MDUgbGVnYWN5LXRydW5rCiszMjU3NCA4ODhhMzExOGUwZDQyMjg4YWViMTczMmQ1ZjNmMTdiMmZkNGY5ZTlkIGxlZ2FjeS10cnVuaworMzI1NzUgMTE0OTUwZWU5YWE3MzNlZTJjMDFmZmMzZWM4ODBiNDU5ODYzZDkxNiBsZWdhY3ktdHJ1bmsKKzMyNTc2IDgzNTMzMDE2YzI4OTcxNjVjYjRmN2E2NmFjYzBkNjYyNmIxYjRhNDkgbGVnYWN5LXRydW5rCiszMjU3NyBiM2IyODQ0MzZjMjRhMjBhMzgyOWY5NzBiNjY3ZDM0NDBmNTUzN2JjIGxlZ2FjeS10cnVuaworMzI1NzggYTc2OWUwNzliYjEyZmY4M2VjOTdlZjM4MDcxMzExNzM2NzdlZGRjYiBsZWdhY3ktdHJ1bmsKKzMyNTc5IDc4M2RkZGUzNzkyYjY2OTQ4NjRlOTQ0YWU2ZGIxODRlZTkzZjU2NDIgbGVnYWN5LXRydW5rCiszMjU4MCAwYTE4MGVlMjQ3M2JkOTllYzRjZDZmYmU0YWJmM2E1ZDhkYjYzYzc5IGxlZ2FjeS10cnVuaworMzI1ODEgYzc5OGQyOGRlZTQ2YjE5ZDE2MTI2MGU3YjQxNDMwYTQ2M2U3MGY4OCBsZWdhY3ktdHJ1bmsKKzMyNTgyIDkyYTFlNTg1YWJmNzYzYWMzNTE2NDJhYTJkYmNiYzZmNTJjNWE3NTcgbGVnYWN5LXRydW5rCiszMjU4MyAxODA4MmIyZDJlYmRmMTViM2ZkM2I5ZmI1NDdkODAzYmQ4NzMzNjM2IGxlZ2FjeS10cnVuaworMzI1ODQgYTQwYjU2NzFhNTYzOTIxZDI5ZDA1N2RmYjdhMjBkNDVjYWY3ZmUyZCBsZWdhY3ktdHJ1bmsKKzMyNTg1IDZhMzExN2RmNWUxMzEyNTlhZTQyZjllMjgwMGExMTEyYjk2MDMzYzYgbGVnYWN5LXRydW5rCiszMjU4NiBkOTE4MjFkOWQ0NzA5NjcyYzBiYzY5NTUxY2Y0NDM0YWUwYjA5NjBkIGxlZ2FjeS10cnVuaworMzI1ODcgOTljZjMzNjhkNjg3ZWE4OWU3ZmE2NzNjODQ1MTc2NjQ1MDA5ZWE1NSBsZWdhY3ktdHJ1bmsKKzMyNTg4IGExMTRlZTc0MjY3YzczMTMwYjU4NzBkOTYyYjUyNjY5YWVjYTZjZTUgbGVnYWN5LXRydW5rCiszMjU4OSAyZWVlOTY1NWQ3MWIwZjg5NmQ2YmFjOWJlZTc4YjIwNzM2MDk3Mzg5IGxlZ2FjeS10cnVuaworMzI1OTAgYzVmMThkYjFjOTY2MWQ1ODA3MjUzMzY5OTU3OGIyZmJjNGRmZjg1ZCBsZWdhY3ktdHJ1bmsKKzMyNTkxIDVkNGQ0ZWJmZDMxNzFlNzUzNWM5NDE4N2M4NWM3YTg4N2M3Y2FkMGIgbGVnYWN5LXRydW5rCiszMjU5MiA0NzU2ZmE1Mzg1NjA2ZmIxMjJmNWU5YTdkMTY3ZDlkZjNmNTU3ZjE5IGxlZ2FjeS10cnVuaworMzI1OTMgZmEwNTc4MjRjOWI0YjQyN2QwOTRhMzllNTQ4MTYwY2E3NDRlYjQyYSBsZWdhY3ktdHJ1bmsKKzMyNTk0IDA1ZGE3NzI2YzAyN2U0N2YxMTA5YjE3YzliN2VkNTRjODM4ZWUwYjggbGVnYWN5LXRydW5rCiszMjU5NSAzOTM0MjlhNmZhMTZkMWQ5MDQ4NTdlYjVkYTYwOTY0ZTYxYTRlYjIwIGxlZ2FjeS10cnVuaworMzI1OTYgZTA1OWE4YjExYjllY2NiMTAwNzJmNzY5OWU0ZWE0OWRlYTM1YzI2YiBsZWdhY3ktdHJ1bmsKKzMyNTk3IGZhZjJjYjUwNzBiNGM4ZDEzYjdhYzU5YTVmOThjZjc0MTZiZjJmNGMgbGVnYWN5LXRydW5rCiszMjU5OCAwMDFhOTA1NTU3ODA4YTE1ZTg0MzliNTgzYzFmZWM2OTg5YWU3MmY5IGxlZ2FjeS10cnVuaworMzI1OTkgZGJkZWI3MzRmZjk3OTlkYTgxNmM1OTM2YzVjNDM2YzQzMWZkYWMxMSBsZWdhY3ktdHJ1bmsKKzMyNjAwIDhkZjg5N2YxNGZiODYwMjZmMzQ0NzliMmUwOTY5YzgwZjRiYzRkYmQgbGVnYWN5LXRydW5rCiszMjYwMSAzMzU5OGU4ZTQ5YjIwYmE0YjVhNzk5ZDJhMWJjMjgyMDJiOTgzODgyIGxlZ2FjeS10cnVuaworMzI2MDIgYWM0ODdhN2Y3ZjJjNzcwOTc1NzhiZWQxYzhiODlmY2M3YzNhNTQ2MCBsZWdhY3ktdHJ1bmsKKzMyNjAzIDNhOWY1ZjBjNTEyZWI0OTgwZWMxYWM4MDlmYWY2Njc0YWZlZDU2YjAgbGVnYWN5LXRydW5rCiszMjYwNCAxOTY0MDEyZjZmYjBkMjNiZjhkN2JhMzk5YmI1ZTg1NzRhMjYxYzIwIGxlZ2FjeS10cnVuaworMzI2MDUgNmM0YTA0Y2U5NjVjMjU4ZjNhOWJiMGY5NGQ5MWVjMGNhZDdiOTVlYyBsZWdhY3ktdHJ1bmsKKzMyNjA2IDA5NDIyYzMwMTgyNjViODVhODBmMDA4OTNlMTZhMjdkNWUzNmM5YTQgbGVnYWN5LXRydW5rCiszMjYwNyA5ZDVhNzU5MTY5NzEwOTU4MGM1OGRlZjYyYzkxN2UwN2U2NTFlMTVjIGxlZ2FjeS10cnVuaworMzI2MDggMTc2M2Q5ZDNmZDlkZmVlY2Q2ZDZlMjdiZGI1NjdmYTE0Yzg2YmU5YyBsZWdhY3ktdHJ1bmsKKzMyNjA5IDliNGZmNGJmMDMzYjgxNjQ3ODI2YWVlOWZjYjE3YzdlMTI1NmNmNWEgcmVsZWFzZTIyLW1haW50CiszMjYxMCBiYWVhMzE4YmU0OTljZGZjNDliNTU3YWRkMTFjZTgzOThiOTQzMmQxIGxlZ2FjeS10cnVuaworMzI2MTEgMjViMjIxOGRhMDliNTlmOTZiODk2ZWU2YjQxMGE2OGEyODAwMTE5NyBsZWdhY3ktdHJ1bmsKKzMyNjEyIDM1YTRkNzRiNWI4ZWQ5OWJkMTcwNTFmMDk3ZGIxOTIzYzY2MTZiOWQgbGVnYWN5LXRydW5rCiszMjYxMyA2Y2E5NGFlYjI5MmFjNDc3OWEzMGY3NmJiYWRjMzVlNjA3OTJhODY5IGxlZ2FjeS10cnVuaworMzI2MTQgYWMyOTAxNWZmNmE4MWVmMDQxOGRhMTk2ZDg1OWRiNGY5MzgwYzlmOSBsZWdhY3ktdHJ1bmsKKzMyNjE1IDE4OWZkYWU4ZjQ5MmJmNmNlZDNkNWFlMGIxNGEzMmMyOWY0YTY1MTMgbGVnYWN5LXRydW5rCiszMjYxNiAyNWU2NjBlNzBkY2QwNjFlOTk4MmIwMzc4YWJmMzZmMDM2N2MwYWEyIGxlZ2FjeS10cnVuaworMzI2MTcgMmU5OTU2ZDAxZGUzMzJmN2QxMmYyMTg0ZWIwZTkxYTY1NDcwMjM2YyBsZWdhY3ktdHJ1bmsKKzMyNjE4IDRiYTc2M2JjNWE1NjBkYzU3ZGQxODBiMmQ3NWQ1NmU5NmI1N2I3ODIgbGVnYWN5LXRydW5rCiszMjYxOSAzNTBlZTMxYWFiMGMwMjQyNDczZDUwYWM5MGZlMzNmYWZlMDRhZmVjIGxlZ2FjeS10cnVuaworMzI2MjAgOTk1OWQ4ZmE0ZGRmMGY4YzA0MDk2MGVmMTBhY2NlNmNjOWFhZTBlZCBsZWdhY3ktdHJ1bmsKKzMyNjIxIGIxNzRkMDkyN2YwZTI1Nzk0OWM5YzEzYmZmN2Y0MzVjMmMwNDUzN2IgbGVnYWN5LXRydW5rCiszMjYyMiBjOWM2YmE3OTUyYTgyMjdhYThkM2IyYjkyNTliZGFiZGVhZWM5NjJlIGxlZ2FjeS10cnVuaworMzI2MjMgOWY5MDIyYzIxMDU2MjM0OWY0NzAxODc1MTg5MzY1ZTY3YjY0NDFlMCBsZWdhY3ktdHJ1bmsKKzMyNjI0IDY1YmY2OWY3YzE0ODlkODg0OGFiMjQ2YmUzYmM1YWQyNjRkYWFlYmIgbGVnYWN5LXRydW5rCiszMjYyNSBjOTI0MTJkNjM0YjEwYjMwMDI4ODdmNDIzNTBjODg0YTNmMmUwMjg2IHJlbGVhc2UyMi1tYWludAorMzI2MjYgNjhmMDQyZmFmYjdkZDA5YmRmYzI2ZmIzNDZmZTQ2NGNjNWUwZTBkNiBsZWdhY3ktdHJ1bmsKKzMyNjI3IGJiMTc3MDlhMzdhM2FjMDc0OWVjMTJhNDEwMTc0MDFjYjIxYjFiMmYgcmVsZWFzZTIyLW1haW50CiszMjYyOCAzZTg4Y2ZmMDU4MjJmMmMxYjU4YTVjYzA3NDhmYmNmOThiOTFlM2YxIGxlZ2FjeS10cnVuaworMzI2MjkgNGJmODY1MThkOWFlNTAxODIwNzBmNWVjZjAwODgwM2U1N2NjNTQ0MiBsZWdhY3ktdHJ1bmsKKzMyNjMwIDRjMTM5MTY4NjQ4YzZhZGUzYzMwMWFhODg5YzI5Njk3MzM0MzBlNGUgbGVnYWN5LXRydW5rCiszMjYzMSA4M2ZlMGY1YzkzNTk3Y2M2YzE2YTU2YTAzMjFlODI2ZmM1NjFiZDUxIGxlZ2FjeS10cnVuaworMzI2MzIgY2ZjYzQ1ZjE4NTE1YTBkYTdlZWRhYTkzYmI2NmU3ZjBkNTIyZWQ0MCBsZWdhY3ktdHJ1bmsKKzMyNjMzIDU4OTJjMWU1MTViNGRhOWUxMDc0OTU3OTU0MzY2ZjQ2NDY0OGExMDUgbGVnYWN5LXRydW5rCiszMjYzNCA4MTVmZjBhYjI0ZTcyOGMxY2I2ZGMwMDkzZGJjMTMzNzNjMmM5MTA4IGxlZ2FjeS10cnVuaworMzI2MzUgMzEyZjExODZhYTM5NDU4MWI1YjE0NTAxNzQ1YTJkMDQxZjgzNTM1OCBsZWdhY3ktdHJ1bmsKKzMyNjM2IGE1ZGQ1NzQ3Y2RmZTI2OGQ0YTU2YzVmMWJmNjE5M2U5MWU5OGU0OTcgbGVnYWN5LXRydW5rCiszMjYzNyAxN2JmYTc4NjA3NWFkY2IzMDEwODg2ZTRjMDQyODFlNWI0N2E4M2NiIGxlZ2FjeS10cnVuaworMzI2MzggYjU0YTg0ZDI5YzAwMDE2ZGVhOGJmZjIwMzU4Yzk1ODFiY2QzMDhkNCBsZWdhY3ktdHJ1bmsKKzMyNjM5IDQxMzg4ZTg0MjYxYjI0MmE2MmJmZDA1MDRhODEyMWQzMzA5Y2VjNWMgbGVnYWN5LXRydW5rCiszMjY0MCAyMjJjM2QyZmU0MzFiMTM3MmJjOTcwMDlmMjc4ZDYzZGExMDc4MDY1IGxlZ2FjeS10cnVuaworMzI2NDEgODJmZTNhOWFjMzcxZDQzNDZhY2Y2ZWZlYWY2NDdkYmM3MzY0NTJhMiBsZWdhY3ktdHJ1bmsKKzMyNjQyIDYxZDNmOGU2NmQ4ZmMwNjAwOGRkNzk1NDBlYjI1YTM4NGFlZTExOGQgbGVnYWN5LXRydW5rCiszMjY0MyA0OTNmZDdlNTIyMDZhMWFlNWEwNDQxMDdjMTY0NTUwNTQ5ODhhYzVkIGxlZ2FjeS10cnVuaworMzI2NDQgY2U2YzNjYzQyMmFiNTE2Mjg0NmFiZGI0ZmZlYjI2NGYyMTdlNGE5YSBsZWdhY3ktdHJ1bmsKKzMyNjQ1IGIzNzAyYjY4M2YyYWQyYmU2YjIwYWM3Y2VhMmUxNzY5N2NjNTRlMTYgbGVnYWN5LXRydW5rCiszMjY0NiBmMWZjYWM0Y2FiYWQ4NmZjYTkxMDBjMDczMWExYzllNzkwMjczZjg0IGxlZ2FjeS10cnVuaworMzI2NDcgZDU0NjEwZjRmMjYxZGNiOWUxNjk0NmFmYzkxYjVhODI4NWQzOWMyMiBsZWdhY3ktdHJ1bmsKKzMyNjQ4IDZiMDdmMzY5Y2YwM2RhZDg0MjZjZjVkN2IwMjMzNzIwMTBmZjE5NjUgbGVnYWN5LXRydW5rCiszMjY0OSAzODBhOWE1YWZhYTBiZGIyZjVmNjhjYWQ5OTcwMmE0ZDZhMTQ4YzAyIGxlZ2FjeS10cnVuaworMzI2NTAgZWQ0YjA5OGM3YmNhMWQ5OGFmNWJmNjZhNGE5NWRiZjA2NGNkZmQ0ZiBsZWdhY3ktdHJ1bmsKKzMyNjUxIDZmY2E2ZTA3YzJmYTlhNmY1YTZhMzM5MWI4OGE5YjU2Mzk0YjA3Y2MgbGVnYWN5LXRydW5rCiszMjY1MiBlMTA3YzkyMWI4ZjMzMTE2MjFhZjY1ZDczMWRhMmE1YzhhYjMwMGYzIGxlZ2FjeS10cnVuaworMzI2NTMgNTA5NTM3ODM5NDI0NmFmZmIwMjc0YTdmMjdiZGMwZjc5YzYzNGU0NiBsZWdhY3ktdHJ1bmsKKzMyNjU0IDZjNDBiNzNjNzA0NTdlZmJjZTE2OGY5Y2Q1NzMwODE4Zjc1MDE4YzggbGVnYWN5LXRydW5rCiszMjY1NSA1MDg0MTg5OGNjMTljMGFjMzU3ZDUwMWYyMDYxNDc0N2VkZGExYjliIGxlZ2FjeS10cnVuaworMzI2NTYgMDEzZDk1YzM0NmQyMzU1NDMyZThkMTdjNmY1NjNjMDYzNmEzNTUzYSBsZWdhY3ktdHJ1bmsKKzMyNjU3IGEwN2RlZjBkYzc4NTFlYTQ4YzViMTZkNGE5MmZjZTg3NzdlNDljYjggbGVnYWN5LXRydW5rCiszMjY1OCAzMDU1YzliZGZmNWY1MTE5YTYwMjhkZGM2Y2RiNzYzMDZjZTIyZGY4IGxlZ2FjeS10cnVuaworMzI2NTkgZjllNmY5ZmI4ZGYwYzVmMjA1MjQwZGRhYmMxN2Q3YTdkOGQyZjEzZCBsZWdhY3ktdHJ1bmsKKzMyNjYwIGEzYjI2MTBiNTA0MWE5MmFhZTdkMjUxY2Q1ZmFmZWNkYThiMGNjNDcgbGVnYWN5LXRydW5rCiszMjY2MSBjMjdhNjRiMzg3NjI3ZjFiYmRkYTQzMmZkNWU2MTRjZjEzMWY0M2M1IGxlZ2FjeS10cnVuaworMzI2NjIgZDJhZmEwMGMyMGUzYzRmZTcyNTIwZmE0ZjdhOTg3MTY3NDdhMGY0ZCBsZWdhY3ktdHJ1bmsKKzMyNjYzIDliNzE2NGNjMGM5MjY2ZWQ2ZTIxYzVkMzdmMTEyMmU1ZTI4OWM2MjEgbGVnYWN5LXRydW5rCiszMjY2NCAwNDYxMzE2MWEzMmI2YmFmZmFjMDZmMTczZWQwNjZjNzhjMWFlOWYxIGxlZ2FjeS10cnVuaworMzI2NjUgZTY5Njg4ODZhOTdkYTE5MGY4NWQxMjliMWZjYmE5MGU5NDY4OTk2MiByZWxlYXNlMjItbWFpbnQKKzMyNjY2IDE1N2EyOWUxOWViOWVjNzhjMjVhMzA5ZDM1ZTVjNmIzMDZjMDM3YzQgbGVnYWN5LXRydW5rCiszMjY2NyAwNjdhOTgyMzI5YWNjMzM4NmE4MDdiMzYwNzJkYTEyMzY3NzJmMTMwIGxlZ2FjeS10cnVuaworMzI2NjggZWVlZGFjNDllODZiMzg4ZmIyM2MxNTEzNTcxNzE2ZDc0YTU3NTdlMiByZWxlYXNlMjItbWFpbnQKKzMyNjY5IDEwOTgxMGExYWRhODYwNmYyODAzMGIzY2Q3NDM5ZDNjZDc4N2VhZTAgbGVnYWN5LXRydW5rCiszMjY3MCBkNGY2NTQ0Zjc5YWNlNDQxZGE3ZWI3NDdkYzY3YTMzMWM5YjM4NjUyIGxlZ2FjeS10cnVuaworMzI2NzEgMTNkOGYyOTczN2U1ZGUyNjgyNzY2YmRiZWZhNWZmMjE3YzU0MmM4NiBsZWdhY3ktdHJ1bmsKKzMyNjcyIGRjM2YzZjMwMzhhOGNmYTk0ZjE4YWUyYWZhNTI3NzEzOWRiZTFlZTQgbGVnYWN5LXRydW5rCiszMjY3MyAwODlmMjQyMWViMThhMGJhYTgyNGU4OTcyOGIwZmFjYTRmMDEzNTVmIGxlZ2FjeS10cnVuaworMzI2NzQgMmY2NTJhNTllYmIwMWY4MmRmMzFlZTc3NTIxYzFjYTk1MTQ3MjJlYiBsZWdhY3ktdHJ1bmsKKzMyNjc1IDJmNzQzZGU4YzVlMmEyYmY3M2M3ZDE0MGEyNjgxZDhjYTc4NmMzM2EgbGVnYWN5LXRydW5rCiszMjY3NiBjYjgzMmMyY2Q1NGQ0YWE3OTc3MzZhNWFiNTg2MjMxY2I2N2Y5OTJiIGxlZ2FjeS10cnVuaworMzI2NzcgM2Y3MGQ3NWNkMjhkYWNiYzRjNjM0ODQ2ODkxOWZlNzJlYTNlM2RmZSBsZWdhY3ktdHJ1bmsKKzMyNjc4IDRkZTAyZjE4YTQxYjQyZWJhZWNiNzY0ZmU0MjAyMDViYTE3NjQ3ODAgbGVnYWN5LXRydW5rCiszMjY3OSA1NzRiOTU1MWNmYzllNjE5ZmJlMTUzMzQ0MDJmZWFlMDAzNzNiZWVmIGxlZ2FjeS10cnVuaworMzI2ODAgNmJiYTQ4ZDFjZTNiYjA2OTdiOGVkN2QwZThjMzY4ZjFjY2FkNjNjNiBsZWdhY3ktdHJ1bmsKKzMyNjgxIDFjMmU2MDNmZWUwMjMwZWQ3NWY2OGI3ODc2YWNiZTJkNTNiN2Q2MjkgbGVnYWN5LXRydW5rCiszMjY4MiA0YWVhY2FkZTY2MDA5YjE4NmZiNzE5YjNiMGZiZTQzMGI1YTU1ZTU2IGxlZ2FjeS10cnVuaworMzI2ODQgZDVlNDg3MzYyZDNhZGQ0OTY1MDU2ZGRmMjJjMDZmZGQ2OTU1Y2IyOCByZWxlYXNlMjItbWFpbnQKKzMyNjg1IGZiMTE3ZDdmNTk1MGM2NGI0ZWNjMDI1NzhlZjU3MDA5OGRmZjFlN2EgbGVnYWN5LXRydW5rCiszMjY4NiAzZjIxNGMyNjRmNjNkNWJjNDAwNjQ3MjNmNTQxNmE1ZmZhZTBiNzIxIGxlZ2FjeS10cnVuaworMzI2ODcgMTNkYjViN2RlMGRkZTc1MjNlYTE1YTQwNjc3M2Y1NjhjZTAxYWY2OCBsZWdhY3ktdHJ1bmsKKzMyNjg4IDY1NjQ5MzUzNGNjNzc2NmFhNjFmNjk3MjM2NDI2YzczZmFiYmJhNzMgbGVnYWN5LXRydW5rCiszMjY4OSBlMWQ1Y2E4YWI3ZGM4MmM3MjYzOTgyMTE5MzhhMjdiNzJiNWViNmY0IGxlZ2FjeS10cnVuaworMzI2OTAgY2NmN2UxMzhhMTI2ZGQzMGZjZjJjNjBmNjJhMzdmYTYwMDc1MWJiYSBsZWdhY3ktdHJ1bmsKKzMyNjkxIGRiOTA4NDNiMDBmY2RiODM0MjhkOTQ5ZTM3YjBiM2E0MGRkNDkzMTEgbGVnYWN5LXRydW5rCiszMjY5MiBkM2MxYTAzYTUxMzA4OTA0ZjM1Mzg5YjJiN2M0ZjcwZjEzYmMzNjY5IGxlZ2FjeS10cnVuaworMzI2OTMgNTliMWIzZTJhMjNiNWU5NGMwMjdhZDk4ZjcyMTRlZDUzMjc3MDIxYiBsZWdhY3ktdHJ1bmsKKzMyNjk0IGVmZjg2Y2Y4ZjNiYjNlN2VkYmUwYjQ4Y2I5MjMyOTBjODMyMTY0ZWEgbGVnYWN5LXRydW5rCiszMjY5NSA4MTA4OGRmMGIxZGYzNjQwZTg5YjRkNWNkOTY0NWYzYmQ4MmY5ZmQxIGxlZ2FjeS10cnVuaworMzI2OTYgMDU1OTg3N2FkYTVjZjMwOWE2MDNkY2Q5NDY1ODVmMjhjMzlmMTAyNCBsZWdhY3ktdHJ1bmsKKzMyNjk3IDhlNzlkYzM3MzFiZmZjMjZiOWNhOGRhMzZhMDMzNTM1M2Y5ZmE5YTIgbGVnYWN5LXRydW5rCiszMjY5OCA0MzAwMjIzM2NjMmNkYTAxNDNkOTRhNjMxODdmYmMxOTRhNjI2M2E0IGxlZ2FjeS10cnVuaworMzI2OTkgZGU1NjRhODczM2QyMjc1M2ZlODMwOTJkMmJlZGQ3ZDQ0ZTJmZDQ0MiBsZWdhY3ktdHJ1bmsKKzMyNzAwIDU4YzhlMjg0NTFhOTc3ZTBmYTRhNjcxMGMzYTM1MmI0YzI5ZjRhODAgbGVnYWN5LXRydW5rCiszMjcwMSBkMDZhZGI1YTNjYzk2ZGZmZTNiYjkwYTk5Njc5YmJhNGQ3ZmQ3NTZiIGxlZ2FjeS10cnVuaworMzI3MDIgNTRmMWZmYTM3NDI5ZWFjN2E1MDE5OGMxNTlmY2FlOWQ5NzdkN2JjZSBsZWdhY3ktdHJ1bmsKKzMyNzAzIDA2NDQxOTc3Mzk1NmI3MDk4YmQ0YzM5NzMxOGMyN2RhYTdhZWFiNjEgbGVnYWN5LXRydW5rCiszMjcwNCBmMjc4YjI3ZWYxMDVkMzRlZjQ0NmE0MGRmYTBiYWNkNjM1MTgyNGU5IGxlZ2FjeS10cnVuaworMzI3MDUgNzc1MGI4NDYyYThmYzQwODZmN2Y5N2UzZjhkNTRlNTcwNzdhMTJkZiBsZWdhY3ktdHJ1bmsKKzMyNzA2IDE0M2ZmZjhkMjE4OTlkMDkzZmZjODYyZTI4YmFhNzIxMmJkZGY3MWEgbGVnYWN5LXRydW5rCiszMjcwNyBjZmZiNTE3ZjRlMTVmOWQ2Yzg1MGM3Y2U0ZGY2Njg1ZmIyNDgzOThjIGxlZ2FjeS10cnVuaworMzI3MDggMmIwYzBiZGE1Y2NhN2I2ZWE3MzUzMTVlZGYwZWRmZTNlZWNiNmM3MCBsZWdhY3ktdHJ1bmsKKzMyNzA5IDZkYzgyZGNmNTU4OTI2MDJkMjRmYjgzZDc3YWJkZDNlNTNiNTcyYmYgbGVnYWN5LXRydW5rCiszMjcxMCA0NWJmYTZkNTkxZjdjYTRhNTJhZDQ5NzAwYjAyNjljMTY3YzE4YzkyIGxlZ2FjeS10cnVuaworMzI3MTEgYmFlNjdlNDE0YTEzYTQyZjA5ZGVmYzY3NTNjZmEwZTAzYzMzMDRiMCByZWxlYXNlMjItbWFpbnQKKzMyNzEyIGUwOTM5OWUzYjJjMDkwZGY0OWVjM2JkYTY0YzQ1MDE0ZGFiYzdkOTYgbGVnYWN5LXRydW5rCiszMjcxMyA5MmViZDNkYWY1MDcyZWYzMWFiNWRiNWZkNjc5NmQ5ODhlMzhjMzI4IGxlZ2FjeS10cnVuaworMzI3MTQgOTgzNWI0MTEzM2FjMDZlNjk2OGFlMjVkOGFlNGZkYmU5NDFmNmIyYyBsZWdhY3ktdHJ1bmsKKzMyNzE1IDFiYWJiYjQ5MTlhN2YxN2QyZmRiZTlhZjcwM2FhNjQ1MDI2OThmYzMgbGVnYWN5LXRydW5rCiszMjcxNiBjMDE5YWE4MjdmODYwNTY5NzZkMjkxMDBlZTAwMjgxZjdmMmQ5MzgzIGxlZ2FjeS10cnVuaworMzI3MTcgYWI3ZGM1MzhmNmY3MmQyOGEyMWI5MmVlYzA0NmM1NTg3M2IwYjFhNCBsZWdhY3ktdHJ1bmsKKzMyNzE4IDhlOTJmMmUyYmRhOWY1YjBjMGZiMGI4ZTA1MGVhMzI5NTY5OGVkOGMgbGVnYWN5LXRydW5rCiszMjcxOSBiZjE2MzRiMDIzZDVhZWNlYjg0OGQ5YTcxN2EyMzhlOGJhOWFiODQ3IGxlZ2FjeS10cnVuaworMzI3MjAgOTAzNDJmMzk1NzIxZGY2NGUxOTBjNmVkODFmOTU2ZjVjZDRmNTE5OSBsZWdhY3ktdHJ1bmsKKzMyNzIxIDA0MDY1YzRhMWM2YjVhZmU1Mzk4YTA5YTkxM2UwMzY3YmVlOTcwNDkgbGVnYWN5LXRydW5rCiszMjcyMiAxYzg0OGU5ZjYxNjYyMzFjMDdlY2RhZjg1MTQwY2MzMjgwM2Y5NjdhIGxlZ2FjeS10cnVuaworMzI3MjMgNTY0ODk3MGM2NjVmMTdmMzhkODhlZTI4YjUzMmViM2ZkN2M5OWNkNCBsZWdhY3ktdHJ1bmsKKzMyNzI0IGIxMGE3ZmFjYzFlODg2ZGU4NDIzMjljMWJjM2E2M2ZlMTRmYmNhZDcgbGVnYWN5LXRydW5rCiszMjcyNSA4NWYxYTk0YWYzNzQyMjZmNDk0NDA5NDBlNjBmNWNjYmI0YjdlNmE3IGxlZ2FjeS10cnVuaworMzI3MjYgY2Q0ODkwM2U0MWJlZmNkZTE2MTY2N2Y2YWIzZjE3MDgzY2Q2ZGI1NiBsZWdhY3ktdHJ1bmsKKzMyNzI3IGM0ZThjNjcyMWU0NTY2NTNhZDE3Y2I4YWQ2YmJlZDAwZGIwZWYxMmUgbGVnYWN5LXRydW5rCiszMjcyOCA5ODhiM2U4MDcwNDM2ZGUyM2I1Njc2NjljZjg0ODcwNjUyY2RjZTg2IGxlZ2FjeS10cnVuaworMzI3MjkgMzVhMDlkYzgwODRjOWQwYWVmOTIyOTE0YTUzMTEyMGJmMDM5OTMzMSBsZWdhY3ktdHJ1bmsKKzMyNzMwIGFkODRmZTU4ZWMyZjhhZDc3YjY0NGE5MThjOTNhNGE5NjUyZGQ5YzMgbGVnYWN5LXRydW5rCiszMjczMSA3NTRjNDFiY2M4MWEyYzgxM2FjZTU4MGEyZWNhZTJjZWVkNDg4NThiIGxlZ2FjeS10cnVuaworMzI3MzIgNzhlZmJhZDUzZGQ4NmI3N2JhMzlmNzhhOTc4YWQ1YjUzZTkyMzAzMiBsZWdhY3ktdHJ1bmsKKzMyNzMzIGY1Nzc1MWZmZDZlNzhhYmVjY2ZkYTNlNjVhMDU1OGMyMDQ2NDIxNWIgbGVnYWN5LXRydW5rCiszMjczNCA0MzdiY2Q1MmNjMDQ1Y2Y2MzY2MGNiZGE4ZjA5NTcwNjUzYmNmMzg2IGxlZ2FjeS10cnVuaworMzI3MzUgZmYxMzZmZWY3MjMxYzQ3ZjQ0ZjAyMWU1ZDBiNmM1ZTIxMzlkNGJiZCBsZWdhY3ktdHJ1bmsKKzMyNzM2IDU0MGE3NzIwMjhkMjZhNTM5YzRjYmMzZDBlMzdhZGRhNWY5MjJjNGEgcmVsZWFzZTIyLW1haW50CiszMjczNyA3MDdlNWY4OWMyMTFiMGQ1ZWYxZWZhYjZhYTVmYmJmZDYyNTIyYTQ3IGxlZ2FjeS10cnVuaworMzI3MzggY2UxZDdlMTBmNDllOWQwY2E2NjMyYWUyZmNiMmEzMGM0OGY5MGI5ZiBsZWdhY3ktdHJ1bmsKKzMyNzM5IDVhMGJiNmVhYTc3NjE4ODBhOWQxMWE0OTg2NTE0NmIxNmE1MDk4OGMgbGVnYWN5LXRydW5rCiszMjc0MCA0MzJhZGQ4NGUwNjJkY2E5N2JjYmU3MDFiOWFlOWU1ZmFlYzgxYWJjIGxlZ2FjeS10cnVuaworMzI3NDEgNTI2ZjM3ZmIzODBkODY0NzA0ZjQ1YTI4ZmIwZTgxNjRhYzI4ZWM1MSBsZWdhY3ktdHJ1bmsKKzMyNzQyIDRiMmUwNWMxNzU0ZTZkMzM0YjcwYjIxYjE2OTM3ODU4YTExZDRkNjUgcmVsZWFzZTIyLW1haW50CiszMjc0MyBhNTcxYTlkNjI1N2EyYWQxYWQwNTdlMTM1NGJmMzFlMzYyYjZmMmNmIGxlZ2FjeS10cnVuaworMzI3NDQgNWJmOTYxODZkYjMxYzUzOTgyZTQyODI5NDJhOWU5MjFlMWQ1NTY2MyBsZWdhY3ktdHJ1bmsKKzMyNzQ1IDIyMDYwMDA0Yjk0YWVlZmEwOGE1OTU5NmUxMWYyMGFjZGFkMWNhMTMgbGVnYWN5LXRydW5rCiszMjc0NiA0YWUzYzJkOTg4OTBiZDg5NzQ2MWRjYjg3YjU4ZmEwMGM4Njc2OTQ0IGxlZ2FjeS10cnVuaworMzI3NDcgYTFkNTYzMTllZjBlYjM4NDA3MzEzZTM0MDhiMjI4YTE2N2U2YzQ4OCBsZWdhY3ktdHJ1bmsKKzMyNzQ4IDIyYjg5MGQxNTdmN2RiMWI2NmZjM2I1Yjc5ZjhmNzc3NWIzYTYwM2IgbGVnYWN5LXRydW5rCiszMjc0OSBjNWU5NjU1ZWJlZDcyYjkwZWQ1MmZiN2Q0YmI2ODgyODljM2RjOTllIGxlZ2FjeS10cnVuaworMzI3NTAgM2NkNWFlYzU5ZWQyM2RhNWVjNjRkNDAxNzYxOGZlYTc4YWIyYmU2ZCBsZWdhY3ktdHJ1bmsKKzMyNzUxIGU4YjU3MDkwNTJlMjVhMmQwMTBmYmVkNTA1YjM5ZGFmMmVjNTEwN2QgbGVnYWN5LXRydW5rCiszMjc1MiAyNDgwOTZhNDU3MzJjMWEwNTE1MzU3MzBmNDRlMTA5MTU0YTg0M2JhIGxlZ2FjeS10cnVuaworMzI3NTMgNWNlNjI5NjQyMTU1OWUxZDYyYjBlYWM4ZGJiMmJkYTlhMDZhODZlZiBsZWdhY3ktdHJ1bmsKKzMyNzU0IDM0ZDYzYjhjMjc1YmI5YzMwNDA3ZDU1ZmRiOWM3YjlhMDNmZWJhNmMgbGVnYWN5LXRydW5rCiszMjc1NSAzMmU3MGFkNzlmNjZkMGNmODdiNDhmYjIzNTUwNWJiMjFmNjVkN2Q1IGxlZ2FjeS10cnVuaworMzI3NTYgN2ExYWU0NzVlMGRhZDVmZmE5YjhlNmQ0Zjk5NGZhYmQ2NGNiN2I0OCBsZWdhY3ktdHJ1bmsKKzMyNzU3IDY0YTllMWJlMzI1MTNkNTg5ZmE0MDE4ZDU0NjNmMTEzNDE2ODg1NWIgbGVnYWN5LXRydW5rCiszMjc1OCBhNWU5OWU3ZTdmZjAzM2RiODVjNWVjY2I1Y2M4MTI0YTJkMTM2ZjQ0IGxlZ2FjeS10cnVuaworMzI3NTkgMTljNDE0MTg2YjllNTA1YjE3MjVmODA3YTExZTBmYWE3MTRmOTFlOCBsZWdhY3ktdHJ1bmsKKzMyNzYwIDkxZGUzYTA5MjRhMjk4YWQ5NTI4YjRmMzU0YWQyODk2ODVlMDFjZjUgbGVnYWN5LXRydW5rCiszMjc2MSA5M2M5MmYyMGI2YmZiNmRkMDI1NjMwNWZjMzJjZTgwODc5NTBlNjVhIGxlZ2FjeS10cnVuaworMzI3NjIgY2IwMDI1NDUxNDgyYmMzNjdiYWUzYTllMDBlODA4ZTQxNTFmOWYxOCBsZWdhY3ktdHJ1bmsKKzMyNzYzIGMwNmJmNmIyYjE5ZDkwMmNmOGFiOWVmYWVlMWMyYmFlOTFhYjc4NzcgbGVnYWN5LXRydW5rCiszMjc2NCBkNmJhODE5YTJmOTAxM2I1OGFlYjg1MWZlN2MxYTk5MjRiNDRmZTBmIGxlZ2FjeS10cnVuaworMzI3NjUgZjRkNDA2YWNmMWNhMGJkNTRkYjhkNzhmM2JlY2NhNzQzYThlZDYxOSBsZWdhY3ktdHJ1bmsKKzMyNzY2IDg1NDA2MDQ1ZjAxNGRkOWRkZTI4NWU1ODcyMmMyMzY4N2ZhNDA3ZDkgbGVnYWN5LXRydW5rCiszMjc2NyA1MjM3MmRjMTkwZmNmYmZhMDc1ZTc1NDUyY2FjM2MwZTY1ODg4YzZjIGxlZ2FjeS10cnVuaworMzI3NjggNGIwMjIwMjYwZjYyZTFmNGI2NDk0MGE5Y2VlNWMyODY0NTE5NDRmZiBsZWdhY3ktdHJ1bmsKKzMyNzY5IDRmODdhODRlOWJlYmIyOWZiMGRkODc2ZmQ3OWM1NGJjMDAzZTA3Y2MgbGVnYWN5LXRydW5rCiszMjc3MCAyNDc4NmMzMTMwY2E4NzZkYzRhNTljZWRjYTg5Njk4M2Y1OTg1YWI3IGxlZ2FjeS10cnVuaworMzI3NzEgNmFjMGE2NzJiMDgyMTNmZWU3MDg1ODk3NDBiNjE4ZmZmZTk0MWQ4NiBsZWdhY3ktdHJ1bmsKKzMyNzcyIGQ3YWMxYTY0MGQ4ZjljMDBjYTYyMjI0ZGZiZWE4NjM1Y2MwMTdlZTggbGVnYWN5LXRydW5rCiszMjc3MyA3ODc1ZmNhYWU3YTM3MTJmMWU0YmZmOGUzNzhlYmRmNzFmMThiOWNlIGxlZ2FjeS10cnVuaworMzI3NzQgYWRkZDQzN2JlNzQ5MjE2MjdkY2E5ODkzNjVhNjcyMzYzMTYwMTk4YyBsZWdhY3ktdHJ1bmsKKzMyNzc1IDI5ZjE5NDYwZjA2Nzg1NWM2ZGFkNzRhNTJlODBkOTI4NDllZjA4ZDYgbGVnYWN5LXRydW5rCiszMjc3NiBjN2RmZGE5OTNiMmZhZWRhMzJjMDc5ZWIxNjkyZWFjNDRiNzQ5ZTVlIGxlZ2FjeS10cnVuaworMzI3NzcgY2ZmNmI4ZjQyMmQxN2E2NjBjYTIxNzVkMTcxZGI4YTkyZmM5MTliOSBsZWdhY3ktdHJ1bmsKKzMyNzc4IDdmNTlkY2U4ZjhjMGQ0MjQ5MTMxYTAyOGRiOTdkYmYyNDM0YmNmZTQgbGVnYWN5LXRydW5rCiszMjc3OSA5MmU1M2M4ZTdhNzI0M2IyMTQzZmE4N2FjZGVlMzE3MGJhM2FhYzc5IGxlZ2FjeS10cnVuaworMzI3ODAgNmQ5MzMzMDc3NjFjMDE1NTlmOWMwYTQyMGI2YjhhMDZlMWQyMTg3ZiBsZWdhY3ktdHJ1bmsKKzMyNzgxIGU2NjkxY2U5MWI5ZmQ5ZTU5ODk3ZjRkZWQyNWFmMWMwNGRkMDA2MDUgcmVsZWFzZTIyLW1haW50CiszMjc4MiA1MmFlYmMxNDAwNjg3ZDM0NjY4YWZmZTljNDc2NTg5NWQ4ODI2MTRjIGxlZ2FjeS10cnVuaworMzI3ODMgY2YzMzg2MzNiMDc0NmMwYWViY2ZhMDE1NmIwYTc4N2QwOTk2MWE4MyBsZWdhY3ktdHJ1bmsKKzMyNzg0IDRjYmY3N2VkZWVkNTI3OTJiMTE3MzMxYjMzZDA1ZjRkYzA1NWY4ZDQgbGVnYWN5LXRydW5rCiszMjc4NSA5ODc2YjE4ZWRjYWI0MDYwOGFhYWU2N2IzYzI0Mzk1ZGRhOWM1Zjc4IGxlZ2FjeS10cnVuaworMzI3ODYgNjZhYTEwNWM4ZDE3OThiMTk3YjNjNzYyMmQ2YTlhYzllN2QyYmUyNCBsZWdhY3ktdHJ1bmsKKzMyNzg3IDYwZTczYzUwNWNmMmMxYzI5YjYxN2U1NmMyZTE4NGY3OTY3ZDAxMTcgbGVnYWN5LXRydW5rCiszMjc4OCA1M2RkOGM0MjYzZmQzMWRmYTk5ZTJlNmE1NTFkNzU5ODEyNTQwZGJiIGxlZ2FjeS10cnVuaworMzI3ODkgMmMzNTkyZDEyZDY5NGUzYWI4MzUxOTZhMjE1ZDIxMjFlZDMzMjZiZCBsZWdhY3ktdHJ1bmsKKzMyNzkwIGMxZTgzYjhkNWI3MGZlZGU1MmI1NzMyMWI5OTgzMmRmOTY1NWFmZDkgbGVnYWN5LXRydW5rCiszMjc5MSBlOWY5YTE5NmZkZWZlNGY3MmU4NzYwYmFiMDQxOTYwZjQ2MjQ3ZGU2IHJlbGVhc2UyMi1tYWludAorMzI3OTIgYzMxMGY5ZGRmZGNiZGIxYTdiNTUzYjFmMjgwOTNlNWMyOWEzOTQzOCBsZWdhY3ktdHJ1bmsKKzMyNzkzIGFlMDRhNzNiZjhmYzFiZTcxMzA1OTcwMGMwMTRmMWQ4NjA2OGJlMTEgbGVnYWN5LXRydW5rCiszMjc5NCBlNTdlMjJhYTU2YTQ4Njc3MDM1ZDRjMDU4MjI0NWI0YTM0YWQ4NmExIGxlZ2FjeS10cnVuaworMzI3OTUgZjkzNTEyZjFlMjBmZjE2ZTU1YzQzOGJhNTkwYzZhMzhmOGIyNDk5ZCBsZWdhY3ktdHJ1bmsKKzMyNzk2IDVkYTE5ODQ4MGI2YTc2ZmUzOGExYTY2YTYxYTNkMDI3OTVkZWJiZTUgbGVnYWN5LXRydW5rCiszMjc5NyA0MzMyZjIwNTMzZmNkZjNlYTk0ZjI2MGM3YjNjODAwNDM3OWFjZGEyIGxlZ2FjeS10cnVuaworMzI3OTggNjkzMTU1Y2RhZTAzZjgyMTBiNDk4NWQ4OTNhNDcxMjA1ZDgwOWE1NCByZWxlYXNlMjItbWFpbnQKKzMyNzk5IGU2ZTEwMGVmYmM3ZDMxZWE0MWE0MWI0MDdiYmZkYTEzZjFjZjZiNmMgbGVnYWN5LXRydW5rCiszMjgwMCAyYmYyODkwNGE4ZWNhYTUzMGExNTczMmMyZjEzMmQzOTZmNDM2YWJjIGxlZ2FjeS10cnVuaworMzI4MDEgYjYxOTFjYThlZDgwNzE1OTJiYmM4ZTMyZTA0MWQ3NzFiZjJiZWUyMyBsZWdhY3ktdHJ1bmsKKzMyODAyIGJjNTIxNjg5NjNiMzIxZDBjZThhYmUxMzU1Yjc5ZTA1NWU2NGU4ZmYgbGVnYWN5LXRydW5rCiszMjgwMyBlZjNlZjg4ZTM2MTRmNmExMjcwYmMzYzA4NDkyNzZkN2RkMWRiZTBjIGxlZ2FjeS10cnVuaworMzI4MDQgNmMzMGJiM2UzMzI1NzdjNDNlODVkYWM1ZGJlMTY2NjQ2ZjAzODIxNyByZWxlYXNlMjItbWFpbnQKKzMyODA1IDhiZTlhMzE2ZWI5ZGUxNjVjNTQyOGY3YzFhYWQ2NTY5Mjc5OThjOTYgbGVnYWN5LXRydW5rCiszMjgwNiAyOTgyZTYxODI1NjYxZWYxYjliOTZjMTBiOTJjYTFkYTZmNTBkMGVmIGxlZ2FjeS10cnVuaworMzI4MDcgMTY3MjFkNzNhZDI5M2JkOTI3MWZlNmJhNjg2MTU3MDIxMTZhNTVhOSBsZWdhY3ktdHJ1bmsKKzMyODA4IDVlNmQwZGNmMTU1Zjg3MzRlOGUwZjI0YTI3ZWE2MTIxMzJiZTRlNGYgbGVnYWN5LXRydW5rCiszMjgwOSA0NmZjM2Y4ZTllZWUzMzljNWZjODIzNzNmMDJmZjU5MTdjMjAwY2QzIGxlZ2FjeS10cnVuaworMzI4MTAgOWQ4ZGU1NjVlNWRlYWNkYzdjNTM1OWFlZTkxMmM5MGI0MmI3YzFhMSBsZWdhY3ktdHJ1bmsKKzMyODExIDdmMDA3NGVlOGFiOTk1MzI5NzgxNzkyZjljZjQ5MzI4Y2Y0MmFmMDEgbGVnYWN5LXRydW5rCiszMjgxMiAwMDFkM2M3ZTk2MzcwYzY1Y2E4M2RkYWE3Y2YwMWFhZmFjYjNkNWE0IGxlZ2FjeS10cnVuaworMzI4MTMgNTMyZGUxOTMzMmE0NzkzMTA3NzliMzk4OGZiOWY1ZTQ5ZGYwYzA5OSBsZWdhY3ktdHJ1bmsKKzMyODE0IDRjMWQxYjM1OWYwNjY5YzhhNWZjNTE4MGJkOTIxMGQ0NDEwN2ViM2EgbGVnYWN5LXRydW5rCiszMjgxNSAxZDRlYzUyYjMxNmMwYjgwZDJhNzI1ZmEzZjhlMGVhZjY4YTJiNjUzIGxlZ2FjeS10cnVuaworMzI4MTYgMzg0YmRhMzQzNzI1YTBkZWQwZGNkZjI4MDE3ZDQ2ZGFjZjhjZmViNCBsZWdhY3ktdHJ1bmsKKzMyODE3IDJiYjVjZWVmOWFjM2MyZDIyMTQ3ZmJiYjA3YmIxYzY4NDJhNmMwOWYgbGVnYWN5LXRydW5rCiszMjgxOCA0ZDkwMTdlZjdiNWYzMTEwODk5YzlkNDRhM2I0ZjE2M2YxMDZkZTcyIGxlZ2FjeS10cnVuaworMzI4MTkgM2Y5YWE2ZjFhZWYwOGM0ZDIyZTYyMTgyZjY1OTk4ODg5YzdlNmY0ZiBsZWdhY3ktdHJ1bmsKKzMyODIwIDg5YjRlOGUyYzIzMGNiZTg1ZjA2NDQxZDRiZDBhNmIwN2Q0NTFjZjMgcmVsZWFzZTIyLW1haW50CiszMjgyMSA2NDNmM2FjNDMwYmU4N2RjNGUxMGI5NDQ3Mzk4ZmFjMzZhMTU2NTgzIHJlbGVhc2UyMi1tYWludAorMzI4MjIgNjU0NWU3NDk4NjM1ZWMyMTlkYjBiMGY2OGUwN2FmYzZkYTJlNTgxZCBsZWdhY3ktdHJ1bmsKKzMyODIzIDQzNGVmMTc0ZjQ3ODYyMzgyOWI2OTkzYTA1N2E4Nzc1MDEwNDQyNzAgbGVnYWN5LXRydW5rCiszMjgyNCBmMGI2NzczMWU1NDViNWI5NDQ3M2M0YWQzN2MzYjJkMjRiYTE4MGM3IGxlZ2FjeS10cnVuaworMzI4MjUgOWNmMDlmOTJiMTk4YmVkY2VmODQyN2FhMDhmYzdjNzExMDAzZGYzMyBsZWdhY3ktdHJ1bmsKKzMyODI2IDlhZTE3YjM3NzliYmIwMmQwZjI0YTliNGI5M2YyZmJlMGM0MjEzNGEgbGVnYWN5LXRydW5rCiszMjgyNyA0MjFmZmQ3YzU3YWZlZWE3MzgwMjNhZGMxNTJhZTEyOGZjMjcyNzAwIGxlZ2FjeS10cnVuaworMzI4MjggZWZlNWRkNjBjZWU4OGFiZjdjZjU4NmRjYTJiNDFlYTA4ZDlhMjBlOSByZWxlYXNlMjItbWFpbnQKKzMyODI5IDQ1ZjdkZTdmMTA1MmM4YjAxY2Y2YWRjZTM0MDIwMmQ4NjFmNzM2MGMgcmVsZWFzZTIyLW1haW50CiszMjgzMCA1NzBhN2I4YWExNTQyMTY1NjVjNzJlZjM1NzliNTE4MjZjNjRhMWFjIHJlbGVhc2UyMi1tYWludAorMzI4MzEgNGY1MzFjZGYyNDJlOGFjMmY5MWVjYjllNzNkYWYwODM0MzZhZGM1MiBsZWdhY3ktdHJ1bmsKKzMyODMyIDFkYzdjMGEwMjBkM2Q3ZTM1YjcyYTExYjA0OGVkZmE0NzQ4NzRiZmQgbGVnYWN5LXRydW5rCiszMjgzMyA2ZTk1YWRkOTJjOTliYWI4ZjNjMGZkNzIxMTg3NDBkMDJiZTczYzFhIGxlZ2FjeS10cnVuaworMzI4MzQgNDYzMDBiOWFmMDJiOTRkYWRjZTUyMTRiZDllNmQyN2FkNGQyZjZmOCBsZWdhY3ktdHJ1bmsKKzMyODM1IGY0NzViZWMzMTY5NTUxNDQ1YzdlYjVkOGU0MDk2NDNiYmViMDM5ZDUgcmVsZWFzZTIyLW1haW50CiszMjgzNiAwNTRkOWJjMGQ4NjA4YWI3MzQ0ZDA2YWQ2MDFhZDcxNmMwZGE5NWU4IHJlbGVhc2UyMi1tYWludAorMzI4MzcgZjM5YzI3MWE5YThlNmMyMjhhNDEwOTQwNDJkNDRjNGRiYjFhZGViOCBsZWdhY3ktdHJ1bmsKKzMyODM4IDlhYTA2Y2JkOWNjMWEzMDdjNGM5YzkyZGM5ZjMwMTY4YzY1NjU3ZGMgbGVnYWN5LXRydW5rCiszMjgzOSBjN2Y2ZjczNzQzYjA4YjQ4YjMzZmE0N2M0YTg3OWRhYjAyNzU5YWNkIHJlbGVhc2UyMi1tYWludAorMzI4NDAgMmFhYTM5ZWRjNTExZTdkMzAwYmEyMTM0NjM3N2RjMTg4ZDNlMTdiZiBsZWdhY3ktdHJ1bmsKKzMyODQxIDg5NmJiZDA4MDZlOGYzZjIwYmJkNTc4MWI3MmZmMmFmZjM5ZGEyM2MgbGVnYWN5LXRydW5rCiszMjg0MiBiZWUzZDFhMWI5YTlhM2NiMTU1Yjc2NjE1ODI4Y2I1MWU2OGJmODIzIGxlZ2FjeS10cnVuaworMzI4NDMgNGIxYzE1MGQwN2Q4YzViMDQxYmIzNWQ1YWRiNzEwM2FmOGE0NmMxMSBsZWdhY3ktdHJ1bmsKKzMyODQ0IDIyN2M2NjQ2Y2M2YmI1YjFhMmI0YmViMTViMWViOGQ2YjFlN2JlMzMgbGVnYWN5LXRydW5rCiszMjg0NSAxMjk3ZDQwNTE1NWJkMzZkMTU3ZTZhMWRjY2E3Yjk3MTE5M2RlNWYyIGxlZ2FjeS10cnVuaworMzI4NDYgOWIyNDI1MDZkNmRjN2Q0N2YzZGI4ZDY3NWJlNzMyNzYzNDMyZGQ5YSBsZWdhY3ktdHJ1bmsKKzMyODQ3IGQ2NjVjNmI5OGNkMjQxYmE2N2RhYWE2MmFmYTViNTM3ZDc1OTE3MzkgcmVsZWFzZTIyLW1haW50CiszMjg0OCA4MTI5NmE4MGExNWYyZTIwNWI3YzlkMzdiN2I0ZTBlMzQzNzE1MDk3IHJlbGVhc2UyMi1tYWludAorMzI4NDkgNmQ2YmRhMjU0OWI2YmQ0NjBkNWIzNGYwZTRlZmIyNWI4OTQ2OTAwMiByZWxlYXNlMjItbWFpbnQKKzMyODUwIGE5MjEwYmVjM2I1YWY5Mjc0OTE2NjcyNGZjYzEzMDg5M2FjYmY0NTggcmVsZWFzZTIyLW1haW50CiszMjg1MSAwYTk3YWRjNmE0N2ViMjQ1Y2M5YTdlYzIyYjRlMjk0NzczZmFmYTMyIHJlbGVhc2UyMi1tYWludAorMzI4NTIgYjk3NjJmMDAzZjMwOGQxNzUyNzMxYWUzZmJiZWYzMGYxY2YxZjk3ZiBsZWdhY3ktdHJ1bmsKKzMyODUzIGNkMWM4MjZjOThhMmJmYmNlNGFhZWRiNWIxZjAwOWNiM2JkYjA3NWQgbGVnYWN5LXRydW5rCiszMjg1NCAzNjFmYWQ2MzMzMmRkMjQ5MDVkMjI4MzlmMGZiNjYyY2RkZGQ5ZjY5IHJlbGVhc2UyMi1tYWludAorMzI4NTUgNzU0ZmQzNGFkOTc4NGUyYzc3ZTcxNjc5YjVjNDY2ZmUzZjkyMGE2YyBsZWdhY3ktdHJ1bmsKKzMyODU2IGY2ZTkxY2E1NmE0OThjN2Y2MGI1OWZkNzgyMGMyMWNkY2I4ODE3MWIgbGVnYWN5LXRydW5rCiszMjg1NyAzMTVhNzQ3Mjc3YmZlNzZkNTgzOTUzNzhlOWUxMDRiNTlhYTBiNDc2IGxlZ2FjeS10cnVuaworMzI4NTggYjFmNjQzNjkwYTg4N2NlMjFlZGU2OGIyZjJlOWMxNzRiYmFmZjE1NiBsZWdhY3ktdHJ1bmsKKzMyODU5IDU2ZmZjYTAyYzgyNDNiMzUxZmU3NDI0MzJmMTk1ZDY4ZmVlNjczOTYgbGVnYWN5LXRydW5rCiszMjg2MCBlNzA5NDM5MzM3MzllZmNhNjkwNjRlMWVkMmIwMDgyNTBkOWZiNDZiIHJlbGVhc2UyMi1tYWludAorMzI4NjEgNWVjYzQ4YWQ2NjM0MDAwZTdlZDYzYzQwNWIxZjViNmZjMDM2M2U2MSByZWxlYXNlMjItbWFpbnQKKzMyODYyIGZmOWJhM2QxZTI4MGNjNjIxNzNjNDhhZTJlNmJiZWRjNDFhZGQ2NzYgbGVnYWN5LXRydW5rCiszMjg2MyBkYTJjNWQ5ZGQ2MGUwN2UzMzM0MzgyODMyZWE3NzFjNjIxODBjMGQxIHJlbGVhc2UyMi1tYWludAorMzI4NjQgMzViMjc2OWIwMmI2MzQwOTk4NjUyMTcyMjE0OWJiMDI0OTNjOTg0ZiByZWxlYXNlMjItbWFpbnQKKzMyODY1IGU1YWZmMDYwMzdiNzk0ZTZlZWE4NjdiMWFkM2VkMTc4ZDk1OWMwNjUgcmVsZWFzZTIyLW1haW50CiszMjg2NiBkOWNmNTM2YzUzNDBjZWRkZTdmNTdlN2ZlZjQyYWRhZWNlYWYyNTg5IGxlZ2FjeS10cnVuaworMzI4NjcgNTg0ZGM0NmNhMDY2ZGEwMzgzYzJkZGU2NDg4MGUyMDE4MDU4YThiZiBsZWdhY3ktdHJ1bmsKKzMyODY4IDY0NjIyMTZmZTNhODdhYmMwYWQ1OTUxOTZhZTJiYzkzZGUxNjgzNmUgcmVsZWFzZTIyLW1haW50CiszMjg2OSA0YmFjNGQwZDNlM2VkMWIyODg3N2I3OTUzNmNjMGY1M2M3ZGJmOGNkIHJlbGVhc2UyMi1tYWludAorMzI4NzAgNjk5NzQ2NjMzMjQ2YzcyOTZlNTIyZDZlZGMwNDQzMmZiN2UzYzI2NSBsZWdhY3ktdHJ1bmsKKzMyODcxIGYwNWJhZTQxMmI3MWIyNDU3MDdmMDM3MTIxZTFhNzFjOWExYzYyYTcgcmVsZWFzZTIyLW1haW50CiszMjg3MiA5ODU2NzA2NTA2NGI3YmI1OTdiMjMxMDhkMDhjMjBjNjZmZTZlMjQ5IHJlbGVhc2UyMi1tYWludAorMzI4NzMgMDUyM2YwOWJiMzQ4Njc1NmI3ZWU5ZTMyMGI0ODIxNTY1NjY5YmVlYyBsZWdhY3ktdHJ1bmsKKzMyODc0IDg1NjBiMTQ2ZjQxZjFkMDdjMjY3MjQyMzQ5OTFiNjU1MjBmMTg3OWEgcmVsZWFzZTIyLW1haW50CiszMjg3NSBmMTU2MjZjNzY0MTg2NzM5ZTcxNGRiOWQxMWFmNjJlZDMxZDk2ODk5IGxlZ2FjeS10cnVuaworMzI4NzYgMjdlYzE0NzFkY2I2YTkyZjJhMTE5MTE1YTU4NjA2NWZhYzYzNmYyYyByZWxlYXNlMjItbWFpbnQKKzMyODc3IGVhMjk1OGJkNDI3MWZmMTY2MzYyZmVhOWQ1ZjhkNjBjNzM1YWE4MDEgbGVnYWN5LXRydW5rCiszMjg3OCA4NThkNTY4ZWJmNzYzMTEwN2ExZWQxOGI0MGIzYjEwYmZhNWJlMWRhIGxlZ2FjeS10cnVuaworMzI4NzkgZjNmMzA2NDU3YjQzMGVhMTlkN2RlNzk0NmI3YjdiYjg1MTQ1MGYwOSBsZWdhY3ktdHJ1bmsKKzMyODgwIDNhYWYyNGI5NDlkZmI2MjA5MTVjNjkwNTNjOGQ2N2NjN2RjNTEzNTggcmVsZWFzZTIyLW1haW50CiszMjg4MSAwNTJjNjI2M2RmMjY5YTI2NGMyMTg0ZmQ4MzhjYjZkYTQzZTI2MzkxIGxlZ2FjeS10cnVuaworMzI4ODIgMTA4YTEwMDZhOTA1M2E0ZmMzNmMxMTIwNWJlNjgxNTM2MTcwNWRhYyByZWxlYXNlMjItbWFpbnQKKzMyODgzIGY3ZGZhZWFhNGFiOTg4YTU0NmFlZTJhOGRiMWFmZWViMzdmOTY3ZDAgcmVsZWFzZTIyLW1haW50CiszMjg4NCBiZDgyMTYxYjYxZTU1Njk0NmIyNDhhMjA5MzZjYTc1OWM2Y2U2ZTcxIGxlZ2FjeS10cnVuaworMzI4ODUgNjdkNTYwZDYwOGNlZDc2YWZlMWUxYjQ1NzJkYmUyMzZkOTZhNmEyZCByZWxlYXNlMjItbWFpbnQKKzMyODg2IDg1NmM4MWY3MTIxM2RhMjNlOTYwNGZiYzhlZjlmYWU5MWQ5YjcwMjAgcmVsZWFzZTIyLW1haW50CiszMjg4NyBlYWY5MGU4NTBkMTJlOWZmMTA3YjVmYjJkNDU0MzRmNzlmN2ZiZTIwIHJlbGVhc2UyMi1tYWludAorMzI4ODggMzc3YTI5ZjZkNjg3OTNkNjg3YjE5N2VmN2UzMmJkMTgzNjQ3MDIzZiByZWxlYXNlMjItbWFpbnQKKzMyODg5IGYzZDFlZDE0MTE4ODJkNThlMWM5OTI5MTU3MjAwOTU4NzY4MTZhZDEgcmVsZWFzZTIyLW1haW50CiszMjg4OSBhYzc3YjkxMzQyNTM0ZDA5YjFlNDMyZTFkYzNiNzBkYmJlYzNhOTE5IHJlbGVhc2UyMi1tYWludAorMzI4OTEgMDY4NTI5YTkwOTkyNmQ0ZjYwM2NmMGI2ZDZhMGQ0YTMzNDRhZGRmZiBsZWdhY3ktdHJ1bmsKKzMyODkyIDc1MmZjNWVhMTZiOWJkMTNmYjE2NDAxZDI2MjBhZjU1OTkwOTM1YmMgbGVnYWN5LXRydW5rCiszMjg5MyAzNWQ3MDBkOTAxNWUwNTg4OGNiMGNkOWI2NzZiODRhYmI2ZTVmNmY5IGxlZ2FjeS10cnVuaworMzI4OTQgZTcyMTAyNWNjYTA5MzlmYTY1ZTJjMzZkYzI2NDA0ZmY0MGRmZTY5ZiBsZWdhY3ktdHJ1bmsKKzMyODk1IDM4N2Q3YzIyMTZhMTY5YjZjNjZkODRmOGU0MWIyMzQ4Y2ZhNjMwY2EgcmVsZWFzZTIyLW1haW50CiszMjg5NiBkNzJhZDA3YzczOWVhMmM4ZTM1NjAxZjk3NjJmOTMyYzVlOTc2NTJiIGxlZ2FjeS10cnVuaworMzI4OTcgNjQyMjdmOGRlN2RhYzEwNTg0MDQ0NTZjZGZlNGNlMTEzZjQ1MTZmMiBsZWdhY3ktdHJ1bmsKKzMyODk4IDIzYWQ4YjVkN2I0YTBlZjM2ODk3NGQzMDZlMTZlOWU0ZjA1YjQ4ZDYgbGVnYWN5LXRydW5rCiszMjg5OSBjYTBjODEzN2RlODQ0NTVlYWZlMTkyNDg1MzIxNjY3ZDcxYjBjZGRhIGxlZ2FjeS10cnVuaworMzI5MDAgMzliODcxNjc4NDY3NTNkMjI1NTAzMTBlOGU1Yjk4N2RkZTI2YzAwNiBsZWdhY3ktdHJ1bmsKKzMyOTAxIDFjMzJkNDIwNzQwNGE4NjQ0NWYxOTBlMDQ0ZjE3MWI3NTlmNTZiODUgcmVsZWFzZTIyLW1haW50CiszMjkwMiAyZjQyODc1ZDkzN2YyNGQ1NGQ3OTlhZjc3MzI5ZDMxN2UxYWNkY2NkIGxlZ2FjeS10cnVuaworMzI5MDMgODkzYWU1MjY2Nzc2NTNmMzBhMzVlZGFlYjU3MzQ0NThiZTAxNTM4YyBsZWdhY3ktdHJ1bmsKKzMyOTA0IDM0NjA5ZmEzNWIxMWMxN2ZiNTNhNTM0OWYyMjBlMDQwOWZiZjc4OTggbGVnYWN5LXRydW5rCiszMjkwNSAzYThiMWQxNmI3YzZjZGNkYjU1MmFkMTRkY2ZlYWM3MDg2NWViM2YxIGxlZ2FjeS10cnVuaworMzI5MDYgMGI3NjY3OWJmM2Y5OGI3NzQxY2ZhOGU4NjUyZDY5NTc1NjYzNDJmOCBsZWdhY3ktdHJ1bmsKKzMyOTA3IGI0YzkyZTk4MDNhNjIxMjM0ZGI2ZWI0OWM2ZjI0ZGM3M2Y2YjIwNmEgbGVnYWN5LXRydW5rCiszMjkwOCBiZTcwYjg0NzdmNDNkMDhhNjgyNzk4MThhZjhhMGI2OGY0ZmU2ZWU2IGxlZ2FjeS10cnVuaworMzI5MDkgMzY4OWIwMDU1YzJkYjIyOTZhOWU5YTk5N2FjMmE1MDUxOTJkY2ZmMyBsZWdhY3ktdHJ1bmsKKzMyOTEwIGI5MDlmZGYwZWRmOGRkZTBjNjc4Mjg1NzcwOWEyYzAzMjdmMWQ1ZWEgbGVnYWN5LXRydW5rCiszMjkxMSBkZWEzODExNmMzNzM1MjZkYzQ2NmUxYzcyOTg2MTUwNzFkYjdjYTY2IGxlZ2FjeS10cnVuaworMzI5MTIgMThjMDIwNDYzOTY1ZDAyOWRmN2MxMDNmZTMwZDRjOGRmNDlkNjk3NiBsZWdhY3ktdHJ1bmsKKzMyOTEzIGYxZTU2NzQ4NTE5NDQ4YmM5YzA0YzIwMmE0ZjNiY2Y2NjI5Y2ZhY2YgbGVnYWN5LXRydW5rCiszMjkxNCAxNjFmMDVmNDY4MGQ5ZDNkODI3NzVmYzljOTFhMTJmMDQ2N2U4ZjY3IGxlZ2FjeS10cnVuaworMzI5MTUgMzRmNDJlMzQ1MGI0ZDYyYzM5NTJlOTY4ZWVmYjg4ZmFlOTJiMmI2YiBsZWdhY3ktdHJ1bmsKKzMyOTE2IDdlYTU1MGVjZjQzZDc0ZWQ0MzNiNTI5OGRhZDUyYmNjMDJmZDViNWIgbGVnYWN5LXRydW5rCiszMjkxNyA0NWM2YmUzNTczM2ZkZDZhZjhiY2FkNWM3Njk5ZTcwYTEzOGFhN2JjIGxlZ2FjeS10cnVuaworMzI5MTggYTlkNzc4YmQ5NjUzNjg4MzNmMjk3Y2RjZmQ4YWFjNjlmMTA3YzY0OSBsZWdhY3ktdHJ1bmsKKzMyOTE5IDc0ZGE0ZDJlYWFkMzY3OWJlZTc1YTQ3NjViMTQwMDBiMTEyOWRlZmQgbGVnYWN5LXRydW5rCiszMjkyMCBkMjNlOTMyMGQzNTAwMmQ2OGE5ODVhZjExMzIxODAwZTQ1MTViNDg2IGxlZ2FjeS10cnVuaworMzI5MjEgM2M0ZDk1YTRjZTE3N2U3YmJkOWQ4MDA2ZDg1NzU3YTYzZDdlZTA0ZiBsZWdhY3ktdHJ1bmsKKzMyOTIyIDc4ODdmZTNhOWE4ZmY2YTlhN2FkODIxOTQwZjU2ZjU2NWUzYmQ2NDggbGVnYWN5LXRydW5rCiszMjkyMyBjNTYzMzhlMDg3Y2FjYWY4YzA0MWY2YmQwYjAxZTJhMjBlMzU0NDExIGxlZ2FjeS10cnVuaworMzI5MjQgMDg2MzA5MTliZjUyYjJlYzkzNGMxMDk2ZWUxMTg0YjZiMWI0MDk3YiBsZWdhY3ktdHJ1bmsKKzMyOTI1IDhmNzNkZjA5OTk2NzM0MDJhM2JjMDBjMWU4ZWI4NjM3ZDZjMGZkNWQgbGVnYWN5LXRydW5rCiszMjkyNiBiN2NkMWZmMDAxOWI5YWRlZGMzMjk2YTI2NTg4ZjNlNjMyZTlmNDY2IGxlZ2FjeS10cnVuaworMzI5MjcgODk3ODEyMzE4ZmY0MWQ0OTcwMmQ4NTc4YzAwODg3ZDJkNzM3ZDMwMyBsZWdhY3ktdHJ1bmsKKzMyOTI4IGRmODBhNWI2OTU3YjVlZTVhNzI2M2NiY2Y2OGIzNDEyMjcyMmExMjMgbGVnYWN5LXRydW5rCiszMjkyOSBhMDQzYWY2MDhlOTRjYzczMTEyNzk4NTk1YTNhMzljZmNmODAxOTJkIGxlZ2FjeS10cnVuaworMzI5MzAgZmVjN2YzM2I2OTdjMTg1YTY4ZTg0MjFjZmIyZjdiNWI1ZWE4MzFmZiBsZWdhY3ktdHJ1bmsKKzMyOTMxIDY2NzMwNTNlZGFkM2YzZDk4ZWIzMTI5MGEwODQzYmE0MGNmNjk4MGEgcmVsZWFzZTIyLW1haW50CiszMjkzMiBjZmJhNzZmNzc2NDM1OGZmMjQ5MWQ1MTM1NTcyYmQ1MGQzYjRiMzVjIGxlZ2FjeS10cnVuaworMzI5MzMgYjM3MmI5MDNkMTBlN2FkZDMyOTNhOTc3YzBlOTE4NzM1NDg0ZGYzYSBsZWdhY3ktdHJ1bmsKKzMyOTM0IDhmMmM1Y2Y2MTc2MzkwNmMzMmZjOGQ2OGRlZWE2YmQ3MGQ1MTliZGEgbGVnYWN5LXRydW5rCiszMjkzNSA0OTkyYzYwZDQyMmIyOGQxZmViNmIzM2FiYjhmNWFjZDE2NjU1NGE1IGxlZ2FjeS10cnVuaworMzI5MzYgYzMyNWU4ZjIwZDZlOTQwOTVmMzBlMDdhNTA4MGVhNTIzMTRiYzdjOSBsZWdhY3ktdHJ1bmsKKzMyOTM3IDdmMTMwYTQzNzBjOWUzNGM2NWZlOWUxNmFlZDNlZmZkMWE4YzlkMWEgbGVnYWN5LXRydW5rCiszMjkzOCA4ZWViMWRmNjlmMzU3NTE3NDNhZTA3YTE0ZTg3MDY4Mjk2NDgwZDY3IGxlZ2FjeS10cnVuaworMzI5MzkgOTQ5ZjQxODI5ZjM2ZjRmN2QzZmFmN2Q5NGM1MzI2ZmE0ODg4MjQyMiBsZWdhY3ktdHJ1bmsKKzMyOTQwIGE1YzhlY2E1NGFlYjAxZjMzMDZlOWJkZWQ4MjE3NWZhNTgyN2Q4YmQgbGVnYWN5LXRydW5rCiszMjk0MSBkZTQxZjNjZDY0NzQ0NTIxNGZjZjNmYmI3OTkyYzMxYjk2ZmEzOGQzIGxlZ2FjeS10cnVuaworMzI5NDIgMDQzN2NmNGI5ZWVjMWUyZjAyMzM0MmM5YWU2ZTdiM2NiNGVkMWE3ZSBsZWdhY3ktdHJ1bmsKKzMyOTQzIDgxMWFkNWYyZjcwMTRjMTFmZWNhNTdiMmM5NzM5MDVjMjdkYmM3NDAgbGVnYWN5LXRydW5rCiszMjk0NCBiNWJhZGQzYThkNGYzOTE4ZmM4YWM1ZTAzMDY4OTUyZjhiYTc5ODdiIGxlZ2FjeS10cnVuaworMzI5NDUgNzA2MjZjNTczZWQ3MWRkOWI2YzFjZTI1ZGY3ZjQ0NWZlMzBkMTUxOCBsZWdhY3ktdHJ1bmsKKzMyOTQ2IDIxNDUxZjc2MDU5NjMxY2NhOTVmMmU1ZjdhZDlkOWE3Yjg1ODcyM2QgbGVnYWN5LXRydW5rCiszMjk0NyBlOGM0YzE1ZjQ1OWUzNWVjMGM4OGM1NWI2NTJmNGNlNzE0MzJkYTI5IGxlZ2FjeS10cnVuaworMzI5NDggYmQzNDk5OTljYjA4Mjg4OThkODBlYjFkY2I1ZGRlZWI4YTBkNjI1ZCByZWxlYXNlMjItbWFpbnQKKzMyOTQ5IGQ0NjQ1OWQ4MmE3OTI3OGU1OTM4NDZhZjkyMjA2N2QyY2YxZTcyNjYgbGVnYWN5LXRydW5rCiszMjk1MCA3ZjdhMDc4MDQ2ZmI1YzEwYmYzMTc3Mjc1MzQ3NDkwNDcyZDE2M2I1IGxlZ2FjeS10cnVuaworMzI5NTEgYzFlODBmMmYxYzQ3MWEyM2NkNzY2YjYxNjNlNzc5M2ZjNTg2MmUzYyBsZWdhY3ktdHJ1bmsKKzMyOTUyIGI1NDc4ZDFkZDY3ZWRkOWQ2NmU4YWQwZTlkOWY2NGNiZGMyYjcwMmUgbGVnYWN5LXRydW5rCiszMjk1MyAwYmViMWE2NTE0NDM1ODAyZDAzMTM0Y2EwN2I1MGFiMDkzMjcwNTdlIGxlZ2FjeS10cnVuaworMzI5NTQgNzMyODM2NjY2MDAwMzIzZmVmNTIzNzc1MjFhNjZkZTE2OTI1YmIxNCBsZWdhY3ktdHJ1bmsKKzMyOTU1IDk4YWZmZGJjNDE2YzQxMDk5NGQ1NThkNTA2Njc3MWI3ZTVjMGQ1YzMgbGVnYWN5LXRydW5rCiszMjk1NiAwOGExY2JkZDAzNjdmZDAxYjI3MzhjZTNlYzViZTVhMDc2ODg3MmYxIGxlZ2FjeS10cnVuaworMzI5NTcgZTNhZWZlYmE0MTE2MDlhMjJjNzVmOTM3MDE1YTRiMWVhY2M4ZWVjYyBsZWdhY3ktdHJ1bmsKKzMyOTU4IDk4ZDgxNTk5ZWNhNzRlYzMzZWJmZGFiZmVkOTdlMzBlZmIyODc0MTUgbGVnYWN5LXRydW5rCiszMjk1OSBjM2EwMjA3NGNiZWU5YjZhZTgzODc5ODA2Mjk1YjA4NjA3N2Y3YmNhIHJlbGVhc2UyMi1tYWludAorMzI5NjAgZTZmOGUyNjg3YzZmZDU3NTI0ZWE2ZDVkOGJhNjljMTE1MzI5M2EyMCBsZWdhY3ktdHJ1bmsKKzMyOTYxIDY0NjhmMGUxZjRhODViYmVkYmY0YzUzOTUyY2JmZTdiMmFlYjFmZmIgcmVsZWFzZTIyLW1haW50CiszMjk2MiBhZDFlNjdhYzU2N2I4NzI5OTRjYmE5ZTZjOGM0YTBkYTkzNTEyYzM2IGxlZ2FjeS10cnVuaworMzI5NjMgNDYyOTRlZGRiYTU1MTNiYmI1NDE1YjMyYWU4NzgxNTUzYjhiNDE0MCBsZWdhY3ktdHJ1bmsKKzMyOTY0IDY3MWU5YzNhZjRmMzg1ZmI4OGVkZTdlNjY3Y2UxYmQ2NGU3NTVlNzIgcmVsZWFzZTIyLW1haW50CiszMjk2NSBlZDcwNzc5ZjY0MDIxYzkwZWZiZmMwMzg3NTIyYTVjZTIyMjUxY2RiIGxlZ2FjeS10cnVuaworMzI5NjYgYjE3OTJhNjE4ZTZkYmNiZTExZTQwNzYzZGFlZDJlYmQ4ZWYwMTEzOSByZWxlYXNlMjItbWFpbnQKKzMyOTY3IGRiY2U1NTZjZmM5NmU5MDcwOWY0NDYzNDA3NDQ2MjgwMTM4ZGIyZTUgcmVsZWFzZTIyLW1haW50CiszMjk2OCA1MWNlNjliZGY0MTg2ZTgyMDE0Nzk0MWRlNDcxMjkyNWE1MDRjYzQzIHJlbGVhc2UyMi1tYWludAorMzI5NjkgYzI5MWNhMjk0OWU5MjY0MWU2Y2ZhZTJjNWQ2OGYwN2NmY2JlODBmZCByZWxlYXNlMjItbWFpbnQKKzMyOTcwIDI3MmM3NWIxZDIyZWJiMDVmYzdiZTJiMDU3N2VhMDg5NDZlZGJkNzAgcmVsZWFzZTIyLW1haW50CiszMjk3MSBmNDRmYmY3NGViNjFkYzI4YzE3ZmY4NDUwMzM1MjY5YWZiODg2ZDA3IHJlbGVhc2UyMi1tYWludAorMzI5NzIgZjdmNDZkNjczYzYxYzcyY2M4Y2QwOTNjMDE3ZmUwZmZkNzRmMmUyMCByZWxlYXNlMjItbWFpbnQKKzMyOTczIDY1ZjdlZmQzNWYxMTkwMWM3MGY1Yzk3YjJhOWZkZDczZjNhMDAzYTUgcmVsZWFzZTIyLW1haW50CiszMjk3NCBiMzFjODRiYTFmMzE0NGY1MDQ3NTY1YWY0MzcxMWJkM2EwYTZjNDJjIHJlbGVhc2UyMi1tYWludAorMzI5NzUgNzc0NjI2OWI5NTFjZGQ2MmNmNjkwOGJjYTRiMTI3NTgwNWY3ZTEwMyBsZWdhY3ktdHJ1bmsKKzMyOTc3IGJmMmRjMGQxNzE0ODgyN2Q2MGE2ZmQyYzY5ZmY1YmJkZjQ4MzZiY2YgbGVnYWN5LXRydW5rCiszMjk3OCAxMmY5ZWEzMmYyM2E1Mjk3MGJiNDU5ZWYyNjY5OWE3M2JkZTMwZmU4IHJlbGVhc2UyMi1tYWludAorMzI5NzkgMDA4Y2QxMDEyNjlkZjY4Mjk2ODA0ZjMxNzRiYzk1MmM3MGI0YzAyMCBsZWdhY3ktdHJ1bmsKKzMyOTgwIDdiZWM2Mjg5OThmZTllNzU3MjY3ZTU2YWJkZTNkYmE2ODA2NWZlOGMgbGVnYWN5LXRydW5rCiszMjk4MSBlOTUwYWJjMzI5MjI3YWI2ODAwNTc0NzEwMGRjZWE2NzUwOTA0MjY0IGxlZ2FjeS10cnVuaworMzI5ODIgMzY4MmFhMjcxNDFiNDQyMmNlNmFlZjllZmU5YzliZjc0NjllNDRjNSBsZWdhY3ktdHJ1bmsKKzMyOTgzIDg3MDBhMWM3MDE2YjEwZjA5ODhkOWJhZjM2NDFhZmJkZGNkODc1MmUgbGVnYWN5LXRydW5rCiszMjk4NCA2M2FiNTBlYzRhNDY2MTVhZjBkNDY5NTcxNmZjODhhMmFjNDY1M2RhIHJlbGVhc2UyMi1tYWludAorMzI5ODUgZTQ1ODNkMTY2Y2JjZDc5ODZiYTFiNGUyYTIxMDgxMjhlMTllYzA4MiByZWxlYXNlMjItbWFpbnQKKzMyOTg2IDI5YWIxYzkyM2Y3NTcxMGEyYjk0ZGYzODFhN2EyMzA3NGUwZmMyYTcgbGVnYWN5LXRydW5rCiszMjk4NyA0N2M3MjVhMzJiMGVjMTBmOGFhZTdlNzA3YzFhNjdmOWE0M2JkNWJhIHJlbGVhc2UyMi1tYWludAorMzI5ODggYzAwMWJiMDAwNTU4MGQyYTU2OWFiMmU3MmVkYTIyN2E2ZDVmYzA3ZCByZWxlYXNlMjItbWFpbnQKKzMyOTg5IDgzYTJlNzEzM2IwMTA1NTNiNTQ3NTYwNTdjYzc4MzExODNkY2E1YTIgcmVsZWFzZTIyLW1haW50CiszMjk5MCA4OTBjZDdhMjIyM2VmYjk2ODg0NjJiZWU0YjRjZDY4YmZiZjU5Zjc1IHJlbGVhc2UyMi1tYWludAorMzI5OTAgZjRmMTM0YWQ0NmFiZDBiYzk3M2QzZjYwOTRlYTU2ZTYyYWM1YzQ5MiByZWxlYXNlMjItbWFpbnQKKzMyOTkyIGY5NDk1ODE1YzE4ZjMxOWQ5NjI5ZGY0Yjc0NTYyNTlkNjQ2YjdlMDMgbGVnYWN5LXRydW5rCiszMjk5MyBmNDA5YjMzYzI5Y2U0OTIwMGUzMTk4MTczYzM3NTI1MDM1MzQxNzA0IHJlbGVhc2UyMi1tYWludAorMzI5OTQgZmMyODZlMjg1NTZmN2Q4NmRmZjhmZmJjMjA1ZmIzN2VlODVlMzcyMSBsZWdhY3ktdHJ1bmsKKzMyOTk1IGM2OWFkOTIyN2FmZDRmOTMxYjc0Y2E1NjYwMmZlZWVkMjE3ZGZjOWEgbGVnYWN5LXRydW5rCiszMjk5NiA2YWJjYjY5MGI0N2I1NGE3YThiNTg1YmIyMTRjOTRhMDdjODM1NWYxIGxlZ2FjeS10cnVuaworMzI5OTcgZDg5YzA4MzdmOGY0MTgzMTU1ZDI1NDVmZDU1ZDgwMjY0ZWU4YjRjMSBsZWdhY3ktdHJ1bmsKKzMyOTk4IGU0ZjcwZTYwMjU5OGQ0OGJhMmI0MjlkNTc1YmVkZjIzMDJiN2I3YmIgbGVnYWN5LXRydW5rCiszMjk5OSA5N2ZkMWY0OWYwMjZhYTUwNGM1Y2FmN2EwODY3OWNlNjY5ZTMxMDhmIGxlZ2FjeS10cnVuaworMzMwMDAgYjM0NTVjNGMxNzk4ODc3OGQ3OGNhNWI5OGNiOGQ2Yzk1OTQ4ZWExMyBsZWdhY3ktdHJ1bmsKKzMzMDAxIDc1NDk0YWVhNDdjYTcyNjU0OTFlYTI0MTdhM2MwODI5ZGFlYjU0ODMgbGVnYWN5LXRydW5rCiszMzAwMiA0NTg1YWIwZGEwMDM3N2JhZjBlOWNhMGZlY2ViMGZlMzZkNTUwM2FlIGxlZ2FjeS10cnVuaworMzMwMDMgZjU4OTE0NTliODEzZWUyNDRlNWQ1M2ZhNmIwODkzZGE0OWEwNGQ4YiBsZWdhY3ktdHJ1bmsKKzMzMDA0IDJmNzMxYzU3Y2RjNjhmNTk0MGQwM2Y5OTA4YzhiYzk0ODZjZTRhN2EgbGVnYWN5LXRydW5rCiszMzAwNSAyN2JkNGNkMDJiYjg3ZTM3NzE1M2IzZWUyNDcwY2YwMzIwMTkwNGM4IGxlZ2FjeS10cnVuaworMzMwMDYgZmI4NGUwZWFiYWQ0ZTRiM2QxNjgwMzQzYjVjNmRhMjk4MDE3ZWM3MCBsZWdhY3ktdHJ1bmsKKzMzMDA3IDFhZThiNjc0MDkwNjUyMDY1Y2RkOGFlZTkxNDBiY2NhNDA1M2M5NjQgbGVnYWN5LXRydW5rCiszMzAwOCBiMTM5NTAxNDcxNGFkN2YwNmNlMmZhZGU2MWQ4ZWY0YTE1OWZlYmE3IGxlZ2FjeS10cnVuaworMzMwMDkgYjUyZTBhZDMwNTg1ODgwZTkyNjY2YTI0NzcwZjM3ZGFkNDZhYmJiOSBsZWdhY3ktdHJ1bmsKKzMzMDExIDUzZDliNGVlYzRjZTBhMjg0ZmJjNTBmZDI1MmUzYWI1NTYyZWM3YTAgbGVnYWN5LXRydW5rCiszMzAxMiBhMzY5MzM2MjI0ZGRhNDk1MzlhMWRjZDY0NTk3ZDgxMjRjNWQ1NmE3IGxlZ2FjeS10cnVuaworMzMwMTMgMjA4OTRkYmM3ZjZhOGE1NzEyNDQyNTNhZWExNzE1ODE4M2Y0NmYyNyBsZWdhY3ktdHJ1bmsKKzMzMDE0IGIxZWIyYTQ3NTZiY2MzMjkzZTkxYmYyNzFjYTk1OTc1MGZhYmI0NGQgbGVnYWN5LXRydW5rCiszMzAxNSBlZDk0OWI4MmY5NWQ5YzhhNGIxOTc0YTQ0MDBjYzE4MWUxMDM2NjY2IGxlZ2FjeS10cnVuaworMzMwMTYgM2YxMGEyOWUwZTZhMWFlMDA1YzVmMjA1ZjA5NWMzODM5MmU1NjlkNyBsZWdhY3ktdHJ1bmsKKzMzMDE3IGZkYWM5YjRkMzcxNzI1MTMyOTk3NDhhZmEzYjc5NDMyZjdlNDNmM2MgbGVnYWN5LXRydW5rCiszMzAxOCBmODJiNmQyYjczZjExMTM3MGE4Yzg0ZDI5M2E4ODNkOTkyYzM2MGZjIGxlZ2FjeS10cnVuaworMzMwMTkgYzY2MTAwYzA5ZWExMTYyN2Q0OTAwOWYyNTIxMDI5NTc2NTFhNGRhNiBsZWdhY3ktdHJ1bmsKKzMzMDIwIGUwZjA3MWI0NzZmZDE2ZmRkZDdhYjg1YWI5M2RhNjM4NmZkN2ExYTYgbGVnYWN5LXRydW5rCiszMzAyMSA3MmNlN2NjMDNmMjdmZDI2MjJlZTcyNGZmMTcwYWMyMTU1ZmYyMTY1IGxlZ2FjeS10cnVuaworMzMwMjIgMjYxNmZlNWVlZWUxNzhkMzYzYzQyNTAyM2VkY2Q2MWQxZjgyYWQzNiBsZWdhY3ktdHJ1bmsKKzMzMDIzIGNhMjBjM2NiYzk1NmVhMzIzYmI5OGRjOTA3OTljY2U5MjU2ODNmY2EgbGVnYWN5LXRydW5rCiszMzAyNCAxMjE5MDIxYzQ4NjVhZTgwN2YzMzE0MGEwNWI1NGEyNjhmMzVmZjg0IGxlZ2FjeS10cnVuaworMzMwMjUgNThjMWFkNDE3ZWU3Y2FlZDQyOGFhMjIyNjg2NTQ5OGYwOGI4MTViNSBsZWdhY3ktdHJ1bmsKKzMzMDI2IGMwMWVkYzM1ZmZkNjc2YmE0YTY2YjBkMWRjMGI1ZDk1MmU4MWQwNGEgbGVnYWN5LXRydW5rCiszMzAyNyA4YzZkNGRhNWNjZDNmODlkNWU1N2ViMTkyNjkwYmQ4ZmFmZmI5OWYwIGxlZ2FjeS10cnVuaworMzMwMjggMjBlMWFkM2FlOGJiMGNhMWEyM2ZmMDY1MzhlZmNhNDYxOTMzZTFiMyBsZWdhY3ktdHJ1bmsKKzMzMDI5IDllN2QyMjkzMGRhYTEyZjI3YTU3YzJjMGIwNjRkMmY1OTUyNTI2NzggcmVsZWFzZTIyLW1haW50CiszMzAzMCAyM2Y2MTAxY2M4N2VmMTUxM2E5NDI5NzVjZGJhMWUzNGZiNzhlYTRmIGxlZ2FjeS10cnVuaworMzMwMzEgMmUyZGQ2MTQzOTQzOTc3ZWQ3ZTczNDA1MDYwOWY5MzhmYTJlY2FlNCByZWxlYXNlMjItbWFpbnQKKzMzMDMyIDQwODFiNDkwZDU0Y2FjZjIxMDFmMjcxZWE3NjJlNzk2MTU4OGViMmMgcmVsZWFzZTIyLW1haW50CiszMzAzMyBjMDU1OTc5MzAwZjE3ODA1MjI3MTA2NmFjNGJmZmUyM2NjYjhiMGQ0IGxlZ2FjeS10cnVuaworMzMwMzQgMjRlNzRkNjg3OTgwMGJiYmIzMzNlMDc5YWY0NzVhNzgzYWRjMDY2MCBsZWdhY3ktdHJ1bmsKKzMzMDM1IDM0N2U3YjZkZmQ1M2FkOWQ3MTc3OGZmMTRmMjk5Y2RhMjhjMDExNjUgbGVnYWN5LXRydW5rCiszMzAzNiAyNGZmZjMyZWQwNjVjMzNkYWUwMzljNTlmNzk4MTRiY2IwZTY2YzgyIGxlZ2FjeS10cnVuaworMzMwMzcgMTVmMWRjNWI3ZGRjMWNmNjE0YjZiMmQ1YjAwNGRiMjdjZjFiYTJjZCBsZWdhY3ktdHJ1bmsKKzMzMDM4IDU4NWUzMDNhOTQ5MTM1MGM4MDY5MDhjYTQyZTc2N2VjMjZhNDBiYTIgbGVnYWN5LXRydW5rCiszMzAzOSAwZDU4OGZhZGMxZjgyZmZhZjU1ZTU1NTI1MTUyMzc0M2E1NWIyYTcwIGxlZ2FjeS10cnVuaworMzMwNDAgMmQzOWVjMGU1NWFhNWZhNGRiYzNjMjM4NzZhODk3YzllNjA4MTNhYiBsZWdhY3ktdHJ1bmsKKzMzMDQxIGJhZTZjZTZkMWU1YTM3ZDI2ZGMxMGE2NzNlY2E1ODk2MDFmZGZkMTYgbGVnYWN5LXRydW5rCiszMzA0MiBjZDVlY2M1YjM4ZWI4NTk3ZjY2MzYxNTQwNjc3NzNiNmZhOTVkMDEzIGxlZ2FjeS10cnVuaworMzMwNDMgZWZmMzMzMzRjYTY3MzdkMjA2MTc0MTlmYTUwMDFkMTRlZjBkNDhiMCBsZWdhY3ktdHJ1bmsKKzMzMDQ0IGRiNDZjZWRhZjdjZTIwYjIxNDQwOTEzYTQ3NTZjNzhhYzE0NmM1NWYgbGVnYWN5LXRydW5rCiszMzA0NiA4NTc0MjhjYjQxOGM3YzhlM2ZhNjkxOTRhMzZjNzdmMDJlMTU4NTZkIGxlZ2FjeS10cnVuaworMzMwNDcgNjU0OTA4ODQ3ZWVmOGJmNjBkYTY1NmZkYzBmMDQzZGM3MmU3YjA5MCBsZWdhY3ktdHJ1bmsKKzMzMDQ4IDNiMmUyYjE0NjgxYzAyZTBiYjIzMzljMTM3YjNjNjBhN2QyMGJiOWIgbGVnYWN5LXRydW5rCiszMzA0OSA5ZTFmOGZjNWU3MWQzMzQ3MjJiNjEzNzdmNzMwMGRlYjU0NTZiNzdmIGxlZ2FjeS10cnVuaworMzMwNTAgMjZlMDdhNjg0ODkwY2JjYzk3NGJmNjY4YTJkODFhMjliZWZkZDFkOCBsZWdhY3ktdHJ1bmsKKzMzMDUxIGNlMjViNGQ3NDZlYTEwMDY3ZTBjYTM1ZmM1YzFhN2VhMzQ2YjdiYzMgbGVnYWN5LXRydW5rCiszMzA1MiA5MmZmZTUwMjExMjgxOWYzM2M2NzExYjFjZTM5MWZiYzdlMzI2NjhlIGxlZ2FjeS10cnVuaworMzMwNTMgZmE2MDRhZjBjZGJmYjYzMWJmNGIxNGZmZjg1ZTZlMzcyNWMyNWY1ZCBsZWdhY3ktdHJ1bmsKKzMzMDU0IDYxZTk2NmM5ZWNlOGQ5MDhkYWZjNWMwMzI0ZWE1MWQwNTYxZGRlOGQgbGVnYWN5LXRydW5rCiszMzA1NSBlNmIwYTQwNmRjMzFlZjQyZWZmZDg2MWU3NWNiZjhkZmU1Zjc2Nzg4IGxlZ2FjeS10cnVuaworMzMwNTYgNTI1NzY2ODE3ZWI2OGI2MmRhZTEwMGM0YWY3NmJjNTFjMDhjNjVmZiBsZWdhY3ktdHJ1bmsKKzMzMDU3IGIwYTdlYWM2YzY1MTEwMWI3ZmI3MDM1OTdkOTdkYWFlMWE1NTc2NzIgbGVnYWN5LXRydW5rCiszMzA1OCA4MzIzNmY1OGU2ODEyMWUzNjUyZWU5YjFmNWEyZDgyNTI0ZGZhMWVjIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwNjAgY2YwYmFhZjE2ZTBkN2Y1MjFkZWIwMGUxZjk1Y2RkZGZiNDQwNDIwNSBsZWdhY3ktdHJ1bmsKKzMzMDYxIGEyZDRjNjRmNWI4YjMxNGI1M2U0YWRhMDY3Yjk2YTc1ZGVmYjdjNmQgbGVnYWN5LXRydW5rCiszMzA2MiBkMWE4YzczMjM1OWU3ZDk0MTJiMjBhZGNjOTRmNzIzMTQ5ZmU3MjgzIHJlbGVhc2UyMi1tYWludAorMzMwNjMgOGM1YTY4NTNhMDJhZGI4MWJkNjdlYThhMDhmNGMyNmY1MTcyYjhkNyBsZWdhY3ktdHJ1bmsKKzMzMDY0IGJlZmZjNzM2NjZmZDIwY2EzOGI2M2Q0YTNiNDYxMjRjZjNlY2NiNjEgbGVnYWN5LXRydW5rCiszMzA2NSAzYjU0ZGZmMTMzMTAxZWUyOWI5NDhiYTA4MTdjOTQ2ZWRkNGVlYjQwIGxlZ2FjeS10cnVuaworMzMwNjYgOWJiNmYzYzViMDRhM2VmOGNlYzE0ZjBlMzBmNzc0YWEyYWVmOGE4YiBsZWdhY3ktdHJ1bmsKKzMzMDY3IDMxYjJjYmE2NGIzOTliZjU5MzE3MjNlMTY2MzkxYmNjMjc4MzE1NWMgbGVnYWN5LXRydW5rCiszMzA2OCAyOTc2MDA1Njg4NGE5ZTcxNTIxZWFlNTBmZGM2YTM2YjFiMzI5ZTM1IGxlZ2FjeS10cnVuaworMzMwNjkgZjJkZjljOWYwZmNiNjA5YjZlOTY4NDY5OTgyMDI2MGMwYWI2YzNhYiBsZWdhY3ktdHJ1bmsKKzMzMDcwIGJhYzJjMGU3YzIwYTEyMjI1MDAwYWU2OTlkZDdmYThjMmY3YTFjYTcgbGVnYWN5LXRydW5rCiszMzA3MSAzNTZiYjU5YzU0ODZiMmU1ZWIyYjFmNWEyYTI5ZWRlYjY2Yjk1ODBjIGxlZ2FjeS10cnVuaworMzMwNzIgNjQzODY0NjRmNzE2OTExNzdlOWE0MmQ3MWJhNDQ4OWExZWFjZTFhYSBsZWdhY3ktdHJ1bmsKKzMzMDczIDBhNDBjNjg3YWY1ZWM5NjgwMDgwMzJlNzRkZTJiMTU0MDMyNmE4MDMgbGVnYWN5LXRydW5rCiszMzA3NCA4ODk1MWE1ZmQyYTllZWMwM2Y0NzE1OWFjMTc4YjUwYjQ0ZjYwODRmIGxlZ2FjeS10cnVuaworMzMwNzUgYWIxZDg1Zjk4NDg1Njg3NTUwYjEyNmM0M2YyNWIxOGI3NzAxN2MyOCBsZWdhY3ktdHJ1bmsKKzMzMDc2IDllMWQ3ODA5YTk5ODE2YWQ5YTA3OTUyODY2MDA5YTZiZDIyYjhlMTcgbGVnYWN5LXRydW5rCiszMzA3NyAxOWY0ZjQ4YmIwMmE3ZTZlMDE0YzNkM2YyOWZhZDUxNGIyMzYyZjM2IGxlZ2FjeS10cnVuaworMzMwNzggNWE4ZmQ1YjNlNGM0MDUxMGIwNTc4MGFjZDM5ZjVlNjFiYTg3ODUwNyBsZWdhY3ktdHJ1bmsKKzMzMDc5IGY4N2ZjZDA4NzBiZjJjOTg2ZGQxZDgwNTMwMjFlMzQzZDI0NGI3MDAgbGVnYWN5LXRydW5rCiszMzA4MCAyYmE1ZWM2YjNjZGEyZmIwZTdlZGE1NDc5NjQwYmEzZTcwNzY2NTQ1IGxlZ2FjeS10cnVuaworMzMwODEgY2Y4YWUzYjBkY2RjOTcwYWE4OTRlMmZkMGRkMDE2MDA2YzEyNjdhZiBsZWdhY3ktdHJ1bmsKKzMzMDgyIDdjNDk4MzFkMjNjNTliMDdiNjYzNjBkNzQ3ODMyOTA4MmQ5ZDdmY2MgbGVnYWN5LXRydW5rCiszMzA4MyBmYzM5MmRhYmUyZTMwZjBlYThlOTBlYjNjMmQyYTgwODY1MzhiZDA2IGxlZ2FjeS10cnVuaworMzMwODQgYjZjMjcxYmEwM2UxODE0NDM2NWEzODcyMWY2ZjM2ZWEwMGMzOTRjZSBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDg1IDA4OWZiZTNhMTE0ZWY5YmVjNjRhYjU5ZDZkNzcwNTNkMmRiYjYwMGMgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4NiAwZDYxYTI3YzM4OTY5ZTA2ODQ2YWU5Y2ZhOTFiMmMxMmU3ZjViNGVhIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODcgZmZkMDJiYWFiMjU5MzIwZTczMjZjMDk3NjM3OTFiN2Y2NzdjOTQzYiBsZWdhY3ktdHJ1bmsKKzMzMDg4IDcwZDYyNWZmNTYyYjVkNjljMzU5Yjc0YzRjMmQ0NmQzYmIyZGVkM2UgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4OSA5MjNlNmZiODU1ZmY0ZjdhMzczMmIzYWU0NDBjMWIzNTViYmNiMTU1IGxlZ2FjeS10cnVuaworMzMwOTAgZWRjZmVmOTQ0ZTJmNDA2YzgyN2FiMTE2ZjgwZmI0YTY0M2JlOTVkMCBsZWdhY3ktdHJ1bmsKKzMzMDkxIDVjNTZiZjNjYjIwNTUwODUyOTI5ODRiMmUyODg1OWExMTdlZGZiNzMgcmVsZWFzZTIyLW1haW50CiszMzA5MiBjNDgxYzY4NjI3NWE3ODVhNTkzMDQ1ZjBkYTA5OTVjNWE4NmM2YTYwIGxlZ2FjeS10cnVuaworMzMwOTMgYjgwYTIyMjUwZTRmMTFhNGI0N2I1YTAxY2QyODBjODU1ZGI1Y2M1NCBsZWdhY3ktdHJ1bmsKKzMzMDk0IGVmZWQ2ODk3M2EzYmVmMzQwODIyNzM2MDViMmNkYzdkY2RiN2NiYTMgbGVnYWN5LXRydW5rCiszMzA5NSBlMmYyNDEwYzA5NmUwM2YzZDQyMGY3YTAzMDdkZGFlNWU4YWVjMjZkIGxlZ2FjeS10cnVuaworMzMwOTYgMTkzMzk3YzQ0YWU1MTY0ZjJlYzA3ODNmM2UwNDA5NWVkZGRhMzg0NCBsZWdhY3ktdHJ1bmsKKzMzMDk3IGU2OWU1NDU1MmQxMDhkYjY3NDQ0N2JkZmY4ODM5ZDk3ZTJjNWE2YzIgbGVnYWN5LXRydW5rCiszMzA5OCAwYmE3YzEwMTY0OGFjODI4MzQwYzhlNGU3MzU0ZmJiODU4MWZlNWRmIGxlZ2FjeS10cnVuaworMzMwOTkgZmE0OGE5MGVkYTEyNWFlYjJlODQ4YjFlMDk2YTNmZTZmMTBmN2M5NCByZWxlYXNlMjItbWFpbnQKKzMzMTAwIDE3OWQ1NDUyYmI5ZDlmNjExNGE0MzA4ZGZhZDczYTgxZjg3MmQ2ODYgbGVnYWN5LXRydW5rCiszMzEwMSBiNDA5MDJiNDIyOTBkYjY5NGVmZTMzYmMyMzY2MzA2ZTYxMDljZjdlIGxlZ2FjeS10cnVuaworMzMxMDIgN2I3MDA0MzkzYjViMjZmMjUzZTZmMWMxZTE1N2VlYTQ1Y2IxN2MwNCBsZWdhY3ktdHJ1bmsKKzMzMTAzIDUyYmFhZWM3ZTVjZjA4OWYzNTE2NTY4ZDYxNThiMmFmOGQ2NWFkMmQgbGVnYWN5LXRydW5rCiszMzEwNCAxNzQzMWJhOGNjNGJmYWRhMzI2ODRhYWVmNDcxNjI1Y2E1NzE1ZjE5IGxlZ2FjeS10cnVuaworMzMxMDUgNmZlY2M5OWFmYTY5ZmZkNDgwYTI5MmU2MjBkNTAxZWU2ZTc1NDczZiBsZWdhY3ktdHJ1bmsKKzMzMTA2IGJiMTkxMzRlMGE0ZDBiOWU0NDMzMmJkODVlYTk3YzMwZDQzZGFlZjMgbGVnYWN5LXRydW5rCiszMzEwNyA4ZDE2MDA5NWViNjY4M2UzYzIyYTU4OTc2MzlmZGQ2NzczMDdkODQyIGxlZ2FjeS10cnVuaworMzMxMDggZTVkMDMzNjA1NzFkOTdjYWZkZWQ0MjNjYzg2OGE5ZTYyZTA2MzM0YSBsZWdhY3ktdHJ1bmsKKzMzMTA5IGU5OTUzYjM5OWQ1NTNkNWNjOGRmMGFlOWE3OTA3NDJmNDJjMzIxMzYgbGVnYWN5LXRydW5rCiszMzExMCAyY2I5NjlmZmUxYmYyOGU1NGIwOWZjYzY0NzdhNWJlZjY1YWJmOTI2IGxlZ2FjeS10cnVuaworMzMxMTEgNWM3NjI3NTI3ODJjMjkzODI4ZDA5MTJjZDU0ZmNjNDcwNTM5ZTRjMiBsZWdhY3ktdHJ1bmsKKzMzMTEyIDJkNjlhNzA3YzQ5Mjk4NTQ5MmEzMWYzYjU3NzUzYjliMmQyNTVhNzUgbGVnYWN5LXRydW5rCiszMzExMyA1NjM0MzgxNmI1ODk3ZjhhZjcwMmYyNWEwZDE1ODBlODY5NmQzMjU1IGxlZ2FjeS10cnVuaworMzMxMTQgMDUwNThkODEzNDQxOGQ0ODg1ODQ1M2UxMTRiZjA5YjRkZmNjMjg5NiBsZWdhY3ktdHJ1bmsKKzMzMTE1IDMwMTZhMTllMzIwZTY0NTE3MDZmOWUwZjU3YzJjNDFiNzk0MmQzZDIgbGVnYWN5LXRydW5rCiszMzExNiBlZmFkNTlmMzk1NjRiY2Q5NDgxNzk3MTdjYmRmODZiMGI2ZmQ4ZDFjIGxlZ2FjeS10cnVuaworMzMxMTcgOWI3MjU1OGExZWI5ZjQwYmIyYzBhNGJlMTcxOTgxYWE3NjVhMzE4OCBsZWdhY3ktdHJ1bmsKKzMzMTE4IDZkMTYwZWUzNzE5NjU1OWUzZGM2MjM3YTc3Nzc1NDYxNTMwY2UzOGIgcmVsZWFzZTIyLW1haW50CiszMzExOSAxZjMzNDE5OGU2ZDc2M2M2YzBhYjc4ZDgwODJhYTQ3OWRhNjcxZDMzIGxlZ2FjeS10cnVuaworMzMxMjAgYjgyMmMyYThlMDhmNDMwNWZlYTRhNjdmMmE1YWRkZDViZDVlYzI5MiByZWxlYXNlMjItbWFpbnQKKzMzMTIxIDhiZWQ1NTIwMzU1OWY4ZGQ1YzVhYzM5MWI3NmFjN2YyNDFiNzllZDggbGVnYWN5LXRydW5rCiszMzEyMiAyMWJmY2I3Yzk3NmRiNWU0M2M4NzcwY2I1NjFmNTJhZjVkYTM5YTVkIHJlbGVhc2UyMi1tYWludAorMzMxMjMgOTg4M2NmOGZmMjE3YzllZDg4MjUzZGM0ZTQxYTEyZGI3YmEyOWRhZiBsZWdhY3ktdHJ1bmsKKzMzMTI0IDhiMTc2NmM4YWQzYmFiNGU5Y2IxNTBmMjQwYjgyOGQ3NmJmOTE4ZWYgbGVnYWN5LXRydW5rCiszMzEyNSAwNjJlMzQyY2NmZjU4YjYyOTUzNTRjZGJmMTBmMWQ0NWEyNDNiMDAxIHJlbGVhc2UyMi1tYWludAorMzMxMjYgNzRhMjhmMmU5NGNmOWUyOTJlZWVkODEwODVmOTU2NTU1ZmI1ZjZlYyBsZWdhY3ktdHJ1bmsKKzMzMTI3IDJjYjg5MzBjZTIyNTk5MjZhZTRhNzlhN2I5Y2QzYjljZmRhOTYyMmUgbGVnYWN5LXRydW5rCiszMzEyOCAxZTJlNTQ4MjE3ODVmOWE0ZWJlZDZlZjg3ZmI0NGQ4NWQ3YzJjOTczIGxlZ2FjeS10cnVuaworMzMxMjkgMzUyM2JhOTI0NTBjZTY0MTYwNmM4OTdkMmQ4Y2U0ZDA5ZTgxMjNlNiBsZWdhY3ktdHJ1bmsKKzMzMTMwIDA0MTVhZjYzNDEyMjU4YmUxYWE0NWQ2OTFkYzY1NjM2Y2Q4YTIzNWEgcmVsZWFzZTIyLW1haW50CiszMzEzMSA1YzViNTg3NDY0ODY2ZGQzZDczMzdjYjk1YTEzZmI0ZTliY2E1MjZjIHJlbGVhc2UyMS1tYWludAorMzMxMzIgMGNmMWVjNThlMjIwYmE2ODYyYTE0OTliNTY3OGE3NGI1NGJlZjA1ZSBsZWdhY3ktdHJ1bmsKKzMzMTMzIGE3MjFiMDk0ZjdiYzJkYmZkNzExMjU1NmJlNjBmZTU0NDFhMDU0ZDUgbGVnYWN5LXRydW5rCiszMzEzNCA0ZjA3NmZjMDE5NWFjMjYyNGFlYTQ3OGY4YmE1NjJkZjQ0M2QzMWJkIGxlZ2FjeS10cnVuaworMzMxMzUgMWFiOTk3ODEyM2JlY2VhMTQ1ZjA5MGZhMWZhMGExMWI0MTYyY2QzYSBsZWdhY3ktdHJ1bmsKKzMzMTM2IDE0YTE1NDcxMjlmYmY1ZWJiMjI4YmM4MjliZjAwYTBmMTkyZjMyYjMgbGVnYWN5LXRydW5rCiszMzEzNyAzMzFhZjQ1ZGZhMGRjMDE3OGQ4YWYzY2EyNTFhNzdmOTE4OTAxMzkwIGxlZ2FjeS10cnVuaworMzMxMzggNDg3NDYxNGNjN2EzNTcwMzkyZDNlYzlmYWZkN2U2NmNkMmY2OTk1NSBsZWdhY3ktdHJ1bmsKKzMzMTM5IDUxMDYwYjE2OWIzMjM3YTQxNzgwNjFmOWNhYzFmZTM3MDMxMDhkODUgbGVnYWN5LXRydW5rCiszMzE0MCA4OTJkZmM5ZTcyNTY3ZmRiNzc5Zjk3MjJlMGE0MTA0NDBkODQ4YWNlIGxlZ2FjeS10cnVuaworMzMxNDEgZGViOTcxNWJjOGFlN2MwMGU2YzQ2MmU5Mzk1MjYwZTExYTNjZTVlYSBsZWdhY3ktdHJ1bmsKKzMzMTQyIDgzNGNkMTIxOGYxYjRkMjQ1ODVlODAwMDM5OWQzYmJlZjU2YzlmY2QgbGVnYWN5LXRydW5rCiszMzE0MyAwODZiZDllN2QyNDQyYTBiYTZjMzVlYWQ0NzNkNjg2YmRiZTMxOGViIGxlZ2FjeS10cnVuaworMzMxNDQgMDZmMjhhZGVhNmQyYzA5MWFjODg3ZjNiN2VmMTk0NmQyZGI2NTYzMCBsZWdhY3ktdHJ1bmsKKzMzMTQ1IGJkZmY5NjVkMjYwMzI5OWFjNjYxZWMzMzQzMjhlODA5YWQ3MzE3ZGIgbGVnYWN5LXRydW5rCiszMzE0NiAyM2U3YjI1NzdhNDY4ODA1YmY2MjYwY2IxZmE2NTQ2NGIwODk5ZTBkIGxlZ2FjeS10cnVuaworMzMxNDcgMzEzM2I1MGU5OWYzMjY1Zjk5MzU5NDFlNDRkMjhiM2E1Y2I5Y2FlZCBsZWdhY3ktdHJ1bmsKKzMzMTQ4IDg3YTI1M2FhYTBkNTIxMzdjZDc1MTM2YTY1YzQ3NjMzMzc3MGM0NGUgbGVnYWN5LXRydW5rCiszMzE0OSA4MWU3MGYxMmQ2MmZjODQ3NzliNTJkMjU2YzNkODdiZmI1ODlhMTE5IGxlZ2FjeS10cnVuaworMzMxNTAgMTM4NmY4NmM1MDk1ZjQ3NTk0NjM0ZWFmYTE0ODFjYjUwMDFkN2Y1NiBsZWdhY3ktdHJ1bmsKKzMzMTUxIDUxNDNjZmU3Y2M3NWNjMDQ0ZjA5ZjUwZGYwYzE4YjJmZDgzOTkyODQgbGVnYWN5LXRydW5rCiszMzE1MiA2MGRhYmE5Mzc3NWM1MjM2MDM2NTlkNTY1YjMzYmNiNDM1YjFiNmY1IGxlZ2FjeS10cnVuaworMzMxNTMgOTcxOGRmODQ5ZGE5MjEwMmRiNWQwNjg0ZTY5M2YyNmUyMjYxYzc1YSBsZWdhY3ktdHJ1bmsKKzMzMTU0IDA4OTA0NjYwMTI3MDY1OTI5ZTliNDJhYjNkMjVjODZkNjBhMzMwMDYgbGVnYWN5LXRydW5rCiszMzE1NSA1MjIwNDc0NjYwY2U4MWQyNjg4NDhjYjc4YmU2ZDEyZjE4NDhmYjg3IGxlZ2FjeS10cnVuaworMzMxNTYgYWJjMmEyMGRjM2EzMzRjMmNmNGE4NWMyY2FkZGJhMmVkMjcyZjU5ZSBsZWdhY3ktdHJ1bmsKKzMzMTU3IDQwYzVmMWMwOGVjOGFhYjBkMWY4Y2FlMDUyMGFmNjgzMTk3ZDI0NjEgbGVnYWN5LXRydW5rCiszMzE1OCAxMDA3MDhlYjhjODJkMmM3ODdiOWQ3NWU3ZDNiODk5NDhhOTRkZjYwIGxlZ2FjeS10cnVuaworMzMxNTkgOTRmOTEwN2Q5YTYzYTlkOWEyZTkyMjU3MzMwMDVhYjQ3Mjg1YTcyNyBsZWdhY3ktdHJ1bmsKKzMzMTYwIDY1MzFjNzZiNjA0ZGNhZmUyYzI1NGNiNGM1NWYxOGI5M2RiZWRkYjcgbGVnYWN5LXRydW5rCiszMzE2MSAxNDAyZjI2NWU0OGY2MTNiYWY5ZWIzNzRjNTA0NDBkMDEwYmIxOWNlIGxlZ2FjeS10cnVuaworMzMxNjIgZDBkNGQ2OTZhYjI0ZThkNjI4M2U5NWMzMmExNDc2NzY5ZTM1YjlkNyBsZWdhY3ktdHJ1bmsKKzMzMTYzIGFhODRlZGUxYzM2NGViZGNmNTJlZjM2NTZiZWUxOTQzOTI0ZDMwNTIgbGVnYWN5LXRydW5rCiszMzE2NCA2YzZiMzIxZDFkMTBlZmQxZjA0MGQ1MTUxYWNmNzAwMzg3ZTZmZWJjIGxlZ2FjeS10cnVuaworMzMxNjUgNzFjMDZiYzVhNzNlYTFiNmU2NTM5MjZkYjEyNjk1NTc0NDE0Mzk0MCBsZWdhY3ktdHJ1bmsKKzMzMTY2IDdlMzM2M2E3NjYxZDI1NTFjYzY1ZTY4ZDNkMjQxYmM5NDk0Mzg4MDggbGVnYWN5LXRydW5rCiszMzE2NyBkNzJiM2YwYTU3YTlkZDJjNzQwNDg0YmNlZGUyYThmZDgzZGRjNjA4IHJlbGVhc2UyMi1tYWludAorMzMxNjggNWYwMWQ1MTU4ZDFmODZlMjMzY2RiMzA0OWNmYWYzM2IzYmJmNGM5YyByZWxlYXNlMjItbWFpbnQKKzMzMTY5IGRiNDMxMjk0NzQ5NDBkODA0NzliZjAxZTkxMWI3OTQ5YWRhYmFlMjAgbGVnYWN5LXRydW5rCiszMzE3MCAxMTUxOGI2Y2U1ZWMwM2QzOWY1MWJjODY2YmNiZmUxNjZhYTQxNDZkIGxlZ2FjeS10cnVuaworMzMxNzEgNTM1NTQ2ODhlNWEyMmU4ZmEyNTBlYWQ1M2NiYmRmMjJmZTk2NDNiNCBsZWdhY3ktdHJ1bmsKKzMzMTcyIDI5ZWVlNWMxZGQ0MmZjOGE0MTAzODAxYzI4MjUzMGZhYmEzN2ViNzkgbGVnYWN5LXRydW5rCiszMzE3MyAwMWU5MjUzNzFkN2M5NDA4OGNhODE4OTIzZTFkMWZkZTAxMDY0ZmRjIGxlZ2FjeS10cnVuaworMzMxNzQgZDFhY2Y4OWQxYzQ5YTZkNjAxMTVmZWYzNGZhNDg4YjYwMzBkYmZhYyBsZWdhY3ktdHJ1bmsKKzMzMTc1IDY0NDRlYTNkYzgzYzQ0ZTE1ODIxODQ3MjY5YjEwZjRiZjY0NjVkYmYgbGVnYWN5LXRydW5rCiszMzE3NiBlNTRlMmRlNDZiYzNkNTg3MzdmNGY3M2JjOTIxODlkNTBmMjQyYmVhIGxlZ2FjeS10cnVuaworMzMxNzcgY2E5ZTM1OThjY2ZiNWVjODFiM2ZkYmM5ZjlmMjY0ZGE2MzJlNTAxMCBsZWdhY3ktdHJ1bmsKKzMzMTc4IDIzMWEzNTEwZTI0NmZlMGM5NDNlNTZhYjA0Y2FlODg3NjVmODY3ZjEgbGVnYWN5LXRydW5rCiszMzE3OSBkNzYxZmY1NWIzYmVmNDFmZTUyZmEzZTk1YTY3YzhiMTljMTZkODA4IGxlZ2FjeS10cnVuaworMzMxODAgOTRhYzFkNDJhNDIwNGYyZDBiODZjYjQ4YTQ4Y2MwNDg4MWIzNWEyYSBsZWdhY3ktdHJ1bmsKKzMzMTgxIDA1ZmI1MWQwN2FkYWY1YmYzMTRhODc4NWVjODUwYTJlMDQyOWY5ODggbGVnYWN5LXRydW5rCiszMzE4MiBjNmViNTY5ZTRiNzkzMDliODUwYThjOGIyNTIwYmM5NGUyMDhjYjZhIGxlZ2FjeS10cnVuaworMzMxODMgNWQxMWZkZmE3YzAwODQ3NTAwNTQyMWIzYzFkNDUwYzAwMDRiYjcyYyBsZWdhY3ktdHJ1bmsKKzMzMTg0IGI3NGUwY2MyMWNiMDQ0ZmFiY2E1NWUyYTg4NWVkOWI0ZmJmOWJkNjggbGVnYWN5LXRydW5rCiszMzE4NSA3MGU2NDlmYTNmY2QxMzkxNmE4YWIyNTRjZWE2MDVjYWU3NzBlZWZkIGxlZ2FjeS10cnVuaworMzMxODYgODdmMzBmY2ZhZDQ4ODgxYTIzYTM3YmM2MWJmNzcxMDM5Nzk1MmU0MiBsZWdhY3ktdHJ1bmsKKzMzMTg3IGIxYWExZDQzOWNiYTM1NWVlZDkwMmUxZTJmMTY3ZDA0NTkxZDU1NWIgbGVnYWN5LXRydW5rCiszMzE4OCBmYjMzMmEwOTQ5Yjc0ZjU2MzE1Zjc0MzY3MzY5M2E2MjdiYmJmMDhlIHJlbGVhc2UyMi1tYWludAorMzMxODkgZjZkNTAzZGU0NWJkZTBmOWYxYTQzODhjYjM4NTAyYjY0NzVlMzAwZCBsZWdhY3ktdHJ1bmsKKzMzMTkwIGY2N2U0YzVhZWE5MzdkYzM4MTQ0MDg0NDhiNTc2ZTgzZDJkMzYwNTYgbGVnYWN5LXRydW5rCiszMzE5MSA3YWVlNmVmNTk2ZGRiZGU2MzgzYTk2NWQ1MTg2M2E1MGU0OWVkNDVjIGxlZ2FjeS10cnVuaworMzMxOTIgZjQ4YmI5NGYzMjg5NTgzMjg3MjZlODM4ZGNjMjRiODU0ZmZkYzkxZSBsZWdhY3ktdHJ1bmsKKzMzMTkzIGYxNzVmNzc5YmU4OTBiN2Y5ZjFkMGIwOGE1MTBiNzljMTViNjAxNzQgbGVnYWN5LXRydW5rCiszMzE5NCBlYTc3ZDQzZTIwM2QxZjU2ZjUwYzE1Yjk0ZWZlMTEyMjM3ZmM5MjljIGxlZ2FjeS10cnVuaworMzMxOTUgMmZiZDI1NmExZGIyNTYyNmJiZmY0MWRhNmM5MGY4Njk4MGNlMGIxMCBsZWdhY3ktdHJ1bmsKKzMzMTk2IDBiNTMyMmI4NTNkMmY3NTFiNjAzMTBiZDZiMjEwNTBmYTRkZDM4ZWIgbGVnYWN5LXRydW5rCiszMzE5NyA4YjAzMDBlN2YxZGNiMTk5MDE5YzY5ZjM4YjBmMDZkYmQxMWRkMmVkIHJlbGVhc2UyMi1tYWludAorMzMxOTggYzY0Njg3Y2Q1YjM3MWQyMzIzODM5MjNmN2IwOGY1NTQ2OGEzZjZkNyBsZWdhY3ktdHJ1bmsKKzMzMTk5IDM0YzA0MGRkZjllOGVhZDI0NDVhMjFkN2IyYmQwYTkxNWY1N2U4NGQgbGVnYWN5LXRydW5rCiszMzIwMCBjZDYyYjMzNTllOTU2MGU1Zjg3NDUxNTg0MjZjYzBlM2RkNDgzYjM4IGxlZ2FjeS10cnVuaworMzMyMDEgZGM2YzIxZGM4Njg0ZTA2Mzk3Y2MwMTZkMjJjNzA1N2U4NDlhZjhmNyBsZWdhY3ktdHJ1bmsKKzMzMjAyIGZhZmI2ZWIwZjk3ZThlNGM2OTQyMzUzMzBlM2JkZWJmMDk3ZWE2MzUgbGVnYWN5LXRydW5rCiszMzIwMyBjM2JjN2VkOWQzMTU5OWUwZTBmOWJkMzg4NGU2ZTY0YmRkZWNhMWI2IGxlZ2FjeS10cnVuaworMzMyMDQgMmQ0MDI3ZWZiYzEyZTIyZmRhMjc4NWVhYzNjYjNlODA2MGFmMTFhYSBsZWdhY3ktdHJ1bmsKKzMzMjA1IDY5YmM3Y2E1Y2MxYThmNTAxZjkzNjgyYTAwZjkwOGMyMWJlNTY5YzEgbGVnYWN5LXRydW5rCiszMzIwNiBlMjI4MzM2YWFmMDhkN2MzNTdhM2QwNjZmOGFhMmM5NzBhYmY1NmE4IHJlbGVhc2UyMi1tYWludAorMzMyMDcgOTE5NzI4NWEzOTMzNWUwNGIyZTQ0NGNlNDliMzI4YTNmM2I0MDRmMCBsZWdhY3ktdHJ1bmsKKzMzMjA4IDMyNTkyZjFhNmYyMmI0OTlhMjEyYzY4NjhmYzM5OWY4ODA2NTQ2ODkgbGVnYWN5LXRydW5rCiszMzIwOSA2ZmUwMjM2OTBkN2YxMGQzY2M1MDZiYmE1ZjE2YmIzNzcwMDg1OWUwIGxlZ2FjeS10cnVuaworMzMyMTAgOTQ0ZjYwMmI3OGZlNDg4OWExMjRjMmFmM2JlYzA4OWQ5ZTAyNzIwYyBsZWdhY3ktdHJ1bmsKKzMzMjExIDg3ODBhNDlkOGVmMmMxNDNmYjY1ODEyYzUxNDMxMzVmYzUyNjVkMjEgbGVnYWN5LXRydW5rCiszMzIxMiA3YzdmNDA0NWJhMzY3MWEwMjA5MDY0ZGY2OWU1ZmYyNTVmNGYyN2VkIGxlZ2FjeS10cnVuaworMzMyMTMgNGQxZmE5YzVjYjJjZjI1ZDkwY2NhNzE2MjNiZmI3N2U5N2M2YTA2NSBsZWdhY3ktdHJ1bmsKKzMzMjE0IGU5NzNkZWQ4YTkyYTg4Mjg1ZTAyOTEwMDJiYmYxOGIyYzY4ZWM1NWIgcmVsZWFzZTIyLW1haW50CiszMzIxNSA1MjAwMjg3ODg5YmQyYTQxMDRlZTM4YjI3ZDFkNTNjZDEzMTI4ZWI0IGxlZ2FjeS10cnVuaworMzMyMTYgNmE1ZTk1YzY3ZDMyMWMxMDU4OWQ5M2Q5ZTJkMDI2NDg2NmU0Mjg1OCBsZWdhY3ktdHJ1bmsKKzMzMjE3IDFhNDk4NjkyMjM1NzcyMDNlMjQzNWJkYjRmMGQwNzAyNmFkYzE2ODAgcmVsZWFzZTIyLW1haW50CiszMzIxOCA0Yjg2ZGNhYzIyMDEwNzZkNjM5NmVlMGYyMGYxYTgwMTQ1YjQzOTAxIHJlbGVhc2UyMi1tYWludAorMzMyMTkgZGUzZDQ5ZTBmNjQ5MTNjMDM4OTFhMGUxYjY3YWI0MWQ1MTRlMjFhOCBsZWdhY3ktdHJ1bmsKKzMzMjIwIDQyNzIzMjJiOTJlNWU5ZTgyNTY2ZDIyMmRjNjY4NTlhNjAyYmM4NjcgbGVnYWN5LXRydW5rCiszMzIyMSBlNWQzYjFkODljNDAxODAwZDA0ZDdhZDQwNWZjZmEyOWZmM2FhYTI3IGxlZ2FjeS10cnVuaworMzMyMjIgOTU4YjQwZDgwYjMzMTgzMGQwMzNiYWNjMmFhMDBhMGNkZTg0MzdjMCBsZWdhY3ktdHJ1bmsKKzMzMjIzIGEyOTYyMTRkMmViYmEzMTcwZDE5MTgwOGNhODNlZmNlMTEzMzVkOTcgbGVnYWN5LXRydW5rCiszMzIyNCA3MWQzZGExMTU4MzhmMzMxYWUwZjRiNThkYzhiOTc5Zjk3MGRjY2IxIGxlZ2FjeS10cnVuaworMzMyMjUgNDQ4YzE0NDE5NjRmZDYwZTliZGM1N2Q4ODk0ZGMxM2Q3MTViNjVhNiBsZWdhY3ktdHJ1bmsKKzMzMjI2IDc1NjQ2ODMwN2U2MTc5ZmU4NGYxZDhkMzQ1NzA5ZDI1ZGI1NjEyZmQgbGVnYWN5LXRydW5rCiszMzIyNyA5MTI1OWFlMzVlMjk5NDY3MjM5OTFjYTY5ODZiMzNkODE5OTQ3NDJlIGxlZ2FjeS10cnVuaworMzMyMjggOGU5MmNjMDRiNjRiMDAwNGMyMmFmNzQwMjVhYmIxZDQ4OTgyMmI3NyBsZWdhY3ktdHJ1bmsKKzMzMjI5IGQxNWUyYjdkOTkxY2M5MGIxNTU0YmM4NjRkYjI3YjdmMTNkOWNmNzggbGVnYWN5LXRydW5rCiszMzIzMCBlZDQ1YTk5NTEzMTI2OGIyNGNlMGM3MTdjZDM5NDdkZmNiZDQ4ZDQ4IGxlZ2FjeS10cnVuaworMzMyMzEgYWQwMmEzOGE5NmVhOWVkZWExZTI3MmZkZDM3YTQ2Y2VjNzMzNzE4NiBsZWdhY3ktdHJ1bmsKKzMzMjMyIGYyNmQxMzIzNmNlODRhODA5ZWMyN2I2NTFjZjcxMDNjMmNlMTZjNTggbGVnYWN5LXRydW5rCiszMzIzMyAxYWE5MDU3YzM4YjRlZDdhOGI1MjVhMWNhYTAxMTNhY2M3MjE2YjFiIGxlZ2FjeS10cnVuaworMzMyMzQgZWVkNzQzMGI3YWYxNGE3ZjU5ZTNjNWU1NDk4NGQ3YWIzODAxNjhiOSBsZWdhY3ktdHJ1bmsKKzMzMjM1IDVjODczN2JkNGNlNmQ0ZmJhNTI1MTNkZTZmNWZiM2NkMWExMjRkYWIgbGVnYWN5LXRydW5rCiszMzIzNiBlMmY3ODM0ODgwMjQ4ZDRjMzI1ZmJjMzg5ZGU4OWRiOGUyODE5ZWIwIGxlZ2FjeS10cnVuaworMzMyMzcgY2RjNzVkZTJmNWMxYTY0ZjNhZGZmMGI0N2EzZjA4MmQ4MGJjZjQ2YiBsZWdhY3ktdHJ1bmsKKzMzMjM4IGI4YjU3YmRiZmNlZGY0YzhmMTQ2MDQwMjQzMTVmMDk5MGM5NDY0MmMgbGVnYWN5LXRydW5rCiszMzIzOSBmOTNiOTE5ZTU3MjkwZWQyNmQ1MjcyMWEyYzJmNmUxZGM0ODljNDIxIGxlZ2FjeS10cnVuaworMzMyNDAgMTY5ZTAxZWMzNTk2NTlmY2UzYTYzYTQxMGU0NDBhNjVlMzdkNDRiZSByZWxlYXNlMjItbWFpbnQKKzMzMjQxIDU2MjNmOWUyYjU1NWYwZTk3MDA2Y2E4YTBjMjFlY2Q0NDY2ZTI2MDkgcmVsZWFzZTIyLW1haW50CiszMzI0MiA2MGNlNzNlYTljOTJmMzQyZjU1MmY2NzU1ZWNlMTRhZDBlYzZhMWRiIGxlZ2FjeS10cnVuaworMzMyNDMgYTlhOTNmYzUwYjhkOGFlNzg3OGI2MWM1ZGRmMTA1YTJmZmM0MDYzNiBsZWdhY3ktdHJ1bmsKKzMzMjQ0IDMxMmZiNzZiNzNjYzdjNzRkMTkxNmRmYTcyM2U1ZTM2MjU0ZjJjZjEgbGVnYWN5LXRydW5rCiszMzI0NSBlZTE0ZTViMDZlZDEzNmIxMjM4M2RhYjYxZDE2MjllYmJhYzc3NzljIGxlZ2FjeS10cnVuaworMzMyNDYgN2ZlNGU5ZjE2NjM0N2I2NDFmYTRkZWQ2ZDNjZGQ0ZDZjZDIxNDVmOCBsZWdhY3ktdHJ1bmsKKzMzMjQ3IGRhMDI0OGZjZmM1MjUxYmNkNzEwY2FiMTUxN2QyMDc4YzIwNDg1NWIgbGVnYWN5LXRydW5rCiszMzI0OCA5ZGYxZjNkODllNjAwYzQxODdlMzNkOTUxNGI2MzhjMTE0MTIyMzNmIGxlZ2FjeS10cnVuaworMzMyNDkgOGIxNjMzNzAzNzJkZGFkMGUwMzQwNjQ4OGQwNWIwYzU5OTFiYTZjOCBsZWdhY3ktdHJ1bmsKKzMzMjUwIDdmNzllYWQ3MTJmNThkNDcxZGY3YTQ0MzA2NzM1MDk3MTIzNDM0ZjggbGVnYWN5LXRydW5rCiszMzI1MSA5OTY1ZWJjZGQxNzJmOTJmNDEwOGYzNTMwYTVhNTkwZjRkOGFjYTYwIGxlZ2FjeS10cnVuaworMzMyNTIgYjc4ZDYzZGFlMDMwNzZlOWNkYTdkNWY3ZjYzNGFkOTUzZWQwY2Y4MiBsZWdhY3ktdHJ1bmsKKzMzMjUzIDg4MDdlOTAxYzUyNmNiNDRiYjlhNjYwZTM2OTc4YWNkMmM3NjMxN2EgbGVnYWN5LXRydW5rCiszMzI1NCA0YTNlZjM4MDc4ZTU1MTU3ZDM3ZWQ0YjkyODA4NTQ4NDkwN2YxNmE1IGxlZ2FjeS10cnVuaworMzMyNTUgOWEzMDQ0ZTU3ODFlYWFjNTg4NGM2YmNjYmUxOGU2MjJhMDNmYTkzNiBsZWdhY3ktdHJ1bmsKKzMzMjU2IGE0MGNmMWQwYTg4N2ZkZmI3YzZlMzI5YjNkNzEyYjdmZmZjNGI0ZmUgbGVnYWN5LXRydW5rCiszMzI1NyBlYWEwNjJmZGQ0NmFiMDI2NTYxNmM4NDA1NGQ4MzliMmExZWU4YmI2IGxlZ2FjeS10cnVuaworMzMyNTggODkxMWNhODg5ODFhZjg2MmU2M2U0YWFhZTljYjI0Y2E3YzViN2E4ZSBsZWdhY3ktdHJ1bmsKKzMzMjU5IGIzNWZmOWI1OTE0OTMxYzM4ODgwZDkyNzA5ZjRlNjk1MjJmZWM0M2EgbGVnYWN5LXRydW5rCiszMzI2MCA0NjZiNTc5ZTAwODgyMjYyYmZiMTJhMmFlMzExNThhMzE5YmE0ZTc4IGxlZ2FjeS10cnVuaworMzMyNjEgMjAxY2VhZjk1OTc1MWY0NDJhM2E2MDliNzY1YmZkMmZmYzIwNWU4NyBsZWdhY3ktdHJ1bmsKKzMzMjYyIDJiMTNiNThhZTNhOGU3NjM3YWY4NDNjY2Y3MjQ4NTUwOTI2NjllNTcgbGVnYWN5LXRydW5rCiszMzI2MyBlYTM4NGIxZDBkMTNkYmI2NzdjYzE5NmY0NjIxNGMwMWUyNTgyMzllIGxlZ2FjeS10cnVuaworMzMyNjQgN2I1MTllYTc1MDFhYWJmMjhhYjNhOTFlODE1ODFmZTQyOWM1MTk1YyBsZWdhY3ktdHJ1bmsKKzMzMjY1IGNhYThjMTIwZTJjYjJiMjk2ZDYwN2NmZTNkYmQwOWM5OTNkYzg4YmMgbGVnYWN5LXRydW5rCiszMzI2NiBmZWE4ZGVlMjczMzJmZmNmNTJmNTk1ZTFmZTlkODQxMjYyM2IzYjc2IGxlZ2FjeS10cnVuaworMzMyNjcgOGEyOTE2YzQzM2Q5NGZkYjJjOTQ3NzM2OTVkNWFhNDk4NjFhNDExOCBsZWdhY3ktdHJ1bmsKKzMzMjY4IGU0MzEyNmM0NzBhNzZlYTlmYmQzYjkyZTdlOGI3OGFmNjMxZmY3OTUgbGVnYWN5LXRydW5rCiszMzI2OSAyZDE2YzNlZmUxNDdlN2JkNDRiN2Q3OGY0ZmZjZDNmNGY1YTk4NmE3IGxlZ2FjeS10cnVuaworMzMyNzAgNjBiNTNkYjE0YWEzY2M0MWEyY2VlYzg0N2M4NTBmYmY1ZjhjMmQ0NyBsZWdhY3ktdHJ1bmsKKzMzMjcxIGJlNjIwMDA3ZWMxZjUyNjUyMDE4NjAxYmZiZTJmNTgwNTQxNTZhNjUgbGVnYWN5LXRydW5rCiszMzI3MiAwMTY5YWNkZjJiNWJjMjY5N2UxN2FlMDJkMjY1NmZjZGM4NTYzYWVkIGxlZ2FjeS10cnVuaworMzMyNzMgY2QzZjliMTcwYzM3ZmNiYzE5MmE3YzBlNTA5OGVlYjYyMmRlYTAzYyByZWxlYXNlMjItbWFpbnQKKzMzMjc0IGNhYzg1NTM4N2I1NjdiNjk2NzBhYzhkYmU2ODk3NjNiOGY2MzBlYmIgbGVnYWN5LXRydW5rCiszMzI3NSA4NjM0MmZhODkyMGRhZmUzMGJmMWQzZjk5NWJkNjE0MDc5MWRlZTYxIGxlZ2FjeS10cnVuaworMzMyNzYgMGJkYjRhY2VkNmUyMGQ4NjZjYzM1Zjg3ZjdjY2M4NDUxNTIxZDU5YyBsZWdhY3ktdHJ1bmsKKzMzMjc3IGNkMDkzYTk5MjM4ZDcyMzY0N2Q5MmUyNGM3ZDU1OWYyMzZhM2I0OGEgcmVsZWFzZTIyLW1haW50CiszMzI3OCA0NDgxYzViZGExOTY2YWQ4NjBhMTY5ZTMwMDFjZTY5NzAwOTljNDY5IGxlZ2FjeS10cnVuaworMzMyNzkgMWJhOTBkNTE0OTdiYTY4NTcwMGQ4ZjAwNGRmZWYwOWY0NDFkYjAxZSByZWxlYXNlMjItbWFpbnQKKzMzMjgwIGJhZGNkMTU4ZDgxY2EyM2Y2MTc5YTQ5NmNkMTE3M2UyMTJlZGQxY2UgbGVnYWN5LXRydW5rCiszMzI4MSA1ODI1MWUwYThiNzg3YmNlM2IzNGY1ZjVmYmMwOWJiMzg0ZGYwMGViIGxlZ2FjeS10cnVuaworMzMyODIgZjgwNjlmN2VkZDRhMjliZjZjNTA0Y2RmZGM0YTk1NDkwMTRmYmI1NSBsZWdhY3ktdHJ1bmsKKzMzMjgzIDc3ZWRhMGZiMGUxNDlkNDcyMDBlMmI4NDgxZTk4YmIyZDFhM2Y2ODYgbGVnYWN5LXRydW5rCiszMzI4NCBkZWQ5YWJjYjkxNzRhYTc3NGQyYTc1NTJkNDFlY2QxZTU5OWEzMjAyIGxlZ2FjeS10cnVuaworMzMyODUgN2QzMDU4NWE1OTM0MDU1MTVmNTE0YzQ4MzVlNGVlODY4ZGFkMTkwMCByZWxlYXNlMjItbWFpbnQKKzMzMjg2IDg1M2U2YTJiOTA2OGVlNjQzMjE0MzE3MTEzMDRkNWZmYWU5ZDNiMWEgbGVnYWN5LXRydW5rCiszMzI4NyBhNDY0MDIwZjE1ZDY3NTM4ODdmNjJhNzRiMWMwOTlkNjc4OTg0MGRmIGxlZ2FjeS10cnVuaworMzMyODggN2Q0MTc4NWZiNjBjNmU0ODI3ZWQ2YmE1Y2ZlNGI1ZDc3Y2U0MmI1YyBsZWdhY3ktdHJ1bmsKKzMzMjg5IGJhMTJkMmI0YjMxZGRiYjZhZDQ5MjMyNGZiYTE4NWU4NmIxZmZlOGUgbGVnYWN5LXRydW5rCiszMzI5MCBlMWZhMDdiZjg1NDg4ODViMDkyOTk0NGVlMGNkZGQ2OTQzZmQ4MTNiIGxlZ2FjeS10cnVuaworMzMyOTEgYmMxMjE1ZjdkYmEzODZiNWRiZjRkZjFhMjA5OWIzYTc0NDE4MGIzZSBsZWdhY3ktdHJ1bmsKKzMzMjkyIGE0ZDZiYzcxZjA5MWMyN2M5ZTRhZTkyYjcxYmZmOWNlZjcwZGUzOGMgbGVnYWN5LXRydW5rCiszMzI5MyA0MTBiM2MyMjIyMTE0Yzk4NWI3M2FhZTEyNjNiZmMwODdkYzQ0MjhhIGxlZ2FjeS10cnVuaworMzMyOTQgZjg4M2RiMjVkMzQ0NGJkZWFhMzNlYzAzOWRmYjBlOWMwMmIzMDdiYiBsZWdhY3ktdHJ1bmsKKzMzMjk1IDY3NmFhNjI4MzBkMGU5OTUyYmFkMGVhNzE1MTk5MzBhMzFlNzg0MjIgbGVnYWN5LXRydW5rCiszMzI5NiA1MzA0YmZmMjVlMTgzNGE2Mjc2OWZjYWY3N2MxYmFjNTNiZmMxMTBhIGxlZ2FjeS10cnVuaworMzMyOTcgNmFhOTcyYTIxYWM0YzE3MmQ2NTJkNTZmOGNlZDk2NDdjYjJmOWZhOCBsZWdhY3ktdHJ1bmsKKzMzMjk4IDFlY2RiOTRhMTg1MjJmODllZjdjYTEwMWU2NzgxMTllMjJjMjZkN2EgbGVnYWN5LXRydW5rCiszMzI5OSA5ZGU4MmRiYzNiZDAyYjdiYmU4N2I5MWYzMzhiMTA2ZjY0ZjVkYTQ2IGxlZ2FjeS10cnVuaworMzMzMDAgOTczYjFlMmUyNzI2MzgxNWQyOGJkZTgwZWMwMGY4YThiYTNkODU2OCBsZWdhY3ktdHJ1bmsKKzMzMzAxIDVkN2U2ZTgyODIxODdmNWQzNDE3YTNjMjRjMWRlODdmYzQ0ZTIzNTggbGVnYWN5LXRydW5rCiszMzMwMiA3ZDVhOWMxYTAxOTcwODQ2MGMxYTZlZmQzZWU2ZjQ1YWU1MDYxYjNjIGxlZ2FjeS10cnVuaworMzMzMDMgYWQyZGNhNWNmZTgxYTc3MDdlODYwODEwOWU4YTM2YzM3NzRmNDJkOSBsZWdhY3ktdHJ1bmsKKzMzMzA0IDQ5MDlhYTY0NDA1ZmIxYzIwNmYwZDc0ZTVkMjIyNzI4NjBmZDU3MDIgbGVnYWN5LXRydW5rCiszMzMwNSA1OGYxNDFkMWNjY2EyOTk1YzEzOTIyMThiZmRkNDdiNTc3Njk4ODJmIGxlZ2FjeS10cnVuaworMzMzMDYgZmE5NzI5MzUzM2E5MWY0ZGM2OTI4NmJkYTY5MzU4ZGZlZTE3ZDMxOSBsZWdhY3ktdHJ1bmsKKzMzMzA3IGE2M2VhN2M0NzVjYzVlMjgwMWQwMWY4ZGJlN2VkZjg5ZGYxZWJlNWUgbGVnYWN5LXRydW5rCiszMzMwOCA2MWY5OGVkNGI2YjU4ZDNiZmNjMjZmODRkODg3YmYwNjVmMTM1MDk4IGxlZ2FjeS10cnVuaworMzMzMDkgMDUwOWE3NjUyMTY3ZjQ4YWYzZmVhMTVkZDNkNThmYzY0NWM0MWQ2NCBsZWdhY3ktdHJ1bmsKKzMzMzEwIGQ2NjhhODMzNjc3NDc4MWNkN2ZhMDZmZTlkOTJkMzljY2NkMTU0Y2MgbGVnYWN5LXRydW5rCiszMzMxMSA0NjJkZTkzMzMyNTFjYTgwMTQwNDcxNmJkNjQ0MTAyOTJmZDVjNzBjIGxlZ2FjeS10cnVuaworMzMzMTIgOGJkMjU4MGUwMTU1NTIxZGRlMzQ3NjMxM2MxNjI5OThhMmM1YmM5YiBsZWdhY3ktdHJ1bmsKKzMzMzEzIDM4ODE4ODNiOTQwZWMwZTQzMGI0ODYzNDIxMTVhZGFmNTY2MTRiYjEgbGVnYWN5LXRydW5rCiszMzMxNCAwYTM3NTFkZjQxOTUyYjU0ZjkwNjQ5YzkwMTY4NmZkOThhZTJkOWMyIGxlZ2FjeS10cnVuaworMzMzMTUgNjA0NTQyZTU5MWZhNjgxYzY0ODg3OWJiNmM3NDZmNmZlNzdjZDBmYiBsZWdhY3ktdHJ1bmsKKzMzMzE2IDE2ZWVkMmU5OGZkOTM1NDY4ZGFkMmNhNjE4YzlkMDIyNjYwYTUzMzkgbGVnYWN5LXRydW5rCiszMzMxNyA2NmI2ZDFjZTQyZmU2MWUyMDM5NDkzNmJhZWM5YzdiZjlkYTBkNzY1IGxlZ2FjeS10cnVuaworMzMzMTggZjliOGQ0YmYwOGZiOWFkOGE5ODYxODBlMTEwODgyZGI0ZjM3YzdmZCBsZWdhY3ktdHJ1bmsKKzMzMzE5IDU4Mjg4N2JhN2E2OGRkN2NkNDI2ZmNjOThkODdkN2JhOWZlZTg0OTggbGVnYWN5LXRydW5rCiszMzMyMCA1YjEwNWE5NTAzMzQ4ZmIyZWRhZWI1YjQwMjJkMGM3MzJjOTZhYzUwIGxlZ2FjeS10cnVuaworMzMzMjEgOTU1MWNkYWY2ZTdlMWE4ODQyMjNhYmQ2ZmYzNTdlMTc2ZTAxMTk1MSBsZWdhY3ktdHJ1bmsKKzMzMzIyIDY5NjE5NTQyYTkxNmUzNDNkMmIzNzAxNDFmMDI3MDJjMTQ3OTgxYTQgbGVnYWN5LXRydW5rCiszMzMyMyA5YTRiY2ZkZGJmYTEyZjE1NDUzYmMyYjc1Zjk2YTVjYzVkZmYwNmMxIGxlZ2FjeS10cnVuaworMzMzMjQgNzkzMDNkZTlhMDVhNmVmM2M4OTMyZTZlNjUyMTE4ZGNkN2ZiM2NjMCBsZWdhY3ktdHJ1bmsKKzMzMzI1IDEzMDhkN2VjOTk1MzUwOTllM2ViZmZmNWUwMWQ0MDY2ODgwYTA5ZTYgbGVnYWN5LXRydW5rCiszMzMyNiBjYjkzYjg2MjUzMmY0OTAzMWMyZDI2MjdhNTUwOGFkMzAzZTY1YzcwIGxlZ2FjeS10cnVuaworMzMzMjcgM2NiMTgyMTI1MjFkMzQ4OWIwNWZjNWRhODQxMGZhNTI3MDZkZTBiMCBsZWdhY3ktdHJ1bmsKKzMzMzI4IGQ3NjI2YjgwZGU5NTE2OTRhZjY0NGVlYWZmMjEzOGViOTBhYzIyYWEgbGVnYWN5LXRydW5rCiszMzMyOSA3MTBjMDlmNGMwNWEyM2Y0ZTMyNGE2YTc3NzhiYjI0ZjU5NWQzZDY4IGxlZ2FjeS10cnVuaworMzMzMzAgYmE3NWFmN2FiMTM2ZjMxYTlkOGJjOGRiZGY2ZTJhNGY1MzJmMDdmMSBsZWdhY3ktdHJ1bmsKKzMzMzMxIDM2YTE3OTA0YTNlZDAwNjBlNGExY2M5N2ZkNzhhZTg4ZjhkOTUwNzYgbGVnYWN5LXRydW5rCiszMzMzMiA5NmVjYWFiNGNiYTY4MTM4YzVjNTc4OTA1ZTk3NTYxYTlkMWU4Y2MwIGxlZ2FjeS10cnVuaworMzMzMzMgYmU5OWY1OTcwNjg4OTBjYmZjZTI3YzAzZTkyZDc0Y2UwZDQ1NjA0MCByZWxlYXNlMjItbWFpbnQKKzMzMzM0IDY2ZGMwNTAxMDQ3ZDRjMjYwOTdhYzY2YmJjODk1YTU4ZTA0Y2VkMTkgbGVnYWN5LXRydW5rCiszMzMzNSA0ZmY4M2MwYjQ1ZTkyNTIyYjE4Y2Q1OWZkNTAyMjIxNTc3NzVmZDg4IGxlZ2FjeS10cnVuaworMzMzMzYgNTEzOTdlZGQyYmQ0ZDVkMzZhODU3MzI1OTgyM2FjNTU3OGVjZWIxMyBsZWdhY3ktdHJ1bmsKKzMzMzM3IGYwODExNDdjMGM4YWZhYjU0ODRkZDM4Y2U3N2Y1NThhNjhiMjVjZTUgbGVnYWN5LXRydW5rCiszMzMzOCAyNjkyYjFjOTJlOGQ5MWEzNjJjNTIwOWMyZTQxN2Y5MzIzMjUwNzQzIGxlZ2FjeS10cnVuaworMzMzMzkgMDUyYmZjYmFiYjdiOWQ5MmYxYWM5NmNlMzVmMmQ3YWI3ZjY0ZDc5NSBsZWdhY3ktdHJ1bmsKKzMzMzQwIDM2NDAyN2E4MTViOGNmMjUzMWUyNWMyOTE4NzUxMTRkOWFhYjMxYmIgbGVnYWN5LXRydW5rCiszMzM0MSAyODBmYmU1ZjRlMTZlY2M2Y2ViNjUzYmVkYTU1Y2ZmYmJkMjY3ZGY2IGxlZ2FjeS10cnVuaworMzMzNDIgZDBmMTU5NzdmMzdmNDc1MmM1YTg3NjFjNDY5OTY2YjNkMmE5MzgwYiBsZWdhY3ktdHJ1bmsKKzMzMzQzIDRlMWE0N2Y1MjA0Y2JlNDE5ODY1NGUzMzUxNTUyYzY4YTkwYWIzMGEgbGVnYWN5LXRydW5rCiszMzM0NCBjMTQ5ZGQ0Y2ZkNjZkZjFhZjFhNzkzMzAxMThkYmFhZDk4Yjk1NjE4IGxlZ2FjeS10cnVuaworMzMzNDUgOTIwNzc3NjQwZDI4OThkNzcwZDk3Y2M3ZmZhYmYzMzgxM2M4YjEzOSBsZWdhY3ktdHJ1bmsKKzMzMzQ2IGQzODgwYzIzNzYyN2ZhYzVjNTdlNGQ1Nzc0YmFkODAxZjBiOGViOWUgbGVnYWN5LXRydW5rCiszMzM0NyA2ZDllZDU0YTQ4MjE5MGM3MzUyYmMwZDFjZTE5NjAzM2JiZjUzY2E4IGxlZ2FjeS10cnVuaworMzMzNDggZWIwYjY3ZTNjMDRlYzU2N2EyOWE3ZTc0MTU3MTQ3NzhhM2Q5ZTlhYiBsZWdhY3ktdHJ1bmsKKzMzMzQ5IDM3MTA5MmNlNWMyYmMzM2NkNWY4MzA5N2I4Yzk0ZGYzZDI3ZmQ0MzQgbGVnYWN5LXRydW5rCiszMzM1MCBjNWJiMzFlNDVjNjY4NzZiMDA4NDU2MzM4YTViMTc1MjE5NWU0MDFlIGxlZ2FjeS10cnVuaworMzMzNTEgOWZlNjdmN2YzNDU5YWI1Njc5OGE1YmVhN2U0YjdhMGExYzc5ZDU4MSBsZWdhY3ktdHJ1bmsKKzMzMzUyIDdhMjc2NmM5YTdiNThjODc2OGYzYjQ5Mjk3NzQxODAxYTc0MTU5ODYgcjIzYjItYnJhbmNoCiszMzM1NCBmNGUyZTVhNWVjNjIyYjExN2I4YjZjOGIxNjk0NzA4Nzc2NmE3NTNhIGxlZ2FjeS10cnVuaworMzMzNTUgMjViOWZkNmQ4ZTMwMGI0MDQ1NTI5NWFiMWY2Y2Q4NDkwYzMxYTViMyByMjNiMi1icmFuY2gKKzMzMzU2IDcyZGNjNjNmNGRlYTZiNmYwZTFmNTU1ZDZmYjMyZGYxYmE1OGM0OTcgbGVnYWN5LXRydW5rCiszMzM1NyA4NDJkOWUzMGRiOWMzNzI2ZjA4YzQzOWEwYjdjNDY2ZDdlMTU2NmY2IHIyM2IyLWJyYW5jaAorMzMzNTggZWY3YTFkMjg1NzcxNDk0N2I2NTQzYjZiMjU1ZGZkN2JiYmM4ZGU1MiByMjNiMi1icmFuY2gKKzMzMzU5IGY0ZjExZWQzYWU0NDA5ZTc2YmZkNjIwNGVhZmYxMmI5ZTM5NTQ4NDUgcjIzYjItYnJhbmNoCiszMzM1OSBkYzFiMWM3YTZiOWU2NGY3YTIxMWVhOWU4YTdkYTQ4M2MyYmJhMTY3IHIyM2IyLWJyYW5jaAorMzMzNjEgNTM3YzhiMWFlZjdmYWM4ODY2ZTZkYmJiZTQzZGNiMjczMzZmNDJkMiBsZWdhY3ktdHJ1bmsKKzMzMzYyIGM0ZjlmZjI5MTIyOWJjODg0NmIxNWM2NjQyNjM5NGRiNDVkMmQxOWMgbGVnYWN5LXRydW5rCiszMzM2MyBkNzE2NGZiZWM3Y2UxNDAzOTFiYmE2OGVmYzAyODk2MzJlMDU5N2JmIGxlZ2FjeS10cnVuaworMzMzNjQgMjZiYTcxYWE1YjIxNTU1NmE3M2Y1NmI1YWZjNmJlN2FiOGIxZDg1OSBsZWdhY3ktdHJ1bmsKKzMzMzY1IGQwZGM5NTY0NjdiZjFiNmNjNmY5NGIwZTA5MGE2YThiMTQ0N2U5MzIgbGVnYWN5LXRydW5rCiszMzM2NiAzZWQyYzlhNzY5NjU2ODMzNTJlZWVkMTY2ZmU2MGYxMmY5NTM4MjlkIGxlZ2FjeS10cnVuaworMzMzNjcgMWQ3NjM4NjJkMWExZDcwMmQ5MDEzNjJkNzlkN2YxMGM3NzFlYmRjOSBsZWdhY3ktdHJ1bmsKKzMzMzY4IGYxYzI3OWQ3MDBhNmQ2ZjBjZmU3NjEzOGYzNDYwNjk5MGMyZWY4YzQgbGVnYWN5LXRydW5rCiszMzM2OSA4ZGJjNGVjNTcyMGRiZDVmM2Q5OWM1YTU2NDZiYWNmYzRiNzdlNjBmIGxlZ2FjeS10cnVuaworMzMzNzAgNjQ4M2VlYWVhZDgyYzBlYmNmZTI2ZGI1NjI0OGQ3NDAzNzA1NDM1MCBsZWdhY3ktdHJ1bmsKKzMzMzcxIDdiNmZhN2JiMjRmMDY0Njg0ZjM4MDUzMGQ1NDQ2ZWM3YmQ0NDUxOGEgbGVnYWN5LXRydW5rCiszMzM3MiA4ZmYwNDBlOWQ1NjY5NTEyYTJjN2UyOTc3NWYxZDk3YWM0YjUxMDJmIHJlbGVhc2UyMi1tYWludAorMzMzNzMgZDY3NzQyNGM5Y2E3MTA1OTMxNzI0YTI3ZTc3NzNlNjAzNzEwOWE3MyBsZWdhY3ktdHJ1bmsKKzMzMzc0IDg5MWU1NTAyZWM5ZTNiMTE4ZGI4MjJlZTY4MWJkMzgwZWEyYjMxMTcgbGVnYWN5LXRydW5rCiszMzM3NSAxNTM2OTQxYjU0N2YwNmQzYzhiMjdlN2RlODcxYmM1Zjk2OGJmNWE0IGxlZ2FjeS10cnVuaworMzMzNzYgYTRmZWFkMGUyNGY4YWVmY2JiOTQ0N2MxZDNmZTE5Y2Q3OWZmMThkZCBsZWdhY3ktdHJ1bmsKKzMzMzc3IDc2MmUyYTI5N2FiOTdhMjFiZDdlNWI2MGRlZDczYzA4NTBjMTk0MDQgbGVnYWN5LXRydW5rCiszMzM3OCBlMzgxNjRhYTViZTUxM2I3ZGI4YjE4Y2I3MzJlZmMxYmI3MzY5M2EzIGxlZ2FjeS10cnVuaworMzMzNzkgMWYzNTQ3ZDQ5MzlmZGM4NmU3MmE4MjhlMjUzYjY1MWE5ZGZhNjM5NiByZWxlYXNlMjItbWFpbnQKKzMzMzgwIDRkMjY1NDdlYmZjMzg4NGM2MzRiMmM5N2E0YzU3ZGE4OWY1ODdhY2EgbGVnYWN5LXRydW5rCiszMzM4MSBkOGQxOTc1NTFhMWVkYmVlZmVhZTJkOGU1YTQzM2YyMTM4NDhiMDIxIGFzdC1icmFuY2gKKzMzMzgyIGI3NTI4ZGFlNzY1NjdiMWY1ZjExNmZhNjlkZjYyMTA2NmEzODQyMDMgYXN0LWJyYW5jaAorMzMzODMgNTgxMzJjODEzZDdiZTk0NWVhNzZkOGFmOGE3ZTg5MjE4Y2I1MThmMyBsZWdhY3ktdHJ1bmsKKzMzMzg0IDhlZDJlZDc3ODY5NDE2NTJlMjhjNDcxNTg1ZjM4ZDhiNTg4ZTNmZTAgbGVnYWN5LXRydW5rCiszMzM4NSAyOTJlODQ0NjZlNzgxOTVkNGY1NjM3YzczZmIyZjVlMzc0MzU3ZmE3IGxlZ2FjeS10cnVuaworMzMzODYgYmYwNjM0Y2MwZjE3NTA4ZmU4Y2M3YmVjNzlkZmE5ODkzZjBiZTNjNSBsZWdhY3ktdHJ1bmsKKzMzMzg3IGU5NTMxZWU1ZjE4ODlmOThkMTU0MjI4YWIxYmUyZWZjYThjZTA1YWEgbGVnYWN5LXRydW5rCiszMzM4OCA5ZDMzZGQyY2NmZTZhNmU5NzZmZjExZTQzNjVlZTUxNDU3YzU5NGFiIGxlZ2FjeS10cnVuaworMzMzODkgMmE1ZTZjZTNmM2ExNTc1MjBhNWM0MGIwNTA2Mjg1ZTMxMmI0NTg4ZSBsZWdhY3ktdHJ1bmsKKzMzMzkwIDcyNGYyZWQ3OWRhOWIzZDM2ZGJlNDZlODkzNTE0M2Q4ODQ2YTIxMzcgbGVnYWN5LXRydW5rCiszMzM5MSBmYTRjZjg3OGM1Mzg0NDhjODgwNjY5YmQyOTVmYzE4Yjk5OGQ3YzhmIGxlZ2FjeS10cnVuaworMzMzOTIgMDUyZmU5NjY4NGVhYjZkODZkOTYyZjU0N2Q4OWU5OWIzMWRjYjI0ZSBsZWdhY3ktdHJ1bmsKKzMzMzkzIDA5ZTQyZjc5ZjgzMGJkZjI0OWQyODM4M2M0ZGM1YWJkNGNjMTJjOTUgcmVsZWFzZTIyLW1haW50CiszMzM5NCBhNDRkMjY3ZjAxNjI5ZmE0YzMzMDk0Mzg2MWYwNmRiNDIwM2I2MDFjIGxlZ2FjeS10cnVuaworMzMzOTUgY2RiMjE3YThlYjA0NDVkYzk4MzdiZGRjMjlkMmFjNjhiY2Y1M2IzZSBsZWdhY3ktdHJ1bmsKKzMzMzk2IDNiN2I0ZmQ1ZjdjYWQ1NmJlN2YwYWExYWQxZTUyOWMxNjRhZmEzMDEgbGVnYWN5LXRydW5rCiszMzM5NyA3ZDBhZjQ1NjFlZWQxZGUwNmQ1Mzc0MjdlMGY4ZDcxMDgyNWZjYzZiIGxlZ2FjeS10cnVuaworMzMzOTggODVlNTJlYzg1NjI5OTc2NzBjMTljNWE4ZDhlNjUxM2UxMTVmOWFjNiBsZWdhY3ktdHJ1bmsKKzMzMzk5IDk2MmY0NDNhZTFkOTFiMzg0NGY3YWM1YzRmMmQ1ZmUyOTdhZDA5ODcgbGVnYWN5LXRydW5rCiszMzQwMCA0YzkwYTYzMWQ2MzJlZGZlNGU2MTAwMWQ4OWQyYjM3NTY4NDg3ODEwIGxlZ2FjeS10cnVuaworMzM0MDEgMzcyMTZlMWM2NzQ3MjRlMGQwNWY0YWQwMzFiMzBlODQyMTUyMWNmNiBsZWdhY3ktdHJ1bmsKKzMzNDAyIDBlMTMxZTI5NDY2MjVlNzVjZjc4MmQwZmNkNjMxMjlhNTQ1YWVkNjEgcmVsZWFzZTIyLW1haW50CiszMzQwMyA0NTJlMzNhMDhkNTU3MGEwNmY4ZjNmOGU4ZGY5NGQ0ZTY2MTU4ZDZiIHJlbGVhc2UyMi1tYWludAorMzM0MDQgMTI0N2Y4NGFhNmE2YzAzYzkxNTg1YjQwZTU4YTE1ZjEzNjcyZTEzOCBsZWdhY3ktdHJ1bmsKKzMzNDA1IDM5YmU1YjI2Mjc5MmM5ODAwZGRkZmMxZjU4MmRjNDY5ZTI3Y2JlYWUgcmVsZWFzZTIyLW1haW50CiszMzQwNiBmNDMyOTZjYmM5ODUwMTM0ZTRhYmZjMTBlNDAwNWU3NjZhZjFlN2Q5IGxlZ2FjeS10cnVuaworMzM0MDcgZTg1MGNjNTFjMjhmZDg4ZjdmNWY5NDQ2YTJlMDgwYTM5MDc4ODAyNiBsZWdhY3ktdHJ1bmsKKzMzNDA4IDY1ZTUyYzI0NzVjZTUxMzU5NGVkOWJiNmNjNDVmNzJkNzhmNGFkNWEgbGVnYWN5LXRydW5rCiszMzQwOSBhNWU3MzM2YzAwOGQzOGFkYjg5ZTIxN2RkN2JhMTQyMzBmYTk0NDRmIGxlZ2FjeS10cnVuaworMzM0MTAgZDVmMjdlNjdlMWFhZThjY2NjZTYxOTE5MThiYzZmYWFlYWUyM2I1ZCBsZWdhY3ktdHJ1bmsKKzMzNDExIDNhZDg5OGI4ZjgxM2FjNTVmMTUzMWI4NGYwZTg0NzFjOGZhNTQ5ZmYgbGVnYWN5LXRydW5rCiszMzQxMiA0YzllZjJhNjI4NjRkNWFiODkxZmE3NjRmOGI3ZTYwMzI3M2VlNDVlIGxlZ2FjeS10cnVuaworMzM0MTMgOGNhOWNlMzZhMjA2ZmZkMWE4NDNiNzRmOGQwODBkYjQ4NGYxZTMwNSBsZWdhY3ktdHJ1bmsKKzMzNDE0IDY4ODM1YmYxMDFlY2IxM2NjOTU3NGVmY2Q4OGQ5OTZlNmRmYzFiMDIgbGVnYWN5LXRydW5rCiszMzQxNSBiOWM0MGZkYTYwOWRiZjc2NmJjYmNlZDA4Y2M2ZDM5NGNkNjk5MTBhIGxlZ2FjeS10cnVuaworMzM0MTYgNGY5MjkzY2EyZGU2MTJiMDM1MWE1OWZhNzJiYTg3YzdiYjdmMmQ0ZiBsZWdhY3ktdHJ1bmsKKzMzNDE3IDMyZjk2YmFjMjExM2NmMWQ2OGJmYTQwYzg1MTAzYjNjZGM4YmEyNjAgbGVnYWN5LXRydW5rCiszMzQxOCA2MWZiOTk2ZWJhNmUwZWIwMGI1OTNiYTJiMzBmMmVlMzg1YjEyZjhkIGxlZ2FjeS10cnVuaworMzM0MTkgZWI4MjhjNjRmY2M3YmFlY2EwMDdlZmZlOGRmZjkyNDRjMTY2ODM2MyBsZWdhY3ktdHJ1bmsKKzMzNDIwIDVhZjg5MDM3Y2ViYTA4MTVmNzA5ZWQzYTMwYTU3NzEyMzVmYjFlNjQgbGVnYWN5LXRydW5rCiszMzQyMSBhYzlhMWYwYTMzZGM4ZWU3YTgwYzk1ZjczNDE2M2FmODVjNzI1MzkyIGxlZ2FjeS10cnVuaworMzM0MjIgYjg2NDQ2ZjAzNTBmZjAxOGQ4NzgyMGIxMTAyMjcyZDg0MTI4NmMyMiBsZWdhY3ktdHJ1bmsKKzMzNDIzIGI1ODIxZTE3NjQ1MzgwMTJiNTExODk1NmJjOWNkNzRjZTlmYzE2ZGIgbGVnYWN5LXRydW5rCiszMzQyNCA5YTQ0MmY0YTY0NDNkZDFkNjE0NTJiOGI5MmVjMzIyZmM2NTY2NTNhIGxlZ2FjeS10cnVuaworMzM0MjUgYjQ0ZGVlZWM1YzVlYzhmYzJiMDcyM2NlZTk3YzNiMDY4YTM1NmM5NCBsZWdhY3ktdHJ1bmsKKzMzNDI2IDA3NWIyOWFkOTdjMzIxZDU3ZDYzNTdiMDJkNzFmNjQxNTY5MjQyNTEgbGVnYWN5LXRydW5rCiszMzQyNyA1OWRhNWI1N2M2MWJhY2QyMjllZDdjNTFjNTQ5YjI0NmNlZTc0MDZjIGxlZ2FjeS10cnVuaworMzM0MjggM2MxZjc4MzQwYjY1ZTg2MmYwMDYzZWI4MmNiNzE1MWIwM2Q2MTZlNSBsZWdhY3ktdHJ1bmsKKzMzNDI5IGI0OTNhN2U3NWQ5NzdmYTJhMmE0M2NiMDFlZGUzNTZlOTBlNzUxMjIgbGVnYWN5LXRydW5rCiszMzQzMCAwNTkxZmQ5NTZiOWQyODU3YmIyMjFkZjQwZWM0YWYyY2MzMGFlMTgyIGxlZ2FjeS10cnVuaworMzM0MzEgNGVjODgwYzUzZTJhMzA3ZGUwYzE2ZGNiNGNmNTU5OGQzNjg5Y2RjOSBsZWdhY3ktdHJ1bmsKKzMzNDMyIDllYjZkY2VkMTZlNmJlMDc3NjU4ODU3YzA0MGIxZWRjY2RkNWNhY2EgbGVnYWN5LXRydW5rCiszMzQzMyA3OGM1MTA5ZmZhZGEwNjMxOWI3OTA5MzM3MjJmYWU2MGU0ZmE1NDBlIGxlZ2FjeS10cnVuaworMzM0MzQgMDA1NzY1YTU2ZWMzOWIyMjYwMmE2M2YxODg3MjY0ODBkNzNhOWYwMSBsZWdhY3ktdHJ1bmsKKzMzNDM1IGI4NGNjM2M3ODA4ZjgyMzk3ZjlhN2E5OWM0ZTk5MzVlNDQwOTliYTIgcmVsZWFzZTIyLW1haW50CiszMzQzNiBmZTVlYjE3ODAwZjljMzFiNDdkNDU1YmUzZGNlNjIyYzEwOTc0NDZlIGxlZ2FjeS10cnVuaworMzM0MzcgZTllNTgzMmQ3MDZmZjFhMDkzMDg1MDFkMmNkMTEwMzNmYTRlZGYyZCBsZWdhY3ktdHJ1bmsKKzMzNDM4IDdhNDc4ZDEzZjI3ZGEzMzY5YzZlOWI2ZjY2ZTY0OTcxYzRiMmE3YTMgbGVnYWN5LXRydW5rCiszMzQzOSA3NzcwYjc4ODEzNDZkMmU1ZmYyNzc1OWNkMDE2YjE2NWY5OTgzZmIzIGxlZ2FjeS10cnVuaworMzM0NDAgZWRhNWQwMTVlMTFjMTg2Mzc3OGYzOGM5ZDgyMjM1MmMzYzUxNjYzYyBsZWdhY3ktdHJ1bmsKKzMzNDQxIDI4Y2ZhNTQ2ZjFlYzc2NGRlMjMxMDY2NjdlYmM4ZTUyYWUzYWRlMGIgbGVnYWN5LXRydW5rCiszMzQ0MiAwNzAzNDVhZDhkNzFjY2JhYWQyN2VhYjRlODg4YjdjNTM0NTJlZjE1IGxlZ2FjeS10cnVuaworMzM0NDMgMzJlZmU1NGQwZThmZmQxOGYwMzcxZDRmMGIxYmE0ZDM4YTIxZjkyZSBsZWdhY3ktdHJ1bmsKKzMzNDQ0IGRkYzI0NzQwNGRhYjNlZjBmOTU2NmYxYWNlYTNjMWU2MjE3YmZkY2EgbGVnYWN5LXRydW5rCiszMzQ0NSA4ZTI3ZTVjZGU1OWFlZDE5M2Q3ODEzYjM3NDZhZDc3YWM1ZjU1NjA0IHJlbGVhc2UyMi1tYWludAorMzM0NDYgOTM5NjEzNDY4NGNmNTljOTM0MGZhZWUxZmFiMmIyMmNmMzcyYWIzNiBsZWdhY3ktdHJ1bmsKKzMzNDQ3IGU2ZjlmNmI1ZDhkN2U3MTAxM2JiZTY3ZTkxYTM0NTI1Y2FiODZmYWIgbGVnYWN5LXRydW5rCiszMzQ0OCBmNzMzYmFjNzhmODdlNGVmZTg1NDMwMDEyMzRiMTRmYmM2M2ZkNzkxIHJlbGVhc2UyMi1tYWludAorMzM0NDkgNzA1NmNjNWM4MTY3ZmMyZTRhMzMzZmQ4ZGM0MzZmZTQyM2MwZGU2YSBsZWdhY3ktdHJ1bmsKKzMzNDUwIGNlOTg4Mzk0Yzc1NDc4ZmRlMWE3YjdlOTM5NWI2M2UxODE2NjM3NzggbGVnYWN5LXRydW5rCiszMzQ1MSAyZmNkZTMyYThhNTc5OWU1ODQzODc2YjBlOTc4ZDlkY2FmNDc0N2FkIGxlZ2FjeS10cnVuaworMzM0NTIgZGM2YTQ2NzMxODYwNmY5ODU4NmRhOTc3NTlmYzE5OWU2ZjY4YzBkNiByZWxlYXNlMjItbWFpbnQKKzMzNDUzIGQ3YWZjZGM2OWVkNDkxY2NiNTc1ZTZiNjFhNzhhYTI5YjgxMzRhYjYgbGVnYWN5LXRydW5rCiszMzQ1NCBjNzNmYWY1ZGUxYmQzZDE0M2JmYWRhYzUyNmNlYmNlOTBiNDg1ZDdiIGxlZ2FjeS10cnVuaworMzM0NTUgNDY2YTU0MGNjMjI5ZmFiMjk4NGNhNDc5OWY3YzU3YzhlOTc2NTA0ZCBsZWdhY3ktdHJ1bmsKKzMzNDU2IDRmYzU2Y2FlNGViOGMxNjVkYzIwMjc0NzMxZGNiYjFkOGU3NTgzNTcgbGVnYWN5LXRydW5rCiszMzQ1NyAzMWQ5MjM1NGY3MmYwOWRlYjljNjdmMDlkMTgxNjY2NjM2ODZiOWFlIGxlZ2FjeS10cnVuaworMzM0NTggYzhmYjRhZjk2ZGUwZTViZWUyMGQwOWM1MDE4ODAyNjNhZmFmYWRjZSBsZWdhY3ktdHJ1bmsKKzMzNDU5IDRiYWZmZTE0Yzg4NzRhMTJkOTNhZjI4OWUwMjlhY2VhZDc3Mzg4OGEgbGVnYWN5LXRydW5rCiszMzQ2MCAyZTg0ZmRiNGZlMzBkN2I5ZmQ4NGMzMmM4YjU1NDMwZWM2YjcyOWEyIGFzdC1icmFuY2gKKzMzNDYxIDkwMzVmZTc2ODY4OWQ4OWUyYTA1YWQwNzdmNzM4YjQ3YjFjMWRlZDcgbGVnYWN5LXRydW5rCiszMzQ2MiBkZWZhMWQ4MjViMDhjZDYyNGJmMGIxZmQ5NmFmZGRjZTYwOWY1NDIzIGxlZ2FjeS10cnVuaworMzM0NjMgMTAzN2ZlYWNiNTRmYzk5OGFjODcyNmNjMTg2MTEwODRhY2MzOWZkZiBsZWdhY3ktdHJ1bmsKKzMzNDY0IGM3MDA2M2MzYWVlYjhkZjc0NWZhMmVkZjc4M2FlNGI1NGJlZmQ0OWIgbGVnYWN5LXRydW5rCiszMzQ2NSBjZmFlZGRlNTBiZDY0MzI2OGVjN2NmMGJhMGZlNThjNzFlZGJmMmFhIGxlZ2FjeS10cnVuaworMzM0NjcgZTZhNzhkZDQyNWM4ZTBhYWY5MDM3MzA5MTY1NTI5M2JkMjllMGVkNiBsZWdhY3ktdHJ1bmsKKzMzNDY4IDk0ZTVkMWI4ZjY5Njk4OTc3N2RhNWVlMmNmN2UwODFmYmE1N2E4MDMgbGVnYWN5LXRydW5rCiszMzQ2OSBkN2UxYTFiZDQ4ODBiNzYxYTcwMWJmNTZmODcyNWEyOTRhYTQyOTEzIGxlZ2FjeS10cnVuaworMzM0NzAgYzQ0OTY2M2ZhMjdkZTM5YmE3NmZhODk3ODVjODE0ZWM5ODNjNjJjOCBsZWdhY3ktdHJ1bmsKKzMzNDcxIGJiYzM2ZTBlMTBhMTU3OTI5MDgxZDEzOTQ3MjFjZDdjOTMyN2U3MGIgbGVnYWN5LXRydW5rCiszMzQ3MiA1N2I5M2M5NDgzMGEzNGUyMGFiZjE3MGFhZDFiZGY2Y2Y2ODBiNWMxIGxlZ2FjeS10cnVuaworMzM0NzMgZTViOTllNjA1OTI2MTVkMmNkMDEyMDAwN2M5N2Q1NmZiNGUyOTk4NCBsZWdhY3ktdHJ1bmsKKzMzNDc0IDEyNzJmNzk1NDdiYTkxNjExOWQ4NmM2OTE2NTI1NjJhYTczNGUwYWYgbGVnYWN5LXRydW5rCiszMzQ3NSBiYWI4OWU0MDZmMzBlMjQ1YjlkN2EyOTE0MmQ0Zjc3NTU2NDQ1ZGI4IGxlZ2FjeS10cnVuaworMzM0NzYgZDI4M2IxNzMzYzBkN2E1NzdjZDZmMmI5YjdiNGNmYjBmNDdkMDNhZSBsZWdhY3ktdHJ1bmsKKzMzNDc3IGFjMGZjMDg5M2FhY2YzMzc1MzlkYzc5NzY0Zjk3ZmYxNmZlNmVhNTUgbGVnYWN5LXRydW5rCiszMzQ3OCAwZGYxMWIyYmZjYTUxOGFhNmE1ZmY5ZmNiZWRjMTM5Mzg5NTdiNzBkIGxlZ2FjeS10cnVuaworMzM0NzkgMzI4MDM1NTMyOWRkMzliYjQ5MjAwNDU2OTc1NTI4MDFlZTFiMjVlNyBsZWdhY3ktdHJ1bmsKKzMzNDgwIDViMjFjNzAwMzk3NDVlNjQ5MjIzNmNiNmQwMGI5OTU5MDI1Y2I1YjcgbGVnYWN5LXRydW5rCiszMzQ4MSBjOWM2ZTJjOWVjOTc1Yzg1YjQ4ZTQxZjA2MTBmY2Y1ZDgzNTNmZDNlIGxlZ2FjeS10cnVuaworMzM0ODIgMmIxN2FkNjY4NjY2ZTVlOGNhNjBhODMyMWMwMDZjNGI4YTUyYzNjOCBsZWdhY3ktdHJ1bmsKKzMzNDgzIDk5MTZiNTkyNjFkNzYzMzVhZGQ4YWU4MzM2ZmMzZTIxMTUwZDgxNTcgbGVnYWN5LXRydW5rCiszMzQ4NCBlMDJhNWQxODQ5ZjhkODdjYmI3ODE5NWZmZGY3OGQwNzI4NzI5YzQyIGxlZ2FjeS10cnVuaworMzM0ODUgNjQ0M2EwZmVlN2UxMDE0MzAzYzJiMDBhZGIyYjI0MGUzMjQzMmU3MCBsZWdhY3ktdHJ1bmsKKzMzNDg2IDNiNDFjNjMzZDc2OTZiOTZmNTQ2YTI4OTRkMTVmZmYzZWI5ZDBiNDUgbGVnYWN5LXRydW5rCiszMzQ4NyA3YmUyNGNjNmMyOGQ3YmE1NWM4YjNjZjBjYzQwMTA1NWEyNjIzNjg0IGxlZ2FjeS10cnVuaworMzM0ODggY2IzY2U3Y2VjMjYxMmYxOTNmNmViZjhiOGMwNDM3ODRkZDZkMzRjNCBsZWdhY3ktdHJ1bmsKKzMzNDg5IDQ4MzdiZjIxNmFlNWY1MGQ3MDBlMzkyOTE3YTNjNGQ0YTY3NWY4NWQgbGVnYWN5LXRydW5rCiszMzQ5MCBlZDQzMTU1YjFkM2M5MDc5NjU1ZThhZGZlMzY2NTg5NDEzYTExMzU3IGxlZ2FjeS10cnVuaworMzM0OTEgZDRmZmIwNDkwYWMyN2RkNGIxOWUyZjQzZTA0Yjk3ZmY5MWIzYTkxZSBsZWdhY3ktdHJ1bmsKKzMzNDkyIDA3MTUwMTgyNGJiZDhkOTMwNzQ1NWU3ODFjZjgxMzM0NzNlMDQwZTQgcmVsZWFzZTIyLW1haW50CiszMzQ5MyA4NTljYmQ3YzliNDgxNDBmMjU5N2Q4MmY3MDA3NmRhMDdiNDJiNmJhIGxlZ2FjeS10cnVuaworMzM0OTQgMWRjMTU4NjUyZTViMzczYTQyZmZlNWE2NjYxOGVjODA3MDk5ZWY0YiBsZWdhY3ktdHJ1bmsKKzMzNDk1IGUxYTZiZjQ1NjVjZGU0ZTQ3ZmM2YjIxNjFmZDcwNjc1MmZhMjM2ZjAgbGVnYWN5LXRydW5rCiszMzQ5NiA0NTY5MTJhZGE2OWZmOTFkZmNkMWJmOWM2YWZiNTI1Yjk4NTA1YzQwIGxlZ2FjeS10cnVuaworMzM0OTcgYmE1ZjBiODA4MTkyN2I0NjIyODkwZjQ0OTZiNmQ3MWM4OWM1NDE1OCBsZWdhY3ktdHJ1bmsKKzMzNDk4IDM3YmMyM2M2Y2Y2YzkyMjEyZTRiZmE1ZjRkNWJiYjVlNjEzYWY1Y2UgcmVsZWFzZTIyLW1haW50CiszMzQ5OSBhMzcxMDZhYzdjOGNjMDE3ZTkwZjA5MWIyODg5NTM2YzUzNTMyMmVkIGxlZ2FjeS10cnVuaworMzM1MDAgZTZlZGIwNDBhNzdkNGFjZTk4MTE2MmYyNDg4NWJhNDZlZTQwZDI2NCByZWxlYXNlMjItbWFpbnQKKzMzNTAxIDJlYzJmNjIwODdjYjhlYmJjMjI0ZGJkN2ZiOWM3MzM1Zjg2ZTIwNGIgbGVnYWN5LXRydW5rCiszMzUwMiA1ZTgxZDkyYmY2N2RiMDA2ZjRhNjY2N2ZkMzY2ODBkY2U3ZTE1OGJkIGxlZ2FjeS10cnVuaworMzM1MDMgMDlkYTllNTY1NTVkODBjYzJlNThhMTMyNzYwNTZhODc1ZDJkM2QxOSBsZWdhY3ktdHJ1bmsKKzMzNTA0IDQwMjlhNzI2ZmFhNjU1MDM2ODJmZThmYmYyYzI1ZGZlOTFlMWU5MTYgbGVnYWN5LXRydW5rCiszMzUwNSA5MmYxZWVhZWI0MWQ3NTE5MzI3MzFkMWU1OWZmYzQyZWU4NzgwNWRkIGxlZ2FjeS10cnVuaworMzM1MDYgYjk4MjdjMDU0NjBmMzhmOGMxOWEyMjhkNjQwMmJjY2YyZWI0OThjZSBsZWdhY3ktdHJ1bmsKKzMzNTA3IGQ0NWQzMTdmZGEzNTFhZGI1NDZlNGFlNzFiYmFhZWUwYmI1ZGM3YTIgbGVnYWN5LXRydW5rCiszMzUwOCA3NzhiMjE1MjBkYjhiOTRlYWYxOWMyNzE5MWZmMWZhZGE5ZmI1ZGVkIGxlZ2FjeS10cnVuaworMzM1MDkgOGQ0NWE0Y2VhOTM0MzdlN2M1NDE0NGRiMWJhMDhkNGQyZTFkN2JmMyBsZWdhY3ktdHJ1bmsKKzMzNTEwIGU1N2E5YmJlZWM1YjI3N2NkZjFkMDI2YzE0Y2NlODQxOThlYjMzYzIgbGVnYWN5LXRydW5rCiszMzUxMSA2NDE5NGU3NzViMGJjMjhjMjc1MGUwNjdhYTdlZjQ0ZTYwZTY2MjVhIGxlZ2FjeS10cnVuaworMzM1MTIgZmU3OWE1YWIzOTJiODU5MDVhODM4NGIzYWQ4ZDAyYmI5ZDE2ZGQxZiBsZWdhY3ktdHJ1bmsKKzMzNTEzIDJkNWJlY2Q5MDBlZWI1NjY2YTI4NzBmMzlkMWY5NzE0ODQ2ZGU0YTMgcmVsZWFzZTIyLW1haW50CiszMzUxNCAwNmNjYTMyN2JhY2RmYWI3NTUyYjEwYjNiZDcwZjllMDJjYWNjNzc3IGxlZ2FjeS10cnVuaworMzM1MTUgZGQ4Y2EwODNlYTY2Nzg4MDI0MTc1NTlkMTdhMzljMmZhM2ExNzA1ZiBsZWdhY3ktdHJ1bmsKKzMzNTE2IDAxNGNjMzYyYWE5MTIzNjBhYmE2Yzk2OTY3YzYzN2Q3ZGJhMTE0YjUgbGVnYWN5LXRydW5rCiszMzUxNyBlNjg2NzY1MjM2Nzc0YzUzYzU2Zjg4OTBlMjRkODVmOTE4NTIzY2RmIGxlZ2FjeS10cnVuaworMzM1MTggN2ZiYTMzZmYyMTM1OGEzMDViYzhmZDIwMTBhNmFhMmU5YmNjZWYxNSByZWxlYXNlMjItbWFpbnQKKzMzNTE5IGI4NWY4YmI1YzM3NTRjNjhhNzExNmUxZDNjMWQxNjFhYWU3ODQ3ZGIgcmVsZWFzZTIyLW1haW50CiszMzUyMCA1N2FkZjgyN2Q0YzdhZDY0NzQxY2I0MWY4YmM3YTVlNDI4ODY3OWEzIGxlZ2FjeS10cnVuaworMzM1MjEgMmJiNTIzYWQ5Yjc2NWI4OTZiZWUzNmZjN2RmOTgwMjEzNzI5OGUyZCBsZWdhY3ktdHJ1bmsKKzMzNTIyIDcwNTJjM2U1YWYwMjZmYmZhZWJmYzcyNTNkYTg5ZGRlNTM2MTc2YmIgbGVnYWN5LXRydW5rCiszMzUyMyA0MmU4MjYzZDM5YWM2NjFmNzU1YmY5MzgzM2U4OGI4Y2NjZmRjN2ViIGxlZ2FjeS10cnVuaworMzM1MjQgNDVkYzMzNDMzMzIzNTZkZDM5OGUxN2U5NDZkYmFlMWQxMjQwMjgzNyBsZWdhY3ktdHJ1bmsKKzMzNTI1IGNkYWIyNWQyZjg0MjkyZThiOWZkZmM1MGExNTc4YzFjODRiOTRjNDkgbGVnYWN5LXRydW5rCiszMzUyNiA4NDgzNTg0NmVlYWIxMTRkMTlkMzA4MzNjZjQ0MjFlMTI4YjE5OWRlIGxlZ2FjeS10cnVuaworMzM1MjcgOWM1N2ViNTMzN2I3MjE4MDRmNDg3MDE5OTg1YzAwZWM3ZTQ1NjIyYSBsZWdhY3ktdHJ1bmsKKzMzNTI4IDhlYjFjYWUxYTc3YmQ5NTdiYTYxZmYwOWI0MzAxZDc0MzFiOGNjYTkgbGVnYWN5LXRydW5rCiszMzUyOSA0MjFkODA1YzExZjMzZTMzMjQ5YjQ5NTU4OThhOTAxMTU4NGE2YzM3IGxlZ2FjeS10cnVuaworMzM1MzAgYmYwMGI1NmMxNGE5ODJlYjExZDQzNWI3OTgzYWIxZGRkNzczMTc5ZiBsZWdhY3ktdHJ1bmsKKzMzNTMxIDU3NzdjODM0ZjU1Y2U5MmM0YjU3ZWZjYjFmOGI4MmFlNzMyMzRhY2MgcmVsZWFzZTIyLW1haW50CiszMzUzMiA1NmMwMWM0NTA5MmMwOTI4MmQ0MmU1ZWFhM2ViYzUwMjcyZTY4ZTY2IGxlZ2FjeS10cnVuaworMzM1MzMgY2QwYmNhYTBiZDgxZmU0MDE1YjQxNWI5ZjE4MzhmZjBjOTZkYzU3NiBsZWdhY3ktdHJ1bmsKKzMzNTM0IDFiYWU3OGM4M2JlOTRiZWMyNjFiODgzMWFlOTEyMGJmMjE1OWIwOGUgbGVnYWN5LXRydW5rCiszMzUzNSAxYzNiODE1ODc2MGMzZDAyM2UxMDFkMmM3MWYxZmMxMDljOTc1MTY3IGxlZ2FjeS10cnVuaworMzM1MzYgZjMzOWYyOWIwNmNiYjc5MjUyNWRlZmRmOTM1MjEzN2ZhYjNkZmQyZCBsZWdhY3ktdHJ1bmsKKzMzNTM3IDk4YzU5YmJkZDhlYzQ3OTQyZjI5ZmZlN2NhYWQ2ZDdkM2Y5NjgyNDQgbGVnYWN5LXRydW5rCiszMzUzOCA4NGJjY2JlYWI1ZmFjNTgxMmYxODVmM2NlOWY3ZmY3ZWVmYzc0YWEzIGxlZ2FjeS10cnVuaworMzM1MzkgYjc2NjE1MmM3OTA0NWM1YzliODUzOWUzNDhjYWQ0NjkyODE5YzEwYyBsZWdhY3ktdHJ1bmsKKzMzNTQwIGI0NGViNTE5MzFkMGYxMzQ0NTk3NGIwOWMxYTJiNDM4OGFhOTk5YmIgcmVsZWFzZTIyLW1haW50CiszMzU0MSAxOTljZDc4ZDZkNzhkMzZhNmVmMGZiYTIzMmM3YmVhODNmNDE0YWRmIGxlZ2FjeS10cnVuaworMzM1NDIgNjA0ZDkzODIzZWMxZDAxMjg5NzAxMjVlZGQ4OTRkODgxM2JmYWY1ZSBsZWdhY3ktdHJ1bmsKKzMzNTQzIDM0NDJlN2NkYWNlODZlMzljNjU5ZDdkZWQ5ZTQ0NzllMzI4OTJkMDQgbGVnYWN5LXRydW5rCiszMzU0NCAwMzAyMjdkZTgwNTE4YWFjN2FlYTlkNTg1NDJjMDNkNWE3N2YxMjg0IGxlZ2FjeS10cnVuaworMzM1NDUgOTU0NzE3ZTZmZGI1MGI0NWRiODdkMWNlYjFlNDMxZjdjNTA0MjhmOCBsZWdhY3ktdHJ1bmsKKzMzNTQ2IDFhNDJiMTI4YzU4MTRhOGFmMzg5YmVjZDcwNWRmNWUyMTdkODZmNzAgbGVnYWN5LXRydW5rCiszMzU0NyBmZWUxNzc2ZTYxYzcwNTYxMTRhOTcwMzMzMmRiZGU3ZDZhNmFiNTVmIGxlZ2FjeS10cnVuaworMzM1NDggNDc1MDExODRiNTQzNWY3ZTA2MDEyYjBiMDE5NzY3Yjk2ODAwMmY0MCBsZWdhY3ktdHJ1bmsKKzMzNTQ5IDYyZjMwNjNhMWEwZjg3NmJiNzYyZjc5MTlkNTE0MWI3NjAwM2VmMzMgbGVnYWN5LXRydW5rCiszMzU1MCBhMGE3MjMxYzZmZTBlMzRmNGMzMDMwYjRhY2YxYmU2OWZmODc1MDM1IGxlZ2FjeS10cnVuaworMzM1NTEgNzJjYmM0MWNjYzJmMzgwZTM2NTJhYzc1MGY3N2VkZDE2MWZiMTEyNCBsZWdhY3ktdHJ1bmsKKzMzNTUyIDJjNTE5NGJhYTk5NDRmOWFjNWU0YjA0YzVkN2U3ZjliNjcyZGNlYTAgbGVnYWN5LXRydW5rCiszMzU1MyBlZDg3MDliMWEzZWZiMTNhN2NjNGY2NjQ3NWY4NjI4ZTY3NmM2ZmNlIGxlZ2FjeS10cnVuaworMzM1NTQgM2YyMTRiMzliNGRmOTU0OTdmNDExMzYxNjAxMDFjY2ViYTEzZGQ0YSBsZWdhY3ktdHJ1bmsKKzMzNTU1IDE5NTExYTQ5MGU3YzA1MTEzNTE1MDk3ZDNiYzFkZDI1MjQwYmM3YWEgbGVnYWN5LXRydW5rCiszMzU1NiA5MmE1ZmU1NzgzODAzOGZkYTBlNmY3OWZmOWRjNWRlMzBmZWY3YmNiIGxlZ2FjeS10cnVuaworMzM1NTcgZDM3ZDE1OTBlMWE3ZDFhMWY5MWQ2ZjM4Y2ZiOWRhMjg1ZmUwNWNiOCBsZWdhY3ktdHJ1bmsKKzMzNTU4IDg4YjkzZTA3YTFmODBhZjdjMjU4YjlmYTg5NTAyYTA3MjcyNzg1YjYgbGVnYWN5LXRydW5rCiszMzU1OSBmODlkNTQ1NTA1YzcxNTQ1NGJjODU5NWIxZmRmYzY5MGYyOTI5NzU2IGxlZ2FjeS10cnVuaworMzM1NjAgYjY4ZmI0YTQzZDBmZWNkYjk0ZGZlYTRmMzRmZDRhODQwYTc0Njg3OSBsZWdhY3ktdHJ1bmsKKzMzNTYxIDIyYmNhMjgyMzY4NTY4NjFiMGU5ZTJlYWU3MDZjZmZkZjgyNzk2YWIgbGVnYWN5LXRydW5rCiszMzU2MiA0ZTA1YzU1NTE0ZTFkNjMxNjFmMzU3ZTA0NzkyMWVkZWU5Mzc1OTdjIGxlZ2FjeS10cnVuaworMzM1NjMgZTJiNDAzMTI3NTdlZTExZmYwMmIyOWRhOTExYjAyYmRjMDY4OGNmNiBsZWdhY3ktdHJ1bmsKKzMzNTY0IGRhN2VhZTQ0ZjQ4N2I0YmNhMjk1YmM0ZDRkMGIzN2I1NmI1OThhMWMgbGVnYWN5LXRydW5rCiszMzU2NSA5Y2EyOTE4NjVmOWMxZjJhMDI3ZTJmZDU1OTUxZWMzNDZiNTQ4Yzc4IGxlZ2FjeS10cnVuaworMzM1NjYgNzllYzdlMzAyZDUzNTc3NmI2OWQwZjUwNmViODY5MmRjMTdiMTA3MiBsZWdhY3ktdHJ1bmsKKzMzNTY3IGU5ZGRkZmQyYTYyZjBjZWEyNWNjNzkyZTVlY2RjMzI1YjZhNmRkYjUgbGVnYWN5LXRydW5rCiszMzU2OCBhYzg0ZjE3OWJiODQxMzM5YzlhMmY4NmI1YzUyYmFmNjZjZGFlMDhkIGxlZ2FjeS10cnVuaworMzM1NjkgOTk0YjZiZTQ4ZTI4NzlhZjY4NjdmZDFmMmNiNzIwZDAzNjdmZjgxZiBsZWdhY3ktdHJ1bmsKKzMzNTcwIGI0N2E3Mjc0Y2U1YzE1ODM4YTVjNmIwNDliYjY1YTc3NjVjYzZiMTYgbGVnYWN5LXRydW5rCiszMzU3MSBkYmFlMDVjMjllOTM4NTQ0Yjk4NjJkYzczMjY3MzFlMjg4MzFiZWZjIGxlZ2FjeS10cnVuaworMzM1NzIgZDFhYTU3NTFmYmNmZGJhM2MxZmVhZDkwY2JiMWNlMzljMGJmMjgxMyBsZWdhY3ktdHJ1bmsKKzMzNTczIDQzNGI2Y2RhNGZhNWFmNzAxN2NiNmM1MDlhNTllZjc2Y2VhYmJiOTUgbGVnYWN5LXRydW5rCiszMzU3NCA5ZGVhYzFhYTQyMWRiNjlmYTU1ZTQzODdlZTY0ZWNhYzNmMmVkZmY2IGxlZ2FjeS10cnVuaworMzM1NzUgYTIzMTA2ZGZjOTRkM2ViZjZmZGMzN2Y2Y2M2M2UyODU0NDViNzAwZCBsZWdhY3ktdHJ1bmsKKzMzNTc2IDlmNjBjM2VlOTg1YTJhZTEwZmVkOWNiOTdkZjVjMTQ4YTA3ZWRmNGYgbGVnYWN5LXRydW5rCiszMzU3NyA4MGVkNGQ5N2YxYmFlYTBkZTk5NThkZjdhMWI5NmYxZGQ4OGM5NGI4IGxlZ2FjeS10cnVuaworMzM1NzggNzE2Mzk1YzE5NTg2ZTJhMTA2NjkyYzI1OTI3OGRhN2QxMWViMTQ2YyBsZWdhY3ktdHJ1bmsKKzMzNTc5IDhiMTU1ZTRhMTBhMjVkMmI4NzE2MTA3MGE3NGIxNWU4MzI1Y2JjYWIgbGVnYWN5LXRydW5rCiszMzU4MCAxZTJlMWM3OTMxNmUxMmZiZDVmYWM0MGJmMWEzN2NmMTY2MzZiNTdiIGxlZ2FjeS10cnVuaworMzM1ODEgNWE5NDRhYzg1MjVjMWY2MWQ1ZGFhM2ZlZWNjOTA1MDkxYmRiN2U4ZiBsZWdhY3ktdHJ1bmsKKzMzNTgyIDQ1MWI3ZTgzOTNmYzQxZWIxNDNmZWEyMzQ5ZjFkMzg0MjI1YzY1OTMgbGVnYWN5LXRydW5rCiszMzU4MyBkNTllNThiYWMzOTIzNzUwYjE0M2Q5MjQ1N2E5OTBjOTFiMDE5YjRhIGxlZ2FjeS10cnVuaworMzM1ODQgMGUyMjE1YjgyMjZkMmFlM2FiYTYzZjA3YTg2MmQxMWRiYjk4ZDlkNSBsZWdhY3ktdHJ1bmsKKzMzNTg1IDRlNjEzZGRmMmExYmQxNjU2YzRlZjc0ZGRiYjJhMTBjZDIzNTMwNjEgbGVnYWN5LXRydW5rCiszMzU4NiA0MTZkOTQ1OGVlOTdjYjNmMmUzYTFjMzA0MzYzODU0YzM5NTg5YjhhIGxlZ2FjeS10cnVuaworMzM1ODcgNTI3NjA3NTFjNjFlZTcyY2U5MGExZmUzOGM4OWIxMWI2MDBiZjMxYiBsZWdhY3ktdHJ1bmsKKzMzNTg4IGY3NzNiNTY4YjJlNzNkODI5ZWExOTJjMjEwMzU1OTI3YjI2MmY2YjYgbGVnYWN5LXRydW5rCiszMzU4OSBmY2Y2NjgwYjZhNmZiNzcxYzhiNTk4YWNhYzY4NTY3MTk5ZjNjYzk5IGxlZ2FjeS10cnVuaworMzM1OTAgZGY5ZWE3NDk0MDlhM2VlNDUzYzRmNzEzNDUwZDM3MzQ1MzNkMjUxMSBsZWdhY3ktdHJ1bmsKKzMzNTkxIDU2NGE0OWVlYTQxNGUxMDA5MzE2OTQ2YWVmYzI5MjQxNGRkYTBmNjggbGVnYWN5LXRydW5rCiszMzU5MiBlYzlmMTg2MTU0ODU2YTkwYWY1OTA0NGZiZWNhMjkwNzA4ZGMxMzk3IGxlZ2FjeS10cnVuaworMzM1OTMgN2IxNmNmNzBlYmQ4OWU0MjRkNWEyNDJjYmU5ZThjMzUyZjI4MmFhZiBsZWdhY3ktdHJ1bmsKKzMzNTk0IDBiMzQyMmI2MjExOTExOTZjMzNlNzZhNzZiZGMyOWI5OGY0OWEwYzIgbGVnYWN5LXRydW5rCiszMzU5NSAyYTQwY2EwNmEyMmM4OGQ5MmY3NzE1YmRjMDgyZjlhZjc4NDIzMDgwIGxlZ2FjeS10cnVuaworMzM1OTYgOTZiYWI3YzgyZTJjZmM5NmMxMDA2OTAzOTA0NDJiOGEwOWU2NjI4YSBsZWdhY3ktdHJ1bmsKKzMzNTk3IGM4NmIxMzU0YWM2ZjZmNzRkYTMwMGFjOGQ4YzUzY2YwNGU2OGRjZTQgbGVnYWN5LXRydW5rCiszMzU5OCAxYmMyNTU5MjI5ZGIxZGZmMzc5ZTY4NjYwMjBjMWU2ODUzZmZiZGUwIGxlZ2FjeS10cnVuaworMzM1OTkgN2ZkMjBhZTQ0MTQyZjBjOWRmMDVhZjAzMmQ3ZGYwNDljZTc1YmIwYyBsZWdhY3ktdHJ1bmsKKzMzNjAwIDhkZWMwZmIxNDI4NTRmMzZiNWQyMmNlYzI2MGNmMTczNDMzYmE4MzYgbGVnYWN5LXRydW5rCiszMzYwMSBhNzNjMjhkZWVmNmRmZmU3MzQ5MzYwNWZhZjBiNTc1YjJlMzcxZTJmIGxlZ2FjeS10cnVuaworMzM2MDIgODZjNDc2YTQyNWE3ZGM1MjczNmIyODhiNjNlOTg2ZmFjODQxMTcyMiBsZWdhY3ktdHJ1bmsKKzMzNjAzIDA4ZDI2MzZiOGU1ODQ0M2QxNzUwZjY3OGE4ZDFlYjY4OGQ0OGE1NDYgbGVnYWN5LXRydW5rCiszMzYwNCAyNTgwMGE3MjQwMTFmYjI1NDQ1NjNhMzU2YTZlODFhY2M4ZTZiMjQwIGxlZ2FjeS10cnVuaworMzM2MDUgY2ZhZDU0MjgzZTAwMDQ3NjQxMjQ0NTJkMDE4NDEyMDc2ZDY5NTE4MyBsZWdhY3ktdHJ1bmsKKzMzNjA2IDcyMmQ3YzdhNzdlMmI0N2YzYWE4OTU5ZDZjYTgyNzg2YjI5ZjU2ZjEgbGVnYWN5LXRydW5rCiszMzYwNyA2MGUzZDI5OWZjODY3OGY0NDI2MTY4MDA2NWVmMmI5ZWI5MTVkNWNhIGxlZ2FjeS10cnVuaworMzM2MDggYmI4Y2M3MjkxNWY1Njg5MmMzYjUzMTMzZGFmMDdhZjE5MTVjNmIyOSBsZWdhY3ktdHJ1bmsKKzMzNjA5IGVlN2UyMjNkYmNhY2YwNjljYjc3ZTUwYTU2ZDgzOTFhZGJmNzY3MTkgbGVnYWN5LXRydW5rCiszMzYxMCBiODQ2NDVjMzE5NWU0ODRkNjcyNmNhNWI5NzU5MTQ1YTY0N2QxNzU2IGxlZ2FjeS10cnVuaworMzM2MTEgNGQ0NDE3ZGY2M2Y0ZTgwOGJmMzIwOTUzYThkNGYzNWY3Njg2MDFhZCBsZWdhY3ktdHJ1bmsKKzMzNjEyIDAzMTUzZmQyZDNmMjE0YzFhN2EwMmMyMDc5MTQxMjBiY2U1NjRmZWEgcmVsZWFzZTIyLW1haW50CiszMzYxMyA2MjhkY2Y5MGJmOWUyZTIwMWQyMmMzNmRhYmY4NTZhNDkzYWI0OTczIGxlZ2FjeS10cnVuaworMzM2MTQgNDA3YzBkZWMyZjRhZGM5MmM2MWVhODI0NDA3NWE4Y2IxZTYwNzE2MCBsZWdhY3ktdHJ1bmsKKzMzNjE1IDI5YTYzYzVjZmJhZmI5NDQxNWIyZThhZjg0ZDAxNDk5YWU0OTdkNjggbGVnYWN5LXRydW5rCiszMzYxNiBkYTBjOTBjNmFmZDAxZmNiNmZmOGI3M2FmZGE1OGRiODk0ZWYxMmUxIGxlZ2FjeS10cnVuaworMzM2MTcgOTAxM2QzYzFkNjU1MDY0YzgwMGE3OTYzNTdmZGVjNzBiMmQzNjUwMCBsZWdhY3ktdHJ1bmsKKzMzNjE3IGQwNTRjMjk2NDdmOTBiY2NiODM0NWJkNzc5YmNhMWVlY2YyZGQ3ZjIgbGVnYWN5LXRydW5rCiszMzYyMCA4YTI5MzQ0OTgyOWQ3YmFkMDgyYmU4YjA1YmM2ZDY3ZmQ0MWRhYTQ3IGxlZ2FjeS10cnVuaworMzM2MjEgZGEzNTkyOTYyYTdhZjA3OTk3OWJiNDBiMjlhYjZiNWQ3OGQ5ZTM3NCBsZWdhY3ktdHJ1bmsKKzMzNjIyIDEwOGFhOTY0ODU3MzIxMDU4YTQyZmY2NjIyODEzOWI5ZGI4MmY2NWYgbGVnYWN5LXRydW5rCiszMzYyMyA5YTZmNWIzN2U4MWQyZDlhODI1MWQzYjgzYjJkMjA3NDEzZWEwNDVhIGxlZ2FjeS10cnVuaworMzM2MjQgY2U4YjEzOGY0NDczYWRhZGQwYjZhMTY0ZDUyYTQwMzA2YTJlNTEzNyByMjNjMS1icmFuY2gKKzMzNjI1IDMzN2Q0NDAxMDkwNzM3OGU0ZmRiNzhhNGI2NTYxOTlmZDY2MTk0ZjYgcjIzYzEtYnJhbmNoCiszMzYyNiBhZDA5Njg3YWFhYTBhNzU1MjY4NWYyNzRmYzYwM2RhMGRiZmU3YTI0IGxlZ2FjeS10cnVuaworMzM2MjcgMmI4YTU2NGUxZmQzZDAyNmExMjQ2ODYwOTg2MzIyYmJiZTEwZTFiOCBsZWdhY3ktdHJ1bmsKKzMzNjI4IGE5Yzg5OTczOWY0ODIyYmI2ZDhiOWE5YjI2OGRjMzY0YWU1MzlhNjQgbGVnYWN5LXRydW5rCiszMzYyOSAxY2JjNmI3ODM2ZGNiOGE2ZjE5ZTIyYmNjNTkxMWE0NTg3NzQxNGQ1IGxlZ2FjeS10cnVuaworMzM2MzAgMzIyNWYxZDQyODgzNWEyNzU1YTY1NGU4NzA2ZjUxYmZkYTAxNmQ0ZCByMjNjMS1icmFuY2gKKzMzNjMxIDJjNDgzZjdiZWE0YmNmODY3MTU0NzIzNDI4MWY2MzhmYmFkZDUxMDAgbGVnYWN5LXRydW5rCiszMzYzMiBiYWYyMjQxMDcwYmZkNzE3YTIzNmMzMzFmN2U0MmNkMDgzZjVjNDg3IGxlZ2FjeS10cnVuaworMzM2MzMgMDljNDU5ODUxMjY0MTQ2ZWIzMjdjODZiYTc0ZGM1ZGNkNDk5OTJkMiBsZWdhY3ktdHJ1bmsKKzMzNjM0IDVmYWVlN2NkYzVhYWIyNDc2NmI5N2NiZWIzYTE3MmRhZDBhMWQ5MDcgbGVnYWN5LXRydW5rCiszMzYzNSBjZWE3ZjhhZjhlMGJiODJlNGQ5YTk0YmUzNDJjYTNhMDQ5MzZlNTQ2IGxlZ2FjeS10cnVuaworMzM2MzYgNGJmY2ZlZDY0ZWNiOTY4Yzk4Mjg1ZGJhY2E4NjMwYjM5YjI4NzcwZSBsZWdhY3ktdHJ1bmsKKzMzNjM3IDRjMTQzY2VlZjQxOWM2NzJkMGMwMjY4YzAzZDM3YjI2M2Y3MWRkMjYgbGVnYWN5LXRydW5rCiszMzYzOCBhNTUwYWY3MTFhYmE0YTIyYjQ2YWYzMTc4ZmJiNDNiYWZjZmU5MTA2IGxlZ2FjeS10cnVuaworMzM2MzkgOTUwYjI1MDBhMTQyMjIxNGFjZDNjMDU1MDA1MDZhZjkxNmI3OTY0NyBsZWdhY3ktdHJ1bmsKKzMzNjQwIDY2OGRkMzM2ZTMwNmYxNWJiOGUwYThhYmNjZTJmMjAwYjU4ZjBhYTYgbGVnYWN5LXRydW5rCiszMzY0MSBjNDJhNzMxN2M4ODdhYmI3YjlmMzg2MDEyMzIxMTcwZTMzZDhlOWQ0IGxlZ2FjeS10cnVuaworMzM2NDIgMzE3ZjFlZTI0ZjE4NDliNzhlNzBjNzQ0NWRiOWI5YWQ3ZWI0OWFiMCBsZWdhY3ktdHJ1bmsKKzMzNjQzIDRjZjJiZmZmYTU2NDEwZjhlODIxMDEyMDJjYmU5YzJmNjM1NGRlYTQgbGVnYWN5LXRydW5rCiszMzY0NCBmZTQ5OWJjNzM4MWZiOTAzYmZkZmVlZTMyYWQ2NGRkNTk3MDE5OTU3IGxlZ2FjeS10cnVuaworMzM2NDUgYTRhYmUxN2E1ZmViOTFmNDYyMjRlOGE5NjhhZDUwYTM3NDdiZGRhOCBsZWdhY3ktdHJ1bmsKKzMzNjQ2IDEzYzc1ZmE3ODBjOGMyMjIyMjI1YTUwZDIyMjc0YmZmYWViMDM0OWIgbGVnYWN5LXRydW5rCiszMzY0NyAzMDNmNWZkYTFhMjg0MGJhMDJmODk5NzJkYWJlMmNlMmQyN2RhZGU4IGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY0OCBhNzdhYWFiMDE0NmRlNjk2ZTZkNjZlOTkzYjVjNjRlYzU5YTVkZGY0IGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY0OSA1YWRkY2NhM2Y0MzMzNDgyZmFlMzQ0ZmY0OGFkZDVmYWJkZDI3YmY5IGxlZ2FjeS10cnVuaworMzM2NTAgZTMzOWFkMjUwYWYwZjQxZmMzNGI4YTY0Y2Q5YjgzNTZlMTAxOGEwMCBsZWdhY3ktdHJ1bmsKKzMzNjUxIDgyZWUxZmFlMzgxOTRiODEwOTkwNzIzNzA3YmJlZjUxYWM5OWYzNmUgbGVnYWN5LXRydW5rCiszMzY1MiBhNDA4YWM1NTI3YzM0NTc4NzI4ZjVmMzEzMDgwYzk3ZTMzMjFkMmM4IGxlZ2FjeS10cnVuaworMzM2NTMgYjlkMGEwZWUyMjA2YTcyYTlhOTU3NzAzZDZkZmQ2OTcwMjljN2Y4OCBsZWdhY3ktdHJ1bmsKKzMzNjU0IGQzN2YxMzE5OWQ5NTI5N2I0MTExNDZkMzY3NzJhMjlhYjkxNDVhYWIgbGVnYWN5LXRydW5rCiszMzY1NSA2MTQ5ZjBhMGI4ZjU4NDIyMjg5N2I2MWQzNWI5ZDI5OGJjMDdkMTlmIGFzdC1icmFuY2gKKzMzNjU2IDIxZWRjZTA5MTA2OWY5YWNkMmRjYTJhODkxOTNiNjRiMDdhZmM0OGMgbGVnYWN5LXRydW5rCiszMzY1NyAyYzFlNzNiMmZjYTExMDdiNzE3NDExNjBmOWVkMTUyYTlhNGUzMTM2IGxlZ2FjeS10cnVuaworMzM2NTggMTE4ODA5YjFlZjIwNjEyOWI2MjBkZWEyYTM2Yzc3YzFiMjZlNjM0NCBsZWdhY3ktdHJ1bmsKKzMzNjU5IDI3Mzk1Yzg0NGUyM2I3YWQ0MGFhYzVmZDg1YjRhNjU2ZWJmZmJkZmIgbGVnYWN5LXRydW5rCiszMzY2MCA2NTQ5ZDJlNDA4ZjBjNjNiZmM2NmU4NDA5NmIwMjBhNTgyMTQ5MzBkIGxlZ2FjeS10cnVuaworMzM2NjEgNWFkNDM5NjMyZGU1NGFjMTllM2JiZjBiYmY3MzdkMzFhMDZjZjNjMiBsZWdhY3ktdHJ1bmsKKzMzNjYyIDE3Y2UxMjM2OTQ3N2E3Yzg2ZGM4NjdmYmMwZjIwYjc5NjQ0OTJiMDEgbGVnYWN5LXRydW5rCiszMzY2MyAyMTE4NzA5Nzg1NGM5MGU1MjJiMDE0ZTg0OTY1MjBiOWVmODEzNDgwIGxlZ2FjeS10cnVuaworMzM2NjQgMWJkNmU2MmZiMDZmNzc5MzdjZGFmNzRkNmIyMTFjMTlkOGJlYmZjMCBsZWdhY3ktdHJ1bmsKKzMzNjY1IDdiYTQyYzk2Mjk0Y2M2OTNjMDg0ZTk5NjMzYjRiYWExYzdmZWJhYjQgcmVsZWFzZTIyLW1haW50CiszMzY2NiBmMjcwOGVmNjAxNjliMTkyZDllMDY2ZDNjZjZhMjY0ZmU0ZDAwMmVmIGxlZ2FjeS10cnVuaworMzM2NjcgMmRhMDViNWI1YzY1MDU1YTM2NzE2YzNjNzFhNjI1OGY4YzdkNDVlMCBsZWdhY3ktdHJ1bmsKKzMzNjY4IDI5ZjA3YWRjMzAxOWQwNzVjOWIzMmE4NTNkYjE0NmQxNGM2ZWI0YjEgbGVnYWN5LXRydW5rCiszMzY2OSA4ZjMwNmQzZDZkNTZlZDhkZTM3NDI2ZDRkMWFiMWQ0Mzg4MzJjNTY2IHJlbGVhc2UyMi1tYWludAorMzM2NzAgMDAwOWEwMzgzMjIyNWE2NzVjOTA1MzkwN2EwMTMzODI5NDI0ZmVlNSByZWxlYXNlMjItbWFpbnQKKzMzNjcxIGI1OTQ5NTkxZDlkNTc0ZTA0NWUyMWQwNTgxYzIyY2RhYTAwODQ3MDcgcmVsZWFzZTIyLW1haW50CiszMzY3MiA4NmU0NzI1YTlkYmQ0Yjk1NGRmOGQ0MjllZjcyMGE5YzI3MWM1ZjA5IGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY3MyBiMzNjNjBmY2NlNzRmOWRmMGQxZjYwMTViNGNkZDU5MzVlMTI4MzNjIGxlZ2FjeS10cnVuaworMzM2NzQgMzVjY2ZjMTQwY2FjMGMyZjNjYWQ5ZWI2ODEzYWE0NzY5YWJjOGMxYyBsZWdhY3ktdHJ1bmsKKzMzNjc1IDczMGFiZmNmMjYxMGU5YzcxY2IwMDU1YjI5YmU2MzQxYzJmNTUxYjIgbGVnYWN5LXRydW5rCiszMzY3NiA2NzNiY2VkOTkxODBmZDVhYzc1MjU0ZTlhMjY5ZTBiMjZjZGY4NzU1IGxlZ2FjeS10cnVuaworMzM2NzcgYWE0NGUwNjg4ODk2YTA0NTM4NTI5OGEzZmE1ODBjN2Y5ZDFlOGRkMSBsZWdhY3ktdHJ1bmsKKzMzNjc4IDAyZTViNGI2N2E2NjMwM2M0OWE5N2Q5NmFmMGE4YzY5NmJkM2JmYTUgbGVnYWN5LXRydW5rCiszMzY3OSAwOTU0NjljN2FiZTcyNzAyMDAyY2JjM2ViYmZhNDc5MmU3NWM5MjdjIGxlZ2FjeS10cnVuaworMzM2NzkgZmNlNWM5ZTlhYmM3MjIzOTRjYjJlOTA5YjdlMmEzOTA4MGQ0NDQ4ZSBsZWdhY3ktdHJ1bmsKKzMzNjgxIGUxYmIxMjYyZjBiYzE0NjIzZDY0NmIwMGNiNTQ3NWJkMDE5ODgxMDAgaW5kZXhpbmctY2xlYW51cC1icmFuY2gKKzMzNjgyIDgzZTA2ZmUxMjRhMTkzYTUzNGU0NDg4OTliNWI1OTc1NTUwNGU0ZGQgbGVnYWN5LXRydW5rCiszMzY4MyA1M2I3NjBiMDI3Yjc3MTJiMDY3ZDI0ZWJjMDNkNTE3ZWRmODEwY2FlIGFzdC1icmFuY2gKKzMzNjg0IDk2ZmE4ZjBiOWVlYmE3ZmNkMmFmMDUxYzk0YmY3YTI0ZTg4NWRjYjAgYXN0LWJyYW5jaAorMzM2ODUgY2ZiYjdiODI2OTJkNzBmMDk3MWUzN2RmNTc1MDdlMzAwNTI3M2E4OSBhc3QtYnJhbmNoCiszMzY4NiBmODJlYjE2MDQ0MGJkYTQ5ZWMyMjg5NGZmN2M1OTI5NmU4MWVjOGUwIGxlZ2FjeS10cnVuaworMzM2ODcgNTJkZDU0OGQzYmU5YTk3YWQ3NzliYjE2NTFjYmE0YzQxNjY2NDJkNiBsZWdhY3ktdHJ1bmsKKzMzNjg4IDNhZGRhODFhMGUwYmQwNTI0YTdjYmIxYTQ5Mzk5NDliNzhkZjk0M2YgbGVnYWN5LXRydW5rCiszMzY4OSAzNWRlYTEwZGNkYzQ1ZTg1YzFhZTQ5NzIyZjdiMjU1NDVhMDE3YzAwIGxlZ2FjeS10cnVuaworMzM2OTAgMWZiYWEwNWIzNWMxYmYwZWMxNWI1OWUxMTY0YTFmNGNiZmNkNGY2MCByZWxlYXNlMjItbWFpbnQKKzMzNjkxIDhjZDk0ZDExN2Y4Nzc4OTI3YzQ0YjI5YWVmYTBmZTFkYjQ0ODJjOWEgbGVnYWN5LXRydW5rCiszMzY5MiAzN2NjZjFiYzU0ZTA0NGZiZGM2YjI0NDViZTU5OTAxYmI4ZDRhODYwIGxlZ2FjeS10cnVuaworMzM2OTMgMTVmYzgzYzUwNWUzMTQ5NzAyNmIwYTlmNTc2ZjA3OGFmNDljZGU4NyBsZWdhY3ktdHJ1bmsKKzMzNjk0IGNmYTlmMDQ5YzIwNGM2OGFhMmYyMjI0ZGM0ODk5MDk5ZTczMTkwNGIgbGVnYWN5LXRydW5rCiszMzY5NSA0YjU3MDIzMDZjNTgxYjNlZjZiY2RiZGNlZWE1ZTg5ZmY3YmRhZjQyIGxlZ2FjeS10cnVuaworMzM2OTYgZWZhMWJiNjU2YjJiNmU1MTlhNzIzYmM1NjI4NDVkMTAxOWE0YzkzOCBsZWdhY3ktdHJ1bmsKKzMzNjk3IGExMzE1MmIyNWZlOGRmOTNkMGExNjFmYzUzZGU2MzQzZDljZDZlZGMgbGVnYWN5LXRydW5rCiszMzY5OCBkZTdkOWEyYjVmYWMzMDgzMjQwNmZlY2Q4MGNmMjY5YTM3ZTM4NThjIGxlZ2FjeS10cnVuaworMzM2OTkgZWU4YmFjYzZmMDY4ZDYxNzRiM2JjMzA2ODMyNGRhMDllYjMyNTNlOSBsZWdhY3ktdHJ1bmsKKzMzNzAwIDI5MDk0MDE2Mzk3ZDYyNjBkNGVmOTRkNjExZDhmNzhhZGFmZTBjMjggbGVnYWN5LXRydW5rCiszMzcwMSA2NzRjZjVhMjQxNDdlYmI2ODMzY2EyNzVkMzMzOWY2M2QwZWYxYjM3IGxlZ2FjeS10cnVuaworMzM3MDIgMTJhN2YyMTU2NDgxNTQxN2NkOGM2NGIwZTgwYTQxYWM2ZGM0MGQzZiByZWxlYXNlMjItbWFpbnQKKzMzNzAzIDc0YTVjZTQ5YTkyZmM4MzJhZDQ0MDU4MDgzNDJjNDBmOTdkNmRmMGYgcmVsZWFzZTIyLW1haW50CiszMzcwNCAwZDc5ZGM4NTRhYzQ2OTBlZDQxNWM4MGM1ODJhMTdhYTRlMzU5ODAyIGxlZ2FjeS10cnVuaworMzM3MDUgYTYyMTUzZDljOGQ2NTE3MjUxZGRhN2FhMmZiOWEwNTc2OTc2YjQzMiByZWxlYXNlMjMtYnJhbmNoCiszMzcwNyAyMWI4MTM5OWI2Mjg0MjBhNjhjODZiOTgwMjViY2JlNjdjNTc1MTBmIHJlbGVhc2UyMy1icmFuY2gKKzMzNzA4IGE1MjAzNjE0Y2FhOTZkNmI5Y2MyZTRlMzFmMWU5NTAyMGRkNzU0ZDIgcmVsZWFzZTIzLWJyYW5jaAorMzM3MDggMThlZGM3ZDU3ZGZmYjU2YmU4Mzc0ZjM1ZTQ3ZjM5MzI5ZjVlOWQzMSByZWxlYXNlMjMtYnJhbmNoCiszMzcxMCBlY2Q4NTczMjA0Y2QyNGIxZmYxZjg0Yjc3ZGE4MjEwYjg1ZjQ1ODE2IHJlbGVhc2UyMy1icmFuY2gKKzMzNzExIDQzYjBhNDA0ZDRhMDFjYzE3OThlNDEzNTU4NTU5ZmVlODBhYTJmZTEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MTIgYzNlNjlmMzc2ZjI5YjE5MTE0MzQxNGUyZWQwMjk5MDRiMzc5ZGVjNiBsZWdhY3ktdHJ1bmsKKzMzNzEzIDNmZTgyZDU3ZDBkMTdmMWQ4ZDM5NWViNTJiMDA0MzgxYTMzOTU2ZmYgbGVnYWN5LXRydW5rCiszMzcxNCAxZDYzZTE1Mzk4OWYwMzU0NmFlOGIyYWQwZDcwYjJkM2I3YmIzMjQ3IGxlZ2FjeS10cnVuaworMzM3MTUgYjdlMmQ3MzgwY2IyMDk3YzcxYTRhZTJjMDhmZTZjNzYxZWE2MzJjZCBsZWdhY3ktdHJ1bmsKKzMzNzE2IDcwMmFhNmViMTFmOWIzZDBkMzdlNGVmNGI4ZTEyYTMzNzgzN2U4NzIgbGVnYWN5LXRydW5rCiszMzcxOSBiODJlYTBiMDdiMGFiOGI1YjQzNzJkNDdkOTIzOGVlMWZmOGU1NmMyIHJlbGVhc2UyMy1icmFuY2gKKzMzNzIwIGMzNDBiMjdkNzM5YjExMmZhNTYwNzg5ZWM1NTFkNGFkNzgyMTNlYmMgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjEgMDI1MjlmYjE4ODE1YTA4OGNiOTE1OTZiOWNhYjExNjJiZWNkOGJlZCByZWxlYXNlMjMtYnJhbmNoCiszMzcyMiBlNTlhMzZhMTgwNWVkNmNiZWE0MDhjOWE2OWZkYzVmZGE2NmQ0M2Y2IGxlZ2FjeS10cnVuaworMzM3MjMgZTRlZTk4NmFmMWEwN2Y3ZDQ4ZTI1ZjBiNTNiZTIzMjk1NzJjNGU2NyBsZWdhY3ktdHJ1bmsKKzMzNzI0IGUxNDgyOTZkOGE5Mzg4ZWZlZDkwNzkzMjk1ZjE3NTI2MWJlMTA4NDEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjUgMTg3MzFkMjRlM2QxMDM3NzFiMmI1ZGNlMGYyMDgyMGUxY2Q1Zjg4YSBsZWdhY3ktdHJ1bmsKKzMzNzI2IDJmMDNmODM5ODRiMDcxYzkwMDEzYzg1NDhlYmY3MjA3ZjlkODhlMjYgbGVnYWN5LXRydW5rCiszMzcyNyA2Nzg0YTI0MTYzMzE1MGE5ODU5MGQ5MTc4NWE3YzEyYzFkODcxZDg1IGxlZ2FjeS10cnVuaworMzM3MjggZTYyMWE5N2JmYTE2YjFkZGY1ZjBmMzBhMjNmYzQ5ZmRmNWZlNzVmOSBsZWdhY3ktdHJ1bmsKKzMzNzI5IGUyMTNjZmUxN2E2MjRkM2E2MDgxYjhjMjdmMzIzZTJkOGI3Y2MxMmQgbGVnYWN5LXRydW5rCiszMzczMCBkNzI1NDdjOTE1ZDVhNjRlZjVjYjRkMDhjYzY2MGJhYmVlMGMzY2MwIGxlZ2FjeS10cnVuaworMzM3MzEgNjc3MDM4ODczYTIyYjk0ZGVkNDhkMzYxNjdkZWU1ZWE3YWU2ZDhlMyBsZWdhY3ktdHJ1bmsKKzMzNzMyIDA4ZjM4ZGFmYzk4YTcwNjRjNGI2ZTcwYzUzYjdmZjJiYTcwOTJjYzcgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzMgOGQ4Y2RlZTM0NGFkNTY2Nzg2ZDMxNGQ3NDAwZjIzOWM2YzJmOWY1ZSByZWxlYXNlMjMtYnJhbmNoCiszMzczNCA5ZTBkMzlhMmQzN2U0OWRlYzNhMWI2MjYyMWU0MjcyN2RkNDA4MTdlIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM1IDA0MDY4NzVjYTdmZDNiNjEzY2U2MTYxM2Y1MWFlM2YzMmNmNjc3YmEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzYgNmY2ZGU3NjFlZjliN2FkYjhjYjUxYzM2NTAzZjIzNjMzNjJkODJlZSByZWxlYXNlMjMtYnJhbmNoCiszMzczNyAyNGU3Mzc5OGVkMDRlNGVkN2FmMWUwNTZlMzI2OWJkOTlkMmFmMjNiIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM4IDcwNThkY2Y3MzNkNDY2YzAwMmFiYWQyNGExNGYwZDFhYTg5MDE1ZGEgbGVnYWN5LXRydW5rCiszMzczOSA0M2M5NzcxZTBiZTEwYWE1MGQ4NjYyZTcyMWNhYTc4ZDIxZGVjODMyIGxlZ2FjeS10cnVuaworMzM3NDAgY2UxODUwMzRiMzgwN2RkODM1ZmZkOWQwYWRhMDgwOTRlNjg2NDY4MSBsZWdhY3ktdHJ1bmsKKzMzNzQxIDY5YzhlMzlmNmVlNmM1NmEyNmVjYzJhNTNkZWI2ZTYwOTlkOGZiNTIgbGVnYWN5LXRydW5rCiszMzc0MiAwNTA0YmE4ZWZiYjZjZGQxMWYxYTQ3Y2FmMGI0MjRmY2E0MzMyOTVjIGxlZ2FjeS10cnVuaworMzM3NDMgMGM2MjE4MDE0MDlhZjI4NjJiYmFkMWIxOWFhN2JjODM5ZDllMDIzMSBsZWdhY3ktdHJ1bmsKKzMzNzQ0IGQ4YzhmZTBjNzNlZGVlZDgzZDM2ZGM2YzhiYTI1NGIzYzEwMmJiZDkgbGVnYWN5LXRydW5rCiszMzc0NSA2NDNmZmI3ZGIxOGZkMDVmOWZlMjc4YjcxMjE5ODIyMTUwNWM4YWJmIGxlZ2FjeS10cnVuaworMzM3NDYgZDA5OTQ0Y2VlM2E0ZmU0ZWQxNDFkZWM0MzFjZjYxNTMwZDRjMTQyMCBsZWdhY3ktdHJ1bmsKKzMzNzQ3IDUyNmMxMmFiMzZhZjM5ODJmNzA0YmYyNTJlN2Q4YTY0NjJiNGU1YWIgcmVsZWFzZTIzLWJyYW5jaAorMzM3NDkgZDczOGEwN2EyOTNhMzVmNDAzM2JjNzlkYzQ5YjllMzgwY2JhNzY1ZCByZWxlYXNlMjMtbWFpbnQKKzMzNzUwIGM5YTAwNTkwYjkwMWRkZGJlNjZhYzkxNzZiODUyMmIzNGY3ZmNkNzMgcmVsZWFzZTIzLW1haW50CiszMzc1MSA4MDE0ZmI4MGQxNDQ1MzliNzRkZjMyOGRjZWExZDE2ZDE4MzViZjIzIHJlbGVhc2UyMy1tYWludAorMzM3NTIgZGI5ZDYzMDIzN2E2NTc2NTgyM2M3NWVlOWY2M2E4ZWI1OGU5ZWYxZiByZWxlYXNlMjMtbWFpbnQKKzMzNzUzIGQ4ZTUyYmNlMmNmOTAzYjQ3YWNhYzQ0MDQwMWI3MTBlOTVjNDQ2YWIgbGVnYWN5LXRydW5rCiszMzc1NCA1YTJhOTFiOTc4MTBhMWNiMzQzYzllNGNlZDI4N2E5YzQwYjFkODI4IGxlZ2FjeS10cnVuaworMzM3NTUgMmNmYWNhNjJhOTkwNzNkYWMwNGQwYWYxZGNlOGQ1NjQ4MzIzYjk0NyBsZWdhY3ktdHJ1bmsKKzMzNzU2IGFlODQ4NTg2N2QzMDcxMWFiOThhN2Q0NzAwZDVmNWFiMzM3ZmRkODIgbGVnYWN5LXRydW5rCiszMzc1NyA0OTRiMDdhNWUyZTU3Y2JjMjM4ODNkNTVhZjhkOWQxM2M4YWRjNjkwIGxlZ2FjeS10cnVuaworMzM3NTggNzgwMWIxM2M1MmM5NDYxMmM3NDI2MjkwZGE2Y2JiZWExN2I0YmQ5NiBsZWdhY3ktdHJ1bmsKKzMzNzU5IDBjZmM2Y2FiY2U4ODRhNTMwY2NlYjU4ZGI4N2ExYzMzMmQxYmViZTggbGVnYWN5LXRydW5rCiszMzc2MCBhMDMwMGVhNjM4ZGRiNDEzMDE5MDk2N2YyMTgwZmExNmU3NWEyYWY2IHJlbGVhc2UyMy1tYWludAorMzM3NjEgYjI0ZTlkNzFmYTNjZGJjN2M5MTBlZTc4MDY3YTE0MDZkNmFkMmYwYyBsZWdhY3ktdHJ1bmsKKzMzNzYyIDFkNWJlNjk4MWQ1N2VkZDg3MmM0YzUzM2U0OTZhMTlmODBkNWU0YjQgcmVsZWFzZTIzLW1haW50CiszMzc2MyBlNDc3YjU5OTkyNGRhODNmNTU3MzgwYTY0NTAwMTk4NTA5OTc5ODNhIGxlZ2FjeS10cnVuaworMzM3NjQgYWFiMTA4OWYwZjg1ZGVlYmJkNTQ1ZjljYzIzZjRmNGEyMDI5OGM2NiByZWxlYXNlMjMtbWFpbnQKKzMzNzY1IDRhZGZkNzY0NjZiYzZjMDZlNDg0YjUyZmU0YTIzODZiZGI4Mjc2ZWQgcmVsZWFzZTIzLW1haW50CiszMzc2NiAyMDAxNjVkMTFhOTQ2MjJhY2ViYjAyMWY5NjM1ODRhODE2OTQzNDQ2IGxlZ2FjeS10cnVuaworMzM3NjcgZjI2MTliZDY4M2RiM2RiMWJiNzhiMGYwNTU2MTZiN2ZmN2VlMTRlZSByZWxlYXNlMjMtbWFpbnQKKzMzNzY4IDM1NGM3ZWU0MzhiZjRlYTAxNzRmOTNhNzI5NmM3ZWRhMGUwMTc2NzIgbGVnYWN5LXRydW5rCiszMzc2OSA3YWVhMWI1Y2RlYmJhMmY3NmZmYzhiMzhmODdkMTE2MGQ3NzViMGFkIHJlbGVhc2UyMy1tYWludAorMzM3NzAgNTg5ZDU1NDVhZjQxMTYzMDI2NDQwNzFhODdkMTQwM2MxOGJiN2Q3OCBsZWdhY3ktdHJ1bmsKKzMzNzcxIDBlNjQyNDA4MDBkZDEzYzcxZDlkNDdhYzVhNTAzNGQxMzMxYjhkNTYgcmVsZWFzZTIyLW1haW50CiszMzc3MiA5OGU2YWMxZDgzNzk3MTk2M2Y0NTE4ZTJhMzg5YmY3MTlhOGIzZjhiIGxlZ2FjeS10cnVuaworMzM3NzMgYWUwMjQyZTM0NTllZWFhOTUyM2YzZTc0NjczOTFiZDA4ZDQxOGM3NSBsZWdhY3ktdHJ1bmsKKzMzNzc0IDliZDVjMDUyYjMwOGI3OGE3MmVhMjk3NmFlZDA3Y2ZiZTczYTQzN2MgbGVnYWN5LXRydW5rCiszMzc3NSAxNzE4MTRmNWRjYzYzMjEwYjYyMWE0M2I0YTdmOTVkM2Q5MTE0MzVkIGxlZ2FjeS10cnVuaworMzM3NzYgYWIxMGMwYzI1YzAzMDRhZDRhMzk4MTAzMzBkYTk3NjM2ZDQzYjMxOSBsZWdhY3ktdHJ1bmsKKzMzNzc3IDA2MWQ4NmZjMTFiYjM4MzRkYjU5N2U3Mjc3NTM0NGJhZGNhN2EyNzkgbGVnYWN5LXRydW5rCiszMzc3OCA3MzVlYzA4Njk0OTIzZmViNjA2MWNhZmEwZTEwZTc3ODNlNWE1ZGFlIGxlZ2FjeS10cnVuaworMzM3NzkgN2JkNDAyMDUwOTRjYzQ4MjNiYWYzYjk1NDRhYjg0MDMwNjk4NDgzMCByZWxlYXNlMjMtbWFpbnQKKzMzNzgwIDM2YzI3NzM4MWQ3OGIzYmI2Mzc3MDVkZjUxMDMxYWIzN2ZlYmRkZDMgcmVsZWFzZTIzLW1haW50CiszMzc4MSA4Y2M4MDAwMmZiOTAzNzA4Y2U0MTU0MGM4YThmODI4OTE0OWM5MWJlIGxlZ2FjeS10cnVuaworMzM3ODIgMmIxNGM5ODI3ZDljZDczYmE2NzdlMzU3ZGExN2VmZDBkMzMwOTU3MyByZWxlYXNlMjMtbWFpbnQKKzMzNzgzIDViMWRkYzRiNDliOWJiMWY5NjJhYzMzZWZlNzNhYzE1MDI2YWRkNTUgcmVsZWFzZTIzLW1haW50CiszMzc4NCA4YjdlMzdiNWYxZWU0NTFkMjQ5MThhOTNhNWVmMGY2ZmRjYzQwMDRiIHJlbGVhc2UyMy1tYWludAorMzM3ODUgNzYyZTFiMjA4OGU1MTg4ZGZlZTYzMDY5OTQ5YmI3OTgzYWViMjFjNSByZWxlYXNlMjMtbWFpbnQKKzMzNzg2IDU5ZmY3N2IwYWM3MjRhYjEyYTU2ZTY1NmM4ODY3MDM3YmQzNGRlOWMgcmVsZWFzZTIzLW1haW50CiszMzc4NyA4ZjkzYjA5YjJiYjVmMzRjMjQ1MTBjY2ZjZWQ3OWNmNjdkODU4MjY0IHJlbGVhc2UyMy1tYWludAorMzM3ODggN2Y1NDg5MTg0ZDk0MzMwYWJlYjRmMzYwNjM3N2NlZjY1M2I1OGJlMyBsZWdhY3ktdHJ1bmsKKzMzNzg5IDYyMTZlNzRiODhlZmJlMzY4NTlkOTlhM2E2NDJmOTRjZDQ2NmNhODUgcmVsZWFzZTIzLW1haW50CiszMzc5MCAxYzQ1MTk0ZDEyNGQ4OTUyNGY0YjZjZDg5MDBhOWNjNDBkYzA4MTYzIGxlZ2FjeS10cnVuaworMzM3OTEgYjA3NmY2OWM1ZGFjMzEyYzg2YzhiYTViYmVlYzAyMTE3Yjg1OTc1NyByZWxlYXNlMjMtYnJhbmNoCiszMzc5MiBkMDVkMGVkNDY1ZDgwMTY1ZGVhZDE4ZmY5ZjkxOGVjMmM1OTA4Y2U4IGxlZ2FjeS10cnVuaworMzM3OTMgZGJkZTNkZDMxMDY4NTJlZmQyMWYzOGI3Mjg5YjQzMzhlMzE0ZmM3NCByZWxlYXNlMjMtbWFpbnQKKzMzNzk0IDhlYmI5YjM1NzZkMTNjOWQwMzQ3NGQyNTFhODJlMTFlYWE4OWI0OTYgcmVsZWFzZTIzLWJyYW5jaAorMzM3OTUgNTNjMmZmMWQ4MWQxNjk4YWQwOWIzYjVmMzRhNGM0N2FjODQ2ZTg5MiByZWxlYXNlMjMtbWFpbnQKKzMzNzk2IGJmY2M5OGRlN2ZjYzI1MDQ4Yjg5OWQ1OGMzNDhhMDUwYjUxYmY4NjAgcmVsZWFzZTIzLW1haW50CiszMzc5NyA0MGY1ZjBiNDRjYzQ0N2Y3OGU2MDIzMDFlYTdjYTIzNDAzNzRlNDc4IHJlbGVhc2UyMy1tYWludAorMzM3OTggYmE0OGU1NzFhNGQ1Y2U5ZjYzNDFmNWM3OWZiZDg0MTFkNzA2YTM0NyBsZWdhY3ktdHJ1bmsKKzMzNzk5IDVjOGIyYTY2NjZjMzZmYzYzMmQyZmZlMGU0NWQwYWNlZDhjZDZmZmIgbGVnYWN5LXRydW5rCiszMzgwMCBhZmRlNDAyZTNhNTVhOTliMjU3YzlkMmJmYzY4YmY5Y2EwOWM3Y2I1IHJlbGVhc2UyMy1tYWludAorMzM4MDEgZDRjY2U1NTM0NzhhODEwZDA0YTkyMzUyY2VkOGRhZmUzYzYwMmMwNiBsZWdhY3ktdHJ1bmsKKzMzODAyIDBhYzQzOTZiMTg5NGEwZTI5ZDhjMGIxY2Q1OTBhNGQxZTZjZWZiYzQgbGVnYWN5LXRydW5rCiszMzgwMyA3NGVmOGI4ZTAwNjE3NGE1M2MwYjVhNjQ1Yzg5MTMwZDk2YzFlMmIyIHJlbGVhc2UyMy1tYWludAorMzM4MDQgZTNjOWI0OGRlNjBhZTI3NDA2OGI2ODQ4ZDAyM2I2ZGZkMTQwNDM4ZSBsZWdhY3ktdHJ1bmsKKzMzODA1IDA2MDE2ZDVkODFkN2Q0ZTFkNDgwYTM4MDBhNTc4NzhkNDkzYzAwOTIgbGVnYWN5LXRydW5rCiszMzgwNiAxYzRkMTliOWJhYWM2NTNmZjBjM2FiOWQ3NWI4NTk4MDIxMTVkNmNjIHJlbGVhc2UyMy1tYWludAorMzM4MDcgZDYzNzk2MjBmYjA4ZDE0YTcwNmQzNzU2ZTcyMzZhY2FjY2JmZmIyMSBsZWdhY3ktdHJ1bmsKKzMzODA4IDNkYzhmMmI0MjQ4YzJiODNlZDNhNDRjZmI5ZGJmNTZhZjliMjk3N2EgcmVsZWFzZTIzLW1haW50CiszMzgwOSAwOWEyY2RlYWI4YzBhZTgzZTI5YTA2NzZmN2NiMzE1OTU2MDA2M2VkIGxlZ2FjeS10cnVuaworMzM4MTAgNTMwZTIzYmY5ZTE5M2VlYWNmODhmZGNjYzhlZWM2NTQwMTc0MDc2MyBsZWdhY3ktdHJ1bmsKKzMzODExIDkwMDMyNzA5NWIwNTE0MDNmYTZhODg0MDI0YWI3MWU3OTgxNWE3YjUgcmVsZWFzZTIzLW1haW50CiszMzgxMiA1Mjg0MzdhM2Y1ZjdhNzVjMTkxMDg4YTc5N2JjYTJiZWY0MGYzMDMzIGxlZ2FjeS10cnVuaworMzM4MTMgNjY1ZjhhNmY0MzdkYjQ2YmNlODM3Zjc0MWRjNjkyODAwMGRiODkxYiByZWxlYXNlMjMtbWFpbnQKKzMzODE0IDQzNTNmMDQ0MjJlMzIxZmQxMjRiMWVjMDJjMmM2Y2Q4NzdjYTQ0NWIgbGVnYWN5LXRydW5rCiszMzgxNSAyNjUwNzk4ODM2Njg3MzhmNmRmNGM2NzVmNmVkYjViOTVmNDk0N2I2IGxlZ2FjeS10cnVuaworMzM4MTYgNjE2YThjMGNjOTE3MDZhYmUwNDE1NzdjYTk1NjdiMjc0ZGI1ZjUyYiByZWxlYXNlMjMtbWFpbnQKKzMzODE3IGE4OGU2ZGZiZmQ2ZDM0ZjEwN2JkMzYwZmI1ZmNlZTdlYmU2NDVmNTQgbGVnYWN5LXRydW5rCiszMzgxOCBmYjJhYmNhMmQyZDU1OWM2MWQ2ZDg4MmJjZTE3YWViNWQ0MzM4NDAzIHJlbGVhc2UyMy1tYWludAorMzM4MTkgOTJkNjgwODNhMGZkNjdiZmFiZWZjZTc0NGE5OTQ3NTVmNmI5NjQxYiBsZWdhY3ktdHJ1bmsKKzMzODE5IDhlNjNjNWEzM2Y0NzBmN2MzNjNlMzhhN2MxNjJkMjQ5ZWRjYjJiYjYgcmVsZWFzZTIzLW1haW50CiszMzgyMCA0NjEwMzBlNmJkNjc2YzViN2Q5OTdiYzcxNmI0NGE4MjlmZDliMzkxIHJlbGVhc2UyMy1tYWludAorMzM4MjEgNjdhOTFmNzUwYzYzMTJjYzRmNzg5MzNhYTIzNWIwMzA0ZWZiYjdjNSByZWxlYXNlMjMtbWFpbnQKKzMzODIyIDlmNmUyZGVlMTg5MmY3M2I5MjA2ZWFhMmM2YzU2NTFhNmNjMjlkMjMgbGVnYWN5LXRydW5rCiszMzgyMyA3YjkwNjU3MWRjNjhiNGYwM2EwNjQxMWE0MjQ5OTMyOTQ5Mzg3YzZkIHJlbGVhc2UyMy1tYWludAorMzM4MjQgZmUwNTdiZWE4ODU2NjljZDVkMGVjOWEwNTFjYmYwYjdhNTQxN2FkMyByZWxlYXNlMjMtbWFpbnQKKzMzODI1IDQwYWE0YTEwZjQ5YjZhNWJmZjIwM2NiNDFlYzE0OTg5NWU2MWU3MjIgbGVnYWN5LXRydW5rCiszMzgyNiAzNzc5ZWI0ODNlNmJkNWRhNDNmMjEzYzlhNTJlMzQzMjFiNWU3NzQ3IGxlZ2FjeS10cnVuaworMzM4MjcgNzIwZjQ0YzZkMTFjMmQxNGYwNWRjZWE1NGVlYzY3ZDQ1MjIxOWVhMSByZWxlYXNlMjMtbWFpbnQKKzMzODI4IDE5YzBmODE3Y2I0NzU3NWMwNjVlNDc0NTUzNmUyODFiZjhjOTI2MWMgbGVnYWN5LXRydW5rCiszMzgyOSA5OThiMDY3MzBjOWZiMGU1OWNkMTg1MmE0YjkyYWYzN2Q2MTdlOWU0IHJlbGVhc2UyMy1tYWludAorMzM4MzAgMjEwNjc2ZWM5ZDVmMTdlZTY0ZmYzYWQ3Mzg4OGU2NWZmYTY2YzA1NSBsZWdhY3ktdHJ1bmsKKzMzODMxIDE1OThmYmU2OTNmOTljODUyNjUzMjBlMTIyODNhOGRiM2NlZGZlMjQgcmVsZWFzZTIzLW1haW50CiszMzgzMiAyOTAzMmYzN2RjOGY4MjdmMzU5NWUxODJlYzY2NjhhODlhNzNmNDQzIGxlZ2FjeS10cnVuaworMzM4MzMgNGI0NmQ1NDQ5ZDQ5OTU3MjJiYzQ3NzQzYTQ5ZWU0ODZlZWU1NmRjMyBsZWdhY3ktdHJ1bmsKKzMzODM0IDY4NDJjZWIzOWExNDQxNmQ0ZWM3NzBkNTkwNDkyNTNhY2FjODI4ZGUgbGVnYWN5LXRydW5rCiszMzgzNSAyYzZmOTJjZGRiYWQ5YTlhMmZhNDU4ZmI1NmZmYjUyMWM4OTgzNzdmIGxlZ2FjeS10cnVuaworMzM4MzYgNTNmOTA2OWZjNjUwZWVhY2ZiZDhmZjVlZTY1ZmZmOWEzYWJkYjJlMiBsZWdhY3ktdHJ1bmsKKzMzODM3IGI4NjIzYjJjOWJjZTZhYjk2ZjMyZDkwZjZjNDdlZTE5MDU5Yjc4MjggbGVnYWN5LXRydW5rCiszMzgzOCA4MmExZDNmMjEwYWRmMDhhMGI2NjEwZmI3NmRlNzNlYzliODg4YjE0IGxlZ2FjeS10cnVuaworMzM4MzkgYzMzZDM2ODllZDViNmNhMGIwMzkyMDU5MDZmZGY3YzNkZjkyNmEwMiBsZWdhY3ktdHJ1bmsKKzMzODQwIGRlMjhkOTkyODg1NTU2ZGFlODE0ZWY5M2Q2ZmE2MTIzNTU0YzdkYjMgbGVnYWN5LXRydW5rCiszMzg0MSA1ZDBjODdiOTU3MGQzYWNiN2IxOWIzZTA1YmExYjY5ODZjYTQ1ZTI5IHJlbGVhc2UyMy1tYWludAorMzM4NDIgNTIzYzNkNjFkYmRkZTczNGEwZjU2ZGJkYjk0YTA4MDMyYjIzMDAxNyBsZWdhY3ktdHJ1bmsKKzMzODQyIDMwNGI1YTM2NTU3NjExNDIxOGI4YmMzZGFmZjg2ZDEzYTI0OTA2ZTMgcmVsZWFzZTIzLW1haW50CiszMzg0MyAxOGI2N2FlOWNmNDU4MjQzNjc2M2E1OGQ4ZGE1OTA0ZTZlYzM1ZmQyIGxlZ2FjeS10cnVuaworMzM4NDQgZGY2NTQ4NjFjY2Y2YTEwOWY0MTM1MmMzNjA0ZTZmNGY4OTVjN2UwMiBsZWdhY3ktdHJ1bmsKKzMzODQ1IGY3NDZkNTY5MGFkNmQ4MzlkZjViNGE3NzM2MWVkMmExZmJhODAxYTggbGVnYWN5LXRydW5rCiszMzg0NiBhYTVjYjhlM2I5ZWE1YjdkNGQwMWU1ZjE4ZDEzYTlmZmMwZGIwZWExIHJlbGVhc2UyMy1tYWludAorMzM4NDcgZjM2NTRjNWFkYTk0NDhjYTE1MTQ1OTEzYjVhY2JkYTExZjI1OWIyYyBsZWdhY3ktdHJ1bmsKKzMzODQ4IDQ2YmNhYjJiNzRlOTI0ODQ5YmU2YzFlNmQyOWUzMDg4Y2M2NDY0NDMgbGVnYWN5LXRydW5rCiszMzg0OSA0NTA1YTBiOTcyNGNmMTdkMDU0ODdmYmVjNzE2MWFiMTVjY2RmN2M0IHJlbGVhc2UyMy1icmFuY2gKKzMzODUwIDA1NjczYjE2YmRiOGMxZTlhOTI5MjM5YzNiZjA1ZjdiZTUwMmQ3OWYgbGVnYWN5LXRydW5rCiszMzg1MSBmNGI0YmY3ZTg3ZDdlMGJlNWU0ZmU0YWViZmRhMGZiMzg2ZjZmMjY4IHJlbGVhc2UyMy1tYWludAorMzM4NTIgZDlmMDI3ZGM2NzZkZDljZDU1MWM2YTBhYTQxOGZlNjM0ODFmNzM0MiBsZWdhY3ktdHJ1bmsKKzMzODUzIDdjYzBhMzM5NDZhMzA0MTZmNDhlNTgyOTJjZWU2NDY5NTA0ZDJmMmYgbGVnYWN5LXRydW5rCiszMzg1NCBmMGRmYmMxNDE0ODMzNmI4ZmM2YzA4N2Q3NGFmZGVkZWIyOGYwMjU2IHJlbGVhc2UyMy1tYWludAorMzM4NTUgNTkwZDhjY2FiYWM3YmQwYzA1MjVkNTg1OGE3Y2FhNjczZDExNDNkMiBsZWdhY3ktdHJ1bmsKKzMzODU2IDZkNzRmMDA2Zjg0YWNlODRjNjlhOTAxODM2ZGZjNWY4NTZiNmU3MjIgcmVsZWFzZTIzLW1haW50CiszMzg1NyA1OWJhZDdlZmZmMDIxNjk0NzAyYzg0YjMyNGI4MzE5OWM4YzdkYzc1IGxlZ2FjeS10cnVuaworMzM4NTggNTY4NmNhMjk3ZjU1ZjRmOTI3OWNjN2Q0NjAzYmUzZjhhZDZmNGE0YiByZWxlYXNlMjMtbWFpbnQKKzMzODU5IDlmNTNlNTNmMzg4MDIzYTEwNDM4ZDEyOWVkMmEyNjFkMzljMWY1MzQgbGVnYWN5LXRydW5rCiszMzg2MCAwODEzYjMzNjEwY2MzNWMzOWM4NTEzZmY3YWM4MTkxMjJiNGFiMzlhIGxlZ2FjeS10cnVuaworMzM4NjEgZTM3MzYzMGJmZWFiNzY0MGViZjE1ODM1MTk5YjU2ZWUxNDkzYzE2MSByZWxlYXNlMjMtbWFpbnQKKzMzODYyIGE0OWMxYjc2MTA2Y2U0YWM4YWY1NGNkNjJlMGVhM2ViZGFkMzIyMWIgbGVnYWN5LXRydW5rCiszMzg2MyBlMzI4MWIwZGY2YTQxYzU5NjVhOGI0MTc1ZjA0NTdmMThlZDRhZWE0IGxlZ2FjeS10cnVuaworMzM4NjQgYjY5ODIwOWI5ODI3ODgzNTRkMzBkNGEwMGYyN2M3MmM5ZTJkOTBlNiBsZWdhY3ktdHJ1bmsKKzMzODY1IDliODkxNjYzMWViNjllYzMyZTVjOWM0MjA1NTJiNmVmOWE5ZDZkZWEgcmVsZWFzZTIzLW1haW50CiszMzg2NiA0NDYwOTc5ZGVlYmY1ZWM2NTUzMjYyZDcyYmVhZjc4NjgxNTc0NjJiIGxlZ2FjeS10cnVuaworMzM4NjcgOTQxZDQ5YTY1ZjA2ZjEyMWZjNmEzMjYyZjZiNmViNmY3OGIyOGMzNiBsZWdhY3ktdHJ1bmsKKzMzODY4IDMzMjliMDU4ZGIyMDEyZWM2ZGM5N2IwZDVkNWEyMjJhODhkNzliZTYgbGVnYWN5LXRydW5rCiszMzg2OSA1NDYxN2VkMmQ4MzA4NzAyMjk2NmZmNDEzYzE3YzRmMmQ4NmFjYTZiIHJlbGVhc2UyMy1tYWludAorMzM4NzAgNDQzNTMzZDA4NzgzZGM3OGQ2Zjc0ODc2NDVlMTIwMTk5MmRiOWYxNyBsZWdhY3ktdHJ1bmsKKzMzODcxIDI5YjFkMDc2Mzc5MGFmNzBjNmE0NTc4ZDIxZjJhMGQ0OWQyNWU3YWUgcmVsZWFzZTIzLW1haW50CiszMzg3MiA3Y2I0YWQ1OTMyZTYyNmRmZTVkNzhjYTQ0YjhkMzY0NTg5ZjU1OTZhIGxlZ2FjeS10cnVuaworMzM4NzMgNDcwOGZhMDg2MTIxZjIzZDI3NDc4OGJlOGU5OWJkZTZlOGVlMmYwZSByZWxlYXNlMjMtbWFpbnQKKzMzODc0IGVmMjE2ODFhOWM3ZmI2MDk5Mjg3ODNlZTg5OTU4Njc3ODFiNDAwMzEgcmVsZWFzZTIzLW1haW50CiszMzg3NSBkYzQyNDlkZDllMzUzYTgyMjVkZWYxMmFkYzcxMTI0MGRkZjNlNDAyIGxlZ2FjeS10cnVuaworMzM4NzYgOGUyZWYyN2Y2ODhiNTM5NjA2MmY2OTAyMDAxMTM3Njg5NmViZTRkZSByZWxlYXNlMjEtbWFpbnQKKzMzODc3IDJkMjc0ZGEwOTI3NDc2OWYwYjEyZDNkMTQyMWFiNzI2MTdkYWQwZjYgbGVnYWN5LXRydW5rCiszMzg3OCA5NDJjZWViZTk2NzFhZjg2NTQzYzhiNTdjYTk0NjAxY2UyYWUzZDNiIHJlbGVhc2UyMy1tYWludAorMzM4NzkgM2RkYTUzYzMxMmE1YWFiMjNjZDA5NGU2MzVjMzJiNTkxNTRlOWQ5MyBsZWdhY3ktdHJ1bmsKKzMzODgwIGEzMzJkY2M3OTAyYjk2MGFhMDI2YTliYzM4MjdjM2MwNGEyNTZiNjggbGVnYWN5LXRydW5rCiszMzg4MSA5NDE0ODg2ZjVjN2FkYzYxOTk0OTllN2M4YjU3ZDdhODBjZThkYTExIGxlZ2FjeS10cnVuaworMzM4ODIgMmE5NDFmZjBhMTM2NjVlMDJmZWExNjg3NDE0MDBhYjE1YmZmYzU0YyBsZWdhY3ktdHJ1bmsKKzMzODgzIGI1NWQ0YTNmNDFlODZlMzk4NzUwNDRiNGE5NGI1YjFkNjViZTVkNGIgcmVsZWFzZTIzLW1haW50CiszMzg4NCAzZGI1MGQzMTM0MGQ5M2MxOGIzNTU2MjQ0ZDMzNzI5MjAxZDU5MTczIGxlZ2FjeS10cnVuaworMzM4ODUgNGZmMzg1NzJkMDM2ZTRmYTNmYTJmNGM3YWE1OWI1NjgwOGFlZDZjMCBsZWdhY3ktdHJ1bmsKKzMzODg2IDcxZGZkMWUxZjJlY2NkMjE4Y2I4NTYyMTgxZDg5NjZhNDIwNDc5ZmYgcmVsZWFzZTIzLW1haW50CiszMzg4NyA2MGFhZThhMWUyMzcyNmE0NTNhNGVmODFhZjg1MjI1Mzk0MzM3NDRkIHJlbGVhc2UyMy1tYWludAorMzM4ODggOTQ2NjUyOTFhYjFiZDMzMWRkMjczZGQwZjQ1YTFiM2Q4ZTRiMDg1YiBsZWdhY3ktdHJ1bmsKKzMzODg5IGNjYjQwZGE4YzQxMmM2MDE4NzM1ODg2MDI4MDdmNzU1OTdlZDQ5ODEgcmVsZWFzZTIzLW1haW50CiszMzg5MCA3YmM3NzI1MjdlNDRkYjhjOTAzZGFiY2Y4MTgzOThlNzM3YjUyOWU0IGxlZ2FjeS10cnVuaworMzM4OTEgYWY1NTM1YjBlMDA5ZTY2ODMwYjAwYTlmOGQzNDhiNjI4MzU3NjVhZSByZWxlYXNlMjMtbWFpbnQKKzMzODkyIDNlYTUyYmM3NGQxNzFmM2JlOGNlOGQ5YzBhMzI5NDFkNWVkMWIxZWUgbGVnYWN5LXRydW5rCiszMzg5MyBkMjc5YzQwYmQ3YjM2YmNlMzEwOGUyYTc3YTY3YjMwZjgxNmExNTdkIGxlZ2FjeS10cnVuaworMzM4OTQgYTU1ZmVlYTNmOTIxZGI1YTEwYzA0YzhhZTEzZDdlYjg1ZjIwMDM0ZSBsZWdhY3ktdHJ1bmsKKzMzODk1IGZkODI0ZDU3NGE4ZmRkMTAwNTQ3OGE4MTI0Y2M2MGQzZjJlMzgzOTUgbGVnYWN5LXRydW5rCiszMzg5NiAxMzFjNTRmMjAyZmQ4NDQ2MjQzYjU3ZDJmMzVmYWQzNzhmN2E3YjU3IGxlZ2FjeS10cnVuaworMzM4OTcgMGZhOTlkMzFmYjQ4MTIwZTQ2MWNhYTRjZTRlMWM1NTU4ZjAxNzQ1ZiBsZWdhY3ktdHJ1bmsKKzMzODk4IGMxMGExY2RjZTYyYjUxYjc5YTRmNGY5Mzg0YjZlZjEwMTc5M2RiZDIgbGVnYWN5LXRydW5rCiszMzg5OSA5YTVkNmViODFjZmFhZjM3NmJkMDQ1MzlkYzVkOWYyNGNiNTVhZmRjIHJlbGVhc2UyMy1tYWludAorMzM5MDAgM2I5MDc0YWQ3MjNlNGJmMmE1Njk3Y2Y3ZjI1MzJhMTFjMmYwOTQ5YSByZWxlYXNlMjMtbWFpbnQKKzMzOTAxIDM5ZTkyOGQwMGI2NDM5OGM3N2I0ODg3OTg5NmQwZDg1MjBhNTU1NmQgcmVsZWFzZTIyLW1haW50CiszMzkwMiBkNzg3NzkxODdjN2RmMDQ5MzczOGRhYmQzZTAyNjAwYzFiMzU0MjUzIHJlbGVhc2UyMy1tYWludAorMzM5MDIgZWYxZjI5NzNmYWQ4MDkwODI0MzMxM2JkNTZmZmU5ZjVmMDdhZThhMCByZWxlYXNlMjItbWFpbnQKKzMzOTAzIDVjNTRhNzhmMWQ1MTUyYjE1ZGMxMGE3NDNmN2RlNzlmY2U0YTRiMjcgcmVsZWFzZTIyLW1haW50CiszMzkwNCBiYzY5ZTBkZmQyYTAzNDQ5N2I1NmVjZDAzOTA3ZmNiMGZmOGQ1YjczIGxlZ2FjeS10cnVuaworMzM5MDUgNjY5NTY4ODk5MzA5ZmRiODhjODg0NWU2ZDMxY2IyZWMwZDk5N2YxNSBsZWdhY3ktdHJ1bmsKKzMzOTA2IDI1MWZhMDdmYzVkMWY1ZjJjMDAwZjcyYTMxZWY0NjNmN2FlOTMxNzEgcmVsZWFzZTIzLW1haW50CiszMzkwNyA0YzBhZjIyYThmM2QxMjZkYjdhOGVkNDdlMjY1OWY5ODg1MmVhOTdmIGxlZ2FjeS10cnVuaworMzM5MDggNDFiNmE1MzY3ZWU1NjQ2YjhlZDZhYjU2NTA1NjU2YzY0NjdmMTk2NiBsZWdhY3ktdHJ1bmsKKzMzOTA5IGRjMDFjZTJmODU1ODJkYzI0NTQ5ZTFjNTkwOGZlMzE2MjJmZDZlOWMgcmVsZWFzZTIzLW1haW50CiszMzkxMCA3NTZiNjVjNzlmNDAwMjQ1YzFkYjNkOWEyYTE5ODc5ZDU4NDZjNDJlIHJlbGVhc2UyMy1tYWludAorMzM5MTEgMGFhYzA3NjYzNDQ4ZTMwMGQ1YjA4MzgyYWY5NmUzMjg1NmJjYWFiMyBsZWdhY3ktdHJ1bmsKKzMzOTEyIGY4ZWJhZGUyZTcyNGRjNjFmYzJiNmY3M2I3ODc4NzA4MWY3M2M2ZjkgcmVsZWFzZTIzLW1haW50CiszMzkxMyBkMmU0Yzk0ZWZiYWFiMzEwZDBjNDg3N2VkYTk1OTU3NTY4Zjc1Y2E3IGxlZ2FjeS10cnVuaworMzM5MTQgYWM4NmIwNzE3YWQxOTQ2M2RlMzc5NDc4ZGYyMDUzMzE3ODEzZjRmZSBsZWdhY3ktdHJ1bmsKKzMzOTE1IDBmZTYwZmE2MTdkOGRjNzA0MWQ3NWZhOTk4MmVlMWE3ZWZkNDhiYzggcmVsZWFzZTIzLW1haW50CiszMzkxNiAyZGI4YzYzZTY5Y2Q2NGYyYjlhMmQwZDc5NTM5Yzk1YTE2Y2FkNDk3IGxlZ2FjeS10cnVuaworMzM5MTcgNmMxZTQ3ZDU0YTdhMzAxZDgzZTNiN2NlODllNTI5MTNiM2FlNTE0MyBsZWdhY3ktdHJ1bmsKKzMzOTE4IGEzODA2MTBlZWI1YWM3OTVkYTM5OWUyOWE5NjA0YTY3YWI0MGY2NDIgcmVsZWFzZTIzLW1haW50CiszMzkxOSBkMTVkNDRkOWQ2ZjVjZGQ1ZDhhMWJmODdhMTgxNjM5YzAxYmIwYzhiIHJlbGVhc2UyMy1tYWludAorMzM5MjAgNWU5M2E0ZjZkOWE5OWZhMjNhMjU5MzQ2NmI0OTBjYTAyYjMzMjVlNCBsZWdhY3ktdHJ1bmsKKzMzOTIxIGI1MTkwMzUwMDZjNzE5ODBjMDUzNjUzMTNmZjk3MzliZmM1NTc4MTcgYXN0LWJyYW5jaAorMzM5MjIgZTRmZjBkYjNiMDg4NmQwM2RmNDdkYjgxYjY1YmU2ZjMxMDQzYzUzYSBhc3QtYnJhbmNoCiszMzkyMyBhYzBkYjAzNGRkMTRiZDdmMGQ0NTA0NzM1NjE0NjNjYjljMTJlZGMyIGxlZ2FjeS10cnVuaworMzM5MjQgODQ4MWM5YmFmNzg1ZDVkMmQ3MDIyOTVlZjFmM2NlMDdjOTIyYjhjMSByZWxlYXNlMjMtbWFpbnQKKzMzOTI1IDdhYjFhNDFmMTZkYWIxNTMwMDM2YzEyNjdhNjRlN2YxMGZjYzAyZTAgbGVnYWN5LXRydW5rCiszMzkyNiAyMWQzYjA2ZGY3OTNjYjFhYzY4NTkxYzZiNjVmYjZkYjA1NmE4ZGMyIHJlbGVhc2UyMy1tYWludAorMzM5MjcgODI4N2Y1MjJiZWExNzg0Y2RkNTMxYTZmM2YyNWIxZjViN2I2MTg2NSBsZWdhY3ktdHJ1bmsKKzMzOTI4IGRmOGNiZGU1YzU4ODI5OGI1ZmNlOWIwNTczZjA4MDllZDkzMmU0OWQgcmVsZWFzZTIzLW1haW50CiszMzkyOSAwNTZmMTZhN2FiYjAzNDk2OTk1NjcyMjIzYjZhZTM0YmE2N2NiMGM1IHJlbGVhc2UyMi1tYWludAorMzM5MzAgNDAwMGNjNmRhOTI1MjIwN2FiODlmZGI5Zjg1ODRmMmZjNWQzNTMwNyByZWxlYXNlMjMtbWFpbnQKKzMzOTMxIGE1ZjYwNmY5Y2EwNTcxYTI0ZWUzZjA4MWRkZWM5MDM2NGIyNWM5ZjEgbGVnYWN5LXRydW5rCiszMzkzMiBjMDZkZmZiNmE5ODIyOTE0MWYzNDIwZGU0MWQzMjBiZjQxZDQ1OGFiIGxlZ2FjeS10cnVuaworMzM5MzMgZTgxNzM1NDIzOTNmYzQ3MzVlMTYxZWZmMjdhMDk1OTRiYjdhNDFhZiByZWxlYXNlMjMtbWFpbnQKKzMzOTM0IDI0MzQxY2IyMWZkNWNiMThmM2YzZTdjZGU1YTNhZjAzZjAyMmU2ZTYgbGVnYWN5LXRydW5rCiszMzkzNSA4MDYxNzk0MDBmMzU0ZWRiYzFlYzMzM2Y5Y2ViNjhjOGM0MTQwOWRlIGxlZ2FjeS10cnVuaworMzM5MzYgYzMwZWQxM2QzNTgyMDlhM2I4NGIyMTA4MjJmN2E3MWZiYjRmYWEzNiBsZWdhY3ktdHJ1bmsKKzMzOTM3IGEwZjUzYTA2OTQ3MDM1M2FhNTgyNDFjY2U0OWQxMTBmYjRkMjY5ZmMgbGVnYWN5LXRydW5rCiszMzkzOCAxMDlkNjNmNzAzN2M5M2EzZmRkMTFhYmFiYjBkNzk5MmQ0MWM5YWViIHJlbGVhc2UyMy1tYWludAorMzM5MzkgNDk2OTY4ZjM2NDllOGMxMzg0NDhiZjEzMTE3ZGFhOTc1Mzk3ZGM3MSBsZWdhY3ktdHJ1bmsKKzMzOTQwIGRkNDUxYTYzZjg5ZTU5YTE2MTg3MzkwYmI3M2NhNGVkN2U1YTIyOWMgbGVnYWN5LXRydW5rCiszMzk0MSBiOTQwYWI5YTJhYmY0NGYzZTk5ODQ1NGNlMzc0ZmEwMjcyYzU1YjIzIHJlbGVhc2UyMy1icmFuY2gKKzMzOTQyIGRmYmQyODExMmUwOTdjZGE2NWJiMjIwMDcwY2UyNDZiMzBjMTg4MmYgbGVnYWN5LXRydW5rCiszMzk0MyBkOGI3Njg3ODA0YjIzN2Q4NjYzMGExNDdhOGJjYzNhZDNkMTdjZThmIHJlbGVhc2UyMy1icmFuY2gKKzMzOTQ0IGM0N2Y1YWM4YjA2ZGQzZGRlYTZkZTU3MzExMDgwNzViZDk3ZWZlNjIgbGVnYWN5LXRydW5rCiszMzk0NSAzZDRhNTUwM2U0NmQ5MTJjMzg3M2EwMjk5MTM2NzEyYmMwNWEzNjFkIGxlZ2FjeS10cnVuaworMzM5NDYgN2YzNDY1MmQ3MTYxMmFlY2VhZDgzNjVjMjg3MjY4ZjJmZWMyOWY5NSBsZWdhY3ktdHJ1bmsKKzMzOTQ3IGM0NTM1ODkzNWVkM2ZmZjhmYTA5ZTE3YWVhNzM0MzRiMTgyZTFjZWIgbGVnYWN5LXRydW5rCiszMzk0OCA0MjE0NzE0YWJhY2JmMjM5NGY2YmRmN2MxYWYyOGY3Y2M1OTAwNWUyIHJlbGVhc2UyMy1tYWludAorMzM5NDkgYTU3MGJiOWYxMzNmNzA5Mjg0ZmNmNWFjOWUzY2Q2ZTQ4MTAwNGY5OCBsZWdhY3ktdHJ1bmsKKzMzOTUwIGU4MzU3NWJiMjlkYTkwNjg1ZjA4OGMxYzY3MmNiN2ZjMmM2NjBmZTEgcmVsZWFzZTIzLW1haW50CiszMzk1MSBmMWVhMzExMTI3Y2YxNTk3OTBiOTg5YmUwNThlNzA2YTUxN2E4OWUwIGxlZ2FjeS10cnVuaworMzM5NTIgM2ZiMzc0N2NlMzA0YzE5MTczZTAwMTUwMjM2OWY0OTk1MmZkNmNiNSByZWxlYXNlMjMtbWFpbnQKKzMzOTUzIDdmNjYwZmEyODhhYWJmZTk5MzE0YTgwNzIyYWQ2YTY3Yjc5ZDZkZjggcmVsZWFzZTIzLW1haW50CiszMzk1NCA1M2EzMjJjNmRlNTIyYTkwOTA0OWM0NGIwMGIwMTJhYzA1MjNjMDcxIGxlZ2FjeS10cnVuaworMzM5NTUgOWUzZDUxYmVjNTNhMjdlOTZhZDlmYWJlZGRhYzgxODQ3OWRjZmE1ZiBsZWdhY3ktdHJ1bmsKKzMzOTU2IDQ5NzY1OTQ1MDUzNDhlYTQ5NjRiY2NjYzQ1MzY1OTkwOTNhYjkxM2MgcmVsZWFzZTIzLW1haW50CiszMzk1NyA5N2YzZDY2NTU4ZmI4ZWE3MTRhN2JjMTdhMjFkODc3ZmMzYjAzMmRmIHJlbGVhc2UyMy1tYWludAorMzM5NTggOTU2OTVjYzQ1Y2RkMmVhZDVkY2M2MjI1ODJiMDJlOWRlMjBkYTFiMyBsZWdhY3ktdHJ1bmsKKzMzOTU5IDk5NTFiNmU5YTNlYTU3YmU0YjgzZjUzM2NiOTgyZTE2YTdjZmIxZmIgbGVnYWN5LXRydW5rCiszMzk2MCBiZjJhYTdkZTQzN2QzNDZhZTk4NjA5YjcwMTYwNDkzN2FjM2QyMmYwIHJlbGVhc2UyMy1tYWludAorMzM5NjEgODMwYzBjZDhmZGIyMjAyMjFmZGVhMGQ5MmY0MjBjN2Y3MGM3MTk5MSBsZWdhY3ktdHJ1bmsKKzMzOTYyIDBkZmFmYWExMDQwMWMxNWM5NGIyNjU2M2ExYjcyZDcyNGIzMGEzYjEgcmVsZWFzZTIzLW1haW50CiszMzk2MyA2NjY1NGFjNjk2MjJmMWIxOThkYWFmNDJmYzdmNjgxNGI1MjNkMDQwIGxlZ2FjeS10cnVuaworMzM5NjQgM2E1MGY4MzY5YWQ1NjRlMzY4YzJlNzE4MmM4M2IxMjI1ZjQxMmM3NSByZWxlYXNlMjMtbWFpbnQKKzMzOTY1IDcxOGUxNDg4ODcxZDQwMzE1MWMwNTQwZDJiYzc5Y2U2ZDMxMWZjYTUgbGVnYWN5LXRydW5rCiszMzk2NiBmOTYyNGY5NDA2MWE3ZTUwZTZlMmNhN2FkNTM0ODhmMGJiYTA1ODgzIHJlbGVhc2UyMy1tYWludAorMzM5NjcgZGExYjE5MWIwYTZhMmQ5NTA5M2E0ZTIyZTI2MmEzNzAyOTAwOTBmMSBsZWdhY3ktdHJ1bmsKKzMzOTY4IGE1NWViNTRhNTZkMGJjNTdjZGZlM2Y2NzhiNzU1N2E5Nzg5YjcwMjQgcmVsZWFzZTIzLW1haW50CiszMzk2OSAzN2E0NTAyZjE2MTA3NGY2ZDZmNWViZTFmOGI5YmY0NWQ2YzRlN2QxIGxlZ2FjeS10cnVuaworMzM5NzAgOWRjNWU3MTU5NmY3ZmMxMzIwMjZlMGI5MWM5YWE4ZGYxNmVmMjMwNyByZWxlYXNlMjMtbWFpbnQKKzMzOTcxIGViYjgzZjI2NmZhNGYyZDQ4Yzc2MjJkYjNiMjdmNjlhODEwMzY1MDIgbGVnYWN5LXRydW5rCiszMzk3MiAyNzAwNTJmNmYwZTFlZTBmMGU3MWZkOWY2NGQ0YzEzMWQxMjk0NDcyIHJlbGVhc2UyMy1tYWludAorMzM5NzMgN2I1NzczNzdkNTQ2ZmU2NzczZTI0Zjk2MjRiYjc4MTBiNjI1MTUzYiBsZWdhY3ktdHJ1bmsKKzMzOTc0IDk0OGZkMzRlYjA1MDk2YzAzODIwMWYzZTQxN2IyNjhkYmE5NDBiZTQgcmVsZWFzZTIzLW1haW50CiszMzk3NSAxMTRkNjkzYTViODkzZWYzNTg5ZGIzYTQwNmZjNTkxMzI0OTA1MzAyIHJlbGVhc2UyMy1tYWludAorMzM5NzYgNTE3NDQyNzk0NThmYjAwNDlhNDUyZTlmNmIwNTFlNTdjMTRmNGUyZCBsZWdhY3ktdHJ1bmsKKzMzOTc3IDU3OTUxYmE1ZTliMTA3OTlkZDA0OTEzOGNhZDliYzJiMmUyMjI2MWQgbGVnYWN5LXRydW5rCiszMzk3NyAwYzEzYmE1MzU5MTgyZjJhNDY5YWIxZTAxMGZiOGY4NjZlZGJiYjhiIHJlbGVhc2UyMy1tYWludAorMzM5NzggNDM2ZDU3NzJiODdmZmY5ZTgyM2Q4ODAxMzE4ZWY0ODQ5MGVmODk4YiBsZWdhY3ktdHJ1bmsKKzMzOTc5IDBmMjZhZjdjM2I1MmIxZWM5NjFmOGJjY2ZmYjVlZmRiMzRkZDJmZWIgbGVnYWN5LXRydW5rCiszMzk3OSA1YzBhNzA0ZTFiZTRkN2VkZDIzZTNjMDQ3YzRhYWQxM2MwYzU3MDFmIHJlbGVhc2UyMy1tYWludAorMzM5ODAgYTQwNTFhZDc2NjZlNWQ1ZjNlZmM3OTYzZTc0MmU5ZjFhOGRmMDlmNSBsZWdhY3ktdHJ1bmsKKzMzOTgxIDg5Mzc1YTEzYTE4YzhhZTk3Y2QxODRkNGE4NGE3MzhlYWIzZTM0ODggcmVsZWFzZTIzLW1haW50CiszMzk4MiAyNDRiNTVjOTBlMGYzMDY2ZTJkMzM4OTMyYjIwMmFjZWI5ZmVhZDA0IGxlZ2FjeS10cnVuaworMzM5ODMgN2QyMzI5ODFkM2UzOGM0NmYwOTNiNzY4NWJmOTIzNWVkMWViYzQ0OSByZWxlYXNlMjMtbWFpbnQKKzMzOTg0IGZmODA1YTE0N2I2YTkxODk4OGYzNTQwNGU2MzkzMDg1MDkxNjU3MDggbGVnYWN5LXRydW5rCiszMzk4NSBiMTc3Yzk2ZWUzNTAzYmE4OWEyY2JhOGMzYTJmZmNhNzAyNmRlMjNlIHJlbGVhc2UyMy1tYWludAorMzM5ODYgNjZiYTBlMGVjMjAyNjk4ZTAzM2ZjY2RjMTcxOGVjYzE0Y2NhNjMwYSBsZWdhY3ktdHJ1bmsKKzMzOTg3IGE3NGI0NjNiZjc2ZGE3ZjMxYzhmYmZmOTU0N2MwMGUyMTE5NWM5NDkgbGVnYWN5LXRydW5rCiszMzk4OCA4NDk4OGU3YmM3YjdiYmE5NTRjMmVkN2ZmZjU4MDg1ODczMjhlMjhjIHJlbGVhc2UyMy1tYWludAorMzM5ODkgNzE3Y2MyYzlmZDYwZWM3OTAwOWY5ZTU3ZjJkMjM2NzRkNTllNzUxMSBsZWdhY3ktdHJ1bmsKKzMzOTg5IDVlZDQwZjJmNjVmYjVhZGVkODI2NzQ1MDUwMWI0ZmNjZGRiMDk5OTEgcmVsZWFzZTIzLW1haW50CiszMzk5MCA5YTBhYTFkYmYzNTE0NzBjMTkyZDQ1Y2E1ZDBlMzA5OTlkZGQwMjY5IGxlZ2FjeS10cnVuaworMzM5OTEgNjMxMDBjYzNmMTVhZjQwYWZhNzEyYTFkNDY0NzQ1M2IzY2Y1ZTVjZCByZWxlYXNlMjMtbWFpbnQKKzMzOTkyIGNjMmQ5ZWE0ZWJkNTBmYzY0OGZkNWFjNGU1Y2E2Y2Q5YTI3YTVkNDIgcmVsZWFzZTIzLW1haW50CiszMzk5MyBkZjAwOTNhNTk4NWMzY2IxOGUxYmZiOGYyNTQ0ZWI3ZDVlMzRmZjA4IHJlbGVhc2UyMy1tYWludAorMzM5OTQgMjI1MDJmNzk1YjQ5YzgzNzZlNjE3MTg4ODUyODQwYmFmY2UxODdlMyBsZWdhY3ktdHJ1bmsKKzMzOTk1IDRhNTkxMjJhNjY0NmExY2IwNjBjMjdkMmRiMjYwYzgyMGU1YzFhNWQgcmVsZWFzZTIzLW1haW50CiszMzk5NiAxZDZkNmZiN2YxMGI3N2JjZWIxYzI1YTJjNjgyNzk5NDc2MTg4ZTkzIGxlZ2FjeS10cnVuaworMzM5OTcgODA5MWJkOTJlZTAxNWJjNjBkYzlmZWIwNzBlNDc0ZDUwN2Q2MTdkNCByZWxlYXNlMjMtbWFpbnQKKzMzOTk4IDRiNGI1ODFiM2IyYzgzMTQ0ZGY3MmM4OTBjNzM4N2QxOTMyOTM5MDggbGVnYWN5LXRydW5rCiszMzk5OSAyNmQzZjViODdhZDNkZmFlNzg3ZGM4ODgyMGU1MGU2ZjNlNjVlYjNlIHJlbGVhc2UyMy1icmFuY2gKKzM0MDAwIDI5MDU2NDZhMmFmMzc1N2IwOTE2M2Y2YzgwMDE1ZTBjOGE3MTYxMmMgbGVnYWN5LXRydW5rCiszNDAwMSA3OWIxYTllYzUyMjMxMDEyZTJhNGY2NzNhZjc3M2Y4NjY5NTAwMmQ3IGxlZ2FjeS10cnVuaworMzQwMDIgNjQ2ZjBmMTFjNTE5YjU2YTMxMzc4ZTYzNmE1ZGFlZTEyZDM1MjZmMSBsZWdhY3ktdHJ1bmsKKzM0MDAzIDExNWZhYzlkOTA0NTZiOWI1ODU5NWY5ZGRlYTRkMmNkNzhmOTZhZjcgbGVnYWN5LXRydW5rCiszNDAwNCA1MmY0ZjJhOGNjZTc5ZGEzN2NkOGE4YzA4ZGY4MTQzM2QzMTJhOTU0IHJlbGVhc2UyMy1tYWludAorMzQwMDUgNTVhNGE0MTcyNzNlZDEyMDc3YzI0NjcwYWYyNzdiNDEzNDIzMjZiNyByZWxlYXNlMjMtbWFpbnQKKzM0MDA2IGRkZTU5NGY3MGQ2Y2U0YzFkYThkNzcyYTQ0NmJkODY1MjMwOThmYjAgbGVnYWN5LXRydW5rCiszNDAwNyBiZmM5NzRkZWY0NzQwMWMxMzE5NjE2Njg4YzNlZDFmMmM3ZDgzM2EzIGxlZ2FjeS10cnVuaworMzQwMDggNzAwYzBjYTQyOWVmY2Q0OTRlYTM1YmM2NTRmMWZiOTM4ZjhhZjQwOCBsZWdhY3ktdHJ1bmsKKzM0MDA5IDZkZDljN2M1YWExM2Q0M2ZiNGUwM2Q3MGRmMmMwNTg1ZGJkMmM3ZjAgcmVsZWFzZTIyLW1haW50CiszNDAxMCBkYTQzNGI1Mzc2NjQ5Mjg0YmZiMTMxMTk3ZjgzOGIxNTI5ODI4MzBiIHJlbGVhc2UyMi1tYWludAorMzQwMTEgNzdkYTlmODczYTRmZTQxNzE3ZGM2ODQ3NjdlODEwMzVkNGQwMGE4MCByZWxlYXNlMjItbWFpbnQKKzM0MDEyIGY0Mjk1NTU5ZWE4MzZhYjU3MWIzZjRlZDhlYzQzNzgwODQ2ZmUwZGQgcmVsZWFzZTIzLW1haW50CiszNDAxMyBjYjI4MTUzODM3M2NhZDE2MjE2YTA1MzQwNjIyZTAxNmI1YzM0OTQ4IHJlbGVhc2UyMy1tYWludAorMzQwMTQgMjRjNjJmNTNhMWM5MjkxNGFiMDQ4MGViNzBmOGRmN2E4ZmFlNGM1MSByZWxlYXNlMjMtbWFpbnQKKzM0MDE1IDQxZmYyYzEzZWE0YTk4YTc5ZTc4OTE1ZmI0NjIxMDVlODI5YzhhOTIgbGVnYWN5LXRydW5rCiszNDAxNiAxNzkzYjY1YTYyMzBmZTQ2YWJiMzNjYjAxN2I5MzY0MTU5MmM2NWM4IHJlbGVhc2UyMy1tYWludAorMzQwMTcgYzE2YzU1Mzg2MGMyZGVmYjQ4NzM5MWVhZTVkNTg2NmZhMzNhYmVkMiBsZWdhY3ktdHJ1bmsKKzM0MDE4IGZlZDY1MDExODhkYTQyN2RhNmVmZmYyNmM0OWVjYWQ5ODVmYTIzYTQgcmVsZWFzZTIzLW1haW50CiszNDAxOSA3NGJjMzQ5M2NlMDM1MmJmYjc4ZDZiMDMxYTMxODBjY2QzOGQ4OTYzIGxlZ2FjeS10cnVuaworMzQwMjAgZjAwM2U0OGY1NjJkZDQ1YWNjYjRkNjk0ZTE4YmJhYjdhZTMyZjRhNSBsZWdhY3ktdHJ1bmsKKzM0MDIxIDdlM2ExZDNjOTBmNTMwYWUwMzQzZTFmOWU1YTc0ODQzYmZjNjQ5ZDggbGVnYWN5LXRydW5rCiszNDAyMiA2NzkwY2Y3ODVmOGM1YzNlYWIxMzRjMGY1ODE0MTE5ZjFlMjk3OGU4IHJlbGVhc2UyMy1tYWludAorMzQwMjMgMzNkZDEyYjJlYmU2ZDY2NzA2MjAwMDljYWFmNmRmMThhZGVmYjljOCBsZWdhY3ktdHJ1bmsKKzM0MDI0IDEzYTkxNGUwYzVjMTQ0YzY3OTUzZTZiN2E5YmZiY2U2OGFhMWQ2ZTEgcmVsZWFzZTIzLW1haW50CiszNDAyNSAxOTYxMWQxMDFkMjMxMjlhMWZiMTk2OGJmZTNjYWQ1NjFhMzQ4ZWFjIGxlZ2FjeS10cnVuaworMzQwMjYgYzI1MDdmZTJlNjllMTE4ODAyNmQ3OTA0NzYwODRiZjE3YTFhMjRmNyByZWxlYXNlMjMtbWFpbnQKKzM0MDI3IDc3MGZlODNiZjg5ZjY1NmQ5ZjZiOTliOTdjZTFmNmIwZmVmNTc3NjggbGVnYWN5LXRydW5rCiszNDAyOCAxNmM1OTJkMzE2YzJhOTRkMGNmMTAyMmJjOGI1NWUwOTE3YWEyNTk0IHJlbGVhc2UyMy1tYWludAorMzQwMjkgNTIxZDAyNmE4MDQ4YzkzZWZkM2Y0NGQ3ODc5YmJlNWI5YzAzOGU2MCBsZWdhY3ktdHJ1bmsKKzM0MDMwIDIxNGRmNjJiY2YxM2E4ZjlmMDM0Mzk3MzIwYWNlMTgzYjIxYzA5NDQgcmVsZWFzZTIzLW1haW50CiszNDAzMSA5NjNjNjgwZWQ5YjIwYjYyZmRjY2M1OGNmYzg2NjI0NDhlNWRlNTg0IGxlZ2FjeS10cnVuaworMzQwMzIgMGJlYTlkMzg5MjlkYzM5NDQ4MmYzZjAzODE5Y2Y4YWZmYzdmZThhYiBsZWdhY3ktdHJ1bmsKKzM0MDMzIDA2MDc1ZjFiZDk0NWI2NTM2MDUyMGM1YWQ2OTZkMWFlZjNmOTM5N2MgbGVnYWN5LXRydW5rCiszNDAzNCBkNWE2YjYzNjdiYjFjMWY2NDk0ZjVkY2RlZGUyNTU1ZTc4Mzg1YzEwIGxlZ2FjeS10cnVuaworMzQwMzUgYTY0MGJmZWViOWI1NjM1Mjk3YmY0Njg5NjNiNjFiNGVlMDUyMjA3ZiBsZWdhY3ktdHJ1bmsKKzM0MDM2IDc4YmFiOGZjOGVkNWNmZjIwNmNlYmIzZTcxMzdiYjI0OGI2MzdjMmMgbGVnYWN5LXRydW5rCiszNDAzNyAyYTgyOTE0YjA4YzVlMGUyNmQwNzRlMTJlMjQ1MDQxNjZiZDg2OWI0IGxlZ2FjeS10cnVuaworMzQwMzggN2RjYzQ1NGE3MGMzYjA3N2U1M2IzMjViMWQ3ZWNiNDUwYjE0NzBhNCBsZWdhY3ktdHJ1bmsKKzM0MDM5IDJlYzkyZmViY2QxYThmNmQ4NDM4MTQ4ZDI0ZWExMjI0ZWExZTJhYWEgbGVnYWN5LXRydW5rCiszNDA0MCAxNmNlN2U5NDdhMzQ0MmIxNTJkMmRiMGNkNmEwYmYyMTYyNDAzMGRhIGxlZ2FjeS10cnVuaworMzQwNDEgNmI4NDgwMmM5NTI0MjRjZWIwNGZhM2U3OWUwZjNkMTc1YzgyZmMxZiBsZWdhY3ktdHJ1bmsKKzM0MDQyIGI1MzMyMjRmMTM3M2Y3MzU3NzA4Y2I5NWE3OGZlM2FiZmE2ZTdkZjIgcmVsZWFzZTIzLW1haW50CiszNDA0MyAzYWZiYzMzOTc1NmE2YjdiZTY3ZjlkZDdmNTY3MWJhOWQ4OWFlNDNhIGxlZ2FjeS10cnVuaworMzQwNDQgMzg3YTllMTg0MDc0YWFmOGI1ZjExZGVlMGM1MzVhM2YyODEyMDAxOCBsZWdhY3ktdHJ1bmsKKzM0MDQ1IGM0Mjk0NGVhOTc0M2U2N2JmZjRhMjMwYmJkODY5NmMwYTJhNWYzNzEgbGVnYWN5LXRydW5rCiszNDA0NiA1NjIwODlhODY3OGYyODAyNjMwOWFmMzQzZGFmMzMwMTBiNmE0OTdlIGxlZ2FjeS10cnVuaworMzQwNDcgMDVhODUwOWNmYjNjYjE5NWE4MDMyZjg3MGRkMWQ1NWI3OWFhZjA3OCByZWxlYXNlMjMtbWFpbnQKKzM0MDQ4IDYzZGY3NDMwNWQ3YmY0YjkzMDZiM2YxYTY3YjQyMDVmZTUzY2M3NjkgcmVsZWFzZTIzLW1haW50CiszNDA0OSBhMTFlMWNiMzA2NDQ1NjgzY2Q1MjZhM2YwYWZlNmZlODM4MmNhMmEwIGxlZ2FjeS10cnVuaworMzQwNTAgOGVkMGNlNjJiODJmMTk1ZDEzOTkxOGNmYWNlNDU2MDViZTFlNjAwZCBsZWdhY3ktdHJ1bmsKKzM0MDUxIGQ1ZGFiZDE1MTc1M2E1NDAwMGIxNmVhZDQzNmQyYjdhMjY5ZGQyN2QgcmVsZWFzZTIzLW1haW50CiszNDA1MiAyMDVjYzkxOGYxYWNhOGVmYjU3ZTdiYTljMmJhZTRiODYwYjE1N2Y2IHJlbGVhc2UyMi1tYWludAorMzQwNTMgZDU5ZWNhMmVmYTZhMGQ0NGVkN2E3YzQ2NTlmZGM0NDQyMWJjYmQ4ZCBsZWdhY3ktdHJ1bmsKKzM0MDU0IDAwNDUzYTA1MDhkZmU3NjdiNWY1NTY5YjU2YWMwNDlkMGM0ODZjMWYgbGVnYWN5LXRydW5rCiszNDA1NSBhYWY2YjZhODUxMGJlYTBiZTc4Nzg0ZGRmZTI3OWJiNmUyYzE3ZWFhIGxlZ2FjeS10cnVuaworMzQwNTYgZjZmYzZkMGNmMWU1YWU3M2I4NjQ1OTFiMzlhNGI0MjQwNjgyYjQ0MiBsZWdhY3ktdHJ1bmsKKzM0MDU3IDgwNGQxY2QxYjA2ZGViNDRjNGE0OWIxYTk0NThjNThkZTUzMmFlZDggcmVsZWFzZTIzLW1haW50CiszNDA1OCBkNjE1MzYwMzQ3MmUzYzJkNTJjMThjZDAyYTA5OGNiODU4ZDQ4N2VkIGxlZ2FjeS10cnVuaworMzQwNTkgZjg2ZDg2MzY4N2M2MDYzNTE0MjY2NDAyN2E4YTNjZTE3YzhiNTZiNCByZWxlYXNlMjMtbWFpbnQKKzM0MDYwIDA4OTFkMjJhZGY0ZjRiOGM1MDk3Y2NkZTA1ZjQwOGZjYmNjNDk1N2QgbGVnYWN5LXRydW5rCiszNDA2MSAxZGUxZGEzZWUzZTg3ZGQyYmJlMDU2MjFjZjI0YzA2MjliZWVhNDUyIHJlbGVhc2UyMy1tYWludAorMzQwNjIgOGI5YThjNGRlMjhlNmI1Yjc0OTgxM2JiZTI2NjFiNTNmMzUzMThkYyBsZWdhY3ktdHJ1bmsKKzM0MDYzIDA2ZWFlZjdkMDJmMjFlMzQ0MWU4ZjI0MDEyM2Q4NjlkZGE5MWVhZTQgcmVsZWFzZTIzLW1haW50CiszNDA2NCBlNWJkNTBjN2UxOTMzNmI0NGEzMDMzNmQ0NWNjNjMyNDllMTAzZDAxIGxlZ2FjeS10cnVuaworMzQwNjUgNzUwNDgxMmZkYjdlYjFjOWUyMjk0YmZlMWRlOGI3MTU4NmRiMDEzNiBsZWdhY3ktdHJ1bmsKKzM0MDY2IGYxNGUyNTEzNjliMmQ1Yzg4Y2U3ZDFlNjNkODIyYzEzZmE2ODM1ZTkgcmVsZWFzZTIzLW1haW50CiszNDA2NyA4NWU2NDI1NDNkZGFhNmMyOTk3YjQxNDYxYjNiYTBhNWYwMzg3MGZkIGxlZ2FjeS10cnVuaworMzQwNjggNDQ1NDczNmM2YTgyZWE2M2I0YzE5YmI0YTIyNTE4ZDk1MDFlYjY4YyByZWxlYXNlMjMtbWFpbnQKKzM0MDY5IGJlOTU4MjczNGI1NmFlMWYxYTYxMzQzZTZiYmUxYjc4MzMwY2IyYjggbGVnYWN5LXRydW5rCiszNDA3MCAzOGU4NzUzNTM0Yjc5NzQwMDAzNjhhOTBmYzRhMTFjNWUyZDczNmY4IGxlZ2FjeS10cnVuaworMzQwNzEgMjFiMmEyMTU5MDQ2ZGJjZmZlNWUyMmNmMDQ2ZDI1YTEzMTQwMzJjNSByZWxlYXNlMjMtbWFpbnQKKzM0MDcyIDhkYzk0YmQ5YjgzYWUwNjQ1ZGNhZjRkNzJhM2I3YTU3YTRkY2EzY2UgcmVsZWFzZTIzLW1haW50CiszNDA3MyA4MGE0YjhmNmFlMGU1MmM0NjEyMDk5ZDVjZjE4YWIzZWFlZjU1YjYwIGxlZ2FjeS10cnVuaworMzQwNzQgNDZiZGI2NmFkY2RiNzYyMDI5ZGJjNjc1MTI5YjUxNmVjYWFlMjc0NiBsZWdhY3ktdHJ1bmsKKzM0MDc1IDA1ZThiNTAzY2Q0MTRlMmIzNmE3ZjE0MDE5ZjNkOTFjNjg3NjRmYmMgbGVnYWN5LXRydW5rCiszNDA3NiA0YWU4YjY1Y2FiYTg4ODllZDY5YTFhMWVjZGFkMjIyNTA3NmFhMzk2IHJlbGVhc2UyMy1tYWludAorMzQwNzcgYzNiMmNkNmVmMjdmODhkOTlkMWJmZTBhMWNhNzFlODQ2MDQ5ODFhNyByZWxlYXNlMjMtbWFpbnQKKzM0MDc4IGU0Y2MyMzJlZDU4MzBkYjI1ZTJiYzlmZDAxZTgzNTljZWNlZTIzMGEgbGVnYWN5LXRydW5rCiszNDA3OSAzYjc5M2NmNzQ4YzU2OTA1NzhiZTI5OGRjOTA1MjdjMmVlZDEzNjU3IHJlbGVhc2UyMy1tYWludAorMzQwODAgZGM1MWFiYzNmMTc0NmQ1MThiOTAxZTU0NzRlYmVmYmZiODcxMGY3NyByZWxlYXNlMjMtbWFpbnQKKzM0MDgxIGRiMzFkMjViMTM3YTQzMzY4NWQ2MmRkYmQ1ZGY5Y2Q2NzFhYThhZTQgcmVsZWFzZTIzLW1haW50CiszNDA4MiBjZjdmYWQ5ZDZmY2MzNGE4ODc1ZGJiMzdhYTE5ZWMzOTVmZGU4NWQ1IGxlZ2FjeS10cnVuaworMzQwODIgZDA1YWYxNTYyYzY0ZjE5ODE2YjI2ZDk1OGRiOWY0YzhmMGQ0MjIwNyByZWxlYXNlMjMtbWFpbnQKKzM0MDgzIDRhYTg0YThiMWZlNDk3ZDcyNDU2Y2M2NDlmZDY4MTM0NmU2NDZhYTYgbGVnYWN5LXRydW5rCiszNDA4NCAzZWRjY2UwZWZjNTRiOGMyNTQ2YTdiNGMxYzIwZjU1NzBhZWM1Y2U5IHJlbGVhc2UyMy1tYWludAorMzQwODUgNTE1NWIzODUwMmQ0ODMxYTNlZDUxNmYxMzFmZGM4MTVjNTQwNTNkZCBsZWdhY3ktdHJ1bmsKKzM0MDg2IDM1ZjkyNDk2NTBlNmI1YzlkNzliOGYzOWQ4MmJhZjFlNmMxYTY1Y2YgcmVsZWFzZTIzLW1haW50CiszNDA4NyAwYzM2OGVjMGNjY2I0NGRlNjVjZDdjYzhjYzIyNzI5ZDE2YWE5MjZkIHJlbGVhc2UyMy1tYWludAorMzQwODggYWNjYzI1MWNkYzRhOWVjMGFjNmYyODA1MjYxYTE2NTNmZDAzZDQxOSBsZWdhY3ktdHJ1bmsKKzM0MDg5IGE1MmEwNzRlOGFlNWRiMTU0ZjllYzAwZGE1MzkxY2RiMGJiZTdkNzQgbGVnYWN5LXRydW5rCiszNDA5MCAxOTg3Yjg1NWNkM2EwYzNlMjE1ODJmZTc0ZDE2ZjEzOGZiZDQ1ZDNiIHJlbGVhc2UyMy1tYWludAorMzQwOTEgZmUxY2QzNzk1YTdhOTNhZTZlYWQ3ZDAyNjJjNGQxNWU0YTAxZTQ2NiBsZWdhY3ktdHJ1bmsKKzM0MDkyIDk5M2UzY2EzNDY1NjBjMWUxYmUyODMyYzI5OWI1ZWE5MzAxZDg4YjQgcmVsZWFzZTIzLW1haW50CiszNDA5MyBmMTVhMTFjZjg1MzE2M2NlZWExY2I1NGYyMGFhNzQwMmFmYzg5NGQ5IGxlZ2FjeS10cnVuaworMzQwOTQgMjgwYjBhMWUzMWUzNjQxYzQ5ZjRmOTc0MmEzZjQxMTI4MWFlZDc4NSByZWxlYXNlMjMtbWFpbnQKKzM0MDk1IDFlODZmMmY3MTJmMjE5M2Y4NjEyMGQ2ZjAyMDhlNjNjYTAzM2ZiOTMgbGVnYWN5LXRydW5rCiszNDA5NiA1OGZmYjZiOWY2YzU3MmU1MTdiOTc0NDRhZDhlYzVmOTI2NzI4OGY2IGxlZ2FjeS10cnVuaworMzQwOTcgYzk3MmQ5ZTQzMTY4OGU0NDYzMTU2Y2ZjYzQ0ODhjODhiMDI4NjkyMSByZWxlYXNlMjMtbWFpbnQKKzM0MDk4IDZhOTEwMTQ3MWFkMzcxYjgxMWU3YzczYTNjZGEwNjU4ZmFkNWI2ODUgbGVnYWN5LXRydW5rCiszNDA5OSBhYTc4N2UzNjEyYmJjNmZhNWY3Mjk0YmYwYTI4ODViNmZkNDY3NTI1IHJlbGVhc2UyMy1tYWludAorMzQxMDAgMDAzOTkyOGEwZjg0MzliYjNlYjBkMTQwMzdiNjQ5YjYxODU3ODJhMiBsZWdhY3ktdHJ1bmsKKzM0MTAxIGUzOGVjNGNiODdlOWMxNjQyN2JmNTNlMzM4ODJhODM3ZTdlZTVjOGUgcmVsZWFzZTIzLW1haW50CiszNDEwMiBkMDM5YjFiYjFlYTk3ZjUyMTFkOTYwZmQyNjdhNGJkNzAzZjQyYWQ1IGxlZ2FjeS10cnVuaworMzQxMDMgNjIxNTNlODI1NjRiYTMxM2Q3YzY5MzQzYmU1NzVhZDQzYTQwMWI0NCByZWxlYXNlMjMtbWFpbnQKKzM0MTA0IGU0NGEzNTljODk4ZTBjMTUwMzA3OTE2YTRiOGI3Yjk5NGNlOTA3ODEgbGVnYWN5LXRydW5rCiszNDEwNSAxMGJhNjU2Nzg1MmZkMDY4ZmY3MDBmYzVlNDMwMGFhZTc5MTJkMjFmIGxlZ2FjeS10cnVuaworMzQxMDYgOTRmMjUyODMzZTEzMTRmMGU5NjUyNTRjMTIxZDY1ZTEwMWZmNTM2MyByZWxlYXNlMjMtbWFpbnQKKzM0MTA3IGZkMTYwMTg0MDdlN2U1MzQ0NDc5ZDg3MTlkZDY2M2JlNGZkZmI2ZDkgbGVnYWN5LXRydW5rCiszNDEwOCA5Njc1Njk0OGQxYzkyNDk0YjkwMjY4NDY1YzQxMjQ2MDdhYjgxYTY2IHJlbGVhc2UyMy1tYWludAorMzQxMDkgMTFjMzIwOTVjMzA1NjFjMTA0MWQzMjUxMWFhNTNmNDlmYTk3YTU1MSBsZWdhY3ktdHJ1bmsKKzM0MTEwIGE0MzBiZTY4M2E3YWQzM2I1YjVkMjA5OTdjMmE4YmNjZDdjMmE0ZDEgbGVnYWN5LXRydW5rCiszNDExMSBhNjg3N2ZmZDk1ODJkOGFlMDMzNDQ3NzVmMTZiZTQzMDMzMGYyN2NlIGxlZ2FjeS10cnVuaworMzQxMTIgNTRhYjE5NTVkMjQyZTM0OWQ3ODIxMzc2M2RiN2JjYzY2NmI3MmI3ZiBsZWdhY3ktdHJ1bmsKKzM0MTEzIGRkOThmMjljZmM5ODYzMzBkMjliYTI3N2NmMGZmZTc4NjM3OTNmY2EgbGVnYWN5LXRydW5rCiszNDExNCA3NzczZWE3YjFjNjc0OTFkODUzZWRhNDNiZDM5YzEyN2RmOTRlYTA0IHJlbGVhc2UyMy1tYWludAorMzQxMTUgYjg3MzdhMzEwNTBjYTNjYzVkMGJjMzczNGI2NDVjMGFhNTQ2NjA5NiBsZWdhY3ktdHJ1bmsKKzM0MTE2IDYyYWUyMTkxNDRjNGY2MmNlNWFmYmVjMDExZDZmOWU1M2VjMTQ2NWIgbGVnYWN5LXRydW5rCiszNDExNyAwNDUxNzRmNmE3OWRiMzNiYjEwNzQzNGE2MTVmM2E3MmQ3NmE1NzFlIGxlZ2FjeS10cnVuaworMzQxMTggNDFiYmJiNDg5NzY0YzhjNmY3ZGIzOWUyMjgxN2NlMWNmMmZiNjZlMCBsZWdhY3ktdHJ1bmsKKzM0MTE5IDM0YmQ1YzE5OGNhZjg3MjQ5MDY4ZGYyOTI5MmQ0ODQ4MGU5NzE1NDAgbGVnYWN5LXRydW5rCiszNDEyMCA2OGUxZjg2MDU2YmMzNDliN2VjYzNiODI1NDJlZDg3Y2JhZDJmZDUxIGxlZ2FjeS10cnVuaworMzQxMjEgNTNmMWMzMmVlNjlkNzVjMjZmNTRiMzFlYTFlNThjMzZjZjgzNzcxYiBsZWdhY3ktdHJ1bmsKKzM0MTIyIGUxN2M0NGM3OWIwM2U3MTk4NzUxMGMxYTUyMTQ3ZGFlN2QyM2JmODggcmVsZWFzZTIzLW1haW50CiszNDEyMyAzN2YwZTBiMTQwMDM4NTViOTBhMGFiYmU3ZmZhMjI3N2MxY2Y3Njg0IGxlZ2FjeS10cnVuaworMzQxMjQgMjBkOTc4ODVlNWM4OTM0ZDQ5ZDA0Y2UzZDNmMzhhMjNhZGMyMGMwMiBsZWdhY3ktdHJ1bmsKKzM0MTI1IDIzOTIxYmM4MTI0YmJjNWMwNjc5MjRlMDZjMjAyYWRjMWU2MWM4ZjMgcmVsZWFzZTIzLW1haW50CiszNDEyNiBjNjhlYjRkNGI3ODc5ZTIwNDgyZDMzMWFjY2QyYmQ0NzQwODI4MzNlIGxlZ2FjeS10cnVuaworMzQxMjcgZjQ0ZDhhZGRkM2U4NmExZWUwNzJkY2Q5ZGFlMTgxZGIzNjk1YzgzMiBsZWdhY3ktdHJ1bmsKKzM0MTI4IDEzZWM4YzQ3OWZmMTAzYjQ5YjM3MDIxMTM0MzEzMWE4OWI4ZDMxMDMgbGVnYWN5LXRydW5rCiszNDEyOSAzOWJlOTljNjc3ZDVlMjc4NTI2MTUxMzlmYTIxNDE5ZDcxNzI5NTY5IHJlbGVhc2UyMy1tYWludAorMzQxMzAgNGQyMDRmYzNhZDMyZjBhMzg0ZGQ2YzJiYzlmZDEwZTYzMTQ0ODIzYiBsZWdhY3ktdHJ1bmsKKzM0MTMxIDc0MzNlN2M5ZTJjYTQ1MzM1YzFmYjY1NjQyMWIxZjlkNDk2ZjlhNDcgbGVnYWN5LXRydW5rCiszNDEzMiA0NjI3YzE2ODQ5YWVkYzliNTViZTA1ZmVkYmY3MDFjZTM0ZjAzZDJiIGFzdC1icmFuY2gKKzM0MTMzIGEyNzRiOTAzNWQxZWFlMjM5MGE4ZDcyZjliNTlkNDA4OTEzNDdlOWYgYXN0LWJyYW5jaAorMzQxMzQgMWVkYjU0NzM4MDllNmI4ZjRlNjIxMDVkY2ZjNWU2NmVjNTkxZjQ5NyBhc3QtYnJhbmNoCiszNDEzNSA5NWFiNTVkMTQyNTZmNjgwMjkyMDYwYTc1OGQ5MmIwOTMwNTNiZTdlIGxlZ2FjeS10cnVuaworMzQxMzYgZDg2NGYzMTY4Y2FjZmNiNWQwYmE2NmFiZjZjNTc3NWZhNDg5ZTcxNSBsZWdhY3ktdHJ1bmsKKzM0MTM3IDJmNTgyMmQwZjhlMTVjMGJiYTVkNWM5MDNmMGU3MGM3NjEzN2Q0ZjkgcmVsZWFzZTIzLWJyYW5jaAorMzQxMzggNzk5MTljNTUwZGZlZGRhZTc4NTA5MTdiZGI1MTkzODhhYjM0Y2M5OCByZWxlYXNlMjMtbWFpbnQKKzM0MTM5IDBhMTUwZWE4Y2JlYTI4ZjRjYjgwYzM1ZTdmNGIyNTNjOGEwMmFmZDMgbGVnYWN5LXRydW5rCiszNDE0MCBjMmMxMGYxZWI4ZTJiNzRiYmM4NGNhNDc2ZDEwMGUxOTM0YjdmZjI3IGxlZ2FjeS10cnVuaworMzQxNDEgYzljYzM1MjQ5MzIyZDc4ZjExMzM1NmIyN2Q0NDFmNThlOGU4ZGM5NSBsZWdhY3ktdHJ1bmsKKzM0MTQyIGE4ZjA0Y2JmNjU5Y2IwMjZjYzJiODFjM2U0Y2QwYjRhMmFjNGFmMTEgbGVnYWN5LXRydW5rCiszNDE0MyBjZDBjM2Y5MTZiMzRjY2YyNjllNTZkMmU4YzQ2ZWQyNDEzNzQ4YzYxIGxlZ2FjeS10cnVuaworMzQxNDQgZTgxNDdmODQxYTRhYjJkYTNlN2RiMWM2ZTA5OGIxNjcxZjZlZTA2MiBsZWdhY3ktdHJ1bmsKKzM0MTQ1IGM5ZjllYjEzZWFjOTMwNWViYTEzNGQ4MTFkODQ1NjBlZGI2OGYyZjEgcmVsZWFzZTIzLW1haW50CiszNDE0NiAxNzI1NDcwZDBkNDNjYWIyYzhkMTcwMGZhMGNmOTg5ZmExN2EwOWE1IGxlZ2FjeS10cnVuaworMzQxNDcgZWQ4YjNjMDI4MTc0YjA1MjZiYWEzYmZkYmEzZjUyY2I3MTNlOGRhMiByZWxlYXNlMjMtbWFpbnQKKzM0MTQ4IDZiZmI4MmJmYmI1NmNkZGZjMzFhMjIxZDMxOGYxMTRlMTBiYzkzNjQgcmVsZWFzZTIzLW1haW50CiszNDE0OSA0MWMyZTE3MjNjZGRkN2FjMTdjN2RkYWQwNmYwZjQzNjg4ODYyZjU0IGxlZ2FjeS10cnVuaworMzQxNTAgZWY0YTcxZjVhZjIyMzhlYmI2YWI0OGNjMDlkOWE1ZDJmYjFjODMwNyByZWxlYXNlMjMtbWFpbnQKKzM0MTUxIDMwZTQ5NWVmZTkwYTM2NWQyMDUzMjRhZmI2OWI0NWE1MTVkMmZiOTUgbGVnYWN5LXRydW5rCiszNDE1MiA3ODRlMzhhYmVkODIwMzE2ZWIwODYzMTZmNjNmMGQyZjcwMjUxOGY2IHJlbGVhc2UyMy1tYWludAorMzQxNTMgNzZlOTk4YWVlNjQ0NjU4NWYxOGEzNGY0YjcwZDgxNzg5NWRhYTBmYyBsZWdhY3ktdHJ1bmsKKzM0MTU0IDU5YjBhNDhhNTY0NDUwN2IzYzY5M2E4YmY3NGQ5NjAyOTk2YjY5NTggcmVsZWFzZTIzLW1haW50CiszNDE1NSBmODlhYjc5ODUzYTcwYzM5ZTE5ZjUzZjNlOWY1ODgzOTRlMjc5M2M0IGxlZ2FjeS10cnVuaworMzQxNTYgMGIwYWQ3ZDFkZGQ2YTk4NTMwZjRjOGE0YzhjMWRlNDdmM2M1ODc1YiBsZWdhY3ktdHJ1bmsKKzM0MTU3IDcyYmZjNzg2YTRmODkyZDUxM2YzMDVmMDdmMDE2MThhNDFjNGNiYzkgcmVsZWFzZTIzLW1haW50CiszNDE1OCBhOGExYmVmNDA3ZWIyNmNjOGJlNGIzMTRjOWY1YzVhNmI3NWI0MzllIHJlbGVhc2UyMy1tYWludAorMzQxNTkgNjYyMjMzZTY2ZDI4MmVjYTA3Zjc2YmYxNjJlYmE5NzFiNjQzMTA0OCByZWxlYXNlMjItbWFpbnQKKzM0MTYwIDdjYjY3NDViZTUyNWMwYTg0ZWMwYjE5YjE0NDQ2YTAwMzQyNDNiYzMgbGVnYWN5LXRydW5rCiszNDE2MSAyYTQ5NzA5YzBkNTYzZTRiZGMyNDY1NTA4MWExNDE3ZTc2MjI4NjUyIGxlZ2FjeS10cnVuaworMzQxNjIgODM0YmI5YTE1NDE5YjBmNjFkOTFiN2Y3M2U5ZGYxYjMzZmUzZTRjMCByZWxlYXNlMjMtbWFpbnQKKzM0MTYzIGIzOWNiOTIxMmY1Yzg4Y2MyM2U4NDlhMmU3NWI5MTAwMzRiMTY5M2EgbGVnYWN5LXRydW5rCiszNDE2NCBiYTFlMDNjZDJmNDBmYTEyYzMxOWVmYWM3NDVkNDhmODI5YzNkY2ViIHJlbGVhc2UyMy1tYWludAorMzQxNjUgYTg1YTcwMTJkZGRhNzNjZWY1ZDBmZDZmZjI1NWZjYTM3NzE1MzUwYSByZWxlYXNlMjMtbWFpbnQKKzM0MTY2IDBjYWQ5MDk0ZTIzZTljYjcxMjc5MGVhZTkyNjJmZTU4N2M1M2UzMjIgcmVsZWFzZTIzLW1haW50CiszNDE2NyBiYmE3ZTFlMGYxYzc1M2E4MjIwMGRkMDNlMGQ0ZmIxMmRmMjFmN2UxIGxlZ2FjeS10cnVuaworMzQxNjggOTFmZjcyNzAzZWQzNWFhZGY2NWQ0ZGFhOWY0MTc3MGM3Y2IwMGFhYSByZWxlYXNlMjMtbWFpbnQKKzM0MTY5IDkyMzNhZDBlYWE5ODQ2YWFiN2U1ODg2NTVlYzJiMGZlNzA3YWJlNGMgbGVnYWN5LXRydW5rCiszNDE3MCA2MWRiYTBhYTllMzc0ZGYyMjk1MGZhZDQ5MzEyN2JlYTEzODhlOGJlIGxlZ2FjeS10cnVuaworMzQxNzEgMWQ2MzEwNmU3ZGZhNDg4M2MxYzBhNGY4MDFhMzUzYjZmMzE5NjI3NyByZWxlYXNlMjMtbWFpbnQKKzM0MTcyIGQ1YzQ1YjhkYWE1MmJjMThmZDA5NWQ3MmRiN2ViOTU3M2FkYTViNDcgbGVnYWN5LXRydW5rCiszNDE3MyA4ZDIxZmIyZTI2YjA2OTM5NzM0OWI4MzA5MTQyODE1ZmE5NjJiNjI4IHJlbGVhc2UyMy1tYWludAorMzQxNzQgNjViYWM1OWEzOTI4MDY4ZTdmOTM4NWI3ZGQyOWM5YzNkMzZjMzk3MCBsZWdhY3ktdHJ1bmsKKzM0MTc1IGNiNzIzNjk5MjBhY2FjMTZiMTQzMWFkNDI1OWMzMDk4MTAwZmNjZTQgcmVsZWFzZTIzLW1haW50CiszNDE3NiBkN2YxM2E0OWU1ZWY2OGEyYjU0OGFkMzYwOWRlODVkMGJjOTJhN2NjIGxlZ2FjeS10cnVuaworMzQxNzcgNWY5MmQ2NjA3YjlmMGJhMjQ1Njk4ZDU2ZDYyNWVhYjYxNjY0OGZlMiByZWxlYXNlMjMtbWFpbnQKKzM0MTc4IDFhODE3Njk0ZWNiZDdlNDlmYzkxNWE1ZWJhOWRkNTZjMTlmOWJiNGQgbGVnYWN5LXRydW5rCiszNDE3OSA1MThjY2MwNjRjYjlmMzJiNmE2MWY0OWM2MmQwMGViMjNjNjJhNzA0IGxlZ2FjeS10cnVuaworMzQxODAgYTM3YjIzNzE0ZDNkZGRiNTk2ZTFlZmMxNWUxOTM1NDRkZmFlMzJlNyByZWxlYXNlMjMtbWFpbnQKKzM0MTgxIDU1ODU3YWViYzI0ZjIzZjJmMmUwZTg4NTJkNDRlZDIwNDlmNmQ3MzAgbGVnYWN5LXRydW5rCiszNDE4MiAxZTFlNjg1ZDY5ZWY3OGJkYjk5MTc2NzA5ODFlYTdmZmEyZmRkNGJjIGxlZ2FjeS10cnVuaworMzQxODMgOTRkODI5MzY3NDczNzAzYjE4ZDlkYWE1NGIwM2QwM2VhMDUzMWZmNSBsZWdhY3ktdHJ1bmsKKzM0MTg0IDA4NDQwOGZlZTk2MTRlNTQ4M2VmZWYwZTZmNTkyZTVjMGEwMzc2ODIgbGVnYWN5LXRydW5rCiszNDE4NSA0MjViZjA3ZWE3MGI4YzJkMWU2YTFiYTkxZmM5YmIzYjI1MTJlMGY5IGxlZ2FjeS10cnVuaworMzQxODYgOGRkMDdmN2QwOTNiN2EwMDUyZmE3M2RkNjI1MTNiNzBjMTkzODUwYyBsZWdhY3ktdHJ1bmsKKzM0MTg4IDE4NWM1ZjZiNjE1Nzg0MGIwNTQxYWMwMWIyNzg1ZTc2YjVjMzk1ZTUgbGVnYWN5LXRydW5rCiszNDE5MCBkYmE2ZWYzMDRhYTQ0MDg4MDZmMmFkYTMwOGI3ZmQ5YjIyNGQ5ODI1IGFzdC1icmFuY2gKKzM0MTkxIDc2ZDlkMThlZjNlNDk1YWIwYjBmNmUzODJjMjFkOTk3NGQ0NDljNDAgcmVsZWFzZTIzLW1haW50CiszNDE5MiAwN2U2NDBjNDAxNmRmZTM4ZDIyNWFhNDJiZDg2OGVjMDkxZDg2MTVkIHJlbGVhc2UyMy1tYWludAorMzQxOTMgYjI5MTlhNGM1NThjNmY0MDhhMjNjYjZhM2E5ZjZlNTRiMTA2YmJhMSBsZWdhY3ktdHJ1bmsKKzM0MTk0IDJmM2Y1NmYxMjgwZmNlY2RhYzA5ZmMxMzE1ZjhkOTFkMTA2N2NiNzggcmVsZWFzZTIzLW1haW50CiszNDE5NSA5ZGY5YmQ0MzBjMzZkMmM4MzhjMTZjYTVhMDgxNmY3YmY2YmNkZDY3IHJlbGVhc2UyMy1tYWludAorMzQxOTYgNzdhYzQ1NTgwYzQwOGQ1ODYyZjQ2ZmZiMGUyYWU2Yzc2NWU0NWI0ZCByZWxlYXNlMjMtbWFpbnQKKzM0MTk3IDUxZTg1ZThiZmE0NzMyYWM5ODA2NjliMzE0ZGIyNjI3ZDYzYTg5YzcgbGVnYWN5LXRydW5rCiszNDE5OCBjNDhhMmNjOTM3ODBmNDFhNzdhYWZjZWI3YTBhODExNjM0NzAzMDc5IGxlZ2FjeS10cnVuaworMzQxOTkgMWE3OTJmMzZiNjllMzZhNGM1YmVmYTYxYTIzN2ZiZjViZTgwYjdhNSByZWxlYXNlMjMtbWFpbnQKKzM0MjAwIDAyMjU3ZjZhNjgyYTc4MzE3ZWY0NmY5NWZmMTNiZDZjZTE0NWM4ODkgbGVnYWN5LXRydW5rCiszNDIwMSAxYmM2ZWYxZjZiZGI0NzkxYTk4NDUxZjNlOGJhMjdhNWUyOTNiYjc1IHJlbGVhc2UyMy1tYWludAorMzQyMDIgZDdiZjEyMzJhODZkMTQ0ZDRiYTE3MGI1MDdiNmQyYjBmODE5NGZlZSByZWxlYXNlMjMtbWFpbnQKKzM0MjAzIGIwYzNkOTg2ZjYzZjc1ODM1MzEwZDY3ZGI5MzE5NGMzYTgxMzg0ZDcgbGVnYWN5LXRydW5rCiszNDIwNCBhN2M0YWE4MWViODVjMDEwYTdiODU5ZDM3MzMzMTEwYTE2YjUwN2M4IHJlbGVhc2UyMy1tYWludAorMzQyMDUgNzY5NzlhZmM3ODViZDYzZDAwNjYxYmZkNWRjMTJlYjAzZGI2ZTk3ZCByZWxlYXNlMjItbWFpbnQKKzM0MjA2IGFkMjUzYzA2YmFmMWQ0YWYyYTMyMTM5N2NkNjQ3NmNmMjQxM2JmZDIgcmVsZWFzZTIzLW1haW50CiszNDIwNyAwOTY3Y2I5MDUzNGNjNmE3ZWUxODYzYjg4MGUwYTMwYzQzZTA0N2ExIGxlZ2FjeS10cnVuaworMzQyMDggZTJiOWQ0MzZmOGY3YWY5Y2FiZjEwZGE2OWVlMDY0M2RlOGJmNGYwNSByZWxlYXNlMjMtbWFpbnQKKzM0MjA5IDNmMjg5NjRmOGVjY2M5NDAxM2U4NjhkMjMwYzcxZWU1Y2QyOGUyZGIgbGVnYWN5LXRydW5rCiszNDIxMCA4NzE3NzZkMzgyMTNhOTA2N2M2ZDliYWY4OTE4ZWFkYmMxN2QzODlmIGxlZ2FjeS10cnVuaworMzQyMTEgMTc3NjU4Nzg1ZmViOGQyNjMxNWE5MWRjZTg5N2M2Yjk1OGUyNTIwNyBsZWdhY3ktdHJ1bmsKKzM0MjEyIDgzNjBjNzRkMDUzYmFkNWJiZTAzMzlmYzNjYjllNDFjODhjYTY1MzYgcmVsZWFzZTIzLW1haW50CiszNDIxMyA1YzVhZGI1NDQzY2NlODk4MTRiZGUwZWQ3MzAzODBjZWQzNTY1MTM4IHJlbGVhc2UyMy1tYWludAorMzQyMTQgZDZmNGRkNWE1MDA2YjlmMTM2Njc2NTRkMzkzODU1ZjdhZDEyOWZiYSByZWxlYXNlMjMtbWFpbnQKKzM0MjE1IDMzOWM4ODA0ZjgwNGE4ZWU0NTFlYjg1YmIyYzMzMzc3ZTgzNWIzZDUgbGVnYWN5LXRydW5rCiszNDIxNiA1OGYwMWNjMGYzMDBhYjE4ZjE0ODFlYzQwNjZjZjM3OWMyM2Q2NGU5IGxlZ2FjeS10cnVuaworMzQyMTcgNThmOTZhMDBkMzhkYzAwMmFkZTgxODhlNGY0ZWU2NDBhZmJlMGYwYyByZWxlYXNlMjMtbWFpbnQKKzM0MjE4IDI1NGJkM2U4OTFmNmQ5NTkxYzkxZTBmOGJiMTk4MzEwNGY2NTAyYzIgbGVnYWN5LXRydW5rCiszNDIxOSAwZWQxZWFjZTJhNjBiYWVhNzRkY2Q1ZTE2YmQzOWRjY2NlNmM5OTEyIHJlbGVhc2UyMy1tYWludAorMzQyMjAgZjRhMDFjNDA1YTQ0YjYxNzA1YTEzY2Y3NTk2ZTVlOWJkZjIyOTU3MSByZWxlYXNlMjMtbWFpbnQKKzM0MjIxIGNlOGQxZjk1MWUxOTJmZWM4ZjQ2N2UzNTA0YWJkNDY1NTc0OWNkMzUgbGVnYWN5LXRydW5rCiszNDIyMiBkNzU1OTJmNmUyZjdjZmUwZWJkODc5MzAxNDMyNDIxNTE5NjU3MTgyIGxlZ2FjeS10cnVuaworMzQyMjMgOTU0YjYwOWI4NGNkMDk5NmZiNGZkM2ZiNGU4MDdkYTc1YmYzNzI5MCByZWxlYXNlMjMtbWFpbnQKKzM0MjI0IDc3NGE5ZjIxZWRiOTdkNDQ4ZTZhNTU5YTYzNTI2NzExYTlkYTkwNDEgcmVsZWFzZTIzLW1haW50CiszNDIyNSBlOTcyMzBlNWMxY2E5MGY3N2NhMjc1MjY4Y2VmZjQ4YWY5Mjc0OTFhIHJlbGVhc2UyMy1tYWludAorMzQyMjYgOTMxZTg4ODk5MWJhYjc0MTEwOGIwZjg2Zjk4YTAxNmE4MTlkNzhiZSBsZWdhY3ktdHJ1bmsKKzM0MjI3IGYzY2UxOWQ5NjFkZGE2ZTUzZmU0NzdiNjA4ODUwNTA2NTNiOGFhMjcgcmVsZWFzZTIzLW1haW50CiszNDIyOCA1MzgzZDU2MmEzOGQ4MWJlMmU4ZmJhNDBlN2U1M2Q5OTE0MTQxOWQ0IGxlZ2FjeS10cnVuaworMzQyMjkgNmUxZjdkYmVjZDg0ZDUzYjQ5ZmQ4MDQzN2IwMzUwZGNlZDk2YWQzMSByZWxlYXNlMjMtbWFpbnQKKzM0MjMwIGM5NzAwOGVlNzE2NjA3NGIwNDk5ODJkODkzZDYyZGQ3ZGEwOTBhOGUgcmVsZWFzZTIzLW1haW50CiszNDIzMSBiMjcyOGM4N2RmOWZiZjIzMzQ3OGEzZjc1Njg5NjkwZTY5Y2FkYzFmIHJlbGVhc2UyMy1tYWludAorMzQyMzIgMjZjYzU4NjVhODM2NjMzYmYzZjBmZmMzZjdjMzU5NDE4OWQ2NDVlZCByZWxlYXNlMjMtbWFpbnQKKzM0MjMzIGExYjk2NWUxYmJlOWQ4ZjRkODZiNGU5ZDhjMTdiMzU4NTM0ZWNiMTMgcmVsZWFzZTIzLW1haW50CiszNDIzNCA4MTZkNDg2N2YyMTA2NWUxYjM5MmE4YTk4NjhkMTdmNGZkMDA0NDg2IHJlbGVhc2UyMy1tYWludAorMzQyMzUgN2U2MGQ4MjczMGZkOGFkNDE2MzcxOWM2MjVkYzlhZGZiZjk2MDhmOSBsZWdhY3ktdHJ1bmsKKzM0MjM2IDAxODJjZWM1MDhhYWI0ZmY5ZTgxOWEyZDc3ZTE0MDUwNmYxNDgyNTggbGVnYWN5LXRydW5rCiszNDIzNyBkYjYzY2IwZmM3ZGExNzlhNGEzMmEyNGJjMmE0ZTdmYTEwMTBmYjZkIGxlZ2FjeS10cnVuaworMzQyMzggOWMyZWI0MTUxMzBmMzRkM2ZlNWVkNzQ3Zjc1MzJmMWQyMjg1MjQ3MCByZWxlYXNlMjMtbWFpbnQKKzM0MjM5IDczODlmZjU3Nzg3MzkwYjM0NzMyMTFkN2ZkNTY5MGExOGJlNDIwM2QgcmVsZWFzZTIzLW1haW50CiszNDI0MCBiOTJiMzdiMDFmZmIxNjA4MzM0ZWQ5YWUyNmMzMjAwNWNjNTcwOGQyIHJlbGVhc2UyMy1tYWludAorMzQyNDEgZTViYWNiOTU5N2Y3YjQ0YWE3ZGMwZDJkNDIwYTk1OGRiNjc0Y2MyNSBsZWdhY3ktdHJ1bmsKKzM0MjQyIGZiYWQzZWZhNDBiYmRjZjZkNGI5NmEzOWUwNTJkNjE2Y2E0YWIwNzIgbGVnYWN5LXRydW5rCiszNDI0MyA2MmM2YWZlMzdkMTIzYWEzYTg0YTAxN2M5MGJmNzc3OWQyMTUzZmNlIGxlZ2FjeS10cnVuaworMzQyNDQgOTI5ZTU0ODE3NGM1ZmFlOTNiYzkwZjUwYjYyMWEwZmFiYWRlMTk3YiByZWxlYXNlMjMtbWFpbnQKKzM0MjQ1IGRiZTgzOTFlZDA2ZjIzOWI0MzlkNWNlMTJiMmJiYjk3MDQ3YTgwNzggcmVsZWFzZTIzLW1haW50CiszNDI0NSBmYTY1ZjY1MjdmZTEzNGFhOTdlMDNlMWIyYWYzNjVkNDQzYjY3ZGM3IHJlbGVhc2UyMy1tYWludAorMzQyNDcgZGE5Yjc0MDdlNTZjMmFhZTlkMjQ2NmMwYzRhNjVkMDBiYTllNGFlOCBsZWdhY3ktdHJ1bmsKKzM0MjQ4IGExNWIxYzNjMjM2YTRiMjRjOTY5Mjg1MGUwYTQ1M2Q1NTM1OGU2MTEgbGVnYWN5LXRydW5rCiszNDI0OSA3MTcwMjRkYmJiYWM3ZDg3Y2RjNDgyM2M2MGQ5OWNhOGE2MTc3NDE0IGxlZ2FjeS10cnVuaworMzQyNTAgMmExNjVkZGYyMjJkYzQyOWI3NThlMjc3MTI1NjA3NDgyNjhkZTk2NyBsZWdhY3ktdHJ1bmsKKzM0MjUxIDUyOTBhNDkzNjE3MGRjODhmYzM4ZjhmNzM2MmEyYTRjNTgzZTAyMDEgbGVnYWN5LXRydW5rCiszNDI1MiBiYjgyNTExZDE5MDZhMjc5OGIyMDU4ZDU5MmY2YjZlODhhMDE1MWVkIGxlZ2FjeS10cnVuaworMzQyNTMgNjkzZDE3ZGZiOGZkNDhkNTIyNjRhYmQ5ODA1Njc0ODdkYjg5NjVhOSBsZWdhY3ktdHJ1bmsKKzM0MjU0IDU2MzkwODkxZDk4OGM4NzU5ZWExMGM5MDRkMzE0NTcxZTE4MjBiZDggbGVnYWN5LXRydW5rCiszNDI1NSA5Y2Q0ZjRhZTdhNGMyYjhjZGNlM2FhNjRhN2MxNDc3MGY5ZjY2YzZlIGxlZ2FjeS10cnVuaworMzQyNTYgNWVjNDIzM2VkY2VkYzQ3MjU1YTRkMTFjN2YwZDg2NjIyZWZiYjIwNSBsZWdhY3ktdHJ1bmsKKzM0MjU3IDcwMzc4MmQ5MDE2MTNjNjA4YWE2OTUyM2MyYmY1ZTU3MDliMmM4M2IgbGVnYWN5LXRydW5rCiszNDI1OCA1ZDJiYTQzN2UxYmQzYjM0YWQ1NzVjYTczZTg5ZmRiZTNjMWY5MDZhIHJlbGVhc2UyMy1tYWludAorMzQyNTkgZTJmNTBhN2NjNDk0ZjkwNzQ5MjgxZjMzYjM4Y2ViYmRkNmVmMzU4MyBsZWdhY3ktdHJ1bmsKKzM0MjYwIDJjZTlmODljNGJiYzliNTdiNGY5N2Q3NjcyYWFmOTE0Yzk5MThjMDEgcmVsZWFzZTIyLW1haW50CiszNDI2MSBkZGUyNzZhODhjODhhMGQ0YmEyNTY5MzE0Nzk3ZGNlYWI0Yzg2YzBiIGxlZ2FjeS10cnVuaworMzQyNjIgMzYxYjUwYTBkMjdmYWQ3YjRjZmVjZmZiODZmMjFlZTU2OWM2NjlmOSByZWxlYXNlMjMtbWFpbnQKKzM0MjYzIDMzMmJmZjI3NWIyMThjNGU4ZDFkNzgzYWQyMmYzNzNhNDEzZThkOGEgcmVsZWFzZTIzLW1haW50CiszNDI2NCBhZDE4ZjViOGQ2ZjRjNjFiMmFhNzc4NmM1NDc1ZjIxNDg1YTQzZWZhIHJlbGVhc2UyMy1tYWludAorMzQyNjUgOGM5ZjQ4YmE1MGZhMTY1MTI4NmQ4NmQ3MTcwNWEzNjkzOTJhM2RiNCByZWxlYXNlMjMtbWFpbnQKKzM0MjY2IDA0NTcwNDlmMjVlMGEwYTE3N2MzZTUxNjAwNDNmOGM1NzdiYjQxNDggbGVnYWN5LXRydW5rCiszNDI2NyBiN2EyMTM1ZmMxNTZhYTYxYTcxMDJlNjA2MTljYTk0NWNhN2NkZTJiIGxlZ2FjeS10cnVuaworMzQyNjggMDMyYjkyNTg4ODViNzE4MjkzZTRjN2ViMzljNDA3YjM0ZGVkYjBjMiByZWxlYXNlMjMtbWFpbnQKKzM0MjY5IGE1NjcxYWVjZjM5MDEzYzZjNjkwNTA0Yzc0ODU2YTk2YTYyYTA3ZTggbGVnYWN5LXRydW5rCiszNDI3MCBhNTY2YzQ5YjcwZmFmOWY2NzRiNDdmMjRmMTNkNGU0OThmMDE4NzZhIHJlbGVhc2UyMy1tYWludAorMzQyNzEgODUyOWVhYzUwNjVkMjE2OTdmZTdmNzVhMmIxOTEwYjM0YWZhNzE3OCBsZWdhY3ktdHJ1bmsKKzM0MjcyIGQ5NmU3ZjgyZDM5OTk5OTRiYThlNTZhNDQwODU0NTYxMDA0NDYxOTAgcmVsZWFzZTIzLW1haW50CiszNDI3MyBlMWJhYTI0OWIzZjIzZDkyMjQ5ZTViY2I0MGRmZWRmMDQzMzhjZGU1IHJlbGVhc2UyMy1tYWludAorMzQyNzQgNmYzMzQzZGU2NWIyMmM3MzE2YTc2YzY2Njg3NmMwZmM4ZmYwMzliMSByZWxlYXNlMjMtbWFpbnQKKzM0Mjc1IDEyZGEzNGVmODg1NGZiMTM0ZGYxZjg4NzY3YWYzN2JiZjg5NjE1MjggbGVnYWN5LXRydW5rCiszNDI3NiA3ZjQ4ZTg5NDM5ZTBiZWRjMzNjYTZhOTE3NTJkNTM2NDI4NmNjYjRlIGxlZ2FjeS10cnVuaworMzQyNzcgZGQ0NDg1OTQzZjIzZjQ4NWFhODA3MGY4OWNhN2ZkOTcwOWEzOGZiNiByZWxlYXNlMjMtbWFpbnQKKzM0Mjc4IDk0YjRmY2U3YTk5OGIyMzgyYmQ5MjZhMWMzYmVhN2VlNTJmY2YxY2QgcmVsZWFzZTIzLW1haW50CiszNDI3OSA2YzA0MDJkYWZiMThjYzU4YWI3ZTk5YmZiMTg1MjQ4Nzc2MzFkY2FkIHJlbGVhc2UyMy1tYWludAorMzQyODAgNjNhZTFiOTFhODY4NTVhZGRjNGFlZjQ1OTIyODQwYzI0OTA3Y2E5MSBsZWdhY3ktdHJ1bmsKKzM0MjgxIDAzNWM5NzgzYTRkZGJhZmExNzRlNjA3ZDI1NGI3NjhmNzYwYWM5NGEgcmVsZWFzZTIzLW1haW50CiszNDI4MiA4NTQwNzEyZDZlMmQzMTc1YzgxYTkxMWQwN2U2NjJiOWFhZjlmMjIxIGxlZ2FjeS10cnVuaworMzQyODMgZTE4YzEwY2E3NDA4Mjg2OGRhZWY2MmVhYjMyYWM4YjVjYzMxMzFkZCByZWxlYXNlMjMtbWFpbnQKKzM0Mjg0IDU5Yjg1MWI2YWQzM2E1N2Y1MTA1NmM3MzE2YjcwZjczMmUwZDI5NmUgbGVnYWN5LXRydW5rCiszNDI4NSBhNTNlYWJlMDI3Mjk4NDdjYWU0OGI4NDVjZmY4ZTgwM2UyZTc4YWE1IHJlbGVhc2UyMy1tYWludAorMzQyODYgN2JjNTFiZTc1ZmViZmQ3MjI3ZTgyYTkwNzYzNDQ2YjJmMTg4YWE2YSBsZWdhY3ktdHJ1bmsKKzM0Mjg3IDNkMWFlMWM4NmZkMzkzNjcxNzU0ZTMyOGUwY2E3MzA5M2MzYjQ3NDkgcmVsZWFzZTIzLW1haW50CiszNDI4OCBlNmNlYTc3YWJlZTM2ZmYxZWYxOTcxNDQ4YzRlMTYxOWVlMmY4YTE0IGxlZ2FjeS10cnVuaworMzQyODkgMDYxNjRjNmRjNTA5ZjE0YzNkYTljNDAxNWVhZWY0MDY3NmY4NjMxNyBsZWdhY3ktdHJ1bmsKKzM0MjkwIGJkNGM0YjZlMDlhMTcyNDQ3NmIxYjE5YmVkMWVjY2U1NGEyNDJhNTAgbGVnYWN5LXRydW5rCiszNDI5MSAwYzlhYTdlNTU0MTU3YzU4Y2Q4MWY2Y2RkMjRkMWUwNTlkMjJlOTA0IHJlbGVhc2UyMy1tYWludAorMzQyOTIgZmM3ZWY0ZmRlMjdhMWVkZmRmYzA3ZDU0NTY2ZGY1MTc1ZDRlNTk4NyByZWxlYXNlMjMtbWFpbnQKKzM0MjkzIGI5NTc5NzZjZDhlN2RiNDYwNWY1ZGMwMmY0ZjVkMzAyODI3YmRjNTggcmVsZWFzZTIzLW1haW50CiszNDI5NCA1OGI5OGY5ODhhMDgxOWEwZDMxNTViYmE3ZDg4ZGY4NGNiNDI5NmE1IHJlbGVhc2UyMy1tYWludAorMzQyOTUgM2VmODdhMGJiYmFkMDUyNjIyNDAyMmFjNWRmYTUyODc0MDljZDI1NiBsZWdhY3ktdHJ1bmsKKzM0Mjk2IGFiM2U3NzBjM2E5OWJmYjc3MTcyMTAyNzcyMmMzZTg0YzhlZmZhMTEgbGVnYWN5LXRydW5rCiszNDI5NyA5OGE2YjYwMTUyMjk5NjMyZTg0ODFlM2I5M2NmN2FiNmQyZThiNTE4IGxlZ2FjeS10cnVuaworMzQyOTggZDM0YjZmOTJkZDMyNWQ2YmRjNmViOGVlNzYxMGZiZGMyMzk2ZGEyOCBsZWdhY3ktdHJ1bmsKKzM0Mjk5IGRhZjhjOTMyNzg2ZDI5ODRmNWU5Mjk3NTI0NDliZDQxZWJhMDg2ZmQgbGVnYWN5LXRydW5rCiszNDMwMCAzNDE3NWU5NDA4MWNhOTZhZWY4YzIyZDVjZWE4ZjQ0NmI2ZTljNTdkIGxlZ2FjeS10cnVuaworMzQzMDEgYzk1MWY5YzMwNmYzMjRmNzdjODQ0MTFmMWM2MzUxYjNhZTc3NjIzZCByZWxlYXNlMjMtbWFpbnQKKzM0MzAyIGNkZGI3YzhkYjM2NzkxNTEzZTk5N2JiMjdlM2VhODk2YjVjMGNlOTQgbGVnYWN5LXRydW5rCiszNDMwMyA2N2NkM2U3ZDBlYWNkODljODUxZDI5YTY0YmIyYmFiZTJkNzU4ZWNiIGxlZ2FjeS10cnVuaworMzQzMDQgYjZjMGY5MDhiZWI4MDlmMWM3ZDVkYTBlMjIwNDdiYTg3NWZmZjZhYyBsZWdhY3ktdHJ1bmsKKzM0MzA1IDc0MWY3OWYxMDEyYTBlYjQzMzQ5NWQyYjZhNDI5NGRjMWQ5MGYxZTEgcmVsZWFzZTIzLW1haW50CiszNDMwNiAyMDcxMjRmNmE4ZDdiMmQ0YzE1MzUyNmU1YTU1NzkyODk2OGE3YTM3IHJlbGVhc2UyMy1tYWludAorMzQzMDcgZmQ1NDAyMjBmZmM0ZjA4MDFlZjY5YmQ0NDI4Zjg2ZWYxZGQyMmJmNyByZWxlYXNlMjMtbWFpbnQKKzM0MzA4IDNlMWJmNzUxMDY0MTEwZGUzMThhYWFlNTViZjE1MjhhYzg2MTk2OGUgcmVsZWFzZTIzLW1haW50CiszNDMwOSBjODc2YWM0ZDAzMzcxOTVmOGNhYzdkMzdlNGY0Yjg3YWVkMjYwNWQ2IGxlZ2FjeS10cnVuaworMzQzMTAgNjNjNjQwODhmZjQ5ODAwNTY1NzIxNGUxYzQ2MjZhNWIzNGEyM2U3NiBsZWdhY3ktdHJ1bmsKKzM0MzExIDAwMjhlZjQ1YTUwZWE1NWFjYTdjYmQzZWE3N2I4OTA4ZGI4Y2U3YzMgcmVsZWFzZTIzLW1haW50CiszNDMxMiA2ZDc1MzgzMjc0MzQyZjAwMzVmMGUzZjg4MzQ0OTQ1MDJhNDViYTg4IHJlbGVhc2UyMy1tYWludAorMzQzMTIgN2Q3MzYyYTcxMjUzYmZmNGZjMWIwYzgyNWMxNDU2OTc3OGRiOGMzNiByZWxlYXNlMjMtbWFpbnQKKzM0MzE0IDFiOWMzYThjNDlkYjY4YmZlYzhhYTY1NjYxYzA1NDcxYjAzNmMzN2MgcmVsZWFzZTIzLW1haW50CiszNDMxNSAwYzZmZTU4YWY3ZDEyNDc5NzIzODYzMTExY2VhYjFiYmVjZTUxNmQwIGxlZ2FjeS10cnVuaworMzQzMTYgNmY5NzgyY2MyNzUwZDI4NmVlOWM2NmYwYTA0OGJhOGMwOTVjNWJiYiByZWxlYXNlMjMtbWFpbnQKKzM0MzE3IDZjZmQ5N2Q3ZmU5OGQ3ODI2MjMzNWFjNjIxNjI4YzE0MTFiZmJiMGMgcmVsZWFzZTIzLW1haW50CiszNDMxOCBmYmY2ZWU1NzY5ZDQyYTBkZjgzZThhOTQ0NjM4ZGJmMjk4YjJkNjEzIGxlZ2FjeS10cnVuaworMzQzMTkgZDNmYjc1YmM2MzU2ZTljZDU1MTBhM2ZjM2ZiZGZkZjA3MmRiZGZjNSBsZWdhY3ktdHJ1bmsKKzM0MzIwIGRlODU1MmYwYWNjNTc2NDNkZDYxYzI4OTFkYzQzMmNkMTUwNzYwMjAgbGVnYWN5LXRydW5rCiszNDMyMSBiYmU2M2E4Nzk2OWZkYmY2NjE3ZjU3MWY1YTNiM2E2Njg2ZGRlMjY3IHJlbGVhc2UyMy1tYWludAorMzQzMjIgYzk4MzAyMjI1MjkyMGQzNDkzMGMwZjlkOWU0ZDg3ZmQ0OWI0OTRkNCByZWxlYXNlMjMtbWFpbnQKKzM0MzIzIDgyNzAwYTdlOWZhNGI0MGRlMjA4NWNhMjc1NjRkMjExZmRmZjk1NWUgcmVsZWFzZTIzLW1haW50CiszNDMyNCBhNjczZDg1ZjVhZDBhNTVhNWQ5MDg1M2M5YmQ0NWZlZWU2NDVkYjlhIGxlZ2FjeS10cnVuaworMzQzMjUgNjZmZDgyN2ZlMWQ4NGJhNjgzOWJkNDQxNzQ5NWZhMDlmMGFkYmFlNyByZWxlYXNlMjMtbWFpbnQKKzM0MzI2IDllNjE2NDE5OGM0NTcyM2IzNTc3YTZiMDMxZGI5YTZiZjgxZTFjNjIgbGVnYWN5LXRydW5rCiszNDMyNyBjNzNmMTYyMjVhNzFhZGYwMTBjMjI2MTYzMTdkYjhiOTgyZDMwZDQ3IGxlZ2FjeS10cnVuaworMzQzMjggN2JkNmM2YjUzZjg3MTcwYWVhYzAzYmQ3YjNkZjZkZTA0MGY4NmVhNiBsZWdhY3ktdHJ1bmsKKzM0MzI5IGIxYzU2OTZhZDQ3NTg1ODQ0YTJhODVmOWMzNDZkMGIwOTY1ZGE1ZGIgcmVsZWFzZTIzLW1haW50CiszNDMzMCAyNzk1OWEwMmQzOWRlOWMxYTJlOGNlOGZlN2VlNWE2ZWQ0OGVmYWZlIHJlbGVhc2UyMy1tYWludAorMzQzMzEgMTA3OWJlNTg3YmFhMDc5NjJjMzQxM2UzOWQ4ODkwMDQ4ZDYxNjZjOCByZWxlYXNlMjMtbWFpbnQKKzM0MzMyIGQ0N2NjNmY3MWYzMmEzMmMxNjdhYzk2MjZhNGViNzk1NjBlODUzYjggbGVnYWN5LXRydW5rCiszNDMzMyBiN2QwMWVmZmU4OTk1MGE4MzQyZjZmZmE3YjM5NmM5MmY3MWU2YmRjIGxlZ2FjeS10cnVuaworMzQzMzQgODQ3MzFlZWE2ZGI5MGZlMjljZjhmZGIzZmM5OWM5Y2FiOTE0MzkzZSByZWxlYXNlMjMtbWFpbnQKKzM0MzM1IGYyOWYxMDhhYjQ5ZWViNWRhMmYzNTJkYTQ2ZDM5NmJiZDI3NDgyODAgcmVsZWFzZTIzLW1haW50CiszNDMzNiA1ZmYyNGQ1ZDllOTIyYjAyZWI4ODExMTViOTIxOTdhMTJmOTYwY2NkIGxlZ2FjeS10cnVuaworMzQzMzcgZTczZjNhMDMyNzYzNmFkOGQ2NmM4MjM1ZTllNDNiZTY3ZWYwYmM3MSByZWxlYXNlMjMtbWFpbnQKKzM0MzM4IDU3M2E0MGJlYzA3MDQyYTY2MTU2M2ZjMmZhYTNlMTljNGEwNDhhMjQgbGVnYWN5LXRydW5rCiszNDMzOSBmNGRlZTAxNWJmODRjMmM2YzMyMDc1OGJlNDNmM2Q0YTFmMWZlNGFlIHJlbGVhc2UyMy1tYWludAorMzQzMzkgYmUyNTMzZmIxMGE1ODdjOGRhODliMThjNWYzODFmNDc4ZDcyMDU5MyByZWxlYXNlMjMtbWFpbnQKKzM0MzQxIGU1ZTYwODkyYzNlMzU3ZTVlNzQzY2I2NGVjNzBjMzQ1OTYyNWQ3YzQgbGVnYWN5LXRydW5rCiszNDM0MiAxOGUyMzlmMjMwMjlkODBlODczMTQ5YTE5MTNlYjQ5N2ViMzM3ZWY2IGxlZ2FjeS10cnVuaworMzQzNDMgYzRlM2E2Y2FjZmNhYmZhZWJhY2Q4ZWZhNzNlZWI4ZjllOTdmZmFmZCByZWxlYXNlMjMtbWFpbnQKKzM0MzQ0IDJlZjhkNjJkY2MwOTEwNjEwZGNmZmE5NDI3MzgzMDE3OWY5ZDEzNTggcmVsZWFzZTIzLW1haW50CiszNDM0NSA5MjAwNzEyZDMxZTc5MGVjMTljOTY0Yzk2MWE4NjFmZTMwNWU2NzBhIGxlZ2FjeS10cnVuaworMzQzNDYgODE3YjZlMGY0OGQxYmE4NzQzMzM5M2MzODVlNjQzM2I5OTE0YzU4ZSBsZWdhY3ktdHJ1bmsKKzM0MzQ3IGY5ZGZkY2I4OTdiYjY2NGE0MWE4ZjM3NDdhNWZiZGE0ZDM5NGU3ZTQgbGVnYWN5LXRydW5rCiszNDM0OCBjMWE2NzJlZTE1MzAzNTJlYTE2MDA1OWEzMzU4MTI5ZWFmYzE4YzYwIGxlZ2FjeS10cnVuaworMzQzNDkgN2ZkNTUzZmI0MzE1MDM3YzZhMTFhZjkwOWJjNGU3N2YzYjIxODVhNyBsZWdhY3ktdHJ1bmsKKzM0MzUwIDA0NzFjNjdmNjFiZDc5NzY1MTE1OGJhZmUyNTI0ZmE4Y2M4MDNlYzAgcmVsZWFzZTIzLW1haW50CiszNDM1MSAwZDQwMTc4NDYyMWI0ZjQ5ODUyMzUwOGJiNTc4NzRkN2U5M2Q3ZjRiIGxlZ2FjeS10cnVuaworMzQzNTIgYTMwMTViYmEzOTk5YmRjMDNmMzE3ZjNmMTIzZjU1MGNlYTZlNjkwYSByZWxlYXNlMjMtbWFpbnQKKzM0MzUzIDM5ZTYzNWRhMjMyNmE1N2VlODBkNGJmYTkxZmEzODI4Y2M5YTg2NTYgbGVnYWN5LXRydW5rCiszNDM1NCA1ZWEwZmQyNmJkMzY0NjJkZDY1YmE1NDdmODc5MThlZjg0ZDI1YmYzIGxlZ2FjeS10cnVuaworMzQzNTUgMTU0M2E4NDBmYzdmM2EwYWNjOGE5YmVmYjZhODYxZjc1NzRjYjY0MCBsZWdhY3ktdHJ1bmsKKzM0MzU2IDcxNzU3Y2VhMjU3ZjM2OWYwZDEyYTAzZjM0NGI3OGVkNTlmODFmOTEgcmVsZWFzZTIzLW1haW50CiszNDM1NyAwNDQ3OThkOGJiZmM3YjQ4NDVjYTAzMGNhMDU4ZTczYjAzN2U3MDExIHJlbGVhc2UyMy1tYWludAorMzQzNTggODYzMGRkOGI1Y2I0NjczMWVkYTdjN2QzZWFhNWZkZTM0OGI1ZmM4MSByZWxlYXNlMjMtbWFpbnQKKzM0MzU5IDIwNWEyOTNmM2RlMDgwMmU3MGRjZDJmZDRmZmFjMjY0ZGQ0YzdkN2IgbGVnYWN5LXRydW5rCiszNDM2MCBkMGI4YzgzYzJhNmI2OWQyMDRmMzNkMjU2Mjk1NTk3Y2ZiZGE0YTlmIHJlbGVhc2UyMy1tYWludAorMzQzNjEgYTZmYjY4MjI4MTRhYWFmNjFjNjgwNmE4MjJlNWY2NDZlYTY2YWYxZCBsZWdhY3ktdHJ1bmsKKzM0MzYyIDFlYWRlNzdlYTllYTc5ZmFjMWNmNDVlMGRjMTI0YmNiNmM3NjM5NGUgcmVsZWFzZTIzLW1haW50CiszNDM2MyBkNzliYjI5ZmY5NmNjMDk0NzYzOWFhMWJkNjAwNmQ5NGNkZTkyZGI5IGxlZ2FjeS10cnVuaworMzQzNjQgODg0MWQzNGEyYzM3ZWI5ODkyOWQzM2Q1ODZlZDRhZGFjYjg1OWVjNyBsZWdhY3ktdHJ1bmsKKzM0MzY1IGNhMDMwMzIwOTYzZjVmZDUwMTI3NzRhYjhmZmYxMTdhZWIwZGM0MWMgbGVnYWN5LXRydW5rCiszNDM2NiA2ZmRlZTNmOWVjZTNhYjdjZjk2YmFiNjY0ZjVkZDM2ZmNjMjdjZmI0IHJlbGVhc2UyMy1tYWludAorMzQzNjcgYWQ2MzA2ZDM1Y2UzYTE5NWQ2OWY2MTgxODUwYTcyNzdiM2M3MTUyNiByZWxlYXNlMjMtbWFpbnQKKzM0MzY4IDNiNDdkNjA1NzE1MTdlYzIwN2FjNjViMTc2NzMzZDI3OWE0NjIyN2YgbGVnYWN5LXRydW5rCiszNDM2OSAwNTVhODA4ODFlOTZkOTM2ZjE0NDUzMDRiMjM5Y2VlYzhjZDEwYmY4IGxlZ2FjeS10cnVuaworMzQzNzAgMGUwYmE5Mjk1NTBjMDNjN2ExY2YxNDg5ZDAzMDFlYjI1MDUzM2EwOSByZWxlYXNlMjMtbWFpbnQKKzM0MzcxIDgxNDFlZWFkMTkwNzNmNGFhOTE0MTk3MGFiN2JjYmJhMDM1YmVmNmIgbGVnYWN5LXRydW5rCiszNDM3MiAxNDRiYzhmZDkxMWVlOTRjZDAwOWVmZjhmMmI3MTA0ZDlhNTEyZDExIGxlZ2FjeS10cnVuaworMzQzNzMgZjAwYTMyZWM0MTM5MzAwNGM1M2RlOTVjNGRiNDhmOWViYTlmOWQxMyByZWxlYXNlMjMtbWFpbnQKKzM0Mzc0IGFjZWY0ZTE2Y2VhZTQ4MzBhNmI3YWQwNGEyOGI2YTQ4MWY1ZTk5OWUgbGVnYWN5LXRydW5rCiszNDM3NSAzNjk5MmNhOTE4YTM0OTMzYzcxMzhiMGVhYWFjOGIwZmU5N2IyOTExIGxlZ2FjeS10cnVuaworMzQzNzYgYmIzY2U2YWVlNjkzZWNjNGViYjQxNTJhYmMxYjg4MzA2NzJiNDY3YSBsZWdhY3ktdHJ1bmsKKzM0Mzc3IDZlZjI0NTEzNjAzODlhZjk3NzcwZjhlN2UwZDM2N2UyZGVlMzhmYWUgcmVsZWFzZTIzLW1haW50CiszNDM3OCA1YzAxNzRlMmUxNGY0NTFmNWY4NjA3ODlmMTM1ZDk5OTNkYjFjN2RlIGxlZ2FjeS10cnVuaworMzQzNzkgMjk4ODg4ZTM5NWNlMGMwNWYzNzRmYmNjNGMxMDJhOGUyMDU1ZWI0MiBsZWdhY3ktdHJ1bmsKKzM0MzgwIDQ3NzZhMDVlNjMwYjVmYzM4ZjAxZThkOTgzYzNiN2YzZDQ4NzQ0NGQgcmVsZWFzZTIzLW1haW50CiszNDM4MSA1OGZlNjRmN2ZiMTkzYWViOGYyMDBhMzE5NjQxYzNmOTE5MTU3ZDM3IGxlZ2FjeS10cnVuaworMzQzODIgNDAwNjc0OTU4MDI1ZTllNDgxNjQ4MGJmYmM0NjJkNzA5ZWFjZDA4YiBsZWdhY3ktdHJ1bmsKKzM0MzgzIDA2MmMyNTViNTdhOGUyMmU5NzM2MjVmOTFkZDg3MzA0M2UyOTVmOWEgbGVnYWN5LXRydW5rCiszNDM4NCBkNWMzMjMxYmE1YmFhNDE2MzIwMzljOGNmYTc0OWQ5MmIxNDIyODE3IGxlZ2FjeS10cnVuaworMzQzODUgN2Y2MTM0ZjhiZDA2ZmQzZmM2ODI4Y2RlZGUyZWQ5N2FjOTQyN2UzNSBsZWdhY3ktdHJ1bmsKKzM0Mzg2IGFkYzYwMDE1NjcwYWU4YzIzZGIzZTNlMThlOTQwZTM5NTc1MzUxNTEgbGVnYWN5LXRydW5rCiszNDM4NyA0MWI3ZDFmMDUwMGYwZTRjMTUwNGUyZDZmOTllMTMyOTdiMDJjNmY0IGxlZ2FjeS10cnVuaworMzQzODggNjA0ODMwZjFjYWE2NTUyNmNhODlkMThhYjgwY2UyYmQ5ZGI2NDI1NyByZWxlYXNlMjMtbWFpbnQKKzM0Mzg5IGE3NDI4MjFkOWU3NWRjN2FlYWFkOGYwNjdkZTM4M2Y2NzljYWZhZGQgbGVnYWN5LXRydW5rCiszNDM5MCBmY2U4MGFkODM0NzcwOWYxYzFhNjdkZDFiNGE2Y2M2NWUzYTkzMGI3IGxlZ2FjeS10cnVuaworMzQzOTEgZmRmMGE5N2JhYjYwMGQ1OTVkYjBjMDkyNjEwNjVhNjA5OTY0N2FkNyBsZWdhY3ktdHJ1bmsKKzM0MzkyIGNmMDJjMTdkN2Y0NDliYzVmMmE4YTRiZjg1NDkwZDU5NzYzOWVhNjUgbGVnYWN5LXRydW5rCiszNDM5MyA4MzdlYTE4NjM3YmMxOTBmZTU5Nzg2ZjcyNjkzZWJlMGU4MTdkNmVmIGxlZ2FjeS10cnVuaworMzQzOTQgNGEwYzg5ZTVlMDU2NzdiZTc4ZDQzZjczYTFmZDg4OWE5YjhlY2NlNSBsZWdhY3ktdHJ1bmsKKzM0Mzk1IGMyMjZmODRkN2E2NmUyYWE4MTY2NWUzMGVjNmRjMDJmOTkxYmMzMmYgbGVnYWN5LXRydW5rCiszNDM5NiA5NjkxY2M2NDQxNjAwN2JkZGRjMTc3YmQxYmVhNjgyNGQ3ZDcwYTY1IGxlZ2FjeS10cnVuaworMzQzOTcgNDczZjRlMjk1OWE4MDQzZDliY2JkNzQ0M2VjYmMzMTRjMTk2NWJlYSBsZWdhY3ktdHJ1bmsKKzM0Mzk4IDNiNTlmYTVkMjViMTNiNWM2NWUwOTYwNzk0OWFjMDZhZjkwODZkZDYgbGVnYWN5LXRydW5rCiszNDM5OSAwZGRlY2FmOGI3NWNiZWNhMDA2NjAwNGRmMWMzZGMzMWU1MWFiZGYyIGxlZ2FjeS10cnVuaworMzQ0MDAgNmMzODQwNmMzZmFkODQxMjhlNWZiYjc1NzUyYThlYzg3YTQ1Y2IxYSByZWxlYXNlMjMtbWFpbnQKKzM0NDAxIDAwNjAxNTc4NDRkODdiZTJhY2U3ZTk1MzI2ZDc1MjAwN2EwYTI5YmUgbGVnYWN5LXRydW5rCiszNDQwMiA4ZWE4MzI2MDNlNGZlYjE3ZTE5ZTgzODA1ZDc3YWNhYTQ0NDg5NDdjIHJlbGVhc2UyMy1tYWludAorMzQ0MDMgYjQ5MWJiZjE3ZGRlOGExODQ1NmUzNGNjMmI3ZmM0ZmYwMjkyNGYxNiBsZWdhY3ktdHJ1bmsKKzM0NDA0IDUwMWE3OTM0Njc4NGFlNjI2YThiNGYwY2QwNDk4ZGVhMDdjYTE1OGEgcmVsZWFzZTIzLW1haW50CiszNDQwNSBmZDA1MmM0Zjg4NGY0NDMwYzI4MzgwMjJlYTViY2Q4OTk1YWIxZTUyIGxlZ2FjeS10cnVuaworMzQ0MDYgMDRmNDE4YWY2ODBkMDdmNGI0MGU0OTYxYWY0MWIwZDhmYTMwNmNjYyByZWxlYXNlMjMtbWFpbnQKKzM0NDA3IGEzZTg2NjY1ZjI0NWFjNWQ3ZTVlYmZiNzIyYmRlYmZiZGMxNWM4ZjYgbGVnYWN5LXRydW5rCiszNDQwOCA0Mzg4YmJhZDBiYzM3YWU5NDhjMjNhMGJhNGUzMWUyNDdhNjYyN2QzIGxlZ2FjeS10cnVuaworMzQ0MDkgNWExZDNiYzZjYzE4MDJlMDA4MzU1NzZhZjA3ZDU3MTI1MGQ1YWJkNSBsZWdhY3ktdHJ1bmsKKzM0NDEwIDJjYjRmMzIxNzk4Y2Q2ZjA0MThjNDExOWUxMjU5ZjdhNjQ2MGRkNzkgcmVsZWFzZTIzLW1haW50CiszNDQxMSAzNDI5YjFkMzhiNDAwYzYwZTBiODUwZjAxOGQ2ZDE5MzRkMjQ0YTM2IHJlbGVhc2UyMy1tYWludAorMzQ0MTIgZjFjMzBiZmIwY2MxMjYxN2UyZWUwYTM0MWI5ZmI3NDVlOWVhZjk2NiBhc3QtYnJhbmNoCiszNDQxMyA3OTg5N2VkNTNmMDM2ZjE3OTUxNWI1NTM0MGQ0YTU3MzY4YTkzMzdkIGFzdC1icmFuY2gKKzM0NDE0IDEzNDVjMjNhMDU5MTYwNTAzYmI1M2JiOGZhOTQ2NWM3NGRjZWM2YTIgbGVnYWN5LXRydW5rCiszNDQxNSAzZTNmZDU2Y2U1OTU4Y2Q0N2VlNjBlNjdhODJlMjA2NzllZmQzMzE2IGxlZ2FjeS10cnVuaworMzQ0MTYgZWZlZDQ4OWRmNTQ1OWE4MDFiMGNiOTkzNTM0ZTQ4ODdiZGE4MGRhNiBsZWdhY3ktdHJ1bmsKKzM0NDE3IDUyMDFmNjZjOTJlZjNjZGVlYjJhMzc4YzNjNTJkYmNmNDI4ZTNhN2EgcmVsZWFzZTIzLW1haW50CiszNDQxOCBjM2RmZGI2MGI5ODhmODM4OWM5NmJhM2UyZjBiYjA5MTMzNTY1ODFmIGxlZ2FjeS10cnVuaworMzQ0MTkgYzhiODgyMWU4NzJkMWM4ZTkxNzY5OGQ3ZThlMzJkYzg4YjhlNmQ5OCByZWxlYXNlMjMtbWFpbnQKKzM0NDIwIDgyODJhYTFmOTM0MzdjNjY2YzMwZDFjNDZmYmU4ZGYzNDQ2ZmYyNjEgbGVnYWN5LXRydW5rCiszNDQyMSAwNGJjZmRjZjI5MGExNTA5Y2M3NWM4MzZiODliYmIwNmExOGU2OWJiIHJlbGVhc2UyMy1tYWludAorMzQ0MjIgM2ZmMDM0NDZmMzYyYWVlZmM5ZmE5MDcwZTZjODg4MDFkMjVhYmQ0YiBsZWdhY3ktdHJ1bmsKKzM0NDIzIGJlMGNhMjZhZDU3NDBlYzY0MzdhNzA2M2I3NTBkNmFlZGM5N2Q3MjAgcmVsZWFzZTIzLW1haW50CiszNDQyNCA5ZTIxZTU2YmY1ZjNjZTE4ZmMxZmQ2YzcxODFiYjM1NjMwZDczYzEzIGxlZ2FjeS10cnVuaworMzQ0MjUgM2E5OTI5NGM4ZTViNWUzOGQxYTE3NDAxOWZlNjBjMWY1NjQwZTFhNiBsZWdhY3ktdHJ1bmsKKzM0NDI2IDFkNWQ3MjQzNmYyYTdjNDJiYTM4OGNhNjgyNjA3ODc1ZmU5ZTA5MWUgbGVnYWN5LXRydW5rCiszNDQyNyBhMjM0ZGFmMTk4MTBhYjNhODc5Yzg2ZjM2YmRjZTgwYjhiNDQyNDJkIHJlbGVhc2UyMy1tYWludAorMzQ0MjggNjg3N2Y3OTdjZjM2MTUxYTFiNDMyZWJjMDEwYzM0NjY0Y2I2YTQ0YyByZWxlYXNlMjMtbWFpbnQKKzM0NDI5IGE2NjM0MzA5ZDcwZWU2ZWJhYzk5MzY0MGU5NjliNGYzNTA1Yjg2MzAgbGVnYWN5LXRydW5rCiszNDQzMCA5YzdlMDIyN2M4MzU2OGYzZDgwYzU0MzJjZDY2MzBjZDZiZDRjNDE2IGxlZ2FjeS10cnVuaworMzQ0MzEgYjExZDk3M2FiZWNhY2JiZGMwY2Q4NTM3NDk2MmI3ZTdjOGQ4YjM0NiByZWxlYXNlMjMtbWFpbnQKKzM0NDMyIGMxMmQ0ZjE4NTNiYzAwMmIzZDYzMDc5MjJiMzdiZjA5ZDE1MWNhOTUgbGVnYWN5LXRydW5rCiszNDQzMyAwN2EwYTA3MjY2NDk5NDY3MTBlOWFjNWRjZDFmZmJhMzFhZjFhYWZkIGxlZ2FjeS10cnVuaworMzQ0MzQgMTJlNTQ5Mjk1ZjdmNWRmZmMyNDE5YzU4MmI4NWUxN2U3ZDllZjY1YiByZWxlYXNlMjMtbWFpbnQKKzM0NDM1IGEyOGE4MzAwMzFhOWFiMzIyZWY5NWExY2JjNDk0MGYxMTM2NDg0YjQgbGVnYWN5LXRydW5rCiszNDQzNiA3ZGZkZjllOGQ5NWQzNzAxMTA4NzdhNmY3Y2ZhOGIzZDc5NzQzZDViIGxlZ2FjeS10cnVuaworMzQ0MzcgMmJjNzliM2E5NTNkZmQ4N2VhNDhhNDA4OGFkMTdmMzUyZGRhNDE3NiBsZWdhY3ktdHJ1bmsKKzM0NDM4IGY4MGQ4Mzc3ODQwZjJlZDUxMzBlMjI5OWQ2NmNiMGY2MmY1NmZlYzIgbGVnYWN5LXRydW5rCiszNDQzOSA2NTFmYzhkOThkOTliNTBmN2Q5YWFlZDdiNWNhN2I2Y2NlYTNiNWNhIGxlZ2FjeS10cnVuaworMzQ0NDAgNmYxNWU3M2I1OWYyZTNhMDNmMzE3ODc0NTM1NWNmN2VkMjY4ZjU5NCByZWxlYXNlMjMtbWFpbnQKKzM0NDQxIDk1ZGY2MDBhYjliZGViNTFjMTAxODliM2ExZmFhN2ExODBhNTk4ZDAgbGVnYWN5LXRydW5rCiszNDQ0MiBlODdkNmQ3NmUzNjU3NWMxMjk1MGQ3YmQ3YTYyZGNiNzA4ZDZiODc1IHJlbGVhc2UyMy1tYWludAorMzQ0NDMgMTAyNGM1YmY3ZmVlOTEyOTQxNTkxOTJjY2UzYzFhN2VmMmE5MmNiMiByZWxlYXNlMjMtbWFpbnQKKzM0NDQ0IGFkNTgyMjk3NzE1MmZlNzM2MjA0NWRiNzY5NDM5ZDA4M2Q4NDNkYmEgbGVnYWN5LXRydW5rCiszNDQ0NSA5NzdlZmFhODYzNGU2MWY0YjllODYyNTFiOTczYzE4NDg2ZDJiYzhjIGxlZ2FjeS10cnVuaworMzQ0NDYgYjEwOGM0NDJhMzc0NDE1NGIxN2RlOGM3NjI3Y2FlNzljMjZmNjJiZCBsZWdhY3ktdHJ1bmsKKzM0NDQ3IDBlYTQxMDQ4YjJkNDc1MjU4ODgwMmU3OThhNDY3MGExZGM4MGUyZjggbGVnYWN5LXRydW5rCiszNDQ0OCBmMGRhMGNhZDVjZDUxZjQ3ZmZhM2NmYTUyNjZmMzczYTgzOTQ5NmZlIGxlZ2FjeS10cnVuaworMzQ0NDkgNDRmOTgwMDIxODFmYjI5MDY5MzJmODdiYWNlZjEzNWY0ZjE4NzM0MiBsZWdhY3ktdHJ1bmsKKzM0NDUwIDk0NTVkZWZmMWM3YzBlZjllMDJlZTM0Yzc4ZTVkM2I1ZTFjN2NhZDYgbGVnYWN5LXRydW5rCiszNDQ1MSA5MTZmNzgyZWQ2ZDUwYzZiZjkwMjhlZjg1ZTIzOTc3OTY5ZGM1MTA5IHJlbGVhc2UyMy1tYWludAorMzQ0NTIgNDI0NDUxNzI5MjhmMWZhZjUxYWNhMTVjOGE0NDVmZTZjM2ZlYzIxNSBsZWdhY3ktdHJ1bmsKKzM0NDUzIDBlODA3N2NiM2RkNWExNjdiZjcyODVhZjMyNTJmM2EyOTFjMzFmMWUgcmVsZWFzZTIzLW1haW50CiszNDQ1NCAzOGIwYjdkNDE5MzZiMTdmZmYyZjA5NGEwNDVlNTdkZDNlMDlhYThlIGxlZ2FjeS10cnVuaworMzQ0NTUgOTAzYjMxZDc3MjFhMWQ1NmMwMGM3MzkwYzMxNDdhMTcyNTE2NDE1NCBsZWdhY3ktdHJ1bmsKKzM0NDU2IDM4Yjk0YzA1Yjg1YjkyZTc2YzE5Y2Q2ZjExNjEzZWU0MGU1OTJlNjAgbGVnYWN5LXRydW5rCiszNDQ1NyA0OTRkNWNmMGJiZTNlMjExMzY0MjM1MmUzYmQ2NWJhOWQyNDVlMTVlIGxlZ2FjeS10cnVuaworMzQ0NTggYmM4ZjIyYzUzNDJjYTM3Y2U0ZjJmZGJmMTg5MTNjMDYzODU5MTMzMCBsZWdhY3ktdHJ1bmsKKzM0NDU5IGE4MTBiYWI4NWZiYzRkMGE0YWVkYmUyNGNiNjM4NjIwNTIxNGU1NTUgbGVnYWN5LXRydW5rCiszNDQ2MCBmODc0MjQzZWUzOWJhMjZlNzFjODMxZTJmNWVkOGFkMjljMTQwODUyIHJlbGVhc2UyMy1tYWludAorMzQ0NjEgMDAxMjA5YjgxOGE2N2M5MTkxZDBjODU2NTIwNTAxMjY3ZjcyYzBkNyBsZWdhY3ktdHJ1bmsKKzM0NDYyIGRiZTc4ODIyM2NlOTY4ZWY1ZWM5NmZlM2E2ODAyMmRlOWRkNmI1ODkgcmVsZWFzZTIzLW1haW50CiszNDQ2MyAwYzYyYzFhYzk2ODRkYjMxNzg1NzhhNTNlZTk0N2FlNDU2YzYyNDgzIHJlbGVhc2UyMy1tYWludAorMzQ0NjQgNzdkNTMwOGJlZGFlMTE0NGI0OWM3YjllYmVmZTBjN2NhM2RlOGE0NCByZWxlYXNlMjMtbWFpbnQKKzM0NDY1IDYyNDhkZDVkMTkyYTgwNWRjYjk2NGI1OTJmMzgwNzQwOWQ3N2QxZjUgcmVsZWFzZTIzLW1haW50CiszNDQ2NiBmYWUzNDM1NzYxYWY5ZjU4OWRlYjk0ODBlNjE2ODljYmU5ODc3MmM5IHJlbGVhc2UyMy1tYWludAorMzQ0NjcgMWQ5MmVjZGYyYmIxNGNkOTE0Y2M2MGNmNjhjYWZiM2RkM2M5YjQ2MiBsZWdhY3ktdHJ1bmsKKzM0NDY4IDZmZGRlOTZhNzIyMjdhMmM2ZTU4MDhkYTc2ZDE0MWE2NmRiOTUxMWUgcmVsZWFzZTIzLW1haW50CiszNDQ2OSBkNzcwZGMyNjQyMTJkZTdjZTU2YjlhMWJiMGIyMmUwYTExYmJlMzgyIGxlZ2FjeS10cnVuaworMzQ0NzAgNjkxNGI1ZTIwNzZmMjI0Yjc3ZGE1YzJjNTlmNTI3NTZkZWJkZGFmNyBsZWdhY3ktdHJ1bmsKKzM0NDcxIDhiMmVhZGZiOGYwY2RkYzMyYmRkYTk5Njg3YmU0NjZmZmYwMGYyYzcgbGVnYWN5LXRydW5rCiszNDQ3MiA0ZDc5ZTg0OTBjNzZlNmU2OTQ4Y2I5Zjc5NDhiMDZlMDAyNDlmYzJlIGxlZ2FjeS10cnVuaworMzQ0NzMgYjY5MDJjMGE3NTc4MmVkYmNlOTc1ZWRhMjJmMWEwZTk4OGViODAzZiBsZWdhY3ktdHJ1bmsKKzM0NDc0IGUwZWM2NDRmNWIzNmM0NWUzYTVjZmU5ZWQwYzkzYTQxYzdmNDRjNDkgbGVnYWN5LXRydW5rCiszNDQ3NSAyNmJjMDE5NDRhZThlYzllNDQxZGUzM2IyOTVhMGZmODdiNzVmMTJkIHJlbGVhc2UyMy1tYWludAorMzQ0NzYgZjc3MmQzNDAzY2E3ZDI0ODQyZjMyOWUwZDQzYmY0YmE3MDZmYWQ0OSBsZWdhY3ktdHJ1bmsKKzM0NDc3IGEwNTQ1ZTMyZGFlNzg4NDEzYWE3ZGFmYTFhZmU4NzA3MWI4Nzc4YTkgcmVsZWFzZTIzLW1haW50CiszNDQ3OCAwZmUzMDcxMGRhODA2MGIwOGZmNjM5YTA1ZTRmNDk1MTc4M2Y1OWU3IGxlZ2FjeS10cnVuaworMzQ0NzkgOGZiYjA2MjNiODU3OGQ5NjliYjM4OWY3YTY1ZjhjMGFjODQ2NmY2MiBsZWdhY3ktdHJ1bmsKKzM0NDgwIDQ4YjljYzUxNzQyYjliZjNlOTdjNDJiMzlmNjk5MDkzMGNmZDgzNmYgbGVnYWN5LXRydW5rCiszNDQ4MSBiOTQ4ZTc3NWE3OWVlMGJjNDI1YjZmZTY3NTE4NDZiMTcyNWY2MjE4IGxlZ2FjeS10cnVuaworMzQ0ODIgZmUzZjU1OTIzMDVkY2Y0ZjYxZjQzMGNhMmRhOTJmMGE3OWViYmYxMSBsZWdhY3ktdHJ1bmsKKzM0NDgzIDk4MmUzZTQwYmYxZTU4NjQ5NDY5NDdmZWQ2MmQ4NDY5YzIxYTQ3ZjAgcmVsZWFzZTIzLW1haW50CiszNDQ4NCA3OTBlZDVjNTk5YzNmNDJmYWRiZjRhMjAxMWYzODFjZTUwMGRjZDIyIGxlZ2FjeS10cnVuaworMzQ0ODUgMjc5NzM2OTkwYTE0YmUzNGU3ZWY3MWE3MzQ5MGYzZjZiMzgzZDBkOCBsZWdhY3ktdHJ1bmsKKzM0NDg2IDJiYzk1ZDQ5ZmM3YTYwZjk5ZmZiMmM5ZGFiYWNiYzAyY2I5Y2FkMGMgcmVsZWFzZTIzLW1haW50CiszNDQ4NyBlMDg0MWI1Y2YyZmQxYzFiZThkMDIwYjZiNWE0NjFjNGMyYjFkYjBkIGxlZ2FjeS10cnVuaworMzQ0ODggYTY4NzlkMTczM2Q3YmMyZDM0NzJiODkwYTg0YzIyNTY0ZGFhYmYzNCBsZWdhY3ktdHJ1bmsKKzM0NDg5IDg5N2FmY2FjYmEwMDcyZDdhYTE3NzljNDM1MTFlNDVlMmJiMWMyZTEgbGVnYWN5LXRydW5rCiszNDQ5MCA5NWZkNTU1NDVjYWMyNjk4NDE2ZTZmMWZjMWM0ZGYzMGZlYmJiNzdiIGxlZ2FjeS10cnVuaworMzQ0OTEgMmQ5ODcxMGYyNzJlY2U2YmQwNmM2ZmIxYzExOGQ5NDVkZjhiYzU1OSBsZWdhY3ktdHJ1bmsKKzM0NDkyIDA2Mjg1N2Y2OTI3Zjc5M2IxZjI0Yzg2NDdhOWY1ODM1Yzc2Y2Q4NTYgcmVsZWFzZTIzLW1haW50CiszNDQ5MyBkZjlkOGY3ZTRjOWMzNTMwMDgwNzIwNDdkMWE1NzIwOGQxZmRiOTU5IGxlZ2FjeS10cnVuaworMzQ0OTQgNjViYmZkYTI0NmM5MzA4YzVmYTQxMjc1YzIzNjgxNjI4ZGFkYzNjNyByZWxlYXNlMjMtbWFpbnQKKzM0NDk1IDNlM2Q1Mzk2M2M4ODgxYjA3YzkyOTc2ZjliYTVlNDZlN2FiYjIzMTggbGVnYWN5LXRydW5rCiszNDQ5NiBlZWUwN2YzMGVmMDY4YzEwYzkzYmEzMGFjMzFjZjExYjc4ZTZhYjc5IGxlZ2FjeS10cnVuaworMzQ0OTcgZjJlNjFkOTkwOTVlNzMxNmY0ZjNiMjExOWNlMGY4YjExYzRiZTIzZiByZWxlYXNlMjMtbWFpbnQKKzM0NDk4IDc0NzQ3ZjYyZjI4NmE4NjFiYTFlYzVkNWI3Zjc0OTdlNGY5ODhhN2MgbGVnYWN5LXRydW5rCiszNDQ5OSBmNTFkYzkwMjZlNGRmOWJlZWNlYjA1OGVlNWI5ODg3MWM1YmQ1ODI1IGxlZ2FjeS10cnVuaworMzQ1MDAgNDgzM2E5Y2QzNzdlZjFmYWQxYmE2MDc2Njg2ZWU4ZDQ2ZDcwNTBjMiByZWxlYXNlMjMtbWFpbnQKKzM0NTAxIDM3Mjg1YTAzNDZjMTRjZWFjMjlhNjUxY2MwNTc1OWUzNmE3OTVlNWMgbGVnYWN5LXRydW5rCiszNDUwMiBkOTk2ZTJkY2JkM2E3ZTU3ZmVhN2FiNTJkNTUyYTkwM2JhMjQwM2ZjIGxlZ2FjeS10cnVuaworMzQ1MDMgMjI1ZDg0OGE1Zjk2OGM4OGQ5NmNmNzc1YTgxMGRjY2Q5ZjAzZWQ0YyBsZWdhY3ktdHJ1bmsKKzM0NTA0IGVhMDU4NTA0MTA0Y2Q3MjZkMDhjMGU3YThhYmZlYzFlODMxMWY5ZWUgbGVnYWN5LXRydW5rCiszNDUwNSBjMmFlOTFhODdhNDhhYzY1OTkzYWE0NWRjOTYyZWFhYjE4YzAxMDVmIGxlZ2FjeS10cnVuaworMzQ1MDYgODRmZjEzYmNjNzUwMmYwYjA3MWY4NmE1YWRhZTIwYWU4ZTZlZjYzMyBsZWdhY3ktdHJ1bmsKKzM0NTA3IGE2MDA4YjcwYzkzOTM0Yjc4ZTU3NTRmY2MyYjZiYWQ0YzQ5MmM3MmYgcmVsZWFzZTIzLW1haW50CiszNDUwOCA0YzlhNjdjZjI4MzNhOWZlZjE3MWQyNzRkZTdhMTU2YTZmZTQ3ODMyIGxlZ2FjeS10cnVuaworMzQ1MDkgN2JiZWU5OTQyMmEwMmVjNzdmNzU5YjFjNTE2NWUxZTEwYjkxMDU0OCByZWxlYXNlMjMtbWFpbnQKKzM0NTEwIGFjOTg1ZDc3NjY1MDE3MTA5MGVmYzY2NmE4ZGU3MmVjN2YyMGMyNTkgbGVnYWN5LXRydW5rCiszNDUxMSA0MTM5YjQ1YWNmZWQwMTdjZTc1NjFlN2Q2NjM1YWI5OWNhMzdjNTdkIGxlZ2FjeS10cnVuaworMzQ1MTIgOWRhNTM3MTY3Yjc0OTdiZmYzZjVlMmRlMDYzOTc3MjQyODFmMTc3MyByZWxlYXNlMjMtbWFpbnQKKzM0NTEzIDhlYjg5ODgxNGZiOTE3NDQ5Y2VkY2I0NzgxNTIzZDFjMTg0NjIyNTAgbGVnYWN5LXRydW5rCiszNDUxNCA3ZTkzMTQ5MjZkYmUyY2M1YjU4NmY1NTJjZmIxOWMyZGM0ZjQwMjA0IGxlZ2FjeS10cnVuaworMzQ1MTUgN2VkZTc3MmYwM2QzYmMxYjc0Njk0Y2EzZTk3NDZkZDFiMGIwMjU3NiBsZWdhY3ktdHJ1bmsKKzM0NTE2IDAzNGFlNDlmOWI3YWVhZjkxMzBlNTczZTc2YzYzNzU3OTIxYzBjNGUgcmVsZWFzZTIzLW1haW50CiszNDUxNyBhZjQ0M2Q4MjBhNTA2NzcyYzdhOTBjMmNhOTQ3YzljNWY1NTVmNWE2IGxlZ2FjeS10cnVuaworMzQ1MTggYzQyYzQwMDM0NTM2Y2M5YzI2ZjEyMDVjZmVkNDhkNjc5OTg2NTMzYSBsZWdhY3ktdHJ1bmsKKzM0NTE5IGI0Yjk0NWM1ZGE0ZDc0NWEzZTUxMGJhMGJkZmIwYjhiNDc4NTljMTggbGVnYWN5LXRydW5rCiszNDUyMCBhZWNiYmEwMjk0YmI1MDYzNzhlYjRiZTgwYjg4MDRhMWRhYjFmZmY4IGxlZ2FjeS10cnVuaworMzQ1MjEgYWM4Yzc3MTZhODVkYWZiZjJiNjc4Y2VmMzYzODBiZTYwZjhkYmQ0NCBsZWdhY3ktdHJ1bmsKKzM0NTIyIDZhODdlZDYzOTY3YzI1OWY4NDA3ZGVjMjBjYmY4MTFmOWZlOGYxZWYgbGVnYWN5LXRydW5rCiszNDUyMyA2MzExMThiOWFlYzYyYWRjNDY5NmZjNDdlYTg4ODY3OTVkZjYyZjAxIGxlZ2FjeS10cnVuaworMzQ1MjQgN2JhNDNlZmQwY2ViMzJhNDk4NjdlZDY2OGU4ZjU4OGRiYTk5ZDE0ZCByZWxlYXNlMjMtbWFpbnQKKzM0NTI1IDgzMmYzYTk4OTA1OGE2ZmM0Zjg4ODQ3ZWI0NDk0OTAxNjA4MWIyYTkgbGVnYWN5LXRydW5rCiszNDUyNiA4ZGI2NGFiZjg1NmY4YzQ0YTc1ZWI1OTkxYTdlYmVkZDBjZTZkNmY5IHJlbGVhc2UyMy1tYWludAorMzQ1MjcgMmNiYTBkZTcwZGY2MmJlYjg1YzY4NzA2YTMyZTM5OGVhOThmNmY1MiBsZWdhY3ktdHJ1bmsKKzM0NTI4IDFmYmZlOWRjMGJhOGI5MmFjMWNlYzhmOTBhOTJlZmExZWIyY2I4YzYgbGVnYWN5LXRydW5rCiszNDUyOSA3ODYzZWJjZmYxMjFmMTU3NjM4OWNiYWE4ODQwNjI0NWFjZTE3Nzc1IGxlZ2FjeS10cnVuaworMzQ1MzAgYTBkMjk3ODU2MmQ1ZTEyZjk1MjNlMWEzZTczZjgzNDY3NThmMjIzOCBsZWdhY3ktdHJ1bmsKKzM0NTMxIDU2NTI4NDlmYmUyOTYwMjExZTQ1MzA2OTdhMjUwMGRkNjZhMmEyYTEgcmVsZWFzZTIyLW1haW50CiszNDUzMiBjODA0MWIwZWViM2NiMzJiNjU4Nzg5YzdmODFiODQwZDViNDQ5YmQ5IHJlbGVhc2UyMy1tYWludAorMzQ1MzMgMDdlN2EwMjA2MWQ4N2M1NzRlNDAxNjk0OGVjMGYwZTE0NjBkYjdlYiBsZWdhY3ktdHJ1bmsKKzM0NTM0IDE1MTAyNDRiZWI1ZTBlNjgzZWRkMWQzOTRmOTlmNDZlZmY5MDdlMzYgbGVnYWN5LXRydW5rCiszNDUzNSA0NGU5YWJkMDdlYjMxZTI3MzZjZjA5ODA1ZjMxNzM1ZDU2ZGM1NTc3IHJlbGVhc2UyMy1tYWludAorMzQ1MzYgOWQ4YWNkYjU4ZjljMzg4OTJmMDE3NmZkNTJjOWVkYzIwZjhmNGM1OCBsZWdhY3ktdHJ1bmsKKzM0NTM3IDUyOGNjMGZkZGE0MWNkMWYzY2I5MDQ1MjQ1ZWZhYjBiYjEwZmE3NTUgcmVsZWFzZTIzLW1haW50CiszNDUzOCBlYzFhNGEyOWQyNWRhNDU4OGMxMzEwYmY0MjFhNTdmNjIzNDYxYjc4IGxlZ2FjeS10cnVuaworMzQ1MzkgOGNkNjkxYjczODQ1MjcyY2RhMjEwYmY4YWU2ZDIyY2RmNmU1ZTlhNyBsZWdhY3ktdHJ1bmsKKzM0NTQwIDk4Yzg1NzZiOGRhN2QyNDAwMmQ4MDc2MDAwNWVmYzMxNmViMDNkZjkgbGVnYWN5LXRydW5rCiszNDU0MSA2NDIyYTM5NTAwNDAxYmY3N2Q5OTgwZTFkOTJhMGM3MDJhMmIwODNkIHJlbGVhc2UyMi1tYWludAorMzQ1NDIgZDE1MzNjYTc4ZDhjY2E4NWMxY2VmOGZjOGE3ODUwY2U2YThlYzc3ZiByZWxlYXNlMjMtbWFpbnQKKzM0NTQzIGZhYzhjNjNjNzgzODFhYjZmMDRkYWY3M2Y2YjBmMzdmYTViZGI2YWMgbGVnYWN5LXRydW5rCiszNDU0NCBiNWY2NGJlNWIyMWZkY2VlN2Q2ZTg4ODhhNmI4YTQ2MzY0MGZjNGI2IHJlbGVhc2UyMy1tYWludAorMzQ1NDUgZTU5YWI3MDhiYmIwY2E4YmNmYjdkYWQ5NDZjZTY3MTI3ZmFhOGIzMCBsZWdhY3ktdHJ1bmsKKzM0NTQ2IDk4MzNhYTViZGYzODdjODNjYmFlMTc0MjI5YjA4ZGFhMDcyMjIyZmYgbGVnYWN5LXRydW5rCiszNDU0NyBjYmJlM2Y4YmRlZjZmMjgzYWU4YjAzODQwMGY0ODAxYmVjNjU3NjRhIHJlbGVhc2UyMy1tYWludAorMzQ1NDggODI3ZDAxZGY2MWE3MTZhOGMzM2QxMGUzMTExN2QyOTdiNjUzMDEwMyByZWxlYXNlMjMtbWFpbnQKKzM0NTQ5IDg5ZGMwNjlhYWQyYzc5Mzc3YTdjMTAwZWUxNDRjNGMxNDdmNzZmMjYgcmVsZWFzZTIzLW1haW50CiszNDU1MCAzY2Q5MjA2ZGZiNzkyOTA2NDQ1ZjlkODQ0NWE3M2Q4ZmYwN2U1NjhkIHJlbGVhc2UyMy1tYWludAorMzQ1NTEgZDZjMDlhOWQ3MjQxZDZlNjA1ZGRkMDIzYTM0OGQ0ZTZlZjM0NGQwNyByZWxlYXNlMjMtbWFpbnQKKzM0NTUyIDU2MjE0M2MxYzdhZWRhZGY1ODQwYjAxYWRkMjMzNDhhMjU0MGJjM2IgbGVnYWN5LXRydW5rCiszNDU1MyA1MjJhM2Q3ZTBhOTYyMjlkY2FhZWIyNGEwN2MyMjAxYmFjMmJhNTViIGxlZ2FjeS10cnVuaworMzQ1NTQgZTY3NmM5NWU0ODQ0ODcwZTVlNWE1ZTY4Zjc5ODVkOWNiZjVjZDA5NyBsZWdhY3ktdHJ1bmsKKzM0NTU1IDE5YmIxYjJmYjIzMzhkZjFkMDc2OWI5ZGE4NjU4YTgwOTY4MTg1MTMgbGVnYWN5LXRydW5rCiszNDU1NiBmZWVjNDRmMTllY2M3OGRjYjg5MjBhMWM2ZjUwYmE4MDA4MzU4YjZjIGxlZ2FjeS10cnVuaworMzQ1NTcgZmVmNmZkZWM1MjkyNTIzZjBjODhkOTAyN2JiOTg4NzhkOWEwZjUwYSByZWxlYXNlMjMtbWFpbnQKKzM0NTU4IGE5OTc2MTRiMzVkYzk3NWMzODU2Y2ViMmI0ZDQ2MzM3MjY1NzZlNGQgcmVsZWFzZTIzLW1haW50CiszNDU1OSBmZTlhNWEyZGQyYzE1MTRkZTYyM2NlZmUyMjcwODczYzVkZGM0NGRhIHJlbGVhc2UyMy1tYWludAorMzQ1NjAgMDhjMDJhMjY1ZGJkMGRkOWExNTEwZTAwNjE4ZTA0M2UzNjdiMzNkNiByZWxlYXNlMjMtbWFpbnQKKzM0NTYxIDRlNTZmYmE5OGYxZTQ1MDhiNmZlMjZiNjAyNDM5ZGJmMThiN2NlMjAgcmVsZWFzZTIzLW1haW50CiszNDU2MiA1N2Y3NDNmYTMyMDdlMDlhNTYzMDhmZTdjNjc2MmEwYmFiODkzODRmIHJlbGVhc2UyMy1tYWludAorMzQ1NjMgM2JlNDNhZjk5MmE2ZDcyYjljNmRjZmNhZTExYjhmNTZkZGViY2RkMCByZWxlYXNlMjMtbWFpbnQKKzM0NTY0IGU1ZDIyMWY4ZDQxMGIzNzFkZGM2MTgzOWRkOTVlYjRiNDJjMGJlZTAgcmVsZWFzZTIzLW1haW50CiszNDU2NSA5MzFhNThmMjdlYmIwODVmZTM5ZTkzNzdjZTg0NmI1ZGQxY2I2M2JjIGxlZ2FjeS10cnVuaworMzQ1NjYgMjYyODIzYTEyY2E3NTMzMjgwNWUzZDk0MjBjNTk5NDVhZDBjY2NhNCBsZWdhY3ktdHJ1bmsKKzM0NTY3IGVkMDU4YmRhZDJhZGY2ZTJkNzM2NjJiOThmNTgxODg1OGEyM2E4YWUgbGVnYWN5LXRydW5rCiszNDU2OCBkY2FlNjJkMzU4ODQ5MzQ3MmY1NTFjNmUyYTlhNDk5MWNiYTVkNDcxIHJlbGVhc2UyMy1icmFuY2gKKzM0NTY5IDA4MGRmMGVkYjBhNGJjYWM0MTc4Nzg4NjU4NWM5ZDk0OTZlNDFiYzMgcmVsZWFzZTIzLW1haW50CiszNDU3MCBhZjczMTg0NmZmNzI4MjdjMzA1YTY4ZTExNWUxMDQ1MDA0OWVlNWU0IHJlbGVhc2UyMy1tYWludAorMzQ1NzEgOGE3NWY5YmE5YmFiYjEwMGE5YzAyNmM2Y2RlZDI3MTc4YjNjNzAxYiBsZWdhY3ktdHJ1bmsKKzM0NTcyIDRlMTlhMmZmMzc2YTA1ZjlkNDQ1YmZiNmI0YTZiMDZjYjljNWFhMDQgcmVsZWFzZTIzLW1haW50CiszNDU3MyBhZGU5N2I2MDUzNTI0NWY3NzZlZjJlYTE1OWM0NWJlOGI2MzUwNzI2IHJlbGVhc2UyMy1tYWludAorMzQ1NzQgNzEzNWM3Y2E5ODQyYjBkY2YwYWUxMjAxZDhlMWRhMmY1NGQ1Mjc0MCByZWxlYXNlMjMtbWFpbnQKKzM0NTc1IDc3NmE3NzE1MDYyMGMyOTNlZThiZTNjYWQwY2UzYjc1NTMzNTUwZDQgcmVsZWFzZTIzLW1haW50CiszNDU3NiBjMzFlYWRiNjk3NzkxNGVlNDg5ZmE0MDhmMDc3YTY0MzMzYTFlY2VmIHJlbGVhc2UyMy1tYWludAorMzQ1NzcgOWY1ZGQzMDJiZDkxNTMzOGZlODY2ODk1NzdiOTU5ZTFjMmU3MmYwOCByZWxlYXNlMjMtbWFpbnQKKzM0NTc4IDgyMGQxZDA0M2QzYWNjZjRmNjJhMTM4ZTkwMzdmZWQ3YzU4MWZmYmIgcmVsZWFzZTIzLW1haW50CiszNDU3OSBjODlmZDdlYWY4NzU0NzY4ODI1MTA4OGRjYmVhYzI3MWQxYmNkODY3IGxlZ2FjeS10cnVuaworMzQ1ODAgZDQ1Zjg5ODFmZGVhOTFmYzhlMjI5ZTdhMjgwNzQ5MjEyNmY0NmRiYSBsZWdhY3ktdHJ1bmsKKzM0NTgxIDA3MGM4OWVkYTgwYmRiNTQzNWNjN2UyMGQwNWY1ZmM1YWUxYjBhMzQgcmVsZWFzZTIzLW1haW50CiszNDU4MiA2NzYwNmY5YzJkMTEzZGRlMTc3M2I4NGU2MGE1YzU0MzhlM2Y4MDQyIHJlbGVhc2UyMy1tYWludAorMzQ1ODMgNDFjNGUxNDNlNmU2ZTE4ZTQxMzFhMWVkODk1OGFjNDQ4MWE1M2U3MSBsZWdhY3ktdHJ1bmsKKzM0NTg0IGZlNWNlYTUxYTNmZmZmZjAyOWMyNjU2YzgyYTZmZDRkN2RhOTA3NGEgcmVsZWFzZTIzLW1haW50CiszNDU4NSAwNGNhNGQxZjc1MWYyYThhMDI1MmViMTZjOTI1ZTNkNmE1ZmIwNzU0IGxlZ2FjeS10cnVuaworMzQ1ODYgZGE1MDU2YTNiMTUyODQxY2QxNjU5NjA4MGQ0ZDQ3MGM0M2U4N2ViNCByZWxlYXNlMjMtbWFpbnQKKzM0NTg3IDBhY2I5NWFkMTlkYzg2N2ZiYzU5ZjViZWM5MjIwYmVjNWMwOGUzZmUgbGVnYWN5LXRydW5rCiszNDU4OCBlNDY4YjI0NTFkNTRiMDUxMzMyN2UzYjQ5ZjYxNGM2ZWM3ZmVlYjI5IGxlZ2FjeS10cnVuaworMzQ1ODkgOWQ3YjdlZTA0NDcwZTE5ZTBhYTYwYjJmNzAzNDU3ZDc5ZDBhMjA0ZSBsZWdhY3ktdHJ1bmsKKzM0NTkwIGU3MDkxZDU3NTRhZWMwMTU0ZWI4ZTk0NWE0MjU0NmIwZGIwMjY4NzcgcmVsZWFzZTIzLW1haW50CiszNDU5MSAxZGIwZGU0Yzg0NTQzMjNiZmIwODc1NTZlMGNjMzgyMWZlOGY3ZDJhIHJlbGVhc2UyMi1tYWludAorMzQ1OTIgNjgyZDFiNjdjN2I1NTI0Nzg3MjUxM2FmMTljNjdiMWUyZGNkN2VkNyBsZWdhY3ktdHJ1bmsKKzM0NTkzIDJhY2QyOGJkNGQwZjFmZTYxNGUzMTBmMjZmN2FjNDM5MTI4ZjdmODkgbGVnYWN5LXRydW5rCiszNDU5NCBlMmE5YTdmZWYxOGEzM2Y4MGQ0YWU3MWM5NzEwZTFhMmVjMDg5NmI2IGxlZ2FjeS10cnVuaworMzQ1OTUgM2ZhOTUzOGFjNDk2NzI3ZDAyMGYwZTkzMzBiODkwOWUxN2M5ZDkxMCBsZWdhY3ktdHJ1bmsKKzM0NTk2IGYwMTYxMzI3YTkwMjY3ODQxMGQ5ZjkxMGIwZTI0YWIxNjNkNWZkOTIgcmVsZWFzZTIzLW1haW50CiszNDU5NyA0ZWQ0MGIzZjg4MDIzNWU3NWNhZjk3YTBlMGFmOWQ2NThmOWNlOTdkIGxlZ2FjeS10cnVuaworMzQ1OTggZDMzODk4M2QwNzE5NDdkNjkxN2NlOWJlNDdhYWY5Y2EzYjQ3NTNjYiBsZWdhY3ktdHJ1bmsKKzM0NTk5IDJlNDk3ODQwYzQ1ODgwZDVkMDIyM2YxZjQ2NzM0Y2E3YWI0MmRmZjEgbGVnYWN5LXRydW5rCiszNDYwMCA3MmQ3MGRjYzRhZjJjN2Y3MzIwNTU3YmEwNjFiMmUxZjBhODlhOWQ5IGxlZ2FjeS10cnVuaworMzQ2MDEgMmYwZTYwZDQyMzNhNjY1YmUyZjAxZmE1MTA0Y2IwZDE0YmU3ZWY4NSBsZWdhY3ktdHJ1bmsKKzM0NjAyIGNiZDkzY2YzMmVmZmVhZTlkNzYzZDRhNjkyZWU1ZWVhYTU5Zjg4ZjAgbGVnYWN5LXRydW5rCiszNDYwMyBlNjE0MDgzYWIyMGM4ZjFkMmNjMzk5YTExMjI5OWU1MmM2ZDE1Mzg0IGxlZ2FjeS10cnVuaworMzQ2MDQgZTQ4YzYxZmEyZjk4M2UxZTBkMjY2ZDJhOGEyZTJjYTdiYjUwYjVmMyBsZWdhY3ktdHJ1bmsKKzM0NjA1IDNhZTgyOTI4YjExMzFjYmIxMDVhZjNhZTg5OTkwMjM3YWM5MDMyYWIgbGVnYWN5LXRydW5rCiszNDYwNiA3ZGI3NzhjYjdlMDhhNDQ4ZDNlYWY3ZjgzNDQ2ZWM2ODBiOGQxMTFlIGxlZ2FjeS10cnVuaworMzQ2MDcgY2VlYzY5ZDI0MGYwMTllYmI3N2IwYWVlMjBmODE2MDg3ZWY4ZmQwYiBsZWdhY3ktdHJ1bmsKKzM0NjA4IDE5OTdhMTRmNmIwODhlMWE2NTFlMWZkYjhjM2NhYzdmNWYxYmZjMzYgbGVnYWN5LXRydW5rCiszNDYwOSA4OWVjZmEyNTQ1MjgzYjE3ZmYxOTcwYWJhYWZkNTVmMmVjYjI0MjlhIGxlZ2FjeS10cnVuaworMzQ2MTAgZjA4YTVlOTVjMzdjZjNkYjcyNmQ5YmRkYTliMGJiNjcxZTk2MWMyNCBsZWdhY3ktdHJ1bmsKKzM0NjExIDFlNjg2M2RkZDg0YjllODNlN2IzYTE3NTcxY2ViNGU2ZWU5OWM5M2UgbGVnYWN5LXRydW5rCiszNDYxMiA1NDM3MTM5MTk0OTllNjYxMzFkMzRkOTc2OGUyZmJkZGU0MTYwMWUyIGxlZ2FjeS10cnVuaworMzQ2MTMgMmVkMzY4MzM4NTNhYWNiYjRlZjlkYWNjNDIyZThhMzk3ZTRkMzFhOSByZWxlYXNlMjMtbWFpbnQKKzM0NjE0IGEwYThmMTU0MDFkYjBmYjEzNzRjOWIyYmEyMmViNzViZGQ4NjZjZDUgbGVnYWN5LXRydW5rCiszNDYxNSBjNWU1MjA4Y2RiYjcyMGUwMzgyNTEzZmY2YzdiNmY1ZTc0M2FlYmQ4IGxlZ2FjeS10cnVuaworMzQ2MTYgMzdjNzc2M2ZhODNkZmE2NDNmM2U3Y2MzYTM3MDQzOGIyMjE0YjYyNiBsZWdhY3ktdHJ1bmsKKzM0NjE3IDk2MTcwZjc1ZTNlOWZlZmQ4MmEzNWVkNTBmNTY2YjYzNmJiYjVkNzMgbGVnYWN5LXRydW5rCiszNDYxOCAzMDk2ZmFiMmExOWMwNTRiNTk0YmMyYjU2ODkzMzBkMTJlMTlhNTU4IGxlZ2FjeS10cnVuaworMzQ2MTkgODVmMzgzNjUxOGZlNWQxNjY5N2ZkMWYzZjg3Yjk0NWZlNmJlNzc4NCBsZWdhY3ktdHJ1bmsKKzM0NjIwIDYwMzcwNDBhMmNjZTQ3MTI0YzU1M2QxM2FmYzljZGY3MWMzNWJmNTAgcmVsZWFzZTIzLW1haW50CiszNDYyMSBiMTM2MzUzYWRkZTZhNmNmYTVmODI2NmFiMGM2NGE3OTVhNzQ0N2M5IGxlZ2FjeS10cnVuaworMzQ2MjIgNTEwYmQ3ZWVhOTI1ZmUxMGZjNzkyZDZmZWQ5YmI1YjFlNWViZDUyMSBsZWdhY3ktdHJ1bmsKKzM0NjIzIGQyNjE4MzllY2Y4N2NmODNlMjBlNGY5NzYzMTc5YjBiNjE2MzRhNWEgbGVnYWN5LXRydW5rCiszNDYyNCAzOWZhN2I4ZmNjMDc3YWNhNzE0ZjI4MDM4YjJiYzdmNTZhYTA2NGI0IGxlZ2FjeS10cnVuaworMzQ2MjUgM2Q5YjM2ZDZhYjg5OGIyYWEwOTE1ZGE1MTFlMmFmM2YxMDAzZjFiYyBsZWdhY3ktdHJ1bmsKKzM0NjI2IGNkNzYyNGIwMjVhMGZlODJlMmUzNmJmMmM3YzU1NWM3ZmZlNzdhZWIgcmVsZWFzZTIzLW1haW50CiszNDYyNyBlM2ViZDc0MGQxZWZiNDg2OGJmZmQxODNjNzUzYTQwYzk3MjBkMjFmIHJlbGVhc2UyMy1tYWludAorMzQ2MjggYTI5YTU4NWIwM2Q5NjBmMzExNGE5YjdlNDgwMmEwZjNkOWUyYTM0OCBsZWdhY3ktdHJ1bmsKKzM0NjI5IDQzMjBjY2E0ZWQ4NDM4Mzc3MjA5ODRhOWNiNmExYzk1YzRiOWI5N2QgbGVnYWN5LXRydW5rCiszNDYzMCBkNDMyZjgyYjk4NmZiZjFiNDdkMThiMWJiOGY1MzU5MTA4ZjY0MDc2IGxlZ2FjeS10cnVuaworMzQ2MzEgNTY3ZmEwNjQ5ZTgzNWU4MWNjNGViNjlmOTgzNDY2OTVlYTE4YmVhMyByZWxlYXNlMjMtbWFpbnQKKzM0NjMyIGY2NDhjN2YxZThiODU5OGIzMDIyYTgyODA2ZTUxMDZiNTBhMDJhZDUgbGVnYWN5LXRydW5rCiszNDYzMyA4MDgxNjQzYzM3M2ZmYmFlMjE1NjhlMDhiZjY3Yzc4NWVlMmIzMzcxIGxlZ2FjeS10cnVuaworMzQ2MzQgODE3MzNjN2E5NWM4ZGRlNjExZjA3MGQxM2JjNmMyNmZkMmQ5YmY0NSByZWxlYXNlMjMtbWFpbnQKKzM0NjM1IDEyYzIyZDZiMWVjMDY4YjAzYmNhNjdiNzNkYmVmMmMwZDVhZDI0MjMgbGVnYWN5LXRydW5rCiszNDYzNiA4YWE5MjM3ZjZkZDZhYTEwOGU0OWJjNzhlYjdkNmY1MTkyMjkyN2NiIGxlZ2FjeS10cnVuaworMzQ2MzcgYTE4MTk4ZjQ5NGY0NDc4ZGRlMjFiODMzOGU3YTkxYjYxMGY1MGM1NCByZWxlYXNlMjMtbWFpbnQKKzM0NjM4IDMyMTNhYWE4MmM3Yjc5NmIzYzlmYjFjMzM2YWMyZWIyMTQxODFhYjkgcmVsZWFzZTIzLW1haW50CiszNDYzOSAwNDY4ZjlkZGMwNjlkNmZmMGYzZmE3Njk2MzVkMzE1ZTZlMDQ4ZDg4IGxlZ2FjeS10cnVuaworMzQ2NDAgYTBlY2FlMzMzMmE4YjZiMWJkMzEwODFlYTI1OWEwMDM4YTAyZDM2NiBsZWdhY3ktdHJ1bmsKKzM0NjQxIDdhNmIxYzlmYjg5ZTU0MGVkY2U2Yzg0MmRhMGQ5M2YzNjUzN2M5ODAgcmVsZWFzZTIzLW1haW50CiszNDY0MiA4N2MwNDIyY2RlNzA4YzM2OGVhMjY2NDkwNjYzMTg3Y2VhNDRkMzA1IHJlbGVhc2UyMy1tYWludAorMzQ2NDMgNTI2NjgyNDU2YThkNWE2OTE3ZjExNjRkMDIxN2FmOTg5Yjg0OGMwZCBsZWdhY3ktdHJ1bmsKKzM0NjQ0IDk2NTRlNWYyNDczZTRmOTQ5NzAyMTIwZTljYjdkMzAwNzYzMWI4NDAgbGVnYWN5LXRydW5rCiszNDY0NSA1YzRjZmY4ZmE2ZWNmOTFjNGQ0OTkwZTdjNjI2YWRlYzcyMDM4NTU5IGxlZ2FjeS10cnVuaworMzQ2NDYgYzAwYjVmMTc5NjMzY2ViZWRlMDg4YTA5NDNiMmVjNDMyOWY4ZWNiMyByZWxlYXNlMjMtbWFpbnQKKzM0NjQ3IDU0ZmY2OGU5NzNlZWJhZTBkOTkwZTFiZTUzMDZiMzc0YjBmNDg0MmYgbGVnYWN5LXRydW5rCiszNDY0OCAyODcyMDBhZjk0NmZiN2JkNTE3MzM4ODlhODk1OGM2YWIwYzE1YmU4IGxlZ2FjeS10cnVuaworMzQ2NDkgZmE2ZThkNGY4OGM2NzgyODJlNzE2ZGUwZDU5NDM5ZjYyNTIwZjI0NSBsZWdhY3ktdHJ1bmsKKzM0NjUwIDdmNjk1YzU5ODI4NzNiOTFlYzdlNWQ0YjVhN2I4ZDJkMzg0M2NjM2UgbGVnYWN5LXRydW5rCiszNDY1MSAxOWZmOTcyNDM0YjNkMjYxYmZjM2MzM2M4ZDNmYjFiNzkzMmQwMDliIGxlZ2FjeS10cnVuaworMzQ2NTIgNGVmZmNiZjgwYjQ1YzZlNDBmNDUxNzgwZGU0MWNhOTQ0YTJjMDA2MyBsZWdhY3ktdHJ1bmsKKzM0NjUzIDVkMmIwZTkwNjJkNTMzN2QwNjk3OWIyMjEzMjNiNjMxMmQ4YzUzNzYgbGVnYWN5LXRydW5rCiszNDY1NCA4OTQxZjJlZTkwOTQ5ZjAzZTExNDU5MmI0YzEyOWM2M2UxOTk1MjQwIHJlbGVhc2UyMy1tYWludAorMzQ2NTUgNTFlYmY1NDc0ZjNkYzk4NGYxY2M4Y2E5YjA5NTlmZDlkMTdiYjYxZCBsZWdhY3ktdHJ1bmsKKzM0NjU2IDgxM2E2ZDljNTg4ODI5MDdhODk5MWY3MjA1Y2EzM2RkMWIzOWM0MTUgcmVsZWFzZTIzLW1haW50CiszNDY1NyBiMjQ5OTVhOTY2NGJkNTQ4NDBhZmYzODk0Y2MxZjVmODgzOTMyNDllIGxlZ2FjeS10cnVuaworMzQ2NTggYmYxMzE5NTgxZGM0NzlmOWNiYTBhMjAxN2Q2YmZkOGY2MmI3MjJkYSByZWxlYXNlMjMtbWFpbnQKKzM0NjU5IGNiN2Q1ZTIzZGJjNzdmMTA0MTQxZjYwZjA1ODZkOWM1MDRiNGQxZDMgbGVnYWN5LXRydW5rCiszNDY2MCA3MDE4ODBkMjY2ZWNjYjQ4MTMwNGNiYmU0NjdkNmQ3ODQ1NWQyYjVhIGxlZ2FjeS10cnVuaworMzQ2NjEgNmNhMGRiZDZjY2M5OGExOTZlZWJmN2E5ZDI2Y2I1MzM3ZTcxZWE4MiBsZWdhY3ktdHJ1bmsKKzM0NjYyIDYyNTE3Y2M0YzRlNzkyMDMwMWYyODVmMTk3MWIwOWQyNWM2OTljM2YgcmVsZWFzZTIzLW1haW50CiszNDY2MyA3YmU0NWY3YTcxOGYzNTY5NDQxMzRiMzBlZWM3YmM3MDBhM2RmNzhlIGxlZ2FjeS10cnVuaworMzQ2NjQgZjcyOWM0ZDUzMDQ4YWMyMjQzMjcyNWVlOWQ0M2YxODM5NjE2OTk3MiByZWxlYXNlMjMtbWFpbnQKKzM0NjY1IDVmNDlmYzIzMWI0Yzg4NWYxMDUwNTExZTYzNjBlYTg5ZDg1YTY2N2UgbGVnYWN5LXRydW5rCiszNDY2NiAyMzM4MmExMzRkNWFiNjFhODBkNThkOGJlOTRjZGE4MGRkMTFlMTJhIHJlbGVhc2UyMy1tYWludAorMzQ2NjcgMWRhMzlhNzVlZDM4NGE4YTEzZGE0OTM5OTczNzVkYTM1MTQzZTJiYSByZWxlYXNlMjMtbWFpbnQKKzM0NjY4IDM4ZTcyZjRmM2RmNWU5ODEwZWVmZmU4NWZmM2YyYTI2Njg1OWZlM2EgbGVnYWN5LXRydW5rCiszNDY2OSAxMTYzNmU3OTg3YjYzN2ZlYzFiYjZhMTRkYjk2ZTA5ODQ4ZTQ4YjU2IGxlZ2FjeS10cnVuaworMzQ2NzAgNDVmNzA3MjhkYmFjNDgwODBlNGFlMDU5ODE0ZTQ4YjIwOGExYTZmZSBsZWdhY3ktdHJ1bmsKKzM0NjcxIDMzMTM1NzFjNjU3NDNhOWVjNDNjYjk2YjJjODRlMTEzNTBjNmU0ZjggbGVnYWN5LXRydW5rCiszNDY3MiA4ZmEzYzU4NjlmNTFhN2I1ZWRiOGVmYzE1M2U2OWU4ZWZjZTgyNTBkIGxlZ2FjeS10cnVuaworMzQ2NzMgMDdkM2M4NjY4ZjhiNDcxYzhhYWUxYTJlNjA5YjRlMzQ4NjZmODM3YyBsZWdhY3ktdHJ1bmsKKzM0Njc0IDUzZDI4MTMzOTVmNGVmODA2OWU0NGQ4MTg3NDM4Y2UyMDcxZjNkNjcgcmVsZWFzZTIzLW1haW50CiszNDY3NSA3YWFhNDBiYzJiMTdjOTRkZjJjMDU3ZWRmMzgxM2ExMjdkYTIzMDRmIGxlZ2FjeS10cnVuaworMzQ2NzYgNDZiOWZkZDI3ZWMyMWZiZmE3ZGFiYWQzMGE3MjZiZmJmYzcwMDQ0MSBsZWdhY3ktdHJ1bmsKKzM0Njc3IDE5MDRkOGIwMzhiNjY4ZDllOThkYjZiZGJkNzQwZGUxNDZhMGQ4MjggbGVnYWN5LXRydW5rCiszNDY3OCA4YWZlY2QzNmZiOGUzNTE1NzcwM2Q0NDkwYzEzYjlkNDEzOGIwYzI0IGxlZ2FjeS10cnVuaworMzQ2NzkgMzE3ZmNjNWExODRkNDhiODk0OTU1YWVkNWU4ZGFlYzAxMDI0MWJkNSBsZWdhY3ktdHJ1bmsKKzM0NjgwIDIyMTA3YzVhMTc2ZTMxMzM4ZGI4NzI2MzY2YjVkNzU5NDM2ZjdiNjIgbGVnYWN5LXRydW5rCiszNDY4MSBmMTk2MjVmM2MxOThlZWY0YTAyNDMxZWRmZWZjMTYyNDZjM2NjNWFhIGxlZ2FjeS10cnVuaworMzQ2ODIgNWJjZTk1ODllZjBiMDM2YTk3MjE4Yjc4YzI1Y2M4MTQ3MGQ2ZjBiYiBsZWdhY3ktdHJ1bmsKKzM0NjgzIDRlZGFiYzI5NzZmNzNmYzUxMzI4YjI1NDdjZWYxMzI3MDE3NTAwNmMgbGVnYWN5LXRydW5rCiszNDY4NCBkZDZhNTEwYWUwZDljMDk5NDQzNDcwYjE3YzE0YmQ2OTRkN2ZhZDY4IGxlZ2FjeS10cnVuaworMzQ2ODUgM2MxYzgxZDY0MmUwODc3ZWM5MDA1NDlhMTlkMGQ3MmQ1Y2U0ODAxNiBsZWdhY3ktdHJ1bmsKKzM0Njg2IGI2YzEzOTU0NGMxNmQ2YWI3YTI0MTI1OGRjMTU0YWRiMDQ2N2YwOGEgbGVnYWN5LXRydW5rCiszNDY4NyBlNGY5ZTc0YmE1NmRjODU3Y2NhZjY4OTQzZDkyMzU4YjRhZWNhZDAxIGxlZ2FjeS10cnVuaworMzQ2ODggMTZjNjgyZTNlNTdmOWVmMjgwMjMzYzIxMjZkMjA0ZmQ1NzhmZGEwMiBsZWdhY3ktdHJ1bmsKKzM0Njg5IDRiMmM5ZTE0YjQ0NmI2NDZkZTkwYmU4YTYzM2UwZTI4YjliNGUzNDAgbGVnYWN5LXRydW5rCiszNDY5MCBjZTk2YmRjNmZiYjhkNDA5NmNjMmJkZDIwZWU5NzQxYjY0ZmI0MDk5IGxlZ2FjeS10cnVuaworMzQ2OTEgNTNlNGI3ZmUwOTY5YzE0NjkzMmZkYzkwM2UyMjY3YjdlZmNlYjdjNiBsZWdhY3ktdHJ1bmsKKzM0NjkyIGQxMmYwN2MxYzNhMDcwNzMwODExOTAzOTgyNWQ4MjcxOTJkNTY5MTkgbGVnYWN5LXRydW5rCiszNDY5MyA0Y2UzMGQ5YTFlMDQxOWJkZjkzZDlhOTZlZDdjNzJjMjQwNTM3YmU3IGxlZ2FjeS10cnVuaworMzQ2OTQgZWFkNGM2MTIxOWQwZjBjMTc2MWEyN2M3NjIwNzY1NjgzOTgyNGE4MCBsZWdhY3ktdHJ1bmsKKzM0Njk1IDdmZTIwMTgwMWMxNDk5Zjg4NTE1OGQ4Njk3NTQ0Y2EyNjk3M2VlNzAgbGVnYWN5LXRydW5rCiszNDY5NiA0YzgxNjAwODhiMzQ3NTRhZTcyYWFiYTM5MmUzZTNmNDFjNTNkMmM2IGxlZ2FjeS10cnVuaworMzQ2OTcgODZmZGY4ZmU3ZjE3MjBkMTA2MTViNWViYzVjNTFkYmQyMGFlNzFjMCBsZWdhY3ktdHJ1bmsKKzM0Njk4IDg5MGYzYzJjMTE4MzAwNTk3YjZiNzI1Njg0YmQ2M2IyN2NhMDE2YzkgbGVnYWN5LXRydW5rCiszNDY5OSBlYjA0MjY1ZmI2NWI4NmI2NjZhNGZkYTI1NDIyYzc2YjI3NTE2ZDJkIGxlZ2FjeS10cnVuaworMzQ3MDAgZTU0M2IzZjBkOTA2MDJlMjY1ZTJhY2M0YmY4YjFhNjUyMzJhYWY1MCBsZWdhY3ktdHJ1bmsKKzM0NzAxIDMzNGVkY2QxZTVhYzYxMjUyZjMwMGU4ZDgxYWU1ZDYwZjAyY2YyNzMgbGVnYWN5LXRydW5rCiszNDcwMiA4MzBlNWZmYzZkMjVjNzA0ZjhlZGEwYjk4NGVjYTU5ZDE4NjNiYmY0IGxlZ2FjeS10cnVuaworMzQ3MDMgZmRjOGE4OGE5YTVhNDM0NGU0YWJmNWQwOGVkOTE2ODA1N2QzZDljOCByZWxlYXNlMjMtbWFpbnQKKzM0NzA0IDk2MDAxYTcwYzUwNTdmMGI2ZjkxNTE1ODg1NWVhNDI3NTIzZmE3MGIgbGVnYWN5LXRydW5rCiszNDcwNSBkOTllMDIyOTY2Yzk0MzhjNTg4ZmM2ODI4NjBkOGNjYTRiNmZhNWM4IGxlZ2FjeS10cnVuaworMzQ3MDYgY2FhMWE0OGRhNGNjZGZjZjBiNmQxMGYzZTYzM2ZhZjliNmUxZjQ0YiBsZWdhY3ktdHJ1bmsKKzM0NzA3IDRmNjM4MmQyODA5ZGY0YWU4YzIzNjNmNzIzNGMwNmE3MmJiNjE4ZjcgbGVnYWN5LXRydW5rCiszNDcwOCA4MzI2ZjY0MjQ0YzI1YWJmYzdlYTVjMTBmYmMwNDgzMGM4YTgyMTc1IHJlbGVhc2UyMy1tYWludAorMzQ3MDkgMTRkMzIxNDY2YTA2OTJmMTQ5YzNjNWFmMzZmM2VjMDAxYzAzZTZiZCByZWxlYXNlMjMtbWFpbnQKKzM0NzEwIGQ0MDE3OTAxNzYzOTVkNTllYTU0MDZiMzhkZDhhMGE2Mjc0MDllODkgbGVnYWN5LXRydW5rCiszNDcxMSA1MmRlNTgwODdiMmYzYTQ1ZWNiY2ZkNTMxNTExNTQ5MmI3ZmFkMjg5IGxlZ2FjeS10cnVuaworMzQ3MTIgNjMyYjIyM2NiOGU4Mzg3ODhjOTM0MTM3ZGQ1NzkzOTI3YWZiMjQ3MCBsZWdhY3ktdHJ1bmsKKzM0NzEzIGQ0ODI2ZTA5N2EzZmViZjI4NGI4ZjI5YTViZWJkMDkxYmFkNzMyNTYgbGVnYWN5LXRydW5rCiszNDcxNCA5ZmM1MzQxZmE2OTU2YTgzM2JjYmEyNzQ4MmM4ODY1NTY2ZDE5OTRlIHJlbGVhc2UyMy1tYWludAorMzQ3MTUgZTBhNzVhNzU3MGI0MDI4OWY4YzU0ZjM4MmYwMWIwYTczODA0ZjhkMCBsZWdhY3ktdHJ1bmsKKzM0NzE2IDE4ZGYyMDNiOGU5ODU0ODJhNGViN2YzMGU5YzZlYTE5ZTNhYWZmNzIgbGVnYWN5LXRydW5rCiszNDcxNyA0ZGE5OWY3M2ExZGY4NGQxMjM2MmE4ZDI3ZmZmYzA4YTA2MmEzOGU1IHJlbGVhc2UyMy1tYWludAorMzQ3MTggMjJiZWQyZmRmZmVhNmI5NjU4NGEzMmQ5Njc0NmRmYmMwZTY3MWIwNSByZWxlYXNlMjMtbWFpbnQKKzM0NzE5IGQ5MDE1OGRmMzljNDUzMTJmZGZlMGFiNTA4ZDc2ZTZkODcyZTQxN2MgcmVsZWFzZTIzLW1haW50CiszNDcyMCA2MjJhNzZiYzAyMzc2OTM5YjBhYTc4NzkxZTg3MmJiOTVkMDJiY2Q0IGxlZ2FjeS10cnVuaworMzQ3MjEgMjc4OTc2YjE5ZGNjYTZmODQ3M2M4NGNmYjNjNTI0NjBkNjgzYTU4MSBsZWdhY3ktdHJ1bmsKKzM0NzIyIDViNzdiYzRkMjViMWI5ZGY1OWY3ZjkwYzBjNzdiOTUzNzg4Y2FiYmIgbGVnYWN5LXRydW5rCiszNDcyMyA0Njk2YzRiN2Y3OTJiMmE3YWZmM2EyODY0ZDUxNGEzN2I2OWU4OWNmIHJlbGVhc2UyMy1tYWludAorMzQ3MjQgMWZkODE4OTRjYjk3M2YyZmU0MjViZmJhNGQwNmVlYzg0YjM3MjgzYyBsZWdhY3ktdHJ1bmsKKzM0NzI1IDc1M2Q3MmJkMjE0YjJjNWQyZjg4NmIxNjUyNzMxNDQ0Nzg1M2ZiN2MgcmVsZWFzZTIzLW1haW50CiszNDcyNiA0MjI0ZDgwNzkxMWM0YTA5ZjAyZWNhMWEyNGRkZDk4NzZmMTM0OWIxIGxlZ2FjeS10cnVuaworMzQ3MjcgNzBmMzJmMGQ4ZWNmMDY1OWI1ZjFkY2FkOTRhNzg1ZmU4YzcxZjg3OCBsZWdhY3ktdHJ1bmsKKzM0NzI4IDJkZGIxY2JhMThkNjQzOTZkMjdhNDg5NTY5OWE4OGYzZWRmMWFlMGMgbGVnYWN5LXRydW5rCiszNDcyOSA5NjI4YmI1NGE5ZTA3NGNhMjJhMjg1NjgyMTJlMDdjZmU3YTkzMTUzIHJlbGVhc2UyMy1tYWludAorMzQ3MzAgNDZkZTNkYjlhNWRiNTM0NGIwZDFhYjA1MDgzMzgxM2Q3YzY0YmQ0OSBsZWdhY3ktdHJ1bmsKKzM0NzMxIDMyYzJjNzk5YzkyNDhlM2EzZDYwYTVhMWJkODc5MzA0MGU2NzhlZDUgYXN0LWJyYW5jaAorMzQ3MzIgMjcwZDU5ZTM0NmU2YWY4OTQ5N2FhYTgxYTEwZWUyMjM3ZDFiNDJlNiBsZWdhY3ktdHJ1bmsKKzM0NzMzIGM0MTFhNzYyZDVkZDZhMmVhNmY2YWVjZGZlOGZjZjQ3YzA5ZTRmOTcgbGVnYWN5LXRydW5rCiszNDczNCA4ZDQxMzU3OGViMWFjMGE4ZTYzOTcxZGU5MDJkNjFmMDdhYjIyYWNjIGxlZ2FjeS10cnVuaworMzQ3MzUgYTRiOTEzZjkzN2NkYzkxN2FjMTNkNjI2OWRmMTA5Yzk2MGExMjY2OSBsZWdhY3ktdHJ1bmsKKzM0NzM2IDE3YWE1MzAyZTA4YjIxN2QwNzUxZTU0NDY3YWRjYjVjNjUxOTU3ODEgcmVsZWFzZTIzLW1haW50CiszNDczNyBiY2M3ODczYzcwN2U1MmVhZmUxNWY4NmU1ZDYxMDE3MjkxZTI4N2RlIGxlZ2FjeS10cnVuaworMzQ3MzggYjJmZDdhZjE3MTg2OTA2ZjMzZTRkYjgxZjRkZGI0NjJmZWMwNTZiYSBsZWdhY3ktdHJ1bmsKKzM0NzM5IGQyZWFhNTNjZWFiZWUyYTNjY2NjN2RlZDAxYzY5MzdhZGUwNTkzZTYgbGVnYWN5LXRydW5rCiszNDc0MCAyMWExMGMzNjAwYjVjNGQ0NzkyNGI5OGNhODBlNTZiZGYzNzdlOWVhIGxlZ2FjeS10cnVuaworMzQ3NDEgODQ1ZjE5YjE0NWE4ZmEwZjJjZDRmMGYzNTk0YWY2ZTFlN2NjOGJhNyBsZWdhY3ktdHJ1bmsKKzM0NzQyIDg1Y2FiZTdiMjE2YjdiZDA1NTMxYTc0NzI0MjI4ZTI3ZGE2ZDgyMWMgbGVnYWN5LXRydW5rCiszNDc0MyAwYWM0MDlkZmYzOTA5MTU5YTk3MjY2MjM5NTIzNmZmZjk2ZmY0OWIzIGxlZ2FjeS10cnVuaworMzQ3NDQgMmI2YTEwZTA2NzI3MzhiZWEyZDYzNGZjYWZkOWYwYWIyZDI1YTFhNyBsZWdhY3ktdHJ1bmsKKzM0NzQ1IDAyNGI0Nzk5YTQxZDUyNTE3NDU1Y2U4NWZlYzg5MjRkZDQ2OWNiMDAgbGVnYWN5LXRydW5rCiszNDc0NiBiZjAzODk4NmNiOGZkZjEyNmZhZGY1MzU2ZTA4MWM3ZmJjMmYxNGE3IGxlZ2FjeS10cnVuaworMzQ3NDcgZjk2NzU4OWRmNzUxMjVhNzg5ODZlZjljZGQ1MTRhYmQ3Yzc0NzA1NSByZWxlYXNlMjMtbWFpbnQKKzM0NzQ4IGNlMDcxMThlZTVkMjc3ZGNkMzVmZGU2M2IzMDkyMGM0NzljYTYxOTQgbGVnYWN5LXRydW5rCiszNDc0OSA3YzU1ZWJlYzQ4ZjU3N2E1ZGJiYTgwYzVkNTZiZDYwZWIzYjU0NjdhIHJlbGVhc2UyMy1tYWludAorMzQ3NTAgZGExNTc4Y2ZhZTE4MmU1NGJiMjY2YjkwZjIwNWY1MTQ2YzM3MmNiYiByZWxlYXNlMjMtbWFpbnQKKzM0NzUxIDZkM2UwZTZkN2JlNjE1OTk4NDEyNWQ4NWI1NmIxNmNlMzM1MmVjMDEgbGVnYWN5LXRydW5rCiszNDc1MiA0YjZjN2U1Y2I4ODliMzNkODExZWM0MDNlZTg0MzhkMDEzZWU5Y2QzIGxlZ2FjeS10cnVuaworMzQ3NTMgMmMzYTc1YzU0ODMzNDliODRjZjM0MDgzOGFiOGMzZWI2NDNhOTg5MiBsZWdhY3ktdHJ1bmsKKzM0NzU0IGZhZGNhMTcxNjRjMDZjNjIyNDNiMzJlOGUwMzdhZTZhODZlZGI3OWIgcmVsZWFzZTIzLW1haW50CiszNDc1NSA0NGFiMjQyYzliOGNmNWFlZjVjODNkODM0OGQ2OTYwMzk3NTQzZWYxIGxlZ2FjeS10cnVuaworMzQ3NTYgMmQ2OTBhOTVlNGZkMWUwMWVhNDgxYTk2ZmQ4ZjZhOWZiNTcxYjU4NyByZWxlYXNlMjMtbWFpbnQKKzM0NzU3IGY3MWEyMTY3OTQzNmE1MTBjY2M0NjUyOTg4NTViYmZlZDhjOTk3MTYgcmVsZWFzZTIzLW1haW50CiszNDc1OCA2Y2YwOWJlMDQ5MWRlODZiZTgzMzY3ZjAzZWY3NTg3ZmYwOWM3ODNjIGxlZ2FjeS10cnVuaworMzQ3NTkgNDAwOWIzOTkyNjE2YTBkNjBjMzU4YTAyNWQ0ODVjODEwMzExYzQwZSByZWxlYXNlMjMtbWFpbnQKKzM0NzYwIDZmMDE3MDBjMTgwODk4ZGVjM2VkMTM3ZDYwNGYxYTcwY2ZkZTJiOTUgbGVnYWN5LXRydW5rCiszNDc2MSA5Yzg0NmMzZGY2ZjNlMDI0ZTBlYWFiNGRkYTViOWEzODhiYmVkZjRhIGxlZ2FjeS10cnVuaworMzQ3NjIgNzNkNTIxMzMwNWQzNzZkNTA0OWM4NDhkNThiMzdjMzEwZWZlMWZiNSBsZWdhY3ktdHJ1bmsKKzM0NzYzIDZkYzE5ZTQ4MzQ3YTBiNzhmMjZiNDQ3NmIyNmY5MjhjNmQ3YmNmMDggcmVsZWFzZTIzLW1haW50CiszNDc2NCBkZDU3MDdmNzE1MjZhY2U5NGJhODU1OGJhMWEwYmFmMDliZThiNWUyIGxlZ2FjeS10cnVuaworMzQ3NjUgMGZmNjkyNTliMDA1ZjQ3M2Y0Zjc5NTZiMjBlZDQwN2M1MTVlZTJjMSByZWxlYXNlMjMtbWFpbnQKKzM0NzY2IGZkODdjZTE4MTlmYTM3OGIyMjVkYjFhMTc2YjQwYTk4ZmQ0YmUwYzIgbGVnYWN5LXRydW5rCiszNDc2NyBkNTBlMjZmMjBmMTA4NGY5ZmRmMWY1MjZjMTljMWIwOTcwOTE0MTU1IHJlbGVhc2UyMy1tYWludAorMzQ3NjggZjVlYWI2MjgzMjg2NjRmYTgzMDM0YjdhNjA1NzdhOWRmZjJmYTBmMCByZWxlYXNlMjMtbWFpbnQKKzM0NzY5IDM1NDhmMjM0ODMxZTA5OWYxOTA1MTFiNzgyODY5ZjYxZGQzOTA2MzYgbGVnYWN5LXRydW5rCiszNDc3MCBkM2FlMzI0ZjZjODk1ZmEwYmZhOTBiYmMyMDQ0ODBlNzA5MjQ4M2UzIGxlZ2FjeS10cnVuaworMzQ3NzEgNDU2ZTI3NGY4NjAyNjI2NmMwNjFmZDY5NDJmZmY0YmMxODcyZTE4OSBsZWdhY3ktdHJ1bmsKKzM0NzcyIDVkZWE3M2RjOTY4Yjg0MjdkZjllMGU3YjE5MmI2YzA1ODNiNGI2MTYgbGVnYWN5LXRydW5rCiszNDc3MyAzZDFmMGRmNzVhODBjNmNiNWZkMmIwZjM4YWUzMTQ1OTdhODNjMTk1IGxlZ2FjeS10cnVuaworMzQ3NzQgMzgzMzhjOTcwZjdkMDc5OWQzNzllZTYxMTFhNDkyODAxM2Y1YjFiMiByZWxlYXNlMjMtbWFpbnQKKzM0Nzc1IDI1MTcxNzU2NmU5MTJmOGJmYWZlMjViMmE2MzA5OWJmOTQzZGFhMmYgbGVnYWN5LXRydW5rCiszNDc3NiBmNjk1ODkxNzljNTU5YzA1OGYxZWU1OTZlNTBjZjE3M2IxZjk0NTcxIGxlZ2FjeS10cnVuaworMzQ3NzcgYmY3ZGY0ODAxMmNiMmE2ODEzZGVkNDEzMjEyZGFiMTA4MWU4MmVjYSByZWxlYXNlMjMtbWFpbnQKKzM0Nzc4IDRlMTEyNTA1NjRjYmQzZjA2MzVhNGM5NDA5NGZlMDE0YjQ3NDMxYTYgYXN0LWJyYW5jaAorMzQ3NzkgZDZjN2U1NTk2MjQ3ZWIwODliNDMzMWY4ZmVmMDY3ODVlMmEzMThlMCByZWxlYXNlMjMtbWFpbnQKKzM0NzgwIDRhMzYxYmJiNTI3OGNhNTdlMmIzYzhiNzdhMWM4NDM2ZTBhMjc3OTQgYXN0LWJyYW5jaAorMzQ3ODEgZjBhMTk3ZGQyMTJkNTM5NDQyYmM3YTYwMDZjMDZjZGNlNjg3MDhjZSBhc3QtYnJhbmNoCiszNDc4MiBmMTQzM2QzYzY0NDdkNzdjNjY5NjNhZTlmMmVmYWJiODE1YTM3NTUyIGFzdC1icmFuY2gKKzM0NzgzIGIwYmNjYjlmYjcwYThiM2E1YzYzZjhkZGZkMTFjNTM3ZTExN2MyMzMgYXN0LWJyYW5jaAorMzQ3ODQgNjRkZGRhMjU1OTUyNGFkODEzYWMxMzZiM2EyOWM1ZWJkZTA3YjQwNyBsZWdhY3ktdHJ1bmsKKzM0Nzg1IDRlMzFjMjYxYTY2ODk1YzRkNDA2NmI5MTEwNmQzNmEyOGJkNzVmZjYgbGVnYWN5LXRydW5rCiszNDc4NiAwYWM5ODg3OGNjMzJiNWM4N2M3YTIyOTk1YTA3MjdiMzMxNDVkYmJlIGxlZ2FjeS10cnVuaworMzQ3ODcgZTA1ZmUxNzc1NTIwNjRlMzE5ODYxZDA3ODYwNmE1YzZhYzk4MTM3ZCBsZWdhY3ktdHJ1bmsKKzM0Nzg4IGViNTA5ZmM0N2YwNzUwODY4YWY5Y2Q2MTEwNTQyZGQxOGNjNTEyZDMgbGVnYWN5LXRydW5rCiszNDc4OSA0MWY0Y2U2YzRlNTA0ZTMyNDFkMmMyZGE2MjcxZWVmOWU5YWZlNDg5IGxlZ2FjeS10cnVuaworMzQ3OTAgYTEwMmRhOTE2NDBlMzQ2YTlmOWRmYzgyZjU5Yjc5MDA0MzJkM2NhNCBsZWdhY3ktdHJ1bmsKKzM0NzkxIDBlYzRkM2ViZDQzMzdmMWQ4ZTc5OGYwZTlmNzM0M2FmOTI5MzNhODUgbGVnYWN5LXRydW5rCiszNDc5MiA5MzE0YmUwYmJiNjQwMTliOGQ5N2JjNTk0ZTY4MTA2YmNmYzA2Y2Q4IHJlbGVhc2UyMy1tYWludAorMzQ3OTMgNWEwNjU4YzAwODc5YWEzNWYzM2M4YTQxODhiM2Q0YzVhMjkzNWIzYSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk0IDc4MzY5NGQ0ZDRjZjBjZmRkYmQyNDViZTMwYjhkNTdhYTg3YjVhYzkgcmVsZWFzZTIzLW1haW50CiszNDc5NSBkNDUxNGNlMTRiOTY3ZjdkOTY3OThhMzFmNThlMjVjYjY2M2E2ZTE5IHJlbGVhc2UyMy1tYWludAorMzQ3OTYgZGExNGQ4MDZlODljNzUyZjZhNzI5NGEzZTRhNjliYjA3NGVjNDY3MCByZWxlYXNlMjMtbWFpbnQKKzM0Nzk3IGRlMjg1NWIzZjQxMzZiZjFjYTBiNzdiMDI4ODViN2Q1NGM4YmExZTkgbGVnYWN5LXRydW5rCiszNDc5OCA0ODY5NWM4MzlkOThiM2EyNzJjNjA5MzEwNDk1ZWExMWU2MmE4NDZhIHJlbGVhc2UyMy1tYWludAorMzQ3OTkgNWI1MTVjYzkwYjVhNDNlZmU0MmY0NjMxMmI2YmFlMTBlZjAwOTNjNCBsZWdhY3ktdHJ1bmsKKzM0ODAwIGE1MmQ3NDk0OGRkNGY0ZTNmYjhlZjExMmJiZjU0MmVjZDFkZjI0OWIgcmVsZWFzZTIzLW1haW50CiszNDgwMSAyYTZmYzRkMjYxZjhlNjhkYWI5NDhhN2Q2NjVmZGE1MmQ0ZmFjODgxIGxlZ2FjeS10cnVuaworMzQ4MDIgMmJhOWE4Njk2NTYwMmQ4ZTA1NGUwZjJkMWM4NDQyZmEyZGMzMGJiMiBsZWdhY3ktdHJ1bmsKKzM0ODAzIDYyMjk5MWNjMWUzYzU4YjUxYzU1MjFhMzJhODE5Y2Q5ZTFiZWFkODkgbGVnYWN5LXRydW5rCiszNDgwNCAzNjA2MmQ2NDVmYmI5NTYzNWViZWI1MDE1ODI3ZjJhZTZkN2NmZDdiIGxlZ2FjeS10cnVuaworMzQ4MDUgNmViNDczZDY4MDQyNGM1NDQ4NmY5YzEzZmUzNzgzNGY2ZjM0OWQzOSByZWxlYXNlMjMtbWFpbnQKKzM0ODA2IDFmMDk4MTlmNTA4YjI1ZDQ1NGNiN2ZlZmFhMTgzMGIzZGEzYzczNTcgbGVnYWN5LXRydW5rCiszNDgwNyBkMDBmMDEyMDc4MzdiNjcyMjVmNGU5YWJiODI5ODhlYTg0MjRjODgyIHJlbGVhc2UyMy1tYWludAorMzQ4MDggZTMwMjVmZTcwZDhiZDA0ZjcyMmU3Mzc5MmY4OGM0ZGQ2ZGVmNzhmNyBsZWdhY3ktdHJ1bmsKKzM0ODA5IGEyZjZjNmE2N2YyNDE0MDk5Y2M3MDE5M2JiNjAzOGY3NWI2MDc2ZjIgbGVnYWN5LXRydW5rCiszNDgxMCBiMjRkNmE3MWIwMWYxMjY1OThmMDZlZjA0NzgyMjEwYjllNjYzM2I1IGxlZ2FjeS10cnVuaworMzQ4MTEgOGRkMTU5Mjc5NTc2YTU3NDdlM2YyY2U3ZDU3ZDgxYjhlZDk5ZWFhYSBsZWdhY3ktdHJ1bmsKKzM0ODEyIDg3MDYxNWJmYWVkZmI5ZTRiMmU5YzNmZDU5NDZiYzliZjhjOGNlNGYgbGVnYWN5LXRydW5rCiszNDgxMyAyZjc5NmM3NTk2ZWNhMjNmMThjMTk0ZDhhNmMxMDdkOTNmNmNhZGJjIGxlZ2FjeS10cnVuaworMzQ4MTQgMGE3ZjFhNTNjNzczYjRhYzFmNWM4ZDUyYjIzNzVhMWU1NDQ4ODhkMyBsZWdhY3ktdHJ1bmsKKzM0ODE1IDM4NjFlYjQ2N2MyOWUwN2JhNmIzNjY5NzYwZGRmNzJjYjMzYjQ0OGMgbGVnYWN5LXRydW5rCiszNDgxNiBkZTM5MWU5ZDcwZWExNjdmMWU4MWJhNTdhMGFiM2M2ODY3NzMxYWQwIGxlZ2FjeS10cnVuaworMzQ4MTcgZjJlNzY0NmY3NzYzMTYxYmJkZGRmMjc2ZDc0N2Y1NmZmNmY0ZjMxMCBsZWdhY3ktdHJ1bmsKKzM0ODE4IDljYTlkMzE4YWY3OGI3ZDVmODNmOTU2MzdlYTE5ZDliYjJkZDYyMjcgbGVnYWN5LXRydW5rCiszNDgxOSAzMDM4MmFiMDZjZDFjMmMwYjkwNDI2M2QwZjQwNDQwYzdhMWY4NjY4IHJlbGVhc2UyMy1tYWludAorMzQ4MjAgZDM1Zjg3OTljZjEyMjIwNWRmNWY4NDY2YTNlYjMyMDYyYjc4NmNiNiBsZWdhY3ktdHJ1bmsKKzM0ODIxIDAzZjQzZDYxOWZmNGI4YTU1MGE2ZDFlYzMzODZhYTVmN2I4YjgyOTcgbGVnYWN5LXRydW5rCiszNDgyMiBiZGY2MGJlYTQxNzdhNzgwNDJjMGYwOTIzMTgzOGM0NGMyZGM3YTkzIHJlbGVhc2UyMy1tYWludAorMzQ4MjMgNzU5MjE0ZjFlYzY5MTA3MTQxZjlhMDA0MjQ5NmZjNjJkZWI1Yzc1OCByZWxlYXNlMjMtbWFpbnQKKzM0ODI0IDExM2VhZmU4ODQ4ZmY1ODcxNDFjMzdhMmI1YWRmMTA3YzQyZTFlZmYgcmVsZWFzZTIzLW1haW50CiszNDgyNSA2MWI3MGViOGQxNjBiMzE5NTE4MDRmM2I1YzY0NjVjNjk0ZTk4MDU4IHJlbGVhc2UyMy1tYWludAorMzQ4MjYgODZjZjJiODEwZjNhMmJlNzdiNDA4OGUxYTk2NzNhMWYwNmQxZjZjNiBsZWdhY3ktdHJ1bmsKKzM0ODI3IGMyM2E4NjIxNWQ5ZjdlMTc1MGY5YjVhZTRkZWQ0ZTg2MDA3YmVlMjIgcmVsZWFzZTIzLW1haW50CiszNDgyOCAyMDE0ZjljNjM2ZmJlNzU2YTk0NGFlMzdkODA0YjQxYTA2YTY0NzhhIHJlbGVhc2UyMy1tYWludAorMzQ4MjkgMGE2M2Q0ZDAxNWNmOTUwZjE4OGZiY2RmOTFiYTU1NDU3ZDQ2OGFjYyByZWxlYXNlMjMtbWFpbnQKKzM0ODMwIDkxNWFhMGU2OTQ4NTk4OWU3N2U5NDYwODk0YjBjNzM3Y2RhZDZmZTcgcmVsZWFzZTIzLW1haW50CiszNDgzMSBhMDk2ZDdiOGVjOGEyOWUxMjAzNmE1OGU1NzJiNjZjNzc5NGQ0YTFkIHJlbGVhc2UyMy1tYWludAorMzQ4MzIgOTcyZTdmYTFkNTk4NmE1YjE3NzE2NmQzYTE1YTg5MWRlNmU5ZGFhOSByZWxlYXNlMjMtbWFpbnQKKzM0ODMzIDQ1Y2IyODRiODRkM2FiMjY1YWE2ZjI0NDdhOWU3ZmFjNmQ1NGJhMjAgcmVsZWFzZTIzLW1haW50CiszNDgzNCBkNzYzMGNlN2FhOWZkNWIxMjM1YTY1MmYzOTljYTdmOTNmMGE1YWQwIGxlZ2FjeS10cnVuaworMzQ4MzUgOWQ2MjY2ODhjYTdiY2ViMDYyYmFmMWM0Y2FlMWI5YTE0ZjY1MTY1ZSByZWxlYXNlMjMtbWFpbnQKKzM0ODM2IDc0MDNlMzhhMmYxMDdjOWE5YTgyNGVlNjc3YzBhYTc5MzQ1M2M1Y2EgcmVsZWFzZTIzLW1haW50CiszNDgzNiBkMjFkNGJhMmY5NzM0NjdkMzA3OTRhM2QyYWM0OTM2NTgxODBlNTAzIHJlbGVhc2UyMy1tYWludAorMzQ4MzggNTY2MzUxOWNmMDZmZjQzZmQyNDJlNGM1ZjViMzk3NTRiNjRmYTc5MiByZWxlYXNlMjMtbWFpbnQKKzM0ODM5IGU5NmUzOWNkMmQxNDJiMWZjM2I1ODk4MTg4NTVjMDk0ZGQ4ZjI1OWIgbGVnYWN5LXRydW5rCiszNDg0MCBiYTg4NmFlMzIyZWMxNjlmZGZkM2YxZGJkNDRjMDliYmU5ZDIzYWYzIHJlbGVhc2UyMy1tYWludAorMzQ4NDEgNjBlNWQ4YjdlOTY0ZTZjYTkxNGJjZmU0YjhlYmUwNjAyN2Q3NjQ4MSBsZWdhY3ktdHJ1bmsKKzM0ODQyIDgzNWI3OWVhYzgxMmNlOTA4ZjNiNjBmZGZhMzQ4YjYxODM4OWJiZGQgcmVsZWFzZTIzLW1haW50CiszNDg0MyA4ZTgwZjU1MWIwZTk2ODFjNDViY2Y4NWM4YmI4ZDg4MzFhOGUwYmE5IHJlbGVhc2UyMy1tYWludAorMzQ4NDQgMzhiZWNjZjRhMGJiZjc3NzBmMGVkNWI4YjllNDU5YmM4MTdhM2VlYSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ1IGI3N2ZkNDY5ZWUzNTQxZmE4ZjdiZjlkODBhMGNhYjViMWExNWNkYzUgcmVsZWFzZTIzLW1haW50CiszNDg0NiA2OWRlNWFlZTFmYmI1MTBkMWQ1NmU0ZWExZmEwYWQxOTVmOWQzY2IzIGxlZ2FjeS10cnVuaworMzQ4NDcgN2M4ZGM2NDA0MjNhNTE0OGUxN2IzNDEzN2E3NjVjNDEzNmQ2OGQzNSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ4IDUzNTJhNmViYWQ5YWM0MDA5YzMwYmM5ZmU4NDcxY2MyMjFhYWFiMjYgbGVnYWN5LXRydW5rCiszNDg0OSAxN2U2ZTk4MjljN2U1MGJmMTYyNzI5OWU3ODAzODcyMTRkNWEwMDQ0IHJlbGVhc2UyMy1tYWludAorMzQ4NTAgZjEwOGRiNTllYjc2YTI2YjdhMTVhOTQyNzZjMTA3ZTQwOGUyOWI4NyByZWxlYXNlMjMtbWFpbnQKKzM0ODUxIGIwMjhmZDU0MTk0MTk4YTllMzEyMzQ1M2RmYjVkMjE3Y2RhOGRiMDYgcmVsZWFzZTIzLW1haW50CiszNDg1MiA5Mzk1Y2Q5MmQyY2Q3ZTViNjk5NmZjM2JhYjY5NDZkNDVmNzZiNDVkIGxlZ2FjeS10cnVuaworMzQ4NTMgYmU5ZWY5YjkyZDYxMzhjMGI3MGZjN2QwMTk0MzJlNmMzOWM5ZDllOSBsZWdhY3ktdHJ1bmsKKzM0ODU0IDIxYWViOTgzMmMxZDMyODA0MmM0ZmY2Y2QyZGExMTdjOTNlOWU2ODggbGVnYWN5LXRydW5rCiszNDg1NSA0MTVlZjU1MjFhOGFmZDg1Mjk4ZjAzNWJiZjZiMTZjMmUwMTU3ODQyIGxlZ2FjeS10cnVuaworMzQ4NTYgYzk1M2ZkYjUxY2RkN2VmODgxM2FiMjBiOTU4ZDVlZDBjNzBmMDY5MCBsZWdhY3ktdHJ1bmsKKzM0ODU3IGM2ZjE2NTA0YzhjMmY1YWRlOTYzNzkwOTdlMWE5YzY1N2U4ODk0MzAgbGVnYWN5LXRydW5rCiszNDg1OCA3NWI2M2U1ZjAzZjIxMjE2MjUxYjQxZGQ4YzQ3M2U0OWMxZDU4ZjhkIGxlZ2FjeS10cnVuaworMzQ4NTkgODlkMjZlMDNjNjUzMDJiMDE1ZWEzNTE4NGJmYjIzOWQ5NDYxYWU1MCBsZWdhY3ktdHJ1bmsKKzM0ODYwIGZkZTc0ZmFkZjc4MGM5YTgxMzliY2MxZmVlZjNjNjgzYzJiMWJkZDggbGVnYWN5LXRydW5rCiszNDg2MSA3YWFkMjRjYWRkYjVkMGE4Zjk1OTZkZDJkOTIzNzVjYWYyMjE3NzQwIGxlZ2FjeS10cnVuaworMzQ4NjIgNTA4OGE4MjM0MTE3ZWNkZTJjNjQ0MzEyZjNiYzc3MjhlZDE3NjAyYSBsZWdhY3ktdHJ1bmsKKzM0ODYzIGViMTI3ZTQwMWM2NDQ5ZDM3MDEzMDFkZGZlMTFhMjE2NWFmNzliNGQgbGVnYWN5LXRydW5rCiszNDg2NCA5N2ViZDFiMmY0Njg1NTdkMDNiM2FkYTI2ODQxZTk0OTdlZDY1NzcyIGxlZ2FjeS10cnVuaworMzQ4NjUgZTlmM2I4MjJjZTAyZWM5ODZjZGY1Mjk0MjIwNDRjZmE1YTU0MjljMSByZWxlYXNlMjMtbWFpbnQKKzM0ODY2IDllNzUwNzUzMDEwYWQ4MmNiYmI2ZDMyZDAxZWJkN2ZhOTIwMDE5MzcgcmVsZWFzZTIzLW1haW50CiszNDg2NyAwNTJlNGM1NzIyNjE1ZTFmNDk5M2Y0YjU0M2U3ZGQyNTA2ZmQ0Y2E0IHJlbGVhc2UyMy1tYWludAorMzQ4NjggMDE3MDQ4NTY1OTM2YjgzMmFiNWM0OTE2YmY3ZjJjYzFjNDJjNjk4YSByZWxlYXNlMjMtbWFpbnQKKzM0ODY5IGQzNjIyNzNkNDY4YmQxM2U4MTM1YjdmOTdkMWY3OTA2YmE5NmRhZjAgbGVnYWN5LXRydW5rCiszNDg3MCA5ZWQ3NTI1NTk0Nzc3ZWU0ZmQ1NDAzZGZjNDdiOTI5Njc3N2Y4YjIwIGxlZ2FjeS10cnVuaworMzQ4NzEgMzgxYWUzMjZlZTY1NTVlNzRkZjc0NDdmYjBiOTcyOTg5MjVkYjIyYyByZWxlYXNlMjMtbWFpbnQKKzM0ODcyIGRjZjViZTBmMGExZjlhYTA1ODM0OTU1ZmQxODVhMDI5NjY5YmM2ZjYgcmVsZWFzZTIzLW1haW50CiszNDg3MyA4NTE4YzQ2ODE3NzFmNzA0MDQyZmI4ODM5ZDY1MGE2MjY2NjI2MjE2IGxlZ2FjeS10cnVuaworMzQ4NzQgOTRjMWJkN2E1NWFlZjU0NDhmYzY5NWYyOGM1M2YxZTU2ODBkNzM4NCByZWxlYXNlMjMtbWFpbnQKKzM0ODc1IDYwYmMxMWUzMDA2ODJiYTRhZDA5MWU0ZDRhNDkwNGMyYjNlODkxMjQgbGVnYWN5LXRydW5rCiszNDg3NiA2MTRhZDUzODhjOWRlMDAwMzhhNTQxNzM5YTFkZGE1OTYwNGZhZjIwIGxlZ2FjeS10cnVuaworMzQ4NzcgZDFkMjhjY2E0MmMxOTdmMWViNzdjOTA1NWFkMmE3YzIzN2MxYjcxMiByZWxlYXNlMjMtbWFpbnQKKzM0ODc4IDFkZGM4NmI1ODA0MDA2MmJjNWNkOWY3Y2FkZTBiYWFlMWI0Y2E4YjIgbGVnYWN5LXRydW5rCiszNDg3OSAyNmVmYThhNTM5MjU5NDNiM2ZiYmZiYjQzNDBiOWM3OTBiYjhhNzA4IGxlZ2FjeS10cnVuaworMzQ4ODAgOTRkZmY0YTAyY2EzMDY3N2I2Y2QwMzhkZjUzM2ViNWQ4ZjIxZjhkZiBsZWdhY3ktdHJ1bmsKKzM0ODgxIDlmOGMwNTU4NzIxM2UxZDg4NTE1YzBmNWEzZjUzMDE1YWMwNTU4MjIgcmVsZWFzZTIzLW1haW50CiszNDg4MiA0ZWI1ZjBjYWIwOWU0YWQxZTY1YzlkMTcxZDQzYjc1MDMwYWRmODc5IGxlZ2FjeS10cnVuaworMzQ4ODMgZTFmMWZiNzQ0NTFiOWMwZDAxNjY2MTFlZTY4NjVkOTE0ZmYzNDM0MyBsZWdhY3ktdHJ1bmsKKzM0ODg0IDJhMDc4MmNjMTUxZjg0MDQxN2NmMTU5MmI4NzY5YjdmNmVmZTQ4NWEgbGVnYWN5LXRydW5rCiszNDg4NSA0YTEyZDkxYWY4YzNmOTVmMTQ4Nzg5NmFhMzA3YjExNDRmM2IxMjEzIGxlZ2FjeS10cnVuaworMzQ4ODYgYzcyN2FkMDAzZmRiYWNkMmJlOGY0ZGM0MGEzOTY5NjFkZGI3ODcxOCBsZWdhY3ktdHJ1bmsKKzM0ODg3IDAzNjczNzczMzA4NDQ3ZGM5MzZkZTY5OWU1ZThiYmEyMzU4ZDllZWUgbGVnYWN5LXRydW5rCiszNDg4OCBhYWIzNjEyZjJjMzUyYjBhMWE0OTA4MWUwYjI2YmEwYzkwM2U2MGU4IGxlZ2FjeS10cnVuaworMzQ4ODkgODg1ZGJmMTU3OGJjYjA2YmM1YWUxMjNhZDI2ZmUwMjZlNjMxZDlkOCBsZWdhY3ktdHJ1bmsKKzM0ODkwIDA2M2I3ZDIyNWU4YWI4NDc2YjZkMjdmMzc4M2E0YmI1MGQ1ZDNlOTggbGVnYWN5LXRydW5rCiszNDg5MSA0NWNhYmU5Y2Q5YzkyNjFmMjc3ZmI3ODhmMTg2MGZjNzc1ZWVmYjE3IGxlZ2FjeS10cnVuaworMzQ4OTIgNDg3MDJmMTljY2ZiM2ViMGJmNTRiN2Q2ZDlhZTNkYjMzMjkxM2RhNSBsZWdhY3ktdHJ1bmsKKzM0ODkzIDRjYzE2NjE1YjA3MjQ1ZmE0NzE1ZTgwNjczYzQ3ZTc4OTliMjE1MzkgcmVsZWFzZTIzLW1haW50CiszNDg5NCBjMjJlZWM4MDcyMjQ3NDJkM2IxMzgzNzhjY2NjMzhhZWJjODQ1MGI0IGxlZ2FjeS10cnVuaworMzQ4OTUgY2E4YTY5OTY5ZjAzOGY1MDYxNjIwNWI5YWU1MzgzMjM1NTU5Y2Q1NCBsZWdhY3ktdHJ1bmsKKzM0ODk2IGU0ZmI2MTY0MTU4Yzc4NGQ5M2RjNzhlMzI0NTI2MmE3NjJlYmQ1MmYgbGVnYWN5LXRydW5rCiszNDg5NyBjOWJiYzk2N2FjOWY2MDlmOTFkNjg3NTc2ZjdiNmFlMzFlYjQ1ZGVjIGxlZ2FjeS10cnVuaworMzQ4OTggODhlODBhMDQzMjhhMzg0N2NlMGZhOTVkNWI5OGM2ZTYyMzMxMjI3NiBsZWdhY3ktdHJ1bmsKKzM0ODk5IDVjYzFhNDAwYTAyYzMxMWE0ZjFjNTk4OTc4Y2RmNWYzZWFmMzdjMzQgbGVnYWN5LXRydW5rCiszNDkwMCAzODExNDBlN2U5ZDc3MTVjZmU3MWZmN2I0OWY1MTdjZmJkN2U0MjM1IGxlZ2FjeS10cnVuaworMzQ5MDEgZWVhYTM2NjA2NzFjYjZhZDY5NmMwM2JiYzM4YjI4YzM5NTFlOGE1ZSBsZWdhY3ktdHJ1bmsKKzM0OTAyIDFiYmMyMDg1ZjIxM2IwYmE2NDEyODViOWYxYTZhNTVkMTZmYTMwZGYgbGVnYWN5LXRydW5rCiszNDkwMyAyMWEyN2MyMWEyYzU3YWUzYjY3MGYxZjc5MTU0ZDk2ODZjOWQ1MDQ5IGxlZ2FjeS10cnVuaworMzQ5MDQgNDk0MmEwYjYzYzhjY2YxZmM1ZDExZTdjYmM5N2I2YzE3YzBjZTYyMCBsZWdhY3ktdHJ1bmsKKzM0OTA1IGU1ZDk3YWI3MTBhMjI1ZDNlNGNmMTZiOGNmZjllM2NkZTcwYzk2NWYgbGVnYWN5LXRydW5rCiszNDkwNiBjOTk2MjBjZDljNjU1Mjk1OWRmY2Q4NjQ5NTlmMGM0ODQ1Mzk1NzVmIGxlZ2FjeS10cnVuaworMzQ5MDcgMTBjNGNjMzUyZDEzYTViZTQ4MjYwOGYzZTE1OWZiZTdjZDIyZDEyNyBsZWdhY3ktdHJ1bmsKKzM0OTA4IDQ3ZWFhMzhiMjljYmY2NTU3OWUwYmM5ZTc5NjUxMzliNTBlZjhhNjggbGVnYWN5LXRydW5rCiszNDkwOSA3NGMxNTQ3MDhiMGNhMTljYWRmNzY1YzA1MTE4ODNiNjViYzljNjAzIGxlZ2FjeS10cnVuaworMzQ5MTAgZjI4OTgyMDYwYjIwYzA4NjNhMDU0OWZlNGYxNWEyZTg3OTk4NTNiOCBsZWdhY3ktdHJ1bmsKKzM0OTExIGYyZTBkNjMwY2YzOWZlNzRiYjc1ZTJmZTJlNGVjZDZhMTM2ZjUzNTAgbGVnYWN5LXRydW5rCiszNDkxMiBiMmEwY2QyZTlkNTUxMTI4ZDNkYjhhZmIzZDU1Y2ExYzA2ZWIyZDg4IGxlZ2FjeS10cnVuaworMzQ5MTMgYzg1YTllYzU3OTZjZDA5Yzk2YWI2MWY1M2NhYTUyMTg2MGRiNGRhMyBsZWdhY3ktdHJ1bmsKKzM0OTE0IDI5MmFkMTM1Y2VmMTQ2MjBhYjRiOGY1MDhjYzBjYTI2MjZmNzliNzcgbGVnYWN5LXRydW5rCiszNDkxNSBlNDY4MmFmN2FlYTllYzUyZDMyMjk4NmUyZmY5ZjgzNGJmMGEzNjlkIGxlZ2FjeS10cnVuaworMzQ5MTYgMjJmMDlhYjBiYWU5NDZiYmFlYmJlOTM4OTJjMzRmNjE2ZjNhNzNhNSBsZWdhY3ktdHJ1bmsKKzM0OTE3IDFhZDBkZjg3ZWQ2YzJlNTAwODgyNTQwNTAzNTljYWYyMDdjZDM0NzAgcmVsZWFzZTIzLW1haW50CiszNDkxOCA3YTZkMDgxNGI1NjFlZDFhZGZlZmUxOTg3YzljZDA0YzY3YmY4Mjg2IHJlbGVhc2UyMy1tYWludAorMzQ5MTkgMjI5YmI5ZjJlOTZmM2ZlMTVhMTFhNTFlM2JlNDU1YWE1NDdjYTcxYSByZWxlYXNlMjMtbWFpbnQKKzM0OTIwIGQ2Y2VhMjI4ZmIyNTliYTkyMzUyMGJiZjM0MjkzYjY5ZGJiZWZkZTEgcmVsZWFzZTIzLW1haW50CiszNDkyMSA2ODQ1Njk3MzUzYTMxNTI1YThhMDI1MTgwZWU4MTY0ZjI1M2FhNjEwIHJlbGVhc2UyMy1tYWludAorMzQ5MjIgZDk4MTE3NTllN2RlYmRlMDFhMmExODRmYzE4Yjk2ZmY1ZDYxZTA3MSBsZWdhY3ktdHJ1bmsKKzM0OTIzIDUwNDk0M2M4OTE5M2RhMGRjMTNmYzA3ZjY2MGRiZGY5ODFmNDUyOWYgbGVnYWN5LXRydW5rCiszNDkyNCA2M2NjOWZjZDI4NWU0YjNmYTU0MTA5Y2YzYjRhOTZjMGM3Mjk1NWJhIGxlZ2FjeS10cnVuaworMzQ5MjUgZTUwNjU4YjNkZjBlNzEyYjRmOTY3OTcxMzM4Yjg3ZDdkYzc3ZTgyNyBsZWdhY3ktdHJ1bmsKKzM0OTI2IDAyZWJlMzQ1NjU5NTMxODEzY2JkNjk2OGRkMmY4ZWUwNmU1OTBlMmUgbGVnYWN5LXRydW5rCiszNDkyNyBiZmEwMzY5ZDY3NjBiMjI4YjQzOWFhMjgxNWNhNWEzMGJjMDUyOWQ4IGxlZ2FjeS10cnVuaworMzQ5MjggZGQ3ODkwNzJkOTQ5MDMwZTU2ZDUzMjdjNTU2ZWVkMGM4YmViYjBmNSByZWxlYXNlMjMtbWFpbnQKKzM0OTI5IGNiYmZkNDEyN2UyNDc1NGU2YzU3ZmMyY2Y3NjY1ZWRhMTBmNmFkMTIgbGVnYWN5LXRydW5rCiszNDkzMCAzNzcxZmY5OWQ1ZjI4YWQwMTJhMjIwMmU3Mzg3ZTkyZDM0ZmFkNmRhIGxlZ2FjeS10cnVuaworMzQ5MzEgZjM4OGU4M2Y4ZTQzMzhlMTc1ZjI3NTNlYzhlZTVjOTEwM2ZkN2Q5MiBsZWdhY3ktdHJ1bmsKKzM0OTMyIDk0OTNkZDIyMmZiYjliMDg2YjAzZTk4OWJiYjVhYTYwNTQ3M2IxM2YgbGVnYWN5LXRydW5rCiszNDkzMyA1ZTk3NzU3ZDg3ZTczMDM3ZjA3NjJjM2QxYTgzODZiMGE5ZjZlYmMwIGxlZ2FjeS10cnVuaworMzQ5MzQgYzA2YjU3MGFkZjEyMmJiZThjMjEwODVlMTYxOTk3Y2MzNjI0ZDE3MyBsZWdhY3ktdHJ1bmsKKzM0OTM1IDRkMDc1NmExM2Y2YjllNGM4ZWRiNzFiNjI3ZGVhNGEzOTdhNDFkZTUgbGVnYWN5LXRydW5rCiszNDkzNiA1YjAzNWU2ZTQ0ZGM2OGFlYWNkZDZlMWQwNjk4NTIyODcxYTcwYjdlIGxlZ2FjeS10cnVuaworMzQ5MzcgMzYwN2YyMzM1MmI5ODU5OGI2NTgwYmUwZDZkMjk0N2JlZTQxODliOCBsZWdhY3ktdHJ1bmsKKzM0OTM4IGRlZjI3NTI3NzI4MDYxYTQxOWQwZTg5OGE3Yzc5YTg4Yzc0MzQ4NTQgcmVsZWFzZTIzLW1haW50CiszNDkzOSA4OTc2N2MxOGM2MTYwOGI2ZWI5ZGY0ZmJjMDIzZjkxYjliMDdlNWU0IHJlbGVhc2UyMy1tYWludAorMzQ5NDAgODhlMDAwMjFhY2ZmNmViOGJjZmViYTA4MWFiMzYwNjNiYzkzNWEyMCBsZWdhY3ktdHJ1bmsKKzM0OTQxIDk3MDYyZDM2NThmZTdjNzA3OTJiYzI0YWZmYmY4N2M2NjQ1NjEyODkgbGVnYWN5LXRydW5rCiszNDk0MiAwZjcwOWNlYTQzYzcxNmYxODk4ZTY1YjkzMjk3NjFiYjFiNDg5M2YzIHJlbGVhc2UyMy1tYWludAorMzQ5NDMgZWEzYzZmNmU0Njc5MWM2ZmIyZTc5NmQ3MmMwZmIwYjE2ZTA2Zjg2NyByZWxlYXNlMjMtbWFpbnQKKzM0OTQ0IGVkZTUxOGIwYjlkYTc5Zjg1NDJlOGVlYWFhZmMzZTgyZDE0ZmQ0ZTUgcmVsZWFzZTIzLW1haW50CiszNDk0NSBjMjk2N2NlN2MwMWU0NTI2ODQ2MmEwNWU3OWVmMzA0MGYyZThlNGNkIHJlbGVhc2UyMy1tYWludAorMzQ5NDYgOTU1Y2I5Njk3NzY3ZmUyOTk1MTdlNWYxNzg0ZjU1ZjRlMzM1NDU1OCBsZWdhY3ktdHJ1bmsKKzM0OTQ3IDFhOTg4YTA2YmQzMzZiNzY1NjZlMDZkOTQxZjQ4MzBkNGNkNWZmY2UgcmVsZWFzZTIzLW1haW50CiszNDk0OCBiODBhM2I4MmRjZjllMmU0MjdkNWZkODQzMDM5ZGRkMWZlODY5NjU2IHJlbGVhc2UyMy1tYWludAorMzQ5NDkgMzk1MDgyZGMyMTk0Mjk4OTFkZDcxNjQ1OGZhZDE4Y2M4NTFmMmNjMSBsZWdhY3ktdHJ1bmsKKzM0OTUwIDY0MTY2ZWFmNjIxMjRiMDEwY2NmZTkyNGZiZmM5ZTUwNmJjY2EyMzIgcmVsZWFzZTIzLW1haW50CiszNDk1MSBhNTkyMmI5ZDAzNzlhMDc2ODUwNDNjMjEzOTNmMDhlZTA0ZjRiYmIzIGxlZ2FjeS10cnVuaworMzQ5NTIgMzg4NTVmZGE0MjhhNjhkNjEyOTc0MjIyYmE0NTdhNmQ3MWEyOGQ5NCBsZWdhY3ktdHJ1bmsKKzM0OTUzIDJiMGM3ODVhYjMwYTZlMjI3ZDlkMDU2MGFmNDlhZDZiMjM1OWQ5MjEgcmVsZWFzZTIzLW1haW50CiszNDk1NCA2N2I5ZGU2MmVjYjg2OTI3NzAxYzFmYzMzMzA3MDk5NzlkZDlhNTFmIHJlbGVhc2UyMy1tYWludAorMzQ5NTUgOWEzYTE2YjgyZGNiYmU0YTBiYTgyNjJhNWU2ZWEwYWQzZmI1YzEzMSByZWxlYXNlMjMtbWFpbnQKKzM0OTU2IGZiNzU5ZTI4MWEyZjIzMDA4NTI0MWQ0YWViMzY0N2IzMzhmODhkZGEgcmVsZWFzZTIzLW1haW50CiszNDk1NyBkMDk5ZWQ5MzI5OTNmOTNkOTE4NWExNjUyYTYwNGFlOGU5ZDY5MTViIHJlbGVhc2UyMy1tYWludAorMzQ5NTggNWRjNTc1N2IxMThhYmYzY2NmNjdhNTc5YmJlZjdiZjBlZWE1YjFiMiByZWxlYXNlMjMtbWFpbnQKKzM0OTU5IGIyMjBiNTkwZTJlYThlYTc0MGNjN2JmOWYzMWNiYTdkNTJhYjA1ZTEgbGVnYWN5LXRydW5rCiszNDk2MCBhY2JjNzU2M2E4ZTdlZGY3MzVjNmY0NjgzMDhmNDcxYzRkNjAyNjc4IGxlZ2FjeS10cnVuaworMzQ5NjEgYTZmMzRmYmE5MzcwNjk4N2M3YWE5MGJlNzdhYzA0YTA0NGQ1OTFlMyBsZWdhY3ktdHJ1bmsKKzM0OTYyIDRlZGYyMDBhODExODVhNDdmYjc0NjFmNDNlYzliYzQzNjdhZTc2YmIgbGVnYWN5LXRydW5rCiszNDk2MyBmMGFlMzEzYTJhYzg2NDcyZDQ0YjA4NjRiOGQxYTU4YTdhNTNiMGZlIHJlbGVhc2UyMy1tYWludAorMzQ5NjQgM2M0YzA4NzQ5NGUwY2I4ODQxOTA0MjgyMDY5YThiMmZlNjRlMTYzNCByZWxlYXNlMjMtbWFpbnQKKzM0OTY0IGE4ZjEyODZmMjE3MTI5Y2RiNTNlMzIwZWUxMjVkMmMyYzgwZTEzNzcgcmVsZWFzZTIzLW1haW50CiszNDk2NiAyOGViMDA0NmNlOGE3NjNhOGQzYWRkZWZiM2RhZjNiNGFmYzE3NGZjIGxlZ2FjeS10cnVuaworMzQ5NjcgZGY4ZTg3OWM4ZDc2ZDUwY2VkZGYxMmNiYzFkZTc3NjhiMjljZjRiZCByZWxlYXNlMjMtbWFpbnQKKzM0OTY4IDljNmE1MWQ4NzkzMDI5NDQ2NmZlYTg2NmVjMjM5Y2NiM2YwYmQ2ODkgcmVsZWFzZTIzLW1haW50CiszNDk2OSAxY2I4N2RhZDI2M2Q3N2RkNDBjMmNlNGU5ODY0Y2RkOTE5NWQ5Y2RjIGxlZ2FjeS10cnVuaworMzQ5NzAgOGVhM2E4MmY5MTNmNmNhM2MwOTI3NWI0YjVmOTQzNThhNTEwNTNmYSBsZWdhY3ktdHJ1bmsKKzM0OTcxIGNlMTY1YmU4YzZiODk4NmJkMWYxMjVlMWY0ZDI4ZGI3ZWMxZTJlNjkgbGVnYWN5LXRydW5rCiszNDk3MiAzNTNhMTYwMzNmNmE0ZWQ2OTU4OTBlNTE5NmU5NWMyNzFiOTFkMjc3IGxlZ2FjeS10cnVuaworMzQ5NzMgMzUzOTNhOTJhY2QxZDM3MTEzNDIzMjE1NTFhZDc4NDJlZWZiMzZkNSBsZWdhY3ktdHJ1bmsKKzM0OTc0IGRmZDAxMTRjZjllY2U3YzYyMGQ0MTJmNzY2MzVkYWQyNzNiZmNiNTMgbGVnYWN5LXRydW5rCiszNDk3NSBlMTE4ZTRlOGUyMjQ4ZTRkNjViM2Q3M2JlNThhOTFlNTc0MmE2NmU4IGxlZ2FjeS10cnVuaworMzQ5NzYgODkyMTE2YTg4NmUwMDUxYThkMzJhZmMzYTIzMzJkNmEwM2E0YjkyYyBsZWdhY3ktdHJ1bmsKKzM0OTc3IGMxNDAyMTc2ZTFhNjU1YjIzNWYwNWM5ZDAzMzE1ZmEwOTQxOTM5NTYgbGVnYWN5LXRydW5rCiszNDk3OCBmNjA2NGY4YzE0NjA0ZTNjYmY3ODMzZTkxMTU2YzkzMGEzODUwMWFjIGxlZ2FjeS10cnVuaworMzQ5NzkgYTgwNzcyNmRmNGI3Zjk1NGRkZWRiMWYzYWY2NjZmYjVhNWY0MWNlNCBsZWdhY3ktdHJ1bmsKKzM0OTgwIDU1MmE1MzU1ZDhhOGY2MzVkMTdhMjg2NTdlYjczNzNlZjFlNmY1NDcgcmVsZWFzZTIzLW1haW50CiszNDk4MSA3MDZjOTZlMTUxYTA4OWYyNDhmMGYyN2NmZTZkZWVhYzkwMzI0NzU5IGxlZ2FjeS10cnVuaworMzQ5ODIgMmE4ZjVlYjhkODNlMTMwMmQ1NGM1YWJmMzY2YTNmZTAyYjFkMGZmNSBsZWdhY3ktdHJ1bmsKKzM0OTgzIGJlODgyYTlhM2Q1YjUyMjBkZGNlMDIzYWIwMTEzMDQ3MGZlYTU3NWMgbGVnYWN5LXRydW5rCiszNDk4NCA5MWI1OWYyZmVlN2MxZjExNmVhMzY0ZWM2ZDEyZGU3MjI2MzVkMmU2IGxlZ2FjeS10cnVuaworMzQ5ODUgNDcxMjkxNTJjYjcwMTBhN2NiNjY3NTQ3MGU0OTExMDUxZTEyNzdkMyBsZWdhY3ktdHJ1bmsKKzM0OTg2IGVlNTMyODA1NDZjZTdkMzM0OWY5MzE2ODRiZTMxZGNhNDU5NGQ3MzcgbGVnYWN5LXRydW5rCiszNDk4NyAxZTE2Y2I4YjAyMjE5ZTYzNjlhZDhhY2NmYjUzNGM0NzQyMWZjMzU1IHJlbGVhc2UyMi1tYWludAorMzQ5ODggY2M3ZjI5YWMyZTk4MTY0MWZhNjg3OWEwODE3NGVmN2Y5YzA5NDUyNyBsZWdhY3ktdHJ1bmsKKzM0OTg5IDkwNTYwYTljZjNlOGI5YTFmNzBmNTIzZWM1MzZhZDI4OTQ1OTlkNmEgbGVnYWN5LXRydW5rCiszNDk5MCAwYmU5MjVkMTZlMjkzZmRmZjFkM2JkYjI2NzlmNjQ3ZDE1NmE2OWI0IGxlZ2FjeS10cnVuaworMzQ5OTEgNTNhZTFjM2Q0YTdjMTg1NjVhOTg0NDQ0MmRkMjdmY2VhNDk5MDAwMyBsZWdhY3ktdHJ1bmsKKzM0OTkyIDBmZmI2MjZkNzg4ODFmZTQyNDE5NzY5MjUwZmVlY2E5YTk5NDdiYTQgbGVnYWN5LXRydW5rCiszNDk5MyBhOGUzYmIyM2Y1YThiN2M2MjBjNWI3ZWEyYjFmYzJjMzI2MTkxN2RmIGxlZ2FjeS10cnVuaworMzQ5OTQgZTI2ZmRhOWRlNjdmMjg5NDQ4NDFmMjA2MGZiZDYyY2JjZGJiMjZiNSBsZWdhY3ktdHJ1bmsKKzM0OTk1IDdhYjA4MGJiZDYwYTY4NWMzMTdmZjdmNzk0MWE1NGE2YTFhZGQxZGUgYXN0LWJyYW5jaAorMzQ5OTYgNTVkNDJhYWViMGVlZjg2NjM1OTY5NTAzNTc1YzlkY2NiZTlhOWE3MCBhc3QtYnJhbmNoCiszNDk5NyA3Y2MxMTEyNzI3M2U3ZTk0Yzc0YmE3OThjNjE0ODk1ZTI2ZGQ0NWNhIGFzdC1icmFuY2gKKzM0OTk4IGVhNmIxOWExMGEwMTY0MDI3ODdkYjAxYTA0YzgzNWY1NTE3YzZlODAgbGVnYWN5LXRydW5rCiszNDk5OSAyOWMxYjdiNmZkN2U1NzkyNTc4ZWJmOTIyNWFiMzg1ODE3MzllNDdhIHJlbGVhc2UyMy1tYWludAorMzUwMDAgMjU1MTlkNmM5N2I4NmU3MzY4ZjU4MDJmODU5NTc0NTAxMmFlNjMxZiBsZWdhY3ktdHJ1bmsKKzM1MDAxIDgwMmQ5MzdmNTk2YWJlYjA0YjMyZTkxZmM3ZWZhMWUxNTY2YmRiYzggYXN0LWJyYW5jaAorMzUwMDIgMWFlMjY3OTk0ZmEwMzUwYWE1ODY1YzUyYWYwMTRmNzEzNzcyZjZmMyBhc3QtYnJhbmNoCiszNTAwMyA2YTExNjk1ZmU2OThlYjJjODQ0YTI2NzFhNmI3N2U4MjBlNTljNTY4IGFzdC1icmFuY2gKKzM1MDA0IDA5MDgxNmJkOGJhYzAwMWQ2NTJiYzlkN2E5YzQzNjRjNDMzZmI4YmQgYXN0LWJyYW5jaAorMzUwMDUgMjRkMzRhYjRlZjc1NDljMmE3YzE1MjZhMmYyZTUzMWQ1OGJlZTc0NCBsZWdhY3ktdHJ1bmsKKzM1MDA2IDhjMTNhYjY5YmE0ZjE0N2E1Y2RlZjA0ZDVmZGY3YzYxYWUzYmZmZjAgbGVnYWN5LXRydW5rCiszNTAwNyAxZGMyNjU5ZWQ5ZmMzOWNjZWU0OWU4YjQ1OGQ2NzAyZjM1OTk2MmQ5IGxlZ2FjeS10cnVuaworMzUwMDggNmMzYzNiNzcxYWJjZmM5ZTdiZGZjZDhlMjUxMWFjY2Q0MWFmMjQ2NiBsZWdhY3ktdHJ1bmsKKzM1MDA5IDMxYTI4MDkwMjRmNTIxYjRhNjQwN2Q1MWMwMmEzNzFlNWJjYjY2NTQgbGVnYWN5LXRydW5rCiszNTAxMCA1NzU1MzE1N2MxOTY2YzI3OWJkMjNhMTFkMjk4NjFiNzkxMGMyMmM5IGxlZ2FjeS10cnVuaworMzUwMTEgMzE1OGRjMTUzMmZhMTczY2UxYTJjMDllNDQ3NmMzNTZkZjI5ODA2ZSBsZWdhY3ktdHJ1bmsKKzM1MDEyIGI4N2QxOTk4ZWYwMDA0ZDNlNTRkNmI2OTU5MjM0ZTJlYjA0NDY1ZDIgbGVnYWN5LXRydW5rCiszNTAxMyA4YjYyZjQxOTRhN2U3OTM2OTg5MGJjNTY1ZTRjZjRlZWZkOTY5NjI0IGxlZ2FjeS10cnVuaworMzUwMTQgZDZkMWVmZGNjNWZkZDQ0YjI3MGEyZDg1NjNiMGM2NjM5OGY2ZTY1OSBsZWdhY3ktdHJ1bmsKKzM1MDE1IDEzOWE2YjZjMTUwYTU5ZmI4N2Y0ZDNhMTJmZjJiZjc3N2UzOWU0ODcgbGVnYWN5LXRydW5rCiszNTAxNiA3MzY2ODc1YTNjZDcwN2NmYWRmNGYyMWQzZDIwNWU0OGQ0NDc5OWJiIGxlZ2FjeS10cnVuaworMzUwMTcgMzg5NDY1NGI0ODQ4ZTE3NTZlMjIxYTgwYTdlOGQ2NDlhNzBkYmE3NCBsZWdhY3ktdHJ1bmsKKzM1MDE4IDFjMGU0YTUyNjczYWE1ODM4ZDJhNzIxNzdiNGRlOTdhMDMxZGYwNDggbGVnYWN5LXRydW5rCiszNTAxOSBmZDRjYmJlYWNlNzllY2M0MWVkZDMxYjMzMTZiMmE1NzkzNTc3Nzg5IGxlZ2FjeS10cnVuaworMzUwMjAgMmNkOTY2MjlmZThkMTQ4MGQyMTM4NzAyNWZjN2ZmNjI4YTg5Yjk0YyBsZWdhY3ktdHJ1bmsKKzM1MDIxIGVjNGE5OWQxNGNhNDYwNGQyNDJmNzU5NjUzNDM0ZTdjZTZiMzg3NDUgbGVnYWN5LXRydW5rCiszNTAyMiA4NjhjYWNlMjIxOWZmNzJmOGVlNWNhNjZiOWZlZDAwYmE1ZDU0NWRjIGxlZ2FjeS10cnVuaworMzUwMjMgOGU3MDg5MmE5ZjI1Y2I3NDBiMmM4NTI0Y2UyMzUwMzYwM2RmOWE1YSBsZWdhY3ktdHJ1bmsKKzM1MDI0IGM4NTRhMWYyZDE5YjgxNDIyNzRlMGRhNzhhMDgwYjY4YjhjY2VlNWMgbGVnYWN5LXRydW5rCiszNTAyNSAyYzFiYTI0MWIzYzA3YTI4YzA0NTY1MzM3MDdmOWFmYjg1NzYzNWUzIGxlZ2FjeS10cnVuaworMzUwMjYgMjhkMDBiMWE4NDQ3NjA2NDBlNThiZGRiNzIwN2JhMjU5ODRkYTFhYyBsZWdhY3ktdHJ1bmsKKzM1MDI3IDI4NGRiMmE1ZjYyMGIwODVmZjFhNDMxOGM4ZTMyMTIyMWQ5ODJmM2EgbGVnYWN5LXRydW5rCiszNTAyOCAyNmVjYTcwOGI2ZGQ2NzUyNDBmMjE4MTU5MjE4NWEwMThlOWYzNzFmIGxlZ2FjeS10cnVuaworMzUwMjkgYWQzZmFmNTJlMTllNDAzYWRlYjEwMDAyYTEwZTIzZTBiMjhhN2Q0ZCBsZWdhY3ktdHJ1bmsKKzM1MDMwIDdlYTA2N2Q3NDlhMDA2NjA0YjQzMGNlMTk1ODNiNDJiNjI4ZThjM2YgbGVnYWN5LXRydW5rCiszNTAzMSBiZjg0MDJhNTZmYTQyN2IyNTUxZjMxM2RlMDIzM2MzNjFiZGEzNzYxIGxlZ2FjeS10cnVuaworMzUwMzIgNzRjMDczYmE2YzNiMmE0MjAxMGFmOWYyMTA2OTMyYTBhODA1NGExMSBhc3QtYnJhbmNoCiszNTAzMyBlNDAxYzBmMjlmNTBkODhiZTQwZDQyODc4OTc1ZmE0YmEyMTA4YWUyIGxlZ2FjeS10cnVuaworMzUwMzQgMzhiMjNlNmQ0YzRiOTY0ZmVjZjY2ZjYyODk1MmQ1NDliODM5NjI3OCBhc3QtYnJhbmNoCiszNTAzNSBlMzQ3NGVkODBhNWVmN2EwMDUzZWVjMDA3MWRkMzM1MzBhMzYzMTQwIGxlZ2FjeS10cnVuaworMzUwMzYgNmQ0MTg4MDFmMTQyZGZmMTkzMWVlNGE0NTJhZDI2ODY2M2QyMzFjNCByZWxlYXNlMjMtbWFpbnQKKzM1MDM3IDc0NDMyM2I3NjhmMGQ0YWU5OTEzNWYwOGI4YjU0NjViNjViNmRhZjcgbGVnYWN5LXRydW5rCiszNTAzOCBjNTNkYWYzNWJiY2NjMGE5NWFjMzdhM2Q0NzBiZjQ5OGE0MzA1Y2IwIGxlZ2FjeS10cnVuaworMzUwMzkgODczN2JiNDRlMjJmYThkYmY2M2RjN2I2Y2MxYTc4ZGE3OWY3NTdlMSByZWxlYXNlMjMtbWFpbnQKKzM1MDQwIDA2MWVmZmFiYWZjYmQ3ZjQ1MTQyNWMzOWYyOWE0MzI2YzVmYjE5MjMgbGVnYWN5LXRydW5rCiszNTA0MSBkY2Q3NDNlNzljZTM1NmVkNzA5NGI0MTk1MjgwMmVjYWE5ZmJmOTljIGxlZ2FjeS10cnVuaworMzUwNDIgMzM2OGE0ZDI1ZjE3N2RlZTYxOGU3NGM1ODE1MzY4MDI5OGM1ZjdkMiByZWxlYXNlMjMtbWFpbnQKKzM1MDQzIDU4M2Q1YWE4MTAxY2UzYTg3NTBiNjk0MGM2NjhjMWVhNDg1OWM5YmYgbGVnYWN5LXRydW5rCiszNTA0NCA1ZWI5ZTI1ZTYzZmQ1ZWQ4NjQwYWVjMTU5NGE1YmE5YzBjMTdmMDAwIGxlZ2FjeS10cnVuaworMzUwNDUgMGVhOGViZWI2YWEyYjhhNThlNjhlZDQwMTMwODgyY2MwM2M1MjVhYiBsZWdhY3ktdHJ1bmsKKzM1MDQ2IDgwOTk3OGMzMDRiZTRiOTZjNjg3MzFiYjZiYzJiZDY2NTI4MGM2YmMgbGVnYWN5LXRydW5rCiszNTA0NyBmZmYxZTg1ZDE5NWMxNzU1MGIzZTU0MTQ0YTBlMGM0YzYwMjdkNjU3IGxlZ2FjeS10cnVuaworMzUwNDggY2Q3YjcwYTRjNDQwMjEwYTA1MDZlZjA1ZTY3NzAxMTQ1NDdiYmJlNCBsZWdhY3ktdHJ1bmsKKzM1MDQ5IGE1MzE5MGIzODcyN2I3NzA2NDAwMzgyNjFhYzExNWY1ZWU3YmE1ZjcgbGVnYWN5LXRydW5rCiszNTA1MCBiNjc0YWI1ODA4YmFmZmIyNjA3YWI5Y2FlZTg5NGU2MWNjMzlkNzAyIGxlZ2FjeS10cnVuaworMzUwNTEgMDk5YTRhMmYxZjc3Y2FmOWJlOWViZmJlNTQxZjkxZDNjY2E2NWE3MCBsZWdhY3ktdHJ1bmsKKzM1MDUyIDMzMjk0MjA2ZDUzOWY1OWYyYjE1NjQ2NGIxZDdiN2U4ZDFjYTM4ZDQgbGVnYWN5LXRydW5rCiszNTA1MyBjYTQzNzQ2NjI2MzI0NzViZTdjYzJjMzk0ZWQwMmJkMTQxNDgyODljIGxlZ2FjeS10cnVuaworMzUwNTQgZWQ2ODlkMGM2M2MxM2IxYjRhYjQwODFmODFmMmEzYmE2ZTZjMjFlMiBsZWdhY3ktdHJ1bmsKKzM1MDU1IDk2NzIyMzc3ZDQxMmMyMTQ1NTZhYjRmNzdkMDY5OTRkZmE3YThlYjMgbGVnYWN5LXRydW5rCiszNTA1NiBjNjcwMWQ4NGEzZmExYjNmN2UwZmY0YTQzNGY2MDM3MDNhN2ZjMWRhIGxlZ2FjeS10cnVuaworMzUwNTcgYWY5NDZkYjY3YWZjNDRkNGJhNmFlMjVkNjBjZmIxNDM3MmM2MTY3YyBsZWdhY3ktdHJ1bmsKKzM1MDU4IGI0NTMyYzI0NmEzYTBlYzQxM2NjZmZmODg4OGY2M2QzOWY4MWM2MzIgbGVnYWN5LXRydW5rCiszNTA1OSAzY2MwZDhmZDRlMmI2ODFhY2M4MTgzZjYzNWNhMjYwMjdlNDQ1ZmMwIGxlZ2FjeS10cnVuaworMzUwNjAgOGM3MDkwOTA4Y2VjZmY2OTAyNGY1ZWU1MjhmMjg4MzUwNmFiNWI5MSBsZWdhY3ktdHJ1bmsKKzM1MDYxIDQ3N2YwYTI1MjE1MGQ3NWIzZTUxN2IxYThiZWRmZGMzZDg0ZjU2YjMgbGVnYWN5LXRydW5rCiszNTA2MiBhNmJjMTMxYWI2MTg4Yzg3YzU2MmU5NjI0NjI4NWU5MjdlNWYxOWVhIGxlZ2FjeS10cnVuaworMzUwNjMgYjY3Y2EzZjY4OGY3OGJhMjAyMjAxYzJlNjM4MTkwODZmZTcxNDQ3YSBsZWdhY3ktdHJ1bmsKKzM1MDY0IDM4NTE0ODgyYTVjNGM0NWQwZDA0ZmVlMThlOGZmN2Q0YTI2Njg5Y2EgbGVnYWN5LXRydW5rCiszNTA2NSBmNjY5MzlmMzg1MjM1ZDY2NGI2ODU5OTg3NmJjNGQ2ZGYzOTEzYjdjIGxlZ2FjeS10cnVuaworMzUwNjYgMGJhYTI2NjBhNTY4YmYxZjcwYmI5M2I4YTFiZWJkNjllZTc0NDI5ZiBsZWdhY3ktdHJ1bmsKKzM1MDY3IDQxNmE1ZDI1Y2JhNjhkMmExNzY3YzY2NjQ4OTBmZTBlYzA2Njc2NDIgbGVnYWN5LXRydW5rCiszNTA2OCA3NmVkOGE3ODgzOTE4NTczN2ExNDM0MDBlOGI1ODU5NzA5NjkwNmY3IGxlZ2FjeS10cnVuaworMzUwNjkgNDcyN2M4MWRiOTQ5OTA4N2VmYjk2N2YzMGU2YTU4NTZmYmJmMjc0ZSBsZWdhY3ktdHJ1bmsKKzM1MDcwIDZlYTVjY2YwNjViZTA0MmFjNjNlZGYwNjU2NWU4ZDBkYTRmNjdhNGQgbGVnYWN5LXRydW5rCiszNTA3MSA0YWM2YTAyMjFmN2Q0Yjg3ZGM5Nzg5OTQ1Zjc5YmYzZWY2MmQxMjIzIGxlZ2FjeS10cnVuaworMzUwNzIgMDU0MjNjMzI2MWQ0MTVmNTg2NzE0MGNhMTQ2NWU5MTNjYWViYWY2MSByZWxlYXNlMjMtbWFpbnQKKzM1MDczIGU4ZGZmMTFlOTM1ODc5NjVkZjQ5OTQ0Yzg4ZGU1YWIzYjZhMDQwZTcgbGVnYWN5LXRydW5rCiszNTA3NCA0OTE1ZmJlYzYwOGY0ZjAzNTVkYzE4NjRhZWJlOGMwNjI4ZDAyN2FmIGxlZ2FjeS10cnVuaworMzUwNzUgZmQ2NDk3Y2Y3MjI4ZTgyNjk4ZGI0OGQ0N2VhNzE4M2YwNTBhMjQyNCBsZWdhY3ktdHJ1bmsKKzM1MDc2IDBjMWQyMDYyZGVlMzUzOTE0NGFjYjg3YjJjMmNhMTlhOGViNjk3ZjEgbGVnYWN5LXRydW5rCiszNTA3NyBhMGFlMmQ5ZGU2OTExMWQwNjA3ZmRjY2FhY2RjYTRkMTEwYzdiYzc3IGxlZ2FjeS10cnVuaworMzUwNzggYmIzYzNjOThjYzFiYWJhMTI5MDYzMzczNWFhNjY5NmU1MmEzYmQxYiBsZWdhY3ktdHJ1bmsKKzM1MDc5IGYwZTJhODUzNjc1OWZkYzEyMGU0MzRlNzYxZTY5Y2JlMjI3ZDgxNWMgbGVnYWN5LXRydW5rCiszNTA4MCBhMGIxNzczMjgzNWEyMGIyNDhhYzg1ZWZjYTk0OTFhYTU3NzlmNzA1IGxlZ2FjeS10cnVuaworMzUwODEgYTM0MGM1MGU5MjRhMzc0Y2ExODMxYmJkOTBhY2U2MTE2NWQyMjA0NCBsZWdhY3ktdHJ1bmsKKzM1MDgyIDU1NDEyYTQzZDJkM2UxYzQyMTA2YTBlOTc0YzM4MjU3NjgzMjJjYjYgbGVnYWN5LXRydW5rCiszNTA4MyBlYWExYTRiNzQzMjg3YmJjZmI2YzQ4YTc1MmUyMzU4NmRlZTgxYjIyIGxlZ2FjeS10cnVuaworMzUwODQgYTMyYWE3OTA2MjUxNDk1YzQxYjI4NDJlZTlhNjJjZTBhZWQ5NTQ1MiBsZWdhY3ktdHJ1bmsKKzM1MDg1IGVmZTA3NTI4OTc5MzUwZWY1YTA3ZTA1MzBmMjEwYTA1NTg0N2VhNjIgbGVnYWN5LXRydW5rCiszNTA4NiBlZDIwMjU5YTFlYTU1N2RkYTUxOGQ2Y2QyOTBlMWZkMjUwM2MxYzEwIGxlZ2FjeS10cnVuaworMzUwODcgNzk2Yzk5ZjBmYTJjNjJjYzc5MWVjMzRiMGNhOGUxYWYxY2ZiZjg5MSBsZWdhY3ktdHJ1bmsKKzM1MDg4IGQ4YzJkYjc4MmJkZjVmZjM1MjExYTAxNTU3OGM4MzUxZjM3OGViMjcgbGVnYWN5LXRydW5rCiszNTA4OSA5MTQwZWNlM2RiMDM2MzM5MjM4NjI4OGVlYzk5NjBiYWE3NTRkYThjIGxlZ2FjeS10cnVuaworMzUwOTAgYzA4ODU4NGY1NTMzOWU5YWE0YTU0ZmFjNmIwZmFjNGQzNjY4NWQ4NiBsZWdhY3ktdHJ1bmsKKzM1MDkxIDU4NmE0OWMyYzY0MWU1MzhlNTQ3ZjAyMjlhM2E0ODBiNDA0NDBhMzIgcmVsZWFzZTIzLW1haW50CiszNTA5MiAxN2NhMzQ3MzAzZDNmMTNlMmMxY2EzZDU1ZmE4MjNjODQ0MDI0NzY2IGxlZ2FjeS10cnVuaworMzUwOTMgMGYzOTRmNDM5YWQ2YTA0ZjYzMTE3YzU3NWQ1NjNhMzY5ZjZkYmM5NiBsZWdhY3ktdHJ1bmsKKzM1MDk0IGVjNzVmZjhjNzcyMTIxOWQzYzQyYWFlYWQ4ZmZhOGFiZmU3OTk5MGYgcmVsZWFzZTIzLW1haW50CiszNTA5NSBmMTY2OTExZjc3OGI4NTcxY2QxMzFlMGFhZTVkYWZiMmE4MWM0MjQyIHJlbGVhc2UyMy1tYWludAorMzUwOTYgZjdhMDVhYjUwZDNiNGUyMjY3MjBhZTZkYjUyYTAyOGY5Y2QwYTZmYiBsZWdhY3ktdHJ1bmsKKzM1MDk3IGIyYTgyMGUzMjlhOTBhMzNlNTZjODdlNmI0NmU3ZWRmZjU3ZTRkZGMgbGVnYWN5LXRydW5rCiszNTA5OCA1N2JhY2IxMTlhOTc2ODI1YTJkYWFkMThhM2QwODIyM2E4ZDFjNWRjIGxlZ2FjeS10cnVuaworMzUwOTkgOTk4OTFiODg4Y2ZkMjllOWYwZWI1MDE4NmMzODg3N2I3OGU5Y2UwMSBsZWdhY3ktdHJ1bmsKKzM1MTAwIDFkZjViNmExZGJmNmE1NDAxNDJjMWUzNjEzNGViMGJiODQ3ODViZmMgbGVnYWN5LXRydW5rCiszNTEwMSBiM2Q2NTMyNmNhNjZiNDU2ZGE5YzA5ZjdiMGMzNWEzMjJkODdkZjRjIGxlZ2FjeS10cnVuaworMzUxMDIgYmYzNmMxMTYzMzMwN2ZkMTk2Y2IyOWY4ZDY2ZTgwMzBlMzU3MmNkNSBsZWdhY3ktdHJ1bmsKKzM1MTAzIDZhOGIxMjJhZWIyZmY3YTQ2YjIwMTkyNDM5NWRmYWU1N2M3M2RhYTIgcmVsZWFzZTIzLWJyYW5jaAorMzUxMDQgYTYyODRlOWYzMGEyZTZlYjI5OWUxYjEyMTdkNTAzMDlkYmEyMTYyMCBsZWdhY3ktdHJ1bmsKKzM1MTA1IGY4NGQyYmM2ODMxZDQ4NjZmOWFmNDVmYWNlOGRmNzgwMGNjMDBhMDIgbGVnYWN5LXRydW5rCiszNTEwNyA0ZTQwZWZmMWFkMTg2ZWEyODljOGJkODZkOTMxMzk1YjQ3NWZjNjU2IGxlZ2FjeS10cnVuaworMzUxMDggZDMyNThmNDNkNDg0YmYxZTI2NGQyZTU0ZDg1OWM4YzdhOTNmNTc4NCBsZWdhY3ktdHJ1bmsKKzM1MTA5IDYzMWNlMjNmODhkNmFlNTk3ZWVlZGJjN2VmNzVhZDJhMWEzYTMxNWIgbGVnYWN5LXRydW5rCiszNTExMCBmMzhiZDM5M2U5NTQ3NWIzMjllMmI1OTcwZTcxYzA0ZDAyYWZmNGIyIGxlZ2FjeS10cnVuaworMzUxMTEgOWRhOTRlNTY5ZDQ4YmJmODA5OTk5NWU1ZDY3ZTFkMzZjMTU3NTAwMyBsZWdhY3ktdHJ1bmsKKzM1MTEyIGZjNTcyMDBmNzBmMjRkZWU0YTFlOWE5NjZjYTJkMDZiMjY3ZTcxMDcgbGVnYWN5LXRydW5rCiszNTExMyA2NGFlODMyMTMxZTE0MDc0Y2MxZjc1N2I3ZDE0MTU1ZTdhNmU4ZTc0IGxlZ2FjeS10cnVuaworMzUxMTQgNDA1NTM3NWRjMDVlYTIxOThkMmVhYmM0MDI3ZDgzNzIyMzlhNjdlZSBsZWdhY3ktdHJ1bmsKKzM1MTE1IDY3YTFlZWFkNzJiYWI0YmI4N2NkNWNkM2JjYTllOTBkY2Q2NGJjYjQgbGVnYWN5LXRydW5rCiszNTExNiBlMjBmYzFiODAyMDUxYTAyMDEyZGNkNGMwYTBmODExMWRjNzM0NjlmIGxlZ2FjeS10cnVuaworMzUxMTcgNDZhZDIxYjViZDMzNGM0OTYzNzRlMzVjODc5ZjdkYjlkYTBiYzEzNiBsZWdhY3ktdHJ1bmsKKzM1MTE4IDBhYTY0NDFjN2ZlNmQ4YmZlOWZlYzRiNmU2OGQ5ODA4ZmY1ODE4NzEgbGVnYWN5LXRydW5rCiszNTExOSA1YmJlYzhmMWJmNmQ2NTBjZWZmY2RmYzZlNTQxMDBlODM1ZWM3ZWExIGxlZ2FjeS10cnVuaworMzUxMjAgY2I5MjMxZWYzYmI5M2VhZTMxZGYzZWI0MDA1MDIwNWY4NjkxMGU1MyBsZWdhY3ktdHJ1bmsKKzM1MTIxIDg4N2NlMzlmOTVmMmFlOTgxOGZkYzU5ZjlkYWY3Yjk2M2I5MGUzYmIgbGVnYWN5LXRydW5rCiszNTEyMiA0MDY3YmY0ODE1NGQzNzRiMTkwNDczZTBmMDBiYzlkOWU4MmVmN2RiIGxlZ2FjeS10cnVuaworMzUxMjMgZWMwYzkwNjIxMGJmYTMyMDUzOTZjYTMzZTFhYTVlODgwMjVkYzYyMSBsZWdhY3ktdHJ1bmsKKzM1MTI0IGFjYTFjZTFiNGI2MTQ0MjAyZDZjY2Y1OWQ2OTE0OGI2ZTJlNGMxODAgbGVnYWN5LXRydW5rCiszNTEyNSA5MTY5ZDc5ZWQzMDQ4ZTA4MTE3MjhlZDAyZGEzMThlOTQ5NTQ5ZTcwIGxlZ2FjeS10cnVuaworMzUxMjYgY2VmNjEzZDkwNDk1N2NmYmVkOGY0OThiMGQ0YmZlNmE1ZjBkOTcyYyBsZWdhY3ktdHJ1bmsKKzM1MTI3IGM5YmVkMjAwNTAwZTRmNzcwNGVhMDRkOTY4MGVkMzNkYTg3MmNkMGQgbGVnYWN5LXRydW5rCiszNTEyOCBjODdhN2U4MTNhOTlmNjNkZWZlZTdjN2I4NzU0ZjRhZTE5YzM4YTgwIGxlZ2FjeS10cnVuaworMzUxMjkgMzhkY2VjMmY3YjAzNDQ0YTUwMzM4ZGY5NWIxNjNkOTJhZmI2OGU2NiBsZWdhY3ktdHJ1bmsKKzM1MTMwIDNhYTIwYTgyZGU4NjdmNjA1NTEzNGViMDA1MmM3OTIzNWMzMDMzNWIgbGVnYWN5LXRydW5rCiszNTEzMSA0MGQ3MjUwNzdkY2IwZDQ4ZjlkZDE0YjQ5MDA0MmM4NTFhNzU0NWYxIGxlZ2FjeS10cnVuaworMzUxMzIgYjkwNTdhNjc2M2Q3ZDAxM2M4YjQ2OGU3ZWFkOWY0Y2M4MzI5OTY1NCBsZWdhY3ktdHJ1bmsKKzM1MTMzIGIzZDdlYmMxM2Q3ZDVlZWUwZTU4Zjc4ZTIyMzk2YTRiOTViZTRmNjYgbGVnYWN5LXRydW5rCiszNTEzNCAwZmNlNWIxNzNhNzQwMmVlYjBlNjYwM2JiZDM3OWM5NDE3NDk2MDhlIGxlZ2FjeS10cnVuaworMzUxMzUgMjVhODAxNjRjYzdhZmVmNGFhZWU0YTRkMmJjZjIyNzg5ZGJhZjIxMyBsZWdhY3ktdHJ1bmsKKzM1MTM2IDg5N2RlOTIwODE5OWI5NmRkNmIxMWNkMzAxNTVkYjQ4MTFhNmNmZmIgbGVnYWN5LXRydW5rCiszNTEzNyAxMmNjMzM2ODI4ZTliMjcxOTU2ZjU4YmFlZDllMWUxNTZlNmU2OGM0IGxlZ2FjeS10cnVuaworMzUxMzggOTAwNWYyNjYyYTcwZWFiMjJjYTUwOTNkNmVkNTAyOTdlNGZjMmY2ZSBsZWdhY3ktdHJ1bmsKKzM1MTM5IDc0MDdhMjQ2ZGJlMDJmODBjOTE4NmVmMDgwOTQ0YmUxYWE4OTk5N2UgcmVsZWFzZTIzLW1haW50CiszNTE0MCBmZjlhNTQ5NTNjMGJmZWE3N2U1MmQwNDM5MDUxZTQ5NTA1MjNjOTljIHJlbGVhc2UyMy1tYWludAorMzUxNDEgNjlhMzY1ZTQ3YWMwYTIwOTY1YzgwNTc0N2QyZTFmNzgyMjc1YzhmYiBsZWdhY3ktdHJ1bmsKKzM1MTQyIDFkYzU0MjI1YTRjMjI4OTlhNjk2NTk0MjY0MTY0YjVlMzNmNjc1NDggbGVnYWN5LXRydW5rCiszNTE0MyBlNzEyNGUyNjkyNWY2NGI1ZGIzMWFjNDkyZmY5MWUzZGJjMWE2NTdjIGxlZ2FjeS10cnVuaworMzUxNDQgNjkwMTA1ZmVhNTlkMzhmZWIzNDAzMWE5YmE2OTRkNGI5OGExZTkyMiByZWxlYXNlMjMtbWFpbnQKKzM1MTQ1IDZlMzc1OGVkMWVmNDEyYTkyZTE2ZDE1ZmJmZTYwNjBiMjlmYmE5OWYgbGVnYWN5LXRydW5rCiszNTE0NiBiYmM5NDRlMWZlY2NiNjExYTk0N2JjODljZDhiZTFmMWVhMDY4NDI2IHJlbGVhc2UyMy1tYWludAorMzUxNDcgMjY2ZjIyNmY0NzFkMDQ2NTI1OTg3MGI5MzhkZWMwODNiZTAyMjYyZSBsZWdhY3ktdHJ1bmsKKzM1MTQ4IGVjOGE0Njg1YjM2MDY2Njg3MWVlZWQ3OGY3NTg1ZWI1NjFkODFkOTIgbGVnYWN5LXRydW5rCiszNTE0OSAxNGRlYTZmOGIwYzM0NGZlYTVjOTFlNzY3Zjg2NzdjMzIwMDBhODczIGxlZ2FjeS10cnVuaworMzUxNTAgYzM4MGRjMjkzMDRhZTFiMzFiODgzOTUzOWNiY2FmN2RiZmIxN2I5OSBsZWdhY3ktdHJ1bmsKKzM1MTUxIGY3ZjQyZjNjM2ZiNDc1N2ViNDYxOTBlYjVlNGI3YjUyOTE3NGY4YjkgYXN0LWJyYW5jaAorMzUxNTIgYTE1MTE1MjkwZTEzYjI4ZmM4YTYzNDE4MGFjNWJmYmE3ZDI0ZTAzNiByZWxlYXNlMjMtbWFpbnQKKzM1MTUzIDdmY2IzNTU1MmQ1M2EzNGEwODdhYzJjM2IyMTViZTgzNGI2MGJlM2QgYXN0LWJyYW5jaAorMzUxNTQgMDM4MDg3OGYzZGI1NDkzMTQ5YWU0YzcyOTFhNWExNWM3MzM4MTA4MSBhc3QtYnJhbmNoCiszNTE1NSA2MDNhOWVhYTc0ZTE1NWQ4ZGZhNjliMzU3ZTEwZTUwY2U5ZGNjODMyIGxlZ2FjeS10cnVuaworMzUxNTYgYWM0YTdiYTU0NzkyOTA0YWQ4MjdmMmU5ODY3M2Y5Y2Y4MDlmZjQxMCBsZWdhY3ktdHJ1bmsKKzM1MTU3IGIxZGM1ZTExNDhlYTM0ZWZhNWNmN2I3YThmYjJlNmU0ZWZkNWVjZmYgbGVnYWN5LXRydW5rCiszNTE1OCBiZTU2ZmM0ODVlMjcwZDZlMjQ2ZmVlZDgxNzlmZjIzMThjNWZjM2UxIGxlZ2FjeS10cnVuaworMzUxNTkgN2JlNTUzODA1OTQ5M2U2M2ZhOGQxNmQ1NTliN2RiZjhlYTc2NjFmMiBhc3QtYnJhbmNoCiszNTE2MCA1NjFmZTdmNjY1MTVlMDlmOTAxMjEwMjRjYTYwZThiODc5MGY5N2M3IGFzdC1icmFuY2gKKzM1MTYxIGM0ZDNlN2ExZmY4NjlmMGZhNjVlYmQwYjBjY2E5Y2VhYWEzMzY2ZWYgYXN0LWJyYW5jaAorMzUxNjIgNjFhMjBkZjRiMGVmNWZkNzkzZmE5OGEwYzk1MDIxODMwODM0NjNkNCBhc3QtYnJhbmNoCiszNTE2MyBiODE0ODBmN2NmZmU2MTlhOTQxN2U3ZGYwOGZiMzNkOWNkMjg0ZjEzIGxlZ2FjeS10cnVuaworMzUxNjQgMTg2MzE5Y2ZmNGIyMjRlNDAzNzM4NWQ1ZjVmNmUwOGRmZjA4MWMwZCBhc3QtYnJhbmNoCiszNTE2NSA3Yzg4YTA2OWExNDM5YTA5ZTNmNWRlZjI3Nzg2NDg5NGU2Yjg2NTRjIGFzdC1icmFuY2gKKzM1MTY2IDhiNjA4NDg0OGRhMTg5YTBjNjc5YmZmNDQwOWM0MjRmMGU0NDkwYzMgbGVnYWN5LXRydW5rCiszNTE2NyA2NmE0MjMwZjk0NWIxNDhlYjNjNzM1ZTBkNGQ3NjFhYzk5Yjk1NDY2IGxlZ2FjeS10cnVuaworMzUxNjggOGY0NzI4MWZlYTdiZWE0Yzk1NWY4MTE0ODViYmYwM2JkMDZjMjk0MCByZWxlYXNlMjMtbWFpbnQKKzM1MTY5IDQ2MjI0NjkwYTM2NTVhNDNkZGI5YWYzNGFkNmE0ZjYyMTMwM2NmMTcgbGVnYWN5LXRydW5rCiszNTE3MCBmMmZkNGU1ZGRmMTk1YWMyMzM1ZDAyNTM4MzNkM2E2ZWE3YjQ1OWRiIGxlZ2FjeS10cnVuaworMzUxNzEgZTRkNzNlZThkNGUxNmJhNGM0YTgxOTY2YjYwM2E3YWY3MTkzMjhhMyBsZWdhY3ktdHJ1bmsKKzM1MTcyIDhkMDZjMTkyZjBlNmQzZWM5ZDcwYmFhMDlkMGI0NjVmMTIzNGM5NGUgbGVnYWN5LXRydW5rCiszNTE3MyBhZGI2ZGZmZDhkZDUzMTRiNDUzMTQ2MTU4MDc0NTU5YmI2MmM1MjdlIGxlZ2FjeS10cnVuaworMzUxNzQgMWViZDA2MjZkMTc2MTA4MzI5YjcwMTU3MjRmYjg3ZmQyMmVmODRkYiBsZWdhY3ktdHJ1bmsKKzM1MTc1IDI4ODBjZWI4MTE5ZGMxYjUyNWUzNTA1M2Q5NzMxOGUzMGRlZjViN2UgbGVnYWN5LXRydW5rCiszNTE3NiBlOGI5NmIyYmZhN2IyMGZjZDgxNzc0N2ExMzI4MzdjY2RiYzhkYTFkIGFzdC1icmFuY2gKKzM1MTc3IDhmOGJiYTBhNzViNGNkMDgyNmE1YTU3ODNlMzkzMjYxZTRkZDRjYWEgbGVnYWN5LXRydW5rCiszNTE3OCA0ZTdjYzUwYjMwYTE2NDM4ZjcxNGI0YjM2ZGFjYjZlZmFiNGE0YWI5IGFzdC1icmFuY2gKKzM1MTc5IDUwMWRhYWNjYmZlMGNiNjRjYmEwYTk0YzNmY2RhMGYwMGMwYzQ0ZjcgYXN0LWJyYW5jaAorMzUxODAgZDY2N2UzM2UwMjUyM2ZiN2IwZDlkYjMxMjA4ZDA2ZjFmYjg1YTNmZSBhc3QtYnJhbmNoCiszNTE4MSA2NTc3ODM1MjA2NmJmOTRmMDg4ODBlYWZjYTc0YzhmMzE4MTllOGJiIGxlZ2FjeS10cnVuaworMzUxODIgMzc0Njk3NDc4YjVhYzAyZTYwYWJiNTgzYThlZDZmMDUyNGZkODg3NSBsZWdhY3ktdHJ1bmsKKzM1MTgzIGY3NmZlYjczYTBlNDcxNjlhMzYxNWI5MjhkNjBkMDZkOTA4ZGRjNjQgYXN0LWJyYW5jaAorMzUxODQgNjMwOGFkZjE3MmY0ODAzNTA3MjRlZmEwNzU2ZmIxYzM5ZGM0YmIwMCBhc3QtYnJhbmNoCiszNTE4NSA5NTI1MTc3OThjYjVkMzAzNjZmNDk1M2IxMTI2ZjBlYjc3OTAzNmRmIGxlZ2FjeS10cnVuaworMzUxODYgNjNmYTYwZjJkNjFjYTgzNmI1ZTJkMDk1OWRlZDFjMDAyODE5NGFlZCBsZWdhY3ktdHJ1bmsKKzM1MTg3IDRhOWU1NjM2OGM2OTA0YzM5MjUxYzgyYmE3MDFlYjgwMDAzZjZmY2UgbGVnYWN5LXRydW5rCiszNTE4OCAzYzU3YTFjM2E4N2FlZjEzODg1NjRmOTA1OWNiNGE4N2YxNjIzYzc4IGxlZ2FjeS10cnVuaworMzUxODkgM2MyNjc3YzRhMmJmMzY5ZTgxZmI2ZmFmOGIxM2RjNjRkMjQ0NGZiMiBsZWdhY3ktdHJ1bmsKKzM1MTkwIDE2YjMxNWRmMTNjZTQ4ZjdiM2FjYmQ1Y2NkNmVlYmUwZWY4NGM1MzIgbGVnYWN5LXRydW5rCiszNTE5MSA0OTM3MDc2OTI2NzE5NGI3NjkxOTk4NTRhN2Y1ZDgxNmYxZGFmOGUyIGxlZ2FjeS10cnVuaworMzUxOTIgYTJmZTFhMzU4MDBhMDZkNDc3ZDI1MGMyNDM2M2Q5ODAwZmFjNzFhZCBsZWdhY3ktdHJ1bmsKKzM1MTkzIGFmYjRjOTcyNmQxYTQ1YTIzMWQ0ZmNlZDlkNTc3M2RiMTVkZmUyOTMgbGVnYWN5LXRydW5rCiszNTE5NCBhMjgyODAxYjA2YjY0OGRmMGM4Y2M0NjAxMjI4NWE3YWJmZmJjNjllIGxlZ2FjeS10cnVuaworMzUxOTUgMTIxOWYxMTYyZDFkMWE5NTg5NzEzNGY1ZTY0OTY1MWRiZmUyZThmMCBsZWdhY3ktdHJ1bmsKKzM1MTk2IDk3YmNmMmU4OGNlYjg5MTZhYzhjNTAzODk4ODcyOWVjYjM5MDVjZGUgbGVnYWN5LXRydW5rCiszNTE5NyAxNmQyNjk4NjZhNGRhZjdiYjJiZWEzMWYyMTVlMWY2Zjg5NzFiNjA0IGxlZ2FjeS10cnVuaworMzUxOTggZGZjMTgxOWI0ZWI0NzMyZjlhMTQ4NzY1NWEyODM0NThkMWMzMGEwMiBsZWdhY3ktdHJ1bmsKKzM1MTk5IGI0YmM4M2YyZmQwNGQ5ZDIxMWJmNzJiODFiMDA4MmY3ZDc4NThiM2EgcmVsZWFzZTIzLW1haW50CiszNTIwMCA5MjU2NWNjY2U5MmI4MGNhZDdhMzVmYzQ3NmUzMGZiOTc4OTBkN2ExIHJlbGVhc2UyMy1tYWludAorMzUyMDEgNjZhNTUwZTliMmZiNzVjMmUyMTIzNjFlZTA5ODRlOThmZGM1MGI4ZSByZWxlYXNlMjMtbWFpbnQKKzM1MjAyIGJiNzE0NmQxMTdmYmQzOTBiYTQ4YTIxYWZjNzA3NWZhZTE3NjRlZTggbGVnYWN5LXRydW5rCiszNTIwMyAzY2MzY2I3OTA0M2Y3MjE4MDBiZmJiMTM3MjJkN2FiYzExOTdjMDE4IHJlbGVhc2UyMy1tYWludAorMzUyMDQgZDQxNjVkMTJmNzNjMTlmOTY1MWViOWFlYThmYzc4ZjU0YjlkMmQ5NSBsZWdhY3ktdHJ1bmsKKzM1MjA1IDM3ZDUwMWI5ZTJkNWJiMGY4MjRiNmE3NWM4ZTlmM2I2ODRiZjEwYmEgbGVnYWN5LXRydW5rCiszNTIwNiA1NjY3MzdiZmFlYzk1MDU0YmRmNDVmMjIwNjkyNzY0N2U2OWU4MTgwIHJlbGVhc2UyMy1tYWludAorMzUyMDcgOGFlODhkYjc4NDNjMWYwYzBhNmUxOGEwMmI4MDgzZWNiOTJmNWIwOSBsZWdhY3ktdHJ1bmsKKzM1MjA4IGM1ODI0YzhjNmJhNzIyNzU3N2NhMmU5NTkxMzQwZWJiMjNkNDk2ZjUgcmVsZWFzZTIzLW1haW50CiszNTIwOSAwMzJjYjE3YWMyZDZjYmZiN2ZmZTRkMzY1MjE5Yjc5NWM0YjQwZWE0IGxlZ2FjeS10cnVuaworMzUyMTAgY2MxMGIwMTBmNDBiYTFlNGUyNTk0ZWZjNDVmNWM1Yjc3ZWEzNzBkYiBsZWdhY3ktdHJ1bmsKKzM1MjExIDQyMDAzYzg2MDBmNGQzZTM3ZDE3ZmY0ODcwNWJmOGMwZmE2Y2E1YmUgbGVnYWN5LXRydW5rCiszNTIxMiBkNWMwNDc4MDdjNjk3YjM0MWNjYzM1MTU3MDNkNDgxM2Y3YzA5NjAyIGxlZ2FjeS10cnVuaworMzUyMTMgYTU3NzQxMGU1YTYwZmRlNzA0MmJmZTcyOTUwYWRmNjM0OTBiMzQ5NyByZWxlYXNlMjMtbWFpbnQKKzM1MjE0IGFhYmQ5YjU0ZTQ2OWVmODgxMDFjNTVlODcyZmEyNGZkYmQ5ODk3ODggbGVnYWN5LXRydW5rCiszNTIxNSA4NWY0OTMyZDhmZmQ5OTcwMDU1NzQzYmQxNjFlNGE4NGUxZWVjNjg1IGxlZ2FjeS10cnVuaworMzUyMTYgZjA0Y2NjMjg4NTQyYjZkYjYyMzg1ZjU2NjFiYTYxNjQ4NTgyNjgzYSBsZWdhY3ktdHJ1bmsKKzM1MjE3IDQ0ZDQ0MzhlZDU3YTVhNmU4Y2UwMzk0YjQ1ODFmZGRkZmQ2Y2U5NTQgbGVnYWN5LXRydW5rCiszNTIxOCBkZTJlZDgwMGZhNTBmYTU1NjczM2M5ZTAyNWQzMzFmYTFiNTNlYWI1IGxlZ2FjeS10cnVuaworMzUyMTkgODQ5NWIwMjdiY2UzNjYwOTkyNTRhMjdiMWJkOGQyNDU1NWJiODBiYyBsZWdhY3ktdHJ1bmsKKzM1MjIwIDY2ZTQzZjI1MDQ2ZGE1ZTcwNTNiYzBjNjliMDBiNGY4ZDE5ODY0OWIgbGVnYWN5LXRydW5rCiszNTIyMSAxZGM5NmQ4Nzk3NGViNjg4YjIwZTEyZGJiNDE3OTU3MDI1ODJiYjI2IGxlZ2FjeS10cnVuaworMzUyMjIgMTc0ZGNmMTcxZGY1MmMzZjUzMjQxYTA1M2JmNWIwYjJiNDgxZGE3NCBsZWdhY3ktdHJ1bmsKKzM1MjIzIDdiMzRkODQ5YzIyOTAwNjVkMDkzY2FlOTgzZDdiYzcwMjRlZTk2ODAgbGVnYWN5LXRydW5rCiszNTIyNCAzY2U0ZmZhYzI3YWI0NGMyYTE5ZTBhNWUzMWJjMmQ4N2U2MDRlZTk4IGxlZ2FjeS10cnVuaworMzUyMjUgMzA4YzE5M2Y1MWUzMTc4NTZjYjFiYWQ0MmI2ZWQwYTRmNDRlMThmMiBsZWdhY3ktdHJ1bmsKKzM1MjI2IDI1YjMwNDM5ZmUyMjlmMDAyNmU0ZDdkNjMyM2U2ZWZjMTAxODgxNTYgbGVnYWN5LXRydW5rCiszNTIyNyBiYTlhYWRkZWI5NTY4NDdhZDA2NGVjMzZjMjQ2OGRiZDBhZWEzZDcxIGxlZ2FjeS10cnVuaworMzUyMjggZjMwYWFhYzAwMTk1ZTg3NjUzMmYzNTNhMmVlMWQ5M2Q4ZjUxNDUyYSBsZWdhY3ktdHJ1bmsKKzM1MjI5IDU3M2IwODlmYWI3MWQzZTYyNWJlOTFjODI2MzIzM2RmZTM4YTRjODUgbGVnYWN5LXRydW5rCiszNTIzMCA5MWFmNjViOTMyZDYyMjg4N2JkYjBkNmExZDA0ODI4OWNlYTEzNTRiIGxlZ2FjeS10cnVuaworMzUyMzEgZDViNGM0NGM3NmNlMDZhODRjZDUyZGNkYzJlMmUyZTdhNDNhN2NiNCBsZWdhY3ktdHJ1bmsKKzM1MjMyIGQ5ODRiM2JkMWNlYjFhMGQyYWNhY2JkMGM3MzQxODgxNTZjNDM2YTIgcmVsZWFzZTIzLW1haW50CiszNTIzMyA2NWQyOGZmZjExNzJlMTVmNzdmODQ1N2ZhYTc0ZmVjZDcxZjU2ZGE0IGxlZ2FjeS10cnVuaworMzUyMzQgNTNkZmY2MGY1NTA4OWJhYzNmZGJkZDcyN2RkNmViNDU4ODU0NmE5MiByZWxlYXNlMjMtbWFpbnQKKzM1MjM1IGUxNzhlYjQzZWZkZGVlOWI5YjMxZDMyYWUyMDJkZTFmOGU3YTIxMTUgbGVnYWN5LXRydW5rCiszNTIzNiA3MjcxMjBmYjAzNjUyZGMyODExYTY1YmRhNWJlNmRlYmU5Y2ExYTA2IHJlbGVhc2UyMy1tYWludAorMzUyMzcgZjU3ZjVjZTIyYzhkYzhkMjEzNWI5Nzk4ZDc5YjdhZmM0YTk4MjIwNCBsZWdhY3ktdHJ1bmsKKzM1MjM4IDA4ZWM0ZGI1MDY0ZWI2YTI1ZDRlODJiMjViZDc2OWJjNzgzMzU4ODcgbGVnYWN5LXRydW5rCiszNTIzOSA4OWY5MDcwZGMxYmMwYmMxMDkyOTFiMzM1ZTYzYzM2Mzc1NWE1YWU3IHJlbGVhc2UyMy1tYWludAorMzUyNDAgZmQyZDY0YWYyNjQwYWI2MTNjODEwYWIzMzEwZDczYmQ2YmQyNzEzMiBsZWdhY3ktdHJ1bmsKKzM1MjQxIGRiNGRhOTNmMGJhMGVlNGJlMGUxN2ExYjJlZDU0ODQ0MGU0YWVmZDQgcmVsZWFzZTIzLW1haW50CiszNTI0MiA4ZTIxOGNjOGVkYWIyYmRkZmUxOTNkMDNiOWViODE1Mjg5MzQzYTA5IGxlZ2FjeS10cnVuaworMzUyNDMgZmVhYmUyZmYwZTFlMDlkMmEzZDJlYmM3MzBmMzhiMjcwYTdlN2U1NSByZWxlYXNlMjMtbWFpbnQKKzM1MjQ0IDZhOGU4YTEzYzc0NTVmY2Y3YTkwNTAzNWNiNTZjMGRjM2I5M2ExOWMgcmVsZWFzZTIzLW1haW50CiszNTI0NSA0YzEyZDNiMDE2NmZjYjAyMTM5Y2E3NzI0MTMxMmE1YzkwZWVmMDE1IHJlbGVhc2UyMy1tYWludAorMzUyNDYgZmVmOWYyYTQxYzM0YzAzNzYwZjZmM2RkMzc5YTNmYzBlY2E3MGNlYiBsZWdhY3ktdHJ1bmsKKzM1MjQ3IDJiN2UwOGRjYWNiMTRjOTY3ODMzMWViODFmYTE0N2FiNmNkM2QyN2MgbGVnYWN5LXRydW5rCiszNTI0OCA1MWMzZDQ1MmFmMmYyY2ZiOGE0MDRkODczMTgyNDFhNDcwOGQyOTViIGxlZ2FjeS10cnVuaworMzUyNDkgNzVkY2YyNjY2ZDU0NDYwOTM4YjU3ZDFhNzQ4NWE3MjNkNjI0NjkzNSBsZWdhY3ktdHJ1bmsKKzM1MjUwIDVkOWEzZDc2Yzk0ZTYwMzYyZmU0YTUyMDE0YjkxNGMzNjRiOGYwMDIgYXN0LWJyYW5jaAorMzUyNTEgOGYwNjMyMDA5OGRkNjA0MTNhMzBjNjEzYThhOTJhZjdkMmVjYzRiOSByZWxlYXNlMjMtbWFpbnQKKzM1MjUyIDE0Zjg2MGIwM2JlMjczYWE5Y2FjMjVmMWExMjYzZGJjZTY0ZjEwMDAgbGVnYWN5LXRydW5rCiszNTI1MyA1OTUzOGQzYjdjZDJkNWQzZDJlMTNiNTI2NDZmN2NjOGVmOWIxZjI0IGxlZ2FjeS10cnVuaworMzUyNTQgZWI0OGIyNTAzZjIwMWQ0NGI0YWRlNjRmYzZkM2EyMDg0ZWI1YTk2OSBsZWdhY3ktdHJ1bmsKKzM1MjU1IDJhYmM1MmMzZDRjMmZjZWFjMzY1YTFkODk1NmU4ZmRmZTg5YmRhMjAgbGVnYWN5LXRydW5rCiszNTI1NiAxZjVmNmNjYTJmMjEwZDEwOGM3ZmQxODgxOWFkOGU0YjZlYTczMDNlIGxlZ2FjeS10cnVuaworMzUyNTcgZWI2OWVlY2FiNGM3YjZjMGExNDQxNTFiOTA2MjMwN2FkMTM5NWJhNyByZWxlYXNlMjMtbWFpbnQKKzM1MjU4IDM1NDEyOTE0MzgwOTRjZmNlYjBjZDY3NDhkOTc0NThiZTM5YmE1N2EgbGVnYWN5LXRydW5rCiszNTI1OSA3MTg2NDgyMDQwMmQ2NTY5ZGU0ZWM3ZGM3N2Q2MjFhMjgzZThlNWVlIGxlZ2FjeS10cnVuaworMzUyNjAgY2U1OGQxY2M2ZjQwNWYzMzE5MTQ4ZmI3MDYzOTc0MWQyZGJiYzFhZiBhc3QtYnJhbmNoCiszNTI2MCBjZGM2NjI5MmU1NWQzNjllNzRiNGIzMjI2YmNkZDgyNzFjZTcwOGEzIHJlbGVhc2UyMy1tYWludAorMzUyNjEgMjIxOTllZjY0ZmZhMDQ1MmFmZjJiNjlhZjc5OWVhYzc5NDZlZmIzNCBhc3QtYnJhbmNoCiszNTI2MiAxMDZmYTk0YjQyZGUwYzkwNWEwZmZjNGIwMDViYzViMjgyYjFhMjgyIGxlZ2FjeS10cnVuaworMzUyNjMgNWE0NWI1YzIzNzFlODg1MTU0Y2I3ODE5MWM0NDEzOTE4YWI0NDhmMSByZWxlYXNlMjMtbWFpbnQKKzM1MjY0IGVhZWVhNTg3ZjkwYTI5NTU2ZmQzMjQxZTAyYjY0MWJmYjAyY2ViZDYgcmVsZWFzZTIzLW1haW50CiszNTI2NSA1YmVkYmE1NWJhMDM3ZmUyYzJmMzhiNWFiZDA0Y2Q2YTcyYmQ2MDhjIGxlZ2FjeS10cnVuaworMzUyNjYgNTQ1MjI5ZGZkOTA5ODU4N2Q0M2IzNDFhN2VjYWE4MGExYjAyNmZmNSBsZWdhY3ktdHJ1bmsKKzM1MjY3IDcxYTI5NGJkNzk1MDljZDQyMDk3Nzk3ZTM5ZDYwMjZlZjkwMzA1ODEgbGVnYWN5LXRydW5rCiszNTI2OCA5YjNkYWVjYWFmMjU0NGQ5YzFlMGYwYzU4NWMzNTg5MGM2MzFhNjk5IGppbS1tb2R1bGF0b3IKKzM1MjY5IDE1NjAwYTIzNzQ5MmEzZmRkNTE2YTA5OTcyMTVmM2Q2MGM2NTgwY2UgbGVnYWN5LXRydW5rCiszNTI3MCBlZTQ0YmU4ZTE5ZmNjOTRhMjYyZjE0MzE3YTc2ZDIwNmM5NjFiMjUwIGxlZ2FjeS10cnVuaworMzUyNzEgMmU2MmZjOTc4ZDhhZTk3YzNlYzU2MjUwZGZlMWZmZGVhYTAwMjM1YSBsZWdhY3ktdHJ1bmsKKzM1MjcyIGJkMGFjYzQyODI5ZWZlNDM5N2FjODJkYTQ3ZmMyODUyZDhjZWE4ZTkgbGVnYWN5LXRydW5rCiszNTI3MyA1OGQ1ZWRlNWY0Y2UyZDk3ODdjNDUwNTNjMjg0YjU3MWM3ZjFmMGE2IGxlZ2FjeS10cnVuaworMzUyNzQgNmI3YjJjNjJhYjEyNjA4ODQxZjI1OTBlZTllYjMxMzIzMjA3MmVkNiBsZWdhY3ktdHJ1bmsKKzM1Mjc1IDIzOTQ0MzkzMzMyNGIwMjNmN2NlMTlkNmZjOWRiZTRlOTY4ZTBjNWIgbGVnYWN5LXRydW5rCiszNTI3NiA3NmM4MTM4OTRlZTZmMzA1NTVlZWU5ZjVjNTY5YjkwNzkxZGMwNTQxIGxlZ2FjeS10cnVuaworMzUyNzcgM2Q5MjdlMWM3OGM4ODRkMTY3YzZmMmMyNGE1NTI0YmY1ZWJiZDdmOCBsZWdhY3ktdHJ1bmsKKzM1Mjc4IDRlZjU2OGM2NTNkOWM2YmNkOGRhZjYwNzRlYzliOTg2YmUxNDA2NDMgbGVnYWN5LXRydW5rCiszNTI3OSBjZTAxMDZkZjZhNmE2MzI1ZTM0YTlmZDFlOGIzZWYyYTI5NTY5Nzg2IGxlZ2FjeS10cnVuaworMzUyODAgMjdiZjA1YjJhNGY5ZTNiNjRkYTJhMjNjY2E3MWM0MGFmNjQzYjE2NyBsZWdhY3ktdHJ1bmsKKzM1MjgxIDEyMzNiZDk1ZGExYTkzZjllMmZjZWVkYzFmYWY0YTQ1YmFkYWQ5ZjQgbGVnYWN5LXRydW5rCiszNTI4MiBiZmI0MGEwM2NjMGMwMWZkYzgwYWUxYTlkODc5OGY0NTVlMWU2YjFlIGxlZ2FjeS10cnVuaworMzUyODMgOTVhMzJjNzg2NzJkYjNlMmNiZjgwOTcyMTYxOGZhYTBlODRkZjdjZSBhc3QtYnJhbmNoCiszNTI4NCAzNTQ5NWQzNmVjOTU3YWM2NDAzZmEzMDMwYjcwOGE4NTU4ZmE3MTk1IGFzdC1icmFuY2gKKzM1Mjg1IDhkNDljMjllOWFjMWU4MWExMTdlNDViOWJkOWM2MDgxZGZmNzFiNmMgYXN0LWJyYW5jaAorMzUyODYgM2JhNGVhOGZjZTNlNTAxZjMxMWZhZWZjMDA2MWYzNTE0ZmRhZjYyNiBhc3QtYnJhbmNoCiszNTI4NyBmYTk4MTM1MDk3NmNiZWVlNWU2Yzg4OWFhMDY1N2IzODg4N2EyZjIzIGFzdC1icmFuY2gKKzM1Mjg4IDI1YTM1ZDhmNDA4MzdjMDNiZmY1MTE4NmRlMTMxMzg0NTA1ZWFlMjAgbGVnYWN5LXRydW5rCiszNTI4OSA3ODM2MmFhYTQ5MWRmZmU3YTJlY2E3YTFlOTc4N2U4MmQ4YzA3YWRiIGxlZ2FjeS10cnVuaworMzUyOTAgNDI3ZThiYWE3MDU3NGJlMmUxOWEwMmFmYWE0NWIzNGVhYmFjMTljOSByZWxlYXNlMjMtbWFpbnQKKzM1MjkxIDM1YzBhYzhlMDg3MTM1ZjVjNTU5NmQ2NjA5MjNkMjZiYzBjM2JmOGQgcmVsZWFzZTIzLW1haW50CiszNTI5MiA1ZWVlZDUxZTgyYzRkYjFjMmZhMjVlZjFhMDNkNjk5MzEzNWU3MzFmIGxlZ2FjeS10cnVuaworMzUyOTMgZjZkOGNmZTdjMDAwOTk2ZDIyOTVkNDRlZGU2ZWI4ZDMzMzY5NzAyZCByZWxlYXNlMjMtbWFpbnQKKzM1Mjk0IDdjMDUyYmU0MDE2OTNiNmUzNzJjYzE1YTg5YjJjMThhZDUwMzJjZjEgbGVnYWN5LXRydW5rCiszNTI5NSA2NGMwOGRiOGRjZTQ0NjBlYTBiZDc0OGFlMTM0YzlhMjQzNzg2NzY1IHJlbGVhc2UyMy1tYWludAorMzUyOTYgNzliYzU2YmY5MjIwNzQ3ZjdlOTliNjBjY2M2NGNkMDQ4ZDFhZjAyZiBsZWdhY3ktdHJ1bmsKKzM1Mjk3IGIwYzZmN2M1YWRlNjVhNGY0NWU1MDdhODMyNTA4Y2M4MGRhMmU5OTkgbGVnYWN5LXRydW5rCiszNTI5OCA5ZjQ1YTJkMzY2NmRlN2RkYWQ0MWIwZDc4Y2QzYTk2OTg5NmM2YTA1IHJlbGVhc2UyMy1tYWludAorMzUyOTkgMGEzMzRiMjI2ZjNhMzExZDdiMzE4NzI0YzJiNWY5OWY5OGI3M2E0ZSBhc3QtYnJhbmNoCiszNTMwMCBlYzYyMzJlZDkxMTUyNWJlNDQ0YTc0ZWRkZDVkOWMwMjNhNjhiMWFmIGxlZ2FjeS10cnVuaworMzUzMDEgZDk4ZDAyNTViYjBmZmQ4ZTRlMDM3Yzc1MWJjYzcyZjk5MDJiOTM5ZiBhc3QtYnJhbmNoCiszNTMwMiBhYjMzOWQ4MGM5YzlhZjdkYjkxNmM2YzhmODhjNmVlMGI1NmNjOTgzIGxlZ2FjeS10cnVuaworMzUzMDMgYTU0NTdiNjIwMjI2NThhOWVmOGQ4OTE2YmFhMmEzYWYxY2UzY2ZkNyBsZWdhY3ktdHJ1bmsKKzM1MzA0IDcyZTk3MGMwYWNjYzEyMjVkODQ1NmYzMGM4MWFlMWRiYzBmMThkMzkgbGVnYWN5LXRydW5rCiszNTMwNSAzOTEwMTE4NDBhMDNmNzY3Mzg2ZDA3NDM1YTU2ZDk1MmM1YmE1YmE1IGxlZ2FjeS10cnVuaworMzUzMDYgMmM4YTQzMDYzZDgyYzhkY2RiZjUzMTNlYzE0YzYwM2EyMzhjNzQ5YSBsZWdhY3ktdHJ1bmsKKzM1MzA3IDQ3MGY5NWFkNjc1MDdkYjRmNWNiNGMzOTQwNzI1MmEzZTk4MmM3NDggbGVnYWN5LXRydW5rCiszNTMwOCA5N2ViZTQwMTRlZGM5Y2UwOWE3ZjlhZTFhNzA5YzQ0NDY1NGY5OTk4IGxlZ2FjeS10cnVuaworMzUzMDkgM2RhNmMyYWRhZDM0M2NjNjA5MGQ1MjdlYjE5NjAyN2U1ODE4NTFiZiBsZWdhY3ktdHJ1bmsKKzM1MzEwIGJkZjAwNmRlZTY5ODZiODA1ZWZjYjljODAxYjU3ZGZmODg0ODZiMjYgbGVnYWN5LXRydW5rCiszNTMxMSBhMTU3Y2MyMGYxYjdkYjVlN2ZhYWU2ZmRlZDdiMmYxMDBhYjQ4NDk2IGxlZ2FjeS10cnVuaworMzUzMTIgMjI2MzI1MGQ3YjJmZDMwMjU2N2E0ZDUxY2Y4YmI0NDJlZDI0MjcyYyByZWxlYXNlMjMtbWFpbnQKKzM1MzEzIGE2ZDhkNWFjZTZhNzhkNTVjNzc5MGNmODRiYmNiMGQ4NThjMzllZGUgbGVnYWN5LXRydW5rCiszNTMxNCAzODI4MzM5YWRmODY3Y2FlNmYxYmUyNjgzYzVmY2I0YWY0MWJkY2I0IGxlZ2FjeS10cnVuaworMzUzMTUgMTE5ZDAxODJiZDVlNDMzNjRjMDk0NDJmY2Q4YmQ0OGMzMDZiNDkwZiBsZWdhY3ktdHJ1bmsKKzM1MzE2IGMzMDNlYzAxOWNiMmM4ZDEwNDMwMWE2MDc3MzgyNTcxNzRhMDZhMjIgbGVnYWN5LXRydW5rCiszNTMxNyA5Y2FjOWQwYjE5ZTMxMzFlODU4MDA1OGVlM2VhZTVlYzYwOTFjMmExIGxlZ2FjeS10cnVuaworMzUzMTggY2M3OTQzMTg5YTViY2FjMTNjMDI3ZDZkMGNkMGE5MmQxZTllNjc0NSByZWxlYXNlMjMtbWFpbnQKKzM1MzE5IGM3NWE0ZWRkMWU1MjdmMDZkNGNiMGI5NjJiZmY2MDVhNjBmMDcyNmYgcmVsZWFzZTIzLW1haW50CiszNTMyMCBmMWUwYTdjNDhmMzYwMzM5ZGI4Mzc0M2FlZTlmOWYxY2UzNzJhZDEwIHJlbGVhc2UyMy1tYWludAorMzUzMjEgNmRkMzhlNDU4NmZmZmQ4YTY3NWMwNDRjMTgxMzU4NzNiM2U2MTdkOCBsZWdhY3ktdHJ1bmsKKzM1MzIyIGY0NTdmMThmNTkyMjEzOWZhNzI1NzFiMDA3ZmVhNDMzMThhNDlmYzMgbGVnYWN5LXRydW5rCiszNTMyMyA0NzViZjRlNzkyMGVkZmNjNjk4NDNlYjkwMGE0YjMzNDNhYTM1ZmZhIGxlZ2FjeS10cnVuaworMzUzMjQgN2E3NjFjYWQ3NTEzZDM3ZDlhYTMwNjJiOWZkYmJmZmM4ZGVlYzQwMyBsZWdhY3ktdHJ1bmsKKzM1MzI1IDkxMWIzMjE1ZDBkYzQ2ZDBiMDQzODA1OGVkMGRiM2YxZDk3YjdmZmIgbGVnYWN5LXRydW5rCiszNTMyNiAxYzA2NjM3MTZkYjM1N2RiNDI3OWE4ZjAyNjIzYmVmOTBiM2UwN2IxIGxlZ2FjeS10cnVuaworMzUzMjcgOGEzOWE5OGM4NzgwMjRjM2RmMWFlYjMwY2QwNzA3ZTY0MTRiYjkxOSBsZWdhY3ktdHJ1bmsKKzM1MzI4IDQ2MzJmY2M1NTQ0YTE0NmNjZDQzYzgxY2ZmMGNiZjZlYmVkNmY4ZWIgbGVnYWN5LXRydW5rCiszNTMyOSA4MzUwMmUzMWUwNmUxOWQwNWU4YWFiNjliMDE5NzFlYTRkNzdiMjk3IGxlZ2FjeS10cnVuaworMzUzMzAgN2U0ZTMxMzdiMjUyN2EyOWZmMWRjNzI5YTA2YTY5NGVmZTNiNTk2ZCBsZWdhY3ktdHJ1bmsKKzM1MzMxIDc4Zjc1OGFiYzc5ZjI5ZTMzYTY1ZGIxM2EzYzQwMGFmYTE3MGIyMDYgbGVnYWN5LXRydW5rCiszNTMzMiA4ZWMzYWE4NzllZWVhMGZmOTAzNDdhMGEzMTMwNDQ2Zjg3YjA4NTliIHJlbGVhc2UyMi1tYWludAorMzUzMzMgM2M5YjRmYzNlZjE0N2MwOTljYzIwZDcwNjRjYzgwMTNjYzJiZDkzNSByZWxlYXNlMjMtbWFpbnQKKzM1MzM0IGMzN2M0MDdmYWY1MmVkOTJjMTJmZDc0ZDliNzYzYzhlMWJiMmI2MTggbGVnYWN5LXRydW5rCiszNTMzNSAxOWI2ZmVjMmU1MmQyOGIyNDBjYjVlNDEwZGQ2MTgyZjVlMjhlZGE0IGxlZ2FjeS10cnVuaworMzUzMzYgNjUwZWYwMDllMDhjMTk2ZmE0NmJkNzI3NGQxM2VlYzg1MjRlNWY0NiBsZWdhY3ktdHJ1bmsKKzM1MzM3IDY4ODIyOGFiMDVhZWI1NzQyNTEwYzFiZGY3OWYzMmVjNmM3YTg1MjUgbGVnYWN5LXRydW5rCiszNTMzOCA4MTgzZGQxYTRmZTZiYmNmMmZlOTY0ZTkwOGQ0ZTJmMjRmMzE4ODMxIGxlZ2FjeS10cnVuaworMzUzMzkgYTlmZDQ3NjQ0YzBmNzk4Y2U1YzIzYzg2NDIwNzMxMTE0OTU0ZDY5MSByZWxlYXNlMjMtbWFpbnQKKzM1MzQwIGYyZDk0ZmYxNWFjOGY0Mjc5ZjE5Y2YzYThjYzRmMWI5YmQ0YjJiYTcgbGVnYWN5LXRydW5rCiszNTM0MSA1ZTc0NTVmYjhkYjZiNWZlNGFiNWY1ZmRhMmZkYmY0YTU1MDBlYjNmIGxlZ2FjeS10cnVuaworMzUzNDIgMjIyMWY5NjAxODBkZjcyZWE0OGZmZmI0MTBiMjI4YzQwYTllYTI3NSByZWxlYXNlMjMtbWFpbnQKKzM1MzQzIDBiMTM3NjE4MjBiMGMxZDg4OThlZTVjY2JkYjJlNjE4ZGZiOTk2Y2QgbGVnYWN5LXRydW5rCiszNTM0NCA3YWJmNDI0Nzk4ODBlNWY1OTVhZjZlYTNkN2I3MjViYjg5MjE2YmFhIGxlZ2FjeS10cnVuaworMzUzNDUgMmM2MTIzZDkyNWZlZTk2ZmVkNTAzN2MyZmNjNWUxNDEzNTJmYzQ5NiBsZWdhY3ktdHJ1bmsKKzM1MzQ2IDU0Njg1ZDlmZmI4NzZiYTRiZjk3YTJmODhmYTkxM2IwY2Q3YWE0OGQgbGVnYWN5LXRydW5rCiszNTM0NyA0YjJkNmQxMzAwNjE5OTlhOTlkYWQ4ZmZjZGYyMDMyMmRiMDQ5MzkzIGxlZ2FjeS10cnVuaworMzUzNDggNjlhYzY3MmI0OWIzZWM3YWVkMzNkYjZkZjU4ZTk2MTI1ODhmNWU1OSByZWxlYXNlMjMtbWFpbnQKKzM1MzQ5IGNhM2M5OThhZmE1NTVmZDMzZGRjNTUxYjBkZDY0YWZkYTBkODNkNWMgbGVnYWN5LXRydW5rCiszNTM1MCBjNzIzYjBjMWE3ZTFkYjRhZWNhMjhlNTNjMjAwZjQ0YmQ1MTU3NmUwIGxlZ2FjeS10cnVuaworMzUzNTEgMjZhODBmMGFmOWYzYWU3NWEyMmQwNjA3MTA2NjU2ZGUxZjMzN2M5YiBsZWdhY3ktdHJ1bmsKKzM1MzUyIGM2NzUzZGI5YzZhZjhlMmVkMDRmYjA2OTA5NTc0MjQzYTdiZjM0ZjQgbGVnYWN5LXRydW5rCiszNTM1MyA3MDZkNmQxMWVlMzYzODE5M2VhNmNiM2UyOTM5YWY5NTY0NTdiMDJkIGxlZ2FjeS10cnVuaworMzUzNTQgMTIzNzE4ZDBkYzA5ZTQ4ODUzN2RjN2IyMmI1NTJlZTEwNGVmZWRjOSBsZWdhY3ktdHJ1bmsKKzM1MzU1IDY1YzUwMmI2MGI0ZDE5YzEyMjcxOGQwMWE0YzRjYWRkMDNiNzRiMmUgbGVnYWN5LXRydW5rCiszNTM1NiBhZjI1Y2NjNzVmZWFjYjllNjRiNzY4MjZhMTljNzhkYjg1OTYyZmFiIGxlZ2FjeS10cnVuaworMzUzNTcgMDVlMWMyN2MwYTc0ZDgxYjUwYzQyNmU1MDkyNmNkMzI5YTc5MzA2ZiBsZWdhY3ktdHJ1bmsKKzM1MzU4IGNkODdmZjZlYTgxNDBlZjNlMjFkN2Y5ODQ3N2JjYTY3YWE0YTIzMjIgbGVnYWN5LXRydW5rCiszNTM1OSBmMWQwZmE2OThiNzM3YjhjMzYyMmFmNTA5YjlkYTQ2MjViNTFhYTA2IGxlZ2FjeS10cnVuaworMzUzNjAgZDdmZjA1MTM3Y2VhM2RmNTY1MjMzYjIzYTExMmFhOTViNGNjNTRiNCBsZWdhY3ktdHJ1bmsKKzM1MzYxIGYzY2I0Y2FkNTg1ZTY2OTQ5OGY3MGNkMjAxZmFkNjcwMTNhYTA1M2QgcmVsZWFzZTIzLW1haW50CiszNTM2MiAwNmQ4MjRmNWYyYzk4ZmY1NWZiZjhkMjIwM2RhZGU1NmEzYzM2OTI5IHJlbGVhc2UyMy1tYWludAorMzUzNjMgMTU1NTNhMWI3YTE3YTEwMjc0MTAxNGNmNzcyMzBiNDkyMjFlNjdkNCBsZWdhY3ktdHJ1bmsKKzM1MzY0IDA3MWVlMGZmNzQ2Nzg5NjhjMmNjODg2NTMwM2U5OTRmMzBkOGJjZDggbGVnYWN5LXRydW5rCiszNTM2NSAyZmVkMzMxZGUwMTRhNGMyY2Y5ZTY3MDNkOTAxZDBiODc1NjQ1MzQ1IGxlZ2FjeS10cnVuaworMzUzNjYgZmQyMTAzYWU2ZjI5YTFlMDZiM2ZmOGNmNTQ4YWRiNjRmY2EyZDRhMiBsZWdhY3ktdHJ1bmsKKzM1MzY3IDhlY2VlOGY0NzEwOGM4YjVhNzVjZGVkY2RjMmQ3NjVmMDYxY2RlYmQgbGVnYWN5LXRydW5rCiszNTM2OCBhZThkYmY1MDAxNzJhMWFjMWI5MzU0YjE4ZTE5NTBjY2UxNzBjNDJjIGxlZ2FjeS10cnVuaworMzUzNjkgODBiZDJiODVlZDhhMWU5OTc5YThlNjlhNDNlN2VlNjhiYmY1Y2Q3OSByZWxlYXNlMjMtbWFpbnQKKzM1MzcwIGRmZGJjMDA1OGQ4NTkwZTIxODU5Y2EwMzY3NjVhYTRlYmZkN2VmOTYgbGVnYWN5LXRydW5rCiszNTM3MSAwOTc5ZmEwNjJkZWJmZTdkNmM1ZjA1NGMyODdjYmIyZmJhYjQzZWY4IGxlZ2FjeS10cnVuaworMzUzNzIgMjQ4YmViOTlhMzA0YzkzZWJhNDY0MGRkYTgyOGUwM2IzMGU0NjMwYyBsZWdhY3ktdHJ1bmsKKzM1MzczIDQ2ZGYwOGViMDgzOWU5Y2Y1NmE4MGYwODcwYzlhNjE5MTI3YjUyMGMgbGVnYWN5LXRydW5rCiszNTM3NCBjMmRmOGE1YzM1N2UwMGU2MDFkM2JlMGFjMTQ1MDY1MzZmZGYzMTBjIGxlZ2FjeS10cnVuaworMzUzNzUgNzM5YWI5ZGUyYTFiYWFkNWZlMTFiODc4MGIzYTZlYWNhMjExMmMyMCBsZWdhY3ktdHJ1bmsKKzM1Mzc2IDViMzg5OGQ5YmE1OTc3YWM2ODA0YmNiYjhjZjFjYWFhYzAxYmE1OWUgbGVnYWN5LXRydW5rCiszNTM3NyBlYmJhNTU4MmRjMGRiNTM2MWY0YjQyYzAzMGVmNGUyNTI2MzhhMWRiIGxlZ2FjeS10cnVuaworMzUzNzggYmMwMDY2ODJhY2IyMWExZTFlZGNlMWMwMTI4ZjVjNTA1YThkMTNkNyBsZWdhY3ktdHJ1bmsKKzM1Mzc5IDhmNjAyMTdhNzU0NzU5OWRhMjBhNWYyNDBlYTdjM2Y1YjUxNWNkOGUgbGVnYWN5LXRydW5rCiszNTM4MCA0Nzg5MGMzOTVlYmFhMjBlNGJlMWNiN2Y3NTRjNGZiNGNiY2JmNDVjIGxlZ2FjeS10cnVuaworMzUzODEgNjM1ZWViYzQ3M2IwNjVjNzU0YzhmY2U0M2Q3YTMyMzZhNDMwMTFlNSBsZWdhY3ktdHJ1bmsKKzM1MzgyIDcwODBhMDIxMGNmMTg3ZjIwOWMyMzMzYjM2YzU4OTNiM2EwNTQxNjEgbGVnYWN5LXRydW5rCiszNTM4MyBkMzRlN2VhZjRjZDZhNzQ3ZTgzNmZlZDYxY2E5MGFhZTY4YzAzYzVmIGxlZ2FjeS10cnVuaworMzUzODQgYjc5NTQzM2UwYmQ5MTk0MWQ4ZDdjMGE5MTZhZDExYjkzYTNlZDljOSBsZWdhY3ktdHJ1bmsKKzM1Mzg1IDFiMDJjNzdjZGNmZTEzNWMwYzMyNzgyNGZmODlmY2UyMjljNjEyOGIgbGVnYWN5LXRydW5rCiszNTM4NiAxNTQzYWZhYjFiNjcyYjEyNDdiMWJlODYwNWIxODc0N2ExOWQ5MmM3IGxlZ2FjeS10cnVuaworMzUzODcgN2U0ZGQ5M2Y0YjI3MTMxMjY2MDYxOTQwYTRhODg4ZDRkMWVhNGQzNiBsZWdhY3ktdHJ1bmsKKzM1Mzg4IDcyZTM4YmQ5NGU1Njk4ZjZlMzA5YWYzMjAyMDlmMjM5ZDM3OTEzMGMgbGVnYWN5LXRydW5rCiszNTM4OSAzMTU3N2MyODE1ZGU1MWQ5N2EyODQ2ZWY3NDkzMWRmNTc4YWU1YjM1IGxlZ2FjeS10cnVuaworMzUzOTAgYjRlNGRiZDI0ZmU3N2ZjNGUyZWI2YThhNmNmMmMwOThjOTBmNTczNCBsZWdhY3ktdHJ1bmsKKzM1MzkxIDIyOGQyNjRjNWZiYmQ5ZDhhYjE1MzY0NTdmYTI4OWRiZDJjZDc3OWEgbGVnYWN5LXRydW5rCiszNTM5MiBkZDY5ZTNmNTIyNWJhZmU1MDg5ODFhYzJkZDZkZjFiOWVmNWYyYWExIGxlZ2FjeS10cnVuaworMzUzOTMgNWJkNDU1NjM4YzdhOGE0OWQ0ZGYzMjlhOGEyYzRhMTczOTBmMzBiZCBsZWdhY3ktdHJ1bmsKKzM1Mzk0IGVjNmJhMDNiYTk2MjdkZWI4ZjM0NmEwNjRjMDFjYzRmYzdlZjhmODIgbGVnYWN5LXRydW5rCiszNTM5NSAwNGViMmViYjQ2ZTI3YTFmMjZmYjg3NzA1ZWY5YTg0N2Q5ZjkwMjYyIGxlZ2FjeS10cnVuaworMzUzOTYgOTViZmI2NTNmZmZiYTAxMjA4OWEyM2VkNGE4ZjM1OWU5Njg5MmM2NyBsZWdhY3ktdHJ1bmsKKzM1Mzk3IDEyNTNmNmUyMGNkZWUwNWI0ZDZkNzdmNTJjNzc4OTQ4YjgxY2RjNmEgbGVnYWN5LXRydW5rCiszNTM5OCAwZDUzZWNmMjJkOTE1MjNkYTUwMzY0ZmMzYmUzMWUzYTZlODY0ZmE2IGxlZ2FjeS10cnVuaworMzUzOTkgMDQ3MTQ4MDg5YzM1ZDU5ZTdhY2JhZmJjNTFhZjczMjhjNzcxOWNiOCBsZWdhY3ktdHJ1bmsKKzM1NDAwIDQyZjg4MjA2ODZjOWViYTdkOTlhOTBkYjg0M2IwZDFiYTBhODQwMDAgbGVnYWN5LXRydW5rCiszNTQwMSBlZWE2NzRiZjdiNTlhODZhZTIxNTk2Zjg5OTMzNTkyM2Q0ZjRkNGY4IGxlZ2FjeS10cnVuaworMzU0MDIgMzBlMzA1YmZkZGRiZGM0ODhkNzc1MWJjZTU2MWY4YWQwNjUyZmE0NCBsZWdhY3ktdHJ1bmsKKzM1NDAzIGEwZmIyN2I0NGQ3ODM4M2EzOGJmZjdiMjJmMjAzOGM1YmNiNTczOWYgbGVnYWN5LXRydW5rCiszNTQwNCBkZjA2NDc5YzZlN2NkMTFkMmQ0NzE3ZDZmYzYwYjNiZGExZDAzMWU1IGxlZ2FjeS10cnVuaworMzU0MDUgNTc2MGI0ZGQzYTIyNGU0NzdlMWYxYWU1NmE1ZmZjNTQ2OTNiZjAzYSBsZWdhY3ktdHJ1bmsKKzM1NDA2IDgzYjAzODJlMGQzNjI1YWE5ZDc0YjA3NDYzOTc0YmVlYTE1YzgxMTIgbGVnYWN5LXRydW5rCiszNTQwNyBkMTBjNzc4YWYxNjdhMGYzY2VmNWZlMDU0ZDM3OGEwMjA3MzA2NGFjIGxlZ2FjeS10cnVuaworMzU0MDggNzY5NDQwODRlNzU2YTE2YjhkNTgxYzkwNGUxNjRmZjhmODZlNDVmOSBsZWdhY3ktdHJ1bmsKKzM1NDA5IDI0MzY0MmJiZDAzZjM1ZTQ1ZTFjNmE4ZTM5NzRlZDMxMzQwNzExY2IgbGVnYWN5LXRydW5rCiszNTQxMCBiZTc4MmQwN2M1MThkMjhiMjU4MTZmYTg0MDZhYmRkZWI1MTk0ZTJhIGxlZ2FjeS10cnVuaworMzU0MTEgMzVjYjgxMTRiNDVjMjViMGU5M2EyMjQwYzc5NDJmNjQzYWJmMGY0MiBsZWdhY3ktdHJ1bmsKKzM1NDEyIGVmMDZjMjEyNGNiMDZlMWY1MDkzZDUzY2RjZDM3NjBmYTcyNWU5YzUgbGVnYWN5LXRydW5rCiszNTQxMyBmMjYwMDQ0OGU4NWM5NTA2NTc3YzYwNzViMDA5MjFhOGY5MmRhZmQxIHJlbGVhc2UyMy1tYWludAorMzU0MTQgN2ZmZmRiOTRhMTcyZGE0NWQyMWMxZTZkNmY4ZjU4MjU5MDViMDZkYyBsZWdhY3ktdHJ1bmsKKzM1NDE1IGYyNmQ4Mjg2YTQzZTllNDVjNGZmMGE5MjBmZjk3MDM0YWViYTJmMTUgbGVnYWN5LXRydW5rCiszNTQxNiAwMzY5M2FmNDZhZmJjZWJlNjZlODk5MDlmNjkwYTYwNDdlM2Y1N2QyIGxlZ2FjeS10cnVuaworMzU0MTcgMjZjZjI1ODZmMmZkMjk5ZTIwNzY5ZDA4NGUzNDhhYzU0N2EwYTE2NiBsZWdhY3ktdHJ1bmsKKzM1NDE4IGI4OTkyZTc4MTg0MGEwODVhMzQyYzUwNTEzMjhmYTY4NWRmNTA0N2EgbGVnYWN5LXRydW5rCiszNTQxOSAyMDZkODU3NWY2NDQxOWZhNjZkMzk2YTE4YjM5NjE3NTliZjFjMjQ3IGxlZ2FjeS10cnVuaworMzU0MjAgMzVmNTZlMDg3MjdmOTU5NTMzYzk2YjUzY2NjMDU0ZjkwMDMyZDI5YyBsZWdhY3ktdHJ1bmsKKzM1NDIxIDE1MmFkYWY3NjVlYjJmMDVmMDUyMTg5MDNhZTY4MjFkNGYzMmI4ZjUgbGVnYWN5LXRydW5rCiszNTQyMiA4OGU5YzA0NDRkNGRkYTdlYzc4NjNiMjcyYzU4NzA4ZGI3NmFiN2FjIGxlZ2FjeS10cnVuaworMzU0MjMgM2Y2OTNhNzcyNjk0ZTIzMTE5NzA4Zjg0ZGU4NDI2ODg3OGNhYmY5YSBsZWdhY3ktdHJ1bmsKKzM1NDI0IGJhOTg5OTZiNGQ1MGE4MWNiYjYwZTU5ZWNlYjE1ODQ4ZDllNWJjN2IgbGVnYWN5LXRydW5rCiszNTQyNSA5YTRjNDljNWFjMDNjYThiMGVkMTcxMWU0MTViMmUzZGI1MTg5OTJkIGxlZ2FjeS10cnVuaworMzU0MjYgYWU2MDM3YTNhZGNlOTk1NTZjNTIwMzVlZGRlYzhlZmQ4YzdlY2RhYiBsZWdhY3ktdHJ1bmsKKzM1NDI3IGEzODMwYWUyOTRhZTY4M2RiMjFjNDFhNDdmZTc0ODRkYzU0ZDI2YzAgcmVsZWFzZTIzLW1haW50CiszNTQyOCBhZTZmZGE5NjBkMzliYzMwNDlkYTA1NDAyOWIyOWQxZWNkNDcwMDJlIGxlZ2FjeS10cnVuaworMzU0MjkgNjA2ZjA0NzNhOTY2ODdmNDg5ZjVmYzNjMzgwMjE0OTUzNDRlNDE2MyBsZWdhY3ktdHJ1bmsKKzM1NDMwIDZiY2NhNDc5MTg0OTliNWRlZjEwODg0YmM4YzFhYWNlNDE1YmE0MmEgbGVnYWN5LXRydW5rCiszNTQzMSAwOGMzYjQ5MDU5NjFkZjYwMzJkYjY0NGQ3YTkxMzU4MjMwNzc3YjQ5IGxlZ2FjeS10cnVuaworMzU0MzIgYTZiY2Y0ZGYxYTg1NzZkYmE5ZGRlZDU3ZTVlOTAxYTE1NDdlNjk4NSByZWxlYXNlMjMtbWFpbnQKKzM1NDMzIDUzMGEwZGUzNTE3YWFmMGU5ODM3ODNlOWE3NWFiNTkxOTE1ZjQ1MjggbGVnYWN5LXRydW5rCiszNTQzNCAyODMwZDhlMWFmMTg1YTU5ZGM5MjM1ODgxYmY2OWFmYTI0NTAwYmRkIGxlZ2FjeS10cnVuaworMzU0MzUgZjczNzRlM2IyNzlhODhjNzMyMjFmMDBkYzk5NDVkYjEwYmRjNzc3ZSBsZWdhY3ktdHJ1bmsKKzM1NDM2IDJiZmM4ODY2ZWE5OTM4NjhlYzIyOWY3MTRiNTE0M2I0NDBlZmQxOTMgbGVnYWN5LXRydW5rCiszNTQzNyA3YmIwMzAwNjZlYTRiNjUwOTczMTE0ZWVkZThhNDhkYzY2NjUzMGQwIGxlZ2FjeS10cnVuaworMzU0MzggYzBhNTQyYTFmYzFjOGI5YjdiY2EwYWU2NWQ1MDc3MTc0YTJhOWNlOCBsZWdhY3ktdHJ1bmsKKzM1NDM5IGRhNzhiOTZiNmFhYmViMDNlNThmOWFjMjM1ZjlhYjYwYTM4ODdlODcgbGVnYWN5LXRydW5rCiszNTQ0MCBiYjNiY2NiM2I3N2Q1YWEwMDBmNTExNjI4YzM2YTUyN2FhNzA4MjNiIGxlZ2FjeS10cnVuaworMzU0NDEgY2U4M2FiMDdlYTA3MzA4ODY0ZjYxZDlkYzBmOGYzZDNlM2YzZDkyYiBsZWdhY3ktdHJ1bmsKKzM1NDQyIDZiNzUwNjA0NjRmNDQ2MjdmNzdkOTg1OWVlOTU3OTNhY2E2NjZiOGQgbGVnYWN5LXRydW5rCiszNTQ0MyBjMzIzODFmNGRjNmYyZTU0NDdkNTZkYjJkMGIzNTM0N2MzYzlkOTRlIGxlZ2FjeS10cnVuaworMzU0NDQgMDE2ZjAwNmQ3MWNjM2ZiYzBmZTRlZmUzOTNkNjU5ODlhNjE5ZTBjMSBsZWdhY3ktdHJ1bmsKKzM1NDQ1IGFhZmU1ZmVmNThiYWI3YzEyM2IzZGQ5NzY5NDcxYmY3OTc3OWQ1MzIgbGVnYWN5LXRydW5rCiszNTQ0NiA4MjMyNzlhZTQzZWIxMGFmOTZmMDQ0NWQ5ZmRmZGVlNTYwNzcxMGM2IGxlZ2FjeS10cnVuaworMzU0NDcgYTg4NWU0ZDY0YWQwYjg5OTQ3MjA5MjE5ZjdhMDQ5OWE5MjY3OTcyMyBsZWdhY3ktdHJ1bmsKKzM1NDQ4IGNlNzBmMTQ0NmYzOTllMTJlNzIyYjk4YTAyMjdlOTczZTc1YTA3YWQgbGVnYWN5LXRydW5rCiszNTQ0OSAwZmI1MDY2ZmMyYTdmZDQ2OGYwZTViNWE5NzA4ZWYxNzEyODBmNDdkIGxlZ2FjeS10cnVuaworMzU0NTAgMTJiZjM3YTU4MDE1YWY5MzY5Yjg5YTc3YmRjYjM0ZTIyNzU2OTJhNiBsZWdhY3ktdHJ1bmsKKzM1NDUxIDVlOGM2ZjM4ZTE1YjVhY2UxNWNhNTc5NzAwZDFmOGFhNGE3ZmNkMWEgbGVnYWN5LXRydW5rCiszNTQ1MiBmN2JmZDhmOTFjMmI5MGM3NDIzMWNmYzJkMzUzZjBiMTJlNGVlNzAwIHJlbGVhc2UyMy1tYWludAorMzU0NTMgNmQ4YTE0MTQ4MTU5YjFiZDYyYTIyMTYzYjc2MjFiMzAxNjU0MzQ5MiBsZWdhY3ktdHJ1bmsKKzM1NDU0IGFkNWM2MDg1MDIzZTI0OTMxMzllMTZjMTAxZDlhMzdhNDczZDgyYmEgbGVnYWN5LXRydW5rCiszNTQ1NSAzMzJkM2ZmYWRmMjg3ZWIyNGE0ZWNmY2NkMTA5MjE4YzQ3ZjA1ZDYwIGxlZ2FjeS10cnVuaworMzU0NTYgNTA3NDIyZWFhNzYzNTkzZTdiOTU5OTBjYzhlMzgwZTFkN2M5YzNiMiBsZWdhY3ktdHJ1bmsKKzM1NDU3IDkyZDQwMjIwOWU5MGY5NzdlZjM1YjhmMjdjZTI5NDdmMDM1MmRlMDIgcmVsZWFzZTIzLW1haW50CiszNTQ1OCBkMDg3NzI2NDE3ZWE4YTEzZWQ1MzllNWM0MWE3ZjFlMjIyZjFhNjM0IGFzdC1icmFuY2gKKzM1NDU5IDAzYjBmZDFjZDcyMjU4NGFhYjdiNmQ5NjlkZjcyNmU0ZDM2MGJjZTggbGVnYWN5LXRydW5rCiszNTQ2MCA2YmY4Nzk4NWFhMWU5OGUwYTg0ZTFiNzY1ZWVkY2U0Y2E2OGIyNzQ5IGxlZ2FjeS10cnVuaworMzU0NjEgNWU2M2MyZTliNzkyNTMxMzcwMjJhZGFkYTI2ODNlNTRhOTcwZjYxOSBhc3QtYnJhbmNoCiszNTQ2MiBjZWI2YWFkZGFiY2M1ZDlhNmY0MWRiYzViMmYxYWM3NjliMmI4ZWRjIGxlZ2FjeS10cnVuaworMzU0NjMgNWIyMjQ3Yjk1MzIzYzMyN2Q1MGIzYWE4NGZiNzYyZmQ4YWU1Y2YxOCByZWxlYXNlMjMtbWFpbnQKKzM1NDY0IDM2YTJkMGU4YTk5MzM1MDQ5ZDI2Mjk3M2FjMzFjYjJhMzIwNDdkNTEgbGVnYWN5LXRydW5rCiszNTQ2NSA5M2ZiNDA4MWQxMDdmYjRlOTliNTI1ODIxODNjZmIyNjE5ZDdkNTJlIGFzdC1icmFuY2gKKzM1NDY2IGZmYWUyZjFmZGQ0NmM4YzZkMTg5OWUxM2M1ZTkzYjU3NjM1MjI2ZWEgbGVnYWN5LXRydW5rCiszNTQ2NyA0OTBlYjY0YmM1Yzk3YmI1YjA4YTYyYWZkM2I1NTdiMzJkYThmZDU3IGxlZ2FjeS10cnVuaworMzU0NjggMTc5ZTA0MzA3ZWNkM2RhOGFmMjFlNDEyMjNmOGIwZGIzMWIyZTcxNSBsZWdhY3ktdHJ1bmsKKzM1NDY5IGNlYWFkYmQ3ZjE5YTdlMjZmNDVlYTg1MWIxN2IyZTU2OTFjZWUzNmIgbGVnYWN5LXRydW5rCiszNTQ3MCBkOTQ4ZGVlNmY0YTFiZWQ5YmUxOTU4NTg5OGUzMTliMWQzZDY3ZTA4IGxlZ2FjeS10cnVuaworMzU0NzEgMGIwMDg2ZDUzYjhlODc5NTc2MTZjNDlhYjA0NjgxNWVmM2ZjY2IyNyBsZWdhY3ktdHJ1bmsKKzM1NDcyIGM0ZWJmN2NhMWJkZDAxZmRkNmY1MGE1MGYzNDM1Y2EyYWI5ZTNlNDcgcmVsZWFzZTIzLW1haW50CiszNTQ3MyA2NWIwYzdiNTYxZGFmNDJmNjdjZjE1NDU5NzY2ODQ5NWI5MjBkN2Y0IHJlbGVhc2UyMy1tYWludAorMzU0NzQgNTJiYTFhMjJjYzJlMWIwZjgyMjI5ZWU1NGRmOGM4YmRjZjQ1NDgzOSBhc3QtYnJhbmNoCiszNTQ3NSBjZDQ3NjZiMDYzN2VhMWQyMmIyZjZiMDUxZjg2MjE2YjlhYmFjNTQwIGxlZ2FjeS10cnVuaworMzU0NzYgZDYzYzU2MmViYmU1NzQyZDM5MTZjYzdmYTEwZGMxNGRmZTIxNzdkOCBsZWdhY3ktdHJ1bmsKKzM1NDc3IDkxMjYwZmIzYzgxNDc2Mzc3MWVhZmY0NGJjN2Y4MDk3MjM3N2ExNmQgbGVnYWN5LXRydW5rCiszNTQ3OCBjYzdhOWZlODBiMWI3NTYwZjc3NjhmNWMzNmUxZGU2Njg0MjVkNGQzIGxlZ2FjeS10cnVuaworMzU0NzkgODIwYmI4MThkNjk4NGM1OWI2YjI3YzJiMzg1MDc2YWNiZGI3ODYyYiBsZWdhY3ktdHJ1bmsKKzM1NDgwIDY2MGZjMjQyYTc2NjliMDZiY2VlYzgzODcxYTZjOWNiMjA0NGZlMTYgcmVsZWFzZTIzLW1haW50CiszNTQ4MSBmZDI2ZjI5ZTdlYWI4ZjJmZTFhNDFkNTdiOTZlZWEwZTlmNjdmMGYxIGxlZ2FjeS10cnVuaworMzU0ODIgMDQyMGQzY2ZlNGE0YWFmZGMxM2Q4ZmJhZDNmNTM4OWFlMTRhNDcyYSBsZWdhY3ktdHJ1bmsKKzM1NDgzIDhlYTQ1Y2ZlMTdmYzYwMzhmYmQwYWZiMjQzZWZlZTExNzI4ZTVkYmIgcmVsZWFzZTIzLW1haW50CiszNTQ4NCBjODM3OTUzMjQwNDI3NDJjNjNjZmNkMzg4YzQ2MmJlMjAzMjZmNjEyIGxlZ2FjeS10cnVuaworMzU0ODUgZmFmZmQ5NTcyZDhkMzIzOWEwMjUxOGY2NTMzNTUyNjBmZWU1YzNiNCByZWxlYXNlMjMtbWFpbnQKKzM1NDg2IGM3NTg3NjQzMmZjNmI1YWI2ZGYxMTM2MDdhZWI2MzVlMjU5YTZmZWUgYXN0LWJyYW5jaAorMzU0ODcgMjg0NjY5NDA5YmViNDZhYmQxYzVhZGJkMzY5NTczMjhjODMzOTU5NSByZWxlYXNlMjMtbWFpbnQKKzM1NDg4IGQ2OWZiMzVmMWVhZWE0MzhhNzVjZDgyY2E5NzhlYjZkOTQwZDIwZDQgbGVnYWN5LXRydW5rCiszNTQ4OSA3YTQzNGY0OTNjM2VhOGI4OWVkYzk0ZTNjZTYxYmFmYmVmODA4ZjE0IGxlZ2FjeS10cnVuaworMzU0OTAgNjM4NjU2MTFlZDJmZTM1MjQ1MDJjZjA1N2I4ZGFkMzZmMjgzNmI1NyByZWxlYXNlMjMtbWFpbnQKKzM1NDkxIDI2ZDBmZDAzZDViMzBlZGFmNjkxM2FjYTE5MmI5NjFkNmQ0NDIwNjEgbGVnYWN5LXRydW5rCiszNTQ5MiBjNGQ5YTk2YmUyZGRjYTQ1MzViNDM3ZTk3MTNmZWVkZDQzMWFlNTAyIGxlZ2FjeS10cnVuaworMzU0OTMgNjUwOTM1NGU3ODc2OWRiOWEyYTc2ZTMzN2U5NjY0Yzg3ZTc4MWVhMCBsZWdhY3ktdHJ1bmsKKzM1NDk0IDFlYzNkNjk4NGIwZjEwODc3NjI4ZTJkYTc2MmE2MzhhODE4OTNhMmUgbGVnYWN5LXRydW5rCiszNTQ5NSBiOTY3NjI3YTJmNGZlOWM5YWQ1NGZiZDA0MDZiMDMzMjc4ZWEzMDM3IGxlZ2FjeS10cnVuaworMzU0OTYgY2U2OGQ3YzA2MjljYzM4MTY3MGVhYmExNzZhZmRlZTllNWM4OGZiZSBsZWdhY3ktdHJ1bmsKKzM1NDk3IGU4MzEyNDAyYzgxM2Q4ZThkMzA4MjE2YmVmYTk5OWQ4NmU0NzNhM2MgbGVnYWN5LXRydW5rCiszNTQ5OCBjMDIzNTAxYzM4ZDc4M2U5YTM0MGVmYjNhN2M5MjA2MTcxMGE0Y2ZlIGxlZ2FjeS10cnVuaworMzU0OTkgOTIwYWQ0NDY1YWFlYTVhMzU0MTVmYmFmOWZiNzlmOTMyYzdkZjIwZiBhc3QtYnJhbmNoCiszNTUwMCBkODk4MjMyZGNkZGJiYTgwNTgyMmZiZDNjZDAxNDA4Mzc3YzgxNmY0IGxlZ2FjeS10cnVuaworMzU1MDEgZWUwYmEwMGIyNzdjZGQyMzg1OTM1YzY2YWFmMjBmNGQ4YzQzZWQ3NCBsZWdhY3ktdHJ1bmsKKzM1NTAyIDZmY2JmNmFjNjk5YTg5MDI5Njg5YTE3OGUwYWNlMzNjNTIyNWIwYjkgbGVnYWN5LXRydW5rCiszNTUwMyA1Nzk2NWIyZGIyMGM2ZGFkOWM5NzkwNjI4ZjNlNjllNzc0OTgwMzllIGxlZ2FjeS10cnVuaworMzU1MDQgMDdhMmI0YzVkNTAzNDE3NzJmYmMyYWVlNWUzYzI4ODZmODI5NDEzMiBhc3QtYnJhbmNoCiszNTUwNSBkYmE4ZGI0MTJlMzU0OTk2YjE4Mzg1MGRjMzVlNjg0MmFiMjE1ZTgwIGxlZ2FjeS10cnVuaworMzU1MDYgNDllYzBkOGYwOGVjZDNmNzA1NzQxZTIxMGJmZmZiMTBlZWU3YTM4YyBsZWdhY3ktdHJ1bmsKKzM1NTA3IGFlMDBkMmQxMjdkMWQwYTdkNzk1ZTZiNDljZTJkOTI5NmU3ZjFjNWQgbGVnYWN5LXRydW5rCiszNTUwOCAxZjgwNmNiZTJjZTA0ODFjNzdlYWEzNTgzYjg4YjI3ZDNkNDMxZmQ4IHJlbGVhc2UyMy1icmFuY2gKKzM1NTA5IDRlYjQ1OGMzOTQxZDVlODVlNzMzNTA2ZmUxMmQxN2UzYjcxNDExOWIgbGVnYWN5LXRydW5rCiszNTUxMCAzMTAxYzAwZjc1NDdmMDFlY2U0OWFkNGUyODgxYWFjYjA5ZTdhNDA5IGFzdC1icmFuY2gKKzM1NTExIGMwNjFmMjVmNzRlMGNkZWJhN2YyNmViZjcwNTM1OTllYjlhYjdhYjAgbGVnYWN5LXRydW5rCiszNTUxMiA5MDc0NTBlNGJjNjc1N2RhMWE0YTdiZDg4NDQ2Y2ZhNjJhZmVhNmMwIGxlZ2FjeS10cnVuaworMzU1MTMgMzQ3NWU0NTY4NDcxMDk1ODg4N2FiODM0YTZlN2NmMDE0ZGFhN2IyMyBsZWdhY3ktdHJ1bmsKKzM1NTE0IDhiZjE2M2QwNmQyOWFmOGFlZTljZmFlNzU3ZmNlYmZkMmJiNDRlZGQgbGVnYWN5LXRydW5rCiszNTUxNSA3YjZjODIyOTc5OWJhZTliZjFiYmJhNmJjNTU4NWJjY2I2OWFkNGExIGFzdC1icmFuY2gKKzM1NTE2IDY3MWFkZWU2YTNlM2IxMWRkN2VjYTJiNGY4NmQzYzk3OTBjYmUxM2QgbGVnYWN5LXRydW5rCiszNTUxNyBmNTRjZGIwMWExYWQ1ZGY0NGYwOWFkMTg5MzMxM2VmZDZmYjlkMWYzIGFzdC1icmFuY2gKKzM1NTE4IDE0ZjhjOTMzZjg4YzA5OWMwMDY5NjYxMThmN2I5MjI0YTFlMmE0ZjcgbGVnYWN5LXRydW5rCiszNTUxOSBmZTU1NDFhYWUyZDhmODc0ZjcxM2NiNzYyMzM3ODFhOWY0ZTY0MzVjIGxlZ2FjeS10cnVuaworMzU1MjAgMWQzZTQ4Y2NhZDU3M2E1NDFjMzFlM2Q3OWJiNDIzNjVhNzA1NzcyZCBsZWdhY3ktdHJ1bmsKKzM1NTIxIDQ1MTQ0Y2RiNzc5NGE0YTY1Yzk3YTM2MzgzMWI3ZDg0NDAzZmU3ZGMgcmVsZWFzZTIzLW1haW50CiszNTUyMiBlZjE4MDg1NmRmNzYxOTE4ZmQ4YmRkZjBjYzdjZjYwNTdlODE0YTRiIGxlZ2FjeS10cnVuaworMzU1MjMgYzJiMDFhYTQ5MGUxNDdiNWI3M2NiY2I4Y2QzODIxNjYzYjhlNDI4ZSBsZWdhY3ktdHJ1bmsKKzM1NTI0IDJlYjMxNzVmYzU5YjcyZjJjZTlhY2NjZTZmYzg4ZThlOGRiN2MyOTcgbGVnYWN5LXRydW5rCiszNTUyNSA4YTcxNGZlY2QwNTliZGQ4MzdkODdhNjM4NWY5MGQyMzBmNDFlNzU2IGxlZ2FjeS10cnVuaworMzU1MjYgYTViZDhiNGYzZTU1ZjEzMjk1MzY2MThhNTBmNjcxMGU3NjlhYmYwOCBhc3QtYnJhbmNoCiszNTUyNyA1NTVkYzg0NjIyNmRkMjg2MTMyMjU2OWRiNjk0YjliYjRlZTBjYzlmIGFzdC1icmFuY2gKKzM1NTI4IGIzOWZkYzljODA3ZTY1YjMyODkzNzQzNzA3YTZkOTM0NzVmYWY3MWYgbGVnYWN5LXRydW5rCiszNTUyOSAxNDA3NDg0ODM2MTIwYjUzMzRmZjgxZDAwMTJkY2VjNzNkOWJhYWU3IGFzdC1icmFuY2gKKzM1NTMwIGE3MzdmN2EwZjJiOGJhZGE0ZDM4ZjBiNzgyMWQxNjhmNzBiMjcwZGUgbGVnYWN5LXRydW5rCiszNTUzMSAxNmJmNDg0YjM4NjQ5NDc0ODMxZTYwZGI2Y2NkNWEzMzMxNzg1ZjI0IGxlZ2FjeS10cnVuaworMzU1MzIgM2U0OWViMzI0NzBiYjc4N2FhY2Q0Y2I2YWQ1ZTE0NDE0YzVjMDc3MiBsZWdhY3ktdHJ1bmsKKzM1NTMzIGJlNWQyYTA3YmMyNjliYWRiMTRhN2M3ZjQ2Y2I3NTA1NmVlMWI1YTcgbGVnYWN5LXRydW5rCiszNTUzNCA5NTM2YjI5N2Q4M2MyZDc4ZThkNjMxNDYzODc5YjA0YWQ0MjcxMDA0IGxlZ2FjeS10cnVuaworMzU1MzUgZjRhNGFjNzMzMWVjOTFlODRkOGZkNGU5YjY2M2Y4NTQ3MWUwMjVmZCBsZWdhY3ktdHJ1bmsKKzM1NTM2IDY0MjZiMzdiYjJhMGZkYTgyMzJlN2M2YzFhNGUwNmNhZWUwMWIxYmUgbGVnYWN5LXRydW5rCiszNTUzNyAzNDczZGVhM2FhNGMwNTA4Nzc3YTY3OWIzOGFjYzQzNDNlZjljMjhlIGxlZ2FjeS10cnVuaworMzU1MzggNWU5MTZkNDZhM2ZiNjkyNjIwM2QyZDFlMTk1MDc3ZmRmYThlZDhiNCBsZWdhY3ktdHJ1bmsKKzM1NTM5IDI0ZTA3MGU5NWJmOGExZDE1MzczZTQyZDQ1ZTM2ZThlZmU4NTdkNDQgbGVnYWN5LXRydW5rCiszNTU0MCA3NWE5MWZkOGI1MGNmYjA2ODFjZDRlM2YwMjQ4ZmZiZTUxMWQzMTkyIGxlZ2FjeS10cnVuaworMzU1NDEgMTIwMTkyNTE2MDMzOTJjMzAzYTg0YWQzZDQ0MzkzZjJkNDkxYjlhNSBsZWdhY3ktdHJ1bmsKKzM1NTQyIDk4MTdkZWU1ZDlkZjA4NWM0MmMxYzZhYzY4MDBjNDA5OWJmY2Y4YzcgbGVnYWN5LXRydW5rCiszNTU0MyA3ZjQ2NGRkNjgwYWFjMDhlNGFkYmI3ZWEyY2JmNzVhNzM4ZDhmMjlmIGxlZ2FjeS10cnVuaworMzU1NDQgZWY1OTFlN2MzNGZkOGUwOWY1NWZkZGRhZWZlZjYxZThiOGIxZWFjYyBsZWdhY3ktdHJ1bmsKKzM1NTQ1IDc2MDUzYTFkZDQ1MjQ0ZGMxYWE4ZDM2ZGUyYzc4YjkzZmFmNzFhMDkgbGVnYWN5LXRydW5rCiszNTU0NiBmYjU1N2FjNWJiOWEyNWIxNDU1YTk5YTAzZjUwMDYwOTAwNmQyOTllIHJlbGVhc2UyMy1tYWludAorMzU1NDcgOWQ4NGNlZDY0ZDEwYzlhZTY4ZWU1NmVkNDQzOWYzYjgwYjBmMjRhYiByZWxlYXNlMjMtbWFpbnQKKzM1NTQ4IDE2NGNlMWJjYWI2ZTFlMzIwZmJhZjAxY2FkOGE1MGQ3MjlmZTlmMzAgcmVsZWFzZTIzLW1haW50CiszNTU0OSAzM2Q0OGRmOWE5Mzc4MzQ1NDc3OGFjZDlkZTRlMDZlNWEyNWZjMzViIGxlZ2FjeS10cnVuaworMzU1NTAgMjliZTcyOWIzMmMzZmU5NDE2NzlhZGRkNzI1M2YyMmQxM2RlNmNkMCBsZWdhY3ktdHJ1bmsKKzM1NTUxIGNjNDdjMWVhZjgwYWI3MjM5MDllZjQ2YWUzMTc3YTM1MjFlYTc5OGEgbGVnYWN5LXRydW5rCiszNTU1MiBjNGJhZTA4OWJmYzhmMTE1YmE5M2I1NGU1OGE0NGJjYjJmMzY2M2YzIGxlZ2FjeS10cnVuaworMzU1NTMgZWMzN2NiMWMwZWQ4ODg3Y2U0YzdiZWExZjk4NzE5MjZjN2MyOGVmOSByZWxlYXNlMjMtbWFpbnQKKzM1NTU0IGQ0NDhjYzI2MWY2OWY0YjA4Mjc1ZWMwZGU3MDllZDBkMmVkZjA3YmUgbGVnYWN5LXRydW5rCiszNTU1NSBjZTFlMGI0OTRjYTcwMjRjMjczODg5YWYzMjY3NTBkMDVhOTkyNmE3IGxlZ2FjeS10cnVuaworMzU1NTYgNmExNTA1NjEzMzU4NGJlZTM1OGQ2YTM1MTQ3MDFhNGI3MmNmN2U1YSBsZWdhY3ktdHJ1bmsKKzM1NTU3IDIzZTVjYzM0YTk4MTJlNDM0Y2QwMzAzY2M3YjhkODg5NDFlZTliZjEgbGVnYWN5LXRydW5rCiszNTU1OCA4MzViNjkwZDdlZDNhNTA3MmQ5ZTRmNWI1NGYwMTQ0ZTExNWRhOTg1IGxlZ2FjeS10cnVuaworMzU1NTkgZGM1YmQ4NDIyZDUyNmFjYmJkMjdlYTM4MTQyNjIyMTVkMGY1M2QyNyBsZWdhY3ktdHJ1bmsKKzM1NTYwIGE0ZWFlZWQ0MDk4YjRkODMwNjYyMGFiODZmZGE0NmQ5NzRmOGExZjYgbGVnYWN5LXRydW5rCiszNTU2MSBmZTk0MzM1ZjM4ZTI0OTc0ZDE3NzliNTIwMzYwZGQyYjBlZjAzN2JmIGxlZ2FjeS10cnVuaworMzU1NjIgMjAyNGI0ZTZlMzhkYTgzNTI1OTFiOWJlMTZmYTgzZGY3MDZjMzFiNSBsZWdhY3ktdHJ1bmsKKzM1NTYzIGJlZmIxZWE2Yzg4ZWIyYmQ4MTAyYmIxOTk1NjUwM2RjMTY4ODdiYzUgbGVnYWN5LXRydW5rCiszNTU2NCAyOWRhOGJkZmViNGUzMTkyYjNiOWE1OTVhNDc0NjFlMTQzOWY0YTExIGxlZ2FjeS10cnVuaworMzU1NjUgODU4Njk3ZGIxZTRiZWRjN2ZmMDhkNjI0MmE1MTQyYjBlMTMyZWFmZSBsZWdhY3ktdHJ1bmsKKzM1NTY2IDUyYzE3MjI4OWFkZDFhM2EzODcxMGQyNDAxMGJmODIxMjQyNjI2ZjYgbGVnYWN5LXRydW5rCiszNTU2NyA0Y2UwOThmMDA1ZjAwMmY3YzQzYmFiMGZmY2E2MmQ5ZjZhNzM0OTAzIHJlbGVhc2UyMy1tYWludAorMzU1NjggZjFkNDQyOTVlYmY3ZDllOTE1NThlN2JjOWQ1NTA4ZDFhNjVlNTM0ZCBsZWdhY3ktdHJ1bmsKKzM1NTY5IGJmMzc0MjlmNmQ5ZjA1MTNjYjI1ZjNmMTBhYzkzMDE5MTA5OWU4Y2UgbGVnYWN5LXRydW5rCiszNTU3MCAxYzExN2RiYjJkZWY0ZjkzYTYwYjkzMmI3MTU3OTg1M2U0ZTcxODljIGxlZ2FjeS10cnVuaworMzU1NzEgODQ2YjNlZTdlMTA2ZjEyMmY4ZDdlM2MxNzg2N2FiOTNjODU0MDBkNCBsZWdhY3ktdHJ1bmsKKzM1NTcyIGM3NjYwNmYzNzJkMTM0Yjk3Y2JmNzVjZDI4Yzg0MDY1ODMyYmZkN2YgbGVnYWN5LXRydW5rCiszNTU3MyBlNjM3OWJkYTkxZDc5NjhhZTJhOTYwZmIwMWFiYTI5OWExMzNjZTVlIGxlZ2FjeS10cnVuaworMzU1NzQgMzdkYzhjODBjYTdlZDkyMWZlOTI4MzE0NDJiYWI4NGIyODRlNjAxOCBsZWdhY3ktdHJ1bmsKKzM1NTc1IDI3N2I1YTJmMDhmNWM5ZjQwOTFkYTIwZTIwNjdhOGZjMTUxYTI3Y2UgcmVsZWFzZTIzLW1haW50CiszNTU3NiA1OWZlMDk4MjQzNjNiMGU0ZmFiZmNhNjBjYTRkMDVlNWFjZWZkYjlkIGxlZ2FjeS10cnVuaworMzU1NzcgYzA1MWRjNmFiMzc0Mzg3YmEyNjFiZTZkZjE1YmFmYmM5YjM0ODJhYSByZWxlYXNlMjMtbWFpbnQKKzM1NTc4IDAyNjFlMzgwMTFmNmRlNDJhNDc2OTVkYzdkOTVkMDM0M2RjNWNmODMgbGVnYWN5LXRydW5rCiszNTU3OSBjZWJkYTIzYWFhZGJjNjkxMzM3MDJiMGE1MTMxYzAxMGMzYTUzYzJkIGxlZ2FjeS10cnVuaworMzU1ODAgMDc4MDMyNDQ0ZWNjODljMzBjYWViNDZlYWFmMjZiMjAzNjRiNDUzZiBsZWdhY3ktdHJ1bmsKKzM1NTgxIGJjNmVjOTVmNTc5MjNkN2Y5NGY0NWQwNWExNmZhOTVmMmRlOTBkNjEgbGVnYWN5LXRydW5rCiszNTU4MiA2YzY5MTBmZDAxM2E2MjY1NTFlODQ1NzhmZTg4YmNmYWY2MTFlZjhkIGxlZ2FjeS10cnVuaworMzU1ODMgZjk4MjE1ZGFhMzVmYzI1NzA1NGQwNWUxNzk0ODk4MTg3ODc5NjA3YiBsZWdhY3ktdHJ1bmsKKzM1NTg0IDdhMTIwNDAwODg4YWVmNmE4MjdlMmJhYzViZTI2ODVlZTc0MzQ5YjAgbGVnYWN5LXRydW5rCiszNTU4NSAxYmU1NDk5ZjM3OGU5OTcwMGJiMTk4YmY2OTVkMzFiOTZlMjg2MjlkIGxlZ2FjeS10cnVuaworMzU1ODYgNGRiOTU4NzI5MThlYjkyODlmMTNjNzhiMjE4YzAzOTE5MjA3ZDc5OSBsZWdhY3ktdHJ1bmsKKzM1NTg3IDgxODRjNjc3NzEzZmQ2MWUwMTA1NTA5MjkxNzI5ZmMxMGVlMDUzZGMgbGVnYWN5LXRydW5rCiszNTU4OCA5YTExYTIzNjE1NDc0NWRmMzFhOWE1ODIxMTA4NDRlNTg2MzZlYjlhIGxlZ2FjeS10cnVuaworMzU1ODkgNGIwOTMwYjU2NTY1ZmQyMGZlMjlkNzc2NTE0ZTUyNzY4ZWM1NTRmOSBsZWdhY3ktdHJ1bmsKKzM1NTkwIDc1ZTJmNzU4ZWM1YTA2YjZkYTNhMGRmNTEzMzcxYWQyNmYxZjkzYzAgbGVnYWN5LXRydW5rCiszNTU5MSA5NDg5OTZmNjk5ZDJlMjkyYWQzZDIwYWMzMTU5MDRhYjRjZmJjMTc2IHJlbGVhc2UyMy1tYWludAorMzU1OTIgNmIxODU4ZDEyZjhjYTllYmIyZTVmNzE4MTRhNzVkODBjMjgwOGU1NCBsZWdhY3ktdHJ1bmsKKzM1NTkzIDE2OGRhY2ZiZWU2NWFhN2M5ZmNiYTE1MWM3Y2ZkZmMwMWIyNmE1NjQgbGVnYWN5LXRydW5rCiszNTU5NCA4MTcwYWFkYzllY2E3NGVkZjgzZTUyNWRiNTNhMDdhZWU5ZDJjODRkIHJlbGVhc2UyMy1tYWludAorMzU1OTUgYjA4MmI0ZDQ4MWMyNTYyZGRkMzFjM2M4MjQwNGI3ODkzODkzNTJjMyBsZWdhY3ktdHJ1bmsKKzM1NTk2IGE0YWE3ZDYxZTRhZjE5NmVmNjBiNDA5Zjg2YWVjYTFkZDE5YTRjZTAgbGVnYWN5LXRydW5rCiszNTU5NyBhMmU4MGZhNzM1OWI1NTAwMDgwZDc3MWMyYmI5NzJmODJiOTlmN2NhIGxlZ2FjeS10cnVuaworMzU1OTggMzMxZGU4YjlkMWVkNTVjNDVmYmEzOWVmNTc5NThhMDc0ODIwMmM4OSBsZWdhY3ktdHJ1bmsKKzM1NTk5IDM0ZDVlYjFlNTA3ZGMyN2FmMWI2YzY5N2U2M2Q5ZDQxZTYwZjU3MGMgbGVnYWN5LXRydW5rCiszNTYwMCBkMDc4ODM5MWMxM2JjZjIzMDU3MmI3ODhmNWZmZmIwZWExNGI5OWM2IGFzdC1icmFuY2gKKzM1NjAxIGFhZGE5MWM1ZDZkOWM3MjU2Y2FjYjYzNmFiN2RjZjM0MmE0M2ZhYzcgYXN0LWJyYW5jaAorMzU2MDIgMjI5MDg1M2FiNDBhNjJkNzk1MDQ1ODJmZTMzMjRmYzRhMjBiZGEyMyByZWxlYXNlMjMtbWFpbnQKKzM1NjAzIDU5MzI0NjlkY2IzNTkzMzI3N2NlYWM3NTliMTA1OWQzMzRmZTg3OGUgbGVnYWN5LXRydW5rCiszNTYwNCAzZWY1ODg4NGJkZDUyMWExNmVkYjU0YzkyYWNiZTIyZWFlMjE1ODE3IGFzdC1icmFuY2gKKzM1NjA1IGY0ZTVmOWMyZTJiM2I5MGM3YzkzMDAzNWNlNGEzY2QzODkxYjI1ZWUgbGVnYWN5LXRydW5rCiszNTYwNiBhNzZhZDgzYTQxM2YwZTEyMTUwYmQ0MTM3NGY4MmVmNzFmOGI4MDFmIGxlZ2FjeS10cnVuaworMzU2MDcgOWIxN2YzY2MyM2VkY2VmNmMyNGJhOTQ0NDg5NGE5ODhkOGE3NjFmZiBsZWdhY3ktdHJ1bmsKKzM1NjA4IGUyNjFlMGMyYzcyZDc1ZmQzNzEzZmE4NGExYjM4ZGUzZGM5ZTQ2YTUgbGVnYWN5LXRydW5rCiszNTYwOSA2NGUyZjdlYzU1NzZiM2E1ODQyZmFmNDU3OWFlNDZhZWUxNjljYTRiIGxlZ2FjeS10cnVuaworMzU2MTAgYTkxMGI4MjJiMTJjYjNmYzRmY2UxOTYzNzkyOTU3OGZlODQ0Y2I4NyBsZWdhY3ktdHJ1bmsKKzM1NjExIDczOTEyOGM2N2MzMGVmOGQ5ODdlNzlmNjFjZTQxZWZiY2RkODM3ZWEgbGVnYWN5LXRydW5rCiszNTYxMiA0MzM2NDJmOTNkNTlkYmFkNGM4YTJmYmE0YzE3MDRkZmU3NjQzYjRiIGxlZ2FjeS10cnVuaworMzU2MTMgZTQyY2JhZmY4MDI3ZDkxZmFhYjljZGZiNTFiNDRmODY2N2I2YWM5MyBsZWdhY3ktdHJ1bmsKKzM1NjE0IDgxMTE3OTIzYWU4ZjBjNDVjMWVhN2UyMzZiOTgzODA5ZTZmM2M1NTkgbGVnYWN5LXRydW5rCiszNTYxNSA2NzdjMGJmMDU3MzVlOGMxODYzZmVkMjRkOWUxMDVmM2JmMGQyNmM4IHJlbGVhc2UyMy1tYWludAorMzU2MTYgNGMwNmY0ZmFlZDg3N2JhYjE5YjNjZGI1Nzk0YzZiZGRjOTI0Y2QzMCByZWxlYXNlMjMtbWFpbnQKKzM1NjE3IGQyMGNiNjM1N2Y1ZWExNjFiMzVhMTA0MjRjNDI1MTE3YTJlMGJmM2QgbGVnYWN5LXRydW5rCiszNTYxOCBiMWVhMmYzZjQ2N2VmNzg1NjJkZmQ3NmQxODFmOGU2YjBiOTgxZjRmIGxlZ2FjeS10cnVuaworMzU2MTkgZmFhNzE0ZGQ4NmQzZjEwNWQzYThjMGJhZTJhYTE2YmYwMjYxZjViNSByZWxlYXNlMjMtbWFpbnQKKzM1NjIwIGY0YzFjM2U2MjdkZjhmZTg2NjMxZTI0MjljZWMxMTM0OTgwMTQzMWYgcmVsZWFzZTIzLW1haW50CiszNTYyMSA4MTRjYzlmODNmYWFiOGRlMjU5ZTY1NGNmOGEzZjlkZDI0NDQ2MWNiIGxlZ2FjeS10cnVuaworMzU2MjIgNjRjYzE2M2VlYWYxMjEzNTEzNmQ3MjJhMGNhNWE3NzM3ZTg2ZTcyNyBsZWdhY3ktdHJ1bmsKKzM1NjIzIDkyNTUyNDY3MTQ1ZWE3ZDhmMjZiNDg5N2EwMmRiMmZlNmMyMDU2NWEgbGVnYWN5LXRydW5rCiszNTYyNCBjNTdjZmE4MzI4ZDQzYWE5OWNlNjgwMzQzNGM1MzE0NTY4N2I4NTM5IHJlbGVhc2UyMy1tYWludAorMzU2MjUgYzRjN2YwZjM5ZmU5YjgzNzFlODY1MmNmMTI4NjY1NDI3MDFmMDc5NSByZWxlYXNlMjMtbWFpbnQKKzM1NjI2IDhkMzgyYWI5OWJkYmE5ZTlkMmViNWM2NzZkNDE2ODljNGNkMzVhZDQgbGVnYWN5LXRydW5rCiszNTYyNyA2OTZmNGJhOWRkZjdiMTZkNGQ5ZWE4YTc5ZTRhNzA5NWRjOGMzOGNmIGxlZ2FjeS10cnVuaworMzU2MjggYWRiNDJhNzExNjk2MDRkMzYwOWFjMmZiZGI2NGNmOGNkMWM3MjUwYiBsZWdhY3ktdHJ1bmsKKzM1NjI5IDJjZmUxNDI3NWEwNDQwOGI2M2YwZDYyOThlMGRjN2M4M2Q4OTg3ZWYgcmVsZWFzZTIzLW1haW50CiszNTYzMCAzYWQ0MmI3ZDQ2NjBhYzNjMTk1MjE1MzI3NmQ1NzNmNGRjYTk4M2YwIHJlbGVhc2UyMy1tYWludAorMzU2MzEgZjhiMjhlNGFjNDM1YTk3Nzg5NGUwMjM3YTRmZmRlZDY0YThhNTI2ZCByZWxlYXNlMjMtbWFpbnQKKzM1NjMyIDVmNjBiMjI2MDE5ZTlmM2I0MTNhZjBlZjgwZmRiYzJhYTk4YWExNGMgbGVnYWN5LXRydW5rCiszNTYzMyA4YmNiMTIxYzU0MTExYmZiYTE3MzYzMjVkNTI1NTUxMWIzZWFmOTAwIHJlbGVhc2UyMy1tYWludAorMzU2MzQgMDU5ODliNGQ2Y2U4MTU3ZDZmMjUyZWJjMjRhYmI2NTllNzg5Mzk4NCByZWxlYXNlMjMtbWFpbnQKKzM1NjM1IDBkOGVlMjhiZjZmMDNmZmNjYWE0MGZlYzI4ZjU5MzNjY2JiOWM2YWIgbGVnYWN5LXRydW5rCiszNTYzNiA1NzY1ZDY1NmUwZWZkODdkMWNjMjc4NzY0Njc4OTMzZWQ5ZjMyNjkzIHJlbGVhc2UyMy1tYWludAorMzU2MzcgNTAxMjhmZjE5OTY1OGIxNDc2OWVjYWMwYzQ4ZWZiYmY4ZjhjMWZiZSBsZWdhY3ktdHJ1bmsKKzM1NjM4IGQwNGQ3ODZhYjQ1ODEzNzk1MTBkZmE1ZjZjYzk2MmFjNTllMzRmZTEgbGVnYWN5LXRydW5rCiszNTYzOSBkYmQzZmMyMTRiNjY2YTM2ODNhMGNkOWZlNDg0YzUzYzc3ZWE4ZjY2IGxlZ2FjeS10cnVuaworMzU2NDAgMDA3MWQ2ZWI4MGExZmEyMDkzOWU4Njg5NTk3MTViMDQ4N2FlYjU5YyByZWxlYXNlMjMtbWFpbnQKKzM1NjQxIGE0MGQ3OWZlMmE2OWUyYWZlYzUzNzMzNjk2MWI4ZmM3NzZlOGQzYjcgbGVnYWN5LXRydW5rCiszNTY0MiBiNGVjOTI5OTU2MGQ4MDg5YjI0MDU1N2Q2N2Y0MDYxN2I1NmUyZmIwIHJlbGVhc2UyMy1tYWludAorMzU2NDMgNTUyMDQ0YjUwNThkMDE4ZDIyZDIwNzQzZTZjYmYxYjFkNzM5ZGViMSBsZWdhY3ktdHJ1bmsKKzM1NjQ0IDUxYWFjZWVhYWJlMTFlYWZlNzRkNjJjYjM0MjdjN2I4NDZmNzBiODAgbGVnYWN5LXRydW5rCiszNTY0NSAxNTYwMzdiZTM1NWQ5ODQ2MDc2NmQwZjAzZGFkOGJhYWZjYmJjM2E1IHJlbGVhc2UyMy1tYWludAorMzU2NDYgNWEzNmU0ZDVhYThmMGQ0MDU4NWY0NWRlYjQwM2NlOTA4YWJlNGZkNiByZWxlYXNlMjMtbWFpbnQKKzM1NjQ3IGM3ZjlmY2E5NDZkMTZiNzA0YzIzYjYwMjg1MzZlYjkzNmZiZGZkMDMgbGVnYWN5LXRydW5rCiszNTY0OCAwMjBkYzVkZmQ1YzVkODhkZDBmNDU3MjY5NWRjNGNmYzhjNDA1MmNlIGxlZ2FjeS10cnVuaworMzU2NDkgOWY1ZmU2YjIzZTU5MjBlNTc5ZDNhNmJhY2MzZGRkMDFlYmE3ZDQ4ZiBsZWdhY3ktdHJ1bmsKKzM1NjUwIDIyN2NiNzQwMmM2ZTliZjY3YTAwYTAyMzU3NTQ2ODcyMDFmZTVhYzQgbGVnYWN5LXRydW5rCiszNTY1MSBjODhkNDYxMGYyODNjYjZkMTYyYjk1ODNjZjQ3ZmZkMGQyZTE0Y2ZjIGxlZ2FjeS10cnVuaworMzU2NTIgMWZiMjMxM2FjM2NlZTU4ZmU3ZDM5NTJlMjFhN2I2NzllNzM1MjQyZCBsZWdhY3ktdHJ1bmsKKzM1NjUzIGM5MDZiYjJhMTgyNDU1MWZjODlmYzE0ZmM4NjdlMTFmNDZkZjJiNTMgbGVnYWN5LXRydW5rCiszNTY1NCBhMmZiMTY3ODQxZTgzOGMyNmJkNDc3OWNmZWQ5MTYxYzllNGVjYzQ4IGxlZ2FjeS10cnVuaworMzU2NTUgMjZlZTFiM2ViMzQ1MWE3MGI0NzY0MmNkZjEyZWRmNGZmZTg0OTUzNCBsZWdhY3ktdHJ1bmsKKzM1NjU2IDFhM2E0OGNiYjE2MjhkNDM0MGFiZDViMmU4M2FmNjFlMWQ3YmZjZDAgbGVnYWN5LXRydW5rCiszNTY1NyA0YzZmZGViOGUyZTAyMTdmMzU2YmYxYWUwYWQ5NGM1Y2Y3NDM2MTA3IGxlZ2FjeS10cnVuaworMzU2NTggZjM1YjRhY2M1OTRmOTBhOWY2Mjk4YmE0NWQxODE1ZTJmNTc1ZjM3OSBsZWdhY3ktdHJ1bmsKKzM1NjU5IDY5OTcwNjUzZWNiZmFjOTRjZTc1ODE1ZWNhYjIzNTdiOGM1NWU1NGUgbGVnYWN5LXRydW5rCiszNTY2MCBmOWNkNzk5MjZmZjc3ODgxYTIxM2M5MDk1YzA5MGI0ZDFiNTljMjNmIGxlZ2FjeS10cnVuaworMzU2NjEgOTg2NTk0YzNlNGQ5ZGMxMDM0NjJjZWM1MjNjZmQ2MTM0YjI2NzgyMCByZWxlYXNlMjMtbWFpbnQKKzM1NjYyIDhjMjY0MjBkMWYyMzUzYTAzY2NjYmUzMzZlNzJjOGJhYWI1OTA1ZGUgcmVsZWFzZTIzLW1haW50CiszNTY2MyA3YjgxNzExOWJiNjYwYjUzMWEzMzMzYjdiZGM1NjI2ZTlmOGYwMzI5IGFzdC1icmFuY2gKKzM1NjY0IGM2ODFkOTVjZjc5ZWM1MGM1Yjg1OTM0NWZlMGMxMWZmN2JjNWE2YmEgYXN0LWJyYW5jaAorMzU2NjUgYzM3MGFhZTk4MjMyMTYzNmRiOWNjZWFkYWI1MjI0NmQwMWI0Y2NjZSBhc3QtYnJhbmNoCiszNTY2NiBiNDY4NDIzNGJmMDcwMWYwOGE3NDliMWFkMmMzN2MwMTYzNWNhN2MxIGxlZ2FjeS10cnVuaworMzU2NjcgMmU1MmMyMGRlYTRmNjFkYThkYWYwYTI3ZWJkYTI4NzY4MGVhNWFkNCBsZWdhY3ktdHJ1bmsKKzM1NjY4IGRkOTNhMzJhYzMzZWZmM2NiODZkMjc2Nzk5Njg1MDRkYjA0YzI2MTIgbGVnYWN5LXRydW5rCiszNTY2OSBkZmM4YzVmNjY5NTk1ODIxNDRkYWI2ZWQ5Y2MxNmE1MmU5YzNjYTkyIHJlbGVhc2UyMy1tYWludAorMzU2NzAgODQ4YmNlMjIxNWQzNWI2ZGZmYTlkODVmYTEyY2E2NjQ3NjI4MDdhOSBsZWdhY3ktdHJ1bmsKKzM1NjcxIGM3MGJiMzIyMjdjYjNiZmU2YTBlODMzZmRiZTk3ZmY0MTNlNjNmMzYgbGVnYWN5LXRydW5rCiszNTY3MiAwODE5NzJhZTJmODQ0MjFmZDY0YTMyMDZhNDQyNjY0NGU2OTBkNDc5IGxlZ2FjeS10cnVuaworMzU2NzMgMjQxMDg5ZTQzN2UwMjllOWNhMGYyMGUzOTkwN2NkYTA4MDI5ZWVjZSBsZWdhY3ktdHJ1bmsKKzM1Njc0IDMxMGRkOThlYTA2NDYxOWNiOTg4M2Q4MGU5YzFjZjBiNmRjYzQxMWQgbGVnYWN5LXRydW5rCiszNTY3NSBjNTZlYTYwY2IzYmY3NzYzZDk1YjNkZjBjMGEwMjljNzkxMWIzMDQyIGxlZ2FjeS10cnVuaworMzU2NzYgY2EyZmI1Y2YyZmQ1NzVjNzI5YmUxMjUyYTY0NjgzNWJiYjNhNjMwZSBsZWdhY3ktdHJ1bmsKKzM1Njc3IDI3OTRmNjI3ZWJhYTAwMTVmODg3NDM4OTg1ZDI0YWVhMGRmOTc0MTMgbGVnYWN5LXRydW5rCiszNTY3OCA2NGZjZmYxMjFmN2I1ZGVkYzY3N2UwNzhmMmM0NWNkYTQ1YTc2NjIxIHJlbGVhc2UyMy1tYWludAorMzU2NzkgNmU1NGM1OTI4NTNjNjRjNzdlYTg1ZTQ2MDZjZDVkMDZjZjBkMzVjZSByZWxlYXNlMjMtbWFpbnQKKzM1NjgwIDAyNjViZjk5MTJlYTI5MTBkNTgzMWU3MWZiYjFkZTBiNjUzMTMzMjQgbGVnYWN5LXRydW5rCiszNTY4MSAzNTU0NzM1MzRjNzA2ODEwZjY3NDY2ODA5ZDIzYjA4ZGM0NjkzY2ZhIGxlZ2FjeS10cnVuaworMzU2ODIgYzQ4ODhhOGZjZjcwNjFiNjQ2YTFmNjRlNjIxMDJkZjE0ZWY4NjMwNiBsZWdhY3ktdHJ1bmsKKzM1NjgzIGU5NzUxOGM2NmFjYzA4MTU2ZDcyZjM3ZTc1OWQzYzY4ODFmYmY1ZGQgbGVnYWN5LXRydW5rCiszNTY4NCA4OTc1ZGVmYmYzYThiMGFiNGFlZjExM2Q4ZjEyYjVkODgwNWY1ZDcxIGxlZ2FjeS10cnVuaworMzU2ODUgZTc2MDkyZDQ5MDJjZDQ0ZGNkNmZjNzUxMzViYTIyMGYyMTZiNjExOSBsZWdhY3ktdHJ1bmsKKzM1Njg2IGYzOWM1NmY4Y2NjMmJlNDg2NDVhZjlkZTQwMzYwYjZmYTU2Y2QzYjAgbGVnYWN5LXRydW5rCiszNTY4NyA4OGQ2MjVkOTI4YWNkYmEwN2UwNWViY2ZmMzczNTk3NWYyMTYyZDhkIGxlZ2FjeS10cnVuaworMzU2ODggMDU4ODIxZDhhZWZkYzUwY2Q0N2Y5YmRjN2QzMzcxNTJmNDVlMzkwYyBsZWdhY3ktdHJ1bmsKKzM1Njg5IDZiMjM2OTk0Njg0YWY5MjljNDYwMDEzZTYyMWU4ZjQyM2YyYzc1NTIgbGVnYWN5LXRydW5rCiszNTY5MCBjZWM3NDBmOTJmYTQyMjUwMDM1NTA3OTY3ZjZlMTY2MWU1ZGUwNWVkIGFzdC1icmFuY2gKKzM1NjkxIGIzM2RkYjQ4YjdlMDRlMTU2ZDgyMWU0Y2E1MTFiYjYxOTc5NjlmMzQgYXN0LWJyYW5jaAorMzU2OTIgZWI2ZjU4YzNkOTcyNWYwNTBkM2RhZmMwNGFiZWIxYzZjNjIwYTRhNSBhc3QtYnJhbmNoCiszNTY5MyAxNmU3NTNmZjMxYjIyNjhjODU1NjYzYmJiNjBmODAzYThmYTc2YjBmIGFzdC1icmFuY2gKKzM1Njk0IDRhNTQzMzA2ZGZmYTE2OGYwYzVhODQxZmVlNjQ2ZDVmZDA3ZGI1MGIgYXN0LWJyYW5jaAorMzU2OTUgZjdmNDEzYzY1NGY0ZmMzYjRlNzQ3Njc3YzQ4NTI4MGI5MDJmODdjMyBhc3QtYnJhbmNoCiszNTY5NiA1NWNhOTdlN2JkMGZhMzZkMDdiMTJhN2M4MjVkZTM4NmY0MTg1ZTdhIGFzdC1icmFuY2gKKzM1Njk3IGIyNDJiNGQ3ZTE3NzQyOGIwMzUwZjQyYzIyYzZmMGMwMzM4MzI3MWQgYXN0LWJyYW5jaAorMzU2OTggZTExNDBlNjAxZTcyMjg0ZTdkNzFhZmZhYzA4Y2MzNzhhYjhiODM3MiBhc3QtYnJhbmNoCiszNTY5OSA3MzQ4NmZmNmI1NTJmMzg4N2Q4ODg4NjY3ZWE3Nzk0YWMxMjBmMzcyIGxlZ2FjeS10cnVuaworMzU3MDAgOWRmNTE4NWZjNWNhYmUxYTc3NGM5ZjAyZTkwOGJlNTRkMTdjZTg2ZiByZWxlYXNlMjMtbWFpbnQKKzM1NzAxIGE1ODZmNzUyYjJiZGNjZWY1ZjJkMTA1NGUwNzkxZjMxMmNmMWYwMjQgcmVsZWFzZTIzLW1haW50CiszNTcwMiA3MDM4OTc3Y2VhOGRlNjEzMjFhYjY5YmZiYzQ1YmM0YWRlZGM2Y2JiIGxlZ2FjeS10cnVuaworMzU3MDMgMDhhMzkxZmRlNjhkYWYzNzVjODZlOGYzZDg3NzE1NTZlYjIyMjBkMCByZWxlYXNlMjMtbWFpbnQKKzM1NzA0IDU2ZmVkMDlkMDFmMzdlZDQzNzJlZWQ4MmE4MWVjODJkMmZjNGYwN2YgcmVsZWFzZTIzLW1haW50CiszNTcwNSA0YmM2MjBmNDdmYjQyZWVlMGY1OWRiMDVlYzg5YzgyZjA1OWJlNjU2IGxlZ2FjeS10cnVuaworMzU3MDYgODE2MTlkY2JmYWU3YjU1NjQ2NmJjNTJlYWI4ZDY2NzQ4MjRkMTQxYyBsZWdhY3ktdHJ1bmsKKzM1NzA3IDNjNzk2NDEzZjA1ZTcyOWRlMzQwMzY0YTAyZWZjYzlmMzMxMDg4YWIgbGVnYWN5LXRydW5rCiszNTcwOCAzOWMzNjUyNmQxYjA4MjIzZTU4Y2VhY2JlNGI2OWFhMjFkZTcwOTI5IGxlZ2FjeS10cnVuaworMzU3MDkgZDAzYjU0ZTYwYTY3NmIxZjdkMmVjZGRjZTQxZDJmMjZhNmFlZTZlOCByZWxlYXNlMjMtbWFpbnQKKzM1NzEwIDRkYjBjODRmNWM2YTM1OWFjZjkwMjRiNjc1MDgyYmU5NzM4OTNkZDIgbGVnYWN5LXRydW5rCiszNTcxMSAzYzYxOGM2OTM5ZTMzNDI3NzJlMGE1M2VhNzFkNDhkNDJmODYzM2Q4IGxlZ2FjeS10cnVuaworMzU3MTIgZmJjYmNkYTE0YjkyZWMzMjM1MTllZDM2OTNiNTBmZGIyMzc5MzQzNSBsZWdhY3ktdHJ1bmsKKzM1NzEzIDIyYTU1MDI4YTc4ZDNlYTgwNjUzOTQzOWRiMjdlMjM2YjA1MTcwZDUgcmVsZWFzZTIzLW1haW50CiszNTcxNCA1MTg0ZDY5YzI0ZGNiOWM2MjEwN2Q0NGFkMmNlNGRkMzRhMjE4Yjk2IHJlbGVhc2UyMy1tYWludAorMzU3MTUgMDk4MDBiYTJhNjUzNDhhMzNiY2YxMDc2MTAwNzJhNjQ2ZWFjMzVmNyByZWxlYXNlMjMtbWFpbnQKKzM1NzE2IDkzOTE3ZGQ4YTg3YzIxMGNmYzQ5ZDllZDgxODExOTA5YjdmNjRiNTUgbGVnYWN5LXRydW5rCiszNTcxNyA2MDgwMjhmMzg4YzVjNDljNzc3NzhlYzJhYjNlZmQ3NzRhNTQxMDg4IHJlbGVhc2UyMy1tYWludAorMzU3MTggODg2ZDY2ZjUxMTA1YzQ3MzY5ZDdjYjgwNzMzYzM5MDgwNGI2YmQ1OCByZWxlYXNlMjMtbWFpbnQKKzM1NzE5IGY4YzBhYzViZWYwMjhjYzE1Y2VjYWE1MzVlYzNjZDlmOTEzNTVkZTggbGVnYWN5LXRydW5rCiszNTcyMCA2M2I2OGNiMmI0NDJmNGU2NjRmZmE1OGQ1OTg2OTc5NDFhZTI0ODkzIGxlZ2FjeS10cnVuaworMzU3MjEgMWYyOTM0YTMxOGI3ODFiYTU5ZjQ0MTkyY2RkZDI3MDIzNWM5OTMyNSBsZWdhY3ktdHJ1bmsKKzM1NzIyIDEwYmEyNDE2MjM5MTEwZThhZjdiMDQ1NGQ4MDkwZDM5YWYyOTg5YjEgbGVnYWN5LXRydW5rCiszNTcyMyBmZGFiYjY4MDhkNTJmYmZhMjU0YjBlMTgyMWRhNjJhZjczNzk5OTJiIHJlbGVhc2UyMy1tYWludAorMzU3MjQgMDFlYTAzZTdiMjY1ZjhiNzhmNTk3OGViYzkwYThiNDM5NDAzYTMyMiBsZWdhY3ktdHJ1bmsKKzM1NzI1IDAxZTMxNjQ4OWQ2Nzk5MjI0MzY2MGQxZDgwZTdiY2EzYmY2OGIxZWIgcmVsZWFzZTIzLW1haW50CiszNTcyNiA2NjM2ODExOGExOWJjMDM1OGIzYTkxZmRkOGQyOTgzN2M4Mzc3YzA3IGFzdC1icmFuY2gKKzM1NzI3IGYxZmQxYWU0MjEzNmEwMjNlNGYzNDdlYWJkNTkzNzBlZGJlODkyNTAgYXN0LWJyYW5jaAorMzU3MjggYzkyMTQzODI2NjVmNGNmOWIzYmI3ZTZhY2VmNTMzZDhkZTA3YmM2OSBhc3QtYnJhbmNoCiszNTcyOSAwNjAxNGY3MWYxNjM2YTljZjA0NTRlNzNlZmE2NDkwNjk3ODBjNzU2IGFzdC1icmFuY2gKKzM1NzMwIDc2NzNiZmY3NDEyMjhiODM0OTVkZDc1MTI1M2ZmMTYxMDk3ZGFjYWMgYXN0LWJyYW5jaAorMzU3MzEgNGMzNGFjOWRhOTNkNDI0NjU5N2JkZDFjZTFiYWY4Njk4ZjRmOTdkYSBhc3QtYnJhbmNoCiszNTczMiA3YzdhMjk4MTQ1NWNhOGIzYmNiNzU4ODcyMzBiMTRjN2JiMDkxMWExIGFzdC1icmFuY2gKKzM1NzMzIGZmNWEzMWE3MWQ5YTZiMGVjYzU1ODMyMGY3Mzc0ZmJiYzc0ZGEzNDMgbGVnYWN5LXRydW5rCiszNTczNCBmZjI1OGM2NzFkM2NjZDUxMmQxYTkyMjlkMjk5MDI5MDQ2NzUxYTNkIGFzdC1icmFuY2gKKzM1NzM1IGRiOGM0NWI5ZTgxODZlYzJlNTJlMzdkZmVmZjY3YjZmYTQ3NDE5ODIgbGVnYWN5LXRydW5rCiszNTczNiA5ZDE2MzNlNmM0MmViOWQzOGFhZjViOTAxMWRmZWVjMWVjYmNjODliIGxlZ2FjeS10cnVuaworMzU3MzcgMDU5NzQwZDUyYWU1YzRlOGYzZDljNGQyZWU2NDVmYWUwNmQ3MjBjOSBsZWdhY3ktdHJ1bmsKKzM1NzM4IDMyMDM1NGI3NjZlNzJkMzA0ZGMzMDYyOWRhM2JiMzM0YjcwODgzY2UgbGVnYWN5LXRydW5rCiszNTczOSAxMjZkODE1NTQ2ZDMzNzlmYjM2MmFjYmU3MzgyNTljNzQ5OTg3YzE4IHJlbGVhc2UyMy1tYWludAorMzU3NDAgMjI4ZWE3NTc3MGUzZGU4MzJhNDE3ZDhmNjE0N2M0Y2Q0ZDcwZmI2YiBsZWdhY3ktdHJ1bmsKKzM1NzQxIDMwZWEwYjM1MmZjMDJmZGIyZDMxMDg4YWFlMDdlYTNhZTIzYjY3NjUgYXN0LWJyYW5jaAorMzU3NDIgM2I0NDAzMzYwNzc1ZjA0MjIzMzMyZTFjZWYzMzM5ZjJlNGY2ZmQ1NCBhc3QtYnJhbmNoCiszNTc0MyBhYjQ5ZTZmZDc3NDY1MDBlMGEyYWQ5N2RhNDhiODhmYTIwMzc0M2FlIGFzdC1icmFuY2gKKzM1NzQ0IDIwYjVlOWE2ZWY2YjBhNWE3YWJlMmUxNzQyZTE0NGNjNjQxOGMxNGEgYXN0LWJyYW5jaAorMzU3NDUgMjgyMmVkOTU2MzA5ZmU4ZDk1ZGYwOGUzMzNiNzE3NTdhYjczNWRmOCBhc3QtYnJhbmNoCiszNTc0NiBhYWI3NzZkNDFiNGY1MTg0YWM0NWRjNWJkY2RlYjZhNzY3OGNlZGYzIGFzdC1icmFuY2gKKzM1NzQ3IGI2MWU1ZjkzZWJlMGExMzM0MDA4OGYxZWQ2ODE2NGI5YmY3Yjg2MDggYXN0LWJyYW5jaAorMzU3NDggY2U3NmE5ZDZlNjUzMDhmMDA0YTJlN2RjMWMxOGY1M2RkMDUzNGQ4NyBhc3QtYnJhbmNoCiszNTc0OSAwNjExMDhhODk1MTZmMTFmNDVhNWQyZmJkOTI1YTFkOGJmMWRiMzE0IGFzdC1icmFuY2gKKzM1NzUwIDI0NDhmNjg0Y2U5ZTljNGU5YmY2YmE3ZTJkMzA0MWZjMDc3ZThiMWEgYXN0LWJyYW5jaAorMzU3NTEgNGYwYTFlN2FkNjljYTE1OWM3Y2ZlMmZkOGMzNGE0NTYzZTBmOTVhYSBsZWdhY3ktdHJ1bmsKKzM1NzUyIDhmMWNlN2IwZTQyM2UzMjk2MDljMGEzY2NiODRjODBlNDhmNjZiNjEgcmVsZWFzZTIzLW1haW50CiszNTc1MyA2OWMxYWI2YjI2MDIxNDFiMGE3Y2E0NWE0MTM2ZWIxZjQ0OGFmNzc0IGFzdC1icmFuY2gKKzM1NzU0IDU0YWU5ZGUzOGYwYzJkZGMwMDI3ZDRhNGE2MDZkNjMxNjBiMzRmNWIgYXN0LWJyYW5jaAorMzU3NTUgMDIwNDQzYTEwYzIwMjU4ZDM4MDYxYjdmMjUyNzk4ZDU3M2Q0ODVjNyBhc3QtYnJhbmNoCiszNTc1NiBiYjI1NWY4NTU5OTllOWY2MGU1M2ZkYTdlYzQwNDU2OGViMmM5NWViIGFzdC1icmFuY2gKKzM1NzU3IDE4MjI5NTM4MWYxNDdlZmQ4MzU5NTJlNjE1NWI2YzU4NDBmNzZkNWMgYXN0LWJyYW5jaAorMzU3NTggNTQ2NWEyY2IwYWVhN2U3NzNhNmRkNTg2YTYwOGE3Njc3ZTcyNmUzMCBsZWdhY3ktdHJ1bmsKKzM1NzU5IDBjNjY3NjEyNDMwODlhNDNiOTg0NTEyNDY4MzY1ZGM4ZjE1NWM5NmYgYXN0LWJyYW5jaAorMzU3NjAgNzY1ZmUxNmY2NjViODhkMzFkZDM0OWQzOTRhMmYwYTllMjc4YTgwMCBsZWdhY3ktdHJ1bmsKKzM1NzYxIDRiZThlMDEwYmRiOWU5YzAyY2UyYjc2NTc3MDIzMmFmN2I1ODk5ZDggYXN0LWJyYW5jaAorMzU3NjIgMjAwYmY3OWMwMTU5NjA5ZDNjNzViYWQ1NmE0OTE1ZDc5N2RiYmZjYiBhc3QtYnJhbmNoCiszNTc2MyA1NmY5YjMxYWM2OWZhNDBmOTJlNTYzZGM2NDQxOWFkMTZiZjMxYTY4IGFzdC1icmFuY2gKKzM1NzY0IDM0MGU0OWUwMTU3NjY0N2I3OTM5ZmI1MDhmMzA1NTg3MWZjYTY2MDIgYXN0LWJyYW5jaAorMzU3NjUgMGFlY2MwN2UzNWQ5ZmM2MjVlYTU4ODAwNzI4MGVmNDdiZmM3NWI3YSBhc3QtYnJhbmNoCiszNTc2NyBmOTUwZWYzMDlkNzUxMmY1ZWNhYjRlODA5NzFmMzliODQzOGM1Zjk1IGxlZ2FjeS10cnVuaworMzU3NjggMzgzOGNkZWUxYTIwMWIzYzJlNTliZjJhYjZjMDg3YTE0MTQ3ODdiMyBsZWdhY3ktdHJ1bmsKKzM1NzY5IDYxNjdlNzhhMTdhODI2YTgzOGY1NDRiOWZjZDg5NjFlMzAyYWNiN2UgbGVnYWN5LXRydW5rCiszNTc3MCAwZTllMGM1MzQ5YTBkZWViMGUxNGI5Y2U5ZWE4YmEyYTM5NGU3MmYzIGxlZ2FjeS10cnVuaworMzU3NzEgOTBlMDg5NGFlYzViZWQzOGQzMzJjMThlNzQ5MzAyM2YyOWQ0MDg1ZCByZWxlYXNlMjMtbWFpbnQKKzM1NzcyIDU4MzE3ODUxOGJkMGNkMzA3ZTgxYTZkYjYxYWQ0Mzg4NmQ3MzE1MjUgbGVnYWN5LXRydW5rCiszNTc3MyBjZmFmYWVhOTNkOTA5NWRjNGE5ZjdhNzVlOTZjNDQ1YTc1NGJlMTg0IHJlbGVhc2UyMy1tYWludAorMzU3NzQgZWE5ZWU5Yjc0NjcyOWNiNTQ0ZWM0NjQxMTM2ZGMxNGFjNDMyZjBjNCBsZWdhY3ktdHJ1bmsKKzM1Nzc1IGYyY2VhMTZhMWYzODJkNGI5NzMzZDkwZjk4MjAzZDAxZjQ1ZjhkMTggbGVnYWN5LXRydW5rCiszNTc3NiA0N2VkN2JjZGYwODY0NmI0Y2ZiZDkzZDMyMDg3YTJlYmY4ZWIyY2Y2IHJlbGVhc2UyMy1tYWludAorMzU3NzcgMzM4NTc3YWZkYWI2ZDhiZDEyMjM4NjA4ZjU1N2Q1Yjk4OTkyMDczZSBsZWdhY3ktdHJ1bmsKKzM1Nzc4IDFjYTNhNjJhMDA5YWQ0YzVkZDNkNGNiZTI2OGJjYTEyNWI5M2I4YWYgbGVnYWN5LXRydW5rCiszNTc3OSBmOWZhZjU1NzE3MjAyZDMzYzRlYTgyNDUzZTlmYTgwYjU2YmEwMDNmIGxlZ2FjeS10cnVuaworMzU3ODAgZmFhN2VlYjExOGNmNDdhZGE1ZThiZDk0MjYwNTZhMzAwYTY4MDYxOCBsZWdhY3ktdHJ1bmsKKzM1NzgxIGE0OGU2MDhiYTYwNWZhMWJlNzQ0OTM4OWQ4YmNlZjllZGQ2YzBiMGUgcmVsZWFzZTIzLW1haW50CiszNTc4MiA1Y2ExMDNjMzdkNWUwYmRkODBiNmQ2NGM1Yzc0NTI3YTg4ZDNjMjdlIHJlbGVhc2UyMy1tYWludAorMzU3ODMgNWFiODEyY2QwZGI3NTYyMjY1NDgwNWQ3MjYzMjY1NzNmZjhhZGI5NSBsZWdhY3ktdHJ1bmsKKzM1Nzg0IGVmMzRkZWMwMDRjZGRmNzljNzgyNWFiNTE2N2I0MTAzYTM3MDQxZDYgbGVnYWN5LXRydW5rCiszNTc4NSAyMDRiN2JjZWFkNGM5OGVmYmNlZThlMTc2NjYyNmUzZDE3ODE5Yzg1IGxlZ2FjeS10cnVuaworMzU3ODYgM2QwNDZkMDYzYTg0YTliYTAxMzQxNjY4ODkyMzczMzg5Yzg3NzhjNSBsZWdhY3ktdHJ1bmsKKzM1Nzg3IDIyNzZkZTg5MWZlMmVmNGRjZmRhZGNiMTZiNjQzNGZkYzc5NTc3Y2EgcmVsZWFzZTIzLW1haW50CiszNTc4OCAwYzc2YTllNWM4MzgyYzNiZDYzYTJhMDNmYjljMTYzMzBkMjljNTBkIGxlZ2FjeS10cnVuaworMzU3ODkgNWMzNWIzY2E1YmE5M2Q5NmE3YjZhNGUzODUyZGViYjIyNGI5Yzk1ZiBsZWdhY3ktdHJ1bmsKKzM1NzkwIDBlOWZkYjc2YWM4NTVmOWIzY2JkYTkwN2ZjNWQ1Y2Y0YWQxMjkzN2UgbGVnYWN5LXRydW5rCiszNTc5MSA1MWUxYjZkY2ZmNjFlOTIyYzczYTdiNTlmMDk2NWQ2Yzg4Y2E5Y2U5IHJlbGVhc2UyMy1tYWludAorMzU3OTIgN2E3NDk5ZmJjNDUyOTk2NjE0NGE1MmViYzRlYTZjMWI4MjFjMzZkYiByZWxlYXNlMjMtbWFpbnQKKzM1NzkzIDZjMTJhM2JhZDdkNTM5YWY5NWRlY2RhYjI3MTdjOTQ4YjNlMjM2ZDEgbGVnYWN5LXRydW5rCiszNTc5NCA2MzBlNGZiY2RlYTI2NWU3ZTgwMmQzZDRjMzM2MDU3MDZjNTY3OWIxIHJlbGVhc2UyMy1tYWludAorMzU3OTUgYzVhNTUyNTc4MzQ0ZjVjYTdmNDQ5ZGVkYTczYzY1MjM5ZWVhZTI1OSBsZWdhY3ktdHJ1bmsKKzM1Nzk2IDliMmI3ZDNiNDJmM2E2MWRjOTBiNjZkYjFhMmY3YjZkOWJkZWU1OGMgbGVnYWN5LXRydW5rCiszNTc5NyA2ODdiMGM4MjU0ZmFhNDVkMjlkNjhmMjFhYzMzODk1ZjEwNDAyOGI3IHJlbGVhc2UyMy1tYWludAorMzU3OTggNjY2N2ExZDhhZmIxMDQ4ZDBhZWE0NGNkM2Q5MGRhMGM2OWI3ODI3NSBsZWdhY3ktdHJ1bmsKKzM1Nzk5IGE0NjI2NGI5MWE1MThmOTU0ZWVkY2MxZGNkYTI1MWExNGNhYWFkMzcgbGVnYWN5LXRydW5rCiszNTgwMCBiNjFmZTgyOGI3Mzg4NmYyNmZiZmM3ZWM1ZmE3ZWVkNjhkM2RiYWU0IHJlbGVhc2UyMy1tYWludAorMzU4MDEgNTFhNWZiNjA5MzRkNzUyMzc1YzI3ZmJhZTJmOTcwNDcxOTcxNTg2OCBsZWdhY3ktdHJ1bmsKKzM1ODAyIDIyMjkwOGRmYmY1OGJlOTgwMzc0NTMwYWFjZmQwNTFmYTY1NWZhZmIgbGVnYWN5LXRydW5rCiszNTgwMyA4NjE1ZjI3OGRhNWYzNTY4MWJmNmIyZTZiNWE1OWYzNzFlZDA5MTkzIGxlZ2FjeS10cnVuaworMzU4MDQgOWY4YmZkNTQyNTFmNzQ0Mjg5OWExMTI5YTkwOGFiMDYxMDM4OTc4ZiBsZWdhY3ktdHJ1bmsKKzM1ODA1IDhiMmE0MjlhZjQyZmYxNjQxNWNmNmE1OGFmMzE3NGMxZTUwZTc3MDcgcmVsZWFzZTIzLW1haW50CiszNTgwNiBhYjY4MGM0YWNkMzVhZjgxM2QwMmNlYzY1NzQ5MjYzYmE2ZDIxYWI4IHJlbGVhc2UyMy1tYWludAorMzU4MDcgNWViN2E4ZTJmMzQ1Mzk4MTZhYmE0NjYwNzEyOGUzNmQ2NjJlNDBjMyBsZWdhY3ktdHJ1bmsKKzM1ODA4IGI5ZjA5MTk2NTI2ZWFiNDAwNDgwOTBmYzg4ZTNmNjA3OTg2MDNiNjEgcmVsZWFzZTIzLW1haW50CiszNTgwOSBjYmJhY2RhODQ0ODBhZTJiZDg1ZDFjNjEyNmJlNzYzYzlmNzExODk5IGxlZ2FjeS10cnVuaworMzU4MTAgYTE0MmU0ZTk3ZjEzMWEwZDk4ZjY2ZjdiODEyMDBiNDk2NWVjMDg1MiBsZWdhY3ktdHJ1bmsKKzM1ODExIGU4YTMxYWI3YTg3NDhlNjE0NjBmYmFlNzQ2MmVkZmE3ZDUyZjczYTIgcmVsZWFzZTIzLW1haW50CiszNTgxMiA0ZGVlNTgzMTVjYzQxZmIwNGQ3YjU3MTFlOWVkZjdiZTg5OGY4Y2I5IGxlZ2FjeS10cnVuaworMzU4MTMgNjQ2Y2IwMTQ2OTQyZTFmNTdkMDNhYmE3MzZkNTVjM2JmYTU3YTFmNyByZWxlYXNlMjMtbWFpbnQKKzM1ODE0IDgyYmM2OTk2MTAyMmRjOWNjOWMyY2JjZWQzM2Y4ZGYyY2FmZjk1Y2IgbGVnYWN5LXRydW5rCiszNTgxNSBmNzkzYTA0NmVkOTgxNDI2ZWEyNjMyZDYxMDA3Nzg2MTA2YjZmZmVlIGxlZ2FjeS10cnVuaworMzU4MTYgZWJmYTVjZDhjYmE0ZDIzZTVjYzg0MWIxOGY5Nzc5Yzg0YTY1ZjU1MyBsZWdhY3ktdHJ1bmsKKzM1ODE3IDI2ODM5ZjMyZTcwZDA3MWJiZmQwYmY1YjljMmIwNmIxZWEzMGM2OWYgcmVsZWFzZTIzLW1haW50CiszNTgxOCA2NDA4NGY5YmFiYTFlYzA0NmNmOGI5ODY5YjQ3Yjk0ZGZhZTcxZmZhIGxlZ2FjeS10cnVuaworMzU4MTkgNGViNTc0YjEyMjVmYWFiN2Y0NDg5YTM3ZTE0NDFiMmI2Mjg2MGM1OSByZWxlYXNlMjMtbWFpbnQKKzM1ODIwIDJjYzcxNDk3NzQ3OTM0MTZlMDdmYjlkODViZWVkNGM2MTgwYTIwNzggbGVnYWN5LXRydW5rCiszNTgyMSA5ODRiMjg5OTkyYzA2OTNjMzVkN2MxYjRmMjkwZjU0ODFlMjNjMGRmIHJlbGVhc2UyMy1tYWludAorMzU4MjIgYzI0OTMwNWJmY2FjOGE1NGVjMzY3ZTczNGMwOGM5NWI2OWNjZjA1MSBsZWdhY3ktdHJ1bmsKKzM1ODIzIGU0ZjUyZTJlMzgwMDBiNDY0NWM1MTcwMjdlNjQwZDdiOTIwMDg1OGIgbGVnYWN5LXRydW5rCiszNTgyNCBlYzA5YTcxODQ5Y2M2M2FkYjI2YTZmYjYxNTZlMDdkZDM3NDBhZDM1IHJlbGVhc2UyMy1tYWludAorMzU4MjUgZTJhMGVmODdkNGQ0MGRjNDRkZGQ0OGZjNDZjNTZlZDBiMjEyZTE0YiBsZWdhY3ktdHJ1bmsKKzM1ODI2IDE0ZjdmOWI4OWRhOWM1ZGQzZmVmYzA0MDY0NTc4ZjdiNGI2MjE2YjcgcmVsZWFzZTIzLW1haW50CiszNTgyNyA2ZTA3OGY3NjEzYWQ3YWMxMWMyNGY2ODY1ODg5OGVkN2UwYzA5MWY2IGxlZ2FjeS10cnVuaworMzU4MjggNDJlMmI1YWZhNzE1NzM1M2NkNzI2ZWU4YjRjZjVmZjMwNjU0NjgxZSBsZWdhY3ktdHJ1bmsKKzM1ODI5IDU0NGYyMTcyMzYzZDIxZjdlNDg2MjliNmY0OGRiZTk5MWE2NzQ0NjcgbGVnYWN5LXRydW5rCiszNTgzMCA1MDcwOGI4ZjBkMjg3ODJmNzE2OWQxMDEyOTI0Yjg0MTU4NjE4ZTE2IHJlbGVhc2UyMy1tYWludAorMzU4MzEgYTI5YmFjMGFlOTA1Yjk0YWJmYWJhMDFkMDE0MDQ3YTgxYzU0NDI5NiByZWxlYXNlMjMtbWFpbnQKKzM1ODMyIDI2ZTA5MGNjYmI2NGMzN2QwYjcxOWJjMjI0NTQ5ZjhjM2U3NGM4YTMgcmVsZWFzZTIzLW1haW50CiszNTgzMyA1ODJkY2EwMmU2MGY2NTdhOTA1MTg2MzhiOWVkZWY3MGYxMmViNTZmIGxlZ2FjeS10cnVuaworMzU4MzQgMmQ3YjBjYTBjMjZjOTYwMzY2Mzc5MWYxMjhlMzkxNmI0MTIxZjdjZSBsZWdhY3ktdHJ1bmsKKzM1ODM1IGU5MDI2OWZjMTkzNjViMTJhYzc1ZGZjYTdjZDA0YWQwMzYzODRmM2UgbGVnYWN5LXRydW5rCiszNTgzNiAzNzEyMWM4YjY5MWRhMDhhMGJmZWE1ZTM1NjNiOTRkNjE1NGExZTZhIGxlZ2FjeS10cnVuaworMzU4MzcgOThhODA3ODg4MzVjMDY2MGU2YmM0ZTg1NTA3N2U2YjliMTQ4MWI0YyBsZWdhY3ktdHJ1bmsKKzM1ODM4IDRjODI1NThiMTVmYjNiNjQwOWYzMTYyNjdmOGYyMzcyNDIyMjE0NWUgbGVnYWN5LXRydW5rCiszNTgzOSBhMWIzNzRmZjAxODQxNjRhNDk4NTU1MTA5NGM1MDc5ODZiNWI1YTI1IGxlZ2FjeS10cnVuaworMzU4NDAgYzEzYmI3ZjRiY2QxODhhNzBlM2JmZmY2YWQ5OWZjOGFkOTFlNWM2NiBsZWdhY3ktdHJ1bmsKKzM1ODQxIDYzNWVmMTEwNjU4ZWY4ZDNjODk3NTBkNTg3NjRiNmYwNTRhZjQwYjMgbGVnYWN5LXRydW5rCiszNTg0MiBkYjZhNmQzOTFhOTk4ZjUyZTMyNWFhOGU1YTc2NGQ5NjY1MGY0MWVhIGxlZ2FjeS10cnVuaworMzU4NDMgYjU1OTRkNzI3OWRmNjllMzViZDFhN2U0NDU2ZmI1YmNlOWNjMzdlNiBsZWdhY3ktdHJ1bmsKKzM1ODQ0IGY0Mzc2Zjc2NzRhMjIyZTg2ZmU1OTc1MjNjOTVhYmNjYmJjNGVlZDMgbGVnYWN5LXRydW5rCiszNTg0NSBiOWM2NThhYzBlMjBjZDZiNmJmNTRkMDdmYmNmZDBkMTk3MWQ4M2NmIGxlZ2FjeS10cnVuaworMzU4NDYgNjk2ZDkyZWZmMDIyZmU0Zjg1OThkZmY1YTBhMWIyZjk3YTg2NjdhYiBsZWdhY3ktdHJ1bmsKKzM1ODQ3IDMzZjZhMTVkYmY2Y2YwMWQ4YTM3ODg2NTMzZWVhMjJkZTMzMWM1N2YgcmVsZWFzZTIzLW1haW50CiszNTg0OCAwMGVlYTI4MTM1ZjhmYjcxYjFhODAwZjY5YTNlMGJjODUzNmQxMTFjIHJlbGVhc2UyMy1tYWludAorMzU4NDkgMzgzMTA5NDMzYTk3Mjg0ZjcwNDEwNjRjMzdjMzM2YmFiOGYyYTJiMCByZWxlYXNlMjMtbWFpbnQKKzM1ODUwIGJhMzEyMTZlMzdjOGYyMWE1NzJjNmJiYzBlMjllYmM4YmEzZDRhZTYgbGVnYWN5LXRydW5rCiszNTg1MSAwYjMzZTM3MzdiNGNiZDdjMzc2N2U5ZDdjNGQzZTdiNTgwZDg0MDdmIGxlZ2FjeS10cnVuaworMzU4NTIgZGNiZTA0MmI4OTJkZjViYmE5ZjU1M2IyYTc3NjZjNTQ4NWE2NjYzMCByZWxlYXNlMjMtbWFpbnQKKzM1ODUzIDIyYjA4MDJhYmE3NDM3ZjI2ZWFkNjEwN2RjMDU1ZGRmZTgwODYzZjIgbGVnYWN5LXRydW5rCiszNTg1NCA5MWY3NmNmNDA3M2EyYWU5NGU5NThhNWJjYzhlOTljMmFhYTAwYjM3IGxlZ2FjeS10cnVuaworMzU4NTUgMzU4NmE3ODAxYmRhZjM2YzQ4NWI2NDVjZGI2NjhlZjA3MjhkZmI2OCBsZWdhY3ktdHJ1bmsKKzM1ODU2IGMzNmVhMDc5NDkyMDFlNzUxNzA4YmFjNDBhODdmMDllMzIxOTA3NDAgbGVnYWN5LXRydW5rCiszNTg1NyBkODAzYWZjZThhYzRlN2Y4ZjNhMmFjZTFlYjkzZjY5YzI1MzI4YzQ1IHJlbGVhc2UyMy1tYWludAorMzU4NTggMTM2ZWZiYjExMTdkZWJiM2EwNDM4M2I5OTgxZTg3ODY2NTliMjkzYyBsZWdhY3ktdHJ1bmsKKzM1ODU5IDk1NWUyMDZlNTNkYzM1ZTA0OWM1YWQ1MDQ1MTNhNzU0N2Q5NjdiNjkgbGVnYWN5LXRydW5rCiszNTg2MCA2ZGI0OGM1YmRiMjdhYmVlYjZjMWYyNGQ5MzFlNjY4MzIzMjdjYTcwIHJlbGVhc2UyMy1tYWludAorMzU4NjEgNTBkOGEyNzIxNGU2Zjg1MzhhMWRiMmYzMTQ5ZjE1ZDZlMTZhNjY4OCBsZWdhY3ktdHJ1bmsKKzM1ODYyIDY2ZWRlMDM4N2YzNjc0Mjg0YTM2YzRhMGM0YmZhYmJkNjA3OTE0M2YgcmVsZWFzZTIzLW1haW50CiszNTg2MyA5ZjZkNDVmM2MwMjNkNTcxOWZjNjQ0M2YxMTA3MGFkOWRkYWFjNWYyIGxlZ2FjeS10cnVuaworMzU4NjQgYzM4YTM5ZDM4NDg5YjEyNjRiMjJhODVhYjdmMDY3YmFhODJmZDU5MSBsZWdhY3ktdHJ1bmsKKzM1ODY1IDVhMjI0NjVmZGEyNGY5ZDZmOWFiZGIwMTg0MjAxY2M1ZWI2OTQ1MTEgcmVsZWFzZTIzLW1haW50CiszNTg2NiBlODUzNTVjZjE3NWFhZTA4NTFkMWIwYWYzODNmYjdjZTYwMDU2ZjNhIGxlZ2FjeS10cnVuaworMzU4NjcgZDA5YmFmYjk3NjlmN2U1Yzc4MzBmMTNiOGMxNGQwMWE4YjIwNjY1MSByZWxlYXNlMjMtbWFpbnQKKzM1ODY4IDhmZTFhMjY2MmFhYTUzODgwMGZjYzg5NzA0NTY0YWYxYjM1ODFmZWIgcmVsZWFzZTIzLW1haW50CiszNTg2OSBjNzljYzA0MDNhY2ZlZjM5ZDRiMDZkZjgxOTY4Y2FmZGY0YmQ0N2I3IGxlZ2FjeS10cnVuaworMzU4NzAgYzY4MDA4MGY5MDBjMTZjNjAyMDgzNmIzYWVlOWQwZjViYzI5ZTIzNiBsZWdhY3ktdHJ1bmsKKzM1ODcxIGU5YmNlODM3YzFjMzhjOWRkYjVlNjkwYmIwZDU1ZGRlNmVmMTEwNzggcmVsZWFzZTIzLW1haW50CiszNTg3MiA4NjAxYzc4NWM2ODNkZWEyMmM1OGNjNzg0OGQzODdjNDJjNTNiODAyIHJlbGVhc2UyMy1tYWludAorMzU4NzMgY2YzOTJiOTM2YTJlNDk0MjIyMGFlN2RiY2VkMjFjY2QwMDE4MjlkZCBsZWdhY3ktdHJ1bmsKKzM1ODc0IDE3YmY5NWVkNzU2MmM5ODEwNmE2MDFjZTA5M2IzYWEyMjg1ZWQ4YjkgcmVsZWFzZTIzLW1haW50CiszNTg3NSAxNTM4YThjZmIwZGRhNTRhNDI0ZjIzMWU0YzFkNTE0NGM5NDEzNjViIGxlZ2FjeS10cnVuaworMzU4NzYgNTNhYmQ5YWQxOTA5OGY5M2U1Nzc1MzBjNThkMTgxNjc4Y2M0MWU2YiByZWxlYXNlMjMtbWFpbnQKKzM1ODc3IGY2M2RkMjk5YTYwYjI3MzU5YWE5YzczMzYxZTIwZmFmYzhhZTlkMTkgcmVsZWFzZTIzLW1haW50CiszNTg3OCA3YWZlYjgzNmY2NmM1NmZlNzZmMDkxYWU5MjNjYmMxZjk0OGRmOWZmIGxlZ2FjeS10cnVuaworMzU4NzkgYTM4Y2Q2M2QxN2E3NGU0ZWIzNWEzMzc3ZDdjMTgwOWQzZjI4MTM1ZSByZWxlYXNlMjMtbWFpbnQKKzM1ODgwIDY3NThiNjMwYWNiN2VmODYxNDQ4ZTBiMTUxY2U0NmZiMzAxMzM1YjYgbGVnYWN5LXRydW5rCiszNTg4MSA2OTQzM2ZjMWM4MTZjYjIyYTE2ZmU5NjMxYzdiNTFjOTFjZjQ4ZGVhIGxlZ2FjeS10cnVuaworMzU4ODIgNDY5ZGNiMGFkNzM4YmQ0ZDAyMDg5YmI3OGM1NDYwNmY0ZGU3ZjE4ZiBsZWdhY3ktdHJ1bmsKKzM1ODgzIDYxYjI2Yjk1ZWIzM2VjYzQ3NDkyOTA2M2NjZjFlMjg3ZDYxY2Y2NmYgbGVnYWN5LXRydW5rCiszNTg4NCAxMjFhYWE0YmE5MjM1OGZlYzE5MDVlMWU0ZGZiMWZkZDJkZDM3ZWVlIGxlZ2FjeS10cnVuaworMzU4ODUgMWMyMzgxZDc5N2MwZjc1OGRhYzg1ZjFiYzk4ZTdhMjRmODU0ZmQ2MSBsZWdhY3ktdHJ1bmsKKzM1ODg2IDI3ZGE4N2M5MzE4ZjUzMzRkMmY1ODM5MzNkN2NiNDk2ZWJhZjRmZDEgbGVnYWN5LXRydW5rCiszNTg4NyAwMmY3NjlkN2U0YThlMTc0ZDU3ODRlZjdlMDlhYjZmMThlMWIyZGYzIGxlZ2FjeS10cnVuaworMzU4ODggMjRjNDYwMDE0MTZlMWEwNTI0NzhhOWVkMmIwNDlhMTA1ZGU0MDhkOSByZWxlYXNlMjMtbWFpbnQKKzM1ODg5IGIzMTlkYjM4NjlkODIyYTYyMmMyZDlkNGI4MWFmN2Y2OTVlOWYzOWYgbGVnYWN5LXRydW5rCiszNTg5MCA2MzBhMDkxNWEzMTAxYmVjN2EwODU0NDFjMWEyZDZiZTNlMmNhMWNhIHJlbGVhc2UyMy1tYWludAorMzU4OTEgYzcwMTA3NjBlOGFkMTlhYmZlZDBjZWMwNmQ1NzIwOTViMWM0NWNmYiBsZWdhY3ktdHJ1bmsKKzM1ODkyIGFiMGM4ZGRiMmM5MjUyOGY0NDFhMDllMjNiYTYwN2YwYzdmZGU4YmIgbGVnYWN5LXRydW5rCiszNTg5MyBkNjU4OWM4OGQyM2I3YTVjYzY4NDNlZTQ3NTBlMjUzMTNmZjc2MmI3IGxlZ2FjeS10cnVuaworMzU4OTQgMzE4YmY2OThlNDI1YjVkZGQ3OTAzNWU0OTgxN2YyMGE3NGVjNmY2NyByZWxlYXNlMjMtbWFpbnQKKzM1ODk1IDYwNmFhZTk1ZjEyODkyMmY4ZWYxODVmNWEyYWU0MGMyYTlkOTBiZGUgcmVsZWFzZTIzLW1haW50CiszNTg5NiA2NTdmYjJhNTBlOGVkMzM3MDRlZjJkNmUyNzRmYWI2MjkxZDBhMjNkIGxlZ2FjeS10cnVuaworMzU4OTcgNTJlMTQwY2ExNDZjNWVjZTUyN2I1MjE5NzM5YmY5YjM4NGJjYzgwNCByZWxlYXNlMjMtbWFpbnQKKzM1ODk4IDQ1YmEyYzY5YzMxZmRkYjcyY2FjYjAxOWIwNjZjZmJlOTI5MDdlYTcgcmVsZWFzZTIzLW1haW50CiszNTg5OSA1ZTE3ZDA1MzNhZDM2NDE5N2U3MzRiMjRiZDM4YjhhNWQ4YmRkYTY2IHJlbGVhc2UyMy1tYWludAorMzU5MDAgMDJmODlkMTJmMDM2ZjZhODMyMWRkMmFmZjdiZTFmNzhhOTNkY2U2MSByZWxlYXNlMjMtbWFpbnQKKzM1OTAxIDIwNjUzYzkwM2QxY2FmZGEyZDAxMmE3NTJlMmYzMjg1ZTI2NzYwNGIgcmVsZWFzZTIzLW1haW50CiszNTkwMiBmNzhkOTM4ZDdiYjA4MDRhNzZiOGEwNGI2YTk2ZjZkOWY5MTY3YzZkIGxlZ2FjeS10cnVuaworMzU5MDMgMjQ1ODM1ZWQ4ZGU4ZGYzNzczODNkMWI4NjVkOWIzYTkzYTViNTdmNiBsZWdhY3ktdHJ1bmsKKzM1OTA0IDdhZmIxM2MyZDUyNmY0ODM3M2VkYmI5MzY3MThiMWIzNDEzMzhjZTUgbGVnYWN5LXRydW5rCiszNTkwNSAwNTkzMTU4ZDE0ZjJkNWQxMjUzYmM4YmRmMDYxZjJlZjY1OGNlZGExIHJlbGVhc2UyMy1tYWludAorMzU5MDYgYWNlM2YxM2MxODM2Zjc5MGJhNmY1MmE2NzcyMWNmOTMyZTA5OTViOSByZWxlYXNlMjMtbWFpbnQKKzM1OTA4IDUyZmU5M2I2NTZjZjU5M2Q0OTk2NjMwNmUyZjY2NTc1MGM4NDdiNjIgbGVnYWN5LXRydW5rCiszNTkwOSBhNGI1MjZiNTBjMTIyMGU5MWY4ODQ0MThmNDUyMDFjOWQ1NDllZGI0IHJlbGVhc2UyMy1tYWludAorMzU5MDkgMzYzOTg2MWQwMjY0NmFmMWRhMzEyM2MyNTU2MGM0ZGIzZDdlZGJjZSByZWxlYXNlMjMtbWFpbnQKKzM1OTExIGVlN2ZjZGU1NjM2ZWExNzBmODA4MzQyNDQ5YWFiN2I1MDYzY2VhYTEgcmVsZWFzZTIzLW1haW50CiszNTkxMiA5ZmU0NTc5N2MwOTdmNDM4ODA2MGZhYzFjM2I3OWYwNGZjOWY5ZDA2IGxlZ2FjeS10cnVuaworMzU5MTMgMjgyZGJkOWIxZWQ2YjdhNjkyNTE2Mzk1ZWFmN2RiZTJmMGY3MGYxOCByZWxlYXNlMjMtbWFpbnQKKzM1OTE0IDY3NzIzOTEwODNjOWI3NTFlNDNjZDQ1NDRiZDdkOGNlYmQ2ZTQ4YmYgbGVnYWN5LXRydW5rCiszNTkxNSBkNmRlYWU4YmY3OWJiMDUyYWJkYjNhYTEzMDgzMzIyMTNiZjIzOTU2IGxlZ2FjeS10cnVuaworMzU5MTYgMDA5NDliYzY3ZTQ5YmRlOGZiYzFlYTlmNjY3ZTQzNTI4MGZkMjZkNSBsZWdhY3ktdHJ1bmsKKzM1OTE3IDhiZDMyYzUxNTQ1ZTNkZjgxNGIxNDM1Y2ViZmY5ZmRhNTNkZGI1NzAgbGVnYWN5LXRydW5rCiszNTkxOCAzZWRmOGRiNmY4YmZkOTU5N2ZlZDEwMjkwMDk1MDllODNiMWRhYjY1IGxlZ2FjeS10cnVuaworMzU5MTkgOWQ1ODQ3YjhmMzAxMWI2ZmIxMmUyNTEyY2Q2NzI2MzM5YjE4ZTA2YyBsZWdhY3ktdHJ1bmsKKzM1OTIwIGQzY2E2YmRjYmYzYzQ2Mzc2NzNlOTg3NDhmYWM0NDBiOWRhZmZiZTggcmVsZWFzZTIzLW1haW50CiszNTkyMSAxNjM4NmNiY2FiOTljMWFjMTdiZmI1NjhiYjk3YTgwYTZkNzhhYjUzIHJlbGVhc2UyMy1tYWludAorMzU5MjIgMmQzNDU4NWMzYjk5NDdlNjQ4ZGVhMzgxMThhMzE3ODgxMjkyMDY3OSByZWxlYXNlMjMtbWFpbnQKKzM1OTIzIDM3NTM4YTM2YjZlMmIyYWM4MGNlMGU0MDMzZDllNzc2YjZjM2ZjZjMgcmVsZWFzZTIzLW1haW50CiszNTkyNSBiNTI1NTU1MmFhNmRhNDlmYjYzZjgzY2FmZTQ0NzZhZDNlMTRhMzczIGxlZ2FjeS10cnVuaworMzU5MjYgOTZiNjI2OTliMjE4ZjlkZjlkZGUwMDYzZTg4MTI4MDhhMTg4Nzg2MSBsZWdhY3ktdHJ1bmsKKzM1OTI3IDY2NzJmNzMwOTNkYTMzM2M4NmMxZjRhMGZhOWVlMjZiOWJhZTg1NTAgcmVsZWFzZTIzLW1haW50CiszNTkyOCA3ZTNhMmMyNzRiMzY4M2ZmMjY5OTYwZDZiMzg3M2E1MGM4NDAxMzI1IGxlZ2FjeS10cnVuaworMzU5MjkgNGE3ZjdlODAxNmZjMjZiNWQ1ODQzNWQzNmJmN2IyMDM5MGI1ODUzZiByZWxlYXNlMjMtbWFpbnQKKzM1OTMwIDk0YjQ4NDVlNGRhOGM0OTY0ZTZhMjQ2Y2E1ZDg3OTQ1MGNlODEyYmUgbGVnYWN5LXRydW5rCiszNTkzMSAzMDBkNWQ0NjIzODcyMTVlMjAyOWU3ZmEyN2Q2OWM4NGI1ZDEyODM1IGxlZ2FjeS10cnVuaworMzU5MzIgM2FlMDFhMTEwODAxMjJmYTQ3YzU1Y2UxNjMyYjkwZjRhMDIzOWEwMyByZWxlYXNlMjMtbWFpbnQKKzM1OTMzIGZhNzUzYzE2YzYzMzNiZjNmOTkyZTQzZmMyZWU1YTc1MzAzNWExYTYgbGVnYWN5LXRydW5rCiszNTkzNCAxZDEzNTc0OTA2ZWZjYzcxOWMwMDFhYWJhMzRiNTlkYWNhMTg2MzcwIGxlZ2FjeS10cnVuaworMzU5MzUgNzAwMjNhZjIwODVhYjUwZWMzMjM5Yzg0ZmY5NjUyOWNmNThmZGRhZiBsZWdhY3ktdHJ1bmsKKzM1OTM2IDg0ZGZhOWE2N2RhMTQ2MTgzMjMxYTA5NzA3MDcyMGRiNGVhYzhiYmIgbGVnYWN5LXRydW5rCiszNTkzNyBiNmU0YmYzMzZkYjhhMjQ3NzE1NGE3MGQ5NDc4OTFlZThkMjg3MGM5IGxlZ2FjeS10cnVuaworMzU5MzggMjlhNTlmNjYyZGQxMDQ5MTJlZWUzZTJhNDNlYzA1YzMyZjAzNTk1NyBsZWdhY3ktdHJ1bmsKKzM1OTM5IDBkYTQ0ZWEwOTlmNTY4ZTFlZTQxOGNkNTJiZjkyMjI3ZWNiMzQwYWMgbGVnYWN5LXRydW5rCiszNTk0MCBkZDFlNTVkZWFmNTJmOGRiM2I5YjMzNDNmOTJkZDAwZDNmM2Q0MTExIGxlZ2FjeS10cnVuaworMzU5NDEgYzI1YThjMDRkZTNlNjE1MDk0NjBmMGMxOGVkNWY5M2Q0MzE2ZjU0YiByZWxlYXNlMjMtbWFpbnQKKzM1OTQyIDMwMmQzOTljZmQzN2VlYjFiOTdkYmJjODE5ZTY2MWQzMzE3ODMyYzEgbGVnYWN5LXRydW5rCiszNTk0MyA5NTU3N2I2MzViYjQxOTI4MjJlMzQ4OTU2OTdiOTk3NTJiMWE0OWE2IHJlbGVhc2UyMy1tYWludAorMzU5NDQgNWY0ZjJmNTM2Zjk2MWFiMjAwZGZlNzMyZTRkMjhlOGM0MjBkMWM4MCBsZWdhY3ktdHJ1bmsKKzM1OTQ1IGQxYTk4NzRjMDliNjk0ZGFjMGJjODdmYjBhYjA2NWUxZjY5MjY2YWYgcmVsZWFzZTIzLW1haW50CiszNTk0NiBiOWVkZDM0MThhMzFkOTE2NDhkM2VhZmE0ZTdjYWY0NmYyYzJlMTRmIGxlZ2FjeS10cnVuaworMzU5NDcgYjE2NjRhODAzNDhhZGFmOGFkMWIwZWYwMGFjZTdlYTE4YTA5NmViNiBsZWdhY3ktdHJ1bmsKKzM1OTQ4IGJkYTA2NmM5NmU0ZjFhMjM4ZDNiMWZiZGZlYmNhMDYxNzNkMzUyOGEgbGVnYWN5LXRydW5rCiszNTk0OSBiNWU0MGY1ZDAwMGI2YTczMGIwZDEwNWYwZWQ0NzQwNTIxNDk5NWZhIGxlZ2FjeS10cnVuaworMzU5NTAgYWZmNjlmODBmOTk4MjU0OTM0ZmU5NTBiZGQ5YjY1Y2Q3MWE4MzIyYyBsZWdhY3ktdHJ1bmsKKzM1OTUxIGI1YTFlMzY3M2U1YmUxNTkxNDZjNTE1MGU5M2Q0ZmNhMzRkYTc1ZDAgbGVnYWN5LXRydW5rCiszNTk1MiA5ZTRkMTQ1YmI1Y2M0NjQxNDRmNjk0NWQ1MTM1ZTAxMTExZWQ1MmJhIGxlZ2FjeS10cnVuaworMzU5NTMgMjc3ZDQ4M2Y1OTY4OTYyZGIxZGNiYTZhZGE4NGRlYWE5MmI5N2I0OSBsZWdhY3ktdHJ1bmsKKzM1OTU0IGI1OGQzMGYxMTZlMmE4MjRjZTM3NjcwNGFhNzMzNjQzMzIzNzE3MjIgbGVnYWN5LXRydW5rCiszNTk1NSAzMWJkYmVjOGYyODJjMDZiMWYyYjNkOWJiZThkMTQ4NTdmZDZiM2UxIGxlZ2FjeS10cnVuaworMzU5NTYgNGU1Yjk3OGU2Yjc4MDM2ZDExZDYxNzFmZDY1Y2E2MjNhYTNlNWQ5YSBsZWdhY3ktdHJ1bmsKKzM1OTU3IGMxY2ZjNWU0ODM0ZDE5M2U3NWEyNTBjYjJkYWU5ZmZlNjQ0OWNmY2YgbGVnYWN5LXRydW5rCiszNTk1OCBlMDgwMzQwN2UzNzc0ZTczYzE1NmJlOTk1OTRjYjczNjU3MzVkNDFiIGxlZ2FjeS10cnVuaworMzU5NTkgYzM5NTI3ZTI4MDEwZmMxZWY3MWI4NzEyZmZmZjE1ZTczNTdjMDRmMiBsZWdhY3ktdHJ1bmsKKzM1OTYwIGIwNTZiYmI0ZWRmOTk0ZGIwN2IzNjY0NmE4ZjZiZTM0OWVjZTI1ZDggbGVnYWN5LXRydW5rCiszNTk2MSA4OTlhMWY4OGNjNWYyNDJlOGNjNGM4MDllNDRmMWEzOTczOTFmNTFjIGxlZ2FjeS10cnVuaworMzU5NjIgMzA0YTM3YzJjYjQyNTdiNmVkM2UxN2JiZDkwOWZkMzI3MTBlODFiYSBsZWdhY3ktdHJ1bmsKKzM1OTYzIGFhMjMzMDZhM2YyNjk5NmExZWE3YzE5MzllOWFlNWYwM2EwZTI0OTkgcmVsZWFzZTIzLW1haW50CiszNTk2NCBjZTNjMjc3N2IyMjJmZjU5YWI3YzEwMGQ4MDY2MTExNmEyNTk5OGQwIHJlbGVhc2UyMy1tYWludAorMzU5NjUgMzdjYWMwNjhmMDNmZDQ2ZTAxZGU5Zjg2YTc4ZjA1ZmQ0MzAxOWU4NiByZWxlYXNlMjMtbWFpbnQKKzM1OTY2IDU5YWE1MzQ1OGE5M2I2MjRiMGRkNmM1NGM2MWY5ODJiMGNmOWIwY2IgcmVsZWFzZTIzLW1haW50CiszNTk2NyBhMTA0YWE1NDlhMDIyYTA2ZTIzOWIyMTg3ZmVkZDcwZDg3OGE3MWMzIHJlbGVhc2UyMy1tYWludAorMzU5NjggNWNiMjRkYjhmYzk1YjM1OWM2MjI1YWNlOTFiMGMyNjJjZDM3NDM0ZiBsZWdhY3ktdHJ1bmsKKzM1OTY5IGJhZWRmNWZmYjI2YjRkMmI1MDYzNTFmMjcwZWYyMjA4MTVhOTdiMjkgbGVnYWN5LXRydW5rCiszNTk3MCAwOTJhYzEzYTRjNDBhMmZhMmQxMTI1MDcxNTg4NWMyNjA5MTNhYmI4IGxlZ2FjeS10cnVuaworMzU5NzEgNjVmOWFkOWJjODI5ZGM4YjU4ZWZlYjg1NWVhNTQ3OTY5NWU5ZjI4YiBsZWdhY3ktdHJ1bmsKKzM1OTcyIDBhZmE4MWRiNGNiN2QyNGZmMmQ5OWFmOTNlZDU3OTI3NWE4ZjkwYjEgcmVsZWFzZTIzLW1haW50CiszNTk3MyAyNjY4ODRiMDQ4YmQxMjdjZDM5NDBhMGE5ZmY4ZGVmODNjNTEzMTJhIHJlbGVhc2UyMy1tYWludAorMzU5NzMgYTc0ZjkwODFjNjk3MDg3OGNhYmUxNTFmOTY5NjE3NTg3OTE1NDAwYyByZWxlYXNlMjMtbWFpbnQKKzM1OTc1IDg1MzY1OThjZjA0ZDYzNjlkMzVkMWU2Y2Q0ZDJjMWUwMjgwMWVjZWIgbGVnYWN5LXRydW5rCiszNTk3NiBlZmI4NGVkNzM3N2RkZDZjMzk1ZDRmMGMwMTc1ZjczNTM1Yzc0YWIzIGxlZ2FjeS10cnVuaworMzU5NzcgNTZhNGVjMDY2NjIxZGEzOTA0MGMyNzc3MGVjMDE3OTVmMThjZmExNyBsZWdhY3ktdHJ1bmsKKzM1OTc4IDI4NjJiZjllZjkxM2VmMDViMzkyMzk4YjI3N2RiNTYxZWE0NjQ1NTggbGVnYWN5LXRydW5rCiszNTk3OSA2NzllNWM4ZWZmYWUyMTEyY2E4YTQ4Mzc2MDg3YmUzZWIxYzZlYTljIGxlZ2FjeS10cnVuaworMzU5ODAgMmMxNjljYTVmYTY5Yjg0OWFkM2RmZTQ1MTFiMTZmZDE1NzRhODVmYSBsZWdhY3ktdHJ1bmsKKzM1OTgxIGFlYzljOThhNDdkMmU5NTM2NjI0Zjg3ZTJkOGJlMTc1NGJmNDA2MGUgbGVnYWN5LXRydW5rCiszNTk4MiBjNjU4NTVjNWQ1NmIxZDE0NzFiNmZkY2RmMjlmOTU0NThmMWZkMjIyIGxlZ2FjeS10cnVuaworMzU5ODMgZTUzMTYyMjUyZmJlNTM3OGE1MGU2ZWVhNWE3Mjg3NjQ0NzQ4Y2EyZSBsZWdhY3ktdHJ1bmsKKzM1OTg0IGZhZDUyZmZkODg5MjQzYmExZDBjNWExZGEzNzQ2OWNlMWNmZTBkMzIgbGVnYWN5LXRydW5rCiszNTk4NSAxOGQ2YThmOTk4MjM4NjE0YWU4ZjU4NmZmMGEyNjEyY2M1MGZjNDdlIGxlZ2FjeS10cnVuaworMzU5ODYgNDQ4MjhjYzEzNmUwYzBiZDVkZjJlNTRjZmUyNTEwN2YwMjFlOTE5MSBsZWdhY3ktdHJ1bmsKKzM1OTg3IGY5ZDU0ZTliMzBiYzgxOWY2NTMxZWUxZDExN2I4MzgxZDVjNTMyOGQgbGVnYWN5LXRydW5rCiszNTk4OCBkMDg3YTk1ZTgwMzIzMTkwMmIyOGMxMGUwZTIwYjRhMmU3M2RkYmY1IHJlbGVhc2UyMy1tYWludAorMzU5ODkgNjBlZjFkYjEwY2VmYmIwODIxMTY2NGI4MGMyOTRkMjc1MDY5NTY2NiBsZWdhY3ktdHJ1bmsKKzM1OTkwIGY4ZmZhM2U2YzRmMmRkOGQwMDc0Mzc0ZWEzMWE1NThmNWQxYzlkNWUgbGVnYWN5LXRydW5rCiszNTk5MSBhY2E0NDVhNmJlYjc5MWE3YTUzMmZhNmE2ZjMzMDc0YzkxZDQ2ZjkzIGxlZ2FjeS10cnVuaworMzU5OTIgOTdiOTA4YTk5NzFhNjRmMGQxY2IxM2QxZWVlZjcwZDE4ODk1YzIzOSBsZWdhY3ktdHJ1bmsKKzM1OTkzIDc0N2IyZGM4MjQ0ZmVhMzFkYjM5MTc5N2Q2OWE2NmExODg2ZGM5NjkgbGVnYWN5LXRydW5rCiszNTk5NCBjNzliZWZiM2MzMTRkNWY1YWUxYzI3ZGE2MzI4MTM4YTYyNTJkNmUyIHJlbGVhc2UyMy1tYWludAorMzU5OTUgZTJiODFmMmM4YTcwZGEyNWU3OWEyMzAxMzQ5MzhmMDQ4MDdiNDg1NiByZWxlYXNlMjMtbWFpbnQKKzM1OTk2IDhlZTVhNTZiODAzMTJiY2NhMmQ1YmYxYjM0NGE3MjU0MmZkNmJlNTkgbGVnYWN5LXRydW5rCiszNTk5NyBlYmE2YmFlZWE0ZWFhZjg5Yjk4YTgyZTE3MDRiNzkxOTQ1MjFmZDM0IGxlZ2FjeS10cnVuaworMzU5OTggZDM2MWMxMzVmYTc0ZThkOGZmNTMwZDViYWY0ODBiNjQ5OTgwYmQyNSBsZWdhY3ktdHJ1bmsKKzM1OTk5IDA0MWY4OWM5OGMzNWJlZTkwMWUzOGZjNGUwNmNiMDZiNmY3NzUxZDIgbGVnYWN5LXRydW5rCiszNjAwMCAyNzVhNzdmOWE1MDA2NjQzNDE0NWNkZDhlYjdmOWNkYWY1NjI2YmJmIGxlZ2FjeS10cnVuaworMzYwMDEgNTliYjNiMWQ2MDU5ZDMyNjAzODRkNTRjYTU2NjRiZGNlZWEzZWIxNyBsZWdhY3ktdHJ1bmsKKzM2MDAyIGYzZDA1NjhjOTQzMmYwYmFhZThmNGMxZTU2YThjOTIwYWQ3YjVmNjAgcmVsZWFzZTIzLW1haW50CiszNjAwMyAyMjY2MjU4OWM0ZTIwOTg5YzJmMDBkNTgzZmJiYWZkMmQzYWI0MjE3IGxlZ2FjeS10cnVuaworMzYwMDQgYTc5OWIwZDFjNTY4N2U4Njk5ZDY3ZmZkZTM4NGY0M2IzZGJhNWViZiBsZWdhY3ktdHJ1bmsKKzM2MDA1IGYxNTliMTVmMWY1Y2JhZmVmODk5ZmM1YjQzZDFjOGRmMTM5OWVjNWYgcmVsZWFzZTIzLW1haW50CiszNjAwNiA3YzQ2MWFlZTc0MWJlYTFiNjU2YzlmMTU5MjM1YzU4NDFkOGI0MDkzIGxlZ2FjeS10cnVuaworMzYwMDcgYWEzOWZhYzJhOWZkZjlmYTdhMGU0ZjhjMTNmMGFiMzZiMDQyOGYzNiByZWxlYXNlMjMtbWFpbnQKKzM2MDA4IGRmOWJkMTI3NzMwYWRjOWU4MmI2NzhjYmE5MjY4MDNlMDJjZWU1YjMgbGVnYWN5LXRydW5rCiszNjAwOSA3MzBhMDNmNWQ4YjRkZTJkMjA0ZGY3MTQxYmNhNjU0ZGNmMzFlODhmIHJlbGVhc2UyMy1tYWludAorMzYwMTAgYzdkOWJlNzNjN2RkYjMzNWE4NWY0OTM5OThhYjBiYmRhM2VjZjMxMiBsZWdhY3ktdHJ1bmsKKzM2MDExIDE4NWY1ZDZhM2E4OGE5YTEzYTU3ZmIyMjNjMmFjNTVhOGU0NDhiMDcgbGVnYWN5LXRydW5rCiszNjAxMiAwM2M4OTU4Mzk5NzljM2RjZmEzMTJmZDI5NWZmMDI0ZDk3NzVjZTE0IHJlbGVhc2UyMy1tYWludAorMzYwMTMgYWI1YzA4MjU3YWQ3YjRlNzc5YzVkMjJhNTQ4YzZjOTQwMWNmYmJkNSBsZWdhY3ktdHJ1bmsKKzM2MDE0IGIzYzk4MWVlOWFlOTU1ODFmYTY2MDJlNGY2M2ZkMDNkZjM2M2Q3NTEgcmVsZWFzZTIzLW1haW50CiszNjAxNSBkM2FhZDM3N2E1YTkwZDlmZjBiYThjMTM1YTkwNDMxYTRlMmE0YmJiIGxlZ2FjeS10cnVuaworMzYwMTYgODgwNzFkMjA4YjM0YWE0ZWM0MzJiZGE0M2UyMGRmMGM1M2Y0Mzc2ZCBsZWdhY3ktdHJ1bmsKKzM2MDE3IGFiNTE5ZGUxNzZiYjk0OGY0NTVjOTEwMmVkMDBmMTdkZDdkNzA2N2YgbGVnYWN5LXRydW5rCiszNjAxOCAzYTg0ZTIzYjA0MmY0NWUwNWM3OGM4MzJiNmFlMmJkZDU0ZDBkZDVhIGxlZ2FjeS10cnVuaworMzYwMTkgNmYyNjVmMmNjYjMzY2FiN2UzZjMzZTI3MTY0NGJhZGU2MTM2NGM5MiBsZWdhY3ktdHJ1bmsKKzM2MDIwIDY4MjIwMjZkM2MzYjQxOWE4YmRkMTM3Njc2MTk3MGE2ZDA4YTEwOTEgbGVnYWN5LXRydW5rCiszNjAyMSAyMmZkYWU3YmJhMWFmNzA1MTEyMmY5M2NiYWNjNDcyZWVjYWE5OTM2IGxlZ2FjeS10cnVuaworMzYwMjIgZTYyMWUyYTFhYjMxMDJkM2Q3MzIwMjEwY2M0NDkwYjU3YmMxYzFhZCBsZWdhY3ktdHJ1bmsKKzM2MDIzIGU1YjA0Nzc2NTI4NWIzNzI4NWI3MzU2ODgxMTQzODBlYzgzNDY3ZTYgbGVnYWN5LXRydW5rCiszNjAyNCBhYmQ0Yjc5NTUxZDJlYTkxZmE5YmE5MThmMTRiNmI3YWFmMmQxZDIwIGxlZ2FjeS10cnVuaworMzYwMjUgOWEzOTAxYmY2MjIyZjk5MTljMjA2YTZjOTk3ZTc4MmU1YzIwMTZjNCBsZWdhY3ktdHJ1bmsKKzM2MDI2IDZmZmRkYTRjYzIyMjE1YmMzNmJhMWY4YjhhZmExNGIwNjAxNWRlN2EgbGVnYWN5LXRydW5rCiszNjAyNyA1ZDk0MmJlZGQyOGY5M2I2YjNiMjI5ZjBjZjFkMWQ2NzViNTQ2NWZmIGxlZ2FjeS10cnVuaworMzYwMjggYjlkM2FhM2NkZThhNWMxYTQwMzdiYzI2M2IyZWU2N2NlZTg3MzYwYyByZWxlYXNlMjMtbWFpbnQKKzM2MDI5IDM3NzFlYTlhOTNhYWRhNzJlZDAwOWU0ZjZkYTkyZjYxYmUzM2IwOTkgcmVsZWFzZTIzLW1haW50CiszNjAzMCA4NGU4ZmU5MTI0NDBkNGIxYjk3NGJmNDRiYmY3NTY2NTM5NzQ0ZjBhIHJlbGVhc2UyMy1tYWludAorMzYwMzEgZWI0MWE0ODljYzJmNzhkMWQ0MTIyN2NmZGZhMTllMmNlZTFhOWNkNiBsZWdhY3ktdHJ1bmsKKzM2MDMyIDAxMDU3ZTRmMGE2MmQwZDFmZWRlNmMyZWMyOWNmMDE0OWY4ZTdjOTEgbGVnYWN5LXRydW5rCiszNjAzMyBlYjBmODcyNjhkNzBhZTFiMjg3NjYwMzY3MmFmMjkxMTljNTZjYTQ4IGxlZ2FjeS10cnVuaworMzYwMzQgNzBkZWUyYjE5M2Y3ZDUzMTE2NTY0NWFkNmRjZjQ5Y2UyNjBhYWIzZSBsZWdhY3ktdHJ1bmsKKzM2MDM1IDY0NzhlYjZhZTNjMDFlODQ2OTFkOTU0YTk0MTE5Y2QyMWI2ZmU0NzQgbGVnYWN5LXRydW5rCiszNjAzNiBiMDBiMjZjYmMzMDNhZmUxYTFmNzJhYjY5M2YyYzQ5YjEwZWFjYWVmIHJlbGVhc2UyMy1tYWludAorMzYwMzcgYzA4NjM2NjQ3OWIxZTAwYjZkMTBlZWMxZmU1ODg5MWMxODU2MjJmOCBsZWdhY3ktdHJ1bmsKKzM2MDM4IDkxZWFlMWU5MjU3ODFiNTRjMjM1ZDJkMzQxZDQ1Mzk3OGMyMDkwZjIgbGVnYWN5LXRydW5rCiszNjAzOSBmZGY3NWVlZjZhNWMzM2E4ZmYyYWM3YmFhZjRlYjA0ZTM2NTJiMDkwIGxlZ2FjeS10cnVuaworMzYwNDAgMmNjN2ZmNDJiOWEzZDExNjI4Mzk2OWZkNmM1MGUyZmE1OGYxMjViNiBsZWdhY3ktdHJ1bmsKKzM2MDQxIDNjMjE1ODg3NjE5NGExYWNjYTJjMmQ2MjZkOTVkZGE3ZDE1OWE0ZDQgcmVsZWFzZTIzLW1haW50CiszNjA0MiBlZDIyOGU4YTEzOWZiOTA4OTdjYjFmOWQ3OGQzN2I3OTk2ZGIzOWY1IGxlZ2FjeS10cnVuaworMzYwNDMgZWZjYTUxZWY3ODlkYWY1YTRjYTBkZmVmNDE1YzM0OTViMjk3MGUzNSBsZWdhY3ktdHJ1bmsKKzM2MDQ0IGIxMDg3ZTFkNDQ3OTYzYWNlYjk5NzMxNDZlODdhY2FjMjBkZTdkOTcgcmVsZWFzZTIzLW1haW50CiszNjA0NSBmZjY4ZDZhNWE0NDFmNmJkMmY1OTUzMzU3YzQzMzc5NWYwMjM1MzUyIGxlZ2FjeS10cnVuaworMzYwNDYgMTk1NGI3ZWRiZmU3MDAwMzZlYjZmNTQzZjFkMTM3YTFiY2M4MThiOSBsZWdhY3ktdHJ1bmsKKzM2MDQ3IDk5NDI0NjA0ZDM2YTM3N2QyOTFkZDExNzk4N2I4NjZlNGE5NTIzMGEgbGVnYWN5LXRydW5rCiszNjA0OCBiNzkxZjY1NTRkMjhmMmVlYWNkMmQxZjAzZDUwNmVjOWVlOWMzYzhiIGxlZ2FjeS10cnVuaworMzYwNDkgM2JmZTJmNDJiOGY5MzgzZDYwNWFmYTU0ZWE4NWJlZTk4ZjdmMzcyNCByZWxlYXNlMjMtbWFpbnQKKzM2MDUwIDI3OTY3ZmJiYTQ4ZjMxZDRhODI1NGI4NjAwMDIxZGZhZjY3NGU3ZGEgbGVnYWN5LXRydW5rCiszNjA1MSA2ZmM4ODI3YzQwM2MxNjM0MThiMGViNDg4M2MzMjIxZTk4YzljMTdmIHJlbGVhc2UyMy1tYWludAorMzYwNTIgNTI1YWJjNjZiY2MyOGMwZmI5NDMyYzliZThiMzQ3OTdmNGE2NDhiMiBsZWdhY3ktdHJ1bmsKKzM2MDUzIDA5MDEyYzZiMjA2ODA1YzNmMzVjNDc5OGQ5YWNmZjQwNmM1YWJmMWYgbGVnYWN5LXRydW5rCiszNjA1NCBlZDM3NDZkYWQ3MDVhMmI5NjZlNTNiYWViMWE3NTZjZmYxZDg3YjQxIGxlZ2FjeS10cnVuaworMzYwNTUgNmMyOGFkODA0N2YyZGZiYTkxOGVlM2U0YzVlZTQ3MmVhZGJiYmIzYiByZWxlYXNlMjMtbWFpbnQKKzM2MDU2IDhjNDA3OTA2MTcwODU4YzVlNzVhZGI5NTVkMWJjYjYxNDA1ZTk0ZjYgbGVnYWN5LXRydW5rCiszNjA1NyBkMjQ0YjUzZWNmYmViZTBjNWU2ZTcwZWNiOWQzYjk3NzgwYWMwNTM3IHJlbGVhc2UyMy1tYWludAorMzYwNTggOTY4OWRhMDAxMTk3ZmE5ZWVlOGI0YmM1ZDk3ZDExYTE5NmMxYmU0MiBsZWdhY3ktdHJ1bmsKKzM2MDU5IGU4YjRmNTRmN2QxOWVjNjc2ODhiODAyMDQ3ZmY3MDQ3NzRkNjcyMDQgbGVnYWN5LXRydW5rCiszNjA2MCAzMDBkYjgxZTJlNGFjYmVjMjIxY2EzYzM4MDEwOGQ5N2UxYWMzMWY4IGxlZ2FjeS10cnVuaworMzYwNjEgYTZlMDQ4NDcyODBhMjZkZWE1ZTY5ODk0M2U4NGY5OGJiODlmODY5MyBsZWdhY3ktdHJ1bmsKKzM2MDYyIGI5MzQ1YzM1NWYwNGI3MTk3NzM0ZTMwZTkyNmYxMTZlNDllNzIwNjMgbGVnYWN5LXRydW5rCiszNjA2MyAwYmRiNDlhNWE4ZmE2MzM2NTJjNDA5NGRiOGI0MzczMDEyMGNkYTVlIGxlZ2FjeS10cnVuaworMzYwNjQgNjk0NTI4ZTg1YTA0ZDFmYmE2M2U1ZWZmNmFhMWUzZjViMzU3NjM0MyBsZWdhY3ktdHJ1bmsKKzM2MDY1IGM4YTIyYjVjZjU4YTU4YmFhMmE2ODU0OTcyNTQyZTRkZmM2NDcyMDggbGVnYWN5LXRydW5rCiszNjA2NiAzZDY0MjRjMDM4ODgyZWQ1OTYyZTIxNmE4MTJiY2RmMDQxYTViMjdjIHJlbGVhc2UyMy1tYWludAorMzYwNjcgNzBjZmUwNjVlYWM1OTI2NDZhMmFlYmJhMzI1YjNkYzIyODYwOTNjNCBsZWdhY3ktdHJ1bmsKKzM2MDY4IGE5OGY1MGU1MGJlZmExZTUyYjA1MzAxZWZkMzRhODNjN2QyZmY3OTcgbGVnYWN5LXRydW5rCiszNjA2OSBkZjQ5NDNkMjRjYjZkZGRlNDc3MjA2NmNjZjM4YmJmYzkwOGFhMWQ1IGxlZ2FjeS10cnVuaworMzYwNzAgNzQwOWMwYzM3MGUyMTMyNThkZjgzYzY1ZDBhZDg5ZWZjMjY5ODYzMiBsZWdhY3ktdHJ1bmsKKzM2MDcxIGVmY2EzNTNlN2ZkNjc1ZjcxMTc4YWQ4YzExNmFkMmY5ODE4Yzc5YTYgcmVsZWFzZTIzLW1haW50CiszNjA3MiAyOWY4NzkzMmM3Yzc4YmNhMzY3YmI3NTdhOTU0NWE1OTQzYmI3NmNlIHJlbGVhc2UyMy1tYWludAorMzYwNzMgYTcyYmM0MjU3MzM2NTFlYjYxNDk1ZWUzNWVjZjI0YjJmZjdiYzhlMCBsZWdhY3ktdHJ1bmsKKzM2MDc0IGVjNmY5YTE5MDgzMTkzMWNmYWRkNTU3Mzk2NGQ4MzgxMDA5ZDQ1ZGEgbGVnYWN5LXRydW5rCiszNjA3NSAxMGEwMWNlM2VhMGFlMDFkYzM1NWYyN2VmZTExY2ZiMjkyNzY3MWE3IHJlbGVhc2UyMy1tYWludAorMzYwNzYgMzYzNDQxOGE4NThlODI3M2I0YTAwYWY3NTlmZDM4YTM5MjQ1N2M3ZCBsZWdhY3ktdHJ1bmsKKzM2MDc3IDJmNWYzOGY0YmMyYjkwMDg5Yjk1NjczOWFmMTg2ZDEwOWM1MTY4ZDEgbGVnYWN5LXRydW5rCiszNjA3OCA4YzAzOTRhZWM2ZGNkNDBmZGMzZTgxM2FhOGFlZjA1NWQ2NjVjNGI3IGxlZ2FjeS10cnVuaworMzYwNzkgM2RmZTgxYWMwZTdjZDBkZjRlMjMzZmJkMTRiMWE2YmI3YzM5Y2JiNiBsZWdhY3ktdHJ1bmsKKzM2MDgwIGE4MGVlMjAwNGU2Y2E0OTJiMGI5YTJlZThlNGM5Mzk0OTdkMDk2NTIgbGVnYWN5LXRydW5rCiszNjA4MSBjZGFkMDA1YmMwMzA3NzVmZWY3YmFjNjczYzM5MmQ2NTY5NDM2Y2U4IGxlZ2FjeS10cnVuaworMzYwODIgY2I5NTdlNjVmNDQ0OWI4Njk4YjQ5NDBkZWRiNmE2MjA3YjBlNGMyMiByZWxlYXNlMjMtbWFpbnQKKzM2MDgzIDM2Nzk4ZjFjOGU5YTFhNjZmZGQ3NzgwNWVmOTc2YzFhMTQ4ODMwZjggbGVnYWN5LXRydW5rCiszNjA4NCBiOWM5ZTdlOGJlN2Q1NGZiODFhMjE5NWJhODgwNzVmNTJjZTI1NzMyIGxlZ2FjeS10cnVuaworMzYwODUgYWM0ZDQyMGNjNzk5ZTVkMjY2YTdmNDZhN2RmNWE3NWQ3MzcyZmE4MiByZWxlYXNlMjMtbWFpbnQKKzM2MDg2IGJkZjIzODc5ODk0OTllZGYwNjc0OTZkOTBjZTBmZGNjODAwMDZhMDEgbGVnYWN5LXRydW5rCiszNjA4NyBhODljYzUzNWI0YzU3NTVhYWM4NmJiMWVhNDc1MGE0ZDQ0Y2YwZGRlIGxlZ2FjeS10cnVuaworMzYwODggZWVhYTdmYjJmMTZmN2EwZWQzZmEzMmJlZGY0MWEzM2RiYTBiMmQ3ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDg5IDhlNTk1OGM5M2M4ODIxNWQ0NTg3OTJhNmFmNThlMmE4M2VmZDQzMDEgbGVnYWN5LXRydW5rCiszNjA5MCA4ZWFiNzY1NTYwMWZlZDEyMTAwMGRjMGVjNDRhZmM2MGJhYmIxMjI0IGxlZ2FjeS10cnVuaworMzYwOTEgNDJiYjFkY2RmMTZlNDFiZDMzMmUwMWQwNzI2ZGYzNjM1N2Q1OWMxNSByZWxlYXNlMjMtbWFpbnQKKzM2MDkyIDQ3ZDY0Y2IwMTgyMDVlYmVkNDFiYzlhMmM1ZjIzZWE5NjA4MmFlN2MgbGVnYWN5LXRydW5rCiszNjA5MyAwMTRiMGQ4NDQyMmY3YjYzMWUwMDNmMjc5ZDA0MDM4OWUzY2Y2YmVlIGxlZ2FjeS10cnVuaworMzYwOTQgOTUyODdjZGRiYzFlY2E1NmM5NmNlNzgwMDFiMmQ5OThlNzczMmExNCBsZWdhY3ktdHJ1bmsKKzM2MDk1IDYxYWY0NzIxM2ZlNjY3NGM4MzYyNjcxOThkYTZmZTQzNGMyYzAzNTMgbGVnYWN5LXRydW5rCiszNjA5NiAxZWVhYTUwOTNmYzA0MTExNjA0MDJhN2QwMGI0MTU0MGI1MWU0ZDg4IGxlZ2FjeS10cnVuaworMzYwOTcgYWRiNTlkODliMDk5MTYwNTYzYTQ4NzNkZDk1Y2E5NTliMDVmMTYyNiByZWxlYXNlMjMtbWFpbnQKKzM2MDk4IDdlNzI3M2M4ZDIxZWI3YjY3NzM3MzZkYTAzYmRiZDQ5NzA1YmFmZTMgcmVsZWFzZTIzLW1haW50CiszNjA5OSBjMmJjMjQ4ZDNlOWM3MGI1NjViZjYzMGQyODY4OTQ4OTUxY2ViMzYzIGxlZ2FjeS10cnVuaworMzYxMDAgYzBkMTI2MWRhODQ4ZDYxZWRjNzFkZDg4NmFkNmY4NmIyYzUyNjUxNCBsZWdhY3ktdHJ1bmsKKzM2MTAxIGNiZmEwNDI4NTUyOTBhMjM4MWMxMDFjZmIyZmJiMmQxMjM2MGRmMWQgbGVnYWN5LXRydW5rCiszNjEwMiBiNjBmYzVlZmYxNTU5NGQ3NzUwNGQwZmUzMGQ3MzllY2M1YWI2ZjE5IGxlZ2FjeS10cnVuaworMzYxMDMgZmQ1MmI2ODA3OTI0OGNiMTk5MDc4MzllNjEyODc3ZGIzYjA1MDllYyBsZWdhY3ktdHJ1bmsKKzM2MTA0IDZkYmZlZTJkZWQ4OTU2ZTZmNzk1NjNmZWQ5YmE2NTUzOTRmMGVmODYgbGVnYWN5LXRydW5rCiszNjEwNSA5NGI4NDFhZGY0ODViYzk4YWFlOGRhNGY0NGQ2ZWUzZjk4NmM3ZWJhIGxlZ2FjeS10cnVuaworMzYxMDYgOTEzODhjODQ1YjE2OTVmZTQ2MzBiNjUzODI1NjRhNTMwN2E4MTdiYyBsZWdhY3ktdHJ1bmsKKzM2MTA3IDg4MmNmMTEzNzJhM2U0YmRlNDY2NDUzZTY1OTVkMTRhMTZmMzg1NjEgcmVsZWFzZTIzLW1haW50CiszNjEwOCA4NTRhMjQxN2QzNWViNTE4YWRhZWM2NmU1MTA0ZTQ0ZmRkNGNiN2Q4IGxlZ2FjeS10cnVuaworMzYxMDkgYTAxOGFlMzg2Zjk5ZTFhNDlkMTc0YzE1ZjYzYmQxY2MzODY4YzhkYSBsZWdhY3ktdHJ1bmsKKzM2MTEwIDVjNzliNGYxM2IyNmY4MjkwMGRhOWVmMTgzNjc0ZjY5ZmZlY2U1NzcgbGVnYWN5LXRydW5rCiszNjExMSA3MWIzZDJiYmU2M2JmYTc4NTQ3NjkyYmZlNzhkODlkZWE4MzllMjViIGxlZ2FjeS10cnVuaworMzYxMTIgNDBjNTI0YzFjMGZlZmVhNjdlZGRmZThlNGQ1N2Q0M2RhMGFhNjYwOCBsZWdhY3ktdHJ1bmsKKzM2MTEzIGUxMzQ1Y2UyNzVmNzlkODM0NzI4ODVlYmZhMjM5YWQzNTViNDI2NGIgbGVnYWN5LXRydW5rCiszNjExNCA2ZDdkMDBiZjFhYWU1OTZlZjY2OTVhYjIwNTFmZDJjNzQ4ZDdjY2JlIHJlbGVhc2UyMy1tYWludAorMzYxMTUgODJmZTY4MzJlNTA1ZGViMjRhNzdiNGVhNDViYWI3ZGVkMjRkZWQyYiBsZWdhY3ktdHJ1bmsKKzM2MTE2IDhhY2Y0MjQxZWU5NGY1Y2MxMWYyYmY2NjBkZWY3ZDZjNmQ1NzJjNTEgbGVnYWN5LXRydW5rCiszNjExNyBhYTBjODRkMWYwNjc3ODY4ZmM3YmQ1ZGQxOTVmMjZjMjk1OTM2MDQ3IHJlbGVhc2UyMy1tYWludAorMzYxMTggY2Y4NGRiYzZhODgxYzdiMzFjMjdiNjIxNzk5MGIzMDc0MDA3YWYwNCBsZWdhY3ktdHJ1bmsKKzM2MTE5IDI5ZDc2MWM1MTAzZTc3YjUxMTJiYjgwZjhkZTFiMzc5ODFkMjlhZTEgbGVnYWN5LXRydW5rCiszNjEyMCA5MmY1OTdhMDU1ODE1ZWUzZWFlYzNhMzllMjQ0MjlmMjY2OWQ4MDc2IHJlbGVhc2UyMy1tYWludAorMzYxMjEgYzg0ZmQ2YmU1YTE0ZjQ0MzYxYWRmYTRkMGMwM2IzMjI1OGQxYjA0ZiBsZWdhY3ktdHJ1bmsKKzM2MTIyIDQxYzU5ZDgwYmJjNWY2ZmJjYmIyYzJiMzhiYzZjYTViYTdjMjcyN2EgbGVnYWN5LXRydW5rCiszNjEyMyBlMTk2YjgyM2U2YzViYWQxZmFhYWVhMDg3Yzk5YmY4ZWYzZmMxMzhhIGxlZ2FjeS10cnVuaworMzYxMjQgYTBkOGIxNDU2ODE5MzE2NmM4NmE0YjM2ZDc4NjM5NjNiNjA0OTY4YSBsZWdhY3ktdHJ1bmsKKzM2MTI1IDE2YWNjNjFkMzNjMDJkNmNjODYxZTYzNzIxMGIzMDkyZTZiYjVmYzQgbGVnYWN5LXRydW5rCiszNjEyNiAxMzY1NmQ1OGQ0NTAxNDA1OTRjZjdkYTc4OTU4ZGIwODY5YjEyZmUwIGxlZ2FjeS10cnVuaworMzYxMjcgY2VkYzk1NDU5NjM2ZDUzMmQ3NWUwNTFhZWUwNDFlNTkxMGVhNGYxZCBsZWdhY3ktdHJ1bmsKKzM2MTI4IGVjODhmMjc4YTFhZDQ5OTA5ZTg4NmIxNjFmZjBiYzhkNzY1ODhhMzYgbGVnYWN5LXRydW5rCiszNjEyOSAzMjE5NzM3NTEyOGUyMjY1ODhjMjMyZDI3ZmY1ZjQyY2U5ZDY1NjE4IGxlZ2FjeS10cnVuaworMzYxMzAgZmM2YTczOTA1ZTZmMzhjOWQ0N2EyOWVhMTU4NTgzMThjN2U2ZmVjZSBsZWdhY3ktdHJ1bmsKKzM2MTMxIDE5MTg4ODdkMzg3YjAxMDRlM2YzYzNiM2E3OTM1NmU5NDk3NWE5NWMgcmVsZWFzZTIzLW1haW50CiszNjEzMiBiY2QyMWFiYWE1YjRmMTViODc4YjEyOTdjMjE3MjAyYTdlOTRhZDI0IHJlbGVhc2UyMy1tYWludAorMzYxMzMgNDMwMWVjYmViM2FkZmE0MTM2YzA5ODM0YzhmNDE3MzRiY2ZkNzE2MyByZWxlYXNlMjMtbWFpbnQKKzM2MTM0IGZjNDc2MmViYmUyY2Y2NzM0NzJkNmJhOWFmZDQwNWI0MmI1Mzc3ZjMgcmVsZWFzZTIzLW1haW50CiszNjEzNSA0MzllNzFhNGU1NTQ2ODU0YzU0Y2Y4OWNiNWQzYWEyYzc1ZWFiODUwIGxlZ2FjeS10cnVuaworMzYxMzYgNDllNzQxM2NkOTFjMGU1ODg2MzlmMjZjZTQ4NTU4NzAyNWVjM2UwYSBsZWdhY3ktdHJ1bmsKKzM2MTM3IDllNWFmNDVjZWZjYjVmNDEyYWMxNjk3ZmMwMTQ4YzQyMDdkODgwYzMgbGVnYWN5LXRydW5rCiszNjEzOCBkNjljODA2OGVhZTYxY2VkOGU3MTRjNTAzYTc3NDE0ZDAwOTQ0YjExIGxlZ2FjeS10cnVuaworMzYxMzkgNDE4YTBjNmJkYzdkNGEwZWRmYTQyZDNiM2NmZGE5NWI5ODlkMjU2NyBsZWdhY3ktdHJ1bmsKKzM2MTQwIGI5ZGU2YjY2NTI3MzZkNjAxNWNiNzhhYzc0MDAxOGFkZGU3NzU4ZmYgbGVnYWN5LXRydW5rCiszNjE0MSA4NzMwMmFjMDcyNTUyNDM1MTkyYTQ4YjBiZjVlZTM3NDVmYjk0NTYyIGxlZ2FjeS10cnVuaworMzYxNDIgYjBmNDU0ZjU1OGU1ZWIyZmE2ZGM2ZjA4NDFmNDUwOWI1YzUxMjZkYiBsZWdhY3ktdHJ1bmsKKzM2MTQzIDUwZjNhNTUwYjRmZTZhZWYzM2ZkMmE3N2NjMDBlNTczZWY5OTk0YWIgbGVnYWN5LXRydW5rCiszNjE0NCBjMWZiYmMzZWVkMzllNWZlYzY2OTczNWZiOWYzZTIwZjJmM2M0OGRkIGxlZ2FjeS10cnVuaworMzYxNDUgYjA1NGNmZjdiYjg2ZDZmMTI3YzA2ZTM0MDhkNTIwY2NjMjg4NmM4ZSByZWxlYXNlMjMtbWFpbnQKKzM2MTQ2IGNmMjhmNGE2ZTY3NjE4YTVhNzdmY2YzZjhjNWM1MjNkZmE2NTE2OWIgbGVnYWN5LXRydW5rCiszNjE0NyA3YTE5OGQ5YzkyNjEyZDI0NDM1NjNkNWQzMWJmNTUyM2FiZGViOTVmIGxlZ2FjeS10cnVuaworMzYxNDggMzE1MmI3NDdhMmU0NjExYjMzZmZmMjViZDUxNjViYmFlZDE3ZTc0MSBsZWdhY3ktdHJ1bmsKKzM2MTQ5IGY0OTQ3MTk1MzY4OWEzYmY4YjRmNjQ2ZTg1MTQzNDRkNWZhNjM0MDkgbGVnYWN5LXRydW5rCiszNjE1MCA2ZmVhZDVlYTRiYmEyMzcyNjJmMGIwODRlMWY2ZmFhMWUwYzg2NzJjIGxlZ2FjeS10cnVuaworMzYxNTEgNTQxMzI3Y2I4ZjhiZjZiNTU3MTU0YzI4YTIzNzQyNWQyY2QyY2E4YiBsZWdhY3ktdHJ1bmsKKzM2MTUyIDIyNTNhOGMyZWE2MmRjNWQzZmZlNTc2ZTgxNzZlZGU2MGViY2I4NWEgbGVnYWN5LXRydW5rCiszNjE1MyBmMGViNzc3OGExODMwODNmMGZlZGE4ZmYzMjZjYzYxNTk3OGM2NTAzIGxlZ2FjeS10cnVuaworMzYxNTQgNjNlOWU1YTIxNjBiNWRjOWJiYWZiOTgzNzRhMDE2ZDQ4NDQ3MGM1NCBsZWdhY3ktdHJ1bmsKKzM2MTU1IDQ0NGZhNWQ1MGMxNGQyMGUwYThlMmJkN2E2ZTU0MTIwYzYxMWM3MDMgcmVsZWFzZTIzLW1haW50CiszNjE1NiBjN2RjYjA5NzQ1ZDM1YjQ5YmJlYWI5MTU3YWJiNmRkNTQwY2JjNjQ0IGxlZ2FjeS10cnVuaworMzYxNTcgNmU0ZmU1NTYwZDgxZDQ4YWM0MWMzYjBjOGJkMjkxYThjYTAxZTQ0MCBsZWdhY3ktdHJ1bmsKKzM2MTU4IGJjOWFlNDRiMmNlNDFmYzNkYjVmOTIyZWYyOTNiYTM2M2YzYzE3ZTYgbGVnYWN5LXRydW5rCiszNjE1OSBhNjI3ZDk0OTMxNDk1MzM5OTlkMWY0NWUzYWJhYmNhMTRiOTQxZTA1IGxlZ2FjeS10cnVuaworMzYxNjAgNDA4YTQwZTY1MjQ3Y2QwYTc3MmU0Zjk5M2I1NTY3ZTJmZDk4NDFlZiBsZWdhY3ktdHJ1bmsKKzM2MTYxIGM3ZGE2OTkwYzRlZDliODg3ZTM0NzljMzNjYjZkZjI2MzdjMmE3OGEgbGVnYWN5LXRydW5rCiszNjE2MiA1ZDI3MjY5YzllMzNjNmEyOGQ4MzNmZDZiYjFmMDY0N2YzNzViNmI2IGxlZ2FjeS10cnVuaworMzYxNjMgYzlkYjc5M2NhYTgwYTI1NDk0OGRhNzlhZDYxNWIwNWM4ZTgxMzFlYyBsZWdhY3ktdHJ1bmsKKzM2MTY0IDU0YjI1N2U1NWY5OTE1MDE1NTk0OGRkM2RmZmJkNDFmNTgxMGNjNDYgbGVnYWN5LXRydW5rCiszNjE2NSA3NDgxMjllNmUxMDgyZjMzZGYxZTc4YTVjYjYxZjE4YzEzODNjZjdmIGxlZ2FjeS10cnVuaworMzYxNjYgOGIyZGY5YTA3Y2Q3MDRkZDZmZjZjNzk1OWRlNzlkMTk2ZTk4ODY5YyBsZWdhY3ktdHJ1bmsKKzM2MTY3IDA0MTMwMDVmYzBiMmNjYmIxYmNlODk4NjcxOTg4MTRmODYyYzJkNWMgbGVnYWN5LXRydW5rCiszNjE2OCBlOTUwYmZlMTg1NmUyMGY0MjcxMDMwMjkxZGI1OTBhYTk2NzRkMjdiIGxlZ2FjeS10cnVuaworMzYxNjkgOWQ4NjU1YjQ3NWRiNDhkMDQ4YzNmMWE5ZTZhYjJiMjA4ZDhhYmQwZiBsZWdhY3ktdHJ1bmsKKzM2MTcwIDQ0ZThlODRmMTI4MDgyNTJkNGU5YTUxNDY2ZjI5YzNhNzQwYzZlYWIgbGVnYWN5LXRydW5rCiszNjE3MSAxMWMzMWE5OGRmZDY5MGE4NTk0NWI5N2ZkZTY4MDIzYjBjOTRmNTI5IGxlZ2FjeS10cnVuaworMzYxNzIgMTNjZTQ0Nzg0NWJjYmQ0N2JmZWJlZDhiZDZlMDBhYmUyNzk1NzdhNCBsZWdhY3ktdHJ1bmsKKzM2MTczIDM0OGRiNzdhMDdlOTE4YzhjNTZiOGY1YjE3MDdlYTlhODU5MDg0ZDUgbGVnYWN5LXRydW5rCiszNjE3NCA0MGFjYjY4YWQyMjQ3NzNiOWY4NTdiYTIwYTZjN2FkMjNlZmRkODdkIGxlZ2FjeS10cnVuaworMzYxNzUgNTgxYThhMTI4ZTExY2ExNTM2OWExZDE3NjIxYjUwMDVlOTI5YjIzOCBsZWdhY3ktdHJ1bmsKKzM2MTc2IDEyZjI0Y2IyNzM4M2M5NzFiN2MwMjY3ZjE1YjQxMTJlNzAwNWQ1YzIgbGVnYWN5LXRydW5rCiszNjE3NyA2MTE4MGMzMWQ0YmRiM2VhYTUwNTVkZDQxNWUzOGU2YWMzMTFiMjNlIGxlZ2FjeS10cnVuaworMzYxNzggYTQ2YmRlOWUwYzc0YmI3NjFkY2U2ODQ1NDc5OGUyMjY4MzliNWEzZSBsZWdhY3ktdHJ1bmsKKzM2MTc5IDZhYjVlMDUyNmEzMmFiZDQwMTczZTQ1Mzc5NGEzOGUzNGFhZDBhNDQgbGVnYWN5LXRydW5rCiszNjE4MCBlNWJjOTQ3YzQ0Y2FlYmMwMjkxNzRiYzhlMmM4Y2YwNzFiMWUzOTg5IGxlZ2FjeS10cnVuaworMzYxODEgODZmNTk2MmZkOWI3ZWM2Y2I3ODQwMmZhNzYwNzQzOTBiNjljMGQzMCBsZWdhY3ktdHJ1bmsKKzM2MTgyIDU1YmE1MWJlZjBhODFhMDQyOTRlZTJlMjYwYTAwZjE3MDNkNzQzYjYgbGVnYWN5LXRydW5rCiszNjE4MyBhN2Q2ZmMxN2YyNTc1NTI3NjI5NDViYzI1MGVkZmI4NzI4YmMwOTNjIGxlZ2FjeS10cnVuaworMzYxODQgYjhmY2UyMjU4YzIwMDZhMzM5YmQyYTkzNzJjMmYxYmFkM2I2NmM4YiBsZWdhY3ktdHJ1bmsKKzM2MTg1IGY0YTQ4MTBmOTgyZWQ1ZTg1NGFjNjNlZDU2MjUyMDNlNTRmNTRlNGQgbGVnYWN5LXRydW5rCiszNjE4NiAzMzFlNWQ4YjI5NmY3NmEzZGRhODkxZjJlNWFhMWRiNzQyNjZjMGZlIGxlZ2FjeS10cnVuaworMzYxODcgNTA5MDcyYzNmYTI2YjkyYTI1MWU1ZjU0N2IzYjAyOTMwZDJiZjBmYSBsZWdhY3ktdHJ1bmsKKzM2MTg4IDFmZDNhYTRiYzEyM2FkMTMxOWU5NzgzNGI3NDY0OGYzYTA2MWNhODEgbGVnYWN5LXRydW5rCiszNjE4OSBiOTlhNTUyNzM4YmZhZTM3OTMyM2EyODhkNzljOTU2MTUyN2I1ZmFjIHJlbGVhc2UyMy1tYWludAorMzYxOTAgMzkxMTczYzY4YmIzYzkwNzdkZmNhYjJhYTY0NmJmNmQ5YzhlODU2YiBsZWdhY3ktdHJ1bmsKKzM2MTkxIDk2M2QyMzU1NzAyMGYyMjI5OTUxNDMxY2E1OGI2MGU4MjA3MTQyMzggbGVnYWN5LXRydW5rCiszNjE5MiAxMTk4MmRhOTg3OTJjNDc2N2YxNGVjY2Y2NjEwM2Y1MTc2MDFmYjUwIGxlZ2FjeS10cnVuaworMzYxOTMgZTQzZGE0Zjk5OTQxNTY3YzNhYjkwNTBjZDg3OWRjZjMwZjAzOWUyNCBsZWdhY3ktdHJ1bmsKKzM2MTk0IDBhZjQxNTQzYzliNjVmNzFmMGRhYzg3ODU2ZWE5NTNiZThhY2ZhYTQgbGVnYWN5LXRydW5rCiszNjE5NSBmNTM5YTliOTRmNzk0NTc0NDRjYjliZDFkY2JkZDJkYmIyYjU5OTcwIGxlZ2FjeS10cnVuaworMzYxOTYgNjM4NDA3OGU3ZWRmOTc2YmVmM2IxNGE5ZmE3MzU1YWJiYzFmYzQ5NiBsZWdhY3ktdHJ1bmsKKzM2MTk3IDQzNGQzZjJjYjgzMjgyOGUxZWFiZmMxOGYxMmE2ODMwMDExODk2ZTYgbGVnYWN5LXRydW5rCiszNjE5OCBmNzNhNjNkZDMyODg1Njc2NmVhMTI2YzE1MzNkNjU4MmVmZTA5MjVkIGxlZ2FjeS10cnVuaworMzYxOTkgYTlhNGIwZGY1MTJhZDRmOTRkYTdmZGI2NmRiNjA0YWU2OTg3OWRmYyBsZWdhY3ktdHJ1bmsKKzM2MjAwIDViZmM3NTQzZDdlZmEwZmQwMGUzNTZlMDliODc0YzhhNTdlYzlkZmMgbGVnYWN5LXRydW5rCiszNjIwMSBjNmFiMGY4ODg5NWE1YzU4ZWE1MDYzNmIwZTEyZWI4MzhlMmQ5NmE4IGxlZ2FjeS10cnVuaworMzYyMDIgNzYzMjc3Mzc4MTE0YzNkMDVhZmVhNDUyZjliYTc5ZjgwZTRmZjNmNiByZWxlYXNlMjMtbWFpbnQKKzM2MjAzIGNkZTJmZWFiN2ZlMGFiNzBkMjFjOGI1MTU1MzBhZTZjNWQ3NThmMDUgbGVnYWN5LXRydW5rCiszNjIwNCAyN2U3MTJjOGUxYTM2NDllNTVhN2M3NjY5ZGU0YjgwMDc3N2Y3ZjkwIGxlZ2FjeS10cnVuaworMzYyMDUgZWM2NGE2YmUzMmY3MTdkYmRlN2YzMjJlODczZTE4OWNjZDNlMzI5NyBsZWdhY3ktdHJ1bmsKKzM2MjA2IGQwYTZjZWI4NDY0NjQ3MDZkNjNhZTAxZTUyNjI5NTRmMDMyMGE1MGMgbGVnYWN5LXRydW5rCiszNjIwNyA2ODZlNWQzOGJlNDIxYWJjZDgyODU3OGE1NDI3MzVlYmYyNDU3NGZmIGxlZ2FjeS10cnVuaworMzYyMDggMDgxOTUwOGFhZTNhYzNlMTVjNzY1OTY3YTJkODgzZjJjODQyOTdjNyByZWxlYXNlMjMtbWFpbnQKKzM2MjA5IDVjZjUwN2I2NGYzMWEwZDAyM2RjYzEzY2RhMjNmOGMyMmVjNjczODQgbGVnYWN5LXRydW5rCiszNjIxMCBmOTU2OTUyNmU4ZDQwZDFiMTY4MGM2MDY2ODc0Y2RmZTFiMTdmYTJlIGxlZ2FjeS10cnVuaworMzYyMTEgNGM3MWJjZmFjZGUyZjJhM2UzODEyYzE2ZGYwNGVjYmM4NTM4NjBiNCBsZWdhY3ktdHJ1bmsKKzM2MjEyIDZmYzAyOTE1ZjYzN2IwMjQ0ZDIwYTY0NWMxY2Y2YmQ5Zjg2MWY3NTUgbGVnYWN5LXRydW5rCiszNjIxMyA5OGU0NjMyNzIxMjAwYjA4MDc3N2RkYjY4ODY2MzgyY2VkNjBmMmRjIHJlbGVhc2UyMy1tYWludAorMzYyMTQgZTVkZjhjOGZhYTA5OWJkMzI0YWI5ZjEzNDNlMGIxNzU4Y2ZlNDY0OCBsZWdhY3ktdHJ1bmsKKzM2MjE1IDFkNTg0Y2E1NmIzMDQ5NWYxMzkxNjY2OGY5NmVhMDFjMzY3NWYzN2QgbGVnYWN5LXRydW5rCiszNjIxNiA2YmM2YWJiYTg2NTllYWE0OWEyOGM4MmJkMjViYTg1MzhiNzAxN2I5IGxlZ2FjeS10cnVuaworMzYyMTcgMmY3NmU3MmFkMTkwY2I1OTM5NGFiMWFlNWI3NjBhMjAxMzI4NTBhYyBsZWdhY3ktdHJ1bmsKKzM2MjE4IDc1ODYxZDhjNTg3MTVhMmRiZjA0ZTRiMThhZmIxNWMyNDAxYTYxZTMgbGVnYWN5LXRydW5rCiszNjIxOSAwMTRkODdjNzMyMTAyYTdmMTE2NjgxODhkMWRjMzdkNjZjZjBkZDhmIGxlZ2FjeS10cnVuaworMzYyMjAgNDcyMDIzZDBhMTBkNjQyODdlMjZiOWNkNjEyNWEyNjI0ZDczZTU0MCBsZWdhY3ktdHJ1bmsKKzM2MjIxIDZjZTY3ZjdiMDQzMGE4ZmVkYzkwOTA2ZmIxNDYxOGM2YjFkNWRiMWMgbGVnYWN5LXRydW5rCiszNjIyMiBjZDQ3ZjYyMjFkOGQxZjU2MTgyNjBlOGM4YjY1OTEwMWFlYTAxYmVhIGxlZ2FjeS10cnVuaworMzYyMjMgMWMyYmFhZTE0ODI4MjM5Nzc5YzY5MjczY2IwYjYwZTYxNzY4MzJhZCBsZWdhY3ktdHJ1bmsKKzM2MjI0IDhjY2Q4ZWM2M2NjMjBjMmI0YTIwZjk4OTBjYjIzZjk2ODZhNjkzMDQgbGVnYWN5LXRydW5rCiszNjIyNSA3NWU1ZDFlOGI2MTcxYTJhOWY3ZDJhNmRlOGNjN2Q3YTA4Y2RjZmI3IGxlZ2FjeS10cnVuaworMzYyMjYgN2I2ZWQzNWM1ODUwZTZmNTcwMDVlOTk3MzQ0N2FjMWZmYWNmY2VkOCBsZWdhY3ktdHJ1bmsKKzM2MjI2IGQ5OWI1YmVkMDA3ODg0YjI1ZjEyNzZlMmJhZmI5YWQwNjFmMmE5NTkgcmVsZWFzZTIzLW1haW50CiszNjIyNyBhYWY5Mjk1ZWQ0NWIwMDZlYzcwY2ExZGMyM2Y5NTY5NGVhZjdmNjk2IGxlZ2FjeS10cnVuaworMzYyMjggZTBhN2M0NjEzMTFiM2RjYWY2ZmEzNTZjYThkZWExMzQxMTQ4NTRmMSBsZWdhY3ktdHJ1bmsKKzM2MjI5IDc3OTEzYmUyOTRiOTIxMTQ2N2I0NTgzN2VkYWZjMmJlZWEyNjFhNmUgbGVnYWN5LXRydW5rCiszNjIzMCA4NDQ0ODQ5Yzk0NDhlZGVhYjY0NGRmNTQ0ZDZhYzNhYjMzNTI3OTEwIGxlZ2FjeS10cnVuaworMzYyMzEgODEwMWU4ZDI0ZjA1MjhjNDExMzAwYTY0NTczNmQ1N2I3MGUzYmVmNCByZWxlYXNlMjMtbWFpbnQKKzM2MjMyIDM5M2MxNWMwYzVhNDhmNjVlYjRhMWNlNDU2Mzc0OWVmZTA5MTdkMTggbGVnYWN5LXRydW5rCiszNjIzMyBkNzExMGJiNmMxM2RjNDM5ZjRhZjNlZTJlNmFiZjliMTllMjQ5MmQyIGxlZ2FjeS10cnVuaworMzYyMzQgZmNmYjJkNDIyMGIwZTU3M2UzMjdlZDg1NzMwZDBiNjg5MzcxYmYwOSBsZWdhY3ktdHJ1bmsKKzM2MjM1IGIxZTcxYjM5Mjc5OWFhNTcxNGQ0N2UwNjgwNmY1NjZiYjhjMjZlMjUgbGVnYWN5LXRydW5rCiszNjIzNiA5NTBjZjY5YzY5YjYxZGMzZTdmYjNkNmNiNWVlYWYwMDYxN2Q2Y2M3IGxlZ2FjeS10cnVuaworMzYyMzcgMjdlMjJmNmJkM2FlNzcyZmVhNGZlNzkyNDFiN2NkYWEyOTFjMmFhNCBsZWdhY3ktdHJ1bmsKKzM2MjM4IDI1NWE3MWYyZDIxNWE4ZjcwYzFkNWRiN2E3OWZhMmI3YzBmZGQ5OTAgbGVnYWN5LXRydW5rCiszNjIzOSA4NGU1YjU4NWQyMDFiODg0YTk1ZmMwYTRiMmE5ZDIwZWJlNWRiMDNjIGxlZ2FjeS10cnVuaworMzYyNDAgYTRiYzJmZmQ4ZTcxNmE5MTQ3ODRlN2QxZDhjNTNhYTdhNmNhMjRiMiBsZWdhY3ktdHJ1bmsKKzM2MjQxIDQ4NWQyZWY0MzQxOWQxOTAwMTcwYWViYmVhOWQ2YjY4MmM1Y2I5MTcgbGVnYWN5LXRydW5rCiszNjI0MiAzZGYzNmUyZTVkZGMxMTQ5YWY4ZWI1MmUyMGJjMjI1ZDgwNjIzNmQ0IGxlZ2FjeS10cnVuaworMzYyNDMgNjQ1MzRmYjNhZmNkOTQwMGJjMzBjZjc0MjFmZWY4M2UzOTI4ZGMzMSBsZWdhY3ktdHJ1bmsKKzM2MjQ0IDNkZGM3YTIzMTc2YjYyODMxZDQwYTgzNjRmNWZiNzcyZmI0ZmFjZTggbGVnYWN5LXRydW5rCiszNjI0NSBlMzcxMTgzZDBlMTkwY2U3ZTBlNzI0YmYxYWQ1ODg3NGVmMDU5MTc4IGxlZ2FjeS10cnVuaworMzYyNDYgZjhkNjFlZDJmMGQzYTBlMTgzNmU3NjRhNjE1OWM1YzI1Mzg1OGFkYyBsZWdhY3ktdHJ1bmsKKzM2MjQ3IDkxNWIwZTgzM2I1YmZkMmJhMjVmNTM5MmVhNWE0MmE2NjZkNGRiM2QgbGVnYWN5LXRydW5rCiszNjI0OCAxYzY5ZjkwOWM1YTYxMzc4ZGEyN2YwMjYxZTQyYmIwMTM3NDY5YmY5IGxlZ2FjeS10cnVuaworMzYyNDkgZDhhYmY1ODJmODkzMDZlYWU3M2U0M2YxYWM0MzM5YmY5ZGRmNTc3MiBsZWdhY3ktdHJ1bmsKKzM2MjUwIDQ4Y2EyN2FkYTgxZTY1ZmQ3NTVkMDlhZTI3NmM0YTUwMmYzZDU5ZjEgbGVnYWN5LXRydW5rCiszNjI1MSBjN2QyYjI0ZWVmZjk5ZDYwNjUxOGRhYjI5YTY3NjM5MDE5NDE1YWEwIGxlZ2FjeS10cnVuaworMzYyNTIgMjBhZGI3Y2UxYjA4NWY0MjFiMmUzZWNiNjkzOTRhM2IyNDhhYzI2OCBsZWdhY3ktdHJ1bmsKKzM2MjUzIGRhN2MzYzYxZDQwZTAwNTBmYjBhZGFiMGVlZTQyM2VjYWQ4YjIzMzggbGVnYWN5LXRydW5rCiszNjI1NCA1ZWM3OGUyZGM0YmVjOTZlZGU3ODIzOGI1Njk1N2RlMWVjMDNkNDQ4IGxlZ2FjeS10cnVuaworMzYyNTUgZmY2Yjk3Y2RkODY0ZjRmNTBiZmNkMzFkZWNiMGZlMDNjZDUyM2IxMiBsZWdhY3ktdHJ1bmsKKzM2MjU2IDNhN2UzNGRjNmFlMjZkZThiMWZkOGExZmNhYTZmZjM0NTNlZmE5OWMgcmVsZWFzZTIzLW1haW50CiszNjI1NyBmNDdjZTIzMDRjYmIyMzU5MDMxNTI0YThiNzVmN2E4YTc3MWE0MmM3IGxlZ2FjeS10cnVuaworMzYyNTggMzhmODgzNDAzZTlmOGNiNzdhZjI0ZTkwZDQ0YTUxZWIzZjYzNGM3ZCBsZWdhY3ktdHJ1bmsKKzM2MjU5IDczMzNiZTA5MmVlYzBjZTkzNWQ4NDA3MjA1YjE3NjU1OTU1YzIyNzYgbGVnYWN5LXRydW5rCiszNjI2MCBlZTM4ODk2ZTBkMjQxNzNlMDVkYmFiYjBjNTc1Y2M4YjY3MWJjNGM0IGxlZ2FjeS10cnVuaworMzYyNjEgNTNmMjc0ZjAyZjY5ODA1OWRjZjNhYTgwZmUyNjBkMWQ5ODM3M2EwNiBsZWdhY3ktdHJ1bmsKKzM2MjYyIDFlZGMwNjg3MjEzZmUzZmRjNDE4MzViNjlkZjRmZjViMGFjODE2ZmEgbGVnYWN5LXRydW5rCiszNjI2MyBiMThmNDgwYzM3YTA3NjgxM2NkZTI2ZjE5NmZjZmM5ZDQxZWEyMGUzIGxlZ2FjeS10cnVuaworMzYyNjQgYzU2MTY4ZmFiZjhlMzNlZDliMjllYmM3NDFlMDYzNjJjYmMyZDMzZiBsZWdhY3ktdHJ1bmsKKzM2MjY1IDVhZGNhNTgxNDlmZjQ5ZGYwNWU3M2NkMWFkYmY0NWYzZmEzNWY0ZGEgbGVnYWN5LXRydW5rCiszNjI2NiA0NjRjODA4ZDBkY2RhMzhiYjgyYTA2ZTJmNmI5M2RiMmI1NjY2YWQ4IGxlZ2FjeS10cnVuaworMzYyNjcgN2RiNGM1ODZlMWQ2Y2UyN2Y2Nzc4NGU3YjE1NjkxYzg5ZjRlMGNhNiBsZWdhY3ktdHJ1bmsKKzM2MjY4IDI1NmI0OTZhZjRjNGEwNzVkNjZmOGMxNGMyZjQyZGI0MTA2NzhkNzAgbGVnYWN5LXRydW5rCiszNjI2OSBiYjAwZTEyZTc3NDE2MDU3N2E5ZjJlZThkMDUyOWNiYTJiZWZiMTYzIGxlZ2FjeS10cnVuaworMzYyNzAgMGUyOGZkNmZlYTAwYzJiZmMzMmMxOWIwMzRiMDUxMTM4Mzc3NjI5MSBsZWdhY3ktdHJ1bmsKKzM2MjcxIGQyYzFjN2FlN2NmNDMyMzY1YmNlY2E3MTI4YjQxODU5YmNhNzFlMTggbGVnYWN5LXRydW5rCiszNjI3MiA2N2ZiYzIzZGNmZGQ0YjkyNmZmMjI0OWZmZmI0MTgyNjBmZTNjNjcxIGxlZ2FjeS10cnVuaworMzYyNzMgMGY1NmVhZDk2ODE3NjU1MmI5ODA3OWJjMWQ1YTVkNGRhNTJjMTgyNiBsZWdhY3ktdHJ1bmsKKzM2Mjc0IDczMTU0YWI4NTYzYTVjMTE2MDU2ZjgxYmIxZTdmZmExYTEyNTQxMWIgbGVnYWN5LXRydW5rCiszNjI3NSBkNTAwZjcyZmIxYWNmMWI5MzhjNzJlNDkyNmNhZmNmYmVkZGJmNWQzIGxlZ2FjeS10cnVuaworMzYyNzYgNTAwNjhiMTdmNDFlYWExYWI0ZmM5OTg4ZDlhYmQ0ZmM5ZDQxNjM1ZiBsZWdhY3ktdHJ1bmsKKzM2Mjc3IDZjMTY2MTJmYjExODM4MTU4MGRhZmExMGYxZTBmMDYzNTgwZWYxZDEgbGVnYWN5LXRydW5rCiszNjI3OCBiNzNhYjMwOWFkYTdmYjJiN2E0ZjFlMzdiOWM2OGZmZjllZjlhODZiIGxlZ2FjeS10cnVuaworMzYyNzkgNmIxZWE1YzA3ZmY3M2VlYzVkYmQzNjBjNDRiZjgyMGFmNDBjNDBhZSBsZWdhY3ktdHJ1bmsKKzM2MjgwIGM0MjNlMDE4YTI5ZTAzZWYyNzY2YTc5MzRlOTgwNWU2YjMzNzJjYjQgbGVnYWN5LXRydW5rCiszNjI4MSBlM2Y4MmRmNTRjODhlMDgzNWJjYjdjY2RkNDhlNDZlN2Y5MWQxMTc2IGxlZ2FjeS10cnVuaworMzYyODIgMWI5ZGE1ZmU5MDUzOTRiZWEyZjUxN2M1ZGQ1YzZkNTEwNjJhODBkYSBsZWdhY3ktdHJ1bmsKKzM2MjgzIGQ0YTU5MjMwZTkzYTk2YTcxYWI1N2QyOWU3MzE0MjJiZjA4ODQyOTMgbGVnYWN5LXRydW5rCiszNjI4NCA3NTdhYjIwMGQ0N2E2YmE3ZGYwZGYwNjQ0YzA5YTk4MmM0YTMzNjhkIHJlbGVhc2UyMy1tYWludAorMzYyODUgYjU3NDNlNDQ3MzA5MTIwY2NjMWYwYWVmMjQ0NDA4YmY5OWU2NWRmYiBsZWdhY3ktdHJ1bmsKKzM2Mjg2IDNjNTAzNmIzZThlNjc1YjM4ODc5YjIyMGIyYmMxMzc1N2Y5NmRkOTcgcmVsZWFzZTIzLW1haW50CiszNjI4NyBkZjEzZmZiOGY0OTg2MzdlZDA2YWEzNGFkMjRhNDc3YzQ3ZjJkYmZlIHJlbGVhc2UyMy1tYWludAorMzYyODggMTg5MTZjZTQxYzI2MGYyYmUxYThjMjNmZmIwNDkwOTM0YWE0OGExMyByZWxlYXNlMjMtbWFpbnQKKzM2Mjg5IGI4NzEwZTZkOGQ3ODBkZjk3Y2IzZGIxZjMwYTNkNTRiM2YyM2JmZTkgbGVnYWN5LXRydW5rCiszNjI5MCAwNWYxMmJjMWU1YjMwMjIzNWRlYjhiZTAwNjZmM2NjZGIwN2EzMTk1IGxlZ2FjeS10cnVuaworMzYyOTEgMmZmY2Q4MzY4MTdlYWJjNTA3OTQxNmI3MmRjZmQ3MzcyZjQ0NzFkNSBsZWdhY3ktdHJ1bmsKKzM2MjkyIDQzODNkYjc3YjE5YTliODAyNTg4NzQ3YWM2MWFjYTc3ZjA2M2JhMGQgbGVnYWN5LXRydW5rCiszNjI5MyAxNGI0MTU1ZDhiMGE0NTIxMjRmZjdjZmU3NWVhMTcyYjAzN2IzYmRjIGxlZ2FjeS10cnVuaworMzYyOTQgOWU4ZjdkZjRhNmZlNzYwMTE2ZGIxOGEyNDNmNGI2NDk5MDdiZWIwNiBsZWdhY3ktdHJ1bmsKKzM2Mjk1IDc5NmNjYjkwODJlZjM1NmMzNDk3ODM0NGFmNjU2NjVjOWFiYjk3Y2QgbGVnYWN5LXRydW5rCiszNjI5NiBmYTc4YWM1NjgzMDk5ODQ0OGJhZWNkMmUzZDc3M2MzY2I2MzYyOTJiIGxlZ2FjeS10cnVuaworMzYyOTcgYmM1ODZkYjk5NDVhMGVjMDRmNDlhN2NmZWUyYzNlNWE3NDc0NTBiOSBsZWdhY3ktdHJ1bmsKKzM2Mjk4IDUwZTg0NGE0ZWVkOTBmNjhmZmUwZTFmYTQ0YzYyMjM2MDZiNDI1NTUgbGVnYWN5LXRydW5rCiszNjI5OSBmZTgwZjc3MmJmYTEyOTIwYmExZjQ2Y2Y5MTJhMjIxOTI3ZWY4ODI0IGxlZ2FjeS10cnVuaworMzYzMDAgNzdkZjFjYjQxNTMzMmUyNzZhOTQ3M2QxNzczNzIyYzJhNjc4ODUwMyBsZWdhY3ktdHJ1bmsKKzM2MzAxIGI4MzVkNWM2MWQ4NjQ5ZjQ0YmZlYWIxNGRhYjQ4MjRhOWI1ZDYxNDcgbGVnYWN5LXRydW5rCiszNjMwMiBlY2NkMGZiZTBjZDVjMjhjMTM5MjQyY2U1ZTJjZDg4ZjM0MzJjMzZiIGxlZ2FjeS10cnVuaworMzYzMDMgYzZhY2YyNjFkNjE0NzlkMTg2ODNjMDFkYTQzMGZiNmM0MzkyMWM0ZiByZWxlYXNlMjMtbWFpbnQKKzM2MzA0IGYzY2I5NWNkNDEzZjQ5ZjQ0NDg1NzkwMDI5YzRiOWFkYTk0NzdhYjkgbGVnYWN5LXRydW5rCiszNjMwNSAwMDJhYzYyNTljMmNiOWQyMmZlYTNmYTA5ODEyOTI2NzgxYzM0NDRmIGxlZ2FjeS10cnVuaworMzYzMDYgOTFjY2U3YmJhMzcyNjk2NDg1OTVjZDAyMGU4NWQwOTFmMGY4Mzc1YSBsZWdhY3ktdHJ1bmsKKzM2MzA3IGZhMjNhOWIxODk2NzYxNzZiNzA4M2FmMzUxYmNhNjBmZGY1NGI5MWQgbGVnYWN5LXRydW5rCiszNjMwOCAzOTIzZGM5MGViOGViZjcwYTA1MzgzYTFlNDhkOTk4ZDg2NGQ5MDYzIGxlZ2FjeS10cnVuaworMzYzMDkgYWIwYTJiNzRkZGZkOTY5ZWExZjg2NDc4MDBhMmQ0YTMxM2Q0N2JmYyBsZWdhY3ktdHJ1bmsKKzM2MzEwIDc5ZGY0Zjg3ZDY3ZTdhYWZhMGUzN2Y4ODNhYTU0YmQxYTIxZjFkZGEgbGVnYWN5LXRydW5rCiszNjMxMSBkYjUwM2EyNjNiNDMzY2JhYjhmYzRjN2ZlMjEwYzAyNGEzZTMwNGU2IGxlZ2FjeS10cnVuaworMzYzMTIgOTlmZGY4MDcwNmFkYWU2ZTNhMWJjYTA3NTA3ODZiMjdmZTdhMTljZSBsZWdhY3ktdHJ1bmsKKzM2MzEzIDIwMmFlMDU3OGViZWIxNWNlOThmZDI0OGI0OTg0ZWYxNTU4ZTAzYWMgcmVsZWFzZTIzLW1haW50CiszNjMxNCBmNTY1MDNhOGRiYTNjNDFkMDQ2ZjlhMWNmMjE4ZGJmZGY1YzIwNzc3IGxlZ2FjeS10cnVuaworMzYzMTUgNmNhMTIyZjI3MzZhYjg5ZTE1MWZiMzdiYmZiZGFlYzA2OWU0ZjE5ZSBsZWdhY3ktdHJ1bmsKKzM2MzE2IDljODc1MThmYWY2YjZjNGU3NGFjNTgwNDU1NWI0YzZkMTllNWQ0MmIgbGVnYWN5LXRydW5rCiszNjMxNyAwNTRlZGUwMWUzZDMwNTdlMDc5NGFhMDE5YTY5YWQxYzdhY2Y4NDdjIGxlZ2FjeS10cnVuaworMzYzMTggNTFlYjY3YTg1NjhlYTFiNWU3ZjIwY2RmNDFiNmRhZjQ1MTI1ZTYyMCBsZWdhY3ktdHJ1bmsKKzM2MzE5IDZmZTJkMjQxMDA4YTgyOWM4NjlhYzM1NmE2YWMzZjE0MzA3YTVlNmUgbGVnYWN5LXRydW5rCiszNjMyMCBmYmJkNjcyNzQwMWI2MTYyYzM4YjFhYzViNWU3ZjE1NmY5MWRmMmRkIGxlZ2FjeS10cnVuaworMzYzMjEgMGRiNjNhNzY1YTc3MDFlOWVjNzhmNWZlOGYxMjFiYzA1MDExYzA4YiBsZWdhY3ktdHJ1bmsKKzM2MzIyIGYwNGYwODFmZjIzMTEwOWUxMTU0ZWY3ODI2ZTVlMmI4YTg1YjEwMDYgbGVnYWN5LXRydW5rCiszNjMyMyA4NzQwMTY1OGViNDU3Mjk2OThjZDA4YzQxOTlkOTczOWY3NGI5NzE0IGxlZ2FjeS10cnVuaworMzYzMjQgYzRlZWZmZWExOTYwMzhiMTdlZTZlNzc0ZDE5MzMzNmU4MDQ4YmY5ZSBsZWdhY3ktdHJ1bmsKKzM2MzI1IDE5MTc5NmI3YTA1NDU2ZDU0NGZiMmYwNWEyOTQyNGY3ZDRjYjJhYjcgbGVnYWN5LXRydW5rCiszNjMyNiBmNWYwNGNlMjUxNjM1NzYxNjg0NmFkMjA3MmQyMzBmMTdhOTBiMmVhIGxlZ2FjeS10cnVuaworMzYzMjcgNjgyZjc0MDg4NjAyOGZkZWQxZjkzZmNjMzlmMDQ1NTkzMjA4NTNiMiBsZWdhY3ktdHJ1bmsKKzM2MzI4IDhlNzY4YzNhZjAxNWQ3MTI5NTc0NTdiMzQ5MDE0YWMyNGRiMzRmMDYgbGVnYWN5LXRydW5rCiszNjMyOSAzZDY4OWU3MTVkYjI0NGE5MjU0NjNmNTM2YjRlNjY3OGQ1YTg5YzJmIGxlZ2FjeS10cnVuaworMzYzMzAgNjFmOTAzNGExMGY3MWYxZGU5YTYwYWIyODQzOTIxYTkzNzIzOTdlNSByZWxlYXNlMjMtbWFpbnQKKzM2MzMxIDhlN2M5MWRlOTQ5MTk2MTcyMTAzNzk4NzU5ZjJlNmNlZjc2NzRhMjEgbGVnYWN5LXRydW5rCiszNjMzMiBjNGVkMTRmYWIxMmEzNmI3NWQ2ZDIxMjgzNWU2MjZjYTEyZTE2NWQyIGxlZ2FjeS10cnVuaworMzYzMzMgZWM5MjhlZDAxYWNjNTVlMjY5MTBiMTQ2YzI3YWY1Y2M4N2ViMThhNCBsZWdhY3ktdHJ1bmsKKzM2MzM0IGI2MWM0MWQxOTc3ODcwODhkNTQ2NWQ4ZGIwMTc3NDcwNWM0Mjc1MWEgbGVnYWN5LXRydW5rCiszNjMzNSAzMjllZTQ4MzBiMDQxMjE0Y2FiOTVmYjBjNGY4YTBlY2RmYWMzNGM4IGxlZ2FjeS10cnVuaworMzYzMzYgNDU0OWU3NWE2MjQzNGU0ODJiMjUwMzFlNjhhZjI0MmUzYmE0M2RiMSBsZWdhY3ktdHJ1bmsKKzM2MzM3IDVlNDFjYmVjMDQ2NTNmZjUxYzE1MzZkM2YxYzc2YTc3NzllNjNlZTkgbGVnYWN5LXRydW5rCiszNjMzOCBmNThjYzMzNGQxNWM0NjJjNTY1ZDZhODMzNTc1OTA4ZmVjZmM0ZjNjIGxlZ2FjeS10cnVuaworMzYzMzkgMTBlNzVlYTU5NjA1NDgzM2FhN2Q5NjYzODZkYjI4OTE0MDVkZDczNiByZWxlYXNlMjMtbWFpbnQKKzM2MzQwIDRiZjhmYjExODk0ZjRiODFmYWY3NGRiMDM2MzU1ZGMzMWM4MzRmNmQgbGVnYWN5LXRydW5rCiszNjM0MSA3MzdlODkyYTJjMmNmNjg2MDU4YmExMWE4OGViZDMxYTFmNGFkOTIyIGxlZ2FjeS10cnVuaworMzYzNDIgY2FmZDEzNGZjMWNkNDRiNjk5Y2U0MmM4ODA2YzQwZDgzYWFjN2M1NyBsZWdhY3ktdHJ1bmsKKzM2MzQzIGRhNjNlMmQ2ZWI4YTNkMWYwZWIzNTJlYjRhNTlhZTk2ZjNmYWNiMDQgbGVnYWN5LXRydW5rCiszNjM0NCA5ODdlMzZhZmI4NzlkMjY2Nzc1MWViYWMyNDQ4ZGY3YmM0ZGQyM2ViIHJlbGVhc2UyMy1tYWludAorMzYzNDUgZWM1ZDBlODczOTY0MTg1MmM4MWMwMDdjYjJkZmM4ZTk3MTBlNWU3OCBsZWdhY3ktdHJ1bmsKKzM2MzQ2IDc4YmQyNWI0MmQ0NjMxNDJjODQwZDAxZjBjY2FjM2VhM2ExNmE5ZTUgbGVnYWN5LXRydW5rCiszNjM0NyAwZGE2NjBlMDVlNjkwZGNhMTA4YmY2ODFkYjJjYzkyNjdlOGI1OGFjIGxlZ2FjeS10cnVuaworMzYzNDggNjc1MzljZmNmMDlmZThiNTM0YWU0MGViZDlmYTZmZDMwMWU2YTRmMCBsZWdhY3ktdHJ1bmsKKzM2MzQ5IDI0NzZhODMzNDI4NmI3YTBiZmUxMGFjY2NjMzllN2UzMjFmMzExMTUgbGVnYWN5LXRydW5rCiszNjM1MCAyNDUxYzk1NzJlZGY1YzAwOTUyMmNlNzA3NDYyZmZmYjkzYTg5ZGNiIGxlZ2FjeS10cnVuaworMzYzNTEgODdkMTk2ZTFjMmQwMWQ1OGYwODdiZWJkYjQ0NTRhZDA3Y2Y2NTE1ZCBsZWdhY3ktdHJ1bmsKKzM2MzUyIDkyODIwZWE1YWU4Y2JlMTNkYTBiMDIzZTdhYjZiZDBhYjQ3ZTcyZmQgbGVnYWN5LXRydW5rCiszNjM1MyAyMDE5ODZkNmQ5ZDYzNTBjZmIyYTY1OGNkYzZjMzk3MmJkZWM3YzZiIGxlZ2FjeS10cnVuaworMzYzNTQgMTYzNGY2MDExODg4NTk5NTlhMTc4YWQ3NzdlNTllMzZjYjRjZTk1OCBsZWdhY3ktdHJ1bmsKKzM2MzU1IDMyNDU1ZGI5NzEzNTc2YzI5N2ViOGNlY2U1YmQzMGU3NTU3OGY1NzMgbGVnYWN5LXRydW5rCiszNjM1NiA0M2I4MDk4MTVjN2Q3NTljMWNlZDljNzY3Y2I0Y2U3MzcxM2UyZGI3IGxlZ2FjeS10cnVuaworMzYzNTcgN2ZkNmY4N2U1ZDFmY2ViYTE1OGZlMWRjZjU0N2IwOTY1YjAzMTQ5NSBsZWdhY3ktdHJ1bmsKKzM2MzU4IDRmYWI0YTVjY2UyZjVkNDQwZTRlZTUwNWE5NjNlYmI5MjZjMzE2YmYgbGVnYWN5LXRydW5rCiszNjM2MCA3ZTQ0ZjNhOGI1Njg3Y2ZhNjEyZTJjNDVjODE4NTBiY2Q3NDE1NTA5IGxlZ2FjeS10cnVuaworMzYzNjEgN2FkNjg1ODdjOWFjYjYyNTM0NWFmZTc3ODIwYjM5YjE3MzMwMDAwOCBsZWdhY3ktdHJ1bmsKKzM2MzYyIDc3NTk3MDRlNzg3MjkyNTFhOTU0ZGY3MGQ5YTUxNTBjNTExMDRhNDUgbGVnYWN5LXRydW5rCiszNjM2MyBlYzhlNGVkMmIxNTdjYzljYjczMjU3MDAxZDgxNzIyZDIxYzU0ZWZmIGxlZ2FjeS10cnVuaworMzYzNjQgYzRkNTRjNGJhNTU0M2VhODJjZjU3NDRiMTQ1OTllYTVlNTg5NjlmNSBsZWdhY3ktdHJ1bmsKKzM2MzY1IDQ2OTNmYTE5ZTIyYmRjYTJiYTk2MzU2NDA4Y2Y1ZDg0NzJkZTVmNDkgbGVnYWN5LXRydW5rCiszNjM2NiBkMWZiNGJkNDg5MzYwNzNjMjg0MmIwN2U3ZTg2YzQ0MjI5OTBmNWUwIGxlZ2FjeS10cnVuaworMzYzNjcgZDQyNzQ5ZGI5MzM5MjUyY2EzNzA3ODYwOGRmNjg4ZWFhOTI3MzgwNyBsZWdhY3ktdHJ1bmsKKzM2MzY4IDkyODhkNTI0ZDc1Nzk5NzIyNWFiYTk2OTNlYTQ5M2U1YzgwYWI4MGMgbGVnYWN5LXRydW5rCiszNjM2OCA5MmNhNjU4ZmQ0MjAwOTViNjI4NGM5Y2U2ZTkwODJhODAyODVlYzljIGxlZ2FjeS10cnVuaworMzYzNzAgYmUxYTEyZDBiODk1ZDI1MTY5MjAyNWFiMzk0OGQ3YWE3OWI2NDU1ZSBsZWdhY3ktdHJ1bmsKKzM2MzcxIGYzZjExZDg2M2EwMmY2MTNhZjdkNTczZjU2ZDRiMTI3ZTJjOGM3NjcgbGVnYWN5LXRydW5rCiszNjM3MiBmNDZkNDllMmUwZjBiMThmZDkzMjU5ZjY3NmI1NWM4NTU0ZDk3MjExIGxlZ2FjeS10cnVuaworMzYzNzMgMzcwNmEzNzA0YWVhYzAyYTUyZDg2NGExMzVlNDEzYWQ0YzFiYzlmOCBsZWdhY3ktdHJ1bmsKKzM2Mzc0IGMwOTlhYTc2Nzk1MmQ5OGE2ZDdhMjY4MWQ1MzAxODdiMzQzMGYxMTMgbGVnYWN5LXRydW5rCiszNjM3NSA3NGMzYjcxM2UzNWE2YWZkNTU4NDdhN2JlY2M1NTQ3NTJlNmUxZDQ3IGxlZ2FjeS10cnVuaworMzYzNzYgZDkwOWEwZGRkMTkzMmRlMGZiYmUyMTk0NGI3OWZmMjdhM2M3OTIyMSBsZWdhY3ktdHJ1bmsKKzM2Mzc3IGVjMjg1NjNiMDUyZThmZDZiOWY0YTc0MTY3MzIyNDYzZDg0MzFmNGUgbGVnYWN5LXRydW5rCiszNjM3OCAwMjlkZmZiNjNmNGJmMWNhY2I3OTcxMTNlYjMwMzQ4ZWU4OGEzMjA3IGxlZ2FjeS10cnVuaworMzYzNzkgN2Y0YjY2ZGM0Mzc2MmRhOGNlZmY3OGZiNjkxOWE0NTk3NzMxYjVkZiBsZWdhY3ktdHJ1bmsKKzM2MzgwIGVjMWI1NmI0M2FmMDQ2NWQ0YmUzN2E1OGYyNmVjZTcxNGY0YTFiNGUgbGVnYWN5LXRydW5rCiszNjM4MSBlNGI5NmMzYTNlMTIyOWRhYTc4M2NmY2Y5ZDkzMGVhMjYyNjA1MWIwIGxlZ2FjeS10cnVuaworMzYzODIgNmYzNTFiMWJjZjUzNGM4Y2FhYjAyNGExYTg0MTlmZTJmZDUyOGUxNCBsZWdhY3ktdHJ1bmsKKzM2MzgzIGExNjBiOTY2OWRiMWUzMjBjZTJjYTNmZmRkYTdlYTdjY2U0Y2ViOTkgbGVnYWN5LXRydW5rCiszNjM4NCA2OWJiMjQxYjA1NmM5NmYxNTI0MjNhYWNlYmU0NGU1MTk2M2M5NTQ1IGxlZ2FjeS10cnVuaworMzYzODUgY2YxMzhjNTVkNDFiZTZiYzZlZGNmMmM5NzQzZjM1N2ZhNzMwMWYzNSBsZWdhY3ktdHJ1bmsKKzM2Mzg2IDExMTg2ODNjZDRkMWNmNWMwNWY2YzdlMGQwYTExNDYzZjk2ZWY5YTcgbGVnYWN5LXRydW5rCiszNjM4NyAzYWFkZmMzZmM0ZTZmZGI4MDdmYzZhYTViNzBjZDUzYzM0OWZhZGQ0IGxlZ2FjeS10cnVuaworMzYzODggMDA2NGY1NWJhZmE3Yzk2ODczMzg5OGIyNGQ5M2RjZDQwMGZkYzAwOCBsZWdhY3ktdHJ1bmsKKzM2Mzg5IDg0NGQ5OWM4ODhiYmExNGY2NTMwOGIzMTZjZGU2NWJhYzQxMTNlYTcgbGVnYWN5LXRydW5rCiszNjM5MCA1YzI1Y2E2ZmZhZjllNTk1NTZlYTY3NGFlNmMzMDg1NWUzMzU1MzQzIGxlZ2FjeS10cnVuaworMzYzOTEgNzBiMTUwNGUxN2ZmY2Y2YTBkOTk3MDljZmRiM2MzM2Q5MDYxZjBkMyBsZWdhY3ktdHJ1bmsKKzM2MzkyIGJlYzBjNzYxODYyNTQxZTU4OTY1YzA2ODZmNTNjNTNhMzM0NTdjNmIgbGVnYWN5LXRydW5rCiszNjM5MyA4ZWEyY2IxZWM1OTg4ZDlhMzEyYzE2NGJhNmIyMjM4MmI0YWI1YTQ2IGxlZ2FjeS10cnVuaworMzYzOTQgMTUzYzUxN2JjNmU5NmU3NGZjMjEzMTMwZGQ4OTk3OTg3NDc0OWNmNCBsZWdhY3ktdHJ1bmsKKzM2Mzk1IDIyODMyMzg5NTI3MWUwNDZlNjc1YzA0NGMyYzM5ZWUyZmU4YzA2MDggbGVnYWN5LXRydW5rCiszNjM5NiA1MTFmZmM2MmIyOThhN2YxMWIzNjFmMTUzNGFiMDk1NjE1MjZjNDdmIGxlZ2FjeS10cnVuaworMzYzOTcgODNjYmMwMjViZmM3NGU0ZTE4YTg4NzExMTgxYjg3NmM0OTM0NjYwMSBsZWdhY3ktdHJ1bmsKKzM2Mzk4IGZlZjc5MTFhNTcwNWNhZWY3MDU5MzhhMzc5ZmUxOGUxZjMxZGYyMmQgbGVnYWN5LXRydW5rCiszNjM5OSAyMWZkNmU2MmNkMjc2YjI3Mjc5MjYwNzQ3ODkxYTk5YzQ4ZmViMWU2IGxlZ2FjeS10cnVuaworMzY0MDAgNDkyZGM4YjhlNThlYzE1ZTcxNjdhYTI2N2RmNmM5NDM0OTBmNGUyMCBsZWdhY3ktdHJ1bmsKKzM2NDAxIDIzMDM5N2JjN2UzMjA0NmNhYjViMDdkODVmNDU0MWQwNGZjMGM1NmQgbGVnYWN5LXRydW5rCiszNjQwMiAwZGQ0NzNhOGU1M2MwOTIyN2ExZTlkOTExNmJjMTk5ZWUzYzg1ZGRiIGxlZ2FjeS10cnVuaworMzY0MDMgNGQyZjRhMzllYzVlZDI3NDkwNGMxNzI3OWQzMGZhOWQzYzI1NjExYiByZWxlYXNlMjMtYnJhbmNoCiszNjQwNCA3MzYyZTM3MmM4OTcwZDE2MzBmODJjZGEzNTQ2ZmQzNWJhNjM4NWNjIGxlZ2FjeS10cnVuaworMzY0MDUgZjJmMGM1ZmQ5YjZjOWQzZjMxZmMxN2QzZTdiYmU0YjE3M2I4MTFmZSBsZWdhY3ktdHJ1bmsKKzM2NDA2IGE2NGJhZTVjMzNiN2U3NmEwODQ2MWFmZThkMjI4M2I1YzgzODFlNDIgcmVsZWFzZTIzLWJyYW5jaAorMzY0MDcgZGUzMjZkN2U3NGU4YjgzNzk5ODUxMTM4ZDc0YTFlNjVhYjcwNTgxNiBsZWdhY3ktdHJ1bmsKKzM2NDA4IGEwM2JjYTE2NTRkMGEyZmY4MDM3Y2UyOTkzNDJlZGZjMWUyMGZlNWYgbGVnYWN5LXRydW5rCiszNjQwOSA2N2E4NGEzM2QwZjhjMzQzYzBmMmUwMDU5MmQ0NjlhZmFkYmQ2MjY0IGxlZ2FjeS10cnVuaworMzY0MTAgNGJlNGM2MzY3M2ViMTVjOTMxYmRhYzNhYjUwNGE3MTkxZWQ0MGJmOSBsZWdhY3ktdHJ1bmsKKzM2NDExIDNlOTI1OTU5ZmEwMWFjZWRjNjg3NzM4MTY3ZGZlZjM3ZjAxMGM0MjUgbGVnYWN5LXRydW5rCiszNjQxMiBjNzhmY2RkMDI0NjQ0NmRmMTMzNDVjNDgxZDJmMmVmNmM4NDgzNjg2IGxlZ2FjeS10cnVuaworMzY0MTMgZjNmNDc2NWVmZTY2ODMzOGUyM2QzYzM1MmE1MWNlY2U5NWU5YzJjMCBsZWdhY3ktdHJ1bmsKKzM2NDE0IDViMjVjNjQ0NmFlYjMzZjczNjQ0ZGM5ZDRjMWUyYjQ4NDU4MjJkMGUgbGVnYWN5LXRydW5rCiszNjQxNSA2ZDdhYjBjYWQ3MmRlMTZjZmMxZDc5MmYzMjQ0NTBmMDU4ODcyZTg5IHJlbGVhc2UyMy1tYWludAorMzY0MTYgZmRiOTM3NzUxM2U0MmIyOTk1NTRjZmQ0Mjg4NTRhODUzZGI2MWNmNSBsZWdhY3ktdHJ1bmsKKzM2NDE3IGY2YjQ1ZDFjYjBhMmJmNjdiMTFhYjZmNjYxNTZhNjA3ZmYzZGNkMTggbGVnYWN5LXRydW5rCiszNjQxOCBiNTI3Y2IxYjJiOWViNGFkOTQ2NmM5ODY2NTkyN2U1MGY5NmJmMGEyIGxlZ2FjeS10cnVuaworMzY0MTkgMWM1ZWQ4MWZmYTIzNWRiODkwZjI3MTg4YzE5OTgyOTYzZTRjOGNiMyByZWxlYXNlMjMtbWFpbnQKKzM2NDIwIGMxNmIwM2JhMWMyMmJlNDA0M2Y0MDU5YWJkNzEzZGZkMTc2MGNkYmIgcmVsZWFzZTIzLW1haW50CiszNjQyMSA5MGQ1Y2VlN2U2NmU0N2E5NDk4MDZkMmVhYTQ5NzhiOTRhZmJmNTA4IGxlZ2FjeS10cnVuaworMzY0MjIgNTk4YTVjZTYzMzIyZmFlM2FjZTZiNDhlMDE5NzgyNjFhNWFiNTJlNSBsZWdhY3ktdHJ1bmsKKzM2NDIzIDUwNzQ1ZDk5ZmJmMTYwODhkM2QxMmRmYTZmMjc4NzUyNjliNDExMjAgbGVnYWN5LXRydW5rCiszNjQyNCA1ZTFmNTVlYzE3ZDZjNzEwYTIwMzc2ZjM2ODU5YTJmM2Y0YjkyMDFjIGxlZ2FjeS10cnVuaworMzY0MjUgYWI5NzlmZjhiMDJhZWNhNTQ3OThhY2MxNjZhNTljNDE0NThhNTExYiBsZWdhY3ktdHJ1bmsKKzM2NDI2IDc5OWJjZGZmMmNkYzA1NjFiNjI4NjU1MTJmMzgyMjkzYzU4NzFkOWQgbGVnYWN5LXRydW5rCiszNjQyNyAwOGQ5MDQ2MGFiNGQ2MjQ4NzBiYTdhZmFiMGNmMjk0Mzg3ZmJlOGMwIGxlZ2FjeS10cnVuaworMzY0MjggNTdkMjFjNWUwZWI4YWYwYjJiYTM1NjIzMjQ0YzNmNTY0ZTM3OWMwMSBsZWdhY3ktdHJ1bmsKKzM2NDI5IGNjMWY3NGQxOWZjYmI3Y2IxOTE2YThlNDRlNjE1ZDRhN2VjMGI3YjggbGVnYWN5LXRydW5rCiszNjQzMCBjNDMxNmRmMmZlZDQ2ODg1YzIzM2M1ZGQyYzhlYTQxODkzY2ZiZGIyIGxlZ2FjeS10cnVuaworMzY0MzEgNmU5YzE4Mjk1OGY5MTcwZmIyOWViM2U5NzI3NmJlMjI4OWE0OTYzMiByZWxlYXNlMjMtbWFpbnQKKzM2NDMyIDJiMTBlMmI1ZTgxZWYyM2U2YTU3ZjcyZjlkZWZmNTFlZmRlNTA3NWIgbGVnYWN5LXRydW5rCiszNjQzMyA0ZjI0ODNhYmI2MjNhZjY0MDhkODVkZGViYTU2MWI5OTYzYzc2YTcyIGxlZ2FjeS10cnVuaworMzY0MzQgOGIzMjg4ZjYwN2UxZjgyNDA3MGNkNTcwODhiMWEzZWRlNjNlYWJjOSBsZWdhY3ktdHJ1bmsKKzM2NDM1IDU1NDZjN2FlMjRmNzBkN2Y1Y2RkODc3NGNhYjA5NTljOTQwZjMxOTkgbGVnYWN5LXRydW5rCiszNjQzNiAzMWI2NWQ4MzcxYWY4ZDI2YWVmMGUxODQyOTc4NzM3MWY4Y2E3MzE5IGxlZ2FjeS10cnVuaworMzY0MzcgZjA4MWYzYTU2OGZhODg3ZTE1YmZhZGZhZjNhZDU5MmU0MzE1YTRhZSBsZWdhY3ktdHJ1bmsKKzM2NDM4IDA5ZWFlZTcyOTczYzUwZWJlZWM4ZmZhMDgzYmZiZGZiMzY5NGJiMGQgbGVnYWN5LXRydW5rCiszNjQzOSBjNTM4YTc2NDRmZmE2Y2I3OGNlZDNjYjZlMzg0NTA5YjAyNWE4YmUwIGxlZ2FjeS10cnVuaworMzY0NDAgZTZmN2VmNzA3M2M2Nzk2MjBkOTk4ZGJlMDRhNjYxZmFkMzNlYzM2OCBsZWdhY3ktdHJ1bmsKKzM2NDQxIGFmYjQwMzM4M2Y1ZDA3YTJmZDdlYTZmOGU3NTUzODMwOTRjZTQ1NTEgbGVnYWN5LXRydW5rCiszNjQ0MiBmNjAzZTVlOTZhNGY3YzgwOTRjZGVmYWU2NzkzYTNmYzJkYjE2ZTk2IGxlZ2FjeS10cnVuaworMzY0NDMgMmZkNjkyNDA3MjlhYWU1M2Y5ZDM0YzQ4YTc3ZmQwNzFhODZjYmNlMiBsZWdhY3ktdHJ1bmsKKzM2NDQ0IDZhYmE2ZDA3NTg5OWE2MTg3ZDgzZjY3NzQxMzIzZjU0NTM4ZDIxYmQgbGVnYWN5LXRydW5rCiszNjQ0NSAxNDQ2MDk1YTk3MWFiOGEzNTZmNWU2Y2M4ZWJhNjJmYjBiNDE5YmNkIHJlbGVhc2UyMy1tYWludAorMzY0NDYgZjg2YmZjMDNlNzYzNjU0NjY0MmFlYzllMjlkMDY3MzYzYmYwNDI3OCBsZWdhY3ktdHJ1bmsKKzM2NDQ3IDczMDE2YmQwMWE3MTRhZmFjNGNhOTA0M2ZlM2RhYjY4YzBiMTNlZDEgbGVnYWN5LXRydW5rCiszNjQ0OCBkNDJlZmMyYjQ1ZTk1YzY4ZmI0NjEzMWMzMzFlMWYxZDk3NWUzYTI4IGxlZ2FjeS10cnVuaworMzY0NDkgZjlhZDVkMjAyZThlZjQ0MjMxMTc1YWVhMDU3OGZmNzEwYjY1ZWZkNiBsZWdhY3ktdHJ1bmsKKzM2NDUwIDQ1N2ZkNDFjOTYxZDJmZjhhMzE2N2U3N2FlNDQ5OTdiOWQ4ZjIxYmEgbGVnYWN5LXRydW5rCiszNjQ1MSA1MTM5ODkyYWRlNjIxY2Q4YzY3NzYwYWM0ZmNlZTA1MGM1OWNjYmRhIGxlZ2FjeS10cnVuaworMzY0NTIgNjE3M2Q5N2I4MjllNmU0YzEyZDI5NWUwNDE3YTU0YjY4ZGQzZmQ3YSBsZWdhY3ktdHJ1bmsKKzM2NDUzIDA1OWRhZTA2NTg1YmVmYmVhZWUyOTkzYTNjOTlkMzI2MDM1MTQ2MjQgbGVnYWN5LXRydW5rCiszNjQ1NCBjZTMzOTY3YTRhYjBmMzM2MzhlNTExYWE2YmVhYzZkY2YxMjA2OTQ5IGxlZ2FjeS10cnVuaworMzY0NTUgY2YwYzllMTVmNmY0ZDY0ODRmZWQ0YTkxMDlkNzM1MTkyZGRmNzg2ZSByZWxlYXNlMjMtbWFpbnQKKzM2NDU2IGM5ODY5YTE4ZTYyMTMyZDNmOGE1M2YzN2ZiYjE4ZjU5NDMzZjFlMzUgbGVnYWN5LXRydW5rCiszNjQ1NyBhYjE4ZWY4M2Y1YTYyYWM0YTYxZmQxODVjNzkxOWJiZGFjZDc2ZThiIGxlZ2FjeS10cnVuaworMzY0NTggOWI1YzYzODAyYmY5ZTJhYjY4NjQ1YzI1ZmEzNWIzNDQyM2VlMjdiOCBsZWdhY3ktdHJ1bmsKKzM2NDU5IDZmMzZlMDJiMWY2OTdkMGNjMzQ2NmNkMzRlYmZlMTk2ZDcyOTFlYjcgbGVnYWN5LXRydW5rCiszNjQ2MCA5OWFjNTMwZThiM2Y1N2I0MmY4MTVjNDhjN2ZmOGVlMTFhMDA2N2Y5IGxlZ2FjeS10cnVuaworMzY0NjEgZWYyMzk0MDE0ZDI0NWU1MWE0MzIzODNlZmYwMjQ3YjkxYzZlYzVhNyBsZWdhY3ktdHJ1bmsKKzM2NDYyIDJkYmY1OTZlMDUyNGU5NTkxMDBmMzNhODJhYWY5YWM4ZjMzMmVmMTEgbGVnYWN5LXRydW5rCiszNjQ2MyBmZGU0MzI3Y2Q0NzI0ZDRhMDg2OTlkZDYwNmVkODg3ZTdkNTE5ZTk3IGppbS1tb2R1bGF0b3IKKzM2NDY0IGRhMTgyMTBlMzExYzJjMjBlMmMyNDU4MGVlZjhjZTMxZDk2YzAyODggbGVnYWN5LXRydW5rCiszNjQ2NSBkOGYzMTdjYTgwYmQzMGNiZjZjN2ZkMmM2NjAzYzZmYzBkNzZjZDcxIHJlbGVhc2UyMy1tYWludAorMzY0NjYgZGI5OTQ4NDljZGYzZmM0MTM2ZjE1NmZhNDYxNjA5NDk1MjZjNzgxZiBsZWdhY3ktdHJ1bmsKKzM2NDY3IGNmMGJhZWZlOGQ0MDEzMGEzMjg3OGU2Y2ViOWFjZjYyZDU5MzEzNDcgbGVnYWN5LXRydW5rCiszNjQ2OCBmYmI5MDFkNjI5N2I1NWRjM2UzZTc5Mzc2MzJkNDNlZmQyOWRlZTcwIGxlZ2FjeS10cnVuaworMzY0NjkgZmY1OWFkNTg1NjhlMWY1Y2EzNTVjN2E5ZDNkY2Y0MWRkZmNkY2QzNSBsZWdhY3ktdHJ1bmsKKzM2NDcwIGU4OTkwNjBiMWYwNTFlZjE0YmFkNjA5OTk2MjFjZTFiMWFlYjdmYzggbGVnYWN5LXRydW5rCiszNjQ3MSBkYzMyZTBhOGEwZWRiMTVmMmNmYzI4MzViNjUwMjk4ODAyNWI3M2JkIHJlbGVhc2UyMy1tYWludAorMzY0NzIgOWJjMmVlYzE0NzhiNmJhNTVmMGIwN2U2ODkxMmU4NWZlZTUzMjgxMCBsZWdhY3ktdHJ1bmsKKzM2NDczIDljMzQ4NTI2YTY5OTQwN2JjZjMxMTM0NTU4YTgyOTFhYWU4YTNhMzQgbGVnYWN5LXRydW5rCiszNjQ3NCA2YzFjNTk1N2ZlZDVmOWUwZmRjOTgyYjY3MzVmZDAyYzkxZjFlNWZmIHJlbGVhc2UyMy1tYWludAorMzY0NzUgM2MyZDllN2FjNWExZjk5Zjg4Y2NhMGM1YjgyODU1YTFhOGZhNmFjZCBsZWdhY3ktdHJ1bmsKKzM2NDc2IDdiZDA0YTRkMjhiOTMxZjE4OWE2Mzk0ZWRkOTBjNTg1YjRiYjQzNDUgbGVnYWN5LXRydW5rCiszNjQ3NyA5Mjk0NDRjYTIyZDhmNmRmZWM5ZWRlYTM5OWM4ZTdjZWZlZTJjYmNhIHJlbGVhc2UyMy1tYWludAorMzY0NzggZjcyNWExOTEwZDBkMDc3MzNiN2Q1MTZiMzU1Yzc5ZmRkYTc1ODlmMyBsZWdhY3ktdHJ1bmsKKzM2NDc5IDQ2M2JmNWViZjhhMzNhYjQzMzNmNDRkOTc2Njc3ZjY5M2M0YTcxMmYgcmVsZWFzZTIzLW1haW50CiszNjQ4MCAzOTE5Mzc1NzEwNjVhZTEyNjRhYTVhNDhjYmY4Nzk2Mzg1YzcyZDk4IGxlZ2FjeS10cnVuaworMzY0ODEgYmUxNDI3Y2IwNDA2ZjYyOWY3M2ExNDRlMTI0MzFiOGUxY2ExODc1MyBsZWdhY3ktdHJ1bmsKKzM2NDgyIDNjY2EyOGFiMzg1NDQyMTU4YjBjOTJkZmY1YTJmYWFmM2UyYzU1YjggcmVsZWFzZTIzLW1haW50CiszNjQ4MyBjYTJhYTQzYmEzOGI3YWVmMjM3MzE0ZWE2ZWUyY2YxMTVhNTk5MTE4IHJlbGVhc2UyMy1tYWludAorMzY0ODQgNTg4NDNmMTg2ZTgwZmRlZmU0OTFhMzQ5YWM5NWY0N2M0YjdlZGI3YyByZWxlYXNlMjMtbWFpbnQKKzM2NDg1IGMxMzFjNzg4YTA2ZmFjODE4NTMzZGQ3YmFjMzY4MWViZWZjZDI3OGMgcmVsZWFzZTIzLW1haW50CiszNjQ4NiBlNGQ5ZDg0MGNlNmU1NTljYzNlZTVjM2Y1Y2UxY2Y1ZGU4ZmVkNjA4IGxlZ2FjeS10cnVuaworMzY0ODcgNmM1ZjAxZWMyZjc1YjZlMTQ3OWY0NTE1MWE0YjExNGQ4YmIzZGRiOCBsZWdhY3ktdHJ1bmsKKzM2NDg4IDhiZDY3YmFkMTQzY2RjNTYyZGU2MGQ5Njg1ZTk3YzEzMWY1Nzc5Y2MgcmVsZWFzZTIzLW1haW50CiszNjQ4OSAzZWI2ZDI1MzYwYTM3YTAyMjliOWZkNTAxMDFjMTQ0ZWY2NDAwNzE1IGxlZ2FjeS10cnVuaworMzY0OTAgYzEzZDkxMWFlMDViYzBmMzY1YTk3MDAzMTg5NjI4MGZlOGNjNDZjMCBsZWdhY3ktdHJ1bmsKKzM2NDkxIDk0MWMyMzljYjZkMjk2OGMwMzIwOGI3ZjA0ODA3NTlkMWM4NTI0YTQgbGVnYWN5LXRydW5rCiszNjQ5MiA1OTQ5OTZjYWZmMTBkMTNiNjZkMTI3MmRiZTg0MTZiYThkNTNjYzdhIGxlZ2FjeS10cnVuaworMzY0OTMgMjcyYWI1YTU0YjllYmM5YzYxZWQxYTcyZmM4NTE1OTYwNTQxYzgyZCBsZWdhY3ktdHJ1bmsKKzM2NDk0IGExYTk3NzZmYWI1M2VhMmY2NDAyNGVjOTYxMGMwNWI0ZjkwYmRmYWQgbGVnYWN5LXRydW5rCiszNjQ5NSA1MmJlYWZkOTM2YzgwZTU4ZTUzM2ZlNzZiMzQ0NjNmNThhYmEwNTNiIGxlZ2FjeS10cnVuaworMzY0OTYgZDJlNjZlYWE1Zjc0ZTgxZTc4ODljOTExYmJkY2U4YjlmNDQxMmVjNCBsZWdhY3ktdHJ1bmsKKzM2NDk3IDk3NzY4ZDg3Mzk0YTQ0MTA3MjU3M2RjMmMzNTc2Y2ZiOGQ2NzA3MDQgbGVnYWN5LXRydW5rCiszNjQ5OCAzNDc5NjEwZmIyODhkOTk5MmJjODRiODQ4YmNkZDhiN2YwMjU2NDhmIGxlZ2FjeS10cnVuaworMzY0OTkgOTQ5NDczZmE0ODI4NWU1Yzg2YmYyYmM0MmE3OWI3M2Q3OGIyMWE2NSBsZWdhY3ktdHJ1bmsKKzM2NTAwIDg4ZjU0MDU3NjFhZjc2MzRjNzE0MTE0YzE1Y2FiZWRkYzUzNWZlZDYgbGVnYWN5LXRydW5rCiszNjUwMSA2ODdkMmVjZmE2NDg1ZThiNzU4YjJmYTE5ZWQ1MTQ5MzAzYmFiNjk5IGxlZ2FjeS10cnVuaworMzY1MDIgY2FkYTJlOWI2ODVjODllOWI4NzBmNjg3ZWIxOWE2NWY3MDEzZjE4OCBsZWdhY3ktdHJ1bmsKKzM2NTAzIDU1ODFkNjhiM2FlOWU3MjM4NGRmNTFhZmY2OTI1MDIyZjFkNDAyN2QgbGVnYWN5LXRydW5rCiszNjUwNCBkM2Q0MjY0ODNkNzEwNDNiM2I1OTdmY2E1ZjA3ODUwZmZlNjFhOWY1IGxlZ2FjeS10cnVuaworMzY1MDUgMTA0YTdmYzA2YmRmYTJhNGRlZDRkNWU3OTkwZTI4ZDgwMGY4OGQxMiBsZWdhY3ktdHJ1bmsKKzM2NTA2IGJjNGRkMzFjNzNmZGY0Zjg1Njg1ZTE0OWRkYzY4NmVmZTgwZWU5NTQgbGVnYWN5LXRydW5rCiszNjUwNyA4ZmNmMjA1MmQxNmUyMDYyMjkyYTg3ZDBjOGE5NmM1Njc2M2E3OWVjIGxlZ2FjeS10cnVuaworMzY1MDggZDY0ZGNmYjQ5NWIyYjcxNWZkZDE2Y2MzZmRlYTIwNjU4Yzc2ZDBiNyBsZWdhY3ktdHJ1bmsKKzM2NTA5IDM1ZDQwZmY2OWViNjI2NGU5YjkxZTg2MjA2MzQ3YzNmYmI2Mjk0Y2YgbGVnYWN5LXRydW5rCiszNjUxMCA5YTNiNDIxOWJjYmVkZWJhNDljNTFiZmY3OTljZjliYmEwNTM2NmIwIGxlZ2FjeS10cnVuaworMzY1MTEgZmFlNDYwNzk0ZDNkMzlmNjBhOTQwY2Q5NzhlNzVjZWU1ZGQ3YjI4YSBsZWdhY3ktdHJ1bmsKKzM2NTEyIDEzOTlkYzYxNjcyMGY0YjAzYjNjZGMyMmFjZDYxOTNmYmNlYTNhMDUgcmVsZWFzZTIzLW1haW50CiszNjUxMyA1NzdhOWU0YzgyZmI3MWUyNmJlYzllOTIyYTQ4OGYzY2JmNzk1OWNhIGxlZ2FjeS10cnVuaworMzY1MTQgMmJmODY5ZDMxZjBjZTYxNWU3YzMzODVjYzA4M2Q2MTVmNGFlMDIzNiBsZWdhY3ktdHJ1bmsKKzM2NTE1IDVmYjc4YTJkOTRmMGFkZTBkOWE1MmFhNTczYTJkY2YzY2FmZjY0YjIgbGVnYWN5LXRydW5rCiszNjUxNiAyMTFkYjY3Y2NkMDllZDk0MzRlN2YwOTJlZmYyYTZkNzc3ZTk0YzVkIHJlbGVhc2UyMy1tYWludAorMzY1MTcgNzgwYTMzNzg3NDU4ZWNlMjEzYjM2NjdjYjg3ZDgxMDllZWExOTZhOSBsZWdhY3ktdHJ1bmsKKzM2NTE4IDNjMzgyZDkwZjMwMmQzZTU2MjhmZjc2MzFkZjdmYjljNGViNTAzYmIgbGVnYWN5LXRydW5rCiszNjUxOSBmZjI2NzE0YmY4NmRjNGMyMmI0ZTE1OGMxNjczNWI2NjE0Yzk4ODBmIGxlZ2FjeS10cnVuaworMzY1MjAgYmU2ZjJlMWE3OGI3NjNjMjZiYjEyZDM1Yjk3M2M2OTYyYTU0OTM2NyBsZWdhY3ktdHJ1bmsKKzM2NTIxIDQ5YmFhZDdiMDMyZTBiMGM0ZGFiZmRmYWU0NDA2NGFiNDRhNjMxZTggbGVnYWN5LXRydW5rCiszNjUyMiA3NzQyZjg1YTM3MjM4ZTJjNWViMGJjMDhkMmNjNDMwZWMxYjY1MTY5IGxlZ2FjeS10cnVuaworMzY1MjMgZGMyZmU3N2RkMTY3ZWRjODY1MWY1MzAyNGEwNTI2N2FmNzhjNDE4ZiBsZWdhY3ktdHJ1bmsKKzM2NTI0IDA3MjlkMWRiNTExODM4MGRkMDcwMzIwOGMyNmU2OThkZjRmZmM0ZGEgbGVnYWN5LXRydW5rCiszNjUyNSBlZDM2NjIxYjEyNmExZTc5ODU0NGQzZDJhYTE1MTEwYjRkZmQwZWU0IGxlZ2FjeS10cnVuaworMzY1MjYgZGY0ZTZjYzY2NjFkMDQ1ODg5OTQ5YzcwZWU1N2M3MGM0M2QzZWE1NyByZWxlYXNlMjMtbWFpbnQKKzM2NTI3IDRiZTI4MDkzZTQ4MGVhYzE1YWMzNDk3NDI3Yjk3NzJlM2E5YTU5MGIgcmVsZWFzZTIzLW1haW50CiszNjUyOCBhYjBiMmE1ODg4ZjllNzBkMTFmNmI3YzlmMGM3NTdiNTk1ODdjNzE3IGxlZ2FjeS10cnVuaworMzY1MjkgNTA2OWY1YmQ2NmYzZjZkNmI3MGZkMTEzNDYxOWQ2ZjBiNjE0ZDFkYSByZWxlYXNlMjMtbWFpbnQKKzM2NTMwIGQxZWY4NmY4Nzg1ZjkzZGY0OGNkYTA2ZmQ0NjExYmJhOGYzZmFlYzAgcmVsZWFzZTIzLW1haW50CiszNjUzMSBmMDg1Mjk4NzlkYjFhZDNkNWNhNDU3ZWZkYzZiYzk0MTgwN2FkOTRjIGxlZ2FjeS10cnVuaworMzY1MzIgYWJlMDRlNzdhNGIwZmQ3YTdlODc4NmZkMjQyZjdkM2YzM2RjNjhlZSBsZWdhY3ktdHJ1bmsKKzM2NTMzIDg0NmFjZTU3Mzg5YzkyYTlkZDdlNGY4ODA2ZDEzMWViYTAzMWEyMzEgbGVnYWN5LXRydW5rCiszNjUzNCBkZjg4ZmFkYmEyZjU2Y2JmZTQ0MTkyMmU3ODk0OTMzYzE5Y2UwZGZlIGxlZ2FjeS10cnVuaworMzY1MzUgYzdjOWI2OGRkZGEyOWM1NjFkYzgyODM3MDdmYjlhY2MyMjcyMDZiYSBsZWdhY3ktdHJ1bmsKKzM2NTM2IDI1NWFlMjNjNzhmYjYxOTNiZmM1ZjUzOGM2ZjZjMjM3OTc5YmUzZTggbGVnYWN5LXRydW5rCiszNjUzNyAzOGFkOWM2ZTcxN2M4YjBiOGJjOTcyZjYxZjMzODJmMmEwODc1MzdhIGxlZ2FjeS10cnVuaworMzY1MzggMTc0MDY1NDNmMTViMjdlOGFiY2I5OGUzZjM3MDlhZmJlMGU2YzgzYSBsZWdhY3ktdHJ1bmsKKzM2NTM5IDViMGM4N2RlNmQwNTA5NmVkNDE4MTA0YzZiN2M2ZGM3NzU0NjBlMTMgbGVnYWN5LXRydW5rCiszNjU0MCBmNzljZjEzYTlhN2QxMGE4MzJhYmUwMjI2NWQ3ZTExNTU1ZGNjNGMyIGxlZ2FjeS10cnVuaworMzY1NDEgMGU4OTBhYzFjMGYyNjVmNDQ3ZjI3ZmYzN2ZjZjAzMmY4MzhiYmU5NiBsZWdhY3ktdHJ1bmsKKzM2NTQyIDFiZDMzODNiYWQ5ODUwMzY0ODAzNjViZWQzMzkxZmY5NjY3MjQ3NDAgbGVnYWN5LXRydW5rCiszNjU0MyAxMDk1NTBmNWE4Mjk2MzBhOGVmZjIxMDgyYzBlMGViZjBmMDgyZTNhIGxlZ2FjeS10cnVuaworMzY1NDQgY2JiMjVmZGE5NWE1ODBmMmM2N2Y0YWE5YmQ0NDA3ODg4MmU2YjQ2YyBsZWdhY3ktdHJ1bmsKKzM2NTQ1IGQwOWRhNzE0MTNjYTA0ZmNiNmNmMzNmYWNmYTIzYzVhNDBhZmViZGUgbGVnYWN5LXRydW5rCiszNjU0NiA0ZDQzYjBhYmMyMmE4YjYxZmUyYWM1MGNlYWU5OTZmY2U3YTYzNDkyIGxlZ2FjeS10cnVuaworMzY1NDcgZWZjYTU1YmJiYTBhYjEyYTA0Zjk3NmQ0Njk2MzliNTA1MDJjMzcyZiBsZWdhY3ktdHJ1bmsKKzM2NTQ4IDZhY2Q3MDcwZWQ2NmY3YWQ2NTMxMGRiMDFhMmY4Y2JhYThmN2MzYTYgbGVnYWN5LXRydW5rCiszNjU0OSA3NTU5YzdlYjQ3ODAyNzQzNDk4NjI2OTY4YzYzYjg0NDFhNTYwYzE1IGxlZ2FjeS10cnVuaworMzY1NTAgZTRjYzc4ODg0ZmM0MjZjMjZkMjE5MmIyMTY1NTlmNDVhMjY5ZTA1OSBsZWdhY3ktdHJ1bmsKKzM2NTUxIDY5ZGFkYzJjYTE0ZGZjYmY2MmFlMWExNmJlMjkwM2ZiMDM4MDVjMmMgbGVnYWN5LXRydW5rCiszNjU1MiA4MTc4NGY2NjY3ODliOTAyNGY4NzZlNTFjYjk5ZmRkODZjNWM1NTdkIGxlZ2FjeS10cnVuaworMzY1NTMgZTEzNWU4MmNmNmU0ODkxNmY2YjlkNDY1Y2E5Y2E1N2JmZmZhZmUwOCBsZWdhY3ktdHJ1bmsKKzM2NTU0IDA3YjQ4ZWFmMmIwMWViYzQ4YzRmYTQwN2I2YjYzNzFlODUzM2M2YzggbGVnYWN5LXRydW5rCiszNjU1NSBiZWJjYjc5ZjM3Y2JjOTQ5ODM5NzY0MTNkMDQ0OTJmYWNhODczNzMxIGxlZ2FjeS10cnVuaworMzY1NTYgZGMzZjA0YWZlZjc1NzBiNjgzMWUwYWM0NTI0NDQ0M2U1MmM5NjI0OCBsZWdhY3ktdHJ1bmsKKzM2NTU3IDk3N2YyNjdiMDBmOTNlYzYyOTE5ZDc2YTUxM2IzZjEzM2M0MTkwNTUgbGVnYWN5LXRydW5rCiszNjU1OCBiMWQxNDJkNzE0ODI4OTk4NzA0NjA2ZGFmZmRmMTY1YzdkNDdlOTBkIGxlZ2FjeS10cnVuaworMzY1NTkgMmJjNjZmMWRmN2NjN2M4MjNmZGEzZWU2NGIyY2NlMjBlYTc3ZTg5YSBsZWdhY3ktdHJ1bmsKKzM2NTYwIGMzYTA5NmJmYmQ2YmU5Mzk1OTkwZTc5MDhjNWY4ODdjMzUzN2E4NjcgbGVnYWN5LXRydW5rCiszNjU2MSAyODI5MjdmN2JkZTI0MmRhN2NjMzk1OWEzM2ZlOGZiNTY0YTgwMzNlIGxlZ2FjeS10cnVuaworMzY1NjIgOGJkZDc5NGE0MTk3ZTg5NzExMzYxMTFiYTFlYzFiOTNmY2E1MTRmOSBsZWdhY3ktdHJ1bmsKKzM2NTYzIGMxYmQxYzhlNjRiNDU3NDg1OWM5MWUzYjM3Zjk3MzhiZDc2N2Y3ZDggbGVnYWN5LXRydW5rCiszNjU2NCBiNmYxMjUyYjY4MWM1MWNjMDgzYzRmZjczNjlkMDQ3NWE3NTYwODIwIGxlZ2FjeS10cnVuaworMzY1NjUgZjk3MDk5ZjlmZjFjMzFmODQ5ZmE3YTVkZjU5MTI3MzYwODI5NDIyYyBsZWdhY3ktdHJ1bmsKKzM2NTY2IDMzNzdhNzIzNzNmYmY4NWQ1NjU4Yzk2NmZjMDYyMDc1MTYwZjE0MDYgbGVnYWN5LXRydW5rCiszNjU2NyA0ZTA3ZWFjYjFiZGZkOGQ3NTRhMzg1MTA4OThiY2Q3ZmM4MDMzZGExIGxlZ2FjeS10cnVuaworMzY1NjggZDE0MzZjMjhkY2EzMmVlMmU2Nzc3MzUyMTllZWE0MTQ2NmZhYWJhYiBsZWdhY3ktdHJ1bmsKKzM2NTY5IGRiMWEyN2I2ZDc3NTBlYzI3NmI5NzNiZDFkOWNkOWI2ODA2NDM1YzcgbGVnYWN5LXRydW5rCiszNjU3MCBjMTgyNGQ2OGQxMGVhYzQzYzk4M2MxOWY4MTdmYmMxMTkxNmY1NDMwIGxlZ2FjeS10cnVuaworMzY1NzEgZTQ1NzU1MTllYzI2MjNhMGZkNTU5Mzk3N2I5ZmUxYzEyZGMzNjE2YiBsZWdhY3ktdHJ1bmsKKzM2NTcyIDA1Y2EyMjMyZWZjYmRiZDM5Njg5OWM2Zjg5NzM1OTE4ZGViNmFkNWEgcmVsZWFzZTIzLW1haW50CiszNjU3MyBiNzk1MWUxZjVkZGYyOWIwYjQ0MDMwNDNhNDM1OThmZjYxNjEwMTMyIGxlZ2FjeS10cnVuaworMzY1NzQgNWQ5ZjcyZDA4NDNlZWE5ZDhlY2UzY2JkYmNlN2I2ZTEwMGU0M2ZjMyBsZWdhY3ktdHJ1bmsKKzM2NTc1IDk1ZWI2ZTE4YTU0MjczZDM1Y2Y4OTY5Y2IzYWZhZDU0NjQzZWIyMzcgbGVnYWN5LXRydW5rCiszNjU3NiBkYmQzYTA0ZWIwYzY0ODk1ODczNmY0MDg5NmEzNzI2MTAyNWEzMzgwIGxlZ2FjeS10cnVuaworMzY1NzcgYjU0NTliZjQ4MjYyNGJhMWVmMmQ1NGI4YmNmYzJmMjNmMjM2Y2I1YyBsZWdhY3ktdHJ1bmsKKzM2NTc4IDkzOGRjMzJkZGJjNDFmMTQ1OGQyZDZiNzQ1YzM2NjBmNjFjZjE2NDUgbGVnYWN5LXRydW5rCiszNjU3OSAyNTc1NjNkY2I0NDIzNDRmYWFmOTg3Y2M4MjNjNGFiOWU0ZTgwNzIyIGxlZ2FjeS10cnVuaworMzY1ODAgZGIyNmIzZGJlODAyN2NjOWIwNTBlYzM0YzZjYzhhNWUxNzhiNTNlMSBsZWdhY3ktdHJ1bmsKKzM2NTgxIDI2Y2IwNTg5MDdmMjFiNzgxNjRhOWIyMjk0MGJlZDJiNzZhNThkOTggbGVnYWN5LXRydW5rCiszNjU4MiA4NTllYTg2MTJlYjBkYzUyOGI0YTE0ZDE3ZjBiMjNmMGIzZGMyOTM3IGxlZ2FjeS10cnVuaworMzY1ODMgZDE3NzdmNTE5MjNiYjYxODE1NDBhYzFmMWU2YjcyMjljNWQ3OWYzNSBsZWdhY3ktdHJ1bmsKKzM2NTg0IGRjYzVjMmQ1OGYzMjVmZmJjODExYmYyMDdhMjE3YTM1YzVmN2FhOGYgcmVsZWFzZTIzLW1haW50CiszNjU4NSA2MWJlOTA0YTFkNGUzNTUzZDdhMmQ3MWQyOTA1YjI5M2JjNWY3M2IyIGxlZ2FjeS10cnVuaworMzY1ODYgNzZhZDgxNGJjNjdjOTRlZWZmYjk3ODA2ZTk1M2Y4YWExNjBkMDFhOCBsZWdhY3ktdHJ1bmsKKzM2NTg3IDhhZDVhMTYyMDA5MmU0ZDBlZTYxNTQzZWYzMDU4ZjdlNDdjMTE1YTIgbGVnYWN5LXRydW5rCiszNjU4OCBlY2IwYzk3ZjFlNDI2MGRhYTcyN2E3MTFmM2ZmNGNkMjhlOTE2MmUwIGxlZ2FjeS10cnVuaworMzY1ODkgNTBlY2UzZDRmZjM3MjI4NzhiMjA2ZTUyM2ExMmRhNTM3ODlhMjE3NSBsZWdhY3ktdHJ1bmsKKzM2NTkwIGQxNTUxN2YyYWJlOGJjZjI4YTU5MDc0YmE1MzljY2JmMDU1YzI3Y2IgbGVnYWN5LXRydW5rCiszNjU5MSBhOTFlN2E0NWYxNDI0MWY2OTZlZjkxNTA0YTBmZmFlNWU4ZTllYmJlIGxlZ2FjeS10cnVuaworMzY1OTIgZmZhOGFiMDA4MWYyMTNjNDk1NzQ3OGYxYjAwNDBiODIxMTM5NjAyNCBsZWdhY3ktdHJ1bmsKKzM2NTkzIDk4M2E5MWI1MGY2ZTc4NzUwMjUyMDViNjBhZDU0Mjk0MzkyMzAxMzIgbGVnYWN5LXRydW5rCiszNjU5NCBhM2IxZDZjOTllNDYyMWJlNGY3ZDQ5NDc0MTNiMmRmY2NiNTVlNjgyIGxlZ2FjeS10cnVuaworMzY1OTUgNjJmODQzZmNiODIzNzk3YmNjOWE1OWFhMWNmNjNmNGY4ZWQ3OTczZSBsZWdhY3ktdHJ1bmsKKzM2NTk2IDJlYzQ1MTIzMGI4ZWJjYjMyNjU2NWFhOTI0ZThmZTJlN2VjNzBlYTkgbGVnYWN5LXRydW5rCiszNjU5NyBiMzAxZTVkZWU5MzhjMjM4YTAxMGQ4MjQyYjFiZWY2Y2RkYjUyNzkzIGxlZ2FjeS10cnVuaworMzY1OTggOGE5MWNkN2Q3ZTgyNTRkZDVjMWQyNzU1MmE3MDQ0NTAyOTQwMjcxYyBsZWdhY3ktdHJ1bmsKKzM2NTk5IDgyNjA2OWI3MjVkYjI2OWVhMWNkYzQ0ZjRhNjlhYTczM2IyNTRhZjUgbGVnYWN5LXRydW5rCiszNjYwMCA2ODc1Y2YwODgyZTAxMjNjYjY0NjJhYjdiZTBkY2QzMTQ3MDRkZGYyIHJlbGVhc2UyMy1tYWludAorMzY2MDEgMTNkMjAzMjI3ODdkNWEzMmFiMDE3NzE4YzNlZjNmMWJiMzhhNGI1OSBsZWdhY3ktdHJ1bmsKKzM2NjAyIDdhZjY5NWJjNTQ4MDkyNjVhYTI4YzgxNGM1MzM1NTBjYjJiOGM1MjkgbGVnYWN5LXRydW5rCiszNjYwMyAzMTkzOGE0NjNmMjg3ZThmNjc0NjQ0NmRlYmIzZjJkN2NhYjg2YTg1IHJlbGVhc2UyMy1tYWludAorMzY2MDQgNTE3ZTAwYWYxM2ExYTc4MzExNTJkMTkxNTIwNmQ1ZjY4MDQyMGNjMiByZWxlYXNlMjMtbWFpbnQKKzM2NjA1IGNhYWVmMzAyZjFlMzNjNTk0MzNmOThmODQyZDYyODBmYWI5MGQxZDYgbGVnYWN5LXRydW5rCiszNjYwNiA3OTE3ZmQyYzQyOTgzODFmMmUyNDExMzUxNTk1NDdmNTkyZDAyZmM4IGxlZ2FjeS10cnVuaworMzY2MDcgZDZlNzNlNTI4ODBlNDc3OTdlY2NhN2ZlZDMzYzhiZDIyNWI0MzJhMyBsZWdhY3ktdHJ1bmsKKzM2NjA4IGU2Yjg0N2IwNzU1M2YzY2VlNjY4YWNhMzM2Y2Y2YTQzZWEzNjk2MDEgbGVnYWN5LXRydW5rCiszNjYwOSAwMzRiM2I5MmM1ZTAzMTM5MDRjMDZhMWUzZmI3NzI1MmJkYmY1ZGRhIHJlbGVhc2UyMy1tYWludAorMzY2MTAgNGY0Yjc5NTYyODdjYWI2ODkzYTY3YzQ5YzQxNTA1MjIwNzY5YWI2YyBsZWdhY3ktdHJ1bmsKKzM2NjExIDgwN2ZiZThkMzU4NDAxM2U2NTA3MzAyYmVkOWQ4Nzg3YzM0ODhjNzEgcmVsZWFzZTIzLW1haW50CiszNjYxMiAwMDg5MjQyMGUwZGY1ZTA4NjVjZWRhNzYwZjNhOWIzN2NlM2IzN2ZmIGxlZ2FjeS10cnVuaworMzY2MTMgNmRmOTMyMmQ2YWI4MjM3ODlmOGIzMWVjN2U2MjU0ZGNkMzQ3Y2UzNSBsZWdhY3ktdHJ1bmsKKzM2NjE0IGE5NDBiNmMwN2U1Nzc1ZWJhM2JlZDc0MTlmOWEwNmExMDZkMTVjYjcgbGVnYWN5LXRydW5rCiszNjYxNSA1NWY3M2M4MmUzMDRiYjg5ZGM4ZTY0OTFmZTBmNTg0N2QwZDc2NzQ2IHJlbGVhc2UyMy1tYWludAorMzY2MTYgNzMwNDUxNDNiZTYzZThjZmZiYzZmZTBkZDdjOWQxNTE1NTlkOWYxNyBsZWdhY3ktdHJ1bmsKKzM2NjE3IDFlMjE4N2Y1MDYzMTcxNTdjMzYwOTNmMzcxZGVkZmY1MjgyYzhlOTcgbGVnYWN5LXRydW5rCiszNjYxOCAwZjljMzliM2U1ZjAyZjQ4NTU0ZjkyN2FkNGM1YWYxMDlkZGU3MDQ3IGxlZ2FjeS10cnVuaworMzY2MTkgNDZlMDQzMWM5NzAxY2FjMGJhMzBmZjhkYTE5ZGFkNDE2ODU4MjE4NSBsZWdhY3ktdHJ1bmsKKzM2NjIwIGZhNDljMWUyZDJjMTA3MGNlOTY0YzM0Yjk4ZjVmNDI5NTI4MjBkODAgbGVnYWN5LXRydW5rCiszNjYyMSBlYTU0ZmRiODY1MzBlY2U1NGQ0YWQ5NDMxMTNhNmIzYjRhOTUwNTQ0IGxlZ2FjeS10cnVuaworMzY2MjIgOTI2N2FlYjcyOTg1ZDA1MjRiZWJhZWQ5ZGNkMTI1MjYyZmMyNTNkYSBsZWdhY3ktdHJ1bmsKKzM2NjIzIGVhYThhMzdlMWU4NTBjZTY2NmZiNGI0NzU1YmMzMmY2YmUyYWI1OTEgbGVnYWN5LXRydW5rCiszNjYyNCBmZTQxNDViYTM5YmZmYmE2MTc4MjM3YWY1YjU4NDZmMjY4OTA2NDg5IHJlbGVhc2UyMy1tYWludAorMzY2MjUgMTZkZTRmOTBlZjQ0NjhjYjZmOWU3MzlmM2I3NzYxZDUyYTRjOTYzMSBsZWdhY3ktdHJ1bmsKKzM2NjI2IGQzMGQ1MWIyZWZlMDEyYThmZDVjMTE4NmQ4NzE5MmNhOWNmZjQ1MTIgbGVnYWN5LXRydW5rCiszNjYyNyBkYWMyODEzNmQ1OWIwYWM1N2I5NjFhNDc1ZjEzOGIzODIwMjczN2FhIGxlZ2FjeS10cnVuaworMzY2MjggY2RhZDYyNTMzMDk0ZjBjYTFiNzQ1N2I0Nzc4NGRlNDdjNTVhODI1NiBsZWdhY3ktdHJ1bmsKKzM2NjI5IGI4YmM1OTU3OGE0NzU2MzA4NzljNWQ5MDgxMDIxNWQxNWMwZWQ3ZWMgbGVnYWN5LXRydW5rCiszNjYzMCAzZTA0MjMzODUyZDRmYWRmZGMwMDgyNDAxYjI4OTVmOWIxNmRmYjFmIGxlZ2FjeS10cnVuaworMzY2MzEgNGE1MWNkY2Y4NjE1MzM2NjhiMGVmY2JiODlmNjIzN2Y4OTM4MDA5MyBsZWdhY3ktdHJ1bmsKKzM2NjMyIGVkYmFmNjEwMjI3YjlmMzE2MjQ1ZTlmZDJkYzRmNWM1OWI1YzQ2N2IgbGVnYWN5LXRydW5rCiszNjYzMyBiMjg3OWE3MmIzNDY2MWU5MGIyMjczZjkwMzE2OTY5NmJlYWFmOTU2IGxlZ2FjeS10cnVuaworMzY2MzQgNjIzYWUxMjkzMGVhMTZhZDY5NDhjMWQzODU3Y2RkYjA0MmVjMDJiNyBsZWdhY3ktdHJ1bmsKKzM2NjM1IDZlNzlkZWE4NTE4OWFmYTk0NGY3MjI1NTllZjcxMGJkYTVhMjgzODEgbGVnYWN5LXRydW5rCiszNjYzNiBkNWM5N2Q2OWRmYzdjMTcxYzVmMDI5OGM3MDgxYzk4MzIyODJmODg4IGxlZ2FjeS10cnVuaworMzY2MzcgOTU4MmZhMmU1ZTBkYTJhMDZmZTE4MGU4MDM1YTRmODlhYzM2NmEzMSBsZWdhY3ktdHJ1bmsKKzM2NjM4IGY2MTZkNjUzNTk5MzMwNjNjOTRjZDg0OTdkMzVlYTFkZjUzMDg0N2IgcmVsZWFzZTIzLW1haW50CiszNjYzOSBlZTdiODQxMDExNjA0ZjQ5OWYxNDgwNjMyYTE0ODA0OWU1ZjM0MjkzIGxlZ2FjeS10cnVuaworMzY2NDAgZDJhZGJhNDc4MWQ1YjA3OThhZTY4NDFlYmQyMjRmZDIyZGY3YzhlZCByZWxlYXNlMjMtbWFpbnQKKzM2NjQxIGJmNjg2ZWY5MmNiMGJkMjQyZTYyN2I4YzM0Y2Q0N2NhN2Y5MzZlN2MgbGVnYWN5LXRydW5rCiszNjY0MiBiZjZhMjA2OTA4MGM2YjFmNmNiN2UyNjNjYjc5NjMxMTE4ODNmZGIyIGxlZ2FjeS10cnVuaworMzY2NDMgZDFjY2QyZjQ1ZGEzNDE3NWM4OWZlZmQxYjZiODQ2Yzg2MDc4MWFjYSByZWxlYXNlMjMtbWFpbnQKKzM2NjQ0IDgwYWNhYjljM2MxNzYxNzdlOGNkNTVlODEzNzE5Nzk0ODBjMTAwZTIgcmVsZWFzZTIzLW1haW50CiszNjY0NSBiMzU4ZDJmNDRhNzQwMmRjNDcwOWI0NDllMzI5ZTJlMGIwZTYwZWQ4IHJlbGVhc2UyMy1tYWludAorMzY2NDYgMzgzNWRmZjJlZmRiNWFkMDJiODllYTRkYjhjM2JkYzQwODM4MmNkOSBsZWdhY3ktdHJ1bmsKKzM2NjQ3IGZiYjJkMzRmNzVhM2JmNzAxMjVmMjFkNzUzZTE3OWIwMjZmMDFiMDQgcmVsZWFzZTIzLW1haW50CiszNjY0OCA3MTYzM2QzN2U5OGU5MmNmOTY1OWJhYTkwMThiZmViYTQ2ODViOGQwIHJlbGVhc2UyMy1tYWludAorMzY2NDkgYzZjNThiNjFmNmI1YThmMDM0YTYwMTFkYzZlOTBhOTY1MjJkOTI3ZiBsZWdhY3ktdHJ1bmsKKzM2NjUwIGQ5NTY4MjA4OTUwNTBiNDk1OWNhMjhkZTIyMDBmOTAyOGY1ZTUyMDQgbGVnYWN5LXRydW5rCiszNjY1MSAzN2E3NWIyYjRjMjk0MDcxNzU5NjY4OWIxMDlkZTQzMzRiMjI1NTc1IGxlZ2FjeS10cnVuaworMzY2NTIgMDdhNTdkODliMWUwZGZlOGM5ZTczYmZjMTFjNzVhZjE5ZjY2OWQxNiBsZWdhY3ktdHJ1bmsKKzM2NjUzIGNiZDRhZTc0ODkwZDNjMTA0ZWQ2YjIzNWNmYzE3MWEwNjY4NjBlZWQgbGVnYWN5LXRydW5rCiszNjY1NCAwNjBkZTUwNGViYmVhZmMwNzY4M2JiYTgwNGExNjkxYzlmOGMwZDcxIGxlZ2FjeS10cnVuaworMzY2NTUgNDM1M2ZmYzQzN2YxOWZkODgxNDVkZGVkODM1ODA4Y2Y3OTIwYzM0MSBsZWdhY3ktdHJ1bmsKKzM2NjU2IGZhNGM3MDYzYTczNmE1YzllMzQyOGU5ODg3NTBmNjgxYTQ5ZmY1NjggbGVnYWN5LXRydW5rCiszNjY1NyBkYWM5ZDA2NjRmYzM5MzM0NTA4NTc1MDI5OGM5NDg5YWFlZDljNjRkIGxlZ2FjeS10cnVuaworMzY2NTggNzE4MzA1MTEyZjlmZDYxMWMwOTA0MDkxNjVkYmRhMTYxYzNiNjhkOCBsZWdhY3ktdHJ1bmsKKzM2NjU5IGI1OGNmNmI1ZmM5MTQzODBkNTBkMmViYzYxZTM0YTYzY2IwMmZkYzkgbGVnYWN5LXRydW5rCiszNjY2MCAxZGQzY2M5MjdkMzc3ZjVlOTM5ZjNkNTVlOGY3NDIxNGEzYzNmYzMxIGxlZ2FjeS10cnVuaworMzY2NjEgNzBlOGY2MzRhNTg5MDI5YmY4ZGU2NTFiODlhMGFmZjI3ZGRkNzJmYSBsZWdhY3ktdHJ1bmsKKzM2NjYyIDI0ZGQxZDA3YWZkYmMwNjg5ZjI0NGIyOWMxNThiYTk5ZmNmZmI1MmYgbGVnYWN5LXRydW5rCiszNjY2MyA3YjQ0YzI3ODI3OTNlOWM2MzQ5NjNlNDRiZjIxMDdlYTdjMzVkMTY4IGxlZ2FjeS10cnVuaworMzY2NjQgMjEzMThkNzY5NWY5Y2QzZjU2MmM3N2Y5ODM0ZWM2MDZlMTgzZGM4ZiBsZWdhY3ktdHJ1bmsKKzM2NjY1IDA4NTZkOThlMmE2ODNkYTZiM2Y3NWYzMzY4ODcxYmYyMTg0MjhjYWIgbGVnYWN5LXRydW5rCiszNjY2NiBkNWI3NmExNjczMjNhYTE1MzBiOWY5NjRjN2QyODkyOTk5NWY2M2RmIGxlZ2FjeS10cnVuaworMzY2NjcgZGFiM2YwODY2OGRmMjNhZTM1NmVlYzA5MzAxODk0MjFkMjFkZDIyNSBsZWdhY3ktdHJ1bmsKKzM2NjY4IGE0ZjE4Yzg5ODY1ZmI4ZDBkMmFiMmI4MmVlOWYxODdhNjZmYTE4MTIgbGVnYWN5LXRydW5rCiszNjY2OSBkYjIxMDgxZjViYzFiMTYxODgxMjFiZGE5YTBlMGYzODQ4NzRkOWM2IGxlZ2FjeS10cnVuaworMzY2NzAgODY1NTEzMTEyZjdhMGU3OTE4ZmMzMzAxNWQxM2YxNzU5MjU5ZTIyZSByZWxlYXNlMjMtbWFpbnQKKzM2NjcxIDVlNDgwYTVjNjQ3ZGE3MzQ0OWJmM2U5ODJmYTJmNWUyMGYyYWJhNzYgbGVnYWN5LXRydW5rCiszNjY3MiBlM2EzNWZiY2U4ZWMyMjE3NmQzODkzMjg1NjNlMzA0MmQxMWVmZGRhIGxlZ2FjeS10cnVuaworMzY2NzMgZTdjYzc0MTUyYzU1Mjk3YzNjYTlmOGQ2ZGNmZjE5OGUyMDRlODQ5ZiByZWxlYXNlMjMtbWFpbnQKKzM2Njc0IDA5ZTYzM2M1MjczMDc5YWQ5YzQ1YWM1NWMxZDI4Y2U4ZDU2YTE0ZTIgbGVnYWN5LXRydW5rCiszNjY3NSAwNTJhNDNhYTM1ZWNmNzJlZDIyODg1MWNhZDIwYmM1ZDdhZjEzMTQzIGxlZ2FjeS10cnVuaworMzY2NzYgMGY5NGY0ODg2YmY1NWE4YTU1MGYxYjA2OTU4ZjAxYTA1YjU4YjY2MiBsZWdhY3ktdHJ1bmsKKzM2Njc3IDE2ODIyMDFmMDViMmE4NDUwZTY1YmI2OTNiMzNlNjM1ZGRjMGZmNWQgbGVnYWN5LXRydW5rCiszNjY3OCBkY2IyNDFjODlmNDI5NzJjNzEyMGFkYjA1NTc3MmExNTg2NmIzMWY0IGxlZ2FjeS10cnVuaworMzY2NzkgOTZkOTkxNDc3YTgyOWNhNzdkMTJkOWM4MzVjZTAyOTAyZmFkN2Q1ZiBsZWdhY3ktdHJ1bmsKKzM2NjgwIDA2YTYzYzM1ZGY5ZTNjNjVjZGIyYWU4ODY2MDVhYjM1OGYwZGY0NWQgbGVnYWN5LXRydW5rCiszNjY4MSA3MjRmYjI2ZWEwNWYyNGM5YTIzYzg3YWNkM2FjNGVhODYyNjI3YjU4IGxlZ2FjeS10cnVuaworMzY2ODIgZmEwNTI2YzMwZGE4MDVmODEwZjdlODcwODM1NWU3ZWRiYThiMmQ0NyBsZWdhY3ktdHJ1bmsKKzM2NjgzIDQ1ZjMyMjJiODRlZTBlZTMxZjI3YjJiY2QyNjE2ODVhMzFiYzk1ODggbGVnYWN5LXRydW5rCiszNjY4NCA0OGVhZTIwZDcwYzU4Yjg2YzRlM2YwNzNjMGVlZjlkMDFkY2IxODExIGxlZ2FjeS10cnVuaworMzY2ODUgZmMzNjg3YTYyN2I0MzQzYzA5ZTk1MGQ2MTk1MzkyYWJhNTM1N2RkZiBsZWdhY3ktdHJ1bmsKKzM2Njg2IDlhMDBiNjVhZWNkY2M4NDM3ZTIzMDcwNWJiZWU0NTAxOTA4MDBiYmYgbGVnYWN5LXRydW5rCiszNjY4NyA2ZWEzMmIwZTk1MDdmYTI2ZjFmZDVjMmI4YjIxNTgwNDNhOTNhOWJlIGxlZ2FjeS10cnVuaworMzY2ODggNjBhNzA4YmYzNTFhZTExZTk3OTJjYjExMjk1NjAzZDQ0NTkzNzY3ZSByZWxlYXNlMjMtbWFpbnQKKzM2Njg5IGM1NzAxMGRiMTIzZWVhYzE4N2NiNGJlN2MwZTMwYWE0OTllMzczNWEgbGVnYWN5LXRydW5rCiszNjY5MCBhNTNiNWNlZmE2MGQ3ZDA1MjRmODQwM2EyZjFlNjI5YTNiMGIzM2RkIGxlZ2FjeS10cnVuaworMzY2OTEgOGQyNTgzNWY4OGFlNDQ1MGU5ZDMyOWJkOGQxOGIxZjA5ZjM2NWFiMiBsZWdhY3ktdHJ1bmsKKzM2NjkyIGJkNDZlNmY4MDYyM2JmOWQyMjk2ODQ1NWRjMmQwOTU0NDM5MzVlMGIgbGVnYWN5LXRydW5rCiszNjY5MyBjYTZlZmM1NGIxOWZmNzE5Y2YzNjgyMDE0YzhmN2JkZWExOTJlMzk2IGxlZ2FjeS10cnVuaworMzY2OTQgMTk1NjU1Mjk5ZWQzNjQ4NzRhZDYxNTYzZDJmNDFjYWQ4ODMwYzE2YSBsZWdhY3ktdHJ1bmsKKzM2Njk1IDZiZTg5NDAxNGE4YzNiZmQ2ZjYxN2Q5MTZlMzU0YzY4ZGI0ZTc3M2YgbGVnYWN5LXRydW5rCiszNjY5NiBkMDEzMzkzYzdkOTgyZjRhNmMyNGI2MzEzMTRiYzA0Nzc5OTA5Y2Y1IGxlZ2FjeS10cnVuaworMzY2OTcgZWYwOGY0OGI2M2ExY2U1NGUxYjNmNDczZDFlMmU2NjYyMDhlZGIzNiBsZWdhY3ktdHJ1bmsKKzM2Njk4IDYyYzUzYjhlNGFlYjMxYjZmMDQxNzE5NjVmMzEyZTFlZjZkZWZkZGYgbGVnYWN5LXRydW5rCiszNjY5OSBiMzkwY2Q5MWM3NmIxMWY1ODYyZjU0ZTNlYzBhMTFkYmM0NGY4NThiIGxlZ2FjeS10cnVuaworMzY3MDAgMDE4YzQzMDQ1YjUzZTYzOGVjODljNzk5OTU1NWMwMjIwMmJmNzQ4OSBsZWdhY3ktdHJ1bmsKKzM2NzAxIDI5MjlmYzU0YjQ5YTVkNDdiODViYjRmYWI1ZDg0OGNkNzI3MmEyYWQgbGVnYWN5LXRydW5rCiszNjcwMiBjYTFhZWI4YWIzODAyY2IyN2NhOGNhMmQ5OGQyZDQ3ZjMzMmE0Mjk0IGxlZ2FjeS10cnVuaworMzY3MDMgZDNkNjA5ZDY1N2ZkMjY5ZmRjNzc5NTJmMTY3YTgyZGNkNDBmYWE1ZiBsZWdhY3ktdHJ1bmsKKzM2NzA0IDUxMGU5ZTJiMDgxNzQ2MTEwZTk2MmQwYTk0YzY0N2M0Nzg3MzZjNDAgbGVnYWN5LXRydW5rCiszNjcwNSAyNmIzMDY4OTRiOWViNDYxMGM5ZjQ4OTQxYTgzOTliNzgwZmE0NjU1IGxlZ2FjeS10cnVuaworMzY3MDYgMzMxZTYwZDhjZTZkYTE5YjE2ODg0OTQxODc3NmZlYTA5NDA3ODdlYyBsZWdhY3ktdHJ1bmsKKzM2NzA3IGUyOGI4NzMzYTY2ZDdkZWFlYTU4YzUwYTc2NzAzMTg0NWNiYWVhODYgbGVnYWN5LXRydW5rCiszNjcwOCA4OGExZDg2ZDQ0MmU4MTE0Yjk3NzQ3MTNlYmY0ZGI4ZGJjYTkwM2E4IGxlZ2FjeS10cnVuaworMzY3MDkgMmFhN2FlZjRlNDAzM2MzNDBjOWY5ODdlMDEyMmViM2M1MzY5ODM4MSBsZWdhY3ktdHJ1bmsKKzM2NzEwIGIzMjNiZGJhYzdlNDc3MmI4YWM3NmY2MjczNWZhNTdiNWJkODRlMzIgbGVnYWN5LXRydW5rCiszNjcxMSAxYmU0MDMzZjg0OTgwODkxZDRlYjFlN2ZjMWM2NDIzMTcyYTgyNjgxIGxlZ2FjeS10cnVuaworMzY3MTIgYzdlMDNjZjgzMzNlNWEzYThjY2ZlOWEwZWU4NTk0Njc2MzMwN2UwMSBsZWdhY3ktdHJ1bmsKKzM2NzEzIDIwOTVjYjU5ODE4ODM0ZWI5ZWI0NjAzMzczYmJjYzBjNzEwYWZjYWIgbGVnYWN5LXRydW5rCiszNjcxNCBiOGMyYWEyYmUxOWEzMTQ0MWIyNTU1MmY4ZWQyZTUxOWYwOTE2OWE0IGxlZ2FjeS10cnVuaworMzY3MTUgYTliMjVjMjMwNzMyNzI5ZjJjZmJiOTMyYmQ5OTE1YzNmYTU0ZDg4NCBsZWdhY3ktdHJ1bmsKKzM2NzE2IDY4NWE5NDhiM2JjOWNiNWQ1OTRkNmNlYjI4ODI4OGMzZWQ1NGQ4YTQgbGVnYWN5LXRydW5rCiszNjcxNyA1MWQ3YTEyMjQ0YWYzMTM4MWZlZDc1ZDk0MTQyODFmMDkwNTljY2UzIGxlZ2FjeS10cnVuaworMzY3MTggZDA0OWExZmUyNjc2M2ZhZDcwNmE0NDMxMjNlZjcxNDE2MWZmYmUwMCBsZWdhY3ktdHJ1bmsKKzM2NzE5IDYzYWQ2ZjY5MjVjNTY4ZDRmYWFmOTNhOWU5ZDliNmJjZjI5NDI1ZDMgbGVnYWN5LXRydW5rCiszNjcyMCBhNzU4MTVlMzE1NDUxMjY0YWJjZGQ5YjJjMzVjMWU1ZmFiODQxY2RmIGxlZ2FjeS10cnVuaworMzY3MjEgMGRjOGZmYWFjMDM2NDUzZTY5ZmUzYjA1Y2VkOGE4NzVhMWE3M2RmNyBsZWdhY3ktdHJ1bmsKKzM2NzIyIGRhZWMyZDMxMWRlZjNhMDMzMzAwNzhkYTJiZTllMThhYWIwMGU4MTggbGVnYWN5LXRydW5rCiszNjcyMyA4NGVmYTAwNTQxOWFhZTI3Y2U4MTI2Y2IwNTk0MGRlZDM3NGIyMjAwIGxlZ2FjeS10cnVuaworMzY3MjQgYjhlMTBhY2I0ZWZiNjIyMjYwZWRlNzg5ZDg4ZDUxZWMwOTIzMjI1NiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzI1IGFjNzNmNjY2MmUxMTdjMmE0NGZkZmY3Zjc2ODlmMmU2ZWY3OTdiZjQgbGVnYWN5LXRydW5rCiszNjcyNiAzMGQ4NmUzNTZiZjI0ZjcxNGIxMGZkY2UzZTY5NTM5MTdiMzE4NDI5IGxlZ2FjeS10cnVuaworMzY3MjcgNzljNGU4MmVlOTk3YzhmNDEwMGQ5M2ZiODVlNDA5N2IwNDVhMDgyYSByZWxlYXNlMjMtbWFpbnQKKzM2NzI4IDMzYjhjZTY2MjAyZWM5MTk3YmNiZmYwYWNmMmRhZTE3NzY0NDcxMGQgbGVnYWN5LXRydW5rCiszNjcyOSA5MTQ2ZTJlYTNiZDUwY2Q1NjFkMjJjZTM1MWY4YmM0OGYwYzY2ZmEzIGxlZ2FjeS10cnVuaworMzY3MzAgZjQxMmZhMmIzZmRlZjdjOTNkZGQzYWY1NzgzMmVhNDUzZmRkOWY2NSBsZWdhY3ktdHJ1bmsKKzM2NzMxIGQ0ZGQ3YjgyY2M3NWJiNmI1YjlhNTU4ZDNjYTgzNDY0YzY5ODhlMGUgbGVnYWN5LXRydW5rCiszNjczMiA2NWYxMWE4ZDdjOGIzOWU3NDEyZTIyZTgwMjA4ZGMwYjEwMDhhY2NmIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzMgZTIyNTc0YmU4NzY0OWE0N2Y1YWVhNjRhZGJkYTZlNjE3Y2ZlNTA4NyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM0IDRjY2UwMDA0N2Y5NzQ5ODA2ZjMzNWVkZDIwNTNlZmU0ZGNjZjI0ZmIgbGVnYWN5LXRydW5rCiszNjczNSBkNjc0ZDc4ZDhkYTY2NDJmZTE4M2RjYjc3ODcyMjJmNmNlZDU0YTIyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzYgNmQxNmIwN2FkZGMzYTZkM2Y0MjAxZjhlMjE0NWU5YzY5ZjVlMDY1NSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM3IDU0NjcxNzM2YTI5ZTRlNzRkMGNkNDA4YWQ0NjkxZGFhZjk3MGM4YmMgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczOCBmNTNiOTAxYzhhZmU4YmYyMTVkZTQ3Nzc2MWYyYmU5NjRlY2MyY2E2IGxlZ2FjeS10cnVuaworMzY3MzkgNjUzMTk2MDdiZWQ4YTE4NmFhZDI2OTdhMTZmMmFhYjFhNDRkZGY0NSBsZWdhY3ktdHJ1bmsKKzM2NzQwIDY2YzU1NmYwOTE2MzdkMTllYWNjMWY3MjJlNTkzNWEzYmZhOTY3NGUgbGVnYWN5LXRydW5rCiszNjc0MSAxNTMzNzE5YzYxMzgzOWU0MmE3ZTk1ZDQ4OTUzNzY5NDlkZDI0YTkwIGxlZ2FjeS10cnVuaworMzY3NDIgMzI5ZDQ5MDZjMzNmYzdkMzg4MjM5MmY3MTkwYzU2NjY3NTI2YWU4YyBsZWdhY3ktdHJ1bmsKKzM2NzQzIDg5MTU5YTEyNjhjY2RlNWMxZWI2YTRlMjk5ZWZmNmI2YmNkZmM0MmYgbGVnYWN5LXRydW5rCiszNjc0NCBjYWM1YzhmM2U5OTBmMmU3OTZmZmM2N2ViZWRhODlkNTIwZmZlMWI4IHJlbGVhc2UyMy1tYWludAorMzY3NDUgYTk4NTZlNzNlMzJkNDJkMTdkNDVmNjk5OWZlY2Y2MGM4OWE5YTg3NCBsZWdhY3ktdHJ1bmsKKzM2NzQ2IGZmNzc3Mjc1NTVhZTUxMDQyOWUwNWI2Y2E0YjlhZDA4OWMyNGI2N2MgbGVnYWN5LXRydW5rCiszNjc0NyA0MWZhY2MzY2NkZDMzOWM5NGNlMmJlNmI4ZjE4NzU0YmJhM2I3N2VhIGxlZ2FjeS10cnVuaworMzY3NDggN2U3NDU3YTY5YjRkODFkZGVlYjhkMDQwMzI4OTgzNGVhZmI1Y2I0NSBsZWdhY3ktdHJ1bmsKKzM2NzQ5IDI1YjY2OWY0YjU2Y2Y2MmMzYjBjM2Y2NDBiYzY3M2ZkZmUwYjQ2ZDYgbGVnYWN5LXRydW5rCiszNjc1MCBiZGE5ODMwNGRlYjVkOTRmODUyNTA5YjlkZDY5NDVjNmM4ZWJiZGJlIGxlZ2FjeS10cnVuaworMzY3NTEgMzgyNGZhMjliZTQ5Y2MxYzFiNzhkYzMzNjUzNzMyOTIxYzU2NDkwNyBsZWdhY3ktdHJ1bmsKKzM2NzUyIDY5MzcwMjUzMTE1YmE3N2JkN2U2NDkwNDY3YjhhMmVjNDlkZjgyYTYgbGVnYWN5LXRydW5rCiszNjc1MyBmMWJiZjE0NzgxMGIyOTQ2MzVhNmYwYTNjZTljYjAzZmE0MjQ1MzJkIGxlZ2FjeS10cnVuaworMzY3NTQgOTM2NzEyYjMxYmVkYzhhMzI1NTI1Mzc5YjRkOGViM2E5MzhlNDcxYyBsZWdhY3ktdHJ1bmsKKzM2NzU1IDY2M2FkMzQ5NTM0YjAwODRkN2JkZGMwOGU5YWJiZWYzMzk5Mzg2MTIgbGVnYWN5LXRydW5rCiszNjc1NiA1ZjU4ZmNkN2FjY2Y2MjIxNGYzMTRkYmNkODVlOTIxOTE0MTJiYjk2IGxlZ2FjeS10cnVuaworMzY3NTcgYzMxZDhmMzhmZDdmNmYxZmQ0YWQ0YmYwMGQ0NGM2N2I4NDEyMjhlNiByZWxlYXNlMjMtbWFpbnQKKzM2NzU4IGNlNDg4YWEwNGYyNGVhMzY4ZGRmOWMxMWE0MDA2ZjllMzM4ZjQwOGYgbGVnYWN5LXRydW5rCiszNjc1OSA4YWM0ZmFhMjgyZTBiOWNmMjkxNDRmNjc3YjI1YWM3YWQxNzU0MjE4IGxlZ2FjeS10cnVuaworMzY3NjAgNWMyMTQ5ZjM2YzNlYWI2Y2EwNTUxYzNlNTEwOTEwYzAwYjZkMTJhZiBsZWdhY3ktdHJ1bmsKKzM2NzYxIGVjNzFhZTNiYzJkZGFmNWVlODgzY2MxOTdlMDI4MDMxMmQwMTBjZTUgcmVsZWFzZTIzLW1haW50CiszNjc2MiBiZDNkZDZiM2ZmOTcyNjg4Mjg2ZmY1MTVkZDAzN2IwYjg2ZDU4YzE1IGxlZ2FjeS10cnVuaworMzY3NjMgNDVhMTcwYzRjYTU2Y2VkMjZmZmNmYTQ3OTdkNWM0YTUxZDJkNDRjNSBsZWdhY3ktdHJ1bmsKKzM2NzY0IDkxZmE4MGE2NzgxMWJjZGU1MGViOTAwNmMxZDA1OTk4YjA0YjkwM2UgbGVnYWN5LXRydW5rCiszNjc2NSAyYzJmNWNmZWZhNjA1NjgzZWY3ZDE0NmFhYmE4MjJkNDgyYWJhNmUyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NjYgZGZkZTA4NTIyOGVlYTUwYjQ2ZmFkNjU3ZDVlYjY4Y2RlN2ZlNDgxOSBsZWdhY3ktdHJ1bmsKKzM2NzY3IGYwNzFhNTUzYWFlNThhNDUzZjY2Mzk0Njk2ZDYzN2Y1MGY4YzkzYmMgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc2OCA0NzNjYjBlZjgyZDI0MzQ2ZmM1MTFjODQ5MDFlMjI2YWFkY2QxZmQwIGxlZ2FjeS10cnVuaworMzY3NjkgMjY2M2I0ZjUzNWI3Y2M1OGE1YTNjZGI0MThhYTcxYzU1YmU1MDYxYiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzcwIDY1MTE4OGE2NjM4ZGMzZmM0N2UxYjEyNmY3MGRiNDllMTA2YmU1ZGUgbGVnYWN5LXRydW5rCiszNjc3MSA4Y2UzNDRmNmM5NTRlZWM4Y2YxMTA4ZTlkNWNkY2EyMTU5NjkxMWIzIGxlZ2FjeS10cnVuaworMzY3NzIgNWFhODUwOTdjYjJjZGNjOTZhODRmNGQ0YWU0MWQ0ODdlMTA2MWQ0NSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzczIDU4MmViNTFiODQ5MjE0NTA2YjAxZmNkMzBjODE5NTRhZGNkNjJjMTcgbGVnYWN5LXRydW5rCiszNjc3NCAyMmRlZDMwOTY0OGJjYmEzMzkzMjU0N2M5OTIwYjI3N2U5ZmNkM2JkIGxlZ2FjeS10cnVuaworMzY3NzUgNjZkYzIxMWJmNTA3MjFhZDAxZjcxM2VmZWRjMDU4OWI4YWU4YTc2MiBsZWdhY3ktdHJ1bmsKKzM2Nzc2IDg0YjQ3NTc5OTkxODJlMGZjYzlhNTExZTI0NmJmZmMzMzdhMmJjZDcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3NyA2M2RmNGNiNDkyYTE2YzZhZmE5ZmQ1NzNkOTMzZmJiMGQyMDgxOTZiIGxlZ2FjeS10cnVuaworMzY3NzggOWZiNTEzOGY1OGRkODFiOTE4ZDI2ZTMzNGNmM2YyYWE0NTMzYWY3MiBsZWdhY3ktdHJ1bmsKKzM2Nzc5IGY2M2Q0NWZkM2ZjZTc0NDg5NDkyZmYyMTgwZjY4NTIwYzA2ZmY1NWYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4MCBlMDI3OTIxMTIyODg5YWU4ZGJmYjhmOGM4NjZhMzBkZDZlZWZhOThiIHJlbGVhc2UyMy1tYWludAorMzY3ODEgOWY4YTdiYTIxMDU1ZWJlMGRhMGQ2MDMzNjk4YjM1MDc1MGY1MDNlNCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzgyIDhiMzkwZGY3YWY4NzM3MzJkOWNkNjVmOGZiYTA2ZjViZDA5OTNkY2UgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4MyBlNGZlZWRiMjA1ZjJkNmI4ZmQwMDY0ZjYzMDgxMDdlMjliZmZmMjU2IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODQgMzE0NDIyYTI4ZTNmYjg1OGI1ZjVlOTYzOGNjZTMwMWQ1MTcyYmU3OSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg1IGQ3NDFjYjM3N2Y4Mjk1ZmYxMDYzMGVkZjgxMjRkMDlmMDQ1ZDhhODAgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4NiBmY2Q2OTBjOGIyY2E2ZDg0NTVlMzI5MTM3OGM2Yzc3YzU0Y2U2YmZmIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODcgY2FmZDdlNGU3N2FkMDc4MmIzZTAwYTg2NDY4MDhlZjViMDMxOWQ5NyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg4IGZiYjU0MjhlYmY0MTA5ZTZhYTc4YzI1MDU3ZWIyZGMxZjBhNGFhZjQgbGVnYWN5LXRydW5rCiszNjc4OSBkYjM4YzFlODM5NjUyZDFlZjU5YTU2MWRmMDk0NWVlMTAzNzdlODQ0IGxlZ2FjeS10cnVuaworMzY3OTAgYjYzOWNiNDViMTczMTNkZWYyMGM3MTcxODVjODkyODk5OWFhNjE1MyBsZWdhY3ktdHJ1bmsKKzM2NzkxIDk1M2NlNWFmMTBhMzFiMjkzNWQzMzlhOTk0NDQ3ZjgyMDAzMWU5MDQgbGVnYWN5LXRydW5rCiszNjc5MiA5ZWJkNDA1NjgzY2Q4NTcyNDE1ZjkyYjk5YWI3NWVlY2YxMWNjMjM5IGxlZ2FjeS10cnVuaworMzY3OTMgYWRmZTdkMzlhMDQ5ZDZhM2M5M2I0MmZmOWZiOTI2OTU3ODJkYWVlNyBsZWdhY3ktdHJ1bmsKKzM2Nzk0IDAyNGZmMGFiNDU4ODAzMzU1YTNkMzY3NmMwNzU0MTlhZjNlYTEwNDMgbGVnYWN5LXRydW5rCiszNjc5NSBiNTY0ODFhOTA1MTllNWEyMGExOGQ1MzNhYTNmYTI1MzE0ZWQ2MjRiIGxlZ2FjeS10cnVuaworMzY3OTYgOTcxZTUxNDEzNDQ3YzJlOGJkM2M2YWM1YjE2NzBlMmY2NGFkZGRlMSBsZWdhY3ktdHJ1bmsKKzM2Nzk3IDJiY2JmM2ZiNzAyMWVmYjY0MzA1ZGE3NGNhYWJjZmY3MGI2OTQ2MzYgbGVnYWN5LXRydW5rCiszNjc5OCBlMmZlYTIyZTBjNTEzZDYxYmM5OGE1NjkxMzE5YzQwMjNkYTNkM2EzIGxlZ2FjeS10cnVuaworMzY3OTkgMDcxZDMzODE3NTNiNjBkMjI3NjZkMTdmYjg3MjhhNTQ5OTYwMmZkNiBsZWdhY3ktdHJ1bmsKKzM2ODAwIGE5ZDU5MTk3YjE2MzFkZDRhM2JlYTBlZTA2OGFhZTBhYjk3OGNiYzggbGVnYWN5LXRydW5rCiszNjgwMSAxNTZhYzZkZTk2MjVjNDdkZjE1YmIxMTI0ZDIwZDQ0ZTVlZTM2NjY3IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MDIgMGJmMGY0YmVhMTQ0MTY4OWI4MWEzNDEzYzRjNjhhMDkwMTIzZTBlMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODA0IGU5YzY0MTRkYmRiNjE1MzczNTM5OThlODY3NjcwNTdmZTE1NGQ3ZmQgbGVnYWN5LXRydW5rCiszNjgwNSAyYmMzMzI2MTZjZDZmOWZlMWFjNzQyZjI1MjFhOTgxMDVhNjg3ZGM3IGxlZ2FjeS10cnVuaworMzY4MDYgN2FhYTg1MmZhODU2ZmEzMzg0NTI2YzUzNDNkNWUwZmZkNjZiOTA5MCBsZWdhY3ktdHJ1bmsKKzM2ODA3IDVlOGUzMDljMGJiMDY5NzNkOTdiYmE2MThlNjA3MDgxY2M2NTRiMGUgbGVnYWN5LXRydW5rCiszNjgwOCAzNDFiN2FkYmE5NDQ3YTE4YmNlMzg1MWRmNDNlMmZkMDZmMGNhNWRhIGxlZ2FjeS10cnVuaworMzY4MDkgOWY2NjI1OWFlY2UzMTY1Y2MyYzcwZTBhMzM1NDQyM2JjNDBkYmUwZSBsZWdhY3ktdHJ1bmsKKzM2ODEwIDlhYzY0MzU0NDYyOWIwNDk3N2I3YTljMDhhODdiYWU5MzdlYmU3ZGYgbGVnYWN5LXRydW5rCiszNjgxMSBlYTMzOGJhYWI4NTk5ZDcxNTdmMDJmNDBkYmZiMGNkOGFmZmJjNTQxIGxlZ2FjeS10cnVuaworMzY4MTIgOTgyMWUzODhiNTlkOTNmMzk2YjczNzdmZDdlZWY1OGU5Zjk0NDhlZSBsZWdhY3ktdHJ1bmsKKzM2ODEzIGZmYWExNzVkMGFhMzM3Zjg4NDI4NDc0NzFhY2JkYTU5ZWNlYjI0YTggbGVnYWN5LXRydW5rCiszNjgxMyAwNTVmYzY5NTVmM2M2NTIyYmZlYjdlZDRjNjcxYzk3ZDViYWFhYWMyIGxlZ2FjeS10cnVuaworMzY4MTUgZTZkMDA5Mjc2YzU0Nzk2MWE0MzBiOThiYmExMzRiYmQ0ODhhMTk2OCBsZWdhY3ktdHJ1bmsKKzM2ODE2IDNlOTA5YzU0ZTMwYzkxZGQyNzdiZTc1ZGUxOWU5N2M0ZjNlNzk2NzYgbGVnYWN5LXRydW5rCiszNjgxNyBjZWIxYzNmMWFjOGFiYjQ2MWM1MGVkZDk5ODE3MTU0Y2ZlZTVmMDA4IGxlZ2FjeS10cnVuaworMzY4MTggNWY0YmZiZTI2YTRkYzQ2NGVmZDZmMTMwMWZiYWZhMGZkNjU0NmQzMSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODE5IDg0NDEwYTBkNmVhOTQxMzQwMWVhNTk2YjRjM2VmZmZlZWVlNWMxM2IgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMCBlYTg3NTUzZTI1NjA5ZjhhZmIwNjgzMWFmNjAzNDYwMDY0YWZmMTIzIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjEgYmQ0MTM2NjdhYzE2YjY3ZGQyZDMzOTU1NDc3ZTk4ZmZjYzMyNjA5NCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODIyIDJlNjdjMjcwODY3MDhiMTFiYTg4ZjYyMTM3NWRjYzg0MDQ3NDhjODIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMyBiNjg5MGVhNWZkZTBmNmUwNTI5Y2ZhNzJkNzYyOGIwYTliNThjYzUxIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjQgNzk2MDA2NThiZTY4OTJhOTA1NzNjZWI3MTdiOTZkN2YxZmE5NmNhNiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI1IGJlNTg0Y2RhNTQ3ZDY0MmM4OWJkOWNmNWE1NzUxYzRlOGMyMzZjMmYgbGVnYWN5LXRydW5rCiszNjgyNiBmN2Q1MGU5MWJlZjM5ZWRkNGEyZTZlMmM1ZTQ3OTY1OGE5MzNlOWYxIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjcgMTk3NTE3ZDgwOTllNDdlMDAwNTQzYjU0OWFlZGRkZWI1NzA1NWNmYyBsZWdhY3ktdHJ1bmsKKzM2ODI4IDRjOWVmYjNhNmJiM2Y2MGM0MjBhODU1MzdjOTNhOTY1M2M5MmQ4ZDQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyOSBjMjZhNGZkNjk3NDRhZGM0Y2NlZmVjNzFkZDE5N2FlZTMwYjVkODEwIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzAgZmI2ZmZkMjkwY2ZiMzlkMjFhZmYxZDcyMDgyZGY2Y2MzZmZjZTFlOSBsZWdhY3ktdHJ1bmsKKzM2ODMxIGFhY2RkMGVjYTFlYjU2MmUzNjVkYTUyNWZhYmYwNGNlMmFmOGIxMDIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgzMiA5YjE4ODE1ODE4MWY3ZjEzNjc1NDVkZDI4NTZhZjk1YzUyYTEzM2I3IGxlZ2FjeS10cnVuaworMzY4MzMgNGYwMTg5NGFiNDU4ZGM3N2FiZTE2OTM1NDk3OGY0MWJiMjQyMGU2MiBsZWdhY3ktdHJ1bmsKKzM2ODM0IDQwYzNhNTFjYjcxY2QzNTQ3NjEyMThmYTUxZDFjMjBlYmNkMWFjZDIgbGVnYWN5LXRydW5rCiszNjgzNSAzNjAwNDBkM2Q0ZmFkODIxN2MxMTY3OGY3ZmY4NTZlYTFkOWNlYTZkIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzYgNWNhYjMzNjE4MjkzMDA0YjVjNTUyZDllZDA2ODc5Y2U4YjE3OTJmNCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODM4IDY3OGQ0MGZjZTBiMTRhOTllNzYzMGY1MTFiOGNlMDdjYTMwOTE3YWUgcmVsZWFzZTIzLW1haW50CiszNjgzOSA1Y2M1NWQzNmJiMWRjZjliMDg1ZDNjNWE5ZWIxYjA1YjcwNmIyYjdmIGxlZ2FjeS10cnVuaworMzY4NDAgZTg5ZWYwYmZhMWZmOGNkNGIxMGE0MmU4MTQyYTFhMjc3MGViYzllNyBsZWdhY3ktdHJ1bmsKKzM2ODQxIDUwYzEyMmJjN2FhY2EzODgyYzc0N2Y4ZTU1ZDcyOThlYTYwNjg2NjQgbGVnYWN5LXRydW5rCiszNjg0MiBhZTg3NzJkMTVhNWZhNzE2MGEzNjYwMjllN2MwYTE5NGU1ZjVkMjdmIGxlZ2FjeS10cnVuaworMzY4NDMgNzI2ZGI1ODU0NzQ2MTRmMTE0MDAxNGU0OGI2MmY2Y2QzOGY4N2NkZiBsZWdhY3ktdHJ1bmsKKzM2ODQ0IDRiM2Y4ZGQ5MjY5YWUwNzE5MmE5Yjc0NmI1NGEyZmI0MjIyNDE2NTcgbGVnYWN5LXRydW5rCiszNjg0NSBmNTE5ODk2Y2Y1ZGNiZGUzOWQ1NDM3NjE3ODg5MzhhN2ExM2QyZmJiIGxlZ2FjeS10cnVuaworMzY4NDYgNjFjMDE3MTU3NzU2ODM0NDVmYWRkYmZhMWUzZGJlYWZhZDIzNjhlNiBsZWdhY3ktdHJ1bmsKKzM2ODQ3IDhmODc0NDBjNmU4MGNkMTJlZjlhNzhiMzYxNjViMmZjMTNjNzNmMWEgbGVnYWN5LXRydW5rCiszNjg0OCBhOGE0ODYzMzlkODA2NDZmNWM0ZDNkMmY3ZjVkMDU5YzEzNzIwNWI5IGxlZ2FjeS10cnVuaworMzY4NDkgMmVhMDk2NjJhMmQ0MGI1Y2MxMzEyN2I5N2RhODI5NjY4OWE2MWFiNCBsZWdhY3ktdHJ1bmsKKzM2ODUwIDQ0NDUwMTI5Y2UzNTZlNWYwZTlkZTk5NjM1YTA2YmZkNDlkNzJhZTcgbGVnYWN5LXRydW5rCiszNjg1MSBjOWFlOTVkNzdhNDI3Zjk4ZjQ4MWZjYTVhOWU4Y2ZlODVmNGMxNDk0IGxlZ2FjeS10cnVuaworMzY4NTIgYjM0YThkYzNjY2FlY2YyYzU4NzFmNDRhODlmNjczNDlhMWUzNjkyZSBsZWdhY3ktdHJ1bmsKKzM2ODUzIDRlMmM2NjAyMWJmMzgwZDI0MzI2MjYzN2FiZDAyNTAzNGIyNzE0ZDAgbGVnYWN5LXRydW5rCiszNjg1NCA0M2ZiZjI5ZGQ4M2E5NzhjODE0YmM0ZGUwYWE2ZmZiMTI2MmU4MGJjIHJlbGVhc2UyMy1icmFuY2gKKzM2ODU1IDI1MmM2NTQ2OTExNDY5NWM2YWZmN2Y0OWFmY2EwNWNkNWJkZDVlNTAgbGVnYWN5LXRydW5rCiszNjg1NiAxYWE0MGEwODk4MmZhNTVlZmYyMDhhZDYyYTc5MDA1OTJjM2E4MjIzIGxlZ2FjeS10cnVuaworMzY4NTcgMzAwMjU5NjUzMjRhNTgxZTA3MWMxN2U0ZWM1ZDBjYWQ3MTg5M2QwYiBsZWdhY3ktdHJ1bmsKKzM2ODU4IDMwOWJlYmVkZmM5N2ExY2MyMzFjYjI3Yzg2ZmQ2ZTNkOWM0ZmM1NjkgbGVnYWN5LXRydW5rCiszNjg1OSAyYzExNmU3ZmYxNjM2YmUwY2FmM2MwZDdmODdlYmFhNDJjOWMxYmM2IGxlZ2FjeS10cnVuaworMzY4NjAgNDQxYWIzYWQ2ZDAxYTBjYjYyYzYzODg4MDU4N2RjYzkzMjlkMDgzZSBsZWdhY3ktdHJ1bmsKKzM2ODYxIDRiZjY4NTRkYjY1NmVkOTgwYzMzNWZkZmU4ZDM3OGZhYTU2N2QzODEgbGVnYWN5LXRydW5rCiszNjg2MiA0ZmQ1OTY1MWZlM2Y5YTYyNmM5ZWFiZTIxODU2ZTJlYzg3OTVlNjY3IGxlZ2FjeS10cnVuaworMzY4NjMgMzk2ZDAxMWY4MzQ4YmE2N2ExMmI1OWU1NDJmZTEwYWEwY2RiNzk4ZCBsZWdhY3ktdHJ1bmsKKzM2ODY0IGI1ZGNmZTdhNDE1OTYwYWIwZmIzYzMyZTA1ZWY3OTg5MjdiZGVmOTggbGVnYWN5LXRydW5rCiszNjg2NSA4NjdmZWYyYjUwNjBhYzgyMDFjOTE2ZDhiYjlmMGU2MzNkYWJhNzY0IGxlZ2FjeS10cnVuaworMzY4NjYgZmEzZDAxZjBmYzQ0MjE1MmQ1MmI0MDZmNzllYzdmMTQwYjQ0NTJjZSBsZWdhY3ktdHJ1bmsKKzM2ODY3IDhkNzA3ZDQ5Y2I5YmM3ZjhiZDZkOTc2MGE0M2RjYTdlY2U5NTQwYjAgbGVnYWN5LXRydW5rCiszNjg2OCA5ZmIyZTMwZjI2YmVlNWVlMWU4NTYxNjZmYWRiMjg2MzRjYjhlNDgzIGxlZ2FjeS10cnVuaworMzY4NjkgMzY3Y2U1MTZhZDA1NGJkOGVlNzI4MDRhYjBmNGE4MGE0MDY2NGQ5MSBsZWdhY3ktdHJ1bmsKKzM2ODcwIDQ4Y2I0ZWQ0OTRhNjU4MTAyMTJhMzk1NTcxOWRjMjZkMzkzN2IwMjIgbGVnYWN5LXRydW5rCiszNjg3MSA4ZjZkMjA1ZDUzMWJjOTdlY2NjMGRmMmUxYzgzMTllMWZhMDlkNWNhIGxlZ2FjeS10cnVuaworMzY4NzIgZmYxNzYyNGIyNjQyOTI2MTlmMjQwZDJmODIxM2I4OWE1Y2Q3NzExZSBsZWdhY3ktdHJ1bmsKKzM2ODczIGIwZTBhNTM4NzBiNmY5ZjgwOTcwMjdmNDE0ZjcyMjY1NWFmZGQyZWIgbGVnYWN5LXRydW5rCiszNjg3NCA4Y2E4ZmViYzBhMGQ3NTAwOTBjNDNiOWUzMzZlZDNjMTE3YzRlZTU2IGxlZ2FjeS10cnVuaworMzY4NzUgMGJlYjc1Njk2NWRmOWNkNDY1N2NkMmU5M2UwY2UzMGEwOTFkMzE1MSBsZWdhY3ktdHJ1bmsKKzM2ODc2IGU1YjllODcyYTdkM2JhMjg1NDI2OTgxZWQxMWFkMzBjNTY2YTVkNjQgcmVsZWFzZTIzLWJyYW5jaAorMzY4NzcgNmFhMzFkNzVjNGY5OTBkOTViOGU2ZDVjY2U2Y2EyZjdkNDhjNTdhNyBsZWdhY3ktdHJ1bmsKKzM2ODc4IDVjOTQwZjk4ZTQ2NTU5YzkyMmViOGExNWViYmNkZjIwZDExZGRjY2QgbGVnYWN5LXRydW5rCiszNjg3OSBhYjkzYWZmNGM5MGE4NGJmMGMwMTUzMDk5NDQ1ZTJmYjQzMDA0NWY4IGxlZ2FjeS10cnVuaworMzY4ODAgMWYzNThhNmI0YmMzMzZlNTcwNDUxNGIyODI3ZWExODU5YmI1ZDJmMyByZWxlYXNlMjMtYnJhbmNoCiszNjg4MSAyMDRkMjlhY2JhMjgwMTAxMGFmZmE3ZjM4YmQ2MWEzYWRhOGYyMTYzIGxlZ2FjeS10cnVuaworMzY4ODIgNTIxOGJmZjU2NDQ5NGY2ZjEwYTViMmFkMjMxNjI5NGM1YWQyNDUwOSBsZWdhY3ktdHJ1bmsKKzM2ODgzIGFkODE4MzM4ZjhjMzMwNjU2OWNiYzYzNjY5MjRmZDY3MTczZjFjMTcgbGVnYWN5LXRydW5rCiszNjg4NCA1MzBjMDJiODNlZWE1YWQxNjViNmM4Yzg0MDY2MDJmMWFjNjEzY2IzIGxlZ2FjeS10cnVuaworMzY4ODUgMmM5M2ZjZWVlNDJkMTNkYWYwNTRlNjZmNzQwZmIwNjYwODVjOGZhMyBsZWdhY3ktdHJ1bmsKKzM2ODg2IDRmNTg4ZjU3YTkzYjAzNWFkMDNiOGQwNDYwODM5ZmVkY2I3ZmE1ODcgbGVnYWN5LXRydW5rCiszNjg4NyA4ODk3ZTc3Y2Q3OWE4NDFiZmU3NzVjNTcxYzE2ZDIwYzU1MDhhZmZmIGxlZ2FjeS10cnVuaworMzY4ODggOTQ2NDQxNWExZjg5NDk5MTk5MjU3ZDkwNzk0MDUzMzI2OWJiMzc4ZSBsZWdhY3ktdHJ1bmsKKzM2ODg5IDQ5YjgwODMyMDNlNmJiYzFmOTc5NjExYzgxNzM0YzNkZmUxNWI4YmEgbGVnYWN5LXRydW5rCiszNjg5MCA5ZGRmYTc0Y2IyNTBmNDk2ZjgxNDMyYWE3NWQ5ZjQ5NTQwMzcwZTQ5IGxlZ2FjeS10cnVuaworMzY4OTEgODUwMDJjZjRlMjNiZjUwZDhhODFlZDU3YTk1NmEzZmUxNTYzNmNhYyBsZWdhY3ktdHJ1bmsKKzM2ODkyIDJlN2I3ODAzMjcwMmM3YjZiYTZkNTY3ZWQxODdlZWY3ODExOTI4YzggbGVnYWN5LXRydW5rCiszNjg5MyA4NjA3YWMyZjgxYzgzOTIwZGQ0MmE0OWQwN2NjMjI0ZTRmM2IzNzk3IGxlZ2FjeS10cnVuaworMzY4OTQgMjY3NTJkZjkzOTEzOTAzM2ZhYjZjMzg3M2IwYzQ5ZTVmNmRiNzUyYyBsZWdhY3ktdHJ1bmsKKzM2ODk1IDE2NjBhNjhmYTZhNDA3YTczZGM3Y2FjNzkxNmM5YmMxZWViM2QyZDAgbGVnYWN5LXRydW5rCiszNjg5NiA3YzNkNTY5NTIyYzQ5MmFlZjdlMzk5M2I1NTQ5ODU5MThlMTJiNjdiIGxlZ2FjeS10cnVuaworMzY4OTcgYjY2OWE2MDk3YmE4OWM4MjZkNDBiMDNhYzYxZTgxMWJjYTQzNDg0NyBsZWdhY3ktdHJ1bmsKKzM2ODk4IGVlM2FhYTc5MTg0MjkyZDgwMmY1YmRlOTc1MTE3NmZjNTYwODYxM2YgbGVnYWN5LXRydW5rCiszNjg5OSBmNmIyZjE5MmUwM2I1M2ZiMzM4YjE1NDYyOTRjYTI5M2ExNWNhZjIwIHJlbGVhc2UyMy1icmFuY2gKKzM2OTAwIGNlMmExOTYyMDNjNWVjZTkyN2JlY2YwNGUyOTE4ZThlNTc1NDc5ZjIgbGVnYWN5LXRydW5rCiszNjkwMSAyMzNjMjIzODU4Zjc3YmJhYzUyZGRiNTg1OTFjYjU3NDRkNWYyNTVhIGxlZ2FjeS10cnVuaworMzY5MDIgZmVlMjAzOGI4ZmE5ZGM4MmIwNjZkMjNlM2IwMzM0NDdmMzMzYjI2ZiBsZWdhY3ktdHJ1bmsKKzM2OTAzIDQyMDQ4ODQwOGUwZTNkNjQzM2M3ZDA5NTM0MzQyODFlNDUyMjg0MzUgbGVnYWN5LXRydW5rCiszNjkwNCA1YTRkNzdiNmVmYTY1ZWE4YWUxODY3N2FiMjYzNTI3NzI5N2VmMDNiIGxlZ2FjeS10cnVuaworMzY5MDUgMzA0NWY0ZjM0ZWYyNDdiZDU0MzhmMjBhMGExYTViMTQwN2E5MTU1ZSBsZWdhY3ktdHJ1bmsKKzM2OTA2IDE3ZmM4OGExYjg3MzU3ODRjNDJjYzNkZGQzMGI0NDViZjllNDlmOTEgbGVnYWN5LXRydW5rCiszNjkwNyAxZGJkMGYzNDVhNzg4NjBjNDlhNjI3ODM2NjdmMzQ4NjYyZTFjNjY0IGxlZ2FjeS10cnVuaworMzY5MDggMjc0OTMzNGQ3MWE0NzE0M2UwMTU1Nzc1NzkyMGU3ZjlhZWQ4YjY4MyBsZWdhY3ktdHJ1bmsKKzM2OTA5IDE2MzYyMTUxN2I5ODI1NGNhODU1OGVjOTllYzYzNDZlZDczZTBkYTggbGVnYWN5LXRydW5rCiszNjkxMCA2N2QyNTIxN2JjN2YwYzQ3NDIxYzNjYWZhNTgyOWIzMDI5MWJiYWI5IGxlZ2FjeS10cnVuaworMzY5MTEgYzgxZWQwNzk1NzZmMmE1ZTdlNzFjNDU3YjFhZTgyOWVjZWVkOTdiMyBsZWdhY3ktdHJ1bmsKKzM2OTEyIGMzNDg3ZWYzYTY5YzRkMjhhMDFkYTVlMWQ3MDZmM2MxY2UyYWU3NjAgbGVnYWN5LXRydW5rCiszNjkxMyBkMGViMDk4YmUyNjQ4ZjI1Nzc2YmFjOWNlNzFjOGM1MDEyMjcwODU4IGxlZ2FjeS10cnVuaworMzY5MTQgYzQ3OGE3MWMyMzg0MDQyYjgyYzdiNzdiZmNjNDQ0YWI3OTU4MmZjMCBsZWdhY3ktdHJ1bmsKKzM2OTE1IDQ1NTY2NzE0NmQ0Yjk5ZWNiNWM0NWM0OGUzZWExYTIyYjFiM2IzY2MgbGVnYWN5LXRydW5rCiszNjkxNiA5ODUzNzVhY2E5NzA3MzEwZjA3NTQ2MjVmZWUxY2Q0ZThiOTNhNzNmIGxlZ2FjeS10cnVuaworMzY5MTcgMWFmM2FkNDlkMDZmZTBlMjIxMWIzNmYzYzEwMGZlNzVhNDdiYjcxYyBsZWdhY3ktdHJ1bmsKKzM2OTE4IDI3YWRhMjU1MDlmZjI2MjY4Y2YxODViOTE1YmM3NzI2ZDNkOTgwZmYgbGVnYWN5LXRydW5rCiszNjkxOSBmYmVhMmJlMzU1NjI4YmUyM2Y0NGE2YzcyZDdjMDVkMDFkNjMyM2JkIGxlZ2FjeS10cnVuaworMzY5MjAgMjlmYTlkNmFmZWEwMWZkOGZhYTcwYjVhZTUwZTQyZTljZmIzYzRjNSBsZWdhY3ktdHJ1bmsKKzM2OTIxIGYwYTZlZjNhODc0ZWY4ZGM1YThkYzkzZjMzMDU4ZmI1M2Y5NjU5NTUgbGVnYWN5LXRydW5rCiszNjkyMiA1ZTY5ZjdjODBlZjQyNzMzNDM4NWY2NTEyZWQ0Yzc2OWM5YWE5ZTFhIGxlZ2FjeS10cnVuaworMzY5MjMgNmYzOGUzYjY0ZWY0NzI2ZWZlOWQ0ZWM1YzYwZmMxNTkwOWMwZmRlYiBsZWdhY3ktdHJ1bmsKKzM2OTI0IDMxY2NlYTllOThhNzQ2ZmEwYmE5MWE5NzkxZjI0N2RmMTg0MmY5ODAgbGVnYWN5LXRydW5rCiszNjkyNSBlZTQzY2E0YTJjMjM4ZTQxZTczMjMzMGNkZDk0NmI5NGMxZDFmYzQxIGxlZ2FjeS10cnVuaworMzY5MjYgNzY0ZDI4ZmMzZDM2OThlYThmYmZjMDEzOWE1N2ZhYTZmNGIyZjdmMiBsZWdhY3ktdHJ1bmsKKzM2OTI3IDkwZGE3MDk4NjQwNzIzOTc0YzhhYjg4YzBlYzllYjkxMTFhMWU3NjQgbGVnYWN5LXRydW5rCiszNjkyOCAwMzA0M2IyODhiMjg3NTg2MDAyZTA3ZDgxYjU5ZDA2N2ZjM2JjYzg1IGxlZ2FjeS10cnVuaworMzY5MjkgNDUzMjlkOWZkYjhkNTQ1NDcxZTQwYTcxMTgzN2Y4NmM5OTI3YTQ3NCBsZWdhY3ktdHJ1bmsKKzM2OTMwIGNkYTA0NTViZDBhMDMxODkwMDY5OTQyZmRiODc0MGJkMTI5MzQ4MTkgbGVnYWN5LXRydW5rCiszNjkzMSAyYThjMzc1OGM0YTE5MDZiZTMxZGEzYWVkOTI1M2Y3ZmMxOTE5MmJkIGxlZ2FjeS10cnVuaworMzY5MzIgNDUxZGQ0OWRmNTMxMDljZDYyYWJiZDkxYWJiMGNkMTY2YjM0ZjBiNCBsZWdhY3ktdHJ1bmsKKzM2OTMzIDgyMWM1NTdjYTYxMjRiNWZiMjA1N2RjMzZmM2I4OWY4ZjlmZmFjZWYgbGVnYWN5LXRydW5rCiszNjkzNCA0ZTZmNGU5ZWM5YjNkM2E1NjZkYWU4OTRjZjQwNzAzZTQxM2IwYmYzIGxlZ2FjeS10cnVuaworMzY5MzUgMDRkOWZkZTExMzMwOTQ4ZTJhM2QwY2I3YmUwZTU2NzE2MmUxNGU3YyBsZWdhY3ktdHJ1bmsKKzM2OTM2IDRkZDE4MTViNDRlZmFhZjk4NTY3ZTUzZGM1N2Y3NmQ0YmUyMTQ1YzAgbGVnYWN5LXRydW5rCiszNjkzNyBiZmNjNGUzOWZjNDUyYjM1MzI2Njc2MzQ2YWM4MTFkMWU3ZDM3NDVkIGxlZ2FjeS10cnVuaworMzY5MzggOTgxZmZmNzM2M2I5MmU4ZTc0ZGYxNzk1NGFmMjIxNjlkY2IwMWQ4MCBsZWdhY3ktdHJ1bmsKKzM2OTM5IDAxY2M1ZTNmNjM3NTIyMWExYjdjOTc0MjIwYWIzZGJlOGQzNjFmOGEgbGVnYWN5LXRydW5rCiszNjk0MCA4MzZlNzcyNjZmOTc3OTEzMTQxMTBmM2I0NzBhNzdmZWU0YTNlMDIyIGxlZ2FjeS10cnVuaworMzY5NDEgNzQzYWJhYzlmOWZlMzNlY2JjZWQ5NzM5YzE1YzBmZjlkN2Q3ZmYzMSBsZWdhY3ktdHJ1bmsKKzM2OTQyIGQwNzVjYmE4NTFmZDg2ZmQ5NjA5NjM3OWEyNzg2OGM2MzM3ZDE2ZTEgbGVnYWN5LXRydW5rCiszNjk0MyAwNThlODUxZTc5M2VhZmJiMTE0ODJiOTU4YWMzMThkNjFkZDcwMjBmIGxlZ2FjeS10cnVuaworMzY5NDQgYTc5Mjg3MjZkZDhmNWJkNDRlODRlOWI0NWVjM2QwNmY3NmYyZDkyYyBsZWdhY3ktdHJ1bmsKKzM2OTQ1IDVlYWU0Y2UxMDVmY2Y0YzU2NDlmOTdkYjlkZjBhYjhlZjM0NDJmOGUgbGVnYWN5LXRydW5rCiszNjk0NiAyNDBlYWZhZTNlYTc0ZGE3MzU0YTlmNWUyZGZkYzE4ZDhjY2IzOTFlIGxlZ2FjeS10cnVuaworMzY5NDcgNWYzMzUwN2NiNTU5ODIzNzFlZmEzOTIyZTI4YWY4NjMzYTY3ZGU4YyByZWxlYXNlMjMtbWFpbnQKKzM2OTQ4IGFiZWNiZDY2YTYyODBjN2Q5OWNkZTNjYTUxOTM3YjhjNTE2OGRmMjEgbGVnYWN5LXRydW5rCiszNjk0OSA0NDQ1N2NiOGY5NzAxNDk3MmQ5MzNjNDk0MDgyODU0ZTc1NTg5MDhhIGxlZ2FjeS10cnVuaworMzY5NTAgYWZkNTQxMjZlOWExOTBmYTA0MGFmNGY0Y2VkNjZhYjU0MTQzNTY2NiBsZWdhY3ktdHJ1bmsKKzM2OTUxIDUzNDdkYTMxZjA3NmM2Y2YyN2Q0NDAxYzBhYWNlOWVlOTIwMDY2MjEgbGVnYWN5LXRydW5rCiszNjk1MiA5OTM3ZDBlNjNjYTMyNWY0N2QwYjNjZTBhNjNlMWI5Y2UzMWNkN2M2IGxlZ2FjeS10cnVuaworMzY5NTMgNGZkMTg1MDVmYzM1ZmRkN2IzMmZjNjNlN2QxN2Y5ZGQ3MmMxYjcwMiBsZWdhY3ktdHJ1bmsKKzM2OTU0IDRiMGEwZmMxYmFlYTMxZGY5M2VlMjU2ZDUwZDE3NWIzZTBmOWZlMDkgbGVnYWN5LXRydW5rCiszNjk1NSA0ODEwMGEwMWFjN2MwNTNhNDE3NWE4NjFlZDY3YmE2OTNlMjQyNGExIHJlbGVhc2UyMy1tYWludAorMzY5NTYgZGZjMjVlMWI5NjA1ODM0OGM5ZDI0NDM1YmU0NzE2YjE1YzZkN2U4ZSBsZWdhY3ktdHJ1bmsKKzM2OTU3IDIwZTkwZTUwNzk3ZGU4ZjVkMDY0YWM3YTJlOTIzZDdkOGEwMTgzZWUgcmVsZWFzZTIzLW1haW50CiszNjk1OCBiMTY2YWUyZjc3MzIxNDM3ZThmZDUzNmY5NWI3MzIzYjJkZjY3OTJhIHJlbGVhc2UyMy1tYWludAorMzY5NTkgZGRkMjRkNzJhZDZhYWM1NjlmODEwNjc3OGU3NDVhYjFkYjk4MjA4ZSBsZWdhY3ktdHJ1bmsKKzM2OTYwIDAxYTM4NTVhNGIwM2U4Mjk3Y2RlOTM0MDliMTBlOTE0ODJhYzg0NjcgcmVsZWFzZTIzLW1haW50CiszNjk2MSBjNzBjMzNmNjlhNDRjOTQ2MzA3NWFkNmM0NThlYmNkNWQ0MjIzYTMyIGxlZ2FjeS10cnVuaworMzY5NjIgM2I1ZDM3ZjdjYjVhZDFlNzdmZjIwMDhjNmRiZDI4ZTMxNDgwZDQwMSBsZWdhY3ktdHJ1bmsKKzM2OTYzIGNlMDE2ZDBlYzcwMTU1MzRhMjUwZGM0ODUyMTBkZjE3ZTI3OWMzMmMgbGVnYWN5LXRydW5rCiszNjk2NCAzNTY4ODc0MTBiZGU3NGI5OTg3NTFmMTMzMzc2MjAxOTE0MzA3YjkxIGxlZ2FjeS10cnVuaworMzY5NjUgODFlZmVjMGU5ZDI5MzZiZTg2Y2MyY2YwYzMyOTU1YWNiY2Y4ZjA5NyBsZWdhY3ktdHJ1bmsKKzM2OTY2IGYyNzkzNWI0Njk4NWFjNjFlMGJkNTY5MzAwMzM3MTRlNzI2MmZlYmMgbGVnYWN5LXRydW5rCiszNjk2NyA2YjhlNDk5Njg3ZDYyNTg2ZWE3NWI3YWMyNjhkZTQ4OTRjNDQ1YzY4IGxlZ2FjeS10cnVuaworMzY5NjggZjQ1NWJiZTdlYTdlMmIxNmQ0Nzk2MTUxMWU2YjY0MDU1MDcwYzYwNiBsZWdhY3ktdHJ1bmsKKzM2OTY5IGU1ZjZjM2Y1MDg0NjY1M2NhMjkzYjRiY2E3MjFmZDkxMjZmMzFlM2QgbGVnYWN5LXRydW5rCiszNjk3MCBiYWJkMTFlZWNkODgzYWNlYmNhZTI3NDE3NGM1MzRhY2M5ZTU1ODU0IGxlZ2FjeS10cnVuaworMzY5NzEgYzlhYzliZTk1YWY5ZTJlOGE5YjhiMGY1Njc5NTVmMjZiNTgwOTEyZSBsZWdhY3ktdHJ1bmsKKzM2OTcyIGRkYzAzMDRjMTUxZmU0ZjZlZTExZGUyMWYzYWZkNjUwYjUyYTExNWIgbGVnYWN5LXRydW5rCiszNjk3MyA0NTBmNWUyMWVhYzhkYzI0YTBkY2EyNjliOWY1Njc3NzA0ZmM1OWQxIGxlZ2FjeS10cnVuaworMzY5NzQgMGEwYzI0N2YwNTg0NDU2ZTE1MTc0MzkyY2ZlM2M4ODJkZWUxYjY4ZSBsZWdhY3ktdHJ1bmsKKzM2OTc1IDdkZTdjMTkxMGFjOWNhNDBlOWVkNGEzMDBiMTRlNDFiMTVjYTQ4YWEgbGVnYWN5LXRydW5rCiszNjk3NiBhNzdjMDM3MmExZDdiNTJjZDFjM2I1NTQ4MjMyM2ViMGU3Yzg3MTFjIGxlZ2FjeS10cnVuaworMzY5NzcgMjhlODc3ZmY3NGNmNzA2NzMzNjM4OWU5YTc4YmYyM2ZjNjdlMjZjMSBsZWdhY3ktdHJ1bmsKKzM2OTc4IGU0YTczZWZhNGQyMzRiZWZlM2MyMjJiYTU1NTI4YWI2ZmM4ODFhY2MgbGVnYWN5LXRydW5rCiszNjk3OSBkZmQzODAzZWUwYzE4MTNkOGE3MGZiYmI2NDA5NGFiYTUxNTdmNWZjIGxlZ2FjeS10cnVuaworMzY5ODAgM2E0ZTczYTVlNDM0N2YxZDE1YWExNzU0ZmM4ZGM5OGNjMjZlMzBlNSBsZWdhY3ktdHJ1bmsKKzM2OTgxIGJmNjlmYzNiZDA2N2U0ZTVlY2MxYzI4ZjA3YWU3YWM3YTYxNDRlMjEgbGVnYWN5LXRydW5rCiszNjk4MiBmNmFjNDE3YjVlYjA4YjczZjFjMDM4MjA1NDJjOWUwMWEzZTNkZTM3IGxlZ2FjeS10cnVuaworMzY5ODMgMWNmOWRlM2E4NTAzYTQzOTc4NTc4YjBhZDhlOTYxMDI3ZmY1YjMxNCBsZWdhY3ktdHJ1bmsKKzM2OTg0IGQ3ZmNkZjk3NzZjNGRmYTRiN2QyM2JmYjYyNmViOWVlNzJmZmRjNWUgbGVnYWN5LXRydW5rCiszNjk4NSA5MjBmNWY2NGYyZjBmYzgwMzhhMjdkNGUyZGE4YzE5NmJiYTM5NDQxIGxlZ2FjeS10cnVuaworMzY5ODYgMDE0MDc4NWJlZmRiMzZkMGMxYjA0MmU2MzRlZWU0YTU1ODI5MTU0ZSBsZWdhY3ktdHJ1bmsKKzM2OTg3IDZjMTZhYjQyMTRhZjhlOGU1MGE4MDMzNzBkOWJkNGZjOGYyYjE3ZDcgbGVnYWN5LXRydW5rCiszNjk4OCBkYzY0N2RmNTM5MjE3YTU5NWNlY2IxOTA1MzljZmQ2MmNiODk3MmEzIGxlZ2FjeS10cnVuaworMzY5ODkgM2E3ZjgyZTYwY2IyMjkyNDI4NTAyNzE0YWIwNzdmODIxZjljZGM3MiBsZWdhY3ktdHJ1bmsKKzM2OTkwIGNjZDAyYmQzNDRiMzhiMGU5ZTI2MjQyMzc3NjhlYTEyYjI4YjE3ZWUgbGVnYWN5LXRydW5rCiszNjk5MSBlZGRiMzdkNzAyYjVlMDUyMjM2MDZlZTFmYzQyODU1ODNlY2ZmN2Q5IGxlZ2FjeS10cnVuaworMzY5OTIgYzIzODQ2MDFhMjQxMTE3ZDFlNzdmZDU0ODJmM2Y0MDQwYmE4NDE0OSBsZWdhY3ktdHJ1bmsKKzM2OTkzIGFlOWI0N2E4ZDY0ODQ4NTZmMGM4ZGUxMzBjNDQ3YjFmNDIzNWVhNmYgbGVnYWN5LXRydW5rCiszNjk5NCA4YTI4Mjc5Nzg5NWYzZjEyNWQzNTk1ZWQ1NDgzNGYxOWJhNjAwYzg3IGxlZ2FjeS10cnVuaworMzY5OTUgODQ2YmEyOTcyZDdjMWJkZDRjNGRhNjM4NTIxMjQ1MDM0ZmE2YzgwOCBsZWdhY3ktdHJ1bmsKKzM2OTk2IGU0OTkyZTkzMGNiMmU1OTYxODAxYTQ0MTkwNDYxYmRlY2RkODIyN2IgbGVnYWN5LXRydW5rCiszNjk5NyAzZGI5YTkzMjc3NWU2MGE2YWY3ZGMyNzNkNDZjNWNlZmYyMjBiODhlIGxlZ2FjeS10cnVuaworMzY5OTggZmMxNjM3ZmM0NTg4OWZiYzkyZDc1MjM2MzA2M2IxYjM1NjZiZmI2OSBsZWdhY3ktdHJ1bmsKKzM2OTk5IDczNzVhZTVmOWRjNGQ1ZjU5ZWRmMDk3NDdlNWM1MWI0YTI2ZWFlZjMgbGVnYWN5LXRydW5rCiszNzAwMCAxZDk4MzUwODJiZTVhZWNhNmE1ZjdlYzI2NjAwNzU5YzI0YTRjNWYyIGxlZ2FjeS10cnVuaworMzcwMDEgYWQyNjhhODQwOGY0ZjZiZWI1NzJiZWQzMGY1OTJhYmY1ZGViZjVjMCBsZWdhY3ktdHJ1bmsKKzM3MDAyIGEzNWU0ZDM1ZDE0MjUxMmNkMjhkNjI4NTE0NGY0NjE0ZjBhOWJhOWEgcmVsZWFzZTIzLW1haW50CiszNzAwMyAzYmViNTRmOWQyYmJlODgyN2ZlYTc2Y2Q0ZGFiNjY2OWU0ZGE0YmM3IGxlZ2FjeS10cnVuaworMzcwMDQgMjg5M2RjOWI0ZWY0ZGFkMDQ1Mjk1ZjE1Njg4NWE2ZWIzNzMyZDIwYyBsZWdhY3ktdHJ1bmsKKzM3MDA1IDIyZmE5NmM0MTNhZWMzYTE1ODc4YTY2ZTBjNGQ0MDA1MTkzNGM5ZDYgbGVnYWN5LXRydW5rCiszNzAwNiA5NTFjY2Q4ZjM0Mjg4NmViYjYwYWM4MmIxODA4OWEyNDJiZDU0YjQzIGxlZ2FjeS10cnVuaworMzcwMDcgODc3OWM4YzRkMTgxYWY0NzUyY2I5MWQ4MTViNzIwMDQ5NDE5MDRmMCBsZWdhY3ktdHJ1bmsKKzM3MDA4IDljODQxY2FhMGU4MTRhZTZmNDk2NWRiNWM5NGQ5ODJkNWZiY2Q0YzQgbGVnYWN5LXRydW5rCiszNzAwOSAyOGEyMDVlY2I0ZGQ4MDU2NDc2MjMzNDYxN2YxZmZiZmJkMGRiZDFiIGxlZ2FjeS10cnVuaworMzcwMTAgOGU4N2E2ODM0OTQyZTRlZmE3NjEyYjE5YzU5YTJkOTFlYTlkMzE5NCBsZWdhY3ktdHJ1bmsKKzM3MDExIDhjMGIwOGIyNDc3YmZkM2E4NTFjNjViYjM3OTQ4ZWRkOTk5ODg1MmMgcmVsZWFzZTIzLW1haW50CiszNzAxMiA2MTJkZTI2OGVkNGJlMGJlMzNiNTQ5M2UzOTY5ZWE5YTAyZjU1NjJlIHJlbGVhc2UyMy1tYWludAorMzcwMTMgZmQ5MmVhOGI1YjUxYmQxYTY0NmVlNDk3Mzg5MWU0YjhjNjFmN2NhZiByZWxlYXNlMjMtbWFpbnQKKzM3MDE0IDdhYWUwNmIxZjFkZGNiMzY3OWI0MTc1YjFkODNhMzIyMTNiYTU4ZWEgbGVnYWN5LXRydW5rCiszNzAxNSBmZjlkNWE3MmQ1NGI3MjA4MDBmODhjNTQ4OGU3MDBkMmFkZWU0NDUxIGxlZ2FjeS10cnVuaworMzcwMTYgYjU1ZGJjY2VjYzcxNTA2NjYwMWRlYzNhZWQxMzExMTM5MzRhNWUxYyBsZWdhY3ktdHJ1bmsKKzM3MDE3IDRiNWI2ZTg2MWZjZjZlYjNiOTgxMjZhZmI3YzhmOTZjYjNiYWNiMWUgbGVnYWN5LXRydW5rCiszNzAxOCA5MzM1NDhmZTdiOTdiMGEyYjYzNzFhZWU3Y2YyNzNkOTIzYTIwNWU3IGxlZ2FjeS10cnVuaworMzcwMTkgYTM2MjAxNmU5NTBkNTBjNTJjOGY5ZTQ0NzgyZjFkZjkyOWUxMWY2MCBsZWdhY3ktdHJ1bmsKKzM3MDIwIDJiOGJkYjA2OWUwYWViZGQ2ZmMwOTM1MmU4NzFmZTBhNzhhNTE1NDkgbGVnYWN5LXRydW5rCiszNzAyMSBiMmY0MjdkYjIyOGIxNDZmNTIxZThlZGFmNTg0OWEyOTNlMjg4NzUyIGxlZ2FjeS10cnVuaworMzcwMjIgM2Y5ZDIxZWM1MDRiNGZiZmRhNzBmZDE0OTAwNmM2NzNiNWFkODZmYyBsZWdhY3ktdHJ1bmsKKzM3MDIzIGEwNTkzMDFhNGNkZTNkNDExZWJmMmQ2NzgzYTIyMjRmMDlhYmRiNzYgbGVnYWN5LXRydW5rCiszNzAyNCBhZTRjYjI5NDc0MDBlYjJhZjM5YzNiZTk0Y2Q0ZGIyZmM1YWU3OTIwIGxlZ2FjeS10cnVuaworMzcwMjUgYmZiMjkxZjg1ODcxNWE3N2VlMGEyN2U1YTJkODFiNDk4MGM0NzMxMCBsZWdhY3ktdHJ1bmsKKzM3MDI2IDIwOGZlNzE5Yzc0OWI1MWViMjdmODhiM2I5YzBmZjVmYmEwMDMwODcgbGVnYWN5LXRydW5rCiszNzAyNyA2ZjA5YjUyMGMwMWM1OTBmYzhhMTAzMGQ3Nzg3Mjc0ZmIyYjdiMWI1IGxlZ2FjeS10cnVuaworMzcwMjggMWQ2ZWVmYmNiYjM3NDdlMGQyYjkwOWJkNzBlYzA3OTNjYTZlMjE5ZSBsZWdhY3ktdHJ1bmsKKzM3MDI5IDM1N2IyNGMzNDZiYjBkNjY4ZWFmNmU1NmRlMTA0Zjk0ZWY3NDllMjAgbGVnYWN5LXRydW5rCiszNzAzMCAyZThkMmJkZDMzZGVjZGI2OGU4NGI5NThlM2Y1NzA3YjA5OTY4ZjNiIGxlZ2FjeS10cnVuaworMzcwMzEgOTZiZjQwMjQ4OGM3MGE2MTUzMGQ0ZjNhODNjNWJmODUxYzIzYmIyYSBsZWdhY3ktdHJ1bmsKKzM3MDMyIGJlZDQ1YTZiOTkzYmE5NGFiM2YxNzk5ZGNkODg2MDc2M2VmZjllZWMgbGVnYWN5LXRydW5rCiszNzAzMyA1Nzc4ZjYzMzEzMzRjZTM2YzNkOGZlZTJkYzMyZWViMzVkN2I5MzYyIGxlZ2FjeS10cnVuaworMzcwMzQgYTU3NjllOGYxYzZmZGU3NTJiZTA4NDViMGU4MDZiNzQ3ZGM5MzA2NSBsZWdhY3ktdHJ1bmsKKzM3MDM1IDRjZDc3ZGU1NTFlNzQ1YjFhZTEwY2UwMDY2ZmJjMjg1YTYzZWQ2NTcgbGVnYWN5LXRydW5rCiszNzAzNiAxZjk1MjIyMzhjODYzMjE3YjE1YTQ5Y2Y2ZjA5MmFjZGM1YWViNThkIGxlZ2FjeS10cnVuaworMzcwMzcgZTA1ZTlkMDU4MzBkMDkxYzNmOGY5NDMxZjNjYTQ3ZjZjOTNlMmY5MiBsZWdhY3ktdHJ1bmsKKzM3MDM4IGY2ZmE2NDlmYzRhZjc0ZDNmZDNhMzY3NWQyZjIwZjFjYTgyZWNkNDkgbGVnYWN5LXRydW5rCiszNzAzOSBhNmM4MDE3MGZjNTM4MmY5MzkyODEyMjhiNjhjNDA5OWI2OWQ1ZmNmIHJlbGVhc2UyMy1tYWludAorMzcwNDAgNDUzNmIwMzE1MTU3N2I5NTRlZmNhMTEwYzI3YWNhODFjMzIwMTEzNCBsZWdhY3ktdHJ1bmsKKzM3MDQxIDE3OTczZjJlM2UwZTg5N2M3NDlkYmIyOTFjOWU1NjQzZjE5Yzg3ZDcgbGVnYWN5LXRydW5rCiszNzA0MiA2NjY1NTdjMjkyNGRmY2ZiMTZkMmI1YWM0YTNmNGExMzEyYWMzYWExIHJlbGVhc2UyMy1tYWludAorMzcwNDMgYTI1MTRlMmQxYzc0ZTA2ZDk3YjZmNzU3MTVhMDI3MjMyMzAxZmQ5NCBsZWdhY3ktdHJ1bmsKKzM3MDQ0IGFhZDExODY0MzU5ODhiMmFiOWNiNmRlOGU5OTBmOGM2MDMxYjc0ZjIgbGVnYWN5LXRydW5rCiszNzA0NSAwZDE2MjdjNDQ3NjkwY2FmZDNiYmUwNmUzMWQ4NzFhM2VlMjUxZTg3IGxlZ2FjeS10cnVuaworMzcwNDYgMjk2NWFlOTRhMjNmZTM0MWNiN2MwZDk1ZTgyZTdjZjVhNzU1ZTQxNiBsZWdhY3ktdHJ1bmsKKzM3MDQ3IDQ0MDFkZWE3MjRmMGFmYzE2NTI2YWZlMDExYzY0NTc2YWViNTA3N2QgbGVnYWN5LXRydW5rCiszNzA0OCA4ZTkxN2I5ZTcwZTdkN2M4MWUzZDkyNWNmOGQ1MzEwMWE5ZGEzZTQwIGxlZ2FjeS10cnVuaworMzcwNDkgZmViNTI0N2JhMGM4MGIyMjY4MmU1OGE3MmE4N2UyN2EzN2E2MmYyOSBsZWdhY3ktdHJ1bmsKKzM3MDUwIDRjNzhmY2I2MGRmMzA5MWMxODgwNDY1Y2Q3NDYxNjBjNjIxOTc3N2YgbGVnYWN5LXRydW5rCiszNzA1MSAzNWJiNjJhYzU1ZmVkYTRjMmM1N2UzZmVlMjYyNDMzNTA1YzU2MmFkIGxlZ2FjeS10cnVuaworMzcwNTIgMGZlY2NmMTliMTZkNWM0YzBkYTQxODM2YzczZjM0MmFkOWU0ZGZkOSBsZWdhY3ktdHJ1bmsKKzM3MDUzIGRlODA0ZWRmOGJjZDU3ZWU5ZDAzZTI0YzE1MjJhOTMyODQxMDNhMDEgbGVnYWN5LXRydW5rCiszNzA1NCBiMGYyNjgxYmNmN2ZhNzQwZGQxNWNkY2I3NWFlYjkyMWI0ZmRkMGI5IGxlZ2FjeS10cnVuaworMzcwNTUgZWRiODUzZWQ2Yzc4YjM1MDUyNjY5MzhjMWJkZGEyZjQ3MjFiMTEyZSBsZWdhY3ktdHJ1bmsKKzM3MDU2IGJiZTY4NDc0ZTUyMjBkNzZmOWQzY2Q1Mzc5NzIwNTZmZTVjYTg1MzIgbGVnYWN5LXRydW5rCiszNzA1NyBkMjg4M2M0MmMyMDRjMDRmMjQ2N2ZlZjg3ZDg5MDEyZWNlN2QwZDE4IGxlZ2FjeS10cnVuaworMzcwNTggMDk2ZGU0NTgyN2M3YjY3NGJmZWZlNmUzNTI3Y2IwMjdkMDM5NzU2ZSBsZWdhY3ktdHJ1bmsKKzM3MDU5IDdmNTdiM2M3ZWJiZmZjYjVlOGU4ZGU0MTNiYTNlZWZhZWEwMDhlOGYgbGVnYWN5LXRydW5rCiszNzA2MCA5MzRhNWRiOWI5NWI2MTIyOWZkOGZhN2FiOGIyYjRkYTBiNmI5YmExIGxlZ2FjeS10cnVuaworMzcwNjEgN2RhOTIwMWJjOGI1MzJjNmRjMzY5OTdhMjY2NzIxNWRhNWUzODhjYyBsZWdhY3ktdHJ1bmsKKzM3MDYyIDAxNzIyN2U0N2MzZGVmMzFiOGMwMTgxNjZkOGYyYWNmN2YzMmNhZTkgbGVnYWN5LXRydW5rCiszNzA2MyBlYTQ4NzRlMDIxZTgwZWFjZTY0ZjgxMmZkZWE4NzUzOWZiMWM0NDUyIGxlZ2FjeS10cnVuaworMzcwNjQgMjY1NjMyMDQ2NjBjYmNiOGUyNDQ0OTNkNzliZjAyY2RlZjBkMzBjNyBsZWdhY3ktdHJ1bmsKKzM3MDY1IDM0N2Q3MWMwZTAxOGRkMTc5MTUwNTM0YTM3YjA4M2Y3YzAzOTMzYzMgbGVnYWN5LXRydW5rCiszNzA2NiAxZDBmNGMwMzU3ZDAwNGYyOWVmYjE1YjY1YTg2ZmVlOGI0MTE4YTZlIGxlZ2FjeS10cnVuaworMzcwNjcgZWFiMjFmYmY5YTcwZjk3MGRkOWQwYjFkMDY0ODM4ZmQ4MDE0OWExMCBsZWdhY3ktdHJ1bmsKKzM3MDY4IGMxOGFjYTdlODFjYjVmNzc3NjhlYTljNGI0ZThmMWY2NTUyMTFjMDUgbGVnYWN5LXRydW5rCiszNzA2OSA5MDU2OWFlM2UzZjNmMWNkZTEwZDdhZmQ1N2Q4N2FmYzM5ZjQyNWExIGxlZ2FjeS10cnVuaworMzcwNzAgNjk3MDA2ODdlMzBmNTE1YTY0NGE0MmMwOWExNzBiNmIxNDExZGQ2NyBsZWdhY3ktdHJ1bmsKKzM3MDcxIGJlZDYyZjM5OWRhYzBiZjU0NzFlMjY4OWVjYzMyOGVhM2ZlOTk4NzcgcmVsZWFzZTIzLW1haW50CiszNzA3MiAwNDg2NGMzOWIwMDYzMzNmMzJhYzI0OWVhMThlMjc2Mzg1Yjk5MzU0IGxlZ2FjeS10cnVuaworMzcwNzMgMzRhOGQ3NWVkZDJiMDNhNTFhN2IxNDE4MTE4NzQxNGY2Y2IxYjQ0YSBsZWdhY3ktdHJ1bmsKKzM3MDc0IDE2ZGZmMzBlNjZlYzBlNWQ4YzhiNzc4ZGFjZGQwZWU3YWUzMGIwNzcgbGVnYWN5LXRydW5rCiszNzA3NSBjOWI5OTMwOGIwZThjYmY5MGY1ODZmMDJjOGNhMTkxNDU0NjIyNDQxIGxlZ2FjeS10cnVuaworMzcwNzYgOTQyMzBmNmI1ZWJlNTJmNjMyZDEyNzMyZGY1NGVhZDcwOGIwOGE4ZSBsZWdhY3ktdHJ1bmsKKzM3MDc3IGRiMWJhZmE5YjY1NjEzNmI4N2NlN2JjMTMwNDA1MTkzNzQyNjg5MzIgbGVnYWN5LXRydW5rCiszNzA3OCBkOTc2NWViNTllZGQ3ODU1Y2I2NjRjZDNjMjQzNzI1YTBmMmEwN2E0IGxlZ2FjeS10cnVuaworMzcwNzkgOGQ3NzEzNGFhYjgyZjQwOGUyNmI4ZWE3ODA5NjRlZTMyNmY5NzQ4NyBsZWdhY3ktdHJ1bmsKKzM3MDgwIDZiNzQzY2JjNDE3MTBlNjI2NGU4Y2ZjYjQyNGNiZjkxNWJmMzMwZmUgbGVnYWN5LXRydW5rCiszNzA4MSA4MjUyZTk4OWNiYjE1YmY0NzZiN2FhNTJmMmYwNTQ0Y2ZhY2IxOGU3IGxlZ2FjeS10cnVuaworMzcwODIgMDY2Yzc4OTBjZDYxNTUzMGFhYWQzYWExOTg1OTVjMjNiMTA2MWRmOCBsZWdhY3ktdHJ1bmsKKzM3MDgzIGQ4NjFhYTg3NDUyNTU4ODdlMWE2M2E4MWM5NWZjY2NiYjcwZmZlODIgbGVnYWN5LXRydW5rCiszNzA4NCAzMjM1ZTczOWJkYTEyZWYxODk3N2MwOGNiYjE4NTEwMzgyZjg0MmYzIGxlZ2FjeS10cnVuaworMzcwODUgYWNkOWJmMmUzYmNmNTE1OWJmZmVkNzk5Mjc5NDVmYmJlMWY5NThmMSBsZWdhY3ktdHJ1bmsKKzM3MDg2IGU2MzA0ZDY2ZDk0NWI1Njk3OWQzODdiODlhNjE0MzZjYjk5OGRhYjMgcmVsZWFzZTIzLW1haW50CiszNzA4NyA4YWJkMzIyYTAxM2FiNjhjZGNhYTZkZTMxMDRiOTNlYWRiM2Y3NTAzIGxlZ2FjeS10cnVuaworMzcwODggODQ5MzEwODBlMDVjYzNmOTk5OGI3NTRiYzg5MjFlZTk5MTc3ODYxMyBsZWdhY3ktdHJ1bmsKKzM3MDg5IDU3YTY2ZDcwMGM3Y2ZiYWE2NmEzYjQ3Y2RjNmVkYTJhM2I2MDk4ODkgbGVnYWN5LXRydW5rCiszNzA5MCAwYThkMzlhY2E5OGM1ZmVjY2RmN2M5MTc2MWU3NDA0N2YwODBlNGExIHJlbGVhc2UyMy1tYWludAorMzcwOTEgYTFjZjRhMjlhYzMwMDcwODdlYTg5OGZlOTk2MjU2ZjExMzgyMzAzZCBsZWdhY3ktdHJ1bmsKKzM3MDkyIDQwYjVhZWUyMGI4MzE3MmVkMzRiNDFhODE2ZmJhN2NhNjI5YjIyOTEgbGVnYWN5LXRydW5rCiszNzA5MyA3ZmVjMDY2MmNmNGFhMmRkZmU0ZGI3ZmEwYTU0OThkYWU3YzAxNzQ3IGxlZ2FjeS10cnVuaworMzcwOTQgOWM1NzBhZjUzNTZlN2UxYjc2ZDkxYWFlNDAzYmMwM2NlNjM4YTdjZiBsZWdhY3ktdHJ1bmsKKzM3MDk1IGRlYTk4ZWVkOGNmMGM4YWZmMzYyODQxMTdjNTgzMjQ3Zjg5M2RiYTggbGVnYWN5LXRydW5rCiszNzA5NiA2OTk3NmNmNTkxNDk1ZmU4NGFlY2E5ZTViZjU2NTIxNGVmZDg0MDQ1IGxlZ2FjeS10cnVuaworMzcwOTcgNzdkMzY0MmViODdiZTdhODczOTZmMTQxMzFiYjI3NThiNzMwNjM3YiBsZWdhY3ktdHJ1bmsKKzM3MDk4IGFiMzQ5ODBmZmExNjkwYTk1M2JmMzIxMGUzYmE3M2FmNTVhZGRhYzggbGVnYWN5LXRydW5rCiszNzA5OSBmOWY0YjE5ZGQ3NTVkOTAxYWIxOTU3Njc5NTU5NzFjZjNiMTVjNDFiIHJlbGVhc2UyMy1tYWludAorMzcxMDAgMjJiNjNlZDJkNWIyMjczZmJlOWVhMGNiMDk4MDRlNzU4NzFmZDFlOCBsZWdhY3ktdHJ1bmsKKzM3MTAxIDJlMDk2NmRiZDY3OGIyOGVhODVkOWYzODgxODlkOTExOWEzOGEwZWIgbGVnYWN5LXRydW5rCiszNzEwMiBmOThlNTlmMmY4OWQwOTFlNDBhZWY1NmRjNGI2MzUwOTgzNjA3M2ZkIGxlZ2FjeS10cnVuaworMzcxMDMgZmI5ODY5MDQ0YmJhOWY3MjE3ODlhY2VjZmVkZmU4YzdjZjA2NDY0MCBsZWdhY3ktdHJ1bmsKKzM3MTA0IDcxNDI3OTE1Nzk2ZWRjMWMzMzUyODg5ZTBjYmU1ZThhYTU4OTA5ZGIgbGVnYWN5LXRydW5rCiszNzEwNSAyY2FhNmYxOWEyZTY2Y2VjZThkYjFiYjBhOGFhMjkxYjQ0NzQ1M2Y4IGxlZ2FjeS10cnVuaworMzcxMDYgNTYxNzAyMzUwZTA5ODA3YjNjNTI4Y2Y5YmEwMjk5MGFiYmY1NTgwOSBsZWdhY3ktdHJ1bmsKKzM3MTA3IGNkMmE5NWNmYzdlYjQ4YWFmNWZmYTQzZmIzNDA3ZWQxNzA1NjA4N2UgbGVnYWN5LXRydW5rCiszNzEwOCAzOTViYjM3NDZkMWQ0ZTA2NjQ3ODI1OGY3NTBiNDBjMjUwMjgyYjdhIGxlZ2FjeS10cnVuaworMzcxMDkgODRhY2M3N2MwNmI4ODhhODZmYTQ5MWEwMDJlZTE1Y2E1NDEwOTA3YSBsZWdhY3ktdHJ1bmsKKzM3MTEwIDAzNDQwMjcyMDI4Yzc5NzM0Yjk4MWYyZTUxYjJhZjU3MDFmODE2NDMgbGVnYWN5LXRydW5rCiszNzExMSA5OGRiMDlmZDQ0M2NmNjdiNWFlYjNlNmEwOGMyYzNhMmE3ZGZiNTJlIGxlZ2FjeS10cnVuaworMzcxMTIgMWY5YjljMjI2YjQzZWQyMGNiNjFlNmQyMWFlYTZjYjk2NmU4YmNkMyBsZWdhY3ktdHJ1bmsKKzM3MTEzIGM2NTQzMzRkYzk2MThlZTA1Y2ZmMjU4MzczMWIxZDA1ZTY1ZjZhMDkgbGVnYWN5LXRydW5rCiszNzExNCAxMmVmNTZmODhhOTBiZTUzNjhjMjVjNTM3MzM3MzhhZTc0ZjA3YmNmIGxlZ2FjeS10cnVuaworMzcxMTUgOTU3NDRhNDIwOGEyNzBjMDViOWM5NTQ4YzExMTY1OWJiMGQ4MzIzYSBsZWdhY3ktdHJ1bmsKKzM3MTE2IDM3N2M1MThkODQ4MzQzOTc2YjkyOTQ3OTAxMzJmNjNhMzhmMWM2ZjIgcmVsZWFzZTIzLW1haW50CiszNzExNyA4ZGQzNWY1Yzc5MjgyYTcyMmI2OTU4NGUxOGYwNmYzOTcyMDI0MTcwIHJlbGVhc2UyMy1tYWludAorMzcxMTggYjRjYjQ5ODI5ZDNlZWVkYjBmNGIxYzI3NzA2ODRlZDVkOGY1ZDgwYyBsZWdhY3ktdHJ1bmsKKzM3MTE5IDNmYmQyZDFjYTViYjYwZDNhNjcwOWIxN2ViOWMxYWYwNjZhODFkMzMgbGVnYWN5LXRydW5rCiszNzEyMCA2NjQxZDA1NDI1OTI3ZjJhZmE2YzEwMGUwZjQyOGUzNTUyMWM5YjFkIGxlZ2FjeS10cnVuaworMzcxMjEgMTFhNGZiYzg4YTgwMGM1ZTFhMzQ4YjdmNWZkNDk2MWI2MjNiMzU0YSBsZWdhY3ktdHJ1bmsKKzM3MTIyIDk5M2ZkOGFjYzkwZjI4NDczM2EwODhhNWRhMGQ4ZGEzNGFjNWU2ZWIgbGVnYWN5LXRydW5rCiszNzEyMyBiNjNiMzA4MjFlZjQ3OGQ5MGViOGFhZTcwNzQyM2UzYjMyODdjMDdlIGxlZ2FjeS10cnVuaworMzcxMjQgOTY1ZTk2ZTE1Mjk5MDU2MzdlN2JkNWYyZjE3YjliODM0YzI3MzljMiBsZWdhY3ktdHJ1bmsKKzM3MTI1IDFjZjdkNzIyNWE5OTYzODdjNzA2NTY4MTgxNDVmYzE1MjJjYzllOTcgbGVnYWN5LXRydW5rCiszNzEyNiA3YTFmYjMxNmU2NTUyMmQxNmM3Njc0YTdmYmYyZjgwNWNlMmJiYTNhIHJlbGVhc2UyMy1tYWludAorMzcxMjcgOGNkNTc3OTZhOWNmODEwYmJlZDhlMTc1NDFmZTE0M2IwNjhkMDUwNiBsZWdhY3ktdHJ1bmsKKzM3MTI4IGYxMDcyYTMwYmI1ODEwOGU4ZDc3NmU3ZmExMGNkM2QzZGI3N2ZmYTYgcmVsZWFzZTIzLW1haW50CiszNzEyOSBiMDQ1MDcwMTcyY2IyZjc1OWUzNWNhNDNkM2NhM2Y1ZjFmNTkxYTk5IGxlZ2FjeS10cnVuaworMzcxMzAgNGU5ZWNiZjQ3YjZiYTk3YzhiNzVjMmFlMWUzNTRkMDdjZDgxODNjOSBsZWdhY3ktdHJ1bmsKKzM3MTMxIGQ2NzVlM2UwZmU3OTY4ZWMxNzA2NDQ4ODMzMmZjYmVhZDczMTMxM2UgbGVnYWN5LXRydW5rCiszNzEzMiBhNDdmM2QyZmZkMjIxNTRmZjc4ZGY5NWZiNjI4ZjhiZDA2M2QyYzgwIGxlZ2FjeS10cnVuaworMzcxMzMgMGVkNGZkN2EwZTJlMGY1MDNmMmRlY2I3M2RjY2M0MjRiNzc1ZGU2ZiBsZWdhY3ktdHJ1bmsKKzM3MTM0IDMwMTY0NzFhZTU0ODliYmY5ODc5YzFkNzNjZWMyZmIwYzAzYzI2ZTQgbGVnYWN5LXRydW5rCiszNzEzNSAzZGJkYmQ1NzJkOTQxMjkyN2U4ODM2NTIwMzEwZTA2NjEzNWVkOTEzIGxlZ2FjeS10cnVuaworMzcxMzYgYmFjOTk3Yjc5YjE5MjVkNmI4OTJkM2Y4YjRjZjk4MGI4MzI3ZTVmMSBsZWdhY3ktdHJ1bmsKKzM3MTM3IDRjYTlmYTIzNTNiZmE0M2IzODZlZGJlZDJiZDk0ODA0ZjViZTMwMjUgbGVnYWN5LXRydW5rCiszNzEzOCAyNzI3NzE4ZTllOGY0MjY0ZmI2ZDE3YTE3ZGYxOThlMmJhMWNmM2QwIGxlZ2FjeS10cnVuaworMzcxMzkgYTEyZDk4NGJkOTYyZDk1MmRjYTA3ZmE2NGI0OWIzZGI5ZDQ5NGIwZSBsZWdhY3ktdHJ1bmsKKzM3MTQwIDhkMWI0Y2Q4YTEyNDU0ZWY2Y2FhMGE5YzUwMWNkNWU1ZTJlY2RiNWQgbGVnYWN5LXRydW5rCiszNzE0MSAwYzczNDkzMmM2ZjQxZWQyZDUwZmUzYzA2N2MyMGI3ZGI3ZDI3YTQ1IGxlZ2FjeS10cnVuaworMzcxNDIgMmIxMzY0NDEwMzVjODMzZWU0YmIyNWNhYTc4YzJjMDFlYzc4ZGI5YyBsZWdhY3ktdHJ1bmsKKzM3MTQzIGIyNWNiMjA0NWRhY2IwOTdkZDExM2VlOGFkZDdjMTEwYWU2Nzk2YTcgbGVnYWN5LXRydW5rCiszNzE0NCA4MjZhZDg5NmE3YTVjMzViYTA0YjUzNzI3YzUyYmE3ZDExZjI2ZDUzIGxlZ2FjeS10cnVuaworMzcxNDUgNGFmZjFmYmNlNzUyNGYxYzQ4ZjhkMTJiMTcxYjBmOTc0ZmY3MTMyZiBsZWdhY3ktdHJ1bmsKKzM3MTQ2IGVmZjc2NmUyOWM1NTI1YTA3MDVmMmJkZTZjNWRiZTdlOTkyZTYyNDAgbGVnYWN5LXRydW5rCiszNzE0NyAyNzQ3ZGJkNTkzOGI1NmY4ZDk3NTAwZWVkZjQ2YTAxYmE3Njk1ZmY1IGxlZ2FjeS10cnVuaworMzcxNDggMzQ1ZmFjNjZkYWE5YjE3M2RmZWQyZDhhMzkxYWJjMTVjNTU3NDg5NCBsZWdhY3ktdHJ1bmsKKzM3MTQ5IGVlNzAzYTA5NGRmYmRmMTAwYTlkYmQ5YzM1MDM3ZGNlNjkzMmYzZTQgbGVnYWN5LXRydW5rCiszNzE1MCBlNTg2Y2JlY2RlYmE2MjkwMzNkNzg1ZDAxNTMzNTE1NDY3OTQ2YjFkIGxlZ2FjeS10cnVuaworMzcxNTEgNDQ5MTQxYWEwMTFjOWE0MzYxMzdkYzk5OTgzMTdiYjk1MTI5NTkwNyBsZWdhY3ktdHJ1bmsKKzM3MTUyIDhhYWQ1Mjk2ZmVjOTYwMzQ3MDk1ZTFjNDc1ZjgwNGNmMjBmNDY3ODkgbGVnYWN5LXRydW5rCiszNzE1MyBmZjg4ZGE0MDA3Nzg1ODljMzI5MzgyYjllZmZkZWYyZTE3NmM5ZjJlIGxlZ2FjeS10cnVuaworMzcxNTQgOGQyNzY1NTFjZWE5NzJhMGI3ZTFjMTc0MjZhNjQyMzM4ZTY1MWY4NCBsZWdhY3ktdHJ1bmsKKzM3MTU1IDRiMDBhZTFlZmRkODZkYzM5MzQ1MzQ5MDRmNWNmMjY0OThlODAwODkgbGVnYWN5LXRydW5rCiszNzE1NiA4YTRjMzA1NGEzNmM5NDZmNDgxMzhkYzZhZThiNWYzZGViN2JhYzM1IGxlZ2FjeS10cnVuaworMzcxNTcgNWZhYjRmNDNiOTRmNzM3MWI1YzAwZGE5NmJjN2U4ODY0NGFiYTIwOCBsZWdhY3ktdHJ1bmsKKzM3MTU4IDY3ZmJiZWIxZTIxODFlMDAyZTQxMGE4NGJiOThmODkxZjI1NWU5OTEgbGVnYWN5LXRydW5rCiszNzE1OSBlMDdhNjIzNGI3M2IxZjQ3NzU4MGZiY2IyN2RhMjUxNThjNjAyZjAzIGxlZ2FjeS10cnVuaworMzcxNjAgM2UyNWQ2ZTNkYTE5NDg1YjlmZjhiMDQ5MWU4MjcxOWUzYTY3NzdhZCBsZWdhY3ktdHJ1bmsKKzM3MTYxIDk2ZDUzODQ4OGFlZWFjM2JmZTY2MzlhNzk0MTRiNjcwNzQxZjlkZTggbGVnYWN5LXRydW5rCiszNzE2MiBhMzdhZTdkYmE4MTRiNzNmYTUzMDE4NjdhNWM0NmViYmY3MjQzMjk3IGxlZ2FjeS10cnVuaworMzcxNjMgYjI5MTBlNDc5ZjA3YjExMDMxNDM0YjExNTQ0NjcyY2JiZmUwM2QyZiBsZWdhY3ktdHJ1bmsKKzM3MTY0IDc3ZGUzODUzNGQyNjMyODc2NDYzZDViZWFhOTc5NjM4OTAzMzA5N2EgbGVnYWN5LXRydW5rCiszNzE2NSBiMWMyNmU4OWM0NjRkNmE4OWM2N2JhY2VlZTE1OThlNTk0Y2EwMGUzIGxlZ2FjeS10cnVuaworMzcxNjYgZTE5YjAwOTc1ZDVlODYyZjBhZWM5ODE1ZjI1MzZjMzU5OTdlYzM5NyBsZWdhY3ktdHJ1bmsKKzM3MTY3IDUyMWI4Nzk1ZGY5YmU0ODgxMDAyYTE3NzliYTNlNTUwNjFiY2I4NzMgbGVnYWN5LXRydW5rCiszNzE2OCA0YjMyNDg5YzM0YTdhMTFkNWJjYTg5NWE2NmYxNzQ0NzUwODJmZWQzIGxlZ2FjeS10cnVuaworMzcxNjkgNzhiNTc4YzQ2NzcwZTUwZTYwMjhmY2JiZTdmNTQyNjcyYzk4MDY1ZCBsZWdhY3ktdHJ1bmsKKzM3MTcwIDdmNjE3MDI1NTY1ZTgwZjA3NTU1ZWU5Mzc3NzJjYzZhZDc0YjM2YTIgbGVnYWN5LXRydW5rCiszNzE3MSBjZDE1NjQyMzA5NDc4ZWQ1ZTBkYTZkMzUyNDY5NWQzODEzZjUyOGE1IGxlZ2FjeS10cnVuaworMzcxNzIgZjI4MDcyZTY0ZjgxNzY3NDNkYzAzOGJjM2FkNGJlNTEyYjkxZDBmZSBsZWdhY3ktdHJ1bmsKKzM3MTczIDU5ODA1MDAxN2I1ZTQwMWQwMjAyMTBhMWFhNDBlM2I1Mzg3OThkNTEgbGVnYWN5LXRydW5rCiszNzE3NCA4NTc5ODU5ZjE5OGM3OGFjMTQzZWU2N2NjY2Y5MmE3NjlkOWViNTI1IGxlZ2FjeS10cnVuaworMzcxNzUgNTliZDEyMWVlZWI3MWM3NWNlZjhhM2M4ODUzZjc4OGYyNTA4NzJhOSBsZWdhY3ktdHJ1bmsKKzM3MTc2IGJmMGVmNWZjNDlmMWU4NzcyYTdmY2QzZDVmOTkxOTVhMGZkMjMzOGYgbGVnYWN5LXRydW5rCiszNzE3NyA1NDJhNWVmYTQ4ODNiYTI2NjhkNWEwNDQ0N2Y0MDdiMzQ2MjM0MjE2IGxlZ2FjeS10cnVuaworMzcxNzggMmY1MmRmMTczOTUyOTViNjQyNjMwMzhhMGJjNzhlOTFmMGY3YWZlMSBsZWdhY3ktdHJ1bmsKKzM3MTc5IDk2YmI0NjY5MWU4NjA2MzJkMjMzOTRiM2JiY2IzODAwNWEwNjQzZDUgbGVnYWN5LXRydW5rCiszNzE4MCAwYjE4MWJmMjMwYzkzZjY2MTdiYjUwM2ZiNGIwNWIxNzg3NTVlZDc0IGxlZ2FjeS10cnVuaworMzcxODEgY2YwZWExOTg2OWFmNWVhNjQ5N2QzNTg4YThkM2FhYjRiYzE0NmI1NyBsZWdhY3ktdHJ1bmsKKzM3MTgyIGI1NzYxMmY2MWJhM2YzZWRlMWE5MmUyNzViZjA3MjVkMTVlZjMwNGEgbGVnYWN5LXRydW5rCiszNzE4MyA2ZDNiZGQxOWJlZWIzOTk0NmJjNjkwODI4Mjc4YWMzNzU2YzJiOWNiIGxlZ2FjeS10cnVuaworMzcxODQgZDViMDk3NjA4YzlkZWNhYzVkMjA4M2M4ZDY3ZjgxMmJkMDAzOWY2YiBsZWdhY3ktdHJ1bmsKKzM3MTg1IDNlZTVkZWMwY2EwN2NjYzM1ZmUxMmQxOTU0MGFjNmEzYThiYjg1ODQgcmVsZWFzZTIzLW1haW50CiszNzE4NiAxYmE3NDY5YTNiNDliNGQwZDRmMmZmMWQ3MjFlN2EyYTliNzhiMTNlIGxlZ2FjeS10cnVuaworMzcxODcgMDBiODlhYjQ0Y2ZkN2NmNDBlZjBlNDFhNGQxMDRkOWVkMzE0MTZkNiBsZWdhY3ktdHJ1bmsKKzM3MTg4IGEyNWFmNjhkNzFmYzZkNGQ3NDdiMTAyYWYxMTRjNGYyOTRlYjc1ZjggbGVnYWN5LXRydW5rCiszNzE4OSAxNzY4YWZmOTI4NjRkNjhjOGJkZTk3ODVkZWM2YzMyMjEzMDllOWMzIGxlZ2FjeS10cnVuaworMzcxOTAgNzg3ZmZmNTFiZjJhYWQyODMzYTYzZWU5Zjc3ODM2MDYyYTI3MDQzNiBsZWdhY3ktdHJ1bmsKKzM3MTkxIDU0NTJkNGVjZGRkMGM0N2ZmZGIzMjUwNGVkYzM4NzQxMDFhYTFmYzAgbGVnYWN5LXRydW5rCiszNzE5MiBmZWU1OTJmYjU2NDM2ZDkyOTE5OTg4MWNkODA5Mzc1YTg2NjE4MDg0IGxlZ2FjeS10cnVuaworMzcxOTMgOTdmY2E3MzVjOGRhNmY5ZGIxYThlNzhmZjJhOTU2ZTkzMWNmYTNkMiBsZWdhY3ktdHJ1bmsKKzM3MTk0IDIwODgxNTA1YzE0MjczOTBkN2RmYWE3NTk3Nzc3YTAyNWIyYTgzZGYgbGVnYWN5LXRydW5rCiszNzE5NSBkNTM4ZWNmMGJjNjk4NGFkY2VmYjgxNzE0NjY0NjA3MDFiMmU3MjIxIGxlZ2FjeS10cnVuaworMzcxOTYgMDYyMTc3ZGU4Njg1OGE3ZTBmYWU5NWMyMTA5ZGY1YWZhNTgwYTU5ZCBsZWdhY3ktdHJ1bmsKKzM3MTk3IGZjMGI0NTc1NTc0MzI3NjUxMTg1N2FlZDNlNTA5YTdlMzI0NWU1MGQgbGVnYWN5LXRydW5rCiszNzE5OCAwNDI0NWVmNTM5NDljMWJkMzExMTY2ZDQ5ZDllMmVjMWJjMzlkNzIxIGxlZ2FjeS10cnVuaworMzcxOTkgNTA1YzkwNjM4NTBlNGM0M2IwYWY0MTY3NzcxOWUzYjY0NzNmZGJlZCBsZWdhY3ktdHJ1bmsKKzM3MjAwIDg0ZmJhYWEyMDM1OGE3MGVmMTJlMzI2NzAyNGM0YTRkY2E2NzViZTEgbGVnYWN5LXRydW5rCiszNzIwMSAwNWMxMjVjOTg3NjcyMDc1YjU2OWEzZmQyNjQyZGUxNTY4YjU5YzU0IGxlZ2FjeS10cnVuaworMzcyMDIgMDBlNjE5ODUxYTU2OTc0OGFkNDdiYTI2MDM2YzQ1Mjc3MjQzZDNkNiBsZWdhY3ktdHJ1bmsKKzM3MjAzIGI3YWNiOTcwZjUzNjUxM2QzZTRmMTIzMThkYmQwYTZlY2UwZTIyYzEgbGVnYWN5LXRydW5rCiszNzIwNCBmMzA5OTNkMDU4OTA4ZWIwYjdhZTNlMTlhNzlmNWI5NThiZDBkY2NlIGxlZ2FjeS10cnVuaworMzcyMDUgNjhlNjhlZDQ2ZjBlOWFmNzQyYmEwMzFkZjRlZGFjZTQyMjhlMDUwMiBsZWdhY3ktdHJ1bmsKKzM3MjA2IGQ5ZTAzOTM4YTMzM2JkYjk1NDJkZjUzMjVkNzgxOWM5MzdkNjNlMDEgbGVnYWN5LXRydW5rCiszNzIwNyBkNWMzNGRiYzM2MTgyZjlmZTU0ZmE5ZDBiYjIzY2JkZTg2ZGRiYzBiIGxlZ2FjeS10cnVuaworMzcyMDggMGE3OWQ3YTkwNDBjNzY5YWZjNWViOTM0NGQwYzBlZWI5OTE4NjlhZiBsZWdhY3ktdHJ1bmsKKzM3MjA5IGU1YjRmZTk3Zjc0ZDE1ODZiMTkwNWY2NWVhYzhlNzU3MDYwYmVhMGUgbGVnYWN5LXRydW5rCiszNzIxMCAxYTU0ZmNmNDhmZTRlNjQ0ZmUxOGFiMWE1NjdiNDJkNDg3ODA0NTJlIGxlZ2FjeS10cnVuaworMzcyMTEgZGFkODI3Nzk0NzQ1Y2JjY2Q0MTFjZTg0ODBmNTUyMzQ4OTRmY2Y3MSBsZWdhY3ktdHJ1bmsKKzM3MjEyIGFkYzY2ZDMxNGM3OGVkMTZkZWExMWU0NDVlOGFiYTMzNjZiNTI1MDYgbGVnYWN5LXRydW5rCiszNzIxMyBkZGJhMTU0YzBlMDAwYWM0NTZiMGU3M2U1NTk4OGM0NzVmYmE5ODliIGxlZ2FjeS10cnVuaworMzcyMTQgYzQ0ZjA4MzQ2NWY5YzVhZWUxYWEzYzYyMDY4ZWZmYWM3NTBkNmU1YSBsZWdhY3ktdHJ1bmsKKzM3MjE1IGNmYTcyYThkZTE0Mzk5MGNhYWViYWVhY2Q0MjZkOWFlM2U4ZTM1MzAgbGVnYWN5LXRydW5rCiszNzIxNiAxMjhkNTI4NDU3ZGE1NjVmOTZkOWRjZjFmNjQ0YTRiMzM2NWViMWNjIGxlZ2FjeS10cnVuaworMzcyMTcgZjc0NzRkMzFiYTNmYTliZjBjNTA3OTk0NDZmOWJmMjcxOWJmNGQ2YyBsZWdhY3ktdHJ1bmsKKzM3MjE4IDIzZGY2Y2YyOTY1MGQ0NWFhZTFjNmI2MmE3ZjllZTU1YmIyYjgyZDQgbGVnYWN5LXRydW5rCiszNzIxOSA5OTlkMzFjYThhMTlmN2RlMDcxNmIzZjdiODNiYjMwZTA1MTc3NjBiIGxlZ2FjeS10cnVuaworMzcyMjAgZTU2MTkyZTlmZDdlN2U0OTNmYjAwMjVhNmJlMWUyZTdlMTZmOWY4YyBsZWdhY3ktdHJ1bmsKKzM3MjIxIDFkZmM5N2UyYWNkZmU0ZWQwNzBmOWEyOGNkZmQzNzc1MWMxYTI0ZTIgbGVnYWN5LXRydW5rCiszNzIyMiA5NjA0MDI1MDY5NDA3MmJiOTdkODBlYzQ4OWIyYWE5Mjk1YjBkMDI3IGxlZ2FjeS10cnVuaworMzcyMjMgYzlhODJlOWI3YjRkMTg1MTZlYTJjYzBkMjRlOGM1YzljY2I0YmYzNCBsZWdhY3ktdHJ1bmsKKzM3MjI0IGE2ZWFjM2ZlNTQyZjkzMGM4ZTYxMzE1OTNiNGYzZWNhYjBjZTdiZmMgbGVnYWN5LXRydW5rCiszNzIyNSAwM2JlMDZiY2ExNjBmYmM5YzliNThhODMxM2JlMTUzNDYyOTRjZDkzIGxlZ2FjeS10cnVuaworMzcyMjYgMjY4YzVmODNmYjg3N2FhNDE3MDNlYjNiZWQ1ODg4YjhlNDg0YTIzOSBsZWdhY3ktdHJ1bmsKKzM3MjI3IDI2ZTQyMTE4NjVlZDdiMzkwZjRlOTQxMTI4OWE2ZmZkNTY2ZTczY2IgcmVsZWFzZTIzLW1haW50CiszNzIyOCAwZjUzYmExNTllNTRlMjFlZjU1N2MwNDY4NGM4ZTY2ZmVmNzQ2ZjA0IGxlZ2FjeS10cnVuaworMzcyMjkgYjEwYjdiN2FmYzAwZDliMDhjZTgzMzkzYmQ0MjA0YTA1Njk0NTM0YSBsZWdhY3ktdHJ1bmsKKzM3MjMwIDM1NDBlMTA1MjVhMWFlYzY3YmIxNjAzYmY4OGExYzU4ODdiYjE3MjIgbGVnYWN5LXRydW5rCiszNzIzMSBkMGMwMWUwZmUyNDk2NzU3ZGNiNmZmMGI4NWFlZTFjM2M5ODdiZDNlIGxlZ2FjeS10cnVuaworMzcyMzIgZDQxMjU2YTZmMmNlY2NlY2QyMDMxNGJiMzQ0ZGQ1MzEyZjY3NzQ5MyBsZWdhY3ktdHJ1bmsKKzM3MjMzIDVmMGM3ZjVjYTZmOWYxMTk0MTExYjg3OTc1ODM3MzMyYjJhY2IyODAgbGVnYWN5LXRydW5rCiszNzIzNCBhZjY1MDA0ZjYyMmZhMGQ4OGVjYTAzMzdmYWQ3MDYyNWEwNjEzYzE5IGxlZ2FjeS10cnVuaworMzcyMzUgYWQ0M2RmMTk3ODRjNWU0NGQxNzRlMTM3OWFmNmM3NmRhMDNlOWUxNyBsZWdhY3ktdHJ1bmsKKzM3MjM2IGIyMGQ0NTU1ODY1MzZkMzQyY2Y3YTJlNzE1Njg0MGY3OWY1YjRmNzUgbGVnYWN5LXRydW5rCiszNzIzNyA3NmE5YmRhMzAyOGU4NmRhNDhhYWZjNTU4MDM4NTljMmE5MGYyNWQ2IGxlZ2FjeS10cnVuaworMzcyMzggYWRhMmE2NmI4NmE0YTE3Yjg1MWMxZWQwNGE1OTYxM2IzNGE5ZTEwMyBsZWdhY3ktdHJ1bmsKKzM3MjM5IDEyNDY0MjIyMDNlODc4NjUyYzUwMGRhOTBiNDFlNjQ5ZGE0Mzc2ZWMgbGVnYWN5LXRydW5rCiszNzI0MCA5NDY1ZmU2NzgyMjI2NjQzZDZjNTdlZDUxNWIyYzVkOTdlZmU3NjcxIGxlZ2FjeS10cnVuaworMzcyNDEgYWVlMmVlNzQ1ZjJjNWQ5OGQ4NmMwNjI3M2U2OWJiZjk3MzEzMWFkZSBsZWdhY3ktdHJ1bmsKKzM3MjQyIDc1NTFjNzI1ZmU5NmEwMWEyNDA2OTI4NmQyYzljZTg2ZjlkZmZhNDMgbGVnYWN5LXRydW5rCiszNzI0MyBmYjYxNDAzMTgwYTg1YzQ3NjkwYTVkYjU0OTc0NzlmMDYwMzMwNGUyIGxlZ2FjeS10cnVuaworMzcyNDQgYmZmZDQ5NDM1NGVlNzAyYTFiNjk5NDMzMzZmOTQyMmU0NDY0NjFjYSBsZWdhY3ktdHJ1bmsKKzM3MjQ1IGYwMDUzYTZhMmJlZGRkYjk5NjNkOTdkOWM2NDRhMGViYmQ5NWY0NDEgbGVnYWN5LXRydW5rCiszNzI0NiAzZTA2Mjg5N2QyZTdhOTEwNzM0NjJkM2NjMDk3NmFlY2I2OGYxNmUyIGxlZ2FjeS10cnVuaworMzcyNDcgZGY0NzcwYjdjYWVmYjQ3Yjk5OTgxNGMxYmJmN2M5YWFmYmFmYWRjNSBsZWdhY3ktdHJ1bmsKKzM3MjQ4IDQzODUyYzk2MzE2MDQxNDkyNzFkNDQ3NDQ5NjQxOWZiYjM5Y2IzYzAgbGVnYWN5LXRydW5rCiszNzI0OSA5ZjJkZGRlOTNhNjM5NWQ2MmRjNzIzZDVjZmM2MjA4NWFjNjNhNmM2IGxlZ2FjeS10cnVuaworMzcyNTAgYzJjNDllZTcyN2QwZGQzNDc3Yjg4ZDlhZDA1YjRkOTk4NzE0MGU0ZSBsZWdhY3ktdHJ1bmsKKzM3MjUxIDk0M2MyMmE3YzcwMWIyNzMwYmI1ZWE5ZTI2Y2E4YWM2NWRlM2MxOGEgbGVnYWN5LXRydW5rCiszNzI1MiAxMTAwNjA1ODcwZmViOGM3YThjMTI0YzAxODc4MTRhMDM4NTllZjA4IGxlZ2FjeS10cnVuaworMzcyNTMgYzkxNjhlNzllZjRjYzJkYjJlZDFmODBmZDdhZjAxOThhYjM2Mjc3MCBsZWdhY3ktdHJ1bmsKKzM3MjU0IGQxMTNjNjEzNTY3YTllNTJjMDdjNDg5ZGI2OGYzYzYwNTA1MDM2MjMgbGVnYWN5LXRydW5rCiszNzI1NSAyMjgxMTQwZDIwYzc1YzNlMmQwODc3ZmFjM2U3ZWE0Njg2OTE0ZTlkIHJlbGVhc2UyMy1tYWludAorMzcyNTYgZjgzYzVhODU3OWY4NDhiN2EwNTljMzViMTY2YjE2ZTQ0MWMxYmM1MiBsZWdhY3ktdHJ1bmsKKzM3MjU3IGViOWIzODAyNTNjOTlkMjAzNWJmYWYwMjU5ZjE1OTEwN2Q3ZmVjNWUgbGVnYWN5LXRydW5rCiszNzI1NyAxODZiNzI1NTBlNTM1MzNlZjYxNzVmNjQxMWY5MzJjMTI5ODE5M2Q3IGxlZ2FjeS10cnVuaworMzcyNTkgYjE0ZjdlZTI1ZDUwYTkzNGZkNTJjZjE1Yjk4YWRlNjc4NmQ5YjgwZCBsZWdhY3ktdHJ1bmsKKzM3MjYwIDUzNDY5M2JiMDEwYmMyZjliZTY3YzBkMTAyYjMxZTc1Y2ZmNjE4MmEgbGVnYWN5LXRydW5rCiszNzI2MSA5OGM4MDE3ZTg1MzViOTI3ZWUxYzZhYjM5NmFkODJhZGQwMjBmZDQyIGxlZ2FjeS10cnVuaworMzcyNjIgZDFmOGM2MzJiNjA1YTVmYjYwYTBjNGM3ZTc4MzE5NTQ5MDMwOTg2NSBsZWdhY3ktdHJ1bmsKKzM3MjYzIDNmYTc5Y2M5ZGE1ZGEyOTBlMTA0Mjc0NGFhOTdlNTQ2NDk2NWFlNGYgbGVnYWN5LXRydW5rCiszNzI2NCBiOTk0NTMzNWRhMjcyYzI4NjMxZGU1YjlmMGIzYjU1OTIzYzBkYzlkIGxlZ2FjeS10cnVuaworMzcyNjUgNDc0NWY4NDdjZmExNDUxNDU1MWQ4MjhlMzRiNjMzYTdhNmNmYzEzYiBsZWdhY3ktdHJ1bmsKKzM3MjY2IGRmMWNkNDA3MjE3N2RkMmU1NmZlYTExNGYxMzkwNzgyODZkYTI5NGMgcmVsZWFzZTIzLW1haW50CiszNzI2NyA1ZWQ1NjQ5M2YwYjAxNjAzNTNiMmM1N2E0N2VmZTk3NmJkNDcwNWYzIGxlZ2FjeS10cnVuaworMzcyNjggOTdjMjA3ZGI5MGExZDA3ZGI2OWViYjg0ZjU5MmI0MDRlMDAxZmEwYiBsZWdhY3ktdHJ1bmsKKzM3MjY5IDIxYzc5MzQwZGVkNWRlMDAzOGViYjc4ZGIzMGNiMGYxOWQ5ODc3YmYgbGVnYWN5LXRydW5rCiszNzI3MCA0ODNjMGI0YjYzMzI4ZjI5ZTc5ZTc5NWJjOGU5ODE4MzFiZGI3MTQ1IGxlZ2FjeS10cnVuaworMzcyNzEgNmZmMWE1YmNkZjIyZDQzMDRlNTllZTEzZjUwYzE5MWJiY2E2NTM4YiBsZWdhY3ktdHJ1bmsKKzM3MjcyIDA3ODQ1NTY4Mjg3NTcyZTA4ZmZhNjcwOGE3YTVhNGNjMDQyZDdmNjYgbGVnYWN5LXRydW5rCiszNzI3MyA4ZTIzYmQzZDViMWE3MGZhYWVjMDgzYTdlZGZlZGZmMDkyMWY5NDg4IGxlZ2FjeS10cnVuaworMzcyNzQgZmMyY2U1ODAyMTZjOGRjZWVkYWU4MGFkN2EyY2UyN2QyZjQ1ZjAzNSBsZWdhY3ktdHJ1bmsKKzM3Mjc1IDEzNmIzODg1NjlhMGM0NjBjNjM4ODkyYWFlYzkyMDc5MmQ2ZjlhYmQgbGVnYWN5LXRydW5rCiszNzI3NiBjMDkzMThiMDA5MGQ2Yjk3YjU1YjIwNGMyNjk4ZDRhMTQ0MGYzYzk4IGxlZ2FjeS10cnVuaworMzcyNzcgZTFhYjJjMTJjZDVlZjI1ZjBkMTg5ZDBjMGI2MDE4Yjc2NTBkNDVmMyBsZWdhY3ktdHJ1bmsKKzM3Mjc4IDgzODFkMDczYWQzODZiMzEzYzQ4MTQ0ZTJhZThhZTgzMjBmMGZhYzYgbGVnYWN5LXRydW5rCiszNzI3OSBkYzk3ZjU4MWYyMzM0MTE2NDM0OGU0YWIzZGYwNjUyOWI3MzAwODEzIGxlZ2FjeS10cnVuaworMzcyODAgNWI2ZmJhNjQ1NGEwOWFhODcwY2ViODhlMzZlYWYzMDUzODEwZGU2ZSByZWxlYXNlMjMtbWFpbnQKKzM3MjgxIGFkMDBmN2MwYWQwNzQyNmVkMzIyYjA3YmFlMjMxZDU2ODA0MzlhZmEgcmVsZWFzZTIzLW1haW50CiszNzI4MiA3NjdhMzhkY2IzMDA5NDQ2ZmVlZjNiZmNjNTRlOGQ2ODlhMmY2MjMwIGxlZ2FjeS10cnVuaworMzcyODMgZDlhMzNlY2JjN2YyOGFhYWIwNzE2N2E5YjIxYTU5MWE4ZGU1MmEwYSBsZWdhY3ktdHJ1bmsKKzM3Mjg0IDMwZTI3Mzg0MWJhZTBiMzhkMDY4ZTJiYjBmZTVjZGU4YzU1NjY0MjYgbGVnYWN5LXRydW5rCiszNzI4NSBiNmU4NzVhYTUwOGJmODIwMWQ3NTNmMzU4NWI5MzMxNzRlZTcyY2I0IGxlZ2FjeS10cnVuaworMzcyODYgNzEwODNhMTcyNWNiZTc4N2NiZTViMjBjODQ0NTU4ODM3OTBjM2Y2OSBsZWdhY3ktdHJ1bmsKKzM3Mjg3IGI1ZjYxMTgzMTdkMGQwMTVkYTU5MWRhNzQ0NzhlOTcxMzI3NTljOWQgbGVnYWN5LXRydW5rCiszNzI4OCA2OTMyOTQzZGU2YjFmNTliZjc2NWY5NjVkN2Y3OGFjY2Q5NTUwMDIxIGxlZ2FjeS10cnVuaworMzcyODkgM2FmYjY3ZDk3NDJiN2RjZjYyNDVmMTcxYTE5NGJmN2U0ZTNjOTc4YiBsZWdhY3ktdHJ1bmsKKzM3MjkwIGFiNjJmNzZjYThlMmNjMzg2NWZjZWZiZWZlYmY5Njk1YjZkNWU5OTYgbGVnYWN5LXRydW5rCiszNzI5MSA4NDgwYjcyYWE2MjRkYTMzODgyMzU3NGEzMzEzYjhlYmE2MzgwZTk5IGxlZ2FjeS10cnVuaworMzcyOTIgNTc0NzhhMTNmYmY2NDRkNTAzZGE2NmIyOTExMWRiMmY5NjBjMjliMyBsZWdhY3ktdHJ1bmsKKzM3MjkzIDIxMzgzZmIxYThmMjkxY2NiOTdkMTMyOTcxZjc0N2FjN2JhZTJkMDcgbGVnYWN5LXRydW5rCiszNzI5NCA5NmQzZWZiOTQwY2YzNDNjMjFiMzk1ODIwNGNmMjg2Yjg3NzA4MWQ3IGxlZ2FjeS10cnVuaworMzcyOTUgY2QwNzBmZmM4OTJkMTQwMDI5ZGQ2MmI1MWMwMzU4ZDI1MWE4ODAwZiBsZWdhY3ktdHJ1bmsKKzM3Mjk2IDRiNzA4ZmEwYTYwYWI1ZDE3MmI4N2I1MTNmNjNhMjUwZWU1MTE5MjIgbGVnYWN5LXRydW5rCiszNzI5NyAwNmFiZGNkNTdmYThkMzljMDhjZDM3OTljY2I3ZjNjNDFkMjM2NDQ3IGxlZ2FjeS10cnVuaworMzcyOTggNjg1MzhlMTI0ZWUwYTliM2ZlNjMxOGY2YjBkNmM1MTQxODcyNGY5NCBsZWdhY3ktdHJ1bmsKKzM3Mjk5IDMwNjk3ZjQ0NjI4NmQwOTFlOTllZmY4OGNlYjI0MDVlOWE4NmMzYzQgbGVnYWN5LXRydW5rCiszNzMwMCA4OTdhMzYzZjBlODZmYWE3YzA1ZmJlYzkwMDE1MDgwZTk5ZGVlY2VhIGxlZ2FjeS10cnVuaworMzczMDEgZmFjMmE1MzkwNmYxNzA1MDY1YTlmZDA4NjMxN2FkYzFiOGM5YTU4NyBsZWdhY3ktdHJ1bmsKKzM3MzAyIGEyNDMyOTY3ODZjZTc4NDAxMjBlNTM3NzNkMTQ0ZWI1YTY0MThjNmMgbGVnYWN5LXRydW5rCiszNzMwMyA2MjkyMDBkODgwZWEyOGJhY2RjMTc1ZGYyMTZhYWZiNTkxZWI0N2VkIGxlZ2FjeS10cnVuaworMzczMDQgNWIzMWI0YzNiN2JhYzVkNDFjMGExMzBhOTU1MzcwMTY1YzM5ZTU5ZiBsZWdhY3ktdHJ1bmsKKzM3MzA1IGU0NDg5ZDU2ZjEwOTAyMDc0NzI4YzViZjRmMDhmMTlhMjk0NTk4YzUgbGVnYWN5LXRydW5rCiszNzMwNiA0ZGFhN2M3MjVhNzk4ZWVjYTg3ODgzMmM2ZmEyNmM0NTUyZmU5ZDAwIGxlZ2FjeS10cnVuaworMzczMDcgZjI0YTdmYTM4ZjRmOTFiZWZiNzhlZTRmNDg5NGRlZmIwYzIzMGViYiBsZWdhY3ktdHJ1bmsKKzM3MzA4IDdiZjQzYmU4MjlmN2U3YTRkZTQ0OWJlYWVkODE3ZmQ5ZTZiZmE3MmMgbGVnYWN5LXRydW5rCiszNzMwOSBjYWRjYmY5NjJhMWZkNjdhNDJjMTZhZDczYzQ3NTljN2YyYzc0ZmE2IGxlZ2FjeS10cnVuaworMzczMTAgNjg4ZDk4MWM2MjM0YjEzNDU1YTY2OWE4ZmZlNTQ1ZDM0NjY3OGYwZiBsZWdhY3ktdHJ1bmsKKzM3MzExIDY0ZDRlNzk2YjNkZjEyNmU2NDMzZjI4YTA1NjVmZjVlNjhiMTE3YmQgbGVnYWN5LXRydW5rCiszNzMxMiA1NTcwZmFlMWYwMWNkMDUzYTJkNzFjYmVkY2Q3N2M3ZTE5ZTZlOTcxIGxlZ2FjeS10cnVuaworMzczMTMgMzI0NjkzZWYzMjBhNTg3NjQ1YjEyNTg4YWIzY2EyYTFhMTE1OGI3ZSBsZWdhY3ktdHJ1bmsKKzM3MzE0IDgxNjE4YTdkNDkwZTcxZDgxOWQ0ZmI4ZTBmZTk2NzdlOWI0NTk0NmUgbGVnYWN5LXRydW5rCiszNzMxNSAyNWZiOWU1ZjVmNDUzMzMzMDdhYjllYTQ1NDVjMzg3M2FmNGMxMGVjIGxlZ2FjeS10cnVuaworMzczMTYgZTgzMDkzYWJjOTU4ZDA0ZmM1ZTM5Mzk1NTM0MWYyZDVlNGYyZGViZSByZWxlYXNlMjMtbWFpbnQKKzM3MzE3IDdhNzUxNmU2ZmViMmY1ZjEzYWI2ZWY4OTcwNTE1ZjhiMjIyNDcyODcgcmVsZWFzZTIyLW1haW50CiszNzMxOCAzZGFhNjYzM2YwMTdlZjQ3ZjY4ZmIwMDhjZDA1ZDE1ZjNkMDZlNzMzIGxlZ2FjeS10cnVuaworMzczMTkgOWUzYzUyY2EzYTA0ZDNmMTIxZjJiM2ZkY2I3NDNlYTUzNTRiNjRmMyBsZWdhY3ktdHJ1bmsKKzM3MzIwIDQ4NzI4MGNmNzFiOTVkMDIxOWE4MzU1NTlhNDAzZGM4YzgzY2IxOGIgbGVnYWN5LXRydW5rCiszNzMyMSAwMTZkNzAxNmM2YzYzZDUwNWY5MTkwODQ1NTEyZTg4MzIzNGFhM2Q5IGxlZ2FjeS10cnVuaworMzczMjIgOTFjODdjZWE3NzY3MTE2MGRhOTAzM2Q3NjNjOWExZGE2ZjZlMTcwNiBsZWdhY3ktdHJ1bmsKKzM3MzIzIDk0OTdjNTgxMjZiZTQwMGFmYWE3ZDI3ZmRhOWE2ZGQ2MWJhNzViZjEgbGVnYWN5LXRydW5rCiszNzMyNCBkY2U2MjQ5MzNjMzg3ZWMzM2I5Y2ZmMzdlZjQ2NTlmZTI2ODZhNGM2IGxlZ2FjeS10cnVuaworMzczMjUgYzg4MjVhNzRlNDIxZjFmYjNlYzlhY2FkMGQzODNkNTVlNjliYzA4MCBsZWdhY3ktdHJ1bmsKKzM3MzI2IDU4NzY2MzZjYThjNmNjZmIxNDAyNDUzNWE4MjI1ZmI4MGI3ZWQ2YTkgbGVnYWN5LXRydW5rCiszNzMyNyAyOGVmNWZlMGI4YjVkZTMxODk4NDQ0YTg3MmRkZTExYjU2MGViZDk2IGxlZ2FjeS10cnVuaworMzczMjggZDhhMjYxYTc3MDI4M2IwMzE0YWQ3OGVjZDgwZDRiOTNiMzg2MTI3YiBsZWdhY3ktdHJ1bmsKKzM3MzI5IGViNTE3MjhlZDExZjBlMzA4ZmYwNTVjYzdiOTIxZTViOTVlY2ZjOTUgbGVnYWN5LXRydW5rCiszNzMzMCA0NzdjZDBmNjIyYjllZGFlYjFkMTRlNzI4OWUyMThjMzgyZjRlNDgxIGxlZ2FjeS10cnVuaworMzczMzEgZTIzY2E5NGVkOGVkYjFmMWQ3MzEzOGJiMDBkY2IxMTg0YTBiYTNkOSBsZWdhY3ktdHJ1bmsKKzM3MzMyIGEwNDUxNWE5ODgzMTU5MmUyMDhlNTY3ZWQ2YmYxMTJjMTE0YmJiMjAgbGVnYWN5LXRydW5rCiszNzMzMyA5MjVjZjliMzI4NWJmYjhhMzkxN2M5NzZmZmViNzBlMjhlYzc2MjEwIGxlZ2FjeS10cnVuaworMzczMzQgNzQ3M2ExOTVkMjIzMTIyMzgyMGQ0OTMwYjJiN2Q0NDRjMmM5ODA2MyBsZWdhY3ktdHJ1bmsKKzM3MzM1IDQxZGJlZTVlZDI5NTg2Y2I5ODQzZjBjMTBkOGVjNDcwOTZkOTM0NWQgbGVnYWN5LXRydW5rCiszNzMzNiAzNjc2N2ZlMjQyNTJiMTRkYTE0YzA1MzE5YTUzMzA0MTcyYzViZjc5IGxlZ2FjeS10cnVuaworMzczMzcgM2Y4NmYyYmI5YjU2ZTg0NzNjNDgyMDQyM2QyMjVmZTViZTY2OTk1YyBsZWdhY3ktdHJ1bmsKKzM3MzM4IDdmZDIyZWNkYzlkYjA5MDM1MGQyNGQ4NzY5YTBmMjYwNjU4N2U2MDkgbGVnYWN5LXRydW5rCiszNzMzOSA0ZDE2Nzg1YmE1ZGMxYzRiZmQ3YjFhNTIxMzU1Y2QyMzZlNzBjYTc4IGxlZ2FjeS10cnVuaworMzczNDAgZTgwOGNkMzFmYmRjNmEwOWVhMWYzMWZmMTFiN2U2NTM0YjFjNGY5NiBsZWdhY3ktdHJ1bmsKKzM3MzQxIGEyMjAwNzM1MzZkNjlhNzUyZTdhZGE4MjVjMzNlZDQ5NjAxYTFlYmIgbGVnYWN5LXRydW5rCiszNzM0MiAxYjNhYzY3NGE1N2NiZmZiMzNkYzY2ODk3ODIxYTlmMTIwOWE3YWFjIGxlZ2FjeS10cnVuaworMzczNDMgYjg3ZWFhNDZjOWNiZjFkZTU1NzZhMDFkNzdlZTY0ZDE3MGUyZmZiZiBsZWdhY3ktdHJ1bmsKKzM3MzQ0IDUzNzNhNWFlYjgwMDIyYjNlZDMwZWIzMDgyODM2NDgxNWJjYTdiYjUgbGVnYWN5LXRydW5rCiszNzM0NSBlYWNkYzI5NjA2ZDgxNDQ5MmU3ODNiYmQ2OWUxN2I4ZjhlNTRkZWNkIGxlZ2FjeS10cnVuaworMzczNDYgMjYyMzY2OGM1ZmY1YjRkNjA4NmZhZjhiZjcyMzk4YzkwZjJlODY5MiBsZWdhY3ktdHJ1bmsKKzM3MzQ3IGM5M2QyYmVjNjhiZWM0OGM1ZGE2MjI3ZGViMDlhYmY0NzcwNjA2ZmMgbGVnYWN5LXRydW5rCiszNzM0OCAxOGM3YzE3Y2NmODYzMTU3NTRmZmY2OWRkODc2ZDA2OGVlMTBiNzIwIGxlZ2FjeS10cnVuaworMzczNDkgODIzZDY0NWIzMmJmZTNmMzZmNGM5NjcwZTc4MWU0Y2ExYmMyMjBhYSBsZWdhY3ktdHJ1bmsKKzM3MzUwIDUzYzEzNTdjOWM2M2Q1NGU4MmJiYjUwZmM0OWY5MDM0ZjIyZmIxMTkgbGVnYWN5LXRydW5rCiszNzM1MSBjZmIyZjVlMDk3NDA5MzY2NzcyNGZmNjUzODFkYjA4YzQ2MDE4NGViIGxlZ2FjeS10cnVuaworMzczNTIgNzFlZDRiMzVmZGM0ODg3NmQxYWJlOTEzOWM4ZTg2ZTcxZTk5ZjQwMCBsZWdhY3ktdHJ1bmsKKzM3MzUzIDRjYjEwMTY1MjViN2RlZjViZDY2OWY3MjBiYWNhYjVlZGI4MGZlNzAgbGVnYWN5LXRydW5rCiszNzM1NCA3Mzg1YmEyNjgwZWI3MWJmNzlmYzU4NWMyOTExYzU1NmVjOTNlMjMyIGxlZ2FjeS10cnVuaworMzczNTUgMGMyOTljYWJmNGYwNmM4NDdkYTUyNDNiNjRlYjJiNTAyNzBjMTdkYiBsZWdhY3ktdHJ1bmsKKzM3MzU2IDI5NGQzNzBlNDNkMTRkZDkxNTRiYzdlZTI5MWI5ZGI0NGQ1ODc4NGEgbGVnYWN5LXRydW5rCiszNzM1NyA0MzM2MDZlOTU0NmMzNWI4ZTZiODNlODZjNjg5OGYxYzI0ZDg1ZTc4IGxlZ2FjeS10cnVuaworMzczNTggZDk4NGNiN2UyMzUyMzZmYTdmZjZlNjA2Mjg1MzBhMDFkNTRhNGYyNCBsZWdhY3ktdHJ1bmsKKzM3MzU5IDJkNmUxODU0MDgyZTk0ODU0MDA5NDAzY2Q1NjE5YmUwN2Y5OGNiZjIgbGVnYWN5LXRydW5rCiszNzM2MCA5ZTJiOTRhM2I1ZGNjMGYxOGZiOTNkNWRkMGZiNDQ1ZDk4MTZiZDM1IGxlZ2FjeS10cnVuaworMzczNjEgYzNhYjZmNDBiNmU4YmIyYWEzMzE4NjQ0ODE5NWVhMTlkZmIyMjdlNyBsZWdhY3ktdHJ1bmsKKzM3MzYyIGFiYmRiYmE1NmE4YjczZDAzNWY4NDBiNWM3NzM2OTNmNTYxMDNkN2IgbGVnYWN5LXRydW5rCiszNzM2MyBhNGQzNjczYmNkNjY0NzMwNjhiMmVlYTQ2MzQ3MTkyZmIwZjBkZjE2IGxlZ2FjeS10cnVuaworMzczNjQgZGExZGEzMzFmNjRlZjhlZGJmOTViZTcxYTM1OTRkNjZmNmMzOWQ2YSByZWxlYXNlMjMtbWFpbnQKKzM3MzY1IGFmOWJlZGQ1YThlNzIxMDY3ZTI2NGZjYmEyNzRlMGQ5YTg4ZmJjNGQgbGVnYWN5LXRydW5rCiszNzM2NiBhNzBiM2VlMmUzMGI4OWY1OWIwODgzMDhiNWI0YWFhNGMwMTJhNTAwIGxlZ2FjeS10cnVuaworMzczNjcgNDVjNTc0MmMxZTEzY2E0YjNlYjRmY2E5ODFjM2Q2MGQ5ZjQwYzFmZSBsZWdhY3ktdHJ1bmsKKzM3MzY4IDc4YzFjMDM3Nzk2MzdmYzY0MDYyZGJmZDIwM2ZiOTY3ZDdmZTBiNDYgbGVnYWN5LXRydW5rCiszNzM2OSBjYzBhZTAzNzQzYjhlMmRhMzkyNDUwOGYwNTJmOTlhMzhkYjFjODE4IGxlZ2FjeS10cnVuaworMzczNzAgNGI4MTk4YTc0ODczMTJiODk1MzRiZmViZjlkODU0MGE1YTFlMTU4MSBsZWdhY3ktdHJ1bmsKKzM3MzcxIDcyNWM0NDQyMWE0MmY1OWI3OWUzODI2YjJhMDNmNGRmYzg4ZGQ1MWYgbGVnYWN5LXRydW5rCiszNzM3MiA5NGY1MDBlYmY2MGE0NWY2ZTU4Y2QxMTVlNGQ5ZDgwMTdmY2I2ZGZlIGxlZ2FjeS10cnVuaworMzczNzMgMWY1NDBiZjlhOWI0MDI3YmQ4MmNjZDYyMDA1ZTVkNGRlMGQ0YTM1MCByZWxlYXNlMjMtbWFpbnQKKzM3Mzc0IDMyMjE4NGVmNzYyMmQ2N2YzYTIxMDhkMjdkMDJjNDlmNzRiNzMxMmEgcmVsZWFzZTIzLW1haW50CiszNzM3NSAwM2VkYjYzYWUwNzE4ZjRmNWFhYjA5ZDNmNThmOWMxNTM0ZTc5YjJkIGxlZ2FjeS10cnVuaworMzczNzYgMTFkNDUwMGJlNmZhNDE4ZTU5ZjAyYjVhNWNjYzRjMGEzMjBjMDI2ZiBsZWdhY3ktdHJ1bmsKKzM3Mzc3IGY0NjQwODE1ZTViYjUwMGFkMzM3ODE1N2M1MTc0NDg3OTdmZjA4ZTIgcmVsZWFzZTIzLW1haW50CiszNzM3OCA2YjNkYTQ3YmRkZDY4YTQ0NWExNzI3ZGQ0NzUzYjI5ODJkMGM2NzA0IGxlZ2FjeS10cnVuaworMzczNzkgYTc3MjU3ZTU0OTk2YWFmNWVjMmUwMTJhOGFkZWJlOWM2ODcwYzM5OSBsZWdhY3ktdHJ1bmsKKzM3MzgwIGU5ZTY1ZWY5NDZlY2FkMjZkNzg3NzBiZWNhMjZlZGU4MDZjZTViODUgbGVnYWN5LXRydW5rCiszNzM4MSAzMDEyNjViODBjNDE0NDJjYmUyOGIwZjA2YzEzZTU0NjQxYTA0MDFhIGxlZ2FjeS10cnVuaworMzczODIgZDUyOTYxNTlmMTFjZjRkYTUwZjQ1ZjNlNjFhMzZiMTc5M2M4ODhjNiBsZWdhY3ktdHJ1bmsKKzM3MzgzIDEzOWE0MDEyYmVhZGFmYzkzODNlMDU5MjI2NTE5YTZiNzQ2OGI0YmQgbGVnYWN5LXRydW5rCiszNzM4NCAzZTE3YWVkMjMyNGMzMTdjMDFkZmU4MDJhZjRlMTViYzQ3ZmFmYWU5IGxlZ2FjeS10cnVuaworMzczODUgNTVlY2E3Y2QzNTMxZGM2YTI4ZDY0NzhmNDk3M2JiZTg3M2VjMDE3MiBsZWdhY3ktdHJ1bmsKKzM3Mzg2IDA2ZjI4MjM4ZGYzMTE1OWMyNmE4Y2E0ZTU1ODBhYTAwMTdlODNiMTIgbGVnYWN5LXRydW5rCiszNzM4NyBkODM2NzBmMjRkNWNjMmMzYjRhNDI4MTlmYjk0NjUyZjg5ZTczZWEwIGxlZ2FjeS10cnVuaworMzczODggMzBkNDI4Zjk5MmY5YTk3MGExYTViYTFjMjYwYzZjZTg5NDYxOWM0OSBsZWdhY3ktdHJ1bmsKKzM3Mzg5IGQzZDZkNDIwMDlhOGM0N2E1ODk5MmI1OGMxYzYxNzhjYTBmYjVmZDUgbGVnYWN5LXRydW5rCiszNzM5MCAxNzVlZWUwOWNiOTgxODBhYjg5OWFhODBjZGE0ZjYxMTQ4ZTEzYzBiIGxlZ2FjeS10cnVuaworMzczOTEgMTgwOWFiZDM5MzQyNjM3ODAwNGQ5MTM0NzIwNWMyZmM5NWQxYzZiOCBsZWdhY3ktdHJ1bmsKKzM3MzkyIGEzZmI1ZWJjYTMwZDcxZDYzZmE2Yzc5NDVhMGU1NTRmMzUyN2NjZmYgbGVnYWN5LXRydW5rCiszNzM5MyAyNWUwN2M0NGU1ZDA1YjE4ZWQ4MGRkZTA4Y2E0NTgzMzFiOTQ0OWY0IGxlZ2FjeS10cnVuaworMzczOTQgOGY2NGE4NGZhOGU2YmVmNzJjYThmZWJmZWJlZDRmNTVhY2UzZmUyMCBsZWdhY3ktdHJ1bmsKKzM3Mzk1IDVhYzhhZmQ4ZDkwNDA2NTY5OGYxZDg1ZjA4YjFiNDFkZWVlYmQ5YmUgbGVnYWN5LXRydW5rCiszNzM5NiA2OTVlNWJiMDgzODIzOTNkOTM1NTA3MTcyMjNiYTBmYzNhZTdkMjFiIGxlZ2FjeS10cnVuaworMzczOTcgZTdmYTdiNWM5NDQxYzM5ZDI4Y2NlNWRjZmU1NGEzZjhlZjEyMWI4YSBsZWdhY3ktdHJ1bmsKKzM3Mzk4IGZlMjQyZjY5YTlkMzI4MjJhZjNlMDM1ZTJlZjQyMmU5YmNmMDVkMzYgcmVsZWFzZTIzLW1haW50CiszNzM5OSBlY2Q2NTRkYWFlYzlmMDBiMmE0OTBjMjdiODgxMmQ0ZjI1NWQxZDUwIGxlZ2FjeS10cnVuaworMzc0MDAgOTJkY2E5OGNkNDM0MzE0ZjVmNDkyYzJhOWVjMjBlMzI1NTQ1YTAyZSBsZWdhY3ktdHJ1bmsKKzM3NDAxIDUyNjQyN2U4ODNlODI0MWNjZTE5ZjdjNDdhMjc4YmZhOGUyYzBjYWEgbGVnYWN5LXRydW5rCiszNzQwMiBiZDEzYTQ3OGU4ZDYxZGZkZDM5N2JmMGI5YTE3MWM1MjdmYzliZjM4IGxlZ2FjeS10cnVuaworMzc0MDMgMmI0OWI0YTg1ZDllYjRhNGNmYTlmMjljMjFkNjQ5YzM4Mzk0NTY3MSBsZWdhY3ktdHJ1bmsKKzM3NDA0IGY2Nzg5YjdlYWI0ZTMwYmNjYjg1MWM0MmViM2M4OWI1NTgwNDk5ZTcgbGVnYWN5LXRydW5rCiszNzQwNSA3ODFhZWY5NzQ0NjM4OGIzOGZmNDNkNDc0MTAyNzhlOTZiZDhkY2Y4IGxlZ2FjeS10cnVuaworMzc0MDYgZDc0ZGRjZmYwNzI0NDc3NjY1NGUyM2EwYzkxZmNjNGRiZjljYzhiNiBsZWdhY3ktdHJ1bmsKKzM3NDA3IGEzZDc4ZDZiY2E1MTkyNDIzN2MyZDQ5Y2M3NzQxNmM1OWYzZWE3OGQgcmVsZWFzZTIzLW1haW50CiszNzQwOCBkNjA3MWEwNWJhODRhZjliZjc4MDNjYjYzYWFkYmI0MDIyZTJmY2UyIGxlZ2FjeS10cnVuaworMzc0MDkgNmQwNTVhMjc1YjRiZDM5NWEzMDZmNjQyMzcwMmVmN2Q5NjE4YTdhZSBsZWdhY3ktdHJ1bmsKKzM3NDEwIGJmNjg3MzE2NTA3OTg2YmQyM2IzNDc2NjM3YTBhNjE3ZDA0YzdhYTYgbGVnYWN5LXRydW5rCiszNzQxMSA3MDIzNjdkYTJjNzJiZjQyZTVmYTM5MzgwODM1Njc5OGY1YzdjZjA0IGxlZ2FjeS10cnVuaworMzc0MTIgZDM3NmZlODYyYjE4ODU0ZDcyZGI4NDA1ZTE0MjUwYWQwYjFiM2QxYyBsZWdhY3ktdHJ1bmsKKzM3NDEzIGVjYWYwZThmYTczNzllOTFkYzM4NzBmMzc1M2I3OGI5Y2Y5MmNkZjggbGVnYWN5LXRydW5rCiszNzQxNCA2NmI1NmQ1NmU2ODBkNGIwNTVkODVmNmI2M2UzZjk4YzA3NzM3NDRjIGxlZ2FjeS10cnVuaworMzc0MTUgN2Q3YWM0MDRjODA0OWY5MzIwMmM5OGZkNzljMGE3ZGMxYjAwMDIzYiBsZWdhY3ktdHJ1bmsKKzM3NDE2IGJmOWY5MTdlZTRmOWYxNDAwZDFmNTVkMmQwNGIwMzkxYjc1ZGU1ZmMgbGVnYWN5LXRydW5rCiszNzQxNyBhNmRjMTc2YzVkMTI5MjAyMmIxNzE4Yzg5MDEzMDM4M2FkNjM2NWVkIGxlZ2FjeS10cnVuaworMzc0MTggYTU3NzEzZmRlZDIzYjM1YmJkNGRmNGY2NjEzMzJkNTMwMTY0NGQyOSBsZWdhY3ktdHJ1bmsKKzM3NDE5IDE1YTdjYzAwYzVhMTQxZDdiOTgwNzdkNjIyMGQxMGRmNjg3NTU1NzMgbGVnYWN5LXRydW5rCiszNzQyMCBmZDkzNDc3OGY0YjQ1MWVkMGVmMjliMjA2MDU0MDYzOWQzZmY3ZWFmIGxlZ2FjeS10cnVuaworMzc0MjEgZTEyY2E1Y2RmNzQxMDVkZDUxNGYwYTM5OWJhYWJlNGIxMmNiMGM4NyBsZWdhY3ktdHJ1bmsKKzM3NDIyIGYyYTJjZWQxZmQ1ZGNiMDNkMTZiMjQ2YmRkNjIzYjQ3OTUwNDcwYzkgbGVnYWN5LXRydW5rCiszNzQyMyBiZThjZmY0YTFlY2FkYzcyNTQ0MzNjODQ2M2U4YjRjNDM3OGYyNmUzIGxlZ2FjeS10cnVuaworMzc0MjQgOTdjYjllZWEyMTJlMjM3YmFkZDY5ZTU2MzYyNjZhNDAxZTgzYWYxYyBsZWdhY3ktdHJ1bmsKKzM3NDI1IGE3NjEyNjAwMzk5MjUxOWUzNjA3YjNhYjQzZjYwY2U0ZDcyYTdjMTEgbGVnYWN5LXRydW5rCiszNzQyNiBjMzlmODNmZGQ0ZDAzMjNkMDc0ZWM4YzhlOTUyYzg4N2RjZWY4YTk1IGxlZ2FjeS10cnVuaworMzc0MjcgOGM2ZmM4NzcxMjYwNDIxMTFmNDJkNDgwYmJhMGI4OGQ4ZDdiY2FmNSBsZWdhY3ktdHJ1bmsKKzM3NDI4IDU5ODQxYzgxOWY0Yzk3NWQwMzFmY2U0ZWMwOTEwMDM5MTZmNjFlOWIgbGVnYWN5LXRydW5rCiszNzQyOSBmMjQ2ZDc0NjRiNWM4YTQzMTZhOTUxNGNlOTg0NjE1ZTdlYTNhNWYwIGxlZ2FjeS10cnVuaworMzc0MzAgOTY5MmFmMDFjMWE4MzVhYzA0NWE0ZDI0NDFiM2Q1NTE0NWUwOWEyNSBsZWdhY3ktdHJ1bmsKKzM3NDMxIGM0ZWFjNmU5MDE2MTRiNjcyN2FlYWM2ZjQwODgwNTVlNGRmM2M3NTUgbGVnYWN5LXRydW5rCiszNzQzMiA4NWRhMDg4ZTdhOGJmZDhmN2UxY2Y2MGZmZDllMjJhNzc0NGMyZTQyIGxlZ2FjeS10cnVuaworMzc0MzMgM2JkOTNiODE0MDMxOTc3YmEzMzg1Njc4YmY0N2M0NTc1OGYwZTA1NiBsZWdhY3ktdHJ1bmsKKzM3NDM0IGMzN2UyMDc0YThjNTQ4NTllNjc1Mjc3ZjA3Y2FhYWQ0MWU3N2Y1YWQgbGVnYWN5LXRydW5rCiszNzQzNSBhNTY4MmJjNzNlMDRmNjA3NmM1NzY5ODRkYjI2NDk3YzY1ODIwYTYyIGxlZ2FjeS10cnVuaworMzc0MzYgOTg2YTViNTY5YWRlZGZkZjg3YTQxMWU0Njc0MzZlYjczMzQ5NjNkOCBsZWdhY3ktdHJ1bmsKKzM3NDM3IDUwYjZmOTRhMzhhNzc2NzM2ZmZiMzFkZGZkNjI5OTgwYTRjZjE3MTMgbGVnYWN5LXRydW5rCiszNzQzOCBlNDc4ZWJlMWNiMzE2Yzg0ZDgzNGE0MGIxNDFmMDdhZDFlNTIzOThmIGxlZ2FjeS10cnVuaworMzc0MzkgZjI3NTg0ZDExM2FmM2UzODA0MjNlZWJhZDQxZjRmMmU2ZWE0NzM0ZiBsZWdhY3ktdHJ1bmsKKzM3NDQwIGMyOGZmYmZiMGFlOTA5MjkyNWM1MGZiNGE1NjQwZmM1ZWNjOWIwMWEgbGVnYWN5LXRydW5rCiszNzQ0MSAzMWJjNWYwZjRjZmNjOWZiY2U0ZjA0OWJhYTFjNDVlZDhlZDg5NmJiIGxlZ2FjeS10cnVuaworMzc0NDIgMzI1YTg4YzZlZTdkNWNkNzY3ZmM5MGZlMTBkYjlkZTQ5NDM4NTJmMyBsZWdhY3ktdHJ1bmsKKzM3NDQzIDhhNWM4N2Y2ODVjZGU5Y2ExNDczYzkwZGRiMTJmMjYzMjIyZTUzYjUgbGVnYWN5LXRydW5rCiszNzQ0NCA3NzY2MGVhZWYyNGRjNGExY2FmNTM5NzZlNWM1NjYxNTExNzllM2U4IGxlZ2FjeS10cnVuaworMzc0NDUgNjEzYTU1MzM4NTRhMGQ0MWIzNmI0YWJkNThlNDNiNzU1MzI5MTBiYSBsZWdhY3ktdHJ1bmsKKzM3NDQ2IDgwODQyOGM1NjA5Njg3NjQzMjEwNzU4NGJlMDRjM2M2ZmRhYTQ0ZmYgbGVnYWN5LXRydW5rCiszNzQ0NyAxYjZiMTA0MmNmNDU2OTU2NTU4ZDBlNmM4Mjg2OGUxZDc2NGQ1NzU3IGxlZ2FjeS10cnVuaworMzc0NDggMmJjMjM1MzI2MzE2MGE0OGEwNTJhOGE3NmE1ZDRiY2I3NzlkMWE2ZiBsZWdhY3ktdHJ1bmsKKzM3NDQ5IGRiZGM0NTU2NGQyNDAzOGE5MDU3NzBmYTI1NTljNDU4Mzk5NGRiYzMgcmVsZWFzZTIzLW1haW50CiszNzQ1MCA3OTE5Y2FkZWI5MWRkN2Y0YWZhOTNhMTI0ZmE1N2I5NzliYmYzMGQ4IHJlbGVhc2UyMy1tYWludAorMzc0NTEgMTQwODFlYTY1NmIyYzBhMTdjMDAxYTY3ZWVhMzYzNDUxMTBiYTE4YiBsZWdhY3ktdHJ1bmsKKzM3NDUyIDY4ZDExZTQzOWEwYjVhNDMxYmVmOGE4NWE3NWIzOTAyYzBiMGFlMDQgbGVnYWN5LXRydW5rCiszNzQ1MyAyMzAzNmM3YWY2ODc2ZWUyMTk4M2E4OWZhMjU3YTA4NjY0ZWQzYTVhIGxlZ2FjeS10cnVuaworMzc0NTQgOGY0YmVkOTcwZmY5NTE0NTZiYjRmY2FkMzIzODExYzVkYjcyNDk1MSBsZWdhY3ktdHJ1bmsKKzM3NDU1IDA3Nzk1NGQ0MWM1MzI1YjNkZDNjOTk2NTcyYjA1ODcxYzRiYzg4M2UgbGVnYWN5LXRydW5rCiszNzQ1NiAyZjY0MTlkMDA3YTljYjg2NDAzNzgyMjU5NmU3ZWUxOGE0MDBiNTNmIGxlZ2FjeS10cnVuaworMzc0NTcgYjQ4NDc0YmFkNzZmY2U5YzkxM2E2YmUxMmEwYWI3YjU4ODQzNGUzMCBsZWdhY3ktdHJ1bmsKKzM3NDU4IGU5MzcwYmNmMDJhZGJmM2IyNjM1NmE2MzUyMWFiNDMyNGIxMjc0NTcgbGVnYWN5LXRydW5rCiszNzQ1OSBhNzg5NWFlZjFlZTgwMWQ4ODdhY2EyNDczN2RjYjVmY2Y3ZTNhNDc1IGxlZ2FjeS10cnVuaworMzc0NjAgMGMzMmYwMWNjZDk5N2U4ZjQ1NWZiZmZlNGExZTRlMjM1NjBhZWE1NCBsZWdhY3ktdHJ1bmsKKzM3NDYxIDM1NWIxNWU0YTRkYTIzMjliYjhmZjY4ZDk0NWNkOWY2OGI2YmZiYWQgbGVnYWN5LXRydW5rCiszNzQ2MiBjZjFhYWE3ZTQwMDU1ZDljODVkMWQ3YWRmNWJhZTBmMjViZDI1NDZjIGxlZ2FjeS10cnVuaworMzc0NjMgMzJkZjFkMDVjYjJkOTYzODU1ODYwYTNkZGNlZTM5NmExZTEzZjczZCBsZWdhY3ktdHJ1bmsKKzM3NDY0IDRiNTQxNmIxODQ2NjRmZWE4ZGU5MmY2NzllMzMyMDQ2MjFhM2UzNWIgbGVnYWN5LXRydW5rCiszNzQ2NSA3NTExNTg1ZjJlNmE0NmE2Yzg5YmU1YTJlM2Q3ZmI5MTE0MzA4YTIwIGxlZ2FjeS10cnVuaworMzc0NjYgN2Q2Njc5ZWUzOWY5MGJiNjZiODE2NjZhNzkxZDA0NDk1NDNmN2JiMyBsZWdhY3ktdHJ1bmsKKzM3NDY3IGZjM2U4OTY0Mzg4ODkwMmVjY2FkMmIyYTIyMzUzNmI3YTYxZmVhZDQgbGVnYWN5LXRydW5rCiszNzQ2OCA2NDExNTJmYjdkODgyOTZkMmJhM2RlM2E4MWNlMTZlMjUwMjgzODViIGxlZ2FjeS10cnVuaworMzc0NjkgYjM0MDhhODVjODljOWQzOTI5YzAwYjFhOTNmYjBkMTA1MWMzMzliYSBsZWdhY3ktdHJ1bmsKKzM3NDcwIDRkN2IwZDIwNmJjNzNhZGViNjVlYTAzMzk1MTkwMzc2NWVkMjc4ZmIgbGVnYWN5LXRydW5rCiszNzQ3MSA1NGMzM2QwOTVlN2U0OWJjZGZlMjQ4MDRlNDc3NWIzNGRkMTBjNDQzIGxlZ2FjeS10cnVuaworMzc0NzIgZGI2ZjIxZWU2MTM1OTcyNTQxNmY5NjNlYjFkYTMyODdjMTU5YjgyOSBsZWdhY3ktdHJ1bmsKKzM3NDczIDA4NDk4OGMyMGI3NWNlNWQxOTJhNDRjY2Y4MjM3NWY2ODU1OWYyYTggbGVnYWN5LXRydW5rCiszNzQ3NCBiODkyMmEzNmYwODM4M2Y5OGMwMzdkMDI0M2RhYjVkMjE2ZmY2MThlIGxlZ2FjeS10cnVuaworMzc0NzUgYzdjMzliNzllNWI3ZThhNWFmMzdiNmY1YWQ0NTA5ZDgzOGRlYjRmNyBsZWdhY3ktdHJ1bmsKKzM3NDc2IDRlZTQ4ZTJlZmI2ODc5NzQ1YTEzODlmMTM1ZmMyNjU4Y2ZhNDU4OTYgbGVnYWN5LXRydW5rCiszNzQ3NyA3NjY0ZThiYWUxOWUyMWI1NDk3YTI2M2YwMjRkYjkzMmIxYTQwODQwIGxlZ2FjeS10cnVuaworMzc0NzggODMxMzE5ZjEwMGQwYTlmMGRjMjMyMWFjZjM2MjI3NDJkZTFjOWEzNyBsZWdhY3ktdHJ1bmsKKzM3NDc5IGIxMWY5MTYyZWQwZGQ1NDc5MzRlZmZhMzMzOTNkMzk4OTQ1NjhmYmIgbGVnYWN5LXRydW5rCiszNzQ4MCAzMWIwODY3MGViZGRiNTAxYWYwNDg3ODVjY2U3ZmNhZGY5NGRiNDhmIGxlZ2FjeS10cnVuaworMzc0ODEgMmI5YzE5ODcyYjAxNzYwZmE1ZGVhMzk0YTQ1OTZhMTk5YzZjMjYxMCByZWxlYXNlMjMtbWFpbnQKKzM3NDgyIDhlMjBlZTJlY2MwYzllNmUwMDZhY2UzYTJiNTBmOTAxOTZlZTVkYTkgbGVnYWN5LXRydW5rCiszNzQ4MyBlNjMxODA1YzcxYjA3MmY2MGQ1OTQ5OTFiZTEyZjA0YjYyZTVkMjBiIGxlZ2FjeS10cnVuaworMzc0ODQgMjdhYTBlMTE5MzMwYTM3ZWI1YWQ3NjQ3ZmY3ZDIwZDQ3MGVhMTI5NyBsZWdhY3ktdHJ1bmsKKzM3NDg1IDM0YjA3MDA4YWE3OGJlNzk5NDIxYzJmOTEyMWE3YjdhNDE0NjI4YzQgbGVnYWN5LXRydW5rCiszNzQ4NiA2M2ZjMDUyMmE5NWI1MzU1ZjkxZWM5OTk0NDEyMGZhODM4ZDFmZDg0IGxlZ2FjeS10cnVuaworMzc0ODcgOGU5ZGNmZTE0ZDgxNjJlNGRhNTA5Y2M4Nzg2OTg2MDRhNzU5MWIwZCBsZWdhY3ktdHJ1bmsKKzM3NDg4IDU3MzBmNzdlMzdlNDFiNjM0MWI5ZjZlOWEzN2U1N2EyYzE3N2YxOTAgbGVnYWN5LXRydW5rCiszNzQ4OSBmMDc0ZGIwYzE0YTg1M2Y5MDMyZTZhYzA5MTdmNDcyZDI4NDFhN2ZjIGxlZ2FjeS10cnVuaworMzc0OTAgY2Q1OGE5YjRiYTY2Mzg2NDM3NjRkNzQ0MmEwMDI5ODFhZDU1MjQ0ZSBsZWdhY3ktdHJ1bmsKKzM3NDkxIDBhZTBiZWYxMDAxNGU1ZmI4NTI3MWI3YjI2MjRiOTFlOThkZDFkOTMgbGVnYWN5LXRydW5rCiszNzQ5MiA4M2EzZTJkMTkxNGE5MGE0ZDMwMzdlYzFiNDcyNjA2M2VlNzlmOTJjIGxlZ2FjeS10cnVuaworMzc0OTMgYzg0ZGJlNzE3ZDQ5Y2Q4NjRlYmZmNDdhOGFkZGMxYTU1ZmJmNjE0NCBsZWdhY3ktdHJ1bmsKKzM3NDk0IDBmMGRkYjRjYjA0MzczNDQ4MDFlM2UyYTU5NWIyNjZkNmI3ZWNmMDkgbGVnYWN5LXRydW5rCiszNzQ5NSA2NTVmNzRlYTBmMzFmNTYxYTBlODVjMmVmNGNhMjZjZmNjN2VjOTFiIGxlZ2FjeS10cnVuaworMzc0OTYgMjM0NDRjYmRlYTU1NTBhNGE1MGUxNGY5M2YzNjRmMjg5ZWRmMzIxMiBsZWdhY3ktdHJ1bmsKKzM3NDk3IDI3OWYwMWU3MTA3MWJmNTYzNTM1NzM4MDgzNjYzMWZhZmIyOGFhN2IgbGVnYWN5LXRydW5rCiszNzQ5OCA2YmQ0YTEwNTY3MTZiNzcyYTQ3Mzk0ODFjMjQ1ZDlhY2I2YmI4YTRlIGxlZ2FjeS10cnVuaworMzc0OTkgODM2ZTkyY2M1YzRmYmRiNmE5YWIwYmI3NjA3ZThmMjQzZjM3ZDgxMSBsZWdhY3ktdHJ1bmsKKzM3NTAwIGU1ZGU2OThlY2Q0YjRlMDU5ZDVlYmViZTk3YTExZDRlYjJmMDBmMjAgbGVnYWN5LXRydW5rCiszNzUwMSA2ZjRiY2IzYmQyMDJlNDMwZmM3NDg4MTM5MjI4MmYyZjIwZjBhNzhkIGxlZ2FjeS10cnVuaworMzc1MDIgNWUxOWZkMzY0MmYwNzNlMmQzNDk4ZmIyZTEzNmY5YWQyZGIwMWQ0ZiBsZWdhY3ktdHJ1bmsKKzM3NTAzIDQwMzUwZmJlNjY1ZGZmMWIyZGE4YzZhZjBkZDUzOGRkOTMxY2NkYTEgbGVnYWN5LXRydW5rCiszNzUwNCAzMGNiMjAwZDQxOGNkZmVlYTg1NjljNTExNzY2OTM0NDdhNDRlYWFlIGxlZ2FjeS10cnVuaworMzc1MDUgY2Q3MGYxYWMzYzI1ZDY4NjBhOTZlM2I3ZmI0OTkxMTExMTE2MGQ0MyBsZWdhY3ktdHJ1bmsKKzM3NTA2IDRmYjhjODlmNjZhMGI5NzYyNWE2YjAwZTQ4NGRmYWJmMWY4M2M5ZjAgbGVnYWN5LXRydW5rCiszNzUwNyA5MTYzNGYzYmEyMTNhNTJiOTAzMGE0ZWQ1MmZkMGU4YWQyOThlMzczIGxlZ2FjeS10cnVuaworMzc1MDggMDBjMzZlMWJjNTBiYzZiMmM4NzZmYTgwMmVkYzhlNjBkZTBkZDE4NSBsZWdhY3ktdHJ1bmsKKzM3NTA5IDBjNGYwOTU4NjNiOWVkMmFiN2MyMzk5ZmJlYjJhYjA3YzI3OGI5YTUgbGVnYWN5LXRydW5rCiszNzUxMCAzZDhkNzgyMTc1OTk5ZDlkNTgyMmIyNWFkMTZkNzUzZTYzYTExMTk4IGxlZ2FjeS10cnVuaworMzc1MTEgNWEyOTJhMDNlYTQxNjc3MzcwMzEwODQ3NDc4ZmRjYWViYzRjMGI0OSBsZWdhY3ktdHJ1bmsKKzM3NTEyIDdjNTBjZGUxZTRmZDA1ZTQ4ODRkMzczMWFkN2JhMzk1ZGMyOWMzNGUgbGVnYWN5LXRydW5rCiszNzUxMyA3NDUwYmI5M2MzOTVjYjA2NGExOWMzNzliNDZkODM3MzZkYzNmZDA4IGxlZ2FjeS10cnVuaworMzc1MTQgNDg2ZTljNDBjZmI5M2ZlNGYwNjAyMmUwOTgwMDk3YjEwMmQ3ZDdlOCBsZWdhY3ktdHJ1bmsKKzM3NTE1IDk0NjYxMmY2NGE4MzJlNDY3YTUxZTE5NGQzODVjMGE3ZGY2ZTlkOTMgbGVnYWN5LXRydW5rCiszNzUxNiBjNTkxZmExZDQzNWRmMDc1ODc0YjFiZmY3YjQ2ZTdkZTI5MTg5ZmEwIGxlZ2FjeS10cnVuaworMzc1MTcgN2U0MmE4ZWJiM2VmZjExN2NiYmE3Nzk2YzhiMWUyZGRkN2M0ODY4NCBsZWdhY3ktdHJ1bmsKKzM3NTE4IGM4MTkyNWI2MTNkYWIwNjM2MTYyNTY0OTFiODFkM2M1NTk1ZDIxYmYgbGVnYWN5LXRydW5rCiszNzUxOSBjMDk3YWJkYjU1NjYzZTNlNGNiZmE3ZTg5MDFiMGQ1ZmM4MjIwMDMzIGxlZ2FjeS10cnVuaworMzc1MjAgMGI3ZTMxOGVmMDkyNjU1OGFjYmM4YWI1OGUxNTI1ODNhZGU2ZjUwOCBsZWdhY3ktdHJ1bmsKKzM3NTIxIDQ1YjE5ODhlMjY5MjRmYmFjYjMxOGM1YTVmYTViZjI5MGY3MDZiYTkgbGVnYWN5LXRydW5rCiszNzUyMiBjZTgxM2E1N2Q0NGQzYWFlODhjNDkwZGE2Y2NiOTVlYjBlZDJiZmViIGxlZ2FjeS10cnVuaworMzc1MjMgOTE4OTk0NjgzOGVlY2NkOWQ1YmM2YTQ0ZjUwNDRhYzlmNTI1NWU3YiBsZWdhY3ktdHJ1bmsKKzM3NTI0IDBiZmQzNWE3NmE0NGY4MTJjY2E2ZGU2ZGZjZWE5NmVlMjY3NGNhZDEgbGVnYWN5LXRydW5rCiszNzUyNSA2M2EwMzg5YmQ1ZmNhOTk2MDU2OGQzZjVjMTE3NDczYzNmMzU0NzQwIGxlZ2FjeS10cnVuaworMzc1MjYgY2M0Njg0MDUxYzQ2MzM1MzA1MDNhZjI1NjIwZjBiZWMyMTlkMDEzZCBsZWdhY3ktdHJ1bmsKKzM3NTI3IDU0MTIwOTZkMGY5NWRlMDhjOTI2Y2MzYzZiMjViNGRiZjRhOTlkOWQgbGVnYWN5LXRydW5rCiszNzUyOCBlMTI5NzZlOThmNjEzZjQzMGYwYmI4MGIxMGM0MDEyYmM5ZmQxM2IwIGxlZ2FjeS10cnVuaworMzc1MjkgNWRlZjY2ZjJjOWFiZWU1ZjA4ZWFhMjg0NDY3NGVmZjA0OTRmN2I0ZCBsZWdhY3ktdHJ1bmsKKzM3NTMwIGFiNTg4Y2U5ZTcxZmJmZTBjMjM3ODU2NTBkYWJhY2VkNjVlMDZhNTYgbGVnYWN5LXRydW5rCiszNzUzMSAxMThiNmY2OWUzZjE1M2I3ODc5ZTM0YWM2ZGNkYjBiNTBhMjcwM2Q2IGxlZ2FjeS10cnVuaworMzc1MzIgZWNmMWU4NTM0MDZiN2NkMmVkYTY5MzMyNjJkMTJjODg5ZWRiNWZiOSBsZWdhY3ktdHJ1bmsKKzM3NTMzIDYwYmYyYWZkNzMxMjI1NDZlZmFmMWE3YTY5ZWQwMDRmZTBiOTViMTggbGVnYWN5LXRydW5rCiszNzUzNCA4OWZhYWNkOWVjNzY5NTUyMzFhNjgzNWVjNTE0MGNkNTUwOWY1ZDIxIGxlZ2FjeS10cnVuaworMzc1MzUgMjJlZTkxNjQzYjNmMzRiOTQ3ZDAxNDkwZjJhZGZlNmQ0NTlhOTEyZSByZWxlYXNlMjMtbWFpbnQKKzM3NTM2IGIwZjNhNjkzYjg1NGI3ZmY4MjY2MWU2NjFjNjE5OGM4Mjg3OTVlMDMgbGVnYWN5LXRydW5rCiszNzUzNyBkOGU3NGEwYjQ2Nzc1ZGI2ODRhODkzZWE4N2E2NWZiZTNlZDNjYzBjIGxlZ2FjeS10cnVuaworMzc1MzggZDk5ZGU2NWY1NDI1ODI3YmI1Y2I3NjkxOTJmNjNkODUyN2I2MDZkMSBsZWdhY3ktdHJ1bmsKKzM3NTM5IGJhOGUxODU0YTg0YmFhY2Y5NGVhMTY4NjJmYmExM2VkNGUwOWRiY2UgcmVsZWFzZTIzLW1haW50CiszNzU0MCA1YWUzYTFjODBlM2ZlNzU4OWNjYTEwZmE5MjhiMzllZTE2NzgyMzg0IGxlZ2FjeS10cnVuaworMzc1NDEgMjYyZTFjZjQxZDM0YmM3NWY5Y2U4N2JmNGM0Yzg2YzYwNDgyNDYwZSBsZWdhY3ktdHJ1bmsKKzM3NTQyIGIzMWE1MTIwNjc3NDg1ODIzYzZlNDE0ZDdhMDkxZDY0Y2FiODIyMmYgbGVnYWN5LXRydW5rCiszNzU0MyA1NWZiYTg4OTMwYmM3YjgxNjY5ZDAxNTI5NDJhMTMxMGU0MDRjZGI4IGxlZ2FjeS10cnVuaworMzc1NDQgYmNhZmI2OGFkOTg1ODgwMGE1MjYyN2ZjOTEwZTYzNjUyYzc2ZTE0OCBsZWdhY3ktdHJ1bmsKKzM3NTQ1IDQ3ODRiZmM5OWE0MWJlMDM1MDdkZmZmOThiZmIyYjRiNWFjZDg5MWQgbGVnYWN5LXRydW5rCiszNzU0NiAzN2M2NWE2YjJlZjdmNDgxMmRlMTExZjdiNGNlNzg5MWI4YTljOTYwIGxlZ2FjeS10cnVuaworMzc1NDcgZmRhMzZhZjIyNmZiMmJkOTQ3ZjgxNjAxN2NlNTgxYTY1MjczY2E2MSBsZWdhY3ktdHJ1bmsKKzM3NTQ4IDNlNmY1NmU4MTA0YTJiZGMzZGEyYzYxM2Y3ZDJkZmU1M2QxMDNkOTkgbGVnYWN5LXRydW5rCiszNzU0OSA5YTM4NjI1ZmEyYjA4ZDQ2ZTU0YWM3ZjYzOTY0OWNmMTJhMDM1ODc4IGxlZ2FjeS10cnVuaworMzc1NTAgMTcwMWRhZTY0NzRlMTQ4MmYwNjUyMTM5MWU0YjFjYmJjYTViNTQxNyBsZWdhY3ktdHJ1bmsKKzM3NTUxIDY4M2EyZjhmNzcxZGM3MThkYzc1N2JiMjQ1YTkyOWE0ZDMzMjYwZmQgbGVnYWN5LXRydW5rCiszNzU1MiBhZjMwMDQwM2VkYjgyMGY0ZDExYWJlMmY2M2Q0MDI2ODgwNGVjNWI1IGxlZ2FjeS10cnVuaworMzc1NTMgYTVjODhmMmU4NmEzZjQ2N2Y3M2RjZjljM2U2ZTIzOGJjZDQ5OTU1NCBsZWdhY3ktdHJ1bmsKKzM3NTU0IDM2MTdkMWVlMjc5N2ZiZTYyZTRmYjg2YzIzM2MzZmU1NzhmMWVjM2IgbGVnYWN5LXRydW5rCiszNzU1NSBkOGZmZjcwNmE5YzI1Y2VmODE0NDNmMjJjZWZkNzNjZmU1ZDI1YjA1IGxlZ2FjeS10cnVuaworMzc1NTYgYmE5YmNmMjE0MWEyMzI5YjU3NzgzMzAyN2QzNDk5N2M0ZDFlNDA4ZCByZWxlYXNlMjMtbWFpbnQKKzM3NTU3IDk2MmZhM2UyMzIxNWJlOGYxYjI4NDk4MTFhMTBkYzI4OTc0ZTJjNDAgbGVnYWN5LXRydW5rCiszNzU1OCBiYTlmZGM0NGM3NzgyNTY2YzM1NzYyNGM3Njg2OTcyOTc3YWQzODE3IHJlbGVhc2UyMy1tYWludAorMzc1NTkgOTI0YmIyYWFkNGY0ODFiOGIxNGEwMjg5ZTg1NTg2N2VmNTg1MjQ3YiBsZWdhY3ktdHJ1bmsKKzM3NTYwIGRjM2E2NzY3ZTk2MDg0MjdmYTc3MTMxMjA2ZDk5ZGUyZWNiNzY2OGUgbGVnYWN5LXRydW5rCiszNzU2MSBhYWM0Y2M2NjE4YjU0YmI4ZWJjYjY3MDZlNjUyNGNkZjZiYzExOWUxIGxlZ2FjeS10cnVuaworMzc1NjIgMDkwZmZjYjgzZjBhYWU0NmRkYjFiZGNiZTNkMGFkNzdmYTFkNmFlOCBsZWdhY3ktdHJ1bmsKKzM3NTYzIDBjMjZkYjM4MTY3M2UyNDA1NzMyZmFlYjMwYTA1NDBhYjA4NWMyZGIgbGVnYWN5LXRydW5rCiszNzU2NCA2NjMyNzQxOWViMDA0NGJmZGM1MzQ4NmQzYjQyNThkMjZmYWEzNzgyIHJlbGVhc2UyMy1tYWludAorMzc1NjUgMDhiNzY3NDcwNjYzZTM1NjkwODIzMzQ1ODExYTY3ZmI1MzA4NjZkNSBsZWdhY3ktdHJ1bmsKKzM3NTY2IDMyNzFlYTYwYjgyZGMzMjFjZGIwN2FkNmU1ZDEwYWE1ZGI2MTc0MjAgcmVsZWFzZTIzLW1haW50CiszNzU2NyA1NGU2NTI3ZjMxNTA4OTgxMGM2NjlhNDExYTFlYTNiNDQ3M2I0OWVhIHJlbGVhc2UyMy1tYWludAorMzc1NjggMjk1YmQ4YzU1YTc4OGMzMDNmMTdmYmJlZWJiOWRmNTlhMDkyOTc0MSBsZWdhY3ktdHJ1bmsKKzM3NTY5IDg5MTA0MmM5NGFlZDAxZjQ0ZmViMTIyNzI1MGMxMzc5NmI2NzIxYzUgbGVnYWN5LXRydW5rCiszNzU3MCA0OTgxYmE1NGY0M2Q4MTgxMjE2MjgzMzk0MGU4OWZjNTc3YWIxNzZmIGxlZ2FjeS10cnVuaworMzc1NzEgNzQyZmRhYzNkNWFlMmZmNDM1ZWIwZDFlMjVkYmVjMzcwMTE3ZTdmOCBsZWdhY3ktdHJ1bmsKKzM3NTcyIDQwMTNmMGE1MzgzNTEwZjgxMjQ3YzJiNGViZmQxOWFiNzlmNjIwZmMgbGVnYWN5LXRydW5rCiszNzU3MyBlN2M3YjNhZjYxNjQ2OGEzMDJjN2Y2Y2JjMWI1NTlkNzU4YzdkM2NlIGxlZ2FjeS10cnVuaworMzc1NzQgNDYxNDQ0ZGU3YjFmZDBhMTMyYzA1NDdjMDU3MGZmYmU0OTZlZTU4OCBsZWdhY3ktdHJ1bmsKKzM3NTc1IDY2NGIxOGFhNmZjMTI0YjI1NWYwYjA5NTYwOWM5YTg2OTFkZTFjMWQgbGVnYWN5LXRydW5rCiszNzU3NiBiYWEyNjUzZjdhNzZkOTRiODM4OTAxNDJjODRhYTI1MTkxZjU1MzM5IGxlZ2FjeS10cnVuaworMzc1NzcgNTE3ZTRlYzBkZjg5Y2M1Mjk5Y2M1NjRlYjg3ZGU2YTA4MjQ0NDI1ZiBsZWdhY3ktdHJ1bmsKKzM3NTc4IDYzNWRkOGE5ZWJkOTNjMTIxMThiYTEwYTNmYTc4YzM3MjZjNGFhZGUgbGVnYWN5LXRydW5rCiszNzU3OSBhNDZiNzZlYjkwNTNjODNkM2Y4N2EyODJmY2Q4YzJlNzM1MThmMGIyIGxlZ2FjeS10cnVuaworMzc1ODAgYzU1MjQ0NmI3YmIyZjRiOWVmMzdiOTgyYmQxNzY4YzBlYzNkYjIwMSBsZWdhY3ktdHJ1bmsKKzM3NTgxIGY4Y2I4ZjBhYzhmMTNhMzUzNzkzNjRjZTcyMTJjYmJkMGI2N2Q2YWMgbGVnYWN5LXRydW5rCiszNzU4MiBlNmYxYWUxM2JlODRkZjJmNmQ3M2JlMjZlMmRiMDA1MDYyMDNhMGNhIGxlZ2FjeS10cnVuaworMzc1ODMgZjIzNGJlMTcyODAwMGU5Y2UyMzY0YmIxNzEwZDMxYzA0YjJmNzNhNyBsZWdhY3ktdHJ1bmsKKzM3NTg0IGMyYWU0ODJmZjQyZDYzZGViYjRmMjkzMDVlNDRlN2VjN2ZmOGRkZGMgbGVnYWN5LXRydW5rCiszNzU4NSAyYzc5YjUwYWZiYWI1ZTNkODM1MGYxYjEyZGU3NmRmNWJjMTYyMWJmIGxlZ2FjeS10cnVuaworMzc1ODYgNzRhNTdlNjY4NGYzOTFjZDMzNjhmOTBlNDVkYzNlMzMzZGQzY2YyOCBsZWdhY3ktdHJ1bmsKKzM3NTg3IDc2NjQxODI0Y2YwNTM1N2JmYjc0Y2MyMTA2N2QxNGRkNzhlMWNhMjUgbGVnYWN5LXRydW5rCiszNzU4OCBjN2ZlMjI3N2QxNzFkNGZhOGE1YjcwZGFjMjNlNmRiM2VkMmNiYjY5IGxlZ2FjeS10cnVuaworMzc1ODkgYzliMWYyNjk0ZTk4YWFmZGY5M2E0YzI5YTA3NDkxZDM0MTZhZWQ0NiBsZWdhY3ktdHJ1bmsKKzM3NTkwIGFjYzE5MWI3MTRiOTk3MzU3ZTljMzg0ZDE5ZDUyZmNlZTM5NDI0YWYgbGVnYWN5LXRydW5rCiszNzU5MSAwMjM2YjY1MzBjNDYzMWMzZTBkMzM1MzFhNDA5MDhhNmI1YWIxNWQ3IGxlZ2FjeS10cnVuaworMzc1OTIgYTAxYmUzNTBlZDYxNTgxYjQyNzNiNjMyMGE2MmYyZGQ0ZTBmYWYxNyBsZWdhY3ktdHJ1bmsKKzM3NTkzIDBkNmQ1NmIyMTY0YjdjZThjOTAwYjI4Mjc1NDc2NGVmYTBlNzk4ZTAgbGVnYWN5LXRydW5rCiszNzU5NCA0NGNkYWM5YmY3ODU5ZWI3N2NlNmFkNjgzNGQyMDNkM2Q1ZjRmNTFiIGxlZ2FjeS10cnVuaworMzc1OTUgNTNjNDY4ZDA5NTViYWEwOGQxZTlkYmVlYmY2YzNhM2U0ZTMzNzMxZSBsZWdhY3ktdHJ1bmsKKzM3NTk2IGQ5NDA0ZGIyOWJjNjU3N2JkNDA5YTk5NWIzZTc3MGQ5ZTY3ZGQxMTAgbGVnYWN5LXRydW5rCiszNzU5NyAzOWExM2UzOWQyNGViOWRlMGYwYmYyMDc5YzE0MWU5Mzk4MzNiMmE0IGxlZ2FjeS10cnVuaworMzc1OTggZWIzZDYwMzBkOTUwMTA3MGRjOTI3MjBiODJlNWNiM2U0ZDgxZjRiMiBsZWdhY3ktdHJ1bmsKKzM3NTk5IDEzODNjNDY5MmFmNzRkY2E3ODc4NTZlZDFmNTlhNTk3ZmMyM2UyNDEgbGVnYWN5LXRydW5rCiszNzYwMCBhODA0MjgwZTM0ZjkwZmUyMTRlMDdhZDZjNDAzMjc1ZjQ1MGQ3OTQ4IGxlZ2FjeS10cnVuaworMzc2MDEgZTRmN2QzYjBjNWQ0ZmU0N2ZkYjI3YmNmMzdhODdlMGFjZjUzNDYyMiBsZWdhY3ktdHJ1bmsKKzM3NjAyIGE0Zjc0N2U3MjEzODFjZjdkZmU3NjM0ZjFhOTE0ZDE1N2UxNjAwYTggbGVnYWN5LXRydW5rCiszNzYwMyA3NjM1NTM2MzEwMWIwYTExNTUwMTg3NWEwNDc5ODQ0MDQ1NTA1YzkzIGxlZ2FjeS10cnVuaworMzc2MDQgNDRlMTc2Y2NhMzM3MjFhZDhkODNmNTA3M2JmMTc0NGJmYTg1YTY2MCBsZWdhY3ktdHJ1bmsKKzM3NjA1IGQxZjBjNzA3OWI4Mjg3OWE1NTkzOTc2NmU4YmE1YTljMDc2NWJjODcgbGVnYWN5LXRydW5rCiszNzYwNiAxNzllNDJlYTJlOWM5NzE5ODgxNzEyODYxNjgwOTMzM2NjNDAwMjRmIGxlZ2FjeS10cnVuaworMzc2MDcgNDY4Mzk4M2U4NGIzNTVkMWFlMDQzOTIzOTVkZDJkMTA2Y2Q1Mzc2NiBsZWdhY3ktdHJ1bmsKKzM3NjA4IDk5Y2FiYTgxNDU2NTRjYTM5NWMzNGY1N2Q1M2ZiMjJhMGNhMjE4ODIgbGVnYWN5LXRydW5rCiszNzYwOSA3NGNlYjZmY2I0MzI3ZGQ4Yzg1ZTEwMGQ4ODhiMzZkNWY5ZGVmYjM1IGxlZ2FjeS10cnVuaworMzc2MTAgYTI3YjAyNzE3MTFiZDA1YmIwMzVlZWYyYmI5NDE4ZTU3MDdlYmRmOCBsZWdhY3ktdHJ1bmsKKzM3NjExIGIwZWM0YzlkNTk1YjAwYjI2NmJkMWE5MzllN2NiZjcyMDBkOWI4OTMgbGVnYWN5LXRydW5rCiszNzYxMiBiODZjN2M0Nzc0ZWRmZDgzMmViNjhmYzk0OTg3ZTE4Y2RiMTgxZDhhIGxlZ2FjeS10cnVuaworMzc2MTMgMmNjMTA3Yzk2NDZlMmJkYjAzZjJkMGEyNWJkOTc5ZjZlNGVlMzQ1YSBsZWdhY3ktdHJ1bmsKKzM3NjE0IGVjOTkzYjcyNjYwNTcyODhkZTk1M2I3OTQ5MjYzODAxNDcxNjYxYzYgbGVnYWN5LXRydW5rCiszNzYxNSBhYTJkNjA2MDQ5NWEwN2JiNGYzN2FkYThlYWM5NzQ4YzEzNDEwZjU5IGxlZ2FjeS10cnVuaworMzc2MTYgZGRjMmQ2ZTU0N2MxNTM5NGY4M2RlZTYwNGJiZmExNWRhNDZjOTY4MCBsZWdhY3ktdHJ1bmsKKzM3NjE3IDkyZTA1YjYzNDk5Nzg2OTA2YjQxZDVhNTNhMjdmNWY3YmUzYTU5MmUgbGVnYWN5LXRydW5rCiszNzYxOCAxMGIyNTQxNDYyOGNkYjgyYzgwZDI2MGYxOTNlNjNhMTczMTQzODkwIGxlZ2FjeS10cnVuaworMzc2MTkgNGY4ZGI1NWNlMTI0YTJlYTdmOGJjMTAzNDI1Nzg3ODMxYzFmOTQxMSBsZWdhY3ktdHJ1bmsKKzM3NjIwIDE5Nzc3NTJjZjgwN2JjNzg5ZDkwMGI5M2ZjMTY4MmU1YmIxM2VhMWIgbGVnYWN5LXRydW5rCiszNzYyMSA4YTUwNjFiY2Q0MTc5ZjgyNDgwMDg1YzAxNmQ0NmY0ZWE0YjVmOGRiIGxlZ2FjeS10cnVuaworMzc2MjIgZmIyNzNhODNjNzVmZDkyNTcxOTc4OTA1YWY1OGM4MDI0ZWQ0OWExNSBsZWdhY3ktdHJ1bmsKKzM3NjIzIDExZDAxZmM2NTBkYzA1MmFmZDQ5Yzc0NGM5NTBlOTM1NWU5N2VhOTYgbGVnYWN5LXRydW5rCiszNzYyNCA0NjIxN2QwNWE0NzY2YTQ2MWJmNDJjODgwYWE4YWQxMDcwYWMyMzIxIGxlZ2FjeS10cnVuaworMzc2MjUgZDEyMjgxMjdkMjk0MjVmNjQ0ZWM3OTE0M2IyMjYwNmJiZWZhYzJhOCBsZWdhY3ktdHJ1bmsKKzM3NjI2IDI2ZmQwMGIzNjhmMWQ0NTJlNzRiNjQxZTY2Y2ExNjJkNTg0NDkwOGUgbGVnYWN5LXRydW5rCiszNzYyNyAxNjZiZDMzOWQzYmZkNjE5YzRkNzA1NWFkODYxMjQwMWVmODM4MGE2IGxlZ2FjeS10cnVuaworMzc2MjggMjZiZWRmNjNlNGE4OWM1M2Y4ZjhmYjM1ZWUxOTZkNGJjOTQwOWZkYyBsZWdhY3ktdHJ1bmsKKzM3NjI5IGIzMDhlMTViZDdmYmE5MjVmMTc3NzMxMTZmOTg1ZGIyYzBjYjEyOTcgbGVnYWN5LXRydW5rCiszNzYzMCAxOTA3YWQ1NGQzNTFjZTc3ZmE4MjJhNWUzYWEzMjA3MWJmN2NiMWRmIGxlZ2FjeS10cnVuaworMzc2MzEgNTU0ODJlOWRlYjY2MzgzNjRjMjAzMmIwYjFlZWM4ODE2NGQxYWFhYyBsZWdhY3ktdHJ1bmsKKzM3NjMxIDUzY2ZmMDQyODM4NTVhZGY4OGVkMGMwZmQzNjk4ODI3Y2E4NDM2MzcgbGVnYWN5LXRydW5rCiszNzYzMyA3MmM1MTMxZDRjNGFmMGRiMzdhYjQxNTI4NzhiNThkZTAwMGViNjFkIGxlZ2FjeS10cnVuaworMzc2MzQgYzZhYWMwMzQ3NGM1ZTIzODI4NmFjZGI0MmYxNGRlZGM3ZGVkMWY5NCBsZWdhY3ktdHJ1bmsKKzM3NjM1IDg4YmY0OGMwNjlmOWMzNjI0OTViZDRmNmE2NWQyNjNmZWM2YjIwODUgbGVnYWN5LXRydW5rCiszNzYzNiBiYTc1ZmRhOTIyMGMyYTE1NGQ2NjUyZTMwMGJmNWZkZWNhNzJkN2VjIGxlZ2FjeS10cnVuaworMzc2MzcgYWIwOWRhYWM1NjkxYjc4YzQ5YmI0NDcyNTJlMjIwZGU2NjU3MzJkYiBsZWdhY3ktdHJ1bmsKKzM3NjM4IGZiYWNiYjI2Mjc4OTQ5ODE5ZTBiNjhjNTA1MGMwYjNlMGE5YTMzZDggbGVnYWN5LXRydW5rCiszNzYzOSBlMTVjMTVhNGZiZTg4MTUxMTE5YWUzM2JkMTVjNDMzNGIzZDQ2OWNjIGxlZ2FjeS10cnVuaworMzc2NDAgYzVkOTUxYTBlMGMzZTkwYTYyNWU1NzJlNjhiNGQxM2E5Njk5YjA4NCBsZWdhY3ktdHJ1bmsKKzM3NjQxIGU0YjdjOTIzZWQ1ZjI3MzdmNjYxNTZhODhmNjYwMWUxNGM2NTU3YjUgbGVnYWN5LXRydW5rCiszNzY0MiBmMWMwNDhlNzQzZTJkODA2MGFhODk0MGYzMmE2OGExMWFkYjhjMTg0IHJlbGVhc2UyMy1tYWludAorMzc2NDMgYzY2ZTZjOWZmYzJkYmQzZDAxOWE3NGQzYjFiZjY4YTA4MTE1NGZhYiBsZWdhY3ktdHJ1bmsKKzM3NjQ0IDQ2ODhkMmEyNzNkOTBiODZmYmNjMzAyM2U3NzhlYTlmMzYxYTBlYTUgbGVnYWN5LXRydW5rCiszNzY0NSBkOWQzYjQ3NWNlYjI1ODY2M2IxMzEyMWQ3NDc5ZTdlZWFkNTYyNjMwIHJlbGVhc2UyMy1tYWludAorMzc2NDYgYTUyZGU5MTFiMjg0ODE0NzE4MjE2OWNiZmMzMjJjNmY1MmY5MDEwMCBsZWdhY3ktdHJ1bmsKKzM3NjQ3IDNmZGQ5NmYwY2U4NjZjNWFmNjkyMWYzNjg0ODE1OGZhZmMwYmYzYTYgbGVnYWN5LXRydW5rCiszNzY0OCBmMTc1Yzk4MzgzNzM2ZDU4N2Y0MzYxNzc2MGI2MTI1NGE5YzNhNTRjIGxlZ2FjeS10cnVuaworMzc2NDkgODE3YzI0MWJmZmZmOGRmNGYxMTg4ZmJhNjMyZDRjZjhiMjlkMTU2NiBsZWdhY3ktdHJ1bmsKKzM3NjUwIGJkMTg4OGU5Mjk5ZjczNWNlNzExOTY0OWM5OGM3YWQ0ZjlmY2YxYjcgbGVnYWN5LXRydW5rCiszNzY1MSBiODc3OGNmN2QwZTM3Mzg3MWZlZjAzOTk3MjY0OTI3M2E3Nzg3ODQwIHJlbGVhc2UyMy1tYWludAorMzc2NTIgMzM0MmJjMjMwMGMzYWMyZTZjY2E1ZTdmNzJiN2E2NTA3OTJjMGI1NiBsZWdhY3ktdHJ1bmsKKzM3NjUzIDhkOGIzOTIzNGRlOWU2ZjBiZTk3ODI3MmNmZjUyM2FhNDE3ZjZjN2IgbGVnYWN5LXRydW5rCiszNzY1NCA4M2EwMTkxMjg5OWY2MDQ2MDBhZGFlN2FmZjExMzYyOGNiODhiNjI4IGxlZ2FjeS10cnVuaworMzc2NTUgNmRmZmRjMzNmYzZjNWMwMWYwMWNjOTZlZjdhNWFiYTgzNDYwYjcyNCBsZWdhY3ktdHJ1bmsKKzM3NjU2IGQwNjNlNGRlNTY3NjAwZWE2YzdiN2VhZDg4YjM3YmYxM2Q0ODg4NjEgcmVsZWFzZTIzLW1haW50CiszNzY1NyAyMjNkODIyNjA0NTJhYWMyNWM4NTg4MDcxMjFhNDFlZTBkNDUwNDMwIGxlZ2FjeS10cnVuaworMzc2NTggYTIyNDNkNjZkNDBiZGExZTMxOTg1YzY5M2NkOGM5ZjQwMDA2NWYyMiBsZWdhY3ktdHJ1bmsKKzM3NjU5IDY5Yzk2ODgxYWFhZGI0ODQ4MmQwMjk0OTU5YzNmYTQ1ODJjNTBkOWQgcmVsZWFzZTIzLW1haW50CiszNzY2MCA2ODE5YmEwMjM2Njc2ZmUwM2M2MmIwMTA1ZThlMWVhZmVjYjZmNGViIGxlZ2FjeS10cnVuaworMzc2NjEgYWViNmZmMzA4ODQ4Yzg3NWQ1ZTRhM2I1MjMzMGQ3MDI2YjMzZTJlNSBsZWdhY3ktdHJ1bmsKKzM3NjYyIDRmZWRjNTI5YWQzMmRiOTU3MDQ0YzFmZTgxYzY1YTIzMzU0NzQ0NTYgcmVsZWFzZTIzLW1haW50CiszNzY2MyBiMWE5ZWE2ZThhZTIwYTMzYWMwZTZjY2VjM2MwNDdmMjhmNzY3OGI5IGxlZ2FjeS10cnVuaworMzc2NjQgMTk5ZGFjZTAyNGJhMDQ0ZDQ1MGRkZjM4YmVmNmQ3OWFmZjUxNzJiMyBsZWdhY3ktdHJ1bmsKKzM3NjY1IGQ0ODVlNzhhNDNkNjU4NGJiYjkyOGUzNjE2NGQ0MmQ0ZWVmZTliY2UgcmVsZWFzZTIzLW1haW50CiszNzY2NiA1Yzg2MjQ5NmE5ZjZhYTgzMWRhOWY4N2U4MmE5NjEwYWZkYjU5MTQ4IGxlZ2FjeS10cnVuaworMzc2NjcgZDJlOTU5NDA0ODI2OTJiOGU4YmE2MTcyM2MyN2FmNzg1OGUyNDM0ZSBsZWdhY3ktdHJ1bmsKKzM3NjY4IGU5Y2JlMGFkYjI4YWU3ZmE3YWMyMzE4OWFmZWI4YzJlZjMyMzQxMjcgbGVnYWN5LXRydW5rCiszNzY2OSBhOWU2MDUxNDAwNzQ3N2YyMGNmNDg4Mjc2ZGQxNTg2ZDE0MjkzZjhiIGxlZ2FjeS10cnVuaworMzc2NzAgYTNkZmQ4MDE1MzNiNjE4NDFlZDcxYzhiYTlhOTE0ZmFiYzQ3YTkzYSBsZWdhY3ktdHJ1bmsKKzM3NjcxIDQ3YjM4NDUxOTc3NTc1NjA2ZGUyZGJkZGE1NzU2NWMxMzVjNjhiN2IgbGVnYWN5LXRydW5rCiszNzY3MiA1OWUwZmYwY2QzZDRjOTFlMmJmY2QzOWVhNjBmNjg2NWVjOTBjYWI0IGxlZ2FjeS10cnVuaworMzc2NzMgZDQ0MzUwNWU3ZWVjMThiOTQ2N2I0OTJkZjZkNTJiYTI1MGVlNTg0YyBsZWdhY3ktdHJ1bmsKKzM3Njc0IDNmZjI1MjcxNWQ5M2IwNGVmZWQ2ZjUyZWExYTI4ODMxMGExMjdjZjIgbGVnYWN5LXRydW5rCiszNzY3NSAxYzY3NmU4OTFiM2Y5YTgzNzJhMTNmNmYzMjY5Y2ExZDMwNjE1ZTJhIHJlbGVhc2UyMy1tYWludAorMzc2NzYgYWQ5MDg4OGIxN2JjMDIzNDU4OTFlMWVmNmQyYTZhOWZhNjdkOGRlNSByZWxlYXNlMjMtbWFpbnQKKzM3Njc3IGY1NDg2ODg1NWIxY2NkYWEyYTc4MTUwYmZmYzZiOTdkODBkY2MyMDQgbGVnYWN5LXRydW5rCiszNzY3OCA4MjE0MmEyNGU4NDVjMzNiZDljZjAxMDQxOWFlZWZkZTM4NjZhYjBhIGxlZ2FjeS10cnVuaworMzc2NzkgMGFmYjI1MzBlOTg2YWEwNmRkNjBmYjM3MDJmNDU3NDIzMTU0MjkyOSBsZWdhY3ktdHJ1bmsKKzM3NjgwIGIwZjBjNTdiMWUwNTU3MDIwYjIyYTE5MDBjNWQyZDJjMDJlM2JlYTAgbGVnYWN5LXRydW5rCiszNzY4MSBlZDA0MWUwZTQ1MWVmMTFjYmU5MTg4MmU5MDQ3OGZiNzZmMjVmYTMxIGxlZ2FjeS10cnVuaworMzc2ODIgYjNhMzBlMjg0MmI5Njc1YmQzZWNhMzlmMWE0NzA2ZDQ4MjNkZWE4YyByZWxlYXNlMjMtbWFpbnQKKzM3NjgzIDhkMzhmMmYyMTUxY2NhNWFhMjE5ODAwZWE1YzBlMjZhOTY5ZTgwYTkgbGVnYWN5LXRydW5rCiszNzY4NCAyYTE1MzE4YzQwMzhjMzA0N2RjOWMxYzhhMmFhNDkzY2UyMWQzNmEyIGxlZ2FjeS10cnVuaworMzc2ODUgZjE0MzI5YTc4OTgxOTEyMTUwNTZlM2Y1OWRlOGMyM2I4OGRlOWM0MiBsZWdhY3ktdHJ1bmsKKzM3Njg2IGJmMThjYWNhMDczMDQzNzE3MDRkZGEyNmE1NTNkZjZmMzFjYWIzODMgbGVnYWN5LXRydW5rCiszNzY4NyBkYjg3MTBmMTM2NTA4OGViZDAwZjliYzJjZTFjNmVkMjUzYWRkNWE4IGxlZ2FjeS10cnVuaworMzc2ODggMjliOTQ1YmMwYTE3ZjFjOWE5YjFhNmRkOGNiNjIxYWY2ZWJiZDE5YSBsZWdhY3ktdHJ1bmsKKzM3Njg5IGFlZDI1MjZkYTFmYzdlZDkzNDNkNjRjOWM4M2E2ZTM0Yjk4Njg3MjMgbGVnYWN5LXRydW5rCiszNzY5MCAyOGVmMGEzZjU3ZjZjZDc4NDhhNzZmYjJmYTk2MzFiNmQzNDA2MmNjIGxlZ2FjeS10cnVuaworMzc2OTEgZDkzOGI5ZWQzMmZmZWNhZThjNDA0OTQ1YzNjZTYyYjg5YmI0YWQ5YiBsZWdhY3ktdHJ1bmsKKzM3NjkyIDE3ZDg2NjFlN2QxM2FhZTQ2Y2M0MGM1YzkxODQyNjQxNTM4MjhiNjUgbGVnYWN5LXRydW5rCiszNzY5MyA2YzQxNjk1Mjg0ZjZmZjdjOTQ5Nzc0ZjU2MTU0ZDE0ZGJmMGMyNDdlIGxlZ2FjeS10cnVuaworMzc2OTQgMzE3MTAxY2ZmYjcyOTM0NTUyN2JkZmIzODEzYjBkZDNlMjZiZDBlOSBsZWdhY3ktdHJ1bmsKKzM3Njk1IDlmZmMzNDQ4OTFhNjI2ZWRhYTI2MDFmY2FlNDA1OWI2NDFiMzFmMTkgbGVnYWN5LXRydW5rCiszNzY5NiA2MjdmNzdlM2NlYjY1MWJhMWQwYWFkNjBjNGY1NmI5OGNiNjkwNTU4IHJlbGVhc2UyMy1tYWludAorMzc2OTcgMTA1MTJjZWJhMzBjNTVjZTY0ZDVhMjZhN2Q5MGY5ZTBkYjY0ODEwMiBsZWdhY3ktdHJ1bmsKKzM3Njk4IGVmMTQ5ZWE1OTRhNGMwZjRhODEzOGZkNGI5OWY4YTdmZjExODM2Y2EgbGVnYWN5LXRydW5rCiszNzY5OSA5OTFkMzQ5MGY2OThlYjJhZjhkMzgwNTYyNTMyZDcyN2E1MWUyOTZlIGxlZ2FjeS10cnVuaworMzc3MDAgZGM4ZWNmNzI0NDg4YzI2Zjc1ZDkwMjNiZjRhZTI2NTUxMzZmNDVjYSBsZWdhY3ktdHJ1bmsKKzM3NzAxIGJkNTU4MjExYmE1NTJjNzE0OWE4MzZjOGQ2ZjJiYjk4OGNjYWViMDAgbGVnYWN5LXRydW5rCiszNzcwMiBmZGNlM2QzOWJlYzE0ZDRkNDcwNDAxNTUyZTdhYzY2NzY2MGNiZjJjIGxlZ2FjeS10cnVuaworMzc3MDMgNGRkOTdjMzdjMmNjMmMzMzc4ZjJjOTE2YTM3Y2QxZmVhN2FkODk5YyBsZWdhY3ktdHJ1bmsKKzM3NzA0IDZmYzEwMzA2YmYzMTJiYWM5OTNjNzUyMWY2NTM3MWM5MmM1YzEwNzIgbGVnYWN5LXRydW5rCiszNzcwNSAxMDViZmUxNzY5Yjc5NmM0MjdmNWUyZmRjNmEzMDAzN2NkZjcwZTRmIGxlZ2FjeS10cnVuaworMzc3MDYgOTkzYjEyOGQ0ZTI5NGE1MTcwOTM1NGZiYjAwZmI0ZDJkMTM4ZjEyYiBsZWdhY3ktdHJ1bmsKKzM3NzA3IGFjNGZhOTQyZjkyZTc4YTZjYmRkZDZhOGQ3ZGJmZDg0ZDczZTAxMjggbGVnYWN5LXRydW5rCiszNzcwOCBlZDEzOTM3MDc5ZGYxN2NhYzI2Yzk3MDY3MmJhNDJlY2EyM2FmM2QwIGxlZ2FjeS10cnVuaworMzc3MDkgMDMyZjM0MmVmY2QyNGYyNGM2NmNlNmJmYjBlYzEzODA3N2E0NWVkYSBsZWdhY3ktdHJ1bmsKKzM3NzEwIDc5YmNhZDE0ZTk2YWFhNzc1ODk2ZDRmZTQ0ODQ3NTMzYmQ4ZTkyNzYgbGVnYWN5LXRydW5rCiszNzcxMSA1NTEwOTk1ZWEyNmZiNWQ5NDhhMDRkZjk2MTlmNzA1YzdkZGVjYjRkIGxlZ2FjeS10cnVuaworMzc3MTIgMzM5OGM1Y2U4YjdhMDk2MDc0ZTRmMWI5MTgwMDRmOGEwOGU2NTMyOCBsZWdhY3ktdHJ1bmsKKzM3NzEzIGQ4Mzk5OGE3MjFhMGEyZWYxZTQzN2YzZDZkOGEwNDkxYjFhYTcyMzMgbGVnYWN5LXRydW5rCiszNzcxNCAyNjI1NTM3YTZkZmFkZDUzNjA4Y2M3ODMyOThmZjljNTM4YzQ5Y2U5IGxlZ2FjeS10cnVuaworMzc3MTUgMmVlMDMwMWI0ODNjZTJhODRmN2UzOWI5OGRiYWRjN2ZiMmJhM2VmOSBsZWdhY3ktdHJ1bmsKKzM3NzE2IDk0Mzg2MmIyYjRkZmU1NmU1OGRjNTJlNmViMGQwODU0MWQ5ZDdhMGMgbGVnYWN5LXRydW5rCiszNzcxNyBkNDFhYzExZTljNjA0YTY1OTZjM2NmMTRlM2RiODMzNDNlOGQxMTkyIGxlZ2FjeS10cnVuaworMzc3MTggZWVjMzE3ZWU1YzM1YjhmODcyMTI1YTMxZjUwYjU0YzE1OGYyYjlkOSByZWxlYXNlMjMtbWFpbnQKKzM3NzE5IDFjZDE5ZGFhYTlkNDJmYWI3MjIzMjBhOGQ5YWZjYzMyZTkyOWIwYjQgbGVnYWN5LXRydW5rCiszNzcyMCA2MGM2MGRjNzVjNzcyNjRiOWUyYzJmNWY0YmQ2YzYxZmUzY2ZiMWE4IGxlZ2FjeS10cnVuaworMzc3MjEgNmRhMDc4NzNhMGVlMzc1NDk1ZGI5Yjg1ZmQyOTdiYWRiM2ExODBjYSBsZWdhY3ktdHJ1bmsKKzM3NzIyIDBkZGFlOGIwZmIxOWEzODMyM2I0MmJjNWI4NDYzY2RmMTlhZDhkYjMgbGVnYWN5LXRydW5rCiszNzcyMyAzMDczMjQzNDEwN2I2Y2ZlNmQ5MjhiNDQwMGQzMjJlNzIwN2NhYjgwIGxlZ2FjeS10cnVuaworMzc3MjQgMzQ2NzI4ODA4OWExZTI1ODYzZTVkM2Q3NDQxYTU2ZjQzYzRlNTNiMiBsZWdhY3ktdHJ1bmsKKzM3NzI1IDRhM2VhYTFhYTNhZmQyZjViOTRjZTJlZDBiMmU5ZGI3ZGFjMjBlYzcgbGVnYWN5LXRydW5rCiszNzcyNiBmYWNiNWEyZjRiNTNlOTdkMzEyZGIzMTkwOTllYjc5ZDQ5MTUxM2FjIGxlZ2FjeS10cnVuaworMzc3MjcgYjU4NWJjY2ZiMjUwNTQzYTY2YmI4ZWY0ZTQ1ZDEwYTMzNDEwN2VkZCByZWxlYXNlMjMtbWFpbnQKKzM3NzI4IDZiNjFhZjA4MzQ5MzMxM2I1MzhlNTE1NGQyNzZmMWY1ODc2NzU1N2IgbGVnYWN5LXRydW5rCiszNzcyOSBmMTk2NzE2ZWEwZGI0NWQ2Mzc2N2YyZDNiNzdlY2E0MWZjMTM4MjRlIGxlZ2FjeS10cnVuaworMzc3MzAgMjYzMmY0MzQwOWY0OTY1YWNlYjcxMjUzMDk5NWU0ZDQ0MjBjZWVjYiBsZWdhY3ktdHJ1bmsKKzM3NzMxIDA3ZDk0YTE2MmNmODk1MWVmYWRmNjgzNTE0OGIzNjczOGU3NzIwZmYgbGVnYWN5LXRydW5rCiszNzczMiAzMDhlOGVmMmQzZWRmNWY1NTFiZmIxMjE5OGEyNWI1MDViOWUzZjdlIHJlbGVhc2UyMy1tYWludAorMzc3MzMgMjIzZDIwYWZjOGI1ZTFlYjhjOTNmYTZhMWRhMTk5OGMzNDE4ZmNlOSBsZWdhY3ktdHJ1bmsKKzM3NzM0IDgwY2ExYThiMjMyMTYyZTA5ZDdkNTI2NjNhNTIxNmFlZGI1MjE3YWIgbGVnYWN5LXRydW5rCiszNzczNSA1YWZhNTI3N2ZjZDk3OTNhZTBiZjFjOGMxNjlmN2FkMzA2MGZjZjViIGxlZ2FjeS10cnVuaworMzc3MzYgMTgwZGM4MjllZmZmODE3NTFlZmI4MTJjZjBkYTA0YmFmYmY1ZjA4YiBsZWdhY3ktdHJ1bmsKKzM3NzM3IGJmMmQwM2RmYzM4ZTI4ZjFjNGM0OTFmOTc5MzBiMjJiOTI5ZDUzMzcgcmVsZWFzZTIzLW1haW50CiszNzczOCAwZGMzZjk3MDU1NzcwNzNhYzA1MGQ5ZTBlMTAxMzlmYzM0NzQ0NzU2IGxlZ2FjeS10cnVuaworMzc3MzkgMjRmYzNlYWExOWUwYjVkZDlhY2Y3OWRkOWQ0ODdjZDJiZjBmMTdhOCBsZWdhY3ktdHJ1bmsKKzM3NzQwIDYzM2NhZGViZjY4ZDRkZDhjZjBjOTE5ZmY1MjE0Mzc2YmViYzhjNDkgbGVnYWN5LXRydW5rCiszNzc0MSBhOGM5NzljYzRmYTY1OGQ4MjZkMjEwNDhmZDc4MWE1MjBiMDNiMjZiIGxlZ2FjeS10cnVuaworMzc3NDIgZWY1MDMwYmM1ZjY3MWM0YjA0ODFjODhjYmE5MTMxNTg0OWNhZGI2ZSBsZWdhY3ktdHJ1bmsKKzM3NzQzIDY4NzM2MmZhNDcxYzNjMDkzMTcwNTY2ZjU5ZTQ5YjNmNmIzZmRjMTIgbGVnYWN5LXRydW5rCiszNzc0NCA4YTA5YzgyZTQyNjEwYjBkNDk2ZmQzMTg1Nzk0ZmQ3ZmIzNDg1OGU4IGxlZ2FjeS10cnVuaworMzc3NDUgYmMwNDIxYjk2NTdhMDA1OGFhOTUwY2FjZThjM2IwNWU3NTg1YmFkNSBsZWdhY3ktdHJ1bmsKKzM3NzQ2IGE2Zjk3ZTBlNjMxODk2NGMyNmM4ZmJhZTBkNDA1NmMxM2E1MzVlYzAgbGVnYWN5LXRydW5rCiszNzc0NyA1ZWNhMjQ4ZjYzOWU0MmY0MDcyYzljN2RmOWFiZjljZDNmNGQzZjcxIHJlbGVhc2UyMy1tYWludAorMzc3NDggYzE5ZTgxMTEyMDU5MzE2YTY4MjQzZDcwZDM4ZjAyYjAyNzc1ZTM5NCBsZWdhY3ktdHJ1bmsKKzM3NzQ5IGE1NzZjZjFhYzZhMDRlNzgyZjdhNzEyNzMzMmI1YWM4ODZmMThkNjcgcmVsZWFzZTIzLW1haW50CiszNzc1MCA5NzY4NjI0ZjAzNWZhMjM4ZmU5NTUzZjdjNjM1YzQwM2U0NTI1MzU4IGxlZ2FjeS10cnVuaworMzc3NTAgMGNiMWJhOTIyNDFiYTI5NTc1NTA1ODI4ZWVlMjQxY2QxMjZkNDY5MyByZWxlYXNlMjMtbWFpbnQKKzM3NzUxIDBkNmRiZWJkOGI0YTJkMDQzMzk4YTI0YzE5ZTAxNjg1ZjcyZTk2NDcgbGVnYWN5LXRydW5rCiszNzc1MiA1M2FhMDE5MzcwZGI1MGEzZTAyOWM1NzQ1MjEyYmI1MTA2OWUxNGU4IGxlZ2FjeS10cnVuaworMzc3NTMgYzMwOGM2YmEwMDJmNWI1YjI0ODk3MTQ4MDhiNDM0M2ZmYTU4OGZhMCBsZWdhY3ktdHJ1bmsKKzM3NzU0IGZlYjQwMTdjYmFkNDJhNzQ1YzI1YjFjNzczZGM0YTY2MTFlODc3NmUgbGVnYWN5LXRydW5rCiszNzc1NSA3ODZkM2I4YjliZWVkYmFjNDRjZmI4YjQ0ZjM1ZWExNGUxZWEyMjBkIGxlZ2FjeS10cnVuaworMzc3NTUgN2UzODdhOWRjYzc5OTU0YTc3Njk1YWRlZjhiNTkzZGEzNWJlMTIxNCBsZWdhY3ktdHJ1bmsKKzM3NzU3IDg1ZGIwMTZlOGRhYzYzZWU5NTlhZWQ0NTVlOTE4NmIzZjA4MmUxNTUgbGVnYWN5LXRydW5rCiszNzc1OCBkNzgzZDUxNzE4MTE5ZTQxMDY4YzM4OTZjNWJjOTVlODZlOWFjYzkwIHJlbGVhc2UyMy1tYWludAorMzc3NTkgNzEwYjdlOGQyZmYyYTYwYjg2NTczZTkzZWIzMGViMDY5N2E2ZThlMCBsZWdhY3ktdHJ1bmsKKzM3NzYwIGRmYjdiMDdkY2RlZGQwMDkyYTViY2FjZjYyMGVkNmIzMWQyZDJmY2QgbGVnYWN5LXRydW5rCiszNzc2MSBhNTEyOWQ2YWIxY2M2YTUzODVlOTYyMWY4ZDdiN2Y0YzI0YjkwY2M2IGxlZ2FjeS10cnVuaworMzc3NjIgZWI5NzljM2YxNGJhOTYzZDk1NDJlMzM5MGZhZmUyNzhmOWIwOTY0OSBsZWdhY3ktdHJ1bmsKKzM3NzYzIDVjYzM4MzQwMTI5NGZiNGM1NGEzZDcyNzRjZjU1MGNmZThlMmMyMzkgbGVnYWN5LXRydW5rCiszNzc2NCBhYjZiMTA4YThjZWM4OWEyMGRiMDU3N2M0NDYzOWIwYjhhNzE4MDZkIGxlZ2FjeS10cnVuaworMzc3NjUgMjA4NzMyOTVlOTE2MDc1NzRlYjRmMTA2N2M1OTljYjA4YTVmZTYyOSBsZWdhY3ktdHJ1bmsKKzM3NzY2IDE5YzJkY2NmYWY2NTNkOTY3N2FkZTc4ZTFjYjZhYjVkOTZkODY5MjQgcmVsZWFzZTIzLW1haW50CiszNzc2NyAxMzI4OWE3NDQyYzM3ZjViNDljZDU2MjhjOTg2NTFlOTY2NTE5ZTJkIHJlbGVhc2UyMy1tYWludAorMzc3NjggMzYwMjRmYTNiZjRmNGVhNDE5M2VjNmQyOWFmZmI3NmNjZGE5ZjZjYiBsZWdhY3ktdHJ1bmsKKzM3NzY5IDhmOGM4OWJiZTQzOWQwZTE4NGU0ZWUxZGQ4ZGFlMDdhNTkxZTQ4YjEgbGVnYWN5LXRydW5rCiszNzc3MCA1ZWQxZDk3YjQ5YTEyNDU5YTBiNmJjYTcwZGJlOTBmYzhmOWJkMTE0IGxlZ2FjeS10cnVuaworMzc3NzEgN2VkODk5YjYxMTgyODA2YzliMTZkMTZkMDY3MDlhNjJlMjlmOGZiOSBsZWdhY3ktdHJ1bmsKKzM3NzcyIDJmYTg3Mjc4NGViNjIwMWIyMWVhNzNiZjZjOTFkYWYwYWI1YTZiMjUgbGVnYWN5LXRydW5rCiszNzc3MyBiM2ZmYTY0ZmY0YzY0NzAyM2EyNTM3OTJhMTVmNTAyZGQ0YzE3N2RiIGxlZ2FjeS10cnVuaworMzc3NzQgOTliOTIwMTg2MzY3MWI4ZDY5MGVlMjY1MGZkMTc1MDA2Nzk0MDEwNCBsZWdhY3ktdHJ1bmsKKzM3Nzc1IDlhODYyNDI1YTk4YTE0NmNhZDY5YTEyOTM1NTNlMjkyZjI4NGI5YTggcmVsZWFzZTIzLW1haW50CiszNzc3NiA5Y2U1NzY0MDE5YWVmMDQ0NjE3MGQxMzRhMTIxMDU5ZWNkM2E1Y2MxIHJlbGVhc2UyMy1tYWludAorMzc3NzcgZWE2ZWY0MGRjOTIyMGY0NzU3YzRiZjBjZTE1MGQxZWQ5ZTc4MDAyYiBsZWdhY3ktdHJ1bmsKKzM3Nzc4IDdlODhjMDQzN2VjYzYyMGVhN2FlM2I4ODExZjdiNjdkNDY3ZTc1NTMgbGVnYWN5LXRydW5rCiszNzc3OSAwMjAxNmQ1YTRkYzZhODM1NjlkYmJiMTgyNmMyZTZiZWY4YmVjNTRjIGxlZ2FjeS10cnVuaworMzc3ODAgMjU3MTRlMGZjODlkYjEzY2RkN2JjODgwYjdjMzFkMzc2ODYzMWE0NiBsZWdhY3ktdHJ1bmsKKzM3NzgxIDhlOTFhN2VhYTdiNzk5NWI2NTZlMWEzNmMwN2NmNTgwZGMwYTYwZTUgbGVnYWN5LXRydW5rCiszNzc4MiA4Njk4NjUzZTA1ZmMxMDkxYjU5MTAyMjhiNzI2ZDIzNjRjNWU3MjBkIGxlZ2FjeS10cnVuaworMzc3ODMgZDgyZmE5MzJiNDFiYzAzOTE2NTgxMTZiYzNlOTdiOGM1M2E5M2NmMyBsZWdhY3ktdHJ1bmsKKzM3Nzg0IDdmZDRkMzUwZmY4MjYyYjhkNTg1MDk3ZGQ3OTU2YTFiMGJhYmJkMTUgbGVnYWN5LXRydW5rCiszNzc4NSA5MTczYjllMGFiNzczNDk3MDQwZWJiYjc0MjMwNzI5MWMxYTM1YzVhIGxlZ2FjeS10cnVuaworMzc3ODYgMDE4ZGNjN2VmODg3ZGViYzdhNzhmZDlkY2M2ZmU5MjlmZjhhZmVlZiBsZWdhY3ktdHJ1bmsKKzM3Nzg3IDY2MmMxNTUxMDZlNDI1YzEwNWY5ZWYyZjlmOGIwZjY4NDkyYzRmYTEgbGVnYWN5LXRydW5rCiszNzc4OCBlNDQwNDA0NmU1NTJmODZkNzVhMWRiZjFkZTZmNmFjZWY5YTM5ZmFmIGxlZ2FjeS10cnVuaworMzc3ODkgODM5MGY5MzlkY2MxZjNjYjgzMDgyOGFmOWZlNDEzNzUzNWVkYWUxYyBsZWdhY3ktdHJ1bmsKKzM3NzkwIDgyOWVlMzI1YTE4ZTUzODdmZjc4OTM3YjJjMzRjMzg5ZjhjNzRmZjQgbGVnYWN5LXRydW5rCiszNzc5MSAwZDRlY2MzMWNmZDgzZGI1ZDRhZDZjNDc4ZmMxOWFmNDZjMjllNDc5IGxlZ2FjeS10cnVuaworMzc3OTIgNjYyMjNhOWViZTQ4NjM1OWMxZjU3N2I4ZTg2ZWRhYmYyZTQzODEzYyBsZWdhY3ktdHJ1bmsKKzM3NzkzIDRmYTFkZjNiMDYyZjQ5N2EyM2M0OGI0MTE2YjU4ZjQ2OWQ1N2E4MjggbGVnYWN5LXRydW5rCiszNzc5NCA1NDhmMzhhNTY2NjllMjJmN2NkYjM4M2IxMWVhZDhiMWNiMWUyMzNlIGxlZ2FjeS10cnVuaworMzc3OTUgNTljNDNmZDhiYTczZjA3ODhkMWFkZjY3MTM3NTI3ZWU5ZmUwZmRmMiBsZWdhY3ktdHJ1bmsKKzM3Nzk2IGViMjMxNTQ0YzFhZDVlNjA1MGI5N2EwMmRmOTZkOGI0NmY4NzExNzggbGVnYWN5LXRydW5rCiszNzc5NyAwYWUyOGMzYThkMjQwNjgzOGYyODYzM2ZjMjQ2YjkxYmRiMWM0MjY2IGxlZ2FjeS10cnVuaworMzc3OTggYWI3MzIxNzczMGRiMjMyZTNlMDlkMjZhNzlmODg1ZDllNDI5YjlmNyBsZWdhY3ktdHJ1bmsKKzM3Nzk5IGU0ZTIzZTNhNzg0NGJjZWVmMGVjYTNlMTNmNTY5ODc5ZDQ1NWEzYTMgbGVnYWN5LXRydW5rCiszNzgwMCA0ZGUzNTRjNzhhN2VmYmMwNDg1YmRkOGEyNWRjMTgyMmYzODZkYjhkIGxlZ2FjeS10cnVuaworMzc4MDEgODFjYmYwMzE1NDlhMWY5ZTBiMTA5ZDIzMjIzNWQ2OWM2ZTE5M2Y5ZiBsZWdhY3ktdHJ1bmsKKzM3ODAyIDVmYmJlODIzM2I3NjMzMzZiYTFlYTFjODgwZThjYTY2NzIxYmY0YmMgbGVnYWN5LXRydW5rCiszNzgwMyBkZmQwN2I3YmU0MDcyZjc5MzNmMTFhZjE1MTM5ZjI4NmQ1MmVlODVhIGxlZ2FjeS10cnVuaworMzc4MDQgNDYzYTAzYTVjYTIyODNlNmFiOTAzZTAzMzAyMGIzMzE5MmU0NGU1ZiBsZWdhY3ktdHJ1bmsKKzM3ODA1IDgyZDAyNTY0MTIzZGZjMmM1MTY4MjYzZjIxMzAzNjkwYTdiNTI4NDEgbGVnYWN5LXRydW5rCiszNzgwNiAzNTllYmM1NjA5M2U3ZWIyZjQ0OTVjZjQyZjc0NDViMWQ4YWM0ODUzIGxlZ2FjeS10cnVuaworMzc4MDcgOTYxNzljMDk2ZDY1YWRjYTNhOTY0MDA3YzE5MTU1NzMyN2ZkYzJmZSBsZWdhY3ktdHJ1bmsKKzM3ODA4IDkwNDc3MWJlZjNmNDdmZGJkMWY5MjcxM2IwZDg1ZWQ4YzVjZTE3OGUgbGVnYWN5LXRydW5rCiszNzgwOSBhZmVlM2MzM2FlNmQ4Yzc1NTkwYTgxNGUyMDcxZTg0Zjc0YmNkN2ViIGxlZ2FjeS10cnVuaworMzc4MTAgOGIyYTJmN2MxM2I4MGRjNzQ0YWI4NjE1YmUzOTcxMmRjOWZlZDJmYSBsZWdhY3ktdHJ1bmsKKzM3ODExIGYyY2UxNWIwMmJhM2ZlYmJkZmVjMjE4MDkzYmEwNjg2MGQ0YjYwYzkgbGVnYWN5LXRydW5rCiszNzgxMiBiOTgxOWI5YTBkYWQ1NDIxMTdlZWU0ZWQ2NzA2MDM1NDJkYTMwOGZmIGxlZ2FjeS10cnVuaworMzc4MTMgNjMzYmU0M2JlZDE3ZDAzN2JmYzlhMzZiNWRlMzA1NjNiNWFjYWEzNSByZWxlYXNlMjMtbWFpbnQKKzM3ODE0IGViMzQ0ZTAzY2M3MTI1NjJlZTEyODJlZjYwYzQzMDQzOTM0ZmExMTcgbGVnYWN5LXRydW5rCiszNzgxNSBiNGYwYWQ4MTU5YzczNGRmOTFiOTA1OTI4NjI0NTdiMzY4ZjA2MTg5IGxlZ2FjeS10cnVuaworMzc4MTYgZTFmMTQwMjYwOTQ3OGFmNzg2NDRiNTMwNzBlMmU1MjQ4ZWY2NzFlZiBsZWdhY3ktdHJ1bmsKKzM3ODE3IDBmZThhMTZhMzM2YWVhOGE0NjgxYjBkYzJiYWRkOTdiNjkwOTkxYTkgbGVnYWN5LXRydW5rCiszNzgxOCA3N2IxYzE1MTc0YjQ0ZGJmMTIxMTc2NWQ3NWUyNmZkYTQ3MzAzZTNiIGxlZ2FjeS10cnVuaworMzc4MTkgOTQyZjg3NDNhZGYwMjc4Yjc4ODJlMGU3ZTcwYTczZGZjNWQ3YmIwYyBsZWdhY3ktdHJ1bmsKKzM3ODIwIDRmNzQ1NmQwM2NiOWRlNjIzOTg1MGE2OWU2OWQ2NGQ1ZjdmOGU2YmUgbGVnYWN5LXRydW5rCiszNzgyMSBjODcxZWY5NjY1NWM4ZDM4YmRjOTQ0MzI5ZDA0OTI1M2JhZDI0Zjg4IGxlZ2FjeS10cnVuaworMzc4MjIgZGM4MDQ3NmI3ODJiNzkwZWNkYTQyNzYwODNiYWZhYmUwZmVkMzkxNSBsZWdhY3ktdHJ1bmsKKzM3ODIzIGNhZGQzZThkMzQ5ZjA5ZDNlYmI5MjFlNGIyYTBhNzU0YjYwOTIyYzQgbGVnYWN5LXRydW5rCiszNzgyNCA5NThkYzhiN2E4MjZhMTgwNWY5NWFmNWZmMGVmM2NjMjgwMmI1NzQxIGxlZ2FjeS10cnVuaworMzc4MjUgNDM3NTAwNmU1ZjA3OWY3MmI2YzljOTViMzhmNDRjMzIyMGQ0NzM0YyBsZWdhY3ktdHJ1bmsKKzM3ODI2IGZiZjMwNjQ2Y2QxMzY0MWZiNzk5YjU4ZjMzZTQ3ZGJiNTQ2NmRiY2UgbGVnYWN5LXRydW5rCiszNzgyNyBhOTFlOTJiOTgyYWNhZmYwMzhiN2Q1ODAxMDljY2U2NzJkZjdhMTQ2IGxlZ2FjeS10cnVuaworMzc4MjggODkzZDQ2NTc2NzM3YWJiYThjY2MzY2Q1NjRiMGMzNGQwNmFlNmU3ZiBsZWdhY3ktdHJ1bmsKKzM3ODI5IDA2ZWU1M2E3NmYwMTczYWMwNDBjYjk0MjVhMjNhMTBjNTUwZTdiMzkgbGVnYWN5LXRydW5rCiszNzgzMCA5YmQ5ODNjZmJlODFiYzg2NWI0ZjlkYTk5NDM3NDJjNmIyNTAzMTNlIGxlZ2FjeS10cnVuaworMzc4MzEgMDczOWYzNmFkNTQ0MTlhNDEzMTRlZDBkYmY1NGU3Yzg5NzU4OWUyYyBsZWdhY3ktdHJ1bmsKKzM3ODMyIGZlZmY0ZTRmMzQ1Y2E1ZTMzNmY3YjAwZWM4MDkxN2Q0NTk0N2UyN2QgbGVnYWN5LXRydW5rCiszNzgzMyAwMjM4MDEzMzIzOTU1ZWI0YmEyYTQxMjUwNzlmN2Y0MzllNmRhM2I3IGxlZ2FjeS10cnVuaworMzc4MzQgMjNiMTAzYWJiOGY3ZmE3YTc5NmZlMzg5NTAxODYxN2MxZjA4OGZiOSByZWxlYXNlMjMtbWFpbnQKKzM3ODM1IDUzYjNmNTNkN2EwZDMyYTlmNTUwYjk5M2IyYjcyZmEwNDA2ZTVkZGMgbGVnYWN5LXRydW5rCiszNzgzNiA0Y2I3YjkyMzY4MWU0N2FlYjZlM2U1MWJmNDQ5ZGZlOWVkYjU3MDQ0IGxlZ2FjeS10cnVuaworMzc4MzcgZDI1NjE1ZWY1ZDhmNjA1OTUxNjAzYTZkNWNmZmIyMDk4OTNiMWI2MCBsZWdhY3ktdHJ1bmsKKzM3ODM4IDIyMTNjZGIzY2FlNzkzY2IwZGQ2ZWFkMjhmMjRkOThiYWM4MGYxN2MgbGVnYWN5LXRydW5rCiszNzgzOSA0Mzk0NDYzNTEwZmIyZGI5ZTA5ZDhkNGI3ZDY4NGQ0NTBlMGVmNTY0IGxlZ2FjeS10cnVuaworMzc4NDAgZGNkYTA2Y2IwNzhhM2VmOTY5ODdiZTI0YTU4ODRiODA0NTBjZGNlZiBsZWdhY3ktdHJ1bmsKKzM3ODQxIDMzYTg0NmI3NzdhODkxYTkzYmMzZWIzY2VhZjdmMmQwOTYzNzVhNjIgbGVnYWN5LXRydW5rCiszNzg0MiBmOTI2MTZmOGMzM2M3NDUxMTE5ODI4OGMwNWUxYTI5MjJkNmQ4YmU2IGxlZ2FjeS10cnVuaworMzc4NDMgNDAwNWY3OWQyODFhZDBkZjI5ZmQ4MzI5OGJkNDE0OTcyZWVkMWQyMyBsZWdhY3ktdHJ1bmsKKzM3ODQ0IGVjMjk5NTViODU0MzViZjgxNjAyODMxZDk3ZDhhYjBhYjQ4YWVkZjggbGVnYWN5LXRydW5rCiszNzg0NSA0NjhhMTBlYmJjZDUwMWEwODRmZmZmNGMzZDI4YjBiZjJjYTI3OTcxIGxlZ2FjeS10cnVuaworMzc4NDYgNjUyNWUwMjhhZmIzYzljNzI2ZTg0OTg0OWUwZmE2MTJmNDkwMDljMyBsZWdhY3ktdHJ1bmsKKzM3ODQ3IDcwMTBhOTliNWU2MTI0MTc2ZWNlNDIxNjg4YWVkOTA4NTk1YmJmNzMgbGVnYWN5LXRydW5rCiszNzg0OCAzMmVkMjg2MWM5N2YxOGRkYzc3YzU4ZmE1Y2E2YmIxN2E4NjY2NmIxIGxlZ2FjeS10cnVuaworMzc4NDkgNDliNmU5NjZlNTdmMDg4NDZlMjdmNjJmMjIyM2E2ZDdlMjI1ZDA5NiBsZWdhY3ktdHJ1bmsKKzM3ODUwIDQ4OTY1NmRiZGY1YTdmMzExM2Y4Y2ZmMDJkNTJkYjgyZTI2ZTdlNjYgbGVnYWN5LXRydW5rCiszNzg1MSBhMDUwODVhNjNkZWM4MzY0YjE3NGU5YjI4M2MxZTJmOWQ4YTk0OTM0IGxlZ2FjeS10cnVuaworMzc4NTIgNGYyYmJkNDcxYTIxYzU4MTM4ZDBjYTYxYTEyNGJlMjRjN2MwYjU1OCBsZWdhY3ktdHJ1bmsKKzM3ODUzIDcxMzcyNDQ5NTgyZDMyNjg1NjQ3M2FkNjA3NmVjNTZmMWIyYzY0YTggbGVnYWN5LXRydW5rCiszNzg1NCBmMTNjZTBiYjYwNmMwMmQ5NDQ4NTI0MzMyOTMyYTNhZTBhZjJiMTc0IGxlZ2FjeS10cnVuaworMzc4NTUgYThkZTIxOTVlZmQ2NmJkZDg0MGZkNmMwMjRjNTY4ODBlOGUwM2IxZSBsZWdhY3ktdHJ1bmsKKzM3ODU2IDY3NzFlMTg0MGJiY2JmMDNjMTg3YjAyOTM4MDMyOGMxMTU5ZjlmYmEgbGVnYWN5LXRydW5rCiszNzg1NyBiNGFkYjEwMjExMDMwYWIyNTA4YzVjYTI5MGJlMTYzNmQxZmU1ODIyIGxlZ2FjeS10cnVuaworMzc4NTggYjg3MWI5NGYwN2I2ZDZmM2ZhYWM5NmMxNGVmNGJmNDVmODI1NWQ2ZCBsZWdhY3ktdHJ1bmsKKzM3ODU5IDM2NTYzOGRjZTVmMzQzNjAyOWYyOTExMGQwNDBjN2JlZGUxY2VmNWQgbGVnYWN5LXRydW5rCiszNzg2MCBlMDFhMTdiY2RmMjhlZTg3Y2NiZjk2YWQ2YzNiMmMxY2NiMmNhM2ExIGxlZ2FjeS10cnVuaworMzc4NjEgZjUzMTEzMDNhMzU3MDAyZDYxZjYxZmQwYzJmMGM5YTY5YjBhNGQ0ZCBsZWdhY3ktdHJ1bmsKKzM3ODYyIGI0OGNhOTZlYjQ0MDhkY2NkZmM1MDY5YWQ4YjY4ZjliYmE3OWNlYWYgbGVnYWN5LXRydW5rCiszNzg2MyA5YTEzMDlhOTBiNWRmNmQwZTRmZjA1MjRiNTNjZGE5NjgzNWE3OWVjIGxlZ2FjeS10cnVuaworMzc4NjQgYmFlMTkxOWY4NTQ4MWRiZjYwZjA5YmFkZjQ1NDRjZGY1ODE4OTBjZCBsZWdhY3ktdHJ1bmsKKzM3ODY1IGEwMGNkNjcwMzQxYmE3ZmVjZjg5ODM1ZDY5MTQ3NWFhMjgyMDc3ZGMgbGVnYWN5LXRydW5rCiszNzg2NiBlYTk1N2Q5YjM2OWNkOGRkYzM3MGZjZTMyNjhlMWI4OWNjNWNlZDY1IGxlZ2FjeS10cnVuaworMzc4NjcgMzFlNGRhMTY2NGI3ZWY2MDU2N2ExNTgwNDU4MWIwNDBlNTYyNmNjOCBsZWdhY3ktdHJ1bmsKKzM3ODY4IGQ1YmE0ZjMwNTBiNTg3MGUyOWVhNTdjMWI2YTJlMDlhNDNlZjNmNDggbGVnYWN5LXRydW5rCiszNzg2OSA3ODczOGE4OWIyMjMxMWRiNzEyNWYyMjdiMGZhY2RlMTBkMmYxOTYzIGxlZ2FjeS10cnVuaworMzc4NjkgZmY4MGQ4YmJlZjZlMTM0MjZjOGE4NWQ3ZjlkODM3YjhmOGY4OTgzNCBsZWdhY3ktdHJ1bmsKKzM3ODcxIDIwOTU1MDI1NmE3NDQxNjAxZmFiYjE3YmNhOTMyNmRhNDJkODE1M2MgbGVnYWN5LXRydW5rCiszNzg3MiBlZjdhMDJiMThlY2NhMzk5ODcwNmFhNDZhNzEyMDI3YTg5YWM5NTVjIGxlZ2FjeS10cnVuaworMzc4NzMgODIwNGE0ZDIwMTJjYjcyZGY0MmNhZmI0ZTA0YzgwOWU2Zjg4YTRkNCBsZWdhY3ktdHJ1bmsKKzM3ODc0IDcxOTMwZDdiM2I4YTI0ZjI0Nzc4OGNmMWIzNzZmNzI4MWIwYWRhMGIgbGVnYWN5LXRydW5rCiszNzg3NSA5NmY2MmM2Nzk4ZTgxYjExMTNmM2UzM2JmMGM5YjkyNTgzMDdjM2JkIGxlZ2FjeS10cnVuaworMzc4NzYgOWIwYzViZjQ3MDBjMDg0MzBlNTQ3NWMxZWM5ZGZmY2Q4YjNmNmZlNSBsZWdhY3ktdHJ1bmsKKzM3ODc3IDhkYWE1YTQ0ODQwM2E5ZmQ1OGU2MGM4ODY1OGM1ODA2MThlMDVjZGQgbGVnYWN5LXRydW5rCiszNzg3OCAyYjljMmVkNWE3NmJmZjdlM2FiMDMwYjQzNTlmZWZiOTFhZWQ1Y2MxIGxlZ2FjeS10cnVuaworMzc4NzkgMjY0ZTQ1YmFhY2Q1MzMxYzE4NDVhNWEyMjYzMzk5YTIwOGYwOTE0MyBsZWdhY3ktdHJ1bmsKKzM3ODgwIGU5NTk5ZDlkOTFjNmU3MDdjMjJiMWJjYjgwNDVmMmNiYjU0YzM2MWUgbGVnYWN5LXRydW5rCiszNzg4MSA2YmQ4MDIxZjc0MWNiODk4MWU2Y2MwMDQ5ODQ1NWRiMWNmMjM3NDE3IGxlZ2FjeS10cnVuaworMzc4ODIgYmRkMTRhYjZjNWNmMTViZmU3YzE5MGRiMWI1NzRlMzJiNzhkMGM2ZCBsZWdhY3ktdHJ1bmsKKzM3ODgzIGJlMzcwYWJiMDIwZjljOTc1YmRhNTZmYWI5NDI5ODE1N2YzYmM0ODggbGVnYWN5LXRydW5rCiszNzg4NCBjMTBhZGJhZDQ0ZmFiOThjMjdmMjIzYmIxYWNhM2NiMzNmMDhjMTZkIGxlZ2FjeS10cnVuaworMzc4ODUgMTU3NmU4NDVjNTdiZGFkZWM3N2Q0NTM4ZjNhMzY0NTlkMDc4NTIwMCBsZWdhY3ktdHJ1bmsKKzM3ODg2IGE4ZmY2ZWQ4NTZlODkzYjQ3ZjM0NzRkNDcyNTg5MmU5NjM4YjE1NzcgbGVnYWN5LXRydW5rCiszNzg4NyBjMTQ4M2YwZTgwMGQwMmU4ZWMwMTA5MDYwMDQ5YWJiNjkwOTk2ZjYxIGxlZ2FjeS10cnVuaworMzc4ODggN2Y5NWZlOThkODIxNmQyMTY4ZTg0YzNkYjhjN2I2Yzk4ZmQxOTE4MyBsZWdhY3ktdHJ1bmsKKzM3ODg5IDcxMzU4ZjY1NzViNmFmZTBlZmQxNTM0Yzc1N2U1MzBlYTI4OGUwZmUgbGVnYWN5LXRydW5rCiszNzg5MCA3ZTk5YjA2ODBhZGYxMTMyMTJkYjhjYzg3ZTI4ZWNiZTgxZTA1ODRkIGxlZ2FjeS10cnVuaworMzc4OTEgOGRhNTdjMjhiOTEwZjUxMzgyOTFiODg3NDM5N2VjYjA2YWVkNzY0YyBsZWdhY3ktdHJ1bmsKKzM3ODkyIDgxYTFmNzU0ZDMyY2QyMDhmNzM1MDFlYmFlNDMwZThkZGZhMDQ2MzQgbGVnYWN5LXRydW5rCiszNzg5MyBjODhkMTg0MTgwNTNiNTRiMzQ1MDMwZGNhZDJhZDZiZDBlM2Y0Mjg5IGxlZ2FjeS10cnVuaworMzc4OTQgNWJlMzFhMjA3ZDg2ZDdmNGVjMTViMWQ0N2M3NDg4MDRlOWM4MWI4NSBsZWdhY3ktdHJ1bmsKKzM3ODk1IDdhNWE1NmExNzM3NzU5MjZlOWQzYmUzNWU4NzViNTY2NGJiNTIxY2QgbGVnYWN5LXRydW5rCiszNzg5NiAxNjM0MDlhNjAxYmVmNDFjYmQ3ODkyM2IwNjNkYjNlMTRjOTdiNjljIGxlZ2FjeS10cnVuaworMzc4OTcgMmM4M2I2MjJhM2VlNjhjNWE5OWQyNmY5NGY5N2QyNmJmOTBiYzM1YiBsZWdhY3ktdHJ1bmsKKzM3ODk4IGM5Yzc3OTQwNjBiMGU2ZWRiOTMxN2QwMjhkYmE0MDA3NGQwYTFhOTggbGVnYWN5LXRydW5rCiszNzg5OSA3ZTk1NWU5ODdkNjljYTdkNzIzMGI1Mjk1MGYyYmIyYjlmY2VhZDA1IGxlZ2FjeS10cnVuaworMzc5MDAgZDMzYjNhMmIwOTRjYjgzYzhjOWQwOGRhNjZjNGQ3MmExMWJhNWM1YSBsZWdhY3ktdHJ1bmsKKzM3OTAxIGQwNzE2YWIwM2Q5ZGRjNDUwN2I4NzExNDczMzQyMjlmNmM2YjAzZjMgbGVnYWN5LXRydW5rCiszNzkwMiA2YTgwNmZkYTY2OGQ2YzVmNGFlMjM5MDg4ODkzYzhmNDgzMmRhYmE0IGxlZ2FjeS10cnVuaworMzc5MDMgMjgzMGU2Y2I0MTU3NjViMTUzZTYzYmVhN2YxM2Q2YWEzM2VjOGU1YiBsZWdhY3ktdHJ1bmsKKzM3OTA0IGZiZWE3MTQ4MDJiM2RhOTYyMGE1MTEwNmQwZWZiMzU2OTQwYWYzZjcgbGVnYWN5LXRydW5rCiszNzkwNSA3YTEyOTA0NDM4ZDZjYTc5NzEwNzFlNTJlYTVkMzRiZmQ2ZDg1ZThhIGxlZ2FjeS10cnVuaworMzc5MDUgZjMxZTE4ZDMxM2M3YTRmYzY2OTE0YjJkMjdlMTMwYTBmNzJjMGI2OSBsZWdhY3ktdHJ1bmsKKzM3OTA3IDcxNjMwN2Y3ZTYxN2M0MTg1MTNhZjBiOWNhMTFiZGFkYTc4MDk1YjEgbGVnYWN5LXRydW5rCiszNzkwOSA2M2FmYzJkMWIwZGEzNzIyZTMwNThmZmY2MjI5NmUwYTgwNDYwMTgyIGxlZ2FjeS10cnVuaworMzc5MTAgY2YzZjhiZWU3ZjdhYjEyYTkzYmU0NzI0M2E2NTJhM2U4MDVjMTFkNiByZWxlYXNlMjQtbWFpbnQKKzM3OTExIDJlY2RjODNmYTg2Y2QyYjkzYjExZTUwZTAzZDE4NzJiZGY4OTU3OGUgcmVsZWFzZTI0LW1haW50CiszNzkxMiAzODQzMmFkMTFjMmE0MjI2YWU2ZjMyOGY1Mzk1ZjBhYjNjNmU2ZmZjIGxlZ2FjeS10cnVuaworMzc5MTMgYWVkMWZlZDM3YWQ1ODY1NjczZmNhMDY5YzVjM2M4ZmFlMmY3NzllNSBsZWdhY3ktdHJ1bmsKKzM3OTE0IGZkMWJlNDk0YzMxYjYzZTYxMTAxNWQ1YWU0YjUxZDdjNDM0MWE5OTIgbGVnYWN5LXRydW5rCiszNzkxNSA4Y2VjYjhkYzQzYTM4MDdiY2YzYWU5NTY1NTliNDgzNDg0ZmY2ZDg3IHJlbGVhc2UyNC1tYWludAorMzc5MTYgNzlkMmFlMGE2MmVmZWI3NDBkNjRmZGYyMDRlYjZlMjUwNGVjN2Q1ZSBsZWdhY3ktdHJ1bmsKKzM3OTE3IGE2ZTI1MWRlNWU0MWJkZDgyZDg1NjdmNzUxNTYzZWI2OWQ2ZDRkNWIgcmVsZWFzZTI0LW1haW50CiszNzkxOCA3MDI2ZDAzODUwODExNzIwYmFjZDViNmFmMDI1Y2Q5M2Y2MzJjYjA4IGxlZ2FjeS10cnVuaworMzc5MTkgMWM0ZGJlNGEwNmJkMDU0OWMwYjQzNTljNDkxNTIyNTdkY2JhZDAxYyByZWxlYXNlMjQtbWFpbnQKKzM3OTIwIDIxN2Q3NDEwNDljMGQ2MjZmNDdhYTUzMjcxYWQ3ZmI3ZDU2NjY3OWYgbGVnYWN5LXRydW5rCiszNzkyMSBjODcyNjFjZTdhYzkzMjc1NGM2ZTllN2U3ZjNhNGJkNTE1NjZiNGU0IGxlZ2FjeS10cnVuaworMzc5MjIgOGVhZjgwOGZkOTgwYzEwN2VkNDQ3OGRmYmI5Y2Y5NTkwYTdlZWRjNiBsZWdhY3ktdHJ1bmsKKzM3OTIzIGU0MzUzMmI4NDhkNzVkODAzYWVlZDZlYjQ3ZDM0NmZhNzg3ODFjNzcgbGVnYWN5LXRydW5rCiszNzkyNCA3ZTY0ODJhYjk0NTVkYTE3Nzc1MzRlMjBjNDE5N2I1YmY2MDE1ZThhIGxlZ2FjeS10cnVuaworMzc5MjUgNmJmYjBhYjg4M2YyMGY3NmJjZjQzZTIwM2Q3ZjY2MGQ1NDliOTkxZSBsZWdhY3ktdHJ1bmsKKzM3OTI2IGRhOTY3ZmI3YTdmYjRmNDNhMTU4YTlkOTQ4M2E5YmE3Njk3OWE2MmIgbGVnYWN5LXRydW5rCiszNzkyNyAxNzJiNDdmZjJlNGJiMzgwYmVmN2FhZWViZTI0ZjI2ZGIxNGI4YTkwIHJlbGVhc2UyNC1tYWludAorMzc5MjggY2VjMzFlZGVhNDE0ZmVmNGU5MjA3ZWJhZmNlNTZhNjU3MWY0OGFkYiBsZWdhY3ktdHJ1bmsKKzM3OTI5IDRlMjU0ZjAyOGI3NmZjMWJhYzRjZDhjODBhY2JhZGQ3NDZkODk3NDcgcmVsZWFzZTIzLW1haW50CiszNzkzMCAzM2Y3NDhlNWQxNDIxYzgwMzU3MjE4MTg4Y2FlNWVmMmE4ZGFhMzJkIGxlZ2FjeS10cnVuaworMzc5MzEgOGM4MDIyYjgxZjAyMGE2ZWNiY2YxZTM5MDBkMDkzMDU0NTkwZjU3ZSBsZWdhY3ktdHJ1bmsKKzM3OTMyIGFiZTNlZTVmYzZjMzdkYTBjODZlM2MzODI2YmQyYjI5YzMxOGZmOTkgbGVnYWN5LXRydW5rCiszNzkzMyBmMThhNGQ5MzcxNDJhMDUyZTgwY2Q3NjVlNTUyNGVhMDExNDcyNWJkIGxlZ2FjeS10cnVuaworMzc5MzQgOGJmNzY1YjQ4MGI4MGY5YTBiZDBhZTA5MWI3OWI0NDQ5NTM5ZmMyNiBsZWdhY3ktdHJ1bmsKKzM3OTM1IDUwZTBjMzQ1ZDQ5YjNiYjdiZjA5NzI0MzA4ZmNjNDg2MWI0YWU4ZTkgbGVnYWN5LXRydW5rCiszNzkzNiA0YzgxMDZjMzU4Y2UwYjhkOGE2M2UwMjMyNDhlNGFhNTA2YjYzZjA1IGxlZ2FjeS10cnVuaworMzc5MzcgMTU3ZmFlNzY5NTM2ZTYzM2E2NGJmNjkxYzQxZWIxOTI4YWE1YjgwNyByZWxlYXNlMjQtbWFpbnQKKzM3OTM4IDYxMTU2MWNjZTc0MGZmYzhmODdmY2M5ZDJlYjBiOTE5M2U5NWJkZjEgbGVnYWN5LXRydW5rCiszNzkzOSBmYmY2ZTA0ZGVmNjkwMjRjMjQ0NDkxOTVhZTUzMTA5YjI3OWQ1YjkzIGxlZ2FjeS10cnVuaworMzc5NDAgNDNjMDBmMGU2MzA1NTU3N2U3MDg1MzQwNGQwNDQyZjRjYjkwZTFhNyBsZWdhY3ktdHJ1bmsKKzM3OTQxIGY3MzI4MDk2ODMyMjc5MDgxYjg4YTcwZWUzNjYwMjI0YzM2NDVlNmUgbGVnYWN5LXRydW5rCiszNzk0MiA0YjYwMWJkMzQ2YTRmNDNiMTM4YzNlOGJkOWZkYjg0MGI3NTk2ZTEzIHJlbGVhc2UyNC1tYWludAorMzc5NDMgYzRiMTNmYTE4YTEwM2RhMTdmODU4YjM2NTQ2ZmM4MjVjOGEwMDhiYyBsZWdhY3ktdHJ1bmsKKzM3OTQ0IDYwOWJjZGFlMTA4YTY1NzgzMWIyNTI5N2VlZjkwOTJmNGE0MjdlZWEgbGVnYWN5LXRydW5rCiszNzk0NSAyMzk5NjMyZmQ5ZTBlMjdmNzBhODhmOTRjOTk5ZWUyNzNiNjA1MjRhIHJlbGVhc2UyNC1tYWludAorMzc5NDYgZDJmMjZlYWFjZTJjMWYzMjAxMTVhMjNhMTYyNmYyNWRlY2YyMDFlYiBsZWdhY3ktdHJ1bmsKKzM3OTQ3IGQ2MjAzZmJkYTI1MTdkMzg5NDI2OGZiN2RiOWJjMWY3MjYyZDNlNzggbGVnYWN5LXRydW5rCiszNzk0OCA2ZTBkYjA3ZmJmOTE4NWQ5MWMwZTg0NzIxMzFjYzIzMDkyNTM1MmU0IHJlbGVhc2UyNC1tYWludAorMzc5NDkgY2M5Y2U2ODM3ZWE5YjczZWM0ODAzNmJjMWVlZDcxY2M1MzQ5NTM1YiBsZWdhY3ktdHJ1bmsKKzM3OTUwIDk1ZDI3NmQ0ZjllNDY1Nzk2YWVkYWI0ZGMxZDE1MDUyMWFkODdmNDMgbGVnYWN5LXRydW5rCiszNzk1MSA2MjRlOTYzNWMzYWQxMWQ3MjljNTI4NjBhZGQzMWUyMzBjNjc5YjJjIGxlZ2FjeS10cnVuaworMzc5NTIgZjAyY2QwZDRhMmEwNWE3Yzk0NjljODZjMjY0ODc4MjkwYmQxZDlmNCBsZWdhY3ktdHJ1bmsKKzM3OTUzIGVkYzIwZDUzOWExODE1ZDU4Mzk0ZDgzZmU4NWFjYTE4Yzc2NTBkYTcgbGVnYWN5LXRydW5rCiszNzk1NCAxNzVmNjEyNTU0OWNhZDcxYjhhYjUyYTE0ZDA2NWRjMTNmYzRhZWZiIGxlZ2FjeS10cnVuaworMzc5NTUgMGVjMzQ0NjYzZjZhOWVjZjg4YjMyYjk3Y2RkMTA2NmY1NGU2ODQ2OCBsZWdhY3ktdHJ1bmsKKzM3OTU2IDhjZDMxNzZmZDZmMDMwYjYwNDIxYWQwNDhlZmFkNWMxMzIyMjQxZTcgbGVnYWN5LXRydW5rCiszNzk1NyA4ZjkyOTUxMzk5M2M5MWRmYzY0NmFlZTA3NzJlMGU3M2M4ZWZjYThkIGxlZ2FjeS10cnVuaworMzc5NTggMjRmMGRhOTIwMDEwNDRlODI0OWIzNDk3YjBjMDdkODY0ZGMxZGMxMiBsZWdhY3ktdHJ1bmsKKzM3OTU5IDUxNzJjMjhjMGIzYzhjOTgyNTA3ZDYxMjEyZTJhNTIxOTkwMjk5NzIgcmVsZWFzZTI0LW1haW50CiszNzk2MCBjZjU1NWVjNjk4ZWJjZTRmZDZkY2NjNjNiYmFhNTE1ODIzNzBlN2M0IGxlZ2FjeS10cnVuaworMzc5NjEgNTNjNmE5NTlmOWNmZDVlZDhmMDNhZGJjNTYyMmQyODIzNWY1YTFmMiBsZWdhY3ktdHJ1bmsKKzM3OTYyIDBkZmU2MDhlZWNmYWMyMGNmNjk5YmI4NGFkNjk3Yjc5ZDQzYjI2ZTkgcmVsZWFzZTI0LW1haW50CiszNzk2MyBiOTY2YWFkZTU0OGNmOGIxM2E3MGU0NjA1ZTE5MDM3OGU4NWE3YjdlIGxlZ2FjeS10cnVuaworMzc5NjQgOGZkNzY2YmI3NmM5ZTQ4ZTEwMmQ1NDRkMWQyODllYTBlMjlhOWRhMCBsZWdhY3ktdHJ1bmsKKzM3OTY1IGY0MDlkNGM2ZGM2MDQxZWI1NGY0YWNiMzNjOWYxNjA1ZjNkNjZjOGMgbGVnYWN5LXRydW5rCiszNzk2NiBjZGRkMDE2YWUwNmFjZmU5Y2MzOTRjMzAzODg4NDU0NzY4MjRhY2Q3IGxlZ2FjeS10cnVuaworMzc5NjcgMGY1NmE2NjU1ZWJmYTI4MzAxYTZmMjAxM2Y1YzA0ZmY2MjY2ZTMwMiBsZWdhY3ktdHJ1bmsKKzM3OTY4IGVmNmQxZTVlYjRkMzI5ZTNmOTJjZDZmMWZkYjUyOGYxZTA2MDUyYjMgbGVnYWN5LXRydW5rCiszNzk2OSAyNTU3MWVhNWVjYTYyZjA4NWI4YTAxNzcyNWYwNGQwMWFjMDg0ODlmIHJlbGVhc2UyNC1tYWludAorMzc5NzAgNjk4OTA5MmNkOTZkNWNkOTMzMTQ5MDY1YjNkNWE0ZTExN2ZkZDU1ZSByZWxlYXNlMjQtbWFpbnQKKzM3OTcxIDQyMWE1ZGY1MDhiODc3MDNmMjdlYThlYzZiODhmM2Y0OWVjODRlMTcgcmVsZWFzZTIzLW1haW50CiszNzk3MiAxZDFkNjM3N2FjYjEyM2QxOGM4MmMxNjlhNzMzNzcwODVhY2UzMzM4IGxlZ2FjeS10cnVuaworMzc5NzMgOTU3NDI5YzQ2YmJmOGQ3NTBlNzZhOGM5MGY3OGFlMDU2YjFhMmI4MyBsZWdhY3ktdHJ1bmsKKzM3OTc0IDA1ZjhhNGZlYzM1NjI5NDZmYWZmZTU1M2RhNTk2MzVhNjVlODc1NDggcmVsZWFzZTI0LW1haW50CiszNzk3NSA3M2IwOWMyYjc4OGI4YTIyMTJkNGUyNjVmZWU4YWI5OWZmOTU1ZmJiIGxlZ2FjeS10cnVuaworMzc5NzYgMWQwNDkzNmE2NDU2YTA0YTlmZjEwYzI1OTU1YTljODBhZWU0YTNhMiBsZWdhY3ktdHJ1bmsKKzM3OTc3IDljMWViMzNmZTExMGJjY2QzZDllNDk0MTExNjg2ZjJiMjY5OWVhZTkgbGVnYWN5LXRydW5rCiszNzk3OCA5NjcyMWEwM2FlMzAwMjRkNmVmMWJiODE1ZTEyZGUyNzcxZmFjYWZjIHJlbGVhc2UyNC1tYWludAorMzc5NzkgYWI4YjBiNzMxNzE3YTU4MDMwY2I4MWE5MzlhNTgzZWNkZjc4YmY2ZiByZWxlYXNlMjMtbWFpbnQKKzM3OTgwIGYwZmM2YmVmYjA2MDdhMzFhNzhhMjZhOTU0MzZkZTM1ODNlMzIzNTIgbGVnYWN5LXRydW5rCiszNzk4MSBjY2M1MGUwYjQ2NmQ0ZWNkOGQyMDBjNGFlMGMxMDY0MTJkOThkODFhIHJlbGVhc2UyNC1tYWludAorMzc5ODIgNDk3OWE0NDM0NTQzNDA5NmYwOTBlZjRlMmFlYWM4MDM5OTg2ODgzNSBsZWdhY3ktdHJ1bmsKKzM3OTgzIDYwZDQ4MmU4Zjg0NTAxN2MwYWQ1NWE5N2NkODE3NTM2MWQ0MDBhM2UgbGVnYWN5LXRydW5rCiszNzk4NCAxNTMxYjI1ZWJkY2QzYmYzNjA3NmQ0ZjY2NTE1N2I3YTJmNzg3OGJmIHJlbGVhc2UyNC1tYWludAorMzc5ODUgZTQ2Zjk4ZTczZTUyNzJhYzA4MTZmZmI3NDc1YjkzY2E4MDBlNWUxYSBsZWdhY3ktdHJ1bmsKKzM3OTg2IGZlZDVhNzM0NDY1ZDM2NGY3NzUwNWU3YThlMDZmOTU3OThlZjdmOWMgcmVsZWFzZTIzLW1haW50CiszNzk4NyA0ZThmYjEyZjgzNzg3MjJhYmEwNjg5YWFkNmNmOGZkNjZjMWYxOTMxIGxlZ2FjeS10cnVuaworMzc5ODggNGUzOGVjZDE5MTJlNGE2NTYwYTMyYTQzYmVhMTkzZmI5OTg0NzgzZiBsZWdhY3ktdHJ1bmsKKzM3OTg5IDFhOTM4ZjQ1NjA1Mzg1MTEwMmM3ODNhOWNkOTVkYjVmYjJiZGM4ZmEgbGVnYWN5LXRydW5rCiszNzk5MCA3OTA2NmVhMzhjNTAzMTNkMjFkYjQ2MDY1OGYzNTA2ZWQ5YTYyODk0IGxlZ2FjeS10cnVuaworMzc5OTEgNGRjZDc4ZjNiNWQxYmExNmI5ZTMxZGQwOTA5MTc0MjhhNjlmOTY1MSBsZWdhY3ktdHJ1bmsKKzM3OTkyIDcxMGIwYjBlMDdlZWQ3MmEyNDA3NzQzMTQ2MjUzNTgwNGRjMWRlYTEgbGVnYWN5LXRydW5rCiszNzk5MyAwMTViODkyYzk4ZWUyNDY2YThiNDNkYzJhZDc4MjIwMjgwMjJhMzU0IGxlZ2FjeS10cnVuaworMzc5OTQgY2U0YmZiZDlhMTZjZDU4OGEwYjdmZThkZWIzNDE3MDRhYWE1MzA3NSBsZWdhY3ktdHJ1bmsKKzM3OTk1IDU5MTJiNDE4MTU4NDYxOWU3YzVjN2E5ZGFmNWEwODZlNzgwNGQwNjIgbGVnYWN5LXRydW5rCiszNzk5NiBhODU3YzI1YTM3Yjk2OGY1ZmExYjU2NjY1ZjVlODdjZDZiY2M5NWI5IGxlZ2FjeS10cnVuaworMzc5OTcgMGE2ZGQzZjJhYmM3ZDM4YzlmYTczMDM1NzRlMzg2YmEwMDBjNmIyOSByZWxlYXNlMjQtbWFpbnQKKzM3OTk4IGFmZTkwZTllNGI0ODRkODc5YWJmMjM3NDM3YjFhODQ4YTRmYWVkNzggcmVsZWFzZTI0LW1haW50CiszNzk5OSA0OTI2NTM4NTc3ODJmZTYzYWNhYmZmN2IxZjM2Yzc3N2FhNzdlYzIyIGxlZ2FjeS10cnVuaworMzgwMDAgMjFhYmVjZWFhYmFkNmQ2MWI5Y2E1YTA4OTM4NGIwYjk3ODkwZGIwZCBsZWdhY3ktdHJ1bmsKKzM4MDAxIGYwNWRkMTgxNmMxZjdjZGY1YTQ2OGVkMTgxMzA4ZDM5MTA1MDRiYmUgbGVnYWN5LXRydW5rCiszODAwMiBkMGEwOWM3OTc0MDk2NGUyMGYxOTcyMmVmNjgzNjY3Y2M2N2E3N2MzIHJlbGVhc2UyNC1tYWludAorMzgwMDMgZGI4ZjY5OWZmNzgyNWY3ZjE3ZjVkZDZmZGE3MWNiMDA2MjJhZDM3ZSBsZWdhY3ktdHJ1bmsKKzM4MDA0IGIxMzJiYTkyNTlhYjE0ZjVhNGVlN2U5MzU1NDY5NzVjMDA3ZDcxNTUgcmVsZWFzZTI0LW1haW50CiszODAwNSA3MWQ3MTBlMzM2ZGZjYWI5OTU2NTI2MmI1MjJmYzcwNDNiMzExNmE4IHJlbGVhc2UyMy1tYWludAorMzgwMDYgYmVkYjM0MGYxMmY5NzBhMDI4MDM0ZDIxZjg2OTY0ZDJkODFmNTMzMCBsZWdhY3ktdHJ1bmsKKzM4MDA3IDc1MmZhODZmMDZkMjVjMzAzNThmZDQ0MmY5MGYyOTJlMmZhYjVjMTEgbGVnYWN5LXRydW5rCiszODAwOCBjMmViYTA0ZTMwNDE1MTA4M2JmYWU5ZDM4NDg0OWRkNGY0ZTZjNTdjIHJlbGVhc2UyNC1tYWludAorMzgwMDkgNzVmM2E1MWE0ZTMzZGI2NWZkOTNjZjU0MmVlZjZkN2E4NzJhM2RjZiByZWxlYXNlMjQtbWFpbnQKKzM4MDEwIDE2ODAzYjAzOTY0ZTRkNTJhNTY2MGRjYjZlYTk1MGY3OTk4NjI3NzcgcmVsZWFzZTIzLW1haW50CiszODAxMSA2NTc0YzUxNWUwMzU2NmJhOGI2Mzc5M2EzOTU2MWVlY2JkMTI2Y2Q0IHJlbGVhc2UyMy1tYWludAorMzgwMTIgYmU0NTBhMzM1ZTk2OTZlM2RiMWRmZmE2OTBkMzczNjkyY2UzM2VmMSBsZWdhY3ktdHJ1bmsKKzM4MDEzIGE2NTliMGNlY2I5MmY3ZGUzNjgxODRhNzYwYTA3OGE5ZGI4MmE5ODIgbGVnYWN5LXRydW5rCiszODAxNCBlNjkyZTc3Y2FkNWQ1YTQzZDVjZTc5YjkxYmZkNTg1MWY4ZTI4YmExIHJlbGVhc2UyNC1tYWludAorMzgwMTUgZGU0NzAxZmMxNzZmOWU0MDA4ZjUwMzZmNDJmMTRkYjEyZGU2MmM2NSBsZWdhY3ktdHJ1bmsKKzM4MDE2IGJiZGFhY2M0NGY2ZjRhMGIzZjljZTgzYTM1ZmRmZTE2YmFiYTg4NTkgbGVnYWN5LXRydW5rCiszODAxNyBhODY4NjZiYWMzNjZiOGQ4YWNkNDU5Y2E4NWUwYzQwOWZkZjNjM2FhIHJlbGVhc2UyNC1tYWludAorMzgwMTggNTFiMGQxOGRhNDQ3YjczNTMxMzE3N2FkZmNjMzIwZGQyMWM1NTNkZiBsZWdhY3ktdHJ1bmsKKzM4MDE5IGMyOTRiMTEzMjNkMTdhNDdkMjMxZjY4ZjUxYzhjYThlMjM5NTRkODAgbGVnYWN5LXRydW5rCiszODAyMCAyNTg1NjBhZGM0M2IzMWI1ZWY4MGU1MjllMWUxYWE0MzdmZjEwZTQ4IGxlZ2FjeS10cnVuaworMzgwMjEgZjFlZGI0N2NlNGZhYjQ2YjlkOGVjMDQxODZjNzMxYWRkYmZmMzQ2MCBsZWdhY3ktdHJ1bmsKKzM4MDIyIDM2MjZkYjQzMzEwNGUwNzFkMzM5MWVmNGZhNDQyMWQwMDNmZGRlNTAgbGVnYWN5LXRydW5rCiszODAyMyAwZjAwNzI3YTI3YjMwYmU5OTIwNzFlNWJkYmFhMjFkZjA2MDMwMGYzIGxlZ2FjeS10cnVuaworMzgwMjQgNjk2MTFjN2NkMjNiZGY0N2M0MDY2NTAwZWFmMWM0ZmI4YWQ3MTVmYyByZWxlYXNlMjQtbWFpbnQKKzM4MDI1IGNhMmNhMWFlYjA4MDUzYjY5N2YyY2RkZjdmODQ4OTY5MmFhNDk1YWYgcmVsZWFzZTI0LW1haW50CiszODAyNiA4YjExNDRiYTczNGVmYWUxZmZiYzU0MGZjYWNkZWI3ZTY1MGY4MmVmIHJlbGVhc2UyNC1tYWludAorMzgwMjcgY2I1NGYxMTUzYjkzNTRlOTgyZWU5YmY0MmEwYjA2OTNlOTY0MmFhMSBsZWdhY3ktdHJ1bmsKKzM4MDI4IDVlYTAyNWM0MjFkN2JiODc3N2Q1MzI2MTAxZDk2N2QyMTMwMDNiNmQgbGVnYWN5LXRydW5rCiszODAyOSBjMjBmNWIzOGZhMjA5NjRhZDcyZGY1Y2JlMThjZWFjNjA4MzRmNmI3IHJlbGVhc2UyNC1tYWludAorMzgwMzAgZTUzNjkzYTAyY2YwNTVkMGRmOTI2MjZmYTZlYzg5Mjc2NGEyNDc2YyBsZWdhY3ktdHJ1bmsKKzM4MDMxIGZkZWNiYTI2ZmM4N2RiZmVkOWVmNDUyMjQzMjcxZjQ2YmQ1MzMxMjUgcmVsZWFzZTI0LW1haW50CiszODAzMiBiM2FmYzAxYzA1YTA1YTU2YTNiNDYwZGFiZWNhMDk0YjgyZGE2ZmM1IGxlZ2FjeS10cnVuaworMzgwMzMgZGI5YjY0OTM5ZDQ1YzcyOGVkYzQ0ZDlhY2JjNzBiZjMwMzQwNzVkZSByZWxlYXNlMjQtbWFpbnQKKzM4MDM0IDgwZjAxZmRiZWRlYmM0OThiMjk3YjIxOWRmMzBlNzhjNDJiZTE4YzUgbGVnYWN5LXRydW5rCiszODAzNiA2YzAyZmY5MDJmODIwZDYyZDg1MzRiNTMwYjBjMWFmMDcyN2NhOGEzIHJlbGVhc2UyNC1tYWludAorMzgwMzcgMTMwMjFkMzUxMzU4NjNkNWNmMTY3ZGNjNzhkY2Q1ZTkyMzZiNzEwYyBsZWdhY3ktdHJ1bmsKKzM4MDM4IDIxNDRhMzUyYWEzN2ZjMGIxY2E3NzEzMDFiNTZmZjFhMmMyOTliNTkgbGVnYWN5LXRydW5rCiszODAzOSAzMGI5N2MxYmIxMmRkZjMyZjllYWI0M2Q2ZjdhOWI5ZjA2MDRmMzljIGxlZ2FjeS10cnVuaworMzgwNDAgOWMzYTY0YzI4MWUxYjM1YTAxZmEzZjBhYzgyNWMzMzc5NDE4ZDk1MiBsZWdhY3ktdHJ1bmsKKzM4MDQxIDA1YmM4YWNhZjBiYjRjNmJjMjFlOTgyYzMxZDJiMDYyYWI2ZWQ5NzUgbGVnYWN5LXRydW5rCiszODA0MiBlODliMWEyNDBmZjdlZDE1MmI1N2E1ODI5MGY0Zjc3NWRkMzJiNjg1IHJlbGVhc2UyNC1tYWludAorMzgwNDMgYzEzOWE0OTk3ZDlmMTRjNDM4OGYxYjMwYzM2ZjFhOTA3YWQ1NzQ4YyByZWxlYXNlMjQtbWFpbnQKKzM4MDQ0IDhmZGFhOTdhOGFjMzQzNWVlZWE2YzRkZWFhMDdiMjQwODY0MGJmYTUgcmVsZWFzZTIzLW1haW50CiszODA0NSAxMWRiMjhlOTIwOWZlZDNlMzE1MDFlMTk0YTRmYTNhNjBhYzBiZjVkIHJlbGVhc2UyNC1tYWludAorMzgwNDYgMGVmY2MxNmY1YTBkMTY1OGFlOGM1ODZmZmFmMjMzZmUyZThhNjRmZSBsZWdhY3ktdHJ1bmsKKzM4MDQ3IDQ3MTRhZmY0YmY3NTI4N2ZmMzFhYWY0Mzk4OTA2NTQwYjYxNDQ4NGQgbGVnYWN5LXRydW5rCiszODA0OCA5ZTgxOTVlMjFkYTY5ZWIyYzIzZTgwYzBjZjY0OTZhNThiYTNhZDIzIGxlZ2FjeS10cnVuaworMzgwNDkgMzZjZjk0ZjU3NDE1MWY0YmRiMzViYjEzNmY5NjUwZGE0ZmIyYjkyMyByZWxlYXNlMjQtbWFpbnQKKzM4MDUwIDZmNGE2ZTlhZDZmMzNhYmJmYTJhMzU5OGExNmZiYTVjMTMwNzY4Y2UgcmVsZWFzZTI0LW1haW50CiszODA1MSA1MjFiZWM2MGViMzAyZmNiYzM1MjAwNTA5MDY0ZjA1ZWYwMmY1N2E4IGxlZ2FjeS10cnVuaworMzgwNTIgMDQ3MGQ3NTQxN2ZmMTU1YTc0MzA0OGU3ZjIxOTNjNDdjYTA3YjM1NCBsZWdhY3ktdHJ1bmsKKzM4MDUzIGQwNDcwMWU1OTg3Mjg0Nzk3N2VkMWM2YTc4ZTM5YTc0NTRiODk5YTAgcmVsZWFzZTI0LW1haW50CiszODA1NCA0NGViZjk4YTU4NjgyMDNkMzZiNGVmNTc0Mjc4MzQwNWQ4MmY4YWU2IHJlbGVhc2UyMy1tYWludAorMzgwNTUgYTRiZDVkMjFjOGIyNmNiMmFmMWIxMzI1ZjA1OWM0ZTJjM2U4MzNhNCBsZWdhY3ktdHJ1bmsKKzM4MDU2IGNkNGRkNmRkOTcyMWJkYTcwZTJiMDE3ODAxOTQyODdlYmRmMTM5NmUgcmVsZWFzZTI0LW1haW50CiszODA1NyA5OGQ3OWI0NjllNzRkMzFmZDcyZjgwNmU5MmU1NzgxOTgzMjkzOGE4IGxlZ2FjeS10cnVuaworMzgwNTggMTI4NWNhMTM0NWQ1YzMxMzFkYjc0NzMxMTJkNzY4NTUwNjQxNDM3MCByZWxlYXNlMjQtbWFpbnQKKzM4MDU5IGEyMzQyODRmOWUwNjAyZjFjNWQ0ZGIwZWNlNWZmOTNlOWVkODdkZTYgbGVnYWN5LXRydW5rCiszODA2MCA0NmZhMGUyMGNiY2ZlNDA4NmY4NzZlZjczYjI1YWRmZDRhOTIwMDE0IHJlbGVhc2UyNC1tYWludAorMzgwNjEgMTk5MGY3ZWMwZDlhZDBiMGE3OTIxMzAyMTVkMmU1OTZjM2JjNDU5NCByZWxlYXNlMjQtbWFpbnQKKzM4MDYyIGRhYmQ0M2JmMGRkZGZlZWQ1ZmU4OWRmYzNlZjcwNTJlZWQ4YTI3N2EgcmVsZWFzZTIzLW1haW50CiszODA2MyBiZTk3NmRkZjBmZjcwNzIxY2U0MGEzNDE3NGViNjAwMWFkYmQ5ZTVlIHJlbGVhc2UyMy1tYWludAorMzgwNjQgZDQ3MDJlNjdlMTE5N2ZiMjkzYzkwMTg5MDdkNDRiNTczZTk4OTMyMyByZWxlYXNlMjMtbWFpbnQKKzM4MDY1IDdmYjY3YWU5MzEyOGUxOTUxNjU3OTVmNDIwZmQ5MWIyMGJjNTJmMmUgbGVnYWN5LXRydW5rCiszODA2NiBhMGM3ZGY1MmJhNDE1NzMxYTkyZDY2NDU2ZDg4MzNhOTI2YjNkMDBlIHJlbGVhc2UyNC1tYWludAorMzgwNjcgOWNiOGM2ODdmM2Q2N2ZmYTdiYjZjNThlOGQyMjM4YjFkM2QxMjhmMiBsZWdhY3ktdHJ1bmsKKzM4MDY4IDMwOGVmZDcyNjhjMjZjZWFhMWVlN2ZhOTZlYTk5NThiZDc3YWRlYjcgcmVsZWFzZTI0LW1haW50CiszODA2OSA3ZDVkNmJkYzRmOTc5ZDVhODVhODA2ODMxM2Q4MTBhZjYwMjE3YWNmIGxlZ2FjeS10cnVuaworMzgwNzAgZWEzNDAwMDZjMWYzMGI4NmUxMTgyN2Y2MGE5ODNkYzI1OWNiM2I1ZiByZWxlYXNlMjQtbWFpbnQKKzM4MDcxIDg2YTYwZDRmYTg3YTM1NmFjYjY3NDBkZTBmZTdiNTBjM2E2Y2FmMTIgbGVnYWN5LXRydW5rCiszODA3MiAxOTI4Njk5NGY3NGYzMmEzMTYwODFhZmVkZTU2NjVhNzNkOWUxMDdiIHJlbGVhc2UyNC1tYWludAorMzgwNzMgN2M0MTNkM2E0MGE1MmJhMGNlMmFjYTNhYjU3ZDk3NzA4ZWY2MDVlZiBsZWdhY3ktdHJ1bmsKKzM4MDc0IDAyZmNiNWViODRjYjZhMWZiYzZmZjY4NjE4ZTFlNTBkMzVmNjdjNTQgcmVsZWFzZTI0LW1haW50CiszODA3NSAwMzRjNjExYjJlODQ0ZTBjZTVhZWNjNmUwZTQ2NWFlNzE3M2JlNzRiIGxlZ2FjeS10cnVuaworMzgwNzYgOTg2NTRiZmE4MGVhNWRkYjI0MzM4OTM1MDc1MTNhNDk4NDI5MDdhOSByZWxlYXNlMjQtbWFpbnQKKzM4MDc3IDFlOGIwMzNmOTFkYzNiYWE5OWY5OGJmNjRiMmNiYzVmZWViNzM3MjkgbGVnYWN5LXRydW5rCiszODA3OCBhNmJhMjhkMWQ4MDZhYTgzMTQ4NTMyYjBkMWFiNWFjOWUyYTZjM2ZjIGxlZ2FjeS10cnVuaworMzgwNzkgYWJlMzE0NWRkZTRlN2NmNjg3ZjljMjE3ZjAyN2JmZGNhZDQ0YTdhMSByZWxlYXNlMjQtbWFpbnQKKzM4MDgwIGI2NjE5NDIzYzE5NjEwMTk1MjAxOGY4MzJiNWYzZDY2NzdhZjg5ZmIgbGVnYWN5LXRydW5rCiszODA4MSBjMWI0NDBlYWNiYjE4MGJmZDlkZDk0NGExYTgzNmU2NWNkNzJkM2IxIGxlZ2FjeS10cnVuaworMzgwODIgOTllM2RkYjNhNzRhYWQ3OWZjMWZjMzgyN2MwYmVlYTY5Mjk1NjFjYyByZWxlYXNlMjQtbWFpbnQKKzM4MDgzIDhkNjAwNzdlOTk1MTQ5MGE4ZTI4NGU1ODA5YmYwNmZmZDQ5MGYzNGYgcmVsZWFzZTI0LW1haW50CiszODA4NCA2NzE5MzY5MDgzYzFlYjkyMTllNDY4MmZkZWYzZGRiOTAxODkxMDVhIGxlZ2FjeS10cnVuaworMzgwODUgOWRjOTZhYzk0MzQyMzgyZGRjZmIyNDU0YjEwNjAxZmQwZDIxMjg5YiByZWxlYXNlMjQtbWFpbnQKKzM4MDg2IDJhYTk2ZWUzZmNiNWM5MGI3MmQyNTAwMjQxMjk0MzM4ZWYyZjZlYmIgbGVnYWN5LXRydW5rCiszODA4NyA0YTBjMWU1MTdlNmJiMGY1OGZkNzMzOWI4ZGM1NjYwZmUwZTAzOWQ0IHJlbGVhc2UyNC1tYWludAorMzgwODggMzkxMTcyNmFlY2I5MDAxZTcxOTVkN2M2NWY4NTUxMTlkYjBmMGNlZCByZWxlYXNlMjQtbWFpbnQKKzM4MDg5IDY0MmRiMWZiMzQ4MWIzM2RhZDA2OTc2NTc1NTBlODQ3OWQ1NDU5YzUgcmVsZWFzZTI0LW1haW50CiszODA5MCBiYmRjMWQ3MzEwZjQ5N2E3OGI1MzE2YjJlNDg4YmE0NmI1YjVjYTM0IGxlZ2FjeS10cnVuaworMzgwOTEgZWMxOTI1ZjA3ZWM5N2UwMmMzZDE3NmI4M2IzMWY3Yjc0NTE2NWZlYiBsZWdhY3ktdHJ1bmsKKzM4MDkyIGUyMDg4YWUwZDY3ZmQ2NjdmZmIzYjQyYTYzM2EwYmFmYTBlNTU2ODkgbGVnYWN5LXRydW5rCiszODA5MyA1N2IyM2U1NzVmZmM2MzBjMjljNDRmZjAyYTJjNDI4ZGNlZDVkODZjIHJlbGVhc2UyMy1tYWludAorMzgwOTQgOTViYmU5OTFmY2MzMzE5ZjhmOTk2NjRkMTYwNTkwNTRiMWNmMmRhNSByZWxlYXNlMjMtbWFpbnQKKzM4MDk1IGNmZGJmYTU0ZGM2YTcwMWNiNTkwMGUzM2Y3YzhjOTY4ZTE2YjhiZWMgcmVsZWFzZTIzLW1haW50CiszODA5NiBhN2ZmZGMwOWYwMDI2N2Q3NjQ4ZjRiY2NkYTYwYTc3ZGU5ZDM4NTQ0IHJlbGVhc2UyMy1tYWludAorMzgwOTcgNjk0NjcwZjY1MjUxZDVjZjgwZmQxMzNkZDc1MzE1YWE0YTk3MmVlMCByZWxlYXNlMjMtbWFpbnQKKzM4MDk4IDkzYjFiMGJlYmE1OWY5MDM2MjQ3YTY1NzYwYzFjMjE1ZTg2ZDBiNmEgcmVsZWFzZTI0LW1haW50CiszODA5OSBhYjFhMTdjNjMzYWViZTk3MDRhNDk5ZWNkOGY1ODdmYTJhMDVhNWUxIHJlbGVhc2UyNC1tYWludAorMzgxMDAgYTRkODY5ZWNlZjMzOGJlYjMyZWYyMjFjZGM0N2UxYWFlN2JhMTdiOSByZWxlYXNlMjQtbWFpbnQKKzM4MTAxIGMwY2M2NjAxZGRhZGEyZWE1MjBlNTFhZTVkMjIxZjZjMjI0NjQwY2IgcmVsZWFzZTI0LW1haW50CiszODEwMiA5MGNkMjRhMWVlMTI0OTYxMDI0Y2JlZjNlNjFlMTBjYTRlZWY4NTU2IHJlbGVhc2UyNC1tYWludAorMzgxMDMgYWVhMjIzN2IzODhmZjcyZmU5NjhmYzExM2VkNzM4ODRiNTMxYmFmMyBsZWdhY3ktdHJ1bmsKKzM4MTA0IDI5MjA2OTFmNjNmMDY4N2NiYzUwMGFjMzIwMjUzODUyZmYyYmEwZjggbGVnYWN5LXRydW5rCiszODEwNSA5MTQ1MzRmNmVmNjEyNmE0NjJmM2Y2Y2U1YTgxYTg3MWI3NWZhNTAzIGxlZ2FjeS10cnVuaworMzgxMDYgYTE1ZmEwNTlmOWYwMzAwN2QxNzM1NmU1NWY0MDBlODMyYTViNmMwOSByZWxlYXNlMjMtbWFpbnQKKzM4MTA3IGM5ZTVkMWQxZTg4N2NjMDNhYzVmZTg4MDljMTQ4OTgzMDMxNWYyZjUgcmVsZWFzZTI0LW1haW50CiszODEwOCBkZjBjMmYzYWNjN2M5NjFiMDk3MDQ5ZWI0YTgwODkzMWUwYjIzN2RkIHJlbGVhc2UyMy1tYWludAorMzgxMDkgYjA0NDczNWM5MjdiMTA0MjYxMjc4NjdhMTUxODAyODQwN2ViNGVhMCBsZWdhY3ktdHJ1bmsKKzM4MTEwIDQ2MzUzNTY4ZTQwZDk5ZDNjZWI1MzFmNzEyYjZmMjg4ZTVjNzVkMmUgbGVnYWN5LXRydW5rCiszODExMSA5OWViZWMyYmUwMzEyOTIxZjgzNmJiYzVhODczMjU5MTcyOTI4Njk0IGxlZ2FjeS10cnVuaworMzgxMTIgYWFiYTFjZTRiM2NhMDVmZDkyMGQ2Y2Q3MmY2MjRkOTVkY2RhZjk5NCByZWxlYXNlMjQtbWFpbnQKKzM4MTEzIDg2YzNhN2M2YjAwYTFhYjI4MDJiMjU1NTlhZDEyZDkyZGIxNTJmOGEgbGVnYWN5LXRydW5rCiszODExNCBmNTRlMTQwMDBkNmJkMGUyYWYxYTNjYzliNWYyYzE5Mzg1OWU0MzNkIGxlZ2FjeS10cnVuaworMzgxMTUgZTgyZDE4MzI1OGY5YzEwNjRhOGZlNWQzNjczMTFlZjczNDdkNWZmYSByZWxlYXNlMjQtbWFpbnQKKzM4MTE2IDU3OThhYTY1NGVjNjQwZDhkYTk5NTMxMzE2M2JjMDg0ZmI0YTc2MTcgcmVsZWFzZTIzLW1haW50CiszODExNyAyODg5MWRjMjU1ODBjYWFjODdiMGMwYzJhYjBmZjI5MzkyNjliODFiIGxlZ2FjeS10cnVuaworMzgxMTggNTg0MDIzZGFjNDA2OTE1YjU2ODcyZDFjODhhMzVhN2FlMjhiMTI0OSByZWxlYXNlMjQtbWFpbnQKKzM4MTE5IDRlYzAwNmNhMmI5MWJlYTdlNTJkMTgyNDVhM2QwMTViMTUzYWQ3ZTQgcmVsZWFzZTI0LW1haW50CiszODEyMCBlODExNTIxNTI0MzNmYjE4YWRkNGU5YWQwMjk3ZDcwYWQ4ODA3NzM3IGxlZ2FjeS10cnVuaworMzgxMjEgYzcwMjM5MGE4ZTEyMjJlOTc5MDA3ZTFjYTUzYTlkNjQ4NGM0ZTg5OSBsZWdhY3ktdHJ1bmsKKzM4MTIyIDBkOTE2M2RhNjFhM2JiMDAzNTQ5N2JkMDAwYWMzYzZkOTA1NWQ4YjQgbGVnYWN5LXRydW5rCiszODEyMyA2NDYxOTViNTkyMDU3N2Q0ZjViNjJlYzU4ZmVhYjJkZWRlOGEyNTQ0IGxlZ2FjeS10cnVuaworMzgxMjQgNzRhOTFlNDU1OWNhNWIyNTMyMDM1MzU1YjhkODBjYzY4NDM5NmY5ZCBsZWdhY3ktdHJ1bmsKKzM4MTI1IDMyMWJjMmQ0OWE1YTJlMTBmZWM0ZTQzZGMwZGJlODUwYzE4ODI5MjUgbGVnYWN5LXRydW5rCiszODEyNiA1ODZhNzZmOTZiMDlkZDRmMjRiYzM5ZTc4NzQwMzhkZmY2NGVkY2FmIGxlZ2FjeS10cnVuaworMzgxMjcgNTg5ODFmZTkwYmVmYTRlNzAwODQ3OGM5ZjJkOGQ2MjI0YjAyMDljOCByZWxlYXNlMjMtbWFpbnQKKzM4MTI4IDE5MTRjNGRiNGIyODYwYzk2NTYzZTUwYjhhOGI4ZGQ3MzQwZTMyMTcgbGVnYWN5LXRydW5rCiszODEyOSBiMmVjZGE0ZGQ3MGZkZjY4YzA1MGJlZDhhY2ZkOGIyMmQ5ZTg2ZWIzIHJlbGVhc2UyNC1tYWludAorMzgxMzAgYWYwMTMzNmZmMTlkYjMwNjgyOTZhOGE2ODMyYjYyOWJhZjZmYzA0NiByZWxlYXNlMjMtbWFpbnQKKzM4MTMxIDA0NDI3MTc0Y2Y2YWIxM2Y3ZWY5YmY4YTE3NTEyMjE0Yjc5M2FmM2MgcmVsZWFzZTIzLW1haW50CiszODEzMiAwNTVkZDdmOTBiMWVhOGI2ZWU2Y2Y4NTViZWI4YzVmZmQ1ZDBjY2VkIGxlZ2FjeS10cnVuaworMzgxMzMgYTlhMDMzNjgyOWJhMDQwM2VjN2MxM2ZiYThjMDVkMzJjNWY1NWQ2ZiBsZWdhY3ktdHJ1bmsKKzM4MTM0IDAwMDZiMmRkMzdjMjM2OTFkNjIxZWI0YjMwNTMzNGQ5ZjM2Nzg4YmEgcmVsZWFzZTIzLW1haW50CiszODEzNSAwMDU2MmRhYmZkNGYzN2I4MzA4N2M2NWI0NTM3OTMzYzRlNmJlMjhhIHJlbGVhc2UyNC1tYWludAorMzgxMzYgNGFjZjdhYmU1ODI1NzdlZTZlZWFkNzE4ZGM3OTY4NjJmZmQ0YjI4NCBsZWdhY3ktdHJ1bmsKKzM4MTM3IGExM2Q5NDRjYTc2Yzk3NjRlYzFlYjFkYjRlZWIxMDdjZDUyMzM0OWEgbGVnYWN5LXRydW5rCiszODEzOCAyMWRkNTI0YmUwMzZhY2E0ZmZiYWRiYjZjODVlOTU1NWU4ZGI5MjRlIHJlbGVhc2UyNC1tYWludAorMzgxMzkgNzJjZDkzZjQ2M2I1YWQxOWEwYjQ3MDk2MDgxYTlkYTU3ODU1NmZkMyBsZWdhY3ktdHJ1bmsKKzM4MTQwIDkzNzcyYjcxNmUzZjkxNzhjYzZkYzdjMDQzNmE2MTNiZTcxMDk4ZWYgcmVsZWFzZTI0LW1haW50CiszODE0MSBkOGVjNGFmYTFmZmIwYWYyZmMwOTE0OGI1OTc5NGQ3Yjk3ZGUwMjBhIHJlbGVhc2UyNC1tYWludAorMzgxNDIgZTljZWRlOTFkM2MzMmY2Y2QxYmVlNDcyOTliZmVlODk0ZDZhOTIwOSBsZWdhY3ktdHJ1bmsKKzM4MTQzIGFmZDliODJlNjhmMWY4ZGE1NDYxNWMzYmJmYmVjMTcxNjhmMGI4MjcgcmVsZWFzZTI0LW1haW50CiszODE0NCBiM2FmN2M2ZGIxYzYwZGRkNzE3MzViYjAzODY0NTIwMjFkYTVkY2VhIGxlZ2FjeS10cnVuaworMzgxNDUgYmE4YzNlYWE0M2E1OTcyNmJiNDE3MmQ5YWI1NGM1Yzk1ZjI0MTBjNSBsZWdhY3ktdHJ1bmsKKzM4MTQ2IGIyYzk5ODE5ODMwNDljNzgyMWVhZGFjZjQ1MzExMmJiNmZmZTdjZGIgcmVsZWFzZTI0LW1haW50CiszODE0NyBlYWIxNzRkMGVkMDMxYWQ1Y2Y1NDRkZjc1ZWVkNjNiNWVlOTUyYTljIHJlbGVhc2UyMy1tYWludAorMzgxNDggYThhNGFmZTE4YjYxMzRhMzAzNDM1N2VmNzMzMjJmOThlMzNjNDU0MCBsZWdhY3ktdHJ1bmsKKzM4MTQ5IGUyMjFkOTk1NDYyNjg5NWFlNTAwOGIzYjlkZjBjZWZhMDU3OTQ5OGQgcmVsZWFzZTI0LW1haW50CiszODE1MCBmNzVhYzg2YmNlZjQ0ZWY0ZjgwZjQ1NzY5OWVhZWM0YzllN2E0ODVmIHJlbGVhc2UyMy1tYWludAorMzgxNTEgNTdiZmViNTNmMmZhMzRiMjIzZmQ3ZTU1MDAzODE3MTQwNmNmNTZmOSBsZWdhY3ktdHJ1bmsKKzM4MTUyIDNlYzU0YzVmNzA4MTQ4Y2IyNjJkZDIxYzhhMzUxZGE1M2Q3NDI1YjIgcmVsZWFzZTI0LW1haW50CiszODE1MyA1ZGMyNzRlMTU4MjI3NjZiYmNiMTM2ZWU5YmQ2OTIyNDM1NGNiMGY0IGxlZ2FjeS10cnVuaworMzgxNTQgMTgxMGRmZDYxNWFlN2RmZDhhZjE3Zjk4ZDk1NzlkOGFlMTY5N2ZlNCByZWxlYXNlMjQtbWFpbnQKKzM4MTU1IDc2MjI5MDk2NTFjNTNkNzhiYzlmN2FlYzJhZmM2ODc2MTFlNzdkNmYgcmVsZWFzZTIzLW1haW50CiszODE1NiA1MzY4ZDJiN2Q2NmEwYTU3ZTlmYWFhYjE5YTdiNTY4M2Y0M2I0ZTBmIHJlbGVhc2UyNC1tYWludAorMzgxNTcgNGQzODNiOTk4YmI0OGY0NzY5NDIwYTFlNzc1NjFjMWRiM2E3NzQ3OSBsZWdhY3ktdHJ1bmsKKzM4MTU4IGNkNTE3NzAxZmQ5M2M5NDQ4YzU4MjM3MTQyN2FhODRmMDU3MTU4YTYgbGVnYWN5LXRydW5rCiszODE1OSAzZTlhNGQ1MzFlNTYzZGQ5NGQ4MzZhYjk0ODEzODNkMDQwNTY5YzRiIGxlZ2FjeS10cnVuaworMzgxNjAgNDA3MjVmMzA0ZTE4ZDczZDk0OGFlMWEwZWU5MDUwNGQ2YTNhMzQ0YyBsZWdhY3ktdHJ1bmsKKzM4MTYxIDY3ZjIxOTBlMWY2ZDliNjUwNTUxOTAxMmFhOTkwNDMyMDVhYTNkYjYgcmVsZWFzZTI0LW1haW50CiszODE2MyA1NmU2MTAzMjdiODE2YzViZTdiOWRmOTRkZDcxNmEwYWM1OWJlZjUwIGxlZ2FjeS10cnVuaworMzgxNjQgZGM5ZDBhOWVkZTg4NjRkM2JiNjc5MzZkYjRlNzE0YWQ5N2FiMGMxMCByZWxlYXNlMjQtbWFpbnQKKzM4MTY1IGRmMzgwZTE5NmM0YjVhYTM0NDVhMDY3MWQyMzI4M2VmOTUxOTZmNDYgbGVnYWN5LXRydW5rCiszODE2NiAxZDYyNWRhZWQ1OTQ0MjgyMzY5Yjg1ZWI4MGU1MTI5YTYzMmRhZjlhIHJlbGVhc2UyNC1tYWludAorMzgxNjcgMWY3Y2Y4NTIxYmI1ODg2YjVhMGY4MjQyM2I0ZGM0MGYyYzNhNDk3YSByZWxlYXNlMjQtbWFpbnQKKzM4MTY4IDk5OGZiMWUxYzhlOWE2ZDIzY2EyZTY2MzJiMzNlZTVjZDdjYjY5NDMgbGVnYWN5LXRydW5rCiszODE2OSBjYjMwY2ZjYjM5ZTc0NDU3MmE0Mjg3Y2ZiYjNlM2YwYTg0MmM2ZTk1IGxlZ2FjeS10cnVuaworMzgxNzAgOTkxMDQxZjc2NDQ3OGM5MDVhZWZiMzkzMGU3Mzk2Yjg0MzMyMDZiMCBsZWdhY3ktdHJ1bmsKKzM4MTcxIDBjMzI2MzI3ZTcyMjM5MWI2YzY0Y2MzNWM1YmY3MWU0N2NmYjBkZGYgbGVnYWN5LXRydW5rCiszODE3MiBmMWMzNWRhNjRkNTU0ZDNkNmE1YzA1NGE4MTQ0NDMxMmFmODE5ODg4IGxlZ2FjeS10cnVuaworMzgxNzMgZjAwYmMyNzNhZTcwZDFlOWRiYWUxY2M0ZDQ5ZDFhNDBkMzYwNjg1ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTc0IGU4YmY2MjA4M2FjNDQ0NmYzMjZmMTkzNDljZjFjMGZjNWNiNjRhMDIgcmVsZWFzZTIzLW1haW50CiszODE3NSA2MGE0YjA2NGEyNDgwYTcwOTdjNmQyZDI2YWFmNTc1MTU0MzZkMTRkIHJlbGVhc2UyMy1tYWludAorMzgxNzYgYmJjZDgxMjdiMzI2ODI5NDY1YmI0NGFiMGUzZGJjZTk4MjA3NTFlOSByZWxlYXNlMjMtbWFpbnQKKzM4MTc3IDYxMjdjMDg5YTA2YzllMjJiNWU0Y2RlNzkwMWEzY2Q3YTM0MDZkZDcgbGVnYWN5LXRydW5rCiszODE3OCA3OWFkZTJkZGQzMDY4ODFkMTQ0YTI1MTVkNzVjNjQ5NDY3YzU2NTRlIGxlZ2FjeS10cnVuaworMzgxNzkgNzI0MTdmYTIxYzdmY2Q3NWU5NWI3YTliNWY1MDU0NmUzNWU5ZWYwOCBsZWdhY3ktdHJ1bmsKKzM4MTgwIDMyMTYzYThjM2I2OWQzODcwYjVmZGY0NDNjZmMyYjY3Yzk4NDYxZmIgcmVsZWFzZTIzLW1haW50CiszODE4MSBlNThjZTA0MDY2Y2Q4MjJhMGNkZWE0YjMyZWU2MTVmNzQyYzdjODBkIHJlbGVhc2UyNC1tYWludAorMzgxODIgYTZjODFhZDFmNDRjYjc0MzBiY2ZhMDY0OWQ5MzAyYWU4NjI5NGZjMCByZWxlYXNlMjMtbWFpbnQKKzM4MTgzIGFkOGY5ZTc1ZjYxZDI0MjA4ZjU0ZWVmM2U4Mjc5ODVhNDY4YzQyNzYgbGVnYWN5LXRydW5rCiszODE4NCAyYmJjOGI0YjViOTM3NWMyMzRiODViYTM1MTBiODBlNWU1OGIxMTBhIHJlbGVhc2UyNC1tYWludAorMzgxODUgMDk3NDM3NjM0OTY4OWJiMjYxNjU4ZjIyY2JlYzU3Y2RkNjM4YTQyYSByZWxlYXNlMjMtbWFpbnQKKzM4MTg2IGYxYWU0MWU4YWJmMzg5MWU5NmE2NzZiZWM5NTg4ODRkYzI3YmRiMjggcmVsZWFzZTIzLW1haW50CiszODE4NyBiNjQ3ZWRkM2I5NmI4MWY1YzVjZDc3NGFhMWZkN2I4MjY3MmJmOGFiIHJlbGVhc2UyMy1tYWludAorMzgxODggNDFjYTdiNzY4YjRmZjRlZmU1ODRmN2U0NDg3NjliNzVhMWQ4OThjYiBsZWdhY3ktdHJ1bmsKKzM4MTg5IDNhOTUwZjFhZmM1NWZmMzc2Yjc4YmNjNWRlNmY3MWYxZWUzMTBhNDEgcmVsZWFzZTI0LW1haW50CiszODE5MCA5ZGQ4N2JhNjE3OTU1MDFhMDc5NDY3NTU1YjM5NGMxMzI0YzYyMTRmIHJlbGVhc2UyMy1tYWludAorMzgxOTEgZWU4MDhlMDhkZDZmYjg5OTU1YzA1NGRhNjY1NjE1ZTZhZWZjMjg0NCBsZWdhY3ktdHJ1bmsKKzM4MTkyIDA2NjQzZjA3MTMzNTA5MzA0OWJmYWEyOWVmMjQyNzQ4MTRkMmZhOTYgbGVnYWN5LXRydW5rCiszODE5MyA0ZTVmMDZjNGY5NTc5Y2JjN2JiZDU2ZjRjNDE1ZmM4OTI3MmM4OGI3IGxlZ2FjeS10cnVuaworMzgxOTQgZmZlNzU0MmY4ZjFmN2E3ODQ1NDdiYzE2MzcyNDBmNmI5ZWRmNWVhNiBsZWdhY3ktdHJ1bmsKKzM4MTk1IDljYWY5Y2Q1NDUzZDllOTYyNTYxZTVkMjdiZDI1NTFhM2UxYWFkNjUgbGVnYWN5LXRydW5rCiszODE5NyA0NDYxMWU1NDk5ZTdjMjdlNzZlZDYyMjE4YzM0MTA2NTRjZDdiZDE4IHJlbGVhc2UyNC1tYWludAorMzgxOTggM2ZjOGVjZTlkMmI4MGE0MDBhYWYwODhiMDEzMmYyZTliYmRhMjM2YSBsZWdhY3ktdHJ1bmsKKzM4MTk5IGE2MmIzYjRmZjUyY2I5MTg5NzkwNTQyNGFjMTBkOTdjNmI1N2JlZTIgcmVsZWFzZTI0LW1haW50CiszODIwMCBhZWM1OTY2NTAyOTIzNDQyNmNmMDIzNGY2OGZiNzEwNGZmNjA5MWI3IHJlbGVhc2UyNC1tYWludAorMzgyMDEgZDkyNmI4YTVlZjZlMzRhMjQzZmMwZWY0MjU2YmE0MGMzZWM3MGQ2MCByZWxlYXNlMjQtbWFpbnQKKzM4MjAyIDg0ZjQzZDNhMTUzNTRhMjQ0ODU0Y2M0ZmJkYmE5ZDVlMzA1Y2MxOWEgbGVnYWN5LXRydW5rCiszODIwMyBlNmJmMmU3Mjk0MWVlMGVlZjM1MWIwNzUwZjFkYWNjYzNiODk0ZWI5IHJlbGVhc2UyNC1tYWludAorMzgyMDQgZTE1Y2I2MmIzZmZiZGUwYjI3YTBkMTI0ZjM5YTNmZjE3NGYzODg3ZSBsZWdhY3ktdHJ1bmsKKzM4MjA1IGJhMjRhMDMyNGEwMzNhZWNkMzdkNjA2Nzc1ZWViNjI2ZGJhMWQ5MTIgbGVnYWN5LXRydW5rCiszODIwNiBkZjk1YTQxNTE1YzQxNDRjYWFjNWFjOTgwMjk1MTBhMDg1NTdiM2RlIHJlbGVhc2UyNC1tYWludAorMzgyMDcgYmU0OTI5ZTUxNzliYzBiMzI5YjExNDlkNDAyY2UxYmMyZTE5NDljYSBsZWdhY3ktdHJ1bmsKKzM4MjA4IGY4MGJiOGFmZjQxOTJmY2QyMjQ0M2Q2YzVhNDE1ODkxNGNkNGM5ODEgbGVnYWN5LXRydW5rCiszODIwOSA4ZjhmNTYwY2VjOTdlYzViYmI4ZDE4NDEwOWYyNTA1YzJjNzAxZGU1IGFzdC1icmFuY2gKKzM4MjEwIDIwODBjOGM0NzcyOTc3ZDg5ODViZjM2YjU5NjBhMDA5MTVkNjQ1NTIgYXN0LWJyYW5jaAorMzgyMTIgZjQyYTdjMzM1YTViOWFiMDBjMDM0MjEzYWVjMjE2MDg0M2EzOWE5MCBsZWdhY3ktdHJ1bmsKKzM4MjEzIDgyNDNlNTFhMjJkZWVmZTY1MjRjM2IwM2Y1ZDlhZThhYTQwMGI5NzcgbGVnYWN5LXRydW5rCiszODIxNCBhMGMwY2QzZTgxZmQ0NzdiOGNmNWUwZTA3NmE1MTY1ODI3YTYzMDRiIGxlZ2FjeS10cnVuaworMzgyMTUgYmFlYjA5ZjYwYzgyODI2NWFlZDBkNWMzYTgzOGZlZTFhNmVlOWQxNyBsZWdhY3ktdHJ1bmsKKzM4MjE2IDNmZWU3YzkxMTZjOTFmZDk1MGJjNmY2NjMwNWE1MDc3ZjY1ZWM5N2IgcmVsZWFzZTIzLW1haW50CiszODIxNyAyNmNjY2YzZTg0ODI5NjI2ZjViMDIxYjc1ZGFlY2QzNWE5OTE1NTlkIHJlbGVhc2UyNC1tYWludAorMzgyMTggYThlY2Q0YTk2ODI1Njk1MWY5OTBjNDdjYzA0YmVjNjAwZTkxMzdiOSBsZWdhY3ktdHJ1bmsKKzM4MjE5IDYzZjM0NDVmMmY1OTczNTA3NzhjOGQ3NDRkMDc3YWVmMDFiOWJiYzkgcmVsZWFzZTI0LW1haW50CiszODIyMCA1NmUwY2M0MzdiOGI1MDVmMjJhNGNmNDYyMDhhYWExMzlkYzBkZmUxIHJlbGVhc2UyNC1tYWludAorMzgyMjEgNjgwMDYwMDI3OWVkNjNlMWM1ZmVhYTVkZGE2Y2VjZGNjZTc1ZjZhNyBsZWdhY3ktdHJ1bmsKKzM4MjIyIGYyNjNmOTQzZWY3YjIwYWEwZjc1ZTRjYTRmMWI1YzE5NmFjMDE4NTAgcmVsZWFzZTI0LW1haW50CiszODIyMyBhMTIzZmI0ZDQ1YmY0YTY3ZDQ1MDI1MzJlNzY0ZDg1MTAzOTNmYWNlIHJlbGVhc2UyMy1tYWludAorMzgyMjQgY2E3ZjQzMTViMjEyNmY3YzY0ZjIzNTMyMzE0ZGZlNDJhMmUyMzI2OCByZWxlYXNlMjQtbWFpbnQKKzM4MjI1IGU1MWE4MjE2Mjg0NjRmMjVjYmFiNjdiNGEwOTY1OGI3MzA1MDE1ZTAgbGVnYWN5LXRydW5rCiszODIyNiBiMmQzODc5MDA0Y2QwNmRjMzE1YjVkZWYyMDdhNjU4MTZhZmJhNjZjIHJlbGVhc2UyMy1tYWludAorMzgyMjcgYjdiY2JlMzk4YmFhNjg5YWRmMjg0NWI3ZDI0MDhjMDgwMTVkMjg0MCByZWxlYXNlMjQtbWFpbnQKKzM4MjI4IGIxYTg0MjMzZDg1NTdkM2UyMTlmZGQwNmE1MmU3ZWMzYmNlMzUxMTEgbGVnYWN5LXRydW5rCiszODIyOSBmMGRiOWIxODZmM2RkYzBlMWM3MWRiMGNhOTcxN2JiMGRmMDJkNDQ3IGFzdC1icmFuY2gKKzM4MjMwIGQ4MWI2MTczZjA1MGJmOThjZDI4MTY0MmExNWVkMjZmNWNjZjEwNGQgbGVnYWN5LXRydW5rCiszODIzMSAyMzM2Njg4OWM2Yjk0YzJhYmI3YjVkNzhhMDUwN2YzNGY5ZTNmZTBiIGxlZ2FjeS10cnVuaworMzgyMzIgODYxODE2OGRjYTI3MDU0NWJiNWVhZmIwMGRhZGUzYzdlMThkNDEzYiBsZWdhY3ktdHJ1bmsKKzM4MjMzIGNjMjdiMjQ5NzU1ZGU2ZWVkYTUwNTZkYWUzMDljNTUwNzk4MmM1NGMgbGVnYWN5LXRydW5rCiszODIzNCAzNWYzMTc5MGM2Zjk2YmFmYTkxNjg1NTAxNzA1MTZlZDYxYmI2NDllIGxlZ2FjeS10cnVuaworMzgyMzUgMTllNjFhMmE1NjMyMGM2NTA2MWY0NDY1ODliMWM4NzIyOTU4MTA0OCBsZWdhY3ktdHJ1bmsKKzM4MjM2IGFhMjQ2YjlmNjE4NGZiOWE4ZmVmZGQxYjliMDIzMTkwY2I2YzI2YjMgbGVnYWN5LXRydW5rCiszODIzNyBiMjJlYmZjNDg4ZjMwMjRmMGQzODFkY2JjMzUyZGE4YzMxYjI0NTU3IGxlZ2FjeS10cnVuaworMzgyMzggNWNkNGZmZmFmOTEwNWFmODM0NjZhOGQ5MTMyOTM5NDdiOTI1MzY3MCBsZWdhY3ktdHJ1bmsKKzM4MjM5IGRiYmU4M2MzMjk0YTNlMzFiMGEwOTdkNzY3ZGYxYjVjNmFkYzFjNDggbGVnYWN5LXRydW5rCiszODI0MCBmZjczZTE1YTNmYjkyM2ExOTkyYTY3NDYwOWM1YTg0NDBhNGUyZmFjIGxlZ2FjeS10cnVuaworMzgyNDEgY2UyMzIwNzJlYWU2NDkzYmQxNzRmYzQ1NmFjZDI0MDQwNzc2NTQ3ZCBsZWdhY3ktdHJ1bmsKKzM4MjQyIDhhOGQ4NDQ3NjdiNjY2MmYwNTU3MjJhZTk5OTNlZGIxNjRlZDJmM2EgbGVnYWN5LXRydW5rCiszODI0MyBjZGFhMTY4Njk2MDg1NWRkZDg4NzVhNjNlNTkyMmMyMDg0MGYwZWRlIGxlZ2FjeS10cnVuaworMzgyNDQgYjg5ODgxMzQ4Mzc1MzVkOTEyZWMxYTc1YWMzMzIzMDVlYjQzYzVjOCBsZWdhY3ktdHJ1bmsKKzM4MjQ1IDllMzBkOWUyYjQzMzYzOTI1NTc2NmE3YjU5MWM2NjZmNzgwOTljOTkgcmVsZWFzZTI0LW1haW50CiszODI0NiBjNTk3NTQzM2FhNjg3N2Y5ZDgyNGJmY2E1MzdlZWQ5YTFiYTJkMGI1IGxlZ2FjeS10cnVuaworMzgyNDcgMmI0ODU5NzRiNDcxNWJjNjI2YWJlODNhM2YzNzllZmYyZGZmNzIyZiBsZWdhY3ktdHJ1bmsKKzM4MjQ4IGE5NGRhMmM2YTYyNmU0ZDM0ZDliNjkxNWY4ZWNhZWRmNDJiYWE2Y2IgcmVsZWFzZTI0LW1haW50CiszODI0OSBhMGJjNDQxOTY2M2MzMTA1ZWExNDM4ZjIxYTY1MzMxNzE3NDQ3NzNlIGxlZ2FjeS10cnVuaworMzgyNTAgMjg3ZTcxZjQ0ZDc5Njk4ZDI2NTM1OTAxZDBkZDZmMDEzMGY4MTU2YiByZWxlYXNlMjQtbWFpbnQKKzM4MjUxIDFhZWE4MTU1MWEyMjJmNmJmYjIyOWZkNWRkZmQ3YjY0YzUwZTkwNDYgYXN0LWJyYW5jaAorMzgyNTIgYmE2ZTE3MjcxYzYyODkxNjkxMTIxNWRlMDc1NzYzZTFiY2MwZjc2YyBsZWdhY3ktdHJ1bmsKKzM4MjUzIDRiZDE4MGQxNzFjYzAzNDQ4NTcxMGVmM2U0OWNkZGQ0MTU5M2UzZmIgbGVnYWN5LXRydW5rCiszODI1NCBhMzE2ODFhNmNmODg3Mjg3ODNmZjAwNDliNjE5OTIwMmYzZWRlYmM3IGxlZ2FjeS10cnVuaworMzgyNTUgMThjZmYzZWQ3NGQzZDk2ZGY5Y2YwOTZhYWJhNmM5YTBlM2M3ZTlmMyByZWxlYXNlMjQtbWFpbnQKKzM4MjU2IGEyMTYwMDNjZWYwNDQwMmQ4MGUxNTVkYWY1YTMwMDcwZGI3ZjRhMjYgbGVnYWN5LXRydW5rCiszODI1NyAzNTMzZTNjYjdiOTdhNTdlOTMyMzk1ZmQ0YTRjNTcxNjEwMDE4NTg0IGxlZ2FjeS10cnVuaworMzgyNTggOTFkNTVhMzAzODJjYmIwODE0NzlmMjM4NjQ1ZWJlNDA0ODc3OGJmYSBsZWdhY3ktdHJ1bmsKKzM4MjU5IGYyNWRjZDdmM2U0ODgwYzA0ODdiMTgwMDIxNTJkZDI3ZmNhNWY4ZjkgcmVsZWFzZTI0LW1haW50CiszODI2MCA1OThkMTZmYTAyYzE5OTEyMTQ4YzRkMzJlN2Y5OTU3MTBkYTZhNThhIGxlZ2FjeS10cnVuaworMzgyNjEgNzM5MWUxOGIwYTdjZGRlZjY0NDc0OTZhYmM3ZTMzNTFlNTBiMDE0YyBsZWdhY3ktdHJ1bmsKKzM4MjYyIDI4Zjg0OTM4NDY4ZGVhMWU1M2MxYTNmNDBiMzNiYzg3OTIzZmYzM2MgbGVnYWN5LXRydW5rCiszODI2MyAwYTE2MDhhNWViMDVhZWU0OWE0ODM5NTcwNDNhNjJmOGEyMTQwNTFjIGxlZ2FjeS10cnVuaworMzgyNjQgZTJjMTA5N2Q3ZThmYjBiZTUxNzgzM2QzOWViYzdiY2FhMGI5ZmRhYSBsZWdhY3ktdHJ1bmsKKzM4MjY1IGI2ZWMxYjNiOWZjZTc5Yzc3ZGYxNzI2NzU4NTZmZWU2NjdmMDRhMjggbGVnYWN5LXRydW5rCiszODI2NiBiNDgwYWJhZjFmNmY2ZTZhYjdkMmE1M2EyMTc2Y2ZkYTk1NmQ1Yzg1IGxlZ2FjeS10cnVuaworMzgyNjcgNmMwMmJiM2ZjY2E2NzkwOTgwOTgyZTBmMWQwOWQxM2U2NTVhOTBkNSBsZWdhY3ktdHJ1bmsKKzM4MjY4IDcwNTlmYjhiOWViMzkzNGU1ZWY1MTcwNmQ3Y2NhYzM1ZDAwNWMzODggbGVnYWN5LXRydW5rCiszODI2OSBjNGRiOTkyZjg0MGYzMDRlZGNhNjBhMjczMmM5MjQyOTRmM2E2ZjRmIHJlbGVhc2UyMy1tYWludAorMzgyNzAgNDVhMzIwZjM4YzQ4OTAxZjM1YmM0Y2ZlMjEzNTVmZTVlN2RiYzQ4MiBsZWdhY3ktdHJ1bmsKKzM4MjcxIGQ3OTY4NjIxZDI4ZDJlN2NkMTk1YWU4YzEzMjJjZTEwM2EwMzMyMjQgcmVsZWFzZTI0LW1haW50CiszODI3MiA4YmI0NmZkY2U4ZmQzODQ0MWVhN2MyNDU1MjhkNjYyYTk1NjYzNDg5IGxlZ2FjeS10cnVuaworMzgyNzMgYTk5ZjVhZDI5ZWFjNjRhMmJmMDQ3YmFiZjlkYTQ1ZDI4OWZiNjQzMCByZWxlYXNlMjQtbWFpbnQKKzM4Mjc0IDhlY2E4ZDk4MDI2MGRlZDI1YTJjY2UxODg3YjFjZTM1Y2JjZTE4ZTcgbGVnYWN5LXRydW5rCiszODI3NSAxM2E4NTgwNmJhNDhjOTc5MzMxMGE3Mjg0N2ZkMzRiODE2YzM5NDczIGxlZ2FjeS10cnVuaworMzgyNzYgYTg1OTljNzg4MjE4ZDg4ODUyMjdhZTM5ZmY1Yzg5YzljOWM5M2I5ZCBsZWdhY3ktdHJ1bmsKKzM4Mjc3IDQyODJmODgyYjI4NTk1NmUzYmVhZDdiMTBiM2M0YmRiZDY4ODUxNmIgbGVnYWN5LXRydW5rCiszODI3OCBiOTM4NDVjZTQ0NTQ5NWUzYjQ4NWNiNmIzOWFlZDVmMTgzYjcwMTEwIGxlZ2FjeS10cnVuaworMzgyNzkgYzg4YWIyOTJiZjA1MjhhYTk1YTY3MTJkMGYxMjU5YTAyMTI4NWQ0MSBsZWdhY3ktdHJ1bmsKKzM4MjgwIDcyZmQzNzNjZDBmOTVhMWMyZjZlZDQ1YzZhMTk3MGE2OWYyMjBmY2UgbGVnYWN5LXRydW5rCiszODI4MSAxZDg2NmMwMmE4Y2FiMjA1YmIxYTQwMmJhOTc3MGFlNDVlYTRhOTQzIGxlZ2FjeS10cnVuaworMzgyODIgYTcwZGQ4NzY3YjA3MWIzNDI2NmRkYmIwNjJlNWM2MzIyZjRmODg4ZSBsZWdhY3ktdHJ1bmsKKzM4MjgzIDAyZjM5OGZiYjBmMDZkMTdjNDViM2FiMDZlNDI4YmM4YzE1OGUwNzMgbGVnYWN5LXRydW5rCiszODI4NCBiMzJhZTBlZWNkZWU3MWFkMGZjNGI3ODQ5ZWNiZTcyZjQ5ZGZlNzQ2IGxlZ2FjeS10cnVuaworMzgyODUgOGY1NzMwYTNiYzRhYmY3MjdlOTQzNzM0NjY5NDVkNjk4MjA2NjNkOCBsZWdhY3ktdHJ1bmsKKzM4Mjg2IDM0NzM5MmM4ZWI4YjM2YzUzY2I1ZWVhMjBiMjExMzY2ZGMzMzYzMzMgbGVnYWN5LXRydW5rCiszODI4NyA4ZmMwMzBjNWM3MGFiZTI5MTkxMjQ1NDY0ZmM4OGUzYTliOTNlZWQwIHJlbGVhc2UyNC1tYWludAorMzgyODggNTYzY2JmNGQ2YmU0NjU2NWY0NWYwNDA1YmVkODNlMjFkNzVlMDk0OSBsZWdhY3ktdHJ1bmsKKzM4Mjg5IGZlN2ExNTQ3ZjJmYWVhNDQ4ZmVhYmU2ZTUxNmMzYmU0NjczYWQxMWUgbGVnYWN5LXRydW5rCiszODI5MCBmYTY1ZTM0MjVhNGM1YWQ2ZDFhMGVkNjA3MWQ0ZTFjMDU4OTA1YTI1IGxlZ2FjeS10cnVuaworMzgyOTEgNjUyYjg1ZDM1YTc1ZGRhMTBlMmQzMzFhNTc2ZTkzYTBmNzM3MDdlZCBsZWdhY3ktdHJ1bmsKKzM4MjkyIDI2OWEyYzE0YmM1NzA4NGQzNmQ4M2NiZDFjZWM5ODMyYWJmZmVkMTIgbGVnYWN5LXRydW5rCiszODI5MyAzMzE2YWE1NDBlNjhjODA3Mjg0MTkxZWU5NjJmZjFiNjJkNDQ5NzdjIGxlZ2FjeS10cnVuaworMzgyOTQgMTM5MzQzNDNhNTNiODMyNjMyNDI3MTU4YmU1YWM4YTQ2MGRlYzVlOCBsZWdhY3ktdHJ1bmsKKzM4Mjk1IDU0NDliN2Y4MDZmYjdkZjJjMjJlZjM4MDFlZWMxNTdkYTQxZmUzYTEgbGVnYWN5LXRydW5rCiszODI5NiA1YmQyYjNlNGZkY2M0ZjU3MTMwOTIwY2JlNTA1NTMwY2JmNjIwZWUyIGxlZ2FjeS10cnVuaworMzgyOTcgODQzNmEyOTU1OTFiNjhjYTgwYTkwNDFmNmY2NGQ0OWZlYTVkOWE2YSBsZWdhY3ktdHJ1bmsKKzM4Mjk4IDRiOGZhOGIwYWY5MTZlZTVkMDQyZjJhZTJhYjdmYmNmM2ZmMDFkNzIgbGVnYWN5LXRydW5rCiszODI5OSBkYzA5Y2M5YjJlZTZjNzhkMjg0ZDUzZWE1MzNlMGUwMWY3OTIzYTBhIGFzdC1icmFuY2gKKzM4MzAwIDY4OWMyMzM4NWU0ZjlkZDEyM2Q3OTJjNzExMzc3YmE5YjcwYWRhMDkgYXN0LWJyYW5jaAorMzgzMDEgNGFmM2JmZmU1NjIwM2FlZDIyY2NlMTQ1OGNiNDhkMTI1ODc4Yjk4ZiBsZWdhY3ktdHJ1bmsKKzM4MzAyIDcyOGVkZWZiMWUxNzM1NmU4ZjdkNjJiYzA3YTY1YmMyNmNkZTZiOGIgbGVnYWN5LXRydW5rCiszODMwMyBlMTMwNTg5NGJmMDk2YThjOWM5NmVjYWI3OTgzZTA4NDI0MzkyNTU3IGFzdC1icmFuY2gKKzM4MzA0IDQ5MDE3ZDllZjZjOTg2YjY4NzM4ZjRmMWU4MWM2YWE4OGFmMjAyM2YgYXN0LWJyYW5jaAorMzgzMDUgNGI3NGZmMDc5NjUyYmY1ZGIwMjkxYTk3ZjdmMzMxNjIyMzk4NWY3MCBsZWdhY3ktdHJ1bmsKKzM4MzA2IDY5YjY4ZjkxY2M3NzY2OTBjYjYzMjNiNDllNDMwMGI4MTBjYTE0NTYgbGVnYWN5LXRydW5rCiszODMwNyBmNTY0NjM0OTRiZmQ5NGVlNWE3ZDA5NzAzZWQ5YzE4ZTY2OWU1MTUzIHJlbGVhc2UyNC1tYWludAorMzgzMDggMDM5ODA3ZTFlNGQxMjgyYjk3MWY5MThmYTcxMTRlMmFjMWEwYmNhNSByZWxlYXNlMjQtbWFpbnQKKzM4MzA5IGUxYTdlYjgzMmNiNTFhYmY4YjdkZjUyYjVmZmYwMjcwZjBkNTIyMWIgcmVsZWFzZTIzLW1haW50CiszODMxMCA0YWE1NTRiMDBjYjBiNTU2ZDAyODNjMTM5ODA0YjU4NzgxODhlY2QzIHJlbGVhc2UyMy1tYWludAorMzgzMTEgMjI0NmFiOTIyZWI0OGU0MDAwMzdhZjE4NDdiMjliMDNmZDlkMjM1MSByZWxlYXNlMjMtbWFpbnQKKzM4MzEyIDk1NWRhMDgwYjBjZjM2ODBjYjlkOTdiNjcyNjE3ZDkxNTI1YjNlYTMgcmVsZWFzZTIzLW1haW50CiszODMxMyA3ZDk5OTgxYjJlY2UzMmVkN2E4NzIwY2NjNjlkOTBjZGE4NzFmNDczIHJlbGVhc2UyMy1tYWludAorMzgzMTQgNmZkYmM0ZTgzM2UyMGZmOTQ2NzI2OTZmY2Y4M2YwZWEzNGJmNmE1YyByZWxlYXNlMjMtbWFpbnQKKzM4MzE1IDc3NWE3MmI5ZDUyY2RjNzY4YTI5ZTg1MTFhZmU5YmI5OWEyZjZjNzAgbGVnYWN5LXRydW5rCiszODMxNiBlZDRkYzA1ZWE0YjhjMTI2YWE3MDdhYjBlMzY5MTk4ODhiN2NiNjU5IGxlZ2FjeS10cnVuaworMzgzMTcgMThmNmNlYmU0N2FhYWU3MzU5OWQyZTNlY2E5YzQ2MWViM2FhYjAxYSBsZWdhY3ktdHJ1bmsKKzM4MzE4IDY4MzcxOWUwNDIxODE4MmIwMmVkNmEzY2Q4NDBhNzdjNzBiNWM1M2YgbGVnYWN5LXRydW5rCiszODMxOSBjZDZiNTRiYTI3MmZiNDc3NGJmN2Q5ZGM0Yjk0ZjcwZmJiMTkzN2Q2IGxlZ2FjeS10cnVuaworMzgzMjAgZDkzYjY4YTk5Zjk2ZTM4MTU2NDJmZTM2NDEzYmVmZWU0MmQ4Zjk2NyByZWxlYXNlMjMtbWFpbnQKKzM4MzIxIDZjZjM5OWFhZmM2NjhlNDQyNjNjMGMxMWMyN2I4NDE2ZjM5ODdkYjEgbGVnYWN5LXRydW5rCiszODMyMiAyMWRkNzMzZWIxMThjM2JhZmU3OWY4NzhjZjYwY2M3Yzc3ZGY0YzMxIHJlbGVhc2UyNC1tYWludAorMzgzMjMgOGMwZTNjMGEyMzNjYWMzYWM0N2YwYTU3M2FiNGYxY2U4ZDE2ODliMCByZWxlYXNlMjMtbWFpbnQKKzM4MzI0IGEwNjNmMGQ2ZGIyODBlNGU0NWZkYjlhNDhjNjY2MzQyMTQ1MjA5OTYgbGVnYWN5LXRydW5rCiszODMyNSBhZjYzMGViMjZkNTliN2YxY2Q5NDhjZmI2MWRlODE4ZDJkNWMyZDFlIHJlbGVhc2UyNC1tYWludAorMzgzMjYgMjkzMWY2NTA0YWY1YzNkNjBhZTJiZWE2YmNjMGM1YzZlMjEyZGVkYiByZWxlYXNlMjMtbWFpbnQKKzM4MzI3IDJlZWU5MGVmMzJhYmM3Mjc1YTdkNjY4NThhNjdmZjI0N2UyYzhjNTkgcmVsZWFzZTIzLW1haW50CiszODMyOCBhZDEyNjA1NGFkZTU3NTAwYzllNDc5OTgzZjY2ZjAxZGUwMzdkM2JlIHJlbGVhc2UyNC1tYWludAorMzgzMjkgNjcwZGUzMDFiODg3ZjEwMWJhZjk0NWUyMzg0MmQyMjlmYTYwZGQxZiBsZWdhY3ktdHJ1bmsKKzM4MzMwIDU5NTIzZWIzNWMxZDcxMjZjMDE3ZjFkMjQ0OGZjNGQ5MjNjY2NlMzcgbGVnYWN5LXRydW5rCiszODMzMSBhMDkzYWViZjFiNDBlN2QxMTZjN2RmMzQ4NmViN2M3MzFlM2Y2YmM0IHJlbGVhc2UyNC1tYWludAorMzgzMzIgNjYwNWUxMmJjMTZkNzEzZTM3OTI2MDIzMTBkZDk0MTQxZTE0MjkyNCByZWxlYXNlMjMtbWFpbnQKKzM4MzMzIDUxYTBmMGFkNDZhYzBkOWMzMTdjNWY4MjlhZWE1ZWVlNzg0N2VkYTQgbGVnYWN5LXRydW5rCiszODMzNCA3MGEwNDQ5NzU1ZTI2MWRiODNiZmNiYjg5NWJkN2Q4YWY0YzQ2OWFmIHJlbGVhc2UyMy1tYWludAorMzgzMzUgMWY1YzIzNTE2MDVhMTU3ZGNlMWM5Yjg3MjAyYjY0Zjk2MjI0MmU2ZCBhc3QtYnJhbmNoCiszODMzNiAzMjk4YWU2ZjM2NjU4N2MwNTc4ZTMxODUxOWM0MTRmOTUxMjE0ZTc4IGFzdC1icmFuY2gKKzM4MzM3IDhiNjU0OGY1ZjI3OWRkOTRhMGQ4ZWFhNjM1NWExMjU5NGU5Nzg2YTIgcmVsZWFzZTIzLW1haW50CiszODMzOCBjYzNiZDRlNGQ5ZjBhNTYzMTUzZTFiNGNiYTQ3NzllNzAxNDUzMGU3IHJlbGVhc2UyNC1tYWludAorMzgzMzkgMDEzM2IwMjI2MjZlYjJjYjQ1ZmU2N2I2YmFlZTU3YjAyMTEyYzA5YyByZWxlYXNlMjQtbWFpbnQKKzM4MzQwIGQ1ZGRkMDZkNTVmYzlkYTNmMWY0YTA0ODdmYzAyZjNhZGU1ZjlmNDIgcmVsZWFzZTIzLW1haW50CiszODM0MSA5ZDc2MzkzN2EyNWI0YjQ4YWY0ODAwYzI2Y2FkYjRhMjliMGQ4YWFjIHJlbGVhc2UyNC1tYWludAorMzgzNDIgZmY1M2QxNDcxN2M1MjgxMzVhNDU0NDQ2N2VkNTQzZmRmOWE5ZGYzOSByZWxlYXNlMjMtbWFpbnQKKzM4MzQzIDdkZjA3N2Y0NzA1NjkwZDI1Y2Q3YTU3ZGQxOGY5MDg2OGM4OGRkMDUgbGVnYWN5LXRydW5rCiszODM0NCBkNWNlODhlYmRiYmQwZDc1MDE5OGM0NDdkZDAwY2M1Y2JhZmViZWU5IHJlbGVhc2UyMy1tYWludAorMzgzNDUgODNjOTc1YjRhMmMzNzIyYTA2ZDJiNTkzMzk4MjJlNmM4MzUzMGU1MCByZWxlYXNlMjQtbWFpbnQKKzM4MzQ2IGM0NDEzMzA3YTJmMzEwYmNiNzY3NWUyNmE1NzIxOTJiMWFiM2ExZWMgbGVnYWN5LXRydW5rCiszODM0NyBmNzM4ZDY0YzgyN2QzMDg3MTgwNmZiNzA0NjIzMzQwZmFkOWIzNjU2IHJlbGVhc2UyNC1tYWludAorMzgzNDggNjNmY2Q2N2UzMzI5YWIzYzEyMDZlM2QxYzAyZDM4NTJlYTI2NDUyMiByZWxlYXNlMjQtbWFpbnQKKzM4MzQ5IDJiMjU4ZjBjYmMzMWNiOTVkMWYxMmNhYjA5MTg3NDQxYmRlOGM0Y2QgbGVnYWN5LXRydW5rCiszODM1MCAwZjQxZmUzZmFkZjQ1ZTFmODljYjRiMDJhMGQ3NzYxNDhjMDhmMTg5IHJlbGVhc2UyNC1tYWludAorMzgzNTEgZjI0NmU0NDg1NjM3YTk0ZTQ0MTA4MGU2NWI1OTVkZDc5NzBjMjg2YiByZWxlYXNlMjMtbWFpbnQKKzM4MzUyIDdmNTI0MTdlNTMwYjM0ZGIyOTA2OWJjMjhhMjU0ZTljYjFkMzMyMjggbGVnYWN5LXRydW5rCiszODM1MyAyMzY5ZGZlMmRhZDQ2OWVhNWM5ZDBmMjg5NzI5MTlhM2RhM2MwZDMxIHJlbGVhc2UyNC1tYWludAorMzgzNTQgOTcyNDE3NDI2MjI0N2EzYWFlNzA3MGRkNWRkNDE2OWYyMWI2YWNiYyByZWxlYXNlMjMtbWFpbnQKKzM4MzU1IGI3NDU1OTVkNDFkMWYxNjM0MTgwMGRiZDBlYzQzZmJkNjQ0OThiMTUgcmVsZWFzZTI0LW1haW50CiszODM1NiBlM2Q3NDgzMGVkMmZhN2Q1ZjNiYzYyYzk3OTA4MjgxMzc4ZDAyNTRhIHJlbGVhc2UyMy1tYWludAorMzgzNTcgYjliYzQ5YjUzZjRkNjI1ZDVjOTQzZTY2YzFmOTU3MmFkZWQzNmQ0NCBsZWdhY3ktdHJ1bmsKKzM4MzU4IDM2YWJkZDQ3OGUwNzQxZjI0MGI0OTlkNjc5MjI5OGIzMmM3Njk5NjcgbGVnYWN5LXRydW5rCiszODM1OSA5YzYyZTdkNjkwYTUyYWE5ODVkMGJiYjZmNzg4NzYxZDRmOTVlYTgyIGxlZ2FjeS10cnVuaworMzgzNjAgZTg1MmNmNmFiNWI1NTIxN2E5ODUyOTVmMDZjOGFiMzkwMzBlNjYyMiBsZWdhY3ktdHJ1bmsKKzM4MzYxIDRhMWZlZmRmYzc5MzA0NjMzMzFmODNlZjc4NjU4NGQzMmZhYzE3YjggcmVsZWFzZTI0LW1haW50CiszODM2MiA4YzllM2VkNTk0ZmVkMmM4NjYxOWMyOWFlZjU0OWUwYWMzOTgxNWE3IHJlbGVhc2UyMy1tYWludAorMzgzNjMgYmIwNjU0Y2Y1ZTUyMDVlMzczOGRmM2RjZWNkNjYxYzkxM2JkY2Q0NyBsZWdhY3ktdHJ1bmsKKzM4MzY0IDRkMjllYjNhM2RkYmYyYzMzYTBlM2NjNDE2NmFkODc1ZjJlZTZlYzYgbGVnYWN5LXRydW5rCiszODM2NSA0MWYyOWUyNmY2OGY0NDgwOGQzN2U2MmIyYzE1NTQzYWNiY2E0ODRhIGxlZ2FjeS10cnVuaworMzgzNjYgNDIwOWVjMTcwNmFiYTE3NTdjNDFhZmMyM2I3MWE4Njk2Y2QxNjdkYiBsZWdhY3ktdHJ1bmsKKzM4MzY3IGE3MmVlNjNjNmM4NDkwMjE2Yzk3MmNjZWFjZWEyODk1MzRjOTk1YjUgYXN0LWJyYW5jaAorMzgzNjggZmM1ODBmZjAwZjZmNTcwYzlkYzFlNzBmYjdiN2JhY2JmYjU5ZjczOSBhc3QtYnJhbmNoCiszODM2OSA2YjFjN2IxOGY1OWQ4N2I1ODFjYjIzNzQ3ZWZjYjQ1Y2E4Y2YxZDMwIHJlbGVhc2UyMy1tYWludAorMzgzNzAgNmU3MDMzYzc0YzcwYjdjMDhlOWRjNDZlMzFlNWY4ZmQ5NWMwNjQ4NCBsZWdhY3ktdHJ1bmsKKzM4MzcxIDY4MDIwYmQxYjllMmUyZWM5MzE0ZjNiN2Q3OTUyZDc0OWUzOGU0YzEgcmVsZWFzZTI0LW1haW50CiszODM3MiA2YjZlNmI5ODJhYzg1N2JmNzViYTdhY2MwNDY4NDM1YzBmZWFmOTViIHJlbGVhc2UyMy1tYWludAorMzgzNzMgMDhlM2NhOGZiMDcxZjU5YTdjMDJjNzEwZTk3ZjE5NjhlZTU4ZTkxZSBsZWdhY3ktdHJ1bmsKKzM4Mzc0IDRkYTQ2MjU4YmZmOGNlYzk2MWYxNjZjMjY3ZTYyZGI3NmMyNmQwYzcgcmVsZWFzZTI0LW1haW50CiszODM3NSBjOTMzN2M5ZDJmMmE5NDY2MWQxZTBhYzA4MmQ3YTdlZTJjM2IwZDU5IHJlbGVhc2UyMy1tYWludAorMzgzNzYgOGY2MDllYWFjM2YwMDJhMzBjMDVmZGQxNDBhNDQ0ZTQyZDdhOThiMSByZWxlYXNlMjMtbWFpbnQKKzM4Mzc3IDUxNmNhMGI5Mjk3MWI3MDM5ZWRiNWY2MDQyMzMzZTJiODA1ZmRiY2IgcmVsZWFzZTIzLW1haW50CiszODM3OCBhYmIzYzFhZDAwYTdiYjUxYzNjZWY1NTU3NDNlMDdmN2ZiOGIwNjE4IHJlbGVhc2UyMy1tYWludAorMzgzNzkgYWU3MzI4Njg5N2EzNGEzOWUwMWE5ZjE2MzMyOGUyMjcyZmE4ZjkyOSByZWxlYXNlMjMtbWFpbnQKKzM4MzgwIGMxNjQxZWVkYTdjOTI4NTUwNzI2OWFjYmZlYjFjYTQ2OGVkN2YxZjcgcmVsZWFzZTIzLW1haW50CiszODM4MSA0NDBjMjViZDk5ZGY4NWM0OTRhOTYxY2U0YmFkZjJhNjA4M2Y0NjFiIHJlbGVhc2UyMy1tYWludAorMzgzODIgODcyMjRmMmM1ZTEwMDAyZGE0ZDBkYmQ0M2JkNjQ5MjFmZTdjYTgyOCByZWxlYXNlMjMtbWFpbnQKKzM4MzgzIGM0Zjc2ZWQyZWFmYTNmN2E1YjdkZmQ4YjI5MmEzYmY5NzE3OGU5NjAgcmVsZWFzZTIzLW1haW50CiszODM4NCBlOTQ5ZDQ2MzU3MmNlNjYxMWMzMTczNDQ2MzYzZThmNjZkY2I0ZThhIHJlbGVhc2UyMy1tYWludAorMzgzODQgMjYzOWIxMGRhYTk4NWIyMGIzY2FiZWM0NTE2OWQ1MjNjYWMyOWQ2OCByZWxlYXNlMjMtbWFpbnQKKzM4Mzg2IGJkYTkzMzg3Mzc1OGU1NGUzY2Q2ODkzNzQyNTFhZDNmMzFkODViYTEgbGVnYWN5LXRydW5rCiszODM4NyAxOGJhMDg1Y2M4YmJiZjVmZWFkM2I4YzU2ZDVhNmJhMTMyOGE0MTA0IGxlZ2FjeS10cnVuaworMzgzODggMTMxNzZlZDUyZTY1YzQ4NGRiY2Y0ZjgxZmI4ZTc4NDVmM2EzMWZmZSByZWxlYXNlMjQtbWFpbnQKKzM4Mzg5IDZmMmRkMDgxZmUwNTEyNjY4MjA2MTAyYmZkYmQ4MjAxYjNiNGYyMWQgcmVsZWFzZTIzLW1haW50CiszODM5MCAxYzM0OTA2MGFjMDhmMzcwYmE2YzIxNGMyMzUwNzE5NGVkYmYwNGZiIGxlZ2FjeS10cnVuaworMzgzOTEgOTEwMzg4MDFlYjQ1ZmMzMmJhYmM4NDM0YjBhNGYzNzUzYTdiY2FiMyByZWxlYXNlMjQtbWFpbnQKKzM4MzkyIGNiNzg5NmQ3N2RlNTIyZjI0YjkxYzcwNWJlZGZlODIwYmNlMzBjNGEgbGVnYWN5LXRydW5rCiszODM5MyA5MjVkNTRkZjkyYmU5NTBiZDVlZGI3ZTY3YjViNTY5NDQ1MWYwMmNjIHJlbGVhc2UyNC1tYWludAorMzgzOTQgNTQ4MTM0YmEyNzlmZWMyOTQwM2VjNzg0ZmY2YTI3MjdlZTJmOTU1YiByZWxlYXNlMjMtbWFpbnQKKzM4Mzk1IGUzMDc0ZTk0ZmI3NTVlMGQxMGFmZmVjMzI1MmEzM2E1ZmFiMzY2MGUgbGVnYWN5LXRydW5rCiszODM5NiA2NTg1MTI3NzQ0NjgxNTE1MTIxYmIyMWZiM2EzYWJiZTVjMTMxOWQ4IGxlZ2FjeS10cnVuaworMzgzOTcgOWI0ZTMxOGQ2YzcyNjc0ZWRiYTllMTc2ZDk1OWYyM2YxYzFmNWNkMiByZWxlYXNlMjQtbWFpbnQKKzM4Mzk4IDZjOTBjYjc2NmU2YmE0MGUyM2VkMjRhM2NhOTNhOWZiZDg1YzYxOTAgbGVnYWN5LXRydW5rCiszODM5OSA4OGMyOWU1MWIwMjlhMThjMjkyZDI4NDg4ZWNiNmJiN2ZhYTZkNmJiIHJlbGVhc2UyNC1tYWludAorMzg0MDAgNWZkNTA2NTE2MzYxNGRkZmIyYjIwZDViMzZjODEzYWFlNWY1YWUwNiBsZWdhY3ktdHJ1bmsKKzM4NDAxIDgwNGM1NjczNjQzZTZlZjUwMzhlZWYyYzI5NzdmNjhmMDU0MjRkOWYgbGVnYWN5LXRydW5rCiszODQwMiBhNDIyNWNkYzIwNDdmZDBkNjJhNzhiYzcyMmZlYmQ4MmExOWVlNGZjIGxlZ2FjeS10cnVuaworMzg0MDMgZjQzMDcxOGY4YjQzMGU1NTUxOTUwNTJlMzYxY2VjY2ZiNTU2YTAwNSBsZWdhY3ktdHJ1bmsKKzM4NDA0IGYwMTM0MjMyYmQ4NGRiMzMyODdiMWNkYWRiN2RlMmMyYmUwYjZlZDQgbGVnYWN5LXRydW5rCiszODQwNSAwYmUxNzI1OWFhYzg4NmM1YzVkNGI4MzcyOGQzZjBlMWQxNGQ0ODJlIHJlbGVhc2UyMi1tYWludAorMzg0MDYgNzM3NjQ5YTZjOTM1YzlmMGIwOGY1NmNjOTFiMWIwNTNkYTIwMzk5ZCByZWxlYXNlMjMtbWFpbnQKKzM4NDA3IGI4NDZkZDFiOTc1MTBhZTkyM2JhZmY4YzA4NjcxYzQwM2M1ZDZhY2MgcmVsZWFzZTI0LW1haW50CiszODQwOCAxYzA3MjYxNWU1Yjg2ZTM2ZGZjOTQ0YmE3NDMxMGNjMDk4ZWUwODYzIGxlZ2FjeS10cnVuaworMzg0MDkgY2Q3NDMyMWVjZGM0N2E3MTMxNThiNjVlZmJkMGMyODBkMzliY2I0OCByZWxlYXNlMjMtbWFpbnQKKzM4NDEwIDY5ZWQ3ZTkxMmIzZDI5NzAxNjFlODczODU3YjBlOWI0NWRlNmI0ZWMgcmVsZWFzZTI0LW1haW50CiszODQxMSBjY2Y2MjcyZWVkZjQ4NGM1NzQ5NjhhMTYyMjA2OGQxZGI1ZGRkOTI4IGxlZ2FjeS10cnVuaworMzg0MTIgMWI3OGZjMjk2ZmM4OTU4ODlhOWRmMmIxN2UxOGQ3ZmQ2Zjc5OTk1NSByZWxlYXNlMjQtbWFpbnQKKzM4NDEzIGM2OGJlODY1OTA3NWJiYzk5YmE4ODVlNzU3ZjYxZjcxZTk2N2Y3OTUgbGVnYWN5LXRydW5rCiszODQxNCAzZDAwYjY0MjU1MDU3ZWNjOTk1NzA4YTAwMzQ0ZjcxOGNiZDM2ZWY0IGxlZ2FjeS10cnVuaworMzg0MTUgM2Q5OWFkZWZiZjNjMDUwZDU2NTE4Y2E5MTRiYmU2ZjcwZTJlNDdjNCByZWxlYXNlMjQtbWFpbnQKKzM4NDE2IDMyMGM3NjQzZjhlOWVmOTkzNGM0MDY4YmUzYjEzZTQ1ZTE4NTMxZmUgcmVsZWFzZTI0LW1haW50CiszODQxNyA0MTc0Zjk3OGU1NjQ3MzJkNGVhN2U5YTZiODA5NTBkYzliZWMwZjQ0IGxlZ2FjeS10cnVuaworMzg0MTggMzdiMmYxMWMxYTAwNWY3MWRjZTkyNTdjNzU2ZWE2M2YyZjE2NjM4OSBsZWdhY3ktdHJ1bmsKKzM4NDE5IDgyNTlmZjNlZTQ5MzYxMjdhMTA3YzdhNDU0NjFhMjJkMzQ0MTMxM2UgbGVnYWN5LXRydW5rCiszODQyMCBjYTkxNzk5Y2VjYmEwMTM0YmMzOWY4ZDI1MzQyODkzYTJjYmU5NTZlIGxlZ2FjeS10cnVuaworMzg0MjEgOWVlOTlhMzU1NjhkMDFmYThiYWY2MmEzZjBlMmQ2OGYwNTAyNDY2ZSBsZWdhY3ktdHJ1bmsKKzM4NDIyIDQ2NTcyNDQyNTM3MDA5ZTM3ODM0ZjE1MWE4NDc1M2UwZTYxZTNhODkgcmVsZWFzZTI0LW1haW50CiszODQyMyA3ZTUxMDNiNGIyODlkN2FiYTg5YjJlZmU5NTU1MWJmMDIzMjM0NWJmIGxlZ2FjeS10cnVuaworMzg0MjQgZjI0MTE3YTM2MjhhYWRlNjAzYjAxOGM2YjYxNTMwZTQ3NjZhMGZiMiBsZWdhY3ktdHJ1bmsKKzM4NDI1IDlkNjZmYmE3ODQ0NGYxYjIxN2Y2NjQxMjVkZDEwNzQwMzNiMTE0MDcgbGVnYWN5LXRydW5rCiszODQyNiA3YzhmMzM3OGY2ZjYxYWVlOWE3NGE3NDUxZTE2YTVlM2E3MzVhZTFkIHJlbGVhc2UyMy1tYWludAorMzg0MjcgODM1YjY0NWExNjhmNzRjMDFhNjU4Nzg3NjEyY2IyNDA4ZjZmZDJmNSBsZWdhY3ktdHJ1bmsKKzM4NDI4IDFjMjk0M2Y5NTQ2ODYzOTYwM2JhMGFmZjMyYzNlMmI2NzFkNGIzODAgcmVsZWFzZTIzLW1haW50CiszODQyOSA2MzE0ZTk0ZDBkMzVkOTdiYTJkYjgzYTU3MzMzMmEzNjY3NmI1MmQxIHJlbGVhc2UyMy1tYWludAorMzg0MzAgNjg1OGMyNDg0MDEwODIxMzEwMmIwYWViNjBiOTA5OTk0ODc0MzFjNCByZWxlYXNlMjQtbWFpbnQKKzM4NDMxIDAyOGY5MmU0NGI0ODE0N2ZiZjM0NTc2NDk3MTYwZmM3ZmNhOWZmYzEgbGVnYWN5LXRydW5rCiszODQzMiBhMjRlNzBmNDY4NGIxZDBiZjY5YjkwMTI1ZTg5YzI1NWZmN2E1YzJiIGxlZ2FjeS10cnVuaworMzg0MzMgY2QwNGYyZDE4YTZmY2NmOTE4MjQwZjg4MGJhMzA1OGM4OGNmNjkwYSBsZWdhY3ktdHJ1bmsKKzM4NDM0IGM4NzhiZDAxYjgxYTE2MzQ3ZjY2YTYwYzY0OWQ3MDlkNDNiMTUwZWQgbGVnYWN5LXRydW5rCiszODQzNSA5M2YyNjY1ZWFkNWUyZGNkZWMxYTA2OWRiN2IxNTg1Y2VlM2U1YjZiIHJlbGVhc2UyMy1tYWludAorMzg0MzYgNmEyNDQwZDA1ZjUwYzMyNzJlNjczZjgyMDc2NGY1Y2QyYjFlNjdhYyByZWxlYXNlMjMtbWFpbnQKKzM4NDM3IDNjMTQ0YTNjOTExYTdiZTFiYjQ5YTM0MjhkZmFjMWYwM2MwNjZiNzMgcmVsZWFzZTIzLW1haW50CiszODQzOCBlNjFhYTg2MjE1YmNhNzk3ODNmYzEyMWU5ODIxMWI5ZWNkMTM4YjRjIHJlbGVhc2UyMy1tYWludAorMzg0MzkgYmI3ZjM2YWM5ZjNhODc4ODk3MWU2ZTJlNjBmODNlZGJlOTczYjI0YSByZWxlYXNlMjQtbWFpbnQKKzM4NDQwIDI5ZTZiZDcwOGZlNzVkMzY0MGYyYTM2NGUzZDE3ZDQyODk5YjRiZGUgbGVnYWN5LXRydW5rCiszODQ0MSA0MDQwYWEyMTZiOGFiMTZmYzA5Y2M0OGQwZjZjMzNhZGM3YTdkNzk0IGxlZ2FjeS10cnVuaworMzg0NDIgN2ExMjc3ZmFkMDRlOTI2NTdmYzk3ODM4NDllMjBiM2I1NjAwMDg4YSBsZWdhY3ktdHJ1bmsKKzM4NDQzIGY3Nzk2NmRhNmRlNWRiYzJjODAxN2ZjNzg3YmI4NTM2MDdlOWY1ZTMgcmVsZWFzZTIzLW1haW50CiszODQ0NCA4OTFjMzFkYWRhNGViOTI1MTFiYmZmMWZlYzc3ODBlM2YzMWUyN2I3IHJlbGVhc2UyMy1tYWludAorMzg0NDUgNzA1YjdmYjkwMDU2Y2FlZmM2YjRkZTZhMDIyNjExOGRiY2YzMDU5ZiByZWxlYXNlMjMtbWFpbnQKKzM4NDQ2IDM3YjZkZDM4ODU2ZGRlMzg4NDIxODllYTNjNWY5MDJlOTdmNDYzYTUgcmVsZWFzZTIzLW1haW50CiszODQ0NiBkMjI4NTA5NDI0MTcyZjk3N2VkYWQ0Zjc4NjBhOWM3NDdjZDY1NWM4IHJlbGVhc2UyMy1tYWludAorMzg0NDggZmYzY2E2NTZjMjgxZGViZmQzNjBmMzdkMDIwMmY1M2QxMzFjNGM4OCByZWxlYXNlMjQtbWFpbnQKKzM4NDQ5IDg5YjhjY2YxNGMwYzAxNWVlOWM2Nzk3MzQ0NmQ1ODYxYjlhZDgwYzMgbGVnYWN5LXRydW5rCiszODQ1MCA5YzY2YWI1NGMxZWNmZjllYmRlZTYwMTU3M2I1MzFlNzNmM2Y5ZjlmIGxlZ2FjeS10cnVuaworMzg0NTEgZTY3YjU4N2ZlZDc3OWMyMTEzMzhmMTg1OWYyZTAzOTgyMWYyYzlhZiBsZWdhY3ktdHJ1bmsKKzM4NDUyIDNjMTcyYzgyNmVlZDM2NGQzYzlmMmM5ODI0ODdhYTRkMGM5MTZmN2UgbGVnYWN5LXRydW5rCiszODQ1MyAxOTMyN2RiNzVkMWM5MmUzNmMzNjFiZDExOTJiMWVmNTQ1NzU5OWFmIHJlbGVhc2UyNC1tYWludAorMzg0NTQgMzY5ZThlNzFlYTMzOTE2NzhhYWRjMDg0ZTI2ODhhMTQ0ZmRiY2RmNiBsZWdhY3ktdHJ1bmsKKzM4NDU1IDQ1NDVhMTU0ZmFjMTU4M2JlNDFiYzc5ODg4MmJjMGUyYmI2MTEyZjQgbGVnYWN5LXRydW5rCiszODQ1NiAzZmRmYmNiNDAxMzBjZTNhNTQzZDVlOTdjYzA5ZTQ2MDcwMWE0OWEwIGxlZ2FjeS10cnVuaworMzg0NTcgNzdmYTMwZTdmMTJiMDZkMzZjNjhlMGVjMzUwODg1N2M2NjMzOTk3YyByZWxlYXNlMjQtbWFpbnQKKzM4NDU4IDYwN2M0OGI1ZWZkNzI2MTU1MGFiZDIxOWY5MWVhOWI2YjcyMGY0ZjQgbGVnYWN5LXRydW5rCiszODQ1OSA1YzI2MDg1MDQ5NjdhMmExNzg0YzNjNmQxNDMzZWJjYzhkZDM1NDAzIGxlZ2FjeS10cnVuaworMzg0NjAgY2E3YzE4ZWY4YmRjMTAyY2I2NDg0NTI1OGMxNjMwZjBmYmY3MjZiNSBsZWdhY3ktdHJ1bmsKKzM4NDYxIGNiNDdkNjIyYWExZTJmYzExOWZjYWRjYjQ5ZGIzMTkyZWEyM2FjOGQgcmVsZWFzZTI0LW1haW50CiszODQ2MiAwYTZlNzc5ZDM0N2Q2ZjE3NWUyOWRjY2MwN2NjNjEwNzFmZDBjOTg1IGxlZ2FjeS10cnVuaworMzg0NjMgODZhYjNhNzVmZjA4NmI5NmU0ZDdmYWIxY2NhMjZjNjE1MGE0YmM3NCByZWxlYXNlMjQtbWFpbnQKKzM4NDY0IGI5NGYyMjQ3Mzg4ZTkyYmQwZTlhMTczN2VlMDAwY2FmYzQ3ZTEzMzUgbGVnYWN5LXRydW5rCiszODQ2NSA5ZjE4M2EyNThiZWQwZWU5ZjYyYjNhNDA1M2YyNjA4MmI3NzQ0NmQ4IGxlZ2FjeS10cnVuaworMzg0NjYgN2U3ZTg2ZjQ1MjU1YTk1OTQ4MjBmYWRlNmJmNzlkZDRmZWQ0Zjc5NyByZWxlYXNlMjQtbWFpbnQKKzM4NDY3IGU5ZWMyY2UzNDBmZGM0NDIwZDM2MWY1MzgyZWJiZmMxNTEwOTNiZDcgbGVnYWN5LXRydW5rCiszODQ2OCA3MGNiMGMzZmU0YTc0NzVlMmY5ZTk3MjRlNGNiMzQ5YWZlY2RkYTBkIGxlZ2FjeS10cnVuaworMzg0NjkgYTg5OWQ2OTBmMjY0MDc0ZmViNWEwYmUzZTRlZjIwZTdkMmJkYTUwMCBsZWdhY3ktdHJ1bmsKKzM4NDcwIGZmM2RlZjc3YjEyOTVmMzMyNjk4YzZhMjM4MWEwYmIxOWFmY2M2MTEgbGVnYWN5LXRydW5rCiszODQ3MSAxYWUyYzNiNjZlNTdhMzQ2MzdmOWU0ODNhZWI3NDEyNmI2ZjcyYTAzIGxlZ2FjeS10cnVuaworMzg0NzIgZmE1MmYxZmZjMTYxMTU1NzUwNjkzMTA4OTVjMGQyNWRmOWM4NmM2ZiBsZWdhY3ktdHJ1bmsKKzM4NDczIDM3NmE3MWY4OTc5YmExZDU2M2M4ZDlhYzg1NjFiZmEwMzIxNmI3ZTQgbGVnYWN5LXRydW5rCiszODQ3NCAzMmI4OTYwNmYwY2RhMTdhZTY0ZWNjYTY0NWUxZTNiMTQ3Zjc2NGZlIHJlbGVhc2UyNC1tYWludAorMzg0NzUgN2Y3YzNkZmJhOTg1NjIwYzZjNDkwMDE3N2UxMjlkNDcyYWUzOTAwOCByZWxlYXNlMjQtbWFpbnQKKzM4NDc2IDFhOTg5ODNlNTk2MzBkY2MwYWVlODAzOTBjY2MzMTY5NGUxYWM5ZjIgbGVnYWN5LXRydW5rCiszODQ3NyA3ZmJhNWNjYzk2MWUxNGFkOGYxM2IzMGVhZTc1NjkyNTJiY2Y0NmIwIGxlZ2FjeS10cnVuaworMzg0NzggNjc5MzdhMzg1MmZlNDQ4MmVkMzZjOWNlYzA4OWMyZjg3M2Q5Y2RjMCByZWxlYXNlMjQtbWFpbnQKKzM4NDc5IDVlN2FkZWQzMjUxZWQyYmVkOWFmNWRmM2VmZTM1NjQzYjMxMjY2MzkgbGVnYWN5LXRydW5rCiszODQ4MCBkODA0YTUwYTIwYWI1Mjc5ZTcwOGVjYzI4ZjIyZTYyMGIwODYwOTU3IGxlZ2FjeS10cnVuaworMzg0ODEgODA5OGM3YzI3MDk3MWUyZDJhMzIwYjViYjY5OTBlOWYwNWZmOTgwYyByZWxlYXNlMjQtbWFpbnQKKzM4NDgyIDI0YTMzMzc0MWNlYzk5YTA5YzllOGU2NzQ1NzJjNjgwZTUxYjhjNTYgcmVsZWFzZTI0LW1haW50CiszODQ4MyA3ZGFlMWE4MWNlZDgzODA1ZjI4NjhkZmI2NDdmZmZkMWRlMzE4ZjBmIGxlZ2FjeS10cnVuaworMzg0ODQgNzc3MDNlZDU0M2ExMGYyZDFhYWEyY2I4ODM4OTViY2IwMzFlY2FkZSBsZWdhY3ktdHJ1bmsKKzM4NDg1IGQ0MzljNzQ4YjQ1NDUxY2RiNDc2MjczOGFkOTBhZGY3OWEyN2JkM2MgcmVsZWFzZTI0LW1haW50CiszODQ4NiA4YjRkZDJjMWMyYTA2M2YwM2I3MDBhNzQ4OGU0Zjk3ZmQwNzlmZTkwIGxlZ2FjeS10cnVuaworMzg0ODcgNGIxMjA3Y2IwMWVhNjZmY2M3MjRmYjY1N2NlNmNmNWIwMzM2YjZkNCBsZWdhY3ktdHJ1bmsKKzM4NDg4IDgxMzAzMGU0ZDdiMGExZGFjZGU0MjFhNDYzOWU2YjJkZDhjZGY2YjUgcmVsZWFzZTI0LW1haW50CiszODQ4OSBjNjBmZGU4YjAxMDZiMDk4OTJjNTQ0MjRkYjZlYWZmYzM3YTFiN2Q5IGxlZ2FjeS10cnVuaworMzg0OTAgN2M1NzMyNjUyYTIzY2JkNzFlOWJmNmRjYThiNWNlNTczMDA5ZDNlYSBsZWdhY3ktdHJ1bmsKKzM4NDkxIDYxOGNmMjRjMzI5Zjk5ZmQ1YjAxN2JiM2IwN2NhMzFhYmIzYzlhODcgbGVnYWN5LXRydW5rCiszODQ5MiAwN2NmMWExNjQwZGE0MTIzNDlkZjQ3MDc3YzhiMTI1M2JjMjMxM2U5IGxlZ2FjeS10cnVuaworMzg0OTMgYTRkMTM5NzRmNmViN2M0ZGY5MDEwNDEwMjAyNWI0ZTNiNDBkYmVhNyBsZWdhY3ktdHJ1bmsKKzM4NDk0IGFjNmRmYzY3Yzc3ZmY2ZDFkOGFjYTYxYzEzOWY2YWJjNmYxOGQ5NDAgbGVnYWN5LXRydW5rCiszODQ5NSBhMzZjNWZkMzBlMjEyN2FlMTJkZDUzOWY2Njk0Nzg3ZTkzYTFmMGUxIHJlbGVhc2UyNC1tYWludAorMzg0OTYgOWYwMjI3NmQ1NGNiNGVjMzJlYzM5YTUyODIxNGI5OTk1ZjIzNjBjNiBsZWdhY3ktdHJ1bmsKKzM4NDk3IDAzODZjYzFlZTk2NGU0ZDQ4Nzg0MjdlZTNhYWZjNzg3Y2YyZTFlMDUgYXN0LWJyYW5jaAorMzg0OTggZTBmNGViNjRkMDAzOTFlM2M0NmI1ZjI4OTA1OGIyOWZmMmZjYWNlYyBhc3QtYnJhbmNoCiszODQ5OSAyNjc2ZTA1YzAxZjIxYWE4NWNlMWNiZTVjN2Q1ZWI3ZWRkMDg4NWQ2IHJlbGVhc2UyNC1tYWludAorMzg1MDAgYzk5YWU4NjM1ZjNiNTRkYjg4MzkwNGQzYWJjZDczMGYxMjhiOGJmNiBsZWdhY3ktdHJ1bmsKKzM4NTAxIDBkZDE0NmZlZDlkZGEzY2UzZmI5YWNmOTUxZWQ4MzEyMTY1MTM1OTggbGVnYWN5LXRydW5rCiszODUwMiA1NTZmNmYxMDU2YThmNmQ1ZDAzYTI4ZWJmZjRiYzMzZjk3NDUzZTdiIGxlZ2FjeS10cnVuaworMzg1MDMgMWVkZWE0YzJiMDExYjUzYWZiYmI1M2M5M2M0MDIwMjliMzI5Y2M0NyBsZWdhY3ktdHJ1bmsKKzM4NTA0IDUxNmJiOGZkNzViNGJkNTc5ODFhY2YxYTc3ZmNjZTMzMTc4YmIwZmQgbGVnYWN5LXRydW5rCiszODUwNSA3NmM5YWI4NWY1YTg4NzQ1MjQ2N2ZiMjE1MzJlNGNkMTFmZjJmYTMzIGxlZ2FjeS10cnVuaworMzg1MDYgNWZkZTE3YjM1NDcyNTRiYWJhNjQ5OTlkMjEwMTllNjQyOTljZTVlMSBsZWdhY3ktdHJ1bmsKKzM4NTA3IGM1YTQ5OGMxMDcyMzU5OGI5YjRmMTk3NGM2YWVmY2U5YTE2ZTU5ZDkgbGVnYWN5LXRydW5rCiszODUwOCBmY2FjZjlkNGI4ZjBmYWViNzU2MmY5NmNlODY4YjE4MTU4NGY1NzNjIGxlZ2FjeS10cnVuaworMzg1MDkgZDI1OTk4NDk2MjA2NWZlNThiODc2ZjQ1NTgyMGVkZGQwYzA0NjM1YyBsZWdhY3ktdHJ1bmsKKzM4NTEwIDNlN2EyMGMyOTdhNjBlNmU3ZGRlNTAxYmFmYzlmOWU0MmUzZGI3MmEgcmVsZWFzZTI0LW1haW50CiszODUxMSAwODBkOGNmZWQ5ZDRhN2E1NGQ1Y2NiZWVjN2UwYWM1NjAyYjJiZTFjIGxlZ2FjeS10cnVuaworMzg1MTIgNjYwNDE5YmRiNGFlZjliYjVkZTI4NWM3NjVhZTZkZWUxNDJmMGM5NyBsZWdhY3ktdHJ1bmsKKzM4NTEzIDQxNmI1MzRlOWNjOTY4ZWZmZWJjYWYxNzU1YmU5ZTNjZmUzODJmNWQgbGVnYWN5LXRydW5rCiszODUxNCA3N2I1NzA4N2ZlNDVkYjI0NzE3OGYwZTIzNWU0MjZmN2U0ZDI4ZjkxIGxlZ2FjeS10cnVuaworMzg1MTUgNDMyOWExYTAwNDY5ZDE2M2NhNTg0YjdlMDgwMzExN2IzZTIwZGY1OSBhc3QtYnJhbmNoCiszODUxNiA4OWNmMjVlMzY3OWFlOTlhNDkwMmJhYzA1MDE1YmViODYyNzc3YjcwIGFzdC1icmFuY2gKKzM4NTE3IGQxYjM1YWYyOTI2MzBiNjA5N2NmNmIzYmEyMDMwNWRjMWVkZGViYzAgbGVnYWN5LXRydW5rCiszODUxOCBhMmI3Y2I3M2Q5YjFkNzBlYmI0ODM1M2Q2NGNjZWNjODIzNTdkOTU0IHJlbGVhc2UyNC1tYWludAorMzg1MTkgNWYyNjI5ODgxMWI3MTQyYTZmNzMwODY3OGQ2ZDcyYmZmODZjMTQ1NSBsZWdhY3ktdHJ1bmsKKzM4NTIwIDNkMGJiM2IwNWQzOWYwYmQxNGQ5ZjhjNjllMTc3NTE4NDFkNDc0YmYgbGVnYWN5LXRydW5rCiszODUyMSAxMTc2ZjFiYjRlMWFlYTJmZjUxODI3MjBjNDZhYmJmNjBjMWYxYWMxIGxlZ2FjeS10cnVuaworMzg1MjIgNGEwYzIwMmVlNzg5YTM3M2Y2NDdkZDAwOTM0ODY0ZWUyOTc5YjI3NyBsZWdhY3ktdHJ1bmsKKzM4NTIzIGQzY2U3YTk0NjE2ZTkxN2NmZWRiZTAwMzZiNGYxMGZiMWNiODA2ZjkgbGVnYWN5LXRydW5rCiszODUyNCA2MzZkNmQ0MzNiNjI2MzdhZWQ0ZWZiMThiMzA3MWJkNDMxMmQ3NjI0IGxlZ2FjeS10cnVuaworMzg1MjUgZmQ2ZDM1OWNhMjY2MjIxYjdhZWY5YTYzMjY2ZGY1YWVlZjIyMzcyZSBsZWdhY3ktdHJ1bmsKKzM4NTI2IGI1YTI1YzU2YTg1MjNkN2Y5NDhhYjA2NjkzZjk2YzkxMGM4NWExNjkgcmVsZWFzZTI0LW1haW50CiszODUyNyA2MDUwYWU4NDJjOGYxYzg4YjlhYWEyMzU2MjVlYzRkODNkOWQ1YmM1IGxlZ2FjeS10cnVuaworMzg1MjggYzUwNWNiYjI2Y2VkY2QwNTBmNDZkMGI3ZTUxYjViNDBmYmM0NTk1MSByZWxlYXNlMjQtbWFpbnQKKzM4NTI5IGZhM2NkZDRmOWNkMDE3YTdlZWQ5N2UxNTdmMjRjOGQ3ZTY3OWE5OGUgbGVnYWN5LXRydW5rCiszODUzMCBiNDMxNWU2N2VkZjUxMGI5MmY2YmIyM2U5OTU0YTIzNmE0YzNjNjQ4IGxlZ2FjeS10cnVuaworMzg1MzEgYTlmMTYxZTM2YmY5MDQxZWUwZGE4NjllMTlmNWE4ZTU0NWIxZTU0OSBsZWdhY3ktdHJ1bmsKKzM4NTMyIGQ0OGZhMGFmZGNiYWZkNTBlMTQzMzkyMWI1N2RjODI5ZWM2ZWQ0NDMgbGVnYWN5LXRydW5rCiszODUzMyAxM2E5NTBhMzYyNGJjYWEyYjRkMjBiMGQ0ZDRkOWY1OTY2ZjJkM2ZmIGxlZ2FjeS10cnVuaworMzg1MzQgMTFmY2RiYjI3OWRlOTJhZWZhZDg5M2Y2ZDYyMTcxMmY5ODdiYjdiYyBsZWdhY3ktdHJ1bmsKKzM4NTM1IGQ5OTI3YTY1ZjVmOTJlMjc2ZDkyMjg2ZTZjNDNkOTMxYzExMTZkZDggcmVsZWFzZTI0LW1haW50CiszODUzNiBjYWMzMWI0YjVlNzhkNGQyNTc4OWRhMzUwNTM4MWUwZGFkZjgzZjQ4IGxlZ2FjeS10cnVuaworMzg1MzcgODYxYmU5Y2QwNGQ3ZWNkNDhmYzNlYzQwY2Y3ZTRjZWFlODQ2NTA5MCByZWxlYXNlMjQtbWFpbnQKKzM4NTM4IDRhYWZiMWM5YTcwZDkwMGU4NzFlZWUzMTM0MDc3NTcxYjE1Y2Y4N2EgbGVnYWN5LXRydW5rCiszODUzOSBlNDhiNWE2MWQ4MGJkNmViZDU1ZmE4ZDFmZmJmYjk3YjYyYmMyZTFmIHJlbGVhc2UyNC1tYWludAorMzg1NDAgYTZkMjMxNTEwOWE0ZjJhYzlhYmY2ZGI4NDUxN2JjYTkzMjI1NzkwZSBsZWdhY3ktdHJ1bmsKKzM4NTQxIDJmZDliODViYTY1ZmRlZmNkNWYyZmYwZDhkMGNmZDUxY2Y0ZWFjMTggcmVsZWFzZTI0LW1haW50CiszODU0MiBlNjQyMjUyNWMyNDAzMTg5NWNkNDkxMWE3OTkwZWE5OGVkMGI0MGJiIGxlZ2FjeS10cnVuaworMzg1NDMgNzU1NjQ1MzBmNTBjMWVmYjQwNWRmYjkyNzY2OGNmYWU2NzkyZmUwMiByZWxlYXNlMjQtbWFpbnQKKzM4NTQ0IDkxOGJjNmQ1NmQyNmY2NjEyNWZmNTRmNjkyNGE1MWNjNzE3OWMzZjYgbGVnYWN5LXRydW5rCiszODU0NSA5ZmE3NjhhOThjNWNhMzYxYjgwOGMyNjJjYmE2ZjBlODcyMWZjOTE4IGxlZ2FjeS10cnVuaworMzg1NDYgYjQwNTg2MTI5YmIwODcyYjVlMGMwNGJjMTE3NDVlMjc5MDA2ZWU2OSBsZWdhY3ktdHJ1bmsKKzM4NTQ3IDlkNjA4NDE5Y2RmOGQ1MzZjZWU5NDU1ZDIxYWYzYTNlZTk0OWU1NGEgbGVnYWN5LXRydW5rCiszODU0OCAzNzg1NjEwZmY3NjMwMWY0ZGY5OWI2MWRjZWVmODYxNmE4ZjBiZWViIGxlZ2FjeS10cnVuaworMzg1NDkgNDYzMDBiMWFhMmY2ODI1ZmRmYzQxMmQzNzA5ODdhNjYzZWM4YTFmOCByZWxlYXNlMjQtbWFpbnQKKzM4NTUwIDQ4MTJmNmE3ZjczNTU2ODNiMjJiNjJhYzczYWIwY2E1YzgxNzE4ZWMgbGVnYWN5LXRydW5rCiszODU1MSA4YzM1NjNkMDhjNjIzZGVhOGNiZmM3OWMyOTU4YTc4MmZiOTg2NzljIGxlZ2FjeS10cnVuaworMzg1NTIgOWIzYTJjNDMwMmFhYzA2ZTA5ZTlhZTg1NmZhNDJlMzIxZmU3MWFlMCByZWxlYXNlMjQtbWFpbnQKKzM4NTUzIDBkNDEwOGQzYTNhOGI3N2RmZjU4ZTEzNTFiMGIxNmMzNGZkNTcwZTAgcmVsZWFzZTI0LW1haW50CiszODU1NCA0YzY2YzE3YzRiMjgwOWIzNDRlNWM3ZjRlZDI5NDcwNDE2ZDU4NDU4IGxlZ2FjeS10cnVuaworMzg1NTUgZGI3YTgzMTBiMTlhOTRkNjE3YTk1YWYwZmU0NzUxOTE0NmZmYWRiMyBsZWdhY3ktdHJ1bmsKKzM4NTU2IDA4NWJjMjdmOTJiNzUxOWFmMzM2YTgzZDYzNDMzMWY2ODA4NmZkMzMgbGVnYWN5LXRydW5rCiszODU1NyAwMGU0N2ViMTM2YjJjMDk1MTUxYmNiMjU3NGQzNzExMWYzMGVmZmZlIGxlZ2FjeS10cnVuaworMzg1NTggN2ExYThlYzZkYzUzNDRjMGQwMjNiMDM4N2E2N2EyZDllNmZiOGYzNCByZWxlYXNlMjQtbWFpbnQKKzM4NTU5IDhmMDQ1NjQyNTcxNTgxNTEwMWQ5MDE0NjUwMjA4YzZiNDIyMjE1NWEgbGVnYWN5LXRydW5rCiszODU2MCA0YWJmMjFiZTE3ZDM1NDE5NWMwOWEzNzMzMDkxM2VhN2EzNzA3MWRmIHJlbGVhc2UyNC1tYWludAorMzg1NjEgZTlmZmFkNmQ4ODIyOGVjODNkZDc5ZWU0ZDBkOWUxMzkzMjFkYjJjMiBsZWdhY3ktdHJ1bmsKKzM4NTYyIDUxYWZiNmU3NzQ3NDA4ZTZmZTk3MGUwNzdmMWFiMWVkNzdiOGIyMjEgbGVnYWN5LXRydW5rCiszODU2MyA4MTk4MjU4NGM2MWJjNTYyNDZmNTllNmI2MjVmNzZhYTkxNTVhOGM5IHJlbGVhc2UyNC1tYWludAorMzg1NjQgNDgxMzk3NjgzZWFjZWYwZTliM2E4MWE4NTBkZmY0OTYzMDhmMmRkYiBsZWdhY3ktdHJ1bmsKKzM4NTY1IGVkNmVjMDAwYTEzODg5N2U1YzE3ZTY1YjdjNTg1NDNjZDQ3ODg1ZTIgcmVsZWFzZTI0LW1haW50CiszODU2NiA5MDMwNDVhNzBjM2ViNjA0NWJkOGYwYWViY2M2ZmMwYzVlMjg2YTNmIHJlbGVhc2UyNC1tYWludAorMzg1NjcgMGM0MDgwM2U1ZTRkNDA4ZTJjN2YxNzJmYmExYzYyZmNlOWU4ZmMwOCBsZWdhY3ktdHJ1bmsKKzM4NTY4IGY4N2E4ZDBkZjEyNTJiYjkxNTQ4ZTFkNGJiMWVjMGJkNjliYzM2OTYgcmVsZWFzZTI0LW1haW50CiszODU2OSA0OWQ3YmIyZTk2ZDJmNWNiY2NlYTFlNzQzMjczMGU5NDNlMzBlZTdmIGxlZ2FjeS10cnVuaworMzg1NzAgYWUwNjFmYzYzMThkY2UwNzI5ZjNkOTVmNDI3MzUzNzllYzE4NDJlMSBsZWdhY3ktdHJ1bmsKKzM4NTcxIGVhYzAxY2JjYWFkYTliYmQ3YmZkNTUwM2MyYzA1NDE2OWQzNDBlYWUgcmVsZWFzZTI0LW1haW50CiszODU3MiAxYWMyNGU5MTgzZTUxNzdkNjA4MmE3NmNlNWYzZmE4MjdmMGI5YmFhIGxlZ2FjeS10cnVuaworMzg1NzMgNGVhOWRlMDFkMzExNTZkYTcyNzdmMmFhNzhmNmY5MTA5MWNjNTZlMSByZWxlYXNlMjQtbWFpbnQKKzM4NTc0IGMyYjU5MWQ3ZjI5ZWZkZjlmM2JjZTU2MGYxY2YxNGU2ZjhiNDJkMmYgcmVsZWFzZTI0LW1haW50CiszODU3NSAwNzI1ZjBkNWE1Yzc1ODhhZjA5NTUwZDRkNzA1ZTM0ODgyOTg4MTZkIGxlZ2FjeS10cnVuaworMzg1NzYgODE3ZTIyNTA2ZmE4ZjljOTZjZTVjZTliOGM5M2VlNTAzYmVkMDdlZSBsZWdhY3ktdHJ1bmsKKzM4NTc3IDYwNGZmOTg5MTVlYzgxODU0NmIyZGFjZWJmMDFmMjYzMDZkMjM0MjEgbGVnYWN5LXRydW5rCiszODU3OCA5ZjA3OGQ3NjY4MDQ0NDc3NDI0NzI1NjQ0YTljMWNjYWJmMmZjMmE1IGxlZ2FjeS10cnVuaworMzg1NzkgYzA1MTc4ZjQxZGIzOTA3ODViMzI3MTNkOTM2NjZhYzc1YzBiOTQ3OSBsZWdhY3ktdHJ1bmsKKzM4NTgwIGEwZDNmNzczNTQzZGIyODFhNzY0NjQ4N2U5MWNkMzI3Zjg1ZTQ3MTkgbGVnYWN5LXRydW5rCiszODU4MSA3OTMwMmU1MDkxMGVlY2UyMGYyMTQwNjUwYjQyMmYzZTY5YzhhYTBiIGxlZ2FjeS10cnVuaworMzg1ODIgYTkxYTQ4YzlkZTAwYzlhYmE5ZjJhNjZhZWJiZDgzMjU4NjBjMmExMSByZWxlYXNlMjQtbWFpbnQKKzM4NTgzIDQxYTljYTg2NjAzODIwMzY0NGJhZmFhNjQyMDhhMTE5MTUxNjM2ZjkgcmVsZWFzZTI0LW1haW50CiszODU4NCA4NDg1OWI0YTYyYzZlY2RlNTY2NTE4MDFjZjU0MjY1OTg5ZGQzNjE0IGxlZ2FjeS10cnVuaworMzg1ODUgNWQwZDc2ZDdiMzFmZDg4MmUxYjFlMjdlMDJiZGE4NGRhYTBlODA2MCByZWxlYXNlMjQtbWFpbnQKKzM4NTg2IDEzMDlmNjliNGRiYmRlOGI3YzU3MDY1MTMxOWQ0N2E1NDY4OWViOWUgbGVnYWN5LXRydW5rCiszODU4NyA3ZGU3NmYzNGIzZGEyZjA5Njg1YTFmNGY5MWRkOGU1N2UyYjczYWI1IGxlZ2FjeS10cnVuaworMzg1ODggZjRkYTQ2Yjk0NTcwODkyMjM1YjEwNjNlZjg5ZTNiODRjOTIxMzJmNCBhc3QtYnJhbmNoCiszODU4OSA5NWI2NmQ5ZGIyZWU2NTlhMGMyYTI5OWQzYzQxNGE1NjJlOTYwMGNhIGFzdC1icmFuY2gKKzM4NTkwIDMwOThlZmU0MmEwZjIwODZjNDQwNTg0Nzk0MzllNTQwNjg2YjVmMDggbGVnYWN5LXRydW5rCiszODU5MSA3ZDJjOGRhYTQwM2I2MTljZmY3MGM4ZjU3MGM2OGMzOTA1MDFlMGY1IGxlZ2FjeS10cnVuaworMzg1OTIgZDY4N2E4YTA5YTcyZDc0ZDY0OGQ0Yjg5MGNlNjdiYWE3YTE2MTU4NyBsZWdhY3ktdHJ1bmsKKzM4NTkzIDBkNDRkOTA3MWU5N2ZiYzEwNjM5Y2E2NDVmNGYzMzdiMWUxZWNhOTkgcmVsZWFzZTI0LW1haW50CiszODU5NCBmMWZhN2JiMmJmOTk5MGY0MGNhMDliYWJkZTczNDhhM2IwOTQxNjgxIHJlbGVhc2UyNC1tYWludAorMzg1OTUgNjk3YjllZWM1NWRhODJjNGQ3YTBiM2Q2ZDk2NTU2NmFiZTJkOWE0MyBsZWdhY3ktdHJ1bmsKKzM4NTk2IGQ1NDQ5ZjFmODQwZWNkNGUyNjUyZGQyNjI0ZTg5YjM0ZjhkNTBiZTEgcmVsZWFzZTI0LW1haW50CiszODU5NyBmMjkwMTIxODFjZjAxN2I4ZmJhNWZiOGU3OWFhMmEyNWYyNDczMDJmIGxlZ2FjeS10cnVuaworMzg1OTggZTVkMTkwMzFhMjk1ZDc3YmQ4NjAwYTQ1MjllZmE4NTZjNDNmOTUzNiByZWxlYXNlMjQtbWFpbnQKKzM4NTk5IDZiNjg3NWVkZjYwN2UzMmI1ODhjZmVkZWRlMDgxY2ZiZTJjZTA0ODggcmVsZWFzZTI0LW1haW50CiszODYwMCA4NDcxM2Q0YjE5YWYxMzZlNGE0YTNmNTZjMDVmODA3NTJlNjhiNWUwIGxlZ2FjeS10cnVuaworMzg2MDEgNDRmMTQ4YmZjNmI4ODE3NWFiNjcwNDNlNjZlZmNlOWZjZjVmMmI5MCByZWxlYXNlMjQtbWFpbnQKKzM4NjAyIGRkYzIyNzZjMjQ3ZTY4NmY4ZjFhMDg0ODFiZWNmYTZmYWJmM2NjMGEgbGVnYWN5LXRydW5rCiszODYwMyA1MTZmMTU1MjE1OTg0ZGIzYjZhNDk0YzQ4N2VjMTNiNTFkMTVkNjI1IGxlZ2FjeS10cnVuaworMzg2MDQgYjU0MzNkM2M2ZGM4ODQ3NmYyMjgwOWZiYWM0OGQ0MzE1NWM5MzVlMSByZWxlYXNlMjQtbWFpbnQKKzM4NjA1IDIxZTY1NzdmZjA3NGUxMTZkZjZhNzMyMzJlOGRhOWI2M2JkZTYxODEgbGVnYWN5LXRydW5rCiszODYwNiBiMTIyZmQ5M2E1YjUxNmUwMTkwZGZiMzYyZTdkMDA1OTMzMGQwZTk3IHJlbGVhc2UyNC1tYWludAorMzg2MDcgMTZjZWYwOWE4MzQyZGFjY2FmY2I4NTgxOWEyZGJmZTE3MTQxNDkzYiByZWxlYXNlMjQtbWFpbnQKKzM4NjA4IDk5MDZlNGRhMDg2ZmRjY2Y0NGM3ZWZlNTM5NTY0NTNhM2QyYzNjNjcgbGVnYWN5LXRydW5rCiszODYwOSA1MmI2NTFhOTc1MGQ1ZGIzNGNhMDIxZWE0YzNhZTdjNjQ2MTU2OTA5IHJlbGVhc2UyNC1tYWludAorMzg2MTAgNDMwMzU2ODM5ZDI4NTkxZTYyMmZhODI2ZmUzNmQ4NjBhYjgzNzhlYyBsZWdhY3ktdHJ1bmsKKzM4NjExIDJjNzMzNjdmNTRlZWVjODk2MjYzNWEwZDE2NjQwMDRmMzE4MDFiZTEgbGVnYWN5LXRydW5rCiszODYxMiAwMzQ5MjU3ZTFlZDUyZTFmNzkyZjg2MDU3MmE5MThiZjc2MzY4NzA1IHJlbGVhc2UyNC1tYWludAorMzg2MTMgYjE0MjdjZmYyZjgzMjExYjcwYWNhMzJjMTQ5OGE1M2M4OTQ1ZjNjOCByZWxlYXNlMjQtbWFpbnQKKzM4NjE0IGNmYWU0YjEyMDZmOGFjOWQ1MGIwYjRmNzYyZTY3NTQxMjMwZGE1NDMgcmVsZWFzZTI0LW1haW50CiszODYxNCAxMTk1ZjliYTM0MzkwOTdjYzViNWEzNjdlM2FlMWI0M2YxNTdiMjY0IHJlbGVhc2UyNC1tYWludAorMzg2MTYgMGJlMDVlYmExMTZkODE4NGQ4NmVhMWMzMjk4ODMzMWU2NGJlYmEyNCBsZWdhY3ktdHJ1bmsKKzM4NjE3IGVhMDI0YTRiMjliNmQxMTEyZjZiOTE3ZmRmZGYyNWRmYzU4MDM2OWQgcmVsZWFzZTI0LW1haW50CiszODYxOCAxYWZlZmNmMTRmMDYzOGMzYTU1OTM2OTEzZGQxZTY5NmRmNDY0ZGI1IGxlZ2FjeS10cnVuaworMzg2MTkgZTgzMzA5ZDQzYTgyZTk5YTc1MDFiNDk4N2IyNjAzMjA3YzQ5MDMzMSBsZWdhY3ktdHJ1bmsKKzM4NjIwIGQzNTVkYTFkN2M4ZmQxOWJiMjA3ZGIyY2FhM2M3ODA2MmY3NDgyOTAgbGVnYWN5LXRydW5rCiszODYyMSA2NWU4YWFjYjBlOTRiMTYyMzljZWQ4MmI0MjExMzAzNmMzOThiZmVmIGxlZ2FjeS10cnVuaworMzg2MjIgODFiNWExM2ZhMzhhMjQ5MDI3M2RhNjYxMWMwYzBkZWRiZWU4YjViMSBsZWdhY3ktdHJ1bmsKKzM4NjIzIDhkOGJhNjY3ODBlZDc3ODUwMmNlMzhiNjY3NGFlZTNmYjEwNDdhYTEgcmVsZWFzZTI0LW1haW50CiszODYyNCA0NTNkODllYWI3MzkzNmZiOTE1Zjk4OTU3OWM0YWIyYjJjM2YyYWY3IGxlZ2FjeS10cnVuaworMzg2MjUgMGM4MmE3ZWY5NTU0ZGFkOWZhYzg3OTI4OGUwYTc3ZTcyNTllNjNmMiByZWxlYXNlMjQtbWFpbnQKKzM4NjI2IDNiYjc1OTQ5ODc2N2Q2OTBmZTZmMmMyOWNiYmRjYzIzODI1ZTE1MzggbGVnYWN5LXRydW5rCiszODYyNyBmZGYyZjhmYWQ4ZDQ1NzM2Mzg2Y2EzODU2OWMwMDdjODJiYTk2MzA2IHJlbGVhc2UyNC1tYWludAorMzg2MjggNmY5YjM2ZmMxMTFjOWFmZGFkNDJmOTg1YzMxMzhmYzJmODJmYTk4MiByZWxlYXNlMjQtbWFpbnQKKzM4NjI5IGI4ZDkwNWNhOWU5OTk5NjZkNjc3YWU2NDU0NzY0YWZiYTNhNjA2MjUgbGVnYWN5LXRydW5rCiszODYzMCAzZDk3ZWIzYjdjZWNhZmY0NmZkZWUyNjkwMDVmNjdlZGE0OGM4ZTYzIGxlZ2FjeS10cnVuaworMzg2MzEgNzJiOWViNzQyMjYzMDdiZjJhYmI2YzAzOWQyYjY5YTJkYTZkMDAyNCBsZWdhY3ktdHJ1bmsKKzM4NjMyIDNmYTM0NzU5NTQ4NzIwYjZmOTYyNmZjM2E5NzllMGE1NDc5N2VhMWIgbGVnYWN5LXRydW5rCiszODYzMyA1MTgwY2ZjYzg3YmZlNzI2NDBlNTI4NmQwM2IxM2RjZDY3MDEyMzAxIHJlbGVhc2UyNC1tYWludAorMzg2MzQgZGZhMDk3Y2NiYzQ5ZGE0NTM3MDYxMTVlYjdhOTNkNDMyNjIyZGI4MSByZWxlYXNlMjQtbWFpbnQKKzM4NjM1IDIxOGE3NjI3NTkzMmVkNjhkMmE2Nzk3OGYyODg0MmY5YmY5Njc2MTQgbGVnYWN5LXRydW5rCiszODYzNiA2NzljMTYxMTU2MTMxYzlkNDU3MmEwNzY3MTAxODRkNzQ1NzRlODJkIGxlZ2FjeS10cnVuaworMzg2MzcgOTYyODAwZWUzMGVmNWY0MmEzMjVlYTYyYmU2MDNjYzRmNTBkNTMxZiByZWxlYXNlMjQtbWFpbnQKKzM4NjM4IDA0YmFhNjQ0ZmYwMDMzOTFkZWJmZGMyYTY3YTAyN2RiYTQyOTVhZTEgbGVnYWN5LXRydW5rCiszODYzOSAxMWI0MzUwYjU4NzkyZGE5Zjc4MTc2NTYwYzUzYzM2YzkwMDY5NmIwIHJlbGVhc2UyNC1tYWludAorMzg2NDAgZTUyNzgzMzFkOWE5MDU4ZmFkYTdhNGI0YTEwNmMyYzNlY2M1ZDg3MiBsZWdhY3ktdHJ1bmsKKzM4NjQxIDZmMzdkMTE2MDI2MTA5OTI4MzQ3YTcwYjZkZjc5MjAwNzE1MzBiYzggcmVsZWFzZTI0LW1haW50CiszODY0MiA3ZjdjYmRiMmM2MTEzN2RhY2M0YmI2ZWZmNmM0ODE4MTFlNDI5Yzc5IHJlbGVhc2UyNC1tYWludAorMzg2NDMgNWY4OTNhNGNkZTZmZDhkNmRkZThiMzM4Mjg3NzEzNzczMmFiMTM1NyBsZWdhY3ktdHJ1bmsKKzM4NjQ0IDUwNTA5ZWU5NjM2NGM3ZTg2MmI2YzAzN2ViZmU0MjhlMjM1ZWFjZjggbGVnYWN5LXRydW5rCiszODY0NSAzMTNlZDI4MTdkNjgwOWUzM2Q0NDdiOWMwODg3YTE1OGU3M2Y2ZjJjIGxlZ2FjeS10cnVuaworMzg2NDYgNGRiNWVhOTU3N2JhYmRjN2NiODRiZDk0Y2M4NzVmNWUwOGQ5ZjU2ZiByZWxlYXNlMjQtbWFpbnQKKzM4NjQ3IDA3NzQ1MTY2ZjU3MTNiYTU2YzFiOGFlODEyYjlhZjRmYmM2Mzg4OGUgbGVnYWN5LXRydW5rCiszODY0OCBmY2I1MDc0MTRjNDE0OGY0MWJlYTFlOWJkOTA2OGE2ZTAyZDc3ZjAzIHJlbGVhc2UyNC1tYWludAorMzg2NDkgMjNjYTI2MzA2NTdjNDg1MDljMzViNmIzODQ1YTZiMDRiNDBiNjcyNyBsZWdhY3ktdHJ1bmsKKzM4NjUwIDZhNjQ5ODE2MTI0YTdjZTQ1YTVhMTNjNjk4OTdhYzQxOTVjMTRhNzUgcmVsZWFzZTI0LW1haW50CiszODY1MSBiYzE1OTI5NmQyNTM1Njk2ZDA0MDg1MWFkMzhiOGU0YzAyOWY2ZWRmIGFzdC1icmFuY2gKKzM4NjUyIDUxMWU3YTkzYTFlOWYxMDVlNjQyMmNhYTkzNTUyODViNjg1ZjNhODkgcmVsZWFzZTI0LW1haW50CiszODY1MyA4NGViNWUxODU1NDc2MTY2YmYyOWVjN2QwZmI5ZmM5ODAxZmFmN2IwIHJlbGVhc2UyNC1tYWludAorMzg2NTMgMzMzY2YzMDM1NDNiNjgwZWM1ZTNmZGY3ZThjOTY2MWY5NDg4YTUwZSByZWxlYXNlMjQtbWFpbnQKKzM4NjU1IGJlYjFjYjc4NWUxZDU0MDZjYjAzNWY1MmQ1MmI0YTM0ZWNjNjdkODEgbGVnYWN5LXRydW5rCiszODY1NiA3ZDc0MDRhNmE1ZWEzZDI0Mzc3MTZjZWYxOWNiOWExNmJjNjI0M2YyIHJlbGVhc2UyNC1tYWludAorMzg2NTcgNzE5ZWIxMDJlYTQ0ODg0ZmZiOTk2MmNlZTQ1YTBiNWI1MDE5OTdmMSBsZWdhY3ktdHJ1bmsKKzM4NjU4IGZiMzlmNGVlYWVhNDc2Mjc1YzAxODRhNzA3MDVkOGMwYWRjM2Q3NzggbGVnYWN5LXRydW5rCiszODY1OSAyZWU1NzViOWI2MGU1ZDJhOTUwYWFkM2Q0NGI3OGFiNmZkNWI5OTEyIGxlZ2FjeS10cnVuaworMzg2NjAgZmRlNWExYzZhNDk3ZTU0NTZkNmNmNzU1ZjEzOTM0YTgwMWM5YWI2MyBsZWdhY3ktdHJ1bmsKKzM4NjYxIDlkODBlNjMwMDRjZGM2YzUxOTc4YjIyYWJjZjAyOWVjMzVkOTE2YjIgcmVsZWFzZTI0LW1haW50CiszODY2MiBhMzA1ZmVkY2ExYmZmZjUzNGI2YjY3NjU4ZGQ4MjI0NzI5MjZjZTExIHJlbGVhc2UyNC1tYWludAorMzg2NjMgMDRmYTEzMmM5MDIzZGVjMDRhZTgxY2MzNjkwNjA3ZDY0ZGNlZGE1MSByZWxlYXNlMjQtbWFpbnQKKzM4NjY0IDMzNmZlYTQwNmZjZjA2Yjg4ZjNmZmVhYjcxNTNmYzc1MWMyZTE0YmQgcmVsZWFzZTI0LW1haW50CiszODY2NSA0YmNlMmU1MDk2MWUxY2I4MGRkZmI5MmY4YTcyZDFiZTQxNGVmNjJiIGxlZ2FjeS10cnVuaworMzg2NjYgOTk3YjI1NWUxY2NjODhiZWY5MTgwY2FiOTA0ODczMjc3Njk3MTU0NyByZWxlYXNlMjQtbWFpbnQKKzM4NjY3IDc2MzAwYzVmYmNlYzhmNTg3OGY1ZjJiM2I3MTI2ZWJiYWZjYTM2MDkgbGVnYWN5LXRydW5rCiszODY2OCBmZGVlODdiNzAzN2EzYjYwMDNlYzgyZTIwZDBiYmEyZTFjZWU4ZWRlIGxlZ2FjeS10cnVuaworMzg2NjkgMGE2YTRjY2Y1Y2NmOWZkZDBhOWI2MzdlOTg5NGQ0M2YwM2FlZDZiNiBsZWdhY3ktdHJ1bmsKKzM4NjcwIDIzZTNkZmMwYzY0N2E4ZjUwZWI2YWMxOTQ1ZTJlNTVlOTJmN2MzMGQgbGVnYWN5LXRydW5rCiszODY3MSAyYjM4ZWQ2NmM2N2ZmNzY5ZTBmNDRkNmQyZDk0NGIzZGU5NjVmNTRiIGxlZ2FjeS10cnVuaworMzg2NzIgZGM2ZjMxNWYxZjdmMTVmOTZiOTVkMzRlOTk5ZjUwYWMzYWI1NTAwNSBsZWdhY3ktdHJ1bmsKKzM4NjczIDEzYzFjMzMxNmM2ZmRlZTQyYTRkZWFkZTZlNDRkOTE1NTU5N2JhMzYgYXN0LWJyYW5jaAorMzg2NzQgY2Y0MzAyYzIxZTAwM2RiOGE3M2NmNzFlMzIyNmUzZWY3YzIzNjNlNyBhc3QtYnJhbmNoCiszODY3NSA2ZDFlZTlkYjE1NDNlZjI0MDA2YzdkMmY3MmRjNmQ0ODVlNGIwN2U4IGFzdC1icmFuY2gKKzM4Njc2IDlmNDU0YWYxN2Y3YTM4ZmI3MjY1MDA2OTEzMGQ5ZDEzNGE5YjkwMzggbGVnYWN5LXRydW5rCiszODY3NyAzZTJlZTIxOTcyN2QxMDBkNjJjZmIxMzc0MTBiNTA0N2Y5YWYxZDcxIGxlZ2FjeS10cnVuaworMzg2NzggYjE0YzhlNjMxMGU3MTJlNzU2ZGMyMzY0OTc1MmEyNTJmYzdjNGJlMCBsZWdhY3ktdHJ1bmsKKzM4Njc5IDlhZWE5ZjhiZGIyYzQ3ODFkOWI0NWQ1NmM2NDQ3ZmMyZjczM2I0OTIgYXN0LWJyYW5jaAorMzg2ODAgMTA3ZTFlOGM4ZmM3ZTVhMGQxNDNiYjQyMzRmZjMxNWZlMGJiODdmNyBsZWdhY3ktdHJ1bmsKKzM4NjgxIDIzYjNlNzkwNmUwZjYzOGZhOGY5MmNiYzI0MTJjNTY2ZGUxZGEyOGYgcmVsZWFzZTI0LW1haW50CiszODY4MiBjMDZjOTBiZWE3ZGIwNzAzOWZlMmQ2YzljYWIyZTQwMTkwOWJkZGY1IHJlbGVhc2UyMy1tYWludAorMzg2ODMgYmJiNjBlMjY5Y2U4ZGM1MDg3Y2JiOGU0M2RmY2U2NzEwYzQ3OTBlOSBsZWdhY3ktdHJ1bmsKKzM4Njg0IDNkYTIxZmRjMmVlNzIyMzU1ZjA2MjdkZmVlOGFlMjBlZmRiMjMwODcgbGVnYWN5LXRydW5rCiszODY4NSBmM2Y5OWFjYWU1OWZmODcwZmExZDA0M2E0Y2MyYjAzNzEzZGI0ZjE2IGxlZ2FjeS10cnVuaworMzg2ODYgNGMxM2IwMTQ2YjNmNmJiNDI0NjkzNWE3NTNiNjI4NTA5MzgzNTcyNyBsZWdhY3ktdHJ1bmsKKzM4Njg3IDZkMjAwMGJhZjNkZTlhYWViNDY4ZDFhZmUxYjY3NGUwOTBjOWFmZDYgbGVnYWN5LXRydW5rCiszODY4OCBmMTNmMmNiZGY0ZGUyOWE1YTY5OTljYTAwYjM3YzZjNmYyYmNlNGQwIGxlZ2FjeS10cnVuaworMzg2ODkgMDg1MmQxOTZiNTkwNDNlZmQ5MWEzYzRlNDI4ZjIxNDE0YWJiYjM0OSBsZWdhY3ktdHJ1bmsKKzM4NjkwIDc5MzM1MzFkMDJiNDYyMTQyMzIwYjUzYWRkZWIzMjkyYWFhZWVkNzQgbGVnYWN5LXRydW5rCiszODY5MSA2OWUxMGU2MzU3YmQ3NmY2Y2Y1OWFhNmU3NTI4ZDkzZDE1ZTI2ZTBkIGxlZ2FjeS10cnVuaworMzg2OTIgY2ViZmJhYjAxN2E2ZTYzMzUwMjkzNjNkZWU0YzI0NTFiOTJhZTY2OSBsZWdhY3ktdHJ1bmsKKzM4NjkzIDcxOGIwYjVhNjQxOWY4ZTVhODAxZDM5YjY1YWIxY2U0MjAzMTVjZDUgbGVnYWN5LXRydW5rCiszODY5NCA5OWMxNmU0NGU1ZDQ2Zjc0NmM1ODY2NzhkZDA1ODhkMDc2NGMxY2E1IGxlZ2FjeS10cnVuaworMzg2OTUgZDU1ZGVhZTQzMTBkYzIzZDFhNzk4MTJmZDA1YzIyYjAxYTJkYjZhYiBsZWdhY3ktdHJ1bmsKKzM4Njk2IDhmMjFlYzMyNzRmMWM0NjliYjE2ZjgzZTAxYjZmOTVlMTc3YjM0ODcgYXN0LWJyYW5jaAorMzg2OTcgYjhmZjliYzAyM2U2NzU5YzdmYWY3NGRkNWJlNTNhZDEyNDE0OTZmMiBsZWdhY3ktdHJ1bmsKKzM4Njk4IDRiOWRmNDg1NmYzN2E2MzA2NTc3YmU1NjYwZTkwNDU2NDUwMzQ1YjkgbGVnYWN5LXRydW5rCiszODY5OSAyMzgwZjlkMWViYWI5NWVkNGIwYTQ5Y2U4MjlkYWZiMDg2OWQ0ZWY0IGxlZ2FjeS10cnVuaworMzg3MDAgNTU0N2Y5MDMwMTA5ODM0NWQyZjk5NTVlMWJhZDEyNzExMjlmZmM4YyBhc3QtYnJhbmNoCiszODcwMSA5MTUyM2NhZWUxODM5MDVlNjQ2ZDA2ZjlmYjQ5ZDBkNDFlMmY4M2ExIGFzdC1icmFuY2gKKzM4NzAyIGUwZjUxOTg1M2E5ZjI4MDg2MTBmOTNjMGUwOGFhNzY3ZGJkZTJmNDYgYXN0LWJyYW5jaAorMzg3MDMgNTdjNmE2YTgwMmEwODMxNjdjZWJiMjFkMmY2MmVlNWJjOWU5MmJiYyBsZWdhY3ktdHJ1bmsKKzM4NzA0IDNjN2IxOTY4OTQ3OWQ4YWM1ZDQyMWFmZjIxMTgxZjk0ZGExZmYyMDYgbGVnYWN5LXRydW5rCiszODcwNSA4ZmM4ZTdhNjA3MWM1MDQxNjkwM2M4NTI2M2E1NWFhZmVhMTMwNzE3IGxlZ2FjeS10cnVuaworMzg3MDYgNDllMzBjNmM5MWM4Y2U1YWZiZmFlYjJmYzQzN2EzNGViYjcwMDM2MyBsZWdhY3ktdHJ1bmsKKzM4NzA3IGIwMTYyMzZkZmJkOWRkMDJjYmU0Y2MzZTQ1NDQ1NDEyODQ2ZjE4YzAgbGVnYWN5LXRydW5rCiszODcwOCAyNmYzMjcyZDllMTEyZWExZWFhYzMwZDYzYjQyOGM3NjQ1MDQ4YzE0IHJlbGVhc2UyNC1tYWludAorMzg3MDkgYTQxMjYzODk1MGExM2FkMzQwZGE5N2E2NGJiYTcwMTAzOTk5ODZiNyBsZWdhY3ktdHJ1bmsKKzM4NzEwIDcyMWU2MGY0NTRmM2M4OTA2NTRjOTljN2QzMDM1MjdmNzhjOTc3MmEgcmVsZWFzZTI0LW1haW50CiszODcxMSAyOTU2ZGY4ZTBhNDA0NWMwZmYxM2M2ZGVhNDJkMmFmYmRjYWMxNzcwIGxlZ2FjeS10cnVuaworMzg3MTIgMDdhNGU4ZDhlYjY5MjIxMmQ5MGRkNDAzMjRlOTExYjA5ODAxNzk5ZSBsZWdhY3ktdHJ1bmsKKzM4NzEzIDRlYWFiMzg1NjZjOTRmZjg0OWY0MDBiOWNkNjhhMTc0OWFiZDdlYmQgbGVnYWN5LXRydW5rCiszODcxNCAwMWJhM2I0MDQzMWYyOWZlZDYyOWU3YTIxMDE4NTA2MmZhNDAxOGM0IGFzdC1icmFuY2gKKzM4NzE1IGYxYzYzMDMzMjFkNzBiYzM1ZWY1ZGY3ZGFkYzY1YzI3ZWMwNWI4NTggYXN0LWJyYW5jaAorMzg3MTYgZDY5ZmRlNDBjNzE5Yzk1YzZkNTA1ODRiMDYwN2E5NzJjODFiY2VmOSBhc3QtYnJhbmNoCiszODcxNyA3NjExZGYyMWE1OTAwOWQ1MzQwYzE3MTZiYTQxMjU3OTlhYmE5ZmM5IGFzdC1icmFuY2gKKzM4NzE4IDkzY2FhN2RlY2VlMzYwNjUwOTM0MWNiYzMxYWM1YWU0MGM2ZWQyMGYgYXN0LWJyYW5jaAorMzg3MTkgYWI4MWM4M2E5YWM2Y2NhYWFjNGUyN2VkMTZkODM2YThmM2ZhMjY2YiByZWxlYXNlMjQtbWFpbnQKKzM4NzIwIDY1M2NjMDlmZDkzMTAxNjIzMThkYWFkOTY1MDFiZTBiNzhhZWI5OTYgbGVnYWN5LXRydW5rCiszODcyMSA0N2M1ODAzYWFiNDU4MWI5ODc3YTEwZmJkYjg5ZWFiMzhlMzRkNGUzIGxlZ2FjeS10cnVuaworMzg3MjIgZWM4N2ExMTY0MGQwMDJiYzI2ZjBlMGE0YzQ0YzE3NDhmMjc3ZDg2MSByZWxlYXNlMjQtbWFpbnQKKzM4NzIzIGY5MmQ4NDVmODcwMzMzNGQ4OGZhMTU4YmUwZDdiZGJmMjliMDFiM2IgbGVnYWN5LXRydW5rCiszODcyNCBhNTBmZmU2NTkxMWIwZDQ5ODgwYTZhMTA1OGVmMDU4MzVlOWRkMjhjIHJlbGVhc2UyNC1tYWludAorMzg3MjUgMDBmZmRiZmNkNWE5Mjc4NjkyZWU2ZTcxMTUyZDU1NmJmYTBlMmE5NiBsZWdhY3ktdHJ1bmsKKzM4NzI2IDVjYWY4MGY1NWM4NjM4ZDhmOTU1MDc0N2RhYTY2NDVhYWE4MTk3YTEgcmVsZWFzZTI0LW1haW50CiszODcyNyA5ODVkZDdmMDY0MjA4MWVhOTRhMzRmOTk0ZTlhZGQ5ZjJmMWQzMDAyIHJlbGVhc2UyNC1tYWludAorMzg3MjggNGYwODM4YjY4YmJiZjFkZTI5ZDc2NmIzZGUzNjI1YzI5NjkxYWM1ZSBsZWdhY3ktdHJ1bmsKKzM4NzI5IGI3MmRmOGFlZTU2ZGE4ZjljZDI3NmU4NmNkYjAzZWU5YWRkMGYwOWEgbGVnYWN5LXRydW5rCiszODczMCAyODg5MmU2NTEyYmE2YjliNzMxOTc2MDZmM2YyZDhmNGQ5ODIzOGY3IHJlbGVhc2UyNC1tYWludAorMzg3MzEgMzNhOWU0MGE1OGQ1MmEwMjBjMmI1Mjg2ODA3OTQ4OTUzMjU4M2E4NSByZWxlYXNlMjQtbWFpbnQKKzM4NzMyIGFkMmRkODg0MTM3ZmY1NzAzOGQ0ZTA1MzY5YzEyODAxNmFiNmMxNzYgcmVsZWFzZTI0LW1haW50CiszODczMyBiYmEwMzlmMmUwNTI5YjE2YTNlZDU2MjhiMTJiY2IxNWNjY2Y4MmFkIHJlbGVhc2UyNC1tYWludAorMzg3MzQgN2NmZGE5ODk4ODYzOTY4MzFmNTJlM2E1ODI1MGI0ZWFmZDhjYWI4NiBsZWdhY3ktdHJ1bmsKKzM4NzM1IDNiY2RkNDQ2YTEzYjljYjc5ZDI4YzZlN2U4ZDRkM2IyYzhiYTk4NjggbGVnYWN5LXRydW5rCiszODczNiAzMDZmN2Q0ZGI1ZWZjY2FmMTc4NGU3ZmMzMmQ0M2Q4Y2RiYzc1ZmI3IHJlbGVhc2UyNC1tYWludAorMzg3MzcgYTZjNTg2MjY2ZGVhNThmYmMxNWEyMTI1ZDhkZWI3ZGViYmQ0MWI5NCBsZWdhY3ktdHJ1bmsKKzM4NzM4IDdlMmQ4ZTE3Y2YxNGE0MTFiMWU1NjA1NDhkNzgwZGNlZjJkZjM4YzYgbGVnYWN5LXRydW5rCiszODczOSAzMGIwMmM3ZWY4YmE2NzAyZWJmYTZlNmIyMTY5YjVkM2NkNTM4NWU5IHJlbGVhc2UyNC1tYWludAorMzg3MzkgZjkwNTRkMjM1ODcwMDI5YWZhMzNlZjk0NWJjYTdlY2U5OTYxNmMxMCByZWxlYXNlMjQtbWFpbnQKKzM4NzQxIGYzMTQyM2M0OTVkNjdmMDI0M2UxMzRhNWM3NTk5MmU1OGFmM2YzZDkgbGVnYWN5LXRydW5rCiszODc0MiBkZTEyMTg5OWQwMjE2MTYzNDBiZjg2NzQwOTdiNTdjZDFhM2RlNzMwIGxlZ2FjeS10cnVuaworMzg3NDMgNWRkYTFmOWU2MmE3MzZjZmI1ZDBiYjAxMGE0MDVjMTBiZGQzYmZjMyBsZWdhY3ktdHJ1bmsKKzM4NzQ0IDA2NThlNmVmZmFjNzA0OGYxZTk1MWU3NmRiYjkxYzIwNzgyZmFmZDEgbGVnYWN5LXRydW5rCiszODc0NSBjZDJjMDQ0ZjY5OWQ3YzhjY2VmNTExNmM4MTRhYWIxYmJiMTdlNmE0IGxlZ2FjeS10cnVuaworMzg3NDYgMTNkNWNhYTFlOWQwMmFhOTk5NzAzZTI4ZDMzNzViZThjNjAwOTY1OCBsZWdhY3ktdHJ1bmsKKzM4NzQ3IDUxYmE4Y2U4ZDkyYWZkZjAzYjY4YTgxMTAyZGNmZmMyYWIyNzViNDIgcmVsZWFzZTI0LW1haW50CiszODc0OCA1OGYzZjBkMDQ1ZjU0NWFkYjlhYzNmNjA4ZWZiNzY0MWFhNDM0ZTQ1IGxlZ2FjeS10cnVuaworMzg3NDkgODQ0NTMwNTA4NDc1NjdmODAxNzI5ODM1ZjFiZjViMzAwMTg3Y2YzNCByZWxlYXNlMjQtbWFpbnQKKzM4NzUwIGFlZjcxM2RlN2EyM2M2NDUxMTg4Y2VkYTkwNDZiYzllNzQ5YWJiZjMgcmVsZWFzZTI0LW1haW50CiszODc1MSBlYWQ1ZTczYWJiNTNjOThmM2M2OGE5ZDNiNjNkNTdjOTZiMzdmZDRhIHJlbGVhc2UyNC1tYWludAorMzg3NTIgNjNjNWQ2Y2UwNzYzNGQ2NjJlMTRlODc3ZDJiYmQ1ZGZiNjI3NGQ5OCBsZWdhY3ktdHJ1bmsKKzM4NzUzIDdlMWEzMTMzZmZmMmVhNTkyZjMyODE5OTdhNjgyNTE4ZjM5MGU4OGIgcmVsZWFzZTI0LW1haW50CiszODc1NCA2YWZmMjI2MDBlMTVhYTM2NmFmOGU2YTkxMDAxMWMwZWI2M2ZiMWQ1IHJlbGVhc2UyNC1tYWludAorMzg3NTUgMTFmZDI2MzdlNWJiNzQ0ZTNmZGRmZDQwYTRkYWRiYTJkYTIzN2RjYyByZWxlYXNlMjQtbWFpbnQKKzM4NzU2IGViNmMyOTE1YmFkZDM1YzM0OGViNzFhN2RkYzNjZWQ1OTBjZjU3MzkgcmVsZWFzZTI0LW1haW50CiszODc1NyBhOTUxMWMxNTEyNGJlNWE1ODAzMmViZWZjMTdkYjUwYWFhYWIwYTA5IHJlbGVhc2UyNC1tYWludAorMzg3NTggMmVhM2Q2OTE1MjA0MTAzZDk5Y2EwZGQwNTc1YTAzZTgxMzRmMmU5NCBsZWdhY3ktdHJ1bmsKKzM4NzU5IDM5MzZjZDdmMTZmMjU1ZjExYzljMjQzODlhZmQ3NDM5ZGMzYWMxM2IgbGVnYWN5LXRydW5rCiszODc2MCBiODVlODEwNDYwZWZjNWI0Mjc3MWE3NTg1ZTc1Y2I4NzQ0MzEyYmEyIHJlbGVhc2UyNC1tYWludAorMzg3NjEgZmU1MzFiNWRjZmQ2MDkyYjE0NDQwMDQzOGYzYTRlZGE3YjU5ZmMyMSBhc3QtYnJhbmNoCiszODc2MiA4MGNjNDRlYWJkZWUyNTlhMDA3NTAxOGMyNmE2M2RkNWZiYWViN2NhIGFzdC1icmFuY2gKKzM4NzYzIDZiMjFkYzk0MzhhZDVjMWVmOTk5NjI3ZjhmOGU1NDJlOWM2YWZmZDcgYXN0LWJyYW5jaAorMzg3NjQgY2E0ZDhiNGZiYjA1ZGIzMTA2OWE2ZTgwNzVhMTI3MTE5OWM4YzE1OSBhc3QtYnJhbmNoCiszODc2NSA1YzFlYmI1YWU1MjE0Mzk2ODE0MzgzOWFmN2RmOTEzYzk0NmIwM2E0IGFzdC1icmFuY2gKKzM4NzY2IDVlOGM4Y2IxMWU1YmRjMmYzZmI3MWNjNzZhYmEwZjE0NjcyYTY4ZGMgbGVnYWN5LXRydW5rCiszODc2NyBhYjU4MjJmNzUxNWE1ZmVjNTcyZjAzMmNlOTkxYjMyMzZjYjIyYWRiIHJlbGVhc2UyNC1tYWludAorMzg3NjggNzFmZDdlZTRiN2Y1MGJjOTMzZjcxMTQwODFhZjkzMmRlODhhYmQyZSBsZWdhY3ktdHJ1bmsKKzM4NzY5IDM0Y2RmYzVkZDdlYTM0ZTU3NjZkODg5OGUyNGUwMWIxYTgxNzNjMjUgbGVnYWN5LXRydW5rCiszODc3MCBiNDlkMzkxMTFjNDg2Y2VkODM5MWM3OWNhMzVmMjg1YWVjOGUxNmU3IGxlZ2FjeS10cnVuaworMzg3NzEgNTUzNWNlMGZmN2Y5ZjZmNWRlOTgwMTQyNjhlMDBiNTc1Zjg4MGYwMiBsZWdhY3ktdHJ1bmsKKzM4NzcyIGRhNDYwODQxYjYzY2I4M2Q2MTdiYWRmODhmYmRiMTJkOGRhZGFjOWYgcmVsZWFzZTI0LW1haW50CiszODc3MyBiYzlmYmMyM2NkNGE1OTkxOGRiMTI3MWIwODY0ZDQwYjRkZDk1NmEzIGxlZ2FjeS10cnVuaworMzg3NzQgYjY0OTk3M2QwOTYyZWIwN2I1ODliZWYzNDI1ZmFlNjNmZGQ5OTQzNSBsZWdhY3ktdHJ1bmsKKzM4Nzc1IDZkZDJkMTM2ZTg0NjYxYzA3ODM4ZDQyMzM5MzQxNDA1ZTliMmM0NTUgbGVnYWN5LXRydW5rCiszODc3NiBlNzYyZmVhNzhjYjIzNjNiZTE2MzVlZTc0NmZlYTJmOGM5MTRlNTRiIGxlZ2FjeS10cnVuaworMzg3NzcgMDE0M2Q5OTBkNjBjYzYwMTIwZTQ2YjRhMTEzMDdhOTczY2JjNmMwYyBsZWdhY3ktdHJ1bmsKKzM4Nzc4IDE4ZGM5MTU4MTYwZDViNzg3OTQ3YTMwYzc2MDU4ZjY2MDMzZTE3YTMgbGVnYWN5LXRydW5rCiszODc3OSA1YTUyMjIyNWM0ZGIzNTlmYjdkNTgzODVlMzRkYzJjMzM2MDlkYzE3IHJlbGVhc2UyNC1tYWludAorMzg3ODAgMjBiM2M3MjM1MDJhZDRiMzlmMzgzODFiOGU0NGMwYmVjYjFkOGNkZCBsZWdhY3ktdHJ1bmsKKzM4NzgxIGMyYTljM2ExODQ3NzZmYzYxNDI2NTZlNTAwYjIzY2U3MjNjZmEyZDcgcmVsZWFzZTI0LW1haW50CiszODc4MiA5YTdmNDZjNDI3NzMxNGY3NGQ1OWY2YmMxMjRkZmE0N2I2OTVkOTFjIGxlZ2FjeS10cnVuaworMzg3ODMgYjk5Njc0N2MwOGI2ODkxNTAyMDY1NDFkYjUyYzgzOWExZTFiYjQ5YiByZWxlYXNlMjQtbWFpbnQKKzM4Nzg0IGFmNWQ0ODAxNGIzZTYzNjU4NmE4NjZjNWQ1MTgwN2IxN2ExMmY3MmUgbGVnYWN5LXRydW5rCiszODc4NSA1YmM5MWJiMjQ0YjE5MDJmZjQzMWY3MTVjYmZiNmI3ZjQwYjY0MzY0IGxlZ2FjeS10cnVuaworMzg3ODYgNjRiYzVhOTIyZjU3OTFiNGI4NzVjZWMwZGFlN2IxODU3YTc1Nzc0NiBsZWdhY3ktdHJ1bmsKKzM4Nzg3IDE0M2NkYTVhOTM0ODFmZGYwNzMyZWY0Y2M2MDE4NGY2OTRmMDI1NWUgbGVnYWN5LXRydW5rCiszODc4OCAwMzYxMzA5N2I5Y2IzNDU0MTBmNTQ3ZjQ2MGIwNTU2YjYzNzAwMGJlIGxlZ2FjeS10cnVuaworMzg3ODkgNzkyMDFmODIwZWQwNGE5MGRhYWNkY2FkNDYxNmY1YWYwOWQ4ZTJiMiBsZWdhY3ktdHJ1bmsKKzM4NzkwIGFkNmFhMmVlY2I1NjliMTQ1MjYzZWU5ZDEwYmIzYTk0Y2YyODNmYmMgbGVnYWN5LXRydW5rCiszODc5MSAwNzZhN2M3ZmUyOGI4MTBiNTAwMDA1OWVkODBjM2QzYjkzM2Y5NWU4IGxlZ2FjeS10cnVuaworMzg3OTIgN2MyNzgwYzllNTFiZGYzM2E1ZWIxYTliZjgzNTQ2ZTUwN2IyMzEzZCBsZWdhY3ktdHJ1bmsKKzM4NzkzIDg2MmViYjYyMTM1NTEwOTI1OGFiOTQ5NGVlNzE3OTE0MjcyZGQ2YTYgbGVnYWN5LXRydW5rCiszODc5NCA5ZTY1OWNiNzI3ZWE2OGM5YTU0MzllOGM3OTY2NzUxNWQ5MmIyMDA4IGxlZ2FjeS10cnVuaworMzg3OTUgNDQ0NjhlZmI1MjVlZDU3ODZkYjk4ODI3ZDIxZDlhZTY3NGM5MWE5MSBsZWdhY3ktdHJ1bmsKKzM4Nzk2IDQ4YzcxZmYzODU3ODJjYzIyNzI1M2UyZDBjZTg1YzBiNDNlNmRhM2IgbGVnYWN5LXRydW5rCiszODc5NyAxOTI0YTA3ZjdmMjNhZjdlOWJjOWNiMTUxMDQ1N2Y3OTA2YTM4YzFmIGxlZ2FjeS10cnVuaworMzg3OTggNDMzZDczNzhkZmMyZmMyMzEwMGYwYTZlOTFiMWEzYjdhOTBjMTQ5OSBsZWdhY3ktdHJ1bmsKKzM4Nzk5IDYxZWM4Yjc5NTY0MWM0ZDJlYTU0MzJmM2NiY2EyN2VkYzE4MTdkNzYgbGVnYWN5LXRydW5rCiszODgwMCAzYmMyOGY2MzUxN2E0ZDAzYzM0NjA1YzAzMDM1ZGZlYjFlNjFmNWVkIHJlbGVhc2UyNC1tYWludAorMzg4MDEgZDUyMDc0ZDg5NGRmMjkyOTQ4NzY5MGRhYzI2MjYxZTM0NDZhNjA4MiBsZWdhY3ktdHJ1bmsKKzM4ODAyIGZhZDFlOGUwOTQ1NmQwZDUxZWVjYzQ5NTZlNDA0MTU1ZTdkNWEzZjUgbGVnYWN5LXRydW5rCiszODgwMyBmYmNiMWRhNDgwZGQ0YjFhZjJiMTdkNzcxZWQ3YTUxOTc1YzVlMTc1IHJlbGVhc2UyNC1tYWludAorMzg4MDQgMWFjOTE0ZDNiZGMzOTQ4ZDM0NWU1NmJiNzhjOTk0Y2QyNWRjZWFiZCBsZWdhY3ktdHJ1bmsKKzM4ODA1IGRhZDJiNjIwNDk3NDU1NTllZjhkNjgwMWJjNWY4YTMzMTRhZTgyNzQgcmVsZWFzZTI0LW1haW50CiszODgwNiAzNGY5YjJhZGFlMmM2YmZiOTU5YWRhZTM4NGE2ODdhMDJjMjg3Y2UzIGxlZ2FjeS10cnVuaworMzg4MDcgMzhiNjU0ODM2OWZhZTg1YzJlOThmMDc1Y2YyMDliN2Q3YjRjY2Y3YiBsZWdhY3ktdHJ1bmsKKzM4ODA4IGNkM2I5NTI3MDhhZjBmOWFiZTg4MDliNjk0OTQwOGNkMGNhYTBmMGMgYXN0LWJyYW5jaAorMzg4MDkgNGU2MjllYmQwZTNlNTdiMGY3OTc0N2QwOTZmZDIzYmZlNDQ5ODA3MCBsZWdhY3ktdHJ1bmsKKzM4ODEwIDAyMGVkNjcxYWE2MjE1ZWE5MTE2MmZlNTY3MWY0ZGE3ZjJkOTFlMjYgcmVsZWFzZTI0LW1haW50CiszODgxMSBkN2EyMTE3ZmNhNDI1MzUwZTI4OGUxNTE2NzEzNjU0MDJiZmI0ZGFiIGFzdC1icmFuY2gKKzM4ODEyIGM2MDcyOWE1NzkzMjVmNDMxZmQ0MzVkYjJmYTA0MmZiNjIyNzUyYmMgYXN0LWJyYW5jaAorMzg4MTMgOGU2Y2Q1MDBjOGZiNWE1NDA4MDdiZjczMzQzMmUwNDczODU4YmNmMiBsZWdhY3ktdHJ1bmsKKzM4ODE0IGZjNDQyYzJlYjBjZjZkYmQ4YWRhMWRiMTVlMTdiZmRkODY3ZTM1YTggbGVnYWN5LXRydW5rCiszODgxNSA5ODZkNDZjNGZhZWIyMjkwOThjNzYyOGU5MGMwZTc4YTYzM2Y3MDlhIGFzdC1icmFuY2gKKzM4ODE2IGM4YWZkZDkyNzE1YzMyNzc1MTQzNzdlMzJmMTBkN2Q0NTE5NDIwMTUgYXN0LWJyYW5jaAorMzg4MTcgNjA4MzBhZDYyNzVlMmM4MDBlNjY3N2E0NDdlYmI5NjlhODFiZjIyZiByZWxlYXNlMjQtbWFpbnQKKzM4ODE4IGE5OWVlMjUwZTEwYzFjNTYzM2I4YzlkMDczN2I3MzI0MTMyNDIyOGUgYXN0LWJyYW5jaAorMzg4MTkgMzBmMzdjMGUxNTkyNTZjOWM4MzY2MWNmYzUzOWQxMTcwMmJiNjRmZCBhc3QtYnJhbmNoCiszODgyMCBhOTZiNTAxNDk4YTgwOGYwMjJjZWI4M2YwYTZhNjAyZTkzZDUyMGM3IGFzdC1icmFuY2gKKzM4ODIxIDVjNjBjYmI2NTMzMGNmYWE1NzhiMDU0NGU5YzFkMzE4ZGQxZDRiNGYgbGVnYWN5LXRydW5rCiszODgyMiA3MjY3ZmM0MGFkYWMxNTNiNzgzZTM3MzcyMGIxYjgzODg4N2M0ZjhjIGxlZ2FjeS10cnVuaworMzg4MjMgZDQzNWQyMTRhNTkyNDE0NTIwN2NkNWI0MTIyNTIxY2VhMmVkNDZhOCByZWxlYXNlMjQtbWFpbnQKKzM4ODI0IDg3NzE5YWU5Mjg4Y2VkYmI5OTgzZWRlNTFiY2M2NTFiZDE0ZDNkODQgbGVnYWN5LXRydW5rCiszODgyNSAwZjMwNjFmNDlhOWU4OWFiNjhmODBjYThhOTgxOTQ5Y2Y5NDU5MDA1IGxlZ2FjeS10cnVuaworMzg4MjYgYWY1OTBmNjIyYzBiYzNiZTZmZTI5MjEzMmViMjY0OTQ5NDFjNzg2ZiBhc3QtYnJhbmNoCiszODgyNyBkNGZmYzc3MWU5ZmY5Njg4ZGM0MTYyNGQ1MDY1OTZlNDQ0ZGJkZTkyIGFzdC1icmFuY2gKKzM4ODI4IGI0NzdjNGQ3YTIwYzFhNjgyMGMxN2NiOTI4MzRiMGU2MDFiYjk4NWYgcmVsZWFzZTI0LW1haW50CiszODgyOSBjNGVhMTdjZjUyMTExNTY0M2YxZTNkOTI2NGNmYWRhYjE2OTlhNWU2IHJlbGVhc2UyNC1tYWludAorMzg4MzAgOGIwM2IwOTE0MWQyODcxNzFmMWU5NjNmMDZkNjdjZDg3MTYyYzI4OCBsZWdhY3ktdHJ1bmsKKzM4ODMxIGExMzA5NmI4NTk4YjlhNjdkYjUzNjAyMjY3MDU4YjdlZThhNjg3ZGMgbGVnYWN5LXRydW5rCiszODgzMiA2YmRjMzQyNmQ0MTEzZjEyNWUwYmNhNDllMDExMTg3NGU1NWEyZjgxIHJlbGVhc2UyNC1tYWludAorMzg4MzMgZjllMzFkYjZjNzAzNjAzNmVhNWJjMzZmNDQxNzk0MGI5NDNmNTJjOCBhc3QtYnJhbmNoCiszODgzNCBmYmIyZjNiYjhjY2NkMTVmNDFlODk2MGM2OWQxYmNhZTlkNTY5YzE5IGFzdC1icmFuY2gKKzM4ODM1IDI4MDRhYTA0MzhjYzhkMzZmYzNkZTFjODlkMjBmOWUxYTUzZjMwOTAgbGVnYWN5LXRydW5rCiszODgzNiBhZTI1ZDQ1Zjg5ODc2MzU0YmY4NDMyNTZmZTM3ZmI2ZWQ3MzFlOTVjIGxlZ2FjeS10cnVuaworMzg4MzcgNjdhODliNDNkY2M3MjNhNTViOGYzMzZiNjNjYzRjMTFiZTA3MmMzOSBsZWdhY3ktdHJ1bmsKKzM4ODM4IDRjOGU1MjQzY2E0MjUzMWU0MzhmOWIxZTA5MDI0NWVlOTcwYTgzMzMgbGVnYWN5LXRydW5rCiszODgzOSBkMzRiZGVkMzE5YWFlNWNmZmY0MGI5YWNiM2NmOWVhZDViN2QzMThlIGxlZ2FjeS10cnVuaworMzg4NDAgYmMxMjNiOWNlZjdmYTk2OWM3YjAyMjlhMWYxZTIzYWI2NGJhM2U2MiBsZWdhY3ktdHJ1bmsKKzM4ODQxIGM2NmE3ZmJlMTZjZjllNTFjOWIxMTA0OTAzMmM1NjQ5MDBkYWE1YzIgbGVnYWN5LXRydW5rCiszODg0MiAxMzMxYzc3OTk2NDA5MzYyZGRjN2E2OTQ2MTQ4MDBlOWIwMWViNDdhIGxlZ2FjeS10cnVuaworMzg4NDMgN2Y3MjEwOWRmYjRmYWZjNzhlMjExM2EyZDI2NGFkOTI1ZTg4MzE4ZiByZWxlYXNlMjQtbWFpbnQKKzM4ODQ0IGQwNTVmOTRkMDkzNmE2OTBmMjFmMWQ2ZWE3NTEzNmQ3NjIxMmE1OTggcmVsZWFzZTIzLW1haW50CiszODg0NSA5ODU3ZGFhMjI4MDdiNzM5YmIwNWE5ZWRjNTZjYzJlNjJkOTNmNzI1IHJlbGVhc2UyNC1tYWludAorMzg4NDYgMzU4MTg0MGM4MmU3MDFiNGI0MWRhMzkwYzU5ZWZmNDQyNzBlY2M4MyBhc3QtYnJhbmNoCiszODg0NyAwOGUyMGU5Yzc2ZmJmM2VlMzdkOGFhMTgzMWMxYjViYjZlZGI2OTE5IGxlZ2FjeS10cnVuaworMzg4NDggMjk0ZGFiY2IzNzliNTFiZTdjYzQxYWMyMzFlMGIxMjcyNWViZTIyZiBsZWdhY3ktdHJ1bmsKKzM4ODQ5IDlhMWIxZTFhZTY1M2ZjOTU2MzEzNDczMjJhYjRmN2I1OWMzNDU1N2QgbGVnYWN5LXRydW5rCiszODg1MCA0OWM2ZGNlZDA4YzIxZjQ0M2I2YTU0MTQxZWRmMWFmMTY2YjM3MDk2IGFzdC1icmFuY2gKKzM4ODUxIGMxYThjMmQ3ZTUyOGJkYjc5NzBmNTJkNTgwNDhhYzkyNWU1YzdlYzQgbGVnYWN5LXRydW5rCiszODg1MiBhYWVhYjI0OWM4NmFkMzI3ZWYxMjcyYzMwZmY3YjA1NDg2OThkMTU3IHJlbGVhc2UyNC1tYWludAorMzg4NTMgZWM5N2U0YzM3MDU2M2FmOTdkMjY0ODg0NDY2OTVmMzk2ZTYwODQ2OCBsZWdhY3ktdHJ1bmsKKzM4ODU0IDVjY2M4Nzc3Y2VhMjcxNTc5NmUzM2QyNmM2MTFhYjhmNjQxNDExYmUgcmVsZWFzZTI0LW1haW50CiszODg1NSBhNTE4NWFjMWU0ZWM2Y2FmYzdkMmU1NDgyOGU3NTI2MzAzYzNhZjE5IGFzdC1icmFuY2gKKzM4ODU2IDEwYWYxNjU4M2I3NTU1ODljYzBmNDYyNGY3NGIyOWI0MDMwYjBkNmYgbGVnYWN5LXRydW5rCiszODg1NyBkYWJhODVlZjY1NGE0OWFiY2FiMGExNDc2ZGIyMjM0ZjM0NzRlNmM5IHJlbGVhc2UyNC1tYWludAorMzg4NTggYzBiNGRlNzQxYjM4M2RmYzM4NWRhODU2M2RjMWI2Yjc5YTYxMDFiMyByZWxlYXNlMjMtbWFpbnQKKzM4ODYwIGExMjkzZWU2ZTFkYjlhOTRjOGZhZTkyZTIxZTZhYjViYzYzODRhYWUgbGVnYWN5LXRydW5rCiszODg2MSAzYzY3OWQwMDg3OWViYjFiNTEzYjE4ZWY2YWViMTQxMmNkNDIwZjc3IGxlZ2FjeS10cnVuaworMzg4NjIgNDc1ZjhhZGNiMDMyOTQwZTZmNjZlNDA3ZDE1Y2VlYzQyNzgxNDc3YiByZWxlYXNlMjQtbWFpbnQKKzM4ODYzIDcyODdiNDExNDVhZTM3NmEwZmNlYTcwMTIyMTc2MDVhZWI3MDY3NjcgbGVnYWN5LXRydW5rCiszODg2NCAyYzc0OThjMmFlNzA3ZmRhMzcyY2Q3NDRkZDVmMmZkYTllOGQ4NjJlIGxlZ2FjeS10cnVuaworMzg4NjUgNzRjMTJjMWYzNjkyOTQ2MTkzNTg0Mzg0ZWI3M2IyMzhmN2JiZjlmNSBsZWdhY3ktdHJ1bmsKKzM4ODY2IDlmZTc4MDFmYzlhNGEyMTg5M2E5Y2E0NmUzMjI3ZTQ0ZWUxNWEzZTkgbGVnYWN5LXRydW5rCiszODg2NyBhMTcwMDFmOGUxYjRlYjQxMWQ0MWNhMmVhNWM0MTkyYmRjMTI5ZmM5IGxlZ2FjeS10cnVuaworMzg4NjggOWM5MTcyYmUxZjY5NzVlYmI1YjQyNDI0NmExN2I0ZTk0MWYwNDE2MCByZWxlYXNlMjQtbWFpbnQKKzM4ODY5IGU0ZTBjZmYxNmJjN2U5N2I5NzQyZTdjYzNmZjU4ODhjZGMxZjk5NDYgbGVnYWN5LXRydW5rCiszODg3MCA3NWY1MTk2MTA5N2I5ZDk3NThkMDQxODM5NTY3ODUyNjA4YjQ0ZmI4IGxlZ2FjeS10cnVuaworMzg4NzEgMWU3YTZhNWMzNjE0M2U0Y2Y2OWU5NjdiNjNiZGUzYzNjYzNkYzQ4YiByZWxlYXNlMjQtbWFpbnQKKzM4ODcyIGIxMTYzMzlkZGYyNzg1ZjM0MTE3MGY4YmQ5NWUzNzlmYjBiYThhYjcgbGVnYWN5LXRydW5rCiszODg3MyAzNjU4YTdlMTFjMTQ4ZDgzYzA4YWI4M2YwOWEzYjVlYzBlZDcwNzk1IHJlbGVhc2UyNC1tYWludAorMzg4NzQgYWU1ZjI3NDQ2ZjgxOTI0NzUzZGRkZTFiYjJhNDEwM2JmZjZmODYwNCBsZWdhY3ktdHJ1bmsKKzM4ODc1IGYzMzAwNzg2NDI0M2YwOTYwNjY4OTE2MDc4ZTgwMGM0Y2E1MDU2YzYgcmVsZWFzZTI0LW1haW50CiszODg3NiA5MzM5Yzk5YTI5ODI4MTA3YTdhYzkzZWZhODJmNGNkY2FjMGI1NGUwIGxlZ2FjeS10cnVuaworMzg4NzcgNDA0MDg4NTAzYTc4MDI5NmExMWQyZDEyMTA3MzM0OTAyOTFjZmZhNyBsZWdhY3ktdHJ1bmsKKzM4ODc4IDM3NjdjZGFhNjcyODI0OGNhZWVhMTZlOTRkMjM2ODU0ZGE3MWZlNGMgbGVnYWN5LXRydW5rCiszODg3OSBjOTFlNWUzMWM1ZmYxYzJhZmJiMGM3Zjc1ODM2ZDA3MDk2NWFlYTI2IGxlZ2FjeS10cnVuaworMzg4ODAgNmJhMjkzYjcxMTViNzllZDIxZTljNzYwMzgxNTliZDZlMDcyMTcyYSBsZWdhY3ktdHJ1bmsKKzM4ODgxIDgwZmIyODkxYjMzYmZjYjExM2IwYzQzMzgyNTk3Mjk1ZDc1NTY3ZDYgbGVnYWN5LXRydW5rCiszODg4MiA0YTMzYzU4YzMxOWMwOGI4NjE4M2E1ZWE5MjE4YzgwNGY3OTNiMzk4IGxlZ2FjeS10cnVuaworMzg4ODMgMDQ3NDM0YWNiNWE5MTlkMzY0MDYxYTY2ODkzNzdlMjY2NzM5ZGUzYiBsZWdhY3ktdHJ1bmsKKzM4ODg0IDUwYmVkNjc4ZWRkYTJkN2YyMDgyYjZjODM2NTU3YWEyMGE1YTEyYTEgbGVnYWN5LXRydW5rCiszODg4NSAxZWE4MDc3NjkzMjkyZDAxNzBlMzY1YWM5ZWJiNzAzZDc4MGYxZmU3IHJlbGVhc2UyNC1tYWludAorMzg4ODYgZjZhZjk0MzAxZWJjMjc1MTkzZGJlMDQ5Y2NiYWIyYTM0YTkwZGRlNiBsZWdhY3ktdHJ1bmsKKzM4ODg3IDE0NWMwM2E4NWVhODM4NzI1MWUwYzA5NTMzODdhMzhkYjZlZjQyZDkgcmVsZWFzZTI0LW1haW50CiszODg4OCA5MzYyOTc3MGE5M2Y0Njc5ZDRkNmE3Yjk0ODIzMmI2ZDI2NzYzYzk2IGxlZ2FjeS10cnVuaworMzg4ODkgODZmNGIxODE3Y2FhNjljNmFhMGM1NDE0MzljYjZlNDZiMDY2MWEzNiBsZWdhY3ktdHJ1bmsKKzM4ODkwIDY3MmU1ZjY1MTcyYzJmMTY5YTFiZDQ4NjQxZTNjNDc5YmM2ZWI4MzkgcmVsZWFzZTI0LW1haW50CiszODg5MSBkNDUxNTU0Nzk5NzY2NmMwYWY4ZWNmMmJlMDgzYzRlMGM2Y2Y0ZmI3IHJlbGVhc2UyNC1tYWludAorMzg4OTIgMDkwNTgxMmRmNGE1ZjE0OTI1ZDUxMTdkNDJiMjk3YzJlYjE2ZTI0NiBsZWdhY3ktdHJ1bmsKKzM4ODkzIDFkZDhhMGQ2NDQzMjFjYmQwM2U1OGFmNDk2NzdmNTIwODFiZGNhZWMgbGVnYWN5LXRydW5rCiszODg5NCA5MTY1MTY5ODEyNjEwNjFmZTA2NTJlYzQ2ZDY2MWU1ZmUzYmMyMTY0IGxlZ2FjeS10cnVuaworMzg4OTUgMzhkMDRlZDAyOGQxZWY1YWZmNTMxMTNhMzIzYWM4ZTA3OGVkZmM5MSBsZWdhY3ktdHJ1bmsKKzM4ODk2IDVlNTExZGRlZjQ4YjJkYjVkNmI5MGQzYmMwOTk4NTg3ZTFjZDVjODUgcmVsZWFzZTI0LW1haW50CiszODg5NyAxODczZThhZjVhOGFjMjE1NGQ1MmFmMDU4Mzc1ZjZmYzc2NGExNWI4IGxlZ2FjeS10cnVuaworMzg4OTggM2NhYmE4MDcyMDRiYmM4ODBiZmI1ZjE2NWU0ZDY5ZWIzZDlmMThjOCBsZWdhY3ktdHJ1bmsKKzM4ODk5IDBiMDFlZTg2Y2NmZDg4ZmJmOWZmNTUyMTBlYWEyMGZiZmZkNjIyM2QgbGVnYWN5LXRydW5rCiszODkwMCBhMjkxYWQ5YWE2YTEwYzAxODFhOGE4MTViMzk2NzcwMjBkNzFjZjdjIHJlbGVhc2UyNC1tYWludAorMzg5MDEgOWEwN2Y2ZDQ4MTZhYjFjZGIxOGYzYzE1MmM0Mjg5NjM3YTk1ZDQzYiByZWxlYXNlMjMtbWFpbnQKKzM4OTAyIDE4NGYxMGUxMTZmZmY5NDM1NTFlNWVmNWFmYjI3OTI0OWIzYzA0NTYgbGVnYWN5LXRydW5rCiszODkwMyBlZjkzMGNhZTYzYThlMjFiZTUyZDk5YjI3NGFhYTIwMDU2ZmRkZGQyIGxlZ2FjeS10cnVuaworMzg5MDQgNjZlMDQxNGNkZmE2YWIwODhjMjllNTcwNjZmZWNhYWZiMTQ0YThjYiByZWxlYXNlMjQtbWFpbnQKKzM4OTA1IDE2OTlkYzUxYTViNTc2OWM2NTk4NWVkZDdhOGUwMDQxZWIyYmE3OTMgbGVnYWN5LXRydW5rCiszODkwNiBiMTQxZDU3YzRmY2E5NmMwMTg1NGE0ZDk3YjZhN2VlNzY3Y2MzNDcyIHJlbGVhc2UyNC1tYWludAorMzg5MDcgOTg1NDQ3MmI5MjFiYTQ3YjE3YTk2NjM5NTg4NGMxYTE0MDM3Yzg1OCBsZWdhY3ktdHJ1bmsKKzM4OTA4IGVmMTg0NTYyZThlMDNkZTk2MWIxODc2YWJhOGU5YmY2MjAyYTJlNDYgbGVnYWN5LXRydW5rCiszODkwOSBjMDk1ODg4ZmM1NDNjODBjOTUwYzAzMGRjZjkxMGZiM2QyNDlmOWQ3IHJlbGVhc2UyNC1tYWludAorMzg5MTAgYjMxNzM2ZjYyNWJhN2Y5Yzc1MjgwZDUxNTMxYjg2NzEzMGQ1NDVlNiBhc3QtYnJhbmNoCiszODkxMSAwMmYxM2UwMGUyZWQxMzAzNTg4ZWE4ZDc5ZTdmYmY5ZDNjMTMzZmJhIGFzdC1icmFuY2gKKzM4OTEyIDhiMDVhNDczMmNmMzYxYTM4NzUzZTA5YTA0ZGRmOWJhNzIwNDE5NmYgbGVnYWN5LXRydW5rCiszODkxMyAwMGNkMzUwY2Y3YmYwYzYyZDNmZTJlZDFjMGVjYzZiYmQ2Y2JlMmY5IGxlZ2FjeS10cnVuaworMzg5MTQgYzBlYWQyOTE4Y2Y3NDU0MDI0MWNmY2MxYzlkZTM0NjVhOTRjZThjMSBsZWdhY3ktdHJ1bmsKKzM4OTE1IGY3MTNlOGFiZjE0ZTNjYTYyM2Y5MmM5ODg2ZDRmZThkYzU3Y2ZmNDAgbGVnYWN5LXRydW5rCiszODkxNiBhMmIyMjI3NzczZTdmZTk0YjczODQzMjZjMjNkOTlhM2MyZDFiNTIxIHJlbGVhc2UyNC1tYWludAorMzg5MTcgYjQyM2I0MjdlMTdlOGQ2MWIxZWFmNjBkMTM4ZjQxNTQ0YjVhMjBlOSBsZWdhY3ktdHJ1bmsKKzM4OTE4IDdiY2FiYmI2YjRiN2VmNDNkYWRiOGEzMzE2M2Q3NmQ3ZmQwOTJmZjQgcmVsZWFzZTI0LW1haW50CiszODkxOSBlM2FjNWYwYWQzZTNhY2I5ZWQyY2M4ZWQxNjEzOTA5M2Y4MmY2YTVmIGxlZ2FjeS10cnVuaworMzg5MjAgMjEyNTFlMjIxZTU2MmYwZGNlYzJjMTk4NTllM2I5YzBkNDFkYWI5MSByZWxlYXNlMjQtbWFpbnQKKzM4OTIxIDI1YTBlMWZhYThhNWVkOGYwOTFmY2YxYTBlNmExMWJlNGMyNjM5NzQgbGVnYWN5LXRydW5rCiszODkyMiBmY2QyYzM4NDc4Njk5ZjIzMWNjOGVmYjY0MTMyMGY1YmI3ZGE2MDhmIGxlZ2FjeS10cnVuaworMzg5MjMgMWNkYzAzMzRkODc3YzcxYWJmZjEyZmQ0ZDY3ZmU5OTlmMTQwZjJhYiBsZWdhY3ktdHJ1bmsKKzM4OTI0IDE3YWEyODk2MmI4NWRhYTM5M2IxZmNiYWI3MDdlMzYxOTA2YzQ5OTEgbGVnYWN5LXRydW5rCiszODkyNSAxY2E3YWU0OGE5MzE1MWI0NWVmYzVlZjYzZWNkYjRhN2E3NjM2Njg1IHJlbGVhc2UyNC1tYWludAorMzg5MjYgNTJmZWQyZDA2NDFhNWJkOGVmYTRkNzhhNTA2ZDc2MjhmMTAyYjc4ZiByZWxlYXNlMjQtbWFpbnQKKzM4OTI3IDg4ODBkOTFjZGIwOTM4M2E0ZmZmMzIwMTc5Nzc0M2FjY2EyMWIwNGUgbGVnYWN5LXRydW5rCiszODkyOCA3OGQwYTU1OGIwOTM4MzRlODY3ZDMwNjJmMTVjMmU0ZDA5NWVlZjdjIHJlbGVhc2UyNC1tYWludAorMzg5MjkgNjVjOTVhZDY3MmFlOGZkNTdkZTM0NDAyN2E2NmJmNWY1Zjc2M2EwZCBsZWdhY3ktdHJ1bmsKKzM4OTMwIGRlNzZiMzQzZDljODJiMmI2YTcyZThlMGJiZDhjZTYyYjVjN2ViMWUgcmVsZWFzZTI0LW1haW50CiszODkzMSA0NGUzZjIxZjA1MjU5MGRkZmFiYzEyOTA5YWY1MTg4YTRjZDg5ZDhjIGxlZ2FjeS10cnVuaworMzg5MzIgMWZiNzY4ZWJkOTBlMmIyYzZmNWQ2NWIxNWE5MGQ0Y2FiZTQwYWZkYiBsZWdhY3ktdHJ1bmsKKzM4OTMzIDhlOTY4MmZkNTdmOGVhNjkwY2E0NzAwZThhMzVkZmMxNGVhYjIyOTYgbGVnYWN5LXRydW5rCiszODkzNCBiNzRhMWE1MTI5MTc4YTYxZjMyNDQ4NTdiZjFjMzc0MDRiZTAxYTMyIHJlbGVhc2UyNC1tYWludAorMzg5MzUgZTM5NGY3ZThhMGMxNWY4NzA0YjI3Y2Q3MTA4NDc2Nzg0NTU2NDc1MCByZWxlYXNlMjQtbWFpbnQKKzM4OTM2IDRhMDJhNDMxNzY1NTViYWNhMzA0NWQ1NTUyYTZmYzcwYWVjMjI4ZDQgbGVnYWN5LXRydW5rCiszODkzNyAyNzU4NDM2MzA1MjI4NmUxOGM4NzYwMzJiZmQwZjJlZWIxMzkzMjI5IGxlZ2FjeS10cnVuaworMzg5MzggOTBmY2EwODE0NWQxMTQ5N2U2NWEwZjY2MTg0YmQ0MjYyZjYyYmRmMyBhc3QtYnJhbmNoCiszODkzOSA2MmVhYzhkOTUzY2YxYTBmMDYxOTU1OTM4NzA3ZjE4ZDU0OGM1NWM3IGFzdC1icmFuY2gKKzM4OTQwIGJhYzg5OGQzOWI1MzhmMTI4MmY1NWJjYTE3NDlkODhiMGJmOTQzODEgbGVnYWN5LXRydW5rCiszODk0MSBiMzhjMmFhNjZlZTdiM2U0YTc0OWZkZTIwNDUxY2Y5NDhlMGI0NDA5IGxlZ2FjeS10cnVuaworMzg5NDIgNzVmZDlhNTE1NGM0NjFlMWQ4N2RlYmViNmQ3NjE2OTRlNTAzZDllOSBsZWdhY3ktdHJ1bmsKKzM4OTQzIDQwZjdlMWRhMWJkZmU1NTJlNTZmODc0MzUwMjU2MzZkOWQyZDExMzEgcmVsZWFzZTI0LW1haW50CiszODk0NCBiYTQ3MjdkYTA3ZTU0ZWJhNGZhOGUyZjI0OGNkYTYwMDQ1MDdlZTcyIHJlbGVhc2UyNC1tYWludAorMzg5NDUgY2IyYmU0NDI5YTRjZmQzYWM4YzE5NTI0ZTYxOWRkNmQ0YTM3YmM2YiBsZWdhY3ktdHJ1bmsKKzM4OTQ2IGVhNWMyMjgwZjkxNTc0MjM3ZjNkNDFhYTE4OGZlMDJiNWI5NzAyNjMgbGVnYWN5LXRydW5rCiszODk0NyAwZGYwNWVhYTFlMDk2ZWVjYmQwMjEyN2YxZTY1YjU5MzQ3Mzg0MTNkIGxlZ2FjeS10cnVuaworMzg5NDggYWM1NmQxN2JjM2QxNzBjYjFiZjZlZTlhNWIwZjFlODcxOTk4NGM0ZSByZWxlYXNlMjQtbWFpbnQKKzM4OTQ5IGZjZjAxMGMzNzBjYmNlYjc3YzM1ZmFhNDhiNzYxZjQyNTEyOGIyMDggbGVnYWN5LXRydW5rCiszODk1MCA1YTFhMzFkOWUzN2UzYzEzOWRlOTdiOWJhZTRhZTgxOGU0NzE1NmQzIGxlZ2FjeS10cnVuaworMzg5NTEgMjE1Yjc4ODVlMTA4NTRjNTE5OTc3NjZjMWUzYWNhZmI3YTc5MjRkZCBsZWdhY3ktdHJ1bmsKKzM4OTUyIDMyOWIyOGE4NTk0NzRhMzUwN2ZhM2YyNTFiY2EyNTZkOTk4MGQ4ODkgbGVnYWN5LXRydW5rCiszODk1MyBlMDM3MTQ4MDQ4NDViOTI5ZThjY2U1ZjAwMGE2MWQ0ZTUyODIxMGJlIGxlZ2FjeS10cnVuaworMzg5NTQgOGJmZWJjZjA2MzYzNzAxNDUxMWUxZTRjMGY3OWM3ODBmNzA3MTBhMCBsZWdhY3ktdHJ1bmsKKzM4OTU1IGE0OWI4OGU1MDMwNTk4Zjk0MzIzNDk1ZjRjZWRmMWE2YTlmZDczMDkgbGVnYWN5LXRydW5rCiszODk1NiBiNzNmMTMwYzdiODQwNThlNjdhMzUyNDRlNmI0NGY4MGRiYWY1ZDFiIGxlZ2FjeS10cnVuaworMzg5NTcgZDRkYWFiYWJhYTQ1YTVmZGY3NDVkZjBmZGZmYzgyYjg3MTczNTk5OSBsZWdhY3ktdHJ1bmsKKzM4OTU4IDI5ZDNkZWYzYTU2YWI1YTJkYzQwYTg4MzVmZTcwM2I1NTMyZWE3OGYgbGVnYWN5LXRydW5rCiszODk1OSBmM2IwMjIyMmE4MGEyMDQzMjJlZDc3ODFkYThmMjFmMTJmOTIwMTU1IGxlZ2FjeS10cnVuaworMzg5NjAgYzU1ODk5ODYzYjljNzllOWMwNjIyNzk5MDQxYjk3NDFmMzIxODIzMSBsZWdhY3ktdHJ1bmsKKzM4OTYxIDE5YTUwOTFmMjY1ODA2NDA2NTA3OGUwNThjZmIyZGU1NGVmMWNlMzkgcmVsZWFzZTI0LW1haW50CiszODk2MiA1NTU0NTExYjM3MjU0OTExYTY4NjQxNjIxYTE1M2YxNDM4NThkMWZmIGxlZ2FjeS10cnVuaworMzg5NjMgMDg3NzM1Zjg2NzAxYzE5ZDQzMDFhYzA5MDdjOTIwMzA2Mzc2ODUzMyByZWxlYXNlMjQtbWFpbnQKKzM4OTY0IGQ2MDQ3ZTU1ZjdhZDNkNmNlMWZjZGNjYzkyYWE5MjExMmY3NjVkODQgbGVnYWN5LXRydW5rCiszODk2NSAzYjQxYmQ4Nzg5MThkMDMwOThmMzQxYWFlMmQ3MWY5NTg5NWVmY2FmIHJlbGVhc2UyNC1tYWludAorMzg5NjYgMTQ5MGY4MTFmOTNhOTRhNTYxMTA5ZTY2YjBlMDgyNmFlM2Q2ZmNiNSBsZWdhY3ktdHJ1bmsKKzM4OTY3IDczZjI0ZjVjNGUzZjkzMjU4ZjBhM2RmZjJmMDAwYWE4ZDFkMDk1Y2QgbGVnYWN5LXRydW5rCiszODk2OCBjMDVlNDVlODcyNGUyZmU0YTJhZDQwNTY3NmU1NTM4MzNjYzU1NTYyIHJlbGVhc2UyNC1tYWludAorMzg5NjkgNTU1NDVlMDIzMTk5ZmMwNmE1MDE2Y2YzZTI5NGI5MDc2NDQ0NTBmYiBsZWdhY3ktdHJ1bmsKKzM4OTcwIDU2MDg4NzQ5NzIxYThhZDdiN2E4N2U3YzljZTI5NzM1YWFmZDYzYzkgcmVsZWFzZTI0LW1haW50CiszODk3MSBkNDMwYjI5NjQxYmE0MGJlNGYzZjdkMTc2YzcxMzE1YzJmODhlYTIzIGxlZ2FjeS10cnVuaworMzg5NzIgNjYyNDg4ZDQxODdkYjY4OGEyNTI1MGZlYThiNzNlNjgwN2YxZTI3MyByZWxlYXNlMjQtbWFpbnQKKzM4OTczIDgyMzczZDI1MjVlZTBiZGJhNDk5NGQzYzU1MGZiODA3ZTg5ZTM0MjMgbGVnYWN5LXRydW5rCiszODk3NCA1Zjc2M2Y5ZTUwZjkzNzBkZTgzYjhiN2IyZDZkOTIxMjBiOTJjNjhlIGFzdC1icmFuY2gKKzM4OTc1IGYyMzAwN2Y5MjE3YjEzNWUxMGViYzhlNDA3NGRiOTFkMWQxMWJmMjYgYXN0LWJyYW5jaAorMzg5NzYgOGFlOGU2NGNhOWJkNGQ4NzU0YzllZmI5OTE3NDNmNzU4YjUxODA5MyBsZWdhY3ktdHJ1bmsKKzM4OTc3IGU3OTc5M2E4ZWVlYWI1Yzk4NTJmNWNjNmNjNThhZTBiNGQyZTQxNmIgbGVnYWN5LXRydW5rCiszODk3OCA0ZmRhNDA2M2NjOGNjMmM3Y2U1ZmU5ZDI3M2NhMDMxZTcyMWY3MjZmIHJlbGVhc2UyNC1tYWludAorMzg5NzkgZWM0YzE2ZmU3Mzg0Y2VkNTY1YTliY2JjZWY4YmNmYWI2NjJmNzI3YiBsZWdhY3ktdHJ1bmsKKzM4OTgwIDVlNDVkY2JmN2NmZmQwNGMzZTJmZjQzMWFhNDI3NTFjYjhiNzQ3MmIgbGVnYWN5LXRydW5rCiszODk4MSA3NDhjOGUyZDQwZWVjMDVjZDVmZTE5YWMyODk4NzcxZjY3MjZlYmM4IGxlZ2FjeS10cnVuaworMzg5ODIgY2E1ZWY3ZWUzZjQxN2FjMzExY2NmMTA5NDliZjQ3MWZhODRmYWEzMyBsZWdhY3ktdHJ1bmsKKzM4OTgzIGVlOTlkYjA2YzBlYmNmZDg2YWM1ZGI5M2M2NjJiNGUzYjEwMTYzZDEgcmVsZWFzZTI0LW1haW50CiszODk4NCBjNTU1MTBkYWViZDI1MmQ0MTdiNGFhNmI2MDBhN2YwMmZkMDJjMDk0IGxlZ2FjeS10cnVuaworMzg5ODUgODA3NjQyNGQ0NTVkMGViMzdiNzFlMjQzYjRhN2FmZGM5ZGMxZjgwYyBsZWdhY3ktdHJ1bmsKKzM4OTg2IDA3OGRhNDc0YjMwMjEzM2EzMWM5ZjgyZDdjZTlmM2E5MDZmYWQyZDggbGVnYWN5LXRydW5rCiszODk4NyAyZWI1NjliNmNlMjM0YTg2ZDY5YmZkZGE0MGUxZDkxMjQ2YmI4ZjMxIGxlZ2FjeS10cnVuaworMzg5ODggOTI0ZTAyODJiNTdlOTgzNWVjNmExMWY4N2ZlNDgwZjFjYmIxZWIxNyBsZWdhY3ktdHJ1bmsKKzM4OTg5IDkyY2Q5NTFjYzRiMThkOGIyYTNjODkzOTRkYTRiOGYzZWIyZTA3ZTMgcmVsZWFzZTI0LW1haW50CiszODk5MCA4NTE0NThmZmZkMzQyMTBmNjIwZWIzODBlMTFjNmFhMzMzNDk2YTNjIGxlZ2FjeS10cnVuaworMzg5OTEgMTczZTkwZTBkMmUzMWQ3ZDhiNDA2NjYwMDQ2YzQ2NjM1NzdlYWZkNSBsZWdhY3ktdHJ1bmsKKzM4OTkyIGFhMWM1MzY2NjA3ZDZmNWE5NGU5ZDMyN2FmZGFiZDRhMWNiZjI1YzAgbGVnYWN5LXRydW5rCiszODk5MyBhMmI1MDQ1ZGY0Zjg1NjgwYmYwZmQ2ZDAwMzgzODBiY2U4ZjhlNTk1IHJlbGVhc2UyNC1tYWludAorMzg5OTQgNzRhODQ1OGIyMjc2MDJmOWI0ZDU1ZjhkNTBhYWNhOWFmZWQ5ZTk1MSByZWxlYXNlMjQtbWFpbnQKKzM4OTk1IGFiZTVhNWUzOWNjYzdkYWQyM2ZkZWE4OWM3NjdiZjliZTQ3OTk1ZTkgbGVnYWN5LXRydW5rCiszODk5NiA5MWI4Y2RiZmQ3YjQ2NTk0MDFmOWFmMTc0OGFmNDE3NmJmNmY1YmE4IHJlbGVhc2UyNC1tYWludAorMzg5OTcgMTMzMmYyZTcwNWIyMTZlZDFmNDVlYjliMjM3YzZhMmIwOWE3OGNlMyBsZWdhY3ktdHJ1bmsKKzM4OTk4IDgzNWFiMDY5ODRhOWM4ZDhmNjVhMWMxMjc0NTNhZGUxZjNjODQxNDcgbGVnYWN5LXRydW5rCiszODk5OSA1ZmIyMTYzMjMxZDMzNWQ1OWMxNWFmNjQ1YjcxYzBhZDRlM2I2ZDAxIGxlZ2FjeS10cnVuaworMzkwMDAgZGIxNjc2ZmRiNWI5MWMwNjQwMGMzNzI0YTgyYTZjMjQzNzBiZDQ1MyBsZWdhY3ktdHJ1bmsKKzM5MDAxIGY4OWNiZTY5ZGI2M2ZhMjViYWM4YWVhNjg2ZGIyYWY2NzMzMDdjNjkgcmVsZWFzZTI0LW1haW50CiszOTAwMiA1MWZlMjQxMzg0ODZlOTU0Y2MyNmJiOTQ1NjNlMGIzNWU5YzhjODM3IGxlZ2FjeS10cnVuaworMzkwMDMgYzQyNWNkYzhhZThhN2NhODg2YzFhODRkMjRhNTU1ODhlYThhMjRjZCByZWxlYXNlMjQtbWFpbnQKKzM5MDA0IDRmNWQyNmY1ZTNlNjQ1MmZkMjE1MzMzZjQ0OWFlOTU3M2E5MDNkYWQgbGVnYWN5LXRydW5rCiszOTAwNSA0NjY2YjQ1NzRjOWNiNTgzZmZhNjUwM2MyMzkzYTQ4YTgzNWZkZGI1IGxlZ2FjeS10cnVuaworMzkwMDYgNjk2NDU4MjQwYTY1ZWM0YzM3ZDgwNTZlYzgyODE5M2I4OWEzYjk2NCByZWxlYXNlMjQtbWFpbnQKKzM5MDA3IDBhOWE0MTBiZjc0Y2JiMDM4YjU0NmQ3OWVkZjgyYjhjOGMzMDlhNTcgbGVnYWN5LXRydW5rCiszOTAwOCAyYjUxODZiNTk1YjFhZGRkZGE3ZjA1MjJlOTJiMDQ1YWU4NDE1NzAyIGxlZ2FjeS10cnVuaworMzkwMDkgMjdhYTVlZWM1NDAwNGQ3YzMyM2U2NTc2MmQ5MzM4NTRiOWY4ZjcwNSBsZWdhY3ktdHJ1bmsKKzM5MDEwIGQxYmFjMjBjMGI5ZjRlMTJiZmMxODgwZjQyOGViNTUwMWVmNzMwYWIgbGVnYWN5LXRydW5rCiszOTAxMSBhYmU5Njg2MzI1YzM4YmEwODM2YjMzNzVlMjJjZTBjNWFlNzFjY2I1IHJlbGVhc2UyNC1tYWludAorMzkwMTIgMjAxNWQxNmQyNjQ3MDQ2YjUyZmJmZjA1ZTc2YzRmNjI4YmE5MWY5OCBsZWdhY3ktdHJ1bmsKKzM5MDEzIGM2YjdmYWRmMGFkYWUyN2ZlYzU1NmEwYTQzMWYyMTFhNmJhNDUyYmEgbGVnYWN5LXRydW5rCiszOTAxNCAxN2NjYWM2OTU0MTM0MDAwYWM5OTM5ZjQ4ZmRiOTRkN2YxZWU1M2MwIGxlZ2FjeS10cnVuaworMzkwMTUgNGE1ZjE4MWFjMzI0MDhhZDFmZWFmNmJiOTZiMzU4NjU0YzZlNTg5NSByZWxlYXNlMjQtbWFpbnQKKzM5MDE2IGE1MzU4NzI5NWYyMDU5NjU5NjIwM2VkMWY5YmVmODEwZWJlZTAxMDYgbGVnYWN5LXRydW5rCiszOTAxNyAzMjM4YWU2ZDJiMzA0MjMzMzlmMzcxMzk0ODBjNmQzMWEzZmI2ZWRjIHJlbGVhc2UyNC1tYWludAorMzkwMTggNDM4NGU1ODc5MTI2MTQxOTljMTM5M2QyYTc0NGQ3NTk3NTVjYzU5MiBsZWdhY3ktdHJ1bmsKKzM5MDE5IDY4YmNlNjhjOGY5MzI3OGZmNWJkZWRjMmM1YTBmYjkwNTE4YzY0NTYgcmVsZWFzZTI0LW1haW50CiszOTAyMCBiMmJkMDVjMDFhMzUxY2Y4M2IyYjExYjE3N2Y0NDAxNTU1MWFjNjM4IGxlZ2FjeS10cnVuaworMzkwMjEgOTgxNzljODI4MWNkYjYxMzI2MGFjNGQyYjM3ZDFiODJjNDk4NjlkMyByZWxlYXNlMjQtbWFpbnQKKzM5MDIyIDgzNDFjZWZkZWNhY2U4YzMyYWFmZTk5MmIyMThkMGYzYTQxNmVkMmYgbGVnYWN5LXRydW5rCiszOTAyMyBmMGFlMTE5NGRiNjllYTVlNWUxN2EzZDgxY2Q2MGE1ZmM4ZTI3NWYxIHJlbGVhc2UyNC1tYWludAorMzkwMjQgODYwZDdmOTNlNmI0YzlhZWE0NWIzZDIwZDAxZTkwMjE0ZTYwMjBlYSBsZWdhY3ktdHJ1bmsKKzM5MDI1IDU2YWM0M2Q5ZDYyNThiMWE2MDZhNTkxMGY5ZjdjNjdlMzM3ZGU4NDEgbGVnYWN5LXRydW5rCiszOTAyNiAxNzE0YzI0OTkyOGVmOGEwZDVhNjY5ODUwZTM3OWI5ZmQyMDRiMGE0IGxlZ2FjeS10cnVuaworMzkwMjcgMmQwNjkzYjlmMGJkOGM3OTRkNDlmYTMwNWQwYjQ5NzJlZGM4Nzk5MiBsZWdhY3ktdHJ1bmsKKzM5MDI4IGY1NTg5ZmMzZDk3NzE0ODNiM2RhZjgyNjlmN2YwMjhkMDUzZDA0NmUgbGVnYWN5LXRydW5rCiszOTAyOSBhY2Y2OGY2N2I5NzVjNzUxYWNiYmM2MGFiZDVkOWNhYmI1MjQzM2FkIHJlbGVhc2UyNC1tYWludAorMzkwMzAgMjM0YjIyYTJhY2YzYjc5NjJlYWEwNDc0YjdjMmU3ZTU3MDA1N2NiMSBsZWdhY3ktdHJ1bmsKKzM5MDMxIDJlOWU2NDJhNThjZWQxZjg5YjRlNGQ4Nzg0YThhOTI4MDE3Yjg5OGIgbGVnYWN5LXRydW5rCiszOTAzMiA0YzIzNzYyMDExMTVkNWFhYjkyNDIzMGM5OGQ4ZmQzYjc0MzM4OThhIGxlZ2FjeS10cnVuaworMzkwMzMgNTIyYzlhNDkwNDQxM2M5ODkzNWUxZDI3NzMyM2UxNWJiM2ZiNWYwMCByZWxlYXNlMjQtbWFpbnQKKzM5MDM0IDA5YTkxMGNiNmM4ZmYwM2I4MTU3YjI4OTc5ZGQwN2M2ZGQ5MjIyZDAgcmVsZWFzZTI0LW1haW50CiszOTAzNSA5NzNhYTRlZTE2MTUyYWRhMzc2NjJhYzZkMGY2YmU1MjVlYzM5OTA3IGxlZ2FjeS10cnVuaworMzkwMzYgYjZkMmE5ZDFhOTMzYTdjMGY4YjM1M2YzNDIxMjc0MGMzMmMzMzk0NSBsZWdhY3ktdHJ1bmsKKzM5MDM3IGYzZDMxNTFmODQxNzlmMWZmYjZlZGYxZjUyMWUwNTFmNTBmOTA0ODUgcmVsZWFzZTI0LW1haW50CiszOTAzOCBhYjgzYWIyN2M4MzdiNjQxYzBhMzljNGIwZTIxYjhlNWMzM2VkZjhhIGxlZ2FjeS10cnVuaworMzkwMzkgNTg2MzIwOTJlMDIzMjcwYzlhZjM0MWJlNDNiYjc0YzExYmRjNjZlMyBsZWdhY3ktdHJ1bmsKKzM5MDQwIGFkZjE4OWViNGY1OGE4ZTU5NzM3ZmZmMDZlODJjOTQxMWZjMDY1NTAgbGVnYWN5LXRydW5rCiszOTA0MSA1ODUwNTlkZTJiNDA0YWRmYzlhOWI5ZDI2NDdmNjZiYmE4YjI3ODRkIGxlZ2FjeS10cnVuaworMzkwNDIgYmZjOTFkNGFmNjQ1MzJhMGUxZGE4NTcyNjZmMGY1MGU2NTEzYTUwYSBsZWdhY3ktdHJ1bmsKKzM5MDQzIDJmYjBjNzZkMDI1MWExYTcwMjY1ODgyZmQ4MTExNTc2ZjU4M2Q5OTYgbGVnYWN5LXRydW5rCiszOTA0NCA3ZWEyYmUyYzBlMWRlMGY3YWM4YmNlODYwMGNiZDJiMTQ0NzFlY2I2IGxlZ2FjeS10cnVuaworMzkwNDUgMmQ4MzMxMjNiMTE5MDYzOGI4OGNjZGY5MjAyYmQ4OTc3ODVlZDI4ZiBsZWdhY3ktdHJ1bmsKKzM5MDQ2IDA0ODY4OTU5ZjFmZTY4MzJjYzk5NDlhM2NiYjVlM2EzMzU3YTdiZmMgbGVnYWN5LXRydW5rCiszOTA0NyBkYTc3MjAwN2QzNGQ4MDU5ZDk2MjNiMjYyNGU4YmE2MDNhN2Q4ZjYyIHJlbGVhc2UyNC1tYWludAorMzkwNDggMGVjNzExNTJjN2UyYmUxMDFlMTU5MmRhN2M2ZjkzMWY4YTQxYjAwZSBsZWdhY3ktdHJ1bmsKKzM5MDQ5IDJlZTYzZmY0NTk3MGZkZTMzNzAyMjgwOWNiOTA0OGZlNTAxOWZhNTcgbGVnYWN5LXRydW5rCiszOTA1MCA1MzRmOGVhNTczNzdlYTg5MzFkNWIyOTdiNmM3Y2I1ZTc0OWQzMDU4IGxlZ2FjeS10cnVuaworMzkwNTEgZGIyY2Y3NTk5NDhhZjI1MTJiNWMyMDNiMGM2ZmU2NGE1ZDk0ZGI5ZiBsZWdhY3ktdHJ1bmsKKzM5MDUyIGNkZWM5NzhiOTE2Y2UyNWI3MTUzMGFmZjIwNWM4ZDgzZjhjNjU4YjMgbGVnYWN5LXRydW5rCiszOTA1MyA3MDY4MTI2N2E3NGE5YTYzNzYxNTMxNTVkNzg3YjU5Y2NlNWMwODc4IGxlZ2FjeS10cnVuaworMzkwNTQgM2UwZGQ2MmVlMzFiZjdjZDg2NDQ1ZmNmMzk5OGYzNmM2NjhmZTBjNiBsZWdhY3ktdHJ1bmsKKzM5MDU1IDAwODdhZjA5NTNmNGRjNWRhOWUyNzVkZWIyMTVlMzliZGQxMmM0MjYgcmVsZWFzZTI0LW1haW50CiszOTA1NiA1ZDMzZDgzZThkZWM4YTk0YTBkOWNhMzllNmYzZDcyZTY4YTFiMjQ1IGxlZ2FjeS10cnVuaworMzkwNTcgNmU5MzQ0MmUyNmRkMDNmNDliNjU1YmNjZGM2OTY1MjcxZjQ4YmFiNiBsZWdhY3ktdHJ1bmsKKzM5MDU4IDAxMmEwYWRhMGQwNWZlODJmNGEzMWE4MjcxNTY4NWVhNjk4Y2E5ZGYgcmVsZWFzZTI0LW1haW50CiszOTA1OSAyY2I2Mjg2MDAwNWY2MDBhNDA5YWRiYWYwMDBjNzE1NzRjM2Y2MWNjIGxlZ2FjeS10cnVuaworMzkwNjAgODZlOWY2MTY5N2Q4YWZkZjQxNTc1MjE0ZGU0ZTcyYWM1YWE5MjJhNCByZWxlYXNlMjQtbWFpbnQKKzM5MDYxIDc3ZGUyMWNjZDIxMGU0YTJkMjY5YjNmMmY0YTY5ZTI2ZGRiODRkNjYgbGVnYWN5LXRydW5rCiszOTA2MiBkYzY4ZGU3MDM3NmI0MDdlOWFlNzEwNDcxN2I2YWVkYWJiN2NhZWYyIHJlbGVhc2UyNC1tYWludAorMzkwNjMgMzliYjhhNDBhMmM4NWU1ZDhhZTBiMjRkYTBjMDg3MjI1Njk4NDBiMyBsZWdhY3ktdHJ1bmsKKzM5MDY0IDgyOWY2NmQ1NjE0MGMyOWYzZjA0ZGQyZWM5YTg4NjQzNGQzNzRmMDQgcmVsZWFzZTI0LW1haW50CiszOTA2NSAzZGQ4ZDQxZWMzNTAzMDIwODA0MDJhNmRjYTY5ODdmNGVhYjM5M2RkIGxlZ2FjeS10cnVuaworMzkwNjYgMzNhNGQ3ZTVjODJmMmJjYmU0ZDVkNDViZWNjNjIwZjUzZjM2OTI3MyByZWxlYXNlMjQtbWFpbnQKKzM5MDY3IGJiYjg0YjU4NTZmY2U0ZGVjYjVmMmZlY2FlNjkwNTUxMzllZmNiNTggbGVnYWN5LXRydW5rCiszOTA2OCBmYjJmNWFhNGQ1YWIwMWY1ZjU2ZGNkYjQ4Zjc4Mzk1NDI2ODYzNGY3IHJlbGVhc2UyNC1tYWludAorMzkwNjkgOGRiYjczMWJhYTYwZjA2NTRhYmM0ZDg4YTYzMWI2ZTBjNGI4MGFhYSBsZWdhY3ktdHJ1bmsKKzM5MDcwIGQ2MGE1MGE5MGZkMTUwZWU4MjM1M2M2ZmJhYmQ3ZjFkYWE3ZTAxMGMgcmVsZWFzZTI0LW1haW50CiszOTA3MSAzMjUzZGJkNzJiNjBhY2RhZjg2MmM1N2E3NjAyM2I2YWNkODE5NzhlIGxlZ2FjeS10cnVuaworMzkwNzIgZTVmNjJlMDQ5YzZmZDkyMTBiNDgwYzQ0ODhiOGE1OTQwNjcwNGJhNCBsZWdhY3ktdHJ1bmsKKzM5MDczIDkxMGI1ZGI0NjIzZTMxZWEwNTAxZWJmZTFjMzgyMTI2ZDIyNzQxZjUgbGVnYWN5LXRydW5rCiszOTA3NCA5OTMwOTgwMmQ0OTA0OGVmY2ZlNjg4ZGY0ZDg3YmZkZGI4ZmUyZTQxIHJlbGVhc2UyNC1tYWludAorMzkwNzUgMjk4NWZjNjMwOWE4NGE5ZTZjYjJkOWExM2I0OTAzZjJiZjA5OTE3NyBsZWdhY3ktdHJ1bmsKKzM5MDc2IGY4NDBmNDQ3MDMyNTE5ZDExNTQ1Y2NhZmQ3OGJkNGRiZjk0YzUyYzEgbGVnYWN5LXRydW5rCiszOTA3NyBiODQxMzhkOThjZmEwM2ZkOTAxNTAzNjFlOGUzYWYyYzRjZmI3ODY4IGxlZ2FjeS10cnVuaworMzkwNzggNzI4YTBkZTg4Mzk1YzIzMGY2NmE0MmE5OWY1MDQ0YjNiNjkyOTYwZSByZWxlYXNlMjQtbWFpbnQKKzM5MDc5IDA2Yzc2MjcyMjg5MmI4Y2NkMmJmNTA1NTJkOGJlMGQwNmJlYzJiYTEgbGVnYWN5LXRydW5rCiszOTA4MCA0ZDFkYTYzNjEyZWI1YzlkZTg3NDRmNWI3ZjhjNDI2ZGI4MDRjOTQ5IHJlbGVhc2UyNC1tYWludAorMzkwODEgYTMxYTc3MGJiNzc4NTg3NGU0NDcxMTgzN2EwZTNhMGI1YzBjMmE1MyBsZWdhY3ktdHJ1bmsKKzM5MDgyIGY1NDczYTc2MmI1MDE2YjYyYWE1M2M4NmZiMjRjYjgxMTY5NzMwMjQgcmVsZWFzZTI0LW1haW50CiszOTA4MyAzYzZhZWQzZjNhMzEwMmJiYjFjMzJiZGZlMjczMmNhYmNkMzkzNTIxIGxlZ2FjeS10cnVuaworMzkwODQgODFjYTM1YWQ5MTk5ZTg4MTQ4MmQxYWY5OTllZmJmMWY4MzU4NDFlMyBsZWdhY3ktdHJ1bmsKKzM5MDg1IGRhZWJmZGUwZTFjZjFjNDNlOGFjYjYxZDFiMjZmZGI0N2QyYzNhYzcgcmVsZWFzZTI0LW1haW50CiszOTA4NiBjODJiNzQ2YzQyOGY4YjNiYjQ3YTg1ZmM0ZjAyNTIzYzdiMzU1ODc4IGxlZ2FjeS10cnVuaworMzkwODcgZjdjMDg4YThiNWQzYzgxOWQzOTI5NzkyNzM3OWZkOTg0MmJmNDgwMSByZWxlYXNlMjQtbWFpbnQKKzM5MDg4IGIzM2E3MjY0NDU0ZjA2MDE5ZWI3MTk3ZDlhYmZmMzAzZjdmNTEyYzIgbGVnYWN5LXRydW5rCiszOTA4OSBjNTc0MjgyZDUwYmZlZTQwYzNiNGVlMTcxNzU0NDQ5YzkwOGRiZmZjIHJlbGVhc2UyNC1tYWludAorMzkwOTAgOThmOTZmMDdkNTQ5ODg1MzgxM2EwMzlhNjRhYzBkMWE2YTE4YWFlOCBsZWdhY3ktdHJ1bmsKKzM5MDkxIDlhODEyZWI4YTBhYjI4NmU2YzZiMzMwZmRhMjRjMGJiOWY5MmQ5YjAgcmVsZWFzZTI0LW1haW50CiszOTA5MiA3MzkwMzJiZTk2ZDVkOTA1ZmQzOGIwMTVmNTQ3NWZiZWJiMmY4NTQ4IGxlZ2FjeS10cnVuaworMzkwOTMgNmFkM2Y4NjAzNDZlOTkzYTJlMjczYTNkYzI4OTc3MTJjYTY4ZTBiOSByZWxlYXNlMjQtbWFpbnQKKzM5MDk0IDAyMWE0YWJmN2YyNzRiMzI0NTM2NGM5Yjc0MTg0NDgzMDNkMzUzODcgbGVnYWN5LXRydW5rCiszOTA5NSAxYTcwY2JmNzU5Y2FlNTIwN2EyZDJhNzljNDE5NWU0ZGJhYmY3YzU0IGxlZ2FjeS10cnVuaworMzkwOTYgZDU3NDI4ZTg1OGZjMGQwNGZjZjAzYTE1Yzc5MThiYjExOWQyMjI3YSByZWxlYXNlMjQtbWFpbnQKKzM5MDk3IGVhZmExM2JlZWYyNjQ2ZGMzYTVhNDYxYTJkOTFkY2E4YTYxMDNjMGMgbGVnYWN5LXRydW5rCiszOTA5OCBkNmExOGEzM2JkNjI1NmY3MjIzZmEzOWQzNDcyOGQyN2I1NDcyODYyIGxlZ2FjeS10cnVuaworMzkwOTkgNzk5MDQ1NWU2YWUwYTBkNmQzYWExNjA5M2IzOWI5NWFhYjNiNzBmMyByZWxlYXNlMjQtbWFpbnQKKzM5MTAwIDllNDkyNzNhMTMzNDM5NmEwN2YyM2I5Zjc4NzFmNTJlYjBlMDhmODAgbGVnYWN5LXRydW5rCiszOTEwMSAxMjI4N2VmYTg3NzdmNzIyYTdhNTIyMWFlYWQ0NzhjMmFiOGQwZWQyIHJlbGVhc2UyNC1tYWludAorMzkxMDIgMGZjMjkwMDI2OTM5YTZjMGQ4MzA3ZDkxNWQ0ZmMzZTU5MzFiNTM0MyBsZWdhY3ktdHJ1bmsKKzM5MTAzIDhmYzVkNmJjMzVmZmRlMjIzZGQ5ODVhMTUzODk4NzA2Njk0MDg5ZTggbGVnYWN5LXRydW5rCiszOTEwNCAyN2E3MTgyMjFlNzJlNzg0ZjQxYTE2MTg3NmZlY2YyOTYyMTllZWIyIGxlZ2FjeS10cnVuaworMzkxMDUgY2Y3YTg0OWNlNjFmYTYwNWY5NDFkYWRjNDExMDE3MWM0YTliZDQ2ZSBsZWdhY3ktdHJ1bmsKKzM5MTA2IDY5NTI4M2NiZTQzZmM5MGMzNzg1NTQ3ZTJjZTk5YzllYzQzOTM2NmMgbGVnYWN5LXRydW5rCiszOTEwNyAxNmRmZTE1MmI5ZTZkYTVmNDIzZGMyMGZjNTQzNzA3ZTVkZjcwMWRmIGxlZ2FjeS10cnVuaworMzkxMDggMzBiMTM0MDFjOTEyNTY0MDg4MzQ1ODk3MWU4ZDQzNDI0NTU2N2YzMSByZWxlYXNlMjQtbWFpbnQKKzM5MTA5IDllNGJmMjllNmMyZmNkM2E4YWU0N2Y2MmI0OWFkNDBiNzRlN2Q1NzcgbGVnYWN5LXRydW5rCiszOTExMCBkN2M1YmQ1OTY5OGQwNjg4ZjA5MDE4N2EzY2MzZDNjYzM0ODY4ODEzIGxlZ2FjeS10cnVuaworMzkxMTEgZTZiMDc1YmQ3ODU1YWY1NGE1NjVkYzMxYTU5YzQwN2I4MDMxMGZiYSBsZWdhY3ktdHJ1bmsKKzM5MTEyIGIwNWNjMTJhMjE3OWYyOTQxNzM2NTQ0MWIwZDRkYzFhMWY2ZDkzZjIgcmVsZWFzZTI0LW1haW50CiszOTExMyBhMjA0M2FmZmQ1NDMzMDIxMTQ1Yjk3OWJjY2Y0ODUzOTk1NjNiODQ5IGxlZ2FjeS10cnVuaworMzkxMTQgNWQ5NzdkN2NjMzM1Njk3MTRkZjA3MzUyYWMwNWQ1YmIwMDI3MDNlZiByZWxlYXNlMjQtbWFpbnQKKzM5MTE1IDE4MTg0ZDgyZGFlYWExOWFiNDg4NzU4ODEwNGM4ZmY5NDkzMGVlZTcgbGVnYWN5LXRydW5rCiszOTExNiA5ZDFlNDYxMTFkOWE3MDgyNWRiNGMwYjk2Y2RiYjU3ZTg3ZmFmMTk2IHJlbGVhc2UyNC1tYWludAorMzkxMTcgZjhmMTVlNmFlZjNhNGFhOTM4MzAxZGRmNTMzZTVkODE3ZjNiZjQxOSBsZWdhY3ktdHJ1bmsKKzM5MTE4IDhmN2U0N2EwYWFjYWI2YzgwNTI5YTBkODQ3YzlhNGQwODgwZWEwYzQgcmVsZWFzZTI0LW1haW50CiszOTExOSA2ODI2NjgwM2MwMTM0ZDQzOThiMzk1NDA0Y2YwMzI4YWFhMjY0MDM5IGxlZ2FjeS10cnVuaworMzkxMjAgZDA3ZTljMzdiZWEwOWUxYjgwYjBjNDc2M2Y0YWI0NDAwMzIxMTg1NyByZWxlYXNlMjQtbWFpbnQKKzM5MTIxIDIxMGNhMzgzYWJlNzYyMGQ3OGY0MjIzNWQ3ZmE1OTA3Y2FiNWZlMWUgbGVnYWN5LXRydW5rCiszOTEyMiA3ODA0YmJiMjY0OTI4ZWRjMDRmMGQyNWNjYmFiNzEzYzY4N2I2MmExIHJlbGVhc2UyNC1tYWludAorMzkxMjMgNDc0MTg1MDI5NDJhODVhYjZhMzE5NWViYTgwZTYxMTQ2OWFlZWIyMiBsZWdhY3ktdHJ1bmsKKzM5MTI0IDJmOWNmZWNhMjc5OTZjZGZmYTJjNzFlMjQ1MTIzOWQ2M2ZiMTgyODIgcmVsZWFzZTI0LW1haW50CiszOTEyNSBjZDg3OWNhODQ2MjQ0ODZkYzFkYTQ4NTcwM2VmNDZmMzViYzZmZTdiIGxlZ2FjeS10cnVuaworMzkxMjYgNzI2YzliYzQ5YzA0OGFhZjIxZmY5MDA5YjZhYjk5YmQzZWUwZDNiYiBsZWdhY3ktdHJ1bmsKKzM5MTI3IDVkZjFjNjkyYmI0MTY2NjQ0ZWJjMGVkOTE3NzZmYjdiZmViYzkyMjEgbGVnYWN5LXRydW5rCiszOTEyOCBlMDIwODdhYzQ3OTI2ODAxOTZmMTkyNTFmNmFkNjhmNzJkNzlhMGYyIGxlZ2FjeS10cnVuaworMzkxMjkgMzM0MDUzNjQzNmY1YTBlMjgyNTUwNDFhOGQ2M2ZkN2NmOWYyNDMxMyByZWxlYXNlMjQtbWFpbnQKKzM5MTMwIGM1ODg4NDEzNDEyYjk0ZWJjZmMwNmUxY2UyMzhkYjg5NzY2ZGQ1NTYgbGVnYWN5LXRydW5rCiszOTEzMSBmOTRkNWJmYWQwNzhmODFiYzI1NDg2NTE0Mzk0MzU1YTNhNWVhMjQwIHJlbGVhc2UyNC1tYWludAorMzkxMzIgZTI2MzZkMTA4ZDdkMDlhNjVkOGU5OTZmYWFkMDMxMzFlY2JmOWJhNyBsZWdhY3ktdHJ1bmsKKzM5MTMzIDg5NzEwODA1YmMzZGVmZTg2MjRmZWYxMmFjNWVkMjRlMmM0N2FiODIgbGVnYWN5LXRydW5rCiszOTEzNCBkNmM4NzYxZDdmMzE0NzVlMDFkNWQ3MTVkNjI5ZWZkYzdiZGRhOWU2IGxlZ2FjeS10cnVuaworMzkxMzUgNjY2YzBlZDRmYjlkNDgwZWVjY2IyY2JmMWU4MzUzM2E0ZTNkZmExMCBsZWdhY3ktdHJ1bmsKKzM5MTM2IDg1Nzg3MWM3MWMzYmI5MDc2YjBiMzllMzdkZWU2MTBlYzNkYWQzYzAgbGVnYWN5LXRydW5rCiszOTEzNyBjODU3MDcwZTk3ZThkMWUzYTc1NDQ5NDhiOGRmYjY3ZDgxYzk0M2U0IGxlZ2FjeS10cnVuaworMzkxMzggYjNjYjY0Mjg5ZDJiZTI0NzY4MGZjMmIxYWQzZmU2MGExOGRkODRlOCBhc3QtYnJhbmNoCiszOTEzOSAyNzYwYTJkOTkyMzhmMTIxYzE5NDJmMDc3MWIxOGZiMjc5MjM1OWE5IGFzdC1icmFuY2gKKzM5MTQwIDViMjNhNWRjYzZhM2ZmMmI2Zjg4ZTZlYTA5YjI0ZWQ2NDJiZTM3MDIgbGVnYWN5LXRydW5rCiszOTE0MSBmZGNkZTU5ZGZhMWJkODlmMjZmZjEzY2I1YTNkMGQxNmE2YmIzNTZjIGxlZ2FjeS10cnVuaworMzkxNDIgNzNlNmNiNWY0MDM5ZTZjMGRhNTk1ZTgzZWQyOTlhN2Y1Njc1YTY0MCBsZWdhY3ktdHJ1bmsKKzM5MTQzIDNiNWY1NDY2ZjEwNWVhYWMyYzdjMzk1YmQ1MTI0NmIyYjlhZWYxYjcgbGVnYWN5LXRydW5rCiszOTE0NCA3MzQ5MjViNDZiYTdlNDdkZjdiOGVhODdhNWU3NmVhMmM1OTE4NDdhIHJlbGVhc2UyNC1tYWludAorMzkxNDUgOTI0MTIxODk5MmMxZTA2NzE2YjNmZjgxMWFiNDBlM2UyMTVjMWM3ZCByZWxlYXNlMjQtbWFpbnQKKzM5MTQ2IGI4NjM5MmY1NWI1OTdlZjQzMzc2MDE3Yzk4MGEyMWQ2NDQwZGFhNWUgbGVnYWN5LXRydW5rCiszOTE0NyBiOGM5MDc2ZDE3NGU5MmM1M2RhMDFlODI2MTQ4OTExMmI4NGUyNjMxIGxlZ2FjeS10cnVuaworMzkxNDggNThkNWE2YzdiNjI5MGZjMDA4OGNlMTk2ODRjYzc5M2MzZTEwOWIzNyByZWxlYXNlMjQtbWFpbnQKKzM5MTQ5IDRiZjk5ZWYwNmQzOGRiMzY2MTcwYWE0ZDA3ZjljMTc5NWQzOTc2NmYgbGVnYWN5LXRydW5rCiszOTE1MCAzMWQ5NTVhYjIyMzJlYzllZjYxY2E2MjdiMGY3NDQ5MWVkZWZiZmU5IGxlZ2FjeS10cnVuaworMzkxNTEgOWMxODhmZjYzMTMxOTc2YzI4ZDRmZDg3NzVjYjQwMzg5MjM0NDVjMyBhc3QtYnJhbmNoCiszOTE1MiA4MTI3YTU1YTU3Y2I3YmQ3ODBhNTRkMTQxMTRkMTg3N2JjM2I2NDdlIGFzdC1icmFuY2gKKzM5MTUzIDllY2YwM2RmZDVkNjE3N2IyM2Q2MGZlMmM3ZDA1YTdkYWQ2NWZjMGMgYXN0LWJyYW5jaAorMzkxNTQgZDI1NjU2YWIzZTFkMDNhZTgwYmMzNTlhNjMxM2IwZDU3MDM0YWRmOCBhc3QtYnJhbmNoCiszOTE1NSBhYTJmMmZhZWY3ZDI5MWRhN2RjMDQ3NmY2YmNlN2U4ZGFiMmNjMzNlIGFzdC1icmFuY2gKKzM5MTU2IDhkMGQzOTVjMjExZWQ3OTZhOTJhYTFlMDNkOTQ1ODdjM2MzYmQwZDcgcmVsZWFzZTI0LW1haW50CiszOTE1NyBlMDU5ODk4M2YwYTVmNjIzOTc4NzA5YTg2YmEyMTYyNTI1ZTA3ODQ4IGxlZ2FjeS10cnVuaworMzkxNTggZTFmN2ZjYTc4NGYzYTZmYTM0NTIyN2NjMjE5NjU2YzFiNjQ4MjY0MyByZWxlYXNlMjQtbWFpbnQKKzM5MTU5IGRkZDc4ZWEzNTE5YzUxYWNiYWFiODQ3M2FiNThlNDE3Mzk3ZDI0M2EgbGVnYWN5LXRydW5rCiszOTE2MCA5NTVkNGJhZGRiZmM4NjU5YTI4N2Q2ZTE4NzE4Yzg2N2ZiY2I0OTJkIGxlZ2FjeS10cnVuaworMzkxNjEgMjE0Yzk2ZTU0OTA1MGJhYzNhYTlhMGJmNjhhNmVkZjMyNDg3YWM0NyByZWxlYXNlMjQtbWFpbnQKKzM5MTYyIGI2NzAwYjNkZTY5NTVkNTFkMmI2MDlkNGVmMzQxZmZhNjEzZTAyMDEgbGVnYWN5LXRydW5rCiszOTE2MyBkYjc2ODMxMjk5ZDAwMDg1ZjlkYWQ3MjRkMzIyYzExYmE3NDBiMzE1IHJlbGVhc2UyNC1tYWludAorMzkxNjQgMzU1OTJiYWQzNDViZGVkN2E0OWM5OWFhOTUzMDA4YzA1N2JhY2JiOSBsZWdhY3ktdHJ1bmsKKzM5MTY1IDc2M2U4NWIxMDdiNDBkYmJhOTU2NTFjYzVkYTQyMGU2NGU4Mzg1MTggbGVnYWN5LXRydW5rCiszOTE2NiA1N2E0ZDI3NDY2MzIzODQ2ZDk3M2E1ZmEwYTgwNzZjY2VmZDA4MWYyIHJlbGVhc2UyNC1tYWludAorMzkxNjcgODQ3ZTU4ZGRiN2Q5ZWU2ZjhkOGM3MmJlYjJlZDUxMWMwYTdmYmUxYiBsZWdhY3ktdHJ1bmsKKzM5MTY4IGFjZTdkODM2MDgzZmU3NDEwMTczZTYzY2UwOGJmNDYwMWFiNWYwMDYgbGVnYWN5LXRydW5rCiszOTE2OSBmOWM1YWU2OWMxNmVlMmI1YTFkMjhkZDAzYjY3MjAxYmRmZWExZWIyIGxlZ2FjeS10cnVuaworMzkxNzAgZDBjNjk2NWI1MjVlY2JhZWU4N2IwZWIzZTE2YjdmNzU3ZDQ5N2Y5MiBsZWdhY3ktdHJ1bmsKKzM5MTcxIGMwODhlY2E5MGE2MzUwOTIxNGFjYzQ5ODJjODZhOWUyZmIxMjEzMjkgbGVnYWN5LXRydW5rCiszOTE3MiA1MjZmYWFhYjAwZWI5NTE5ZGZlN2YwZDlmOThlY2VjYmM0ZWJiY2MyIGxlZ2FjeS10cnVuaworMzkxNzMgMWZkYmNhMzUxNDk4OWQ4MTdkMmZkNDkyZDBkNGEyM2NmMmJjNWQ0OCBhc3QtYnJhbmNoCiszOTE3NCBhMGMzMWI3MGJkMTgwZjc4ZjY4Mzg1YTJlZTcxNjE1Y2FkMmZmNjNkIGFzdC1icmFuY2gKKzM5MTc1IDA5ZTg4ZmQ3ZDU1YTY4YTFmMTBkYTRhZTc1NWM0MDdiOWNlOTM3OGEgbGVnYWN5LXRydW5rCiszOTE3NiBiNzM1ZWI0MjY3ZThmOTRjYWQ5MDEwZDEzM2Y3MjZjNDQxMjhiYzRhIHJlbGVhc2UyNC1tYWludAorMzkxNzcgN2I2NDM2ZDIzNDRkMWY0NWZiNmNmM2ZjZTcwODhiZjE5YjE3MzVjYSBsZWdhY3ktdHJ1bmsKKzM5MTc4IDc0YzM3MTc2NjEyMWM4MTYzZTA1OTY0YWNmMTk2YmMwYWFlZTY0MWIgcmVsZWFzZTI0LW1haW50CiszOTE3OSBjZDU5NWE2OWRjYTVjYTJkOTQ4NjZhMjE4MDViOTZjMTBiYjU3YWZmIGxlZ2FjeS10cnVuaworMzkxODAgOTE5ZjJkMTMxOTgyYjhiMTVkZTlmMDQ1MjI4NWE0MWVjMTQ3NjNhMCByZWxlYXNlMjQtbWFpbnQKKzM5MTgxIDU1ODE2M2NiNzBhOTY4MmYzNzM5N2VmYmQwZWMyMDhhNjFhYTI0ZmMgcmVsZWFzZTI0LW1haW50CiszOTE4MiA2MmY4MTk0ODMyOTM5YmUxNGYyYmVkYTdhYjRkN2YyMmJlMzRiYTZmIGxlZ2FjeS10cnVuaworMzkxODMgMTk0OTcyMmYzNzg3NGQyMzY3OTFlNTQ0MjBlOWFlMDY3NmYyYzViYiBsZWdhY3ktdHJ1bmsKKzM5MTg0IDg3NTY5NzNhNmI5OTEyNGM5Y2QwOTVlYmIxNzJjMjZkMTJmZjYwMzEgcmVsZWFzZTI0LW1haW50CiszOTE4NSBjNmI2OWM2ZDAxYTM3N2Q0YzkzNTVjNjEyY2U2MjI0Y2ZiZTgzNGU4IHJlbGVhc2UyNC1tYWludAorMzkxODYgOTVhOWZmNDdiMTFkMDM5OTI5Nzk5MzkxNTg2ZjJmZTYzZWYyZTFiYiBsZWdhY3ktdHJ1bmsKKzM5MTg3IGE0OThkY2FhZTlkNzgyNjliNDQ1MGFlODhhNWU5ZGUyYTk2OWJjZWQgbGVnYWN5LXRydW5rCiszOTE4OCAwMjdlMDAwZDFmNmRmMGUwNDExM2ZhYTJjY2M0NGMxYzkxNTI3OThhIHJlbGVhc2UyNC1tYWludAorMzkxODkgMzJkZTdhOGQ4ODZjY2RmNGM1OWVhZmM1ZTJkMTdlNjU3M2UzMzU0ZiBsZWdhY3ktdHJ1bmsKKzM5MTkwIDA3YjAxYjMzNDBmOWMyNTQyNmI5YzIwYjQyNzBiODNmOWJmNmU3NTcgYXN0LWJyYW5jaAorMzkxOTEgM2E2ZWVmMzFlOTVhZTI1NTA3ZmMzMDMxMjMxMmY0M2ExMzVhODU0NiBhc3QtYnJhbmNoCiszOTE5MiBkNjFlZmNkODdjOGUzODM2Y2M2NTFmMjhhMzNkMTc2NWU2NGQ2N2RmIGxlZ2FjeS10cnVuaworMzkxOTMgZDQ3NmU1OGNjN2U3NDVjOWMwYmE0NjM5MDM2NGYzOTM1MzU5NjdkZSByZWxlYXNlMjQtbWFpbnQKKzM5MTk0IDkyYjM3YzcxZjkzNWVhYmM0NjFjMDcwZjJiODAyZjk0OGM0Mzk5ZDEgbGVnYWN5LXRydW5rCiszOTE5NSA3NGY4MjAyZDgzMTUwMTM3YzhjMzllZTExMGFkOTFhZTk1NDRkM2YyIHJlbGVhc2UyNC1tYWludAorMzkxOTYgYzUyY2QxZmQ5NGZjNTRiYjg0ZWQyNTZkZDJkYmUzMmZjMmI4YWY1YiBsZWdhY3ktdHJ1bmsKKzM5MTk3IDNmODZmOGNiYTA1ZWQ1Njg5MDI4NzFhMTc3NmQzZGUxNmFlNzRhOTQgcmVsZWFzZTI0LW1haW50CiszOTE5OCA3ZTFjMWQ2ZGVhMWMzMTY5YTNiMGUxYTg0YWQzNTk2NDgwZGNhMWMxIGxlZ2FjeS10cnVuaworMzkxOTkgOTY4ZDk0MjJhZjc4N2ZlNmZmMWE3ZjMzMDE0Njg5NWY4M2I2NmMxNCByZWxlYXNlMjQtbWFpbnQKKzM5MjAwIDcyOGY4MmJlYmMzZWJkNjYzZjIzNzIxOGQ1ZmQ3MmQzOWE1NTQ3ZjMgbGVnYWN5LXRydW5rCiszOTIwMSA4NzljODc2YmM1N2EzODk4MzYzZjVhNzFiZjhkMDcxNjMxNmM1ZmViIHJlbGVhc2UyNC1tYWludAorMzkyMDIgYjQzMWVkN2JjZGMyMjUwYWYxNmQ5MDM0NTA2OGZkODY0YjFiMTNjNCBsZWdhY3ktdHJ1bmsKKzM5MjAzIDg2MGUwZmQyZmVlOGVmNjliOTRhY2ExZjA3MjZkZjcwNTJhZjk4ZWMgcmVsZWFzZTI0LW1haW50CiszOTIwNCBhZWVjMzlmZWQ4YzVjMTZmNzY1YWMzOTQyNWQxZjIxZjY4NzIxMWZhIGxlZ2FjeS10cnVuaworMzkyMDUgZmFhZDA5NmRlY2Y2YWI0ZDFlNGZhZWIxMGUzODc4NDY5YjE3ODNhMSBsZWdhY3ktdHJ1bmsKKzM5MjA2IDlmNDM2NTUxMjMyNjAyNDFlMDI2NWEzNTY2ZTdkNmViZjRhYjQwMzcgcmVsZWFzZTI0LW1haW50CiszOTIwNyAyYjExN2ViMTg5NDRkMjI0NDljY2JjMDliNjI3ZjkzNGQ3NGQ2Mjk4IGxlZ2FjeS10cnVuaworMzkyMDggZTc4OTcwM2ZlNGJlZTRhYTIyNTY4NzJmOGFkN2JiN2VmZjg1OTJjYiByZWxlYXNlMjQtbWFpbnQKKzM5MjA5IGE5MTdlMmM0NzZmNjYxODgxMmRjNTkzM2QxN2FkNDI5NjcyNDU0NTUgcmVsZWFzZTI0LW1haW50CiszOTIxMCAxYWMyYzNhMWMzYWMzZDM5ZDRkN2RkY2YwZWMwMTU2NjBiODhhNzc1IGxlZ2FjeS10cnVuaworMzkyMTEgOWQ4MzhkZDk2N2IyYjIyYWZmMWYzMzE3OWY0ZDU1ZGRiZTdlODRkNCByZWxlYXNlMjQtbWFpbnQKKzM5MjEyIGJlNmFiM2Q4NmMyOTI1YWQ4ZWQwN2U2YmQxMDg2MmFkMTZiODM5YzAgcmVsZWFzZTI0LW1haW50CiszOTIxMyA1M2FiNTE2M2MxYWFhMTk1M2ViYjFhZDFkMWU3ZDExYmY3YWQwNjY4IHJlbGVhc2UyNC1tYWludAorMzkyMTQgNGFkYmQzMzFkMzM1MmViNWZhZmQ3MmZjYjU4OWU1MTJmNGIzNWRiMiBsZWdhY3ktdHJ1bmsKKzM5MjE1IDZlYmM0MjNmMmQ4MWNlOTBhNDQ4OTBlNmZiZjVhMjhkZGNhNTE1ZjYgbGVnYWN5LXRydW5rCiszOTIxNiA5NzA3YmEyNzg4OTQxYTAzZTNkNjkyYmY0YjNiNTg2MDI2YTg0NjJhIHJlbGVhc2UyNC1tYWludAorMzkyMTcgNTJhY2JiODU4NGVhZWI0NjFhNzk2OWEwZTgwYzdmOGE4MjM4OTk0YyBsZWdhY3ktdHJ1bmsKKzM5MjE4IGNhNjZhMTZjMzc5ZGMyMTA3MzljMTAyZDVjMDU3NzFiMTBlZGQ2ZjEgcmVsZWFzZTI0LW1haW50CiszOTIxOSA0MmNmZTQ2MDNjMzBjMDAxNzI5MzVjNmY5OWM4YzljNTlhMTM3Y2EwIGxlZ2FjeS10cnVuaworMzkyMjAgZWRmMjVjMWE0ZjYwOGM0ZGIzODk1NWU5N2U2MmVlMjQyZGY4OTk3NiByZWxlYXNlMjQtbWFpbnQKKzM5MjIxIGY4ZTYwYTNmMzQ0MDllOWY4MWZiYWNjNTI3NmY1Njc5MGY1NWZjYTcgbGVnYWN5LXRydW5rCiszOTIyMiBjOGJkM2I1MjMwYzQyNWNhNDg1YmQ4NDY1ZmM5N2I5ZTRlYTMwYTRlIGxlZ2FjeS10cnVuaworMzkyMjMgYjRlNTcwMzM3YmY0NzdlMjM2ZDdkM2Y2Y2EyNWM5MDM5NTI1OWM1MiBhc3QtYnJhbmNoCiszOTIyNCAzMTQ0N2FkYjFiMzVlYzBiYTA5MzQ4MjlhY2RhOWJjYzA0MzUzM2Y2IGFzdC1icmFuY2gKKzM5MjI1IDE3NzRmZTdlYzBjN2M3MGQ4NTA5YWMzNjViOGI1NDkwNzg5YWYxMmEgbGVnYWN5LXRydW5rCiszOTIyNiA4NWEzNWY4NzAxYjNiYjY5YTE1N2NkMGUyNTFmNDZmMzFkZDFlZmEwIGFzdC1icmFuY2gKKzM5MjI3IDI5OGQzZmE0ZWMzOWRkMTgwMmVmNzljM2EzN2I5NDJjMzA5MWRlMzQgbGVnYWN5LXRydW5rCiszOTIyOCAyZmVlZGY4NTA3ODlkMDc1M2UyZjFkZDQwYWI5MmI1YjY0MWViYmFhIGxlZ2FjeS10cnVuaworMzkyMjkgNjM2ZTVmMWRhNzMzZDdiNzQ3YmRhOWM3NzNkNDY3NTRlMTczNzVlMiBsZWdhY3ktdHJ1bmsKKzM5MjMwIDdhNTBiZDgyZGYyNWYyYmU5ZTNmYWFhODIyMmU3ZDc3NWI1ZmZjZjUgbGVnYWN5LXRydW5rCiszOTIzMSAzNDlhMGZkNTk4ZTA3OWQyMTdjZWRlOWQyYjgyNjM4YmRhNjY1ZDBiIHJlbGVhc2UyNC1tYWludAorMzkyMzIgYzZjMjRmZjFlM2RhNTkyOGFjMWY4MGMyMjg4NTEyNzJhNDg0MDE0OCBsZWdhY3ktdHJ1bmsKKzM5MjMzIDM1YTY5ODMwMmM2M2M1YjFmMDY4NTlhNzhhZDg3MWM5ODM4YzRiMTYgbGVnYWN5LXRydW5rCiszOTIzNCA4ZmZmYjRjOTU0ODdlZTIzNzMwODdiNzIzNjhmOTkwZDFiOWMzNDNlIGxlZ2FjeS10cnVuaworMzkyMzUgM2YxYjQ4ZjlmZjBkYTlmMzQ3Y2QwMTE1NDYxOGFjNGU4Yzk1MjI0MiBsZWdhY3ktdHJ1bmsKKzM5MjM2IGYzMGViZGMzYmRkZjc5YjFmY2JiNjM3ZjdmMjFjODhjZWNhMDFiMWQgbGVnYWN5LXRydW5rCiszOTIzNyBkOTE5NjRmNWZlMGQ2YmNiMGQyYWU0MDAyNGUyNzRkMGUzYTJhNzFjIGxlZ2FjeS10cnVuaworMzkyMzggMjZiZjZjMjdlOWNlYTVlZjUzN2U4NmVlZGFmYjFjNTk2MWRlMDUwMSBsZWdhY3ktdHJ1bmsKKzM5MjM5IGIyZmU1ZjhmY2ZkZGM4NGIxYTAzNGM0MjQ1Yjc4NDJjMzIzYTdmNzMgbGVnYWN5LXRydW5rCiszOTI0MCA1YTkxMzRmZTU3MDkwNjBhMjNhYTI3YmU2YTI5NThlNWVlNzliYTkzIGxlZ2FjeS10cnVuaworMzkyNDEgMDk5MTI4ZmZhYmU2MzE5YTAwN2ZmZDQyMjIzN2IyMTQwNmM2ZGI4MyBsZWdhY3ktdHJ1bmsKKzM5MjQyIDMwODY2MjBkYjQ2Yjk3ZmMyZDA4MjAxN2U3YmZjY2Y3ODcyNDQ5YzYgbGVnYWN5LXRydW5rCiszOTI0MyBiNDhmMGIyZTBkZjYwOTVkZjU5Y2Y4ZDg5MDNiYTViZmI2ZTlkZWE5IGxlZ2FjeS10cnVuaworMzkyNDQgYjM2M2EyOGVkMjRmOWIxMDNjNTRmOTRhMDkwNzQwOGVlYTZkNTU3ZSByZWxlYXNlMjQtbWFpbnQKKzM5MjQ1IGFiZGUyMTdjNWQ5MGQxYTY1MWU2NTRiYWNjODlkZWNlOTZiYjZiNGIgbGVnYWN5LXRydW5rCiszOTI0NiAzNzYwMDIzM2RiNzY4ODFjOGY4OTk3NGVkZmJhOGNmODRjZjUwMzg1IGxlZ2FjeS10cnVuaworMzkyNDcgNDU1YzNiNzY1ZGMzYThmMWI5MWM4YjE5OGUxY2I1N2VmMzE3YzI3MCBsZWdhY3ktdHJ1bmsKKzM5MjQ4IDI1OTBmYTBlYzdlODgxYjIzMDhjYTBlMTkzNGM1YWM0NGMyZGU5NGMgcmVsZWFzZTI0LW1haW50CiszOTI0OSBkNTMzZjA4YTlkZmFhYzczZjdmM2RhZmU2MTMwMDNkZmMyZWEzNWY2IGxlZ2FjeS10cnVuaworMzkyNTAgNWZlOWNlZWNhMTExODgxNGM0NGY0YTY2ZGUxZWJiMTE4NmY5NWQ2MCBsZWdhY3ktdHJ1bmsKKzM5MjUxIGYzOTk2YWE3OGNkZWE1YjU5NmYyOWRhMTYxNjkzNjBiNjU1MDcxZDcgbGVnYWN5LXRydW5rCiszOTI1MiA1NDFiZmJiMTAwMzBiZmZhYWNjY2YyNjA0Yzk1MTc2NjI5YTllMWYzIGxlZ2FjeS10cnVuaworMzkyNTMgOGFhOWJkODAyODZiMjIwMWU3NWYxYTM3MzI0MTNkYzE3ZjRiMzQ3MyBsZWdhY3ktdHJ1bmsKKzM5MjU0IGE2ODlhMjBmNThmNzYzYWRhMDMyZGM3YzlkYWNmZDMyNWVmOWY2Y2UgbGVnYWN5LXRydW5rCiszOTI1NSAxZDg2MTFkODU1NWM1Y2FmZTAwYzhkZWZhMDZmYzMxOGE5MWM2MWVmIHJlbGVhc2UyNC1tYWludAorMzkyNTYgYTZjYmZjZDBlNjkxYmEwYjFjNWE1N2M5ZTRlMGNiOTlmOThkNmU2OSBsZWdhY3ktdHJ1bmsKKzM5MjU3IGNlMDk5NWUwMWQzYzc0NTc0M2NlYTc2ZWJhNDliYWE0NmU5YzQ1MGUgbGVnYWN5LXRydW5rCiszOTI1OCBmZDAwNDYxODYxYzkwNzA2NDVlMjZiNjlmZjlmOTAyYTE4NzZjZjAyIGxlZ2FjeS10cnVuaworMzkyNTkgMjYxMmU5NmIxN2JiYzViY2FhYzcyYWVhMTBmMWRmMjFlNjA1MzJiNCBsZWdhY3ktdHJ1bmsKKzM5MjYwIGJkOWFmMjYwZTkyNzk0MmFmNWUwZDk4MDIzMjczYTMxZThiMzY3MWYgbGVnYWN5LXRydW5rCiszOTI2MSBmYTk1ZmU5MWNkZjc2MGJlM2RiMTIwNDJjN2E3OWRjNWYxMjcxODI1IGxlZ2FjeS10cnVuaworMzkyNjIgYmRjYjAxYTliNjBjNTc5ZjcxNmFiMDRiODg0NDYzYjc0OGFkMDdmMyBsZWdhY3ktdHJ1bmsKKzM5MjYzIGI5MmE4NWMzYmRjODE2YWFmOTI3N2NlNGRkOWYyZGUzYjI4NWI1OGEgcmVsZWFzZTI0LW1haW50CiszOTI2NCAzZmE1OGU1YmRkZmIyOWE1YzA0MGYyMmQwNTg2NDIzZDFlMTIwNTVlIGxlZ2FjeS10cnVuaworMzkyNjUgMTdlMDQ0NGRkMTJkYWVmZTFjZGVjZDgxOGVkYTY5ZjQyMGIzYTk5MiByZWxlYXNlMjQtbWFpbnQKKzM5MjY2IGFjOWMwZWUxOTlmYzk2ZWVhMWU0YmMzYjMyMjA4ZTA4MzRmMWUwMGIgbGVnYWN5LXRydW5rCiszOTI2NyAzMDk0ODQzZTdiOTJjYjEwM2FlMGZiZTFiM2I0NjQ4ZGJlZjJmYzQ2IGxlZ2FjeS10cnVuaworMzkyNjggNmFhNzNhMWYwY2JhODQ1NDAzYzdmODE2NjlmNDQ0ZDMyOTZkNWM0MyBsZWdhY3ktdHJ1bmsKKzM5MjY5IDBlZjY0YTkzZjNmMjVlMGQ2MzgxZTgzMzgzMDA4YjdjYjY5ZmNjNGEgbGVnYWN5LXRydW5rCiszOTI3MCAzMDBmM2FhZjg1M2ZiODg4YTRkZmM0M2VmZGM2MjlkMWI2ODEyZjA3IGxlZ2FjeS10cnVuaworMzkyNzEgMDQ0YTVjYTJjZGI4MmNkZjY3ZmU3YTU2YzM0NmZkZDhiMTgzNWI4MCByZWxlYXNlMjQtbWFpbnQKKzM5MjcyIGVmMTFjYmMwOGRhYmEwZmRhNDkwYzE5NjczODllOGRkNTVjZDNiOTMgbGVnYWN5LXRydW5rCiszOTI3MyBmZDAyYjg0ZmIyZGIyMjliZThkNzhiY2UyZDljZGQ4NmM2NDFhMGYyIGxlZ2FjeS10cnVuaworMzkyNzQgZGM4YWU0OTllZmNmMzkzODY5NzE0OGE2ZjQ4MzMyNWYxMTE3ZGUxZCByZWxlYXNlMjQtbWFpbnQKKzM5Mjc1IDcyNTY3MWRiNzc5YTY4MTgyYmQyNmMwN2MwZjg4NmVkNzViNzY4YjIgbGVnYWN5LXRydW5rCiszOTI3NiA5YjIyMjdhNjBkYWVjZGY1OTJkOGQxZWZiNGQwNzIxYzY4MzUxNmIzIGxlZ2FjeS10cnVuaworMzkyNzcgNTAzYzM2OTc1NzhmOGM5ZTQwZDJkZTI4NGE4OWMwM2JiZmVjNjIwOSByZWxlYXNlMjQtbWFpbnQKKzM5Mjc4IGRlZjQzNGUyYTgxYWZiZGM0YjAwNDJkNGNkNzk5ZDg0Mzk1MDc5YmUgbGVnYWN5LXRydW5rCiszOTI3OSBkNjU3NWNkMWFiNjdmYzY2MzJiMGUyNTVkNjQ0OWY5MjUwZTA5NGU0IGxlZ2FjeS10cnVuaworMzkyODAgMDI4ZTk0YTZlZmM1NmE5ODc3YmI3ZjgwMDE3OTUzODY3MGMzMzRjZCBsZWdhY3ktdHJ1bmsKKzM5MjgxIGI4YzVkMjIyMmVkNzU4M2JkZTEwNzUzMjhhMTIzYjFlZDQ3ZjFmYTUgcmVsZWFzZTI0LW1haW50CiszOTI4MiBmNmI0NjJkMmEzYTM2YzUzNjM2NzQzZWJjYjFjYmQwNTg4MDRlN2YyIGxlZ2FjeS10cnVuaworMzkyODMgM2MzYTQ1YTk2NTc3MjFmMGNhMTA2NjM1NGNmMTk2NTk4NmVjNTIzNSBsZWdhY3ktdHJ1bmsKKzM5Mjg0IGRkNDM1N2E1ZGE3Y2I3ZDcwNDc5N2JiOWZiMzNhNWY2N2EyM2Y1Y2QgcmVsZWFzZTI0LW1haW50CiszOTI4NSBjNTQ5OWYyNTY3ODZiMjgyMWY4MmYxNzMxZTNhYmQ0NWNiNDk3ZjlhIHJlbGVhc2UyNC1tYWludAorMzkyODYgNzAwZjA4MzY5MDkyNzg1ODIwYzhlMzZkOGQyM2U1YTRjMzcyNWIxMCBsZWdhY3ktdHJ1bmsKKzM5Mjg3IGRkMjM1Nzk1M2ZlMzg3MTQ4NGQ4OGIwY2Y0NzRjODZlODQwMGU5OGQgbGVnYWN5LXRydW5rCiszOTI4OCAzOTgyNWNhMzQ2NDczZWQ1NjgwNTQ2OTQ1ZDE4YjcxY2JmMTliZGE5IGxlZ2FjeS10cnVuaworMzkyODkgMmYxYmY2NGI4MzdlZjVmNDllMWNmNDZlMzVlN2QyZjI0MzFkYzViMSBsZWdhY3ktdHJ1bmsKKzM5MjkwIDZmMWNkMjhkNmI4NzUwMTJkMDM0MGU1MDYzMmFkZmEzM2JhZGFkMDAgbGVnYWN5LXRydW5rCiszOTI5MSA3MjliZThjYzAwOThiZjVlMTdlYTYzZjFjM2I1ZjMyYzAyYzllNzM0IGxlZ2FjeS10cnVuaworMzkyOTIgYzFkMjJkNGMwODY1NTI4MGNlMzdlM2I1MWE3MDQyNjdkY2FkM2RhZSBsZWdhY3ktdHJ1bmsKKzM5MjkzIGNkOGQ4ZTYzNGFiODA2ZTAxMGU2Yjc2OTZhZDBhODE0NDZiMDEyYWYgbGVnYWN5LXRydW5rCiszOTI5NCBlODgwNjA5NGQ2NDQ4ZGZmMGRlMWY4YmQ2ZGYxOWUwMDZlNmZjYTAwIGxlZ2FjeS10cnVuaworMzkyOTUgZGUyZDg0ZTA0NDdlZWVkODYxYjU0YTlmNWUzNTY5MTRlZGE0ODcyMSBsZWdhY3ktdHJ1bmsKKzM5Mjk2IDRmZDAzODczN2UyMWQyYWNiOGVmMTAwOGY3MTc1ZjdjNWU4NWFmZWQgcmVsZWFzZTI0LW1haW50CiszOTI5NyAzYTJmZmY2OTA1NThkYzA0M2JlMmJlMzQzMTIzZTJlYTdkYmNiNzgxIGxlZ2FjeS10cnVuaworMzkyOTggODc3OTE2ZDYzMmUwNzA2OWI4NTc3NTdiZThlNTA1ZTFkYmNlZjEyNiBsZWdhY3ktdHJ1bmsKKzM5Mjk5IDIwYjE4YjdmODMwOTU3OGUwYzUwMjljMDZhODI5YTk0MjEyNDJkOWEgcmVsZWFzZTI0LW1haW50CiszOTMwMCBjNWJmNTY4NTI2N2I4ZThkYTY5Mjk2MTBiOWI0MTljZjE3ODM3ODg2IGxlZ2FjeS10cnVuaworMzkzMDEgZDdmMzllNjIwOGJhOWFjODg1YTQ4YTZjYzBmYmM1ZTUyMGQwZTI3YyBsZWdhY3ktdHJ1bmsKKzM5MzAyIDY2MDU3ZDU1MDYyOGFlNzY1YmM3MjI5YWVhODlmNTYzZGEzZTBkOTIgbGVnYWN5LXRydW5rCiszOTMwMyA1MDI4M2E0NDE3ZDk4ODcwZjhjOWJjZjliOTY4NTFhOWE2OTEyZWJiIGxlZ2FjeS10cnVuaworMzkzMDQgZjIwNjkxOTU3NTc4MTEzMzhkMWUyMDM1NzhkZDQxNWY1MTVmYTI1OCByZWxlYXNlMjQtbWFpbnQKKzM5MzA1IGFlYjg1ODBhMWFmNzQ4OTg4NzJjZjFlYWZlMmNhYWExZDBlZDQ5N2UgbGVnYWN5LXRydW5rCiszOTMwNiA4YjA3ZDczMWJlNjAzZGVkNDgyMzQ4MWI2NWUxODhiMjJkMWVjMmYzIHJlbGVhc2UyNC1tYWludAorMzkzMDcgM2VhOGY1OGE4YzhlYzY0MzRmMDRmYWVlODY2NzVhOGZlZDkxOWFmZCBsZWdhY3ktdHJ1bmsKKzM5MzA4IDRlNTg4NzI1YzNkNzU4ZTdkMTFmMzIxMWU5M2RlMTJiNzMzODFhYmIgcmVsZWFzZTI0LW1haW50CiszOTMwOSBjZGUyNzc4MmExNjkyYWQ0MWNiZDE3MWYyYWE5MmY0NmFiMDM4ZDc3IGxlZ2FjeS10cnVuaworMzkzMTAgZjU3MTNlMzAzODBjNDM2YmE4ZGUxMmE4YTZmNDg1MWQ2OTYzNTA4NSByZWxlYXNlMjQtbWFpbnQKKzM5MzExIDdmOWE0MzBiOGNlNzFlYzk3YTc4ZGNjNzM3NjY0MGZjYjM1NjljNzkgbGVnYWN5LXRydW5rCiszOTMxMiBjZTEyNDUxMjIwYjQwYTkyN2I2MmZlMzdiNGUyNGIzM2JjZWExMGU0IHJlbGVhc2UyNC1tYWludAorMzkzMTMgNzZiMjcyMjgwNmFiYzVkNzk1M2NhZDg5ZTUyN2NiOGI4NGFhOTY3NiBsZWdhY3ktdHJ1bmsKKzM5MzE0IDA4NGQ0MmRmN2JhZDRlOTQwMzk3YzZjYmIzYTY5ODA5YmJkZDljOWQgcmVsZWFzZTI0LW1haW50CiszOTMxNSA3OTdkODJlZWM2MjUyMWI2YTY4ZGY5ZDM2ZDhiMjkyNGM2YzJhNGJlIGxlZ2FjeS10cnVuaworMzkzMTYgNjI0OTE4ZTFjMWIyZWZlZTllNGI3YmVlMzFkZGI4MjIxMmQxMWIzMyBsZWdhY3ktdHJ1bmsKKzM5MzE3IGE0NjczMjU3MWYyZThmMDVlZGNkNWJiYTc5NmRmOTI1YzhlYTY0NTEgYXN0LWJyYW5jaAorMzkzMTggZjg0Y2Y4NTM0NjRhYWFhNjdiMzFiM2QxNGIzZjU5ZmM0ZjBmZTdkMCBhc3QtYnJhbmNoCiszOTMxOSA3YzE0YzdkOGIzOTZmZjYxMWRlOTc5NDIzZWVmMDc1NjAyYTY3NTVkIGFzdC1icmFuY2gKKzM5MzIwIDQ2ODAwZjJhZDMwOGE0ODg4N2FlYTRlMmJlZmE2N2Q4ZGNmY2ZmZWYgYXN0LWJyYW5jaAorMzkzMjEgMDAxNDU5NmI4NDBjNmNmZGJlOGQ1NjZiMzgwNDVmMjg4YjVkY2FmMyBhc3QtYnJhbmNoCiszOTMyMiBiNDYzYmI0ODI1OTQ5YmQ0MjYxMGE1ZmYzOGY3M2I2ZDkwZGRjZjlmIGFzdC1icmFuY2gKKzM5MzIzIGU3ZWQwZTZhZWQyZjI3Mzk0NGMzMTdlZWIzNmQxN2I3NjBiMmI4ZTYgbGVnYWN5LXRydW5rCiszOTMyNCA0NDhjNmZiZmY2NDEzMTIyYTU3ZTVjZTIwNmMwZjNiMDAzYTM2Mzg2IHJlbGVhc2UyNC1tYWludAorMzkzMjUgOTMzMDA4MGEzZDQxNzU4ZTI2YTM2ZmM3YzNiYjg1ZjY1MjNhYmM1MCBsZWdhY3ktdHJ1bmsKKzM5MzI2IDkyNjE2OWZkZTVlNjMzZjFlMmJhODgyN2U2NWNjM2NmMGIwM2U0Y2MgYXN0LWJyYW5jaAorMzkzMjcgZmRlYjRhOGJjYjRlMjUwOTlhMDM4YTc3MGNmYTg1YTAyZWU5ZmQ1OSBhc3QtYnJhbmNoCiszOTMyOCA0MzIxMWJlMGRlNDE1ZmRhMWJkN2M2YTNmOWFkOTAwZTliZWE2MWYwIGxlZ2FjeS10cnVuaworMzkzMjkgZDY4Mjc5MGQ1ZGIwZTI0YWIzMzdkYmMyZjc1M2JiMWY3ZjJiYjIwZCByZWxlYXNlMjQtbWFpbnQKKzM5MzMwIDBmMWEyMzFjMmM3Y2FiNWQyMWRmZjkzYmYwN2NlOTkyZTQ5NGE2NmYgbGVnYWN5LXRydW5rCiszOTMzMSA3ODc0Nzg5MjNlODJmMjdlM2JiMDU2YmM1MzQ3OThhY2EzMmRmYWM3IGxlZ2FjeS10cnVuaworMzkzMzIgMDRkZDViMDZkM2M4ZWQ1M2RiZTk4ZTk2MjQ0YmU3ODUzMDYzMGZiYyBsZWdhY3ktdHJ1bmsKKzM5MzMzIDM0ZmY3Y2E0Y2VmODUyN2UzYjFmYmNiYzk1MGY3NDIxNjUwZDljYjQgbGVnYWN5LXRydW5rCiszOTMzNCBhNmU3MDAwNGU5ODcwY2Q4N2VmMzFiMmRjMGUzNGMyMGRiYWI1MjdmIGxlZ2FjeS10cnVuaworMzkzMzUgMzg4MjRiNmUzNjAwN2MzNjk1MWZjZDUxZjM5ZWY0ZjQzNGViZjk5YyByZWxlYXNlMjQtbWFpbnQKKzM5MzM2IDBlYjM4NmVlOTQwZTMwMzI2YzQ3YmNhYWJhMTViOTIxZjA4ZTUwM2MgbGVnYWN5LXRydW5rCiszOTMzNyAwNzEzNzI4Njc3M2NhZmY2ZWYwNzU5MDM2Mzg5MmE4NTdhYTYyODlkIHJlbGVhc2UyNC1tYWludAorMzkzMzggNGFjZDMwNzYxYmMyMTc2MzAzYmY0MmM3NGJiYjI4ZTA5NmZjYzRmNCBsZWdhY3ktdHJ1bmsKKzM5MzM5IDZiMzdlYWJlMmFjNDM3YmZkNDQ4NDlkZjBhZDVlOTAzZTA2NGZhZjcgbGVnYWN5LXRydW5rCiszOTM0MCA1ZjQwMGZiMmRkOGE2OWI3Y2Q2OWEzMTg5MWNiYmU2NDQ0NjA4NjBjIHJlbGVhc2UyNC1tYWludAorMzkzNDEgMzk3M2Q2M2QyNjY3N2MwNjc0NjEzNmYxYjE1MjY1NzEzNzgxMWE1YiByZWxlYXNlMjQtbWFpbnQKKzM5MzQyIDkxZDk2OGI3NzU3OWE1YTM2NjFiYzQ2ZTAxZmVhOWE2ZDRiNDk1ZDkgbGVnYWN5LXRydW5rCiszOTM0MyA0M2NmNTllN2E2MTQ1YWM3MThmZTk1Mzg0M2Y0MjBhY2M4M2ExZDdiIHJlbGVhc2UyNC1tYWludAorMzkzNDQgNGRhNmQ0ZTBjM2Q1NjI4YzBjZjFkZWY1YWUzNTBjZWY2ZWFkZTFlNiBsZWdhY3ktdHJ1bmsKKzM5MzQ1IDEyYTliYjI0YjZkOTY0NjYwNzQ5NGQ2MjhlY2E4OWVjMGZhZWQ4YWEgbGVnYWN5LXRydW5rCiszOTM0NiBiZWQ5M2QwNDE2ZGRlODJhMzQ5OGUyZGU3N2MzOTkzZTdmYjg0M2E0IGxlZ2FjeS10cnVuaworMzkzNDcgN2YxNjI3NzY2NjIxNmMxZTc4N2IyMDE3N2JiY2RkMDk0NGE3NzRiMCBhc3QtYnJhbmNoCiszOTM0OCAwMWVmZjYwNzlmOTBiNmZhYWZiYTc0NjVkZjc4OTA2YWIxYjExN2EwIGFzdC1icmFuY2gKKzM5MzQ5IDE3MDg0NzlhZGU0ZDViYWNkNDAyZGQ2MzEyZTM0ZTg0NzUxNmI3MDggbGVnYWN5LXRydW5rCiszOTM1MCBjOWViMjVmZTM5Y2JiZTA1ZDVhZDJmZDNjOGY1MmJkNDljMjA1Y2Q4IGxlZ2FjeS10cnVuaworMzkzNTEgOWUwNWVhM2IxYmYzYjg1ZjNhMjk5ZTRkMzQyZDRmYjE5NDcxOTVkOSByZWxlYXNlMjQtbWFpbnQKKzM5MzUyIDVjN2NjYTI1NDcyZGVmZmVlNDZkNzVjYTk4YzcxNTJmZmExNWY4M2EgbGVnYWN5LXRydW5rCiszOTM1MyA2YzA4NjViZWFhYjczMTI5MjA4MGZhMjJkZTRhYWJiYTAxN2Y1NDMzIHJlbGVhc2UyNC1tYWludAorMzkzNTQgODgzN2RkZmFhZDQ1ZWFmODM4MTdhZDgxYWQzMTc1YTlkN2E2MmQyNSBsZWdhY3ktdHJ1bmsKKzM5MzU1IGY5NjI4N2QxYjVmNmY5OGJlNzg1YzRiODcyYzk4NWI2NGJlNzI3MGQgcmVsZWFzZTI0LW1haW50CiszOTM1NiA2MzRjYTRkOGEzMDZhMjIyMjE5ZDZhZWViMmE2MjIwZmIwYzYxMjFjIGxlZ2FjeS10cnVuaworMzkzNTcgYjcwOTdkOTFmMDRkMWViZDU2ZTQ3YjBlN2QyMDFkYTU3ZWZkN2I0MiByZWxlYXNlMjQtbWFpbnQKKzM5MzU4IDViMWEyZmI4NjRhNzYyNmMxNjQ3YTBiNTMxOTc2MWQ5YWNjYTg1NjYgcmVsZWFzZTI0LW1haW50CiszOTM1OSAzYmI5MzI4MDFiNjQ1MmY4OGI3OWJkMmVlYzIwZmM1OTk3M2VlYzZkIGxlZ2FjeS10cnVuaworMzkzNjAgMzc0NWUzYzZhM2UxMzYwMTY4OTY4NDI1ZTQ5ZjA1N2U1ZWVmNWZlMyBsZWdhY3ktdHJ1bmsKKzM5MzYxIGRkZTA1NmE2NjZkZGVmNTJhZDMyMDMyZGEzOGU1OTFkMzI5YWY5OTUgcmVsZWFzZTI0LW1haW50CiszOTM2MiAzZWVjOTEwMzhmYmNhOWY0MzlhYTJkYTk3NDY1YjlmNTVmNDMxMjdhIHJlbGVhc2UyNC1tYWludAorMzkzNjMgMGE2ZGJjYjRlMDU2NjIzMDVjYWQzODhhM2FiMzUzMjRhMDZmNmViNSBsZWdhY3ktdHJ1bmsKKzM5MzY0IDRkMDVmOWU3ZTZlMjk0YTllNDE3ZGE1NzYwNmZiZjMzMTBmNTJiZGYgbGVnYWN5LXRydW5rCiszOTM2NSAxNTZhYmRhNGU0NTczYThlMmY0ZjFmYTA3YTkwNmVkMTI1MDg2NzFlIHJlbGVhc2UyNC1tYWludAorMzkzNjYgZmYyZTY2ZmMwYTI5MjkwNGRjMDRkMzcyMDJjODhiZGNlMDVjMWQzYSBsZWdhY3ktdHJ1bmsKKzM5MzY3IDQ4OTZmODMzNGJmZjI0NDUzMjY4YTVjYjU4ODBiZGJhOWY1MTliNDUgcmVsZWFzZTI0LW1haW50CiszOTM2OCBlNDhmY2Q0YzM1OGQ0OTdjMDdmNjA3M2I2YjU1NGI5YzQ2N2QwMTc4IGxlZ2FjeS10cnVuaworMzkzNjkgMzdmYTdiNmRjYTliYjg5YmFiMmQ5MWVkMWQ2NWNmMDBmNDJhYTRkMyByZWxlYXNlMjQtbWFpbnQKKzM5MzcwIDJhNmI2OTQyYTdmN2NiNjA0MDYwNTZiZjkwYzliNDIxNDdlM2VjZTggbGVnYWN5LXRydW5rCiszOTM3MSBjNGU1ZWQ3YTJiYTM3ZDY1MTAwNDQxYmYyMGViM2E1YTFhNTRiMDE0IGxlZ2FjeS10cnVuaworMzkzNzIgODVmMGE2ZTgzODBiNWRkNzkyY2Q1ODcxMjRiNjcwZDE5ODIzZTIyOCBsZWdhY3ktdHJ1bmsKKzM5MzczIDQ4MTQ2M2E1YjIwYzg5NmZkOGYxNzc2NmU0ODI2YjA2OTFiMmJjZDQgbGVnYWN5LXRydW5rCiszOTM3NCBmZTMyMzVmY2RkNzcyNTJlZGFlN2JhMTQxYzUwYzc0ZTNlZTU4ZTEwIHJlbGVhc2UyNC1tYWludAorMzkzNzUgN2NhYWJjNzQ5OTc1NjdlZWEyODE0ZjY5NDIyZjA0MTQ2ZmM3NjY5OSBsZWdhY3ktdHJ1bmsKKzM5Mzc2IGQ1ZGY1MjIyZmQ2ZDU0MmM5YWZiNWNjNjhiNWE5MWQ0Mjg3Y2MwMjAgbGVnYWN5LXRydW5rCiszOTM3NyAxNjUyMGZjYzA2MDk1MGNiMGY2YTNlYTU4MDQxNzllMDJiYWYwOWU4IGxlZ2FjeS10cnVuaworMzkzNzggNTVlMjc1OWQwMjExMzcyNDlmMWFmNGNjNTc0Njg3Y2Y1YTlkYzk3MSByZWxlYXNlMjQtbWFpbnQKKzM5Mzc5IDI0NWU4ZjRjYmExZGIyNDg2YTRhNGJkZTMxNDRiY2U0OTc3NzdjODYgbGVnYWN5LXRydW5rCiszOTM4MCBlMGJkNmYzMjRmZDZhMWQyOTVjNzU2MDYzZDYwOGM4NWQ5NzhhMDNkIGxlZ2FjeS10cnVuaworMzkzODEgMWI3YzRmYmVlMGI4YmUxMGYzMDg4MjA3ZjlhYWUyZGQ1NzRiODMwNCByZWxlYXNlMjQtbWFpbnQKKzM5MzgyIGMxZjBmMTcwOTM2ZDU1NzJiNGE2ZTc1ZGY0Njc3NThiZTEwYmVkM2QgbGVnYWN5LXRydW5rCiszOTM4MyAxMzBiNmNlOWJiZjNkYzEyNzYwODVkZjJmZDE0NjhlZjUwYWE3MTI1IGxlZ2FjeS10cnVuaworMzkzODQgZWRkY2U0MGVkMWIxNmUxN2Q2MjcwYWZiZmI0N2QxOWQxN2ZjZWJlNSByZWxlYXNlMjQtbWFpbnQKKzM5Mzg1IDdkM2U4YzJhZTMzOTEzMmU4NmNiYWRjOWE3NDRmZmRhOWM3NDNiZmQgbGVnYWN5LXRydW5rCiszOTM4NiA5ZDM0M2JjODE4NjM4MTZiNWI2MWRhNTdiMmYxNjUzZjVjOWNiMWY0IGxlZ2FjeS10cnVuaworMzkzODcgNGE1MDc3ODczY2JhMGJiYTk5ZmY4YmVmY2Y2YmFkNzYzNThhY2JiOSByZWxlYXNlMjQtbWFpbnQKKzM5Mzg4IDNkMDNkMmNiZTFhZDE2ZGU1OTRmMTk2ZGE5Y2RiNWY2N2YyMGQ4ZWMgbGVnYWN5LXRydW5rCiszOTM4OSA2NTIzOGM5YTdhNjYwMTA4MGQwNWE2ODYwNzcwNjAyZWY2MjM3ODU5IGxlZ2FjeS10cnVuaworMzkzOTAgMTcwN2M5NDVkNmMyNGRkMDg3NzlkNmYzY2U4MTlhYzcyZDZhOTFkMiByZWxlYXNlMjQtbWFpbnQKKzM5MzkxIDU5NTQ1MWMyYzhlY2RjOTljNDA2ODExMzc3ZjExNTVlZWRlZGRjN2IgbGVnYWN5LXRydW5rCiszOTM5MiBhMTcwMTIzNDVhZjZhYTI5ZjBjMDVjYzAyMDVhZTQ4YzA4MGViZTZmIGxlZ2FjeS10cnVuaworMzkzOTMgZDBlODY1NzZmMGI1ZGY1Nzk4OWM4YTYyOWNjYmE4ZjJhZWU2M2Y2NSByZWxlYXNlMjQtbWFpbnQKKzM5Mzk0IDQ0NjEyNTkzNDcxYzk2MGI3MzRmMzllMmU2ODY2ZGI5ZGNlMDRjN2UgbGVnYWN5LXRydW5rCiszOTM5NSBjYjQ5OWFlZTM2ZTc4YWNiZmE3ZTJhODVlMjYyM2I4ZWRkMWU5OWM5IHJlbGVhc2UyNC1tYWludAorMzkzOTYgN2EwZDBiNGM4N2QwNjQ1MTE1NjA5OTJhZjg4NDVkNGE4Y2VhMmViZiBsZWdhY3ktdHJ1bmsKKzM5Mzk3IDU4MmM5MGRlZGE5ZGZlMzA0MjVjYTZkYTA1YTY1ZDViMmM1MzNkMWQgcmVsZWFzZTI0LW1haW50CiszOTM5OCAwOTk5MjkwYzY3NTg4YTEwMjVhY2ZjYTc1YjQxMTY5YTE2ZWQzMjdhIGxlZ2FjeS10cnVuaworMzkzOTkgNTMxNjg2ODU0ZjA4NmVhMzYwZWRlYmQyZTViYjI0YmQ4MjI0YzQyNSByZWxlYXNlMjQtbWFpbnQKKzM5NDAwIDFmZGZkMDEzMGUyODE5MjEzOGVmZTBkMzI3Yzk2N2IxNjZiZDkxM2IgbGVnYWN5LXRydW5rCiszOTQwMSA5N2M5NzE5NGU2NGJiODcyM2U2MjgzMDliZGYwMWU3YzE3MWY2NjE5IHJlbGVhc2UyNC1tYWludAorMzk0MDIgMzY1MTRiOTUwMDJhYjFkNTkyZjA1NmJmOTY4OGRhZGY4MWFjYzIwOSBsZWdhY3ktdHJ1bmsKKzM5NDAzIDU5YTYzYjA5YTRjMjY5ZTUyNjc1YWUzMzU3YWI4ZTM5YjBiNmFlNzkgcmVsZWFzZTI0LW1haW50CiszOTQwNCAzODU1YTk2MGE2YWE5NmNhOWVjODU5ZmU5YTEyMTA3OTFiNjI4NThhIGxlZ2FjeS10cnVuaworMzk0MDUgOWE4MzczODBjM2M1ZjEyN2ExNzhkYjZkMDYyMmU4YmM3MzAwMGMwNiBsZWdhY3ktdHJ1bmsKKzM5NDA2IDhhM2Q3ZjlmMDJjYzJmZTFkMTVmMzZlM2VkMDQzZmY0M2IzMDMzNDcgcmVsZWFzZTI0LW1haW50CiszOTQwNyBjZmNjMjY0MWE5MTA5ODBkMzJiODcyZWQ4YjM4OTNiMmZhZWJmOGM2IGxlZ2FjeS10cnVuaworMzk0MDggOWQ0MWFmYTYzYjc5NTMxMzNlNDY0ZWYwMDYyYjRmMTA5ODc1YmZhMCByZWxlYXNlMjQtbWFpbnQKKzM5NDA5IDM4ZTU4OGQxZDg4NTNiOGE0OWJkMzllYjU2MGY2YzZlOTM4NjJhYTEgcmVsZWFzZTI0LW1haW50CiszOTQxMCAwODUyOGZiZDQ4MDQ5ZmJjZWRkNGNlYjZmMzFhNjU0ODg3NmU2OGZkIHJlbGVhc2UyNC1tYWludAorMzk0MTEgOWJlOTJmZThhN2E4MTAxMjBlNTUwNGNkMTkwZDU2NGVmYmU1ODk3NiBsZWdhY3ktdHJ1bmsKKzM5NDEyIDAzNTQwOWVmMDkwMTFmNTViNTZkZWViMmU5NjcwYzQzOTdhY2U1Y2UgbGVnYWN5LXRydW5rCiszOTQxMyAyNTZlNzM4NGYyNGRiZDMzM2NiMzVkMmJiOWJiYjkwMTcxNjgxMjU2IGxlZ2FjeS10cnVuaworMzk0MTQgMTMxMjk0NmYzMmFiNWNlMTE3M2E1ZTJhZjFiNDI4NjRlYzZkMWJkMCByZWxlYXNlMjQtbWFpbnQKKzM5NDE1IGFkZWRhOWZiMzQ4NWQ2NzRjNzBjZDIwMjY3ZWUwOGEwNjZkZWM2YzMgbGVnYWN5LXRydW5rCiszOTQxNiAzZTVjMDdmYWFiMTExMzk5YjI0MDJjZTljZTViY2I3NzFlYTZjNTY4IGxlZ2FjeS10cnVuaworMzk0MTcgNTIzM2QxOWZmODdmMjc3ZjFkMjY0ODU0MmY1YzUxOThlYTNlZTZkYyBhc3QtYnJhbmNoCiszOTQxOCA3MmQzYWQwOGIyYzYyMGJhYTY2MGNkYjFmNGE5YzRjY2FjZmIzODNkIGFzdC1icmFuY2gKKzM5NDE5IDY5ZWFiODUxNzRmYmEzZDg2MmNmNjA2YjkyOGE1NzZiNzg5OTRkZmEgYXN0LWJyYW5jaAorMzk0MjAgMzNmNjYyZjY3OTVmMzNhMWUxOWM3OTQ3MDZmYjAyZDZjMzhlMjY3ZCBhc3QtYnJhbmNoCiszOTQyMSA3MTNjY2ZmNzFmZGZlNGI3MDMyMzNlZjJmY2Y2MDU4ZTM5Njg0MjI5IGFzdC1icmFuY2gKKzM5NDIyIDg1OTYwY2E0ZmMwODllOWExNmY0YmE5M2I2NjA1MDljZjkxM2MzNWQgbGVnYWN5LXRydW5rCiszOTQyMyBkYmExZTJkZmQ4ZGVhNzg0NWViYjljZDcyY2QzNjU4MzZhZmRkMjY3IHJlbGVhc2UyNC1tYWludAorMzk0MjQgMjAwZTJlZjRkYmRjNjQzYzQ3ZjQ1NGY2OTExMzc1Y2QzYjQyNzEyOCByZWxlYXNlMjQtbWFpbnQKKzM5NDI0IDBmNDA1YTFjNTM0MDU0OTQyNjRmOTdiNGRkZTgyZWUxYTY4OTA0YzEgbGVnYWN5LXRydW5rCiszOTQyNSBhYWEzNjQ2ZjQ1NjcxMjZiMDBiNDQyMTJmZGI4Y2Q5MmQ2MjE3MjVlIGxlZ2FjeS10cnVuaworMzk0MjYgMDIzNGM4NGE3ZDhkYTgyNmEyNTE3NGQ4MjE2NTk2ZDE5YmM2ZmZmOSBhc3QtYnJhbmNoCiszOTQyNyBlNTJlZDg3OGM1ZWUwYWRlMjA3Y2QyOWU5NGY0NDYzMGI0NjhiMWYzIGFzdC1icmFuY2gKKzM5NDI4IDQ5NmQyOWIwYmE1YmJhZjYzOTZjYjIyOWM5YTEwZGEwYjk4NjkwMGYgbGVnYWN5LXRydW5rCiszOTQyOSAxMWUxNWY3YWI5NDA2ZWVjNWM2MmFkMWM0NmYyYTVhMzE1OTFkM2Y1IHJlbGVhc2UyNC1tYWludAorMzk0MzAgZDkyZjBlZDZhN2YyZjlkN2VlYjViN2MzNWIwMzU2ZThkYzJkMjA0YyBsZWdhY3ktdHJ1bmsKKzM5NDMxIGE4NGNkYWJiOGFmMDZkYWJkOTdlOTM5NDhhMTRhZmI2M2M3MjlmNWMgbGVnYWN5LXRydW5rCiszOTQzMiA4OWU4YTVlYzNkYTA1NzdiNzJiMTRkYTRjM2QyN2Y5ODBlMWE3OGMxIHJlbGVhc2UyNC1tYWludAorMzk0MzMgNjc2M2M5MWZjZmVmNDA5OWU5YzQ2YmY1ZmZjMmU0MmU5NTRmZDRiMCBsZWdhY3ktdHJ1bmsKKzM5NDM0IGJhZWQ4YjdkZWI1NmQxYzk1YWQ5NDBjNTViOTAxY2MzZTkwN2FjOWMgbGVnYWN5LXRydW5rCiszOTQzNSA5YjIxMDQwMTFmNzAyNmE1Y2M5NjFlMGY1ZWUxMjhiMTJkNjExMmI0IHJlbGVhc2UyNC1tYWludAorMzk0MzYgYmI2NzcwNzlmODI3Y2UyMDE2NWFhMGNjZjMxMGRkYzZiMzBmYTBkZSBsZWdhY3ktdHJ1bmsKKzM5NDM3IDBlODk2NGY1MzczMmJkYzkyMGM2Y2YxMGVlMjlhOWMxYmI5YzVmMzMgYXN0LWJyYW5jaAorMzk0MzggNTE2ZWQ2MGE4ZjljYWY2NzBmM2QwOTcxODNmZWU0MTUwNDU4ZWJhMyBhc3QtYnJhbmNoCiszOTQzOSA2MDYxYWFhNDRlYmM1MzVlNDliNmI4MzcyYjM5MTQ4MTQ1NGNjYzc2IGFzdC1icmFuY2gKKzM5NDQwIGQzMzJiMjE2OGNiMjQ3MjY5YTQ2ZmM2YTVmYWJhY2ZkNzM2YTQzNTggYXN0LWJyYW5jaAorMzk0NDEgY2Q3ZDZjNmYyZGIyMTc1NGUyYjIwMzk3N2IyNDU3ZTI0OWVhM2VmMyBhc3QtYnJhbmNoCiszOTQ0MiBlMTU4ZjFlMTdhYjRiNzE1OWFjMWZlZjYxYTU2ODI2ZmY5NWI3Y2ZkIGFzdC1icmFuY2gKKzM5NDQzIDA2ZWZlZWM3NGQ1OWE1MjEyNDk4ODdhOGViN2Q3M2Y1MDAyZWYxMWEgYXN0LWJyYW5jaAorMzk0NDQgMzQzOGVlYmE1OGMzOGE4ZmQzNjYzNGNlZDYwM2IzNWU0YmU2OWUzZSBsZWdhY3ktdHJ1bmsKKzM5NDQ1IDgxYTA2YTlhMWFjNDdjNDk3YjljOGM4NjMxNTA0N2E4MzAzNjRmNWYgbGVnYWN5LXRydW5rCiszOTQ0NiBhYjNkZGJiZDA4NjJjOGY0M2VmNzEzYzg0ZjA3MjY4Y2E5ZDZmZjY1IGxlZ2FjeS10cnVuaworMzk0NDcgYmJmODE1N2QwMzk4NGU5NmE5YTg2Nzg4OTg4MDVmZWEyNzE5OTM1OSByZWxlYXNlMjQtbWFpbnQKKzM5NDQ4IDRmYzdhN2VkY2I0YjZhZmJjOTQyNDE5NmExMzAyZDBmNTE1ZDAxYTggbGVnYWN5LXRydW5rCiszOTQ0OSA2YjhjNTU4Nzc3NTVjN2ZkZWUwNTQzNGE2ZTk4OTFjMTg2YmI1ZjA0IHJlbGVhc2UyNC1tYWludAorMzk0NTAgMWEzY2Y5NmM4ZDQ2NGJkNTQ1NDg5MmQ2NDc1MGUxZjFlNjIzYTZkMSByZWxlYXNlMjQtbWFpbnQKKzM5NDUxIGJjZDk4MTEyMzVkNDk2MmJlMDRmYjZkODc1OTk1OTljODg3OTdiYTEgYXN0LWJyYW5jaAorMzk0NTIgYTE1OTU4NGRiNjVjMTM0MTU3ZDU2MTI4YjBmMDMzNzgxYjU1YWU4YSBhc3QtYnJhbmNoCiszOTQ1MyBiYTg0NGJkN2EzMmI2YmI2NTEwNTMxYTYzYWIwZGMwMDI5MDhkNjY4IGFzdC1icmFuY2gKKzM5NDU0IDQ2ODFhOGZhNDZkMDZlY2ZjN2E0YzY3NzQ0ZmQzNTgwY2NkYzQ1OGYgbGVnYWN5LXRydW5rCiszOTQ1NSBjZTViNzUzMjUyMGE4N2Q5NDY3NDAzOTYxZjZiOTg4YjNhNDQ5NzQ5IGxlZ2FjeS10cnVuaworMzk0NTYgMGVhZTUyMTlmM2I4MjRkMGZlNjI3YTFkN2RhNDczN2FiZTQ4ODg0NSBsZWdhY3ktdHJ1bmsKKzM5NDU3IDNlNjIxMjExM2U4MmEwZGNiYjA5ZTllMDk1OTU3MjJmNjU1MTUwNDIgcmVsZWFzZTI0LW1haW50CiszOTQ1OCBhMTg1ZDY5NjMwYjM4YTI3OGNjNzQ2NTAzMTJjZDFiZGE4YjhkZWVlIHJlbGVhc2UyMy1tYWludAorMzk0NTkgYzM1M2MyNzgyYWUxNTk1ZDVlNDc1NDc5ODJkMDQ0OTIyNzM1YWZkZCByZWxlYXNlMjMtbWFpbnQKKzM5NDYwIDk3ZGM4ZjA2YzRmYWI3ZDk1NGFiNTNkNjIwMDAwNGQ5MzcwYTYzMDUgcmVsZWFzZTIzLW1haW50CiszOTQ2MSAwYmNiMzAzYjM0MWI2NjRiOWUxNjU0YzRkNWE4YWM1ZTBjM2UxNGZlIGxlZ2FjeS10cnVuaworMzk0NjIgMGZlODExN2I3NjFkNzRhZDFhMmVmNzIwNDhmZjUxYWIzNGNhY2QzZSBsZWdhY3ktdHJ1bmsKKzM5NDYzIGZlMGNhNjA0ODI2NzAyNzcyMmNiMTZkODE3YTM4ZmQ4YWIzY2Y4Y2IgYXN0LWJyYW5jaAorMzk0NjQgMDc5NTZkNGE4ZTRhYmJkZDc1YzFmNmFjM2YzOGNlZDdkNTFmNWY4NCBhc3QtYnJhbmNoCiszOTQ2NSAxMjlhYjIyYzRiMTlhOWNhNGQxOWU3Y2UyOTVlNzliZDUzZjFjNzk3IGFzdC1icmFuY2gKKzM5NDY2IGY1NGU1MGM1M2E3MmQzOWM2YWRkN2Y2M2I5YjMxNTc0ODg2NTI1MjMgbGVnYWN5LXRydW5rCiszOTQ2NyBjODkzY2FlYjExMzcwNTc5Y2E2MzY0ODM4ZTMxZTIxNTg4NDNhMjYxIGxlZ2FjeS10cnVuaworMzk0NjggMjJhNDA5M2I1MTUxYzY5Yjg3Mzk1Y2VjMjY5YWMwNmY2ZmFjY2NjYyBhc3QtYnJhbmNoCiszOTQ2OSBkYWYzMzhlY2RjY2M2YmY2MTBhM2Y2NDY4MmM3MzBkNDQ2MjZlMTE0IGFzdC1icmFuY2gKKzM5NDcwIGI3MjAxMDRiN2RiOTE2NWEwMzhhNTUzNzhiMWU3ZjQ1M2ZmYWQyNWEgbGVnYWN5LXRydW5rCiszOTQ3MSBiYTQ0ZTllMmI1NTQ3MjlmNzIwY2RkN2NjY2VmOWVhMDBjYjIzOWEzIHJlbGVhc2UyNC1tYWludAorMzk0NzIgOGZhODNhOWViYzZlY2NlY2ViYjlkMDk1YTE1OTFhZjcwYmRlNjRjNSBsZWdhY3ktdHJ1bmsKKzM5NDczIGVkNjVlMGFkMjIxNTk1Yjc4Mjk2NDRmNDI5NTlkOTNhMWQ0ZGI1OGYgbGVnYWN5LXRydW5rCiszOTQ3NCA3NzE4NDdjYmUzYjZjYjY4NjAyNDQ3YWQwN2FmYzBiYjhhMWM1ZWE1IHJlbGVhc2UyNC1tYWludAorMzk0NzUgZjYzZTY5NjBjNWNmYmUyNmIxYjU5YWYxYWEyMjE5YmZhOGVhZWRjMiBsZWdhY3ktdHJ1bmsKKzM5NDc2IDBiN2ZhNmYwNTUyYWJlOTA1MWVlNGY0YzMzY2RjZjY0NzllNjExNzIgbGVnYWN5LXRydW5rCiszOTQ3NyAyNmJhM2Q0ZjRmYzQxNTU3ZmQyNmUzZGZlYzJkM2Y2YWZhOGMxOTdlIGxlZ2FjeS10cnVuaworMzk0NzggYTU3ODAwMmM4ZjY1OTkyMjBkMGJhYTBiNjAzODhiZmM3ZWI4YWNlOSBsZWdhY3ktdHJ1bmsKKzM5NDc5IDE1YTg5NzVmN2ZhOTNkNWEwNjhmN2UyYmZiNGIyNjRhNDdiMDk1NDYgcmVsZWFzZTI0LW1haW50CiszOTQ4MCAxZjJhZjI1OTk2OGI0NTVkNDBiMzVhZDdjNDUxNGVjZTQzOGNlNzk2IGxlZ2FjeS10cnVuaworMzk0ODEgMGEyOGQ0ODYzNmM4NjQzZmRmY2ZjOGI3MjA1MTc1MTkwY2NhMzM2MCByZWxlYXNlMjQtbWFpbnQKKzM5NDgyIDVkNTg0NDNmNDg5YjRmZDI5MTBhNDBmMDFkYTM1NmE1YjEwYmYxNzAgbGVnYWN5LXRydW5rCiszOTQ4MyBlN2ZkODU1NTBiYzBiNTliOGY5NjZlYTJlZjVlOWFlNDMzZTIwOTQxIGxlZ2FjeS10cnVuaworMzk0ODQgOTUxNmJhNTRiOWRmNDQ3NTdkZTQ4MjhiYmZhMjdiNDA2YjAwMDg2MCBsZWdhY3ktdHJ1bmsKKzM5NDg1IDVkYjI3MzE1ZWRjZmZhNWE2OGViN2ExOWNlMTVkODNmNGU4MTQ3OTQgbGVnYWN5LXRydW5rCiszOTQ4NiA0YWJhZjY5MjM0MzcxOTRkYmM2MzIwYWY2YTUxMmVlZjQzNGZlZWMyIHJlbGVhc2UyNC1tYWludAorMzk0ODcgY2VhYzAyNzc4NTIzNDliZTY1ODljMTNkYWNiYjBlZWNhMDk5NWM1YSByZWxlYXNlMjQtbWFpbnQKKzM5NDg4IGRlMWM1ZDE3ZmRlNmM2MzBlOWY1MGFhYTVmNDYxZWRlZjMwNjM5ZWMgbGVnYWN5LXRydW5rCiszOTQ4OSA0MzZiZTJjODkxNDAyZjRkY2VkM2ZkOTY2MjcwNTFlOWY0OTU5ZGIxIHJlbGVhc2UyNC1tYWludAorMzk0OTAgN2RkNDMxNzUwYmQzNjVmZDVkMzcxMWQ0MzcwNjNlNzc1M2ExYjA4MyBsZWdhY3ktdHJ1bmsKKzM5NDkxIGVjZDYxYzkyYWRmMzE2MmU2MzEwMjczZmY4ZWUzNjc3MTkzODMwOTcgcmVsZWFzZTI0LW1haW50CiszOTQ5MiA5NTIxZTM4MDM4MGYwZWEzZWM0MzNlMmZiYjVlZmQ5YWNhNTY1MjZjIGxlZ2FjeS10cnVuaworMzk0OTMgNmJkZTZjZDIzOTU0YzcxMjU3MzU0YWIzMjMyYTc5ODFlMDhhOWQwYiBsZWdhY3ktdHJ1bmsKKzM5NDk0IDE3YjFkZmQzY2JiYmQzM2ZlYzE2NmI5ZTk4NDcyMWNlNjQwZWY2ZmYgcmVsZWFzZTI0LW1haW50CiszOTQ5NSBjYzk0MTZlZTU4ZTE5ZjI4MmFiZDRjMTFjMjU4MWE3MmM4YzEzNDg0IGxlZ2FjeS10cnVuaworMzk0OTYgZjczNzhlOTdiNjZhMjQ3ODdjZDY3YjdkYTVmYmQ1YTJkOWI4MDRiMCByZWxlYXNlMjQtbWFpbnQKKzM5NDk3IGU3M2FjY2YzZWRkYjRhMzJmOWNjNjUxNTBhOGFmZDI0NjA0ZDM3YjcgbGVnYWN5LXRydW5rCiszOTQ5OCAzMzZiNjY0YTIyMTBlOTJkOTRiZTFkOTZiMzMzOGExYjcwZjVhN2I5IGxlZ2FjeS10cnVuaworMzk0OTkgNTgyNDEzMGI3YWMzNTBmZjI3ZGRhZGE1OTBhYTE3NDNmMzgxNzQxMSBsZWdhY3ktdHJ1bmsKKzM5NTAwIGE3Y2NjYzM5MTIyODAyMmE4MmI3MjEwM2Y5ZWM0NjhkNjBlYTRlNjggbGVnYWN5LXRydW5rCiszOTUwMSBkYzg1Mzg4NDViMGM4OTBlYTc5Mjc1NGI0ZjUyZGI0Yzk5NDkwNzJhIGxlZ2FjeS10cnVuaworMzk1MDIgMzYzZTZkZDA3OWZjYWMzOTdmM2U5ZDEzNmJiMzUzY2IyN2UzNDA2YyBsZWdhY3ktdHJ1bmsKKzM5NTAzIDM5ZGJlM2JlMzI3YWFhZmM3YmE0Yzk4NDhhOGZhNTI1MjgzZDhkM2QgbGVnYWN5LXRydW5rCiszOTUwNCBkNTA0YTMwMmJmNTNlM2EzZGFjYjRjZWQ5NGM3MTA4ZTBlY2Y5MWU3IGxlZ2FjeS10cnVuaworMzk1MDUgZjE3ZWQzYjYyYWRhYjE1NjY5NDc4Mzc4YjBkMDgxY2NhZDRkMjlmMyBsZWdhY3ktdHJ1bmsKKzM5NTA2IGVhNTNlN2Q5OGIwMDZhYTIzOWY5MzM0MzE3MzU4MjVhZmRlMzU2OTcgcmVsZWFzZTI0LW1haW50CiszOTUwNyBmYTczNzY1ZThlZjUxZDg1NzM2OWFmMWMzNzU5ZmMxMGQyODRmYTdmIGxlZ2FjeS10cnVuaworMzk1MDggNDZmMGE0NGY0OWU2NDNmZTdjYTJjMmFkMzVlNzUwZGZlNjkwOGNjNiBsZWdhY3ktdHJ1bmsKKzM5NTA5IDk2NmRlYWMxNWE4OTBkZjczYTBlNmU1MGJiNTg2Mjc4YmY4Y2I4NGUgbGVnYWN5LXRydW5rCiszOTUxMCA4NzU3MzlkNzJmYzFjN2I5ODZlZTYwNWRlNWM3OTViNDBlMmExYWE4IGxlZ2FjeS10cnVuaworMzk1MTEgYzBkNmJhZTM1YjRlNzhmYTIwZjc3ZjMxNjM3ZGYyYWI3NTRjZDBhZCByZWxlYXNlMjQtbWFpbnQKKzM5NTEyIGU0MWZkYTlmMGZkMTAzM2NmMTkxYThhZGVmYjRiMTI3YTIwMTcxNDggbGVnYWN5LXRydW5rCiszOTUxMyA3ZDBhNWFjMjQ2NjlhYjZiZTQ3MGFkOTlhYzcxZGI4YTBhMTRmZmEwIGxlZ2FjeS10cnVuaworMzk1MTQgODEyNTkwMDliYTJjOGYwMjQxMTFjNzMwOGJjNzc0NzZlNTQ3MDg0NSBsZWdhY3ktdHJ1bmsKKzM5NTE1IDI1Mzc4YmRiMWIzYTBkYThjZGRjZWY0MjA4MDdjZjk0ZTA2ZjllMzggcmVsZWFzZTI0LW1haW50CiszOTUxNiBhY2ZjMGUyMmNkOGZjNThlNmIyMjI2YTY2ZGUwZGVhMTI3OWEyZWMyIGxlZ2FjeS10cnVuaworMzk1MTcgNzZlMjk1ZWE1MTUyYzk4NDZmMWUwOTY3M2FlNDcyNzc5YjY2OGE2NCByZWxlYXNlMjQtbWFpbnQKKzM5NTE4IDExYTI2NTBlODU2OGRjMGE3NTFiZGE2Yjg0ZDdkMDU2ZjAxMzAyOGMgcmVsZWFzZTI0LW1haW50CiszOTUxOSBiYmJiN2RkYTMyZjNlZTA4NTliODYyMzNiZjZmMzdmNTdjYjI1YWQxIGxlZ2FjeS10cnVuaworMzk1MjAgZDc5YWYwNjUxMTU1MDZmYmQzMDgzZWIwODMyMzQxZjNlYjU5NWUwNSBsZWdhY3ktdHJ1bmsKKzM5NTIxIGIxOWNmNzNjNTRhNzgwMDFkNmQ2ZDVhMTNkZmIwNWQ5N2E3MWIyYTEgcmVsZWFzZTI0LW1haW50CiszOTUyMiA3MjRiYmQ0ODlhZDQ3MjdlOTA1MmM2OWI1NjM0MWIyYjViMmNkMmE5IGxlZ2FjeS10cnVuaworMzk1MjMgNTdmNjMwYTlkZTI2MTk2MTZmMmIyMGFlMWMzNTdmYjQzZTAxMjg1MiByZWxlYXNlMjQtbWFpbnQKKzM5NTI0IDliN2QxMTdlYjRiYzk2ZGNjYTc0YzZjOGNlZThhYmM5MTg0OTE5MmUgbGVnYWN5LXRydW5rCiszOTUyNSAxMTc0NGY3YmI0N2E4MmQ3OGIzNjlmOWJlMzdlNmY3MzAwYzI5ZWFlIHJlbGVhc2UyNC1tYWludAorMzk1MjYgNjhhZDUyYjA0NDViZGI3ZjIyOGFlYzc3MWNmNzgzOGI1MTMzMzk0NyBsZWdhY3ktdHJ1bmsKKzM5NTI3IDQxNDEzZjIzMzQ1YjRmNzVlMDQ1NjcxNDgwYjgwOWNkMmEzZDk2Y2EgcmVsZWFzZTI0LW1haW50CiszOTUyOCA4YTZjOTlmODY1ZWJkMzljZmU3OWM1MGVhZGY4NDE1OTk0ZjFkYjVkIGxlZ2FjeS10cnVuaworMzk1MjkgOGFkOWEyZmE4ZWIyYTYwNzhmOTZhZjMwYzgzZTJjNTU5ZGFiMWVlZCByZWxlYXNlMjQtbWFpbnQKKzM5NTMwIGJmYmUyYzliMTIxNTk4YjZlNWEzZmMxNTgyN2YyMDQxNDQwZTc0MWMgbGVnYWN5LXRydW5rCiszOTUzMSBmMjM1ZThlZjBkNTY5MDRmZTIwNGFkYWJhNzM3NWRkNzI3MmE2MmZjIHJlbGVhc2UyNC1tYWludAorMzk1MzIgMDdlYWY2MGY3NTY1MGIxNzBmMzVkMzliOTNhZTVmMWRhMjlhZGJlMCBsZWdhY3ktdHJ1bmsKKzM5NTMzIGI4ZDFiNDUyOTIwNzExNjMzNjhiNTdjY2U3MWI0MGMzZTM3OTMwZTEgcmVsZWFzZTI0LW1haW50CiszOTUzNCBhYzg4MDQ0Y2RlNDg2YjAwYTNlNDc4ZDc3ODViN2ZkN2FkMzJiZGY4IGxlZ2FjeS10cnVuaworMzk1MzUgZGZhYmYwYzdmMWFkZmQxN2M0NTI2Y2YyYmQ5Y2EzZGNiODAyZmI4NyByZWxlYXNlMjQtbWFpbnQKKzM5NTM2IGM4NjU1ODg1ZTQwNjVkMzU1MzM4MzQ5MDkwOTEzZjg1Y2FmZmRmMzUgcmVsZWFzZTI0LW1haW50CiszOTUzNyA2ZGJmYmVlNTg1Y2M4M2ZlMzMyMzI2NDZjNmQ3OGE4Y2E4NGJiNWJlIHJlbGVhc2UyNC1tYWludAorMzk1MzggMTUyYWU3MTkzYzlhNzdlYTJiYTBjODdjNGM3NDc2MGQ4MGJlNjA1OSByZWxlYXNlMjQtbWFpbnQKKzM5NTM5IGZhMDg4MWZkNDliN2E5NTA1ZTE3Njk2NWNmYTdhN2M4NjQ3MDQ5MjYgbGVnYWN5LXRydW5rCiszOTU0MCA4YmFkMWJmYzMzMTk5MmM4ZTFmMzQ5ZWQ1MmJhOWUxNjQ1Zjk5YjExIHJlbGVhc2UyNC1tYWludAorMzk1NDEgMjY5MWNiZGFlNTliZjM1NjE3ZjFhMzM2ODA1MDYzZWRmYWY0YzI3ZiByZWxlYXNlMjQtbWFpbnQKKzM5NTQyIDkwOTMwZDJkMGMxOTEwNzZhMmEwMjdkNTlkZDdmMjdlZjMzNDk1YmYgbGVnYWN5LXRydW5rCiszOTU0MyAzNWM0MzY3NDA4M2E5YTM0MTMzZTdhMGZhMjRmMzEyMjc0NDFiMWQzIHJlbGVhc2UyNC1tYWludAorMzk1NDQgMWIyNWZlODgzNGFlZmQ3ZWNiZWNkYjkwMDNjNDI2ODQ5N2I1OWFiYyBsZWdhY3ktdHJ1bmsKKzM5NTQ1IGZkNTFjZThkMzVhYjRmZDQyYWY1ZWZmNjFkMDJkY2MyNzBiNDQzYzEgcmVsZWFzZTI0LW1haW50CiszOTU0NiBjZDMxMDI3YTcxNjdhMzc1NDhmMjg1Njc5YzVjOTY3YTBiYmVhYzZlIGxlZ2FjeS10cnVuaworMzk1NDcgZDNhZTc5MzBjYjkzOTUzM2ZjZmZkNDRkMTY5NWQ5MzYyZWQwYTRjNyByZWxlYXNlMjQtbWFpbnQKKzM5NTQ4IDczZmUyMTYzZjBiMzBkMzNhMDI2YzhiYTZkMjUyOTBlYTUyNTkwNjIgcmVsZWFzZTI0LW1haW50CiszOTU0OSA1YTZjNDgzZWQ2ODlmNDEwNTg3ODQyODgyMDdlYjk5MGRhMzEwNDZjIHJlbGVhc2UyNC1tYWludAorMzk1NTAgYzI4ZDBlZDg2ZmYwNThiOTgxMDBlNmI3NzEzMDRkNDJkMTE1MTY5OCBsZWdhY3ktdHJ1bmsKKzM5NTUxIDhlZjUwMGM0NTA2YzcyYjc0YmY5ZmEwNTAwYTk1OWZkZDNkNTBmZjUgbGVnYWN5LXRydW5rCiszOTU1MiBmNGMyYzYxY2I1NjA5NTk1Mjk5NDEyNzJlMTgwZGU0NjMyNjFlMjVjIHJlbGVhc2UyNC1tYWludAorMzk1NTMgMzc4NTljNmFkNWJiNWY3ZWJhZDE5YTE2OWQ5OGRlYTQyNmMxMjE1MiBsZWdhY3ktdHJ1bmsKKzM5NTU0IDUyYzY1ZDczZmI3NDAxOWY2ZjlhYjU0N2MwZmIxODUxMDliMmIwYmYgbGVnYWN5LXRydW5rCiszOTU1NSAwOThlYTFlMThlOGQ5NzYwNGQ4ZjZmMThkMGFmOWRhMWE4YTM1YjkwIHJlbGVhc2UyNC1tYWludAorMzk1NTYgMGFlMzA3MjEyNzU1MGFlMjRiNzQyZjFiMzJiY2QxYzQxNTJiMTJmYiByZWxlYXNlMjQtbWFpbnQKKzM5NTU3IDBkYTM5NzVmYjBiYmZjZjc4MmQ4YzBmNjdlNjVlNTAyYjEwNmE3NDcgcmVsZWFzZTI0LW1haW50CiszOTU1OCBlNjExOWQ1NzdjZDM1ZmQ4ZDUzODVlNTBjYzFmZGFiZTRjYmU0Nzk1IGxlZ2FjeS10cnVuaworMzk1NTkgMDJhOGMwNjQzZjViY2UyNjZiZWFiNzUwYWI5MWM3MDM2ZWY3ODE3YyBsZWdhY3ktdHJ1bmsKKzM5NTYwIDFjZjE3MDM3YTJjYThjNzU4MTc3Y2I3ZGFhMTQxYTAzOGE0NjE4MjMgcmVsZWFzZTI0LW1haW50CiszOTU2MSA1ZjI3ODU3MjJjYmFkMDM5NDFhMjE2NzcxNjdjNzk2ZjczZjNmZWEyIGxlZ2FjeS10cnVuaworMzk1NjIgNDgwNmNiMDA5YTljZTYyM2NlZjhjMWExMWFhOTgwMTNkMzQxYTYwMiByZWxlYXNlMjQtbWFpbnQKKzM5NTYzIDlhMmUyMDMxOGM5ZjVmYmRiNzhhOTE5NDRhZjA4OGQ5ZWZjY2QzYWQgcmVsZWFzZTI0LW1haW50CiszOTU2NCA2MjA5OTJhYTBhOWVmNTgzZDM2YmY5M2M0YzExOWNkYzI4MmVhMDk3IGxlZ2FjeS10cnVuaworMzk1NjUgYjY4YjEzNWI0NTUyNjFkMjgyOTk3MDdjNjZlNTMwY2Y5MDg3NDlkNiByZWxlYXNlMjQtbWFpbnQKKzM5NTY2IGJjZDA1Y2YyZDYxYmE4MGNlOWI1NzRiOTM4N2EyZGIzMjU1M2Y2ZTcgbGVnYWN5LXRydW5rCiszOTU2NyA4Y2NhZDczMjMxNWY4OTJkYjUzYjNkYjUxOWQ3N2U4ZDAwNGU0YWNmIGxlZ2FjeS10cnVuaworMzk1NjggYWZkYWRkNTY5MTk3MDVjMWUxOTE5NTFmMmJkNGNiNTRhM2I3MDcxNyByZWxlYXNlMjQtbWFpbnQKKzM5NTY5IDVjMGMwNmUyMjZlYzA2ZWE2NGY0YTkwNmQzNjkxZTYwNzA4MDhhN2IgbGVnYWN5LXRydW5rCiszOTU3MCA0MGRkZjM2NmY1YTE1MmY2YmQyMGU5ODIwOTIxOTI5YmQ5MmNmMzQxIGxlZ2FjeS10cnVuaworMzk1NzEgOWI5OTRjNjdlOTA5YzA4NmYwMjYxNzExYjk5YjY0YTc3NGI5MTAxZiBsZWdhY3ktdHJ1bmsKKzM5NTcyIDg3M2ExYjJlZmRjNzM2NTc2ZGEwNDg0ODE0Y2Y2NTYwODljMDFjZWQgbGVnYWN5LXRydW5rCiszOTU3MyAyYzI4MGU0NjYxZDBhMDY5NDQ0Y2EyMTAxNGI1YTRhZDU2NmZmN2JhIHJlbGVhc2UyNC1tYWludAorMzk1NzQgMzllYjZhMjIxY2YzMTI0MjIxYTE0YjM4ZTYzZDQ5OTFjZjBjZDhmYiByZWxlYXNlMjQtbWFpbnQKKzM5NTc1IDIxYmM2MjYyZWI5OTIwYWM4YzJlNTdlYTFlM2YwYmZjN2RlNmEwYTggcmVsZWFzZTI0LW1haW50CiszOTU3NiA4OWNmMmUzZmU3MjhhNjhmNGJjNjZmY2E5YzBhZjc5ZTBlMDg1YTlhIGxlZ2FjeS10cnVuaworMzk1NzcgZjg2Y2QyNzc4NmFiMzE5YjczNjU1MTBiNTYwNTAzZjY2NWEwZmFhNiByZWxlYXNlMjQtbWFpbnQKKzM5NTc4IDc3NTcxZjcxYjNlNjdiMGJmM2Y1ZDg5YTQ2M2NiZTMwNTAyYjkzMGEgcmVsZWFzZTI0LW1haW50CiszOTU3OSA1YThiZjhlN2QwMTAyYzBlMGIxZWZkZDgxYWQwMGI3MjA3MWYyMWJlIGxlZ2FjeS10cnVuaworMzk1ODAgYTY3MGE1ZGQxZmM2YWE5MTdiYjYyYWQ0NTYwNGMzZmNiNjgzZjQ5YSBsZWdhY3ktdHJ1bmsKKzM5NTgxIDIzZGRhOTJkZTk5MzhhMjhmZjU1NWVjODEzOGY5NDQ2MGIzMTIwNTEgbGVnYWN5LXRydW5rCiszOTU4MiAxZjIzNmU1OThhZTk3NjMxZDRkYjQ0NzIzMDI1MDBmZjMzODQxYzNiIGxlZ2FjeS10cnVuaworMzk1ODMgYWYzYTA2NjI1YTZlNTljMmRiZjkyYjQwZWFiYjc0YmMyZDQ1NjgxYiBsZWdhY3ktdHJ1bmsKKzM5NTg0IDM1YTk5ZWNjYWNhNjc5MzI2ZjVlNWM5OTBiM2I5ZjZhNjk0Y2Y5YmQgbGVnYWN5LXRydW5rCiszOTU4NSBlY2I3ODg2M2E0ZWU3ZjMxNDMyYjc5ZmNjMTQzNjE0OWMwNTUwZGMxIHJlbGVhc2UyNC1tYWludAorMzk1ODYgN2IyYjhkYjk4MTM2MzM1MDdjZTU5NjVkZjM4N2QyNDU1YjdlMDRiMiByZWxlYXNlMjQtbWFpbnQKKzM5NTg3IGM2ZDdmMWZlOWQxZWJlOTFhNmFiYjhmMzI1ZTBiOGNlNTkyMGQ4ZmYgbGVnYWN5LXRydW5rCiszOTU4OCA5MGJiNzExMjIyNTdjMTEyM2NlYzg5YjU1MDliN2I5MjgxZWZjZjQ2IHJlbGVhc2UyNC1tYWludAorMzk1ODkgNGQxYmQ5ZDBjMDA2ZGI2NjNlY2U1NzljOGEyNDBlZTZiYTM3YjA3MyByZWxlYXNlMjQtbWFpbnQKKzM5NTg5IGQwMmQzODc1NTRlMjAwYmVmY2VlYzk5OWI3ODhmNDU5M2I0MzRiNDkgcmVsZWFzZTI0LW1haW50CiszOTU5MSA3MDkyN2M3OTlhMjFlMjZiM2I1Y2QwZjZmYzEwNWNiYWY5NzFjZGY0IGxlZ2FjeS10cnVuaworMzk1OTIgOGZmZWVkYjYwNmQzMzBjZGQzYTRkMTZiYTY3NmExYTZlYTMwYjRjYyByZWxlYXNlMjQtbWFpbnQKKzM5NTkzIDZmM2QyMDk1NTVlYjU1ZmY0OGY1NWExZDk0NWQ0ZWZmMGFhMjFlNDggbGVnYWN5LXRydW5rCiszOTU5NCA3MjY2MGMwODY2YTE5ZjAwMzZlNzIwODE3OThiZWJiOGY2ZTFlZjFhIGxlZ2FjeS10cnVuaworMzk1OTUgNzc0YmY5YTM4YjJhYjk0NjY2YzVmYjY1NGRhNGUyNGUyNGE1Y2EzNiBsZWdhY3ktdHJ1bmsKKzM5NTk2IDE3YTgyYmE0NTQ1MmFjMWI1YTEyZGU5ZGRkNDMzY2ZhNjM5YTM3NWQgcmVsZWFzZTI0LW1haW50CiszOTU5NyAzOTljNDExNzZiYjc5YTJmMjQ4NWM5ZDRhMzgwN2E4YzIwOTVkNGE1IHJlbGVhc2UyNC1tYWludAorMzk1OTggYTk1NzY1ZjY5MjgyNTFkODZmMGQxMzU3ZWI0NjY0MWFjNDgzMzkxMiBsZWdhY3ktdHJ1bmsKKzM5NTk5IDRlMGQyYTdmNWYxNTQ0MWJkYzE1MmZiMWUwY2E0ZTAwYWZmYzA1ZjcgcmVsZWFzZTI0LW1haW50CiszOTYwMCA3NzdiMjlkOTEzYTYyMmEyZTk5ZjgzYTdlZWEyM2VhZmIwZjY3MDlhIHJlbGVhc2UyNC1tYWludAorMzk2MDEgNDk1ZTdmZmFkN2U4Y2MwNjQ3YmZlMmRjMzA0ZTkwY2NkZWZhM2ZjMCBsZWdhY3ktdHJ1bmsKKzM5NjAyIDY4N2ZhYTljZjZlYjA4YzE2MmVlMzkyZjU1MDRmNDg4YmMzMjY2MzAgcmVsZWFzZTI0LW1haW50CiszOTYwMyBjMjYwZDNiN2Q1ODI5ODMwNDAzZDE1ZmJkNTRhNzQ0ODk2MDQ4Yzg5IHJlbGVhc2UyNC1tYWludAorMzk2MDQgMDNjZmRjYmM0ZDFmM2EzNTNkYzM4NTA3ZmE0MGMyZmY3M2QyYTBhMSBsZWdhY3ktdHJ1bmsKKzM5NjA1IDQ1YWFhNDM2Yjk0NTEyNjA2MzEyNDIyMGJiZDUxOGVjODg4MzdjYmQgbGVnYWN5LXRydW5rCiszOTYwNiAzMDI4ZTMwYWE4MzU1OTAzNWNlZjI3MmI0N2RiYjBiN2RiYjA3MTAwIHJlbGVhc2UyNC1tYWludAorMzk2MDcgMjdlMTQyNmI3ZjMxZDY0MmU0MTE0YTJmYmY2MTNkOGRmNjQ4NGYyNCBsZWdhY3ktdHJ1bmsKKzM5NjA4IGUyMjMzNGIxZGE2N2ZiMjkxNmU2ODZkM2M0ZGY5Y2U2M2I1Yzk3ZjcgbGVnYWN5LXRydW5rCiszOTYwOSA3ZGQ0ZTZjYjlkMjc1MjgzZWM1ODBhYjcxY2ZhM2M2MTllMTBhZmVkIGxlZ2FjeS10cnVuaworMzk2MTAgNjhkYmNiZjA1MTZjNTc2NTg2MjA3OTNlMjg0NjNhNzgyMjA4OTk2NSByZWxlYXNlMjQtbWFpbnQKKzM5NjExIGUzMTU2NGM3YmRiZjdhMjZiM2Q4MzFhZTgwOGFjZmFjNTYxNzE4NjAgbGVnYWN5LXRydW5rCiszOTYxMiAxZTdiNzU1MTk0YTRkZGI3NDk1ZTQwODFjZWE2NzdhOWY1MTMxNDM2IGxlZ2FjeS10cnVuaworMzk2MTMgNDA3YWM0OTlhNWEzOTFmNjYwZTRjZDY1YTNkZTNlOWYxOTJhMjU5MiBsZWdhY3ktdHJ1bmsKKzM5NjE0IGUwYTlmNjZiNzAxNDY3MTZiNmMxNzRlZmZlMTY0MzhkZmRhOWU0NzIgcmVsZWFzZTI0LW1haW50CiszOTYxNSBhZTUzNmU2NmU4NmY1ZjAxYzE4Y2Q0MjVlMDJkZmY2N2RmNzcxYzMxIHJlbGVhc2UyNC1tYWludAorMzk2MTYgYjY0NjM5Y2VhM2VkODdmZmY0ZWMwZTRhOTJiNmU0MzE1YmJiN2NjZCBsZWdhY3ktdHJ1bmsKKzM5NjE3IGY1YmQ3ZWFkMTZjNDcyMzcxZDU1YWExOWFlMjQwMzY4ZDllZDFmNmQgcmVsZWFzZTI0LW1haW50CiszOTYxOCA0YWU3ZGFhZjBhNjYxMTg4NDQ5YWI4M2RmYTlhMzc2Y2RhZDk4YTgxIHJlbGVhc2UyNC1tYWludAorMzk2MTggOGQzNzI3NmZkZjA3N2Q2ZDIzZDk2M2QzZjdmOTUzODFkMDBmMTkyNiByZWxlYXNlMjQtbWFpbnQKKzM5NjIwIDZiNDJlZWI1MjE0ZGE4YTAzMjJkMzE2MmU1M2ZlZTMxOTJiOTdjYzQgbGVnYWN5LXRydW5rCiszOTYyMSA4ZjJiZjE4Njc0Y2JlOTMyODIwZjNlOWQ0MGQyYTI4M2ExZGM5YmJiIHJlbGVhc2UyNC1tYWludAorMzk2MjIgZDMzZjRmYzg0ZDRhZjJiMTllNjNmNjAzMjM1YTkxNDk3OGJlY2M5MiBsZWdhY3ktdHJ1bmsKKzM5NjIzIGMzNzgzYTEyYTFiYzE5ZDNkMGViMjgxMjQ4NzdlMjFiZWMyOGEzMmEgcmVsZWFzZTI0LW1haW50CiszOTYyNCBjYTg0NDUxN2M4NDk1MmM0NTY0MzBiZDU1YjYwNGIwMzcwZmVmNTc0IGFzdC1icmFuY2gKKzM5NjI1IDZhMjA4MzFkMzU3ZDU3Y2Q2MjRiYWI5MGRlMzczM2U1MWViNTEzMTMgbGVnYWN5LXRydW5rCiszOTYyNiA5ZWYyNWM4OWQwZDZjMzA2OWNkODBhYjk1OTdjMGEyNzAwZTE2MTU3IHJlbGVhc2UyNC1tYWludAorMzk2MjcgYjVhMDEyODJkYWRhZmM5OWNjYTRlYTYxMTIzNDQwNTNkYjg2NzgxYSBsZWdhY3ktdHJ1bmsKKzM5NjI4IDhlYjc1YzI4ZWQ5NDFjNDMyZjVkMTNkYzE1MGZjMzdjZGI1NjEwODIgcmVsZWFzZTI0LW1haW50CiszOTYyOSBhMmNmMjU2NDJjOGVjZGY5NmE4ODZmNDIzZmQ4NjJhYjczNTFiOGVlIGxlZ2FjeS10cnVuaworMzk2MzAgY2JhMTBjNmQzNGUzODU5M2U2NmQ2YTk2OGQ1MWUwYjg3YmUwMTBiOCByZWxlYXNlMjQtbWFpbnQKKzM5NjMxIGE4M2U4ZGYxMzQ5ODYyYWYzMTg0YTYyMTlkZTU0N2VmYTdmZWY3ZjAgbGVnYWN5LXRydW5rCiszOTYzMiAxZDRkODVjNzM1ZTdjNGY4YTE5ZTYwZWRhNjJiY2I1MTE0ZmQyYzY3IHJlbGVhc2UyNC1tYWludAorMzk2MzMgNmQwNGNiMmNkZDRhZmNjYWY1ODhjNGVhZTRhYWQxMjRlNWJmZTk5ZiByZWxlYXNlMjQtbWFpbnQKKzM5NjM0IDg1NjUxZWIzZDlhOTBkMTIxYTBmNDJhNWIwNGI3NDEyZjE1MzZlMGQgbGVnYWN5LXRydW5rCiszOTYzNSA2Nzg0OGM4NzE3NjhiNTU5YzNmMjM0YTk0Zjk2YmI0ZmZjMmQ4N2Q2IHJlbGVhc2UyNC1tYWludAorMzk2MzYgNTYxMWRiNDUxYTM5YmEyZWY3YjhhNTBiYzJhYTI0NTg2MGNiYjVlZiBsZWdhY3ktdHJ1bmsKKzM5NjM3IDBiZTAwNzc1YTgwYzQ1MWMwNTE2MDFhOWM0MDVkNzY0YWZmM2M0MzEgcmVsZWFzZTI0LW1haW50CiszOTYzOCBkYzVkNzA2MjgzZDYyZmViYzQ1ODdhYmQ5YjljMjkyYmUyMjAyZjNjIGxlZ2FjeS10cnVuaworMzk2MzkgYjhlNTcxZTZkZTJlM2U1NzY3ZWIwZWFiZDY1MGEyYjk2NTRlN2U2MiBsZWdhY3ktdHJ1bmsKKzM5NjQwIGU0NTRkNmMxYjNjMWYzZmMzYzMxNzAwYjg3MGJhYzM0M2M0ZTdiMWQgYXN0LWJyYW5jaAorMzk2NDEgNjMwZmY1NDQwZGZjNmU5NDNjZDQzMTM1YzZlODViN2Q5NjkyNDc3NyBhc3QtYnJhbmNoCiszOTY0MiA3NTM0NTc4Nzk0MjU1OTBhNDEzNTk2MDg4MDMyYTFkOGJmNWYwYzExIGFzdC1icmFuY2gKKzM5NjQzIDZjM2QwYTBjMTk1NjAwODdiNTQzNTNkMjU0NmRhZTQxZWM4Y2JkOGMgcmVsZWFzZTI0LW1haW50CiszOTY0NCA4NDU0MTczMWIxNjZhNmM0NTUzYWE4Y2ZiYzlkZjc5N2YwMWY5NzI4IGxlZ2FjeS10cnVuaworMzk2NDUgZjZhMjA5YjY5NTBjYWI3M2FhMDIyYjk5YjU3YjI1MmNjYmZhOTVmOCBsZWdhY3ktdHJ1bmsKKzM5NjQ2IGNlZWQzM2VhYzQzNjE2ODEyYTI2NzFlZWE2NWQ4M2VhZjhmOTdmNDYgbGVnYWN5LXRydW5rCiszOTY0NyA1ZDUyMzZlYWU4YmQzZDYwZGY4MDM4Y2Y1OTdlMDYwNjM0NDE1ZDRiIGxlZ2FjeS10cnVuaworMzk2NDggNDEyZDIxZTMwYzEzMGUyMjc2Yjk4NDcwODlhNjE3NTQ4ZmU4N2NlMyByZWxlYXNlMjQtbWFpbnQKKzM5NjQ5IDYxMmExMjE3OGU0N2I3MDg0YzZlMTAzZDUwOTVlMGYxZWY0NjkxMmQgbGVnYWN5LXRydW5rCiszOTY1MCBkMTQ4MTNlNzhhNTAwZmIyYjkxYWM1NGNlNWNhMWQ0ZDMxOTAzZDY3IHJlbGVhc2UyNC1tYWludAorMzk2NTEgOWQ0MzM4MWMxODRjYmJiYzdkYWNjMmEyNmVkNWUwMDg1YTQwOWE5YSByZWxlYXNlMjQtbWFpbnQKKzM5NjUyIGUxZGY0OGYyODQ3YWQ4ZThkZGY2MDJiN2YyOTQwOWE2OGVjOWFmOWIgcmVsZWFzZTI0LW1haW50CiszOTY1MyBlOWJhZTJmZWJhYzgwMGUwM2JjYmNlYjdiNGU0OGFhYTNkMDk3MjUwIGxlZ2FjeS10cnVuaworMzk2NTQgZjA5NTFmZGFlZDM3YzBhZjMzODU4ZGEwYTdmZDQwNmViMTQ2YWQ0NCBsZWdhY3ktdHJ1bmsKKzM5NjU1IDE3MmZjZDljMTk1MjYxNWM4MWZkMGNhODFkOGUxMGU1NTUwNmZjZDUgcmVsZWFzZTI0LW1haW50CiszOTY1NiA4YmRkOGMyYzZjNDk1ZjhhNmY1OGE0MWZkNTRhNmQ2MzIxNmQ0OWE3IGxlZ2FjeS10cnVuaworMzk2NTcgM2UwYmI3Zjc1YWI3NjVhOWM4YTU3YjkwMTFiODIxOWE3ZjYxNWMwOSByZWxlYXNlMjQtbWFpbnQKKzM5NjU4IGU0NjZjMGE1NTBiODhjYjg3YmE0MmE1MWJiMzdiZWNkZTI4N2IxOTYgbGVnYWN5LXRydW5rCiszOTY1OSAwMmZlNWQ0OTZmY2U5OTI0NmM2M2I1MjMwYTI3MmYyZGRkYmZiNGVlIHJlbGVhc2UyNC1tYWludAorMzk2NjAgNjkwN2U0NzFiZGFjZTQwMGQyMzBhMDk0YzZmNjMwNjc2ZTRhMjRlNyBsZWdhY3ktdHJ1bmsKKzM5NjYxIDNiZTgzNTM1MDA4Mjg2MmI1YWU2ODgzZGViNDAwZjJkY2MzZTBlYmEgbGVnYWN5LXRydW5rCiszOTY2MiBmOTg3OTIzNzg5NTQxN2I3ZGQ4NTI4MTE5YmNmNDg2N2Q4YTg1ZTU4IGxlZ2FjeS10cnVuaworMzk2NjMgMjk4NWU0MmViMmQyYjA5MWNhZDE4YTYyZjNkZmViYjRiOTk1ZjQ3NCByZWxlYXNlMjQtbWFpbnQKKzM5NjY0IDMzMGMyMzA3NTA1NDE5MTA2ZjcxNjczNmUwMTIzMTUwMGZmMWJjMmMgbGVnYWN5LXRydW5rCiszOTY2NSAyZmRhN2IxNzQ3OTRkOWMwMDc4ZTliNjU3NWZlMDhmZDQxZmM5OWQ0IHJlbGVhc2UyNC1tYWludAorMzk2NjYgNTQ4YmFkMjE1NDI5ZjM5YWY5MzczN2VhMTk1Yjk1ZGRhMDJhODJiMyBsZWdhY3ktdHJ1bmsKKzM5NjY3IGUyOTk1NTYzNjEwZjcxNzk0ZWVkYzVmOWFiY2FkMDIxY2UwOGI4YjUgbGVnYWN5LXRydW5rCiszOTY2OCA3YTdlODc5YjJhYTFiMmUwNTkxZWI1NDRmOThhNGM2YjhlZmZmYmZiIElETEUtc3ludGF4LWJyYW5jaAorMzk2NzAgYjYxY2RkNGY4ODhiZjlmNjEyOGYzNjYyMjUxMzU4ZjExMTMwZGIxNCBsZWdhY3ktdHJ1bmsKKzM5NjcxIDA4YTU1MWU3NTYxY2MyYjQ2M2RjNzcyNWFmYTI4YmQyZmViMzg0ZDMgbGVnYWN5LXRydW5rCiszOTY3MiA5NWMwZGQxMWFmYTc4ZDJhNWZlMThjNjQyNTY0YmNhYjc0NGYxNTQ2IGxlZ2FjeS10cnVuaworMzk2NzMgNTg2YjQ4ZTNjYjk4YTAzM2EzZDczMTEyMGFiYjAxNmVmODBhNDYxYyByZWxlYXNlMjQtbWFpbnQKKzM5Njc0IDkyMWFmZDA4YTVkY2JkNDIwMTI5ODdlOGIyYjdjZGUzOWYwZDgxOTIgcmVsZWFzZTI0LW1haW50CiszOTY3NSBkMGFmN2IwOThhOTlkNjJlZWIyZTY3ZjYxNzNiYzI4NzA2YjA5YzRiIGxlZ2FjeS10cnVuaworMzk2NzYgOTIzNzIzYTljNDNjYjk2ZTgxODUzMmUwMzJhMTk1NzBmNTE1Y2JjZSBsZWdhY3ktdHJ1bmsKKzM5Njc3IDM1NzIyNDljMWU3NzEwMjk0Mjg4ZDFjZDU5OTYzMjMzMzZlNGExNzMgbGVnYWN5LXRydW5rCiszOTY3OCBkNDNkZmU2OTVkMDhhNGE3NDNiNmRlMjUxNzc5YTIzNDhhOTQ3OTdkIHJlbGVhc2UyNC1tYWludAorMzk2NzkgZTE2YjZiZGYzZjg5OWE3Zjc2YjgxNzNkYjVkYjc5M2Q5ZTRhNGUzZCBsZWdhY3ktdHJ1bmsKKzM5NjgwIDIyYTcyMGIzNTMxNGQwMTI5OWFkYWVhNmIyZmEwNTExYTNiMzMyYzIgbGVnYWN5LXRydW5rCiszOTY4MSBlNzhlODRmMWE4MjQ4N2ZjYzQ1M2VjM2U0NGQxZWJjZmM1YjgyOWE5IGFzdC1icmFuY2gKKzM5NjgyIDc2NjM1YWI3YjcwNzRkODU2MzUxYmJiODdkMzRkZjk3ZmMxOWViMDggbGVnYWN5LXRydW5rCiszOTY4MyBhNjRiZTEzOGYwZjZjNDgwNjBkNjQzZGU4OTRmOTI4MTRiZGU1MzA1IHJlbGVhc2UyNC1tYWludAorMzk2ODQgNmUwNGE1NTdhZTIwY2Q2ZWZjMmRjYjY4MThjN2IxNDcwODhlMGNkYiBhc3QtYnJhbmNoCiszOTY4NSA0ZTM5ODgzNzM3M2M5YWQ2ZTM3NTFmNTlkOGEzNDc0MDkwNTcxNzBjIGxlZ2FjeS10cnVuaworMzk2ODYgYWFlMzc0MzBmNTI1OTYzNDc3YTBjNWFhYzNhMTNiZmE2MGQ2MzRiNCBhc3QtYnJhbmNoCiszOTY4NyA4NTY3ZWIyM2U2NWRlYjRmM2IxMzZiYzE5NTdlZDBkYjNjOTNjNjMyIGFzdC1icmFuY2gKKzM5Njg4IDBlNjkwNzhjYWQ5MDBmZDM3YTI1NTNiN2U4N2IwOWIzM2FkYTQwODEgcmVsZWFzZTI0LW1haW50CiszOTY4OSA1Njg1ZWM1OWYzNWI4NDEzMDIxZjE0M2Q4ZTg0NjM5NmQxY2ZlNTYwIGxlZ2FjeS10cnVuaworMzk2OTAgYWFiMWQ1ZmRmNjRkZjY1NmVkZjNhMjVmMzYzZTJkMTI3ODc1MjAxZiBsZWdhY3ktdHJ1bmsKKzM5NjkxIDhlODZkYmFkOGM3MTRlOTg4YzhhMDkyMWI4YjFmN2ZlMTNhYWExYjggbGVnYWN5LXRydW5rCiszOTY5MiA1OWM0YTY1NjQyYzU2N2FkODBhMzhjNTU0N2Q1YWMwMjg0Nzg2OWE5IGxlZ2FjeS10cnVuaworMzk2OTMgNmU3MGVkNmRmYWQ2NzU3OTcwOWIyMjE5N2I3ZTA5OTEwZTZmNmE0ZCBJRExFLXN5bnRheC1icmFuY2gKKzM5Njk0IGU5ZTMwZDkyODcxZTlhMjdhYTNhNjc0NDUwMmFhZjcyZjZhYzA4ODkgYXN0LWJyYW5jaAorMzk2OTUgN2IzNWMyOTA0MGM5OTJmYWJlOTQyNGUzNDdlZGZkZmNlYzMxZTE2NyBsZWdhY3ktdHJ1bmsKKzM5Njk2IDdiN2ViM2U3NjIwZGY5MTAwMTg4YjNiOWNhMzE4YTY2MjMwNTEzNDYgcmVsZWFzZTI0LW1haW50CiszOTY5NyA3MmZlYmVlNThlN2I5ZTM2ODA4MDVhYjZiMTlhNDNkZTJjZTIzMmEzIGxlZ2FjeS10cnVuaworMzk2OTggYzM4ZTRlYzdiN2YxMWQ1NmUzY2NhMzQzNmM2MmMwNTRhOTBhZjBhZiByZWxlYXNlMjQtbWFpbnQKKzM5Njk5IDdlNzk4OWI2YWMzNmM0YjkxNTU5N2E4YmNlYWY0M2YwZDNjMGEwM2EgbGVnYWN5LXRydW5rCiszOTcwMCA1YTYyNjg2ZjdkZmRmNjRlYjZjMTNlZjMzZWEyZGJlMzVlZmZmN2E0IHJlbGVhc2UyNC1tYWludAorMzk3MDEgMzA3YjdlZWUzZTNkOTIyMDczYTY2YzdiZTQ4YzllOGVjM2VhMTVhZiBhc3QtYnJhbmNoCiszOTcwMiBkOTQ3ZmJlYzM1ZDNmMDRmMTQ4ZGU0ZjBhZjRmZjgyNmY5MDViYjNhIHJlbGVhc2UyNC1tYWludAorMzk3MDMgNzI1OTVhNjE1NTcxYjQwNjcxZTkzM2QyMzMxZTcyYzZjMTcyZmI0MSBsZWdhY3ktdHJ1bmsKKzM5NzA0IGMzZDY0YmM3ZjY5NjIyODZkNGE0MGIwOGM3NTM0M2JmMzU3NzQ0ZjIgYXN0LWJyYW5jaAorMzk3MDUgNTdmNjJlNWEzOTIxNjY2MDBlNGMwNzZiNjA1Zjc4OTllNmFjMWIyZiBhc3QtYnJhbmNoCiszOTcwNiBjN2E3ZTNkMWJmYTcwYTQyMDhkZDA5NzgxYmM1OTFhNzA5MDczMjY1IGFzdC1icmFuY2gKKzM5NzA3IGFjN2Y1NDA3MjQ2ZjQwZmQzZmFkNDhkNTA2OWVmNTkxNmFiYTVlNjMgYXN0LWJyYW5jaAorMzk3MDggZWY3Y2RkZWIzMjdjYzhjNGNkNzA1NTVkNDUwMTRlY2QzYjdlMzM3OSBhc3QtYnJhbmNoCiszOTcwOSBiMTA4MWM0OTVkNDY3MzNiYmZhN2QyYmNhM2IxMzIwODBkZGE0N2RkIGFzdC1icmFuY2gKKzM5NzEwIDE3NDVjMmVkYzUxNGQ5MjMyY2U1NGY5NTFlOTc0MjhkMGVlYWZhZmEgbGVnYWN5LXRydW5rCiszOTcxMSBhNDQyOWI3Nzg3ZDQ0ZTViOWIyZjg2MTI1MWUyMGQxYzZlZWNmZWRkIHJlbGVhc2UyNC1tYWludAorMzk3MTIgMjM0MmNkYjkyNjk1NmIyZDhkOGRmMzA1M2M1NzVmMGU2YzQxZmViOCBhc3QtYnJhbmNoCiszOTcxMyBlY2U1ZWI2ZjJiNWEzM2RkMjhhOTE2NWRmMmIxMTU2NGRiYzY0ZmUyIGFzdC1icmFuY2gKKzM5NzE0IDNiZDc0ODI0YTNhY2QwYTFlNDA2YjUzOWRjYmZiZGEzN2IwNmVkNDkgYXN0LWJyYW5jaAorMzk3MTUgZDIwNDRlNWEwNmM3ZTYzOGEyY2EzYWI3MGY3ZDAyNTFlOWIzNGJjMiBhc3QtYnJhbmNoCiszOTcxNiBhNGJlYzdiNmI2NDA1YjNlYWFjMjhlNDVmMjE1ZTg0ZGM5MmE1MWMzIGFzdC1icmFuY2gKKzM5NzE3IDMwZTg4YTE3NWZkYzkwYzc5NzUxOGQ2OWRjOWMzZWJmNjdkNDY5OTQgYXN0LWJyYW5jaAorMzk3MTggNTI1ZGFjMGQyODViZjJlMjQ4ODAwYzUyM2RlY2JkMmQwZDYwNmE3ZSBJRExFLXN5bnRheC1icmFuY2gKKzM5NzE5IDc2YjkxYWNhZDVlODhjY2Y3MjRjNGFmMTQ0ZTM2ZTQ4YjFhY2UwMzcgYXN0LWJyYW5jaAorMzk3MjAgYmM3ZjZkZWFiMzQwYWU3NTczODQ2MmVlN2NiYWRkYWY5NGU5YmVmZCBhc3QtYnJhbmNoCiszOTcyMSBkZDI5MjYxY2I0MzgyMGViZDliZTg2MGM1YTRlNzUzMjhiY2NjZTc4IGFzdC1icmFuY2gKKzM5NzIyIDllYjQ0MWE3MDcyNDZiZGExZTdhZjFkYjM4MTAxZWE2MTkzMGYxNWYgYXN0LWJyYW5jaAorMzk3MjMgY2RhODczNTcxODVmYjkzY2YwYTc5MzBjY2M4YzE3MWYzYjJkN2Q5NSBsZWdhY3ktdHJ1bmsKKzM5NzI1IDU2NjkzMDdjMTMxYzUzODQ2NjU2YWNlOWE2ZjI5YzFhMTY5OTY5NGIgcmVsZWFzZTI0LW1haW50CiszOTcyNiA0MmQzYTQ0MDBkMzg2NmNhODY0NWMwZmRkNjQ2M2UyM2Q4ZWY3ZDFhIGFzdC1icmFuY2gKKzM5NzI3IDIxNjExZmY1NThhNTAyMzgzYjU2OWViYWI5MjRkYjVjOWE1MGY0NzMgYXN0LWJyYW5jaAorMzk3MjggYWU1MzlhZjRhZmM1MDFkNDM5NmQxMmVmNjBjYjQ0MzliNDRkZDAwNCBsZWdhY3ktdHJ1bmsKKzM5NzI5IDYwZGZlMmY1NWMwZjUzZmM2NDkxNjhhNzUxZWRmM2ZmNDk5YjE4MWEgcmVsZWFzZTI0LW1haW50CiszOTczMCA2Njc5MmEyZWYzZGJkMDQzY2E0ZTk2ZDM3NDFiNDdhYzY0ZjQzOTQ1IGFzdC1icmFuY2gKKzM5NzMxIDA2YWQ2MzQ1NjQ5ZmRkYjZhNDhhYWI2MjdjOGRkYjA1Y2E5OWU3MmMgYXN0LWJyYW5jaAorMzk3MzIgZDdmNDA3MDllMTU4NTQwZGFmYTc1NjE4MDkxM2I0ZWU1ZjQ5MmVmMSBhc3QtYnJhbmNoCiszOTczMyBiYjViYTU0MzU5ZTViY2QzODJmOTk4OTcyMDA3NGE1MGJhNGQxNDIzIGFzdC1icmFuY2gKKzM5NzM0IDQ5NmViNWRlZDVlNDViM2VjODI0ZDMzMmYyNGRmOTRlY2MwOWQ5ZjkgYXN0LWJyYW5jaAorMzk3MzUgYzlmYTg1YjQwNTNiNzViNzkyNDk0Njg4Y2I1MzYzOWM2MjY1ODNmYSBsZWdhY3ktdHJ1bmsKKzM5NzM2IGViMmMwOWQ4Nzg3MDE4M2Y3OWY3NDQ5ZWI2NGMzM2VkNmM4YjBkODYgbGVnYWN5LXRydW5rCiszOTczNyBmZTEwMzczY2Y4YTI3MWRkYWJkN2Q1OWZiMWI4ZTRmZmEzMzkwOWZkIGFzdC1icmFuY2gKKzM5NzM4IDgzZjI0NWY3MjgzMmUzOTFmOGZlYTRhMmQ0ZDcwMjNkYWE2Mzk4YjIgYXN0LWJyYW5jaAorMzk3MzkgNTM2NTkwYzMyMzExODUyYTMzYTE4OGZjZDcxZWQ2ZGNjOGQ2YzljMiBsZWdhY3ktdHJ1bmsKKzM5NzQwIDU3NDdjZWQzNTQyNGE2ZjEwNjVhMjA5NzJkMjIxZWI3YmIxMGM4MDYgYXN0LWJyYW5jaAorMzk3NDEgY2I1Y2M0OGI1YzI5NWFmMDgyYTk3NzUwNDdmZTVmZTRlYzk3ZTJjNyBhc3QtYnJhbmNoCiszOTc0MiBiYzdjYTE2MzM0YmFiNTRhZDg4MTFiYjAwNTk4NzFkZTU5ZGNjZGQ4IGFzdC1icmFuY2gKKzM5NzQzIDllZDQzZTYzN2FlN2I1YWVkNWIxYWRjOGRjZjliOGZjZjdiMTEzYjcgbGVnYWN5LXRydW5rCiszOTc0NCA2OTEzYWJiNzA0N2FlZmYxOGE4MjBiMzMzMzhlMTA1ZGI5YWJjNmIyIGxlZ2FjeS10cnVuaworMzk3NDUgOGJlYzEyMGRiYjE2YTY3OTQ0ZWIzZGVmYjRhNjYyMzk0M2ZkOTExNCBsZWdhY3ktdHJ1bmsKKzM5NzQ2IDBiODI2OGUwZDcwZTc3ODI5OWFhMmYyZjljODg0YzQ3OGFiYTFmNmUgcmVsZWFzZTI0LW1haW50CiszOTc0NyA0ZjI4NDNkZmEyM2M3OWFjMjdhOGVhNjAyMzVhODE0ZTBkMmU4OGQ4IGxlZ2FjeS10cnVuaworMzk3NDggZDEyMDFmYWUwNmE4NTAwNzNlMTUzYTNlN2NlYjU2OTE4YTAzNTUyYiBsZWdhY3ktdHJ1bmsKKzM5NzQ5IGRmYjhmYzM3N2I1OGU2OGRlNjBkNzhkYTI5N2IwZTc3NDRkMTJlOTkgcmVsZWFzZTI0LW1haW50CiszOTc1MCBlYTY4MDhiYTE2MzdiYzI3ODdhZmJlM2QwMmY1ZTZkNTkyMzNhZmZkIGxlZ2FjeS10cnVuaworMzk3NTEgN2VkODcwNTBlMTY5NzQ2NmMyMjE0ZDU4ZWRjZjMwZTM1ZTJhYTIyOSByZWxlYXNlMjQtbWFpbnQKKzM5NzUyIDUzOTBkZGM3N2ViODY2ZGZmMzcyZDFhZWEyZDJiNTFiZTc0YjMyOWEgbGVnYWN5LXRydW5rCiszOTc1MyBlMDE4ZmNlMTRmMTAwNjU0MWUxMGI4NDEzMTQ5Y2IwOTIwZDM4ZGJkIGxlZ2FjeS10cnVuaworMzk3NTUgZDAzOTkzNzlkMGNiMjY0YzM4MjMxMzAzMGMzNDMyNzVlNDNhZDZjYSBsZWdhY3ktdHJ1bmsKKzM5NzU2IGIzMmEzOTA5MWFlZGNiNmIwNjljZjBjZGRlNmU5MzA0Y2RjMDFjZjcgcmVsZWFzZTI0LW1haW50CiszOTc1NyAzNzE2MDUxODMwYzJjYzVhYjBkNWMxYzgyMjllMDUwNTFkNGRjOWY3IGxlZ2FjeS10cnVuaworMzk3NTggMWM0ZDE5MmYxNTY4ZGY4Y2FlMmQzNTE0MWE3MjkyNDc1NjRhM2NmZSBsZWdhY3ktdHJ1bmsKKzM5NzU5IDA1YjcxNTgyMmJhNTk2ZTI3NTU1NTVjNTE1YzhkMzcyYzA4MDQzZjAgbGVnYWN5LXRydW5rCiszOTc2MCBlNzgxNTQ5NWJiMjc5YjE5MmVjMTRkZTUzYWNkOWFhOTlkM2U1ODVjIGxlZ2FjeS10cnVuaworMzk3NjEgNDA3YzNkYWNiZDdjMzA1ZmM2NzQyMzAyODZhMjdiYWIyMzllMWRjYSBsZWdhY3ktdHJ1bmsKKzM5NzYyIDcxOGU5ZGUyMmVhNzI1ZTI1YjQwZmI1Nzg1YmFlZGUzMGRiZWMxYjUgbGVnYWN5LXRydW5rCiszOTc2MyBmZGNiNThjYmZmNGRmMGQ2ZDAyMTc2ZmVlOWQ1ZmQyMDg0MTYwNjEyIGxlZ2FjeS10cnVuaworMzk3NjQgMjViYTJmMzMxM2M5MWNjNGU3OWY2NzczYmViMmI1Nzg5NGMyNmE3NCBsZWdhY3ktdHJ1bmsKKzM5NzY1IDE3ODI4YTAwYTQ1NDRmYTNmYjQyMDY1YmI1MWQ2MGJlOGY1NjUxM2YgbGVnYWN5LXRydW5rCiszOTc2NiBhN2E0OTNkYjYyMzEzZDAzM2JkYmM0YzY1YTg4NzdmMzRiOTU2ZWRkIHJlbGVhc2UyNC1tYWludAorMzk3NjcgZTU2MTQ0NzA0ODA4ZDdjZTZjMzA1YzBiNGYwNTE0ZTFlYmJkYmE1MSBsZWdhY3ktdHJ1bmsKKzM5NzY4IDQ3NDk2ZTdkYmYyZmNkMzA2MGM3OTAxYTEyM2ZjNjFiMWMyNzYyZmUgbGVnYWN5LXRydW5rCiszOTc2OSA4MWViZDZlMTc3YTNmOGE5MDQzNTdkOGMwNzBhNzA3YTNiODMwMDRlIGxlZ2FjeS10cnVuaworMzk3NzAgMTQ0MDliODIwOTMzZmM3N2JkNWNhYjliMTFhM2FlZjI1YTE2NTY3ZSBsZWdhY3ktdHJ1bmsKKzM5NzcxIGMyOGMxYTM3Yjg2YWUxODAwODE5NjMwOTkyNjQ2ODVhZGQ1NGM4NjUgbGVnYWN5LXRydW5rCiszOTc3MiBiNzJiM2U1MTdhNGRlN2EyNGRlOWIyMzNlN2Y1YzY1OWI1NDc0MGU2IGxlZ2FjeS10cnVuaworMzk3NzMgZWIxNWNkZDRhMmYxMDAxNzkyMDc0Y2EwNzg5MDI2OTg5NDUyZmY4MiBsZWdhY3ktdHJ1bmsKKzM5Nzc0IGUwZTMyMGYzNmM5MzYzZjZkNWY4YmZjNDA3M2RkNmM1Mjc5NDRmOTkgbGVnYWN5LXRydW5rCiszOTc3NSBkOTFlZDcxMDdmZDJkYTAzZDM1NmFjYmM1MjQzYTY4ZDBiNTA1ODUxIGxlZ2FjeS10cnVuaworMzk3NzYgNzljNWI4MTdmZWRjMTE1NzkzMGI5MGUwMWYyM2ZiOTYwNmNhMzVjZSBsZWdhY3ktdHJ1bmsKKzM5Nzc3IDdhNWFjMjAzMTU0YWFhMmQ3NTc1YTFiZDkyNWQ4ODQzZDdlNmUyMDIgbGVnYWN5LXRydW5rCiszOTc3OCAzZjYzMzQxZDkzMTJmNjkyMjFkNjY3MGQ1Y2ZlNTkzZDk3MTQ3YWE5IGxlZ2FjeS10cnVuaworMzk3NzkgNTI4ZTAzODgzOWEyYWFlN2QzZGVhMmU1N2I4ZjQ1NGU3NmE5OGUwMiBsZWdhY3ktdHJ1bmsKKzM5NzgwIDRhYWY1MDZhN2QwOTkyYjhjMTU0YTUwYWI1NjQzOGQzZmRmMmYxZTcgbGVnYWN5LXRydW5rCiszOTc4MSBmMzc2MjIxYmJiNzZjMWQyNzJlNDIzODQwYzM0OGExYzVjMjNkYmI5IGxlZ2FjeS10cnVuaworMzk3ODIgMzRlZjlmMTM4YzMwM2I3NjJhZDg2ODJhMGJhNDg1MGIwNWI5MzM2ZSBsZWdhY3ktdHJ1bmsKKzM5NzgzIDdlZTY4ODBjYjE2ZjI4NTJlMDdmMGRmNTEzZDcyZDRlMmUxNzVlZGEgbGVnYWN5LXRydW5rCiszOTc4NCA1NzZiOWE5Y2U1Nzk3Y2Y3YzY3MmE5NzQ1NmQ2OTIxZGExMDJkYTk0IGxlZ2FjeS10cnVuaworMzk3ODUgN2QwNjU0MzVlODZjMWI4ODJjZmZhYjBjZjRkYzkwY2Y4NzI3N2YzOCBsZWdhY3ktdHJ1bmsKKzM5Nzg2IDlhN2MyZDFlNTZkZTMxZGFlYTIwZmEzNDliMjFlZDAwNDlkZWNkMjkgcmVsZWFzZTI0LW1haW50CiszOTc4NyAwNDRkOGUwZjY1ZjJmYjllMzYxMTU3YWQxYjM4MjUzMTcxYzI1ZmQzIGxlZ2FjeS10cnVuaworMzk3ODggZjY0ZmIyODRlZDE1NGQ0ODcyOTVhODkwY2E1ZjI4MjQ4MjIyNDNmYyBsZWdhY3ktdHJ1bmsKKzM5Nzg5IDBhZWYzNTEyMjNkYWVkOTg0YzM4NWQyNThkNmE2ZWY5NWNkNzY0YmYgbGVnYWN5LXRydW5rCiszOTc5MCA2NmI5MDc1ZDE0MmI4ZWM1M2I0NmEzNGZlZDk4ZDc2YTQ3YzE2YTNhIGxlZ2FjeS10cnVuaworMzk3OTEgMTQ0YjUyNTM1NDM0ZmQzNWUxOGQ3OTgxYzcxZDhlNjNiMmUzOTE0OSBsZWdhY3ktdHJ1bmsKKzM5NzkyIDg5M2JlOTRjODg5MTgyYTkwOTFiNzkyMGFkYjRlM2QxZDM3NzI0N2UgbGVnYWN5LXRydW5rCiszOTc5MyBlZmU2MDczMGExZWVhYjZkMjYyMmEwZjJhODVkNjZmYmRjZjdmOWI2IGxlZ2FjeS10cnVuaworMzk3OTQgOTVkMGE4NTdhZTUxZmExNWE1OWVjMDE5Y2VmOTgwMzNmMzJiYTc1NCBsZWdhY3ktdHJ1bmsKKzM5Nzk1IDE5ZDc5NmJkNzQwZjRhMDk3NDk2NjIxYzJhODM5MTBhNTcyYTAwODAgbGVnYWN5LXRydW5rCiszOTc5NiA3MmNiMDQxY2NkZTNhYzdiZWIyOTZkNDliZmMyMDNhNWU0M2FmN2QxIGxlZ2FjeS10cnVuaworMzk3OTcgMzFkMzZkZDU5NTljZTlkOWU2MjRiZmEyMmFlMmQ1MGQ2ZDJlYmE1MyBsZWdhY3ktdHJ1bmsKKzM5Nzk4IGFhZTQxMTM1MmZiZDZhNGMzMGI5NzQ1YTcyM2JmNzg2OGJjMGZhZDUgbGVnYWN5LXRydW5rCiszOTc5OSBiMWEwZTFhMmIyOGZhY2JiZWVhN2JiNzk4NmQwOGQwOTU0OTUzMTcxIGxlZ2FjeS10cnVuaworMzk4MDAgYzZkYmY4OGU0YjE0Yjg2ZDAyMTZmNGM3NzVjNTI0OGUzZjQzZDUxNCBsZWdhY3ktdHJ1bmsKKzM5ODAxIGRjYTcwZjRlYzc3YjY3NDI5NDgwMzA2OWZhYjUwYjcxZjc4MDA3OTQgbGVnYWN5LXRydW5rCiszOTgwMiBhMGJiMGZkNWUxNDNhOWM4NDg2OTAwOGEyMTc0MDU4NDEzODQzYjEyIGxlZ2FjeS10cnVuaworMzk4MDMgMTY2MWU3M2MwN2FiYTM5OTk5OGQ4MzBiNTc4Nzk3NTRiY2JmMTAyMCBsZWdhY3ktdHJ1bmsKKzM5ODA0IGRiOWUyZGVhNGMxMTNkNmJlOWZiYzcxODBhMGY5ODJiODkyOTUwODIgcmVsZWFzZTI0LW1haW50CiszOTgwNSAxOWEzN2E5ZjRlZjk0YjI2YzE2NzAyOTRlZGI3NzUxZWJiYTliZWFiIGxlZ2FjeS10cnVuaworMzk4MDYgZjdiMGNiZWE5MDViNWIzNDhkMTBiNzI3OTUyZDJhZjNjYzkwZWUzYyBsZWdhY3ktdHJ1bmsKKzM5ODA3IDFhYzllZDFiNWEwM2MxOTM1M2Q3NmJiN2Q4N2Q0YmI0YjFmZjliNjcgbGVnYWN5LXRydW5rCiszOTgwOCBiOGIxM2IxZmZlNzU3MWI0YWY1ZjViYzhiNzlhZjEzZDAyODIzZTJlIGxlZ2FjeS10cnVuaworMzk4MDkgOTE0ZWMwYWZhNTFjMjE1YjEwODc5ODhiMjNjOTI3N2I0NTliMzQ0ZCBsZWdhY3ktdHJ1bmsKKzM5ODEwIDM5ZjM2MzBhNzEyNGQ5MGY3YjU3OWY0OTYyNDY2MmIzOGY1NGM3OWEgbGVnYWN5LXRydW5rCiszOTgxMSBkYmM5ODhiZWE1NWQ2ZjZjNTE0NTY1MWRiNmM1OTdiYWRkZDZhODIxIGxlZ2FjeS10cnVuaworMzk4MTIgZmQ2MzAwNDJhYWQ0M2RlY2Y1MGFmNjQyMjRiNmEwN2QxMzRjMGJlMSBsZWdhY3ktdHJ1bmsKKzM5ODEzIDM3NzgwODNmZTJjODYyYzQwZDkzZWQyM2M2NzExYjM0MjMxNmMwZWUgbGVnYWN5LXRydW5rCiszOTgxNCA4NTdmNjhmYmEyNzU0NGRhY2EzMjhiMDlkM2NjZGI2N2MzYTcxZTJmIGxlZ2FjeS10cnVuaworMzk4MTUgODQyY2FhMjQ1OTE3ZDg4NWNkOWMzNjBmMTBjOGRkMTM4MDI3ODlhZCBsZWdhY3ktdHJ1bmsKKzM5ODE2IDRiZjY0NTljOGUzYmI5NjQzMzI2ZDVhYjlkNjE3MjQzODdmYjkzNGIgbGVnYWN5LXRydW5rCiszOTgxNyBlMTdhMzA3YjEyMTY5NDA5MDVkYjNmMWNjMzMyOTBhN2QwOTZiYjAyIGxlZ2FjeS10cnVuaworMzk4MTggOGRhZWZlODQ5OTQ5MzRkZTNlNjU4NGZjZmYzMDUzOGQwNWYzMWM4ZiBsZWdhY3ktdHJ1bmsKKzQxMzM4IDE5MzMwNWM5ZGJkYjM1NDlhZDU5NjNmNWY4MmRhNzQ3YTYyYzU1NGEgbGVnYWN5LXRydW5rCis0MTM0MCA3NmE2ZTkwODYyNGQ3YzVjZGI3ZTc3Zjc3YWJjN2ZlNjRjZDY3ZDk1IGxlZ2FjeS10cnVuaworNDEzNDEgNTJmNjU4OTg4NzRhNjg4ODViMzI3YjdmN2Q4NjRjNjljM2RmNTJjNiByZWxlYXNlMjQtbWFpbnQKKzQxMzQyIDQ0ZmUxNTcyNTViYzRjZDhhMDVmN2YwNjAwYzhmZTI3OGYyZTAzYWMgbGVnYWN5LXRydW5rCis0MTM0NiBkZmIxMTM5ZWRjNTVhMWIwZjdmMjcyZWQ3NzM1Y2Y1NGE0MDA0NmRmIGxlZ2FjeS10cnVuaworNDEzNDcgYzJhOThiYTM3MWM4YTkwYzBiZGMxYTQyYzcyNzM5OTIyODgyNzlhZSBsZWdhY3ktdHJ1bmsKKzQxMzUyIDg4NTIzMDE3NDE0YzE4NzNkY2YzYzJjMTU4MTU5ZjlkYzY2ZmJmMTkgbGVnYWN5LXRydW5rCis0MTM1MyAzOWIxZTc0YmExN2M1NTQ3MTg5NmUxYTQ0MDQ1MTI2OTg2MjBjZTgyIGxlZ2FjeS10cnVuaworNDEzNTQgOWIwZGQxZjUzYWUyMTg2ZDlmMjhlZjIwODVkYTJkNmJjMDJjYTczMiByZWxlYXNlMjQtbWFpbnQKKzQxMzU0IGFiYmZlOTE3ODczMTliN2Y5NDU0M2Y0MGVhN2JhMTVkOTlhZDZlMGIgbGVnYWN5LXRydW5rCis0MTM1NSAyZTI1ZTk4MzIzYTdmNjUxZmE5MjVjNTQwNzRjZGE5MjA4OGJlNWQ2IGxlZ2FjeS10cnVuaworNDEzNTYgMTNkZWVjNTI4MWVmY2IyMGE1ZDQyNDMwMGFhNDhhMGU0MTY0YzYzYiByZWxlYXNlMjQtbWFpbnQKKzQxMzU3IGViOWEzOWMxYTc4YmI3M2VkZjNmMWUzZDk0ZjRhMDUxY2NlZTgxZTUgbGVnYWN5LXRydW5rCis0MTM1OCBhMDAwZjMyMmRkMDVkYmZhYmM1ZDY2MWYzNTVlZTc2OTMyNWIxNWZiIGxlZ2FjeS10cnVuaworNDEzNTkgZWQyNDdmNmU2ZjA3NTRkZjgwY2NlNTkzYzllMTg3ZDU2OGYyNmUxMCByZWxlYXNlMjQtbWFpbnQKKzQxMzYwIDIwYmI3ZmYxNjk1Mjc3YmNjZGE2ZTUwM2FmMTY0MjMwNzUyNzg1N2MgbGVnYWN5LXRydW5rCis0MTM2MSBhNDk3ZTEwYjIzZTQ3MGNjNzZiMzZmMjdlZTcwNGFlNTA4ODJjYzJjIHJlbGVhc2UyNC1tYWludAorNDEzNjYgNjkwMzRhMDhlNWEzYTM0ZjlmOWU3MmE4NGE3NzQwNzc2NGRjNjBhOSBsZWdhY3ktdHJ1bmsKKzQxMzY3IGI2NTJmNTM1MjAxZDZmY2RmNzRiMDg4OTM0ZTMwNDQyNDgyMDI3MzcgbGVnYWN5LXRydW5rCis0MTM2OCA2Y2QxMTA3NDNiZDIwODlmMGQ2NTNhYTk2ZjI5ZDRkNTdhZDNhY2FiIHJlbGVhc2UyNC1tYWludAorNDEzNjkgOGIwMmQ4YTVlNzA3ZjI2ZjAyNDJmOTY3YzNmZjE1MDVkMWFlY2Y1ZiBsZWdhY3ktdHJ1bmsKKzQxMzcwIGY5ZTUwZmY5NmZmODVlYmY3NmI0Y2Q2YWM4YjM2NzEyMWQ1ZTA2ZTMgcmVsZWFzZTI0LW1haW50Cis0MTM3MSBjYzE3YTU4MjUxOGFlZmQ0MmEzMzc2MGU5NThmZDAzNDE3NjBkYjI3IGxlZ2FjeS10cnVuaworNDEzNzIgMGVjYmZmYmFkYzAwNTY4MjNlNTkzZjIxN2FmZjM1MjRmZDg0MjVjYyBsZWdhY3ktdHJ1bmsKKzQxMzczIGFiM2QxZTZhMDIzNzI3MGUyYjAxNTI3NmIyMzdkOWYzMjI0ZThiYWYgbGVnYWN5LXRydW5rCis0MTM3NCBiZmZhZTJmODEyZjc0YWVkNzViMDIwYTIzY2ZiMmE0OGQ1YmRhMzkyIGxlZ2FjeS10cnVuaworNDEzNzUgZjNjYWY4MGJkNjZkMjFiYTgyOTRhMDY0OTMyNDM0YzliMTI1MGM4ZCByZWxlYXNlMjQtbWFpbnQKKzQxMzc2IDAyOWI2YzVmMjU4ZTVhYjQ2YmUyZDIwNzk5OTY3MzY4YzMwMjY5ZWEgbGVnYWN5LXRydW5rCis0MTM4NSA2NDZiYTc2MTE1YWNiNDM1MGNjMzBmNWVjNWEwZDc4YWQ2N2FkYTU0IHJlbGVhc2UyNC1tYWludAorNDEzODYgN2JmNDg0MDBmMjRhOGU3ZDkxNDRjZjJlNmRkZmNjMTE3MDgxMjA1MSBsZWdhY3ktdHJ1bmsKKzQxMzg3IDliMWVmYjBlZDYzNTkyZGUxMmQ1YmVmYzY3NDViNjI5YWMxNWRiN2UgcmVsZWFzZTI0LW1haW50Cis0MTM4OCA0MThhNjFlYWQxMWI4NWRlYmNlM2ZhNTFhMmRjZjI0ZjJhYTA5ZTIxIGxlZ2FjeS10cnVuaworNDEzODkgMjBhYTFkNWIzYjA4MzI3ZWE2NDNhMmU3OTMxODNiMTNiNjIwZWUxOCBsZWdhY3ktdHJ1bmsKKzQxMzkwIGZkMDg5MTgzOTRmOWMzYjExMTkyZjY1OGZhNDZiZWYxNjYwNjRjOTYgcmVsZWFzZTI0LW1haW50Cis0MTM5OSBhODY0OTg2OWNiNjBiYmVhMDk1ZGZmNTY0MWFjZGRkZDU5NWU3NTIyIGxlZ2FjeS10cnVuaworNDE0MDAgNDliYWY4YjA0NjgxMjU1YWY0NWMwMTk2ZTE0MDk5ZTU3YzY0NWU4ZCBsZWdhY3ktdHJ1bmsKKzQxNDAzIGRlMDkwYmY2N2E1OTg5ZGJmZjI1ZGFhNTVkZWNhMWViODVjNThlYTQgbGVnYWN5LXRydW5rCis0MTQwNCBlY2Y5ZjRlZDEwOWU1Y2QwMGRlYTYyMmIzNDQ3Nzg3ZWM3Njc0ODYzIGxlZ2FjeS10cnVuaworNDE0MDUgNmUyYjI4MjQzNGQ0OTUxMDk0NGZjZDE0MjkyYzk4NGJiMTc3OWJlMiBsZWdhY3ktdHJ1bmsKKzQxNDA2IGY4NWRjMzFmMWYzZTRmZTBmODY0ODVkM2RiY2JiYWFmZjVmMzRhMjIgbGVnYWN5LXRydW5rCis0MTQwNyBkODEyZTM5YWU5MDdhN2Q1OTkxZjg2NWZlYTcwMmM5MzY2MGFkZTczIGxlZ2FjeS10cnVuaworNDE0MTIgY2FlYTBjYzA5YTQyZjkxYzkxNjZjNDc5NzZkN2MxYzIxOWZjYTI5OSBsZWdhY3ktdHJ1bmsKKzQxNDEzIDFkMTk1N2Y1NTYyNjc5MGRlYzhlZDBjMWNiODMxYjdiMjFkNGY3N2EgcmVsZWFzZTI0LW1haW50Cis0MTQxNCBmYTFkNTY5NDczMDEzMDdmYWE2NzA4NmU0MjkzY2MzM2UwZmEzYTRiIGxlZ2FjeS10cnVuaworNDE0MTUgZjBlMzM1NTIzNWE1ZTUyNWM4MmZlZTY3MmQ2MWE1MTllMWU4ZTkzYiByZWxlYXNlMjQtbWFpbnQKKzQxNDE2IDVmNzFhNTAyODlhMjU1NmJhZDdjZGFkMDc5OGJiZGVmNDlmZTlmNjkgbGVnYWN5LXRydW5rCis0MTQxNyBhZWY4NTI2ZmM5YmJhNmY5ZDNlYzBlOTI1YmNiMDQ4ZDczODRiNjA5IHJlbGVhc2UyNC1tYWludAorNDE0MTggZjZkOGIwZGUxMzRhMjAxMzhlNDk1ZmIyZGUwZmIyZGQ3NzU3ZDQyNiBsZWdhY3ktdHJ1bmsKKzQxNDE5IDQxM2M2OGIzMTQ4NzFlYTQxYTk1NTM1OGJkNWQwMWUzMGZiY2NiNjIgbGVnYWN5LXRydW5rCis0MTQyMiBlZTNlMGVlMWVkY2E3ZDM0ODJjOTE5YjA3MjliNTAwYWY3OTc4MWZhIGxlZ2FjeS10cnVuaworNDE0MjMgMmE5MmQ1Y2UwYzBkOGM0OGY3Y2ExZGMwNTE1MjYxZGYxZWJlNzU5MSBsZWdhY3ktdHJ1bmsKKzQxNDI0IDdmMzdjY2Y2OThjZjViMDE0NjMyZDY4YzE2ZGE5ZjI2MmEzMjAwNWMgcmVsZWFzZTI0LW1haW50Cis0MTQyNSA2ODg4ZGRmMWVhOWQ1M2Q0NGZhYTU5MTc0ZWVlMDIxNThkMjNiZjNlIElETEUtc3ludGF4LWJyYW5jaAorNDE0MjYgNDI5ZjUzN2NmNmQ2YjdlNTkyNzk2ZjE0MjUxNDEyYmEzYmYxZTdlMCBsZWdhY3ktdHJ1bmsKKzQxNDI3IDQ0NjI4NzFhNmRjZWMwMTNkYjI4N2JmZTA4NTAxMDhkYzYzZGZiOTcgbGVnYWN5LXRydW5rCis0MTQyOCA4N2UyMjEwZTA3ZjQ5YWQ1ZDUwZTViZTljZmQ2NGQyMGZkZDBlMDg1IGxlZ2FjeS10cnVuaworNDE0MjkgNmEwMThkOGM1OWM5MWUwNDZjYjY3MWQ0NjU5ODI5NjY4NTllNjAzYyBsZWdhY3ktdHJ1bmsKKzQxNDMwIDYwMTVkZjEzNmIwMGQxYmNjYzQxMmNkYmUyMDg4YjFjMDQ1NTZlNDMgbGVnYWN5LXRydW5rCis0MTQzMiA5Yjg4NWM5MzQxNDRiNzA1NWUzNmJkNjE3YTBlMGFjOGUxMjA3ZDE0IGxlZ2FjeS10cnVuaworNDE0MzMgM2U2MzRlNDFiNmVjM2M3OTcwMWEyYWNmMmJiMTZiZmMzNmQwYjY2MCBsZWdhY3ktdHJ1bmsKKzQxNDM0IDY4Njc5OTVhMThhN2RhOTAwZTc5ZDIyMDc2NWZkMThhYTVjZjI1YmEgbGVnYWN5LXRydW5rCis0MTQzNSA3OWYyY2UzMjAxOTI1YzlkNjNlY2IxNjQ0ODg3NmY1ZGZhYmVmYTlkIGxlZ2FjeS10cnVuaworNDE0MzYgZGJjOTNlZTUzZTJmZWZmY2JmYjllZWU0MTU3Nzg0YjNlOTM1MDZkYiBsZWdhY3ktdHJ1bmsKKzQxNDM3IDYwMGJiYmE1NmY5YmFiMzgyYmQ4MDVjNTQwNTc4NTdhYWVmMDkzM2YgbGVnYWN5LXRydW5rCis0MTQzOCA5ZjczZGMwOTUzZDIwMjA0YTU0OWM4Yzc4MWE0YzQ4ODRiMjIyY2VhIGxlZ2FjeS10cnVuaworNDE0NDAgZjQ4NDJmNDI3MDBiZGI3ZjczZGI4OGM3YWY2MzNiMTE3ZjRhODkzYiBsZWdhY3ktdHJ1bmsKKzQxNDQxIDM3ZGE5NjlhZDExNmM1YmE5YjczNTVjMjNmM2JkZmZhMDcwZmVmMDggbGVnYWN5LXRydW5rCis0MTQ0MiA5MDAzODM2YTAzNmYxMzM1MmI1YmFiMWIyZWM3MzcyYTIwZDhlMjRkIGxlZ2FjeS10cnVuaworNDE0NDMgZjUzMWMwNWNkMjQwODY2ZTQ2MGVlZWNkZDEwMDFiODZlZWZkYmU1NiBsZWdhY3ktdHJ1bmsKKzQxNDQ0IDk0NzY1NjYzMGIxMjhkZmU4ZWUyMDdjNzZkNmZmNDRhMjE1NmExZTIgamltLWRvY3Rlc3QKKzQxNDQ1IDNhY2I2YjM0MTA3NWM5YTZlODM0NjI2ZGQ3ODkxYjBiYjk0ZTdhYjIgamltLWRvY3Rlc3QKKzQxNDQ2IDRhYzNmYTE1ODkyNzkwMjMwN2VlYzJmOTA5MzQ3NjY0MTNlNGJmN2QgbGVnYWN5LXRydW5rCis0MTQ0NyA1ODNjZTljMGM2NjRlYmJhOThkMmI3MWEzMDUzMzI4YjU0OGQ2NjkzIGxlZ2FjeS10cnVuaworNDE0NDggNzZlZDdmZGM5ZDg1YmRmNTgyOTEyMjRjMDU5MmRmMmMxMDI4YjZmYSBsZWdhY3ktdHJ1bmsKKzQxNDQ5IDQ0ZDYzZWVkZmFjYWYwNDcwZjMyNTQyNjllMWE5YjM1ZGI4YzA0YWMgbGVnYWN5LXRydW5rCis0MTQ1MCAwODZjYWNjZmZmMGU3NjZhYzNjNzU5OGMwZWU5ZTM0NTFlYzI4YWRlIGxlZ2FjeS10cnVuaworNDE0NTEgZjMzNGVmZTc2ZjZhNTQ2MjAyNWJmOTIyOWYyZTIxNzEyZmQ4NDViNCBsZWdhY3ktdHJ1bmsKKzQxNDUyIDZkOGNlNTU3MGNiNzAyMGNkY2JjMDMwOTcxYjZkMTg0NTI1OGI0ZWUgamltLWRvY3Rlc3QKKzQxNDUzIDQwZjNkNzliMjEyNTBhNDE1Zjc5OWQyNDExMmZlZmRkMjFiYzQ2MzEgbGVnYWN5LXRydW5rCis0MTQ1NCA5NGE0MDlkYTRiZDQwYjczMjZmNzFhYTZkODY1NDUzZjU1NmE5NTViIGxlZ2FjeS10cnVuaworNDE0NTUgMWY5ZDRhYzM1MDEwMjgyMzEyYjlhZjM4ODkzOWZlNTBlZmMzOGViMSBsZWdhY3ktdHJ1bmsKKzQxNDU2IDBkMWUyZTczYzNlYzAzMzc3YTkxZTZmMWM5YzRmYzU2MDY3NDZmMTggbGVnYWN5LXRydW5rCis0MTQ1NyAyOTQyMGJkM2I1Y2JiMThhNGU4OTIwNjRjODEwM2YwZWZiYjFhMDBiIGxlZ2FjeS10cnVuaworNDE0NjEgMzIzNmI1ZmIxZmI3MGYzMDk3MjMyOWY5YWI2ZjcxNTM4ODUxNDY5NCBsZWdhY3ktdHJ1bmsKKzQxNDYyIGU3MTY0ODNjYjNmOTE0Y2IxOTZmYWQ2MjZiNGMxNjhhNWQ0ZTdjZDUgbGVnYWN5LXRydW5rCis0MTQ2MyAwMzg2N2ZjNmZkODA3OGNjM2I0YjU2OWFjMzcyYzMwZjk1ZTZmY2MzIHJlbGVhc2UyNC1tYWludAorNDE0NjQgNWI4MjEyMGNiNDlkNjEyMmRkMGFhNmUzYmZmNDhhMmYxNjE3OTZhNyBsZWdhY3ktdHJ1bmsKKzQxNDY1IGY5OWQ2Y2I4OGY2ZjIwOGJlOTYxZjY1OGFlYzkxMTAyOTQ3NTgyZDggcmVsZWFzZTI0LW1haW50Cis0MTQ2NiAzOTU2ZDYyMGFmMDliYTAwZDA2N2VkMTAxYzMzODkwZTliODgxZGFjIGxlZ2FjeS10cnVuaworNDE0NjcgNDc4OWU3NWE2ZmU3ZDA2MjA2MmQyMmE1OTNiZDI4ODIxNTdjMDYxYiByZWxlYXNlMjQtbWFpbnQKKzQxNDY4IGUyNDczYzRmMmVlMGQ3ZmQ3ZWRjMmJjZTEyZDE2NzY3MTllNjU4NmMgbGVnYWN5LXRydW5rCis0MTQ3OCBmNDE0ZmYyODc4MjNiNjBmZjMyNzIyMWZlNTQ1MWVhMWNjOWE2MmEwIGxlZ2FjeS10cnVuaworNDE0ODAgOGZkNDZiNjYwZTY2OTUwYjY5YjZhNDlkNmUzNTdiMWY2MTA1MThhZSBsZWdhY3ktdHJ1bmsKKzQxNDgxIDcxZWE2YjdmNThjZTM4ZDIyNTA1MDlhN2M1NGFkYzdmYzdhZTFkMDcgbGVnYWN5LXRydW5rCis0MTQ4NCA4MjU2NTViZmRmMjA2NDUwMGVhZjA2MmY3ZWYyNWFkZmQxOTY0YjkwIGxlZ2FjeS10cnVuaworNDE0ODUgMDQ0NTQyZDcwNWMyY2FlZWRhOWZiNTc3NGZiNDE1ZTRkMzFiNzMyMCBsZWdhY3ktdHJ1bmsKKzQxNDg2IGZlNGM2MjdiMjA5NjVlOTA1OTY0M2VjZjliOTcxNzhmMjY5MDM1YWUgbGVnYWN5LXRydW5rCis0MTQ4NyBlNGE1YTg0ZTVlYmIxMzk3M2RkMzUwZmIwMWVmMjgzODAxYmY0NWE4IHJlbGVhc2UyNC1tYWludAorNDE0ODggY2U5YmEwMWViN2VkNWZmZDEzYmUyMWEzNTc2NzRlYzhkYWY2ZDcwMiBsZWdhY3ktdHJ1bmsKKzQxNDg5IGQ3MmRiODJhNzBjZDdhZGVjYzZiNTAzNDUxY2Q2MDQ5YmUzNjY4NDkgbGVnYWN5LXRydW5rCis0MTQ5MCBkZjU5Mjg1NThhNTdiNDBmZWNkNjkxYjg2ZmFmOGZhMjgzMzZhZDIxIHJlbGVhc2UyNC1tYWludAorNDE0OTEgZTliZTllNjE4OGY0ZDRlMzI2ZDdjMTRlYWI0ZTcyZTBlNzM3NTc1ZCBsZWdhY3ktdHJ1bmsKKzQxNDkyIDJiMGNmNTBlNzdlYzk4YTE1NGU3NWY4Zjk3Y2MwODQ3NTNiYjdkMTEgbGVnYWN5LXRydW5rCis0MTQ5MyA5ZmQwY2QzNjJhZmZjNzA5MmZkNmQxNGUyYzFkOGU3N2RkMTNhMTJmIGxlZ2FjeS10cnVuaworNDE0OTQgODAwZjQ4YTE0YThhMzgxMTJmYTExMDM4NjczY2Q5MWMxNTRmY2VkOSBsZWdhY3ktdHJ1bmsKKzQxNDk1IGE2YmY3Y2FlZDEzNTcwNTY0ZTJjNmU1ZWVmYzdjYzZmMDhhMDQyODMgbGVnYWN5LXRydW5rCis0MTQ5NiAxZGZkNWQ2MmQ3NjRlZGVjNWM3MmIyNmY3ZjFlNTNiYjBiODVlZTljIGxlZ2FjeS10cnVuaworNDE0OTcgZjkzNzM4N2Y0ZGYxMjFmOGYzZDFmOTBlOGJjMDcwOGU2Njg5NWI4YSBsZWdhY3ktdHJ1bmsKKzQxNDk4IDRkMWQyNzcxNzhhNTdhZDNjNTM3MmI1ZGZmY2MwYzZiMjgwOTJhODAgbGVnYWN5LXRydW5rCis0MTQ5OSA0ZTVlMTZhM2JlMGQzYzM4ODVkOTI3OTVkZWQ5YzJjNjVlMzVjYTcyIGxlZ2FjeS10cnVuaworNDE1MDAgMTFhMWJjMzUyOTE3YTNlZGYxYWFlMmNhNTJkMDE2NzNjNTIxYzgyMyBsZWdhY3ktdHJ1bmsKKzQxNTAxIDhmZWFlZDA3ZmNjZDcxNDUyNmJiYTg5MzAzNWNlYmM2Nzc3YzJkNWUgcmVsZWFzZTI0LW1haW50Cis0MTUwMiBjZjE1NzE0YzljOGFhMzUzZjZkOTIzNzQzN2JkZmRjZDlmNzRjODVmIGxlZ2FjeS10cnVuaworNDE1MDMgNjhiMzk4YTg1YTM4NzRiZDQyZTZlOGM4MGRjMzE2NWM2ZTQwYmMwZCBsZWdhY3ktdHJ1bmsKKzQxNTA0IDEyZjIyMmI2MTdiODlmNmNlMTAzMzJlY2YwYTU5YTUzZTM2MTE2NzAgbGVnYWN5LXRydW5rCis0MTUwNSAzZmQ5N2RlMGE3OTA4M2U0ODgxMWViNTdkMmExNjNiZjg3MDFhNTFmIGxlZ2FjeS10cnVuaworNDE1MDYgZjEzZmMwYzlhNmIzYTU2ODQ2YmI1YTJlMGQxOTJlMjM0YmE1NmFmNyByZWxlYXNlMjQtbWFpbnQKKzQxNTA3IDUxZjRlZTRmOTdlYTFhYmY5NzJmODNlOWY0MDM4NmRiMmJiMjhmMjQgbGVnYWN5LXRydW5rCis0MTUwOCAxZmFhMzA2OTkzYzA1YWY1MTg4ZDU4MjFmMThlZmY2NmZmNGNlMzJkIHJlbGVhc2UyNC1tYWludAorNDE1MDkgOWZjNmJmNjU1ZjljYjAyOTRiN2Q2Y2FjMDVmODhiNWZlNzRjNWI4MSBsZWdhY3ktdHJ1bmsKKzQxNTEwIGQ0YTZkMjU5MWNmNThhMTE4ZjA1YTAwZjExYzJjNGU3ZTE3MjhhY2EgcmVsZWFzZTI0LW1haW50Cis0MTUxMSBlMTEzMjMxODljODQ5MTJlMGVlMjZlOTEzMzFjOWNkNTMyOTM2YmJmIGxlZ2FjeS10cnVuaworNDE1MTIgNzRlNTYxYTdlODJjYWQ3YWUzOGQ4NWMzMjdlNzZkY2ZkNjlkNjdlMCBsZWdhY3ktdHJ1bmsKKzQxNTEzIGM5NDI2ODI3N2RlOTM4MzY4NWJlODYzY2NlMDE4YTJhNzZkZDcxMTcgcmVsZWFzZTI0LW1haW50Cis0MTUxNCAxZjc3NDUyOTJlNTBlZDg0ZDM4ZTI3YjZkNTA3OThjMjJlMGNiNTZkIGxlZ2FjeS10cnVuaworNDE1MTUgZjI2MDVmNWE2ZDQ2ZjgzYTc5ZGVlMDlmYmIyYThkZDA2YzliMDBhMCByZWxlYXNlMjQtbWFpbnQKKzQxNTE3IGMyYmJhNWY0NmFiNmVhZTE3N2E2ZTQ5ODU2Y2YyMTI1ZThhNjJmODYgbGVnYWN5LXRydW5rCis0MTUxOCBmYWIzNzEzNmRkNmRhNTNhOGEwOWEyOTkwYTkxNTFlMzA1MTYxMmQ1IHJlbGVhc2UyNC1tYWludAorNDE1MTkgOWY2ODUyZmYzZDE5MWU0OGE0YzEwMTFkYzRlMmI3NDFlZjI3MzM2YyBsZWdhY3ktdHJ1bmsKKzQxNTIwIDFlMWMzZjU1MzI4YTA4NjE0MDQ3ZTJiNzAxMjE4YmMxNWFiMGRiMjkgcmVsZWFzZTI0LW1haW50Cis0MTUyMSA3MmQ1YzYwZmE0NWQ5ZWRjMzk1YmQ5YjdkODFhODAyODJjNDA5MmM2IGxlZ2FjeS10cnVuaworNDE1MjIgOWU2MzBjYzFkMzA5MGI5ZWMyMGU1ZmQ3N2IwZWJhMGEyOTQwM2Q3YSByZWxlYXNlMjQtbWFpbnQKKzQxNTIzIGNmMmI0YzhhZDFhZDRlNDZmNmYyZTZmYTVjNjc4YWY2YThhZTIxN2QgbGVnYWN5LXRydW5rCis0MTUyNCBiN2M2YzQ2MWE4MDgxODBiMGJiZmI3MTQxMjM1MDkyMDYwYzE3OTc1IGxlZ2FjeS10cnVuaworNDE1MjUgZTBkZGVhODgxZjRhYmY3MWM0ZWNhNGU4MTMzNzBiMjA5YmY5YjBiYiByZWxlYXNlMjQtbWFpbnQKKzQxNTI2IDFmZGViYmQ2MGQ3ZGRkYTBlZTBjYTNjN2NmM2FiM2Q0OWVlODVjMGIgbGVnYWN5LXRydW5rCis0MTUyNyA3Yzg4MDBiODFjNTBjOWY2NTlhY2Q3NDFhODhmZWFhZDQ4YjQ3OTFjIGxlZ2FjeS10cnVuaworNDE1MjggMjE1MGFmODRhMTg1ZTkwOGQ1ZWM1OGZhNGE1YmI1N2NkYzRjZWQ1NiByZWxlYXNlMjQtbWFpbnQKKzQxNTI5IGU2ZDMxY2JmMmVkMzhjNWMxYzI5YzZmNTUwMmI0MjliM2UwMGE5MTAgbGVnYWN5LXRydW5rCis0MTUzMCBiYjgwYjhmMzkzZWZmMWQyZTE5ZGRjMTllNDBmNWY1MjAwMTA3ZGJjIGxlZ2FjeS10cnVuaworNDE1MzEgNzkzNzRlYjZkYjUxNmNjYTlhODRiZGY5NmI0N2ExNzg1ODg4ZmQxNyBsZWdhY3ktdHJ1bmsKKzQxNTMyIGNiMWZmMmE4NWUzZGRkMjI4MTU4NjQ5OTJiMWU3MTc5ZjE3ZjRjOTkgbGVnYWN5LXRydW5rCis0MTUzMyAwMzNiYjRkYjVhZThjMWE2MjRiOGIxZTM4MWQxYjZiYWVkYjM2ZDExIGxlZ2FjeS10cnVuaworNDE1MzQgNmQ2YzdjZDQ1Mjk4OWU1ODE4YTBiYTBlYmM3YTdhMzA2MWRmZjc1NCBsZWdhY3ktdHJ1bmsKKzQxNTM1IDVjOGRjNWQyMThkOGQ3MGYyZjAzYzg5ODAzNzYwOWQxMTNmYzc5NGMgbGVnYWN5LXRydW5rCis0MTUzNiBiNDZkYzZkMTA5ODY3NTQzMWRhMGFmZDEyY2NlOTgwNzVlMjJmOGQ2IGxlZ2FjeS10cnVuaworNDE1MzcgZTgwYTFhZjY3NjIzZjBmNTcyOWMxY2RhYzNhNzFmYTdhMDZlZWZjOSBsZWdhY3ktdHJ1bmsKKzQxNTM4IGIyZWIxNTg5YzIyYjUxMzdlZTEzMWRmYTI4MDdmN2ZkNTIyYTk2Y2EgbGVnYWN5LXRydW5rCis0MTUzOSA0NTcyZmI0ZGZiYjNmMGZiNmFkNDU3MzI5NmQ3OGNiNjU4Nzk5ZWU3IGxlZ2FjeS10cnVuaworNDE1NDAgZWY2MDhiNThiZmQ4YWQ1YzEzZDk1ZWNhZWFhNTJkNTk3MGZlMzc5NyBsZWdhY3ktdHJ1bmsKKzQxNTQxIGY4MDU2MzI4ZjAxYTE2M2RjZDBlNTM3NjZkMmFjYWQ2MGJmOTgxM2UgbGVnYWN5LXRydW5rCis0MTU0MiBiOWM2ODJlZDkxMGNkYzYyYjM3Njk0Y2UwNzQwZTc3MjQ3NDIxZTljIHJlbGVhc2UyNC1tYWludAorNDE1NDMgOTA3OTcyMzMyMDhlZmUwZmExNjU4ZjU3MDg1N2M2NTcwNjkzOWNhNSBsZWdhY3ktdHJ1bmsKKzQxNTQ0IDQ4MzUzY2Y1MTM0MDNhMWRjNjEyNmIzNDVmM2NhZTdmMGY1NzgyYmQgcmVsZWFzZTI0LW1haW50Cis0MTU0NSBkN2Y2M2VkZTQ5NWU4NWUyNTUxZWI3MWFkNTk0M2MyMjRiZTA1NmIxIGxlZ2FjeS10cnVuaworNDE1NDYgZDdmNTJmYzQyMjQ1OGExNjU5N2FiZGQyYWRlMTljNzg4YzBiM2Y3MiByZWxlYXNlMjQtbWFpbnQKKzQxNTQ3IGQ5ZDhiMmUyZTYwYWRmMDZlZTA4YzM4ZTIwYzcxNWU2NmI4ODQzOTAgcmVsZWFzZTI0LW1haW50Cis0MTU0OCA3NWE3OWNjNGNmN2I2OTA2YzUyMDNiYmJlZThlODE0NDllYTIxYzhmIGxlZ2FjeS10cnVuaworNDE1NDkgOWZjN2RmZTg2Zjk2NjM2MDViZThmNjUwZmZmZjMxNDNkOTBjOTkzZiByZWxlYXNlMjQtbWFpbnQKKzQxNTUxIDFkOGVmZmRlODJmMWI0M2VmNWM4ZTU5NjE1N2RmNjI0OTY5YjZiMjUgbGVnYWN5LXRydW5rCis0MTU1MiBmY2E3MzM3NzEwZmQ3YjM0MTdlNDc0MzY3ZWNmODUwYmVkNTVkYmE5IGxlZ2FjeS10cnVuaworNDE1NTMgNjU4NDQ0YmFlYmEzN2VmYzhlNDk1YWY3YjFhMjMxNGRkNWMxNWJiMyBsZWdhY3ktdHJ1bmsKKzQxNTU0IDcyNTU1YTk2N2Q2YTg1Y2IzN2NjMWYxM2YxYjJiMTY5YzM1NTViYTggbGVnYWN5LXRydW5rCis0MTU1NSA3M2ViZGM2MmJmOGYwZDFjOTEzYjE2NGYzMTBhMTMwZTZmYmUwN2YwIGxlZ2FjeS10cnVuaworNDE1NTYgNGQwNjE2MmFkMjA5YzgyYTVkYmNlNDZiYjRlMTVhZjkxZmQ0ZTdmZSByZWxlYXNlMjQtbWFpbnQKKzQxNTU5IGQxNzJjYmE5NjRiNzgxYmEzZTdlYjQ2MGU4Zjc5ZWU4NTU1Mzk5MTAgbGVnYWN5LXRydW5rCis0MTU2MCA5ZDllNGVlNGRhODlmZWZjNGE2NzBiOTM0MDBhZDA3NDM2YmZhN2QxIGxlZ2FjeS10cnVuaworNDE1NjEgOWM0NzY1ZTlkYzkyNzIzNjUyNTUzNWQ1ZGE2ZGIwZTI0ZWE2ZmI5NyBsZWdhY3ktdHJ1bmsKKzQxNTYyIGY5OTcyMTM4MzZiYjI5MGQ2MWQ0ZDFmOWEzOGY3YmZkZGMzN2M3N2IgbGVnYWN5LXRydW5rCis0MTU2MyBhMWI2ZTY3ODRjYTU4MGU1YTMwNGE1NjMxNmQ1Y2UyOGNkYTUyZTQ0IGxlZ2FjeS10cnVuaworNDE1NjQgMTVjYzYwMTY3OTVlMDM0NjZjZTgxNWI0MDFkMzY4NWJhMzc2ZjQwMCBsZWdhY3ktdHJ1bmsKKzQxNTY1IDc0ZTlmZTA2OGM0ZGQyMTg0M2Y0Y2YxNWUxYzNkYzZhNDk1MDc5MGMgcmVsZWFzZTI0LW1haW50Cis0MTU2NiA0ZWFhNzJiYTE5YTJlNzI3YmQzMGI1MmQ0OWQ3MGMzODI5ZTEwYWY1IHJlbGVhc2UyNC1tYWludAorNDE1NjcgYTE3Y2NmYzM3MmU5OWE5ODQwNGZlYjM0MzM1MDFlMGE4NzFlNTQyYyBhc3Qtb2JqZWN0cworNDE1NjggZTY3NWZkMjk1YjRiOWUyNjUxMzFjNDRhYjM5M2ZjNzI4MDhmNTEzZiBhc3Qtb2JqZWN0cworNDE1NjkgY2NkOGEwZDI4OTUwOTY2ZDg1M2Y1ODYyYTY0ZTY3NWJmZWQ2OTQyMyBhc3Qtb2JqZWN0cworNDE1NzAgNWIwZjVkOTc2MzI1OGY5YWY4N2ZkMTY3OTUyZjFkYjliYjZjMjk4OSBsZWdhY3ktdHJ1bmsKKzQxNTcxIGE1ZDhmMDViYWY5OGNmMmM1MGQ4ZmY1NzM2ZjNhNzRlOTc0ZTUwY2IgYXN0LW9iamVjdHMKKzQxNTc0IDk2YTRlODA2NDI1ZTQxODU1ZTc1Y2Y1MzMyY2NjNGFiZTFhNTA3NTMgbGVnYWN5LXRydW5rCis0MTU3NSA0NjUwMTQ5MDI1MmRiN2FhYTMxZGM4Y2E3OThjOTgxOTE4NzQwMDMyIGFzdC1vYmplY3RzCis0MTU3NiBlYjY2ZWFlOWMyYzhjMzQyMDQyMDFmM2NiM2E1M2JkYmZiMmMzYzFkIGFzdC1vYmplY3RzCis0MTU3NyA4NTA3ZDU4MjUzNTRhZjc5NWJiNWI1ZmU2YTA0NjkxYjY4MzhkMzU0IGFzdC1vYmplY3RzCis0MTU3OCA5YzA0OTA5OTdlNjYyMDBjZTM4Y2ZlOTAwNzQwOWQ4NjRhZDI4Yzg4IGFzdC1vYmplY3RzCis0MTU3OSBhYmZlYWI3M2M4ZjE5Y2NlZjcyZTg0NDBhNTFkZTc3Mjc3MDRiZTAyIGxlZ2FjeS10cnVuaworNDE1ODAgODA1NjNkYzEzNDg3NWYwZmFhZmM4OTY1NTRlOWRlMWNlNWE0OTQyOCByZWxlYXNlMjQtbWFpbnQKKzQxNTgxIDZmNDYxMGY2OTJlMGVhYjg1NWJiZTgzZTJkYTQzYTczZmM0MDAzYTEgYXN0LW9iamVjdHMKKzQxNTgzIDdhYWEwOWYxYTA0NzI0MzMxYzNmNWY1NWE0NDI0YjNiMWUzNzgyMTEgYXN0LW9iamVjdHMKKzQxNTg0IGM1OTNmMzM2NDNkZGY1MGJlZDUwY2IxZWU2ZTA3ODUzYmI0NTlmYzIgYXN0LW9iamVjdHMKKzQxNTg1IDgxYzk0NGMzZDEzYTA1OGY1ZmY1YzdlY2VjNzFlNjQwMjAyZjk4ZTkgbGVnYWN5LXRydW5rCis0MTU4NiAxOTFiNTk5MDlkZWQ4ZDQwMzhjMzdhNjMxYWU4ZWU4ZDA2OGFmNDM4IGxlZ2FjeS10cnVuaworNDE1ODcgZTcyYmM1ZGFmZTE2ZWJlZWU5YWZiNTVlMTNkNWU3ZWJjMDA4OTAwZCBsZWdhY3ktdHJ1bmsKKzQxNTg4IDVkOTZhNTM2YmJmM2U2NWQyM2RhODAyZjM5OTY3NTRhYjY1NTVkODcgbGVnYWN5LXRydW5rCis0MTU4OSBhZDBmMDM4NWM2ZjM5OGZjNGRhZWI5YTIwYWYwNGZlMzQxMTg1MzZhIGxlZ2FjeS10cnVuaworNDE1OTAgY2YzMWIyYzhlODU0NjBmMGQ0ODQ5ZGVkMGQwNzQ0OGVjOGY4YWQ0OSBsZWdhY3ktdHJ1bmsKKzQxNTkxIDAzYWUwYjhlYjZjYmZiNGIxY2JhZWY1NDg0MjA4NGY3YTJhZDg4NzggbGVnYWN5LXRydW5rCis0MTU5MiBlMjZkYzMzNDg5MDliZjcwMDUyNzU0ODZlNjlkN2NiNzg2N2MzN2E1IGxlZ2FjeS10cnVuaworNDE1OTMgMTZlMDNjZmI5YTAyMmFlMWQzOTNiNmViN2NhMzkzZmVhMGVjZjhhOSBhc3Qtb2JqZWN0cworNDE1OTQgNzVkNTM2YjI0N2VhYTljMThiYmE1MDJmMjM1ZTM1MjBhZDkxMzM2NCBsZWdhY3ktdHJ1bmsKKzQxNTk1IGEwODdlN2JmNTBmMWRlMzc4NDQwMWFlZDA0NjAxYTQyNWRhOWJkYWQgYXN0LW9iamVjdHMKKzQxNTk2IDUwOTk1NmE1NGYzNzYxNzYxODZkNjM3NjNiNzg2N2ZhMGZiMTBmMDYgYXN0LW9iamVjdHMKKzQxNTk3IDNhNDIxNGJmYjZlNDRiMDA1ZWUxMmJkODE1ZmY1NzUxNmZmMWNhNGUgbGVnYWN5LXRydW5rCis0MTU5OCA1MjI1MTIyNGNiOTk1ZTFiZDc4OTZlZDk4MDg1ODY0MDA5ZjEzMmU2IGFzdC1hcmVuYQorNDE1OTkgNWJhOTIwZWVmMDE2MDQzODEzOTA1N2FjNzk2NmQwNDQzYjQwMjRjZCBsZWdhY3ktdHJ1bmsKKzQxNjAxIDhlZGExYTU4YTQ5MDM3MGEyNmYyMjQ5ZmVkZTRhNTcyMjUxOWZkMmQgbGVnYWN5LXRydW5rCis0MTYwMiBmMDIwYTdhZGU2YjVkNWVlYzdkYjQ4M2NmZTQ1MGNkZDQyYjYxZTBhIGxlZ2FjeS10cnVuaworNDE2MDMgMWUxMjg3YjZmNjUyNmY1OWNiM2YxZDA5NDBhNzkyMTYzMzE2NzM0NiBsZWdhY3ktdHJ1bmsKKzQxNjA0IGNiM2FlN2NlYTEwNjY2MjQ5YzNmMmEwMzFlZjRmYmIyYTNlZGMwZDcgYXN0LWFyZW5hCis0MTYwNSA1ZDAzMWJkMjIzMDdiY2I0NTg2Y2FjYTk1ZTA3ZjJmYTE3NWMzNWYwIGFzdC1hcmVuYQorNDE2MDYgM2MyMWQ1YmQxNWJlNjNmZjVmZGQzZDQ4ZGY2M2U4NjU5MDI0MWM2YSBhc3QtYXJlbmEKKzQxNjA3IGM4OTcwN2RhYTAxMTQ0OWM0MTU5YTNiNWZjZWEyYzUwZjIyNmMwODEgbGVnYWN5LXRydW5rCis0MTYwOCAwMWJkMTQ2ZGM1MjA3ZjdkN2MxN2JlMjJjMzRjN2FjYmViYmM2MzQ0IGFzdC1vYmplY3RzCis0MTYwOSBjODAwOWJkNjExNGZhNjViMDg2YmVjOGQxOGM4NjBmOTcxYzYxYzRhIGFzdC1hcmVuYQorNDE2MTAgZWU1NTQzMGU1Y2ZlNzc4ZGNjYTY2NzM2YzA3YzUyN2YxNDFjNTAwOCBhc3QtYXJlbmEKKzQxNjExIDU1MWQ1OGIzZDBjZDNjNzZjNTMwZmFmZGQ1ODYzODYzMDM1NjZlOWEgYXN0LWFyZW5hCis0MTYxMiBhYTVkOGU0YTAwYThhNDg2Mzg2NDVkODU0NDBhOGM4ZTY1NzI3YTFkIGFzdC1hcmVuYQorNDE2MTMgYzFlNjc4ZTdiYjEyODM5YmJhMzhmMWU4NzRlZTIxY2U0M2Y1YjRiOCBhc3QtYXJlbmEKKzQxNjE0IGEyOWRjNThhOTlmMzg5NGVhNDllM2RlMzk1YmM0MmI0ZWViNWZlNmIgYXN0LWFyZW5hCis0MTYxOCAxMWVlOTgyZjhjOGQwZTQ2MGY0ZjFhNGQwZGFmZmFjY2FmOWZkYTMzIGxlZ2FjeS10cnVuaworNDE2MTkgZDQ3YWJmOTc1OGM5ZmVhZTc1OTdjNmZjNGI4MmVlOWE5ZWI2MmVmMCBhc3QtYXJlbmEKKzQxNjIwIGM2Mjk4MTI1MDM5ZTRkZmIxMzg3YmIwOTExZWFiMDk3ZjJlYTlkMWIgYXN0LW9iamVjdHMKKzQxNjIxIGMwYzEyYWE3NTdlNzA5ZjA5Yzc2YmQzMTc2MjMwNzc3ZjJhNWUyZmQgbGVnYWN5LXRydW5rCis0MTYyMiBhYmUxYjMzMmVhYTAwZjcwNzQwOTMyYzFmNjk4NjBjNmE2MzdhOWM0IGFzdC1vYmplY3RzCis0MTYyMyBjMjM2ZWI2ZDk5MzQ1Mjc1ZjlkNGZkYWVhZjM3NmUwYWE5ZGRjYjYzIGFzdC1hcmVuYQorNDE2MjQgMWU2OWU2M2FlM2EwOGI0OWY5OGViNzVmMDEzYTkzOGFkOWFiZDVmYyBhc3QtYXJlbmEKKzQxNjI1IGFiOGFiOWJlNmY0YjQ3Y2EwYmIxYWU2OWE5ODEwYzQzYjRhZTk4ZTIgYXN0LW9iamVjdHMKKzQxNjI2IGEyOWM4OWI0ZThjNjMwOTVjNzJjMTRlMjVlZTgxOTM5OTkwYWVkMzcgbGVnYWN5LXRydW5rCis0MTYyNyA4YWQzMTlmM2E5MzVlYzVkNGFmYTBmMWM1ZTI4ZjljZTg2ODAyZDYwIGFzdC1hcmVuYQorNDE2MjggNTFlM2E4MzhhZWJlNzQwMWRjODYyOGM4MjE2NmMwMDJkOWNmMjAyZSBhc3QtYXJlbmEKKzQxNjI5IGFiNDMxYjMyNGE0YmQ0Mzk5NzMyMmZhZjlhZDNiNTYzODE3NTIyZjggbGVnYWN5LXRydW5rCis0MTYzMSBiNzdlZGNlZTg4OGNhMzQ1MWE3MDViYmYzNDFkMDk4ZDJkM2YwNWZiIGxlZ2FjeS10cnVuaworNDE2MzIgZGJjYzg5MTJhMjRkZWM0NGQ2ZWNhM2QwOTAyOWQ3YzM4Y2FhNmQ3MSBsZWdhY3ktdHJ1bmsKKzQxNjM2IDY0OWMzNDE4MGEwZjUwZTAwNTUwNGJkZjk0ZTA0MmZjOGFjNzAxNmEgbGVnYWN5LXRydW5rCis0MTYzNyA5NmQxZmEzNjk2NGQ0ZTExYTAyNzNiNDllNGYwNmRjMTJmYjk1N2M0IGxlZ2FjeS10cnVuaworNDE2MzggOTU0MTM2OWIwZGNhZjA0OGYxYmQ5ODZhMjhjOTZmZmVlZTM3ZjgwOCBsZWdhY3ktdHJ1bmsKKzQxNjQxIGNjMzI2MTU5NzEzNmM2MjU2ZjkxY2E3NjMwZGRjNmM5MzI5MDdmM2QgbGVnYWN5LXRydW5rCis0MTY0MiA2MzIxNjY5ZjJmNGQxMGM2YmNlNWJlMzVlOTFjMTdkOTkyMzU1MTYwIGxlZ2FjeS10cnVuaworNDE2NDMgMGViNmVmOTJjNTZlMjU3OTZiM2IyOWNkY2MxOTA0OGQxM2NlYjNiOSBsZWdhY3ktdHJ1bmsKKzQxNjQ0IDUyZjFkNTdmMjM3ZGJiZGM1ZDgzNzQ0ZGY2ZDEzZjQ2NGJkYTYxMzEgbGVnYWN5LXRydW5rCis0MTY0NiBlNGI2MjFlMWVkYTY2MjIwNTY1MGRkYzExNDZmNWFhNTE1NDU1MmNkIGxlZ2FjeS10cnVuaworNDE2NDcgMzJlN2ZlOWMyM2I5MWNiMmY1MTE4OGZiODI4NTFiODdhYTZiNzI2NiByZWxlYXNlMjQtbWFpbnQKKzQxNjQ3IGY2ZTczNGIxZjI2MWM1NDZkODBlOTg0OTAzODA1NGJmMDk3ZmY4NGUgbGVnYWN5LXRydW5rCis0MTY1MSA2ZjUwMmQzNWZjNzc1YmU2N2I4MzFkNGRiM2U1YTU5OTQxYTEwODYxIGxlZ2FjeS10cnVuaworNDE2NTIgMTAyMTQwYzNhMzYxNGRiM2U5MzI1YWIwMjEyNDU3MTRlMWRkZDE2ZiBsZWdhY3ktdHJ1bmsKKzQxNjU1IGE1YWQ3NmE3OGY0YjI5YThhYTdmNzQ3ZGRiNmYxNmE4MmRjZTM4ZmQgbGVnYWN5LXRydW5rCis0MTY1NyA1MjJlMDA3M2Q5YzllOGJiNzUxN2JmYzY5YzJlYjNiYzNiZDlmMjQ1IGxlZ2FjeS10cnVuaworNDE2NTggZjk0NDE4NzE1ZTU1MzEyOTlmM2FiN2NjZGMyMTVjMGEyYzMwY2IzNyBsZWdhY3ktdHJ1bmsKKzQxNjU5IDA3ZmRiNGQyYjhmNjIzMzdkMzkzNjRhNTY5MzU5NmY0ZjFhZDEwNGYgbGVnYWN5LXRydW5rCis0MTY2MCAwN2NlOTM4ODU3ZTFiYTJmMTg1YzU4ZDNhMmRlYTk3NjFlMTI3N2MwIGxlZ2FjeS10cnVuaworNDE2NjEgMTY0NzBiNzIyZjIwOWMwMTI1NDNlOGE5MDBlZDliZDcxNDY2NGQ5MCBsZWdhY3ktdHJ1bmsKKzQxNjYyIDQwMzY3ODc0Zjg2MTZhYzcwNDU3YTgzM2YxZGViZGJkMmMzYjk0ZjIgbGVnYWN5LXRydW5rCis0MTY2MyAzNzdkZjM5YmNkYTFmMjZmZDMzZjdiZjc3N2IzYmMyNDMzMTYwNDBiIGxlZ2FjeS10cnVuaworNDE2NjQgZWQzNDdjNDM2ZDU4OTY2Y2JmZDg0ZmViYzE0MGM1MzA5M2FjZWZiYyBsZWdhY3ktdHJ1bmsKKzQxNjY1IGMyNTNlOTkzZGY4YWNlODIxNjFlYjJkZDczMjllY2RhMDdjNzZkNmEgbGVnYWN5LXRydW5rCis0MTY2NiA2ODgxNzMxNWI3NGNhOTY5YTRjNzZlNTMwZDY3N2IxODJjNWU2MDMwIGxlZ2FjeS10cnVuaworNDE2NjcgYmZkNmE2ZmM3MGVhZjUzZDZjMTBiZTBjYjQxMmVkNGJhNGFiZmJmNiBsZWdhY3ktdHJ1bmsKKzQxNjY4IGNmODg2MzZjZGY0YmU5OWQ2YmVlOWNlYjI1NGU5ZjI4ZDMzYzM0ZGEgbGVnYWN5LXRydW5rCis0MTY2OSBhMTRhN2Y2MTRhOTZkYTRiYjliZjQ2MDQ1OTI4ZTlhMDc4YWZiOGE4IGxlZ2FjeS10cnVuaworNDE2NzEgYmVjOWZhYzlmNzdjNzMwMzQxZGFiNjc4OGRkYmRkN2VmODZhOGY5NiBsZWdhY3ktdHJ1bmsKKzQxNjcyIDI3ZGYyZmJlMjcwNjY0Y2EyMjg1ZmRkNzJhZTMwMDFkNmQyOTk1NWUgbGVnYWN5LXRydW5rCis0MTY3NCBkYjFjMGFhYmM0MDVhMDJlYTU1YWRjYmVhYzY2YWMxN2FjOTQ5YWY0IGxlZ2FjeS10cnVuaworNDE2NzcgZTAxZDg1MjRiNmY2NDJjYmIzOTA5NDFhZDQ3M2ZkNTgwYmMzYmFlYiBsZWdhY3ktdHJ1bmsKKzQxNjgyIGNkOGI1YjMxZTAyYWE0YmI4YWM5N2ZjZjk2NzdhYzZkMTQ3NTcyYTAgbGVnYWN5LXRydW5rCis0MTY4MyA5MzAxYTdjMDMxMmFjMDNiNzY5NTM5YjAyOTMzZTc5MzMyYzMzOTkxIGxlZ2FjeS10cnVuaworNDE2ODQgMzVmZTkwMzI1ZjViN2EyMmNmYTRiMTI0MjM2YWMwMDU5YzY5MGY1NiBsZWdhY3ktdHJ1bmsKKzQxNjg3IGYwYTUzMzBmMmIzZTExYjFmNTcwY2ZlNGFiYzRkNDM1M2Y4NTA5NjQgbGVnYWN5LXRydW5rCis0MTY4OCA2MzVlMGQ5MDk2NDVlZjY1YTMxMzJhMzgwY2FmMzM5ZjdhOTU5ZjQ4IGxlZ2FjeS10cnVuaworNDE2OTEgNmQ3ZDFhOTk2YTAyM2E4ZGEzNWVmZDk5YWE2MTZjNGFiYWUxNDYzYyBsZWdhY3ktdHJ1bmsKKzQxNjk1IDI0OWZmZTEzY2FmOGE1NGM2ZmQ2YmMwMGRiYzkzYzg0OTQ0MjZmM2QgbGVnYWN5LXRydW5rCis0MTY5NiBmZGYwYWMzNmViNzQ2MTJmYTQ2OGIzMWU1ODQ5N2ZjNmQ0MzhmYjU4IGxlZ2FjeS10cnVuaworNDE3MDAgNGJmY2Q1ZGNkMGJmYTI1MGE1OTkwMzUyMmIzNmQyYjUxZmMwOGM3NCBsZWdhY3ktdHJ1bmsKKzQxNzAyIDc1NDhkNzY1NmQ4OTg2NGIzYWUwYjNmMWRmY2U5YWRmYmYwYTM2ZjIgbGVnYWN5LXRydW5rCis0MTcwMyBkZTY5YTUyNGY0ZWRiYzZjM2IxMjVlOTg4Nzg0NDUxYzUxYTg0NjdkIGxlZ2FjeS10cnVuaworNDE3MDQgNjRjNmFiNTY3MWU3ZDc3Mjk2OThiMDkxOGIxN2U2NGM0ODE1MjNjMiByZWxlYXNlMjQtbWFpbnQKKzQxNzA1IGRlMGMyZmVhNjVjMjFiYzlhY2JlZDM4ZDhhMDAxYTdlNDA1MGEyNjggbGVnYWN5LXRydW5rCis0MTcwNiBjNjkxZmQ2M2ViM2MwOTVjNmVkMGJiODk2ODk0NmFmMzU4ZDlkM2Y5IHJlbGVhc2UyNC1tYWludAorNDE3MDcgMThkMjdjNDQ0N2QxMTM2Y2RjM2IxM2UwMDZlYTMwM2RmNjZiNjVmYiBsZWdhY3ktdHJ1bmsKKzQxNzA4IGMxMTUxMzY5M2NiOTcwM2NlNjlhNjE0MjExZjEzMjllOTlmZDFhZjIgbGVnYWN5LXRydW5rCis0MTcxMCA5ODY1M2Q5ZjljYzM5YzNlNTkzYjQxNGJiZWNiYjhkYTE0M2M0YzgzIGxlZ2FjeS10cnVuaworNDE3MTEgNjUyYmQ1ZTViNzc4MmY4NmMwN2MzYTE1MjEzNjZlYTEwOWZlMDc0NCByZWxlYXNlMjQtbWFpbnQKKzQxNzEyIDE4ZjA5YWM2MTllODkyZjJlOWQ1YjBjODM1MDU4ZTIyOTdlZGI0MWUgbGVnYWN5LXRydW5rCis0MTcxMyBhNTU4MzFkMzI5MTVhMDVmNjFhMWNmOWVkYWMzYThhOTE2ODkwNzU3IHJlbGVhc2UyNC1tYWludAorNDE3MTQgNGRiMTdhMDBiZGNkMzUzMDdmMzY4NzIwMTFkNWJkMzVjNjNjNGVkMyBsZWdhY3ktdHJ1bmsKKzQxNzE1IGRlZTI1M2EzMTE2YzQ1NmY5Yjg2Y2Q3NzgxZTI1ZGQzNTE0YjU1NTYgcmVsZWFzZTI0LW1haW50Cis0MTcyMiA0ZWM2MDExMTA5MDYxMzc2MWU5OTBmZWI2ZTNkY2QzYzhiNzE2NWY4IGxlZ2FjeS10cnVuaworNDE3MjMgNjU4NmNkOTkyMGU3ZTNmZjZiMWNlMDQ5YTQ1OTQzZDAxZDRmODg3YyBsZWdhY3ktdHJ1bmsKKzQxNzI0IDliODk3ZmI3YWM2YTIyMTZkNjg5OGNlYzA4ZGQzYjUxMDY3OTAzNDIgbGVnYWN5LXRydW5rCis0MTcyNSBmODkzZDQwM2E5OGMxZjgxOWMwMjE2YTYzZjUyOTM5M2ExYzVmZmIwIGxlZ2FjeS10cnVuaworNDE3MjYgZmEwOGM2OTdhMjc1OGRiM2ZlY2ZkMGQ4Zjg5MjIwYmI1ZDFhNzUxMyBsZWdhY3ktdHJ1bmsKKzQxNzI3IGFkZTY3ODY4N2QzYjMyODA1YzQyNjk5ZmE4Y2ZhM2IyMjA2OTg3MTcgbGVnYWN5LXRydW5rCis0MTcyOCAzMjFlZmQwMzc4NTljY2NlODNkZTY2M2Q5YzM2N2MyZmZiZGQyZjJlIHJlbGVhc2UyNC1tYWludAorNDE3MjggZjFhZTExNDU3ZDM0YmMzYjBjNjdmN2NjMDM0M2U4OWVjZDUyOTZjMSBsZWdhY3ktdHJ1bmsKKzQxNzI5IDg3N2I1ZDRjYTM2ODE3MjEzNGZhNzBiMjE0NGY0YjBhN2U5YWIzNzkgbGVnYWN5LXRydW5rCis0MTczMCA3MzEwMzJkMTAxNTlmYmMwZDUyNDI0NTNkNjgyNzc5ZTE0NjdmNTc5IHNzaXplX3QKKzQxNzMxIDI3OTE5Y2Y4NGRjM2RkZjBjZGIzMGVjMTEzNGNkNmM3YzhhOTIyYzIgc3NpemVfdAorNDE3MzIgY2VjOWMyYzE0ZTI4ZDQ0ZjQwNjA2NTI3Y2U4MTEyYTRjNjc4Y2FhMCBsZWdhY3ktdHJ1bmsKKzQxNzMzIDllYzViMTY1ZmVhMDgxNGEyN2JhYThiOTY1ZjE1MjkxMDlkMTFhM2YgcmVsZWFzZTI0LW1haW50Cis0MTczNCA3OTYzMTBjYmZmZWIyMzI0ZTk0NmZmNTllMmVlMmU1MTI2MjYwNjIzIGxlZ2FjeS10cnVuaworNDE3MzUgNGMxNWE4ZTkxYWU3NGZlYzViZDBhYzUzMGRjNjZmZjMxZjFmYTkzNSByZWxlYXNlMjQtbWFpbnQKKzQxNzM2IDgxZDU5OTU5NTFmZDQxMGNhODZkYzNmNzRkNTBkZjE2MzY1ZDBkZjUgbGVnYWN5LXRydW5rCis0MTczNyA5ODA1NjE5NThmMWQzOTMzZmQ2MjEzNTFmOWFkZDNlZDI5OWMwYzQ2IHJlbGVhc2UyNC1tYWludAorNDE3MzggZmI2ZTY0ZWI4NmMwMzhmMzAyY2UyOGYzZDlmNmY3MmM5Nzg5MTE2YSBsZWdhY3ktdHJ1bmsKKzQxNzM5IGVhMDgzZWZkYzk2YzczYTk5MjA0M2VmZWM3ZGNlMjc3NzFlM2QxZGMgbGVnYWN5LXRydW5rCis0MTc0MCA3MTliYTAyZDJlMmNhNjNkMTUxMjJiNDQ2ZGMzZjI5M2ZmZWQ0YzYzIGxlZ2FjeS10cnVuaworNDE3NDEgN2JmYjA5N2Y5NTk3NmY0ZWJjNzZhMzc5NWNlMzAwNzUyNWRmMTg5OCBsZWdhY3ktdHJ1bmsKKzQxNzQyIDNkMWJhZjcxN2M1YWY1ZDllZjg5MTg2ZjUwMzc1OTRlNzI2YjlhMGYgbGVnYWN5LXRydW5rCis0MTc0MyBkMDIxNGJiMWZkNTEyYjY3ZjFjZTRlYmIwY2UyM2ZjMWUxMTk2ZjI5IGxlZ2FjeS10cnVuaworNDE3NDQgOTY5N2VlZWFmMjQ2NjMyZWM0MDkzYTc3NmE4NmE3MDA2MTI3OWE4ZSBsZWdhY3ktdHJ1bmsKKzQxNzQ1IDQ1ZjdiNzM4M2E0ZTIwYTk3MTBmNTJkOWNkOTZlNTgzNzI2ZjY1NzYgbGVnYWN5LXRydW5rCis0MTc0NiBkZTE2YTg1YzNiNGNmMzhlMmU1NmE3ODgzNmZjNzU3MWJkZDIxZjI5IGxlZ2FjeS10cnVuaworNDE3NDggMTViNThlNDVmMWExMzE2YWNjMTViNzRkMTdlMzgwMGU5ZGY3ZjBlNSBsZWdhY3ktdHJ1bmsKKzQxNzQ5IGRhMGJhYjVkZDc0MDg5ZjcyN2I4NmZmYzcyOTIzZDFlZTcyZjczZGMgbGVnYWN5LXRydW5rCis0MTc1MCBmNjdjNGFiMzA0ZWNlYTgxYWE4YTQzOTQzYWY1YTMyNjczMDgwOTU3IGxlZ2FjeS10cnVuaworNDE3NTEgYWE3ZDdkZjg1M2Q1NzA1OTA2NmQzZDVlNWE5ZmE3MTNkM2EyMjMzYyBsZWdhY3ktdHJ1bmsKKzQxNzUyIDNiOTAyNThmZWM5ZjZiMmU2YjNjOTgzOTQwYmNhMDE0ODRkNmQ3NTcgbGVnYWN5LXRydW5rCis0MTc1MyAxZmY0NzkwYjc2MDUwMThjNjQxZmNjYzQ1OTY5MjE0N2E1M2QwMTUyIGxlZ2FjeS10cnVuaworNDE3NTQgOGViZTM0ZWIzZWI3NDgwMmE0OWYyZDc3MTBmN2U0ZDY0NGE2NGQ0MSBsZWdhY3ktdHJ1bmsKKzQxNzU1IDEwNDQwYmNmYTA2MTcxOWM3YjdlOWVmZjc1ZDIxZTc0NzAxOWVlMmUgbGVnYWN5LXRydW5rCis0MTc1NiAxOWQ5NmMyZDdkZjU0ZTI5ZjBlZjU4NDMxM2FlYjFiZGU5YTExZjUwIGxlZ2FjeS10cnVuaworNDE3NTcgM2YzNThhZmJiM2QzZjM3YWYyMDMyM2M2YTcwNzg0YzEzYjdlMDJjOCBsZWdhY3ktdHJ1bmsKKzQxNzU4IDRjYmYyYTAxMGQ5NDViNmJjZDk1NWZhMDUxODdjMjU3OTk3MGViMDAgYXN0LW9iamVjdHMKKzQxNzU5IGUzZWNhNjVhZTE0NGY1ZGM4NDBiODQ2NTQ2ZGQ0ZGU2NTk5MTA2OWEgbGVnYWN5LXRydW5rCis0MTc2MCAzMDFmYjBhOTkzNzE0NGVjOTdiMzIzYTViOGY0NTNlYjhiNWJlNzU1IGxlZ2FjeS10cnVuaworNDE3NjIgZmE2OWYwZmEzNmZlZjliMmU5YzZhNjIxN2NlNGQxMzM0YzRiM2QxMSBsZWdhY3ktdHJ1bmsKKzQxNzYzIGUxNGY0Nzk2NDc0ODFlNGZkOWM1MTgzNjE2MmYyOThjNzMyNzZhOWQgbGVnYWN5LXRydW5rCis0MTc2NCA0OWEwNDkzZjI0NWUzZmI4NGU1NWRmMTllMTlhMmU5MDczM2ZiZGEwIGxlZ2FjeS10cnVuaworNDE3NjUgYTlkNGZiODYwN2QyOWZlOWYwMDA4ZDQ3ZWVkY2RjYzc0ZTk3NGEzOCBsZWdhY3ktdHJ1bmsKKzQxNzY2IGVjMzQ1Mjg0MGI5NjZlNmQ4ZGUyZDNjZmJmYTRiYzcwZjcwYWMyMGEgc3NpemVfdAorNDE3NjcgNGFhMDE4NzlhOGY1YTliY2U4MzM5MTUxMzkyZjU3MjFkNWI3YzQ3ZiBsZWdhY3ktdHJ1bmsKKzQxNzY4IDhjYjY4NmRkNmU2NDU4ZmY0OWU2ZjgzZWU1NDg3YjljNTk5ZjEzZGIgbGVnYWN5LXRydW5rCis0MTc2OSA3YzRkNWIzOGM1NWU2NjJhNjQxMDg4NjRhMzRiOWU0ZTZiMDk5Nzc1IGxlZ2FjeS10cnVuaworNDE3NzAgYjcwYjNlNWIzY2QxYzk2YjcyOTliYmI0YWYwNmEyYzJkMzRjYmU5OSBsZWdhY3ktdHJ1bmsKKzQxNzcxIGI4YjM3ODJiMmRjMDc1YmUyNzk0NmJhNWJkMDY3NGRmYzczODc5NmEgbGVnYWN5LXRydW5rCis0MTc3MiBlOTBlN2Q5ZTk4OTEwOWExMDE5NzkwMmNiMjM4NWQ3ZjA3MTRlYTIyIGxlZ2FjeS10cnVuaworNDE3NzMgMzU1OTYzMDdlNzg2MDIxYjEwYjRjMmZmYTE3YjQ5NWE0MGFjZGUwMiBzc2l6ZV90Cis0MTc3NCA5NjNkNzQ5Yzk3NzY0MGMxOWVjNGU3MmZhODlhMTI3NmQ0NWJiMDIxIHNzaXplX3QKKzQxNzc1IDVhODc2NDRhMzkwMDBmNTVjMTY5ODY2YjJlN2U2NDM0ZTI1MGIxZjQgc3NpemVfdAorNDE3NzggOGRkMzVkZDZiMGU4OWNjZTU5MmM3MTFlN2IyOTEyMTJjYmVhZDg4MyBzc2l6ZV90Cis0MTc3OSAzYmEyMzBjNzdkNDAwMDMxMDNjOWUxM2RjMDU4NmMzNTRhMjUxYTUyIHNzaXplX3QKKzQxNzgxIDE2ZTNlZWI4NTIwNmZkYTJmMGJkMWJhYmI3NzdhN2ZhNmIzODJlZjAgc3NpemVfdAorNDE3ODIgNGQxZjNlYzRlYWQ1OTY4YTcyZTVjZDk0ZTZjNTE1OWVkNzdlYTlmNCBzc2l6ZV90Cis0MTc4MyBkNmVhMTUzMGRhMzAwNDM1NWI2MzdlM2E4ODM4ZjMxNzZhZGQyOWZiIHNzaXplX3QKKzQxNzg0IDQyYWNmMzNhYTNjOGEyOGYwZTQ4MDNjMGQzMTZlYTU4ZDdlMjIyMTkgc3NpemVfdAorNDE3ODUgMDhlODBhMmJmNDBjZjg1NWQzZjNmN2U5ZmE1MGRiYjAxMTExYzlhZSBsZWdhY3ktdHJ1bmsKKzQxNzg2IDk4OGZkZjAyNTJiNzk0ZDcwNmNkNWEwMjIwNzNlYmMyOTA5NzFkY2Ugc3NpemVfdAorNDE3ODcgNjE3MDZlNTgxZWY5Y2E0NDk5MTRjNzNiOWYyOTQ2NTk2OWY5YzM2OSBsZWdhY3ktdHJ1bmsKKzQxNzg4IGYyZmE0MGU4ODM2MzBiNjNlY2UzZTQ5NWE1NGFiNjYxZTY1MmNkZTQgcmVsZWFzZTI0LW1haW50Cis0MTc4OSA5MTNhODBmNDU4ZTY4NzQ3OWE2Yjg4ZDUyOWM3NzY4ZGMyZDNmMzliIGxlZ2FjeS10cnVuaworNDE3OTAgYzgwODk3YmI1MDUzY2VlZDg3OGYzMWFiNjNlMzQwZTdjMDIzYzdiOSByZWxlYXNlMjQtbWFpbnQKKzQxNzkxIDJhNWU2MDA5YTQ0NTI3MDMyMTVjODQ1ZGYxMDRjNzI5MTUwMjU2YWUgbGVnYWN5LXRydW5rCis0MTc5MiA1MGZhNThhMjRlNjBmNDE3MGU3Nzk1OTZiYjU1ZTk2ZDgwYzFmZWQ0IHJlbGVhc2UyNC1tYWludAorNDE3OTMgMGNmMzI0OGUyN2U2NThhNmVhNDgxMjljMGEyNDY1NGI0NmRlMjU4MSBsZWdhY3ktdHJ1bmsKKzQxNzk0IDNlZDVhNGFjYmU3Y2IzYjljYmZmYTdmMmFkZWJmYmM5MTRlYzEyMWQgbGVnYWN5LXRydW5rCis0MTc5NSBhOTNiZTUxOWY5ZWM0MDcyNGM3YTBiYjE4MTRjMDk3ODE2ZDIzYWUwIGxlZ2FjeS10cnVuaworNDE3OTYgN2VjYzQwZDIwNTg2NDFmYzdjYjMzMWZiZTZjOGUzNTg2MTkzNzE5MSBsZWdhY3ktdHJ1bmsKKzQxNzk3IDc0YmVkZmQwYmQ2YjJmZmNhMWVhYTMyOTNhMTRhZGFmY2RmOWM2YmYgbGVnYWN5LXRydW5rCis0MTc5OCA1Y2U0NzEwM2Y4NDc5NDllMzU5ZDIxYTUwMTY2NjZmYzQ5NzAxZGUxIGxlZ2FjeS10cnVuaworNDE3OTkgM2EzOTQzMWE1NGE1M2FiNzYzM2NiOGE5MjI5MWFkNzIwOTliMjA1OCBsZWdhY3ktdHJ1bmsKKzQxODAwIDM0YTUxNTRlNjExY2MxMDY5NzA3YjhhNzg4MDk1NTk1Mzc4ZDZmNTEgcmVsZWFzZTI0LW1haW50Cis0MTgwMSBmMDExMjUzZDNjNDcwZDMzOTFlMGVjNzAzMDc4MjQ5ZWZiMDk5N2Q0IGxlZ2FjeS10cnVuaworNDE4MDIgNjMwZDAxZmVjZmVjNjQxZTRmY2FjMDRhMmM3ODgzYThkMmI2YmZkZCBsZWdhY3ktdHJ1bmsKKzQxODAzIDU2ZGRmM2FhMTJiMTFjY2JhYTNjZWU5ZDkxNWRjMzEyYmFjYzMwZTQgbGVnYWN5LXRydW5rCis0MTgwNCA5OGUyNTk1ZDczN2YwMWMzMzk5YjJhMjZkZTcwMjg3OGMyYzIwM2U1IGxlZ2FjeS10cnVuaworNDE4MDUgZTlhMTBmNzRjZjg4YWM3ZTM3YzI4ZTA5NzhhNGYxZDE0ZDRhY2RlNyBsZWdhY3ktdHJ1bmsKKzQxODA2IDAzZGJlYzBkOTUwNDZlMWExZjkxMzZjYTJjNTg3ZGZhM2Y0OWQ4NmIgbGVnYWN5LXRydW5rCis0MTgwNyA3Njc0MWU3M2JiNjQ5NzhjOTY3YTgwZmMyOGFjMDAyYTNjMjQzZGFiIGxlZ2FjeS10cnVuaworNDE4MDggN2Q2YWI5ZjM5OTk2Y2NmYTI5NzBhYjBmYWY4NDFhNWUzOTMwM2Y1MyBsZWdhY3ktdHJ1bmsKKzQxODA5IDA0NGQzNWNhMzQyNDdiNmU3OTIxZDhlMmFkYjdkOGEzNzVlM2RmZmYgbGVnYWN5LXRydW5rCis0MTgxMCA2Y2I1NzM5YjcxY2UwYjg0Y2NlMTcxOTEzZmZjNzM3YmM3NTc0MTE1IGxlZ2FjeS10cnVuaworNDE4MTEgNDNiYzdjYTJkOWRmYjg3OWJiZTAzNGFjODY2N2Y5NjdhZDc0ODUzZiBsZWdhY3ktdHJ1bmsKKzQxODEyIDY4NjMwNmE2N2U5YjI0NjI1ZmFmNTBmY2M5ODIxNmUwY2MxY2NiMzMgbGVnYWN5LXRydW5rCis0MTgxMyBjYWRjNzc4YWVjNzk2ZjIzNTQ0N2M0NTU1N2QxZmNmMmY1ZDg5MTY4IGxlZ2FjeS10cnVuaworNDE4MTQgNmYwNjM4ZTdiZDIzNjg4YTQ4NmMwNWU5MzAwZTBmODA5ZDE1OTlmYyBsZWdhY3ktdHJ1bmsKKzQxODE2IDUzNmYyNGUxNmFmMjQ2ODAyMTk3YmFlZWYzYjEzNDY4NTg3MWM5YWUgbGVnYWN5LXRydW5rCis0MTgxNyAxNjI3NzcxOGNlYjlhZTY2MzFmMjk3NTU3ZjVjODE5OWJiZGM1YWFkIHJlbGVhc2UyNC1tYWludAorNDE4MTggMjNlYjg2NzdiZGFkMTM4ZmY2ZGVkN2IzODk2MThjMzczM2U4OTk4ZiBsZWdhY3ktdHJ1bmsKKzQxODE5IDc2ZDUxMTk3MjYxNjI3Nzg4YWQ0NGM2M2ZlYjFiNjQyNDkyYzE4NTIgcmVsZWFzZTI0LW1haW50Cis0MTgyMCBlNDMxNmRhMTljZmMxZDk0YWU4YjZmZDU1MmM2NTViNzkxODlhYWVlIGxlZ2FjeS10cnVuaworNDE4MjEgMjE0MzM3MWJiOTFmYzIzN2UzZjlkNWM5N2M0YTUzOTAyZDYyMGI1MCByZWxlYXNlMjQtbWFpbnQKKzQxODIyIDE1NmRmNzdmOTkyZWJlZmRmNmU4OGUxZWRlNGFkMTJlYzAzNmUzZGEgbGVnYWN5LXRydW5rCis0MTgyMyA1OWE4OWI1ODhjMzA5NmEzNmJlNjkwZjRmMThiZGJjNzNkNWI0NmE5IHJlbGVhc2UyNC1tYWludAorNDE4MjQgZTA2ZGY1ZTEzZGI5ZGI3MTczN2VjZDc5MzM0MGE2MWQ2YjljZGYzYyBsZWdhY3ktdHJ1bmsKKzQxODI1IDczMGY4NGMyZmRkYjViMTE2NDlkODc5YWFhNDBiNmE2ZWMyYWRkZjQgcmVsZWFzZTI0LW1haW50Cis0MTgyNiA0OWQ2M2YzNzdmZTcyZDcxOTVmMTkyMmJiY2VkM2FlYTlkOWM4YjkzIGxlZ2FjeS10cnVuaworNDE4MjcgMTRmMDAyY2QwMzcxYjRhODdlMmZhZjk4NzMwMzQ4OWYxNDg2MmQ3MiBsZWdhY3ktdHJ1bmsKKzQxODI4IGM4ODZjYjE2YTE1NjQ2NTY4ZDIyYjZiYWQ2OTRkZjEyYmY4ZDk0ODggcmVsZWFzZTI0LW1haW50Cis0MTgyOSBmMzliZGJmNGIwYzFiN2ZiNGE5OThmYTdkYjllZWJiYzVhYmYzNWFkIGxlZ2FjeS10cnVuaworNDE4MzAgYTZhZTEwMmE2ZTExOWVmMzE3YzY0ZDc3Y2YwMmY2MmFhZTZhNzQ3OCByZWxlYXNlMjQtbWFpbnQKKzQxODMxIGI1NDBiNjA3NmZkOTkxNWVkOGQ4YWUzZTYyNTA4NGI1MzU1YjRlZGIgcmVsZWFzZTI0LW1haW50Cis0MTgzMiA3Y2MyMTVmMGMwOWIzYmYxZWMyN2Q0MTZiYTAyZDNhYjY0ZTBiZGMxIGxlZ2FjeS10cnVuaworNDE4MzMgMjMzOTc1ZGEyNDdlMjJhZTY4YzBmN2Q5M2Y2NDQzZTE4M2U5Y2ExOCByZWxlYXNlMjQtbWFpbnQKKzQxODM0IDhlNDM4YmY3NmNiYmYyNTA2MmE1NTRhYzg1NzlkYzY5NjY4NmQ2MTQgbGVnYWN5LXRydW5rCis0MTgzNSAxMDFiNjFhOWVlZDJlNTE4YzhjM2E1ZjA5YjNhYzg2MGQzM2FlZjY4IHJlbGVhc2UyNC1tYWludAorNDE4MzYgODJhNTJhNDY0YWEyNTZjYmFiNzdlNjVkZjdiNDkzOTUxOGQ0YjI0NyBsZWdhY3ktdHJ1bmsKKzQxODM3IDc0ZDE2ZWIyY2FiZGQyZWE0M2QzYjE3MTExMTFlNjQwZTRiNjVkZTkgcmVsZWFzZTI0LW1haW50Cis0MTgzOCAyMmRiZjU4MThiMGIyOTRlNDFmNDc0NTllOTAwN2NkMTBjMTZmZWJjIGxlZ2FjeS10cnVuaworNDE4MzkgODUwZjdkMWU0Y2EyNzY0NWYzMDk1YjY4YTNlNjViYzE1ODQ3NTMzOSByZWxlYXNlMjQtbWFpbnQKKzQxODQwIGFhNzA3MDQxNTA1ZDg5OWMzMzQyODc3MTFhY2M5YmJmNWQ0MTBjN2YgbGVnYWN5LXRydW5rCis0MTg0MSBlNDRhODMzZWNhNDMzNWQ4NTEyMmEyNjY3ZjNjYWQ3YzJjNjZiMDk3IGxlZ2FjeS10cnVuaworNDE4NDIgMmViNzhmNWQxNDUwMGU0NjUyZjNiY2Q1NzM4YzZjZjNlNDRkNGNiYSBsZWdhY3ktdHJ1bmsKKzQxODQzIDczZGE1OTFmOWJkYmRkNWNlOTc4MDcyNjE1YWFhN2ExZGY3YjAxNDIgbGVnYWN5LXRydW5rCis0MTg0NCBmOTI4MTI4M2IxMDlhNDliZDQyN2JmNjc3MjFiZGJkMDlhYTVjODczIGxlZ2FjeS10cnVuaworNDE4NDUgMDQyZWIzZDFjZTNmMzM4YWU2MWUzNWYzYzVlYmY3NGRhNTBhNTJlZiBsZWdhY3ktdHJ1bmsKKzQxODQ2IDk2M2E5OGQ4ZmUyZTRkMmNmZjI3ZDY4NzI1NDM0ZTcyNDEzZDdlZDEgbGVnYWN5LXRydW5rCis0MTg0NyBmZTliZDIxZjI3ZjIyODlkNTBlZTI2MTQzNzE3NDU1ZDQ4Y2E1Mzg3IGxlZ2FjeS10cnVuaworNDE4NDggYzcxY2ExY2QzNjNiNzVmMzQ4ZWE3NjRiZmY0YjczYTQxYjlkNWE2ZSBsZWdhY3ktdHJ1bmsKKzQxODQ5IDk2ZWIyYTVjZmJlZjYyM2VlZmQwYjYxMWFkZjM4NzE1YzgzOTc5NmIgbGVnYWN5LXRydW5rCis0MTg1MCAzNDUxYjEwOWEyNGM1NjNlOTFhYzk4MDg0YWVjODJmNTIzNzA4NjUwIHNzaXplX3QKKzQxODUxIDI5OGZjMzI2OTMxMGJlOWQ3YTE3OTdlOTVkNmZhNTViMjVmMmM3NWIgc3NpemVfdAorNDE4NTIgMjYxMDdjNWQwNTdjMWZmOGM4OTFlNzQ1NDg2YTAzNzhmNzA4YjU4YiBsZWdhY3ktdHJ1bmsKKzQxODUzIGY0NTA3Nzc0ZDRlNDFmZmU0ZWU5NTQwYTEwMjRlNDAyMGI4MTMzMTUgcmVsZWFzZTI0LW1haW50Cis0MTg1NCBkOTkzYTNlZTg5MWVkODJhNDFjNTM3ZDZmZjQ4MDhiYmZhZDY2OThmIGxlZ2FjeS10cnVuaworNDE4NTUgY2ZkMWUxZjRmZGRkYjEyNzY5NzVmYjhmZDI5ZmQ2MjJlYjI3NWU5YSByZWxlYXNlMjQtbWFpbnQKKzQxODU4IDFlNTk1YjZjOTI0ZTE3MDhmNWJiMmNmMGJmYzlmMjZiMTkxYmZlN2YgbGVnYWN5LXRydW5rCis0MTg1OSBiYjUxZDZjNmEzZTAzYTM5M2VjODM2NmUwNDZkYzAzM2EwZDU1YjA5IGxlZ2FjeS10cnVuaworNDE4NjAgNTA4ODZkNDJiNDQ0ZTQwZDdlOTM2M2MxYWI2MmEyNDAyOTEyOTA3MiBsZWdhY3ktdHJ1bmsKKzQxODYxIDE0N2MzNWY0MzVhMGI1YWQwODE3MjA4YzZmYWVkNjY1NTdkOTNmMWEgcmVsZWFzZTI0LW1haW50Cis0MTg2MiA2ZjI1MDI5ZGU5ZGI0MzY4NDcxOTUyOTk2Zjk4YjcxZGI0ZjZjMjJiIGxlZ2FjeS10cnVuaworNDE4NjMgODM0ZGQ2NjRhZWZjYTlmZTM1MzJmMDkxNTAyZGNiNTQzZjQ2NWZiNSByZWxlYXNlMjQtbWFpbnQKKzQxODY0IDhhMmFiNWY1MTkzMmZlYTNhMTIyYTZlMzg5MmRhYTk2NjdhNTM0MDIgbGVnYWN5LXRydW5rCis0MTg2NSA2NTI0MjljNGYyYTQ5MmY3M2NlNWE4OWE0MDQ4MWZhOGZjNzgyZTYwIGxlZ2FjeS10cnVuaworNDE4NjYgMjY2YmJkZjkxYmI1M2U3MmIyMmZjNWRlOTdlZmQzNmY5MDhjNmRhMCBsZWdhY3ktdHJ1bmsKKzQxODY3IDAwZGYwNWZhODE2MTRhZTYwOTIxZGY0MzEzOTBiMmJiMmE3YThjZGEgcmVsZWFzZTI0LW1haW50Cis0MTg2OCAwOWVkNmM5YmRiZDlhMjk1YzVjMmM4ZTAwOTNhYzA3NmFiOGUxZGI4IHNzaXplX3QKKzQxODY5IGMxODUwNGNlZjJiYTY1YWMzMjUxMzUyMTM5ZjQzOTFmNGI3MzFmMGUgc3NpemVfdAorNDE4NzAgYzNhZGM3N2ViMjg5MWUyMDRmMmJjZWQ3ZWYzMTQwZmRlMmZmMjQ3ZiBzc2l6ZV90Cis0MTg3MSBmNTQ0M2JkZjliMGRmOGMxOTNmYWE3NmFjZmY4YjY1NDZhMTBmYWYyIHNzaXplX3QKKzQxODcyIDEyNDg0YjY1OWZhODY3YTg0NDgzM2EyNmNlYzI2OGY0MjkyOTNiOTEgc3NpemVfdAorNDE4NzMgNDZmZjVjNTg2ZDg2Mzk3MTBlYjMzZDFhMzJiNjI5YTY5ODM2MDdmNSBzc2l6ZV90Cis0MTg3NCBhMjI3ZWYyNmExOGRiZDQyZDg5MmI3MDQ2NWQ0OGNlYThkMDJjOWVmIHNzaXplX3QKKzQxODc1IDUwYTQ3NTIxYjQwZjQzMGU1ZWJlYTQ3YjhjOTgzYzIyMGE1MTc2ZjIgc3NpemVfdAorNDE4NzYgYzg4YTgzMGQ4MzFjMWJmMzcyNjBmNDUxMDUwYTk3ZWM2ZDhhZTNhYiBzc2l6ZV90Cis0MTg3NyAyOTI0MzVhNzMyZThjMjQ5ZjkxZTljYmZiM2EzMGI0YWQyMzBjODU5IGxlZ2FjeS10cnVuaworNDE4NzggYWRlNDYzNzFmMDRiMDVjOWEwZjY2MjAzOTYzMWE3OWEwNDU4ZGRkNiBsZWdhY3ktdHJ1bmsKKzQxODc5IDZkZDYyNTQyYjZlNWRiZjhlMWYwZGUzNGMxYTNmODM5ZjUwZWM1YmUgc3NpemVfdAorNDE4ODAgODViMmQ4MDRhYzBhYmM3ODk5NDc5OTZjZmM1NDNmOTkzNWRkYzFkOSBsZWdhY3ktdHJ1bmsKKzQxODgxIGI5MDg2NTQ0MzgyZTIyMDgyMzVmNzQ5Y2UxNzFlOGUyODQ0MmY3MjkgbGVnYWN5LXRydW5rCis0MTg4MiBmMzIxYmUzNGI4NWQ1ZjU1ODQ3ZWYzYjUwOTk3NzI4YTljZDgzYmJlIHJlbGVhc2UyNC1tYWludAorNDE4ODMgMDNhMGIxOGE3NWJmNWRkYzgwNGRmMjllZjgwNDM1Yjk0MzUxYTU1NCBsZWdhY3ktdHJ1bmsKKzQxODg0IGE4MTFlYmEzMGZhNGRmM2FmYjc3MDI4MWVkODkxZGU4OGYxNzZhZmQgbGVnYWN5LXRydW5rCis0MTg4NSA5YjljZWQ0ZDc5MjFmNmNhMTM1ZTQyNDBkZDM4ZDE5ODNmZDE4MmI4IGxlZ2FjeS10cnVuaworNDE4ODYgM2Y2MmQzMWQ1OTg1YWIyOGQxNmYwMTYwZmEwYmE4ODEzNzY3YzNjNSBsZWdhY3ktdHJ1bmsKKzQxODg3IDQzMWQ2ZTg3YjlmZTBiZjRiYTRjZWQ5YWIzNjZjZTFlYzA2Njk3NDYgbGVnYWN5LXRydW5rCis0MTg4OCBiMjY0OGNhMjMxZTgwMjUzMmQ0MDI2MGFlNTM1YjkzZDRiYmM0MmNlIGxlZ2FjeS10cnVuaworNDE4ODkgNzk3MGUwMmZjODQ3Yjg1MTYwYjdlNmZlZjlmOTZmZDM5MzZiZTE1ZCBsZWdhY3ktdHJ1bmsKKzQxODkwIGM4Mjk3NWU5MWU5OTg1YzlmZGY1MTNhZjY4MmI0NDMyZWE5NWM0NjYgbGVnYWN5LXRydW5rCis0MTg5MSBiZjdlZWY1MDcyYjY5MTY5M2IzNjFjMmRmYjc2OTMyMjQwZjI1YjM5IHJlbGVhc2UyNC1tYWludAorNDE4OTQgODFmYTQ3ZDJkNDc3YmQ5YmY4ZTY5NDgxNTlhNTk4NTE4NzdhNGZlNiBsZWdhY3ktdHJ1bmsKKzQxODk1IGVlOTg0ZmU5ODFiNGVmYmE5ZTNiMjkxYjA1ZDJhNmU2MjEzZDc5NzggbGVnYWN5LXRydW5rCis0MTg5NiBmODBlZTE0MjcyN2E4NjJkMmRlYTliNTc1Y2RkY2M1Y2ZkMzllNWRjIGxlZ2FjeS10cnVuaworNDE4OTcgZGVlOTJlY2I4YTExM2NmMjhiNTI1OTY0MGJjZjM0MTUyZDhkNDc2MyBsZWdhY3ktdHJ1bmsKKzQxODk4IGFhNDU2NDQ5MjY2MDNiMDRjNTE1MmU3N2U2ZjI0NjY3OGQ3MTc3OWMgbGVnYWN5LXRydW5rCis0MTg5OSA3OWU3MGZhOGMyMTJmZWM3MDIwZWEyZWNhMzEyNWUxMDc2YjE3M2Y4IHNzaXplX3QKKzQxOTAwIGNlZWZjYWNlNmYyNDk5ZGI1MDE0MzY2MmZkZTg2ZmIwYmM1MjNhY2Egc3NpemVfdAorNDE5MDIgNmM4MTQ1ZmU0OTVlZGM5MDU4YzhjMTQ3ZWVhMTE5NmMwM2FhZDVlYSBzc2l6ZV90Cis0MTkwMyBlZjJkN2I5ZmRlN2NmOWU0ZDk1YWMxYTIwZmVjMGFhMjhmYTljZTRiIHNzaXplX3QKKzQxOTA0IDY5MWVlNTI0ZjAyNzU0YTliZGQyNzhiMTU5ZWVmMTUzMmM4OGE0OWMgc3NpemVfdAorNDE5MDUgNzY1NGRhMzZmZTljY2E4NjllMDNkMWExNjA1MzA2M2ZlMzM2N2E4ZiBzc2l6ZV90Cis0MTkwNiBmMDYxMzNiY2MwNWU2NjdiMDUzNWM5MDkxNzdkMTZhODc1MjQ0NzJiIHNzaXplX3QKKzQxOTA3IDUyYTc0YTMyMzY4MjA2NzdjZTExMjc1OWYzMTg0NjVhNzE4ZjA5OWMgbGVnYWN5LXRydW5rCis0MTkxMCA2MTQ5NDgzZjdhM2Q1NTQzYzhjNWQ3NzMwMWRlN2U1NjY0OGY5MjM3IGxlZ2FjeS10cnVuaworNDE5MTIgZWNmZWQxZjc0NzhjY2RiODc5MjEyNDJlOTc5MjhhYWQ5MTU1MjQ3MiByZWxlYXNlMjQtbWFpbnQKKzQxOTEzIDkyMDhhNzlmNTY4M2NkYmI0OTU4YzkyNzU5OWM2YTU3MzFkNDJhZjkgbGVnYWN5LXRydW5rCis0MTkxNSAwMzYwOGQ2NmU1OWYwYzU0NDAwMWJmZDhlN2ViOGY1Y2ViYzNkYWUyIGxlZ2FjeS10cnVuaworNDE5MTYgMGIxMGU4NTVkYWRmNjQ4MjBlMzZhMWViNmVkZTFhYTIwYzZlM2ZkNyByZWxlYXNlMjQtbWFpbnQKKzQxOTE3IGVhNmNkMWJlOTgzN2I1Mjg5NTM0YmM1MTdjNjFkMDEwZDVjODg4NmEgbGVnYWN5LXRydW5rCis0MTkxOCAyNmJlOGIxZDE4NTMwMTdkYzQ4NWQ5YmYzNTM5M2Y2MmFjZmU0NGU3IHJlbGVhc2UyNC1tYWludAorNDE5MTkgOTJlZjU2Yzk3Y2RmNDIxMGVkNjNlNmM0YWUwMTAyYWI3ZmVkM2Q2YSBsZWdhY3ktdHJ1bmsKKzQxOTIwIGIzNDgyMTY0YTEwMDM4MTQ1YjE4ZTdmZjBmMWJjNTg5M2VlOGUxYWUgbGVnYWN5LXRydW5rCis0MTkyMSA0NGYwNzYwZTI0YTE2OWVkYWI4M2Y0NDVlMmI3OWZiY2Y3MGFkZjQ3IHJlbGVhc2UyNC1tYWludAorNDE5MjIgMzhiMGZlNTFiMGI0Zjk5NWU1YzlkNWZkNGU4MGJiY2M3MGRlMjk0OCByZWxlYXNlMjQtbWFpbnQKKzQxOTIzIDQ0Y2ZjYTYxMzZjNjM4MmE2ZTlhYmJhOTMwYjFjYzEyMDk5YjEwNzMgbGVnYWN5LXRydW5rCis0MTkyNCAwMzI5MjRlNzVjMjRiYTAwZGJmMTYxYmY4YmM2YjY2OTlkMWFiM2ViIGxlZ2FjeS10cnVuaworNDE5MjUgMDFjYmVkNWU4NzMxMDcwYjE3ZjM0ODhmNWQ1MGM1YWE3YzAyOWE4ZCBsZWdhY3ktdHJ1bmsKKzQxOTI2IDg3OTFlOGM0NDhiMzFlMzAwNzRjMzE3NzgyNzg5MzAwYzFiNTBiNDcgcmVsZWFzZTI0LW1haW50Cis0MTkyOSA4MjVhMDQxODEzZmJlZTA3OGEzYmZmM2YxMTNkZWYzYTRlYWU5Mjc0IGxlZ2FjeS10cnVuaworNDE5MzAgMjE1MzFlMzkyMTE2YTA2MWZlYTMxODU1ODlkNDU2ZmNlM2JlMTE3MCBsZWdhY3ktdHJ1bmsKKzQxOTMxIDAzYTU3NDFjZmVhOWY2MGFiZWYzY2NlN2ZiYWIzZmJhZTcyYjk4MjYgbGVnYWN5LXRydW5rCis0MTkzMiA4MzM2NDc2M2M3YjJjNmE4MzkyMTEyNTUzOWM1OTliNzUzODBjMzQxIGxlZ2FjeS10cnVuaworNDE5MzMgNmQ3NDNlNWJhZjE0N2FlNGI1MWM0MmI5MmJmMjQ2MDliZmYyNDFjZiBsZWdhY3ktdHJ1bmsKKzQxOTM0IGNlZTA1OTgwZjFmZDFjNTIzZjM0MjM3MTY1ZmY5ODg0MmEyM2MxOTcgbGVnYWN5LXRydW5rCis0MTkzNSA5Yjg4ODVjOWU1NTFjMzljYTQzODk4MGE3MjQzZjBmNmQxODQzNjAzIGxlZ2FjeS10cnVuaworNDE5MzYgYzlkYTA4ZDQ4MmMzNmFmZmE5OTE2NWIyY2U1NDU3ZjQ3YmU4NjYwYiBsZWdhY3ktdHJ1bmsKKzQxOTM3IDI0MTA3OGVlNmU4N2FlODYzZTNlYjExNGZkZTE1ZjMzNzg0OGM0NTkgcmVsZWFzZTI0LW1haW50Cis0MTkzOCA2NWRmMjU2NzRkMWFlZjcyZDIxNzE2NzIzMjZkODQ0MDJiOTIwNmE0IHJlbGVhc2UyNC1tYWludAorNDE5MzkgNzdiNGFhYWQ2OTAzZWJiOGZkZTFjZTk0YjQzMWZmMzQyZjUzMzFiMiBsZWdhY3ktdHJ1bmsKKzQxOTQwIGY3MjNlMTlmYTNiNzFhMjBiMjFmZGU3NDAyZjllYjU4OGJiZGFmZjAgbGVnYWN5LXRydW5rCis0MTk0MyBiMTM5Yzk5OTY2NWQ5OTc5MjY4OWZjM2IyY2NlY2UwNGE0MjQ1MmQ1IHNzaXplX3QKKzQxOTQ0IDEyMjA1OGRmYmE3NjhhOTNkOTJmZGJhMTlhODU5YzU5ODc1NDFkM2YgcmVsZWFzZTI0LW1haW50Cis0MTk0NSA2ZTE3OTY4ZDRkZTkyYjE2MzJhODNmZjg2MjVmMzgyZjI0NDJkMmQ3IGxlZ2FjeS10cnVuaworNDE5NDYgYTFiMWU0NTFkODJlODVlNzk0ZmFjZjkyZTcyYWQxYmYzM2Y3NjlmNyBsZWdhY3ktdHJ1bmsKKzQxOTQ3IDRjOGE3NGEyMDIyNzgzNDgzYzhjMmI3MzhhNGM5YmNiMjBlMzA0Y2IgbGVnYWN5LXRydW5rCis0MTk0OCBjZjY5ZTMxOTEyMTgyOGI0YTc1MmFiZDgxZmZiOWJjMzI1YzZhYjAxIGxlZ2FjeS10cnVuaworNDE5NDkgMTY4NWRjZDJmOTI5OTNjZjUxZTVlMzNjOWVmYzAyNDNmZjczYWU2ZCBsZWdhY3ktdHJ1bmsKKzQxOTUwIDU2YWQ5ZjI3NWJlYzE5M2QyOTYzYzBiYTIyNTZhMGE1ODMyNjc2ODAgbGVnYWN5LXRydW5rCis0MTk1MSBiYjZmYTRhMzFmMTUyOTc2MDM5ZTNiNjdlMWEzODdhYzA4NmRiNjFlIGxlZ2FjeS10cnVuaworNDE5NTIgMDI2YWUxYjhhN2UzYmEwNWUxNGNhYjEwZTBmMWZmNmJjYTEzYmRiOSBsZWdhY3ktdHJ1bmsKKzQxOTUzIGU3Yzk2YzFkMTQ0YmE3NDI4NTQzOGUxMzc2MWNlNWVlODBkMmE2ZjQgbGVnYWN5LXRydW5rCis0MTk1NCBlOGRlYzc4Y2ZhMmUzZTZmNGYzMjhjZjEyYzRmNzc0ZGRjNGVmMTdhIGxlZ2FjeS10cnVuaworNDE5NTUgZGVkNGE0OTdlYjc2ZmI4N2JkZWM4MmVjOTJiOTlhNTFkOGZjNTRiMCBsZWdhY3ktdHJ1bmsKKzQxOTU2IGQzZjRjNDY3ZTQzOWEyNTc4NTNlZTVlMjg5ODI5ZGEwOTIzZTMxODIgbGVnYWN5LXRydW5rCis0MTk1NyBhNzdlNWIwNDZhNTA4NzYzMzhlOGMxNzdlZTdmZDBhYTMyZmQ1OWUzIGxlZ2FjeS10cnVuaworNDE5NTggYjlkZDQ4MWIzOTcyZGQ2NDAxM2I1Y2I2Y2M5ZWVhYzFjZTg0OTY5NSBsZWdhY3ktdHJ1bmsKKzQxOTU5IGU5NGVlNTlhMmQ0NjFkOTUwNGFjN2ZlOTExYzNlZWI5MjczN2NlOWEgbGVnYWN5LXRydW5rCis0MTk2MCA5ZjY2YmRkNWEwNjEyMzkyNDFjODdmMDVmNjM5Y2E4MmVlMWM2NTViIGxlZ2FjeS10cnVuaworNDE5NjEgZWNkNDIzNzE4YTMyN2RmNTZkOTk2M2I4ZjNlOGMxNjVjNzVmMjhlZSBsZWdhY3ktdHJ1bmsKKzQxOTYyIDhhYjc4ZmI0ZDE3ZWQ0YWMxOWU2ZDdlOTU4NTljMWYzMDA4NGJlNTkgbGVnYWN5LXRydW5rCis0MTk2MyAwZjhjNTU0NmQzYmY0NGI3NTRmM2UwZmQ4YWQwMjc0ZGQ5ZTBmZGMyIGxlZ2FjeS10cnVuaworNDE5NjQgOTJlMjQ2OGJkYjRhNmE0MDMxN2NkZWJlMzhlNTczNzg2ODlkNGRmYSBsZWdhY3ktdHJ1bmsKKzQxOTY1IDAwYmRjMDhhNTA3ZGVjOWRhMGM2ZGU2M2ExMTRjYzRmMzVmZTYzYzcgc3NpemVfdAorNDE5NjYgYWY3ZDQ4NDIwOGU5MjcxYTRjYmFiZTQ1ODI1ZTY2M2I3OTY2MWU1NyBsZWdhY3ktdHJ1bmsKKzQxOTY3IGQyMjI0YzhkNDU0OTI2MjU0OTNjOTYyN2E5MmNmOGMwNTE3NmQ5ZTIgc3NpemVfdAorNDE5NjggNTU3ZTliNmVlN2UxMWU2ZjdlYTVlYTA0MjdiZmIwNDdiMGU1NDc0ZSBsZWdhY3ktdHJ1bmsKKzQxOTY5IDBmNTE4OTYwNzI2NDBhZTExNjc5MmIxNDYwZmZjYmIzZDkxYzdlZmYgbGVnYWN5LXRydW5rCis0MTk3MCA2MGE1YTFhYTE2ODJiNjcwZTIzZTdmZGQwOWJiZDkzYzMxZWQ2NjU5IHNzaXplX3QKKzQxOTcxIGE5YWJkYjE0Y2YzYjc4YTQ3YTllYmMzNGNlYjZiYTFjMWZiYzdlNTIgc3NpemVfdAorNDE5NzIgYTI2NDMyNTNhYzc5NjI5NGIzYzY4ZDkxOWQ5NGU4ZmY2ZjE0MWZjMyBzc2l6ZV90Cis0MTk3MyAwOTY4ZjA2MmYzNTA2OTg4Yjg4NmE0ZjljMWI1MmU0YzI2N2YxZTMwIGxlZ2FjeS10cnVuaworNDE5NzQgZTc4ODBmNGY1M2E0MGQzMTNjN2EwNDdkNTA0MjUyMzM2MjI0YThiOSBsZWdhY3ktdHJ1bmsKKzQxOTc1IGQzZTY4Y2I3MzlmYjI1NzVmYTU5YTRjZDQ4YjM4ZTE1YTFhZjUyMTcgbGVnYWN5LXRydW5rCis0MTk3NiA1OTFkZjU0ZDJkMzBmMTRlMDYxMjQ1YzY3OTg1NGE0NTI4ODBlZGE5IHJlbGVhc2UyNC1tYWludAorNDE5NzcgM2JhOWZmNzliYjI5Yjk0N2ViOTdlOGY5OTM1MDkxZDg1M2QxNmZlNSBsZWdhY3ktdHJ1bmsKKzQxOTc4IDgxMWQ2NDRkMTkxNzY3NzEwNTQ3NjFhMjdkZmFlODE1MGQ3MTZiZDAgbGVnYWN5LXRydW5rCis0MTk3OSA0YWM5YjhmY2Q2M2VhOGQ4NTMxMjY5OTQ0OTM1NGUyZGVkN2FkNTlhIGxlZ2FjeS10cnVuaworNDE5ODEgZjA5ZTYwOTFhNzYyOWVlZmZiNzYxNjViMDc5OGIzMGUzZDIzMjMxNCBsZWdhY3ktdHJ1bmsKKzQxOTgyIDhkZjE5NDI5NGM5MGRjNGExMWRmOTBiYjVkMmVlMzIyNTk1ODViNGYgbGVnYWN5LXRydW5rCis0MTk4MyBkNDM0YjNjNzM5MDE2MGYzNTIyMDk0M2Q1YzQzZWQ4NmRlYWNlOGJhIHJlbGVhc2UyNC1tYWludAorNDE5ODQgMjdiZGMxZTI3ZWVkYjdlYzQ1OWJjYjllM2IwNDM0YzhlZmQ2ZWI5ZiBsZWdhY3ktdHJ1bmsKKzQxOTg1IGMzYjQyYjdiZDZkOWRhYWRjNGE5NzY4NmZlYmQ4NDdlY2JkODA2NGYgcmVsZWFzZTI0LW1haW50Cis0MTk4NiAzYzE1OTc2ZmY2MTg3MmI1YjkwMmJjMmJkM2ViZWRhYTA2YTIzODY0IGxlZ2FjeS10cnVuaworNDE5ODcgNmNmN2QwNGRjYzFmNTdlNjczMzdkMTYwOWVmN2U2ZTU0MTBjZWZiZiBsZWdhY3ktdHJ1bmsKKzQxOTg4IDA5YzIxYTZiZTYwNDE4NDc4YzdiYzk5ZGZjMTVjNjMwMzQxNWIyOTggbGVnYWN5LXRydW5rCis0MTk4OSA5ZjZlZGM4NzQ1NDFjZDI5YzI0NDJlNDkxMTQwYjliNjBlYTk2YmMzIGxlZ2FjeS10cnVuaworNDE5OTAgMjZlNzhiMTk2YzE3Mjc4YTg2MDlmM2VlYTA2ZjA4MjMyODY0ZGJlYyBsZWdhY3ktdHJ1bmsKKzQxOTkxIGNhZDU5MWQ5MjFlY2IwMmQ0MDFkZDkzMzkzNDc2MmI0NzlmMDM4MWMgbGVnYWN5LXRydW5rCis0MTk5NiAzMDNkZWE4NDc2MzkwNGZiODU0Y2NjOGI4ZTZmNzcxNGUxZjVhYmQ1IGxlZ2FjeS10cnVuaworNDE5OTcgNzZhMWMyMGU4MzBlNTVjMDIxYTI1ZDM3YjhmYThhYTAzMjA0YmNmNCByZWxlYXNlMjQtbWFpbnQKKzQxOTk4IDNjMDMwZWRmZjk4NWE2YmM5OTliZjNmNzJjNzc2YWEzMjZiNzNhZGEgbGVnYWN5LXRydW5rCis0MTk5OSA5ZGYzOWM5NjBiZjFjNjgwYmIzNGYxN2ZjZmJlZTYwM2JlOThmNmJlIHJlbGVhc2UyNC1tYWludAorNDIwMDAgNzkwZjhkOWU0OTg4OTgxMTY4MDJhNzJmZTc1MDRmYmYyYjAxZjkyZCBsZWdhY3ktdHJ1bmsKKzQyMDAzIDQxZWYyOTEwZGQ0OThiMGY4NGU4ZjRjYmEzYTgxZTNkZDNhNTU4OTggbGVnYWN5LXRydW5rCis0MjAwNCAzNWRmNmRkODA5MTEwYzdiNGVkYTMyMWZiNzdjODdiYWJhZTFiMzJhIGxlZ2FjeS10cnVuaworNDIwMDcgMGQ1MzM1Mzg3YmE3MzJjODRkZjhlNTlhMTYzMmM1MWZjZjlmODg3NCBsZWdhY3ktdHJ1bmsKKzQyMDA4IDQ3NWI2NDVlMTJmNWVjMDU4YzMyODBiZjQwMjU4NmFkNTRjNmUxM2EgcmVsZWFzZTI0LW1haW50Cis0MjAwOSA4NzQ3YmY0Yjk1NDIyY2IyM2NmMDU1MTIxNTFjODIyNGRmMzM4Yjg0IGxlZ2FjeS10cnVuaworNDIwMTAgMjFlMTc4YjkzMDMwZDFiZmEyYmFjNjNjOWRjMGIwNzRhYzIzNWE0NSBsZWdhY3ktdHJ1bmsKKzQyMDExIDg0YmEyOTllMmI1ZmVmNDExYjBhNzFmYjgxNmVkNTQ3MjYwNmNjM2YgbGVnYWN5LXRydW5rCis0MjAxMiBkMDEwNDM2NGY2ZDFjODQwODI3NzE4NGViYmRiMGEzMmIyM2U5NTBkIGxlZ2FjeS10cnVuaworNDIwMTkgNWQ4MTY5MjhhMjI0NWUxNzQ1MzFlZDczZGFjNzA2NTYwNWVjZTg0YiBsZWdhY3ktdHJ1bmsKKzQyMDIwIGUxZmQ3YmQyODk1YjA3ZDQ4ZmZlM2FmOTA0YTBkNjU5MTE2ZTMwZTYgcmVsZWFzZTI0LW1haW50Cis0MjAyMSAxOTJlODM4OTRlODk4Y2FjNDAzNjQ4NWRjMDZkNzgxM2RhZTc0MTJjIHNzaXplX3QKKzQyMDIyIDhiOGYxYTUxNDY4YWQyNDgxMTJhNjVkNGNmZjdkOTY1MDRjMGQzYjcgc3NpemVfdAorNDIwMjMgMGZlNzVhMDQ2YzAwNTQ4MGYyNGIwOWI1YjRhZDRlNjE3ZWI5MGRiNSBzc2l6ZV90Cis0MjAyNCA0Zjk1MDdiZTU4NTc5YjQyY2QyOTY3MGE1NmIxYzUwNzkzYjQ4MDY0IHNzaXplX3QKKzQyMDI1IDY2MmM2Mzk1NGRmMjk0Yjc0ODQ0MDAxNjY4ZWQ2ZDQ3ZjRkNTk0ZGEgc3NpemVfdAorNDIwMjYgZmQxYjEyZDNhYmI2OWMzOWFmYzg5MWM3YjMxODExNDg4ZWU2ZDk4NSBsZWdhY3ktdHJ1bmsKKzQyMDI4IDUyNzc3NzBiYzlkMWJhNmFiYjdiNDgwYTA1YjQ0NDliMGExNTdiOTAgbGVnYWN5LXRydW5rCis0MjAyOSBhYjEzMGQ1NjY5MzE5ZThlYTgzZTZkMGM3NWUwMGYwZDBmZjk1ZTc2IHJlbGVhc2UyNC1tYWludAorNDIwMzAgNWUyYTU4Yzg2N2Y3MmMzNzFiZmJiY2I1ZjY2YjQ5MDYwMjliZDVkYSBsZWdhY3ktdHJ1bmsKKzQyMDMxIGRhMDk5NWNhMWYzMDdlNzg3YzI0ZjgxY2MwOWQ2NjUxMWZiNjJlYWUgcmVsZWFzZTI0LW1haW50Cis0MjA0MSA3OGE2OTc1OTU0N2ViZTgwMTNmZWQwMGU5M2ZmNmU5MTc3NDZkNTY2IHJlbGVhc2UyNC1tYWludAorNDIwNDIgMjFkMzBmOGU0MWZmZGU2NzhjYzQ0MGUyMmE5YTFiOWRiYTkwNGUzNSByZWxlYXNlMjQtbWFpbnQKKzQyMDQzIGU2MDlmZWE5MmQxZTE4YTVmZWUxZmFlZWIwNGNhYTk0MTQzN2IzZmUgbGVnYWN5LXRydW5rCis0MjA0NCAwYjIzMWMwNWE3ZWRhYzE2NmQ0N2I0MjdjOWIwZGExMDNjNmUzMmE5IGxlZ2FjeS10cnVuaworNDIwNDUgODY5Nzc3NmJiNDIwMzdjMjMyNTMxNTg0N2RiNWQ3ZWNkMjVlMWIyNyBsZWdhY3ktdHJ1bmsKKzQyMDQ2IGFlNDQ4MDkzNTAxNjBlNTgzMzI5MTY2NTMyYThlZTFlYTdjZGE5YzIgbGVnYWN5LXRydW5rCis0MjA0OCBjMTI4MDAwMjEzOTY5OTMxZDVkYTE0ZGY1ZTcyNDgwNTNmZDI5M2FjIGxlZ2FjeS10cnVuaworNDIwNDkgYzllYTU1NzBkYWM3ZTZjMWY0YzBmOTQxOWZhMWViOGVlYjJkMGVmZiBsZWdhY3ktdHJ1bmsKKzQyMDUyIDdjYTUxY2I3MGMyZTI0ZGE2MjlmOTlmMjM4YmUwMmIzYWQ2MmMzODAgbGVnYWN5LXRydW5rCis0MjA1MyBiOTRlZTkyYTZkNmI1ZWI1OWU4NGM4ZTQ5OTQ4ZWIzZmM2ZWUwNDkzIGxlZ2FjeS10cnVuaworNDIwNTQgMDdmYmQzNGYxZjZlZDEzMWFmY2I0NmU0NmYyY2YzMTczOGZmOTNhNyByZWxlYXNlMjQtbWFpbnQKKzQyMDU1IGVmMWQ4ZDZhYzZiZWZiNmU0ODdhZTQxOTBmMTdlMzI2MzUzNzEyMjggbGVnYWN5LXRydW5rCis0MjA1NiBlZjNiNDM1NzhhNWZmYTc3MTQzNzNiNWYwZTlhMmU5Y2Y3MThlZDRiIGxlZ2FjeS10cnVuaworNDIwNTcgYTIxMjUzZmIwOGM5NzJkMDA2MWEyNDViNzFhYjFiYzVhNzcxYWU2NCBsZWdhY3ktdHJ1bmsKKzQyMDU4IGU3MDMzZGZmZDYwY2FlODM0OTU2MTc2N2MzMGRmZTMyM2UwN2UwZTEgbGVnYWN5LXRydW5rCis0MjA1OSBjN2NmZWExZWJiMzIzNDE5ZTI5YWZkY2IxZGVkNzVkYjViMmM0ZWNjIGxlZ2FjeS10cnVuaworNDIwNjAgNmQyYmUzYjc2ZjJlMjgzNjU3MzQ1NzRkY2M2M2FmY2NiYzFlZDRlMCBsZWdhY3ktdHJ1bmsKKzQyMDYyIDllZWFhMzNmOTY0MDYzM2M2MTYyOGJkN2FkZjU5OTZlNTBjNmNjYzQgbGVnYWN5LXRydW5rCis0MjA2MyBiMGQ3ZDI4Y2Q3NDYxZjJmMWMzNGQzNTY5MGMxMjhkZmFlMDNkOGM5IGxlZ2FjeS10cnVuaworNDIwNjQgMzg4ZWJjNmUzZGUxMTc5NzMzMTUwN2QyMjkyYjhhYjExMTY0ZTEzYiBsZWdhY3ktdHJ1bmsKKzQyMDY1IGU4ZmM2MGM0ZmFhZDdlM2E3N2UyZjg2OWZhZjM4MDJmM2U2ZTQxZWIgcmVsZWFzZTI0LW1haW50Cis0MjA2NiA0MDVhYjBkYzljYmMzOTEzZjg4NDllOTAzMTUyNTFlYmMwZmJkZWEyIGxlZ2FjeS10cnVuaworNDIwNjcgNDNiMTZlZWZmMjI2YjJlZWRjY2Q0MzUwMjkyYzZkZmUxYWM4MjFhNiByZWxlYXNlMjQtbWFpbnQKKzQyMDY4IDJhZmJhYWU2Yjg4ZTBiYWNkMmYwMjdkZjkwNzRhZjNjM2UwY2Y0ZDQgbGVnYWN5LXRydW5rCis0MjA2OSAyYzg2MzBiNmJjMzU5OTU4YjJhMDdlNjU3ZjNjOGM1NDY0NTAwZDFlIGxlZ2FjeS10cnVuaworNDIwNzAgMDI5NGU2NjYyNzQ5YWQ0YzUzZWVhYTlmZjdmYTA0ZDRkZGEyNjkyYyByZWxlYXNlMjQtbWFpbnQKKzQyMDcyIGJlY2ViOGU2NmIwYmEwNGFkMGQzMDljMTRiZDY4OTc2M2UzNGVlZTYgbGVnYWN5LXRydW5rCis0MjA3MyAyZjdiNTQwMjJiM2IxZWUzYzZjZDQzZDdhOGE1M2EwNTQ5MjYwMGFlIGxlZ2FjeS10cnVuaworNDIwNzQgNGRiYTYxZTQ5MDM3ZmViYzkwODY3NTVlYjY0ZjJkNTc5ZDYwMmUzZCBsZWdhY3ktdHJ1bmsKKzQyMDc1IDIwZjIxZGM3Mzk2ZjIzZGU5YzdmMGIxMDkyN2NiNzc2M2E3Njc2MzkgcmVsZWFzZTIzLW1haW50Cis0MjA3NiAzNzA5Y2UzN2ZlMWM0ZjFlZDZhMWRhYzUzZjY1MTcyOGYzZjRjOThlIGxlZ2FjeS10cnVuaworNDIwNzcgNjVmZTlhY2VkMDAyYmM4YTUwYzY5MWRkOGY5OWJhNjQ1ODZhZDBjNyByZWxlYXNlMjQtbWFpbnQKKzQyMDc4IGJjMTgzYjVmOGJjMTlkZWZlNzFmZTNhODRhYTk1ZDQ4YzViNWNjYjcgcmVsZWFzZTIzLW1haW50Cis0MjA3OSBlMzY0OGJhOTE4ZWU0MDA4MDVlY2QzZjQ2ZDYzOTI5ZTM0MTk0ZjY1IGxlZ2FjeS10cnVuaworNDIwODAgMmFlNDE2YWFjYjg4Nzc1N2RkOTRlOTU3NzM2YWY2MjA4ZTY0Zjc4NCBsZWdhY3ktdHJ1bmsKKzQyMDgxIDdiYjY0YWNlYWRkN2M4YzY5M2NmM2IxOTQ5MjlhYjI1YzVmZWI0MmEgcmVsZWFzZTI0LW1haW50Cis0MjA4MiBjNGM5M2JkZTE4NWM3ZmY0NDUxYjAyODEwODJlOGQwYjEwYmM0NTJlIHJlbGVhc2UyNC1tYWludAorNDIwODMgMWVmNTA2M2EwYzZkOTU0ZWYzZmVjMjhlZjFkNTdhZmVjYmRkNzZlMiBsZWdhY3ktdHJ1bmsKKzQyMDg0IGY2MmQ3ZDJjNTBkZWVkMzRmOGI2ZTQzMDU1ZDRmMTUxMWFlMDQ1MDggcmVsZWFzZTI0LW1haW50Cis0MjA4NSA0OTY2YTM2MWY5MzY0MjQ2NWZiZDdkYTJjZTU4YjFmYmViYjJiZjFmIHNzaXplX3QKKzQyMDg5IDg1YjVhMmNkYmFjMTA3YmZmMTc0MDVmNDcyOGY4MjJhMzZjODhmNDUgbGVnYWN5LXRydW5rCis0MjA5MCBhZTA3YjBlN2Q3MGE4OWEwNzdjMDQ1MDAzOTU2YWFkNzQyOGE2YWNjIGxlZ2FjeS10cnVuaworNDIwOTEgYzU4MzIxNGQ0YzUxMDk0YzhhNDZkOTdkOWMxYzg0MTVjMjVlZDM0YyBsZWdhY3ktdHJ1bmsKKzQyMDkyIGQ3OWYwNDMyODRiZDUwNmZjYThmMGMzYzdmZTY0OWFmYmIzN2UxMDEgbGVnYWN5LXRydW5rCis0MjA5MyAxYWY3ZjcxOWVkMjhmMjc3NzViMWFhYzk5YTg1OGQwMThhYWIyMjc5IGxlZ2FjeS10cnVuaworNDIwOTQgM2VmMTM4MGZkODNjMmViNTc3OTJmYTBkZGMxZjExY2NhMmI5ZmEyMiBsZWdhY3ktdHJ1bmsKKzQyMDk1IDJlMTUxYmM4MjBmNzE4NDA5OGUxYTdmZjk3Mzk0YWNjZGQ3MmZmNGIgbGVnYWN5LXRydW5rCis0MjA5NiAyMTJiYzIzNjMyYWI1ZDQ3NDkzY2QxNWZkYTMxMmE5YjlmMzFlYmE2IGxlZ2FjeS10cnVuaworNDIwOTcgMmQzYTFjM2M5MzA1NjkxM2IyYmM2MGZmMzViMjIyY2U4OGRhYjBmOCBsZWdhY3ktdHJ1bmsKKzQyMDk4IDY4NzRmMjY5M2ViOGEwZWVmOWQ2OGNlY2ViZTEzOGE5OTE2Y2Q5NTYgbGVnYWN5LXRydW5rCis0MjA5OSBhNTMwMTc2MTg1ODY1ZWY5ZWJiMDQyMjlmMWYxMmM2MTAwZjY3ZGQyIHJlbGVhc2UyNC1tYWludAorNDIxMDAgYjU4NzYxMGUyMDY5YTRkOWM0YjY3OWFlOTRlYjRjZTc1NDFjMTczMSBsZWdhY3ktdHJ1bmsKKzQyMTAxIDFkNzY0NjM4YWJkZDgwMzE3NmEwNWMxMzIzN2I1NGFjYWU1YWEzMjkgcmVsZWFzZTI0LW1haW50Cis0MjEwMiBlYTZhNDZkOGM1MWVjMGFiYzk0ZjJiZmU0ZmEyYzU0MmNiZDdmYTAyIGxlZ2FjeS10cnVuaworNDIxMDMgOThmYWFjMWRmNWJiZWRmNWViMGZmNWYyNzA0MTU0MTk0Njk4NTRkNCByZWxlYXNlMjQtbWFpbnQKKzQyMTA0IDA3MGJiNDIxYTMwM2JjZTIwMDI3MzQxOWIwZjEyYTgyNGRhYjliNWEgbGVnYWN5LXRydW5rCis0MjEwNSA5MjhkZTRhM2JlNmY1NDlhMTBiODA0YzY4MzljNjg5NWIwMjFjNThhIHJlbGVhc2UyNC1tYWludAorNDIxMDYgNWU4YWYyNDIzNTc1MDYzNDFiNzIyM2Q4OTZlZDNmOTRlNDZhNmE3NCBsZWdhY3ktdHJ1bmsKKzQyMTA3IGZkYTkxMmZlOGI5YWRjNDA3OGIxNmQyYTdmYjZiYWU3Mzg1Njg0MjkgcmVsZWFzZTI0LW1haW50Cis0MjEwOCA3NmFiYTNmYTRlMmY4MTdiNWU1MzFmMzM5N2RkOGRkMTUwMTEzOWFlIGxlZ2FjeS10cnVuaworNDIxMDkgMTdmMDk5NDc5ZTZiNzNkY2VlNWQ2NzI1NjBjN2U3MmI5ODc4Mjg1MSByZWxlYXNlMjQtbWFpbnQKKzQyMTEwIDRiY2Y1ZmU1NGQ4MzQwYWFkNzRjZTNiMjVjYzYwM2RiMmM0MmI5ZDkgbGVnYWN5LXRydW5rCis0MjExMSA5ZWFlMzJiZGY4MDFiNjcwMWJjN2I5ZjhlOWQ4ZDIzMDM1MDk5ZmNjIHJlbGVhc2UyNC1tYWludAorNDIxMTIgYWE3YWM5MDg3YTFjMzA2MzJhYmZkNzk1MDIwODY0NzUwMWFiNjcxZSBsZWdhY3ktdHJ1bmsKKzQyMTEzIGMyYjE0OTczMTBkMTAxNTliYzNjNTM0ODVlYTcwYTk0Y2ExZTEzNTMgcmVsZWFzZTI0LW1haW50Cis0MjExNCBhZWQzMmNlMzViODJkZmZhZDdlNWIyOWNhNmJiMmUxMzNhODA2ZGNjIGxlZ2FjeS10cnVuaworNDIxMTUgZDQ4ZjRhNGEzMDZmNTkzZWYwYTExNGRjMTVjMzYwZTE3MDA1ZTUxMyBsZWdhY3ktdHJ1bmsKKzQyMTE2IDU4MjUxYzk5MDRlMTg5MjcwNDQ2ZTYzMzVlYTMwYjI1NWRhN2E3OTQgcmVsZWFzZTI0LW1haW50Cis0MjExNyBlYjRhNDdiODE5NDI0Y2NmMzY5ODExY2Q2YjMyMmFhODBhNmI3ZDUwIGxlZ2FjeS10cnVuaworNDIxMTggYjBhOWE4ZDE0YWIyMjI0NGMwYWIwNGEzYzUzMDhlYTJiYjBmZjgxMyBsZWdhY3ktdHJ1bmsKKzQyMTE5IDMxNWY0NDA3YWIxMmQ1NzdlMDA3ZThhN2M3M2M2YTcwYmI4MjRhNTYgbGVnYWN5LXRydW5rCis0MjEyMCBmOGZjY2FlNmEwZjVkYzgyODdmMDZlYTc3NjUyYWM0ZTBiMmRiYmI1IGxlZ2FjeS10cnVuaworNDIxMjEgNmUxMjcwNzM3MWExMzBlZWQ0MmRiMTIwMjAwZThlNmY2ZTYxMjg1ZCBsZWdhY3ktdHJ1bmsKKzQyMTIyIDE4YTJkNzVhM2M2OTY0NGY3MTNjMjU1OWJjM2U5OTU4N2Y1YjExYmUgcmVsZWFzZTI0LW1haW50Cis0MjEyMyAzYTkyZTU2NTQ3NDg1YWQ4OGRmZDZiOGRjYjFlNGFjNzVhOTA0YWEzIHJlbGVhc2UyNC1tYWludAorNDIxMjQgYmExNjA0NjRhOGM2YzE5Y2ExMzM5OGRjZmU2Y2U5Yzc4YjA1YzBmYyByZWxlYXNlMjQtbWFpbnQKKzQyMTI1IDA0YTk2Y2M4ODU4M2VjM2MyMWY5MGYzYWY0YzdkMWQzMGZiMzFlMTcgbGVnYWN5LXRydW5rCis0MjEyNiAyNDQ1NjMzODAyNmMwNGYyZDVkZjgyMDNhY2VkNTI0NTg5ZTlmMmQ3IHJlbGVhc2UyNC1tYWludAorNDIxMjcgMWU4ZjQ2NzNlNDQ3NDczYmFjNGM0ZTE0MWQ5ZjY2ODI2Y2Q2N2FiNCBsZWdhY3ktdHJ1bmsKKzQyMTI4IGIwNWM0Y2E4NTk0MzRkYjc2MWZmM2NmNTAxMGM5ZDdlZTg5NzJkMGUgcmVsZWFzZTI0LW1haW50Cis0MjEyOSA0NzQ2ZmFiMzQwMTI0NGZmYmY0YmY4Y2M2Y2JiMzc0ZmQ0NjA5NWFiIGxlZ2FjeS10cnVuaworNDIxMzAgYWMwMmY2NTViMzFlMzgwOGUyZmFhNzdiOWZlZGM1MmJkYWE3NzIxOCByZWxlYXNlMjQtbWFpbnQKKzQyMTMxIGNhNmM4MDBhZDVhMDJjMTE5YmIwYzNhMzlkZDcwYWVmNmNhMTNiNjUgbGVnYWN5LXRydW5rCis0MjEzMiA2ZmNiNTQwNTA3NGU3YTVlNTg0OWRiZjRhMGYzN2Y3ZTc2MzcyMzJiIGxlZ2FjeS10cnVuaworNDIxMzMgOTc4ODVhZGY3M2I1NDcxYWM3ZGEzYTQzMmYzZGY4MWQwMmNjZjdhYSBsZWdhY3ktdHJ1bmsKKzQyMTM0IDc4NzAyYTUwMjhhNDFmODVhYjgwZjRlYzcwYzFkNWY4MWE1MDJkNDAgbGVnYWN5LXRydW5rCis0MjEzNiA5ZjdjZTI4NDZjMzA5NTljNTQ1ZDkxMTQ2ZjgxNzQ5NTUzYTkzM2Q4IGxlZ2FjeS10cnVuaworNDIxMzcgNjFiOGUzZTNkNjQxODNhY2MyODA2NDRlYjY0OTkxYzY0YmQ0YjljNCBsZWdhY3ktdHJ1bmsKKzQyMTM4IDI4MDY1MDc5MmVmNzJiN2NlZThiOTM4OTgzYjFhZjA3NGFlMDNiODQgcmVsZWFzZTI0LW1haW50Cis0MjEzOSBmOTQ5OTFkNWRkMjA2OWNiZGFiZmY5ZDQ4NTlhZjA1ZGI0MzQ0NmZjIHJlbGVhc2UyNC1tYWludAorNDIxNDAgZmRmMWJlOWNmZWRmMmIzMDE5NjAzMmQ5MzMzZjlhNTc0ZjMzNjk3MyBsZWdhY3ktdHJ1bmsKKzQyMTQxIDAwZWUyMTcxNTM3Zjc1ZGU3YTcwOTU4ZmI3OTg1NDdlNGQ5NDUzNjYgcmVsZWFzZTI0LW1haW50Cis0MjE0MiBmMDE1NDNlMTVmODVhNDk5MWUzMjAxMWQxYTJiNWExM2U0MWMxNjVlIGxlZ2FjeS10cnVuaworNDIxNDMgNDMxNWM1M2Y1MWJjYTYwNDI5ZGE1NmRiM2U1YjMxNjM3ZDA2NGE0OSByZWxlYXNlMjQtbWFpbnQKKzQyMTQ0IDRkMmEwOWE2NDg1ZDNlOWM5OGNiOWExYTZmNjU5NzVmMTMxMjgyZDMgbGVnYWN5LXRydW5rCis0MjE0NSAzYjYzYmM5MDRkOTJlN2I1YjUyNTA0M2UwNjYxOTJkNzBkZDkwMDUwIHJlbGVhc2UyNC1tYWludAorNDIxNDYgNGYxMWIyM2UzNjFmNDU0ZDllOWE5ZWI3N2E5NGU0YTY2NDk4NDhmYiBsZWdhY3ktdHJ1bmsKKzQyMTQ3IDQ0NmNiNWZjM2QyODBiZjdmYzQ2ZjJkNmRhZDJjODEyNjAyOTg1YzggcmVsZWFzZTI0LW1haW50Cis0MjE0OSBhMTdiNzM4MjZmOTc4M2E4MDE2OGU1NDc4ZTdiMzRjNDQ1MGQ4N2YyIGxlZ2FjeS10cnVuaworNDIxNTAgYzgzYzAyMmEzNDkxZWIxNmZlMWFmZjVhNzhlNDFlY2U2OTczM2RjMCByZWxlYXNlMjQtbWFpbnQKKzQyMTUxIDgxNDBmMDAwZTlkNDU5ZWYzNGYzMjlkMzViNTlmMGNjMmMwY2VjMWEgbGVnYWN5LXRydW5rCis0MjE1MiA2MDRmZTg3YWQ0N2M3YzBjMTkyNGViMzlmOWRhYTdjYTg1ODJlMGU3IGxlZ2FjeS10cnVuaworNDIxNTMgOTlkNDkxZmFhNjVjMmI5ZGY3ZTE0ODgwOTcxYTZkMTEwNjUyYmNmMSBsZWdhY3ktdHJ1bmsKKzQyMTU0IDdiM2Q5MTViNmU5ZDAwMTIzZThmYzdlNWNmOGFkNDcyYTI2NGZiNmEgbGVnYWN5LXRydW5rCis0MjE1NSA0ZjkwYzdjMDUzNjRmNDI0YjYzZDYyZDRkMTJiMTNmY2QyNzE2ODJjIGxlZ2FjeS10cnVuaworNDIxNTggODM4YjVmNTkyNGVlMTcxNDE0NjdlOTE4ODE1YTNkNTNlMGRlMzgxMyBsZWdhY3ktdHJ1bmsKKzQyMTU5IDNiNGI0NDU0ZmU4NjY0YmM0YmVhZjE1Y2M4ZTFjMTk3M2U4MzA2M2IgbGVnYWN5LXRydW5rCis0MjE2MCA1ZWU0NmJiZWQxZjlmZTA0NjllMTZlMmRkNDQzZjRjZDY1ZTYxOTA4IGxlZ2FjeS10cnVuaworNDIxNjEgNWM0ODdjYjYzMjk1MDc4ZGIzZjMzOWVhZTNjNjcwZTZiNmQ4MjdhNiBsZWdhY3ktdHJ1bmsKKzQyMTYyIDdmMDU5NzRjOGI4MDMxN2YyODcwNjkyMThlMjAwMGUxMGE3YzUwYzkgbGVnYWN5LXRydW5rCis0MjE2MyAwMDA2YWUxMGI3ZjBjOTJjOTFhM2UwOTAyNzRjMmE4ZmE0MDI1MDM5IHJlbGVhc2UyNC1tYWludAorNDIxNjQgNzhiZDc4YTFjZTc0YjQ2MWYyNThiNTZiNTU0YjVmYmZlMDdjYjcxNiBsZWdhY3ktdHJ1bmsKKzQyMTY1IDIwMTJjNTQ4Y2U2OThjYmY0MGJiOWU0NWM2YTgzODEwYWQwYTcxOWMgcmVsZWFzZTI0LW1haW50Cis0MjE2NiAzMTE0ZWIwNjBkMGFlZDJlYTc4NjVlMmYzYjQyZDE4ZWE5OThmZTYzIGxlZ2FjeS10cnVuaworNDIxNjcgNzRhNTk4OTY0Yzk2MjhkMGE0N2Y5Y2RkZTRhOGU0NDJiNjUyYTgxNiBsZWdhY3ktdHJ1bmsKKzQyMTY4IGEyOWNjMjNiYjg5YzRjNWY3N2JlZTIwYzMwOTRiOTg3NTZlY2UzOGYgcmVsZWFzZTI0LW1haW50Cis0MjE2OSAwMzcyZTI1ZTQzMGVjYzU3MmYyZjhhOTJmNjllODFiODVhNDIyODVjIGxlZ2FjeS10cnVuaworNDIxNzAgYTUwZjU2MzVhNDk0OWM5NTZmZTdjZmIwYWIxMmY3ODZiNDJjMDIzYSByZWxlYXNlMjQtbWFpbnQKKzQyMTcxIGQ2OGY3M2Y5NmYzMWY3MmUzNDQzOWM1ZmJmNGY4Yjk1OTc2ZmZkNDYgbGVnYWN5LXRydW5rCis0MjE3MiA2YWI4MmM0NzA2MzM4ZjFlNDY1YjJiNWExYmI5ODBmMmZiNTQ1NDY0IGxlZ2FjeS10cnVuaworNDIxNzMgMDU1ZmNkYzY1MmRkNDM1NmNmYThjNDg1MGZjNzZiMGM0ZDAyOTJlMyBsZWdhY3ktdHJ1bmsKKzQyMTc0IDFiOWViOTYzMmM4OWI4YTA5NGIzMWJhMDcxOWRhYjRjYzQyMDdmMTIgbGVnYWN5LXRydW5rCis0MjE3NSBiZmIyNDdkN2JjM2Y3MjUyZjMzOTkxODkxZjQzZDRjODY1Yzk5NzlhIGxlZ2FjeS10cnVuaworNDIxNzYgZDU3MzRkYzA3ZDRhYmQ5OTVlMWU5NWRmYmM0NTFhNzBhZDZmNDA1NyBsZWdhY3ktdHJ1bmsKKzQyMTc3IDUxMjM0NTM2OTBlNTFhMTg4ODZmZWExZWQ1MTQ0ODMzZWQzYWQ3YjQgbGVnYWN5LXRydW5rCis0MjE3OCBkNjJkYTM2YWFlMTU1MTI1YWNmYWMzYWM5NWE5ZDc3N2ZmNjJlYWY5IHJlbGVhc2UyNC1tYWludAorNDIxNzkgZTdmMTllZDFlYTJkYzBjYTFiYzIwMDA5ZDQzZmM3ZDdjYjJiYzEzOCBsZWdhY3ktdHJ1bmsKKzQyMTgwIGMwMWQyMjcyZTZjM2E2ZmI0OTc0ZjhlNWUyZTQ4YjRiZjgzYjBiNzAgcmVsZWFzZTI0LW1haW50Cis0MjE4MSAzZGY2MzQ2MWIxMTZkMzc5ZDdlZTg2MzdjMGMzNzI3M2UxMjIxMzk2IGxlZ2FjeS10cnVuaworNDIxODIgZTAyODlmYmE2ZmYxZWE5MzkxYjZjYTM3NGZiNjAwY2ZkNDYzOWI0ZCByZWxlYXNlMjQtbWFpbnQKKzQyMTgzIDA0MGQ3ZmI0ZWI1Njg0N2FkZGUxMGQ4YmYzYjZhM2JhNjZkOWQzNmIgcmVsZWFzZTI0LW1haW50Cis0MjE4NCBlOTc4MThiYzI5MTk0NGFmNmQwOWUxZDY3YjJiMDRkN2I3YjhiM2M1IHJlbGVhc2UyNC1tYWludAorNDIxODUgMTM1OTYwNWYzNzEzZmI1OTIzOWVmZmMwZmEyNTM3YjFkMTkyNzU3MyBsZWdhY3ktdHJ1bmsKKzQyMTg3IGFmNjg0ZDczZjNhNjczZGY5NzMxYTczMTBlYjA2ZmVjYThjODlhY2EgcmVsZWFzZTI0LW1haW50Cis0MjE4OCBjM2I2NzI4ZDg4NmI4NzdjYmQ0MWZhNDBkYzJmZTY4ZjJmNmEzNDI4IHJlbGVhc2UyNC1tYWludAorNDIxODkgY2RlNmVhMDkxYWFhZmNlNDVlMzE1MmI5NGM5YmE1M2FlYTUyOGQ5NiBsZWdhY3ktdHJ1bmsKKzQyMTkyIDA2MDI4ODdkYWRmNWY1NzQxZjM1NTQ3NmQ2YjAxODE5MDFkNTY2ZGUgbGVnYWN5LXRydW5rCis0MjE5MyBmMGFkYTZmMGY2Nzg5OTI5M2E5YzQyMTk3NDExMjRlNDA5MmExMWM3IGxlZ2FjeS10cnVuaworNDIxOTQgYTYyNWU4ODc2NDA3MDM4MThlMjNmMzAzNjBmZTU0NjdlM2I4MzA3MyBsZWdhY3ktdHJ1bmsKKzQyMTk3IDk1MGUzZTM4NDNiYmYwMDQ3N2MzMWUyZTQ0OTZiMGY2MDJiZGY1M2IgbGVnYWN5LXRydW5rCis0MjE5OCAwMDA0YTlkMDRkMDM2NjU3MTQ2YTJlMjFmNGY1YWIzOGQ2OTQ0MWUxIHJlbGVhc2UyNC1tYWludAorNDIxOTkgMjI4OTk1MDIxMTdmZTY4OTFmNjkyMWM3YWMxMDkwOTg4NjFhYTQyMiBsZWdhY3ktdHJ1bmsKKzQyMjAwIGZjMTJjY2E3M2MzNWQwYmNkMTZmYmQ4MGM5NGM3MWI0MWQ3YjY4YWQgbGVnYWN5LXRydW5rCis0MjIwMSAyOWJmYmI1ODhkOTNmODg3NzE3YWI2MWUxMTNlMTBmZWU3MjNkMDRiIGxlZ2FjeS10cnVuaworNDIyMDIgMjNmZTQ3ZTkzMzdkOGY5YzY4NDEyYTFhNjVmNGY1MmQzYjI3MDlmMiBsZWdhY3ktdHJ1bmsKKzQyMjAzIGJmYTIyNzI2N2Y0ODE0ZTgyZTlmYmFjZWE5YTMyMWU2YTExYWZjOTQgbGVnYWN5LXRydW5rCis0MjIwNCAwZjJkODIwMDNhMGZiNzRkNGQyYWU0OWI3MWIzNTdiZWYyOTk1N2U4IGxlZ2FjeS10cnVuaworNDIyMDUgMjgwZDYwMTljZjQyNmMwYTAzNjYxMjhjZGE3NmIzNGE4NzEyOWJmNSBsZWdhY3ktdHJ1bmsKKzQyMjA2IDM4YTk0ZTU4YTY5NTZjNmFhOTcwOGM4ZWY3ZTI4M2MwNTMxMTUwNzYgbGVnYWN5LXRydW5rCis0MjIxMiAxNmJmZTkzODYwNjhjZmJlMThhMzVlZTljMjk5MmU2MWNlYjliNmY4IGxlZ2FjeS10cnVuaworNDIyMjEgODE5NDJmYzlhMjBkMTY2OWU4NzI2OWZhNmE2YmYyNjgxOTRkZjk1NCBsZWdhY3ktdHJ1bmsKKzQyMjI2IGQ2ODBmYTUyNTUxMjI2YzQwZjI1NGM5YjRmNmIxMjg4Zjc1MWM2MDAgbGVnYWN5LXRydW5rCis0MjIyNyA2YThkNWUwNTRlOTcxZDNkYjRkZjBhOWNjYzJmOWRiYTljOWQ3NDczIHJlbGVhc2UyMy1tYWludAorNDIyMjggZjIzNjYxMDhiY2IyODFjNmQ2Y2Y2YjllYjM0M2Y5M2Y3MzNjM2ZjMCBsZWdhY3ktdHJ1bmsKKzQyMjI5IGJkNDRjN2MwOTc3ZjU3NjcyOTE2NWY3YTU0MGYxMDRlMjFkYmQ3MTIgcmVsZWFzZTI0LW1haW50Cis0MjIzMCAyNmUwZjY4ZGU4NmU2YmFiMTAwMDhhMzMzNGU1ZmY2ZGIxN2M4OGU4IGxlZ2FjeS10cnVuaworNDIyMzIgNjU1ZmEyMjYwNjc5ODQ2M2YzZmYxNTNhMGFkOWM3Yzc5NzEzZDg4MCBsZWdhY3ktdHJ1bmsKKzQyMjMzIGU2NjIyODU4MGVhMjY0ODQ4YThjZmEzNDQ3ZDM2OGUwMmI0MjI3OWIgcmVsZWFzZTI0LW1haW50Cis0MjIzNSA5NGQyN2UwMTgzM2RhNDc5YmRmOGVmNThiNmUyMTdkMTdlM2JjOWQ0IGxlZ2FjeS10cnVuaworNDIyMzYgY2IwZGJhZTcyYThlNzYxYjE5ODk0YzkyOWIxNzE4MGM4ZjY4YjFkMiByZWxlYXNlMjQtbWFpbnQKKzQyMjM3IDVlMmFjZjc0NDFiZDY5YmNmY2RlNWJiMWU0YjM3MjA1N2IwMWI2NmEgbGVnYWN5LXRydW5rCis0MjIzOCBkYzMyNDYzMDE1ZjFiY2Q4NDI2ZWEwYTMyYjQ1OGFkZTViZDA3YzA2IGxlZ2FjeS10cnVuaworNDIyMzkgOGUyM2E3Y2NmNjE1ZDE5NGJjNGNiMzNiNjBhM2QzMjZkZDk3YjBiZCByZWxlYXNlMjQtbWFpbnQKKzQyMjQwIDlhNGZmNmQ2ZTcyNDY0MTNjODdhMWU1ZWJiMTc5YmVhY2E2MjY2MzAgcmVsZWFzZTIzLW1haW50Cis0MjI0MSBhMDdmYjJlZjUyYWU3NTk5YzZhZjQzYzg2MjU5YmY2MTcxMjZlYmFkIGFzdC1vYmplY3RzCis0MjI0MiBkMWVmMjNhMTY3NjBjMjMxMzRiODlkNTZhMTNkNGE0MjZkODU0Y2FkIGxlZ2FjeS10cnVuaworNDIyNDMgYTMwNDZkNDNlYjUyZjJmMWNhZmM4Yjk5ZTU2YjQ4YzZlNDU1Y2UzYiBsZWdhY3ktdHJ1bmsKKzQyMjQ0IDAyZjA3NDRhOWNkMDJkZDgwMTM2ODA0NTI4NmM1YWYzMmJiN2Y5MDMgbGVnYWN5LXRydW5rCis0MjI0NSAzZWRiMWJjZDQzNGQ0ZGExYjljYjM5Y2IyZjFmYTdmMjI1YmYyMDU5IHJlbGVhc2UyNC1tYWludAorNDIyNDYgMzg4YTU4M2U3YTYzNDRkNWUwZGU1YTA5ZTIzYzNjNmNlYTQyYjkxOSBsZWdhY3ktdHJ1bmsKKzQyMjUwIDRlZDMwZWFhMDI1NjEyNWE0MjEwYzBiMjUzYTBiNTJjMWEzYzJkODkgbGVnYWN5LXRydW5rCis0MjI1MSBjMTkzMjgzZTYzYmNiNzYxMjUzYWQ5YTg4MzVhZTIxZmU3NDc1NmVkIGxlZ2FjeS10cnVuaworNDIyNTIgODQwNGM5ZWZkYzM1ZWJmZjcwMTVkNTUyZTY4YzdlZWVmNzdjNWQ0MSBsZWdhY3ktdHJ1bmsKKzQyMjUzIDc3ODljYzU1N2UxZWZhNTRjMDhlYTlkMzZhMzBiZDE2OGI0ODUxNjMgbGVnYWN5LXRydW5rCis0MjI1NCBhZjY3YjYyNjVhZjZhZTBiZGZkNWFlZmMzNjlkNmVhZTgyNTE5NDU5IHJlbGVhc2UyNC1tYWludAorNDIyNTUgMDAyZjliOGZlYzIxZTcwYjZlZmQ1MDEwYTVjOWQyZjQ4ODk2OTI1YiBsZWdhY3ktdHJ1bmsKKzQyMjU3IDBhMmE0ZjE0MTEwYjk0YTg0MWRjZWRjMWEwYWE5ZGY0ZmYwYWUzYjcgbGVnYWN5LXRydW5rCis0MjI1OCA1MWY3NjAyODgxMDQ1MjlhYTdkMDQ1Zjg1ZjY5NWRlY2QzNWIxZmQxIGxlZ2FjeS10cnVuaworNDIyNjEgZjM4YjYzNTI2M2QzYTFmZmY2YWVkNGQ3MDQxZDc5N2IxYTgxNjRiNSBsZWdhY3ktdHJ1bmsKKzQyMjY4IGNkNDQ1OWQwOGVlMjM2OGU2Y2U4ZDBlMmI3NmJiMjAyNjAyOTRkM2YgbGVnYWN5LXRydW5rCis0MjI2OSAzYWJmMzMyNjQxNDYzMzYxZDhmOWI4ZWYwYTJjYzVhOWFjNzFmMmQ3IGxlZ2FjeS10cnVuaworNDIyNzAgZWE1NGVhZjkyMDE2MDMxODg1ZGJjZmI1N2ExZWExYzEyZTMzZWM5ZSByZWxlYXNlMjMtbWFpbnQKKzQyMjcxIGQ1OTYxOWEzNzFjMjE3OWMzMjBmZTdkNmQ2MDU1N2JhYmRhYzJiNDYgbGVnYWN5LXRydW5rCis0MjI3MiBmZGFjZjcyZDQ5NzYzMDJjOTJiNDU1MTlkYTQ1OTQ1NmJhMDIzYzk3IHJlbGVhc2UyNC1tYWludAorNDIyNzMgNTUyNDY0ZDgxZTFiMjE2OTYxZWEyYTc2YWVlNTgxNWI5MmE1YmQ0YyBsZWdhY3ktdHJ1bmsKKzQyMjc5IDg0MTZmYjMyMDQwMzkxOWE2ZGQwNjZmMDI4NmQ5NWJlOGMyYWI1ZGYgcmVsZWFzZTIzLW1haW50Cis0MjI4MCAzOTdmNjM5ZjdlNmI4YWZkMGI4MzIwNmEwYzhmZDlkMTgwMzYzMWJiIHJlbGVhc2UyNC1tYWludAorNDIyODQgNGMyZDZlYjhkNWU5YzNjNjI3ZWFhOGY5YmU1YWYzOTQ3NGM2NmNkNSBsZWdhY3ktdHJ1bmsKKzQyMjkwIDg5ZjFkYTEzNDJjYTQ3ZGY4YWJiZGEzMDA5NDczNTVkYTE5ZjdlZWQgbGVnYWN5LXRydW5rCis0MjI5MSAzY2Y4YTllZDQ0NmIzZTRiMTA1OTExNTk0ZDEzMTI1YjI1ZmYzZmMyIGxlZ2FjeS10cnVuaworNDIyOTIgOTNlZmE1OWIzMjk3Y2ZmYWM3ZjkwNmVlOWE5MzkxMzc3ZWM1MGQxNSBsZWdhY3ktdHJ1bmsKKzQyMjkzIDA1ZTMxNGVlMjZmNzcwODg1ZGQ3Nzk2NjczODY5ZTY2OTAzZjkwNjggbGVnYWN5LXRydW5rCis0MjMwMyAxNjUzODliMTRkNmJhNzE5YmNjMTUxOWZlNDE3NGY1MGY1MDNjNGQ2IGxlZ2FjeS10cnVuaworNDIzMDQgODFmNDRkMTJiZWY3YTE4ZTM4ZjY2ZTU5MTRkMDMzNWY4Y2I5MzdhYSBsZWdhY3ktdHJ1bmsKKzQyMzA3IDdiMTlhNTMzY2U5YmFkOTVkZjg1N2IzY2E0YWRkOGFjZTc5YzBkYmYgbGVnYWN5LXRydW5rCis0MjMxMSAwYzVhZTg5MjQxMDRlZTY0MTdkYjBkNDVjMDViNzUxOGZkYWU4YmY4IGxlZ2FjeS10cnVuaworNDIzMTMgMWMzYjE1ZGY2N2EyOTM5ZmYzMDFkYjhkZjBjN2U2YWExNzY3M2Q0MiBsZWdhY3ktdHJ1bmsKKzQyMzE0IGMwNzNkZmZiZTcwZWM5NWMyM2JiNDBlNDBlMDhiMGE5OTljNDNhM2MgbGVnYWN5LXRydW5rCis0MjMxOCBkMjE4NzVkMzU5MmI2NDk3NGIyNmIwYTAwMWVjMTQzZjRjN2UzMWM4IGxlZ2FjeS10cnVuaworNDIzMTkgZTJkNDYwOGY1YzFkNmQwZjhmNDU1ZWY4NDdhOGVlMGE3NzkyNTk5OSByZWxlYXNlMjQtbWFpbnQKKzQyMzIwIGQ0OTZjMDc2NGFkNjE0YTdlNThkYTk4M2I3N2M0ZmRjMWVjODZlZmQgbGVnYWN5LXRydW5rCis0MjMyMSBhZTFkYTUxMjQzODI0YThkN2NhMzdlYzcwMjc3M2ZmYTc4ZmRiM2E1IHJlbGVhc2UyNC1tYWludAorNDIzMjIgNmM2YjQyOWE3MDMwYzY1MDA5ZDhmZGYxOGY3Y2U2MWU5ZGUwMTRjYSByZWxlYXNlMjQtbWFpbnQKKzQyMzIzIDUxMjk3ODMxYjVmODkwOWVlMzY0ZjRiODJhOTdjYTFmYjYyNWI0NmEgbGVnYWN5LXRydW5rCis0MjMyNSBiNDhhMDQ3MjljYzQ5OGIwYmQzZThkYTMzZjg2YWQ1MzhlZTMxOGFiIGxlZ2FjeS10cnVuaworNDIzMjYgMjBmNzVkNWU3OWU5NTNiZTQ2ZmExNWYyYmJjYTQyMDlhNjEyNDZlOCBsZWdhY3ktdHJ1bmsKKzQyMzI4IGMwMDcwZDc2YzBkYjNlMDU1MzFlMmE5Nzk2MmY2YzA3ZDMyYTRhYzIgc3NpemVfdAorNDIzMzAgMzZlYWUzZmMzNzNkNTAxMDUyYWQ0ZjJmMWNhYzA5M2EyZDk5Mzg3MyBzc2l6ZV90Cis0MjMzMiA3MTUzMDkyMWNlOTNiM2UzN2U1YmQ0YmE5OWRkODZhNzI1N2E5ZTk3IHNzaXplX3QKKzQyMzM0IDJhMzIzMWZlNzJlMjk4YWQ5Zjk5MTNmZDk3Y2RjZmJhN2VmNTgzMmIgc3NpemVfdAorNDIzMzUgOTlkZmRjYzZkNjEzZGRlNDRiODlhODE0NmMzOWU2MmNkMDc5MTYyMCBsZWdhY3ktdHJ1bmsKKzQyMzM4IGM0NmRlMWU1YjlhMDMyMDE4MDg1Y2FkNmY0NmQ1YzAxZmU3NGJkMDEgc3NpemVfdAorNDIzMzkgNjVhZTczMGI2MjMxNDNhOWI1Y2UyYTFiZjE1MzkyYzc3YmU5YzhjYiByZWxlYXNlMjQtbWFpbnQKKzQyMzQyIDA3YmE4YWFlM2RjNjcxYTg2MTkwMTkyMGJhMmQ0ZWVlZWM0NmU3OGIgbGVnYWN5LXRydW5rCis0MjM0MyBhMmI2ZGRhYjY2ZDc4YTBiODk5ZmI4Nzk0ODdkY2I3Zjg2MTI1OThkIHJlbGVhc2UyNC1tYWludAorNDIzNDQgZTQ3MWYxZGYyZDAzMWYxMDY2ODgyOTk4OGFmMThhNTJkNDJjMTA3NCBsZWdhY3ktdHJ1bmsKKzQyMzU0IDc0YjI1MzNiNTliOGJlYjQ3ZGFiMjc1NTRjYTdjMTJjNGQ2ZmUzZTQgbGVnYWN5LXRydW5rCis0MjM1NSBjN2FiNDE3YzU5YmM4YjAzZDg2Njk1YjRjMmI4ODdlNzUxYTAzMTFlIHJlbGVhc2UyNC1tYWludAorNDIzNTYgYWNkNzAyZTMwNmZiNDE0YjlkYWU4YjYwMTJiYTZlMjc2ZjY5NWQ1NCBsZWdhY3ktdHJ1bmsKKzQyMzU3IDU3NGMyNWZlNjAyODQ1MjBlZDI1M2UzMzRjMjc1OWY4OWNlMjNjOTkgbGVnYWN5LXRydW5rCis0MjM2MiAzNDQ3NTQ0OTdjYjNmNTg4ZTY1ODc1ODEyNDU2ZGIwYTE5MDVkZjdiIGxlZ2FjeS10cnVuaworNDIzNjUgMjIwNDk3ZTA4OWNlOGRlYjViMGM5NjM3ZjExMzFlNDA3YzM3MzRlZSBsZWdhY3ktdHJ1bmsKKzQyMzY4IGRiMmZjYTllYTI2NDA2MjgxODZlMzYxZDBhNTUzMjhlYTM3NjMzMGEgbGVnYWN5LXRydW5rCis0MjM3MSBjMGMzNmJiZDVlMGMxOTQzNzY4YjBiMzk5M2I2YzUxOTRhY2RlMjE5IHJlbGVhc2UyNC1tYWludAorNDIzNzIgMTdlYzE3ZGQyYWIzZDdmYzQ2NjQxMjRmYjQ3MThkMzNlYjBlZmNiZiBhc3Qtb2JqZWN0cworNDIzNzYgOTY2ODVmMTEyNzA5NDQ0NDUyZDQxMDQ0MzdmNmZkNjhkNzRjZTFiYyBsZWdhY3ktdHJ1bmsKKzQyMzc3IDM1ZGU4YmNjZmQwZWQ3MjhiOTliYzQxYWNmYjVlMjIyOWU1MDgzNDYgbGVnYWN5LXRydW5rCis0MjM3OCA5OGY3Yjc0M2Q5MWIwMzViZWYyNWE0OTY2ZDkxMzA0NWRlNWQyZjQxIHJlbGVhc2UyNC1tYWludAorNDIzNzkgYzAzNGNkZDc5NjBjZWM2MTQ0ZWEyYmY2NWE0NGRlZjBmODE5ODliZSBhc3Qtb2JqZWN0cworNDIzODAgMzYyNWM4YjE0M2Q5Y2NjZDU5MjhjZjkwY2ZlMWJjYWE3MGFmOGZiOSBzc2l6ZV90Cis0MjM4MiA3ZmRjNjM5YmM1YjRkM2MwOTJjYjNmZDdkODdmNzNkYjNkNDdiYTI3IGxlZ2FjeS10cnVuaworNDIzODQgYjhlNzNjMmQxZjE3YjI3NTBjNjUzNzFmMjc3MjU5OWQ4MzUxN2NhNiBsZWdhY3ktdHJ1bmsKKzQyMzg1IDc5OThkODU2NDljOWUwMDBiMzdiYzBkMWYwMTZkZjQ2NjNjNzY4ZmUgbGVnYWN5LXRydW5rCis0MjM4OCBkYTkzZjlmMmQ2ZThhODFmZGRiZDUzYTBhOTUxNjZmZTlkM2E3OWI2IGxlZ2FjeS10cnVuaworNDIzODkgNTgyNWM2YWNlMjhiNjBlYjU3YTVkNTQyNTU5M2NlZjNiZTFjMDYyYSBsZWdhY3ktdHJ1bmsKKzQyMzkwIDc3NWRlZmJhNGVlNzRiNTYxYmY0MzhkZmQ3MWU0MmJjMzQxOGNkZjcgbGVnYWN5LXRydW5rCis0MjM5NCA3NjdhZGMwOTg0MTYxYmY2MzMwNTI0MzYwYWIzMDdjNmI1MjUxNzllIGxlZ2FjeS10cnVuaworNDIzOTUgNzMyMmRjY2JhMjI0MjhhNDJhYzg5OWQ1MGVkOTRlOGQ5NWYyNDE2MiBsZWdhY3ktdHJ1bmsKKzQyNDAwIDEzZTk4ZTM2OWFiZDlmODZhZWM3NGJiMzRjMzNjMTVjODc4YTczNmIgbGVnYWN5LXRydW5rCis0MjQwMSAwZjM4OTRiYjJhZGFhYzhhOWE1YTU2ZGMxMDRjYTAxZGU2OWZjM2RkIGxlZ2FjeS10cnVuaworNDI0MDMgMTU5NmZmNWM3OWI1MDJlMWIzYzRjOGYyYzM4NTI4YjVlYTJiYmFjMyBsZWdhY3ktdHJ1bmsKKzQyNDA0IDMzNTBmODVjODg5ZmQ4MGJkM2ZiZWJhNzhmOTUxMmQwMmQxYzYyZTcgcmVsZWFzZTI0LW1haW50Cis0MjQwNSA0NDVjMGFhODExY2E3MGRkOWQ3YjgwNzgyNmM0NmExYzYyNTRjM2Q2IGxlZ2FjeS10cnVuaworNDI0MDYgOTE0ZjViMGRhNTRlZTFmNDAyMzEzZTU5MTEzNDE1ODQ5MTQwNDhiMiBsZWdhY3ktdHJ1bmsKKzQyNDA3IDdjOWNmZDNiNWQwZmE2ZjFkNDRlNWNmMzRjMWM4NTlmZmI5ZWVhNGMgbGVnYWN5LXRydW5rCis0MjQwOSA3ZGMxZmU3NzcxM2YyZDIwY2M5NDE1NWZiOTE5ZjhmMDJhYzEwYTcwIGxlZ2FjeS10cnVuaworNDI0MTAgOTEzMzFhODg3MThlMDJiZTIxMWI0OTczNDEyZmNlOGZiNjhlNzZiNyBsZWdhY3ktdHJ1bmsKKzQyNDExIDlmM2Y4N2U5MjBhNmQxZTE5NTU3NzE5MWExYjUxOWM5YjFkNjk1ZTYgbGVnYWN5LXRydW5rCis0MjQxMiBkNmQ0MTVkZjBkZjBhYWMyYTFjYTdmMzFiNDk1OGY5NjQzZTAxODcxIGxlZ2FjeS10cnVuaworNDI0MTMgMjY0NzBjZGVlYTNkNmZiZWNhMGMzMzdkZDVlN2NmMTQ4YzU3MzI5OSBsZWdhY3ktdHJ1bmsKKzQyNDE0IDMwYWVmM2NlMmIyNmMwOTE5Y2FmN2NmNmJiYWZhZmFkYmE1OTQ0ZDQgbGVnYWN5LXRydW5rCis0MjQxNSAyNzkxNjc2YjM4MjU5MDA3NjMwZDk3N2IxNDQ2YTk0NjJiZjM2MDU3IGxlZ2FjeS10cnVuaworNDI0MTYgNjcyYzMwYmY5NWU2OWE3ZGUxOGMxZDc3YmM1YmYzZDU3OTI2NmQxZCBsZWdhY3ktdHJ1bmsKKzQyNDE3IDRjODYwNjE5MWMwY2YzMjJlOWU3ODUxNzg0MDA5ZDdmMmUyZDcyMjAgbGVnYWN5LXRydW5rCis0MjQxOCAyMjk3YjI3MGZjZjY4ZDk2MGZmMjFjYTA1NDk2ZTQzMDAxNzIyNGQ4IGxlZ2FjeS10cnVuaworNDI0MTkgMDBmOWM2ZTE1MGJhMjU4N2M2OGYzMmYxY2U4NTY3NzFkN2VmYjhmYyBsZWdhY3ktdHJ1bmsKKzQyNDIwIDlkZjYxYjk2YWE0MjY0YmQ5NDI1OTkzYWMyYjhlNzhhMzYwZTE5YTcgbGVnYWN5LXRydW5rCis0MjQyMSA3NmNlODgwZGNlNDllMTExM2RlNmUzMGY1MjY2NzcxYjk3Y2RmODRiIGxlZ2FjeS10cnVuaworNDI0MjIgNDQyYzBmYjNjNGVkMTExOGQ4YjFkMmI1ZjBkZGNjZWJhZjU3ZTBkYSBsZWdhY3ktdHJ1bmsKKzQyNDIzIDkyYWZmOTc0MTdjNDZhMWFhYTA2ZDYzMDkyZDFmM2IzNmM2Y2M3MDIgbGVnYWN5LXRydW5rCis0MjQyNCA3MWU2ZjZiNDE1YTRjMjYzMjk0ZDJjMjQwN2RmODZmYzQ5YThkZjM4IGxlZ2FjeS10cnVuaworNDI0MjUgMGMwOTZiZTI3MDAwM2RhY2FhM2U1YzY4NjE3YTA0MjUxZTkzYjY3NSBsZWdhY3ktdHJ1bmsKKzQyNDI2IGVkMDdjMWE1ZTI0YzYyNzYzOWEyZTEwMWVjNzc4NGI4OTk1ZjRkNjggbGVnYWN5LXRydW5rCis0MjQyNyA4NjI0OTNjZWFlNGIzMjM3OGQzYTMwYzUyNjBhZTNmNTZmZGNjMDA1IGxlZ2FjeS10cnVuaworNDI0MjggMjZjYWMzNzFkN2I2ZWY5YWZiOTFkNmFhNTgxY2IyZTY3NWJiNmRmNSBsZWdhY3ktdHJ1bmsKKzQyNDI5IGMwNmVlMGM5MTIwOTU3YTc3MjYxYmFmOTc3Yzc4YjMyYTQ1OGYzNTQgbGVnYWN5LXRydW5rCis0MjQzMCBmZGFiZGYxNDgzMzYyMDVlZTU2MmVkNDBhNWFiOWQ5MzZhMDE0OWRjIGxlZ2FjeS10cnVuaworNDI0MzEgMzE2OTM4YjRmOGQwMDI4M2M5YmExYmMzNjI2NTM2ZjJlNGY2MGJkNiBsZWdhY3ktdHJ1bmsKKzQyNDMyIDBkNDg5MTI4NDQxYWY2Yjk3NmM4MzljZTQxOGEyODllNWViZjcxOWUgbGVnYWN5LXRydW5rCis0MjQzMyA3ZGIzY2I5ZTgzOWZhZTM1YWQyODcyY2MwNjc4NWUzZTdkN2FiYjQ1IGxlZ2FjeS10cnVuaworNDI0MzQgZjdmMGQyYTViMjBiODI1ZjI3MGY2YWRiZDBlOGViYjM2ODc0ZmMwYiBsZWdhY3ktdHJ1bmsKKzQyNDM1IDk3YzgxZGMwM2RkZGJlNzYzZjhjYjAxZTJhYjI4NzFmNzAwYzc2N2MgYXN0LW9iamVjdHMKKzQyNDM2IDA1NmU1YjQ2MDZkYTQzMzFhN2Q3Zjk2ZTliYTJlOWJiMzYyYjFjOGIgcmVsZWFzZTI0LW1haW50Cis0MjQzNyAzNjMyNWNhZWZmOWM2NWIxNGIxYzU0NjhlNjBkMGI5ZDZlODA0ZGUxIGxlZ2FjeS10cnVuaworNDI0MzggMjNlMjNlMTVlN2U3YzE0MDFiZGExNzIyNjg1MGEyYzlmNDY0NDc5ZSBsZWdhY3ktdHJ1bmsKKzQyNDM5IDEyMzJlODdjYjgxNjA3OTk0YzM4OGRkYWRlZDZmZTYxMjAyNGU0ZDEgbGVnYWN5LXRydW5rCis0MjQ0MCA1YmQwMmRhMDM3YmZjM2NmNjNiMTYyZGYyOTljYTZkYTkyZGMzZjg5IHJlbGVhc2UyNC1tYWludAorNDI0NDEgYzkxODc5MTJiNTllOTkxN2YzNDBkMjFkN2IzMGQwMDI0MzY1MTM3NyBsZWdhY3ktdHJ1bmsKKzQyNDQyIDY5M2RhODY3ODk0NmI2NTYzMTkzMTk3YzI3YTI1YjBjMmVjMzExMDMgbGVnYWN5LXRydW5rCis0MjQ0MyBhZDNjNGIyYzE3MzAwOTQyY2I1ZmRiOTAzOGZhZmRjZWJjYzQyODBiIHJlbGVhc2UyNC1tYWludAorNDI0NDQgYmNlM2YzNTZjZDdiOWQxYjIzOGIzZjZlNWYzMzNhNTYwNmFhZmFlZiBsZWdhY3ktdHJ1bmsKKzQyNDQ1IGE5ZjlkYjlmYTk3NGFjODI0NjhlNzMzMGVlODQ4OTc5NDJhZDAyNTUgbGVnYWN5LXRydW5rCis0MjQ0NiBjNTY1MGRiZjkzNmVjMGMxMTYxYzIyMzJmNDE5MWFlNjA0ODU2NDcxIGxlZ2FjeS10cnVuaworNDI0NDcgNWIzOTYxNDgxN2EzZTljMzUzMjYzNTRjNDAxOGE5OTY1MmQ1ZjEyMSByZWxlYXNlMjQtbWFpbnQKKzQyNDQ4IGJjNDdmMWE2YWNiOTllNWJhNTY1NzBhNGFmYjZjMzQ1NWMwMzY1MmQgbGVnYWN5LXRydW5rCis0MjQ1MCA0NjY4ZGY0NTA2NzJjMmVmYjk5MzA1YzJjOWU0MDQ4ZmQ0ZTZkMDEyIGxlZ2FjeS10cnVuaworNDI0NTEgMTU3NmY5YmViNTAzYmM0OGVjZGE5YTIwZWNlYzEzZWE5YjBlNzM1MCBsZWdhY3ktdHJ1bmsKKzQyNDUzIDc4N2ZlYmFlMzBkYmYzYzZhM2U0ODRjMjllZmRiMmI3YTdmZDAxNDcgbGVnYWN5LXRydW5rCis0MjQ1NCBkMzY4NWY5YjdiNzFiOTc1N2FlOTA3ZWNiOWRhZDc5NjdhYjZhYTkwIGxlZ2FjeS10cnVuaworNDI0NTUgMDkyMzAzNTdmOTI3OTExODc3OGUxNDQwNmQyYjFkOTk3YWFmODYyNCBsZWdhY3ktdHJ1bmsKKzQyNDU2IDlhODM5NmY0NjBhZmZjYmRiOTIwOTVjNjI1ODdmZjk3YzMwNjk2MTAgbGVnYWN5LXRydW5rCis0MjQ1NyA2YmY3OGQyYjUzYjQzNWZjZWZmZGI2MTFlNDU1Mjc2ZjkzODNiY2NkIGxlZ2FjeS10cnVuaworNDI0NTggYTEyMzI2MDIyNjJjYmZhZDE1NWQ5MmM3ZWI2MzIyZGQ3NDFhOTFiZCBsZWdhY3ktdHJ1bmsKKzQyNDU5IGI5MzgxYTU2MjNlMmJlNzZjYTFiNmEwZDYxMjZkMTlhZDZlNjc4NGQgbGVnYWN5LXRydW5rCis0MjQ2MCA4ZGU1ODI0NmZlZjhlMGM0ZjE5YjBlNDhkZDg2ZTBmMjhmYTA5N2M4IGxlZ2FjeS10cnVuaworNDI0NjEgOTQxNzg2ZTYzYWM4ZTZhNWM3NWFmM2I1NmQ4NjA2MjBkZmIwZTNkNyBsZWdhY3ktdHJ1bmsKKzQyNDYyIDBlZjdjZjUyMjJiMDhhZDdjMThjMWI2NDk2ZmI4ZWI2YzZjZmY2ZWIgbGVnYWN5LXRydW5rCis0MjQ2NCA5ZDI5ZGFlY2I5ZmFhZThhZjRiNGFmZTIyNDhiODJlYzZkYjZiMzlkIGxlZ2FjeS10cnVuaworNDI0NjUgNWNlMzJhNWJkMjQwYTc0OTJjMDY3YjhlYzU1OGM5Mjk1ZTE4NmRiNCByZWxlYXNlMjQtbWFpbnQKKzQyNDY2IDIzODZjMTA1YTg5NDM2NDEzMmM2YTZiODNhNGU0YjA2NjIyYTJmNWYgbGVnYWN5LXRydW5rCis0MjQ2NyAzZTFkOGQzYjRiNmVkODkzMjIyMGU1NTM1OTZhYzk5YjNlMjFkMDA5IHJlbGVhc2UyNC1tYWludAorNDI0NjggMTg0NTg3MTFlYmVkODZjNWJjMjQ4ZTQwZTY4ZTMzMzU3ZDI5MmNkZSBsZWdhY3ktdHJ1bmsKKzQyNDY5IDhiNGNiMjI1YjQ5NzU3ODg4OWMyMDY2YjEzZGFhMGNhZGU0MWNiNzAgcmVsZWFzZTI0LW1haW50Cis0MjQ3MCA1OWI1MzJhYjMzNzY5MjMyMGFlZGY1MjEzMjBiZjVmMTkyYzE3ZjllIGxlZ2FjeS10cnVuaworNDI0NzEgNTcyOWI0YmM5YjhkMzk2OWE5ZTQzNmU2NGI0NWNjMDk5OWJiYzVhZSBsZWdhY3ktdHJ1bmsKKzQyNDcyIGI2MGM1MGIxNjEyNmI1ZGNlNzA3NmVhODM3YjNhMjRiZjg2NGUwYWYgcmVsZWFzZTI0LW1haW50Cis0MjQ3MyAzM2FkYzVkZDJiZjIxOThiNzZlN2JmNDcyNDA4Y2MzZmYzYmNiOWQzIGxlZ2FjeS10cnVuaworNDI0NzQgOTIwMDQ5MTNiNDEyMjA2M2FiOGJmZjVjNmEyNzBhMWIwNGQ2Yzk1MCBsZWdhY3ktdHJ1bmsKKzQyNDc1IDgxZmZkZWVhMWQwNjYwMWZjZjRiOWJmNzQ1Yzg0YjE2YTNlOTlhMmQgbGVnYWN5LXRydW5rCis0MjQ3NiAwMmEwZWIxYTJiMjFiYjk0OWMxMWM3OGY3MmQ2NGEwY2NiOGE0ZDI0IGxlZ2FjeS10cnVuaworNDI0NzcgOGUxMzIzNjI0M2RkMzRjZmVkMzlhNjA0ODJiMmRiYWIwMGMwNjNhYSBsZWdhY3ktdHJ1bmsKKzQyNDc4IGRjNmRlYzE1Njg2OTgyZDU5MzI1YmM0MDQ4YWY1NjQ4NzNiMDQzMjEgcmVsZWFzZTI0LW1haW50Cis0MjQ3OSBhNjQ1MGY5ODhhYTQ0NTcyZThmYzM4YWM4OTg1MDE1MDAwZTEwYTExIGxlZ2FjeS10cnVuaworNDI0ODAgMGYxZmM4ZWZiNzBiNTgyYWMxMjRlMTZmMGM0ZTZmMjk2NDY3NGJjNyBsZWdhY3ktdHJ1bmsKKzQyNDgxIDk4OWFhMjg1ZWRiOWJkZGY1NzQxN2ViMDA1ZTI5NDM2NzM2YmVhZDMgbGVnYWN5LXRydW5rCis0MjQ4MyAxOGYyNzJmNTM2OTkxMjhhNWIyMDlmNTA3MzdjZWJiMmVhZGZjMTRlIGxlZ2FjeS10cnVuaworNDI0ODQgMjQ3NWZlOTU3ODJkMDA1NjVlZjk0ODkyY2RhZGE0NWEyODk3ZjY1YSBsZWdhY3ktdHJ1bmsKKzQyNDg1IDgyYmJkNWRlMDJmMWM4ODY5OGI3YjQzZGQ1NTQ2NzYxMWIyNzhlY2QgbGVnYWN5LXRydW5rCis0MjQ4NyBjNmJkMDFjN2E1NjhjNTA2Y2UwOTM1MjAyM2I0MjM5OTJhOTUyNTM5IGxlZ2FjeS10cnVuaworNDI0ODggMjEwY2ZlOWQzMDc3NDEyODZmMWJmZGY5MTMxYjkzMDE5ZDE4ZDliNiByZWxlYXNlMjQtbWFpbnQKKzQyNDg5IDBkNWY4MDc3YmQyNDE5NWEwOGJjMTU1Mzg3YTRlNDQzNDBjMzE2ZTEgbGVnYWN5LXRydW5rCis0MjQ5MCBhMWIzMGZjZDllMjhlYjg0NWYxY2EzNGI2ZWQxYWZmZTY4NTljNGE1IHJlbGVhc2UyNC1tYWludAorNDI0OTEgMDVlZTA2YjdiNTQ3MzcwMGRkYWM1NzlmOGZiOTgxZTc0YjAyZmVhZSByZWxlYXNlMjQtbWFpbnQKKzQyNDkyIGJkN2YyZDhlOGRlYWJiZTA0MjVkM2Q0MTRhMGZjYWI4MzQ1YmRlOGEgbGVnYWN5LXRydW5rCis0MjQ5MyA3ODE2NTRiZTU1ZWYwYzhkZTNhNTk4M2IxOWNmZGUxMDgxMjRmNDRmIGxlZ2FjeS10cnVuaworNDI0OTQgYzZmYmE0NTYyMjdiOTczZmQyNWM2YWEwZGFjZjM5YzNiMTAwOGM1YSBsZWdhY3ktdHJ1bmsKKzQyNDk1IGU1NzM3N2YwYTE2N2YxNDZkM2MyZWMyMzUzOGFmZGFhYTgyYThjN2MgbGVnYWN5LXRydW5rCis0MjQ5NiAzOGY0YjA5OGVhNjkwYzk1YzdmNjMwNTY2NGRiMDEyOWFmM2FiNTQ0IGxlZ2FjeS10cnVuaworNDI0OTcgOWQ5N2M4MzM4ZDRjMjRjMzAyMWE1YjYyMzU3M2Y0NjE0M2Q5ZWRiOCBsZWdhY3ktdHJ1bmsKKzQyNDk4IGM1OGU3OWIyY2EwNWViOTQ0NmEzN2NjZDEzMThlNjIxZjYzMDU2ZDcgbGVnYWN5LXRydW5rCis0MjQ5OSBlOGE0OWViODUxOWMzNTY1OWI4MTI4ZDA4Y2YxOGViYmU1Y2I0ZDBiIGxlZ2FjeS10cnVuaworNDI1MDAgMmMxODcwYWJiNmNlNTZkZDVjY2YyM2FmOTdhODU2N2ZkZjA0NGQ0ZiBsZWdhY3ktdHJ1bmsKKzQyNTAxIDljMGZkNTg2NDc1YzE3MDY0NDI3MDhmYThlZmI3NjFmYmVmZjkwOTIgbGVnYWN5LXRydW5rCis0MjUwMiA5NDZjZjZkNThmZDExNTk1NzczN2M3YjBkZWMzYWFmMzM0ODkyOTgwIGxlZ2FjeS10cnVuaworNDI1MDMgZmU0YWUwYzQxN2M3YjI5NjY2ZGE2YTY1MjRkYzEzYmNkNzcxNWZiNCBsZWdhY3ktdHJ1bmsKKzQyNTA0IGNhYjM2YWFlZTJlM2Q1N2E1MjkxNWY4OGI5ZWU0NWY3MzVlMGE4YmIgbGVnYWN5LXRydW5rCis0MjUwNSBmNmQ2ZTUyMjA4MjNlMTZhNGY2MGE1OTMwZTE2YTBjMTVhZmMyY2Q4IGxlZ2FjeS10cnVuaworNDI1MDYgMWE5ODc5OGE0YjFkYTcyMTljNTM0ODkxMTQwNDlkMDRlNDQyZjI5MSBsZWdhY3ktdHJ1bmsKKzQyNTA3IDNhNWY3MWQ2YmJlZTk0MTExZTc4NTcwNGMwMjBiZWU5MDMwNWUwYjIgbGVnYWN5LXRydW5rCis0MjUwOCA0NmVjOTQ4Y2JkZThmNzk2OWYyNzc4Yzc0Njg2NmU3ZmY2ZDI1MTBlIGxlZ2FjeS10cnVuaworNDI1MDkgMDY3MWYzYzQ2MmQ1MDA2OGU0ZGYyODliNDI3NDg0ZTY5NDdlOTM0OSBsZWdhY3ktdHJ1bmsKKzQyNTEwIDRkNzY1M2U1Y2IzYmNhYWFhMjk2ZTFhMDM2NDBjZDMyZjM1YjFlNTQgcmVsZWFzZTI0LW1haW50Cis0MjUxMSA5NTIzYTk0MTVlMTgxMGUxMmQ2OWYzMmQwODVhNGM4YjQ4MjkwNDNkIHJlbGVhc2UyNC1tYWludAorNDI1MTIgZGNmNjIxMTNjMmUzMmMxYzUxM2U5Yjc2ZWU0MDM0YWQ0ZGFkNjMwOSBsZWdhY3ktdHJ1bmsKKzQyNTEzIDdkMjkyY2JjNzEzYWIwZmU5OWU5MDYyZGI5ZTIxMjlmZTE4NjUxMDEgbGVnYWN5LXRydW5rCis0MjUxNCAzNjFjNjU4YTU1ZTZlMzFhMzBhZWFmZGEyNmRmOGViY2E0OTEyYzkxIHJlbGVhc2UyNC1tYWludAorNDI1MTUgYzM2ZTM3YTE4ZjFhMzk2OTRiMjUxZTkzYjVlZjA4OWI0NDhjNDJjMCBsZWdhY3ktdHJ1bmsKKzQyNTE2IGE5ZDZiMWFlYzA5NjNiNGNjZDhlM2NhOWMyNGI2Zjk0ZGJhNDU2YmUgbGVnYWN5LXRydW5rCis0MjUxNyA2ZDNiYTAwNGQ1ZTU5NzFiMGU0NjhkNTljNmZiYzhlZTExNGE3MDkyIHJlbGVhc2UyNC1tYWludAorNDI1MTggYjc2NmVkMDNkNDI1NmE2ZWY0ZjdkNDlkMmMxYzQwMjRhYTc5YmNjYiBsZWdhY3ktdHJ1bmsKKzQyNTE5IGM2ZmRlOGEzYjlkZjhhMDVlYmE2NmIxMmFkZGMzNDc0N2MxOGQwNDEgbGVnYWN5LXRydW5rCis0MjUyMCA0YjRlYTM4ZGE5OGVkMzE5ODQ2NjMwYjlmZjFhZjFmNzE5YjhlMzA1IGxlZ2FjeS10cnVuaworNDI1MjEgZDAwODA3NTA1NzNiNjNjZGM3NzZmOTNlMGNkMmM2MzI5NjFiMmJiMCByZWxlYXNlMjQtbWFpbnQKKzQyNTIyIGQxMTJkYTc5NjRkNjI5YTJhMjg1OTJhNjIyYzZiMjM5ODVkYWMxYjEgbGVnYWN5LXRydW5rCis0MjUyMyBmZjlhZmViMDViMzQyNjc0ZGE3OGJkMjQ5NWMyNmZhYWYzOWE1Mzk5IHJlbGVhc2UyNC1tYWludAorNDI1MjQgYmRkYzEzZDU3Yjg4MmQyZmVlMmIzMGI1MzMzZDhhMGM0NThmYjU2NyBsZWdhY3ktdHJ1bmsKKzQyNTI1IDFlMzk2OGZjYWM2ODE5ZWU0NjUwMWMxMTc2MTljZmFhYjQzYmI5MzQgbGVnYWN5LXRydW5rCis0MjUyNiA4YTZmYWVkMGFmMDRiNWM5NzMxNTI5MDFkMmI0ZDk5OWU3NDM2NzcxIHJlbGVhc2UyNC1tYWludAorNDI1MjcgZDRlMTc2MmI4ZTE1MzQwZmZjYTFlOTdmNWRmNzEyZDQ5ZTJmNTk2MCBsZWdhY3ktdHJ1bmsKKzQyNTI4IDI4NDEzYzA4MmMwODc2MmUwYjU4YTUxODU1YjYwMzhhMWU4ZDAxYzggcmVsZWFzZTI0LW1haW50Cis0MjUyOSBlYjA5Nzc5MzJlMmRlODY1ZWY1MmI3NGU3ZGU1N2MwYThiMmM1MzRiIGxlZ2FjeS10cnVuaworNDI1MzEgNDlkOWMxMjAzNTdhZDEwMTVmOWIxZmI1ZTFlZmNjM2VlNzQzZjI3OSBsZWdhY3ktdHJ1bmsKKzQyNTMyIDRkOTg4ZGRhNjQ3ODY0NGI5MWQ2MWYzZGEzYzlhYmIyMjU5OTZlYWIgbGVnYWN5LXRydW5rCis0MjUzNiAyMGM4ZmExZTA2NjgzOGYwNTlhZGRkZDU4YjlhOWZlNDYxMWJjZmFmIGxlZ2FjeS10cnVuaworNDI1MzcgOThmNmI1OWE2ZTBhMDlkYTZiNmY3ODYxYzQ0ZWY4ZmIxMDJiMjY0YiByZWxlYXNlMjQtbWFpbnQKKzQyNTM4IDE0NWQ1ZmM5YTZhNTFhMjY0M2Y1ZGUxMjFiNWEwODBlNzBiMjBlMWQgbGVnYWN5LXRydW5rCis0MjUzOSA0ZTUwYWE3YmIxYjUyZDFjMTNlMDM1NTQ1ZWFmMmI2YWRhY2ZlNTFjIGxlZ2FjeS10cnVuaworNDI1NDAgZDBlYmNiNGY2MDMxMzliMzQwMzlhNWUyZWRkM2UxMDUyYzA4YWU2NSBsZWdhY3ktdHJ1bmsKKzQyNTQxIDY5YzBiZWMxMTAwYWM4M2M3OTgzODVhMWI1MTgyYjIyN2EwMzc4NmUgbGVnYWN5LXRydW5rCis0MjU0MyA1ZjJjYjQ0NWUxYzU0OWVkZDlkNWMyZTZiN2YyYjZkM2QwOWMxMDQ3IGxlZ2FjeS10cnVuaworNDI1NDQgZTBjMmFiZDU4MWM1YjBiNTVlNDI2Y2ZmOWI0MDhlNDFlYmYzODQ5YiBsZWdhY3ktdHJ1bmsKKzQyNTQ1IDM2YWUzZDkyOTgzMmQ0ZmY4Y2FlNzNjNjk0NmJmNTRhZGQ5Y2M1OGIgbGVnYWN5LXRydW5rCis0MjU0NiAyYzhkYzM1ODFiNzBmMmQxMWE0NGVjNDlhNGYyMTM0MjljMGZjN2RkIGxlZ2FjeS10cnVuaworNDI1NTAgMDlkMTkzN2YyZGE4OTVmZThkYzQwYzU3ZGZjYWI2MjMyMTU1MzFkNyBsZWdhY3ktdHJ1bmsKKzQyNTUxIDgxZjFiMGRkYzhhMTZmMWFhM2U2MmUwYWZjYWNjMGNiZDYwNWE0NTEgbGVnYWN5LXRydW5rCis0MjU1MiA1YTgzNjk4NjIwNmRkMzkwZGFhNmExNTRlMGU4ODM3YjA3YTNiOGJhIGxlZ2FjeS10cnVuaworNDI1NTMgMjE2MjIxNjEzOWI5NTY5NTQzMmUxNzQ4NzlhZmI4OTk4NTQ2YmE2NCBsZWdhY3ktdHJ1bmsKKzQyNTU5IDkxMWM3ZmE0OTViMjQwNDcwNmY4YWE0NWNjY2UwYTlhMTRmOGFhYTAgdGltLW9ibWFsbG9jCis0MjU2MCAxNDNjMzQ4ZmY3MTc2OWQ2MGIwZGFmNGJlZjIwNzQxOWZlMzMyNWU1IHRpbS1vYm1hbGxvYworNDI1NjEgNDEyNzYxNGY3NTJhMWY0MzZjOTllYzc5YWE4NGFjNjk1NjI3Y2IwYSBsZWdhY3ktdHJ1bmsKKzQyNTYyIDk1ODAwODc1YmQxMjU5NGIzMDQ4MmM5ZjhiMzIwNzlhZGM2OWYxNmEgbGVnYWN5LXRydW5rCis0MjU2MyBlMWMzZmZlOTI2YzExNTYyZGFjYzQ3NjgwOGMwMzQ5Y2U0MGRhOGNkIGxlZ2FjeS10cnVuaworNDI1NjQgNWQ4Mjg3MDNjNmExNzMyYWRkNDQyMDFkM2YzZTQyZDg3MDUyYjQ4MiBsZWdhY3ktdHJ1bmsKKzQyNTY4IDYyNTY0ZGM3YmQ3MjYyZDEwMTA4NDFjMTUwZWIwNjZiYTcwNzNiY2YgbGVnYWN5LXRydW5rCis0MjU2OSA4ZGI5ODViNDA4NmUxOGNlZTczZDZjOTE3NDBlMDM1MGIzOWYyYTE3IGxlZ2FjeS10cnVuaworNDI1NzAgMmZkYTRkMTUwYzNkYjQ2ZjY0NzAyOWJiNzE3NTAxZWQ1YTE4YTVhMyBsZWdhY3ktdHJ1bmsKKzQyNTcxIDZiNDI5MjBhY2NjOTI2NGY3Y2FiZmY1YzM4NjE3MmMyMjRmMzQ1ZTcgbGVnYWN5LXRydW5rCis0MjU3MiBjNjUwNjQ0MmRmZTAxNTIyZWQ4YmRjMTg2YjNhOTEzMWFlZTAxOGYzIHJlbGVhc2UyNC1tYWludAorNDI1NzMgOTJjZThiYjhiMTJhN2ViNWY0YTkzMmQ2YTQzYmRmOWUyZWQ4ZTQ4NiBsZWdhY3ktdHJ1bmsKKzQyNTc0IGM5OTZhMTIyMzRjMjU5YzBmY2EwZjM1Mjg4YWM5YTRhNDA1ZGM5NDQgbGVnYWN5LXRydW5rCis0MjU3NSAzOTI0YWZjZjk1ZTdmZDliNTEzYzFjNTcwY2I3MjE1ZTU3MmFjOTEzIGFzdC1vYmplY3RzCis0MjU3NiBjOWZiYjA2N2MyYTZjOTBlMzBhYjkxN2MxYzg2MGZlMjI1NDg5ZWE1IGxlZ2FjeS10cnVuaworNDI1NzggYmI0ODExNWU2ZGFiMzM1MzA5NmMyYTM3NjQyMTBiZTRlOWUzNGQ2MyBsZWdhY3ktdHJ1bmsKKzQyNTc5IDNjMGIyNjExM2RmNmVkNWIzNmE2MDY0OWQyZmQzMTI2MmU4NjgxYTcgbGVnYWN5LXRydW5rCis0MjU4MSA3MTBjYmRkNDc4YTg1MWIzNDBhY2Y0ZWYzODEwZTk3MGVjZDVjNjMzIGxlZ2FjeS10cnVuaworNDI1ODIgMmFiOTI3MGVmMTlhZWFmN2YwZWE4ZjQ4YzQ1MTA2NmIyNmQ1NDQ0NCBsZWdhY3ktdHJ1bmsKKzQyNTgzIDU3ODhlMGE2ODllMjU3N2U4YTVlMzA2ZjQ4OGQ2ZDA4YjYzYmM3NDYgbGVnYWN5LXRydW5rCis0MjU4NCA3YmZiZmIyZWY0ZTIxNDVhNTkzNDM4M2JkZGU4NjAyMTAxZDUwMGE5IGxlZ2FjeS10cnVuaworNDI1ODUgNThhODQ1MWZmNzk1ODdlM2U3OGIyNTQ2MGI1ZDBiZWZlMGQ0NzE5NCBsZWdhY3ktdHJ1bmsKKzQyNTg2IDYxNjU5Mjc0MzFkNmE2ODU1MDhmZGU0MDg2ZTY3MWU1Y2FjZDgyZDIgbGVnYWN5LXRydW5rCis0MjU4NyBkYjU3MWY5Y2FkNmY4N2JmMGQ5MGQzMTZiZGEzMzJiMjA3NDBmOGIyIGxlZ2FjeS10cnVuaworNDI1ODggODQxMGYwNmFkMzZlMTg4NTk1ODk0OWQxOTc1OGRmNDc2MDg2N2JiZiBsZWdhY3ktdHJ1bmsKKzQyNTg5IDk1MDRmN2FjMzY2OWMyODFjZTIxNGUxODc5ZGE2ZmMwZTU5NTlkYjMgbGVnYWN5LXRydW5rCis0MjU5MCAyOTZjZGE5YjNlMmY4MDlmNDU4ODg4YTNkZTk3OTQzYWQzMWI5M2EwIGxlZ2FjeS10cnVuaworNDI1OTEgNTg0NjM3ZDgzMWUzZmNiZWNkYWVkMjQ4M2UyZTBlZWZmMGIyNjc5NyBsZWdhY3ktdHJ1bmsKKzQyNTkyIDZjMGI2YzFjZDFmNDY5ZDU5NDk0M2EyNTVjNDAyZWVkYThlNzBiNTkgbGVnYWN5LXRydW5rCis0MjU5MyAyZGRlYTU1MzVmMDg2NDllNTY1Y2I3NDIyMDhkNGU3N2IxMmQ1MjlhIGxlZ2FjeS10cnVuaworNDI1OTUgNzgwYjdhZmU2MTc4NWFmN2MxNDdhOWI3MTg1YjAyNGZjNTYxYWIzOCBsZWdhY3ktdHJ1bmsKKzQyNTk2IGRiYTY0OTQ3MzVkMDJhNTUzOTJlNWNlYTE2OTAyODQ0MTcwZDI3ZGIgbGVnYWN5LXRydW5rCis0MjU5NyA2N2M3NGVmYWQ4YzIzZjdmY2E0N2Y0ODc0ODJlMDA0Y2ZkYjBjMDFmIGxlZ2FjeS10cnVuaworNDI1OTggNTIzMGM0YzI5ZWJiMjc4NjQzZTdlYzIwNjc2MjRlZDgyZWE4MWZmYyBsZWdhY3ktdHJ1bmsKKzQyNTk5IGFjNDk4OTUzY2U1NzhmYWE5MDI3MjIzYzdlMjMyNWVmYjRmMmMzNGMgbGVnYWN5LXRydW5rCis0MjYwMCBlMTM5MTkxMGIwMjY1MmQ4MzRlMTE4NDYwMzk0YzYwZThlOWI3NWFjIGxlZ2FjeS10cnVuaworNDI2MDIgNTRlYjViMWZiMzYzMmVjOGJhYzNjYzRlMTQ0NDZmNDllNDlmYTc3NSBsZWdhY3ktdHJ1bmsKKzQyNjAzIGU5ZjBkYjQyOWYyYmJhZTNiZTE2NTBmN2FjZjIyZThmYmRjMWIxNGYgbGVnYWN5LXRydW5rCis0MjYwNiA1MmNiYzQ0N2UxYzlmYmVlN2FmNTAyZmQyY2U3NjBkNDVkNjRhMTA0IGxlZ2FjeS10cnVuaworNDI2MDcgZGEyYTEwNDkyMTVkNjMxOGJmM2Y3ZjIxZDIxNDhkNDgyNTNiYzc3OSBsZWdhY3ktdHJ1bmsKKzQyNjA5IDBiZWJlYjM5MzA0NTQzM2QwYWZjNDE1MjkwODA4MWU3MmI2ZjhhMDEgbGVnYWN5LXRydW5rCis0MjYxMCBiODczZWM2Nzg1NjA1MTM2YzNjNjRlNDM5NWRhOWU0ODAzNTEyNzZiIHJlbGVhc2UyNC1tYWludAorNDI2MTEgODYxMWYzOWNkODJiZmMyYWYzZDQ4YzE5ZDE0M2U2NGJmMTJlNDQ0NiBsZWdhY3ktdHJ1bmsKKzQyNjEzIDdkMGYxMjM0MGM5ZTRmNThiNjFjMDY4ZTkxYzlhNDBlMDQ2OWVjODggcmVsZWFzZTI0LW1haW50Cis0MjYxNCBlMGZlYWRjN2FmZmI3MmJmODFjZDVhMWFkMTg1NDU4MTYyNmY5N2MzIHJlbGVhc2UyNC1tYWludAorNDI2MTYgMTE0ODRhNzJkOTY2ZmQ4OGViZmY5YTc3ZWI0Y2U2YWVlZDEwMzJlZiBsZWdhY3ktdHJ1bmsKKzQyNjE3IGFjYWE3OWU3MzEzMzNlNTJkMGEwZTU0MmQwNGJjNWI2ZDFmYjNmNWEgbGVnYWN5LXRydW5rCis0MjYxOCBkZDNlNWE5NDU5NjJjMWVjOWQ4MTE1NjJkY2U2NGVjZjc2ZjAzYThjIGxlZ2FjeS10cnVuaworNDI2MTkgMzAxNzEwNTM1ZDE1MDI3NDgxYzBjYmNkZDA3ZDhiMWFhNDczM2MzMSBsZWdhY3ktdHJ1bmsKKzQyNjIwIDE4MGRiZmNmM2JlZDA2NTA1OTg1NjMyNzk0NDMwNzJjNjcxM2U3YjggbGVnYWN5LXRydW5rCis0MjYyMiAwMTUxYTAyMzc0YTgyZTI1M2EzNWY1NDIyZThjYWI4MjEwNTI1ZGMyIHRpbS1vYm1hbGxvYworNDI2MjMgZGZhYjIyYWU0OGUzNjdmNDA5MzllMzUxMDMyNGUxYjZkMGMwZGViOCBsZWdhY3ktdHJ1bmsKKzQyNjI0IGI2ZDJmNmZkM2UxMTZiOWI5ZmU5NWJjOTgyYWM3NjNjMzU5ZmYxMDMgbGVnYWN5LXRydW5rCis0MjYyNSA3YjU4ZmJkZTVlNWRmYzFiZGQzOTgxMGM2NzVlZDQwYWM0MDFkM2Y1IHRpbS1vYm1hbGxvYworNDI2MjYgZTBhNzcwMTBkMDMzYmM5MzIyYTc3Y2RkMGVlMjViYTdkMjcxNTgyNSBsZWdhY3ktdHJ1bmsKKzQyNjI3IDc4ZGU1ZjZiMmY2N2IzZTg1MzkzODhiNzdjYWUwZTMyNGVhNzg0MWEgbGVnYWN5LXRydW5rCis0MjYyOCAzMDU2N2JlOTBjODUxMzExZTkyYWQxMDBiYzE5MGNkZmM0OGVhOWJhIGxlZ2FjeS10cnVuaworNDI2MjkgYWEwNDA0MTBmYjlhMmRmOTlkMGEzODNiMzhkYjZmN2ViNTQ1NjgyZCByZWxlYXNlMjQtbWFpbnQKKzQyNjMwIDJhMmQ0NmQxOTI5YTQwNmFmZTY1YjEzZTNkN2FjMzhjMjM2MGVkNDAgbGVnYWN5LXRydW5rCis0MjYzMSBlMzI0OGYxZmM1NGRiNzE4YTk0MjM4NDI3OWJmNDhkNTZiZTUyNWY5IGxlZ2FjeS10cnVuaworNDI2MzIgMzVkYmJjMWFiNDQ4N2RmZjg3NjQ5ODc4MWYzODg5YzQyYTkzNDM5MiBsZWdhY3ktdHJ1bmsKKzQyNjMzIGMzZTI4NDA5Njg2Y2JlMmMzYTY3OTAwZWJiMGRiNzgxZGY1Y2VlYzMgdGltLW9ibWFsbG9jCis0MjYzNCA2NjQ1ZGIwOTQ5NDNkZDJiNDQ0ZmMxZTAxZDQ4MTg3Njc4M2I4M2YyIHRpbS1vYm1hbGxvYworNDI2MzUgOWYzZTU4ZGJlYTYzMWJjNjY1MzU5NDA3NTNhNTI4ODk2OGQ2MjUyMSBsZWdhY3ktdHJ1bmsKKzQyNjM2IDNkNjhmMzUyYzJmZjAxZjIwN2Q2YTkxY2NmNGM3MGMwYjczNmNjOWYgbGVnYWN5LXRydW5rCis0MjYzNyA4ZmYyOGZjZjg3MmUwYTliOTVjNmM5YWFiMDVhMDc3NDNjZjY4YTExIGxlZ2FjeS10cnVuaworNDI2MzggYjZiMWM0NGQ5MTEwNTI4NTNjN2NkZjFmNzQzZTgzZTdiZGRmZjU0NCBsZWdhY3ktdHJ1bmsKKzQyNjM5IGNkODQ3ZTcyNjgzNzJlNGU3ZWJiZGIwNDFmMDE5ZDYwY2RhMjc5YjkgbGVnYWN5LXRydW5rCis0MjY0MCA4MWJlMTViODQyNDQ1Mzk4MjZhZWYxZTZiYmJjMzY3MDA0ODE2N2I4IGxlZ2FjeS10cnVuaworNDI2NDEgYmVhOTQ3NTQ0NDFiMWE3MGI3MTNmZWVlZWM4MWU2YzZlZTk5ZTQyNyBsZWdhY3ktdHJ1bmsKKzQyNjQyIDI1ODk5MDI0Mjg5OGU2YzYwM2U3MzY0ZmE1ODE0YzcyOGE4NGJmNDcgdGltLW9ibWFsbG9jCis0MjY0MyAzYzA3YjZjNWNmNzg4YjdiZDBjOGZlYThhOTk0YTRjNmM5MTUwODAzIGxlZ2FjeS10cnVuaworNDI2NDQgZjE1MzAyZDhiMmRlNTlmMWExNDEyNDFkZWE4MDNjYjJkZWRhMWRiNyBsZWdhY3ktdHJ1bmsKKzQyNjQ5IDVjMzZjMjIyZTdjYTUzMTBlNWNjOGI4ZGIyODNiZDY2OWQxZTI0ZDQgbGVnYWN5LXRydW5rCis0MjY1MCA5N2VlN2I1MzM2NjQ4MTc4MGI2ZjMzMTU1MGQ2NjRhYzg2M2Y2NjgyIGxlZ2FjeS10cnVuaworNDI2NTMgYzM0NDViMWNmMWJmMWVkMDRkYmQxYzJkZjVhODE1MWI0MTAyZDE3OSBsZWdhY3ktdHJ1bmsKKzQyNjU0IDQyOTJiNDI2ODNjNWZjYzc1NTQzMzhiYmZkODQ3YmI1M2U5MWFjNTIgbGVnYWN5LXRydW5rCis0MjY1NSA3MWQ4NzMwNTRkMjllZGJkMjIwMzJjOGM5MTVjZjBlZWNiYjhiNWMzIGxlZ2FjeS10cnVuaworNDI2NTYgYWUzOWZjZTBmOWExNmVjMGE1ODhkNzE4OTlkZDQ2Yjc3ZDUxNDYxMCBsZWdhY3ktdHJ1bmsKKzQyNjU3IDQ1ZTZmOTAxOTAyY2E1ODU3ZWVlOTFhYmEwNDhkZjdkZDU2MDE4NjQgbGVnYWN5LXRydW5rCis0MjY1OCA2NmZjNWIyNjI4NjhiZWU3ZDIzMWM3NTk4NDZjMWZlZDNjZDVlZGVjIHRpbS1vYm1hbGxvYworNDI2NTkgOTQyYWUyNWNiMzkxNTA0MDkxMDJkNGQ2NjZlMzczMTQ4OTVhNDJkMSBsZWdhY3ktdHJ1bmsKKzQyNjYwIDQwMmRlMGZlZjExNmQ4ZTdjMTRjMDJjNTZkZGUwY2ZlYjVmNzRiNWQgdGltLW9ibWFsbG9jCis0MjY2MSAxMTU5NjA2NDBmMjVkZTViMDFkMjI5YjMyMmI3OWU3NWY4YjIwYWE2IGxlZ2FjeS10cnVuaworNDI2NjIgZjdiNDcyNmFkYTZjNTA5YzAzOWY2NzYyZmUwYWExYWIzMTZiM2JmMiBsZWdhY3ktdHJ1bmsKKzQyNjYzIGM0MGEzM2NhNjViOTE2M2I5ZDgyZGM5M2ViOWIxNzJmMzZjM2JiZWUgbGVnYWN5LXRydW5rCis0MjY2NCBlNTgwYzhiMGRjZWFiNDBlYmYyOWY4NTg2OWE0NjVjNDhlMGM2YWZmIGxlZ2FjeS10cnVuaworNDI2NjUgNWYzODIyYzJlNzMxMDRiYmU0ZjlkN2NhMDgxYmIwYjMwMzg1MjQzYSBsZWdhY3ktdHJ1bmsKKzQyNjY2IDk5MDY2YmVhMTdmOGYwMzJlODA3OGQ1YWQ3OGM2YWNlYjc0ZmMwZDQgbGVnYWN5LXRydW5rCis0MjY2NyBiYmYxNmZkMDI0ZGY3YmNlYmMwZjZmZTg4MmI3Y2M4Y2Y5NzYwYjU2IGxlZ2FjeS10cnVuaworNDI2NjggYzA2NjEzZTUzZmFkZjM3NDliODkxZThmY2ZkNGFjZmNlOGUyOWM0NiBsZWdhY3ktdHJ1bmsKKzQyNjY5IGYyYTg5NWQzM2E1Y2FlOTEzZjZlZGM4M2EwNTE1YTBiOTc1ODEyNTcgbGVnYWN5LXRydW5rCis0MjY3MSBkNmNiYzcxYjgwMTA5MDk5ZDJkMzY3OGJiYTZlOGU5MmE2MzJiMjhiIGxlZ2FjeS10cnVuaworNDI2NzIgODc3MDY0MzhkYzNjNDFiYTI3YzdkYzk0ZGQxMzU2MjIxMTc3ZjEwZCBsZWdhY3ktdHJ1bmsKKzQyNjczIGZkNTQ5N2I2NDIwOWMyNDExN2E0N2M4NmUzZTg3OTU4ZmRkOThjOWMgbGVnYWN5LXRydW5rCis0MjY3NSA4YTJhNWY3MWI4YjNkN2UyNzAwNmExMjA0NzQwMjRjOTlmMzk5YjhkIGxlZ2FjeS10cnVuaworNDI2NzYgNjU4M2M4Njg4MTdhYWE0YzliOWNlMzdjMzVkYzEzZWZiN2UxMmVkNSBsZWdhY3ktdHJ1bmsKKzQyNjc3IDRhNGUwYzU4ZDQzN2U4N2YwYzMxNTk5OTVjZDdlYjU4ZTBhODAzZDUgbGVnYWN5LXRydW5rCis0MjY3OCA0MTc4MTUwNjIzMzc4YTFlOTE1MjVjYWNjNGQ5YWE3NzYyNTRjY2IwIGxlZ2FjeS10cnVuaworNDI2ODUgYmJjZThlYzJmZjgxZDBkY2Y5ODM3MTYxZjE2OGZiZTIwNDc1ZGVhZCBsZWdhY3ktdHJ1bmsKKzQyNjg3IDhiNjg1MTM4MmUyNzUzNThmYThiMjhjNTJlZjdmZWM3OTIyYmM0NDYgdGltLW9ibWFsbG9jCis0MjY4OCBmYTkyZmUxNTI1MWEwNTEwODU3YjIwMjllNmZkMmI3NWMxOTU5NjYyIGxlZ2FjeS10cnVuaworNDI2ODkgNDNiOWQ1ZjA5MDFiZTY2Mjg0NDVmNWFhNTMwOGM3M2NkOWEwODBjZSB0aW0tb2JtYWxsb2MKKzQyNjkwIDQzYzcwNDYwY2NkNTkwZDBiNTk0OGY0NThkYmI0YzgxYWRmYzMxZjkgbGVnYWN5LXRydW5rCis0MjY5MSA3OTZkMTUwZTQ1YTk0YmZmMTIwNTg3NDIwMjMzNDk3YjdjNzBiN2RlIGxlZ2FjeS10cnVuaworNDI2OTIgYTNlNGJkNDc1YWQ3Zjc0ODU4NDBlMTNhNDgzMmZiNGRkMjI5YTEyMCBsZWdhY3ktdHJ1bmsKKzQyNjkzIGMwOTgyYjgxNTVjNjJkM2ZmNDVhODIxZmQ2YWQzMTViNTcyM2JlMGYgbGVnYWN5LXRydW5rCis0MjY5NCA2NThmOGZmMmE0NDJkMDE4MTU2ZTU1ODFhY2IxOTc3OGM2ZjBlNDYzIGxlZ2FjeS10cnVuaworNDI2OTUgMzEwNTFhNzBiMjk3MmQ4ZjJjZTQwZTQ4OWNlZGVhOTQ5NDY0MDBkYiB0aW0tb2JtYWxsb2MKKzQyNjk2IGRiZjljYzZjMzZlYmQ3MWNiYmQ5MjMzN2ZjMjNiZWI2OWI4ODMxNzAgbGVnYWN5LXRydW5rCis0MjY5OCBhMjEzOGRmYjU5NjUyNjQ5NDU1MjZlMDEyYzdmNWUyODFlYzI5N2Y3IGxlZ2FjeS10cnVuaworNDI2OTkgM2ZmYzFlMWQyZjU3NmY2NGY2ZDcxODFhNjMzNjUzMjZlMGFjZWZmMCBsZWdhY3ktdHJ1bmsKKzQyNzAyIDkyMjUzOWRiZGM0ZTVkOWM4NmM1MGY1MzhiZjAzM2ZiN2Q3NjMxZDEgdGltLW9ibWFsbG9jCis0MjcwMyBlODIxYjkzNmYzZmE3NTZhMTc2OGNlNjNmYTQ1YWNiZTBiODljODYwIHRpbS1vYm1hbGxvYworNDI3MDQgOGRmNTUwMTRjOGZiMGNkMjcxNGEzM2RhM2I0MWIwODMzYWVlYmJhOSB0aW0tb2JtYWxsb2MKKzQyNzA1IGVmNTI0NmNlOGZlNjU2MDBmMGRmYTVhYTlhZjRhZWFmZjQ2MThiZTIgbGVnYWN5LXRydW5rCis0MjcwNiBkYmE3NzA5MmQ0NmViYWYyYmI4ZjI0MmJjMmFkMDNkODc3YjRmNTc5IGxlZ2FjeS10cnVuaworNDI3MDcgMGY3Mjg0YzQ5MWEzMTdiZDdmZjY0OWU3NmNlYWJmODExNTBhNzYyYiB0aW0tb2JtYWxsb2MKKzQyNzA4IGMyOTQyY2RkODhiMzI1MDdmNTVhMzk0NDRiYjhkODAxOThmMjYwNjYgbGVnYWN5LXRydW5rCis0MjcwOSAwYjVlOWFjZTJlODdiMzg2ODI1MGYzZGQzNTE0Mzg1YzlhMmUzZDIyIGxlZ2FjeS10cnVuaworNDI3MTAgOTJiYTcyNDg0ZmYzODQ1MjQ4ZWU5OTdiMTY5ZmQzYTZlMDY1MDU3ZSBsZWdhY3ktdHJ1bmsKKzQyNzExIDhlMDRkZTI0ODBlNDllYTg0Njc2YzE4YWIzZmQ2NWY3YWM2NGQ5YTIgbGVnYWN5LXRydW5rCis0MjcxMiA3YjY2YjJkY2M1ZTk2YTY0YTE4ZGYyMWQxM2JhOWYyYWYxMWI0OGQ1IGxlZ2FjeS10cnVuaworNDI3MTMgMWU4M2YxODJiNWY5YWY4MTFkNDc0OGVkOTFhZWFmZDM2YjQ1MTMxNCBsZWdhY3ktdHJ1bmsKKzQyNzE1IDJmMTliOTgxYWMyNDdjMzIzZDA0MDQxOWViNjE3Y2YzMmVhN2E1ZTAgbGVnYWN5LXRydW5rCis0MjcxNiAzMmUyYjhiZGE1MzViOGE2ODcxNWQxNzI1NDM3ZjM5YTM2MmZlYmUwIGxlZ2FjeS10cnVuaworNDI3MTcgZDBjYTYzMDJkZDNjOThjY2YwNzFkODNjNjFiYmI3YzdkODM0ZGNlMyBsZWdhY3ktdHJ1bmsKKzQyNzE5IGM0MTM4YWQxZTA5YTBlMzljNzgyMzA0ZWQyZGM5ZTgwYmQ2ZTFmYTIgbGVnYWN5LXRydW5rCis0MjcyMCAzZTE5MjcxZWZjNDZlNjkyNjM4Y2JkMzYxZDdlMTBlYTUyYTE0NjUxIGxlZ2FjeS10cnVuaworNDI3MjEgODNiODYwYWNmZTk1ZTZmMDE3Y2NkNjIwMjkzZjc1NDM4MDNlNDY5YSBsZWdhY3ktdHJ1bmsKKzQyNzIyIGEzNjZkZmM3MDM1ZmQxOTIwYzFhYTAzYjI3ZjM1NDdhZjE5ZTQ4ZGEgbGVnYWN5LXRydW5rCis0MjcyMyAzZGQ5MmQ5N2E2N2ZmODIxZGYyZTM3ODE5YjNjZDg2ZTkyOGJhYTc0IGxlZ2FjeS10cnVuaworNDI3MjQgMjJjNTE2MzJiNDU5ZDc3MDJlNGFjODU2MTVhZmEyZmIwNjYyYjcyMCBsZWdhY3ktdHJ1bmsKKzQyNzI1IDVlNDYzYWU3MDcwNzZkZDI4NzA4ZDc2N2QzZWYyYjJjMzRiNDQ4NmQgbGVnYWN5LXRydW5rCis0MjcyNyA5NWE5MmIyYjUzZWU0OWFjNjM3ODZlZWE3MzFiZDJjOGE1OTI5ODNhIGxlZ2FjeS10cnVuaworNDI3MjggMDY3NDc5NmI2OTZjYzVhMjA2MGNiYTIzMzk2YmYzZDM5NzIzYTYxMSBsZWdhY3ktdHJ1bmsKKzQyNzI5IDFkYWExOTliNzg0YmU0YTYzZjUwYzgwNWY2YWI0M2E5YzY3OTZlZGYgbGVnYWN5LXRydW5rCis0MjczMCBlMzY0YmM3NmJkYzhkNDYzZjY0ZmI3MjNiNmMwMzUwMDE0ZGM3ODc1IGxlZ2FjeS10cnVuaworNDI3MzEgZDZjMzBjZTM4NjhiMTNkN2M5ZGRkMzM3ZTk2NTlmZmFlN2IyZDAzMSBsZWdhY3ktdHJ1bmsKKzQyNzMyIGFiMWI1M2Q1NDkwMWE4ZGE3MTY3ZmVhMjRjZjkwOTc4Y2M2ZTQ2NWIgbGVnYWN5LXRydW5rCis0MjczNCA2MjM3NjM0NTdhNGU4Zjc1NzAxNjM0OGIxYjQ2NTU1MzhlOTY1MjQyIGxlZ2FjeS10cnVuaworNDI3MzUgNGNjOTVmY2U2NWRhNzYzOTY3OWZlNWFiYTlhNzIzOTIyNDJhZWU2NSB0aW0tb2JtYWxsb2MKKzQyNzM3IGY4ZmZhN2NiZjk2MDVkZTU4Y2M0Y2Y3ODdlNzdhNWRmNTJhNDk4ZTkgbGVnYWN5LXRydW5rCis0MjczOCBhZjlmOWI1OTNhNTM2ZDcyOGQyYzQ3OGRlNjZmMDU4NmNkNTAxNDQ4IGxlZ2FjeS10cnVuaworNDI3MzkgNjRmZjNiMjI1ZDQ4NTE2MTU0ZDQ1MWNmZWU4YzRmMDRkNzNkMjBlYSBsZWdhY3ktdHJ1bmsKKzQyNzQwIDM1NjEyYTEzMWFjNjI0ODE0OTk4MjVkZGFjMjEwMWI5ZDJhZjgzYTQgbGVnYWN5LXRydW5rCis0Mjc0MSBhNTQ5NDgxODBhM2RlMjI5ZTVlMWNmODM1YWMwM2M1YmNiZDZiZTBmIHJlbGVhc2UyNC1tYWludAorNDI3NDIgMWFlYTNhZWNhNTM1YTYzMGNhZDYzNGQ4NDViMjQ2YmVjYzViZGY1ZSBsZWdhY3ktdHJ1bmsKKzQyNzQzIDEyMTFhNjhiMjhkZDM3MTc3OWRjNDJhNTgzMjZjNDdhZjJlNGQzZDAgbGVnYWN5LXRydW5rCis0Mjc0NCBjZDdkMjkxOTE3OGM3NTc2Mzc3N2UwOTUzYmUxMTlkZTUzYzc0ZWE3IGxlZ2FjeS10cnVuaworNDI3NDUgYTdiMzYzMmQwZTA1MTUyNWJmNTg3MWZmNmY2ODQxYmQyMjE4NmYwZCBsZWdhY3ktdHJ1bmsKKzQyNzQ2IGEwMGE5ZWVmNjA2M2FjZTk5N2ZkM2UzNzhjZjVjNTlmOWVhMDZkZTUgdGltLW9ibWFsbG9jCis0Mjc0NyAzNzY3OTJiZmI1N2VmOWI4MzQwZjRiYTQ3ZjlmMzI1ZTJmNWEyZDEyIGxlZ2FjeS10cnVuaworNDI3NDggMjVmOGU2ZGRlNGEzYjA5NmIwNWFiMzA3MzZhMWRjNjM0NjE1NmFiYiBsZWdhY3ktdHJ1bmsKKzQyNzQ5IDJiNjU5MjY4YTczYWEzZTY4NDUxNjg5ZWY0MjBkN2U5NmFlZDJlMWQgbGVnYWN5LXRydW5rCis0Mjc1MCA5NjViYjRhNTQwOTY2MzJiZjE0NDFkYWRjODEzNjk2MDA4NzU0YjY3IGxlZ2FjeS10cnVuaworNDI3NTEgZDg1M2JjMDY4NDdlNjZkYTRhNWRhN2QyZjYwNGZmYTVkNjExZWQ5YyBsZWdhY3ktdHJ1bmsKKzQyNzUyIDZlMjg1YzY5ZWZjMDViN2Y4YmRiYjA5OTBhZWE3YjBjOTNiZjhkNTYgbGVnYWN5LXRydW5rCis0Mjc1MyA1NzMyMmNiMmNhMTExN2I3ZjBkMmI0YzBkZDU0NjAxZTBiYmQyZmFhIGxlZ2FjeS10cnVuaworNDI3NTQgMGNjNThkYmQ4N2ZlYmUxODIwYWIzNjQ5ZDUzNjIxYmRiZjM5NjU1NCBsZWdhY3ktdHJ1bmsKKzQyNzU1IGMzYzVkMDZmYWEwMWVjZDFmNjdiZWE1MTVhM2YyYjY4YWI0NWQ2NWYgdGltLW9ibWFsbG9jCis0Mjc1NiBmNjY2YmM5ZjYxN2Q4NzAyYzQ1ODIyOGZjNjQyYWZmODIxM2IxZTYyIGxlZ2FjeS10cnVuaworNDI3NTcgMDlkMTc0MzBmNGMyNWFjNDk0MmFkZjZiMTYzNzFhYTcyNWYwYTBiMSB0aW0tb2JtYWxsb2MKKzQyNzU4IDBlMmNkOTRjNTNhOThhMDg0M2ZlZjdiZmIyMWJkMTE5NWZkNDcyNmMgbGVnYWN5LXRydW5rCis0Mjc1OSA0OGEyOGIzNWRkNjQ1NTY1ZWEyYzI0YTM0YTRjZDM1MGVjMjNhNGI0IGxlZ2FjeS10cnVuaworNDI3NjAgMDJkOWI0NzY5YTg4ZTg2ZWRlYzJhODMxMDdiZDdmNzhhMzlhMjUxNCB0aW0tb2JtYWxsb2MKKzQyNzYxIDYwNGExMjZmODNjMjE0ZjQwOTVkMTk1OGQ2MGZhMmExNjYyOWQ3OTIgbGVnYWN5LXRydW5rCis0Mjc2MyA2ODg3OTU4NzNmZjFjZWExNDA4ZjRmMmJmOGFkMjQzMjk4NjY1YTRhIGxlZ2FjeS10cnVuaworNDI3NjUgMWU4Y2I0N2JlYWFhNDhkZjg1NmY3ZGZiYzY3M2YzNDg0NmI1YzgzMiBsZWdhY3ktdHJ1bmsKKzQyNzY2IGRmODQzYjA3ZjVmZTBhOGMzMjRlNDEwNTI2YmQ2MjNjYzhlMTg0MDMgbGVnYWN5LXRydW5rCis0Mjc2OSA4OWQ2OWQ5MjEyYTJkY2I5MGZjODRmMmEwMGU1Y2Q3YTBjNmY4Mjg5IGxlZ2FjeS10cnVuaworNDI3NzAgMDQ3NDcxY2I5ZTRkOTdiNTczODczYzcwYTQ4MGFjMGQ4NzllODNiYiBsZWdhY3ktdHJ1bmsKKzQyNzcxIDcyODVjMzdkNzYzM2U0ZGUzZGI1N2I0ZDlmOGQ1MjEzNGMyYjM1NDMgbGVnYWN5LXRydW5rCis0Mjc3MiA4ZGRjYWFhMDhmZGRlZDNmMWY4MWUyZTVjYjU2ZDRjZWNmZDc3Y2UzIGxlZ2FjeS10cnVuaworNDI3NzMgNDI0ODdkOGNmMzM4MDA4ZjgxNDczMWVjM2RkM2JjYWIzNzJiMTFiOSBsZWdhY3ktdHJ1bmsKKzQyNzc0IDA0ZDE4YmNmNzUxOWY4MmRhYWU1OWQ4ZWQyYmY5MmQ4MzY3ZTg2NTAgbGVnYWN5LXRydW5rCis0Mjc3NSA1MTVlZjdkZDE2YmQ5N2Q2NzI1ZTY3YzI0NjRmZWM1MDRhYzUzNTIzIGxlZ2FjeS10cnVuaworNDI3NzYgODhkZmQzMjgxZjcxZDdjYWQ1MTY4MDc5NmNkYmM4MDg0ZTU2M2ZmZiB0aW0tb2JtYWxsb2MKKzQyNzc3IGJkMDY0MWQ2MjQ2MjUzN2VkNDllZjNlODc4ODM4ODc1NDExZGYwOTYgbGVnYWN5LXRydW5rCis0Mjc3OCA4ZWFmOTUzMWEyZGVkMjk2ZDAxYjY0NTg3ZGI1OWVjYTc5MDdjYWY5IGxlZ2FjeS10cnVuaworNDI3NzkgNjU4MmE0NDkwZDFhYWIxNWM1YWM0ZTc2NzMwYmQwYjM3MDBkM2VlYSB0aW0tb2JtYWxsb2MKKzQyNzgwIGM1NTJmMjI3NTc4MmNmNjJiOGFiNGNjODE4N2YxN2JiNTRjNjM4NjQgbGVnYWN5LXRydW5rCis0Mjc4MiBlMDFmMTdjMjdlZjMwYzlmNGM4MzczMzYyNjMxNTcwNWIxNDRjMDM4IHRpbS1vYm1hbGxvYworNDI3ODQgYTAwYmQzY2RiNzI4N2FhZmIzNmM0YmI0ODVlYzBjOGFmZmU2ZDI0MCBsZWdhY3ktdHJ1bmsKKzQyNzg1IGQ1ZTVhNWQ5ZmU3YzAyNTQ3ZjE5OGQ5ZjM5M2QyMzgxZmZlOGNjNmUgdGltLW9ibWFsbG9jCis0Mjc4NyA3MDk5ZjZlNjgxODNlY2E2NDlmODEwMGMzOWFmMWMyZjAzYzNkNTMyIGxlZ2FjeS10cnVuaworNDI3OTQgZGU0ODE2ZDM0NGVlYTQ4NThlNmY0YzcyMmQzYTNlYjRhYTAxNGM4MCBsZWdhY3ktdHJ1bmsKKzQyNzk3IGIxYTNjMjIzOGY5N2UxYTY1NTJmOTVkMDQ4ZTUzNDY3MmZmOTliYWQgbGVnYWN5LXRydW5rCis0Mjc5OCAyYzJkZmZlMDcwZGYyODM2MTI4NDA4Y2ZiMjJiNTc0Yzg1Yzk2OTA5IGxlZ2FjeS10cnVuaworNDI3OTkgZWY4Nzc5ZDQ1NWVjNWNjOTY0ZTlhYjdhNWRjNWM3NjY3Y2I5YzNlOSBsZWdhY3ktdHJ1bmsKKzQyODAwIGFiYTczYjQ2ODAzYzc3OTBiMWJjOTViMjQ5NjE0OTIwOWI1MjJmMTggbGVnYWN5LXRydW5rCis0MjgwMSAxZDA1NWViZDgzMjI5ZmE3NzBiYmQ2ZDYxYTEzZDk4NTBhNjE0YjQyIGxlZ2FjeS10cnVuaworNDI4MDIgNTQ3NTRmMGQyNWM3MmY3YTVmMWE5ZWY5NWE1YjQ2Y2RkMTMyZDdmZiBsZWdhY3ktdHJ1bmsKKzQyODA1IDdhMzBkYzJhZjMyOTM4NTgxMDVkNDUxNjk2ODU3NjA5MjMwNGIyZWEgbGVnYWN5LXRydW5rCis0MjgwNiA2YjdjYTNiMjAxZjNlZmRmYWNkODdlYzdlZWU3NGNjMmEzNzNlYjQwIGxlZ2FjeS10cnVuaworNDI4MDcgNGYyYWY1NmQ4ZWJlNGQwMjdlMTMzM2RhOTllMDNhMWU2NTMyY2YwZCBsZWdhY3ktdHJ1bmsKKzQyODA4IGJjMDc5N2IwNmE5OWViYzZlYTY3NWI1MTcwODMyYmRlYjdjNTg2ZTAgbGVnYWN5LXRydW5rCis0MjgxMCBkMzhhYjVjYWQ5NDViMzU0YzMxZjEwMTE0MDM0YjY1ZjBhMDgwMjA4IGxlZ2FjeS10cnVuaworNDI4MTEgYmI1ZTMwNDY3ZmU0ZDE3NjJlNTA4MTgzOTU1ZWQ4YTczNDE1MmE4MiBsZWdhY3ktdHJ1bmsKKzQyODEyIGMxYzQ2MjEwYjRiN2U0MGVjYzVmNTM3Mzc2NTE0MjY5YzI4MWRiZjggbGVnYWN5LXRydW5rCis0MjgxMyAxMmJjZDE2YzMxYWRlNmZkNDUzY2E5NDQwNmNiM2ZiYTZmNGMxMGJkIGxlZ2FjeS10cnVuaworNDI4MTQgZDAyYjRjZmVmYTBhMGJlNjBjZGVmYjA3MjAzNjRhOGEwODUzYWI4MCBsZWdhY3ktdHJ1bmsKKzQyODE1IDdhNmIxNzRkZGVmMmYxOGUzMGQ3ZWZjNzk0NTQ1YzMxZDhmYTliMDggbGVnYWN5LXRydW5rCis0MjgxNiAwN2YzMzBhZDFiNDc1ZTJhYjc1NmJjNzMyMDBmMmFiMjQwZGY5NDk1IGxlZ2FjeS10cnVuaworNDI4MTggOWI5ZDgzOTFiNjcxY2M1ZjBlNTY1MGIyOTNhZTRiODAwMjk0ODhkOCBsZWdhY3ktdHJ1bmsKKzQyODIwIGRiNjEzMWM1YWU1YWJmMjA4ZmRlMWIzODRmOWVhNzBjNWMwMWUwYWUgbGVnYWN5LXRydW5rCis0MjgyMSBiMjQxNmZhYjEzZmU2ZDNmZDNkNTdlM2EzNGExYmFlMmEyMDMzOWM1IHJlbGVhc2UyNC1tYWludAorNDI4MjUgMWY1ODQxNjRlMDEzMTc2MWE1YWMyYzFhZWYxNTFkN2YzMjFmNWRjOCBsZWdhY3ktdHJ1bmsKKzQyODI2IDY1M2Q4NTg1ZjA4MGEwMTc5NjE3OWJmNTRmODYwODIxMjVjYTg3MWUgbGVnYWN5LXRydW5rCis0MjgzMCA3NDcwMWU0ZmNkYWQwZjk0ODU5MjA1YTExMTE0M2I3MmVmMWZmNjU5IGxlZ2FjeS10cnVuaworNDI4MzEgYmFjNmJkMzQzYTEyNDdiODA3NWIyMWMyN2RmNzU1YzZmNmMzMWZmMSBsZWdhY3ktdHJ1bmsKKzQyODMzIDNjNTE5YTYxMmJkYjdlY2EyNDMyMTM3MTk2ODQyZDc3ZTcyZjNlOWYgbGVnYWN5LXRydW5rCis0MjgzNCA5ZTgxNzg4YjBkNGI1OTEyZDMyZjlhMDU5Njc3MzcyNDRmZjUyMDk2IGxlZ2FjeS10cnVuaworNDI4MzUgMGI3ODA5NjYwNDU2Zjc5MjJkMDYzMDY3MTViNjc1ZDU5MTVkZTk2OSBsZWdhY3ktdHJ1bmsKKzQyODM2IDkxMDliMWEwZDI2NWUxYWVmYzZmYjI4M2Q2N2VmODI4ZGNhOThlMDMgbGVnYWN5LXRydW5rCis0MjgzNyAwMWJjOGVlM2QyZmY4NDZjNGY3YTMzYTYxOWUwYjI4NmI1YjI1ZDFhIGxlZ2FjeS10cnVuaworNDI4MzggM2EzYWVkNDliMjQ1NmU5MTdkOGI2NjIwNjM4ZDYyNTE3OWY4YmUzZSBsZWdhY3ktdHJ1bmsKKzQyODM5IGRlZGMyYzk0ZDExMjYyNDQxODU2MmNlZDAzYzA0YzliYzUxYjZmN2QgbGVnYWN5LXRydW5rCis0Mjg0MCA3YzFhY2E4ZTNkN2Q3YTVhYjkyNTViZjMxZTQ5NTRiNWU1ZDUyZDdhIGxlZ2FjeS10cnVuaworNDI4NDIgYjE5MjllOGQxNWY5OTk5NDRhNTJhN2NhZjY3OTQxZTdiNDVlYzE3YyBsZWdhY3ktdHJ1bmsKKzQyODQzIGQzZDBkZDkyYzczMWFiN2UwYWM0N2JmMmFkNDFhN2U1MjRlZGM5NjIgbGVnYWN5LXRydW5rCis0Mjg0NCBhOTY5YmQxNTc4OGY1MTQwNTE3N2Y5NDMyYmFmNjEzNWJjZDcyYzM1IGxlZ2FjeS10cnVuaworNDI4NDUgMTg0OGQ3NWJiZGIzOGJkNWM0NGJkMjc2MDAwZTllYzFlNDkxMTJlYiBsZWdhY3ktdHJ1bmsKKzQyODQ2IDQyODRiMzMyNGNlMmU0YjY0MWQwYTI3OGM0NzM0NmQ5YjBjZjljOTkgbGVnYWN5LXRydW5rCis0Mjg0NyAzOTFmNzRjOWMyNjM2ODA5NzAzNmZjNGRkNDA5MDQ1YzMzMmNhYWE3IGxlZ2FjeS10cnVuaworNDI4NDggYWRiYWE5ZWJhOTc1NDNkN2ExMWQzZTk1NjU3ZTNjMWRlYjA4OTM0YSBsZWdhY3ktdHJ1bmsKKzQyODQ5IDRjY2VmNDc4ODFmNzlkOTM4ZjkxMjU5ODgxODkyOGEwNDkzZWQxMGYgbGVnYWN5LXRydW5rCis0Mjg1MCAyZDFkZjI0ZTMzZGY3MTBlNGQzNjdjODgyZjFjNjdiMDdhNmUxZDA5IGxlZ2FjeS10cnVuaworNDI4NTEgM2I2NzVhYzlhOTI1NGUxMjA1ZDAyNTA0Njc3MzcyMDU5OGJjNDg5OCBsZWdhY3ktdHJ1bmsKKzQyODUyIDhjZDE1Mjc0NjM5ODc5N2Q4NmQwZTc2YWEwNjYwNzI4MzcyOWRhYTYgbGVnYWN5LXRydW5rCis0Mjg1OSA2YWFhZGJhYjM1MzAxNTVlYzE5ZDgxY2RhM2JkYWJiMzA2MWZjNmYxIHJlbGVhc2UyNC1tYWludAorNDI4NjggZjgwY2E3MTNiYjRiZWEzNTM5MzkwYzIxMTM3NTY3YWViZWQwMTljNSBsZWdhY3ktdHJ1bmsKKzQyODcwIDliMTNkYTY0N2E1ZWJiNTUyYmI4N2YwOGE1OWUwM2M2Y2Q5MzYxOGEgbGVnYWN5LXRydW5rCis0Mjg3MSA4ZTBmMGZiMTRkMzU4YjdiZmMyNWFjYmFmZmZmM2MzZTRhNTY1MTFmIGxlZ2FjeS10cnVuaworNDI4NzIgMjA0YzMwN2IwMWNlNTdlYzM3ZmViMWJmZjNkZGM2MzJlZTZhZmQzZiBsZWdhY3ktdHJ1bmsKKzQyODczIGZlMDczNmNjYmE3NTUxODA3MjM0NjM3M2I5ZjMyYzU4NzE5ODllNGUgcmVsZWFzZTI0LW1haW50Cis0Mjg3NCBjZDcyZWI1NWQ1ZjhkOGNjYTcxYjkwYjQ1MjRjNGE2NTA1OTY4M2ViIGxlZ2FjeS10cnVuaworNDI4NzUgN2ZhYzVkNzlkMDQzYmZhZTk3MTExZjA1NzRiYzlhNzBiMGRiNGMyYiBsZWdhY3ktdHJ1bmsKKzQyODc2IDRmNjI4ZWNjMzBjYjJlYjRlMjNlOTQ1ZWMwMjVjMjdjOTcwMDFkNmIgbGVnYWN5LXRydW5rCis0Mjg3NyA4ZWJmNzk5N2M2Y2Q1NmU4M2M4M2Q2ZjMwZTQ4NWE3MGU1M2NjNTQ2IGxlZ2FjeS10cnVuaworNDI4NzggODk1MDc0ZTVlZDNhYjgwYTQ2M2IxMGU2YmE5OGNkMDY1OGZhZjFhMiBsZWdhY3ktdHJ1bmsKKzQyODc5IDFlMDQzYTEyNWJlNjgzZjViNDEwNDc4ODM1NDcxYzdiZTg3ZTYzYzMgbGVnYWN5LXRydW5rCis0Mjg4MCAyZDI0ZjNhMzdhMWIzNWY1MzQzZTBhMDExMTY4NWQxM2JlY2E2MzZmIGxlZ2FjeS10cnVuaworNDI4ODEgMWUxOTEzOTJlYzVjNjE4MmVjNjZjY2UxNjM5MzYyOGM4NTAwYTU3MyBsZWdhY3ktdHJ1bmsKKzQyODgyIDE1ZDMzMjk1NjE1ZjZmMGE0NGE5ZmY4NzgwNzMxM2YwYTc5MTkwYzAgcmVsZWFzZTI0LW1haW50Cis0Mjg4MyA5ZWIyNGY5MmE3ODRiZjBjZWE2NmNjMmJjYzY2YzFlZGVmMmE0ZjBlIGxlZ2FjeS10cnVuaworNDI4ODQgYTczNWRmNTUyZjAyZDlmYTE5OTYzMmIyNDQwNDg2ZTA5ZWI1NmI5NCBsZWdhY3ktdHJ1bmsKKzQyODg1IGU2Mjc2N2U2NGRlODE5NmM1MjEyZjg0YmZjMTlmOWYxMjhhMmMyNTQgbGVnYWN5LXRydW5rCis0Mjg4NiBjOTEyMTU2NDJkY2Q0NWRlMDBlMjdjZDczZjFlNTNiOTQ4M2Y4MmFjIHJlbGVhc2UyNC1tYWludAorNDI4ODcgNDU1NjcyYThmODc3NjFjNzBlYjY0YjAzZjg4ZDA4ZjhjMDhkODExNCBsZWdhY3ktdHJ1bmsKKzQyODg4IDI1N2FkODlkOTJkZjg0NTIyMzZiOGZlZDY3ZWI4MGFlNDI1NmIwZmEgbGVnYWN5LXRydW5rCis0Mjg4OSBiMTZlNTA0NDEzYzNiODM0NmM1OGExNWZiOGYxNWEzMThjODQwYTRmIHJlbGVhc2UyNC1tYWludAorNDI4OTAgNzhjOWFjYmI0NjNjMzNhZjNhZDU2Yjk2ODQxMDA2NDE1MTU5YjE3YSBsZWdhY3ktdHJ1bmsKKzQyODkxIDliYjU5MGEwYjdmYjA0YTY1NjBjNzNlMzdlZTJjOGIzMWI2Y2FkZDkgbGVnYWN5LXRydW5rCis0Mjg5MiA2OGEwOTQzZGJiZTUzM2RiMjhjYjI2YjdjZmQxNzE1YWRmYjc4YzQxIHJlbGVhc2UyNC1tYWludAorNDI4OTMgY2E0YmJjYmJkMGQ1OTUwZjEwMTFiYzkxZDY2MGRkNjE2ZDAyMThlYiBsZWdhY3ktdHJ1bmsKKzQyODk0IGU5YTdhMjc4NGUxN2VmYmJhMjMwOGUxYWNhZDY2N2ZjYmJlZmQyODMgbGVnYWN5LXRydW5rCis0Mjg5NSBhY2NmYjE1NmY5Y2M2NDFlYWY0YzIzYTM5ZWU3NGExMmNkOTI1ZTIzIHJlbGVhc2UyNC1tYWludAorNDI4OTYgOGQ0MWRkYzMxZTYxZTYzYjIyZTEyN2YyYTViZWRkZDg4MTY0NmZiMSBsZWdhY3ktdHJ1bmsKKzQyODk3IGIyMmM0OGZlNjJhNGIyODY0MzhkYTc0NGEyYTM1NTI4MjJmZWJlMjYgcmVsZWFzZTI0LW1haW50Cis0Mjg5OCA0NzA2YjdhMTI1NmMyOWM3NDk3ZTk0Yjg2YjdiNzQ5NTM3MTkzYzJlIGxlZ2FjeS10cnVuaworNDI4OTkgNmE5YzcxNjViMTdiZGI3Yjg1MTM2ZTFlZTEzMTU4ZGFjMjgwNjQ3ZiBsZWdhY3ktdHJ1bmsKKzQyOTAwIGIxN2RhNWUwYTY5N2EwZmZkMTkxZDVmODBlODE2ZTY0OTE4NmE0OTMgbGVnYWN5LXRydW5rCis0MjkwMiBjZGU3NTczMzU0OTI5ZmJiOTY1ZTUwYmYzNjIxNzRlMTEwMDQ2OGIzIGxlZ2FjeS10cnVuaworNDI5MDMgZGI1NmY1NzBiMGNhMTIwNWYzZTQ0YmVmMGNkYzFjYWMzMzA2ZThhMiBsZWdhY3ktdHJ1bmsKKzQyOTA0IGQzNDJiMGRjNDkzNDE0ZmIyMzRjNTk5MjIzODI5MTI0ZTliZjM3MzEgbGVnYWN5LXRydW5rCis0MjkwNSAxM2I5OGQwYTdiYWE4YjZlZmJlMmQzZjFiZGUzMDE0MWFmYTg0Mjk0IGxlZ2FjeS10cnVuaworNDI5MDYgN2NmNWQ5YmE1Zjk3ZWFhM2E0ODY3YTAzYjljYmYyOTQwYjdlOWRmYSBsZWdhY3ktdHJ1bmsKKzQyOTA3IGI0OGJhN2NmNDU3NmViNWNhMjg5OTJlODI4ODA4MDQxNzIzMTQ3ZWEgbGVnYWN5LXRydW5rCis0MjkwOCBmNmI3ZTBjMzg0ZGE5ZmRkYzMwZjUwMjA5OTg4Y2Q4NzQ2NjE1Yjc1IGxlZ2FjeS10cnVuaworNDI5MTAgYTk2OTdkZTVlMThiZmY0MjAxM2JlMDQ4ODhiYTg5ZjMzMDQ1YzczZSBsZWdhY3ktdHJ1bmsKKzQyOTExIDYzMmE0ZGFhOGQ0YWZlMTUzNzNkMzNjMzJjZDkzOWZlOTQyZGYxOTkgcmVsZWFzZTI0LW1haW50Cis0MjkxMiA0YjM0N2M2NTQ2MzVmNmE1ZTUyZmMyZWJkMTMwNzlmN2QzZjQzMzZkIGxlZ2FjeS10cnVuaworNDI5MTMgNTUyZGQ1ZmRiOWQ4NGZjNzgxMTVmNGJiZWQyYzUzNDBkMGY3YWIyMiByZWxlYXNlMjQtbWFpbnQKKzQyOTE0IGZkNzM1NTk2ZjY5YzFjYmMzODA2Y2UwODM5OTdiMTM5NTRmN2ViODMgbGVnYWN5LXRydW5rCis0MjkxNiA0MzVmN2YzYzhiNmRhNDc1ZWFlNWQ0NjllMmNkOTYyMzIzMzIxZThhIGxlZ2FjeS10cnVuaworNDI5MTggNmYyZWRhNDk1ZDlkZTZiNjhmMTg1MmUwZWI0NDYwMzRiMzc4MTUzMCBsZWdhY3ktdHJ1bmsKKzQyOTE5IDI3OTA1ZWJhZGRhYjVkZGFjNWZlMDI5NTUxYTRlNjdjNzU0NWJkZmUgbGVnYWN5LXRydW5rCis0MjkyMCAwMDIzYzBjZjhmZWJjMGI5YWYzYzEyNTE2NTAxNDIwMTdlYjllOTc5IGxlZ2FjeS10cnVuaworNDI5MjEgOTIyN2FlM2RiN2VkMWUyYTRhZjQzYjJjN2MyODcxNzIxYmYzMTYxZiBsZWdhY3ktdHJ1bmsKKzQyOTIzIDEyYjA4MTIzZWNiY2NkODJlMTg2NDhjOTgwZTUwYmIwNWRkOGMyMjEgbGVnYWN5LXRydW5rCis0MjkyNCA0ZGVkYzA1YWQ2YjQ3NjRhYTUyYmQ1MDQ0OTg3ZWU0NGRlZDFiN2UyIHJlbGVhc2UyNC1tYWludAorNDI5MjUgMjEwMzNiYjdlY2JlMTlhMTE0ZTc1ZTM2YTc1MWIyZmNmZWMzMDQ5MSBsZWdhY3ktdHJ1bmsKKzQyOTI2IDU2YTRjZjJiMDJmZGRjZmRkNzY2ZjM1Yzc2MmFkM2U2MDFmMDk2ZjMgbGVnYWN5LXRydW5rCis0MjkyNyBjYTI5ZGRhNTYzYjdhNDZhNGZjZTMyN2M1OGViMzE0MmExYzJhMWZlIGxlZ2FjeS10cnVuaworNDI5MjggOTAyZWYxZGMyOTc5YjZjYmY4MjgxN2UzNWEzODBkNGE3MThkNzQwYSBsZWdhY3ktdHJ1bmsKKzQyOTI5IDY5ZWI2ZDFiOTlmNTZkNmE2NDQ5NTJjZDA4Mjc2YWFiNWM1ZGY0NzUgbGVnYWN5LXRydW5rCis0MjkzMCAzZTJiNTc0NzAzOGZmZmQ0NjU3ZjM0Yzk5NzBiM2JkMWQ0NzdjNzQzIGxlZ2FjeS10cnVuaworNDI5MzEgMGJmNTM2MzkwMTRhOTRiYjNlMDgzZmQ0MTk5YjkwMzM0NDAyNjhjMCBsZWdhY3ktdHJ1bmsKKzQyOTMyIDkxYTllMmUzMWU5MzBkNDYxNmViZjA3YjJlOTMzYWE1YjU3YzI3N2IgbGVnYWN5LXRydW5rCis0MjkzNCBiNGU4OWQyOWJlYThjNDVjZjJiYWFhY2M5ZDFmMTBiOGRjMmUxMzc0IGxlZ2FjeS10cnVuaworNDI5MzYgYjIxODRkOTEwYTAwZjgxNjk2MzY0MjhkZTY5MjQyMTAwMjBjODE5MCBsZWdhY3ktdHJ1bmsKKzQyOTM3IDBlMzZlN2M2NmI4ZThhNWEzZmUyOWZiMTA5YTAzZGM3OTRmYThkZGMgbGVnYWN5LXRydW5rCis0MjkzOCBmMWVhYWU3Zjk2MmQzZjdhMWFhZDMxMjk0YWM1NTJhMDEyNTMxMTU3IGxlZ2FjeS10cnVuaworNDI5MzkgMThmOTExZGRlM2UyNDAwZGRlYjBiZGQwMmVjY2VlYWZjYzRiZDg2NSBsZWdhY3ktdHJ1bmsKKzQyOTQwIDUwMmE2ODg4Nzc4Mzk5OWJhZjU4NDg0MTAzNTBhOGMyMGQzZTgzY2QgbGVnYWN5LXRydW5rCis0Mjk0MSBkNDBiNDhkZjgzZTc5NGQ5YTJjMDQwMGE5NTg1MDFmZjBiMzBjYjBhIGxlZ2FjeS10cnVuaworNDI5NDQgNmU5YjM2ODc4OWRmMGNlNTY2M2UzMWE1MjM5M2ZkMmRmZWMyNjkxOCBsZWdhY3ktdHJ1bmsKKzQyOTQ1IDM2NTJiNTEyOGI3MDdkZTgzMzExNDBiNmVkNzIzYTMxNmQ4YmJjOGIgbGVnYWN5LXRydW5rCis0Mjk0NiA3OWQ1YjdmNzdhYzQ1OTRmMzM3ZTY0NGMwZmM4ZmE5MzEwYzVmNzg4IGxlZ2FjeS10cnVuaworNDI5NDcgOTdkMzg3OTdiOGJjMDk3YWIzZjBhM2I3MzFiZTFlMDlhZDkyNWM4MCBsZWdhY3ktdHJ1bmsKKzQyOTQ4IGQzZDJmOWZmZGMwNjU0MGM2YjllYWE4Mzg2YTcxYTkxOWE1Yzg0MDggbGVnYWN5LXRydW5rCis0Mjk0OSA4MDU4MDAxODFlMGUxOWZlNmNhMmNjMDFjYmE4OWU3YmVmNmMxZGZmIGxlZ2FjeS10cnVuaworNDI5NTAgNDhlMGE1ZTM5NDAzYmExZmYwZTQ3YzNkYzcxMWY5NTc2OGI1MWZiNSBsZWdhY3ktdHJ1bmsKKzQyOTUxIDdjMTdlOTIyMWY5NDFmNmExY2RkNDA3MWRjZWNmYTJiZGQ2MjMwMWUgbGVnYWN5LXRydW5rCis0Mjk1MiBmYzEwZmYzMjJkZjFiNzkzZWQ4NWZjODI0MjVhNWIzNDkyZDM4ZmY2IGxlZ2FjeS10cnVuaworNDI5NTQgMzI2NmEwMjBhMGRhYjdmMGE3Mjk0YmFlOTgxZjZlNDRiOGFmYTIxZiBsZWdhY3ktdHJ1bmsKKzQyOTU1IDExZjhiNWI4Y2UyMDE4Nzg2OWE5ZTk3YTJiYTA3NzZlZjc1ZmQ0YzcgbGVnYWN5LXRydW5rCis0Mjk1NiBmYWI0NGM1YzhkZjQyYjk1MzExZTc1N2UzMDVmNzkxMWI4ZTVkNzA1IGxlZ2FjeS10cnVuaworNDI5NTcgMmE5MDU2ZjRjMTY0NzY2MzQ2NjA5MTYyN2MyZDZmZGQxNGVkYzBlMyBsZWdhY3ktdHJ1bmsKKzQyOTU4IGRiNDY1MDQ5M2MyYjhlMzkyYzk5MmFjNTIzMjQ0ZmRmNmUxYmRmNDcgbGVnYWN5LXRydW5rCis0Mjk1OSBhZTU5ZmNlZDJlMTQyZDRhYmZkMjJjN2IxOTc0NzIzNWViM2I3NzkwIGxlZ2FjeS10cnVuaworNDI5NjAgZWJlYmE3MzUzODk0N2RmMzI3MDBmODM3Yzg1ZDQ1YzIwMTgzMTllZSBsZWdhY3ktdHJ1bmsKKzQyOTYxIGYxMjBmNzQwYWJlNDFlNjc3YTYxYWYzODA5N2ZjNWNmZWU4M2JjYmQgcmVsZWFzZTI0LW1haW50Cis0Mjk2MiAwNmUzZjYyN2FkOTk1ODk4OWI1NmVkODlhMGRjZWQ2NTNhYTQ2MWJhIHJlbGVhc2UyNC1tYWludAorNDI5NjMgZTI1NmI1MzAyYjU1YzM4NDcxZTNjMjU3MzNjOTcxZmJlMDA5MmI4YyBsZWdhY3ktdHJ1bmsKKzQyOTY0IGRmNDNjMDRkMjU1NDVlZDRiYmRlNWMwM2RlOTRkMjljYjQxYjA3ZDUgbGVnYWN5LXRydW5rCis0Mjk2NiAxZGQ2NTIwNGMwOWZlN2Q3OTFmNjE5ZmViNWI1NGNhZDExNjcwOTY5IHJlbGVhc2UyNC1tYWludAorNDI5NjcgMDNlZjk4NzA0M2NlMDBlOTA0NDkwZmNmOWY2NDI5Mjg3NDQxOGQ4ZiBsZWdhY3ktdHJ1bmsKKzQyOTY4IGU0NDY1ZDI3MzdjNGU3NWRkNmU0MWMwNjEzNWE2ZTRlYWFlZGM3ZmQgbGVnYWN5LXRydW5rCis0Mjk2OSA2NzE4NzdkMjJhMWNjODgyOGYyNzNkZjIyYjFjNGMxMGU2MjM2MWM0IGxlZ2FjeS10cnVuaworNDI5NzAgNGI4NjdlNjU0YThhNGNjMDczMWViYzM1ZmFmMWY1MzU4NTUxOTZhYSBsZWdhY3ktdHJ1bmsKKzQyOTcxIGYwNjEyNWE5ZDQwNjM1NzE1ZDk2ODUyZTNiZjM5Y2Q4NTMzMzZlZTAgbGVnYWN5LXRydW5rCis0Mjk3MiA3MzUxYWFiODdlNmRlMGZiM2JlYzdlNGQ5ZWI4NWRmNzBmYTVjMDk3IGxlZ2FjeS10cnVuaworNDI5NzMgMGYxOWE2ZmM5NzU2MDdhNjBhNDAyNmRmOGIzYjkzYzAxMWYzM2UwMyBsZWdhY3ktdHJ1bmsKKzQyOTc0IGZkYjA1YzhhZDUzMzNhMzkxNzgwN2U1ODZlZjQ0YTVhODNhZDJiZGMgbGVnYWN5LXRydW5rCis0Mjk3NSA0MDI1NmI1NGM3OTA2MGI2MDRkNjAzZGMxMjNiMGE4Nzc2OGI2OTcxIHJlbGVhc2UyNC1tYWludAorNDI5NzYgNjkxM2ViYTc4ZDQwNzkxMGMyZmU2ZTlkOTFmMjg3OTE3YWJlZjYxYyByZWxlYXNlMjQtbWFpbnQKKzQyOTc3IGM3N2VjZTY2NzA5ZDE3ZTU3NDk1NTJlMjE4MjA5MzIzNDNhNTNjNjMgbGVnYWN5LXRydW5rCis0Mjk3OCBhYjAwMzE5YzM3NDQ4NjEwNTRjYjEwYjllZmJhMmFmYzc5MWYwZTZkIHJlbGVhc2UyNC1tYWludAorNDI5NzkgOTdmZWQ2MThiNWU3MjNhNGZhM2FjZTQzNjliMTllMGNlZDg1OTNmNCByZWxlYXNlMjQtbWFpbnQKKzQyOTgwIDFhODQ2NWJhZjA3ZGQ0ZjcyOWFiZTI0ZmVkNzU4NjU3NGFiZmQ1ODIgbGVnYWN5LXRydW5rCis0Mjk4MSBjOWU0OTEzOGY2NTliMWUxNDk5MDdjMmFlNTI2NDgzNmJiMGIzNTIzIHJlbGVhc2UyNC1tYWludAorNDI5ODIgZGI1ZTcyMGIwY2VmOWUyOGZiY2MyM2U3ZmMyNDc1YTBkMmZjYWU0NiBsZWdhY3ktdHJ1bmsKKzQyOTg0IDk1ODQyNTAwN2VhNmE4YTY5MzVkNmE0NTg4M2ZkMTMyMzRmNjdlNzcgbGVnYWN5LXRydW5rCis0Mjk4NSAzYmUyNDI1ZDc3NDAwZDg4NzI3ZTQ5ODY3MWNmMzFiOThhMzA1MGFmIHJlbGVhc2UyNC1tYWludAorNDI5ODYgY2I5ODRhOGIxMTM0MmYwYmUxNjFlYjQ4ZGQ5MzdhMjk2ZmZjOTQxYyByZWxlYXNlMjQtbWFpbnQKKzQyOTg3IDQzMDliM2ZiNWI0MzVlZWE5MDIxYTExNTljNDI4ZTAwOWE0NzU0YzcgcmVsZWFzZTI0LW1haW50Cis0Mjk4OCAzMmI4NjhhNDk2NTkzMDljOTU5MzE5YzIwYmY4OTk1NWE5MzZmODhmIGxlZ2FjeS10cnVuaworNDI5ODkgM2FkNDJmOTlhNmRiYjdmZGMwNDdlMGM5MDY1YjUxMzZiYjk2OTdlYyBsZWdhY3ktdHJ1bmsKKzQyOTkxIGRkYTQyNDFmOWFiYzdlYTFlZGQyOWY4NzViNWExMmViMjE0ZTliNjIgcmVsZWFzZTI0LW1haW50Cis0Mjk5MiAzZDdhZGY4ODc0YWM1OGI4Mzg2ZmNmOTNhYmRmNzUzZjkwNzgxZDA4IGxlZ2FjeS10cnVuaworNDI5OTMgODI5MmUzZTZlY2ZlYTk3YWQyOWUxN2ZjYzAwMDM2YjFjYTAwYTM2MCBsZWdhY3ktdHJ1bmsKKzQyOTk0IDdlYjJjMGYwZDBmZDY2NTEyNmQxYTVlMjhkZjVhN2NiNGE1YmMxNzMgbGVnYWN5LXRydW5rCis0Mjk5OCA5YTA4NzI0MTEwZDBiZWI5NmRiODFjMzI5NmI2ODY2MjBhMGNmM2VlIGxlZ2FjeS10cnVuaworNDMwMDAgMzIxMDNjNWRiZWZhYzNlMmJjZGJmZDQ2OTI4MDkyYjA3MzBmYTE0ZiByZWxlYXNlMjQtbWFpbnQKKzQzMDAxIGE4ZmQ5MWNkMzE3YWNiYjg5MTA4Y2U0NjU3Mjc1MTAzMTU4ZTY1ZTQgcmVsZWFzZTI0LW1haW50Cis0MzAwMiAxNWE0NTgxNzFlYjAwODkwNjM1YTkxMWRhNjRjNjJkZDllYzA2MjI1IGxlZ2FjeS10cnVuaworNDMwMDMgMGMwNDA4MzUyZWU2OWNhZmVkY2FhNDY1Y2ZhMWMwMjdlM2UzZjZiZSBsZWdhY3ktdHJ1bmsKKzQzMDA5IDAzNWNjODQxNDdmYjA0ZTQ4OWZhMDdhZDkyYjFhZWNjNDY0MTliZjIgbGVnYWN5LXRydW5rCis0MzAxMCA4NTE4OGU1YjQ5MTJmNTRiNzEwMDQ4YmJjNjAyMDk5MjdmNTk5YjEyIGxlZ2FjeS10cnVuaworNDMwMTEgYjVhMTM1NzA1OTJkZGM5NDcwN2M2YzhmMmFiYmE1ZDgxMmM5MThjMCBsZWdhY3ktdHJ1bmsKKzQzMDEyIDZiMWIzMmE4NWY0NzYwMWQ4ZmM5NmE5NzgwM2EwOWVkNjRkMTNlNjMgbGVnYWN5LXRydW5rCis0MzAxMyAyOWU2ZTdhMTA3ZGUzOTIwNWM1NDBhMjg2N2M0YzI2Yzg2ODc5OGQ0IGxlZ2FjeS10cnVuaworNDMwMTQgYmRhZmNhMjE5MmQzN2ViMWYxYWYzMDA5NWY4NTU1YmUzOWI0ZGFkOSBsZWdhY3ktdHJ1bmsKKzQzMDE1IDhjMWJmNzk5OTUyY2YxZDAzNDViMDcyYmMwZGI0MmIzYWRiNzczMjMgcmVsZWFzZTI0LW1haW50Cis0MzAyMiA5NTQ2OWU5N2ZkOTAwMGFiMjhjNzBmOTk2NGI3Mjc5ZmUxYjIwMThhIGxlZ2FjeS10cnVuaworNDMwMjMgNDgwOGVlNjJiMTU2YTYxOWE1OWMyYTgyNTQ4NjUxMmExOWJkZWFiYiByZWxlYXNlMjQtbWFpbnQKKzQzMDI0IGIzYzM2NDBkOTJmODRhMTJlMDVlMjk4NDU4MTU1YzA3MGYzNDYxMzMgcmVsZWFzZTI0LW1haW50Cis0MzAyNSBjOGZmYzkxM2QwMTQzMDU3Yzc1MDMzY2ZjZTEyM2MwMjRiNWM2NzUzIGxlZ2FjeS10cnVuaworNDMwMjYgZmYzMDI0MjU5ZDkxZDcyYmFlN2E3YzNjN2NlZGUyMjMyMjBlODkzYiBsZWdhY3ktdHJ1bmsKKzQzMDI3IGUyYWI3NTVhZTY4NTgwZTBjMDIzMzhiNTg5MThlYjkxMDNiZTdmMWYgbGVnYWN5LXRydW5rCis0MzAyOCAyMmZmZjFmM2M3OGFlNTQ1MTg4MWQwNzE5NjVhMzIzYTkzOTZjZWNjIGxlZ2FjeS10cnVuaworNDMwMjkgY2RlNThjZDA3ZTdkODUwNDNiZWU1ZjMyYjY4YzhlNDc4MjcyYmQ2ZCBsZWdhY3ktdHJ1bmsKKzQzMDMwIDRhODk2ZmMxMjM4NDI3MjQxOTM5YmY4MGRkNDBiYzBmYTA0MmQ0YmQgcDN5aworNDMwMzEgNTcwYzYxNmFjZjBjMTRlYzdhOGVmMjc0MzdlMTQzNmYzYjI5YmMyMCBsZWdhY3ktdHJ1bmsKKzQzMDMzIDM3NWNlMWMwNGU2NmI1OWIxZjcxM2Q1YTU0MzZkNGQ0Y2U1YjA4NzMgbGVnYWN5LXRydW5rCis0MzAzNSA0OWM2ZWI2ODg5MDZiMWRkZGFiZjU3OGYwODEyOWU2NzI5ZDYxNTFmIHAzeWsKKzQzMDM3IGFiYTgxNGFhNGM2YTdiZDgyZDFhMzNmMGM0YzA4ZTFjODExOWRmZjUgbGVnYWN5LXRydW5rCis0MzAzOCA2OWNiZTBmYjdhNmQyMDRiMDE5ZjJiYzMyNjczMzRlOTEyMzRiMTgxIHJlbGVhc2UyNC1tYWludAorNDMwMzkgOGU4ZDBlMDNmMDc2YTI0MmMyYjQwN2NmNzk1ZDFlNTMwZTgzZmE4NSBsZWdhY3ktdHJ1bmsKKzQzMDQwIDI1MWY5MjFjYzgxZGNjMWQ5YTU1ZjI1ZmIxYzY0MWZmNjA2YmIyMWMgbGVnYWN5LXRydW5rCis0MzA0MSA1ZmI1NGVkODU0M2JiMDczYmJmODkzNGQzMDVmZDg4NjFiNDVlMTNhIGxlZ2FjeS10cnVuaworNDMwNDIgZDk2OWUzMzlhYzFlNTM3ZmZjNjQ1YzBiYmQyODE1YTkwYjZiMTFkMCBsZWdhY3ktdHJ1bmsKKzQzMDQzIGY5MTQ2MzBmNDE5YzFjNGU2ODEyMmZiNmRjN2NhNTc0ZWQyNGEyNTcgbGVnYWN5LXRydW5rCis0MzA0NSA3ZmE0YzI5ZDcwMzAxNWE3OTgxNzllMmQ4MWJmOTYwYzlhMTA5OTgyIGxlZ2FjeS10cnVuaworNDMwNDYgOWQzYTJjZGUwZGJkMzBmOWM3MDVlMTA4MzM2ZjYzZDdiNGIwMjIxNSBsZWdhY3ktdHJ1bmsKKzQzMDQ3IDQ1MWRhM2E1MjkxMzE2ZGExZTg4NzU5ZjYyYWE0OTk1ZWRlYmI1MDAgbGVnYWN5LXRydW5rCis0MzA0OCAxNzkwODQ4OTlkOTY5YjM3OTU1NmRmZTYwY2VjZDMyNzA3MzNkNjAzIGxlZ2FjeS10cnVuaworNDMwNDkgODZmMTMzMDFjM2RiNDE0Y2ZhZGNhNDU5YmUxY2MwM2U3Yzg5NzY1ZiBsZWdhY3ktdHJ1bmsKKzQzMDUwIDU1ZTRmNDc2NTc2M2VjZjY2MjBhYzNjYjlkNzI5YjJmNWVjOTVkMzUgbGVnYWN5LXRydW5rCis0MzA1MSA1YjM4ZGM1NTFmODZmOGM1YmViMjMzYTA3MGM0ZWU4Y2JmZTA5MWNjIGxlZ2FjeS10cnVuaworNDMwNTIgNGY0NDQxMmU5ZjZjMTI3Y2I1YTIwMGRlMTdlOGJiODlkNzI1ZjRhMSBsZWdhY3ktdHJ1bmsKKzQzMDUzIDNiZjIzMDYxZDg2Y2Q5NDM1ZjU2YzQ5NDJjMzM4YjAzZmE3ZTJhNjUgbGVnYWN5LXRydW5rCis0MzA1NCA2NzM4ZjdiMjgyZjY1YzVjOTFjMDVjNDI1YmZmMDk0YTFmMjQ4MDljIGxlZ2FjeS10cnVuaworNDMwNTUgMzU0ZTIyZjNkYWM2ZjMyMmRhYzg0NmY4NjlkMmU2YjM1NzNkN2YxOSBsZWdhY3ktdHJ1bmsKKzQzMDU3IDFkZGYwZDgxZDZjNTkwY2NkY2IzMzUyMDdmZTNhNDg3NzMwYzRjYTcgbGVnYWN5LXRydW5rCis0MzA1OCA2MTRkODBkZmZjMWY4OGUyMDBmYzk3MDZhOGU3N2IxOWZmZmE0ZWU4IHRpbS1vYm1hbGxvYworNDMwNTkgNjg1ODQ5YmQ5MDVjNGFiM2QzYmM2MjUyMDM1MDM0MGFiYTkzMjUxMyBsZWdhY3ktdHJ1bmsKKzQzMDYxIDk3ODdmODMwZDAyNWI1ODVjNGFjNzQ0ZThjYzczODcyNzcwZWY5ODQgbGVnYWN5LXRydW5rCis0MzA2MiA2MjQwOWExYmM0ZGIzMmU0ZmUwYzk0ZmU5MGZmZjYyYjBkYjBmNGU3IHJlbGVhc2UyNC1tYWludAorNDMwNjMgYWIxN2RhNjg0MjZiYTg1NDI0MGEwZTlmOTE1Mjg1ZDMzZjdlYThjNCBsZWdhY3ktdHJ1bmsKKzQzMDY0IDVkMmFiNDgyM2YzY2M3ZmUyZjdhNzJmZGUxN2JmMDk4NmY3NGQ0NWQgcmVsZWFzZTI0LW1haW50Cis0MzA2NSBmMGIwYWEzNTdkNDllNDM0OWFmNWI0NWQ5YWQ3ZjBkNWU5NWVlYTNmIHAzeWsKKzQzMDY2IDI1MDA3YzE1NTY2OGRkNzRlM2QxMmNkNjJmZmU5NDQ4MDFiYWRjNzEgcDN5aworNDMwNjcgNTYwYWMxYmE5OTI3NGZiZWQ5ODdkYTJmYzYwM2ViMTYyZWQ0YjgzMSBsZWdhY3ktdHJ1bmsKKzQzMDY4IDRhZTBiYmZjNjg2NmUxOTU0Nzc3OThhZjczYTcxNjRiYWQyNGYzMTEgbGVnYWN5LXRydW5rCis0MzA2OSBkNjgzNDRkOTMyYzQ1OGY4NzY3OTExYTUyOGUwYTQ1MDA2YzU2NzhjIGxlZ2FjeS10cnVuaworNDMwNzAgODVlYWYwY2E2NGYyZTRmZjZjM2Q2NGIzMTA3NmFkYWNlZTY4MTlmYiBsZWdhY3ktdHJ1bmsKKzQzMDcxIDdkYWQ4M2NhNzAyZGIyYjA5ZGZlMjdjMjkxN2Q2YzExNjdlMjI0MjkgbGVnYWN5LXRydW5rCis0MzA3MiA0OTIwYmQ0OTJkOTg2YjVhYWQwMmExZWQ2ZDY4NTI5OWRiODdhNmMyIGxlZ2FjeS10cnVuaworNDMwNzMgNDcyN2YyNjBmNmY4ZDk2OTM1ZTBkYzljNzVjZjQ1OTZiMDBjMzYwMyBsZWdhY3ktdHJ1bmsKKzQzMDc1IDBmNmI0Y2VlYTU4MDUzOGM4Mzg2NGEwNjMyN2Y2YzIyZGY0ZjdjYWYgbGVnYWN5LXRydW5rCis0MzA3NiA0OTUzNDRmZWQyNTViNWFiOGQxYjMzYWJhOWVhMThmNzMwMmU1ZGNhIGxlZ2FjeS10cnVuaworNDMwNzcgZjcwYzAzNjQ4OWVjNDMxNzgwOGE4NDEyNGQwODQ1NDhlYjVkOTkxMSBsZWdhY3ktdHJ1bmsKKzQzMDc4IDAzODk0YTdhMzJlY2QzZmZmNDM5N2ZhM2RhMGMyMjFkNGQxZmUzOWEgbGVnYWN5LXRydW5rCis0MzA3OSBhMmE2MDQ5MzFmZjY4MDQ3ZmM2MDZjYTI4ODA4MDFkYTJhYzE5MTkyIGxlZ2FjeS10cnVuaworNDMwODAgMzAyMDNlMmI5N2Q3MzJkNWRmZjYwOTViOWJlOGE2MWI3NDFkNWNiZiByZWxlYXNlMjQtbWFpbnQKKzQzMDgxIDkyYmUyZTExNzAzMzE5NThjNTVkYmIwMmZmMDhhMjk5ODZmOTk0MTkgbGVnYWN5LXRydW5rCis0MzA4MiA4MmY3MDBmYzRkZTIwZGU1OGI3ZWRiYmNlYzZlNDNkYTJhNmRjNzcyIHJlbGVhc2UyNC1tYWludAorNDMwODMgYTI1Mzk1OGJmYTRjNDJiMzAyZGRkZTRjODlhNjVmN2QzNGUyYjAxMiBsZWdhY3ktdHJ1bmsKKzQzMDg0IGU3MjFkNjhkYmY2ZjEyODM3ZDhjNmVkYjdiNWZmMzZkMmU4NDM4YTQgbGVnYWN5LXRydW5rCis0MzA4NSAzYjMwNzIwZmE1N2ExMTRiMmYwYTA4MmNkNGExNDI5NjdjNzViMmEyIGxlZ2FjeS10cnVuaworNDMwODYgYzBhZWIxMDY1NGIyZjY2OWNlM2UzYTFlMmQwZjFiNTMwMjJkYTUyYiBsZWdhY3ktdHJ1bmsKKzQzMDg3IGZmZjRlZWNkZWY0NWY2NDE4ZGU0OWQ4MWVjMGRlMWM3MTFkZjdkZDUgbGVnYWN5LXRydW5rCis0MzA4OCBiY2U1YzdhZTY1OWE1MjUyM2VjMDZiYTA3NzUwNjg2ZDI1ZTg5NjFiIGxlZ2FjeS10cnVuaworNDMwODkgYzQ0OTk0NDA2OGQyMjhmNmUzNDQ3OTYzYzRlMWIzZDkzNGU4ZjdlZSBsZWdhY3ktdHJ1bmsKKzQzMDkwIGJmYjc0YTQyMGFjOGViMzUxNTJkMDc2MmQ5NTM3ZDQwYjQwZjdhY2MgbGVnYWN5LXRydW5rCis0MzA5MSBlNDE1ZjFhODc0YjEwOWVmYjQ3MjAzZjU3MGNhNTlmMjRlN2IxMjBjIGxlZ2FjeS10cnVuaworNDMwOTIgYTljM2M5MzgyNDY1M2UwNjg5MjFmNzBiYzM4MTVmZmI3NTYzYjY0MCBsZWdhY3ktdHJ1bmsKKzQzMDkzIDUzYzgwNmY3YTI1MDg2YzI0M2Y3ZTk3YzllZDJmYTRiM2FlZTVjZDkgbGVnYWN5LXRydW5rCis0MzA5NCBiZDM3MTUzNTNhMDliNTYyNjY3OTQ1MmI0NDAzMDE5NmU3MWQ5N2Y2IHAzeWsKKzQzMDk1IDdhZGExNmExNDk2ODY3NDYyMzE0M2QyZDA4MTE2NTkwNTI2Y2VkN2MgcDN5aworNDMwOTYgY2QxODE4ZWU3ZWE5YThjZTgzOWJmMWI3NjEwMWZkYmZjYWI3YTVjNCBwM3lrCis0MzA5NyBmZjM4MWIzODhjZmY0MmM5NzU0NDg3ZjZmZWE2ZmE2NmJiNmMyMTdkIHAzeWsKKzQzMDk4IDA4MWI0ZjBlODFiN2JhYTY4MDI1NGEzMGI3MmM0NTQ1MWQ3MWI3OGQgcDN5aworNDMwOTkgMzM0MmIzYjU4NjMwNDA1M2E3NmEwZjYzZGQ5NTBlNTEyYjZjZWFlYyBwM3lrCis0MzEwMCAzZTFlZTZlMTZjODFmOTEyZjY5MWMyNDRhZjE0NjZhMGRiNTE3YjlhIGxlZ2FjeS10cnVuaworNDMxMDEgYzA0OGEwOWQwNmZmODY3NGUwNTA5NDk0YTVlNTg2YWFjZTI3M2MwNCBwM3lrCis0MzEwMiAxMTgzOTc3NmM2NmMzMjQzNjZhNzdjMjA4OTFjZDFmYzAwNjA3ODZhIHAzeWsKKzQzMTAzIDQwNTExYmY1OTI5Nzk4M2U0OTY3NGJlZjlhMjcxMWVkZmI4Njk5MGUgcDN5aworNDMxMDQgYTAxNjcyYTk2ZDQ3MjcwNDYzNjYwYmY1NTcwOWY4NWY5ZDk2NTg1MyBwM3lrCis0MzEwNSBjZTI2N2Y2ODA2NWUyMjA5MmYxNzhlYzE3NjM2NGE3ZmMzMmFjNDRjIHAzeWsKKzQzMTA2IDllZjNmYWM1ZDJjMGEyYTk0OTYyMmU1NGY5OTMxMGUwOTBiMDEwNGUgcDN5aworNDMxMDcgZWE1YjY2YWY2MjQ1YTQwOWUyYzIzZDc2NjIxNWY4N2Q0ZTgzNTA5ZiBwM3lrCis0MzEwOCBmZGMwNWIxNjcyMzZlNzU3MjE3ZGM1OGQxNTkzZTcwZDFmYzhhNWRkIGxlZ2FjeS10cnVuaworNDMxMDkgNWFlY2VkYzk4YWY2NTU5ZTA0NTM5YWM1OTM1NDFlN2UwZTQ1NGUyZSBwM3lrCis0MzExMCBmN2ZkMTFhNzVhNmE0ZGNiOGEyM2IwZjYwYjNjYjQ3NmJkMzJiMTE0IHAzeWsKKzQzMTExIGMyYzEyODE0Zjg1NGFiZjBlMDgwYTExNWZiYWE0NTgwOGZiN2M2NjMgcDN5aworNDMxMTIgMmIwNGI5YzdiNThlYjJkMDA2ZTViNzYxMTllMzVmNTFkMzE4MzYyYSBsZWdhY3ktdHJ1bmsKKzQzMTEzIGYwMmEwMzI1NGI5MWU3N2NhNzQwMmM1OGY1NzczMTgwZjA0Yjc1MDYgbGVnYWN5LXRydW5rCis0MzExNSAyMDNjMDZmYmIwNzU0NDc0M2MyZDZkZDRhZGRjYjUzNTI0MWE5MzJmIGxlZ2FjeS10cnVuaworNDMxMTYgZDdkMTJkN2ZjYzM5MmY5Nzk2YWM3ZjhkZTk3OTM4MGI4NTU0MTBkMCBsZWdhY3ktdHJ1bmsKKzQzMTE3IDIzMDQ1ZjFlMzlmMmY5MWM4ZmQxZmE0NTNlMzQwMTgyZWQzODY0YjMgbGVnYWN5LXRydW5rCis0MzExOCA2NGM4M2UwZjY4M2U1NjZhYzZkZTAwOTZlMmI2MjRjZGY2ZTIzYmJlIGxlZ2FjeS10cnVuaworNDMxMjEgYjAxYzgwZDg4MjY3ZmU1MGFmYmIzNDY3NGJjZjNjYjM3MGM1Zjk4MSBsZWdhY3ktdHJ1bmsKKzQzMTIzIDRjODA0YWI4N2VhZGFjMGFhYzYwMjRmNmJjYjNjNjQzYjUyYWZlZDMgbGVnYWN5LXRydW5rCis0MzEyNCAxZjQ1NDk4NjVhYWRiZTU1NGFlZDQyNTk1YWVkOGFlZDFiMjU2YTQyIGxlZ2FjeS10cnVuaworNDMxMjUgZTQzZDVkMmNhNTBhYmNlYmY0YzY3ZWY2YWY4MDY0NzNhNzMxMjA1YyByZWxlYXNlMjQtbWFpbnQKKzQzMTI2IGRkNDk4NDdhNjBkMzAwZDE3NjBmMTYwN2M1MDQ0ZGEyNjUxZGU3MmQgbGVnYWN5LXRydW5rCis0MzEyOCBiMzNkOTE2Njg2OTYxNWNmMjk3NGRjODdlODkyYjY5OTE4NTZjYzYzIGxlZ2FjeS10cnVuaworNDMxMjkgOTk0OTMxYjZiODc1NDg5MjliYzM2MTJjZDhjNjU1ZDI2NTEyZDYwZCBsZWdhY3ktdHJ1bmsKKzQzMTMwIDQzYzM5M2IyZmU5ZmE0NzlkMDdkYjRiNzljZWQwMWVhNTU4YzM1NGQgcmVsZWFzZTI0LW1haW50Cis0MzEzMSA4MWQwZTkzMjA4ZDllODEwNWQyNzBkYzY2NDJkZWQ0YTYyZjE1Y2NlIGxlZ2FjeS10cnVuaworNDMxMzIgZDEzNDMwYThiZDJjZTI1OWVlOTUyODVlM2Q4YTg1YWJhNjUwYjg4YyBsZWdhY3ktdHJ1bmsKKzQzMTMzIGI1NWY1MzA0MTk2NTM1OTY0NGNhYmRjOWZiYmM1MjM4NDA4NWQ0ZWEgbGVnYWN5LXRydW5rCis0MzEzNCA2ODVlMjEyMzg2NGQzZjZhZjA0Yjg2N2NjOTA2OWE5MjMxODU1ODY1IGxlZ2FjeS10cnVuaworNDMxMzUgMzg0MDBiNjYyNDA0NzVhMjk1OWQyMTBiMmUwZjA1MjAyNmIxNDNjNyBsZWdhY3ktdHJ1bmsKKzQzMTM2IDNmOTBhOTNmZjVkMGVhOTE4ODI0YzUxZjA4MGFjNjdjZWQzYTFlZTQgbGVnYWN5LXRydW5rCis0MzEzNyA5MmNiNGE3ZmM1NTRlZmZhNjkxNmI3MWFiZDIyNWE2ZGI5ZjRmZWE1IGxlZ2FjeS10cnVuaworNDMxMzggNjc3MWYwZTA4YjYwYTIzNmYyMTZlNjY3ZmViNDEzMGIxMDhmOWQ4MCBsZWdhY3ktdHJ1bmsKKzQzMTM5IDkyOTUyYWM4ZTg5MTFmMDY3ZjU2YmViYzQ5YWNlZDhkOTU3NGNhZmUgbGVnYWN5LXRydW5rCis0MzE0MCBiYjQ5MWU1NWZiNGMyNDMzYTUxY2NiNGUxZWVmZjU2MDc4OTQ0ZjFkIGxlZ2FjeS10cnVuaworNDMxNDIgODQzOTI4YzZiMjRjZGRmNmRiOGMyNTg3Y2QyNzljZmQ4MzhhY2YwMyBsZWdhY3ktdHJ1bmsKKzQzMTQzIDZjM2VjMzczNmM1MTRkZjdhYzFkZDA4MDFmNTc0YTA4YjlhOWI5MDYgbGVnYWN5LXRydW5rCis0MzE0NCA5OTEwZmY2OWFmOTczYmUzMzljMmE3NTc5OGIwYjBlMzQ1YjFhZWFiIHJlbGVhc2UyNC1tYWludAorNDMxNDUgM2I3YjI5NWNjYTkwMmJmNzEwZmZiNzMzZGVkZGU1MDcxYTZjOWI2NyBsZWdhY3ktdHJ1bmsKKzQzMTQ2IGMwMTFhZjRhMmIwMWZkMjUxN2VlZThlM2QyYTIzZTY1YTkyZGU5NTUgbGVnYWN5LXRydW5rCis0MzE0NyAwN2FiNTU3NjI1YjljZWVmZWZjN2FlNjQzOGQ1YTM5NmVhNTk3ZjdhIGxlZ2FjeS10cnVuaworNDMxNDggMjMzNTdiODhjMDNlYWZhNmJlMjk4NWRkZjU1NmNlMTUwNWUzNWFkNyBsZWdhY3ktdHJ1bmsKKzQzMTQ5IDFkMzA4MWNiM2VhNjczNWJiMmNlNmNhOGE5NTdiZWZiYTE2NDczN2EgcmVsZWFzZTI0LW1haW50Cis0MzE1MCA3YzIyYjVhYTM0Mzg3MWRiOTRkNWVlNjMxZjRlMGFmM2E3NzY0ZGJjIHJlbGVhc2UyNC1tYWludAorNDMxNTEgOGQ0MmY2NjFmZWM4MDI5ZTFhMjBjMzQzZGJiZDdiMThhN2M2OTkwZiBsZWdhY3ktdHJ1bmsKKzQzMTUyIDc3NWNkNjlmOGEyMzdkYWZlZGI5NDcyOWU2YTEyZjY1ODkwNzkzYTUgcDN5aworNDMxNTMgNmI1MTZmMzIxZDg1MjRjYmJlZTE0ZDFlNjYxNzk4NDJjOGY5YjFiOSBsZWdhY3ktdHJ1bmsKKzQzMTU0IGIzMWI3ZWM1YTZiNDM5NDBjYjhlOTAxMGJiZTljMzJhNTg4OGU4MWYgbGVnYWN5LXRydW5rCis0MzE1NSAzZGFiZDliYjQ5NmU5YTY4Y2Q2Y2Q5NGI3NjIyOTczZmM3NjY0MDVhIGxlZ2FjeS10cnVuaworNDMxNTYgYjRkMGY4ZDk1MTc5YTQ2YmNjYjQ5ZDgwZGQ1NjEzZDA1YWUwYzI0ZCByZWxlYXNlMjQtbWFpbnQKKzQzMTU3IGRlOGY1ZDFjZGY0ZDk1ODI0YWVkM2IwZTMzZDc4ZDcyZjNiOWI1MDYgbGVnYWN5LXRydW5rCis0MzE1OCBkNjJiMTM0ODg5NDNkNzhjOWM4ZDgxNzMyMjkzMjMyYTg0Yjc5MDQ3IGxlZ2FjeS10cnVuaworNDMxNTkgODUyZGUzM2VkNDI3ZDZhNDMwZjYxY2Q4OWQzNjIyZDlhMzkwNWE4YSBsZWdhY3ktdHJ1bmsKKzQzMTYwIDJkYzYzY2RiMDljZjBkYTgzYmYxNDlmZjM1MDcwYTJkNDMzMzcyOTggbGVnYWN5LXRydW5rCis0MzE2MSBkYjk4NmJlMmMwMGM1ZDAzYTVkZTU0NWFlNjMxZWQ4MmMwNWNiZDc4IGxlZ2FjeS10cnVuaworNDMxNjIgZTgwZmRiM2EwZjQwYTk2MzliNDgxZmFmOGY2OGZkMjFhYmFmNDJjMiBsZWdhY3ktdHJ1bmsKKzQzMTYzIDc5ZTRkYmU0YmRjNmE2Mzg4MDRjNmY1NWNkOTRiYjMyYmU3ZDc2ZmYgbGVnYWN5LXRydW5rCis0MzE2NCBhMDZjOWZkMjUxMjA4Y2FkMmRlYWRiYjU5ZTk0NWMwZDgzYmRlOGI5IGxlZ2FjeS10cnVuaworNDMxNjUgZDg2MDMxMWY4YTk3MWU3MmE5ZWIzMzI1MjhmZmUzOTRjZGRjNjA1OCBsZWdhY3ktdHJ1bmsKKzQzMTY2IDM2MDUyMThkMDNmYTA0MzdhZTRmM2IzM2VkYTExYTVkMTUyYmFmYjEgbGVnYWN5LXRydW5rCis0MzE2NyBkZTJiOTQyZjM3Zjk0OGUwY2M2YWY2ZGI0YmU5YjkxYjNkZGY1MTlmIGxlZ2FjeS10cnVuaworNDMxNjggNWE3NzUwZGIwOTc3OGUwMjI3ZmVhMWVmMjFiOGFhOWYwNmQ0ZmVhMyBsZWdhY3ktdHJ1bmsKKzQzMTY5IGEwYWM3NzI1OWI5OWNlN2ZjNjlhMDI3ZmRjZjYzODIyZTI3MWM1MjQgbGVnYWN5LXRydW5rCis0MzE3MSBkODU5MjI3NmIxMzc0NWE5MWI4YjM0ZDM0ODFkNmQyNzQyNWI2NjRjIHJlbGVhc2UyNC1tYWludAorNDMxNzIgNDkwN2ZiODc5Y2Q5YzdhNjM4OGFhMzc5YmY3Njc4MjA1NmEwN2RlZCByZWxlYXNlMjQtbWFpbnQKKzQzMTczIDY0MTJlZDY5NzVkZWVlOGZhOGQ5OWVlYWI1NThmMzlmMWMzNmFkNTQgbGVnYWN5LXRydW5rCis0MzE3NCA4N2VkMWYzZDI3MmU0ZWMzMjAwZjBmOTU4ZWYyNzUxNTllOWYyYzMyIGxlZ2FjeS10cnVuaworNDMxNzUgODJhZWI1NGIwYmFhYjNmMWQ2ODFhNzA3YzMzNDJiZjAwNWI1MmNjZCBsZWdhY3ktdHJ1bmsKKzQzMTc2IDEzNmI0NTdiNTQzYWI2NTc5NmJiNmZhNjQxZTFiM2RkMWMwOTRmYjkgbGVnYWN5LXRydW5rCis0MzE4MSBmNzk5M2RjNmJmMjY0ZjhiYjMwOTQ4ODFkN2YwM2U1YjJlZTEwZDdjIGxlZ2FjeS10cnVuaworNDMxODIgZGIzMTdlNDM1N2FkNTRlNmM3NzBjZTJmNjc1Y2Y3NzY3Njc5YWEyMCBsZWdhY3ktdHJ1bmsKKzQzMTg0IGRiMjk3Yjk0NDJlNDBjYTU2NjU3YWYxMjVjYzAyNDgzNWEzYzc2MTEgbGVnYWN5LXRydW5rCis0MzE5MSBlNzNiMzVkODE2MTdiZWIxZGQyODAxMjQ5Yzg2NmFkYTgwNjJkZTZiIGxlZ2FjeS10cnVuaworNDMxOTQgOGRjNDRlOWQ1YzkzOWI4MmQ2MjQxMWY0YzIxY2U0ZDM1ZGRhNjZmNCBwM3lrCis0MzE5NSBhOWMxZTUyYWRkZjI4YmJhZDgwMWM5NGY3NDcxNzA2N2YyMmJmNTRkIHAzeWsKKzQzMTk2IDI1MWVjZWMwNGYxYmZmZDYzNWI1NzBmMWQ2ZThkODNmZmQ2OGI4MzggbGVnYWN5LXRydW5rCis0MzE5NyBlMzQ1MDZlNDRlNjc2ODJiN2QzMzIzMzUwZGU1NGZjOGE3NGY2M2MwIHAzeWsKKzQzMTk4IDUyZGQ0NWRiMWU4NTA0N2FiYmNjMGU1NmY3ODhlMmFiZTgxMjEzMTMgcDN5aworNDMxOTkgYmFmNjVkYzYzOWMxNGZlMGUzOTUyZjdiNTA0Y2U3YWYwMDkzNmI1ZSBwM3lrCis0MzIwMCAwOGNmOGI5ZWMyMDg3MjM3YjRiMjMxODc4NjRhMDkxN2JmOTAyOTgwIGxlZ2FjeS10cnVuaworNDMyMDMgMmY0YTRmOTZhY2QxZTZmNDgyOWMxODgzMjg0Njc5ODRkNmM4Y2RlNSBwM3lrCis0MzIwNCBhYTAzOWRlODkxYzk4N2ZlNmZlMDQ1ZTU5ODkzNWZhNDkzMWI5NWE3IGxlZ2FjeS10cnVuaworNDMyMDUgMGJiNzcwMDU5M2Y3NWEyMWU3YTdjNTZhNTc4MWI5NmJmZjcwMDIwMSBwM3lrCis0MzIwNiA2ZTkyOTIzOGUzYWM0N2IxODI5ZjMxNTkwZWZlZWIxMDI3ZTUyYjc1IGxlZ2FjeS10cnVuaworNDMyMDcgYzllZTMyYjc5M2U3ODg0NmVkMmM2NDY4ZDJiMjczOWQyZGNmZDU5NyBsZWdhY3ktdHJ1bmsKKzQzMjA4IGU3MmQxYzdjODU1NDg5MDljMmZjZmU5ZmRkMWZjODJiNTk5YjZjN2MgcDN5aworNDMyMDkgM2Y4MjQxNDFlZWI5OWViZDgzNGFkZDMxMTcyZWExYTRlN2M5Y2VlNSBsZWdhY3ktdHJ1bmsKKzQzMjEwIDdkYWRkM2ZjNWVmYWM2YmIwYzlkYTk5MTAzZjE5ODQ4YzU3N2I2ZmYgbGVnYWN5LXRydW5rCis0MzIxMSA3MWM1Njk0ZTM0MjNiMjQ1ZjI0YzgyNTU4MGU3ODViYzIyY2VmZmI2IGxlZ2FjeS10cnVuaworNDMyMTMgNjE3NzQzMTE0NjAwYmI0ZjNiYmM5YjkxNjk0ZjVmMjg3ZTA5MWY0ZCByZWxlYXNlMjQtbWFpbnQKKzQzMjE1IDc2N2U2YmU1ODlhMDQwZGJlNTQ2ZDc2YWU2MDk0MGZkNWI1NDFmNzAgbGVnYWN5LXRydW5rCis0MzIxNiBkYmFmMGJjZThkNDYwMmQyMGE1NTFhZDQxNmE0ZmIxNTQxNWZhNTllIHAzeWsKKzQzMjE3IDdlYWMyM2M4ZTRlOTg5M2UwNzRmZTU5NjI2YTE0MDBhYzc5YmIzMzggbGVnYWN5LXRydW5rCis0MzIxOCA0ZWY5OTY5NWY3YmJiZWVkOTk1YjNkODMxYzFlMWFkOTUxM2M0YWMxIHAzeWsKKzQzMjE5IDcwNDlkYzBjNjIxYTNkMmIwMmIzMjFjODU1Njc3NGFkODQ2NWIyMzQgbGVnYWN5LXRydW5rCis0MzIyMCA1MjE3YzcwM2E5NGY4YWJlYTUxOGRjYTM1NjFhYzA4NzBhNWZiYjgzIHAzeWsKKzQzMjIxIDkxZGQ0ZDQ0ZDNiYzcwZGE2ZjU3NGY4YWQ0YzI5MWZmZWNiY2RjZGYgcDN5aworNDMyMjIgZDc1MTNmMzhiMjJmOTllYmQ0ODQ1OWY5NDI1NWVkMzRiMjA3ODkzZSBwM3lrCis0MzIyNCA2OTFkZDA1OTE2OTE3MTdjN2Y2YzVmMjc5YzgzOGMzZmEwYjAzYmRjIGxlZ2FjeS10cnVuaworNDMyMjUgMDA1Nzg2MmEzYmRiZGFmNjFlYTg4ZGEyMThiMzk2MWYyNGJmOWFhNyBsZWdhY3ktdHJ1bmsKKzQzMjI2IDJkOTJhYjdmNWU4OWUwZDhiYmY0YTI5OTZmOTlmZDc4MzFhMTQwZjUgbGVnYWN5LXRydW5rCis0MzIyNyA0ZDgwNjA3MDMzZmIzMTVkZTU2ZjAyMjcyYjQxY2QwYTQyYTZkOGQyIHJlbGVhc2UyNC1tYWludAorNDMyMjggMTBjY2UzZjY1MTcwMjlhYWE5NzFjZjRiNTI1YzA3MGEwYThhZWFmZCBsZWdhY3ktdHJ1bmsKKzQzMjI5IDM1NDU4MTEyMzliNDBiYTM5ZGU0N2IzMTE1ZjZjMTMwOTc3OTU3YjEgcmVsZWFzZTI0LW1haW50Cis0MzIzMCAxNmI4ODU5YjA3NjA1YWI2ZDFmOWJkMWQ1MDA4NmM1ZmVlNzFkMTk1IHJlbGVhc2UyNC1tYWludAorNDMyMzEgOWFkMGU1MTc1MjdmZjQxYjc3MzcxN2FhNDAzMzM5MTYxNWM5MGMxOSByZWxlYXNlMjQtbWFpbnQKKzQzMjMyIDgxNDlkMGE0MjRhNTVlMDA1NTBlMTkyNjNmY2MwMjk0Njk2MTI5MzUgcmVsZWFzZTI0LW1haW50Cis0MzIzMyAxYWYyNDVmYWM5MGE2YjZmYWVmODhhZmYwMDRkOTUzNDMwZDI0YWUzIHJlbGVhc2UyNC1tYWludAorNDMyMzQgYzFlNzAyZDI4Y2YyODdmYzY0YWY2YTNmZjQxY2U4NzkxOWJiNDJlMCByZWxlYXNlMjQtbWFpbnQKKzQzMjM1IGE5NTA0NTBlZjRlYjkyODcyNjRhZmYxOGM5YzdhOTAzZDA0NmQ5YmIgcmVsZWFzZTI0LW1haW50Cis0MzIzNiBkMTE3MGU5YWE3ODliM2E0YWQwMTUzZGRhMmQwNzNjMmNlNGRiMzVlIHJlbGVhc2UyNC1tYWludAorNDMyMzcgN2M1YmU3YzBmZGZkYmJjMGFjMWQ5MWMwNzAzOGJjODE0MTJkYTQxMiByZWxlYXNlMjQtbWFpbnQKKzQzMjM4IDNlMDljODU2NmRmMWFmZDcwYTU1NGRiMDYwNTJiZjM1NzE0NzRkODMgcmVsZWFzZTI0LW1haW50Cis0MzI0MiBiMmU2ZDZhYTg2ZDFjMWIzMjJhYzM1MDRmOTIwY2NjYjM0NTlkYmU1IGxlZ2FjeS10cnVuaworNDMyNDMgYjRkOTJlZjJmMzM4MGRlZGIyOWUzMGZmZjQyODAzMjAxYWZiZDZkNCBsZWdhY3ktdHJ1bmsKKzQzMjQ0IDBjNjAyOTM4ZWQ4ZTg3OTc4M2ExZDY0MjViOTRjM2VkNjRlZDA5YTcgbGVnYWN5LXRydW5rCis0MzI0NSAyYjdlY2U3OGUyOTMxNDc3Nzc2NDM4NjVmNzNjMTdhN2U2YWMwYmYzIGxlZ2FjeS10cnVuaworNDMyNDYgNDVkZDkzOGI3ZmViMjBmZDkwOGNjZGYwMDJiNjE2ZDkwZGU4MGRjNiBsZWdhY3ktdHJ1bmsKKzQzMjQ3IDAyN2M2ZmNlZWUwZGFmOTgwZTNlNGU4MzYyNTQyNzM5Y2Y0YTVlMjYgbGVnYWN5LXRydW5rCis0MzI0OCA0MWQ3MDU3ODU3OGEzODExNjBmNDhmOWIyZjIyM2YwOGNlMDQ4MDE0IGxlZ2FjeS10cnVuaworNDMyNDkgNGY5N2I2YTIyOWNlMDMxNWY0MzkyM2FhNTJlYWRhNzBiZWMxNDc0ZCBsZWdhY3ktdHJ1bmsKKzQzMjU1IDA2NmM5Y2U0OGMzMDAyYmVlZDRlM2I2ZmZlNmU1OTAzN2FlYzYzNjkgbGVnYWN5LXRydW5rCis0MzI1NiAyOWRmNGZlMTI4YTBhYmVhYmYwMTcwNmY5NGRlMGU0MmQ1MDdiMWM3IGxlZ2FjeS10cnVuaworNDMyNjAgNzJhNzIwZGQ2NGZiNGI3MDlmZjY0MTVlYzIzMDQ0ZjQxNzA5YjcyYSByZWxlYXNlMjQtbWFpbnQKKzQzMjYxIDFlZDdiOGRjNzc3YWNmZDVmNmVmNTNiZmFkZjQ5OTNmYmI0OWJkMWYgbGVnYWN5LXRydW5rCis0MzI2MiA5NzM1N2ZlMzQyMjI3YmQ5YmVhMGUwNzhhOWZmZGNlYmU3OWRmMjMxIHJlbGVhc2UyNC1tYWludAorNDMyNjMgN2UzYmY4NDkyYzAzYTY5NjVmZWY1NTJlNmZlNTI3YWNkZDA1MDc1NyBsZWdhY3ktdHJ1bmsKKzQzMjY5IGExOGFhM2ZiZGQ0YWIwZDgxZTcyNTI2OTEzZmY4MjcyMmQ5MDhjY2YgbGVnYWN5LXRydW5rCis0MzI3MCBmYjQ4MWUwZjU3ODZlNTFlZTNlMWUyNjU1YTE2MzM1NDk4YTljOTkwIHJlbGVhc2UyNC1tYWludAorNDMyNzEgYThkZTBiOTYwMDI3NWJjNDY4MzA0OTExMzRhNTU3OWE1OTRhMWM1NiBwM3lrCis0MzI3MiAyMzFkNjA0ZGVkODQ2ZTBhNDFiNGMzYzExYmRmZTMxNjkxYzY0Yzk2IHAzeWsKKzQzMjczIDUyMGU1NWJkNzZkNmMyM2M5YmU2MTkzMzhjMGNjODk0ODJiYmU5MjkgcDN5aworNDMyNzQgNjRhZTMyYjA3ODI5OWEyNDBiNjFmMzI2NGI3MDY2ZjJlNTU4ZjBiYyBsZWdhY3ktdHJ1bmsKKzQzMjc1IGNhYTlhZmYwODVhNjY2M2QyM2Q5MDRhOTkzMjAwY2YxZjRlZDg4YzEgcDN5aworNDMyNzYgZjlmMDQxMTVmYmI1ZjUwMDNkYjFjMDQ5MjcwYWQzZTZjYzRhZjA3MSBwM3lrCis0MzI3NyBiMmEwNWVhN2VhYzFhZDJkYzU2NDg0ZGU3ODdkZjJlOTljZjA0ZjFkIGxlZ2FjeS10cnVuaworNDMyNzggODY4YWIyYTY1YzczMGVlYjQ5NjBmYzM0MzYyMmM0ZDAyYjkxZTJjZCBwM3lrCis0MzI3OSA2NjhhNWJhNzdkYzZmM2RjZTc1OGMyNzdjODQ2ODVhMThlYTI4NWNlIHAzeWsKKzQzMjgwIDM1Y2M1ZTE4MGFhM2U2NjRlN2M3Y2IzNGY5Y2U5NmJhNDYxYThmMmQgcDN5aworNDMyODEgNjNjNjFkYjU1M2E4Njk2ZGMzZDMxOGI4NGI2MTUzMWRmNzkyZmU4YSBwM3lrCis0MzI4MiA3NjBmZmIwZmJhMzczN2Q0ZWViMGU0ZjFkMzJmMjM2MThiOWRhMWQyIGxlZ2FjeS10cnVuaworNDMyODMgYjg1NjdiODRjNTMxMzdmNDc2YWE0MTAxYWU2Mjg1NThmNzJjZGE4MSBwM3lrCis0MzI4NCAwYWQzODdmYjYzMTQzMjNjYjVkZjU5M2VmMzVhNDZmYmM1OTU2NzdlIHAzeWsKKzQzMjg1IDRiZmU4YWZlOGY2NWVkMTMzZTEyMTMzMzM5NTExM2JkODA1ZTljOTMgcDN5aworNDMyODYgNTkzZThmYjlhM2NhZmU1YzQ3N2NkNTYzN2ExZGMyN2E3NTcyNDU3MyBsZWdhY3ktdHJ1bmsKKzQzMjg3IDdmMzIyZWY2ODQzODdkYTFhNzlmNGRiODk1MGU5MGIzZWE1ZmZmODEgbGVnYWN5LXRydW5rCis0MzI4OCBlMzhmZjIxMTkxZGU1MWU5NTI2ZWZhODVhOTQyMzg2MTVmZmI2MzdjIHAzeWsKKzQzMjg5IDI0MzYzMzAxYTI5OWM1MTA3ZWZlNWVhYjAzNjk0M2MzYTdjNWQ1ZDcgbGVnYWN5LXRydW5rCis0MzI5MiBjMWE2YmE3ZWNiMjM0YTk1ZTA4Y2E0N2Y0MjAyMDM0YmFhYzQ2ZWZiIGxlZ2FjeS10cnVuaworNDMyOTQgNjQzMTdjNzFlZDZkMzkzNjFlMDczNjUxMzNlY2VjMzY0ZWVjMzRhNyBsZWdhY3ktdHJ1bmsKKzQzMjk4IGJlZDNmNTJmMGRjNjNmN2YyYTBjYTBhMjQ3OTU4YzQxYjlhNGE5M2IgbGVnYWN5LXRydW5rCis0MzI5OSAxYjcyZDBlNGY0YWEwYWRhOWYzOWZkOGQ2OWJjZDVkNjk0NjAyOTQ1IGxlZ2FjeS10cnVuaworNDMzMDAgOGFiMDFhOWMxNDBiNzAyYTI5N2ZhMmY0ZWQ5NDU2OTgzMjIwOWZhOCBsZWdhY3ktdHJ1bmsKKzQzMzAxIDM5NWFkMGQ1NDIzZDYwYTQxY2Q2MmMwY2RiOGE0YjA2NjcyZWNjNmIgbGVnYWN5LXRydW5rCis0MzMwMiBmNWNkMzA5MWQ5OWY5YWNmMTFlN2NiYWRlMzk2M2QyM2U5YWE5ZDc5IGxlZ2FjeS10cnVuaworNDMzMDQgYjM5YzNkN2E1YWQ0NTBjZGIxNmFiZWIxMzk5MzY2MWViNGYzMWRiNyBsZWdhY3ktdHJ1bmsKKzQzMzA1IDY0MjVhNDNiZjNjNmU5ZWY1OGZiMzY2YWFlZjcxM2E3NTM5N2E3NjkgbGVnYWN5LXRydW5rCis0MzMwNiA0OTYyMmQ2NWMyOWQyYWYxNzgwZjY1Yjk2NGMwNDBjYTIzNGU4NGFjIGxlZ2FjeS10cnVuaworNDMzMDggNTFkZjk5NDg4NWU5NzhmMzY0YTQ2ZTVmNjk1YTAwNzJmNDNjZTE2MyBsZWdhY3ktdHJ1bmsKKzQzMzA5IDk2ZTRkNTMxMjhjOWU3M2U4NTgzMWExZjAzZDk2NTJjYzlkOWE5MjggbGVnYWN5LXRydW5rCis0MzMxMCBhODJlZTMyOThlMWFkMmI2NDI4ZTBmNzc0NjIyOGYyZDdiNzkxZTI5IGxlZ2FjeS10cnVuaworNDMzMTEgYzg0NDMwNWFhOGVkMWYyMmUwODBjNWU5ZWIxOTFmMjkyZTY3MGMxYiBsZWdhY3ktdHJ1bmsKKzQzMzEyIDY5YzM1OGJmNmEzNDU2ZDUzOGNkYTMxMDMyMGFiMjQxNmI2NTdmMWYgbGVnYWN5LXRydW5rCis0MzMxMyAyYzFmZTc2MWYwMTk0MTk5ODBiMmU1MDRlYjRmYTkwNmExM2M1ZjAxIHJlbGVhc2UyNC1tYWludAorNDMzMTQgMDZkNzYxM2EzNTIzMTljMjk1NmY0ODU3MjAzNjBmMTA0YThhOGIwMyBsZWdhY3ktdHJ1bmsKKzQzMzE1IDUxNTExOGMwZTMzOGI4M2NhNTk5MmVlODY5NjBiZTE1YzBmOWM4MTYgbGVnYWN5LXRydW5rCis0MzMxNiBiMzQ0NDA0MTliNjc5ZTdlMTEzN2UwZWFhMTA1OThkYjA5YjZiZTI5IGxlZ2FjeS10cnVuaworNDMzMTcgMzBmYWJiODdmYmNjMzBmZmRmMTdkZDY0ODgxM2NjNjc1OTM5MzViMSByZWxlYXNlMjQtbWFpbnQKKzQzMzE4IDU0YWE1YWE4ZjJjYjI2YTdkYTkzYWIyYTRjYzVkNzkyNGQxODRkMzUgbGVnYWN5LXRydW5rCis0MzMxOSA0NjE3NmZmYzhiZjVkZGNkZmMxY2ZmZDFlNTRlOWJiNWE0NDc0MGIxIHJlbGVhc2UyNC1tYWludAorNDMzMjAgZTIzNGZmOGJlYWEyMDIxYjJlMTJmNDllNzc1NDM5NDJmNDg1YTM4NiBsZWdhY3ktdHJ1bmsKKzQzMzIxIGQ3YTZlYzlkZTg4NzU1ODEzZDllMjVmYzU0MjI4YmIwMjM2Yzg4MmQgbGVnYWN5LXRydW5rCis0MzMyMiA1YmJmNzIyN2FkNmU5YjkzYzMxMjU5NzNlYmVmNzhmYTU3Nzc5NDM1IGxlZ2FjeS10cnVuaworNDMzMjMgZjE5ODkwYTg2YzQzMzJjNWVkMzZkNDUyN2UwODlkYTcwN2ZiNzViYiByZWxlYXNlMjQtbWFpbnQKKzQzMzI0IDQxNjM0ODc0ODQ2MDQ0ODlhYTBmNDFmZDJhMTYzNjdlODhhZDJiZjIgbGVnYWN5LXRydW5rCis0MzMyNSBjMDgxOGYyMWY2NWEyZGFiYWZjZDk1MGRiYTlhMGVlYWVjOTZjNzE0IGxlZ2FjeS10cnVuaworNDMzMjYgOTIzOGYwNGVlYWE2Y2U4NTQ0OTU5YmFiNzBiZTJjNWM3NWQ2ODJjZCBsZWdhY3ktdHJ1bmsKKzQzMzI3IDhhZGRjMzEzYWIwZmM3MjAzMmE3NDE3Zjk2OWVjOThiZGE1YTcxYzkgbGVnYWN5LXRydW5rCis0MzMyOCA3OTliNDBjNGEyYzYxYmE5YTE1OTAxZTc4OTRlNDZlODUwNTAyZjc3IGxlZ2FjeS10cnVuaworNDMzMjkgOGQ1N2QyNWU2NTQ4NzljODY5ZGQ5ZmVjZTkwOWQyNzRhYTA1NzI3MiBsZWdhY3ktdHJ1bmsKKzQzMzMwIDhmN2MwM2FjYWRkZGJjNzYyOTIxOWM3YTY5MDdlNjJhOGM2MzE1YTIgbGVnYWN5LXRydW5rCis0MzMzMSA2ZTFhODk5Y2FjOGVlNmRkMjNmYWI2NmE1ZTVlMzUyZWQ5ZWQyMTJmIGxlZ2FjeS10cnVuaworNDMzMzIgYTRkMmY3Yjg0N2IxZTgyODk1ODJmYzI0NDg0YjczZGU1ODlmZWQ1ZSBsZWdhY3ktdHJ1bmsKKzQzMzMzIDk0ZjU0ZWM2MmQxNDM4YjA0MzA3NjM5N2ViOWJkZjBlN2IzNTM1OTEgbGVnYWN5LXRydW5rCis0MzMzNyBlNWNmZDRhM2U2NWM2MTcyYWJlOTEyNjY3MjIxMDFkOTc3MWZiMGQ3IGxlZ2FjeS10cnVuaworNDMzMzggMDA5OGU3MjY0ZWFhYzU0YTNlZmFmOGUyYmUzODIxMzZiZGVjMjI4ZiBsZWdhY3ktdHJ1bmsKKzQzMzM5IDM0ZjIwYWI0NGNlZmQ0OTA5YWEwZmUyNWI1M2NmMjhmY2VhYjM4MjkgbGVnYWN5LXRydW5rCis0MzM0MSA5ZDhiMzNhZmY2MGMxMDBlNTUyOWZhMDViNWI2MmNkZmY5MmIxNTQyIGxlZ2FjeS10cnVuaworNDMzNDIgYjA1MjI0N2IxODA5ZmZlYzU3M2I5Mjk2ODA3ZDIwNDY4ZGY2OTVhNCBsZWdhY3ktdHJ1bmsKKzQzMzQzIGVlMzZjMTZkOGQyYmIxNWU5ZDQzY2QwYThhOTE0ZTJiMjgxYmMzNTMgbGVnYWN5LXRydW5rCis0MzM0NCBjMDQxYjM2MmJiMDRkOGNmMTc1M2M0N2JiYjI2YWRlNDE2ZGE4NjU4IGxlZ2FjeS10cnVuaworNDMzNDUgZGMxODM1ZmI5ZTdjM2IyOGE1YWNjNjE5N2U2ZTc2NjJhNTRiMDhkNCBsZWdhY3ktdHJ1bmsKKzQzMzQ2IDQzNDUyZjFmZWE2OTM0Yjk0MzgyOTllZjY0N2QyOGRhODA2ZTliM2MgbGVnYWN5LXRydW5rCis0MzM0NyAzNzNmN2ZlMGU3MzNmNGJhYmQxMDQ0NjgzMGJiNzFiY2I3MTE4YTI4IHJlbGVhc2UyNC1tYWludAorNDMzNDggMjIzNDVkMWU2ODUyNzAzZDdmNDVlZTgyNWFiOTljZjhkOGM4MDU0YiBsZWdhY3ktdHJ1bmsKKzQzMzQ5IDI2MTExNmY2ODg5YzJjNGM3YTk0ZGFhZWVhYzYzYWYzOGY5NzMwNTYgbGVnYWN5LXRydW5rCis0MzM1NCAzYjYxZTRhYTdlZGUxYTdhYzBiMjlmMGZhMzIyNWVkMjhlZTRlZGE5IGxlZ2FjeS10cnVuaworNDMzNTUgNmViOWIxNmQ2ZTIxNTg2M2QyM2FhOWJiMWQ5MDc2OWIxMzA1OWU4MSBsZWdhY3ktdHJ1bmsKKzQzMzU2IDQxYTJkNzhkNDNjNjk3Y2NjMDI4NTMxZmViNzQ1ZjY3ODQwYmZkNzkgbGVnYWN5LXRydW5rCis0MzM1NyAwNDkwMDRkNzlmZWZiMTgwMmI2ZTVjODI4YzU4MWJmMTRkMDBhY2M2IGxlZ2FjeS10cnVuaworNDMzNTggMDBlOWQ1OWMyM2I0ZTM5YTI1NTIyOTVjMzA1Y2EyNjgwYmRhYTE2NyBsZWdhY3ktdHJ1bmsKKzQzMzU5IDM1MjBmOTcxNGU4YzEwNDJkMThhNWJjNjBjMTlmNzk3ZTMwYzJkYjcgbGVnYWN5LXRydW5rCis0MzM2MCBjOGY4N2YwOGZlMGJkZGYwOGQxZDI1NDExYWRlZGYwZTUxYTE3MTVjIHJlbGVhc2UyNC1tYWludAorNDMzNjEgYzExZmUyZTI5ODRkOWIzNzU4OTg4YzRhMjdjMTlkZGQwYTY1Y2I0ZCBsZWdhY3ktdHJ1bmsKKzQzMzYyIDUyZGViYmMzY2MwOGEyZWEzNzBlYjJkNDllZjk3ODcwNGMwMjg4YWEgcmVsZWFzZTI0LW1haW50Cis0MzM2MyA5MzM0NGRhNzZhY2QwZTVmNDEwYTIzZmY3ZmJmMThjNzQzNTdiM2M1IGxlZ2FjeS10cnVuaworNDMzNjQgYTc4MThjMjg3NDlmNGFhNzI2ZWYyYTgyZDc1YjE3YTk1MTI2N2NlZSBsZWdhY3ktdHJ1bmsKKzQzMzY1IGY0Y2EwM2I4NzE2MGJlNmRkZDRkODEyOGRmZTE3NjQyNjEzNzllMjQgbGVnYWN5LXRydW5rCis0MzM2NiA5NGYxNjEzYjg3ZDViMmJhZjA5YTk5MjI3YWUyYjgzOWQ2ZmE2ZWI5IGxlZ2FjeS10cnVuaworNDMzNjcgMDM0YzBjZjUwMDdiMjg0MjRmZWI2MTI5NWJmOWM0ZGE2NzMzNDE3ZiBsZWdhY3ktdHJ1bmsKKzQzMzY4IDdiNTI0ODBjMTJjNjJiZWZjNjVmNmQ5ZTM5NmUyOWM4NWI0YWQ5OWQgbGVnYWN5LXRydW5rCis0MzM2OSBhZjI0ZWIzYmJmY2ViN2RlZTcxY2EwNDc4YzAwMjY1ZWZmNzJjOTM2IGxlZ2FjeS10cnVuaworNDMzNzMgZTEyZTQ5M2I1MjQ0NDU0YWY4MmU3YTYwOWMyNGM0YTlkMTNkY2M5ZiBsZWdhY3ktdHJ1bmsKKzQzMzc0IGJjNTE2MWYyOTJiNzcxMzAxOTM4YTk1NmU1ZjlmNDVjN2VhNjUwODkgcmVsZWFzZTI0LW1haW50Cis0MzM3NSA1YTNmMjI4MDg3YWZkZTNhYjM2OWYwNTMxMjRjNzMyZTdhN2ZjZGFlIGxlZ2FjeS10cnVuaworNDMzNzYgYjc1NDQwY2JmZDM0ZjE1ZTlmNWM1OGUxNGNlYzJiZDcxMjhmNWUyZCByZWxlYXNlMjQtbWFpbnQKKzQzMzc3IDYxNDYxZWViZDU4ZjdlM2JjNDBjYjgxYTdlMGI2ZjA3M2YxODRjNTcgcmVsZWFzZTI0LW1haW50Cis0MzM3OCBhMjg0N2JiMzI4YzBlNmUyZTUzYWJhOTFkMjQwNWFhMjM5ZDk0YmIyIHJlbGVhc2UyNC1tYWludAorNDMzNzkgNWQ2MjVmNTg5ZjJhN2NjN2Y4OTQxZWVhZGU5Y2E3NWIyNmE2ZjkwYiBsZWdhY3ktdHJ1bmsKKzQzMzgwIGQ4ZGU3NTAwMjkxZGQ0NTc2MWMxZmEzMTZmNDgxM2YzMzhjNjc1MjQgcmVsZWFzZTI0LW1haW50Cis0MzM4MiBhNzgzNDg0NGRjZjYxMDE2OGNhZGVlMzNkYTMyZWZlMzQ0YjI5MWZhIGxlZ2FjeS10cnVuaworNDMzODMgYmFkYWE3ZTkxZDlhN2U3MGRhZTYzMzE0MzFhOGY4NzQzOGE0ZjFhMSBsZWdhY3ktdHJ1bmsKKzQzMzg0IGEwM2M5NTVmZmVkMTBmZmViMzYxNGQ4YzllNGI1ZjJiNmU4NTVmMzMgcmVsZWFzZTI0LW1haW50Cis0MzM4NSA4MGM0ZmMwM2ZmOWI3ZDY4YmZlZjYzZDFiODM0MjU0OWE0MWU5Zjg2IGxlZ2FjeS10cnVuaworNDMzODYgZGNkNDU5YjAzNjcwNmM3NDcyNGJmMmQ0M2I5YTc0MmEzNGRlNzRjYiBsZWdhY3ktdHJ1bmsKKzQzMzg3IGI5NDI2MDkzZDdlYTY3YWQxOTljZTljMTk0MzMxZmYxZjZhMmU2N2IgcmVsZWFzZTI0LW1haW50Cis0MzM4OSA2M2M0NDIyNjY3MDU2YjZjMWMxMWFlNmQ2ZTk3YTQ5NzcxZjQwYTA1IHJlbGVhc2UyNC1tYWludAorNDMzOTAgOGNjYTI0OTI2MjZjZTQwOGNkNTY3MTEwODExYzA2OTJmZDFkMzdkZCByZWxlYXNlMjQtbWFpbnQKKzQzMzkxIDc2MmU1YjhkMTg5ZGFlYTA3ZGYxNGU5NzcwYWI1ZTg5ZGFkZWI5ZTAgbGVnYWN5LXRydW5rCis0MzM5MyBlZmQxNDFjYmY2Y2IzNzY5NDAxMDg2MDQyMGE0YjQyNDE0YzI0NWEzIGxlZ2FjeS10cnVuaworNDMzOTQgYmIxYjQ4NTE2MTMxN2ZlYzBhMmIyNzA5MGQwZmQxMDc1MjBhMzQwNCBsZWdhY3ktdHJ1bmsKKzQzMzk1IDRlMWFmZjBlMjBkMThmYjc0ODI4MGNhM2RhN2ZmYTc3ZDEyZDQ4MmUgbGVnYWN5LXRydW5rCis0MzM5NiBjY2JkY2ZjNDBjODFjNDY4YjgyZDc1MDQ2NzNhMjIwZmE2YTAxMTRmIGxlZ2FjeS10cnVuaworNDMzOTcgZWU0YTYwYzcxMzU3MTI3ZjdlNTgxNDYyN2FiYmU5ZjdkMTkwZTgzMSBsZWdhY3ktdHJ1bmsKKzQzMzk5IDljNjkzNzg1MTZhYjBmYmI1ODgyYjc4ZTk5MzFlMTkwN2M5Yzc1YjMgbGVnYWN5LXRydW5rCis0MzQwMCA1MjAzMzc2ZjE1ODkyY2JkZTk0ZmEwMWU4OWY3N2Y4NmEyNWNkMzYyIGxlZ2FjeS10cnVuaworNDM0MDQgZWY4MDU5Zjg3ZmQyZjkyZWJkNDExMzc4MTE2Nzc2NTg4ODMyZTJjNyBsZWdhY3ktdHJ1bmsKKzQzNDA1IGExNTdmNWE2OWQzNWM2MDkwOGVhMDYzZjlhN2IwOWRlYTY5Mjc0MTcgbGVnYWN5LXRydW5rCis0MzQwNyBhYjNlZmJjYTVjOTIwOTg0MTg2ODc0MGU5NzY3MTg5Yjk0ODhiMTA2IGxlZ2FjeS10cnVuaworNDM0MDggZTQ5NDU1ZTk0YmVlMjg4ZjA5NGY3OTM0OTI4MjRlMzVkYTBkN2ZiZCBsZWdhY3ktdHJ1bmsKKzQzNDA5IDFmNjFhYTQ2ZmVlNWIzZDMwMjI4MDE0NTRlOTliMTE0NzdhMDk2YTAgbGVnYWN5LXRydW5rCis0MzQxMCA0MzdkMjc2YzczMmM3YmRhNzkzNWRhODA2MjhjZWQzZjdmNTY1NmYzIGxlZ2FjeS10cnVuaworNDM0MTEgODkxNDJjYWRjZmI5ZTc0NzY5MTM4Y2U1NzllYzdlNDc5NDU5ZWY4MSBsZWdhY3ktdHJ1bmsKKzQzNDE0IDkzYmExNTYxOWY1YWFjOTI3OGVmNGY0ODI5MjAwY2VmMzFhYTYxYmYgcmVsZWFzZTI0LW1haW50Cis0MzQyMCA2MGJlM2YzOWE3MmJkZjg1OGExODA4NGMxOTc1ZGU0NzYzM2I1NWQyIHJlbGVhc2UyNC1tYWludAorNDM0MjEgMWNhMDEyY2U0MjdlMzM2NGFjNTBlYjYxZjU3NDdlMmZlZDVjYWRhYiBsZWdhY3ktdHJ1bmsKKzQzNDM1IGI4NWFkMjE2NmMwMWJlN2FkMGVlMjBlNGMzNDQyYTYzZTUxZDBhOTcgbGVnYWN5LXRydW5rCis0MzQzNiBiOGQxYTQ1YTMwNTczMjk2MzhlZmI0MmJiODMyYjExYjYxNDk2YzUxIGxlZ2FjeS10cnVuaworNDM0MzcgODFkNjExOWRiYzY2YjU3ZGFhOTMzYzA0MGEwMjk4ZGZkMDEzMzg2MCByZWxlYXNlMjQtbWFpbnQKKzQzNDM4IGVmYjA5ZGJhYTQwZTY3ZGI5OTYyZDRhZGQ1YzBkNzkwNjE1ZDA1MzkgbGVnYWN5LXRydW5rCis0MzQzOSBhY2NlMDQwZTBhMWFhYmIwY2JmNDAwMjBjN2VhYWE1MjdkNzBkZTlhIGxlZ2FjeS10cnVuaworNDM0NDEgNDRlNmZjOGQwMmUxYzFmYzhmNzkyMGYwYzgxMTcwOWM0Yzg4MmUyMCBsZWdhY3ktdHJ1bmsKKzQzNDQzIDI0MzQ3ZTQ2NTZhNGZkMjVkM2IxZWYyMDQ4M2M4MmY3YTNhOGNiYjYgc3FsaXRlLWludGVncmF0aW9uCis0MzQ0NCBlOWU4MDk4ZjY1NzI0OGU2MWIzYTgyNGExODAxY2Y5MDY2ODI1MTA4IGxlZ2FjeS10cnVuaworNDM0NDUgZjI4NGU4NTRmZTcyZWM0N2MzMGE1NjhkNDBmOGQ1ZGQ5YzQ1ODFlMyBsZWdhY3ktdHJ1bmsKKzQzNDQ2IGUxNTZjNTgxNGZjY2JjNTA2NWFlNDNlMTNjOGNkNGYyYjBlYjYwMjAgc3FsaXRlLWludGVncmF0aW9uCis0MzQ0NyAwOGJmMTEyMmMxNDQwZjI3NWIzYWNkMGY5YmVmNDQzMTU1Y2RiYWE3IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDggZmI3YjUyYzQxMTZjMzYzZmY5MTIyMjdhMzNmNjZlZDEwYTI5YjgzOSBsZWdhY3ktdHJ1bmsKKzQzNDQ5IDEzM2Q0YmI2MWJhYjJmM2ExMTM5MGYwNDQ0ZGQzYzMwM2ZmMzVlMDEgc3FsaXRlLWludGVncmF0aW9uCis0MzQ1MCA5NTVhODZmOGExNDBjMDI2ODBkMTkwZGY0YTJkNWExZTlmNTRjM2NiIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTEgNzhjYWMyMGY5NjQyZDcyZDYxMGMyYzRhZGQ2ZmIwMzE2NmJhZGQ5YiBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDUyIDY5MTg3Nzk5YTlmNmJlN2RmODBmNjJjNWI1ZTljYzkyMTdmYmI2ODMgbGVnYWN5LXRydW5rCis0MzQ1MyA3OWEwZjA4MGY4OThjMjU0YmNhOTk5YjlkM2MzMzczZDFjODlmNGJhIGxlZ2FjeS10cnVuaworNDM0NTQgNWUxYjZmNTUzNzYzMTNjNWFjNWJhOGEyNWU0MTJiYzYwODc3YzY2YiBsZWdhY3ktdHJ1bmsKKzQzNDU1IDg0OTY3YTE5NjJjYmIyYTVjNzQyN2EzZWE0NGE3ZjUzMjUzY2QyNTcgc3FsaXRlLWludGVncmF0aW9uCis0MzQ1NiBjZTU2YzVlM2NiMjA1MGVhZWQwYWFmNDUxZTgyYjFjZjg4ZWM4NjU1IGxlZ2FjeS10cnVuaworNDM0NTcgZTU4YTcxYTg1NTBlN2M5MzdiNjIwYWRjMzg4Y2RhNWM3MWMyZmU0ZSBsZWdhY3ktdHJ1bmsKKzQzNDU4IGFhYTA0YmZhZmM1ODU1YTFmZDVmNDQ3MzM0NWFkZGNhNjE2MmMwNDIgbGVnYWN5LXRydW5rCis0MzQ1OSAyMzVmNjM1YWM0NWEwNDg3MGJkYTg4ODA5MmRkNDY4MTE3ZDJkYjdhIHAzeWsKKzQzNDYwIDM2MTkwZDdmZDhhYjJlYWFjOThhNjQ1YzMxMDEyZjNmNjQwN2ZhNTAgbGVnYWN5LXRydW5rCis0MzQ2MSAwODk5YTgwNGE1OTRjY2Y5MjhiYmU2OTJlNTk4MzFlN2ZlOWNlZTVkIGxlZ2FjeS10cnVuaworNDM0NjIgNjE0NTJiZDEyNWU1ZTEwNmFkOTQ2YTE4MjU5MmUzM2Y0MGRmZjgzOSBsZWdhY3ktdHJ1bmsKKzQzNDYzIDIyOGUyNWM5M2E5NzkzYjY4OTVjYzQzNmMzNGVkMjE5NjJjN2E2ZDAgbGVnYWN5LXRydW5rCis0MzQ2NCBjNzJiYzg0NzBmNmM5ZWI4MjRmN2M5MDU5ODY0YTEyOWM3NjAyNjU1IGxlZ2FjeS10cnVuaworNDM0NjUgMTkwNTlkZjQ1Y2ZlOTAyZjBlMDkwOTg2MWQxZDM5NjE5NTBjZTU0YiBsZWdhY3ktdHJ1bmsKKzQzNDY2IDA0OTYwNjkzMzMyOGU4OTA4MjFlMTMzMjkwYmM5OTc0ZDUzNTcwNDYgbGVnYWN5LXRydW5rCis0MzQ2NyBmNWU3OTJhOTNjNDMxYTRkYjBmZmY1NTU2OGI4YjgwMmVlMTA5OTJlIGxlZ2FjeS10cnVuaworNDM0NjggOThmNWM5MThhMjRhY2I5MzFlMWY3N2JlYmYzMDg0MzkwNmY0NDU2OSBsZWdhY3ktdHJ1bmsKKzQzNDY5IDIwMmZlNGFhZmNiYjJjMDgyMzBjYTk5NmJiYzMxYTRlZTdlZTBjMTIgbGVnYWN5LXRydW5rCis0MzQ3MCBkMTk5M2VlOGFjNDExZDFmYzEyMTc2ZGI0MjhjZDAyYTBmYWU4ZDVhIGxlZ2FjeS10cnVuaworNDM0NzEgY2IyNjQ1YTU1NGQ4ODJhZjdhMmI3YWZkMmNiZTEyNzNlNTg4OGMxZSBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDcyIDBkM2U1YWMwNzJiMmExN2I0OWUzNzMwMjUwNTkwYWNhODM3NjNkYTkgbGVnYWN5LXRydW5rCis0MzQ3MyAzMmU3Njc2OTkwMDE0YmQxYTk1NDEzOTc1NTdjMWNhNGFmYjYyMGM2IGxlZ2FjeS10cnVuaworNDM0NzQgMTY0Zjk1ZThlMGNjYjUwNjhkZWNkMjBkNWFjZWEwMGFhZmY3ZWRjMyBsZWdhY3ktdHJ1bmsKKzQzNDc2IGM0OTg4YWM1ODk5OTc5MGU1MWZmNDNhZWE2NDY4NjdiMTA5YzI3ODggbGVnYWN5LXRydW5rCis0MzQ3NyBkNjVhOWM5YzhhN2EyZWEzNzE3MzQ2YTRjNGYxYWNmMDNiNmVjY2YxIGxlZ2FjeS10cnVuaworNDM0NzggNTk5MTJiNDgxMmU2YWQ4NWVlNGM2NzUxY2JlZTczMmUwYTY2ODU4NiByZWxlYXNlMjQtbWFpbnQKKzQzNDc5IGZiN2Q4OTVhODg5N2Y1M2UzNmU4ODRiM2M0Yzk0ODc1NjNiZGQ5ZjkgbGVnYWN5LXRydW5rCis0MzQ4MCA4NjZkYTdmMzBlNTY4NjBhNjExODZjODBhNmUxNWNhMWI5OGU0ZTEwIGxlZ2FjeS10cnVuaworNDM0ODEgNjcxOTJkYTNlNjljOTg1YmIxMjcyZGE5MzJkN2RlNjA3MzAzM2ZhZCBsZWdhY3ktdHJ1bmsKKzQzNDgyIGM3NzExNWRkZGJlMTZkZjUyZmJmNjgyMjQ5ZGZhMmEzYmM1YjU1ODggbGVnYWN5LXRydW5rCis0MzQ4MyBhYWMwMDVlOGJiODAwNzkwM2VkMmU1MGU3MWY1OWZiOTg5ZDU2MDA2IGxlZ2FjeS10cnVuaworNDM0ODQgYjgwYjVmODRhZTU0ZjJkNDUyMzE1Y2Y2ODhiZTQxNzc0YzA3Y2IzZSBsZWdhY3ktdHJ1bmsKKzQzNDg1IGE3ZWM3OGY4ZDA4NjZlNjg4MmY4OGQ1OGYwM2JmODAwZjFhNmNjOTQgbGVnYWN5LXRydW5rCis0MzQ4NiBhNDk1MGVhNTU2YjUzNDM5Yjk1ODE3MmFiZjliOTE2YjA3MGM0NmU0IGxlZ2FjeS10cnVuaworNDM0ODcgNzVmOWViMDExMjI2ZTFmM2VmN2FlMWM1NmFhNjBhNjExZmYwOTBhZSBsZWdhY3ktdHJ1bmsKKzQzNDg4IDZjNmIyMDA0NDNlMzZjN2I0NGUwOTE2MWNkYzdiMjg1NWU1NjE1MTAgbGVnYWN5LXRydW5rCis0MzQ4OSBjOWE2MjczNzc1YjUwM2M0MWY2ZGJjNmQ1ZjdjNGM0MDI3ODM4ZWM2IGxlZ2FjeS10cnVuaworNDM0OTAgZGE3NzA2NTlmNzdiODQyZjEyYWU0ZjZlMGY4ZWIyYzQ2ZTY3MGI2ZCBsZWdhY3ktdHJ1bmsKKzQzNDkxIDZmZWY5NTc3MTJiOTA2Y2YzY2QyNDYwZjkxNDA2YmZlYTAyZDZjY2QgbGVnYWN5LXRydW5rCis0MzQ5MiBhNjFkM2FmZGZjNGI0OTNjOTgzMDRkNzdmNDZmMWI5MjVmYTJhY2VmIHJlbGVhc2UyNC1tYWludAorNDM0OTMgZjMzMDA0OGQ4YmRmODIwMjQxNGEzMzY0Y2FkMjRmMTk1MTIwZTZlZSBsZWdhY3ktdHJ1bmsKKzQzNDk0IGQ2MTBmY2RiODlmN2ViYjFiZjgwOWY1MjIyMGE1YmNiNmFmOTk5OWEgcmVsZWFzZTI0LW1haW50Cis0MzQ5NSBmZTNiOTNjMjI0ODE0ZjM2MGViNjBiMzViMTBkMWM5OGI2ZDJjOGYxIGxlZ2FjeS10cnVuaworNDM0OTYgYzZjZjExYWNiNDFmYjMwYmU4NDRmMzdlNGE1M2FmOWNjYWQwYTI0NiBsZWdhY3ktdHJ1bmsKKzQzNDk3IGU2MGM4YjliMmI0ZjNlZGVkNWM5MGMwMzFlYWYzMGUxZWUxYmI3ZTAgbGVnYWN5LXRydW5rCis0MzQ5OCBjYzM1ZDNhODc5YWQ0OTRjZTMxNThmYzJiYjY1NGRhZjEyMmFiYjQ1IGxlZ2FjeS10cnVuaworNDM0OTkgMzg1MGE0NDM0ODNhMWZhMmNmY2RjMDVjYzhlM2Y0NTE2Njk4MmMyYyBsZWdhY3ktdHJ1bmsKKzQzNTAwIDM3MDQwNDU5YmYyZTQxYTg0NTA4MWFmNzliZmExYmM4NjM3ZTMxZDggcmVsZWFzZTI0LW1haW50Cis0MzUwMSBhMjRjYmY5NGJiOGUwY2Q0NTgzNTI4NmMyZTQ3MzllYWFmNTM4NTc3IGxlZ2FjeS10cnVuaworNDM1MDIgYmY2NjRhMTYwZmMwYWRjNzQzY2RlYjhjZDhhOTRlOTk0NGZmYmQ1ZSByZWxlYXNlMjQtbWFpbnQKKzQzNTAzIDI5MTRlN2I0ZDI1YTQwMDcwZmI1YTgwZTNmOGFmOWNmODYzN2UyYTkgbGVnYWN5LXRydW5rCis0MzUwNCA0MzZiMDNmZmE4YTI0OGZkNjI2MTFjY2RkOTZlYzE0NGMxOWU0NDUyIGxlZ2FjeS10cnVuaworNDM1MDUgNGE4ZWY3MGRlMjEyZTQyYzJjZWExOWZiNjY2ODZjMmMzMDJlN2ViZSByZWxlYXNlMjQtbWFpbnQKKzQzNTA2IDAxNmQzZDIzZmY1MmRjNGRiZjBjNDEzNDQ1YWYwYjE3MjJkYzdlOTAgbGVnYWN5LXRydW5rCis0MzUwNyBhN2Y4YjBiZTU5N2U1NzM4NGYxZWYxZjFhOTMyMTUyMWNjNGZiYjJmIHJlbGVhc2UyNC1tYWludAorNDM1MDggNDdmYmJhODQ5YTZjODE5NzMwODhhNGY5NGJiMTlkYTU3NTFiZTIwYSBsZWdhY3ktdHJ1bmsKKzQzNTA5IDg2NzBhMjcwMWEwZjk2ZjJiODZkNTk1YWEyNjE1YTRiYjk4MGNmNTMgcmVsZWFzZTI0LW1haW50Cis0MzUxMCBmYWI2NzJjM2RkZTY1ODc0MzI1OTdjY2UwOWY4NWZlZGYzYTBlNDg0IGxlZ2FjeS10cnVuaworNDM1MTEgNDYyYzlkMmEwN2JiMzdjYTI4NmNiMmM0NmY0NTI5MWYwNGVlZjA1NyByZWxlYXNlMjQtbWFpbnQKKzQzNTEyIDk4MjUxNzgwMjM2ZDdmNDRhYjRiMDI5YTAwYzMyOGI3NzNlZDExZDkgbGVnYWN5LXRydW5rCis0MzUxMyBmMDViZDk4ZDkzNWQ1NmY1ZWMxOGI1NTVhMDU2ODNhYzE0OWI1ZmMyIHJlbGVhc2UyNC1tYWludAorNDM1MTQgZTU0NjI3NGQ2NTAzZWEyMjEzNDU4MGI1NzY4MDdiMWIzZmIyNDk1NCBsZWdhY3ktdHJ1bmsKKzQzNTE1IDU5MTg1ZmZhODYxZGEwZjE2MGUzYTljMjYwZGYyNWY0NWMxNzUyZjQgbGVnYWN5LXRydW5rCis0MzUxNiBiNDdkODIxOWVjZDYxZmRhZjkwNjc4NzYwZTgzMzIyMGZkZDM0NTM1IGxlZ2FjeS10cnVuaworNDM1MTcgMzVjZjkxMjk3NjkzZWYwNGZmZjZhNDRkNTIwNDk2NjhmYjI3ZDMyMiByZWxlYXNlMjQtbWFpbnQKKzQzNTE4IGI4MjNmNWZlOTgwY2MzOWYwYjg0NTEyMTExNGZjZWY4MjQ5MTAwZmIgbGVnYWN5LXRydW5rCis0MzUxOSBhNTMzZDViNWRiODQwMTRlNzM4NWEyYjMyMTk0NzMyYjVjZjgzNzgxIHJlbGVhc2UyNC1tYWludAorNDM1MjAgMDU5MTRlOGRlZDczZWRiOTllYWEzNGZhY2QyMzM0ZjUwM2I4OTcyZSBsZWdhY3ktdHJ1bmsKKzQzNTIxIDg1OGFlOTU0ZjA1NTg3NjQ3MzM3OWY5ODc2YTg2MjhkNmZiMmJjMWEgbGVnYWN5LXRydW5rCis0MzUyMiA4NzBkNTZhM2EyMGJlNDg1YTZjZjJjMDdhZDFmNzRkMDA1NzcxYTY2IHJlbGVhc2UyNC1tYWludAorNDM1MjMgNDkyMDQ0MDM0YTg3YmJiNGVhNDVkOTVjN2JhYmMyNmY1MzhmZmVhMCBsZWdhY3ktdHJ1bmsKKzQzNTI0IDQyMzEyZTVmMTFmZDExNWIzMDgyMjUxYmUxYzUyMjM1OWRjNzEyZjIgcmVsZWFzZTI0LW1haW50Cis0MzUyNSBmNjQ4MTJiMmI1YzFjYjRkMTk2OTJjYTgyNmEzMjU0ODA3NTBiYmY3IGxlZ2FjeS10cnVuaworNDM1MjYgYjA2OGFlZTFkZmI1YjM1NjI0ZTAxOGNlMTJlZDg0NGEzYWVjYWZmMCByZWxlYXNlMjQtbWFpbnQKKzQzNTI3IDZmMDg2M2JlZGNlYTMyZDFjZjMzZGQ0YTgyYzdhOGZjZTZjMWZhMGIgbGVnYWN5LXRydW5rCis0MzUyOCBiMDk4MWYwYzE4ZmViNmVjM2U3ZjYxZTYyNzQ1NGMwMWVmNjE4OGZiIHJlbGVhc2UyNC1tYWludAorNDM1MjkgOGQwNTc5ZDJiNjYyNzkyYTNlOTA1ZDAzYTYzMWIzNzUwZWFmMWI5YiBsZWdhY3ktdHJ1bmsKKzQzNTMwIDgyM2M0OGQ2ODcxZWM3OTNhZjNhYjU4NGIyMDJhYjVmOTkxZDRiYjYgcmVsZWFzZTI0LW1haW50Cis0MzUzMSAyY2NlOWJjZGM5ZjY0NTk1YmE1MWNhOGVmYTg3MmUzZTY5MzMxMWQyIGxlZ2FjeS10cnVuaworNDM1MzIgNWYzNTdlNjBjZGRlYTU5Y2YxNTFkYjA5MjcyNzFlNmMzNWQ4NDYxZiBsZWdhY3ktdHJ1bmsKKzQzNTMzIDkxZTlmYjVjZmUxNDI1NWIzOTYzOGRlNzdkZjFiMGY0MmUzYThjMzcgbGVnYWN5LXRydW5rCis0MzUzNCA4Mzk4ODM1NGI2NGQ5YTg4YmZhZWMzMDQ2MWM1OWQ3NGNkZDlkNjFmIGxlZ2FjeS10cnVuaworNDM1MzUgYjczMTc0YWYyNmE5YjVkN2VhOTNmMGZiZjg4MmYwMmZmODEzZGU5NyByZWxlYXNlMjQtbWFpbnQKKzQzNTM2IGZhYjQ2OTM2MWJiYzBlNGI5OThiNWRlMTJiMWQwZDY1MGRhMTBjZGMgbGVnYWN5LXRydW5rCis0MzUzNyBhY2U2N2UzYmNhNjgzMmUxNGJhNGVhYzVhNWRkYmIwYmFhNzc0ZWZkIHJlbGVhc2UyNC1tYWludAorNDM1MzggM2E4MWRjZWFhOWE4YmU0MTNhN2VmN2U4YzMzMWIzMjc3NTJiNWU1NSBsZWdhY3ktdHJ1bmsKKzQzNTM5IDRhYjhlYzllNTlkZmFmMzQ5MWMzNDA1MTU0ZmZlNWMxYWI4ODA0YzQgbGVnYWN5LXRydW5rCis0MzU0MCAwZTRiM2NhZDg5ZmU2YzIyNmYwYWIzNTY3NmMyMTE4Yjk0ODE1NTUyIGxlZ2FjeS10cnVuaworNDM1NDIgM2Q0YTNmNGZjOThlOGIxZmFlYTQzZTFmMDY3Y2U2ZmMxMDgxNGNjMiBsZWdhY3ktdHJ1bmsKKzQzNTQzIDVlMWNmMjFkNGFiMjMxOTBlYTUzZGE1OWZhNjE3MmE2YjQ0MDE1MjYgbGVnYWN5LXRydW5rCis0MzU0NCA0YjY1YWI0MWM3NzE3ZmQ1ZWFkMzQ2MGQ4MWY2MjJlMzU3YjRjYjQ2IGxlZ2FjeS10cnVuaworNDM1NDUgZmU5N2MwMDE2ZDRiMTNmZmI3NTdmOGQ5MmNlNDFiNTQxNWQ4N2Q2ZiBsZWdhY3ktdHJ1bmsKKzQzNTQ2IGE2YmNlN2FlYmUwNWJjZmQzYTExM2E2NTAzNzlhNjJiZDlkYjRiOGEgbGVnYWN5LXRydW5rCis0MzU0NyA0YTIwNmZjZTVmZTdhODQyOGQ5YWIzZDQzNzBiNWMyZTNjOGE3MDA2IGxlZ2FjeS10cnVuaworNDM1NDggNWE2YzdkNmRlZjBjOWNlNTVjMGU2ODVkZGU3OTJmYTUxMzgzZDAwOSBsZWdhY3ktdHJ1bmsKKzQzNTQ5IDNhYTBhNDgyNzg4OGIyNDQ0ZTkwZjExYmNmN2JhNjlkMGQ1MDIwZmUgbGVnYWN5LXRydW5rCis0MzU1MCA4MDY4YzIyYzM3MjRlNmNmZTM0MDg0OWY0ZTcyNjk2ZDdkNTQ4YjZjIGxlZ2FjeS10cnVuaworNDM1NTEgNTNlZjZjMzc3MjcxZGY4ZGM4ZGIzYTU0OGUwMzRjYjdlMTAyZjEzOSByZWxlYXNlMjQtbWFpbnQKKzQzNTUyIGY0ZDg4Y2ZhZWM2MGFjNTIwZTc2ZDIyYTUyNDA4MjE1OWQ2NWUxYzIgbGVnYWN5LXRydW5rCis0MzU1MyA0ODM3NzIyYTYwZjAzZDk2NTZmYThlMDQ3NGU3MDY3ZWFlNmZmOTkyIGxlZ2FjeS10cnVuaworNDM1NTQgY2YxMGYyNDQzNTQyZjZkMmJlNGU2ZDk3NDVjNGNlN2U3ODVmYzY5ZSBsZWdhY3ktdHJ1bmsKKzQzNTU1IDJjZjNiNWM0NTFkNzQ1YjM1NWMzYjJjYTZiYTE4MjFlZGFiNzI4NTcgbGVnYWN5LXRydW5rCis0MzU1NiAyNjBlZTM5MWY5MDhmMjNlMmVlNjk3MDYyNzRjOWMzMTVhY2VjODQ5IGxlZ2FjeS10cnVuaworNDM1NTcgYTA2Njg1ZjA4ODg2N2ZhN2JhYzdiODdiY2M4MzAzNTY0M2JlY2U1OCBsZWdhY3ktdHJ1bmsKKzQzNTU4IGU5NTUyODRjZDY5NDAyZGFiMjU4Nzc2M2VjMWYwZmUyMWYzNzFlMGYgbGVnYWN5LXRydW5rCis0MzU1OSA4NWIyNmY0ZmEyYTUwNGZkYjUzNGM5YTUxMjY4NjllYjAyYjc2MzljIGxlZ2FjeS10cnVuaworNDM1NjAgMjgzNGNjZjU1MmYzN2Y2N2NlN2FhZGJlODYyOWY3Y2U0NDhmYTQyNyBsZWdhY3ktdHJ1bmsKKzQzNTYxIGE2MGE5NDQzZThkYWQ5ZTJmZDA4ODY0Y2Y4YmFlYWRiYjJhMjQ5ODggbGVnYWN5LXRydW5rCis0MzU2MiA5YzJhNDYyZDY2YmI3M2FhYzhhODQyZDYxYWU5NTMwODJkZDRjODY2IGxlZ2FjeS10cnVuaworNDM1NjMgNDAyMGNmNmMzODNlMDYwNmU2ODVhNDk1Y2JiMGYwMmI5NTgyMTkyZSBsZWdhY3ktdHJ1bmsKKzQzNTY0IGVhOWEwM2I4YjlmNmIxZWU2MGNmMzVmNTIxNGUwNjNhNmIwNDIyYjEgbGVnYWN5LXRydW5rCis0MzU2NSBkZmMzM2VjN2Y3M2E4NWZlYWIwODI5MDhjYTFhODA3OWFmZjg4YzIzIGxlZ2FjeS10cnVuaworNDM1NjYgNzgyNjA0OWFjYjRiMWQzYWMxMTJjOGI1ZjdiMGMyMjM4ZjVjYWVkZCBsZWdhY3ktdHJ1bmsKKzQzNTY3IDUwMWZkYTUxMWIwYWJkNGQ3ZGFkN2Y2ZjIzNGY5MmY2NDk0YTRiYjcgbGVnYWN5LXRydW5rCis0MzU2OCAwOWI4ZTVhMTIxNDZjYzk4Zjk5NzMzOGZjOGI0NWEzMDMwODkxOTNkIGxlZ2FjeS10cnVuaworNDM1NjkgNTQ2YjYzMTkyNDAwNjJlOWU2NGE3YmFjMmM5MThkNzJkNjJmMDIyOSBsZWdhY3ktdHJ1bmsKKzQzNTcwIDEwMDQwZDE4N2MyMTA0ZjU4ZmJiZDRiNDZmZDM1MjBhOGExZWRhMzIgcmVsZWFzZTI0LW1haW50Cis0MzU3MiBjZWE1NGM5ZDkyMWQ1N2E5OGU0OTRlM2IzZjFmNGJlZGI0NzY3NGJmIGxlZ2FjeS10cnVuaworNDM1NzQgZTgyYWE4MDQxODIxYTM1OTMzMDUxYTcxNWMyZGYwODFhNWVmZTJjMSBsZWdhY3ktdHJ1bmsKKzQzNTc1IGEzNDgxODcxMTMyY2U2NTVjMTQ0NzQyMjU1YzdmZDg0ZDI3YmQ3ZTAgbGVnYWN5LXRydW5rCis0MzU3OCA3OTg2YTViMTMxZWQyYzA3ZDQ5ODIxNzFhMjAwNzNjMWZlZmZmOWViIGxlZ2FjeS10cnVuaworNDM1NzkgZTk1NmUxNmU3NDQ0ZmIyNGJjOGZkMTQyNjdkZGE2YWVhNTNlNWI0ZCBsZWdhY3ktdHJ1bmsKKzQzNTgxIDU3YjFmZjEzODk5NWU4NzAxOWE1NWQ1ZGM1M2Q0ZTdiZmYyMDY0NDUgbGVnYWN5LXRydW5rCis0MzU4MiAzZWVhNjViYjg5NmVkYzA2M2YyN2FiZjA1NDg2Nzk5ZWZiNzQ1YThmIGxlZ2FjeS10cnVuaworNDM1ODMgNTEzM2I1YjBiNGE4NDU4ZGQ1ZTg1OTc1MGJhNDUxNzZkZmY5ZjE1OSBsZWdhY3ktdHJ1bmsKKzQzNTg0IGUxNDI1NWRmN2ZkMTYxZTg4MGI0NTdhYWZkNmY5YjkwMDlhOWNjYzUgbGVnYWN5LXRydW5rCis0MzU4NSA5MmExN2EyODIxZTA0ZTE2OWJhYzE0NTk4MjIxMDhkYzAwZDgxMGQ2IHJlbGVhc2UyNC1tYWludAorNDM1ODYgZWI2OWQyZTMxMzRjZWIwYTUzZDQ2ZjJiOTcyZTdhNjJhMThhNTA2NCBsZWdhY3ktdHJ1bmsKKzQzNTg3IGU4MTRhZDk3MGZjNmE5MTY1ZDA1ZjQxMzhhMzI0ZmZmMTkyYmQ0MzQgbGVnYWN5LXRydW5rCis0MzU4OCBmYmM2MmRiOTdlNDM5YzViZmYxNTIxNWRiNjgyODRiNDRlYzdhNjVkIGxlZ2FjeS10cnVuaworNDM1ODkgYThjZDkwNWZkOTZjZDNlYWQyZWUzYjRiNTM3ZDU1MmNjODljODgyYiBsZWdhY3ktdHJ1bmsKKzQzNTkwIDc5NmFjZGU3MDE5NTQxMWYxMzA2YzFmMTFlYTE4ZTEyZGEzNTE0YmEgbGVnYWN5LXRydW5rCis0MzU5MSBiZGJlMDdkOTZiOGVmNGRiMzVjYTFhNDdiMTFjM2NmMzk1ZjY0MmFhIGxlZ2FjeS10cnVuaworNDM1OTIgMDFmZDA5M2I4NzhjYzc3MDIzZjQ1YTZkMjMzOTJjMTA5NzJhMGYyZiBsZWdhY3ktdHJ1bmsKKzQzNTkzIGJiZTFjZGM5MjYwNTFhZDgyOGM4MDQ1ZTMwYzAzZGJlYmFlYTJlNmEgbGVnYWN5LXRydW5rCis0MzU5NCAxMTU0MjhiYjFkM2Y2NDViZThmODg3ODBkZWM1OTU2ZWE2ZmY1MjI3IGxlZ2FjeS10cnVuaworNDM1OTUgNWNjNmQ3MTUzN2EzMWE5NWYzZDM5MGIxYTY3MzdkZDA0NGZkMmJhNiBsZWdhY3ktdHJ1bmsKKzQzNTk2IDZkNTBmZDM2NGNmNWNiNTk2ZDNmMGQ0MmU3YzU2OTE3ODUxODViZDkgbGVnYWN5LXRydW5rCis0MzU5NyBlNDU3YjI0Zjk4YzUxZjczZjgwNjllZjFiNGYyOTI4NzNhYmM3ZjhiIHJlbGVhc2UyNC1tYWludAorNDM1OTggMzVjNGIwOTMzYThiN2U1OWQxNjRiYmI0M2E1ZDNlN2E2NTE5NjdiMCByZWxlYXNlMjQtbWFpbnQKKzQzNTk5IGY1YWQzYzdlYzJjYmY0NTNiZmU1YjhhMjI5Yjk1ZjM4YzYzYWQzMWQgcmVsZWFzZTI0LW1haW50Cis0MzYwMCBiYzlkNTNjMDBkYWQ2YzM2MzAxMDQ3OGRkMzA0MTYwMmQ1YTFiMzE1IGxlZ2FjeS10cnVuaworNDM2MDEgZTJiM2E3ZDlhY2E5MThhZDVjNTI2MjcyMjVmOWY2Zjc1YWI5NWI3MyByZWxlYXNlMjQtbWFpbnQKKzQzNjA0IDEwNDllOWFlYjM4NTA5ZmVlZTFkYTUzYmEwZDFiZWRjNDgyYjFlNjkgbGVnYWN5LXRydW5rCis0MzYwNiBhMzgzMDM3N2UxYTc5NjIxOWMxMjRiZmRjZjI5MGJlMzMwMTI1MWNiIGxlZ2FjeS10cnVuaworNDM2MDcgMmNkMWU1YjE1ZTA1MGRlM2JkNmU0YTNjYTdjMzY1YjJhNmU2MzNhZCBsZWdhY3ktdHJ1bmsKKzQzNjA4IDI5YTA2YTJmM2YyZDhmMjU4MzdjNjc4MDVkMTBlMGYyOWRkOTQwNjQgbGVnYWN5LXRydW5rCis0MzYwOSA2MGJlZDY0MWI2ZDAzMzAwNDQ1M2Y4Yjc2OTQyY2VkNDEwZjM5YzI1IGxlZ2FjeS10cnVuaworNDM2MTAgNWFhM2NlZjRhOGE3YjQ5MjJhYzgzYjlhNDUzZDVhYWYwN2I4MTJkZCBsZWdhY3ktdHJ1bmsKKzQzNjExIDZkYmVhOTExZTg4MTBhNGEyNTMyNWE2NmE4MDRmYWQ5YzYxZGVmYjcgbGVnYWN5LXRydW5rCis0MzYxMiAwZjNiN2FmYTE4N2FlNjZiZGMxNzYwZDBmZWVkYmJkYWM4MjM2ZDhmIHJlbGVhc2UyNC1tYWludAorNDM2MTMgNDlkYmVkZmIxZDc0ODMwZTZhMTU1OTkxNzM2ZDlmMzNjMWE0ZTk0YiBsZWdhY3ktdHJ1bmsKKzQzNjE0IDE2YTY0ZTM5NDYwMjJmYjhiMzFmNmFjNTI0MmFiYWFlZTljZTllMmEgbGVnYWN5LXRydW5rCis0MzYxNSBlZmY2YzUzNDgzZmYzOWEzMjY0NjNkNDcwOTlkNjMzZjYyM2VjMjI2IGxlZ2FjeS10cnVuaworNDM2MTYgMDdlNDRmZDA2Y2Y3NjM5ZTc4NTE5NTJjYzdlOTcyZGZmYTY3OGNkZSBsZWdhY3ktdHJ1bmsKKzQzNjE3IDJmNTdkYTkyMWFlZjdjMWVhNjc5OWM3OTlhNzJlNTRhYzU3OGI1Y2MgbGVnYWN5LXRydW5rCis0MzYxOCBkY2NlODFiN2U2NGQwM2M4NTU0MTljMjIwN2Y0MWY3YzlmN2MxNGZlIHJlbGVhc2UyNC1tYWludAorNDM2MjAgZDI3MDU4YzQwOWRmM2M2OTVjZGM1MDczOTk3MzBkNmRjZWQwNTg5NCBsZWdhY3ktdHJ1bmsKKzQzNjIyIGMxY2VmMWQyZGNjZjRiOTg0MWY2ZDBlNDQ4NzA3YzdhMzVmMjVhZjUgbGVnYWN5LXRydW5rCis0MzYyMyBkMjY5N2M1MmNjYWU1OWI5MmIwMGI3M2FlZWFhMDYyYmJiOTAxNTNlIGxlZ2FjeS10cnVuaworNDM2MjQgNmFiMTVmYzg1YzJkMGM2OGM3N2NjNjk1Zjg3Y2QyNmJjZGU5YjdmYyBsZWdhY3ktdHJ1bmsKKzQzNjI2IGI2MDMzMDcyOTJmYzc0YWU4NmFmNmE1NThlZTEwNDM3YWRjOGEzYzUgbGVnYWN5LXRydW5rCis0MzYyNyBhZGQwMDc4NzBiYmRhZDM5MDkyMWQ5MjBhNjRkM2QyYTI1ODI2NzkwIGxlZ2FjeS10cnVuaworNDM2MjggZDM0NTE2NTg4MjcyYWVlMWM4M2I5OGU0ZGI1NDNiZmE4OWZjZGE3OSBsZWdhY3ktdHJ1bmsKKzQzNjI5IDJjMzhlZTRiZGQ4YWIyOTVlNDk5YWI1MzM3NDRiMmVjY2NjMWNkYzMgbGVnYWN5LXRydW5rCis0MzYzMCBjMTE1YjNhZTFjMTg3OWEzYjAwYmVkMGU1N2JiN2FlYzk3MTA0YTZmIGxlZ2FjeS10cnVuaworNDM2MzEgMWYxMDlhNDk1M2M2OWEyMzkxNjkxMTQ0ZjY2OGIxMWViN2Y5MGVmZSBsZWdhY3ktdHJ1bmsKKzQzNjMyIDA0YWZiMzY1MDg0NzYwZWFjZWE2ZGQ4YWRjZmEyODI3ZmEwNGZiNjQgbGVnYWN5LXRydW5rCis0MzYzMyBhMTdiNTI5NGU5OTNjYTk2ZmMxMDFjZTViOThkZjk5YzkyMjEzMDQ3IGxlZ2FjeS10cnVuaworNDM2MzQgOWVjYmNlNTVhNDU0NjVkOGEwNGJiZTRkZTk0MDdmOTI3MjZlYjc3YiBsZWdhY3ktdHJ1bmsKKzQzNjM1IDhlZmRlZjJlY2YzYjE5NTg1ZDEyNWJiZDAzMjI2ZDY0MDkxZjc5YjEgbGVnYWN5LXRydW5rCis0MzYzNiBmOGZjMzBjMGZjN2MzNDUyMTkzYTFmOGMzZjNiMWU5YjhhODZiNzc5IGxlZ2FjeS10cnVuaworNDM2MzggMjBmZmMyY2EwM2UwY2E1MWJhZjg5NjYwZDhmYjljM2U2OTY2MjAxMSBsZWdhY3ktdHJ1bmsKKzQzNjM5IDYyNTY3YmJlN2Q4OGRhNThiMDE0ZTkwMzljMGNiZWM0NzNlN2Y4MDUgbGVnYWN5LXRydW5rCis0MzY0MCA1OGI4ZDI5ODIxNDRmODhkMzY1Y2I0OTkyZGI5YWFmYTk0NDYzNjYwIGxlZ2FjeS10cnVuaworNDM2NDEgZTY1ODI5MDVlZWJhNmI1NmJjN2YyNWEzYWRiODY0MTQ4ODhhYjcyOCBsZWdhY3ktdHJ1bmsKKzQzNjQyIDkwM2UzMTYyMDk5ZTI5MGY4OGIxYmU1MTcxODhlMWNjOWU4MDNmZGQgbGVnYWN5LXRydW5rCis0MzY0NCA4NTJmMWMxYTg5YjRkMzRlNjE3OTg3MTQ4MTYyZGI3YTkyZDAwZDMxIGxlZ2FjeS10cnVuaworNDM2NDUgZTcwOWU2Mjg4NmU2MDM5NDUyMzk1MjA1MDM1OTEzZGZhYTI1N2JkMSBsZWdhY3ktdHJ1bmsKKzQzNjQ2IGQ2ZWNiYTU5NmUxZTY4OTFkMDRhNmExYmQ4ZTY3OWYzOWFlN2IwZGYgbGVnYWN5LXRydW5rCis0MzY0NyAyOTYzOTJjNzEwNjkwZTYwZGQxNGQzZDRlYmIxMTNjMzdkNWY5MzYxIGxlZ2FjeS10cnVuaworNDM2NDggNGE5OTljNmUwMGMwMmZkYTVhZTAxMzU1ZTU4YzVkMjZkODk2N2YzNiBsZWdhY3ktdHJ1bmsKKzQzNjQ5IGE5ODJiMDJiZWMwYmYxODQ1MDYyYmY1ODVhNGZkMWE2YTFhNTE1YTYgbGVnYWN5LXRydW5rCis0MzY1MCAxMDVhOGRkMDE4NTE2NjUzYmQwMTVmNjY2Yjc4M2FhZTNjNzkwNjg0IGxlZ2FjeS10cnVuaworNDM2NTEgODk2ZjlmZWFkMTdlNzIwZWM0YTIxZGUzYWMyMTQ1MThkYTg0ODQ1ZiBsZWdhY3ktdHJ1bmsKKzQzNjUzIGEwZjJjMzhkODVmNDUzYWM5NmU1OTZlZmYyN2UwYzA0MTMzMGM5YjUgbGVnYWN5LXRydW5rCis0MzY1OSAzOTViMWY1Yzk3NTE0OTNjYWU3MWI0ZTg0MTQwY2FkZjE5Mjk0NjY4IGxlZ2FjeS10cnVuaworNDM2NjAgNGI3NjFhNjMzOTljNDI3YmI3OGI1M2QyZjg3NjJmMmM4NDdmYTQwOCBsZWdhY3ktdHJ1bmsKKzQzNjYxIDY5Zjc5NTE3NzYxZDEyYTYzZWVmMDZkZGRlZDc5MTAwYTFmNTFhMWYgbGVnYWN5LXRydW5rCis0MzY2MiBkYmY1YjJmMmE0MjkxNjg3MDE3NDI3NmQxYThjNjVmMDM2NDMxNDVhIGxlZ2FjeS10cnVuaworNDM2NjMgNjUzMzM4YWE2OWYyZDdkYzBkMTZiZjcxZmVlNjk4YzIyMmIxZTkyMiByZWxlYXNlMjQtbWFpbnQKKzQzNjY1IDA5OTkwNjYxMjI2ZGJhYTVjMzBkZTE0Yzk0N2RiNGQ2MDEwNWFkZTMgbGVnYWN5LXRydW5rCis0MzY2NiBlZDZmZTcyOTEwODM5OThlNTZjMzU5ZmY2NzIxOTRjMDcxMGU0MzJiIGxlZ2FjeS10cnVuaworNDM2NjcgOTc2YzAxMDkxYjM4NWRlZDkwNDUyZTFiZjVmNTg0ODI1MzVhZThhMyBsZWdhY3ktdHJ1bmsKKzQzNjY4IGQzOTY5YWViYTc3N2QxMDA2Y2RmOTlkYjQ2MGE4ZGM4YTQwZTM4NzIgbGVnYWN5LXRydW5rCis0MzY2OSA0ODk4ZjE5NmEyNGRlYmNlZDViNDg1ODc1NjA4NzQ1YTM4M2FhNGQ0IGxlZ2FjeS10cnVuaworNDM2NzAgM2Q0ZjM1M2MzZDRmYjI2OTQ5NjJiMjU2NGQ3OWVkOTc3YjIwYjJhZSBsZWdhY3ktdHJ1bmsKKzQzNjcxIDQ4ZDEyZGVmMzJiM2M4Y2ViOTk0NDdmMDBmN2ZhYmI2ZGU3YTNlN2YgbGVnYWN5LXRydW5rCis0MzY3NSA5N2JjMzQ4ZGJjNWRmMmQ5ZDg2MTkwY2FhMzQxOTY2MTA5ZTRlYmMyIGxlZ2FjeS10cnVuaworNDM2NzggNWVjODg4M2EyZWY5YTE2NDJiNmMwN2ZjYmQ3NjhmNDA3ZDcxNTRmNyBsZWdhY3ktdHJ1bmsKKzQzNjc5IGY2NjM1ZjMwNDY5NWU2NmJmNTk1OTM4ZGY3NzNjMjA5ZWQ5YzRkYjAgbGVnYWN5LXRydW5rCis0MzY4MCA0OGNkZTJmOGQ1MGUxZjEzOTMyMWQ0NGNmM2ZmNzc4YmZjYTQ3ZmY4IHJlbGVhc2UyNC1tYWludAorNDM2ODEgMzY5YmI1ZjY3ZWY2ODU3ZDMxNTBiNDBiM2I1N2FlYTgzYTIyMDhiOSBsZWdhY3ktdHJ1bmsKKzQzNjgyIDk2MGJmNmFhODU0ZGQ2NjVjY2ZhYjlkYjM4OGE4YjExMGU2MDg2ZjEgbGVnYWN5LXRydW5rCis0MzY4NCBmYzhjOTBhNDRlNjhiNzkzMjc5YjNmNTBkZmMzM2I3ZDFjYzZiZGMyIGxlZ2FjeS10cnVuaworNDM2ODUgMWRhZjRmN2IzMDIxNmExMWRiYjIxYzE2OWNlMmE2MTNkZGZmZDNhZSByZWxlYXNlMjQtbWFpbnQKKzQzNjg2IDViMTE5ZjI1NmNkZTVlYjExYTZkZjJhMjFiZjZhMGY1YjRlYmY1NjcgbGVnYWN5LXRydW5rCis0MzY4NyBkNWNiNzcyMzIyYmY2N2MzMzM0YzMxMDU4ZTM4ZTA1MTNmOTExNTExIHJlbGVhc2UyNC1tYWludAorNDM2ODggM2YwOTVjNTVjMmQ5YjFkNGQ3YzE3ZTE3YWU0OTE4MzhiMDE0MGE0YiBsZWdhY3ktdHJ1bmsKKzQzNjg5IDQyODQ4NzlhMThlYWQ4NjNlZmY0Y2Q3MTI4NzMwMjczNDg1ZTNhNjUgcmVsZWFzZTI0LW1haW50Cis0MzY5MCBhZDRmNzU1MGQ4YTQwNjI1OGFlOGM2YjljZGQwYjE5NTgyOGU2NDEyIGxlZ2FjeS10cnVuaworNDM2OTEgZDFkZGExMTQ4ZjEwOTY5YjhlMTI1ZjE0N2E0MDAwZmE3MjI4ZjM3ZSBsZWdhY3ktdHJ1bmsKKzQzNjkyIGQwMzIwMWYyZjljMjRhNTkzYjg5ODg2NGYzODY0Y2M5OTJlZDcyZDkgbGVnYWN5LXRydW5rCis0MzY5MyAyYjBhNWVlYzAyOGIwN2RmY2RhYTBiNmMwN2U4N2RjMjE0MjQ4MmNkIGxlZ2FjeS10cnVuaworNDM2OTQgYzE2Yjc1MmVlOTNiYzJhZGE2MWY1MWUzMzcyMjhlYjdmNGVlNjE0MyBsZWdhY3ktdHJ1bmsKKzQzNjk1IDdjZDNiZjIzOTllNjIwYTYzNDJiZmJlYmE5MjBlZDQwZmY5M2YwZTggbGVnYWN5LXRydW5rCis0MzY5NiBjZTRhZjU0MTZkNzY1ZWI1ZmE4OTdkZmUxOGE1ZTRjM2NmODVjMDg4IGxlZ2FjeS10cnVuaworNDM2OTcgNzlkM2M0YWQ5MzEwOWI3OTlhOWI5ZmUxMGYwMWUxZmU4YTJmZGZlNyBsZWdhY3ktdHJ1bmsKKzQzNjk4IGZmNzE4N2RjYTJmMWFmNDExYTNlM2UwMzM2OTQ5NTc2MjUxNWM0ZjcgbGVnYWN5LXRydW5rCis0MzY5OSAyMTE0MTAzN2ExMjMzYmQ5NGVlMjhiZDA0MGQzZmZlYzMyYzg3MGFkIGxlZ2FjeS10cnVuaworNDM3MDAgN2M0MDQ4ZWMwYzY4OGM1ZTU2YTQ0OWRhMDZlNzU0NzQ5N2MxYTg1MyByZWxlYXNlMjQtbWFpbnQKKzQzNzAxIDU1NTZjZTk5ZjIwYzQ4NDZmNzhkNTZhYTczNTRhYTQ3NzE5N2VkNDYgbGVnYWN5LXRydW5rCis0MzcwMiAwYTAxNDg4NDAxN2NkY2M2M2UxZTUzM2EwNTA0MGMzODFhYzRmNTY4IHJlbGVhc2UyNC1tYWludAorNDM3MDQgMDE4NDVhMjQ3YzhiMTU1ZTZhNjYwMzA0ZmVjZGViOWM4MmZlYTI5ZSBsZWdhY3ktdHJ1bmsKKzQzNzA1IDhjNzgyODhkMGRiYmIxNGI4MWYxMDg4NDRmMzZlZmI2OGM4ZTk2YzYgcmVsZWFzZTI0LW1haW50Cis0MzcwNyBiNDNkYjg3YTk3NTIzOTdlYjE1ZjViODU1MDU0NzFhNzFhZmY4YTM5IGxlZ2FjeS10cnVuaworNDM3MDggMGFlMWZhZjQxMWZmZjIyNDE1YWM4ZWU0ZDk2MWIzMzJlMTJjNTYzMSBsZWdhY3ktdHJ1bmsKKzQzNzA5IDBhNDVjYjMwYjY0ZTBiZWMwOTNhNmQ3ODkxZjlmNThhZmZjMjNmOWIgbGVnYWN5LXRydW5rCis0MzcxNCBhOWRmOWIwYmE0MTY1ZTRjOGE1ZTBlZjE5NWIzYzlkMWI4NWYwZWI2IGxlZ2FjeS10cnVuaworNDM3MTUgM2M3ZWE1MDUxOGJlMjIxNWNjM2IxMjE5NmZiZjlkODhmMWQwN2I4ZCBsZWdhY3ktdHJ1bmsKKzQzNzE2IGQyMmNiMTRkYTY3MTQzZTc4MDhhODIyNjEyM2I2MDA1ODVhNTFjODcgbGVnYWN5LXRydW5rCis0MzcxNyAxNTgzZDNmZGRkY2Q3NmE4MDI5YjhlYzNjOGRiYmQ2NmY5ZjgyYmQxIGxlZ2FjeS10cnVuaworNDM3MTggYTk0NzBlYjYzN2YxOTQ4ODA3NzFjODAxNTRjMTNlYWNjOWQ5Y2NhNCBsZWdhY3ktdHJ1bmsKKzQzNzE5IDg2OWYzYzlkNzQwMTQwMGVlMTBjNGE5NWJmNWNiZjNkNDhiYTBjOTUgbGVnYWN5LXRydW5rCis0MzcyMCBmOGM0YWE1NDEzZGJhMGY2ZDhjMjM3YWJiNTAxOWQ1YWFiMGQ3YTAyIGxlZ2FjeS10cnVuaworNDM3MjEgOWJlZDMwZGY3YTRhZWE5NDgzNmU5NmVjNTVjZDk5MzAwMjQ5OWNmMiBsZWdhY3ktdHJ1bmsKKzQzNzIyIDViYzJiNGUzZmZjMTY0NWYyYmUzY2ExZGNmYWRjYWM2NGE5MWFkYWEgbGVnYWN5LXRydW5rCis0MzcyOSA5MDA2ZjkyMjNkODBiNWM0NmQ2ZTU0YWNlNDZmMTcxMmNjNGMyNTJmIGxlZ2FjeS10cnVuaworNDM3MzAgMTQ5ZmU2ODRlNDAxNjA5NmJkNmE1MmQxZjc3YmU4M2I1ZmRjMWVlYyByZWxlYXNlMjQtbWFpbnQKKzQzNzMxIGIzNjY2YzVkZGQ4YTBhOGJjOGNiMmVlNThiM2U0NDNiNjhhMTQ2YTIgbGVnYWN5LXRydW5rCis0MzczMiA3MDczMTI1MmRhMzQ2OTMwNjU0NjNjYzRjMGRmODdhZTA2MDk3Zjg1IHJlbGVhc2UyNC1tYWludAorNDM3MzQgYzE3YzUyMTkzMTY5ZWU0NGM3NTIyMWYzOTJmNzAzMGUwNDMxMTBhOSBsZWdhY3ktdHJ1bmsKKzQzNzM1IGE3ZDY4OGViZTNlMWEyMDMyOGY5NDRlYTg1ZTZjZWFjY2E1MjNlNjAgcmVsZWFzZTI0LW1haW50Cis0MzczNiA0MzE2MTNiYzkzNWU5NWEzNjhmZTEyZWUwZTdjYmEyMzI3MjFjMDU2IHJlbGVhc2UyNC1tYWludAorNDM3MzcgNzA5MjY2MjZjNmEwYTM0MDAwZTQ0ZjJhZTZjZGMzMjhmZjc5ZTljMSBzdGRsaWItY2xlYW51cAorNDM3MzggYmE4ZjI3NjRhYTRhYzA5MDAxZmU4OTkzMThiZjQwNDE3NmZiODU2NCBzdGRsaWItY2xlYW51cAorNDM3MzkgYThkNDkyODI5MmQ4YjJiMjI4YWIwZTVhMmE5NThiMmE4ZDIwMDhmYiBsZWdhY3ktdHJ1bmsKKzQzNzQwIGVkYzZhMGNjODQ2NmJlNjFlZjRlMTg4MTExNWUxZGEyOGUwNDI5MTkgbGVnYWN5LXRydW5rCis0Mzc0MSA0ODMxMTQwMWEyMGVhMzY2YTVlMTVmYmE3NTNiMGQ5MGFkYTc3ZTc3IGxlZ2FjeS10cnVuaworNDM3NDIgZjFjNDQwNmJmNDgxZWFkMjM0NTlhMmE3ZWIzYTI1OGZhYjE2ZDBiMCBsZWdhY3ktdHJ1bmsKKzQzNzQzIGIwNTI4ZThjNmI3ODQ0ZDk1MzY3ZTI3YmQ3MTYzZWY0MjNlOWI5ODkgbGVnYWN5LXRydW5rCis0Mzc0NCAwMzQyYzVmMGY0ZmY2NWMzNmYyZjg1ZGIwZGY2NzI1NzA5MWIzOTY1IGxlZ2FjeS10cnVuaworNDM3NDYgMDQ2ZTZlMzQ4MzgxNzY5NTQyN2IyNGQ4MzkwZDdmODBiODZmNmQzYyBsZWdhY3ktdHJ1bmsKKzQzNzQ3IDJjZGY1MjdiNThmNmEyOWFiYmY2MTYzMjE5M2RmZmMxNGJiYzQ2MTAgcmVsZWFzZTI0LW1haW50Cis0Mzc0OCAzOTU5ODEwYmM1NDkxMzI2OTJjM2Y0M2EyZDRhM2NkNDdjMTNmMWI2IGxlZ2FjeS10cnVuaworNDUyMjEgMzZiY2I4M2VjYmFkNTNlYjYzZTIzZGE0MzQwNDk5NGM4ZjA5NjAxNCBsZWdhY3ktdHJ1bmsKKzQ1MjIzIDIzMWU0MmQwMzYyZWQyNjdkM2IzNTMyNTg0YTZmNzQ5NTk4OWFiNGEgbGVnYWN5LXRydW5rCis0NTIyNCA5YmRhNWJhNDE2NzdjZjZiMzE0MDNkNWViNGY5NTg5ZGI1ODBmOGU4IGxlZ2FjeS10cnVuaworNDUyMjUgNmFlNGFkZWZjNTczYjhlYjA2YzlkYWE1NThlNDllZDg5Yjc2ZDgzNCBsZWdhY3ktdHJ1bmsKKzQ1MjI2IDI4NmM4MTY4OTgyNmNhYmIxNTc3MmYyYTE5MjFhODY1MDg0NDFhNDYgbGVnYWN5LXRydW5rCis0NTIyNyBhNzhiYzBiYjM0NTk2MmU2OTAyOWNlM2MwOTkwODg4YjE0YWRjYTc5IGxlZ2FjeS10cnVuaworNDUyMjkgZWIwYjk5MjdmZmZkMDI1Mjc2YTk2ZGRjMjQwYWFlMjg0OGE4YzQ4ZSBsZWdhY3ktdHJ1bmsKKzQ1MjMyIGJkMzc1Nzc3OTMyZDkxYTNmYjAwOTQ5MmIyMDhmZGRhZjk3ZWE3MDkgbGVnYWN5LXRydW5rCis0NTIzMyAwZjJlODZkMDhkOGFmZjIyZjA5MjljN2Q5OTE3YjZkOTBkMjE1ZTlhIGxlZ2FjeS10cnVuaworNDUyMzQgNDIwMjNmNWI3ZDZkMWRkNzNiMWU0OTFlN2Y5NzMyMWQ4YTI4ZGZiNyBsZWdhY3ktdHJ1bmsKKzQ1MjM1IGM3ODJjZjZiNTE2ZTQyZTg3NzE0YTlkN2M1ZmY2NTQ3YmYzYTA3ZDggbGVnYWN5LXRydW5rCis0NTIzNiA4MDk0Y2MwYzk4ZDdhNjQyY2EzOWFhNzA5ZDBjYjg4NDU5N2E0ZDM0IGxlZ2FjeS10cnVuaworNDUyMzcgMzM0MjNiODQ1NTU0MDk2YjIwMjFhM2UxZmY4YTg0YzA4YzQwMGQ3YyBsZWdhY3ktdHJ1bmsKKzQ1MjM4IDNkNjAxNTEzOTJjMjI1N2Q2YjZhNTc5ZGEyOTlmNzAxNmYzY2ZmZGEgbGVnYWN5LXRydW5rCis0NTIzOSAyMTNjNDE5OGZlMjNkOWJkNTg1ODVlNjFmMzhjNDcyNzcxYTY0Y2NjIGxlZ2FjeS10cnVuaworNDUyNDAgYjc0NDBhYjVjZDcwNmY0OTBmYWM4NzA0N2IzZjI3YmI5OTlhYWE4NiBsZWdhY3ktdHJ1bmsKKzQ1MjQxIDViMzUxZGQ3ZDA4MTVkZTBlMjE4YjY3ZjhlNWQwYzliZWZlZjM4ZTAgbGVnYWN5LXRydW5rCis0NTI0MiAwYmMzZjc0YTRhNDcxODQxOWViMmNlOTYwZmFkMmVlN2NkYmIxYTIwIGxlZ2FjeS10cnVuaworNDUyNDMgMmUyMzRmNGZkNzYzOTkwNzM2ZGU2ZDQ5ZDQzNjIwOTgwN2Y0YTc2YyBsZWdhY3ktdHJ1bmsKKzQ1MjQ1IGY2YTFmNTVkM2U1Y2U2YmI5M2RjODhlNTg4YjE3ZTg0MzYyNmVjYTcgbGVnYWN5LXRydW5rCis0NTI0NiBkZDA4NWMxM2M0OWE3NWU4NGJmNzU2YWJlNGRiMGU2ZGEyYzY2MTRlIGxlZ2FjeS10cnVuaworNDUyNDcgZGM5YTM2YzhiNDczMGFiYzhmOTM1ZmVkYTZhNjMxMzRiNGQ0MWQzYyBsZWdhY3ktdHJ1bmsKKzQ1MjQ4IGQxMTM2NmY3ZTFlN2E1ODY5MjEyNjBhMGE1ZmNhYjlkMzkxYzU4YzAgbGVnYWN5LXRydW5rCis0NTI0OSA3Y2I2YTMwNDQ2MGZjMDBhYjBiOTQ4ZDY5ODZlMmI3Yzc1YTdiNDQ4IGxlZ2FjeS10cnVuaworNDUyNTAgZTI5Y2RmODY3OGZlOThlMmRmMGRlMTcwZTM3YjljNWJjYzIyOTg2ZiBsZWdhY3ktdHJ1bmsKKzQ1MjUxIDAwYmY4ZjAwZWM2MzI3NTcxODZjNTkyMGFhNTkzZGNiZThlMTUzNjIgbGVnYWN5LXRydW5rCis0NTI1MiAwNzIwNTA2MTVmYzBjMTY2Y2I3ZDUwZDc2NGNlNzkzZmU3YzU2YmJjIGxlZ2FjeS10cnVuaworNDUyNTMgYjExMmQ4Yzc5ODhjMzE3YzBkZmE5YjY5NjI1MDBlYjFiZGEzODE4NiBsZWdhY3ktdHJ1bmsKKzQ1MjU0IDBhZjdmMTgwODdhMWZmZmFmNDI3OGFjMzZiNTBjZTExNzczNDAyNTYgbGVnYWN5LXRydW5rCis0NTI1NSAxYTNlNzk5ZDA2MzQxYjQxMzk1MTJhMDEwNjk1YzZhYjEzMzQ3MGFhIGxlZ2FjeS10cnVuaworNDUyNTYgM2I0ZmRjNzViZTEyY2U3MWFhNGUxMTk1YmM2ODA3YzlkNjUyNmZmMSBsZWdhY3ktdHJ1bmsKKzQ1MjU3IDI5Mjg1NGM0M2I5OWI5ZjM1OTFhY2YzY2VmMmQ3ZmE4YTdhNjBhMmEgbGVnYWN5LXRydW5rCis0NTI1OCAxY2VkNzlmMDgwNTA5YzQ0NGRkNTE0MTE1NDdiNzEzMTMxODA5YTI3IGxlZ2FjeS10cnVuaworNDUyNTkgYTg0MTZhZDFhNWM1OWMzNDA3NzNlNWE3ODUzN2YxYmIwNmM3ZDBhOCBsZWdhY3ktdHJ1bmsKKzQ1MjYwIDEzZGQzMDk3NGFkNjkxMmU5ZDE4NjkwMTliYmVkN2MzZDYwYmYyMmQgcmVsZWFzZTI0LW1haW50Cis0NTI2MSBhZWVlODViNmE1ZGQ4OGFkMWVjODE1MjNkZmVhMmRhYWRiOTRlMTYwIGxlZ2FjeS10cnVuaworNDUyNjIgZjc3ZGJjMGY5OGUzNDM1MjFmYmQ4NDYzM2VkMGZkYzdkNzhkOTY2MCBsZWdhY3ktdHJ1bmsKKzQ1MjYzIGFkZGU5ZGUxMDI4N2FkNDVkOTcyYjU4NmNkN2M2NDNjN2U5NmQ1ZWMgcmVsZWFzZTI0LW1haW50Cis0NTI2NCA5MjQ1MDRiMDAxOTY0OTA0MWZkNTNlZjI3NDI5YzgwZDdkOWRlMGZlIGxlZ2FjeS10cnVuaworNDUyNjUgYWVkMWMzYzM1YjgzNjNlODM1ODdlOTEwMTMyYTFjMWRmMzFhNWNjNiBsZWdhY3ktdHJ1bmsKKzQ1MjY2IDZkZDBkOGI0YmFjNTc0Y2U0ZDA2ODUyOWRhOWRiMTRhOTIyZTA3NzggbGVnYWN5LXRydW5rCis0NTI2NyAwNTkxZDAzMjJmMDRjMjRkYTVmYjhiNzMxOGMyN2VkY2RmYjgxNWEwIGxlZ2FjeS10cnVuaworNDUyNjkgMWIwNzg0OTNkNTM4MmI4M2Y1MzMzNjdmYzJhYzViZWQ5YTdlNGNmNyBsZWdhY3ktdHJ1bmsKKzQ1MjcwIDJiMmU5YzM4OGZiYmUyMjU1NmM5OGVmOTcwN2QwMzE2ZmJlNjlhNDEgbGVnYWN5LXRydW5rCis0NTI3MSA1NmUwMGM5YjUwMTE3MzQ2NDkyMGI0Y2Y1ZTdiZmY0YzFiNjI2ZjYwIGxlZ2FjeS10cnVuaworNDUyNzIgNDRmYjAzYTZhNTI0OTcwODdlMGVkMmI2NmNiODczMDk2YzAyNmZiOSBsZWdhY3ktdHJ1bmsKKzQ1MjczIGM0YzVlZWIwNzczOWFiNDEwNTUzNzZlYWU1N2UzNzQ2NzFmMzQwNWEgbGVnYWN5LXRydW5rCis0NTI3NCBmNzZiNWQ5ODczMTRkNzQ0NzU4MGY1NWU3YWU5ZWFlYWUwZTg1OTViIGxlZ2FjeS10cnVuaworNDUyNzUgY2E5NWFkNWIwZmJjNjFmOWVkMTE1ZWU2MDA4NmRhMjcyN2U3YTM4NyBsZWdhY3ktdHJ1bmsKKzQ1Mjc2IDM4YWNiOTE4MjRmY2M1NzM1NGYzYzdiZmI1ZGM4Zjg1ZDM2NjNmMTYgbGVnYWN5LXRydW5rCis0NTI3NyBjNzMyZjY2YzkxM2ZkMzYyYmFiYTFjNWIxYTRjMDVkODI2NDI4MTI2IGxlZ2FjeS10cnVuaworNDUyNzggZTA3MGMzMTZlYjQ1NTlhOGZlODk5MzRlMDNjNmI3NTYwNmI3NWQyNCBsZWdhY3ktdHJ1bmsKKzQ1Mjc5IGY0NDhkMDA3NTY5MWY5NTJkN2NkNGJmOGIwOTBhY2ZlNGNjMDlkZDAgbGVnYWN5LXRydW5rCis0NTI4MCA0ODBhNTYyNWUyODY5MjAxNzQ0NzAyMTQ1ZDI2NWU0OTk5OGIwYWY2IGxlZ2FjeS10cnVuaworNDUyODEgYjc0ZDNhZGJmODg4NWVmYmRhMjRmZTkyOGQzMWMxNmNkOTk3ZWJiOSBsZWdhY3ktdHJ1bmsKKzQ1MjgyIGU2MGIzMTY0N2E2YjMxZDA3YTE3NTE1OTY1NzllM2FkZjZkODU2NDIgbGVnYWN5LXRydW5rCis0NTI4MyA3ZWQwZjAwM2JhNjMxMzZhMTU4ODIwMzE4N2JkNjFlMzFlOGNjYjA0IGxlZ2FjeS10cnVuaworNDUyODQgN2FmYWE3NTJjNzcyMDhlMzNmN2QwZDVmNzY1OTYwYTZhODgzOGM4ZCBsZWdhY3ktdHJ1bmsKKzQ1Mjg1IGNkMTk1ZTA3M2RkNDY1ZDBmNWEwMGZiZTJiODg2MTA2NDZlZTQ1ZWMgbGVnYWN5LXRydW5rCis0NTI4NiAwY2E1MTEyZTNlMTI5YTNkMDg0NTA4ZDBlNTdhNzdlNGRjNDJjZDBmIGxlZ2FjeS10cnVuaworNDUyODcgNzJjZWIxYjMwZDRiYmMyMmFlZWRjNTU3MDIzNzQzNzNmMTc0Yjg4OSBsZWdhY3ktdHJ1bmsKKzQ1Mjg4IDE5ZDk5YjMxNTU1Y2ViY2YwZThjZjQ2MGVhM2Y2N2Q4OGE0NTU1YzAgbGVnYWN5LXRydW5rCis0NTI4OSAxZTlkN2U2NmMxYmNmYTZiYWNjZmRmMjU4NTEwNDgxYWQwY2IwZWQ3IGxlZ2FjeS10cnVuaworNDUyOTAgODk2OGIxMjQyZjE4OTk0YjM5ZDMxMTRhNWJmNTFiNjVhYjE5YzljYiBsZWdhY3ktdHJ1bmsKKzQ1MjkxIDZmYmMxMWEwM2JjYzJhM2I2ODQ5N2ZjNTAyMjk4ZDdmZWVhMTFiNWUgbGVnYWN5LXRydW5rCis0NTI5MiBmMTlhZGRkNjlhZDkzOWYyMGE0NTM0MmI3ZGNiN2VmYmMyODk1MDQxIGxlZ2FjeS10cnVuaworNDUyOTMgYjQzYTk3MDI2NDc5MDNmNTI0NTkyZDgzZGY5YWU0ZjUxZDI4ODA4ZCBsZWdhY3ktdHJ1bmsKKzQ1Mjk0IDE1NzE3OWQyYTRjMzUyMmUyZjQ3Nzc2MWE1OWFhMzgwNDcwMTZiZjEgbGVnYWN5LXRydW5rCis0NTI5NiA4YTE4ODAzNmI3MTNiNGFjZjgwMWE5ZTg2ZDdjMTQyM2U2OGQ0ZjdjIGxlZ2FjeS10cnVuaworNDUyOTcgMmZkNmFkNTgyMjAzMmZiYThhZTZkNTJkMDA4YWE1NzkzOTk5YTMxYiBsZWdhY3ktdHJ1bmsKKzQ1Mjk4IGU4MDhlMmFmOTFmNjM0OWJkM2RmY2YxYmI3MDZhYzQ3NTNlMWVhMjMgbGVnYWN5LXRydW5rCis0NTI5OSBjOGEwOWZkNGYxMGRhN2VlMTAzYmQxOWIzYmJmZmIxOTY5NjdkOWY5IGxlZ2FjeS10cnVuaworNDUzMDAgYzI2ZjVlMjA2ZGU3OWQ1NDg5YzQ1MThkNGRkZGZiMDk2YWZiOTYwYiBsZWdhY3ktdHJ1bmsKKzQ1MzAxIGE1MzkyYmIwNzQ0MDI5Y2YxNWIxNzE3NDZlMzE3MzIxZGU3YjMxMWEgcmVsZWFzZTI0LW1haW50Cis0NTMwMiAwZGQzMmE2YjI5NjRlMjM0MjEwODFjMzc5NmUyM2U1ZmRiNDZlMmVjIGxlZ2FjeS10cnVuaworNDUzMDMgMjg5MTE2YTUyYmIxZThlNjdhMWQ3MjI1MzQxODFlYzRlMTJiNWYxZSBsZWdhY3ktdHJ1bmsKKzQ1MzA0IDFlMTJlYzQ5ZGY5YjRkYjk4NDMwNDQ4NDg3YzBkMmI1MWQ3MDY2NTkgcmVsZWFzZTI0LW1haW50Cis0NTMwNSAzOTlhOWE3MjA5NWY5MzBhMjMyM2E2NjgzZTc3YWY4ZTM5ZmVkYjFmIGxlZ2FjeS10cnVuaworNDUzMDYgMTdmOGFkY2M3M2VkODZiOGY1OGMyZDdkYmE2MzAzMDg1Y2EyZDU5YSBsZWdhY3ktdHJ1bmsKKzQ1MzA3IGFmMDU2YjYzY2U1MzYwNDMwYzEwMWY4MWY1ODdlNWMwNjYxN2ZiMDUgbGVnYWN5LXRydW5rCis0NTMwOCA4ODMxZmQ4MjJiNjA1ZGRhYmViOGM4NDQzYjA0MjFmYjNiZTgyNzEwIGxlZ2FjeS10cnVuaworNDUzMDkgNzY5YzYyNjEzNTVlOTM5YTJiZTA2YzMwYTI5NjdiNjRhNTQ2MDQ1MSBsZWdhY3ktdHJ1bmsKKzQ1MzEwIDJlOGFiNzk3Y2VhZjlkNzQ4ZDg1Y2VkMmFhNWRjYjdkNDY0YTQ0YmMgbGVnYWN5LXRydW5rCis0NTMxMSA5YTZhMDM3NWVmMjI5NWVhZjkxZDIwMzQ2YWFjMjI4YWQyNzU3ZWRjIHJlbGVhc2UyNC1tYWludAorNDUzMTIgNjVlY2I4M2VhN2RkZmQyMzJlZTgwZTFiNDk0NDljM2VjNGE3NTVjYSBsZWdhY3ktdHJ1bmsKKzQ1MzEzIGJjNGZiYmIyZGIzMDA5ZjBhYjdjMGZhMDg5ZjY3MDlkNTI1MGRhYmIgcmVsZWFzZTI0LW1haW50Cis0NTMxNCBmZWQyOTdjMjA2MmQ5MjhhMDA0NjUwOTliNzFkZTU2MzNiOTEyMzZjIGxlZ2FjeS10cnVuaworNDUzMTUgMzZlMTc2MmVhZDg2YjgwYjBhY2Y5NmQ3YjI4NTY0MjIyNjk4OGRiOCBsZWdhY3ktdHJ1bmsKKzQ1MzE2IDIyZjJjOTJhMWRhN2Y5NjVmYWZjY2VmNjYyY2I2NjZiMGU5Y2RjYTggbGVnYWN5LXRydW5rCis0NTMxNyBhZDQ4NmU0ODc1YzZlMTgzYjUwZjMxZDc3NGJkMTg2ZjE0ZjNlNmY2IGxlZ2FjeS10cnVuaworNDUzMTggYzZlMTFmODA0ZDAwZjc2M2Y0MDE1Zjg4MmEzNWUzNTlhY2M3NTkzYiBsZWdhY3ktdHJ1bmsKKzQ1MzE5IDJjMDY1ODhhZTY5ZTYyODJlZmZkZTVjNjYzMGVhNjk5ZTRmNmNjNmYgbGVnYWN5LXRydW5rCis0NTMyMCA0MjJjZGQyNGFmNDZjNDc0ZTQzOTc0ZTI2Nzc2NDE0M2QxMjk2MjhjIHJlbGVhc2UyNC1tYWludAorNDUzMjEgMTBlNDdmMjdlYTM5ZmEwNzY4NmIwZDYwYjY1YTA5Y2QxODQyNzdlYyBsZWdhY3ktdHJ1bmsKKzQ1MzIyIDQ1NTFkYTg0NzY1MWFjYzI2MWEzM2JmMmNmZWU3ZWE1ODEwMDRhMDAgcmVsZWFzZTI0LW1haW50Cis0NTMyNCAyMWZjYzg2ZTQ4MjA4MmJlYzZiZDhkM2QxOWQ1MzE1YzAyNTQwNjI4IGxlZ2FjeS10cnVuaworNDUzMjUgOGM5OThjNzYwMTkxMGVkNGVjYTUzZThhMDMyMGViYjhhMGE4ZDFjNiBsZWdhY3ktdHJ1bmsKKzQ1MzI2IDc0ZDA0ODM4Y2QxMTI3NGZhNjE1MzgwMjA4YmMzNmJhN2M4ODdkMGEgcmVsZWFzZTI0LW1haW50Cis0NTMyNyBiNWY4OTljMTg3ZDRjNWNlN2ExN2RhMTY5ZDlhNWIzMDU1OTk0N2Y2IGxlZ2FjeS10cnVuaworNDUzMjggMTI1NjcxODllZjI1NzFmZGZhOTYyZGYzODViMmEyNzE0NmExNmY5MiBsZWdhY3ktdHJ1bmsKKzQ1MzI5IGRlYzI1OWU0ZDg5MTZjNjVkMDAwNWFlMjQwZjAzNzhjYWM1YjdlMjggbGVnYWN5LXRydW5rCis0NTMzMCAyZjNmMmUzMmRmZDlkNzZlNzE5ODYzZWUxNWJlYjAxMTk5MWFiY2Q2IGxlZ2FjeS10cnVuaworNDUzMzEgN2RmMGM0NGYzOTg2MjM2OThkY2YzMGZiOGU3MzcwNDFjNzllODYxZCBsZWdhY3ktdHJ1bmsKKzQ1MzMyIGI2MzE5YTY5OWRhYmExZDU5ZWU5NjAyYjk0OTAwYTMyNDA4ZDUwNTcgbGVnYWN5LXRydW5rCis0NTMzMyAyYzA4NGQ4MWM5NTE0MDFkZDA5ZTAzZWFkODIxZjJmNWJmMmRmYzM5IGxlZ2FjeS10cnVuaworNDUzMzQgMDU0YWNlZGYzYzBkOTBjMTQ0MTliOWRlMDE0ODBhMThkNDRiYjkyYiBsZWdhY3ktdHJ1bmsKKzQ1MzM1IGY0NWJjMjQxZTIwMDBiMmVhMmM3ZTM2MTYxY2EyMTU0ZWU3MTVlZDkgbGVnYWN5LXRydW5rCis0NTMzNiBiMWM2YTM4NjRiMWU4YzE2OTA4ZWE3MzBjOWRmYWNkMDMyMmU3NDhkIGxlZ2FjeS10cnVuaworNDUzMzcgMDY3OGNlOWZiNmIyYjExMTBmYjZiNjY5M2UyMzk2YWIxNWM2NWYwZSBsZWdhY3ktdHJ1bmsKKzQ1MzM4IGE4NDBlOWJhZmY5NmNjOTcyNTZkYWMyZTVmNGQwMWQyNjYxZmY2ODEgbGVnYWN5LXRydW5rCis0NTMzOSBkMTNkZWQ5MTY1ZWM0NDE0MWYwODBhMTY5MTk1NDAwNmIyZTNiNGZhIGxlZ2FjeS10cnVuaworNDUzNDAgNjY2NzZhOGVjYjUyY2U0YzAzMjBkMDVjZTQ4Njg2YmYzMmFkZGZjMiByZWxlYXNlMjQtbWFpbnQKKzQ1MzQxIDVhOWZjZDY3NmIzZmU5ZWQxMDg3MWRjZWJlMWYyMzNmZTkxN2IxZDAgbGVnYWN5LXRydW5rCis0NTM0MiBiMTcyNGU5MjZlMDdjNDY5NWY0ZDBlNTViNGQ5ODhmNGNjMDA0NmJhIGxlZ2FjeS10cnVuaworNDUzNDMgNDM0MmU0NDFiMTFjY2I1NTAyOGE1YjNjZjIwMDA3M2MyZjNlYjYzNyBsZWdhY3ktdHJ1bmsKKzQ1MzQ0IGI5M2MwNTk2MGExNWZhYjZjN2Y4NmFjZmZmZWYyNDU4MmMzNWIzNDggbGVnYWN5LXRydW5rCis0NTM0NSAzNmJmZTQ2YzVjNmE2M2NiYTkxZjYzM2Q5MGMxZDMzZGIwYzc4OGMzIGxlZ2FjeS10cnVuaworNDUzNDYgM2Y5NzM5ZGU2NjAzMzM1M2MzODQ1YzI3ODFiMTNiODRhZjQxODEyNiBsZWdhY3ktdHJ1bmsKKzQ1MzQ3IDBhMjhmMTU3ODc1ZTJjMTE0NGY4OTIxNmI2MTNjMzRjZTk1MjkwZjIgbGVnYWN5LXRydW5rCis0NTM0OCA2MDY4MThjMzNlNTBmZTY3MjMwODMwZGQ3NTViNDg0ZGVmZmZmODAyIGxlZ2FjeS10cnVuaworNDUzNDkgYTQyMzFhYTMyMDFhZTFhMzk0ZWU2NDNjNWE0N2M3YzE5NGY2ODRjYSBsZWdhY3ktdHJ1bmsKKzQ1MzUwIDg2ZGI2ZGYyNDE3NDQ4ZGFhYzBhNDJmYjVkOGI4NmVhMDAwOTliM2YgbGVnYWN5LXRydW5rCis0NTM1MSAzYTM5ZWQ1OTdiNjhhYWY3NjAzMDA4YjNkNDg2MmJlODkzYWFmYjFjIGxlZ2FjeS10cnVuaworNDUzNTIgZTc5NWQ2Yzg2YTVlZGU5ODQxYTBhYWE0Y2Y5NzNhY2MxZTg3OWU0YiBsZWdhY3ktdHJ1bmsKKzQ1MzUzIDMwZDZiOWVhZjAyZGI4ZTI5ZjNmYWY2M2VhOWIyOWNkYzIzNWVhYzEgbGVnYWN5LXRydW5rCis0NTM1NCA1ODY0MDk4M2ZkNjZjNjllNzliZTkzMTM3MjVlNTdlOTc1Njc1ZWQ1IGxlZ2FjeS10cnVuaworNDUzNTUgZmU4OGUwMWZmNmRlOGI0OTI3YmQ4NzJlOTkxZWVkZGYyYTljMWRkMCBsZWdhY3ktdHJ1bmsKKzQ1MzU2IDIzZWRmMjkwYjY3NmYyMGI4ZDU1MDA3ODhlYjlhZDJhOTc3MDdkZDYgbGVnYWN5LXRydW5rCis0NTM1NyA1YTRiOTY0MTIzMmY4NWZmYzUwODk5YjE3MDk0YTNlNzM2NjZiNjdlIHJlbGVhc2UyNC1tYWludAorNDUzNTggNDEzM2U4NDFmMGNiOTFkZDE4NTI0ZjRlZjdhMWE1ZTM5YWY4OTBlYiBsZWdhY3ktdHJ1bmsKKzQ1MzU5IDM5OWIxMTljMDU4YTFiOTZjZTQyNmJlYjQ5ZWFiMDQxNjIzNGNiYjkgbGVnYWN5LXRydW5rCis0NTM2MCA1ZTcyYjBjNzQxMDBkNzUwZDNhOWRlOWYwNTg5NTE3MGQ1M2FiMjQ0IGxlZ2FjeS10cnVuaworNDUzNjEgOTUzZWIzZGMxOGU1NDMxZjEwNDY1NzIzOWViOTk3M2E3NTM2ZjU2OSBsZWdhY3ktdHJ1bmsKKzQ1MzYyIDk5NzUxMjg5ZWEwM2JhZDM1ZjU5OWU4MTVlYWJhMDY4Nzg1ODcxYTcgbGVnYWN5LXRydW5rCis0NTM2MyBiMzUwZTlkNzkxZTZlMmVmNzMwZWYyNzdlZTQ3Mjk5MzY0Yjc1ZGU5IGxlZ2FjeS10cnVuaworNDUzNjQgMWI1YjE2Y2RiZTBlMWEwYmNiYjM3NDI2ZDYyZmNjNTM0OWNkNjM2MyBsZWdhY3ktdHJ1bmsKKzQ1MzY3IDc1MWY3Yzc5YjVmZDE0NTk0MjU4YzVjMDEzZDY2M2JlNTU1OTYxNmUgbGVnYWN5LXRydW5rCis0NTM2OCBlYWM4M2ZlZWIxMWY2YzhjYjQyMjgwYWU5ODA1YmVjMjgxN2IwYjFiIGxlZ2FjeS10cnVuaworNDUzNjkgNGQ3YjIyMzdmYTA3ZjM3MWY4OWZlOTU5MDc1ZjYwZjYzZWIxZjk5NCByZWxlYXNlMjQtbWFpbnQKKzQ1MzcwIDMwOGUyZThlZDY3NjYxYTIyYzg5YjlhMTQ1OWUyYzI5OWMzNmVjYWIgbGVnYWN5LXRydW5rCis0NTM3MSA5MWFlYzQ3NDYyMTg1ZGU0Mzc0MjhhMzJlMzRjYmM5MTgwNGU5MGU3IGxlZ2FjeS10cnVuaworNDUzNzIgYWM3OWU5MDM3ZTA2Y2YzNmQyZjkzZGJiNjk0MzcwZGUxYWU1MTRhYyBsZWdhY3ktdHJ1bmsKKzQ1MzczIDcyMDQ3NDhjMjkyMTVkOGNmNGQ2NWJiZDY3ODUzODFlNzU1YjJkYTUgbGVnYWN5LXRydW5rCis0NTM3NCA3ZWU0MDY4ZTJjNjJhMjUwZTJhOWVlYzJiZjk4YmIwOTIzZGQ2ZDBhIGxlZ2FjeS10cnVuaworNDUzNzUgMjU0Y2NjYjdlZjE3Njk5ZDljODMxNjAwYmNhODdlOWM3Y2RiYTQ5MSBsZWdhY3ktdHJ1bmsKKzQ1Mzc2IGUwNTdhZjJkZmZjZWMzMThlMDdlMWMwMTEzNzA5NjFiZjYzMGY3MjggbGVnYWN5LXRydW5rCis0NTM3NyBmYmNkZjdjMGNjNzRkMzEzNWNiZTNlNDg1ZDI4Y2RlNzcxNTRhNmM0IGxlZ2FjeS10cnVuaworNDUzNzggMGEwZDg5ZDcxMGE0ZGYxNWJlNjJjNWZkZWQxMTg5ZTA1MDFhYTEzMyBsZWdhY3ktdHJ1bmsKKzQ1Mzc5IDliMjJkOGI3YmNhYWM0MzM1NjE4MGU2MGY2ZDk3NTJhMjZmNDk5OGMgbGVnYWN5LXRydW5rCis0NTM4MCBlZTU3MzQ5NzQ0ZjM3MTFhYjNkZTBlMGM2ZmFlYzJkODk2MzljOTJjIGxlZ2FjeS10cnVuaworNDUzODEgYmIzZjkwNzZkMDc5YzVmNDQzZWVjMWQ1NzJjMDg2MjllNmNjZjExNSBwM3lrCis0NTM4MiA5MTUwZTI2MGM0MTc0YTc1OTk0MDgzYWQ1ZTVhZmE0NmVkNTg2NzRmIGxlZ2FjeS10cnVuaworNDUzODQgZDcxZjI2ZTY0NDg5ZWIxZjdlZDM5NGZhODdhZmM1YWRlMDIzNTYwZSBsZWdhY3ktdHJ1bmsKKzQ1Mzg1IDc4NmQwMzU2ZGU1MTNhMmZiMzRmMWUwMjQ4OTcwYWVkZmE3MTA1N2EgbGVnYWN5LXRydW5rCis0NTM4NiAyMzBmZmY2ZTA2MThkMjQxYjFlYzI3NmI2OGVlN2Y3MjMwYjhlYTBmIGxlZ2FjeS10cnVuaworNDUzODcgMzdhOGViNzRjNTA0NjUxMzZjNTU0NmE5OWFkZmM2ZjkzZDhlN2E4MSBsZWdhY3ktdHJ1bmsKKzQ1Mzg4IGNjYjNhZjQ5YmNiMzAxYzcyNWZhODU5MWEzNTFiMjYxOWVkZDJlYmMgbGVnYWN5LXRydW5rCis0NTM4OSAyMzNiMTBlY2ZjZWY2NjJlZWI5ZjFjYTk0YTUyYmMyMjY3ZTU3MWQ0IGxlZ2FjeS10cnVuaworNDUzOTAgOWJlZjFkZWJjYmFhN2Y3NzY5NTMyNGEyOTE1ZTIyMmJiM2E5OWM2OSBsZWdhY3ktdHJ1bmsKKzQ1MzkxIDkxZDE2YTg3Y2JlOGVhNzZlNzI4MjViOTdmMDNkYjhmM2RjYWMxM2YgbGVnYWN5LXRydW5rCis0NTM5MiBlYzk4NmFhYmUxZmRlZjI3MTAzYWZhNTE3ODNhOWQ5ZWZiNzZhMTEwIGxlZ2FjeS10cnVuaworNDUzOTMgYWZlNTZiOWI2NjRiMjQxNzc2YzU0NTM4ZWJhZTJmOGQxYzA1MDkwNyBsZWdhY3ktdHJ1bmsKKzQ1Mzk0IDFkNWE0YzgyMDYxZTY4ZGEzY2QxZDhkODI5MTM5MmE4ODcyOTU3YjAgbGVnYWN5LXRydW5rCis0NTM5NSBkN2RjMDA4NWRkODVjOGM0NjQ1MDA3MzNhYjNjOTgwZjkyMmEwZTQ4IGxlZ2FjeS10cnVuaworNDUzOTYgYWY0N2RhNWU5Y2UxNGRiNGFjZTIyMGFiOWZkYTA4ZTA0OGFlMzA5OCBsZWdhY3ktdHJ1bmsKKzQ1NDAxIGNmNzFjMzgxNGIwYjMxNzdjOWMwMjkwOTQxYWMyYjliYmVhMDA2NGEgbGVnYWN5LXRydW5rCis0NTQwMiAxMzY2YmZhMDg0ZWU3MTcxYTRmMDI3ODFiYmU5NzliYTg5ZGRlNWM1IGxlZ2FjeS10cnVuaworNDU0MDYgODU2YmVlMTUwMGJiY2RlYWMwMTY2YTYzMDllMzdmMzgxN2FmMDdmNiBsZWdhY3ktdHJ1bmsKKzQ1NDA3IDY0NDFmNmZhNjU3MWE3ZDJiYTI2NTBmM2YzNGU2ZTkxMzgwZWMzNjMgbGVnYWN5LXRydW5rCis0NTQwOCBiOTQwYWM0Zjk1NTg2YWJjMGE3ODRhYTM1YTQyYzllZWFlMmQ2ZTlmIGxlZ2FjeS10cnVuaworNDU0MDkgMzE5MjlkYTBiMDVhZmExMjk1NDYxN2U0MTBlMzg1ZTY2YmY0OGU1MyBsZWdhY3ktdHJ1bmsKKzQ1NDEwIDZlOWFiODdjNjA4Y2Q5MDU1MzdhOWZjYjA3ZGQ1MjE5Njk2NjAyNjYgbGVnYWN5LXRydW5rCis0NTQxMSAyN2E2MzljNDQ3MWE0ZTAwNzNiNjA5ZDBmNmZlOTFlZTY1YzMzMTM2IGxlZ2FjeS10cnVuaworNDU0MTIgNjJjOTAzOGE1NzhhOGE5MjI3ZTcyYzBiZTExMmM3OWE0MjFjNDJmMyBsZWdhY3ktdHJ1bmsKKzQ1NDEzIDU4OGY5N2IyNGJmOWUxZmY2NTY3MDRhZDQzOWQyNTIzZmY2NWQzOTAgbGVnYWN5LXRydW5rCis0NTQxNCBjNmRmNWU3OTU0MjMwMzljMzg0OGVhYmM1NzkxMTI2NjE1YjBjYmEwIGxlZ2FjeS10cnVuaworNDU0MTcgNTMwNDA1OWU3ZGUzYjFiMzNiMjQwMmZkOTA5MTIyZGQ5Y2RhOGRmMyBsZWdhY3ktdHJ1bmsKKzQ1NDE4IDliMTZlODE2MWRmNzc3ZDEwMTg2ZWI5ODYzNTg4NWNiYTJjMjAwNTIgcmVsZWFzZTI0LW1haW50Cis0NTQxOSBiZmM0OGFkODFlODA0Y2IyNWQ2NTkzMjk0NjcyMGY1ODg1YzcyZDg2IGxlZ2FjeS10cnVuaworNDU0MjAgOWY4MjEwMzI1NGZhNGViZWM1MTc4YzQwYWJlYTAzNjBhMTMzNTMyNiByZWxlYXNlMjQtbWFpbnQKKzQ1NDIxIDRjNmQ0Njk4YTExNWRjNzc3NDUwMmVmMWE1MjcyNTk0ZDgwMmJiZmEgbGVnYWN5LXRydW5rCis0NTQyMiAwNWFmMzlhOTA3NTQzNWRmYjFmYmE0NjZhOTA5YzBmM2M5MzBkNTBmIHAzeWsKKzQ1NDIzIGIwMjcwYzY4MDQyZWQ0Nzg0YWNlYzdhZTAxZjEwODY2N2I4NDkxNmEgcDN5aworNDU0MjQgMGExM2E5NjU4NWMzZDM2NzYyOTA2MmRlYmVkYTIwYzcyMjRmNzg3NyBwM3lrCis0NTQyNSA0Y2MzNGFmMDE5ZDJjMjYzYjc2MGZhMWU4Nzk1NjJiNmY0NzUxNTEzIHAzeWsKKzQ1NDI2IGZiMmFmZjE4NjJlNDZmMThkMmNjYmIwMmFkZTU1NTU2YmM4NWU2Y2YgcDN5aworNDU0MjcgOGRhYWU3YmEwNzhhNTU0NTNhYmM0ODA4NTExYjg1ODM1MzM1MTNiMSBwM3lrCis0NTQyOCBhNjdmMjE1OGQ2MWIxYWVhZmY5YmMzNzhhNTdhNzU5ZWUzNjYyMmI3IHAzeWsKKzQ1NDI5IGM0N2NjY2NhMGJmNDM4NmY4NWUwNmQ4NTQ1MDA0YzM5YmZlNGFlZWYgcDN5aworNDU0MzAgN2NhZTYyMmVkY2M5NzhkNDFkMzE4YzNiOTczMmJhNjBjZDA4MjlkNCBwM3lrCis0NTQzMSBhNWM5NzdlNmY1ZGExNDhiZTc4MzZjOWQ4ZjVkNWMwMGJkYmQ4NDFjIHAzeWsKKzQ1NDMyIDM1M2ZlMDZkYWI1YjM3MjVjN2E1MDRmYzVlY2EzY2JkZDc2YzQyNGMgbGVnYWN5LXRydW5rCis0NTQzMyA2MzZjYTgwYThjYmVkYzcwNWJlNmM0N2ZkMDE1OGQxODkzZmUyOWVkIGxlZ2FjeS10cnVuaworNDU0MzQgYTU5MDJlMGVjMDdjOGJhODY5ZTliNzc1Yzc5NGM1MTBkNTgxODEyOSBsZWdhY3ktdHJ1bmsKKzQ1NDM1IGQxNTQ3NDI2YWI2MTA2ZWNhZDJkM2JiMGVmMzYwZjQ3ZjZjNzQ0YTkgbGVnYWN5LXRydW5rCis0NTQzNiAyNDAwOTg5MzVjZDVlYmQxOGRkYTMwZDFmZjQ5ZDhlMmI4ZDFlZWM3IGxlZ2FjeS10cnVuaworNDU0MzcgNjMxNDVjMDZkZWVlYjQ4M2YzNGJmOTI4MWMwOWM0YTFkNmE2ZDBlYSBsZWdhY3ktdHJ1bmsKKzQ1NDM4IDFkMDIzNzRmNGM3ZTFhNWE0NjIyMWMwNmQxZTg2NzUxZDk5Zjc0ODAgbGVnYWN5LXRydW5rCis0NTQzOSA3ZjcyNzkxZjBhZWMzMmY2OTA0Nzg3YTcyYjk3M2E3NzliN2Q2NjI3IGxlZ2FjeS10cnVuaworNDU0NDAgYWJmODI0NjFlNmI0ZGY1MWY1MTE3ZjEyNTM2MzE4NTJmMTZjODVhMyBsZWdhY3ktdHJ1bmsKKzQ1NDQxIDllMzgyZjJmNDM5ZDk3NzUyMzA2NmU2ZjVhZDdhODEwYjdmY2QxMWMgbGVnYWN5LXRydW5rCis0NTQ0MiBiNzM3M2JjM2IwOWYzMzkyYmJhMzI2MmQxMmNlZjcwYTVlNzE0NDQ2IGxlZ2FjeS10cnVuaworNDU0NDMgN2IyZTQzNmE0YTIxMWMyZTU3YmY0YTg0YmUyMWYxYTVjYWNhYzliOSBsZWdhY3ktdHJ1bmsKKzQ1NDQ0IGUxMzg4YWJhOTg5NjIzY2EwMTZjNjc5ZjRiNGM2YTZjNzVmMzRmNmQgbGVnYWN5LXRydW5rCis0NTQ0NSA5Yjc4ZGMwN2IxNzBjYzY2NTA1OTQ5NjAxNGRmMTAzNjAyMzE0ZGY3IGxlZ2FjeS10cnVuaworNDU0NDYgMzUzYjU5NjUxZTQ1MGUxNDI2MjQwOTQxNDBlNGE0NDMzMmY0MjQyZiBsZWdhY3ktdHJ1bmsKKzQ1NDQ3IDllYjRkYzFjYzgzZTdhNjMxMjRhYjhjYzgyYzhmY2IwMzkzNzIzZTYgbGVnYWN5LXRydW5rCis0NTQ0OCA4MzNmMzg0ZWJkNDFiNjMwMmYyYjcxZGQzNzZkNjI4MGY4NjRjNTkxIGxlZ2FjeS10cnVuaworNDU0NDkgYTM5Y2M4NGZmMTg1NmM3YWNjNWJjNzgxYzY3ODYyYjcwYzcwM2ZmZCBsZWdhY3ktdHJ1bmsKKzQ1NDUwIGI3YTM5NzJlOTkxNTcyN2U5NzNhODQ2ODRmMjBjY2FkNWU0ZGEzOTUgbGVnYWN5LXRydW5rCis0NTQ1MSA5NmFkZGFhMjU4Njk3MGIwODA5OGY4ZGVhNWQyMjczZTA3NjVmMDdkIGxlZ2FjeS10cnVuaworNDU0NTIgMGE1NGMxNWFhMTQzYzRkNjAwMjA4MTM2ZDAxZTc3NmI5ODY3YTY1OCBsZWdhY3ktdHJ1bmsKKzQ1NDUzIGYxYzk4NTNkZjBmN2Q0YWU2YTRkYjQ5N2MyZWJhYWY3YmJkMDBmNmEgbGVnYWN5LXRydW5rCis0NTQ1NCA3Y2MzMTUxNmY4MjU4ZmYxNjI4ODAxMDdkZGJkM2FjNmVhNzQ3MWY5IGxlZ2FjeS10cnVuaworNDU0NTUgMzhkMTdkNTFlYTk1ZDQ0ODc1MDQxYjg5YzA1MDE2N2YyYzc1MTYwYiBsZWdhY3ktdHJ1bmsKKzQ1NDU2IDAxZTUxZjVkYjg4MWI4NWJhMWU3YWM5ZGQxMzY1OTEzODQ1OWVhYzQgbGVnYWN5LXRydW5rCis0NTQ1NyAzMWRjYzMxMTExMzNiZTcwMThkYzA0ZjJkMjFmN2E4YWI2MWJjY2Q3IGxlZ2FjeS10cnVuaworNDU0NTggMDg0ZDE4OGU3ZGJlZjdhZWQ2OTlhYjI3YjBjNzA4ZmI2OTc5NjViZSBsZWdhY3ktdHJ1bmsKKzQ1NDU5IGI5MGE3YzYwMjFiY2M0MjM4MmRhNjg4ZjRmNWFkMGI0NDI2ODMxNDcgbGVnYWN5LXRydW5rCis0NTQ2MCA2MDRjOWJjYjMwNmM2ZDI2YmQzMWIyMmI5NjY3OWYyMDhhY2QwYjJiIGxlZ2FjeS10cnVuaworNDU0NjEgNWJiNmU1NGY5NDA4ZjYxNzZjOTA1OWQ3ZjNiOWQ2ZWRiNjlkMjUxYyBsZWdhY3ktdHJ1bmsKKzQ1NDYyIGQ4YjIzYmE0YTI3NGVjZjRlZDc2ZGRjNThlZjAwMzkxNDJmMmJhNzggbGVnYWN5LXRydW5rCis0NTQ2NSBiMDA0NGJiNGRmMmFlZGNmYmYzMTFkZjU5OTFkOWNkYjVkNTJiYWI3IGxlZ2FjeS10cnVuaworNDU0NjYgZDRhZTVhMjYxNTc4ODJlMWQxMGY3OWE0MjY2ZDlmNWY5MTliMDVkOCByZWxlYXNlMjQtbWFpbnQKKzQ1NDY3IGJlMjM4Y2IyNmQzMjVlMzU4MzJkN2U5ZTFhZTUwZGNjMTg1M2E0NzIgbGVnYWN5LXRydW5rCis0NTQ2OCA3YmJiOWI1ZjdhZGNmZDhlMTk5NDQ2NTU0MWI3ODQ3OGY4ZTYyYzM5IGxlZ2FjeS10cnVuaworNDU0NjkgYjk1YjVjMzNjYjNhNTMzMWJlYTdjNWFjNWY3ZTMxOTMwMGE1ZGFjMyBsZWdhY3ktdHJ1bmsKKzQ1NDcwIDMwMGJmMWM0ZGVlZGU3YzFkM2VhZjdjNzVmZTkyZjM1ODhkYWY2MTkgbGVnYWN5LXRydW5rCis0NTQ3MSBkZGY4YzkxNDVmMTM2M2U4MmY4YzQzYzdiMGEwOWZiZGQzYTkwYWU4IGxlZ2FjeS10cnVuaworNDU0NzIgYjVmY2VmMTU4MTMzYTk3NmY2MWZhYmU2NTJmMzgzMWI1NDZkM2Y5MiBsZWdhY3ktdHJ1bmsKKzQ1NDczIGUyMzlkNzQ1YzY0NzQwMzc2MDBjYTE0ODNkYTJjNjVmMWM4YTdkNTMgbGVnYWN5LXRydW5rCis0NTQ3NCAyYzc2ZjcxYjIyM2RlNzVhODhjYWY5ZmNlNjcxMmUyZjJkOTI1MzM2IGxlZ2FjeS10cnVuaworNDU0NzUgNWM0NTMzMDJkNWY2YTBlYzQyMTQ5YWE2NmU3YzVkNGU0MjE4Y2MwYSBsZWdhY3ktdHJ1bmsKKzQ1NDc2IGVjMDBiNzk4YWI1NjllYWU4NDdlYjZmNmFjODdmMTc4YjBkNThlYmEgbGVnYWN5LXRydW5rCis0NTQ3NyAzMzUyMjM0MjIxOTljZTQzMzI4Njg4MDZmMmE4MmZkZDAxMTViODMzIGxlZ2FjeS10cnVuaworNDU0NzggZGRhN2NjODhjMDVhYWJjMDYxYjliOTVmYzgxOWFiZjQxNTgzMTFkZCBsZWdhY3ktdHJ1bmsKKzQ1NDc5IGMwNDEzNmE4MDYyYTFkYmQ1MjVmODNiNmFlYTYxYmRjNzBjOGIyOGIgbGVnYWN5LXRydW5rCis0NTQ4MCAzODRlOTEyMDI1NzhmOTE3MDVkZDEwYTk4MzJlYzM0MmY0NzI5ZjZjIGxlZ2FjeS10cnVuaworNDU0ODEgZTgxOWI4NmExNTA2YTAzNzM1MTNlMzI2YjJjMjkyYWZmOTE5ODliMyBsZWdhY3ktdHJ1bmsKKzQ1NDgyIGM5NGQ3NzA1MDg1YTU0NWMzZjgxZDc2YTU1ZThmYjJhY2E4ZDg1NDEgbGVnYWN5LXRydW5rCis0NTQ4MyAxOWMxYmFjMTViZGVhMTQ4NzMwZDQ5Y2JhMzA1NGJjOTczZDVhMDQwIGxlZ2FjeS10cnVuaworNDU0ODQgYjM3NDE0MGU0NjdkMmU5YTNmYTFiMjU5ZTc4NWFjZmFmNDE5NGQ3NSBsZWdhY3ktdHJ1bmsKKzQ1NDg1IGY3OTkxY2U0MzFlNTJlZjY3MDdhNWU5Y2I1YWIwMjlmNTBkY2Y2MjcgcDN5aworNDU0ODYgNmYzNWY3YmUzNmMzZDQ1Zjc5MzgxMzZlZTc3NDIxOTQ1MTlkNjhhMCBsZWdhY3ktdHJ1bmsKKzQ1NDg3IDgxYmY0ZDM3OGI5ZTY3OWQ3MDQzYjZiMzdmYjhhMmFkMmFjMGQ3N2QgbGVnYWN5LXRydW5rCis0NTQ4OCA3MDJkNTk3ZjJmNjg5YzJjZmQ0YTliZWY4MDcxN2MxMWY3NzkzMGJiIGxlZ2FjeS10cnVuaworNDU0ODkgZjExN2E1ZmRlNGU1OWJkYWVjYTIwZTQ4MjBkNGJkZTQ3ZGEwMTVkMSBsZWdhY3ktdHJ1bmsKKzQ1NDkwIDRkODIwOTNlMmUxOTc4MzY3MTY2ZDJlMzg4NzMwNzJhODkyNjQ4NWEgbGVnYWN5LXRydW5rCis0NTQ5MSBmYmJjMGJlZmZmZjc3OGZhOWEzOGE4YjkwNmFhOThlZjk0YmI0MDhmIGxlZ2FjeS10cnVuaworNDU0OTIgMTlkMjQ3N2MxMjgzMTY4YjgxMzUxYzllOTU5NjBkYjM4ZjUyNTgwNiBsZWdhY3ktdHJ1bmsKKzQ1NDkzIDZjZmU0OGU2NzJjNGUwOGI4NGFmNDc5ZjlkMDUzYzc0YjYyM2FiMjIgbGVnYWN5LXRydW5rCis0NTQ5NCBlZmU3NDkyMjViYWUyYzY1MmY4MTk4YzU1ODgwYmYwN2FjMzVkZjQ4IGxlZ2FjeS10cnVuaworNDU0OTUgZGY5ZWNhY2IwYmY2N2MwYTUzODQyY2E0NmZkNmViZjhiYjdhYzJmZCBsZWdhY3ktdHJ1bmsKKzQ1NDk2IDVmNDU3ZjQyNmQ5MTZjMTk5ZGFiZjFjYjUyMmRiMzY3OWVhMWU5NDIgbGVnYWN5LXRydW5rCis0NTQ5NyBjY2MwYjU0MTI3OTllYTkxMWE5MzZkN2E5MzY0ODM3YzA2MmI2ODVjIGxlZ2FjeS10cnVuaworNDU0OTggMDg2ZDg0MzRjN2Y3ZGMyNDg4Mjk2ZDBjODcwNDFkMzQxZGFhMTUwYSBsZWdhY3ktdHJ1bmsKKzQ1NDk5IDU5OTdkN2NlZDE3ZDdkZmYzNzhmYjMyMTJmODE2N2M4ZjAyZGZmZTEgcmVsZWFzZTI0LW1haW50Cis0NTUwMCA2ZDhlM2U2NTk0N2YyYTI1OWJjMWUwZDk2Y2M2Y2JkNmY1M2RlN2Y2IHAzeWsKKzQ1NTAxIDkyNzQ4NzlmMDQ4NDI4YjhjZTY4NTY5MmIxZTEzMWRhY2M2OTcwMzggcDN5aworNDU1MDIgODU2OTVkZTYwNDllMDEzZDA0YWY5ZGUzYjExZTU5OGY3YzFhMzRhMCBsZWdhY3ktdHJ1bmsKKzQ1NTAzIDg2MjVlNGE1Y2U0ZDBiZGE0NTIxNzg5MTQ3YmFjNjA0YzE3NGYyMjQgbGVnYWN5LXRydW5rCis0NTUwNCAyMGNiMTNiZGYxZjAwOWQ1ZTljZjdkNjJhN2Q3MDgxMjEzMDY2NDQyIGxlZ2FjeS10cnVuaworNDU1MDUgYWNiNjE4MzZmN2ZhYWQ5ZDEzNmM4ZDA0MWYxNjAyMGYzMTk1ZTg3MSBsZWdhY3ktdHJ1bmsKKzQ1NTA2IGNjOTE5MjUwNWI0MDViYzljNzIyNmZkYmQyNTZhZjVlYzI3NTNmYjIgbGVnYWN5LXRydW5rCis0NTUwNyAyZTMyNzZkYzIzMWY3NjA1ZTNkYjMzZDE0M2UyZWQ1MGM4ZTQ1OWJmIGxlZ2FjeS10cnVuaworNDU1MDggNjFhYzFlMzIyZGE3NmQ5N2VlMzA3ZDE0OWU3ZmIyMjA2NjUwMGRlZiBsZWdhY3ktdHJ1bmsKKzQ1NTA5IDZlYjg2YTcxZjVjODE2NzNjYWQyN2ZmMjk1YmY5ODU0NTNkZTRkNjUgbGVnYWN5LXRydW5rCis0NTUxMCAzMTM1NjQ4MDI2YzRhZWQ1MjFmMmRkZDRmYmEzYzdiYTJmN2M3Y2MyIGxlZ2FjeS10cnVuaworNDU1MTEgM2VkZTE3NWVhZDM3YTg5OTZkNTRkMjkwMmQ0Y2JlMGVlOWNmYjMwYSBsZWdhY3ktdHJ1bmsKKzQ1NTEyIGE1ZTg3OTg3Y2FlNjNlYThjMGI0MTNiN2NmMTkwM2Q2ZGUwNTNmNDIgbGVnYWN5LXRydW5rCis0NTUxMyBlMjU0YjkyMmM0ZjM0ZWYwZDFiOWQ0MDM2MGYzYmZlNDFjYzgwNjFjIGxlZ2FjeS10cnVuaworNDU1MTYgZmM1ODk3NDE4ZjMxYmQ0ZDY2ZGJkYTZmZTdkZTgyZDg2MGRjOWQzYyBsZWdhY3ktdHJ1bmsKKzQ1NTE4IGY1ODMxZmY3Y2ZiZDJiYWY0OGY2NDc0OGEwNzEyMGEwMmY4NzhlYjggcmVsZWFzZTI0LW1haW50Cis0NTUyMCA0NTc3YjI0M2I5ODEzNzhkZmNhMzI0MTA4ZTQ4MGQ3ZmQyZTc4ZmVjIGxlZ2FjeS10cnVuaworNDU1MjMgYmUyYTdlYzQ2MmZlNDE3OWYyZDQzMTMzZWRiZDkzYzJmNTc0YzBmOCBsZWdhY3ktdHJ1bmsKKzQ1NTI1IGYwNDgxMTZhYWRlMDU3OGNkMmNkODdlODhhY2MyNThlMmRlMzgwNmQgbGVnYWN5LXRydW5rCis0NTUyNiBlODkyYjU0NDI4MzUwOGFlZDU0NmQxYWUyOWM1ZjFiNjYyZTU0ZjRhIGxlZ2FjeS10cnVuaworNDU1MjcgZDgyZGNlZDZmMWZhNzQwN2EzZWExMzFiNjM0ODFlODQ5OTc3NzU2MSBsZWdhY3ktdHJ1bmsKKzQ1NTI4IDE3NDA2MmY3YzFiZTAwNjhhOWJmNTc4YjhhNWIzMjgxMmIyZjYwZmMgbGVnYWN5LXRydW5rCis0NTUyOSBlZTkwYWIyNjA4NmFhNDM1Mzk4NmRiYmI3N2FmMjQ3ZmQxOWIzMjc2IGxlZ2FjeS10cnVuaworNDU1MzAgMzFiMGNkYTExYTZkNmVjOTIxN2EyNjVlMGZjYzg1NTMwYzk1OTFmOSBsZWdhY3ktdHJ1bmsKKzQ1NTMxIGQ0ODgyNDRkZjI4ODRiMTQ1ZGYzODAyYThhMjQ4YmJmZTVhZmVlZmEgbGVnYWN5LXRydW5rCis0NTUzMiA2Mzg2NDQ0NThmYzc1MjljNmIzODlmN2ViYzdkZWJlZjU1NmUyNDA4IGxlZ2FjeS10cnVuaworNDU1MzMgMTdjY2NhNTkwYWU5Mzc3NWU4MGIwMGI2MWNjZWM3OWM4YjRmZTBhNiBsZWdhY3ktdHJ1bmsKKzQ1NTM0IGNjNDg5ODVjMzI2NmM0OGQxMzczZjU1YTE2OGNlMzU3ZTg5MDAwMzMgbGVnYWN5LXRydW5rCis0NTUzNSA5MTNkMzc5MGZkOTllOTFmYTk1MWIzMjAwNGNmODhlODI0NjMzYmI3IGxlZ2FjeS10cnVuaworNDU1MzcgZTBhNjAzMWRmN2MwZWRkZjM1MWU2ZDdiMjY5MTdiMDk5NzY0N2YxNiBsZWdhY3ktdHJ1bmsKKzQ1NTM5IDBjMDEyMmJkMGVhMzFkNmM0ZTY5ZjM4ZjkxM2MxMWVkMTNiZTAyYTIgbGVnYWN5LXRydW5rCis0NTU0MCAyNDBmZTQ5NWQxODY3MGEyMjJiYzI2M2JmZTVhNzk3Y2FlOWYxYWQ2IHJlbGVhc2UyNC1tYWludAorNDU1NDEgNDg4ZmJiNGNhOGU1MTRkNmZmMGNkOGE0OTNhZTg4M2MwNDcwYTNiNyBsZWdhY3ktdHJ1bmsKKzQ1NTQyIDg3MjViOTA3YWNiYmZlZGZkZmYyZDQ5YjNhYWYxNDI3MGJlYWJhM2QgbGVnYWN5LXRydW5rCis0NTU0MyAzNWYyN2JiZDlhZDhhMmRmNWY3NzM3MmJjNTkyMzQyZjExNTcyZDk3IGxlZ2FjeS10cnVuaworNDU1NDUgZDY0YmFkYWM2Y2YzMTI2NWM5YWU2NTc0ZmIxODZkNWM5NzlmOWFhYSBsZWdhY3ktdHJ1bmsKKzQ1NTQ2IDEyYWIyMGNkN2MyNzNhMWMxYzMzNmVjZDkxZTJhMzNlYWQ0YjMyNzQgbGVnYWN5LXRydW5rCis0NTU0NyBkZDQxNTZjMzY3MDNmYWNkNzI2ZGZiNzQxZjE0ZTNkZTFjNzAwYmUwIGxlZ2FjeS10cnVuaworNDU1NDggNDFmMTNiNTZkYzMyYmNlODQ5NmY3MTUwMTcwNTg0MmY5M2Y5ZTk5ZiBsZWdhY3ktdHJ1bmsKKzQ1NTUwIGViZTU5Y2QxODI3MzAyZGVjZTgwYzA5NzA4ZWU2NDdmMjk4MzgxMjYgcDN5aworNDU1NTEgMTkwNDVjNWYwYmEyZGFjNjM4NTg0NWFhYTgyNzkxMWM2Y2RiZThjMCBsZWdhY3ktdHJ1bmsKKzQ1NTUzIDgwZTAwMzQ5NjQ3ZDBkMzYxNmIxMDYwZTczNGFlMWJmNGRmY2U3NTcgbGVnYWN5LXRydW5rCis0NTU2MCAyOTI1N2VmNmFiZWI3ZTAxZDEzOGJlMWIwOWYyMzVmOTIxMzY3NjYxIGxlZ2FjeS10cnVuaworNDU1NjIgYjdkNDcxZTEyMDQyNzZhZjI4ZTRjZTI4ODE2MGUwOGI1OTlkZjdiNyBsZWdhY3ktdHJ1bmsKKzQ1NTYzIGRjOGVmZDcwYWI1Njg2ODEwZjFhNjY5NTc1MTdmNDMxYmE0ZmRmZjUgbGVnYWN5LXRydW5rCis0NTU2NCBhY2Q4ZmJhNjE5NDMwZjgxYmVkMGFmODRhNjJiNGQxZTMxNmNjNjk1IGxlZ2FjeS10cnVuaworNDU1NjYgYTRkNWNlZmMyZGU0MDg1MWM4MDcyMmI4ZWIzMDU2OTE0NDA5NGVlZCBsZWdhY3ktdHJ1bmsKKzQ1NTY3IDc0ZjQ1OWEyODliZTlkZDBiMmY4ODQwYzUyNzc5MGQ2N2ZmZjA5ZDYgbGVnYWN5LXRydW5rCis0NTU2OCA1NjRlYzk3MzY1ZjlkOWZhY2RjMzRmMjI1ZjdkMzdlYWE3ZGQ1YWIwIGxlZ2FjeS10cnVuaworNDU1NzMgZDRhZTljMDMyNWIxYTc5ZmQ5MzllMjZmNDQzYzJkNzEwZmMwMWU4ZCBsZWdhY3ktdHJ1bmsKKzQ1NTc0IGU5NmQxY2FkNDY4MjA1YTM3YzdjMGJiYjNiYjIzMzMxODU5MzZiNWYgbGVnYWN5LXRydW5rCis0NTU3NSA0N2FjNTI0ZGI4YTdjODNlOGRlNGE4OWExNDFmMjA5ZjM1YTdmNDk1IGxlZ2FjeS10cnVuaworNDU1NzYgNDc3YmY5MzBmM2U3ZjRlZDExZTVhYmJiNGQwMGE5ZGY5ZGRiMjE0YiBsZWdhY3ktdHJ1bmsKKzQ1NTc5IDc1ZTcwNmMzNmM4NjRhMTQ3ZjZlMzRjYWI2MjMyNmFkNGQwZjMyZGYgbGVnYWN5LXRydW5rCis0NTU4MCBkM2U1Yzk1NjU4MWNlMmVjZTgwNjc0ZGQ2YjExNzZkMGQwOTJlYjQxIGxlZ2FjeS10cnVuaworNDU1ODEgYjBmMzdmOWZjNjNmZjliNjcwNGYzZThkOGMwZDg5MGRhM2IwMzBmMSBsZWdhY3ktdHJ1bmsKKzQ1NTgyIDRjODk0NTUyYjk2ODBmNTViOWM1YTM3ZWQyYjdiNjVlYTA5MjBjNzIgbGVnYWN5LXRydW5rCis0NTU4MyAyZmIxNmE2Mjk0MTU3OGRiMDc4N2YxZmRhNjU4ODUwOWQzMDYwNjUyIHAzeWsKKzQ1NTg3IGFjMTI3Y2Q4NjZhMzEyZjJhM2JjNzFhMzE4OTRjMmUyZTMzMzY0ZjkgbGVnYWN5LXRydW5rCis0NTU4OCBjNDM0MWU2YzZhMDNkZTRiOGVkY2ZkMzlhNThiZGJlOThmOTMyZTg4IHAzeWsKKzQ1NTg5IGE0NzExN2ZhM2NhODhjNDYwYjVlZjI5MjMwYjcwY2E2ZWU1Zjc3NWUgcDN5aworNDU1OTAgYjBmODgxNDNkYzVjOTUwMzM1YjM4ZWYyMDUzNmEzZjg4MTYwOTc1NCBsZWdhY3ktdHJ1bmsKKzQ1NTkxIGQzNWRiODRjYTA3MmNmNDlhZTIzZjk3NTMxNDk0Y2JkNjRlODE5ZTkgbGVnYWN5LXRydW5rCis0NTU5MiBiOWFhZDZhNzQ0NTJkYzViNzEwZWI1YWViZTM4YzUzOTM1MzhjODZhIHAzeWsKKzQ1NTkzIGE0YzcwZjM5NjhiZTdkOWY4MGE2M2EyYjI2OGUzNzU1ODMxMjM1NDUgcDN5aworNDU1OTQgOGRmNjA3OTYzMzU1OGU0MmUxOTc0MTA3MTNhZjAyMGIzNzVmMjc3MyBwM3lrCis0NTU5NSA2YTQ1ZjI2ZWE2MTllNTcwNjkwMzcwZmY4NTU4ZWFkZWM4NWYwMmZkIHAzeWsKKzQ1NTk2IGI2OGQyMTM2NDkxNjcxM2I1M2NiZjY3NWYyMTUzNzYzODg4MGIyMTQgbGVnYWN5LXRydW5rCis0NTU5NyBmNzMxODU5ZTliM2I5MTI2NGIzMTJhODJjMzEyOGQ2NmE0MmQ4ZmZjIHAzeWsKKzQ1NTk4IDk2YWE1Y2U4NjQ0NTgwN2JlNDczZmU5MzM1MDU5YjFlZjViY2QwYzcgbGVnYWN5LXRydW5rCis0NTU5OSA3MDJkODVkOTQxOGE3NDU2MDNhZmE4NTAwYzA0MzY5MGJmNjM2MWNlIHAzeWsKKzQ1NjAwIGIyNzI0YTEyZGRjZTRmZmM2ZjM5MjY1OTYyNzJjMjJmYjRmN2ZkYjIgcDN5aworNDU2MDEgNzIyNDUxNTkyOTllMDE1M2FmZTJiYzE5N2Q3N2YxMWI1MmM4OGYzZSBwM3lrCis0NTYwMiBiNDk4NDNhM2ExZGY0YTRiZjUyZDIyNTdlYTAwOTQ0OTkzZWU4ZTk1IGxlZ2FjeS10cnVuaworNDU2MDMgOWJiNmUzNWMxY2M0MThiODI1YjQ1Nzk4MTZiOGQyMGMzZDE2MTA2NSByZWxlYXNlMjQtbWFpbnQKKzQ1NjA0IGMyOGY3NGJlZDgzYmY4NGJkYTBmNmM0YzgwOTBjNjhiNWEzOTNhNzggbGVnYWN5LXRydW5rCis0NTYwNSAzMDFjNGVkZTQ5ZGQ2ZTYzM2YyOWRkN2FmZTUxMDIxOTBlMjhlZDVhIGxlZ2FjeS10cnVuaworNDU2MDYgNWJjOTE1ZmVlZDE0MGExZmI4MWNhYTA3Y2VmYzNhODY1ZjI4NGFmNSBsZWdhY3ktdHJ1bmsKKzQ1NjA3IDgxMDI1NTdhZmRmMTc2NmUxNGZiMTk5YzdiY2E5YzMzNTRhNjI1MmMgcmVsZWFzZTI0LW1haW50Cis0NTYwOCA3NDlhZDJhMzY5M2YyMmJlN2QwMDM1YjJiY2I4ZmYxMTJkZTQxODNhIGxlZ2FjeS10cnVuaworNDU2MDkgZDYyYzlmNjQ2NjM4MWU2N2Q5YTBjNTA4NTE2MjQxNjkyZTA2YTVkYyBsZWdhY3ktdHJ1bmsKKzQ1NjEwIGJkNzg1MzM5NGM3YWE1ZmEyOTZhMGExMjJjZTlhYjQ2OTBkYTYyNGMgbGVnYWN5LXRydW5rCis0NTYxMSBkMThhMmM4NjY2MDk1YTM3ZWVmOGRkNmY4OGUzMWM1NDI4YmFiZjhiIHAzeWsKKzQ1NjEyIDczZDhlODk3NzdlMzMwMjc3ZWE0ODNhZjQwNzQ5ZDczZDE0N2QwMTcgbGVnYWN5LXRydW5rCis0NTYxMyA5MWEwOTgxZWM0YzJjMTA1M2U5NjgzYzM4ZDI5NDFkZTQyYWE1NDVlIHAzeWsKKzQ1NjE0IGY5ZWNhMTMzY2Y4ODY5Y2M1ODIzZDdlNzVmZmY4ZjZiYTA1MDAwZTIgbGVnYWN5LXRydW5rCis0NTYxNSBhMzEyMDJjOTQ4NWRhY2ViNmQzZGY0MTQyZTRmYmE3MjkyMDNiZWVkIHAzeWsKKzQ1NjE3IDc4MTQwYmU1MzE1YmM3ZmZhNDBmYjllYzZmNGFlNDU5YTM5MTU4NzEgcDN5aworNDU2MTggMzdjMjhhNmFkNTAxMWM4N2U3ZmU0YjhiNzdjYjJjOGQwODM4OWQ2ZSBsZWdhY3ktdHJ1bmsKKzQ1NjE5IDUwZTBiZDJlNDU4ODE2YTIwZWZkZTY1OWJhOGI4ZTFlNWFmZjJkYTEgcDN5aworNDU2MjAgZmQ2ZjE5MGUyNmE4YzExOWU4MDY0OGM2NGJhZDEyMTUxOTJmNTcxZiBsZWdhY3ktdHJ1bmsKKzQ1NjIxIDUyNTUxMjIxYTEzMmQ1NTE3OTJiOWJkYTYzMGJlOWYzN2MyNWY5MjIgbGVnYWN5LXRydW5rCis0NTYyMiA1NjA4OWZhYmEwNTZhMGMwN2JlZTE1MTU1YWNkOTQwMmIwNDdmY2QxIGxlZ2FjeS10cnVuaworNDU2MjMgMDZkY2RlZGZjOThmYTdmZWQ0NjU4ZmE3MzdhNGFjOTM2YTk3NGE0NSBwM3lrCis0NTYyNCBjMmFlNmRiMzA1NzJiMzg0ZTY3NTAzN2EwMjYxOWE2MjM4NGYxYWI1IGxlZ2FjeS10cnVuaworNDU2MjUgZmQyOWFkMGJlZjcwODM5NWM0Zjc5OTY0NjdiY2M3MWMyMzcyNDk1OCBsZWdhY3ktdHJ1bmsKKzQ1NjMwIDBlMGUzMTViNDIwMjM1N2NlM2M1NGYwZGJiMzA4ODVlOTI3MzJkY2UgbGVnYWN5LXRydW5rCis0NTYzMSBjN2VmOTJiOTA0NWM2ODhhMzdhNDRjNjY2NDQ0N2E1ZDc2NjdhM2MwIGxlZ2FjeS10cnVuaworNDU2MzIgNzIwNGZiYWM1NzljYzhhYzQ1YTJkMzBiYzRkNzVkMzM5ZTg0ZGY4NyByZWxlYXNlMjQtbWFpbnQKKzQ1NjMzIDZjNjM0YzZkNzdkZDhkM2EwMDE4ZGE4YTBiM2FmYmNhNGY1ODUwMTEgcmVsZWFzZTI0LW1haW50Cis0NTYzNCAzZjE0MzFhOWVkY2I3MWU5Njk2ZWJlYjM5ZjkxNDRhNTUxN2UyY2ZiIGxlZ2FjeS10cnVuaworNDU2MzYgNjI4ZjQxYThiMWNlMDM4MzgwZGQ0YjBmOWYxZmJhMDFlNzE4YjJhNCBsZWdhY3ktdHJ1bmsKKzQ1NjM3IDU0ZjE1NTM2OWE5YzEyOWMzMWNmOTczYjA2YTA2ZTBjNmUzNWYzNzAgcmVsZWFzZTI0LW1haW50Cis0NTYzOCBmYTZiNDliYTlhZTliNTE4ZmJmMTc1ODI5MzEzZjUyNTAxNzI0ZTJkIGxlZ2FjeS10cnVuaworNDU2MzkgY2UyZWM4YzgzNWU5MzVlOTA5NzI5MDU1NTFhYTdlNWRkNDgxYTAzNyBsZWdhY3ktdHJ1bmsKKzQ1NjQwIGRlNGE1ZjU1ZTIxZGUxM2E2ZWU0ODFiMDBlOGJiODdkMGRjYzVlMjQgbGVnYWN5LXRydW5rCis0NTY0MSBmYjE4MzdlODhlNzJiNjNiNWJmMzRlNGYyZmRiN2IwZTI1MzI5ZTFhIGxlZ2FjeS10cnVuaworNDU2NDIgMTBmMjQxZmM5NTkzOWY5YzlkN2M4YjJkMWMyYWRjMWU4MTZkNDc3MSBsZWdhY3ktdHJ1bmsKKzQ1NjQzIGFiNGU2NWM4MDllNmZmMzAwZTZiNDlhOThjYjM2YTNhZTgxNWRiOWMgbGVnYWN5LXRydW5rCis0NTY0NCBjZTU1ODVhZmMyMGY5MjE0ZDQ3OGMyMDk1OWU0YmQwNmE1YzZkYzU2IGxlZ2FjeS10cnVuaworNDU2NDUgNWY5ZWE3NmUyMDcyNDQ0NGU0ZDA2NTZiYTRmNGY5NTg0ZWU4ZWI3MiBsZWdhY3ktdHJ1bmsKKzQ1NjQ2IGY0OWEyZGRhOGU3NDU2ODZkNDU3NDM1YzVmNDg4OTg3YmViOTc2MmYgcmVsZWFzZTI0LW1haW50Cis0NTY0NyA4MzRmZDliM2NlZWVjMjAyMDhjNzEwODRhMGE3MDYxYWNiY2Q2M2M2IGxlZ2FjeS10cnVuaworNDU2NDggOTA0OGQ3NmJmMDFlNmRmNDlkOTk0Y2IxYjAxYjRiMDM4NzkyOTNkNCBsZWdhY3ktdHJ1bmsKKzQ1NjQ5IDdkZTI4NDk1ODg4MzYwNTE2ZjAyOTc5YjhiOTFkYmVjNTQwNGI2NWQgbGVnYWN5LXRydW5rCis0NTY1MCBmZDgwOGVlNjhlYjk4NTVlZTE5YjEzNGE2MGI1NGU2MTcwMjY4MTRiIHAzeWsKKzQ1NjUyIGE3ZjM3NjVlYTQ2NDI5YjRmOTJkY2JjNWU4ODA0NDk5ZDZiZjMyYzUgcDN5aworNDU2NTMgYWU2ZjUwNjAwYzQ2YjNiZjU3NzRlN2U2MzhmOWQ3ZjUyNmZkZTIxYiBwM3lrCis0NTY1NCA4OGRhODQ3NzYxMTkyOTFkYjhmNDMyM2Q0ZDI1OWIwMzM0Zjc0ZmNjIGxlZ2FjeS10cnVuaworNDU2NTYgZTEyNTJjZWE0MzljNjVlYjg1ZDBlZmViZTE2NDRkZTI0MTQ4NDIwNiBwM3lrCis0NTY1NyBkMGU0Y2VkNDg3YjM2N2U0MjRlNTJlNmVlZWY3MjFlZDk2YzdkZjZmIHJlbGVhc2UyNC1tYWludAorNDU2NTggYTBhYTkxMWJlOTZhMzFlYWMxNWM0OTdiYzkwNTlmYWZhYTljYjYyMSBsZWdhY3ktdHJ1bmsKKzQ1NjU5IGJjZjcxNWE5ODc3NGIwNGQ4N2EyMTkzYzg3MWM5NTA0ZGI2ZGZmZWMgcmVsZWFzZTI0LW1haW50Cis0NTY2MCBlYTY3NjI4ZGRhZTU2NTUxZjMwMGRmYjM5MjUyMmE2OWYwY2NjOTRmIGxlZ2FjeS10cnVuaworNDU2NjEgZTNhOGE4ZGUzNTVlM2ZiOTZhOWEwOWM0NGU3MGU4M2E1NDY5OGQ3NyBsZWdhY3ktdHJ1bmsKKzQ1NjYyIDc5OTU5YWYwZjllMGYzMWU2ODI5ZDZlYjJjOThkZGY1ODhiNTM5MzEgbGVnYWN5LXRydW5rCis0NTY2MyA5NzdlN2E3ZTE1NWFkNDM5NDZjMTY2MWM0OWI3ZmU4NDQ0YzZjYTk2IGxlZ2FjeS10cnVuaworNDU2NjQgN2RhNGFmOTVlYmFkYTEyZDdjZmQ3ZmJlMmViNzdjYjlmZDBhODI0OSBsZWdhY3ktdHJ1bmsKKzQ1NjY2IDdiYmIwNzExM2IyOWZkMWJhYzhhN2I1NzY3ZmVlM2U5MTNiYTY5YWMgbGVnYWN5LXRydW5rCis0NTY2NyAyMjJiNDdkNjdkNDMyYjQxODgzN2YwNjc4ODgxZjFkYTNhNjY5MjhhIGxlZ2FjeS10cnVuaworNDU2NjggZDZiMWUyYjMwODdmMzg0MDNkMjQwNTU1NDU3NDI3ZjNlZjM0ZWVjZSBsZWdhY3ktdHJ1bmsKKzQ1NjY5IGMyNWRkNzVlMDY2NzllZWYxYTlhZjI4ZGEzZDE5ZjRmZTAxMjNmNDQgbGVnYWN5LXRydW5rCis0NTY3MCA5OTEwNjY1NzY0MzQ3YTQ1NjEzNDBiNWRmZGE0ZjMxNDExZTVhMWMwIGxlZ2FjeS10cnVuaworNDU2NzEgNTA5YjUzMTcxOTU0YTgyZGU2NDRlOThhODc5ODYzZGVlMTdkZDFmNiBsZWdhY3ktdHJ1bmsKKzQ1NjcyIDJmZDQ3N2I2MTRlM2Y2MmViOGYwM2Y3OWIxZjY1YTVhMDM2NGRlZDUgbGVnYWN5LXRydW5rCis0NTY3MyA4NDc3MTBlNWQ3ZTE2NjFjZmJjZjljZDg2YWYzM2YwY2MxMGE4NjY2IGxlZ2FjeS10cnVuaworNDU2NzQgMWIxOTIwMzdiNjJmMWZiOTU2OWU5YjFkZDRlYjZlMGVlOTRiNmRjOSBsZWdhY3ktdHJ1bmsKKzQ1Njc1IDU4ZDEwZDdkMGFhMTFjZWM4M2I3OTI5ZTdkN2RiYjY2MjQ4Nzk2YjQgbGVnYWN5LXRydW5rCis0NTY3NiBiNmQxMGRkM2Y5OTc5NWQ2MTA5N2NhMGRhMGUyMzE1MDYyZjliNzA3IGxlZ2FjeS10cnVuaworNDU2NzcgNmY0ZWRkOTE0YzU4NmExNjFmM2Y5NDE2NTM1MTEyNDI2ZTA2NmY0MCBsZWdhY3ktdHJ1bmsKKzQ1Njc4IDcxNjdjMWMwZTAxMzE3MDVmY2Q4NTU2NWQ3ODYyNGI0YWY1NzI2M2EgcmVsZWFzZTI0LW1haW50Cis0NTY3OSA5YzA0MWM4OGViNjc4Mzc4NWQ0MzM3NmZmMzRlNjc0ZjkzMDI2NDM4IGxlZ2FjeS10cnVuaworNDU2ODEgZDYwZmJjNTRjMGQ0ZGZlYjJhODI2NTdkMDE3NTUyZDYxNDczMzdkYyBsZWdhY3ktdHJ1bmsKKzQ1NjgyIDlhY2I1NTUyODY4MDM5OWU2ODIwZWNmMWIxYTgyODhiMmIyNjk5ZmQgbGVnYWN5LXRydW5rCis0NTY4MyBhZGIxMGFmZGE1NWI0ZWRhMzQwYjY0ZmZiZGVjZGVlNGI4OWNkY2E5IGxlZ2FjeS10cnVuaworNDU2ODUgOTdlNTlkMmU2M2RmNjM3NzUzMWMyODE4NTY1Yjg1MTRhNTVlZjJmMCBsZWdhY3ktdHJ1bmsKKzQ1Njg2IGRhZDliMzNlNzhlNTNkOTFiYWRhNjI4MzRjZTRlOWU5MjdhNGU1MmMgbGVnYWN5LXRydW5rCis0NTY4NyBjNzhkMzA2YWFjY2Y5MTI1MTUzYmRjZjdkYmQxNzU2NzYzYWUwMTY0IGxlZ2FjeS10cnVuaworNDU2ODggMmY0ZDE3YmNjOTc1MWE5YzRmY2ViYTI5YzRkMWVmNGZlNGVmMjdiOCBsZWdhY3ktdHJ1bmsKKzQ1Njg5IGUwYjdlMzRiNTk3MTMzMWJhNjU1MWZlYzQyMjEyOTJmZjQzZDBhNGUgcDN5aworNDU2OTAgOGIwZjA3MzViMjQ2ZWUxNTYzZTgyMzAxNjRjY2ExMzQyYjc0NDc5ZCBsZWdhY3ktdHJ1bmsKKzQ1NjkxIDdlMmQ1ZDM3NGUzYTJmNDVhY2U5MjYwNGNhZDZjNjFjM2VjOGViYWQgSURMRS1zeW50YXgtYnJhbmNoCis0NTY5MyA5MmYyMThhNmIyMGI4NDRkMzVhMzBjZTZkN2E4MTdlNDVlN2JhMGZlIHAzeWsKKzQ1Njk3IDYxMjI4ZTU1NzkxZjNlZjcwMDcwNmMxNDFhNmQzZDg5MTgyMTg0Y2UgbGVnYWN5LXRydW5rCis0NTY5OCBhY2Q1ZTU1NTllM2MyNzhjZDdlYmI3ODcxODI4MDEzMzJkMjE1ZjkxIGxlZ2FjeS10cnVuaworNDU2OTkgMzAxNTUyMGQ2N2ZmMWJiYWJmZWViMWVkZGJhNWRlMjBlMDZiMzQ2ZSByZWxlYXNlMjQtbWFpbnQKKzQ1NzAwIDg5NWI3ZGFiYTJkNjA4NGFjMDQ1NDhmOGZiNDIwMWIyZDhiYTVkYTggbGVnYWN5LXRydW5rCis0NTcwMSAwMGRkMWRhZTc4OGI3ZDExODJjMmI5YzRjOTAwNTMxMmU1MWI1OWViIGxlZ2FjeS10cnVuaworNDU3MDIgZjMzZTRlZDU1MGI4YTRmNzEyODU3OGNlNjQ0MmRmZjFjZDcwYzE5MSBsZWdhY3ktdHJ1bmsKKzQ1NzAzIDQ0OWQ0YmEzY2Q0NDI0N2FiMGQ3YzE5N2IyNjllMTBmNWNjYzc0MjQgbGVnYWN5LXRydW5rCis0NTcwNCAxNGNiMmVlY2M2Zjg5NDRkMmVhYTI3MmFiZGYwYTdlOTc3M2Q2NzkwIGxlZ2FjeS10cnVuaworNDU3MDYgYWY0NGRiMmE5NTIzYTA1M2FlM2UyZGFhZTQ1MTAwY2M3MzI1ZmE2YSBsZWdhY3ktdHJ1bmsKKzQ1NzA3IDZjMTI0Mjc2YTFmMGNhZmNkZjRkYTVhNWQ1YmU2YjdjZWVmODIwMmIgbGVnYWN5LXRydW5rCis0NTcwOCA0NWY4NDkyOWIyYWViODY1MjQ5NThiOTkxYzY4ZmZkM2IxZWNjM2VlIGxlZ2FjeS10cnVuaworNDU3MDkgOGUxNDE0ODM4NmVjMDRlOTYwZDIwMjc2OTQ5YzU3YzY0MzRhNGYwZSByZWxlYXNlMjQtbWFpbnQKKzQ1NzEwIGE4NjhjMjE4YTIxMzFiNmI2NmZlMzU1ZmI3MWNmOWE3NTFiODdhZDUgbGVnYWN5LXRydW5rCis0NTcxMSA4ODYzZmVkNmM4ZDcxOWQ5YTBmODE0NzFlNjY1ZTRkMDAzOTNkNjllIGxlZ2FjeS10cnVuaworNDU3MTIgMTg0MzcxMGYzMmU4MzIxMzY3YTg0NTU2MWQ4NTE1Y2FkYzYzYjQ5ZiBsZWdhY3ktdHJ1bmsKKzQ1NzEzIGU1ZmViMDUxYzMyZmRjM2VhNjRhMDM1N2RiNGJkYzFlMDAxMWYyYjYgbGVnYWN5LXRydW5rCis0NTcxNCA3MDRiODA1Mjk2NjRiYTRlOTg5N2M5NDFkMTg4ZGU1NmU0N2QwNTU4IGxlZ2FjeS10cnVuaworNDU3MTUgYjUzNWMxOTFhNDRiMDgyMDgyMWEzYzdlZGE4NWRhYzJmYWNlNjg2NyBsZWdhY3ktdHJ1bmsKKzQ1NzE2IDc4M2NhYjY5MzM0NzdjNDFjNzQ0MWIwN2FhNDYwMDc3MTliYmYyMzMgcmVsZWFzZTI0LW1haW50Cis0NTcxNyA2OGE3YzAxNWE1NDc0Nzg0MDFiOThkMWQwNmFjZDQ1Y2YyYmVkMzM3IGxlZ2FjeS10cnVuaworNDU3MTggMjY5YzYyYzdmNjZhNTMzMzVmYjFiYzc3ZGMzNWI1MDk2MTllZjBkOCBsZWdhY3ktdHJ1bmsKKzQ1NzIxIGQ4ZDkwMGQwZWI4YTQ2ODRjZmU3Mzg2NWVlMzU2NTVkNzRmYzc1NzkgbGVnYWN5LXRydW5rCis0NTcyMiAwOWM0MjVhNWFhM2FmM2NlYzE5ZGQyYTg4NTlhZjBlNWUyNGI2NGY5IGxlZ2FjeS10cnVuaworNDU3MjMgZDVlNmU0OWEzODc5MGFlYWExN2Q0MGRjM2YyYzE1ZjVhYmJlNzcwNyBsZWdhY3ktdHJ1bmsKKzQ1NzI0IDA2YzA1OWI5MmQwYmFjNzdjM2QxMGFkMGUzZDJhMzU4MjM3ZTVhODMgbGVnYWN5LXRydW5rCis0NTcyNSA4ODM5ZWE5M2I2ZDcwNDI5NDc5MjdiNTU2OWRjZWMwMmE1NmFmNmM0IGxlZ2FjeS10cnVuaworNDU3MjcgZjgxY2Q3ZTlkMDAxZjA4MDljYjVhN2E2NWNiYWQ5OGNkZjBmMWE1OSBsZWdhY3ktdHJ1bmsKKzQ1NzI4IDU1NjQ0ZjBhNDAxYmI5MzVmNWY5ZDFiM2JiYjc5OTE4NWI5YjI5YjcgbGVnYWN5LXRydW5rCis0NTcyOSAxNjQ5NzA0YTIyMWExYTYxMTc1NmExNzQ1ZGNlMjBmNDhmOTRiOGUzIGxlZ2FjeS10cnVuaworNDU3MzAgOGRjMmE0ZDhhMjJlMDA2NmY3NjQ5MGNjNDJiMWQxMWMyMmMxYWExNCBsZWdhY3ktdHJ1bmsKKzQ1NzMxIDM1ODY2MmUyZjI3M2EyZGJhOTA2MGI0YjBiZjEyMzc0ZTYyZWNlZTUgbGVnYWN5LXRydW5rCis0NTczMiBmZWQ2ZTM3YWQwM2QxMDUyZTdiODg2MWJhMjE0ZWE1OGU0MDg0NTZhIGxlZ2FjeS10cnVuaworNDU3MzMgOWNjMTJiYjBiNzBhODY2MzRiODdmYjU4MTRlYzNlNDJhZTg4ZGE3MSBsZWdhY3ktdHJ1bmsKKzQ1NzM0IDIyYmI1YzYzODYyZWM2MjJhOTZmMTY5Mjc0OGYzZGFhZjIyMGFhNzQgbGVnYWN5LXRydW5rCis0NTczNSA3YzIyMmNlNTFiZDdmZTBjZjI1NWE4ZDI5NGZjYjk4NDQyZWE2NzRiIGxlZ2FjeS10cnVuaworNDU3MzcgODVjOWNhNWUwMzVhZGZmODJmN2Y3M2E0Y2UzY2IwNjQzODc3NTYwZiBsZWdhY3ktdHJ1bmsKKzQ1NzM4IGFjMDY4NDUzYTc4YTgxMjYxZGNjOGNmN2ZmMTY4OWQzZjZiY2RkODUgbGVnYWN5LXRydW5rCis0NTczOSA5NGQ5ZTBkZTRlNDllMzIwZTA5ODQyMmI2MDFhMjdiNTFiMjAzMjAzIGxlZ2FjeS10cnVuaworNDU3NDAgMGU4MDliN2E4NGYxNzhmODQ5ZjdlN2ZiYzVjNTBjODRiNjQ4ZmM1YSBsZWdhY3ktdHJ1bmsKKzQ1NzQxIDI2ZDA3NzBmMmI3ZWUyODlhMzlhM2I1NWRjZWMxYzFlZTY1ODQ5YzUgbGVnYWN5LXRydW5rCis0NTc0MiA1MDg1Njc4NTczMjA1ZTVlNDBiZTdmZDgwODBkNjkxODY0ZTAxMWVhIGxlZ2FjeS10cnVuaworNDU3NDkgMDk5MjdmMmY3NDc4ZTYzY2RiNGFiNTgwOGE1MGU1MzEwYjRmYmE0ZiBsZWdhY3ktdHJ1bmsKKzQ1NzUwIDkyMzM1MzJlYzhiMzUxMzU4MmRlYjIyMWNmODJkOWY5NGNiMDU3ZWEgbGVnYWN5LXRydW5rCis0NTc1MSBjZDllZDI3M2E2ODc5NjMzYTJlZThmYTYwMjA0NWQ2ZjNjZGViYzRlIGxlZ2FjeS10cnVuaworNDU3NTIgMWUxYjUzNmM2OGI2NTYwNWUzMTFjNzQ5NGE4NDAyZDY1NjQ3NzlhOSByZWxlYXNlMjQtbWFpbnQKKzQ1NzUzIGRmYmQ1N2Y0YTcxMTJmOTJmNzQ0NjVjOTlkNWYzN2NmZjMyYzc5NjMgbGVnYWN5LXRydW5rCis0NTc1NCBhODRhNjIxZWM1YzI0YjljNzI3NWFkZGE0MzQ5ZGQ5YWM5OGY2ZWM4IGxlZ2FjeS10cnVuaworNDU3NTUgMDkxMzQ3N2JkMjRlYTQwYjQ0OThmMDc4YmYzOGYyZWMzZjgwZjNiOSByZWxlYXNlMjQtbWFpbnQKKzQ1NzU2IDc3ZmVhMDZlYmMxMGEwYjcyOTRhMThhMjdhOTIzNWU4ZTBlOTVlZGEgbGVnYWN5LXRydW5rCis0NTc1NyA3ODhkODY2NWZmNThjNTQ0Y2M5NjNmN2YxMjM4NWQyYWFkM2I1YmM3IGxlZ2FjeS10cnVuaworNDU3NTggNGRhMGY3NjIxMzI1YzI2N2EwNzgxMGQ1Y2VjNDIwMjVmMGFmYTNhMSBsZWdhY3ktdHJ1bmsKKzQ1NzY2IGFmOTUyYmM3ZmViMjYxNTlhNmVlZWRhODBiYmRiYTUxYTRhOTQzNzUgbGVnYWN5LXRydW5rCis0NTc2NyA5NDBjZTVhNzZjNWZmODVhYmZmNzg0M2M4MDUzOTZhZWI1MDhkMDFlIGxlZ2FjeS10cnVuaworNDU3NjggZDU1MTRhN2VhYTRjY2VjZWY4MmJjNzhjOTYxOWY5ZjE1Yzk0YTg1OSBsZWdhY3ktdHJ1bmsKKzQ1NzY5IDBiOGU3ODJiODQ4NGI4OGRkM2NlZTIxOGY0Y2JmNzRjMmU2NzdjNTYgcDN5aworNDU3NzAgYjVlN2Q1YjNjNDQyZTc5ZGIxMjg0YWJiMzU5OWFlYzJjYjE2ZGI1YSBsZWdhY3ktdHJ1bmsKKzQ1NzcxIDM4NDVmNzBlMGJhZmRhMDRhZmE4Y2EwYjgzYjY4YmQ5MDJiMjM0YjQgbGVnYWN5LXRydW5rCis0NTc3MyBiYjZjNWMyMDBhM2YwM2JmYzkyZGNkYjZiY2NhMDBmMDhkYzNmN2E2IGxlZ2FjeS10cnVuaworNDU3NzQgYjVlNzE4M2FkMTEyMjVmOTMyNjE0MWU5ZDU3NmI5ZTUzZTY0ZjVmZiBsZWdhY3ktdHJ1bmsKKzQ1Nzc1IDM1MThlOTRhYTY2MzcyMTk0ZTU3Y2UwZWRhZmYyNDk3ZTQ1ZjNlNzkgbGVnYWN5LXRydW5rCis0NTc3NiAxOWFkM2QzNWZhYzRhODRhNWYyMjk1Y2ZkZjRiMGVjNDJlYzgwYzFlIGxlZ2FjeS10cnVuaworNDU3NzcgOGJjNGE3ZTVmZWY4NGY3MThiYTNhNWJiZDcwY2Y3NDJiYTExMTJlZCBsZWdhY3ktdHJ1bmsKKzQ1Nzc4IDYxYzdlYzk5NWFkZjU3ZTE4MzhhM2FlZDNkMjdhZGY2ZGYxOTczOWUgbGVnYWN5LXRydW5rCis0NTc3OSBlOWE3MGIxNDY4NTc4ZDhlNDYwNTE1ZTBmNDhkMDE4M2E3NjQ1N2I1IHJlbGVhc2UyNC1tYWludAorNDU3ODAgMzRkNjk2YzFlZWJjNjhjMTRhZWViYTE0ZGY2ZTY0ZWZjMjQ4ZjA3OCBsZWdhY3ktdHJ1bmsKKzQ1NzgxIDhlNWI2NGE3YjMzZjJhMWUzOGE2ZGIwZTE5YzUwOGM3YWQ4YWZlNTcgbGVnYWN5LXRydW5rCis0NTc4MiAzOWViNWI1MjI1MjM5Y2RlYzUwMGRmMTljMGE4MzAwNDk4ZThhYmU4IHJlbGVhc2UyNC1tYWludAorNDU3ODMgYzEyNDcxNjlmM2ExNjZkOGIwNWNmYzM3OGFjMWFmNWNjMWM0Y2RmZiBsZWdhY3ktdHJ1bmsKKzQ1Nzg0IGRlMmVlOGRlZGNlODk5YWMyMmQ4NjhhOGZjNjc5MTQ4ZWFlYWVkYmEgcmVsZWFzZTI0LW1haW50Cis0NTc4NSA1NjViZmZkZThiZjE4MzA2NDhmZjMyMjZmNTQ4NzI3MDU3OGMxMTlmIGxlZ2FjeS10cnVuaworNDU3ODYgNDczZjM3ZGUxM2ExMzdmNDFmNzQ0NGE4YzJhMDE1ZmE0M2Q4OWI5YSBsZWdhY3ktdHJ1bmsKKzQ1Nzg3IDI1NDZjNDc3MzRhMDE1ZjhmOTVjNjc1ZTdlYTUwOTY2N2I3NTg0ZDIgcmVsZWFzZTI0LW1haW50Cis0NTc4OCA4YmRiZWQ2N2FkZjc4NmU4NTk3ZmEyZmQwMmM0YzBmYjY0NDc4NzEyIGxlZ2FjeS10cnVuaworNDU3OTIgMzg5ZTkyMmE2NDdjMTEwMmY1ZjFmZjI2YTZkMzFiMTMxYTgyODY0YSBsZWdhY3ktdHJ1bmsKKzQ1NzkzIDg3NGQ3N2VlZmNlNDMxYzBkODA5ZWZlMzlkMTA1MTE0Zjg5NjFiNDEgcmVsZWFzZTI0LW1haW50Cis0NTc5NiBmMjc0MmFjYTJhZDA3ZjQ0MjRiNGNiZTljN2ViMzM2MzAxYjM5MzljIGxlZ2FjeS10cnVuaworNDU3OTkgZjA4MDk0ODNiNGQwNWYxYjdmMmYwY2EyZWU0YmZmNTcwNDdhM2JjMiByZWxlYXNlMjQtbWFpbnQKKzQ1ODAwIDM2YzdhNDQyMmUzMDc1OTQ1ZTgxNjBlNWQyOTNjMWM3NDM3OTYxNDcgbGVnYWN5LXRydW5rCis0NTgwMSA1NzM5OGViOTc4YzI1NGU2NzBhNzAyYzk4ZGFjZGRkOWZkOTNlODEyIGxlZ2FjeS10cnVuaworNDU4MDIgODQ2OWQzZDhkNGVkYjc0NmY5OTVmNGY1NmUxYTBkYzI2ZTE0MDZkNSBsZWdhY3ktdHJ1bmsKKzQ1ODAzIDg4NzNkMzBhMTQwZjg0NDBiNzk2Yjc4MjRjODExZTc3OTM1ZjNkZGUgbGVnYWN5LXRydW5rCis0NTgwOCA1YzIyNzdhMjk0ZWE0NWUzYjRjMGYyMWIwZTFlOGM2MDEzMjhkMDEzIGxlZ2FjeS10cnVuaworNDU4MDkgNTFiNmY4ZTA0MmRmYmY5YmY1OWYzOWRjMWVkNmZiZjlhMzE2NTNkYSBsZWdhY3ktdHJ1bmsKKzQ1ODEwIDNmNTFmZmQ1ZDhiZjc3YWE5MmZiZWIwNDhkODM1Yjg5NjYyNGUzMDggbGVnYWN5LXRydW5rCis0NTgxMSBmNjI2ZDUyZmFiZjA0NGMzYWQ4OTAzYjA3NjE5ZTI2MTBhZDAxZDlkIGxlZ2FjeS10cnVuaworNDU4MTIgNDY1ZjViM2EwMjM0ODRhMzM1OGNlZDRhM2Q4NWVkNDFlZjljYzI2OSBwM3lrCis0NTgxMyBhY2FmMjc2MzlhNDExYmZiY2YwYTRmNTI5OTczNmY5NjUzZGZjNzBmIHAzeWsKKzQ1ODE0IDYxNGM5MjE3MDdmOTU0YTZmMjRhODVkOTQxZmZkYWE3MDA0NmFmZGUgbGVnYWN5LXRydW5rCis0NTgxNSAyYTI4OTE1NjE2ZDUwMWJhYTVjNTkxZjM4YmViMGUzNzA3NjQwMDk5IGxlZ2FjeS10cnVuaworNDU4MTcgMzJhMTg3ZjNkNWJhOTM2YWNjM2YwMWMzODk1MmEyNTJkN2I0OTBkNSBsZWdhY3ktdHJ1bmsKKzQ1ODE5IGU0ZTg0ODIxNGQyMzg1MWJkM2ViNGVjZmJjMzU4NzRjZmMxOTJmYmUgbGVnYWN5LXRydW5rCis0NTgyMCBhYjUzYTM3OGVkYThmOWIzNzMzYWRmMjFkZDU2MDdjZDc1NjZkZWM2IHJlbGVhc2UyNC1tYWludAorNDU4MjEgZmNjNjE4MzVjNmFjOGU2ZjM5ODU4YzQzMzg4N2M1NTQ4Y2U3OGNiYiBsZWdhY3ktdHJ1bmsKKzQ1ODIyIDY5ZjA0NTdjMTdiYjE4MDg1Nzg1NmJiY2U0Y2QwMWE5M2Y4NmIzMWUgbGVnYWN5LXRydW5rCis0NTgyNCA4ZjdhYmMyYmE3ZDBhMjJkNWYzMDJhMzM3NjZhM2U4MzZjZTEyZWY2IGxlZ2FjeS10cnVuaworNDU4MjUgOWFiZWFiOTZhZjU3MjM2ZDNhZmRkYjE3YTM3ZTBhNjQxOTZiYTNiYSBsZWdhY3ktdHJ1bmsKKzQ1ODI2IDdjYzdjN2ExMzY5N2JjZjAyYmZlMjUyYzBlYjA1YzQ3NTdkYmNjZWMgbGVnYWN5LXRydW5rCis0NTgyNyA4MWQ5MWZmODAwM2I5OTQzYjFjMzU3YTI2MzkwYzA3ZWMwMDdmYTUwIGxlZ2FjeS10cnVuaworNDU4MjggZjg5NDEwNDQ4MDFjYmZiM2RmNDMyNTE3ZDlmZGI5MDhhODM0NWIyNCBsZWdhY3ktdHJ1bmsKKzQ1ODI5IGZjN2I2MTgxZDA5ZWFlMzE3ZDkyZGM0M2EwMDQyMmZkMzg1YTUzN2UgcmVsZWFzZTI0LW1haW50Cis0NTgzMCBmNjJiZDUxMThjNzhjZjM0NWI2ODM4YmMwNTk0Mjg0NzNkNDFiMzFmIGxlZ2FjeS10cnVuaworNDU4MzEgMDczNmIyNWM1N2M1NzY4MTNjZjAzZTE3MTMzMmQ1OTg0YjBkN2NlYiByZWxlYXNlMjMtbWFpbnQKKzQ1ODMyIDEzNWIxNzc4ODNjMzQyNWJlYTZlYjRhNTFmMTU1YmRiMWVmMzkwY2IgbGVnYWN5LXRydW5rCis0NTgzMyBiODUwN2RlZDRkMTVjYzM4YTg4NzM1Y2NmNjg4ZjU4NjNmZDE4Yjg3IGxlZ2FjeS10cnVuaworNDU4MzQgZWZlZWJjODc3MGU1ZTYyMWIxZjQyNWQ4MTBjYzU2NTZiMjhmYTdiZSByZWxlYXNlMjQtbWFpbnQKKzQ1ODM2IGNhNmM5MTUzMWE5Njc4NzA0MDU3MWQ0YzQ1ZmZlMzgwMjk3ZGRkNzMgbGVnYWN5LXRydW5rCis0NTgzNyBjZjE5YTEyM2E1ZDlhY2NjNjI0ZjE3MGNlNTI3NGJlZjlmNWZhYjgyIGxlZ2FjeS10cnVuaworNDU4MzggOWI3NWFkMjM2ZjAwMDA4MGQ2YWMzYmQwOGVhM2Q0NDk5MjhiYzcwZCBsZWdhY3ktdHJ1bmsKKzQ1ODM5IGQ3NmI5YWE3MjI5ZmM2OTYxODYyM2RkZDRlYjEwMGI4ZjAzY2NlMWYgbGVnYWN5LXRydW5rCis0NTg0MCBlZTk4ZWNmMDU3NzNhNzA3MTc3ZDMzNTUxZmZlY2I4ZjhlNDk1MmZjIGxlZ2FjeS10cnVuaworNDU4NDEgNjM1MWNkMGY3YzI4NWY5Mjc5YWRkMWI1NWRhNmZkMDcyOTY3MTFmMyBsZWdhY3ktdHJ1bmsKKzQ1ODQyIGVkMzM1ZTUyZDE3MDU0OTRmY2E3MDc2NDMyNjg2MWFhYjA5ZmFiMWQgbGVnYWN5LXRydW5rCis0NTg0MyA3YjgzYjY4YmU4YTY3YTQ1YWFkZjYwMjBkOTIxODIxZDQ3MGQ0NDk1IGxlZ2FjeS10cnVuaworNDU4NDQgMTI4YzAwNjFiNWJiMjZiMjllYmQ1MzYwNjNmNjlmMzIxYWUxMTgwZiBsZWdhY3ktdHJ1bmsKKzQ1ODUwIGM5MjAyZjFjNTZjMjc0ZTMwMTc3NzJlMmI4NTExMmQwYzRkMGE4ZTkgbGVnYWN5LXRydW5rCis0NTg1MiBiMWNiYzYwNWJlYzljZGY5YTQ2ZjAzZGRlODdjMjIzNDk1Y2FmOTFiIGxlZ2FjeS10cnVuaworNDU4NTMgNzI4YzE2ZjE2MjY3MWYzNDFiNzljMmFlNzUxOTRmNjI1ZGUyNTcyMSBsZWdhY3ktdHJ1bmsKKzQ1ODU0IGI4ZWM2ODljYjJmYmNjNGY2YWNiZDFjMGQ5ZTFjNzVjOTE2ZGNmNzkgbGVnYWN5LXRydW5rCis0NTg1NSBiN2I1ZjBiMzRkMjVjY2RkN2MxZTFhMWZjODYzNzMwYWQ0YTRjNzFlIGxlZ2FjeS10cnVuaworNDU4NTYgOWExN2I4MmVhZmM5NDEyN2EzN2ZhYzlmZjJjYjJkY2IyZWRiYTljOCBsZWdhY3ktdHJ1bmsKKzQ1ODU4IGJiM2UwYzg4OTYzMjVhNTEzMDExYTM3MDYwMjMxMjM0OGM0ZTFhMTQgbGVnYWN5LXRydW5rCis0NTg2MiBhODEyZDBmYWU3NGE0MjhhMTcyZWUwZmFhNTllOThiYjlhYzgwNjUzIGxlZ2FjeS10cnVuaworNDU4NjMgZmUyOTM5OGY0OGM5OGRmZTBiOGI3NmZiMzljZjE4OTM5YzNlODA1ZSBsZWdhY3ktdHJ1bmsKKzQ1ODY0IGFjNzI5MDBlMTkxOWExZmViZWNhNjZmYWNhODgzNzNkMGJhNDQ4M2UgbGVnYWN5LXRydW5rCis0NTg2NSBiNzA2YjEwMGM4ZmMwYTAzODUxM2YxMDVmNjg2MTgyYmEwMTEyNjc3IGxlZ2FjeS10cnVuaworNDU4NjYgOGFhZjU3YmNjYmY4YjU2ODNhOGFkZjc4NmIzNTM3YTkwZTdkYTY2ZSBsZWdhY3ktdHJ1bmsKKzQ1ODY3IDY2ODc1YjljODlmNDU0NWY1NDhkYTMwZjM3NTVlMjM0OTQyM2VjNGQgbGVnYWN5LXRydW5rCis0NTg2OCA2NmYxYjNlYmFlZTNhMjE5ZjI5MTMzMjNmZTZlNmY1Zjg3Y2M5Mzg0IGxlZ2FjeS10cnVuaworNDU4NjkgNmUwYjA1M2M2Y2Y3YjE3NmFiNWUxYjZlMmI2NTE3Y2MxYjEyYzNiZSBsZWdhY3ktdHJ1bmsKKzQ1ODcwIDBmYTNiYWQ0ODlkZDQ3N2ZjOGYzODhhMDMzYTk0ZmZmYWM0NmM4ODAgbGVnYWN5LXRydW5rCis0NTg3MSBiYzQ4ZTZiMWU2NTQ1NWM3ZWU5MDBjODA3NDVjMDIwMjk5MGE2MzEyIGxlZ2FjeS10cnVuaworNDU4NzIgNmExNDY5YjM5ZDczNzg1M2JjZDA0MTQ0OGU4ZGU1ZjQ3OWIzYzdhMSBsZWdhY3ktdHJ1bmsKKzQ1ODczIGViMDM1NjJkZjRhNzk2ODQ3Y2EzY2NmMDQ2ZjlkMTViODgwYjVkYmYgbGVnYWN5LXRydW5rCis0NTg3NiA1NDU3YWI5Zjg1OTkxN2IwNGIxYjM5Y2Y1NmZkYzFkM2Q4ZGM3NGUyIGxlZ2FjeS10cnVuaworNDU4NzcgZTVkMTFkZmIyZDA4ZWM2YzFmOTUzYTgwN2JkMTdmNzZlOGMxNGVkZSBsZWdhY3ktdHJ1bmsKKzQ1ODc5IDIzZDRhYzMzYWMxNmU3NGMyMWRlZDlkMmI5OTVjYTUwYjJkZDZjNzYgbGVnYWN5LXRydW5rCis0NTg4MCBjMDZhNjJmMDU4OWZiYTRhODM4NjQ3YWMyNTUxNmU5MDVmNTQyMTYyIHJlbGVhc2UyNC1tYWludAorNDU4ODEgNGY3MmE0OWQ3MGM4MDVjMGY5NzE3NmU3YjI5YmQzYmU5N2RjMTA4MiBsZWdhY3ktdHJ1bmsKKzQ1ODg3IDZiYzFlODNhOTdhNjlmYjg5OWFhNGRlYTQ3MDlmNDg0ZWM1NDQyNTYgbGVnYWN5LXRydW5rCis0NTg4OCBlOTJhOGI4ZWVjNzNiODNjYjU2NWJlOWZhOTQyMzYyN2E3OGM4MDJiIGxlZ2FjeS10cnVuaworNDU4ODkgYTA2YjY5ZjhjMjc2YTg5NDFkYmNlMmVlMjFlMzBlNjQ5Y2UyYzViOSBsZWdhY3ktdHJ1bmsKKzQ1ODkwIDg4Yjg5Zjk2Yjk3ZmYwNzk3N2Y0Y2ZmYzg2YmI1NzE4ODEzMWNjNTcgbGVnYWN5LXRydW5rCis0NTg5MSA4YzM4M2VmNzgxOTg0OWE4YzhiMGJjZmExZmFmOWMxZmJmODQ1MmYwIGxlZ2FjeS10cnVuaworNDU4OTIgMDI1MThjZjE3YTY2ZWE3NjE3YTdjMTNkZmQzNDk2Y2I4ZWUxMzYyZCByZWxlYXNlMjQtbWFpbnQKKzQ1ODkzIDI5NDI1MDg2ZTlhYjYyOGIzMTkyNGNmNmNiMzIyZjViZGYyZjYzZTkgbGVnYWN5LXRydW5rCis0NTg5NCAyMjBhZDIwMzk0ZGYwYjMxYTRkZTU5ZjEwMjkyYjgyOWJhYjBmYzRiIGxlZ2FjeS10cnVuaworNDU4OTUgOTFhNjQzNmYwYTU4NGUxMmQ0YTZiZTM4NGVkN2JkZTg1MDAwNWU3ZiBsZWdhY3ktdHJ1bmsKKzQ1ODk2IGNlMmE3ZmFkYzJiMDRlMjM4OGUwODk0NjZmZTMwMThjOWU1NmY3ZTIgcmVsZWFzZTI0LW1haW50Cis0NTg5NyAwZTdkMzRhYWVhNjEzMWVkOTdhMGMxYjg2NmIyZTYxOTdlYThjOTcxIGxlZ2FjeS10cnVuaworNDU4OTggYmU0OTY0NWUzOTg0MTBhNjZiOTJlZjliMTI5MDUwYTg0M2U1YmMwMyBsZWdhY3ktdHJ1bmsKKzQ1ODk5IGI1OGY3NTBkNTIxMDFmZTM3Nzc5NTE3ODE5YzNkOGRiMmYwNGNiODIgbGVnYWN5LXRydW5rCis0NTkwMCA3OWM4YTJhOTg4Y2IzOTQ0NzlhYTJhMDYxNTJmYjAwYzIyNzljNzA5IGxlZ2FjeS10cnVuaworNDU5MDUgYTZhMTM1OWFhYjg0ZGY1MzFkN2QwMzdhNzg0MmE4MWNjOGFjZWQ4YiBwM3lrCis0NTkwOSBiZTBjY2E3MGNjYWFkYjMxMTUyZTU1MjVjNzFiYmNhMGU4YTc4NDYwIHJlbGVhc2UyNC1tYWludAorNDU5MTAgNTdiZDdjN2Q5MWUzYWJlMDIxYWU1YjMwN2I2YTM2MTFmZThkMWZiYSBwM3lrCis0NTkxMyAzNjE4MTI2YzYzMDRjNzFhODMzODEzZTFlZjQ1OGI0NGQ0ZjMwMDQ2IGxlZ2FjeS10cnVuaworNDU5MTQgYzAxYzMzN2FkNjE4OGVmZTAyNWE5MTYyZDExODQ4ZTNhZDlmZWYwMiBsZWdhY3ktdHJ1bmsKKzQ1OTE1IGE1OTZlZDkzY2Y0MjY0YjI3ZGNkZjQ2NjIwMzNiZTE3NWRkNzVjZjEgbGVnYWN5LXRydW5rCis0NTkxNiA3NDFmYjgzYjRlYWI0NzYxMmQ5MDhhNzAyMTk5Y2MxYWI5ZmI4OWJiIGxlZ2FjeS10cnVuaworNDU5MjAgYzMzNDJkODhhZWZkNGNiNjc5N2I5MGQ3NTgzZjViM2I5Y2FjM2RkMCBsZWdhY3ktdHJ1bmsKKzQ1OTIxIDJjNWU3NGM2NDVlMjhjOThkYzY1OGIzYmVjY2Y4ZTI5Y2M2MDUwOGYgcmVsZWFzZTI0LW1haW50Cis0NTkyNCBjM2EzNmQ0NTZkZWEwYmYzM2I0OTU2YmU0YWE1NTg5MDEzZjkzYjRmIGxlZ2FjeS10cnVuaworNDU5MjUgMGQ4NzliZmYyNWY2NmM3MjBkN2Q4YTc5NTkxZmFlZjc3ZWQ5NTk2NiBsZWdhY3ktdHJ1bmsKKzQ1OTI2IDkwZGQ1N2ZjZDI0ZTEyYmFkMzFkNjMwNmFhM2Q5NDU2OTkwY2FkYTcgbGVnYWN5LXRydW5rCis0NTkzMSA0YzM5MThmMjMwM2I1YTk1YmY3ZGE4MDY1ZWQ4ODJjNzhmZDRmODQ1IGxlZ2FjeS10cnVuaworNDU5MzIgZTcwMzUyNzUyNDViYWUzNjZmMDU1ZWNkYTkzZDI3NWM5ZjQ3NzgyMSBsZWdhY3ktdHJ1bmsKKzQ1OTM0IGQwMTcwMjc2YzVkZWQzMDRiZDQ0MzhmMDk2MDJjYzhmNDRkYjQzODkgbGVnYWN5LXRydW5rCis0NTkzNiBkZGYwMDY5ZjYxZjkyZDdlZDVkOGM2YjYxZDY0ZjY4YjdlZWM2NzUzIGxlZ2FjeS10cnVuaworNDU5MzggODIyNWFlZTkxOTA0OTUwOTNhZDg1ODYyNzNlY2JlOTdlZGY2MzA2YSBsZWdhY3ktdHJ1bmsKKzQ1OTM5IDZkMWUyNDBjOTE4YzEyZjA3NGNjOGE0MzMwODFlYzQ0ZWRmZjk0NjkgbGVnYWN5LXRydW5rCis0NTk0MCBiNDQ4NTlmMGIzMDhiYzg0OTYxMzJiMDQ0Zjc3OTQ2MmUzY2NlNjAwIGxlZ2FjeS10cnVuaworNDU5NDEgZWI0ODc5YzA4NWFhYTg3ZjJiOTY3OTBmMTQ4MTRhYTcyYWUyY2MwNyBsZWdhY3ktdHJ1bmsKKzQ1OTQzIGNlMGI0N2QzZTVkMTBjNzAyOTZhZWQ5ODUxOWMzMjQ4MDk4MjdlNmYgbGVnYWN5LXRydW5rCis0NTk0NCAwNjA2YjljMDhhYzI0ZjFkZGI3ODU3ZTUyZmMzZjZlOGY5N2UzNDQ5IGxlZ2FjeS10cnVuaworNDU5NDUgZjNhNWUxNTNjMzI5NDliODExNzE2ODJiZmVlNDg1YWQyMjBiY2IwNCByZWxlYXNlMjQtbWFpbnQKKzQ1OTQ2IDRjOTkyMmQ4ZGNkZDEwN2ZjMTg5ODdhODZhNmVhM2MwOWE5ODU0NWYgcmVsZWFzZTI0LW1haW50Cis0NTk0NyBmMWUyNDQ1MmRiYmE3YjFhZWQ0NjliZmEwNWU1OGJhOGQwNWZkMzVlIGxlZ2FjeS10cnVuaworNDU5NDggOGRhMDhkODVmY2IxZTY5MmUxMDI3NzIwMDA3ZWJmMjY3NjRmYTNmOCBsZWdhY3ktdHJ1bmsKKzQ1OTQ5IDk3ZGIzZDliMTQ1ODAwOTFjNDNlNTgxYjRiNzhjNTdjNjc0MzU1MWYgbGVnYWN5LXRydW5rCis0NTk1MCA4Yzg2Y2E4ZjI2ODI4ODAxZDc0NDk2MzcwYzMyYTU4MTQ2N2I4NDYwIGxlZ2FjeS10cnVuaworNDU5NTEgZWVhMTc2ZTY3ZjIyODg0YzU1Njk2OTdkODEwYTJlYjViNjY2MjBhYyByZWxlYXNlMjQtbWFpbnQKKzQ1OTUyIDE0NTczMzZkNDMyZmU0NTliZWE4YzA1NGI5ZDE2NzkwMzM2Y2RiMWMgbGVnYWN5LXRydW5rCis0NTk1MyA0MjcyOGNiMThlYTI1NjBjMWRhNjVkNzZmZTUyMTQzM2E2NzQyYjcyIHJlbGVhc2UyNC1tYWludAorNDU5NTQgZjYxYzg5MmNhZGFjOTc3NDE1NGE0ZDQ5ZmQ2MWM5NDhiNzBmODE5ZSBsZWdhY3ktdHJ1bmsKKzQ1OTU1IDdmZTQ5ZGJjYmJkYWIxYzk1OTllNGU1ZDY1NjM5N2I4MjJiYjI3NmUgbGVnYWN5LXRydW5rCis0NTk1NiBmMjZmYzNhZWVmOTZjYjQ3OGViOGZlYmVkZTVhNzMwMDRlZDk5Y2JkIGxlZ2FjeS10cnVuaworNDU5NTcgNjcwMTMwOWVmYTc2ODZlNjAyNzIyY2QzNTE3NDM3YWRlMTFmNmI0MCBsZWdhY3ktdHJ1bmsKKzQ1OTU4IDg2YTA1MWQyMjY0ZDJhMjkwNTgyYjRlZjA4YTI1ZjU4NWVlYzExOTQgcmVsZWFzZTI0LW1haW50Cis0NTk2MCA5ZDRmY2MzOTAyMzZlNGFiNWQ4MTAwNWQ1MmRiZWNhNzRhMmQzMmFkIGxlZ2FjeS10cnVuaworNDU5NjMgOWE2MzdiZjRkZjQyN2FiYTNhZmNhMDc2MmMzMjMxZTBkMGU2OThkNiBsZWdhY3ktdHJ1bmsKKzQ1OTY0IGUyZWY2MGZlYzNkYWQ5MWE2ZGYxZTQ1MTRiMDIwZTU3ZjUwYTcxYTIgbGVnYWN5LXRydW5rCis0NTk2NSA0MDgyZDFhMTE5MTdjMTBmMjA5M2Q4MmE0Nzg4ZGRiYmNlMzRlYTE5IGxlZ2FjeS10cnVuaworNDU5NjYgOGY0MDhhYTJhN2VmYTQ3ZjRhNWIwNzA0NmQ1YWY0ZTEwODVlOTU1MyByZWxlYXNlMjQtbWFpbnQKKzQ1OTY3IDJhOWI0NWRjMzExNDFkOWViYjQxNTlmNzllZDA2MzA5ZWJhZTRiZmIgbGVnYWN5LXRydW5rCis0NTk2OCBiMjFiZTlkMjM0MWE5MDcyOTc0ODUzZmRlZDk1ODA0YTNhZWFhMTNkIGxlZ2FjeS10cnVuaworNDU5NjkgN2ZjOTNkOTUzMGJmNjBkZjg1MjgyNjAyZDM1NDQwMDQyNmUwYTFkMyBsZWdhY3ktdHJ1bmsKKzQ1OTcwIGM0YWE1NmQ3YTVjMTA2Mzk0MzY3NWI5MzhkZTRhYTY3MmQ2NjNhMGMgbGVnYWN5LXRydW5rCis0NTk3NCA1ZTM1NDNiNzgzMzdiYTM3NmIyMWE5Y2FiOGE2MmNiMjdjOTU3MmI3IGxlZ2FjeS10cnVuaworNDU5NzUgYmYzNzM1MjA2ODcxYmQyN2U5ZGExYzM4YWNlMDg2ZGM1NzAwYjlkNSBsZWdhY3ktdHJ1bmsKKzQ1OTc2IDA3OTUzNzJhODRhYmZlMGRjNjI1YmMwYTdkZWJkMzk3NzNjMWYyZTMgbGVnYWN5LXRydW5rCis0NTk3NyA3ODkwZjZiOTJjMTQ5Y2Y5YjE5NjRhYTkxZTBhMjVhZDM3YzMzN2M5IGxlZ2FjeS10cnVuaworNDU5NzggNGRlMzE1NWUxOTJiYzk5MDhmNmZkZGM4YzgzZjZiZDE3MmI5ZWI1NiBsZWdhY3ktdHJ1bmsKKzQ1OTc5IGNmNzhmOWM0NzkwZWUxMjk5YTk0Y2QzZDUxMzc4M2Y4OGVlZGFiZGEgcmVsZWFzZTI0LW1haW50Cis0NTk4MCA1NzRmZmM0ZDdiZjZiYzc3NzQwNWJmMDQ0YWY1Y2RmNmJkMWQyNjU2IGxlZ2FjeS10cnVuaworNDU5ODEgYmI2MDkyOTk1NDA5OTM1MTM2YTAyYzlkMGU5ZmI4M2U4MTdlMWRhZSBsZWdhY3ktdHJ1bmsKKzQ1OTgyIGE3OTdlZmI0ZTdmODNmZWYyMzUzM2JiNGMwNDc3NWU2NzUzMWIzMzggbGVnYWN5LXRydW5rCis0NTk4NyA4NWM4Mjg4NzgxODhiMzVkYmRlMDRkYTU3NGE4Mjk2MGNjY2MxN2VjIGxlZ2FjeS10cnVuaworNDU5ODggOGI2MDE3YzkzN2FjMjdmMDA4OTNhYTFlOTk0YThlN2YxNjZiOGRhZCBsZWdhY3ktdHJ1bmsKKzQ1OTg5IDUyNTYyNGU5NGU3OGFlNzZkYThlODUzMmFhMzk3MWMyYjRkYmM4ZjcgcmVsZWFzZTI0LW1haW50Cis0NTk5MCAzMjQ3MmVhNWYzY2RiNjA4ZjM2NzAyZGZiYjJkZWRiMDBlMTU5YjJjIGxlZ2FjeS10cnVuaworNDU5OTIgMzgwZGFkMzk1NTk5MTRmOWQ1NDc2YWZkZmQyZjgwODQ0OTA5YWVmZSBsZWdhY3ktdHJ1bmsKKzQ1OTkzIGViZDU3MzIxMGUyNTAzOGNlNDRjMDUwNjhlMTY5ODVmZjVkNmJiN2EgbGVnYWN5LXRydW5rCis0NTk5NCA0YmRmMjdiZDczZDIyYWQ1ZTc3NGIyNjIwYTdhM2VlODNmNGEwOTgxIGxlZ2FjeS10cnVuaworNDU5OTUgY2RmOGY1MzM0NDI2OWU5MjA0ZDY1OWFkNzY3YzE0YjgxYTQ4ZWQyMCBsZWdhY3ktdHJ1bmsKKzQ1OTk2IDY3NjQ5MmE5M2M4YTdiZjdkZWM1N2IxZjZhOTlkMjM1ZjA3YjE3MzAgbGVnYWN5LXRydW5rCis0NTk5NyBlZjgyYzVkMDE0NjA3ZmJiNThmYzBjMTBhNzk1Zjk1NWI4NjQ1N2JlIGxlZ2FjeS10cnVuaworNDU5OTggZjI1MmM2YWUwYzQyNjQzNjI2Yzk0NjI1YTVlNzA2MDc1NDUxMmNlZCBsZWdhY3ktdHJ1bmsKKzQ1OTk5IDI5YjczNmYwNzNhMzVjM2ZiOGU0MDQwMjE2N2ZhYjUzZmZhMGY0YjQgbGVnYWN5LXRydW5rCis0NjAwMCBhYjcwNGI5OWUxNTBjZjAzNzU5ZTdlYTZlZmViY2RjZDY4MDMzYmZmIGxlZ2FjeS10cnVuaworNDYwMDEgZDgzNTVjY2NmZjRhY2ZjMjk3YzI2MDgyZjJjY2QzZjYyMTg3MmNhNyBsZWdhY3ktdHJ1bmsKKzQ2MDAyIGZlYTVkMmZkOWI4YTQ4M2M3MTE5NjhjOGI3MTBmMDVhMzk4NDkxOWYgcmVsZWFzZTI0LW1haW50Cis0NjAwMyBlN2QzMGQ3NWRhZTdjMmJmYjQwODU4ODQwODI2MzZlNzRmODQxMDNjIGxlZ2FjeS10cnVuaworNDYwMDUgYWQ4Yjc2ZTk5MjYxMDUyYjE5MTZkMzAyNzNjNjczZTg5NTE1MmQyNyBsZWdhY3ktdHJ1bmsKKzQ2MDA3IGNhMTA1MDdhNmFmYmYzY2M3YjZmYmMzMjcxYTNiYWVlNjE4YzU0MzYgbGVnYWN5LXRydW5rCis0NjAwOSAwYWU0YmI3NGU3ODFhODM0YzNhNGQ5MjNiMjYxZWQwZTY3YmM4YWNlIGxlZ2FjeS10cnVuaworNDYwMTAgMzM3OWFkNjZiMGUwNzNhNDVmYzc1MWVhYjU1OWMzZDA3NWIxYzEzNiBsZWdhY3ktdHJ1bmsKKzQ2MDExIDNiNWNkN2M2NmRhMDkwOTc4NzViZGQ5NzA5OWM4ZDMwN2YyNTE0MmEgcmVsZWFzZTI0LW1haW50Cis0NjAxMiBkNmQ4NzlhZjM2ZDM0YTVjNzBhMjFhYWE3NjU2ZWNhNTU4MmU2MWJiIGxlZ2FjeS10cnVuaworNDYwMTUgZjgzODVkNmM4ZjVlZTE2MDQ1MWU3OWVmOTkzZWJlOTFiZTcwNWRlYyBsZWdhY3ktdHJ1bmsKKzQ2MDE2IDZjZjQ2NjI3NjNhMWEyOTNjNDY0NDZhZGJjNzAxMDg4YTIwMGFiOTkgbGVnYWN5LXRydW5rCis0NjAxNyAzNjU2M2IxM2NlNzkyYTcyYmIwZjgwYWUwZDUzYTcwY2ZmMzNmYTY5IGxlZ2FjeS10cnVuaworNDYwMTggZjkxMzUwNTAwODM0NmY0M2QxNmRjYWUyOTA5ZjJhOWNjMGU1ZDBiNiBsZWdhY3ktdHJ1bmsKKzQ2MDE5IGQ2ZWE3ZDQzZWJmYzBhYmM3NjAyNjQ1ZTRlMjhiYTI5Y2ZlYjEyMmEgbGVnYWN5LXRydW5rCis0NjAyMCBhYzUwNmUyZGYwNGQ1Mzk2YTQ5NjdlNGU3ODMwYTlmNTVmNGJjODg4IGxlZ2FjeS10cnVuaworNDYwMjEgMjA0ZWMzODNiNDQ1YWJmMzliZjc1MmRhZWQ0MGJiMjc4MDZkZWEyNCBsZWdhY3ktdHJ1bmsKKzQ2MDIyIDMwMTg4YzUyM2JjNTU4ZGFkMDc3YjM1ZGNkMjhiYzdhOTUxMjZhMjUgbGVnYWN5LXRydW5rCis0NjAyMyBhYWUyZmYzM2UyN2MzODU0MGRhYTc0ZTcxYjM5MmNkYzcwYWUxMTU4IGxlZ2FjeS10cnVuaworNDYwMjQgYWIxZGM3ZTIzYmZlNTEzOWU1NjQ1NzFlOTY2MGI3NjllYWFkZmQ1NiBsZWdhY3ktdHJ1bmsKKzQ2MDI1IDdjYWE2ZDMzYTRjNjc5OGQ0ODA2MzQxYTJhNzcwZWMxY2FmYWM0MzMgbGVnYWN5LXRydW5rCis0NjAyNiBiZmI3NmFlODJjOTEyMWJlMDgzYTMwYThiYmUyNTUwYjAyYWMwNWRiIGxlZ2FjeS10cnVuaworNDYwMjcgYzJlM2I1YzM2ZGU0NTJiZDBlNGU3NDcyYWRhMzA0MTdhNjA3ZjJmMSBsZWdhY3ktdHJ1bmsKKzQ2MDI4IGZhM2M0ZWE5OWQ5NWNhNmVkZWQxYTdmOGU1MzljNzk1Mzg2NzgzYjggbGVnYWN5LXRydW5rCis0NjAyOSAwYjQ3MzEwNDliNzFjZTg5MGJiYmVkMzM5YTc5NzZiYjkyZDNmMTQ3IGxlZ2FjeS10cnVuaworNDYwMzAgMDdhYmM2Mjg0ODk5ZGZhMWYwYTM1NDBmNDAyMGY2NGQzNGYxOTQxMiBsZWdhY3ktdHJ1bmsKKzQ2MDMyIGI3M2YyNGUyMWIwYWI2NGM1YmI5ZDhkOGYxNzhhYmFmYjA4YTBiYjMgbGVnYWN5LXRydW5rCis0NjAzMyBiMjg2ZWQ0NTQzOWQ2NjBiZTBjOTAwNzcwMmIyMzRjN2VkZDI5NWMwIGxlZ2FjeS10cnVuaworNDYwMzQgYjM1Y2RhNTVkNjBjNmExOTcwOTU3YThhYWI3OGY5Njg5YjQ2ZGIwZiBsZWdhY3ktdHJ1bmsKKzQ2MDM1IDczYzdhZDVlODdkZWJhNzlmODZkYzgwNGQxMzYxOTk2NmUxM2Q0YmUgbGVnYWN5LXRydW5rCis0NjAzNiA2ZmVhYTQyZWZmNjlmNGQ1MWYxMmViMmU3YjI4OTY5NmIwYWEwODgwIGxlZ2FjeS10cnVuaworNDYwMzcgNDJkNmJhYjg4MDc5ZmY2MGRlMjFiMTc3NjBiZmQ0MzhkZmY4ZmE1NyBsZWdhY3ktdHJ1bmsKKzQ2MDM4IDgxZTM4NWE2NDFlZjhiMDcwM2FlZWI4NWY3ZjlkNmY2MDJkNmY0NDUgbGVnYWN5LXRydW5rCis0NjAzOSA0Y2I5ZGMwZGMzZjllYmQxYjU4NmJmNjBlZDk5NWQyMjRhNzk3Y2JlIGxlZ2FjeS10cnVuaworNDYwNDAgYzY0Y2QyNzFhY2VhOWFmYzQ1NmQ1NzdhNWQxNGIwZDZhN2Y3MWE4MSBsZWdhY3ktdHJ1bmsKKzQ2MDQxIGMwN2E1YzIzMDRmM2ZjZjk2OTcwYzcxZGRhZmY1MGFkYmQzNzkwZDcgbGVnYWN5LXRydW5rCis0NjA0NCAyMTk1OTcyZjczOTFkNGVjNDE2YmM4Y2Q1YTY0MWU3YTE3ZGFhNWRmIGxlZ2FjeS10cnVuaworNDYwNDUgMjZmYjU2Mzg4MWM5M2Q5OGJiNWI0MGQ1ZDU2YjI4ZjE3Yzg2NWFjYSBsZWdhY3ktdHJ1bmsKKzQ2MDQ2IGNiZjJkNTYyZTMyMjkyOTEwNDBjYWEyMGFjODJjOTA5ZGE3ZTIxZmIgbGVnYWN5LXRydW5rCis0NjA0NyBjNDkwN2Q5OTBkYjVkNzBhOGUzZGI3NTg1MjIzZmVhZGE5YzNiMDQzIGxlZ2FjeS10cnVuaworNDYwNTAgMjg1MTE1NTRkZmYxZmY0ZWJkNTI5YTY0MDI5ODQ1M2FkYmNkY2VhZCBsZWdhY3ktdHJ1bmsKKzQ2MDUyIGIwYmE0ZTgyMjlmNzc1MTk2NDcxNGQ3NjVhYjQwNDBhZWEzYjJkMmYgbGVnYWN5LXRydW5rCis0NjA1NCBhY2NkZjExMjRiYTJlZGYzYmUyNjMyZGY3ODAxOWZiMWE4NDRhNzg4IGxlZ2FjeS10cnVuaworNDYwNTUgMTA5NDM3YzRjYWM0NzYwOTczODg4ODEyNTY1ZmVhYjExNTk3ZmU4NCBsZWdhY3ktdHJ1bmsKKzQ2MDU2IGY5NjEyMTc3ZDA4ZDFiYjMzMTk0Y2FhNjllY2Y2ZTE1ZGZlODI0YmUgcmVsZWFzZTI0LW1haW50Cis0NjA1NyBjYzA1NTZhZGMyYjBjYmYxMTdjNGM1ZDNkMGI0NTU2MjNhNTcyYmYzIGxlZ2FjeS10cnVuaworNDYwNTggMmQxODJmY2ZhYjZiOTgwNDBkZmFmMGYwYThiZWRkNmI0MzM2ZmRjZSBsZWdhY3ktdHJ1bmsKKzQ2MDU5IGI0YmRiZDdiMWY1ZWU3NjI3MjhjYThhMTBlMDM4MWNkZWY2YWRjMDMgbGVnYWN5LXRydW5rCis0NjA2MSBjYTFmMWMyMTg5ZTc0ZmFkMGRiYWI0NWQxNmQxOTgxMDE5NWJiNGM0IGxlZ2FjeS10cnVuaworNDYwNjIgYTY5ZWU1YmFkOWIyM2M2ZWI4NjllYjViNjQzYzFlZTYzMThkMjY3NyBsZWdhY3ktdHJ1bmsKKzQ2MDYzIGRhZTBlNGMzOTBlNzcyMTQ1YmZlZDViODg4NjJiNGU4YjQxODJiNmEgbGVnYWN5LXRydW5rCis0NjA2NCBhYTYyMDg1NmU4YTNmNzVjYTY3ZmZlOWQ5M2JkZGQwNTYxYjUxNmUzIGxlZ2FjeS10cnVuaworNDYwNjUgOTU5MTBiYzY1ZjZiOTkxZjQ3YzdlY2M4NjcyOWQ5ZDlhNzM0ZDY5YiBsZWdhY3ktdHJ1bmsKKzQ2MDY4IDEwNTVkNjI2ZWQ1OTRkNjM4ZjA0MzMxMjU3MWRhOWFjMWFkOTc1NTYgcmpvbmVzLWZ1bmNjYWxsCis0NjA2OSA4ODJiNjEyYTVmZTljYjdhMzVjNzhmZWYzNDEwNmRkMzE0YzUwNWI5IHJqb25lcy1mdW5jY2FsbAorNDYwNzAgMjdjODAwNTgxNzNlOGE3YWYxYTJjNmY4NDAwZDgzYjJhNDIxYmU3MSBsZWdhY3ktdHJ1bmsKKzQ2MDcxIGZiNGYwZmQ3ZWJhNGViZTM1NzU4ZmRkZWIyNWU0MzA3YmMxZThmODIgbGVnYWN5LXRydW5rCis0NjA3MiA1MTI0MWNjOTU4ODNlZGVkNWM4ZDc1ZDNkODk5Y2E0YzQyNzIxMjA3IHNyZWlmc2NobmVpZGVyLTY0aW50cworNDYwNzMgN2UxNmZjY2UzNGExMzUzOTUxYTk1YzZlYjI0N2I2Y2M2MTRjZTA2MSBsZWdhY3ktdHJ1bmsKKzQ2MDc1IGQ3MTBjMmRiYTNlODgwYzkyMGNmZTg5ZDAxZjkwMTM1ODhjOWMzMDkgbGVnYWN5LXRydW5rCis0NjA3NiBmZWIwMGRmOTE5MjIwNmM0NDRjNDJjYjI5NDVjNjVhOGY4NzdlMjc4IGxlZ2FjeS10cnVuaworNDYwNzcgY2NlZDgzYTkxNTc3OGFmN2QyMGEzMmExNTg3ZjIwMzFlODg0NjBiYiByam9uZXMtZnVuY2NhbGwKKzQ2MDc5IDYwNGFmODY3YzY1ZmI4MTI1MjQ4M2VmNWRhZTRhZDI0YWE0OGFjZWEgbGVnYWN5LXRydW5rCis0NjA4MCBjZDM0YTA4ODMwNTM2ZTNiMTQ0N2ExNTM5ZjllZDMwYTU5OTNkMWEyIHJqb25lcy1mdW5jY2FsbAorNDYwODEgZWM1NGM2ZGY5MDQwMmJmZWYxYmE2MTAxOTU1MzY5ODBlMmYzMmVhMyByam9uZXMtZnVuY2NhbGwKKzQ2MDgyIDAyYTBjNjkyOGM1MGE3YzFjNjkyMWI5ZDBlZDI5YTRmNGJhMjhhNWIgc3RldmUtbm90cmFjaW5nCis0NjA4NCAwMzczYTA3NDAwNGMyZWE5YTU0OWYyZWVmMWFhNjJkODUwZDUxN2M2IGxlZ2FjeS10cnVuaworNDYwODUgNWVhZjhiOTU4N2Q4Njk5NDFjNDhhYmQxMTRkNzAzMmZhNmJiNjA1NSBsZWdhY3ktdHJ1bmsKKzQ2MDg2IDg3MjA0MmEzYjEzNDNjOWE1MjJjZGUyZjhlODViZjhlMTZlZDUzMzcgcmpvbmVzLWZ1bmNjYWxsCis0NjA4OCBmYjgxNmRmY2QwMzE1NDMwZTJiZmZlNzQ1MDNiMGJiODAwMmMxZjJlIHJqb25lcy1mdW5jY2FsbAorNDYwODkgNGNlYWJiNTQxNGQ1ZjJhMjQzM2YyYTM4NzY0OWFjNjkzZjU0ZmQyZSByam9uZXMtZnVuY2NhbGwKKzQ2MDkwIDlhMjhiZmE2Zjc4N2M0NjM3M2E4Y2JiYjAwZWU3NDI5NTFiNjg0NDEgYmxhaXMtYnl0ZWJ1ZgorNDYwOTMgMDA0NTZmY2EzN2M0MjQ0Y2RlZGRiMjFiODQ1NTNiZjNlN2U3MmVlMyByam9uZXMtZnVuY2NhbGwKKzQ2MDk0IDBkZTlhNzg5ZGUzOTA0ZTVjNjk4YTA5YWRjYWQ2YjFlMmVhZTdjZjkgbGVnYWN5LXRydW5rCis0NjA5NSAwYmE3MTFhNDk2ZTZiMDAxOWQwMzQ0NDdkMmZkOWFlNGQ5ZDI2ZmEwIGxlZ2FjeS10cnVuaworNDYwOTYgYTYzN2M3OGJmMTE5NWVmYzdiNWY0YTk0N2JmMWUwZmIxODk0NDBhMiBsZWdhY3ktdHJ1bmsKKzQ2MDk4IDZhNmM1NDkyYjlhZDJlYWQ5YWVhOGUzMDIzNzc3N2FjZjQ1ODcwNDUgbGVnYWN5LXRydW5rCis0NjEwMSBlZTIxMzk5MzVhMWQzYWY1MmQ1MDA5Yjc0NzE5Mjg2NDAyMjE2ZmMyIGxlZ2FjeS10cnVuaworNDYxMDMgNWI1ODcxOTBmNGM2ODU3N2EzMjUyOTYzYzg1NzZjNGY0M2Y4YzE2NCBsZWdhY3ktdHJ1bmsKKzQ2MTA0IDMwNzhmZGI3Y2YzZGY1NWM3M2Y0M2FmYjUzMjc5NTI3YTk5MTE2ZmQgbGVnYWN5LXRydW5rCis0NjEwOCBiN2FhZjIxYzQ3NTY0MDNmMDE4MjhhNzliZmNiMjZiNzJmYTNhYjk0IGxlZ2FjeS10cnVuaworNDYxMDkgNzZiZWRmOWVkMjJmZjI0ZTNkNTQzN2M2NGJmNTBiMGU5NzYwMGRmOCBsZWdhY3ktdHJ1bmsKKzQ2MTEwIGNhMzQ1MjFiYjEzYzM4MzdkNjUxZmNhOTBjMWRmMGM0YmNlMjkyMjIgbGVnYWN5LXRydW5rCis0NjExMyA3NWJkZDQ0Zjg1ZGNkNGFkYTg2Y2ViMDllMmY3MmM0NDc3Y2YwZWRiIGxlZ2FjeS10cnVuaworNDYxMTUgOWE5MDc1M2Y2YmZiYjIxYTlkN2JmMjEzZWM5N2I1ZjE3NDQ0NzEyNSAuLi9iaXBwb2xpdG8tbmV3c3RydWN0Cis0NjExNyA2NjdhMmNhZTc5ZTYyNjk2NTE2YjkxMjAzMTZmMGYzZmI5NmQ0Yzc2IC4uL2JpcHBvbGl0by1uZXdzdHJ1Y3QKKzQ2MTE4IDU4MzE3ZGY0ZDMwYmJjYjQyZGFiMDM3Mjg5NTU4NjViNDRkNDhlYTMgYmxhaXMtYnl0ZWJ1ZgorNDYxMjMgNGIwZmY3ODhlOWZkYWUwYTdkYmI2ZWRjZDUyNTUyODdmZDRmMzI1YyBydW5hci1sb25nc2xpY2UtYnJhbmNoCis0NjEyNSAwZjBmMDQ2YTI5ZmJhNDhkYzdmN2U4M2FhMzhiNGNjZTlkYTg4OWFhIHJqb25lcy1mdW5jY2FsbAorNDYxMjYgZmY1MGFlMTNkYjllNjhkZmY2MGI1M2Q4NTJhMTcxOTM0MDVkYTdmZCByam9uZXMtZnVuY2NhbGwKKzQ2MTI3IGVhYWU2OTkwZTJkMThkMmE4ZGI0N2Q2NmFiMDliNjE5N2U0OTc4YTUgcmpvbmVzLWZ1bmNjYWxsCis0NjEyOCA0YmQyOTlkMDBlNGM2ZjE3M2NiZmYzNWRlZjkzODBmNDkzOTRlOWU4IGxlZ2FjeS10cnVuaworNDYxMjkgYmY1ZmI2ZTc1MjdjMmZmZTg1MWE5OWQ1MjBkY2ViZjM1NzFhYmM4OCBsZWdhY3ktdHJ1bmsKKzQ2MTMwIDQ5NWEzNGU1NGQ2MGE1Mjc4NTJkODcwNGE0NGFmYWQzOTIwZmJhZjMgbGVnYWN5LXRydW5rCis0NjEzMSA5ZWZjY2Y1NmQ0ZTcxZjRkNDczZWYwMmI0ODNiZGYxZDNmNDVkOWJlIGxlZ2FjeS10cnVuaworNDYxMzIgYWY0NmM3ZWQwNWViNzkxYjFlNDM2NWI3ODA4MjQyZWJmYmUyNjg0NCBsZWdhY3ktdHJ1bmsKKzQ2MTMzIDlmZGQ0MzQyMTZlZjgyZWRiMmVmN2E1ZmE3YzI2N2Y4Y2YxZWJkYzIgbGVnYWN5LXRydW5rCis0NjEzNCA4OTVkYTQyNDgwZjFjMzU3MzcwOGFjMTI4OGRkZjQ2ZjhjMWU0NTljIGxlZ2FjeS10cnVuaworNDYxMzYgYzFjZTBiODMxNjM2NzAzZDEzZDgxMDdlZTZkNDA1MzFjMGU0ZmFjYyBsZWdhY3ktdHJ1bmsKKzQ2MTQxIDI3ODgyYThlNDNhOWU4OWIxMDMzYjIyYTM3MzE3YTA0YWVlOWU5OGQgbGVnYWN5LXRydW5rCis0NjE0MiA2Yjc5ZmZmYmJlMWYwNDMzZDFiZDVhYzE1MGU4NGU2NDU5MzU1YmEyIGxlZ2FjeS10cnVuaworNDYxNDQgZWZiN2U4NzI0ZWVmYTZjZTc2MDQ3YWE5NWFmNDRkY2NmMWZkMTVmNSBsZWdhY3ktdHJ1bmsKKzQ2MTQ4IDMzNjMxYjZiMDgwMTQ3NTk2ZTYyMDVmNTNlYjlhOTlhNjg0MWE4NmIgbGVnYWN5LXRydW5rCis0NjE0OSA3ZDgyY2RlZDhhYjE1MmViMTk1NDhmZjk5OTg5Mzc2NjE4NTA2NDNlIGxlZ2FjeS10cnVuaworNDYxNTAgNzRjODJlYmM0ZTQ0OTkxY2I1YTVhZDcwZWE5NDc1ZjM1M2Y0NWY0ZCBsZWdhY3ktdHJ1bmsKKzQ2MTUxIGNmNWE5MDU3ZWQzYTkyMDRlYjg3NTZkYjljNDRkMjM1YmE3MGFmMzkgbGVnYWN5LXRydW5rCis0NjE1MiBlMDdkYzEzNDhkYWQ5ZDRjNDQ3ZjJmMjIwMWVkNGM5N2Y1MjdkMmZhIGxlZ2FjeS10cnVuaworNDYxNTMgYjhiZWY1YTA3ZGY2Y2NmYjUyMTJkZTdmYjdjMTEyN2ZlYzA5MDllOCBsZWdhY3ktdHJ1bmsKKzQ2MTU1IDFkYzU2NTdmMTc0NTNjNzBhNzhiZTZjYTc2ZTI2M2YzNGRjZDg1NWMgbGVnYWN5LXRydW5rCis0NjE1NiAzMTRkNjY2YzdhZGJkMWQ3ZWMyNDk4YjMxNjBmZDA3ODYxOGM5Mzg5IGxlZ2FjeS10cnVuaworNDYxNTcgZGU5ZjFhMTQwNjExOTM3MmRmOWVmMjNhNDIzZDhiNjJhMDg2OTVlNyBsZWdhY3ktdHJ1bmsKKzQ2MTU4IDlhZTY5YmNhYjlmNzIyMTdiYmMxNGVhOWY5ZTUzODM4MWYzNzYxMDkgbGVnYWN5LXRydW5rCis0NjE1OSAwNjkxZjNmYjM5Y2FhMWQwZDlhNDhkNGVlZTRlYTg3YzE1YzY4MTc4IGJsYWlzLWJ5dGVidWYKKzQ2MTYxIDJkNTVlOTc5MDAzNThiYjdiNDUzM2RkMDk2Nzc1ZDc2Yzk3ZjZlZDQgbGVnYWN5LXRydW5rCis0NjE2MiAzNTdiNTQwM2U4MWFkM2M5ZjYzNzIzMzc2OWU5Y2E3YTRmNjFhZGZhIGJsYWlzLWJ5dGVidWYKKzQ2MTY0IDA0MmVkNmY4MDg0N2NjMDRiYjNhNDAxMDMzYTM3ZmZjMzlkM2RhOWQgYmxhaXMtYnl0ZWJ1ZgorNDYxNjUgYTU4OWI3NDQxNWMwMjJmNmUxNmU3MDE0ZGM2ZjYzYTVhNTQyMDgxMyBibGFpcy1ieXRlYnVmCis0NjE3MCA4OWIyY2E1MTIzMDcyM2UyYThlYTMwZDE2NDQyYWUwYTAyYzEzNjkwIHJqb25lcy1wcmVhbGxvYworNDYxNzEgMGE5NTRmNGUzZTM2YTJhY2M5NzY3YmQwZmQyMTEwOTQzZWMxMDU0NCByam9uZXMtcHJlYWxsb2MKKzQ2MTczIDQzYjE0NzRiNTEyYmJiNGNmMDA4ZmFkYjhmYzNmYTE5OWNkM2NlNGEgbGVnYWN5LXRydW5rCis0NjE3NSA2ZGEzMWM0OWViMGE2ODYzNjFlMWE1NjVjYjg4OGYzNzQ1YmE2YzBkIHJqb25lcy1wcmVhbGxvYworNDYxNzYgMjI5OTVjMTA5ZWZkNjdlNWMwNjZlY2E2OWNmM2NhMGQ0ODRmM2FkMSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MTc3IDhhZDllMTQ0ODlmZmYxZjFiNTU4ZTFiOGM0NDZhYzg5ZjQ1Y2NkMmYgYmxhaXMtYnl0ZWJ1ZgorNDYxODIgYjViMjU2OTY2ZmU5MmI0MTViNzRiNzAzM2Q4ODg1NGIwZmJmNDYzMiBsZWdhY3ktdHJ1bmsKKzQ2MTg0IGI4MjVlNjIyNzM2NjZlNmQyYjExMzhkNTk4MmUwOWY3ODM5ZTAzMzcgbGVnYWN5LXRydW5rCis0NjE4NiBjMjZiOWZkYjY1ZmIzYjU3NmI2MzVkNTMxN2IyZjlhNDE1NzM4NmEzIGJsYWlzLWJ5dGVidWYKKzQ2MTg5IDI2MGQ1YTZjZTMwZjRlMjU2OWFiODAxN2MzNjg3NzU3MTJkMWZhYmUgbGVnYWN5LXRydW5rCis0NjE5MCBmZWY0OTZhZDdmNmNkMmJkYzFmMjVkN2FjMDViNDc5OTliZmQzZTdlIGJsYWlzLWJ5dGVidWYKKzQ2MTkyIDUxZDZlMjcxODI0MzY4ZWVlYWYyYmJjNjg0NzczOTNjY2ZmMGU0MDggYmxhaXMtYnl0ZWJ1ZgorNDYxOTMgYWFjZTMxNDhmN2ViYWYwMjI5MjZkM2QyNzg3OGVhYzFjNmEwOTI0NSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MTk0IDNjZmFlM2EwZTY5NTkxMDcxZDE3NGIxNGMyYmFhMjczMTg5ZjM1MGMgYmxhaXMtYnl0ZWJ1ZgorNDYxOTUgZjdhNzc0MmFlZjgzYjg1NDIzMDc0ZWJlMTllZTBjYmQxMTFhMWJhNSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MTk3IDU4ZDIwZmViNmUwMzliYmE2ZjE2MTg5MzdmOGUzODBlMGVhNzk2NDggc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5OCA2ODYwYzM2ZjdkYjc1MTRmNWNhZDliZTM1NWI4MjhlZDg2NzI4ODM2IGxlZ2FjeS10cnVuaworNDYxOTkgOTFmZTFiMGFkYmYyNjE0ZjllYjBiYTk3NGY2ODFiNDIyMTUzZDdiZiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjAwIDMyYmEzYTBjNjA0MDkzODNkOGRkMzM0ODZiMTllZjcxNjFjMGUwNjQgbGVnYWN5LXRydW5rCis0NjIwMSBiMjQ5MWZkMGE0ZGM2YzY3ZGI0YjI5YWE1YWQ5YWYyMzE0MmI4OWI5IGxlZ2FjeS10cnVuaworNDYyMDIgMWM1ZWU5NjMxYzZiOGI4OTY2YmU4NTc5ZGUxNTllNjViMDliMjM2NSBsZWdhY3ktdHJ1bmsKKzQ2MjAzIDg4Y2M3ZTRmMDFmZjRkMGY1N2YzYzJhMGFkMTk4YTk2ZDdjZTYzZGIgbGVnYWN5LXRydW5rCis0NjIwNCBiY2VhNzRiMzVkMWZlZGUwZjc5MTdjMTQzYTNjYmRhNTUxZGNhYzFlIGxlZ2FjeS10cnVuaworNDYyMDUgNjYzMjJmY2E5MWI0MWJiYmMzMjQzZWMwZWIzYjM3YzEwOWYyYWRhMyBsZWdhY3ktdHJ1bmsKKzQ2MjA2IDA0M2UyOWExZTM5ODVlY2NiMDEwMWZhNjUzZGU2ZDdiYWNiMTRhZGYgcmVsZWFzZTI0LW1haW50Cis0NjIwNyA0NTc4ODEyOGExYjE1NDQ5ZWE2YjJmY2FiZDg0YjA4NzdjMTJjZTEwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyMDggNjk4MTk4Y2FiYmM1YWI3Nzc1MWI1OTA5YzEzOWZkMjhkZjk0NmJmZiBsZWdhY3ktdHJ1bmsKKzQ2MjA5IDhjNTE0NmM1MWUyZGYwMGU4ZDI3OGQxMGYwYjRjZmQ5ODhjNGMwYmMgbGVnYWN5LXRydW5rCis0NjIxMCA3NWUxY2QyMmI1NmJkZGM0YWYwZTgwMDNmODQyYTBhYzQyY2ZjMDIwIGxlZ2FjeS10cnVuaworNDYyMTEgM2RlNzA2NGRmYTU2NDE0YWM0NWM5ODA4YzUzNTA0NWZhZmJjMjZjZSBsZWdhY3ktdHJ1bmsKKzQ2MjEyIDliYjRjMTllNTYxMzRjNjg5MWI5MGU4YWQ0OGFiN2UwOTQ1NjliOTQgYmxhaXMtYnl0ZWJ1ZgorNDYyMTQgYWQxZTI0MzhjZmFhNWJmNDVlNDhjOTk0OTZlOGViMDQ0NjU5NDU3NyBsZWdhY3ktdHJ1bmsKKzQ2MjE1IDdiM2Q0YTgxZTk0ZGU1YWFhYWM1NmRkODNjNzRlYTI3NWZiYjUwMzMgYmxhaXMtYnl0ZWJ1ZgorNDYyMTYgZTE1YjE0YzdmYTE0ZDVjNDQwMDUyYWYxMTA1Y2IxOTE4MWFlZTljZiBsZWdhY3ktdHJ1bmsKKzQ2MjE3IDY4OGYyNTc1NzEwNDMzMTNmYTEwYWY4MDhjYjFlYmUwOGRmY2QxOWUgbGVnYWN5LXRydW5rCis0NjIxOSA0MTc2OGRlMTdlYWQ5MDkyYzQ1NGFkZjk5MTBmOWQ4ZGJiODUyYWM3IGxlZ2FjeS10cnVuaworNDYyMjAgNGMwYzNlY2ZmY2FjMmIzMjE4NDNiMTk3ODk0ZjMwMTMzMjNmZjIyZiBsZWdhY3ktdHJ1bmsKKzQ2MjIxIGJhNzEzZDMxZDAwYzY2OTkyMWIzNzMzY2Y0YzllZDA1MTEyMDhhYWEgbGVnYWN5LXRydW5rCis0NjIyMiAyOWNjZDc3MTA0MTNmZWZkOWVhNjkwODIwYWJiNGViMDQwM2IzMmVhIGxlZ2FjeS10cnVuaworNDYyMjMgOTg2YmVlMTZiYjQ0NTFjYjFkODIzNWFiN2ViNWVjNzhlMzUwYjcwNyBsZWdhY3ktdHJ1bmsKKzQ2MjI0IGFlNmJiZjJmMmE0MTJiNmM0MWQxNTQ0YzIwZTQyNDM3M2VkN2Q0OTUgbGVnYWN5LXRydW5rCis0NjIyNiA0MTgwOTQwNmEzNWViYTA0ZjkzYWZiNGY0NTRhY2MwNWVjOTg0MTBhIGxlZ2FjeS10cnVuaworNDYyMjcgZGNjYmNiYmQ2NzIwOGEwNzgyMzBlY2M4YTgwM2E4ZDk0OTA2MTFlYSBsZWdhY3ktdHJ1bmsKKzQ2MjI5IDljMDhhN2JkYmMzMTBhNzc0NjA4NDU5OWY2ZGNjNThlY2UzYWMwZmQgbGVnYWN5LXRydW5rCis0NjIzMCAxN2VhYThiNTdlMDUyZjUxNDY1Y2IzMzFmYWJmYzNjNWEzMzdlNzFjIGxlZ2FjeS10cnVuaworNDYyMzEgMDU0OTZkZWViYTY0YmU3MDQwMTBiYzYxZjNjOGU1ZGUyZmQwYjVhZSBsZWdhY3ktdHJ1bmsKKzQ2MjMyIDZmYzFkYzA4NjQ1OTQwMjU5N2Y3ODMwMWI5OTRkMGQ5ZjVhYjcxNDEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjIzMyAzZTZkNzc1NTJiZTMwMmJlYWMyNTYyZDRkNTI3OTcxMmUwNGQ2OGY1IGxlZ2FjeS10cnVuaworNDYyMzQgYzVkNjE5NjVjYWQ0MjE5YThmN2EwMmNlM2FiMmUzY2FjZjdkODdlYSBsZWdhY3ktdHJ1bmsKKzQ2MjM1IDVhNjMzNjkwNTZhN2ZlNWZjM2MwYjVmZjBkZTEwODdiMTk2NTA3MTggbGVnYWN5LXRydW5rCis0NjIzNiBmMjc5ZDAzMWYwY2VhM2NmOGJjNGYxMDE4YWQ5ZmE5ZDI1ZThkODY2IGJsYWlzLWJ5dGVidWYKKzQ2MjM4IDc0YmViMTg5ZmQ3ZWU0ODRjZmMyZDIzMzhhZWEyNDhhYmRiZjVlYjYgbGVnYWN5LXRydW5rCis0NjIzOSAyYWE5NDA5MzUxZDYxZjkzMTdjZTExZGE3NzUyZTA5NjVkNzJkYjNiIGxlZ2FjeS10cnVuaworNDYyNDAgODUwZDRmNzcxN2I4ZGVhMGY5YmRmNTkwMGU1MDIzYzE1MGFkNmNhMiBsZWdhY3ktdHJ1bmsKKzQ2MjQxIGM5ZGMzMDBlZWU2ODJhY2UwNWY3N2I0ODhkOTAzNTM2NDZlZGZmZjAgbGVnYWN5LXRydW5rCis0NjI0MiAwNTMyNGFhNDQ0YmRlMWMwYjZmMGQyOTk0YmEzZmY1MTg1NTE4ZjgyIGxlZ2FjeS10cnVuaworNDYyNDMgNGE4YzlmOWI2NmU2OGVjOTcwNWMyM2RiYTVhZWMwYTQ5ZmJkNzBkYSBsZWdhY3ktdHJ1bmsKKzQ2MjQ0IDFmZGYyOWE4OGYwZWUwYjEzYjI4OTIxYTVmYmZiMTc1MWI1ZjBjZjMgbGVnYWN5LXRydW5rCis0NjI0NSA5MWM2Yzk0NDkwYjFjNTY0NGRhYjY4Zjg5ZTRjNDFjZTQzMzhlNTY3IGxlZ2FjeS10cnVuaworNDYyNDYgMmYxNmUyNzE1MjIzNWI3ZmYzY2I4N2IxNTExMzU1Zjc4NTdjNWEyNyBsZWdhY3ktdHJ1bmsKKzQ2MjQ3IGVjZjJiZjQxODJhZGY0OTMzZjEyZDA2NGM4NTFiODZmNWE5NzAxMGQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI0OCA2OGEzNDhjOTg2OGRiOGIzNTg2MTViYjQwNDcxYmFjYTI1YTUwMjFjIGxlZ2FjeS10cnVuaworNDYyNDkgYzAwNmMyNzIxMTZmZmFhNmE4MzI3YTM5YzRhMDNmZGI0YTgyOGMwNSBsZWdhY3ktdHJ1bmsKKzQ2MjUxIGMzNTA4YTk0MTU2ODM2NTk2YTAzZThhOTA5MzI2NGNjMWRjZDg4YmMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI1MiBlMTZiNDE1NzY4NmNiOWE0ODg4NTJkNDQ4MGYyMjc1MjYxNGYwOTNiIGxlZ2FjeS10cnVuaworNDYyNTMgM2Q0NzdkMTU4NDAxYzcxYjEzODQzZDcwN2ZmYTZkYmRjMWZmNzc3OSBsZWdhY3ktdHJ1bmsKKzQ2MjU0IGVhMGFkNGQ0ZmY4ZWRmMGFjYjk4NTE5ZTJmZTVkMzBlMTVkZTJlOGEgbGVnYWN5LXRydW5rCis0NjI1NSBjNzdkYTI3MzZmYjI2NWQ2YTQ0NTdhYjBjMmNlODg1MzY4NzQxNzY0IGxlZ2FjeS10cnVuaworNDYyNTYgMzU4N2VlMzEzYjAwNjEwMmFlNjEwYTU5N2U4NGU0ZTc4Mjk2YTBjNSBsZWdhY3ktdHJ1bmsKKzQ2MjU3IDA0ZjM5ZWNiYzczYzc2YTU1YWU4Y2MxZWY1YjUzZGY1YjdlZmQwYzMgbGVnYWN5LXRydW5rCis0NjI1OCBkMzNkOGE4YjU0NWVlZWIxNTBkMWI0YzU3OGM4MGU5MzJmNDRmYjQ3IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNTkgOGE1OGFhNDBkY2MwNWQ1ODA0MWE2YjRiZTZmMzhkMTY0MWIzMGUyZiBsZWdhY3ktdHJ1bmsKKzQ2MjYwIDU1NjYyMGNkN2IxZGUzYzExODY1MTUyZDc1OWRiMDBjZWE1NDUzZDAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI2MSA5Zjg4NGQzNGEwZWNkNGI5OWU3MjI4ZDU5OGY1YjI5NTdkYTg0Njk5IGxlZ2FjeS10cnVuaworNDYyNjIgZTllYjUyNmI3MTExNTgwZDE4M2Q4ZGZkN2ZjZWQ4YjJiZTU2ZmFkYiBsZWdhY3ktdHJ1bmsKKzQ2MjYzIGNlZWJlNmNjNDU3MDRjOGMxOGJmYWE0ZDdhMWQ5OGEzODVkZTQ5NzUgbGVnYWN5LXRydW5rCis0NjI2NCBhYjAyMjE4MTE3NzE3YmI2MWIwYTc2YzRjNWI4NjYxYmEwNTMzMmI1IGxlZ2FjeS10cnVuaworNDYyNjUgMDg3Mjg3MDA5NjU4ZWVjNzA5OTU3MmFmNWI3ZTIzZGY3ZDlkYmRhOCBsZWdhY3ktdHJ1bmsKKzQ2MjY2IDdhNmFmNGExNDNjNjJiYzVmNmU0ZmY4OTBjOTk3MjJlNWUwMDM0NjQgbGVnYWN5LXRydW5rCis0NjI2NyA4YTljZDk5OTUzNWQxNzk3NDYwY2U2YzA1NjBmOGI4Y2M3YTI0M2EyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNjggZWIyMzdhMzdlYTAyZGViMzMwZTJmZTVlMWY0MzcyOTcyYjA4OTA3NiBsZWdhY3ktdHJ1bmsKKzQ2MjY5IGRkYzIwMGFmZGUxYTgzMWIxYzJiZGE3M2Y2YTEzNmE1MjQ3M2U5MWEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI3MCBkNmQ1NTNiOWQ0Njk3N2ZiZGNjZWQwMWFlMjEwNDNlNTFkZjA3Yzc1IGJsYWlzLWJ5dGVidWYKKzQ2MjcxIDQ2ZDc3YmIzMmZiMGRhOGI0MWE2NWMxYjI1MDFiNGZhMTFjZTE5YmMgbGVnYWN5LXRydW5rCis0NjI3MiA1YTE0NzM2NTUyN2U1Mzg0NWEwZjdhYzFhM2NmNmVlNjk4MDkwYmFiIGxlZ2FjeS10cnVuaworNDYyNzMgZjkzMzJhZDQyODdhN2Y2ZDg2MjRkOTA4N2NiMDIxOTAxZDQ3MzVhYyBsZWdhY3ktdHJ1bmsKKzQ2Mjc0IDgyYjY4MDg0NmRmODg5N2ZmNzI4YmNlN2Q2ZTY1ZDgwM2Q0OWIzODMgbGVnYWN5LXRydW5rCis0NjI3NSA4MWI2NDFkYTVjNzk1MmE3ZTA0MDVmODNiOTZlOWFmMDFhMWU0MDc0IHJlbGVhc2UyNC1tYWludAorNDYyNzYgMTAzNWEyYjMxZTZkZjI2MTZjOWE0MjA4ZWViMWFhOTRlMGZhZGY2ZCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mjc4IDk1OGY5MTY4NDIwOWQwMGMzM2Q3ZmVmYTY4Y2U0NmU5ZDAzYTljZWYgbGVnYWN5LXRydW5rCis0NjI4MCAxNjcwZmY3MjZlOGZkN2Q3NDc4Mjg2MTVmMTAwOWEyNzQ1MjVjNDc1IGxlZ2FjeS10cnVuaworNDYyODEgMzA5MWE3NWViNTYwYzU2ZGU3N2Y4NjlmZmY3ZmYxODE5MTY5NzAyYiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjgzIGRkNDE3MzFkZWU2ZDRiZDJjOGQwNWFiNTRlNDQ0NTE0OGQyNTJhYzUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI4NCAyZjRmYjY0MTRlODcyMDhhYmMxODMxZDM1YTY1NmIwMmI1NzE3OGU1IGJsYWlzLWJ5dGVidWYKKzQ2Mjg1IDhhOTljZGVmMGM5NGFjYjU4MWY1M2ViMjVjYzIxZjE0Yjk2ZjU5YjggbGVnYWN5LXRydW5rCis0NjI4NiBhNjU0ZDYxZDM2ZDUzMTk2NzFiMTBiMGIxZTUyMTg5MWIxNzljZTc0IGxlZ2FjeS10cnVuaworNDYyODcgNTM4MmFhZjNhMGRhYzVmY2YyZTU4OWQxZjQxZmZmMGIyOTkzNmU2ZSBsZWdhY3ktdHJ1bmsKKzQ2Mjg4IGM4ZTRiM2IzOTc3NDMwNWZhYzhhN2E1MTM5Nzc2ZDk3ZDlhM2Q1ZmYgbGVnYWN5LXRydW5rCis0NjI4OSA4MzVlYTU5OGE0MDYwYmE4MWI5ODhkYzE2MzNkZTk5ZGMyOTI2MjBmIGJsYWlzLWJ5dGVidWYKKzQ2MjkwIDY2MTBkNGJlOGZiZDkwMjUwNTQwM2Q5MmMwYmZjMzYwMDc5MzYwM2UgbGVnYWN5LXRydW5rCis0NjI5MSBmZTY1M2UyMjQ4OGM5YTBiMDgzMzFkMDU0YjhmMGU5NjEwYTRiMDYxIGxlZ2FjeS10cnVuaworNDYyOTIgOTJiMGZjNTRkMjMwMGQwNThkMDJiZTcwNGUyYjcwMmZlOWU3MTQ4MiBsZWdhY3ktdHJ1bmsKKzQ2MjkzIDZkODYxNWY5ZjFjY2E5NzgzODViNzk2MzhiYzgxMjM0NWJmYzIyNzYgbGVnYWN5LXRydW5rCis0NjI5NCA4ZDI4ZTYzZThmMjE2NjQ4M2YwMDJlNWRmNjQ5NmE4NWIxY2U5NmZiIGxlZ2FjeS10cnVuaworNDYyOTUgYWQyZTRkZTQ3ZDA5NjM2NWRhZWQ3ZTE0Y2ZiZWU0ZTE3YzA4OWM4MyBsZWdhY3ktdHJ1bmsKKzQ2Mjk2IDJmNDVhZDY2Y2QzNjUwNThiMDBkZmQyMWY2NmQ2NDAwYjc0OGU5NDIgYmxhaXMtYnl0ZWJ1ZgorNDYyOTcgM2JlZjI0MDg2YWNlNTFkYTMyYTIxZTY1NWZhZTU1MjVlZmRkZjc3ZiBsZWdhY3ktdHJ1bmsKKzQ2Mjk4IGI3Yjc2MTVlYTVmNWYyMDczZjRmYzEyZjgyMTBmNmUwZTczZDRjZWUgbGVnYWN5LXRydW5rCis0NjI5OSA5ZjdiMWI3YWRmMDEwZTJmYmZkYzU3OGY4MTIwODcxMTQxZDA0ZjM3IGxlZ2FjeS10cnVuaworNDYzMDAgMzZjZDRhNGFiOGY3ZThmNzJiYTgwMjBjYjU3ZDBhODI1YThhMTg1NyBsZWdhY3ktdHJ1bmsKKzQ2MzAxIGMwN2E5NmY2OTgzOTYyYjRiMmE1MTg1ZjFiMjRhOGZkZmUwOTk0NmUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMwMiA5NTc3MjdmMmZmMDlmMzkzNzM3MjcxNzVkOTJlMzE4ZDM4OGNlNGM0IGxlZ2FjeS10cnVuaworNDYzMDMgOTg4Mzc5MDE0NDc3MzA4MmIwYzVmMTVmMTk4NzVhMGQzM2Y1MmI1NyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzA0IDM3OGJhNjc3YjU3OTcwNzZmZDM0ODUwZGQyNzJkY2E1NWI5MjkyNDAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMwNSA3OGM2MGU1OTlhZmRiN2JhZGY2MWE0ODQzYThjODFlNTY1ZTBiNzIwIGxlZ2FjeS10cnVuaworNDYzMDYgMzFiOWM3OGEwN2YzNjlmZDFkYzEwZWU3Njg4MmFiYTAyYWUxY2EzMiBiaXBwb2xpdG8tbmV3c3RydWN0Cis0NjMwNyAwNWJiYmRkZmNlM2Y3YTI3YjI1MTUzOWRlZGQ3YTk3ZGM2NDdjMzlmIGxlZ2FjeS10cnVuaworNDYzMDggYmU3NDE1YjBhMzE4NTFhM2M5M2JiYmNmMDRiYmFiNjEyMDE1YTJjNyBsZWdhY3ktdHJ1bmsKKzQ2MzA5IGUzZWUzZWIxODY3OGRjNmU4MzdmM2JlZTZiNThkZmJlMGJjODY1NWMgbGVnYWN5LXRydW5rCis0NjMxMCBkMmRmNGEzNTllMzUyYWY3N2MwZTM4MzE3NWZmNWJkOWQ2N2FjYzQyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTEgYTRlZTQ1OWZmMjg4YTQyZTg5MmVkZDgwYTkzNTQzZjYwOTg1MTlkZSBibGFpcy1ieXRlYnVmCis0NjMxMyA4OGU5ZDg2NzcwMDY2ZWNkMGZiYjFjYTkzZjBiMDE5Mjk2YTFiNjJmIGxlZ2FjeS10cnVuaworNDYzMTQgNDU0YmRlN2U0MTZlNDliYTdiYjBlOTdiYjdkY2MwYjMyYjczYWEyZCBsZWdhY3ktdHJ1bmsKKzQ2MzE1IDg5MGY2MTYxYzk4YTVhOTE1N2YwODQzMTViYTIwMGJhMjk5MjQ4NDUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxNiA2NTMzZDhhZTFmZDk1MTJlZjE3Yjk0ZWE4OTAxYjYwM2RjMzhhOTJhIGxlZ2FjeS10cnVuaworNDYzMTcgYTA0M2M1ZDcxZWFhMThiMzZhZmVhNTBjNzc3YWY4YWU2NTNmMmQ0YiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzE4IDc2YjMwMWFjNGE1ZTYzNDE4NmY4NGRlZmZkNGVlMWY0YjgxMjU0MDMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxOSA4YTM4ZGE4ZTEyOGY3ZGJjNjQwODkzZTU0NDJjOTNkMzAxZWQ0NjcwIHJlbGVhc2UyNC1tYWludAorNDYzMjAgNTIxM2I2MDY1MTk3OTZlOTAwZTU1YjcyODFmNmNjODQzOTM0N2JhYyBsZWdhY3ktdHJ1bmsKKzQ2MzI1IDFhMTEzMDUwNjkwYjc0MWYzMjc2YzcxZGU5MDRlMWVjNmEyYjk5NmEgbGVnYWN5LXRydW5rCis0NjMyNyBjMDA4MjcwNWYyZjIzNDNhMjQ5Mjk5YjRlNDEwMGFkZjVhZmUyNzY4IGxlZ2FjeS10cnVuaworNDYzMjggZjc0M2UzYzZiOWJmMTZhODY3NzBhZWVkYjUwYTEwZDE0NzQ4NjUwNiBsZWdhY3ktdHJ1bmsKKzQ2MzI5IDJlZDRiNzU3YzBjZjI2M2Q4OWVmZTIzNzU3ODA3NDM4OTQxNjQ3MDYgbGVnYWN5LXRydW5rCis0NjMzMCA3OWM4ZGNjMjc3YTVmMjYzZTNiYWNkODlhZTkxOWUxYjlhOTZhZTNmIGxlZ2FjeS10cnVuaworNDYzMzEgMTNlMGY3MWE3MGQ1NDRlNGFhOWE0NzEyNjQzMDgwZjE0NDliYTYzOCBsZWdhY3ktdHJ1bmsKKzQ2MzMyIDA5ZDJlOTY4ZDA3NDcyOTMyOTVhNjczYTAxZGU4ZmQ1ZWM2Njg1YjIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMzMyBmYTk4YjhkZjBmZTIxNzY4NDE1NDhlZmQyNzM1MWFiZGRiMjhmNDRjIGxlZ2FjeS10cnVuaworNDYzMzUgYTRlNDMzYzEzNmRhNDNiMDE4ZDc1YWIyMTJmM2E1MmZjMjhlNDVhNCBsZWdhY3ktdHJ1bmsKKzQ2MzM2IDMxZDQyMTU0ODBjNjk5OTU5MDdiZjdjNGNjY2UzYjAzMmM5OTc1MjEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMzNyBkMmIzOGE2MWRlNzEzNTM0ZTlhMDI4MzE5ZTI5M2ZlZmY2NzM5ZTQ4IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDAgYmVmNmFhYjVmOWIzYTNkMDE4YTUyYTUwYzI4YTM3ZTNmZjYzZmY1MCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQxIGMwZGJmZWE4YzBmYjViOTA4NDY3N2ViMzA0MzdiNWJlMWE0MzQ0NmQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0MiBkMTA5YjA4MWQ0NGJlNTQwNjg5ZTAxOWFmYzdiNzkyMmEyM2Q0ZDdmIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDMgYzE0ZTBjODlhOGIwZDA3ZTU4MGJlNmE0ZjIwMGFhMDk1NWI5ODFjMiBsZWdhY3ktdHJ1bmsKKzQ2MzQ2IDJlN2EwMGViYzMxOTI2MDU4NWU5MWVhNDM4ZjQ5N2ZhYzU4ZTM0OTAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0NyA1ZTRkY2U3OGYyM2RhOWIzMzBjZGM3MTMyZTUyOTI4Yjc0YWIwYzZiIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDggNjI0YjRiYjkzZDkwMjZhMmY1OGQyMTgwZDhhN2QwMzVmMmZjZDQ2YSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzUwIDQzYzg2ZjM0OWQ0Nzg0YzdkNjQ3N2I1OGZlZWMxNWFlZWQ4ZThkOTEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM1MiA0YmZlYWIyMzBlMzg1ZDY3ZDQxNGIxZDEyOTE5NDJhNzI4YzhhMzg0IGxlZ2FjeS10cnVuaworNDYzNTQgMWJhM2U0MGU4NjQ5NmEyNzM2YmZhYTkzOGFhNWVkOTNjNTUwM2RhOCBsZWdhY3ktdHJ1bmsKKzQ2MzU1IDUyZDEzOTllMWM2ZDkxYzdhZTFjNmY1MzBkMGY3YWE0NzVkZmQzYzIgbGVnYWN5LXRydW5rCis0NjM1NiBhMTY5NDhlOTkxNWVjYTU2ZDgzMDQ4OWZkNWQ5NzFkNmY0OTc5YTRmIGxlZ2FjeS10cnVuaworNDYzNTcgMGI4YjI4ZjBmMzAxNDNiMTA3NTdiZGE2MzUyODQxMWE3Mjc5NjViZiBsZWdhY3ktdHJ1bmsKKzQ2MzU4IDcyOWZmODAwOGM5ZTU5ODMwNzRjZTE5NWJkYTRhYjQzYjYwY2RlOTQgbGVnYWN5LXRydW5rCis0NjM1OSBkMzdkNWM1NTIxZTM4NjQ2ZWE1OWE3ZWU0NjZiNzMxZDg5MjNlOWVjIGxlZ2FjeS10cnVuaworNDYzNjAgMmU0YTI3NGUzMTA4YWViMzYyMzI2YjljZWQyOWQ1MGE3ZTYyZmUwMiBsZWdhY3ktdHJ1bmsKKzQ2MzYxIGE1ZjUzZmVjZmNlNjZjYjE5ZDExYjY3YTRlYjcwMzk0Njk3ODllZjAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM2MiBiMzJmOWJiMmUwNzcyN2ZhNmQwNDhlN2Q0M2NlMWJlMzNlMzMyMzk3IGxlZ2FjeS10cnVuaworNDYzNjMgZjcxMGVkY2FhNjc1ODk5ZWE0YjdiZjhhNWQ1MDRkOGFhNGNjZmU2MCBsZWdhY3ktdHJ1bmsKKzQ2MzY0IDA1NzQ0OTE3YjdjMzliMjM4NmQzNDM3YjM4ODhjNGQxOTExYjVlMDIgbGVnYWN5LXRydW5rCis0NjM2NiA5NjQxNTEwNWMyOWUwMWVlYWUxMDAxMWU1NTEwNzI0YTdkZDIzMjI2IGxlZ2FjeS10cnVuaworNDYzNjcgMzg5MGEzYzc5MmI5MDM3M2VlMTc4Y2YyOTA2MmVkN2Q1NjY4MGIzYyBsZWdhY3ktdHJ1bmsKKzQ2MzY4IDM1ZjQxNzMxYmVlOTRlNGJhYTQ1YTQ4OWY4MzA5NzMxOGQ3NDZmMWEgbGVnYWN5LXRydW5rCis0NjM3MCA0ZDBhYmI5OWM5ZTU0OGQzYjljMGQ3NDE1M2NjN2FhYWU3MWMzNWJkIGxlZ2FjeS10cnVuaworNDYzNzEgMmY3MWQxYTY5MmJmNGEwYmIxNjFhMDIxZWJmNzlkYTYzYWMxYzA1NiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzcyIGQyMTg5NmIyZGQwYWQ3MWVmN2IxNTIzODMxYTM5ZTIzYTJiMjQwNGYgbGVnYWN5LXRydW5rCis0NjM3MyBkODViMzYwYWE1ZjZmODFkOGE0MGFlOGQyZDc2NTlkNGJkMTAzZDhlIGxlZ2FjeS10cnVuaworNDYzNzYgMWFiMzI2MTdkYWRkZjY2N2I5MDY0YjExNmRiY2EwZThjYWU4NGMzOCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mzc3IDc2ODA3OTAyYTJmNTA1ZTU3ZDBlNTI5YjI2ZTEzNThhNDk0YjAxYTYgbGVnYWN5LXRydW5rCis0NjM3OCAyM2Y3OGU1YmQzZTNhZTVjNzQwZjA3YmYwODk4ZGVhNzFlMjEwZGRlIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNzkgZjcwNjUzYzFlNjMzYjY4YTlkOTQyNDkyMjFkZTgyODIxNzZmYzU4ZCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzgwIDc4NzcxZDY3M2I0YjczMTI2MjVkNTI2OTBiZTQ5NDdlNjhmMDMzYmEgbGVnYWN5LXRydW5rCis0NjM4MSA4MTZmOGU2MDA5N2E5ZGE3ZDdkMjRkODQxODJlMmRlZjQ5NDkyODE1IGxlZ2FjeS10cnVuaworNDYzODIgNDFmODM5ZTg5NTMyNWQzNjI4MGYzMDNmYTFmMDk1ODExYWI0NjgyZiB0aW0tZXhjX3Nhbml0eQorNDYzODMgMGY2MWMzYzYyYjhiZjgxOTE4ZDNkNDUzZWY2MjMzOGNiYjhkYzBjMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mzg0IGNmYzlhMDA3ZThjZWIzMGE4NWJiZjVmMmU1Nzg3NWE1OTgzN2QzYzUgdGltLWV4Y19zYW5pdHkKKzQ2Mzg3IGIyMGU3Y2JkYTQwOTEyYzgzNGQ3OWI3NTVhYWI3ODg0ZGYzMGViMTIgbGVnYWN5LXRydW5rCis0NjM4OCBkMTUzZDJmNjY4ODRmYzMwMTg1YmMyMWIzYjU4OTUwMzVjNDNjYjFiIGxlZ2FjeS10cnVuaworNDYzOTEgNzBjMGZmZDIxYmYwYTczMDBlMThiYTllYjUzMjhkM2FiMWM5NzkzMyBsZWdhY3ktdHJ1bmsKKzQ2MzkyIGRmMDRmMTkyYTJhMjdjNGYwMDliYmNkZjQwMjRmMWI5MGY1OTA0OTcgbGVnYWN5LXRydW5rCis0NjM5MyBhYzQ1ZWNhOGMzNWMyNDZkYjg2ODYxMjcxNjYwYTViN2IyOTA5OWQyIHAzeWsKKzQ2Mzk1IGIxODk2NjU2ZjIyZTQ2OTA2M2YyOTQxMzcxMDZkNzMwYjY3ZTVhNGEgcDN5aworNDYzOTcgZGJiMTk1YzlkZDg4ZTI1NDY2MjlhZGY2MmUwM2JjZGNlOThlNDk5OCBsZWdhY3ktdHJ1bmsKKzQ2Mzk4IDMzYzMyODg5NmY1MjdlYjVmMGM3NjVjYmVlNDg3MDJiOWYxMGI2MTIgbGVnYWN5LXRydW5rCis0NjQwMCBhZGMyMTRmYzFlMWMxM2MzOTgwNmQzODE4ZjU3ZjMxYjY4MTkwZGI0IGxlZ2FjeS10cnVuaworNDY0MDEgNWRkYmQyMDUwMGZjNTA0OTFmNzhiODExZWEyYmYwN2E5MDUzOTk3MyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDAzIDZiMDNhNDdlYjU0ZGY3ZWRhY2NhMWUxMTM1NjQxMGJhOTAwMjk2MzMgbGVnYWN5LXRydW5rCis0NjQwNCA2ZDk5ZGY1NTYwNmUyNGQwZmNlNjdiNzZjZTZmNGMwMWJlM2Q3ZTZlIGxlZ2FjeS10cnVuaworNDY0MDUgZTgzZTFhYWFiMWEzYWUwNDYxM2VkZWI2NTYwODkyM2E0NjFmYjMzMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDA2IDUyZjJjOWY3NGY1YWQ1YTc2YjJiMWY4YWQ5NjJlNDVlZjJhMDc4YzEgbGVnYWN5LXRydW5rCis0NjQwNyAzMTI4Y2ZhZGE2YjRhN2NkOGFmZWIyM2Y0NTljNzQxYTQzMTgxNTY0IGxlZ2FjeS10cnVuaworNDY0MDggNDAyZjNhYzQwNTJmZmFmZGQ4MTRiOGQ0YTU2ZGU0ZGQ5YWRmZDA2NSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDA5IDhmN2M3YWVhYzNhNTgzYTNiOTJmYThlYWU0N2JjODg5OGM4ODY2NmUgbGVnYWN5LXRydW5rCis0NjQxMCAxZGIwZDczNzQ5ZWQ5ZWRhNWVkZTAwYjc2NmVlOTE0MWZjNmQzODVhIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MTEgNTYwN2FiNmM2N2RmZGIwZGE2YWU5ZDVhMzY1MjNiYjRmMWI1OTk2ZSBsZWdhY3ktdHJ1bmsKKzQ2NDEyIGZhNjc1YjNkNzVjYTgyMjVlZDk0NzE2NDg1NGI0NTcwNDFkOTQ4ZjggcmVsZWFzZTI0LW1haW50Cis0NjQxNSBlN2FmOTdlMjc4YzQ0YTcxMGRiNDE5ZTA5NzA3YjhjOTMxYWFkOGQ4IGxlZ2FjeS10cnVuaworNDY0MTYgNDY5N2QxOTU4Y2NiMDViYTZkOWZkMzE0NjEwZGExNTM0OGVhNzhjYiBsZWdhY3ktdHJ1bmsKKzQ2NDE3IDYzMWI2NjQ4ZmRmNDFiZTJjNDU3NTk1MzI1N2RkODkxMTY4NDZmY2QgbGVnYWN5LXRydW5rCis0NjQxOCAyYmVlMTUwYTBmNzUyMjlhMTBjYjkwN2Y5YjI0ZTVlMzAxMjhiMzI5IGxlZ2FjeS10cnVuaworNDY0MTkgZmVhNmZiNDU1NzExM2JjNjExNzI2MmM5MWYzY2YzOWI4YWQ2OWY1NSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDIwIDRkYzYxZDdkYjNhMjlmZjg2YWNkZTVmMmVjYjA5NTY1OGE0MDFkNjQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQyMSA4ZTJkYzNlNDE4MDExYTZlMjVkNzYwMmRkYWVlY2MxMGQ2MGU3N2NmIGxlZ2FjeS10cnVuaworNDY0MjIgMGVlYmQ5ZWViNzE3Y2EzMTMzYzdlMWNkNGVkZGY0YzcwOGJjYjQzZCBsZWdhY3ktdHJ1bmsKKzQ2NDIzIGNlNjM4ZDRiNGZjOGNkYWYwYzRiNjNhMTY0ODUzYTI3NjNlZjZlNTYgbGVnYWN5LXRydW5rCis0NjQyNCA5MGVkYWYwZDkwNjIxODIxOGJiOTRiZmNjZGRlM2UwMDFlZDFlOWZlIGxlZ2FjeS10cnVuaworNDY0MjUgZTBlNDNlNTYxNTEyYmM5NjA0MTBiN2M3ZDEyNmQyMWVhYWI2ZjAxYSBsZWdhY3ktdHJ1bmsKKzQ2NDI2IDcwOGVhZjA4OTZiZjQ1NDRkNGQ1NDM1MzgzMmYzMzAwNzFjYWE2NTggbGVnYWN5LXRydW5rCis0NjQyOSAzOGU5YWYzOGYzODFjMjdlYzYwNzBiNWM2MmE1MzljMzhmNDZkMzI5IGxlZ2FjeS10cnVuaworNDY0MzAgNDk5Y2Y3YzJmNzc3M2VmOTZmZWE0YjQyNGIzYzkzNGJlY2M1ZDU2ZCBsZWdhY3ktdHJ1bmsKKzQ2NDMxIDQyMDlhM2QyOTVlMzQ3ZWVkNmZlNTQxMDI4YTg5YTEzYzNjNDMxMTEgbGVnYWN5LXRydW5rCis0NjQzMiBkZmJkNDU3Y2E2N2FjNmE4ZjA5ZGYzY2RmNTk1YmRkMGZjNTc0ZThkIGxlZ2FjeS10cnVuaworNDY0MzMgNjhlMWEwMmE1YjI5MWQ4OTM4MWJmZjhkOTUwNGUwMzEzNTBmNjRlYiBsZWdhY3ktdHJ1bmsKKzQ2NDM0IDEwYTU5NzNlMGM5YTczNzRmMWMxYzkxMjdhNDcwMjFkN2JhYmZjZDkgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQzNiAzZDgxZmFmNDdhZjc3ZGQwOWFmZGJlZDBmNDliMmM4MjMxNWUwM2E5IGxlZ2FjeS10cnVuaworNDY0MzggY2E2NTdlMGJkMDljMDM3NzhmMDE2YzBkMGNjZTQ3ZDVjYTRkMmZjOCBsZWdhY3ktdHJ1bmsKKzQ2NDM5IDlmMzM3NWUzM2RiOTVkMDhlYzRjMmQ5NzNhNjNlMTI1NDQ3NGY3NTIgbGVnYWN5LXRydW5rCis0NjQ0MCA5OWQwNjFiYzMxNDMxZDFmZmExYzYyMTQ3MGZhNTlkMDE1ZGRlNDdiIGxlZ2FjeS10cnVuaworNDY0NDEgOGI0ZDJhOTA3NWFmNWIwYzNmM2EwOWFhYmYzNTBkMWRjMzc0NTI0MyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ0IDU0OWNhZGE0ZTM2Y2M1N2EzZTVmMmFlNDE5OTY4Y2YxZWY0OGQyYjEgbGVnYWN5LXRydW5rCis0NjQ0NSAzZmYzZDJmMjIwMTIyNDZmYzE4MDY3NTIyY2RlMTZhODg5ZjQyZGEyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NDYgMzI4NzlkMjYxMDlkOTY5NjA2ZDc4N2E1NTE1NTMwODNhYWZhYzE1NyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ4IDE2YTFjYWQwZjk0OTk5MjU0NGJmOGJjYTVjOGI2OTJlZTlhNDlhZTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0OSBjZTNlM2M2M2ZlNWFkZGUzMGVkMGY3OTYzYWNkMmUzYzRlYzQzYWZjIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NTAgMDAzNDMzNTExZTRkZDg0YWZhNGMwNDFiMmFhNzY3ZTcyZTBiZjc2YyBsZWdhY3ktdHJ1bmsKKzQ2NDUyIDczNDI2ZTcxZjY3YWI1NzYyYWYzMGQ5MGJhNWEzMWRjZTgxMmNjODQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ1MyBhNWQ1ZTczYjJlZGJiNWZiM2ViOTk3OTcyNWUxMDBiZGQxNDYwMmMwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NTQgNzk1ZDFjYjFkZjAxM2NkZjM0NWE5MjZiYWY1MDY1YmQwMTVhMGIxNSBsZWdhY3ktdHJ1bmsKKzQ2NDU2IDRjMDgyM2YwYTBhMTU3NGVhODJjMTlkZTlkNGMxZTJhMWE1NjA5ZjUgbGVnYWN5LXRydW5rCis0NjQ1NyBhNTZhYThhYjQ4OWI3MGM0NWM1MjczMDZlOTRkZjE0NWQ2OTMzNDdlIGxlZ2FjeS10cnVuaworNDY0NTggY2ViYThmMmVhMjRlZWJhNTA4NzVkNDQzZjQ2ZGZiOTcxZDZkMjlmNiBsZWdhY3ktdHJ1bmsKKzQ2NDYwIGNjZGMwYmMxMWRjZjJlMjhmNmM0YmM5NjQ0MGRmZjE0ZmE2NDk5ZjYgbGVnYWN5LXRydW5rCis0NjQ2MSA2MDYzZTRlNmVlMjBlMTdkOTQ5YzIxN2UzNzk2MjMyZjY3MjY5MjMzIGxlZ2FjeS10cnVuaworNDY0NjIgMzBlNGVhNDIzMzY5MDlhYmNlMDY1ZGQ1YzQ4NjkyYzVkNDM5N2FkNCBsZWdhY3ktdHJ1bmsKKzQ2NDYzIDc4MWJkOTRjZWJhZDU1ZTI4Zjc4OGRjOTIyNTQzZjM2ZmQ5NDRmNzggbGVnYWN5LXRydW5rCis0NjQ2NCAwNTMwNWQzYWEwNGQxZGI2NDM4MmU4MGI4OTY1NDU1ZGVhNjRmN2QzIGxlZ2FjeS10cnVuaworNDY0NjUgNTA2ZWY5MTMwMjM4YjVlYjlkYTJhNzkzYWRjZDZlZDE1ZTYxMTc2OCBsZWdhY3ktdHJ1bmsKKzQ2NDY4IDViMDc1M2I5ZDE2YWMzODc2OGMwNjVlZTBkNDI0ODVjNWI3Yjk1ZmMgbGVnYWN5LXRydW5rCis0NjQ2OSA3MjMyN2Y4ZjRhNzk2ZmU1NmE0N2I5MDg0OGIxYmVlYWM2NzRjZjlhIGxlZ2FjeS10cnVuaworNDY0NzAgODAzOGU0MWY0NmNjMGQyNDM0MWIwYmZlODgzNjIxMmQ1OWY1ZGE1NCBsZWdhY3ktdHJ1bmsKKzQ2NDcyIGVhZTZkZTFiNDM4MzgwYTU1NzAyZmIzMGYxZmJiMDFkMTBlZDA3NzQgbGVnYWN5LXRydW5rCis0NjQ3MyAwOGJmMDgyMmM1MGEwZDczZjlmZjkzNTZkYzJlNDQwNDI1NDJlMTA2IGxlZ2FjeS10cnVuaworNDY0NzQgOGRhZWI5YWY4NDIyY2JkNDdjMjkyNDEyMDU4MzhiOWJkMzU0Mjc5OCBsZWdhY3ktdHJ1bmsKKzQ2NDc1IDlhNjVmZDQyNTVhMzdjZWE3MmVkMDEzODA1MTFlMDllMDZjN2QxNGEgbGVnYWN5LXRydW5rCis0NjQ3NyA4MDc1NDBjZjc3MTRjOTg5NGQyOWFiMDZkZWY4MzFiMjgxZWZjYjE2IGxlZ2FjeS10cnVuaworNDY0NzggZTk1NzE1NWFlOWJkZGMyMWNhNjY2MWVhMjVjMDExY2M0MGFmNjQ0YSBsZWdhY3ktdHJ1bmsKKzQ2NDgyIDAzOGJiOGQwMDU4YjI1Mzk1NzJmMTk1ODBkMGU4YzlhYWM0M2M0MjIgcmVsZWFzZTI0LW1haW50Cis0NjQ4OCA0NTU2YzJjOTMwZjRiMDI1ZTc5YWIxYTFlYWJkMDRhYWQxZTIyMTBlIGxlZ2FjeS10cnVuaworNDY0ODkgM2RlZDA5MDhlOTUyZjY0NmQ0MDBlOWU1NWM2ZjhjNjhjYjQxZjQ1YiBsZWdhY3ktdHJ1bmsKKzQ2NDkwIDBmMmY3YTBkOWI3ZGQyMDE1YjRkNzA0ZTEzZWUxOTE1YTBkZWMxMzQgcDN5aworNDY0OTEgMjlhZTVlMGZjMzQ4MjhiNWU2M2YxODRmMzAzODQ2MTE2NjhkYmVmZCBwM3lrCis0NjQ5NSA2MzFjMjA3YzM2OTIzZDAyM2Y4NGNkMGE5MmIyODliNmI3MGJlNmQwIGxlZ2FjeS10cnVuaworNDY0OTcgMWEyMzcwNjEzOWNhMGZjMjc4Njg5NDgzMjVlMmY0MjE1MWFiY2E0OCBsZWdhY3ktdHJ1bmsKKzQ2NDk4IDNmZWMzY2UyMDQxMzg0YWRlYmQ5ZGM3M2VlZTYzMjk2OTkyNDVjMjUgcDN5aworNDY0OTkgNTUxODE0ZTRiNDcxMTdiMzJmNjI3NGMxZTM5MDhjNDY0Y2Y4MjE0NCBsZWdhY3ktdHJ1bmsKKzQ2NTAxIDIzNjcyNWY2NGEzNDFmZmU5MDEyOWIwOTc5MDNmZTEwYTU5Mzk0YjEgbGVnYWN5LXRydW5rCis0NjUwMiA3ZmE3Y2I2ZDhiZTgxZTI5MGFhMmE2ZThkMDI0ZTM4ZDc0ODI2ZDNhIGxlZ2FjeS10cnVuaworNDY1MDMgMDIwM2E4YWY3NGE3NWE5YWJmNjBkZmQ2OWRmOGFlYjMyN2FmMzkxOCBsZWdhY3ktdHJ1bmsKKzQ2NTA0IDZiYTU2NzhiZTdmMjYzNTQ0NmI5ODU4ZjNkMzJmYzZiODFiN2FhMDUgbGVnYWN5LXRydW5rCis0NjUwNSBmNzZkM2U2OGQxYWMzN2IwMGIxZDk1YmRmYmQ4YmFkMzM4NDA3ZGZlIGxlZ2FjeS10cnVuaworNDY1MDYgNTEyNTVjYzhhMGRjMDRhYmU3MzA1ZTU0ZGEzYTMwZjVmYzRjMTI0ZSByZWxlYXNlMjQtbWFpbnQKKzQ2NTA3IGU5ODllZTVkNDA0YWJlNzc2MjE0YWIwODBlMjc2MjBiZWRjMjdmMGUgbGVnYWN5LXRydW5rCis0NjUwOCAzMjA0YWE5ZTJiMjI1OTZhOTYyNDg5OTA1YTczNWU4NmZjMmNiYzMzIGxlZ2FjeS10cnVuaworNDY1MDkgNzE4NjFjMzc4MDkzNzEzNjFlZGQ5ZWExOWQ5MWNhZTZlZTZmN2Y5MCBsZWdhY3ktdHJ1bmsKKzQ2NTEwIDU5M2FjY2RkZTAwZWYzMzNkM2ViZDU5Yjg4ODJhY2JlODY1MmU1NmQgbGVnYWN5LXRydW5rCis0NjUxMSBmMTdkMzc5MjBmNmExYmRmY2UwODYwOTI3ZTE3Yjg1N2U2MzhiZWJiIGxlZ2FjeS10cnVuaworNDY1MTIgOTVmYjJjZDFkM2JhY2U0NzVjZDI0MTU4NGQxZDAwOGM4MjZlMTc5YSBsZWdhY3ktdHJ1bmsKKzQ2NTEzIGUwY2VhNjA1NDE3ZTQ1YzU1MWYyNzZhYzRkOWVlNTNkNjc3ZDc3ZTIgbGVnYWN5LXRydW5rCis0NjUxNCA5MjY4YzMwNzgyYzBhZmY3MWY0ZjMzMDliYWYzNTAwMDViNTUxNjE3IGxlZ2FjeS10cnVuaworNDY1MTUgOTM4YzBmY2Q1YmNjYjZjNzNjYWJjOWFkM2Q2YTMzOTMzMDc0ZmQ0ZiBsZWdhY3ktdHJ1bmsKKzQ2NTE2IGQ2MGM3ZjZjMmFhMDA0YmUzYmI5NDJiMGRhMGEzMTg3YTgzNTU1ZjkgbGVnYWN5LXRydW5rCis0NjUxNyBiZjMyNjU4MWM3NDIyMjYyYThhOWY3YjA4NzQ1ZTY2MThhNDRjNjA3IGxlZ2FjeS10cnVuaworNDY1MTggOWYzMjg0YzkyZWIzMGYxMDcxMGM5YjZiOTJjNmQwMDc2YzdhZWFlYSBsZWdhY3ktdHJ1bmsKKzQ2NTE5IGQzMzgzMDYzNDkxZjU5ODNjZmMxYzU5ZjE2MzhlYTBkZTYyMWUwMzAgbGVnYWN5LXRydW5rCis0NjUyMCBhYTA2NWY4MjAyNTI0NmJhMTdlYjIzMjU3YzBkMDE4NjkwN2IzZjhjIGxlZ2FjeS10cnVuaworNDY1MjIgNThlOTlmMmE2NGVjYTFkZTJhNmFhZTU4NzU3YjMxNWM3MTcyNjRiMiBsZWdhY3ktdHJ1bmsKKzQ2NTIzIDU1MzE5NTU5OTNlZDQxNjQwNmQ1MjQ2NjQ3ZGExMjY1NWU3Y2M5NzYgbGVnYWN5LXRydW5rCis0NjUyNCA5YjAwMWViZWFhNWU0ODY3Nzc1ZDEwZGZmNDkwMzFmM2IzYzQ3YjE2IGxlZ2FjeS10cnVuaworNDY1MjUgM2QxYTk5YjM5ZmNhMjVhZWI2MTQxZTU3ODVmNTJiOGM3M2M0ODI3MCBsZWdhY3ktdHJ1bmsKKzQ2NTI2IDY3NDNhNmEwNmYxNTZkMWRiZmU4OWU3OTUzYWQ4MjUzZDMzOThlNDIgbGVnYWN5LXRydW5rCis0NjUyNyBmYjU2YTM5OTI2MDRiYTg1OTc2Y2RkMTE3MTY3ODRlMDc2NmIyMjExIGxlZ2FjeS10cnVuaworNDY1MjggZjY0YjEzYTAwZjMzYjI4YzhlZmFhNTU4YTAzMGNhODA3NzMzOTMzOSBsZWdhY3ktdHJ1bmsKKzQ2NTI5IGRjZjkyZGQ3NDA4YTNmMGJkMmFmNTQ0OTQ5ODgxYTM5NWY2OTQ1MjggbGVnYWN5LXRydW5rCis0NjUzMCA4YWM2MDNlNTcwYTA1NThmOWEyNzU3MTQ1NjgyNjE4OTRhOTE3MWFiIGxlZ2FjeS10cnVuaworNDY1MzEgNWExMmMwYzUxODNlODhhMDVmYjkwMzVjZDgyODZhM2M5YjAyYjgxNSBsZWdhY3ktdHJ1bmsKKzQ2NTMyIDQ4YTZhZjg3ZjNlODYyYThiMzM3NzA4MjM1ZDE0NjIwMjJkNTg5MTUgbGVnYWN5LXRydW5rCis0NjUzMyAzZmUzY2NkZjAxNTU1MjE2M2M0YzkxYTFlOTQ2Y2IxMTE2YjZhYjBiIGxlZ2FjeS10cnVuaworNDY1MzQgYTUyOThmMzcxYmU3Y2QyYWQ5MTk0MjIyMzAzNTUwNTA1ODBmODliMSBsZWdhY3ktdHJ1bmsKKzQ2NTM1IGMzZjJjNjY3NmIwNjFjYTcxMjg5YmRkYzdjZTA1MjMyYWNkNGNmYjkgbGVnYWN5LXRydW5rCis0NjUzNiBkNWJkZmQxMjAyMzI3MDgyNjdhZGRjNjQ2YmVlMzZhMGU3ZmM4MGQzIGxlZ2FjeS10cnVuaworNDY1MzcgN2Q1MTBlNGYzYzk4ODUwNWQwNmJjNTkxYzU5MDk4ZTA1NGJiMTM2MiBsZWdhY3ktdHJ1bmsKKzQ2NTM5IDRlNGU2NTNhODBiZjRhZjY0YWYwOTliMTZlYjI5OGY4NThiMWEyNzcgbGVnYWN5LXRydW5rCis0NjU0MCAxNzMxZmJkZjAyOWQyMDllNzZmYThiODUyODg2NDNmZWFjMjZmNThiIGxlZ2FjeS10cnVuaworNDY1NDEgNmQ3OWFjZGM4MTJkMjAxMGQwZDJjZWRmMGZmZmZhYmE3MzQzMWY4MyBsZWdhY3ktdHJ1bmsKKzQ2NTQyIGE4MmZkN2IwNDRkYzdhN2Q2ZDVkNjkxYTg2MWEyNmJjOGUyZDAyMDQgbGVnYWN5LXRydW5rCis0NjU0MyA4ZGZiYTA4N2RjMDc3YTYxZjUwZjNhZjZhMjgzNGNjYTI0ZGMzNGUyIGxlZ2FjeS10cnVuaworNDY1NDQgNDk0Y2FiNTYzYzExN2ExMzliZGExMzg5NDk5NmYyOGNiZTU2ZDI1YiBsZWdhY3ktdHJ1bmsKKzQ2NTQ1IDlmODYyZDlmNzc4NWRkYTc1MTBlMjJhYmNkM2JjODlmN2Q1MTRjZGIgbGVnYWN5LXRydW5rCis0NjU0NiBlYzVkYzhhNDllZGZiNjU3NDAxZGI1YzIxMTY5M2Q3Y2E5NGI2ZWNhIGxlZ2FjeS10cnVuaworNDY1NDcgYzQ1MDFmZWZkMzI0ZmI0MzYzYzk0NTZmN2ZiZjcyZDJjOTA2ODQxMyBsZWdhY3ktdHJ1bmsKKzQ2NTQ4IDUxMDY4MmFjNWU4OWRkNWI2NWJkNDdiOGFjOGUwZWZjMmM2NDM1YjMgbGVnYWN5LXRydW5rCis0NjU0OSA0NDE3MTFjYmZlMzQxNzFkYTY3NDM2ZWZmMTg1Y2E0NjMxMTA5Y2EyIGxlZ2FjeS10cnVuaworNDY1NTAgNGY4NTg2OTQ2YzhmNTYzMmE0NjU3ODNlNGE4ZjY5ZWFjMzhmZjIwNyBsZWdhY3ktdHJ1bmsKKzQ2NTUxIDBhYmE2M2ZmN2Y3M2UzODY4M2RhNTU1ZmM4YjRiY2VmZWNlODFjNzggbGVnYWN5LXRydW5rCis0NjU1MiBkMjAwOGIzMWZkNjJhMjRkNmE0ZmVlMTU2NWIzNTVlZDA0ZTAyMTc2IGxlZ2FjeS10cnVuaworNDY1NTMgOTk1NjRlNjJhZWE5MmRlMTQwODkyZTE3ODMyZmUyMTdhNjNlY2FiMSBsZWdhY3ktdHJ1bmsKKzQ2NTU0IGUxMTU4ZTE5NTFkYTUwZjZlYWRmODgyNGM0ZWU3MDc3YjI0MmM5NmQgbGVnYWN5LXRydW5rCis0NjU1NSAxM2ZlZGQwZDBmMjZjNjY0ZWQ1OTY0ZTRlYWE3NThlM2QwNDU5ZTg2IGxlZ2FjeS10cnVuaworNDY1NTYgYzc0N2FkNTNlMDllMGY5Mjk0NGM1NDYzNThjNzg1NDA0ZWQ3NTdlOSBsZWdhY3ktdHJ1bmsKKzQ2NTU3IDE2OGViNmUxNWI4YzdjOTUxZGQxMjFkOTNmOGQ3MWRhOTZhZTY0NzQgbGVnYWN5LXRydW5rCis0NjU1OSA3ZjFmMzZiM2M5ZjlhYWMzOTE4ZWQ2ZTg2ZjNlM2JmMWU4OTE0ZThmIGxlZ2FjeS10cnVuaworNDY1NjAgZWNmNzE3M2U3OWZmNTY2ZjRmOTU4YmFkYzE4OWU1N2I3MGYyODYwZSBsZWdhY3ktdHJ1bmsKKzQ2NTYxIGJiMGQyYjk1NTQzOWYzMmU0ODEyMzcwNzAzZjg4ZTYxZTIyNDY3MDIgbGVnYWN5LXRydW5rCis0NjU2MiAyZmUzMjMzYmQ0MjYxMmY0YjE3MzRjMWFlOTNkZTI2MTBmMTU2NTg4IGxlZ2FjeS10cnVuaworNDY1NjggZDJhZTU4MDg4MGI0YmJkZDY4NWVjN2Q5MGY0ZDM5ZmJmOTI0OGNhNiBsZWdhY3ktdHJ1bmsKKzQ2NTY5IGY5ZDE4NDBmYWQzNDg1MjU0MDkyNWVmN2FmOWJlOWY5ZmFkOTcxNWMgbGVnYWN5LXRydW5rCis0NjU3MCA2MjllYmY3ZDNiNWNhY2E1OWRiZjBjMTNkYzlhOWY5YWY2OGNmNTVmIHJlbGVhc2UyNC1tYWludAorNDY1NzIgMWE1NmRhODZjMTFhODc5ZmE3MTk1MGNiNDJlMmVmZmExOGM2MzkzZSBsZWdhY3ktdHJ1bmsKKzQ2NTczIGJhZGMxNzM3ZGM4MDE5Y2YyYjMwMmQ1MjAwMDVmMDM1NzEyYTBlYzcgbGVnYWN5LXRydW5rCis0NjU3NCBmMGYyOTFmYTliNDY5MTg0MWVkZWVlNWVlNTM4MDAwZWQ4ZTJjZWRjIGxlZ2FjeS10cnVuaworNDY1NzUgM2ZkODAyNzg0NWY4MDJjOWEwZDg4MDhhYzY2Zjc0YmQ2NzA4NmQ5YiBsZWdhY3ktdHJ1bmsKKzQ2NTc2IGY1MGQzYTUxZDY0NmYzM2JlZmY1YjQyYmJlNjA1ODZkNGM0NDAyZTUgbGVnYWN5LXRydW5rCis0NjU3NyBkMjVlMjc5YzdlYTliMjU3Y2RjNWExYjEyYTNmNzM1ZDQ5YWI2MzBjIGxlZ2FjeS10cnVuaworNDY1NzggZjgzMWU4YmM2YmQzNzg5OTM0NDc1OGE4NWY2ZTAyNzc1MDk1YzUwMCBsZWdhY3ktdHJ1bmsKKzQ2NTc5IDVmNDQyZjdiZjQxOWU0ZmMzYzEyMDk4MDMwN2Q5MWI2NjVjM2U4OWYgbGVnYWN5LXRydW5rCis0NjU4MCBlMDk5N2ZmYTM1NzI0NjhiOWVhMGVhMGNmNjJiMTY4MTdjYTExMWY2IGxlZ2FjeS10cnVuaworNDY1ODEgYTdmMjI5NWE3OGFjMTM5NTBiZmZlODc4NGJmODQ5MmYwYjJjYmIxNyBsZWdhY3ktdHJ1bmsKKzQ2NTgyIDQ0N2E5NGIwMzlkZWI4MGNhMWRhOTMzM2JhM2FjODEzYjg3MGM5MzkgbGVnYWN5LXRydW5rCis0NjU4NCA0MjhlOWNiYjQzNDYxZTBlZWZmZjJmNzQzMDA3NWE4NDc1MjY3ZmViIGxlZ2FjeS10cnVuaworNDY1ODUgZGIyZDhhYTlmZTNkNDIwOGI5OTI4N2YwNTNiZjQ4ZDEzZmFlYjNmNCBsZWdhY3ktdHJ1bmsKKzQ2NTg2IDMwMzFhNzExMGRhOWE4NzU5NzMyZmYyNjAyZmMzOTkyMjMxYWY5NDEgbGVnYWN5LXRydW5rCis0NjU4NyBiMWViNGE2NzQ5OTgwNTRhNmU3NTFhMTZlM2E3ZWFmM2JlNzJhYzBkIGxlZ2FjeS10cnVuaworNDY1ODggY2Y2NzdlOTc4ODUyZmE2Y2ViZWIwOTNhNTA0ZTVkNGI4NDhiOTMwZiBsZWdhY3ktdHJ1bmsKKzQ2NTg5IDE3NWNiZGY5YTVmYmQwNjU3Zjg1MTU4NjBlYzUxMDgzYmU0MGNiODMgbGVnYWN5LXRydW5rCis0NjU5MCA5OTVlY2QyMzFmN2M1OThkNWI0MTUxMzAzZmQzMjY0YzhkMDcyOTM2IGxlZ2FjeS10cnVuaworNDY1OTEgYzVkNTA4NzJlZmY0ODJhNzM3ZTQ5MTRiMmM2Mjg0MTY3YmE0NDE4ZCBsZWdhY3ktdHJ1bmsKKzQ2NTkyIGI5YjAzNmYwMjIwN2UyOWIyMjE1MzQ4NjZkNzBkMmVmMjlkNGZkNmIgbGVnYWN5LXRydW5rCis0NjU5NCBkN2RkNTI4NDI3YzBkMTRhYTQzYjBmOGZhZDUyZWI1NTUzODZlOWRlIGxlZ2FjeS10cnVuaworNDY1OTkgZjM3ZTY3YmQ0MzkzMTg0YTFlYmFhZWVjOGQxMWIyMTlkNTUxNzk5OSBsZWdhY3ktdHJ1bmsKKzQ2NjAwIDI2MzJiZDU1YzI5ZjI1NDRiZDk4NzQxNmNmMmNkNzllNjM1OGRiMjUgbGVnYWN5LXRydW5rCis0NjYwMSA3NWQ2ODExNTkzMjlkOThmMTY1NWRiZTBmMjdlNTYxMGQzZmU4Zjk0IGxlZ2FjeS10cnVuaworNDY2MDIgNjk3ZGQ4NDhlMWYxMzYzNmU1NTQzZmRhNWZjNjFkNTA3YTQzMzI5ZCBsZWdhY3ktdHJ1bmsKKzQ2NjAzIDIxZThkZDNlMzk0NTc3YzU4MTY2YjUxNTAxMDJlMTBhYmRmYmEzODggbGVnYWN5LXRydW5rCis0NjYwNSAyZWI4YmUwZjg3MzEyOTcxNjA3NmQzNjk0N2VlMGFhNTM5NTg1MjJhIGxlZ2FjeS10cnVuaworNDY2MDcgZjljMzAxZGM1ZmI3NGM4YzJlMThhNWRhZjIwZGQwOGY4Mjc0MWQwNCBsZWdhY3ktdHJ1bmsKKzQ2NjA4IDM4M2NkOTRjMmE2N2QzN2YyYmExYjFjMTcyNjUwYTljYjY4NDE3NzUgbGVnYWN5LXRydW5rCis0NjYwOSA2ZjliNTM2ZTk2ZjY2MzUzYzFmZTllNzU1MjM4YTkwMjNlM2U5YzU5IHJlbGVhc2UyNC1tYWludAorNDY2MTAgOTY2ZTc0NzBmZTIzNzMzM2I0ZTBlZjFkNTRjNzk1MjgwNDA5ZjdmOCBsZWdhY3ktdHJ1bmsKKzQ2NjEyIDJiNWE5ZGM0OTA1YzkzOWJkNGQzZDY0MmUwYTc3MTIzZjFiYzc1ZjQgbGVnYWN5LXRydW5rCis0NjYxMyA2NGI5Mzc5ZmE4MGRiMDg4NDEzNTlkMWVhNDM4OGM2MmUyMzZhNGRiIHJlbGVhc2UyNC1tYWludAorNDY2MTQgNDY0MjY1YzFkMDhiMWNhNjdkNDU2Zjg4ZWM1NzRjMDNjNzI4NzgxZSBsZWdhY3ktdHJ1bmsKKzQ2NjE1IDM0NzNmY2YwYmNlZTg0NjFmNmY2NmZkNjY2MDVmZGJlZDg3ZDY3NzYgcmVsZWFzZTI0LW1haW50Cis0NjYxNiBhYWJjMTM2MDI0NDBhZjNlNmY4YjUwY2NlZDJjNGI1ZTlkZTAzMDczIGxlZ2FjeS10cnVuaworNDY2MTcgODU1OTkzYjA5ZmQ5MjA4MmI0MmE3ZDY1NTU2OTBmMmJlOTQwYWEzZSBsZWdhY3ktdHJ1bmsKKzQ2NjE4IDMyZjcwNmZkNDUwM2U5ODkwZTdmMTFiYzg0NDgxY2YzYmQzN2I1M2MgcmVsZWFzZTI0LW1haW50Cis0NjYxOSA5NzA1MjZjMWE3ZTJmZjM2NDRlZjJjMjQ1NjMzMmNiZmE0NzJhM2E4IGxlZ2FjeS10cnVuaworNDY2MjAgMTI5YWI4NDZhNzFmYWZmNjEyM2MzNTVlZDA1NjJjN2UzMmVmMjhjYyByZWxlYXNlMjQtbWFpbnQKKzQ2NjIxIGQ0MTQwZjc5ZjFjNzA3OThhMzAxMjQzZjY0YWEwNmFhMmQ2NTFlNGQgbGVnYWN5LXRydW5rCis0NjYyMiBmN2Q0MjNjMGJjZDg2YTNiMDNiYzliNTk2NDYwMDAyZDMzM2E0NjA5IGxlZ2FjeS10cnVuaworNDY2MjMgZjBmNWRjYTI5OTkwN2E0ODIzY2I5YjlmYmMwNTQ5MmYzMTY2MzM3YSBsZWdhY3ktdHJ1bmsKKzQ2NjI0IDM0NzE0ZTQwZDQ2NTZkZjAyNzY4NjY2MTRiZGViMDZiMjMwODRjMDEgbGVnYWN5LXRydW5rCis0NjYyNSBkMWZhY2E0ZjBiODAyNjEyNWIxZjFkMjI5MWY3NTk5MjkwOTRiZWFjIGxlZ2FjeS10cnVuaworNDY2MjYgYTQ2NTQ3NzFlNWIzMDE0NGNiODE4ZTg2MGQwMzg0OGIwNTBiNmY5NSBsZWdhY3ktdHJ1bmsKKzQ2NjI3IGJlZjAyMzZkN2JmYTZmMTM2ZTNmNTc4ZWY1NTJkNWRjMDgzN2Q4ZDYgbGVnYWN5LXRydW5rCis0NjYyOCA0ZWM5NDJjZjhjOTJlZDc2ZTQxNGFhODNjMjU2NGEzNjcxNTQ5MTY4IGxlZ2FjeS10cnVuaworNDY2MjkgODA2ZjNlMTQxMTlkNzdkYzgzZmQ3NjE2MGE0MjI0ODU5NGZlYzVlOCBsZWdhY3ktdHJ1bmsKKzQ2NjMwIDcyMWE3ZWIyM2ViZjljMDlkY2E4YjdjMzgzMDJhYTcxMThhZmUzZGUgbGVnYWN5LXRydW5rCis0NjYzMSAxNjMxODI0OWFhMzMyNDYzNzMyMGJlMzQ1ZTYxNDJmMjdkMmRkNTE4IGxlZ2FjeS10cnVuaworNDY2MzIgMjQ4ZDEwNmY4OTUyZWZkNGZkNzFiYzdiOTQ2NjY3ZjQ4ZmZhMDhlZCBsZWdhY3ktdHJ1bmsKKzQ2NjMzIDA3YWNmNmZhNWFhMGVkZmZlZWIxZTAxYjZlOGIxZGRmYWY1NjE3NDggbGVnYWN5LXRydW5rCis0NjYzNCAzYWFkYzZkYzRiMWE2NDIwNTVhYWU4YzA0ZGEwNzFkNTFmZjBhYzk5IGxlZ2FjeS10cnVuaworNDY2MzUgNmY3NDA0ZjNmYzU3NjViMzdkMmE1MTM3MzI0M2M2OGM3MDQzMzU3YiBsZWdhY3ktdHJ1bmsKKzQ2NjM3IDU3MjJmMTEyZDVkYTU0YmQwNWIxMGI1ZGVkNGFlMGY3ZTA4MmQ2ZTcgbGVnYWN5LXRydW5rCis0NjYzOCA4MjA3MmE4ZjUyNjc0ZjAzNTRmNjM4NTRmNWMwZWY2ODhlNzE0NzE4IGxlZ2FjeS10cnVuaworNDY2MzkgMDdlNTAzZTg1OGVmZTI3ZDRiMDgzMTIyZjgzZGNjNmMwZTIxNWYwOSBsZWdhY3ktdHJ1bmsKKzQ2NjQwIDBiMmIwNzZlNTkwOGVhM2MxMjM0YmI3NjUzNTM4NTIxYmE0ODcyY2EgbGVnYWN5LXRydW5rCis0NjY0MSAxOTQzMGNkZmYyYmQ2YWE5MWYyOTk5MmNlYzA4ZjE0NmRiYzAwODU5IGxlZ2FjeS10cnVuaworNDY2NDIgYTExNDAwM2FhM2QzZWIwNzEzMzQ0M2IxYmJhYmJmOTcxYjBmMTJlNiBsZWdhY3ktdHJ1bmsKKzQ2NjQzIDcyMzlhMWE4MDQ4NzkwMGEzYmYxMWQ2YWQ4MDI2ODdmN2E0YmQ1YmEgbGVnYWN5LXRydW5rCis0NjY0NCA0NzIyZDM3ZmFhMTQzNzhiOTRhZGUzMDYyYmQyODU1OTFhNjI3M2JjIGxlZ2FjeS10cnVuaworNDY2NDUgZTAwZTY4ZGQxZGRmYTg2MWE3OWY3NzUyNWRjNGRmMGJiNDExOGY5OCBsZWdhY3ktdHJ1bmsKKzQ2NjQ2IDVlYzg5NzNkZDIyMTM5MWI5YWM1OGNjYjdlODA5N2M5OTUwODViNzEgbGVnYWN5LXRydW5rCis0NjY0NyBkYjc5Mjk3NzI2M2FjZWU2ZjA0ZDU4ZDFhNDQzMDU4NzE0MGRhZmM0IGxlZ2FjeS10cnVuaworNDY2NDggOWUwYjA1MGNlNDZmMDVjMGU3N2UzNjU5OGQ3NTBhODQ5MDUyMmI4NSBsZWdhY3ktdHJ1bmsKKzQ2NjQ5IDIxOTY5YjcxYzM2ZDA3MjFjYWU4YTM2Mjg0N2E5N2M1NzE4MThmNzMgbGVnYWN5LXRydW5rCis0NjY1MCA1ZGZiMjFhMzdmMTlmYWY5MGI1ZTUxNTBjZDY3N2FlYTU1NGVhY2M5IGxlZ2FjeS10cnVuaworNDY2NTEgN2QzMWQwMzFmOGUxMzM1MDlhYTExN2ZlNGVlNWIyMzA5YzFkM2NlOCBsZWdhY3ktdHJ1bmsKKzQ2NjUyIDkxM2U1ZTg0ZmFkZTc2ZDY0YjNiOTk4MTA4ZmY1MTNlNDE0ZGM0MjYgcmVsZWFzZTI0LW1haW50Cis0NjY1NCBmMTZkNDRkMzAzY2Y4NDAwOWU0MjkwNGY1Zjg1MGEwZjljZTIwNGIzIGxlZ2FjeS10cnVuaworNDY2NTUgYzQ1ODdhNWY1ZTk0ZWU2YzZhY2MxODUzYmViNDRlMTFhOWQ5YjY2ZSBsZWdhY3ktdHJ1bmsKKzQ2NjU2IGQwMDczYzZmNmY1NmUyZDgxNTM1MzIwN2Y0MDFjZDRhYzE5NTk4NmUgbGVnYWN5LXRydW5rCis0NjY1NyAxYzIzZTk1YTgwYTJlZjg5NGM0MzlkN2ZiZmU2Nzg2ZWRlYWFmOGMzIGxlZ2FjeS10cnVuaworNDY2NTggYjAwY2JiMDhlMGNjMTFiZWUwZGVhYjQ1N2E5ZmE0ZTNhNDgzN2FhZSBsZWdhY3ktdHJ1bmsKKzQ2NjU5IDU4ZGU2MWJlZGRmY2VmM2ZmMmEzZTNmMTllMGNhNmVkZjgwOWFjZjUgcmVsZWFzZTI0LW1haW50Cis0NjY2MCBjMDVlZjA4ZTFiYTk0ZDljYTE3OTg2OTMwYmJlNDA3OTJiMGMwZDU4IGxlZ2FjeS10cnVuaworNDY2NjEgMjM3NDU2MDYyYjgwZjczNmNiODcyMjEzMzFjOTM1MmM0YTA5OTZmZSBsZWdhY3ktdHJ1bmsKKzQ2NjYyIGNiM2Y1MTM4ZWNiNTc4MGE0ZmRiNWMwYWNlYjQ4ZTg2ZjE3ZGE1NGIgcmVsZWFzZTI0LW1haW50Cis0NjY2MyBjOTA4YWFhOTFlYWUxNzg3YzMxNTM0N2E1NWU0ZmQzYTU4MWY1N2RiIGxlZ2FjeS10cnVuaworNDY2NjQgMWM5ZDgwNzdlY2ZiMjFmOWNmZDc2NzQ4Nzk2MmExNTliZDBhMjY2NyBsZWdhY3ktdHJ1bmsKKzQ2NjY1IDVhZGJhNzA5NjA2YjNhNjRkMjJjYTliMmI4ZDNmNTFlZTc4N2Y5NGYgbGVnYWN5LXRydW5rCis0NjY2NiA5OTA2NDdlMmFiYzRiMjQ1MmIyNWU4Nzc4ZDkzZGNmMzA0ZjNiMzNhIGxlZ2FjeS10cnVuaworNDY2NjcgYTRiNThhYjY1MjAyM2M1ODEyOTA1MzQ4YzdjY2ExNjQ4YWQyYmZhOSBsZWdhY3ktdHJ1bmsKKzQ2NjY4IGYzYTY3OTk4NWUwZDU0OGRmMzA3YTk5YTc0YTQ1ZjFiMDIxNzc1YjcgbGVnYWN5LXRydW5rCis0NjY2OSAzMDYwNWJmOTVlZjhiOGJlN2FiMDdjMDRiZDE0MDE1Yzg4ZTY1NjQ3IHJlbGVhc2UyNC1tYWludAorNDY2NzEgMDJkNDc1NDA1ZTNiNWYyOTBiNjA0YWYwMzMzMTExMGE1ZDNlZjgxYiBsZWdhY3ktdHJ1bmsKKzQ2NjcyIDY2NDliNTFlMjQ1ZjkyNWRjNzc0MTEwMWMwOTc1NTg2MjdhOTZjYzMgbGVnYWN5LXRydW5rCis0NjY3MyAyMTc3YWVjZDkxZmNiYWIzZGE4ZDc3MzBhNWE2M2EzYTE5NzZjYTYxIGxlZ2FjeS10cnVuaworNDY2NzQgMDg1NWRhMTRhODIwYzBmMTZhNWU3YmNiOTBhNjg1MTQ0MjlhZWMxMCBsZWdhY3ktdHJ1bmsKKzQ2Njc1IDk2MzljYjEzYjk0MDUzMGQxMzkwYTdlZDQ2MWY3MTA0MTdlMDA4NjUgbGVnYWN5LXRydW5rCis0NjY3NiA2ODdhYWNkNjRiZTk2Njk2MWFkNzQ3MTE4MDM2MGFlMmUyYmQ3NzljIGxlZ2FjeS10cnVuaworNDY2NzcgMGRjYjkyMjhjYjNmZDg1NTAyNDBkOWFkOTQ0N2IxZDE0MGViMDIwNyBsZWdhY3ktdHJ1bmsKKzQ2Njc4IDY1NGYwMzgzZGJjYjJlM2NjYWU5ODFjMTM4MmM1NTUxNzIxYjRjZGIgcmVsZWFzZTI0LW1haW50Cis0NjY3OSBjNGI0NDIyMmE1OTk0YjA3YWNkNGU5ZTc2OGVhMzY5MWRmZDZlYzU0IGxlZ2FjeS10cnVuaworNDY2ODAgMThkZTUwYjU4ZmIxZDc4ZmZjZTc2MTIxNTFhODdlNzYxZDllMzAwZCBsZWdhY3ktdHJ1bmsKKzQ2NjgxIGYwMDUxOGJiNWI0MzM1Nzc1YzA2ZTI2OWJkNTRmNmMyMjMyZThkMmYgbGVnYWN5LXRydW5rCis0NjY4MiA4MGE2MjczNDBjOWYyM2Q3OTgwNDdmZTM4YzVlODFmM2NmMGY1N2JkIGxlZ2FjeS10cnVuaworNDY2ODMgMTFmNjY3MzE1NTRkYmE3ODBlNTA1MDU0N2FjMWM1YTBjY2E3ZDI5OSByZWxlYXNlMjQtbWFpbnQKKzQ2Njg0IGE2MGFkZjBjYjJmZDc0ZmJjN2Q5MjRkMzM2OGMyMzBlZjllNTU3ZjEgbGVnYWN5LXRydW5rCis0NjY4NSA3MDgxZThkNTMyOThlZjNjNDQ5ZmNkN2E5MjQzMWQ2ZWE0MjBiOTY3IHJlbGVhc2UyNC1tYWludAorNDY2ODYgNmFlNDE4ZTRiMzZhOWE2N2NjZGU3MjNiZmRhMjA5NWZkYjQ2ZTY5NSBsZWdhY3ktdHJ1bmsKKzQ2Njg3IDFlMzhmZjgxYzhhOTUyZWViZjdjYmJmMzY3MjU3ODUyYThjMDNlZjIgbGVnYWN5LXRydW5rCis0NjY4OCA4MjhjMTA2ZDVlY2M5ZmQ3NGNkMTZmOGJmZDFhOTI4NmIxNmRjMjBhIGxlZ2FjeS10cnVuaworNDY2ODkgNWZiZWZiNWM4YTIzZTY5Y2QwMmE2ZTM5OTM1YzUxYzljMjM5ODFlMSBsZWdhY3ktdHJ1bmsKKzQ2NjkwIDBkY2I2MmQ2ZDk5YTI4YTQ4MDc2NjRhYWIyYzM1ODlhNTY5NTA3YTcgbGVnYWN5LXRydW5rCis0NjY5MSA5OGU4MWFmNDAwMDdlZmQxOGVhNjY2ZWM0ZGE1ZDUyYWQxNmY0ZjY3IGxlZ2FjeS10cnVuaworNDY2OTIgMWMwMTZmOWNhNWE3NGFkMTM3MzZjYjcwMTNkZGNmZDJmMTM4MmVkNSBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2NjkzIDI4MGI4ZWFlZTFjMDM0ZGRhMDVhYzJkODcyYjA2YTI4YzdiMDJhZGMgbGVnYWN5LXRydW5rCis0NjY5NCBjOTg5ZmFmZmYzZGM2YzUyZGJhMmYxNDhiMjMyMTEyMTE3NGQ5OWMxIGxlZ2FjeS10cnVuaworNDY2OTUgMzExZjc1MWFjYTdhMzMyZDg4MTViMDVkMTQwZmI5NDZjNzg4YzNkYyBsZWdhY3ktdHJ1bmsKKzQ2Njk2IGNiM2I0MzljMjljY2ZkYTlmZTA4MWY5NTE5NzZkYjFkNjI0ODFmZGUgbGVnYWN5LXRydW5rCis0NjY5NyA5MzFhZDA2YmVjNTYxOTY5ZDE0NGU1YTkwM2VkZDg4ZWFmMzQ4YWIzIGxlZ2FjeS10cnVuaworNDY2OTggNjI1YzJkOThhMWY4MDVkMTc5MzdjMzZhODM5YTU1OWVkMzA3MzBlOSBsZWdhY3ktdHJ1bmsKKzQ2Njk5IDdiZmFmZGVmZmVlMjYwOTU2ZWMyOGFmZGQzYmYxNTM2YmE3ZDI4MDMgbGVnYWN5LXRydW5rCis0NjcwMCAxZThiNTkzODllMmUxMGI2ODI2OGU5OTMxOGYxNGE3Yjk4YTdiZDM2IGxlZ2FjeS10cnVuaworNDY3MDEgMWU4NTY1N2YwNDc0MGQ2MGI2OTdkZjIyYjQyY2VmZWNmYzk2ZTIyOSBsZWdhY3ktdHJ1bmsKKzQ2NzAyIDNhMzZkNWY1YjEwZmQzMDRlNTE2ZjhjOTg4ODY1NGIyMGZiMmI3OTAgbGVnYWN5LXRydW5rCis0NjcwNSBlYTk5NjZjODg2NTc0MmQyODA0NmE4M2Y0MTg3OWRlYjJmMmJjZjUxIGxlZ2FjeS10cnVuaworNDY3MDYgMGNkMjI3M2JjM2IxNzU2Yzg4YzNmNmI2OTIzYzE4Y2U5NmM1NTQ0NyBsZWdhY3ktdHJ1bmsKKzQ2NzA4IGRlZmIyYjk5MzQzNGZmMWY2NjE5NzVkNjI5ODNmN2RmMGYxY2E4MTEgbGVnYWN5LXRydW5rCis0NjcwOSBhMmNmODcxYjc4MDBlOGRkYzM3M2E5NDBlYjZjMzU3MDFiNjU0ZWRmIGxlZ2FjeS10cnVuaworNDY3MTAgM2ZiMzgzNTFkZDM5Y2I3M2U1ZDJiYjNiNDY3NTg4ZjEzNjM3NWVhYiBsZWdhY3ktdHJ1bmsKKzQ2NzE2IDJhZjU3NTdkZTdiMWU5YWQ2NDdhOTkyZjJlNmM3MzMyNGM4Mjg2ZWUgbGVnYWN5LXRydW5rCis0NjcxNyAxY2IyZWNlNGI5ZTFkZTBlYWJkMzlkNmFlNDFhMjBmZTQ5MzYxM2Y4IGxlZ2FjeS10cnVuaworNDY3MTggYTM2NjhlOTRmYzZkNGQ0NzcyYjRjMzQwMzRiZTUxNTNhMjAwOWY0NCBsZWdhY3ktdHJ1bmsKKzQ2NzE5IDFiNDdkMDMwYzNmYWU1YzdmNWFiM2IwNmJkZjc2ZmIzM2EyZTY5YTEgbGVnYWN5LXRydW5rCis0NjcyMCA3NzA0ZjM3NTQxZjQyMzFmZWJkNjAyY2UzMTMyOTNmNTYyMzQwZDA5IGxlZ2FjeS10cnVuaworNDY3MjMgODcyZTk5MWY5YjcwMTU0MDllZjU3YTc5ZjIzNWIwNzc2MmM4YWY2MiBsZWdhY3ktdHJ1bmsKKzQ2NzI3IDExMDBiNTJjNTVmZGZlMzY0NWJmMTM5ZTU2MDRmY2FjZTdlN2E0NzAgbGVnYWN5LXRydW5rCis0NjcyOCBhMDc2MWNlYjg2MzNhODFhMzRkODRmOTBmZDNjNmM2ZDkyZGRjNmE1IGxlZ2FjeS10cnVuaworNDY3MjkgMGI0ZWFjNDA1MGI4MDAyOGJmMmY1NWEwZWMxNzkwNDFiZjNhMTAxOCBsZWdhY3ktdHJ1bmsKKzQ2NzMwIGZjM2JjZDRlNDRiOTY0YWU3MjgwMjY5ZDJlOTEyODQwZjk1NmUzYzEgbGVnYWN5LXRydW5rCis0NjczMSAwZTdiYWZiMWI4MmY5YzFhMTlkMjdiOGVhN2Y3OGM4ZDI2ZDQ4MWNkIGxlZ2FjeS10cnVuaworNDY3MzIgN2QzMWI2NjkyYWI3NDgwMWRlYjM1YzY1NjEwNDIwN2FmYTAyMWJiMiByZWxlYXNlMjQtbWFpbnQKKzQ2NzM1IGUzYzA4ZjA2NmViODBkN2U4MWVkMWQ4OTkwZDAzOGQxMDU1NTlmMDAgbGVnYWN5LXRydW5rCis0NjczNiBmY2JmNjNjOWI0ZjZmY2VkYTYyNTI1ODdiYzFlZGZlZjEyM2JmZDU5IGxlZ2FjeS10cnVuaworNDY3MzcgNGIwYTNkMGQ4NTg0MWI3NTBmN2YzMTRiN2U3ZDMzZDBlOWM2OWI3NCBsZWdhY3ktdHJ1bmsKKzQ2NzM4IDFlMDcwNGNkOWVlODFhYWE1ODgwZjVhOGRiMDIzZmE0YzhiMGU3MTcgbGVnYWN5LXRydW5rCis0NjczOSA1YzU4ZmRhOTVhYTVhMmJmZDQyMWM3YTFlZDRjYmNlOThjNTQzNGQ0IGxlZ2FjeS10cnVuaworNDY3NDAgZjI4ZjljMTVlMmQwZjhlMDIzMTdlODcwZTY2YzY1ZDY2OTAxMzVjNyBsZWdhY3ktdHJ1bmsKKzQ2NzQxIDM1ODFkMWRjNDI1MzM3MjIzMDU5NmVjODQ5YTZiZjBlNjEyNWQxNzMgbGVnYWN5LXRydW5rCis0Njc0MiAxZDIzOWM3ZThkNjA3NWEzMTg2MDE4YWI2YjRmYTQwZGZkYWQxYjMyIHJlbGVhc2UyNC1tYWludAorNDY3NDMgNzJjOGYxOGUwMzExODNkYmU5YTdmY2U5ZmU2NjAzMTExZDk2MDk5YiBsZWdhY3ktdHJ1bmsKKzQ2NzQ0IDc2MTkyMTZiYmMxOTRjMzQzMWY4MzcwOWFhYjk2ZjlhOWFmYmFiZWMgcmVsZWFzZTI0LW1haW50Cis0Njc0NSBkM2Q5NjFmMzg4YmUyYjAzYWY2NGIxNDhjNzNmMDJmNDY3M2NlYTdmIGxlZ2FjeS10cnVuaworNDY3NDYgZTJiYTVhZTRiODEzZDlmZDJjMmQyNjhkOGJhZjZjMjY4NDI1NTg1MSBsZWdhY3ktdHJ1bmsKKzQ2NzQ3IGUwZDI5NTg2MjEyYTM3N2VkZDkyMjczNjhmNGMzYzZkNzBjZjMyMTUgcmVsZWFzZTI0LW1haW50Cis0Njc0OCBkZWU3M2ZhODExMGYzZWFkNDMwMGY5MTY0NWY2NWRiOGM4ZTNlNDVlIGxlZ2FjeS10cnVuaworNDY3NTAgMTlmZDYxNDE5NDBkNWIwYTdiNGZiMmM0MTM4OTEyYWJiMDI4M2Q5OCBwM3lrCis0Njc1MSAyNDkzMGUzYjYwNjE5YWVjMzE5Y2RmMzNiMmNmNDBiYzkzMTE4MjZiIGxlZ2FjeS10cnVuaworNDY3NTIgMzY1Y2EwNGQwODU2NGEwOWQxY2ViYWFkYWU3NDViMDhhNDc3NmM2OCBsZWdhY3ktdHJ1bmsKKzQ2NzUzIDA5OTk3YjJmNjNhMmMzZGFiMmU2Y2Q3ZWE5Y2JmYmZmMWJmYTFiMmYgcDN5aworNDY3NTQgYTE5YzIwYzVlNWM3NTY2MjE1N2IxMTAyZTM2YzA3ZDFlMmMwMWFiOSBwM3lrCis0Njc1NSA2YmE3ZDQ2Njc5ODY3YmY5ZDRhYjZlZTk4ZTE1NWZjZDAxMTdjYWQ1IGxlZ2FjeS10cnVuaworNDY3NTYgMGUzMTk2Njc0NTVjMzVjNjIyMjQzNTViMzcyOTNlZGU0ZTUwMjNiOCByZWxlYXNlMjQtbWFpbnQKKzQ2NzU3IDViYzcyNzJiODFlNTQ3ZGZjY2VhMGIwZmZiODAzNTIwOTdjZjc1NTYgbGVnYWN5LXRydW5rCis0Njc1OCA5MzVhYzIyZjBiM2YwMjZlNTNmOGRiYzdjYjFiYzlkNjUxMzcxNjJlIHJlbGVhc2UyNC1tYWludAorNDY3NjAgNWYxOTU0NDNlMDBhYTkwOWM5MDVmZDE1MWMzOWZjZTc4ZWRkODQ5MiBsZWdhY3ktdHJ1bmsKKzQ2NzYyIDRlNzk4Y2FhMDgyZTVjZGQxMmEyZDdlMWY3MmZjZWUxYjdiY2MwNTkgbGVnYWN5LXRydW5rCis0Njc2MyBjMjAzODQwNTdhMDZjMjdiNzM2MjU1YTBiODJiODRkMTlkYTU2NTk0IGxlZ2FjeS10cnVuaworNDY3NjQgYzNjNTJmMTU5OTk5YWU5NDYwYWZkZGI0ZDYzN2NjMTIyMWY5MGZhOSBsZWdhY3ktdHJ1bmsKKzQ2NzY1IGVjYTRmZTEzMjk0MGJkM2M1MmFhNmRiMTEwZTg5ZWI0MjM1NjEyYzMgbGVnYWN5LXRydW5rCis0Njc2NiAyZWEyNjNiNjI4OTcyZTQ1MjczZmQ5ZmRlYjhiZTFlZTk2NjViNjI0IGxlZ2FjeS10cnVuaworNDY3NjcgZGViYzhkNzgzZjg2OWU1YThjOGE3Mjk4ZjcyNDBjYWMxY2Y5YTI3NyBsZWdhY3ktdHJ1bmsKKzQ2NzY5IDBhMWJhZDMyYWJmZTM5ZDlhMGRjMGJiMjZjYzRjNTBmNTZlYjgwZTEgbGVnYWN5LXRydW5rCis0Njc3MyA2N2Y0MzBkOTJiMzhlNWNhNDRjMjJjNzYzYTZmNDMxN2Y5YWZmODM0IGxlZ2FjeS10cnVuaworNDY3NzYgNDY1OTlmYzQ4NmU4ZmRhYWYyMWY4YmI4M2I5YTg4YjRkZjIwNGYwNSByZWxlYXNlMjQtbWFpbnQKKzQ2Nzc3IGM1NzMyMWM4NDIyNmM5MTY3OTZhOGVkNWMwN2VjM2I1ZWQxNmIyNmUgcmVsZWFzZTI0LW1haW50Cis0Njc3OCA3N2I2NTg5ZmFkYjk3ZDg1ZTBjNjQ1YzgxNWM5ODlmMzRlNTU2NGJmIGxlZ2FjeS10cnVuaworNDY3NzkgNGVmMWM2ODViY2JkY2U0NDQzYjMyOGFlMDdjOTc3NzAzOWZmMzBmNSBsZWdhY3ktdHJ1bmsKKzQ2NzgzIDA1YTQ5Yzg5ODVmYjA5ZjQ3NWM3YTJhOWY0M2I5ZDE4M2E5Njk5NzYgbGVnYWN5LXRydW5rCis0Njc4NCBhYzI1ZWVlOTAyNTQxNzUxMjFiY2VhMTU3NjM1ZTllZGYxZjkyZDc2IGxlZ2FjeS10cnVuaworNDY3ODUgNzJlMzdhZGE0MTcwNzJmYjFhMTMwMzA4Y2U4ZTMwZTNmMGI3YWNhYyBsZWdhY3ktdHJ1bmsKKzQ2Nzg3IDcwYWFjMmI5M2UwOWEzYTQ4OTAwYjI1YmQzYmM4ZDViYmVjZWMyMGQgbGVnYWN5LXRydW5rCis0Njc5MiA2ZThkOTk3MTgxNzAwZDQxYzIyMzI2ZmNkMzQ5ODI4ZTZjMWNiOTg3IGxlZ2FjeS10cnVuaworNDY3OTQgMTM1ZDE1ODZiMzVkNTRiYWM4MWQ3MWZhNDZlMmQ2YTc5ODQ4MjM5YyBsZWdhY3ktdHJ1bmsKKzQ2Nzk1IDFjYWZiY2Q3ZjU1Y2NjYTkxYzQwODViMWY1YTZlYTVhZjlhZjJhZTUgbGVnYWN5LXRydW5rCis0Njc5OCA3NmFkMTE4ZmZlM2I1Zjg1NjI4Njc1OWYwZWRjNzUzZDQ4ZWY3YjQ4IGxlZ2FjeS10cnVuaworNDY3OTkgNWE3NDE5MzQyOWYwNjRlMTI1ZGU5MzYyY2MxODYzNjQ0ZDhiYTQyYSBsZWdhY3ktdHJ1bmsKKzQ2ODAwIDA3ZjI0MTk3Yjg3Y2Q3MGQyMTE2OGFmMWExMTRjNWYzNmNhY2ZjNDAgbGVnYWN5LXRydW5rCis0NjgwMSAyNmE5N2U1YmRmMjEyMTUxMTAzYTdiODMwYTQ1MzdlYTE3NDY5MWExIGxlZ2FjeS10cnVuaworNDY4MDMgYjEyOWE1MDI3MWFkZmVjNzkyMDYyMzZjYzJlYzUzOTQ0YmVmY2U1NCBsZWdhY3ktdHJ1bmsKKzQ2ODA0IDE4MjhhZjVkY2M5OTQ0YTJmNzg1NWI3ZmNiMTY4NjRiNzhiM2JhOWQgbGVnYWN5LXRydW5rCis0NjgwNSBiYTZlZWJmN2M3MTlkZmI1OGE1ZTM5NTRhOGNlNWIyNGJmYTM4OTA5IGxlZ2FjeS10cnVuaworNDY4MDYgMTZjNzk4ZThlYWUzMjdiODVhNDYwY2JiYTFjZWJmYjQ0MTk3NjM5MCBsZWdhY3ktdHJ1bmsKKzQ2ODA3IDQ5M2ZiNTc3OTMyZjJkODgzMWE0M2I1MzE5YzRlYzk3ZjI4YTE3ZTkgcmVsZWFzZTI0LW1haW50Cis0NjgwOCA0MmZlNmRlMjQ2MDJmZDQwZjQyZTM5M2VkMTM0NDFjZjU0OWEzZWU3IGxlZ2FjeS10cnVuaworNDY4MDkgYWQ1ZDQ3MzViZWRjODQ2YzZhZWYyMWMxMDJlY2RiY2NjZWE1YzMyMSByZWxlYXNlMjQtbWFpbnQKKzQ2ODEyIDY3NDUwZGIyNmY4MTY3ZTc4YmJjM2UwNTA5NzA4MTQ3ZDU1N2NiZTUgbGVnYWN5LXRydW5rCis0NjgxMyBlMTVmYWZhNDEwN2QyMGQ2YjBkNDE5ZGZiN2JmM2RkOWIyZGU4NWMzIHJlbGVhc2UyNC1tYWludAorNDY4MTQgMDhiMjRjODhkNTE5MDEwZjUxMzNiODM5NDM4N2MxMjc2ZTQ4NGY1ZSByZWxlYXNlMjQtbWFpbnQKKzQ2ODE1IGU3ZDA4NGNmNjViYjliNDA4NDBjZWU5MzNkYWYxYmJjNTUwYmE0MzggcmVsZWFzZTI0LW1haW50Cis0NjgxNiA0NTRhYTBlYzBlYjdiM2E2Y2IzNDFjYzIxMDMwNDZhMzI0M2FiNmUxIHJlbGVhc2UyNC1tYWludAorNDY4MTcgODIzMzFmMTFhMTU2MGJmZTNjZWY0MTk4MWJiYTk0YTRkNWZkZTBlYyBsZWdhY3ktdHJ1bmsKKzQ2ODE4IGUyZDJkYzUwNjUyODc3OWJiZDI1ZDY5NTAyNDFhZGQxMzNhNzYwYTAgbGVnYWN5LXRydW5rCis0NjgxOSA0MjgwODUyNjUxMWM5YmI0OTIwYjFlMTA3MjIxZjhlYWQxNzNlZmY2IGxlZ2FjeS10cnVuaworNDY4MjAgYjIzZWViODAyNzgwNTIzYjY1NDk2ZTRiYmY1ZWE2YzgyNjJiM2VhNiBsZWdhY3ktdHJ1bmsKKzQ2ODIxIDMxMjUwOTliMzQ5NzFjMzBjNzY5NzgzZWQzOTAwYTZlNTFjZWEyMTYgbGVnYWN5LXRydW5rCis0NjgyMiAyZGQxOTcwMTQ2MTIyYWRlY2VjODc2OTI2ZDI0OGI1NTI2NWFhZTgxIHJlbGVhc2UyNC1tYWludAorNDY4MjQgYWE1YTFiY2EyOGRkODhjY2MyZGVjMTRiNTllNDNhNGQ4MWU2NzBmOCBsZWdhY3ktdHJ1bmsKKzQ2ODI1IGNkNWYyYzViYWI2NTNiNTU3MzZlNzczZWFlMzg1YWI0MzJjMmY4ZDEgbGVnYWN5LXRydW5rCis0NjgyNiA1MzhjZjE4OGY4YTZjYmMyMjA4YTUyMjYyZWI5YWJkYjlmMjYwNjQxIGxlZ2FjeS10cnVuaworNDY4MjcgYmMwOTExODFiODQxMzk1NTA3YTc3ODAyMWY0NTk1ZjFiMWU0YjI0YyBsZWdhY3ktdHJ1bmsKKzQ2ODI4IDAxNDI1MzZiNTJiNjRiM2E4MzZhNjI3ODA3N2Y2ZjA1YmNlNGJjMTkgcmVsZWFzZTI0LW1haW50Cis0NjgyOSBjNWFmZDQ0MGE0ZDA5ZDBkZTBjNzczN2U1MzcxY2QyZDM1ZTcyZTdiIHJlbGVhc2UyNC1tYWludAorNDY4MzEgOTI0NDBkZTg2OGU5M2ZlZjEzYjMzODNiZTljYzUxMGU5N2ZiNGRmYyBsZWdhY3ktdHJ1bmsKKzQ2ODM0IGExZGQyNWVjMmY1YmM2NjU1OGMzMzg5ZGFiNTViMGJmMzEyZTc5ODcgbGVnYWN5LXRydW5rCis0NjgzNSA3MzY2NWY2ZmVjMzE1YWVjZjMwZGNmN2UzMWFmNDY4ZmZhN2Q5YjQ1IGxlZ2FjeS10cnVuaworNDY4MzcgN2IzMThlOTZmODBhYTk0OGRhYTQwZjFjYTA3MWU5OWUxYjNhMmNlOCBsZWdhY3ktdHJ1bmsKKzQ2ODM4IGI4ZjIyODUxYzFmZjFlNTk5MjRjNWU3YjI2NTgwYjkzYTkwMjY1NTYgbGVnYWN5LXRydW5rCis0NjgzOSAwYjNmZTJiNzM0YTFkZmYxNDA2NTVmMTNjMzBjODNkYjU1MzZlNjQ3IGxlZ2FjeS10cnVuaworNDY4NDAgYmY0ZTQ4NWJlY2YzNzc2MjJiMGZjMmJhZTllMmViZWU3YzJjZDMwZSBsZWdhY3ktdHJ1bmsKKzQ2ODQxIDE5NWEwZDNlZWNkNDVlYjc0M2FiMjA0YmY4YTJlNjMwN2ExZTYzODQgcmVsZWFzZTI0LW1haW50Cis0Njg0NCA5ZDg0NzhmNzMyZDVhZGM5MWYxYzdkYzhjYjI5OTQwZWZmMWI0NzdjIGxlZ2FjeS10cnVuaworNDY4NTAgOWE5NDQ2NzY3MzJhN2RiMGU0MGJiNjVjOGRlZjY2NWMzMzI4Mjg5YyBsZWdhY3ktdHJ1bmsKKzQ2ODUxIGU4MDA5N2JmNzNiNjBmYWQ4ZTdmMTQwZjMwMzY1ZDEzNTYzYWVjY2YgbGVnYWN5LXRydW5rCis0Njg1MiBlNjE1NzU1Y2E4NzI1ZmIwYjlmOGZjZDcxNWNjZGQzOWNiNTZlYmNiIGxlZ2FjeS10cnVuaworNDY4NTMgMGE4YTM5MmUxZmFlY2YzMGY4MTM1M2U4MzE3MjUwZDM5MzhiNTZkNyBsZWdhY3ktdHJ1bmsKKzQ2ODU0IGFmMTc0MmE4MDQ5ZWM3ODg2ZTg0ZDUxMDVlZWY4OTNmYzIwZjRiMGQgbGVnYWN5LXRydW5rCis0Njg1NSA1MDFlZTJhMDVmZWM0YjhmZDBkZjViNmMyODhlYWI3MmIzNWQ4ZWU5IGxlZ2FjeS10cnVuaworNDY4NTYgYWRmMjA4OTJkOGNmYmMwY2VmZmRjOTdiZGIxNzdmMWFhYzk5M2FiZSBsZWdhY3ktdHJ1bmsKKzQ2ODU3IDQ5MDI2YWY5ZDFkNzljNDFhMGE3YWE2NGIyZmViZGJkMTM0NTNmYTQgbGVnYWN5LXRydW5rCis0Njg1OCBlODQ2NGFmZWY0YTQxYWE5YTdiMmY2MTVjMGNjMzFiODgwZDcwY2JlIGxlZ2FjeS10cnVuaworNDY4NTkgMWIzYjZiMTk4MmFhY2QwMzE0ODg4ZWZmYjgxYmJlZDVjNjUxNjczNiBsZWdhY3ktdHJ1bmsKKzQ2ODYwIGFiMjUzY2Q0OTdkMjEzNzY3MzAyYmJlYjZhMjVmODhhMmMwMDA0YTggbGVnYWN5LXRydW5rCis0Njg2MSBmYzRhZmVlNDBjMmIzYjg1OGE5NTk3NGJjMzQxNzg1MTkzNzM3NWFhIGxlZ2FjeS10cnVuaworNDY4NjIgYTc4OTM5MGQ4ZWE3ZWRkZTdkMDYzNGU3Y2FhODQ1NWFiN2E4OTRjMCBsZWdhY3ktdHJ1bmsKKzQ2ODYzIGI1MGFiMjg4YWUyN2ZmNDg5NTcwYmUzMWI4NmEzMzY4YzM4OTFkZjcgbGVnYWN5LXRydW5rCis0Njg2NCBkNjdkZWQ3YTI5MTRlNGNmM2Y5YzE1YTE4MjQ3MGFiNDMxYWRlMGY2IGxlZ2FjeS10cnVuaworNDY4NjUgZmNhMWU0MjRkMDIzOGY4OTUyYjA4ODNmN2ViOWM3NzQ0NTRkOTkwZiBsZWdhY3ktdHJ1bmsKKzQ2ODY2IGNiZjI3MmY0NzlkMTA3YjMyM2VjYTQwNjM5NjMyYTA5OWQ4ODk2MmQgbGVnYWN5LXRydW5rCis0Njg2NyA1YTk5NGQyNmEzY2Y4OTRiYTlhMTZlYTg4NWZhMGI3ZmMwNWE5OTY1IGxlZ2FjeS10cnVuaworNDY4NjggMGFjYzUyZDNmYmYxZjQzNWEzZmMzYmU3YjJiZWUxODdiNzlmOGM4YiBsZWdhY3ktdHJ1bmsKKzQ2ODY5IGU2YzgwMGE0NjNiMTMxMjlkM2M3MTgwMmNhYTVkNDM3ZDMxNjFmZjggbGVnYWN5LXRydW5rCis0Njg3MCA4YmE5N2NjYmY5M2E4M2Y2ZTZiZmE4MDYyZTVkYmJlYmJlODU2MDcyIGxlZ2FjeS10cnVuaworNDY4NzEgNjZjYmNjZTQyMjc4ZjIyZDIxNGI2OGE2ZWIyZWZlYzc1OTg5M2E1ZSBsZWdhY3ktdHJ1bmsKKzQ2ODcyIDFmYTc4ZmQxZTkzMzkxNDc0ZmM4OTUzMTcwOTZlODVlMmU0NDcyZDEgbGVnYWN5LXRydW5rCis0Njg3MyA2MGQ3OWEyYmM5OTdlOGNjMGMzMzA0MDhlMzE3MzEyYjNiN2M5OTEyIGxlZ2FjeS10cnVuaworNDY4NzQgMWExMWE0YTQ5ZmI4NWEzZjk2ZjRlMzRmMjcwYmZiMGZkYjA3OTQ1ZiBsZWdhY3ktdHJ1bmsKKzQ2ODc1IDNlZWU3YmQ5YTBkMDcyYjQzYmRjNmVkNzBjN2Y3NTBlMjQ5YTZkMzQgbGVnYWN5LXRydW5rCis0Njg3NiA0MTU3MGYwOTlhNGMzZTY1MWY2YjJkNTdkNzljMDliNjcwNzY2YzFjIGxlZ2FjeS10cnVuaworNDY4NzcgOTJkOGNkYzRiOTBjMDJjNGQxNzVmYTZhNDcwYTczNzk4NTEyNjQwNCBsZWdhY3ktdHJ1bmsKKzQ2ODc4IGYxNGFiNzBjMzIwZTQ4ZmQyYjUyZTMxZmM3YTg3YmMyNTA3MDVlNmYgbGVnYWN5LXRydW5rCis0Njg3OSA2OWU4OWMyOTA0NGUyYmRkMGZiOWI3NTUzYjBmOWI1ZjkzMmZhNzc4IGxlZ2FjeS10cnVuaworNDY4ODAgNDdkOGQxOWNjYWRjNzA1MmJhOGMyYjUyNDY5YTAxZWM1MzA3YjRjOSBsZWdhY3ktdHJ1bmsKKzQ2ODgxIDc5OTgzY2Y2MzRjMDI1YWI0YTVlNzFlZTg3ZDdjOThmMzQ4MGU4YjAgbGVnYWN5LXRydW5rCis0Njg4MiA0NmYzZWI0NzRjODQyZDBiMDBhZTkyOTFjYjM1N2Y3NjExZTI5YTRhIGxlZ2FjeS10cnVuaworNDY4ODMgYTkxZTczOWNlMzMzMjVmYTRhYWYxMDAyNGZjZDhhMzg4NzNkMDk2ZSBsZWdhY3ktdHJ1bmsKKzQ2ODg0IDE4OTMwNGM5ZDA3ZWFkYTRjZDRjMjE5MTcyYWI1ZWU1OTBjMmY0OTAgbGVnYWN5LXRydW5rCis0Njg4NSAyYWIwMzk0ZTZlNDliNGYzNTNiODZiMDNjZWY5NjNkNWE1M2U2ZWQ2IGxlZ2FjeS10cnVuaworNDY4ODYgNjE4ZDA4OGQ5NjY4OWNmN2RkYWU3ODNlMmM0YzhmOTM4NGNiYmNjZCBsZWdhY3ktdHJ1bmsKKzQ2ODg3IDFkYTg0NTZlYmQ0ODcxOWE0ZWJkNzg3ZTRmYmIzNTY1YzMwMzA5MTUgbGVnYWN5LXRydW5rCis0Njg4OCBkNTc3MWEzODliOGViN2E5ODU3OGNkODA1ZWRkM2UxMjYwZmQ1M2Q5IGxlZ2FjeS10cnVuaworNDY4ODkgMTcwM2VmZGE1Nzc0MmQxODFiZTA0NWYyMDcwOGQ2NWQ5MmRiOTlkMSBsZWdhY3ktdHJ1bmsKKzQ2ODkwIDUxNzMyZTgxYzc5NjE0NjdmNjgzMmViNmZiOGMwM2E4N2UzY2YzOGYgbGVnYWN5LXRydW5rCis0Njg5MSA4ZmUzNzNmYjIxZDQzMGM0YTY0ZWI0NTRkMDFlY2JkMmRmYjViOTQ2IGxlZ2FjeS10cnVuaworNDY4OTIgOTcxYWJmM2FlY2Y0MTE1OGNjNzBjMWRiNzkzZDE0NTRmMTVhZGUxOCBsZWdhY3ktdHJ1bmsKKzQ2ODkzIDk3YjYxZDZmNmI3NjgxNjIwNDdhOWM2NDg2MWExN2M1MGM1MzM4MzYgbGVnYWN5LXRydW5rCis0Njg5NCA0Yzc0ZWM4MzFhNmMzYmZlZTNmODQ0OTNmYzgwYmI5YmI3NmViNDJkIGxlZ2FjeS10cnVuaworNDY4OTkgMzgxYTcyYWI1ZmI4Mzk0YTJkM2VhMjhiZDcwYzEwMGQ2MzZjN2QxYSBsZWdhY3ktdHJ1bmsKKzQ2OTAxIGM4NjE4NDczY2RjNmU4MTZiNjljYjBjYWUwYzhhNTQ5MmQwZDMyZGIgbGVnYWN5LXRydW5rCis0NjkwMiA1MWYzMzQyYjcwZDNjZmE3MzllZDIwZmRmN2Q0NDVlMGMyMmM2NDMyIGxlZ2FjeS10cnVuaworNDY5MDMgNzY1ZmIxY2NjM2Q4OTRkYmRiMWFkYTkxZDNmZTk0MzY4YjYyNmRjNyBsZWdhY3ktdHJ1bmsKKzQ2OTA1IDliODUwN2NmYmU5NTAxMDU5ZjI3NzBmY2VkMjk1ZDFjOWI3YTdiZGIgbGVnYWN5LXRydW5rCis0NjkwNiBhNDU1MmYwOGQ1M2IzNDI3M2VmNGNjNDQ2NTc5NThlNzQ1OTNmMTg3IGxlZ2FjeS10cnVuaworNDY5MDggOWM1MmVmY2FmZjY1MWRlZTg1OTIxMzdmOTljN2YzYzczNzQ1NDI5NSBsZWdhY3ktdHJ1bmsKKzQ2OTA5IDcwYjE2NmNhMWM0OWUyMzc4ODU1MjJlODI0ZDgwZmE5ZGU4ZDRmNGQgbGVnYWN5LXRydW5rCis0NjkxMCA5MTRkYTEwMzZlZWQ1ZGI2YjA2OGE2YzgwOGVhOGNmY2QzMmU3NTZjIGxlZ2FjeS10cnVuaworNDY5MTEgOTM2NDI5ZTEwYjg3OTZlYjZiZWMzMWFmZDMwOTUwZTI0OTI5NGJiMiBsZWdhY3ktdHJ1bmsKKzQ2OTEyIGVhMzcyM2IyZDQ2YmQxNzgwNDY4NGJiYWQyODgxMWUxMGJlNjc2MGIgbGVnYWN5LXRydW5rCis0NjkxMyA2NDU2MDkyYzEyMzVhMTcwMWE3NjRhN2NlZGY5NjdiZDQ0MjFiYmZlIGxlZ2FjeS10cnVuaworNDY5MTQgZTFiMTg0NzljZTkzMDdkM2Y1ZmE4MTI0OTEwYTUzZDRkODhjM2NjOSBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTE1IDk4MTIyZDIxNzZmMTQwYTFmNTAyNzdmOTMyN2YyMjYyNTk5NWQ3YTIgbGVnYWN5LXRydW5rCis0NjkxNiA1ZGIxZmE2ZTk2ODE4MzVmNTJkMGNjOTc0Zjg0MTg1ZThkZDI5NjBmIGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MTcgOTkyMTI2YTI5ZTBmZDM4ZDRkZmMwNGRkNzE0MTBhMTFmZTBhMWQ1MSBsZWdhY3ktdHJ1bmsKKzQ2OTE4IDRlNzRkZjk1OTUxOGE0YjczODNjNmVkNGVjY2Q2NjZhMjRkZjEyM2YgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjkxOSBmN2QyM2JjYTU5OWZlYmNiZDFlNGUxOWMxMDFmZTgxZjFkM2I0ZWM2IGxlZ2FjeS10cnVuaworNDY5MjAgYTcxNGYyZjEzZTI1ZjIyNzA0ZjE3YWExODI0NDBiZTU1NDlhMjc0ZSBsZWdhY3ktdHJ1bmsKKzQ2OTIxIDNlOTZlNTAyNWQ5ZjdhYWU0YjA0ZjM2NTc4NmNjNTc2ZGE1MjE5YWUgbGVnYWN5LXRydW5rCis0NjkyMyA2ZjJmMThmODYzODc0M2Q0OWFkNDdkMTI5MWU0NmE1ZWEyYTViYzU2IGxlZ2FjeS10cnVuaworNDY5MjQgNmYzMDYxMWYyODNkY2JlNzJlZjc2MDkwNmY3MDVmMTgzYmVmNDc5NyBsZWdhY3ktdHJ1bmsKKzQ2OTI1IDVkNjIyZTQ4M2ZjY2ZhNjJkZjU3YjQ0YzM0NDkzZTFjMzI1Njg5NjggbGVnYWN5LXRydW5rCis0NjkyNiA1MTI1MDc2NmQ2ZjVkMjUxMzIwMjA4NmI2ZmNiOTRiODUyYzFhZTc0IGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MjcgYmIxZjAyZTk3MTFkYTVmNTNlYWQyN2I3MjIzZjVjNGFhMDRiYWEwNCBsZWdhY3ktdHJ1bmsKKzQ2OTI4IDIxNjcxMDUxMjNlNDQ3OGJhYWM3NTNjMTQ5NjQ3YWJkOTliYjQ5YWYgbGVnYWN5LXRydW5rCis0NjkyOSA2ZTBjMGM3Y2YwNjg5YWQ0ODBjYzVlZmUxNzJhNWZkMjBlYTljNGIzIGxlZ2FjeS10cnVuaworNDY5MzAgNzBjMmVmYTAwMDA3OGYyOWM0ZGNlZDI1ZjI2OTk1MWM1MmM4ZjIzZCBsZWdhY3ktdHJ1bmsKKzQ2OTMxIGEyNDkwZjc5MzFkMzExMzllYjVkN2RmZWIyMGY0Y2E5OTFiNDgyN2QgbGVnYWN5LXRydW5rCis0NjkzMiBiYjY4NGEwYzIyZDk2MzRhMGNmMGMzNzYxYjBmNjg5Zjk2ZjI5NDc2IGxlZ2FjeS10cnVuaworNDY5MzMgNzRiZjU3M2JmZjRjMzVlN2E4NWUyOWU4NTExOGFhYzIyMmRhMWMyOSBsZWdhY3ktdHJ1bmsKKzQ2OTM0IDBhNWNmMjU5NDVlMmI2NzVjZDUyZGRhMTljMDk0ZDNmMmE1YWI4MWIgcmVsZWFzZTI0LW1haW50Cis0NjkzNiAzZTVmZDJiNzBlNWE3MGQ1ZTU3MTM5NGZmMTUyMWMzMTRmNzY0ZDljIGxlZ2FjeS10cnVuaworNDY5MzcgZWNlOGE2NzUxZGI3NDg4YjdiODA3ZjZlMzE4MTg3MDc5NjdlMmVlMyBsZWdhY3ktdHJ1bmsKKzQ2OTM4IDZmN2U2NGI3MmE1ODc5ZWE2Y2RjODAxNTI2ZmNlN2ZlMTI4ZTdkNTMgbGVnYWN5LXRydW5rCis0NjkzOSA0NTU4OTE2Yjg0MWYxY2ZhNzgyOTkxOWQ3M2M1YjJkNThiZDBiNzRiIGxlZ2FjeS10cnVuaworNDY5NDAgNjJjZjZkNThiYjUzZmI2YmRlYWEwNzBhNTViZTU0YzZlNTE3ZTViOSBsZWdhY3ktdHJ1bmsKKzQ2OTQxIDU3OTZhY2ZiYjZkYTE2Nzg0YmQ4MjExNjUwYmZjMDRhNWM5MGZlMjQgbGVnYWN5LXRydW5rCis0Njk0MiBiN2EzNjIwZDNkYmI3NjcwNWQyOTcyZjYzYTQ0NmNmNDMxYzliNDgzIGxlZ2FjeS10cnVuaworNDY5NDMgNmQ4MDc2ZDM4MDU5N2E2NjlkZjRjMTJhMjFhYzdmYWVhNWZlMzBlZCBsZWdhY3ktdHJ1bmsKKzQ2OTQ0IGQ4NTdhMzIwNzVkNGJlYzA3MTI5ODNjM2EzYzM5Y2RlZGJiMWMxODMgbGVnYWN5LXRydW5rCis0Njk0NSA1NDljNTQ3NzAwYWY4NzI1ZTUwNGViZGMwOTVkMTU4NWY3ZGQxOTVlIGxlZ2FjeS10cnVuaworNDY5NDYgMDY5ZmYzYTcwNjk0MTA0YTQzZjFjNjFmNDkxZmI2ZGFjYzI0YjNlYSBsZWdhY3ktdHJ1bmsKKzQ2OTQ3IGM5NTlkZTY0YThkYTE4N2UxZWU4N2UxNzYzODAwYzk3NDY1MjkwNGUgcmVsZWFzZTI0LW1haW50Cis0Njk0OCA0Mzc3YjE3ZGRiMmNmZTUwM2RhYjgyYzVlNzQ4ZTNjYzI2OWI2ZTRkIGxlZ2FjeS10cnVuaworNDY5NDkgMDY5MDYyODU5Mjk4YzUyNDJmMWM5YzZiNTk2ODczNTE0MDU1OTY2MyBsZWdhY3ktdHJ1bmsKKzQ2OTUwIGM1MjBlZWNlMDFiMDM5Njg0YjVjODJiN2E3YTU5YzdhZWM4ZDRjYjMgcmVsZWFzZTI0LW1haW50Cis0Njk1MSBkNjg3NzgzNTc5MWQ3YzY0MmEzZGYwOTJhNWM4NmQ5NDY3NWU2Nzk2IGxlZ2FjeS10cnVuaworNDY5NTIgYjdmNGJhNjAxZGY5N2FmN2NlNWMzYWNjMzVmMjIwMGFjZmQxYjA0OCBsZWdhY3ktdHJ1bmsKKzQ2OTUzIDkxN2JlZWE1NTU5NWQ5YmIwNjUwZTBjYTk3NTg0ZGM2OWQ2YWJmZmMgcmVsZWFzZTI0LW1haW50Cis0Njk1NCAxNmUwNWM2MDYyNzVlYjg4ZmY1ZTgzN2Q4YjliN2M4Yjc3MjVhZTk5IGxlZ2FjeS10cnVuaworNDY5NTUgZDFhZWM3YjRkYmI4NjkzZjQzODkyZmY3YTZhYjE4MTJlMjYxYzVmNSBsZWdhY3ktdHJ1bmsKKzQ2OTU2IDAzYzA1Y2FiNWYyMTI3N2E5ZTFiMTliZjdjZGI0OGE1ZThkYzZhNDUgcmVsZWFzZTI0LW1haW50Cis0Njk1NyAwZjc2YTU2ZDUwNmNjMjAwYzk0MmRiNDlhYWUxMDFhYWFjMDFkZTM3IGxlZ2FjeS10cnVuaworNDY5NTggMGNmMmViM2NjNTBhNzNiNmU3NDYyNDgzNjdkMTY4ZDZkMGU5ZDQ3NSBsZWdhY3ktdHJ1bmsKKzQ2OTU5IDg2ODA4NTNlOWVlNDA5NzYzZmUxOGQwYzMxZjA4YjQyNWU4ZGFlZWMgbGVnYWN5LXRydW5rCis0Njk2MSBkMTVkZjAyZGIxY2MxM2Y3YWM0NDE4YTQ4YTEzZjk0YzdhNTJiMGUxIGxlZ2FjeS10cnVuaworNDY5NjIgZDdiYzY0NzBlODM4MzVjYmRlMGYyMjc2ZmRmM2Q0MjQyODEyY2RmYSBsZWdhY3ktdHJ1bmsKKzQ2OTYzIDMyYWRhYWQ1OWZiMzdkNzlhYjM1OTk1NDIxMTgyNWYxNmMwOTdjYTIgbGVnYWN5LXRydW5rCis0Njk2NCAwYThiODUxYjAzNzUyMjllYmVlMDYzZDYxM2MxY2U2YzgxOWZjMDc0IGxlZ2FjeS10cnVuaworNDY5NjUgNzdiMDFjOTMzMzA4OGFmYTZlNGMxZDQ3YzQyMTgzMzM4MjVjMDgwNyBsZWdhY3ktdHJ1bmsKKzQ2OTY2IGE5ZjliNTA3NWJjMGNmMDNjZWNiZWM5NWQzOTFkNWZiYmNmNTFkNWMgbGVnYWN5LXRydW5rCis0Njk2NyBmZDQxMmEwMGEwN2RmNDU5YzJhYzM0OTAyNDIxOTUzMDQ5ZWMyMzgzIGxlZ2FjeS10cnVuaworNDY5NjggZDRiMWY5YTMxYzI5Njk4NTAzMzNkMjVkNWU0ZmI0NjI1YjA3NjExNSBsZWdhY3ktdHJ1bmsKKzQ2OTY5IDk5MzdmMDlkNzZlM2EwZGU4YWRmYjk0NjVjM2FjY2JlMjU4NjViZGUgbGVnYWN5LXRydW5rCis0Njk3MCA3OTNmMDI2OTkzYmIyOWQ2Y2M5MTU5MjY1MzI5ZjIwNmVkNjcwYmVjIGxlZ2FjeS10cnVuaworNDY5NzEgM2I2NWVlZmJhZjc2ZTNkYmQwZmM3ZGE4YTJiMWMyNzAyOTg4N2U0ZCBsZWdhY3ktdHJ1bmsKKzQ2OTcyIDM0YjY5NzA0MTE5MWFlNzFlMjY4N2I0NjVlNzUzNGZhYWViNTc0ZDQgbGVnYWN5LXRydW5rCis0Njk3NCBjNzdiZTVjNDA2M2IzMWU0Yjg3YmQ3ZjNiNjY5YThlMjVmM2I1NWE1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzYgOTkzODc3NzRlYjFkZGExMThlMjg3ZjZiMDExOGVlNWE1YjZhNTM4NiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc3IDU0ZGYzNWU5YzY5OGE3ZjhkODViYjFlY2JmYTBhM2M3MmM1NGI5NWEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk3OCA5ZTQ4MjgwMDBjZmE5MjhiYTExOWQwZjVkZjFmZGEzYzE2N2QzZTQ1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzkgN2RiYmU3ODZmZGNkMjNkZmE3OWI4YTVjMDM4MDVmZWM0NTRjYzY5YiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTgwIDM3MzA0M2ExYmRmYmI4NTAxZTk0NWNmOTQ2NjEwNTYzYjA0NGNlYTQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk4MSA5MmViNmVkMDNjMmUxY2M4NTAxMjI4NDg1ODg0ZjA4NjdhN2IwZTdlIGxlZ2FjeS10cnVuaworNDY5ODIgY2FjZDQ3YTYxZTc5NmRmYjM2NzQ0MTdkNDAyNWNiMzczOWYxMDE0YSBsZWdhY3ktdHJ1bmsKKzQ2OTgzIDFmOTQ3ZjEzNDFkMTk0N2IzMmFiZGYwOTJkMThlY2VjYTQ4NmJmMDkgbGVnYWN5LXRydW5rCis0Njk4NCA5YTlkNTc4MmU0MzY3YjlhMDE4ZGM2ZjQyOTM3OWU1MDlkZTU0MDZmIGxlZ2FjeS10cnVuaworNDY5ODkgOWU4MjdmZDgzMWQ3N2M4NDhmNzY0YWFlY2JhZmIwMGVlMGI4M2FmMSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTkwIGI1ZWZhMjNjYzk0ODhkN2FkMzY2YWZkYjAwZjY0NzJkZWY2Mjk2Y2YgbGVnYWN5LXRydW5rCis0Njk5MSBlNzZiNmYzYTQ0MTkzOTM1MDI0MzkzZDA1MWJiMzgxMGM3ZTkyZWQxIGxlZ2FjeS10cnVuaworNDY5OTIgNmI0ZGE0ZWU3MTQ2ZWI5MDY2YmI5ZThjY2RmOGI2ZmRiYTc0YzI3ZiBsZWdhY3ktdHJ1bmsKKzQ2OTkzIGUwYzNmNWE0NDQwZmQ0MzQxYmM3ZDQ2ZTQyNWEwZTU1ZDc0MmIzYWEgbGVnYWN5LXRydW5rCis0Njk5NSA1NTdlNjIxMjZjYjFkYzIyZWI4NWIwZTU5Njk0MWE2ZWRkMDYwZWU0IGxlZ2FjeS10cnVuaworNDY5OTYgYjJhNGJlNDczNzI4MjMwMGM0ZjBmNTU1N2RmNTZlNWY1YjkzZGE4YiBsZWdhY3ktdHJ1bmsKKzQ2OTk4IDhhNTBkOGU5MDE4Yzg0Nzk1NzAwYWVkOGQ5YTdkOGMyODM5MmYyYTMgbGVnYWN5LXRydW5rCis0Njk5OSBmNmRjNTVkMzJmNzAyY2UwOWNlNjQ4ZTRiYTI4YTFiMmUyNGJjZmU4IGxlZ2FjeS10cnVuaworNDcwMDAgYWZmNjYyOWQxZDFjNDExZmZmNDY0MmNhMWQxOTI5OWI5ZjRjODMyOCBsZWdhY3ktdHJ1bmsKKzQ3MDAzIDAzY2Y1ZGQ3YzkwNjE1YmY4N2ZmZDhlZDk2ZTczMmE4ZGQyNDcwNjggbGVnYWN5LXRydW5rCis0NzAwNCBhMGIwNjJmZjI5MzljOTJlYmUzN2NmYjVkYTc2OGQ3OGJjZTRiYzI5IHJlbGVhc2UyNC1tYWludAorNDcwMDUgYzUwMjY3MDM5MDg4ZTAyMDk0ZDdkMmNjMzkzM2FmYzgwMWVjZjJmYyBsZWdhY3ktdHJ1bmsKKzQ3MDA2IDAyNjUwYTQ3ZWU4YmUzOTM4NDI2OGZmMzgzYjBlZjk5NTEzNTRjMTAgcmVsZWFzZTI0LW1haW50Cis0NzAwNyA5NmUxYjBjOGZmOWE4ZGExYWEzMzM4MmMzMTc5MzUzNDUwMWM0OGJmIGxlZ2FjeS10cnVuaworNDcwMDggMTI1OGU5M2JiMWQwMDU5NGQ0ZDEwMmI3ZjRjMDBkNzc5MjkxOGY4ZSBsZWdhY3ktdHJ1bmsKKzQ3MDA5IDQ4NGQzZDViYTdmOWE1YWIwMzMwMWU0ZTJiZDY1ZmUwNDc2NGVlMzkgbGVnYWN5LXRydW5rCis0NzAxMCBiOWQxNDQwYzJkZDE2MzFkNGQwODc2MDdjYTk0NzljZTdkNjhkMWNlIGxlZ2FjeS10cnVuaworNDcwMTEgNmE3ZjFmMTJlYWFmN2Q0NGU4ZDNjOTMzNmUyMzFkMWY4NDQ0NmEwMyBsZWdhY3ktdHJ1bmsKKzQ3MDEyIDQxMWQwYTM1M2ExNWM4NGZkN2UyYjBlNWNmYTY3YzY2NjIzYzZjOTEgcmVsZWFzZTI0LW1haW50Cis0NzAxMyAzMGQyMzMzODUyZDUwZjAxZDNkMzhjOWVlMDc4NjI2YjFiNjhmNjY4IGxlZ2FjeS10cnVuaworNDcwMTQgYWQ1YWRkOWUwMzY5NmQzYWJkYWYxNmMwMzMxYmRmNjQ1MTE1N2M3NyBsZWdhY3ktdHJ1bmsKKzQ3MDE1IGY0YjQ0MTI1NjQ2Nzg5ZjU0NTkxMDkxNWQ1ZDVhZjAwODg1ZWNjZjEgbGVnYWN5LXRydW5rCis0NzAxNiA5M2NjM2ZjMjUwOTk5OTllYWE1ZThmMjY1MjI5YmQyNjAzODk5M2VjIGxlZ2FjeS10cnVuaworNDcwMTcgYTNjNjFjNjQ4ZmM4MTk0ZGM3OTViYzZjMTc5YjhkOGNiMjAxYjM5YyBsZWdhY3ktdHJ1bmsKKzQ3MDE4IDgwNWY0MTg4MWUyNzBlMzgxMmY5MWQ0NzE5ZWI5NjAwY2QwYjM0YzEgbGVnYWN5LXRydW5rCis0NzAxOSAyODQzYmY3MGE5Y2ZkNGY5OWUyNjM5M2ZmM2NhYWNhNjY3NzZiZWJlIGxlZ2FjeS10cnVuaworNDcwMjAgNjcyOWMyN2QwMWZlOGRiOWYxNDUyY2M4ZDRmMTcwYmY0YjdmYjk4YiBsZWdhY3ktdHJ1bmsKKzQ3MDIxIDExOGM2NTBlMmM5YjNiNDRlZGQyYzhjNmU4NTEwNjMzNTI4OGMwYTIgbGVnYWN5LXRydW5rCis0NzAyMiA0YTc2NjAyNDA0M2FlZWU1OTJhNmMwOTM3ZGUyZGI0YjE1YTBhNjcyIGxlZ2FjeS10cnVuaworNDcwMjMgMGI5NWEwYWFhYWVmOTg2YWI0ZWNlMzE3YzE2N2ExMjJmOGEyYzYxNSBsZWdhY3ktdHJ1bmsKKzQ3MDI0IDBiZjllMzA5OWM1N2JjNzMwZmRiNjViMTZmNWI5NWE1N2U1NmQ1YjggbGVnYWN5LXRydW5rCis0NzAyNSBjNjNkMmI2MjYzYjU4YjcyMDcxMzdiNjY0MDM1YjdiZmU0OWI5M2I0IGxlZ2FjeS10cnVuaworNDcwMjYgNDgzMGQ2MTQ3YWFmMDk5NTI0ZDdjNGFiZDBiZGE2NTlmNDExMmY2ZSBsZWdhY3ktdHJ1bmsKKzQ3MDI3IGE3NDYyMDVmNTk3NTljNzMyOGQ4OThlNzhiOGNkYmU5ODM0MWJjMzAgbGVnYWN5LXRydW5rCis0NzAyOSBmMDg4NWZlMTRkNDJhZWVhMWU3OWI3NDgwNjE3NzNhNWUyOWE1NzA3IGxlZ2FjeS10cnVuaworNDcwMzAgNDA4ZDJhNTk2Zjk5MjM0NTZhNzJjNjk4ODAzNjBkODU5Yzc4NDg4YSBsZWdhY3ktdHJ1bmsKKzQ3MDMyIDViOTg3ZDIxMjMxYmZiNjU0NjYyMzYwMGMzNjU0MjFhNmQ0ZmVmMDUgbGVnYWN5LXRydW5rCis0NzAzMyBmMTllODc3MjgxZTQ5MDM3MTFmMTU3N2ZmZTYzNjA4NmM3Yzc5ZDc2IGxlZ2FjeS10cnVuaworNDcwMzQgZDQ5YjE5OGY1NDVjZDgyZmJmNzM1YTIyOTc5YzMzMmI4YTk3ZWVjYiBsZWdhY3ktdHJ1bmsKKzQ3MDM4IDUyMzc1ZjIwMzI0NDhmZTQ3YjA2ZTU5YTYyYzI5MDU3YmU4YWEwYTggbGVnYWN5LXRydW5rCis0NzAzOSBmODcxNmI3NmE3MWVmN2EwN2EwN2ZkMjg0NTg1ZmIxZDE4OGM3NDc1IGxlZ2FjeS10cnVuaworNDcwNDAgM2FmMzMyZmZmNTI3OWE3YWU1NjRjOWZjNGFjOTMzOGJlNmI2ZWNjYiBsZWdhY3ktdHJ1bmsKKzQ3MDQxIGZkY2NjNmIxNGZhZDZlZGE1NTliYWEyNTM5NmM0YWNhZjg3NGFiODEgbGVnYWN5LXRydW5rCis0NzA0MiAyNmU0YmYxOTVhZTI5MmZkOTg5NDMxZjBmMzJhYzZkMTU5YzQxNGQyIGxlZ2FjeS10cnVuaworNDcwNDMgYTNiYTFhMzdiNTM3NDhiZmE4NDQ0NGEwZGE5Y2QyNTFmNmVlNGEwNiBsZWdhY3ktdHJ1bmsKKzQ3MDQ0IDg2ODEyNmUzYmNmNmQwMmE1NGZiODg1MTQ3MjFlYThjYWU3MTIzYTAgbGVnYWN5LXRydW5rCis0NzA0NyA0ZmZmZTY3N2Y1NTI5NmNiNzlhYmJjNGVjMmJhMzg2N2U4N2RlNjg2IGxlZ2FjeS10cnVuaworNDcwNDkgNzAyM2NlZGNjNWVkMDRhNDViOTljZjdmOGU1YTNlYjE3YjMyODIzYiBsZWdhY3ktdHJ1bmsKKzQ3MDUzIDA1MWNjMzlhODAwODQzMjdkYzBhZGNiZmVhNjk5MWUyZWU0NTdhYmIgbGVnYWN5LXRydW5rCis0NzA1NCA1M2IwNGMxOWZlNDE2Y2NhOTBkODY2MjI1NzA4MGYwOTAzNzhiOGY3IGxlZ2FjeS10cnVuaworNDcwNTUgOWIwZjk0MzBjYmNiZGJiNDk2NWFjNjAyNzIzYmM0MWVmMmMwNDI4MiBsZWdhY3ktdHJ1bmsKKzQ3MDU2IDE0OTFlNTJjODU5NzBkMjUzOGM4NDE3ZjI5ZWM1ZTBjYWZiNTYwMTAgbGVnYWN5LXRydW5rCis0NzA1NyBlM2FjNzM5ZDQ4ODk1NTVjZmQ0NWU4Yzk2ZmI2OGQ1OTIzNGYyOTRiIGxlZ2FjeS10cnVuaworNDcwNTggYTRkZDZiMjA5YjY1YTJhNmU4NmFmZjJhYTE5YmYwYjAwNDE1M2U3OCBsZWdhY3ktdHJ1bmsKKzQ3MDU5IDY5ZWYyM2ZjZjVmODNmMmExZTQwMTM4YjhmYjc2ZTQ0ZmNjMzFkZDIgbGVnYWN5LXRydW5rCis0NzA2MCAxNTJlYzIyYzRlNjk1ZGExMTZmOGI4ZTFhYjU1Njk0ZDE5NDk0M2ViIGxlZ2FjeS10cnVuaworNDcwNjEgNTA2Yzc2ODQ3ZWM3MTYyNWQ2ZTM0OWNlYzI1OTgxN2YzOWQyMDYxOCBsZWdhY3ktdHJ1bmsKKzQ3MDYyIDNjZGRlNDVhNDY4ZDU5YjNiN2M5NGYyYzRiMzY5OTM3ZTBjYWNkNDYgcmVsZWFzZTI0LW1haW50Cis0NzA2NCBjYjcyMjVlODQ4MDU2Y2MwN2YzNTE1ZGEwMjIwOTczZTUyOTA4YjI0IGxlZ2FjeS10cnVuaworNDcwNjUgYWNhMzZmN2YzYWU4N2NhMGEzNzgzOGNlMDRiNGUxOTBhZTU3MDA5MSBsZWdhY3ktdHJ1bmsKKzQ3MDY3IDA0MWFkMDA2ODU3MDExNmZjZWI0MWQzYjA0MTIxNjAwZDU3MzQ2NWQgbGVnYWN5LXRydW5rCis0NzA2OSBlYmVlNTUzOTMwOGFlZTc3OTI0YWQ2NTU4ZDliMTAzZDBhMTZlOTkwIGxlZ2FjeS10cnVuaworNDcwNzAgYWVkODA5NDQzMjA1M2QxNzRmMWRhOTFhNWM5OWI5MzA3YjVhMzUxMSBsZWdhY3ktdHJ1bmsKKzQ3MDcxIDIxMTRlYjczYWViNTE3MjdhYmE0MWJlZjk5ZGZiYWY5NTBlYWMxN2UgbGVnYWN5LXRydW5rCis0NzA3MiA1ODAzNDA4NGVmNDRhZTQ1ZjJiODE3ZWY0OWU1M2FhNGVhN2E0NDQ2IGxlZ2FjeS10cnVuaworNDcwNzMgNjUzNTNjNGRiOGMyMWI5M2M5NWFhYzU1YjNmMDk3ZDc1ODY2YWM4YiBsZWdhY3ktdHJ1bmsKKzQ3MDc0IGFmYzQ3NWQwNTY3ODY5NTQwZjYxY2E3ZDZhMzg1MDFkNjRkODMyZDcgbGVnYWN5LXRydW5rCis0NzA3NSBhZmNiNTgyZDkyZDgzMDQ4NDczNWRjOTQ5N2QwNmI3YzA1M2E3MjkwIGxlZ2FjeS10cnVuaworNDcwNzYgNzg4MTZjNWNmZjA1MDhjNGEyOGI1ODVhNjdmZGRmY2RjYzAwYTM5NyBsZWdhY3ktdHJ1bmsKKzQ3MDc3IGJjZWFhNzcyMGNjNzExY2Q1M2VlZGViODNhNWE1NGY5ZWJhZmMyMzQgbGVnYWN5LXRydW5rCis0NzA3OCBkODQyMjQzMjBmODI4YTBiNmQyODM5MWQ0MDVjMzQ3Zjc5ZjAwOTVhIHJlbGVhc2UyNC1tYWludAorNDcwNzkgOWI0NmE0ZjUyZDBjMDMxNWZmODYyNjg0NzQ3YWRkYzRiYzc4MDcwOCBsZWdhY3ktdHJ1bmsKKzQ3MDgwIDMyM2RhNDc2ZjE3ZWUxN2YyODUzOWZlMDcyMzFmMzg4YmI5MzAzODYgbGVnYWN5LXRydW5rCis0NzA4MSBiYWIwYjFlNmM2ZDQxY2JmZTJlNDZhMzhhZDA4Njc5Yjg0NmE0NmQ0IHJlbGVhc2UyNC1tYWludAorNDcwODUgNjRkMWY2NmEyMzlhNjA5YzQ1MjlmYWY4ZmYyOWM5NTgwNTUxZjM4MSBsZWdhY3ktdHJ1bmsKKzQ3MDg2IDZmMDQyZjViZjk0ZGU3ODQ2OTJiMzM5YWRlOTg5YmFkNTYwNTA5NGMgbGVnYWN5LXRydW5rCis0NzA5MSBjNzUzMjg1NmZkMTc1OTI1MjVlYWY5ZDg4YTBlNGJmMTFmMDY4MDc2IGxlZ2FjeS10cnVuaworNDcwOTIgMTM0MmRmZDUyNzMzOTAwOGVlZWQ0MDgzZTgwYWJmNmIzOWFlMTQ5NSBsZWdhY3ktdHJ1bmsKKzQ3MDkzIDA5ZDE2MDZlNzUyNDljYzAxMjBkZjEyNTg1OTg1YTAzZjRhNjVkOGIgbGVnYWN5LXRydW5rCis0NzA5NCBhZDU5NDkxNTI3MTE2ZDNhMDIyN2E2ZmY1N2Q3MTdiZDFiNWIwZTdmIGxlZ2FjeS10cnVuaworNDcwOTcgYjlhNjRiN2EzMjYxMmRiNjI5ZTk4ZWI4ZGFiOGFhMTU1MmJjYTU0NiBsZWdhY3ktdHJ1bmsKKzQ3MDk4IGI4MmM0MGRjMDhkODJjZDAxNDA2NjVhM2JlYjI1MmMzZDY3MzVjNjUgbGVnYWN5LXRydW5rCis0NzA5OSA4MTY4ZDA1ZjliNDllNjBjNDllNjM0NGNiM2MyOTBlYTA1YWViMWQ2IGxlZ2FjeS10cnVuaworNDcxMDAgZjJjYzE1NmViOTI4ZTNmZGZmZjM5OTc0MGNmNTZjZDgzYWFmZTlkOSBsZWdhY3ktdHJ1bmsKKzQ3MTAxIDU4ZjQxOWQ4YzY0NjFmYjkxN2IwNmNjYzljMjI3Mjk3YjRlNjg3NjggbGVnYWN5LXRydW5rCis0NzEwMyAzNWNmMGY4Nzk4M2VkZWNhODA1OTZkODExZGI1ZjNiMWYzNDMyNjcwIGxlZ2FjeS10cnVuaworNDcxMDYgZjI2NjEzYmQ0ODRkN2RlN2Q1MTY0NjhkZjNmZjNiMjY5ZWU1N2M3MSBsZWdhY3ktdHJ1bmsKKzQ3MTEzIGI4YjIyNTUwYWNhYzAxNDU3MjBjNTM1NTZlYjI2N2M0Y2M3Nzk5N2QgbGVnYWN5LXRydW5rCis0NzExNCA3NDEzMTMwMjlkNjNkOTY5NDQ3M2IyNGUwZmE1ZDAxZTRlZmE3OGYyIGxlZ2FjeS10cnVuaworNDcxMTUgMjI1NDc5YWNlOWE3MGQyNzlhZDc0ZjIzMmU1N2RlMTdhZWVkOTg5MiBsZWdhY3ktdHJ1bmsKKzQ3MTE2IGNlZWE4YTk4NjU4NDQ3N2EzMGM5NDU5N2M3NmRlYmE2ODFkNDNlMGQgbGVnYWN5LXRydW5rCis0NzExNyBjYjgzOTk5NmEzODZlZGEwMTc3YmMwYmE4ZWJiNjk4NjIxOGY4YzNmIGxlZ2FjeS10cnVuaworNDcxMTggNzIxY2VjN2YwMTg1NzQ3N2Y1NmYzNjIwM2UwZWFlZjg5OTQ2ZWI1ZSBsZWdhY3ktdHJ1bmsKKzQ3MTE5IDRkZWE1ZjQ2ZWU5ODU1NDI0OTgwYzVhOTcyZDQzYmFjOGE1MmUyYmUgcmVsZWFzZTI0LW1haW50Cis0NzEyMSBkZTQxMDI1MmI5ZmRhM2I4ZDU4MzM4YmI1MTFlZTNkNzY1NDMxODU4IGxlZ2FjeS10cnVuaworNDcxMjIgNTIyNTBlZWFmNzkxZDY2NDNkZjBiMTM3MzI1MDJjMDRhZThiNDUyZCByZWxlYXNlMjQtbWFpbnQKKzQ3MTIzIDA2MDI3NzFiOGI0OWI3YzMzNDBkZDRkMGJhNDM2ZDdiZGMyOWRkMDggbGVnYWN5LXRydW5rCis0NzEyNSAwOTU1NDZkZGIyZjE2YzY0NzM0N2NjZmMwZjZiMzY4YTNhM2U3NjNmIGxlZ2FjeS10cnVuaworNDcxMjggN2M4OTkwY2NjZjliMmFkOWJjZmQyMDgyOGU2ZjAxYjMzNjE3NDhjNiBsZWdhY3ktdHJ1bmsKKzQ3MTMxIGFjM2Q0YjcxYmNlMmIyNmM5ZmE3OWJkZDM1YTNmYzQzMWM3ZDBmOTIgbGVnYWN5LXRydW5rCis0NzEzMyAzY2YyMThlOGI0NDkyNTczYjIyOGIzZWEzMTkyMjk2YTMxMDhiYjI1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzQgMDM4OGM3ZGNlNGQ0MjY2NmQxZWY1MzJjZmFkY2ZiMDI5MDU3M2VlNiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM1IDRiNGVkMjMwMmQxY2Y1NmVmMTYxOTMwNTQxNWJiMGRlMmQ3ODcxMjQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzEzNiA4NTFmMzc4YWI5Y2RjNWI3NTY0YzQ3ZDJmZDc0MzA3NTY2OWE2MTllIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzcgZDc0OTA4ZTc0ZDMwNzIwZjVjMTBjMzMzMmI0M2IwN2JiZDA2NWQ2YiBsZWdhY3ktdHJ1bmsKKzQ3MTM5IDU2YmY1NmY1YzgyMTQ3NmQ1ZDY3Y2I0Mjc3OTBjZjFhNjkwOTVlZTIgbGVnYWN5LXRydW5rCis0NzE0MCBhNDI2M2M0MjQ4Y2I2N2U3YWQzYmRjNjNiZjRjNzE3ZWFhY2RjNzllIHJlbGVhc2UyNC1tYWludAorNDcxNDIgNWI4MDc5NjYwZWM0NWU0YzhiMjYwZmNlZmE2NmZkOGI1MTMxMDNjZCBsZWdhY3ktdHJ1bmsKKzQ3MTQzIDU4MjcwYTY5MGY0M2M1ZDE5MDA5ZGUyMDYwNzM3ZWY2OTQzYmU4YTkgbGVnYWN5LXRydW5rCis0NzE0NyBmOTlmYmZiYTg5ODM0NjAxZDQ0NzA0YzFiOTRjNjYwOTk4MWJiNjg4IGxlZ2FjeS10cnVuaworNDcxNDggMmVlNWJkYTkyMGEyNDVhZTA4MDJhYjZlMTg0MWM2Zjg4MjM2Y2Y0MSBsZWdhY3ktdHJ1bmsKKzQ3MTUxIDFlYWI1YWUzYjFmZmJhZWU3MmU1OWZmZGI3ZTVjZjhlZTQ0OTFhOWYgbGVnYWN5LXRydW5rCis0NzE1MyBiM2VmNzQxZTI2MTcxYWZmMTFmY2UxMWFmYjljMGU4NGIzNDU0MTM4IGxlZ2FjeS10cnVuaworNDcxNTQgM2M5ZDNhMzEzZDgxZGU1MzkxNjg0N2IzNDI1Y2MyZjBiYTFiM2UxMCBsZWdhY3ktdHJ1bmsKKzQ3MTU1IDE3ZjgyYmQ2ODg3ODUzMmZiMjk5MzQxODFiNmY1NGNkY2VmYmY3N2MgcmVsZWFzZTI0LW1haW50Cis0NzE1NiAyOWU0M2M1ZTExOGY3YjA5MDE0MjNmZjY0ZTI5NzJiZGE1M2EzMzM2IGxlZ2FjeS10cnVuaworNDcxNTcgMWIyZGYyZWNiYzYzNmEyYzhiNzIyMzNlODI1YWM2MGViNzlkNzM4OSByZWxlYXNlMjQtbWFpbnQKKzQ3MTU4IDBhODNkYzM1MjlkMTVhZjQ0OTM0ZjViMzQ4MWMwY2I4YTAzM2ZjOGMgbGVnYWN5LXRydW5rCis0NzE1OSBmNDljYzI5MDZjZDAwZjYwNDc4NmQyZDcwZWUyYmFhYTgzMzg1MDQ4IGxlZ2FjeS10cnVuaworNDcxNjEgYzZkMDRjOWMzYzRhZTc3NGM1YTI5MDAxNjQ2OTMxMWNlY2Q2OTJhNCBsZWdhY3ktdHJ1bmsKKzQ3MTYyIDk5YjE1YzI1Yjg0MDE2OTM4YWE2OTVlMjlmZjVkNWU2MzFmOTJkYjEgbGVnYWN5LXRydW5rCis0NzE2MyAxNWZlOWRiYzVkMzllZjEyOGY5ZDg5MzVlMGFhOGQ0MDAyYzgyMjA3IGxlZ2FjeS10cnVuaworNDcxNjQgZGEyMmI5MDVkZmJlYmQ5ZTlhY2Q4ODhjMzU0MTZiOGZmYzgyOTQ3YiBsZWdhY3ktdHJ1bmsKKzQ3MTY2IGEyMWU0MjBhNTk3Y2M5NTA1MTcxODg0ZmEyNDNhY2Y0N2Y0YjdjZGQgbGVnYWN5LXRydW5rCis0NzE3MCBkODU3MDg3NjlhYjFkOTRiY2QyYjQwNDY4ZjgxYTY2NmU5ZWI5YzY5IGxlZ2FjeS10cnVuaworNDcxNzEgMTM5MjU2MWQ1ZGQ3YWUzZGUyYjRiZDU1MjJkNDA3ODg2YjIyZjZmYiBsZWdhY3ktdHJ1bmsKKzQ3MTc1IDI3MmYxOTVhMjg0ZTdlMDE0Y2E5NDJmZmIxODU4OTYyYWZmYjcxM2MgbGVnYWN5LXRydW5rCis0NzE3NiA0ODUwNTZlNTNjZGI5OWNmMTU2ODg3M2IzODNlNmNkZjY2OTNmNThmIGxlZ2FjeS10cnVuaworNDcxNzcgNmIwYzYzYTk3NTE0N2E5NGY2OWIzYTAzODgzOGM5NGU3NTUwNGI3NiBsZWdhY3ktdHJ1bmsKKzQ3MTgxIDVkMmM5ODJhYmJiMzllNzg0MjYxZmM2MTAwZTFjMjJjMmExNTBiMjEgbGVnYWN5LXRydW5rCis0NzE4OCBkNGRiZmJmM2YyYjkwYzVjMjM5OTBmYWI3YWZhZmVjNWUzYmQ2OTFkIGxlZ2FjeS10cnVuaworNDcxODkgYjY2NGE5MDhiZmYzNTBlZDFiNTZiNTYwZjRmMDcyZDJhMTViNzQ2MCBsZWdhY3ktdHJ1bmsKKzQ3MTkwIGM1NDdmNmU5MWM1ODRiOTQyNjIwNWZiODZhMzAxZmZlNzdkNjQzZWUgbGVnYWN5LXRydW5rCis0NzE5MSBlMDc2ZTNkNzZmNzcxMGEwMDAxZTFlMzhjZjU2MmRjNDI1N2E2ODhjIGxlZ2FjeS10cnVuaworNDcxOTcgNWRkNzM2MjY4ZmY0NDAyM2RiNjY1YzZiYTcxYzQ0Y2Q2ZDE4YjIwOSBsZWdhY3ktdHJ1bmsKKzQ3MTk4IDY5NzViZDQ4ODRlYmMyYzgwMDRiZDk2OGJhZDdiZjQzMDAwNzk1N2EgbGVnYWN5LXRydW5rCis0NzIwMyAwZjNiYTNkZWYxYWQ4MGFlZDFmYzRiNTFmZjQ3ZDU4M2E2MzZlYWUyIGxlZ2FjeS10cnVuaworNDcyMDQgYzAxMjMwMDc2ODU5YzFmZTY2Y2VhZmYzMTcwMDg0ZmU5ODg5ZTk5OCBsZWdhY3ktdHJ1bmsKKzQ3MjA1IDg4OTRlZWZiYjBhNDlmYzVlYWY1NDllNTU3ZDljMWFiNWUyM2YzZGYgbGVnYWN5LXRydW5rCis0NzIwNiA2MzgyNDFmZjg3YmRkYmJiZTBlMjIwNjUyNzcwOWFlNmI5NTcyNzkwIGxlZ2FjeS10cnVuaworNDcyMDcgMjc5NzM5NjJmYzlmYjYyY2Y4ZjZjYWFmMDY5YjIzODc1NmE1MGRkZSBsZWdhY3ktdHJ1bmsKKzQ3MjA4IGIxNjE0ZjY3NGIzMjcwNDM1Yjk4ZmQ4MGMzZWYzM2VjMTFlNjE0OTMgbGVnYWN5LXRydW5rCis0NzIwOSBlNjFhOTM4ZmU5OThkNWY3OTk3NGIzNzYzMTJmMGJhYWMwMmFiODNkIGxlZ2FjeS10cnVuaworNDcyMTAgMjUzN2RlZGEzNTFmYTg5MTJjZWZjZmRiOTJiZjIyMGE4NGIxMTY0YSBsZWdhY3ktdHJ1bmsKKzQ3MjExIGI5NDcwZDY3ZDk2YzJlMjcwMmU4MDlkNDFmODhkNzRhODcwNmFmMTAgbGVnYWN5LXRydW5rCis0NzIxMiAwZThhOTRiYTIxMDY2ZGE2NWRmOWQ2NjA4ZTdlNDhiYmE2MzkzNzFhIGxlZ2FjeS10cnVuaworNDcyMTMgZTlkMzljNWZjYzI3NDYxNGJjMmI2ZTNlYjkzNGU5NGVhNzMxZDAyZCBsZWdhY3ktdHJ1bmsKKzQ3MjE0IGYxMTY1ODJmNjYyMjQyNWU5OGNjYTk5ZWJjYjcwOTI1N2MzZTJkYWMgcmVsZWFzZTI0LW1haW50Cis0NzIxNSAwOTMxNTY4OTlmNzVhYjJjYjA2ZDA5MGRkNzk4OTRiNzY0MWYzZTA1IGxlZ2FjeS10cnVuaworNDcyMTYgMTZiZjM2NjQ4MzIzM2IwOGRmYmNlM2I5Zjk5MjY1MjU1NTk3ZGY4NiByZWxlYXNlMjQtbWFpbnQKKzQ3MjE3IDg2NzVhNjA4NDI0MGY4NTU3MWQ0MGU5MDMwNWM0MzU0YTA0MzEzNDQgcmVsZWFzZTI0LW1haW50Cis0NzIxOCBjNWJlYmNiZTQ1MzkxYTNjYmIyZjhiOTExYTNlZTY0ODA2MjE5NTI5IGxlZ2FjeS10cnVuaworNDcyMTkgODEzMDRjMDE0NjNhMmU5YmQ4YTNlN2VmODZhMTUzNDgyYTQ2ZDAzNCBsZWdhY3ktdHJ1bmsKKzQ3MjIwIDYzYTMxOWYwNzMzY2EwNjY2YjZmMjFhMzNiNDAwZDRmZGNkOTA0NzYgbGVnYWN5LXRydW5rCis0NzIyMiAwMWQ0YjA2ODUwNjc2MDY4MTA5ZTJjZDlhZTkxOTZlNTM3NjFlMTMwIHJlbGVhc2UyNC1tYWludAorNDcyMjMgNzViZGIxZWIwNzY2NTk1ZGEzMTY5MjNiZjFjYjViNjhkZDhlMzlkOCBsZWdhY3ktdHJ1bmsKKzQ3MjI0IDljOTIyZTMxYjZhNWM4OTEwNGM0NmIyMGYwNzBkNjkzZjMyZjNiY2IgbGVnYWN5LXRydW5rCis0NzIzNCBjODIzNzVkNTYwYjNmZThhMjhhMjc3ZjkxOWU2MDE2Mjk0ZGE0ZGNlIGxlZ2FjeS10cnVuaworNDcyMzYgNDFmYzIwM2EzZTkxZjE2MTVjMTRhNmZiMzgwODNkMDE4ZjQ3NDhhZCBsZWdhY3ktdHJ1bmsKKzQ3MjM3IDE4OTg5ZDA5ZDU4NGU2YzNlODRkNDA1YzY2NDExYWFlOGRmYmVmMTMgbGVnYWN5LXRydW5rCis0NzI0MSA2ZDllMjJjMzMwZTRiNzY0MDMwMDQ2OWZmMzljNTlmNjNhZDQ1MGU1IGxlZ2FjeS10cnVuaworNDcyNDIgMGM0ZTVhMGMxOTE0ZjdiMjJkZmIwYjBlM2NmZGY4NTY4NTczYTMzNiByZWxlYXNlMjQtbWFpbnQKKzQ3MjQ0IGQ5ZTc4MzE5YTE5MjkzODEyNjcxNGU2ZDdiMzdkMDMyY2I0NGQwNGYgbGVnYWN5LXRydW5rCis0NzI0NSA3NTUwNDQ3MTNlOTdjYTI0M2JhNmRhYmVkNmU3YThmOWRmNWUxNzIzIHJlbGVhc2UyNC1tYWludAorNDcyNDggYjkxNTViYjI2YjI4MWU4ZTMzMTFkMzZjN2FkZjQwZTRhY2JhMWZhMSBiY2Fubm9uLXNhbmRib3hpbmcKKzQ3MjQ5IGIwYmQwYmNlOTQwNmVkYTRiMTAzMjc0OThkOTU0ZmJiNmIxM2QzMmYgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI1MSA5ZTgyMTQzNWE2MTJkMWU5NzJiMzU5NmUyNDhkZWJlYTkzNjk5YjVhIGxlZ2FjeS10cnVuaworNDcyNTMgNTAwYWU5NTIxNTBiNzY2OGUzMDA3NjU0OWVlZDA0MDQ5YzBjMzM4ZSBsZWdhY3ktdHJ1bmsKKzQ3MjU0IDg3ZTViMDEwYjNiMDlkNWI1YjljNTRmNzRlMzkwODhkYjNmMDQxY2UgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzI1NSA3MWVhZGMzNWYxNjM3MjYxMTY2OWE4ZjY0Zjk5NjNkNTQyMGFkZDRhIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcyNTcgNDE1NjFiMDAxNGM4YjY4MTU2NDhlNTA0MjA4MWZhNjhkNmFlZTgzYiBsZWdhY3ktdHJ1bmsKKzQ3MjU4IDQwZjA1ODY3MzE3MGI4YTZhOGFkZjAzYjZhZTVjMDdjZjFhYTcwYWIgbGVnYWN5LXRydW5rCis0NzI1OSBiODUxYWZjYzE2NDk2NTY3MDNhNzJkMGVmZDVjMmY5ZmE2NjliZmNhIGxlZ2FjeS10cnVuaworNDcyNjAgZTNjZmY2MWI3Nzc5NjFhZjQ2ZjQyZTNjMTdlZmY4NDhjY2UwODRlMSBsZWdhY3ktdHJ1bmsKKzQ3MjYxIDRkZDFhOTM4M2U0NzdmYzY3MmM5NTQ0MzMwMTI1YWM3NDgwNTdkZTEgbGVnYWN5LXRydW5rCis0NzI2MiBkOGNlOWJjNDA1ZTQxYjY5NTQ2YTE0NGQ3MTdjZDVhYTA5MGVlNWQwIGxlZ2FjeS10cnVuaworNDcyNjMgNjhjOWU4YTU1MzY4M2IyYzIzNDhjY2YyNzk5ODQ4ZjhmZGIzMGQ2NiBsZWdhY3ktdHJ1bmsKKzQ3MjY0IDIwNzNmMzJjZjcxZmM3ZWE0NDg1NmViNTI3OGQ3MDljZWUwNGE5M2IgbGVnYWN5LXRydW5rCis0NzI2NSA2OTdkMDU0ODAwNTNkNmZkZWZlNjQ1ZTA4OWZjYzE0NmRiMWNhODEwIGxlZ2FjeS10cnVuaworNDcyNjcgZjRlMzNiMTJiYjU3YjEwMGIzNGMyZjkyNjkwNTJmNDMyMDk1MTA0YSBsZWdhY3ktdHJ1bmsKKzQ3MjY4IDM0YTY2ZTJmODk1OTgwMjVhZDFjNzNhNDlhNGFiODNkMWJhNWQ1NzMgbGVnYWN5LXRydW5rCis0NzI2OSBmNjhlNTFhNjczZGY3M2YyYjFmNDc0OWU3NDZjZjM5YmMwOTlmMjYyIGxlZ2FjeS10cnVuaworNDcyNzEgMzRjYjlhNmNlMTJkODdmNmFlMDMxNjY2MTA3NWM4OGIwOTI2NjExMCBsZWdhY3ktdHJ1bmsKKzQ3MjcyIDM3NGMyMjlkOTBlOGYzNjZlNTk1NTk4NGM0NTYxNTkxMWU5Njc2NWYgbGVnYWN5LXRydW5rCis0NzI3MyA1YTRhYjM4MjA1OGE1ZjEwZjM0ZmYyNTIwYTYwNTQzYTA0NzUxNDYwIGxlZ2FjeS10cnVuaworNDcyNzQgZWViYzk1Zjk1OGU0OGYzNzdkZmQ5OTVjZTYzY2JhYTRhMDY3NTU1ZSBsZWdhY3ktdHJ1bmsKKzQ3Mjc1IDIzOGUwYjIwMzdmYzI0OGFhN2U2M2RlNmVkYWU0MTVkYzQ2NjMyYTIgbGVnYWN5LXRydW5rCis0NzI3NiAzNDQyNTFjZDhkNzY0NDA5Y2MwM2M1OTY3ZmIxNWY3OGMyN2Q1NDI2IGxlZ2FjeS10cnVuaworNDcyNzcgM2ZhNzkwYjBhYTY4MTVjMWUxZGFlOGYyMzBhYzg1ZGFiZTgxOTlkOCBsZWdhY3ktdHJ1bmsKKzQ3Mjc4IGY5M2RiZmNjNjYzYjMzMDczYzgyYmVkYmZjM2U1ODVjMWQ0MGU3ZTEgbGVnYWN5LXRydW5rCis0NzI3OSA1OGM4OGE3YzkzMjYzYzQ4YmJlYjFlZWQzYTIyMDNjMjA1MDBiYzZiIGxlZ2FjeS10cnVuaworNDcyODAgOGZlZmE5OWU4N2MwZDM4NTY0NDhmYzc2NzNkMjdkZThmOGQxMDZmZCBsZWdhY3ktdHJ1bmsKKzQ3Mjg0IGVkNDMyNDNjODg2MDVlZmM4ZTA5YWQ0NGFmYzFhMjdmNjU2NjRiZjQgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI4NSA0NTI0N2I5M2E1ZDlhMTAxOTIwN2ExZGUyMjI5MGVkNjVlMDYwYzE2IGJjYW5ub24tc2FuZGJveGluZworNDcyODcgYjNjMGUwNzU5YWMwOTgwNDQ2MDkyZTQ1ZTc3ODRkM2YzYjNhZGNhZCBsZWdhY3ktdHJ1bmsKKzQ3Mjg5IGRhNTk4MzYxNGZhYzIyODE5Y2FlYzA5NWJmZTIzOGYwMWY2MzdlNTggbGVnYWN5LXRydW5rCis1MDQ3NyAxMDhkYzJmMWU3ZGEzMmNmMWExYzdlN2ViZjVkZGZjNGVhNWUxYzY1IGJjYW5ub24tc2FuZGJveGluZworNTA0NzggYmIzMDUwMjYzMjQ0MjJhZTdhYzQ1ZGIzZmQwOWU0MjJiZTllMTk1NSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDc5IGI4YThlZmMwMGIxZTI1ZTJmNGFkOWQ3Y2RjNDY1YTEzZWU2ODFhMDQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4MCA5MDNmOTg2NzY1NGExN2EzOTQ3NGNlYWUzMjkzMTY2NzVkNDE0NDM4IGJjYW5ub24tc2FuZGJveGluZworNTA0ODYgMzVhZmU3YzQ2NzcyMDZjZDM1YmEzN2EyMDg3NTc0ODNlMTRlMjM4OCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDg3IGI0MjgxMmM3NzRkMGM5NDliMGJhNzdjZjVjM2Y2MTgwNzAxMzgyZWEgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4OSAwNjZhYTQyY2U1ZjI0MDk3OGMxNjU2ZjVlY2I2MDY2OTVlYjgyYTA1IGxlZ2FjeS10cnVuaworNTA0OTAgYWJiMmM3NmE1ZTA1MGNmOGQwNmMyNjA3M2NmMjI2NWIyZjA0MmJjMiBsZWdhY3ktdHJ1bmsKKzUwNDkxIDFjNWJkYmM3NTgwY2ExOGNlNjk5MmIxOGI3MmI0NjI2MDJiNzc1MzkgbGVnYWN5LXRydW5rCis1MDQ5MyA5ZjcwZjZiYTdiNjljYmU2YmFkZDExZmQyOTA3MzI0OTM3NTZhYWYyIGxlZ2FjeS10cnVuaworNTA0OTQgYmJjNzhmMDIxMDA3YzBmMDQyMThkOWNhMjZjMGJhNzliZjA2ODBiNSB0aW0tY3VycmVudF9mcmFtZXMKKzUwNDk1IDY0Y2NkNzQ1ZWE5MjBiZTFiOTkzODkxZTQ5NjM3ZDFmMzUxYzQ0OTQgbGVnYWN5LXRydW5rCis1MDQ5NyA5NWY5ZTAxODQ1NTU2Zjk2MTI4MTYxZGE0ZWFlZjYxYjNiZjU2YTJiIGxlZ2FjeS10cnVuaworNTA0OTggM2Y1NTYxYzVkOTU5NTViMTM5Y2M2NGVlMjcyZmUzZjA5ZTM5NTMzNSB0aW0tY3VycmVudF9mcmFtZXMKKzUwNTAwIGNhM2Q5YTY3MTI2YmY4ZDkxNGE3NjYxYjdkYTIwMDExMTZkMGQ5MjAgbGVnYWN5LXRydW5rCis1MDUwMSA4Y2M5Nzg0MTMwYTBlODNkMDYyNzdlNTk3YWYwYTY0ODYwZTc5NmVmIGxlZ2FjeS10cnVuaworNTA1MDMgYzAyZmExODdlMGY0OWNiMmRjYTdhOWM0NDhkYjUzNjE4YTY2ZTY5MSBsZWdhY3ktdHJ1bmsKKzUwNTA0IGM2N2IyMzM5N2YzMDY0OWFmZTc1NGU1NzMwN2M4ZGFmNzg3NmM1NjIgbGVnYWN5LXRydW5rCis1MDUwNiAwZmUwOGFlZGJkOGM0ZmNiZGZiNjBhM2MyMzUyNDY4MGMxMjQ1OWMxIGxlZ2FjeS10cnVuaworNTA1MDkgYzU0NzY0NWFiNzM2NGMyOTQ3NTY2YWRhZWI5N2IyMzAzZGI2MWY3NyBsZWdhY3ktdHJ1bmsKKzUwNTEwIDUxNDI4YzM3OGNjM2UyNmYxZmIyZGM3M2ZjYWM4NGMzMjVhNGNjNmMgbGVnYWN5LXRydW5rCis1MDUxMSA3ZTQzZDAyZWUyMWE2MWVkZjZjZTM3NGU0NWNiOTRmZjcxNDQ0OGQyIGxlZ2FjeS10cnVuaworNTA1MTIgYzFmNGJmOGZmNzQ4YzAxZjZjMjM4NTczMDU4ZTkyNDM5NzY0NzNhOCBsZWdhY3ktdHJ1bmsKKzUwNTEzIDM1YzRmZGE0N2RmYmQ4ZjczMDg1ZjEyMWIzOTQwMGI1OTE0MWVmYmUgbGVnYWN5LXRydW5rCis1MDUxNCAwMjU5OGM1N2NhMDljYzBlOGVhOTI0MGEyMzViM2RmMDg1Zjg3OTlhIGxlZ2FjeS10cnVuaworNTA1MTYgZjM3MzY0Njc5NTAxODI1NTg5OWZiYWRiNzdlODA2NjViMDljNzAxZiBsZWdhY3ktdHJ1bmsKKzUwNTE3IGFlNTY0NWM3NmQ1ZWEzM2VjYjhhZTU4MTNhNjE3ZTMxNWVmYjFmZmQgbGVnYWN5LXRydW5rCis1MDUyNiBiOTc4YWZlN2NhYjY2YWVjZmZkYTdjOTg3Mzc0ZWNlYzBmNjcyNGI0IGxlZ2FjeS10cnVuaworNTA1MjcgOGFkZGM5MTMxNzFlODgzNDhjM2Y0OTc3OTEyNGJlYmY0NmUxMGE3YyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNTI4IGYyYWMzMWZjMzY5ZTYyZmU3N2ZiNWI1Yzg5MjQ3MTBlZmI0MmMwYjYgbGVnYWN5LXRydW5rCis1MDUzNyAzYjM4YWI5YzRiMDM2OTVhMzMxNTg1MWM5ZmJjOGZjNzI1MGM2MDRlIGxlZ2FjeS10cnVuaworNTA1NDAgYzg0OTk3ZTFlY2M3NjkyNTQ4OWJkMzAxZGNlNjMwZDA3Y2VjM2JlYyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTQxIGI2ZmQ0OTllNDM0M2ZiNzc3OTBjZmU0YjczNTI3ZjEzMzhiMmYyMDQgbGVnYWN5LXRydW5rCis1MDU0MiBjMzYxOTE1ZGYyOTEzYzYxYWY3OTBhMDYxN2YyYTBlNDQxN2NlZDQ3IGxlZ2FjeS10cnVuaworNTA1NDggZmNiZjQ2MjExOTAzYTRmMmEwZDc2NDA4Njg3ZWJlMWE4ZTRmODA2OCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTQ5IGU0MDI0NGY1ZmViOTRkMDE1NGQzZTAzYjAzYjg3OWMzYmNjMTEwZTYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU1MSBmYTZjYTNmNWYyMjZlNTgwZWJiZGQ2OWUxMWFmZjk5Yjg1YTBlYmM2IGJjYW5ub24tc2FuZGJveGluZworNTA1NTMgMWNhMDE1YmU3MGFlMjJmODVhZWQ3MGY4YzllZDY4ZjFlMjdiOWVkNCBsZWdhY3ktdHJ1bmsKKzUwNTU4IDJkNTdlNGIwOGNlNjhjZjdiMThiMzZkOGY1MTZiN2E1YjhkZmQ3YTUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDU1OSBiMjg2NTM2MjIwOTM4MzAyY2NlMTZlYjUyYzBmYzYwY2QwN2I0YjU0IGJjYW5ub24tc2FuZGJveGluZworNTA1NjAgZTMxZWRlZTViYzNmNTRlMzQyNjYyMDI5Nzg5YmM0ZTVhYzY0MTc0ZCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY0IDIxNmE5N2EyZWQzNmYyNTlkYWVhZjJmOTExNTkyMDMyNGYxMmE3NDcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NSBkYWVlOGY4YzAzNWY5NmFlMTlkMDgzMGU3MmIxMmExMDIzYTQyMDljIGJjYW5ub24tc2FuZGJveGluZworNTA1NjYgZTNmNjA2NmNlNzVmNTgyZDk0ZDIyODA3OWEwYjc1MzM3NzFhYzM3YyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY3IDUyYTg3MzhmNWFiNGQxZTY4MDBkMzNkZTAxMjdjZDZmNjI2ZTQ4OTUgbGVnYWN5LXRydW5rCis1MDU2OCAwM2I2ZmU1N2NkNmRmNWJiMzRjYTE5ZjRiNzYwYjk0MzE4NmNjODA2IGxlZ2FjeS10cnVuaworNTA1NjkgMDBmOTc1ZWFkMzQ0YWZiMmNhZDE0YTJjZTU5NTE5ZDk4YjFjNmM1YyBsZWdhY3ktdHJ1bmsKKzUwNTc1IGQ2NDYzZThlZjljNDdkMzI3M2QzZTkwNTVkYWFkMTE2OTM5YjBkMGUgbGVnYWN5LXRydW5rCis1MDU3NiBmNTBiOWRhNWUzNjE5NTNhZDQwYjNjMjQzYTBhNmY0ZDc0ODBmOThjIGxlZ2FjeS10cnVuaworNTA1NzkgYWUwYzMyOGFjNWJmOTFiZjhlNjhjNWQ5NDEyMWVkZDg2YmM3ZjMzNSBsZWdhY3ktdHJ1bmsKKzUwNTgyIDIxNGIyOGQ3YTk5OTMzNGQwNDFhYzcwN2YwZmRlOTk2M2E1ODA2ZTUgbGVnYWN5LXRydW5rCis1MDU4MyA2NTUyMjk5MjNkNDJmOWYzM2IzYzM4MjEwNDk3MGVjN2ZiY2NkODNiIGxlZ2FjeS10cnVuaworNTA1ODUgYzdkZDY2OTZlYzhjYjE3MGExN2M3YWUyYzcwMmQxYmFlODVhZjVkYyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTg2IDZmNjlhZmI3ODVkMGJmOWM1YTAwMDdkNTc0Y2RkODkxNGFlMDUyOGYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NCBlNmYxNmI3YTU4NGYyMzY2ZDExYTc4YzdmMGY3YTUzMDY0YmVjYTI5IGJjYW5ub24tc2FuZGJveGluZworNTA1OTUgOTMzYmUzZTBhYzZjYjA1NmVhNjRhNTAxMjIzNWJjYjlmMDVmNjJmMiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTk2IDcxN2E3ODg3ZmQ3YTc2ZDcxNGI4YzEyZDZhYjkwOGRjMWI3N2RiY2IgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NyA3MTgyYzI3NzVjMWU0NTQyY2Q3ZDQyNjIwNWM0OWQ2NWIzZDgwYmM1IGxlZ2FjeS10cnVuaworNTA1OTggYjFiYjE3OWE4YWIwNTdkYmMyZDc0NWRjOTA2NjgwNjIxM2IwNjlhMiBsZWdhY3ktdHJ1bmsKKzUwNTk5IDQ3NmNkODM3NzdmMmJhNzJlZGM3ZWZlY2EyNTU2ZDZiOGRkODUzYTAgbGVnYWN5LXRydW5rCis1MDYwMCAyYzNlYzcyMGFhN2JlYjBkYTQwMDJiODQ3Y2M1ZWQ3ZGM3ODI1NjZjIGxlZ2FjeS10cnVuaworNTA2MDEgYjA5NWU4Mzg4YjJlNjQ1MjVkZTI4MzVjNzIyZWJiYmQyYzYxNTk1ZiBsZWdhY3ktdHJ1bmsKKzUwNjA0IDM2YzVkMDg1Yjg2OTIwNzQwM2NmNDFlNjFiN2EyMmQ0YjcxZWM3ZDkgbGVnYWN5LXRydW5rCis1MDYwNyBjNDhiM2E2OGY2OTYyYTY5NWIyOWJkMTYyYjI0Mjg5OWY2M2E4ZDdhIGxlZ2FjeS10cnVuaworNTA2MTAgYjU2MmZkNzk1MDBkMWQzNzBmNjk3Y2RlNTJkZTQwOTdhNmI2NGU4ZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjExIDJmMzA1MTVjZjY2Yjk2ZTkxYmFhMWM3YjQ2OTlmYzQxNDM0ZWYxMzggYmNhbm5vbi1zYW5kYm94aW5nCis1MDYxNyA4OTJiN2FjMjZkM2JiNTkwMDg0MjVjZjM2ZWE4MjM4NzY1MjIyMTljIGxlZ2FjeS10cnVuaworNTA2MTkgZTRiNmE0ZjJjZTE0MzdkYTYxNGI5ZDIxZWRmZjA1ODlkYjVhYWFlMSBsZWdhY3ktdHJ1bmsKKzUwNjIwIGNkNDU5YzkyMGY5OTBjOTQzZjYxMDYxZTJiMmYzMDEzNDhhNDFkMGEgbGVnYWN5LXRydW5rCis1MDYyMSBhNzc2OGZlZjU5YjJjZDFlYmQyYmM3OThiMTM5N2Q3YzY0YWIxNDhlIGJjYW5ub24tc2FuZGJveGluZworNTA2MjIgZmM2OWZhNmU1NGM4NmRjMmUxNGQ4NDA1MThmMzEyMzU3NTNiOTc4YiBsZWdhY3ktdHJ1bmsKKzUwNjI3IDE4Yjk3OTZiN2JhNThjNzRlYWEzMjJlNTlmODkzZTMwMzIxZjdhYTYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDYyOSBjODcwZWUwNjZjMTI1NDhjOGU5N2EzODExOGRkNzYxM2RlYzhhZWY1IGxlZ2FjeS10cnVuaworNTA2MzAgZjcxZjI4NDM2MzFmZWNmYjNiYTA5NTQzMTIzMjZlM2JhMDg1ODc5ZiBsZWdhY3ktdHJ1bmsKKzUwNjMxIDJhODRiNDZhZDY0Y2E2OWZhNGVkY2Y1ZmUwZTVhZTMwMTJiNmY1NTQgbGVnYWN5LXRydW5rCis1MDYzMiAxNmYzYzAyZWRlMDI1MzFiMWRiNzgwZDRlZWZjYTg0NWJmMjhjYmQ1IGxlZ2FjeS10cnVuaworNTA2MzMgMGRlNThiY2U0N2VmMzJhMzBmMWVlN2MxOTRhZWMyYWFmMDNhNWE5MCBsZWdhY3ktdHJ1bmsKKzUwNjM2IDdkZmM3NzZkZDgxYmNlZjY4MzAwMzc2Mzg1Mjk5ZjQ4MWYyNGZjYjkgbGVnYWN5LXRydW5rCis1MDYzOCA5ZjJjM2RlNzQ4NTZkZGQxM2JmYWU2ODgwYjA1NzFjMDQ0MTVjNjg0IGxlZ2FjeS10cnVuaworNTA2NDAgODVmZmMwYmZjYzk4MjllYWYwNmZmYzQwYmY3ZDY5YWIxM2RkZWFmYyBsZWdhY3ktdHJ1bmsKKzUwNjQzIGI2MzI1NjM0OWU3NzkwMDUxYWM3MTc3NDRhMmJmOTdhMGViZjkzNWUgbGVnYWN5LXRydW5rCis1MDY0NyA3ZjQwZWY4NzE3MzExMTQ2ZjcwNDkzN2I1ZWI1MzlkNjYyZTcyNWZiIGxlZ2FjeS10cnVuaworNTA2NTUgNmIxZWQ3YjcwNDhlNWU4YjkxODBiOTE5OTc4ZWQ1ODQ3Mjc0NWVjNyBsZWdhY3ktdHJ1bmsKKzUwNjU2IGJmNDc0ZjlkNTIyNWU3ZTdlYTYwYzQxOWU0NDlhODE3YWUxODEyZTAgYmNhbm5vbi1zYW5kYm94aW5nCis1MDY1NyA1ZWNmMjJhNGU1ZGZjMjA0NDVkMzQ3ZGEwNTQwZDY3OGM0Y2Q1YzNjIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA2NjAgMDUyOWE1ODUwNjRjNGQ3NGQ0NjViYjFkYWNkYjY4NzBhOTMwOGFkYyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjYxIDE0NjcxYTgwYWJlZjA5MDc0MjZjOThkZTZjYzc2MmRiNmQwZTU1ZjMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDY2NCAyYTc2ZWMyZjBiNzlkMGQ1NGExOWM5YWIwMzY2NTIzYTQ5NzVkYTJjIGxlZ2FjeS10cnVuaworNTA2NjUgMDYzMTY0MWZkZWZmNGVlNDUwYzJmZjY0ZjUxMTNjM2NhYmM2ODA1MyByZWxlYXNlMjQtbWFpbnQKKzUwNjY3IDAwNzE1MzUzZjgyYzU2NzdmN2YxMzAyMDU3YzAxNzk2ZGI2ODY5MGMgbGVnYWN5LXRydW5rCis1MDY3MSBjMTM2ZmY0ZDQyNmRmYmNiNzMyN2Q0ZTM1NjA5NjI5M2QwNzhkYzUyIGxlZ2FjeS10cnVuaworNTA2NzIgOTEwYTk0OGUwMjkwZjE4MTcxNzhhNDhmODg3YzM0YWVkNGJmNWFhZSByZWxlYXNlMjQtbWFpbnQKKzUwNjczIDc1NmQ1N2FjZGE4NWJjYmEyOGYyMzBlNDVkNzE0OGY4Y2ZjY2ViOTkgbGVnYWN5LXRydW5rCis1MDY3NCBiZGE5M2I0NWNhNDEzZWIzYTUxMWQ1M2JjZWVhMWRlZTVjZTM3Yjc3IGxlZ2FjeS10cnVuaworNTA2NzUgM2RkYjU5NDgzZjEwMzM1ZjE2NTE2OWM2OGEyODJhZjljMGFjNjE0MCBsZWdhY3ktdHJ1bmsKKzUwNjc2IGFlZGI4NWVlNGZlYzJlZWE3MGE5OTJjNTY1ZDcyMjU1ODkyYWFiYTEgbGVnYWN5LXRydW5rCis1MDY3NyA1MGIwYjU0ZmIxN2Q3ZTNmYmU1YWJjMDJkMTU3ZGFhNDViMjMwYmYwIGxlZ2FjeS10cnVuaworNTA2NzggNzc1Zjg1Yjk4ZTY1OTgzOTYzOTM0YTI4ZDQ1ZDlmYjAyYjQxODUxMCBsZWdhY3ktdHJ1bmsKKzUwNjc5IDkwZDVkMWZlYTRmMmMxMTU2NzgzOWFhZTdmNWY5YjcyZmYyM2Q5OTEgbGVnYWN5LXRydW5rCis1MDY4MCAzNWQ1MGZiZTBiODg5OTgwZmZiMzY1ZGU4ZWEwM2NmOTQ1MDNhY2Q4IGxlZ2FjeS10cnVuaworNTA2ODEgOTM0YmE1YmU4ZjNmMGMyNzEyMmFkMTczNTIzYzcwMjJhOTVjMDY2NyBsZWdhY3ktdHJ1bmsKKzUwNjgzIGE1NTE5N2JkNzIwMGRlMTEzMjNkYWRiOGM5NWYxNjg0OGY3N2I1NGEgbGVnYWN5LXRydW5rCis1MDY4NCA2MDY0Y2IzMDEyMDljOGVjNzM3ZTdmYjUxYjdlOGJkNTZkNmZkN2JjIGxlZ2FjeS10cnVuaworNTA2ODUgYWE4NTc5MWY1OTkxM2YxYTEwNmQ3YTk4MmExMmFjM2MyNzE3NmIzYSBsZWdhY3ktdHJ1bmsKKzUwNjg2IGQyYmZjYzFhYWMzZDRmYWU5ZTI5MzdiODcwOGYyN2UzNjk2ZDAwY2QgbGVnYWN5LXRydW5rCis1MDY4NyBiYjE3MDcyNjVkZTdlMjY4MjRiYjVjMDA4OWUyNzBiODQ1MTE3NDgxIGxlZ2FjeS10cnVuaworNTA2ODggMDA4OTQxNTIxODA1MDJkY2E2NGM3NDRkNWUwNTMxZmZhMjE1OTVmMSBsZWdhY3ktdHJ1bmsKKzUwNjg5IDY1NGE1YjI2MjcxN2UyN2YyOWMyNDk0ZjFkMDFjZWM2MDY0YWE3MzYgbGVnYWN5LXRydW5rCis1MDY5MCA2MjhiODUxMGZlZmJiOTc4OWRkNzJmMDhiMTc0NjAwZGQ3MWY1NmZmIGxlZ2FjeS10cnVuaworNTA2OTIgZmRhM2NiZDc0YzcxOGVmY2U2ZjdmYWQ0NjVhYjExN2E1MWU1YWUyMyBsZWdhY3ktdHJ1bmsKKzUwNjkzIGZmNTM5NzA3YTFlZDM0N2JiZDk3YjA5NTQyN2FmNzM3Y2UyNmM5MzUgbGVnYWN5LXRydW5rCis1MDY5NCBlN2QwYTc1ZTMxNDU1M2Y2MDUxZjVmMTJhMTc0ZmVkODA1ODY5NmI1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA2OTUgMjQ0ZmI1MjRkZGQ0MWI1NDRiZjU3NmJiZjgzYzk1ZTFkMjM4ZjVjZCBsZWdhY3ktdHJ1bmsKKzUwNjk2IDk3OWUzOTBlMmJiNGM1NjVkMDY4ZDNmY2U4MTY5YmYyNDIxMDdlZTkgbGVnYWN5LXRydW5rCis1MDY5NyA5NzAxNjMzODE4YjRiYjIwMjZiZjRkNzJhZjhiMzkwMGI0MTgzZDExIGxlZ2FjeS10cnVuaworNTA3MDQgOTVmYThmYzhhMDY1YzM3MDRlODM4ZjY5NDgzNzI4NTQ4MzZkNGIyYSBsZWdhY3ktdHJ1bmsKKzUwNzA2IGFjZmYxYzM0Y2NhM2MzNWY3MTA2NzVkM2FmOWI3MWQ2Y2YyM2JiNjEgbGVnYWN5LXRydW5rCis1MDcwOCA4NWIyMzk2NWVjNGMwNjkxYjNhMjUxNTM4Y2Y5OTUyMzg3NTYwYmQ1IGxlZ2FjeS10cnVuaworNTA3MTAgMDhmMzVhYmVjZjk4MGZkYTU0ZTVjZDljNmJhYzIyYmQ1NDVkMGQwNyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzEzIGM1NzU5YjVhNTdmMGM2OTA5MjlhOTk3MGFiNDVmYmYwNGY0ZjZmZWIgbGVnYWN5LXRydW5rCis1MDcxNSAxZDdkYTg2MDgwMzFiZmQyZjBjNzRhMmQwOWI2ZWM4YjllYjU4MDk5IGxlZ2FjeS10cnVuaworNTA3MTYgNWZmNWE1ODNiMTJlOWM2NGQ1MGZiYzUxM2UyZmZhZmU5NDY3NzA4NiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNzE3IDg0ZTkxNjZiNzEwOGYxMGQ2MjI0NTIzNjBiYWZlOWExZTA2MDAzYjIgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcxOCAzYzVkYjJiM2Y4OTNhZGEyN2RmYWM1ZDBjNWZmMDRiMDlhNmEyYmNiIGJjYW5ub24tc2FuZGJveGluZworNTA3MTkgNWM5MDNmNjUwNzE5OWUzZDYyZWIyODBmNzA1NjA1MGEwYTg4MGZiNSBsZWdhY3ktdHJ1bmsKKzUwNzIwIDhmZTY3ODZmNTE0NDViYTRiNDYwNzFkYjYxYzYwYjRhMTNkYzgxNjAgbGVnYWN5LXRydW5rCis1MDcyMSA1YWI3NmZiZjIzZjNjZjIxN2JmZmRlN2E1YTE1YzExZWQ3YWUyMzE5IGxlZ2FjeS10cnVuaworNTA3MjMgMmExZmVmYjE4NzY0Y2EzMmQxZjY4YjE1YzUxZDBlODBkZTg5ZTk0NCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzI1IDE0MDUzMWIxMjRmODVkZjU3MjkyNzQxZTI1MDQ2YmM5NTg4NWQ3YWMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDczMCBiZTE3MzRjYzZkYzAyYzU3NDg5NmExNjAyNmI1OTBjYjQ4YWMyMTc3IGJjYW5ub24tc2FuZGJveGluZworNTA3MzEgYTMyZjIwZWNjMDI0YjdiY2I5NzU2Yzc0MGM1YTFhZDU1YmM2YmE0ZiBsZWdhY3ktdHJ1bmsKKzUwNzM3IDU5NzY5YjUzNDc4OWU3NTNhNTQyMDZmMDVlOTE4ZjIxZjcxMmQxNDMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDczOCBlYjQ0MGVjNzRhMTNlYmY1NTMxMzJjNzYwNGZkYWE3YzI1YzQyNWFmIGJjYW5ub24tc2FuZGJveGluZworNTA3MzkgMDYwNzBhMTJhNmIwMmI1NzBkZGY3OTc4ZjdmNWFmZTQyMTc4MTlhNyBsZWdhY3ktdHJ1bmsKKzUwNzQwIDM1NzJmYWE5YTI5ZTA3OGMzMjE3ZjY5ZjFjYjg0MGI5MjhhNDdjMWMgbGVnYWN5LXRydW5rCis1MDc0MSA3ZjM4MTczMjUxYmJjNmIwMDVlYTBhZTUzNTdjMDcxOGZiNzFiYTE2IGxlZ2FjeS10cnVuaworNTA3NDIgYWY0YTNhMGQ0N2NjZmU2ZjZiNzQ3MzQ1YzQ3OGMwODliNmYxZTcwNSBsZWdhY3ktdHJ1bmsKKzUwNzQzIGYyMDMxZjE1ZDk5ZDgxMjhhZGYxY2IzYTcwYmFiNzFiOTdjMGRlYTMgbGVnYWN5LXRydW5rCis1MDc0NSBiYWE1NDMzN2MzZDllOTVmYmFkMzU5NjE1NzEyZDRhNDFiZmE1Mjc4IGxlZ2FjeS10cnVuaworNTA3NDYgN2MwOWI2NmYwNGJkMTQ5MWIwMzY3Yzk3NzFhOTQyMTk5N2ZkN2Q0ZCBsZWdhY3ktdHJ1bmsKKzUwNzU0IDQxN2NkZWRlMDY4ODBmMWQ1NDk4MzNkNmJjNDc4MTIyZDExOWI4ZTkgbGVnYWN5LXRydW5rCis1MDc1OSBkMGE5NTY1NGY4MDMyMWNlMjM1MzljOWFkMmJhOGMyN2YzNjVjYmI2IGxlZ2FjeS10cnVuaworNTA3NzEgMDc5ZTQyZTBiODI2YTg5MGNmMGYwMzU0ZjRiYjAxYmJlMjc2YzdkYSBsZWdhY3ktdHJ1bmsKKzUwNzcyIGYxYTI3NzdlNWM4YjNkNjg1NGM0MWM0MWI4NmY4YTYzNTQ0MWU4MTIgYmNhbm5vbi1zYW5kYm94aW5nCis1MDc3MyAxMmU5NzNiZGZlZWUyOThmOTEyNGIwNTAxZGJlYmZiODc3ZjZmMWRhIGxlZ2FjeS10cnVuaworNTA3NzQgZWU2YWIzMzE3NTgxYmY3ODQ1ZDg0YjVhNmU5NzdkYmY4OTkxMDUwOCBsZWdhY3ktdHJ1bmsKKzUwNzc1IDgzMmZjZTUwZGE5MzYyZWE0NDQ0M2ZlYzllNmUyNDk1ZTZhMjI3ZTMgbGVnYWN5LXRydW5rCis1MDc3NiA3MTMyZjk4ZWYwN2IzMmQ5OTQ0OTMzZjJkYmU3ZjhlNzQ4MGNjYzE5IGxlZ2FjeS10cnVuaworNTA3NzcgNzVhNzEwNjY2MmEzZmQ2MjcyOWUzZDIyMjM4OGRmNTMyNjIyMDFjOSBsZWdhY3ktdHJ1bmsKKzUwNzc4IDE4MDVlNjg0ZGM5MjU3Mjk3NTQyNTdmNjBiZWIxMWVmZDdlOGU5MDMgbGVnYWN5LXRydW5rCis1MDc3OSBiYzVkODMxZjFkZGE1MDljYmY1NmJmZmVjNWU3MzY3MGFhYTlhODI3IGxlZ2FjeS10cnVuaworNTA3ODAgY2RiYjQ0YzNkZTg3MTVhMTBjMGRjZGE4ZjA4YTliYmVjNjlmM2U4NSBsZWdhY3ktdHJ1bmsKKzUwNzgxIDBlMGE5N2NlZDhlOTFmOTJlMjNhOGVhZWRkZDJlNmU0Nzk4M2EzZWQgbGVnYWN5LXRydW5rCis1MDc4MiBlOTc3M2ZjMjdlOWIzNmE1OTVkZTUxM2Y3NWJlM2ZkYWRmMjM3ODcwIGxlZ2FjeS10cnVuaworNTA3ODMgOTU3YmYzMTE5MjQ3ODQwNjIyODVmMmZiZjliZjQ2ZDg2ZWM4ZmNlMSBsZWdhY3ktdHJ1bmsKKzUwNzg0IDlkMThkOTY4YTU4YjMzMWZlN2YyMzVlOTYxNmMwMTI4NDM5NjNhN2QgbGVnYWN5LXRydW5rCis1MDc4NSBlM2RhNWY4N2ZlNjQxZDhiMzkyZWFlNzUxZmNhMGFjM2ZmNjlmNWRmIGxlZ2FjeS10cnVuaworNTA3ODYgNTRiYjcyMDYzMmM0MmZkMTg1YWRlODk5OWU4YzBlMjg4MjNlNmFiYiBsZWdhY3ktdHJ1bmsKKzUwNzg3IDBhNGFkODNmZDY1NDkyMjUzYzI4NzM0OTgxNWQ2MGJlOGJkYjYwYjAgbGVnYWN5LXRydW5rCis1MDc4OCAzYWM4NTA5NDM3ZGZkYmMyNDUwMDk2OGNhOGQzZDgxNDljZGQ3Njg1IHJlbGVhc2UyNC1tYWludAorNTA3ODkgYjU4Zjc5NTJlMzhhZTg5MWQyYTEwMzU0Zjk2MTAzMzlmNGEzMTdhMyBsZWdhY3ktdHJ1bmsKKzUwNzkwIDc4NjQzYmUzY2Y0MGJiM2E5ZjRkNDM5MzU3MmVlMDIyMzJjNjNlOWUgcmVsZWFzZTI0LW1haW50Cis1MDc5MSBhM2ZkYTg0MzIzNGU0OGQxY2E2YzgyYjI1ZTYzY2E0YTQ0YTk5M2NhIGxlZ2FjeS10cnVuaworNTA3OTIgZjg4MTliZDRlNDM3OTc3MDVkYWNlMDExN2UyMmM1NjJhYjQ0OTk5YiByZWxlYXNlMjQtbWFpbnQKKzUwNzkzIDUzNDE4Y2JhZDdmZDRjMzYyYjllNzQ4ZmM5ZDU2NWIxMzQ4YzFjM2QgcmVsZWFzZTI0LW1haW50Cis1MDc5NCBhNGM0YjdlYTc5YzBhNzRmMzY5MTMxOTliNzQ2NzgzYjFlMTE3OGRiIGxlZ2FjeS10cnVuaworNTA3OTUgODMyZDVhMzQxMzBmYTUzNjQ1NzA3NDBkZTc1MTA2OTBhMWJjM2E1YiBsZWdhY3ktdHJ1bmsKKzUwNzk2IGE0ZmM0ZTc1MjYzNDY4MjUyN2I3ZjBkMWZlZTI1YmMzMjhiZDViMDQgbGVnYWN5LXRydW5rCis1MDc5NyA2M2FlYTY4OGI1YmIyNmRmY2NkYzQwZTU2NTcyOGRiMmFlZWM3MzhkIGxlZ2FjeS10cnVuaworNTA3OTggMWIxZmQxOGIxYWRhNTM4M2MyNWU1NjI0Zjg2MWJmMDUzZDU4NjEyOCByZWxlYXNlMjQtbWFpbnQKKzUwODAwIDAyZmExMDE1Y2JjYzRjOTM0Yzg0MGEzZjlmZDJmZTYyMDAxZTk3MmMgbGVnYWN5LXRydW5rCis1MDgwMiBjYWFmMzdlNDVkNDdkNDdlYzQ3ODM1ODZiOTYwNmU5NDBlOGQwMTg4IGxlZ2FjeS10cnVuaworNTA4MDMgODllMDkwZmVmOTg1MzAyMWNhYjY5OTZiN2Q4NDY0YmUxOGRiNDEzMSBsZWdhY3ktdHJ1bmsKKzUwODA0IGVmZGU1ZWU4OGM5Zjc3NzlmMDFjZTViM2ZjNjMyOGYxNzM0MmY5MzcgbGVnYWN5LXRydW5rCis1MDgwNSAwYzAwZTJmNTA5ZTAwNzkzNDdhM2RhNWQzZDhjNTE0ZmJlNzE4NzM0IGxlZ2FjeS10cnVuaworNTA4MDYgN2NlN2VkMmVjZDljYWQzNGYyNjc3Yzg0MzE3NzQ1Y2NjMmUyYjQ4ZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwODA3IGQ3MWQ0NjY5NzRlNTg3YmIzNjM5NTdhMDk5Y2ZhY2VmZjg3ODcxZjcgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDgwOCBlYWVkY2NjMDI4M2Q3OTEwZTQ5ZmYyZTc5OWFmZTkzMzgyNTFmYjIwIGxlZ2FjeS10cnVuaworNTA4MDkgMDdjZWUwMWE0ZmNjYzM4N2YwZmMxZDkyOGZhNTBmYTgxZWU3Y2UxMSBsZWdhY3ktdHJ1bmsKKzUwODEwIGE1ZjhkMWQyNTVhOTc5YmM3MGY0ZjY4YzA3NDM5YjZjM2VkMmQzODkgbGVnYWN5LXRydW5rCis1MDgxMSA5OWFhODQyMjRmMTgxOWQ1NTI3MjZhYTkxMWVhODU3MDk0NTRmNDdkIGxlZ2FjeS10cnVuaworNTA4MTUgNjNhNDRjOTFhNGQ1ZWJjZTMyNWZjMGY4MjJjMmU4ZjgyZGYxMmUyNyBsZWdhY3ktdHJ1bmsKKzUwODE2IDYyMjgyZmRhYWM1YTBhMTM1NjU5NTAyYmYzYzM0Yjg1Zjc0NDE2ZjggbGVnYWN5LXRydW5rCis1MDgxNyA3OTBhNzgyZDk4M2NjNzQ0NjQxODU0MDIyMzBiYzhlYjIxNzlkYjk3IGxlZ2FjeS10cnVuaworNTA4MTkgNjYyMWVkZmQyOTZhYjhkZTE3MGYxNjA5ODgxNzBjNjcwN2YwMjI3YSBsZWdhY3ktdHJ1bmsKKzUwODIyIDJkNGM5YWNjYjhmY2MxM2M0Mjg2ZjE4MDlmZjIwN2VlMWMzZTkyMjYgcmVsZWFzZTIzLW1haW50Cis1MDgyNSA4MzdmNTY5NTBjZWE4Yjc0MmE0NjNkNzQ2OTg2MDE2MzQ5MmZlYjJmIGxlZ2FjeS10cnVuaworNTA4MjYgZmY4ZTdjNDZlNDI5ODAxZjA1NmQxMWYwZTMxNGFjN2U2NmM2Zjk2OCBsZWdhY3ktdHJ1bmsKKzUwODI3IDk1Mzc2NzUyZTY3Y2Y5M2JiMTNmNTRjZmZiMzgyYTk0OTlkYzE3ZGYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDgyOCA5MDNmZGMzOGQ1NjQ1ZTRjMmUwMTg5MjAwZjVmMDU0Y2Q5NjE3YTcyIGxlZ2FjeS10cnVuaworNTA4MjkgZjkwZjMyODYyNzU2MWM1ZDY3MWE4NGFlMzhkMTIyNjE5ZDZhZjMyNCBsZWdhY3ktdHJ1bmsKKzUwODMwIGI5MTUxYzhjNzllOGY1M2U5ZDMzOWQwNTA0MTA2NzUzNmNmMDJkMmQgbGVnYWN5LXRydW5rCis1MDgzMSA1ZDExNjJlNmJjMzdmNDhkNWYyOGY5YmFhZTRhZWY2NmU5M2MzMjNhIGxlZ2FjeS10cnVuaworNTA4MzIgNDBlOGNhZWY4NDBlZjI0OWI1NjcwY2UwODFiYjE4OWE0YmRhNmE2ZiBsZWdhY3ktdHJ1bmsKKzUwODMzIDE0OTA1MjllNzRjZTNiYWI5MjgzYjg1NTMzYmQzM2M5NmNjM2EwNmQgbGVnYWN5LXRydW5rCis1MDgzNCBiNTViZjJhZGZhZTVlOTE0M2FiYjhjOTlkYzQzZGY4MzNjODY4ZWM0IGxlZ2FjeS10cnVuaworNTA4MzYgNWYzMzEyMDU0Y2VkZTYxZTgzNWU0ODQxMzNlM2U3OTU1NDRiMDdhOCByZWxlYXNlMjMtbWFpbnQKKzUwODM5IGNmYmY1NzU3MjQ1N2RjMDM1ZDA4YjE0YTQ3NWJjMDE5NGEyMzFlMDggbGVnYWN5LXRydW5rCis1MDg0MCA2YjIwMGI4YzYzZDMzMjY2YzNjYjNmYmM3NGViOTllOGQwOWY4ZGExIGxlZ2FjeS10cnVuaworNTA4NDEgNmQxODRmYjhjNTM1MDk4ZDk5YTE1M2FmZWE2NmZmMjk3Zjk0N2I1OSBsZWdhY3ktdHJ1bmsKKzUwODQyIDdkYTZmODFhZDRkNTNlNTIxYTk2Y2Y1NzU5NDg5NjRjNGIyMmE3MzYgbGVnYWN5LXRydW5rCis1MDg0MyAxN2Q1NjcxZmZmY2NjM2NhOThkOGM2YWM3MWExYzBlMzJmMDRjNDA2IGxlZ2FjeS10cnVuaworNTA4NDQgOWM2ZGM2ZDA5YjA3MzYyM2UzMWY4ODFhMzVmMWFlMWM4MTBjZmE0NiBsZWdhY3ktdHJ1bmsKKzUwODQ1IDlmM2YxZWRkOWMzNTA2MzhkMTlkMDNkOWJmNTU0NTMxMjc1NjNlNmIgbGVnYWN5LXRydW5rCis1MDg0NiAyNjcwNjUwNzZmMDU5ZGVmMDQyMDE1ZTg1YWZkNDllNWY1MDU4N2VmIGxlZ2FjeS10cnVuaworNTA4NDcgMjcxYjJiYjJmYzkyM2NmMGRmMDMzYWI1YTUxMGExNWRhNmIwOTVjOCBsZWdhY3ktdHJ1bmsKKzUwODQ4IGYyOTJhMmIxNGJhZjQ4MTJjMzQzYTc5ZDg5NjFjYmFiOTY1MjQ0MTQgbGVnYWN5LXRydW5rCis1MDg0OSBhY2Y2MDA0NzEzNjlmNDNmNGIzZjcyYjM0ZTQ4YjQ4NzdmZTY5ZmMxIHJlbGVhc2UyNC1tYWludAorNTA4NTAgZjA4YzViYmI4MDQyMWNkMzRiZTdiMWI4MGZiMjBlZjZiZmNiOWMzOCBsZWdhY3ktdHJ1bmsKKzUwODUxIGI4MTY0MmU1MjI4N2YzNmJmNmExZTBmOWNhYjFiMWY1MmM5ZDQ5YzcgbGVnYWN5LXRydW5rCis1MDg1MiAxZTAwZWYwN2JlYjI3MTk4NDgyM2I4ZDJmMzYxODA0YWNlNWQzOWMwIGxlZ2FjeS10cnVuaworNTA4NTMgMTg1ZjQyODNhM2I5Y2Q0YjY3MGQ5YjBhYmRmMWYyYmJjYzQxNjJlMSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwODU0IDI5YzJmZWU2Yzk4NDhlOGEyNzc4OWQ3MWE3MGJiZDUzNDhkMWU5ZTIgbGVnYWN5LXRydW5rCis1MDg1NSA0MGI0NDZlZDNmMTI2MmQ5NjJlMjNlMWFmYzNjMTliYmIwMGVlMzQwIGxlZ2FjeS10cnVuaworNTA4NTYgNWVlNmQzZGEwZTY0NTY0ODdkMTA2ODNiZjc1Njk3MTEyNTgwMDRjNyBsZWdhY3ktdHJ1bmsKKzUwODU3IGJjZWZiYzVlNjcxYWZkN2ExNjg0MjVjYWVhZDMyZDA4Y2ZhN2VkZTYgbGVnYWN5LXRydW5rCis1MDg1OCAwYjBjYzdhNDk2ODJjYzBhZjgxZWQ0ZTQwM2ZlMjNkNmJkMWRiNTcxIGxlZ2FjeS10cnVuaworNTA4NTkgZDc2NTc3NWVkNzlmODU2M2ExOTk1NWNmOGU1YjA1YWE4OTU3ZWY4NSBsZWdhY3ktdHJ1bmsKKzUwODYwIDhjYTMwNjhlYTM0M2EyNGFlNzNhYWIwZjQxNDEwYTUxMDhjZjQzMGUgbGVnYWN5LXRydW5rCis1MDg2MSAwMjVjMjdiODEyZjY4YzQyNGE2NmViYjY4YjE4MWRkYjQyOTg3MGVkIGxlZ2FjeS10cnVuaworNTA4NjIgYjAxMWJlY2Y4YzgyMmMyYmI1NjU0Yzk5MWQ3YTc2ZDIwMDFlZDIxOCBsZWdhY3ktdHJ1bmsKKzUwODYzIGMxOGE2Njk0YTA2NmM3ZTk1ZDE1YzY3YWFjNWI0ZjY2NjlkMDdlYzggbGVnYWN5LXRydW5rCis1MDg2NCAwMGFjZTZlNDA4YjAzNzFhMGYyMjU4ODE1NzA0YzYwZmY5MjRjMjUyIGxlZ2FjeS10cnVuaworNTA4NjUgYTExMGE0NDYyMTg5YTIwMDAyYjhkOGQ0ZjA3NDJlNjU0YWY0YzcwYSBsZWdhY3ktdHJ1bmsKKzUwODY2IDYxYzBmZTQ4Mzc2YTEyZDhhMzNjNWI2NDM1ZTFmYzVjMTk1NGJiMjggbGVnYWN5LXRydW5rCis1MDg2NyA2MDUyMmRmZTYyNTk5MGIwNDVhNDBhNDExMDA3ZDk4OWNlMDMwNThmIGxlZ2FjeS10cnVuaworNTA4NjggNzJhNTJlNmZjNmYxMGU1M2Y1MGI2ZjEyMWYyMDY0MjUzMDQ0ODEzNyBsZWdhY3ktdHJ1bmsKKzUwODY5IDg3OWJkNzUxMGZlYTAwZDIxMjY5N2JhZTIyYzM5NzVjODZhOGJmMDEgbGVnYWN5LXRydW5rCis1MDg3MCA2YjNkNGEwZjJhYzU5MTU3ODA3NGQ1ZmQzNzg0ZWI0MmU2ODc3OTQ0IGxlZ2FjeS10cnVuaworNTA4NzEgYzRhNzU0NmE1MDlmMTc0YzM4OGRlNDM0NTZjM2ViYzA2ZDBlODZlMiByZWxlYXNlMjQtbWFpbnQKKzUwODcyIGNlNGRmZjJhOTUyMzgwMGNiNjUwNzE0MmViMDk5Y2ZhNjQ4NjJjZDEgbGVnYWN5LXRydW5rCis1MDg3MyBlZWE2NzQyMTFkMzJiYzFkNTYzZTAyZDJlZmRkOTkzZTM5NjI3NGIxIGxlZ2FjeS10cnVuaworNTA4NzQgMGQwZDgyZTQwYjkyN2U1M2RhYjg2M2VmNjA0ZGIyYTVjNTUxNWQ4OSBsZWdhY3ktdHJ1bmsKKzUwODc1IGM2ZDRjMGFmMmExMjIyNjlhMTkxMGQ0YWIxYTUzM2FiMGZmYmQ2ZDEgbGVnYWN5LXRydW5rCis1MDg3NiBhYzAxYjYzNTliNjIxNTg4Y2Q4ZmIzYzRmNzMxZDNhZDY5NmE4MjA4IGxlZ2FjeS10cnVuaworNTA4NzcgYjBjZGNiY2M1ZjQ1NzhkYjY0ZTRjNzEwMzgwNGE2ZTRkYjg1MTFmZSBwM3lrCis1MDg3OCBhNzUzMDAzNmYwNTVjYmQ4NDIxODAzOTE5NjZmYTE2YTYyZjY5YjA5IGxlZ2FjeS10cnVuaworNTA4NzkgZTE5ZGE5YjAwMmRhMzFjNjJmMTg4M2FkYTEyZDZhNDUzZWQ5NmVlMyBsZWdhY3ktdHJ1bmsKKzUwODgwIDZlYjM3NTdjMmM5OTFkMzY4OWViNTg3NDdiMzNhNjgyMWRlZjkzZjIgbGVnYWN5LXRydW5rCis1MDg4MSAyOGNkZDQzZTA1NjkwMmNmZmI3YzBjMDJlYzZjZTYyY2M0NjI3ZWU1IGxlZ2FjeS10cnVuaworNTA4ODIgMDc4MTcyZWVhYWU1M2Q2MTQxMjMwNzQwODQ4NGJhOTgxYTJiZDJlMyBsZWdhY3ktdHJ1bmsKKzUwODgzIDBiM2ZkMDRjZGZiNDg4NWM3MzY5NWQ0NjcxZWFhYWEyNjYzMGRjN2EgbGVnYWN5LXRydW5rCis1MDg4NCAxMTJmMjE4ODIxM2IyNGNiMjM3N2EwZGUyZTBjYWZkZmU1MmNjYmZlIGxlZ2FjeS10cnVuaworNTA4ODUgNDBjZWJhZmFlNTZmZjYwM2Y4MWNkZDllMGUyZTI1MmExZjc0YzZiNyBsZWdhY3ktdHJ1bmsKKzUwODg2IDM1MDQzZmJhN2FlZDgwMWNkZGE1M2E4ZDI3MGI3MjhmMzgwMzJmZjUgcmVsZWFzZTI0LW1haW50Cis1MDg4NyBjZDhmMjBkNDAwYzFjNjVhMzMwZDczZTRjZjQ5N2JhNGQ2MGJkMmJhIGxlZ2FjeS10cnVuaworNTA4ODggZWYxZTdmM2Q5ZjlkODJlYzljZGRiNzU5ZGQwMzhmYWFkMzdiMmFlZSBsZWdhY3ktdHJ1bmsKKzUwODg5IDYxYzhiNDEwNGFlZmFlYTUyMTFmNmY5Y2YwYzg1NDFlODdlYzRlYTkgbGVnYWN5LXRydW5rCis1MDg5MCA3NTQzMWIwYmZiMGU3MjEzYjBiMzRiMDk2MGZlZTA5M2E2MzQxNzdmIHJlbGVhc2UyNC1tYWludAorNTA4OTEgYjlmMzUzYzJjMDIzZTViOTg2MzMyZDc4NjhlZDZhY2MzMjA1MDlhZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwODkyIDY5N2FlMzYyZWQwMjQxNTJhMTA4NzgzYzYzOTY3ZWEwMDExN2Q3MTQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDg5MyA0Mjc2ZDBiNDY5YWZmZjI0ZjJiN2UyNzEwMWUwNmU4YjVmNzJiZGJjIHJlbGVhc2UyNC1tYWludAorNTA4OTQgMjc3ZDdhZjU1YzQ5NDVhNzgwYWIzODRkNzZlZjIzYWJlNzQ1M2Y3OSByZWxlYXNlMjQtbWFpbnQKKzUwODk1IDRhNmFkZTljZTc4MGRiOTA1NTdhMzZhMWNkOWMwNTI5NmU1NGU0MzUgbGVnYWN5LXRydW5rCis1MDg5NiA1NTg2NWQ3YmM2ZWE0OTE0NDVhY2FhNTMxMWJlMTk5YTU4ZjFlZmM3IGxlZ2FjeS10cnVuaworNTA4OTcgYmYxOTg0YzEzZTJmNzk4NjQ0NjQ5ZGZjYzA4MGU4MTgwMWEwZDYxMyBsZWdhY3ktdHJ1bmsKKzUwODk4IDZkYWNkYzFhMDA1NGZhOTM2OWM3M2E5NThmNTkxMmEyZWJjODY2OWIgbGVnYWN5LXRydW5rCis1MDg5OSAwZTlhMjY5YTIxODkwYjEwMDVlOGI4MDkwZGM2NzZmMTc2MGExMjhkIGxlZ2FjeS10cnVuaworNTA5MDAgZDE2NjRhNTAxZGE1Y2JkZTBlMDAxMDdlOGZmYzk5NjFlOGFiZGEzNiBsZWdhY3ktdHJ1bmsKKzUwOTAxIDBkZTlkNzE0NDRmNjI5NmViNTg0MDA3MTYxNjBhMTQ2M2EzZTVkNzYgbGVnYWN5LXRydW5rCis1MDkwMiBhOWIyZmQyZDRjOTYxN2NhNTQzNDA5NzNlOTIyNDYxYTY2M2U0ODc4IGxlZ2FjeS10cnVuaworNTA5MDMgYzgzNGNiOTU2MzdhY2RiMTdkMjNkZDE2ZDZhYWMzMmRhNmEwZDU0ZSBsZWdhY3ktdHJ1bmsKKzUwOTA0IGMzYmI0YjIzZWI5YjNmYmFjYTI2MmM5ZjgxZWMwOWZjYWY2OTIwOGUgbGVnYWN5LXRydW5rCis1MDkwNSA0MDZjMWVmZTdiZWVkMzQ2OWY2OTFlNjliMTNjYzliYzMzZGI3MDU1IGxlZ2FjeS10cnVuaworNTA5MDcgMDRkZjBhOTcyMWIyYzc0Y2JmMzAxNDI1YzYyMWViOTUzZjQyMzJmNyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTA4IDFiNTk3YzgwMTU3MjIyYzQzMjkxMDhkNGM3MzQ4ZmY0NzQwNDRiOWYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkwOSA5ZmRjNjg0MWMzZWI2OWM3MmVhMTdmYjM0YTAxYzU0M2YyM2ZhMDFhIGJjYW5ub24tc2FuZGJveGluZworNTA5MTAgMzA4YmE2NDMxNzNhMDA0ZjNmYmNiOWRhNGE1NmJiMjMyODM3ODQzYSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTExIGVjNTE2YmFmOGEzMGM1ZDU5YzI1YTIxZTJkODJiNjQ0YTM5NjU0NjMgcmVsZWFzZTI0LW1haW50Cis1MDkxMiBmM2Q1NDA3NTFhZGUwN2RkOThjYWIxMDg2M2VjZDJmZGFiNzExNzE1IGxlZ2FjeS10cnVuaworNTA5MTMgYzRhYzZlYTQ5N2ExMDVlZDM1NDQzZTRlNmEyNDI3NmM2OWQ5M2I5NiBsZWdhY3ktdHJ1bmsKKzUwOTE0IDg3YzllMzMxZDVjOGQ2MTEyYzgxM2RlODFhM2RmNjRhYmQ4NWYyNjcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkxNSA2Yjk2ZDhjOTIzYmVjNWIxNWVhNDg1MGIxMzM3MjliODE1ZDRiZjg0IGxlZ2FjeS10cnVuaworNTA5MTYgM2Y0NDg1YjIwZTc5OWU4Y2FlMjdhMGY3YWE4MmNjMjc1MDk0ODhhNCBsZWdhY3ktdHJ1bmsKKzUwOTE3IDVlODVlZWUzMzU4MjhkODM1ZDhhODA0OTU0Nzk1M2JlZGQ4ZTBjODEgbGVnYWN5LXRydW5rCis1MDkxOCAxMmNmYTFiY2Y4NDNkNzRiY2JlMTNlODQyNTI3MWUzZjRiM2ZkMTFmIGxlZ2FjeS10cnVuaworNTA5MTkgOGI5Y2NkNWQ5MzFlMGYyNDM3YjVhZjM0MzQ3ZWUwNDBjNmI0NjE5OCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTIwIDkyNWFiNDc4Mjk5NDI0OTcwOTczZTI5NmZkMjY5NTQzOWQ5ZTJiMjQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkyMiBhNTRhZTI1ODNiNzAxMDBjYTIwOGZlMTEzNWU2Yjc4MzdlNTAwYmVhIGxlZ2FjeS10cnVuaworNTA5MjMgZTc5NWUwNWQ2ZDU2NWM2MmI5MzJhMzdjMDJiNjcyODVmMjg5YzAwOSByZWxlYXNlMjQtbWFpbnQKKzUwOTI0IDZjOGJjN2NkNzJhNmM5ZmM3ZjQ4MWUwM2MwM2ZlZTBhNjFlOWEyM2QgbGVnYWN5LXRydW5rCis1MDkyNSBmYjZiY2NmZmJlMzEwYTRiMDg4MjYwZmRjMzJkYzQ3MGNjN2JhYmQ5IGxlZ2FjeS10cnVuaworNTA5MjYgY2RiNDc4NzIyNmFmM2I1NTMxMGFlODA1YTk0OWNmMzE4YTMwNTExNSBsZWdhY3ktdHJ1bmsKKzUwOTI3IGQ0NTM0NDBiMzNjNmU1MTczM2YxZDNmYjJiYmFhMDBmYTU1NmE5NDMgbGVnYWN5LXRydW5rCis1MDkyOCAxZmFkNGYzZTM2YmE0ZmIwNDQzOWQ0NjljZjFiNTQxOGE3MWU3Y2VjIGxlZ2FjeS10cnVuaworNTA5MjkgYWIzNDk1ZGY0Y2NlY2JhNmUxZDYyOGZkN2E4YzczZmE0MDcwZTA2ZSByZWxlYXNlMjQtbWFpbnQKKzUwOTMwIGJkMjZhMTk1M2MwNWJlMmVhZmQzYTZkZTU2ZDY4MzgwNzk0YmFmODUgbGVnYWN5LXRydW5rCis1MDkzMSBhOTk1Y2ZmODQzYjM0MGUxZjVhYjhjOTc3ZDIyNGZhZmMwY2M4YjEzIGxlZ2FjeS10cnVuaworNTA5MzIgM2ZlZDdmYjZiYzk2NDQ5MzljZDdlZjNjMDE3MjYxNmE0YTUwZTI0NSBsZWdhY3ktdHJ1bmsKKzUwOTMzIDVmMjE1NDNjMzNkYzRlY2E3YWUzZWEyNTMxZTc0NmZiYjA5MWZkOTYgbGVnYWN5LXRydW5rCis1MDkzNCAyZjNkODcxYmY2ZWYyMmYzOWEyNTdjNjY2OTM0Yjg3M2U0NWNkY2M4IGxlZ2FjeS10cnVuaworNTA5MzUgNmZmNzJhZDkzYWQyYmE2MTdjNTE1MWYxNGUxZTE4NGNhNWI0Y2I5YyBsZWdhY3ktdHJ1bmsKKzUwOTM2IDFjOTRmNjYyMzc3NzliNTZiYWE5NzFlMTcxZmZkNWEwZWJiZDEyODggbGVnYWN5LXRydW5rCis1MDkzNyA2YTg5OTVjMmU4YmM5OTFkMThjYWNjMzQwNjAyMjFmMjQzODYwYjFmIGxlZ2FjeS10cnVuaworNTA5MzggMDY5MWQ5MDFkODljYmYzYmFjMGQ1M2JhNTg3MWZhZjdkMjQ4NmQyMiBsZWdhY3ktdHJ1bmsKKzUwOTM5IDBhYmE2YjFmNWEwMWMzYmRmNWRmMWRhMTJiNDNiYjVkZTE3N2IzYzAgbGVnYWN5LXRydW5rCis1MDk0MCAxYTIyMmYxMTBhYWFmOTlkZDEyMTgyNTg4NTY0ZTExZTExNTI1OTEzIGxlZ2FjeS10cnVuaworNTA5NDEgY2IxZTQzMmI0OTE5ZjEwNjQ0MDZhNjhjOGVmMTYwODM1OGJkNjUyNCBsZWdhY3ktdHJ1bmsKKzUwOTQyIDRkZDUyYmE1MmRlODNlZTEzYzMzZWU3NzRlYTEyZmQ0NzY1NTlhNjUgbGVnYWN5LXRydW5rCis1MDk0MyAzYTJkM2VkYTNlMTZlNWQ0ZDk2ZDhmYTVkNTU3ZjQxMDdiY2JjZjAxIGxlZ2FjeS10cnVuaworNTA5NDQgMzQ5ODNjMGIyNmJjMjkyNjYyOWUyMTI2NzRjODhmMjYxZjg0MTA3ZCBsZWdhY3ktdHJ1bmsKKzUwOTQ1IDgwNjlkNzNhY2JkZjhiNWU5ZDNiODdjNmFlOTIxYWI1ZjhiMGI5ZDcgbGVnYWN5LXRydW5rCis1MDk0NyAzNTU4M2Y1NWM1YThhNTVhMDY3YTFiZTFjZmI0MGVmMWFlNGQyNjRmIGxlZ2FjeS10cnVuaworNTA5NDggNzI4MTQyOWEwMWQ2N2Q0YmI3MDk4NmYyZTU3NzE5NWQ2YmM0MzJmNCBsZWdhY3ktdHJ1bmsKKzUwOTQ5IDM0YzIwZDNmMjUxMDY0MDczZGZkNmViM2QyOTAzMjliNzgxNGEwMTIgbGVnYWN5LXRydW5rCis1MDk1MCA4OGRiNjAyZjIzYTZkMWU1ZDQ1YTg0MTI0MDNjMGFlOWM1NTc5NTk0IGxlZ2FjeS10cnVuaworNTA5NTEgNDVhMzU0Zjc0ZDgwZDY1NDA5YTBkZjJhNWEyYTU5MmI2YmRiNDQ2ZCByZWxlYXNlMjQtbWFpbnQKKzUwOTUyIDRkYjlkOTUzM2IxNjNkMTc5YzA5OTljMGI0YmU2N2I1NzkxZjZiNTMgbGVnYWN5LXRydW5rCis1MDk1MyBkODg4OGM4Yjg3MmIxM2E3Mzc0ZDQ2M2EzNjY4ODcwZGRjY2ZhZjE1IGxlZ2FjeS10cnVuaworNTA5NTQgNmE1Zjc5YTRlNjg3MzNlMTM2ZjEyNTZjMGMxYjkxMTcyNWY4ZmY1NiBsZWdhY3ktdHJ1bmsKKzUwOTU1IDVhZDZlMmE3MmIyYWMyYTE0MjM5N2Y0MjM1OWMxZTVmYzlhODExOTAgbGVnYWN5LXRydW5rCis1MDk1NyA2ZDFmNjczZjA1OTA3YzY4M2I3MTk0NmY3MGMxYWEwZTUyNDc0NDU4IGxlZ2FjeS10cnVuaworNTA5NTggODA1NTEyY2YxNGVmY2E2NWVkOGNiYmUwYWEwYzkyZmIxM2YxZjllNCBsZWdhY3ktdHJ1bmsKKzUwOTU5IDQ0MDdlNTE5M2E0YjBjOTE3Mjg1ZjIyZmNjMDg0N2VjOGUwNmM0YzQgbGVnYWN5LXRydW5rCis1MDk2MCA0ZTNhZDY1ZjU1ZThlZTI3Y2VhMDEyMWJiZGE5NjRlY2FkMmIzYzQ1IGxlZ2FjeS10cnVuaworNTA5NjEgZWZiYWVjOTY3NGRmZDFmOTk4ZDA2NTYzNDMyMmM3ZjFhYWU4OWUxYSBsZWdhY3ktdHJ1bmsKKzUwOTYyIGRkNTFlNTZiNmNiMGE1ZDI5ZTg5N2JiYzI1YTAwZTMxNjQ5ZDQ5ZGUgbGVnYWN5LXRydW5rCis1MDk2MyAxNTIzYzM4Y2Q1MDVmZjIxOTIyYjZmOGI0N2RlMWQzZDcwMGZmMjY5IGxlZ2FjeS10cnVuaworNTA5NjQgMzg4YjdkOTBiYjg5NjNlOTdlNGJkY2ViMWU2ZDE4NzRmYjJkODgzZCBsZWdhY3ktdHJ1bmsKKzUwOTY1IGY2OWQ5MWE3Y2Y3MTQ4OTRlZGQwNDZlZTU3ZTMxNDIwNmNhM2E3ODUgbGVnYWN5LXRydW5rCis1MDk2NiA3N2YzNjUzYmZjMTQ4M2Y3NDBiMTIwYzc3OWE4ZTNmZTNhZGI2MWI4IGxlZ2FjeS10cnVuaworNTA5NjcgYWVlOWYwZDVmZDJiMTY3MjQ1M2FkZWU5ZGU1MjBiNjNjNzNiNmNjOCBsZWdhY3ktdHJ1bmsKKzUwOTY4IGI3NDViM2ZkNjZhNjQ5YTVmYTU0MGJkZjQ3OTcxYzI2YWYwYTk1OWUgbGVnYWN5LXRydW5rCis1MDk2OSA3ZGM1ZjNlZGU0Y2RjNjJiZmVmYjFkNzBiZDBiYWViY2Q5NzU4MzY0IGxlZ2FjeS10cnVuaworNTA5NzAgMDQxZWI2MjMxY2RjMjQxNmQ5Yjk1ZDA2NWE4MmVjYjFhMTQ3NTU1MiBsZWdhY3ktdHJ1bmsKKzUwOTcxIDFiNGU1ZWIyMTA0OWZiNWU1OWEzYjI0NDY4YmM4ZGM4OTcwMjBhOTkgbGVnYWN5LXRydW5rCis1MDk3MyBjZWJlZTFmODUyMjIxOTExYWRiMGJiMDk1NmIxOTc1OGQ0ZmFjNjJjIGxlZ2FjeS10cnVuaworNTA5NzQgMWViOTIxNTY0MWE4ODQ0ZWE2NDJjMTQ3NzhjZDMwMzA1ZDNlMzJiOSBsZWdhY3ktdHJ1bmsKKzUwOTc1IDIxNjg3N2I4NmJjMjg2NWY3NWFmMWEzOTUzZWM5ODhjYzUyMjk1ODUgcmVsZWFzZTI0LW1haW50Cis1MDk3NyA5Mzc3YzY2MDQ1NDJjZTZlYWJmNWQwZTYyY2Q0NDM1ZGU2ZDFlYzllIGxlZ2FjeS10cnVuaworNTA5NzggMzYxZWY3Y2VlZjI4ZDlmNjNlYjNlNWM3ZTU1NzU4M2YwYTEzNTQzZCBsZWdhY3ktdHJ1bmsKKzUwOTc5IGJkZTU4YTc4ZmM3MTJlMmE5NzI1ZDQ3NDU4MWMxNGM5YjMwYTFlMzcgbGVnYWN5LXRydW5rCis1MDk4MCBkOTNhMDQzNDBlNmJiYTU3NDdlZjBiMmZmMDk5ODA1MWU2ZmM5MWUzIHJlbGVhc2UyNC1tYWludAorNTA5ODEgNjVlN2I0MjIzNDQ0ZjM2Yzg2N2Q5NzAxMmM0MGU5NGQ0ZTMyZjEzMSByZWxlYXNlMjQtbWFpbnQKKzUwOTgyIDliOTU4MDk4MjAzNTViNmYxZTQ4NzQ3MWJjZTFlYjkwNGQ3NDA3MGEgbGVnYWN5LXRydW5rCis1MDk4MyBjOThhMjM1Mjk4M2E0OTZkMTRhOThkMDk5MzBlNjRlMWZmNzE1M2ZiIHJlbGVhc2UyNC1tYWludAorNTA5ODQgMjljNzYzNWQwMTk5YWM1YmUyYzk3OTk0MmVlMTAyYjA5Y2IyNDZlMSBsZWdhY3ktdHJ1bmsKKzUwOTg1IDdmNDRkNjM0ZjM3N2JkNjg5YjM5ZGQ0ZmIyYWZiZmU4ZGZlMDkyYzkgbGVnYWN5LXRydW5rCis1MDk4NiA0YWVkNDM2N2FkZDI3Y2VlYmZiZGQ3ZDg1M2YyYjAyNTBjMDZhOTkyIGxlZ2FjeS10cnVuaworNTA5ODcgZDBlNjE3MDcwNGRlZTg1MDk2MDE0YjMzN2VkMDQxZDMyY2IzMWFhZiBsZWdhY3ktdHJ1bmsKKzUwOTg4IGM4N2EzOTUxZGZjNTBhYTA3MThiZmQ4ZTIwYjA5YzY2OTFmMWQ1MDkgbGVnYWN5LXRydW5rCis1MDk4OSA0ZWQ1ZDRjOGU2NTQyNGY0YTgxMWEwNTdhYTU3NzAxZjJkOWVlMGEzIGxlZ2FjeS10cnVuaworNTA5OTAgMzk1ZDE1ZTgzNzRhNzBhMDZhNDZkYzQ3ODMyODBkMzNjMDg1M2UyZSBsZWdhY3ktdHJ1bmsKKzUwOTkxIGFlYzY2NjhjNThkMWUxZjg5MDJmZTg1ZDUyMDY3MjIxZDljOWViNTIgcmVsZWFzZTI0LW1haW50Cis1MDk5MiBjZjA0NmUyMmQ3ZGQ1OWM0Y2EzMmQyNDczNDNkNjhiZDEwMWEyZmJkIGxlZ2FjeS10cnVuaworNTA5OTMgOTMwYmIxZWI4ZGQ1ZDFjYWM1Mjk3NDE1MzQ4ODE0YmY3NDdkODUyMCBsZWdhY3ktdHJ1bmsKKzUwOTk0IDNkZDQxMDFjYjdlOTc3OWZmZjQ0NTIzYzdiYTlhZGE2Y2M3NTliOGMgbGVnYWN5LXRydW5rCis1MDk5NiBmN2YxMGE4Yjk2ZWU3ZDYwMTRmNzY0ODdkZDdlMDM5NWNlNTAzN2Y1IGxlZ2FjeS10cnVuaworNTA5OTcgN2YwNDc5M2ZlMTM1ZTVlODg0OTU3YTU3NGY0NWUyNWEzMzg0Mjk5MSBsZWdhY3ktdHJ1bmsKKzUwOTk4IDkxMDE1MTUyNGY1ZWViMGQzMTUxMTNjYWY1Y2EwMTBlNjhhYWIzNWEgbGVnYWN5LXRydW5rCis1MDk5OSA2NjI4MTQ4OGU5MDIzYTgyMmQ2OTdhZjk1YTc5ZWVjMmVkNzAyMzgxIGxlZ2FjeS10cnVuaworNTEwMDAgYjc5YjY4YjgyYTQ0NWMzMzExZTI1OTIwYzg3NTU3N2Q4ZjQ5ZDU0MSBsZWdhY3ktdHJ1bmsKKzUxMDAxIDg2ZTgxZGVmYzI4NTZlNjAyMDgxMGY1OGVlNzc0MjdhMGRlOGJkOWYgbGVnYWN5LXRydW5rCis1MTAwMiAzYjc4OTU3Yzc3OTE5OTg0YjAxM2JiOTZkYjgwNTM1ODUxMzhhYzFiIGxlZ2FjeS10cnVuaworNTEwMDMgZjNlMDg5MTViODdiNDQzNTYxYjNjMzNiMTQxYTY1NGNkMThjYTFmMyBsZWdhY3ktdHJ1bmsKKzUxMDA0IDg2YzM2MThhNDljM2YzYTU5MjQ1OGY1ZWU5Yjg0NzNjZDFlOTk4NWUgbGVnYWN5LXRydW5rCis1MTAwNSA0OTY2YjE3OTYzYjQxZTdlN2U2MDYxZTRkZWU2ZTQ1ZDBjYWEwNDlhIGxlZ2FjeS10cnVuaworNTEwMDYgM2RlOGE1OGFlMGI5ZThlMTJkZWUyNDEzYWI0YjZmZGI5NWVmM2QyOCBsZWdhY3ktdHJ1bmsKKzUxMDA3IDM5MzhlNmVmYTc5M2Q2YjMxNzZlNjVjMDM4NzMwMjNlNDM0N2M4MjMgbGVnYWN5LXRydW5rCis1MTAwOCAzMTVhNjZkMjI0N2E3OTFkM2IwY2Y0MGE3MzI1NDQyNTQ1MDgxODMzIGxlZ2FjeS10cnVuaworNTEwMDkgZmYyMjNiOTVmMjA3ZTA5ZDMzYmM1MDhkNmUyNGU0ZGEyZmM4ODAzZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDEwIDlkN2M0NWQwZDFiZjdlYzM2OWZlNzgzYzE0N2I5OWEyYzJhZDAyOTcgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMSBlZTJkNDZhYzJmNmU3YjViOWYxNmU0Nzc3NzU5ZDlmODkzYTM2MDQ2IGJjYW5ub24tc2FuZGJveGluZworNTEwMTIgMWMwYzEyODM4ZTYyNTNlZGYxNTExODgwODFkMzEyMjk2ZWIzZmVmOCBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDEzIDgyYjY3NTdmZmZmNDc2YjU2MTQ1NzVlNjJmMmU5YjRiNzQyNTkxYjYgbGVnYWN5LXRydW5rCis1MTAxOCA5MWNhNmVlYWViNGFjYzU2NGUwZmFhYzM5ZWExMGIyNzMzYjRlNWIxIGxlZ2FjeS10cnVuaworNTEwMjAgZDM5YWVlNmNkZDMyY2ZhYmQxY2JkZWEyYjYxNzdlMmYxZDZkYmI3OCBsZWdhY3ktdHJ1bmsKKzUxMDIxIDUzZDA1NTJhN2E4YzUwNzE1MTNiYjEwNjc1ZTkyMDk2YWM0NmE1MGYgbGVnYWN5LXRydW5rCis1MTAyMiAyOTE1YzA3MjlmMGE4Y2U2ZDMxOGIzMTM5NTZjMWY1MmM0YmNiMDBmIGJjYW5ub24tc2FuZGJveGluZworNTEwMjMgN2UwMzE4M2ViN2E1MmExYzk0YjBkYzU3NTQ3OGZlMDUwZDhhZDgwNiBsZWdhY3ktdHJ1bmsKKzUxMDI1IDE1NjdjMDFjY2E3M2Y5ZjY4NGUzYmY2NjBmYjlhOWIzNjZlNGE1MTggbGVnYWN5LXRydW5rCis1MTAyNiA0NjM3N2IwNWUxODE1ODkxNWI2NDc4NWUxYTBlNzk2Y2Q2YTgxZDdlIGJjYW5ub24tc2FuZGJveGluZworNTEwMjcgMmYyMjFiZGQ5ZjQ0YjhmOGM5MTM3YzcwMmU2MTM0YjU5YmY0OTgxYyBsZWdhY3ktdHJ1bmsKKzUxMDI4IDIzMmQxNTZiZWI4MmZjNmFkNDJlMjg5MzA4ZTBlNzZhZmY1OTVjMzcgbGVnYWN5LXRydW5rCis1MTAyOSBkMjBiOWEyZDhlZTczMDIwNGJhMmFkYTdmMTRkOWRmZmRlYWVhMzkxIGJjYW5ub24tc2FuZGJveGluZworNTEwMzAgY2Q4MmViZmM2NmFmZDQ2NGY3NGVmZTIyYjgzYmIyYWVhODVkYTdhMyBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDMxIGJkNTBhNDJiN2RmMGQwYTZlZGYxMjUxYjI3MzgyYWJlZTI3ZTM2ZTcgbGVnYWN5LXRydW5rCis1MTAzMiA0ZjE1YWJiMTIwZGM1MTYzMjM4NWIwZWQwMjEwMWMyMTEyZTNjZmJlIGxlZ2FjeS10cnVuaworNTEwMzMgN2Q2Yjk3MTU4MTgwNWE3NTBiZWY0ZjViNDU5MjU5OTA2ZGI0NWQwMCBsZWdhY3ktdHJ1bmsKKzUxMDM0IGZhMmRhYzM5MjZmZmMxNTlkYTEzOTZkMGE4MDgwNTBlNGIwZTA4M2IgbGVnYWN5LXRydW5rCis1MTAzNSA1OTc2MmU3OTYyODEyZmE3ODY0ZWQ5NDIxZmVkNTJhN2JhMjVlYzljIGxlZ2FjeS10cnVuaworNTEwMzYgMTJmZmVkOTI3YTNkNDVkMTk1MGFkYzUwYjY5ZmZiNjYwNDVjMTVkNiBsZWdhY3ktdHJ1bmsKKzUxMDM3IDM0NDM2NGI0OTIwODU2ODg2OTM2ZTFlYTVmOGY0ZjkwM2ZmMWQ1NGUgbGVnYWN5LXRydW5rCis1MTAzOCAwMDM1MGNiZTBhOWU5NDg3Y2I2ZjY1ODA1YWY1ZDg5ZWI1NjgyMWMxIGxlZ2FjeS10cnVuaworNTEwMzkgODVmZGNkZmNhODVjMWNiYTFiOTdiZWM2ZmUyY2ZmOGYyNWEzMjhjNiBsZWdhY3ktdHJ1bmsKKzUxMDQwIDVmOWZhMGI4NjNhZWU4MGY5OTIzZmVmNWUwOGUxNDNlNDY3YmEyOGMgbGVnYWN5LXRydW5rCis1MTA0MSA4YjkzMTc0ZDUwMWE0Y2I5YjRlMGRkODAxYzM3YTQwMDY4Nzg1MGMxIGxlZ2FjeS10cnVuaworNTEwNDMgMWVhZDQxMjIxYmQ4ODBlYzE5YWQxMjU5YjI5ZjNhMDU2YTRkN2QyYiBsZWdhY3ktdHJ1bmsKKzUxMDQ1IGNlMTBlM2NjN2FlYmU4OWYyNGI3NDc4YTUwOGI3MDhjMzYwMTE3OWYgbGVnYWN5LXRydW5rCis1MTA0NiA4MmY1NjIwNzY1MmY2OWNhYjJhOWMyMzA2NTU2N2VjNDA3MWVjNGQ4IGxlZ2FjeS10cnVuaworNTEwNDkgYzBhYmIxODI5OWI0NDJlMTE2MGQyZjk1OGJjZTE4ZjY2ODUwY2FhOSBsZWdhY3ktdHJ1bmsKKzUxMDY1IGNkY2YyYmNhZDYyNGVhOGJhYzYzNjU2M2RmYjgxOTMwMDQ3NDBhN2EgYmNhbm5vbi1zYW5kYm94aW5nCis1MTA2NiBjMzg5OGE3M2IzODYwNzg3NTEzN2YzZjM3ZGE5ZDcxYmJkNzI4ODhmIGxlZ2FjeS10cnVuaworNTEwNzkgZWM0ZjM1ZDJhNjkzY2UxOTUwMmYwNmQ2YWI0ZjRjNWI1ZDE4ZmVmMyBsZWdhY3ktdHJ1bmsKKzUxMDgwIGI5MGE4YjAzOTViZDQzZmQxOTM4NDI0NTFkMGM0OTU3M2I0ZDcxNjYgbGVnYWN5LXRydW5rCis1MTA4MSA4ZWYzZjhjZjkwZTEyMWEwYjQwYTBlM2ZiN2MzMDg2YmMwYTkxNDQwIGxlZ2FjeS10cnVuaworNTEwODIgNzViZjc3MzY3ZGEzMjBiMTI1OTM5ODlmZTkxZWJlY2Y3ZWJiMjRkOSBsZWdhY3ktdHJ1bmsKKzUxMDgzIDgyOTZmYjk2Y2MxODRmNjRhMDA3ZmE0NWY1NmY4MGViNzc5NzE4MGQgcmVsZWFzZTI0LW1haW50Cis1MTA4NCA1NWY4MzAxODM1MzI2ZTZjYmFiZmYyYThmODc3NzMzOWMwYTIwMTU3IGxlZ2FjeS10cnVuaworNTEwODUgODQ5NzRjNjc2OTAzMWQwZjU3YWZjZTU4MTg3ZjcyNWI3Yjg0NDBhYSBsZWdhY3ktdHJ1bmsKKzUxMDg3IDc3Y2YxOGI4YjFjZTEzMzAwZGM5ZDFmODc0YzU4ZjA0NzczZWIzNGMgbGVnYWN5LXRydW5rCis1MTEwNCAxMDA0YTE2YjBmMDkxYmI3ODNmMjg0MTk1MTkxMmIwZmJlZmE3Y2E0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTExMDkgZWIyM2QwOTZkNjk0Njg5NTE5NDc2ZjZhY2NjYThhYjZkMTIwMjNmZSBsZWdhY3ktdHJ1bmsKKzUxMTEwIGE5Yzc0MmQ2Yzg4OGVlMzM1MzFiYWRiZmVlOWZkNGQ3MzE3MWYxMmMgbGVnYWN5LXRydW5rCis1MTExMSAwMjM4MTY2ZjA3YjcwMzVkYzY2YTI0MGYxMjNiNjc1ZDZkNTNhZDMzIGxlZ2FjeS10cnVuaworNTExMTIgNDA1ODVmYjM4N2JiYWE4MjM5OTA0YTYyN2EzYWY1NDlkZTVlODZhNSBsZWdhY3ktdHJ1bmsKKzUxMTEzIDQ2NWEwNzhkMmNhNmI3YTM2ZDg5MTNmMzQ0ODAzMjYyODRmN2ZmMzIgbGVnYWN5LXRydW5rCis1MTExNCBhYTBjYzc1NTA3NGViODkxMDFjMzZkNWE1MDA0YTdjMDQ2NDM2YTdiIGxlZ2FjeS10cnVuaworNTExMTUgZWZhODA2MzMzMDlkYTg3NDVjMjNkYmNjNmM3NjMxM2JhNGM0OTcxMyBsZWdhY3ktdHJ1bmsKKzUxMTE2IDY1NjdjMzJhYjg4MTU1MGUwZTBjMTUyM2IyZDBiZGU1OWQzNDI2ZWQgbGVnYWN5LXRydW5rCis1MTExNyA5OTlhNDkxNGQ1M2NiNDFmN2RkZmYzNDBiZTkwZWY2MTVjNmMzM2VmIHJlbGVhc2UyNC1tYWludAorNTExMTggZmY0YjE1NzgwMzk2ODMzZjVhOTRkZTlhNDQ0MGM3NDkwMGVmZTc3YiBsZWdhY3ktdHJ1bmsKKzUxMTE5IDljYjQ1NjVlNjBjYWI0MzIxMWFjNDViYjBkZTU0YmEwMmQ1YWY4YjAgbGVnYWN5LXRydW5rCis1MTEyMyBmZTQ0ZGNiZTEzZjJjMjc3YmFiYjJhNDk2MGVkYTIwZTgwNjI2NWUxIGxlZ2FjeS10cnVuaworNTExMjYgM2JmZWYzZGIzMmIzOTJhNGY2MGIwZjFmMzljZjViMmQ1YThiMTMzNSBsZWdhY3ktdHJ1bmsKKzUxMTI3IDQwNDE1ZGY1YmE5ZGU1ZWI2NzRjNzRkZjdhYTNiMjZhNGU0OGQ4NGEgcmVsZWFzZTI0LW1haW50Cis1MTEyOCBiOTBmZTRhZTMwMDgzNDYyZDc5ZmUyODZlYWY0YWE5ZjNiZGFiOGEwIGxlZ2FjeS10cnVuaworNTExMjkgNTAwOWRlNTA0ZjkyNDAyMWE0MDMyZWQ5NjdlOGY0ZmU2NWU5ODViYSBsZWdhY3ktdHJ1bmsKKzUxMTMwIDIxNGU0YTQzODRmMTJiMTJmNDJhYWJhNDUxOGQwN2M5NTIzYWU5ODkgcmVsZWFzZTI0LW1haW50Cis1MTEzMSAyZTYzMGIyZDViNDQ2MGVkOWE2NjJjOGEwOGQzMTA5MTg5MDRmZTE1IGxlZ2FjeS10cnVuaworNTExMzIgNzJhM2Y3MjNlZmQxNjk3MjA0OTZiN2EyMzUzNGM1Y2UzZjcwYjM5NyByZWxlYXNlMjQtbWFpbnQKKzUxMTMzIGZjMTAxY2MzNTRhNzlmYjY1MGRhNWIxNTliMjg3YTkzYjgwYjFmOWMgbGVnYWN5LXRydW5rCis1MTEzNCBiN2VhYjFjMThlOWQzN2JjN2UzODNmZTE4MmI3ZDEzMTg4ZTY5MDI1IGxlZ2FjeS10cnVuaworNTExMzUgNTk0MzI5NmE1MTgyMTVkNzAwMzY3YjUyMmNhZmYxZTBiMDNlNzczMCByZWxlYXNlMjQtbWFpbnQKKzUxMTM2IGI1MDI2OGY0NmZmZjlhNzYwZjMwNWU5MTc0ZWQ4NGRjYjdkOGQyMDIgcmVsZWFzZTI0LW1haW50Cis1MTEzNyAzMzUwNDc0ZjM0MzNjOTlkMmRlMGJmNDAxMmUwZjdlMGY2ODA0NzczIGxlZ2FjeS10cnVuaworNTExMzggZjVhN2Y0ZGQ5M2UwZDg3NWQ4YTYzNWI0MmFlNzY1YTlkMDc4NTFkZSBsZWdhY3ktdHJ1bmsKKzUxMTM5IDk5Nzc4OGRlODY2NzMzMGNlOWYyMmExNmU5MDc5ZjFjNGYwM2VhODMgbGVnYWN5LXRydW5rCis1MTE0MCAyNDg1ZWY0YzVkNDlkMmJlMDliNjMzMmY2YmZmNTI3NzdkMzYxMDYwIGxlZ2FjeS10cnVuaworNTExNDEgMGJjNmNmYjZiNWZiMjFhZDE1NjhjZWI4MzRkZmM0YzAyZGU0OTQxYSByZWxlYXNlMjQtbWFpbnQKKzUxMTQ3IDllZDU2MGIzNTEzOTgwZDRjNjQzY2JlNTM3ZGQ1ZTA5ZDg5Mjg4NTkgbGVnYWN5LXRydW5rCis1MTE0OCAyOTBjNTgyYTIyZDA0Mzk4MjM2MTY4NThmN2M5NWViOWQ3ODVjNzI1IGxlZ2FjeS10cnVuaworNTExNDkgYjY3ZjUyMmQ3NmQ3OGQ4MDAyOWU1NThjNzMzNmU5MWZmNDhlOTY4NCBsZWdhY3ktdHJ1bmsKKzUxMTUwIDE0Yzc2OTQ4OTUzZDVjNWY3YzY0ZDIwZTMxYTRhMzYyYzk3MWI2MTMgbGVnYWN5LXRydW5rCis1MTE1MSAyZjAzMTY0OGU1ODc4NDQ5N2VlMjVhYTIxOTExYjAzZTZkYzJkMTc2IGxlZ2FjeS10cnVuaworNTExNTIgZDE1NDI2MGY0NmU4ZjdkNzc3ZDllZGE0ZGYzMzUyNDViZWMwYTY0MiByZWxlYXNlMjQtbWFpbnQKKzUxMTUzIDU2YzBlMmY1OTZlNzZmMWQzMGYzM2YwMWJkYzM2MjkxOGMwYzBhMjggbGVnYWN5LXRydW5rCis1MTE1NCA4ZGM2YmUzZTExZTAwYTdjNzZlMWViODU1MzgyMmFlOTYwYjhiNDBlIHJlbGVhc2UyNC1tYWludAorNTExNTUgZGU0OTdjNDFlOWFkZWZjOGI2ZDQ0Y2QxMWNlZWYwNWE5NjM2MWZjNyBsZWdhY3ktdHJ1bmsKKzUxMTU2IDU2OTE2MjQyNjlhNWE2MDY3NmZiYTVjNWY2ODQwMGMxN2YyZGZhZGIgbGVnYWN5LXRydW5rCis1MTE1OCA5ZDA4OWFhNThlMmY0YjVjZTRjYWQ5YzRmNTFkMzkxYzNjMmFiNjVjIGxlZ2FjeS10cnVuaworNTExNTkgODAyMjkyN2MxN2E4NDY0Njg1ZGU1MmZiNjRhZjBiMzIzNTQ1Yjk4NCByZWxlYXNlMjQtbWFpbnQKKzUxMTYwIDViOTY5MmY2NjI5ZjQwN2FkZTk0YzliNzg4M2VhZjBjOGYwNjAxZWYgbGVnYWN5LXRydW5rCis1MTE2OCA2Zjc3NTE4YjYzN2RiM2I4ZmY5ZmUwOTFiM2VmMzliNTc5OTYwODYzIGxlZ2FjeS10cnVuaworNTExNjkgYjk1YjlmNDE1N2E4MjIxMzMwMTIxOGY1NWQ0ZmRiNzYzNTAyOThkZSBsZWdhY3ktdHJ1bmsKKzUxMTcwIDVjM2Q0OTM4NTgxNmQ3MDZmN2EyMmQ5N2E1MDg4OGFmYjlhY2ViZTcgbGVnYWN5LXRydW5rCis1MTE3MSAxOTkzODhiNDZjODNhMDBiZWQyZjE4ZmY2YjEwZmZjMGI5NjQyYmVmIGxlZ2FjeS10cnVuaworNTExNzIgOWE4MDgxY2Y0YTcwZGFiNDZiYTBmMTA2MzEwY2MyMTkwY2JiOWQzNyBsZWdhY3ktdHJ1bmsKKzUxMTczIDBmM2FkNWI5MzZhODU3MmJmZTdjMDdkOGUzNzUzODY3M2YyMjg3ODQgbGVnYWN5LXRydW5rCis1MTE3OCA3NGQyM2NkMDQ0MjEwNGZmOTc1Yjg1ZTFiNzRmNWU0ZWEyM2Q2ZTJiIGxlZ2FjeS10cnVuaworNTExODAgN2Q2YjJlMDRlNDM5NTQwNjAwZTk4NTkwYTI4MzFhZDg1OWYyODgxMCBsZWdhY3ktdHJ1bmsKKzUxMTgxIGZlZWU2NTgyMDExZjE3NzZhNmUxZGU4OTVmYjMyYjNlZTkwZDdjYTUgbGVnYWN5LXRydW5rCis1MTE4MiA5MjIyZDBkYWFiM2M2YWVkZWIwMWE5NDc1MTQ3MjUyN2Y4NjEwNTRiIGxlZ2FjeS10cnVuaworNTExODMgMTU2YjI4ZjBmMmQzNWFjMDBlODJjNjNkMmExNDAxODJjOWM3ZWM3NiBsZWdhY3ktdHJ1bmsKKzUxMTg0IGRkZWE0ZDM3YzgzY2E0NTFjMzA3OWNhZDg1NWQwNGU1ODliODMxZTkgbGVnYWN5LXRydW5rCis1MTE4NSBiOGUzN2UwMjY4ZjJjYWMwNDJkOTJkMTYyMDE2YTQzYzEzOGY0ODYxIGxlZ2FjeS10cnVuaworNTExODYgMjZhNmJlZGQxN2UyMWRiMTA2OTczNmRlMzI1MjU2NmM1NmRlM2NjZCBsZWdhY3ktdHJ1bmsKKzUxMTg3IDNjMmJmNzk1MjZiZTg5ODE0Y2QwMjE3MTA0MDM0MTg3OGJiZDNmNTggbGVnYWN5LXRydW5rCis1MTE4OSBkOGZhODEwY2ZkNTRkZmQ4ZjI3ZWVhM2JjMjJhMTUxOGQwM2IwMWMwIGxlZ2FjeS10cnVuaworNTExOTAgOWYwODUxNmE0ZDBjOWU5OWQ3ZjRiZDRlNDc5MjIxM2UyMmE4ODNhMSBsZWdhY3ktdHJ1bmsKKzUxMTkxIGVhZDQ4YTgyMjI5NWM4M2UxZjFlODE0MWM3OWJiZWFhYWMyNzBjNWMgbGVnYWN5LXRydW5rCis1MTE5MiBlNTVmNmQ3MjI0MDRmYTkyYjJhNDNjNzJmZjIxMzI3ZDdhNDcxNGIyIGxlZ2FjeS10cnVuaworNTExOTQgOWIzMjYwZDgzNTU4Nzk1ZDFhMWQzMWRiOTU4ODFiNjI2N2VlY2VhZCBsZWdhY3ktdHJ1bmsKKzUxMTk1IGRlOWUxYTVkY2E5MzY2MWE3MDEwZTc3NjAxMTg3Yjc2OWQ5NzNiOTggbGVnYWN5LXRydW5rCis1MTE5NiA4ZWQ2MmRiMTkwNWM0ZDNlMzhiNzVhZjcxYjVkOTEzOTUzZjE3N2ZlIGxlZ2FjeS10cnVuaworNTExOTcgMmFjYTRmMDQwMDEyY2ViMDhhY2YwNWNlOWE3ZGMyYjM4NjUyMzczOSBsZWdhY3ktdHJ1bmsKKzUxMTk4IGJlMTA3YjA0YzI1MjViNmI4MTEyYTIxYmE2NTQxMmRmMzAwMDA1MDkgbGVnYWN5LXRydW5rCis1MTE5OSA2YWFmNTVmNGQ3YTNiNmQzNWZkOTEzNzA1M2QzOTViYWE4NDI0OTUxIGxlZ2FjeS10cnVuaworNTEyMDIgNmFiNGMzOWZkN2EzODNmZDlkOTQyZmNkOGY5YjdiZTg4NDU4NjA3ZCBsZWdhY3ktdHJ1bmsKKzUxMjA0IDg2NDE3MjUxNWVlNzZhM2I0NWRmMTQ4ZjY2ODJlOWMzOTMwM2I4ZjQgcmVsZWFzZTI0LW1haW50Cis1MTIwNSA0OGZkMzg4NzM0NjM2ZGExYWQwMjNiZTg4NGMzNDRhYWE2MTNjMzQyIGxlZ2FjeS10cnVuaworNTEyMDYgMTA4N2RmMDBhNmU4N2I5MWQ2Njc4NzI1MmNkNWE2YmRlMDBlYWMwMSBsZWdhY3ktdHJ1bmsKKzUxMjA3IGU3Nzg3NTdkMzMzMDcyMDE0NWU3NGZkYzVkYjAzZTJhOTVmYWEwMDUgcmVsZWFzZTI0LW1haW50Cis1MTIwOCA3NzkwY2QwY2FiZDA0YzlkMTFkN2U4NTZmYjM2NWU3Y2M4MDRlYjk0IHJlbGVhc2UyNC1tYWludAorNTEyMTEgNjU0YzM4MGNmOGI5ZjA3OTE1NmUzMjExMWQxNjJhZDgwM2M4OTMxOSBwM3lrCis1MTIxMiBmNjliZTNjNmEyZDQ2MzY0OWJjNTY4NDY5Mjg4Mjk0OGEwNmM5NDU2IGxlZ2FjeS10cnVuaworNTEyMTUgYjk5NWUyNzYwZGE0NzJjM2I1OTBkMzY5M2I4ZmQ2NTY5MTQ3MzRlMiBsZWdhY3ktdHJ1bmsKKzUxMjE4IGUxMWNhYWQ3ZTAyOWRjOTBiOGE3ZDNiODY5NGM4MmQ5NDc1MWQ4MzQgbGVnYWN5LXRydW5rCis1MTIxOSA5ZjM5MDg4MmEyYzNhNTFlMDg3ZDFjOTE1OGQ5MjA4Nzg5NGM2YWUwIGxlZ2FjeS10cnVuaworNTEyMjAgNzFiMGFjODBhMTM1ZTNlMmJhY2EzNjEyYjIzMWI3NmU2OWNlYzc5NiBsZWdhY3ktdHJ1bmsKKzUxMjIxIDIxNzlkOWYxNDI3ODE3M2JlOTVkYWIzZGUwYmFlYzcwNWU3YjdiNjMgbGVnYWN5LXRydW5rCis1MTIyMiA4NDJiZDYxMzRlOWQyMWEwMTNkYTdmNTkxM2M1YjZlNTU4ODEyYmZjIGxlZ2FjeS10cnVuaworNTEyMjMgYTgwZGY1MzMwNmYwZGNmZjc5ZGMxOGQxOTZhYmRiODg2Mzk3ZGVjNyBsZWdhY3ktdHJ1bmsKKzUxMjI0IDZkNTM2ZDQzYzFhMDY1NGM0NjY0MTk5MzQwZWFlM2I1M2YwMWE3MGQgbGVnYWN5LXRydW5rCis1MTIyNSA4MWM2YjBlZDMxODhkZGNjMjlkMjFlMDdjZjYzNmRmNzRmMjE2ZDA4IGxlZ2FjeS10cnVuaworNTEyMjYgMjdmOWI0ZmVlMTRmN2I2ODA4YzdhZjI2YTA0ZmIyYmVkOWNmNjcxYSBsZWdhY3ktdHJ1bmsKKzUxMjI3IDlhMTI4OGQ4MjAwZjhjYjNjZTIyMGE2ZjJkNzlkODhhYTJkMjc2NDIgbGVnYWN5LXRydW5rCis1MTIyOCBlZDY1NzY1ZWI2NzliNTAzMzE2NGYwYjRjYjE0MmFiOWE1MjA2MzA2IGxlZ2FjeS10cnVuaworNTEyMjkgNmE4ZjAxNjYwYTNiMmRlNGYwOGJiMjJjNTNjNjMyYjcyYmUzNDg2OSBsZWdhY3ktdHJ1bmsKKzUxMjMwIDhiOTFmZjY5OGY0ZmYyZjNkZjU1NmJlNTIxZDEyMDFiZDY0ZDhjOGMgbGVnYWN5LXRydW5rCis1MTIzMSBkZWI3NDhmMzNjMWRiNTJlYjA4NGYyYmFlM2VjM2QxY2RjNGI4ZDdmIGxlZ2FjeS10cnVuaworNTEyMzIgY2UxMWM2YzE5MzlkYjY4NGYzMDY3ZWE2NDRiNmQ0N2JjOTFlNDVkYSBsZWdhY3ktdHJ1bmsKKzUxMjMzIDE1MTA4NjZjOTIwZWI4MmU2Mjc3M2I1YjA4Yjc1MWMxODgxYzNlNTMgbGVnYWN5LXRydW5rCis1MTIzNCAyZGJhZDUzZGUyYjEyNzE3YzA3OTBiYzY0MWIwMzQ3YmJmZWYxYTUxIGxlZ2FjeS10cnVuaworNTEyMzUgNjhiZWQ1MzQ4NDU0MDIzY2NlYmI0MDJmNWIzNzA1Y2U4MjkzN2ExZSBsZWdhY3ktdHJ1bmsKKzUxMjM2IDZjYWZkYzgxY2ZkZTg2OThlNmI4M2U2ODJmYTI0YTI2OThmNjIxZjggbGVnYWN5LXRydW5rCis1MTIzOCA0OGYxZGJjNTc4NDUwNjFmYWE1MGE1YzIzMmVjNTNhYjE2NTJlMzY0IGxlZ2FjeS10cnVuaworNTEyNDAgZWNlOTdjZmU2MDgzN2IxNzg2ZWRmOTM3MmY5ZTJkOWM3ZjJjYTEwYyBsZWdhY3ktdHJ1bmsKKzUxMjQ1IGM3ZmYwMmMxNTU5ZmQ4NjZjYzA4N2FhYzA2NTg0OWIxY2NhMDNmYmYgbGVnYWN5LXRydW5rCis1MTI0NiAzYmU2NjI3MzIzYjlkM2EwNWVhNzBlMTNkOGY2YzFhMmEyMmUxZGViIGxlZ2FjeS10cnVuaworNTEyNDcgNTc0ODIxNzZlMTAxMTY2M2UzZmM1MDkyM2M0NGIzODhkZDhiZjliOCBsZWdhY3ktdHJ1bmsKKzUxMjQ4IDcxYmFhMDY3NjdkZGMyOWY3ZDY5MTFmYTljNmU1NDVmZWE3NjcwYjkgbGVnYWN5LXRydW5rCis1MTI1MCBkYWVkYWFjZjdlMTEwYTNjZDFhMjM2Njg5MDE0OWI3MzJiMWMxY2NjIGxlZ2FjeS10cnVuaworNTEyNTEgNTMxYjM2NGJiYzBlMGQ4MTVjZmVlYzIyZjA5ZTI4MTYzYzQ3ZDE4ZSBsZWdhY3ktdHJ1bmsKKzUxMjUyIDgxNThiNGUwYzdiOWI1YzNiN2QxYjk5MGE3MzQ5ZmY4N2QwZDFkZmUgbGVnYWN5LXRydW5rCis1MTI1MyBiYzc0YWZiOGU0ZWY2MWQ0OGJkOGYxOWRiNTY2ZmQ2MjliOGU3MjQxIGxlZ2FjeS10cnVuaworNTEyNTQgMjRkMmNjMzMwMDBjYjE4NWY1MWVmMzVlM2FkNGQxM2M3ZjA4OTYyMCBsZWdhY3ktdHJ1bmsKKzUxMjU1IDI0OWE1OWFjYjZlZmNmMDIwNGYwOTY5ZTc2ZjU2NTZkNGIzZGI0YzEgbGVnYWN5LXRydW5rCis1MTI1NiA3MTIzMWJjNDg2MjJlMzZkZWUzNjAxMTdmYzIxMjc5NWQ0MDk0M2JhIGxlZ2FjeS10cnVuaworNTEyNTggMDM1NmRkOWNjMjc0Mzk2MTg2YzU4NTNhZGJiNzZlMTc2YTQ3ZjBjNCBsZWdhY3ktdHJ1bmsKKzUxMjU5IDMxNzYwNWYyY2Y2Zjk5ZTFkMTZkNWIwOWQ3ZmVlNjRjYTIyNTQyMTkgbGVnYWN5LXRydW5rCis1MTI2MCBkNTIzMWVjNmRhYzM5OWQzMzBkMzliMjNhMmJkNTc4OGIxZDYxZmQ1IHJlbGVhc2UyNC1tYWludAorNTEyNjEgZTc3MDFiMDVmZDllMjNmZDI0MDQ3NGRmOTkyNWY3MDY3MjA2NGJmYyBsZWdhY3ktdHJ1bmsKKzUxMjYyIGRmOTQ3OGJlMDYyNzlhMDQ3YTFkYTNhNjU1OTc2ZTVhYWQyODI0M2YgbGVnYWN5LXRydW5rCis1MTI2MyA4YzE2Y2JlZjc5MzI2MzU3MDIwZWFlZTZjZGYxZjYxMTFiMDIxMTE3IGxlZ2FjeS10cnVuaworNTEyNjQgYWI4NTM5YzA3YjFiM2M2ZTkyODNiNWU4ZTY3OTFlYTFmZTZlM2JjOSBsZWdhY3ktdHJ1bmsKKzUxMjY1IGMwYTU4YTg1NWFjMGUzODEzNmE1ODhlNzUxODZkOWMzMDAxMzQwMTEgbGVnYWN5LXRydW5rCis1MTI2NiA0MjE4MjZjOTQxMDRmMTNhZmY3NGM5MDdkMTVlOGNkNTVmMWYzMDkzIGxlZ2FjeS10cnVuaworNTEyNzQgYTZhNmRmZjE3OTM1NmUyOTgxZmI1NTJmMzkyZTQ0NGVjNTM3NDE0MSBsZWdhY3ktdHJ1bmsKKzUxMjc2IDYzNWIwOWIxZjU0MmUyOTE3NTI5NzZlM2Q5N2YxMmVjMGJmZTY2ZjIgbGVnYWN5LXRydW5rCis1MTI3NyBhNTUzNjllMjNmMDY5NGE1ZTc5MzNlMjAwMGVhYTNmYjZjZTE3ZDYzIGxlZ2FjeS10cnVuaworNTEyNzggNGU1YjgzYmE3YzJhNmFmOWNhMDFiY2Y4MzUzMjUwY2IxNWU2NDVmOCBsZWdhY3ktdHJ1bmsKKzUxMjc5IDY0ZmI2OGRjYTg5NjQ4YjU5ZDAxNjM3MTgzMWVhODIwMzIwYjk2MzYgbGVnYWN5LXRydW5rCis1MTI4MCAyMzEyZTE3OGIzNGQ5Nzk4OGNmZDZlNWJkZDY1ODRkODljODNlMWIwIGxlZ2FjeS10cnVuaworNTEyODEgMjU0YTE4NjkzN2E5YjQ5OWU5NzE4MmUzN2M3YmVjYjQ3ZDc5M2NjZSBsZWdhY3ktdHJ1bmsKKzUxMjgyIDE2MGI4M2M3MWQ3YTBhYzk2MDdiOGM5YTA5NjM2NjQ1MzU4N2FlMjEgbGVnYWN5LXRydW5rCis1MTI4MyBhOTUwOTAyODEwMzIxMjFhMDAyZTc2ZjQxYTZiYTU3YWRiNzIyYmFmIGxlZ2FjeS10cnVuaworNTEyODQgMTRlYzljZmQ5NzYwMGUyNjE0NjY2NDExZmMzYWQ2YjdmNjU2MDY3OSBsZWdhY3ktdHJ1bmsKKzUxMjg1IDM1MmZmZTc3YjcxZGQwZTdjYThmNjY3YTllNmEyMDg2ZGFhM2IwNjAgbGVnYWN5LXRydW5rCis1MTI4NiBlYTFmOGExMWE3MmI5YTJhMDAwYTI1NDRmODdjMTFmN2M2ZTM0MDE1IHJlbGVhc2UyNC1tYWludAorNTEyODcgOWQ2NGJkNzQ4MzIwYWRiNDBjN2UwM2JhYjkwNGZjMDg1NGFhZjA5YiBsZWdhY3ktdHJ1bmsKKzUxMjg4IGNkNjdlMTExZTFiODViN2UxNWViMWJlNGY1OWQxOTQ3MzM5NmExYzUgcmVsZWFzZTI0LW1haW50Cis1MTI4OSAyMDdlNDg3ZjQyNWRmZTQxYzYxOTkwOWU2YWQ4ZGYwOWUxNTVlOTM3IGxlZ2FjeS10cnVuaworNTEyOTAgZThjNDZjYzk5ZGY1ZWRkMmI1MzIzM2E4ODMxNDJmOThmNWQyZWUzNyBsZWdhY3ktdHJ1bmsKKzUxMjkxIDc5OWJjZjBjY2JmZDMxM2ZmNTk3MjdiNmFhOTdjZTBlNmFkY2JmNzAgbGVnYWN5LXRydW5rCis1MTI5MiAxNDlkZTcyNTY4NjRjZjkyMDBkOTcyMzJiNmYyM2RjOWQ1ZDc4ZDkxIGxlZ2FjeS10cnVuaworNTEyOTMgODQ2NzhmMDc1MGI4NDQ4MDQ3MDhlNGYwZDc0ZmQyMWQ1ZGQ0YTljOSBsZWdhY3ktdHJ1bmsKKzUxMjk1IGU5MGU3ZTc2OGNiMzUyN2FiZjIwYjRiMTE4N2Q0ODYxZjc3NDFmNDggbGVnYWN5LXRydW5rCis1MTI5NiBlNmZjNGY5OWE2MWJlMTlhYWI3YTNlYmMxZDkyYzFiZjMxOGVhZTlkIGxlZ2FjeS10cnVuaworNTEyOTggNGY5MGMxZDUzMGQ5NWM5YzkwNjgyOThkMDliMjFjOGE2OGNlNWViNyBsZWdhY3ktdHJ1bmsKKzUxMzAwIDY0YjMzMDYwZWYwOWQ1YTQ3MGY0MjY3MGE1MzY3MTMwMDZjOWQ0Y2QgbGVnYWN5LXRydW5rCis1MTMwMSBiZjViYWUxZjAwYWQ0ODVlNDMyMGUyOTU1ODQzYWExMDg2ODFiYjBiIGJjYW5ub24tb2JqY2FwCis1MTMwMiBiZTkwZmE3YWFjZGE3OWNjNzNkZGRkZmMzYWJhMjA5ODllMjkzNzVmIGJjYW5ub24tb2JqY2FwCis1MTMwMyA5NWY2NTY2OTBhMDAwODg5Y2I3NDQ0YjhhYzdjMzQ4MDEwZjcxYWU3IGxlZ2FjeS10cnVuaworNTEzMDQgMjA3ZTc3YzE0MzMwNjRiNmNjZTI3MWVhMDZhNjY0MzgzOTk2NmYxZCBsZWdhY3ktdHJ1bmsKKzUxMzA1IDkwOTdlY2ZlYjM0NTBjMDNiNWEwYTQ4NWYzYjllN2M2YTA2NzIwZjEgbGVnYWN5LXRydW5rCis1MTMwNiA2ZTdiM2RkNThmOTg3MTAzYmM3NWNmMTY0MDA5N2U3MmU2MzQ2YTRjIGxlZ2FjeS10cnVuaworNTEzMDcgOTEzMzA3NmMwYmY5NzFlOTZiZWRjMmU0ZTg5NThkZjkzY2I5MjY2ZSBsZWdhY3ktdHJ1bmsKKzUxMzA4IDJkZmUxYzYyNDM5N2E0ZGExNjI2Njk0NTI4MDFhMWE2ODk5MWU5MDggbGVnYWN5LXRydW5rCis1MTMwOSAzNzFiOWNkM2FmMTU2MDI5NWQwM2RjNTdlZTQ0ZTIyYzg1ZmE2ZmExIGxlZ2FjeS10cnVuaworNTEzMTAgNzk4YmVjYWIzOTAzYzRhYzllZTQyOTA5YmE3Nzk4NjQ3OTE5Zjg3ZCBsZWdhY3ktdHJ1bmsKKzUxMzExIDI0Y2FiMjI4YjAzOTZiNzAwMjVjYjk3Mzk0MjRkNzY0MzAzNDNkOWQgbGVnYWN5LXRydW5rCis1MTMxMiBiNTA3M2I0OGM5MjVmMWE5NzYzMDM2MjNiNDdlMjQyZWY3MzgxMzVhIGxlZ2FjeS10cnVuaworNTEzMTMgZGE0YmUwNDA4YjYyNTcyOTZhNjg3NGRmZTVlMTJiNWZmMzRhMTczZCBsZWdhY3ktdHJ1bmsKKzUxMzE0IGEyN2JkNTBlYjBmZDg3YjBjZTM5MDZiZmI0ZTU5MDYyN2Q4ZmRjYjEgbGVnYWN5LXRydW5rCis1MTMxNSBjOGNlMzk5NDVkZjVmODc1NzliMGI2OWMyMzNlMGRhZDBkNDNkYTZhIGxlZ2FjeS10cnVuaworNTEzMTYgYTVkMGY5ZmJjYmY0YjgyNDI1ZDAyNTBjZDA1OTNlZjFmNzlhZjU0NCBsZWdhY3ktdHJ1bmsKKzUxMzE3IGQyM2I2NjdmMDRkYTJiZTFlNmMxNzc2ZGVhZWEyMTU0YWE1NjRjYzIgbGVnYWN5LXRydW5rCis1MTMxOCA0YmIzNGViNDg3MzY3NDcwZDRjZjI2ZDJlOTIzN2FhNWU5YjljNWVlIGxlZ2FjeS10cnVuaworNTEzMTkgMTM1ODQwNGQ2ZGQ5ZWU5NDUyZmNjMjk0OGZjMWE5YjdjM2FjYWRmMyBsZWdhY3ktdHJ1bmsKKzUxMzIwIGZmZTdkM2FiMzVhODM3MGQxNjMwMDMyMjIyYzQ5MDQyNzdiMjk2OGEgbGVnYWN5LXRydW5rCis1MTMyMSBmZTgwYmIxMDJhYjZkNTFlMGY5NGVmZTA1ZWU0NTIxMjg0MWE2ZjhjIGxlZ2FjeS10cnVuaworNTEzMjIgZDgyMjE4NTU0ODk3MWFiN2Y4MDgzMzMyNjE1Mzg3OTAzYjc3YWY1MSBsZWdhY3ktdHJ1bmsKKzUxMzI0IGVkZDgzZjE2MjQ1M2FhMzA4ODhhNjU3ZTQzMmJhNmYyNDBmYTc5NTkgbGVnYWN5LXRydW5rCis1MTMyOCBhYWZlMWFkNzNlZDc0OWJmZmE2M2ZlYThiYjJjN2Y1YTIyOGYzZjQ3IGxlZ2FjeS10cnVuaworNTEzMjkgZDk2NjBmNTFiMDU2Yjc0Zjc1NGJlZGEyZDE3NTQ0NThmYTczMzc4YyBsZWdhY3ktdHJ1bmsKKzUxMzMwIGE2YWZlMGVkYTcxMWQ5OTZiNzI2YTU0OGMwNTc5M2VjNTViNmU4ZWIgbGVnYWN5LXRydW5rCis1MTMzMyAyZGM2NGQ1NzBlOGQ3YTQ0OThhYjg1MDEwOGM4NTcwOWMyNzZkZjkzIHJlbGVhc2UyNS1tYWludAorNTEzMzQgYTM1OGFmMjFhNTRhOWJkMzlmNTA2ZDcyOTFkZjM0Mzg3OWQxN2E4MCByZWxlYXNlMjUtbWFpbnQKKzUxMzM1IDhlODhlY2JkNDA4YmZjOWNkMGJmZDM1NjFkNzZkZGVmYTRmN2ZmNDggcDN5aworNTEzMzYgOGY1Yjk5ODJiZWJhMDQ4YjRiZTU2YjA2Yjg3ZGJmMTNkZjNjNjg5OCBwM3lrCis1MTMzNyBlNGE2NDI5YzEyMTRlZGU5MTFjYWE1NWYwZDgwNjAwNTg0NjljMDNmIHAzeWsKKzUxMzM4IDg0MWUwYzg2ZTAwZTQyM2Y4MTcwOTJlMmZmNWNkYWZhNGI4MTAxNDEgcDN5aworNTEzMzkgY2I2NzNlZDUwN2E3OTQwMjViZWI0YTM3YWY4N2RlZjE2ZGQzODBhYyBwM3lrCis1MTM0MCBiMmZlMzZiYWMzYTE2NDRlMjViZDVkODZhOGQxNDE1N2Q1NzMyYmFlIHJlbGVhc2UyNS1tYWludAorNTEzNDEgMWE2ODliZTI3MzI5NzMyNGMzZmEzZGQ1ZDBiODA5OWZhNTBjZTllNiByZWxlYXNlMjUtbWFpbnQKKzUxMzQyIGVkYjE2MjEwMDk3OWI4NzkyN2JkZmVkMTU4Y2ViYjk2NDRlMDU3YmUgbGVnYWN5LXRydW5rCis1MTM0MyA5YmMwYmMwYWQxYmZlNmM5MDk2ZTdiMWNjMmY0NzhjYTlhMjJjNTgzIHAzeWsKKzUxMzQ0IDAxMDM0MDE4ZThiMmY4MGQ4ZmQ1YzgyOTg4ZDIzODJhYTNkZmIzMGIgcDN5aworNTEzNDUgNGFiYjQ2ZGQyYjYwN2Y5ZWFhOWRhZDU2NzZlYWM4OTM3NjY5NDQ3ZCBwM3lrCis1MTM0NiAxZWRkZTIzNDlmNzg0NjZmYmMwMDljNDE3MjM4NjczYzI4Mjg3ZGViIHAzeWsKKzUxMzQ3IGY2ODI2OWVkNDYxZTVkNjIwOThhMzI5NTE3ZjU4OThlOTU1NjBkNTQgcDN5aworNTEzNDggNjdlNDU3MDRjMDdlYTVhMDRhZjBlN2IxYmRhMDJkZDgxN2RlMTMxMyBwM3lrCis1MTM0OSAzMDIyY2Q1ZTAxMDA0NGMzYmFkMWQ2YjgwMDBhMDE1M2M2M2ViNGVmIHAzeWsKKzUxMzUwIDViNmY4MjEwMWM0MDViMTc1NmRjODAyZmYyMjE1Mzk0YmVhODBmMTYgcDN5aworNTEzNTEgYThiYjFhZDdmYzZmYWRjOTE0NGY2MTcyMmMwODYwNjEwMThiMzJkNyBwM3lrCis1MTM1MiAwYTFmODdhODU1YjNlNjE1YjdjOTgyMmFlZTBjMjQ3MTBkYzY2MGQxIHAzeWsKKzUxMzUzIGZhMjc1ODQ1ODY2YzhhN2Q1ZTVlOWIwZmU3MjM0NzRhNTA1NWQ5ZTkgcmVsZWFzZTI1LW1haW50Cis1MTM1NCBhODczMjBlYmQwZTY2ODk2NGJlOGE3NDUzOTUzMGY4NmI0MDE3ZmE2IGxlZ2FjeS10cnVuaworNTEzNTUgMWZmOTNiYTQwNDUwODgzNzBkZGYwNGQ0ZjIzZTNmNjNjOTlhYjM2NCBsZWdhY3ktdHJ1bmsKKzUxMzU2IDMxYjlhNGI0MjUyOGVjZmE1MWZhMmNkNmI1MGViNjBhYWI4ZjVjNzAgbGVnYWN5LXRydW5rCis1MTM1NyBkZjg3YjYwNTY3Y2ViNTI0YWI5YTIzMzRlNjkwYjNkY2ZlM2ZlYjhkIGxlZ2FjeS10cnVuaworNTEzNTggMDQ1ZTIwZmY4OWViYjcwOTMyMTQxMjdjNjVkNzMyMzA4NDBiMDkwOSBsZWdhY3ktdHJ1bmsKKzUxMzU5IDg5YjczMGI3MTQzNGY5Y2VhNDg0OGFiYzg2NmNjOGU4M2M4Y2Q0ZmIgbGVnYWN5LXRydW5rCis1MTM2MCAyMTBjNWI1NTc1Y2I1Y2EwMWQxYTAyYzliNjk0ZGNiZWI2YWFhYzc0IGxlZ2FjeS10cnVuaworNTEzNjIgYjVkNGYzYTczZGUwNGY3MGU3NWE1M2RmMTc4NGI4N2U5ZGEyZTU2YiBsZWdhY3ktdHJ1bmsKKzUxMzYzIGYzZGVlNjI1ZmM0ODNhNjNkZmU1ZjQ3ZDUzODgzODIyMDJjY2FiZjEgcmVsZWFzZTI0LW1haW50Cis1MTM2NCA0YzZmNzdiNTY0NTJkNmE0OGNmMmFlY2I1OTAzY2ZkODQ3ZGY2ZDQwIGxlZ2FjeS10cnVuaworNTEzNjUgY2E3N2RlMzVkYjYyMGExNzUwN2RkNzM5MGMzOTE4YWE4NzYyN2M0MyByZWxlYXNlMjUtbWFpbnQKKzUxMzY2IDdmYjU2YWFmNTJiYmNlYTU1YzIzYTVmNzE5MzAxODg1MmQzNzkzNmUgbGVnYWN5LXRydW5rCis1MTM2NyBiODdmZTExZmI3ZTI4YWUyOTNlZjhiZGE2ZWY4ZDcxNTI4ODdlNTFiIGxlZ2FjeS10cnVuaworNTEzNjggMGFkN2U4NWM4YzA0ZThhNjdkNzE1NjdlNjdjOWU3YTM0OTM4ZmI3ZSBsZWdhY3ktdHJ1bmsKKzUxMzY5IDc5YmJmYTFkYmQxYmIwYzZhMWZiYWZmMDcxMjBiNTk0ODcyMTEyOTcgcmVsZWFzZTI0LW1haW50Cis1MTM3MCAxYWMxNGQ0M2VjNjQ0MWU2Y2IyMjBiMzE4ZjI5ODY3Mzk4MDg3ODlkIHJlbGVhc2UyNS1tYWludAorNTEzNzYgYzRlN2I0MDcwZjA3NTQ3ZmRiMTM0ZDVlNmNiOTUzYjMyNjljZThhYyByZWxlYXNlMjUtbWFpbnQKKzUxMzc3IGU3YTViMjg3ZjI3YzFhOWVlOTAxZDUyMTExODg0NTZhMjY4NWU0MDIgcmVsZWFzZTI0LW1haW50Cis1MTM3OCBjYmI0MzVjNWMyMWM2NzAzZjE5NzAzOGU3NDdmNTE0ODk3ZDljMzhhIGxlZ2FjeS10cnVuaworNTEzNzkgZGU0ZWYxNzcyNzhiZmY4NTdmNzExNjNkNDcwZTFkN2YwNTgxYmU5ZCBsZWdhY3ktdHJ1bmsKKzUxMzg4IDI1NTFlYjU2NzFhNDFkOGE0NmI2ODEzZmYxNDg5M2E5NDE5MTk4OTggcDN5aworNTEzOTAgNjMyMzdmY2VmZDk5ZWU0ZjY3NTcyMmQ1YzI3MTA2NTlhYTVkZDhjYiBwM3lrCis1MTM5MSBjZmIzODQ3M2NhMTE5OWQ5ODMyYjNhZWJjMjM1NGFkNjExNGFhYTA4IGJjYW5ub24tb2JqY2FwCis1MTM5MiA4NDUyZDVlZTdiMDNiYzJlYzA2NDkwMDY2MDhiZDE0NmMwOTQ1Nzc0IGJjYW5ub24tb2JqY2FwCis1MTM5MyA0YzY3NGEwN2IyM2MzNjBmZjliMTg4YzgxYWZhZmZlZmFiNWM5ZWIyIGJjYW5ub24tb2JqY2FwCis1MTM5NCBkMjNiN2NiMTcwMGI1MGVkYWJkNDVkMGFkZWY4M2FhZjQzNjIxNTAzIHAzeWsKKzUxMzk1IDBiNWQ4ZWFlM2VjYTA2MWI3ZWJkZTYyYmEzYTgwM2Q2YmYzODdjZTcgcDN5aworNTEzOTYgYzU1N2Q0NDc0ZjBmNGYwN2Y5YjBlYzJhZTc5ZDU4MmMyZDg2OTVlNiBwM3lrCis1MTM5NyAzZWJmNTYwNGY2MzIwZTViMWVlMmEzNjQ0Mjk1MzkxZDFkY2RjYjZkIHJlbGVhc2UyNS1tYWludAorNTEzOTggYjg4YjY5Zjk3YWNjMDA2MWFhY2QzYTY4YjIwOTZkYjM2ZDVkMTJlZiByZWxlYXNlMjUtbWFpbnQKKzUxMzk5IDdjYmNiMjJjOGI4YjJjOGE0YjYzNjBhMDVhMmI3NDkzNDA3MGE1ZTAgcmVsZWFzZTI1LW1haW50Cis1MTQwMCBhNzQ1YTJiZDQ4YWYwYjk0YjFmY2NlZDA0NWY0OGYwMDU2OGFiZThjIGxlZ2FjeS10cnVuaworNTE0MDEgMGFmNGZmYWJhMDNjMzJiNGNhNGMwNGZhOWMyZTMyNGM3ZDQ2YWU2ZCBsZWdhY3ktdHJ1bmsKKzUxNDAyIDg3ZDE1M2ZmYmI5OGI1YTgzYjVlNjhjZjIyMGU3YmQ3NmYyMGE1MjMgbGVnYWN5LXRydW5rCis1MTQwMyBiMGUwYTVlYjkwOWYxOTc5YmExMTQ1MDE4ZGM5NTNiOGQzMWQ4NmI5IGxlZ2FjeS10cnVuaworNTE0MDQgMmM0MDI2NzY5OTQ1NDk5MDdjZjgxYzVmMjJkODJhNDlhM2I5MzhiNiBsZWdhY3ktdHJ1bmsKKzUxNDA1IGJiZWYyZWNkZWUzM2ViYjgxOTAzMzIwOTVmOGRhOTQ3ZDNjMDYzNDcgcmVsZWFzZTI0LW1haW50Cis1MTQwNiBiZGVlNDU4ODhiNjQwYzk1NjFlZDNiOGU0ZWNkYzZiMDNmOGQ0ZjIyIHAzeWsKKzUxNDA3IGQyNDBjZTU2OTZmOWZlOGY4NTYxYTU1ZmY4ZDEzZGQyODE2MjYzOWEgcDN5aworNTE0MDggMTJjNDJmZjk5NDM3YmY3MmFkZTY3OTI2NzBiZDBiOGViZGUxODcyYiBwM3lrCis1MTQwOSA4MjcxN2I4NDg4OGUwNDZhYWI5Y2UzMTA5M2Y0NWYwNWYzNDM1NGE1IHAzeWsKKzUxNDEwIDBmMTM1YWZmYWJmMmM3YWY0MTY3MzZjMWIxMjQ4N2JhYmVkNDQ3OWUgcDN5aworNTE0MTIgNTk5YWJjMzFmNzcwYWQ3NWE3NmNmNzZiOTc3ZTU1MmNiZWFmOWYxYyBwM3lrCis1MTQxMyA5NjM0OTZjYmYzZDNjMGYxY2NlM2YwZmZkZTYyZjQ1MDA2MTAzYTZjIHAzeWsKKzUxNDE2IDQ0NjIyZWI1OGEyNWI2YWYwNjE4ODBmY2MwNTdhMWQ0NTg1MTliNzUgbGVnYWN5LXRydW5rCis1MTQxNyA1YjJjMWI2NWQzNWVlYTk4ZTA0YTQxODgzZmUwMjFiMTE4ZGZjNGFlIHJlbGVhc2UyNS1tYWludAorNTE0MTggYzMzMTkyZTJjMjViMTk0ZmRjYjg3MmFhNDBkMWRmMmI4YWJhNjU0ZCBwM3lrCis1MTQxOSAxNTRmMjU2ZmZmNDI5OTVkOWRhMTNkNzY3NGIzMzFjNGFiMjhmMTIxIHAzeWsKKzUxNDIwIDIyYzJlMjVlZDBlNDBiZWNjY2Q2ZGExZjAyOTE4YTJhMWFlY2UzYzAgcDN5aworNTE0MjggNWUxNDM5NDQ3NzBiNDFjYjI0ZWQyYzE5ZDllNTVlMTk2NDBhMzg5MyBsZWdhY3ktdHJ1bmsKKzUxNDI5IGVlZGEyNzA0MTMwZWY1MGIwNzNkOWU4YjYwODQ0MWViZWQ4NTIxZjUgbGVnYWN5LXRydW5rCis1MTQzMCA3M2EzMjkxYzU4ZGMxZWViNGVjNjUzNWY2MmZhNDBlYzZiMDIzMmU3IHAzeWsKKzUxNDMxIDQwYmJlNjY5YjA4OWVmYTcwZDZhMzFkNWMxNTRkNDU5MzlkN2NhMjQgcDN5aworNTE0MzIgOGRkNTdjNTNjY2Y2YjI5M2MzNGRkZjgxY2QzMzgwYzA1ZWNjODlhOCBsZWdhY3ktdHJ1bmsKKzUxNDMzIGRiNDJlODdjOTc3NmY3MDI0NzNhYTQzYjZlOGQ0NDg0YmI5MDdmNWYgbGVnYWN5LXRydW5rCis1MTQzNCAyZmZkZWUxYzM4ODQ0YWIwMTJiNmY5MjNkNDU1MjRjZWNjN2JkNzdhIGxlZ2FjeS10cnVuaworNTE0MzUgNmYxMDIwNzQzMDc3NGYxMzg2YzA2ZDY2N2I1NTRkZTk5NWU4MDg2MSBwM3lrCis1MTQzNiA4ZGQ3MTU3ZDJhMjJhMTkxMDJlNTQzYmJiZDUyNTk2MWIxZmE1YWI3IHJlbGVhc2UyNS1tYWludAorNTE0MzcgY2Y0MmE0NGM1NDllZGEwMTM5YmFkNDVlOWUyMmQ1MTgxODRhMTAyMyByZWxlYXNlMjUtbWFpbnQKKzUxNDM4IDM2NzRmMjBhYzc4MWY2NTdjN2ZiZTZjZTQzNDQ1YjdmYmM0NTE0ZTYgcDN5aworNTE0MzkgMTdmMWRmMTU1M2M5YWU0MjVkMmFiYzMxNTk0YzI1MTMyZmE4MDgwMCBsZWdhY3ktdHJ1bmsKKzUxNDQwIDUxMWRiNzFiNWMxNDg5YTM4NWFiNjFiMmQ0NjdjZDJjMjljMTZkZTYgcDN5aworNTE0NDEgNTM5MTRkNTQwYTY3ODAxODZmYzk3YWM3MWJiMjZkMmM1YThlY2MyZiBwM3lrCis1MTQ0MyA5ZGVlODFkY2I5YjQxOWI5Y2E3NzFhYTQ0ZWRlMmI1YjYwYTljMDdjIGxlZ2FjeS10cnVuaworNTE0NDQgNzgzYzVlMjgwM2Y5NTgwZmM4Mjc2YTBhY2E3M2U4ODQ3NTg1MjY0ZiByZWxlYXNlMjUtbWFpbnQKKzUxNDQ1IGM0MGZlODY1NjNmYzg4MWNlYTllMjIxYzBlYWFlMWMxNWVjOTA3MTMgcDN5aworNTE0NDYgZWQwZGIwZDZjYTk5MzgxYTI4ODdjODgzNTM0MzQ4YzM5MTViMjk3NCBwM3lrCis1MTQ0NyBlNjFiMjJiZjdhYjQ3NzI1NzBjOTcxYThlZmEzZTM1MzM1MzM1YTJmIHAzeWsKKzUxNDQ4IDAyYmJlZWMyNzE0ZjA0OTFiMDUxNTU2ZDEyNmM1ODA1ZTY0MGU1NzcgcmVsZWFzZTI1LW1haW50Cis1MTQ0OSAzOTgyNDc1YzUxNDRiYmM5OWUxOTgyYjZjY2NhNGRlMmYzYzAyMDA1IHAzeWsKKzUxNDUwIGU4YTY1YmJkNmEyOTJjODc0OGViMjA0NTY2NTY1MzM2NzIwNGRlNzIgbGVnYWN5LXRydW5rCis1MTQ1MSAzY2JlZDEzYzQ2NGQ5YzFkZTRjNWU0NDdjZDNlOTY3OWNhZjhlMTAwIHAzeWsKKzUxNDUyIGU3YjFhM2RiMWZlM2NkYmM3NjBlOWRmNTdiZDFjY2ZmMDNhNTk3OTggaW50X3VuaWZpY2F0aW9uCis1MTQ1NCBjNmQ5ZmE4MWYyMGZkY2QwMmMzNDNhYTYyMDI0ZTAxNWQ1MTNjNjIwIHAzeWsKKzUxNDU1IGYxOGQ3NzljN2NlYjY3MmVlMzdlNzgzZmQxZmVhNGFjZWRhZGVjZTggcDN5aworNTE0NTYgNWZkZGRkZDUxNmNiN2NjM2NhOGJkZTYzODYzY2U0MzhmZGRmMmY2YSBsZWdhY3ktdHJ1bmsKKzUxNDU3IGM4ZmY0MzgwMmYzMTRjN2Q2ZThkMjhiZDM5MzdmNDBhMzdiYmEwODIgcDN5aworNTE0NTkgZTg2YzBiMjliNGEyNmE0MmU0Y2U2NDY5ZjJjYTNlOWJmY2MzMDk1YSBwM3lrCis1MTQ2MCA3MTljNWRiN2JmYWQ0NWE3ZmE5MTdkMTViYTU2MzMxZmEwNTUzNDk0IHJlbGVhc2UyNS1tYWludAorNTE0NjEgOWNjNmE1NDhkZWM0OTQzZWMyZGM2MjY2YjA3MzMzYmFiODQyNTUwYSBsZWdhY3ktdHJ1bmsKKzUxNDY2IDJmNmI0MmFlYWQ5NGY4MWNlMmU2MGUzZjJhY2VmZThmMzRhOThkYmUgcmVsZWFzZTI0LW1haW50Cis1MTQ3MiA4ZDcxZjlhNmMxYzNhMmVhZjMyNzgxM2JhZGYyMGU5NGIwNmJhNWQ4IHAzeWsKKzUxNDczIGQ2NWU2ZGNmZGNiNTdlYmQwMTA5MzlmYmUxOThhOWE0Y2FkMzAxY2MgbGVnYWN5LXRydW5rCis1MTQ3NCA5ZjI3ODAwOTAyNmRiMzgzNGI1ZTJmMDYyZDQ3MGZlN2E0ODVmMmI2IHJlbGVhc2UyNS1tYWludAorNTE0NzYgNWZmNjk2ZjJhN2E1YWEyNTc3NzYxMTVkNDYxMzc3Mjk3ZTcwMzI4ZCBpbnRfdW5pZmljYXRpb24KKzUxNDc3IDQ0ZGEzZDI5NzEwNzliYmY3YjE2OTE0YzQ3YWRhODUwZGI5ZTVjN2EgaW50X3VuaWZpY2F0aW9uCis1MTQ3OCBkOTE1ODViMmNkYzEwMDc5NzhkYmZiYmIwNTQ1YTFkY2UzM2JmZjYzIHAzeWsKKzUxNDgyIDNlYTUyNzU4NzQxMzFlMDgyZTEyMzQ3ZWRiMDU5MzhmNTgyY2UzOGEgcDN5ay1ub3NsaWNlCis1MTQ4NiBmMGY0OTdhMDUwNGNjZjUyNWYyMmJlZmQ0NjgwMDk2MTllZGE2N2NmIHAzeWstbm9zbGljZQorNTE0ODkgZjhhOTBkMTgyNWNlMDAyYjgxMWQxNTRiNDRjN2U4Zjk0MTg4NWUxYSBsZWdhY3ktdHJ1bmsKKzUxNDkwIDUzZGYzZWZmOTRlM2U2MTgyZWU4YTdkYmE4YWU4OTNkYzQ2NGNkNWIgcDN5ay1ub3NsaWNlCis1MTQ5MiAxODRmN2IxNmQyMDM2ZjZjNGU0NTZkNDkxNzkyNTE5MzkyMGUxN2MxIGludF91bmlmaWNhdGlvbgorNTE0OTQgYTVmMzQzZjcyNDcxMzVmYTE4M2U4NTJjYTNlMjkyZDczYzU3ZTNmMCBwM3lrLW5vc2xpY2UKKzUxNDk1IGNlNWU0NWU0YzVkMDY5Y2RhMGY0MzNkMzhlZDA5Nzg4OGUzZGU5MjggaW50X3VuaWZpY2F0aW9uCis1MTQ5NyBhNTliYmZkODA4ZDk3MjcwODZhMWEwYWRhMzhiOGFlMjZlNWEyMWYxIGxlZ2FjeS10cnVuaworNTE0OTkgZTZlMWI0MDM4MjdlNWU1Nzk0NGVlZDhiZGY5MzgwYTVmMjNlMzJhNiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNTAwIDg3ODJjYzBmYjVlMGZlYzBlOGFjN2RmZDhmYmZjYWYxN2EzZmU2OTAgaW50X3VuaWZpY2F0aW9uCis1MTUwNSBhYzdmMzkzZmQyOWIzNDJmMDM2MTkwMTM5ZmNiYmI1NGQzNzIzZjA0IGludF91bmlmaWNhdGlvbgorNTE1MDYgZDE3NDNiMDgyNzM0NzE0NGFmZTM4NDVkZDFjZGIyYmZhMmY0MTk0NyBpbnRfdW5pZmljYXRpb24KKzUxNTA3IGJjYzQxNDM3OGYzMjA3Y2NkNTJkMjQ4YjQzMjlmOGM1MWMzYTQ5NWMgaW50X3VuaWZpY2F0aW9uCis1MTUwOCA2ZDQzNWRhOGI3OWIzMTg2YWMwNGQ2MTdlOWRjNWVkOTRkOWQ2MDQ5IGludF91bmlmaWNhdGlvbgorNTE1MDkgZjI4YmU1ZGI1MDA1YmE5MmJkODNlNDZiYTMxZjVmZWZmNGU2NTMyNSBpbnRfdW5pZmljYXRpb24KKzUxNTExIDA1MGZiOWEwOTdjZDdjZjBjZTA4MTA4ZmM0NjQwMThjZmE3ODE2ZTQgaW50X3VuaWZpY2F0aW9uCis1MTUxMyA0NzJjYTcwMDZmNzBmMmEzY2FlNGEwOTYyYmYzNDU5YmQxYTUzZGVkIHAzeWsKKzUxNTE1IDQ0OWJhMGVmYjZiZDI3OTExZDlhNWJiZGU5NzUzYjIyODI1ZTA4OGIgbGVnYWN5LXRydW5rCis1MTUyMiBlMjgwMzFhZmVmZjVmMmZhOGJiYzU2MGFlNDgyZDFhMjk1MmZjZjJjIGludF91bmlmaWNhdGlvbgorNTE1MjUgZDVmYTRhZmQ2NjIwZTZlNjdlMDFjNTViNDMwOGI5OGVmZWY2NTQ3YiBsZWdhY3ktdHJ1bmsKKzUxNTI2IDVjY2UwMjg4NzRiYzc4ZTEyMzBhOTRiNDI3NzdkNTRiMzQ5MWI1MzEgbGVnYWN5LXRydW5rCis1MTUyNyBmNDU0NTE4MTk0OTFiNDY1ZWNhNzYxNDg5NWYwODU5ZjM1YjA4YTRhIGxlZ2FjeS10cnVuaworNTE1MjggYWFhNzQ1ZmM3Yjc2N2U5NzEwMWU3ZTAyODE5YmQ3MGE2OTJjNzk3YiBpbnRfdW5pZmljYXRpb24KKzUxNTMwIDk4MTE4MWQyYTRmZTA3NTU3ZDNlODcyNjIzMjhlMTkwZTUxM2RkOGIgbGVnYWN5LXRydW5rCis1MTUzMSAzZGQ2MWZmZDA0OWUxNTdlMjYyOTY0NDZmMzJlNTUyZTFkMjA1ZTJiIHAzeWsKKzUxNTMzIDEzZDVlNWYwZTk5M2FjN2E2NGMzN2M5MjNkNDdhNDRmOThmMmQ3ODkgcDN5aworNTE1MzUgOGI5ZWMzNDRiZWQyZTU3MGZkNmUyYTQ4MjJhYzVjZjEwNmE5MTkxZCBwM3lrCis1MTUzNiBjZTIzZDg2NzMyYjBiODlhZjIwNDlmZGJhZWIwODk4NjRjMTZhNWU4IHAzeWsKKzUxNTM3IGRjZWVhNDFmNGE2ZGFlYTIxMjg1ZGU4ODczZGIxODk5ZDIzNWFhMmEgcDN5aworNTE1MzggZWZlM2YyYzBkYTVlOGVkNTJiNjI1OGRiOGJiM2IwMTVkZGE2YzZmZSBwM3lrCis1MTUzOSA3NDk2Zjk0NzU0ZmYwZWIxODJkNjZhZmI4NGU2M2EyOGQ2MGI1NDQwIHAzeWsKKzUxNTQwIDY5ZjYxZjkwYzRmYzA4YTU1NjQ4ODA3NjBmOWYwYTU4NmZlMmMyZjcgcDN5aworNTE1NTYgMWEwZjQ0N2U2MGE4YWZiMzY3MmVjMDAzNmQzMGQ4NWY3NDQ0NTczYiBpbnRfdW5pZmljYXRpb24KKzUxNTYxIDFjZjUyODVjOGFiOTQ3ZjU4NWE1ZDNkZWQyNTc0ZjMzY2VmZjFkODIgcDN5aworNTE1NjIgNTFjZGMzOThlMGIwNjNlODY1YzgzMDUzODM4YTJkNzc2MDM4MWMyZSBpbnRfdW5pZmljYXRpb24KKzUxNTYzIDMxN2RjYzU5MGZmZDhhMjZiNjc4OWFhOTI4ZmE0N2VlY2NhNmNiN2UgaW50X3VuaWZpY2F0aW9uCis1MTU2NCBlNGRlZWE5MzhkZWYwODJhZmRlZDcwODZmYTM2YjJiZDViY2NiMzFhIHAzeWsKKzUxNTY1IGE4OGJjM2JhZDY1MWIzYWZhYjY4ZWNjZDQxNzViZGUzNGNmNTA1N2MgbGVnYWN5LXRydW5rCis1MTU2NiBhZGJmZDhkNTg1MWNjNjJiNThiMDEzMmVjMjM0NGM5NTFjYTNiZThkIHJlbGVhc2UyNC1tYWludAorNTE1NjcgMjgwYzZkYjMxYzVhM2QyMDMyZjBhOTNlNmNjNWQ5ZDU2MjI2ZmMyMiBwM3lrCis1MTU2OCA5MzQ4ZWE2M2IwMmRmZGVjMDM3MmY5YzZmNmNkYTRhZGI2NTFlZDdhIHAzeWstbm9zbGljZQorNTE1NjkgMDgwMDViYTZjZWI5MzBkYzczN2Y0ZmIxMmEyZWY3ZGJhMWRhMjAwZiBwM3lrCis1MTU3MCA1MjNlNmNjZTQxODcxNTBkZDlhMjdiNDFhNWVmN2Y5YjU3MjZhZmRiIHAzeWstbm9zbGljZQorNTE1NzEgN2VkNWNlODlmMjZhZTdjNDk1YWZhZTU3ZTc4ODM2MThhM2RhNTM0NyBwM3lrLW5vc2xpY2UKKzUxNTcyIGViYWQ1OWM3MjMzZTNhODA1YTY5YWMzOTNkNGM4MTc3NWJmYmJiOTkgcDN5aworNTE1NzMgN2JjNDE5MmE1Mjc4YzU4YmNhOTVjZmVkNTQwZjNhMzc3NzcwNWE2MCBpbnRfdW5pZmljYXRpb24KKzUxNTc0IDg0MzM1Nzg4ZDljYjIxMjYyYjc1N2Y0MjFmMTAxMDVkY2E0ZmExMzIgaW50X3VuaWZpY2F0aW9uCis1MTU3NSBlNWVjMWFkYjA2MWY1YWI1ODNkMjYxYWE3NmM4ZTc3M2IxZjkzYjU4IHAzeWstbm9zbGljZQorNTE1NzYgYmY0MmM4MWRiODA2ZWYyMTJmMjVhMGE5MGVkZWI1MGM4Zjc0YjI1MCBwM3lrLW5vc2xpY2UKKzUxNTc3IGE1MDQ4YzhkOGYzMzMyYWI3ZDQ0NmFjZGE4MDA4YjhjNTFhMjYxOTQgcDN5aworNTE1NzggYTI0M2E1MGRhMjNhZTJlZjUxMGI2Y2JkMGUzOTVlZTdjNWFlNGYzOCBwM3lrCis1MTU3OSBmOWU3NTYwZmUwMGQyMTg5ODk2MzVmMDc1YTU2MjI5YWIzN2JjNGUwIHAzeWstbm9zbGljZQorNTE1ODAgNzZhOWE1MTMxYWFlYzk2MzU0YTkyN2E2OGFkOTMwOGFkYWYxZTkzZSBsZWdhY3ktdHJ1bmsKKzUxNTgxIDQ0YWY0YjM3ZDVmZjQwYTJlN2NjZWVkZjFhOTU0YTIzNTdkYzQ0ODMgcmVsZWFzZTI1LW1haW50Cis1MTU4MiAyNmQyOTVlNzlhZTg3MTYzMzcxODg0ZDFhZTQ3ZmRhZTYyMWUzMGM3IHAzeWsKKzUxNTgzIGU2ODRmOTdhZTNmYWZiMTQ4MGEwODUxMmRhY2ZmNWMzOTBhZjkwZmYgcDN5aworNTE1ODQgZjE2YTU4M2M1YjA5MDQ1ZDhhMmQzYjQzNDc3ZDM4OTY5YjJmMDEzMCBwM3lrCis1MTU4NSA0YTM4Y2QxYTE2MDYxYjFmM2UyMDVjYmU2Y2JhOTcxYWE5OGI4ZjU3IHAzeWsKKzUxNTg3IGY1MWVkYmNkNWNjMDAwOGIwMzNhMTM1MjVlZThjNGE1MGNmNzU2YTIgcDN5aworNTE1ODkgOTJjZjM5NzRkMzJmYmNlZTc2MTlhM2EwM2E1YmI2MWQ2NmI3OTNjZCBsZWdhY3ktdHJ1bmsKKzUxNTkwIGVkZWM3OTYyYWYyODdlOGMwZmFlNTZlYWMxNjQ5ZWQxMmM4MzdlOWQgcDN5aworNTE1OTEgZTA3NmNjYTRkOWQ3YTBjOWNjM2NmOWI0ZWY1MzQ1MTY4YTNmNGFiOCBwM3lrCis1MTU5MiBkYmI1OTU0ZmRkY2NjYjAzOTc3NTM3ZGY0YjYwNjQ5OWIxOTgxM2M2IHAzeWsKKzUxNTkzIGYwNzhlN2U0YjlhMTUwNjIyMTM5YWNmNjc5MjFkYzExMjA0M2YxODcgcDN5aworNTE1OTQgZmY2OTNhODYxYjcwNGZkZTE3NTBlYzlkZGYyMTc4M2FkNzkxNDVmYyBwM3lrCis1MTU5NSBmODExNWY2ODZlNDAxMWM2OGMxNDJhM2Y3NzMwODFhYmFjYTM2ZTAzIHAzeWsKKzUxNTk2IDY5MjdhY2JmYTAxYjQ3ZmFiYTg0NDJjMjAwZjI3Njg1MDgzNThjNGYgcDN5aworNTE1OTcgNGU1Yzk0ZDAzNjQ5M2RmNzBjZDJmNDY5MDBiYzVlZmM4NzY5ZTk5MCBwM3lrCis1MTU5OCBlYjJmNzBmZGJmMzI0MGI5OWQyNjA1MDZhZWUyYWFmYTM5ZGY0MDhlIHAzeWsKKzUxNTk5IDc4NTY0ZTI2OWQyMzBiMmY1Mzc3N2UzM2JiNzI4MTk0N2UyMzM1ZDcgcDN5aworNTE2MDAgZjg3YTNlNjE4NTNkNzJiMWQxMzM5OTJmOTkxZTM5N2IzMWFhYzhlOCBwM3lrCis1MTYwNCAzYmZjOGJiNGU3MjZmMGE3MzZjOWM1MDJjYjhhOGEzNWE5M2VjOTY5IGxlZ2FjeS10cnVuaworNTE2MDUgY2EyYjJjYzIzMDdlNDQxM2ZhMmJmZjViNmFhYjA5MjczOTA3ZmM3OSBsZWdhY3ktdHJ1bmsKKzUxNjA2IGY0OTc2NTBhMTQ5MDZmMjc2MzhkZmMzMzBkYjFhYjMwNWU2ZDNmZWEgbGVnYWN5LXRydW5rCis1MTYwOCA5MTZhZTYzNmE4M2U0YjgwMDJjMDcyNGJjNjhhYzc0ZDg0Mzg2MmVjIGxlZ2FjeS10cnVuaworNTE2MTYgYmIwNzM4MDVmYmFiYTAxMTUzNzc0ODY5MjdjMjVkMDFjYTI5YTZlYSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNjE3IDkwNDk1ODIxNjgxMzFkOTg5ZmE1YzJlYzYxZTM2YTdjMGIwYjc1N2IgbGVnYWN5LXRydW5rCis1MTYxOCA1NTQyNzU5MjU0YzBiMjgwY2RiZmU2MDU1YjVhMTM4Mjk0OTMwMjBlIGxlZ2FjeS10cnVuaworNTE2MTkgMWI3MzVhOWQyMTA3MTBkZTRiOGM0YWFiMzQwMjA5NzZjYWU5ZDQ3NyBsZWdhY3ktdHJ1bmsKKzUxNjIwIGFjYTcwOWYzM2E2YTE2OGIxOTk4NjQ1ZGMxN2I0Zjg4YzFmZDc4ODQgcDN5aworNTE2MjEgM2Q3Nzk4ZmVhZmM1OThmOWViYmQ3NjE0Yjk1OWMyMTU4Yzc0ZDk3YSBwM3lrCis1MTYyMiA2YzE4NGZhNTUxNzBhMjY4NmUxOTMyMzBlN2FlYTc0ZTRkOWFiMDY1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE2MjMgZWJlYjM0YWRkNGE2MmNkY2U2NTg4ZDA0OTFmYzY4YTdiNzQzODQ2NCBwM3lrCis1MTYyNCBkMGVkN2RiYWFkNTZlMGEwYWVhNTJmYWI2ODlmZDhiZDZkZWFjZjBiIGxlZ2FjeS10cnVuaworNTE2MjUgMGNiOWU1N2VjNDA2NDc4YzdkZjNiNmUwNWFkNzU3MWIyMzY0NDYwNCBwM3lrCis1MTYyNiBjNGQ4YzA1NDYxNmMwMDlkMGFjMDI3OTUzZjgxZTUzMjllZGU2YTE3IHAzeWsKKzUxNjI3IGMwOTM2MzNiZWJlY2NmZTA0ZTk0ODMyNWI2MTYwYzRjZmNiMWMxZGMgcDN5aworNTE2MjkgNTQwYzk1OTI3MjllNzRkODJhZDMzMWY2NzQzZWQ0OTUxOGFjMmE3MSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNjMxIGQwYjgzYzQ2MzBjMDkyNGRmNjYxMDYzNTQzZjNjNTQ3OGM4YzM1YWMgcDN5aworNTE2MzIgZGEzYTlmNDAyODg2MDY1OGFiNzljNmRlMzZiMzM2NmI5OWExNDcyYiBwM3lrCis1MTYzMyA0Zjc2ZjYzYTMyZjM2YmFhZjE3MTc5YWE2Y2JlOTRmMmZiMTJmMzNmIHAzeWsKKzUxNjM0IGQxNGYxMGE0ZDlkNDY2MGRjZTEzYzg3NGI1OWE2MjEzNTFkMTVlZGUgcDN5aworNTE2MzUgMDVhYzljNDkyOGE0OGYxMjk0Y2I5ZWRmYzk4MTE2ZDcxNjUwZWFlOCBiY2Fubm9uLW9iamNhcAorNTE2MzYgNmUxOThjNjU1ZWVhYWNmMzU1OTA3NTE3MmRiNDgzZmY2MjNiOWRkYiBiY2Fubm9uLW9iamNhcAorNTE2MzYgOTBhOGVlNmMzYTg2NzZjYzViOTQzYjJiMWRlYmMzY2EwZjE3YmFmMSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxNjM3IGI1NjNiMTJlNGMwMDM2MzkyYzRkYjgxNTI4ZTg5MGFjNmQ4YmJhMzUgYmNhbm5vbi1vYmpjYXAKKzUxNjM4IGZlZjAyZGJhOWI1ZjMyNjg3MWU2Mjc1NDViYzg2ZjFkMmU2Y2IwMzAgYmNhbm5vbi1vYmpjYXAKKzUxNjM5IGVjNDgwNTdhMzRiNjAxOGY1N2JiZjRmNDk3NDY1MjAzNTVmMjk3MzQgcDN5aworNTE2NDAgMDdlYjgwMjY0ZjYxNTExZGVmNTcyOGRmNWM2YTc1N2VkNjhkOWJkNiBwM3lrCis1MTY0MSBmOTc0ODkwYzZjZDJhN2M1MmQzMDA3ZDFkNmNiMzE2OGQ0Y2YxMWFmIHAzeWsKKzUxNjQyIDIxOGI2ZTkwMGE4ZDQ0MjViZDlkOTJhNTgyMDVhZTM4ODMzYzc3NmYgbGVnYWN5LXRydW5rCis1MTY0MyA3NTkxMjI4MTUxZDcwMmVjNTMzYmZiYWJiOGEzODM1ZTZiOWIwOWExIHAzeWsKKzUxNjQ1IDg5M2FkZDU1NDU0MTk2NzA4MDBlYjExNzZiOGRiNGJjZmZkMzUwMDcgcDN5aworNTE2NDYgYWE1OTQ2NmViZDljMTYxNjFjNTFjMTE0MDA0NzQxMWRmNDEzMjFmOSBwM3lrCis1MTY0NyA3NTRhNzI5ZTk3YWY1YWM2NDg1YTVmYTU4ZWU0YTg5YmRkOWQ0MmYwIGxlZ2FjeS10cnVuaworNTE2NDggZjBiOGY3MTE4NWY1NWQ2ZmQ4Y2M1NWUyYWU5OTkxNzA3OTQ3MWE1NiBwM3lrCis1MTY1MCA0MTYxMDdhMzUxODUzZDhlYjMzZDVmYTRmYzk2MTUzMzk1Yjc4YjBlIGJjYW5ub24tb2JqY2FwCis1MTY1MSAxNmQ0ODZjN2RhODI0NWMzNTYwZmM0M2U5OTlkNmFlYjliNWNmMjVhIGJjYW5ub24tb2JqY2FwCis1MTY1MiA4ZjczMjFhYjhmNDBmNzM3NzYyYWMwMzIwNThlZTMxYzU4ZTM3MjEzIGJjYW5ub24tb2JqY2FwCis1MTY1MyA0ZDIzZTlhMTI3MTAzODU1ZDgzMzc5YjQwMWNjMTdmNjFkZGYzZGZmIGJjYW5ub24tb2JqY2FwCis1MTY1NSBmMTBmZWRiZTZjMTM5NjFiOGZiNjNiMDk1NjE3NTQ4MDA3NWYwN2NiIGJjYW5ub24tb2JqY2FwCis1MTY1NiA1YjAyZWI1ZjY1ZjFiZmY2YTQ1ZjA4ODZkZDQ0ODE4YTdmYzUxYzhkIGJjYW5ub24tb2JqY2FwCis1MTY1NyAzNTU0OTYyZDhiMjFkN2U1NjU2OTVhYjg4ZDMyYzBkMzE5YzI2MzNhIGJjYW5ub24tb2JqY2FwCis1MTY2MyBlODVkNWIyMGVhNjBlZDQxODEyNmJiNzdhMGQ1NzBmODkwZDVlNWI0IGxlZ2FjeS10cnVuaworNTE2NjQgYTgzOTU3YzkxZmRiOWJiNzcxNzA3MGY5YjA3MmI1MTdhNzYzNWZhNSBsZWdhY3ktdHJ1bmsKKzUxNjY1IDFmMTcwNTcwNTg5ZWE1ZmI1MDM2MDM2MzkxYmIxMzNlOTQ4MGMwMjIgbGVnYWN5LXRydW5rCis1MTY2NyA2MGMxMTkzNDcwOWVjNzQyNzg0YTNmMmFkMjAwYWNlMWFmYTg1YTYyIGJjYW5ub24tb2JqY2FwCis1MTY2OCBiY2NjOTE1ODA4ZDgwMWZmYWE4YTUyOGJlZjNlYzVjZTQ3MDVmZWRmIGJjYW5ub24tb2JqY2FwCis1MTY2OSBkZDUxNGExNzc4NDhhZTZlNTE1ZGQ2NzQxOTAxNTZjZjEyNGFjZTAwIGxlZ2FjeS10cnVuaworNTE2NzAgODkxNzZlNjVhZGQyYzk4NWIwMDM1ZDkyZDZiMGRhOWE1YWI3ZTdkYSBwM3lrCis1MTY3MSA3MjFjMzk0ZWIwYmEzM2U5OWQ4MDI5NTc5MDg2Y2NhMzY5ZTA0ZTNhIGxlZ2FjeS10cnVuaworNTE2NzIgNTYyNmIyZWU4Y2U0Y2JjNWM0MTM4YTU5N2NmMDZkMTQ4Y2VjZjYwOSBiY2Fubm9uLW9iamNhcAorNTE2NzMgYWE2NDFmYjE3Njk4ZWQzMjc3OTAzOTBmY2QzNWY5MWY3OTNiMTNlMyBiY2Fubm9uLW9iamNhcAorNTE2NzQgODIwODFiYTlhNWM1MDdjMDQ5YWI3NjQxODhiNWEwOTkyY2M4N2MwNSBsZWdhY3ktdHJ1bmsKKzUxNjc1IDExZjcwNTMwNTFmZjllYWRmY2NmNWQ2Njk5YzQwNjdhMjA2ZjM4MzIgcmVsZWFzZTI1LW1haW50Cis1MTY3NiA0YTc5MDZkOGRlODYxMDdjYTEwMGMwNmQ3MzIyMjgxY2RlNGY5MzI4IGxlZ2FjeS10cnVuaworNTE2NzcgNzFlYTJiZTdkOTEyNmE4YmNhYWUzYmY2OTU5NTMxN2JmM2FjOTE1YiBsZWdhY3ktdHJ1bmsKKzUxNjc4IDE4NGMxZGJmNzE5NGU0MDQ4YTFiMmI4MTE1OGQ1Y2ZiMWMxMGE4M2UgcmVsZWFzZTI1LW1haW50Cis1MTY3OSBiYTgzNzU0NWNjMmZhZjA3OGMzYzk4NDdmYjdmZGI5OWI1Mzg5ZWJlIGJjYW5ub24tb2JqY2FwCis1MTY4MCBhNjY2ZDc1ZjNkZmZjMzkzNGU2Y2U1ZDI1MzRkYjJhY2VjMjg0NDY0IGJjYW5ub24tb2JqY2FwCis1MTY4MSBkMTk4NmQzNjlmZWZiODg5Yjc1ODhjY2VlOTNlNjc1YmM5NjNjNmE4IGxlZ2FjeS10cnVuaworNTE2ODIgODQxOGYxYjkwOTBlODdlZWFhOWQzZWZhMzE1NTczOTQ5M2FlNGVmYyByZWxlYXNlMjUtbWFpbnQKKzUxNjgzIGU5MDVmNzhlYWZjYTU3MjFhNjYyMWViZjgzYzhhZDAzZjA1NzVjNDQgbGVnYWN5LXRydW5rCis1MTY4NCAxMzUyYWQ5YWZjYzBiOGRmM2QyMGFhM2IyNmRiOWUzMTU3ODAyMTYzIGxlZ2FjeS10cnVuaworNTE2ODUgMmYwODZkNThjYTEwZjdlMTExMzFjN2Q4YzljZDA2MjcxZDAzMDhmMyBsZWdhY3ktdHJ1bmsKKzUxNjg2IDhmZTE2ODcwMzM0OGI3NGM5YWJiZTA5ZjU2OGM1NWY2ZmY1NjFmMmQgbGVnYWN5LXRydW5rCis1MTY4OCA3NjkzYjY5OTNkZGFmM2Y4MDMwMTdmODgzY2JhNmU4ODY0NzRmZjlmIGxlZ2FjeS10cnVuaworNTE2OTAgMzE0YzRlN2EzNmQzZWYzYzYzZjk5NmRlYWUyODE5OTlhZWJjNWEwMiBsZWdhY3ktdHJ1bmsKKzUxNjkxIDFlYzdlZjBmM2I4ZDA0ZjRjYmQxZDQxNDljYWFjMzljZjk1NDE4OGQgbGVnYWN5LXRydW5rCis1MTY5MiAyMTE5N2NiZWQ1MWRhYzg4ZjMxZDQ1N2Y1NWFjNDU0ZGE4NDY1ZmYwIHJlbGVhc2UyNS1tYWludAorNTE2OTMgYWE4ZmVkZjZiYjI0OGVkZGIzZmQxZjc0Y2MzMzU3MmFkNmI0MjM5YyBsZWdhY3ktdHJ1bmsKKzUxNjk0IDg4MzJiOGMyZmM0OTlmNDc2NDk3MTQ3NzllOTQ5MTNkZjE3YzAyMGYgbGVnYWN5LXRydW5rCis1MTY5NSA0Y2VjNDViZDY2NjM5ODNlZTJmNzZjNDk2NmRlZjkxN2M2ZTdkNDA3IHJlbGVhc2UyNS1tYWludAorNTE2OTYgMDYzMzBkMGI0NjRhZjI1MzM1ZDcxMTZkNmQ5M2JhZmFkZjM2ZTRmNCByZWxlYXNlMjUtbWFpbnQKKzUxNjk3IGNiNjY0MmRlZDRlNzU4MTMyZjZkNTk1MDUwNzY4ZjZlMzQxMTQwNWYgbGVnYWN5LXRydW5rCis1MTY5OCAxMDFlMDRhNGY0MDNhYWU1YzVlNzQzN2M3MWU0MjE0ZGFjYTcyNjZkIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE3MDIgYzZmZWY5NDRhZDk1ZGVhZmQyYWYwNjgwN2U3Y2MyMTJhN2ZlYTkyNyByZWxlYXNlMjUtbWFpbnQKKzUxNzAzIDU4OTk4MGM3ODAyNTQ2MDhhZDMzYWI0NTRmOWFlNGI3MTE3OGQ5YTggcmVsZWFzZTI1LW1haW50Cis1MTcwNCBjZmI3N2ZmZjAyNDAyMTA4MmFkODExYWQyMjRhZjcxOGRjMTI2MThmIGxlZ2FjeS10cnVuaworNTE3MTAgYWJjYTRlNjI2Y2I1ZjZhOGIyNjI5OTYwNmNhYTM2NzIxNjU4NzdmMSByZWxlYXNlMjUtbWFpbnQKKzUxNzExIGY1ZTc4YWU4ZWMwY2I4ZWNjZjFlOGM4M2E2NDA3M2QxYWYyZTM5MWQgcmVsZWFzZTI1LW1haW50Cis1MTcxMiAwMGQyYzkzYjg4YmZlZDU3YWVhZTFhMjYxN2NhMTNhN2JiYTY3MGQyIHJlbGVhc2UyNS1tYWludAorNTE3MTMgYzZkNDRhOTc0OWRiNDg2YjY2ODI3OGJiMzcwNTA4ZDMzOWY3OGU5MiByZWxlYXNlMjUtbWFpbnQKKzUxNzE0IDljYTE5ZGIxN2ZhZjc5NTAwMzE5ZjVhYjAyNWNiNzcyODlhYjQ3NjIgcmVsZWFzZTI1LW1haW50Cis1MTcxNSAyNDRjNzM0ZjFkOGQxZGI4MGNlN2FlNjkyODBhYTQ5NDE4MzdiOThmIHJlbGVhc2UyNC1tYWludAorNTE3MTYgZTFhYTlhMjllZDE1MWZmYmRmMTZlNDQ3MDZiMzY2YmFlNmRiMmY5NyBsZWdhY3ktdHJ1bmsKKzUxNzE3IDk5NTc0NjdmYWY0N2MzY2UxNmM3YTFiM2YwMTc4OWMwYzcxN2NkODMgbGVnYWN5LXRydW5rCis1MTcxOCBkMWI0OTdlYzE5MGExYWI2Y2U5MzRlM2Y0MWJhODMyZTk5ODg0MzhhIHJlbGVhc2UyNS1tYWludAorNTE3MTkgYjM1MTQzODJjMzI3NDdjYzgxNDFlODE3MGRkNGExMzY3ZDQ3YjNhNSBsZWdhY3ktdHJ1bmsKKzUxNzIwIDA4Y2E0NzZmOGEzNDI0ZGMyNjNhN2UyMjJlYThkOGQzNGU3MjAxNjggbGVnYWN5LXRydW5rCis1MTcyMSA5N2QzZWFiOGNkYTJmOTIwYjUwNDc5YTBlNTgzNDY1N2I0ODYyYzQ1IGxlZ2FjeS10cnVuaworNTE3MjIgOWQ0NDc5MjA2M2JiZmRlOWM2M2ZiNjk5YThmODYxYzgyMjhiMmUyNiByZWxlYXNlMjUtbWFpbnQKKzUxNzIzIDYyN2EyMWNjZjI0ZmM0MDNjOGNiNzlhNjQ1MzU0NjI5Nzk4YzM2ZjcgcmVsZWFzZTI1LW1haW50Cis1MTcyNCAzMDBmZTUwNmEwYWE0MjBiMDNjYjZkMjJmMGQ0MDQ4OGQ3MGNlZDc5IGxlZ2FjeS10cnVuaworNTE3MjUgODI2MzljMDU1YTZmYTg0NzUzZjQyYmU0NWU1MzFlMDYyOTc0NmQyNSBsZWdhY3ktdHJ1bmsKKzUxNzI3IDE1NWNiMTU1N2I5NzUwZDQ5MTExYjEwZTMxODllNzkwMjI4ODVkYmQgcmVsZWFzZTI1LW1haW50Cis1MTcyOCA0Yzg1Y2U3MDQyNmUzOWY0YWExOTBkMTQ1MTljNGIxZWE4M2ZjYzJhIGxlZ2FjeS10cnVuaworNTE3MjkgOGRjYjg4MmVjM2UxYWFjN2QzMzZhNDBhYTY0ZWM2NjU2MWZjM2RlYyBsZWdhY3ktdHJ1bmsKKzUxNzMwIDMzMDBkNzQ5MmYxYTEzY2E2MDRiZmFhM2ZlMjk3YTRmMzMzOGQwZjMgcmVsZWFzZTI1LW1haW50Cis1MTczMSBjNTkxZDk5NTRmYjM5MzMwYzIxMzZiMjI2NjA5MDg4NGZhNjYwYTBiIGxlZ2FjeS10cnVuaworNTE3MzIgM2Q5NjhiNWZjYWY5YmVlNzhjNmM4ZjBkNzA2M2Q5MWJkMTZlMDFjOSBsZWdhY3ktdHJ1bmsKKzUxNzM0IDZhNTFjYjgwNjhmNWNlZWU1YTMwMDA1NmQ2OGJmNzgwMGRkMzc1YzggcmVsZWFzZTI1LW1haW50Cis1MTczNSA1ZDZlOTZhMmZlNmU4NmRkNWY4ZjZhMTIzMjM5OWEyNmRkMTc5NmM3IHJlbGVhc2UyNS1tYWludAorNTE3MzYgOWYwYjNmOWM3MGRhMWM3MjJmYjliZDU0OTZkNDk4NTlmNWY0ZjNkOSByZWxlYXNlMjUtbWFpbnQKKzUxNzM3IDE1MTA5NzgxZjAxNjhlYmQ4NTEzZTRlYzkxNmFlMjdkZGYyMGNmM2EgbGVnYWN5LXRydW5rCis1MTczOCBlZTBjNzU3YzQ5OTBhYmFhYjIwNDlhOTM3YzYyZDBiZDFkMTI2Y2IyIGxlZ2FjeS10cnVuaworNTE3NDAgZGVkN2I2OTBjMzA2M2IwYzdiMzljNDA0NzM5ZjBjZGFjMzY0N2VlMiBsZWdhY3ktdHJ1bmsKKzUxNzQxIGNhOTViZDU1OWU3MTY3ZWYxNTBjZTViOTVjMmI3OGFjYmRlOTQ3OWYgcmVsZWFzZTI1LW1haW50Cis1MTc0MiA2ZDdhOGI1ZWI1NTFmYzUxOTcxMzZhZTgyMmQ5MjRlMzcxNmRlMjM3IGxlZ2FjeS10cnVuaworNTE3NDMgOGZiNTk3Nzg0ZjE4NTUxMTI1ZDQzZDljMGRiYTIxM2Q3OGIzMjNmZSByZWxlYXNlMjUtbWFpbnQKKzUxNzQ0IDcxYWM3OTZhMDE4YzYzMTk5ZWI2OTM2YzM0ZTA1MTBjODBmOTM3YTggbGVnYWN5LXRydW5rCis1MTc0NSA3YzVlMjkzNjI4MDNiMWZmM2FiOWRmY2UxZmExNDJkZDg1OGU1ZjRhIGxlZ2FjeS10cnVuaworNTE3NDYgZThiNjhkZjkwYjg0ZWQ1Y2E1ZTYyYTMwYWUyYTI5MjMzNmRjMTQ3OCByZWxlYXNlMjUtbWFpbnQKKzUxNzQ4IGE1MjQ4OTk4MGI1YjQ5M2E1ZDg5Yzk5ZDczYzEyNWEyNTY2MmJlY2UgYmNhbm5vbi1vYmpjYXAKKzUxNzUxIGU0NjZmZmZkYzlhOTFjNTNjNmQ4ODRlZmEwYmVlZTdjNDM4OGU1OTkgbGVnYWN5LXRydW5rCis1MTc1NSAxYzQyNWE4OTBmNmNjYTMxNTc5ZGEwYWZmNTU1NGU4MmIxZjA1OGZkIGJjYW5ub24tb2JqY2FwCis1MTc1NiBjOWNjMjliZTc1NTg3OGNiNmFiNjAwMjg4ZjZiNzQ2Njg3Y2VhNDI0IGJjYW5ub24tb2JqY2FwCis1MTc1NyA3NmI4YTc1ZGJlNmEzZDc0ZTM0YmJmNDAyOThiNDk1NzBjM2IxZDYyIGJjYW5ub24tb2JqY2FwCis1MTc1OCA0NjdjNzE2ZTJmODE4YmI0MDcyYWJmZmI2NWMxMzE3MjFiNGY5Yjc1IGxlZ2FjeS10cnVuaworNTE3NTkgOGEyMGM5NGQ5ZDk5ZTIyYjk0MTMxNTU4OTc0MWJiMTEwYWY1ZTk5MyByZWxlYXNlMjUtbWFpbnQKKzUxNzYwIDJhNzMwZmI2ZjM0YjQzMWE3NWJjNGI4N2QzNTAxYjFhOGE1OTIzYTIgbGVnYWN5LXRydW5rCis1MTc2MSA5ZGViMDhlZjRiYTFkZjM1MGU1MDY2YjRiMWY4ZTc5MGJmODRkNjkxIHJlbGVhc2UyNS1tYWludAorNTE3NjIgOThjZDdiMTY2NmZiNDhjZjUxZjFlMmQxZjBlNjJkMDVkNDc4MzUwOCBsZWdhY3ktdHJ1bmsKKzUxNzYzIDZkY2M2NDg3OTM0MTM4MWJiMTNlNjc1MmVjMGYzMTgwNTVmM2ExMTkgcmVsZWFzZTI0LW1haW50Cis1MTc2NCBhZTViOGE4YjkxMWUyOWQ5YzBiMzM1MWI1MmM3MGYzNjY0ZDNkOTAzIHJlbGVhc2UyNS1tYWludAorNTE3NjUgMzA3YTExYzA4NWI0NjEwZDg2ZWY5MjJkMjNlMzdmMWI4OTYxMTA0MSBsZWdhY3ktdHJ1bmsKKzUxNzY2IDgzOTRkMmU5YmZkNjdhZjRlYjA0M2Y4MmFhOTZlMjhjMTZmOTlhNDggcmVsZWFzZTI1LW1haW50Cis1MTc2NyBiOGZiZDMyMjc2MGE5YmIxNWEwYTMzZjMwZTFhYjQxYTBlMGRhYTUxIGxlZ2FjeS10cnVuaworNTE3NjkgZDcxOWZhYjc5NjY3ODc2Y2QxNDU2NWE0MjdkNzY5NjBmZDI4ZjU5YyByZWxlYXNlMjUtbWFpbnQKKzUxNzcwIGNiODgzZTdlMGI3ZTE3MmNmN2YxNDUxZGYwNDg5Y2Y1N2NjOWIyNWMgbGVnYWN5LXRydW5rCis1MTc3MSBjOTRmMzcwNTRmMTk3MGY2ZmMxNjJiMTI1MWVlZjI1NDA4NThlMjNjIHAzeWsKKzUxNzczIDdhMGFkMTEwZTkxZTc5MTYzMWRmODg5YzEyZjU1ZjA3NmI5OGYzYmUgcDN5aworNTE3NzQgM2I3NWVkY2M0YTZmNDg3ZGZjN2NhZWUxMWY3YmZjNTY3NGU0ZjI1MSByZWxlYXNlMjUtbWFpbnQKKzUxNzg1IGRjZTE3YjViZDM4N2NhM2JhNzc4ZTVkMWI5NzY2NGZkNDE4YmQ0NGQgbGVnYWN5LXRydW5rCis1MTc4NiA4MWI0NjdmZTkyZWU1MDk2NGM1MjhmZGVlMGYwOWQzNzU5NzFlOGI2IHJlbGVhc2UyNC1tYWludAorNTE3ODcgNGFhOTg0MTQxZmVmY2ZiNjdiOTg1NzVlODJkNmIwZGUxOTdkNzViZSByZWxlYXNlMjUtbWFpbnQKKzUxNzg4IDI1MjdhNDgzNTA5OTI5M2I5ZDkwMmI2NTU4NTc5NzFiOTFhMjU5MzggcmVsZWFzZTI1LW1haW50Cis1MTc4OSBjZDNiN2YyNTY0OWQ0ZjM3OTRmMDAwYjdjMGM0ZmNmMTQyMGEyMTE5IGxlZ2FjeS10cnVuaworNTE3OTIgNTZlN2Q2OTUyOTg1MTU1Y2JmZjVmMGRlZDQ1OTRiZGNhMjg1ZWU4NSBwM3lrCis1MTc5MyA1ZTUwMmRlMGNlZGFjZmQ1ZWFhZjkzZTY1YzcxMGNmZjA4NGZlYzk5IHJlbGVhc2UyNS1tYWludAorNTE3OTQgNmQ0N2M4YmMwNTEyNzFiNDk5NDkwZTljN2Y3ODFkMWVkYzcwZWFjMCByZWxlYXNlMjUtbWFpbnQKKzUxNzk1IDZlNmJhZjFhZmIxMmMwNTYwMjZhOGRkNzZmZDcwMzY0MmNkNjU0NmYgYmNhbm5vbi1vYmpjYXAKKzUxNzk2IDk0MjA0NTQ5YjUxNjA5M2Q3M2Q5NTUyZDM1ZDAxMTVlNGI0NzA1NGYgYmNhbm5vbi1vYmpjYXAKKzUxNzk3IDM2M2VmODA0YTA5NmY1MTg5YmJmMmM5Y2FhNzk2YzQ0ZDFiMmVlZTggbGVnYWN5LXRydW5rCis1MTc5OCBlZjBmNDJiZjJhMDg1MzUwYzkzOTNiMDMwNWYzNjRhMjM0YTk1ODI5IGxlZ2FjeS10cnVuaworNTE3OTkgYzY0M2IwMzFkNTI2YzgzNTc1ZDFlNzMyMzQ3OGZjMDBmMWM1ZmZlYiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODAwIGU4MzcyMmFhNzhkZDQ3NTMxNDc5ZGMyMzVkOWEzNWM5ZjYyMTVmODcgcmVsZWFzZTI0LW1haW50Cis1MTgwMyAzOGJhOTUyNDc4M2ExZWFiZThmNjc3YzAwN2Y2Y2U1Nzk3YzRiMDkxIGxlZ2FjeS10cnVuaworNTE4MDQgY2Y5ZDNiMzgyNTFmOTJhZDZiYjA2YzM0N2FmNzIzZDFjZTY2NDQxZiByZWxlYXNlMjUtbWFpbnQKKzUxODA1IDFlZWJiNjQ3MzEwZmI1ZWNmYWNjNWRlYjc1YzZkNTFlYmUxNzM5MzQgbGVnYWN5LXRydW5rCis1MTgxMSA0MDU4MDQxOTJhNjgyODI1ZGY4MzcyZWFmM2NmZjdjOGEzMmU3ZGRkIHJlbGVhc2UyNS1tYWludAorNTE4MTMgYzNhMzUzYTA3MTQ2OGI1OGE3MjFmOTgzN2M5MDE1MWIwNjhjYmVhNyByZWxlYXNlMjQtbWFpbnQKKzUxODE0IDQxYzFlNTQzYjllOTY5NzYxNDVkNTIyNWRjODUxNWU3YzIyZWZlOWIgbGVnYWN5LXRydW5rCis1MTgxNSA0ZTgxOTc0ZjdlMTQwM2M3NGE3NGVmNjY5YzUxOWQ0YmY5ZTU1NzBmIGxlZ2FjeS10cnVuaworNTE4MTYgZDk2NzNiNjJjZTM1ZDlkMGQzYmYzMGE2MmJkMDRlZjc3Y2M2NTE4ZSBsZWdhY3ktdHJ1bmsKKzUxODE4IDQzNGFmYzcyOGY2Zjc0YWY5MDUwMzE0ZGIxMjE4NmU2ZWEwMzgzNTYgYmNhbm5vbi1vYmpjYXAKKzUxODE5IGEwNjViNTVlMWZiMWQwNmYwNmRkNTVlN2ZmZTkzMzgyZGMyZDI2OTEgbGVnYWN5LXRydW5rCis1MTgyMCBkNWM2ZmVhMjUyZjA0ODgyNjVlNzdlODJjZmE0ZmU0MWEzODhkOTRmIGxlZ2FjeS10cnVuaworNTE4MjEgZWM2ZmQ5Y2ViZGExODU4N2I2MDZkNjVhMTZiZjQ2ZDFhMGI4ZjEwMCBiY2Fubm9uLW9iamNhcAorNTE4MjIgNzAxMDhjNjNjNmU1MGU4MzdkNjljZGE2ZjYwNzQ3MGExYzkwZGRjMyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODIzIDMyMzlmOTNjZjRkMjNlZDY5ZmM4ODE3Mjk0YzI4MmUwMTc0ZWZjYTQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgyNCAyNjUzZjgzMzU4Nzc5Mzg3ZDFkZDQxMWZmNjc2MDU5ZTFkYWY5MmM2IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE4MjUgODkxZTMzMmNkMmQ2YTI2OWMwY2EyYjFkNDkwMzAzYzJmYzFiMTEzZiByZWxlYXNlMjUtbWFpbnQKKzUxODI2IDAyOThjYzZjMjljZDZlY2RhY2Q1NGVjMjRlMTE3MDA2MWU4YzNmYTAgcmVsZWFzZTI1LW1haW50Cis1MTgyNyBjMDMxNGM4OTM2ZTUxMTZkM2JiYmIyZjdkYTVlMDBjNjY2YjljMWJmIGxlZ2FjeS10cnVuaworNTE4MjggZDRlNTNlNzBjZDc4Mjc0ZDA1Mzg2M2M4ZjU2YmFhNTYwYTJiNWUyZCBsZWdhY3ktdHJ1bmsKKzUxODI5IDdiZTMwY2JmYzliMjgzYWEzODhlMDc0YTA4ZGZmY2I0NzNiMmZkZDEgbGVnYWN5LXRydW5rCis1MTgzMCA1MjdhM2QwMDUyYzkwMTEyMWI1OGJhYWI5NjA4ZWNlYzM4MWJlZGI0IGxlZ2FjeS10cnVuaworNTE4MzEgNmE4M2IyNzQwZmM3Y2NkYTAzZDk2MTBlM2NkMGI4OTQyOTMzOTFjOSByZWxlYXNlMjUtbWFpbnQKKzUxODMyIDQwNzM1ZDVmOGFjZGJlNzc4ODFkZjljZWJkMjE2ZmE3YTg1OWVlYWMgbGVnYWN5LXRydW5rCis1MTgzMyBiNTI3NTg4MmEzZTBkNGIwY2M0MzE0N2IzMzNlYjM4NzQyNmE5MDc4IGxlZ2FjeS10cnVuaworNTE4MzQgYTRhMjE0YmRmOGVhYzBlYTBlOWMzOGQxYTJjODk0NzRhZDVjOGI0NyByZWxlYXNlMjUtbWFpbnQKKzUxODM1IDZmNmU1NWZkOWI3OTFjMmE3ZGNhZDg4NTYxNzUxZTcxMmFmMzUxMGIgbGVnYWN5LXRydW5rCis1MTgzNiAwZWIzZjBmNTRhMjY3NGZlZjY4MGFiNTI5MWFkZTFiNWZiOTZlYWI5IHJlbGVhc2UyNS1tYWludAorNTE4MzcgYzJmZDk3OGRmMzkyMjQyNWY1ZmU4NzkxZGQ0OWRhNTVkMDkzMzA3ZiBsZWdhY3ktdHJ1bmsKKzUxODM4IDllN2RjNjQzMmE0NDY1YjYzNWQ3NzFlNmU4MmE2ZTE4Y2M3MTE0ZDcgcmVsZWFzZTI1LW1haW50Cis1MTg0MSA4MDRkMTcxYzJjYjcxNTVjNjkzMjJlN2E5Njg3NTIyOGMxMTdjMDZkIGludF91bmlmaWNhdGlvbgorNTE4NDcgMGZmZTdmOTJhYjJmZGVmYTJmODg1YTJkMTk5YjhlZTY0NThiNmZhZCByZWxlYXNlMjUtbWFpbnQKKzUxODQ4IDM5ODZiMzZiODQ5NTIzMzQwZDMwOWM5YzA4NWNmMDY1YWQ2YzJiZGUgcmVsZWFzZTI1LW1haW50Cis1MTg0OSA1ZWYwNDA2ZTZkNTI0YzZjY2Y2NzFiMjg0MDkyOGQ1NzU1MzlkNjk0IHJlbGVhc2UyNS1tYWludAorNTE4NTAgZTRlOGYwYTRlZGE0ZmUyOGJjNzUxYWNkZGFlOTZjMTUzYTdkN2IxNSByZWxlYXNlMjUtbWFpbnQKKzUxODUxIDU0ZDRmZDA4ODM4NWM3ZmRjMWU0MWY2NDA2Y2Q1NTc0Y2YyMWYyYjEgcmVsZWFzZTI1LW1haW50Cis1MTg1MyBkMDZiMmI0MmQxMzg4MTZmZWI4OTI3NzUwODU5MjlhNmVkMzU1MWY1IHJlbGVhc2UyNC1tYWludAorNTE4NTQgMTVhZDZiYTJlMWE1NDI3ODFiZWFiYTEyNDAzZGY3Y2I3NDAxZTJhNyBsZWdhY3ktdHJ1bmsKKzUxODU1IDY2ZDAzNTcwMjliNTVhYzYxNjhmOWEzMDE4Mzk5N2U3ZjI1NzhkYTkgbGVnYWN5LXRydW5rCis1MTg1NiBjMGEwNzFkZjQ2MjFhNTc5NGQ0NWE5MmU0YTU5NTM2ZDdjYjNlNTZkIGxlZ2FjeS10cnVuaworNTE4NTcgMGY3ZWU5OTI1YjdjNDI5NjJiNjE1NjRiZDBkNDQ5YTMzY2EyM2ZiYiByZWxlYXNlMjUtbWFpbnQKKzUxODU4IDBiYWM0MGU0ZDBjNjQzYTc4YzE4YjQ2ZmNiMGY0OGM3ODcxYWQxZmQgbGVnYWN5LXRydW5rCis1MTg1OSBjNWM5ZGJlZWFmYTc2YTFkZDRiZjI2ZjIyNjAxY2FkNmZkZDM3MjRjIHJlbGVhc2UyNS1tYWludAorNTE4NjAgY2MzY2IzYTgyMzdlYTU0NWRiOTE3ZDg0YzQ5ZDhhMGE1ZTE3NWNjMSByZWxlYXNlMjUtbWFpbnQKKzUxODYxIDdkNDBkMzdlNGNjMzVkNjE5MTk0MDgyZDlmODIzOTE0ZmMyMmY3YjQgcmVsZWFzZTI1LW1haW50Cis1MTg2MiAyNDlmZGI1OWRjNTJmOWI1M2E1MjkyYWRlYjMzODJkNTY3YjkwOWFhIHJlbGVhc2UyNS1tYWludAorNTE4NjMgZGM1MGQ0YWM5NWQ5MWZjMTgwMDE4NzA0MDQxNzU3ZTlmMjlkMzU2OCBiY2Fubm9uLW9iamNhcAorNTE4NjQgOTVjZjMxZTY5MzM1MDFmMmQzZjI5NmRiYjA3ZDI2NTExMzBiM2Y4YSBiY2Fubm9uLW9iamNhcAorNTE4NjUgNDE3NTAxZWUzZTg2ZmZhY2ViZGYwZTZhOGIyZDFlOTc0NTk0ZjVjZCBsZWdhY3ktdHJ1bmsKKzUxODY2IGU1N2Q4YWU0NTY2OWY0ZDdlMmQ0Y2UzZDdmOGE2MWVlYWYyZTE2ZDkgbGVnYWN5LXRydW5rCis1MTg2NyA1NGI4MmJkMjU2OTNlOWQ3ZjJkZjY4YTM4ZjE5ZWQ1MjlkOWY4Yzg2IGxlZ2FjeS10cnVuaworNTE4NjggNTA0NGQwNjliNTMyOTJlZTAzMGQxNjNmMTYzZjBlODJkZjY4ZmFiMCBsZWdhY3ktdHJ1bmsKKzUxODc0IDEwZWIxZjZiMzA4MDkzNDI2MjdjYTE0NGUwMDNhYmZkZjI0YzM5YTMgYmNhbm5vbi1vYmpjYXAKKzUxODc1IDBiYzM5YzEzMTlkZGMwMzdhYjJhYjQwNDQ5ZmYzY2Y4MjkyZmNhYWQgYmNhbm5vbi1vYmpjYXAKKzUxODc2IDA3YTQ0YmZmOTY3ZjU4MjZjMzUxMDgxZDZjZWRiNzEyOWQxMzIzNmIgcmVsZWFzZTI1LW1haW50Cis1MTg3NyA3NGU0MjRjMTc4ZjQ1YzIzOWYxOTU5YWU0NTZkNTJhZTU3OTc1NjI3IGxlZ2FjeS10cnVuaworNTE4NzggMmIwNWVjNWRmNzc3Nzk3ZDQ4ZWQzMWJiMGQwNTY4MzhlNWZlNGUzZCBsZWdhY3ktdHJ1bmsKKzUxODc5IGEwMjM1ZDQzNWVkNGU3MmQ0OWM1YTUzZjJjMTU3ZmY4Mjc1YjI1ZDIgYmNhbm5vbi1vYmpjYXAKKzUxODgwIDc1MTc5YzJlY2FjMWM1YjBmMzVjNDY3NzIxNDI5YjAyOWE1ZmRhYmIgYmNhbm5vbi1vYmpjYXAKKzUxODgxIGRhZGEzNGI0ZDZiNmE0ZTJkN2E4OWYwYWMwM2MwMGMzYzc0NWEyMjQgYmNhbm5vbi1vYmpjYXAKKzUxODgyIDM0YWIwNTI3NDVlYzJhNzBlNGEyMWNiNzYwZjVhYTA0NTNhZThmMjYgYmNhbm5vbi1vYmpjYXAKKzUxODgzIDBlY2UyOGNiNWI5ZTczZThjZjBmNjVlMjNlYTNhMjY5NTViYWY4MTUgbGVnYWN5LXRydW5rCis1MTg4NCA4OTlkNGRjMTJjMzc4ZGJlMjViNjg5YzQ1MWViNTQ1ZmQ2OGMxNDdlIHJlbGVhc2UyNS1tYWludAorNTE4ODUgYjY3MzNhMzZlZWNkZjY1NTZhODM4YzE3YTQzZTdlZjYyNGQzZjEyMiBsZWdhY3ktdHJ1bmsKKzUxODg2IDg3Mzc1OWIwYjEyNjE2YTgwNGUwMWU5ZmFhZjQ3M2ZiZWUyZjZmZGYgcmVsZWFzZTI1LW1haW50Cis1MTg4OCA0ZjM2YzQxNTk2YjE4ZDBkZmY3OWNjYzFkNGYxYzU5MWJiNGY0YWMyIHJlbGVhc2UyNS1tYWludAorNTE4ODkgMmU5OTVmMjQ0ZDZiNjJjOTQwOTA5ZWMwMjFjNzdiZGJkZDkyOTdhZiBsZWdhY3ktdHJ1bmsKKzUxODkwIDJhMzQ5OGQ4NzQxYjQyYzUxYWE0YjM3OWQ0NmEzNGE0YTY2ZWE0MzggcmVsZWFzZTI1LW1haW50Cis1MTg5MSBmOWM5ZjhhMDVhODk0YmQxNDA2MmNiMDQxZGQ1MDJjZDk5MDEzM2UxIGxlZ2FjeS10cnVuaworNTE4OTIgOGQzYjc2NDM1OTkyMWFjZDczMDEyZjg3YzcxNGNiODcyYzUxMzc1OCBiY2Fubm9uLW9iamNhcAorNTE4OTYgMzMwYmRhMjQwNWVlNmM2ODIxODNkYzVlYWE1MzEwYjg4OTIzMDQwMyBiY2Fubm9uLW9iamNhcAorNTE4OTcgMTY2MGVhYTBjYzI2NjMzMzBjMzEzOGIyZmNiMmIxZWRiZTIyOGU0OCBsZWdhY3ktdHJ1bmsKKzUxOTAxIGY1ZjRkMmZkYjYyYzI5YWY5NDQwM2EyMWI3M2Y0YjRjMWE3ZTQwYmUgYmNhbm5vbi1vYmpjYXAKKzUxOTAyIGQ0M2Q5NDIyYjdhYzc5ZjNiNmUxY2ZmZGRiZmNiNDMxMDc1M2I5NzAgcmVsZWFzZTI1LW1haW50Cis1MTkwMyBjZWRlYTllMjNhOTU1Yzc1NTljMjdhZGUzMmVjNDBmZDAwMDdkZTNjIGxlZ2FjeS10cnVuaworNTE5MDQgYmI5ZTkxNGVkZTA1MWZhYjAwYjIyY2YwMjg4ZmY0Y2Y3MTY2NzVmMiBsZWdhY3ktdHJ1bmsKKzUxOTA1IDU5MGE5OGE3MGJmOWQ5NDVkYTZjMWY2YzRhZDUzZDQzMDhkYTVjMDggcmVsZWFzZTI1LW1haW50Cis1MTkwNiA2YjAxYTljNDU1ZGJkMjY1ZGRlZmI3YTc1OGJiZTM1MmMzZjZjNDczIHJlbGVhc2UyNS1tYWludAorNTE5MDcgNzY3OTYyZjg4ODM0NjA5ZjhlODk0ODI3ZTg4ZGZiNDQyMTFhMTk0YSByZWxlYXNlMjUtbWFpbnQKKzUxOTA4IGMxMGE3MWNmMTZlNDcxNDI1ZTZkNzU2NGUzZjdhNjQ4ZjE0YjcwMmUgcmVsZWFzZTI1LW1haW50Cis1MTkwOSA3ZjVmNDZiNTY2MTFjMTUzYWVjN2IwNTNjMDBmMWQ4OTAzZmExZWVkIGJjYW5ub24tb2JqY2FwCis1MTkxMCAyMDE0NzQxNWU5N2Y5YjBjZDk1MWMxZWU1ZDY4YWYyOWEyMzg4OGQzIGJjYW5ub24tb2JqY2FwCis1MTkxMSBjZTI0Nzc4YTY0OWYxYWU1M2Y1ZDAwNzU4MjE0NDViYTI0OTE1YmY1IGJjYW5ub24tb2JqY2FwCis1MTkxMiA3NzUyMzc4MDc3YTUzN2NiM2NkMmE0YzBmYTk3NTI3YmM3MTA2MDA4IGJjYW5ub24tb2JqY2FwCis1MTkxMyBiNDQ3MGE1NDk5M2EzODdjNTc5YmY2NzliMjNhMWM1NDY3ZWQ5ZDM0IGxlZ2FjeS10cnVuaworNTE5MTQgNzgzOTQxYTAwZTllMjk1MjI5MWMwOGM4NDI3ZTY5YWVjYmYxN2Q2YiBiY2Fubm9uLW9iamNhcAorNTE5MTUgZTcwYTdiNzE5N2I2ODQxZDc4MzY3MDgwYjZlZjYzMDFmMGFmNWFkMyBiY2Fubm9uLW9iamNhcAorNTE5MTYgYjZlZTRkMzU0MWMwYTUyODgxMjFkMjg4YWRmZDIzYTk4MTIzNjY4MCBiY2Fubm9uLW9iamNhcAorNTE5MTcgMDk0ZGFlNDlhYmViYjM0ZGEzOGMzYjA2NDNiYTgwNzZjNzljYmYyOCBiY2Fubm9uLW9iamNhcAorNTE5MTggZTAzNmZjOWM2ODI3MTQ3N2M5NjVmYTY5MjNiYjJlZWU4MTJiM2Y4YSByZWxlYXNlMjUtbWFpbnQKKzUxOTE5IGJjNzcyZmI1MTM5Mjk1ZDE1OGI3Mjc0NTQ2ZjhhZDZkY2ZjYjA3ZDYgcmVsZWFzZTI0LW1haW50Cis1MTkyMCA3MWI4MDI0MGFjM2RkYWU0MTkyYTJjNTBhMWNiYzU0ZGI2Y2RkZmJiIGxlZ2FjeS10cnVuaworNTE5MjYgMDE3MTEwOGFiNTE1NThlYjA2YjdhYjRlNzNkMDZmNTFjODMzODNmNSBsZWdhY3ktdHJ1bmsKKzUxOTI3IDQ4ODhkMmQ0ZDI5MmVjMzhkNWUzZTk0MzE5MTM5M2UwN2NmMzJjYzcgbGVnYWN5LXRydW5rCis1MTkyOCA3MWUwZjNmYzU3ZGE3NzhmNGZlMDg0OWI2NGE2NWVhYTYxMWRkNTg1IGxlZ2FjeS10cnVuaworNTE5MjkgYjMwM2QyYzJjNmM1NjQzNDNhMDM2N2UwZmY4YTZhY2U3YWM1OTczOCBiY2Fubm9uLW9iamNhcAorNTE5MzkgZWEyNGE5YzhlZGEyNThiOTNhZWY1OTEzYzI4ODNkYzQzNTZkZDEyZiBiY2Fubm9uLW9iamNhcAorNTE5NDAgMDAzMWZjMmUwNWUyODZlMmJhZjg5MzdlN2IzM2M3MmJlZTk3ZTJlZCBiY2Fubm9uLW9iamNhcAorNTE5NDEgMDE1MWMwN2M1M2U1MTA2MjczMmMwMzdlMjU2NDViZTIzZjBkZjdhNiBiY2Fubm9uLW9iamNhcAorNTE5NDIgZGU0OTI0ZDAzOTAzZjc0Yzg1OWZjMjMwN2ViYjJkYjNiZmU0YzkwNyBiY2Fubm9uLW9iamNhcAorNTE5NDMgMWY0ODk3ZjVmYjJiZWJhNjE4OGY0ZTIzNGUwMmY0YjBmMjhlN2RhMSBiY2Fubm9uLW9iamNhcAorNTE5NDQgNDNiYWY2YmIwZjhiMGI0ZTczZDBlMDJlOGViZTBmYjNlZWQ0MDViMiBiY2Fubm9uLW9iamNhcAorNTE5NDUgNTZmMGVjNTBkNzM3MTc0OGM5ODllNjFjZDliMjZiNTcwZTUyMzllMyBiY2Fubm9uLW9iamNhcAorNTE5NDkgOTM2Mjk3MDQ3YzE3OWVkODc3OWZjMjNiMWU2YjQzNmYzMjQ2YTI1YyBsZWdhY3ktdHJ1bmsKKzUxOTUwIDY5NTMwYWEyMWI4YTY0OWZmNzQ3MGFlMTRmOTgxYzNjYWQzYzJhNjYgbGVnYWN5LXRydW5rCis1MTk1MSAzNWJmMTZlN2YxMWNkZTE2YzQ1ZDZjMDdmMzhjNTMyOWNhYTg1MmFlIHJlbGVhc2UyNS1tYWludAorNTE5NTIgZWZmODhjNmFhYWMzNzQ3NmRjYmQ5Yzk3NzhjYTYxMWQ4NTJhNDY5MCByZWxlYXNlMjUtbWFpbnQKKzUxOTUzIGRlNDg2NmQ0NGYxMzc3NWM1ZmRhMzJkM2ZiNzE5Y2IzYmI1NzMxNTQgbGVnYWN5LXRydW5rCis1MTk1NCA3ZjZiNGZjNjdiYjZiM2YzOTE3OWViODFiODQwYTBhMTU5OWIzMWQ0IHJlbGVhc2UyNS1tYWludAorNTE5NTggZGY5OGQ5NzMxMzkwZjE0NzY4MTdmOTQ0OTQ0ODVmN2FkYzBhMGViYyBiY2Fubm9uLW9iamNhcAorNTE5NTkgMDg5ZGRmMTg3N2NjMDc4ZDYxNDY2ZDE0MmRkYTEyZDk1NGE5N2FlMCBiY2Fubm9uLW9iamNhcAorNTE5NzEgMjRmOWExMzA4NGIwMTc0NzQ0MzkyZmQ4YzA3YmI2M2I3ODhhNjg1ZCBsZWdhY3ktdHJ1bmsKKzUxOTcyIGI4Y2I3MjAxMzc5YzY3OTUwZGUxMWFlZmQzYzAzMTExMTQ0MzQxY2IgbGVnYWN5LXRydW5rCis1MTk3MyBhZWExOWMyYTQ1YmZjOTRhZTE2MTU3OTNiYTYwYWM5NDkwZjM0ZDI0IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk3NCAyNjYxODUyOGZhM2I3NjRiMDhkNjc4MWIzYjgzMzUxYmE2NjlkNTMxIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk3NSA5NGE4Y2Q1ODg4ZTcwYjA3MDNiNTZkNjRiMWExMTQ0MTM0M2Q0MzhkIGxlZ2FjeS10cnVuaworNTE5NzYgMGI2M2MyODU5MzRmYTA1MGZiZmI0YWI2N2I3ZjJmYjEyMmJlOTllNyB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzcgNjliZTAxNWE0YjUxYzAzZDI0OTBhNDk1NzQzZjNkODhjOWFmNWRmNCB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzggYzc4MWM5ODBjOWEwZGQ4ODBiOTMxZGYxYTVjOGZlYzA0MmIyMzY5ZCB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzkgMDc5ZjliZWIxZDdmYTM1OTIyYjI4NjgwY2NkY2E2NzUxZWEwMGI2MiB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODAgNTg3MmJhYmZmNjM4NGY0NmU1M2U1Mzk5NGQ4MWRmZWJjMmQ2Mjc4ZiB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODEgZTNjNWYzYjU5MjcxZjAyZWFmMGMzNmM5MDg4NzdmZGY2M2U4ZDI0YyB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODIgZTI3NDMyMjI1ODFkMjhkYmU5ZmE4ZmIxYmY3ZjA0MjAwMGViNjgxZSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODMgNzQzOTdiMDA5OTE0MWZjYWZkOWVjMjJjYWY3ZWRlNzlmNWVjMzYxNSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODQgYjk0Mjc4ZTFiY2IzMTQxYTUwMmQ3MzYzNWQ0MzcxOGEyOTY2MzQ1NyB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODYgMDRjOTk4ZmYyOGI3ZDQxY2QzMjk3NjQ3MjFlODU2MGQ0YjRiZjg1ZiBsZWdhY3ktdHJ1bmsKKzUxOTg3IGNhYjA1NjkwM2IzZGQyNjQ5MmYwNmVhOTMyOGZlNWEzM2Y5NDBmMzcgbGVnYWN5LXRydW5rCis1MTk4OCBjMjBiZDc0YWM5YTY3ZGRlYjIyNzVmMDQ0MTgwNWFiYTZlYWEyNzY1IHJlbGVhc2UyNS1tYWludAorNTE5ODkgNDc5ZTM4OWNiNDYyZjhkY2JhODg1Y2ViYzlhMDI2NWVhYTcxODY0NyBsZWdhY3ktdHJ1bmsKKzUxOTkwIDdmNmRkZjU1NWMxMjBiYzkzNWE4MjllNzUwY2RmMTFkZDBmZTMzMTkgbGVnYWN5LXRydW5rCis1MTk5MSBkOTk3NTMzMTQ0NTMzNTNkZGVlYjk5NmZiN2QwNzU3MjI5OWRkODAwIGxlZ2FjeS10cnVuaworNTE5OTIgYjUyOTJmOTY3ODc3Y2MzNDlhMTQzNTkyYTU1YmNmMTUzYTJmOTM2ZSByZWxlYXNlMjUtbWFpbnQKKzUxOTkzIDI1YmNkZjNjZDE5NDIxZDQzNDQ3ZTRlZjZiMTg0ODljYjA2OGRmOTkgbGVnYWN5LXRydW5rCis1MTk5NCAzNDc4YzE2MDIwN2I3OWQ2ZjhjMTg1ZTQyMzBjNjJlODI1MDI4MjdjIHJlbGVhc2UyNS1tYWludAorNTE5OTUgZWNhYWZjMzJjNTAwMDYzMTQ0OWE2MDFiODQ4NjE0MWFiYWY2MTg1YSBsZWdhY3ktdHJ1bmsKKzUxOTk2IGNjZGRiMjI2MTFkYzZmMGQ1NjAwY2ViMTE1Y2VmOWYwMjQwYTg3MjIgcmVsZWFzZTI1LW1haW50Cis1MTk5NyA2MDNjZGU1ZWQxZWJjNTdmNjk1OTE5YzI3OWFhMzgzNGIzMjY0ZWNiIHJlbGVhc2UyNS1tYWludAorNTE5OTggM2M3ZjE4ODFlODJhOTZhZTQ2NWJjMDJhZjJjZWU5ZWIyZjQ0YTFhOSByZWxlYXNlMjUtbWFpbnQKKzUxOTk5IGRlYzdkOTkzYjY4ZjI0MTQ5YWQ4OGYxOTI4MmVlYzJlMWVhYjU2YjQgcmVsZWFzZTI1LW1haW50Cis1MjAwMCBmOGE3ZGZiZjgxZDA4OTIyYjEwNWY3NmRlMzAzNThmNjA2MzgwMDQ3IGxlZ2FjeS10cnVuaworNTIwMDUgNzhjNWEwMzlmYTNhNjQyM2NlMDgwZDA0OWFiNDhhMzQwNTIyODg0NSBiY2Fubm9uLW9iamNhcAorNTIwMTAgNzhkNGU1ZTQ3MGNmODI0M2E5YzY3YTA3Yzg1ZmFlYWFiNmJlZGJkNyBiY2Fubm9uLW9iamNhcAorNTIwMTEgYjA3MjIyOGM5NWEyMDQwNTAxMDdlYTIyNTk4NGQxY2Q4NWFiMTBjNiBsZWdhY3ktdHJ1bmsKKzUyMDE0IDc0ZGNmZDM2ZjdjNGEzOWIyNTY1YThhM2YyZDI2OWQxOWI1NmMyNWQgbGVnYWN5LXRydW5rCis1MjAxNSBlNmE0ZTA2Nzg5OTNjZTg2ZDBkYTdhOGFmZjMwOWQ3YWE2MGUyZmI0IHJlbGVhc2UyNC1tYWludAorNTIwMTYgOTM0N2MyYjQ1MWJhZDliMWRhM2ZiYTI3YmE2NDViMmE4ZmY1MTMwYiByZWxlYXNlMjQtbWFpbnQKKzUyMDE3IDZmYjQ2ZTg3ZDVmOTRjNjBlNTQ4ZmMxNDNjNTg0YTA0ZGE1NDFhMWMgcmVsZWFzZTI0LW1haW50Cis1MjAxOCAzYjcwZGE5ZWUzNjg3NTkzMDJlN2RiYzU0N2E3NjllNzE1NTAyMDBmIGxlZ2FjeS10cnVuaworNTIwMTkgYTUyMTQyYmMxNThmNjVkNWUzNjdjYjZiNzI0N2U3ZDAwNzVlODI4MCByZWxlYXNlMjQtbWFpbnQKKzUyMDIwIDY4YTU2YTE1ZDc1NTkzMzZjNmE1YmZlNWYzMTBhN2ZhMTQ2NGRkZGQgcmVsZWFzZTI1LW1haW50Cis1MjAyMSA5NGRmYmI5ZGFjNTc4YjAzN2RmYmQyODRkODEyNDZkNjc0NTNjZmMyIHJlbGVhc2UyNC1tYWludAorNTIwMjIgYzQ5ZjAyYTUwY2FkZDZmODAxY2I1ZTI3ZDhlYWEzYmRjZWI2NWY2YSBiY2Fubm9uLW9iamNhcAorNTIwMjggMTY5NmQ4NWJhMDQzNTY0NWEyYWNmNDc1NDI0ZWQ4OTI5NThjOGUxNiByZWxlYXNlMjQtbWFpbnQKKzUyMDI5IGFmMzE4NmM2NDA5MjA3YzU4Y2U3ZDI1MTYxOTFjZDhkNTFmYTY1ODQgcmVsZWFzZTI0LW1haW50Cis1MjAzMCA4ODRkMWNiNzAyMjE1YmI3ZDAyZDY0NjY3MWI4NTMxNTMxOTZmOGM1IHJlbGVhc2UyNC1tYWludAorNTIwMzEgMTI4NjlhYWU5ZjZkOWVkZmJlOGI2OGI0MjJmMDFiMDY2NWZjOGY0NSBiY2Fubm9uLW9iamNhcAorNTIwMzIgZjkwYmEzMDZjMjg3YTQ4ZGIwMTAzNTlkMmNhYzlkOTFkYmI4ZDM5MyBsZWdhY3ktdHJ1bmsKKzUyMDMzIDM1MDc3NzVmNGVkNDFkNTZhMmE3YTg3OGFmZWQyODY4Zjc2MzFmZWQgYmNhbm5vbi1vYmpjYXAKKzUyMDM1IGZiMjg5ZWUxY2Q2MDdiMzc5YTAxZWFjMjYwOGU5NjkzYTQ5ZTRhZTAgcmVsZWFzZTI0LW1haW50Cis1MjAzNiBhYjc5ZWQwZjkyODE3NWUxOTA3NTIyMWE2OGJkMTk2MDNiY2NlZWU1IHJlbGVhc2UyNC1tYWludAorNTIwMzcgY2MxOGZkYWQxMDhiN2Q3MjAwNzk3ZWIwNWUxYzUwYzM3OTA4MTEwNiByZWxlYXNlMjQtbWFpbnQKKzUyMDQwIDRmMTE3NDVjN2U1ZmNlODg4MTQ4NmNjOGZmNjQ3ZmMzNWZjOWI4MzcgcmVsZWFzZTI0LW1haW50Cis1MjA0MSBjMTFjYWUyYjlhNzVmMmE4MTQxZDg3YTAxNjUwMzg4MDE3ZDQ5YTdiIHJlbGVhc2UyNC1tYWludAorNTIwNDIgMjYzMmM5YWY2NGFiYjI1Mjc2MTRiNGNhMTZhY2I4OTI4ZjZmYzVjNyByZWxlYXNlMjQtbWFpbnQKKzUyMDQzIDE1ZGRhYmU2M2Q5NTJjNjdiMzUzYWNlM2QyMjgzNzgzMGZiZTU2YjUgcmVsZWFzZTI0LW1haW50Cis1MjA0NCAxZTVmMGIwNDY2ZDhkZjBkYmE5YzRmMDAxNjE0ZTVhNjUwM2I4OGIxIHJlbGVhc2UyNC1tYWludAorNTIwNDUgOWUwZmI5NTQ3OTFlYzkzNDkyZWNhN2FlMjJmZjkzOGNjYjE1MzI1YyByZWxlYXNlMjQtbWFpbnQKKzUyMDQ4IDA1ODYxNzQ5ZWFjZDIxMWFmYjJjZjEzYWQ5ZDBhZDNmZjgwN2RmZjEgbGVnYWN5LXRydW5rCis1MjA0OSAwMWMwM2E3MTFiMTVjYjFlZDAxZmQzZjBkMzE0ZDMwMDUzZTY2ZjhlIHJlbGVhc2UyNS1tYWludAorNTIwNTAgNTJjZGJlNGI3NjQ0ZDcyYWE5MmNhMGZjNjU0ODc4NjE0Y2MxM2Q2ZSByZWxlYXNlMjUtbWFpbnQKKzUyMDUxIDBlZGYzOTk5NjE4YWUyOGNmOTY4YTliMDBlZGIwMjcyY2YxYjEzYWIgbGVnYWN5LXRydW5rCis1MjA1MiAxZGMyMmNjMjAxMzJmMmFjMDU5OTc3YTVjNGM3ZmEyYThjMzA4NDgyIHJlbGVhc2UyNC1tYWludAorNTIwNTMgZGU3OWYxODcwYWU4ZjFkODZkMWY1ODUxODY4MWQzNDZlZmUzNWZlYSBsZWdhY3ktdHJ1bmsKKzUyMDU0IDVkZmZhMzVjYzY0MzAyYzJjM2RkYTNhZTFmY2RiYWM4ZDZmYzgyOWIgcmVsZWFzZTI0LW1haW50Cis1MjA1NSBkODMzODA2YzczNTFhNTkxNzI2MmM4ODkwMGM1MmZjODFkYzY1YTY0IHJlbGVhc2UyNS1tYWludAorNTIwNTYgYzQ3N2EwZTJiMDY3OTlkYWFkODk0NTJkOTgxYzc1ZGNjNDljMzlkMSBsZWdhY3ktdHJ1bmsKKzUyMDU3IDJjODI0YThhMWZiOGNkNTZhYThlYjZmZWZmOWNhNTZkMzUzMWZkYTYgcmVsZWFzZTI1LW1haW50Cis1MjA1OCA0OWZiZGRmYjEyMTcwMWRkZWUxNjRhYzc1MmIxMzIxMjgwZmJjZjY4IGxlZ2FjeS10cnVuaworNTIwNTkgMTNjZjM0NGRlOGM5ODk4NGYzNWY4ZDM4MTljMTgxNjg0NDE1MTRjNSByZWxlYXNlMjQtbWFpbnQKKzUyMDYwIDUyNDYwYjA5MmI1YTY2ZDVhMzU5M2ExNmYyZTRjNzYzMWI4OWQ4ZjYgcmVsZWFzZTI1LW1haW50Cis1MjA2MSBlMWFiNDY1M2ViYzA5MzI1OTZiNmIwNjQyYzJmMGU4OWIxOTJjMTNiIGxlZ2FjeS10cnVuaworNTIwNjIgMzk4NmJmZTUzMTAxZGIzMTI5MjI5NDNhNmM5MzEzZjdlOTk3NDljZiByZWxlYXNlMjUtbWFpbnQKKzUyMDYzIGU3YTU4MzQxYjJlOGY3NTM1ZDc3Y2QxNGMyMjdiMmE3MThkMzM1ZTEgbGVnYWN5LXRydW5rCis1MjA2NCAxYmY1MWQyZjQ2OWQyZDJmYWY3ODNiYzY4ZjUzY2VmOWJmMjg0NmI5IHJlbGVhc2UyNS1tYWludAorNTIwNjUgYjlhMmVmMTMwMmQ0N2NjZDUxNTBkNTkzYTE5YzYxZTVhMDNiNjI1ZCBsZWdhY3ktdHJ1bmsKKzUyMDY2IDk5ZDFjOTM2NzY3OTRkMmQ0YjU4M2I2NDg2MjdiYWU2YjRmY2U2YjYgcmVsZWFzZTI0LW1haW50Cis1MjA2NyAzMzBkYmNhZGI5MzE3MWY2MjM3ZWIxOGQ3YWE4MWI5OTc0ZGVmNDZhIHJlbGVhc2UyNS1tYWludAorNTIwNjggZmZiOTAxMzc0YTM4MjUzOWE5MDY1N2E1NGM4OWNjZGUwOGZmMmNmNSBsZWdhY3ktdHJ1bmsKKzUyMDY5IGQ5MTgyNmJhYzY1NTVjYjBhNjE0NmI3NTVjNjZjYjQ1ZTNjNGNmNjkgbGVnYWN5LXRydW5rCis1MjA3MCA5NWQyNDczZjc3NzBjYjEwYzZmODkzNWMwMjExNmNkYjc3ZDE0MzZjIHJlbGVhc2UyNC1tYWludAorNTIwNzEgOWNhZjVhOWRhNTU0ZDBiYWIzYmExYWM4NDk2MmM0NmIwNzU0YmZjMCByZWxlYXNlMjUtbWFpbnQKKzUyMDcyIGI3YWU4OTc3ZDA2ZTQ5N2Q2ZmRhZGVhYTBjODZkMzM2YWVkY2VhY2QgbGVnYWN5LXRydW5rCis1MjA3MyA5YmUwMzIyNmE3YmY4ZGE5OWVkZjE3OTBhZTU1OTg2MjMyZmViYTMyIHJlbGVhc2UyNC1tYWludAorNTIwNzQgY2Y1OGZiODQ1MGJhMzA1ZDRmYzA1OWQ5MDk1YTVlYWEwMDI5N2NjZSByZWxlYXNlMjUtbWFpbnQKKzUyMDc1IDQwZTJmZWUwM2E5NDkyMjUwOThiYjg3ZDRiZmI0MjhmN2ZjZGNmYmEgbGVnYWN5LXRydW5rCis1MjA3NiA1MTMwYjY4YjU0ZTk0YThiMDkyMjNhZDk1MmNhYTE3MDY1M2YwZjEwIHJlbGVhc2UyNC1tYWludAorNTIwNzcgZGZkODA5ZGNmNjgwMDBmZTZhNGE2ODBhMjUwYzFmOWViOThkMmVjMiByZWxlYXNlMjUtbWFpbnQKKzUyMDc4IGM4OWE3NTZjMDk2NWE5MGQzNWNhNjIxYjMwYjdkNDUyMWEyNmVlNTQgbGVnYWN5LXRydW5rCis1MjA3OSA5MDcyOGRmYzMzZTg1ODg0ZGNjZWNiODM2ZTViMDE0NWVhZWY4NDczIHJlbGVhc2UyNS1tYWludAorNTIwODAgZDc0MzM4MTEzMWQ2YzlmMWI4OTNlMTM2YTE2ODRlZWU3NzYxODliYiBsZWdhY3ktdHJ1bmsKKzUyMDgxIGJmNDdkZTZkOWM5MThlMjA2YzNhYjdmY2RlY2Y0NTFkODZmZDFiMTggcmVsZWFzZTI0LW1haW50Cis1MjA4MyAyNTdkYWYzOWIwOGM2OGU2MmY0ZTcwZDU1MTM4ZDIyNjlhODA4YzIxIGxlZ2FjeS10cnVuaworNTIwODQgODllNGFlYmJmMzFjNDYwOTNiM2NjYTdjODE4MjNjODcxZGNiNmVjOSBsZWdhY3ktdHJ1bmsKKzUyMDg2IDAwYWY2OTg3MDI2YTZkNWMxZTJkM2UxNjQ1ZGQxZjZhOTdiMzkwYTYgbGVnYWN5LXRydW5rCis1MjA4NyAxZGEwNGM4ZWU4ZmYwMDMwODg3MDc4YThiZGE2OGUyNDVmNmFkN2VmIHJlbGVhc2UyNS1tYWludAorNTIwODggOWZjYWE4ZWU4YzIyZmRiM2VkNjNjMzNhMzYzNzkwODU3NmJhNWUxMyByZWxlYXNlMjQtbWFpbnQKKzUyMDg5IDE2OTdkMGQ0ZWYzMzdhODgyMmI1OTM1MGE3YmFhMDE1YWUwOTQ3YTcgbGVnYWN5LXRydW5rCis1MjA5MCA1YzM2ZWM1ZmQzYzIzNmViNmMwNDQwY2ZiZTVmZDc4ZTk5Zjg5ODQ2IHJlbGVhc2UyNS1tYWludAorNTIwOTEgYzBlNzFhNGI3MWM3NDZmMGI4YmRhYjUwNThjMWI1YTIzZWJmZjQxZiByZWxlYXNlMjQtbWFpbnQKKzUyMDkyIGNkYzM2N2FiM2JiZmNiMTFmZGQ0ZjVjY2NjMmRlZTg3MTRiMTYyNTcgcGVwMzAyX3BoYXNlMgorNTIwOTMgYjE0NDlhN2UxNWVkZWVhZDg1N2Y1M2NiODBmZjVkZTkzNmZmY2ZkYiBwZXAzMDJfcGhhc2UyCis1MjA5NCBiNDU1M2IxMmUyNWJlOWFjZjYzYmRiMTFhMzZjN2Y5MWYzMGY3ZTMwIHBlcDMwMl9waGFzZTIKKzUyMDk1IGIyMmJhYTE1NDE0NzRmNTFmYTJjY2Y1MmJjMzIyOWQ5MjljOTZlMmIgcGVwMzAyX3BoYXNlMgorNTIwOTYgODRhZmEzNjZlZWU3YTJiMDY1NDFlOWRiODNhMGEzNDE4YzcxMjMxMSByZWxlYXNlMjQtbWFpbnQKKzUyMDk3IDQ1ZGJjYjBlOWZhOWZkNGY5MTg2Mzk3MDIxNGE5MGIwNmUwOGY0ZTggcmVsZWFzZTI0LW1haW50Cis1MjA5OCA4MTgxMThjM2EzNDBkZmExMjdhMmZlYTNjZmRhZmUzMzUyNzJjMTQ2IHJlbGVhc2UyNC1tYWludAorNTIwOTkgNTgwZjZhNjk1MTcyMzk3NWM1ZWM4MzFmNTQ2ZTkxZjAwZjVlNTU0YiByZWxlYXNlMjQtbWFpbnQKKzUyMTAwIDJjODlkNjE2YTllZDM3YzAxZjJiYjU2N2U4MDA3MDU0NGJlYTZhMGEgbGVnYWN5LXRydW5rCis1MjEwMSAyZTFjNDkzOTViOTYxZjY1NTU0ZjlhMWE2ZDY3OTI5NTRmN2ZmOTM2IGxlZ2FjeS10cnVuaworNTIxMDIgNGRhNGRlOTU0MDEyYjQ5ZjM1OWI0MWI5ZTU0NTdiZjc3YWI4OTZlYSBsZWdhY3ktdHJ1bmsKKzUyMTAzIGYwMTllNGY4NjI4NzdhYTdiMGI5NDA5NjJiY2E5ZGIzMmVkNjc2NzUgcmVsZWFzZTI0LW1haW50Cis1MjEwNCAyOGE5NGJmN2Y2N2YzYzRiMWIyYzhmZjBkZGUzYjBmZjcyMTA1YjRkIHJlbGVhc2UyNC1tYWludAorNTIxMDUgZGU3YzBjYjVhODcyOTVjNmExNDAzNjdhZjBiYjJlYTRjNGZkOTEyZCByZWxlYXNlMjQtbWFpbnQKKzUyMTA2IGIzMzJlMWFjNjZjY2Q3YzZlZjdmMGZlNjYzYTA3YmNkYmVkYjJjZmQgcmVsZWFzZTI0LW1haW50Cis1MjEwNyAwNjI5MWVhZGRlMmRiNWEyZWNkMzNhNGIyNzE4NDFmMzVjMzZmNGZiIHJlbGVhc2UyNC1tYWludAorNTIxMDggNDQzYjg3M2Y5ZWI5MDg1NWVlNGMyZmI1Mjc2ZTlkNDNlZjhiZmMwZiByZWxlYXNlMjQtbWFpbnQKKzUyMTA5IDVkZDZjOTBkNDIyMmNiOWU2ZDc2YTNiNmY4ZTQyYzc4NzdhNDA0ZWUgcmVsZWFzZTI0LW1haW50Cis1MjExMCA2YjFjNGQ3ZDNhMjZjMzA1NDVmZmYwM2Q0OWU1YWU1ZGEzOTU1NTlhIHJlbGVhc2UyNC1tYWludAorNTIxMTEgYjdlMzRmYmM4MGFkNjliY2ZmY2Y4ZTAxMDhmZjg0OGEyYTYyZjE4YSByZWxlYXNlMjQtbWFpbnQKKzUyMTEyIDUyZTk5NjRlZjkyMmQ3NzMwNDhmYmE4M2YyN2M3NTYwODk3NGZmODQgcmVsZWFzZTI0LW1haW50Cis1MjExMyA1NGQxNzdlZGU4ODM4ODAyZDY5YjBlOTgxZWM2MjhmYjY0OTk2YmM2IHJlbGVhc2UyNC1tYWludAorNTIxMTQgOGM4M2ZkNzljZWU1YmUzMDY0Njc2MjEzNDE1NTQxOWIwNTA0YjE0MSByZWxlYXNlMjQtbWFpbnQKKzUyMTE1IGVmMDllMjZlZjA5OWE0MzkxNWIwOGM5ZWE5YTA4MzFhOTQ2ODA4ZjUgcmVsZWFzZTI0LW1haW50Cis1MjExNiAyZjIzOGEyY2QxODlkZmMzN2Q1N2I1M2E3MDBlNDA4YmQzNThmNzFkIHJlbGVhc2UyNC1tYWludAorNTIxMTcgMGI2YjM2MGU5MjE3OTUxMzExNmRkOGU0ZTRlYjc0YWFkODE5NGJjZiByZWxlYXNlMjQtbWFpbnQKKzUyMTE4IDllNzYzYmNkMTNjYjlmZWJiYzM2Nzg2NTRiYTdkY2NkZTI4NjRiNGIgcmVsZWFzZTI0LW1haW50Cis1MjExOSAwZDM1YjlmOTRiMTUxNmNmMmY1ZWUyNmUxYzFiMWE1MDY1ZTY2Y2E3IHJlbGVhc2UyNC1tYWludAorNTIxMjAgOTE2NzkyODdjYjk2Y2Y5ODZjMDI3MjQzYmQ4MDEwZWFkZTU1YmNjOSByZWxlYXNlMjQtbWFpbnQKKzUyMTIxIDQ3YWIwYzI3ZGQxZjkyMmY0ZjYwZGIzN2YwNGI1ZTU3ZTlkMjM3OGMgbGVnYWN5LXRydW5rCis1MjEyMiAzNjBkMDk3MWE2ZWVmMWQ4NzhmMGEwZDUzNGE1ZGEzNTVkMTM4NjRjIHBlcDMwMl9waGFzZTIKKzUyMTIzIDllMzViNjJlZDRkMmRmOTc1NzI1OTFjNGQxYzVmYTg1OTI4NjI1OWQgbGVnYWN5LXRydW5rCis1MjEyNCBmZDE0YmI1ODMxY2RhYzRjY2RhNWQ3YTk0MmMwMTI0YTdlYjlkYzVmIHBlcDMwMl9waGFzZTIKKzUyMTI1IGFkYTU2YjU0ZGI5YTc5MzRjYWFjMDk0MzIxYTM3N2RmYjBiYTQ1MDIgcGVwMzAyX3BoYXNlMgorNTIxMjYgNjYwY2QwNzIwODBkZjNlOGIwNDU2ZDAyMTBlZGY0YTk3ZTBlNDMxNyByZWxlYXNlMjUtbWFpbnQKKzUyMTI3IDc5YjY0NGJmMDExNjQ3YTUzMWQzZWZkMmE2M2Q1N2U1ODM5MGQ1NWQgcmVsZWFzZTI0LW1haW50Cis1MjEyOCBkYjZjYTNlYTUzZTViNjdhZTQxODQxZTUwZTc1Y2YyMDgzODU1M2JhIGxlZ2FjeS10cnVuaworNTIxMjkgZjVkN2RlNTAzMWFhNGUyMjdkZGVkMjI3MTk1ODM4ZjYyZmUxZjdiNiBsZWdhY3ktdHJ1bmsKKzUyMTMwIGNhODg3ZDU1YzU5MjEzZDM0ZGU4NzgzNDMyOGFhZjkxM2Q5MjAyYjkgbGVnYWN5LXRydW5rCis1MjEzMSA4YTI4NTNiZjllY2FkM2IxNjVmZGY5N2NlOGFjZDc3NDU2NzQ1NTk1IHJlbGVhc2UyNS1tYWludAorNTIxMzIgZTAzOWNmNmI3ZDQyOWNlNTkwNWE3YTFhODJjNzVhMjEwMGZkNGQ1NCByZWxlYXNlMjQtbWFpbnQKKzUyMTMzIDFiNjFlODI2NjBiYTljOWMwMTIzMjJmNDlkNDcyODFlMDQ1ODhmZWUgcmVsZWFzZTI0LW1haW50Cis1MjEzNCAxMGJiN2FjYmJkYzgzN2UyOWE5YjExZjEzODdhNmIxYjJjYTA0NWZiIHJlbGVhc2UyNC1tYWludAorNTIxMzUgMmFkZDQ0YzBkZTZjN2RhYTY0N2U3ZDhkMjkzNjFlYjQ5ZThhNjU0NyBsZWdhY3ktdHJ1bmsKKzUyMTM2IGE5YjFmNDA0ZTg4YjU5Y2U0ODFmM2JmODI3NjMyZmYxMDMyNjhjMWEgcmVsZWFzZTI0LW1haW50Cis1MjEzNyAwYzhlOWY5MjcyZDVmM2UxNDQ3MWY1NTBiMDQyMGIwODdkMjY3NGY0IHJlbGVhc2UyNC1tYWludAorNTIxMzcgMGMzNjQxMGMzOWU4ZGRiYjg5NTE4NTdkYzRhZGYzM2YyOWZkYzM1YSBsZWdhY3ktdHJ1bmsKKzUyMTM3IDRlYjI4NmU5MzFhOTVkZGRiMThkM2VjYzY5YWM5NzMyNDc1ZjRmM2UgcmVsZWFzZTI1LW1haW50Cis1MjEzOCA3OTg5MzVlMTI5NWU3ZmEzMjQxMDk4MzA4ZTU3NTAyZjUxNWFlZWRmIHJlbGVhc2UyNS1tYWludAorNTIxMzkgNmJhNDAyYjYwMDQxOGE1Njg0NTNmYWI5ZWVlN2YzY2I4YWExNDBhNiBsZWdhY3ktdHJ1bmsKKzUyMTQyIGJmYWMyMzM4OGEyMjRlNzk4YmMyMTFmNWE2ZmI1NmE3OWRkMDE2OTkgcmVsZWFzZTI0LW1haW50Cis1MjE0MyBkZjdhNTQzNWVjYmI1Y2ZmYjU2MGJmMjA5MzMwNGFlOTg1ODUzNTIwIHJlbGVhc2UyNC1tYWludAorNTIxNDQgNDJhYmZiMzkxMzAwYTI1MDc2NTdhOWY1NTIwOWVjYjc1MjIxZTJlNCByZWxlYXNlMjQtbWFpbnQKKzUyMTQ1IDA0ZWMzOTE0MTBjYmU0NmViOTJmZDA5MDMzNTMyNDBmNzdhNzg2YjcgcmVsZWFzZTI0LW1haW50Cis1MjE0NiA1MjcwYjFlMzY2NDhlZjA0Mjc4YWFjZDM4NmFmMTM2Njg2MTFjNTg2IHJlbGVhc2UyNC1tYWludAorNTIxNDcgNDQwNGEzOTgxNDcwNjQxZDMxN2I4OTlhNTU5OTA5MTkzNWY2MjYxNSBsZWdhY3ktdHJ1bmsKKzUyMTQ4IDhhYWEzZDkxZWVmYTdmMjk2Y2YyYzdjM2Q3OTFiZmI3ZTM2MjY2NDIgbGVnYWN5LXRydW5rCis1MjE1MiBiMWU3Mzc3ZWNmMDQ0NjAxMDQzN2MyNGNiY2ZkNmRkMTcwYzFmNDg4IHJlbGVhc2UyNC1tYWludAorNTIxNTMgZTg4YzQyNjdhY2QxYzc5MTc0YmQwYTZhMTM4MjM4M2YyNmM3ZWY2MiByZWxlYXNlMjQtbWFpbnQKKzUyMTU5IGE0YmJmY2E0MGM3Y2Y3NmYwMWI1ZDgyNGFkNmI3MDAzYTJjZTY1ZWYgcmVsZWFzZTI0LW1haW50Cis1MjE2MCBmNmJiZThkNmZhMzMwMzU1ZTJmYTYxYTdkZTgzMjIwNTNhNTRlMmNhIHJlbGVhc2UyNC1tYWludAorNTIxNjEgMWY1ODhhOTgyY2M1NmM3NWViYjgwYWUwNGQ1ODkxNGRkMDkwOWE2YSByZWxlYXNlMjQtbWFpbnQKKzUyMTYyIDgwMTdiM2YyMWY2MmU2YTA0Yjc5OGQzYTYyMmJlYmE0Mjc0MWQzM2MgcmVsZWFzZTI0LW1haW50Cis1MjE2MyBjMjdkOGY4OWFhODkxNTUxOWMxMGZkYTdmZDViNzFhNjIxZjJiZDFiIHJlbGVhc2UyNC1tYWludAorNTIxNjQgOTgxOWNkZDJmY2IxNTY5YWRiYTkzZmMzMjhlZDA1MDIyN2I3MjdjYSByZWxlYXNlMjUtbWFpbnQKKzUyMTY1IGE5ZmVlMWY2MmYxNzYwNjc2NjZjMDhmN2E2ZmFhODhlZjQwNTQ1MjYgcmVsZWFzZTI0LW1haW50Cis1MjE2NiBhYjEzNTc2Mzc0YjFhOTVmZjcwZDllOWEzODVkMGVhMjJhZjBlNTYxIHJlbGVhc2UyNC1tYWludAorNTIxNjcgNWUyNDQ5OTRlNDJlNTM0Mjc1ZGUyNGJiZjFhNWI4NDkzZDVjYWI0NCByZWxlYXNlMjQtbWFpbnQKKzUyMTY4IDVkOTNlNWNjYjMxZTc0Yzc4MzQzOGRkYzc3OTQ4ODE1NTc4MzUwYmYgcmVsZWFzZTI0LW1haW50Cis1MjE3MCBjZDZjZTY2NmVmZjkxYmZhMjEyNjUxMjkwNGI0NTE5N2M0ZDg1YTA3IHJlbGVhc2UyNC1tYWludAorNTIxNzEgZTY1ODM2ODE1NzkxYzdiZjZmZjAwMTIzMWYwNDA4MWMyNDhiYzllNyByZWxlYXNlMjQtbWFpbnQKKzUyMTczIDNiNTdlZWNkYzUwNGExMDBiNWZkMzRkMTZiNDIxOGE5MDk1NTBhNjggcmVsZWFzZTI0LW1haW50Cis1MjE3OCAyYTQ2Yjc2YmViOWViZDlhMjU2MjQyZWRmMDZmNzMxN2EzNTIyNDIxIHJlbGVhc2UyNC1tYWludAorNTIxODYgNDY2M2FjZTIzNDk5Y2U2N2FmMGI0Y2I1ODI5ZGZjYWViOTk2ZmUzZCByZWxlYXNlMjQtbWFpbnQKKzUyMTkwIDdiYmZmMmU5YTljMjE5YzVmOTBlZDUxYjRjYmFiMTMxMmMwNWZiYTIgcmVsZWFzZTI0LW1haW50Cis1MjE5MiA1YmVjNGE2N2ZmMGRhODhkY2Q0NzM4Mjc1NGY4MDg3Yjg2NzllYmI4IHJlbGVhc2UyNC1tYWludAorNTIxOTMgNDVhYzljZTBiYjE1NzE2ZGMxY2RlNDQxNDk5NGJlMTkwMTk5MjhhMiByZWxlYXNlMjQtbWFpbnQKKzUyMTk0IDZiYjM3NWY1NTljZTQ2NzRjMWNlN2MzNDMwM2FhZTk2NjYzOTI0OWUgcmVsZWFzZTI0LW1haW50Cis1MjE5NiBlODFmZjlhZjY0MWRiMjVjYmMzY2EzOTVjYjlhMDkzNGFiMzExZmUyIGxlZ2FjeS10cnVuaworNTIxOTcgNmIxZGRmMzg3YmQxOTVlNThiYTMyNDNjZWFiM2Q2NjY2MzViMzBkZSBwZXAzMDJfcGhhc2UyCis1MjE5OCA1NDM0ZWQ0ZmU4NjIyNjcxZTNhYmRkOTU0YzE1OTQ5NjhiMDA5ZGY0IHJlbGVhc2UyNC1tYWludAorNTIxOTkgNDcxM2Q5OTAwZTllOWNiNzE2MGFkMWE4N2FkYTEzZDhiODM1OTVlNyByZWxlYXNlMjUtbWFpbnQKKzUyMjAwIDc3Njc0YzBmOTIxNDEwNjk3NTZmZDg2ODNjZDNmOTcyNzNmNGZmYzkgbGVnYWN5LXRydW5rCis1MjIwMSA3OGQ3YmVhM2MxMjIwYmEyNWE3YTM5OTNlNjEwOTNiOTlmZjIwNzczIHJlbGVhc2UyNC1tYWludAorNTIyMDIgZGQ1NGJkNmE2YjFlY2E0YzVmMzA3NjY5MjZkYWNmM2NiY2RhNjMyYyByZWxlYXNlMjQtbWFpbnQKKzUyMjAzIDA3NmMyMGNhNWQ3YjZmMzU5YzNmOTU2MTlhNWMyYzRiZTdmYjhlYTIgcmVsZWFzZTI1LW1haW50Cis1MjIwNCAyNmMyZmY3MjgwMjdmZjg5MmUzYWVmMTM2ZTU2YWQyYjE5ODYxYmNmIGxlZ2FjeS10cnVuaworNTIyMDggNWFlYThiMWZkMjYyNTQwZDg0ZjhlYjE3ZDk0OGYxYzFiZjhmNmIyNCBsZWdhY3ktdHJ1bmsKKzUyMjA5IDM1NzE0NzAwY2Y4N2M1NGIwNDMxYWI4NTQ5ZWNiYjI1ZmI1ZjU0ZTQgcmVsZWFzZTI1LW1haW50Cis1MjIxMSAwZTlmZGIxNjRkMjA2MTJkNjViODYyOGQ1YjU1NWZkNzNlYjNiNTIzIGxlZ2FjeS10cnVuaworNTIyMTIgOTk0YWQ3NTBiMGUzYmMwNThjNTg5M2IxYmQ1ZmY5MWQxNzJhYzM1NyBsZWdhY3ktdHJ1bmsKKzUyMjEzIDVkODM5OTRjZDhjZGY0MGE0YjMzNWE4M2FmYWRjNjVlMTQwNThhMzUgbGVnYWN5LXRydW5rCis1MjIxNCBkMjRlYWFlZGE3NDhjNDE2ZjY3MjZkY2I4MmM4NGQ4NDgxMzgzNTk2IHJlbGVhc2UyNC1tYWludAorNTIyMTUgOTExOGVhNzgxZmQ1MmFmNGRhNjQ5NDQxNTIwNjUwMjYxZDU2ZGRkYiByZWxlYXNlMjQtbWFpbnQKKzUyMjE2IDJhMDVlZTRhMjNlMDcxZDFlZDI1ZjhjODA5MTk5MDNhZDYwMjY5MjUgcmVsZWFzZTI0LW1haW50Cis1MjIxOCA3YzM0OTQ0ZDRjODBiZTk3NThjMDBjNmUyYzY2MjE1ZGVkZmYwYTc4IGxlZ2FjeS10cnVuaworNTIyMTkgYTJmMjZmOTQ0YjY1NzE3OWFmZTM2ZDNlNmQ2ZmZlOGEyODJiOTM0NCByZWxlYXNlMjUtbWFpbnQKKzUyMjIwIGVkODhkNmI3YzFmOTY2OTAzYmQ5MWQ5YTllZTdlMDM5MWFiMjMyN2EgcmVsZWFzZTI1LW1haW50Cis1MjIyMSAxNmUyODkyZTFlM2MyYTI2OTE1YzI2MThlNzA1Yzg5YWJkNjQyYzk5IGxlZ2FjeS10cnVuaworNTIyMjIgOWUwNDMxZmQ2NzRhMjRmOThkYjFiY2FiN2FjYjNjNjFlOTAyZjhiYSByZWxlYXNlMjUtbWFpbnQKKzUyMjIzIDM0Nzc5NDM5MWNlNDM0MGJiNWMyMWIxZTgxYzY0NjIyYWQ1ZWVmYTggbGVnYWN5LXRydW5rCis1MjIyNCBkM2MxOTQ3ZDE2NjY1MzFlMWJhMWI5ODFmODEyNmIzZDViMDBhZWM2IHJlbGVhc2UyNC1tYWludAorNTIyMjUgOTNlMmIzMTEyZDc5ZTEwOWVjNWI2NDBhMGQ0MzM1MzViMGYxMjY1ZiByZWxlYXNlMjUtbWFpbnQKKzUyMjI2IDY5OWNjNmE1Yzg2ZWI4YTU5YWIwNTY5MWQ4MDk1YWVmNTFjZTVlNjAgcmVsZWFzZTI0LW1haW50Cis1MjIyNyBiOWQzMzAxZTVmMTk1ZTYwZDk5MzdiYTdhOTllNDViY2MyNDFiNDNhIGxlZ2FjeS10cnVuaworNTIyMjggZGVlZWE0ZGExZjM1NDllZjMzYWRlYzYxOTYwNDljNzRkNDc0YTgyYiByZWxlYXNlMjUtbWFpbnQKKzUyMjI5IDIwNDc0ZDllNzVlMTRiZGMyMDQ0NjlkYWQ0MDZiOGZlMzk3NzhkNjkgbGVnYWN5LXRydW5rCis1MjIzMCBmODA1Y2NjZTJmNTY0ZTA1MmU2ODY4YzBiYjZlMjc0Njk4MjNjN2E0IHJlbGVhc2UyNS1tYWludAorNTIyMzEgNjkzZmY1ZDczNDEyNTFmOTYzMTZlZDE2NWViNGVlZmM0NmQzNWQ4NCByZWxlYXNlMjQtbWFpbnQKKzUyMjMyIDBkYzI2MWQ4YzU3ZmE4NDUzMWYxZDI4M2UxOTNhMDRiNDExZjNiMmEgcmVsZWFzZTI0LW1haW50Cis1MjIzMyA4Mzk2NTk3N2YzNGExYWUzOTQ3NTAwMjBjMzk5ZDg4MzZkMDdkZWY0IGxlZ2FjeS10cnVuaworNTIyMzQgNzY4ODk0ZjMzZjFjMzQ3ZjQ0MDRkZTk1ZGJmM2JlZTM2MzFhZWNlMiByZWxlYXNlMjUtbWFpbnQKKzUyMjM1IDcxMTdmNmU1YWM4Mzk4ZGU3MWJhZmNkMjU2M2MwYjgzMWQ2MGVlNjggcmVsZWFzZTI1LW1haW50Cis1MjIzNiA5MWJlOTY2NDY0MDczMjhhYTc3ZmQzYzQ4MDJjYmM4OGM5ODAwZTYxIGxlZ2FjeS10cnVuaworNTIyMzcgMjBkZDEzYWVlMjMzNDkxMjI5MjFhY2IyMmU3ZTM0NDJjYjg0MWM2NSByZWxlYXNlMjUtbWFpbnQKKzUyMjM4IGMzMzlhMWExNmVjNWI2NDE1NmQyNjBmYzYxOTBkM2Q2ZGYxM2JmMzYgbGVnYWN5LXRydW5rCis1MjIzOSA0NzUyMjhlZDIwNTRjNzgyY2U1MjNjZGE2NjQ0NjhjOTQ1MDQzMDNjIHJlbGVhc2UyNS1tYWludAorNTIyNDAgMGFjZTNjODA2MTE0MTJkYjg4MDFlN2EzNDA3OGNiMzc5MGM2OTJhNyByZWxlYXNlMjQtbWFpbnQKKzUyMjQyIGFlZWU5ZjVhMGIzZWMwZTVjNWI2MmJhZDM2NGY4Mjg3M2IwYjMzYTcgbGVnYWN5LXRydW5rCis1MjI0MyBkZTJiNmExYzliMzExMTE1NTFjODZlMGRiOGE4MWE3MTQwZmVkNjRlIHJlbGVhc2UyNS1tYWludAorNTIyNDQgYTYwNDk1YjM2ZjM4Y2IyZWM0YjViMTBiNGU4ZDU4YmYwZWI2MTJiNSByZWxlYXNlMjQtbWFpbnQKKzUyMjQ1IGMzODc3YjY0MzBiNWQ4OWUyZTA5YmMxYTRlODc0NjIxMWI3ZjY3MTkgbGVnYWN5LXRydW5rCis1MjI0NiBlZGE5MzFmMzk4YzBkNWVmY2EwZjQ4ZWQyOGI3YzI0YzU3ZTBjMGE3IHJlbGVhc2UyNC1tYWludAorNTIyNDcgZWRlMDVkMzRjNTE4M2ZlMzE2YTRlYmMwMGM3NDg4MGYzZGE5YzNjMCByZWxlYXNlMjQtbWFpbnQKKzUyMjQ5IDRlZWZjZThiYzJmNzQ4YTMzN2RhN2ZiYzAwN2JiMjI0YTE5ZTA4ZDcgcmVsZWFzZTI0LW1haW50Cis1MjI1MSA2NjVkNzc5OGExYmM4YTYwYjY4YmRmMzJlZWEwMzk0MmVhNGM2M2VkIGxlZ2FjeS10cnVuaworNTIyNTIgYmY2YTAyYWRhNDQ5ZTRhMmM5ODJlNTM2MzQ2Mzg0NWU4ODYwYTBiNyByZWxlYXNlMjUtbWFpbnQKKzUyMjUzIDM4MzU2OTUxYzE5Zjk4YWE2NGVlNDRlNjdjMTQ1ZWM3NzBiMzBjYTUgcmVsZWFzZTI0LW1haW50Cis1MjI1NCAxZTRlMDE1YzA3YzA3NGRlN2RiNDk4MDM0NmQ4ZDExMjUzOWI0YTY5IHJlbGVhc2UyNS1tYWludAorNTIyNTUgZjQ2YmFkYzhkYzIxMzM5ODJlMzI4ZTQ2MGM5YzA4M2EyMjZhMmEyMCBsZWdhY3ktdHJ1bmsKKzUyMjU2IGQzM2U0MDExZTIwMjk0NzlhYWE1N2VjYjBiYzA5ZmRlNzdjOTc5ODQgcmVsZWFzZTI0LW1haW50Cis1MjI1NyAyOGRiNjExMDE0NjM2ZWVhMWM4OGQwY2QzZmMyY2RiMTRjODg0MzJkIGxlZ2FjeS10cnVuaworNTIyNTggOGNhOWE3YjExYTdkNDI2MWJhMGMyYjhlNmEzYWIwN2QzNmVhMjNlNyByZWxlYXNlMjUtbWFpbnQKKzUyMjU5IDUyYjY1ZjI4YmUxNzE3MjAzMWMzMzAyMzg1NTEzN2U4YTQ4ZWI1YzQgcmVsZWFzZTI0LW1haW50Cis1MjI2MCBjZTUxNTAzMmZjZTM3YWExYjBkODc2OGQwNzc2MmQ3MWIyZWUxNWYwIHJlbGVhc2UyNC1tYWludAorNTIyNjYgMzA5MDllMWNhZjc5YzhkNTQ0NjJkNWQ1OTMyYWE2YWZlYmFmOTMxNyByZWxlYXNlMjQtbWFpbnQKKzUyMjY3IDBkYWM2ZGUwZmU3OGFkZmJmOThmZGVlYTQzMTgwZmZlODgzOGM2ZjUgcmVsZWFzZTI1LW1haW50Cis1MjI2OCA2NmI4M2QxYmEyZmM1Zjk5Zjk5MjU3YWEzM2Y3ZDgwNjNjN2YxZTQzIGxlZ2FjeS10cnVuaworNTIyNjkgYjJlZGQ1MTI0MWFlMjIxYTk0Y2IxZDE0NjY2ZDFmNmYyOTM1N2QxNSByZWxlYXNlMjQtbWFpbnQKKzUyMjcxIDU2YjkxMWRjYzE4NWFjNjBmYWU5YmU4MzRlZDU2M2VmYmJmODlkMGIgcmVsZWFzZTI0LW1haW50Cis1MjI3MiBmN2ZiZGM1NjJkN2FkZjY4OTdhM2Q2OGE3ZDFiOGI0MjNiMTgxZjQxIHJlbGVhc2UyNC1tYWludAorNTIyNzMgNWJjYWI0Y2E2NjA4MDQ5N2ViZDdjY2NjNzdkOTJiODBmMjM4NzU3NSByZWxlYXNlMjQtbWFpbnQKKzUyMjc0IDk4NTEyNjg3Mzc0MGRlZjU1NzczYmRlNTQwYzZkMjYyMzFjYzQ2YWMgcmVsZWFzZTI0LW1haW50Cis1MjI3NSBhMWMzODFjMDVkZGVjNDY3NzA4ZWY0OWQ5ZWQyYzBkYThkZWY1OTdkIHJlbGVhc2UyNC1tYWludAorNTIyNzYgYmFhZWVhNzIyYjFjOTdjYTAzMTc5ZTVhMDJhNDcxN2U3MDE3YmEyYSByZWxlYXNlMjQtbWFpbnQKKzUyMjgyIGEwNDU0ZjFmOTdjNmNhYmIzNmM0ZmFjY2M1ODkzOGM5ZGJmMDk0NWEgcmVsZWFzZTI0LW1haW50Cis1MjI5MyBhYzY1MGFkNmM4MTdiZTJhNTY2ODdhYTBjNzkzZDExZDkzNDM4MjY5IGxlZ2FjeS10cnVuaworNTIyOTQgNjhiNGQwZGFiNDlhZDFlZWQ2YjYzODZjOGU2MjBkZjY5NzI4ZjM0MCByZWxlYXNlMjUtbWFpbnQKKzUyMjk1IDcwMTQwY2NjZDNkYTczYmRkNDI2Mzk4Y2ZiNWExMDAzODExOGIwMzggbGVnYWN5LXRydW5rCis1MjI5NiA2NjcwZGRhNGIyN2Q5ZjJkMTIyMGViNDk0ZTJiZDhmMTZlODRkMGM1IHJlbGVhc2UyNS1tYWludAorNTIyOTcgZGViMWEwYjVkYmNiOGVhYjdkODQ5YmYyMTRkNTE3NjE2YmFiNGNlMSBsZWdhY3ktdHJ1bmsKKzUyMjk4IGM2OGZhYzFlYjZjYmU0NzhiNGM2NTgzOTE2ZTcxYzQxOTA5M2RiZDUgcmVsZWFzZTI1LW1haW50Cis1MjI5OSBjMDIwODE5NWE1NTg1MDc1NjNhOGJkZmM1MzcwMmQzMzQ0MGQzNzQ5IGxlZ2FjeS10cnVuaworNTIzMDAgNzY0MGE1NzgyMmE2N2FjNmFkOTQxOTJjZGY0ZTdiMzRlOWY2N2M3ZiByZWxlYXNlMjUtbWFpbnQKKzUyMzAxIDY0NzU5OGMxYTlkOTI0M2JjNmZkYmEwNjdiZTQ4YWExMTczMzI0NjIgbGVnYWN5LXRydW5rCis1MjMwMiA2ZTZjMjIwYzJmYTYyMmFjMjY4ZGQ0Zjg1NzE1MjM4YmNiNWMxZjdiIHJlbGVhc2UyNS1tYWludAorNTIzMDMgZDI3ZTc2MzI2ODE5ODdhZTU2OTliNTFkODdjMjYwNGIyNzE0Mzg4ZCBsZWdhY3ktdHJ1bmsKKzUyMzA0IDE3ZjQxNzgwOWUyMzk4M2MwM2Q2NjYyZmJjZTRjNDk2Y2NiM2Y3NjIgcmVsZWFzZTI1LW1haW50Cis1MjMwNSA0MTU5Mzg2ZjhkYmRmYzA1NTZkNjMwNzZhZWY1ZTZkYTQzMWEzNzlkIGxlZ2FjeS10cnVuaworNTIzMDYgYTBiZjcyODFiZDIwYjY1YTU4NGY0YTYyOTljYmVjZTI1OTU2ZDgzNCByZWxlYXNlMjUtbWFpbnQKKzUyMzA3IDEwYWJmY2I2NmU2N2JkZWZhN2Q3YzU3MDlkOTU3MDY3ZmUyNGZlMjcgbGVnYWN5LXRydW5rCis1MjMwOCBjZDVmN2NkMjA5OGViM2Y3NGFiZThmYjg0ZmZhOTEwYjJmMTA2ZWI2IHJlbGVhc2UyNS1tYWludAorNTIzMDkgZjQ0MzBiZWMzMDEzZTI4ZjkxMTE0NWRhNWFlNmMwZDY5MTcwODFjZCBsZWdhY3ktdHJ1bmsKKzUyMzEwIDFhMWE1OWY1MGI0YWUyMjhmOTYxYzljMmRkZjM1NjVjOWU3NTIxMDIgcmVsZWFzZTI1LW1haW50Cis1MjMxMSBhMjQ4MDFkYTkyZWUwZDUyYjYxMDMwZmFkN2E3MGU1ZTZhZjFiOGI2IGxlZ2FjeS10cnVuaworNTIzMTIgMWU4ZTkwMGQ5ZjQ5ZDI3YjQwYjI1YjY0M2E0M2NhYjk1Yjk2N2M5YiByZWxlYXNlMjUtbWFpbnQKKzUyMzEzIDdmYWJiYzRhMGM0ZTg2YjY2ODAzZTg0NjJkNzdjNDk4MTc5ZTYxZjkgbGVnYWN5LXRydW5rCis1MjMxNCAzY2ZhODhmYjBmNDUzOTc4YzBhNmYyMGIwM2MyNjZmODI4NDM0MTJlIHJlbGVhc2UyNS1tYWludAorNTIzMTUgNjM1NDM4YjI5NjczZmQ2MTFmMjI5OWJkN2M4NjllZjIxNGJlZGIxZiBsZWdhY3ktdHJ1bmsKKzUyMzE2IGM0YzRlZWM2NGMxMzY0YmM2ODg0YWMwYjU0YTZiZjcwODY4MzE0ZTYgbGVnYWN5LXRydW5rCis1MjMxOSBjNzdkOWE5ZmU3MDQzNjkyZjNjY2UyY2FlMTIxMjE3OTRjMWFkNjk5IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MjMyMCA4ZTY4NWIyMzg5ZGNlZWFmMzkxNGE1MTQ2MDk2MTM0ODViNGM2Y2RiIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MjMyNyAzOWI5OTFiYTg3OGY3OTA1YzY4NDI4NTQ1MzE2NWRkZjZmZTgxYmRkIGxlZ2FjeS10cnVuaworNTIzMzEgMTA5ZjkwYzI2NmZiYzI4NzM2YzQzNWE1ZDk5MDM1ZWYzMDdiYWJjYSBiY2Fubm9uLW9iamNhcAorNTIzMzIgMzk4NWQ3ZTIwNjdkYjc1ZjE3MGUwODkxOTk0YjBmZDcwOTYzZTQwYiBsZWdhY3ktdHJ1bmsKKzUyMzMzIGI2MWE5MGU3NDdlN2M5MjkwMjUyOTgzYzY1NmE0MjcyYzc5ZjdmMDYgbGVnYWN5LXRydW5rCis1MjMzNCA4NGQzYjcyZGMzMzkyYTZkMTBkZWNmOWJhY2UwYjViYjdhYzEyMWY5IHJlbGVhc2UyNS1tYWludAorNTIzMzUgYjk0YmNiN2FlZDNkZDNhYTdhMGM5ZTdhMDJkZDg4ODllZjhkMjAwZSBsZWdhY3ktdHJ1bmsKKzUyMzM2IDNiYzRhOTQwMWExMTYxN2I1NjU3NjJmYmQwMTBmZjUzMDI4ZDU1YWIgbGVnYWN5LXRydW5rCis1MjMzNyBkYWU3NGE4MDk0ZDkwYTNiMGM1MjY5ZmU2NjFlYWEwMDViMmNmYmI4IHJlbGVhc2UyNS1tYWludAorNTIzMzggYmIzNWM1NWJjNDY3MGJkMGRlYjI5NTc2ZTE5YzZmODVkZGYwMmY4ZCBsZWdhY3ktdHJ1bmsKKzUyMzM5IDBmNTA1ZWM4Yjk3YWEyMWUwZmFhMTZkNDQwZjQ2OTBmNzNkNTFlMjUgbGVnYWN5LXRydW5rCis1MjM0MCA0NWVmZTQzNTZiNjFlZGEwMzA5NjdmMTE5OTc4NGE4ZmY0YzA5YjljIHJlbGVhc2UyNS1tYWludAorNTIzNDEgYzAwNmQyMjc5NDhkZWVkNDlkYzgxZTEzYjA2MzU2YTJlMDY5OGMxOCBsZWdhY3ktdHJ1bmsKKzUyMzQyIDA1YzBjZDI3YWJjYTA4NjYxMzQwY2E3Y2U4MDM0M2NmN2I5Yjg2MDIgbGVnYWN5LXRydW5rCis1MjM0MyBkZTg4YzM2M2Q2MjIzNjI4NjMzMjhlMjZlMmJhMzJhZDhjMmQyYTIzIGxlZ2FjeS10cnVuaworNTIzNDQgYTI5ZDEwMGM3ODE1M2MxMGEyYTI0YWU3MGJhOGE5NWFlODkyNjdjMSBsZWdhY3ktdHJ1bmsKKzUyMzQ1IDU2MTVlYWM4YWE3OTc2ZmNlNjY2MmQ4ODQ2NmM0M2FiZmMzYzQ1ZTIgcmVsZWFzZTI1LW1haW50Cis1MjM0NiAyYTFhNWRjMjU1YWRjOTJiNzExNDg2ODE1NzVhMWFiYzFmNDkxNjY2IGxlZ2FjeS10cnVuaworNTIzNDcgMWU1NTVmMDQ4ZTNkNGJiZTBiNjMwYzk0MzJjNDM2NWViNmIxZTk2MiByZWxlYXNlMjUtbWFpbnQKKzUyMzU0IGZhOTZiZmY5M2JjYWQwMGFkNzNkNjkyNzQ4Zjg2ODM5MDMyZTFlNTAgbGVnYWN5LXRydW5rCis1MjM1NiBiZjhkYWY0YTZlNzFhMWVhMmU1ZGU1MWZjNjQ4ZGY3NWU1YWE4ODQxIGxlZ2FjeS10cnVuaworNTIzNTcgNDY5YzJkNmM4MTY1YjI1Njc1MzM1YWE1ZWEzOWU4OTBjMzk3MGFhZSByZWxlYXNlMjUtbWFpbnQKKzUyMzU4IDg1MDUwODM5MWQ0NmJkZTRlMDAxNzJhNDk0OTFjMWFiMjk2MDBhODMgcmVsZWFzZTI0LW1haW50Cis1MjM1OSBlMWNiMzI2NDVmNzdlMWY5N2VmOTE3N2NjMTAxMTFkNzE4MGVhNjBlIHJlbGVhc2UyNC1tYWludAorNTIzNjAgN2M3ZWIxOTBiMjY2MzBmYzYyZTY0ZTg5NTUwOTUyNmRiNmMzZjI1NSBsZWdhY3ktdHJ1bmsKKzUyMzYxIGE2NTExZTgyOTdmMDQ4YzUzMmE4NzQ5NTZjZWRhNTVmZjk1ODZlY2EgcmVsZWFzZTI1LW1haW50Cis1MjM2MiBmYjVkYjEyZjAyNjc2MDIxOWM4YWM2MzQ0MTUyYzQ2MTY5YTQ1MjEzIHJlbGVhc2UyNS1tYWludAorNTIzNjMgMTQ1MTNkYjBkNjJkNTBmZjIyYTIzNzYxZTMzYjkzNTg3N2ZmMmVmYSBsZWdhY3ktdHJ1bmsKKzUyMzY1IDUyZmUwZWNmNTVjMWExODEwNWZmNWMyZDc3OWE4NzFmN2ZjYWY1NDggbGVnYWN5LXRydW5rCis1MjM2NyA0MDUwZjI1M2E2ZjhhNWYwMjc5Mzg4Y2I2ZWExMDc5OWI2NzlkM2Q3IHJlbGVhc2UyNS1tYWludAorNTIzNzIgMzQ1NTU0MjJkYzQ1Zjg4ZjUyOTNmYjlmYmEzMTliNTU5ZTg3NmFhOSBiY2Fubm9uLW9iamNhcAorNTIzNzcgNDk4Y2Y0YjA5ZDhhYzAzZTQ1ZjNhMGUyNmE3M2NiOTEzZmU3Njc4MCBsZWdhY3ktdHJ1bmsKKzUyMzc4IDY2MDlmMDIwNjQ5ZjBkMGNmNjUzZTY5ZThhMTkwNmE4NmEzY2E0ZDMgbGVnYWN5LXRydW5rCis1MjM3OSBhMWE2NzkxMDUyODg2Yzg5MGEwZjExOWM1MjVjM2QyNzE4ZjI3YzRjIGxlZ2FjeS10cnVuaworNTIzODAgYjFkNzA4YzMzZWFiNDI5MDI2MmU5Njg1M2NmYjQzNDVmOWUwNzMwYSByZWxlYXNlMjQtbWFpbnQKKzUyMzgxIGZiMGM2YTY3YTkzOWU4YTJlYTI3NzlmNzllMzJjM2I3Njg5YzM3ZTQgcmVsZWFzZTI1LW1haW50Cis1MjM4MiBlZTY2YTE1YTkwMzAyMWNhMjUwNGEzMjMyNGQzZGNiYzQ2ZWE4YTliIHJlbGVhc2UyNC1tYWludAorNTIzODMgNTkyYWM5MzUzMmVmZGZhOWE0MGY0N2I5NmIxYzEyMzFkMmVhZTBlNSByZWxlYXNlMjQtbWFpbnQKKzUyMzg0IDEwNDM0ZDFiNDI2NjFiNzAwMTg4YzgyZWZjMzUwNzFmODI0Y2MxZTQgcmVsZWFzZTI0LW1haW50Cis1MjM4NyA0MTBjMWM3OGVkNTFlMTJkYzNkZTk1Nzk1OWY2Yjc5NzBjMzc5OTRhIGxlZ2FjeS10cnVuaworNTIzODggZTJkZjEzNTYzNDlmMTY4YmFlYmIzMzVlMjFjMTU4MzMzMDQzZDRkZiBsZWdhY3ktdHJ1bmsKKzUyMzg5IDA1MDlhYjE0YjJkOTdjZWVlZmUyNWU5NjQzMmY0ZTM3M2VhYWI4MmUgbGVnYWN5LXRydW5rCis1MjM5MCAxOGMxMmQzNDIxNDM4MmZhZjhjNWZhNWNiM2M2MzY0OTA1Mzg0MmM2IGxlZ2FjeS10cnVuaworNTIzOTEgMTlkZTMxNjQ5MmU3MzhjZWVkZWNiOGVjNTgwODQ3NTEzNmRjNjZjMCByZWxlYXNlMjUtbWFpbnQKKzUyMzk0IDNiODUzMzM0MjhmOTg2ZGQ2ZDkxZDU3ZjA3Y2U1MDcyMWIwMTg1YjUgcmVsZWFzZTI1LW1haW50Cis1MjQwNSA4NmVhODhjNTIwNWJmNTA0NTFhMzIzMGY2NzM1ZGNjMmYyM2M5NjNhIHJlbGVhc2UyNS1tYWludAorNTI0MTQgODI2ZTg2NzRhMTFkNTg5NTdmYmFlYWRkZThjMDk2NGVlYzA3ZjIzMSBsZWdhY3ktdHJ1bmsKKzUyNDE1IGEwZDlmY2Y2ZjIxNTNmNTI5N2ExNGJlMmUxOTdkYjk1YTE3MTk4OWQgbGVnYWN5LXRydW5rCis1MjQxNiAzODRlZjg3ZmNjMjU3OWVhNmQ1ZTliNzc4NTAyYTBjNGZmOGM1MTIwIGxlZ2FjeS10cnVuaworNTI0MTcgYzU0NDJiNDI0YTg2OTM4NWUwMzNjZTdjMjhmZTdhYTYwMjdkZmE2YyByZWxlYXNlMjUtbWFpbnQKKzUyNDE4IDUwMzBmYjRhNDAwZmViYjlhYzhjZDQ3OTJiODY3NmI4ZTU5OGQ5NTUgbGVnYWN5LXRydW5rCis1MjQxOSBlOWM4NDRjNGQxYTFjOTU4N2VmZDc2ZDllMTFiN2FkNzk3YWFlZmNiIHJlbGVhc2UyNS1tYWludAorNTI0MjAgNzQ5ZDg1NWVlMzU3MWFiN2U1N2MyZjQ5MThkNTUxMDIxY2ZhNjNjMSBsZWdhY3ktdHJ1bmsKKzUyNDIxIDEyM2MxNGVkMzA4YTE1MzgxZDQwYjA4MzlmNTM3ZDA4ZWVmZThjYjYgcmVsZWFzZTI1LW1haW50Cis1MjQyMyA0ZWNmMTY2MjQ0OTg0NGU2ZTBjZGM5OWI0NDgxN2NkM2Q5ZDkxY2IwIHJlbGVhc2UyMy1tYWludAorNTI0MjQgOGNkMGI3MTEzYTcxYTA1NTFlMzgzMGNmZmZmYTU4YTAxODE2YTA0ZiByZWxlYXNlMjMtbWFpbnQKKzUyNDI1IGIyMTQyN2ZmMjY0NzVmOWM3ZjRhNzAxZGEzMjRlOTUxYzJiMTYyZmUgcmVsZWFzZTIzLW1haW50Cis1MjQyNiBjZGQzNDc2ZDFiMDZiM2I0ZWNjODllZDM1ZDViNDhiNmRmYjYwM2E2IHJlbGVhc2UyMy1tYWludAorNTI0MzEgZTgyZTY5NmMwM2RjOGFkNjM2YTczMzE3NTMzMmYyN2M1YzdjNjdiNyBsZWdhY3ktdHJ1bmsKKzUyNDMyIDA1MDA0MGNiYTI2YTQ1YTgxOTk4YmQ3OTVhMmE2ZTJkMDMzNGY1NmEgcmVsZWFzZTI1LW1haW50Cis1MjQ0NiA5MTg2NTk4Mjk2Y2IwOWUxNTk1NWE1N2QxODlhMjcxZjlkN2U4OWVkIGxlZ2FjeS10cnVuaworNTI0NDcgOTQ3MzY2ZTEzMWZkYWUyMDEyZDhmOTZiMmQyOWZmOTYxYjYyOGNhNSByZWxlYXNlMjUtbWFpbnQKKzUyNDQ4IGQ3OGE3YTYwNTYxOTM5NjhlODg1NmNjODI3ZDgzZDExMzlmODg0ZTQgcmVsZWFzZTI0LW1haW50Cis1MjQ0OSAxNTg2ZmFiM2M4NDhiOTQ0NzI3ZTFjNGZkZDk3YWZiMzk2M2I2N2UyIGxlZ2FjeS10cnVuaworNTI0NTIgMGMxY2I5MmRhYzk3ZWYzOWUxMTVmOWM1OWNhMzM0OTM5ZThiYzhlOCBsZWdhY3ktdHJ1bmsKKzUyNDUzIDBlODNmOGM1ZDcwYWVjMzQ3MzFiMGI4ZTFmYzVhNzBhY2ZjNjI4MjIgcmVsZWFzZTI1LW1haW50Cis1MjQ1NCBjMGY1NmYyNDYxZjUyOThmYmMxMzkxNGY3OWVhM2M3MTQ2ZmY4NzY5IGxlZ2FjeS10cnVuaworNTI0NTUgNWRjNDczMTY1MDhmYjRlOGJmMjZiZDAyZmRhNTVlMGVkYWEwMWU0NiByZWxlYXNlMjUtbWFpbnQKKzUyNDU2IDAxNWY4OWE3MzkyOWU0YmIzY2QyYjQ3ZGQwMDIxYTIyZjM1ODQ0ZWMgbGVnYWN5LXRydW5rCis1MjQ1NyAzNGRjYmM3NDYyNDNlNjdjMjE2Y2M5YzlhYTQ4YWVjYmIwMDY5YjE4IHJlbGVhc2UyNS1tYWludAorNTI0NTggZTVjYjRjYjU2NTQxYjk3Y2IwMjdlZGFhMmViYjRkYmEzNmE3M2U2NCBsZWdhY3ktdHJ1bmsKKzUyNDU5IGQzZGJiMzI2ZmZiYWM3OWE1N2MzOWY2Yjc1Y2E5NTRlNGY2NGI1YjMgbGVnYWN5LXRydW5rCis1MjQ2MCBhZDRjOWJhMWRiNTdmZDFlMDJjMDRkNjY5NzkxZmI5N2U2YjVmMzUxIGxlZ2FjeS10cnVuaworNTI0NjEgNWExMDZiNGJjZGQyOGYyM2FjM2JmOTQ5ZmNlMTkwZTAwYTk3ZTE5NiBsZWdhY3ktdHJ1bmsKKzUyNDYyIGU1NzgyZTJhNDEyYmExOGUzMmJiNjk2YzRjZThiMTE1MzRjZjE3OWMgbGVnYWN5LXRydW5rCis1MjQ2MyA3YWY5NGEyNzIzZWNiMTM0ZmZlMGIwZGJiMDNhZWExYWU5MjM1ZjdhIHJlbGVhc2UyNS1tYWludAorNTI0NjQgMGQ1MTc2ZTJiZmU0YjQ0YTkxZTc0YjIzNjFkMmYzOTMzODVjMzJhMyBsZWdhY3ktdHJ1bmsKKzUyNDY1IGRkYjFkYjU2NTYwODkzYzRiN2E1NjBlNTkwMzU1YTllNWNlNmUxMGIgcmVsZWFzZTI1LW1haW50Cis1MjQ2NiBlODY3YjU5NTA3OWU5MjdlNGYyY2VkZjlhMGJhNDJiNTExNzkwNTljIGxlZ2FjeS10cnVuaworNTI0NjcgYjU2YjU2MmUzYTdiN2M4MWYxMGUxNjk2YWZhY2UxOWQyMDUyZjJjNiByZWxlYXNlMjUtbWFpbnQKKzUyNDY4IDc2MmRjYWQ3MjBiNTNlYWNmMTRhN2MzNzA2ZjcyZWU1OWMxNWQwYmYgcmVsZWFzZTI0LW1haW50Cis1MjQ2OSBlMmU4MGEwMTY5NDUyMjA5YTZlNGQyMmJjOWNjYWQyMDAxZWQ0N2JiIGxlZ2FjeS10cnVuaworNTI0NzAgYzVhNmFjZTNmYzdmZDI1NGIyMzhkN2JjMGI0YTIyOTljNDEyZDE5NiByZWxlYXNlMjUtbWFpbnQKKzUyNDcxIDU4ZGI5NjhkMTQ0ODJlN2M5NDU1YmIyYjc3NmZmMmQ2ZTBkNzkyNWEgcmVsZWFzZTI0LW1haW50Cis1MjQ3MiA2YjkxYzBkY2VhNThhNjY2Yjc5MTFjZjhkZjBjODdjMGY3ODZkNDBjIHJlbGVhc2UyNC1tYWludAorNTI0NzMgOGY5YWQzNTgxMzZmMDM5MTQyOWQ0MWI1ZmJhZDM2NmI2MzAwYzJiNCBsZWdhY3ktdHJ1bmsKKzUyNDc0IDI5YzAxZTYyY2U2YmNhZTY4MTY5MGMyNmNkMmE1MmUzY2MxODFjZmQgcmVsZWFzZTI1LW1haW50Cis1MjQ3NSAxOTU1NTljNWJhY2RmMDZjMjYyZjYwZGZlZmY0MTcxMzg3ZDhhZTVhIHJlbGVhc2UyNC1tYWludAorNTI0NzYgZTNiOWM2Mzk3NzIzNDgyY2QxYWViOTYzZGQ0M2JlZmJjMjA1ZWZlMiBsZWdhY3ktdHJ1bmsKKzUyNDc3IGY0NWIyZjBjNTQyZmMzYzJiOGFlYTc1ZTk2NmUyMjBmNWY5NjBjYTYgcmVsZWFzZTI1LW1haW50Cis1MjQ3OCA3NzBjNzE4YmM5N2UwMmEyYjNjYjI3ZTRkYjljZDM1MGFlMWRkNjNhIGxlZ2FjeS10cnVuaworNTI0NzkgYmIwZGI0NWYyMGVhMmJjMzc3ZmI0NmVhYjU0NzZkZTI1ZTJmMWYyMyByZWxlYXNlMjUtbWFpbnQKKzUyNDgwIGZiOWE3YjI4OGRjZTI5NDM1NTZlMjU1NzNkMTA3YTJhNmIwOTFjYzQgbGVnYWN5LXRydW5rCis1MjQ4MSA5ZDY5MWQzNzU1ZDBkZTRlMWViMTI3NDliOWMzMWY3ZDlhZjY5N2FkIGxlZ2FjeS10cnVuaworNTI0ODIgYjkxMTY2ZThkMzhkYjBjNzFjM2VkMzllNmNmOWM5YTQzM2U3ZjM3YSByZWxlYXNlMjUtbWFpbnQKKzUyNDgzIDk4ZTkwMDQ5OTA0MzQxNTQwY2IyOTAwNGQ5ZDNlNDk5NTRkY2I2ZmIgbGVnYWN5LXRydW5rCis1MjQ4NCA4NjI0OTA5ZjUwMzFmNDBkOTI1NWY3ZTY3N2Y4ZDcwOTExMjlkZjEzIGxlZ2FjeS10cnVuaworNTI0ODUgOTg4ZDk1ZmYxZmRiNzJhZDA1N2M4MDdmODcwNmE3MzkwYjZmMGExZiBsZWdhY3ktdHJ1bmsKKzUyNDg2IDE4ODcxYTEwZmZjMWZhNTRmY2IyMDlmODJhNTlmMTY1ZjIyMTgyMTggcmVsZWFzZTI1LW1haW50Cis1MjQ4NyA0M2E4MjY0NjdhZDNjZWFiZmI0MTQ0YTc0YTA1MjAxM2UxYmM5NTBlIGxlZ2FjeS10cnVuaworNTI0ODggNWQ1ZjE4NDQzNjY0ZDE1NzIyZDJhNzZmZDQ0OTAxMmQ0YTkxNWU1OSBsZWdhY3ktdHJ1bmsKKzUyNDg5IGRjMWU0MzYxNzk3MjgyMmYyN2QxN2JiYzI3NzcxYTVmNGZhZjc3YmUgcmVsZWFzZTI1LW1haW50Cis1MjQ5MCBkMGJkOGE4YWZiMDEwM2M2YzEzYzUzYzVmNWZiODE5N2M0YTEwOTE0IHAzeWsKKzUyNDkxIDFjY2UwNTI2ZDliMGE1M2Y0ZmY5NTcxM2RkZTE1M2RjNzBkYWUyZGMgcDN5aworNTI0OTIgMjE5MDhjNzBkMjY0YmNmOTMyNzM4ODM5YzQzZjRhMTNkNjBiMzc1NiBsZWdhY3ktdHJ1bmsKKzUyNDkzIDEzYjhhZDY3OWRlZmM3NDM0YjFiYTFjNWUzM2ExZmIyMzQ5ODA4ZmMgbGVnYWN5LXRydW5rCis1MjQ5NCA1MTMzOWQzOWE1OTZhZmYwMmFkMTVjMzg4NDY3YWJkNzFiMzYxMDU2IGxlZ2FjeS10cnVuaworNTI0OTUgNjk3MjhhN2QyMzEyMzljZWM1MTUwZWI3YjE1ZGJmNmU4Yzc1YjUxMiBsZWdhY3ktdHJ1bmsKKzUyNDk2IDdkMGJkZDZlMWM0NjhiMmI1NjFhNjM1NTQzYjhmZTJmYTdiMzEwMWMgbGVnYWN5LXRydW5rCis1MjQ5NyBjMzgxZmNmOWQxMDgxYzY1NWQ4YzY2ZTk1MmY5ZmZlMjk3Zjg5MGRjIGxlZ2FjeS10cnVuaworNTI0OTggMmQ1YTVkZWRkOTc1OTY4MWU5ZWIyM2IxYjk3NWQ0Mjg3OWZmODAxZSByZWxlYXNlMjUtbWFpbnQKKzUyNTAwIDRjNTNiMjQzYzM5MjJhNDU0MzE1YzNlZTU3NmM0ZjIwN2RlZGQxMjggbGVnYWN5LXRydW5rCis1MjUwMSBjNThkMWI5Njk4NDM4ZTZhYzBmOGY0YmQwMTRiZTA1YTZhOTRlMjc2IGxlZ2FjeS10cnVuaworNTI1MDIgNzk2MzA0ZWZhMjY4YzA1ZDJlM2U5N2Y4OGM2MjA4ZGQ1NzZmYzMzMSBsZWdhY3ktdHJ1bmsKKzUyNTAzIDYxZTRiNTlhZGEwYzI5ZWY5MjRkMTFhODYyZjBlZjU2MjMzM2IxMTQgbGVnYWN5LXRydW5rCis1MjUwNCAzNjA4NjA1YTc0ZDU4ZTU2ZWE4YTJhOWUzYjE1ODJiNTc4NzdjYWE3IGxlZ2FjeS10cnVuaworNTI1MDUgYzRlNWU1M2JhNzNmMzU4Yjk4OTQwMWNmMzQ3M2JkNDE2ZWVmMDQ3NSBsZWdhY3ktdHJ1bmsKKzUyNTA2IDMyMWMwNzVmOTVjZmRhYzdkMWUxOGJiMDUxYWUzODBmZGJiZjIyNWIgbGVnYWN5LXRydW5rCis1MjUwNyBhMTg2MzgzM2M0ZTZmNzBhYzg5Mjg2OTk2NTk4MjA3ZTc5Y2QxZjdiIHJlbGVhc2UyNS1tYWludAorNTI1MDggNGM2MWY0MDBjZTMwZDBjYjlmODU2YzBiOGYxNDM0ZThlZmZhZDUxNCByZWxlYXNlMjUtbWFpbnQKKzUyNTA5IDM4MGEzNWQ3OGM2MDg5NmI4NjlmMjcwZTkwY2QxOTFkMWEwYzU0YTggcmVsZWFzZTI1LW1haW50Cis1MjUxMCA5YWNjMTc3NWQ1NzE0YmJmZTIxOTAzYjE0ZWY1NmZlMmUzM2MxYTM1IHJlbGVhc2UyNS1tYWludAorNTI1MTEgNmE2NDY5ZTI5NGU3MmZjYWJjOWE0MGEzNThlYWNhMDg3ZjE1YWRhNCByZWxlYXNlMjUtbWFpbnQKKzUyNTEyIGQwMjBlMmY3MDhiZTgyOWYzNTk3YzQxZTg4NjJjMjk0YzE5MDNmOGMgcmVsZWFzZTI1LW1haW50Cis1MjUxMyBkZTI2MWY3NjNiNGNjMDQ5NTkwNDdmY2FlNGI5ZjYwMmY1NjMxZmJiIGxlZ2FjeS10cnVuaworNTI1MTQgNDgxYmJhNDFmOWY0NTBlMjY1ZjFhOTE3MmEwYjQ2YjZkNDQ5YzIzNiBsZWdhY3ktdHJ1bmsKKzUyNTE1IGQyMWRkOGNiYzcxNjE2N2EwNDE2Yzg3MzY5NGIzNjUyY2NjOWRmZTIgcmVsZWFzZTI1LW1haW50Cis1MjUxNyA3YzQwNTg2ODEyMjQ5NTVkZTZhZWEyZmFiYTRhMWFhZjIzM2MxOWU0IGxlZ2FjeS10cnVuaworNTI1MTggZDI0NWVmYzdlYzg5MDA0OGFlYzcxYmVjOWNjZjE0MjE0ZDgzZWE1ZSByZWxlYXNlMjUtbWFpbnQKKzUyNTE5IDZhODYwYzgxYWI3ZDA4Mzk4Mjc4YzdjYTZkNjk2M2JlNDM2ZDFlYzkgbGVnYWN5LXRydW5rCis1MjUyMCA0ZDgzM2ZjYTM2NzAyY2JlYWM0NzM2MTYwMjM0ODhkOTA3ZDFlODY0IGxlZ2FjeS10cnVuaworNTI1MjEgMmExZWFlNmMwZWI4NjJhNWE4NGRiZTUwMGIyMGJkYzUyYTg0YzE3ZCBsZWdhY3ktdHJ1bmsKKzUyNTIyIGE3MmQ5NzBjMzg0YmQxMzU5NGM1NjMxNWI4YTVlMmFiM2VhZWE0NzkgbGVnYWN5LXRydW5rCis1MjUyMyAzZDNmMTI3ZDNlMGM3OWJlODNmYjUwYjJjZmYzNTBmNzMwZmUwZjdjIHJlbGVhc2UyNS1tYWludAorNTI1MjQgZmQ4YTVmOTI1ZDRkNTEzOWNlMjYyMzcyMTEzYmZkZjEzMjI1YTY5MyBsZWdhY3ktdHJ1bmsKKzUyNTI1IGVkMjJjYThmNzhmZjAzYTUzMGIwYmZkNTA2MzNmZGE0ZGE5MGVkY2QgcmVsZWFzZTI1LW1haW50Cis1MjUyNiBjN2Q3NzhkYTE2MmM5MjBmYWFlYzJiM2UxM2ZiODllYTM1NTEzMTFiIGxlZ2FjeS10cnVuaworNTI1MjcgOTY2MzEwMGM5NWNhMmQyNjEyMTcxNTRmNzQzNjRhMGU3YzcwMWFlYSBsZWdhY3ktdHJ1bmsKKzUyNTI4IDdjNDQxNDQ3MTRmNjhmOTJhN2FiNzQyMzNkNDQ1MWY2OTljNGI4ZDUgcmVsZWFzZTI1LW1haW50Cis1MjUyOSBlMTY4MDBhYzFlZWExNDFmMGQyM2U0M2MzMjAzZDUzMDQwYWQ4MDljIGxlZ2FjeS10cnVuaworNTI1MzAgODI2OTVlNzM2ODIzZjAyODQ2ZWNlYzA1MDdjYTE4NDExODkyYzdiNiByZWxlYXNlMjUtbWFpbnQKKzUyNTMxIGY0OWNiNjA5MDQyODczYjY1ZGY4ZWIzNTcyMWM3YzMyNGFmOGE5ZjYgcmVsZWFzZTI1LW1haW50Cis1MjUzMiBkYTc5YzRlOWE1YmJmYjU3NGEyY2YwMmRjNzEwMWRiYTM4OTAzMzExIGxlZ2FjeS10cnVuaworNTI1MzMgOTM2NjdhNzg1YjgzNDY2MGYzZTVlZTJkNTBiZTNiMTI1YjViZjg3NiByZWxlYXNlMjUtbWFpbnQKKzUyNTM0IGM2Nzc0ZWIzYTA2NzM2NWZjOTg5NjQyNDdjYzk4YjhjMmY5OTI2OTYgbGVnYWN5LXRydW5rCis1MjUzNSA5YWI3YTc3MzZjYTA1ZDM1MmJhOTk4ZDI1ZWIzNDliYzBmYWU1YjdmIGxlZ2FjeS10cnVuaworNTI1MzYgYmY3OGJlNjNmMjBkNTZiZTRlODAzYjcyYzg0MTAwNGZjMzJhZDdlNSByZWxlYXNlMjUtbWFpbnQKKzUyNTM3IGQ5YThkNGYxZDY1MTRjN2ZlOTQ3Mzc2NTMxYjA3NmFjNDIyYmFkZWUgbGVnYWN5LXRydW5rCis1MjUzOCBmNTZiMjUxNjgxNDJjOTQ1NGRkMDg5ZTk3NzU5YzhkMDgxNzdhNDM0IGxlZ2FjeS10cnVuaworNTI1MzkgN2NlODcyYmYwMGEzZjlkYTE0YzA1ZDU0NmExNTU3ODJmYzgxMjRjYiBsZWdhY3ktdHJ1bmsKKzUyNTQwIDQxNGVjMjYyZDYwOGU0ZGFhMWNkMzhkNTQwY2RmMTAxMTcxYTlmMWMgbGVnYWN5LXRydW5rCis1MjU0MSA4ZDZkMzE1YjJhZjNiOTVmYWE2NWQwMjY1NzNlM2Q2YzNjYWJhNWJiIGxlZ2FjeS10cnVuaworNTI1NDIgY2EzZDFkM2M0ZDhjMmNmMzJmNGE3Nzc4MTEzMzc0MmI4NmYzY2RlZCBsZWdhY3ktdHJ1bmsKKzUyNTQzIGMzNzA3ZGE4MGFlZjM5ZTk0N2I4ZmRiMWZkOWIyZjAzMzA1YTYzMWEgbGVnYWN5LXRydW5rCis1MjU0NCAxMDA3MzI4ZjlkYjUxNGVlY2QxYjkxZWY2YjhhYWZhZTNjNDFjZGRmIGxlZ2FjeS10cnVuaworNTI1NDUgNzU1MDY4MTBjYmJmNGNjMDVhY2VjNzhmYmZlNjFiMWI5YjU4NWVkOCBsZWdhY3ktdHJ1bmsKKzUyNTQ2IGZmY2M2OTZlMWRhM2MyNDI4YzZkZTE2MDAxNDNmZWRjODQzNDA2MTkgbGVnYWN5LXRydW5rCis1MjU0NyAwZDBhZTg0ZGQxYjdhZWFlYjgxMGY2MGRjZjkzMTRmMTE5MGYwYzAyIGxlZ2FjeS10cnVuaworNTI1NDggMTcxNWU2YTBhZWU5YWQwZmQ3OWZmMDEzNDNiZjgxNjg5MTg0ZDkzNiBsZWdhY3ktdHJ1bmsKKzUyNTQ5IGM1YTJmNDMxYzY5OGVmMzBmNDhmYzFmZTY0OWNlN2I0YmY2Yjk1OTggbGVnYWN5LXRydW5rCis1MjU1MCBhOGE2ZTJiODRiYmFmNjhkNDdiOTA1NmJiOTRiOWFkNzUxZWVlYjIyIGxlZ2FjeS10cnVuaworNTI1NTEgYjg4NTBhZWMwNDY2ZmZlZDM4MmM1ZmViZmY2MWJhZDQyMzNjYzE3MiByZWxlYXNlMjUtbWFpbnQKKzUyNTUyIGJjOGZmYzNlM2NkYjRlOWNmNTliYmQ2ZGZjYTUzMDEzMTIyMzllODYgbGVnYWN5LXRydW5rCis1MjU1NSBiODIwNDA2ODUyYTBhOWNkMGJlNGQ5MmIzZGJmNjNlNGU0MzRjODYyIGxlZ2FjeS10cnVuaworNTI1NTYgMzM4NDBjNDA3MmI3NDc0MjFmZDc0OTA3OGYzZWY3OTA5NWViNzMzYyBsZWdhY3ktdHJ1bmsKKzUyNTcyIDFhYmNmZWZlYTNlZWE2OTczMTgyZjMxZDM2YThiOTVmYzdiZTQ4ZjUgcmVsZWFzZTIzLW1haW50Cis1MjU3MyAzYjZmYjU0MzljMTA2MWE5NDE0MDEyNDUwNzZjMzE1YmVhZmNjNzg3IHJlbGVhc2UyMy1tYWludAorNTI1NzQgYjY3NTUzYzE0ZmJjYWUxZTIwNGI3NTZkYzRjYzkyZTFkNGFkYzdjNCByZWxlYXNlMjMtbWFpbnQKKzUyNTg4IGEzYmU0MGMwNzI1MDMwMzdiNmVmZmY1YTMxZWU4ZjEwYjM2ZGU0MjQgbGVnYWN5LXRydW5rCis1MjU4OSA4NzFiMDVkMjUyYmUwYWExMWRhZmUxODc1NGFkMThiY2IyNmIwZDY3IHJlbGVhc2UyNS1tYWludAorNTI1OTIgYWU0MTFmZTFlZWMwMWIyYTI1MjcxMmIyNDEwOTFkMzE4Yjc0OWJhOSBsZWdhY3ktdHJ1bmsKKzUyNTkzIDNlNGUwYmU0MGY1MjA5Mzg1NzZlNzY3NmZmMDQ1NzgzMGI2NmIzNTIgcmVsZWFzZTI1LW1haW50Cis1MjU5OCBmZjY3ODY2OWFhNmUxMzFlY2QyYWU4N2YwMjMxMTQ4ZWQwZTVhNDc1IGxlZ2FjeS10cnVuaworNTI2MTkgNTMwZDdlYjBjNmM0OGYxZDUwYWQ1NDQwZTVkYTBlMzVlODA4NDBhYyBsZWdhY3ktdHJ1bmsKKzUyNjIwIDZkZjRhOTE0M2RkZjg4MDRlZTk1OGUzNjdkNTM1N2Q0MTdiOTdkMjcgcmVsZWFzZTI1LW1haW50Cis1MjYyMSBlYmFmMzQ3ZDQyZmIxNGQ3M2I4OWJiOWQyYWEwNzE5MWZjNzJkYzI2IGxlZ2FjeS10cnVuaworNTI2MjIgMDAzZDgzZGE5OTMyNjI1MDJiMTg4N2MwYjczZWIzNjhmODRlZGE1ZCByZWxlYXNlMjUtbWFpbnQKKzUyNjMwIDFmMDU1ZmNiNmNhNjYwYmQ3YTNkMGQ5ODdiYzEwNTgxMTVjN2RhNWUgbGVnYWN5LXRydW5rCis1MjYzMSBkNzg1YzI5ZjUzNDAzNWJlMzAyYjBiZDI1NjIzNWY0OTA5NmUzMDZiIGxlZ2FjeS10cnVuaworNTI2MzIgMWEwZjQ2ODgzZWE1ZjBmMTIxMjEzZjMyM2M1NThmNmIzN2I1OWI2NSByZWxlYXNlMjUtbWFpbnQKKzUyNjQ0IGNiZTEzM2Q3MmUzOTcyZDcxZDIzZmYwYTVlN2I0ODU3YTBjNTVmM2MgbGVnYWN5LXRydW5rCis1MjY0NSA1NTMxZjQ2MjMyYjdhZjRiYTQ1NWQ4YTdhZjY0MDJmNWU5ZTY0MDYwIHJlbGVhc2UyNS1tYWludAorNTI2NDYgMjQ0OThkNDMxMjZjYjg5ZDcyZWY3ZDMyNjcyNTVjOTVkZDc3NmRiZSByZWxlYXNlMjQtbWFpbnQKKzUyNjQ3IGVkMmFjODA4NGUwNDg1MGQ1YzAxN2JlMjZlNzIxOGY2YTZjZWY2OTkgbGVnYWN5LXRydW5rCis1MjY1MSAxZGU1ZTczOWY5ZmY1OTNkZTkwYTIzZTY1MTM5M2U4ODFkZDk0MWU1IGxlZ2FjeS10cnVuaworNTI2NTMgM2NjMmVhZjBlNTgxNDk5ZGJmZmIwMzk0N2I5YmJlMDZlZTc3YmJkZSBsZWdhY3ktdHJ1bmsKKzUyNjU0IGY4ODYyOTk4MjcwZmJmYmEwODA2ZTg4MTk2ZTg0MzNkN2NlOTNkZmYgcmVsZWFzZTI1LW1haW50Cis1MjY1NyA5NjMzZjUzOGM5OGRhNmVmNWRjMzQ4ZjMzZjBjYzA2ZTE4MzY2NmZhIGxlZ2FjeS10cnVuaworNTI2NTggOGQ2OGIyMjRhOGYwNThlMzEzNjRlYmQxMmVmOWZkNTdhOWUyOTE2OSByZWxlYXNlMjUtbWFpbnQKKzUyNjYyIDYxY2Q4Yzg3Y2ZlMmMzN2U0ZDM1NzdjYWVmNTdjMWIwZjI5MjRlYzggbGVnYWN5LXRydW5rCis1MjY2MyA3OGM3NWIzZDNkMGJiMTQyMDE2ZjRhNDY0OTY4NWNjYTc4YTljYTdmIHJlbGVhc2UyNS1tYWludAorNTI2NjQgZmE5MDI5YTQxY2U4YWIwOWM4Mzk4OGNkZGY5MGZhOGRkMjFmNmFiMiBsZWdhY3ktdHJ1bmsKKzUyNjY1IGJkMTYyM2QwNGJmYzQ0ZTE3OTE4MjBmMWVkNTUyNGYwZDRiMTg2ZDQgbGVnYWN5LXRydW5rCis1MjY2NiA0ZjhlYmFjZWM1ZjA1MzYyOGM4ZjI0ZDE4MjcyMjc3NzNjMDhmOWUxIGxlZ2FjeS10cnVuaworNTI2NjcgMDJjMzY2YjJhYWMyY2FjNjVmMzA3ZmRlZjhjZWE2OGFmMzUzMWYxMyByZWxlYXNlMjUtbWFpbnQKKzUyNjY4IDBkZWEzN2JjYmVmZjRjMDBkMjFjN2NjMDAzM2Q1NzMyMzAwNzk5MzMgbGVnYWN5LXRydW5rCis1MjY2OSA3Yjg1MTIwNmQyNGNlMzRjMzQ5OWVkZTNjMmYzNWVlMjgzMWUxMzhjIHJlbGVhc2UyNS1tYWludAorNTI2NzEgNzBjNzU2YWE5MjczYzIwODYzNzFjOTU2Zjc4NGE3MDk3MzBlYTFjNiBsZWdhY3ktdHJ1bmsKKzUyNjcyIDM1N2M5OTUzN2U4NTJkZDMzOWEyZGIwNjE5ZjE5ZDE1NTg0ZjlkZWUgbGVnYWN5LXRydW5rCis1MjY3MyA1NzY3NDIxMmMzN2NmMmM5NTYwZTZmMjRlZDViNTgxOGJhNjgzMDMyIGxlZ2FjeS10cnVuaworNTI2NzQgMjRhNWRjNzc3OTMxNjY0NmUwZDIwYmYzMTI2NTZhN2I5MmIxOTVhNCBsZWdhY3ktdHJ1bmsKKzUyNjg2IDUyNmM5NTg0ZjI1Mjc4NjcyNjc2ZDA3ODc1NzU3NjZmNjJlNWUyY2YgbGVnYWN5LXRydW5rCis1MjY4NyAwMjViMjRhMjYxMzE0ZDEwZWExZGVlYmU2NTZiYTBiN2FiM2MzM2EwIHJlbGVhc2UyNS1tYWludAorNTI2ODggMDdiMjliY2ZjMDEzNTIzNjkxMWQzMTU3MDRiYjViZTIxODczMDUyOCBsZWdhY3ktdHJ1bmsKKzUyNjkwIDZkOTk3NjJjZDgxODgxZDdkY2I0M2VlODdlZWJlMjI5ZjA3NmU3MzYgbGVnYWN5LXRydW5rCis1MjY5MSA2YzA2NzcyNzNjNWFiYjNiNThiZWM2ZDUwMTk5MjM4YzhlNThhOWE0IHJlbGVhc2UyNS1tYWludAorNTI2OTIgYWQ3OTZmZTQ3MmNhZWZlNDcxOGZkZWU1YTFmY2NjZTgyMDYxODcxNSBsZWdhY3ktdHJ1bmsKKzUyNjk1IDcwNTlkZjdjMTVkZjgyMzE2YzE4OWQ5YTM1Njc5Njk0MGU2MGI3ZWYgbGVnYWN5LXRydW5rCis1MjY5NiBjMzBjNTg0Y2M2YWE0OTZiMWE5OTVlMTE4NmRjMmU4YmM1ZGU0NGU3IHJlbGVhc2UyNS1tYWludAorNTI3MTIgNTYxZmZhNzU3ZGZiNWE0YzIyNjFhYjY1M2VhMDAwNmRkY2IzYTQzOSBsZWdhY3ktdHJ1bmsKKzUyNzE2IDU0ZjYyMmRkM2IyNjY2NGE1MmE5ZTEyNjEyMmJiZGFiNDVjOTE3NmMgbGVnYWN5LXRydW5rCis1MjcxOCA3MzI0MjVlM2I5Mjc0YjczZjVmNzdlMWZlNjVlMDQzZGNjMzAzNzZkIHJlbGVhc2UyNS1tYWludAorNTI3MTkgZDc1Y2JlMmI5NjAxOWM5MjA5MWJiYzM3ODUxYmY3Y2U4MzdlMTZmYyBsZWdhY3ktdHJ1bmsKKzUyNzIwIDBlNWYyZDA1NDhlYjZjOTY2YTcyMTY4ZWYwODllMTJlMzhlNDQ4OTcgcmVsZWFzZTI1LW1haW50Cis1MjcyNSA2ZjI5NzA5MjJjNDRjZDg0ZmNjNjBjODc0ZTNiODhkNjY2MjQ0ZTY3IGxlZ2FjeS10cnVuaworNTI3MjYgNjE2YTIwOGY0YjgwNTE0MDFjOGFjNGNiNzA2Y2IxNzIzMmZiMWI3MyByZWxlYXNlMjUtbWFpbnQKKzUyNzI3IDEwYTk3NzRiYjNlMzQ3ZTBlZTdkMGRkYTY5M2RlY2NjOTdiNjhiNzkgcmVsZWFzZTI1LW1haW50Cis1MjczMSA0NDYwZWMyNGRhYzkwZjljOWFiNjlkMGQyZDBjZjJlMGU3MDVjMDljIGxlZ2FjeS10cnVuaworNTI3MzIgMzVjZjEzM2FjN2Y4ZjAxM2FhODFhNzlhYTcyM2VhODdlZDQ0OTZmOCByZWxlYXNlMjUtbWFpbnQKKzUyNzMzIDJjZjE4ZjEyNzY2M2M3ODE2MDJlNDk0OGZiNTNiMDY0NDVkNTQyNGQgbGVnYWN5LXRydW5rCis1MjczNCA2MzM4MTJlOGNhMWI2YTlhNWFkMmY1ZWMwNDZiNDE5MTA5MzQzZjhmIHJlbGVhc2UyNS1tYWludAorNTI3MzYgOTBkMzU1ODI5YmJiNzg2ODg1ODkzZTFjMGVhMDY1Y2MzOThiZjcwZSBsZWdhY3ktdHJ1bmsKKzUyNzM3IDlmN2ZjNjhhMjBhZWRkY2VlNmI5Y2U5NWVlMDY3NmU2ZDQ0Y2NiNzggbGVnYWN5LXRydW5rCis1MjczOCBiZjRkMjA0NzZhODYxNGU5YTFiZGIzOGUzNWExZWNjMmE1OTlkNDY4IGxlZ2FjeS10cnVuaworNTI3MzkgZWNiZTkxYjVlNDZhNTM1YTg1MzUxOTgxZGQxY2Q3ZTQwYmRiYTk0ZSBsZWdhY3ktdHJ1bmsKKzUyNzQwIDU5MWRhYTUzNjJiMmQ0OGEyNzIxMzVkZGVlYTE1MWY1NTkzZmE5NDkgcmVsZWFzZTI1LW1haW50Cis1Mjc0MSBkNDllMGRlNDAxOWQxZjU1ZTAxY2MyMDdjOGUxOGVmNjliOTA4NTkwIGxlZ2FjeS10cnVuaworNTI3NDIgZWZmMTFlNDM1ZjQxMDNhNmU3NTE3MTNmY2U2NGJmM2I2NjU2MzdhNiByZWxlYXNlMjUtbWFpbnQKKzUyNzUzIDdlMGNmNmUzNjUwYzhlOTNjNDE1Y2UzYWZhODg2YmUzNGJlZDQyY2MgbGVnYWN5LXRydW5rCis1Mjc1NCBmOTFiNmQ4NWNhYjU2MjJjYTRlYjEwMmRlMGVhYjZlNmY4NmVmNDExIGxlZ2FjeS10cnVuaworNTI3NTUgYTFjMGI1MTRjYjUzOWEwNzgzNjk1Mzg5NjY5ZmM4ZDI1YTM1NjhlNiByZWxlYXNlMjUtbWFpbnQKKzUyNzYyIGI4MGEzNjg4NTNjNzVhNzYwYTY2MTlmOGY0ZTA3YmM1ZjY0MTFjZjUgbGVnYWN5LXRydW5rCis1Mjc2MyA4YTM2NWZkY2RjNDhkY2VlNTk2ODlkYjIwZGU1Y2IxNTk5NzE2MTI5IHJlbGVhc2UyNS1tYWludAorNTI3NjQgYmE1NjNhYjdhNTdhZTJkODdmNmVkYWQ5N2YwN2RhZDFlYTUzYmI1YiBsZWdhY3ktdHJ1bmsKKzUyNzY1IDI1MTVlYzRiNWIzMzY1NjUxYzU4YmY2MTg4OTE2MTVhNzhjZTk1NGEgbGVnYWN5LXRydW5rCis1Mjc2NiBlMjZjNTE3ODA3Mzc1MWNiYzRjMWIyNmQwZTdjZDQxZTM1OGZmYjE3IHJlbGVhc2UyNS1tYWludAorNTI3NzYgN2NlZTk0MzQ5ODFhMmFhOGZiZTdkNTI0YjBlNDRmZTYzYTU3YjU2ZCBsZWdhY3ktdHJ1bmsKKzUyNzc4IDRjNjJjODI5MGQ0ZjU4MmY0YTRkMzIxYzAzZDU1ZGY1YjU0ZTViOGYgcmVsZWFzZTI1LW1haW50Cis1Mjc4MCA4OWYyZThkYTBmMGY5ZWRkNjFjOGY1Mzc5YjM0YzcyM2E4ZmM3NmU2IGxlZ2FjeS10cnVuaworNTI3ODEgYzFhYzhiZGU1ZTE3NmQzNGE4ZTJiZGY5YTNiZTk5ZmFiYWFjMDdkNiByZWxlYXNlMjUtbWFpbnQKKzUyNzgyIDVjMDhkY2I3ZDI4MDlmNDRjZDQzYjRiY2UzMGIxMTM1YjIyZTZjN2EgbGVnYWN5LXRydW5rCis1Mjc4MyA3OGMwZTcyZjE2ZDNkMDc3ZjkyMmU4MDEzM2E0ODhjMGUyNDMxZGNiIHJlbGVhc2UyNS1tYWludAorNTI3ODQgMzIwZGZkZWU4OTY4OTdjNWM3MmM0N2MzOGQwYjE2MDQ0ZTFmMmFkYSBsZWdhY3ktdHJ1bmsKKzUyNzg1IGEwNDA2ZTkzM2E4MTczN2RiNWFkNmY4Zjg2MmZjNDRlMDgyMjgxNjcgcmVsZWFzZTI1LW1haW50Cis1Mjc4NiA1ZmE1ZWY1NTlhMmYxM2I4ZjNhMzY2ZmY0ODgyMmZjYjExMzEyYTUzIGxlZ2FjeS10cnVuaworNTI3ODcgYjg3MWU3YmQ4MzU1YjI5MjJkYzliNzIzODAwZTg2MzFlYzFhNTQxYyBsZWdhY3ktdHJ1bmsKKzUyNzg4IDBmZGMyYjgyMTFmOTJlNTY2MTllNmViZTE3ZTM4OWVmNWE4MTkzNDUgbGVnYWN5LXRydW5rCis1Mjc4OSBiZTJmNWIyZDUzYjNiZDI2MWM2OTE3MzJkMjhkMDdlOWFiYTBjODBkIGxlZ2FjeS10cnVuaworNTI3OTAgNDAxNjZlNTAxMWY4MTkwYThiOTAwNzE4YWVmZGI1MThjOTQ2ZWVhMCBsZWdhY3ktdHJ1bmsKKzUyNzkxIDlmZDEzNTRkYTZkYjZiMmJlODZiNDdhMTk1OWE1Mjg4NmM1YmM1YjkgcmVsZWFzZTIyLW1haW50Cis1Mjc5MiAyNzExMzM5ODFlNjNlMWJjNzhmODllNzcwMTNkMTAwYTdjNzk5MTJjIGxlZ2FjeS10cnVuaworNTI3OTQgNjRlMGFjODM5NmEzZDZlZTIzZTBmMzU0ZTA0NTI4ODU5MDJlYzI3ZCBsZWdhY3ktdHJ1bmsKKzUyNzk1IDYwNmUxZjBlODdiZGFkNmNkMjQzNTk1ZTFiY2IxNDA4NDM2ZmEzODAgbGVnYWN5LXRydW5rCis1Mjc5NiA0MmVhZWQ4ZDJiNDU0MmFmZmNlZjAxMDM1YjdhMDM5NTI5OTgxNjcyIHJlbGVhc2UyNS1tYWludAorNTI3OTcgZjNhNjMxODU3NTQ0NzVjZDU1YjA4NTY5YjE4YWQ1NmUzZmZmZTIxZCByZWxlYXNlMjQtbWFpbnQKKzUyNzk4IGQ3YWMzYjhmMjEzOTIxOWVmOGQyNjY3NzdkYWI1ZjE4YmQ0NjVjMzMgcmVsZWFzZTIzLW1haW50Cis1Mjc5OSA4ZmRhNWM4NmNjMTZjZWE4OTMxMTRjNWNmMDU3YWY4NTZhYjE4OTdkIHJlbGVhc2UyMi1tYWludAorNTI4MDAgY2YwZTY4NTYyNjA0ZDlhMmEzNjYzYmQzMGYyZDNjYTI3MzM3ZTk3OCBsZWdhY3ktdHJ1bmsKKzUyODAxIGNlNGNjZjg3ZjU2ZTQ2Mzk0ZWJmMGYzMzI5Y2U2NWUxNDcyMzcxNTQgcmVsZWFzZTI1LW1haW50Cis1MjgwMiBjN2E4Y2IwOTVjNDg1MWY4MTkwZGRjMTc0N2IwNWRjMWY5N2NlZDkyIHJlbGVhc2UyNC1tYWludAorNTI4MDMgOTVhZTc0MWUyODdiYWY3YjcwOTFiYTVlNjFjMmJmMDBiMmE2NTllNyByZWxlYXNlMjMtbWFpbnQKKzUyODExIDk5Y2IzODM1MWZmYzQwYmJjMzAxZjdjM2NmMTNjNTVkYmViZDMyNmIgbGVnYWN5LXRydW5rCis1MjgxMiBhYjE4ODVmMzQ0M2E3ZGFiM2E4ZTQ5NGRmYjRmODE3YWJiZTlkNmE3IHJlbGVhc2UyNS1tYWludAorNTI4MTMgYTI3ZWRlMmNhNjA2OGE1MTY4YjU2MmRjNGY5YjY1YzA3ZjFjYjJlMiByZWxlYXNlMjUtbWFpbnQKKzUyODE0IDYxYjA2OWI4NGQwYWZjYzUxMGQyNTc2MmNlNjMyZGM0MzE4ODMxN2MgbGVnYWN5LXRydW5rCis1MjgxNSBiMGMwOGVmMWMzMDMwOTA3YTY2ZDg3YjdjZGJlMmUzYzAyMzBjYmNmIGxlZ2FjeS10cnVuaworNTI4MTYgNmUxYjkwMDdiYmRjNjA0OGI4MjRlNmRjOWIyMTc3ZWZlYjU4NGExZSByZWxlYXNlMjUtbWFpbnQKKzUyODE3IGQxODNkODEyNDgwM2QwMjcyZTVjZGRlNDNlYThhZmE5ZDBmMGE4OTAgbGVnYWN5LXRydW5rCis1MjgxOCBhMDM3ZmE4Zjg0NThlMzFmMzFmMmE3MTc5MGUzN2I4NzdjOGVkYWQxIHJlbGVhc2UyNS1tYWludAorNTI4MTkgMjU5ZDI2OTAwODYxN2NiYzE3ZDkxMGYwMDRmMDQ5MWFiNzNmMDBhOSBwM3lrCis1MjgyMCBkNzViMGNhYTY3ZGI5ZGU2MTIxMDk3OGJkYmFmMWU2YWE0ZWJlNGMxIHAzeWsKKzUyODIxIDkzZGJmYzY1NGI2YTIyMmZiZDUyYWI4ZmY0M2JlYjc5MTFmYmY2MDMgbGVnYWN5LXRydW5rCis1MjgyMyA3ZjMzZjI0YTdjNDE2N2M4Mjc5ZDY4ZWRjYTQyZWE5YjZlM2QzOTQwIHAzeWsKKzUyODI0IDI1Y2M2MTYxNDcyMDYzYmFjYzZhM2ZlZGQ1OWVhZTAyZTZiMzZkMDEgcmVsZWFzZTIzLW1haW50Cis1MjgyNiBhM2UwZjFlMTEwODI4ODhlOTNkMGM4Mjg1ZWFmZjI1OTY4ZDg1ZGVlIGxlZ2FjeS10cnVuaworNTI4MjcgYjZiMDI1OTMxNDUxMzMzNzdkZTI4MzFlYWQ5YTBiMGU4Y2Y5OGI4MCByZWxlYXNlMjUtbWFpbnQKKzUyODMzIDI5MWU2MzM2ODY3YjY3NGYwZjg0ZmQ0Y2MwZjQ2MzYyMWRjYzY3MTUgbGVnYWN5LXRydW5rCis1MjgzNCBjZDNkNmI5OGNhZWFkMjY2YjkwMDJjOGNkNzcxOTVjNmQ4ZWJmZGUwIHJlbGVhc2UyNS1tYWludAorNTI4MzUgMDA0NjJjYTQ4ODQ1NDgwZTljYTg0MjNhNGJmNzViNzA0N2IyMmZjNCBsZWdhY3ktdHJ1bmsKKzUyODM5IGU3MDcwZDY3ZGI4YzdjOWZlMzNmMGM3OGI5ZmQ1NjQyMDRmMzVmMDUgbGVnYWN5LXRydW5rCis1Mjg0MCAxOTMxNDZlNGQyNzZjMDQ0ZWY3YWEyMWIzZjVlYzRkM2I3OGVlYzQ4IGxlZ2FjeS10cnVuaworNTI4NDEgOTZiZTlkNzRhZDM2NzUwNDBkNjAyMWMzZTc5NjkxZDVlNWUyNjQ0NiBsZWdhY3ktdHJ1bmsKKzUyODQyIDU4NmRkOGVlZGI3NWZlZjg3OWE2Y2ZiNGZiNTAwMjZkOTE0NDdjM2UgcmVsZWFzZTI1LW1haW50Cis1Mjg0MyAyNTA4MzVkYzU0NGFhNjAwM2QyMDM2NjA3NmEyNTJlM2Q2NTMyZWMzIGxlZ2FjeS10cnVuaworNTI4NDQgMjBiZTQzMWU3NTQwMWFmZDliNzZmZjQwYTFmOGNhY2Q1YmZhNzM4NCByZWxlYXNlMjUtbWFpbnQKKzUyODQ1IDQ1NGVmZjI3MDZkM2I4YmIyNzFkY2NlMTQ3ZjVlNzlhODE0OWYwMmEgbGVnYWN5LXRydW5rCis1Mjg0NiBhNTVkNDY1ZDQwY2ZkMjRkZTVkNTJjMTA5Y2MyNjdmMWE2ZmU4NjVkIHJlbGVhc2UyNS1tYWludAorNTI4NTAgZWYxNTQ3MDE2NzAzM2M3NGFlNTA1ZDdkNDJhMGRmYjZkM2RkOWVhYiBsZWdhY3ktdHJ1bmsKKzUyODUxIGExMDE1MzAyZDdlNGQ0MmEwYWYxNjk1YzA4NmQyZWZhODI3ZDA4ZWYgcmVsZWFzZTI1LW1haW50Cis1Mjg1MyA4ODEzMzQxN2RmZDA1YjRlMTU2YTZiY2U3MTRkMmFmMDE5YzVjYWI4IHAzeWsKKzUyODU1IDc4ZmI3OTkwYzVhYTU5NWJmYmM0ZjE3Y2E4MWQ4ZmRjMjhhNjM0YjkgbGVnYWN5LXRydW5rCis1Mjg1NiBhMWZkOTNiNTg5MTIxMDg3OGFjM2I0YWM3ZTRmOTA2NjQzM2U0OTNmIHJlbGVhc2UyNS1tYWludAorNTI4NTcgMDJkNTEzZTg3MWZlOTU3MmQyMmYxNjIwMjY0OTg5NmU2OGUzMTg5MSBwM3lrCis1Mjg2MiA0ZTM2OGU4MmM3MGQ2YTFlMzEyMDg0MmZiZTI0MWFiMzI5NjVjMmZjIGxlZ2FjeS10cnVuaworNTI4NjMgMzlhZDk5ZGQ2N2U0ZGU1Y2ZhOWIzMTU4Mjk0MzJkMTEyNTE0NTQ2YiByZWxlYXNlMjQtbWFpbnQKKzUyODYzIDk4YTFlY2EzYTkzMDgzY2NmMDFmNDVkMDlhMjYwOTZiZGU0MTA2ZjkgcmVsZWFzZTI1LW1haW50Cis1Mjg3MiBmZWY1Yjc3NDgxOGJkYzRlNjI2MmEyMzAwNGVhMmZkZDNiOTA0NTViIGxlZ2FjeS10cnVuaworNTI4NzUgMWUzZjUwMjBiYjU1NThmMDI3Nzc5YTNlMjFhODZiZDM1MjcxZjE0ZCBwM3lrCis1Mjg3NyAyZTUwMTFhY2I0MTRkNGIyNjc4OGMwMzU3YTA1YjFhYTU0YjcwZjcyIHAzeWsKKzUyODc4IGIzZWQwNTNjYzZhMWYyYjFmMmFjYzAxY2FlOTUzNGVmNzkxOWJkNDIgcDN5aworNTI4OTAgZDgwMGQ2NzM3NTU2NDE0NDRhMmZhNmNjNzhiZDg2MjUzMzkyOWExZiBsZWdhY3ktdHJ1bmsKKzUyODk5IDBlMmEwNzNjYmJiZmE3Y2Y3ZGZhYWY1ZDRmZDE2NzNjYWVhNGI0NzYgcmVsZWFzZTI1LW1haW50Cis1MjkwMCBjN2U3ZTcxOTZhNGNjZjM1NWZhZTkxMmYxZDllOTI0MjY2NjQyZDJlIGxlZ2FjeS10cnVuaworNTI5MDUgM2FiMTJkMWExN2QyZWUzNDhmZDhhYmYwZWRmNTUwNmE3N2ZjYjAxZiBsZWdhY3ktdHJ1bmsKKzUyOTA2IGM0Mzc4N2U2ZDcwNjFkNTdmZDcwODE2NGQwZWYwMmZjMDBkOWE1NjIgbGVnYWN5LXRydW5rCis1MjkwNyAyNmI3MTNhMTk1MzRmMjhlN2RlMmFhYjlhZWRjNjlmZTE3YzVjZmIzIHJlbGVhc2UyNS1tYWludAorNTI5MDggM2VlOWQxYTM2ZDQ2NDMwOWNmNGNiYzE1MjhkNjUxNzBmOWE3NThlMCBsZWdhY3ktdHJ1bmsKKzUyOTA5IGEwMTQ2OTJjZmE2NjhkZWQxYzBiY2JhNDJiZTkzM2M3YWQxMTlhNTkgcmVsZWFzZTI1LW1haW50Cis1MjkxMCA3M2YwZmMyZjhmMjdkYzA5N2FmMWEyMjRhMTgwNGY1ZTIyNjMwYTQwIGxlZ2FjeS10cnVuaworNTI5MTUgYzFhNmQ5NGI4MDI3NzY4ZjIzNjNhMDFkODZhMWRhNDNkM2YzYzY5NiBsZWdhY3ktdHJ1bmsKKzUyOTE3IDBjYWMzZTUzMWM1YTE1YjFhMjkzOTQwZTJkZjkxOTQ1MGQ3Mjg5NzcgbGVnYWN5LXRydW5rCis1MjkxOCBmMWE2YWIzNTc0ZWZkYmRkNjkxZTZmMTNjY2Q0OWU1MGMwMDlhMDYzIHJlbGVhc2UyNS1tYWludAorNTI5MzggZWIzMGQzMGYyMmExODU3OWVmZDFmMDVhYTc1MTMyMmY3ZTM3YzY3NyBsZWdhY3ktdHJ1bmsKKzUyOTM5IDlmZjJiNzQ1OGM3MGQwYWJjNzk3MjQyM2MzNTU1ZGYzNzNlMDc0NTQgcmVsZWFzZTI1LW1haW50Cis1Mjk0NSA5ZmU1ODU1YjA1ZGRhOGY3ZGVmZDIwNjkzOTdjNGRjNWJmYmU0ZWFiIGxlZ2FjeS10cnVuaworNTI5NTEgZDU1NzY5NzEyZjczZGY1ODg1YzgyYTE3OGE2YzU2NTg4NWQyYjExMiBsZWdhY3ktdHJ1bmsKKzUyOTUyIGVlZjcyNWE0MGE2Njc4MTE1YjJlNTlhYjA1MGMzYTJhZWJlN2JiM2MgcmVsZWFzZTI1LW1haW50Cis1Mjk2MiBlNWNlNWEwNTM0MTE2OTZiZDA2NmE4MDYxYTIyODczYzNkMjg0MzVkIGxlZ2FjeS10cnVuaworNTI5NjMgNmU5MWZjODhiZjk5Y2Y4NTBlMWZlOGZhMWMyMDRhZmI0ZjIwODhlMSBsZWdhY3ktdHJ1bmsKKzUyOTY0IDZiMDJmZTFiMzgyZmRmYzk2ZTRhNGVhNzk1MDJhNGRjYjRhMTdiMGEgbGVnYWN5LXRydW5rCis1Mjk2NiBhMTViZDgxZWZkYjYzNjk5NmQzMTc0YWQ2NTIyYzRhNzI4M2YyNjdhIGxlZ2FjeS10cnVuaworNTI5NjcgZmEyODBkN2M3ZDVlZDJiNzExOGEyMjFhNWE3OTRmMTQ5ZmFjYmEzMCByZWxlYXNlMjUtbWFpbnQKKzUyOTY5IGFlOTJjOGQwZjA4ZDU5NGI1MDk0ZTY5ZTU4NjdmY2Y1NTYyNWViMzQgcmVsZWFzZTI1LW1haW50Cis1Mjk3MCBjZjg3YzhmMzNmOWY3MmY3ZjRmMjRlMjdkNGNiM2MwYmUxYWM0NzAzIGxlZ2FjeS10cnVuaworNTI5NzEgYjg3YzU2MzliYzNiODBhNDkwYzJiZDExOTA0YTFjOTM3ZTU3YjdmNCByZWxlYXNlMjUtbWFpbnQKKzUyOTcyIDlkNDcyNTU1YjkwZDdmYTQ1NTQ0YTdkOWU3NmUzNTVhYmI5MjlhMzggbGVnYWN5LXRydW5rCis1Mjk3MyA2OGVmMDdkOWM4MWUxYzE1NTFhMDM5MmRmODY3NzBlNTU4YTdjZDBlIHJlbGVhc2UyNS1tYWludAorNTI5NzQgZDliNGVmYzRlYmVmZmZjOGY4NTc2MjczOTZmOTkwYjU0NGFkMWI2MyByZWxlYXNlMjUtbWFpbnQKKzUyOTc1IGQ0ZWI2N2QxZDkzMThlNzg2ZWVkNGYyNDBlYzZlMmY1YjBmMDk3NzkgbGVnYWN5LXRydW5rCis1Mjk3OSA0NDdlZjBlNzQ2Mjk5NzExMzg5MzFjY2Q1ZWQ1ZTQwNjc0NDM2MWFhIHJlbGVhc2UyMi1tYWludAorNTI5OTQgMGM1MWIwMDVjMjE0NGE0NDk2Nzk3MDI0YTNjMTE4ZWY5YzM0YzUxMSBsZWdhY3ktdHJ1bmsKKzUyOTk2IDNkNWIzMDc3Mjg5MmFjYTZhZmE4NGE1ZTNlZTIzNTYyZWUyMGNkMDQgbGVnYWN5LXRydW5rCis1Mjk5NyAwNGZkZjlmZmIxODgyZTliY2ZhMDhlYmNmYzUwMGY0ODQxY2E2YzhjIHJlbGVhc2UyNS1tYWludAorNTI5OTggNjEzMDcyYjhmOGQwOWMzZDZhZWM3MjljOWJkZjgwMGNlYmM1ODYxZSBsZWdhY3ktdHJ1bmsKKzUyOTk5IGEzMTFhMTBiYTBiZmQ2ZjA2ZjY3ZTJkZTM0ZDViZmEyY2M1ZDE2M2YgcmVsZWFzZTI0LW1haW50Cis1MzAwMCAzMTVjNWE2MzNiMDViZjI1NGYzZmM2NmE0NjJmYjhlY2M5Mzc2OGQ4IGxlZ2FjeS10cnVuaworNTMwMDEgYjMzMzJlYzI5M2YyNmQ5YjBjYmIyYTkxMjE0NGQ0ODJkODc5OWUwMSByZWxlYXNlMjQtbWFpbnQKKzUzMDEyIDgxMDA4MTgxMjk5NmQ4ZmU3ZTI1ZGJkMzVkYWI5ODAzM2MyZTNjYTIgbGVnYWN5LXRydW5rCis1MzAxNyBjYzk5MmQ3NWQ1YjNjOTkyYTllZDA5MWUxMTg5MmExMTNjMTM0NWU5IHAzeWsKKzUzMDE4IDY0ODIyNjFiMTA5MjE2MGExZmY0OThlYzZkZWEwMmY0NzgxNTBkMzcgcDN5aworNTMwMTkgNTBjZTU2YjI0Y2JlMzEzNzMxYjk3ZGY4ZGVlZjQ2YWMwMTFjZjZkYiBwM3lrCis1MzAyMyAxY2I3YjNhZTQxNGQwNWMyMDE4YTJhNDZmZmE4ZmQwN2JhMWI1ZmMxIGxlZ2FjeS10cnVuaworNTMwMjUgNTZlODhiYmFkOWEwZThkYjExNWY3YzRmMTdlMWNkNWQ4OTM5OWU3ZSBsZWdhY3ktdHJ1bmsKKzUzMDI2IDQ4MDc4OWIzMjk0ZGM1YmJjZmI0MDVlY2FlZTJjODRhMWViNWFhZDYgbGVnYWN5LXRydW5rCis1MzAyOSBlNGYyYjkyYzc1N2M5NWQ2NGRhNGFjODMwNzVhNjg0NjYwMTI4NzM3IGxlZ2FjeS10cnVuaworNTMwMzAgY2VlZWQwMjg3MjE2ODIzMmZiMDBhNGE2ZWQxYWQ2MWJhZGJiMmQxMSByZWxlYXNlMjUtbWFpbnQKKzUzMDMxIGE5MTBhYmU3ODE1OTBhNTU0YjdmMTk4MzAzOWUwNzNhMTY1Y2JhNzEgbGVnYWN5LXRydW5rCis1MzAzMiA5ZTM5Njk4YWZiYTU2Y2E2OWY0MTQ2OTZiZWJhM2M2Mjg0ZGEzNTcyIGxlZ2FjeS10cnVuaworNTMwMzMgZWU1ZTQxZGVhOTQ5MmViNTk5NmQwZjQ5ZmUyODI2MmNkYWE0ODM4ZiByZWxlYXNlMjUtbWFpbnQKKzUzMDM4IDBkZGQwNTkzZDQwYmVlOTI0MGZiOGQzNTc5MDBjMDAwOWYzMjU3N2MgcDN5ay1ub3NsaWNlCis1MzAzOSBmYTk5MzQ2MjY0MTA0NDJjMWIyODEwMWE1NzViMDVjZjIwMjEyNTllIHAzeWstbm9zbGljZQorNTMwNDAgNDY3YjM4MTE4YjI5YTJiNmFlOGUzOTE5ZjBiNDAxZTI4OGU5NTFmMiBwM3lrLW5vc2xpY2UKKzUzMDQxIDgzMzg0YTY5MjVhNGM5MmNiMTgzZTU1OWE4MTUxZWQxODM5ZDM4MWMgcDN5ay1ub3NsaWNlCis1MzA0MiA1OTdmZTg5NWE5NTgzNjJmNmVmY2FhMDYxMmJiZGRlYjg1N2I3MGJiIGxlZ2FjeS10cnVuaworNTMwNDQgNGY3ZjcyYmMzNDBhN2U1ZDMwMTg5Mzg5NWQ0ZjQ3YTkwMGJiNjUxYyBwM3lrLW5vc2xpY2UKKzUzMDQ1IDc0NTczZmRlNGYwY2U3NzFhMGZlMTA2NjM4ZTA3NDgwNWYzNmZmZDQgcDN5ay1ub3NsaWNlCis1MzA0OCAwZDY0ZjI5ZWYyNzNkMmMyMzM0Yjc4ZjgxNmY5YjIwNjc4ZjYxOGM5IGxlZ2FjeS10cnVuaworNTMwNDkgN2Q3OWZkMTgxNmE4NDVkOTcwOGZjZGExMWM5MzdmNzk3MGFhYjBmNyByZWxlYXNlMjUtbWFpbnQKKzUzMDUwIDgxY2NmZWRjMWM5OWU3ZDhkMGYxMDViZmZmOWI0YzU2YWZlZmJlMmIgbGVnYWN5LXRydW5rCis1MzA1MSA4ZTNmMmIwMjJmNzI3NzFjNzBjNWIwNmQ2NDYwZDQ3MDlkMzQzZGE0IGxlZ2FjeS10cnVuaworNTMwNTIgMzhhYTFhMDEwMjE5ZWVhYzQ4NmUzNDUyZDlhYWNkZWUyMzY4ZjdiYSBsZWdhY3ktdHJ1bmsKKzUzMDUzIDU2ZGM3MmMxYTFmNDNkZWVhYzQyNjFlNGY0ZTM4NjFhMjU0ZjdhMWQgbGVnYWN5LXRydW5rCis1MzA1NCBjZGY2MzUxM2E4Y2RmZmMzNDM4MmIyZDVhODUxYjc2NDRkNDBhMmU3IHJlbGVhc2UyNS1tYWludAorNTMwNTYgYWRkMDNhOWQ3NzhiODI4MTlhMWIyOTlhMmZmZjgyOGNiNTM5YjY5OSByZWxlYXNlMjUtbWFpbnQKKzUzMDU3IGZlMmEzYzk2NmM4ZWFmMWE3Njg0MTU4YTkxNWY3NjM2ZjQ2YjY2NDYgbGVnYWN5LXRydW5rCis1MzA2MyBlYjNiMjM5YTRkMDc4MDYxNjZmMjg5MmQxMzdmNTU2ZTJiMjJmMDVjIGxlZ2FjeS10cnVuaworNTMwNjQgOTU0OGNhMGU2NTYwZWNkNDQ0ZWJkYTg0OThlZDM3YTk1ODM5YmUxNiBwM3lrCis1MzA2NSAyMTQ4MGQ4OWI0N2YxMmQwY2Y1MTlhY2VmYzFmMDcxYzUzOTRmNTY0IGxlZ2FjeS10cnVuaworNTMwNjYgYjI3ZDVkOThhNTU2NzZjNjU5NjQxNWZmYjQwZjY0ZDY2NzMzNGE0YSBsZWdhY3ktdHJ1bmsKKzUzMDY3IDE3ZTc0Y2UyYmMzNWU3OWI2NTRjMjE1MjFkNWJkOWRjODVjZDhkNmYgbGVnYWN5LXRydW5rCis1MzA2OCBkY2M0MGI5M2JmYmVjYmEzYjA0NWQ0NGI3MTM4Y2U3ZmQxMGFjYjEzIGxlZ2FjeS10cnVuaworNTMwNjkgMGIwNGNiNzUxYzFhMjIxMTNkYTM2Njk5MGUzZTY3ODFlY2NmN2ViMCByZWxlYXNlMjUtbWFpbnQKKzUzMDcwIDE2NDRiYTdkY2UxZjA1ZGUwNmRhNDlkMzA5Zjk2NTJhMTkxYTZjMjEgcmVsZWFzZTI1LW1haW50Cis1MzA3MSBmOTgzNDBlMzZjMzExNWVkNzYzZTE1ODdjNmQ0OGZkMGM3NDU4MTYwIGxlZ2FjeS10cnVuaworNTMwNzIgMzBmMDk3NzZlZDU1NjAwYTBjNDg2M2Q0NzM0YzIwODEyNTgxMmM4YiByZWxlYXNlMjUtbWFpbnQKKzUzMDczIGZlNjk4ZDA3OGNmOTdlNzc2N2FhMWIyY2EwNDkzMzZiMTEyMDliOTYgbGVnYWN5LXRydW5rCis1MzA3NCBhOGZhMjZhM2EyY2ExYzlkYWYzZGQ4OTJhMDRmNjY2ZTY5NjRmYzRkIGxlZ2FjeS10cnVuaworNTMwNzUgNmY4NjRhOTFjNjEyYzllZDcyOWYxMTA2Zjk0NWQ3NWYzMWU1MjBkYiByZWxlYXNlMjUtbWFpbnQKKzUzMDgwIDg1NjVlM2ZlYTliNjJhMmJjMzg3ZjcwZDZhYzk1MmE5NzAxMDY2OWIgcDN5aworNTMwODcgZDRmY2I1NjU2MzE2MmMyNzVjZjQ4OGY0OTE5ZGRiY2I5ZWI5ZWE3YSBwM3lrCis1MzA4OSBmMWE0Y2UxZmU1YjEwYjVkMjA4NjdmNDg2MTg4ZjM4MjQxZTQ1MzE0IHAzeWsKKzUzMDkwIDUxMzk1YzBiNTQ4MmY4YzQwZmZmMDcwMTVjYjZhYTc3MzA4ZTFhODEgbGVnYWN5LXRydW5rCis1MzA5OSA5NmQ1MzNlZmJlN2RkNGM3ZjA3YjU0YjViOTdjNWU2OThkNmQ0NmNjIGxlZ2FjeS10cnVuaworNTMxMDAgZmU5YjU2OTkwODk0NDhlY2Y5NzViY2M5YjAwYzRhZDEwZDQ0OWIyOCByZWxlYXNlMjUtbWFpbnQKKzUzMTAxIDAzN2YzY2VhMjY1NTAyYzk2ZjY1ZTkwM2VmM2ExN2RjYjk3Nzk0YWMgcmVsZWFzZTI0LW1haW50Cis1MzEwNiAxMjUwZmU0MmNlNWM3OTEyNDA3Nzk4YjM3YWRkZjFmOGUzYzUzYTNmIGxlZ2FjeS10cnVuaworNTMxMTAgOGZiMzM1MDBlMDY3MGI4NThkNWEyZjg1OTRiMDNlOWRjNzU1OGFjOCBsZWdhY3ktdHJ1bmsKKzUzMTEyIDc5MDlhNGVlNTY2YjA1ODM0MmIxNTA0ZmE1M2I3MjAzYmU1OTRmZTEgbGVnYWN5LXRydW5rCis1MzExMyAyZDVlZDI2N2E0MGZhMWFjZmQyOTk5ZGMxYTA0ODM5YWI5OWY4MmYwIGxlZ2FjeS10cnVuaworNTMxMTQgODNmNWU4MGNlMWYyOWMzMTFhMDc2MGIyNGNmNzYwZWVjNDViOWM5YiByZWxlYXNlMjUtbWFpbnQKKzUzMTE1IGE4NTk1ZGVhZDU0YWQ1ZDdmYTliZWM3M2M3YjM0NzI4ZjVjNDZiYjUgbGVnYWN5LXRydW5rCis1MzExNiAyMmE1N2Y0ZmZiY2QzZDRlZTk1MWE4MTYxNDVkNThiZDZjZmVmZjI4IHJlbGVhc2UyNS1tYWludAorNTMxMTcgMzVjNDhmNjliYWNlYzc5NTgyN2ZmNDgxNWE2YzBlM2RjMDAzMjk0YyBsZWdhY3ktdHJ1bmsKKzUzMTE4IGQyZmE3ZGFhYTU5YmYzMDg3MDg5ZDIwNjYzZGYwODg0M2ZhOTBmNTUgcmVsZWFzZTI1LW1haW50Cis1MzEyMCAzZDY2NjlhZGVjZTRhNjQzNzhhYmU2ZmVjMzNkNDQwYTFmMWVlZjdmIGxlZ2FjeS10cnVuaworNTMxMjUgZThlMjNlZDZiNjdmMTM0Y2FkMWJmYTQzYjNkZDdhNTM4YjQyMGY3MSBsZWdhY3ktdHJ1bmsKKzUzMTI2IGZiNWUzZmM0MjI3YmU4MjJiM2U3ZmFhZjg5OGJmZjkwYmUxZDZhMjIgcmVsZWFzZTI1LW1haW50Cis1MzEyOSA5NGViZjRhMmY3MzhmMDExZTU5Y2MxZjY2MjRiOWMzMmNkYTUzYjEyIGxlZ2FjeS10cnVuaworNTMxMzEgZjk0ZTJiMTk1MTg5ZWRjOTU2NzNmODU0MWVhMGQ4NDI1N2ZjNjRkYiBsZWdhY3ktdHJ1bmsKKzUzMTMyIDM3ZTcxZmVhZWEzZDJmYzIwNGI5MmI3YTE2YmE1YWE2YTU0ODg0NjggcmVsZWFzZTI1LW1haW50Cis1MzEzNyA4ODE2MjVjMTNjMjA2Y2I3MjUxZGFlOTJjYjM0ZTk0ZDMyOWI0YTUwIGxlZ2FjeS10cnVuaworNTMxMzkgNjYzYzlmMWNlM2FhYmY4ZDg0YzM1NzViNjUzZTMwYTUzNTVhYTBmMCBsZWdhY3ktdHJ1bmsKKzUzMTQwIDJjNTA0YzYyZDRkOGRkNTQxODA3NTkxMTViNWI3NTU0NzRlZGU1ZmQgcmVsZWFzZTI1LW1haW50Cis1MzE0MSAyZjg0YjZlODE5MDJhODQxNzQwNDg2MjkxNmUxN2YwMzUwODk4ZWUxIGxlZ2FjeS10cnVuaworNTMxNDIgZjkyNmJiYzJmZDYyOTI3N2U2YTNhM2Q3ZmMyMDkwNjJlYTNlOWViYyBsZWdhY3ktdHJ1bmsKKzUzMTQ1IDVjNjc0ODRjNGNmNWVlMTcyYzU3MDVmOTM3M2M2MzkwZjdmMzdiYTIgbGVnYWN5LXRydW5rCis1MzE0NiA5MmYzZWY4ZmE0YWZhMDgwNjc2N2RkMTllYzIxZTYwZWE5NDg2MjNlIGxlZ2FjeS10cnVuaworNTMxNDcgMDlmNGI0NjBiYWViN2U1ZmI0Yzc4NDQ3YjFmOThiYmE0Zjc5MWY0YyBsZWdhY3ktdHJ1bmsKKzUzMTQ4IGRlZDk5ZGI3MGNhNjc4ZGQwOWIzZGVjYWNmODY3MjM0ZWYwYTgwZDkgcmVsZWFzZTI1LW1haW50Cis1MzE0OSBlNGIwZmY0NDkyMTVmMjVmMmFkNTVkZDRjZDNkMjUzMTZhYmIxZGQyIGxlZ2FjeS10cnVuaworNTMxNTAgMjg5ODE5ZmRlM2FmMGVjZjQ5NjQwODdiMGI3MjdhMGRkZDhjNTY5OCBsZWdhY3ktdHJ1bmsKKzUzMTUzIDVjN2VhOTM0NmYxMjc0NTE4OGU5MjRmNjE5NjQyYTllYThiZjI5YWQgbGVnYWN5LXRydW5rCis1MzE1NCBhYzhhOWE0MTIxZDE3YWE3MWRiYWY1YWVkYTczYmQ2YjE2ZjM2NjJlIHJlbGVhc2UyNS1tYWludAorNTMxNTUgNjc2M2U0NWM3ZjdkMzQ4MzU0MmU0MmI0M2I3NWJlOWM2YWI4OTI2NSBsZWdhY3ktdHJ1bmsKKzUzMTU2IGVmNGI4ZmNkMTRkNzJmZTM4YmMwMDI3OTgwOTNiYWY2MDFhMTc3ZGEgcmVsZWFzZTI1LW1haW50Cis1MzE1OSAxZTFiOWMyZTJhZjBlMzIyZDMxMTkwMjExMDljNjFjZGQ5NTUwNTc1IGxlZ2FjeS10cnVuaworNTMxNjAgMTJhZjY3ODhkOTExNTU5YzljZWY0ZTgwYzllZTQ3OGNjM2E1NGY0OCBsZWdhY3ktdHJ1bmsKKzUzMTYxIGU4NWNhM2ZkNGJkNjNmMzgwYTBhYjMxYjhlYjQxMjg0NmRhZjg1ZTAgbGVnYWN5LXRydW5rCis1MzE2MiAyNjc2ZDgyODdhMTFiMGU5YTJmZDkyMWNmZjVmNzk5ODY1OTk2ZGNlIHJlbGVhc2UyNS1tYWludAorNTMxNjUgNmY4YzZmODMwYjUxY2U2NWUyNWQ4ZjU1NGNlYmJkMDk0MDVmNWVlZSBsZWdhY3ktdHJ1bmsKKzUzMTY2IDRkNzdhMmM2YWE1NTMzNzNhNjQwNWFkODYyMzk3NzU5MWUzYmFjM2UgcmVsZWFzZTI1LW1haW50Cis1MzE2NyAxOTVmNjg5YWY1YWZmNGJjYzA2NWZmNWY3NDg4ZjY1ZWIzYjM0Njk4IHAzeWsKKzUzMTY4IGJjZTdlNGE5MjZhOTFiYTViNDNiNmVhYTEwOWJiNDU1YzkwOTlmOTIgcDN5aworNTMxNzAgNTRjZDQ3Nzg4ODExYzAzYzVlZDUxNGFhMGQwMTAzZDQ2YTRmZTE4MSBwM3lrCis1MzE3MSA3YTM1ZDNkMWFjNWEzMDFlZjNkYzUyZjkxNDA4NDRmMDQyMjAxMWE1IHAzeWsKKzUzMTg3IGQ2M2ZhOTBkZjllYWQ4NDQ3Y2VhZDNiN2ZlNDIzYzExYWMxODAxYjYgcmVsZWFzZTI1LW1haW50Cis1MzE4OCBhMzIyMjA3NWY1YzY2YTEzY2JjYmQ1NzZjMjZiOWUwNWEyYjM2NTA0IGxlZ2FjeS10cnVuaworNTMxODkgYjE5ZWQ1NDNkNjk1YTAzMDVmYTAyODE0OTY0MzhlNDE5Yzg2NDU0OCBwM3lrCis1MzE5MCBiOWZjYThmYjBmYjM1MThmMTkxNDUzYmVhOTY2OWNjNTA0OWY2Yzg2IHJlbGVhc2UyNS1tYWludAorNTMxOTcgOTQzNzVkODE0ODdkYTgxODBiMGJkOTgzZTFkNzZmNDI1NzJkMTY5NSByZWxlYXNlMjUtbWFpbnQKKzUzMjAwIGMxYTRkYzcxY2RkMzc2MDEyMDVmYjY2NGQ0OWM0MjJlMjc2MWNiMTkgbGVnYWN5LXRydW5rCis1MzIzMiBiZTgyNDBjZTUyZmY3ZjM5YmExNjYxZmRiN2FiOTY1ZTM1ZTA0OGRhIGxlZ2FjeS10cnVuaworNTMyMzUgMmIxOWIyYWRjNWMxYjhhODcxNDAwZTkwMTBjNGIwMmU4YTgxMTFjMiBsZWdhY3ktdHJ1bmsKKzUzMjM2IDdhMTM4MzljNjM1ZGM1NWNkZTQ3ZTIxZmU5OTNlZDYxZDg3ZDYzZjggcmVsZWFzZTI1LW1haW50Cis1MzI0MyA5Y2M3NjFiOWUyYWM1NjBmNDhhNGNjNTg5MjRlNjkxZDNlYWI2ZjNmIHJlbGVhc2UyNS1tYWludAorNTMyNDQgZGM3ZDRlNWQ4YjQ5N2UyYjAxYmJkODZkMjcwOWUzMzk4MThhNTZlMSBsZWdhY3ktdHJ1bmsKKzUzMjQ5IDQyMDNmOGU2ZTg2YWI0MGJmZmQyYzNiODM3YTJmNDBlYjc4ZDNjMGIgbGVnYWN5LXRydW5rCis1MzI1MCBkOTc0OWMzZTYzMjZhZTE2MjNmOWQxZDRhZTRiZjQ4Yzk3MWE2NDViIHJlbGVhc2UyNS1tYWludAorNTMyNTIgZjliMjc4MjA3OThiNzQ3NGYzNmNmMzQxYWIxNzIyYTE4NmY1NzMyMSBsZWdhY3ktdHJ1bmsKKzUzMjUzIDY5ZmU2ODNlY2U1NjZjODQyMzA3N2JmMTQyZDYzNTI3NTc2Y2YyYWUgbGVnYWN5LXRydW5rCis1MzI1NCBhZmFiZmZkNTYyZTk0Y2JkZTI0ZTEzOTFkOGY2OGFmNDcyZTQ0ZDMyIHJlbGVhc2UyNS1tYWludAorNTMyNTUgNDVjNzMxNTJiNGFjNTgzMTQ1NTNkMTA1YzYzNGU2N2E4NDQwMmNmYiBsZWdhY3ktdHJ1bmsKKzUzMjU2IGNhMjk1YzI3MGIxYzNmMmMxNTVhOTUyYTlkY2RlMmUzNzFlMzRhNTIgcmVsZWFzZTI1LW1haW50Cis1MzI1OCA0Mjc0ZWRmZGNlOTgxOGU1NDY4NGNkZTIwZTdiODE3ZGE0YTRmYTgyIGxlZ2FjeS10cnVuaworNTMyNTkgMzBkYTA2YjIyNWFmYWMzYmIxOGMwOGQxNzVkOTdmM2ExM2NhMTlkYSByZWxlYXNlMjUtbWFpbnQKKzUzMjYwIDk2ZDc2ZDA5YTRlOWMyMjUyZGZhODk3ZmQ2Y2E4ZjllYWM3NDRiNzkgbGVnYWN5LXRydW5rCis1MzI2MiA3Zjc2OTk2YzdiZjRiOGVjNzRiZjQ2YTA0ZDQ0ZDBmNTk2NTE2OTBiIGxlZ2FjeS10cnVuaworNTMyNjMgOTA5MzdkMzE3NGNiZTU2ODZjYTkxZGRlOTBjNzFmODE1Yzk5ZDVhYyByZWxlYXNlMjUtbWFpbnQKKzUzMjY0IDkzMzRiMGRjM2ExN2Q5MGUyN2VmNDU3OTc4ODk3MDA0MzY0YTVjY2QgbGVnYWN5LXRydW5rCis1MzI2OSAzYThmZDM2MzhmMjYwYTFjNTVlMWE1NzhiYWVkNWEyZjNhNzczZjRjIHJlbGVhc2UyNS1tYWludAorNTMyNzAgODRhY2VhOGUwNzJlNjZlMzFiNDBiNzVjZWU1MGNmNmYxMWQ3OThiYyByZWxlYXNlMjUtbWFpbnQKKzUzMjczIGY3MDI3OWYwMGRmYzgwYzBkZmI5ODg5ZjZlODM3OTYxODIxZmU2NzUgcmVsZWFzZTI1LW1haW50Cis1MzI3NSA2ODQ1ZTBlNjI5MDBmYzIxOTU1OWIxYTc4YTI2Y2ZiYjRkMjc0NDBjIHJlbGVhc2UyNS1tYWludAorNTMyNzkgMTY3ZTdiYTc0NzU2MTNjMjI2ODBjYWI5NmJmYWZlZGJhYzA1N2IxNCBsZWdhY3ktdHJ1bmsKKzUzMjg1IDA3YzQ3MDIwMjBkYzkyYWRlNjViMWYxYTFmYzhlZGRmMmE5MWIzZDkgbGVnYWN5LXRydW5rCis1MzI4NiA0MTA1NTcwZGEzMGFkMmIyMTA4OWNkMDE1ZjFjNWRhYjdjMjQ5MzFjIGxlZ2FjeS10cnVuaworNTMyODcgMTUyMGJhYWYyN2JmNzRlOTc5NzlkN2FmMDc1MjEyZmU4NGFiZmY4NSByZWxlYXNlMjUtbWFpbnQKKzUzMjg4IDZiZDY1Y2I1Yjk1MjA2MmUzMGVhMmUyMzZkYzUyMTU5YzBiOWIwYTAgcDN5aworNTMyODkgOTk1YjdmY2MyOTZkZjU2ODRhYzczOWEyMWNlNjRhNDUyYjg3MDRiMyBwM3lrCis1MzI5MSBjYzk0OWM2MDU1NzRkYTc1ZGM4NTkxYjcyZjlmZWY1ZjRiMThmOTFmIGxlZ2FjeS10cnVuaworNTMyOTMgN2ExMWEzYWJlNjRjMWY2ZjdjNWMyMzc3YmI4Y2VlZTViMjVlZTFlYiBsZWdhY3ktdHJ1bmsKKzUzMjk0IDQ0YzYyMjBiMWRjM2ZmYTY2ZGFkZmRmMjk5MGM1ODNmZmRkODQ5ZmIgcmVsZWFzZTI1LW1haW50Cis1MzI5NSA5OTA5M2I1MjdjMDFjYTNmZjU5MGVhMmMzOTgwZGZiMTVmMmZlYzgxIGxlZ2FjeS10cnVuaworNTMyOTYgMDM1NDdhNGNkMzBhZmExMGEzOGJhOGMyMmE2ODU1NjJjODVmOGE1MCByZWxlYXNlMjUtbWFpbnQKKzUzMjk3IDk0MGZmNWM3N2YzYTkxMDdlZWNiMTY4MGFkNzJhM2ZjYjk5NDZkZTEgcmVsZWFzZTI1LW1haW50Cis1MzI5OCA4ZGE2ZGRhNjc5ZjhiMmE4ZTVkZGY2YjVlYjM5YjI1YzA0ZmU3ZGYyIHJlbGVhc2UyNS1tYWludAorNTMyOTkgNGRjNzllMjgzMjA5NGQ1MmE4MjczYzgyZjhkYjUzM2Q4OWU1NWIzMSByZWxlYXNlMjUtbWFpbnQKKzUzMzAwIGJkN2U0MWRlOTgyZjYwZTlmMjk4MDg4MjRjYzNmNWU1ZTU3NzQ2NjUgbGVnYWN5LXRydW5rCis1MzMwMSA5YWZkMmM3ZmFlZGU2M2E3MTc5NWQzMWE2NTdlOGU4NGJkYzY1NzFmIGxlZ2FjeS10cnVuaworNTMzMDIgMWVkM2VkOWFmMzQ4Y2ZiYTRjZTc5MzE3Njg2Yzg5YmE0MGQ2MTNiZiBsZWdhY3ktdHJ1bmsKKzUzMzAzIGRlNTA0MDI0YTZlNzdiNDU5YjA5ZWE0MDY4N2EwNjlkNTYxMzY4MzggbGVnYWN5LXRydW5rCis1MzMwNCA5MmRkMmJiOTRjYTljODc5MTQwN2ViMjdiMDIwMzRiZjExN2Y2NzVmIGxlZ2FjeS10cnVuaworNTMzMDUgNWQ0MzEwMjVjOTk5YTk2ZTBkMjc1NzY4YWM4MTgxNTdhMGMwOWUwZSBsZWdhY3ktdHJ1bmsKKzUzMzA2IDYxZDYzNGEwYmQ2YTIzZDkwMzc0MTM4Y2E2NzRjYjc3MWUyZWZkYjEgbGVnYWN5LXRydW5rCis1MzMxNiAwZDkyY2FhMmQwZjQyYjJjMzkyY2RkZmM5MTYxYTgyM2E0ODg0YWQyIGxlZ2FjeS10cnVuaworNTMzMjEgNmRkYjYzNmY5NWMwMDk0NGM2ODYzMGFkYTJhMmI3OGNlYTZjZjI1YSByZWxlYXNlMjUtbWFpbnQKKzUzMzI5IGI4MWY0ZWU5NGIwNGNiOTZhZjRkMTljYWZhMzIyOTMyNjY2ZDUxZjUgYmNhbm5vbi1vYmpjYXAKKzUzMzMxIDQ5ZGM3ZmM2NmJlZTM4MmEwNTVjMjgwZjc2ZWY4NDliNTBkYmEyNTcgYmNhbm5vbi1vYmpjYXAKKzUzMzMyIDY3Mjg3Y2E0ZTFlODUzZmNkYTcyMmYzYjk5Mzk2ZjJkNGU4ODlmNmQgcDN5aworNTMzMzMgYmIxZWVhOWNlZDcwZGFiNzg0NGYzM2I0NTgxZTA1YmI5MThmY2ExOSBiY2Fubm9uLW9iamNhcAorNTMzMzQgZjMxZmVlMjYyYjUxNDVmMDQzYzViMzgzMjE4NjA5NDEyNjhiZWIwNCBiY2Fubm9uLW9iamNhcAorNTMzMzUgNjliYzgwNmQ5NjYxNjUzYTM2YzI5NTRlM2M3NzM4OTc0YzVlZTk5MiBwM3lrCis1MzMzNiAwYjc5N2E3YjUzMTMwNGYyNTA5MGQ5OTUzOGM2M2ZhNDUyYzQ1YmE4IHAzeWsKKzUzMzQwIDY2N2JkMDI3ZDgwMDk4ZDQ3MGI5Y2U4ODU1N2Q1ZDZkNDQzMTc5ZTIgbGVnYWN5LXRydW5rCis1MzM0MSBiNGJhNzI0OWFiYTU2ODMxMTA1NmQ5ZjBkYTNiOTAxNTJlZDdhZjM2IGxlZ2FjeS10cnVuaworNTMzNDIgNmIxOGEwOTVjMmU3YWI3YzNlMzNhMDY2YzhhNzQ1OTI1YmVmNDRhZCBwM3lrCis1MzM0OSA0YmFiNjVmY2NhOGU2MzY5OWIwMjI2MjQyZGZlMDgyMDI0NTlkOTg4IHAzeWsKKzUzMzU3IGZmNzFiODJmNmM5NTYwODNiMGNkMjhjYjIyYzQ4NjhmZWQzNjlkMTUgcmVsZWFzZTI1LW1haW50Cis1MzM1OCAxM2ZjMTk0MjA0YzRlNzRjNmU0M2M2NmI1ZTQxN2UzY2Q4MGY5ZTFmIGxlZ2FjeS10cnVuaworNTMzNjAgNDY4YWUzZTM5MmEyYTJiNjQ4MGY0YWRmNmI0Nzg4ZGFkYjFiMWMwYyByZWxlYXNlMjUtbWFpbnQKKzUzMzYxIDkwOTQ2ZDU0MzRhYTMyYTc3NjdiZTdjOTk1OTQ1MTM0OWQzZTBhMmUgbGVnYWN5LXRydW5rCis1MzM2MiA1ZjEzMDI3MWYzODY5NWVmNDk5NjcyZDZjYzYzOGVhMWM0ZjRiMzNkIGxlZ2FjeS10cnVuaworNTMzNjMgN2UyNTAwMjI2YzQzNmM2NWExZGQ3OTMzNjhmOGM4NWJlZjEzMWE5OSBwM3lrLW5vc2xpY2UKKzUzMzY0IDhjMzY5MzQ2YTRjYzUwOGM5ZGNkMzc3YzYxMjdiZjA1NGUyY2I1YzggcDN5ay1ub3NsaWNlCis1MzM2OSBlMWU0NDkzZjZlOGYyNDdhZjI1OWFlMjQxNjRjYzkxYWNhMWM4M2U0IHJlbGVhc2UyNS1tYWludAorNTMzNzAgNDZmYzc1NjE1ZGE1MjJiYzgwOGM1MzRiNTZhMDRlYzI1YTQzM2JmMiBsZWdhY3ktdHJ1bmsKKzUzMzcxIGI2MGI0MjA5N2I3OGI2YWNhNGRiZWNiZDFmMzdhYTU2ZTU4ZDQ5NjMgcmVsZWFzZTI0LW1haW50Cis1MzM3MyA4MTNkY2M4M2U0MmMyN2RjMDZhM2UwZDQzYjg0MTA3NGI1OTU4YzJkIHJlbGVhc2UyNC1tYWludAorNTMzNzQgNDNjNzVlNTQwZTkyMmZiNmU4Zjc4NjA3MjRjOGNmM2ZkMTdiYmI3MSByZWxlYXNlMjUtbWFpbnQKKzUzMzc1IDIxMTE5ZGI1ZTA5NjY1MGQ0M2FjNTVjNGU3ZTE1ZjkyMWM4Yjk4MjAgbGVnYWN5LXRydW5rCis1MzM4MCAyNjg1OTkwMGZhNWRlN2U1ZGE2YjM1ZTkxZWIxMjE4MGVjZDg5MDk0IHJlbGVhc2UyNS1tYWludAorNTMzODEgN2RhM2RiYzgxNDViODRkYmFhMmUyMzdkNDE5Y2NiODhiNTEwNmVlNSBsZWdhY3ktdHJ1bmsKKzUzMzgzIGJlMTkzYWYyMmYwNDdlYjBhZjc2M2NjZDNiM2NkOWU0YmZlNjVhZDEgcmVsZWFzZTI0LW1haW50Cis1MzM4NCBlMThhZjI4YjQ5ZGE5YTU5MTM2YWYzYzJhNDY1MWIxMDE1OGIyMGE1IHJlbGVhc2UyNC1tYWludAorNTMzODUgNTNjMGIwOWM0OGMxMWY0Y2MwNGExZjNmYWIwNzdjNDBhMTk3YTZlMCBiY2Fubm9uLW9iamNhcAorNTMzODcgMWM0YmJlNjNmZGZjNDg3NzI0M2FhYTdhYWZlZTc1MzI3MWRlNWQzMyBiY2Fubm9uLW9iamNhcAorNTMzODggN2Q4ODY4Y2ZiYTdjNWU5ZGY0MGY2Y2I0MzM5YzM1NmZiYmM1MTcxYSBsZWdhY3ktdHJ1bmsKKzUzMzg5IGEyZTE3Yjc1MTVkM2EzNjNlMjUyNzAyMGRkM2Q2YmI2ZDI3ZWZkNTEgYmNhbm5vbi1vYmpjYXAKKzUzMzkwIDY4OTliNzQwZThlYWU2ZGRkN2RjZGQ4OTk4YmVkMjU0Y2IyOGEwNDggbGVnYWN5LXRydW5rCis1MzM5MSA3OGNkMzg0ZDNmY2Y5MDlhYzg1MmRlMzg3NmE0NTJlOTQ0ZDBmYmRjIGJjYW5ub24tb2JqY2FwCis1MzM5MyBjN2JkODkyYzA1NjdkNzJkMjA3YzNlMjY1YzczMTA5YWVkMDdkYWE4IGxlZ2FjeS10cnVuaworNTMzOTQgNmQxNmViYzcxNTY5NWMwOTA5MTlmMDk4NTNjM2U5OTU1NmRjNTA1ZSByZWxlYXNlMjUtbWFpbnQKKzUzMzk1IDE4MDJjZjkzMjU0YmY2NjQ1NDVmMGZkMTRiNWQwNGQwNTZmZThjOWQgcmVsZWFzZTI1LW1haW50Cis1MzM5NiA4YmY2OGVjYzc2NzZhZjFmYmQzNGI4ZWQzYjBiYzZhZjdjYjU2MzkwIHJlbGVhc2UyNS1tYWludAorNTMzOTcgMmM1NzFmNmNlMjNhYjI3NjY4YzJhZTEyZDRkYjY0Mjg3N2I0ZWQ2ZSBsZWdhY3ktdHJ1bmsKKzUzNDAxIGU4YWRlOGE2ZTVjYjljYTRhMjEzNWExZmViNjdhZjliZGQ1OWMzODUgbGVnYWN5LXRydW5rCis1MzQwMiBjZjhhZjZiNzU5OGJjNTM1NTg5ZDc1ZDY5NWIxZGNiNzMzMDAyMWZiIGxlZ2FjeS10cnVuaworNTM0MDMgY2E1MzdlOWJhN2E3ZjFhNjEwNjhmNTA1YzVmMzNlODU2MWFlOTA4MSBsZWdhY3ktdHJ1bmsKKzUzNDA2IGIzMDNmYjM4M2ZhNDY5NDgzNzUyZTNmM2FhNjdmN2JlZWFkODBjOTEgbGVnYWN5LXRydW5rCis1MzQwNyBmMjdiODg5OWI2MTM1MjMyYTdhMmFlOWQ2M2UzMTQ0MTFjYTZkODI5IGxlZ2FjeS10cnVuaworNTM0MDkgZWQ3YWNmMTg4MWE5NDBmYzY1YzdkMjU5NWM2MWYzNWNmZDI1ZDQ0NSBsZWdhY3ktdHJ1bmsKKzUzNDEwIDJhNDc2Yzk0YmUyMDA0MDVhOTFlODI1MzllMmVkYWZhYzNkMjM3MDAgbGVnYWN5LXRydW5rCis1MzQxMSA2OGI0MWMyZDY2NjMxYWFjNGI0MTRiMmNhNmM2MWZlZmVlMzQ3Y2M2IGxlZ2FjeS10cnVuaworNTM0MTIgMmRmODBlNzE2ZTVjOWQ5MjY2ZmZlZDBhOWYyM2I4ZGQ2ZjQ3YTUxOCBsZWdhY3ktdHJ1bmsKKzUzNDEzIDE0MDllMWYyNzNiNTA4NTEzNTYyYzg2MzkwZWQzM2U2YjAyMTViYTEgcmVsZWFzZTI1LW1haW50Cis1MzQxNCA3M2I5M2RjNWU0NDBhYzA4ODkyNjM1ZGUwZWExOWMwYzM2N2YxOWNlIGxlZ2FjeS10cnVuaworNTM0MTUgZjMyODMyOTQ3MWRmNTcxMzk2YTNiYWNjOWRhYWYzZjBjMTJmYjc1ZiBsZWdhY3ktdHJ1bmsKKzUzNDE2IGNhMWI0MGNjNmI3NGMzNTk5YTI0NmNhZTk1NDQ1NzVhYWZhODM0M2UgbGVnYWN5LXRydW5rCis1MzQxNyA0MjZmMWQzNzNjZGQ2NTc4MGY4Nzc5ODEzMmNiNDliOWMxM2NiMGE5IHAzeWsKKzUzNDE4IDRlYmYwYjgwNWNlODRmN2E3OWYwMGNiOWQwMTYzZTJkNGU4NmE1N2UgaW50X3VuaWZpY2F0aW9uCis1MzQyMCBiOWQ0Y2VkMjM1MDYyMWY2NjhjZmY5NDJmYzQzNTAyMzBlYmQ5YTgyIGxlZ2FjeS10cnVuaworNTM0MjEgNGFlZTNmNjcyZjc3ZTBmZWFmMDJjY2RhYmQwMWVlZDhiNjMyMzZkZSBwM3lrCis1MzQyMiBkYmZkODZjM2M3OTEzYWExY2QyNDI3ZmFmMTk0NmFlYmY1MTE2YThlIHAzeWsKKzUzNDIzIDkwYzM4MjcxNjg2YjEyMTMxNDQzNWIzODlmYzJiMTdlYzg5OGIzNWYgbGVnYWN5LXRydW5rCis1MzQyNCBhMDA0YzNiMDE5Y2ExNTMyMjUwYzUyYzVhZmFjZWI5MDBhZTQ0OThmIHAzeWsKKzUzNDI1IDNkNzliYzZlZDZlY2U3MjI4OWExNmJjOGZhMzgxYWMwOTk0ZTAyYzYgbGVnYWN5LXRydW5rCis1MzQzMyA5OGQ1ZjkwY2I5MDVhZmViY2ZjZmQxY2QzN2JjMWUyNzM4MWZlMTNlIHAzeWsKKzUzNDM0IDZlZmUzYTRiMTBhYzk4YWQyZTI1Nzg5MjgyMmZhOTU0MTIyOWZjZjAgbGVnYWN5LXRydW5rCis1MzQzOCBkYjhjMTc1ZDEyODNkN2ZiNzY2MjAzMDAyYWQ2MGYxNzA5NjQ0MDdhIHAzeWsKKzUzNDM5IDhlMmNhNTQ0NDkwMDFlY2IyM2FlNWFhNTE4Nzc0ZTEwZWZmZTcxZmQgcDN5aworNTM0NDAgY2Y5ODM0NWI5ZDZiMDIwYWYwMGU2Nzc3MGIwZjNhNzEyM2JkZTY5ZCBsZWdhY3ktdHJ1bmsKKzUzNDQxIGYzNzY5NmU2NDZmYWM1ZDUzNTYzZDM5ODc5OGY0ZDgwMjBlMzMzYTMgbGVnYWN5LXRydW5rCis1MzQ0MiBjYzVjMDcxYzg0MjMxMWU4M2Y2Y2VhMDg4M2Y0NDliODg3N2Y1ZWY1IGxlZ2FjeS10cnVuaworNTM0NDMgODZjZTFkZjZhODhlNzBjMWEzOTBhMzNhMDhkYjdkZTQyODhjMDYyNiBwM3lrCis1MzQ0NCA4MmI5YjViMTIyNTZlNDVlMGNhNDkxZDI0YmQ2ZWM1ZGE5YzkzZTFkIHAzeWsKKzUzNDQ1IDZmNWIzMzk0NzI3NGU4YjRkM2ZjNTFlYzk0NTNhMmUyMWYyNjQ3ZTQgcDN5aworNTM0NDYgMzQyNTMyZjQ1MzZlNjE4NDg5YWM1MjgwMDkzZjM5NzNiNTU2MmQyYiBwM3lrCis1MzQ0OCBkMDJkMjljNTIzMmExY2FiY2IyNzAwMzQ3ZDg0ZGE5ODY1MWQxZThhIHAzeWsKKzUzNDUxIDQ3ZjllZmRjMDg1NWE4ZDE3NjFhMGE0MjQ3OTM1NzYyZjQyYzM1YzMgcDN5aworNTM0NTIgMWMyNjUwNWMxZGU2ZWI1MGVhODY0YTk3NzAyOGJkZjY5NTc4YTk3YyBwM3lrCis1MzQ1MyAzZjc4Mjc0ZjJhMzQ5NDM1Yjc0NTJlMmQyNDJmYjYwYTU0NzM2NjgyIHAzeWsKKzUzNDU0IDRhNGJjNWM3NmU0NTkwYmRjOGU1ZTdhZGEyYmMzNGY0ZWNjMDY0Y2IgbGVnYWN5LXRydW5rCis1MzQ1OCA5YmU2MmM0NWYzYTg3OTQwZjFiMGNkZTNiM2I3NmRjZGRkOGE5MzY1IGxlZ2FjeS10cnVuaworNTM0NTkgZTViNjQxZTcwMGYyMzU0NWEzOTRjMGE4MzgwZmMwMTc1MjAwY2ZhOCBsZWdhY3ktdHJ1bmsKKzUzNDYwIGE0Y2RiOWM4YWYyNWJkNjdhMzliMTQ5MmMzOGMxYzNjMWIyNWFlZjYgbGVnYWN5LXRydW5rCis1MzQ2MiAzNzlhZjQxOGZjMzY3NTJkZTk1ZjRhYTJiYjdiZGQ1OTU4YmU4MTExIGJjYW5ub24tb2JqY2FwCis1MzQ2NCA0OGQzOGQ3NzcwMjQ5NjI5ZWI1MTUzYjM5MDYwZjE1MTVkMjk1ZjI1IGxlZ2FjeS10cnVuaworNTM0NjUgMDNhNWYyYjA2ODI1M2ZhZTA1MzQ0YTRiZDJiYzRhMzZkYmRlNWNhMSBsZWdhY3ktdHJ1bmsKKzUzNDY2IDY2NzgyZTViOTkyZjU3ZjRiNzIxYjFjOTU2NGE5OWM1NDQ4ZWZhMTcgbGVnYWN5LXRydW5rCis1MzQ2NyA0YTk3ZjNiZmI1NWNlMWU1YmRjY2Q5M2NmNTlmNzA3ZjVhOTA2ODE5IHJlbGVhc2UyNS1tYWludAorNTM0NzEgYjczMzhmM2IxYjAyMjQ1ZWE0Y2ZjODY5MGRjMzQ2MWUwNTg4YjNmNSByZWxlYXNlMjUtbWFpbnQKKzUzNDcyIDA5MWRmNDM2MDM4ZDc0NWVhOWQ2MjdmODgyMDJiMzA4NDBmNGQ1Y2IgbGVnYWN5LXRydW5rCis1MzQ3MyAxOTFlYWFlNWEyOWQyZWMzZjRhNWY2MzI5ZWZiNjZjN2QxMWZlNTUyIHJlbGVhc2UyNS1tYWludAorNTM0NzQgNGQ4NTdkYTdlNmM0ZjQxMzI4NzU0M2Y5NjZlOTVmM2EzZGI5MTEwNCByZWxlYXNlMjUtbWFpbnQKKzUzNDc1IDc3MzI5YjEyN2Q0Mzc0ZTQxNjg2MThmMmQ0ZjBiMjZmZWZlMGY3MzIgbGVnYWN5LXRydW5rCis1MzQ3NiA5NGNhMDZkOTU5MzA2ZjgyYzVlYjEzMzgxYzRlMzBlNmMyYmNiNDdiIHJlbGVhc2UyNS1tYWludAorNTM0NzcgOTAxNjA0OTBjNmQ0MDUyZDNiNDc1MTlkNzMzNTM3ZWM1OWIyMTE4NCBsZWdhY3ktdHJ1bmsKKzUzNDc4IDIyM2ZmMzVkY2ZmYzFiMDZhZDQwYmYwNzQ1NDU2NDFkZTkyNjIzNmEgcmVsZWFzZTI1LW1haW50Cis1MzQ3OSBlZTg3ZWVmOTU3ZjM1OTEzNjMyNzcwMzQwN2UzYTEzOWQxNDMwMGU1IGJjYW5ub24tb2JqY2FwCis1MzQ4MSBjYTYwN2Q3NDhmNjRlNjYwNGM4YTVhZTA2MDJiZmJhNDVlY2RjOWY2IGxlZ2FjeS10cnVuaworNTM0ODIgOWJkZjM0YjNmNzJlYjBmZWUzYzJiMTliMzlmMmQ4ODlkNWQzNjdmYiBsZWdhY3ktdHJ1bmsKKzUzNDgzIDNmMWRmYWYyOTNmYTFkYTBlZjliOTQ5MDc5ZjY4OGZmOWYwNTUwNGEgbGVnYWN5LXRydW5rCis1MzQ4NCAwYmM0MmMxNTZlOWY1ZWZlZTc4OWM5NTJhNGQwZTg4NmY2ZTQ0ZWEwIHJlbGVhc2UyNS1tYWludAorNTM0ODcgOWZlOTJmMThiYjZhNDJhNzQ2OTNkNmFlOTgwODNjNjFhN2JkNDhlMCByZWxlYXNlMjUtbWFpbnQKKzUzNDg4IGI4YWNlYzRhNGM4OWNhNmJkM2FmODU5YjdmNjdiNDI0MTdjOWViNGIgbGVnYWN5LXRydW5rCis1MzQ4OSBiMDUxZDE5N2Y3YTQ5MzdmY2NlZmM2N2FhZWI4MGMyMTZhNDU1Mjc1IGxlZ2FjeS10cnVuaworNTM0OTAgMDVhODk4NmQ5NTI2NzM3YzkyNDIzMmM1N2RjNTMyY2I4MDc0YWNmNyByZWxlYXNlMjUtbWFpbnQKKzUzNDk2IDY4MGQxN2E2YjE1ZjBhMDQyNGEwM2Q2MDRkMGQ0NTIzMWVlMTZkMjIgcmVsZWFzZTI1LW1haW50Cis1MzQ5NyAzOWIzYTVhM2M2NDViODliODBmNWYzYjVjMGQ0YTM0ZDFhZTRkNGRiIGxlZ2FjeS10cnVuaworNTM0OTggNjBkMzFhMTJiMTUwZDUwOWNmZDcwYmYxOThkMDZiY2FmNjVmZWJhOCByZWxlYXNlMjUtbWFpbnQKKzUzNDk5IDJmODBhZjY3NDA3NGFmYzI1MjZhZTAwMWFhZDhjNGI1ZTYzODRiYmIgbGVnYWN5LXRydW5rCis1MzUwMSA1YmY0ZjA1OTAzYjIwYzYwZjc4ZWJjNDUwNjYwZDI3NDZjYTdhZWEwIHJlbGVhc2UyNS1tYWludAorNTM1MDIgNTljZjg5ZTVmMjM3ZWRhYTUxNjA4NDMxMzEzMjFmOGY4NGFjOGM0MiByZWxlYXNlMjUtbWFpbnQKKzUzNTAzIDdiMzhmOTk1NWM2NDY1OTQwMTQ3NzU3MWI3MWFmOWI5OTNjNThmYWYgbGVnYWN5LXRydW5rCis1MzUwNCAxMGJmZmQxOWI1MzVhNDQ4ZTQ4MmUyOWVmZmVhZmM4NTlkMmIzZjEyIGxlZ2FjeS10cnVuaworNTM1MDUgM2FlNGY5MzBiZjI3YjRjZGMwYzc3ZmUxNmJkZjUwNDE2YTg3OTY1MiBsZWdhY3ktdHJ1bmsKKzUzNTA2IGFjNGMyZjVjM2ZjMGU5OTM0MzM2NDY4YjNjOTA5OTI3OWY5ODljOTIgbGVnYWN5LXRydW5rCis1MzUwNyA1ZjhhNTRjODA0ZmY2ZjBkZDMyYjJjMjU4MTkyZGE5M2E5YTZlZDY0IGxlZ2FjeS10cnVuaworNTM1MDggMGJmZmNhNjRjY2M0YmEwNGU0MTMwODhkMDc0MGVjODJmNDg0ODExOSBsZWdhY3ktdHJ1bmsKKzUzNTA5IDc3ZTBmNDcxOGE3Y2E2MTc3ODdlNzBmYjNhOGY2ZmJkZTdiYTA1YzYgbGVnYWN5LXRydW5rCis1MzUxMCBjODZkZjMxMWU2MmNlY2UyMTAwNmJlNmJjMzYyMDlmYWVmMmI0YjhjIHJlbGVhc2UyNS1tYWludAorNTM1MTEgMmZhNmU4MmIxZjE3YjdhZWY4NzYxMzc5NzJhNzNiN2MyZmZkZTc3NyBsZWdhY3ktdHJ1bmsKKzUzNTEyIDU3M2E0NjE3NjE3NTM5NTJhMGIwNTJjMjE1MDQyMzA1NGQwNzU0MGMgcmVsZWFzZTI1LW1haW50Cis1MzUxMyA2NjZmYWY4OTEyZTA1ZjM3ZmUzYWI0ZDgxM2RhMjQ5MjE0NWJjZGFlIHJlbGVhc2UyNS1tYWludAorNTM1MTUgMTY3OWE0YWRhMTcxMmIwZDg4OTlhNThmZGFjOWFkMGZjZjkwNDdkZiByZWxlYXNlMjUtbWFpbnQKKzUzNTE2IDNiNmFjNGY0YjQzNzI0MGJkZmEwZjg1MzQwYWVjZGM1NmJiYjE4MzkgcmVsZWFzZTI1LW1haW50Cis1MzUxNyBiMjM3MTFiZTJiM2UwMzQyMTM4ZjQ3NGZmMzE2NjQ4NDg4NzBmZDRmIGxlZ2FjeS10cnVuaworNTM1MTggYmI0YzBiYmJhMjcyZjhkNzhmNzUyNmZkMjRjNjIwODI4MTQwMDhiOCBsZWdhY3ktdHJ1bmsKKzUzNTE5IGIxNmI0Zjk3NmU3MGFkODdmNjYzOTcyYzJjYWZhNDA3OTNmNDc4YzEgbGVnYWN5LXRydW5rCis1MzUyMCBlY2UyYWY3NjQ2MjFkMDU3ZTQyNTY0YTRiNDRkMzQxYjk2ZWNhNTQ1IHJlbGVhc2UyNS1tYWludAorNTM1MjEgZGUyYmJkZWNlODNlZGFmZDJhZTFkYTQ4OTE4YTQzMjczNTg2ZjIwNSByZWxlYXNlMjUtbWFpbnQKKzUzNTIyIGQ3YmUwM2ViZjQ2NjczMWNiN2JlNjFjNDc0YzY1MWU5NTFmZjQ0NGYgbGVnYWN5LXRydW5rCis1MzUyMyA5ZjIzOTNlOWVhY2FiZjQzODA2M2ZkYWYyOGYyZjRmMTc4NzllODMyIHJlbGVhc2UyNS1tYWludAorNTM1MjQgMDgxY2E2MDgwZmYxNDUzMDRlNGQzNGYxMTg5MTk5NjQzNTJjZjUxNSBsZWdhY3ktdHJ1bmsKKzUzNTI1IDI5YjhiNjViYWUzZmFiNWUwZjRiOTcwYmQ5NmJmYTNiZTAzMGUyMTAgcmVsZWFzZTI1LW1haW50Cis1MzUyNiA3ZjQwNjVlZmE0NGVlMjM5NjUxMTE1MTVmNGMzMDcyZTI1ZTJhMzNhIGxlZ2FjeS10cnVuaworNTM1MjcgODZhYjJmMjBhMzMzMzhkYzBhMmYwMTBhZjBjOTI5MzE0ZWI2ODgzYiBsZWdhY3ktdHJ1bmsKKzUzNTI4IGQyZTJlZGQwNzA4MmM0ZmJlZGU0OGIyN2IyZmViM2JlNzY1ZTM4YTQgbGVnYWN5LXRydW5rCis1MzUyOSBkYTMwYTI2ZGZlYjM5Y2I1MDFiNWIwYzI4NWFkZWRjNWRkZTdiZmE1IHJlbGVhc2UyNS1tYWludAorNTM1MzAgNjg2MGJhODhkNjdlYTlkMzBmNzllZTgxYTI5Mzg2M2YxMjczMmNkOCByZWxlYXNlMjQtbWFpbnQKKzUzNTMxIGRmMjk0YmM1Y2U2ZTgyNjk4NzY1MjE2N2MxMmYzODk1NDJiY2Y1N2YgbGVnYWN5LXRydW5rCis1MzUzMiAwZTk1Yzc3NTEyZjU0YTEwYzI5YzA3MzgwYjAyYTcxZjA1NDY0OTE2IHJlbGVhc2UyNS1tYWludAorNTM1MzMgMjkzMzExZTYzYTczMmUyMWRhN2VmNjYzMGZmZjI1ZDk4MDA4MDQ3ZiByZWxlYXNlMjUtbWFpbnQKKzUzNTM0IDAzMTQ0YzQ4Njc4MmMxYjEzZTFiYTYwODc4YjU5ZjQ4ZTBmZjE2MDEgcmVsZWFzZTI1LW1haW50Cis1MzUzNSBkYmJkZmMwMzhkYzk0N2NkOTI0MGJjMjk3NWY4MjgyNWU3ZjI3Y2FlIGxlZ2FjeS10cnVuaworNTM1MzYgMzhkOTQ0ZWZlNjAwYzZjNGVmNjk3ZWZlMzk1OGY0NTNmOTBiNjI2YyBsZWdhY3ktdHJ1bmsKKzUzNTQzIDQ4MDdhNmFiZjkwNjI0Yzk4Yjc5YzU1M2IxM2JjMDUwMmUzOWI2Y2EgYmNhbm5vbi1vYmpjYXAKKzUzNTQ1IDBkMDk2YjE0NmI0ODY4YjMyOGI1ODAwM2E3NTZlYzAzZGIyYzExNWYgbGVnYWN5LXRydW5rCis1MzU0NiA0MTU4YmE3ZjQ2YTAzNWFhNDFjZjIyOTFkYmZiNzZmNGY3NzEyMGUwIHJlbGVhc2UyNS1tYWludAorNTM1NTYgYTViMjY5Y2UwNzlkZWRjNmIwZmY0YzhiNDMxOTRlMDVlMDkwMDk5ZCBsZWdhY3ktdHJ1bmsKKzUzNTU4IDY1NmRkMDA5NWY1MmVkYzE4ZGVlOTVkMjNkNjliYWNiMTlhYWJkYzIgcmVsZWFzZTI1LW1haW50Cis1MzU2MyBlNDM4MTZkZGM0ZjA1ZDMxOGQ1NDA5ZTcyYWNhOWRjNzNkYzdhOWE4IGxlZ2FjeS10cnVuaworNTM1NjQgMTVkZWNhMzllMGU2YmJjNzljYzQ4MTYwNjNkYmNlMjIwMGIyM2YyZCBsZWdhY3ktdHJ1bmsKKzUzNTY5IDRmYTljODBmYjE3YWI4NmMxOWQ0ODg0YTM1NGZjNTI1OTIzOWIzZWIgcmVsZWFzZTI1LW1haW50Cis1MzU3MCAxMTYzZjU1ZGFkOTVmODBjZjdmMDVlZjE4YmI4NmRlNTdmMmU3YzVkIGxlZ2FjeS10cnVuaworNTM1NzIgMmJiZjE3YzFjNjljYjlkMWJkY2NhMTRkYzM4NDQ3MTAxZDUwODE2OSByZWxlYXNlMjUtbWFpbnQKKzUzNTczIDEyODU1MDAwZTEzYmRlYWI0ODg3Yzc0NGMzZTE2NTk5NTU2NzU5YWMgbGVnYWN5LXRydW5rCis1MzU3NSAyMzQzYzY4Y2ExYzg3YTNhZmY1MDIzYWIyN2Q4MWIwZThjYWI1NTA3IGxlZ2FjeS10cnVuaworNTM1NzYgMTc1MWNhM2ZlZmZlOTZiNDQ4ZjZlMzYyYjRkMTYyY2M5ZmI3ZjI5NSByZWxlYXNlMjUtbWFpbnQKKzUzNTc4IGM5ZDdiODZmOTM3N2NiMThiYmYxMzZmY2FiZjljYWNlYWVlMTBhZTMgbGVnYWN5LXRydW5rCis1MzU3OSAyNDMxZjgyYTZhMTc1NmZhNzRhZDIyY2UzYjcyMDE3ZGE0ZmExZmZiIGxlZ2FjeS10cnVuaworNTM1ODAgYWQ5MzZlMGI2ZmNmZDFiYjJkYmY5YTdhMzk5MGYxY2EzNzk4MzcyMiByZWxlYXNlMjUtbWFpbnQKKzUzNTkwIDE3ODJiNjIyYWFjNzFiOWIwZTNhYWQ5MTNhOGY2NWM5MWRlMDZkOTkgbGVnYWN5LXRydW5rCis1MzU5MSAyZDgyMzlhYmZhNjBmYWUzYzFiZTc1ZWJjMGRiYzQ0YzhlMmQ1YjhjIGxlZ2FjeS10cnVuaworNTM1OTQgNWZjODE5YzZjMTNlMmVmOWU3YmQ1ZDZlNzA2MGRmNmNiZjBmYTViOCBsZWdhY3ktdHJ1bmsKKzUzNTk2IGQ2MGFkOTE0ZDgzM2VlOTZjZGJlYjM0Y2Q1YWNjNmI0YWNkMTBjNjIgbGVnYWN5LXRydW5rCis1MzU5NyBhYjljODY1MTk2MjgxYWZhMmE3NTc3Y2Y2NjQ5ZTc1Nzc4ZTdjMjA2IGxlZ2FjeS10cnVuaworNTM1OTggZmZiOTU4MGY5NjdiYWE2Yzk2MjI4NWQ1ZDgzNjZlZjgxNWUwYTc5NCBwM3lrCis1MzU5OSBkNWJhYmIzMjZhNTBkMTAzYjAxNTRiZWM0ZDZjMGIyNTEwODMwOGZmIHAzeWsKKzUzNjAwIGEyNjQ0MjIyODA1ODU1YzgxN2RmMWQ1MzZjMjQ4MjdmZjJjNDE2OWMgcDN5aworNTM2MDEgNWRhZTBkN2Y2ODNhYjM3OTY5MmZkNGNiNDVhOTE5MWRkOTJjZTIwZCBsZWdhY3ktdHJ1bmsKKzUzNjAzIDRiMTAwMWRhMzk5Mjg2YTg2M2FjNjU5OTkyMjE1ZWFhYmE1ZDk4MTQgbGVnYWN5LXRydW5rCis1MzYwNCAwYWNhMDAzOWNjMWI1ZWQxNWYxMGE5ZGY0MWUyNjU4NDdkMDM3NTc4IHJlbGVhc2UyNS1tYWludAorNTM2MDUgYmQzNzM5YTg3MjU5NWEwNzE2ZDhmNjE3NzdjMzBmYjY5ZmU4NGJhOSBsZWdhY3ktdHJ1bmsKKzUzNjA2IDAzN2FiY2E4MTdiNjM4M2JkYjQ4YTc3NjEzODQ0NmE5MjU1ZTQwODYgcmVsZWFzZTI1LW1haW50Cis1MzYwNyBjMTQ3YzZiYzU3OWYyODE4YWQxMzEzMmRhMDg0MWVjZDMwYWFmMzFmIGJjYW5ub24tb2JqY2FwCis1MzYwOCA2N2VjNGFmZmJkMTRjMGU0ZDg3MTVkNWFhZjBkYjA2MjBjNDUzZmZjIGJjYW5ub24tb2JqY2FwCis1MzYwOSAwZjIwYzNiYzYyNzA2YTIyZmMxZWExMTkyZDZlYWJiMDdhMDJjYTE5IGJjYW5ub24tb2JqY2FwCis1MzYxMCA2ZWJhZDJhNmI5OTA3ODZhYjYxMjNiYzk2YjYxNjczMTUxN2EyYmEyIHAzeWsKKzUzNjEzIDU4Mzg5ZGVhNjUxY2Q2OTMxZThhNDFjYTM3MWVmZTFhYWVhNzhjZTQgYmNhbm5vbi1vYmpjYXAKKzUzNjE2IDcyYzBjNmFlYzFlZDE4NWM2MzZjZTEzZjA0YTVhNzA2MzVjMjIwMTIgYmNhbm5vbi1vYmpjYXAKKzUzNjE3IDUzYTM2ZGIyYzM4NzY0MDk4YmU4ZjYxMGFmNjAzYjk0YTA5ZDRkOGIgcmVsZWFzZTI1LW1haW50Cis1MzYxOCAyYThlOWVmYjVkMjBjM2JjNWRjYzcxOWVlMjcxNGU2ODliMDNlYWM5IGxlZ2FjeS10cnVuaworNTM2MjQgYWQ4Y2RmYjY5ODcyMTNlZDBjZDZkNWQzZGU0OGY1NzVjMjA4MDI1OCBsZWdhY3ktdHJ1bmsKKzUzNjI3IDg0ODA5NjhmNGY0YTE0ZTkyOTFhYjUwMTU1OTlkMTkxN2Y2YWE5MTkgcDN5aworNTM2MzQgZjE3MDFiYTI0NTJiNDBlYThkYjg5YzIzYjJjM2EyYzdjMzMzYTM4MSBwM3lrCis1MzYzNSBjY2FjNjM2YjE1MmNlNjgyZmI0ZjI1MjUyNWJlNDVkYWJkZjhkNjgzIGxlZ2FjeS10cnVuaworNTM2NDEgNmQ5Y2E5MGQ4YmY3NDlkOTViZDk4MGFmZDExN2RkMDJjYTZiZWU1OCBsZWdhY3ktdHJ1bmsKKzUzNjQ0IDFhZjhmZWUzMzAxM2MwZTc2MmIyNDBhNTg0MzRlZTllMTcyYmEzMmMgbGVnYWN5LXRydW5rCis1MzY0NiBkM2U4ODYzMWY5MmJiNmEwN2JhNzBlOTVkOWVjMjNhMWQwNWNiYjFmIGxlZ2FjeS10cnVuaworNTM2NDcgMjY1YzUxYmEzOTEwMjMxNDljNjlhZDA1YzUwYTU4YzU2MTZkNmVlMSByZWxlYXNlMjUtbWFpbnQKKzUzNjQ4IDA5ZGNhY2M4YTBiYzJhMWUzMGZkODQ3YTAzNjdkN2NhZDU4NTQ2NjkgbGVnYWN5LXRydW5rCis1MzY0OSAwNTI4ZDZmOTRlYjZlZTYzZjhlNDhjMGQxYWYyNzA3YjM5ODcyZjEwIGxlZ2FjeS10cnVuaworNTM2NTAgNmM0MWIwMTIyNzQ3YWY1OWQ1MWZlNzk0YWIwYTU4ZDdlMWI5ZDI0ZCBsZWdhY3ktdHJ1bmsKKzUzNjUxIGQ1OTRlYzg1OGZlOTc0ZGM1ZDkyYzE3MDEzNmIwZjIzNjk0ZDZmNDkgcDN5aworNTM2NTIgZjgzZDZhYTM5MGYxMDZiOTJmYjhmZjJkZmUyZGE0ZWI4ODU4ZDhkZiBwM3lrCis1MzY1MyBjNzc5MzM0NWEwYzU0NGMyNDgyN2NhNWNiYTM2N2Q5MmRlYjZhZmVlIGxlZ2FjeS10cnVuaworNTM2NTQgNDk5YmYzMDQwYWY3YmY0NTNiZmQzMWRlMjNlNTliM2JkNWFhMWI0MiBsZWdhY3ktdHJ1bmsKKzUzNjU1IDU2ZGJkYjdiNDA0YTM5YmU3YTVjMjgzM2E2ODI5ZDNkZDM5NGVkMGQgcmVsZWFzZTI1LW1haW50Cis1MzY1NiAwNzg3NTU0OThjZmUzNTUwYmI2MDEyZGVjMGI1NmEzNWEyNzc5NmYzIGxlZ2FjeS10cnVuaworNTM2NTcgZDUwOTk0NjkzYzkyNTZmZDFlMWJjYmQ3MGVlY2VhYzg5NTFmZTQ4MyByZWxlYXNlMjUtbWFpbnQKKzUzNjU4IDQ4N2VmMGY5MDNlMDE1ODQxN2M3ODViOTRkMWMwMzk4ZGNhNjhjOGMgbGVnYWN5LXRydW5rCis1MzY1OSA4ZWIwM2IxMTgxNjQwZjE5ZTU0OTliMjJjMmQzZTI0ZmJlMjNlNGRmIHJlbGVhc2UyNS1tYWludAorNTM2NjAgMjkwMGM3NTY0MDU1ZDYyYzJkZjgwYTY3YjI3Zjc0ODVmNjI2NmVmNyBsZWdhY3ktdHJ1bmsKKzUzNjYxIDMwMjI3NzhlZTBjYzZkMzZmYjU0ODY3MTczODdkYjNkMGIxM2Y0MjUgcmVsZWFzZTI1LW1haW50Cis1MzY2MiBmZmFhYWUwMmM2NjI5Y2M1NTY4OGVkOGUzNmVlMDE1MTU5NDA3ZmRkIGxlZ2FjeS10cnVuaworNTM2NjMgYTJkN2Y0YzI5ZTViMDg5MTNkZmU3ZmM5OTQzOThiZmVkNThlZTQ5NCByZWxlYXNlMjUtbWFpbnQKKzUzNjY0IGM5OTRjMjQ1ZDlhYjVjZjk2NTcwNTQ4NDRjYzEwMzg3MDdkN2UxNWQgbGVnYWN5LXRydW5rCis1MzY2NSBkOGZiMGY2YWFhZDQzY2IyZjgyMDM4OGIyMDNjYjliMWRhY2VjMTdiIHJlbGVhc2UyNS1tYWludAorNTM2NjYgMWFkMDU2ODczN2Y2MTAxMzI0YTU0NzUyZmRhMTcyYjllZDc1NmRiYyBsZWdhY3ktdHJ1bmsKKzUzNjY3IDQ3YmIyODAzZWIxYmUzNjlkZjM4YjljZjY4MWM0MjdhZWUxMWE5MGMgcmVsZWFzZTI1LW1haW50Cis1MzY2OCAxZjcxYTMyZjk4ZDIzYmMwMzA0MWFkNmVhNzY2MGZhODc5MDE5MThlIGxlZ2FjeS10cnVuaworNTM2NjkgYTA0Yzc4MTU0NmVkMmE5N2IzZjViNmJiYzg1M2QwYzNiMTAwZDg0ZCByZWxlYXNlMjUtbWFpbnQKKzUzNjcwIDlmNWVhZWEzYzc5NTQwOWJjMzM1OGZhZmI0ZjllZGM2YTkxMTA5MWMgbGVnYWN5LXRydW5rCis1MzY3MSBlNzc2YzgzYTBjMTllMjczZTcyMDhmMWNmZDJhOTYxYjBhNDRmYjkwIGxlZ2FjeS10cnVuaworNTM2NzIgNzE1NmNmZGMzNjY3ZTNiZmQwNTJkNDE4YmRhMzZmOTJiNTk5MWM3YiByZWxlYXNlMjUtbWFpbnQKKzUzNjc5IGY3ZTkwNzFjM2ExZjAwZWQ3MTI0ZjFkZTBkZTBhMjhlMWRlNmM4ZjcgbGVnYWN5LXRydW5rCis1MzY4NSA3OTNlMDMyM2Q0ZDY1YmZjODliNDBkNzgxNjJjZDc3MWM1NzVhMThlIHAzeWsKKzUzNjg2IDRjZGYyMWEwZGJiY2U4OTFlNzVhOTIwZDRmYWY0YzBlY2JkZDgzMzIgcDN5aworNTM2ODggMWQ1NDNhMzIwMzQ2MTA3MzA1YzQ5MTNkODI3ZDE0OWYyMGE0MzQ4NyBwM3lrCis1MzY4OSBmNmYzOTFkMWQwNTBmZTM2ZDAwMjhmZWMyZGNlMTIyYmYzMGM0NGU5IGxlZ2FjeS10cnVuaworNTM2OTAgODNlZmZmNGQ1YWU5NDI1OGVjNjkyY2ViZmIxODJiZmNlZWY3MGM1YiByZWxlYXNlMjUtbWFpbnQKKzUzNjkxIDRkOTE1NjQ2NDY3MzZkZjcxMDc4MThhMjk5YWRjYWI1NmM0Mzk4M2QgbGVnYWN5LXRydW5rCis1MzY5MiBiNzA0MmJkZjkwYTliYWU0MTRmNDE0MTU4YTYxMzc4MWRlNjhkZmY1IHJlbGVhc2UyNS1tYWludAorNTM2OTMgOTg0MDQxZTc0NDZkMzFjNmEzYmEwNGI1YzU5YTAwOGM2ZWFhZDU3MyBsZWdhY3ktdHJ1bmsKKzUzNjk0IGQyZmU4OTNhNDg0MzcyNTcwNTk3MDNkMDYxOGU2OGI2ZmEzMzdmZWUgcmVsZWFzZTI1LW1haW50Cis1MzY5NyAyNjZjMWIwZjllMTZjNjg4NjY0NmFiMjkzN2UwNDQwYjY2ZTZjNDE2IGxlZ2FjeS10cnVuaworNTM2OTggYmUyOTU4NzgyNTZhYWJjZjNlZTA2M2RjMGVkYjZiZTUzZGEyOTU3NyByZWxlYXNlMjUtbWFpbnQKKzUzNzAxIDIyNzYwZDUzZDRkYTVkMjg3N2Y4MTRmYTE5ZGQ2MWJmNzAwNmFiYTYgcDN5aworNTM3MDIgMGNlMTRjNGNhMTMzN2QxMDY4M2E0NjlhNzdhYzQzYWM4OGJlNGJkYSBwM3lrCis1MzcwMyA2OTE3YzY3NmM5MmZiYjQ5Y2QxYjEyNTIyZDkzYTczYTM4ZmQ0ZTlhIHAzeWsKKzUzNzA0IGU5YTYyMzRiMjZhZmQxZTAyNTM5NjMyNTUyM2FjYmEzZDFhM2ZhZjEgcDN5aworNTM3MDUgZThiMjkxM2Y5Mjk3ZjQ3Zjk0MmMxNWQzYTkzZjFkYjAwNjQxMjI5YSBwM3lrCis1MzcwNiA4ZDlhMGVjNGQ5NzYwMDc3NjM5OGU5OTZkZGQyZDI4ZDBlMDkxNmJkIHAzeWsKKzUzNzA3IDlmZDk2NDA4OGUwNzA1ZjUyZTg1MDU3ZWEwMmVlYjE3NTM5NjdkODYgcDN5aworNTM3MDggODFlNDAzNGFkODgzNzYxMjAyNmZmMWVkZGY4MWVlMzU1ZjE5ZTQ2MiBwM3lrCis1MzcwOSBjMTVjZmYyZGQxOGY1Y2VkOTU5YjQ1ZjExN2QzYjE0MDkyMzEzMDhhIHAzeWsKKzUzNzEwIGI3Zjg5ZGI5YTFkMDVhYTg2NDVhNTc4YmI2OGE3YTQzY2FjZWU4NmMgcDN5aworNTM3MTEgNDNlMzY5Y2MwMmM1NWY0NzNmNmQ0YTc1NmY1ZmZjOGQ0MTg5MzcyZSBwM3lrCis1MzcxMiBjNGJlNDkzZGNiNmY5NGI1NmJiNmM1Y2RiZmQ3MTMyNmUxNzY1Nzg1IHAzeWsKKzUzNzEzIGZmZGM4ZDM5OGU0OTExYjdjNDFjOGVjY2M3NzJhN2Y5ZDVlNmJjY2UgcDN5aworNTM3MTQgNzIyNzdlMTk2N2IyYjZkZmNlMjI0M2NkN2VlOTEyZjRiZTExYjdkMyBwM3lrCis1MzcxNSAwNGY1Y2JjNzQ0MjQxZGJkNDY0ZTQ5M2VlYjBhODVlZGFhMGU5M2NhIHAzeWsKKzUzNzE2IDY3NTI1ZWZjOTljNTdmN2E5NzRiOGUzNDBmODI1MWE1OGRmYmYzMzMgcDN5aworNTM3MTcgYWU4ZWU5ZTVlODE1MDM4ZmNmNjA4YzA0OWQ5NDA1MTlmOTMwZmVmNCBwM3lrCis1MzcxOCA1NjIyYTEzYWQ4YWIxMWQ3MDEzZTExNmJhYTNlNmZmMjE1YjJhMWY1IHAzeWsKKzUzNzE5IGUyODAwZThkZDljNDg0YzRhOTg5NWZjYmE2OTU4YWQyZjdiYjhkNGIgcDN5aworNTM3MjEgNDM1ZWQ2NDFhMzMzZjgzMzk2MzNhZTcxMTExMjlmYmUxZjNmODJjYiBwM3lrCis1MzcyMyBlYWVkZjg0ZWFiY2RmNjgzOGRkZDg0OWFhNDE2YzdiODdiZjcyOTlmIHAzeWsKKzUzNzI0IDdkYTJhZTFhNGY3MDlkMGYxNGQzYTllNThhZDZmZDhiMmU3MWE5ZWEgcDN5aworNTM3MjcgZjIyOTY0NWQ2MDdkZGUzZTkwZjEzM2QzNDhlMDIwOWQ2Y2Q5OTgxOCBwM3lrCis1MzczMSAzNTNjMDA5ZjZjNTM4NTI1NDBmYWNiYTBkMzFjNjUzZWNhNzZkYzk4IGxlZ2FjeS10cnVuaworNTM3MzIgZjM0MGNiMDQ1YmY5MmQwZTc3NzIzODVhNzE5N2U5YjBhZjM3ZjBhOCBwM3lrCis1MzczNCA0YTAxZjZlMDIwMTY4ODY0MWRmNWFmOTY5NGQyOTgxMDQ2ZWRjNWMxIHAzeWsKKzUzNzM1IDVkYmNlMmVhMTMzYzNjMDFlNzZiMGM2ZDNhNDk0MTY5NWFiYmE5MWIgbGVnYWN5LXRydW5rCis1MzczNiA5MDUzNmJlMDkzZjdkYTVmOWRlNjYzOGIxZDY1MTFkYjAzYjc3Y2NiIHJlbGVhc2UyNC1tYWludAorNTM3MzcgZmNmNjkwMmYyMTBlZDNiMDZiOTViYzUyMDQ1MWU3NDliZWJjZmZkOCByZWxlYXNlMjUtbWFpbnQKKzUzNzM4IGNiODEyM2FiMmEwNjVkOGEwOTBkMTQyM2NmYWExMjEzY2NjZTNlNDIgcDN5aworNTM3MzkgNWRlNzU0N2E1YTIzNzExMTEzODY2MTJhOWE5YTJmYTYyM2MwNjRlZCBwM3lrCis1Mzc0MCAzZDE4ZDhmMzY2YjExODRkNjE5YmE3NDk1MGEzZDcxNThkNjRkMjU5IHAzeWsKKzUzNzQxIDI5ZDY1NzQxZjZjODk2ZjJlMWMxOTNlMDIwY2Y3ZGRiNDEyNzI5YjEgbGVnYWN5LXRydW5rCis1Mzc0MiBhODQ0NjBlNTMxNjA5M2QwMDMwZmViOGM3NjBhYzFjM2E5ODg1NzI0IHAzeWsKKzUzNzQzIDVlZjcwYzQ5ZDg1YTI0MzM1YjQzYWY0M2MzZjA5YjZkZjYzMTkyYTMgcDN5aworNTM3NDYgZTY2ODVjODQwZWUzYzExYTkxZTBhMzM3MjFhNTdiMTdjZjUxZjgzNyBwM3lrCis1Mzc0NyA0MjlhNGJjMzFjOGUzNjcwZTcwMDBmYTU0MDljN2UyYjgwZjU0NzUwIHAzeWsKKzUzNzQ4IGRjYTliYzg4MzA0MDk2NThmYjc3MmE2ZDBiMzA1M2M2ZGQ0MzQ1ZDUgcDN5aworNTM3NDkgNTAzMzBkMThkMWNkNzE0MWJhZmMyYzhhOTk4MGE4YjhjYTg4M2Q3NiBwM3lrCis1Mzc1MSAxODBkNGU4OTk2ODM5MDY5ZmNhODgxOWNmOWYzY2NjNWVhMmVhM2UxIGxlZ2FjeS10cnVuaworNTM3NTIgZWMxZWJkZjU0ZWFmZDlhYmIxNDI0MThkYzY1Y2JhNGE2MmRkMzAwYSBsZWdhY3ktdHJ1bmsKKzUzNzUzIGJiZTZkZTNhOTc0NTAwNmY0MTI1YWFjMzI3MmNlYmM0MzNmM2UzZWMgcmVsZWFzZTI1LW1haW50Cis1Mzc1NCA3MjRlMGI2M2E3OWI1ZDRiMGNiMTY3YWI4Zjk2MGVjNTFlNmIzOTI4IGxlZ2FjeS10cnVuaworNTM3NTUgN2FkMjllOTllZWM4NTcyNjIwZmNmMDk4NzAzYWE1NWQ2MDRiOTc2NSByZWxlYXNlMjUtbWFpbnQKKzUzNzU3IDMyZDQ2YWJhYThhYmE0YzVlN2E5Y2E4Mjk1MjUyM2NkY2Q4MWQ5NjggbGVnYWN5LXRydW5rCis1Mzc1OSA5ZDI1M2NkMzhiNWI2NWEzZDZjNjRjNDhmOGNhZjM0NWU1NWU0MjZiIHAzeWsKKzUzNzYwIDI4YzRkOWI3NzQwZWQwMTAzODU3M2VmYWM3MDFmZTcwMTc4Y2IwNDUgYmNhbm5vbi1zYW5kYm94aW5nCis1Mzc2MSAzNWMwZDM4YWNkY2UwODAyZjNiYmQwNDdkNmMwMDNlY2MwMGMxNDg5IGJjYW5ub24tb2JqY2FwCis1Mzc2MiBkNGE2YTY3YTAwYTBiYTM1YmMyMWI5YWMzMjAzZTliMDg1ODBiMGI0IHBlcDMwMl9waGFzZTIKKzUzNzYzIDgxZDY4ZGQ4NGFhMDVjZjhkNThkZjU1YWYxNzQ2ZDgxYTk5OWZiMTQgbGVnYWN5LXRydW5rCis1Mzc2NCAxZGJhNjFjMDc3MDM0ZTE2ODdhMWZmNjE1YWMyZGI3YmFmMDg3MmVhIHJlbGVhc2UyNS1tYWludAorNTM3NjUgZGFmMDYzNTI3Yjk3MjE0Yzk1ZTI3MzI3ZGRkOTkyZWMwN2U0ZDAyZSBsZWdhY3ktdHJ1bmsKKzUzNzY2IGQ5NDk5MzNjZDZiNDZjNzJjZjdjNDAyOTE0MTJkMmM2ZWI3YWY2MTkgbGVnYWN5LXRydW5rCis1Mzc2NyBiZDI0ZDM4MjZjYzgzZGYwYzliNThjZGRmMWM3ZTJjNGM3MzI2MmY0IGxlZ2FjeS10cnVuaworNTM3NjggMTc3YTdiZWU2NGU5ZWIyZDM3NzJjZWZmODFkMTljMmM5YTlhZWRhNCByZWxlYXNlMjUtbWFpbnQKKzUzNzY5IDNiYmVjOTFjNWI4ZmU2NmVjMzRmMGY4ZjFhYjA4ODRhMTRhODkzMGUgbGVnYWN5LXRydW5rCis1Mzc3MCA4ODVhNzdmZDVjMDFjN2RiZjgzYTI5ZDVkY2JlOTlmNTk2YTA5MDcxIHJlbGVhc2UyNS1tYWludAorNTM3NzEgMzk4M2VlMGY2Zjk2NGRiYjIyOGY1ZTFiMTUyZGJhZGU5OGFjNTU5ZCBsZWdhY3ktdHJ1bmsKKzUzNzcyIGQ0NzY4YmZmNjQzZWE4MTNmNjZlYjZkNzk3MjE1ZDJiNTJhNWEyZTggbGVnYWN5LXRydW5rCis1Mzc3MyBhYmZkOTUxODVhYjk5MTkzNjk0MWRhZGM0MGRhZGY1YWQyMWY2YmI0IHAzeWsKKzUzNzc0IDkwZTIyZmVhODM2MzQ0NTY3ZGM1NWRlOGE5YThhMGRhYjdjZTgzYzkgbGVnYWN5LXRydW5rCis1Mzc3NSBkYzU2Nzg5YjI5ZTlhNjNiNGY1NzA0ZjBkODE0NTEwMzk3MWYxODljIGxlZ2FjeS10cnVuaworNTM3NzYgYTY1NDZjMjczNjlhNmM0ZjEzMGU2ZGYxMGVjNjdhMTViYmZkZjIzMyBsZWdhY3ktdHJ1bmsKKzUzNzc3IDA5NzJjMjE3NmFmOWI5YTkwZjhmY2IwZmM0ZWE1ZGI0MWIyYWRhYzUgcmVsZWFzZTI1LW1haW50Cis1Mzc3OCBhNjIxODRiMDNmMGYxNTAyZDBhYjhlN2RlZjkyYzliNjY2YmZhNjgyIGxlZ2FjeS10cnVuaworNTM3NzkgNzM0ODFlMDc3NzU4YTk0MTkzZmIwMTFmZTk2NmFjNTk3OGVlZGM5MSBwM3lrCis1Mzc4MCA1MDJkZTA3OWFiM2EyMDUyMDMzNTFhMGZmNTAyYjhkODQwOTY5NjAyIHAzeWsKKzUzNzgxIDFkNTNlYTBmYzIzZjE1ZjVkMmM2MDU3NmU5NmMzMDViYzBmYTcyNjcgcDN5aworNTM3ODIgNDhiNmQwMTUzNDBhZTY5Nzg4YjU5NjkzNGYwNDNmM2YxZjU3MjIyNyBsZWdhY3ktdHJ1bmsKKzUzNzgzIDdlNGI2MzVmMWQzMWRiYTBkN2VhZTFlMTNhYjNlODBjYzRmYTNhMjkgbGVnYWN5LXRydW5rCis1Mzc4NCA5OWIwZTA0YjJlYjFjYTAxMWY4ZmE4M2IzMmVjNDc4MTNkNWMzNmI1IHJlbGVhc2UyNS1tYWludAorNTM3ODUgMmEyNTMyODgzZDgwZmIzNzJkYjJlM2VlYThlMjdjZWU5NmQ3NzdkNiBsZWdhY3ktdHJ1bmsKKzUzNzg2IDkxNGRkNTA1OWYzOGYzMjI1NTdhODI0NDNjZTI4ZjYxZjVjZjAyYTMgcmVsZWFzZTI1LW1haW50Cis1Mzc4NyA0NzQ5NzdjZDRkOWM4NDQxNDI4YTkxNDNkMzdlYWFhMzcxNjMwNzViIGxlZ2FjeS10cnVuaworNTM3ODggMjlmYjhkYmQxMGI4NWY0YjI5Zjc5ODlkMDQ1ZDk2MzI3ZDNiNzlhZiByZWxlYXNlMjUtbWFpbnQKKzUzODAwIGJjMmJkMGYwMWQ5NWI1NDM0OTZmZmExNmM1YmJmNmE0MjU0YTU4ZTMgbGVnYWN5LXRydW5rCis1MzgwMSBiNGIzMjc4NDBmYjE1MTBlOTdjNTQwOTQwNjE0NjYxNGY1NzUzYmYwIGxlZ2FjeS10cnVuaworNTM4MDkgZjRmNjk1YTc1NjY0YWYzYmJmMmY3ODVkMDUzM2UzZDZjZGNlNWQ0YiBsZWdhY3ktdHJ1bmsKKzUzODExIGQ3OTVhNTVlOWJlNDFkNmQ5ZDUyMGQyNzNiZjY1NmRmYzBkYjI2NjkgcmVsZWFzZTI1LW1haW50Cis1MzgxMiA3MzZmM2Q5MGU0ZTI4NDg2ZjcwNzVjYzAzODM3NDA2OThkMmFkMjUzIHJlbGVhc2UyNC1tYWludAorNTM4MTYgOWUzNTY0NWFmNDBmNjgyZWNjMmY5MWY2OWU0MGNkNzFkZDU4NDQwNyByZWxlYXNlMjUtbWFpbnQKKzUzODE3IDM1YWUyODI1N2EyODA1YjRhNzFlOWViMTNiMTc4MGYzZWQxZjA4ZTAgcmVsZWFzZTI1LW1haW50Cis1MzgxOCBiMGY4ZTliMGNjMTk5MjhjY2Y5NzNhNTUyOGZmYTQzYjc3NzdmZmFjIGxlZ2FjeS10cnVuaworNTM4MTkgODFiNWRmNTc5OGMyN2E1YTRiMGM5OGUxY2VmMThlY2ZmZTVlYjg5OSByZWxlYXNlMjUtbWFpbnQKKzUzODIwIDM2ZDdiM2I2ZWU1OTZmZTgxODgxODBlODkyZTZmZWRmZjA2ZmQ0MDUgbGVnYWN5LXRydW5rCis1MzgyMSBkMzg2YjQ2MDk5M2I3M2I4NmZmZGFjYzA4MmM1MjUzZWVjNDUwNTJiIGxlZ2FjeS10cnVuaworNTM4MjIgZGYwMjA0Y2E5NzM5ZjE1NzVlZjAzYTljYmQzZDIzMGE5ZTU2Yzk2YSBsZWdhY3ktdHJ1bmsKKzUzODIzIDBjYzQ1MGI4OTgzODkxNmQxNTIzYmI0N2NlMGU0YmY4NTU2MWVmMjAgbGVnYWN5LXRydW5rCis1MzgyNCBjOWU0MTNiMWQ1NDA2YTBhOGJmN2I5NDQ2YzRmN2JkYmNiNGUzNTZhIGxlZ2FjeS10cnVuaworNTM4MjUgNTc3YmYyMWIyYzg2ZGNlMDViMDAzMTQ0Njk5YWExOGMyNzAxYjJjYyBsZWdhY3ktdHJ1bmsKKzUzODI2IDUzZmQxNDRhM2YxYWIzY2I5ZjI1ODMwMmFiNWY5OGE2YmU4NTQ2N2YgbGVnYWN5LXRydW5rCis1MzgyNyA2NzJiOTA3NTc2NDcxM2RhOGQ1NjBlNzk4ZWJhMGFiMDM3NTU5ZDhiIGxlZ2FjeS10cnVuaworNTM4MjggYzM0YmQ2NTg5ZTFlZWJjZDM5NzUzMTczNjljYzcyZDZkOWM4NzRjYiByZWxlYXNlMjUtbWFpbnQKKzUzODI5IGQ1YTE1Zjg1M2RiNzRkZTc2Y2U5MjZiNWI1MzU1ZjExYjVlZTY4YTIgbGVnYWN5LXRydW5rCis1MzgzMCAwMWQ1NGI4OGJmNTg2ZTNiOGQwYjRhNjM0OWUyMmQ2NzQ2MTUwYjliIHJlbGVhc2UyNS1tYWludAorNTM4MzcgNmZhMGQ2ODJlMWU1NTBhYTAxYjNkMzNjMWJkNzIxNmQyNTE5NjkxZiBsZWdhY3ktdHJ1bmsKKzUzODM4IDgxMjg2MTllOTg0ZGU5OGNkNjcxNDA1NGE4ZDJhNjQ3NmQ5OTU3ZTYgbGVnYWN5LXRydW5rCis1Mzg0MSA0Mzc5NzM4NDExNWU1OTg4ODFlNjExNmEwM2RiMDc3NDM0ZDc5YzFmIHAzeWsKKzUzODQzIDU1ZGViMWRhNGNiOGRlMTYzNTMxMmU0ZmRkMWZjOTUxMWVkNzc4MzggcDN5aworNTM4NDQgZTY4YjQ4YzM5ZDhhY2I1M2YzZjMxNWY4NzlmMThiYTNlMzk4MzFjMiBwM3lrCis1Mzg0NSA2MDg4M2U2MTQyOThmMzFhNmNlNjlkZjQ0NGY4OGVjNjc2MjRhNDUxIHAzeWsKKzUzODUyIDNmYmNkNmUyYmNiNzdkZGQ5Y2QwODI0ODI0YWMzYWRkOTkzYjMxYTggcDN5aworNTM4NTMgMzQyN2E5NzM0NWZjZmU3NDhjZDRjODkxYTYzOTRiYmJlOGRmMTJiMiBwM3lrCis1Mzg1NCBjMTY0YjBiNzU5NzE2MGVmNTIyNDg4MjIxM2NiZjQ0Njk3ZTc1NzVkIHAzeWsKKzUzODU1IDEyNDg5YTVkZmI0YWIwMmVmNjM3M2ZiM2RhZThhMTBkYjUxNWVjZWMgcDN5aworNTM4NTYgOTA5NzY1ZWIzODFiZGY1Yjc4NGJjYTg5Y2M1NzY5YTQwNjc5NWY5MCBwM3lrCis1Mzg1NyAyOTk4NzI0NDkwNWRmZmQ0NGJhM2U1YTA3ZjMxMmZjODk1YWNmOGQ3IHAzeWsKKzUzODU4IGM1MGUyNjMzMDFkYWJiNTFmMGE3NmNmZTE0ZDY5NDdkOGIyNWQ1MTcgcDN5aworNTM4NTkgMjBlMDhhODc5MTVhNTVhYTg1MmJmNjI2MzU2MTY1MGUwMzdkOGY0OCBwM3lrCis1Mzg2MSBmM2E1OWFjY2E1MWZmZTg3MjQwODdjNjhkNGQxNTAwODMwMzg2YWYyIGxlZ2FjeS10cnVuaworNTM4NjQgYzkzZjkyYTdkOTIwMmUyYTUyMGI4MTQ0ZjAxMjllMzUzMjUyOGYyYiBsZWdhY3ktdHJ1bmsKKzUzODY2IDMyYzQ4OTdiNWQ0NmMwMGVlZWNlZjFiYWVjN2RjMjFkMGQxYmI1YzEgcDN5aworNTM4NjcgM2JhYzQ5MjU4YTRhNTgwZjhkOTk1MDU5NGY1OGNmN2YxOTVlZWU4OSBwM3lrLW5vc2xpY2UKKzUzODcyIDBlYTI0ZjRmMjQ2N2FmYzQ5M2QxMzRmNTU4YWE0NzBjYmU4MDQ3ZTggcDN5aworNTM4NzMgYmQxNDE5ZTk0NzczZjA4YTBiZWQ2MTE0MjQwZmEzZTIzOWIxOWM0NyBwM3lrCis1Mzg3NCBiMDU3OTBkMDY2YjQ3NDRlNTJkM2M3MmQ5MjliZGYxODdjYzE2MGY0IHAzeWsKKzUzODc1IDU4M2ZlNzUzZTcyMTI5NzkxMDFiNGVlMzJlODVlMGQzZDE1MzExMDEgcDN5aworNTM4OTIgYjU4YTQzNzRhYzIxZTQ1YjFhMDYyZjBlN2ZmYzAwZDAzM2Q4NWI5OSBwM3lrCis1Mzg5NyA0MmU3OWM1OTIxMmQyMmQyNTJhMDRmODU1YjdmNzliMzJiMTQwMzY5IHAzeWsKKzUzODk4IDkzMDQ3ZWU0ODZkYTRhMDlmNGRkYTJkM2M2YTNkM2Q1MjE1MmE0NWEgcDN5aworNTM4OTkgMmU0ZGFjMDU5Y2M1NGIzYTQwZTIzN2NkY2E1OThlMzg3YTU3MzQzMyBsZWdhY3ktdHJ1bmsKKzUzOTAwIDY1Y2QxZjI4MGU2M2MwYjY2ZTBlNjg3YTAwNTc2OGY5YWFmOGViYmQgbGVnYWN5LXRydW5rCis1MzkwMSA4ODJiOWMxNDg5NWMwY2NlNWU4ZTM4MDFjOWYzYzlmZWFhNTAzNGMxIGxlZ2FjeS10cnVuaworNTM5MDIgMTkxYzQ4Y2E4YmY5YzEyNjgxOTU0MjhiODY3OGViODYyZjM1M2M5MSBsZWdhY3ktdHJ1bmsKKzUzOTA2IGU4NTQyNzE0OTVkZTEwNDRjYWY2ZGFhYTA5NTlmMjU3MzEzZDdhYjcgcDN5aworNTM5MDcgODMwODhhZDgzYTZiMGYyZGE4MzJhY2JhZDVkNjFmYTJhODc0NDMwOSByZWxlYXNlMjUtbWFpbnQKKzUzOTEwIDBjNDEwYzc4NTMxY2YzMDIzM2FhODE3NTk3NGNmZTE2ZWZkNTkzMzcgbGVnYWN5LXRydW5rCis1MzkxMSBkMDFiZDM3YmY1Y2U1MjYxODBkMGFhMzFjYTM5MmY3MzY5NzhiNDdkIGxlZ2FjeS10cnVuaworNTM5MTIgZjJmMGI0MWYyNzBkYWU0YzY5OGYyY2FmYThlNDUzMGYxZjM5ODk5ZSBwM3lrCis1MzkxMyBlYWFlZTc4NWViODZkNzhmMjQyY2Y0M2NlMTgwNGZhNmQ1Njg3YjA3IHAzeWsKKzUzOTE0IDk3Yzc3YjFlMzRiZjI0MzEyMjU0M2UyZTQxYWY4NWMwY2U3MjA3YTYgcDN5aworNTM5MTUgYThjM2FhYWIwMGVhMjMyNGE2ZjAxODA2Nzg2ZDcxZTc4ZTAyNjE2YiBwM3lrCis1MzkxNiAxOWFmYjAzMDJhMDZlYjFlNmFiYzc1NWYyNGY1M2RlMjJhN2M3NGRlIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5MTkgZDg0MmUzNWY1YTMxMGU1NDZlZTU2YTA1YmQxMDU2MWU1ZGJjYjcwZCBsZWdhY3ktdHJ1bmsKKzUzOTIwIDA3MGI5YTBiNGMwNDA0MDdmMzdiZTI5ZTRjMzk5M2ZhNWIzNmFhYTkgcmVsZWFzZTI1LW1haW50Cis1MzkyMSAxM2YzOTMxYjlmYzQ2OTI5NDJlM2VjZTYyZGQwZmI5YjY5MDY3MDk3IHJlbGVhc2UyNC1tYWludAorNTM5MjIgZjU3OTBmOTZhY2YzYzM5ZGRjYzdkMWZjMTdhZWVhMmNlNzg5NjFmOCBwM3lrCis1MzkyNiA1YmQzYTIyYmE0OTZiMWM0MDkyYzJkNDJhNDA1MGRkZjRiMTRiNTQ3IHAzeWsKKzUzOTI4IDFiOTcyYjdlMzUyYWRmMzEwNTI5MTUxMjcwZWQxOWE5ODkxYzk1ZDUgcDN5aworNTM5MjkgNDBiMTdhZmM0YWE3YmY3MWI1MDRjOTQ4NzY2ZmZlNDBiODI4OTc2OCBwM3lrCis1MzkzMCAwZDJkYzM2MTFlM2IzODI2ZmZkOTMxNTY1NDA5ZTFjMThiZGViMDBiIHAzeWsKKzUzOTMxIDYxMGM3YWNjOTk4MjhlNjJlMWZkMzdmYjBmNjdiODZlNDUxMmE5M2YgcDN5aworNTM5MzIgYmU0MWRhNjZjZTM3ZjY0MWY1YjY1NmRmYTllOWY1MmI2OWI1ZjVjMSBwM3lrCis1MzkzMyAyNWE4NDkwMGUyMDU1YzE0Yzc2NjBlNGNlNjM1YjU2NDg3NDVmZjExIHAzeWsKKzUzOTM0IDAzODgzYWNiNjUwYjgwOGM2OWRmNDYxOTI3ZmRhY2QzNTBkMTdkY2UgcDN5aworNTM5MzUgNjIxNDQzZmMwMWJiYTE1NTlkMDhiY2JiYjRmYzU2MmMyNjNiYjc1OSBsZWdhY3ktdHJ1bmsKKzUzOTM2IDlkMWIwYzI5NWViYmMwZmMxNzhjNjJjNDFlOWY2MWIxMzBkMzVjNDggcmVsZWFzZTI1LW1haW50Cis1MzkzNyA5M2Y1ODI4MDM3MzMwNGRlMjE5YzhhMDVjNjZmZTM5MTBiNGI5ODg2IHAzeWsKKzUzOTM4IDdiYzdmNzQwZjY5ZmRjOWY5MmZkNTQ4ODIwN2EwZjNiMzAzZmExNDkgcDN5aworNTM5MzkgYzM0NTFhNzdiZmQxNjRkZjVkZmNkODM3MGQ1MDk4N2Q4OTkzZmQwMiBwM3lrCis1Mzk0MiA5MGM4MDdlZTg3NjdiMWJiNjUwODFiNmJhY2JiZDI2NDkxN2Q1NmFiIHAzeWsKKzUzOTQzIGVjZThhMzlmYTI4MmVkYzYyZTE0ZmI3NjljYjEzODNiNmZkNzQ4ZmQgbGVnYWN5LXRydW5rCis1Mzk0NSA1NWQ3ZThmYTVlYThkNGZhOGU3MTcwNzMwZGY1NTZhYmQ3ZDFkN2EyIHAzeWsKKzUzOTQ2IGEyNjI5YmUxYjFkMDE1OTkyNzE5MmEzY2FkZTUxNWRkZTUyMTg2OWEgcDN5aworNTM5NDcgODliYTkzYzcwMWM4ODQ3Mzk2ZDgyZjk2NWM2NzVjYWQ1YWI1ZWQ5OSBsZWdhY3ktdHJ1bmsKKzUzOTQ5IDQ1YWZmYWU0NjVlNDExOTI5MTgxNDJmZWZmNzQ2ZjIwNGY1MWZmZTMgbGVnYWN5LXRydW5rCis1Mzk1MSAwMzc2ZjEzYTFhZjkxMzA3MDQyZGM0YTViMmY1ODdhM2VkOWJiMmQzIGxlZ2FjeS10cnVuaworNTM5NTIgNmFhMWJlNWRkMDA5OGIzNTcxZjM1YmE3MjM5OTcyODI0ZTI3ZDFkZiBwM3lrCis1Mzk1MyAyYzAzZDcwNjgzNWU0NjBiYmRjODg4MTFjNTQwZjkxMDc4MzRiMDAyIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NTQgMDQ3ZWUyM2MwZjg3OGU5MzNlYzI4NDgyMWFiZmZkOTczYTRkOTQxMyBsZWdhY3ktdHJ1bmsKKzUzOTU1IGM4YzA2NzMwMjY1OTliY2Q2NDBlZmFhOTUzNmQ0ZDI5MzZkNjk5ZTAgbGVnYWN5LXRydW5rCis1Mzk1NiAxODUzY2YwNmUzNmJhMzEyYWJkMTIzZThjMmQxNjk4OThiNDc3ZDI4IHAzeWsKKzUzOTU3IDJjYTE0ZDZhMzY5YjcyNWIxM2Q0OWIwYWUzNzdiMzNiMjUzNDI2ZGIgcDN5aworNTM5NTggODY0NzE5MGRiOTZjZDFhYThiNDNiMjY0ZjMxYjU4YmQ4YmMwNDJlMyB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTU5IGZjMjNmYzg2MzliYWYwMGRlNTFiNDQ2NTE3ZmVlOTZhMjQxZDcxMDIgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk2MCA0YjlkMGRhYzc5Y2NjMDliYzFmN2I0NjIxMmM3MDJmMTQwMDQzNWMzIHAzeWsKKzUzOTYxIGM3OWU2MjM0ZmIxOWVmNmEzNGNlYTVhMjU5Y2QwZGQ2YmY2YjM0YTAgcDN5aworNTM5NjIgYmI3M2QzYTA0NTdlOTc3ZDg0ODk2MGJkZWVjMmU3OTU4Y2VlNjYyNyBwM3lrCis1Mzk2MyA3ZjcwNzRkNGY4MmNmNzBjYTFkNzA5OGQzY2QyMzg2Nzk0Zjk2ZjU0IHAzeWsKKzUzOTY0IGQ5NzZjOWE2MzExMTRhOGZhYjFiMGY1MTEzM2JiNGNhMTIwODJkNDkgcDN5aworNTM5NjUgYjA4MjZlOGU0NWM3OGVmNTQ4OGJmOGE0OGI5Y2VjODc3MzYxOWJlOCBwM3lrCis1Mzk2NiAzMDkzZWE5YjQwMjQ5NzI4MTlkYzA3NzQyZWMwMDNkYmMwNjhhYmU1IHAzeWsKKzUzOTY3IGU3NTlmZDhkOTVhZTdiY2NjNDYyNTllMWUwNGQxYTVhZmQ4NDM2NGIgcDN5aworNTM5NjggMWU0ZTI5MjQ4NmI2ODg4OTg2MmE4MDQ3YzgwMTA5NjQwMTBiZGIzOCB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTY5IGYzZjBjNjk3YWE1YjE2MzJlZDJlMGM0YWYzZGQ5MGRlMjNlMzM4YzkgbGVnYWN5LXRydW5rCis1Mzk3MCBlZTM2MDJjN2FlMDQxNDc0YThjNzVkYWQwNGRjYmQzZGZkYTA1MDllIGxlZ2FjeS10cnVuaworNTM5NzEgNDMwODExYmRiZmVmNjZiYzlhODVlYzk0Y2NiN2FiNjk5ODlhYWNkZSByZWxlYXNlMjUtbWFpbnQKKzUzOTcyIDk0YzRlMzZjMzEyNDJiODllMDI2MDE1MGIxMmFlYjJjMWZkMTIxMjUgcDN5aworNTM5NzMgZGE3M2I1YTBmZDkwYWJhMzJjNGNiMWQwOTM0ZGQwNGEzZDcyOGQ4OSBwM3lrCis1Mzk3NCAyY2UyMjlhN2JhM2Y2OWVjNTQ3ZTc5ZGM0MGE1YjJkNTdmNThmNDA2IHJlbGVhc2UyNS1tYWludAorNTM5NzUgYzgzYWNmYjFhNjMyZjc5NDZmMzQ2ZTcyMmY3MGRlNzkxZjNjMjM0NiBsZWdhY3ktdHJ1bmsKKzUzOTc2IGZlZGIwM2VhYzZhZDZkMTEwNDUwNDhkMjg5NmIxZTdlYjBhZjc0MmUgbGVnYWN5LXRydW5rCis1Mzk3NyBhYTE5NWExYWE5NTUyOGI4ODUzMjJkZmZhYmI0YmUzMDQxOGEzNzExIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NzggZTVlOTgzN2RhNzBiNzg2MDBhODBhNTJlNzcyNmZjMjM5MjRlNzFmZiBwM3lrCis1Mzk3OSAwZWE1MjU1OGJkZmVjMjlhZjljZDljOThlMGMwNWRiMmJkMjVhMDIyIHAzeWsKKzUzOTgxIDU0MWE4YjFiNWRhNzVkOWFmNTQ5NDM0NzA0YjFhYjU2M2I3MjA3NzIgbGVnYWN5LXRydW5rCis1Mzk4MiBlNjZkZGI2ZTM0ZTg0NDY3NzY1YTc2ZGU3Y2NlM2NlYjMzNDlkNjRjIHAzeWsKKzUzOTgzIDQxNjI5MmM4MjQ5Y2U4YzkwODBjNTQxMTFmYTc4ODQ3MDVmYWVjODUgcDN5aworNTM5ODQgYzI0ZTk1ZDExNzUyMDFiNTc0NzA0MTVhYmMzYjBlMmEwY2I0N2FhZCBwM3lrCis1Mzk4NSBkNTU0NmYwOWYyMGU3NjM4Yjc1ODI0OGU1ZDU0ZjFiODc2ZTJhYWQyIHAzeWsKKzUzOTg2IDMwZTVjYjNhNTVhYzMxNDdkOWU5MmVhMzg4ZjRmNzk0NTYxNmU3NjcgcDN5aworNTM5ODcgMTQwZjM1MjQwMjdmMGUwYjVhNzBjZTJmZjE1OTRmMzFiYTI0NmM4ZCBwM3lrCis1Mzk4OSBhOWU2YzczZTBmYTViMjEzMmMxNTMxYzMxYWFlZjRjZmZlNGQ1MjZiIHAzeWsKKzUzOTkwIDJkOWQxMDcwMmVjNDRlMmZlNGNmODE0OWM2YzZmMjVhNDM0ZWRjMjIgcDN5aworNTM5OTEgNmMwZDBiZTgyYjQ3YmFmMjlhNTgxMTg0MWM1OGM4ODI3MjlhYmRlZiBwM3lrCis1Mzk5MiAxMTc3N2M4ODdmN2NlMDBlNGJkN2NlYWVjNjEzNjlmZjhiOTdlNDU1IHAzeWsKKzUzOTkzIGEyYzllYjlhYjYwOTY3NGI0NTJmM2RiYjQ5OTkxYjI2NzVjMzYxNmQgbGVnYWN5LXRydW5rCis1Mzk5NCAwYjQ3NDQ2Y2M0MDg0YTAzODBkYjk2NzcxOGU0N2Y3MWRlNDM1OGUzIGxlZ2FjeS10cnVuaworNTM5OTUgNDZmNzcxZTI2N2JjODE1ODI4YjZlZDA2ZTAyM2NkNWMzZDRkY2FhMiBwM3lrCis1Mzk5NiAzY2FiYmZhNDM5ODQwOTNiMTNkN2NjNGIzZGY5NDg5OGM1MTFlNzVhIGxlZ2FjeS10cnVuaworNTM5OTcgZDYyODA1YTk5M2M1MDg4MTk4MmZmNTFlZDAxNmU0MWI2OWFjNTZkYyBsZWdhY3ktdHJ1bmsKKzUzOTk4IDVlYWQzMjEzMGY2NDZlOGIyZTZhZmNlMGQ5N2IzMjM1ZDc2MTAxYWUgbGVnYWN5LXRydW5rCis1Mzk5OSA0YTRmNmYwMjZmMWM1OGY0OTlhYWNhODI2NmVjZjExNzJiMmNlMTc1IHAzeWsKKzU0MDAwIDYxZmVlMTg1M2NhODhmMzgyMGJmN2EzYzYzZmJmNDVhNzI1NjFkMmIgcDN5aworNTQwMDEgODBlODYxZTdmYWJlODg4NTg2ZWNkYTI3ZjY4YzQ5OWNjNGY2Y2UzOCBwM3lrCis1NDAwMiBjM2IyOGJhOTE4ZjgzZWJmZjJlNGNlODExNjU0ZGE3ZDRiM2YyMzE3IHAzeWsKKzU0MDAzIDFmNzkwZGE3OTg0MDlkOTFjZTg5Y2JkMGIwZDdlZmVmNDc2OWE4YjQgcDN5aworNTQwMDQgNDMxYjMyMzg1OTNlYWNiYWM2NWE1OWYxNGNjYjRkOTllYjgxNTc2ZiBwM3lrCis1NDAwOCA3NjI5NjRmOTk4NzEwNDdiZjAyMzkxOTRjYTcyNTRkMWQzMmQ0NmE1IHAzeWsKKzU0MDA5IGMwMzQ0NzBlM2MwYWViOTE2NDc0MTM3MmE1NzBkOWViMTRjMDc3NDIgcDN5aworNTQwMTAgOGJlYjc1NDAyZTc0YmY1NTQ3ZDRmZjQ5N2I3YjhkYTAwY2Y4ZDgzOSBwM3lrCis1NDAxMSA5MzAzMWU3MTY1YWIwMTI5ZmJiZDhhMTA5ZjZiZWFiMDM0ZThmNGQ1IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDEyIGJhOTJlOWFkZTM2ZjExNzhhZDQ1NjQ3NTY4MzM4NzU1YjZiMzEzYzMgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTMgNmQ5MWU3NGZjZjU1ZTUyMDg2ZDhhZTNmZjRiMmMxODI1MTA5MmJiMSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxNSAzNGE3YzI5ZTY1ZDE2MmFmMWE3MDg1MDEwOGViNzRjYzA2NWRiOTk4IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE2IGUxMDNiOTM3ZDc0NzUxMGU0ZWUzMTIwZWFmYTNjZDRkZTg5NjIzMTMgbGVnYWN5LXRydW5rCis1NDAxNyBhMWFlZTgxMGI3Mzk2ODYwNjBkZmYwZGVlMjcxYjJmOTM0YTBjNGYwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE4IDk1MzNlYjBlODdjZmZjYmY1MmYyY2M2ZjEwYzJiZmViZDM0YTg3NGQgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTkgZjI1MjQ2ODA1ODUwN2VjN2Q5NDRkOTg0MzY4MTgzMDViYmVkMDg5NiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyMCBiZDM1OTBiOGM3OGVlNTkxZTA0MWVjNWViMzYzY2RjZTI3MjMwOTcwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDIyIDlkZDg2ZWFkNTFjMzc3NmNkNmE0YWExYmM2NGIxN2JhZjAxYmQ2NzkgbGVnYWN5LXRydW5rCis1NDAyMyAxNjU0NjFhZDM4ZGI4ZTA1ZTE4MTUyYmFmYjkwNWU5MGUwN2MxNWIwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI0IDgzYjhjNzBlZmQxZTVmMWJlYTU4MzQyNzI2YWM1YzhkYjcyNGY0YmQgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjUgOWViNjBhMDcyODVhNDdlZDM0NzI2Yjg3YTNiYjZlMWU3ZjM3NDEwMiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyNiBhOGM3OWIxZTY5NmFlN2VkMzJiMTg1NDViM2UzMjUwMDdiMWJlMzRmIGxlZ2FjeS10cnVuaworNTQwMjcgMTY1YmJlZDMzNzlkNmQzZjQ1YmUxZWRmMmFlMTJmNTg0NzI4NjEwZiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyOCAyYzZjZDk4ZGIwYjhmM2UzZTc3YzM2YzA5ZDdmMjI2OWI2MzdkNzhhIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI5IGIzNWNmZDhiNDkxMDYxNGQyYmRkNzAwMTNlZTA4MmJjOWU1MTUyZmIgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzAgYWMwZWJhZTQ1ODcyMjJkY2EyMWRkMTQ3N2VhZjRjOTQ2YTY1NzkzYiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzMSA0YzU2ZmNlZmIyODNiN2Y2YmE0NWI0ZTVhZmUzOTNjYjNiMDM5YWJiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDMzIDQwODdjMGVjNzMzYmJhNTRlODAxMzcyN2VkNjRmMTczYjlhNjE3NWYgbGVnYWN5LXRydW5rCis1NDAzNCAwMWRkZWNiNzc4MTU0MjYzODM0ZTliMDBiMWNkYTJhZDY0MDkwZTVlIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM1IGU0NzZhNWE3OGIyOTM3ZTc2NzIxMjJmMDFhYjY2NDU1ZGIwYTkzY2YgcDN5aworNTQwMzYgNTZkNTFmNTk0ODY1M2RhMmExZTk5NzllZmM0YjExZTJmNmRhZDFmOCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzNyA3ZDdmMzIyZjJjYjY3ODcyOTBiZjY3MzU4M2Y3ODkzMTVjNzJmNDU5IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM4IGUyMjA4ZDRmNWE3ZmM5Yjg2YjM1NTZkNTNiY2M4NzAyMjY5NGYxYjAgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzkgNzQ3MmY3YjdkOTAzNDQ2MTYyYjFhNmIxZWQzZDIxMTZlYzg0NWZjZSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MCAxZGNlMjUwMjU2NzkyMWIyNTJjOTMwMDRmM2NkMjg1ZWU1Y2UxZThiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQxIGJkYjUyNzI4YjAyZWY0YWI3MmQ4OTcwZjQ4MzQ1YzVmYzczYjlkZmMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDIgNDU1NTk2MWM1YTJmOTZhYTkzZTgyYjk3YTQ0OWIzNjJkY2Y1OTQ4ZCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MyBlMTYyNjhjMjczYmIyNjY0YzYwOTllZWM1MDJiZmI1YTRhNTYwOWViIHAzeWsKKzU0MDQ0IDRhZTA0OTBlMWEwYzBmMzQ5ZjY3ODFjMDY0NWUyMjlkNDZiMTFjNzUgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDUgZGUyYzlmOWFlYTFlZTc2ZDU5ZDNlMGU1MmI3ZWYzYmNmM2FhYTc5MSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0NiA2OWNhNjU3YTY0ZTdlZGJmMDVlYjJjMzQ5MGNkZmE1NWQyNGExODc3IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ3IDRjMWUyYzMzZmFjZDA4Y2VlYjY3MGVjOGM0MzVjNzhiNzc3Y2QxZTMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDggMGMxNGI2NmFjYTcwMmI0ZDFmOWZlYWRmYzNhNjIyNjcwNWNiNjRmNSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0OSBlZTQ2MjE3Yzg3YWY3YTg3MzgxOWFhM2RjYzczMzEyNGY5NjU5ODUzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUwIDI3YTIxODZmNDVjYjRiMjM3MTYzZTZlNzViMjhkOTRhZTYwMWQzMWUgcDN5a19ub19hcmdzX29uX2V4YworNTQwNTEgOTE4NWM3MGExNTg1ZTlhNmZjMGMyZGZkZWY3NjU4MTk2NmVhZDkwMyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MiBkOWIxNTM0ZWM3OWZlNzUwNDNjMDA4MTk2NTFhNDk1MjcxOTJjOGM4IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUzIGI0NmM2ZDI3NjI1ZTNlNmMwMzk2OWMzNmI2NDkyNTVkMDI0N2YyODYgbGVnYWN5LXRydW5rCis1NDA1NCA1MmU0NTMwNzczYzk3MDFhMDZjMTFlMTE1NzdlZGU5YmIxZGYyNjBkIGxlZ2FjeS10cnVuaworNTQwNjAgYmU0NGJmMmRiMzUwZTRhYTJjNDI1NjkxMWYzMDIxNjM1NWVlZTEwZSByZWxlYXNlMjUtbWFpbnQKKzU0MDYxIDg4ODg0ZTdiYWM2ZGMyYTI4ZmE4OGIwODYxNGFjN2U2MDYyMzI0MjMgbGVnYWN5LXRydW5rCis1NDA2MiA1MmU5NWZiMDg5MDE3ZGFiODlmNzYwYzVjNTFhMWFkYzljZTU0NTg2IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDY1IDMyYTRlNWVlMmQ5OGMxNDU3OWJkNTFmNTJlODZhYWEwMzVjOTgyMzYgcDN5a19ub19hcmdzX29uX2V4YworNTQwODAgMWM1ODYxMWM1MWQwY2E2ZmE1OTgyYjVhMTI4OGNhY2ZhZDA3MzA2NyBsZWdhY3ktdHJ1bmsKKzU0MDg1IGJlNjhkYTU2MWRjZDY3ODcwZjk2NWIxNjRjOWIyN2I2N2MyNWZlMWEgcmVsZWFzZTI1LW1haW50Cis1NDA4NiA0ZTM0ODE5NjFmYmJjMmVjZTE2NTAyNWNiY2MwODliMjE2MTEwZWRjIGxlZ2FjeS10cnVuaworNTQwODggNjhhNDg3ZDIxYzA2OWE3NWMzM2VjODZjNWZjNmYzOTAyZDU3NzdhYiBsZWdhY3ktdHJ1bmsKKzU0MDg5IDMyNGE3MWExMDNlYzJkZmVjY2QzYTUwOTllODA5ZWMyMmRkZTZkOTQgcmVsZWFzZTI1LW1haW50Cis1NDExNCAyZjJiODkzNWE4MWUyNjIwMjZiYTFmNTJiZjFkZTg0ZDhlYTYwNmRkIGxlZ2FjeS10cnVuaworNTQxMTUgNmRlZjgyYjhjZjIwYWEyMjNiYTdhNWVhYTk5YzRjODk5ZDRlYzFkMyByZWxlYXNlMjUtbWFpbnQKKzU0MTI0IGZlOWE5ZDM5YTM1MTdmZWY1ODkyNDNlNzlmYWU1N2U5NzAxNjgyNTQgbGVnYWN5LXRydW5rCis1NDEyNSAzYjFlZmNlMzU4YTM2MDEyNzMwZWRjMTZiOGRmYmZkNDg3MDFkMTBkIGxlZ2FjeS10cnVuaworNTQxMzYgMzcyMDcwYmE2ZmQzMWY0ZTM4OWE5MGNjYjNjYjA2MmZkODE3YzdmOCBsZWdhY3ktdHJ1bmsKKzU0MTM4IGUxYjAwMGJlZDQ2MmYzOGJkZDBmMDdjZWExNzVmNTM3MjZjZGRhZDEgbGVnYWN5LXRydW5rCis1NDEzOSA2ZDM0NTRjMzcxZGQ0M2FjOWYzMWI0YTMzNmYxNDQyZDQ2ZGJmOTQ4IGxlZ2FjeS10cnVuaworNTQxNDAgODkxYzI4ZDUzNTY5NjliMDQ5MjVhYWE2ZjQ1YmU2MWE4NTYyZWM2YiByZWxlYXNlMjUtbWFpbnQKKzU0MTQ5IDA4MWI0ZThiNmY1YjgyMTY1YzMwNWUyN2Q3ZGIyMzhjYzE2ODFjMjggbGVnYWN5LXRydW5rCis1NDE1MCA2MDU4NTUzMGYzMGI4YmNkYTA1NWE3MGExNmUwM2Q2MDFjNjUxNjdmIGxlZ2FjeS10cnVuaworNTQxNTEgZTQyMjgwMjIwMmJlMGEyMDVlMDUwYjM0Mjk4NDEwOTMyYmIzMDJlYyByZWxlYXNlMjUtbWFpbnQKKzU0MTUyIGYxZTg4YzM1MDJkOWYxYWFmODBjNDVjZmU5Njg4ZmE2YjhhYmE2N2EgbGVnYWN5LXRydW5rCis1NDE1NCA0ODI1NDczOTE1OWZmYWViYjY4MmRmYmNhYjE4ZDMwNGMxNWVlMTdkIGxlZ2FjeS10cnVuaworNTQxNTUgMzNiNDNkZWJiOTdlZTc2NzdiNjYzNmVkNWYxMGQ2YWQwNGU3NTA1NiByZWxlYXNlMjUtbWFpbnQKKzU0MTU2IDVjMTk2YWE2ZWNmNDhkYjljZDllMzVkYzhmZWYyYjAzOGI0ZTgxMzQgbGVnYWN5LXRydW5rCis1NDE1NyBiNmRjYjc3ODMzODU3ZDk5YTk0NmY1Y2MzZmQ3NjUwZGQ0MzY5NzE5IHJlbGVhc2UyNS1tYWludAorNTQxNTggMTA4MGRlNDljODFlOGRmNTY0YzhhMDQ3OGJmNjA0OTFkNzU0MTIzMCByZWxlYXNlMjUtbWFpbnQKKzU0MTU5IDVjMDhlNjQ2MGRjNTU0Zjg4MjE5ZWIxNGQ1Y2M1OGQ5ZGEyOWIyM2YgbGVnYWN5LXRydW5rCis1NDE2MCBiMGYyNmE3ODEzYzkwOTZmNDlkNjRkZWI1MzNkMmQ4OWQzNzU5NjFmIGxlZ2FjeS10cnVuaworNTQxNjEgZjgzZTU4MjJlNjcyNmJlOTg5MDY3OTQxZTA3YjgwZjlkN2IyZDM4ZCByZWxlYXNlMjUtbWFpbnQKKzU0MTYyIDA5ZDA4ZmNiOGY3YjlkMjIyODQ5ZmM3NzBjOWVkNzY2NmQ0ZjYyMmYgbGVnYWN5LXRydW5rCis1NDE2MyAyZWUzNjZhMmQyYjg5MWY3YmZiNzlmNmYzNjczY2EwYWFiNmNlNWE5IHJlbGVhc2UyNS1tYWludAorNTQxNjQgNGU4MzVkZjJiNGJhODhjYjlhZDE4NWM4OWM1YWY5YTk1YjQ1MTE5YyBsZWdhY3ktdHJ1bmsKKzU0MTY1IDk2M2MwZTQ0MjgzMjExNGJhZmViN2IyMWI2MjIyMDI2NGQ2MmUwMmMgbGVnYWN5LXRydW5rCis1NDE2NiAwNjk5MmU2YjIwNWE0NDk2MTRlNmQ4ZjRiMjVjZTgzNGE4NDA0Y2MwIGxlZ2FjeS10cnVuaworNTQxNjcgM2NmZGI4MGJjNjhlODc0Y2U2YWMzODJhNDU4YTZiYjU3NGUyMTJiMSBsZWdhY3ktdHJ1bmsKKzU0MTY4IDFlYTE5Zjc0NTA0Y2JjNjBhMTI0OWVlYzRjNjM2MzYyNmRjZDM0YzggcmVsZWFzZTI1LW1haW50Cis1NDE2OSBkNDU3NzIxNTUzOWRkZDM3NDE5MGU5YjU2MTE1MGZhNzU0NjYxMDAzIGxlZ2FjeS10cnVuaworNTQxNzAgYTZhMDk1YmY2NDU4NWQwMTQyZjQ4NTI2MmI3MzYzYTMwNzE2N2Y1NCBsZWdhY3ktdHJ1bmsKKzU0MTcxIDY3Y2MwZTk1ZThhNTc4ZmIwYTQ2ZWMyYjYzYTY1ZmY5NWM5ZmFmNTkgbGVnYWN5LXRydW5rCis1NDE3MiA0MWVkOTRiZTZkNWNhYTBmYjE5YjRmY2JlNWUwYzJkNTMxYTE0OGQxIHJlbGVhc2UyNS1tYWludAorNTQxNzMgNmE1OTlhZWU3Y2E0MGExMjYxMDI4MGMyZWIyNTNmMDQzZDExYTMyZCBsZWdhY3ktdHJ1bmsKKzU0MTc0IDYxNGJjZDM3YzZmM2E0ZWZkMmU1NDUxNDQ5MGIzOGMxZWYwOTI0YzIgcmVsZWFzZTI1LW1haW50Cis1NDE3NSA2Y2QzNjZlNmJlZWNjNThmYmUzODJmZDM4MTcyOWM0MzY3ZjY3ZjU0IGxlZ2FjeS10cnVuaworNTQxNzYgZTY2Y2ZjNzI1ZThkYjBlMTBlMWI5MmQxNjllZjJhZmIwMjQ0MThiMyByZWxlYXNlMjUtbWFpbnQKKzU0MTc3IDZkOGRjYWQxMmZkOWJmYjg0YzBlMmU1ZWQ5NTZmYmVhMjM1NDRjM2MgbGVnYWN5LXRydW5rCis1NDE3OCA4MjgwYjdjNDA1NTc2MDIyOGQ5M2IyNzJhMjc3ODdjZGIwMGE5MzhlIHJlbGVhc2UyNS1tYWludAorNTQxNzkgZWZhMGE3NjE5MThjMjhjNzJmNTYwMjA3YThhOWEyZjY2MzJkYzdjYSBwM3lrCis1NDE4MCAzYWMyNGMwMTEwZTk2ZjhhNTFkMjQyNTIxMjdiZTI5Y2E1MDRkNTU0IGxlZ2FjeS10cnVuaworNTQxODEgMWMxNGIyM2I5YzFiY2Y2OTcxZWJkMDRhOGE3MGU4NmVlMGJjYWRkMSByZWxlYXNlMjUtbWFpbnQKKzU0MTgyIDc1N2U5M2E0MDk2YzUyNGJhOWUzODg4NTFiNWU2ZTAxYTlmZTA2OTcgbGVnYWN5LXRydW5rCis1NDE4MyAxNmMyMTVlNDNiYWQwYTNmNDFlMmRhMDE2OWI2ZDdiZjI3ZGIzYmE0IHJlbGVhc2UyNS1tYWludAorNTQxODggNzI4YzYwZTg1ZWZhNTk0ZmNkM2IwMTU0NGExOTI0YmQ2ODQ3MjcyZCBsZWdhY3ktdHJ1bmsKKzU0MTg5IGM4ZWQ0YWVhNmM1ODMzMGQ5NmE3NjQ5NWEwZWU0MGFlMGE3MjE4MDAgbGVnYWN5LXRydW5rCis1NDE5MCAyMTIzM2MyZTVkMDkzOTk0MDc0ZGM4YWI3OGZmNzRhMmZlMzUyODBmIHAzeWsKKzU0MTkyIGY0NzliOWM3NGI3ODE5OTc5MWQ2NTc3MDY1NzY1MGI1MzczNzAyNGEgbGVnYWN5LXRydW5rCis1NDE5NCAxMjlmZmZmMmNlNmRjNDVmMzUyMDZlZjEzZmU1YTJlNGQ0MGYwZGQwIHAzeWsKKzU0MTk1IDI0MmRlMTZhNmQ0NDJjMGQ1Njc1OTAyNWY2YzM3MDYxMjU4OGRhZWUgbGVnYWN5LXRydW5rCis1NDE5NiAxYTBjOTA3OTI4YjQwMTM0M2I2NzE2NTYyYWZjNDNmNzdjNjJhYzI4IHJlbGVhc2UyNS1tYWludAorNTQxOTcgODUwYzMyZGIyN2U2NDQwNjU2ZjI4ZmEyMzQxZGM5ZTBkMDdjZjMzMCBsZWdhY3ktdHJ1bmsKKzU0MTk4IGUxOTYyYWIxMmZjZTlhYmE4OTQ1ZmE3M2U2Zjk3M2FjNGMzZDlkOWQgcmVsZWFzZTI1LW1haW50Cis1NDE5OSA3ZGEyM2JmODk0OWZjNGE4ZWI4ODkxNWJmYmUyYTEwZDY2NGRjMGMyIGxlZ2FjeS10cnVuaworNTQyMDAgODFlNDg2YjMwMDc4ODVjMDU3MTk0NTFlMzI2YWExZGUxM2ZlZDBjOSByZWxlYXNlMjUtbWFpbnQKKzU0MjAxIGIwOTJiMmM4M2FiN2U4NTk2N2IzM2Y3NmEzNWY1MDQxMzQ1ZGRjNTQgbGVnYWN5LXRydW5rCis1NDIwMiA1MTAyMzM2Y2EzNDM1NDRjZDY1Y2YyNWUzNTc5N2Y0ZmRhYTJjMDVjIGxlZ2FjeS10cnVuaworNTQyMDMgNDIzYjM2NDg0M2NkYzFjYWUwMDI1Y2Y4ODlmMGM4MjkxNGFhZTlhNyByZWxlYXNlMjUtbWFpbnQKKzU0MjA0IDk4YmJjOTNiZDU1YmEwYTY0OWY0YjdjMDZiODFhNzc3OGJkMzE5NjUgbGVnYWN5LXRydW5rCis1NDIwNiAzYjUzOGFjZjc2OTRlMTMxOGJjYWY2NDE5YWY0YTExMDJjNjEzOWJjIGxlZ2FjeS10cnVuaworNTQyMDcgNDZjZmFiYjdkNTQ0NjNlNjllMmRhM2ZhYjZjNzU1NWFiMTE4NTFjNSBsZWdhY3ktdHJ1bmsKKzU0MjA4IGU0MmM2M2Q3YzIzMGE4ODBkN2E2NzkyN2RjZDQ4OWYzNTQxNzQ1OWEgcmVsZWFzZTI1LW1haW50Cis1NDIwOSBiYWFiZWY2YzAwZDY4ZTI3Njc1NmFkOGMyOGQ1MDRkNmRlNGQ5NzYyIGxlZ2FjeS10cnVuaworNTQyMTEgYmZkYmQzZWMyN2Q4NWE1ZWY0MzRiNDQ2NmZlNGFkMTM4NTQwNmFjMyByZWxlYXNlMjUtbWFpbnQKKzU0MjEzIDRhMGUyMjhjMzZlNTdmNzIyMTM0N2ViZTMzNDVjYTQzMjVjMDY3NWUgcDN5aworNTQyMTQgNmUxY2Y0ZDI4YWYzNGViNTJkNWM4YjRiNGMwNzVjOTBkZDc4YThlMCBwM3lrCis1NDIxNSAxNTcyNjBlZjY3N2NhZDRjZDRlZTYxMGM5NDY3OGViYjhmYTRhMWY2IHAzeWsKKzU0MjE2IDYzYWYzN2MyZDBjMGVkMjg5YmE4NWViZjIwZWI2OGZlM2I5MDBhMDYgcDN5aworNTQyMTkgOTE4ZWRhYmFhYTg0ZTYyNWI4Mzk5MDU4NjM5ZTBjZGQ1OTQwMWQ1YiBsZWdhY3ktdHJ1bmsKKzU0MjIwIGMxYTk3YjA4MjEzYTlkYjUzNGNmNDkxMmViMDJiOGQzNmY4ZGRjNTUgbGVnYWN5LXRydW5rCis1NDIyMSAzMmFmOTU4OGExODJlZjQ0OGMwOTg5NTQ4ZGY3MTUyYTY1OTMwZTQ4IHJlbGVhc2UyNS1tYWludAorNTQyMjIgOGFhN2NiNTFkMzU4NGY4ZjkzYjJmOWNiMTQ4YjM2YWRhYTViOWQ1YSBsZWdhY3ktdHJ1bmsKKzU0MjIzIDJmNWQ4NGRjYjY1NTdkYWQzNWZkN2E5YTI5ZDUwN2NkMTM3ZjgxZWMgcmVsZWFzZTI1LW1haW50Cis1NDIyNCBkOTQ4YTJjMGZjZmRkZDk1MTIwOGYwYzA1NjQzODEwOTRhY2I4YzY2IHJlbGVhc2UyNS1tYWludAorNTQyMjUgNTU2NTllNjQyNzdiZTZjZDQwNjQ0OTA2ZDBhOGFlNGFhOTAyZDliZCBsZWdhY3ktdHJ1bmsKKzU0MjI2IDliNTZlYWQzNTMyY2Q3OGU5YzY2MmUxOWFlMTQ5NzhlMGRlYTQwNTggcDN5aworNTQyMjcgMGJiOTY5ZjE1MTE4YTM4ODBlYzFiZTc5YmMzMjgwYjAwNzQ2NjBkYSBsZWdhY3ktdHJ1bmsKKzU0MjI4IDgzNDAwZGY5NzM3OWFlMmY1NTU3MzhlY2UwYjllYzQxNzY2M2ZmMWYgcmVsZWFzZTI1LW1haW50Cis1NDIyOSBhN2M4YTRkMWI5NDA3ZDI5YjA1ODBjODQ5MDA2ODU0NWVmZDlkMjNjIHJlbGVhc2UyNS1tYWludAorNTQyMzAgZjJiYTgxMmY3MjAwNzYwYjY1YmZmNzViMzFkYjAwM2Q3NGI1YzhkMSBsZWdhY3ktdHJ1bmsKKzU0MjMxIDNiZTIxNzViYmIwMDA3NGQyNDNjODRiZjljOWRjZjU2ZjY5YTliMTcgcDN5aworNTQyMzIgZmYwYzQ2ZmIxOTVhMzU2YTkyZjJkMmRjNjQ0OWMzMjFlYjcwZTBjOCBsZWdhY3ktdHJ1bmsKKzU0MjMzIGJlMWUyZjc0NTY2OWRjMDk1Yzc1NTRjNTM2ZWJiN2ZjMTE0ZTNhNDYgbGVnYWN5LXRydW5rCis1NDIzNCA5Y2ZjOWNiYTY3NjhiMTZmZDZkNTJmOTM5YTkzMDQ0NGMyMzVkYzczIGxlZ2FjeS10cnVuaworNTQyMzUgMWEwZjZhMTI4NzRjMmFhYzMzZjcwNjQ1YzNkOTA2ZmRjMjNiZDk5NSBsZWdhY3ktdHJ1bmsKKzU0MjM2IGU4MzEwODU1ZmNjN2E2NzQ0ZDgxNTAwMDU3Yzk3MjVkYjdmYmQxNjEgcmVsZWFzZTI1LW1haW50Cis1NDIzNyBmNzU0NTdkNzUzMmNlMGNlN2I3ZDU3ZDQ3MDNkOWFjMzQ1NzFmOTdjIGxlZ2FjeS10cnVuaworNTQyMzggN2Y2ZDUzOTBhMTFhYjJkZDc1YTJmODM2YjdhZDU2OWEzY2E1ZjBhYiByZWxlYXNlMjUtbWFpbnQKKzU0MjM5IDc0NDZhZDZjYjU4YmRjYmZjZTgxODkzMWRhMGJhZmM2ZGNkM2I1NWIgbGVnYWN5LXRydW5rCis1NDI0MCAwOWJmYzBjZGZmOWZlZTNiZTQ4OGRiZTFiMjA0YzkwZGI0NzdjMWRkIGxlZ2FjeS10cnVuaworNTQyNDMgMjg3Nzc5ODQzYzVkMzk5NGEyMWU1ZDMyYjBlM2Y4ZmFkYTVlNjY1OCBsZWdhY3ktdHJ1bmsKKzU0MjQ0IDM3MTdiMTQ4MWQxYjk1NzM3OWFiMjFiMGZmYmQ2OTIwOWM5NjE1NDEgbGVnYWN5LXRydW5rCis1NDI0NSAxZmVlOWY0MmIxZmFkZDk3NTE0YTc1OTE0ZDQxYTAyNGUyNzZjNDJkIGxlZ2FjeS10cnVuaworNTQyNDYgYjEzMjZhYTA0YjJjM2RhMjQ1NjhhN2Y4NmY4YTVkYTUyOTM2ZjE0NSByZWxlYXNlMjUtbWFpbnQKKzU0MjQ3IDQ3YWMxYmZlYTMwNDdjNmNlODBiZjE1NzkyNDMwNGYxNWE3MGI1ZjggbGVnYWN5LXRydW5rCis1NDI0OCBmZWRkNmNjYzVlNWI0Zjg2NDdjYjhhNDJiYTA1MDU0NmI1M2VjNTgyIGxlZ2FjeS10cnVuaworNTQyNDkgNGFhOTE4N2I1MTU5Y2NkZTM1ODY0MTA0ZTVmNmIzNTA2Y2NiMzE4NSByZWxlYXNlMjUtbWFpbnQKKzU0MjUwIDFhZjM4YWYzMTRmMjcyNzNmODQ5MjY2ZDIyMzIzNTA4ZTUzYWIyNjcgbGVnYWN5LXRydW5rCis1NDI1MiBiZTBkNDkxMzRlNGZhMmU4NWY2ZjA2YzNmZDE1NzJjOTVlYmMxNjM5IGxlZ2FjeS10cnVuaworNTQyNTMgMWJiZDY4OGE2ZGUxNmY1N2M5OWQ2NDgzOGEyZTVhOWYzNDMyNmU4MiBsZWdhY3ktdHJ1bmsKKzU0MjU0IDAwMjM3ZjUxNGYwNjI5MmEwNGIyMTc5Nzc1YWJhMWVhMmRmY2Y2YmQgbGVnYWN5LXRydW5rCis1NDI1NSAwMWM4ZjNlMzMzMmNhYTE4YjkyZjk1MGY1Yjg3NWQ4ZmZmNTE2MDkwIHJlbGVhc2UyNS1tYWludAorNTQyNTYgNzE4MDljMDg5YTI2Mzk1ZTllNzAxMGRlMTdiNzU4Y2Q2NzNhM2IwYyBsZWdhY3ktdHJ1bmsKKzU0MjU3IGQzYTM1ZmUxMzgzOGEyMTk2N2E3NjM1N2RmYWZlNzc3NTAyODZjMWQgbGVnYWN5LXRydW5rCis1NDI1OCA1OTc4ZTA3MjkxZmU3NjgwZDVlMDA4ZWI4Y2FkOWJlODMzYmYzYjVlIHJlbGVhc2UyNS1tYWludAorNTQyNjAgYTNmMzExMzA0ZWE2MzJlYmIxMjE5YzU0YjhmNTZhZDYyODAxNGJiMCBsZWdhY3ktdHJ1bmsKKzU0MjYxIDJiNTFiMDRiMjU0NTRjYTEyMjgzMDI5OGUwMmQwNmYyZjRlYTE4YzQgcmVsZWFzZTI1LW1haW50Cis1NDI2MiAxMDFhMWFiNTczZGI0ZWIyNDc1MTUxOTdjY2ViMTRjZmZhMjBkODIwIGxlZ2FjeS10cnVuaworNTQyNjUgY2Y0NTIwMjcwNzNlMjhjY2UzNjViYzY1OTYxNjJjZWQ4ZTc0ZTgwZSBwM3lrCis1NDI2OCBmMTE4YWFkYzExMjA1Yzc1NGNkNmFmMjIyZjk5Njk2MWJkMDE0YWQ3IGxlZ2FjeS10cnVuaworNTQyNjkgYzliNDBiMGFhMzAzMjAxZDc1ZmE4YWUwMGZhNDQ5NWRlOTVhNzM0NiByZWxlYXNlMjUtbWFpbnQKKzU0MjcwIGE4YWUyYzI5YzY2YWUyZDYwZGRhNjAwMDBkNzQ5NTU2ZjkwMDU4MGEgbGVnYWN5LXRydW5rCis1NDI3MSA1YWI3ZGM4ZTczMWE5N2FhZTI4MWM4NDkxYjE4MTJiNWVmMWJmN2JjIGxlZ2FjeS10cnVuaworNTQyNzIgZDRlYTA2OGMzODIwNGQ4MGQxNWQyYzliYzcxNzg5YWVkYmQ3ZWZjZCByZWxlYXNlMjUtbWFpbnQKKzU0MjczIGQ3MDQ0NDY1Yjc0M2JmNTE1YTA3YzQ2ZDNjMzNlNjBlMzQxNjgyNzcgcmVsZWFzZTI1LW1haW50Cis1NDI3NCA2MGEzNWMwN2QzMmRmMzQxYTRlYjg5Zjc3OTkyOTVlMWZiNmFmZjUzIGxlZ2FjeS10cnVuaworNTQyNzUgNWI2ZTFjMDA4Y2EzMjNkYzcxNDZhZjIzZjQ3ODNlNzMzNDcyNWQ2MSByZWxlYXNlMjUtbWFpbnQKKzU0Mjc4IDlhMGNjZGJiYzU2OGRjZTgyYjA5MzVhZTEwNmZlMGMxYzVlNGIyZmIgbGVnYWN5LXRydW5rCis1NDI3OSA3MmM1YjU1Y2FhMWRiMmUzNzNkNDA0MjlhNGM5Yzg1NzZlNTVlMmMxIHJlbGVhc2UyNS1tYWludAorNTQyODAgZDg1MGJmNTZmZGY2Y2EyZmRkODRmMGYzM2VkY2FhNDQ4Mzg1YTM1ZSBsZWdhY3ktdHJ1bmsKKzU0MjgxIGRjZTk0MGQ5YThlOWNkZjBkNjU1OGQzMzgyZGU1ZTZhYzUxNmI5MjIgcmVsZWFzZTI1LW1haW50Cis1NDI4MiA0N2VkZTY1ZTJlZmQ4ZmZlYjEwOThjZTM4YWJhZjk0YzNiZDcxMGFhIGxlZ2FjeS10cnVuaworNTQyODMgYWRmNjEyZjcwNmU0ZTkwNjRiYmRlOGUwMmVjMTJjNzkyMTkxYjgyZCBsZWdhY3ktdHJ1bmsKKzU0Mjg0IGE3ZGFhMDIxOGNmMGMwNjNhNWVlM2QwYzA5NjdkNTBiMDQ0ZWU0NWIgcmVsZWFzZTI1LW1haW50Cis1NDI4NSAzZWU5NWZkZTdjZmFlNDA0OTQyM2FkMTIzNDZhNzZkYjg1YzFhOTJmIGxlZ2FjeS10cnVuaworNTQyODYgMjExMjAxZTZiMDQ1ZWQyYzUxMTVlMDAyMTM1OWNiZmRjMjE1OGY5MCBwM3lrCis1NDI4NyA3MTdiYzJhNGVlZTc3YjZmMmRmMDBkMmZlZGM5OGZiYWNkMGFlNWQyIGxlZ2FjeS10cnVuaworNTQyODggYTg3YmNjMzdiZjBmZWE3N2FkMjk5Y2E2MTdhOWU1YTBiOTU3NDNjOSBsZWdhY3ktdHJ1bmsKKzU0MjkwIDcxMDBjNTkxODJmZjMxNmRmODc3YTQ0YmU1MWQ1NjNmZWU5NGFkZTcgbGVnYWN5LXRydW5rCis1NDI5MSA0NWNlMzg4ZWM1OWE1ZDIzYmUwYjM4YTAwMmI0YzExMjMyZjgxN2NjIGxlZ2FjeS10cnVuaworNTQyOTIgMmNiNWZiN2NkMzU3ZTRiODEyZTI5MWM2NTJmNTc2YTcyYTQyZDBiYSBsZWdhY3ktdHJ1bmsKKzU0MjkzIDViZTNkMjE3NzM0MDVkZjY3YjdiODcxNjExZDY4NGQyNWJhNGY3MjggcmVsZWFzZTI1LW1haW50Cis1NDI5NCA2NmYyNjVhYzRlYzRmOTBiNWViMjY4MGJiNGZmYTcwMGQzNDJiNTU0IHJlbGVhc2UyNS1tYWludAorNTQyOTUgMWUxMmJlZDdhMmZlNWE0NmIyNzM2Y2Y1ODhjOGM3NWNlOGI3YTVkNyBsZWdhY3ktdHJ1bmsKKzU0Mjk2IDAxMzU1MTI0Y2U0MDUxNWJjMTgxYzJkZTEzYjJhMjdiYmVjNWJkMzcgbGVnYWN5LXRydW5rCis1NDI5NyA5MWE4MGU1MmQ4NjNlZDViMmFjZTUyZTU1NWE2ZTI3ZTZlNzBkN2M3IGxlZ2FjeS10cnVuaworNTQzMTUgOTFiZDczOGE0MjA2N2ExM2FjM2NhNTNlMjI3Mzk2Y2I1ODFiNmM2MSBsZWdhY3ktdHJ1bmsKKzU0MzE2IDg0NDc4ZGViNGFkOTZhOWFjZGU5OGU3ZDA4YTViMWQ1OWNmMGYwYjMgbGVnYWN5LXRydW5rCis1NDMxOCA0NzlkY2JkNzliNTdmMTVlZjhhMmU2MWE0ZmNlYzNiMDAxN2Y1ODljIGxlZ2FjeS10cnVuaworNTQzMTkgZjlhMjZhYTNkMDljNDRjMjZkOTUyYmE3NjE0MGI2Yjc2YzY3MjhiYSBsZWdhY3ktdHJ1bmsKKzU0MzIxIDlkYjNlMzI1ZGQ4OGQ0YjE3NzRhYmY2MzQ0YzMxYzM1YTZiZjdhMWQgbGVnYWN5LXRydW5rCis1NDMyMiA3Mjg2ZDgzMmFkMjcyNzE0NWFmNDQzOTA1YjkyMDQ2ODc1YzBjYTJiIGxlZ2FjeS10cnVuaworNTQzMjMgZTJjZWVkZTIwZDhjMjk0MjRjODg2ZDY1MjA1MDZjZDdiMDAxZWE5NCBsZWdhY3ktdHJ1bmsKKzU0MzI0IDE2ZDdkY2Q3YTY5YzQyZjc1ZDdmMzE4OGY0MGM3YzI2NjgwYWM5YzAgcmVsZWFzZTI1LW1haW50Cis1NDMyNSBiZWQ1N2RmZjNkYjg2ZTY4ZjBmYzk0NDdlODY0OTFlYTU5NWIyMTE4IGxlZ2FjeS10cnVuaworNTQzMjYgN2EzMzFjN2Y5NDA0ZmNkMDAxYWMzODFmNjliODUyOGM1MThiNDZlOSBsZWdhY3ktdHJ1bmsKKzU0MzI3IGJiYWY2YzkzNTY2MzZmYTUzN2FkZTA1MjQ4NmI2ZmZjOWRkYzVhOTkgbGVnYWN5LXRydW5rCis1NDMyOCA4ZmE0ZTk4MGI1ODk5ZmI5YmQyMTUzYThlZmEzMzlhNTIwMThjYTE5IGxlZ2FjeS10cnVuaworNTQzMjkgYjg5NDM3ZTNiYzhlYmQ3ZDZiN2U4YTJhMzdjNWMwMmI4MzNiMzE3NCBsZWdhY3ktdHJ1bmsKKzU0MzMwIGFkZThkMWM4MTAwOTNlNTg0NGY2ODUyNmI1MjQ4OWFhZTU1MTFiMTkgcmVsZWFzZTI1LW1haW50Cis1NDMzMSBiMTNlNjEyOGVmYTcyYTRlMjY2N2UwY2UyODk3Y2JhMjZjMjA5OWFjIGxlZ2FjeS10cnVuaworNTQzMzIgYjZjMTAzODQ1MDU0ZjE4OGQyYWI1MTkxYjFmZmU5MzFiZmY5OGE4YSByZWxlYXNlMjUtbWFpbnQKKzU0MzMzIGM2ZjQxNTI5MGY4MDZjYjA1NWZmNmE5YjZiYjU5Mjg1MzM4YTU3MTIgbGVnYWN5LXRydW5rCis1NDMzNCA3ZDMwZDYyYTkwMWFhODFmMTI0MDljZmQ2Y2FjOTk3M2FlYmE2ZGQ0IHJlbGVhc2UyNS1tYWludAorNTQzMzUgNWEzYTFiMDI0MThhZmQwY2I5ZjNhMTRjYzY1MzMyOWUyMWY1NDIzNyBsZWdhY3ktdHJ1bmsKKzU0MzM2IGE0ZTBjNzkwMTVkODJmZTI5ODVhOWRmNzgyYzVhYTU4ZTdmZmI5NWMgbGVnYWN5LXRydW5rCis1NDMzNyA4MWU1YzVkMTk5ODg3Yzk1YjAyNTcwYzRlMDY1MTFmOWRjNmQ2ZjJjIHJlbGVhc2UyNS1tYWludAorNTQzMzggYTM0MTljNmMwY2ZlZGY2YWZiMTc0ODZkZDBkNjAzNmJkMDI0YjIzNSBsZWdhY3ktdHJ1bmsKKzU0MzM5IDUzZWUyNzk1Mjg3YjQ0YzZjOTZhZGRkOTVhNTMxOTI4MDgwYjllODcgbGVnYWN5LXRydW5rCis1NDM0MSAxZDgwZDg0Yzc3OTI0OTc1YmNiMzkzZWQyZGRkMGM2M2NjODI5NTBlIGxlZ2FjeS10cnVuaworNTQzNDIgYjkwZDhiMmU1ZWQwNzE3NGM0OGVmNmFjODRhOThiMzE3ZGVmMzliZSByZWxlYXNlMjMtbWFpbnQKKzU0MzQzIDBjMTIyZmU4MjdkNzhhNDZlMjIyZjQ3MGViODRhNWVmNGRkMDBlOGIgbGVnYWN5LXRydW5rCis1NDM0NCA3YjM2YTY0ZGNiMDhkMDI2NjIyMjdiMjMzZDllZTQ3Y2Q0ZWM4MGQwIGxlZ2FjeS10cnVuaworNTQzNDUgYWM3MWRiOWZhZGM4NmI5YWUxNjlmZTY5ZDIwYTA1N2VlYzYxNTExZCBsZWdhY3ktdHJ1bmsKKzU0MzQ2IDI4YjA0MDNmOGM5MmI3MWRjM2M0MzQ3MGMzMThlNThkMDBiODhhYjEgbGVnYWN5LXRydW5rCis1NDM0NyA5M2U2N2QzNjJhODFhMjlhOTc5ZjY2Njg5NDQ0NTA2OGRhZGQxYzIyIGxlZ2FjeS10cnVuaworNTQzNDggZDk2ZWJiMjBkM2UxZjYxMDVjOTM1YzgxZDkyNGVjZDI5NDY1NzQ5MSBsZWdhY3ktdHJ1bmsKKzU0MzUyIDRhNzlkZDE1YmE1OWY2NWUzOTE4NDRhZjJkOTg4ZWE2MTYyNTQ3MzAgbGVnYWN5LXRydW5rCis1NDM1NyA0OTNjYWU3MDVmOTE4OGMzYmI3MDljNzc3NWZkOTYzZmUxZWI0Yzk4IGxlZ2FjeS10cnVuaworNTQzNTggNzg2ODZjN2EyM2E3ZDUwM2U4MjI2YzQ5YmE2NzVmZmM1MDM5ODE1YyBsZWdhY3ktdHJ1bmsKKzU0MzU5IDkyMmI3NzA4YTgwYWZlMjA5NmQ4MDg5ZDRjYWI1MTljMjBiYjAwNjUgbGVnYWN5LXRydW5rCis1NDM2MCAyMjZkOWZjZjlkNTljZGE0NzdlMjkwZDAxYmQxYjFlZGIzZGI1MDZjIGxlZ2FjeS10cnVuaworNTQzNjEgZGJhNWEzM2EwZTc5OTUyODE0MDIyOWI1M2NjZDY0YzBlNjFmY2NlNCBsZWdhY3ktdHJ1bmsKKzU0MzYyIDIwOWQ2ODhmM2NhNWVlYzJlMTg2MTFhMWU3NTIxY2FhOWNiNzhkOWIgbGVnYWN5LXRydW5rCis1NDM2MyBlYWZiZmE4YTJiMzAwYzNhYmE5MWQ1ZTZhNDUyZTNjMTc3ZTA3NzQzIGxlZ2FjeS10cnVuaworNTQzNjQgZjFmMTg2NDYwMjUwYTJmNTMwOGVlNDY0MDBkMDYxMTM1OGFjODMxZiBsZWdhY3ktdHJ1bmsKKzU0MzY1IGNhMzM4ZDU2M2E3YWQxNmZmOGNkMWM5YmU4MzBhMDBmZWViMjU0MzEgbGVnYWN5LXRydW5rCis1NDM2NiBkMzExMDEzYTE2MzhhOTRjYjM2Y2ExMTYwNTZjMTMwMzZlOGE3YmQ3IHJlbGVhc2UyNS1tYWludAorNTQzNjcgNWExYTBhYTlhNGJiYWUxOTc2YTQ3Y2IwMTU4ZjMwZTE2MWExNWU2YSBsZWdhY3ktdHJ1bmsKKzU0MzY4IDg5NDY5MWNhNDgzNTNmMGM0MWI4YTViZWExMTQxMzJkNGVmOGQwMTYgbGVnYWN5LXRydW5rCis1NDM2OSAxZGNkYmMyNWRlYTdjNjU5OGVjZmI0M2Q0N2E5MTQ3YTM4N2U4NTY0IHJlbGVhc2UyNS1tYWludAorNTQzNzAgNTJhNjlhMDY0NjM3YTU5OTUzN2U0ZDM1MmFjMDlhMDg3NzI0ZmQ0YyByZWxlYXNlMjUtbWFpbnQKKzU0MzcxIGRlMWQwNWM1NWI2ZmRmM2NlYTIyNWVlNzg1MTk0YmQ4ODNkMDM3N2IgbGVnYWN5LXRydW5rCis1NDM3MiBmZjlkODFlNzZhNzZmN2Q1N2U2MmU5ZDJkYmE1MzRhMDlkN2QzMWJhIGxlZ2FjeS10cnVuaworNTQzNzMgYmMyYTVhNTRiNWNhZjNmNGUxZjBmNmRhYTYzZTA2MTg0MzI5NWUyMyBsZWdhY3ktdHJ1bmsKKzU0Mzc0IGI1MDA3NjFiNGI2MjZkYzFmYjkwYzMwOGUwOGY5N2FhYTU4NjQyMmEgcmVsZWFzZTI1LW1haW50Cis1NDM3NSA1NmIyYjkzM2JhYWUyYzQ1ZGZlNTI2ZmUxMWM2MGM1MzdmYjg3YzIyIHJlbGVhc2UyNS1tYWludAorNTQzNzYgYzMwMWI1YmNkZmRjNTEwZGZiOWE4YjM1NDUyYzg4MDIwYTVmZTYwOSBsZWdhY3ktdHJ1bmsKKzU0Mzc3IDkwZTU3ZTJjN2EwMzMzZWI3OGRkYzJjNTM2NDRiNWE3ODE0OGQ2NWQgcmVsZWFzZTI1LW1haW50Cis1NDM3OCAyOTAwZWMwNDAzMWQ5NGMzYWY4ZDZhODg5OTNkZmJlNjJjMTkwYTM4IGxlZ2FjeS10cnVuaworNTQzNzkgZmM1ZTA0NWNlYWU0MzhkMjM4OTBkM2Y2NTY5ZGUyNjBiNTYwYWI4NCByZWxlYXNlMjUtbWFpbnQKKzU0MzgzIDUxNGFlZmY2M2M5ZmZiNTUxMTAwOTk3ZGI0YmJhNmVmM2QwYWY3OGIgcmVsZWFzZTI1LW1haW50Cis1NDM4NiA2MjgwNTUyYzEyOTcyM2UzN2Q3YjM4OGI0YjU4MjY2MWExOGJlZjNjIGxlZ2FjeS10cnVuaworNTQzODcgOTk0M2FlYTRmMmQxZGYyMmM3YTYwY2UzM2M5YWI5ZGNkYTUzNjRmZiByZWxlYXNlMjUtbWFpbnQKKzU0Mzg5IGJiY2UyZDhmZjczZDU0ZTBmOTc3OTBhMjZjZTM4YWFlNGRhNDQyNDggbGVnYWN5LXRydW5rCis1NDM5MCA0ZWI0Y2ZiNjI1NGViYjdiOGYzZjBhYzI0OWJkMTNmN2E1ZGQ2NGU4IGxlZ2FjeS10cnVuaworNTQzOTEgZDE1NWFlNjM2NzI4NDhlYWExNmJlMDZkYzU3MDEzYTUyNmM2YjdkYyBsZWdhY3ktdHJ1bmsKKzU0MzkyIDBhNmM1MTM1ZDJkZWY0OThlODI5NTg3MTEzNDhjMDhjZWJlNDE3OWYgbGVnYWN5LXRydW5rCis1NDM5MyBmYzUyN2ViOThkY2U2ODU1Y2E5Mzk3ZjY4MTRkMzEwNTNjMmY2NGNkIHJlbGVhc2UyNS1tYWludAorNTQzOTQgMzc2YjQyMzVkZDQ0NDQ4MWI3ODY0ZjM1ZDg2NmEyZmI2MzYzZGE1ZCBsZWdhY3ktdHJ1bmsKKzU0Mzk1IDRhY2I0NWMyOTdlZDFmYjZiOGUyOWQ1MzZhMGEzNTA5YTcxY2YzNmMgcmVsZWFzZTI1LW1haW50Cis1NDM5NiA4ZDk3ZGVlNmRmNjQ0NDQxNmUzY2M1NmY0NDZmYTBlMmJmNWExY2ZjIHJlbGVhc2UyNS1tYWludAorNTQzOTcgNDIxN2YzODUwZjBiOGE1YjZlNzM2MDA1OWM2MGY3ZTM2ZTQ2MjU2YiBsZWdhY3ktdHJ1bmsKKzU0Mzk4IDUyYzMzOWMwY2IzOGJjNjlkNjc4M2U1ZGFlZTZhNDk2OGY3MDFiMDggcmVsZWFzZTI1LW1haW50Cis1NDQwMCBhMzc3Zjk0MmVlMGFkYzE4OTg1Zjk0YjllNGVjN2IzZTM2ZjgyMGE4IHAzeWsKKzU0NDAxIGEzMTJjMjc2YTVlNzliY2ZiMzcwYjc0OTk5OTgzMjIzYmRiMzcwMjEgcDN5aworNTQ0MDQgYjQzYTUyZjcxNjk2YTA2NTNiMjk1MjY3OTliYzdhYTdjMGM2ZGVmMCBsZWdhY3ktdHJ1bmsKKzU0NDA1IGQ4MzU4MDlmNDVlYzQ0OTE0ZjRiY2QxMDgxOWZmNmVkYmM3MTY4NTYgcmVsZWFzZTI1LW1haW50Cis1NDQwNiAwMTk1MWY2YjgxOWQxM2VhYjIzYjY3ZTVhYTE0NjM0ZDZjZjgwZTM0IGxlZ2FjeS10cnVuaworNTQ0MDcgOTQyMDU5ODZhZDUzMDhhOTQzZGYxNzgzYTYyMTAzYTdjYTczNTNmNCBsZWdhY3ktdHJ1bmsKKzU0NDA4IDI2OTBkZTRiZWFhMTNkYTRhY2Q5NmYxMGNmMTIyNzcxNmFhOTRiMjQgbGVnYWN5LXRydW5rCis1NDQwOSA2NDUwNzBiODM5NDI2YmYxZjkzYmM3NTg4MjBiNTI0ZmQ3ZmQ4OWZiIGxlZ2FjeS10cnVuaworNTQ0MTAgYTY5NzlhYzk1MzNmYWU2Njk4NzZhYzJhZDlkMTQ1ZTEwNzM4YTE0ZSByZWxlYXNlMjUtbWFpbnQKKzU0NDEyIGM1N2NkNTQ2NjEyZGQ4M2U4N2RlYzMxN2FjNDY4MDk5NmI2NTlhN2MgbGVnYWN5LXRydW5rCis1NDQxMyAwNmNkNjBiMGJkMTY0YzczZTIyYTVkNDkzNTI5ZTc1ZjQ3ZGVlNjk4IGxlZ2FjeS10cnVuaworNTQ0MTQgZDFiYTgxMzQ1MjhlMjhjMGJhYjNjNGU0OTM2MzVmM2ZiMDI0MjIzMSBsZWdhY3ktdHJ1bmsKKzU0NDE1IDcyZGE0OGQ5NjI1N2ZjMzBiMDMyYTJiNGY1ZjkxNDViYzIxMWQ1ODAgbGVnYWN5LXRydW5rCis1NDQxNyA4YmI1NzBhZTRjNDVjNzJlOGVjMjJmOTljNjg4ZTc4NzZlZWU2NDYzIGxlZ2FjeS10cnVuaworNTQ0MTggNzU0OWM0YjNhYTM2YTAxZDM4ZWQwNTVmZmZlZWM1MTNiZjBjN2U5YSBsZWdhY3ktdHJ1bmsKKzU0NDE5IGYzZDQyNzRkMDYzZDMwYmNjODA5NjAyMDQ1MTMzN2Q1MmM4MThlZjAgbGVnYWN5LXRydW5rCis1NDQyMSBlYmU1MmRiYzM1NTNmN2VlNjA4OWRjM2NjZWE4MWE1OWViN2RmMjU5IGxlZ2FjeS10cnVuaworNTQ0MjIgOTEyNjg2NzhkNTdmOTZkNTEwMGMyNjQxNTE1ZGJlOWU3YmQ2YmU0NCByZWxlYXNlMjUtbWFpbnQKKzU0NDIzIDEzNzNhODMwODNiYjIxM2E5ZmNjMzZiYTE4MThjMDE2NmVmYzhlMDYgbGVnYWN5LXRydW5rCis1NDQyNCBhMmFlMjRmZmE2MGE5MDM1NTg1MThjYjBlZDI0NDFlYmQyOWRjYzkxIHAzeWsKKzU0NDI1IDNjNzNhOGEyMDgzOTVmYzhmODlhNTFhMDlmOTcyOGNjYTZkODM3OGQgcDN5aworNTQ0MjYgZTNiYTYwZGUzZDg0MmUxZDc0YzIxMDRiMjc2M2U2NjgzNjk5NmYwNiBsZWdhY3ktdHJ1bmsKKzU0NDI3IDM0M2JlMzk2YmJkN2M2MTI5YzQ2MTJmNTk3ZTZjMjY4ZWRlZjE1ZDcgcmVsZWFzZTI1LW1haW50Cis1NDQyOCAxOWY3ZmY0NDM3MThmN2E5ZGExYWVhOWVkYmYwMGExMzVmODYwODgzIHAzeWsKKzU0NDMwIDVlMjRmNjM2YWM3NTc2ZThiMzVmZGQ4ZDg3OTNiYjE1NGExZWQwODMgcDN5aworNTQ0MzIgMDcxMDE2YzcyOTM5MmU1NTNjYTNjOWY4OWQyNDhiOTM4MDAyMWViMCBsZWdhY3ktdHJ1bmsKKzU0NDMzIDFmODQzODkwYTRlNjFiNDcxNWQyYzNhMTRhNWVjMmIxNWRkYzAxZTQgcDN5aworNTQ0MzQgYjFhMThjN2VkNWNhNjc5YWVhODhmMDc0NTEzMThlYzdkNjZhYmM1OCBwM3lrCis1NDQzNSAxNmZlOTM2Zjg5YjE5YTU1MTEyMzQwZWM1ZDRhODhkMDc3Yjc4ZTgwIHAzeWsKKzU0NDM3IDhkNzk5YTk5Y2Y2OGY0ZDY4ZTczYTYzZmQxNWI5YTE2MWMxOGExODQgcDN5aworNTQ0MzggMDM3ZmU2YTQ0NGQyZmU5ODI3NGViYWFjZWU0YzcxZDkwNTlhZmQ3ZCBwM3lrCis1NDQzOSA4ZDA2YzExMjFiMzMxYTUzZjI5MjYwMzBmNDAwNjBmOWU3OTI4NTMxIGxlZ2FjeS10cnVuaworNTQ0NDAgNmM4YzMzYTQzYTE1NTViODFlY2VjOTExMGY1ZWRmMGQyNDk1OTBiYiBwM3lrCis1NDQ0MSA5ZjA3ZDQxMGM1NTU0Njk2NzQyNTllMjZhNzhlNDUyMWRiNTUwN2FjIGxlZ2FjeS10cnVuaworNTQ0NTEgYzdjMjc1NGZmMmQ2ZGRiOWE5MGYxODI3NzBlN2EzYjliMjJlZmFlYSBwM3lrCis1NDQ1MiBmOTk3M2E2ZTFhZmUwMWUwZmIzYmM5N2Q3YTQwZmEwMWY3ZDE3OWVmIHAzeWsKKzU0NDU2IDhkMjk3ODE0MjU5MzM4OWZlYTQ2NzY5YTk4Y2NiNTc5NjBkYmY3OWEgbGVnYWN5LXRydW5rCis1NDQ1NyAyMzZhZjIxNjFlYjY3OGFkNDRkZTQxYmQxYzU5ZjM5Y2MwYmM5YTU5IGxlZ2FjeS10cnVuaworNTQ0NTggNjAxODE5NGFmYmJkZTEzZTFmYTNkMjQ4ODhkN2MwNDc4MTgxYWY2OSBsZWdhY3ktdHJ1bmsKKzU0NDU5IGM5OTdlOTA3YzRjNjcwNjBkODM4MWE3NmE5MTE1MzVkY2VlNTdkYmEgbGVnYWN5LXRydW5rCis1NDQ2MCAzMDdlNWQ0MTY0ZjNhM2JiMTIxNTBiNzA3YmFmMTk4YzZmZDYyMmMwIGxlZ2FjeS10cnVuaworNTQ0NjEgNWE3NzFiNGE4Yjc4Y2M0M2Q3NTYyMGY1OTdkMjJiN2E2NzkyYzQ5MiBsZWdhY3ktdHJ1bmsKKzU0NDYyIDQ1NjY5YzQxNGRiNDU1Njc1NTI0NmU5NzEwYmJlYzU1NTRmNzMzM2QgbGVnYWN5LXRydW5rCis1NDQ2MyBiOGIxN2EyZmFjZTVhYWYzY2Q3ZjczOTBjYjdjMzhiZWJmZGZhZjljIGxlZ2FjeS10cnVuaworNTQ0NjQgYjQzYTJkYTgzMmE3MGQ3YTg5YzJmYjljYWE2MzE2Y2Y0NmY1ZDA3MiByZWxlYXNlMjUtbWFpbnQKKzU0NDY1IGVjNmZiMDkxMDM5YjQ1M2MwYzBlOTIxZmVhNDZlYzdmMWYxMGJkY2QgbGVnYWN5LXRydW5rCis1NDQ2NiA1MGE2YjMzYzlkMmM1YzA3MTMxYTA5YzFmODc1N2NhNjY2ZTliMTIzIHJlbGVhc2UyNS1tYWludAorNTQ0NjggOWQwYzA1NDExNzM0ODMxNDAwOWU1ODk4MTU0MDIxZTg0OTRlODNiYSBsZWdhY3ktdHJ1bmsKKzU0NDY5IDdmMjliZTFjZWZiYTEyNTYzNDA4MWMzMTBiZGUyYTA4Mzk3NGU1NmEgcDN5aworNTQ0NzAgZTEyYzUwNGU0NjZiNWI2ZTlmMmM4NjBiYzcwNzIwYmJlM2JiNzZlZiBwM3lrCis1NDQ3MiBmMjlmMWE4Yjc4NjkyZDFjZmYxOTM2ZTBhMDQyMDIwYTY4NTUzOGJjIHAzeWsKKzU0NDc4IDg4MTI3MTg2NjllMTk3OTIyMTNjZWE2ODY4ZjMzNGM0NGUwMzdiYTkgcDN5aworNTQ0NzkgYjc1MmExZTA5NDRiNDM2MDhlYjM4MDE5NGVkNmZjNjQ4NmMwNmU1YiBsZWdhY3ktdHJ1bmsKKzU0NDgwIDljZjIyYzVlZWUzZDdmYTAwMDEwMjIzODBhZjdmMzljY2EwMTg2M2IgbGVnYWN5LXRydW5rCis1NDQ4MSAwOGQxNjE4M2E5YzE1MDUyMmFlNmFlN2MwZjE2YTViY2Y2NTQ3ZmI4IHJlbGVhc2UyNS1tYWludAorNTQ0ODIgMWRjNGM0Y2UyZGI5ZmYwMjBmMmI5MjAzOTlmNDY4NzhjOGFiMTIwNCBsZWdhY3ktdHJ1bmsKKzU0NDgzIGQxNmFiZTVjOTJkZWJmNTU1MTZlOTBhZTRmNTkzY2FmNThhMGM5N2YgbGVnYWN5LXRydW5rCis1NDQ4NCA4NTJjOTg5NmZlOTIzNjUxYWFlOGZkNTYwMDQ3ZjdmYmMxMGEzNjAzIHJlbGVhc2UyNS1tYWludAorNTQ0ODUgNDU5ZTM2YjJlYTQ1MWZjZGUyMjBmYzBmYTI2M2I2ZDVmYzg1ZWQ2MSBsZWdhY3ktdHJ1bmsKKzU0NDg2IDViNzExNjMyY2FlMTMyYWI4ZmRjM2Q1ZTViNTJiZTRiZGZhOTc3NzcgcmVsZWFzZTI1LW1haW50Cis1NDQ4NyBjYjZlYjEzMmFjY2YyNjY4OTRmMGIxZGYyYWJkOGU3Y2ViYTYyY2QxIGxlZ2FjeS10cnVuaworNTQ0ODggNzM5M2M3MTBkNGJiYmVkZDlhMjA3ZTJlNjkyZTE5NDI3NDEwZTRjZCByZWxlYXNlMjUtbWFpbnQKKzU0NDg5IGU1NWJmYjFhYzFlN2NjYWRlYTA2MzZhZDg5Mjk3NmMxZDQ2MTRjZGIgbGVnYWN5LXRydW5rCis1NDQ5MCA1YmQ5NjYzNjIwYmM5NzhhMTI3OTcyYTdjZTdhYmM2ZjE2NDdiYmRiIGxlZ2FjeS10cnVuaworNTQ0OTEgYjFlOGJmZGZlNGI3OTVhMDJkZWU2Yzc4NWQxNGQ5NDAxNGZjOWVjMCBsZWdhY3ktdHJ1bmsKKzU0NDkyIGNjYzQ0N2E2ZDkxNjQ4ZjcxMTYyMTE1ZjQ1ZDBhZDc3OTlhZGVjYjEgbGVnYWN5LXRydW5rCis1NDQ5MyBkMjVmNzc1NzQ4NjYzMWU4NDRiMWE0ZjUwZTk3MmUwMTRhOWIzOWEwIHAzeWsKKzU0NDk1IDE1YTdlMGI3ZTQyNTZiNWM5MGY4YzIyNThhZGVkNjlmY2RhNTcwMTMgbGVnYWN5LXRydW5rCis1NDQ5NiBmODg5ZjY1YTQ4NjFiZWI1ZmMwMTkxN2NjMmQ1YWE5NTY1M2Q1NGEwIHJlbGVhc2UyNS1tYWludAorNTQ0OTcgNDA4ZGZjN2UzMDE4NGMyMTVhMDYzODRhMWQ1OWY4MWM2M2M0YjQzNSByZWxlYXNlMjUtbWFpbnQKKzU0NTAyIGQ0MjhlMjFkNmVhZjU4MDY0ZWY0Y2FhZjcyM2Q2Zjc1YzY3OTZmMWYgcDN5aworNTQ1MTAgYmZjNGU4MDQ2MTAyMzhiOGIwMGMzOTJlM2RhY2IyNzM2MzEzZjJiMyBwM3lrCis1NDUyNCBhY2Y5YTU1Yzg4NWQ3OTEyNzY5ZTY5Y2M2ODJkOTIzMTJiYThlZDJiIGxlZ2FjeS10cnVuaworNTQ1MjUgNTJlMmZjZDUzYWQzMzk2NjNlZWJkYWZmY2IxMzliYjU4MDNmMTg0YyByZWxlYXNlMjUtbWFpbnQKKzU0NTMyIDE3NTdmODBiNWZkYmFlNDc5ZGRmNjA0M2I3MDk5Mzk3NWI2YmY1MjMgcmVsZWFzZTI1LW1haW50Cis1NDUzMyBhZmIxYzZjYjJjODg0MjI5MTRlNjhhZmEwMWJkMGU4NWNjZDlmOTRmIGxlZ2FjeS10cnVuaworNTQ1MzcgZmUxODQyYjQ4YjY2ZmZlYzhhNjk4NjQ4ZmFhZTcyZmExMDIwZjQwYSByZWxlYXNlMjUtbWFpbnQKKzU0NTM4IDQyZWI1YmI3NzY2MTU3YWYzNTBiYTU4MDIzYThjNGRmZThmMjZkODcgbGVnYWN5LXRydW5rCis1NDUzOSA4ZGViY2UyYzRmYjFiNGU4NzI5NGI1YzZhMzY1OTI0ZTY2OGVlMzY5IGxlZ2FjeS10cnVuaworNTQ1NDAgNTFmYmYyYTc1NTQ4YjFhNjQwMDg3ODA3NmEwNzVmYzAxNTRlNDFlOCBsZWdhY3ktdHJ1bmsKKzU0NTQxIDhmMWM5ZThlZmJiYmZkMTlmOGYyOWJkMWQ1NTNkZGM2YjM5ZjQzODggbGVnYWN5LXRydW5rCis1NDU0MiBkODc0ODY3M2ZkOWY5YTVlYWE2YjdlNzkxZWJjNjEwZTViNWI3OWExIHJlbGVhc2UyNS1tYWludAorNTQ1NDMgMDI1NzRmNDg1YjE1YzNlYmQ5ZmMxZDYyYjBlOTk5YmM2ZjU5ZmJmZiBsZWdhY3ktdHJ1bmsKKzU0NTQ0IDBlYTU1OTVkNzVkYWQ4YTNhMzM1MWExMjBjYzk1ZjEyOGUwOTc1MTMgcmVsZWFzZTI1LW1haW50Cis1NDU0NSAxMmM3MDU1ODA3NGU3Y2QwZWIzMjk3MzVlNDFiMTVlNzJmNWQwODVmIGxlZ2FjeS10cnVuaworNTQ1NDYgYTczYWEwYjgyMWNhNTg4NGNiM2YwNjI1ZTI0OGVmZDJjYjhjYWEzOSBsZWdhY3ktdHJ1bmsKKzU0NTQ3IDNiNTZlN2U4OTQ3MDJlMGVjMGRjMDI1ZTI1YTU0MTc5Y2U5M2VlMmMgbGVnYWN5LXRydW5rCis1NDU1MyA3NGQyOWI2MzU0MTZiODlhYmM1MGNhY2JkMGE1MDJhYjczYTAzNzJhIGxlZ2FjeS10cnVuaworNTQ1NTQgM2ZmNmQzZmE4MTIyOWI5MGU2MmIzOWZkYzYxOGMyMTI4OWEwZWNmMSByZWxlYXNlMjUtbWFpbnQKKzU0NTU1IDE4OTk1YmQ4YmM4YjNhYTZiOTU4YzhlYjNkYTgxOWNlMjY2MWYzYmYgbGVnYWN5LXRydW5rCis1NDU1NiAxYzNlMGQyYzM2ZGM5NzYyM2Y5YThjYzFmNTNmY2U3Y2NjZTA2ODk0IGxlZ2FjeS10cnVuaworNTQ1NTcgZWY3MGNkNGRiYTUwYjY1NzRhZDFhNWI3MTFkZTE1NWVjNGE1NTk3MiBwM3lrCis1NDU1OSAzOGEzZGEwMjZkNWU1NzQzZGU2N2E1ZWQ4YjM1OTIzNDNkYzA1MDU1IGxlZ2FjeS10cnVuaworNTQ1NjAgZTkzOGU5ZWY0MzRiODJlNjFmOGI4NWNlMDMyMjNkMjcwYWI5MDQ4NCByZWxlYXNlMjUtbWFpbnQKKzU0NTY1IDMyZjcyZTU3NjE4Y2MxNWIyZWY2MTJjZDQ4Yjg2YzFmNjMzZjI4OGIgbGVnYWN5LXRydW5rCis1NDU2NiA4ZmM2Mzk2ZjA3NmE1ZWNiYjIxYTUzYzU4ZjljODk1NzZkYTNmYmQzIGxlZ2FjeS10cnVuaworNTQ1NjcgNjUwZWUxNzlmM2NlYzIwYTdiYWU2ZGZmMjI0NGEzOGEzYTVhMjMxYiBsZWdhY3ktdHJ1bmsKKzU0NTY4IDgyNThmMjVkNDNkNzk2NDkwMzRlNWYzNmY1ZDcxYmFiZGMxMzkwZmQgbGVnYWN5LXRydW5rCis1NDU3MCAzYzA5MTNiNjVlOGQ2ZDU1ZTdkNjE0ZjlkOGQzOTljZDk2YWRkNmFjIGxlZ2FjeS10cnVuaworNTQ1NzIgZWIyNWM4ZTJiNGExZWJlMjQ2YTJlNjRhYmY2MjNiMjk0ZjJmMTEyYyBsZWdhY3ktdHJ1bmsKKzU0NTczIGEwN2Y5OGNmZmJkZmVmOTUxMzYyNjVlMWQ2NGVkZWFkYjhkYTlkZDkgbGVnYWN5LXRydW5rCis1NDU4MCAyYmUxMzMwMTNiNzFjYWIyODNlZjQwOTNkNzdjYWQ1NGU4ODFmMzcyIGxlZ2FjeS10cnVuaworNTQ1ODEgOGJlNzQ0ZDVjNTY3Mzg5MjM1NWJjY2QwZjRkODQ2ZTRmYTIwZmQ0MCBsZWdhY3ktdHJ1bmsKKzU0NTgyIDAzZDVkYjgzMjVmNDExYTZiNzgzYTBhNmQ5OWIzZGU3NmUyMzI0Y2IgbGVnYWN5LXRydW5rCis1NDU4MyBhMzFiMGIxOGNhYzYyZDhmZTM3MzVmNDVjMjE3YzA3NGJjYWVhZmFiIHAzeWsKKzU0NTg1IDY1MzI2YTM4MTVmNzYwYWU4ODc0MTk5OWU0NzBhODJmZDJmZmJkMzQgbGVnYWN5LXRydW5rCis1NDU4NiBlNDg5M2VlOWE4ODU3OTY0MDA1NmY0MDIxNGMwMWFiYTFlYzZmMDdkIGxlZ2FjeS10cnVuaworNTQ1ODcgNTA5NWFmZWUwODBmMTAwOWE1ODI5YzhhZDc0MDdlNzNhZGMyNjY4OCBwM3lrCis1NDU4OCA4MzRkYTUyZWIyYTRlYmU2ZjgwZTA1OWQxMTNhY2YxYjA0OGQzMjhhIHAzeWsKKzU0NTkyIDQ1YTI3NjFjOWIxNmNlM2IzZTQ3YjNlOGQ5YmY4ZTkyZDBhMmYyOWUgcDN5aworNTQ1OTQgZDE0NGY4MTU3NGMwODVkZTE1YjgyOTFjMGIwMGJmNWJjY2RhYjcyMiBsZWdhY3ktdHJ1bmsKKzU0NTk1IGQ0MTZkOTcxNzE4MTViYTYyOGU0NTcxMTVhYTI0M2QxZmQ2YmI4NTUgYW1rLW1haWxib3gKKzU0NTk2IDNlNmQwMzIxN2EwMmIwNTk5ZjY3ZTNhMzk2OGM0ZDRjZjQzODFjYjkgYW1rLW1haWxib3gKKzU0NTk3IDQ2YWQyMTkzOTY4ZWZhN2EyOGZjYzU4ZDA2ZmM3MzYwMDQzM2RkODcgYW1rLW1haWxib3gKKzU0NTk4IDczMDU0NWYyNDA4NmRkOTgxOTM3NjU4ZjFjZDE3MDBmNzJlYTA4MWQgYW1rLW1haWxib3gKKzU0NTk5IDJkMjk2NjU2NzllNjc0NjYwMzQ2NTI0NTM2YTNiNGVkMjA1MWNiM2QgbGVnYWN5LXRydW5rCis1NDYwMCBlZmRjZThkOGRiOTkwMDI4YTQxMmRjNzcxOGU4NDUzMGFiZjExOGFiIHAzeWsKKzU0NjAxIGY5ZGZiYjVkMzVjMmYzMmU2MjBmNGQ0MjhhN2ExY2Y1Y2E2ODBjODIgcDN5aworNTQ2MDIgYjg5N2I3N2EwMDRmN2E1OGQ4NjcyMGU5MjUyMzIxOWFlZjAzZjQ1MyBwM3lrCis1NDYwMyAzOWU0Mzg2ZDcxZjY1MjVhYjY1NDA3ODM3M2E0NTY3ZmEyOTgwZWRmIGxlZ2FjeS10cnVuaworNTQ2MDQgZjU3ZThlMzI1NDc1ZWM1MDY2MzhiMDQ2NTMwZTkzNTQ5NWRkY2NkZiBsZWdhY3ktdHJ1bmsKKzU0NjA1IDVhOGNhOWRkODlkYjM0N2NmZTI4N2ZlNWQ5M2UwNmY2ZjcyMWEzNmUgbGVnYWN5LXRydW5rCis1NDYwNiBlMzM0OWQ0MTI2ODFlZTZmMGY0MTgyYjFlZmVjZDA1YmNkOTcyZWVkIGxlZ2FjeS10cnVuaworNTQ2MDcgZmEyMTgxYmQyNzA0OWJkOGZhM2M5MTI0MjQ0ZjlkYmM4YzZiZWM1NSByZWxlYXNlMjUtbWFpbnQKKzU0NjA4IDNmZDhmMDY1NzdmZmY5YTUxMDcyMGE5OGNlMmMyNzYwNjVhMDIzMzEgbGVnYWN5LXRydW5rCis1NDYwOSA1MTllNzJkNjMwZDIwODczODk2ZTZlNGQ2N2ExYTg3MTcwZjUwOTVmIHAzeWsKKzU0NjEwIDg4YzJhYzU5MDQ0MWMyZTUzY2M2MDY3OTRjZjQ4MTI3MDQyZjM5MGQgcDN5aworNTQ2MTMgY2NkYzViM2I5YjExN2FjOWRhYjRlZGEwODlkZjRkYTNhNzZjYzEyYyBsZWdhY3ktdHJ1bmsKKzU0NjE0IDM3OGIyZjQ3ZTgwOGY3MTMxMWEwNmFlMTRkZmNkYjRkNjhmNjkxY2EgbGVnYWN5LXRydW5rCis1NDYxNSA2ZjllNjkzZDc2YTE4NDg0OGE0ZmMyZDk2ODQ0MmViZTQ4NWFmYWFmIGxlZ2FjeS10cnVuaworNTQ2MTcgOGUzYzdhNWFjYmNkZjAwMTQ3ZjIzYmEyMGIzMjRlYTYxYjc5NTczMCBsZWdhY3ktdHJ1bmsKKzU0NjE4IDgzZTFiMDYxMTcxNDZjNmRmODdiMWEwYTExZjNhODQzMWE5YTU1M2MgbGVnYWN5LXRydW5rCis1NDYxOSA0ZTYwZTNhNjBmNTA0Y2IzYzFiZDM4YjYxZDA4YmY1MDE1N2RhNzFiIGxlZ2FjeS10cnVuaworNTQ2MjAgYTUwNzVhNTI3M2RmNzhkNGIxOTc4NDQ3MjgxZjJlYWNlNDBjNWQ2MiBsZWdhY3ktdHJ1bmsKKzU0NjIxIGNkYjI1Nzk4Y2YwYmEwNWE0ZGQ1YmE4ZWYyMDljN2ZiMjRiYTkyYzQgYW1rLW1haWxib3gKKzU0NjIyIDU4NDI3ZTFlNTFiZGM2MDY4OWZkNDhkN2E4MWI5M2M4YjVkZWJhYzEgcmVsZWFzZTI1LW1haW50Cis1NDYyMyBkYzZlOWY3OWNjNGFmYmZjNjgwNGE2Y2MwOGQ4ZWQ3OTYyMDA2MWJlIGxlZ2FjeS10cnVuaworNTQ2MjQgNTAyNjMyM2Q5OTI4ODMzNDYzNTg5OTE1NDdkZWZiYTY2NjQyOWRhMyBsZWdhY3ktdHJ1bmsKKzU0NjI1IDU1ZWNjM2E0NTY4NjYzODcyYTc5NTM3YTZmYjVkOWQ3N2MzYWQyMTUgbGVnYWN5LXRydW5rCis1NDYyOSBjMWY2N2UxZWVlNThiNjE5MzEyNzkwNjE1M2U4ZmM5OWYxMjQzZWU4IGxlZ2FjeS10cnVuaworNTQ2MzAgMzhhODYxMTgxZmRkNThjMzVkOWUzODQzMWY5NDBhOWRjMDdkMjNiZiBsZWdhY3ktdHJ1bmsKKzU0NjMxIDQxZGIzZjMwYTNmOWYwZDFjMTFjNjEwZDJmMWFhNThjN2I0MTY1ZWMgbGVnYWN5LXRydW5rCis1NDYzMiBkYjllYWRjMDc4MjY0MjM2MWJmNDYzNzgzYTk2Njk3YzVjZDA1ZjBmIGxlZ2FjeS10cnVuaworNTQ2MzMgZjg2NTU3ZTUwM2YzYTdkMTNlYWZjYWRmMDA2NjNjMWYxNTU4YzRlYiBsZWdhY3ktdHJ1bmsKKzU0NjM0IDkzNDc4NzQ0MTAzODc5YTg1YjQzMWIyMzkzMjQ1YTY2MjkwYTY3MzIgbGVnYWN5LXRydW5rCis1NDYzNSBjMmJmM2Q2NDZlZmZhMmIzMjkwMGY1MzNhOWQ3OWM0MzhhZGI2OGExIHJlbGVhc2UyNS1tYWludAorNTQ2MzYgMmNlOGU4MDUzOWNmNzkxNjNiZGFhMDY1NWE0ZDVlMGRiY2I0OTQ1OCByZWxlYXNlMjUtbWFpbnQKKzU0NjM3IGZjN2ZiY2YyYWU1MTc3YWZkZjI1N2NkYTYzYWQ0MjgyMmE4ZWY4ZDEgbGVnYWN5LXRydW5rCis1NDY0MSBmMjE5YmI3ZTc0YzkyMTcyYThhOWIzNDBiZTVlNTY3ZDFmZmUyODk1IHJlbGVhc2UyNS1tYWludAorNTQ2NDQgN2RlZTdmN2QyOWYwOGM5ZTgwMzdiYTMwZTI3MGY0YmU0ZWRiNDhhMiBsZWdhY3ktdHJ1bmsKKzU0NjQ1IDIyMTE5NDI0OWZhODZlM2M1ZDEzMTZiMWI2OTgzZWU0ZDM0ZjRhMjQgcmVsZWFzZTI1LW1haW50Cis1NDY0NiBiNWI3NTBjZjg1YzIwOTU2ZTZiZTZmYzcyNTNiOGEyMDcyZmY2ZjI5IGxlZ2FjeS10cnVuaworNTQ2NDcgNjk2YTY2NmRmZTYxNDE2OWU2NTdiZjQ4MDI1ZWEyOWU5OGM4ODAyMSBsZWdhY3ktdHJ1bmsKKzU0NjQ5IGVhNmYyYzVkMjc0OTJmMmM1NWI1OTc3MzA4MjUxYTE5NjZiYzRhZjMgbGVnYWN5LXRydW5rCis1NDY1MCBlOTVkMmJjZmViNDYzMWU2MzJhMDNmNDQwNTA5ZGVjZWZhZmUzYWNjIGxlZ2FjeS10cnVuaworNTQ2NTEgYWNkYjRmM2MzZDYzMjJhM2E5N2I5MDEwYTJkM2M1NzU5OTg0ODBjOCBsZWdhY3ktdHJ1bmsKKzU0NjUyIDFhNWRhMDc4YzQzNWYyZjc1NTgwMDViZDAzZmUyYzM3OTgyMmNiODYgbGVnYWN5LXRydW5rCis1NDY1MyA5MGM0YzNmMDQyMDU2YWZiZWRiZTQ0NjBhOWRjOTBlNDJjOWNmZDc2IGxlZ2FjeS10cnVuaworNTQ2NTQgMzViZGM2MWFjOGVhZGU5ZjJiZjA0ZWI5NDkyNTM2MmU3YTcxMmMwMSBsZWdhY3ktdHJ1bmsKKzU0NjU1IDQ3ZDA1ZjFhZWJkZGZiZGMyZTAwZGM4NWU1MmNjZDUyYTcwMWYzYjEgbGVnYWN5LXRydW5rCis1NDY1NyA4MWU1OGYwMTAxZGI3YTEyMTRlOTEwNTUwNzJmOGFjMmZkMTA0YmYxIHJlbGVhc2UyNS1tYWludAorNTQ2NTggZjc2NGE3NTUyMTYyZWZjMzA5MzhiN2VkODhlNTFhY2RjMzFiY2E3YSBsZWdhY3ktdHJ1bmsKKzU0NjYwIDEyZmYyMDk0OGEwMjI1NzM3YzUyNGRkYTcyMjVmYWMzNzFiMzU3ODEgYW1rLW1haWxib3gKKzU0NjYxIDY3NjBmMzhlOWVkNjc2MWJkZjY4YWE5MTAwNDg4ZGMwZWNhOTYxMzIgYW1rLW1haWxib3gKKzU0NjYyIDZhM2RkMWM0YTdkZjAxNDE1NTQxYWQ5M2JjYTk2ZjczYWMyNmMzMGUgcmVsZWFzZTI1LW1haW50Cis1NDY2MyA0YTAzODYwYWUwOGI1NzA3ZGVmOGMxNjhmNzFlZjlhZWE2OTYxZDQyIGxlZ2FjeS10cnVuaworNTQ2NjQgZWY1ZDNlNTM5Mzg0NzIyMDVjZWVmZTQwYWJiYzFjNDA0YWMzNWJiNyBsZWdhY3ktdHJ1bmsKKzU0NjY1IDk5YmYxNDU1NThkMzViMjU1OWM4ZTc3MmU3MWIzMjc1MTkxMTRjMDEgcmVsZWFzZTI1LW1haW50Cis1NDY2NiA0OGQ4ZDVkMzE3YWVlM2FhMmNjNjY0OGVjZGU2MWQ0MDY5NWE3MTQzIGxlZ2FjeS10cnVuaworNTQ2NjcgMzQzZWVmMzQyNzc3M2JlMDkwMjMyMGYzZGI5MTM1NmViNTFmMjVlOCByZWxlYXNlMjUtbWFpbnQKKzU0NjY4IGU2ODViZmE2YjRlYWI4NzUwMjRkNDIxNzViZDU0MDgzZjkwYTY2ZDEgbGVnYWN5LXRydW5rCis1NDY2OSBmNzFmZWVjN2Q1NDc4OWY5NGEzZWU5OWRmOWUzNzlmZDU0NmY1NTU4IGxlZ2FjeS10cnVuaworNTQ2NzAgODkwYmI5MDAwY2U1NTUzM2ZhNmY1NTczM2ZiNjBhYWUyYTgxMGIwYiByZWxlYXNlMjUtbWFpbnQKKzU0NjcxIDIyYTE2N2M0Njc4YzJhODVlZjdiYTZkZDk4NDhjNDc4YTdlYzNkMDMgbGVnYWN5LXRydW5rCis1NDY3MiA4NTExMmRkNTAwNTk1ZWUyMzNkZjUzMzZjYTYyMTliYmE0NjkxZDYyIGxlZ2FjeS10cnVuaworNTQ2NzMgY2ZhYzY0YTAyYTNkODNlMTYzNDQ0YTFkY2NlMjczNjNhMDllNDZlYSBsZWdhY3ktdHJ1bmsKKzU0Njc0IGM3MzgxODA0NDQ3YmMzZDQxNGIwZjkzM2M0MGE0ZTQ2Mzc5ODc0YzQgbGVnYWN5LXRydW5rCis1NDY3NSBhYzI1NWE0MmVjMGUxYTkxNDMyZmFkYzFhOWNkZDdmZDM1OTMxNmNjIGxlZ2FjeS10cnVuaworNTQ2NzYgZDQxZDFiYTIwOWM5NDJhZTA3MWE2NzUyYjNiNDExYzIwYjgzMGE0NCBsZWdhY3ktdHJ1bmsKKzU0Njc3IGNiNmNjZTRkNDIzMmJmNDI4ZDI0MGRjYzVlZGU3ZWQxODAxNDc1ZmYgbGVnYWN5LXRydW5rCis1NDY3OCBlMWFiMjVmZDViYWQ4MTQ1NWY0Yzk0Yzg0YmUxMzQ0M2Q0NmJiN2FkIGxlZ2FjeS10cnVuaworNTQ2ODEgZGQ3YzY5YmQwYzUyYTEzNWIzMTM2NzQzNWE3MzkyZjE4OWM0MjMxMiBsZWdhY3ktdHJ1bmsKKzU0NjgyIGU3Zjc4YTM3YWU1MGIwYjlmMjkxMzM4YjFlOGM5MTU2YWM3OGUwMTIgbGVnYWN5LXRydW5rCis1NDY4MyBiN2UzNzhlOWQwMmQ1NWMzZThkYjJjZGY5ZGJjODM2YWEyYmI1MTJiIGxlZ2FjeS10cnVuaworNTQ2ODQgNTg2YTdlODc3NTAwZTIwZWRkYzI2ZTVhN2ZkNWNmOTUwM2RhYzQwNCBsZWdhY3ktdHJ1bmsKKzU0Njg1IGQ4Y2Q4OGY5MzA5ODBkZTBmODZlY2IwNTM0YTRjMDJhYjkyNDBiZDggbGVnYWN5LXRydW5rCis1NDY4NiBiMDAxYjY1NDc4ZmFiZTk4MzYxMDgwNGFkODk5MzkyNTE3ZmZmZjI5IHJlbGVhc2UyNS1tYWludAorNTQ2ODcgNDMyNTAwMTgyODVjMmJiMjE5OTE4MmNjMTRhMTBjNmFjOGMyOGNjNSBsZWdhY3ktdHJ1bmsKKzU0Njg4IDcxMmExNWVmY2YxOWI3MzY5MTJkM2VhZjAwZWEzYmU2NGFmZWRjMDggbGVnYWN5LXRydW5rCis1NDY4OSA1MTJmNTZhZmE0YTA1MTNlNzBkNDA2MDUwY2E4NzIzYmI1YzgwMWI2IGxlZ2FjeS10cnVuaworNTQ2OTAgNGM3ZWJjMzk3ZDk0N2M3MTI2ZDc2YmRiYTIwZDdlYTNjNDRmMjMzZCByZWxlYXNlMjUtbWFpbnQKKzU0NjkxIDgxMjAyN2YxZWVhNTM1YTNhMzE5MWQ3ZTBlY2Q5YWZhZjI3ZjM4YzMgcmVsZWFzZTI1LW1haW50Cis1NDY5MiAyOGFlYzEzNThmNTk0ZTE0YmY3YmU2ZDg2YjBkYWI1MjUxNWZjMmQ2IHJlbGVhc2UyNS1tYWludAorNTQ2OTMgNDc3N2M0MDA3YjViMTk0NDIzOTUzZDQxYjFlNWU2YWRhYWJhNmM1ZCByZWxlYXNlMjUtbWFpbnQKKzU0Njk0IDgxNzBkNDRkZDkwNDg4ZGUwMjc4ZTUxMWMwMzdkYjMxYjI5ZGM1YTYgcmVsZWFzZTI1LW1haW50Cis1NDY5NSA4MGZmNzVmYTI3NTRlYjBmOGI0NWMwNDcyZTRiZjExN2Q2MWMxYzQ1IGxlZ2FjeS10cnVuaworNTQ2OTcgOWE1MGUyYjZiNjg1NzQ3ZjhmOTA1NzU0YzkyN2MxYjg1YjZmOWE0MiBsZWdhY3ktdHJ1bmsKKzU0Njk4IGVhNmZiZjQwNGMzNGQ5NjMxYjgzMDc0Y2E0MTZjZWVhZDdiYThlZmEgbGVnYWN5LXRydW5rCis1NDY5OSA1ODFkMTI3ZTgyMmI3MTk0NmUxNjRlYzg3YjFhMTU2NjkxYmQzNWVhIGxlZ2FjeS10cnVuaworNTQ3MDEgOTEyMDI4MTI0MWI4MmNlYzEwMWVhZGNhNWE2OWI0YzQ3MTUxYzU3NiBwM3lrCis1NDcwMiBiYWQ1ZjgzMjgwOWZjMjk0MTkxM2U0MGZjMThkOWIwMmVhMDBjMGVhIHAzeWsKKzU0NzAzIDU4ZDQ5Y2FlODg3ZjJmOWEzZGZiZDc2MTI0MTkxOGRmYTUxYzdkNjUgcDN5aworNTQ3MDQgM2IxMzk2YjAxMjM5MzgyMDI5MGZjMzA1MDhlMTNlMTQ4ZjQ5YWUxNiBsZWdhY3ktdHJ1bmsKKzU0NzA1IDIzNDg2OWRkMjc4NGVkMGY2ZmZiYmFjYjJhNTA5OWFlMzI4Zjk1YmYgbGVnYWN5LXRydW5rCis1NDcwNiA5NDA4ZGNkM2NlODhmZGYwMmYxYmY4NzQ0MTdhNzFiMjNjOTc2ZjY1IGxlZ2FjeS10cnVuaworNTQ3MDcgYzdiODMwYzg2ZjQyYmJkMzgxY2ZmNjJmMTkyYzg1NDQyNzAwZjhiNSBsZWdhY3ktdHJ1bmsKKzU0NzA4IDAyMGZkNmRlNjUyNWRhMzRjMDZiMDFlMmVjZjE3MTkwZjJmODU2ZmQgcDN5aworNTQ3MDkgYzU2NjAwNTViNDI1ZGRiYWFkNmZhNGI3OTQ4ZWQxNzBlYzA2MmNmNiBwM3lrCis1NDcxMCBkOGIxNDk5NGQ4NzBiNjhlNGQwYjc1OWRmMTIzNmM4ZjgzYjVjYWY2IHAzeWsKKzU0NzExIDgwZjVlZTIxZTU0NTU4N2RkNTBiZWYzY2VmMGIzMjg1ODRkYzM2NzcgbGVnYWN5LXRydW5rCis1NDcxMiBjYzAwYmNlNmM1OWQzN2EzNzg0OTMwNzY1ZTE4NjE4MzYwZjczMTJmIGxlZ2FjeS10cnVuaworNTQ3MTQgYjkxMjRjMGVmMTdhMzIxOGRlNDczYzQ2Yjc4ZTY2Y2RkZDk4ZWJhYyBwM3lrCis1NDcxNSBhZjUxMWQyNDQ2MzY5M2NmNDQwZDExYzg4NjM5YmJhZGZjZDlmOTExIHAzeWsKKzU0NzE3IGUyOWZhNGExY2JkOTMxYjNmZWE3MjUzNDBlYzY3NzgyMTE3ZDlhNWQgcDN5aworNTQ3MTggYTU3MDdiZjRmNmQxNDMzOTJlZmI2MWM4YzQ5ODA5ZWFjMjZhNDk5ZCBwM3lrCis1NDcxOSAzMzkwMTVkOThiNzg2NDIyNTc3YWZmNGI1NTU1M2QwMGU5NTdkZDk3IHAzeWsKKzU0NzIwIDUyMmIzZjM1ZDBlYjdkYmI2Mzc1MzJkYTc3Zjg1ZTE2YmY1YzA1NDggcDN5aworNTQ3MjYgNGQ1MGZhZDk1NzY4MjA2MmY0NDk3NTE0MGRmOTRiNjZiZTBlZjljYyBsZWdhY3ktdHJ1bmsKKzU0NzI3IDY1NzNlYzFlNWRjMGNkZmY0YWIyMDZmN2I5OTU4NjJhYzNmZTFhNzYgbGVnYWN5LXRydW5rCis1NDcyOCBmNDM5MWFiZTViMDIzNDVmMjE1NmJjNDM1N2U1OTMzMTJjMGEyZjk2IHAzeWsKKzU0NzI5IDg1NDM5OTI5N2Y5NTdlODUyNTEyZmE1OGU1YjRiN2E4NTg5YWE5ZWEgbGVnYWN5LXRydW5rCis1NDczMCA2N2Y5MDBkMmYyZTYyMTRlYzgxMWMyNTc3ZjA2ZWZjZmU4OTNlYzU5IGxlZ2FjeS10cnVuaworNTQ3MzIgYWU0Y2VkMjhhODM5MDJiYjIxZTlmMzJlNTI2NTU3OTk1MDc5NTJjOCBsZWdhY3ktdHJ1bmsKKzU0NzMzIDRmNzcwMTYyNTRiYzg0YmY1MWZlMjUwN2JhZmYyZjY1MzQ1Zjc5MDAgcDN5aworNTQ3MzcgYzkwZDc1YTVlMTkxMTRiYzdhYWVjMmE2Y2FlZmI0NGI1ODQzNzMzZCBwM3lrCis1NDczOCBkNDEwOGFjYTg3NjQyN2E5YWJhNWViOTlkMzJjYzMyYzQ1NzA2ZmI4IHAzeWsKKzU0NzQwIGJhMzFlNzEyMTBkNDY5ZDMzNjE3ODZmODQ3MzZkODE3MzMwMGM2ZGYgcDN5aworNTQ3NDEgZTdkOTc5MTAxNDMwOGE4NzUxOWE5MzliM2I5NTBjYjg4MWM1YjY2NiBsZWdhY3ktdHJ1bmsKKzU0NzQyIDdjNjk3MmYzN2ZlMzUzMjBjYzFmYmNiYzJmNTgzYjdmZDQ1MjBiNTggcDN5aworNTQ3NDQgMDQ4NmRlYWFhZGUzZTQwZTg2YWE1ZTMxOGU2MzE2MmEwNGY4YWE4YiBwM3lrCis1NDc0NSA0NTYxZjZkYTNiN2QzOTQ3ODY4ZjU1MWZiYzdlZGVlOThlNmM2ODE5IHAzeWsKKzU0NzQ2IDQwMTEwZDA2ZTgyYWUyM2I2NzkzZTZjZDIyOWM5YTk5MTc4YjQ0NTggbGVnYWN5LXRydW5rCis1NDc0NyAxNWYzNGFkNDY4MWI4ODU0NWEzNzZhNWVlZTZmMzc2YzBlN2RmODdjIGxlZ2FjeS10cnVuaworNTQ3NDggNzNjMDE2Njk2YTgyZjg0YmVjN2M1ZDAyZjJkY2U2ODA0YzAxYjM5NyBsZWdhY3ktdHJ1bmsKKzU0NzQ5IDI2Y2JjZDc5YTE1MzEwMTU2NTAzZTQ5OWIyODE4MDdiM2EzYzJlNzggcmVsZWFzZTI1LW1haW50Cis1NDc1MCAyOGJjN2VkMjY1NzQ3MzA1YTUyNjEyNDdlNWEyMDAyZjlmZjEwNTEzIHAzeWsKKzU0NzU0IDk4MWEzMWZmMTk2NmRmMzI1OTM0OWQxZWQ3NmIwNWQxZmNlMGI3YWEgcDN5aworNTQ3NTUgMDBkOWY1MGJkYzMxYWE5NGNiMTVhMjY3MDJjNjgxYzQyMDZkYTRjNiBwM3lrCis1NDc1NiBmMzkwNzkzZTc1ZGVjM2Q5N2E4MWYwMWI2MDMyMDFmMzdkNjlhZmZhIHAzeWsKKzU0NzU3IDQ2ZDBmNDA1NzcwNWIwOTdlOWExNzA4NzFmZDAxYTViNjIxMWRkMDYgbGVnYWN5LXRydW5rCis1NDc2MCAwZGZhMmE1NjQwNzYwZTY4OGY1NDdjNGE0YzBjYWM1YzRmZjNiMDFjIGxlZ2FjeS10cnVuaworNTQ3NjEgMzY2N2QxYThjOTE2ZjFhM2RjODFhOTAzZTBjZGJmODMyNmE2N2FiYSBwM3lrCis1NDc2MiBhMDFjYjNkZjM4ZGRmMzQ3NDFiMjQ4MmRhNzNkOTk3ZWRkMjEwODRjIGxlZ2FjeS10cnVuaworNTQ3NjMgYzRmNDAzZjQ1MGVkYTY1ZTlhMjE2YzcwOWEzOTJmMDk0MGUwNDBhMiBsZWdhY3ktdHJ1bmsKKzU0NzcyIGNlZGM4ZDdkMWM3ZmViNTJiMjZmZWJlZDllY2M3OWMyNzU1NTYxNDAgbGVnYWN5LXRydW5rCis1NDc3NCA4NmM0NmRjNmE3NzRhZTk3NDVhNTA0OGU0NDI4ZjgwYWUxNzdmMTMxIHAzeWsKKzU0Nzc3IDY1Y2I2YjFmYTM5NTFmMzQ1MDgwZDFjODJhYjczN2I3OWE3NGI3ZmMgcDN5aworNTQ3ODQgYzM0ZDcwNWI4ODRlNGU5ZjA3MzM3OWI1MWZlMGFjYTJlNWZlYTVjOSBsZWdhY3ktdHJ1bmsKKzU0Nzg1IGMwYzQ0MDdkMzUzMWM2YmFmNTRjYzA4NTk0NGRmZWVjY2Y3YjkwNjMgbGVnYWN5LXRydW5rCis1NDc4NiA4NDQ3MzE0ZjUwMGE5N2NjNTVjNGZkODQ2OWFiZmFjOWZkMTAzMWI1IGxlZ2FjeS10cnVuaworNTQ3ODcgOTUzYmRlZmQ4MWZmNTU2YWU2MjFkN2ZmODZkMTE4MzI5MjRkNTI1ZCBwM3lrCis1NDc4OCAzNTY5NTg3YmVmMDY1ZWI5MDNjY2M4YjM2MjI3ZmUyOGQzN2EzNjY1IHAzeWsKKzU0Nzk3IDQ1OGM4ZGIyZTk0NjE2YTJhZjMzYzQ3NzAzNzEyYzlhODYyOWY4NjAgcDN5aworNTQ3OTggMGEzODliNDdmMTI5ZThmNmQwNmViYjhkMTJkY2VmMzgxODY4MTRiZSBwM3lrCis1NDc5OSBkMWMzZGQxODRlMzg4MmI5OTQ0Mjc0MzZlYmVhYTQ4MDllZDM2ZmRlIHAzeWsKKzU0ODAwIGUyZDdhNGMzOTM2MGE4ZjFjMTM3YjA4YTUxYTQ2ZGQ5NjZiYmUwMjkgcDN5aworNTQ4MDEgM2MzMzlkZTgwMDEwNTZiNmQyYTA3NGEyNDA5ODMxYThhNjc4ZTEyMiBwM3lrCis1NDgwMiAzNWY5ZmZjNmI1MTBmOGY5YzY2YzY2MmNmYjIyOGQ2ZWUwMzUyMDc1IHAzeWsKKzU0ODA1IGI4MjJmYmQ4NWFmZWIzYjdhYjI0Nzc0NzY1OTBkYzQyYjk3MjcxMjQgcmVsZWFzZTI1LW1haW50Cis1NDgwNiA1ZGZkMmY0YmM4MzRiNjgzMzNjNWYxOTZlMDEwODIzMzU1NTE5NDUwIHAzeWsKKzU0ODA3IDUzNGU0YzcwN2U5MWU2YmRhOGNkMzI1ODUzZjk2MTAyNWI2OTBmZWIgbGVnYWN5LXRydW5rCis1NDgwOCBiYWI5YzM4MTcwOTI2YjM3NmIxNTAwYmNjZTAzMzVhYmU2OTNlMmQyIHAzeWsKKzU0ODEyIDBkMWU0MTVlYzM2Y2NkMzY5ZTQwNmQxZGJiZTk3MTQ0MDQyMWZiOGIgbGVnYWN5LXRydW5rCis1NDgxMyA4MmYyNzkxYjdjMDIyMTY0YWYyZDgyM2I4NWJjM2Y0MDZjMjM0NGE3IHJlbGVhc2UyNS1tYWludAorNTQ4MTQgZWEzY2E0OTVmMzIxMWQzYjFlODVmNjA0MGRiMjJiZmRmODMwYjRmNiBsZWdhY3ktdHJ1bmsKKzU0ODE1IGVkODIwMjM5Zjg3ODc2MDZjZmI4NDA4Yjk0YjQyNjcwNDEzMTYzZmEgcmVsZWFzZTI1LW1haW50Cis1NDgxNiA4NDIzNzcyMDk3Yzc0YTZjYzBhZGVkODdmZmU1MzJiNDZmMzRmMzgzIGxlZ2FjeS10cnVuaworNTQ4MjUgNWY4YTg3ZmI0ZGYzMzJkOWY5YjNlNzRiZTRiYjljZTE0ZTlhZTUxYSBsZWdhY3ktdHJ1bmsKKzU0ODM1IDA2MGM3OWY2ZDkxOTY3ZmVkM2MyNzk1YzhkYTA5MWU0NGUyZjIyODggcDN5aworNTQ4MzYgZDY3YjVkOTUzYjQ1MjNiMjhiYjYxY2MwNmEyMzk1NmIzODE4OWNjYyByZWxlYXNlMjUtbWFpbnQKKzU0ODM3IGJjNzVjNTIzYjlkODE3MTY0ZTdmMWQ0NGVjM2FlM2U2MWFlMDc4ZTMgcmVsZWFzZTI1LW1haW50Cis1NDgzOCA1NjIzZTIzM2U5Y2NmZDQ3YmUzOTY3OGUxMTc3OTNhMjcyMGMxZjA2IHJlbGVhc2UyNS1tYWludAorNTQ4MzkgNDU3OWEyNzRmZDZlMmE1OWVmNmZiNDNjMWM5Nzk5YTZkYzBlOGEwYSByZWxlYXNlMjUtbWFpbnQKKzU0ODQwIDJmZTkxZDIwMWIwNTIyYzFjMzE3NTVhZDI2ZGViNmQ4N2Q1YzFkNzMgcmVsZWFzZTI1LW1haW50Cis1NDg0MSAzMWM5MjgyOGFlZmIxYjI0ZTkwMDU1YjE0OTdlMDZkOWVkZmJhMjlmIGxlZ2FjeS10cnVuaworNTQ4NDIgM2U1ZmRiOTNjOTVhN2NjMmU5ZDc2MDBjNmQ0MTUyYjM0NjdlNzU2YiBwM3lrCis1NDg0NCBjYzcwN2YxYWUwYjZlZWQzZDMyNTQyNzRjYjVmZmM1MTNlNzIxOWZlIGxlZ2FjeS10cnVuaworNTQ4NDUgYTQ5ODU5ZjQ0YzQzMGM2NTQyMDZjN2U1Y2I0OGQwMDU1ODY1MTFjOSBwM3lrCis1NDg0NiBiNWEyZTc1M2I2ODIzMWIwZDFjM2Q1NjRkODQyYjk1ZDg0MGQ1MzAyIHAzeWsKKzU0ODQ5IGUwMTE2OTY2MzY1ZTJiN2Y2ZDk4ZmE0MzZiNTM1YWRmYzA1NmRmZjMgbGVnYWN5LXRydW5rCis1NDg1MCBjMWNmZDBhZjVmNTczMjcxNDdjMzM1ZDI3ZTllOWJhODQ3YWJhNzFjIHAzeWsKKzU0ODUxIDA5MDk3MmMyMGE0NzJlOWIyZDViOWMxMTI2YjcxOGU0NTI3ZTJlZmUgcDN5aworNTQ4NTIgYTMwYWY4MzNkMzg5YjgyOGRlMzM0NWJmNDE3MzY2OThlZGI1ZmU0MCBwM3lrCis1NDg1MyA5NjU3Mzk1YzI1ZTU4YmNkZWU2MWJmZDkxOTU3MGYzNDcxNmM1YjY3IHAzeWsKKzU0ODU0IDk5MDI3YzJiM2ZkMmRlNDlhOTY3ZWJlMDA4ZGE1NDIyY2E0NDhkYTUgcDN5aworNTQ4NTUgYmVhMGE1NTkyZGIzZmRlOTdmNjlkYjJmY2MxNDUyMGQ1NWRkYjkyOSBwM3lrCis1NDg1NiBhNWU0MTA2MzllMjQ4NjM1NTgwNzFjYmQ4YmFjNGI0MmFkMjMxMWM3IHAzeWsKKzU0ODU3IDYxYzI4ZDc3OGUzNzkzMmIzOGFhYTBiZDdkMzQ2MGI0MThmMzMwOWQgcmVsZWFzZTI1LW1haW50Cis1NDg2MyA0OTBkOGMwOWFiY2I4MTQ5NTBiZTdiYjdhMjVjM2ZmMjA0N2M3ZWI1IHJlbGVhc2UyNS1tYWludAorNTQ4NjQgNGUwZTg0ZjlkMTRlMmI1ZDI4NjRiMWIzYjFlMTUyZDIwYzEyYzA1ZSByZWxlYXNlMjUtbWFpbnQKKzU0ODczIGMzMmM0YjNkYTkzZmQ0YmZmNjQxN2Q2NjQwOThjNGFhMDBlOGFhZTkgbGVnYWN5LXRydW5rCis1NDg3NCA1ODUyN2I5YjI0MmM3ZDRiZDUxOTgwZGQ1YTEwYTExYWI2ZWJlOTc0IGxlZ2FjeS10cnVuaworNTQ4NzUgNWE2ZDkwM2FiN2I1YmE0ZWYwZDFkOTFkMmMxYjBlZDZiMWFhNDg5YyBsZWdhY3ktdHJ1bmsKKzU0ODc2IGRhNDAzZDJiODg2YWI1OGJmMGRmMWMxMWRjNzFkZGMzZGE1ODk3ZTUgbGVnYWN5LXRydW5rCis1NDg4NCA3NmZkM2I5OGQwMDdmNmM0OGNhZTkxOWIzOWJkYzEzZTg3Y2MzZTBiIGxlZ2FjeS10cnVuaworNTQ4ODUgMTdlNDM2M2VmMmI1MzBmMWFhOWEwYmMxMjg0MThlZTYzZjdjNDRlMCByZWxlYXNlMjUtbWFpbnQKKzU0ODg2IDBmNjc1YTYyOTc3MGFhMWMyZmJhZDAwMjdjMjU1OTA3ZmIxYWM5ODEgZGVjaW1hbC1icmFuY2gKKzU0ODg5IDAxZTZkODRlMzg5MjQ1MjQ3MzIzNmYyM2VlYWVmNzRlZTk5OTM2YWUgcmVsZWFzZTI1LW1haW50Cis1NDg5MSAxODc5NWQ0OWI4ZDJhYzQwYmRkMzg4OTAzNDdiNzQwMGM0ZjQ1NDg5IGRlY2ltYWwtYnJhbmNoCis1NDg5MiBmNDM2NjRlOGExZmE0YzlmZGM0NTBkMDU3MjRlNzJkOTRlYzQxODFlIGRlY2ltYWwtYnJhbmNoCis1NDg5MyBiZmI2ZjEzMzJmYjRlMzNkNWM3MjRhNmJiZWFmNTQ2YTUwOTY2NGU0IGRlY2ltYWwtYnJhbmNoCis1NDg5NyBmNzc3ZDFkZDRkY2RkYTI1NzdkMmZhZjQyZDE0NmZiYzRhOWM5Y2EyIGJjYW5ub24tb2JqY2FwCis1NDg5OCA2YjQ2NWNjMDI1YjNmNzVjYmZiYzZlYjdkNDkxNjUzZGM4OGU2MjFhIGJjYW5ub24tb2JqY2FwCis1NDg5OSA4NGI1YWNlZDUzNTYxMzg4ZjMxMTczNDkzZDhiOTBkNWIwMzk2NTc3IGJjYW5ub24tb2JqY2FwCis1NDkwMCBhZjcyNmZiNjgxZmFhYWViODgxNjYyNGFjNjE1Y2U3ZDQ5OWEyNWVkIGJjYW5ub24tb2JqY2FwCis1NDkwMSAwYjcwODMwZWQ3NDNmY2NhZDhlYWRhMzQwNDc5ZTYxY2UzYmYxNWQ0IGJjYW5ub24tb2JqY2FwCis1NDkwMiBiYjYwYjk1Mzk4Mzk0MWU5MjI2NGIyN2UxYjNmYTI1Njc0YmVhZDQyIHJlbGVhc2UyNS1tYWludAorNTQ5MDMgOGNkMDkzMjc0ZDU3ODEwZDZkMTY4YTMzZDc4NmE1ZDNjODJkNmQ2NiByZWxlYXNlMjUtbWFpbnQKKzU0OTA0IDFjYzZiZjIzNDllNGUxZTAzY2QwNzVkNmI5Yjg4Yzk1MmYyZjUwYmYgcmVsZWFzZTI1LW1haW50Cis1NDkwNSA5YThjM2Q5ZjQwNWE4YTVmYzY3ZDE3ZmZkMzcxZmIxYTMzMjNjMzgyIHJlbGVhc2UyNS1tYWludAorNTQ5MDYgNmM2YzhhOGFmYjM4MWU4YWE0NDVkOGJmNzcwMDQ3MWFjY2M4YzU2OSByZWxlYXNlMjUtbWFpbnQKKzU0OTA3IDVhNDYxOTIxNDA0M2QwMTY2MzJlZTg0MmUwOGQ1ODgzYzY3OWEwMjggcmVsZWFzZTI1LW1haW50Cis1NDkwOCBhYTNjN2JhNTNmOWQyZjQ2OTZlMGVmMjIwZGQzMjMwMDZhNzdmOGUzIHJlbGVhc2UyNS1tYWludAorNTQ5MDkgMGE2ZTUzN2I4ZDk2YjM2N2E5NDRmNjQxZWZmMjk2YTljNzZjYzUwMiByZWxlYXNlMjUtbWFpbnQKKzU0OTEwIDBjNTAxOWFmYzU1YjVlMmFlY2Q4ZDFkNjdiNjkyNzkwZTBiM2FmZDkgcDN5aworNTQ5MTcgMWUyOGM2OGI0ZTQzZmIyZjk1NmQ4ODJiMDAzNWRhNDNmMzRiY2Q1NiBwM3lrCis1NDkxOCAyODA0ZTQ4ODYxYmE2MjdmNDg4ZGU1NjZkZjEzYjhmOWI4ZjVmZDU5IGxlZ2FjeS10cnVuaworNTQ5MTkgNDU2MzhiMzdiODJjODEzOGU1ZDY2ZjVkOWM1MDFkMzYxMDMyYjA1ZSByZWxlYXNlMjUtbWFpbnQKKzU0OTIwIDNjY2I0YzE0M2QzYjhiMjUzZWYwMTRlYWNlMWZiZTExMmI3NjkzMmUgbGVnYWN5LXRydW5rCis1NDkyMiAzYzI2NzA5MmYxMzFlNWFiNzZlNTdlNWY1YjkxYTI5ZGQxYWJmZTBkIHJlbGVhc2UyNS1tYWludAorNTQ5MjQgZjU1MjZkMmViNjU0N2IxZDhjYWJjY2EzOWFkZTI5ZmUxNTkyZWM4YyByZWxlYXNlMjUtbWFpbnQKKzU0OTI1IDU1ZDc2MWFjZGNiY2Q0MTJkOWVmMTRhY2YxOTc5Yjk3NTMwZjhhMjEgcDN5aworNTQ5MjYgMjZkZjU2NmY4MGYwZGQ3OGZjNDUwZmNjZWViZjMxMDRkNTlkMDU2MSBwM3lrCis1NDkyNyA4MTBkMzMzYTczYTEwZGRlMGY2MDNmNWZhZmI1MmFjNWFkYTBkMDBiIGxlZ2FjeS10cnVuaworNTQ5MjkgM2MxMjA1Y2E0NDJiNmJjODc2MGNkOGRkNjIyZDdhODU5ZTZhNGI0ZiBsZWdhY3ktdHJ1bmsKKzU0OTMwIGZkMGZiZmZkNmQ1MGY3ODVjZmQ2MDk5ZmRkNDAwNTdhNWZkNzE0NjYgcmVsZWFzZTI1LW1haW50Cis1NDkzMSAwOWRkYmFkZTY1ZmVkYTM5MDJjZGNlN2FjNmI2NmZiZjI5MjRlMTZmIGxlZ2FjeS10cnVuaworNTQ5MzIgOTFmMzEyMTc2ZWFmMzc4ZjA3ODVhN2YzYTk5M2FiZjA2N2YzNjViMiBsZWdhY3ktdHJ1bmsKKzU0OTMzIGY0NDYxOTM4ZjUwZTM1YmUzODY2NGY4YjFlNTQ0NTJmNjUxN2RiOTIgcmVsZWFzZTI1LW1haW50Cis1NDkzNCAyZjg3NmE1ZmZhMGQzZDRmMmM1ZmJlYjBlNmUzOWQzODU1MDllMDZmIGxlZ2FjeS10cnVuaworNTQ5MzUgZDM2YTM2MWMwNWZkMDI3ZDNiNzgxMDZiOGE1M2M0MTBlNjMxZDhkOSByZWxlYXNlMjUtbWFpbnQKKzU0OTM4IGY1OGMwZDExYTc1YzMxNTM5NmQ4MTA4ZThjODBjOWQwMjFmYjk1Y2UgbGVnYWN5LXRydW5rCis1NDkzOSA4ZDUwMThkNzUwOGEyYTdiM2E2YjE4N2E0ODkzZWZiYzY1ZTgwODE4IGxlZ2FjeS10cnVuaworNTQ5NDAgZDA1ZDk4NjRiNjNjNzllYzYxZmEzOTY2ZmZmM2I3YjVlYzRmOWYwNSByZWxlYXNlMjUtbWFpbnQKKzU0OTQxIDdlYTU5NDk3MTRhZDE1Yjg2ZTA3ZWI1N2JmZWZlOTk5ZTEzNmQzZDIgbGVnYWN5LXRydW5rCis1NDk0MiBhYmZhNzA1NWI4ZjMwOWIyNTA1YTcyNTM3ZWQ3MDg3YjVjMTVjMjVkIHJlbGVhc2UyNS1tYWludAorNTQ5NDMgN2U5OWFmODY5YzkxNzZkYjQ2ODFhYmIzNTRhOGUxZjBiYThiOWRmNyByZWxlYXNlMjUtbWFpbnQKKzU0OTQ0IDUxOWYyMzEzNDUzYjcxYmQ4MjUxZGRlYWViYzhjY2RmODA0ZjZlZjEgbGVnYWN5LXRydW5rCis1NDk0NSBiNjgyNzI0NDlkZjRiMDMxMWJkNzBjOTRhMjdhNDczNTM2YTM1NWI1IGxlZ2FjeS10cnVuaworNTQ5NDcgNzA4YzhjNWZjMTczMjM2YWNkMjhjMDhkOWY0NTc1ZTdhMTRmNzZlMiBsZWdhY3ktdHJ1bmsKKzU0OTQ4IDFiYjFmYTdmZDE3NDFiMzdiMWU3ODlhMzczNTg0MTc3OWRiNWI4ZDYgbGVnYWN5LXRydW5rCis1NDk0OSA0N2FlYjI0ODgyYmQ3OWQ1YWZiODlkN2UwNzY0OTg0NWFkNzRiMWY0IGxlZ2FjeS10cnVuaworNTQ5NTAgM2VlODQ5NzQ2YzFiZjViNTMwMGFhMTljOTIyZTgyMTU2OTNlNTI5NiByZWxlYXNlMjUtbWFpbnQKKzU0OTUxIDM3OTdiOTgwOTJjZWEyZGE4ZmRhNjkyYmQwM2U4MzVmNGIyY2M2MmIgbGVnYWN5LXRydW5rCis1NDk1MiBjYTQ4OTgwNGFlMjAxMDYzZDQyZTIyY2I0ZjA1NWI0ODc5MDU1ZTAxIHJlbGVhc2UyNS1tYWludAorNTQ5NTMgNGI5ZmE4MDkyZTgyNzEwM2JjZDFiMWIyZjVmOTY3NmNlZDQwYTgxOSBsZWdhY3ktdHJ1bmsKKzU0OTU0IDdkZWQ3ODdlNjMxMTZjYzljMjZiNjk1Y2FjYzk2ZTkyY2EwNGUyZjggcmVsZWFzZTI1LW1haW50Cis1NDk1NiA2YzRkNzY3OGFmNWUyZDE5MzdmYzhmYjE2N2Y0MWEyMTA2MWM2ZTkzIGxlZ2FjeS10cnVuaworNTQ5NTcgMTAwMmY0MmUxMGNkZjJkMmJiNWU4MWZiN2NjZGM3OTNiMWY4MzgyZCBsZWdhY3ktdHJ1bmsKKzU0OTU4IDcxYjVjMWUyYzA5YzIyMWYxMTMzMzdlYzgxYzhjODg1ZWVmMmFlZGMgbGVnYWN5LXRydW5rCis1NDk1OSAwMTk5MDRjNjQ3MTdjODY4NzM4YThkYmFkN2JiZTczOTM4ODcyYWIyIGxlZ2FjeS10cnVuaworNTQ5NjAgMWYxZmI4MTg4OGFlMjhlNWRiNWQ5MzdiOTcyM2U0NmIyM2IxMTk2NyBsZWdhY3ktdHJ1bmsKKzU0OTYxIDc2MWNlMzk0NmI4NmViODM2MzExNTBlZTRjMDc1ODAyOTEwN2FkNWQgbGVnYWN5LXRydW5rCis1NDk2MiAzZjQzZWJmYTkyZGNmMjNkNTY0YjA3YWZhYzUyZDA0ZjNlYTY2ZjVkIHJlbGVhc2UyNS1tYWludAorNTQ5NjkgMGYyOWExYTA5NzJjZGZhNDNlY2QyNDVmY2U0OTRlNzVmMDM5NDYyMiBsZWdhY3ktdHJ1bmsKKzU0OTczIGU2MTZmYTEzMGMyZmNjM2QwNTNjYmUwN2U5NDZkMTliOTg0NWZlYTMgZGVjaW1hbC1icmFuY2gKKzU0OTc0IDA3M2Q2OGMyOTA0OTM4M2IwZmMzZjU2OTYxMzRiNTI5M2Y5NDlkMmYgbGVnYWN5LXRydW5rCis1NDk3OSBiNmU4YWRlYzA1NGM3ZDdjY2QzYmVhNmQyOTk0NjQ3MThkMDE3N2I5IGxlZ2FjeS10cnVuaworNTQ5ODAgMDBiZjE0NzYwMWU0OGQxNWZlOTQyMTAxOTJiNWNmOWMyOTYxZTZkMSBwM3lrCis1NDk4MSBmNzY2M2M2NzM0YmJlNGU0MzJhZWJmNGJkYThmYWVmNmUwMDU3ZWZhIHJlbGVhc2UyNS1tYWludAorNTQ5ODIgZDlhNDg3YzJmYTk2MTYwMTA2ZGE4YzU5NGY0MzczMTk1M2Q3MzZkMSBsZWdhY3ktdHJ1bmsKKzU0OTgzIDY4NzdiNzhlODEwZDAyNDU2MjllZWZmYmRlMDk0ZjU2ZmRkMTljOGEgbGVnYWN5LXRydW5rCis1NDk4NCA4OTA1ZGY2MTc2MTNlMWMwZThiZjE4ZGZlY2Q4M2Y0ZjE3NTUyMGE0IGxlZ2FjeS10cnVuaworNTQ5ODUgN2NjMzEwMzJlMjA2M2ZlMDYxMzg0ZjhlYzVhZjNmNDcwZjBjOTRjOSBsZWdhY3ktdHJ1bmsKKzU0OTk1IDkzOGM1YWU4ZGMzMTRiZTI5ODkzZGJlMGJlM2NlNDIyMzIzODc2ZTUgbGVnYWN5LXRydW5rCis1NTAwMSAxMjY0OWE3MzRiZTYyODNlMGFiYWRmMGM3ZDk3ZTQ0YTQ0MDg5OTlmIHJlbGVhc2UyNS1tYWludAorNTUwMDIgY2M5YWZlZGVkMjNmY2ExNjcwNDA5NjE4MDg0OWFhNWM1NDY1MzhmYiBsZWdhY3ktdHJ1bmsKKzU1MDA0IGFkZmFiYzU3MzYxZDM3Yzk5OTlmYzE1ZTRiY2Q1ZmJlM2NiNWE3Y2MgcDN5aworNTUwMDUgMDYxNDVmYmM3YWI5MzE4MzQwNGZlZDZmOGM2M2FlNDMyNWYzNzgyNCBwM3lrCis1NTAwNyAyNzAwODY5OTRmNDg0ZTk2MTk1MzBjYjk5NGE4NzJiMTk2Y2JiOWE4IHB5M2stc3RydW5pCis1NTAwOCBhNmE0MzZhYWVmZGJlZWVlMjg1OGRlNTBiNzgxNDNhZDZjZjExZWMxIHJlbGVhc2UyNS1tYWludAorNTUwMTEgNzZlMzc1YWI3NTI1NzQwNjI2ODE1NmJmYzA2MzBhM2EyZmJkM2Y1MCByZWxlYXNlMjUtbWFpbnQKKzU1MDEzIDI5YWU2NjdmMzIzOTQxMTY0NzgwNmMyNzY1YTE3ZDJjNWEzMjg5OTggcHkzay1zdHJ1bmkKKzU1MDIxIGFkMWQ1NmMwNzQyMzM5NmYxYmI2ZWQ4M2Y0NDI5ODlhMGJiZjRhMjcgbGVnYWN5LXRydW5rCis1NTAyMiA1MjExNjBjOWIzNjlkMDRhOWNmOTk5NDU2NTgzYzYxNTAyOTE0OTlkIHJlbGVhc2UyNS1tYWludAorNTUwMjQgNGY4MDFhNzU4OTM2ZDQ0NjY0NDJiMTUxMmM0ZjMzNTkwNGNjODY0NiBsZWdhY3ktdHJ1bmsKKzU1MDI1IDZhNTZhZWRiZTI4MDhhM2E2Yjk4MTBhMTYyMTk3ODczZDViOWVmMjMgbGVnYWN5LXRydW5rCis1NTAyNiA4NzNkZmI1MmMzMzQ2MDZhMDliYzI3ZWFlYzk1NDJmMDVkNDgzMDZiIHJlbGVhc2UyNS1tYWludAorNTUwMjcgODJlNzk5ODNjYjBjMjk5ODQ4OWQzOGU2NzA4NWY0NDk0MDFkYmVjZCBsZWdhY3ktdHJ1bmsKKzU1MDM2IGI4NmJkNzdkM2Q0MDQwZTNkMTVkNDYzZDFhNzAwZmY4NDFiMTFhZWIgbGVnYWN5LXRydW5rCis1NTAzNyBiYzdhMDM3OWQzYjE4ZWIzYjQxNzNjNDFjNmE0MTJiZjdmYmMxMGIzIHJlbGVhc2UyNS1tYWludAorNTUwMzggODZhMjMyZWE4YmE0NWRjZWJmNGUzZTFhN2IzNGNiNjQ0MzY3ZTI2NiBsZWdhY3ktdHJ1bmsKKzU1MDM5IDAwZmU0YmIwMjkzNjRkN2ExYWUxZWVjYjYxYTFiZmI5ZTQ5NmYxMjQgcmVsZWFzZTI1LW1haW50Cis1NTA0MSAyYjJkNTdkNmNjN2ViODA1ZTU4NTk3YTM2Yjc0YjcyMTYxOTIzMmE2IGxlZ2FjeS10cnVuaworNTUwNDIgZDNkZjMxZDQ1NDU3MWJhODViYjhhNmY1ODY2YjU2MTdmNmY2MDhlMSBsZWdhY3ktdHJ1bmsKKzU1MDcwIDM3NjlhNTE5NjAzNWEzMDc1MDg0YzM4OWM3NzNjMTUwNWYwOGE2NDYgbGVnYWN5LXRydW5rCis1NTA3MiBlNTBkODJjNDE4YTcyZmU0NTFkN2ZlODgyMTczMWVhYzQ0ODIyYmE3IHJlbGVhc2UyNS1tYWludAorNTUwNzMgYTNiZjU1YTAzZjY2ZjdiYjJjNDMzZTIzODYyYWNjMjY0YzE5NmNjNSByZWxlYXNlMjUtbWFpbnQKKzU1MDc0IDM5ZTk1MzgwNTE4NDkzN2Q0YTZmZmI5NjYwMWE4NjYzYjk4OWUzZDIgcmVsZWFzZTI1LW1haW50Cis1NTA3NyBlYWIyOTVkOTNjOGU2NTA2OTMwYzI0MTYyMDE2Y2U3ZDk4MmJjYTcxIHAzeWsKKzU1MDc5IGJlYWNmNDBiNTk2MDdhNjJiZTliNjdjOThlMmJhMDk1MmNhNjg2ZjggcHkzay1zdHJ1bmkKKzU1MDgwIDk4MGZmMGIxYjk1Nzg1NTRkZmIzYTQxYTQ1NGY1NGY2Y2E0M2U3MGEgbGVnYWN5LXRydW5rCis1NTA4MSAzZDcyYzEwOTFlNWEzOWJhZWViOGE4MDg4MzBmYTgzZTI1MGMxYTkxIHJlbGVhc2UyNS1tYWludAorNTUwODMgYmM2YTBmZTMyMzUxN2VkNDgyNWU3ZTJlMmFkYWY5ZmU1ZWNkM2IwMCBsZWdhY3ktdHJ1bmsKKzU1MDg2IGQ3MDU2NTQ1N2VhYmIwNGU4Mjg0MWE1ZTE4NzBhZjBjYjQ2MjMwNmEgYmNhbm5vbi1vYmpjYXAKKzU1MDg3IDdhNGYxNzRkZjg0NDEwOTRkMzg2MjhjYmFlZjM5NWRhOWUxOTcwZWMgbGVnYWN5LXRydW5rCis1NTA5MCBhNjg0NjdjYzA2ZDNiNGEwNTJmZDJlYmUxM2UzZDgzZjk4YTU5ZjBlIGxlZ2FjeS10cnVuaworNTUwOTIgZTliZWY1YjQyMDAxNTU0ZGEwODkwZDc5MTNjODVlNDIwNDQ2MzY4ZSBsZWdhY3ktdHJ1bmsKKzU1MDkzIDI1Y2MxY2VlNWU2OTA0MWFkMDBhMjdjMmI5YTM1MTdmMjFkMjg5ZTUgbGVnYWN5LXRydW5rCis1NTA5NCA3Yjc0YTE5NzYwOWI4NjIxODYwN2E4ZjU5ZDRiNTY2YzUwMGM0ZWQyIGxlZ2FjeS10cnVuaworNTUwOTUgYzFmNmY5ODQ4YjE3Y2MxOGU3OGExNjQ4NGM1NjRjZTNhMzhjYTc2MiByZWxlYXNlMjUtbWFpbnQKKzU1MDk3IDgyNWQ5NjYzMzhlYTcwMDA2MWIzZjVmOGJkMGI2ZWY0NDkzMzc5MmQgcHkzay1zdHJ1bmkKKzU1MDk5IDM2OGZlZDlhZjc2MTc5OTExNTc3NDRhMmM3MzA4ZTYzYjZhNzRlZmIgcHkzay1zdHJ1bmkKKzU1MTAwIDE1YjgxMGUyMWZlOWE5MGI0MTRhYTM3OTlhNjQwY2E1ZDExM2IyNjMgcHkzay1zdHJ1bmkKKzU1MTAxIDliMDFkZmQwM2MyOTQ5YzBjOTY0ZDM2NjMwNTE1YzVjY2FiYmQyYWMgbGVnYWN5LXRydW5rCis1NTEwMiAzN2Q4MmJlZTdhMTYxNWNjNWFmZGNiMzI1NGJkZTQxYWEzYzA0NTliIGxlZ2FjeS10cnVuaworNTUxMDMgMWMxNzA1YmYzNmI4OGI3ZDQxYjU4MzEzMTM2ODFiY2I0YTE1MDI1YiBsZWdhY3ktdHJ1bmsKKzU1MTA0IGE4NWQ3MTUwMDllY2MxYTgwZTUzYzVlYTM1ZGJlZjJkZGU0MTUyMzMgcHkzay1zdHJ1bmkKKzU1MTA1IDFlNWEyYTJiMThlZWRiODljY2E3ZTgzMWVhNzI2NzZiZmFhODY0MmIgcHkzay1zdHJ1bmkKKzU1MTA2IGRjNWExNTY3YWY5ODRkNWU2ZmNjODljYmFiZmJmMjBhOGQyMjU4MDggcHkzay1zdHJ1bmkKKzU1MTA3IGY2ZmE0NzA4YTRkYjQ3MTFmOWM0MzZlNDIwYjA1MDQ3MWI2M2MwZDcgbGVnYWN5LXRydW5rCis1NTEwOCAyYzU0NzYzYzQ1MDQyMWQwYmYzY2FiOGEyZWVjZjc4ZGE4YmY4NDY5IHB5M2stc3RydW5pCis1NTEwOSBjZmIzZTAwMjFiM2JmOGQzMmJmYWY3NjE3YzJkODBiYmUwZjYxY2RlIHB5M2stc3RydW5pCis1NTExMCBjYjNjOTIwNjJlYzQwNWU5ZDgxODcwZWJhZGY5ZjI3OWRmZDkwYzY4IHB5M2stc3RydW5pCis1NTExMSBjYTQ0OGM2MDdiMTQwMWNlODBiNzhkYzViZGJmYjI2OGE2ZTVjYWVkIHB5M2stc3RydW5pCis1NTExMiBhMTRmZjM3MGI2M2Q5MzJiNmE1ODBjODRkZTU3ZmZlMTU4ODhjODkzIHB5M2stc3RydW5pCis1NTExMyBhYzE2YmVjZTFlNWZiN2Y1ZTRmMjExZjcwMGRkMDBiNjc1ZmI0NmQ5IHB5M2stc3RydW5pCis1NTExNCBiMzlhYmNiYmJiYmE0YjU0MmFiNWU1MjkyNTYxYzVlZWQ0ZDU4N2I1IHB5M2stc3RydW5pCis1NTExNSAxZGU1NDk0NzE3MjFjMzhhMjI4N2FkM2E5NGFhMzcyYTc2NzUzNDMxIGxlZ2FjeS10cnVuaworNTUxMTYgNDk2ODZlZDU2ZWM3ZmU4NzE3ZmJjOGUyNGUzY2ZjMzVhMTY4Zjc0ZiBweTNrLXN0cnVuaQorNTUxMTcgNWI4ZWY5NGJiODEwZmQwMjdkN2M1MGRlMTk4ZmZiMjIxM2FhMGM3MCBsZWdhY3ktdHJ1bmsKKzU1MTE4IDExNjI1MDJhMDlkYTc2YjFlZDg0OWExYjAwYTYzOTRmNGZiYTEwMmEgcHkzay1zdHJ1bmkKKzU1MTE5IGEzZTMwMDFiMzViZjBhMTVlMmViNTFkZGFlZDc2MTQ3NTBiMmYwYzYgcHkzay1zdHJ1bmkKKzU1MTIwIDdmMzZmOTZiNmM3NjU4NmY4MzgyMDQ0YTlkMDVlMjhlMTlkMGE3YzcgbGVnYWN5LXRydW5rCis1NTEyMSAwNTJiZjBkZWU2Yjg1NDcwNjQ4MDE4MGYzMDNmMzdhY2Q4YTBlNDIwIGxlZ2FjeS10cnVuaworNTUxMjIgOTJlYWQ4N2JmOTg0M2M0MWU3MWM3NzY5M2M5ZTI2YjAzMjgxMGUzYSBweTNrLXN0cnVuaQorNTUxMjMgZTc4ZTFiNjE2YzcyZmM4MmNlZmY2MTk1MmU5N2Y4ZGJmNDllZTIwNCBweTNrLXN0cnVuaQorNTUxMjQgYTczMjNjNzJiNWM3MWY5MDNhY2QyZTg5NDk0YTM1NTE3ODI3NTEyMiBkZWNpbWFsLWJyYW5jaAorNTUxMjUgYmU5MDM5YjU3NGQ5N2NlYzllZmYzMjZiYWU5ODk1ZDQ4ZGEzOGU5OSBkZWNpbWFsLWJyYW5jaAorNTUxMjcgYzQ4ZmU0ZGMzNGE5MTQyMzA2ZmE4NTYxZDBiYTNlMThmNzQ5YWM5ZiBweTNrLXN0cnVuaQorNTUxMjkgMjEzMWUwMzcyMWVmZGM5YTc3MDhiM2YzMjRlY2JjN2JkZTJiZTlkYyBsZWdhY3ktdHJ1bmsKKzU1MTMwIDUyYjk5YTkxNWZhYTVlNzk3ZDgyODgzMmFmOTFkNmM1NTIxM2QzMzggcHkzay1zdHJ1bmkKKzU1MTMxIDhiNzQzZjU1NTk2MTA4ZGM1NzkxNmFjODhkOGE1ODg5NzM0MjQ3ZjYgbGVnYWN5LXRydW5rCis1NTEzMyAwNzhiNGYyZmRmYzk0NzZhNzlhMzk1NjhhMzk2ODU2MTkxM2Q1YTQ5IGRlY2ltYWwtYnJhbmNoCis1NTEzNCAzYjU3ZjBiN2VkZGZmOTE1ZWM4NGY5YTA1MmJmMDQ4ZjBjNGQ3ZjU0IHB5M2stc3RydW5pCis1NTEzNSA5ZTFkZmM4NTU4OTA1YmRiODc4MGJlYzE5MmIxMjc2ZGE4OTYxY2Y0IGRlY2ltYWwtYnJhbmNoCis1NTEzNiBlMmIxZDAyMjJhZmVjZjI1MWQ5MWUyMzlkNGQxMTM1OTA0YmNlNzc1IGRlY2ltYWwtYnJhbmNoCis1NTEzOCBkZjQ2MDExYzU5MzYyNTZmYzQwMzUyMDZmNzg3YWMyYjk3Mzc4NmNjIGRlY2ltYWwtYnJhbmNoCis1NTEzOSA4NjgwOTcyZWQ4ZjAzNmViZjI3YjJlZWM5ZjhhM2VmNmJjNjYzNTEyIHJlbGVhc2UyNS1tYWludAorNTUxNDAgNjE1Nzk1ZDUyYjlmZDk4YTRmYTIxYzY0N2ZhYjQ0NzI2YmQ4OTRkNiBsZWdhY3ktdHJ1bmsKKzU1MTQyIGJlN2ViM2ZkMzc3NjYxMzA3MWI2ZDNjYWMzODA5ZmFmZjc0Y2EzNWYgcDN5aworNTUxNDMgMjY2ZTEyMzk0Yjk3ZDJmYjMzNGQxZWU3ZjUwYzNkZWMwZGM4YzlkMiBwM3lrCis1NTE0NCA5NDZmZDU0YjQ1N2Y1ZTQyNmFkMGU3NjAxMWNiZDE5M2MwZjllMDA3IHJlbGVhc2UyNS1tYWludAorNTUxNDYgNjFhY2ZiODMxNjMzYzhlNzJkMzM0MzhhOTNiMTE3MmYxMzAwNGExZCBweTNrLXN0cnVuaQorNTUxNDcgNmI3ZDE3ODJhNTc0OTk3MGFiZjA3ZTgyYjAyN2Y0NTJkMzRlZmY3ZSBweTNrLXN0cnVuaQorNTUxNDggODM4Y2FiMzc5Mzc2ZTdiZmEwMWZhNmI0YjkxMGMzNGQzMDUzOTYzOSBweTNrLXN0cnVuaQorNTUxNDkgMTA3YWFjYjljNTk1ODgzMWNiMjA3ZDFkNzNlYjRhMGU5NGNlZTE0MCBweTNrLXN0cnVuaQorNTUxNTAgNmJjMTU2ZDNjMDBlYzI1M2NiMWMzODEyYTU1ZTE0ZmJlOTM2MDRhYSBweTNrLXN0cnVuaQorNTUxNTEgZTI1ZGNkODc0YjgyNzk5Y2VjM2M3NGJlOTViNTI4MWIwMmNjYmQ4ZSBweTNrLXN0cnVuaQorNTUxNTIgNDZiMDBjNzNlMzJmZmI1MmZmYjFkM2Q2ZDU0MWMyNTEzNmNmM2U3YSBweTNrLXN0cnVuaQorNTUxNTMgMTQ0MGJiYjY3MTUwYTcwMWZjYTI2YTI4ZGMwOWJhOTVlMDg0NGE5YiBweTNrLXN0cnVuaQorNTUxNTQgZWE1Y2NlZTZiMjg1NGJlMmE1OGM4MzQxNjY5MmJiODAyOWU1OGJiNyBsZWdhY3ktdHJ1bmsKKzU1MTU1IDJkMzc3NDA4YTk4N2JjYzdlZDM4ZDY0ZWQ1NTg2ZjI2YWE1Yjc1NzQgcmVsZWFzZTI1LW1haW50Cis1NTE1NiA1NTRmZjI3MTQ1ZTE0YWZlYzY2NTFkMzRhY2MxYTUyNGI3NWU5NWVkIHB5M2stc3RydW5pCis1NTE1OCBmMzIwMmZlNzg1OTgxOWE0YWU2YjIzNjY3NmJiNDRmNTZkMmU3MDNiIGxlZ2FjeS10cnVuaworNTUxNjIgODcyOGNkMDEyYmQ4N2U3NjQyYmY2MWNhYjcxZDI5YmQzODQ0MzI5MiBwM3lrCis1NTE2MyBjNzkxYTVlMmUwOWU4ZmUxZDdlOTg0MDM0MTRjZmYwMjA2YjQ0ZTZlIHB5M2stc3RydW5pCis1NTE2NCAyZGNjMDVhODA5MDVmZWU0NmFlNTZhOTljZGY4ZTJjZTlhMzBjYzEzIHAzeWsKKzU1MTY1IDBjM2EzMTQ4MjA4ZTBiOTY0ZjU2NTYyNGI5MzlkOWQ1OWMwOWZiNzEgbGVnYWN5LXRydW5rCis1NTE2NiBkNGJhNjYzMjc3ZjhmYmMyNzM0N2VkZGQ4MmYyZjIzN2E4MDIyYjNjIHAzeWsKKzU1MTY3IGMxMDc1ZjA2NjUwYTc2MWViNTI5ZjBjODgzYzIwMjMyOTc2YTM4NTQgcDN5aworNTUxNjggNWQwOTY5MTY3ZjZkYjc2ZDcxZjAzMWRiN2I5MDFiNjM4M2RhZDUzYiByZWxlYXNlMjUtbWFpbnQKKzU1MTY5IDU0MTc5NTM4YTM4NzcyNTVkYzY1YThhZjVhZjhhYjY1ZTJlOTU0ZWYgbGVnYWN5LXRydW5rCis1NTE3MCA0NDMxMDJiZjU4OTUwNTQ3YWI4N2JhYmRlYTc1NWUwOWM4Yzg2YjljIHB5M2stc3RydW5pCis1NTE3MSA0MTEwMjczYTI2MTEwOWYyNDY2NzA5OGMwNzc4NGEzOWM1MzI1ODMwIHAzeWsKKzU1MTczIGJlMWU3MDhkNWQzZGYxNWI4ZjNiZmYwMTk4MWNmYzVmNDhlMTEwZTUgcmVsZWFzZTI1LW1haW50Cis1NTE3NCBhNTIzNGYzYzc1NTExZWQyYmMwZGU0MmU4Y2ZlYzJiMzYzOWVhYTRiIHJlbGVhc2UyNS1tYWludAorNTUxNzUgODQzZDBjY2IwMDk0ZGY3OGNlNzI0M2IxOTM3YTY2OGVhYTM0NmYzOCByZWxlYXNlMjUtbWFpbnQKKzU1MTc3IGZkZmRlZTE5MWE2MTJiOTRiMzMxMjRhNjQxOWVjMzEzMDc0NjQ2M2YgcmVsZWFzZTI1LW1haW50Cis1NTE3OCAyMDU4NzFjOTcxNWRiNjNjMTE3ZWJjZDBjZDk0YWZkOGRkMzQ5YWM2IHJlbGVhc2UyNS1tYWludAorNTUxNzkgYTE1M2YyMTRmYTFiODQwOGQ1NDUzNjllZTU0MGY1ZGVkOTcxYzY4NyBweTNrLXN0cnVuaQorNTUxODAgYTZlYjZhY2ZlMDRhYzJiZjMwNDQyODVhZWY1NTJjMGI3ZGZlNGJlYSBweTNrLXN0cnVuaQorNTUxODEgYzY1Njg1NTBiMWM2MTBkYzRiNWY4NzdlNTdkNDhhMmJlYjA2YjBjMSBweTNrLXN0cnVuaQorNTUxODIgOGU3YzYwYjEzNTZiNzM4M2ZiM2NjOTg0OTg0MzAxYWQ0MzZjNGU4OSBwM3lrCis1NTE4NCA5Y2M0YzNmMGI1ODA3NWE0MzgzZTIwNDJlYzNmODA2YmJlZWI3ZGU1IHB5M2stc3RydW5pCis1NTE4NSA3MDQ3MmMxNTdiYjljMDA1Mzg0ZTc4ZGI5NWRiNjZiNWIyY2U3YzIyIHB5M2stc3RydW5pCis1NTE4NiA4Zjc3Zjk2MDcxMTM4ODA1YzJmY2NkMGZiMzFmNjIwOWI1ZmE0OTU0IHAzeWsKKzU1MTg3IDZhMDE2ZjNlMDA1MTY2N2MzZTMyNDVmMWVmNzgxZDlmYThhYzU3ODUgcHkzay1zdHJ1bmkKKzU1MTg4IGM4NDAwMDk2ZDJkNzFjOGY1MzdiZDFjOGZkZDBlZmY4NWM3ZmY3OTggcHkzay1zdHJ1bmkKKzU1MTg5IGJjNmFkNjNjZDVmMWY2ZTA4NzliM2QyZTgwZWU3YTBjZDQzODc0YWEgcHkzay1zdHJ1bmkKKzU1MTkxIDJkOWU1OGM1YWQzNDNkNDQxNDQ4YjQ3MTM5MDQxZDRlNjZjNGYwYmYgcHkzay1zdHJ1bmkKKzU1MTkzIDIzYThiM2RmYmU5NTM3MTBmZGNjNjdmMDdlMDhkMTFkNzU5YTFmZWMgcHkzay1zdHJ1bmkKKzU1MTk0IDQ0ZWJhZTRmNjFjNGEyYjAwMGVjNTNlOTI0OTg1NzNmNDgzYWRmYWEgcHkzay1zdHJ1bmkKKzU1MTk1IDA1MGM5OGNkNDFjNGY3NGFjZDJjZTkzYzFiM2EwNzhjM2Y4ZTlkNmEgcHkzay1zdHJ1bmkKKzU1MTk2IDUyNTMzMzcwZjFhZDQwM2MyMzM2NjFmMmZhYjAwNTIzNjQ1OWEzYzEgcHkzay1zdHJ1bmkKKzU1MTk3IDM3MGI5MTUzM2M1M2Q4YzAwODU5NDU4ZTM4NTllOWNmNGQ5NmVkOTUgbGVnYWN5LXRydW5rCis1NTE5OCBmMGRhMWI3YjhlNWEyYWU0OWRkYjMyOWFlYzdiODFlYWY2OWYwM2Q4IGxlZ2FjeS10cnVuaworNTUxOTkgNzZlNjNlMDMzMzU2MDVkYzYzYWQ5MjRiOGU1OWVjZTY5NTE2ZmFjMiByZWxlYXNlMjUtbWFpbnQKKzU1MjAwIDVjNzI4NTM0OTcwYzFlMjYyYTc4ZGMwZWM0ODA0ODQwOWM1NGJiNzAgcmVsZWFzZTI1LW1haW50Cis1NTIwMSA3ZmU2YWZjYmQzZjJhNmE2NzZkOTAyMjg4NjZjY2NiMThmMzgzMTgwIHB5M2stc3RydW5pCis1NTIwMiA2NTBmZjhkN2NjMzgwYWExNDVlZGY2OGZhZGZmZTE2ZWJlNjFkNjVmIHB5M2stc3RydW5pCis1NTIwMyAzYTRmMDZiYzI1NGJiNWVkZGIzODg2YmU2ZGQxNTE1YWQzOTdkNjM0IHB5M2stc3RydW5pCis1NTIwNCAwMmU2OTg5ODg1MjFhOTk1Nzg1N2FlMzkyZjEyZDU4YmE4Njc3NThmIHAzeWsKKzU1MjA1IDliMTRjMWU1ODkzNjFiY2EzZjdjMmNlNzk0NjlhOTRhZTFlMjBkZWMgbGVnYWN5LXRydW5rCis1NTIwNiBkZDJkNDA3ZGNmZDBjNDdkMWUxYTAyMjBhZTU5ZTg1YzQzMThmYTRiIHJlbGVhc2UyNS1tYWludAorNTUyMDcgNDc1YzdjNTQzN2ZjNjJiODNkMGQ3MGU5ODM2ODUwYmY1ZjY4MWIzYSBweTNrLXN0cnVuaQorNTUyMDggYTM2M2NlYTMyYjliYWFhMDJiMGZjMzhiMTQzYTI1NTNmOTI1YWNhYyBweTNrLXN0cnVuaQorNTUyMDkgYTMyNDhmZWZjMGRjOGI2YWVlMDU2Yzg1NTI0NjIzNGUwOTM0ZDU3OCBweTNrLXN0cnVuaQorNTUyMTAgODVkNTFjYjhhZTVlZDg1MjdkNjM1ODZlMTc5ODM5NDMwMjlhZjE4MCBweTNrLXN0cnVuaQorNTUyMTEgNGE5NTMzZTkzNjVlMGQ5NzgxNjc0MTI5MTgzNTBjZTc3NDA0OGNkYiBweTNrLXN0cnVuaQorNTUyMTIgYjFiYmU4MDExMTUyODkzY2NjNTE4ZDY3Njg0NGVkYzI1MTE1YmI2ZSBweTNrLXN0cnVuaQorNTUyMTMgZDEyODExZGVjZjk0ZDM3ZDk5ZGVkZWU2MjE4NDkwNmE3NzkzNTE0NiBweTNrLXN0cnVuaQorNTUyMTQgNjg4ZTJiYzIwODAyNjM4YWVkNTg4MzVlYmVjYjgxN2ExNDkwMTY4ZCBweTNrLXN0cnVuaQorNTUyMTUgN2E5NmM4NjQwNTc1MWJkOWVjOTk4ZDdlZmVmMDJjY2I1ZDdlMGM5NCBweTNrLXN0cnVuaQorNTUyMTYgZGQzYWMxY2QxYzkxOTZmMzJkMTI2YWIwMzM4ZWEyYzFhYTEwZTFiNSBweTNrLXN0cnVuaQorNTUyMTcgNWYyMDI4NmIwZGE5OTM2Mjk4YjE2MTZiOGVkNGI1NTQ5MzFjMjkwMyBweTNrLXN0cnVuaQorNTUyMTggMjQ4ZGZjMWJkNDRjMDI1YmFjOTAyYmZkNzNlMTBlMTI5OTI1MThlNSBweTNrLXN0cnVuaQorNTUyMTkgMjk3NzM0ZjhhNjI3YWNkZjZlYmFkODU2ZjBiNTVhM2RkMjRlY2FjZCBweTNrLXN0cnVuaQorNTUyMjAgOTE1ZDUyNDU1ZmZjNGJmZWZjMjJiNmQzMWU3ZTkzNjA0NDk4NzkxMSBweTNrLXN0cnVuaQorNTUyMjEgYzRhOTk5M2YyY2U2Y2VhYTIwOTdmMjg2NWRhYTdkNWI5MjFiNjA0NCBwM3lrCis1NTIyMiA5OTE0NDZmZjZiMTVjMDhiMGRmMmZjY2M0ZjRhMjRkNzNhMWVlNzYyIHJlbGVhc2UyNS1tYWludAorNTUyMjMgNzc1ZDQ0YTU0Mzk5NTUwYmQ1OTFlNmExMWMyYTU0MTM1MTNjMTIwNSByZWxlYXNlMjUtbWFpbnQKKzU1MjI0IDk4NzA5MTg5ZDllMWMwMGFjOTRlNjE5YWUwYmY5OGY1OTUxYzA2ZTYgcHkzay1zdHJ1bmkKKzU1MjI1IDEwNDA1NjhmOTAyY2EyYjFiODVhYWEzNmRlZmQ3OTg1OTdhNTFmNGYgcHkzay1zdHJ1bmkKKzU1MjI2IDFkMzM0OTEyYTEwNDBkOWZlODU0ZmU0ODEwOGMwNTVlZTE0MzY5MDEgcHkzay1zdHJ1bmkKKzU1MjI3IDc1OTQ3MDllNjMxYjMzMzdlZTRiYzZmZWZmNjQ3N2UyNDg1M2FjN2IgbGVnYWN5LXRydW5rCis1NTIyOCA4YThiZjJjMDc0ZTA0ZjBiYjMyNDQ0ZWU0ODhiYjI1MGIzNWU4NTVjIHAzeWsKKzU1MjI5IGM1ZWJmOWMyMTliZTQ2NTIwNjBjNGZhMTEwMjYyZjdiN2JiMDJhMWEgcHkzay1zdHJ1bmkKKzU1MjMwIGZiNzA1ZjE4YmYzZDc2NjVmNjY4YzYwYjNiODY3ZjVlODEwNzM1ZWIgcHkzay1zdHJ1bmkKKzU1MjMxIGJhYjhhOWM3ZjQ5ZWI2MjAxNzJmYmNlNDI3NThjMjc4NWY3MjA2M2EgcHkzay1zdHJ1bmkKKzU1MjM4IGE2ZTRmMmNiZWZhOWJkMGIzNTFhZWY0YzYzMzliMTNlNTgzMjdjMGMgcDN5aworNTUyNDEgNDM2N2I3YWY3NTMxOWJkNjVmN2U3ODFiOWU5OWZlYjQwNzBlMjY3YiBsZWdhY3ktdHJ1bmsKKzU1MjQyIDhlZGQ3NDYyOTFmZWZkZWU2ZmRlYzJkODI3NzU2ZmUwZDEzZGE0YjkgbGVnYWN5LXRydW5rCis1NTI0MyAwMmQyNDg4ZmVjNjBjYTE1Y2I5YTY1YmYyYzQ1ZTdjNjc2ZTUyNDgwIHJlbGVhc2UyNS1tYWludAorNTUyNDQgY2Y5ZGQ3ZjBmNGEyMGYwMjZhMjk0N2UwYmQyNTM5NDA3OGVkYzExYyBsZWdhY3ktdHJ1bmsKKzU1MjQ1IDZjNGFhNDYxMWM4ODFkYzYyY2U1YTljNGQ2NzhlNTgyMTEwMTUwMTEgbGVnYWN5LXRydW5rCis1NTI0NiBjYmE4YzZhNWVjZjAyNjE2NzQ2OTdjN2Y1ZGY1ZTQ0ZjMxODAwMDM2IHAzeWsKKzU1MjQ3IGNmNzlmZWU4YjcxYTEwYThkNjk5YTVlMzIzMDcyZDY1ZGM4NTJkOWIgbGVnYWN5LXRydW5rCis1NTI0OCAwMTEyNzgyMWFmNzU2MTRlYTU3M2E3NzlmZjA2MGZlNzFiNzU1ZDM4IHAzeWsKKzU1MjQ5IGQyMzE2ODVlOWVhN2Q1NGEyZGM0ZjhiZmQ2YzNmODRiODRlN2E5MzIgcDN5aworNTUyNTAgZjIyM2E0NGRiMTNhNjg4MzdmZThmZjBlMTBhMGQ1MGI3NjZlODQ2MCBwM3lrCis1NTI1MSA5YjljNTNjMWFhNWMwOTVmMDlmYjliYmEzODZkNWExNWU1M2IzMThkIHAzeWsKKzU1MjUyIGRjMzliZmM1Yzc0ZTYyMmJjNTQ4YjJiZDVlZjQ0NWUxYmY4NTAxYzAgcDN5aworNTUyNTMgODFkOWY1MjcwZTg3NTJkNDdjMWRhZTAzYzQ1NjUwNDI2MjZmMTc2MCBsZWdhY3ktdHJ1bmsKKzU1MjU0IDNlZWUwNmNiMTVhM2VlMWJlZTM0NDMxZjE5YTA0NWZiNDk3MjJjMjEgcDN5aworNTUyNTUgN2Q5OGMxMmEzNDRkYmIwMzBjNDgxNDk2NzI2Yzg1N2E4ZmIwMmM4ZiBwM3lrCis1NTI1NiBkOTFjYzhkNDkyOTRlOGFmNDJlMTM0OGJjMWJlMGUzYWIxZjEzNzY2IHB5M2stc3RydW5pCis1NTI1NyA0NTQ4Y2ViMzFjOTQ5Mzk5MTVlZjdjYjRmMTRkY2NiMDdlYTA4ZTNiIHJlbGVhc2UyNS1tYWludAorNTUyNTggY2QyNDAzZDM3MGUwZjY3YzQxYjY5ZmUyN2EwMWYzNzk1M2JiODk2YyBsZWdhY3ktdHJ1bmsKKzU1MjU5IGI4ZmE0YWM2YzVmMDdjNjA5ZGVmNzNmNmM4NGIzZjQ4NDdkMjc2NTUgbGVnYWN5LXRydW5rCis1NTI2MCAzZmE0MGI1OWI5YjY4ZTJmZWJiZDA1YmU0NzJmMmE0NDdkY2UxOGZkIHJlbGVhc2UyNS1tYWludAorNTUyNjEgNTFjNzQxMjI4OTU4M2ZmZWExNDUxMWEzMjlhNjE5YzQzOTg1ZTU1NyBwM3lrCis1NTI2MiBiY2Y1N2ExNTNiMTFhNTcwZmUwZTU0NTUzZGJlMjA3MmJhMTZhODAyIHAzeWsKKzU1MjY0IGQ3YzdmZTliNmU5NzJlOTI1ODY2MmEzZGQ2NDJkN2RhY2QyZGJmNmQgcDN5aworNTUyNjUgOTE1MzkyZDVmMGI4NjQ2YjE2ZDUxNDRiYjlkZTdkMzc2ZTk4Y2Q1MyBwM3lrCis1NTI2NiAzMjY3M2I4ODhjMjQ0Y2UxOGNjZjQxZWNlMGE1OTgwMTE1OWQxNzg2IHAzeWsKKzU1MjY3IDVhMmY1OTIwY2Y3NTBmY2Q1OGNkZGJmMjU5NDhlODAyNTlhMzI5MzYgcDN5aworNTUyNjggN2Q0OTAzOGU5OWM5OTE0ODEyZDljZTQ0NTY4ZWZiZjJiNjAzOWFiOSBweTNrLXN0cnVuaQorNTUyNjkgZWU0N2ZkNWMwZTVkNzQ2N2ZlYjI4ZWVkMTYxMGY4MjUwMGVjMjNjYyBwM3lrCis1NTI3MCBlMTZjOGU1YzVjYTRjMTExYjY1ZjkxYWU5YTM4NGE5ZDk3N2YwYzJjIHB5M2stc3RydW5pCis1NTI3MSAyNzE5ZTE3YzkyOGQzNjY4MDhiOTQ0YjBjY2NkZTlkMWUyMzA5ZWYwIHAzeWsKKzU1MjcyIGRkYzRiZTI3ODZmZDI1ODM1ZGY4ZTY2ZTMyNDIzYmE4MzhiZDkwYmIgcHkzay1zdHJ1bmkKKzU1MjczIDIwYjhiMjk1OTNjMGQ5OGQ0YzgxOWZmNGQ4ZmQyYzFmZDUwZWIxZDEgbGVnYWN5LXRydW5rCis1NTI3NSBlMDZlMTk2YTA1Y2ZmMzgxYmM0NmVjMzY2MDUyODc0MmI3YjRkZTc3IHB5M2stc3RydW5pCis1NTI4MCA5NzA2ZjNiNDkwNjcwZjMxODk3MGM3NmFlMTUxZDVhODdkNzUxYzFmIHAzeWsKKzU1MjgyIDc5OTNmMjNhZDQ2Y2E1NGYxMGZiOWFjNTk1MDFjM2NkZDc2NTgwOGUgcHkzay1zdHJ1bmkKKzU1MjgzIGQyMzdmNDdmMjkzZjI5YjlhYTYwNTBmYjE4MGE2MWEyNzZkZjZiYzUgcHkzay1zdHJ1bmkKKzU1Mjg0IDkxNzA0MGRmZWM1ODM4YzdmZDExM2U3MWQxMWM5ZjFiNmQ4MDZiZTcgcHkzay1zdHJ1bmkKKzU1Mjg1IDI2MTcxMzNjN2FmYTI3MzgzNDg4MjY3ZTE4ZmYzMTcyMjAxNDc2NDQgcHkzay1zdHJ1bmkKKzU1Mjg2IDYwMjZiOGEyNmMwNWZmNGQ0ODZjNGUyMzI1ZTg1MTgwOGVhMGZjYWIgcHkzay1zdHJ1bmkKKzU1Mjg3IDQ4MmI1OTkwZDJmYjNkZjY4Njc0NTQzYmRmZmZhNWIwYjIxMTVmYTMgbGVnYWN5LXRydW5rCis1NTI4OCBjMTdkNzYwY2I2ZDA2ZjA5NjBjMTNiZGRmYTBiZjhiYWEyYzhmMmFmIHJlbGVhc2UyNS1tYWludAorNTUyOTAgN2JiYjk3ZTE0YWQ2ZWQxMmU3ZjFjNGZiNjYzMDEwMjE3ODY4ZTc4OCBsZWdhY3ktdHJ1bmsKKzU1Mjk3IGE0ODkzYzQ4MDI2NDhiNzdhYzI2OWU1NWNmMDNjNWE3MTJiOTNjNDMgbGVnYWN5LXRydW5rCis1NTI5OCA5MmViNWFlNGMxOGYxNTFhNTg5NTZhZWNlMjczZGU0ZGE4MDAzZWVlIGxlZ2FjeS10cnVuaworNTUyOTkgYTE2MGI0MzdmZjM1ZmUxNjgyNGZhYmJiNjdlMmZjZDRmNTU3NjYyZSBsZWdhY3ktdHJ1bmsKKzU1MzAxIGI0NjAwODQ0Nzk5MzMzOTFmODE5ODQ1OWZhZDNmZTM0YjBkYTE1NjEgcDN5aworNTUzMDMgYjdlOTEzNmQ0YzgzOGY4ZWNmYmE3YWViNDYzMmVkOTc4ZjM5MGVjOCBwM3lrCis1NTMwNSA3ZDI0YTY4ZDBhMWM2MTYzNjIyY2Y0NzQ2MGYwNDQ2MTdiODQzNzVkIHAzeWsKKzU1MzA2IDY1NjY2ZWM4M2MyYzAwYzcxM2IyMDkxMjdlZWU4Y2RkOGJkOTUxMmYgcDN5aworNTUzMDcgYWFlNTQ5ZWJhNzA3NWY1NDZlN2M4ZTIxMWU3NmRmYzBmYTYyMzNjOCBwM3lrCis1NTMyMCBjNGQ1N2RjNjBiMDE5YjVlM2U4ZmIyMzVjMzE2NWNhM2NmZTc2NmNiIGxlZ2FjeS10cnVuaworNTUzMjIgMTUyM2FhODI3MTQ2NWU5ZjI2NTljZWI1ZDZhOGM5NmQ2NjUwMDQyNCBwM3lrCis1NTMyNSBmNjBjODc3ZDUyYzhhMDk3YTVkODExM2Y5ZGIzY2ZlYTNlMmNiNDY0IHB5M2stc3RydW5pCis1NTMyNiBjN2Y1NDY2MGVhMTdlZmFmZmJjZGNjMDkyNDBmZmE2ZDZjODc1MDFiIHAzeWsKKzU1MzI3IGQ2ZTZmOTgyYzYzN2I2OTgwN2QzODc0NDFlZTU2MTczOTlmYzg2NzcgcDN5aworNTUzMjggMDBjMDJjNDQ4OGNlZjkxMWUwZTIxMzQwNWI4YmFlOTRlNzQ2M2ZiYSBweTNrLXN0cnVuaQorNTUzMjkgZjMyNTZjOGM3MmNhODEzMGRlMzFhNmM4OTdjZjUyNTQ0MGZjZGVlMyBwM3lrCis1NTMzMSBiYzQzY2IyMzE2NDA0MDg5MjMyYWNkNmRiMGJhZTYzMjAxYjI4NTE5IHAzeWsKKzU1MzMyIDU1ODUxOGZmOWQ5MWFiNjI0MjZkMGNlNzY0YWJkMmUyYzQ3MjZkYjcgcDN5aworNTUzMzMgNmRlYjRiYjEwMDU5ZjkxY2NjYjhiZWYxYzUyNmYyYTAxYzY2YzI1ZCBwM3lrCis1NTMzNCAxZGIzMTk0MWUwMTM5MWU3OTZkODcyMzhlZGJmNzcxNGZkYjhkMTc2IHAzeWsKKzU1MzM1IGI5YzcyNGRkNzJjODE4ZjFhMWQzNzJjZTVmOTA0YTAxZjM1Y2E0YmEgcDN5aworNTUzMzYgZDgxM2ZjMzZiOTcwMWY1MjRiNGU3YmVlMDI0YTczYjEyM2UxZTJiYiBwM3lrCis1NTMzNyAxYzlhMjk5NjU2YmUzNzFhMWEyOTdjZjVlYjA2MWQ4ZTdhZWU3MTY1IHAzeWsKKzU1MzQzIDlhZDg0MDcwYjIyZDg0ZjE3NWEzYjg5MDM2N2NmOTA2OTJiNjQxOGMgcHkzay1zdHJ1bmkKKzU1MzQ3IDZjYTNkNWYzZDFiZTEzMWZmNjY5N2E3OWRmMGU4NGJjYTZjNDkzYWUgcHkzay1zdHJ1bmkKKzU1MzQ4IDNlMWViN2FmNGVhMGQyMWU3ZjFlOTMwNWRmMTc1MGYxNzdkOTU2Y2YgbGVnYWN5LXRydW5rCis1NTM0OSAyYjcxMTJhNjM1NzFiMmVlMGM0OTQ3ODQxMmEzYjg4ODg3ZmMzMThlIHJlbGVhc2UyNS1tYWludAorNTUzNTAgMjYzNDlhNjRlZjcwMTViYzIwYjk5MzIyOWYzNTBjNGZiZTFmN2Q4MCByZWxlYXNlMjQtbWFpbnQKKzU1MzUxIGQzY2QyOTIwYmViNjg3YmYyMTcxZWY3OTYxMzgwZDMxNmJjZDIwZDggcHkzay1zdHJ1bmkKKzU1MzUyIGM5YzUyYjg3YzMwYjVmYjMzYWMzYWY5NDlmYzAzZDk2ODQxMWQwMDcgcHkzay1zdHJ1bmkKKzU1MzUzIGE4YjdhODE1OTlkMDQ4YWFhMTQyNGQ2NTQ1MTRiM2MyZTAwMzQzMTggcHkzay1zdHJ1bmkKKzU1MzU0IGQxMTQ2ZDRkYjU0OTQ2ODQ0ZjQ5OThhZjhhMDg5MmI5NjY2Yjg4NTAgcHkzay1zdHJ1bmkKKzU1MzU1IDIwMjg2ZWNhNDc0MzE1YTk2M2IxZjYxMjI0MTk0NTYzN2FlNTU1MWQgcHkzay1zdHJ1bmkKKzU1MzU2IDQzMGI2ZWQ4MDE0OGU5YjAwOTNlOWQwY2M5N2JiOTIzMTlmOTJiZTggcHkzay1zdHJ1bmkKKzU1MzU3IDZlYTkzNzAwZDc3OTIwNzA2ZmNhNTRmMGIyZDczZWM2MDljMWY2YjMgcHkzay1zdHJ1bmkKKzU1MzU4IDI5Njg1OTcxMThjMTM5YzhiYjdiMzdlZDczYjAzZTIzYzg4NGQzMmEgcHkzay1zdHJ1bmkKKzU1MzU5IDI5MzdmNTM3MTMyZWEzZmZlNDM1ZmU5NTM0ZDY2MDNkODA0ZmNkM2UgcHkzay1zdHJ1bmkKKzU1MzYwIGM3YjE1NWFkMzc5MTE5MDRlNTFjODVmZWY0YzgyYTEwNjc4MWNiZDAgcDN5aworNTUzNjEgMzc4N2EzZmJjNDU4ZDhkYmI5Yzk3YWNiMmJmMjc5ZmE5MWQ3ZDU5YSBwM3lrCis1NTM2MyA3OGQ3NjQzNWRhOWFjOWNlM2YyYTAwZWM1ZWU3OTQ4OWE2NDY2YmM4IHB5M2stc3RydW5pCis1NTM2NCBiYmIwOTlkNGVjODAyNGJmODAwZTAyYzA2MzVmMjhjNzlkMTdiMTg1IHB5M2stc3RydW5pCis1NTM2NyAwNTJkNTVlOGFmNzczMGE3NGYyNTA4MmE3MTQzZDE3NDM4NjIyOGZhIHAzeWsKKzU1MzY5IDkyZjcxOWZhOWIxNmU5MGNhYmI5NTVhNDBjMTU2NWQ0NDJhNjcwNTkgcDN5aworNTUzNzAgNGU0MWI3MmRhMGZjNjYzNzI0MWY3YzNlYTM0NGI3ZDExZjMwY2JmMCBwM3lrCis1NTM3MiAwYWQ2OTUxYzE4ZjdjNTc4MmJjYzYyN2RlNGI2NGY5YzY5N2Y4ZTMzIGxlZ2FjeS10cnVuaworNTUzNzMgNjllMWY3ZWMwY2U5MTZmMWY2ZTI1MTM5NGM2YjYxZjViYzFmZjE5ZCByZWxlYXNlMjUtbWFpbnQKKzU1Mzc0IGQwYzA3NjY2OTczMmZkMmY4NGYwYWM4MzgzMTNkMDI3Mjg1YjdjNDIgcDN5aworNTUzNzcgMDQyNGE5ZmE0YjBiNGQ0Y2ZjMzY4ZThiMDY3MjdmZTFkMTFlYmRmMyBsZWdhY3ktdHJ1bmsKKzU1Mzc5IGIwMTU0NmYzNmEyMjYzMDRjOTE5NTgzZjNjYjc3N2MyNmY4YmYxM2MgcDN5aworNTUzODAgMDdmMDgzMjI5N2IxZTcyZTVmZmU2YWU2NDY5ODRlZjk0ZTE5MTE5YyBsZWdhY3ktdHJ1bmsKKzU1MzgxIGNjYTllMzJlZTU1MDFiZDhmOGRkM2RjMWFjMzU2ZjZhZjAyMWYwNjAgcHkzay1zdHJ1bmkKKzU1MzgyIGRjNmI1ZjM1NWQ1YThjYmIxNWY1YzIzYjdhNTQwZmEyMGE2OGIyYTAgcHkzay1zdHJ1bmkKKzU1MzgzIDliODI5M2JmOGZlYzhiZmY5ZDM5ODk2ODMxNzcyN2JkZDYzNzNiYzYgbGVnYWN5LXRydW5rCis1NTM4NCA3NTgxZWMxNjIzMGVmMTgzMTgzYWViYWFlYzNkYTY2YTc3OTJmOTg2IHJlbGVhc2UyNS1tYWludAorNTUzODUgNjFjNGMyMjJhMzI3MGQ4MzEyNWRjYTI1OTQ1MDA2ZWIzM2RiN2JhOCBiY2Fubm9uLW9iamNhcAorNTUzODYgNmYxMjkzYWIzYWM0OGU4MzY2ZWE0ZmVmMjA0NWRhZjFlNjM1NGFhZCBsZWdhY3ktdHJ1bmsKKzU1Mzg3IDY5M2I4ZDkxNDc3MTcwODA5YWU5MmIzNTRkOGNmNDU5YTQwNGY4ZDEgcmVsZWFzZTI1LW1haW50Cis1NTM4OCAzODhlNGYyMWU3NDllMjdkYzAzZjhhMDQ0NzVlY2U2NDJmODg3OTc0IHAzeWsKKzU1Mzg5IDJlY2MyOTY0NDNjMzJjM2MxMTJmMzZjNzExMjBhMDQ0YzJhMjZiNzYgbGVnYWN5LXRydW5rCis1NTM5NCA3NTZlMWQ0MDRjYjg2MWI5ZTFkYWEwZjQzMDBkMjY4OTRkMjhmY2FlIGxlZ2FjeS10cnVuaworNTUzOTUgZTNlYTg4MWIxNGZlZDJiNTNiNjg0MDlhNDYyMzBjZGRlYWM5N2JiZSBsZWdhY3ktdHJ1bmsKKzU1Mzk2IDc5ZGQ5MDc4NzA5MWRmZTNkMWUwYzY0NjUzNzFhZGQ4MzJiZGZlMDQgbGVnYWN5LXRydW5rCis1NTM5NyBjYzZmNDdmMWUxM2E0NDZkZDUzMjcyOGY3NjUxMjFiM2ViYjk5MjFjIGxlZ2FjeS10cnVuaworNTUzOTggNmYwZGJhODA3NzM0YWZjNmFmOTBmNDcyM2ExZTAwMDRmOGU4ODdkYSBsZWdhY3ktdHJ1bmsKKzU1NDA2IGMxMmEzMDk3ODdkM2NjOGYzOTQzMDViMmJkNWNmNWUzZDZjZjZiMjMgcDN5aworNTU0MDcgYjA4NWViNjZiN2Y2ZGE2ZTI0MzcyM2FiZDExYmFhMzE5MjAzNmM2MCBweTNrLXN0cnVuaQorNTU0MDkgNDFhMTgzMGVlZTE2NTE4ZGMzMjY2Mzk4MDJjZjU3MWY2OWY3MTIxZCBweTNrLXN0cnVuaQorNTU0MTAgZWRhOWU2MGM5NzQ1NDc4YmM2OWYxNWNkMTg1YWZjNjRiZTQ1ZTIzMSBweTNrLXN0cnVuaQorNTU0MTEgNGQxNWFkNDE2NTFlNGMwZjY4ZWNlZDNmZGM1OGVmOWExMzQ2MmI3NiByZWxlYXNlMjUtbWFpbnQKKzU1NDEyIDE1MTE4OWM3MmEzNzJiOWEyMzQ4ZmE4N2VkNGYzYmU5YTBjYWUyMTIgbGVnYWN5LXRydW5rCis1NTQxMyBhNjc5NmEyNDQ4MWNlNTAxMzNiN2EzMGRiNDdlOTc0MzkyZTEwOGFkIHAzeWsKKzU1NDE0IDY4OWJhZTA3NjdlMjBjMWVkYmY2YmY3ZjUwNmIyOGY2ODYzMTNiYWMgZGVjaW1hbC1icmFuY2gKKzU1NDE1IGMyNDExYmRiNjI4NmNmZTE2MzYxMDBjMTFiMDdkODE3OWI1MjI4YTEgcHkzay1zdHJ1bmkKKzU1NDE2IDYwOTQ1YmRiMWI3NTQ4NTZhMTk0NzNjMTI0NGY5Y2RiOWUxN2IyYWYgcHkzay1zdHJ1bmkKKzU1NDE3IGIwYjUxNGJhZGYwYjBiYTlmYzllY2E1Y2E3NmQ3YzFlZTU3NjE0MmEgcHkzay1zdHJ1bmkKKzU1NDIwIDEzYTZjNmJlZjYwOTcwMWE3NzViMmE2NjM1NjYzZTU5MTdmZmVkYmUgcHkzay1zdHJ1bmkKKzU1NDIxIDBlYWQxMDY0ZWFkMDAyZDdmZGVmOThhYmM0MzM4NjFiNGRjNDhiMzIgcHkzay1zdHJ1bmkKKzU1NDIyIGVkYjRjOTAyOGJlMDAyYTNlYWUwNDQ0NWFkMDIyMzVmOTdjZWEwNWEgcHkzay1zdHJ1bmkKKzU1NDIzIDFhOWNkNzYzNjRlM2Q2YTIzY2RmZjIyNjlhZjNhNTRmMzczMGU3MmQgcHkzay1zdHJ1bmkKKzU1NDI1IDVkOWRkMWI4ZDkwOGI3OGNjOWJiNDIwODcyMjk4ZjVkM2NkY2YxMTQgcmVsZWFzZTI1LW1haW50Cis1NTQyNiA0N2IxNTlkNjQwYTQ1NGRlY2Y2YTNiNjQzY2ZkY2ZjYzYzOWFiZDIwIHJlbGVhc2UyNS1tYWludAorNTU0MjcgZjQzZTlkMWZhYmFhOGI2ZmJlNDA2NTY2MjU1ODA2YzczNzgwMDQ3ZiBsZWdhY3ktdHJ1bmsKKzU1NDI4IDhmZTk4ZjYwZWI2ZTM3OTdjMzU0YzRiOWNlZDczM2RjMGI2MDQ3MDIgcHkzay1zdHJ1bmkKKzU1NDI5IDE0MWUyYWVmZmJhYTQzZWIzOGFiMTcwZGJlMzhkZThkNGZkMDk1YjkgcHkzay1zdHJ1bmkKKzU1NDMwIGNlNjBmNDdiMTdhMjU0MWM5YjRiZDgyYzgwMDlhNmQyYWJiNmNhZWIgcDN5aworNTU0MzIgNjVjM2I0MzJmNTAxYjdmZjNkZTY5MTNmNDIzNGQxZTk0ODIyMzU3YyBwM3lrCis1NTQzMyBkNmFhN2VkZjIxN2E2NTIwZTYyNzE4MDgxNjdjODA4NjZlYWVlZmEwIHB5M2stc3RydW5pCis1NTQzNCA0N2RjNzE2MDUzNDFkM2E5N2RkZGQxNjZmOTM2YjllYjgyNGU3YmFhIHAzeWsKKzU1NDM1IDhhZDFjODhjZTFhYzY3ODRkNzQ3YWRiOGZjMWI2OTIxZDI5MzIwYzMgcHkzay1zdHJ1bmkKKzU1NDM2IGI1OTI5ODVhOTUzZmY5MGRkNzdmMjc5OWMxMjFkNTQ5YmRkNjk5YzMgcHkzay1zdHJ1bmkKKzU1NDM4IGIyOWQ3MWQ0M2M4MDkxZjMyNTMwMWY0MWVlMzlmMjhlOWEwOTBhMjEgcHkzay1zdHJ1bmkKKzU1NDQxIDY1MWZhMmM5YzJhYmU1ZjM0M2MxYWJmN2RhYmVmZWQ0ZDZhYTk0ZjggcHkzay1zdHJ1bmkKKzU1NDQzIDZkOGQ2NjA1MDAwM2YxZjg4M2VlZDljMDYyYzM3ZjYwNjFiMGI3OTcgcHkzay1zdHJ1bmkKKzU1NDQ1IDEzNjQxYWRiYTZlY2M2MDRkZjgwN2ZhMThkNGY1OWExZWMyZmM3ZDEgcHkzay1zdHJ1bmkKKzU1NDQ2IGYxOWU2MzFiZTEwMWI3YWY4MjI4ZTQ3MmJlM2E4OGZkODQ0MjZmZGEgbGVnYWN5LXRydW5rCis1NTQ0OCA0YTNhNjM3NjlkMzRhOTM0MGRkYjk1MDc0Mzg4N2FmMTVmOTAzZTg4IGxlZ2FjeS10cnVuaworNTU0NDkgZDRkYjYyNmMyMjkwNzY2Yjg4NjJiZDUwYmQxYjY5NTdlYTdkMDZlZSBsZWdhY3ktdHJ1bmsKKzU1NDUwIDMxMmMxMTE5ZGMxNDZhN2EzYjYxYWZmY2I3ZGVkN2Q1NTE2ZDlkN2YgbGVnYWN5LXRydW5rCis1NTQ1MSAyOTk4NzhkNjJlMmY3OWU2MTg0ZmRhODQ3ZTU1ZWE3ZWVjNTY3ZWIwIHJlbGVhc2UyNS1tYWludAorNTU0NTIgMGY5M2I3MDBjNGM5ZjAxZjEwNWVlNTM5NzBiMmI2OGMwYzY2NzFiMiBsZWdhY3ktdHJ1bmsKKzU1NDUzIDUxNWUyNTY0ZWNhN2ZhODFhOWY3ZGYzYWQ0N2I2ZWNjMTJjMDI1NWQgbGVnYWN5LXRydW5rCis1NTQ1NCA0YTY3ZjEwMzgzM2ViOGM1MmZmNWQ2MjIyOTlkNzVjNWRhOGM2MWViIHJlbGVhc2UyNS1tYWludAorNTU0NTUgZjE0YTViMDA1YTFlMmM0ZTM4Y2Q1ZjY1M2JkZWM5YjJjYjNhNWM0ZiBsZWdhY3ktdHJ1bmsKKzU1NDU2IGJlZThkMDFlZjQyYzdiMTJhZmE5NTk4NjI4Mjc2NTBjYzdkYjhhNTkgcHkzay1zdHJ1bmkKKzU1NDU3IDEzMjZiMGIyYWZhMDkxNTNjYmM4OWVmMWJlNjRhODgwMDg2MzQzOWQgcmVsZWFzZTI1LW1haW50Cis1NTQ1OCBiN2ZiOTQyYjQwM2U5ZTkxYjJhZGI1NmFiZTg5MGY5NGM1MjJiMDM5IGxlZ2FjeS10cnVuaworNTU0NjAgYzJkMzJiNWFlOTBiM2EzMTNmZDhlYzc2NzM4ZWRhZjZjMDQ3Mjg5OCBwM3lrCis1NTQ2MyBkMWMzOGFmMDY1YmYzOWMxOTQ4NDgwNzQ0ZWM0MzExMDg1MWY1NmQyIHB5M2stc3RydW5pCis1NTQ2NCBlY2M2ODU5MjViNTJkM2MwNDM1OTk2ZmFhYWFkYjAyZGY1MjNmMjdhIHB5M2stc3RydW5pCis1NTQ2NSA2ZDI0NmFjNjMxOTgyZGE1OWFjMmYzNTI0OGZjOWVlYjdhMTcyN2JiIGxlZ2FjeS10cnVuaworNTU0NjYgMDA0MTNmNzBjZTVjM2ViYzY5NjI0NDQ2NjM5MzZhMDRlMjc5MmQyNiBweTNrLXN0cnVuaQorNTU0NjcgNzc5YTIxMDUzNzc3OGQ1NGQwNzIwMjUxZTU3NjQyZWU0NTU2ZjdkMCByZWxlYXNlMjUtbWFpbnQKKzU1NDY4IGMwMjhiMjc3NWE5YTRlZmZhNWRhMDY2M2Y5MmMwMmJmYWVlOWI4YjcgbGVnYWN5LXRydW5rCis1NTQ2OSA1YmVmMmMyMmJmODU3MDZlMmI0YWI0YzIwODEwY2Q1MmFmNDM5NDhkIHAzeWsKKzU1NDcwIDMxMDI5ZjZlYmNhMmE4N2VlMzJlYzc3OGFkOGMzOTIyNDk1YTY1YzAgbGVnYWN5LXRydW5rCis1NTQ3MSA2N2NiODE4MzYwZjBkYzQ3MGI0NDMxYTRjYTk3MjY5MWQ5MTZhM2FhIGxlZ2FjeS10cnVuaworNTU0NzIgNjJjZjJjYjc0ZTM1MWE2YzE3ZmFmMWM3ZjkxM2VlZWUyM2Y1NzNkNyBwM3lrCis1NTQ3NCBjMGU4OWQwZWUwZTViYTgyYmJlOTg2NzQ0OGViZmI4YmI0YjBjODJlIGxlZ2FjeS10cnVuaworNTU0NzYgMmMwMGExOTEwMjcxY2I1N2Q0MmUxZTVjN2Q3N2UwNGQxZDdlYmU2MyBsZWdhY3ktdHJ1bmsKKzU1NDc3IGE1OGJhNjdmYWYxYWJmMzg5NGFhMzU2MzM2MjU5NjllMzgzZTY1MzEgbGVnYWN5LXRydW5rCis1NTQ3OSBlMzVmMWVlMjJhYjg4OTMxOGMwNzI4Yzc0ZDUyOGE2YmZlNWE4ZWFhIGxlZ2FjeS10cnVuaworNTU0ODEgYWM4YTZkZWVmOTc0MGQ4ZDUyZTQyNjNhMDZmZmZhYjcyNmFkZTZlNSBsZWdhY3ktdHJ1bmsKKzU1NDgyIDM1ZTE4YTBkMTBmMjZiY2Y0MDM0ODAxMzNhZjhlYWUwN2NhZGI2NzIgbGVnYWN5LXRydW5rCis1NTQ4NiBkMjRjOWU0MzJkNTI0ZmIwMmM5MWFjOGVmODQ0NWMzYmY1NDYyZjdhIHAzeWsKKzU1NDg3IDI2NzFlMDZiYWE0YzA3YjMxNTk5MDRkNWM0ZmEzZTdiZTk1NmE3NDEgbGVnYWN5LXRydW5rCis1NTQ4OCA5OTNmOGE5YjhhYjM5OTc0MTg1ZjM1ZjIzMTA1NzE3ZDUyMjMxM2VlIHB5M2stc3RydW5pCis1NTQ4OSA5NDU3YjlmNWJkZDEwOTMyZmIyYzEyYmMyODY4YjZhZDYzN2YzZWZiIGxlZ2FjeS10cnVuaworNTU0OTAgODFiMTc4ZjBiMWVmMzc3OGVkYjVhNWVmYzFiN2I2MzU3M2NkOWU2MiBsZWdhY3ktdHJ1bmsKKzU1NDkxIDNkM2JmMjc0MDllNjIwMmJmOGI0NzVhMDBhYWZiZTIxZDk0OWQyZjggcHkzay1zdHJ1bmkKKzU1NDkyIDE0NDZiOWZjYTAxZGJkMzY0ZWI5ZmMwODNmMjBjYzViNGU5ZmY3ZDYgcHkzay1zdHJ1bmkKKzU1NDkzIGViYjBiNmQ2ZGFkYTI4MDIxYjhhYWVkYmY3Yjk1MTg2MjVkYjYxYjIgcHkzay1zdHJ1bmkKKzU1NDk0IGVlMjk1MTQ0NGE4OTY0NjQxNmZjMDMwOGNlNGMzZTkwNjgyZThmNjMgcHkzay1zdHJ1bmkKKzU1NDk1IGE0MDU3MzJhMjYyZGM3NGYyZmI1MGY2ZDdjMzE1NTVjNmMxNjVmOGEgbGVnYWN5LXRydW5rCis1NTQ5NiBkN2Y2ZDZmNDU2MmVlNjFlMTZmMDdkYjZjZjVjMTU0YWRhMzczZGU2IHB5M2stc3RydW5pCis1NTQ5NyA4ZTA2MmU1NzJlYTRkNmFlNjE1Nzc5ZmNjY2YyMjllODYwOWU3NjgyIHB5M2stc3RydW5pCis1NTQ5OCBmOTk0OWI2M2VhYjNhMTI2MjE5OGZhNzU1N2Q4MmJiYzNhNDY0MTRjIHB5M2stc3RydW5pCis1NTQ5OSBkMDdkMzRiNTNkYjU4MDhjNDg0ODk4NjExMmM4ZjMwYTNjMDUwY2FhIHB5M2stc3RydW5pCis1NTUwMCA1MGRhZmEyMmI4YTRlN2I2YjQwMmE4ZjM3NzRiYzJiNWVlY2RlNThjIHB5M2stc3RydW5pCis1NTUwMiA3YzlkZGQ0YTA4MTQ2ZjZkYzNjNWNjN2QwMzc1N2M4NTcyOGQ0N2ExIGxlZ2FjeS10cnVuaworNTU1MDMgM2QwNTg1ODc2OTFkZDQ5YjhhYjg1NGU4Yjk1MjA4MzlhYzdhMzg1MyByZWxlYXNlMjUtbWFpbnQKKzU1NTA0IGE5MjI3ZDdhMzRmYThlNzE0MDc2YTdiNzJhZjFhOWQ3ZmMwMzYxZmIgbGVnYWN5LXRydW5rCis1NTUwNSBlYzgzZDIxMDY1YWEzNmZiMWViYjQxM2RlOWE1N2YwNjhkYzBkZTE1IGxlZ2FjeS10cnVuaworNTU1MDYgZWE3YWU4OTFmOTM4OTRjYWUwZTNiZTExZGY4NjgzMzFlMGFiY2RmNCBwM3lrCis1NTUwNyBjODk3NTU5YTg5ZmM5NDY1ZDQyOThlMjEyOWMyYWM5OWYzMTc3MzBkIGxlZ2FjeS10cnVuaworNTU1MDggYmZjNzNkODQ5ZTI4YTlkZWIyMDA2ZTVlNzhlYjQ2ODIxYTQ5Yjg3MCBweTNrLXN0cnVuaQorNTU1MDkgZGI0OWExMjQ3MzlkZWZlNjMzNGE0MjdlNmI0MTg5ZmYxOTMxZWJkYSBweTNrLXN0cnVuaQorNTU1MTAgYjVhY2EwMjk1Yjc5MmZhYTc5MDk2MzBmYzk0Mzc4YzE3Y2VkOWJmNCBweTNrLXN0cnVuaQorNTU1MTEgYWU2OTEyMjdmZDM0MzdmOWU3YjQ1MzhmYmJmNzg5ZWYwMGJmZWI0ZSBweTNrLXN0cnVuaQorNTU1MTIgOThlZjVmZmNmZjI4NDNiNDVhNTg0ODM2OTQ3N2RhZjMzZWZkOTlkYyBweTNrLXN0cnVuaQorNTU1MTMgZGQ4MGE0YzVmNDdkMDRkMDVhNjI0NDczNDY0MDdiOGE1Yzc2NmMzMyBweTNrLXN0cnVuaQorNTU1MTQgMjRiNjA2MjJiOTQ0ZDA0ZGZlMTJmYzY4MjkxN2NiZTdiOTA2OWUzNyBweTNrLXN0cnVuaQorNTU1MTUgODQzZjdlZmMwNThmMjNjOWZmMTIxYzNmYzNmOWRkODdkMTRmYTdiMSBweTNrLXN0cnVuaQorNTU1MTYgOGMzZTQwYjE3OWJmNDE0ZmFiMGI3YmRhMjhmNzkyYTViMzFiNjBmNyBweTNrLXN0cnVuaQorNTU1MTcgZWI0NWY4NWM0Yzc5MjYzYmU0YTYyOTU1MWViODdmNDc2OWIwMDYzZSBweTNrLXN0cnVuaQorNTU1MTggYTdiZTE0OGY3YzU2MDgwNjQwOTFlYTEyYjZjODI4MmZkYTFlMjY3OCBweTNrLXN0cnVuaQorNTU1MTkgZjdmMmE0OWMxZjJlNTRlM2M1ODg0ZDQxNTdhNTdkNjIxZDJhYWJkZCBweTNrLXN0cnVuaQorNTU1MjAgNzJkN2MwZjNiZmZlZThmMDdmNDI5Y2YzNjI0NWVkMjdhNTU5ZTBlOSBweTNrLXN0cnVuaQorNTU1MjIgZmY3YmVmZTkxOWI1YjE2NmI4MDc5ODdlYzQ3NWJmYmE4ZGYzNzE1NiBsZWdhY3ktdHJ1bmsKKzU1NTI1IGEwZWUzYjJiYTM2MWMzZWUzMzk0ODE0ODU3Mjc5NjhhMzRmYmVhMTAgbGVnYWN5LXRydW5rCis1NTUyNiA0Y2JmOTQ5NDM2ZWI1N2FkNmVmYWRmODFiZjk0ZWFhMDI5MjZiMzYyIHAzeWsKKzU1NTI3IDhjMzU3ODkzNGRmNmRhODdjMjYxNmQxMDNhZmQ2ZDZhOTE0ZmQ0NDIgbGVnYWN5LXRydW5rCis1NTUyOCA5YTQ0NzUxNDg1NWYxMTcxZjQ2MWE5NDNhOGU5YTU4OTM5NjZmYmQ1IGxlZ2FjeS10cnVuaworNTU1MjkgYTZjOTJkZWVhZTI3ZjJmZmZlYTAwM2UxNTY3MDJhYmNjNmVkZDVhNSBjcHlfbWVyZ2UKKzU1NTMxIDgxNDA3N2U3YWRlZTNhY2Y3MjAxODJmMjllODZjYjcwOTM4NmM2YjQgcHkzay1zdHJ1bmkKKzU1NTMyIDcwOWY4MmUyYTU1Y2I0NTRjMmQ2ZGI1NWEyMzk0YTQ0YWI2MWYyZWIgcHkzay1zdHJ1bmkKKzU1NTMzIGFiMzk2NjJlNDU0YmNlNGIwZTQ5MGIwNGE2NWNhOWY1M2M2ZThkNzkgY3B5X21lcmdlCis1NTUzNCBlMjQwZDIwZGEzZWM4ZmVhODU1Mzk0MDdjMzE2MGIzZTI0ODNjZjljIGNweV9tZXJnZQorNTU1MzUgZThmNjI0ZDQ4ZGEyZGRmMWU4NGU0ZWIyZmZlODE1ZjA2MTI5NzU2MyBweTNrLXN0cnVuaQorNTU1MzYgNTZlOTAwNzI4OTI5NTMwNDYxY2IxNTdiN2NhYTk3MGNjODE0YWE4MCBweTNrLXN0cnVuaQorNTU1MzcgMjMzMjM3NzA3ZWJjOTk3OWNhMDkwZDQyNTAzN2NkYjY4MWY2M2FlMCBweTNrLXN0cnVuaQorNTU1MzggYmZlOTUzMDQ2ZDA1YjIyNmZkODk2YzkwNzAwN2JhMzlhZGE0NGJhYyBweTNrLXN0cnVuaQorNTU1MzkgNTIzZGYxZGUwYTVjMmI4ZWMyMDY2MDA5M2I3ZjQ4ZjM3YzMwOWIyZSBweTNrLXN0cnVuaQorNTU1NDAgZWIxODhkN2ZlYTVkOThlNDY2NzJiZWMzYjIxMzNmY2U1NWMzNDQ3NSBweTNrLXN0cnVuaQorNTU1NDEgMjExZGM5ZDYzNjczYjVkYzdmOGZjNGZjYmU0NmU1YzI5NTAzOGNjMiBjcHlfbWVyZ2UKKzU1NTQyIDEyOWY5NjUzYjBhMjM5ZjJkN2Y2MjFhMzk5MjRiNzE5MjUzYjdiNjAgY3B5X21lcmdlCis1NTU0MyAxZjc4OTFkODRkOTNmZTM2NGJhOGIyMjJmMWU0M2I4MzJjNjdlNTdkIHB5M2stc3RydW5pCis1NTU0NCA0Nzc0YTk0ZDJlNmQ2NjVlOTQ5ZjQ2ZjhjNTBjY2VjY2QwNjgxN2NiIHAzeWsKKzU1NTQ1IDgyZTVkYjQ5NjBlZGZiMzRiMTA5MTk1ZDMzYTQyOTgyMzlhNGE3YTYgcHkzay1zdHJ1bmkKKzU1NTQ2IDljZThmYTBhMDg5OTcyN2JhMDNhMzczMGJhZDIzNDFlNjI0YWIwNjYgcHkzay1zdHJ1bmkKKzU1NTQ3IDMwOGU2MzI3MDJiZmE0YWU4ZDVjNmRhNDU4YWU5N2JkZjUxZTYwMWUgcHkzay1zdHJ1bmkKKzU1NTQ4IDIxZGM0NjI5YjcxMjE0NTgyODFhZDhhMDc1MDMzNzk0MjdmZWY0ZWQgcHkzay1zdHJ1bmkKKzU1NTQ5IGNmMTUxOTY3ZWVhM2NmMDE1NDBkMGQ0MzZhOWI0M2Q5MGEzZGMzMjMgbGVnYWN5LXRydW5rCis1NTU1MCA2ZjhmODIyODA1NDVkZDkzZDA2MTIxNjFiZDM0ZGMxNjU0ZTY2MWNjIGxlZ2FjeS10cnVuaworNTU1NTEgMzk3OWY5ZTJkMDI2Mjg3Zjc5MDEwY2RjYTk4ZmY1MTkyN2QzYWNiNyBweTNrLXN0cnVuaQorNTU1NTIgY2YwODkxZjFkNjBhYTlkYjA1NThjZTM1YzdlNzE5NThkZTlkMzg1OCBweTNrLXN0cnVuaQorNTU1NTMgZTYzMTAxZmFhZGE2OGMyMWVjNzg5MGQ3MmEzNDY2NTgzYzEyY2NhMiBweTNrLXN0cnVuaQorNTU1NTQgODZhOWQ1ZjQzMzA3NzQ0MjM1ODg3NDRmM2Y0YzJiOGRiMGJhMmNjYyBweTNrLXN0cnVuaQorNTU1NTUgMTA0MjZhZDVhNmUwYjEzN2U1MTYwYTYxZTk1NzM2YjcxOTRmN2UzMiBsZWdhY3ktdHJ1bmsKKzU1NTU2IDA1N2E5YzNkMDY3ZDExMzQ2YzdkZjQxNTg4YmNlYjFkYzE3MDAwYmIgcHkzay1zdHJ1bmkKKzU1NTU3IDQxY2ZjZmRlMDhhOTlhNzQ1ZjdhYjNlYWZiZjQzYzUwMTg2ZWNmMzEgcHkzay1zdHJ1bmkKKzU1NTU4IDJmNDhjNTZjNWU4MTY5MTUyZDU4YmJlNTQwYTg1NzNjZGM5ODBlNjQgcHkzay1zdHJ1bmkKKzU1NTU5IDk4YzY2ZWZjOTU1MzMzYTViMzIxODBlNGE5NDliOWU0NjcwZDc3ZGEgcHkzay1zdHJ1bmkKKzU1NTYwIGU0ZThiMTI3NzBlNDA2YmIzZTFhOGRlODBkYzU5YzRjYWExNTQ5NmEgcHkzay1zdHJ1bmkKKzU1NTYxIGU2ZmM2N2FkOWM1NGJjMWRkZGIyMWE2YzNiMjVjM2FiMjRkMzk0YmQgcHkzay1zdHJ1bmkKKzU1NTYyIDk2OTg2OGRmMTkzOGJjNDgyZmNjOThlZjRiNjc0ZjdhYjZiZjgxN2EgcHkzay1zdHJ1bmkKKzU1NTYzIDQ2YTk0ZWFkM2Q2OGRlM2IzMWNkN2EzZjYwNTM4NTUxMWE1MGI5OTcgbGVnYWN5LXRydW5rCis1NTU2NCAyNDkwMDc2Nzk1MjQ0ZDA1MmRjMWVmOGMwNDY5ZTJiN2FmZDY2OWJlIGxlZ2FjeS10cnVuaworNTU1NjUgOTllMzMwNjhjMzM0N2RjMjllZWEyODg4ZThmZDc3MTI4YjFlMDc3OSBweTNrLXN0cnVuaQorNTU1NjcgY2VjMmE5YzIwMGJhMmNhMmNiNmFlNTg3YTI1MTkyZDAxMzE3NzYyNiBsZWdhY3ktdHJ1bmsKKzU1NTY4IDUyMmM0OTM4YmRmNjgxOGU5OGZiNTBmOWYzZDk2OGM4YWNmMDhkNGQgbGVnYWN5LXRydW5rCis1NTU2OSAyYzhiYTNmYWFmNDBjMDU5NTI5MzY4ZDExNDk1NjM5MmY1YWU1ZDdhIGxlZ2FjeS10cnVuaworNTU1NzAgNjMxOTI3MWMyMzI2MTdkOGFlYmQ1NTk3YjcwNzZjYmJkNjNkMGE4NyBsZWdhY3ktdHJ1bmsKKzU1NTc1IGY1Nzc3NWM1ZDBiNDIzNjYyOGMyOTAwMTFlY2E0Njk2NzVkMTUzODYgbGVnYWN5LXRydW5rCis1NTU3NiAxYTM4NWQwYWU4MmJhMGVhNTBiNzQwMmJlNzdjNTA0MDI5MTdkZjExIGxlZ2FjeS10cnVuaworNTU1NzggMGU4MGZiZDczMDA1YzZlY2Y2YTkxNGU1ZjAxNDliNjczMmZiZTRmYSByZWxlYXNlMjQtbWFpbnQKKzU1NTc5IGNjMGFlZWU1OGE0ZDg3MjlkYWEzMGNhOTJiOTkzNzQ5ZWM3MmM5YTUgcmVsZWFzZTI1LW1haW50Cis1NTU4MCBjZWM2ZDk2YzA4NGExNjk2ZGYwODUwYTg1NzlkMmQzYzNkY2MxZjZiIHJlbGVhc2UyNC1tYWludAorNTU1ODEgMzRlOGUwM2U5MjFmN2U0NzdhZjZhMGM1MGRhMDZjMzgwMTBkMTQ1YSByZWxlYXNlMjQtbWFpbnQKKzU1NTgyIDJmNGQ5MjBhNTZmYzBmNDFlMjBjZGI1NGVmMzNhZjk2ZTMxNzQzZTIgcmVsZWFzZTI1LW1haW50Cis1NTU4MyBkY2I0M2Y0MDM5MGJhNzkyZDZlNjliNjY2ZDYxNjgzZDdiZmI3MDhmIHB5M2stc3RydW5pCis1NTU4NCAxZWMxYWZhMmJkYjU4YzM4YzQwOTQ2MGRmNTUwYjgwOTY3YTk4YjE3IHB5M2stc3RydW5pCis1NTU4NSAwODlmNDQ5YTIwY2RhMDE5MzRmZDNlNzIwZjk5YmQ4N2Y1NjZhMzcxIHB5M2stc3RydW5pCis1NTU4NyA4NWM5MzVkYmJlZjI2YmY0MDQ3ODE3MmE1NTFkYjJjZTE4ZmZiNGE1IHAzeWsKKzU1NTg4IDA0Nzg2YWU1MmRhZDQyMTI3ZDViMGQ3MjVlNzFiNzMzNDc0MmQ5NmQgcHkzay1zdHJ1bmkKKzU1NTkwIGJlZGZiZGNhZjM1NTdjZDAwZmE0MTg1NTk2ZDRiNTljOGQzZDVlYmIgcHkzay1zdHJ1bmkKKzU1NTkxIDk2NTdjMzMzYzRlYThmYzBkNzZjOGFkZmExYWQxMWU1NTU1ODA1NDIgYmNhbm5vbi1vYmpjYXAKKzU1NTkyIDM4NzdmMzdjOTg2MTBiY2M2ZTY3YzMyNGQ0ODgzNWZkYmFiZmJhMTQgbGVnYWN5LXRydW5rCis1NTU5MyBlNzQ2YTA2YjNlYWZlOWJhMDkxOWMwMGNhNWQ3ZjZmMzU2M2Q4YjhhIGJjYW5ub24tb2JqY2FwCis1NTU5NiAwMGY5NGQzNWM2MWNlN2ViYjFkMzE3MTE1ZTk2NDFmOWIyMmM1MjU2IGJjYW5ub24tb2JqY2FwCis1NTU5NyAxZWE0YjNjZjlkOTgxNGU3NTQ5ZjE5ZTVhZjZiODhkZjdkZjQ0YmRiIGJjYW5ub24tb2JqY2FwCis1NTU5OCA1YmM3ZjU2ZjVjMzNkZWY4OGFmN2VhNWQ3MDIyMzEzZDkwNDc4YjU4IHAzeWsKKzU1NTk5IGFkYmY2ODFmMWJiMmViNzUxNjg5MDUyMzU2NzEwMTQzNDBjNWQ3NTkgcDN5aworNTU2MDAgMTA1NjUzMDYxNmFjM2IyZDgzM2ZhMTM0ODFlMDg5OTZiMWY4MjgyMyBweTNrLXN0cnVuaQorNTU2MDEgZTcxNjJiNmNhN2EwNDBkOGFjYWY4ZTQ3ZTg0ZTU0MGQ3OGY3N2RkNCBsZWdhY3ktdHJ1bmsKKzU1NjAyIDM4OTA3N2E1NGZjZTNlYzg5ZTdlN2ZhNjQ3ODFmMWM0NmY0ZGQyNmYgbGVnYWN5LXRydW5rCis1NTYwMyBmYmYzNDJiY2I3ODQ2NTI1MWFlOTEzYmFkNmZmOTM1ZjI4MmZjMzIyIGxlZ2FjeS10cnVuaworNTU2MDQgZWMzYjhlOTRhMzU1NzFlNTk1NWI1NzlmYTFmMTIzMmIzMDY1OWE2NiBsZWdhY3ktdHJ1bmsKKzU1NjA1IGYyOGJlZDI2NGIwMmNiMzIwMmFhMjA3ZDc0Y2I1ZTAwZWVlMDVjODIgYmNhbm5vbi1vYmpjYXAKKzU1NjA2IDVlNDNjNzM2N2Q1NDVhODZiMjYwM2I2ZWJhY2RlMGJkZjZlNGI0NDYgbGVnYWN5LXRydW5rCis1NTYwNyBjMzZjODg3OWE4ZGFkOTg0NTcxOWVhZGI2ZWY2ODA0ZTY1MTY2MjBhIGJjYW5ub24tb2JqY2FwCis1NTYwOCBhYTczMjA2YzljZTY3NTZlYmI2MzQ3YTI1NTk2ZDk4MjljYWRmNWFhIHB5M2stc3RydW5pCis1NTYwOSBmNmE5ZTAzNGNjNjI4MjQyNjNlZGE0Nzg3NThkODYwZWJjMjgzZmI1IHB5M2stc3RydW5pCis1NTYxMCAyNDliNTI1ZTFhYzBlOTgwYjQyYTk4Y2ZjNmFiNGE5N2IwY2FlMGNiIHB5M2stc3RydW5pCis1NTYxMSBiN2NmYjNmZDhkYjA1OTk0ZGYzYTNkODQ3OTU4ZTk0Mjc4OWIwMjZmIHB5M2stc3RydW5pCis1NTYxMiBjMzI4N2UxOTVhMWQ1ODNlY2EyZWZmMzcwODU5MzNhZjI0NDNkYTc0IHB5M2stc3RydW5pCis1NTYxMyA5YmFlYzJmNTQ1MDlmNjgzNTRkZGI5YTAyZTU3N2NlNWYxOWJiNDlkIHB5M2stc3RydW5pCis1NTYxNCA0Y2FlZWI0MTMxODYyZmVhMWM5YWU3ZTYzYWE2ZWZjY2NlNmI3ODYzIHB5M2stc3RydW5pCis1NTYxNSAzZmRhOWU2YTBiNmQxZWQzYjc5ODljZWY3ZTU3YmU1MTQyNGQwOWMxIHB5M2stc3RydW5pCis1NTYxNiA4MWQ1YjAwNzExNjlhYzNiMTQzMTg0YzU4YjcyNDA4OWIwYmIxMjcxIHB5M2stc3RydW5pCis1NTYxNyA5ZGU4NzU2OTE4MWNiOGYzMWZkMWZhMDc0ZjkwY2I4MGQyMDk1NmEyIGxlZ2FjeS10cnVuaworNTU2MTggYWRlN2IwNjkzZTA3NmMyMTM5M2QxMmNiNDY2NWU5YmY4OTcwNjRmMCBsZWdhY3ktdHJ1bmsKKzU1NjE5IGE5ZWJjNTA0ZjY5ZDhjY2I5MjhiMjJhM2E3NjI4YjAxNTQ2MDlmMmIgY3B5X21lcmdlCis1NTYyMCA3NTg2NjZlMjdmYmVmYjQxNjQ1ODEzY2Y1YTA3ZjhkOTQzNDE2YTU5IGNweV9tZXJnZQorNTU2MjEgOGI0ZmI3MWZmZjFkMzY2MzcxNjMzMDA4YTE4MGM5ZDI3NTRkNDFkZiBjcHlfbWVyZ2UKKzU1NjIyIGFlY2Q3OGFmYTVhMjZlOTQzODdiNzA0YTRkMjkwNjk5N2M5OGZhNTkgY3B5X21lcmdlCis1NTYyMyAwZTdjNzBkNDFhMTliMDZlOTNkMzdkYTZjMWM0MDQxYmVhMDQzZGMxIGNweV9tZXJnZQorNTU2MjQgNDg5MDYwZTk3ZDE3ZmE4NzRjZThhNzFiODhjYjg3ODU0MTA4NDNlYiBjcHlfbWVyZ2UKKzU1NjI1IDhkNjM3ZDgxNmY3NTQxN2IwOTkxZDdjMmE3ODcwZmJjMzliZmY1YjggY3B5X21lcmdlCis1NTYyNiAzNzAwNTJkYzg5OTJmMzQ1MTU0MjZjYWJmMzI5ODVjODI2ZDljMzgxIGNweV9tZXJnZQorNTU2MjcgNmRkOTc2NzYzN2JiNDNkN2ZiMDc5ZWFkZTc4NmZlODUxMGM0MjE3ZCBiY2Fubm9uLW9iamNhcAorNTU2MjggZDVhZDkxNDkzNjBiYjk0ZDYxOTYxZWI5MjVlOWY5MjlhOGUxMGU0NSBiY2Fubm9uLW9iamNhcAorNTU2MjkgMzdjYTRkZDhhYmVmNDY5M2RjMmU2ZjQyODZmYTJlZDJlMzU3M2ZiNiBwM3lrCis1NTYzMCBkZTUxYWFjNDZiMWJjODk0NTNlODY0YTBjNzk2YzRkNjIxNzUxZjQ5IGNweV9tZXJnZQorNTU2MzEgYmE3ZWFlZTMzODIyNzkxOGI2MDVhMmM1YTAyNDYyMGJkZjZhNTFmYSBweTNrLXN0cnVuaQorNTU2MzIgNWFkMmQ3NzAwZDNjNTA1MDU5M2E1ZGZiOTIxYzU4MWQ2NzdlZjcyZSBiY2Fubm9uLW9iamNhcAorNTU2MzMgNTM4MWI0ZTcxYTA0MDZjOTIyNDk0ZjdkMjk0YjA4NzdlYWY0ZmE5OCBiY2Fubm9uLW9iamNhcAorNTU2MzQgNTAzZjVhNTY0NmQxN2EwOTkyOGIzNWExMmVkMTc0ZjJmODEwNWM0NCBsZWdhY3ktdHJ1bmsKKzU1NjM1IGUxNGVjZTc3N2I4YjQ1YjhmOTkyZWY3MjczMDFlNzNhMmI2YjIzYmUgbGVnYWN5LXRydW5rCis1NTYzNiBjNzgzNDk3MTMxN2NkNDliYTJiNjUyZTgxMzNlODEyOWQ4MWFmNjE4IHAzeWsKKzU1NjM3IDg4NWQwZWY5MGUwZjQ0MWNlNTdiMmExZmJiMmIxMjU1MTcyNzk5YWUgbGVnYWN5LXRydW5rCis1NTYzOCAwNmU2ZDYyMTVjNWI3OGJkMTNhOTFiNTllZTAyYWUzMDUzNDhjMWFiIGxlZ2FjeS10cnVuaworNTU2MzkgNzY4ODdlM2U4ZTU3YTZhZDRkOGFhMmNhNGEwMmU2MjE4NmYyMzY4MSBwM3lrCis1NTY0MSBhZTgwNTc5OGZhNjc4MmM2YmQ5NWNmMDZhZjc5ZjAwODY0M2ZhMjI3IHAzeWsKKzU1NjQyIDY3ZWU0Njk2ZDE0OWFiNjdiNWRjOTBmN2U5YWUxMGZhN2Q2ODAwNDIgcDN5aworNTU2NDMgMzc3YjVkZDYyOTNkYTk5NjYyNWU5YWJiZDY5NDU5NWI4MzU4OTliZSBwM3lrCis1NTY0NSBhMWVlMjU2ZmJjOGY4NDU5OGFhMjUwNTBjOTQ0OWY3YTdmMTk0ZGI1IGJjYW5ub24tb2JqY2FwCis1NTY0NiAyYWU5OTc1YWNhMjA1ZTZhMDFiMDQ2ZmU3MjgxMTNiZDBlMmJkODU5IGJjYW5ub24tb2JqY2FwCis1NTY0NyA4YjFjZGY5MzIxZmQxMzYwYTEwMDU1MWEyOWI2MzE1MGUzN2UwZmFmIGJjYW5ub24tb2JqY2FwCis1NTY0OCA5Mzg2MmFhNzZmN2MyYTA3OTYyNTY1N2Q3NWVkOTkxZjk5Y2YwZDIxIHB5M2stc3RydW5pCis1NTY0OSA5YjFmZmNlMjU2YjlhYWU2ODY1OTZiOTY1ZDVjNjBjMjE5Y2E0MjRhIHB5M2stc3RydW5pCis1NTY1MCA2YzJmYTcxZGM0NTlmMzg1MTBlNWE4ODNjNmZkYjY5OThlYjYzMzFmIHB5M2stc3RydW5pCis1NTY1MSA0OTI2ODc2OTVjNjZjODM1NjJmYjY0M2IwODZjN2Q1MDZmNWNjMDgwIGJjYW5ub24tb2JqY2FwCis1NTY1MiAwOTgyZmIwOGU3OWIxZDgxNDM1MGY2Y2Q2MjdmNTYzNDJiZjA0MGFjIGJjYW5ub24tb2JqY2FwCis1NTY1MyAwMDNjZTM2ZGQyMDIyMzQ5MDhjNWE3N2EyMGU5Y2VjZWJjMDVmYjJlIGJjYW5ub24tb2JqY2FwCis1NTY1NCAxODgyMTZiNDNlZjZhNzRiMzcxZWI0NmY4YmFkOTJkMTU2MzZiMmZkIHB5M2stc3RydW5pCis1NTY1NSAzN2EyODU2ZDhmMGUxZDkxY2ViNzMxNmI4OGVmMTA4NjhhNDg3ZGZmIGJjYW5ub24tb2JqY2FwCis1NTY1NiA3NWI5Y2UxYTc3NDVmM2NmNDE4NzhjODdmN2E4NzMxZGRkNjgzN2UyIGJjYW5ub24tb2JqY2FwCis1NTY1NyA2MmUzOTRkNTBhYTA2MTEzMzk2MTk3MzM4OTI0ZjQ5OGE1NDI5NjM2IHB5M2stc3RydW5pCis1NTY1OCA2Nzk2ZjBjYjBiZWE0ODEwMDhkZTExNDVmMWFiMTkwODI5ZDVlNWFkIGJjYW5ub24tb2JqY2FwCis1NTY1OSBkZWZlMjUxM2I3OGUxNzEwNTQ3YmZmNmQzZTRmNGQ5ZjNmZjAxZDQyIGJjYW5ub24tb2JqY2FwCis1NTY2MCBjZWJhZjdjM2FiOGM3NTBhODE2MWU5ZGVlM2RlMjFkN2M0ZmY3NzgyIGJjYW5ub24tb2JqY2FwCis1NTY2MSBiNmYwNDk3NGQ4YTc3ZmZkOGEzNjJmN2EzZDQ0MGI2YjBhZmZjMDg0IGJjYW5ub24tb2JqY2FwCis1NTY2MiA1NjI2MDJjOTEwMWQ5ZjFlZWFmY2FhYTZmYTg5YTQxYzU0MTdiMzdlIGJjYW5ub24tb2JqY2FwCis1NTY2MyAzNmEwNTY5NmJlODIxODA5MjY1Y2RkYmMzY2I1Mzg5MWU5MGM3M2M0IHB5M2stc3RydW5pCis1NTY2NCBmNDBmZjJkNzM4ZWE0MjY0YjMwZWI4Nzk0YzM5ZWM2ODI5YTk1OTg4IHB5M2stc3RydW5pCis1NTY2NSBjNDBiZmIzN2ZhMTU0MjRlOTA0ZDNhZDczMThmZGNlOGEyNmVjZjkxIHAzeWsKKzU1NjY2IDQxODA1OTk5NGU0NzIyMmNiYTlkNDg5YjI2ZjI3MTc2YTFlYjFlMmQgcDN5aworNTU2NjggYWE0YjcyNTQ5YTY5NjgyN2UwYzQzNGExN2IwOGRlY2ZkMjBhOTY3ZSBwM3lrCis1NTY2OSBkNWJiZjk3NTcwZTM2MjZkYzE4YzExMjBjZWIzMTE1ZTM0YzYxYTA5IGJjYW5ub24tb2JqY2FwCis1NTY3MCBlNzFkZTU3NTEzZTFiZDNiMmNiNWU1ZjlhNzliYzYzMTFiODM4ZDYyIGNweV9tZXJnZQorNTU2NzEgMDYzNWE2Y2ExOTgwMDIyMGU3ZGQ0NjQ5ZTIyOGZiNDQ1ZDNlYzM3NSBsZWdhY3ktdHJ1bmsKKzU1NjczIDdkMzc5YzQ3NjAwNzQyMTQ1Mzk2Mzc3OWQ1NjY1MjRmMjhlMjA1NDUgcDN5aworNTU2NzQgM2FmZmNlMmVmNzgyY2JlYWM0NWRkM2U2M2ZhMGY0OGQ2NmEzYWU0NSBwM3lrCis1NTY3NSBkZDM5NjM1NDBjZjc3MDk0MDkwYTI5NDQxNTJiYmIyMTRhMGUwNzBkIHAzeWsKKzU1Njc2IGRkZjA0NzFhNmRlMzczYjk0YzRmYzZiYWZmZGZmMmU2OTBmMWRjNWUgbGVnYWN5LXRydW5rCis1NTY3NyBhYWYzYjZkODJiNjNmMzZkZDg3NThjZjc3MmJjYjVlZTQ2NjM1NmYwIGxlZ2FjeS10cnVuaworNTU2NzggMjc1ZDg3YTQ3ZjY0MTRmZTY5ZjM0OTM4NDAxZDVhYzAwNzFhM2Y0NiByZWxlYXNlMjUtbWFpbnQKKzU1Njc5IGNkZWEwOTRjZjA0NTFmNjcwZjY0MjM2OGZlNTNiMmEyYTA3NzI4ZmEgcDN5aworNTU2ODAgMzk0YWI1ZmYxODU0ZTQxNmFkM2QyNjczOTkzZmYwNWZhNjNiYzI1MyBjcHlfbWVyZ2UKKzU1NjgxIGJhOGI1YWQ4ZTc2ZWJkN2VjYTVkMGFjMjhhNWRkM2QwMDYzMjA4YWEgY3B5X21lcmdlCis1NTY4MiA1MTY3ODU3ODUxYzEwOWQ0YjI2NGFhZDdhMDkzMDI1NTFjMWIyMDJjIGNweV9tZXJnZQorNTU2ODMgNDFjN2NkMTZiMTk4YzAwNmRhMzQwMTIwNmM1N2JmZDcxNDEzMmZiNyBiY2Fubm9uLW9iamNhcAorNTU2ODQgYWNkMWUyNjI0OTlkZDI4Y2ZhM2I0ZGY0NDI5YTY4YjcyMzRjYzYxNyBiY2Fubm9uLW9iamNhcAorNTU2ODUgYTYwNDJjN2Q3YzU1ZmEyYzFiMTJlYWMwNzhmYjBmMTVlNWNkNzYzOSBiY2Fubm9uLW9iamNhcAorNTU2ODYgNWMyOTQxMWEwNWE1ZjU5YzVlZjgxMGM4ZDY3ZTFlMGM1YTg0NzZmOCBsZWdhY3ktdHJ1bmsKKzU1Njg4IGFkNmM1Yjg4YjVjNGIwMTk3MGUwYzEzNDBhZWE4NjYyNTU3MGQ5MzQgcDN5aworNTU2OTAgYzJkYzRkMTdlOThiYzQwNGQ0Njk0NzYxMjhiZjU3MzgxNTg3NjE3YSBsZWdhY3ktdHJ1bmsKKzU1NjkyIDE3Njk5OTMxMTc5ZThmMzA1NmI5NTQ3MzlkYTkyMGY4Y2IxODI2MjAgcDN5aworNTU2OTUgMTIwMGMwZTA5NTUzNzY1OTEyZGIxOWRiMjIzOTNjNWE2ODAwZmJmZiBjcHlfbWVyZ2UKKzU1Njk2IDBlMjliYjgwZTIyNzhlZjYyZTVkMjM0MjY5MjNhYTk2MmJlMzFiMDUgbGVnYWN5LXRydW5rCis1NTY5OCA4ZTdlY2JkOGFhYWIxODc2ODYwMTczMTAxMDE2OGViNTgzNmM4NjVkIGJjYW5ub24tb2JqY2FwCis1NTY5OSAwZjQyNGRlNDU2ZGI0NjA5OTBlZTc1NjRkM2IxM2ZjYjY3OGUyYTA3IGNweV9tZXJnZQorNTU3MDAgYmI5NDJiNjBiMGZlZjJiNjJmNTk3NTI2MzIyYThiYjQyNjRkOTBlMiBjcHlfbWVyZ2UKKzU1NzAxIGRmY2U5YTI2MzVlOTZjZjEyYTUzNTJiYTgzZTMwYjIyYjUwNTliMDEgY3B5X21lcmdlCis1NTcwMiBkZjNmNzZhY2UyZDc0ZDczZGU5MDNmMDU4ZGNhZTg1YjNhODZlM2IyIGNweV9tZXJnZQorNTU3MDMgYWYwYWM4MzYwMmI0Nzg2YTIxMTVlNWJkMTM2YTU0MDdkZGViOTE1NyBjcHlfbWVyZ2UKKzU1NzA0IGQ4YTZhZmE2ZThjNjBlZTc1ZDVhMDQ5OGY1NTY0NzI4Njg5OTc5MzUgYmNhbm5vbi1vYmpjYXAKKzU1NzA1IGQwYjRiYmFhZmFhZTRjNDE1YjU1ZjliN2IwZjk3Zjg4NTI3MDRhMjYgbGVnYWN5LXRydW5rCis1NTcwNiBkZDQ2ODlkMGVjODViNmMxMDNhNTYzM2Q0MDBjOTY2OWNlMWYyNTFmIHB5M2stc3RydW5pCis1NTcwNyBmMjg3Yjg4YzNjMjFjZmJjNTQ0MjUzMjFlYWFlMjQ1YTA4ZmYwNzg2IHAzeWsKKzU1NzA4IGM0NTExMTUwZWY2MDcxMjBlNmMzOWZlM2Q5ZjdjNGRiNDRlM2RhYzQgcDN5aworNTU3MDkgNzFkODYxZWU5ZmYwZGJkYWUwN2FlM2M0MGIzMmVlYzE4YTMwNjZiYSBweTNrLXN0cnVuaQorNTU3MTAgYjhiZWY5YTFjZGYwMWNkODFiNGQ2ZTc1MWE2ODA2ZjRiNGJkMzQ4NiBweTNrLXN0cnVuaQorNTU3MTQgZGJkMmNmNDA1Mjc4MjVmYmYxMTRlNGE5MzZhMDZlNzJmYjY1OTVkOCBweTNrLXN0cnVuaQorNTU3MTUgMTI3ZjE1MWYzMTdiNzdlYTYxMzM4ZDY3NjdiZDg0MDZkOTBlYTI3NyBweTNrLXN0cnVuaQorNTU3MTYgYjM4MGM5YzQ5NzM4YWNhMDVhMTUzZWQ2NWNhNmM3YTM4ZTY4MjZlZSBsZWdhY3ktdHJ1bmsKKzU1NzE4IGNlZjA3ZGIxY2FlZDFhMDgyN2U0OWJkOTE3MWU0M2I1MmFlZDk4ZDkgcHkzay1zdHJ1bmkKKzU1NzE5IDkxYmIxOTgxM2NhNjExZmNhMjEwODFkZjJjMDNlMGQwNTVkNDQ1NzggbGVnYWN5LXRydW5rCis1NTcyMSBjNjFjYWFmNTYxNjMwYTFlYTcwZDRhNTA0ZThlNzg2NzZhMjE4ZTJlIGxlZ2FjeS10cnVuaworNTU3MjMgNjY3YzFhNzI3OWM5ZjdjYjQ4NzgzNmE1NzY5ZjdiMWVkYmUyMzAxNSBiY2Fubm9uLW9iamNhcAorNTU3MjQgNWNhN2QxNzBlNDMxMmY1NDBiNGQ2MDJiOGVlMjJlOGYyMzQ3M2FhMCBwM3lrCis1NTcyNiBjY2YyMDk5MjUzODM2OWU3Zjk4MjA2N2M1NTQxMGQzYThhMDM2MDJmIGxlZ2FjeS10cnVuaworNTU3MjcgOTY4NjFhMDQxZjU0NmNmNDc4Zjc2OTY5ODYzNGZkMzc5NzQyMGEyOSBwM3lrCis1NTcyOSAyOTM0YWYwNWY4YmZiMDkyYmNkMWMwNWRhZmE3NGVhMTJiZWM4NzUyIHAzeWsKKzU1NzMwIDlhY2IzOTQ3ODBkZjkzNjE5YmRiMDRlNmQyM2UxYzU1MjZhYWVmOWMgcDN5aworNTU3MzEgMjRlZmEyZTQ0OGJjZTJmYWUxMGFiNGM3N2ZhMWI4MzRiYmY2N2FkZSBsZWdhY3ktdHJ1bmsKKzU1NzMyIDkwNDg3YTg4N2JlMTM2ZmJlOTI0MWJlNzdlMWVhY2ZlNzlhMTU2ZTEgbGVnYWN5LXRydW5rCis1NTczMyBmZWMxMjk2NTQ0YWI5NmMwZWY1MjgyYmRlNGIyNGNkM2NmYzM5YzE0IHJlbGVhc2UyNS1tYWludAorNTU3MzQgZjAxMjFiMjE1ZDM4OTYwMzEzMzc0ZDdjZmI2YWIxNTkzODJiZTQ0MyBjcHlfbWVyZ2UKKzU1NzM1IGZiYmY4NTFlMjMwYTU5ZTVmZDYzOWM0NDQ4NDk4ZjhiNzhmZWE3NTcgbGVnYWN5LXRydW5rCis1NTczNiBkYTUxZjdmOTA4Y2FkOGZlN2ZkOTFiOTIxZGMzOGY4NTM3NDVlMTk3IHJlbGVhc2UyNS1tYWludAorNTU3MzggZGZmNjI0YjJhMjQ5MTA0MmU3MjhiMjE1ZTRhOTIyNWIyYWZjN2ZlYyBwM3lrCis1NTczOSBmOWY2MDAwMzI3ZTI3YmQyZWI4ZDRhYzViMTE5MzRiZmQ0OTkzNzRhIGxlZ2FjeS10cnVuaworNTU3NDEgMzI4ZTQ1OWViNjcwMjk2MTFmZGY4YTM4NzU2MDMzMzgyZmYxNTFiMSBwM3lrCis1NTc0MiA3YjNmNjRiM2U3MzkzODhlZDQzZmQwYjRkYWVlYTg0YzA3OTk5Njk4IHAzeWsKKzU1NzQ0IDA0ZjRiNTU3ZDNjNDUxMWIzY2UxMGUzMWEyNjRkZmE5YTA1MWY4MDUgcDN5aworNTU3NDUgMDQxODZmNTIxOTJkZGIxM2UzZTJlZjMxMDMxNTViODg0MWQzODM5NCBwM3lrCis1NTc0NiA3ZTBjMjIwYjU1YTY0MDMzYzgzZDg3YjYxYWRjOTkzY2M5ZTllOTIzIGxlZ2FjeS10cnVuaworNTU3NDcgYjRmMTNjN2ZkZmQ4OGQxNjhhMTVkNTIyMmRiMGEwZDkzODM3M2M2YyByZWxlYXNlMjUtbWFpbnQKKzU1NzUxIGUzMWQyZjk1ZjIyNTRkMjQ2ZDNlNTlmMjQzYmJjOWUwZTM1ZmRkOTcgbGVnYWN5LXRydW5rCis1NTc1MiBlMTk5NzI4MzQxNzA4OGRhY2I2NzljNWFmMjEwYzFkZjhjNzliZTMyIGxlZ2FjeS10cnVuaworNTU3NTMgODJiOTNmYTkxZGNmMzQxM2QwMmI5N2ZmMmVjZDE5MDljMzZlMTQ2MiByZWxlYXNlMjUtbWFpbnQKKzU1NzU0IGFiZGUwODM4NDNjZDJjYTMyMTlhZmVlODU0NzJmZWRmZGY5ZDg2MzUgcDN5aworNTU3NTUgYjhhYmRmYTFjOWFmYzEwMDJkMTIyOTUwZjNiMjlhNTVjNDBkZjAzYyBwM3lrCis1NTc1NiBmNmZhYjFjNzA3ZTkwOWZmZDA1Nzk0Y2ZlMWY2ZGY1ODJhMDFjZTdmIGNweV9tZXJnZQorNTU3NTkgNTAxNGY4ZGFhNTdmYWQ1Nzg2YmFhN2RmNDNhMGQ0NjU0Y2UzZWJmYSBweTNrLXN0cnVuaQorNTU3NjAgZTRhYjA4MDM5Yzc1ZjgwZmQ4ZjhlZTk1NWY2MDE3N2Q1NTY3ZGMwNiBweTNrLXN0cnVuaQorNTU3NjEgNzNkZDJkYTMxZDM3ZWJkODNlZmNjYmI1MGNhODUyMjM1ZTI3YzUwZCBweTNrLXN0cnVuaQorNTU3NjIgOGJjZmM0NmU0NDRiNTgyNjZiZGNjYjFmMWFhNjBiZmJmZTEzOWM1OSBweTNrLXN0cnVuaQorNTU3NjMgNTM5NjNhMmY1NjUyOWJlOGMxNjU0ODRlNWRlNmNkZmQ4OWE4ZjQxNyBweTNrLXN0cnVuaQorNTU3NjQgNTc5OGEyZmJhYjAzMDRmMTM2N2JmMTU4NjkyYjg5YzRkYmYxNDcxZiBweTNrLXN0cnVuaQorNTU3NjUgNzE2MDRkNDlhMzg2MzllY2ExNDcyZjE3ZDc2Yjg1ODM5MTFhNzdlNSBjcHlfbWVyZ2UKKzU1NzY2IGMzNmFjNjdlZWY1Yjc3NmExMmMwNDc1M2Y3MDhhNWRjOWFjZmJlZTAgbGVnYWN5LXRydW5rCis1NTc2NyA0YjM0ZmFhYTk3N2RlODk2OWIyZTJiOTQ1OGU5MTE1NjkyNjkwMTJhIGNweV9tZXJnZQorNTU3NzAgYjZjMWExYTE1YTZjZGI0NTAxYTA1OGZlMGQzOTYwOGJjODk5MWJhYSBsZWdhY3ktdHJ1bmsKKzU1NzcxIGUzZmJkZDdjYjk2OWNlYjhiMmM4NDM5NmJkZWM4ODM5MWY2YWMwMjcgY3B5X21lcmdlCis1NTc3MiA3NjE5NGU2ODJlMjFjYzZhZDUzZmQ0YzQzMGUzNDUyYzNkYzhlZDk2IHJlbGVhc2UyNC1tYWludAorNTU3NzQgYzVjZjlhNGY0ZmE5NzljZDE3NTU1OTE5YjZkMjg3NTE0Mzk0OGI4ZCByZWxlYXNlMjUtbWFpbnQKKzU1Nzc1IDM1YWNjZWRiNWQwM2I0OGUwMWQ3OWY4MjQwMDNmMWY2YmVmOTA5MTIgcmVsZWFzZTI0LW1haW50Cis1NTc3NSBjZmJjZmY2NmU3MjVhYjQyOGUzZTlhMmIxNWEyYzc3OTYzODk2Y2FlIGxlZ2FjeS10cnVuaworNTU3NzUgMDE4MTM4NDFkNjRiZmI0MzY2Y2UwZGQxMWE2ZTBmNjgyOGQyZjYwYiByZWxlYXNlMjUtbWFpbnQKKzU1Nzc2IDM5YTFhMjJmOTZjZjYzZjEzNDI5ZDc1YWE0MjBlNzgyYzBmODg0MmQgcHkzay1zdHJ1bmkKKzU1Nzc3IGIzZjYxYmFlMTBjMzhjZDg1OTRhMGVmMzEwNWIxYjZmYzcyODFhZTIgY3B5X21lcmdlCis1NTc3OCBlZjM3NDMxZWJmMmM5NDVlMWUzYWM4MTNiZmVhNDJiZjk2MWRkN2JhIHB5M2stc3RydW5pCis1NTc3OSA0YzVmYmU2NWI3ZGU3OTM1OWQ0ZjE1NzU2NGYyOGQxNjg2MDY0ODc1IHB5M2stc3RydW5pCis1NTc4MCBiMzBjNzVkMjJmMzRiMjM5NzBhNGU4ZTM4ZDI4ODZjNGZiNDU5OTJkIHB5M2stc3RydW5pCis1NTc4MSA3MDE1Y2NjZjI5ZTNiYmQ3NWRjMjc0NzYyYzIwOWQzYjRmMjNhMGViIHB5M2stc3RydW5pCis1NTc4MiAzMGU2MWFjMWQ2NmM2MmNjZjU0MDlhNTU0NmI1NjQ1MDgwZmFkNTBjIGNweV9tZXJnZQorNTU3ODMgOWFmNTI0ZTM1MWYzMjUwZjMxZjBkNjQ5MDc4NzdiOGViNzFhMmMyYiBsZWdhY3ktdHJ1bmsKKzU1Nzg0IGYyMjc3NDM5ZGNkYzlmOGFkNGE4ODM5YTQ5Nzg5OGMwMmM4M2JjODEgcmVsZWFzZTI1LW1haW50Cis1NTc4NSA1ODg2ODZkNGMyY2Y4N2ViOTY4NGI3NmRjNWRkMjkxOWMwNzcyNmMwIGxlZ2FjeS10cnVuaworNTU3ODYgNmZkOGQ1MjRkNTZiMmU2OGVlYjY1NDIzODgwZTU2NTE0MjM2MDg4MCBsZWdhY3ktdHJ1bmsKKzU1Nzg3IDExOTMwZGNmOWQ0ZmI0ZGFlNmM5NGVmNGI3YzUwZTQwNjE2MWM0N2YgcHkzay1zdHJ1bmkKKzU1Nzg4IDdlNTJiNWJlYzVhNDI2OTk3NjM1NjUzNTlmZWFjYTg5YmE2ODAyYTEgcHkzay1zdHJ1bmkKKzU1Nzg5IGNlNWFmOWE3NDZjYjIwOGMzZTJjMzZjMGIyMDkxYzkxMWQ2MjkwZmIgcHkzay1zdHJ1bmkKKzU1NzkwIDQ1OTY3MjdmNmMzOWJjNThmODFmMTdlYjhiM2Q1YjMzYTljYTkzMTggcHkzay1zdHJ1bmkKKzU1NzkxIGIwNWM2ZDQyZDRmNzIxZmI2NmJkOTM4MDkzMmI2NGUxN2FiNjBiZWUgcHkzay1zdHJ1bmkKKzU1NzkyIGYxNDFjNWY3Nzg2MGUzMGRjMzk2ODZlNDU5NWU5NDU0YjU5MGMxNWQgbGVnYWN5LXRydW5rCis1NTc5MyAwNTg3OWFiODdlNWI0ODRjOTk1YjVlNjVlNDQzMWI0OTVmNjY4ZWVmIGxlZ2FjeS10cnVuaworNTU3OTQgN2IzN2E0MzcyMzYxNjNmOGI0M2E5NjZmODNhYmJiY2U2YWY2NGNlNCBwM3lrCis1NTc5NSA5ZDAyYTRhZGY1NzQ4MWI2MGQyZjk3NWI2YzU3OWYxZDZkMWFkNTk5IHB5M2stc3RydW5pCis1NTc5NiBiMzkwMGE1MTM0NmI1MmM0ZDExZGU5OTZhZjAwODdiZDhkNzk0Nzc0IHB5M2stc3RydW5pCis1NTc5NyA1OWI3ZTkzNDY4ODVjYzYwY2JhZWQ4ZjA2YzcwYWRmODRkYmVlZjlhIHAzeWsKKzU1Nzk4IGM2MzkyMjhjZmUyM2Q0NGE5Y2ExNTkxMTZiOTM3Nzg2NmNiMjVmNjggcDN5aworNTU3OTkgYTMyNjFjZGUzYTM3ZTY4M2IyMjcxMDRjNWRlYzczZjY2NjBlMzY3MiBweTNrLXN0cnVuaQorNTU4MDAgZmVlNzFjN2FmNTJmNGYwZTA5NmVkYmE1NTkzYzExMmI3OWE0NmJiOSBweTNrLXN0cnVuaQorNTU4MDEgOTQyZDgzMDJmNGQ2ZjE1NDM5NDAyNDA2MzMyYTRjNzM0ZjZjNWY4NiBweTNrLXN0cnVuaQorNTU4MDIgYzhiMGUzYjhiNDU2YmM4ZjJhYjU5ZDQ1NWU2NzlhMzFlNGU0NzRmMyBsZWdhY3ktdHJ1bmsKKzU1ODAzIGMyYWMyMmM2Zjk4ZDAzZmNkMjg0Njk1MTRiMTcwN2JhOGE4NmExMWIgcmVsZWFzZTI1LW1haW50Cis1NTgwNCAxYmM5MDFkZGI3ZGMyMWIzYWRkYTdlOTdmMTAyMGI2YThlNmQwNGQwIGxlZ2FjeS10cnVuaworNTU4MDUgODIzYzJmNzU5MWY1MDJlYTg0ZTAwMGM0MzUzZTg5M2IxZjlhYzQ4ZCBsZWdhY3ktdHJ1bmsKKzU1ODA2IDgxNTBkMWYwMTBhYWM1NjZmMjNkMDJmYTY5ZTk1NWM3NjdlMWU3ZTcgcmVsZWFzZTI1LW1haW50Cis1NTgwNyAxNDc0NWI0ZmE3MThhNTlmNWQ1MWRhNDRjZjZlOTg4Yzk1NDk3MmI0IHB5M2stc3RydW5pCis1NTgwOCA4MjdlYzc2ODAxOTk1MzRmYzljYzRlOWJkY2ZjNGNkZDIxNjVjZGE1IHB5M2stc3RydW5pCis1NTgwOSBjZDhmMTY1YmQ3ZTI5N2E0YTFmYmJjNmFhMGFiMjkyY2Q1MDExODA1IHAzeWsKKzU1ODEwIGM2YTBiNzVkYmVjMjI4ZmY5MDc1MmNmMmI1ZTNkOTMzZGQyOTg5NDMgcHkzay1zdHJ1bmkKKzU1ODExIGVmMDljYjAxMTk1OTY0YTNmZGQ2MjFkN2UxNWY4MWQyYjBjOWIyZmYgcHkzay1zdHJ1bmkKKzU1ODEzIDU0ZWY2NDVkMDhlNGZiYjZjMzkzOTRiMGE1ZGJjNzA5MThkYWVjYzIgcHkzay1zdHJ1bmkKKzU1ODE0IGM0MWZkNTcyMzg2MDk2MDA5NzE0YmM3OGY5NDg4ZmVmMGExNmU4YzEgY3B5X21lcmdlCis1NTgxNSBlNDIwMDM5MzY4Yjc5YmUyYjE5MmQ0MDI1NTNhZDAyODI1YzFiYWZjIHB5M2stc3RydW5pCis1NTgxNyBhZTZiYTYxODhkMzhkNDA0ZTMwYWFjN2Q1MTJjNmIwNzUyMzMwZWMwIHB5M2stc3RydW5pCis1NTgxOCA2NDY0Y2M2MzhmYWEwZDE0OGY2N2UxNzBhNmEzMmI4MWNlZjNmYTE0IHB5M2stc3RydW5pCis1NTgxOSBlNjZkYWZhOTg0MDNkNjI1NjQ0NjIyNTgwNWE4ZWQxMzMzYjk1MDE1IGNweV9tZXJnZQorNTU4MjAgMTRlYzk2NzNmODk0N2M3M2YzMmRlZWRiNzQ1MmJiOGRlN2QyY2Q3YSBweTNrLXN0cnVuaQorNTU4MjEgMjQ1M2I5Mzc5MjVlODkzZmU4NjczMmQ3OTUwYzc5OWI3ODkwNDNiOCBsZWdhY3ktdHJ1bmsKKzU1ODIyIDI5ZDFhZjIyMGMzYzdhNWI1YzRhOGZkMGUxY2MwMzMyZjhkNzg0ZGIgcmVsZWFzZTI1LW1haW50Cis1NTgyMyBlMTUzYmEzNTJiNTEzYzVmOGM3OGE4ZGI3MTczOWVmODgwMmYwYWEzIHB5M2stc3RydW5pCis1NTgyNCBmNDhjMTk3ZjljMzhmZGU2ZjY0NTYzYmNhMzNiYjM3OThjMTQ4YTQxIHB5M2stc3RydW5pCis1NTgyNSA1OGExMzMzMGRmZGU5OTY3ZjkzODIyOWVmYzVlY2QxOTY0NGVhYzQ4IHB5M2stc3RydW5pCis1NTgyNiAwZDgxYTY1NjQxMmExN2Q0MWFhOGE3NTdhNjcyMDAyNzUyYzE0NDc2IHB5M2stc3RydW5pCis1NTgyNyAxNGI2NWRlOWI3OTg1NDkwYTE3OGI1NmIyMjRhNmNkODE2NWY5NDc1IHB5M2stc3RydW5pCis1NTgyOCA1MjJhNDk0NWRlZjgwZTYwYzcyM2U3YjVmMzM5MzVlMDVlNGU1MWMwIGxlZ2FjeS10cnVuaworNTU4MjkgMWJiY2QzOTI0MTdkY2E1NzNiZGMwZDI5MjMyNDIyNDhmODY4YWE0NCBsZWdhY3ktdHJ1bmsKKzU1ODMwIDEwZjhhOGE5MTllMmEwZDA5N2I3YTJjNDljMmI0NGQ1MzEyYzAxNjcgcmVsZWFzZTI1LW1haW50Cis1NTgzMSA3Yjg0ZTg5MTliMDAwYzUxMzI0YTRiYTU2ZWI3NGU0ODgzY2FhNzVlIGxlZ2FjeS10cnVuaworNTU4MzIgYjRmNGVlODRjMzBkN2FhZTgxMmRjY2Y4NmUwMzEwZDk1OWYyNjZlZSBsZWdhY3ktdHJ1bmsKKzU1ODMzIDg2OTFjYzc2ZDQ0MTkyNTBjZTUyZjJjODg2NTFhYmMwMzBhMDgwNGMgbGVnYWN5LXRydW5rCis1NTgzNCAwNjcyZGJlZDVmN2E5NzhlMTU2NjNkMmZhNjRmOTdhMWUzYjZlZDgyIGxlZ2FjeS10cnVuaworNTU4MzUgZDYwZDBkMGVlNGY4YzljODM3MjljM2JkNjdhYmNiNGRjYmIxMGE3MiByZWxlYXNlMjUtbWFpbnQKKzU1ODM2IDJiZjRkYzlkMDY0N2JjYWU1NjEyNDM4ZDY2M2FiOWQ5MmZhMzQ3MmYgcmVsZWFzZTI1LW1haW50Cis1NTgzNyAwNTI3YWI5NDNhNGYyMjJjZjg2MTgxMmNiNzc5MjMwYjg4OTY1ZDhhIHAzeWsKKzU1ODM4IDc5ZjEzYmY4ZGQyN2EyODU3OGRhOWQ2YTA5N2RmOGNjNGNmMzBlZjIgcDN5aworNTU4MzkgZTYyYjYwNmVmZjBiODM2NmVmMDBmOWFmNjZjNTI2ODdkOTU0ZDgwMSBsZWdhY3ktdHJ1bmsKKzU1ODQwIDJiZDk0MTdkYWNkNWM1M2FiZTc4NTRlZWQ2NDQ4OWMwNDliMGRmMDkgcmVsZWFzZTI1LW1haW50Cis1NTg0MSAxNmNlZTY3NGE0MTBlNTkyNjI1YmU0NjBjYzhjZmEwNWY1NzE2NDgwIGxlZ2FjeS10cnVuaworNTU4NDIgZTg0MTM5NzEyMTJkZjk0NTA5MGE0OGViZWRiNjU0ZDA1NTFlNTU4NiBsZWdhY3ktdHJ1bmsKKzU1ODQzIDI4ODA1YTcyMDQ1NDAwMmM4YjM2ZDdiNThhNmIwZjk1OTU3MzEyYWIgbGVnYWN5LXRydW5rCis1NTg0NCA3YzkyMjVkYTVmNjExNTliNDM2OGYzNDgyMzg1YmE3ODgwNzc4OTQ2IHJlbGVhc2UyNS1tYWludAorNTU4NDUgZTJjMzlhMzBlMDhkZDZkYzQ5OWY1YjVjNzAxZDc2OWU2YWQyMGFiYiBsZWdhY3ktdHJ1bmsKKzU1ODQ2IDczMWI2OTk0MjMxNzgwMTlmMDYyZjYwYWNkNjEwY2ViYjUzY2ZkNGMgcmVsZWFzZTI1LW1haW50Cis1NTg0NyAzZGM1MDdjYTJlMmJlYmI1MTAzNGRkZGY0MjlmOTM0OWIwN2MzZjJhIHAzeWsKKzU1ODQ4IDU5YzZmNGNiYjMyNjhlYzJhNDA3ODM5MzdiN2Y3ZWQ1NDg5ZmUyMTYgcHkzay1zdHJ1bmkKKzU1ODQ5IDAyMjI0ZGE2MGZkMTgzYmZlMTVhYWU5ZGZhZjFmNTZkMGQ4ZjgzZjAgcDN5aworNTU4NTAgY2QxMjVmZTgzMDUxYjRlNTA4Nzg5ZGI4NjQ0NzFjNmMyZjIxMTdmOCBweTNrLXN0cnVuaQorNTU4NTIgNjQ0Mzg1M2JhMzE0ODkxZTdjZGU3YzFlYjE0ODkxNWQxNzFhZDU2YiBwM3lrCis1NTg1MyA2YmViNzVlZWU5YzUyZjJiMTJjOWI0N2NjMWQxODg2M2UzNmI2MjNkIHAzeWsKKzU1ODU0IGIxYjhlZTgwN2JkYWRlMjE5ZjMwNmMyZTIzMTgxNTBiZjdjODU3NjEgbGVnYWN5LXRydW5rCis1NTg1NSAzZGRhYWY2MTQ4MDQ0YWI3OWUwNjc3YjIyZDUyNzRiNDBiOTFmYjVjIGxlZ2FjeS10cnVuaworNTU4NTYgYjIzOWEyYmNiMjRmMzUzYzE4MjEzNzc0ZDQwNTQ1ODY0MzQ1ODg0ZiBsZWdhY3ktdHJ1bmsKKzU1ODYwIDdlYWNjZjUzYWRiZDE0YzNhOGI3MGExOGQxZDhlOWIxZmVmNTlmNWUgbGVnYWN5LXRydW5rCis1NTg2MSA3OTkwYmIyNzU5Y2IzNzk0YzcxZTk3MWM1MGM2MzhlNjFiMDNkMjZlIHB5M2stc3RydW5pCis1NTg2MiBmNWI2NTczMWJkNmM5ZmI2MWFkYjZiNTZjNzRjM2ZkMzcwYTQ3NWVlIHB5M2stc3RydW5pCis1NTg2NCA2YTQzODJjZWI3MWUyYzkzY2ZlZWQyZTQ1ODgwZDdlZGQyODg3NTc5IHAzeWsKKzU1ODY1IDBlOWIwYjhmYzNlN2NmMWQ2ZmJhZDVjMTQ4YWUyMjVjZGVmZjc4ZTggcDN5aworNTU4NjYgYjM3YTU2OGZkNDQxZWI1NWEyYWU5NTU4NjM5YmI3NmFkMGViN2MyMCBwM3lrCis1NTg2NyAyZDVlMjM2NWM3ZGIwNWI4MzBlNTIyMmQ0ZjJiYzQ0Y2VkNzhmMDNkIHAzeWsKKzU1ODY4IDllODU3YjZjMWU1NjNlNzc0ZjQ0NDMyM2NkMDJjYTU4NDc4NmQ0ODAgcDN5aworNTU4NjkgMTlmYTljN2QzYzRmMDlkNGMyMzhjNDRmN2Y2NzAzZGQ5ZWFjZWY1MiBsZWdhY3ktdHJ1bmsKKzU1ODcwIGUxYWZlNTZjYTZiYTMwODA5MjEzMjI4NjdmMjM2ZDkzOGM2OGQyMDIgbGVnYWN5LXRydW5rCis1NTg3MSBiN2Y4ZGRkMDcyYjg1OGZhMzRkYTlhYzMyOTIwYjQ3MDBjNjllMmRjIHAzeWsKKzU1ODcyIDU5YmM4ZGEwMWM2NTljZjgxNDU3ZjBmZjBhZjAxOTE0NGFiODUzYWIgbGVnYWN5LXRydW5rCis1NTg3MyBkZGU3YzM3ZjQ1MzY0ZDc2NjFmMzgwYmFiZDhiYWUwYmRkMGJjZTQwIGxlZ2FjeS10cnVuaworNTU4NzQgYjk0ZjI4NDgwNWJlNzA4MjZlMWE1OThjNjI3MTdjZGZjMTIwY2YyMSBsZWdhY3ktdHJ1bmsKKzU1ODc2IDM2YjhkNzRkZWI5ZTkyMTAyYzliYTVmOGM0NmZjZjFkNzI3ODkzM2UgcHkzay1zdHJ1bmkKKzU1ODc3IDc1ZWZlNmJmOGEzZWNlZDg0MWZiZWZkNmE0N2I5YTYwZjE1ZGYzMWMgcmVsZWFzZTI1LW1haW50Cis1NTg3OCA3MWYzMTkyOTE1ZTEzMWUyZjkxYTlkMjg3ZmUxMzY4ZThiZDBhNDc3IHJlbGVhc2UyNS1tYWludAorNTU4NzkgNDMzMjJmZjVlMzEyYzRhNTQ5MDQ1Y2U2NTZkMTI2NDRmMTljMTA3MSBsZWdhY3ktdHJ1bmsKKzU1ODgwIGM5ZTNjODI4MzhjMzM4MzNjZDQwZjc1ZDg2MzQzM2M1MmJhMDJjMmUgcDN5aworNTU4ODEgNzNiNmNlYmM2ZjcyN2ExYzljNGFjMDRlZmQ3NzczZTEwNGIwMmJmNCBsZWdhY3ktdHJ1bmsKKzU1ODgyIGIzNTZmODcyMDk0MWIyNTkyYTJiN2QyYzdlNDUyNmFkMjE1M2RhMDMgbGVnYWN5LXRydW5rCis1NTg4MyA4MjE3OGE2MDgyZWFmYmQxNTIxNGZmNDY4NTRmNzU5MzdmYTdmOTA0IHJlbGVhc2UyNS1tYWludAorNTU4ODQgNmYzYzMzNWVmNzE2ZmZlMDRkOGQxY2FiMjYyMDQ5NmZkY2NjM2Q2YSBwM3lrCis1NTg4NSA5YjZjNDY5NDZlMDJkZDVjZmYyYWQwOWM4MjAxNzU2ZTA1MDFkNmExIGxlZ2FjeS10cnVuaworNTU4ODYgNjQ0OTg1MGM1NzU5YTUwYWMyNmUxMzYyYzgyM2UxMmU5YzliNTQxMSBwM3lrCis1NTg4NyBkMWQ3OWM3MWZmNjJjYWFkODhhNGUzYWNjNzBhMDFjYzEwOWUwYWM2IGxlZ2FjeS10cnVuaworNTU4ODggOWQ0MDVlMTMzZDBiMjQ3NzZjY2YwMzdkNjFlNmM5YzBmODc4NDVlYiByZWxlYXNlMjUtbWFpbnQKKzU1ODg5IDliYmZkODQ1NjdkNTBhNDA5ZGJjZjMyMGNmYTljMDJjYTVkOTk4MjUgbGVnYWN5LXRydW5rCis1NTg5MCBkMGU0YTMyZjZiNzg5NTEyZWI5NDQ2YjVhOTRiNWE4MWE4MTJkZjM2IGRlY2ltYWwtYnJhbmNoCis1NTg5MSAxNjBiNzMxOGEzY2FiNmUyZTIxMTRiM2RiNjUwZjJmMDkwMjEzMjQzIHB5M2stc3RydW5pCis1NTg5MiAxODA4NDZiODc1NWY5ODRmYjE5ZWZhYTQ4MzFjMmEyOWFlNDY5MTVhIHB5M2stc3RydW5pCis1NTg5MyAwNTY2MjdjYjBlNDBhMGZjZmU1MWE0Y2M1NTQ2MGVlMjUxZTdjMjU1IHB5M2stc3RydW5pCis1NTg5NCBmODNjYzliMzFhOTc3YmRlOTczNWFjMmQzNjczNGIzMjNiYjFmNzY0IHB5M2stc3RydW5pCis1NTg5NSA5NmVlZmM3YTY3YTBmYzU3ZTFiZGE0NWVkOGFkMGI5ZjFlZWYyYTEzIHB5M2stc3RydW5pCis1NTg5NiAzZTY0ZDBlYWM3NzQ4ZWM4ZjVlZTUyNTkyNzA3NDE5ZjYyMWNlNGNlIGxlZ2FjeS10cnVuaworNTU4OTcgZTBmOTI3NDE0ZGZhMzlhMTYyNjgxM2VhYmI1MTIzNDk2NTU0NmRlNyBweTNrLXN0cnVuaQorNTU4OTggNjFmZDU0NDRkOTVmODBiZTE0NDgxZjg4ZDVjNjA2YTM3MGZlMWNlMiBweTNrLXN0cnVuaQorNTU4OTkgZmFhNjI2ZDZlNjc1MTcyZGFiNTZkMWJiNDdiZjZlNjRhNjNjNWU2YiBweTNrLXN0cnVuaQorNTU5MDAgMTcxZjBlMDczNjcxMjZhY2NmYmMyN2ZkOGQ3YTVkYjYyZWM3ZDY2MCBweTNrLXN0cnVuaQorNTU5MDEgOTViZTZjM2FkZTZlOWM5NWUzZTUwMThkZjU0NDJmZGY5MjNjZThiZiBsZWdhY3ktdHJ1bmsKKzU1OTAyIGQ2NzhiYTAxNzdkYWZhMWQyMTFjYTVjMjZmMTcxYWY2M2UwZmVhZjQgcHkzay1zdHJ1bmkKKzU1OTAzIDM5MTA1MzNiNjZjN2FkNDgzODdmMzg2ZWM1Y2UxZTUxNGQ2ZjhkN2QgcHkzay1zdHJ1bmkKKzU1OTA0IDNjM2Y2MTVlZGNmZmY3YTA1Yjk1ZWUwODg2MmU4YjY1N2QyZDg5Y2QgcHkzay1zdHJ1bmkKKzU1OTA1IGM2MzBlM2E2ODg4M2RjMzQ5MDQ1NGVhN2MyZTM4Y2NmYjU0MGY2YTUgcDN5aworNTU5MDYgNTdjMzQ0MTQ5NzI3ZjJlNGY5MWNlZWJlOTJlNjI5MjEyMWE0ZTcwNyBwM3lrCis1NTkwNyAwMmQzZWQyY2MzNDc1OTAwMjJjMDhhNzI4M2Y3NTU3ZjI3NmFmNTkwIHAzeWsKKzU1OTA4IDE5MGUyZjA2OWIxODE4MDJhNjMxMGMxYmNlZGQwMDcyMGRlNjdjMTQgcDN5aworNTU5MTAgNWUxNDY5Njg2OGY5NzEzOWY2Mjk0YjEwNDE5ZTgzYjE2ZmVhY2M2OSBwM3lrCis1NTkxMSA2ZjcyMjA4YzY0M2I1ZTQ5MDFhYjEyNGU1N2U4MGM1Y2JjNmNhOGU0IHAzeWsKKzU1OTEyIDVjMjZmZTA3ZGVkZjVkODY4NWJjMTM4MTM1MGUwNjQ5OTJhMmRlMGIgcDN5aworNTU5MTMgN2JmODM2MDk4MGYxZjNjMTgxMjQzOGU1NzFkMThkMGE5OGUxNWM5MCBwM3lrCis1NTkxNCA4ZGIwNjk2NzYyYjRmMTdkNzNjYzZhZWI0YTk2M2NiZDljOTNjOWM1IHAzeWsKKzU1OTE1IGNhNjkzZjRmZDA1ZDBlMjliMDgwODMzZDBjNjNhNDUzZTg4ZTg1MTIgcHkzay1zdHJ1bmkKKzU1OTE2IDg4MTIxNjJmMGY4MmE2OThjMTE2NTE3NjRlNzAwNjEyNmE1NzE4ZWUgcHkzay1zdHJ1bmkKKzU1OTE3IDg4MWFiMWQ0MTdlYmUzZmVkYjQ3YjhmM2I4Y2U0YzIwYTVmOTkxOTUgcHkzay1zdHJ1bmkKKzU1OTE4IDgwMmM4NGY5OWFhZDE1YjY2MGI0ZWY1MDkzMzJhOTQyZDJlODAzY2EgcHkzay1zdHJ1bmkKKzU1OTE5IDA2MzUzMGZjYzMyZTllMTQ1Y2VmMmNhMzNjMzQ2NmY5M2ZjNTBlYTAgcHkzay1zdHJ1bmkKKzU1OTIwIDZkNjQ3MjFlY2QyNjhjZTE1ZTFlN2ZjNjg3NDdjOTY3MDFiOGNhYjYgcHkzay1zdHJ1bmkKKzU1OTIxIDNmYWE4YzgwOTcwMjZiZTVmMWMwZDYwNDBlOTVhMDI3NzdmYWI4MTMgcHkzay1zdHJ1bmkKKzU1OTIzIGE5OWE5NmI1YjNmNWNjMTYyNzdjZGM0ZjUwZDkxNjRjMDk3MWMwYjcgcDN5aworNTU5MjQgMTcyZGNlNWZhYmExZGJhYTU0NzJmODAxZDVlZTQzZWQ3NjUwYmViOSBwM3lrCis1NTkyNSAzNDczYTY4NWU1ZTdmOGU0NGU5YjUzNmFmZjI4OTljMzhmYjE3MDQyIHB5M2stc3RydW5pCis1NTkyNiBhZjI2MDgwMDQwMjFkNmVkYjIwN2U0ZjVkMTk1MmQxOGY5Y2ZmY2NmIGxlZ2FjeS10cnVuaworNTU5MjcgMDQ1OWI4OGUxNGI0MTQ4MzcyNDQzMDYyZGMwM2RiYTAwMzk4OTYyZCBsZWdhY3ktdHJ1bmsKKzU1OTI4IGJhNWQxYTM5NzdlOTNkMTBkZTI5NzllOGJiZDA1YWZjMzg5YWU0NDkgcHkzay1zdHJ1bmkKKzU1OTI5IDBiZDc1OTE2ZWM1ODE5MTJjYTBkM2UzZGI3NmFjOTA5YjUyYmE1OGYgbGVnYWN5LXRydW5rCis1NTkzMCBkMGNmZmY4OTMwZTU1YWVlNzBlYTEzOGU1YmY4YTA3YmY1OWQxMDkwIGxlZ2FjeS10cnVuaworNTU5MzEgZGM3YTgyYzdjZTllY2I1ODVjMjhjMGQ1OGI4ZGYyZjFkZWM1MTQ4NiBsZWdhY3ktdHJ1bmsKKzU1OTMyIGJjOTBmYzliNzBiNzYyMzk3YTFmODRhNDU0NjRiY2FhZmI4MDhjOGIgcHkzay1zdHJ1bmkKKzU1OTMzIDQ4NzcwMDgwNzRhOTFiODA0NDkwNGNlNTQzNTZlNDViNWQxZmNiYTkgcHkzay1zdHJ1bmkKKzU1OTM0IDY1N2ZlNzlhNmRmZWJiM2E1MDc2ZmViOWQ3MzNmZGYxMGI4MjM3ZTYgbGVnYWN5LXRydW5rCis1NTkzNSBlOGIyMDYwY2NiNTljN2FiNTA5YTA4ZjViZmI5YWFiMzM3ODgxYmQ4IHB5M2stc3RydW5pCis1NTkzNiA0NWJiOTdhNGU4YjY3MTE3OGI2NTNkMDExNTBiYmJmYTZhOGZlZTFjIHB5M2stc3RydW5pCis1NTkzNyA0ZmI4NWU2ZjgyZTVlMmYwMzIyYzY1YjIyNzVmNmIzNDYwNWQxYWNmIGxlZ2FjeS10cnVuaworNTU5MzggZTlmYjA2YjQ0NDZlMGU5ZTk0ZTk2NGM1Y2JjNmYyNGExYThlNjkwNyBsZWdhY3ktdHJ1bmsKKzU1OTM5IDU2MDU3MTliZWVlM2NhZjUzODNjYzVmNThiMDhiMTc1Y2QwNDdjNmMgcDN5aworNTU5NDMgODI1MDQxZmM4ZTJjMWVkNGEzYmZmMTc2NDA1OGI4NTNlZmRmODQxOSBweTNrLXN0cnVuaQorNTU5NDQgY2U2M2E1ZGNiMGFmMTM0MTVmOWJmYTQ3NTUxY2E0ODc4OWNiMDI1ZiBweTNrLXN0cnVuaQorNTU5NDUgZjgzM2I0M2MyNzU2ODllYjI0NGU2YmQxZDQwODUyNTYxZjBlOGNlOCBweTNrLXN0cnVuaQorNTU5NDYgZmJhYmRiMGQ3ZGQyMmM0YTYxNjc1MWU4N2U5MTcwZDM3MGNmYWEwMSBweTNrLXN0cnVuaQorNTU5NDcgOGNhMWQzYTdmNGYwZjlkZjdlODQyOTEyYWU3Nzg4NTVmOTM2M2E5MCBweTNrLXN0cnVuaQorNTU5NDggZGU4ODAzODE2NTRhZjZmNzIwZWZkNDMzMzEwYmExNTM5ZTc4NWY2MyBsZWdhY3ktdHJ1bmsKKzU1OTQ5IDAzMThhMGY1NDUyMGU0MjcxYTk4YzFiNzkwMTZkMTcyN2E5YmQwMmUgcmVsZWFzZTI1LW1haW50Cis1NTk1NCA2MGJlMjc2MTA1N2JmZGQzZTQzMThjYTUwM2FlOTRkYzg5NmQ5NjBkIHAzeWsKKzU1OTU2IGI1MzkxMjE0ZGYzNWRlZTdlNjVmNjlmOWE0YzQ4YTYwZTE1MTM4MTIgbGVnYWN5LXRydW5rCis1NTk1NyAzZDllMGVmY2E1ZDM1Mjk2NDNkYmFjOWRkNzcwZjMyYTU0NDgzZjhhIGxlZ2FjeS10cnVuaworNTU5NTggNTBiZWJlZGM2MTRlZDU0ZDU0NDM5YzViZjYyZTA4M2NkNWExZTIxNiBsZWdhY3ktdHJ1bmsKKzU1OTU5IDllMTE0YjFmZDk0ZTgzODA4ZmY1MDgyMGNmNGE4OWRhZDM3MTI2YzIgcDN5aworNTU5NjAgMDVmMWZkMzEzNDRkZDhiZTY4MDhhNGQwZWUyOWVmZmUxMmU5MjM4NCBweTNrLXN0cnVuaQorNTU5NjEgZmZiMWFlNzIzM2EyMjk5OGYxOTkxYTUwYTM4Y2U0Yjg1ZjdkYTk0MSBweTNrLXN0cnVuaQorNTU5NjIgMzcxODllMzc1ZWM3OTZhYjE2MDdjNWQzZjk4MTkzM2NhNzZlMDA5ZCBsZWdhY3ktdHJ1bmsKKzU1OTYzIDIyOWMyOGNiOWFmYjIzMjljMGY1NTdiYWRiZDVhZjA4YjM0NjJkNzMgcHkzay1zdHJ1bmkKKzU1OTY0IDUzNjk4ZjlhNGViNzZlNTQ4YjJhMGI2NzZjYWE3Nzg1M2Q2ZDBiMGUgcHkzay1zdHJ1bmkKKzU1OTY1IDU2NzVmNmMzZmY4M2QxZjMwN2YxMjlmMDJmZDBjYWQwZjhhOGFmN2QgcHkzay1zdHJ1bmkKKzU1OTY2IDk3Mzk5MmE3NDQwYTFjYzU4MjEwODUyNThjYzY2MzZlZDI5MmFjMzcgcHkzay1zdHJ1bmkKKzU1OTY3IGI3ZTU0OTg1NzMyMTU5N2JhOWQ0N2QzNTJlMzdjYzRiZGE5NDY1NTkgcHkzay1zdHJ1bmkKKzU1OTY4IDBlMDEwZGIxMjJjNzFhMmUyM2M2MmUwNTBhZTJkZWZjZGE1Yzk5YjAgcHkzay1zdHJ1bmkKKzU1OTY5IDg2OTM3YjBjZDU2YTZjMGFhYjk5MDM0MzZmMTc1Nzk1NDg1ZDZhMmQgcHkzay1zdHJ1bmkKKzU1OTcwIDcyZmM3ZDAyOWQzZDJiM2MxZDZmMTA4M2Y2OTQyYmZhNmY3NDA2NDAgcHkzay1zdHJ1bmkKKzU1OTcxIGQxN2EyNzI0Nzk4NjMwMjY1YWQwMzU0ZDk2NDY0NzYwYmQ5NzYyYTYgcHkzay1zdHJ1bmkKKzU1OTcyIDM2NTY3ZmUwMmVhNWQxMTE0ZDEzYWFlNTM3Zjk1ZDQ3MGExMTczMmYgY3B5X21lcmdlCis1NTk3MyA0OTdmYWRlMWY4NzM0ODI0NmFhNDA2ZDdjNGU4MzRjOWM3MjZmYjc3IGNweV9tZXJnZQorNTU5NzQgMmNmN2NlNDFlYzYwMzU5YjI5YzBhOTdhZTdkMGVmZTMxMDU1MDg4NCBjcHlfbWVyZ2UKKzU1OTc1IGZkOGRkNzQ0NzBmOTU5MDQ3ZWY5MzRhOTlkNWYwMzQ1NDI1OTk1NzggbGVnYWN5LXRydW5rCis1NTk3NiA0NGI0NGIwYTlmZTI1N2M3NDhmOTM3NTFkNTc0MDBjY2I0ZWFlYzBiIHJlbGVhc2UyNS1tYWludAorNTU5NzcgMjcxZjY4NmY2MjE4MTFkY2M2MzI4MjM0OTM1YjQxMDY4Y2U5ODlhNCBjcHlfbWVyZ2UKKzU1OTc4IGY2NTY3MmI4ZTdkMWZlZTk0N2U2ZmI5MWE4NWM5MjMzMjNjMjQ5ZmQgcHkzay1zdHJ1bmkKKzU1OTg0IDg1YzQ0NmY0YjE5NjIyY2M4OGM4YTdhZmI0OGU4OTE0MzI1NTU4NWEgbGVnYWN5LXRydW5rCis1NTk4NSA0ZjZjZTk4YjA2MGQxZmM2Yzk0NTZjYmQ2ZjU0ZjFhNjVlYjRhMWQ4IHAzeWsKKzU1OTg2IDI0NjMyNGIzOTg5NmIxMzBiZDcyZWQxODhjNTlhNDlhOWY3ZjRmMGMgcHkzay1zdHJ1bmkKKzU1OTg3IDU4MzhiZWM3YzExNThhZTMwMDU3NjVlNjA3ZTk4N2QzYjA0ZTQ5YzQgcHkzay1zdHJ1bmkKKzU1OTkxIDY3MjdjYzllZDA5ZmYxZjViMDVkYjMxNmI3MDQ5NDlkOWZjOGJjMzYgcHkzay1zdHJ1bmkKKzU1OTk1IDQ4Nzc0N2Q5MTBjNzYyYzAyZWEzZGU3YWZkNmQzOGZlMTk0MjkyNmIgcmVsZWFzZTI1LW1haW50Cis1NTk5NiBkNmQxZTg2YWQ0NmMxZTkwZDdlOGUzMTQ3MGZhNGU4MjVhMDU0YzllIGNweV9tZXJnZQorNTYwMDEgZWQ2YzgyZGExYTZjZWViMWQ5NWQxODc5Y2QwNDEzZDFmYjYyNThiMyBsZWdhY3ktdHJ1bmsKKzU2MDAyIDliYTk5MmY2NGU5NTdmMDc4NmMwNTg0NDYwNWQyYTNhYjVmM2JjYTYgY3B5X21lcmdlCis1NjAwMyBlNGU2YTRkN2MxNmU5NThjZTQ5MTQwMjUzOTFjOTFiOGNlMjJiOTU1IHAzeWsKKzU2MDA0IDdkN2M0ODA1NjNlMjFjY2ZkYzA1YjhhN2VmMTgzNTQwZWEzYzU4YmYgcDN5aworNTYwMDUgOGU4NjA5NDMyZTU2Yzg5MWZhM2E4MWI1NzUzNGI0OGI1N2E4NTA4ZiBsZWdhY3ktdHJ1bmsKKzU2MDA2IGNlZDhkYjYxOGU1YjZiZWE5NTk5NjgxNDg2NDc0ZjEyNGM5MGFkZWQgbGVnYWN5LXRydW5rCis1NjAwNyA0MWQ0NWMyMmYxNDc4NjFkMjg5OTVlYzc1ZmNjODBkMGUyOGE5YTk1IHJlbGVhc2UyNS1tYWludAorNTYwMDkgODUzYjg0MDkzMTUxNDZmNDEzMjQzZjBlY2U5NjRhMDM0NjQ1MjE1NyBsZWdhY3ktdHJ1bmsKKzU2MDEwIDU2ZWMzNDdkYThlNDJmNGQ2NDhmNzU5YTJlNWEwYjIyNjgwNjUzYWQgcmVsZWFzZTI1LW1haW50Cis1NjAxMSBhOWFlY2JmNWIxM2YwMjNjN2RjOTg3MjIzMzM4OGI0NjU5MjAyMDQwIGxlZ2FjeS10cnVuaworNTYwMTIgMDJkYTYzMDU4ZDZiMTRlOWExMDY0NDI5ODk2ZWJiYTQ2ZmRiNWQ5OCBsZWdhY3ktdHJ1bmsKKzU2MDEzIDU5NDk3ZWMyOGNhYWJlMTM0MmE2NDUxMzJhMzcwMTViZTQxZDIzY2EgcDN5aworNTYwMTQgMDgwNTE1NzczNGY4ZDlkYzIwZjhjNzNkOTQ5NTRmYjM1MTMwNDI1MyBwM3lrCis1NjAxNSAyNTlkZTM4NzQ0MjA2MDIyMjQ2NzkwNDJlNDg2OTI4YzNhN2M5YzAwIHAzeWsKKzU2MDE2IDgyODIzZTEzYjY2Y2Q5ZTYwYjBhNmFiMmNhNDk4YWE2ZDgzMDhlMTQgcDN5aworNTYwMTcgMGUyMDQzNjIzMjllZGU3Mjk1NGUwM2U5NzMwNjQ2ODUyZWY5MmVhZSBwM3lrCis1NjAxOCBiNDU2NWUwOTYxMzFmMWQxZGYwNDE3OTg1N2Y3MDM4YzI1NmI0OTliIHAzeWsKKzU2MDE5IGIyZTczMzZmZWI4MjZhNzZkYmFkOTZhODE2ZmFlNGJkYmQ2MzZhMzYgbGVnYWN5LXRydW5rCis1NjAyMCBlNGY2NDljNGY0NTcyNWVkZjZkOWJiZGM2ZTY2MThmYmM3MDM5NjY2IHB5M2stc3RydW5pCis1NjAyMSAzMmZlMmI5ZTlmMTExNDMzYzc3ODgyMTExODllMDA5YzZjMTE5MzgzIHB5M2stc3RydW5pCis1NjAyMiBlYmM4N2I5NGU2ZWFiNWQxMDM4MDMwOTk1ODNiYmJjMzIyMzgzZmU2IHB5M2stc3RydW5pCis1NjAyMyBhNGFlNjI2NTNhNWNiMTY5Y2RlMGY1YWVmZDUwYmExNGJlMGFjNzExIGxlZ2FjeS10cnVuaworNTYwMzcgN2M4OTJlNzNlOGU0OWY1MDU1OGEyNjA5MWYyMTY5YWFmOWI0YzZlNSBwM3lrCis1NjAzOCBhYWI5MDgwYWM0YzdlYTM2OWUyZDc4YTBkMTY0YWEwZWY5NTUzNmQwIGxlZ2FjeS10cnVuaworNTYwMzkgNjZjODM0N2E2NGRkYWVkMDVjMWRkODU4NjgwNmI3ZTg2Njg5NTgxYyByZWxlYXNlMjUtbWFpbnQKKzU2MDQwIDA0YTQxODViZDRkM2NjMTY1MzVkMDZjOTFkOTY1ZjVhNmUzNGI1N2QgbGVnYWN5LXRydW5rCis1NjA0MSA2N2Y3MDk3YzM0ZjM0OTk4MjgwNTFmYWM2ZWQzMjQ0OTNkMDUxN2U2IHJlbGVhc2UyNS1tYWludAorNTYwNDMgNzBhMDgzMWZlZGE2OTBlNDRhNTI5ODEwZjI4YmYyOThjYmNlYjMwOCBweTNrLXN0cnVuaQorNTYwNDQgNGRiMGEwY2M1N2FiZWU5NTQxMWNlMGQxOTkzNzRjZWYyZjI4ZDQyZCBweTNrLXN0cnVuaQorNTYwNDUgMDQxMzllMzBlNjRkYTk1MWVmN2ZkNTg4ZjNmYTI3Yjc3MGMwNjY5ZCBkZWNpbWFsLWJyYW5jaAorNTYwNDYgODQyNTMzNDc3Y2VhNTQ0NDllYjE3NzdjNjI1NjIxMWY1NTE0MjUyNiBweTNrLXN0cnVuaQorNTYwNDcgMWYwNmQ1ZWU0MGJkN2YyYzFhYzg3YTMwMWY2Yjg5NTIzYTA1ZTI5OSBweTNrLXN0cnVuaQorNTYwNDggNjcxMGY0NTNjZjRhOGEyZTk1NzU5YjdiZjNmZTg2Mjc3ZDIwZmY4NSBweTNrLXN0cnVuaQorNTYwNDkgMzgzYzg5MDdiZWEwNDQ4MDMxZGZiODRmN2NlNTE0M2VmOGU0MjdjNiBweTNrLXN0cnVuaQorNTYwNTggNmIzMjViMDY1YWVkYWVmMzFkYWNlNWJhOTZlNzdjZDNjMWExOTBmZSBiY2Fubm9uLW9iamNhcAorNTYwNjAgMzllYWE5YzAyNDZlNGEyYjIwODM4ZDQ0YzZlZjJmYjg5MGM5YjZiYiBwM3lrCis1NjA2OSBlMTNkNWIxMDUzZWY4MzE5ZmU2ZjFlMjA4NzYzZDg0MmUyMzY2ZDA5IHAzeWsKKzU2MDcwIGJlOWRlMDViYjg4OWNjMmI5ZDExZWQwNTc4OTU4MzQ2ZWFmODhiODAgcDN5aworNTYwNzEgOTU5Mjc2ODQ0NzZiZTE2YmRiM2ZhMDdlZjUyZTRhNzFkYjgzOWI1MCBwM3lrCis1NjA3MiBmOTdiNjZlOWFhOGYwZDdiNjZmNmFkMmMwZmI0YTZmMmVkOTM5NmI3IGRlY2ltYWwtYnJhbmNoCis1NjA3MyA0NTkwMTI5ZTRjMmI1ZGY4ZDRkMjY3ZGE4OWUyZGM2ZDAzMTc1NGY2IHB5M2stc3RydW5pCis1NjA3NCA3OWMyNjU2MDU2ZjY3NWVhYTg1MGEyNWI0ZTAxN2NlNTJkZjdkNDkzIHB5M2stc3RydW5pCis1NjA3NSA4ZmM5MzIxNWMwY2NmYmIwNDA4ODE0Y2E3M2ZmZWYzMDNmYjg2ZGI3IHB5M2stc3RydW5pCis1NjA3OCBjMjkxZDJmNmQwMTdmMjUxNWZjZDcxOTRjZGM3NWU5MGNiZjQyNGE3IGNweV9tZXJnZQorNTYwNzkgYjliZjdjNzYwYTEwMjViYmFlYzdjMjkxNDQzMjhhZDBkZGZlNzI5ZCBjcHlfbWVyZ2UKKzU2MDgwIDliNTZjOTE2MjUzNDc0YWE3NmIxNGI3ZjY4YTNiOTk0ZTBlN2UwZWYgY3B5X21lcmdlCis1NjA4MyBlODc2ZjY0MzlkYzdiYzVjMmI2NjVlZGY4NjhkZTQ0YjU3Y2VhNjQ4IGNweV9tZXJnZQorNTYwODQgNDFlOGFkMmM5YmE5OTFjOTVhMDIxMzk0YzlkYzViZjI4NDM2OWQzMiBsZWdhY3ktdHJ1bmsKKzU2MDg1IGQ4MzdiNTg0NmQ0MTRmY2Q4MGY2OWY1MTM4ZmMwZjYzOGIwMTE2M2UgcmVsZWFzZTI1LW1haW50Cis1NjA4OSA5YTZhYzlhN2UzYTRmZjlmYzY5MTNhMjkyNDMxMzIyZGE2OGI2ODFkIHAzeWsKKzU2MDkwIGRiMzIwODcwNGFjMGFmOWQ0OTM3NDRhMGRkMjYwNDVjYjE1Y2MxNTcgYmNhbm5vbi1vYmpjYXAKKzU2MDkxIDcwNWJjNzNlZTQzMzFjOGMzMGM4Y2MyM2YyMDgxZjBjMzk2OWJkNjUgbGVnYWN5LXRydW5rCis1NjA5MiBiMDA3NGZkOTI2MjFjNjczYzE3MmJlNjM5MmEwMDI3YmQzZGE4YzQ3IHJlbGVhc2UyNS1tYWludAorNTYwOTUgYmY2ZWI4ODQ3YTQyNDQwMjlkYjBmZGE1M2I2OGE1ODUwOTU1YTg4MSBiY2Fubm9uLW9iamNhcAorNTYwOTYgMTU5MDMxZGI4ZTlmMjg1NzMwNzVlNWVhNWE2YjJjNzVmMzE5Zjg5YSBiY2Fubm9uLW9iamNhcAorNTYwOTcgNjMzYjA0OTQ3YWM0NjA1YzA2NGI5YmY4OWMyYzBkNzZmOTU4MWNmMSBjcHlfbWVyZ2UKKzU2MDk4IGJiMDllYWQwNDg0MDUzYWRhOTU1ODcwNzJkODEzZjJjYmYwYWZmNTkgY3B5X21lcmdlCis1NjEwMCBhMjAwMjQwZGVhOGFiNzYzOWU1YmNhZTQ1NjI4ZDg5ZmUwMDFlODViIGJjYW5ub24tb2JqY2FwCis1NjEwMSAzZjU4OWM1NjQ0MjZkODdjMWQwNTcyZDMwMmRlNjA5NTIzNTFiZWI1IGJjYW5ub24tb2JqY2FwCis1NjExMSA3YTExOGFjMTQ5YTA2NjcwMDNhNWVmZjNkYzI2ZjM5YWU4NmVmM2Q2IGJjYW5ub24tb2JqY2FwCis1NjExMiA1MGQzMjY0N2IwMzU2NTJhYjI3NTJiNzMyMDA4NmQyN2VjMmM1ZWZmIGJjYW5ub24tb2JqY2FwCis1NjEyMyA1ZjE0OGY2ZTBhNDY3OThlYWViMjU1ZGJkMjhkMTAwN2ExYTE0MTI5IGNweV9tZXJnZQorNTYxMjQgMzE0YWRjM2I3YmI0Nzk5OGI5ZGU2OTNkMTI2YTQzNmFmY2Y0MTZlYyBwM3lrCis1NjEyNSA3ZmYzNWFkNDY2ZWM1NWU4ZGIzYmYzM2M3MGM5YzdmNjFhODYwMzdjIHB5M2stc3RydW5pCis1NjEyNiA4NjNlZDdjZDQ1ZGM4ZWQ1NjYxZDM5NzFjZjBkYTc2MmQwNzBhMGRiIHB5M2stc3RydW5pCis1NjEyNyA0MTY3NjgwYjNhZTI0ZjNmNjJjMTA5YmM0ZGY2ZjJlYjMyYjYxNGM0IHAzeWsKKzU2MTI4IGE4NTgyZTI1NzQ4YjcyOTU3ZmNkNDdkMjlkYTE0M2JmNDJlNmI2MzEgcHkzay1zdHJ1bmkKKzU2MTI5IGRhNGNjNjc2NzNhODUxYjY4OTYxMTdjMjlhMDQwMDI5MmVhYTMzNGQgbGVnYWN5LXRydW5rCis1NjEzMCBjNzZhOTQzMjJjY2M4OGNmYzQ0MTk3YWZiZGY1MjY3OGViOGUxOGEwIHJlbGVhc2UyNS1tYWludAorNTYxMzQgNzhiYzA3OGM3MzUwZTJmOWZmNjIxYWY0MzM2MGUxNjBmMzFhZDg4NiBweTNrLXN0cnVuaQorNTYxMzUgODM3NTM1OTk0MjBkYzkzOGIyY2I1ZTA1MTQ3NDBkMTUxMGFkOWRjZiBwM3lrCis1NjEzNiAyODk5Y2Y4Y2E1NzI1ZjBhMDQxOTlkMjhhZTZiM2Q5YmUzMmM1MDBhIHAzeWsKKzU2MTM3IGRjY2YxNGZlMDBlY2QzY2MxZTY0N2FlMTIzMTBkNzI5MzIwZjZhYzAgbGVnYWN5LXRydW5rCis1NjEzOCA5MDg1ODBiOWM4ZTEwYmYyYjQzM2NiZTlmYzRjYzEwZWM3ZjcwYzgxIHJlbGVhc2UyNS1tYWludAorNTYxMzkgZjUzNTcxMjRjZWZlNTQyMTJkMjA0MmRkNTczYWRiYzdjYjJkNTg1NyBwM3lrCis1NjE0MCAxZjdiNjZhOWZmYjBkMjcyYjE3YjBkOWQ2MDkwYWI3ZDg2YTgxMzgwIHB5M2stc3RydW5pCis1NjE0MSBlM2JjYjk4NGIyNGM4ZTlkOTE5YTRlYTY2OWI3ZjIxNTU5MWJlMzhmIGJjYW5ub24tb2JqY2FwCis1NjE0MiBkNGM0Zjg5Yzc3N2Q0NTM5YWRlZWViM2NiYzAwODAxMjg5NzFjMmQ2IHAzeWsKKzU2MTQzIDQwN2QxNzRkYjZkZWM3ZmY3N2E0YTdiMDY5MzQ2M2I3NDdhMmQwMWIgbGVnYWN5LXRydW5rCis1NjE0NCBjM2VhMjc3OWM2MzU4YTUyNTM1YTJjZTY0NjI3NjdiZjhjMDZhM2ZjIHJlbGVhc2UyNS1tYWludAorNTYxNDcgNjA0YmZhNjNjMTEzODlmZGE5M2JhYjdkZjE0NGZlOTk4ZTAxYmU1NyBwM3lrCis1NjE0OCAyMTM3NDM2OTM3NWMxNjU5OGY3MTE1YmZjM2MyMGJlOGJkNDRjODdkIGNweV9tZXJnZQorNTYxNDkgYWI3NGJkYmY2ZGFhZmRiN2UxY2Y4Zjc1MTA2N2Y3ZDM4YWVjNzNhYiBjcHlfbWVyZ2UKKzU2MTUwIGViMmQ1MjU4NjAxNzU4NzlmYWQ1OTU2NWY0MmZjYzgwMTM2OWY3ZTcgY3B5X21lcmdlCis1NjE1MSBmZWIyNzZjMDg5MTcxYzhkZjI4M2ExZDFkOGJlYTZiYjViZTdjN2U1IGNweV9tZXJnZQorNTYxNTIgYzJjYzEyMDNiZDY5Yzk2ZWQ5ODIzYjNhYmJlMzkyYzZhOWYwNGQ4OCBjcHlfbWVyZ2UKKzU2MTUzIDgxN2NiZmY5ZmJlYjRkYjQ0NWVhNDI0NTI0ODk0YmY2MjU0MDMwZjQgY3B5X21lcmdlCis1NjE1NCA4YTE3ZTRjNDJhMzVmYjk2OWI5YTdlNDY0ZjViMDQ4OWVjMGZmNTc0IGNweV9tZXJnZQorNTYxNTUgNWIxZTc0ZmM0MmI4MWZiNTA2YzE1NDUzNzkwOWExY2Q0MGY5YzBhMiBwM3lrCis1NjE1NyBhNTNlNDhiZTZkZjk1NTJjNjJmZDYxMzA0N2MxYzY3Yzk3MWQ0NTkwIHB5M2stc3RydW5pCis1NjE1OCAwZGM2MjY0N2FmZjBjY2RjNzk1NDFiYjQ5YTY5NzFkODI5MGI2ZTk0IHB5M2stc3RydW5pCis1NjE1OSBhZTg3MDIyOGQ1ZjMzNGUzOTE3Mjc1NjNkYWM5OGVjZGMwNjhhYjEzIHB5M2stc3RydW5pCis1NjE2MCAzMWY0NzdiMDg4YzlmNjIzYmJmYTFlMzFjMmUwM2MzMzAzZjUxYzMwIGNweV9tZXJnZQorNTYxNjEgOGVlYWE5OTIzOTAxZjM4ODQ1MjIwOTc3ZmRlYjcxMTczNWU5ZjM1OSBweTNrLXN0cnVuaQorNTYxNjIgMDEwMmY1ZTUzNzAzOWY2MjY4NjQ2NzdmOGVlMjBlOTdjZTQzZjc3MiBweTNrLXN0cnVuaQorNTYxNjQgNTE4N2VkNjhhYmUwYjhkM2UzZTcxYTFhZGQ0NGUzNjgyNzVhYmQ2NyBweTNrLXN0cnVuaQorNTYxNjUgOGE5NGNlNTAyMjA5YjA5NTVhNDFlYjYyNzUxODVkMjQxMWZhY2NjMiBweTNrLXN0cnVuaQorNTYxNjYgZTQ3Njk5NzA0OGEwYWI1MTNkNTdmMjIxZWVhMDEyYWMwZTgwYWMzMiBweTNrLXN0cnVuaQorNTYxNjcgZTZjNWZmYTZkYzY3MzgxNGVmYzk0OGQ4Mjk4ZDllYTQwMTljZTZhNCBweTNrLXN0cnVuaQorNTYxNjggNDBhNmI5M2Y5ZTBiZThhMTE2ZGM2ZjZhOGM5YjFjMTRmNmUxMjcwYyBweTNrLXN0cnVuaQorNTYxNjkgM2Y3ODI3ODEwMjBiZTIyZjk1MWIzMmNmNDJkNmEwODIxNDc2ZmNlNiBjcHlfbWVyZ2UKKzU2MTcwIGIwZWFiYThiOWYwMjkzNTYyMzNhZTFiNzcyYmQ4ZmE5YTdiNDIwNzAgbGVnYWN5LXRydW5rCis1NjE3MyA3OTZjNzk2MjM5MzgzNjc1MWM5NjIwY2QxMjRjMmE1OGNjNDYwMWMwIGNweV9tZXJnZQorNTYxNzQgOGIyZmViZmRhNWY5OWEzOWVlNzYzYWRmMzFlMGZlODk2YjQxOGE5ZSBjcHlfbWVyZ2UKKzU2MTc1IGM0MDQ0ZTQ3ZmMxYWZlZDBlNzRmNTlmYmQ0YThkMjViNzMwZDJkNDUgY3B5X21lcmdlCis1NjE3NiA5ZTVhMzk2MDlhMjA4ZGQxZWQwYTQ5ZWRmNGRlNzAyZDIwMmI5YWRhIGxlZ2FjeS10cnVuaworNTYxNzcgZDYzNjJlZDU0OGIwYjE3MGRjNTIzYjlmYjAzMGU5NWIwMGViYzIzZCBsZWdhY3ktdHJ1bmsKKzU2MTgxIDcyMjRlNDIwODFiZDM4MWJiOTg4YWM2MGI1OTQ2OTkwMTViNzE0MGEgY3B5X21lcmdlCis1NjE4MiBkZDg5NjA1MTI2ZTU4NWNkZmQxZDdkMDY4OGQ0YjhmYzQ5NDk4MTUwIGNweV9tZXJnZQorNTYxODMgZGJjNzUzYzAyMDA3MzYyZGU3MDU4YzgyYWEyY2Q0MWRkM2Q3MTI3NSBjcHlfbWVyZ2UKKzU2MTg0IDljMDhkOTE2OWMxY2Q0NDkyMTQxMTMxMzExMzFjMTc4M2U3NWYxYjkgY3B5X21lcmdlCis1NjE4NSAzNzQxM2Y2MjExMjBhMjhiMDQ3NWI5NjA4OTdkNGQ2ZDQzOGZmNDJkIGNweV9tZXJnZQorNTYxODYgMDRlMjRiNzkyMThhZjI4OTFkODI4ZDdkOTRkNDZmZWU5OTY0NjEwZSBjcHlfbWVyZ2UKKzU2MTkzIGU2MmUyYjgxMTM2YTIyZDk2N2ZhNDcyY2Q0MjhiMmRmNWZjMjkzMjYgY3B5X21lcmdlCis1NjE5NCBiMmZmYzAyODU4NWZiMmQwZmE4NDk0MWVmOWM0OWEwMmUxMmIzMmYxIGNweV9tZXJnZQorNTYxOTUgNGZhNjgzODdiNmIzNTllOWMwNTBlNjJkN2UxNTg3NTIwOTM2M2JkMiBjcHlfbWVyZ2UKKzU2MTk2IGFhMzBiMmIwNTk4ZTQ4MDdjYmI0OTVkY2Q1YjdiODI5YzU3MTAyOTkgY3B5X21lcmdlCis1NjIwMiA1MzdmZThkYjgzMzQ5ODlkMDMxMTc5NzRmYjYyZjJjYzAyOTc5YjFhIHAzeWsKKzU2MjAzIDc0ZDExZDQ0Mjg5ODVjYTg2NGQwOWNlOGE0MzE4NjBhZmUwYmIwMzQgcmVsZWFzZTI1LW1haW50Cis1NjIwNCA3ODJmNGIzZTRkYjA4ZTM2MGQyYTBjMmY5ZTVhMzYxNzcxMDE0ZTUxIGxlZ2FjeS10cnVuaworNTYyMDUgMjYzOGI5NzQ5MzcxNDdiODgxOWM2YTRjZjlmZjRiMmJiZjAwOTAzMSByZWxlYXNlMjUtbWFpbnQKKzU2MjA2IGVjNGI3M2NiMjQ0Mzk0NzY3MWIxNzNkNDhiODc3MWMyMjk2MDEyNTAgcmVsZWFzZTI1LW1haW50Cis1NjIwNyBkODlkOTAwYzVkNzgyZDZmMDQxYTIyMDA4MmIxZjJmYmYyMjUxOGVhIGxlZ2FjeS10cnVuaworNTYyMDggYmYyMjJlYmZmMGU1NDc0M2M1YzRiN2M2NmFjZmE4ZmRkYjg1NzVmMCBweTNrLXN0cnVuaQorNTYyMDkgMGViODQwZjJkYWZhOWQ5YTIxOWU4YzVhMGRiYTIwNTQ4NTlkMGVkYSBweTNrLXN0cnVuaQorNTYyMTAgYTYyZWNjYjUzZjMwMWJiMzFiNGZiZjk2ZDkzZjg1ODgyYmFmMmFiMCBweTNrLXN0cnVuaQorNTYyMTEgYmZmOWViYWJmYzE1NTkzOWM0NTI3ZWFkODYyMWEzNWJlNjdlODkyYyBweTNrLXN0cnVuaQorNTYyMTMgMTZlODNiZjgxZGU5ODg5ZWI4Y2QwMmIxOTFlYzlkYTEyMzk4YjJkZiBweTNrLXN0cnVuaQorNTYyMTUgZGZiODg1OGMwNjY0MGRkZTQ2ZmYyYWVmN2YyZmUyMzQ2MTliMGZjNCBweTNrLXN0cnVuaQorNTYyMTYgNzgyMDMyOThiNDJiNzk0NGI1YmFjZjllZWJhY2E2YmExZjMxOGZlMSBweTNrLXN0cnVuaQorNTYyMTcgMjliYTZjMzk5MDkwMWRlNjkwNGRjNTcwYzY3MjYyMTBmNThkMGNmNCBweTNrLXN0cnVuaQorNTYyMTggNmIzMGJkMTMwZGMxN2Q4YzBlN2QzNDQ0MGQ1OWZkZGJmMWY5YTM4NSBjcHlfbWVyZ2UKKzU2MjE5IGY0Yjk5MTk1NjYyZmRlYjVmODk5MTdhMjNmYjcyNGJiNTBlZmExNmIgY3B5X21lcmdlCis1NjIyMCAzMzUwNmQxM2RkNzkwZGRiOGM5ODc0NWIwM2I5NGNhYTE3NmI3OTE5IGNweV9tZXJnZQorNTYyMjEgZDlkNDgyZDAzOGQ1ZGIyMWQ5ODU3ZmM0NWQxZTYxYjZiNWI2MWRiYiBjcHlfbWVyZ2UKKzU2MjIyIDQwMmEwNmVjYzYxMzEwNmYyOTE3NDgzZDRiNWE4OTcwMThiOTA1ZmYgY3B5X21lcmdlCis1NjIyNSBmMDk3OWE4NjY3MGY0N2M3OGQzZGU0MTFiNDMwOTkyODg2MjNkNTJjIHB5M2stc3RydW5pCis1NjIyNiBlMzgwNDc1NTAzODM0YjY4YzJiNDFiMzA1ZDFhMmMyMDcxMTE0NWQ5IHB5M2stc3RydW5pCis1NjIzMCBhY2QxZjY0MjcwNmYyYzc3Nzg5YTQ0OTAxZjlhOTM2NDg2MWY1NTRlIHB5M2stc3RydW5pCis1NjIzMSA5ZDBkOGNhZTFjYzczYWZiMjI1OTg4ZjdiZmQ5ODNmMmVhYmI2M2NjIHB5M2stc3RydW5pCis1NjIzMiAzZGIwMDgzZjY2ODM3ZDAxMmQ4NjBkNjEyN2M4NDU4YjA2MWU4YjhiIHB5M2stc3RydW5pCis1NjIzMyA5MWFkZTY3YWIyMzBkYzUwY2ZmOGE5ZWU5NmQ1ZGZmZjc0ZjczMTQwIHB5M2stc3RydW5pCis1NjIzNCBmMGE5NjEzZmNkOTMzYmFjYzQ1OTc1MGFhOGExMmNlOTA4MDc3YzNlIHB5M2stc3RydW5pCis1NjIzNSA4Y2ZkYWQyMDQ2NzYzNzk3MWY4Y2Q1NzdiZDY2NTgwMjcyNzdjYTAyIHB5M2stc3RydW5pCis1NjIzNiBkZGI5MTlkY2I0ODIwZmYwNTIyYmZkMjA1ZTE1NTliOTUzMDg3ODQ0IHB5M2stc3RydW5pCis1NjIzNyA4ZDRiNjllMzE1ODFiZDRkODEyMjZkNzE3ZjE0YTg2MmU2ODRlNGFlIHB5M2stc3RydW5pCis1NjIzOCBiMmRjMzE3MThiMDNmMjY0MDdkZmQ1N2RmNzAyNmY5MjI1NjExNGYxIHB5M2stc3RydW5pCis1NjIzOSBmNGExYjc2YTVhNjNkM2FhNGQ2YTQzM2E3YzM3ODUyMTkxYjFjMTNlIHB5M2stc3RydW5pCis1NjI0MCA1NjIxNTA3MWM3NDJlN2I1MDljYzdiNDZkMTY2MmJjOTY5YzQxNGU5IGNweV9tZXJnZQorNTYyNDMgOWY5OWVhNGY4MWU5MmZjOTA1OTZiNDE5N2E3MWNjYjgzYzUwMjViYSBweTNrLXN0cnVuaQorNTYyNDQgMzY0MWEyMDYzMGYzYzhjOTM4ZjM2NTEzOWNhMmEwMGRkODE4MDljYyBweTNrLXN0cnVuaQorNTYyNDUgMGU0NDYwODAzYjRhODA5MzU0N2YyOWQ3MzUxZjAwNjc5ZjQ5Nzk0YiBweTNrLXN0cnVuaQorNTYyNTAgOGIzMTYwN2NhYTBjYjE4ODhmNzdmZGVjYjg3M2RlZTdhM2JmMDQ2ZSBweTNrLXN0cnVuaQorNTYyNTEgOWIzODY2MDQyMWVlOWI5ZmQ0NTEzMDc2NTBmNTM1M2IwOTdmMTljYSBwM3lrCis1NjI1MiBiZjVkMDRlMGRhNGM3NTIyNGQyYzMyYTZjMmU0MGI5ZmI3NzQ1NTdhIHB5M2stc3RydW5pCis1NjI1MyA2MjI4MDYyOTA5ZjM0N2RiMDc3MmEyZTQwMDE5YjQwZTVmNzZlZmNiIHB5M2stc3RydW5pCis1NjI1NCA3NDdiMTUxOWEzNmNkZmUwNmZlZjdjZDM5NzEzOWZkMTNmNjg5Y2QwIHB5M2stc3RydW5pCis1NjI1NSAxZGNmMWYxMDg2MmMwMjIwNWJkNWNmNDUxNjljMDUxMjJmMzc2NGVkIHAzeWsKKzU2MjU2IGU5YmZiMjRmOTZlMDYzZDUwNGE1NzhhZWQzYTRkMjU0MDNmMGM0OWUgcDN5aworNTYyNTcgOTBmY2QwODJkYTBkY2FjZTg3YzVmY2QzZDQyNzZjNTdhMzlkOTI0NyBweTNrLXN0cnVuaQorNTYyNTggODE5MzBlYWFlNzE1OGZhMzA4YjNiM2E5MTc0YTE4MjhhMjFlNDJlZSBweTNrLXN0cnVuaQorNTYyNTkgZTg0MGE0Y2ZiNDFmNmU4NzYxMzAxNzFjYjM3Yjk5NWZhYzI4YTc0MiBweTNrLXN0cnVuaQorNTYyNjAgOTYzZjUwZWQyYjRmOGJjNzFiNzhiNDY3MDZiNmVlY2Q4MzQxNjA0YiBweTNrLXN0cnVuaQorNTYyNjEgYzZhOGE3ZGYzN2VmNjVjZDM5MDA5OTA4YzQwZDdiZjA3NjRlNTE2ZCBweTNrLXN0cnVuaQorNTYyNjMgNzkwODJjYzE0YmYxNDRiMjRhMDk5N2E2ZTdiZmQxZmQ1NDBlM2Y0OCBwM3lrCis1NjI2NCAxYWMyYzFiODAzMjQwNTRhMDhmNDI2MzFhNzNjYmVjNzJhMmYyYjg1IHB5M2stc3RydW5pCis1NjI2NiAwOTA1ODhhMTc0OTAzM2JkMmY1MzFkNWM4MmNiNzg3ZDU1MDRhYTVmIHB5M2stc3RydW5pCis1NjI2NyA3NWQzY2FhNDZhOTM2YjEwZjUzMDlmMTA4YjA2ZWEwOTgwN2M3ODhlIHAzeWstbm9zbGljZQorNTYyNjggZGY0Nzk1MGM4MzcwOGU5YmM4YzE3Yzg2YjVjMWQ5ODUwMjljY2FkMCBweTNrLXN0cnVuaQorNTYyNjkgYmQ0ZTM3MmY0Nzk4NTQwNDY3NGQ1ZTg4OWU0NWU2ZTE0YmZkYjhmOSBweTNrLXN0cnVuaQorNTYyNzAgYTM1NTM1OWU0N2I0NTg3MWE2NmNhMTU2ZDJhMWM2ZGM5YzgzZjVkYSBweTNrLXN0cnVuaQorNTYyNzEgNWIzOTMxYWUyNjJmYzdkZTA3NGRkMjBmNzE0OWY0NWY0MTE1MmI4NiBwM3lrLW5vc2xpY2UKKzU2MjcyIGE4MzhiOGM2NDEwMzYzYzhmYjU0NDA3MjFmNjIzYzM5MzYyYTgxNTIgcHkzay1zdHJ1bmkKKzU2MjczIDUxNmRjNzIzYzg5ZWJiNjk2YzdkNzg1MTcwYjQ5NTBkM2EzYWIwMGEgcHkzay1zdHJ1bmkKKzU2Mjc0IDNiZWZiNWFkYjM0ZWJlNmNhZWJiNjk2NmQ3NDI4ODFhODkyZTkzNjEgcDN5aworNTYyNzkgYzFhNjBiNGI4M2QzOWIyOGQzNWU0NzIyNzMwMDJlNjc1NTdhNWNhZCBweTNrLXN0cnVuaQorNTYyODAgMDliZjM1NzkzYmNkZDU5MzY5MzY5Y2ZiN2YzOWFjNTJkZWNiYTlkNCBsZWdhY3ktdHJ1bmsKKzU2MjgxIDdhMjRmZTcwYzE2ZGJiNGRmNjMwMWE2NzA0NmNiMGM0OTAwMmJmOWYgcmVsZWFzZTI1LW1haW50Cis1NjI4MiA4NTRjYzRkNWEzM2Q4YWZkYzdjZGIzYWZkZTI2ZTZjNzYxMmViZDUzIHB5M2stc3RydW5pCis1NjI4MyBiYmMwOTRjMzI4ZWZkOTFkOGU2ODQxNGY4ODBlZWQ2YjhjOGMwYjM1IHB5M2stc3RydW5pCis1NjI4NCBlNWNjZmViMTFjZDY3MTE5OTE0MGI0MDMxODljM2MzZDNjNTUxZTI4IHB5M2stc3RydW5pCis1NjI4NSA5YjcyZjA2MzY5ODY0YTAzYmE5YmYyY2QwYWYwZDllYzAwNWY3YjZjIHB5M2stc3RydW5pCis1NjI4NiBkMWM3YzI1NDM5MDNiOGQ3MjVmOGFmNDg3NTkzYjdhNGExODcxYWI4IHB5M2stc3RydW5pCis1NjI4NyA3YzZhNzk1YjUyNWFjZjQ4ZjBjM2JlOGMxOGZjNDAwOWNjNjkzOTAxIHB5M2stc3RydW5pCis1NjI4OCBjYTNjZmIzNGUzYzI2MzU5NzVkNTFjZTE4ODZhOGUzNzI3MTJlNWFmIHB5M2stc3RydW5pCis1NjI4OSAyM2YxZDJjMzZkMTJjZjM4NTJlMzhiNTQ4OTcwYjlmOTdhZmZkMmM0IHAzeWstbm9zbGljZQorNTYyOTAgYTVjMjM0MjJhZjZjNjhiYTVmZjRlNmNhNDQzNTBlODM3YWIwNWE5MCBweTNrLXN0cnVuaQorNTYyOTEgY2EwNjViNTFhNjE2NmQ1NzNmYTAxODdjZWI3NjBmMTA0NzFjNjY4YSBwM3lrLW5vc2xpY2UKKzU2MjkyIGQ1Y2YxOTE2OTkwNDYyNzNiNzAyN2IxMTdlYzNmNTg4OTZjMTU1OWEgcHkzay1zdHJ1bmkKKzU2MjkzIDI1NWJkNDNjYTc4Zjc5Mzc5ZjYyYTQ4MDRlNWUzNmEzNDRkZTc3ZTcgbGVnYWN5LXRydW5rCis1NjI5NCAyM2FjOGQxNDBhOGEyZTk1YzQ4NzlkZGRkZDMyNmQ3ZTZmYThmMTQ2IHJlbGVhc2UyNS1tYWludAorNTYyOTUgMTk2ZTVjNjMyM2EzNmI4ZmViMjk5NjA1MjNlM2E5Zjc5ZGE1OTI3NyBweTNrLXN0cnVuaQorNTYyOTYgNjMxOWFkYjAwNDFkNmVlZmVjMjBiY2M2MmYzZDBlNDZmYmEwZmFjNyBsZWdhY3ktdHJ1bmsKKzU2Mjk3IDhiODE1ODBhZDBjMTA2MDc0ZWE2N2Q1YjNkNzgzODY1MjgyMTkzZTEgcmVsZWFzZTI1LW1haW50Cis1NjI5OCA4NmQxZGJmYzU4MzMxYjYyMDUzM2JkNDJkZjIwNTZmYjk0ZjUzMjUwIGxlZ2FjeS10cnVuaworNTYyOTkgYjQzZTVmMzM0OGFlYTk1MmFjNGM5MjRiZjVmYjdiYjVmN2FlNWI1NyByZWxlYXNlMjUtbWFpbnQKKzU2MzAwIDI5M2I4M2Y5ZGE5ZmRkZTY3NmRlOTRhYTY1ZGQ0MzY0Zjk0OTNlNzQgcDN5ay1ub3NsaWNlCis1NjMwMSA3YzM3ODRiYmZjMDlhZThiYjA3MTNiOGMyMjNiOWQzNDg0MmIxOTE0IHB5M2stc3RydW5pCis1NjMwMiAyNDhhMjA2OTkwYWUwOWI5YmVkMWQ5ZDhmMzc0ODMyM2IyZjUxMGZlIGxlZ2FjeS10cnVuaworNTYzMDMgMTBlOWM5MGVhZjAzZTZkZmM5Mzc4YzdiMmNiNzhlZjE4NmE0NjkwZiByZWxlYXNlMjUtbWFpbnQKKzU2MzA0IDJjMzNkZjA5YzFjNzFmNThkMjEzNmI3MjE4NjI0MDRhMjVkNzY0YmEgbGVnYWN5LXRydW5rCis1NjMwNSBjMjU1YzEwZGFjNmE2OTFlYjY1NGMyNGRmMjVmZTIxMTY2MDJmMWI2IHB5M2stc3RydW5pCis1NjMwNiA0YzQ5Y2Q2NWI1ZjE3MDUyY2NhOTMyNGVjNTA5NzI1MDQ4Njc0MzJkIGxlZ2FjeS10cnVuaworNTYzMDcgMmFmM2YwNjdhNDMxMDJkY2IzYTU1MDcwNmI2N2Q2MWYxNmUwM2UyOSByZWxlYXNlMjUtbWFpbnQKKzU2MzA4IDM0M2I2MGI2MDRiZDkzZDBlNjYxODBhZWZlN2UwOTc1OGNiZjMxM2IgbGVnYWN5LXRydW5rCis1NjMwOSA3MmM1ODMzOGIyMmI2MzliODk5NmZmNGM1OTBkOTY3OTU1OWFiMTlhIHB5M2stc3RydW5pCis1NjMxMCBlYzc0MDg0YThjYmEwYTA3YTEwMWE3NmU2Nzg0ZjdmZjg1MDdkNDAzIHB5M2stc3RydW5pCis1NjMxMSA2Y2I5ZWZiNWNiZTViZTg3Njg3MjM1NWYyYTllODA5MzRmMzE5OTVkIHB5M2stc3RydW5pCis1NjMxMiAzZTA2ZjJiOTAxMDI2NDEyZGZmZjg3MDhhNmY0ZmY3OGUwOTE5YWMxIHB5M2stc3RydW5pCis1NjMxMyAzZmQzNTUzZTI1ODg1NGVhMzgzNzlhN2JjMWQwNjRhY2ZkZTg3ZjQyIHB5M2stc3RydW5pCis1NjMxNCA1ODY2MWE4MjMzOGU4MmNmMTAyZTMxNmUwMTc4ZWI3Y2IyMmIzMDkzIHB5M2stc3RydW5pCis1NjMxNSBlNzE1ZTIwODE2MzcxYTE0N2VlNWZkYjBiY2ExNzEyYzhiMDBiYTg3IHB5M2stc3RydW5pCis1NjMxNiAwYjg5Nzc0MTFiMDdiNGU2ODgyNTg3NjAxODI2OTYwYjk1Mjg3MjljIHB5M2stc3RydW5pCis1NjMxNyA4NGEyMTc1NzlhZTU5ZDUzODQ4Y2RiZTE5ZDFlMGZiNWE3YTQ4OWVlIHB5M2stc3RydW5pCis1NjMxOCA4NDIyOWE5MDY2ZTJmODY2MDBiNTJhNGNjYmEyZGNkMDQ2NmQ5Mjg3IHB5M2stc3RydW5pCis1NjMxOSAwNjgxMjMzMzQ0ZDkzZmQwZGU5ZTVlMzQ2MWM4MTYwNTRlMTE3YjY3IHB5M2stc3RydW5pCis1NjMyMiBiNDVjMGY0NDQ4MTMxZGNjYjIzZDU4MTdmZTFmNGU5ZDE5NWU2MmUyIHAzeWsKKzU2MzIzIDJhY2M2MzU5ZDA1ZDQwNTVkNjJlNmQwODNlZjlkMzViMjZkYzE4NDEgcDN5aworNTYzMjQgNDhjNWE4NDlhMGMyZmNlZmE1YTdkZTMxMGE2NjgyNzE2OTc3Yjk4NyBweTNrLXN0cnVuaQorNTYzMjUgNzM4NDZmOTYyOWM1NjdlYmFmYTBlYjAwYWIxY2JkMGM5N2I5ODAyMCBweTNrLXN0cnVuaQorNTYzMjYgNDg0YTAwOTZiYWU5MGY2NjE5YWZjNjkxNmIzZmY5ZmYwNjJmYjVlMiBweTNrLXN0cnVuaQorNTYzMjcgMDQ5NGFlNzM1MDU4MmI1ODE4ZDA5NjFhNWZjMDU0ZThhODc4ODJiYSBwM3lrCis1NjMyOCBmYmFlMDEyZmYyOTVkY2FmN2JiNDAwNGM1ZDc1MzVjMzRhYjgzOWRhIHB5M2stc3RydW5pCis1NjMyOSA3NjllNzA3OGEyYWE3ZjI0ZDllOThmNDQ0MDNkZDNmOWEwMGViZGNlIHB5M2stc3RydW5pCis1NjMzMCA3Y2M4NDk2ZjIzNDgwYzA2YmRmM2E4Y2IyNDAwMTg3MWQ2YTgwNjZmIHB5M2stc3RydW5pCis1NjMzMSAyZmQxNDY5NzIzYTA3MDJlYjA5ZWQ2NTYxZjY3MDAzYmI5YjlhODNmIHB5M2stc3RydW5pCis1NjMzMiBhZmU4NzE1NDdiMWEzOTBmMjJiMmE3ZmMxMTMyNDgyMmE4ZWUyMTljIHB5M2stc3RydW5pCis1NjMzMyAxMGRlNmE5MWRhNGRhMTkwY2FiZjU3NDgzYzVjMDM2MTJkNjU1ODZlIHB5M2stc3RydW5pCis1NjMzNCA2YTA5Nzc3MmVhODZiNWE0MDE3NTg3ODE4MTVmZTJhYmYzY2I3MmJjIHB5M2stc3RydW5pCis1NjMzNSA2ZTY1ZjA4ZjEyNzYyODYyMWNlMTZiNjg5ZGFlYjg5YmVhZmQ0YmU1IHB5M2stc3RydW5pCis1NjMzNiAxYzM3OTBjODMxZmMxNjU1NmFmMTBlN2JhY2E3OGRjMzY0Yjc1NzBiIHB5M2stc3RydW5pCis1NjMzNyA4ZWFmMDNmYzNmMTI5NWQ2MTQyYzhhMDI0ZjEwYjgxNWU1OTQxMjg5IHB5M2stc3RydW5pCis1NjMzOCAyMmQ2NTg0Yjg3MTI2YzhmYjg5OTM4MzgzNTBiOTBiMGM5OWViYmQyIHB5M2stc3RydW5pCis1NjMzOSA1ZDE2ZjQ3ODQ2NWE1MzU1OGYyNmRkMDI2ZmY5ZDQ2NzBjYmFiZGQwIHAzeWsKKzU2MzQwIDBjMGQ3NTBlZTc1ZTRjMjUyMWY2YThkMzU2NjYzZTg3NGVhMTRhZTUgbGVnYWN5LXRydW5rCis1NjM0MSA3YmM0NzIzZjU2MmZhY2UxMWRjOTcwN2JlOTg0N2Y3MjI0OWRiMjMyIHB5M2stc3RydW5pCis1NjM0MiAwOTgwMDM0YWRhYTcyMmI0NjQ4NTMzZDY4M2VkODNjZjEzZjRmN2NlIHB5M2stc3RydW5pCis1NjM0MyA2OTNiZTI3ZjYyNmZiYmE5NmNhMTgyZjU1MzZkNmUzM2I0NjEzNmY1IHB5M2stc3RydW5pCis1NjM0NCAxN2JiMzk4MDQ4M2VjZmJkMjA2MWNhZmQxNjNkMTQwYWZhMzc1NGQ1IHB5M2stc3RydW5pCis1NjM0NSAxMDg5YTRmNTdkMjA5NWI5ZmJkNWNhM2RhMTE1MmNhNzA4ODcxNDI0IGxlZ2FjeS10cnVuaworNTYzNDYgYzI4MDY0N2MzMzBjZjJhYWQ5MjQ3NjM3NDY1ZDRmNGM2YWZhNjVkOCBweTNrLXN0cnVuaQorNTYzNDcgN2MxYzkwMmQ3MDAwMzEyZDFkODkwNDI0OWMzZGU1NWY3NmU0ODI3OCBweTNrLXN0cnVuaQorNTYzNDggNzYwMjFiYmI4OWM3MzgzNzZjYjM5YWE3ZDc5YzQ3YTMxYzg5ODZlOCBsZWdhY3ktdHJ1bmsKKzU2MzQ5IGNiODY1ZTM5OWU4NGM2NWE5ODEyZTM0OGI2N2ZhYmRiMzgxMGNiMzggbGVnYWN5LXRydW5rCis1NjM1MCBhZWFkMTM2Y2E0OWUyOTk1Nzg5NzFiOWYyMjcwYjQ3MTM2ZmQ5NDFhIGxlZ2FjeS10cnVuaworNTYzNTEgMGQ2MmNkZDM1NTdkNWFkZjg2Zjc0MTU5ODYxMDVmZjBkOGFlY2FlZCByZWxlYXNlMjUtbWFpbnQKKzU2MzUyIGI2ZWFhNjkxNjg4NGNkY2YxZjgyZjQzZjhlM2M0YjdiNDlkMzc1NWEgbGVnYWN5LXRydW5rCis1NjM1MyBmMzM2NThkYTA2Mzc1NDYyYjcwYjY3ZjBlOTVkN2Y1ZWQ5ZTg2MDYzIHJlbGVhc2UyNS1tYWludAorNTYzNTQgM2Y4NzlkNzI2ZDE4OTgxNGMwMTQ4MjRjMmFhNGM4Y2Y2NDMzYTc4NCByZWxlYXNlMjUtbWFpbnQKKzU2MzU1IGY4Yzc1ZTg0OTk1NjA5NDY1MDY2N2QxODAzODg4OTFjOGUxODlkNzYgbGVnYWN5LXRydW5rCis1NjM1NiBmMDFhYTNkMThjOWQzYWMwMDZkMTNlYjZhMTJmZGZiMWJkMDFlNzExIHB5M2stc3RydW5pCis1NjM1NyA0Y2YwNDU5NDEwODU0NTBkMjE4ODY2MDI5ZmUzNzRkYWNmMTBjZDdiIGxlZ2FjeS10cnVuaworNTYzNTggNTk5ZWE5ZTVjNmM1ZDhlOWEzNjU4NmRjYTlmZGExOTk4ZDIxMWExYiByZWxlYXNlMjUtbWFpbnQKKzU2MzU5IGQ4YmY0MjY3MjMzMDU2ZDVhMzdmNTgyOGMzYTlkMTI2OWFjYWM4NWYgcmVsZWFzZTI1LW1haW50Cis1NjM2MCBjMjliMGRiZGEzZjZhZGY4YTIyNGMyOGI1N2U0YjJkYTA5NGYyZGYxIGxlZ2FjeS10cnVuaworNTYzNjEgMGJmZjRiNmI5MmJlMmI3M2ZmYTM5Y2RkNjc3Mzk1MTQxNDc0NjY0YyBwM3lrCis1NjM2MiA2MTQxMmUyNWU2MWUzMGQxY2FkYTQ3M2M0MmY2M2YyZDAyMGUzZTg0IHAzeWsKKzU2MzYzIDIwMmMzNzgzNTYyOGI5MTVhZDRlYWRiZTE0MzYxMTFiMGU4MGU3M2QgcmVsZWFzZTI1LW1haW50Cis1NjM2NCA4Y2M2NTA3YjA2MjZiYjRlMTBkMzg5Yjg5MmI3OTU1NzEwZjJlM2M5IGxlZ2FjeS10cnVuaworNTYzNjUgZGEyZjg5NDhjYzE4ZDIwOGFhODE0ZDlkY2Y3NTc2NjJiMTcyYjgwMSByZWxlYXNlMjUtbWFpbnQKKzU2MzY2IDY5N2MwYTc4ZDhjOTAwNWQ5ZGYwMWQ1ZWJkMWNlOGE4MGFiZTMxMWYgbGVnYWN5LXRydW5rCis1NjM2NyA4NWQ0YTAyZDBhYmIwYzY3NDE3YTQzZWZhMzE1NTNjMjk3OWIyYzY5IHJlbGVhc2UyNS1tYWludAorNTYzNzUgY2Y4OTBlNDFhYzEzNTFmNTQzYTRiNDkwYWY0MDZhYWZkY2VhMjQxMiBweTNrLXN0cnVuaQorNTYzNzYgNTA2NmIwMDI1YmYwODY1MDFjOWFjMTRmYTljZGIxNGFiNzg0ZDM1ZSBwM3lrCis1NjM3NyBhNWEzZGY0OWFjZjMwMjllNDJiZjNmZTVkNDBiNjA2MzU0ZDMxZWU3IHAzeWsKKzU2Mzc4IDJkMjI1MDQyODMwNTczODk1NjE4ZWY3ODE0OGYyYTgyNTQwMGU5NDEgY3B5X21lcmdlCis1NjM3OSAwOWNkM2U1MDMyMzVlNjVjNmVhMWY5M2U4ODdiODZjYzcyZGU4NDg2IGNweV9tZXJnZQorNTYzODAgYTVlOGRkNTk5NjBkZGQ5OWQxNWUxZDA4YjQxNTYzMjU2ZmM1YzE2ZiBsZWdhY3ktdHJ1bmsKKzU2MzgxIDQ1YzdkNDczNWRhMzZjMjNmZjE0OWJkYTk5NmYxOTg0NWQ3NmQ0ZTkgcmVsZWFzZTI1LW1haW50Cis1NjM4MiA4YWYwN2UxMWYxOTdlMjYxMzRkYTFhZGQzZGI1ZWI2YTZhYzI4NWUzIGxlZ2FjeS10cnVuaworNTYzODMgZGFhZTI3ZmJiODE2NmVkZTFkOGY1N2QxZWRiODhkODhiYzQ3ODE4ZCByZWxlYXNlMjUtbWFpbnQKKzU2MzkyIGMyM2Q4YzI3ZGM5MjIyMzg1MDcwYjcxMDUzNTNjZjUzZjYzNTg2YWUgbGVnYWN5LXRydW5rCis1NjM5NSAxOGU1YWU5MWJkMjk3OWUwMmQyNjE5ZDIzMjhiYWJlMWMyYmI4NzcxIHB5M2stc3RydW5pCis1NjM5NiBlYmU5NjBkMWQ2MjdlZWQ2Y2ZjYjkzMjg3YmUxMzBhYmE5YzFiYzgyIHB5M2stc3RydW5pCis1NjM5NyBmNzE1YmFjZGZkMDBmMzNiYWNkNWQxZjY0ZWMzMzJlMjZhZjc3MjYxIHB5M2stc3RydW5pCis1NjM5OCAxOTE5OTliZTZjZjU4ZWZhNjgyMmRkMDljYmYwM2IzNjUyY2ZlNTM5IHB5M2stc3RydW5pCis1NjM5OSA1YWU3NzRjYzI2ZWJkZDcwNzY5NzAwYzlmOTY3Mzc5Zjc1YjZiMDU0IGxlZ2FjeS10cnVuaworNTY0MDAgZDA2MmY2N2MzMjYwNGQ0MjBlNGQzYmYzNTYzZWM2M2UxOWU2NGQ4MiBweTNrLXN0cnVuaQorNTY0MDEgZjViNWRhY2I5YWUyOWJiMTJiNDcxOTYyMmM2OWQ5MGI0MjU5ODViYiBweTNrLXN0cnVuaQorNTY0MDIgM2YyNDIwOWYyNTFlM2FkMTEzYzQ2NDE2ODA3YWE2NzBmZDQ5MTVhMyBweTNrLXN0cnVuaQorNTY0MDMgMzc3MjEwMzIwMGVjODliYzg4YmIzYjJmMWI2NjdmY2U1MGViNjk5MyBweTNrLXN0cnVuaQorNTY0MDQgODQ3N2ZjMzg4ZWVhZWUzZThmMjVhNTExZGFiYTg4M2U0YmYxNWJlMyBweTNrLXN0cnVuaQorNTY0MDUgYThkNDMwODVhODU3MGIwY2UzMzFhNjA5NTc4ZjI1ZGIwMmMwODkyYyBweTNrLXN0cnVuaQorNTY0MDYgNDRiYzQ5YTA3ZTUyNDk1OGU4MmE4Yjk5NDc4YzQxOWJmNjM2OThlZSBweTNrLXN0cnVuaQorNTY0MDcgNTMzN2MzYTRhMjczZDkwNzdkOGJlNTM3MDY1ZmVhOWJjNDcwMjNkOCBweTNrLXN0cnVuaQorNTY0MDggZjUxZDNiZTQzNWRmNjhlM2QxZDUyNWIxNDY3MmMwNTg1ZjVhNjZlYiBweTNrLXN0cnVuaQorNTY0MDkgMDU4YWJmODc4YWQ0ZGY5OGZiYzMzMDZmN2VlY2I5MjI3ZDZiYjQwNCBweTNrLXN0cnVuaQorNTY0MTAgM2JlYThmYWMzYTdjZjZkNDNkNmY0NGRiYWI5ZDA5MGUzOGQ3N2FmOCBweTNrLXN0cnVuaQorNTY0MTEgYzRhYjNlZjYxOTRmNzM3MjE0Nzc2ZTliMWI0YWQzNTExMzI5NjY0ZCBweTNrLXN0cnVuaQorNTY0MTIgZjY1OTIxNDZjN2ZhNjhmN2ExNTk0MTc3ZjQzYmIyYTQ5MzViNGJlZCBsZWdhY3ktdHJ1bmsKKzU2NDEzIDU1MDE0MWZkNjdjMjNkZTg5NTM1YjVkMjkyMjQwZDQxYTU1Mjk5OWYgcDN5aworNTY0MTQgYzhlNjI0NTc5YTRkNjNlNmJkNmVlZDM1ZTllMjRmODg4MGZmOGZhZCBjcHlfbWVyZ2UKKzU2NDE1IGY5NDBlNDcwZTU1MDI2ZTEyZDM0ZDcxNDM0MDBmZjIwNzdiNDM1ZjQgcHkzay1zdHJ1bmkKKzU2NDE2IDY3YjAxYjA1YTgxYjYyMzQ4N2ZhMmY0OWZhMDVkNjJlOWJiYzc3ZjggcHkzay1zdHJ1bmkKKzU2NDE3IGEzMDljZGI3Y2IzMzBkMTBhZjFmOGI5M2RmOGI5MDQzYjE5OGQwMmQgcHkzay1zdHJ1bmkKKzU2NDE4IDdkMTZiNDJmY2RiZGUyY2M1MTNmY2RiNDI3NzU2YmM5ZjBjYWQzNTEgcHkzay1zdHJ1bmkKKzU2NDM4IGQwNzE5NDA2YjJjNjU5ZTdkYjQzODk2MmI2YjViYzU0YzYwYmFlNmIgcHkzay1zdHJ1bmkKKzU2NDM5IDdjZWQzZTg1MTlmMTQxODg5MWQzMDM3NzdmNWQ4NWYxNDhmNzE2YWUgbGVnYWN5LXRydW5rCis1NjQ0MCAzNWViNzIyMTU2MzBhZjFhZmU0ZmMxYTBhYzM5ODM3NTUwNGZhNGRlIHB5M2stc3RydW5pCis1NjQ0MSA2Nzc1ZWU2ZDg5ZDNmOWZkYjI5OTdmYWNlMWM5ZjJmNDI1NTJkNGYxIGxlZ2FjeS10cnVuaworNTY0NDIgMTQ5ODE1YmEyODRjY2RmZDNkOGJiMWNjZjVjNDE2ZGFlOWI4MmJiMSBwM3lrCis1NjQ0MyBiZDZhY2ZkYjQ3ZDI1YTZjZmVjMWZhYjBhM2Q5MGMxODgyODUzMzUwIHB5M2stc3RydW5pCis1NjQ0NCA0YzY1ODM3N2I5MDg0NzU0OTE2ZTBhZjE4OTNjNDE4Mzk4MmQ0MzczIGxlZ2FjeS10cnVuaworNTY0NDUgYzFlOWVlZWRhMzRmOWJmMjgzYThmYjVhMGE2MDBhMDYzNDc0MDJiNyBjcHlfbWVyZ2UKKzU2NDQ2IDFhZTVmMTAyZmQzZDZlMjUxNWZlZjg1OGRlZmVhMGQyODg3ZWQ2NzYgcHkzay1zdHJ1bmkKKzU2NDQ3IDAwN2VkNmNkZDFmN2JjNzRiZThkOTMxMWQyMTk1MDJkZGYyNjY5ZWEgcHkzay1zdHJ1bmkKKzU2NDQ4IDA4NjQyYmQxYmUxODRhZTEyYzJlMzdmZDY3ODZmY2NhYTgzYTU1OTcgcHkzay1zdHJ1bmkKKzU2NDQ5IGRmYWNiNTFkMTM4NjE2MTIxNzk1YzEzMTI4MzgyMDlmNTZjNzdhZjkgcHkzay1zdHJ1bmkKKzU2NDUwIGJkYzY3ZGMxYTk1ZTJlNDAzNDdlOWM4NWRjMDU5YjE5YWM5NDY4YjEgY3B5X21lcmdlCis1NjQ1MSBkMDFhZTY5OGNiNTgzOGY3NWNiNTA3OGI2Y2JkNjRhZTM1NmM4MzM5IGxlZ2FjeS10cnVuaworNTY0NTIgMjhhZjk2MTAzOGRlODI2YTUwN2Q2ODVhZjhhNmNkMjEzNzFiODQ3MyByZWxlYXNlMjUtbWFpbnQKKzU2NDU0IDM3OTAyZWE0MWExN2I0MzJhZGI2MDNiMGEyNGViYWQ1N2Y1MWYwOWYgcDN5aworNTY0NTUgN2Y3NjBkYjRlNzQ2YmFlZjE4YjM1NGRmMDk4NTNlNjUwZjljNTc4NyBwM3lrCis1NjQ1NiBjMDJhMzM3ODhhOGY1ZWJkMzIyZjk2ZTVhYzViMzM5NjM0Zjk4ODVmIGxlZ2FjeS10cnVuaworNTY0NTcgM2ZiNTk2NjZiMjgxMGE0MWQwMmUxNjY0NjY5ODQ4MTNjZDY0ZGMzYyBwM3lrCis1NjQ2MCA0OTk5YTA5NDczNDM0YWNkNDNlNDQwZDk2YjJjODg2YjFhZDkxNWY3IHB5M2stc3RydW5pCis1NjQ2MSBhYzM2ZjA2YTYxMmI4MGUwYjExNDVhMzc5MmU5YjRlZmU1NzZhODJmIHB5M2stc3RydW5pCis1NjQ2MiA2Mzk1NWUzY2Y5OTNiNjE5NTMyMTBjODQwYTFlMTEzN2MyNjljOTQ5IHB5M2stc3RydW5pCis1NjQ2MyA4YzRhMzMwNzljYTYwMGQ4NzJiNjQ2Mjc5Y2Y3OTA0Yzg5NmVhYTNiIGxlZ2FjeS10cnVuaworNTY0NjQgM2UzMzIxNWM2NmVkZThmZjJjNTY3NGI3YTdiMWFjZDEwNjFmMzYzZCBweTNrLXN0cnVuaQorNTY0NjUgMTE2MjUxYWRhOTA1OGZlNjA3ZThjODIyNTM1N2FmMzM4MDEzYjc4NCBweTNrLXN0cnVuaQorNTY0NjYgNjBiNzE4YjZmYzliMTYzM2NjMjRhOWRkZjdmMjU2MzYzYjdlNzhjOCBwM3lrCis1NjQ2NyA0YmJiZTBjNTVmYTIxNThmZTIxNjUzN2M4ZmNkZmIzZWJhZDc0MmI5IHB5M2stc3RydW5pCis1NjQ2OCBjNDZmMGFmYjQwM2M0MDdlYjk5ZWU4NDJkZTIyMDU3ZWEzNWJjNTJmIHB5M2stc3RydW5pCis1NjQ2OSA5NjRjNGJmODZkOWE2OTY3NTdlZTBkMjM0NGJiNjM5NGM4MjA4YTEzIHB5M2stc3RydW5pCis1NjQ3MCBhMmM1Y2ViZDBkYzUxZjE1YjdiOTk1YWJlOTBmNWZkZWJiZmQxNTk4IHB5M2stc3RydW5pCis1NjQ3MSA1N2M2MmJkMzZiMTliYjgxYmRjOTQxNzI3YTFlOWEzNTE4YjYwOTU4IHB5M2stc3RydW5pCis1NjQ3MiA1YTllM2QzN2Y2NjFmMTNlZmRlMTcxY2JhZWE3MTg0MDI3ZTI4MzFjIHB5M2stc3RydW5pCis1NjQ3MyAzMzNmZjA1ODQ5MzhjNTYzMzlkZTc1NjViMzM1Y2I2Nzk2ODJiYjQ5IHB5M2stc3RydW5pCis1NjQ3NCA3YTBkMWJhYTRhNTNkZWQ0MjQ1MWIxODA5MmQ2YWI1NDk1OTEwNjJkIHB5M2stc3RydW5pCis1NjQ3NSAyYmUyNTFkZDJjYmRmMTYxMzNjNGI1NDkxMDIyMTFhMmI3OWI4ZGFmIHB5M2stc3RydW5pCis1NjQ3NiA2NjIwYTUxMGU5YTk1MTEwZGIxMzkxMmQ2NjU1MThhZGU3ZGQ3ZDlkIGxlZ2FjeS10cnVuaworNTY0NzcgZTM3MTcxYTRiMTQ3OTU5ZjZmMjNlYzJhMDhmMjJkNGRiNjczMjdkOSBwM3lrCis1NjQ3OCBmZDM0NThhOTJhODk0MGRiZDdhNjc1MTFhMjNmZmFkOThlNzdhOTc0IHAzeWsKKzU2NDc5IDRlODk4NzJmMDgyZTA2YjhmZTg5MjYwNWE3ZTYyMGMzNjEyODljOGYgcDN5aworNTY0ODAgNTMxZTE4MWY1YjUzMGY5ZTQ1Mjg2MDU0MDQ5YjI2NDRkZTczN2UyMiBwM3lrCis1NjQ4MiAxMmRmOTA2MDAzZWE5MjI2ZjIyY2UzMThkZmIxZDkwZjNiOTkwNGMzIHAzeWsKKzU2NDgzIGU3MGNkY2UwZThiMjk1NWM0NDAwOGE0NDhmMDkzNWI5ZGU3ZDE4NWUgcHkzay1zdHJ1bmkKKzU2NDg0IGM4Yjg1MGI1YTA2NjY5MWZhODhjZmU1MmVkMzVlOGI4MmEzOTllZTggcHkzay1zdHJ1bmkKKzU2NDg1IDAzYWI4YzhiYjBhZTE4NGNlOGM4MmYwNmU1ODFkZWM0MWZkZGM5YjMgbGVnYWN5LXRydW5rCis1NjQ4NiAyM2JmZGI3NTcxYTdkYWQxY2U4NWFhNjVlZWIxNjQ1YWM4YmU4MjM2IHAzeWsKKzU2NDg3IDg4ZWUwYTU1NjJlZTIyMTkwZGY3MWYwMDE4Y2ZlNTg5ZDM3ZTE5MjIgcDN5aworNTY0ODggMzhkMWJlYjY1MGJhY2ZlMmJkZWMzMjY5OGEwYWI4ZDI1OWIyNGJmYSBsZWdhY3ktdHJ1bmsKKzU2NDg5IDgxMWM5YWE2ZWQ4ODJlNDA1NzUxZGM2ZjRlOTViNzE5NGY1YjEwM2YgcDN5aworNTY0OTAgMjc4NjM4Y2RjNjQ3YWEyODRlYTBmYWYzY2ZiZGJiYjBjZjVjYzZlMiBwM3lrCis1NjQ5MSA2MTg1OWEzOWE4N2U3MjY0NTFiNzE4NTRhN2UwMWM2N2YzODQ1ZmZhIHAzeWsKKzU2NDkyIDdiZmU5YTEwN2IyOTc3NzIwM2Q2NDIyMDY2NzcwNmU3NjdkYmFhNjQgcHkzay1zdHJ1bmkKKzU2NDkzIGMxNTJjN2ZhMTdjNGQwMjg3M2M3ZjA2NjRmYzY1NDQyYzE1YjdkNGMgcHkzay1zdHJ1bmkKKzU2NDk0IGY0YWY2ZjRiNTFjYzM2MThmZmIzMzhkMTJlOTU3MDZlZjE5OGZiNzEgcHkzay1zdHJ1bmkKKzU2NDk1IDE0NTc0MTAxNjg0ODgyYzdiZGRmNTAxNThmMjFkMzFkOGFjYjc2MGQgcHkzay1zdHJ1bmkKKzU2NDk2IDYwYzc2NzE4ZTA0YTAwNWZjNzc2ZjA3N2MxY2VjNGM4ZGZiYTdjNDkgcHkzay1zdHJ1bmkKKzU2NDk3IGYzMmZiZjlmYTYwYjFjODk0MDhkYzVkYjA4MTBmNjY0MzY2OTgwNGEgcDN5aworNTY0OTggNDA5OThmMThjNWRjY2JjMzAxN2UwYmEyNTUzYWM1Y2Y4OWQ4MWMzOSBweTNrLXN0cnVuaQorNTY0OTkgODM2NzBjMmYxZWE4NGM3MTFiMWQ3OTAwODNlMmM0YWU0ODczYjY3MyBweTNrLXN0cnVuaQorNTY1MDAgOWNlNTRjZjBkYmUyYTY5ZGRhZmZkZmYwYjhlZDc0NGIzODIzZDM0MCBweTNrLXN0cnVuaQorNTY1MDEgMzZiNjcwMzBjYTQ3MmRhMzRiYTM2NGZjZTkzYWU0MTVhNDI2YjRkNyBwM3lrCis1NjUwMiBiNTkwZjRhMDZiZjg2NDdjYTYyN2Q4NDE3NzUwNjY4NWRiZmQzODE3IHB5M2stc3RydW5pCis1NjUwMyA1ZTY2YmI2OWMxZTNlNDg2ZTdiZjc0NWRjNzQ2ZGQwYWE3NTJjYmQ2IHB5M2stc3RydW5pCis1NjUwNCBiZmUwNDFhZmFmZTY5MGMwZWI2ODUwNTQ2YTI4ZGNlNDNiM2U4YjdkIHB5M2stc3RydW5pCis1NjUwOSAzZmU2NDNkNjJlY2M0NWViMDRjMDQ2ODNlYTAzYTgyNjUzOWM0YjU3IGxlZ2FjeS10cnVuaworNTY1MTAgZmQ2NzA1MzljMDg1ZDU2MDIyNmI5ZTNjZmNkZTk1ZWE4ZWNmYjczYyBweTNrLXN0cnVuaQorNTY1MTIgZTUwZTMzYjdlMGUwY2NiNzExNDA1Mjg2OGIwY2VhM2Q1NDQ0YmM1YyBweTNrLXN0cnVuaQorNTY1MTMgNjQwOTUyZGY0NDMxNGI0YmEwZGFiNTllZDc1MmU2OGRjN2MyZGExOSBweTNrLXN0cnVuaQorNTY1MTQgOTU5ZTUyYWUyNjI3YTA4OWFkNThiMGVlOGM1YjUzZDFkMjQ1MGRiNyBweTNrLXN0cnVuaQorNTY1MTUgMzZmYmNkYTgwYjFjNDU3ZmI0ZWQ5YTIwNjNkYTk4OWNiZWRjMTNiOCBweTNrLXN0cnVuaQorNTY1MTYgNWI5YzhkY2U0ZWRkN2U4Y2Q2YmUxYzM1YWFmOWUyZTc3ODdmN2U5MyBweTNrLXN0cnVuaQorNTY1MTkgZDk0ZDViNDE2YTk0N2FmNGY4NWU4MjNmMWQyZmM2ZDkyOTEzMzQwMSBsZWdhY3ktdHJ1bmsKKzU2NTIwIGJjOGU1ZTE1NzFhY2NmMGVlZTc4ZGU0ZGVjYWNhZjM2ZDM3MmQ0NmMgbGVnYWN5LXRydW5rCis1NjUyMyAzMGUxMTIzNTBlMjAzYTM2OWY0Y2Q1ODQxZTQ4MGU4ZTA3Zjk5NjA1IGxlZ2FjeS10cnVuaworNTY1MjkgNzQ2YTUwMjFlMWFhODcxMWU1YjQ4OTgyNGE1NzY3ODQwYmQyMWY1NyBweTNrLXN0cnVuaQorNTY1MzMgMGUyZmE0YzZhNDI4MzU1MzcyMjBiN2Y5ZDUzMThhYzE1YmRhOGE4MiBsZWdhY3ktdHJ1bmsKKzU2NTM2IDExMzc3MjQ5MzBhNzJiMzg4ZDRlOTQ3NGJmNWQwNDg3MzExNGE0NjUgcDN5aworNTY1MzcgZGE2MjgzNmRkOTlmNzczZDY0YTFmODFhYTkwMDQ0ODVlZTczNWM1YiBwM3lrCis1NjUzOCAyZmRhNTUzYWM2ZTE2M2RiMTRmMjg4ZDMzOGJhNTdlYzc0M2M2YmU2IGxlZ2FjeS10cnVuaworNTY1MzkgZTk4OTFkNzg3ZWRkODI2OTJkMThiODQzZjIzYjFhMGNjYjI3ZmFmZiBsZWdhY3ktdHJ1bmsKKzU2NTQyIDEyMDVkMzAzNDYxYzMyM2I5ODE0NTRlYWY2M2Y4ZTI5YjM5OGNhZjMgcmVsZWFzZTI1LW1haW50Cis1NjU0MyAyNzg2NGExODFmMDFiMjM5MmNjOWY4ODlhZjExNGYzYTQ5ODI4N2MzIGxlZ2FjeS10cnVuaworNTY1NDYgNzk1YTVkY2RjOTgyMDMwMzJlNTIyMjc3YjExOWExZDgwNWNhMmZjZiBweTNrLXN0cnVuaQorNTY1NDcgZDQ4YWNiMjg0NjY0Yzc0NGIxOGYwZjc1OTcyZWRlNjkwNTk0YjFiMiBweTNrLWJ1ZmZlcgorNTY1NDggNWYzZjU0YzBjNmM4ZWIyMGQ2YjgxM2JmYWY1NjJhYmM3MTQ5MTJjNSBweTNrLXN0cnVuaQorNTY1NDkgOGZmODk5NjQxNTYzNTJmNzdhYWZlNGQ5MjBiZDYwNDFkN2E3MzNlMSBweTNrLXN0cnVuaQorNTY1NTEgNmZhN2Q4ZmIwNzczMThmOGNmYWViZmM4OWRiMjg0NWY0ZWJmNWY0ZiBsZWdhY3ktdHJ1bmsKKzU2NTUyIDQzNGFlNjZiN2RlMDRlOWJjY2FmOTc3ODE3YzhjZjMyNmYwZTlmNDkgcmVsZWFzZTI1LW1haW50Cis1NjU1MyA2NDkwM2ZmNzZlZGUxYTA5NjllOGIxNjZkODFhNTRhMTZlNDU0ZTA3IGxlZ2FjeS10cnVuaworNTY1NTQgNTdmYWNmMzRhNzE4NjEwYzU2OTNiNGU5ZmUzODVhNDM5MGZiMTVkZiBweTNrLXN0cnVuaQorNTY1NTUgYTU0MzRmYWRhOWZmNDljNDA3ZTAxZTI3Mjc3ZjYwYjc4YjRlZjQxMSBweTNrLXN0cnVuaQorNTY1NTYgMmFjYzg5MDI3NjhjNDQ3ZjAzMzY2Mzg4OWM4NjVhOTViYmE2ODBhMyBjcHlfbWVyZ2UKKzU2NTU3IDA3YTU3N2I2MjBlYzY5MTgyYzQ4NTM3MTAwOTZkYmI2OWZhNjM4MzggcmVsZWFzZTI0LW1haW50Cis1NjU1OCBkZWVjNDEyNmZmYWNlYjA2ZTI2ZmFkZTZhMGE4ZmI4ZTI3ZWI4ZWJiIHJlbGVhc2UyNS1tYWludAorNTY1NTkgYjAwYmQwOGEwOTQ5NDkxMjI3OWI4NDk3OWQ1MmJkYjM0YTFkODBjYSBweTNrLXN0cnVuaQorNTY1NjAgMjc4YzUyMTM0MTQwZjYxN2RjZmYxY2FhMDdkY2RlODQwOGFjODQ4OSBweTNrLXN0cnVuaQorNTY1NjEgMTA3MWY3MDc2ZThlMzhjNzM0ZmI1OGNmYzM0YmZiOWMxMGVlOWZjYiBsZWdhY3ktdHJ1bmsKKzU2NTYyIDIwYmQ1YmUyNGFiNTZiOWI5ODViYzhhYmYxYmQ1NjkwMDY4MDViYmEgbGVnYWN5LXRydW5rCis1NjU2MyA4NjI4NWIzOTdiNGQxMDRkNDk3ZWEwZGM0ZDRhMjAxNzQzNTllY2E3IHB5M2stc3RydW5pCis1NjU2NiAwNTQ2YzExNWE5Y2YzYzcyYjM2MDUxYjhiZWJkMDNlZGZmMjQwOTUzIGxlZ2FjeS10cnVuaworNTY1ODQgOWU4NGI0ODY4OTg0NjgxZThlMWZjYzFlN2I4M2JjYWMzMGIwYWY3NyBweTNrLXN0cnVuaQorNTY1ODUgOTBlNDJhMGIyMjAyY2Y4NTZkYzVhMTM4MDkzZjVmMjJmYmFjN2I0ZSBweTNrLXN0cnVuaQorNTY1ODYgZjY3MjA3MWQ4MmZiODM4ZGM4YjY1ZDY2NTEzODcwNGI4MTc1YzA1MCBweTNrLXN0cnVuaQorNTY1ODcgMzU3Y2I4OTY3ZTg1ZWUwZjc4Y2NkOTIwMWM1NjM3Y2U2MTc5ZjA1OCBweTNrLXN0cnVuaQorNTY1ODggZTk5MTZhNGUwNmE0ZGQzYTUxYzFiNWU1YTdlNDIwYzRhZGEyMDQ4YyBsZWdhY3ktdHJ1bmsKKzU2NjAwIDdlN2RjZTMwODllMzdhOWMxMGZiZTIxYWI2MzI2Y2Y2MDhjMjVkZDMgcmVsZWFzZTI1LW1haW50Cis1NjYwMSA4NWI3ZjQwZTFjMWNmMGE1YjU1ZjY2Mzc5MmExNjcxZTYxYjZmNDMyIGxlZ2FjeS10cnVuaworNTY2MDMgZDM0NzFlZjZmZTM4YTljODhjYTUxNmYyMTQ3ZGYzNzRhOWY3YTc2ZSBweTNrLXN0cnVuaQorNTY2MDQgZTMxYzQ4MjE4YjBjYjkxYTBjOGNkMjZhNDk3YjFhNTA3ZjZjMDA5NCBsZWdhY3ktdHJ1bmsKKzU2NjA1IDc4NWRlMjI0OTk1ZDUxMTVhZjc1ZDMxZjk3OGVjOWVjYjM4NWVlZWEgcHkzay1zdHJ1bmkKKzU2NjA2IGUxZGFlODYyNmMxMWE2ZGUwOWY3YzZmNWY0NmFkNmIwMTYxNGY5NGYgcHkzay1zdHJ1bmkKKzU2NjA3IDg2YzEzY2U2MGFhZGU1ZDk3ODczZDM5NzFiYmVlNjk2OWQ2OGQ1ZmYgcHkzay1zdHJ1bmkKKzU2NjA4IGQ1MmJlZjU1MmFhNDA3ZjFhNjIyZDJmOTJhMzJlOWJhOWEwNzc1MzEgcHkzay1zdHJ1bmkKKzU2NjA5IDMxMDViN2NmMzViZWE3MDc3ZmJhOTc2ZTg0YWRjYWNmNmVjY2YzMzYgcHkzay1zdHJ1bmkKKzU2NjEwIGI5YWRhZDU2OTVhMzlhZDEwODlhOTQ4MGRmMWZkMzAwYmY0Nzc5NmQgcHkzay1zdHJ1bmkKKzU2NjExIGU5NGQ1MDYwYjBjMWM0YTI0ZjYwNzI1YjEwMDI1ZTRjM2FjZDI2YjYgbGVnYWN5LXRydW5rCis1NjYxMiBmMWYxZjVlMTM5NWM4YjQ5ZWNlZDA3M2MyNTQxNzcyMzAxOGY5NTA2IHJlbGVhc2UyNS1tYWludAorNTY2MTQgNWNkNWYzMmI0YTI4ODY0ODgwNjJlMDE2M2Q1NDExYWI3OWIxOGI0NiBsZWdhY3ktdHJ1bmsKKzU2NjE1IDM2NWU5OTFhNjMxYjRjNTY1ZDY1NTBkN2ZhYTIyNWE4OTI5MTUwYjkgcmVsZWFzZTI1LW1haW50Cis1NjYxNyA4YWQ4YTMzNGJlMGYzNTVmZDA0NzkwMGYxNjM3MzNjNTUwNTE5MDUxIGxlZ2FjeS10cnVuaworNTY2MTkgZTU5ODE3M2Y5NWU4ODA0MWY5NTBmMTUyNDhiMmY2MWIzYTdmYzIzNiByZWxlYXNlMjUtbWFpbnQKKzU2NjIwIDI1MTAzM2ExYzJlMzI4NWRhMjc0ZDg2Y2Y2ZjQ1ZDMyYjViN2FjYTkgbGVnYWN5LXRydW5rCis1NjYyMSA3ZTg0Njk2MTdiMWMzZDI1NmU3ZTkzODVmNjEzMmRjODUyM2I5MDZiIHB5M2stc3RydW5pCis1NjYyMyAwYzMwMGIyOTIwMGMyMjg5YjVmOTU1MTlmNjdhMjM1MzdhYTIzZWQzIHB5M2stc3RydW5pCis1NjYyNCBjZTdmYzA4ZDVmNDc4NTMxNDE2NDAwNjYzNjJkODMxYWUxN2FmMmE5IGxlZ2FjeS10cnVuaworNTY2MjUgNDhjZmFhYTgyODczMGRlMWExYTE1OWNhNTQ1ZDIxY2NjMjE2OTNmYSBweTNrLXN0cnVuaQorNTY2MjYgNDY4NjIxNTY5YmU4ZTk1ZWNkOTMzZmM5Yzg2ZWM2YmEyMTYzMzU0ZiBweTNrLXN0cnVuaQorNTY2MjcgYmQ4NDU2Yzk1NjlhYzI1MzE0NGFlZDc4MWQwMjU2ZmY4Y2M1Mzg3YSBwM3lrCis1NjYyOCA4ZTY5YWMxYmQwNDJjY2FkZmRiODRjNjBmZGI0ODJlY2ViZDRhNWNiIHAzeWsKKzU2NjI5IDUwNDA4NGMwNGFjMDAwY2RkM2NiY2RkN2ZiYTkyYmIwYjc2ZmE0ZWEgcHkzay1zdHJ1bmkKKzU2NjMyIDNhMDE1MzU1YjA3YWEwMzUwNDEyMjgzNDA5NGUwYWMyMDkzYWRlMjQgbGVnYWN5LXRydW5rCis1NjYzMyBiNjA2OGRkNmFlMDBjM2UxNTc4OTA4OGQ4OTkyMTZhNzUxMTBhZTkzIGxlZ2FjeS10cnVuaworNTY2MzUgZWYyZGM2MmQyN2ViN2Q4ZjMxOTkyNWIzMWUzMGYyOGJlMzNhZjc2NiByZWxlYXNlMjUtbWFpbnQKKzU2NjM2IGUxYzBhYTk0YzA5MmY5YzIwZTNkM2QyYWRiNDEzMGY2N2ZkYWE4ZjQgbGVnYWN5LXRydW5rCis1NjYzOCAzZjc4YWNjMDEwMzk4MTViNmZiZDk1MjAyNTEwMjFlMTg4NjEyYWNiIHAzeWsKKzU2NjM5IDhiNTZhMDY5NjE0ZWY0YTIxNTBkMmYwODEwMjM2OWIyNzlmYTM0MDAgcHkzay1idWZmZXIKKzU2NjQ4IDM5MmY5ODIyMWQxM2VlYWM0OGVlZTAzOTI0NTQ3NjkzZDI3MWRiYTggcHkzay1zdHJ1bmkKKzU2NjQ5IDhjMTY1ZDIwNzA5ZjYzZmM2M2I1ZjJkZDBkYjhjOGQzODNkNDlmNTcgcHkzay1zdHJ1bmkKKzU2NjUwIGE2ZDI2YTRkNjcyZGVhM2JkODNmMjQ0YTgzZWU0Njc4NWQxNjdkYTYgcHkzay1zdHJ1bmkKKzU2NjUxIDk4OThhNjY5NjViY2Q5ODc4NTk0Y2E2MmFmYmE1MWRmMDAxNWUzOTYgcHkzay1zdHJ1bmkKKzU2NjUyIGQzYTVjNzk2YzhiYTAwZmY1ZjAxMzFhMmJiYjEyZmRkYjg3OTBjZTEgcHkzay1zdHJ1bmkKKzU2NjUzIDY3MDU5Yjc4YmNlNDc1ZDNhZmE1NGY1ZDVhYWUwMjZkNWJkMGQzYzYgbGVnYWN5LXRydW5rCis1NjY1NCA4MDFhZDJmMGQwYjU4MDU5N2RjMmM4MWY5MDQ1YmUwNmQwOTRiNzg3IGRlY2ltYWwtYnJhbmNoCis1NjY1NSAwN2MyZjgxYzI2N2Q2MTliYzc2M2RhZWM5Y2M0NTE1MWEyZDQ4ZThkIGRlY2ltYWwtYnJhbmNoCis1NjY1NiBjZjQ1OTY1MmMzNTIzNGI3ODNkZjQzOWViZTY3YTU5ODg2NmM3MWJiIGRlY2ltYWwtYnJhbmNoCis1NjY1OSA2ZjIzMzBlMDkwOWJlYzRiN2IwNGI2ZDRiYWNiZDNkMDQzMzdlMTJkIHB5M2stc3RydW5pCis1NjY3MiAwMmMyNzE3N2RmNzkzNGJjY2ExZDZjZWFkM2E3ZGI2ZDU0MThhZmI4IHB5M2stc3RydW5pCis1NjY3OSAwY2JiYTQ0MjZjZDNjNGQyYWE5ZWI4MGFjMWYzNDZkYzBhMDBmN2M0IHJlbGVhc2UyNS1tYWludAorNTY2ODEgZTIxZDY0NzQ2YmQzY2M0ZjUwNmFlOTVjMjE2Y2IzYTE0YTRjYzMwNSBsZWdhY3ktdHJ1bmsKKzU2NjgyIDc1NWUzMWRlYTQ3ZTU5NmYzMGE2NDcwYTc0MjBlYTI5MWEyN2IyNDYgZGVjaW1hbC1icmFuY2gKKzU2NjgzIGMzM2MzN2JhOWNiM2I1OWUwN2IxZTk5OTA0MWNlMWM4NGM3NzQ1NWEgZGVjaW1hbC1icmFuY2gKKzU2Njg0IGIxZmY1NGY4ZjlkODMxM2E1MWI5NDQ3OWM4ODQ0ZWQxNTU2MWQ5NDkgcmVsZWFzZTI0LW1haW50Cis1NjY4NSAzYWRiMDMzNWRlNTA2Y2RlZDIxOWUwNzZkOWZkMTlhZGY5ZTQ3NWFjIHAzeWsKKzU2Njg2IDE2OGQwNTUxNjBkYzE5ZjkxMTE3NGM5M2MwMmJkZjBlYjcwMzJkODcgcDN5aworNTY2ODkgNzIzY2I5ZTNmYTUwMGU3NTBlMGNmMGRlYjJkNDU4ZTYyNTkwZDIwNSBsZWdhY3ktdHJ1bmsKKzU2NzAzIDc3OTRkYTEzMzRhMDFmNzg0OWU3MDdhNDNjNzM3ZWZlZDkxODQwYTcgcHkzay1zdHJ1bmkKKzU2NzA0IGFlNzJiZjVhZTQ2NTE4Y2E2MWQ1YjUwOWI0ZjNjNWQ0YTEyM2VlYTQgcHkzay1zdHJ1bmkKKzU2NzA2IDQ2NjI1ZTYxMjJlOTliZmUwY2E0MWY2OWYyOWZjNjI5MTZkYjAyNWMgcHkzay1zdHJ1bmkKKzU2NzA3IDgxYWRlMDE0NDI0N2Q3ODc1ZDMzZDg1MmQzMjQxNDEwYzNiNTAyMWQgcHkzay1zdHJ1bmkKKzU2NzA4IGIxYmYxYmFiOTc3OTY2MDMxNTEwZGY1NDExMDEzYWM1YmJhMDE1MGYgcHkzay1zdHJ1bmkKKzU2NzA5IDZjM2ZhNDNmMWQxZDI1MTE5NmNiMWY5NDJjZjAzOTY1ZjQ2OTRmMDggcHkzay1zdHJ1bmkKKzU2NzExIDc0MDFmZjc4ZWIyOWMwM2JjYThkMzExMzdiODFlMGM3OWIyMzQ4OWIgcHkzay1zdHJ1bmkKKzU2NzEyIDUzNWRhZTA0ZDZjZDY3NDY0NTgzYzJlMDFjYjU4M2ZmZmFlNzhkMjMgcHkzay1zdHJ1bmkKKzU2NzEzIGUzMTlkMmQyODViYTNkNjc1YWY2ZjAxNzcxMmYzNTYwYmY2YTM5NTYgcHkzay1zdHJ1bmkKKzU2NzE0IGMzNTE0MDU1OWY4N2U4ZGE4Y2U2MThkNjk3YmJhYWU1M2U5YmE0NDEgcHkzay1zdHJ1bmkKKzU2NzE1IGY2Y2M3NmU0Y2EyNTFiZGFjN2Y5MDdmMTcxZGU0MGRjNGY5YjlmMGYgcHkzay1zdHJ1bmkKKzU2NzE2IDNlZDAyMGU5NWI0NDRlMzBlMzkxZTk1ZjY3MDM1MjA4YWExMzliNjAgcHkzay1zdHJ1bmkKKzU2NzE3IDNiZTI5NzJhMjljYWM1YzcwZTkwNzgxODcyMTZmOWQ3ZmFhYjAxNTcgcHkzay1zdHJ1bmkKKzU2NzE4IGFkZTVkMWFjMWEyYzhhNTAzOWFkZTA2YjUwZjRhZGMyMzc2YzIwMGQgcHkzay1zdHJ1bmkKKzU2NzE5IDcxMzA0ZWZiYzMxNmE2ZDJmNDJkMzViNjRhNWNhMTE3MGQ0YmQ4MjggcHkzay1zdHJ1bmkKKzU2NzIwIDA1NzI4ZTUyYjI4MzIwZDE4MDE4MmY2ODVkZDI4Nzk1NmQ2MTdlNDUgcHkzay1zdHJ1bmkKKzU2NzIxIGI2YmRiYjYzMjZkMmYwYjllMTk3ZjQwNjFiNWZlMzUwMjliNzA2YmEgcHkzay1zdHJ1bmkKKzU2NzIyIDBmYTg0ZmZiYTc2OThhZGViMjg1Y2VlZWEyMjllZWQxNDc1ZTYyN2EgcHkzay1zdHJ1bmkKKzU2NzIzIGM2MTk0NDgwYjFkNTk2MWQ0ZWRmMzRhOGUxMjkzMWYwNDllYzk3ODIgcHkzay1zdHJ1bmkKKzU2NzI0IDEyZGJhZWNmYjQ0YjkxNDdlODMzOTg2NDczZjk5NTU3MjQ4YTE5MWUgcHkzay1zdHJ1bmkKKzU2NzI1IDEzMzM1MDM5ODcyMjEwYTkxZGZkOTQ4ZWJkMDllMWE2MWI5MWY3MmYgcHkzay1zdHJ1bmkKKzU2NzI2IDhkNjlhMDg0ZTM2NTVjYTU1MzBiNTllYWU2NTRkNDYwMDViYTQ5MzcgcHkzay1zdHJ1bmkKKzU2NzI3IDNmZTU3ZGFhYTYwODEzNDk2NzhhYWM1ODBlMjJiNmJmZDVkYjdkYTIgbGVnYWN5LXRydW5rCis1NjcyOCBiYTY0ZmNhYjUyMTQyYTVmYjg3YzllYTBkMDRmZjNjNTVlZjYwMzAxIHJlbGVhc2UyNS1tYWludAorNTY3MzUgYWE1ZWU2NTMyOGZiNjk0OGE2MzgxOTY1YTRjMzY4YWJhZTgxODA3MCBkZWNpbWFsLWJyYW5jaAorNTY3MzcgZWQzNzU0MmY0NzNlYWUyODY1ZDcyZTBmNDE2YzFlNzg2YWJhMDk5ZCBweTNrLXN0cnVuaQorNTY3MzkgNTI4YThkOWVmMjAyZTU0ZDYzN2U2ZWI5MzdhYTc0NDc0MjEwODcwYyBweTNrLXN0cnVuaQorNTY3NDAgYTQwYWVkZGMwYzgxYmQ4ZTQ3YTljMjhlNTgyNjA4NjIyNTRjNTZmYyBweTNrLXN0cnVuaQorNTY3NDIgZjQ0MDljNWQ3OTk0ZDNhMGZlY2ZkY2I2YTE4YjcyNmI5NWY1NDI5MSBweTNrLXN0cnVuaQorNTY3NDMgZDIyMzVhZWUyZDI1NTAyY2FjMTk2MmRiNjljZDBkZTQzMGEzYzhjZiBweTNrLXN0cnVuaQorNTY3NDggYTg0ZWFkZjYzNzJlMzhiMjM2Y2JmZWIwODdkM2ZjNDI5MWI0YTkzYyBwM3lrCis1Njc1MCBmZGJlZDczZTVkYTdmNWNiMTEwOTM4YTRhODgwZmI4N2Y4YWIwM2U1IHAzeWsKKzU2NzUxIDY0ODU3N2NjNjg4YWY2Y2ViMDc5NzI5YTU3YmZhZjFlODY2NDFlNGIgbGVnYWN5LXRydW5rCis1Njc1MyBkZDc0ZTAyMGExMzIzODZkNDE2OThmYTg3MmVjZWQwYWRhMjE0MDdmIHB5M2stc3RydW5pCis1Njc1NCA2MjkxODU5OTJhYTIxNTBiMDI4ZDk4OWNhYTQ1YzI0YmFiZjY0NDQxIHB5M2stc3RydW5pCis1Njc1NSAwODBmMmFhMTgwMTU4ZTcyZTkyODhiODkyZmNlYTA3YjhmZDQxYTlkIHB5M2stc3RydW5pCis1Njc1NyA0OWQ1MWMxZmMxNzc4YzEyZWY2NTE1ODZhOWE2OWFhZmZhNzM4ZDBhIHB5M2stc3RydW5pCis1Njc1OCAxNzgwMDM1ZDU4MTIzYzc3ZmNlOGIwNTRhNzQ2NjdkYzY1ZWZlNWE4IGRlY2ltYWwtYnJhbmNoCis1Njc1OSA4OGQ3YTNkZjVmNzllNTI5OGFlNjI0MGFhZDRiYjVmOWMzZTYwY2FhIGRlY2ltYWwtYnJhbmNoCis1Njc2MCBiNDUwMDU2NDFiY2E2Mjg5ZDkxNDViZjRlZjY3MGNlZTJhZmY2NDk2IHAzeWsKKzU2NzYyIGRiZmMzY2YxNTIyZDA3YTRlNjk2YzdhYzIzMzZlZDE5Zjc1YjYzZjMgbGVnYWN5LXRydW5rCis1Njc2MyA5YjI2ZWU2ZTZkMGE0NWRmYzlhYjI5MmQ4MzgwZTE5NDlhYmVlZTA3IGxlZ2FjeS10cnVuaworNTY3NjQgMjU4ZTJiN2E3OGU0ZmUxNzQ3ODQwM2ViYTlmY2YyMTRlYTI5YTZmYSBsZWdhY3ktdHJ1bmsKKzU2Nzc1IDBhZGI3MjA3ZTRiZWI3YjRkM2YwOTc2ZTM1YmNmZjMxYmNmMjYxOGQgZGVjaW1hbC1icmFuY2gKKzU2Nzc3IDhiNDVmMjI5N2RiZDE0OWIyOTIxYzJkNmVjOGVmNDczMTQwZjM4YTkgcHkzay1zdHJ1bmkKKzU2Nzc5IGIxMGJhMzhlNmI4MDgxMjM2YTU5MDNhMmExOWQ2ZGI5MWZlNDg0YTIgcHkzay1zdHJ1bmkKKzU2NzgwIDIyOTM2MTE5OGU4ZDVlZDgzYzY1OWE0ZDA4MDY2ZGI2ZDZkNzg0NWQgcHkzay1zdHJ1bmkKKzU2NzgxIDQ0MDE3NmYwNjE0Nzk0MjQwNjFhODdjMjZiMmNiNTJkMTYxMGM2ZjggcHkzay1zdHJ1bmkKKzU2NzgyIDNmYzNjZWRjNDljYTNjNmE4NWIxODU4MDcxNGVkOTE0YTg2ZjI1YjggcHkzay1zdHJ1bmkKKzU2NzgzIDgxYTM4MDNmNDNjZjk4OWViZDg0ZmMzN2ZlY2M3ZjNjNTFmOWU0MzMgcHkzay1zdHJ1bmkKKzU2Nzg0IGY0Yzk5Y2FkOGQyZjY0YjI3ZjkzNmQ1M2UzOThkNTllY2YwMTczOTAgcHkzay1zdHJ1bmkKKzU2Nzg1IGY4MjgxZGMyZTY4ZGVkN2YzYjZmZjc3ZTFjNjRiN2I4ODdiYTc1ZWEgcHkzay1idWZmZXIKKzU2NzkwIDJhYjE4ZmZiNDAxY2YxYjdhZDA5NDNmNzRkYTkxODQ5ZmUyNmJhOGUgcHkzay1zdHJ1bmkKKzU2NzkxIDJhMTEzYTgyNjRiMTYyMTA2OTk0YzY5NzRlZDVhNGQzMzMyNjYyZTQgcHkzay1zdHJ1bmkKKzU2NzkyIGYzMjQ4YzMyMGRkMDNhMWRjMmM2ZTc4ZmE2N2MyMjg4NWFkNTVjNGIgcHkzay1idWZmZXIKKzU2Nzk3IGZlNWEwNjIxZjkxODgwNmRiZmExMmUyYmE4ODczZjZiOThmMWFmZjUgbGVnYWN5LXRydW5rCis1Njc5OCA3ZDA3OGZhMzRiYmY2M2JmMmEyYmFlOWQ1NTA0YzZkMDg0Yjc3MmI5IHJlbGVhc2UyNS1tYWludAorNTY3OTkgYjIyZDlmZDRhNzg1YWRmYWEzMmE1N2Y0OWU4MGU2ZjJlMWM3ZGExOCBweTNrLXN0cnVuaQorNTY4MDAgNmJhMmU2NzU4MGZjOThiODAyZDUwMzRiOWE5OWZkZjk1ZDE4YzUyZCBweTNrLXN0cnVuaQorNTY4MDEgMzQ1YzgxMmYzMzY2NWVkZjMyZWVjMGZhYWJjYWZjMmZlMjhlNzI0NCBkZWNpbWFsLWJyYW5jaAorNTY4MDIgMjk3MzU4OTljYTE1YTA2OTZhODU5M2ExMmJmY2UyNTMwZDA0MjZjOCBweTNrLXN0cnVuaQorNTY4MDMgNmZkZDFhZjYzZmE2YTVmZmI3YTc0NTQ0YmRlOTUyYjEwMmUxY2IwYyBweTNrLXN0cnVuaQorNTY4MDQgZTdmZDMyN2UwYzE5YTI4OGYwOTU1ZDc1NzhjYTcwODk1OGYzMWI3YyBweTNrLXN0cnVuaQorNTY4MDUgNDlkNGM0Y2RmMGM4NjI4M2MxYmNlYmM1Yjc5NmQ3MDE0MTlmMWQxYyBweTNrLXN0cnVuaQorNTY4MDYgOWYxODQ4ZjU5NmUwY2M2NGQ1YzY0OGQ2OGQxYTM0NWFkZmRhY2Q5MyBweTNrLXN0cnVuaQorNTY4MDggZTExNTBhYWUwZjY0ZDZkYjk2NGRhMzliYTJlNTdlODQyODQxNDI2ZiBwM3lrCis1NjgwOSAxM2RjODM2ZDRhOTlhODVlMDc5MjQ4MTNkN2JlMGEwYWRmZDdlZDExIHB5M2stc3RydW5pCis1NjgxMCBiMjBjYzFjMGNmMTBlNDQ2MWU3NjQxZjEzZjY2ZmQxZmFmYThmM2I2IHB5M2stc3RydW5pCis1NjgxMSA0ZGVhM2I2OGIwMTNiMGU4ZGQyYzgwNzFkOTM4YjNlOTlmMWUwOTMwIHB5M2stc3RydW5pCis1NjgxMiAwNGExNGRmNDA3M2E0ZWY4ZTAxZmFjZGNmYzg4ZjFkYTFjOTFiMGEwIHB5M2stc3RydW5pCis1NjgxMyBjMWVkNDkwYmQyNjY3NGRjZDk0Nzc0N2I3ODMxNjNjMTA2MGMxYWFhIHB5M2stc3RydW5pCis1NjgxNCBiNjVmNmFjNTI5NjhjNjYzNDc0ZTViYWY5ZThkMzUwZmU1NzY3YTYxIHB5M2stc3RydW5pCis1NjgxNSAzZjFmY2QwODBlYzRiNTAxMGIwMzc5N2FhZjczMTM5ODAwZDRhNzM5IHB5M2stc3RydW5pCis1NjgxNiBjOGEwOTFiODQyZDZlZGNmMzAxYjdmZjdjM2Q1ZDFiOGIzODkyYTk3IHB5M2stc3RydW5pCis1NjgxOCBjOTZiNGMzODY1MmMzOWUyNDgzMzNiZDZmY2UwM2I5MzA4Y2Q4ZjM2IHB5M2stc3RydW5pCis1NjgxOSA2NjhhNWFkY2M4N2NmMmNmOTdlNTg5MGVmMzc3N2FiOGYyZTk0ZTJlIHB5M2stc3RydW5pCis1NjgyMCBiNTZhOGQ4MjJmMjFiNjVhMWU2NTczZTdmYzQ0MzIwYjg1N2RiMmJkIHB5M2stc3RydW5pCis1NjgyNCBhOGYxM2E0M2VhYTFlNTNkYzJmMWQ2NmVkNTUyZjk3ODlmMDY0YzE4IHB5M2stc3RydW5pCis1NjgzMCA4NmZkMzljMmM2NzY4ZGNmMmFhOTNhYmUxNDI0MDMzNmVjNWM1Zjg1IGxlZ2FjeS10cnVuaworNTY4MzEgODljODFmZDcwMzhlNjMxNzNmNDE3NDFjYWQ2YjQ4ZDE1ZTRjZDBkNyByZWxlYXNlMjUtbWFpbnQKKzU2ODMzIDNmNmJlMTJiOTUzNDIzZmRiYzE1ZTY3ZjBlZmQwMjMzZTdmYTg0NDYgbGVnYWN5LXRydW5rCis1NjgzNCA1N2NkMDcwYWQzMDQyZjEyZWQ0MjAzM2E4MDczZTBmYWU2MmU3OWY2IHJlbGVhc2UyNS1tYWludAorNTY4MzUgNWY2MGM5ZTQxNDQwM2FlNWE0ZjRhMTAxZjg5NTM0OGMwODVlNjdiOSBwM3lrCis1NjgzNiBmNGUzNjZjMzkyYmU3MDZlYzNjOTFmNzkyMmU0NjhmZTJmY2FmZTk3IHB5M2stc3RydW5pCis1NjgzNyAxN2NkYmVkYmIxNWQ0NTRhM2RhNzVkN2RhMzQxMTRiNmYxMDdiYzUzIHB5M2stc3RydW5pCis1NjgzOCA5NWQzYTY1Y2I3NGM3MGY4YmZhMTZjNDFkYmE4MzI3YzYxYTFiOGVkIHB5M2stc3RydW5pCis1NjgzOSA5NjA5OGFiYzhmOGY2NzY2YzVjZWNmNjZmYTY3MGIwMDRjYWUwNDI5IHB5M2stc3RydW5pCis1Njg0MCBjMzIxYzJiNTk4ZjE3NDgwOTAxN2FhOWU1NjcyZTFlZjkwMzY2ZmU4IHB5M2stc3RydW5pCis1Njg0MSBmNjA2OWY5ZGQ1MmRmYTljOWI2ZjEyM2JmZjZiYWI2MWUwNDc5NzczIHB5M2stc3RydW5pCis1Njg0NyA5ZWRmMzBiZmMyZWJlMGFkODEzMDhhNjc4MTNhYWVmNTlhN2NjM2Y3IHAzeWsKKzU2ODQ4IDk5MTg5ODliNzMzYjVlYzdmNTUxNzM3Yjc4ZjNiMzliNTkwY2JmMzggcHkzay1zdHJ1bmkKKzU2ODQ5IDIzZDk2M2E3NTY5NjJlYTEwYjQwMzE0YjRhN2RjZDZhNDJlOGFiYjIgcHkzaworNTY4NTAgNWZiZDE1YzYxYjEyNTA1MTdjZTFjNjc3NmZkOTkwYjlkM2I0NDZhMCBwM3lrCis1Njg1MSAzZTFhMTUxODVmOGNmOWVlYzA5YzY2NGIzOTliNmZjODgyMGE2NTBmIHB5M2sKKzU2ODUyIDI2Y2EzZDZmNDczYWQ2ZGU1NjdmMGExYzdlMDk3Njg0MjE5YzlkNmUgcHkzaworNTY4NTMgZGIyNTlkMTQxZTdhZWMwMmY2YWI3ZThiOGJjNzVkZmM0ODMyZGUzZiBweTNrLXN0cnVuaQorNTY4NTQgNGFhZWEzNWRjY2NmOGQyMTRlYThjZDUwODNiM2I1MWE5MWU2MmExNCBwM3lrCis1Njg2MCAwYzg5NDA5YmRhN2FiYzYwZjM5ZGJkY2NmYTI4NDMwNjdkMTA2MzEzIHB5M2sKKzU2ODYyIGRmNGNkOTI5NzA5ODE5NDdhMjlmNWQwZmIxYjBkZTY1MWVjYWYwMjAgcHkzaworNTY4NzEgNDg2NWI1MTBjZjU0ZThkYTFkZjNiNjNlNmZlNzkxZDgxMDJmYzhmZCBweTNrLXN0cnVuaQorNTY4NzIgM2RhMGE0ZGIyMTAyNGRlNWI2NzUwYzMzMjI1YTA0ZGUwM2IwZGE3MSBweTNrLXN0cnVuaQorNTY4NzMgNTIyYTNlM2EwM2E5NmNlMTliYjg2YThjMTllNGY2MjcyZjZlYjE3NCBweTNrCis1Njg3NCAwNDNhMTAyYTE3MGVlMmVmM2JhMzJlYWU0NWQwYmU2ZWUwNjFhODYzIHB5M2sKKzU2ODc1IGRjZjI3Mzg1ZjEyNTE5MDIwNjc4YTg4N2Q1ZTE4YmNjNGMxMDMwOGYgcHkzaworNTY4NzYgMTY2Yzc0MDUzNmI1ZjczYWI0NzZlNDk4Y2M4MzVlNjY4MDZiMDg1NSBsZWdhY3ktdHJ1bmsKKzU2ODc3IDgyYTVjMzBjMTc4NjIwNmFkYzVkMWQyNDRhNGExZDc2MjRhYzQ2YWIgcDN5a19ub19hcmdzX29uX2V4YworNTY4NzggYmUzZmVjZDJkMzM5NDI5YzM4NTA0MmY5ZjhhNWFhODgxYjkxN2Q3MyBweTNrCis1Njg3OSBhMjRlMjdmMDVlNDgyOWNiODcyMzhmZDk2OGJkYTlkNmVkMjlkNGI1IHB5M2sKKzU2ODgwIGMwZGJmNDVjYzIwNzI5OGY0YzA3MDE4M2RkMDVkNTk5OTFiZTk5ZTIgcHkzaworNTY4ODIgMDg3MGU4ZTllOTlmNThmNmFkZWY2NDZmN2FiMzhkYzFmZWU0ZjNhOSBweTNrCis1Njg4MyBmMGNmZWQzOGI5ZDllMWY1NDg1ZDYwNjMwMTgyOGYxNmUyYjc2YjRjIHB5M2sKKzU2ODg1IDBlNWFlYmEzYzY3ZGIyYTVjNDg2YjM4YmY3MjcwNGFlMGZiMTg5YjkgcHkzaworNTY4ODYgNTA3ZjU2NzFlMzg4NjI4ZjVkZTgxNjM0MDM3NWY3OWVkMjc3ZDI5MiBsZWdhY3ktdHJ1bmsKKzU2ODkwIDBhYjM0MjFhMDkwNjc3YzkwOWI5ZDdmNDhmMjM1YmMxZDUzYzdjN2IgcHkzaworNTY4OTIgOWQ0ZTIyMDIyNGZiNWRkN2ZjNTI3MzBjNTJhMzU0ZWU4NjAxZTAwMSBweTNrCis1Njg5MyBjYzI1ZDE2MGYwZjdlZTEwYjBhMzcyYzBjYmQ5MDY4OTU3NzI0ZTIxIHB5M2stYnVmZmVyCis1Njg5NCBlZWIzN2M5NzkzZWE1MzQzNjhkMDQ5OTgyMTk3YTQ3Y2VlMjQyY2YwIHB5M2sKKzU2ODk2IGYzNzAxNmQ0MjcyOWZiZWY5ODU3ZWRjOTI5NzcxZGY4MjAyZGU3YjMgcHkzaworNTY4OTkgNzcwMzE4N2M3YzZmMTE3Y2M5YjAxNWVlODk3NGZmZmVjYzIxOGM3MyBkZWNpbWFsLWJyYW5jaAorNTY5MDAgOTMwNzM2ZWU5M2Q5NDkwYTkzZDI4ZmExY2IzNjJkYzcyNmFiNjE4MSByZWxlYXNlMjUtbWFpbnQKKzU2OTAxIDM0NmQwYjg0MDMwYjlkZjk1OGZhZjg1NDFhZmNkNTM5MmVjYmRmNzQgcHkzaworNTY5MDIgZTY0Mjg2MDUzYjI1MjI4NTE1ZmY4ODNjYjA1NGM5OWY5MTc2ZTA5ZiBweTNrCis1NjkwMyBkOTViMTVhNTVmMmMwNjMwZTBjZTU2MDYwMjk0ZjU1Mjc3NWM5ZWU0IHB5M2sKKzU2OTA0IDNlYzIwYzRjMWE0ZmJjNTEzMzY5MmVmMDZmNjIxNDVmYWRhN2MxYmQgcHkzaworNTY5MDUgYWZmYjFlODc4ODFhNWYxYWY2M2YyZmMzMzkxNzc1ZGJjODBmZjRmNSBweTNrCis1NjkwNiA4MWJkM2U5NGNmMGMzMWQ4MzQyYjY2YTBjMmIyZmIwM2M2MWMyYWFiIHB5M2sKKzU2OTA3IDM4NThkMGI4YjBlZjc2ZmJkMGRhYmUxNTM2ZDQxMGFkOWZiZGFlM2IgcHkzaworNTY5MDggM2ExNTcyZDFmZjFhZDU0ZmVjZGFlYTA2Y2IxNWU4Yzg4NGQzMDA4NyBweTNrCis1NjkxMCBmODI4ZjM1MDE0YWUzOWJhZTUwODRkOTE4MWZlOWY2MDdhZjg3ODQ5IHB5M2sKKzU2OTExIDZhMDk0MjMxNjRmZTYyNGY1NjdjYTE0YjEwMmE3NTU0MTUyMjc3MGQgcHkzaworNTY5MTIgNWY5ZTc5ZDFlMTU4NGI1OWZlODFlZTljOTFmNzYyNzQwOTY1MDBkZSBweTNrCis1NjkxMyA4ZDY4NjdjYjhhOGRiNzE4OTUxOGVkMDVjNWI4MjVmZDczMGY3MDQ0IHB5M2sKKzU2OTE0IDZjZGRjZTQwOTZhMjI3ZTIwY2E5NTE0MDQ4M2Q0OGRiYzcwM2UzYmMgcHkzaworNTY5MTUgNzRhM2M2ODI2NjgzZTRmNzQ5YTIxOGUzNzYyNzc5ZGMzMzM0NjJlNiBweTNrCis1NjkxNiA5YzNlNjQ0MGY1NGMzMjNjNjgxNTIxNmU0Y2IxNTkyMjAzOGRkNzgyIHB5M2sKKzU2OTIyIDQzZTMyYjJiNDAwNDgxY2EzN2I4NjM4YzNhYzZjYzZjYjdhZTkxYzEgcHkzaworNTY5MjMgNjhmZjkwOThiMmRjODM2ZDViMGQwYjRiZDYyMzExOTE3NTQ3ZDY5NiBkZWNpbWFsLWJyYW5jaAorNTY5MjQgYWFiNjg3OTM2ZWNkODI3NGJlNDg4MDI4OTNmYzBkOWFiZjBhN2ZiNCBweTNrCis1NjkyNSAwYzlhZDBiMmZhYzU0YWI5MGEyN2ZiMzQzYjJjZWJjMDJkOTk4MjY1IGRlY2ltYWwtYnJhbmNoCis1NjkyNiBkMTg1NWQwZTRlMDNjMzkzNzYxMDc2NzI4OTQxZmNiMGJjMDhiYzRiIHB5M2sKKzU2OTI3IGNmYWRkN2NjOWM0NTc3YTU2YzkxYjdkNTI0YWVlMDg3MjU3YzkzNjkgcHkzaworNTY5MjggYTQ0YzU2NDAyNmI4MzE0ODYwNTVmYjE0ZWJjOGM3ZDQ1NWYzMTI2NCBweTNrCis1NjkyOSAwNzdjNjgxODZlMjM3N2Q0NWFhMjdiMmE2YjVhNmI4NjBhOThkNTMxIHB5M2sKKzU2OTMwIGNmOTEzNzdlMjQ0NGU0MTRhNWFlNDIyN2JlNmU3YjI1M2YzYWJmMTUgZGVjaW1hbC1icmFuY2gKKzU2OTMxIDQyMWY5ZjM1OGU0ZmJiNGI5NTc4MzZhNjQxYTVlYjk0NzEwODJkODYgZGVjaW1hbC1icmFuY2gKKzU2OTMyIDBjMGUzNTVjZjc0MDdjZDNlYzQ2NTJmN2EwMzlkYzkxYTFiYmI4YjkgcHkzaworNTY5MzMgODQ0N2VjZDFiZjQ1ODFiODlhNTNmZjdmOWY0NzU1MTZhYjZkN2ZmOSBweTNrCis1NjkzNCBhOGM3NDI0MjUzNTYyY2Q0ZjRjMzE4ZDQxMWY2ZTFmMTk4NzA0ZDI5IHB5M2sKKzU2OTM1IGUwZjYyMjg2YTlhNDU0YmQzZjkzZWZiYWU3MjBlODY5NjFhNjMxODIgcHkzaworNTY5MzYgNjVmMWQ0MTlmNjMxMDlmZTc3MWViOGFkYjdjODRmODY4NjJmMGM1OSBweTNrCis1NjkzNyAyNzYzMzBmNDJlNzkzNmI0NmYwYWFjNGRmZjdhYzFmYzQ5YzgwNTg2IHB5M2sKKzU2OTM4IGI2NjI1ZDJiMzc4YWYxMmRmMzI1OGJmMTk4OTYxZThlN2ZlZjk5MjIgcHkzaworNTY5NDAgYWMxOTJmODljMTA5M2NhMjAxYjIxZjEzMmQ1YTZjZjM3ZDQwNTcwNCBweTNrCis1Njk0MyBjNjlkMTIyNjQzZDUwZDNkM2I1NGIxZjQ5YTlkNGNjYjEwMWYxMDc4IHB5M2sKKzU2OTQ0IDdhYmFjYzllMzk5NThmMDg1NDNiZjYzZTBmYzRmZjFhNWZhYjhjOTkgcHkzaworNTY5NDUgM2U2ODJhZTlkMjk4ZWYxMThhNTkyZmVjNTc3MGE2MWNjOTdjNGViYiBweTNrCis1Njk0NiBiN2IzZjRlMzI1MzNlYjNmZjAyNjZhOTQ1NWEzY2VhZWYwYmEyODMyIHB5M2sKKzU2OTQ3IGZlZTVjNmJiZTE0NGRhYjgzNGVhZWY0OWI0NjdiMWQ3M2RkNGYzZGQgcHkzay1idWZmZXIKKzU2OTQ4IDRiNDk5NWM4ZTNmZDY3NmUxYWFjNTk4NzMyYzBhNmVkMTFiOWNiN2QgcHkzay1idWZmZXIKKzU2OTUwIGMzYjM0YjBmODIxNmFlMzllMzE2MGYyMjdmYzFkMWZhOTY0NWNlMmIgcHkzaworNTY5NTEgMzQ2YWZhNjU4ZTQ0NjAzODUwNjUzOWZhYjA4M2M1YTJlNjhiNzFkMyBweTNrCis1Njk1MiBlNzgxMDg1YWM5ODllNGMwYzFhM2YyNTRmZWUyY2M5ZDExNDQzZmQ5IHB5M2sKKzU2OTU0IDdmOTQ5YzE3Y2MzNjdiYmNiMzRjNTUyNWY3NDA5MDliZWQ0ZmVjOGQgcHkzay1idWZmZXIKKzU2OTU1IDBmY2MxOGFiYTM4NWRlNGM5NjAxZGI4M2Q4ZjBmMDdiYmFmMGFmMDggcHkzaworNTY5NTcgZDAyMGI5YjFkOThiNmFkNTdhOTYwOTZhNjBlZjY3NzZlMWM3YzZkNyBweTNrCis1Njk1OCBhZTljZjQ4ZWQ2ZjcyOGZkN2IwMzI1N2ExZjE4NDgyODBjYWY4ZTRmIHB5M2sKKzU2OTU5IDBkOTk1M2Q3YjgyNzU3Y2ZjNDkzMmM5ZWMxNzZhYmE1YzEyZmU1NDcgcHkzaworNTY5NjAgMTUwMTllYWUzOWU4MjdmNDE0MGEzYTJlZWEzZTAzZDVjOWVmOTJjOSBsZWdhY3ktdHJ1bmsKKzU2OTYxIDEzODEwNDZmZTg5NDViZDdjMzU4MDNmNDQzMzU1YzJhZTk3YWY3MTAgcHkzaworNTY5NjIgYjkwYzIyMDQxNjM1MWE1ZTZjNTgzMmVhNzBjMDQxYzZiYzk4Yjk2MSBweTNrCis1Njk3MSBlYjJjMDY3NmM3M2YxYjE2ZGYyYTc4NzVjNThjMTgyM2UwMWE1MGRhIHB5M2sKKzU2OTczIGQ0ZWU1NGE4ODQ4NTBiY2U2Yzg2MmNmZTIzNTI2ZTk2NjkzOTFmZDYgcHkzaworNTY5NzQgNTNiNzNjMjcxMWI2YzY4MmE0ZTEyYTk1NjQyNjhhOWFlMzU2Mjk4MCBweTNrCis1Njk3NSA1NDI2MTYzNGFkNDZkNWU5NmYwMjhkMjM5ODQzZWY5NGNiZTc3NDg5IHB5M2sKKzU2OTc2IDdhNDVlOGI3OGQ2M2ZmNDRlZTlkMDFhY2NkOWI5MDAxNWI1MWY5ZjIgcHkzaworNTY5NzggYTcyNDI3OWZjOTMxYTVmMWEwZmVlNjAxNWNhNTZkMDA2MWY1NDk3YiBweTNrCis1Njk4MiBmYjA2OWVhZmFmODlmNTMxYjJjYTFmNjllZTFlMTdiZjE5NzRhYmUwIHB5M2sKKzU2OTgzIDRiY2U5NGQ5ZWMzMWU0NTM4YzMwNmZmZTRjMTc4OWNlMmQ5YmY1ZWIgcHkzaworNTY5ODQgNmFmNmJiNDgyNGQ1YmU2MWMwY2YwN2NmZjc3MDEyZDI3YmNiYWNjZSBweTNrCis1Njk4NSA0N2FhZjNmNGEwMzhjZTk0YWI4NGZiNzI5ZGI0N2U4MjQ3ZjZlMjU1IHB5M2sKKzU2OTg2IDBlZDNkMTgyOTIwYjhmOGQ2NGJkZjM0OGEyYjcyNzMwYTMzM2Y0YjIgcHkzaworNTY5ODcgY2Y5YjNiNDg3ZmRhMWY2NWJkNDBhNDYzMWJjOTE1Y2U1ZTZiMmRiMCBweTNrCis1Njk4OCAzNzdiNDgzODFhNDljMDMzNGNhMmE1NzA0MWFjNDI5ZDI2Y2I5NDJlIHB5M2sKKzU2OTg5IDVhZWIyNjFkZTBiZGFjYzhmN2I5ZWE2ZDQ1ZjVlYTM3NWE1NmZmZWIgcHkzaworNTY5OTAgMWU0OTM2OTY0Nzc2ZjU3ZmY2MDkyMWRlYmNkYWZmNzA3YmM1ZDc0NyBhbGV4LXB5M2sKKzU2OTkxIGJiY2VmNmRlNDY3NDA1NmRiNmFlY2MyNTViYzZkNmQ1Y2JjMjBmNTYgYWxleC1weTNrCis1Njk5NSBkNjhhNzFjOTY1ZWMxNTA1YjcxZjVlMTM1Y2I5ZTgwYTI2NTJkZWQyIHB5M2stYnVmZmVyCis1Njk5OSBiZmUyMDJiZmZkZjQyZmI0NDRmZTA0M2ZkM2MwZGYxNjc3ZTk2YWQ3IGxlZ2FjeS10cnVuaworNTcwMDAgYmRjNDAyOTNkNzVlZmI4ZWIwZjFmZTM0OTcwYjhlNmMzNDQ1MjA3ZSBsZWdhY3ktdHJ1bmsKKzU3MDA0IDljY2Y5ZDY3YmIzNDhjOTVjMDFkMGU1Nzc5MmJjMTc5MWNkMjNlYTggcHkzay1idWZmZXIKKzU3MDA1IGQzMzcxZmQ0OTEwMjQ1ZWMyYThhNDc4Y2EwOWVmYmQxYzI4MjlmYzggbGVnYWN5LXRydW5rCis1NzAwNiAyMjlkNjM0NWE3M2ExMTI0NTMwNzc3ZGZlMjZmODk3Y2YzYWUwZDExIHB5M2stYnVmZmVyCis1NzAwNyA2NzkzN2ZlZTc1YWY2YTI3MDg4MWE2ZDNlMTM0YWU3YjE4OTFjYWU2IGxlZ2FjeS10cnVuaworNTcwMDkgYjYyMzc3N2YyMmIwZGE0MDNjMTdiOTllYTlhYmZmYzkwZWIyZTFlMyBweTNrCis1NzAxMCAzYzFhMjAzNjVhMDViYzFhMDRiMWJkZGNhY2IzNTdiMGI3NTBhOWQ3IHB5M2sKKzU3MDE3IDIxOWZlMzllZGU5OWY3ZTQyMzE4ZDRmYjY5ODNlODY1ZmZiZWJiZTYgbGVnYWN5LXRydW5rCis1NzAxOSAyNzRmM2FlNGRjYzc4MDM0MDc1ODVjMzY2MjhjYTVmMmNkZGEwYWI3IGFsZXgtcHkzaworNTcwMjAgYjdiZDRhMjY4OWMxNmNlNWQxMTNjNjJiNjJkYjBhMjlkOGJhNjc4NiBweTNrCis1NzAyMSA4NmZhZjIxMTNkMzZmNThkYTdiMjA1Y2JhMDYxOTkxOWVhN2RlMjRhIGRlY2ltYWwtYnJhbmNoCis1NzAyNCBhNTI4ZjdmOGY5N2EyOWMwNGYyZGQzY2U5ZDE2ZTRmODk0OGMyYTdhIHB5M2sKKzU3MDI1IDFiOTFmYWEwZGUyZDFlMzZlOGUxZGFiZGU4Mjk3YWE5M2E3NGNjM2YgcHkzaworNTcwMjYgOWIwMjEyODUyMWUyNzA0YWVlZDBiM2I2NzRiMWNmZmVjM2UyZGFhZiBweTNrCis1NzAyNyAzMGMwZDU5ZGIwYzY0ODUyN2ZjZGZjODk4ZDczN2EzNjZjYzZkZjE2IGxlZ2FjeS10cnVuaworNTcwMjggNTM5MWI1ZjhjZDdhMGUzNmFmNWE4NmFmYjg5NDVmZmJlMzE5NDhkYyBweTNrCis1NzAzMiAxM2IyM2FkZGVmNDFkODIwNjE5NjM3MTc1ODUyYTMyMzZjNGFjMTE3IGRlY2ltYWwtYnJhbmNoCis1NzAzOCAzYmVlZjE2ZDgxNjcxM2MxZDc5MzNmMjlhY2RlOWI0Y2M2YjQ4MzE5IGRlY2ltYWwtYnJhbmNoCis1NzAzOSA3YzY2ZjExMTllNTU0ZTAyMDkzNzY0ZDdmNGI2MzFjMjY5OWU3YWU0IGRlY2ltYWwtYnJhbmNoCis1NzA0MCA0ZWJlYTZhZmRjODcxMTAyOGM2MWNjOTExOTE5MDM5NzdmMzFlYmRjIGFsZXgtcHkzaworNTcwNDEgZWQ5ODlkZDk5NWQyNDQyMTJiYzY0NjVkODI2ZGI4OWU0OTA5Mjg0ZiBhbGV4LXB5M2sKKzU3MDQyIGFjNWNlN2M0M2VlNzU5ZGU0OTU2NzA4MTZmMWJiYTdlYTBjNDUyN2UgcHkzaworNTcwNDMgZjZhZjBiMjU5OGNhMTJjMWRjNTM0ZjYzOGFmZWU2MGQ0MzBhNmVhOSBweTNrCis1NzA0NSA5ODAzMDhmYmRhMjlmOWM4OTA2NDZiMTM5YjIzNDRhOGFhMDkyNjk1IHB5M2sKKzU3MDQ5IDIwNDc3Y2JmZDk5Njc4MDg1NGE5NmQwNzBlYzNiNTYyMzg2YmNhMGIgcHkzaworNTcwNTQgZjY4YjZiZjQ2MzY2MWUyYmRlMjJkYWMwYWUwNTVlOTYxNmNiM2NhNyBweTNrCis1NzA1NiBmODI4YTk1YTlkYTZiYTkwOGM5YmEwYzI2NjNkZDIyYTNiYThkNGM5IGRlY2ltYWwtYnJhbmNoCis1NzA2MCA0NjIwNjYxZTA2YWZhZjQ1MTkzODU4NjAzYzRjMWFlZjgwNmNiNjFhIGxlZ2FjeS10cnVuaworNTcwNjEgMTdiZThmYmVjMTU4YzQ1YjM3MjBlNTExMTRlNzNmMjUwZTllZGQzMCBweTNrCis1NzA2MyAyNDQ5NzAxOWM0MDczNTY0ZDY0OWFlMWIyYmRmY2ZkNTczYTFiMzE0IGxlZ2FjeS10cnVuaworNTcwNjQgNzE3ZmZiMTZiNWQxMjU0ZjI3OTNlMzVjNjRhY2RmMDk5OTQyNDAzNCBweTNrCis1NzA2NSBjNjJmNjY2OWFlMjJiODc3OTViYTM2NDk0NzUxNjMxNDAxYWE1YWZjIGxlZ2FjeS10cnVuaworNTcwNjYgOWUxNTI5YmYwNDQyMjhiN2Y3YjhhMTZjNTM3ZGI5MTc4NTY0ODBlZCBweTNrCis1NzA2NyA3MjYxYTkxYmUwMDM2ODMwODM1ZjdlNGFjYzJhOTc2YThlOTIzN2VmIGRlY2ltYWwtYnJhbmNoCis1NzA2OCBiMWFiZjg0NmNlODE1MmMzODAzMDMxMjY5YTZkYTVhNWNhN2Y0ZTI1IGxlZ2FjeS10cnVuaworNTcwNjkgYTNlNzY0MzE3MDViMjYzYzg2NjRiMTUxYmVjMDUzNzAxODQyMjdkYyBsZWdhY3ktdHJ1bmsKKzU3MDcwIGVhYjc1YWUzMjEyYmRiMmQ0Y2JmODhlZmJlYmY5OGU0M2M5NTQ4NTkgbGVnYWN5LXRydW5rCis1NzA3MSAzY2MyY2M3OTU3NjVmYTk4NGNhZGQ4M2Y3NDNkN2VhYjRkMGI2ZjljIGxlZ2FjeS10cnVuaworNTcwNzMgZDMzNjJjNDk1Mjk2MGI0YzIzZjBlZWM2NTJiMzJhYmY4OWViZTcxMCBsZWdhY3ktdHJ1bmsKKzU3MDc0IDc5MjZhOGNhOTI5MDQyZWE3OTE3OGE3Nzg2Mjc4YTZjZTgxMTlkMzUgbGVnYWN5LXRydW5rCis1NzA3NiAxMjEyMTNiYmYzNThmODZhOTFkZGQxN2E5YzliN2JlZWExZWE3MWRkIGxlZ2FjeS10cnVuaworNTcwODIgNGE0ODcxOTFmYzU0YzBhMTcwOWVlMGRjNzIyODk0ZDdiNDc2ZWY4NyBweTNrLWJ1ZmZlcgorNTcwODMgNjZhNThjMWMyODNiM2U1OWU3NjVlOThhZTljN2E5ODA3MzUyNDI1MSBsZWdhY3ktdHJ1bmsKKzU3MDg0IGJiYjRmNDY2M2NkMzIxMmM4ZDEwMGMxYWRhYmFiNDgxYjY5YjMxZjIgcHkzaworNTcwODUgN2E1NjJhMDA5NzNlZDRkMzUyOGQ4Mjc0ZTFhZTliNTdhNjE2NGE2OSBsZWdhY3ktdHJ1bmsKKzU3MDg2IGNlZDI3YjhmMDg5YmE1YjA3NjNkOTM2YjA1MTM5M2E4YWUxZjU3NmEgcHkzaworNTcwODcgY2I4YzFkZDdlZTMyYjAyN2E2ZWMzN2M5ODg1MjFlZDgxYjc4Y2E1YSBweTNrCis1NzA5MiA2MDNkYzUzYzQ3MTYyMGU5NTlhODk2YmFkN2NjNzMzZjBlMDY4YTg2IGxlZ2FjeS10cnVuaworNTcwOTMgMTM1YjNjZDVlNzIzMmVlZmYyMTkxZmUwZTQ1ZWE1MDc3OTg3M2E5ZSByZWxlYXNlMjQtbWFpbnQKKzU3MDk0IGQyNjQxMDdjN2RhNmY2YTFiZDYzNDVjOTRmMDU1ZmQxNWJlNGI0ODQgcmVsZWFzZTI0LW1haW50Cis1NzA5NSBhMTc2OGJiZDc2ODE5ZWRiNDk4N2UxOThkNjY5NTBjNGFjMTY3OTUwIHJlbGVhc2UyNS1tYWludAorNTcwOTYgZDk3ZmQ0NDc3N2IyYzEyYzg4ZmU2MGM1OTgxMzJlZGVhZGU5NmM1OCBsZWdhY3ktdHJ1bmsKKzU3MDk3IDRkMmFhNGJmYjJkNjAxNGJlNjFhMjQzZTY4NmUyNmNkNDVlODZkZTMgcHkzaworNTcwOTggYWYxODBkNTQ2ZWMyMjAyOGUzZTE0ZjMxYTYyMjNmMjFiMjAyODRlYSBweTNrCis1NzA5OSA4ZGJjOTgxZjA0MGI4YzRkNmY1NzU4MDg4YzZjNTZiODM3MWQzZDgyIHB5M2sKKzU3MTAwIDEyNGJkMjgyNDkzZDU1NmQzM2FhYTVjOTFmOGQ1NDA2MDk1NzE0MzAgYWxleC1weTNrCis1NzEwMSBkM2E4OWQ5ZDJmNWUwNmFmMTdjNWQ5MDk0YTk5NzlkZGY3YzliNjJjIGFsZXgtcHkzaworNTcxMDIgNDUxODNkMGIyMGE3OTdkODFmYTNkNGEyZjJjOWI5MTQ1NTg0MWJjYiBweTNrCis1NzEwNCA4OWEzY2JhMWNkNTI0MjMwN2Y0NjNkMGZkZTcyNGIyMWVkNjM5YWYzIGFsZXgtcHkzaworNTcxMDUgZjFhMmQ1MWYxY2FiMjg0ZjE2NzhmZmM3NTJjMGY0Zjc1MWUxM2EzNyBweTNrCis1NzEwNiAxODEwNGRiYTg1ZTMzNzNlODE0MGJjZDcyMDI0ZmI5NWFkYjUxN2ViIGFsZXgtcHkzaworNTcxMDkgZWNiN2IyZGQzYWY1ODAzZThjMGMzMzgxMDBlODEzMmE5OTQwMjk0ZiBhbGV4LXB5M2sKKzU3MTEwIDM0MTI0NjEzYmM0ZGRhYmZhNzExMjA5YWRiYjNmMmYzNTA2YjYzYjggYWxleC1weTNrCis1NzExMSA0NmY0ODBlMTE2NmM4NGE3YmZlZTNiMTNmOTNjZGEyNjlkOWZiMzdhIHB5M2sKKzU3MTEyIDBkZWJmOTQ1NWNkYzE3NzU4NDhkNzg5MDQ3MjlhMmVkMzM5MjFkNDkgcHkzaworNTcxMTMgYTZjNDg5MjVkZTUzYjA4NjBkYWY4NzhiNTNiNDAxMjE3YWUwNjQ4YSBweTNrCis1NzExNCAyMGFlYzlmMzQ1OThkMzUzOTExZDVkNjVjN2Y3NmI0N2E5MTk1NWUxIHB5M2sKKzU3MTE1IGEyODU5YWU4OWRhOTFhMWJlYjhhYzc3YTYwNmIzZWE1MGNlMjNjN2YgcHkzaworNTcxMTYgNDhhMzFiMGJmNTAxOGIzNjBmMWM4ZjkxMjU3NWRjOGNhODkwMDUyNyBweTNrCis1NzEyMCBiN2E1YmM2OWQyZWU1YmI5NDM3MWY5ZmY2ZjQ4NWU4ZDM4NmNhZmRmIHB5M2sKKzU3MTIzIDdiMzkxYTRlZjg5Y2UyZDEzYzI5ZDEyMTI5NmU1MzE5OWE4NWYyOGYgbGVnYWN5LXRydW5rCis1NzEyNCAxMmRkNjM3N2ZmODViZWQ3OWFmMWFhMzc0NzU0NzFmMzZmZDNhZDcwIGxlZ2FjeS10cnVuaworNTcxMjUgMjgxYjUxOGU0YmNjMjhjYTQzZTdlZDY0ZjA4Yjg1NTFlNDI5NmM5ZSBweTNrCis1NzEyNiBmZjVhZGIzMzc0YWRjZGVjYzU1NzUxOTE2NjhjMjg4ODE2YzdmY2RjIHB5M2sKKzU3MTI3IDIwNTZkODM1M2E2ODliNTE0ZmFjMDIxYTQ1OTg2NDVlODM1ZmE1MTAgbGVnYWN5LXRydW5rCis1NzEyOCAyNjA2YWVhYTg2ZDQwNjVkNGI1ZWNkODY3YzNkZDBmMmJhOGQyMDI2IHB5M2sKKzU3MTI5IGZjZjZkYzUxYWY1NDMxZjQyNDA1ZWIxYzAwMzM3MmQ1ZTk0MDlhZjMgcHkzaworNTcxMzEgNGM1ZWNjMmNjYWJkZDUyYzVlZjM5ZjQ3ZjM0MDgyYmY5MGU4M2ViYiBsZWdhY3ktdHJ1bmsKKzU3MTMyIDlmYzIxYzhiYWJiOTZjNzYzZGQ5MTRjZTBiZDliMmJjZGRhZTdjMzggcHkzaworNTcxMzMgNmY0OTIyODAzNDExNjZhMmE0N2FjYjMwMzI0MGZhN2MwMzIzM2VhZCBsZWdhY3ktdHJ1bmsKKzU3MTM2IDg2MTBhMWNhNjUwYjM0MmFlZjgwMWE0MzE5OGU2MGQ1YzBjYmFiMDYgbGVnYWN5LXRydW5rCis1NzE0MiBhNWU5ODRlZGE0NWEyMGNlNzAwMzg4YTUzMjc1MzJmNjcyZjg2ODM2IHB5M2sKKzU3MTQzIGUzOTQ0OTA5NWNjNWFiNmFmNjE2YWUwOTFkYWFkMjc0OGViYmRiZDMgcHkzaworNTcxNDQgY2M3YjViYzI5N2M0ZWQ1MmE3NTIwY2U3OTQ0YmM0OWQyNDQwYjc2ZSBweTNrCis1NzE0NSBhOGNhMTRjZWMxMWNkNjhjNjAxMGQyNGJiNmYwNGZiYzMxMjQ1ZjRlIHB5M2sKKzU3MTQ2IGM5MTY3MzEzMjFjMGIwMWU4Mzk5YmQ5NjMyYjM1YzY2MGYwZjQyZjcgbGVnYWN5LXRydW5rCis1NzE0NyBmMmYwZTk1YTc5N2JjNzdmZTJiMDM5NmNmNmE3NDI5OTY2NjVjNzVmIGxlZ2FjeS10cnVuaworNTcxNDggNTZkOGM4NzFkYzg2YjM5ZGJkZWVlYzk1MmY5Njg1ZTA2MTNlMzQyZSBsZWdhY3ktdHJ1bmsKKzU3MTUwIDljNGY1YjFkNmI5ZGI1ZmFkZDI4ZjFlNzE2ZTk0ZTU2YTA1M2IwZjMgbGVnYWN5LXRydW5rCis1NzE1MSA5ODY3NzY0NTY3OTEzNjVlMDdiMzI1ZmNiMjhlYWM1YjgwNmFkYTRlIHB5M2sKKzU3MTUyIDc0NDQ2NTA5ZjBmMjc2ZjAyYTY1YzAwMTg2ZGVmMGE4NDNlMmQxZTYgcHkzaworNTcxNTMgOTI1MTViNjQ5YjkyMjdlMTQ0NzYyNzY1ZDY3MDU5NDk5ZmYxOGU0NSBweTNrCis1NzE1NCAxYjRjOTU5NzRhN2RhNzJkZjg3OWM3ZGEzMjU4NjUxZGVkOWQ0ZmM5IHB5M2stYnVmZmVyCis1NzE1NSAxNzIxZmY1ZTI4NjRkNWMwN2IyMTEzYTFiYzU4Nzg4MmJlNWM1ZDdkIGxlZ2FjeS10cnVuaworNTcxNTYgNjg3NmFlOTE3ZmIxYmFjNzFiYzI5NjAxYjZlYjgwYjQ2ODUwMmU5OCBsZWdhY3ktdHJ1bmsKKzU3MTU3IGFkMDYzMjdlMWYzOWE3M2NjZGM5MzliZTAwODlhZmFiYWRlNzJhMDMgcHkzay1idWZmZXIKKzU3MTU4IGJjMzFkZmNmN2RmYTBkNDE0YzRkNWE0ZmRkNzUwZmJiZjIyMDQzZGUgbGVnYWN5LXRydW5rCis1NzE1OSAzN2Q3MDg1NGQyNTUyY2U3ZmE5NTUxMTI4YjBhY2UzNmE5YTU4ZTFjIHB5M2stYnVmZmVyCis1NzE2MCAzOGRmZWRmMWQyYWE4YTU2YmYyN2U4OWFlMzYxZGQ3YjA4NGQyNjU2IGxlZ2FjeS10cnVuaworNTcxNjEgYjgwNTQxMjUxZTBlZDFlZmUzOTJiYjhiZjJjZGQ5NjIzM2VhMjNiMyBhbGV4LXB5M2sKKzU3MTYyIGQ4ODU5MmRkM2E2MTA5MmFjNTFlNTg0M2QwYzJjMTQxYzA4MDRlNjQgYWxleC1weTNrCis1NzE2MyBjNTlmOTk0MjY4MmJiMWRjZWNlNzI5YzEzNmUzNGM5Y2YzYTJlNDJiIGFsZXgtcHkzaworNTcxNjUgZGZmYmZlNjA3Nzc0ZjA3M2ZmYzg5YzdlODZjY2M3NjMzNmExNTBlOCBweTNrCis1NzE2OSBlMGNjODMzZmRkM2ViZGU5NzI0MGJlNDIwMjZmMDQ2MTA4Zjg4Y2M2IHB5M2sKKzU3MTcwIGE1NGQ4NjZkYzdiNGVmZDJlYjdhNzc5MDhkNGNjOGY2YWUzMTA4MTMgcHkzaworNTcxNzEgYWYxMmE0NmRmNzM3YWQxNmE2YmM5MzRhY2UxOTFiNmUzYWFjYjlkNSBweTNrCis1NzE3NSBhOTMxYzYwMTViOTE3YTdmYzY3YjAzZTI0MzJiMDg3NDJhNTUwYmY5IGxlZ2FjeS10cnVuaworNTcxNzggNjk3NTBiMDk4ZWEyNDdlZDkzNzY0NmI3M2E3ZTJiZmU3MWVkNzE5YyBweTNrLWJ1ZmZlcgorNTcxNzkgMDY5NTBiZDA0ZTY5NjkyYzI4ZDRmMzE5MzYyMzM2MTdmNGQ0MzQ5MiBweTNrLWJ1ZmZlcgorNTcxODAgYWQ0Nzg4ZGY1MDRlMDk2NDFlMzk1NjMxYjgyYTVlYTg5OGVkNTJhMCBweTNrLWJ1ZmZlcgorNTcxODEgODVjMjJiNGQ0NDU1OWIzYzVmNDI2OTg3NGVjYTZkNzNjNzViOGM1NiBweTNrCis1NzE4MiBiM2NhN2Y1YjUzN2M1ZDcyYmZhMGY5ZmNmNjMxY2Q5MzEzNWQ2OTc0IGxlZ2FjeS10cnVuaworNTcxODYgODFiNDVjMGRhMmM4YjhhNjViMzEzZjIxMjcxZTNmMjU0NjBkMjcyOSBweTNrCis1NzE4NyA3NmUwNDk3M2IxNWRmZDBjZjgyMDZhZmRmYThjMTAwM2IzMTJhYTQ4IHB5M2sKKzU3MTg5IGVkOTdhOWQxYzM0NzM0NDEyYTI0NGQyNzRjOWMwNWE3NTdkYTc4ZDUgYWxleC1weTNrCis1NzE5MCAwYmM5Y2YxY2Y5NTkxODk4Mjk1ZGJkNmEwZDUyZDdkM2M1ZmNkNjFmIGFsZXgtcHkzaworNTcxOTEgOGRjZTZlMjg3MGU4MDkzZTU2M2ZiZjUxMGM4N2JhNWI4YzEwODlhNSBhbGV4LXB5M2sKKzU3MTkyIGY3OGJmNTg0Mjc5ZTZkZDczNzcyYzU0NDdkZGZlYzYzNTYzNjM5NjkgYWxleC1weTNrCis1NzE5MyAyYzUxYmU5OTA0ZGUxY2NlNDY4MmI3MDJlOWU1YjM4MGY0NTQxM2Y1IHB5M2sKKzU3MTk0IDdlNWVmZjg3ZDY2NGEwMDlmOTgzZTBhZmZmNTg5NTdkNDE5OTNjNjcgcHkzaworNTcxOTggZmNhMzU0MTYwNDU4NTE4ZGM5NzgyMmI2NTdiZWI4ZjBmMzFhZWIxNyBweTNrCis1NzE5OSA2YjUzMGUwMjliM2MzZDgzZmI3NWZhYWRkN2Y3MGMxMDRkZDIxNTZhIGxlZ2FjeS10cnVuaworNTcyMDAgOTViMzdjYWU0N2M0ZjdlYzE2NjMzOThiNGM1MjdkMjIzYTlhNjk1NCBhbGV4LXB5M2sKKzU3MjAxIDczOWQzMTA1MDk3ZmUwMjJlYjM0YTYxNDkzMTk2ZDBkMjk1NzNlNGEgYWxleC1weTNrCis1NzIwMiA2OTJmNTdhNWRjNzZhMTlhM2Y5NmJiMTg3ZTM5NGNkYjhiNmZlMWQ4IHB5M2sKKzU3MjAzIGQwM2ViNzc0NTc2YTNlNmU0OTE5MmYzOGEzOWY2OTBiYWFmOTdjOTcgYWxleC1weTNrCis1NzIxMSA3MDU0NjE1ZjM3ZmU2MDNhNjZjNGY2ZjAwODJkMzQ3ZGZmZWQ2YjRlIGxlZ2FjeS10cnVuaworNTcyMTIgY2Q0NTkxYjc1NGUwMTFkMzZhOGEyNTliN2FhZWVjZDhmM2ZjYzkzZSBweTNrCis1NzIxNCA1ODVkOGJlY2U4MjY3ZDA1OTk4NmZjZjdiMGFiYjI1ZDIzZWZlZDNmIHB5M2sKKzU3MjE1IDlhMmYzNzk0MWIyYjA1Y2I1NDEwMWE1ZmMwNzkyZDcxYTVkODI1NWMgYWxleC1weTNrCis1NzIxNiAwZjUwZTA5MWEzNmZlYzZiN2Y1NjRkZTIwMzE0YzQwOWQ2ZDIwYjUzIGxlZ2FjeS10cnVuaworNTcyMTcgMTUwNDdiMmFjZDNkNTU0MDkyOTgzYjliZGUyZmJlMjE4N2Q3NzM5NCBhbGV4LXB5M2sKKzU3MjE4IDA0OTkzZDk2ZTczODE2MzBjYjkwZmVjZGRjNGJmMDgxODQyYzYzY2EgYWxleC1weTNrCis1NzIxOSBjMjNkY2Q5NGRjY2UwMWI2MDRlMmFkOWMzZWYzMjYxMDFhOTI4YjVmIGFsZXgtcHkzaworNTcyMjAgMzY0NWYwYjk0OTA4YmJhZGJhNzM2NTNiNzYzOTBjMTI1OWZlZjNhZSBhbGV4LXB5M2sKKzU3MjIxIGFmNmE3MTkwY2FiY2IzYWNmOWMzMWI3MmZmN2U4ZTAxYWI2YjYzMDIgcHkzaworNTcyMjIgZTcxYzMyMjM4MTBmMjQ1YmUwZGQ1M2VlNmRkN2EzMjJjOWRkYTgxZCBweTNrCis1NzIyMyAyZjQ2NzkzMDExMzJlODVlNDhiNmVlNWQ4NTcyOTRkNDhmZmU3ZGU0IHB5M2sKKzU3MjI0IDVhYmE5NjQ2NGI4Nzk3ZWExMjAzZWY1ODg3YWU1YzA0M2YzNTc4M2QgcHkzaworNTcyMjUgNWMwODQ3MmNmYzM0NWM4ZjZiNTBmODNkMjJhMjg5ZjBjNjkyZjI1NCBhbGV4LXB5M2sKKzU3MjI2IDk1NDJlMmU2ZWYwMmIyZjhhN2M3M2NmN2Q3ODU3MWM0YjNmYTBkNDQgYWxleC1weTNrCis1NzIyNyA0M2IzNTRhOGY3NzNjZjUyN2IyNDcyYzQxMzk0N2U5N2U5YTQ4ZmJkIGxlZ2FjeS10cnVuaworNTcyMjggZDBmM2QyOWI3MDhkMzA4YmEwZTY0MzJhYzBlNjBhYmU4M2IzODRmMSBhbGV4LXB5M2sKKzU3MjI5IGRkZmY1MjFhYzdmMWE5MTE2MDU1ODNiNTc2NmMwZjc0N2I4MmFkZTIgbGVnYWN5LXRydW5rCis1NzIzMCA4ZDdmYThhNWE3ZTM4ZmU1YjYyYzIwY2Q1MzdlNWY5OTEwMzBkNjgzIGxlZ2FjeS10cnVuaworNTcyMzIgMmI0ZmVlMWQ0ODYxYWMzY2I4MWY4ZjMwNzg4MTRmYWRkNjRiODk3ZCBhbGV4LXB5M2sKKzU3MjM3IDQ0NzRmZjEwYmIwYTIyYjk1YWJlZWM4ZWQ1NGNiZWVmNGU1MGQ0OGIgcHkzaworNTcyNDQgYWI3YTZlNzRiYmYyMzgxNDY5OWVjZjQzMzQ4Y2Q0YTAzNmE1Nzg5NiByZWxlYXNlMjUtbWFpbnQKKzU3MjQ1IDRmMTEyNTU5NThiZTlmMjQ3NjljNWQ2NWIzODFiM2JjYmEyNzYyZTEgYWxleC1weTNrCis1NzI1MSBjMDQwZGJiNjlkZjcxYzkxMGIyNzE0MjM3MmE3NjQxYjU4NjdlYTUwIGFsZXgtcHkzaworNTcyNTMgZWU5ZWJiZjVmM2RjOGIwMmQyNWI5YjQ3ZjQ3NGYwOWU2ZGI2YmM4YiBsZWdhY3ktdHJ1bmsKKzU3MjU0IDYyZWVlNzlkZTkyM2FjN2Q0YzExNmU0ZTljMzUzNzZjMGYxZTYxM2QgbGVnYWN5LXRydW5rCis1NzI1NSAxZWZlOWIxMGM0YTZmMzJhYmE2YzU0ZWRjZTYwOGMyYjk2NmRkNTU4IGxlZ2FjeS10cnVuaworNTcyNTYgZmFjZGQ3NGEwYmRkMWI3NGQzMzIwYzgyMjBmYjk1ZWY2OGE3YzI0MSBsZWdhY3ktdHJ1bmsKKzU3MjU4IDViZjY4ZmM3MzkyM2E5Njk4N2I3MjBmYjQyNTFkNTAzZjQ2ZWU3MTggcHkzaworNTcyNTkgZjMxODFlOWZkZTRkN2EwZTViNDY2M2UzMzJiNTgzZTVlZTUwZDM5MSBsZWdhY3ktdHJ1bmsKKzU3MjYwIGRlNmYzMGM2MjczMDU0MzcwNzJkMmE5MjVkZTRkYWZjMDNiNjk2NDEgYWxleC1weTNrCis1NzI2MSBkOWUzN2QyNmY3OGU5NTkyMzVjODNlMjY4OGJlZjE3ZTNhYzNhMTMzIGFsZXgtcHkzaworNTcyNjIgNmQyNTI4MzhkMjMwNjM5N2QxYjA3YWRjMGU4OTEyMzU1YTYwYzNhOSBhbGV4LXB5M2sKKzU3MjYzIGI5Mzc5MmNlZDllODBmMTY2YmFkMWQ4ZWYwMmI2N2UwMmQyNGFkY2UgYWxleC1weTNrCis1NzI2NCBhZWNmZjllMGVlYWU0ZDlmODQ3MDM2NzE1OWY5NWFjMGFiNGIyMjQzIGFsZXgtcHkzaworNTcyNjUgNjA1NGQ3ZDIzNDlmMDQ2MjQ2YTFmNTQxNDEzOTRmZTIxNGU2YzE5OSBhbGV4LXB5M2sKKzU3MjY2IDIwODExMTYxMjVjZWE5ZjU2ODJkYzBmZWM0YjZmNTU1ZjIyYjlhN2YgcHkzaworNTcyNjkgZTc2OTZmY2UzMzc2MTBiYTNkZTFhOTQ5YTNmYzMyN2UyNjRlNmUwOSBweTNrCis1NzI3MyBhMDNmMzc4YzNiZjdiZjJjODFjZTVkNmE4OTMwYTU1NmU0MThiNzQ3IGFsZXgtcHkzaworNTcyNzUgYzk0N2EwNDc2OGU0NWEyMzExZGMwZGFhMWQyNjE0NjUyNWVjOWQ2YSBweTNrCis1NzI3NiBlMzFiMzg3ZTZkNzc1YzEwNWFiMGRkZTkwMWIzYzllNDg2ODRlNjEwIHB5M2sKKzU3Mjc3IDAwODFkYmFjYjdhYTYxMjJjYzNlMzU2OGRlNjBkYmIxYjZkNTMzZjYgcHkzaworNTcyNzggZDgwMGE5Y2RhYjc2NDY0MTM4ODBkNjI2ZjFkNGY0MzA5NzBiYzA1ZSBweTNrCis1NzI3OSAzYjRlMzllODMxOTMyMTJjM2U1NjYzYTE3ZDM5MDg4NjljMTBhY2MwIGxlZ2FjeS10cnVuaworNTcyODAgODRjNWMwNTI0ZDNjZWY3ZGNkODI2MWZiOWNiZGFiMzI1MzhjNDRmMiBsZWdhY3ktdHJ1bmsKKzU3MjgxIDI2NzNjZGVkODg1NTQ1MTBjMDBmYmQxNTNlOTdkN2NmMmI2YTRlZDggcHkzaworNTcyODIgNzgyMzcwYzkzNTc1OGU2NDMzNGM0YjNlMjA5ZTFkMDgwNTM0YjQxMSBweTNrCis1NzI4MyA4YmFkODcyMmYwZTY0MjhkMmFiN2EwOWNlMWM0YTc3OTY0YzEyMTU0IHB5M2sKKzU3Mjg0IDA5MmYwMmNmMDE4ZjlkOTM3OTAwMzAyMjhjNDI4ZTZkMmRlYzdhODQgbGVnYWN5LXRydW5rCis1NzI4NSAxYmYxNzg1NWU4ZTg1ZjFmMzc2MmUxYjEyNWJhYzU1NmZhZGY4YzhjIHB5M2sKKzU3Mjg2IDhiNjQwMGY5NzE2ZmVlM2RiZjk0YjgyMmViMDE1NmMwNDBlMWE3ZWEgbGVnYWN5LXRydW5rCis1NzI4NyA1YTIwZWU4MDU4MTk1OGIwMTVjMjkzZmM5MzEzZDc1NzdjMzY2OTA0IHB5M2sKKzU3Mjg5IDBiMDYwNjk2NjBjMjJiZWMyZTdkNzQ4NTk1Yjg5ZTQ5NjA3YjNlMjUgcHkzaworNTcyOTAgOWU4MWIyMjY4OWQyZDE3ZGMzZDIxNWE0ODE0YmI2OGM2N2UyNmRiMCBweTNrCis1NzI5MiA2ODhjZDQzOThmNDQ2ODU2MDZhMzQyNjI4MmZiODFhYjRiM2ZlNjE2IHB5M2sKKzU3MjkzIDUwOThjNjg3OTA5MTZmNGRjMjdjY2IyMDk2MTMyNjRkZGI4YTcxZWIgcHkzaworNTcyOTQgNTg5MTc1MTRlNDIzZWNmMjFmMWFkNmRiN2M2MjJjN2IzNDE2MGU3NyBweTNrCis1NzI5NiBhYWQxN2IxYWIwYzkyZGIzYmE4MWZiZTcwNDVmZGViMzUzYmZiMThhIHB5M2sKKzU3Mjk4IDJlYzE2YjZiNGQwNDQyMzZiNTg5OGE0N2Y4Mzc5MDQ1MGRmYTJlYjMgcHkzaworNTcyOTkgZTRhZGUxNmE2OTRmZjU0NmUwYTUzZWE1ODg3MmU2YWIzZjc0YmUxYiBweTNrCis1NzMwMCAyNmIyOWY3YjhmZmQ4ZWY5ZmFhYzNhODA4Zjg1MTNmYmIyN2U3MGE5IHB5M2sKKzU3MzAxIDE5OTUwNGZiOTFjNTgwZTZjNmFmYWRmM2RkYzM5ZmZmNWRhNGU2YWIgbGVnYWN5LXRydW5rCis1NzMwMiA3ZmUyODQ4ZmQ0MWQ3NDZjYjg5NDg0ZjAwYjE2Yjk2OWQwNzFlOTY4IHB5M2sKKzU3MzAzIGFlODNlZmI3MzUwNmQyNTdlYzMxM2FhNzAwZmUwNDQ4MzU3NTQ0NDIgcHkzaworNTczMDQgZWFlMTBkOWM5YzRlZWRiNTE5ODEyMTg2Yjc0M2RkYjllZjUxZjJkZCBweTNrCis1NzMwNSA1MDZiOTE3ZDIzNjNhODcwZmM2MDE2NTFlYzc4OWEwOWMwYjU2ODE1IHB5M2sKKzU3MzA4IDMyODQzMDdhNzM1MTlhOWQ1YmY0NTcyM2IyMjgzNWVkMmY3NDYyZTggcHkzaworNTczMTAgZjM0NzZlOWJiZTZhYjM2MTA2MDNmMzkwOTAyNjI4NTRkYzY0ODBkMCBweTNrCis1NzMxMSA3ZjRkOTNlMDI5NWNhYzViNWZkMGViY2U3OWNiMDU1NmYzMmI2MzM2IHJlbGVhc2UyNS1tYWludAorNTczMTIgZmE5YTQwZWYwNzgwZGQ3N2ZjY2FjN2Q3YjhmODE4YjVmNWRiOTIwNCBweTNrCis1NzMxMyAwNmRlNjJmMzNjMzc3ZDYzM2ExYmZjNDA2Y2M4MjVkYWFkYmE1MDY1IHB5M2sKKzU3MzE0IGE5YTRjZjkxY2I3ZTdiNWNmZWFiMTVkYWJiMzBhZmVkMzEzZTJmZTkgcHkzaworNTczMTUgODBiYzY4ODUwYTA4NjBkYjFjN2VmZGMxN2ExMTVlMGRmNjc5ZDgzOCBweTNrCis1NzMyMCAyNDgwYjg2NGJlMDM5N2E2MDVhOTY4MTI5NTI2M2E3NGM0NmEzMzA0IGxlZ2FjeS10cnVuaworNTczMjIgZGUxYmFjZTgxZTZlZDJhNGU1M2I4OGEzYjZjZTg5NjE4YmY0ODk5ZCBkZWNpbWFsLWJyYW5jaAorNTczMjQgOGU4N2Q5ZDZlODEyNzVjMTI0ZjVhN2IxNjA4ZDJiNTEyYWUwYjgyMSBsZWdhY3ktdHJ1bmsKKzU3MzI1IDdhNzVjZDI4YjEyNWQzYjZlYjk5M2FjNjJmMDk2OTE4NmYyODgwNDYgcHkzaworNTczMjYgYjM0ODU1MGEyYmZjNjg4ZDZhYmU3YTQ3ZDM2YTIwOWE4ZWM5NmFlOCBsZWdhY3ktdHJ1bmsKKzU3MzI3IGJjYmRjOTVkZmJhOWFhNTQzZjA0MTNlZTM5NzM1YTk2ZjZiMGEyOTYgcmVsZWFzZTI1LW1haW50Cis1NzMyOCA5MDg3MzM3ZjNhM2Y4OTkxZGZlMTJmNzE0ZDhlM2FhYmZjZTAzNzhhIGxlZ2FjeS10cnVuaworNTczMjkgYTkxMWNkOWQxOTg5M2JlOGY0ZGY4OTQ4ZDM5Y2JjMDdkYTcwYzkzNyBweTNrCis1NzMzMCBkZGVmYmRiZGJjYjUxY2UwYWIxODdhNTI1NWYzMzkxNGRjZGNlMTQ4IHJlbGVhc2UyNS1tYWludAorNTczMzEgYWRiODNmNGFjNGNiZTVlMjVjMGEyYWNlZmFjNWM2MjFjMTJkNTU3YiBsZWdhY3ktdHJ1bmsKKzU3MzMyIDcyOWZlOTliNDBhNTcyZGVjOWVmYWNhZjE2YzNjNDVhNmE5ZjNlZmMgZGVjaW1hbC1icmFuY2gKKzU3MzM0IDRlZGZjNTliNzJiMmI0ZjFkYzljM2M4ZThkMDRmY2U3MjRjZmQwMDMgZGVjaW1hbC1icmFuY2gKKzU3MzM1IGFmOGZjNDZkNGI1NjE3OGVmZjM2MjAzMzAwNDU0NjIyNjFjNzhhMmUgZGVjaW1hbC1icmFuY2gKKzU3MzM3IDcxYzY4ZGUzYjFjNTc0ZDhhYWFhNmM3YjAxY2Y0NjA1ODc3ZTY4MjIgcHkzaworNTczMzkgZjUzZjFhMWFjMDE2NDBmOGIzYzNiYjgwN2MxZDdlMWQ2ZjA0MGNiZCBkZWNpbWFsLWJyYW5jaAorNTczNDEgYTJjYzAxOGYzNzAwZGQ0MTlmZTNhYjRmNjNjNDdjMDllYjAzODM3YSBweTNrCis1NzM0MyA5MDgwY2M3NmRhOThmMGUxMDhmMWVlOWFjOGZmNGUxYTQ0ZjE0NTYzIGxlZ2FjeS10cnVuaworNTczNDUgZTFjZGQ2ZWU5MTBlN2RiMjNmNmI3YTM4Zjg3MDE2OWU2ZjUzN2JjMCBsZWdhY3ktdHJ1bmsKKzU3MzQ2IDAwZjhiMjQ4Mjc2NGNmNmNmY2I4ZTIyY2I0Mjc2Nzc4MTVhOGRiZmUgZGVjaW1hbC1icmFuY2gKKzU3MzQ3IDAzMThhYmNmYWYzNmE2ZmQ2ODRmYjgxMGFmMTc2MTRlY2ViZTQwY2MgbGVnYWN5LXRydW5rCis1NzM0OCA5NTIwNTc5Y2MzMGJmZGNhOWE3NzM5N2VjODM3MjFkZWU5NmEwMTNmIGxlZ2FjeS10cnVuaworNTczNDkgODE4ODZlMDVmZDQwMTZhYmM0ZWJjMGVhODFkYWU0MjA3NTc4Mzk0ZSBsZWdhY3ktdHJ1bmsKKzU3MzUwIGExNTY1NDA0NTk5ZTVlZDg2ZjY4MDlkZWU4OGVjMDY2NGI3MDk0NjkgZGVjaW1hbC1icmFuY2gKKzU3MzUxIDI2NTAwYmEwOWY3MGM2MjA1Nzg0YmM4YTFjMjBjNDFjMGRiZmE0YWMgbGVnYWN5LXRydW5rCis1NzM1MiBlMjA0MmVjMzMwYTQ1NTUyMjlhMGYxYTI0ZWViYzI4ZWYxMjVhOWYyIGxlZ2FjeS10cnVuaworNTczNTMgOWEzNDdiYTE3Y2FiMGU4ZjhhZGIyZTAwOWExZDJlODU4YTUxYmQzYiBsZWdhY3ktdHJ1bmsKKzU3MzU0IDNlZDc4MTRjY2EzNjZkMDlmN2UxZTZiNTRlYzQ2ZGNiODMxYWYwNzcgbGVnYWN5LXRydW5rCis1NzM1NSA3N2NmMjgwOGVlYTYzNzUxMWU2MTZmMDUwMjZhOTU2ODU2MGI0MWVhIGxlZ2FjeS10cnVuaworNTczNTYgY2U1MmNkNzFhOGQ5YTI3YzEwYzVhOTA5ZTEzMWQ4NzZiZTMwZTRhMCBweTNrCis1NzM1NyAyMDczZWEzMDA1YTc4NzllYjU5NzA0OWQ0N2U3ZGRmNmJiNjNjZTUyIGxlZ2FjeS10cnVuaworNTczNTggNzkyM2JmZjE5MjEyYjAzOWMzNWE3ODE2M2VkMTU2YjQ0NWYxN2Y4YSBweTNrCis1NzM1OSAwNzdmZTc4NjBjYzliMTg2ODU1ZjU0M2YxYTI2ZTQ0NWRkN2E3YzMwIHB5M2sKKzU3MzYxIDFjOThiNDQ1ZDg0NzA5OWMyNjUyYTc1N2Q0MzUxNGY3MGQ4MjUxZjAgcHkzaworNTczNjMgNDJiMzljYjUzNmQ5ZTRiNTlmNDk1OWY2OWZlZDAyOWVlYjgwZDdlZiBweTNrCis1NzM2NCAwYjYyNTM5YWNmYjhkZWQ2NzI1MWM3NTQ4YzY2YWM4YzZkYjM0YmI4IHB5M2sKKzU3MzY1IGU3NDRhMjBlZDhhNmFkYmYwNDYzMmI3YjI2MmNhZTUwOWUyNjUzNWYgcHkzaworNTczNjYgZjk0YzY4ZmNmNzlkYzUyNjJjZTVjNGEzYTAwOGVlNzZlNDE4ZDJjNiBweTNrCis1NzM2NyAyNzNhY2UzNTllNTVlNmNiYjU2NzA4YTRiYjM2ZDg1NDk5MjAwY2NmIHB5M2sKKzU3MzY4IGUzZTA2YjM4OTQwNmE5MGEzNGU1OWQ3NDc0ZmE1NmVhMWJkZDY3NzkgcHkzaworNTczNjkgNTY3YzkyM2NiMWM2MWQ5MmU1Yjc0OGI5NDI5ODU0Yzc2YjU1YTk2YSBweTNrCis1NzM3MiA4M2M4NDQ4YzZkZTQxMTVhZDkyMWVkMGRjODI4ZTU1NjAzOWVkNGE3IHB5M2sKKzU3MzczIDY2ZjczY2U5N2IzMmQ3MTRhMDk4OTc5ODk5YjZhZDZlY2U3NjZmNjEgcHkzaworNTczNzQgYjYyNmI4NGI1MDcwNDUxMDFlMmMyMWJmMjAwY2VjYzJhZjRkYmU5YiBweTNrCis1NzM3NSAxOWRhNDFmYzExN2EwM2FkNzg2OWVjZTk3YjFmN2UzNDgyYTIzMTAzIHB5M2sKKzU3Mzc3IGIxOTdjMWMwNGJhMTU4NjkyMTI0NDUyZDlmOGIwZTZkMThjNDAzMmQgcHkzaworNTczNzggMDVmZTAyN2UyZDgwOTgyODRkZDg5NzhiMzI5YTk5OTUxMTMxMzc0MCBsZWdhY3ktdHJ1bmsKKzU3Mzc5IDMxNDE1MTVmNmM0NWEyOGVjZDFjNjJlN2E3NmMzOTYxOWMxOTc2NWUgcmVsZWFzZTI1LW1haW50Cis1NzM4MCAyYjliMjE0MDI2NTA0MGQwMWI2NTQ0NTEwMWU5ZDQ4MTE0MDljOTY4IHB5M2sKKzU3MzgxIGQzYmFhYjIwOTYyNjQ5ZTJlZjQyMzlhZDQ3N2ViZjQ5ODliZDMzMGYgcmVsZWFzZTI1LW1haW50Cis1NzM4MiA3MzIzMzMxODc2ZGQ0Mzk4ZGMyZTFjZGExYzU1NTNkMDVhM2Y3ZGZhIGxlZ2FjeS10cnVuaworNTczODkgODkwMWE3Y2U2YzA3NDViMmVjYzgyNTNhZjZjNzI3NWQxZTllZGRkNSBsZWdhY3ktdHJ1bmsKKzU3MzkwIDNmYmExNGVjOWFhZWI0ODNjYTlhMTBiNGRjYjU2YWFjMjQ2MmJiOGUgcmVsZWFzZTI1LW1haW50Cis1NzM5MSAyYzQyMmE0OTcyZjFjOTU2MDZkZGZlNmZjZWYwMGQxM2ZiYzM2ODhjIGxlZ2FjeS10cnVuaworNTczOTIgZDc1MTdjMzA2NzkxNDVhYTBjY2Y4NmYxNmU2ZDgxMmQwOWE3NDQzYSBweTNrCis1NzM5MyBjM2I1M2UwNzRlZDExYjNiOGFkZDJlNmRhOGU3ZWJmYzAxYzNiODE1IHB5M2sKKzU3Mzk0IDk0Mjg2MGY4Y2Q5N2U5YzU4M2E4ZWI5MWZiYThmNDNkNTFlNmJiZDMgcmVsZWFzZTI1LW1haW50Cis1NzM5NSA1OGYzNWRmMGY2ZjQ4ODZkNDg5YTcxMDRjODg2NzRiZjU4MWU3NzU0IGxlZ2FjeS10cnVuaworNTczOTYgNGI3MDM2ZGM3NmQ1NTkyMTk3OGQ2ZDA2MmMzMTFmN2JmOGIxNzk0YiBweTNrCis1NzM5NyBlMjU3OGYzMDQyYjJkNTI3NTY0Y2I3NTVlODVkYzZhM2MwZDI4NmRjIGxlZ2FjeS10cnVuaworNTczOTggOGIxYjMyNzI1NGMwZDM1MTk5ZGZkMjFiMGIzOGZmYjE4N2Y5MWJlOSBsZWdhY3ktdHJ1bmsKKzU3Mzk5IDI1NmE0ZDNjNTgxZjcyZDY0ZWQzMzRlNGQ0ZTIzYTFlYjk1NmQ0MjIgbGVnYWN5LXRydW5rCis1NzQwMCBmNzk4YzM2NjI3MGMwZmJjZTM2ZDAzYjE0OGM3NDgzMWJiMzE4M2U5IGxlZ2FjeS10cnVuaworNTc0MDEgOGM1Njk1Njk3MWFkZTNlZDY1Njg5NzJlN2MxMjgzNzg0Zjc2NjgxYyBsZWdhY3ktdHJ1bmsKKzU3NDAyIDMwMjVlNjc2ZTY2OTE4MzgxMzkzZTM1NGUzMWE2YTY0MDMxM2JmNGIgbGVnYWN5LXRydW5rCis1NzQwMyAwNjZkMzlmYWQ0MDhlMWQxZDU3OWUyYmYzOGU1MzRhMDgyNDIzYzBiIGxlZ2FjeS10cnVuaworNTc0MDQgNDhkOTFmMTU1OGEwMDlkOTVlNWE2MzZmMzlmNjk2NWMwMWExMDU2YyBsZWdhY3ktdHJ1bmsKKzU3NDA1IGM2ZDYzMjFkYzdmOTQyYzE4ZmY2NDg4NmYxMTQ1NDM5YmRhNDcxYjcgcHkzaworNTc0MDYgNzIxYzNlYTEzZDg0YTNjMDU5YTEzOTNhOWUyYTNhNDQ0MzExMmVlZCBsZWdhY3ktdHJ1bmsKKzU3NDA3IDYxMjRiMmVmNjUxMjAxNjE5ZTQwZDY3YWIzOTU2NTUxNGM2MGY2YzAgcHkzaworNTc0MDggYTZlNWIzODY4ZjNkODI0MjQyMzBjNGE3MmNhM2Y1ZGYwN2YwN2NhZiBsZWdhY3ktdHJ1bmsKKzU3NDA5IGU0MmU3ZDAzMTczYjMxNDNiNzVlNWQwMzM4N2UyNTcwN2FiNDA4Y2QgbGVnYWN5LXRydW5rCis1NzQxMSA2MWZiNTk3OTE3ZDFjZjk3NmJlYWIwMGUwN2I5ZWFjZWE3MjkzY2EwIHB5M2sKKzU3NDEyIDg0NjE4YjIwNjRjMTZhYzM2M2U1ODkyNWE0MmI3YzEwMTEzYzgyMGQgcHkzaworNTc0MTQgNmNmNmI4MzFhYjM2Y2UwNmUwYzU0ZmZiMThiMTczNWMyYWQzNjc4OSBkZWNpbWFsLWJyYW5jaAorNTc0MTUgY2YyYjM3YjkwYzY2ZjU0OTQ3YzZiZjExMTRiZTdkMDA5OTgyMDIwMSBsZWdhY3ktdHJ1bmsKKzU3NDE2IGUxYTM2NTU5ZDhiNjg5NzhhZDY2YzI4MDNiNTQ2ZWJkOTdjY2M3MzAgcHkzaworNTc0MTcgOGU5NzcxMWZhZGMxNDcwMDcyMDU0MTYwYzNjMGJiNzk5YWM1ODFhZSBkZWNpbWFsLWJyYW5jaAorNTc0MTkgMzgzNjIwZTYyZWU2NGM0ZTRhMDdjYzJiYTUyMDA3NzliYzE3Yzc4MiBweTNrCis1NzQyMSBiMGE3MWJmZmEwYTFmNzEzNmYzZWM4NzBkMDk4MzY4MWJjZmE5Yzc2IHB5M2sKKzU3NDIyIGQwMjYxMGIwYTlmM2FjZGM1ZTYyOTcyMjc4OTQ4ZTlkMzgzMzJlNjUgcHkzaworNTc0MjQgOGU2MTcyN2RiNTI5YjViMTY4ZDczZWExMTYwODEyNGE0YjM4MDliMCBweTNrCis1NzQyNSA0MWRhNDljOTdhNTllYzZmODI3MTYxZGE2ZmNiN2U1NWVhZjU0YzZhIHB5M2sKKzU3NDI2IDAxZWU2MzExYmE0Njk0YzJjNTdjZDM4ZWUxMmI4ZjQzNDVhZTA3NTUgcHkzaworNTc0MjcgMDk5NDk1OGZmZDRmZDRkNzI4YzExZjVmYjUyYmZiYmM5Zjk5MmNkMyBweTNrCis1NzQyOCA2OWI4ZTI5NzY1NTY1YTc0MzFkZGI5Yjc4NjVjMmU5NGQ4YmYyYWY5IHB5M2sKKzU3NDMyIDNjZDYwZjc0NGY4ZTkzYjYwMGQ0Nzk4MzMzOGQwMDU1NDM2MDU0MjggcHkzaworNTc0MzMgM2NiNWRlZjE4NjVkYTY1ODBlZTJiYjg3NzdjZDJhNTg4ZTE2MDE0NCBweTNrCis1NzQzNCA3OGY3ZWQ3ZDgwNjQ5YzExNGFlMDc2MDdiMDc5ZDM0ZmVjNWEwZWQzIHB5M2sKKzU3NDM1IDU5OTUxNDI4OTIyNmUxYTQ5OTBhYThjNmU1ZWFjYjBhMDJiNmQzNWQgcHkzaworNTc0MzYgMDBlMTI4YjUyNzJmNTVlYWY2NzIzOGQyNGMwNzk4NDc3MTZhNTM2NyBweTNrCis1NzQzNyA3NzZiOGJkNjhiMzAxYTA2NmI1MDNiZmU5ZDI0ODQwNTYzMzA4Mjc1IHB5M2sKKzU3NDM4IDJjMmU5MDU4OTRhMzgwYzY1Njg4OWE2NjJkNTIyMWEwMmM0NmMzYzIgcHkzaworNTc0MzkgYTk5ZWM0YmVmZGE4YWRmZjUyNmVhYzA0MGM3ZGQ5ZmJkZTZhNjI5ZSBweTNrCis1NzQ0MCA3NGI5OTNhOGFkNmZlZjczMTk0MzY1OWExOWMxMGI4MTUxMDQ3OTk3IHB5M2sKKzU3NDQxIDNkNWQwOWI0NTFiNjZhMmY4NWU0YzcyZGM3MWExZmRiYmFkZmI4NjAgcHkzaworNTc0NDIgZjgxZDk0YzA1YTBlY2RhNDFkZTBkOThhYzRlNzlhMjZiOWY5ODM3YyBweTNrCis1NzQ0MyA4NzJjN2MzZjBhZjM1NDAwZWZjNTA2ZmI0MmYwMmNhMDNhYWQwODBmIHB5M2sKKzU3NDQ0IDUzNTUzMzc3MDllMTA5NTBiYzZlMjU2Zjg1YzQzYzg4MjE0YWI4N2UgcHkzaworNTc0NDYgZmI1OGZiM2JkZGMxOWI5ZGQ2OTI3MWU4NTk3MzY1NTgwZGIzYmJiYiBweTNrCis1NzQ1NSAxYjQyMGU2ZTAwZWIxNjRhNWZkMDA0N2FkMzAzMjA5NTBlMzIzMmZlIGxlZ2FjeS10cnVuaworNTc0NTYgMjJiYmFmYTY5MzNiZDlmY2QwMDI3OWU3ODUwZjMxMTY0ZmM5YTZjZCBsZWdhY3ktdHJ1bmsKKzU3NDU3IGJiMjg4ZTA0YjhlNTg4NDZjOWMzYjEzYWY3OGM1Njk5Yzc0NjliNTMgcHkzaworNTc0NTggMzAyYWVlZTMyZGE4M2E0OWZjNzQ4ZWQxMjA2YTY3ZDcyNDUyMTViZSBweTNrCis1NzQ1OSBiZDkzYWMzMGM3Nzk1MmJmOWQyMzc2NzE2MDhlYjhjYTc4Y2Y3YTgxIHB5M2sKKzU3NDYwIDE4NGY4MDBmZGJmNjc4NWZjZGQ0NjVmZDdmZjVhMGYyYWQ3ODUwYzMgcHkzaworNTc0NjEgNTQzZjJiYTk3ZmFiOWQ3ZDFlNjRmZTE2M2U2NjAyYjI1ZWY5MDk1YSBsZWdhY3ktdHJ1bmsKKzU3NDYyIDc4MzQwY2NlYTE0YmU0MmU3MGYzNzMyMGExMmZjMDdmOTliNTZjNWYgcHkzaworNTc0NjMgNmQxM2UxOGY3MDZhZTM5NjlkZmU5Njk1YzBhMDk4NWM2MWJhNWNiZSBweTNrCis1NzQ2NCAwOGI2Mjc4YWExZjQwOWZjYWIwY2JjY2NkZjNmMTgzOTU5MTI3ZmFjIGxlZ2FjeS10cnVuaworNTc0NjUgMjQxMDUzNzM5NzMzMzI0NjNhZDEzNGRhZWZiZGUzYzRiODQ2MjE3MSBsZWdhY3ktdHJ1bmsKKzU3NDY2IGJiMzM2YTY4YTQ3ZjI1MzQ0NmJkNzM3ODliNmQwZDEyOGIyODE5NjUgbGVnYWN5LXRydW5rCis1NzQ2NyA0Y2QxMWU4MjU2NDQ4MDllMWI2NjE4ZmVlMGI1NzRhMzA5NGUzMzU2IGxlZ2FjeS10cnVuaworNTc0NjggY2FmZTFmNjUzZGIzNmI2MzFkNDY2NzNmMzI3NzNmNjAwMGU4NGI5NyBweTNrCis1NzQ2OSA2YTE4MWFiZmM4YTQwNzBjZjNmMzE0MDk5NTI1NmYwMmQzZWI0YWQ4IHB5M2sKKzU3NDcwIDIwZTFjYzc0ZThjYTUxZjI1ODg2YzlmNDY1M2U2OTkyZmY1ZWEwNDQgcHkzaworNTc0NzEgNWE5YjdjMmYzNTg5ZDk1MTA1Mzg3NjVmMDVmOTAxNzU3MzA3MDNjZiBweTNrCis1NzQ3MiA3OGNmMmJkYTg4NTcxODgyZmM1ZWMwYTVjMWI4NzYxMmYyZTBlMTZjIHB5M2sKKzU3NDczIGVmZmVlYTdjZjg5ODQ4NTFiNTI4MjU4ODQ2MmI0YjZkNWQyYmM3YTYgbGVnYWN5LXRydW5rCis1NzQ3NCBkOGE2M2I2MzI3NDEyZjhkY2ZmNDA5YWJhZmYxZmJhMmY5MzU0YjBkIHB5M2sKKzU3NDc1IGMzMWMyMDdiOGM4NmQ1NTc3YzY3OTAzNWQ3NjE3MGE5ZGFhMTc1ZWIgcHkzaworNTc0NzcgMDU0OGRmNzgxMGEwY2I4MzNjMTJhZTVlODQyODQ2YjYyN2ZlNTcwNyBweTNrCis1NzQ4MCAzYTY4OWY4OGM4Mzg1ZTExZDMwZTg5NGExYWFkODU1NWNkODAyNzFiIGNweV9tZXJnZQorNTc0ODEgYTliM2NlMDY2NWMzYTM1ZDMyZjkxYzUzMDIzOGJkYjhjNGY4MGRjYyBjcHlfbWVyZ2UKKzU3NDgyIDY3M2NiYzg1ZDhjNDBiYzIwZmUwMTQ3YjE5MWU4MDA5ZWI0YjIwMmEgbGVnYWN5LXRydW5rCis1NzQ4MyBlYjE5ZjJmYWVlYTEyYjIyZDc1MzQ2M2M5ZWJlZGMzYjY1YzgzM2MwIGxlZ2FjeS10cnVuaworNTc0ODQgMzRlNmZhNzhiNjQzMjg4NTJhMTkyOTVhM2MwNTU4YmI0MzRiZTJkMSBsZWdhY3ktdHJ1bmsKKzU3NDg1IDZlNzM1OTEwNjcxODFhMzMyNTM5MTYzNzI4MjlmYzBhZDkxMWZiN2EgcHkzaworNTc0ODYgMzE1MmRmNzA1MTdhNmYxMjE0N2E2MWM0Nzk3Y2VkY2NlYmY4ZjFhYiBweTNrCis1NzQ4NyBiNTVlN2M1MzI1M2MwZDExNDkzYzkxZTY5NTdhMmQ2YjA3ZDdlOTgyIHB5M2sKKzU3NDg4IDdmZmFkZGQxZGUzMDUwYzRkZmM1NDc0MzRlZTQzM2RlOWVhNDcyZTcgcHkzaworNTc0ODkgZWQxZDM1MTE4ZWQ4ZjBmNDE4ZTY0MTgzY2I2OWIwOTU2ZmM2M2RkMyBweTNrCis1NzQ5MCBiYmM0NDMyNmI1M2Q2OTllMGNjOGI0NzhjYzJiN2FlYzFiYzc3YzMyIHB5M2sKKzU3NDkyIDAyN2M3ZDA0NGNmZDdjZDhkNDM0NjdmMjg4MjQ4N2JkMTJlNDI0MDggcHkzaworNTc0OTMgNjM4MGY4OGUzZGVlZGIzMmQzYWNhOTY3NDVkNWY3YmIzMWYzMWJiNiBweTNrCis1NzQ5NCBmZWQ0ZjcyYjA0Y2I5ZDk4MjY5Nzg1MTMyYWZkNTYzMGYzYTcxOTRiIHB5M2sKKzU3NDk1IDEzOTBjMTFlNjQwYjFhNmNjZGQ0ODZlNzcwYzBjODhiY2EzNzkzZjkgcHkzaworNTc0OTYgODI0YjlkNTJlMDA2YmNhYzliZTVlYWQyNzJjMGM3ZDljODNjNDdkZiBweTNrCis1NzQ5NyBkNWI1MmQ1NmJlYmFmYmRlZDQ2ZjZmZDA2M2U3MTlmYmQxYjFjMzczIHB5M2sKKzU3NDk4IGYzYjNmZmQxMzk1NDllYWExOTM2Y2E1YmY5OTQ5Y2YwOWY5ODVkMjIgcHkzaworNTc0OTkgZWY1NjI4MWYwM2I0NWQ0NThiMWVmZmQxOTU5MzBkN2U1ZGZkMjZkNSBweTNrCis1NzUwMCAxNTQ3ZGUxNmZlYzk1MWE2YmMyM2NmOWNmZjNlZDhlNDQ0OTI3MzgyIHB5M2sKKzU3NTAxIDAzNjU5OGRlNDY2MGQ2MjRmOWRjOTg3NTljY2I5YzQ0OTY4MDQ0MzMgcHkzaworNTc1MDIgYmYxYTUzY2M2ZTY1MWY3ZDUwZTYzYWExYjdiYTlmZGE0ZDQ0NTJjZCBweTNrCis1NzUwMyA3OGUwMGEwZjYwMTVlNWExYjA3NDMxODZhNjM0ZWVmMjBmZTBlMTE0IGxlZ2FjeS10cnVuaworNTc1MDQgZWQxNTk0YTE2YmRiN2NjMzA3ODg0NGEyM2E5NDdmOGU5MGEyZmViOSBweTNrCis1NzUwNSA4NGZhOTQ3ZmY2OTY2MDJhZDk4OTFmYzk4OTBkYmYxZmQyYTc1YTQ1IHB5M2sKKzU3NTA2IDFiMWY3Y2EzZmQ0OTMwNWRlMjk1MmQ3YWRmMmE3MGY0NzhmYjdkZjMgcHkzaworNTc1MDggYTA5NzI4Yjg5NTMwMjMyZDAyODcwMjk5YTM1YjYwOTFhYWE4NTEwMiBhbGV4LXB5M2sKKzU3NTA5IDNlYjVkZGFkZmJmNzhiZWI5MTA3MzE3NWQ5ODA5ODZjYTQ4M2FjYzMgcHkzaworNTc1MTAgZDZkNDkzYjYxN2UzZTUxYmNhYTczYmRkMGUzMzVmYjNkMzUxMDQ0MSBsZWdhY3ktdHJ1bmsKKzU3NTExIDQwM2ViZDE0NThhZmZiNWRmYWZjOGU2NzE0ZWY3ZGZmZWUxNDdlMDQgYWxleC1weTNrCis1NzUxMiA2ZGVkYjMzZDJkYTM4NDliYWFmOWQwOThlOTlmODlmOWU1MzAxZGVkIHB5M2sKKzU3NTEzIGJhYjc1ZTRjNjQ3ZjZmNDFmZDg0ZWU2OTdmY2IwZmVmZTUzODNiZDIgbGVnYWN5LXRydW5rCis1NzUxNSAzODk1YzEyOWU0ODYyMjM3MTE0ZGE4MTA2NjgyODExZjE0ZTAyZDgwIHB5M2sKKzU3NTE4IGMyYzc2YTA0NDZmYWIyNjg1MzZiYWY1MWMxMzU3Mjg5M2Q1NWViZTQgbGVnYWN5LXRydW5rCis1NzUxOSBhMTM0ODVhM2I0MDc4M2Y0Yzg2YjNkODgyNDgyYjE3MjcyZTE2MTM0IHB5M2sKKzU3NTIyIGZmM2MwYmU3MWRjMmIzN2MxNDIxOTdhMjA2ZTQ2NTVkMTVmODQ3MTMgbGVnYWN5LXRydW5rCis1NzUyMyBkOGFkMjljNjg3NjNlYWI0MmEzNjQyNjc1NDE5YzVhMTFhZmVjODE5IHB5M2sKKzU3NTI0IDg1ZWFlY2Y5ZDY3ODM0MWM2M2NjMmY0Y2U1NDJhODAzODFiYzI4MmMgbGVnYWN5LXRydW5rCis1NzUyNiA1ZmQ2NWUyNTA4NDM1NWViNWNhM2UyYzM2MDNmNGM4YTBkM2JmMGQ2IHB5M2sKKzU3NTI3IDU2YmJkMTc2NzA1NzVmMzBhMzMyYWE1NTM4NjQ3YjdjNzRmZGZhMTMgcHkzaworNTc1MjggYTQwZGZiNTFkZjkxNTRiMDk4NzQ0MDVjMmNmNWRjMGYyYzM2NGY0YSBweTNrCis1NzUyOSA0MjZhZGJmZjQ5MWRkNTZiMjgxZTlmNDM1ODM2YWFlMTc0YWJhZjcxIHB5M2sKKzU3NTMwIGQ5MTE1YTQ1MGYxYzY5YzViNTRhYjgyMjM0MDFiOWMwNDFlYzg1ZDkgcHkzaworNTc1MzEgODAzNjVkZDQ1NWZhNjg4OTk0ZmRkYjk4MGUxZTllZTExNWM2ZDJlNSBweTNrCis1NzUzMiA0Yzc4YzA0OGMzYmEwNGRiYTQ1ZDA3NDNjNzRkZWUzOTg4NGIwMzExIHB5M2sKKzU3NTM0IDI1MTk3NTE1MzJhZjc2YjY3YTQwMzZmYzQzNTdkYWUyY2E1NGNhZTMgcHkzaworNTc1MzYgMTlkYzJlZWFjYmMxMWEzN2U2OWQ2MzcwNWVkYTRjMDFiYmExZjRiMyBsZWdhY3ktdHJ1bmsKKzU3NTM3IDhlMTJkNTZkZDYwM2VhY2FmZDQzYjk4OTQ0MDdhNDA3ZmZhZWNkYzIgbGVnYWN5LXRydW5rCis1NzUzOCBiYjYyNDkyYjU4NGViNmY1NTZmMmEzZTI5NzhjMGFiNGZiM2U4YzRlIGxlZ2FjeS10cnVuaworNTc1MzkgZTY0ODQ4NWNmM2FmZTI2NzU3MzI2ZTM5NzQwNWNmMDZhZDk4ZTAyNCBsZWdhY3ktdHJ1bmsKKzU3NTQwIGQ1ZmJiODQzYjBhOWRkMDI5YTZkOTc0ZWJiODhmNmZhY2NkNjZlNTIgcHkzaworNTc1NDEgZTk0NjEwMGJiOWZkOWNmM2IzZWJiNjQzMGVmZGU4YjVkMjdmMmI1MyBweTNrCis1NzU0NiBkZDA2NzBjNjAxZDlhYmFiNDY1YjVhM2RhZjA5ZTk5YmU4YjFiNzZhIHB5M2sKKzU3NTQ3IDkwNDY5N2JlNjhjY2I1ODU3MzcwYzEzNzVhYzU5NDc4ZTU1ZTVmYjYgcmVsZWFzZTI1LW1haW50Cis1NzU0OCAyNTJhODQyODBiNzMyYWVhOGVmNDhhMTgwYWNkMWY3Njk1YjU3YTY3IHB5M2sKKzU3NTQ5IDliMjk0ODQ2ZDIwZDBiYWY5N2FjZjAxZWI1Y2VjN2EzODUwNDRlYmQgcHkzaworNTc1NTIgMmMwMmJhNzI3MTRiOTQ0ZTZkZTA1NDM2NmQzY2EzYmYzNzQ0MTYwYyBweTNrCis1NzU1NCA2YjQ3ODFkYzgxZmZmY2NjYzlhNDI3NTNkZWRhM2U0YjVmYWJjZjkwIHB5M2sKKzU3NTU1IDU5NGY4OWVjMDYwNzc5ZTI3OTAxMjZlZTQ5ZTdlZGM1MGVjOGM0OWYgcHkzaworNTc1NTYgN2JmOGYyMzM5ZWM2OWJmYzJkZjY4OTYxYjc5MWM3OTM3NTk0Zjg5OSBweTNrCis1NzU1NyBlMmZmYTBjZDk3Yjk3YmZjNzU1Y2FlMmI1NDVlODJiYjZmOTg4ZDU3IHB5M2sKKzU3NTU4IDAwMjBiYzc4NGM3NjlmOGIwZWJkYTAzM2I0Njc0NTUzNWI1NjBiN2IgcHkzaworNTc1NTkgYTQ5NjY1ZjhkMmY0ZDA3MjMyY2M1OWNhYTI2NjdlMjIxYTVjYTBjMSBweTNrCis1NzU2MCAxOTE5NmNjZTE0MzEzMGIyMTNmZTg5MGJhMzFmMDg0MTljN2Y5Y2ZjIHB5M2sKKzU3NTYxIGMwOWMzMjY0YTkwMDk1MGM3ZWNmNThiYWQ0MTE2ZDliN2VhMjJlMWMgbGVnYWN5LXRydW5rCis1NzU2MiA2Mjg3NGIzNGQ5NWQ5OWM3MmQzYmExNDg0ZjAyNzA5ZGE0NTliMzU3IHB5M2sKKzU3NTYzIGZiMzI2ZmQ5ZDE4NDJkM2NkODcxYWZlODE2MDljNWQwMWUyOWNhNjYgcHkzaworNTc1NjQgY2QyMzUwMjdlNjRjMzdiZjJlNGU2MGZmMDE1YzRmNjU3N2RjM2IzOSBweTNrCis1NzU2NSA3ZWE4YTZjY2RjNDJkZDE0ZTYxZTQ0YjA3NmZhZWU0MjFmMzcyNDU4IHB5M2sKKzU3NTY2IGI5N2ZhNDA1NTM0MzhkZDY0MzQ3ZGFhMjQwY2YyMDJiYmQ4OTEzYmIgcHkzaworNTc1NjcgMDE3MDQxOGRhZGVhYmIzZWVjN2ZlMjQxODUwMzNhODU0YTk4NzBlZCBweTNrCis1NzU2OCA1ODA1ZmUxN2NiMmRjNjA0MWVkYWJkMzNmZmQ0YWNjN2RkN2E4YTM5IGxlZ2FjeS10cnVuaworNTc1NjkgN2E2MmMyNDY5ZGVhMmU0ZTljM2Y2OTQ2NWYzOTJmZTY2N2VlMDJjYyBweTNrCis1NzU3MCAyNGEwNTMyNTY3OGIxM2FlM2QxYWMxZjViNGI5ZDA4NjgxOWMzZDBiIGxlZ2FjeS10cnVuaworNTc1NzIgY2IyOGUxNGVlODA4MGQ1MjhlMDFhOTQzYTYyYjE5Y2QzNDc5ZGM5ZCBweTNrCis1NzU3MyAwNDRiNjI4NTgxNWYxOGIyMzFkMTM1M2E3OThlNmNiOGE4YjE1NjhiIHB5M2sKKzU3NTc0IDc5NzMxMDQwMjE3YjVmNjVlZjViZTQ1NDNhZTE1MDI1ZjljMTI4MzYgbGVnYWN5LXRydW5rCis1NzU3NSBlMjBkNWI2NDE4OWM5NDNmZjBkMTk0MWRhMzk2MDk3OGQ5ZDc0NzZjIGxlZ2FjeS10cnVuaworNTc1NzYgM2YwZjFjNzc1ZDlkNDJmYTE4MGMzZDViYTFkMjkyOTE3ZTAwZTJlZSBweTNrCis1NzU3NyA5ZmI4MzMxY2VjMmNmZTczZGU3NTM0ZjU3ZDc1Zjk2OTBhNjkxMWNkIHB5M2sKKzU3NTc4IDhlMDFmMjYyNjJjZjllNGQwMGE4YmI3ZDQzMWVkYzY3M2M3OTFjMGIgcHkzaworNTc1ODAgOTIyMDkzMWU0NzQxYmYwNGY5Njc1YWFmNDhiZTBiNDIyMzYzNzEyZCBweTNrCis1NzU4MSBjNzJhM2NjMjFlZjczZTEzMjM1MmMyOWYzMjNjOWUyMWE0MmI1NzA0IHB5M2sKKzU3NTgyIGFlY2JmNTY3ODcwNDVjMDk2ODMxODFkNDg1OTUzNDcyZmE0MDYyZjcgcHkzaworNTc1ODMgODcxN2I0ZjhlMWU1ZWQ4MzMwNDQxYmJkYjI1NTljMDE3YmU2YjAxZSBweTNrCis1NzU4NCBiMTEwYmFjOWRmNDA5MDIzYjc0YjIwYjZmNjRjNWJiOGIyYzUzMzViIHB5M2sKKzU3NTg1IDM4NGY5ZDljNzVhMDJmZmU4NjdhMDE0MmIxMjQyNmE2YmNiZTkxOWYgcHkzaworNTc1ODYgYjRiMTRjNGJlYjgyY2FiODdlM2EzNjViNTNhYzlkMGJjMzk3ZTUzMSBweTNrCis1NzU4NyAwMGNiYjMzY2I4NjQwZjhmZGQ3OTY4MzNmZWNlMGNkODM3MGRiZGNhIHB5M2sKKzU3NTg4IGZkMWZjYmE1ZTE2YjA1NjMyZTAwNTJjNjJjMWM2NTBiZWMwYTZhNzUgcHkzaworNTc1ODkgZjNiMGFjNGU2ODRmOWRkY2E5NDU4ZGYwYjViMzRiNzRmMzA2YzNjNCBweTNrCis1NzU5MCA3YmUwZTAwYjAzNjZkOWRkY2FjN2VkODM4ZmE1OTc2MGI0NTVmZDNiIHB5M2sKKzU3NTkyIDExZWM0MDk3ZmFmZTcxNTRhMWQzYmJmMjQyYmI0NWFmNWFmYTJjZDIgcHkzaworNTc1OTMgY2JkNTBlY2UzYjYxMmMwOGE2NjlkMjBjZmUzZDgzNWEyNTViMzk3MyBweTNrCis1NzU5NCBhZWUyMWUwYzlhNzBmMzkwNjAzZGRlY2I1ZmNmMWZmZWE4N2E2NzRiIHB5M2sKKzU3NTk1IGFhMzk1MGYxMTFkOWYxMmE0YWQwYzBiMzc0YzE1NGViOTY5MzVlZTkgcHkzaworNTc1OTYgYjg0NjVmMDJmY2IxZWU2ZmMyNDY1NTJlZDAwMjA1NTQ5MWZjN2U2ZCBweTNrCis1NzYwMSBmZGVmMzJiYmJjYjg0MDc5YWZjOTNiZjc2ZTMwMzg1MDYyNzk5ZThjIHB5M2sKKzU3NjAyIDQ5ZGNlM2RhMGU4MDNjZjNhMmVjMzk2NmJiOGYyYzk1OWUyNzVlOTEgcHkzaworNTc2MDMgZTBiNmI2Mjg3YzZiMjNmN2IzOTY0ZjE0ODYyYTUxNThjOWY1YzQzZSBweTNrCis1NzYwNCBiYzk4YWY5NzI2NzhkODhlYjczOGJiM2RhZjljNDVjNjc3YzQzYTk1IHB5M2sKKzU3NjA1IGU4MzZjMTJjNTRjMmY0NDYwZjkzZjJiOTI1N2FlODFiNTJmYTk3YzIgcHkzaworNTc2MDYgODNjMTMxZGZkZDg0YzE4ODk0Y2NjODMxZGRiMjY4YWM4Zjg4NTE0MCBweTNrCis1NzYwNyAxZGZlNjg1Yjg1NzZiZmVhMTg0YTVkZTVlYmY1ODQ3MmI0ZTFlMTY1IHB5M2sKKzU3NjA4IDE3MWI5ZjE1YzIyM2E0YmQ5ZTg4ZWQxYTE3YjA5NWQ1YWVkYzg0MjggcHkzaworNTc2MDkgMzI0MzIwZDk0NjEwMmYxMGI5YjFmOWNhYzc5NDU1N2EzYjcwODRjYSBweTNrCis1NzYxMCA3MmFmYWY5YWIzMGJhNzliZTU0MTcyNWE4MDA5ZWI3Y2VlYjE4OTdlIHB5M2sKKzU3NjExIDhiMDZmNTE0NzQ0NTg2MTlmM2FhYmQ0M2ExMWU4NDFiNGNjNjIwZGQgbGVnYWN5LXRydW5rCis1NzYxMiA2OGZlMzUwOTA3NTkyODE4ODEyNGY2NDc4NzFhZjRiYTIwZGExMmUyIGxlZ2FjeS10cnVuaworNTc2MTMgOWExM2U4ZmIxYTNiNmNjOWM3OGQ2NDk2ZGI4ZmNlMTAwNGUyZjg3ZSBweTNrCis1NzYxNCA5NmRhMWI5ZGVlOGRiMmMxOTY2OTczOWNiMmQwYzcwNDJlZjEzY2RlIGxlZ2FjeS10cnVuaworNTc2MTUgNGVjYmFlMDc0ODFmMjE0YTExZGQ1Mzk5NDcxMjA4N2VkZjQzYmJkMiBweTNrCis1NzYxNiAzYmYyY2FkOGYyMmE5Y2UxMDE3NzJlZGE3ZjU5ZTBiMDIxYTE5MjJkIGxlZ2FjeS10cnVuaworNTc2MTcgNjZlMzZjZTVhNTZjNmYyNjJhYTIxMGQxMDRlMzEwZjJkNDMyZDFhNCByZWxlYXNlMjUtbWFpbnQKKzU3NjE5IDk2MjAxMzQwMTBhNWFkMmU1N2Y5YWUxYmQ3NmZjM2NlMmI3YTJmNDcgbGVnYWN5LXRydW5rCis1NzYyMCBkMTc4OWQ0ZmYwMGM2ZWM2NmUwY2YzOWVmM2E0ZmJlNzhiZDVlN2FjIGxlZ2FjeS10cnVuaworNTc2MjEgY2FhZDM1ZTgyMTNiOGE3ZWZkNzRmMTliNTViNjI1MTEzMWNjNTNkNSBhbGV4LXB5M2sKKzU3NjIyIDFlZGM2ZTE3YWUxODVkNDIwZDcyYzY3MmQxODFhNTcxZjgzNmM0YzkgbGVnYWN5LXRydW5rCis1NzYyMyAyNWE4OTNkNjdjNjQxODQzMDU5NjljZDE2MDdjNWZlYzU1OWFhZGQ2IGRlY2ltYWwtYnJhbmNoCis1NzYyNCAyN2YwMjg5YjY4MzUxY2U4YzQyZmJiMjE3MGUxYWExYjA3OGMyNDZiIHB5M2sKKzU3NjI1IDMwNTExMDY4ZDNkNDgyZTkxNGU2ZDY1NTQzOTI2YjcyODM0YThiNWUgcHkzaworNTc2MjYgZTZhOWZjZDFiNDRlODE1NGZiMjVhZDllYTdhODQwOTZiOGZkZDk5YyBsZWdhY3ktdHJ1bmsKKzU3NjI3IDUzM2ZiNTMyMWQ2YmMxZDRjMDhlYzBjMGMzNjM2MTQ3NjdmMjFmNjEgcmVsZWFzZTI1LW1haW50Cis1NzYyOCA4YmIxZmUxYTcyYTRhMzJiNWU4MGJmZTRlNGE2NzRjYWMxYjY3OTIwIGxlZ2FjeS10cnVuaworNTc2MjkgODljNGZmOTdmZDg5M2VjYTA3NWFjYWNhMTI0NTU5ZjExMWU2ODdlYiBhbGV4LXB5M2sKKzU3NjMwIGQ2OWQ4MDYwMGNmMTcyMTc2NjVkZDQyNDMwNDYwYzZhYTQ5ODJjZjMgYWxleC1weTNrCis1NzYzMSBmYjJjZjZlOGNkODYxMTUzOTczOWM4Njc5MjM1MTZmZGNhYjk0ZmFjIGxlZ2FjeS10cnVuaworNTc2MzIgZGVjMmVjODI2ODc0MTE3YWIwOTM0MTk5ZjY0YWM4YjA5N2QwY2U0OCBweTNrCis1NzYzMyAxYTIzMGNiNzdmMDVjYmVjNmQ1NTBkYTc2N2ZmZTgwMzBkMmFmYjc5IGxlZ2FjeS10cnVuaworNTc2MzQgYjkyZmIyNGM1ZDRiNTA2MWI2MjlkOGMxNWQwM2U5YjU4MDA5YmZkYSByZWxlYXNlMjUtbWFpbnQKKzU3NjM1IGIyZGY0NGI5YzI1MTM0OGQ3ZjE4ZTg0YThiZmQ1ZWFiM2U4YTEyN2EgcHkzaworNTc2MzYgYTc5NTFhYmI4NTM0YjMxMDJiOTYwNTdiOGFhYzYzNmZmMTBhMGI3MiBweTNrCis1NzYzNyBkMWExN2NkMjZhNGIwMmNmZWYwNWNkZDA3NTM0YjMxZjRmYWVkODExIHB5M2sKKzU3NjM4IDM3YmVhZTA5ZmNiMGZkNWZlYTliM2RjNzhhMTM3NGZjOTM1ZWY3ZmYgcHkzaworNTc2MzkgNTBiNzg3Y2JhOGYxY2Q2ZDc1YTZmNjk3YWNhODU1ZTNhZjY1ZGViZSBweTNrCis1NzY0MCA3MTNmYmEzNGQ2NmI4OGI0MTFkZmU2NzlkZTE5MDcxMTY4OWNmYWM2IHB5M2sKKzU3NjQxIDBlNTEwYWZmNWU5YWUxNTQyYjgzZDBmZjNjYjUyZGEwODMzOWEzOTUgcHkzaworNTc2NDIgY2I1YWUwMjBhMDYwZWJhNzZiODkwZWUyOTcwNWI0NDg3YWE0NjBkMCBweTNrCis1NzY0MyA5Zjc0YjY5OTA1NmE0NjU2ZDc3ZGMyM2U3NWMwZDI4Yjc3ODgzNzU3IHB5M2sKKzU3NjQ0IDA1YzQ3MzhmOGE0M2M3MzMwZDcyOTgzNjEyMWJlOTk4YWVjYzg0ZmIgcHkzaworNTc2NDUgMWNlODlmMjU3OGNmODFkZmJjNjAxMzc2MWQwMTE1YTcyYTU0NTVkNSBweTNrCis1NzY0NiAwZTkwNjUxMDI2MmQxYTk4ZTQ5OGIxODVkNjkxMGI4OThmOGE4ZDE4IHB5M2sKKzU3NjQ3IDcxY2Q1NTk4Yjc0ZDZkMGI4MDBhODEyYjQ5ZTBiZTA4OGU3YmM2YjkgcHkzaworNTc2NDggNmIzZThhYTU0ZGQ5ZDkxODc5OWQ0MWY3YWIxN2NiNWNlYmUzOTMzMyBweTNrCis1NzY0OSA1NDJiOWIxMTE5MTVjZWQ2NDBiNTk2ZjAyY2VjZWY2MGIwODlkYzA3IHB5M2sKKzU3NjUwIGRmOGVmOWM4MzcxYTQ1NTAyOTA4NDllMmE1NDcwMzlkMWJjOGRiN2MgbGVnYWN5LXRydW5rCis1NzY1MSA4MjYwMjMxNWVhZWI5ZTcxMGVlZTExNTBhMmY5ZTlmNDdiYWNkZmNlIGxlZ2FjeS10cnVuaworNTc2NTIgOWRmOTExZDY1NGFmY2JjNGIyOTVjOGEzZWY3NDhkMGJlMWUwMGM2ZSBweTNrCis1NzY1MyAwZjgyZmM0MmZkNjgxYWY5MjQ5NGIxYzFkMWZmOGVlZjU1N2YyOWUzIHB5M2sKKzU3NjU0IDdmZGU2ZWRmMmI5MjAxMjgyNjVhOGQ1YmRmMWNiY2MzOGMwNTUxOWIgcHkzaworNTc2NTUgNzkxOTFiZGZhMjNiNTJjMjlhYWQ2ODE5OTg5NTQxNGEwMjEyMDY2MSBweTNrCis1NzY1NiAzYTU2ZTczYWU5MTk1NzQ1OWExMzM5YjQ1OTU4MzBjNThkYzRjZTc3IHB5M2sKKzU3NjU3IGY0ODUxZGMwZGYwNDE3NDU3NmYxMjAxZDYxYjBlZWE1YWMxNGMwZjYgcHkzaworNTc2NTggNzA3M2Y0ODE0N2JkYWZjMGIwYjQ4ZjhlNDFlN2IzMjk5NmE2ODZlMCBweTNrCis1NzY1OSA0YmViYjIyODE3Y2ZlZWRiM2YyNTA2NjljZjVkNGFhMmJiZjkzZDI4IHB5M2sKKzU3NjYwIDBkMjhhNTIwYzliMThlYTE5NmMxNzBiM2E3ZDI5YjIyMDFhNDk0NTkgcHkzaworNTc2NjEgMTcyMjQ1OTI1YWU2MDNkMTYxMmRhZWVkYmEwOTQxNmMxZDU2ZmNkZCBweTNrCis1NzY2MiBhMDM1MzI2MDdkMWNhN2E4M2QxNWEwY2U3OGYxOWM5N2E1M2I2YmJiIHB5M2sKKzU3NjYzIDMzZTg3Zjk3MGEyMmMwMzIzOTUyZDhmODlkMWZhNDUyZjJhM2U2ZTkgcHkzaworNTc2NjQgZWNkYTMzMDUxNzM5ZDk2ZTlhZWZkYTZhMjMzYjNlYWQ2NjAzNDYxYiBweTNrCis1NzY2NSA5ODg1NGM3NjI5YzhlMDMzZjNmOGMzNDU5MmY1OGRhMDYzOTI0YWZjIHB5M2sKKzU3NjY2IGFiZWE1NjUzMDQwNDk5NjVjOGE4ODIyZGYwOTQzYzgwN2U5ODY2ZTEgcHkzaworNTc2NjcgMjUwYTlkMDdjMmNjMmI2ZjM4MzMzNWYyZTI3YTkwZDhkNjg1ZmUyNyBweTNrCis1NzY2OCA0ZDZjMTM0NDM0MGMyYzcyYTBiZjM0MjBhZjg2MWE1ODg4NjJiNjM1IHB5M2sKKzU3NjY5IGI5MjI2Y2FkOWRmZGIwOGJkYmM3YjQxZDllMzBjOGI1MzA5NTU5N2MgcHkzaworNTc2NzAgZGNkMjg1YzA3ODEzNWM1OTkzODU4MGQzODIwZDMxMjc0NWYzYmIyMyBweTNrCis1NzY3MSBkYzBmMGZmZDQyNTcyOGU3MjA3ODY0MTkzYjZjZjQ1MzY1Y2ZmNjE1IHB5M2sKKzU3NjcyIDk2YmRlMDg4MmU1ZjRhNDc4NDgwNmI1YzcyNTkzZjMwMTA0MzBlZjUgcHkzaworNTc2NzMgZWFmYzhiMjM1ODlkMTNhMDA4NTBiODEzZWU1ZTJiYjY0NDEwNDkyNSBweTNrCis1NzY3NCBlMTQyY2Q0YjU3MTAxYzVjMjM0ZmQyOTYzNjU2ZWVlOWE1NDk3YjlkIHB5M2sKKzU3Njc1IGNkODBlYjk4OTcyODNmMzU4M2E2ZDJiNzY2ZWM4ZTBhYjEwMDM3ZTUgcHkzaworNTc2NzYgYWE1N2NlZTExNjMxM2Y2YWZlMTE5NTUyNmY3MjkzYjAzMjI3YzA2MiBweTNrCis1NzY3NyBiNzU0YzA5MDg4OTdlYmIyNjM5MmQ0MWU4MzNiOGJkYTUwMTkwMDU4IHB5M2sKKzU3Njc4IGFjOGIzODlmMDAyNWQ3MzdiNDRjZDQyODc5MDc2NzlkOWYyNDhiMWIgcHkzaworNTc2NzkgNWZkZTVkNjk2NGQ3Y2Q3MTk0NWVmMzY3ZTU2OGI3NTMwYjcxYTk1OSBweTNrCis1NzY4MCA0NzcxNjM5ZmMwNDk5NjM5ZmNmOTcxMTk4ZjA4NGU3ZGU1MTYwYWI5IGxlZ2FjeS10cnVuaworNTc2ODEgMDdkNjdhOTcyNWE3OGUxYjE2NzYwMzllZTgwNDEyNzVmMWMxOWRmYyBweTNrCis1NzY4MiBhYjg5ZTEzMGQ2NGE4NGZhZGYzMWQ2MTk5OTI3Nzk3OWNmN2Q4MDU1IHB5M2sKKzU3NjgzIDZlMzVjN2MxNzYwNGU2YWYyOGYwZTI3ZDk2YjVjNTMxNTRiOGIyYmQgcHkzaworNTc2ODQgMGRjZDdmMDg3MzlhYzgwNzI3NDUyNGZmZDhiMzFkMDZhN2M1N2I2MiBweTNrCis1NzY4NSA4OGJiNDU5ZmRiZjU3YzcyODYxZjkwMDAxMzBiZDYwZGEwMTY3YjE4IHB5M2sKKzU3Njg2IDk4MzQzMDFhMmZkM2UwMTc4NzJmZjEzZmE5ZmMxMmI1ODdlNDM4ODQgcHkzaworNTc2ODcgMGNkNDAxYmYyYWE3ZGRhYTc0YmYwMWUzMjUxM2VlMDJiY2FhZTRlOSBweTNrCis1NzY4OCA5NTA4NDgxMTczOTdkNzI0ZDQ0MGNhMWE5YWE3NmRiYjUwMGU3Y2Q0IHB5M2sKKzU3Njg5IDAxMDRkNzk5ZGQ0NDU0MmIyNTgxMjJjYjAxNGZkZDVjMmJmYWFlMjggcHkzaworNTc2OTAgMTY1OTM0YmM0NDI5NjEwNDYwNzQyNDkzZjlhM2I2MGZlYTlkOGE0NyBweTNrCis1NzY5MSBkNWYzYzJmNDE2ZjJhODhiM2U0YzY2OGNjMTE3MDJlODlhYTgwMTJmIHB5M2sKKzU3NjkyIDkwN2E0NWRmMTI5NTNhNThhY2E4YjQ0ZGU2MDdiMDc1ZjNiZGFhNjEgcHkzaworNTc2OTMgYTM0NjQ0YTY1N2Y1YTI2ZmY2ZDUyYzY1NGZlZDQyOWU5ZjI1NGMzMCBweTNrCis1NzY5NSAzOTE4YThhNTFiZDE5N2U4Y2ZjNTMxZGI0YWQwNjA1ZWYyYzQ0Nzc0IHB5M2sKKzU3Njk2IDk1MmJmNmE0NGMyNzdmNzAzOWVmOGUwZjRhNjMwNjUxNDYyZTNhOTEgcHkzaworNTc2OTcgMTMyMWJhMGI2NzBmMTAxMDIwNzRlN2UwNTc2NGRjNzhiYmUwN2RhYiBweTNrCis1NzY5OCBiOTZjYTM1MDg5MWQxZGEyZjJlZjNiOWQ5MzBhNTdiZmZjNjQzZjc1IHB5M2sKKzU3Njk5IGE2ZDM5MzBiNTYxMzgwYWE2ZGIzYzE4Y2JkMjY1MDQ0ZWE5NWM1YmMgcHkzaworNTc3MDAgOTA3NTcxMmRlZThmZDQ4NmUwNzU3YjE1N2MwMGY4ODJjN2RhMTg2YyBweTNrCis1NzcwMSA4MDc3ZWU0OWZhZGZkY2QzNmIxZTAzZmQzMzk1ODhiOTJlNDkyNjZjIHB5M2sKKzU3NzAyIDcwODAzM2VkOTUxNTk0OGQwMTNlYjk2Y2VjNWQxODNjNDQzODI0OTUgcHkzaworNTc3MDMgY2MwZmUwNTZiYWJkZjVhOTZmNDFhMzhlMjkxYTI5ZmQ2ODkxMWEyNCBweTNrCis1NzcwNCBhYzJkNWQzNDYyNTJhMjQ0NzQ5NzBlZmY1NDJiZmJkMTcyOWRlN2U0IHB5M2sKKzU3NzA1IGI1ZDljMTk1YTBjNTNhOTdiMjVkZDUzMzM4YmUyN2Q2ZWQzM2MyNjcgcHkzaworNTc3MDYgZTA5M2NhNTU5YzIzY2ViZmVlNzY1M2FkZmI4N2VkYzM3ZDc4ZDEyMiBweTNrCis1NzcwNyA4Y2NmNmY0YzdmMTI1Njg1NzA0ZTdmNTRhYjVkMDUwODQ0OWZmMzM4IHB5M2sKKzU3NzA4IDQyNzU0MjA4YTY1NDRjYTE5MzY0ZjQ0N2NjZGE4Yzk0ZjNmOWE0NTQgcHkzaworNTc3MDkgZTgyYzgwYTA0NDhkNWI1NjVjNmZjMzVhMDY1MTVjMDI4NzdhOTQ5YSBweTNrCis1NzcxMCBjYzdlOTE0YTIyZDljYzc0MGY2YzI5OWY4MzhkZGQ0NjM5YWUwNTg0IHB5M2sKKzU3NzExIDZlMTAxM2I5MjNlM2MxYzgyYWMwNWViMWMxYjk2NmQxYzU4OWZlZGYgcHkzaworNTc3MTMgZmZhNDIzM2RlODY2MjI3YWRhMGQyNzRkYTRkNDU0YTk5ODFhYmU5NiBweTNrCis1NzcxNCA5NjI0ODMyZjMxNTZmMzZmNzc3YzFjZGY3YzgxMGRjNGRhZDk1YjFiIGxlZ2FjeS10cnVuaworNTc3MTUgYTExMzY3MzE3Y2EwZmNjZmFlOTRkMjE5ZDI2NDYzYjk0ZWI5ODFhMyBweTNrCis1NzcxNiA4YjBiMTE0NmQ5MDgwNWRlNTRiODlkMWZkNmYxYmQ2OWExYWNmOWY4IGxlZ2FjeS10cnVuaworNTc3MTcgMTEzMjIwZGFjZTY0NmJiMzEwYjc1M2NiYTM3ZGU0MDdkZTgyYTgwZSBsZWdhY3ktdHJ1bmsKKzU3NzE4IDM5ZDllNTAwMGU3Y2Y0YzJjYTQ1YjBkMDNkYTA1ZWM1ODEwNThkZDIgcHkzaworNTc3MTkgZGY1M2M1NzZjNTMxZWNlMWQ0N2JjMDUxZDk0NzY2NzYzODkzYzAwNyBweTNrCis1NzcyMCBiNmUzM2I1ZWFjNDBmYWUwNTJlMWFjMDcwZGY5YzczYWE4OTZkMGFjIHB5M2sKKzU3NzIxIDA4ZjdhNmIyNWM4ZjJiZDQ2NjA1NzJlZDVhNzhmZjVlNzI5MGQ3ODUgcHkzaworNTc3MjIgNjUwMGM4YmQ3ZmVhYjcwNTAxODdmNTk3NTI4NzkyZjUxYzdiZmQxNyBweTNrCis1NzcyMyAzYTdiZGIwYTU5NDgyYmEwMTMxYWE1OGU2MzM0MzgxMjM3NGE4ZTI3IGxlZ2FjeS10cnVuaworNTc3MjQgNTZhZmRkNmQ2Y2Y3OGU5MWEyNjZjMDJhY2ZiMDhmNjI1NGJlZGNkNCBweTNrCis1NzcyNSAyMjdjY2RkMGY4ZGI3YWYyOGJmZjNmN2NhNzY1OTBjNzFjOWUyNTYyIHB5M2sKKzU3NzI2IDk3M2RhMmViYzJkMGYzN2QwYWQwNTc4OWViMjI2ZGYzODA5Y2YyNDkgbGVnYWN5LXRydW5rCis1NzcyNyA2ZmNiODczZjM5NmM2ODg5ZGVjNTlhN2FhNGE3OTA4MWQ3NDcxNzIwIGxlZ2FjeS10cnVuaworNTc3MjggZDgzYzJiMjFhYzI2ZWMyZWNmNDJlOGNjNDVjN2EyNjNiY2Q5Y2ZkYiBweTNrCis1NzcyOSA3ZWE2ODg4NTYyZDFkMzg0NzAzM2MxMTY2YzMxNWUwYzg0ZjY5N2JlIHB5M2sKKzU3NzMwIDNiZjFiOGIzNDA4MDMyZDkwN2NhZjlmNTRjNjUyMmI5ZmEyMDRkZTYgbGVnYWN5LXRydW5rCis1NzczMSA3ZGZlZDFjZmU3NjJjNTRlNjQ0NWEwZDE2NDFmZWZmZDY2YjIxMDU5IHB5M2sKKzU3NzMyIDViN2FhZmFkZjIyMzAxOTRkZTRlNTdlZWIyNDQ4NThiY2Q1MGMzOTEgcHkzaworNTc3MzMgMGEzOGMxMjk3MTdhMzE1NWU3NmE5YmM0MjZjZGVkMGMzOGMwMjE2ZiBweTNrCis1NzczNCBkNjAzNjdhMTMxNmY0MzkwZDc3ODI1MjgyZTNhNGQ2ZTA0MzhjOTZiIHB5M2sKKzU3NzM1IDc4M2VhNjgyMWUwNDcxYTM1NzdjOGE5NGE5YTdmOWQ4NWY2MDViNzQgcHkzaworNTc3MzYgMWE5MDFiMWM3Y2QzMTg2MTUyNzI1YTYxY2IxN2QzYTU0YzVlZTNkNSBweTNrCis1NzczOCBlN2EzOTBhMzZlYzhmNzNiYzA0ODExYzhkNGUyNzk1MDY3NjU0MTY5IHB5M2sKKzU3NzM5IDAyZDFiNWU3YmVmNTY4ZmNhMmJhZjUzMDA2NmZmOWJmOGJiNzE5NTkgcHkzaworNTc3NDIgMDkzZmQ4NGZhNzdjNDU0OTNkYTE3YzI5Mzg1YTdlMTNiNjQ1OGYzZCBweTNrCis1Nzc0MyA2YzIwM2I3YjFlMGExMTk3Y2ZkMWE3NjczZWYxZWVjNjNkZTYxYmY0IGxlZ2FjeS10cnVuaworNTc3NDQgNmJiZWNjMDI4YmNlMjY2YTA3MjNjNzk3NzcwNWU2NmJhN2VhMTJlMyBweTNrCis1Nzc0NSBhNTUzMjRjOTYwMmQ2MjFmYWUzZDExMWI1NWM3ZmU2MTJiNjFkZjE4IHB5M2sKKzU3NzQ3IGJlYWY2NjMwODE0ODg0ZmNlNzM4N2E3YTYxOGQ2MzkxZDcxNmVmYWQgbGVnYWN5LXRydW5rCis1Nzc0OCA2NmE1YzRiYTkzOGVhY2FkZjQ0NTVmZTFiMmU2NzFlMzQwYzc3NWI4IGxlZ2FjeS10cnVuaworNTc3NDkgYzRhOTZkZTVlNDRlNTlmOGI3ODk2MTk2ODVmZGQ3OGJmNTJjOWFmYiBweTNrCis1Nzc1MCBmZjkxOGZjYzU3ZDJhYTM5MzEwMzNkYTg2ZDVlMTUwNTZlNWZmNjQxIGxlZ2FjeS10cnVuaworNTc3NTEgMjMzNjQ0OTZkZjMxMzc0YzI1MTExMzYyZGQ2NTcwZTE3MmNkNmQwMiBweTNrCis1Nzc1MiBkYjlhMTc2MTkwZDM2MGQ3ODk1MWQyZGVjZmIwZmEyYjBiMmRlMzZkIHB5M2sKKzU3NzUzIDUwNGMxNWYwNWRmMzU0NGEzOWY2ZTgzMzFjMmM3M2EzNTI0N2FhYmMgcHkzaworNTc3NTQgMGZkMWI0ZTJmNGVlNThhZWRkZGRjN2NhMDYzMTlhMjRhMzRkODViNCByZWxlYXNlMjUtbWFpbnQKKzU3NzU1IGRjZWRkMzJmMDZkZTM3MTFkMGQ1MWQ0ZTQyOTE3OGRkMzFiZWM0MzMgcHkzaworNTc3NTYgM2UzYmM4NDEyMmQ3YmY3Y2Y0ZDFlZWJkY2JlODNhNjI5NTEyMzlhZCBweTNrCis1Nzc1NyBiZjExZWQ0MGIxMDU4ZGI0YTAyNWQ3NDQ0NzNlMGY3ZGRlOGRlZDA3IHB5M2sKKzU3NzU4IDg3YTBmZGNhYTg0YTY0NDlkZjJkZjE4MDI4MmY5NTFiZThiNTc3ZmUgcHkzaworNTc3NTkgYWU5MDQyMGQyNjM1NWUyNzE4MWU5MTRkNzJiNzA2ZDNlZTQ4YzU2YiByZWxlYXNlMjUtbWFpbnQKKzU3NzYwIDY4ZjhiMjM5MzI0Mzc3ZTJmYmQ1MTAxMTMwMjNjMTRkMWU5YWJjNzEgbGVnYWN5LXRydW5rCis1Nzc2MSBhZmJmNmZkNzc5ODA3OWRlMjZkYzIxNmYxZmJhYWZiZTE2NDllOTkxIHB5M2sKKzU3NzYyIDIwZDhkMTFjOWIyMTM4MWY1Yzg2OWE1NWE4ZmIyZWJlMTlhNGNkNzAgbGVnYWN5LXRydW5rCis1Nzc2MyBjYjI1MGIwNDczZmNiNmY3Njk5MmNjNmIwNmYwYjMyZmJhZGI2ZmY5IHB5M2sKKzU3NzY0IDVkMzE0YzNlOThlZGU1Njg1ZjA0NmQwMGE4OTk2NDY2ZTQ2NTJjY2QgbGVnYWN5LXRydW5rCis1Nzc2NSA4ZGZkMTgwODM1NDBkOTBiZWE4Zjk4ZTQzYzVjOTdiZjE2ODZlYmUyIHJlbGVhc2UyNS1tYWludAorNTc3NjYgMWJjZGVhMWRjOGM3NTBmN2RjNzNkMGFlZWFmZDQwYjg4ZGY1ZGY3NyBweTNrCis1Nzc2NyAyZTNjMDJjNjI1ZGVhYzM3MDVhM2I3MTI2ZjBjMmIwODA4NDc1OTVhIHB5M2sKKzU3NzY4IDhjODliOGM0OGI2Y2I5MGZlMWQ1OGRmMTA4NWEyMWE4ZTk2NjkxYTkgcHkzaworNTc3NjkgYTZiZDNkYWIzZWI4YzRlYzRhMGI2Yzk2NWY5MmFmMDM4NmMyMmJhYyBsZWdhY3ktdHJ1bmsKKzU3NzcwIDkyZTQ3ZDMzODg0ZTQ3ZTg5ZjNhNmIxMzY3ODA1ZjM4NDExMDAwOWIgcHkzaworNTc3NzEgMWQ1N2ZiN2VmYjE1YjBkYmE0YjY3NDBjMTczNTYwZjg5NTE3NjE1OSBsZWdhY3ktdHJ1bmsKKzU3NzcyIGRkMDY4ODc0MGQyNDNkYjg2MzlmYzhiN2RjODA4NDA3YTgxOTdkMmMgcHkzaworNTc3NzMgNGEwN2EyODhmNWM0OWFmNGUzYWU4YTE4MjRiYjdiMmYwNDFkYTFlMSBweTNrCis1Nzc3NCA2OTg5MDZjMmY0NjkxMzBhYmIwOWZhZWRlN2RmYTgxOGNmNDUxMmNmIHB5M2sKKzU3Nzc1IGE5YWNjMDZkYTU3YWI0NDQwOTZjNzVlM2EwN2NhZGRiZDA5MDZmNWMgcHkzaworNTc3NzYgNTRkZWYxOGViMzFmZGZkMTZhNTcxMWQ3NTM2MzVmNjhlNmIyNTI0NSBsZWdhY3ktdHJ1bmsKKzU3Nzc4IDQ0NDFjMzg3NjUwZDljODYzMjAzNTgzZjhkOTk1OGE1ZDE1MmQ5Y2EgcHkzaworNTc3NzkgNGU2YjRiYTYwYzNiMjg0MjBiYTRlMmM1YmYxNmZlMjM4ZTEyNDM1MCBweTNrCis1Nzc4MCAzYzQzMjk0MzFiYmM0ODgyYmY5ZWUzYzM4MWYxNDMwOWQ3YmYwYzhjIHB5M2sKKzU3NzgxIDMyZjZkZDk1ZDFiYTdjYTdmMmIyNjIwMWQwMGEyNzUwNGU4MGRhZGYgZGVjaW1hbC1icmFuY2gKKzU3NzgyIGU5MWQyYmY3MWZkZWQ4N2FjM2QxMzFjYmM0YjVhMGE5YjI0ZjBmNWQgZGVjaW1hbC1icmFuY2gKKzU3NzgzIDk4MWVjYzUyNjcwMzAzZDdkMjMxZmY3YWE5NTVkZWYyNzE4ZDU1NzggcHkzaworNTc3ODQgZDJlOWRhZGVkY2M2ZDlhYzhhMjdlNTNlMzBkNzZkM2JiYmI0ZmUyMyBkZWNpbWFsLWJyYW5jaAorNTc3ODggZGVlNGM3OGVhOTEwYzg0YmQxOGFiMTZkOTY5MzExNGJkZDQzZTJiOSBweTNrCis1Nzc4OSA2OTFiNWNjZWYwYzgxMWJiZmIxZDQ1OTY3NTY5NTY0YTdlYTc3MDdkIGRlY2ltYWwtYnJhbmNoCis1Nzc5MCBkZDZjZjAwYzE3OTQ5NGE3ZWNjYzc5MjhhZTIzMTU4NmJmYjliZGZiIHB5M2sKKzU3NzkxIDlmYjAzMjdiMzExMDA5M2M5YTQyMzUzZDI1ODRhMTc3ZWJjNTM5YWQgcHkzaworNTc3OTIgZWVkMTVlYzZiNzU5OTViY2U1MDY1ZWI1NWNmOTYxZGQ0NWI3ZGZiZiBweTNrCis1Nzc5MyBhODlkNDY5ZTFmZjc3NzE2OTE0Y2UxYTQyNDRmYTUyOWE3MWNlNjhhIHB5M2sKKzU3Nzk0IDU3ZTNmNmYwYTU4OGMwMmYyNjEyZWUzMDk5MjQ1YTkyMjhkNWI4ZGIgcHkzaworNTc3OTUgMDEzNWYwZTY3NmJkMDFiNDExM2FhYTQ2YzNjZWRmZGU1YTU3ZGQ1MiBkZWNpbWFsLWJyYW5jaAorNTc3OTYgZWVlNWJkZDM3MTU4Nzg0MDkyZTRjMmU3ZjJmMzgwOTYzNDYyYjAxNyBweTNrCis1Nzc5NyBjZGI3YjlmODJjYzQ1NjA4N2Y4MWM1OTRhODA0NmJlY2E2NjE4OTIyIHB5M2sKKzU3Nzk4IDdiMDIzN2NiZDBlZDExOTQ2NDBmOGUwZjgxNTM5NDA3YTVhNmFmZWMgcHkzaworNTc3OTkgOTBjNzE1YmM3ZDMwNWRhM2QxNzM3M2E2N2Y5NTRmN2E3ZmU5OTcxZiBweTNrCis1NzgwMCA3ZWMwNGNiMjYyZDIxZTI0ZGU0M2JlODRkY2E0ZDIwMmQ4MDA4MWIzIHB5M2sKKzU3ODAxIDg0NTRhMmJmYWUwNDQ1NmYwZjQ1MGI5ZTBhZTMzMjA3MTZmNjkyMDEgcHkzaworNTc4MDIgOTVkNmZlMmU4ZTBlOTFmMWM5MzZhM2RiZjMwOWE4NDYzYTllZjI2OSBweTNrCis1NzgwMyAwY2Y3MDA0NjQxNzc2ZDcyMzdkZjQxNDFiMTQ2ZDY0ZjhmY2FhMWRlIHB5M2sKKzU3ODA0IDdlYTEzNjdiYTI3NTg4YjQyYmRlY2UwN2M0ZTdmZDYwNzBmNmI2M2QgcHkzaworNTc4MDUgODhhYWEzODBmMDkxN2MyNzAwNzRkMGFiOGUyZTc5Yjg3ZTUwOTY3YiBweTNrCis1NzgwNiAxNGVlNjcwNTU3Y2YwMDA4MDE1NTBjMTc2YWY0NDBmMWY1MGFlOTljIHB5M2sKKzU3ODA3IGZlYzJjMDI5OWE4Y2JhZDIxYjJkZWY5M2ZhODYxYjg3OWZlN2Y0OTEgcHkzaworNTc4MDggODgzNGU2NTY4M2U3YjQxMjg3ZDZkNzg0ZmJiY2I4YjQ0MmViYzA0MyBweTNrCis1NzgwOSAzNDI0ODAzMzM3YTM3MGQ2OTljZjIxNmJmY2JjZGIxMzllMmNhNTEyIHB5M2sKKzU3ODEwIDg1YTY3ODU3OTk4MzE0MThiNmJmYmI3Mzc4MTA5MWVkZjZmZWE4MjAgcHkzaworNTc4MTEgNzI3NTM5ODY1ZjA0NjVjY2I5ODU1ODA5ODE4YjY2ZDdhYWI0OTE2ZCBweTNrCis1NzgxMiBlYThiOGUzZDhjOTMyODdlMTA1MmViOTRiNjQzNDgwMmI0MTQzYWU0IHB5M2sKKzU3ODEzIDM0NDkxZGMxNDNlN2NkODQ2Y2IzZDdkMDNlOGNhYTVlMTYwMGVkYzAgcHkzaworNTc4MTQgZTE0MDU1ZTgyZGI5OTFlYjc1NzY5YWRiNTAwOTFlZmNmZGFkYjQ4NiBweTNrCis1NzgxNSAyMjFmZmFkYzFhNGMyNjk1MDA4OTZhMTZlYTMyYjdkMzNiMWFkYjg2IHB5M2sKKzU3ODE2IGM5MmQ0MjZlZWU3NTFiNDFkZDFkMThiNTlmYTc5OWYyYzExZDRjMTggcHkzaworNTc4MTcgNDcyOTBjYWY3ZThlODNkMTg3YjE0YTVhN2E0YWQ1NjA5OGExZjdjNyBweTNrCis1NzgxOCBkMTVkOWM2YmVkYTdhMTA0YTQ2ZWFlZTE5YjM5MGM1MmUyNWEyNWZhIHB5M2sKKzU3ODIwIDVmYTViMjEzM2ZlYmQ4YTQ3NThkZWU0ZGRhMTBiODUwOGYwNDM2NGMgbGVnYWN5LXRydW5rCis1NzgyMiBiYzE4YWNmOGI2MTgyZGExOTg5OTJkZTNjNjk0NDkzOTYxMzAxMjY2IHB5M2sKKzU3ODIzIDQzMDc3YzI3OWQxN2M4NjZlM2Q5ZTY1YTkyNDRhYmU5MjRjM2M0ZGQgcHkzaworNTc4MjQgZDY3Yjk0ZjQ5ZGZjY2NmMDNhNTg4YTMxYmI2MTA1YzM3ZDFhNGQzYyBweTNrCis1NzgyNyA5OThkNzU3ZjNmYjBhZThiNTIxN2NjY2IzMjAwNGQxZTUzMzJmZDRkIGxlZ2FjeS10cnVuaworNTc4MjggOTU4YzRjYzU5OTNlMWU2YTEwNGQxN2Y4MDIwYzhmNjI3YjY5ZjU1YSBweTNrCis1NzgyOSBhMTJhMDJiOWY2NDlkYWNjNzk2YTM0NzE4OTljZTRiNDcyNDdmNjBiIHB5M2sKKzU3ODMwIDExMjZlN2U4NWYxODA0NTg4NmExNTljMDhkMGMzZWQ1YmNlYjA5NmYgcHkzaworNTc4MzEgYjVmMDZlNTdhMjRmNDk4NWJlYWQyMjY4NzI2OTNjMjFlM2E2YjEzZiBweTNrCis1NzgzMiBmN2Y5NDQzNzQ0MzhjMDNjMzc2ODNmZDYyYzczYmZiMWNjOWExM2Q0IHJlbGVhc2UyNS1tYWludAorNTc4MzMgNzExMjUyNDAyYjJmNTY3M2E2ZjM3YWE5MDVmNzVlMjZjNmUyYjJmZSBsZWdhY3ktdHJ1bmsKKzU3ODM0IDc3MDAwZjI2NDFlZTkxNjk3YTIyMTVjZDM2YmMyY2YwNzVjOWNhZmQgcHkzaworNTc4MzUgNWMzMGYxNWE2Yjg3OTk3YmI5MzU0Mjk1ZDY3ZWE5NzVjOTAxOWU4NCBweTNrCis1NzgzNiAyMzYxYWFlYWZjYmNjODU5ZTZjZTVkMjE0NDk0MmQzNWIzNDdiNGNmIHB5M2sKKzU3ODM3IDA4MmNlZjNiZTI5YjMzOWYzYTU1ZGFiNzFiZGJkYTY5NTFmMDZiYjEgcHkzaworNTc4MzggMDZkYzQzMjFhNTZhMGIzOTllMTMwNzI3OTk4YjliMjY0YzZiZDQwNiBweTNrCis1NzgzOSBhN2Q1NDQwMzUzYzM1ZDQzOWY4YzNjMDgyZDI1ZjdiYmVkOWRmOTliIHB5M2sKKzU3ODQwIGZmYjEwMGJlMDMxMGRhNTg0ZjY4Zjc2M2Q0MDIwYWZhZmUwYzllODEgcHkzaworNTc4NDEgMWJiNjNhMzJhNmM4ZDkxYWY5NjZlYTJjOTM1OWRlNWI1ZDVhZTE3NiBweTNrCis1Nzg0MiA0MjMxNGQ3ZDYwODNkNGZlYWYzMDMxYjliODMxYTI4NjAxNmNhNWFhIHB5M2sKKzU3ODQzIGE2ZjNiYzIxNmMzNzBiYzY4YWU4MzBmODRjMDBjMThjMjFmM2ZlZjAgcHkzaworNTc4NDQgYjVlMGY3NzIxMDE0YTZjNGUxOWQ0YjEyZmUyOWU2NWI5ODg5NDE2ZCBweTNrCis1Nzg0NCBjZDNmNzgzY2QwOGExNjc4MWUyMzZjMGI5Y2I1NzE3ZDFkOTk1ZmE5IHB5M2sKKzU3ODQ2IDMzNWVmODZhOGM1Y2FjOThjODgxOTUyMmViZTEyZTA2NDNlMTQ2MWUgcHkzaworNTc4NDcgOWZmMTEyNmYwOTZjMmE3NTgyNzllM2ZlNmFiZjYxZTViNGMzMGQ4OSBweTNrCis1Nzg1MCA4YzFjMmQ1YmVkMzIyNmY1ZDAzNWFkN2MyYjYzM2YxYmI3NTExMzI3IHB5M2sKKzU3ODUxIDFkMGY0YjNlZWZhYjM3NzJjNDAwMzYyYTY3N2RiZWExMTk5YmQ5ZGMgcHkzaworNTc4NTIgMjBhYmRiOTE2Y2UzMjNlMTk1M2RiZWFjYWU5MGNjOWFmY2Q3NDk1YyBweTNrCis1Nzg1MyAyNzVmODk0ZGJmMTIxYzQwNDk2MGEzMDgzZjM0YjlkZDVmNTA5ZWRmIHB5M2sKKzU3ODU0IDljZmFkOWE1YzgzYjM4MGUyZGNlODRlZTRlN2ViNGUyNWU2YzY3MjEgbGVnYWN5LXRydW5rCis1Nzg1NSA5YWY5YzhhNzFiZmU4M2QyZmE4ODk1MWQzYjQ3YTExMGJhNGQ0MDMwIGxlZ2FjeS10cnVuaworNTc4NTYgNDdjODgwZTQ4YmY2YjJlOTJjZWQ0Yzc5OGRjOGQ4NTNhZWYwNGE3NiBsZWdhY3ktdHJ1bmsKKzU3ODU3IGU5YjY3MzZjMTYzMjA4NWI2ZDY2ZDEzODI3NmY0MzZlZGNjNTMyNDYgcHkzaworNTc4NTggNjZjNzUxZTgxYzkwZTZkNDQ5NjVhMzBhOTZmZDU3NGZmZTcyMmIxYiBweTNrCis1Nzg1OSA1MWFmYzFkNTY1ZjgzMmJmZDFkM2VkOGYzMmJmOGQ2NWVhMzY2MjA2IGxlZ2FjeS10cnVuaworNTc4NjAgYmQ5OWZlYWZmOTk1OGNiNjBiMTBhZmE1YmQxNzAwNGU0N2FiZmE5MyByZWxlYXNlMjUtbWFpbnQKKzU3ODYxIDYyMGRjYTY3NTEzN2ExNjRkMGQ0YTYyNWY0YTIwZjlkNzY1YTk3YTggcHkzaworNTc4NjIgZWUxYjNlYjdhMDEzNmRjYzEyNjkzM2I1ZDRlM2NhNzIyYjkyYzM3NiBweTNrCis1Nzg2MyAwYTBiODIyNjU3MDYyMjgyYjM4ZTczZmM2YjExNjVmMzg3ZmQyNjE1IHB5M2sKKzU3ODY1IGJlZDBmNTBlYzcwYjdmOWVmNDVhZTY4ZjY4MTFmOWFjOWNiZTEzZDggbGVnYWN5LXRydW5rCis1Nzg2NiBkODQyNDU3ZTRiMGUzOWZiMmIxMzJlMTRmMjJjZGVkY2E0NWZlNDA2IHB5M2sKKzU3ODY3IGJmM2M5NDIxM2Q1ZDFlMjQzNTkzN2UyYzg1ZWY4YThkMTQ4ODU3NzMgcHkzaworNTc4NjggNTgzZTQxZDEyOTRiNGE1M2EwMjBmN2JjN2EwMWNkNzY2Y2M0MjA5NSBweTNrCis1Nzg2OSBkYTI4NWQzYjA2NWFjMmFkMGFiMDk3ZjRlZDViODI3NmY2NmE4MmNlIHB5M2sKKzU3ODcwIDgwOGYzMmEwZDk5YzJlMDJjNGNjYjczOGFlZmUzODMzYjgxZmFlNmIgcHkzaworNTc4NzEgYjdiZmE3ODBhODgyOGVjNjY1ZDIwODM5NGQ3Zjk1NDQ4ZTYzZWM2MyBweTNrCis1Nzg3MiBmNGQyZWQ1MGRlODU5ZDkxZDk0MDRjNzIyZmEzNWIzMmFjYmM5NWZkIHB5M2sKKzU3ODczIGM0ZjYzYmI0ZDM4YTJjNDNmNjY1OTY5ZjdlYTc5NjY4OTFiNGI0MGQgcHkzaworNTc4NzUgYWNhY2U4ZWIwYmQ4MjZkMDMwYzkwYjU3MmUyMDQ5MTM3M2Q5NmI2ZCBweTNrCis1Nzg3NiA5ZWJhNjg5ZWNmMjg3ZGM3NzNlM2Y5NWI5NTVkYjEyOTQ3ZWMwNGYxIGxlZ2FjeS10cnVuaworNTc4NzcgMzIwYzZiZWY4ZDMwYzI5YTk2OWRlNDk5MGZiNzRjMjFjNWQ4NjY1OSBweTNrCis1Nzg3OCBjYWYwZDdlM2IyOWE1ZjZmOGRjN2JlZTE1MGMxNmU4OGY1MWY4Zjc0IGxlZ2FjeS10cnVuaworNTc4NzkgYWQzZDVhY2FjZjAzZGU3MGJmNTM4Y2U0Yzg3Yjk2ZWU3NGFmNDUyOSBsZWdhY3ktdHJ1bmsKKzU3ODgwIDliMTgzM2ZjNWM3YjIwN2IyY2M2MTA0NWVjZTZhZDY2YzQ4NGZjMWYgbGVnYWN5LXRydW5rCis1Nzg4MSBjZTNhMDcxMzUxZmNjZDUwZGE3N2VjZTk2NTNhODljN2FjMjA4NDQzIHB5M2sKKzU3ODgyIDE0ZTliODdiNzUzYjI3OWIzNzIyNTliZmIyODc5YTU1N2MxNzEyOGUgcHkzaworNTc4ODYgMzg2YzIyZDkzYWI2NWI2M2IwNWNhZDg5Mzk0MDAwNTlmNjc5ODdlYiBweTNrCis1Nzg4NyBkNDQyOTg0ZjI5MGI5YzI1ZTBkZTI4N2NkMTNlODkzZjUxNGQwZjU2IHB5M2sKKzU3ODg4IDNhYzIzN2JjYTVlZTUzNzljMzVmZWJmODFhNTRlYzRkYjRlZDVkYjUgcHkzaworNTc4ODkgZDg2NjcyYmRlNjQwNjU2NWFkZWVjNTMwZTE4MGU1ZjRhZDYzN2M1YiBsZWdhY3ktdHJ1bmsKKzU3ODkwIGVhMTg0NTEzNjYwYjVkMjgxNmE3ZmE3ODJkNWQyYzFiNDNmYTY2MWUgcHkzaworNTc4OTEgMjc5Yjk1NmEzYTk2MzVkZjFiNjQxYjg5ODZkODkxOTQxOGZmZjhkYiBweTNrCis1Nzg5MiAxNDc4Njg4ZjQ1NjU4N2E1MGVkZjU5OTE4NDczZDE1NDhlMjM1YmU4IGxlZ2FjeS10cnVuaworNTc4OTUgMzZmNTZhM2VmMzZmODA5MDFjMDY1MGJiMzk4ODNhZjUyNmI3NzUyYiBsZWdhY3ktdHJ1bmsKKzU3ODk2IGI3NTE2YTM0NmYwZjM5ODg0MzE0YzNiNjBkMTE0ZDAyNjRkMjdmMGQgbGVnYWN5LXRydW5rCis1NzkwMyAxYjBkMTU0NDRjYTVkNDI2ZGY4YTEwMWNhNGI5MTBhNjAzZmNmZmNkIHB5M2sKKzU3OTA0IGNlMGNiMmQ4NjkxOTlkZjhiNzJiNWQ4OTM1ZjhmNWNmMmI3YWUwYmQgbGVnYWN5LXRydW5rCis1NzkwNSAxYjViMDU0NmE3ZGQyZDljZDViMWIyOGM0YzZhMGY5ZmU1NjNjOTU5IHJlbGVhc2UyNS1tYWludAorNTc5MDYgNDYzYjM0MWE5ZDYzMWVjNGRmMjM4NDg3MjNmNmY4ZDE1YTFjYTJlOCBweTNrCis1NzkyMyA0OTAyNjcxZGQ2Nzg1Mjc4OWEwZTYxZmQyNzQwZmZkZWQxZTUyOWM0IHB5M2sKKzU3OTI1IDdjNmU3ZDE5ZmY1M2JjNGVkODI2ODY2MWFiYmM2MTA2MmMyMmUzN2EgbGVnYWN5LXRydW5rCis1NzkyNiBiNWY1MzVjZjEzNWZjOWRjNDIwZWM5MTM0ZmY5MThhOTIxOWI2Y2UwIHB5M2sKKzU3OTI3IGI1MWFjMmQyZDUzOGJkYTBmNmY1N2RkMWVlYTAzYzg4Y2U3MDEwMjIgcHkzaworNTc5MjggNTY0YWU1NmJkMmRhNjFjOGYyNDVlMzk5OWEwZmJjNTkxNzQ4YmQyNyBweTNrCis1NzkyOSBmNGZiNzRmNjM4MDY3ZjNkMGM0OTEzN2MzZjY0ZDMyNDQxNDQ0NjNkIHB5M2sKKzU3OTMxIGRkMGM2NTNiYTI5ZjIzMDhmMjYyYzY4ZjYzNThmOTc5Zjg0MzIzMzMgcHkzaworNTc5MzIgNTc4YjE3NDYxZjZiNmI5YWJhMTdiMDNkYzkyMTg1NGZmY2MxYjM3ZSBweTNrCis1NzkzMyAxMTk5M2JjYjBiYTNkMWQ5YTQ2YmE5MzkzNDk2YTAzMzlmYmRlMzgxIHB5M2sKKzU3OTM0IDQzNTk3Nzc4ZWYyY2JjNTEzMzRkYTFiOWIyZjU3ZGJkOTgwY2ExODggZGVjaW1hbC1icmFuY2gKKzU3OTM1IDdlYjk1NDM1MWE0ZmQ3ZGQ0NzdmMGI1MDZmYzRjY2YyNmVlOWZlM2UgcmVsZWFzZTI1LW1haW50Cis1NzkzNiBjNDhjZDZlMDZhY2E1MzlkMDUyOTA3Njc2MDQ1MzhiYzBmY2EwZjdiIGxlZ2FjeS10cnVuaworNTc5MzggYTlmYjY1YzhlYWNiMzgxZWUyNDhjMTU1M2I5M2M1MGVmN2JkZWJmNCBweTNrCis1NzkzOSA0OGVlNjM5YTc1ZGQ3MmZlZGFkMTk0YWI0M2VlNTgwNmFkNzBkNWZiIHB5M2sKKzU3OTQwIGUyNTNiMjA0NTI1MDY5ZmVlYzRmYzNiMjFiYTA2NjQyZjZmZjdiNzkgcHkzaworNTc5NDEgM2NiYjRmOTIyMGY0MTkyNWIxMDhmZmI3YWFhMzI0Y2Q3YTZhNWU3YSBweTNrCis1Nzk0NyBhMzExYWIyZmMxYTcwMDUxNTBhNGJmZjQ1MWFjZDAwN2M4MWNlM2NkIHB5M2sKKzU3OTQ4IDM0MzZkYWY0NTUxNmFlNzhjOGIyMmZmMzUwNTBkN2FiNDVlMjc5OWUgcHkzaworNTc5NDkgNDI4ZDkyMTgwNGZhNDNjZDhlNjFjNGM0MThiOGYzMjY2ZTg4MTRkNiBweTNrCis1Nzk1MCA2NTUwNzFiZjZjNDVjNmQ4NjViNDQzZDRhNWM5ZDExMzU2MmExYzJkIHB5M2sKKzU3OTUxIGExY2M5YjU4OWUyMjJlZjI5OWMxNWY3NjMxODYwNTk5NTRmMmE1NTkgcHkzaworNTc5NTIgYmJkNGQyOTZmNzRhY2U4ZjI4ZTJiNjk0ZjRhZDhmYmY4NjIxNDU4NiBweTNrCis1Nzk1MyA5NzhjNDJiNTM4ZDFjOWI0ZTkyODdjN2UxYzcxZWNiMTJiOGQ3OWFkIHB5M2sKKzU3OTU0IDIwNTJmNTRjZWQ0OTY2MGIyODlmNGMyOTE4OGZlOGU0MmU3NjRiMjUgbGVnYWN5LXRydW5rCis1Nzk1NiAwMjk0YmIyZTk1ZGUzMjliZjU5MDc5ZDYyNmIyYmViZjYzZWE2M2RkIHB5M2sKKzU3OTU3IDM4ZjNmOWVmMTkzZDJhYTQ0OTNjMjgxY2M0YzFjYjI0MzczYjUzMjYgcHkzaworNTc5NTggNDdkOTJkYjdjZDEwMjIyY2Q3ZmIxMjY3NzhiZTkxMmIzNzc3M2Q3NyBsZWdhY3ktdHJ1bmsKKzU3OTU5IGM5YWM1YjhlNGE4MTY5NWVkZmMxYWM4ZTQyMDgzNTE4MjkyOTMyMzggcHkzaworNTc5NjAgMWEwYzczNTgwNjY1ZWY2ZDQxNWJhMzY2YzliNTJjNTNjZWI2OTBlYiBsZWdhY3ktdHJ1bmsKKzU3OTYxIDZhMDQ4ZmYzMDQ4ODg3OGEyZmQyMzhkMmQ5MmUyNGUwNjJlZDA1YTYgbGVnYWN5LXRydW5rCis1Nzk2MiA0MjUxMjdjMWQxMTNjNGZhYWFmM2FiM2JlZjAwOWUxMmI4Nzk0OTkyIHJlbGVhc2UyNS1tYWludAorNTc5NjMgOGU3MGZkNmE3ZGNiMDk1MjNlZjA0ZWY0ZjFlNTY1ZDk2NWNkMzk3ZSBweTNrCis1Nzk2NiAwODFlMzYyMzI1ZGE2OGUzYjM3NzEzY2UyNTQwZjg4Y2MyNDJkNDEzIHB5M2sKKzU3OTY4IDM0YmM2MzhhYzcwNzZlYzE1YmExNzNmZmY1ZTVlOTU3ODYyOWUwMDEgcHkzaworNTc5NjkgNDlkNmZhOThkYzc4MTdmNTEwNWMwNzllZWU0NGQ1NmU3ZmRhYzM4MSBweTNrCis1Nzk3MCA3OTA0ZmJhZmFiM2RlNTA4NjU0ZmY5MTFjYjAzOTQ3N2UzOWEyYTIxIHB5M2sKKzU3OTcxIDM0ODQzNTBhNGY2OWRmMzc2NDIyNjRkMmIyY2IxOGRiYmRkZjVhNDUgcHkzaworNTc5NzIgODBmZmNjMTYxYjMwYzhmNjhiMjg5OThmNWJmNWM5YmFjOThjZGI1NiBsZWdhY3ktdHJ1bmsKKzU3OTczIDUzYjhmYzA3OTA3N2Y0OGJlYWIxYjhjMmNmY2MwZjM1OTM1OThmYjQgbGVnYWN5LXRydW5rCis1Nzk3NCBjNmIxMTIzZTBlNmNhNGJlMWQwNTIwZjAyNjIwYjE5NGYwNGU2MWI3IHB5M2sKKzU3OTc1IDI5NGUzNTQ1MmQyNTc5ODUyOGU0YjRiYTU2NjJjOTE1OGMzYmU3YzYgbGVnYWN5LXRydW5rCis1Nzk3NiBlOTQ2MDczZGVlMzhiMDY1ZDZhZGU3MDYwYzEwNjMyNDI4OGNiNzFmIHB5M2sKKzU3OTc3IGU2ZGU5YWRkN2MwNzViYzk3MGZjNWEyZGY0MmFiNmY0NDNmZGZjMWQgcmVsZWFzZTI1LW1haW50Cis1Nzk4MCBlMmI0ZmM5NjA4MzBmYzIyYmUxZjdhODQ1NzM5ZGRjMDQyOTRlMzg5IGxlZ2FjeS10cnVuaworNTc5ODIgNzkwODBjNDg4OWJjMjdlOTVkOGNjOWIyMWE3NmFiZGJlOGYyODNlNSBweTNrCis1Nzk4MyBjYzQ0NDI3NTQ1MTA1ZTMyM2ExMTczMmE4NWVhOTdiODg3ZGZlMjg4IHB5M2sKKzU3OTg0IGQzMTA0N2ExY2UxOTc2ODRmMmY1NTI5NmM4OTcxNWVlMmJmMjAyYmUgcmVsZWFzZTI1LW1haW50Cis1Nzk4NSA0NTMxMjIwZTUwYmE4YzE0ZmIxN2FhMDMzM2JiOTZiZjJlNzExOTRjIGxlZ2FjeS10cnVuaworNTc5ODYgNWZkMDQ1MWU3NDA2MDlmYzZhOWZiYTk3MGU1N2M1OTFlNGFiMmJiZSByZWxlYXNlMjUtbWFpbnQKKzU3OTg3IDdmYjljZDkxZTY0ODYxZDNkZTg5MzVlNmEzZGQ0Njg4YjJjYzc4M2UgbGVnYWN5LXRydW5rCis1Nzk4OCA3MWMzZTViNjllMTRlNzFkZTMzNDVkNTU1MDM3ODk3Mzg4YTM0ZjNlIHB5M2sKKzU3OTkwIDNjMmE0ZjZhY2NkNTZhZGQ0MzlmZTZhYzU2NDVkNGRlZGIwYmRjOWIgcmVsZWFzZTI1LW1haW50Cis1Nzk5MSA1OGFmNjY3NTAxOTg2MmRhYjQ0OWFiNjQ1OWY4ZjVhODljYmU5ZDk3IGxlZ2FjeS10cnVuaworNTc5OTIgMDhlMTA1NTRlNDMwMzgwNzAzNmE5MTg0OTM1OTg1OWUwZjM3YmEzNyBweTNrCis1Nzk5MyA5MWM5OTAxMWQwNjk0NGE2MTcwMTgzZWFiYzhmZGFmMmQwNDY4Y2E4IGxlZ2FjeS10cnVuaworNTc5OTUgNzJhOTZlNmE3YzJmYmM1YmI4ZGUxODRhZGVlYWIwYzYwMWRhM2JjOCBweTNrCis1Nzk5NyA4ODU4MTNjY2JmNDU0Y2MwZDkzZjU5NjZlMDRmMjE1YjA3ZDZkYzJhIHB5M2sKKzU3OTk4IGE0YmQ4YTQ4MDVhODAyNDc3MTZmMTgxYmY4ZWY3YTVlYWJiMGMyZjAgcHkzaworNTgwMDQgMGEzMWQxYzQ1YTg5MmJhOWQwZGQzZDUzMWVmZDcxN2M3NDlmMTNhYiBsZWdhY3ktdHJ1bmsKKzU4MDA1IDg4N2UxZmVhYmRiZGU2YWM5YTE2YTUwMjgxNzA2OGViMGUxMjBlOGYgcmVsZWFzZTI1LW1haW50Cis1ODAwNiBmZGM2NzVjYjVlOGFlYzAzNzg3NzhhZDk0NGZhMzk2MGZkZjdlZTYxIGxlZ2FjeS10cnVuaworNTgwMDcgYmU4ZjdkM2NkN2NjMTNiMmY2ZGY2ZDE5ZGRmNzhjZmY3NTBjYzJmYSBweTNrCis1ODAwOCBmY2IwMmNiOTZjYTIwMWMxNzI1NTczMTFiNzM1NTAzOGVjOGEwMjdlIHB5M2sKKzU4MDExIGI0YTJmMTBiMzlkMjBmMTIyMjU1N2I3MTgxYzBmYzYxNTUyOTcwODQgcHkzaworNTgwMTIgNzlkZGE1NjhmNDI1YTM5MDk4NGFjMjllMmYxNDBlM2E2MDY4M2VkNyBweTNrCis1ODAxMyBhYzNmYzJhZTRhYmNmZjBkZTFkMjIwN2JiZTBjNzdjZWU3MGY0OGY0IGxlZ2FjeS10cnVuaworNTgwMTYgYzc2YWNhNGUxMDBkZTExNjJmNDI3ZmQ3MWMxNjU0OWM3NGVjZTY0NiBweTNrCis1ODAxNyA3YzJmNWM2MmY4Y2EwZDkzNzMzZjY1MDI3ODM3OTc0OWUwNWRjODAxIHB5M2sKKzU4MDE4IGVkZmJjZjFmZjczNDA3NTEwZTZmZDYzN2Q1MDI2YjlmYWM5NzY0YTcgYmNhbm5vbi1vYmpjYXAKKzU4MDE5IGM5YzYxNjVmN2MwZDFlMDRjYzZiNzQ4ZDVjMmM0MzU4NThjZTg2YTcgYmNhbm5vbi1vYmpjYXAKKzU4MDIwIGU3ZmQxZmQ5MWM1M2ZhYjZkYTg1NGQyOGRlNmM4MDU0MzkxNDZmZGIgcmVsZWFzZTI1LW1haW50Cis1ODAyMSAyZGJhNWFjOGNlMTU5ZjFlMDdiYTJhNDM2ODFhMDVlNTM0ZmExMDAzIGxlZ2FjeS10cnVuaworNTgwMjIgYmEwOGY3ZjM2ZThlZDRjMDdmNzQzNGJjMTBlYjc5NjI1YzU3NjQxOSBsZWdhY3ktdHJ1bmsKKzU4MDIzIDU1NjU2OWFiM2Y5ZGQ4NTU1MGQ4ZjcxNjMxYWJjMWE5MjRmMTE5ZTAgbGVnYWN5LXRydW5rCis1ODAyNCAxNmNiODVmZWZjNWQwMjVlMzA0ZTUxYzJkNDRiZDVjNTI4NTA3MDc5IHJlbGVhc2UyNS1tYWludAorNTgwMjUgMWJjNGE4ZDU3YjMxMjk4NWY0ZjI5Y2Q1NTdlZDdlMjA0N2JjMWYyOCBweTNrCis1ODAyNiA3MDUyNTkzNTc0YmY0N2I0NDMzNjc3NTkwMDJmYjUwM2FlNjIwN2YyIHB5M2sKKzU4MDMxIDU3ZWFiYjA1MWNmZGNhY2VjOGY3N2E4YTU5ZjExNTU4OTA2YTMzYjcgbGVnYWN5LXRydW5rCis1ODAzMiAzYmMzZjEyY2FlMjhmMDJiMzU3MmFhMmJlN2ZjYjI1MDI1ZWYwN2U1IGxlZ2FjeS10cnVuaworNTgwMzMgODBkMmRhZWM2MWNjOGNhYzVhYWNkOWRkMGY1NjgyNWU0OWIyNTQ3NyBweTNrCis1ODAzNCAyODcxNmRkMTRiYzVmYTI3MTQyY2E1NzllY2FlN2I3OGYyOWFlNjk5IGxlZ2FjeS10cnVuaworNTgwMzUgN2RhZGQyMWZhODdjMTJiMDI5YTk1NmQ2OTAzZWJmM2FhZGU0Y2MwNiBsZWdhY3ktdHJ1bmsKKzU4MDM2IGY2Mjg1NzUzM2NiZWFhMmI5NGFhYWJiODAzMWI4NjVkYTgwZDlmYmMgbGVnYWN5LXRydW5rCis1ODAzNyA0YjIxMzRlNDczMGMyMmQ1ZDE3MjEyZTNhODVjNDRlZTcwMzUyNDA2IGxlZ2FjeS10cnVuaworNTgwMzggMDZmNjY4MmIyMTY2ZTMwN2MyYWExZjJhN2IxOThkZTY0YjhlOGI5MSBweTNrCis1ODAzOSBmYzQ3MGJiZThkMjQyYjg3YjI4MGU1ODM2MjFkYThiYTM2ZGMxMjUzIHB5M2sKKzU4MDQwIDFmOWVlZTA4YWIzNWU5NTdmZjU2NWZmYTUyYmIwMjZmNTIxMjliODYgcHkzaworNTgwNDEgNzU1ZmE1MTg3ZDFiYzEyZTlkNDBiOTUzMDljMzZjYzYwYzQxNTc3NCBweTNrCis1ODA0MiA4ODVmYjE3YzVlMzE5NjgyNWZmZTQ3NmZhYmM5M2Y4NmQ2MmEzYWZhIHB5M2sKKzU4MDQzIGZhNTVkNDJjOGQ5YzhkMmU1N2E2NzI2NmZjN2I4OTU1NzgwOWEyYzAgbGVnYWN5LXRydW5rCis1ODA0NCBiOGE4MjA2YzA4NDkyNTA1ZjNkZDgzNTgxN2Q0NTQxNzk4NTRhNmZkIHJlbGVhc2UyNS1tYWludAorNTgwNDUgYjM2N2Q2ZTQyMjMxNWE5MDRiZTQ1ZDg2ZjY3N2IyNWVhZDBmMDc0MyBkZWNpbWFsLWJyYW5jaAorNTgwNDYgMWY2MjI3MzY1YzM2ZGFiYWJhYTE4MThhNjNjNmFmMDcwZTdhZjRjNCBkZWNpbWFsLWJyYW5jaAorNTgwNDcgZTg1ZmFhMDIxOTFjNDdjOTUwYzE5NzJiMzM3ZTE3Zjg3MmUzMWFiMCBweTNrCis1ODA0OCAwODgxYWJhYjkzNzM4NDFlOGQ2NDdmMDBhYWFmZjBhZjkwZjk5MjJmIGRlY2ltYWwtYnJhbmNoCis1ODA0OSBmZmEwNzQ3YTdjYjdhMjA2MTQ3MDgzMjQ4ZmRiMzI4MDk1ZWRkZmY2IGxlZ2FjeS10cnVuaworNTgwNTMgMmFlNmRiMGJjN2ViY2JiYmM3MzEyZGI2ZTAzYWEwZjU1NzY0MjVkNyBweTNrCis1ODA1NCA4NzZiN2VmNDc3NWQ4ZmJiOWU0YTVkYTNmNDRmMDlhODMxODc5YzZiIHB5M2sKKzU4MDU4IGJhZWI2NmNlN2I1MWRkYjM2NzJjNDU1NmM3MzA0ZmJkYTM0ZGQ0Y2IgcHkzaworNTgwNTkgNzhmMWMzMjljOTgzNzEzYTQxZjMxYTg1YTQwZTg4MzZmYzRjMWYyMyBweTNrCis1ODA2MSBhMDllYTJjZmU3NmEzMDViMDM3MTI5YzFjZDgxNDk1ZDFmNjM3MmU2IGxlZ2FjeS10cnVuaworNTgwNjIgNzVjZDU0ODYzMjUwOWEyZWFjYTdmMGMzMGY3Mzg3YTZiNWIzZGVjNyBweTNrCis1ODA2MyA3NmMxY2M2NzBjNjMzZWZlZDk4MTdhYTAzMDkyYmI2MGVlMGY3NzNjIHB5M2sKKzU4MDY0IGExMWI0ODg1YjQ0NWYyNzgwY2I4MDYzNTAyZTY1YjI0YzFlMTU3OWUgbGVnYWN5LXRydW5rCis1ODA2NyBlOGFhNzI0ZGE5MDU4NGQzNDJiYzg3M2JmY2U1MDUyMGZhODRlMjdlIGxlZ2FjeS10cnVuaworNTgwNjggYjM1NWQyZGJhOWI2ZTI1YTM5YTdlMmY5Zjk1MmIyZWM3YTU3Njg2ZCBweTNrCis1ODA2OSA4MDdhZGMwMzA2NTM1MTUxZmM4MWYwMzYxZTk2ODVmODg3ZjJmYWFjIHB5M2sKKzU4MDcwIDNkMTQ5NjQ4OWY1ODUxYzYwZjVlNTcwOWU1NTdlYTc1NmQ4N2I3MjkgcHkzaworNTgwNzEgOTE3NmE1M2I0YjYyNTBlYWM4NTM2ZDBjZjBiMThhMWFkZjhlMGM0MCBweTNrCis1ODA3MiBmOGE1ZmJhMzVlYjM2YWYzNGE5YjAyZmYzOGNiMjkyOWM4ZDNiOTkwIHB5M2sKKzU4MDczIDc1YjI2NWMwOGM5MTBiZTVhODViYzQ0MzA4NWEyMTMzOGY0NDYxMzAgcHkzaworNTgwNzQgOWY3ZjMxNDcwMzFjMjY4NmRhMjZjZDQwYTEyMDlhYzA3NjYyM2YwNiBweTNrCis1ODA3NSA4NzUwNTJjMmI3YjM0NmZjZGZiM2M2NDNmZDBkYWY3YTUxZGQzMjg3IHB5M2sKKzU4MDc2IGIyN2QzNDkxNjJiZGVlZWQxNmRkYzM2ZTA4MzNjZmY1ZWM1NTJkZDkgcHkzaworNTgwNzcgMDkyODdmMjA1NWFiNWQ4ZGYxNjRlYzc5NGNiODNhYmJkYzM4ODAxOCBweTNrCis1ODA3OCA4N2Q0MTFlYmJhZTBlMjQyN2E5YWVjYWJiNTdkZGI4MjhmNGE3NjZjIHB5M2sKKzU4MDc5IDA5OWFiODIzYjg0YzRhMWVhNGFlMTBhNzVlMzE1OGJkNjc3MWU4YjAgcHkzaworNTgwODAgZmEwMmNkMmNjMzNiOGIzOTM1OGJmZTdjMDUzNmQ1MDUzZjYwNmQwMyBhbGV4LXB5M2sKKzU4MDgxIGE3ZGI5ZWJlZDI4YWQxMjllMGQ3YjBkMmE1ZjlkNjk5NjYwNGQyNzcgYWxleC1weTNrCis1ODA4MiBkOWZjOTI4ZGIxZmFmNTY0NGI1OGYwOWQ1N2Q0NjU2NGJmMzgxOTYzIGFsZXgtcHkzaworNTgwODMgYTY2ODk3NDE5YTM0ZWZhOTc4YWNhYTFjM2JlM2FkMmNmOGQxYTYwZCBhbGV4LXB5M2sKKzU4MDg0IDVhNTFkMWI2NTYyOTk1ZGExZTJhMTlhODFmOWNlYWJlY2JlYjgxNzkgbGVnYWN5LXRydW5rCis1ODA4NSBkMTU1MmMxNTBlOTE0ZDdiY2FjMjBiNmRhYjQyZmYyN2E4YmZjMGJjIHB5M2sKKzU4MDg2IDYwZmI5ODYxMmE5ZTdkYWNkNjJiNDVjNDYxYzk1ODc2NDljZjlkMDAgbGVnYWN5LXRydW5rCis1ODA4NyBjZWE2YTgwYmZmYjI5YjBmODNmMjhiZjVkNDZjNWIzZjcyMjBkNmNhIGxlZ2FjeS10cnVuaworNTgwODggMzRiNTAwMDFkZDJjMzU3NzI2YjlkNGQzZjA1OTM2NzI0ODliYTJmOCBsZWdhY3ktdHJ1bmsKKzU4MDg5IDg2MmFlNDNjZmIyYjJlMjE2Y2U4MGM2YWRjOTZlMjFkZDkwMDBiMTQgbGVnYWN5LXRydW5rCis1ODA5MCA3OGE3Yjk5ZDlmNDJhMGZjMzEzYmY0YWZhYjYxODJmMzRhYjY1OTIwIGxlZ2FjeS10cnVuaworNTgwOTEgY2VkMjRjY2M0OWRkNmJiMzdlNmM4MGVkNDU5OWU2ZjI5M2VjN2M0NyBsZWdhY3ktdHJ1bmsKKzU4MDkyIGFjMTk4ZmJkMzcwMDRmY2E4MTk0YzU1ZTAwNjhlNjM3NjQ2MThlNzAgcHkzaworNTgwOTMgMjgyZTJkMGMyOTM3MWMxMTM0MTNhYTcxN2ZjMGFjOTUwMWY3MWZkOCBweTNrCis1ODA5NCA1YmZmYjZjNzljMDYxMTI0MGNjNmNlMzlmYmEyNjExNTI4ZmIyN2Y5IHB5M2sKKzU4MDk1IDI2YWUyMTA5NjljMDVlN2JmNTRhMTQzMzdhMTkyNDc0OWFmYjY3M2QgcHkzaworNTgwOTYgNGE2Yzc4ODIyNmY1YzJmZDgxMTFhMDMzMDdlMzVjZDY3ZGI0OGY3MiBsZWdhY3ktdHJ1bmsKKzU4MDk3IDE5MzAyMGJmNTJkYzM1NmM5ZjY4YmU0YmU1NjczZTliN2MyZTA2NjggbGVnYWN5LXRydW5rCis1ODA5OCAxZGFkNThlMDBjM2E1MGFkN2Y5NjczZTA3MTYxNGJiZDRmMDIzYjQwIGxlZ2FjeS10cnVuaworNTgwOTkgMzM4MTdkYTUzZmQ3NDNhOTRlOTZhNzY1NDlmY2U4YTZkODFiNGRiNSBsZWdhY3ktdHJ1bmsKKzU4MTAwIDIwYTgwYjgzYTZjNTI2OTZmZmRhM2ZhYzM5MzkwNGVkMDQ3ZDZkMjMgbGVnYWN5LXRydW5rCis1ODEwMSBiM2E0YTE0ZDhhYzMxMjMxOTViOTA5MzcxNzdlY2EwYjFiNjdhY2IzIGxlZ2FjeS10cnVuaworNTgxMDIgZWJkZjJjMDljMTg5OTA4NzQyZmE5NDQ2NjJkNzczNDRhMGVhNTkwYSBsZWdhY3ktdHJ1bmsKKzU4MTAzIGJmZTE4YjkwN2Q4NzM1ZTUxYTk3NjM5Yzg5ZTQwYjM5OTRhOTZkZGQgbGVnYWN5LXRydW5rCis1ODEwNSAxOGQ1YWE1MTM1Y2EzYTUzM2RkYWIwMzM4ZmQ0M2JmY2Y2MzhkYjdmIHB5M2sKKzU4MTA2IDNmZjI0OThjZjU0OGE3NzE3MmE5Y2NjNDlmOTFjZGUwYWUwNGQ0ODYgbGVnYWN5LXRydW5rCis1ODEwNyBlODI4NzZhNjIxYjVmNDM4MjI0MGViNzI3MDNlY2FhODc4Njg3MzAxIHB5M2sKKzU4MTA4IGM1YjZhZTk0NDBiNWRmZjQxZDVlMmVhMTc3NGU4NzA5MDgxMzU0YTIgbGVnYWN5LXRydW5rCis1ODEwOSBlYWQ3YzNjNmJlMWI5YThkOTA5YWJiYjkwNzdiNzA5OTE5ZTlhNDExIHJlbGVhc2UyNS1tYWludAorNTgxMTAgMjc0ZmU0YmJlM2UwNzBkOGM0MjYyNzQ3NjE1NjcwM2UyOWZiMjcwNCBkZWNpbWFsLWJyYW5jaAorNTgxMTIgMjVlYTRlNjZmOWEwMDQ4MGM1MWI1MzQ3YWQ3MGY4ODE4MGEwNGE1NSBsZWdhY3ktdHJ1bmsKKzU4MTEzIDYzN2JmYjBjNWRhZTg1Y2ZiNzA0ZGYxZWZhNjc0MGQ0MTk0YWU0ZTggcHkzaworNTgxMTQgY2EwNmM0YTMwOTFlZTc0YjVjYTIyODYyYWM5M2YzZGU5NDQxOWQ1YSBsZWdhY3ktdHJ1bmsKKzU4MTE1IDU1NTNmOGI0ZGVjMGRlMDgwNzg0Y2MwMjdkMjhjMjQ0NDJhMTQ5ZTAgbGVnYWN5LXRydW5rCis1ODExNiBiNTc5NWRhN2RkMjYzYTUxNTEyNDIzZDZkYWZmMDg3MWE0NzViNWFhIHJlbGVhc2UyNS1tYWludAorNTgxMTcgMDg1ODg4NzZlNGE3NGNmNTgxMTU2NGU1YWY2YzQ0ZjAyNWI3MmRhYSBsZWdhY3ktdHJ1bmsKKzU4MTE4IDIwMzk4YjU1MjY2Yzk2YjVmMWZiMTY3ZmEzN2E3ZTkwN2FlOWM4MDggcmVsZWFzZTI1LW1haW50Cis1ODExOSA4NDBmZjU4ZDFlOWVmYTQ4ZjAzMzg3ZjQ2OTc0Mzc4OWEyNTE4ZWY1IGxlZ2FjeS10cnVuaworNTgxMjAgNzU2YTdiN2NkYzRlNWFkOTk2MGJmYzE0ZDUwNGJjY2Y5ZTM3OGVhMyByZWxlYXNlMjUtbWFpbnQKKzU4MTIxIDkwMDcxNTRhN2M0OTE1NzZmM2E4YWQ4ZmI0ZWY2ZTIzOWNjYTAyNWUgbGVnYWN5LXRydW5rCis1ODEyMiAwNmVmZTgzNTgwNGEyZDJhNmE1NDY1MGQ1YjliNWM0MDZiODc4OTJhIGxlZ2FjeS10cnVuaworNTgxMjMgYzM4ZTM1M2U4NzYxZTg0MDA0NmI2NDdjNjc2ZWRjZmY1YWE3YTNjNSByZWxlYXNlMjUtbWFpbnQKKzU4MTI0IDFlM2Y1N2U3M2UwNGMzYWYzNmU2YjZlZDA2YzQyZWFhOTk4NzhkZjkgcHkzaworNTgxMjUgYTBkMjAxMmZmNGMxNWI1ZWNjOWNjMTViMGI5NGJlNjM3NDUzNDc5NyBsZWdhY3ktdHJ1bmsKKzU4MTI2IDg0ZGM4NmYyMTE5NjRiNzM3NGUxMWM3ODE1Y2ZhZTA1MWUxOWUwN2EgcHkzaworNTgxMjcgNWFiNWE1YzczNjY4ZmRiOWJlNWQyY2VkNDJiODcyOGY4NmNkNTJhNCBweTNrCis1ODEzMSA5NDJmYTFjNGE5ZDBlZjAxMjY2ZDVmNzYzYWE4NGRmNWE1MDkyNTgyIHB5M2sKKzU4MTMyIGJmMmQ4Yjc5NDkzYWEyMDE3MmMyYTQwZjY4ODM1MzVlY2NiYWQyNmIgcHkzaworNTgxMzMgNzEwN2YzOWMyZjY2YzIwZTQzMGJhN2E1NTg5NGI0ZGE0YjAwYTVjOSBsZWdhY3ktdHJ1bmsKKzU4MTM0IDM5ZWJjZjBhOThiNGQxMzQ3ZTc3ZjZiZTI4OWJjNmQ5MjAwMzRhYmQgbGVnYWN5LXRydW5rCis1ODEzNSBlMTAwMzcxYTNmNjJkZTUzYWUyZjBhNWM4MjU1YjBkNjFhN2E1MDkyIGxlZ2FjeS10cnVuaworNTgxMzYgOTQ5YTM1YjI3ZDIwNDJkZmJkYzllMGQ1MDM0YmUwYjJiNDZhZWY2ZSBweTNrCis1ODEzNyBiMmRjZDc1N2E2YTM3NWVjZmVlMmE2NWVmNjY5Y2YwYWMwZDcyOWNhIGRlY2ltYWwtYnJhbmNoCis1ODEzOCA1MjdjNDRlZjI2Y2NkMmUzODNiMjFlZDM5NjljNzYxNzZmZDkyMGNkIGRlY2ltYWwtYnJhbmNoCis1ODEzOSBjNzlhMmYwYTcwMzQyZDQ0YzJmODc3Y2I3ZWRkMGQ4ZWY1MmViNDA1IGxlZ2FjeS10cnVuaworNTgxNDAgYzY3ODUxMTMwZmM0YzZlOWFjZmM4NWRhMjdjYmUzNDlmYjhiMmI5YiBkZWNpbWFsLWJyYW5jaAorNTgxNDEgZjE0ZmI3YjAzZGNhMWViNzY5NjU2MTIxM2I1MGZiZDA4NjA3NTFiNyBkZWNpbWFsLWJyYW5jaAorNTgxNDIgOThiYTVjMjIxMTk4NmNjMmFiOWZmNDlmMzA2N2RkMzdmYzQ4MmJiZiBkZWNpbWFsLWJyYW5jaAorNTgxNDMgNjNmMzE1NGM3MzFkMDIyY2JiMDk4OTkzOGVjNjY3ZDFjNmM4ZDM3MSBsZWdhY3ktdHJ1bmsKKzU4MTQ0IDYzYzk1NzYzYTQzYmU0ZTkxOTQ0ZGFmMTllYTBmMDM4ZTc3NWNiNjUgcmVsZWFzZTI1LW1haW50Cis1ODE0NSBjOGM3YTk0N2E2NDE5N2I4NmVmZTk0NDVkZDNmODg3MDkzZWViOWY0IGxlZ2FjeS10cnVuaworNTgxNDcgMmY4YjNlYTYyYTJlMWVhY2FiNGVkOTAyMzk4NzQwODliMTI5NDk0NCBsZWdhY3ktdHJ1bmsKKzU4MTQ4IGRmOGQzMmQ1ZTQ0NDEwZDY2YTEyZTI0M2Y4NmUxNjliZmJhMDQ1OWIgbGVnYWN5LXRydW5rCis1ODE0OSA2MmMzYzEwNGNhMDEyMDM5YjY5ZjdkOTQyNWI1OWYxNmE5Yzc5YTBkIGxlZ2FjeS10cnVuaworNTgxNTAgZWI5OGYyMjNkNmVhZWFkNDVmYjE4NzUzN2JiY2M3M2M0NGM2YWIzYiBsZWdhY3ktdHJ1bmsKKzU4MTUxIDhiNmRjNjZlMGViNTRlYzdhZjZmZWExNDZiMzFlYjM1NWQzMTA1ZWMgcmVsZWFzZTI1LW1haW50Cis1ODE1MiBlMGY1YWYxNGM5ODgzY2E0MDA1ZmJjYzAxMzA3MjA2OGVkZTZjMGE0IHJlbGVhc2UyNS1tYWludAorNTgxNTMgZTUxZWRkZTI4MDdmMWVhMTFlMWI3MzY5MGFhN2E0N2FmYzQ3ZWM3MCBweTNrCis1ODE1NCAwNWQ3YzNkMGI3N2EyMjhhZWU0YjgxZTNlNjIwZDJjZGY4NTQ5M2MzIGxlZ2FjeS10cnVuaworNTgxNTUgZmRmZjQ4Zjg3ZjM1ZTkwNzU3OGRmMGFlNzRhOWYzNWQyNzdkNTUyYSBsZWdhY3ktdHJ1bmsKKzU4MTU4IDEzMzkxZjlkMjBlYTQ5OTI2MmZjY2Y0NTdhZTY5MWZkYjk2YjU2MGEgcmVsZWFzZTI1LW1haW50Cis1ODE1OSBlMDAyMzM5NWU1MzkzMjhiOTgxOTBkMTc3YmJlYmJkZWY3ZTdkODcxIGxlZ2FjeS10cnVuaworNTgxNjAgNzNmMmM5ZDE2Y2Y0ZDc1YzRjZWE0ZDdmNjYyYzFjYjk1ZTU4ODExYyBsZWdhY3ktdHJ1bmsKKzU4MTY0IDkwNDE5NjVhOTJmMmVmNjZmMDVlZDA1MTg3NDZiNTRlMjVhYTEyNDQgbGVnYWN5LXRydW5rCis1ODE3MyAxYjY2ZTJhNTc5NmYxOGM5NDc1YTZmYzZjNDgwMGQ4MmUxZWM1YTFjIGxlZ2FjeS10cnVuaworNTgxNzUgMmU3ZGQyMDFlYTFkMmM3ZWE5ZTg2MjhhN2JlNTFhNDc1Y2VhZGUzNSBsZWdhY3ktdHJ1bmsKKzU4MTc2IDc2MzAyNDhiNTkzY2RmZDIwMzA3MjA3MmM3MGU1NTk1YzU1NGU2NzEgbGVnYWN5LXRydW5rCis1ODE3NyBhZTk4MjI5M2MxYWUwODljYjdmMTYzZDkzM2YxYzhhZDZiOTE2OGQ2IGxlZ2FjeS10cnVuaworNTgxNzggZTMxMzc5NWVhMTc0MmRkZmFlMWM1NmJjNmJmODAzMTc4YTJlNTM1MCByZWxlYXNlMjUtbWFpbnQKKzU4MTc5IDljYzEzMmM4NDYxZWM2NDU3MWY0MjI2Nzc3OTAwNjg0YTQ5OWFiMDkgcmVsZWFzZTI1LW1haW50Cis1ODE4MCBlMDFkZDJiZjA5OWE1YWRhMGE1NzIzMTNjODMxNWQzNzcxMThlZjQ2IGxlZ2FjeS10cnVuaworNTgxODEgODg5MGJlOTM4NmI3YWM0N2E2MDg3OWRjYmY1ZWU2NWQ3OWE5OGVmMyBsZWdhY3ktdHJ1bmsKKzU4MTgyIDRlNTdjMzZmNmQyZTM2NjIyODMyZTQzZmY5ODgyMTg2OTU1NzcyNmIgcHkzaworNTgxODMgNWQzNDI4ZmY3ZmZhMTgyM2RhZjIyMjUxMGQ5ZmMyMmY5Y2YwYTU3NyBsZWdhY3ktdHJ1bmsKKzU4MTg0IDM2MzIwM2Q3NWQ2OWYzZGY4NzM2OTZiZTA0YjM0MDVkYTgwNTgwYWEgcmVsZWFzZTI1LW1haW50Cis1ODE4NSBjNTQ5MGE5ZWFhZTJmN2VmYzNlYzNiMDM0MDU3NTNkM2U1OTY5NWIwIGxlZ2FjeS10cnVuaworNTgxODYgMmZkZmYwYjViZWI2YWI3YzZmMWM3OGM1MTdjNmU0NWI1OGFkNzEyMiBsZWdhY3ktdHJ1bmsKKzU4MTg3IDRlNTQzZmFlMGRlZDg5ZjhhMjEwYzg3NGRiOWJlNzU3NWJmOWZhNDUgcHkzaworNTgxODggNTMzNWY4OWRmMDgxYmFlNDg3YWQ0MjE4YTZhMDYwZTljYWVmZmUzNSBweTNrLWltcG9ydGxpYgorNTgxODkgZTM5NWE2MzZlZTRhN2NlZTYzZWU3OGY5MWMxNDk2Y2I3MjFiM2JlZiBweTNrLWltcG9ydGxpYgorNTgxOTAgNjQxZDRjYWM5NzU2ZDhhNzE3M2NhZDk3Y2VkNTA3ZWE5MWZjOWMxYSBweTNrLWltcG9ydGxpYgorNTgxOTEgYzFiY2I2MzM5MzU3NzRhMDk4ZmNlNWFjNTVhZTcwZTIyMTExMjA0ZSBweTNrLWltcG9ydGxpYgorNTgxOTIgNTk3NWE3MzE2YzA2NTMyMmU4OWU1YzFjMWM3NDczYzM4OGM4ZmVjOCBsZWdhY3ktdHJ1bmsKKzU4MTkzIGI5MjM2YTc1YTZlNWFlZDRhOTk3YzBjMTdiY2IyY2E2N2Y1ZTA5MjAgbGVnYWN5LXRydW5rCis1ODE5NCBlZjIyMzU0NmI0YmQ2ZGUzMzg4Y2RjZTYxMzhhNGE2OGM4NTI1ZmQ4IHB5M2sKKzU4MTk1IDZhMGVhMDY1YTk5YTJmOThlODEyMGU0MWNhYTI5NmIwMGNlNjdlNzEgcHkzaworNTgxOTYgZjE5MjQ0MmY0NGQ4MWQ4YTRjMmYxNjcxOWJlYmU2M2UzNGUzM2UyZSBweTNrCis1ODE5NyBiMjk1ODJiZGM5M2NkNmNjYmFlYWYxNDZkZGRkYzY3MjgxZDk3N2ZjIGxlZ2FjeS10cnVuaworNTgxOTggN2RkZDQwNTAzZTFhMWQwMDI2OTI5NmE0ZTVjMGZmY2MyM2U1N2NhMSBsZWdhY3ktdHJ1bmsKKzU4MTk5IDc1ZTZiZmEyZDRkMjIwZTdjMWFiZTZiY2VjYjI1YTk4YmQ2YTMyOGIgbGVnYWN5LXRydW5rCis1ODIwMCAzZWQyZjc3MTYzZmMzMGY4ZjkyN2JlZjRmY2VlOWY3MGExZTA3M2JiIHJlbGVhc2UyNS1tYWludAorNTgyMDEgZjJlZjhhZTBiYzE4NzUyOTU1NDcyZTgwZmZmZDg2M2ZiODAwYmQxMyBweTNrCis1ODIwMiAxYmFjMzg2YzE3Y2M2OWI5OWQzMzE1YjlmYWExNTA1MjZjOWZmNjE3IHB5M2sKKzU4MjAzIGViMzk2ZGU4MmMwMzBmYzcwYWZiZTFjNDc2NjIxYjBlN2U0MWE4MGQgcHkzaworNTgyMDQgOGUxM2QzZWFjYWNjYjRiZTdjYmFmNmVhYzc3YTMxMDk1YmVjZWQzNiBsZWdhY3ktdHJ1bmsKKzU4MjA1IDY5MjQ5Mzc3MWFlMzIyYzVkNjg4MDY1ODc1NTY1MmIxMTgzYzQ4YjQgcmVsZWFzZTI1LW1haW50Cis1ODIwNiBkMWZhODIwYjJkY2EwZDFlYWQ3NzU3MTNkYzNkMDI5ZGE0YTU3NDQzIGxlZ2FjeS10cnVuaworNTgyMDcgYzE5ZWM5NTE1YTMzNjc2MjViYTQ2MzgwN2FmYjIwYzVhOWU0ODJmOCBsZWdhY3ktdHJ1bmsKKzU4MjA4IDM1N2Y1NDAxNWEyZDNiYTEwY2RmMTMxYzgzNDM2Y2EzYjRlMjJmNWMgbGVnYWN5LXRydW5rCis1ODIwOSA0NGFhNGZmZGMxYWM5NmY4ODFiNjI3M2QyMzQ4YjBmNmM2NzM5MzMxIGxlZ2FjeS10cnVuaworNTgyMTAgODE0Nzg0NjVmZWYzYjE0NzM4NDU5ZmI3Zjg1MzMxZTVlZGFmY2I0NSBsZWdhY3ktdHJ1bmsKKzU4MjExIDM1N2NmMDdhMjNmZTM2NmJmNmFiNmRlYmI1NjEzYjk3MDQ4OGZkM2IgbGVnYWN5LXRydW5rCis1ODIxMyBiMDZiMTkxYjdjZmEwYjg3YWVlZmU4Y2ZkNDMyZTNjNzVlNTJhMzdhIHB5M2sKKzU4MjE0IGE1ZDM3Y2RjZDMxNjE3M2ExMzVkM2M3YjhlYzczMjJkZmUxNmI1MmUgcHkzaworNTgyMTUgNTIxYmY4N2NlYmJkOWUwOGFmZGNjMTdjNGVmZTAzODViOTA4Y2VjZSBweTNrLWltcG9ydGxpYgorNTgyMTYgZWYxNzIxODM2MTc4MmEwODE4NzRmZDI5OTI1OTk2MTQzNjBlN2Y2OSBsZWdhY3ktdHJ1bmsKKzU4MjE3IDQwOTA5MWIyOGM3ZTlkNjgzNDZiNDJjZDE4ODVhNGZlOWI1YzA4ODYgbGVnYWN5LXRydW5rCis1ODIxOCA3ZDE0YTMxODg4NTAxZGMxZDkwMTg3OTM1NjY0MGVhODVlMzJlZjZmIGxlZ2FjeS10cnVuaworNTgyMTkgZTFjMDlmYTZmYzBmNWQyNmZlMzJiMjk5MDg5Yjk5ZDc2ZTUzNzVkYSBsZWdhY3ktdHJ1bmsKKzU4MjIwIGRjMzlkZGRlYTMzMDA0NWU5NDU0NjYzMWM5MWI2N2Q3YmZiNzY5OGUgbGVnYWN5LXRydW5rCis1ODIyMSA0NmM0NjdkZWU2NTkzOGU3M2U5YjQzYTJkNzM3NGExOTVmMmYwZDMzIGxlZ2FjeS10cnVuaworNTgyMjIgMGM4ZmVjNzYxMTFjN2ZhZWM2MjFjYTg5YzRlZTk5NjA4ZTQyNDcwNyBweTNrCis1ODIyMyBkYTk1MTk3OTdjNjEwNThhMTlhYTBlYzI5ZTQ4Nzk5NzUxZTZiYmRhIHB5M2staW1wb3J0bGliCis1ODIyNCAxODM3Y2FlOTBlNTJlNTUwZmJhYzRlNTU2NDcxZWFlZjIxZmM3NDk2IHB5M2staW1wb3J0bGliCis1ODIyNSBlYzg0NmViYWIyZWZhMGM1NzUxNjFjMTBkYWY0YzhkN2YwODliODdiIGxlZ2FjeS10cnVuaworNTgyMjYgMGZmNDFiMTYzZjViYTFmNWQyODk5OTJkNmFhMTQ0Y2VhNWY1YjZjZSBweTNrCis1ODIyNyBmMzFkNDE1NTU0Y2RiZmM1YjU0OWRkMzc2ZTJhZmRkYTE5MDZiY2VkIHB5M2sKKzU4MjI4IGY2Y2JhYjc1OTI4ZjY4NjQ5YzQ1NmMwOWQxNjJlYjk3ZjBkNWJlNDMgcHkzay1pbXBvcnRsaWIKKzU4MjMwIDczZDI2Y2Q4ZTBiNTY0ZjEwODMyYjdiZWZiNTk5MmFkMzAyNjg0MjIgcHkzay1pbXBvcnRsaWIKKzU4MjMyIGZjMDMzNmY0NDdhZWFmMGI1ZmYzZWQ2NDRlYWJhNDJmMTUwZWEzMjggbGVnYWN5LXRydW5rCis1ODIzMyAzN2ZmYmI3YTE5NjI5MzBmNzJhNWQ0YjBmOTVlMjBlZjIyZGE2Y2I1IHB5M2staW1wb3J0bGliCis1ODIzNiAwNDc2YTJjYzU2NTg3NDQzY2Y0NmZkZWJjZjg4NTExMDYxMWM4OGZmIHB5M2sKKzU4MjM4IGNlZjJlZDgyOTJiNmNmZGJiODU0NjEyOTg1YTJhNmU5NTczMDQ1MzAgcHkzaworNTgyMzkgNWY3MzM4YTRkMWRkZGQyNjE4MWY2MGFkYWFhZDQ5NmM3MDFiZjg3NCBweTNrCis1ODI0MCA1NWE2NjMxNmM4OWVkMmNiMTYxNGMyN2E1NTYwZmJkNDViZGYxNDY2IHB5M2sKKzU4MjQxIGE0ZGUzMTIyMTU3ODQ3ZjMwOGRiZDYyYjNhMWIwMWYzNTE0ZmM1MGEgcHkzaworNTgyNDIgYjRlNjg4ZmQ2NjAyYTU2OTAxNTAzZTI2NDZhOTdlZDcyYWQ5ODE2NyBsZWdhY3ktdHJ1bmsKKzU4MjQzIDk4ZmY5YjJmZjc1NzY1MWQ1ZDJhNmZiMzYzOGUxMDU1YjA2NzJjOTcgcmVsZWFzZTI1LW1haW50Cis1ODI0NCBiOTNlZDA0M2YyNzIxYjViY2ZjZTBlMDAyZmE4NDhmODFjYTM2ZWVlIHJlbGVhc2UyNS1tYWludAorNTgyNDUgZTk4ZTExZDc3NjhjNjViNjgyMTgyNzJkZGFlM2EzZDUxMDFlY2E0MiBsZWdhY3ktdHJ1bmsKKzU4MjQ2IGI3MGVkYjVhNzY4ODQ5MWM3M2Y1NTg1MTViYzVhNzIyN2ZmZjgzY2YgcHkzaworNTgyNDcgNzczZTk3NmJhYjNhZmI1MTQ5ZDI0YTNlMWQxNGNmMTMxY2M1ZWY0ZSBsZWdhY3ktdHJ1bmsKKzU4MjQ5IDBiNjE0ZmQyZGMyYWUwNTZiNmUwOTAxYTY5NzA4MWY2NDljMDBjZTIgbGVnYWN5LXRydW5rCis1ODI1MCA5NDYzZGRhMTkxNjAxM2FmOGRjNzVhYTI4ZDQ0ZWY2Y2NmZDgwMTlhIGxlZ2FjeS10cnVuaworNTgyNTEgNTNmN2M5MmI0MDI0NzU1ZjYyMGQ5MzcxMjAxOTIwNzQ4N2NhODc4MyBsZWdhY3ktdHJ1bmsKKzU4MjUzIDJkYzBlNmUzYWQyMDBlNmFhZWMzY2E5OGZjYTQwNzQ0N2E3ODY3ZDkgcHkzaworNTgyNTQgZjgxZTM5YzQzNzNkYTU4M2RjNDUzMzhjNTNhNTFiOWI4ODhiYTgxZCBweTNrCis1ODI1NSA3OWIwZGIwMzU2ZDMxYzlhNjRhNWQ4OGNhYTRhYjUzYzQzOWNmNThlIHB5M2sKKzU4MjU2IDhkN2U5M2I0N2NhYmQ1M2Y3M2MzNzc4ZDhhNmY4ZjY4NDhkNTc1MjcgcHkzaworNTgyNjAgMWE3OWE0NTAwM2Y1ZGI5NDI2ODA5MGFjZTYzZGEwYWRjMTViODg3MCBweTNrLWltcG9ydGxpYgorNTgyNjggYjkwMjg2YWI4NjI5YWYwMjQxMzgxYzA0MGIzN2U4NDE3YmU5YzE1NSBsZWdhY3ktdHJ1bmsKKzU4MjY5IDg1NmY4ZWE5MjJkZjUxMjk0MmRiZmQ0M2JkMjkzYTIyMWFmYjljMjMgbGVnYWN5LXRydW5rCis1ODI3MCBmNTMwMDU5OGIxMWNhZDEzMTFlMzA4YjJjMDUxMWM3MWJiYWI1NTA3IGxlZ2FjeS10cnVuaworNTgyNzEgMTk0NGY3OWRiOGFkMzQ0ZmU1ZWQxZWU5NTc3OWQ1ZWU4NWU5NDc1YyBsZWdhY3ktdHJ1bmsKKzU4MjcyIDEzYmFhZGEyYTYwMTcxZTQyMmE0ODdiY2E5ZDFmMjY3ODRhZTAwNTkgbGVnYWN5LXRydW5rCis1ODI3NiBhN2M0OGFiODA5ZWM0ODgxYzkxYmNiODM0ZDc4ZTg3ZjkzNWNkNWU0IHB5M2sKKzU4Mjc4IDBmZjQ2ZWY5NDZiMTNkYzUyMzM1MzIyNjY3N2IyM2MxMGZkNzhkNTUgcHkzaworNTgyNzkgOWJjOTg1NTgyY2IyODU2NzBjMTk4YzQ3YWViNGNmMDdiNzRmZjk2OCBweTNrCis1ODI4MSA3ZmNkOTk0NWQxYmZlMzg0Nzc2MzdkYmVhODIyODUwOWRiM2RiZDI5IHB5M2sKKzU4MjgyIGU4OGY4M2MzYjI1ZThjOWU1MjNhYTJkNTBhZGI2ZWNhYTllOGIyMGYgcHkzaworNTgyODUgODY2NzE3MjY5Y2EzODIzNTEzNDRjOGI4OTM5OWQ1ZDMwOGY5MWQ0NyBweTNrLWltcG9ydGxpYgorNTgyODcgODgwYjBiMjJjMTVhOWY3MWJjZjJkZTY4MmMwMmEwMjEyZDdjNDRmMSBweTNrLWltcG9ydGxpYgorNTgyODggMzgxZWQ0MTAwM2U3NjdhZjI5ODRjZWE1Nzc0OGEyNzc1NjM2MjFkZCBsZWdhY3ktdHJ1bmsKKzU4Mjg5IDEwNmE3MWM1MTQ3NzUxYmJmZTA1NmJiMTI3OTRlZTIwZmJiODNkY2MgbGVnYWN5LXRydW5rCis1ODI5MyBhMWNhNGVhNDFlN2U5ZmQ1ODA5NzkyYmMzMjQ2MTUxMzgxMWNiNzg5IHB5M2sKKzU4Mjk0IDlkNmQ5YWM5NWFlMTc2MGQwMTAzYWY4YjRmN2JmNjFiMzAwMWY1OGQgbGVnYWN5LXRydW5rCis1ODI5NSA3OTQzMjYyZTVmYzQzNzY3ZDA0OTViZGM1OTUxZDJkYzAyZWFlYzk4IGxlZ2FjeS10cnVuaworNTgyOTkgYzliZjZlNzAzMDhlNzY0MWFjYmI3M2RhMWFjZGM4ZDM3NTdjNzZhNSBsZWdhY3ktdHJ1bmsKKzU4MzA0IGIxMmNmNDY3YjA1Y2MyZDM3NzJmMDQyNjlhYTgzNTk4MTJjMjI3NWEgbGVnYWN5LXRydW5rCis1ODMwNSAzMzNiMDUyZTlkYTlhMGEyMGNkY2IzYmY1ZjQ2ZjA5MjM3YjRiZTdlIGxlZ2FjeS10cnVuaworNTgzMDYgY2QyODFjMTI4MzZkYzRmMDg3YzU0YzA2NzQ1NzE4NzNlZTA4MzU5YyBsZWdhY3ktdHJ1bmsKKzU4MzA3IDczMmNhMjdhNjc4Y2ZlYzFlZjQ0ZTVjZWJkMmIzMjk2MTRmN2VkZDcgbGVnYWN5LXRydW5rCis1ODMwOCAxYjFhNTY1MmZlZDhmNzc2ZjhlNDFiNzBlM2M4ZTQ3ZmJkNGJhNzU1IGxlZ2FjeS10cnVuaworNTgzMDkgOWFlNGU4YTUzNDg2NjJkZWNhMDJkNmRmYWI1OWE4ZmQzYjc0MWE4ZiBsZWdhY3ktdHJ1bmsKKzU4MzEwIDE3NmI2MTMxYjBiYWY0MTAzZGZmNDEyODZjZWRiMjNjNjdlMGYzYjYgbGVnYWN5LXRydW5rCis1ODMxMSA2NWIzNjU0YzY3ZjYzMWM2N2U0MzYwYTBmNmZhZjk4ZWE1MDY1YWJhIGxlZ2FjeS10cnVuaworNTgzMjUgNWI1MjQ5ZGQxNmI0NTA3OWIxOGMwY2Y0ZWIwNzdiNmNjMDA2MjQzNCBsZWdhY3ktdHJ1bmsKKzU4MzI2IDczZjQ5NjU2NDIwYmNhNzcxNTcyZmEyMjE0ZmE2MzliMmUxMjU4OGIgbGVnYWN5LXRydW5rCis1ODMyNyBlODY5NGFiNTNhNWVjYTNmMjFmYTYzZDgwZDFkZWZjODlmY2FkYTc5IGxlZ2FjeS10cnVuaworNTgzMjggYzBhYmRkNTc5ZWIyNmFmZjQ4NzFmY2M1MmQ1MmY3NWI4ZWJkYjQyYiByZWxlYXNlMjUtbWFpbnQKKzU4MzI5IGYyYzlmMjRhMGY1YTg5ZDRkOGRlM2JhMjJhMzkyNTBhNjM4N2ExMTIgbGVnYWN5LXRydW5rCis1ODMzMCA5OTU2NzcyMTlhNjU1ODJhODQ4NmRjMjdmNDY0MjNhMTMwYjAzZWU2IGxlZ2FjeS10cnVuaworNTgzMzEgMjc1MTE1OTk5YjU4MTIxZmQzMWQ2YWQ5OGU4MTM3MjgyNTlkNWUyZSByZWxlYXNlMjUtbWFpbnQKKzU4MzMyIDFiZWE2ZmFmY2M1MDU3MTA5NjUzZjFlNWViMjYyZGE0ZTg3OTc5NjUgbGVnYWN5LXRydW5rCis1ODMzMyBhNTQzMDA2MzA4YmI5YmQ5NDBlYjViMThiYjlmYjk0OWY3OWI5NWZkIHJlbGVhc2UyNS1tYWludAorNTgzMzQgZTg0MTE5N2MxZDE3ZjU1ZjBiMjdlOWIzOTNmMzliMGI2NTVjNTllZCBsZWdhY3ktdHJ1bmsKKzU4MzM4IDE3YjA3MzcwYTc4MjkwMWFkZjE4MjY4ODg1YzA2NmIxNGEwYzRhMDQgbGVnYWN5LXRydW5rCis1ODM0MyA2OGZjMTA3ZGRiNTBiOThhZmQxMzY4MTZlOWI2YTViNjAzM2E2ZjRkIGxlZ2FjeS10cnVuaworNTgzNDQgZjczNTM1OTViN2ZhODE5Zjk2ZWNjZWM2MzMxZGFkMjMwOWZjOWI0YyBsZWdhY3ktdHJ1bmsKKzU4MzQ1IGFjZGFjNDFmNzEwOTcyYTkyMjUxNWU2MjhhNWU5M2NhY2QxYTBkMWIgcmVsZWFzZTI1LW1haW50Cis1ODM0NiBlZDQ5OWUzNDhhMTE5ZDI3N2RkZmUyMTg5MzYxNzc5Zjg0YjMwMDQzIHB5M2sKKzU4MzQ3IGFlMmE5OWZjNzNkYTZkMmJlYjFhMmJiMDlkMWUyZGEyMzc4NTliNzggcHkzaworNTgzNDggZjM2ZDBmNzA3N2ZjYmY1Zjk3NjNlMjc0Mzg2MTc0Yjc0MDI0MDNkOSBsZWdhY3ktdHJ1bmsKKzU4MzQ5IGFkMzY2ZTMxNmUzMDY0ZjNiNDY3ZmYzYTMzMTdiMmZkMzc1MjhiZWUgcmVsZWFzZTI1LW1haW50Cis1ODM1MCAzOWY0YzUwNmNkNzE4YjA0MzdmODBmYjAwMWNhZjU0ZTc3OTE5YTI3IHJlbGVhc2UyNS1tYWludAorNTgzNTEgM2NkMTQ2M2M5MzhkNmY3YzgzMjgwZjc5NmUzMTI0ZjY4ODk4NDhkOCBsZWdhY3ktdHJ1bmsKKzU4MzUyIDA3NDEzMGEwNzNiNjY4MmFlZDhlODFlZGVhYmUzNDJlZDk5MjU0Y2QgcHkzaworNTgzNTMgMjMxOTJiMWI3MWUyNzU1NGRlNmRmMzA2NDNkZWMxY2ZmOWVmODFmMiBweTNrCis1ODM1NSAxNGFkZGRhODMzNDQzMzc1ZTI5MWVkYzVhYTY3MTUyNGIzMDQyNTgzIHB5M2staW1wb3J0bGliCis1ODM1NiBmNWM3OWY0M2JiZjY5NTg2ZTJmYWFjYzA2YjlmMDg1YjlhYjNjOTM0IGFsZXgtcHkzaworNTgzNTcgYTNiYWQ2OTRjMjgzOWRhM2VmN2RmNWU1NTU4ZWVmYzc3OGJlMzM2NyBhbGV4LXB5M2sKKzU4MzU4IDk0ZTUzNmMzNjQ0OTNmYzhhYzYyNjI1YzVkYTdhNjljM2JhZjJiYzIgYWxleC1weTNrCis1ODM1OSAzMDRkMmNlYTEzNzgzNWI3NGQxMjk1MzEwNDJjYzFmOWI1N2Y1NzkzIGFsZXgtcHkzaworNTgzNjAgOGMxMGFhYzM3MDM3OTI1ZGNjYjdiYmRmYjRiNzE0YjYxYmZiM2ZmYiBweTNrCis1ODM2MiA4YmE1MzAwY2I0YjNiNWQ2YjM4MDcxYzc1NjE5NjVkZDQ1YWVlMzE2IHB5M2sKKzU4MzYzIDc2N2UwYzMxMGE2YWFmYTdmMDliY2RkN2I1N2JkZWM0NGJjYzU0OTEgcHkzaworNTgzNjQgZjYxNDNjNDExNzEzNTY1MDFlNDZhZWNhYTdkYWYwNGU5N2Y4NWQ4ZSBhbGV4LXB5M2sKKzU4MzY1IGY2MDYxYzcxYTRkMjM2YjZlOGQ1M2I4Y2MzN2Y3ZWJkNjE5MDI2ODMgYWxleC1weTNrCis1ODM2NiBmYWI0MDg5ZGFiOWY5ZjBkMTc1ZWRlOWI5NDA0YzcyOGRjMzYzNDQwIHB5M2sKKzU4MzY3IGRlNDFlOTc5YWViZWI4OThjYjY2YTlhMmRlNmEyNWVkNTFmNTE1OGMgcHkzaworNTgzNjggMDQ1OTUyZmYwOGY3NDNiMjMxNjM1MjljN2VlMmEzY2JkNTkwMTQ2NyBsZWdhY3ktdHJ1bmsKKzU4MzY5IDllNjAyMGJiMjM1MjJiMzFjOGU5NzJkMDBhNGMzNTQ1OTI5OThmNGQgbGVnYWN5LXRydW5rCis1ODM3MCA0ZGI1ZGFiN2YyMzU4OWRhYzc4NDQzZGFiNGVjYjQwZTBhYjdjZjIzIGxlZ2FjeS10cnVuaworNTgzNzEgZmY0YmJlNjgyM2ZjOWI5MzBhMmE5ZTFkMTk5MzcxNjgzZmZlMGQxNSBsZWdhY3ktdHJ1bmsKKzU4MzcyIDkxOTA0ZjNlN2JlMWJhNGU3OGUzMTE5N2U1YWEzMmNlZjI1MTU2Y2IgbGVnYWN5LXRydW5rCis1ODM3NSA2NjE0ZDQyZDdmMGEzMzVkOWIxZDQxZWEwNTFjYWQzOTU1NWVhMGQzIHB5M2sKKzU4Mzc2IDBiYTM4MTAwY2RhOTAzMjUxNWE3N2I4YjE5Y2MwZmE3MjYyMzMxZjIgbGVnYWN5LXRydW5rCis1ODM3NyA4YmQ5MTAwMzZjOTdmNzQwYjcwYjQ5YzExYThjOTk3YmFjOWM4Zjg4IGFsZXgtcHkzaworNTgzNzggNTcxM2IxNzZkZGI2OTg0ODdlZThkYjA2NGE1ZTEzNTE4OTNlOTFhYSBweTNrCis1ODM3OSAyN2FmNDUyNDlhODAzZDE1YzYwMWY3NzI0NDVhYThiMWE4ZGY5MTMzIGFsZXgtcHkzaworNTgzODAgNjU5ODdiMzhkZjJlMzU4Y2QzMzJjZWUyZDg0ZWY3MjAzNTE4ZjhkZSBsZWdhY3ktdHJ1bmsKKzU4MzgxIDk2NWU3MTU0MTc3YzY5NTA1OTM4MTA4NTYxMmJjZTk1NWY4YTUzYzUgbGVnYWN5LXRydW5rCis1ODM4MiBlYmYyYTVjZjEzZmJkZTFlNDVkZjBlMjZmMDg3ZjUxODJlZTVhOWFjIGxlZ2FjeS10cnVuaworNTgzODMgOThmNjE4MGI5YjMzMzBiMTAxZjRjMTA2MzYyMWRlNjA4M2ZlMGQ4YiBweTNrCis1ODM4NCAzMzAyMWU0MDNmM2M2NTlkYTMzYzcwNjFhYjRhNjZkMjcxMzhiNzNiIGxlZ2FjeS10cnVuaworNTgzODUgOWMzMDE1ZmM1YmY0NTk5NzAyZGE3YWNmMGE5M2VmMzlhNTNjMzY2NCBsZWdhY3ktdHJ1bmsKKzU4Mzg2IGM0OGY5MzgxZGRmMTMwZjY3NDdjMmI0ZmY4NWVjZmEwMWNhYjZjZDIgbGVnYWN5LXRydW5rCis1ODM4NyBkYzZlMmFkZjhkZDJhMzA2ZTk4NmI3ZjZmZjM1MzE2MGZiMjI2ODAwIHJlbGVhc2UyNS1tYWludAorNTgzODggYTFiNzY3NTdkNjJlZTBmYjA2MTc1NmIzM2Y0MTJhZjUxMGM3ZDZjMSAuLi9jdHlwZXMtYnJhbmNoCis1ODM4OSAyNGQxMTE4MDk0ODAwOTRiMzcxM2IwOWU0Yjc3MTcxNzI0NWE0ZDMyIC4uL2N0eXBlcy1icmFuY2gKKzU4MzkwIDQ3YzAyNzkxZWM2YjJjNmJmMTYwY2NiNzc2N2I3ZDM4Y2Q0MTgwNGEgcHkzaworNTgzOTIgNGE3MmZjNWRmYjc5YjNkMjBhNzdmNWFjYzEwZTMyY2ViNDI1ZmUzNiBweTNrCis1ODM5MyBjOTRkYTg0NzY1ZWUzMDI1MmFiODZmOGEwODgwMzM5MjdlOWI2MWEyIGN0eXBlcy1icmFuY2gKKzU4Mzk0IGZhOTNkZDRlMzRiYzIzMDQ2N2IxOTAwY2JjNjk2MzJmZWY4OTFlYjAgbGVnYWN5LXRydW5rCis1ODM5NSBiYzI1YmFmYTMzYjFmYzQ2ZjhkODFhMzcwZThhMmJlMmY5ODc3ZDE4IHB5M2sKKzU4Mzk2IDM3ZDgyNzBhYzhkOTYxYjQ4M2I4NTlmOGEwMDFkODgxNDQ5M2E1ZmMgbGVnYWN5LXRydW5rCis1ODM5NyAzNDBlNmZkNWQ3NWYwNTU1NTI4ODQ2YzQ2OGRmNzA4YzA5MzVjYWQzIHB5M2sKKzU4Mzk4IDQxNWIxYmFjZmVkN2FmMDBjZDM1NTY1YzBlMzNkMDBmNjA2M2JjZGIgcHkzaworNTgzOTkgOGM1ZTYwZGRhYTgyN2I1ZjAxNzM1MTVhM2IxMTE4ZmRkMWRkYWYyMiBsZWdhY3ktdHJ1bmsKKzU4NDAwIDhkNDBjNTM0OGNhOWQ5M2QwMmQ4ODBhYjc2ODFkNDFjNjJmZTRkNTYgcHkzaworNTg0MDEgZGE1MmI0Yzc3NmE0NTRmYTFhMGQ5MGE1NjMwYTNiZGM3NTEyYjI0NiBsZWdhY3ktdHJ1bmsKKzU4NDAyIDA2YmE0MmMyYzBkMDc0NmE1NmQ1ZjZjM2ZkMTkzMzYxNWYyYWRmOTUgcHkzaworNTg0MDMgZTVkNjg5M2RiYjM2ZWY0NGU5MDI4YmI2ZmMzMzViNjFlM2ExZDM5ZSBsZWdhY3ktdHJ1bmsKKzU4NDA0IDFkNTJlNzgzODQyZGExYTgwNjcxMDgxYTllODM3Yzk1OWQwMWE4YjQgbGVnYWN5LXRydW5rCis1ODQwNSA5ZjdkZTE4NDMxZmU5NTBkNTM5MWU1Nzc0ZWVkMWNkMDQ1ODEwOTk5IGN0eXBlcy1icmFuY2gKKzU4NDA2IGZmZWM0OWQzZDIxNTQ3MWZiZGZlYWQ3YjExZGU2YTJjY2Y4ZmJiYzUgY3R5cGVzLWJyYW5jaAorNTg0MDcgNGY5ZWNlYTgxNzdjYmVkOTdiOWE2YzE4ZjUyMTJmYWQ4YmRhMGM4NiBweTNrCis1ODQwOCBiNGQ4ZjcxNDU5ZTk0OWJjZDA1NzI1MzIxM2FjZDQwOTdhNmRmZTZhIHB5M2sKKzU4NDA5IDRjMTg5YzcxNDRiNzk0YjQ2N2IzNGFhYzhjZTQ1ZTZkMzE4ZjA3MzIgcHkzaworNTg0MTAgMmYzMGJmYjdjNzM4NWYzOGQwNDc3ZGJkOGU4NWNkZmE0NTlhMDgzMSBweTNrCis1ODQxMSBiOWQxOWQ1MWRlMzY5NzVhNWU3YzQ1NzA1ZDk2NTU2MGQ0MzExYzEzIHB5M2sKKzU4NDEyIDZlNjBmNjVmZjM2NDdjOWYxNzA4YzViNTRhZjY2Y2UxNjc2MzU5MDIgcHkzaworNTg0MTMgMmI3NDZmMjhiMzk5YTcxMDY5N2Q4YTMxMGFjMjBjYWFkNmU5MmQ4ZCBweTNrCis1ODQxNCA5OTM3MWJkMmNhOGY4N2Q5YjViYmM0Y2U0MGVlYzVjODMxN2I4NzY1IHB5M2sKKzU4NDE1IDAyNzEwYjg5NzAxZTA4Mzc1MzE3MTVjNjRkOTAxNTI4OGY3ZTlmNjYgbGVnYWN5LXRydW5rCis1ODQxNiAzOWM5YjU2MTI0NTFhMjcyNzM4NDYzYTgxMGFkMGMyNTZjYzBlNDk1IHB5M2staW1wb3J0bGliCis1ODQxNyAzOWNiNWQ5NmNlNzcwMDRlOTcyNzRhNDFlZjA5MDZhNmIyZmJlYmUwIHB5M2staW1wb3J0bGliCis1ODQxOCA4YzVhNDMzYTlkOTBlN2RhMzUxZWM1NTQxMzJjZjQ3NjFjZTQ4ODNkIHB5M2sKKzU4NDE5IGJmMTAxNDQ0OGM0MTdkOTQ4NTZlYjNjMTM3ZGNjMmMzY2Q0OWU0YmEgbGVnYWN5LXRydW5rCis1ODQyMCBiNjM3OGZhNmUxNjQ5MGE3MmE0ZjZmZDU2ZmRjYzRjMGRiNzAxMzdhIGxlZ2FjeS10cnVuaworNTg0MjEgY2E5YjA4ZTdkYzIzZGEwMTBiMGYxZDFhN2VmZmEyNGQ1YWQxNDg4YSBsZWdhY3ktdHJ1bmsKKzU4NDIyIGU0OWFlOTk4MDgwODIyZTM0NzFhOWQ0YWNhYjdiOTUwZjg2NmE2ZDMgbGVnYWN5LXRydW5rCis1ODQyMyAxNmQ0YjkwNDg1MWZlMGExYjE3NDYyNDZlN2YyMzZlNjY3ZTRlNjFhIGxlZ2FjeS10cnVuaworNTg0MjQgY2RhMGI2MjUyNzVhNjFiMWE2YjFkY2UyNGE0ZThjMjZmYWVjMjY1MSBsZWdhY3ktdHJ1bmsKKzU4NDI1IDliNmE0NzNjZmEyMjhiMmQ3MmU2NGZkNmM5YmMwZWIwNjMxM2ZhMDkgbGVnYWN5LXRydW5rCis1ODQyNiBhNDRlNGNjMzNmNWUwM2RjZWU1OWNkMjRjMzFjYWNkZDVlOTI2MWZlIHJlbGVhc2UyNS1tYWludAorNTg0MjcgYTI2MjE3OGMxYzBhZjQ1MmNjNzE5ZmYzZjhlZjI1MDkyZWQzZTJlOCByZWxlYXNlMjUtbWFpbnQKKzU4NDI5IGEzZmQ2ZTU5YmE4MzZlY2Y0NzEzODA4MDY2YzJlNzhjNjk4NTdjNzkgcHkzay1pbXBvcnRsaWIKKzU4NDMwIDgxZjU5OGE3NmY1OWZhMzQyODBlNjZhMDQ5NmMxMDhjODVkNzU4YTEgbGVnYWN5LXRydW5rCis1ODQzMSBmYzA0OGI3MmJmM2QwOGFiYTQ2ODQ5NjViYmQ3MzJlZTQ3OWQ5Zjk3IHJlbGVhc2UyNS1tYWludAorNTg0MzIgZDBiYTM5ZGU3YWI3ZTUwYzgxMDAzMGFmNjhkYjIwZGI0ZGYzMTI5ZCByZWxlYXNlMjUtbWFpbnQKKzU4NDMzIGZiMzEwYjg2MjBlY2UxZDE2NWM1NzYwNTUwYTlhY2QyNmUyNWQwZWQgbGVnYWN5LXRydW5rCis1ODQzNCA5NjAzMjIxYmJhOTAyYWIwMzJkMGViNDYwYzIyYzY3ZjIwMDBkYmZiIGxlZ2FjeS10cnVuaworNTg0MzUgMTA0ZDJmMjlmODg2YjhjOTJlYjc1NTMyMjRlYTVmNTFmMzJlYmJmNSByZWxlYXNlMjUtbWFpbnQKKzU4NDM4IDZhOTdmNzI2MGNhZDA5ODVmMzhmMGRlNGIyYmUxY2ZkYjc2ZmViN2YgcHkzaworNTg0MzkgODMzYjBlNzgxNTA2ZGFkMGEyOTI0NWNjM2FhNjcxYmVkMWZkYzM4NSBweTNrCis1ODQ0MSBmYjlkNTMwNmY0YzcyMjQwYmNmZDRkMjQzYzQyMzMyNmNlY2ExN2U5IHB5M2sKKzU4NDQyIDk5M2UyNGM3MjRiOGM3ZDMyYmNiOTNkMTVlYWNiMThmZTU1NDQxNGIgcHkzaworNTg0NDMgNGVhOTQ1Y2JiYjZkNDlkMWU0MTM1MTMyOGNiZTk0OWNlOGYwZTA1OSBweTNrCis1ODQ0NCA0ODNjYjQxYTU2OTFiYjU1NmFmNTIyOWQ3N2RjNTk1N2RkMmRmNjAzIHJlbGVhc2UyNS1tYWludAorNTg0NDUgMzU4NjYzMWQ4ZDIxYzU5MzY3NTgzZDdmMjc4YTZhYWE0NTg3Nzg5MCBsZWdhY3ktdHJ1bmsKKzU4NDQ2IDlmMDM2NjI2MGNmYmI0ODczNzA4ZWYxYTA1ZTI0MzM0ZDAzMWZiMTIgcHkzaworNTg0NDcgNjQ0ZTI4ZWE5YjIyYTQ2MGZmYzBjNTcyY2I0NjczYjM5YmEzOGY2OSBweTNrCis1ODQ0OCA4ZTcyZGFjZjdmM2E1MjdiMTI1YTY4OTg5NWFhMDdlY2FiODYxYjBlIHB5M2sKKzU4NDUwIDAyYTMzZGNhNDAwMWE1OGZjOWQ1YWVmMjc4MGQ0NmJmZjcxY2Y4NjYgbGVnYWN5LXRydW5rCis1ODQ1MSBjM2EyNTgyMGY1MTIzNWNkNGJlN2Q0MjYxZDlhNWJhY2U3MzdmOTFkIHJlbGVhc2UyNS1tYWludAorNTg0NTIgOTkyNWNlMWZkN2JlN2RmYjQ2Nzk4NDcxMzAyM2UxYWZhMTNmNjQ4MiBweTNrCis1ODQ1MyAzMDZkNTM5NWRmYTI5OTgwOTllNDk1M2Q1YTFmNWQ4Y2Y2N2U5ZjlkIGxlZ2FjeS10cnVuaworNTg0NTUgYWM2MmViMjY3MjA2ZTE1ZDM5OTQ0YjY2M2E3N2I2MDllOThkNjAyYSBweTNrCis1ODQ1NiAwMDE1NTcyZDExYmNmOTg2M2YxMTA2MjY4ZDIxYTJlYWJhYzc4MjA2IHB5M2sKKzU4NDU3IDlmYmY3MzNhMDYzOWJlYTc3ZDkxMDViZWMxYTg3ZGRiOTdhZWMyZWMgcHkzaworNTg0NTkgNGUwNWMyNGUyNmY4YTUzNGI2NGI2OWZlYTFhMzRkYTMwMDdlOGNhMyBsZWdhY3ktdHJ1bmsKKzU4NDYwIDdlMjdkNTBjODY3MjFlNjFmZmZmZTk3MDRiZDY2M2FlODM2N2I3Y2MgbGVnYWN5LXRydW5rCis1ODQ2MSBiNDAzNWQzNjY1YmI4MzAyMjBiMWMzNWQ1N2RmZmQ1NmNiZWY2MmY3IHB5M2sKKzU4NDYzIDEyNmQyZmI3MzViNWEyNjRjMDZhNWY4MTUzNmE2MzMxMjNkMjBhZTggcHkzaworNTg0NjQgNWFkNTc4YWU5ODczZTYxNzQ2NzgwODNkM2VhMzAzMzczYjIyN2UxMCBweTNrCis1ODQ2NSA5MDI5NGQ4MGEzYzViY2ZkZTZhMjM5OTA0NTIyMTUyYzJjYjk4NmVhIHB5M2sKKzU4NDY2IDE5MzE5ZTcwZmMzZWRiYjQ1YjJkMDA3MTYxYzFiM2ExZGUwOTQxODEgcHkzaworNTg0NjggYTVhNGI3ODZiYjIxNWI2YjBhOGJhOTQwYjg0NmMxMWUxNGNmNGQ2NyBsZWdhY3ktdHJ1bmsKKzU4NDcwIDIxOTVkMWYxNzk1ODNhZjZmMGMzZWU4NWZmNTk3Y2U2ZmJkZWRkNjcgcHkzaworNTg0NzEgNjk3NDAwZmNlN2M1YzA0YjViMTdkZThlYzcwZGU3ZGMyMjhjMzVlYSBsZWdhY3ktdHJ1bmsKKzU4NDcyIDUwNTk5YmJiMGM2NzIzOTkyY2U3NDI0N2FmZjZmYmU4OTA5ODg0OTQgcHkzaworNTg0ODEgMTZlMjM3ZWNlMjdkMzlkNDc4MTU0ZWM4ZWEwYjA1NjAyMTQ0Y2RlZCBweTNrLWltcG9ydGxpYgorNTg0ODUgYzllNjFkNjZmZjY1MTgyODFlYzY0MGQzZTMzNzBkNmRkZmFjNWM1NCBweTNrLWltcG9ydGxpYgorNTg0ODYgNmNiNjM5N2QyMjFhZjJhOGEzNzNkN2Y2ZWIzYTAzYzE5MjkzMmIzYyBweTNrCis1ODQ4OCBkNzEzODRjYjU2MDQ0ZGExOTkxYWZlZmYzYjdlNzZhMTZjNDdlYjRjIHB5M2staW1wb3J0bGliCis1ODQ5MSBlNzJhZDRkMjU2ZTg0MGJiN2Q5ODQ1MDU1MDczZjBiMzgwMGM5NzdjIHB5M2sKKzU4NDkzIDY5N2NjMzFhODNmNjVlOTIwZDJmMjIzZWNkY2RkYjkyNjg4ZWQyN2QgcHkzaworNTg0OTUgYWNlNDViMzYxZTg3M2UwZTE3ZDgyMjA5NmJiYTMzNDY1OTE0YTUxYiBweTNrCis1ODUwMCA0MDYwMDQ3YjNmMWQzYjIwY2YwMTQ4NzJkYTExMWI0MWM2ZjM5NTQ1IGxlZ2FjeS10cnVuaworNTg1MDYgMDQ2ZWRhYTE1NjZhN2I4ODVkNjhiNTg0YWNlY2NkYzgxYzYyYzIwYSBsZWdhY3ktdHJ1bmsKKzU4NTA3IDdjYTBiYzBhZDk2MDM1YmNjZDA1MWFiMjRiMjQ0N2U5MzJjZjg1NDEgbGVnYWN5LXRydW5rCis1ODUwOCAwMTZkYThlMmY5NGI4Y2MzODNjMGQ5NDQ2MTYxN2YxNWY5MmJjNzQzIGxlZ2FjeS10cnVuaworNTg1MDkgYzhlZTI2MDczMDUwM2U5OTFmMjFhYWY0ZTAwY2ZlYTE3OTZiNzI3YyBsZWdhY3ktdHJ1bmsKKzU4NTIyIDYxNTdlMGQyN2VlZjYxMzk0YWZkZDZjODNhZDRlZDFjODkwZjEwNGQgbGVnYWN5LXRydW5rCis1ODUzMCBkYTQ0MzM0ZWJlYTI0NTJjYjIzMDJiODM4ZWFmOGNlMDYxNmUxN2RkIGxlZ2FjeS10cnVuaworNTg1MzEgZjFmNzAxYzIyNGMxYzBiOWU0YmRkNjllNGI1ZWI2MDAyMWZiMGI3MiBsZWdhY3ktdHJ1bmsKKzU4NTMyIDI3YTRkMjI0ZWExYjkwOWFhY2I4YWNmODk4MGE5Yzk5NmViYTc5YWIgbGVnYWN5LXRydW5rCis1ODUzMyBiODMzNDZmM2JmYWZkYTRjM2YxNzE5MmEzMWY3ZTExNmIzZmZlZGUxIGxlZ2FjeS10cnVuaworNTg1MzQgMTQzYWNiYmZhZmQ3YzcwNmVjY2Y4NzljOTk2MDRhMjgyNjg2NWVhMSBsZWdhY3ktdHJ1bmsKKzU4NTM1IDZkYjdiYmU4ZjI3Y2U2NzI0MmU5NmYwMmI2N2EwZWJiNTRhYWVjMTMgcHkzaworNTg1MzYgZDIxNjVkYzFiMDhkZmMwNjUxOTZkZjRmOGQwZDI3NmRiMmFiMjlmOCByZWxlYXNlMjUtbWFpbnQKKzU4NTM3IGNjMTU4MzZiNjgwOGI5OThmYmVkOTQxOTZmNjc5MGViMjg3YTFjMGEgbGVnYWN5LXRydW5rCis1ODUzOCBlOWFmNzA2Mzg4ODhkZmQwZmQwOWMxYmYxZTc1MTgzOGYzOGI3ZDNhIGxlZ2FjeS10cnVuaworNTg1MzkgZjI2Nzc4NDMwNDcwMDRkZTYzNjAzNDJiZTZkZDliNjc3ZjgyYjE0MiBsZWdhY3ktdHJ1bmsKKzU4NTQwIDQ0NTA3YzRkZWMyYjVmMjg0NDg3Y2VkMzA2MTQ4MTVmODM0NzBiZjUgcHkzaworNTg1NDEgZDM3YzAwNTE0MDZlNjZlNDgzZjk1MmJhYzgyYTljNjQ0ZWIzZjA5NCByZWxlYXNlMjUtbWFpbnQKKzU4NTQyIDU0OGQwNmU5OGY1NjQ1Y2Y3MDY0NTA1NDI1ZWY1MDQ5YWQyNDJjOGIgbGVnYWN5LXRydW5rCis1ODU0MyBiYjVjYjg5ZWZlMThhZThjMGU0NTU0ZGJlN2QzMTA2MWZiNjAyOTZlIHJlbGVhc2UyNS1tYWludAorNTg1NDQgOTZhZjQxZTUwZTU2MTE3Y2Q2ZWFjN2U3ZTI2OTk3M2ZjMTYzZjRiMCBsZWdhY3ktdHJ1bmsKKzU4NTQ1IGJkZDkyNDI1MTgwZjRiZGYzM2JhYzJhNDIwZjJlNzU5MDVkYTU1YTIgbGVnYWN5LXRydW5rCis1ODU0NiAyMzIwY2Q0ZjY4YjU4YmE3ZmViMTI2ODk3MTEzY2ExOWJhMmY4Njc0IHJlbGVhc2UyNS1tYWludAorNTg1NDggOGEwMTY3NDE2MjIzMjA1OTI1ZGY1YzU0NjBiYjQyZTkxNTM2NjYzNiBsZWdhY3ktdHJ1bmsKKzU4NTUwIDgwNzQ0YzhkMzRkOGIxNGNjNTJjZjIxOTQwNjIwZmUxNTQzZjc4NmQgbGVnYWN5LXRydW5rCis1ODU1MSBkZDAzYWE3NDFmNTY4ODljNTEyNjI4ZjYyNmY1MWYxMmZmYmVjYTNkIHB5M2sKKzU4NTUyIGIxOGY2MDkyZjZlMDE3N2VkMjdlZDhlZjZjZjIzNjhiZDkzNWU4OGYgcHkzaworNTg1NTMgYTJiYjc2ZDExZDY2YjMxM2U0YTk1OGZkZTUwMjgxOTdjZmM3ODE0OSBweTNrCis1ODU1NCA1N2YzZjEyNmYzZjcwMTJjYjJjZWUxNDI3ODVlNGM1NzM0YjUzNzNhIHB5M2sKKzU4NTU1IDc1OTM0MzYwNThkZDUzMTAxNDJmZjQ1MmMwZTRiYjliZmZhMzRlZDIgcHkzaworNTg1NTYgZjBiY2MxMWNhOTY1NjU5ZDQzMWM5MjhjMmE3YmVhYjc4ODgxZmIyNSBweTNrCis1ODU1NyBkMzc4YWNkYzMwZWVkMjJjZThkNjhiNWJmNzhmYTVmMzk3NmQ0YmVmIHB5M2sKKzU4NTU5IDY1ZmUxOTU1MThjYjJmZDBiZmZhNDgxOTM3NzU3MmZiYmEzMjE4ZjIgbGVnYWN5LXRydW5rCis1ODU2MSBjYjk0ZWJkOWFmYTdhMWFjZjZmOTU1ZDRmZmZhYWUwN2VjMDBmZjYxIGxlZ2FjeS10cnVuaworNTg1NjIgYTIxNDBlYjVmYzZhY2VmMTRlOGRkYzk3OTc3NDFhZjE0YTc3NTdiMCBsZWdhY3ktdHJ1bmsKKzU4NTY0IDNjYjY3ODYyOGFmMzhlODU2Y2VlM2QzNmI4MDZjODNkZDEwYmU0YzcgbGVnYWN5LXRydW5rCis1ODU2NyAyNTJiOWQyMmNhNTU1YzcwYzJiOGYyMGMwNDRiYmQ2OWQ3NDBlMDQ2IGxlZ2FjeS10cnVuaworNTg1NjggZDcyNzljMzIxYmI3Y2M4ZTI0ZGMzY2E1ZmZhNTBiNzkzMDdhZGQ1MSBsZWdhY3ktdHJ1bmsKKzU4NTY5IDIwMWRkMDk0OTk5OTBlZjEyOWFhMGVlNWI0OGM2NmQ1YThjYjIyNjcgbGVnYWN5LXRydW5rCis1ODU3MCBjNGNjM2MyNDg5YTA0ODI5NTBiOTgxZDFmMTc4OThjNzJkYzhhYTVhIGxlZ2FjeS10cnVuaworNTg1NzEgODg5OTdmMDgyMTc0OWFkMGZlMTU2YzcxNTFiMjBmMzdhZDc3MDY1ZCBsZWdhY3ktdHJ1bmsKKzU4NTcyIDVlNDIxMTdmOWNiY2MwMTA1MzUwYjE0YjI5OTM0N2QwZWI1MDQ5NGQgbGVnYWN5LXRydW5rCis1ODU3MyAyNTI5NmVjMDJiMTljNTFmZDJkMWY0NmVlNGM1NzYwYWIxZjI0ZTA4IGxlZ2FjeS10cnVuaworNTg1NzQgNWNiYTE0YTU2NGZkZGZhZWQ4MDAxNmQ3NTYxZWJkMzAxZDRlMjNiMSBsZWdhY3ktdHJ1bmsKKzU4NTc1IDhmZTIyNjkzMWVlNzIxYWUzZGNhMTE1YWQ0Yzg3YTZmMjZjN2Q2ZjggcHkzaworNTg1NzYgN2MzNWE1OTMxNzU1ZmQ2NWQwMGY4MDkwOTRjNjEzYjEyNWE5MGE1MSBsZWdhY3ktdHJ1bmsKKzU4NTc3IDFiZjQ3NjIzOWYzOTU5ZTIwYmMwZDA1OTVkNTM3MzM5MzQyNjI1NjkgbGVnYWN5LXRydW5rCis1ODU3OCBhNTc2MzUxMDBkYzM5NDZiMTY2ZDJhZTdkODBjZWI1OGFkNGZiNmVmIGxlZ2FjeS10cnVuaworNTg1NzkgNDgyMjBkNjQ0YzhlMTA5YTJjMDEzYTQwMmY5ZTc3M2ZjMWI5NDcwOCBsZWdhY3ktdHJ1bmsKKzU4NTgwIGZhZjVkZTY5ZTk3NzFlNjc2NmEwODQwYWY1MjMxMDY3OGFhOTIwOTIgbGVnYWN5LXRydW5rCis1ODU4MSBjNWM5N2Q3YWU5MGNlOGY0ZjVlN2U0OGU3ZTY3MWEyNWZjZjhiMzk2IGxlZ2FjeS10cnVuaworNTg1ODIgNGY2NjJiYTA5ZjFmYmUzODYxZmNkNWFlODVjMGMzNTI2ZGUxYmUzMyBsZWdhY3ktdHJ1bmsKKzU4NTgzIDZkZjk4NTc0NGQ5Njc4ZmE4YjA4ZjI5YTlkYzlmODZhNDcyYTY5ODkgbGVnYWN5LXRydW5rCis1ODU4NCAwMzA1NjM2NWExYjY2MmNhZjI4NzZjNDNhZDNmZTVlOGJlNzM4YjIyIGxlZ2FjeS10cnVuaworNTg1ODcgMDA2N2E2YWI0ODU0ZTcxNjU3YTViYjkyYjcyYWUyNzE3ZjI2YTI2ZCBweTNrCis1ODU4OCA5MDIxMjViNTk0Y2M4OTlmODhlNzA1Nzk3OWVlOWQ5NDUwNWE1NTVkIGxlZ2FjeS10cnVuaworNTg1OTAgMTc4MjU4M2YxMTU4YmYzNTkwMzU5N2Y5NGJmZTI4ZGJlZWRlMjUwMSBweTNrCis1ODU5MiBhNThmMzE5MzdkYWY5Y2RjZGE3ZGM5M2VmZWI0MWE3MmVhZmY2Y2QxIHB5M2sKKzU4NTkzIGU4MmQ5YTg4ZWQ5ZTQyODUyYzVhZGVmMWQ0YzM1YWU3YTc4YTBhMzcgcHkzaworNTg1OTQgYjZhMjlhMGVhMzA3ZDM5MzlkZTc4NGUwOWViMjBiOTU3YmE4YjlmMiBsZWdhY3ktdHJ1bmsKKzU4NTk2IGIxMDU0NDgyN2FmNzBiMzU3MDNjMmE0ZmYzZmI0MzkzYTNiYTg3NzYgcHkzaworNTg1OTcgYTMyZTdlYzkzMzk0ZTE1MjVkZWNjZmFiMjFlOTY5ZmIxYzljMjI3ZSBweTNrCis1ODU5OCAwNDA4OGFiZjRlNGZkMDNlNzg4NTQ1NmZlMzhkMTdmYzNmODQ0YjZjIGxlZ2FjeS10cnVuaworNTg1OTkgNTNlZTg5NDNkMTY1OGRhYWMzYTgwZmY4MTk3MTc1MDI4OGJhZjRmYiByZWxlYXNlMjUtbWFpbnQKKzU4NjAwIGRjODFiY2ZjMzUxYWUwMWJhMzdlM2YzYjY3Nzc0NDA4N2ZhNzdjNjkgcmVsZWFzZTI1LW1haW50Cis1ODYwMSBlYjkwOGExOWMwNWEyNGUwODAzMDY2Yjg2NWM3NTM4YzhiM2RhMTUwIGxlZ2FjeS10cnVuaworNTg2MDIgOTVkOGM5MTNlOGJmMzYxMTJlYzc3YmE2MzZjNzExYmIxZGQxNDEzZCBweTNrCis1ODYwMyA5OTUyNmM0MDE0N2IxNDViNGJjMjBhMDE3OWRhYmRkYmI2Y2FiYWEwIHB5M2sKKzU4NjA3IGNkNWIzODNhMzk3ZTZlMjEyZGY2ZmZiNWQzMjZiZGQyYTJjYWNiMjYgcHkzaworNTg2MDkgNDQxZDYwOWQwOTZiNWRmNjYwM2UxNGY3NDhjYmE0Nzk2Mjg2MjQ5ZCBsZWdhY3ktdHJ1bmsKKzU4NjEwIDYzNGMzZDQwNDhlN2Q3ZDcwZTY1MTk2M2IxYzVkOGFlZGU4MWM5YzkgcHkzaworNTg2MTEgZjliNzk1NGQ3ODhkNjBjZDA0ZDUyNGVmMjI2ZjZmZGFkYTg3NGIxYiBjdHlwZXMtYnJhbmNoCis1ODYxMiBkYTgyMzBmYWYyYWViYmZhMzE4MGI0ODhhYWM1Mzg5YmIyZjJhZTYzIHB5M2sKKzU4NjEzIGM5ZjI4Njk3ZTE5OTViOTMwMGQyMDY2ZGI1NWVhYmU3NGUzMzk0YjcgcHkzaworNTg2MTQgNzk5MDRlODQxZGYzODBjNjBkYmFjNzBmODk4NmI0YzFiYTNlNGYwMCBjdHlwZXMtYnJhbmNoCis1ODYxNSAzNDc5MmI5ZTRiNDI4ZGViMTRkNjY5OWFmYzFiN2E0ZmQ4NDU0ZjM3IGN0eXBlcy1icmFuY2gKKzU4NjE3IDAwM2QzNTIxNWVmMmFjNjI2N2VmZDFjYTRjNWNhNWQ3MWZmOWQzZWUgcHkzaworNTg2MTggMGNhMWQyOWI4M2MyYjZkYTlkYWFlOWQyYjE3MGI4ZGE5OGRlZmNmYSBsZWdhY3ktdHJ1bmsKKzU4NjE5IDBjNzZlNTNjMWQ2NTJlMTM3ODgzZDE5YTc1ZjUxYzc5NjhkYmQ0OGUgcHkzaworNTg2MjAgYTA5ODNmNTVjOTU3NWNlY2ZmZTBkMDRmOTU2YWVlZTQxYzMyYmViMyBsZWdhY3ktdHJ1bmsKKzU4NjIxIGE3NjBjMWEwN2QyNmYwYThmMTE1NjVmN2JhM2U3Y2U4MmMxNzNiN2MgbGVnYWN5LXRydW5rCis1ODYyMiAzNmIyYWFmNDU3YjRhZTJiODQyY2RmMWVlZDE4NDc4M2FiNTYyYWMzIGxlZ2FjeS10cnVuaworNTg2MjMgMDhlZTI1NmE5YmQxMTkxNjQyMzAzMjZmYzI1NmE5OWY3N2ZhYmZlNyBsZWdhY3ktdHJ1bmsKKzU4NjI0IDc0MDhlMWFlOThjNGEwNzViY2E4YWJlY2E3YTc4NmExNzViNGEwM2IgbGVnYWN5LXRydW5rCis1ODYyNSA5NzRlNjRjYzA4M2RjYTkyNmNkNDMxYzM1MDU0NjQ5NTI2OTBlMWZiIHJlbGVhc2UyNS1tYWludAorNTg2MjggM2ExNGM5MDRkYTIzMjdjMDQxMGRkMjBhNDdiZmEzOWI0MjJhMzEyYiBsZWdhY3ktdHJ1bmsKKzU4NjI5IDczMjI3NWM0MDI2YjUyMGJhNGUxNjRlNmNkYzkwY2Q1MjMwMmU4MDAgcmVsZWFzZTI1LW1haW50Cis1ODYzMCBlNTNkOTVjM2MwYzRkYjE0ZTk5ZWJhM2FjYzE2OTlmMmI2NTY0ZTNlIHJlbGVhc2UyNC1tYWludAorNTg2MzkgM2RmNWM3NDYxNjAzY2ZhOWE1NWJlYzc5ZGQwZjE1N2NiNzRlNTgxNyBweTNrCis1ODY0MCAzM2VmYmZjMjhkMmIzNzliNTNjNTJkMjc3Y2MyZTZiNDdjZWZlZTlkIHB5M2sKKzU4NjQxIDU5MGExYmVlZWY4OWQxZGFjMWRjYjEyNGJlZjMzY2FjN2Q2YTM3YzggbGVnYWN5LXRydW5rCis1ODY0MiA3YzdiNDJmNjRmNDFkNDE4ZDgzNTg0ZDg3ZTY0YjJiYzdhYzk1MmM2IHB5M2sKKzU4NjQzIGJhYzM0M2FkZmZkOWQyNzMyZjdiYTQxZWM2ZGYxMmYzYmMzMjQzMDcgbGVnYWN5LXRydW5rCis1ODY0NSAzZTYzNDhiYzlhMjgzNzQ5MTA0OWViYzY5YTdiYjE4ZDg1MjkyMTE5IGxlZ2FjeS10cnVuaworNTg2NDYgOGRlYTU5OTc5YmEyZTk4OGJhZWQ1MmVlNWEyM2ZkYjc0OWE5NDNlYSBweTNrCis1ODY0NyA1N2MwZDA4ODQzMDY0ODU5ZWUxZGZjYjZhN2UxY2NlZGJhODdiYjJiIHJlbGVhc2UyNS1tYWludAorNTg2NDggNTFiYTEyZTBhMWQ1MGUyNzMzMTFlNzQ2ZTEyZTYyZTFlOGQ4NTBlMSBweTNrCis1ODY0OSA4ZmUyNGU1ZWVlZmZiOTlkM2JhY2M0OTViOWIwNjA3Yzk3OGUzYzNlIHB5M2sKKzU4NjUwIGQ2NjAxOGVkM2RlZDU5MGJhMWY2YzY2NzA1ZWMzYWIwMDQwMzdkZWMgcHkzaworNTg2NTEgOTAwZWYwZWIzZjk0YjUwMTI1MDFmNDAyOGY5YWVkZjExNTk2MDA5NSBsZWdhY3ktdHJ1bmsKKzU4NjUyIDM1ZGE5MTVhZGVkY2FjYzFhMDMyYThhODRiNWMxN2U3NTg3ZWYxNWYgbGVnYWN5LXRydW5rCis1ODY1MyA4MjM3NzJmMWQyYmU5MDhiNWM1NDkyZTBiNzRiMzhiYmRiOTkyYjllIGxlZ2FjeS10cnVuaworNTg2NTQgZmVkNjQzMTRkOTQ0OTgzZmIzZmZiODMzODA5NDk5YjdiYTcyMmI4NSByZWxlYXNlMjUtbWFpbnQKKzU4NjU1IDUzMDU3M2NkNGY3YTc3ODE2OGJkMDYxZGZhY2E4YTIwMGZlOTgyN2QgbGVnYWN5LXRydW5rCis1ODY1NiA1MDlhNzM2ZWJkYjk3MDYyMDY2YTFkYTU3MjBiNGZlOWIyOTMwZjY1IGxlZ2FjeS10cnVuaworNTg2NTcgYTg4MThmZmUyNGQxMWYxMDE0NWMzNTFlNGM2OGE5NWM3NTgwODkyNCBweTNrCis1ODY1OCA3MDc1ZDQ2NGQ5Mzg0NTNmYjM4NjQyOTQ2NzY1ZmFmNTFkYmUzYzllIHB5M2sKKzU4NjU5IDA2YmRiODQzOWUyOTg0YzI3NjQ3NjA4Mjk1MDAzOWU5YzhlMzE3YWIgcHkzaworNTg2NjAgZDNiZjAwOWZiYmE5OGQzYjdjMzIyZGNmMWVjZWFkZTYzYjg2OGY3ZiBsZWdhY3ktdHJ1bmsKKzU4NjYyIDRiYjZhMGMzNTNhYjY4NmU3NjU3MTJmMjViMTY0ZWQ4YWUxZDE5ZGYgcHkzaworNTg2NjMgNWIxMmIwYmQ4MTg4MGU5OGYwMGU5Yzk3MzYyYWZkYjU3ZTM1ZDRhMSBweTNrCis1ODY2NCAxOTk4ZWUwZWZmMmMxMjY2YTkwNzVmODBjMmZkMjE0MWEzNTc3YzQ4IHB5M2sKKzU4NjY1IDZhYjY0ZjZiNGMwMzE3ZTcxMGFiYTc5ZTA1YzFjOGE2ZmEzZWUzNzAgcHkzaworNTg2NzMgMDY1MzE4NDhhMzk0NmVhZTg5OTNhNGM0ZWRhYzA4OTExMGJkMGE5MCBweTNrCis1ODY3NCA2NGNlM2JmM2E2YTlkMzhkYzg1MGM2MWExZDI2N2UzYzI0YmVlNjNlIHB5M2sKKzU4Njc1IGZjNmJhMDg4YmQ3N2NhYjE4ZDA5MjhhNzI5ODcyZDkyOTE5MmQ0ZWUgbGVnYWN5LXRydW5rCis1ODY3NiA1YTRlOGJkYWRiODUwNGNiN2ExN2FkMTE3MmFlMGJjZWQxNTY0OTc5IHB5M2sKKzU4Njc3IDUwYTM0NzVkYjQ2NmI3ZDlkM2JhMWRkY2E3MjcxYTYwMzY1ZDhlMzAgcHkzaworNTg2NzggMDUwMmE4YzY0ZWYyMGVmZjhiYjg5YzU1NTc5Y2NkNmE3NDk0MTI2YiBweTNrCis1ODY3OSA3ZmI4NjgwMjNkNzVhZWY4NWZiMjFlMWUzNDIwYWU4MmFlZWMyNDc2IHB5M2stcGVwMzEzNworNTg2ODAgMTcyNmE0YzkxNmYwMTMxNDNkYjBjODA5ZWM2YmVkZjhjOTdhYTljZCBweTNrLXBlcDMxMzcKKzU4NjgxIGZhN2NkOGVhYjJkMmMzZTA3ZWJhYWQwM2QzYWEyOWM3ZmU2YTFiYTAgcHkzay1wZXAzMTM3Cis1ODY4MiBiMTAyYjgzNjFkNWU5M2NlZjU0MWY3OTllYWUzM2RhM2M5ZmQxMTBhIHB5M2sKKzU4NjgzIDA0MGY1MjJmZWUxMTIzOGYyMDZjOGEwNjFiMGRlYTdhZjZkMGY1NGYgcHkzaworNTg2ODQgMjNlNmVjMWI1ZjM1MGQ2ZjU2NTRjYTc5NmRlYmYzM2UxNDdjMWIwZCBweTNrCis1ODY4NSBmZmFhNmNlNGJmYjQ3ODliZWNmYjlmNmY3OTY3ZmE2YjMzNWQwOTI2IHB5M2sKKzU4Njg2IGQ0NmEzMWY1YzVkZjI2YjA5MTNkNjJlM2FkOGUzM2U2YjA2YjI5MzAgcHkzaworNTg2ODcgZmQ0ZDEwZTk5M2I3OWM0MzhlYjFiMmM2NzBlYTdkNTg1YTY1N2I2OSBweTNrCis1ODY4OCA5N2UyZTg5YzY1OTEyZjJkNjIyYTU1OTAzMzljZDMzYWE0NTBlYTc5IHB5M2stcGVwMzEzNworNTg2ODkgZTE4OWQzMmIzNzE5MDY4YmFmNmJmMjdlZGI2NDcwMjY2ZDRhMDI3YyBweTNrLXBlcDMxMzcKKzU4NjkwIDYxYmM4MmRmMzVmZjkwNmE3MzRkZDJiM2Y3YTVjODM1Y2EwODQ1MDIgcHkzay1wZXAzMTM3Cis1ODY5MSA1ZDBiZTk3ZjE3MDQwY2YzZTRiZGM3MGQxNDA3YjU0ODk3MjQ0OGM4IHB5M2stcGVwMzEzNworNTg2OTIgMmU5ZWRjZGRkZDQ0M2E1M2NkOGZkNWE3NTM2NWRhNjVmMzlmYzAzYyBweTNrLXBlcDMxMzcKKzU4NjkzIGRhY2M3MzBjNzI5OGQ1OTAyNjE5MTgzYzEyN2FiNjZiN2RkYjg4MWQgcHkzay1wZXAzMTM3Cis1ODY5NCA4ZmQzZGI2NTMzMThlYmVkZDgwNjg3YmYwZGM2NDRhZjRhZjI2ZDM5IHB5M2sKKzU4Njk1IGRjOTgxNjJlZjg0NGYwYTZmMWQyZGUwNjkwMTIyNjUxNTVhMDA4OTAgcHkzay1wZXAzMTM3Cis1ODY5NiBmNWJjOTQ4MWY4ODNmY2E2NGI5NWUzYWYyN2RmNjgxM2UyM2VkNzEwIGxlZ2FjeS10cnVuaworNTg2OTcgNjA4ZWU0YjgyMGFmYTcyMGNkYTM4MTNiZWU4ZmNiYTAyMWRhNDcyMyBsZWdhY3ktdHJ1bmsKKzU4Njk4IDM2NTkxM2Q3YWY3ZDY1ZDQ4YmRmNDhmNjdlMTMxMjY4NWZhYjdiMDcgbGVnYWN5LXRydW5rCis1ODY5OSA5MWZkNjUwNDVlZWU2OGFkYmY4NGVmZjNkNjYwNmQ2NDE5NzdjMDBhIHB5M2stcGVwMzEzNworNTg3MDAgNzM2MGMxMmJkODFkNDllZDhiYWM1MWQwZjc3NTkzYzIyNDYwOGU0MSBsZWdhY3ktdHJ1bmsKKzU4NzAxIDUxYTczNzQxMDVhYzRjM2Y1Y2I1MzE4NzAyOGZiYjBmNjliY2VlMTcgcHkzaworNTg3MDIgM2Y0NjdhY2NlY2QyZTQ2MmIwZDdiNWJkZjhlYTViNmRmY2E4OTU0MiBweTNrCis1ODcwMyAxMmQyMGZkZmVhNjJmNTE5NzRjNTA1Yzk5YjIyNTNiMjk2NmM1ZmY1IHB5M2stcGVwMzEzNworNTg3MDQgZDhmNzQ0MmI4Y2FlODY2ZmE4ZmE1MTJmOTczMDA4ODE5NDhmNTE3ZiBweTNrCis1ODcwNSBjMzQ3MjA3NzdjYjY2ZmYzNGFhNGJkZThlZGIwN2FkYzc0Njk3MGRiIHB5M2sKKzU4NzA2IDQwZTNhMmRiNWQ5ZTMwM2RkN2E5ZWUwNTQxODBjMTgwOWMyMzM1NGUgbGVnYWN5LXRydW5rCis1ODcwNyAzMjM1NDg3MGRmYjJiYjhmZjYxMjZhNmNjMWUzNWE1ZGY0MzczZTczIHB5M2stcGVwMzEzNworNTg3MDggNzZhNTVmN2I1MDYwMDc1MmExYTI3YTUxZmJkODc1M2E2NzMxNmYyYiBweTNrLXBlcDMxMzcKKzU4NzA5IDEyNGNiZjFhMGUzZWE0ODA1MTkyZTllODdjNWNlOGJlN2M1YjQ0N2UgbGVnYWN5LXRydW5rCis1ODcxMCBhNWRkMjc4YjBjMWZiYTQwZGQ3OWY0Y2M0NzhlNDYwNDg5NTRlYmFhIGxlZ2FjeS10cnVuaworNTg3MTEgMDBiMTM2YjdkYTg0NGQzMmRlODhkMmVhYTVkOTIxYTJmYTkzZGE4ZCBweTNrCis1ODcxMiA0N2M1NTNlYjc1ZDkxZDI2YmEyNjI3NTQ2M2RhOTkxZjAyNGI0MjRmIGN0eXBlcy1icmFuY2gKKzU4NzEzIDhmN2Y2Yzg1MGRiZDI2MmI2OWMyYjUzYzg0ZjIwOWNlMmU5YzZkNjUgcHkzay1wZXAzMTM3Cis1ODcxNCAyNmZlNzA4OWYxNGFmMWViZDIzN2RiZmU3MWRkYmQzNWQwMjNjZGQ4IHB5M2sKKzU4NzE1IDMzNDgwNzY1ZjY2OTMwMWZiNDIxZmI1MGExZDdkMzBjMDMzZmQxMTggbGVnYWN5LXRydW5rCis1ODcxNiBlMmZlNTg2MDRjYjFjZWJmNzhlYjQ2NGEwMGI3OTFmNDI1MTJiZjhkIGxlZ2FjeS10cnVuaworNTg3MTcgOGVkZWI1MTY4YmY1MTY2NDE0NjczZmQ4YjdhYjc4OTNjNWQ1YjEwZSBweTNrCis1ODcxOCBjMTIxNGJkNmVkMTYwNTJlOTllZTFlY2UwMTU0Njk4NTQzODhkMmZhIHB5M2sKKzU4NzE5IGU1MTBiNzE2YmQ4MGI3YTc2OWNmZDViOWJjMTM0NjZhYTZhODg5MjQgcHkzaworNTg3MjAgMDQ2ODI2ODc4MTdlYjk0NGFmMDk5NDhiNTdiMWNmMWRjYTg3NjVmNSBweTNrCis1ODcyMSBlOTE1MDZiNGI4NWY4YWJkMDNlZjhmNzUzYmE0NGJjZTgwMzA0ZTY1IHB5M2stcGVwMzEzNworNTg3MjggNzhhOGFlYTZjYjBhZTUxZTMyZDVmYzI2MmEwOWQ2M2Y1MDU0ZDJmNCBsZWdhY3ktdHJ1bmsKKzU4NzI5IGUyMzRkOTc2YjVkNDdiNzAwMTdjOWI0M2Y3MmY3N2Q1OTYzZTY0YjkgY3R5cGVzLWJyYW5jaAorNTg3MzAgZTNhMDFmNDkzZTk0ZjM1ODM4MDhhOWNkYjViNDYwYzA0NzJjZTU4MiBweTNrLXBlcDMxMzcKKzU4NzMxIDQzMWM1YTFhNjI5MDExMGQxMGVlOWEzMGNkYmQwMDBiNTRkMWFkYjIgbGVnYWN5LXRydW5rCis1ODczMiBiY2Y2MjllNDMwODI3ODNiMjUyZWUwYjM1MDExYWI4ZmUxMzE4ZDY4IHB5M2sKKzU4NzMzIDUyNTMxYjRmNTM1ZDNiOTQ5NjllYzA3NGY5MDllMDkyYTM5YTExMjYgcHkzaworNTg3MzQgZWViMzcyODE4OTU5NTU3ZjNmZmQ0Y2U4ODMwMDAxZDgzNmY3ZjRhZSBweTNrCis1ODczNSBmZTU3MGNkNWIxOGYxZjJkNjY3MGQ1N2I5NWM4YWQ0NTNiMTIwNjJjIHB5M2stcGVwMzEzNworNTg3MzYgZDQ3YTA0YTJlMGJiNDVlNWU5MTY3OTE1YTU0NWI2ZDJhOWM2YmI1MiBweTNrCis1ODczNyBlYTY1MDExMzQyODY4YzQyMmI5ZTcyOGU5OTU5OTY1MWI3MDRjNDEwIGxlZ2FjeS10cnVuaworNTg3MzggNjBkOTYxMjA0NjBiMWM0NzJlYTlkZjQzMjhmMDBlNWFlNzc0ODljMCByZWxlYXNlMjUtbWFpbnQKKzU4NzM5IGU0MjBhYTdmNTBjYjUwZGIzNTQ1NDhjOTJmOTAwZTk1MGQ4YjhmNDMgbGVnYWN5LXRydW5rCis1ODc0MCAzZTczOGU1MmEzY2ViMTFiYmVhNDU3MzQyNWY1Nzc3MDJhNjYwNmZiIHJlbGVhc2UyNS1tYWludAorNTg3NDEgYmVmODhkYTgyMWE0YzJjNzI2NjlhMGU0Y2Q1MzZmZDVmM2Y2ZTNlNyBweTNrLXBlcDMxMzcKKzU4NzQyIGEyZjllNmNlZjAyZjc4YTdhNmU0ODcwZmY1ODU1YjMyM2RiZGU5YjIgcHkzay1wZXAzMTM3Cis1ODc0NCBmYmM2ZmM2ZGM0ZmZlMWIyYzI3NDdjNzI1MGFiNTU4MTdhNzU5OGE4IHB5M2stcGVwMzEzNworNTg3NDUgNDMxYmM5MDk0MDE5NTVhMjEwM2NkMGNkNmRhZTNhNmEzOTNiMTkwNiBsZWdhY3ktdHJ1bmsKKzU4NzQ2IDAyMWNlZTE4OWY5ZTFhYmU1YjdjMjAwMDcyMjE5YzA1MDAzYzBmYTUgcmVsZWFzZTI1LW1haW50Cis1ODc0NyBmZDY4NWQ3ZTg1OWFhMTBkYmQ0ZDZlMzk0NWM4NDhiNzc5MjJhOTY5IHB5M2sKKzU4NzQ4IGY4N2RjNmEwNGNlYWJhMzA3YzIwOGJmMmMxYjAyY2JhMDg1ODg4OWUgcHkzaworNTg3NDkgM2U1ZWRmMTlkNWYwNWQyZmZhMWQwMjFkYTc4MTYxNWZkMmQ4NWYwNCBweTNrCis1ODc1MCBiZDJmOGJiMTFiY2MzNjI1MWIxZjBjNDQwYjU1Njg4NjE3OTk2NzE3IGxlZ2FjeS10cnVuaworNTg3NTEgZThkMDAzYjM4NzBmMDNlMTZkNTI5ZjhlM2UwZmZmODZkNDI1Zjk4MiBsZWdhY3ktdHJ1bmsKKzU4NzUyIDNkODY2NTc5MTE3ZGE3MDg5NzhkZDc5YTdkMmJlYTU5ZTBhOTgzNjEgcHkzaworNTg3NTMgNzlmNWNhOWVlMTU0OWMxNWY1NTg4Y2EzZTdkM2EwMTEzYjRjZDlmNiBsZWdhY3ktdHJ1bmsKKzU4NzU0IDBmNzQxYzg5ZDgwM2FhMzhlMjc3YWFmZDU0ZDlhMzZhZGJkM2MzZDkgcHkzaworNTg3NTUgYzAwZGM3NTg2NzE0M2U3OTg5MDNkYjkyZjVjNjE1ZDc1ZDg5ZDYyYiBweTNrCis1ODc1NiAyYjdhYWRiY2VhMzRmNjVlNDgzNTNhZTY5ZTlkOGM4NjI5MWZlYmYwIHB5M2sKKzU4NzU3IDE1N2JiMDI4OTJiYzk0ZjcwOWI0NmFlZTBkOGUzZTc3M2RlYWE0OGYgbGVnYWN5LXRydW5rCis1ODc1OCA1YTFjZDNjYTBiMzkxY2I3ZTQ1ZTQxZDZmNTU5YTU1YjUxZjIyYTIxIGxlZ2FjeS10cnVuaworNTg3NTkgYzE5YjY4NDk0MTFjMDMyNDA4NzYzOWU0YzA4Nzk1YjViYjlmNTQzNyBsZWdhY3ktdHJ1bmsKKzU4NzYwIGVkM2MyYWFhMDAyYTJhN2IwOWIxNDFmMGRiNzU2MWJmMzgyOWUyYmEgcmVsZWFzZTI1LW1haW50Cis1ODc2MSA5OWZmOWRjZjM3NjBlMTI4ZDk4OWY5N2QzYjRiOTlmZTI4MDc0MjY0IHB5M2sKKzU4NzYyIGU1ZWI5M2EwYTIwZTA1MjMxZTgyOGE1YTUyYTU1OTRmODBmNWI5OTIgcHkzaworNTg3NjMgMzI3NjdiNGI3OTIxYTljOWU5YzZjMmI5YzQzMmM1YWY2M2UzYmRjMiBweTNrLXBlcDMxMzcKKzU4NzY0IDhhYzI4NGI2NWUzN2UwNjhiOTgyYTcyMmUyYzQ0NTI1MGRlMDFjYWUgcHkzay1wZXAzMTM3Cis1ODc2NSA4YTQwYjgzMWFiNjg5OWM1MDQ5Mzk0NDc1OTdmNTc5NmI4ZWMyNzk5IGxlZ2FjeS10cnVuaworNTg3NjYgYzQ2MjRkYzBkNDFiMTA3YmJhYWUwOGQ5MzgwNDA4YmRiN2IwMzVmOSBsZWdhY3ktdHJ1bmsKKzU4NzY3IDU4OTBkNTEwYWE2Zjc0NjUxODkxZTQ2ZDk1ZWYxMTBlOWY4YWNmYjEgcHkzay1wZXAzMTM3Cis1ODc2OCA4OTQ4Zjg4MWU0MDNmYjJkNTFlNWE4Y2I0MDdkMjlkNTY3MTM3Y2UyIHB5M2stcGVwMzEzNworNTg3NjkgMjc0ODZhMDJhZTY0ZmQ1YTg5NTM3NTAyZTgxMjlhN2MwOTY1YzRmYiBweTNrLXBlcDMxMzcKKzU4NzcwIDg3MGY3MDU2MGM4ZjI4OTFiMzQwZTkxOGVkMDc5NDg0ZGZhYzNlZjEgcHkzay1wZXAzMTM3Cis1ODc3MSBiNmM4YTY2OWM3OWNhMzY2MDhmMDgxZjQwZmVhMjgzODM1NGNiZGM3IHB5M2stcGVwMzEzNworNTg3NzIgMDRiZTg5ZmE3NDk3YzI5ZTJhM2IwNTFjZmY2ODEyYjI2MzA5MTA0MiBweTNrLXBlcDMxMzcKKzU4NzczIGQ3YWI1YWYzYzk4ZWE5NjVlNTZmMGVmMDE0ODkyNDBiZDg5OTYxZDAgcHkzay1wZXAzMTM3Cis1ODc3NCBiNGU4ZTUyM2I4ODJlZTI2ZDZlMTc0ZjA0NWMzYTY1ZTJjZjE4ODI3IHB5M2sKKzU4Nzc1IDViM2JlNGFiMmZlMWQxMWUzM2FkYzFlNTAzNGQxZTQwOWQxY2QxOTUgcHkzay1wZXAzMTM3Cis1ODc3NyBlZTFiYzgzNGQ4YzZmY2Q2NTA1MzU2YzhmODBmNmY2ZDA3ODNlZGY3IGN0eXBlcy1icmFuY2gKKzU4Nzc4IGM1MGU2ZjkyNDE5ZjNhMDJmMGQxNzY5YzEwNGVkMDc3MmU2ZjY3ZTggY3R5cGVzLWJyYW5jaAorNTg3NzkgMTFjMmZkZTc4ZDU3NzFiNzNjMmFkOTNmYWNhNDc4OWVkMGQ3NzlhYSBweTNrLXBlcDMxMzcKKzU4NzgwIDg5MDRhMGJjYmY0ZmY5MjI2YWM5YzY4MWUzZTQ5NzYzMzRiMjMwZmMgcHkzay1wZXAzMTM3Cis1ODc4MSAyYTkzOTRmYjUwYWMxNmM3OTY3YjYwOWM1MWQ0NTFhZDhlOGM5OTBlIHB5M2stcGVwMzEzNworNTg3ODMgOGM3ZGFhYzBkNGIwYjNmNDQ2YmM3MmQ2YTgzZGIyNWIzM2Q5MTY4YiBweTNrLXBlcDMxMzcKKzU4Nzg0IDVmY2I2NjAyYzQ5YTljNWRjMTE0ZGM4ZjJlYjY3YTAxYTY0NGM1MDUgbGVnYWN5LXRydW5rCis1ODc4NSBhN2Y5NWUyYjkzNTgyNGNiMWJiY2ZiMjdjNGMyOWVlMjIwYmRkNzRmIGxlZ2FjeS10cnVuaworNTg3ODYgYjYxMDgzNzc0YzA4YzQwNTRjYzNjYzhhNjRkYWIyNjc4YzJjMDg2MCBweTNrLXBlcDMxMzcKKzU4Nzg3IDA2MDQ2ZDE3OTBiOTMwYjk0ZDUyOTllOWE5YjI4N2Q2ZDQzODkxOTIgcHkzay1wZXAzMTM3Cis1ODc4OCA5MGQ1ZDg0Y2EyN2Q4MWY0YmJhODlmZmQ0OTM3YWZiMzA2ZGEwY2MyIHB5M2stcGVwMzEzNworNTg3ODkgYTk4MjM0NDUxNjY5ZTg1MjMyMWUwZGYzMTc4ZjZhMmZkZjlmNDRiNSBweTNrLXBlcDMxMzcKKzU4NzkwIDZkYTkwYTVhZTlmYWEwMzhiYWYxOTUyNjNlZjBlMDkyYzU1YWYzZmYgcHkzay1wZXAzMTM3Cis1ODc5MSA0MjY0YTA3YTM5ZDEzZjY5NDY1OWRiMjY4Mzg1YTUyMjdlYjA4MmQ2IHB5M2stcGVwMzEzNworNTg3OTQgYTAzMGVjZWE0YzI0Yjc1Y2FhZjhlZGMzMThlOWExN2U1MjRiNGFkYiBweTNrLXBlcDMxMzcKKzU4Nzk1IDI4MDNlOTZjYzY0YWY4YzQxNzBjZDNkMDBmMDRhNzYwYmZmYTRhMGUgcHkzay1wZXAzMTM3Cis1ODc5NiA0YjM2MjM1NjhlNmNmODRjODliNTM2ODVkMjA5NWE3NTUzYjVhMjZiIGxlZ2FjeS10cnVuaworNTg4MDAgODQ0YWMyY2RmN2E4ZTA1OTExZGM0YTY5ZDJkODkxNWVjMzgyYTMyYiBweTNrLXBlcDMxMzcKKzU4ODAxIDdjNDNmNGRjYzdjN2MwYjg2MDllNDJhYjRjYTg3Yjk5ZDUyYjdlYTcgcHkzay1wZXAzMTM3Cis1ODgwMiA2ZDQ2ZmViMTY0YjZiZGY2N2NiODM1Y2YwYjBjMWQ0MGM1MzM0MzAyIHB5M2stcGVwMzEzNworNTg4MDMgMDBjOTg0NjY2MTViMjNhZjU2ODNlNmYwOWIzMTllZjMzM2I5MjQzMiBweTNrLXBlcDMxMzcKKzU4ODA0IDhiYjNlNzc2OGNhNjhmZjIzOGZmZGZkZjM2ZmU3MzM5MzI1MDFkYjAgcHkzay1wZXAzMTM3Cis1ODgwNSBhZDhjM2Y5ZWMxYjI5Nzg2MmE2NDNmOTAyOWY3OTQ1MzFhN2NiZDU0IHB5M2stcGVwMzEzNworNTg4MDYgN2VkYmYyNThjYWQwMDExOTMyMzk1ODI2YzBjYTUyZjZmMWQ2ODk1NSBweTNrLXBlcDMxMzcKKzU4ODA3IDExOWY4NDFiYjgxNjRhZGZiN2MwZGVjOTk3OWU0MTMzNThlNzMwOTMgcHkzay1wZXAzMTM3Cis1ODgwOCAwMTEzNWRkZDcyNmRjYTllMTlmZmI2NGNhYjFiZDU5MjEzODhkODQ5IHB5M2stcGVwMzEzNworNTg4MDkgMzU3NTI4NDg1NzQzNTMyODJjZWYyZmIxZDFiM2JiNjYzOGE0ZGI3MiBweTNrLXBlcDMxMzcKKzU4ODEwIGI0OWIzMTA3ZTQyMDMwY2JkZjdiZmViODA5NGE1OTc4YzFhZGJhMzIgcHkzay1wZXAzMTM3Cis1ODgxMSBhOGU3Y2I5ZTM3Yzk0NWQxMmYwMzgwNGU0ZDlhMTc0ZGUwMGU0ZmVlIHB5M2stcGVwMzEzNworNTg4MTIgMTQyZjI2OTQ3YWJhN2Q4NDIxMTliMDdjNDY2MWQ1YjdjMWE2NWRiNyBweTNrLXBlcDMxMzcKKzU4ODEzIGQyNDk1NDViYTc5MjI0YTRjYjI2OGZkNzJkZTRmNTk0OThiMTcwZDUgcHkzay1wZXAzMTM3Cis1ODgxNCBjZmNmYWQ4N2ViN2QwZjRlMTI3NmIxZGI3YjgwNDRkMTNlZTdjZjdhIHJlbGVhc2UyNS1tYWludAorNTg4MTUgNzA0ZTY3MTFlNTBkY2U1ZTYxYTI3NTAwZGQ3MjQzNWVhNzgwNGVlOCBweTNrCis1ODgxNiBkMmJhMmJmNGU3NmJhZGE1ODRhNWY1MTg2OTUzOTMwMjcwMTY0MzlhIHB5M2stcGVwMzEzNworNTg4MTcgMzE3YmE1M2NkNDVjOGU2ZWIwYmE1Zjc0MjQwOWU2ODI3OTBmNzNkNSBweTNrCis1ODgxOCA1MjJiYmI5MDA1YTQxN2RjZDE3ZWRhOWM2Mjc0ZGYxNWU2MTM0ZjQ3IHB5M2stcGVwMzEzNworNTg4MTkgMmZmMGU4MWU2OGZjYTIzMDZlNTBiN2EzYzc1N2ExMDMxN2Y1Mzg1MiBweTNrCis1ODgyMCBhNDE0MGEyOGMzZTc2MWNiMjNmN2VjMTVkMWVlNWI5NDY2YmU5ZTNkIHB5M2stcGVwMzEzNworNTg4MjEgODdkMzhmNDJkMTYzNDQwY2E0MmM0NmJmNjhkNWNmMGY1ZDNhNWM1ZiBweTNrLXBlcDMxMzcKKzU4ODIyIDZlNDkxZDEyNzY1YzVmN2I0Y2YyNTFiMjFiNTM0ZjQ5YWQ2M2Y5ZmMgbGVnYWN5LXRydW5rCis1ODgyMyA0NDkwZjMzNWJiY2QzOGJiNzIwZjY5ODI4NDliNzU0ZTJjOGEzYTA3IHB5M2stcGVwMzEzNworNTg4MjQgNmFkYzk5YTY4ODhmZGVkMGQyN2MzNTUwYzlmZGFmZGY4ZmRlYTkwNiBweTNrCis1ODgyNSA4ZmQ2OTRkMGY5MDJiODY0N2I0Y2MwZTAzNGQ1MjliM2I0NDQ4ZTEzIHB5M2stcGVwMzEzNworNTg4MjYgMGM1MTcxNzljYjhjNDA1YzU2ODAxYzZiOGFiYmZhZmMzZWNhYzJhOCBweTNrLXBlcDMxMzcKKzU4ODI3IDkyMWFmN2YyNzYwMGY3YzQ5NDM5Y2U2YTA1MmU3NDhkMWM3NmEyNTkgcHkzay1wZXAzMTM3Cis1ODgyOCA5ZGUwNzI3NWIwMDg3YTY2ZWU2NjIzYTkxZjljNzc4ZTc2YjhhNDdiIHB5M2stcGVwMzEzNworNTg4MjkgZmQxYzEwZDIxYzllZTQzM2Q1MWU4MjU4NTk3MDk3NTM2NTk5ZDFjMSBweTNrLXBlcDMxMzcKKzU4ODMwIDNjYmM3OGMzYTQwMzU0OTVlNGIyZjA0NzM4N2RiOGQ3N2Q0OTQzMWEgcHkzay1wZXAzMTM3Cis1ODgzMSBmNjFhMGVlNzQ3NmZhYzYxMjM0YmVhMDczMGNjODZiNGI2NzY3NGRiIHB5M2stcGVwMzEzNworNTg4MzIgNDhlNzc5MjI0MTFkOWM1YTU4Y2NkYzVhMzQzM2NiOWE0NjBlNDI2NiBweTNrLXBlcDMxMzcKKzU4ODMzIGIzZjg2YzQxZDBhM2EwNzI1Yzg4YzI0MzE4MzU3ZDM2YWViMWMwNGYgcHkzay1wZXAzMTM3Cis1ODgzNCBmN2I0NTI5ZDA5ODQyYTNkNmRhOTE4MzM3ZGY0MDFhYmM1YTE2MzdlIHB5M2stcGVwMzEzNworNTg4MzUgMTRkZmUyZjEzNTgyMzI5OWU3ODkwYTM1NjJjOGNhZGIwNjI0MzEzOCBweTNrLXBlcDMxMzcKKzU4ODM2IGU5MDA2NWUxNzIxMjAyMDc4NmIyNTFkMzZjNGFlNDEwYmY0YjJkNzYgcHkzaworNTg4MzcgNjU4Y2QzNGE4YzVkYmUxOTY4Y2M4ZTdhY2FiZmM5MjA1N2Q2MjM4NyBweTNrCis1ODgzOCBkZTNiNjNmOGIxN2I2Y2RlNjRhMWYxMDE3NDE1ZWIxOTJhOWNlYzljIHB5M2sKKzU4ODM5IDAzYzNhNTQwNzJkOTFlZjQzMWJiYzU3ODEyNjQwMzI1NDllMjhhN2YgcHkzay1wZXAzMTM3Cis1ODg0MCAxODkxMjU3ZGZkMTEzZGE2ODIyNDE3M2JmMzdiNjcxOTU4MWUzYTU3IGxlZ2FjeS10cnVuaworNTg4NDEgMDlmOTIyYzRmODg3MjVlNmFkN2U5NTkxNGY4ZjZhYWE0ZGU3YjZiOCByZWxlYXNlMjUtbWFpbnQKKzU4ODQyIGVmMWQzZTg3Mjk2ZjM2NTg5MTA1OTc3Y2VmMjRlN2RlOWRmODcxNTAgcHkzay1wZXAzMTM3Cis1ODg0MyBmMWZkZDZiNzAxNWYwMDVjNTJhZjExZjIyY2U4OTMyMmYyODBhMmU4IHB5M2stcGVwMzEzNworNTg4NDQgNTg1YWQ3NzEzZWZlZmVlNDIwYTI2NTIxNzk1NzA0ODkxYjg3MGI5MCBsZWdhY3ktdHJ1bmsKKzU4ODQ1IDQ0N2QyYTQ1MDFjYjcyYTY1YzFlNzhmNDc2OGJkYjY4OWM2YzFhZDMgcHkzay1wZXAzMTM3Cis1ODg0NiA1MDQyM2Y0NGU2ZGNmZmM1ZDIxYjE3MDY3Yjc4NGQ2ZDliMjJkMDNkIHB5M2stcGVwMzEzNworNTg4NDcgNzFmODQzNTc1MWJhYTVjNzFmZTA4M2VjZDMzZDk1ODdiMjk4NTliMCBweTNrLXBlcDMxMzcKKzU4ODQ4IDE1M2MwYzc0NDFhYWY2ZmUxMTQwODFiOTY2YTg4YzA2Y2Q0ZGY5NDIgcHkzay1wZXAzMTM3Cis1ODg0OSA1YWNkOWRmMjcxMDg1MjgzZjdjMjg3OTA1MzU0ZDllNjU2ODliZDA3IHB5M2stcGVwMzEzNworNTg4NTAgNTFhMGRlOWJhYjM3NDZhZjFhNWQ3Zjk2MzFjYjZlZThhNWQ2ODI3NiBsZWdhY3ktdHJ1bmsKKzU4ODUxIDhkNGU5YzRmMDM1MGExZTBiNGNhMWMzNjc4MDM0MzFlODZlOWRlNGEgbGVnYWN5LXRydW5rCis1ODg1MiAzNzQyM2M3NmUyMDg1ODY4YTk2ZGQ4YWIwMDVhYzNmNmMzNjE0YTZlIGxlZ2FjeS10cnVuaworNTg4NTMgMGZkMWNhYTg1MjI1ZmFjYTI1OWZlMzg4MDE2ZTM2ZDZlMDYwMDRkZiBsZWdhY3ktdHJ1bmsKKzU4ODU0IDM3MTU2OTQ1Y2EzNTE2ZTViN2I4YTY1NTljNzM4ZWRkMDlhNmQ4NzggbGVnYWN5LXRydW5rCis1ODg1NSAwMWU2MzMzZjNiNmNlZjIzODc4YmZjZDAxMDA4NDgzZjNjODdiODRmIHB5M2stcGVwMzEzNworNTg4NTYgMTk4N2RiZTdlYjZlN2Q3MTdjNzA4NGE0YjAxMDVjOTVjMDkyZTk2ZiBweTNrLXBlcDMxMzcKKzU4ODU3IDA4ZWUzYzczYjZiZWNhYzE2MjU1MDVkNmI4NmY4OGYxNmRjOTk3MzMgbGVnYWN5LXRydW5rCis1ODg1OCA3MGVmMGI2YTgzNDVmMTIyYTk1OTg1MGIxNjllMjU3MGY2YzUwZGUyIHB5M2stcGVwMzEzNworNTg4NTkgZmU5YzIyMzNjZDA0ZjgzMjhmOTE5NDZmN2I3ODI5NmNmZTA0ZGRjOCBweTNrLXBlcDMxMzcKKzU4ODYwIDMwNzg4MTQ2ZjBhNmMwN2FiMTM4MjZkYTA0NDE3ODI5MDc3YTJmMWQgcHkzay1wZXAzMTM3Cis1ODg2MSA3Nzg4MjNjMGZmYjYzOTliM2FjNzhhZWIwNmM1MGUyMWQ5MjgyM2ZhIHB5M2stcGVwMzEzNworNTg4NjIgZjNjMzM3ZTlkMWU1OTdjM2FkNGEzOTNhMWIzZWM3ZWIxMTRhODZhYiBweTNrCis1ODg2MyBmOWQ0MDFmMWUxZWYwYjBjN2JmYzU5YWQ5M2FiMThiZDEyZTJlN2ZlIHB5M2stcGVwMzEzNworNTg4NjQgYzQ5MGFlMDhkNjA4YjAxNjA4MzhiYjYzMzk3NjBlODE3NzFhMWRkNSBweTNrLXBlcDMxMzcKKzU4ODY1IGMxNTVmMWRlZGE2NWQ4NDdhYWRmYzIyZjViOGU5Y2EwMGZjZDU4OWYgcHkzay1wZXAzMTM3Cis1ODg2NiA3OWZlN2QwNjIwNmMxOGY0NDBjNGU1ODFhZGFlMWJlZGQyZDM3NDFlIHB5M2stcGVwMzEzNworNTg4NjcgNTNhZjA0NmNjMmM1MmUyZTgzZTc0OTJhNzVkMjdkNWZmNzViNDU2MCBweTNrLXBlcDMxMzcKKzU4ODY4IGQ3ZGI0NjdjZDk0MDdhYTA5NjQwNDdhNGIyZDViM2RlYTY0ZTlkMzkgbGVnYWN5LXRydW5rCis1ODg2OSBhNDk0YTkxNTEyZWM5ZWU0NTgyZWE2YzZhNWZkZjE4NmZlZDcwZTdkIHB5M2stcGVwMzEzNworNTg4NzAgOGQzMWEzNmYwY2FhZTUwODlkZTBjZjkzNDhjMTRlYWQ0YWE1Y2JlNCByZWxlYXNlMjUtbWFpbnQKKzU4ODcxIGQyNDg1MmI4NmQ3MGJjMjY0ZTkxYzk3NDBiNmE3NzJkYTExMjYzNGUgcHkzay1wZXAzMTM3Cis1ODg3MiAyOWE1OThlNjkzODI2MGY4NjcwOTE3YjljMjFjMTIwYTUzMzAxNTE0IHB5M2stcGVwMzEzNworNTg4NzMgODcxNzhmMzVkNzAwNzQ5NTc5NmE4YzViMTUxYjJkOTM2OWM1ZTlhZiBweTNrLXBlcDMxMzcKKzU4ODc0IDU1MzEzODQ4MDkxODUzNjVmNjFhZjhiNmFmOTBlYWJhZWFhNzIwNjMgcHkzay1wZXAzMTM3Cis1ODg3NSBjYzY1YjY0MDE5ODk0NmU0YmZiYTMyNzVhMDAxMjkxNmZlODA4ZWVkIHB5M2sKKzU4ODc2IDBiMjA2NzkwZmViNjQzZWNlM2NmOGUxMGRiNTNhZmVkOTI2NzAzMDYgcHkzay1wZXAzMTM3Cis1ODg3NyBkODI0YzMxNWZjYWMyOGU0NWRhZjRiYjM2YTY1NzU2NTlhYjhjMTE5IHB5M2stcGVwMzEzNworNTg4NzggZGU5NzM5MjZhMzVjZmQyNTMyMzg4ZjhlZDk0ZDJkNTU1YTM0MThlZSBweTNrLXBlcDMxMzcKKzU4ODc5IGM5M2FkNmM0MTdkZjI1MWJmYWE2YjIzZGMyOWFkOWE0NzVkZjViZDQgcHkzay1wZXAzMTM3Cis1ODg4MCA5MWJhMTY5OGEwMTE4NmMyZDZiN2M1YWE5NWQyZDlhMjJlODIwYTE5IHB5M2stcGVwMzEzNworNTg4ODEgNmRiMzgwODUyZjYzZmUxY2VmMmJhNmIyZDUyNWNmNTg3YmYxMWJiOCBweTNrLXBlcDMxMzcKKzU4ODgyIDkzMGM2MGY4YWFmZmE3Mjg5OGYwOTQyMDEyNDcxNThhY2YyMTg2YzEgcHkzay1wZXAzMTM3Cis1ODg4MyBmYzNiZWMyMGVjMTUzODg4YjE2ZDYwNDVhMGVkYTQ4ZDI4Y2NlYmEzIHB5M2stcGVwMzEzNworNTg4ODQgMDIyNTdlYzU0ZDc5MTNjZjc4MmFmNDE2ODBjNjQ0MDIyMzNjMGY2ZSBweTNrLXBlcDMxMzcKKzU4ODg1IGNiOGVmMjU1MWQwZDBlMzRmYzkzYzhlZTU0MGZmY2M2ZTJmNGI1ODUgcHkzay1wZXAzMTM3Cis1ODg4NiBiMzEwZmQyYjAxODQ3YTBjOTFkMDdhOGZhYjA3ODVjMjcyZTFkMGVjIHB5M2sKKzU4ODg3IDkwZDBjMzc2NmU5MjhhMzJiNjBiY2E2M2ZlYWRmM2EzYTk1YjNiOTUgcHkzay1wZXAzMTM3Cis1ODg4OCAwZDQ2MmQ3ODliMThlYzZhNTllYmUyMTE2Njg4ZDViNjk4NWMyMTVkIHB5M2sKKzU4ODkwIGNmZThmY2VkOGExMjI2YWZmMGYxNDRiMGY5Yjk0ZjIzZjg3NDUwMjggcHkzaworNTg4OTEgYzVmNzA4YmM0Y2I3ZmMwMjlhNzYyOTM3MzAxMWE0M2Q5ZmQ1ODFlNCBweTNrCis1ODg5MiA3MzQ3Zjc1YjljMzQ0MmJkNjMzYWRhZTUzMjY5OGYyNGMyYTJiZTA3IGxlZ2FjeS10cnVuaworNTg4OTMgZGE1OGNmOWJjYjAxYjVhNzI2YmMzNjY1ZTFjYTQwMzU2NDdiODliMSBsZWdhY3ktdHJ1bmsKKzU4ODk0IDA2YmI4MTA3NDdlMWQzNjA3MWZlZWEyZGJkYjFkOWQ0YjhiOWVjMGUgcmVsZWFzZTI1LW1haW50Cis1ODg5NSA5ZjE3YTlhNWI1YWVlZDc0YjJiZTFlZjBiYjZiODFkOWU4YjZhOTEzIGxlZ2FjeS10cnVuaworNTg4OTYgOGZjYzNmNDZjNjlkZTE3M2YyODczN2JlNTc5Mzg1M2FlMDBjM2ZlNyBsZWdhY3ktdHJ1bmsKKzU4ODk3IGZhODJlYzljODBjZDY3ODY3ZmZlZDIyMzk1NTcyYTk5YjVkYmY0ZTYgcmVsZWFzZTI1LW1haW50Cis1ODkwMCBkZTYzZWYxODZjMWVjNTAwMTg4MTVmNDMxZmU2ZmYxY2QyZDQzYTQwIGxlZ2FjeS10cnVuaworNTg5MDEgZjQ3NGRlOTczNDA0NzhlYWM3MTE3OGE5Mjc2YWNiZWQxYWIxMDk5MSByZWxlYXNlMjUtbWFpbnQKKzU4OTAyIDdiZDcyYzU2ZjZhNDBkMmQ0MzQxYmYxODJjOGNjOTk0MWY0YzA4Y2MgcHkzaworNTg5MDMgMTI0N2QyNGIyODdiOGM2ZGQyMGUzNWYzODlhNGRhZjRkMjI1MWM0MSBweTNrCis1ODkwNCBkYmEyNDkxY2Y3MTc2MjViMWFkNjlmYzVkOWEwOWU4OWI5NGNhNGY4IHB5M2sKKzU4OTA1IGRmYjQ2MDAwNGNmZTJkZjcwMzk4NmFhMTNiZjhhYzNkOTA4M2Y1ZDkgbGVnYWN5LXRydW5rCis1ODkwNiAyZjA0YWJkMTMzOTQ0ZGUzMTM3ZjAwZDZiNmFkNDBiYTFmNWIyMTk1IGxlZ2FjeS10cnVuaworNTg5MDcgMmQ4ZDY4NTVhNjAyNDE5ZWE5YTk5NmU3NmQ4M2ZlMmNjN2ZlZTU4YSBweTNrCis1ODkwOCAyYjNhYmUzZDNhZTZlYTMzZDJiMzlmMjk4MzQ4ODBjYjUwODQyMWVkIGxlZ2FjeS10cnVuaworNTg5MDkgNjZkMjc1ZjI5YWM1NTBlYWY1YjdmMmE2MWZjYmE4OGVkNDgyM2NhMyBweTNrCis1ODkxMCA3MDIyYWZmZDdiZDA5Y2YxMTU1M2MyMmY4ZTBhZmQ0MzdhM2VkY2ZjIHB5M2sKKzU4OTEyIDZhYzYxODgyZjkzNzBjZmZmYmRhZmI0ZmNmOGNlNjI4MmJjNDQ4M2QgcHkzaworNTg5MTMgNmQzNDc3Nzk1MjFiNWIyNTIyNzFlZWEwNzVmOWM4MWM4NGViNTk5ZSBweTNrCis1ODkxNCAzNjBkZjY0MTI0NGQ5ZTgxMWVmZDg5YWQwNjIyYWQ0NmJhNjZmZWZmIHB5M2sKKzU4OTE1IGIyMmYyN2UwNzAxMTQ4ZWI2M2IyMWVmMmMzOTE1NGMwM2ZlYzE1YjIgbGVnYWN5LXRydW5rCis1ODkxNiAyZjdjNDAxY2I2MmUwNDk3MzFkYjM2YjllNWIwMTJlNWM5MjU5YWQ0IHB5M2sKKzU4OTE3IDNjMWY4NTkzYTE0ZTRjNTVlN2MwMDY0ODBjMzZlZDQxYWI3ODRmOTYgcHkzaworNTg5MTggYWRlNTY2M2U4ODg2OGEzMWMwNDQ1Y2I5OTVmNWE3MDQyOGRkZWVlMyBweTNrCis1ODkxOSBkNWMyNWJmMjY5MmVlYWNmZTljZDliMWRiYjEwMGZmMDM5YTZiN2I1IHB5M2sKKzU4OTIwIDgzYzA1ZDJlMTBkZWNkMDYzMzA0ZWU1N2VlOWU3Y2M0ODVlZGFjYTcgbGVnYWN5LXRydW5rCis1ODkyMSA4MWUzM2JkZTZlZTIwYWM0NGEwMTY5NjFhYTgxNmU5YzkwZmI4ZGFmIGxlZ2FjeS10cnVuaworNTg5MjIgZGRjN2QxNGJlMWU5OTM5NDE4YjM0MzI3ODM5YjQ4MTY5NjM0ODI2ZiByZWxlYXNlMjUtbWFpbnQKKzU4OTIzIGMxZjg4MzExNTVkZTBlNThiODIzM2JiMTVmNDg5ZWY3MzVkYjZkOWYgbGVnYWN5LXRydW5rCis1ODkyNCBhYWVlZTUwYTA2NDAxNjcxYmY1YTA3OTMzNjIyOTYzMWE2ZGE1YWY4IGxlZ2FjeS10cnVuaworNTg5MjUgYWMxMmFjODhhZWVhOTNhMTA2YmI2OGU3NThmYjE5YmNmYzFjZWM0YyBsZWdhY3ktdHJ1bmsKKzU4OTI2IDIwZGM2Nzg2ZjlhY2ZlOWZmMDdkMzM0NGMyYWM4ZWFlYWJjMTkzMGEgcHkzaworNTg5MjcgZjgyYTIwZGRhNDY1ZWYyMGQ4MTk3MWM5ZjEwMDdmMTc1MzYxZTFhYiBsZWdhY3ktdHJ1bmsKKzU4OTI4IDE1NjE3NjNjZGE3MmRlYzZjYzIxOTM2OTQ1YWM0YWE0ODEyOGZjMTIgcHkzaworNTg5MjkgMTk3ZmZiOTk2ZmI4ODk1OTliN2JmMmU1YmIzYmRmOTMxNzAyMGQ1MCBsZWdhY3ktdHJ1bmsKKzU4OTMwIDg1Y2YzMzRiMzJjM2FjMjFlYmM0MWM1MTU2MWQ2ZTNiN2Y2Y2IxMjEgcHkzaworNTg5MzEgNDg3ZjM3MzdlYWVmZDAyMTNiMGUxOTExMDNiZTk2MzM2OTA0OWZkMiBsZWdhY3ktdHJ1bmsKKzU4OTMyIDFhZGYwNjZmMTg3OWE0YjkzN2FhODlmMWUxYTRlNDYyOGFlZWNiMTAgbGVnYWN5LXRydW5rCis1ODkzMyA1YTE2OWRlMzZkZTc4Y2JiNzU5ZjVjZWRiYWY1MmM2OGJmZGM4YzViIHB5M2sKKzU4OTM0IDA2ODY1NTA1NGIwZDBkMTM2MmFhNzJiMWMwY2Q3ZGRjM2NmZTI2MGIgcHkzaworNTg5MzUgZDJmOWUyMDEyMGY5ZTkzNTc0OWVlZTg3OTE1ODUwYzNhNjQyYWQxNyBsZWdhY3ktdHJ1bmsKKzU4OTM2IDAxYTViZGMyODIwYTAxMWZhN2M2MDg5Mzg4Yzc5NjQ4YjhmZTczZGQgbGVnYWN5LXRydW5rCis1ODkzNyBjNGUyOTM2ZDEzMDc1MjMyNDY1MDljMDNmMWRhNmNlNmQzN2MxYjgxIHJlbGVhc2UyNS1tYWludAorNTg5MzggNTVjYmQwYzdhYWNmYzM4NzQyMGJmMjkzNTdlNDYyMWM2YWYzZmQxMyBsZWdhY3ktdHJ1bmsKKzU4OTM5IDRlZDE2Y2E0ZDk4MDA4ZGExMDA3YWFiNzNlODVmMTYwYTQ0ZjMyMmEgcHkzaworNTg5NDAgMjliZWNlMTQ3ODkzOTFkZjFiMzQ4NDMxMGZjOGVlNTM5ZDI3ZmE5ZiBsZWdhY3ktdHJ1bmsKKzU4OTQxIGFkZTU4ZWI3YzhjNzVjNWJlY2MzYjVhMTI5Y2Q4Mzg1NGQ2OGE4ZDMgbGVnYWN5LXRydW5rCis1ODk0MiBhZjM0MjhmYWUxNWZkODMzOTA4ZWFhMDkyNjY3ZWRhMDU1ZDBlZDU0IGxlZ2FjeS10cnVuaworNTg5NDMgMDBlNjE2NWY0NDgyOWRlYWJmMDc1ZjNiZmVlNWVmOWRjNTgzOWMwOSByZWxlYXNlMjUtbWFpbnQKKzU4OTQ3IDdiYzRjYzk3MmIwYjNjNjFlZTQ0NmFjMGRlZjAwYmI0NTE2YjRlZmYgcHkzaworNTg5NDggOGVkM2E5NWNhMTE0ZmIxYzJkMjQwMjA1NzZmZWFhOWM1ZTRjM2U3ZCBweTNrCis1ODk0OSAxNjRhNmFjOTRkM2M4MWY0MjI3NzhmYWVmYWQwZjNjZWUwNDc3YzgzIHB5M2sKKzU4OTUwIDU5MTJiNjZjY2MyZDVmZjc1YjZhZGJjYTdhMjA5NDgzOWVhZWY0ZGEgcmVsZWFzZTI1LW1haW50Cis1ODk1MSBjZTc3ZDkxZWExZDBiYmRmZmExYmZjZDQ2YTQzMGYwYzkzYTY2Zjg3IHB5M2sKKzU4OTUyIGQ3ZTliZWMxZmVhYTlhNWQ2MDc1MzE1NGRlZjBiZGVkYmU4NjQyMTMgbGVnYWN5LXRydW5rCis1ODk1MyBhMjIxMzA2MGQ5ZGRiMDQ4ZDFkYTIxNzk5MmNmMTRjNjFiMmQ5ZGU3IHB5M2sKKzU4OTU0IDFkNmRiOWRkM2U3N2E3Y2M4ZDg5ZmM4Zjg0ZWEwODdjNGJhZmRjZmQgcHkzaworNTg5NTUgYjMxZjYxZDdmOGIwZWUwMTRlYmIwOWFjN2ViNjRiMmE4NjgwMTg0ZCByZWxlYXNlMjUtbWFpbnQKKzU4OTU2IDFlMGVhMWYwMzA1OGI1YTI1MWRmMTNmZDM4YWYxN2YyNGMzYWIwNDcgbGVnYWN5LXRydW5rCis1ODk1NyAwODExMTgyYTljZTlhYzFkZDJhMDllZWZhNGRkODI3NTkzODM0OGNjIHB5M2sKKzU4OTU4IDczYzhlMjdlYjljZWY0MDJmYWNmOGE5Y2MzMWVmOTMxZjhmZGEwNGUgcHkzaworNTg5NTkgY2NjZWFlYzExNDQyZjk0YTg5MzAzMzNjM2E2ZTk5ODYxMGIwZDYwOSBweTNrCis1ODk2MCAyNDEyODExMjNmZDgzNTFkMTBlMDIxOGQzMjM5YTViZjFmMTBlZmYzIHB5M2sKKzU4OTYxIGEwNjBiM2NjMmM2MmIxMjk2ZTFjNWNlOTE1NTQ2YmEyYTA2NzY5OWIgcmVsZWFzZTI1LW1haW50Cis1ODk2MiAyYzk3ZTI0YjE2Y2ZjYTkzMzQ4YTg4NTIwMzFiNDg5YTVjOGZmMDRjIHB5M2sKKzU4OTYzIDc2ODQ0YTBhNTc5Zjk5MmUyYjA0OGJhODdjYmIzZDYzZjQyZDBkZDUgbGVnYWN5LXRydW5rCis1ODk2NCBkNWZjNmU5NjA5MWZiNmZlZDIzN2E0OTI0M2Y4MjMwMDk5ZjNkYzYzIHJlbGVhc2UyNS1tYWludAorNTg5NjUgMDM3N2JhOWJjMzU5MTc1MmI3NzEzYmY0OGI0N2EzNzMxZTliOTBhNSBweTNrCis1ODk2NiBlMTYyZTg4MWVhNWY0ZTNkYTVjNDFkMjM5MmNiMmRhYzE3YTQwMWQyIHB5M2sKKzU4OTY4IDI0Yzg0ZDU4Y2I4MDEwYjE4ZTYyM2U3OTNkYTcyZmJkYTE4N2E3ZmUgbGVnYWN5LXRydW5rCis1ODk2OSA1M2ZjMGY0MWY2OGQ3ZjE2NjZjMDY5MTk2Y2U5MzY1NjEwZjk0NjM5IHB5M2sKKzU4OTcwIDlhMTI4MTM5MWM0NmU5YzUzMTM2NzY2YWJkZTAzNjBhZmVmZWExZmIgcHkzaworNTg5NzEgODk5OTg5M2E2ZTIyMTUwYzg5ODk3YWU0MWIzODZmYzViMjlmMjJjMCBsZWdhY3ktdHJ1bmsKKzU4OTcyIDAzYWQxZGI3YzgwZTQ1ZDZkZTY2OTVlYTgxYmQwYzY1MjdmODhkYTEgbGVnYWN5LXRydW5rCis1ODk3MyAzYzI5ZDczYzc3Njk0ZTZjNzM1NzRjZTYwNzJjOGZiNmUyMjVlMTg3IHB5M2sKKzU4OTc0IGVlMDgxNjA5Y2VlOGNkMzQ1MzE5MTI0Mjc2M2JkMmUzNDFjZThhMjcgcHkzaworNTg5NzUgOTg3OTU3MzhiNGMyNzkzZjBjZDhjZDhhODIxOTVmYzFjNDk1ZGE2NSBsZWdhY3ktdHJ1bmsKKzU4OTc2IDBhZTkwNzg3ODZiNDAyZTNmMmJkN2Y2MTk3NDZjNWEwZDkxMGQ3MjkgbGVnYWN5LXRydW5rCis1ODk3NyAwMTk4Mjk4MDM4NDhlNmYxMWVmZTAxOGMzZmY4MzRhNmE2MGE5NjliIGxlZ2FjeS10cnVuaworNTg5NzggZGQzYzRkZDNlY2ZkMTRjZGRhODdiNGY4Y2RjOTJhZWIyNDRkNzhiMSBsZWdhY3ktdHJ1bmsKKzU4OTg1IDE3OTE4NjVhNjY4YjlmMmRiNGEwZDhjN2NmODljMWFjNjUxZmJjMTggcHkzaworNTg5ODYgZmE2Y2RmNTVkZTU4ZjM2YTI3NDIwYWE2OTA5MGRhOTMzMTcyNGFkZiBweTNrCis1ODk4NyBkNGY5NzA2Y2I0NmIzYzJiMTIxZTNlNDM4NzMxY2EwZmNlNWIxMWM4IHB5M2sKKzU4OTg5IDUxNjA0MWQ1MjY1NmQ0ODFiMTU3NWUxZTk0MWFhMjIyYjY4MjViYTggcHkzaworNTg5OTAgZjRhM2I0ZTE1NWMyNTkzNzRjOWRjOTVkM2MwOTVmZDRiYTRiN2ZkOSBweTNrCis1ODk5MSA5YTM1ZTkyNjYzNzliY2FhOTViMzYyNTZkYjU1MGJlMGY3NzY1NWNiIHJlbGVhc2UyNS1tYWludAorNTg5OTIgOGVkMDI4MGMyYWI2NzQ4NTNlYTE3ZTBiMmUyYWViYmJiYzMxMTQ0NCBweTNrCis1ODk5MyBmNDQ0ZTI1OTM0MWE5NmUzOWM1NDc4MWM2ZDM0ZTNkM2E2ZDc2M2JjIHB5M2sKKzU4OTk2IGRlNmIxMjZhOGQzNzQ5NWI2OWEyOTM4ZmIyODI4Mjg3NjgwNWVhNTMgcHkzaworNTg5OTcgYjU5ODI1ZDlkYjhmOTllNjYwYWVhMWJhNTdhOGJjNThkOTM1M2FiMyBweTNrCis1ODk5OCBjNzhkYjQ5Mzg0ODJjN2I2YmMwY2I4NjNiMTY2YTE2MTYyNTU4MDRiIGxlZ2FjeS10cnVuaworNTg5OTkgNTkwOTMwZTE3ZTBjOThmODdlYmQ1MDU3Y2NlZDNkNDI3NWEwODVjNSBweTNrCis1OTAwMCBkNDE5MzMzMGQxYmVlYWY5MmIyMDFiMjYyODdkYmU5NTM4NmEwMGNhIGxlZ2FjeS10cnVuaworNTkwMDEgMTczOTg2OWNiYzZlN2UzNTQwYTY0NTQxN2I3OGZjYmNlMzZjOGY5ZiBweTNrCis1OTAwMiA2YjAxMmYwMWE4ODkwOTMyOWE3ZjA1ZmZlNTQzOTc4MjkxNjZhOGJjIHB5M2sKKzU5MDAzIGUyMDIwM2QwMzMxY2MyOThmMTUyYjFiNGRiNDE2ZTlkMDBiOTEyNTQgcHkzaworNTkwMDQgMTdhYWY5NWFmOTA5YTE2MmUzYWFiMmU0NTY5Y2VmMGJjM2I1Nzc4NSBsZWdhY3ktdHJ1bmsKKzU5MDA1IDExNjVkMjYxZmIwNWRiNTczZjgyY2VjZGNmZmEwOThhMGNkODFkYjQgcHkzaworNTkwMDYgYzMxNTk0ZmIxZWQ0NGYwMzZhYThkNDVmOTgzYmZiYzYzMzMyOTM2OSBweTNrCis1OTAwNyA1NTkwMTU3ZjRmYzYxNzU0OTdmZGViNDA0NjY2MTY5NWIxOGJjZGYwIHB5M2sKKzU5MDA4IDRhNmE3YWVhNTdmNGZkODg2NGU4MjZiNjM1MzY2NDI4NDdlNDhiZTggcHkzaworNTkwMDkgNzBjZmM3YjUwNGMyODYzNjI0NDEwMjIzNTRjMWEwZjM3NjgyZDQwZiBweTNrCis1OTAxMCBmNmNjYTRiMjI2MGNhYmZjODJhMTMwMDdiNWY3NzRjYzkzOWEzZThmIHB5M2sKKzU5MDExIGRjMjI1NmUzMDFhOTIzOTJjOWM1NWZiMzMwODRlYjg2YjlhYmI1NjAgcHkzaworNTkwMTIgNzFlNzQ1NjJmYjY0MTI4NThlZWQzYjRiMDU2ZDBlMzA1NWY0NTJiYSBweTNrCis1OTAxNiBhOTlkYTg5M2YyMGMxZWFkZmEwMmIzN2U3ZjMzNDMyZTI4YzRiOTI2IHB5M2sKKzU5MDIwIDI1YTVmNmEzMDI5MjVkNTc0OTIxZDY1MzIxYzMyODhlMDY0NjdlZDEgbGVnYWN5LXRydW5rCis1OTAyMSAyZGY1M2YwNTM5MmNjMWFlNzg0YzhlZDUzNjUzMDk1ODUzZmQyOGJkIGxlZ2FjeS10cnVuaworNTkwMjIgMWZiMzUzNzc2ZGZiNGU4NjA4YmYwOTY2N2M1YWIwZGMwMzhkMWI5OCBsZWdhY3ktdHJ1bmsKKzU5MDI0IDE0OTRiZGU1MTBmZjk0ZWQ5NmFkNTBjYTJjNDIzZjAwNGRkYWVhMzkgbGVnYWN5LXRydW5rCis1OTAzMyA5OTVkMjVhYWMxNmFhYTkyYmM5NTNiNzYwN2YyM2M5YmU1NTZiMTJiIGxlZ2FjeS10cnVuaworNTkwMzUgMzhmNjM0MTlhYmQ2NDczYTQ0ZTljODhiN2YzYTI3MWQ4NGE5MTc1MyBweTNrCis1OTAzNiBkNTBjNzA5OWQ0YWE0YzBjZDQ0ZjdiYWRmNjZmMWE2YTZjZTY1MDE0IHB5M2sKKzU5MDM3IDQ4M2U5NThkMTNjNzZiNjY0ZGUxNmIzNzY0MmI1OTU0ZWI2YWEzMjQgcHkzaworNTkwMzggMTMzMjQ1MGJjOTUyMWQwMzhlNzRlMzZkMjljYWFjN2VmOWEwZWM2MyBweTNrCis1OTAzOSA0Y2VjMGM2MzkyYzEzYWQ1YmE2ODlhMDZlYTA1NzQ4MGJhMWJkNzY5IGxlZ2FjeS10cnVuaworNTkwNDAgNTIwZTJlZDk0YmNjNTMwZDVkZDRkMjcwOTIwZmE1NTM1ZWNhYWY5YyBweTNrCis1OTA0MSA0MWY3YzEzZWYxNjExYzViZDIwMTFkZmVjOWE2NWFjZTVlMjg0MzIyIHB5M2sKKzU5MDQyIGI5MWZkNzRmMzJkOGU5YzRjYzE4Y2ZjNmFhNWQ2ZGFhNzc1MGEzMTggcHkzaworNTkwNDMgZmNkNzYzMzlmZTFmZTZmNzRmOWE5MjQzN2NhYmJhZDUwMDQ1ODVkMCBweTNrCis1OTA0NCAzYTczMGY0OTA4ZTNmMmRiM2U4ZjNlOTAzZmE5ZDZiYzRlY2RlNzVkIGxlZ2FjeS10cnVuaworNTkwNDUgNzBkZGJlNjdkM2M0NjBhMWM4ZTQ1YWJjYjAzODViMTAwYTMxZjUyNSBweTNrCis1OTA0NiAxOWY5OTY1NTMxODQ4MDZiOWM3OTZjNmMzNzgwNjgwMTczZWFiNGU5IHB5M2sKKzU5MDQ3IDZhYThlMTM1ZDlmODRkZjQwMWQyMjE5Y2M3OTZmZjI5MjVjM2U2NzIgbGVnYWN5LXRydW5rCis1OTA0OCA0OTY4MWQ0MzZkZjkyMzZhNjM0ZGQ2MDI4NmQxMDQzNTUxNTYxNWU4IHJlbGVhc2UyNS1tYWludAorNTkwNDkgMGU4OTc5MDVlZTk0M2Q5NDIyNDJhYjA5YzhhMjQ4YjVjMGVkMmQ2MCBsZWdhY3ktdHJ1bmsKKzU5MDUwIGU1ZDQ4ZmJlMTY0NjJjNDBkYzIyZjcwZjBlYmZhYjQ0NTViMWY5MjIgcmVsZWFzZTI1LW1haW50Cis1OTA1MSA3ODBjNzI4NDA2ZTY3NWYyYjRmYzk5ZWM2ZWQyZWQ5ZWNiMzIxNzFhIGxlZ2FjeS10cnVuaworNTkwNTIgZGE4ZGNkNWNmNWEwMWEzNDMwNTcwODE5ZDVhNzRlMzk2NWRmM2QwYiBweTNrCis1OTA1MyAxYWU5MjI0ZjRlZTdmMDFhNWE0MDdjZmRhNDRlOGY1ODA2MGEyNDRlIGxlZ2FjeS10cnVuaworNTkwNTQgNTRiOTczZjBmNTViNWI1ZDZjMDU2YTJjZTMzMjhlMTc2ZjM2NGEwZiBsZWdhY3ktdHJ1bmsKKzU5MDU1IGI2ZjU3ODFmNWMzZjBmNTVjZjc1MjE1Zjk2ZWM2YzBiOGVmNjE1Y2UgbGVnYWN5LXRydW5rCis1OTA1NiA0NzQ3ZWY5NjQwYWU4YjEzNzUyMTcwMjM0ODAyYzQ2MDRjZDc2MjBhIHB5M2sKKzU5MDU3IDYxZWY5MGExYjM1ZTI1N2NiMWEwNzRlNWU4ODdlMTRjZDM0YzEwOTkgcHkzaworNTkwNTggNDBkZmM0ODViMGJlMzdlYmFhMzFjNmU4OTEwNjllODcwNWI1YWE1MCBweTNrCis1OTA1OSA2OTY5OWNmZGQyNmVkMGU1M2JjZjAzNWVmOGQ0MWU2ZjQ1M2FiZTFmIHJlbGVhc2UyNS1tYWludAorNTkwNjAgYjFiY2Q1OTk2NzFmMDUxODFkYzk1MTU2MjQwYjRhNzQ0OGQwZmE2YSBweTNrCis1OTA2MSBhOTE1ZjJiMTM1YzA5NWRmZTk0OTI5ZjgzYjZhZDMyMGE0OTkzMzlhIHB5M2sKKzU5MDYyIDE0NmJhOTdmZmUxYWIyYzlhZjQzNmIwMjNjNjNmYjk4Mzg2MWZlYjEgcHkzaworNTkwNjMgOGVhN2Y1OWRmZjZiYzYzYWM4ZmM1MGIyZTY3MDMxOWFmNzZiMDFiYyBweTNrCis1OTA2NCBmZGYxNDE3MDMzN2FkNzhjNWRkYzQzZTgwYjEwNTQwZGU4M2IxN2RlIGxlZ2FjeS10cnVuaworNTkwNjUgMmEzZDczNDk1ZjE4NGRjYjFmZDI2ZWM2YTY4YmNkNzYyNGIyNDIwZCBweTNrCis1OTA2NiAzMmQ0NTdhNzg4NWJkZjM4MjZiZWJkZGVhNDk5NDE0ZTk0YzA2MWNkIGxlZ2FjeS10cnVuaworNTkwNjcgZDNjYjE2YjMyMWQ1NWMzZmJmZDdhODUyNGZhNGY5YWQ2YzY4ODExZiBweTNrCis1OTA2OCA3NGYyMjk1NGYxODk5ZGI0YzQ5ZDBjZjk2ZGRhZDI1YzE2ODk5YzdhIGxlZ2FjeS10cnVuaworNTkwNjkgNmNhMDA0NDc1YWEwZmM4NDM3OGIwNDgyODRjMDI4YmQ2Y2JkZTYyOCBweTNrCis1OTA3MCAyZGU3ZDAwZmJmMTkyYWMzYTZmZmMxOTgzZmEyODVjODVjMTM0ZTRmIHB5M2sKKzU5MDcxIDU1NzYxNGM0ZmYwMGYzMDk4N2I2Njc5MDAzYWNkNDBlNzM2ODQyNjUgcHkzaworNTkwNzIgMjliMGY0OTc1ZDlmMzFlMmQxMDZlYmI0ZjM1NjRmMTI0OTg5Nzk1OCBweTNrCis1OTA3MyA3YWI0OTA2NGQ0MzBhYTVjOTMwNDYzNThhMTExMGFiMmQ0MzJkOGFmIGxlZ2FjeS10cnVuaworNTkwNzQgZjU0ZWNmNDk0Y2I3MTEwNTAyNjA4MmU4Mzk5NDljOGY3MzQwODNkMSBweTNrCis1OTA3NSA4YjdkNDMxM2ViYzA1NjljYWM5MmZlMzc0MGQzMzdiNWFkZDMyMTVlIHB5M2sKKzU5MDc2IGU4YWMxYWU0NTAzY2Q3YTgyODA3MjI4Mjk1ZDQ1NTllN2EwZTIxYTQgbGVnYWN5LXRydW5rCis1OTA3NyA5YzRiZjE4ZTVkMzBlNjMzNGNjMzQ0NTg0YjBmZWJlYzM4ODAwZDA0IHB5M2sKKzU5MDc4IDcxYTE3ZDRkM2FmYTBkYTQxNjg4NjcxZTBjYzQwZTFiZWU4MTk1MTUgbGVnYWN5LXRydW5rCis1OTA3OSAyYmE1YWIzODY4YzkwZmIxZjQ3ZDk0NmVkNWNmNGEyOWQ5MWZmZDZiIHB5M2sKKzU5MDgwIDM4YjFkZWI0ZTRlYmRmODM5ZjdjOTE2Zjg2OWE0Yjk3NjJjY2M5MGYgcmVsZWFzZTI1LW1haW50Cis1OTA4MSA4ODM4ODRmZGFhZThlMTE0M2NmYTI5OGM5NTMwMGFhMTY5MmExNWY1IGxlZ2FjeS10cnVuaworNTkwODIgODYzNmRjYjgwMWNlMDYwM2U0N2E2NWZiZDQ2ZjQ5NjM5NmM4ZWZhNCBsZWdhY3ktdHJ1bmsKKzU5MDgzIDI1ZDljZTI4M2IzOTRmMWFlZDY5Zjc5M2ZmM2M1ZGQwNDM2OTI0N2EgcHkzaworNTkwODQgM2ZiN2VkNWMyM2RkNjkwZDQ0NDBiZGQ2NmQ3OTUxNGVjNDExNjJlYSBsZWdhY3ktdHJ1bmsKKzU5MDg1IDNiMDQ4OTQxMTZmZTIyMmY4MjE0MzU1ZGZiZDZlYzZhZmVmNTQ1OGQgcmVsZWFzZTI1LW1haW50Cis1OTA4OCA3ODJjYjQwMzc4ZjQ0Zjg3YTE0YzZhYmE1MTdhZDA0ZmE0NWNlNzIyIGxlZ2FjeS10cnVuaworNTkwODkgMmRiY2QzOTBiNmYxNTM3ODgzYzE5ZDNjNDFkY2Q0YzhhODdkMmI1ZiBsZWdhY3ktdHJ1bmsKKzU5MDkwIGIwOTlkMzljMzQ4MmQ5NWNhZmY3MmVmMmU4NGNmMjMzYTJjMWQxZGUgcHkzaworNTkwOTEgMmZkN2M5MTExNjMyYTI1MDBhMTBmODI2NjdmM2RmMzU1NzFiZDllNSBsZWdhY3ktdHJ1bmsKKzU5MDkyIDZjOTY3YzI2ODQxYTkxNDU1MmJkMDZlMWY1YzdlOTYzYWNmOWM2ZWYgcHkzaworNTkwOTQgY2JjOGIzYmQzMTU3ODFlNTNhZmI4OTAyNmU1NGQwMWZjMDZkMTMzYiBweTNrCis1OTA5NiA4ZTBjNGM3MTAzNzVmMmRjOTE4YjI0MzZmYjI2NDVlY2YwODFlNzdhIHB5M2sKKzU5MDk3IGVhOTg4NGYxNDU0NTk4ODViYjUxNGYxY2UwODVkNzkxOWIyOTgxMjUgcHkzaworNTkwOTggMmEzY2E5MDAwOGZmZmVjMWVjYzMwMWNkYTdhNDhhZjZhNTkyOGQ2OSBweTNrCis1OTA5OSAzMmJmZjdmMjk3NWQ4MTBhOTlkNjlkOWIzZGFiOWUxNWQ4ZGE2N2ExIHB5M2sKKzU5MTAwIDZmMTQ5NTI2ZTg2NGM0MTA0NmU0ZGRlYTNiNTNmMmU1N2M0NWEyYzAgcHkzaworNTkxMDEgZGRiYzVlMmM2ODlhN2E0MTExMDJkOGE1OTA2MmE5MWM5NDMwMWRmNiBweTNrCis1OTEwMiAwOTJiNTMwNjk4M2Y3MjBiYmUwMWViM2UxYmVmOTc3MjIxOTU4OGNkIHB5M2sKKzU5MTAzIDc1MzY0MzY0NDA4YjY5MzFkODNkODliYzUwNWYxZDJlNTJmZWRiNDUgcHkzaworNTkxMDQgZmU1YjJlZGZmYWU3NjlhY2NhNTA1YjI4ZjMzYTgwN2RlYWI0NDU2NiBweTNrCis1OTEwNSAyM2JlZmU1NDBkMGQ1NDZkZDE2OWU3YjU1NGJkOWJjNjA2ODBkNjc4IHB5M2sKKzU5MTA2IDEwM2I3Zjk1NTAzNmVhMzZmNWZlYzVkM2JkNjY4MGE1NmNiZWM3YjIgbGVnYWN5LXRydW5rCis1OTEwNyAxMjA5OTcwNjEyZGZlMTgxMTYwNjAxNGQxZWE3Mzg0ZGNlNGZhOTVjIHB5M2sKKzU5MTA4IDk4YjQ5NjY2NDlkNTFiMDkzZTE5MTk3ZTFjOTJhNmRiYTRjMTIzMmEgcHkzaworNTkxMDkgYjIzMWJkYTY1M2E0ZjliMzVmNjFkY2QyNjUzZGVhZDhhZGFkNjhiZiBweTNrCis1OTExMCAyNTllOGEyZDZmOGMyNzA1OTQ1MGU4MmRkNzhlZjJmYWI2M2U4YmJmIHB5M2sKKzU5MTExIDE0YzRiYjNjNjVhN2M3ZWVmN2ViYmYxOTAxZTFmOGM5Mjk5ZmNhNzAgcHkzaworNTkxMTIgMjY1NWQxMTMxMjMyYzFjZmQyNWNiMjA5MzU0OTM2OTMyYzFjMzFjZiByZWxlYXNlMjUtbWFpbnQKKzU5MTEzIDQxYjJmMjZjN2IzZGJjNTA4ODYxYmVjNDE0M2ExOTVlNmIwNjE3MDMgcHkzaworNTkxMTQgZDIzODI5YTlkYjIxMTkzYzZlNGYxNWM0Yjk2YzNiMTRlNGFhM2E1YSBweTNrCis1OTExNSA4ZDFlZWYzOTE5ZjA1MWU3OWQ1NzliNjk4YTY2MGE3NzI3YzJmMGYwIHB5M2sKKzU5MTE2IGQ5YmNkOTRlNTkzNWU2YjVmOTFhNGIyMWFkYWM4ZjE0MTZmYmE2MzIgcmVsZWFzZTI1LW1haW50Cis1OTExNyA4YmNiZjMyMmMyYjVjMjc5MGU3YzA5ZmM1ZjU1NzA4ZTNiN2I3M2U2IHB5M2sKKzU5MTE4IDRhNzU1M2IxNzZiNmExYTNjZDRjMzAxYTI2NWQyY2FmNGNmMjQ5MjQgcHkzaworNTkxMTkgNzI5NjJhYmQ5MGExNmFiODU2YmE2OWUyM2VmMGYyZWRiZjVjN2ZjNCBweTNrCis1OTEyMCBhOGRkODg3NGZmMmQ1MWViYjc0MGEzNDM5MTVjMDBjODVmMDAzMWUyIGxlZ2FjeS10cnVuaworNTkxMjEgZjYzMjcyMGQ4MTAyN2NlODlmMjQ2MWE0NTA3MjUzY2Q2ZTI0MWE4NCBweTNrCis1OTEyMyBkYTQ3ODQ3MWYxYjZiODY4NTc3ZmM4NmQzOTdhYWE0NzhiZGU2YmIwIHB5M2sKKzU5MTI0IDZkNmI2MDllNDU3YzgwNzUyYWM1ZGUwNTcxYzUzMWNlMWY3MDBiNzggcHkzaworNTkxMjUgODc0NGU0MWRhZjU0NWNkMTg2YzEyNWU1Y2MxMmM4MGU1YWMzYjg3OCBweTNrCis1OTEyNiAzYzcyNWE0M2FjOGNkOGU2NzMxMmE0NjRlYWNhODA2ZWU2NDI1NjQ2IGxlZ2FjeS10cnVuaworNTkxMjcgOTM1MGU0MjVlNWYzYmI3ZTViNjRmZmYwZmJkOGE5NWE0YjQyMDVmZiByZWxlYXNlMjUtbWFpbnQKKzU5MTI4IDQ5Y2VmZWNjZjkzZWJmNWFiNTJmZWFhMWU2ZDc4ZDA2N2Y1ZDM2MzkgcHkzaworNTkxMzAgNmZmNjg1MDUxOTlhZTE4NTFmZDZiYjY3YWRhYTRmZTkzNmVmY2ViOCBweTNrCis1OTEzMSA2MmNmMDhhNjRiYzIzMTQwNDE5M2U3ZDgwYjc0MjIzNDdhMzQxNWJjIGxlZ2FjeS10cnVuaworNTkxMzIgNWY2YThlMmI5ZTljYTZkZDQ0NjI3MmU5YmI5ZTFjNTI2MWYzNjE4YyBsZWdhY3ktdHJ1bmsKKzU5MTMzIGU3MjUxNjZjOGM4MTg0ZjgwZmZkNmZkZWNlYzk0Njc1MGNkNDFlMTEgbGVnYWN5LXRydW5rCis1OTEzNCBhZjM2MDM4MGFhMTZmZjM3ZTY2MGVmMWY1YTQyMjM1M2M5ZWZjYjgxIGxlZ2FjeS10cnVuaworNTkxMzUgMjIzMGYxNmU0MDJiMTA1MTMzZDRiOGQxN2E4ZjZhZGI1ZDU1YjU3OCBsZWdhY3ktdHJ1bmsKKzU5MTM2IGVkMjliOTE2MmFlOWU5YTczOGJhYWYzMDcxM2UxNzcxYWUyMmUwNTYgbGVnYWN5LXRydW5rCis1OTEzNyBiNDgxYWRiMDQ2OTlhYzNkNjI3ZTU5ODJlNGZlZmI1NzgzMDRjMGI1IGxlZ2FjeS10cnVuaworNTkxMzggNGQwZmU3ZGE0Y2Q1ZjZmMjBmNGRkMTEyOGJlN2MyYmI5ZTU3YmE2NyByZWxlYXNlMjUtbWFpbnQKKzU5MTM5IDM1ODZhNjYzNDhiZjg0Y2EwZGM5MDZiNzM3MDU0YWVmMmFiNzQ1NDYgbGVnYWN5LXRydW5rCis1OTE0MCA0ZTFhMTliYTNkNGE2MzhmNWFkY2QzNDhlMDZjZDZmZGYzYzEyNGM0IHJlbGVhc2UyNS1tYWludAorNTkxNDIgNjhjYWE0N2Y1ZTE1M2UzNTU3MzA4YjMzNzY2MWFiZjVmNDgwMjYwNSBweTNrCis1OTE0MyAxMWUzZTJhZTIzNjQzZDIyMWM2MDEzMjZmNDllNzkwMWNjMGYxMWVmIHB5M2sKKzU5MTQ0IGE0YTE0MDQ4NjY5MTAzZGYyY2FiZWIzYjM3OTMwMDYxMWY2ODQ2MzMgbGVnYWN5LXRydW5rCis1OTE0NiA1NWZhZmI0NmZhNDU1ZjViY2E2ZTBhYWMwZDQ2NzA4NWU3MzFkNDdlIGxlZ2FjeS10cnVuaworNTkxNTQgYTljZjc4MGY2Mzk2YTcyZTljZmY4MDdmYTk1YjNmODY0ODVlMWY3ZiBweTNrCis1OTE1NSBiODZlNmJmNzQzOGY4OGYzMzljYmM1YjdlNDdhMTllODg2NTZjMzNkIHB5M2sKKzU5MTU2IDE3NDc5YTA5ZWM3Y2NkNTUxOTA1NzJhODRjZTcyMjllODJkNWRiZWIgbGVnYWN5LXRydW5rCis1OTE1NyBiYjFlMTViYjdiNTllYzg1OWI5NDU2OTMyOGRhNTM5ODZmMWU5MTZiIHB5M2sKKzU5MTU4IGI5Yjk0Nzg1YjJjNzJmYzVjOGJjNzRhOTA4MmY5MjYyYjhjYjEyZTAgbGVnYWN5LXRydW5rCis1OTE1OSAxNTVlOTcyNWRhMmY5MzQ3NTk1NTJmY2QxZGJiMjBlYWRjYmQ3OTdiIGxlZ2FjeS10cnVuaworNTkxNjAgY2Y2MDM4ZGY5ZDUyNjljOGUxZWRhNzc0YzllMTI4ODM2OTkwNTY0NSByZWxlYXNlMjUtbWFpbnQKKzU5MTYxIDQ5YTdjN2RiYThjYWZmNGRhOWYwNzAzYjhmNDkyYTQ1OTgwODFmN2YgcmVsZWFzZTI1LW1haW50Cis1OTE2MiAwYjUzNTdjYzQxNmI4ZjM1ODI0YmYzMzQxMTIwZjJmZTEyZjg3ZjM5IGxlZ2FjeS10cnVuaworNTkxNjMgMmJlZDg0MTU4NWE5Y2E2NWIwYjc0Yjc3MjZlNDc0ZGRiYmY5NTk0ZSBweTNrCis1OTE2NCBkM2JlNmU2MTVmOGM0NmRhYTY1YWY4Mjg3ZmMyNjU4ZWY2Njc3ZDk1IGxlZ2FjeS10cnVuaworNTkxNjUgZWRiNzVjMDk4YTRiMDU5ZDg0MjA3Njk0ODU3MzU0ZWQ2MTI2MTJjMyBsZWdhY3ktdHJ1bmsKKzU5MTY2IDZkNjE0YjhjNTEyNTMyZWNmODA3MTEwMzE0YzczZGYyMGZkZDBiMGEgbGVnYWN5LXRydW5rCis1OTE2OCBjZjIyMDU5NjBjYmJhYWQ2ZTQ1Y2Q3MzU0YTViZmQ4YWQ1NjI4YjU2IHB5M2sKKzU5MTY5IDIwNjhiZjc3ODkxZDBiNDI0MDkyNGNjOGM4NDU3NWQxMzFiZGU4ODEgbGVnYWN5LXRydW5rCis1OTE3MCAyMTgzZDcyYWJmYWFjZmNkZTVjYTNmZjlmMzRkODVhNmUyMGM1M2FhIGxlZ2FjeS10cnVuaworNTkxNzEgNGNmOWJiOWNlZjkxZjUwM2ZjNjE5ZGFjNzAyMzc0OTUyODAxNmEyNiByZWxlYXNlMjUtbWFpbnQKKzU5MTcyIGQ1NjAxZWJlMTVhOTQ3MGQxZGQzM2U4NWQ3MzUyN2M1NjM0ZDNhMDYgbGVnYWN5LXRydW5rCis1OTE3MyAxNGFhM2U0ZTczNzU5YjdhNjY3YmM3YmVmZjE2M2YyM2ZmYzU3YjEwIGxlZ2FjeS10cnVuaworNTkxNzQgZTA0NjViYTBlOTVkNjhiZjE2Mjk1MWZmZDQyYmI2YTM0YTRlYWU1ZCByZWxlYXNlMjUtbWFpbnQKKzU5MTc2IDdkZDc5NjFlMGVmZjNmZjRjN2ZjMjJmZWQ2M2NkMTliNjA0OWE4MTYgbGVnYWN5LXRydW5rCis1OTE3OCAyMmUwOTkwNWU0MDAwYWU3Y2ZmNDg2Y2JmYzY3NTIxYmVjNDI5ZmQ2IHB5M2sKKzU5MTc5IDdiNGU5NGE3YjkyZTllZTAxYWFmNzc5ZTQ1ZGQ4Nzg4MGVjMzI3YzggcHkzaworNTkxODAgYTdjMThiOTI0MjM2YTA3ZTlhNjNmNTE4M2QxZDgyOGFiNTFjMmFlYyBweTNrCis1OTE4MSA3YjMwMTExMjQ3ZjY3MjAwN2MyNmVjN2UzNDI5OTRkZjMzMDg5Y2VhIHB5M2sKKzU5MTgyIGU2MTY1ZTM4OWM1MDIyYjQ2ODczYTVmMjlkZTgyNzkxMDgwMmFhNWUgcHkzaworNTkxODMgZmY1ZGYxZmMwZmNjNGE2ZGYzMzhhOGNlYzVmMTg0ZDA5OTRlNzA5YyBweTNrCis1OTE4NCA1MmJiZTMzNjVjNzJjMjcwZjc1ZDE3M2MwYzY5OGViNGNlNjAxNjA0IHJlbGVhc2UyNS1tYWludAorNTkxODUgNzNmODM4OTllYjlkOWVjMDBlNjIyY2RiMDBlMTdkODI2NWI5NzZjOCBweTNrCis1OTE4NiBlNGIxZTA1Y2UyNjM1Mjc1NWMwMmQzM2Q5MTE5ZjdhNGVmMzE1MTU2IGxlZ2FjeS10cnVuaworNTkxODcgZWJjNzM4OTI5N2Q2OTFjNmUxNTljNTk5OTllN2UwMjg1ZjBkNTY2ZCBweTNrCis1OTE4OSA0OGFmNjM3NTIwN2U3MDhkYjQxYzE5YjYwMzczYmM2MWRmMDNmZWIwIHB5M2sKKzU5MTkwIGY0OGQyZWY3MmU3ZTM5NDI0YjA0YWEyNTU4YjliZjYwYmEwOWJjYTIgbGVnYWN5LXRydW5rCis1OTE5MSAwNDc2NDU3ZmZiMzkxZmQyZjA0NjhjNzIyZTdiYzVlNjM3NTQxNTYwIHB5M2sKKzU5MTkyIGU3ZmVkN2E1OTU3NjhkY2UyOTNlNWQwNjNlNjBkZjhjODIwYmNhMTggcHkzaworNTkxOTMgYjRkYTcxYTg4ZmMwMTVlZDQyOGE3ZmVlY2RhMTgzOGYwOTU1OTljYyBweTNrCis1OTE5NSBmMmUyNDc5YWZkZjBiMzMwOGYyNzViYTY4ZmZlNzY4NTYxZjQzOTI2IGxlZ2FjeS10cnVuaworNTkxOTggOGY5MmI0ZWU2ZmM0Y2Y1OTU0ODliYmM1YjhiOTJiMmQ1ZDFmMmExMCBweTNrCis1OTE5OSBiYTMwNTYxMTliMjgzYzBkMzk0MzhkMmU1OTMxMDYzNGYxNGMzNjU1IGxlZ2FjeS10cnVuaworNTkyMDAgNWQxMDQ5ZDRjM2M2NTg0NzBkZTAzNzEzYmRjMmU2YmM5ZmRkMTNkZSBsZWdhY3ktdHJ1bmsKKzU5MjAxIGJmZTAzN2UzZmQ1NWZmMmZiODdkYjYwNWZmZjllNmE4MzE1NGZiYjAgbGVnYWN5LXRydW5rCis1OTIwMiA0NWNlZDZhYjA2NmQ1YmM2MTNkMThlZmU5NzAxYzBmZWY2NDBlNDhhIHB5M2sKKzU5MjAzIDYwZTZlYWEzNzhkOWY5MWJlMmI0OThkNjYyYTU2ZDVlY2FiZGExOTcgbGVnYWN5LXRydW5rCis1OTIwNCBkNDRmZmZkYTJjZDA4NzU3ZGVkNTliNzNhYzQyOTdiMzg1MTcxNmEyIGxlZ2FjeS10cnVuaworNTkyMDUgMTJlNzI4MDM1ZTJjNmNmMmJmZDEzMzM4NjZmZjQ5ZDYzMWIwYTZhMyBweTNrCis1OTIwNiA3MWY0N2Y4NjQ2OTFlODQ0ZjM2YzQ4MWJlM2JlNzYxYjBhZjdjZjNhIGxlZ2FjeS10cnVuaworNTkyMDggN2U4ZTg3OTdmOWQwYTg1MThiNTZiMTMyODliMTUzNmFmZWZkOGQxZiBsZWdhY3ktdHJ1bmsKKzU5MjEwIDkxOGJiZWUzYTU0NTg4MDBmMmJlMWVmMWJmYjM4ZjY3NjAxNTliODUgcHkzaworNTkyMTEgMWYwMjRhOTVlOWQ5MTZhMzk0NTNlM2Q2MzlmZTA3ZWM1NTA1OTgwZSBweTNrCis1OTIxMiA1M2IwOGZkODhiZjQ3NWJiNGY2Nzk5OTFlMTE0ZGMwNGMyMTFjMGFiIHB5M2sKKzU5MjEzIDUzMGZiOTg1MmM1MDQzZmVjMGJkMzczYmIzZDJlMjVlZTEzNWRkOTIgcHkzaworNTkyMTQgNGMzOTAyOWUzZmIwMzBhNjdmNzU1ZjdjNjE4ZmMzY2U5MDg4MjE0YiBweTNrCis1OTIxNSA0MjljYWRiYzViMTA5M2NkODA3ZWM4ODE2NWQ1OGE3YzFjZDljMTViIHB5M2sKKzU5MjE2IDQxYjdmODAyNjVkYjE5YjM5ODQ4NTc1NDNmYjNjMWE2Y2JiYTY0NTkgcHkzaworNTkyMTcgMTU2NDlhZWYyZGI1NWUxMjcwMDk0MWEzY2EzZjAxNTdlMzllZTkzYSBweTNrCis1OTIxOCBlY2NiMTk3MDQ0ZGQ0OTVkN2Q2MTA0ZjA3Njc1N2Y2ZDY4YjI4ZTg4IGxlZ2FjeS10cnVuaworNTkyMTkgYzAyNGI4OTRkOTI5Y2VkNGNiNmVjNTM5MGY4ODRiODk0M2E2YTdjMyBsZWdhY3ktdHJ1bmsKKzU5MjIwIGU2Y2E5MmIxOGNmNGRhNDJlYzU5MDdkZWJkNDM2NWNjZmUxZTc1YjEgcHkzaworNTkyMjEgZjIzODVkOTgyODJhYmEwZDkxMGQwMDk5Yjc5YWVjYWI2MWNiNWQwNiBweTNrCis1OTIyMiBjNGE2ZDNlYzQyYzEyNDkyNjcxYzc4Nzc5YTlmMDY0YzMwZDc1NjgyIHJlbGVhc2UyNS1tYWludAorNTkyMjMgNmVkNzdmZGE4YjkxNDgwYWI5YmY1MTlhYzY2OTQzMDExYjI1ZDRjNiBsZWdhY3ktdHJ1bmsKKzU5MjI0IGI2YjViNmNkZDIwMmE5MGVkNWRlMzIwMWM3OWViYTZhMDNiYTQzNWEgbGVnYWN5LXRydW5rCis1OTIyNSA5ZWY4NTcyNGY0YjFmNTIzN2EzMzJhNGUzZWUxMzU3ZDQxYzhjYTIzIHJlbGVhc2UyNS1tYWludAorNTkyMjYgNDlhYzU4N2UyMmU5MWYwMTdlYjFkMDIzMDBhNGIzOGU3ZmRlNWFlOCBweTNrCis1OTIyNyAyOTVjZjA1ZmRkMmMzMjhjNzUwMWM0M2MwNjU2MWU1OTRjNzY4OGY5IHB5M2sKKzU5MjI4IGQ2Mzk0NThjN2UwMjQ1Y2IzYzA0YzEwYmEzMGMxM2RkM2U5MWRmY2IgbGVnYWN5LXRydW5rCis1OTIyOSAwY2M1NTJhYjc2YmQzOWMzZjA1YzMzMjgyMDQ0NGNjNTAxOWE3YmE3IHB5M2sKKzU5MjMwIDg5NGZlZTI3OWRiY2VmMTYxYmMxMWU3ZWE0ZmVlMTY3Mjk4NDIxN2YgbGVnYWN5LXRydW5rCis1OTIzMSA0NDE3YWI1YjM1MWU2Y2Q4NGNkZDAzZmJlN2UwYjVjYjk1Mjk4NzAyIGxlZ2FjeS10cnVuaworNTkyMzIgMDAwNDhmZWRiYWEwZTIyZTNmZjU2YjhiOWMyMGE0NzI1YjlmZmFjNyBweTNrCis1OTIzMyAzZWY2ZGJjNDM1MzFhMWNiZjI4NGE2ZWNlZGJmMDhjZTRjNzRlMzY3IHB5M2sKKzU5MjM0IDI4YzgwMjgzNzI1MjMzZDFmNDU2NDZjZWM3MTE3YzQ0YzcyNTM3YWIgcHkzaworNTkyMzYgM2NlYmRlNDc4Y2M0ZGZlMzM3NzVjOTQxMzQzNmRlMTQ1YTk0YjlhMiBweTNrCis1OTIzNyA1MzExMzEwNmZlYmI1OTU1YTQxMTViOTljMzA2Njk2ZmJhZDEzMjBmIGxlZ2FjeS10cnVuaworNTkyMzggM2FhMTEwZjY4MGFiM2UwYTA4MTcyOTg0ZTA4OGFkNTdmNmRmYWFjZCBsZWdhY3ktdHJ1bmsKKzU5MjM5IGY1NjQ0MDVjODEwNDFkZmI4ZTZiMDU1OGI2ZjhlYmEzNTQ3OGQwOTggcHkzaworNTkyNDAgYjQ0MDU5ZTBmMDc1OWVkMTJjYWFlNTM1OWUxYzNhZjg1NjQwY2JhNyBsZWdhY3ktdHJ1bmsKKzU5MjQxIDJmNDdiMjI4YmEwNjU0YTBhMGMxNWI1OGExMDJlYjVlYjY1YTNjMDQgbGVnYWN5LXRydW5rCis1OTI0MiA3NTc3Yjk5ZWM1M2I1OTJiY2JlOWJmNDU5MWQ0YjcxYjdjMmM0OWE5IGxlZ2FjeS10cnVuaworNTkyNDMgYzVmMmM5Nzg5MzEzNWZiZjg3M2EwNmQ5Mjk0YmRiNDc0MDM4ZmMyMSBweTNrCis1OTI0NCBmNGU3YzcyOWIzYTI0ZWMyYjg1YmVmZmNiNGU1NzhkZWI2NjMwYzkzIHJlbGVhc2UyNS1tYWludAorNTkyNDUgMTY1ZTUyN2MzOTlhZWU1Mjg2NTA0ZjBlMzJkZWUyZTIyOWI2MTFmNCBsZWdhY3ktdHJ1bmsKKzU5MjQ2IDUxYzFlYWViODc4NmE2OTJkNTM2NDZiYzNjYmM5ODU3ZWZhYzdmODIgcHkzaworNTkyNDcgNjY0YjBiYzkyYjk2ZmRlOWU3NWU2MDg3OWEwYjE3ZjlkYWY5YTU2MSBweTNrCis1OTI0OCBkY2M0YmM1OGFmNTJiN2VjNmYwNTA1MTJhNDZiYzQzZWEzZTM2NTk5IHB5M2sKKzU5MjQ5IDgwYjQyZGIyZWFjOTJiZTg5ZWQxNDBiNjllNDIzZjc0MWIxMGY2ZWEgbGVnYWN5LXRydW5rCis1OTI1MCAyYmFhYmVlNDA3MDJmODQ2MGMxYmU3MWVmYTI5ZDAzNTQwODlmMzdkIHB5M2sKKzU5MjUxIDRjYjk1ZmM0MTI5ZTBlMTM1ODQxZjA3MmY0NGU1NTEwZjYwYmYzOTYgcHkzaworNTkyNTIgMzUxYjdiZDc4NmU0YWVlZDMzZDk2ZmZhYTRkNjBkYmVlY2UzZTk2MyBweTNrCis1OTI1MyAyYjIxZjE1OGFiOWZmMzE1MDg2MzhlODJhYmJjMTg4MzE0NWIzMDI4IGxlZ2FjeS10cnVuaworNTkyNTQgYzIxOGQxYWM5MTZlNWZlNDNiZGQzZDVhNWFkNThlMzYyMGUyYjI0NyBsZWdhY3ktdHJ1bmsKKzU5MjU1IDExMGZmNjE0ZWMyOGFkZGVmNjNmMWZjYmY2MGRjNjU4ZDYwZDA1MDkgcHkzaworNTkyNTYgOTQ0YWUzNDVlOWZmYjQxYTlhMThhZWYyMThhYzkyMDc2MzUwZGVkOSBsZWdhY3ktdHJ1bmsKKzU5MjU3IDg2YTczNWI0MmE4ZmNlZDlmYmJlMGM1YmI1ZjYzNWRlNzNkMTk1OWIgcHkzaworNTkyNTggMjEzMjFkY2YwYWI1ZDlmNzZmMDYxY2NjZmUwMGVlM2Y3ODlkN2QxOCBsZWdhY3ktdHJ1bmsKKzU5MjU5IDZkN2ZkOTVlZjE0YWU5N2QyNjMxNzg1NWYxYTI5N2VjM2YxYTFmNWUgcHkzaworNTkyNjAgZTYzNDUxMWI0YWY1ZGE4Y2ZlNjg3YzIyM2U4OGZjNWYyZTM0OWM4ZiBsZWdhY3ktdHJ1bmsKKzU5MjYxIGIyMWIxYzRmMDQzOTViOWIyYTFhNTBhMDU5NWNlNjM2MGNiZTM1OWMgcmVsZWFzZTI1LW1haW50Cis1OTI2MiA0ZjFiMjBlZDk4ZTVmYTc1NzgwODAwZDQ2ODM3OTAwY2NlOGMzYjEwIGxlZ2FjeS10cnVuaworNTkyNjMgNjIyNGRjYWM4MDdkODczMDBjOWI3Yzk4YTZhZGQ3OTZhMjJhM2RlNyBsZWdhY3ktdHJ1bmsKKzU5MjY0IGJmZGVhNjUzODhjMzFhNjViYWJiZjNkZTgxOWYxZDA0Mjk1NDM5NzEgbGVnYWN5LXRydW5rCis1OTI2NSAxOTlkZmY4NTMwYWQ5ZGI5NmIzZTAwN2Y1MGNlMGQzOGU3NGE3OTBjIGxlZ2FjeS10cnVuaworNTkyNjYgODIzMTQxYWRiMDgwMWFhNDNlZWFiZmMyM2NkMTkxYjg3NmMxZWE4YyBsZWdhY3ktdHJ1bmsKKzU5MjY4IDA4ODlkYWY2ZDBkOTRiNWY5NjdhZDY5NzBlMmI5ZDUxN2FhYTZhNmEgcHkzaworNTkyNzAgZjMyNDYzMTQ2MmEyN2M2ZDJhNjg0ZjNiYjU3MDkxODVmZjZiOGYyYSBweTNrCis1OTI3MSAxYWM3YmFhZWJjZTc3NTQ5YTZjNTdiNDIyNWZjNmUxZjdjZDc3ZTFkIGxlZ2FjeS10cnVuaworNTkyNzIgYWJhM2QwOTQ5YTFkNTUyZGQ3ZWVmYTE5ZGRjNGE2OGRhNzYwNmVlMSBsZWdhY3ktdHJ1bmsKKzU5MjczIGU3YmNhYzg1NjI0NTJjNjlhNDgyMGMyYzVlMzg5ZTczZjBhZTBjZTcgcHkzaworNTkyNzQgMWUyNjYwMTVjZjViYWVjZmQ0MzA3ODA0YjBhNGRlYzY5NmY1Mjc3ZSBsZWdhY3ktdHJ1bmsKKzU5Mjc1IGZmMTc2NmViMmZjZWVmMzNlNTlhNjQ1Mzk0NzA5YmJlMGEyMTdhOWQgcHkzaworNTkyNzYgMjdmZGNhM2FhN2Q0NjhkMGNhZDEwOThjOWMwYjI4ZjFlZjJkZWJlMCBweTNrCis1OTI3NyA0MGZjYWFkZmIxNjYzZmQ5ZGZiYWRhOGY1YzUzMjVkMGJjOWViNmZhIHB5M2sKKzU5Mjc4IDRlMWQ2NDkxMzY3Yzc1OGQzMDZkMjI3YjZlN2RmZTA3Nzc3NjFmM2EgcHkzaworNTkyNzkgY2VkYjdhZGM4N2M1ZjdjM2EzN2VhYmYxMGUyNzVjYTk0ZDNlOTE4NSBsZWdhY3ktdHJ1bmsKKzU5MjgwIDE2OWE4MzY0NTM2NzE3MDk5YWQ0NWI0MWMxNTVhNjU2YzE3NTE2NjggcHkzaworNTkyODEgNTc4MWUxOTI4YmNhNjU2MzNiZDJlYzVjM2VmYWMxMzg2OTNlZTIwOSBsZWdhY3ktdHJ1bmsKKzU5MjgyIDdmMGU0ODUzNmEyN2IzNWMwMjlhY2M5M2Y5ZDQ3YzNkN2E4ZTQ2NDggcHkzaworNTkyODMgYTFjM2JkMzgyNzcxY2U0OWJhZThmZmZjMDAwODU5M2Y0NmNkN2Q4ZSBweTNrCis1OTI4NCA5MWQxMTRkMWI1ODUxMzQ4MWE4MzRjZmIyN2EyOWEyZTUzMjM5MDBjIHB5M2sKKzU5Mjg1IDQ4NmRjNGRmMzc4OTY4NzEwYjgwNjk4OTZiOTRlMzc5ZmZmMjNhYzUgcHkzaworNTkyODYgMjBhYzQ3NzdjMGNhMTAzZTkyZjRlMjk3N2VhYjhjNTI4NTJiN2VlMyBweTNrCis1OTI4OCA4MDNlZGY5YjFkZDkxNDMzMjZlY2MyZTZhZmFjNzViY2Y2MzhiNGQ2IGxlZ2FjeS10cnVuaworNTkyOTAgZWFkMGQ0N2IwMTJiNTkyYjdhYmNkMTE5ZTAyMzYxNGY4M2EyY2FkMyBsZWdhY3ktdHJ1bmsKKzU5MjkxIDdlYWIxN2JlOGNiNDk3ODBiOGQwMzY3ZTA0NzFiYTU5NTM2MDc0NDMgbGVnYWN5LXRydW5rCis1OTI5MiA2NDU4MjA4M2NiOWFmYTQzYzA3NDUwOTAwMTNhN2M3Y2FiYTQyYjBlIGxlZ2FjeS10cnVuaworNTkyOTMgZmU2YmVkYWZiNDZhNjQ2MGViMDBjZWQwOGFhMmI4MTRkOWU3ODYyMiBsZWdhY3ktdHJ1bmsKKzU5Mjk0IDMwZjU0OTc3ODI4YjMzNzUwYjM1YjZjYzY1ZDM4NjlhMGVkOTVhMDMgbGVnYWN5LXRydW5rCis1OTI5NSA5NzIxMGQ4NjNkMTIzNGM2ZTRiNjNkNzkyZDdlOWMwNzg4MzU0M2I3IGxlZ2FjeS10cnVuaworNTkyOTYgNGQxNmVlMzkzMDFmOWMyMWU5ZDkyY2RmNjliOGEzYjI3YTY0NGRiOSBweTNrCis1OTI5NyA5NzMyNjg1ZWVlMTcyYWE3NjY1OWVjYmNhNmZmMmU5NjVkMTg0N2RkIGxlZ2FjeS10cnVuaworNTkyOTggOGFjZDhmNWM2MDgxNzUyYTJjOGE1NjE5OTFlYTE2ZThkOWE0MmIyMCBweTNrCis1OTI5OSA3ZTg5ZjVjZjZiMjE0ZjRiYmY1NzcyZDg2NzIwZWE3MGQ4Yzk2Mjg5IGxlZ2FjeS10cnVuaworNTkzMDAgYWE2MDE3YTJlOGY5MjZmZDExOTQyZDRkNzAxYzI1MzdkNDRjYjM4OSBsZWdhY3ktdHJ1bmsKKzU5MzAyIGJlN2E4NWMzNGE0YzRmODczODZlOGMzZGU4MDUyZTAwMzdhMzY4ZTAgbGVnYWN5LXRydW5rCis1OTMwNCBiNjM3MzQ5MzM2ZmQ5ZDEyMjdhZjA3MzUzMGY5NTA1MzZjNzc4ZWE0IHB5M2sKKzU5MzA1IGVhZDdhMDUzZjViNDM0ZmI5YzM2Yjk2MzJjMDMxYTQ1ODNiZDM3ZTAgcHkzaworNTkzMDYgNDRkMGM3MWRjM2MzYjM4OWRmZWRjZjMyODc3ZmU1MDFiNzBjMDc4NCBsZWdhY3ktdHJ1bmsKKzU5MzA3IGFlZWZiODk3Mzg0ZmI0MGRhOWYwZWQ2ZDNmNTYxZWZjYmJmOGRlMzAgbGVnYWN5LXRydW5rCis1OTMxMCAwYmZlYzYwOTgzN2VjNTAxYWJjODE2NjU4NTc2NjBiYWIxNmI0NTAxIHJlbGVhc2UyNS1tYWludAorNTkzMTEgZTA4YjEyYzNiOTEzNjQzYjBhZDc4YzY3MjQ2MGM1ZWNlYmE3OGViOSBweTNrCis1OTMxMiBkNzUyMTBiYmNhOTdhZjg3OWU2NDYxMTM4NzRlMWQ2Njc2NDdkMzBjIGxlZ2FjeS10cnVuaworNTkzMTMgMmE0MzUwN2NkOTUzMmViMDQxYmY1ODQxNzEwZGM0YzhiN2FiMzFjYiBweTNrCis1OTMxNCA4MjVjZmZkNmMwY2RhNzQ4NjUyNDgxMmQwMzI2YmQ3NDQ3YzA2NDk3IHB5M2sKKzU5MzE1IDhlNzRhZjE5N2U2YzAzMjRkOWE5NWFmODM0NWRiYmQwYzc5ZGZmZjUgcHkzaworNTkzMTYgODQyYjNkNDViZmU0YzNjZjdiMjYyNDJiZmMyMmU4MjVjZjNiM2EyNCBweTNrCis1OTMxNyAwNDUwNWM5ODhhYmNmN2MzYmVkYTI2YzQ4NTY0N2Q5YmE0NGU3YmVlIGxlZ2FjeS10cnVuaworNTkzMTggZWNlNjVjNjliMWQzMTRlMGExYjQ1Njk3MWE2OTg0ZTE4OTNkMmJjZiBsZWdhY3ktdHJ1bmsKKzU5MzE5IGM4YjMzOWNmZWYxZmU1YjQ2MmRiY2Q5N2QwOThhM2FjODc3NDIwMjYgcHkzaworNTkzMjAgMzFhM2NlMzhiNTZjMzVkOWEwNDhjMmEyOGRhNmE2NjNmMmQyM2M1YiBsZWdhY3ktdHJ1bmsKKzU5MzIxIGM5ZmM0YjFmOWJjNjkyZjVlZDk3M2MwMzA0MmE4MTQ2YjYzZWMxYWQgcHkzaworNTkzMjIgMGNlNjEyMjFjNjNmODRmMjc1YWRmMjU0OWI5ZTE1ZjVlZjU0N2ZhNSBsZWdhY3ktdHJ1bmsKKzU5MzIzIDYwZWY5YzRlNDAxMjRkYzMzM2M5Y2FiMDJmYmI3ZGEyODI4YmNiNTIgcHkzaworNTkzMjQgN2U1MDQyZWU5NDI0NGZkZWVkZWEyYTNhYTc4ZWIyMmE5N2Y4ODY2NCBsZWdhY3ktdHJ1bmsKKzU5MzI1IDUzMzIwZDU0NGJjN2FkOTJiOWQyOGFiYjljNDBkNmQyYzZkMWE1OWIgbGVnYWN5LXRydW5rCis1OTMyNiBmMGIzMzE5YjcyNjZiOGYyY2FhZTI1MWVlZTFiYWIzY2I0MTY0OTgyIGxlZ2FjeS10cnVuaworNTkzMjcgMmZmYTRmNzk5NGEzZTljODQ1ZmE3YzEyNjQ0MWQwNGVmNmZlZmY2ZiBsZWdhY3ktdHJ1bmsKKzU5MzI5IDE2YmEwMDE2OGM2YWVkYTQ2ZGU4MTk1ZmUxMDhjOGY0NDM1MWUxODggbGVnYWN5LXRydW5rCis1OTMzMCAxZTcyNmFlYWI2YTUyOWFjY2M1YjQ4YWFjMzYxMmM3NjUyODY5NmQyIHB5M2sKKzU5MzMxIDg4Zjg2NDQ1YmU3NzNlODVhMDFiZWUwM2RhNzQzMTNiOTY4MjliMzggcHkzaworNTkzMzIgODI5OTFmZjc1YzVhNmU0YjdmZjFkOTdmNjU4Mjg2ODQ3MDQyNjNjOCBsZWdhY3ktdHJ1bmsKKzU5MzMzIDFhMmE2ZGYwZmJlMDE3MGM4MWIzZTNmMTM3MTkzYzZiMjQ3YzgzYTkgcHkzaworNTkzMzQgZmI4NGJkOTUwMGE0MGVhNmFkYjQ5NjEwOGI0YTU5MzIzZjQxM2ZhNiBweTNrCis1OTMzNSA1NjUwMTJkMTEyM2RmMmUyYTdjYmI5ZWNiMDZkZGIwM2Q5MWMzMmRkIHB5M2sKKzU5MzM2IDgxZTBjMGUyYThjMTM4NDRjMzc5NzBkY2I5YjViMTU5MWRlY2VhN2EgcHkzaworNTkzMzcgYWY4NmI4OWNlNzg0NzBhOWI5ZmJkZjA1YjcyNmYzZjJiMjcxZWIwZCBweTNrCis1OTMzOCA5ZDE1MjUzMDkxMGE2NTBkM2NhZDRhZjMwNzQ5NWEwMmZkYzAxYzBmIHB5M2sKKzU5MzQwIDFhN2RmYjYxYjRkOGUxNmI3ZTQ2NTIxNTVmYzk5YjljMWU0ZTVhMzEgcHkzaworNTkzNDEgZWY1Mzk5YjM1M2M5NWRhNzBlN2U3N2IyZjJmM2IzMjhhOTVmNDE2MCBweTNrCis1OTM0MiA1NjQ5ZjdjZTMwNjI4NTYxY2RmYTY3OGNhMzE0YWJhNTA2N2QxMjM1IHB5M2sKKzU5MzQzIDMzNDE2MWY3NGI4ZTVmZGZlYTEwMjcxZmQwMWQzZTExNTZjNDgxNjEgbGVnYWN5LXRydW5rCis1OTM0NCA2MTJkOGRlYTdmNmNlMzIzOTEyMzU4NGQ4NzVmNTMwNTU3YWMwN2ZjIHB5M2sKKzU5MzQ1IGU0YzIyNTA1ZjAxMWNmMDY3MGY3ZWUzNDg2ODBjNTE1NTRlNjIzZWIgcHkzaworNTkzNDYgNjNlNjFjNzcwYTkzMmM4NDg3YzVhNzg1OGMxZGFiYTUxMDkxMjQ0NSBweTNrCis1OTM0NyBjMjc4NzgyODFjOGY3ODFiNjhjMTE4MDQ1NGZmNjM0OTU5NTNjMTMwIGxlZ2FjeS10cnVuaworNTkzNDggNWQ5OTEwODBkODhlNWZhMWIxNDc0MDk3ZjQ4YjE0N2JkYWI4Mjk4NCBsZWdhY3ktdHJ1bmsKKzU5MzQ5IDI2YTQzNzg2Mzk1YjRkMmIyMmNlNDFiMzk3MWQ1ODE5ZWQ5NGUzMDkgcHkzaworNTkzNTAgMTdiNDM5MDFiYjQxNWZiYTI4YWVlOTA5Y2NlNjhkNjc5NTc3NWNkMyBsZWdhY3ktdHJ1bmsKKzU5MzUxIDI3ODVlMjE2MGZhNmIyNzI0MjE4Y2E2ZmNjYzk3Y2M4OWQ0ZTE3YTAgcmVsZWFzZTI1LW1haW50Cis1OTM1MiAyNTBjNGZkNGNhNTQyZDI0OGM3ODIwOTM0ZWYyMWEzM2UwYTE4MTZlIGxlZ2FjeS10cnVuaworNTkzNTMgODY3MTYxMzRlZDg3NmYzYjlmNDEyMjg0NDFkMTFmNjU4ZDQ2YjFkNyBweTNrCis1OTM1NCAxMzQ5ZWE0NDFlNDFiYmNhM2ZmNmJlY2NiZGZiZTZjYTVmMTQwZjUwIGxlZ2FjeS10cnVuaworNTkzNTYgNDBmYzg0MDUxN2ZjMDEyYmExNDcxYzU1MmYwZmNkMGY2MDlkMzMzNSBsZWdhY3ktdHJ1bmsKKzU5MzU3IGRhZDllZDMzOWJjMzQ1OGQ2MGQ5NWM0YzdlNWU1MmViYmUyOTZmY2YgcHkzaworNTkzNTggOTM0MDY5OGFlNDIxMzkwODZlMjM3YmZiODI4MDY0N2ZkNWI4YWVjNCBsZWdhY3ktdHJ1bmsKKzU5MzU5IDc5YWZhNGM1NTIxMWRmYWI1OGFkZjRlMDA0ZWQ0OWVkN2Q0ZDYwODggbGVnYWN5LXRydW5rCis1OTM2MCA2MjAwYTQ0N2RhYTE2Njc3OTUwMTUwZjY3YzI4MDAyN2U4MWYzMzUwIHB5M2sKKzU5MzY1IDMyMGY3ZWM2M2YwYmRmZDI3ZTJkZGI5MWMwNjViMjZkNTU0MDk4OGQgcHkzaworNTkzNjYgNTkwYTE0NDc2MDE5YTNjMmI2MmMwMjZkMDJlNmM5OTNjY2ZmOTc3MyBsZWdhY3ktdHJ1bmsKKzU5MzY3IGQzM2Y4Y2M3MDdjYmZlM2I5MWRlM2RjNGU0OTgwODlhMjdlZTI4M2QgbGVnYWN5LXRydW5rCis1OTM2OCA4NjBjZTk3NTVkMTViZDc4NTEwNzEzZGIzNDIzZTFmMjhhZDQ3MjFiIGxlZ2FjeS10cnVuaworNTkzNjkgNTVjMDUwNDIzMDNiMzlmMDU0YzQ3MjEzZjU2MWIwYmY1OTdlYzRhYSBsZWdhY3ktdHJ1bmsKKzU5MzcwIGExYmM2NTk1NGE5Y2JjMWUxN2VjYTg1YjcwYmJlNzA3NzhlOThhYTcgbGVnYWN5LXRydW5rCis1OTM3MSAwNWRhNDllYjEyYzE0ZjAzNDhhNWVjM2MzMzNhOTMxNDE4MDYyZGNjIHB5M2sKKzU5MzcyIDFmNzIyYjA4NTQwMjdjNWVjMmQ3MGMyNDg5Y2NiNGM0MGI0NjlhNjEgcmVsZWFzZTI1LW1haW50Cis1OTM3NCA1Mzg0NzZiNmQ3ZTA1MmI1MGE4MmZkYjFhODI0YmYwNDFlM2U4NmI1IGxlZ2FjeS10cnVuaworNTkzNzUgMTdjMTc4MDdhNjExNzhhZDY4OGFlODFiNDExNTc2ZjI5NDg1ZjViYyBsZWdhY3ktdHJ1bmsKKzU5Mzc2IGQ2NGJlYjhmYWQwNjYxNzdmOTFlZTkxZTdmZjc2YWMwYzkzN2IyODcgcHkzaworNTkzNzcgODVlNGJmZjM3YmJkY2I2ZDU2ZjAyZWRmODUzMjNiMDVhMTkyNmM0YSBsZWdhY3ktdHJ1bmsKKzU5Mzc4IDQ0YzA5MGM3NDIwMjYwMjNjYTBmMGI3MzE1MjZiM2M1NzVhZDFlN2MgbGVnYWN5LXRydW5rCis1OTM3OSAxZDk4ZmMyNjVmOTkyZTU2NmNjYmJmMDJkM2ZiZmEyOGE1Mzc0ODBlIHB5M2sKKzU5MzgwIDlhZDRhZWRmMzQ5YmU5MmEyODRkMzM3ZmQzZGQyOGJhMGFlMTEwMTQgbGVnYWN5LXRydW5rCis1OTM4MiA2ZWY4YjViOGU1ZDZmZmU4YjA0ZjY3NjhlNWJmM2QwMWYwYTYyODkzIHB5M2sKKzU5MzgzIGFmZDI5OTZmMjAyMTI0NzQ5NjIwODg5YjYyMzk4ZmZiNmY0NGUxNzYgbGVnYWN5LXRydW5rCis1OTM4NiBhNTNlZjc3ODU5MGViYjNkMGQ2NmUwMmYyMGZmOTExZmYyMmZmMDNhIGxlZ2FjeS10cnVuaworNTkzODcgYmNjMTczYzNhZDcwOTJiM2I2NzBlMjBjOTFhM2ZiYzA5YmYxMWVhMSBsZWdhY3ktdHJ1bmsKKzU5Mzg4IGYxMWRkNGQzMTVkZDBkYTY3YjcwZGJhMDRmYTVhMTFiZGFjZjlhYmIgcHkzaworNTkzODkgNzRiZGQ1MGYwN2U1ZGMzYzQ4YTZmNDIyYzk5ZTZmYjliZDIxMzk1NyBsZWdhY3ktdHJ1bmsKKzU5MzkwIDcxYWQ1ZTJiZWRkYTI3ZDA5YzUxOWExOWQ2Mzc2MWY2MWIwZGMwMzQgcHkzaworNTkzOTIgOTM5ZTgxMmNjMDljZTdiMDA5YjQzYWI5MjMwY2YwNzExYmM1OTUxNyBweTNrCis1OTM5MyA1MGIwM2FmYTBiYmU3OTMzN2FmZDEyOGU3MDEzMjIyYTZhN2RhOTllIHB5M2sKKzU5Mzk0IGMyMzI4MzZjZTVjOTQzNjQ1NDAwNTE4ZjNhZmJkZDk4Y2UzMGRjMWUgcHkzaworNTkzOTUgY2UyODBhMDRmNTVlMGZlODdiNWU5Y2ExZWM2MGQ2YTExZWE2NWQ1YiBweTNrCis1OTM5NSA2NWU4MjE0MGUyODFiZjI2ZjJlMjJlZGEwNWE3Zjk5NTZjNDIwZjhiIHB5M2sKKzU5Mzk5IDJmY2U5ODlkYTAyMTNjYWQ0ODY0NTEzYzAzNGVkZjUwNzI4Nzc4YTcgbGVnYWN5LXRydW5rCis1OTQwMCAzMzU2YWQ2MmMyYTM2OTk3MWVlYjc1ZjdmMmIxZTY4NThlNTQyMmNlIGxlZ2FjeS10cnVuaworNTk0MDEgNTgyZDJhODM4NjNjYzQzOTAzNTBjMTYzYjkxMjgzZTQyZjJmMGYwNCBweTNrCis1OTQwMiA4MDg4NDY0M2E2ZjllN2QxMzZjOTYyN2QxMjcxNDQ3ZTA3ODNjYjllIGxlZ2FjeS10cnVuaworNTk0MDMgYzZmYjM5M2I2YzgxNThiMjA1OWZjNTBiMjE4Njg5ZmQyNDRlYzRlNiBweTNrCis1OTQwNSA3MGNjN2Y3NDBkMzQ3MjYwYTBiZTYyOTA3YjRiNjY4MDFjZmE0ZGJjIHB5M2sKKzU5NDA2IDIyZTNmNWJkMTQwNzg2MzM4YWY0NmU0YjJlMWNiZmE4ZWZjZjliNjggbGVnYWN5LXRydW5rCis1OTQwNyA0ZGU1OTQ3NDBhODhmOTk2YjcwMTA2M2MyNjlhOTdjYTZmOWU2MWIyIGxlZ2FjeS10cnVuaworNTk0MTAgYTcxYTcxY2FiNjA4MjVhYzE3MjZlNTMwY2M5ZWU2MmNhYTU0NDQ1ZiBsZWdhY3ktdHJ1bmsKKzU5NDExIDBiYjEwOGEzYzBjOTdjZThiNGNjZTU5MzdhNWFlOWJlYWZhNzM3YmIgbGVnYWN5LXRydW5rCis1OTQxMyA3N2NiOGZmMzQ5MTJhY2QwN2QzYjE5ZWY1MWE0YzM5MDFjMjhiNjExIGxlZ2FjeS10cnVuaworNTk0MTQgYTk4NzdiN2VlODVkZWM4YzhjZDRlOTdiOWJlNjdmNjdlZmI4MjlkOCBsZWdhY3ktdHJ1bmsKKzU5NDE1IDYyNGY1MTFjZTlmMjQ4ZDM4YWQwOGEwMjczYzlkMjRlMGQ0NGM4MDMgbGVnYWN5LXRydW5rCis1OTQxNiAwMzk0NWExZDRmYjNjZjU5ZjgyMTJmZmQ3YjQ2MTUwMjQ2MjY3ZDM4IGxlZ2FjeS10cnVuaworNTk0MTcgOWE5NzZhNmVlOTM2NjkxZWY5YTQzZWYwYzRhYWY5Mzg1YmE3MTIzZSBsZWdhY3ktdHJ1bmsKKzU5NDE4IDExOGU2ZDY4YjQ0YTEyODhhYjc2ZTg0OTgzMTQzMTE3ZDQxZjQ3MjggbGVnYWN5LXRydW5rCis1OTQxOSBmMmY3MzhhNDM3Zjg3OWM2NDNkZDQ2NDY0ZDViOWE0Yzc4YWNlM2EwIGxlZ2FjeS10cnVuaworNTk0MjAgYWQ4YjgwNDYwNjQ0ZjFmOGZhNjM1NDg1N2MyMzY0M2Y5MDQ2YzkyYSBsZWdhY3ktdHJ1bmsKKzU5NDIxIGFhZDY1YTI0MjRlMzhkOGE3MmE3YzBhMjY1NmRmMDM5ZDEwNDAzODggcHkzaworNTk0MjIgNGVlNzQzMTBlY2Y5ODg3NzRiMzRhYmE1ZGZiODJhNThkMDJiNTBlOSBweTNrCis1OTQyMyAxNzQ0OGU1ZTk2NzFkYTRiOTYxOTYzMDhmNTEzZjYwMjJkODU4ZDAxIHB5M2sKKzU5NDI0IDY5OWZjZGY1YmJkNzRiMDEwODQ0ZmQ0MWExN2NhYTZlYTljZmNiNzMgcHkzaworNTk0MjUgNmI1MTdhYzEwZThlZjhlMjM3YWQxYjZiY2FlYmIxNjNjNDU0ODdiNyBweTNrCis1OTQyNiA5MWNjY2U3NDFkMTE0MWQ5NmQzYTNmMzAzYzI1NDExNjQ1ZGQ3MDliIHB5M2sKKzU5NDI3IDZkNWYwODYwMWY0YTk1YjQyMTVmYzVjOWFmNDdiZjFkZmFjMjE0MmEgbGVnYWN5LXRydW5rCis1OTQyOCA1MGE1MGU3NTIxNDIzYTI3MTUzODM5MzQ2NTMyOTBhNWE4NzBjYWYwIHB5M2sKKzU5NDI5IGE1YzQ3MzkxMjFlMTRmZDNkYTE3NDlhNWIwZGVjNjJlOTRlZmM5OGIgcHkzaworNTk0MzAgNjFkZjVmNTM3OTY5ZTZhYWVjYjQ4MmQzNjU0MjAxYWY5NDZmMjU4OSBweTNrCis1OTQzMSBmNjdlYzRlYjQ3OGE4OTA4YzkwMjMxYWEyMGYwNThlNmU5YzBlZGNjIHB5M2sKKzU5NDMyIDQ0YTI0YjU5YjE2ZDAyMTA2ODJkZGIwMmFhZmJhZGIxYzVlYzU2NGMgcHkzaworNTk0MzMgYmUzYjY2MDFmOTg5YTY4ZTVhMDE5Y2Q4Mzg2NTQ3MGZhZDlkMWJlNCBweTNrCis1OTQzNCAzNjlhNGUwNmZkMzAxMTYyYjg3ZmJmODA4OTMzNTJiZGZjMDRmOGViIHB5M2sKKzU5NDM1IDZjZTZlMmYzZGNiMmQ2ODdmOTVhZDQ1MTYyYzE3ZDMzZDE2NDAzNDIgbGVnYWN5LXRydW5rCis1OTQzNiA1YWM4NzRkMDk1NTYzNmQ1MzljZGNkMTk5NjJhMGZjOGRiMmY4MmQyIGxlZ2FjeS10cnVuaworNTk0MzcgNjZkYmUxMmRkZjMxZDc2YzQ4YTYwM2JkOTBlZjAzNDMxZmVjMjYxNiBsZWdhY3ktdHJ1bmsKKzU5NDM4IDQwYmZkNmYxY2MxNjkwMzMyMmExNmMyYjcwZDJkMDkyMGVmOTUxMTggcHkzaworNTk0NDEgZDc3ZmQxYjhjMGM1NDczMjA5M2YxNDcxMjNhMGM0OGZlM2MyNWEzMiBweTNrCis1OTQ0MiA1YWJmZDA3ZTk3ZDQ4OWYyNWM1ZGUyMDJlZjZmMzRlYzA0NGJiMmJjIGxlZ2FjeS10cnVuaworNTk0NDMgYWFjMzNlZTFhOGZjNzMyNzdkZTAxMmZkZDFiNWI3MzFhYjA3NjhkNCBweTNrCis1OTQ0NCA4ODlhNjQyMWYxMzViNTllYzI0MmQ1NDUwNzJhMGU4ZjliNzEwOGNiIGxlZ2FjeS10cnVuaworNTk0NDUgOWNmMmJmOTQ2MWM0MTBkODU4ZWFjYzFkNmFlYmE5ZWNmNTQyODQzYiBsZWdhY3ktdHJ1bmsKKzU5NDQ2IDMzZmY0MGU2ZTEzNzU4OTU2ZTFmZTQ2ZmEzZWVmYzRkY2MyYzY4YjUgcHkzaworNTk0NDcgNTllNjRmYTNhZDFkOWNhMmU3NzU5OTkzMGJlNzVmM2JiMjkzMWY0MiBsZWdhY3ktdHJ1bmsKKzU5NDQ4IDIwMjhmZWI5NGI1NzU1MjA0OWFlNTg3YzQ3NDU3N2M3ZTFhY2EyMGYgbGVnYWN5LXRydW5rCis1OTQ0OSA0NDRkYTA4Zjc4YTRkYTc5ZjZjNzE3YjE3ZWJhMjA3ZWY2MGQxNWFlIHB5M2sKKzU5NDUwIDYwYTc0MGY1YTU3YTNhMTdlOWRhNjJkNDc2NmRmYmViODAzNGIzNGMgcHkzaworNTk0NTEgYTM4NmVmMjhiMDA4NzI4ODM2YWE5NDM0ZDhlNGRlZmI3OTJkOWY5NSBweTNrCis1OTQ1MiAxMmNmOWZmZjlkMGFlZDM2ZDZhMmM2ZmU3YjQ0NjdmODk4N2FlNWI1IHB5M2sKKzU5NDUzIDZiMzVkZjQwYmNhY2FmZDZkMmQ1Y2FlYmQ5MzY5MGYwNjA2NTI4MWIgcHkzaworNTk0NTQgNzZjZTU5N2M3MmVlMGUxMDU1ZTVjNzkwN2E4Y2Y1ODQyZGU3MTg5YSBweTNrCis1OTQ1NSA0Nzg5NWNhNmYwY2JhOGZiMWE4Zjc1OTAyNzE1ZThhNTAzZTEwN2Y1IGxlZ2FjeS10cnVuaworNTk0NTYgMWIwY2U5ZmZhOTcyNmQ1Mzk0YzQ4YjliNThkOTEzM2IzNWZjMDUzMiBweTNrCis1OTQ1NyA2ODJkOTc4OGEwMzhlNzJmYmFiYjEwMDM0NjczYzFjNmZkMDA0MjMzIHB5M2sKKzU5NDU4IDY2Y2UzMzE0YzE5ODIwYTcxYWI5NGE4NmIyOTBkOThmMjcyN2VjOGQgcHkzaworNTk0NTkgMjQ3NDlhMzgwNDA5MzQwMWRlODAzMTQwN2Y3ODBjZTY2YWIwZGNjZCBsZWdhY3ktdHJ1bmsKKzU5NDYwIGViNjVlMTA1ZTRiOGNkYWRhMjAwYTk1MmJkZmE5NGE0ODI1OGI1N2IgbGVnYWN5LXRydW5rCis1OTQ2MSBhNGFhYjcyYzJjYzBiYzQ5NDMxOWQyMTEwNWU1N2E1ZGU4NDc4ZWYzIHJlbGVhc2UyNS1tYWludAorNTk0NjIgMmM2ZmUyZGNjODhlYTFkODFiYzVjMjE4OTY0MzVkNmY5YzUxMmUzZiBweTNrCis1OTQ2MyBlNjVlOWM2NDljZmRhZmIzOGMzNGE4ODQzYTE5YTgzMjlmMmJjNGFlIGxlZ2FjeS10cnVuaworNTk0NjQgZjkwOTg3MjkxN2I5NWQ5YjNjZGQ5ZmZhZTg1NDUwOTUzY2JiNTc1MiBsZWdhY3ktdHJ1bmsKKzU5NDY1IDdhZTYwNGIzNTMzYjUzNjM1NGRhMzFhM2MzZTM3ZjhiNTA5NjdiN2UgcHkzaworNTk0NjYgYjUyMzljY2Y5NGI1YmE3Mzk4YTdjNzE3YzQ2MTQ4M2JkODBjMDJkMCBweTNrCis1OTQ2NyA3MjdhZjE2MWNhNDY0YWJkMjcxMzA0NGFjZGY1ZjUxMzRhNjgwM2EwIGxlZ2FjeS10cnVuaworNTk0NjggMmUxOWMzZTUxMWJmNTkzOWY2M2Y0NmViNjQzZGUwZTcxMjdiMGQxNiBsZWdhY3ktdHJ1bmsKKzU5NDY5IDNlMDg2N2EwNzc2NTdlNDE0ODc1NTA0NGUxYmQ4MzYyNDhkMTFhMjEgcHkzaworNTk0NzAgZWIyMjYwZGNiMzY1ZmRlNjUxMWY0MWFmYzRkODI0YTRmMjkyODllYiBweTNrCis1OTQ3MSBhNmQxMDU5ZjIyZTJjZDE0MDRiYTBhMDJjZjIyOGQ1MjQ3YjQ0ZDlhIGxlZ2FjeS10cnVuaworNTk0NzIgNGViYmE5YjI2ODhmNDA3MmMxN2Y1OWViNGE5NGQ0MDMwYmI1NThlMyBweTNrCis1OTQ3MyA2NmQ0Nzk2ZWU5MmNiZmM0NjhkZjhkZjc2YzNmMjFjNzNkODllMWY4IHB5M2sKKzU5NDc0IDlhMDlkNDQyYmNlMjdiMmQ3Mzc2ZmQzOWJiMTFiYjBjOGUxZjc5NzQgcHkzaworNTk0NzUgOTkyOTc4MmY1Y2I0OGQwN2I0NDUxMDZjMjM1ZGIyMjYyODFiY2U4MSBsZWdhY3ktdHJ1bmsKKzU5NDc2IDAxNzA3MTRlYjA0NDIxNThjMzEwYTI0ZmRiNDg3ZmRhYTExNzFlMjkgcHkzaworNTk0NzcgZTE3NmI0YWVhOWM1MGY1YTE5ZDJhYzViNDNkNDg2YjZjYzE0ZmU1ZSBweTNrCis1OTQ3OCBjMmU3MmZlYjUzYjM2ZWJjMTUwYTk2ODFiNDE4ZTk1NTcwODkyYjMwIGxlZ2FjeS10cnVuaworNTk0NzkgNTQxMDUyYjA0NGYwOWUzMTA5NmRkZDk3ZTYyOWNiZWI4YjdjNDA1ZiBweTNrCis1OTQ4MCA3YThjOGM1Njg1ZmNjYjE0ZmZjYjZmNmY3Y2E2MGI4OTdkOTM5ZjZhIGxlZ2FjeS10cnVuaworNTk0ODEgNmFlOTRhMmJhNWRmYWZhMDFhMGU0MzlkMTc1OTUxZGE5YWI3ZDY0MCByZWxlYXNlMjUtbWFpbnQKKzU5NDgyIDIyNmEwNjJhYjQzZWY3Nzc5Nzc5NGJhYzg1ZDFlMTg1ZjU2MmJlNWYgbGVnYWN5LXRydW5rCis1OTQ4MyBkOGUwNjU0M2NkZDgwZTM0NWVkZTE2YzZlMmEyN2YwNDllN2Q1YWM1IHJlbGVhc2UyNS1tYWludAorNTk0ODQgNTg5MjYyZDgxZTI5OGZlZWM3MDg2MzJmZGM4Yjc4OWMxNjViNjI3ZiBsZWdhY3ktdHJ1bmsKKzU5NDg1IGYwNGMwMzY1YzlhYWZiYjM5ZThiNjFkYWM2Y2Q2MmVhNTE0MDE4ZGUgbGVnYWN5LXRydW5rCis1OTQ4NiAzMDk2YjAxMjczM2UxOWE0YjliY2EzNzMwNTAxOTgyMDZmMDBmOWE2IGxlZ2FjeS10cnVuaworNTk0ODcgNjZlZDZlMDNlYmJkYTllZmEzMjEyOWFkNzc2MjM5MWQxMmZkZWRmZiBsZWdhY3ktdHJ1bmsKKzU5NDg4IDcxNjIzODc4MDU3YjJlNGZkYmRiYTJhYjRmNTg4MDEwODc4MGM5ODYgcHkzaworNTk0ODkgNDRjNDE4YjJiZjdmNjYwOWVmNzIxMGIwMzMyZGM4MDRmZjBmNTVjNCBsZWdhY3ktdHJ1bmsKKzU5NDkwIDdhNjJjNmQ5MTA3ZGY5ODJkZjFmNzViZGEzNTU1ZWMzMjM0M2RlOTEgbGVnYWN5LXRydW5rCis1OTQ5MSAyOTRiMWE3OWYyMDE5YWJjMDJkNjhiMTk1YjJlOWI2OTBmZjliYjM4IGxlZ2FjeS10cnVuaworNTk0OTIgNjM1YTIzMjgwMTEyNjNkMjk1N2NhYWZlNjNkNGI5YzU2MmQyMjJhZiBsZWdhY3ktdHJ1bmsKKzU5NDkzIGEzMjdmM2UyNjE1NjExYmM1NDgzNjgzYTBlMDliM2E0MTAyZmJkZTYgbGVnYWN5LXRydW5rCis1OTQ5NCAzYzhiNzAyZTVmMjA3MGVlY2YxMDQ3MWY0Y2Y1MDVhNzk3MjE2MzVlIHJlbGVhc2UyNS1tYWludAorNTk0OTkgOTYxZTg5Y2M3OTExYzBhNmMwMzk3MDhjMzE1NTU2NzMxNDAxNGU4MSBweTNrCis1OTUwMCA5MDVhOTY5OTdiN2M4MGViMmRhMzMzN2JhYzk1Yjg3OGRjZDliYzdhIGxlZ2FjeS10cnVuaworNTk1MDEgZGNhOTU5NTY3MzBmYzNmNjE5NzBhNmVmYTNjN2I5ZDA2YjFlYWQ1OCBsZWdhY3ktdHJ1bmsKKzU5NTAyIDdkYTk0NzU3ZWM1YmQzZjc4Zjg2ZmI2OWZjZDFlMThlOGYxOTVjMDggcHkzaworNTk1MDMgMjBlZDFkNDE1NDA5ZWFjMGE5MWNlNzBlNzBkMmI0ODY5MjBjYTU4YiBsZWdhY3ktdHJ1bmsKKzU5NTA0IDFiYjliMDdhMDFkZGExZWI5M2NlNDg0NjI4YzkzZTFmNmFlZDdiZGEgbGVnYWN5LXRydW5rCis1OTUwNSA0NWM3OGU1MGNiZDVlMGU1ZTdkYWRlZTc3ODIyYjRiYmE2NmQzZGNkIGxlZ2FjeS10cnVuaworNTk1MDYgMTlmODk0YWU4NjRhZjFkYTJhM2MyNGUzNGI4N2MxMTI2MjVmOWM3NSBweTNrCis1OTUwNyAxNGM1ZDI3NWRkZjE0MDNhNmUyZGVjNzA2ZTVjNWMzZWU2ZWZlM2Y4IGxlZ2FjeS10cnVuaworNTk1MTAgMTE1NzA2ODQ2MmI1MzhlYzhiYTA2NGIzOTdlMjc3MjQzZmM1ZjBjZiBsZWdhY3ktdHJ1bmsKKzU5NTExIDA2ZDEyMmI0YmZmZDdhZWQ4YmFlNDZlY2U1NzhhNThiNzQ5ZDQwMzcgbGVnYWN5LXRydW5rCis1OTUxMyAyY2U1MGEyNjBmNTNkNDIzYjk2MzFiZTRmMTZjNGIyODYwYjkwYzUyIGxlZ2FjeS10cnVuaworNTk1MTcgZTcwYWNiZjI2Y2RhODgwZTMwYzhmYTIxODhkNmI2NmIwY2JjODkzYyBweTNrCis1OTUxOCAzMDM3MjdjNThiNTFlMDE0YTYzNjlkZjcxNWViMDEyNjNlNGMyNDE4IHB5M2sKKzU5NTE5IDA0M2NhOWI2NmY3OTcyMjAwOTM1OWRjNzljZTljMjVlNDY4OWY0MTEgbGVnYWN5LXRydW5rCis1OTUyMCA2MThjZTI4MWE1NWY4NDUyMWY2YjJhNGQ5NWQ5ZTllOWMzZjJiODY0IGxlZ2FjeS10cnVuaworNTk1MjEgNGMwZWI1ODc0ODJmNjBjYTIxMWRjZDgyYzZlMjQwOTA0NGJkYzI4NyByZWxlYXNlMjUtbWFpbnQKKzU5NTIyIGFhZDkwZWJiZmI1MDRiZDU4MzYzZTc2Yjg3Yjk1Njg4OGFlYjE5MGQgbGVnYWN5LXRydW5rCis1OTUyMyBhNjQ5YWE1MmIwNzk5MDUwMDEzYWIyMDQxZmM2YjM0MGQ5OTZjOTljIHB5M2sKKzU5NTI0IGVlMTE3NDYyMTJiMmJkMjVlNWZiODg1YjE2ZjYwNmQ3YjFhZDAwZGQgbGVnYWN5LXRydW5rCis1OTUyNSA1YTUwYTViNTcwYjAyZTZmMzYyYmI2ZTIzOWQwNjRmZDdmMDgxZDQzIGxlZ2FjeS10cnVuaworNTk1MjcgOWI0MGFkMDU3ZDU5ZTIwN2NhZjUxN2IyMDI5YzEwMDg3Mjk1Y2RmYyBsZWdhY3ktdHJ1bmsKKzU5NTI4IDIxMWFiY2ZiNDkyOGIyYzE3MWQ1ZTI4YmM5MDE5NWVhMjYyNzMxMTMgbGVnYWN5LXRydW5rCis1OTUyOSBhNDYzNzQyZmE0MTFiODk4YjIyZThkOWQ0YzcwMDgzOThjOTRlYWI4IGxlZ2FjeS10cnVuaworNTk1MzAgNzc5MWE1ZWExNWMzODRlZTJlNTM3MWY2NjJhZjI1NDA2ZjM5ZTIyZiBsZWdhY3ktdHJ1bmsKKzU5NTMyIGU5N2YxMDVkMWM4MzQwZmNhYmFmYjJiMTFhZWNlZDM1ZjVkYWYyNDggbGVnYWN5LXRydW5rCis1OTUzMyBhMTQ0ODlmNmRiNmY5MmI4NzYzZjc5MDE2N2I3YzBjMzgyMTdhYzRhIGxlZ2FjeS10cnVuaworNTk1MzYgYTJkMGM2YTg4OTA5ODAxMDk1NjQxMmExNjI2ZDViNjhjMWQxNzUxYiBsZWdhY3ktdHJ1bmsKKzU5NTM3IDBhNTQ0NTI4ZGM5ZjVkNzc3NjVmNmNjMTM0MDY3YzAyNzg5ZjBkZTggbGVnYWN5LXRydW5rCis1OTUzOSAwNWM1MDFhOTUzMDg3NTExZjE1YmFhMGUxZDljZWY3YzhjZWMxNDUyIGxlZ2FjeS10cnVuaworNTk1NDAgMDlmNzQzMTZkNWZiNTU4MGE5ZjZiNzgwYTVjZDI3Y2NlMWQwODA2MyBsZWdhY3ktdHJ1bmsKKzU5NTQzIDc1YzZiZmQzYjFmMzJlYzIxN2NhNzMxZTVjNTU0ZjlmZjMxMGZhYmEgcHkzaworNTk1NDQgNGE2YzA2YTc3ZGViMTZhMDc4YzQzNjJlZmM0ZWQ2Nzk5NGIyZWJmOSBsZWdhY3ktdHJ1bmsKKzU5NTQ1IGMwZjJjZjQzODljNTAyODg4MDFiN2Q4YzE1ZjJjZWI0ZjIzNjIwNWIgbGVnYWN5LXRydW5rCis1OTU0NiAxMWI2ZjViNjhhZDFhNzI5ZTA3YzlhMDgzOWRiNzc5ZjY2ZGRkMDM0IGxlZ2FjeS10cnVuaworNTk1NDcgNTZmMzQyYzg0ZTg3MDc1ZmY2Yzk2YTY3NzU2YTllZjg3YzMyMWQ2OSBsZWdhY3ktdHJ1bmsKKzU5NTQ4IDA3YWExOTE3MGE2NzNkYTZiM2U4YzRjNjZiZmQ4NjhiMmY5MGMwZTQgbGVnYWN5LXRydW5rCis1OTU0OSBiNWIzMDgwYjM2MGZkZWFlNDNhZWE4MDdkYzkwYTYzYzViMjdkMjU0IGxlZ2FjeS10cnVuaworNTk1NTAgZWFiMDAyYjhlMTdlOGUyZTg0ODc2OTFkN2JmODA5MTQwNzM2ZTBiZCByZWxlYXNlMjUtbWFpbnQKKzU5NTUxIGI1OWMzMjhiZmE2MjNlMGY5NjY0YTk2MjdiOTUwNjVhOTJhZjMxNzMgbGVnYWN5LXRydW5rCis1OTU1MiBhOTkxMjhmNmM5N2RmMzkzMGZjMzg5OTZiMDdhMjk3MDlkMGQzYTViIHJlbGVhc2UyNS1tYWludAorNTk1NTMgN2FjMTE3YjNiZTM3ZWI3YWUzMjk3MDc4N2U2MzFiMjJhYmEwNDk5NCBsZWdhY3ktdHJ1bmsKKzU5NTU0IDE1ZmJlN2M3OTI4NDk3MzkxNzcxMTYzMTUwZmQwZTg5ZGI2MzE5NmIgbGVnYWN5LXRydW5rCis1OTU1NSA5NTg1ODEwOTgxNTFhYjc2MWI2MWZmYzk5MTdlNjI2MTA5NTA4MjgzIHJlbGVhc2UyNS1tYWludAorNTk1NTYgZGM4ODRiNjA1MGQ0NWZiNTMwNmI1MTdhNGMzOTE1M2QwODA5ODA3MCByZWxlYXNlMjUtbWFpbnQKKzU5NTU3IGY4ZDBmYWZmY2U4ODc2ZjU1NGJmNmUxODVjZDI5ZTcwM2JkYTYxZmQgbGVnYWN5LXRydW5rCis1OTU1OCAxZDY5YWFiZjZmN2YyMjc0NmI0YzcyMDNhZjVjOWIwMTlkMjJlMzJlIGxlZ2FjeS10cnVuaworNTk1NTkgZDUxYjM5YzIxNjBhM2I4NTVmNGYyNjVjNDIwYzQ2NDBkN2Y1NzRkYSBsZWdhY3ktdHJ1bmsKKzU5NTYwIGEyOGFjOWI2N2JlZGI1NmFhMWUyNDczODE4Y2ZjMTI5OGZlMWUxZDggbGVnYWN5LXRydW5rCis1OTU2MSA2MTZmZWMwZWI1MTRiNjUxMDYwYzQwOWEzOTI4ZDRhOWIwNWY5NmIyIGxlZ2FjeS10cnVuaworNTk1NjIgZTJlZmZlYzlkNWFkN2NmMDk2ZmRjNDBjNmJkMzVhYTVjYjFlZmUzZiBsZWdhY3ktdHJ1bmsKKzU5NTYzIDRkYzAxNDAyZDc4YWZlMmM5YjRhNGJkODAwNGViMDhlMjY0NzMzNWQgcHkzaworNTk1NjQgMjYzODRiODE4MGM3YTU1Y2Q2YTJlZDQ0MTA3Y2Y0ZTMzOTAyNWVjNiBsZWdhY3ktdHJ1bmsKKzU5NTY1IDg2YTI2NzlkY2E0NjRhMjg0ZmQwMmI4MTY0NmYyNjkyMDQ5YTJjZTggcHkzaworNTk1NjggZjdiYzc5MTEyYmNmYTg5YmJlYWIwMzVkOGJjZWE0M2U4MmZlODlkOSBsZWdhY3ktdHJ1bmsKKzU5NTcyIDYzMTRiOWY4YTdlMDNmMGM1N2U5OTU0MzhhNDlkODkxY2ZhZDBkMzIgcmVsZWFzZTI1LW1haW50Cis1OTU3MyBiMTM0N2M2OGQ0NTY4NWFlMmM4M2Y1MmMyMDkyODk0NjY4MWVmMzk0IGxlZ2FjeS10cnVuaworNTk1NzQgYjg5YjAzMzQzNzJiYTgzYWJmNGQyZmMyNDRhYzE2YmUzZGY5NzI4MCBsZWdhY3ktdHJ1bmsKKzU5NTc1IDUxYzE3NWM4NmYzNmJiM2JlZDEzM2ExYjBhMTQ4ZjNlMjgxOWU1Y2UgbGVnYWN5LXRydW5rCis1OTU3NiAxNzRlMGJjYjJjM2MxMzJhMjZjOWYwNGQzY2Q2MGZkOWY3ZGYxY2ZhIGxlZ2FjeS10cnVuaworNTk1NzcgMGFkMTJjNzlhZjE4NWRmODM4ZjIxNmY3NzZlNzQ0M2UxYzIzOTE3MiBsZWdhY3ktdHJ1bmsKKzU5NTc4IGJiNzE2ZWJjYjA4MmExZTc5NDQyZTYyNTgxM2ZhMTYzYmM0NjhkMWEgbGVnYWN5LXRydW5rCis1OTU3OSA4ZDRkMzM1MzY5OTUwYzEyMDJiMzNmZTlhNThkNTZkZTE1ZGNhNjIyIHB5M2sKKzU5NTgwIGJhZDU1YTU4NTk1OWIxMWY5MzQxYzk2ZjYxNGVhYjFhNzU1NDVlYzIgcHkzaworNTk1ODEgNTVkYWRjOGI2OGZjMTk0MmZjZTM2YmQ3M2U0ODUyZmI2ZDg5Y2EwOCBweTNrCis1OTU4MiAyMTBjNTA3ZGFjOTk2MTg0ODIxNzgxY2IxM2FiOGZlZWI5YzkzMmYzIGxlZ2FjeS10cnVuaworNTk1ODMgNmVhMGUxNWNlNTczNmRmNzZkYTUxYjI1YWVjZDQzZmZmN2MzMWQ2NCBweTNrCis1OTU4NCA4ZGVhZDZmODFiYWUwMWJlNGNkMzRiYzliNWM5NGM1YmQzYzhmMDRiIGxlZ2FjeS10cnVuaworNTk1ODUgODNjZWQ0MTc3ZWFjYzQ5M2ViNWQ1NmU0ZTBkMGMyNDcxZGQ4MDQwYyBweTNrCis1OTU4NiBlYWVmYjkzYjVlZDQ0Mzg0MDZmYzdmODBhMTBhYzAzNTJjYmY1YWVmIGxlZ2FjeS10cnVuaworNTk1ODcgMzJkZDliNzc3M2MzYzIxZDFmNTE2ZWFlYThmZjk4MmRjNjA0MWI2MiBweTNrCis1OTU4OCA0NDU0MTA3NDRmZDYzNzM1OTcxM2QwZDIzMTc2ZDhhYjQ5NWJiYjM2IHB5M2sKKzU5NTg5IGJjZTcwYTQ3N2YxZGEzZGEzNDkzYmViNGNkY2Q1ZmM3ZTM5Y2UwZmYgcHkzaworNTk1OTAgMmIwM2NhY2MxYjZhNGUxYWI1ODEyOWJlYmYwYzQ1NTJjOTE4YmEyNCBweTNrCis1OTU5MSA5NTdiYWEzN2NlMGQ0ZjRiMTVmMjdiZDBiNDMwNDFmZmVlNWYwOGQ2IGxlZ2FjeS10cnVuaworNTk1OTMgYzhkMzEyNzlmY2RjYjZhNzEyYTlhMzU2MDZmNmYyYzViZjMxYzVmMSBhbGV4LXB5M2sKKzU5NTk1IDI3NTBkNTMxZmRjMDIzZGJkYjQwMmRiNjJmYjE5Y2M4M2Y0ZGE3MzMgcHkzaworNTk1OTYgODYzNjkyZGM0MTFlZjAxZjBjNjQyMDJiNWIxNWE0MDM4YWQ2YzgzOCBsZWdhY3ktdHJ1bmsKKzU5NTk3IDVmNTkxMjNlNzgxZmY2NGM1ODFhM2ZlZWFlZGNhYThjZWM4NzdjOTYgcmVsZWFzZTI1LW1haW50Cis1OTU5OCAxZGI2MjQzZTkzZjI5YmQyYzAxNTk4OWVjZDlmZjEyYTMzNTgwODRjIGxlZ2FjeS10cnVuaworNTk1OTkgZGI2NzUyMTFjMmY3NTMxMTYyZmQ3ODVjZTJmOWMwOWY4NjVkMTlhZiBsZWdhY3ktdHJ1bmsKKzU5NjAwIGI5YmUxMTdiMjgyYzM3YmIzNWNhOTIwMjI1Yjk1Y2E4M2E2OTQ1ODEgbGVnYWN5LXRydW5rCis1OTYwMiBlZGI2YWE2Mjc1M2JjNzkwN2ZlZjNjZTRmMzM2NjEyOTU5OTEzYmUyIHB5M2sKKzU5NjAzIDA4NDY4YTI2M2E5NTgxOGY5YjBiZjdhOTY2ZmYzMmRiMDVmYzY3ZTMgcHkzaworNTk2MDQgZWI2OTVjNTkxZTcwNGJhNDk3MzFiYTk3MTY3YjU2ZGVkNmYzNmNlYiBsZWdhY3ktdHJ1bmsKKzU5NjA1IDcxYmI3MGY2MDk3YjgyMDA0Y2QxNjg3ZDBkNWQ0NTVhNzY1MjMzODcgcHkzaworNTk2MDYgMzYyNTIzNGJmM2QyZWQzNjgwMWNhMGM2NGVkNDg1NGYwNTM0MjRhZSBsZWdhY3ktdHJ1bmsKKzU5NjA3IGRhMmIxMDViMGM1MjNmNGZhMzkyYWFjYmMzODNlMTAzYTkwYTY1ZWIgcHkzaworNTk2MDkgNTY3MDEwNGFjZDM5NTQ5NTFjYWUyZjMyYTk5ZDE5OTg5MjZhNDFhMiBweTNrCis1OTYxMCA3ZDJkYTFjZDgwYTExYmI2ZjU0OGM2NGYyNmFmNmU0NTBkMDMwNDNhIHJlbGVhc2UyNS1tYWludAorNTk2MTEgZjI5MjI3MzVmYjdhYjI5ZTMwMmI0OTkzYTljNjliODhhNTI0MjQwNiBsZWdhY3ktdHJ1bmsKKzU5NjEyIGFlMGYyZWEwNDA5ZjQ0MDBkZDA1MzExMDM4YTIwOTg0YTdjOTRiNzggbGVnYWN5LXRydW5rCis1OTYxMyAxZmNmMWU2ZDhiYjFkZWQ5NWFiZjU3Y2NmMzllMGJiODVkOWVhYmI3IGxlZ2FjeS10cnVuaworNTk2MTQgODYzNThiNDNjOGJiMjVjMWI5MmExZmExZGY4NWZiOTYzOTIyYzhiNyBweTNrCis1OTYyMCA5NWNmM2Q1M2NhZTAwMWJlNmJjZDg0MzM2NTI0M2U1MGU0MGRmOGY2IGxlZ2FjeS10cnVuaworNTk2MjEgODNhMTM4ZmRmZGZhOTgxOGE1NGJiZTIyMjg1Njk2ZjAzMTZmZWZjNyBsZWdhY3ktdHJ1bmsKKzU5NjIyIDc0MmQ2NTk2MWIxZmE2Y2M0YjM5OTJhNzFkZDM5NTZkZjdmZmQ5YzAgbGVnYWN5LXRydW5rCis1OTYyMyAzNzE1ZjAzNzRmNmFlN2RjMTg5ZTJhMWE1OTNiMGUzNDkzYTg4Y2E4IGxlZ2FjeS10cnVuaworNTk2MjQgYTYzMTlhYjQ5ZTBhM2ZiZTQyOGY3YWVkM2NmYTc5YWQyZDk0NGVjYiBsZWdhY3ktdHJ1bmsKKzU5NjI1IDY1NTZmM2YyMmMxOWYxYmJlZTM5NWI1NTA5MTBiZDg0ODM3ZmMwMWEgcHkzaworNTk2MjYgZjA1YWMxNDUxMWZmNjJmMTU5MDUyYTcxMDc5ZDZiZTY3MGYyZTJmMSBweTNrCis1OTYyNyAxZWI0OTgyMzdiYTViNThkMWFiYmExMzA3MGYyMjQ2NjRmOTczMWZhIGxlZ2FjeS10cnVuaworNTk2MjggNDQ2ZThiNjA3YmQzYTAwZjNjZjk2YWMzMTc3MmJhMmE5MTViZDg4NyBweTNrCis1OTYyOSA0MWJmYmZjMzZjZjcyNjNhMTM5MzAxMzM0Njc3NzAxNzQwMTJmMGFhIHB5M2sKKzU5NjMwIDgxYjNhYzU5MDg5YzE4YTQxYmQ5MDVkN2FiMWU0Njg4MWZhOGJjYWYgcHkzaworNTk2MzEgYWNiNmE0YjJjMDdmMzFlYjZlMDA4ODI1OWU5NzkyODk5YTYzODc4OSBsZWdhY3ktdHJ1bmsKKzU5NjMyIDQyNTE4NTNmYTliOTM0OGIyYmVmOTcyZWViYmNmNDZiYzQxOWEzNWIgbGVnYWN5LXRydW5rCis1OTYzMyAzZWU1ZGUxNzZlNzg1MmVkNmJlODc0MmIwNjE1NGZiYTk1MGE3Mjg5IGxlZ2FjeS10cnVuaworNTk2MzQgN2E4NmIyMGM1YjRiMWQzYzQzMzE1MTdhMTg5NTllOGUwODE1MDVlYiBsZWdhY3ktdHJ1bmsKKzU5NjM1IGViMTIwNzUxM2VlN2RlZTlhNTdjNTdlNWYwMWVjMWJiZDEyNjk0MjcgbGVnYWN5LXRydW5rCis1OTYzNiBkZGEyOWU3MTI4MTUwNmYxZDIyMThhNmVlZjI0NzdjZTJiMDRmMWEwIHB5M2sKKzU5NjM3IDQ2ZDU0MDExZTFlNTYzYzRjMzg3OGVjODNjMWNkMWJlMDc5N2UyNTUgbGVnYWN5LXRydW5rCis1OTYzOCBlMzY2YzQ0OTQ4YTMxNDFjOGNiMzU2ZjQ0Y2U4NTdkMGJlOWJlNjgwIGxlZ2FjeS10cnVuaworNTk2MzkgNjA3ZTY4Y2IwOTQ4ZDcwN2FiYzhmOTM2YTdiN2I3NDAzZWM2ZjIyNiBsZWdhY3ktdHJ1bmsKKzU5NjQwIDkzODBkNWRhNzcxNjhlMGU5N2FmMjYyMGM3MjI4NDdmOTFkOWI5MjAgbGVnYWN5LXRydW5rCis1OTY0MSA5MDFmNzBkYjNiMzQwNDAwOGU4MjQwOGFkMDA1MzkyMjVkYWM1Yjg3IGxlZ2FjeS10cnVuaworNTk2NDIgZWVlMWI3NmE5NGUwMTE4YTA2YmNjZTY2ZTBiMzMzNzIzYzAzNGRlYiBweTNrCis1OTY0NiA2NTJmN2FiNTkxOGIyZjdkOWNhZGFmMGY0YzJjZTQ0ZGZiMTM3ZGQ5IHB5M2sKKzU5NjQ3IDNmZjc3OGEzNTQxMDQ4YmZlODgwOTAxNjgxNzMyNzdkMDdkMWNmYzIgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY0OCA5YjJlMjU1MWFmYmUzNzg0M2FkOWQ3ZTYxNzVhMmY0YjZkZjA4M2M1IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NDkgOTRhMjkzNzM0OTNiZDEwMDRmY2VmZjUwYzQwYWU5N2IxMGFmNWZlMiBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUwIGY2N2IyZTgzYjM0NzVkZGRmOWFiZWEyYjE0NmE4NmQ1OGViZjk1ZjQgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MSBkYjBjOGI0MWRkYjBkNWU0YzI5ZDk3YjAwZjhlNjRlMGQ5MWNjNDA5IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NTIgYjk4OGU0ZDM1ZWYzY2QwZDY1Y2FhZGRlNWYwNGVjMmUzZjUzZDliZCBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUzIGExZmYyZmFlZGM2YmU4ZmJlZDY2Y2E3OTc4YWU2NWQxZDRhNmJiOTkgbGVnYWN5LXRydW5rCis1OTY1NCBkOWE0YTVmMDEyMWUxOGIxZGU4ZTNmYzY0NDEwMTgzOTI0YWJiMTI3IGxlZ2FjeS10cnVuaworNTk2NTUgNmMwYzUzYjlmMzdiNGY5OTQ3MWU2MjljYzQ5MzZiNzkyMWU3OTRhMyBsZWdhY3ktdHJ1bmsKKzU5NjU2IDFhNTQ4YTY1NGMxYTNlNjllMGU1MDU1NDQxNjBhZjcxZGU3NThmMjUgbGVnYWN5LXRydW5rCis1OTY1NyA5YWIzMWZhMzZmYjUyZmMxMzJjNTdiOWY0NjMwNzBhYjQyMzkxNjAyIGxlZ2FjeS10cnVuaworNTk2NTggZjY0NWUwN2Q4NzBhZjU5NmFmMWNlMGVmNzFjYmNiNzcwYWQwOTQyOCBsZWdhY3ktdHJ1bmsKKzU5NjU5IGYwZTljM2QxNjc2NmQyNDZhZjg1MDAwMGNmY2Y1NGQ1YjA1ZThiMGMgcHkzaworNTk2NjAgZGEzMDg3N2Y5Nzc5OTk0MjBkZDhmMzhjZTM0MTEyZmRjNzg5MTkzZCBweTNrCis1OTY2MSAwOTlhMTdlMmQyYmQ0OWYzNGJhZmFmMTY0MDZjZGI5YjlhY2Q4ZDM1IGxlZ2FjeS10cnVuaworNTk2NjIgNjZiZWE5MTMyNGNkOTMzNzBmZDBjNjRhZGM1MWU5NDJkNWI4YTk1YyBsZWdhY3ktdHJ1bmsKKzU5NjYzIDFlNmYyN2I2OTczY2M1YTA2NzJlM2JlOWNkOGM1OTVkOGIxNDg0NzYgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY2NCA4OTlmZWFkOWVhZTIxYjZhMGY5OThlZjA0M2JkYTM4ZmUwMjlhYzFmIHB5M2sKKzU5NjY1IGU5MDdmODE0ZDlhMzA3MTljOGI3YjZjN2MwYWMxZGJiNmI1NWViZGMgbGVnYWN5LXRydW5rCis1OTY2NiA2NmRhMzc3YmE4MTA3ODkzMzJjMGFkZDJiMGM0MjZhYWFhYTdlYzMwIGxlZ2FjeS10cnVuaworNTk2NjcgNmU5M2QyZDZlYjI4MDFkYmJkMWY0OTBiZTdiYjljMjcxZmU1MzJmMiBweTNrCis1OTY2OCBlOWY0ODBiNGMxMzNjZjZlOWNlNWRiOGI4ODdhMmIzZmM4OGVhZDJmIHJlbGVhc2UyNS1tYWludAorNTk2NjkgNWNkMjhmMDEwZmM3MWJhMGFjOTcwMjNjMjYyZDkyOTc2Njk5NzAzYiBsZWdhY3ktdHJ1bmsKKzU5NjcwIDRhZTMwMDdlYjBmNDcxNjA0ZTVlM2NjNGQ2MTY3Mzc2NjFhNGQ0Y2YgcHkzaworNTk2NzEgNGY5NzIzZDljYTMyMGFmNjdlOWY2MGEyYzE5N2RhMmU2ZmRmZDMwZSBsZWdhY3ktdHJ1bmsKKzU5NjcyIDgzODZlZWRhMjFjOGUzNThmOWE0ZTRhYjAzZWRlYmFhNmIxZDE5OTAgbGVnYWN5LXRydW5rCis1OTY3MyBhM2YxODY3OTBmZjZlMDlhYTQwMmM4YzRlYjE4YTE5YWU5NGU3ZmY3IHJlbGVhc2UyNS1tYWludAorNTk2NzQgMThhMWJjNDlhNjk2ZTA1ZGQ0ZTYzNWI5NTY5NTEyNTM2MjYzNTE1MCByZWxlYXNlMjUtbWFpbnQKKzU5Njc1IDRjMDU2YzBhMGI5ZjU2Njk5YTc5NjM1MzY3MTM3YzU4NTZlOTJlY2UgbGVnYWN5LXRydW5rCis1OTY3NiA5NjhiZGE4MWU2YzgwYmE1ZmZmZjE1ZGFjNzc4OGFiYjg2YjdiMTlmIGxlZ2FjeS10cnVuaworNTk2NzcgMjdlNGU1MzBjZjJmNmYwNjk1N2E1ZTUyOWNjZWY1YzZjN2M2NzY2MiBsZWdhY3ktdHJ1bmsKKzU5Njc4IDBjYmU5NGJlYTJjN2VmNjEwZGVhN2IwNWQxYmFiOWYwNGFmOWFmNDQgbGVnYWN5LXRydW5rCis1OTY3OSA2MjA4YjE3ZDBkYmVkZjBkZTgyZDkwZDBkOWQwNDU4NDE3ZDBkZDkxIGxlZ2FjeS10cnVuaworNTk2ODAgYjkxY2E4N2U2ZjMyNzIxNDdmOTRhYjY1Y2VhNzY4YjI0OTQyMDMwNyBweTNrCis1OTY4MSBmYTJmNzE4M2IxYWZjNTUzYzE3YjdlNmFlNWQzMzgyNWE4YTAxZmM0IHB5M2sKKzU5NjgyIGM3MzIxMGVhNjFjODY1MTZlZWYwMjJhYmE4OGM3OGQxYTBmYjI5NzYgcHkzaworNTk2ODUgMDM2YjAwZGM5NzY3Zjc1ZTIzMDA1ZjQzYTU3OGVkMjU0OTQ2MDkxYyByZWxlYXNlMjUtbWFpbnQKKzU5Njg2IDUzYWMzZmM2OWI3OGIxZmRlMDgyNWZmMzZiOGM0Njg0YjcxYjRkZDcgbGVnYWN5LXRydW5rCis1OTY4NyA4ZDY5ZWRkM2QyOTAyODdlOWZkZTViN2U5YjlhNTFhNDA2ZWYxZTFmIGxlZ2FjeS10cnVuaworNTk2ODggMTczNTljOWE0YTdkMjdhMThhMjM2Y2E2NDUzZjQzOWRkYjMzOWI2MyBsZWdhY3ktdHJ1bmsKKzU5Njg5IDVlMDE3MGQzYzRkYTU0NGM5YTE3ZjFhNmRkM2JhNmNmMjc1MTNkNTEgbGVnYWN5LXRydW5rCis1OTY5MCA5NDYyOWM5NTk2NWExMTg0ZjMzYzA4MmM4MWUxZTFhM2U0NWUzODM2IHB5M2sKKzU5NjkxIGNmMjY2N2UyYmEyZjVlMmU0MTc3Y2NhMDFiNWVjYjVkOWUzMDE1ZDggbGVnYWN5LXRydW5rCis1OTY5MiA1MTcxYjVhZTY4OGEyMTdiOWVjOGNjYjdhM2QwNWU2ODhkYTIxZDU3IGxlZ2FjeS10cnVuaworNTk2OTMgZDFhMzZkZGJhYTQ5MmU5MjY3OTljNTQ3Y2JiOTU5ODBlODI1YzIzYiBweTNrCis1OTY5NCBjYmE5ZmY3NjA0MzA0OGVjMmRjN2IzMjA0YzBmNWUxNDRiMzFhYzUzIGxlZ2FjeS10cnVuaworNTk2OTUgMjk4NmJiNDMyMjIyMTcyMWFiZTRiYTQ4NjlmZmUwZTcwYWQ4NzA2YiBsZWdhY3ktdHJ1bmsKKzU5Njk2IGRlMDBhZjAzYmI0ZDU2OTU1NGFkZjlkY2JkMzMzMGNiNThiMDk3ZWIgbGVnYWN5LXRydW5rCis1OTY5OCBkY2RkMWJhMDk2NDEwZTk3YzEwOTQ1ODI3MzFiYmZjNzJhZjQyZWFlIGxlZ2FjeS10cnVuaworNTk2OTkgNzQyY2FmNTM1NTU3NmZlNmVkZjM2MzkxZTQ0NjczNDhmMDFiZGQ5ZSBsZWdhY3ktdHJ1bmsKKzU5NzAwIGFkMmJjYmU4M2ZkYzJmZDE0Yjc1OWQxNWNlYWNkYzdmZDZiZWU2MTEgbGVnYWN5LXRydW5rCis1OTcwMSA3NjQzYTQzZjI1YTFlNjk3ZjE2YjIzZjJhY2Y4ZjBjNmRiZmExNzcyIGxlZ2FjeS10cnVuaworNTk3MDIgMTNhYWJjMjNjZjJlMmMwZTIyNTljOWI1MDY2ODk0NTgxODg5NzQzOCBweTNrCis1OTcwMyA2MWMxNjRmMjU0MzU2NDJjMzNhYTY2NjJmOWY2OTNlZDQxNWI5NGM3IHB5M2sKKzU5NzA0IDc2YTg5ZGQ0YTUxMjM3Mjc3YmU1NTU4MTQ0MDUyNTNlMzUwMmU1NTMgbGVnYWN5LXRydW5rCis1OTcwNSBkMmMxYmEwOTkyOTA4M2M4MjU2NjRlMGJkOGEwZDRhMTY5ZjlkOTliIHB5M2sKKzU5NzA2IDM5OGI2MjQ2NzU5ZmMyZDJlM2NiNGQwM2FmNWUxOGExOWVhMjk1ODMgbGVnYWN5LXRydW5rCis1OTcwNyA3N2MzN2UzMmZlMzViNWMwNzI1NDNlZWM5ODAxMzgwZjZhMjY0MmFmIGxlZ2FjeS10cnVuaworNTk3MDggMTI3Y2MyZmVhOWZiOWQxNWVjMDY2NmRmYmNhMTczMjRlZDMxMTcxZSBweTNrCis1OTcwOSBkY2UyNTk0ODkxOGQwZDk4YTAzMzBkZDAxODJiOTU3MjdmNDYyYmY0IGxlZ2FjeS10cnVuaworNTk3MTAgODE2NjlmYmM4NDVmMTI0OTdjNjRmNjc5NTJhNDNhN2IzYmJkM2ZmZCByZWxlYXNlMjUtbWFpbnQKKzU5NzExIDVkN2QyYWY1OWFmZTFjYWI1MjFhNjZkZTdhZGYxMTJiZjlkNzQxZjEgcHkzaworNTk3MTIgYmQwMjU4ZGYzMzBlYzVkYWU5YjE2ZDJkZmNiODJlZjhmMTcyMDVhNCBsZWdhY3ktdHJ1bmsKKzU5NzEzIDI5MmM1ZTUxYTBlNTk2MThlZjhhOGI0OGUwMDM4Yjc5MjFjNDYwMTEgcmVsZWFzZTI1LW1haW50Cis1OTcxNCA5MDE5MDg2ZmQyMGE0ZGI3NTJmMjdiYTY3YTMzZjhmOTAyZjlkMjVmIGxlZ2FjeS10cnVuaworNTk3MTUgZDA3N2IwYzg5M2JjNjU2MTlhYjczMDQyNjY2NmU1NzdlODhhMjg1MiByZWxlYXNlMjUtbWFpbnQKKzU5NzE2IGJmZWQ3MDI3N2FiM2I2ODY1Mzc5ZjdhMzg1ODkzNTdiNWVmNmY0YzMgbGVnYWN5LXRydW5rCis1OTcxNyA2MTM0MTc3NWJjNDIxNzIzMTVlMThlYjE0NGY3YTc0NTE3ZGU2ZWNlIGxlZ2FjeS10cnVuaworNTk3MTkgODNjYTczNWEzOTk1YTcyMTU1ZjZhMGZlZmM2MDYyYjJhYmJiMTQ5ZiBsZWdhY3ktdHJ1bmsKKzU5NzIwIDY0NmNmZjA5NjAzOWJhZmE1ZTljZjAwYmI3ZTBiZmM4MzU4MmU5MmMgcHkzaworNTk3MjEgNzNiYzAwMjI1MmJmZDU4M2JmNmZlNWMyZGQyZTFkMjRlMjAzMmE3YyBsZWdhY3ktdHJ1bmsKKzU5NzIyIDM0YzkxZGY2MDUzMjk5OTA2NDE4YzljNWM5YTNlM2ZhZDk0MTI2ZTMgbGVnYWN5LXRydW5rCis1OTcyMyA1N2M3ZDQyZjZjZGViMThhN2FlMjM5NmRkMmI3NTZkZDVkOTAwNWRiIGxlZ2FjeS10cnVuaworNTk3MjQgMjAzN2Y0Y2FiYjA3Y2NkYTYzZGUzZjIxZTgxYzYzNTFkNTZmYmE4YiByZWxlYXNlMjUtbWFpbnQKKzU5NzI1IDNmY2FmNmNjMzA2ZDFlNGU2YWE5ZmNmMjBmYWU3NjBmMTdlY2E0ZTMgbGVnYWN5LXRydW5rCis1OTcyNiAyZTJmYTI5MTkxNGM1M2NkNGQ0ZGJhNmJlMjE4NmEwMmM5ZWY5MWNmIGxlZ2FjeS10cnVuaworNTk3MjcgZGNjN2M4NjVjNzdiMTAxN2RhOTIwMzhmMTNhMjI0ZWYwZGY3NzU0ZSBsZWdhY3ktdHJ1bmsKKzU5NzI4IDdiYjkxYjNiYTBlY2MyODUzNTAyZjBlMmU4NDA0YmMxNWM4Yzg5ZTIgbGVnYWN5LXRydW5rCis1OTcyOSA1YTBjYmUzNmE2MDM3Nzk1ZTNhMGQ1ZjFmMmJkMGFhOWRmZWZjODRjIHB5M2sKKzU5NzMwIDMzYTBhZTcwNjcwZjQzNjkyMzRkODg5ODU1MzBlNjkwMGQyNGVlYjYgbGVnYWN5LXRydW5rCis1OTczMSA5NGVlYWVlYjNjZTkzZGY4ZDJiM2E3MTFlNzYwNzY1ZDI2ZjNkMDg4IGxlZ2FjeS10cnVuaworNTk3MzYgZTQ4YjQ2OWQxZDg2NmI3N2U1YjY3YmIyMDBhYzRkZjIzZDNiZWE2YSBsZWdhY3ktdHJ1bmsKKzU5NzM3IDc3NzQyOWEyMzAyNjY3ZjFkNTYzM2NkODQ0MmU4ZDJkOWYzYzg0YWUgcHkzaworNTk3MzggYzBjMjM2OWY5NDI2N2VhMTUwY2UyZTJlMmZlYzYzN2U3NGYxOGQ4YSBsZWdhY3ktdHJ1bmsKKzU5NzM5IDljYWY4YTdiMTFhNmI4OWMxNzkzYmM2ZjRkNGMwOGNiODVjOWQ0ZDQgbGVnYWN5LXRydW5rCis1OTc0MCBiYmM5ZThjMDhjZDVlZWUzN2MwMzVlOTExZTEwNGMxNjdjNDA1NmFjIHB5M2sKKzU5NzQxIGZjODE4NmI1MDE0NWI5ZDJiN2YyZDAxNGQ1ZTlkOTg1ZTA4NmM0NTUgcHkzaworNTk3NDIgMGMwYWViYzY2NTZmOTRkMjUzMzQ0Y2U0YTEyYTAzM2YzODk3NmIzNyBsZWdhY3ktdHJ1bmsKKzU5NzQzIDNjNmY3NTQzYmRkNmI0YWFkOTc4ODkwNjNjZjRjYjdkOTU2MThiNTEgbGVnYWN5LXRydW5rCis1OTc0NCAwMWQ1YjhlN2QxMjEyMDVlYzdiMjFhOGFmMGQ3M2E0OGVjYmM0ODhjIGxlZ2FjeS10cnVuaworNTk3NDYgMTQyNmNkMTM2NzM5ZmJkZWUyN2ZkMDY3NGVjYjk0NjgzZTE0YjM2NiBweTNrCis1OTc0NyAzMWUyOTRkMDhjZTFjOWRmM2YyODZjNTIzMjg2NzlmYzE1YjE2YWJmIHB5M2sKKzU5NzQ4IGJkODU4NzllZmZhNjlkYWNkYzk5NTFjODc1ZWVmNDQ2NWYyNDc2M2EgcHkzaworNTk3NDkgZDAwZGUwY2YwNGUyNzRmMDIzYTJkMjQxZWRhZTM4NTk4ZTY5YWI2NiBsZWdhY3ktdHJ1bmsKKzU5NzUwIDBmMWM4YmFiODk4ZGJkOWJjZDM5YzQ2NjMyMjFkY2QzN2I4NTA2N2IgbGVnYWN5LXRydW5rCis1OTc1MSA5ZDhiOTUzZDRhZjUyZWNhYmQwNmQ0MDRlYzZmYjI5ZjQwZDRkNGM3IHB5M2sKKzU5NzUyIGVkYmEwYTFiN2ViZTEwOGM2YjcyMTUyYmQ0ODk3OTU1NTRkMGU2ZWQgbGVnYWN5LXRydW5rCis1OTc1MyAyNDRiYjMxYzAzNmJkNTRkNzMxZWViYjgwMDI4MWM3ZTI4NzdhMDM4IGxlZ2FjeS10cnVuaworNTk3NTQgMTE1ZGEyMjY4Y2Q5NTgxMTIzYjQ5OTdhODA3ZDA3ODJkNGRkZTdjNSBsZWdhY3ktdHJ1bmsKKzU5NzU1IDk4Y2MxY2M1NzU3M2NjMDZjMmE3ZTRkNzlhNTBiYzM4ODA4Y2ViMDYgcHkzaworNTk3NTYgMDgxMzhiYzNjMDYwZWM2ZjM0NmIyOTE2ZmM0MTg5ZTcyOThmN2RhNiBweTNrCis1OTc1NyA0ZTc0YzI3Njc4YmExNWNlOTg2NGRlOTkyZjMwN2Q1YjI2Nzc4N2QxIGxlZ2FjeS10cnVuaworNTk3NTggNjVmZTZlNTZkNGY4ZDVjOWEyOTAyYmVlOWRiODUzZGNlODY0YjQzYiBsZWdhY3ktdHJ1bmsKKzU5NzU5IGFmYjEzMzc5MDZhZThhNTJlOGViZGFiNzRiNWNmMWM2NGRjZjY2ODggbGVnYWN5LXRydW5rCis1OTc2MCAyODFjOTQ3OTE0MmEzZTRhYmEwNmIyNjAwZTg0YjdiYjM0Zjc3NjkyIHJlbGVhc2UyNS1tYWludAorNTk3NjEgOGJmNmE5YTNhNjMyOWJlMzljZDAwYmU4MDY1MDQ4OWRkODVmMThiMCBweTNrCis1OTc2MiA1NmJhNzkxZDhiMzU5MjM1NDdiZjJjYWEzN2MzOWQ4YWI0OTdmN2YxIHB5M2sKKzU5NzYzIDI4NDhmZmI5ZDE3YTZjM2M5YjM5MjY2YWE3MDgyMjZmOWRhNWI3MGYgcHkzaworNTk3NjQgMzI2ODFhZTZjNWMxNDg4NTVmYjc0NmQ0MmMxMTFjNGI4MTViODY0MyByZWxlYXNlMjUtbWFpbnQKKzU5NzY1IDdhMjA2NWI1YmU3NWIzMjM1ZjU5Mjg4NWJkMWFhZTcwZWU2ZmFhMGEgbGVnYWN5LXRydW5rCis1OTc2NiBiZWRkOGJmZDNmZDI2ODA0NzkwNDQ2NTRlZWVlMmY4MTkzMGQ1MDYyIGxlZ2FjeS10cnVuaworNTk3NjcgZmFiMmFhNmI4MDczNjMzMmRjZjEzMDE4OTBhYTg0N2M0NTYxNmUwNSBsZWdhY3ktdHJ1bmsKKzU5NzY4IGU1YmY2Njk2ZTJlMzZhNzRjYzcxYTBjODRkNDExMGVlODcwODM3MDkgbGVnYWN5LXRydW5rCis1OTc2OSAzYmMwNDA1ZGU0OTE1ZDQ4N2M0NWRlY2EzZjViYmRmOWY1YmNiYjAxIGxlZ2FjeS10cnVuaworNTk3NzAgNDMyMWE1YWJkNmNlMmUyZDdkNjYyZDE1ZmZmZjBmM2E0YmFkYTA1NyBsZWdhY3ktdHJ1bmsKKzU5NzcxIDE1NWY1YzM2ZmY5Mjk1NjFmZjJiNTQ3OTIyZDViNWRhZmFmOGFiNjAgbGVnYWN5LXRydW5rCis1OTc3MiA3OWEzNDI0OGEyNjJmYmE5YTQyN2VhZTg2NGJmMmYzNmJjNTgzNmE1IGxlZ2FjeS10cnVuaworNTk3NzMgNjYxOTdmOGQwZmRmMGY4NzI3MDMwNjMxNWM5YjZiNGM3MzhjNmQ0MCBsZWdhY3ktdHJ1bmsKKzU5Nzc0IDUwN2U3NmQ3ZmNkZDVjNWJmNjg1YmE1YjQ1YmI1Y2NmOWRhODNjMDIgbGVnYWN5LXRydW5rCis1OTc3NSA2NDc5NGJhOWUyNWFkNWMxYzkyZWQzMTRhZGNmNjg1YmM3YThlZTMyIGxlZ2FjeS10cnVuaworNTk3NzYgOTlmNjM3MGM2Y2QwNTg0YTc1MjAyMzNjMDFiMGFlN2U0ZGRkY2QwZSBsZWdhY3ktdHJ1bmsKKzU5Nzc3IGQ4OTc5ZTY0MjllNWZmOGFiY2NkMmQwNDg3ZTE2M2I5ZTY1N2EyOTcgbGVnYWN5LXRydW5rCis1OTc3OCA2YjNhYWU1YzY5YmYyMDQ0ZTI1OTNmMGMyMmYyMDMxOTBkNThhNTFhIGxlZ2FjeS10cnVuaworNTk3NzkgZWQ3NThmNmE5N2JiMTBjYWM1MzljNWFiMDlkODdlNzk0YjMyODJkZCBsZWdhY3ktdHJ1bmsKKzU5NzgwIDA5MDA4M2EyMzNmOGUzNjZkZThjYzllNmQ2ZTJmZjI5ZjExN2E5MGEgbGVnYWN5LXRydW5rCis1OTc4MSBiMjQ4ODhjYjk1NTMzMzU4NGM4YzU4OTQwZjc0MDg2MGJiODljZDU5IGxlZ2FjeS10cnVuaworNTk3ODIgMmFjYzY1MmU1OGExOWM2YzNkNjA4MTc4NDViYmI5MjZlZWNhZWIyNyBsZWdhY3ktdHJ1bmsKKzU5NzgzIDQyMGZlNmQ3ZDVmNDVlNWY5ZmVlNGEyNGZjZWJmZmUyYTZkNDI2ZGQgcHkzaworNTk3ODQgYWM3ZGViMWMxZDNjZTAzYWU3MTA3ZDNmM2QzNGU4YmMwMTVmYWZiNCBweTNrCis1OTc4NSA4ZWI5NjM2M2YxZDU5YzJiNzVlYzUxNGNkOWZiNTRlY2ViOWQ2MDk2IGxlZ2FjeS10cnVuaworNTk3ODcgMTgxMWViMDNiYTAwYzhmOTM3MWUwNWFjZWUzZjkxMWQzMmU0NzBlZiBweTNrCis1OTc4OSBmYTI1MGE1ODA5OWZjNGFhYTc4YTU2ZWUxZmJlYzI3YWYwNzE1YTIwIHB5M2sKKzU5NzkwIDdjYmFjYWE1Zjg4NThmNDk0NzViZDUzMjRkYjE4OWVhYTQ0NWJiOTQgcHkzaworNTk3OTIgMGM0ZDI1OGE1YjI1ZWEwZmRhNTljNjU2ZmRkMmJjMmYzNGM4N2MzOCBsZWdhY3ktdHJ1bmsKKzU5NzkzIGQwNDY1ZTc4MmIwMTkxMDNjOGE4NDViYjU3MTlmMjlmMzAwMzYwZDAgcHkzaworNTk3OTQgNjc0YzliODlkMTI0MTQwMWNlMmZiNWMzMGM3ZTM4MDRiY2NkMjhkYiBweTNrCis1OTc5NSBiOGUzNGJjZGJhNDU0ODM3NTRjNGNlYTMwNGU4NDQwYjgyZTgxZjc0IHB5M2sKKzU5Nzk2IDEzYjdjYTA0YmQ3MGUxNDY0MmVkNmQ5N2IxMGU4NWY1NGMzOTliMGUgbGVnYWN5LXRydW5rCis1OTc5NyA5NzRmMDMyMGQ2YjNjZDkzMjFkMmE5MmI2YzYwNGM4YzA1MjI2YjU0IGxlZ2FjeS10cnVuaworNTk4MDMgNDI2NDZhODcyNzcyZWZhZGEwNjIwOTJjYzNjZmYxNDE0NWMzYTAyZSBsZWdhY3ktdHJ1bmsKKzU5ODA2IDA1YmNiNzkwZWY2MzI0YmU4YjdkNmYyYTAwNjQyZDZiNWNjM2MwZDAgcHkzaworNTk4MDcgYTg2OTdhZmJmMTdlZjVjNzJjMDVlMzljZGY1Y2UyNGZiYzRhMGI5ZCBsZWdhY3ktdHJ1bmsKKzU5ODA4IDQ1NTM2ZDU1ODdkNDc3MDMyNTAxYTFjNTM2NDU4ZjliNGU0YjNlZDIgbGVnYWN5LXRydW5rCis1OTgwOSBmOWM5NTBlOGYyZTBhZTZmYWIyOTM3ZWNjM2Q3MjJhYmRhYTFlY2Y2IGxlZ2FjeS10cnVuaworNTk4MTAgYjZlYTUyOTkzY2FlNTBhZTY1NjA0M2ZkZTcwNTAxZGY1NjkxMDVjNCBsZWdhY3ktdHJ1bmsKKzU5ODExIGYyNzA3NGQxNDdmNGUxOThhN2IzMDg3OTJiMWI1YmM4ZDQ1NGJkNjggbGVnYWN5LXRydW5rCis1OTgxMiA2YzRiMGNjOWY2YzkwMGJiMjViNDkyMWUyMWZiNzk1YmQ2ZjgxMjI1IHB5M2sKKzU5ODEzIDdlYTIzMTU3OGIwMmRmYTAzYzc4NjM2ZTgzZTYwZTJhOGY0ZjVlZGMgbGVnYWN5LXRydW5rCis1OTgxNCAzYTk0NDkzNWM2MTBkYTRmY2MwMmI0YjE5ODI5Y2Y1NTdjMDg3Njg4IHB5M2sKKzU5ODE1IDg2NGU2NzlhMGU4NTA4MDRiYmYyM2ViZDM0ZWYwNjhiOTY2YzE3MGQgbGVnYWN5LXRydW5rCis1OTgxNiA0ZDIzZjVhN2Q0Yzk2MDljMzAzNGZlYzM5NGMwMzhhMWNiNzQwZTdlIHB5M2sKKzU5ODE3IDE5Y2U5ZWYzNGI2MjMzY2IzODM1NThjYmI3N2IyNGJjNjljZDI2ZTQgcHkzaworNTk4MTggYjk4OTc3ZjBhYmExYzY1N2M0MDBlYjFkYWFkNTU5MjIyY2I4ZWYyYyBsZWdhY3ktdHJ1bmsKKzU5ODE5IGFjNTFjZmU1YzVjNmI5ODI4NGMzNjc0NDQxODZmN2NjYWI1NTczOTAgbGVnYWN5LXRydW5rCis1OTgyMCBmM2MxZjljOGNlOWYxMDZlY2NiZjFmNDM3NmMyYjAwMjA0NWE2YTYxIGxlZ2FjeS10cnVuaworNTk4MjEgNzZmY2ViNThiY2Y1MWQxZTc5OTMyNjRlN2IxYzVhZmQ0NmZmMWIwMSBsZWdhY3ktdHJ1bmsKKzU5ODIyIDA2ZDE1ZGExZjEyNThjNDQ1NDU0NDAzMDJiZWZiZjhjMTVhZTFhNzcgbGVnYWN5LXRydW5rCis1OTgyMyAyY2RiNjYxNjc1ZjljMDNkOWE5NjJkNjhhNzEyMWUzY2NkNzdmNDQ5IHJlbGVhc2UyNS1tYWludAorNTk4MjQgNTk5ZjIyYTM0OWEyNGZlM2E5OTBlYTFjYjUzODc1NzIwMGMxNWRjYiBsZWdhY3ktdHJ1bmsKKzU5ODI1IGNkYzI4NWJkMGVmYjQ0ZTdhNDkwNmMxZGIzZTExMWE4OTIyMjE4ZGUgcHkzaworNTk4MjYgMzA1ZDdkMmNlMDQ3MDFiNDFjZTA5NGU1MDgzZTAwNmU3NWRhNTIwNiBweTNrCis1OTgyNyAxMzJkOTA4NDcxYzgzOGI5MTA1NWNmMzAwNDE0MTRmNTAyNmIzMzViIGxlZ2FjeS10cnVuaworNTk4MjggMGFhZTE0OTUwZTBiYzJiZDM3ZjBmNDYxYTI0NzhkYzU3MTZkNTkwZCBweTNrCis1OTgyOSAzYjNhYjkyNWIyNjFlNzM0YjY0ZTNkMWYwNTg4MTQzNjk2M2NlOTQ5IHB5M2sKKzU5ODMwIGRiNWUwMWMzM2ViNzYzM2MwMTNhNTE0ZDI3OWFmMzI0Nzk4ODliNTcgbGVnYWN5LXRydW5rCis1OTgzMSBmZDUzMmE5YjI4MTA2MzgzMzkxODg2NGNlYWQ3OTVjZmU2NGM2ZTUyIGxlZ2FjeS10cnVuaworNTk4MzIgNmI3MTVlYTgwNDM3NzQ2OGZkOTZlMTU0ZjhhMzhiNWJhMzRjN2E0OSBweTNrCis1OTgzMyBjZjM2ZTAxZTgzZjIwZTc0MGU5MTM1YjliMzZiZjQ4ZDAwZGEwY2FmIGxlZ2FjeS10cnVuaworNTk4MzQgYWRkYzE4NTk2YTE1NzUzNWUwYWVkYTgwMzUyYWY1MjE5NTIzZTZiNyBsZWdhY3ktdHJ1bmsKKzU5ODM1IGNhMTQxNWM2MTA1ZjdmZDBkZTdiZTFjZmRmMGY1NzMzY2Q2ZWIwZjcgbGVnYWN5LXRydW5rCis1OTgzNiAxOWUxZmE3OGQzMzA1NDlmNDJhY2QyNGYyNDJjYTQ1ZDU1MWRjN2Q3IGxlZ2FjeS10cnVuaworNTk4MzcgNWUwMjRlOTFlZTA2N2Q3NTFhOTQyOTA4MmNiZTlhNmYxMzY3ZjBkMyBsZWdhY3ktdHJ1bmsKKzU5ODM4IGU5NzU2MjY2ZTBiOTM4MTQwMzg0ODQxOWIxNzBlZTIyOTZmMmFjMzQgbGVnYWN5LXRydW5rCis1OTgzOSA2ZDUyMTYwM2UwN2RlN2ZiNzg4ZWRhNWU4ZjhjOTU0MjkyZDk2YzRkIGxlZ2FjeS10cnVuaworNTk4NDAgYzc1ZDM2MGFiODdiMzg3NjYzYTE4MzJjNDJhMDU0YWI3YWMzYmNiYyBsZWdhY3ktdHJ1bmsKKzU5ODQxIDczZTFiZjE3OWEwMWFkNzgyNGZmNWFhMmIyOWNlMDY4YTQ1N2NkNjcgcHkzaworNTk4NDIgMjM2ZTc1MjZhYmVhZjU4ZjA1ZGZlOTdlZDVjY2UyZjJlOWFhYTg5MCBsZWdhY3ktdHJ1bmsKKzU5ODQ0IDQyY2Y1OWNjY2U2NjJiNzUwMGY3NzRhOTRhNjFmZGJlM2Q1N2M1ZWYgbGVnYWN5LXRydW5rCis1OTg0NSBhMjkzOGM1NTIwMGNlNGE2ZGMxY2QwZDUxMGE4OWNlZjI0MWRlM2ViIHB5M2sKKzU5ODQ2IGZiNWE2MzMwZjcxYjM5OGZjZWIwZTQwNTIwMmE4ODgwNWJhMWNjMTQgcHkzaworNTk4NDcgY2M4NjhmY2Y1MDVhZWI1OWU0MTNjMjk4MTkxYTMzY2E4NjlhZDk5YSBsZWdhY3ktdHJ1bmsKKzU5ODQ4IGE1YjdmMmQ4NzYxZDVhMWQyYWIyNmUyMWYzNjA3YTNhZWY2OTJhNzkgcmVsZWFzZTI1LW1haW50Cis1OTg0OSA2MGI1NDgwMWI2NDYzMmU4MGRhNDExNDE1NGFkOWM0MDQ3NGExMTI4IGxlZ2FjeS10cnVuaworNTk4NTAgYTFkZGU2ODBlNjk0MjBmN2JkMmI4MTBmMjlhNzY4ODFmYTczNWViYiBsZWdhY3ktdHJ1bmsKKzU5ODUxIGNiMjJmODc0OGRhN2NmNDU2Yjg2ZWIyZjcwZjRiYzMxZTkyYjQ1OGYgbGVnYWN5LXRydW5rCis1OTg1MiAwNTdkZTQ2ZWExN2UyMWE2MGM0YjY5MDIyZTMxODk0OTg4MjM5MjgyIGxlZ2FjeS10cnVuaworNTk4NTMgODhkNzZiOTIwNmU2NjczMjZhM2NmODFkZjI4ZWJjNmYyNWQ1NjExMSBsZWdhY3ktdHJ1bmsKKzU5ODU0IGQxYTFiYTUwMjU3OWU5ZTIyMjU1YTc4ZDdiNmY4ZTMwYzgzNjcyNDMgbGVnYWN5LXRydW5rCis1OTg1NSA3NmM3NjVhNzRmYjhjYjQzODVmOTAyNzA1ZmFmYjY2NGRlM2VmY2FiIHJlbGVhc2UyNS1tYWludAorNTk4NTYgNWZiOWIyZjZiYWNiN2M2YmU4ODliMDAwNGY5YzZkN2ExMWNjYWJlMSBsZWdhY3ktdHJ1bmsKKzU5ODU3IDA4OGI1MDc3YzkwMGM4ZDQ4NzNkZGI1ZTk3OTk4ODcyNzZkZDYwMjYgbGVnYWN5LXRydW5rCis1OTg1OCBmNDVlYWVkYjkyMGUyMDU1ZWYzN2UxMmZiMWQzYmVkNGVhNDA2MmMwIGxlZ2FjeS10cnVuaworNTk4NTkgOWE2MGJkOGYwMGQ2YWZhOTA0MmZjMjgyMWZlMGEyOGI2MTNkMmMwMSByZWxlYXNlMjUtbWFpbnQKKzU5ODYwIDc2Y2FiODY3ODkxNmU0ZDRhODBiMDJhZTNkMThmMTQ4ZjhkNGE1OTMgbGVnYWN5LXRydW5rCis1OTg2MiA0N2U3OGMyZDE2ZGUwZDQzMDBlNmE3YzI3MjJmNTM2ZTg5ZWE1MzI2IGxlZ2FjeS10cnVuaworNTk4NjMgYjdkMWI2MjdhN2Q1MWU0ZDJiMjJlMDA5MTcwZWRhNTM5ZDkyNmI5ZCByZWxlYXNlMjUtbWFpbnQKKzU5ODY0IDk0YWI1NzJlZDZkZGYzNjA4MDA2MDI3OWQ5YjcxZjBmZDAzZTI3ZTcgcHkzaworNTk4NjUgMzM0NDA5MTk5NjEyNDMyMTQzOTZmZDI5NTI3OTZjOGMwOWY2OTM1ZSByZWxlYXNlMjUtbWFpbnQKKzU5ODY2IGJmN2JiZDhkYjFhODJkNzgyNTlmZjkyNTRjMGY0Y2JhMjMzMjI4OGIgbGVnYWN5LXRydW5rCis1OTg2NyA1ZjY0MGY4ZjkyZjQ4ZDRkYmQyYjg5MzMwMjkyMWVkZDBkMTkzYzk2IGxlZ2FjeS10cnVuaworNTk4NjggMWQ3NGRkODIyOGRiMGNjOTViYzcwMDIzZWMzZTkyYTdjYmNlOWQzYyBsZWdhY3ktdHJ1bmsKKzU5ODY5IDEwZWJkMDI3YzI0Mzk0MjVkYzEyNWIzNDJmMWFjMWMxNTQxOTZkM2EgbGVnYWN5LXRydW5rCis1OTg3MCA1MDg2OWU3NDdlNzZlOWU0MGE5NjgzOTUwNGY3ZGI1YjhjNjE3MTY4IGxlZ2FjeS10cnVuaworNTk4NzEgOWY2YWE0OTg0OThkMjg1YzFhMWFjZGQ3N2RmZTY5NDFhMjU1NTAzNSByZWxlYXNlMjUtbWFpbnQKKzU5ODczIGE2MGY5MmJhMGQxZWQ1NjMxNTU1YjJjMjlhYTA1NzA3ZjNiMTMwOTkgbGVnYWN5LXRydW5rCis1OTg3NCA2Nzc2ZDZlZjIwMWExMDM3NThiNGJmYzEyN2U5MzlkNTZjZmI5Y2U3IHJlbGVhc2UyNS1tYWludAorNTk4NzYgZGM5ZDk1YjcxN2M1N2UzZTYxZjRkYjI5ZWRmOTBkOTY1N2VlNThlZSBsZWdhY3ktdHJ1bmsKKzU5ODc5IDlhOTc5MDhiNGM5N2VmOTFiMWQyZGI1MTIzNjRlMTcxZjUyZDc5YmQgbGVnYWN5LXRydW5rCis1OTg4MCBjOWI2YmU0ODE2NTdkZDk2MjgxY2QwMjY4N2E0NTE2MzI3MDZhZWI3IGxlZ2FjeS10cnVuaworNTk4ODMgYTI5YWRjM2IwZjI2NmI2MzZjOTYyZTQyOWMxNDBhMGJiYjNjMTg5NyBweTNrCis1OTg4NCBmYWU5Y2VkYjkxNDZiZGYxNjJiYjg4N2JjMzgzOWQ3MWY3NTVhMTQ3IHB5M2staW1wb3J0aG9vaworNTk4ODUgZmIyODc0MTVhY2EwZTZmYTVkMmEzMjllMjhhMzYwNGMyZjAxMzQzMyBweTNrLWltcG9ydGhvb2sKKzU5ODg2IGE5M2UwZTgwYzE4YTAxNzEwODAxNDg3YjMxZGRlOWMwYzlhNTkzNDQgcHkzay1pbXBvcnRob29rCis1OTg4NyA3NmE0NjFkZTE1NDQ0NDEwZmUxOTA1ZDZhZTdhN2E3MzEyYjcyZDFiIGxlZ2FjeS10cnVuaworNTk4ODggNDI2NzZhNDg0MGI1YTcxMTBhY2NjNjgyYzc2ZWM0MmM2MzE3ODk3NyBsZWdhY3ktdHJ1bmsKKzU5ODg5IGI0NDZjZDYxMzg4ZjA1YjVmZGQ1ZTY1N2RkMWJhYTFmMjdiODVkMDAgcHkzaworNTk4OTAgZDhkN2E3OGM2NDIzYzFhNDE2MjJjNWI2NzA2OWI1NmYwODIxMDU1ZSBweTNrLWltcG9ydGhvb2sKKzU5ODkxIDg5NjlkNzRkMGQyMmYzMTljN2M0NWU2NDI1OWFkNzQ3NzU2MTg3NTEgbGVnYWN5LXRydW5rCis1OTg5MiBjMzExMzkxNGU2NmU5ZTBkNjY5MzlhYzNlMWE3ZmM4YWNmZDIyNDMxIGxlZ2FjeS10cnVuaworNTk4OTMgYWY2ZjM0NTY1N2I0Yjc5NDFmMzFmZDRjZTYzOTMyNDhmYWNlNmU0NSBweTNrLWltcG9ydGhvb2sKKzU5ODk0IDIwNTc4ZGIwNzYyOWEyMDQ2NmY1NGY2N2JiODM0MGY4YjgyYmIyMTMgcHkzay1pbXBvcnRob29rCis1OTg5NSBkYmFmY2Q4Mjc5NzllMDk3ZTA5ZmZlYTE3NjM0MWZiNmQ1MmI5N2Q0IGxlZ2FjeS10cnVuaworNTk4OTYgZTc1M2UzMWEwYzhmMTc5NDM4YTE5ZmY3NDY5MGNlZTA3NDAzZWI0NyBsZWdhY3ktdHJ1bmsKKzU5ODk3IGRmODU2ZTBlMWIyYTA4OWM5NDFkZjRjMmEzMTczMGQ3NTU1NWQ4NTIgcHkzay1pbXBvcnRob29rCis1OTg5OCA2OWY0OTUwODI0MTI2NzI3MzQ4OTFmNjZlMjI4YTYyOWRlNmUwNTdkIGxlZ2FjeS10cnVuaworNTk4OTkgNjAxMjZhYTNiODE2OTc3MGQ3OTg0ODViMmY3NWJmZTllMWI4ZTVlZCBweTNrCis1OTkwMCA3ODUxZTc1ZjU0MzhjYTQ1OThkMzA1YzZjOTlmYjk0NDBmZGMwZDdhIGxlZ2FjeS10cnVuaworNTk5MDEgNDAzY2ZjYTk4NjNmZDJlMzA4YjA0NWUyYWYxOGMwZjZkMmFmY2E0OCBweTNrCis1OTkwMiA1ZGVjNGFkZThmYTk1Mjg0YjA2MGUwYzU0M2YzMDQzNmExMGQwMDdiIHB5M2staW1wb3J0aG9vaworNTk5MDMgODA1OGUxNjgyMGVmODYwZTRjOTBjNDdlMDcwYWIzYmY3NmY4OTAzOCBsZWdhY3ktdHJ1bmsKKzU5OTA0IDM1NGJlMGRhZmU1NGIyMjJhZjI1YTkzZGM5ODVlZmJjMjg3YzliNTcgbGVnYWN5LXRydW5rCis1OTkwNSAzY2Q5Yjg3N2VhZTA5YTM1YjljY2Q3OTVkZTc1ZDgzOTcyOWE0ODdmIGxlZ2FjeS10cnVuaworNTk5MDYgNzg1MjM3ZmE1ZjQwMTQ0NGMzMWQ2MTdkZGMwNmUwMTBhMzllOGZhNiBsZWdhY3ktdHJ1bmsKKzU5OTA3IDZiMGI1ZWRmYjFiNzg1YzE2OTFjN2NmNjlkNTk4MjcxMWM0OTlkZWMgbGVnYWN5LXRydW5rCis1OTkwOCAwNmY5ZjUxYWI4YzAzZGRjYmIxZDI5YTY5M2QyNjBjODE0MzZhMjA0IHB5M2sKKzU5OTA5IGJlMDRlZTRjNGZkNzM0NTg2OWM5ODAzZDVkMTBiODFkZmExOTJiYTIgbGVnYWN5LXRydW5rCis1OTkxMCAyYWQzZTM1YzU4MjVjMzdmMjhiNzg4MmJhYmRhMzMzNzUzNWM4MTcxIGxlZ2FjeS10cnVuaworNTk5MTEgYWYzYTBjYTFhYjRhMDJiZTJhNTkzMTg2YTQzMDQ2M2RjYmYzN2I5MSBsZWdhY3ktdHJ1bmsKKzU5OTEyIDYyZjZkNzgwYTExZGUwMzczNDYzNzVhZjhmNWZjYjk2NjJkOGJhY2UgbGVnYWN5LXRydW5rCis1OTkxMyAzY2MzYTU1ZDEyMzM0NTEzZmE3MzZhNTA0NTczZTdiNjIxOGFlZGFhIGxlZ2FjeS10cnVuaworNTk5MTQgOTQyNjFmMzAyN2E1OTNkZWY0NGEzNTg2ZDEzMGI4ZDYxNDhkYjlmZSBweTNrCis1OTkxOSA1OWE4MmNkZmExMzdlODhiOGNjMzZkNjU1MDM1Y2E3ZjRlOWI3MDkzIGxlZ2FjeS10cnVuaworNTk5MjAgYWFkY2RhN2E0YmY3YWY0ZWUzYTA5YjUwMTJlNGY0YTJkNTU2ODk2MSBsZWdhY3ktdHJ1bmsKKzU5OTIxIGQ4ZTQzNDJjMTQ1ZTZiNWE4OGExNDkxYzU0ZjFmMWYxOWRjNjk1MmEgcHkzaworNTk5MjIgZTdiODIxMDFiOTcwZjhlYzViMTBlNTVlOWQ5ZDkxODJkNDJlMzI5YiBweTNrLWltcG9ydGhvb2sKKzU5OTIzIDc5NTc5ZmE4ZDc1MmYyYmZhOTQ0MzQ4NGY0YTY3NjAxYjc3ZWE2NTAgbGVnYWN5LXRydW5rCis1OTkyNCBmMGI5MzNmMTI5ODI2N2Q4ZTZjYTM1NTEzNjI4MTc5YzcwYmViNGU3IGxlZ2FjeS10cnVuaworNTk5MjUgYTIyMDIxMWY4MzMxMzE2MDI5MWJkZjVmYTc2NjU2ZTIzMGYzOTA1MiBsZWdhY3ktdHJ1bmsKKzU5OTI2IGQ1ODI0ZmRkOWExNWYwZmQ3NjY5Y2M3OGNiMWMyY2QxMTlhNWJlNWEgcmVsZWFzZTI1LW1haW50Cis1OTkyNyA3NzZiNGUwNTlmODM2YTFmYzEyNDFjYWQ3M2JkZGU2YjFiODM2ZmM1IGxlZ2FjeS10cnVuaworNTk5MjggM2FmM2ZkMzg4N2VlMjNlNDk1YzIyMjU0MGZiMTEwZWNiZDhhYmNiOSBsZWdhY3ktdHJ1bmsKKzU5OTI5IDdiNzk4NTQ4YTRhZGU0ZDAyNmY1ZTlkOGQ5YzhiMjYwM2JjMjM5ZjYgbGVnYWN5LXRydW5rCis1OTkzMCA3ZGJjM2Y0Mjc4ZWJkMzRmYjcxZjA0ODBlMjY3YzlhOGYwODdkYzg1IGxlZ2FjeS10cnVuaworNTk5MzEgMjczZDM3YmYyM2QzYmUyZDMyYWMyODhjYTk4YjJlY2QwYjY5MzI2MSBsZWdhY3ktdHJ1bmsKKzU5OTMyIGE1NGNjNDc3MmU3MzczODM1Yjk2Y2U2ODZjMjg5ZmNhYjQwMmQ4YTAgbGVnYWN5LXRydW5rCis1OTkzMyA1YTcxZGNjNzFlZmY3NjM5NGQzNTk5OTI3NzJhMGQ5YTBkOTJhNzk0IHB5M2sKKzU5OTM0IDUzNTExMDVmZjgwOGEzMTcwYTYzYzZlZjdlN2M4ZDgwOTVhYmJjZTMgcHkzaworNTk5MzUgNGNhOGFjYzliZWQ3MTU0ODkyN2VhODI3NWZlOWNhMDBiNGVkZWE1OCBsZWdhY3ktdHJ1bmsKKzU5OTM2IDNmNjViY2M4OTY2ZjI5ZDg5MDhlMGVjYWUxNTZlZTlkYzI1ODhiMjEgbGVnYWN5LXRydW5rCis1OTkzNyBiNjcyYzAxNWMyZGI4NGZmNDY3OTYzMTM2NzA1MjhkMzA3ZDA0ZTY4IGxlZ2FjeS10cnVuaworNTk5MzggOTQ2OGU2MDYzNjE3MzRlMTVjY2ZhMGFjMGNlOTU4ZTRiOWI5MzU0YSBsZWdhY3ktdHJ1bmsKKzU5OTM5IGM3Mzc2OGQ5NzdhOWY5MmJiOWNkYjkwNDc4ZDU3MWNhZDE5OTBkMmIgbGVnYWN5LXRydW5rCis1OTk0MCA4OTRkMmFkNDUwMjY5ZTdlMDVkODk5ODdmM2RkNjdlMTgwOGRhMDk3IGxlZ2FjeS10cnVuaworNTk5NDEgZjJkODIwYjVhZTJhZTY0MzcwNjBiZjM4NDA5MjYwMWE5NTk0ZmNmMSBweTNrLWltcG9ydGhvb2sKKzU5OTQyIGMyNTc2MGMyMTM5N2ExZTQyMzkwZTMzNjRhZWVjOWNhYWI1YTU1ZWUgcHkzaworNTk5NDMgNDI5M2EwNmFmZDcyN2Y3NTM2MDE1ZjdkZjNkMmExYzI3MmVjOWI5MCBsZWdhY3ktdHJ1bmsKKzU5OTQ0IDM4N2Q0OGMzYTBiM2U3YzI3NDE4NzFiMTlhMTFiN2IyN2M2ZmE4YTMgbGVnYWN5LXRydW5rCis1OTk0NSA5MTkyOGQ5OWViYjA5MjcwN2I0NjJkNmNlOGE1NDlhZjgxYjY1M2ExIHB5M2sKKzU5OTQ2IDQyNmZlZjhiYWRlMmRkN2E4NmM4YTY4ZDAwYjQwOTUxNjY4YWM3YjggbGVnYWN5LXRydW5rCis1OTk0NyBiNDA5OTQxYzdhNTFlMTAwOWRiMTQxOGMxMDIzMzU4MjczZDNkYmNlIGxlZ2FjeS10cnVuaworNTk5NDggN2U0MWUxYzQ2YjU3YjBlYTZhMjhlZjJhYzk2ZWNjMDlhZTBjMDcyNSBsZWdhY3ktdHJ1bmsKKzU5OTQ5IDliNmQzNDhjZWM4N2U0YmE0YzMwZTNhN2Q4ZmQ3M2Q0MTYyMjhjM2MgbGVnYWN5LXRydW5rCis1OTk1MCBkNjZlNTgzN2FhNTdjMzIyZTFkZmU2MDEzMDVjMWY1ZTk0NmU2YTRkIGxlZ2FjeS10cnVuaworNTk5NTEgMzNmNjcwOTA3NWU4M2M4YTdlNWMyZTYzYTBmMDEyYjI4YmQ0ZmZlOCBsZWdhY3ktdHJ1bmsKKzU5OTUyIDMyMmMyMzhhNjRlNTI3Mzg1YTM1OTY3ZjVmY2RjN2U5ODgzYjJkMzcgbGVnYWN5LXRydW5rCis1OTk1MyA2MmVhY2U2NzgwZjY1OGNkZTUxYTY1YTFlNWEwY2U5YjU4ZDJjZDc3IGxlZ2FjeS10cnVuaworNTk5NTQgMTE1NDE1OGExOTlmNzc5NGYyNTg1NWQ5ZWY3MjFjNDc3MWM2NWJlNSBweTNrCis1OTk1OCA2MjdmMmUyMjczYjk0ZmU5OGJiOTFkNzNlMTk5YTc0ZGQ5MzBhMTY3IHB5M2sKKzU5OTU5IDAwNTAyMWJmNWFjZWM3M2MzMjNlZGM0N2RhODk5ZTM2NjMxYmUwNjUgbGVnYWN5LXRydW5rCis1OTk2MCA4MjdmMDQ1MTczNGZkOTY2NDc3YWYzYmJjZDVlZWY1NWE3YTc3NTRlIHJlbGVhc2UyNS1tYWludAorNTk5NjEgNWRmZGVkOWFkOGEwY2M2ZGZlYmE3Njg1M2NhOWUzY2Q5ZDc3NDgxZSBsZWdhY3ktdHJ1bmsKKzU5OTYyIDZhZjE5NGM0OTRjYzJmZGYzZjcyMzQyYzA0OWU1ZGM1Nzc5YWFjZjkgbGVnYWN5LXRydW5rCis1OTk2MyA3NzRhOTU5NzIyOGUwYWRiN2Y4ZTFiOWE1YjY5M2I3ZDY0OWU2NWE1IGxlZ2FjeS10cnVuaworNTk5NjQgY2FiODQxMjlkY2NiNTQ1NjQwNjNmMTYzOTYxODU2NWZmMzg3ZThjMCBsZWdhY3ktdHJ1bmsKKzU5OTY1IGYwMzRlYjVkOGNkZjQ5YWM1MTEzOTNmYzlmOTZjNmQ2YTRjN2JjNDYgcHkzaworNTk5NjYgMzU3YjM2NTU2MGY0Yjc5MjM4ZTkwZjg0OTNlNDRlYmM5ZDc5ZmVjNiBweTNrCis1OTk2NyBhMDBkOTAwMDRhMjUxOTZhZGE2Y2ZjYTIwNzc2MTJlN2RkODRjZmMzIGxlZ2FjeS10cnVuaworNTk5NjggZTUxMWNjZjJmZmJlNjdhMTJlMjE0MjM5MGE2ODM2Y2Q1NzZiMmUwNSBsZWdhY3ktdHJ1bmsKKzU5OTY5IGQwMjA4ZDY1ZGMyMmM1MDEwOGE2NzM5ZThhMzVhOTc5Mzk5ZWFlNWIgbGVnYWN5LXRydW5rCis1OTk3MCA4Njg5ZjQ2ZDI1ZDZhZjU1YzhjYmU0ZDVmMTc1ZGY4YzE1ZmY3OWM0IGxlZ2FjeS10cnVuaworNTk5NzEgMTQ4NTRjN2M2YTI0ODcwYWRiNTg4ZDJhNjE1YTc1NTcyYjNmZmE2OSBsZWdhY3ktdHJ1bmsKKzU5OTcyIDVjN2I3ZmJlYTY4MWIxNWQ4NGU0MzEyOTk4MGY4M2NlYjU5OTg4NGUgbGVnYWN5LXRydW5rCis1OTk3MyAwYmI2Y2Y3N2M4NWFmODUzNGQwZmVlZWNiYTQ0NGFlYWYxOTFhMzE4IGxlZ2FjeS10cnVuaworNTk5NzQgNDZlNzMxYmI2YTg1ZjFjZWRjNzY0ODc0YzlmYWIxMmQ2NGJlNTJmYSBsZWdhY3ktdHJ1bmsKKzU5OTc4IDU5ZjI5YjAxMzZmYjVmNjE4NDk3ZjA5ZjhhNDUyYTUwNjRiNDBiM2EgbGVnYWN5LXRydW5rCis1OTk3OSBiZmE4ZDIyNTc4MjMyMjNkYjdjNGEzZGRjZTY2MTQ0NDQxYWUxZjc4IHB5M2sKKzU5OTg0IDI4YzgxYzI3Mzg5ZTI1NDMzOWE5MGMzMTBhYjU3NzQ3YWUzMjMyMzEgbGVnYWN5LXRydW5rCis1OTk4NiA2ZTU2NzVjYTI1NTljNmE3MzdlZjFiNDZiODExNDlmNzcxYTdkNDdhIHB5M2sKKzU5OTg3IGM3OTA1ODdmMjk5MjVjMTUxNDUxMDQwZDM5NDM3MmFlNjg3ZDY2OWEgbGVnYWN5LXRydW5rCis1OTk4OCBjYjkwNDA0YTQ2YWQxOGExMjJiZjE4MmFkMjQxN2U5Y2Y0ZmE1YTUwIGxlZ2FjeS10cnVuaworNTk5ODkgZjMwMmNmOTk5NjMzZWI3YzZkMmIwZTBmMjY4NGY0ZGVmYmM5MDBhNSBsZWdhY3ktdHJ1bmsKKzU5OTkwIDZmMDQ5Y2E1NWUwNmIyYzEwOGVjMGQ4ZDBlODRiYjBiODIzZGMzODUgcHkzaworNTk5OTEgOTkyYTYxMWIyZTMxNDY2YzE3MDRiYTdlZTZjMTk2YmI4NGI0ZjAxYyBweTNrCis1OTk5MiAyZjExZjdkOWJkYzg0ZTBkNmJiYTJlZmUzY2U1YTQ5ZmMwY2U5ZmE1IGxlZ2FjeS10cnVuaworNTk5OTMgNzFjNzk5ZWIyNGIyNDgwYWRmYjc3ZjQzZGQyNzVmZmE0ZTIxYTg4MCBsZWdhY3ktdHJ1bmsKKzU5OTk0IDdmMmYyMWFhMzY5MDZhOWRkMWU3ODU3Yzg5ZTc5ZTk0MWE4MThiYTggcHkzay1pbXBvcnRob29rCis1OTk5NSBiMjNiNDc3ZDc4OTlhNjY4ZjY4NDM0OTRhNjcxMzU5NDU4OTI0MzgzIHB5M2staW1wb3J0aG9vaworNTk5OTggYzQzODNkNzY1Y2E3MTc4Mzc0ODRhM2MyYWM1ZDM3MWE4MDA2NjQ5OCBsZWdhY3ktdHJ1bmsKKzU5OTk5IGE0YTAyNDMyZTczMzNlOTllZjA5ZWM1N2IzOWEyOWVhYTBlNzViOGMgbGVnYWN5LXRydW5rCis2MDAwMCA0MWYxYjNjYjBiYjEwMzU1YjI0OTVmOTEzZWViNDk2ZjM5NzQzMTRjIHJlbGVhc2UyNS1tYWludAorNjAwMDEgMmY3ZjNmNWU3M2QzYzVlYWExNDAyYzkxYWZlMGU0Y2UxOGFiMjcyNCBsZWdhY3ktdHJ1bmsKKzYwMDAyIDNkNzA0Mjg5M2NjNTA0NmNlZDdhMTk2ZDU4YjZkMjBhMWY1OWU5ZTcgcmVsZWFzZTI1LW1haW50Cis2MDAwMyBjYWY1OGM4MzE0OTljYzdkNTk0NTM1OTE4OTZkMDMxMGVkOTVmZDI3IGxlZ2FjeS10cnVuaworNjAwMDQgYTJmM2Q0OTljZTEyZWY0Y2UyMWI1NmJjYjFlMDliYTNjNTYyMjY5ZSBsZWdhY3ktdHJ1bmsKKzYwMDA2IDI3ZDU5Njc1YjkyYzZmN2EwZDAwNWViYTg5Y2FhODVkNWRlMDRiYjAgbGVnYWN5LXRydW5rCis2MDAwNyBmMTI4ZTZlYmY5MGY4MWQwZmQyYTMwNThiYzdmYTNjYWI2NmIzMGYzIGxlZ2FjeS10cnVuaworNjAwMDggMmM5YmM2MWQ0ZjczZjM3NmUzNTg5NWZmZGQ3MGZkOTExYjMxMDYzMCBsZWdhY3ktdHJ1bmsKKzYwMDA5IGM3ODRmMjBjOTY3ZTg0NGJlZGJiMmZkMzc0MWQyOWJjY2FlOTJhOGQgbGVnYWN5LXRydW5rCis2MDAxMCBhYTVjZjYzOTQ2NDFkYzFkM2EyYmYwZDYzNzRkYjZhYzRlZTgwNWJjIGxlZ2FjeS10cnVuaworNjAwMTEgOTkwMDBlYTIxZmYyNzhhYmI4OTQ5ZGFlYzcwYTcxNTc0ZWNkZGQ3MyBsZWdhY3ktdHJ1bmsKKzYwMDEyIGI0NjllOTAyNzNlYjA3MmRmN2YwNGRlZWUzMmM0NzkxNTkyOWQzYjUgcHkzaworNjAwMTMgZDBmNzk2M2NmOGIwMzM0OGNiY2M0NTMwODY3MjA1ODY1NDAzYTA4NCBsZWdhY3ktdHJ1bmsKKzYwMDE0IDI2YjYxYTVkZjExYjYxMmQzMTExNjYyNzRhNzJhZTYyNDlkMzE1OWYgcHkzaworNjAwMTUgY2IwZGNkNmUzYjExNDdmM2FjYTNiMmUyNzA1ZjZiMWI5MGE4ODQ2NiBsZWdhY3ktdHJ1bmsKKzYwMDE2IDNiMzg1NmIzNjIxYjIwODk1ZGFlNGYzNGEzMjEyZDU4ODE1ZDg0YWMgcHkzay1pbXBvcnRob29rCis2MDAxNyBkZjcxZmNkZGI3NWVhYjE3YTA1ZmUyNjFlNDAyMzMwMmEyZWQ2ODlkIHJlbGVhc2UyNS1tYWludAorNjAwMTggYTM4MDI4NTNjMzE3NjI2NmNmN2IyNjBkMDBkMmU0OTA5YzE4MmQ4NSBsZWdhY3ktdHJ1bmsKKzYwMDE5IDE3MGNiMjczOWEzOTBlMjc4MzIyOTQ0NjI1ZWYxYjk1YjhjZWMyMmUgbGVnYWN5LXRydW5rCis2MDAyMCAwNzY2ZWZkMmE2ZDYzZTYzYTNiM2RkYjUzM2RkZjJjYWFlODdhNjAwIGxlZ2FjeS10cnVuaworNjAwMjEgZDgxNmJjMGM0MGI2NzU5NmUyNTM1ZTA0NzQ1NmFiNWExNmI3Yzc3NiBsZWdhY3ktdHJ1bmsKKzYwMDIyIDcxNzI2NWVkMjA0MWIzMTk3YzI1ZTYxY2Y1YjJlMTYyMTg4MjVlOGMgbGVnYWN5LXRydW5rCis2MDAyMyAzYjRiYzRjNzA0YzE0ZjY5MGJmNDJhMGFkZGY2NWRmYjg1Y2U3NDZmIHB5M2sKKzYwMDI0IDIyMmI5MThjZTA5MjRjZWQ2ZWU3ZGIxOWNkM2E0YmU1ZjBhYzJlNjYgbGVnYWN5LXRydW5rCis2MDAyNSAyOWU0Yzg2ZDUwNzFhNmM4ZTViYTI4MTIwMWUxODFiMjIzNTkwN2M5IGxlZ2FjeS10cnVuaworNjAwMjYgMDc2YzhhYmJkNTRmNzg5OWQ4MjA0NTk1NTY1MmEwYzkxNmFiZWRlYSBsZWdhY3ktdHJ1bmsKKzYwMDI4IDhiNDk1NDAzYmEyMzViZGE4ZTNlODNiYjBhYTcwNzNjYTQ4NDdlZDIgbGVnYWN5LXRydW5rCis2MDAyOSA0MjhkZDg1MWJiOGFlODBmZDNiMTNiMjI3ODM4YjRkM2ZjMjU3ZGQxIGxlZ2FjeS10cnVuaworNjAwMzAgYmIzM2IzMmRlM2EwYjkzNzIxNTQyOTNkYmIxOTZjMmE0ZTA3YjU0ZCBsZWdhY3ktdHJ1bmsKKzYwMDMxIDg1Y2YyMjBmMTZkODVlZTQwNDY2ODE5NzQ2MzIyYjhlZDM1OWJlODMgbGVnYWN5LXRydW5rCis2MDAzMyBhMGRkMDkyYmI2YzM2ZTdjNmQzYjU4YjQ2OTc5OTM1NDQ3NDA0NTk5IGxlZ2FjeS10cnVuaworNjAwMzQgNGQ2MWM4ODc2MjRkMzViYjZjYzYzMDIxYjc2YjI5NzVlOTNiZjYyOCBsZWdhY3ktdHJ1bmsKKzYwMDM1IDI2YTg2YzI5YWQ2MDBhNjg4ZTRhNDk0YzlhNGFlZWQ0ODI4NmI0ZTMgbGVnYWN5LXRydW5rCis2MDAzNiA4NDBlODdlMTgzMDY5NDBiODBjNzA1YjM5MmMzNGQ4NjNlZjU1ZTRmIGxlZ2FjeS10cnVuaworNjAwMzggYjQwMDNiNmM2ZDEzN2VmOTU0YzQ3MzM2ZGNjYzVmOTZlM2Y1M2E3MiBsZWdhY3ktdHJ1bmsKKzYwMDQxIGEzYmYwZTI0YjkxZTY5NGVmOTRjNDg1NjdmMDkxZmIzOTA2YmRlNDcgbGVnYWN5LXRydW5rCis2MDA0MiA3OWJhYmI0Y2NlYzg1MmZmZmQ5M2I5NjEzMTc4NmU3ZDM0MTBlYzljIGxlZ2FjeS10cnVuaworNjAwNDMgYmJmNDg0NTgxMDQzN2Q2NmI2MTY4N2ZlNzNiNzg3NTRjODliMDJiNSBsZWdhY3ktdHJ1bmsKKzYwMDQ0IDE0ZDQxMDQ5NzZmY2M3ZDQxYzg3OTdiMDEwNmE3MDQ1ZmQ2ODg4YTYgcHkzaworNjAwNDggMjk0NjAyMDU2MGU3M2Y5NTkzYzQwMTBmNGZkOTc2MzYxMjg4MWViNCBsZWdhY3ktdHJ1bmsKKzYwMDQ5IGQ5ODMzZDJiZjQ2OTVmZmM2NWE3ODJhOWM4OWUyYzczNjJhMjdmZjYgbGVnYWN5LXRydW5rCis2MDA1MCBkYmYwODU2Nzc2ZGQ3YzNjMmJmOWY2ZWQ3ZTRmMjU0ZGU2NzE1N2QwIGxlZ2FjeS10cnVuaworNjAwNTEgOTdhN2MxMjZkMDRlYmY2NjU1MTJhNTAwYTNiZTU4ZDg2NWJhNjgzYSBsZWdhY3ktdHJ1bmsKKzYwMDUyIDhkYTllYmY3MzAyNjQ3ZWNhYjUzOTQ5MTQ1NzIzYzdmNGMzNjI5OTggbGVnYWN5LXRydW5rCis2MDA1MyA0YTY3NjczZTM0ODFkYzEwNGU1ZTY4N2U1YmYzYjM3Y2JjZjAwNzYyIHB5M2sKKzYwMDU0IDU1ZGRiMTY2ZjFkMWFhMzJiNDE0MGVmZjYxODBjMGVjYjAxZGI0ZDkgbGVnYWN5LXRydW5rCis2MDA1NSAzZjQwYWQzYzEzZGQ3ZWMyYjRjZWIyNDc5MTRmNDk2MTJlYmQ5YTNmIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMDU2IDc2NWU1N2MwMDFiMWExMWViYmZlMzBlNzYzODM3MmVhOWU5MDgzOTMgcmVsZWFzZTI1LW1haW50Cis2MDA1NyA1ODMwM2VkNzJiYTFhN2JmMTI1ZWY2NjA5NjQyOGQ0MzcwYzhkNmYzIGxlZ2FjeS10cnVuaworNjAwNTggMTNmNzRjODU0NGNjOGE5MjFkZTZiNGZjNjMxNjQwNGFiM2M5OTAyZCBsZWdhY3ktdHJ1bmsKKzYwMDU5IGViOGVmOTY5ZWQ2OGE1Zjc4NmZhNDI5YWUzNDA3MGZkM2FjYTMyYjYgcHkzay1jdHlwZXMtcGVwMzExOAorNjAwNjAgZDdhODdjN2YxNGQ5ZWU5NzZmNDU2ZTdmOTllZTEyNWZjNzM1MTdhNyByZWxlYXNlMjUtbWFpbnQKKzYwMDYzIGE1MDcyYmEzNWYwYTBmM2FkMTU2OTQ1MTA4ZjQ2NzJjZjhiZmNlN2IgbGVnYWN5LXRydW5rCis2MDA2NCAyMTc5ODMzYzljOWE1OTA4ZjM5YzEwNjIxZGQ3ZGQyNDMxM2U0NzUxIHJlbGVhc2UyNS1tYWludAorNjAwNjcgMGI3YjYyZGQ0ZGNiZDI4M2Y3NmYxMTIzNWEyMDFkMDJmMTU4OTU1NSBweTNrCis2MDA2OCBjNDcwOWI4MWFiZGViNmM3YzE2Y2NiNjBhYWExOTdlYzc5NWVkNDQ0IGxlZ2FjeS10cnVuaworNjAwNjkgZmViZGUzY2FmMjkxMjZjNTNiMmNjZjUwNDc3MzE0YWY5YzNjYWYyYSBsZWdhY3ktdHJ1bmsKKzYwMDcwIGYyNzk3ZTA3MDllMzhjZTE0ZGYzY2I0NDU0ZDk5M2VmZjM5NzI0NjUgbGVnYWN5LXRydW5rCis2MDA3MSAzZDcyZjUyMDllNjdkNTQ5ODI1M2ExODY1NGUyYzg3NmI3MDk5NjA3IGxlZ2FjeS10cnVuaworNjAwNzIgZjk3NzU0MzgzNjlhYjYxMTYxYmFhNDU1MGJmM2Y2NmVmOWRmNjU1NiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDA3MyBjZTMyNmFmZGYwOTg5ZmNiNjBkN2QxOGQ4OTVhNWE5YjM2NjVhOWYwIGxlZ2FjeS10cnVuaworNjAwNzQgY2MwYTI5NjExOTVlZjM4MWFjYWRiNTI1NWFmODExNGFhMjkxOWVmOSBsZWdhY3ktdHJ1bmsKKzYwMDc1IDczYjVlOTM5ZTA1ODBkZGJlODEwNTAxYjg5MmEwYmM5YzVjZDI1ZjggbGVnYWN5LXRydW5rCis2MDA3NiA1MmU4MjE0MThhNzk5YjUyNGFkODM1ODExNTk5YTY1N2I0NDBiYjAzIGxlZ2FjeS10cnVuaworNjAwNzcgOGVkYmUwMjVhZWQ1NzEyOGYxMzg3NWJlNTU0NThjYzE1NzljYzc4NyBsZWdhY3ktdHJ1bmsKKzYwMDc4IGM3Y2I1ODAwNjA2ZTJmNmRlMDNiYjkyYmRlZDdhZWJhMTEyZDA0ODggbGVnYWN5LXRydW5rCis2MDA3OSBhNmY5YTJiYTg5NjJhNDYyOTQzYjZhMzQzNWQ0NDYxMWVmMTViNzQzIHB5M2sKKzYwMDgwIGNkZTQxYmQwOGU1ZTI0Y2Q5MzhkNjIyNzU1OGQwNDdmNWEwY2I5OWUgbGVnYWN5LXRydW5rCis2MDA4MSBlM2ZkYmM4MDk5OTk4MDg4YmQwN2FiZTRkMDJiMTJjNDc2NDRmYzRmIGxlZ2FjeS10cnVuaworNjAwODIgODU5YmY4NWE1NTZhOThiODIwYjAwMTY4MmQzOGFmZTA0OTUwYzFhMCBsZWdhY3ktdHJ1bmsKKzYwMDgzIDBmZTkzNmI3NzExNDIzNTE0YWNlMDc4YzVlNWJmYjQ0NjdiMDdlY2EgbGVnYWN5LXRydW5rCis2MDA4NCBhZmEwZWYzNzkxODY1ZDE4Y2ViNzEzOGQ2MzUxODFmMWJjZTMyZGJjIGxlZ2FjeS10cnVuaworNjAwODUgYTI2NWJhYTc5MTAwMzQzYmExNWI4NWQwNTg3NTQzZTMzZGYyYzM2NiBsZWdhY3ktdHJ1bmsKKzYwMDg2IDgwMzY2NjIxYzUwMjI5ODFiNzIzYTg2OGJhMjRhNWUzMzI2MDIyNWYgbGVnYWN5LXRydW5rCis2MDA4NyA5YzBhOTEzYWRjZDRiOGE5NmU2YjlmOTFjZTkyNTQyMWE1ZTgyMmVmIGxlZ2FjeS10cnVuaworNjAwODggZTRlNmZjOWM5Nzc1ZDgyMDI0MzgyOWIxOTQ2MzcxZTFmYmYxNWY4YiBsZWdhY3ktdHJ1bmsKKzYwMDg5IDhiNTUzMjExNjExNTJiYjBmYzJmYjAyODRmYTIzN2I5ZGI1ODNhYWUgbGVnYWN5LXRydW5rCis2MDA5MCAzNjI1ZWVkNGYwY2Q5YmU4YzgzYjU2OGZmNDdlM2ExYTFkZmE0MDU4IHB5M2sKKzYwMDkxIDg3N2I0Njc5YjlmZTY5YjQwNWJlNTgzZWQwOGY2NjEyZGM0NjE4YWEgbGVnYWN5LXRydW5rCis2MDA5MiA2MWExMWNjOTU2MzJlODQxNTA1ZjJmYWUxMzM1YzZjZjgwOGIxOTQ2IGxlZ2FjeS10cnVuaworNjAwOTMgMTcwMDlkNjIxMWI4MzZhNjYwMTQ2ZGYzNzBiMzdlYmZmNTJjZGZkOCBsZWdhY3ktdHJ1bmsKKzYwMDk0IGNhMjY4M2E2Nzk0MzEzYTNmZWMxNzVkNzQwNTg3YzUzNzM5ZTIzOGMgcHkzaworNjAwOTUgNGE3YWZmZjUyZWE3MWY0ODdhMjFlZDE5Njg1YmFhYTk3Y2JjZDFlZSBsZWdhY3ktdHJ1bmsKKzYwMDk2IGIzMTAyMDA2ZGQ3ZWM5ZmNlY2UzODIyOGVmMTI3ZDdjMTBkYWE3MzkgcmVsZWFzZTI1LW1haW50Cis2MDA5NyBiNTIwZDMzYmVlMDYxNTRmOTdjNWFlZWYyZTA3Nzk2YTc1ZGQ5OGU2IGxlZ2FjeS10cnVuaworNjAwOTggNGFjNDg0MjQ5YmQxZTFmZGM2MjExYjYxNmIxYzZjZjkxYWYwYWFmNSByZWxlYXNlMjUtbWFpbnQKKzYwMDk5IDRmMzUxMThlZWQzYjhmMjE2MjVjN2ZiNTAzZDZjYzVlNzY0NTJjNzcgbGVnYWN5LXRydW5rCis2MDEwMCA4OGY4ZjE1MmEwYjMzMmMyZDBiOTE0N2QwMjE5MWJhZjhhNWE0NTU0IHB5M2sKKzYwMTAxIDNjOWNjYzMyZGE5YWZlNjQ0OTcwYTc3ZmZiNDhhM2JkYmUxMWJmZDMgbGVnYWN5LXRydW5rCis2MDEwMiAyMTAzMjNlMmE5MjcyNmQ0YmNiZTUzYmM2ZmJlMTk3MmQ3YjE0ZDQ0IGxlZ2FjeS10cnVuaworNjAxMDMgMTU1MzY4NjUxOThhYjIxOTY1MGM1MGI5ODdkZjc4NjFkMjc3MDliNiBsZWdhY3ktdHJ1bmsKKzYwMTA0IGI0ZDAzYTkyYmRkZjljYmNiN2NjMDVjZDcyNzYxODQzNDBjZjE2NWIgbGVnYWN5LXRydW5rCis2MDEwNSAzZDEzMWM4MzhmMDliOGEzMDExZTQzMDhkYzkzYmUyYjRjYmIxZDc3IGxlZ2FjeS10cnVuaworNjAxMDYgZDhjMTNlY2I2ZTg1OWZlZTZkYzE5ZGY4ZmQ0Y2JmMzFlMGFkYWQ5MSBsZWdhY3ktdHJ1bmsKKzYwMTA3IGJkYTQ5ZWI0NjA3NDlmODQzMDc5NWYyNGVmMmZkNmMzYWYzODZlNDcgcmVsZWFzZTI1LW1haW50Cis2MDEwOCAxN2Y4NDUzMzI3Nzg0MTU0NWFmYzE3NDliZjg5YTEzZWUyMzY5MTM1IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMTA5IDEzZGM2NWZlODU5OWYwOGE4ZDRhZTVkZjQ1NjAwZWNlN2YwNzIzNmIgbGVnYWN5LXRydW5rCis2MDExMCBlYzAyZGJlNmIwNTEwMWI2MTNhYWU1MzZlMTEwNDU2YjExOWE1NDRlIGxlZ2FjeS10cnVuaworNjAxMTEgNWU2NjAzMGYxYTY3YTQ2OTU0ODQ3NWJiOGYwYTA4Zjg4MDYyMTQyYyBsZWdhY3ktdHJ1bmsKKzYwMTEyIGFjMmVhOTU1MjI5MzBiMmMyMWM2ZGJkZWU4NmU3NzcxNDE3MmNlZjMgcHkzay1jdHlwZXMtcGVwMzExOAorNjAxMTMgMGFjZTc0NzY3NDc4Y2Y2N2U2YjA3NDJlZDFmOTA0YTBjYzUzMzc5YyByZWxlYXNlMjUtbWFpbnQKKzYwMTE0IDQ3OTY1ODhkOWY5YWNiNzUxMzc1MjY3NzMzNmMzY2Y2YmEyN2VjOGIgcmVsZWFzZTI0LW1haW50Cis2MDExNSBjMjM4OTJmNWE2OWYxNmY4MWIxMWRmN2M4MGIwMGM2ZDZmOTk1NjM2IGxlZ2FjeS10cnVuaworNjAxMTYgMTE0ODNhNjczYTQ1ZWVkNGNiNDQyNTUyNWQwZGNjY2RkOWY3M2YxZiBsZWdhY3ktdHJ1bmsKKzYwMTE3IDY4ZjVjYzk1YjcwYTVlNmY5YzA0OWM5YTgxNmE0YzNkMTlkZjZhNGMgcmVsZWFzZTI1LW1haW50Cis2MDExOCA3NjQ3MTUyZjc0MjQ1YjdlZTUyOTliMWQ4ODg2Y2VlNzlhMjQ0NTI3IHJlbGVhc2UyNS1tYWludAorNjAxMTkgMWU1NjE0NTY3YTZlZDk2OWNmOTQyNzc0NWJlZGI4N2IwMmM5OTczZCBsZWdhY3ktdHJ1bmsKKzYwMTIwIDgxNmE3YmRiZjY5ZThmYzE4Yzg5ZjhmOTdlMGU2YjFiNDg0NmNmNGMgbGVnYWN5LXRydW5rCis2MDEyMSAxMTIwYjNkNjA2ZjI4YzFjNWFkOTA1MmQ0NjQ4NGE1Mzg3OTU0NjMwIGxlZ2FjeS10cnVuaworNjAxMjIgNmQ0M2ZjY2RhOTBjM2ExNDJjYjRlMDIxZWUzYzAxY2RhYjAwZWQ2NiBsZWdhY3ktdHJ1bmsKKzYwMTIzIDNlMGY0YTRiOWY1NWFlNjEyMjRhN2UyMjViYjU1ZTY5ODFlZThkNzYgbGVnYWN5LXRydW5rCis2MDEyNCBmYTZjZWUxNGRjYmE0OGQwYWJkNWQwMWI0ZDkwNzkxODk3YjgwMGMwIHB5M2sKKzYwMTI1IDU1MzQ5ZDRkOWY4MzM5ZTUwYzVlZDY4OWNlODM1ZmJmZGJjODQ3ZGEgcHkzaworNjAxMjYgMWU4YjllN2MzNGNlYzU1ZDA2MTdhZGIzZGYwMTIxNDBlM2FjODI5MiBweTNrCis2MDEyOCAwMmEyMTIwZTVkYjIzYjVmYjRkNGQ0NmYzZjkwMWY5NWY4NDM2OGYxIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMTI5IDk0MWNmMmJmMjAwZTQzOTJhM2Y4YmQ4NmYzNmY2NTE5NWJhNWUwZTAgcHkzaworNjAxMzAgYjk5ZjkyOTVmZDljZjg4NmRlZWJjZGM2NDZiMjk1NDg2NmE5NzVhYSBweTNrCis2MDEzMSA5NDJlNGI0MmRhMTRkNTY4NWNlMmE2N2RkNzNiM2Y1YTE3ZDE5MWI1IGxlZ2FjeS10cnVuaworNjAxMzIgMTUwY2I0OGVkYjA3ZTFiYTg2MTBkZmMzYzEwMDIyNzY4YzZlZWQxNiBweTNrCis2MDEzMyAzZjM0ZDNiMDM1MGQxMzViOWQ2MWZjZWY1MDRjNTZhMzUwYWU5ZmM5IGxlZ2FjeS10cnVuaworNjAxMzQgZTM2NDY5ZTZkOGI2NzgwOWM3MzRiYWJiZjE4MWE4OWMyYWVjN2JiNSBsZWdhY3ktdHJ1bmsKKzYwMTM1IGFiY2I3OTIzZDg5OGZkYTNkZWQyYjVjNjEzNDU0Mzc3YzcyNjdkMWMgbGVnYWN5LXRydW5rCis2MDEzNiAxNDViM2U2MDUzNzg0MzUyNjZlNTQzYTAwNDA4ZjhjMjVkOTZmNTY5IGxlZ2FjeS10cnVuaworNjAxMzcgYjI4ZmRlZjJmMGQ3MWIxOGQ2ODQ0N2RmZGIyN2JhOTkyOWJkMDgyOCBsZWdhY3ktdHJ1bmsKKzYwMTM4IDQyNGNjY2ZkMmJhYWE3MjE4YTljYjRkYWYzOWJkMjA4ZTY1OGIzYzQgbGVnYWN5LXRydW5rCis2MDEzOSBlYWNhMjM2N2VjYzk5Mjc4YjIwOTY2NWFiNjFhZGQwODk0MWEyNDUzIGxlZ2FjeS10cnVuaworNjAxNDAgODRmMWE2NThiMjMxOTIzNzA1Y2U5Mjg5OWIwMGM1MDdhNjI3NWJhNiBsZWdhY3ktdHJ1bmsKKzYwMTQxIGVmODU5Y2Q3NTRhNzZmYTc3ZTA4NGE4NThlMzRjMmU4ZjUyYTA2M2IgbGVnYWN5LXRydW5rCis2MDE0MiBlYTM4OWEyNjhiNTQ0OTgwNzI3Y2UzODU5N2QzNGZhOThmOGI5OWI0IGxlZ2FjeS10cnVuaworNjAxNDMgZWFiMDBkYjgwYzI3OTU5ZjAyMmY0YWQ5YzZkMGYzODRjZGQ3M2IxNCBsZWdhY3ktdHJ1bmsKKzYwMTQ0IGVmN2Q3MmQ5ODQ4NWJmNDE0YTg2MjE2N2IwZWYyNzU4YmY5ZTEzMmMgcHkzaworNjAxNDUgYWM5NzBmODgzMTg3NTZjZTJhZGJkNmJkNmJhM2M5MGI2YTZiNjQ2YSBsZWdhY3ktdHJ1bmsKKzYwMTQ2IDBmMDcyZWRiMzM0MzczMjYxNzk0NWM3NWJkMDNlOTVlOTZmOWVlNjEgbGVnYWN5LXRydW5rCis2MDE0NyBjM2JmOGY5YmVhYTcyNzEyOWU0ZTA3ZTc2M2MxNjc5ZTViNDljZWQxIGxlZ2FjeS10cnVuaworNjAxNDggZWIyZWFmZGEyOWI3NmRkOWIxYjJlZGI2Mjc3NGZmNTk0ZTgxYWZjMyBsZWdhY3ktdHJ1bmsKKzYwMTQ5IDg5YjEzYjY5Mzg2NDU0MDY1ZjA1YjY2ZTY1YTg5NDY2ODEwMzEwNWYgbGVnYWN5LXRydW5rCis2MDE1MCBlZDMzZGEyZTc0ZTcwZTNlMTRmYTk5ZmNmODgwMjk3NGUyZDYzNTQxIHB5M2sKKzYwMTUxIDk0MTFiMWI5MTIxODEyYjdiZWY2ZTc4ODNiOTM1YjQ0ZWUxMjI5NTAgbGVnYWN5LXRydW5rCis2MDE1MiBmYWJjNjg4YTA4YzY4ZmZiYjVkMTZhNTM0NGZkMDk2ZWI2MzAxZmQ3IGxlZ2FjeS10cnVuaworNjAxNTMgYWQ2YTlkYjFmZjQ1YzU0Mjc5MmFhM2JkOTUwYmM2ZTVhOGIzYTQ2MyBsZWdhY3ktdHJ1bmsKKzYwMTU0IGY2ZDRhMmM0OTUzMTUwZThjNjNjMGU4MDJlYjI0YjQ5Y2Q3ZGZkYTYgbGVnYWN5LXRydW5rCis2MDE1NSA4ZjE1ZjhkZTQyMTg1YWFjNGFhMWRmYWVhOTJhNDBkZjVjMTg0ZmYzIGxlZ2FjeS10cnVuaworNjAxNTYgOGFiZDM2ZjNhYjdhM2FkYzgyOWY5NDU3MTg4ZGI0ZTc4NTIzOTYyNyBsZWdhY3ktdHJ1bmsKKzYwMTU3IDBhZTU5ZjYwOGI0NGY5YzExZThjMDM2MTBlY2ZlYjY1NjNkNTFlYzggbGVnYWN5LXRydW5rCis2MDE1OCAxOTkwZmE2YjllODI4N2Q4MTJhNzBhZDhjMTlmNjU3NDA2MTQzYzFkIGxlZ2FjeS10cnVuaworNjAxNTkgNzlmMTUwNTM3NTFlZDg3NmRjMjY0YjQ4Zjg1M2RlYjlhNjA2MmM2MyBsZWdhY3ktdHJ1bmsKKzYwMTYwIGRmZmYwNDE3NTNhYTE4ZTA2MDU5NDY3OGYwNDU4MTJhNGY4YzY2ZTEgcmVsZWFzZTI1LW1haW50Cis2MDE2MSAyN2RhYzE2NTQxZDkwOTA4NjQyNDJlNDVkMDU1MTdjNjZjZTFkMDllIGxlZ2FjeS10cnVuaworNjAxNjIgZDk2MjE0MDU0MDZiZGVkNTU5NGZmYjk2YTczYjJiNGRmMGUzOTg2YSBsZWdhY3ktdHJ1bmsKKzYwMTYzIGE2YjE5MGIwY2YwNjhlN2QyNGNjNzNkZGIxNzM4NWU5N2M5YjgwYjEgbGVnYWN5LXRydW5rCis2MDE2NCA0MzJjNGFlMGZkMDQ2ZmU5M2Y0NTNhMTExOThhYzAzMWJlODkzZmU4IGxlZ2FjeS10cnVuaworNjAxNjUgMzI0MTJmY2ViMWIzNGFkNjM0MmFmNzExNWRmZTUxYmY1ZjBiNDZhZiBsZWdhY3ktdHJ1bmsKKzYwMTY2IDcyOTQ5NWY3YjIyMWE0NWUwOGVlODZkMTExMjY0NGUyYmVhZjI3ZDMgbGVnYWN5LXRydW5rCis2MDE2NyBjNjlhN2I1NWFkNmJmZmE1OWZkZjE3MmQ2ZDVmOWE4OGVmNzAzOWY1IGxlZ2FjeS10cnVuaworNjAxNjggOGE5YjNiMGJlNTczOWFhZTk2MmQ4MmQ1MGMyMDNmY2ZjY2FjMDBmZiBsZWdhY3ktdHJ1bmsKKzYwMTY5IDFiZTRiYmQ4MzRhMTRjZDJmYWI1YTA2MGRjNjMxMWI0MTIzM2QwOTIgcmVsZWFzZTI1LW1haW50Cis2MDE3MCA3YzU0ZjRhMmQ0Mzg0ZWNkYTIyNGZkMWUwMzExMGU1MmRkYzZlNzY5IGxlZ2FjeS10cnVuaworNjAxNzEgMGI0MWE5MWNkMjYxYTM1MjdiOGY4ZTFmNTQxMmQ1ZWEwNjY1M2JjYiByZWxlYXNlMjUtbWFpbnQKKzYwMTcyIGRmMjJlNjE4MGU2N2FjOTM1ODhiZjY0YTgxNWE1NDM3YzNmNjIyYzUgbGVnYWN5LXRydW5rCis2MDE3MyAyOTY0M2ZiZTExNTA3MDZhNDkyYTNjYTllODZiNTcwMDUwODE5ZDdiIGxlZ2FjeS10cnVuaworNjAxNzUgYjc2Yzc4Y2RhM2FiZmUxZDcyNzViMGJjN2NhNGU2ZTIyMjI0MTdlNyBsZWdhY3ktdHJ1bmsKKzYwMTc2IGZlYmE1ZDVjYWMyMjFmMGJkOTEzZmQ5NmVkMzI4NTI1Nzk2NWEyMjQgcHkzaworNjAxNzggYzNkOWU1N2U3MWYyYzIzNDAxOTNkNjJkMGI1YTVhMDQ4NTgzZGNjZSBsZWdhY3ktdHJ1bmsKKzYwMTc5IDViZWE0NTkyY2Q3YTFiNzBlMDdkODk1ZDhkOGMwYTIzZjY4NGU0NTEgbGVnYWN5LXRydW5rCis2MDE4MCAxMDFkODZhMWFmODU4OGZkYjRhYTQ2ODgxZmQxMzdiMmMzZWQyYTYzIGxlZ2FjeS10cnVuaworNjAxODEgZWI0YjUwZjczOWY2ZTFhNWQ5YTRlZDQyYThmMDY0YWY2YTM4YmFmYiBsZWdhY3ktdHJ1bmsKKzYwMTgyIDMxMDdmZGI5MDgxZTU4NGVlNjdiNWE1YTFmOGY5YWZkOTM1M2M1MGMgbGVnYWN5LXRydW5rCis2MDE4MyA4MTAzZjAxOTg5NjdjOTY1Mzc2ODEzZGIxMzg2YTZmYzhmMTZmNTRkIHJlbGVhc2UyNS1tYWludAorNjAxODYgNzExYWUwZTk5YzAyN2Q1ZTdmODVkMmQ5ZjM4YjcxZjU4ZTMyODhhNyByZWxlYXNlMjUtbWFpbnQKKzYwMTg3IGVhNjFlOWVkZDk3OTliOGE1NjNkYjlkZWI5ODk2ZmM4OWRkN2VmNTMgbGVnYWN5LXRydW5rCis2MDE4OCA3ZjJiNTI1ZjlkZjQ4YzdlODA3NTNlOTIyMTE4MDgwOWI2YjFiYmNlIGxlZ2FjeS10cnVuaworNjAxODkgYjVlODA5ZjkyNmRlMTg3ZWMxZmE4NDk5OWU1MWNmNjQ5ZTlmOGI0MSBsZWdhY3ktdHJ1bmsKKzYwMTkwIGZlN2Q0MjM0NzRkZWFkOWI2ZDMyZjc5NWVhNjhmOWI1ZmNlZmJhNzMgbGVnYWN5LXRydW5rCis2MDE5MSBmZmFjYjQ0NjczZWFiNzZkOTNhOWIzMmU4ZDRhYzI4NjRlZWIyMDE2IHJlbGVhc2UyNS1tYWludAorNjAxOTMgMTJiNjkxMDExNWUwZmYyODc0ZTlkOTAwYjc0NzYyNTZhZmZjNGUzZiBsZWdhY3ktdHJ1bmsKKzYwMTk0IDlkOGM4Nzc4ODljM2FkMGI1ZmFkMzhmOGU0NjBhNjE2YjFkN2M2YjQgcmVsZWFzZTI1LW1haW50Cis2MDE5NSAwMGE2ODU5NmU1MDY1MGQ0MWQ4MzQzZTA3MmU5ZjcwNGUyZDJmZGQxIHRydW5rLW1hdGgKKzYwMTk2IGUwNTA0YTFjNWY5ZDcyZDcxNDRiMmI1N2Y0OTdkYjdhNTU2YWIyZGIgdHJ1bmstbWF0aAorNjAxOTcgZTQzYzJhYjZhNTdjNzY5NWU4OGE3NGI1OTU3MDUxNzFlYzFhMzBiMyB0cnVuay1tYXRoCis2MDE5OCAwOTE4MDYzODFjZjhkNmMxNTEyYmI4MDhhN2FkMDUwNDhmYWJjNjI2IGxlZ2FjeS10cnVuaworNjAxOTkgYzNjZTU2YzdlY2QxMWJhZDE1NWU3YzJhYTkzMDUzZjdmNDExZjljYSBsZWdhY3ktdHJ1bmsKKzYwMjAxIDdjYTA3ZmUwMjk1OGQxMzhiNTczMTAzN2ZiYTc5YjkwYjMxOTI5NjAgbGVnYWN5LXRydW5rCis2MDIwMiBiYjdlZTNkODljMmY2MDc2ODM5MDRhNTUzZTNkOWNiZDhjYmI1ZjhmIGxlZ2FjeS10cnVuaworNjAyMDMgNTZmMGZiYWViNjdmZGZjOGU0YjY3MGExN2MxNGYxYjhjMDE0ZmJiYSBsZWdhY3ktdHJ1bmsKKzYwMjA0IDg2N2MwYWFkNzljMTZhNzFlZWIxNTcyMmY3MGFkNTZhMjQ3NmE0MDkgbGVnYWN5LXRydW5rCis2MDIwNSBjM2VkNmRhN2ExNDY4NDZjMDNjY2E1ZjU4NzMzNDk1ZmI4MWRhYWU1IGxlZ2FjeS10cnVuaworNjAyMDYgNTI5OGFiYmRkOTFjY2VjNjgzNjdjNjZiNGFmZTdiYzA4MDQ4MDQ5NCBweTNrCis2MDIwNyA2YmQ0ODQ5YjU0NThkZTU1MDBkMzA1MmFkNGJmOWY0ZjAzODEyMjY2IGxlZ2FjeS10cnVuaworNjAyMDggZGY4MGM2YjYwNmE0ODZjZTUwZDk4NmY2Njc0YTcxN2JhOGQ4ODJkOSBsZWdhY3ktdHJ1bmsKKzYwMjA5IGQ2MmMxMjZmZTU2YTJkNjQzMTdiNjc1MzA5ZjJkM2FjZTcwOGYyZWUgcmVsZWFzZTI1LW1haW50Cis2MDIxMCBmZWZhYTBlNjZmZGQwZTM1MTIxM2ZiYWIwOTI5MTQxZWU4YjE4OGQ3IHB5M2sKKzYwMjExIGViNTkxMDA5MmY1OWJiYjc1ZGI2ZjM4MTE1NDExY2JhZjNjYjhlYjEgdHJ1bmstbWF0aAorNjAyMTIgYzRiOThiYzEwYmU3ZTExNjBlNTFiOTY2ZGM5OWY4ZTBlNjFlMjZjNSB0cnVuay1tYXRoCis2MDIxMyAyZTE1MTM3Njk0MWY4YjViYjY5NjViYmI4NzQ1ZGY5NjhjNzZlNmU2IGxlZ2FjeS10cnVuaworNjAyMTQgZGZkMjE3OTNhNWI1NzUxMTY5ZWZlODZjMjBkYmU5Y2E4Y2UyMTZhOSBsZWdhY3ktdHJ1bmsKKzYwMjE1IGRmYjZmMzY3YTQwNmJiYWU5ZTRlOGY2NjY5NDMwNjA2YmUwYjU0YzQgcmVsZWFzZTI1LW1haW50Cis2MDIxNiA5YTEyMTFjNzdlMDI4YjNhYmNiMzgzMGE4YmQyMmQ1ZmJkMjBiZTg1IGxlZ2FjeS10cnVuaworNjAyMTcgNjk1ODJiYjExMTRjMzZiZGZlNDM0MzIxNjczNzFmY2NjNjM0ODM2MyB0cnVuay1tYXRoCis2MDIxOCBhNDAyMjlhZGZhMmNjZDhkNTMxNTk3Yjg4OWQ4ZGIxNjBhZmY3YjVmIHRydW5rLW1hdGgKKzYwMjE5IGIyODU0ZTk3NGNhOTY3MGY2MGJjZGExZGEwYThmNmI2YTFkMDIzMzggdHJ1bmstbWF0aAorNjAyMjAgYmNjYzc2ODJjNmQ0YmE0YTUyZDJkNjRkZmE5MGRkMjdmZjE3YmJhYyBweTNrCis2MDIyMSAwMDU5MjFmY2ZmNDNhZGJjODkzYmNlNzc3NzVmNmNiMjVkY2RkZDE3IGxlZ2FjeS10cnVuaworNjAyMjIgMTQ4Yzg3YTY2N2MyMDFkMDZmMWI3OTIyMmYwNjE2MTdkNTlkMWE2ZiByZWxlYXNlMjUtbWFpbnQKKzYwMjIzIGZkZDc0YmRlZWUxNWJkNDdjMzc3OWJjODU5NWNkNGM5ZWZjNTc2ZDQgcmVsZWFzZTI1LW1haW50Cis2MDIyNCA0YzgzMDhhYzIwY2RkOWRkYzMxYWZiMWRkOWJlMjczMmY2MGNiOGQ3IGxlZ2FjeS10cnVuaworNjAyMjUgYjkzNGQyZWU2M2Y2MzliZGM1YmNiOWU2MTYyZTY2ZmU3OWU5Y2MwYyBsZWdhY3ktdHJ1bmsKKzYwMjI2IDczMzMzNWIyMmY4ZmQ3OGEzMGZhMjRiNTM3OGM5NjZkZDIzMDdkYmMgbGVnYWN5LXRydW5rCis2MDIyNyBkOWE2MDc1MjU1OGVmN2Q4NGQyOTI0MGUxMjBlOTkxMTQzOTU0Njc3IGxlZ2FjeS10cnVuaworNjAyMjggOTVhNDg3MzUxNzQwODBhZTU3ODIyN2E1ZjcwMDdlNDZhOGE2MDlmZCBsZWdhY3ktdHJ1bmsKKzYwMjI5IGNkYzRhZWNlZGQ0Yzg1Y2VmNjg0ZTAxZTI4MWRlYjNhZTA0Y2ZmZDUgbGVnYWN5LXRydW5rCis2MDIzMCBjYzczYThkMTkzOGI0MmVjNGI5ZmU3MWRkMmRkMGE1OGY5YjMyMjBkIGxlZ2FjeS10cnVuaworNjAyMzEgMDEyZjUxNmQ0ZDIyZjM4ZWJlMDI5ZTM5ZWUyMTYwNTE4ZTg2NmQxZCBsZWdhY3ktdHJ1bmsKKzYwMjMyIGZlZDhjMzZkODcxNTBjMzcwMTJkM2NlMzAyNDI1MGNjZjlhYTlmMmMgbGVnYWN5LXRydW5rCis2MDIzMyAyMmE5ZDk3NTdhMTY5N2I3OTIzY2UzNzk4NTNhMTgwOTQzMTg5MjU5IGxlZ2FjeS10cnVuaworNjAyMzQgMDYzZWQzNzdmZDNkNjJmNGYxMzU3MTQwYWMwMDYxNDNhZTc1ZGZiNiBsZWdhY3ktdHJ1bmsKKzYwMjM1IGMwZjA0ODM1NmMzNmM4OTAyZTFhMjg2MmZkNTU2MzljYzQ4ZDRiNDAgcHkzaworNjAyMzYgZTIyYTkyZWVjNjYyMDA2Nzc1Y2JjZjlhY2U2OTIwZGY4NTQ4MjMzYiBweTNrCis2MDIzNyBmM2E5YWQ0NDhjY2FkMTllYjM3MjVmMGQ5MmEyNzQ0MTVmNTZkMzU2IGxlZ2FjeS10cnVuaworNjAyMzggNDM3MTcyMDkzYTIzYTI0MjEwNmEzMDhhYjNhYWFmZDNkZDU3ZGI4NSBsZWdhY3ktdHJ1bmsKKzYwMjM5IGNiYTMwODRiMjdlNzI2OTA2NDk0M2M3YWQyYzk3N2NjNDVlZTFiOGEgbGVnYWN5LXRydW5rCis2MDI0MCA5OTlhNWVlOWNkMmMzYTFmNzUxMDE1OWY1NDlmZTJjYjg2ZTc4YzFlIGxlZ2FjeS10cnVuaworNjAyNDEgOTQ4YmJhMGUyNDdiODk1OTI5YWMyY2RhNWIzZGMzYjJhNDJiZTUzZCByZWxlYXNlMjUtbWFpbnQKKzYwMjQyIGQ4YWIzMjgyMGIxN2RiNWJhYzE2NjExZTY0YWRjYzdhNWViYjdiZDIgcmVsZWFzZTI1LW1haW50Cis2MDI0MyBmMmRhN2ZjZjNhMjQ0YTIwOTBkZmM5MzQ5OGFkYTM0ZGRkY2Y1ZDkyIGxlZ2FjeS10cnVuaworNjAyNDQgN2ZhM2FlOWJhMDMxZGFmNjg5YTI2MmE0NDkyMDVlMDk2MDE5YjUxNiB0cnVuay1tYXRoCis2MDI0NSBjMzNmMjc3OWE5Mzg2MDRjMjkxZmNjYzMxMDI0ZDIwYjIwYzU1MTJhIHB5M2sKKzYwMjQ2IGViYmI3YmIwMDMzYmMzNGM4N2QyNmMyN2E4NWYwYmY1ODhmNDI5MzQgbGVnYWN5LXRydW5rCis2MDI0NyBkYjYyNGIxYmEwNmRlOWI1Yzg5N2FmNTYyMDM0YjU0OThlNTY2MWNkIHJlbGVhc2UyNS1tYWludAorNjAyNDggMjlmZjkwNjZkZDBjODNkZGY0NTBiN2I0ZjA2MjZlMGFjZDc0ZGFmMSBsZWdhY3ktdHJ1bmsKKzYwMjQ5IDY4NWU5NmQyMDg4MWJhZDZkYjM0NGU1YTE0ZjAxNDcwNjZjZWE4ZTUgbGVnYWN5LXRydW5rCis2MDI1MCA4YmQ1ZjBkYjdmNWQxMDcwYTJkNGMwMDRjMDQ4YmQxNDYwNzdiZTk5IGxlZ2FjeS10cnVuaworNjAyNTEgYThiNzUwMjEwYjc5OTA5MWU4YjMyODAzMGI2OTE2YTZhMjRkMjg4NSByZWxlYXNlMjUtbWFpbnQKKzYwMjUyIDZlZjNiZTQ3YTQ0ZTdlNDZjMWZhMWYwY2YzMmM3ZjAxODNiMjcyZGMgbGVnYWN5LXRydW5rCis2MDI1MyBkMTZkZTYyNTJmN2ZhNDM4ZWY0ZjY0YWY3OGYzZGI1Zjg0NzFmMmJiIGxlZ2FjeS10cnVuaworNjAyNTQgZThlZmE2MmVlYzE1N2QwZjI1ZDg3ZmJiNTZlZGQxMzM2YmNiYWFmNiBsZWdhY3ktdHJ1bmsKKzYwMjU1IGE4Yzc0MTI1Mzc2ZDY1MTk0NDZmNTk0NzEyZWRhNDUxMzcwMTdlNTYgbGVnYWN5LXRydW5rCis2MDI1NiBmNGE2YzMyMzUwMGJlZTA1NTIwNmRhMDEzZmRhNjUxZjJjZWUxZWQ4IGxlZ2FjeS10cnVuaworNjAyNjEgYTZmMGU0YmZjMmRkNzBmZWI0MmI4YzhiMjVmMDFhMDg3OWQ1OTIzMyBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI2MiA3ZTNhZmU5MDY0NDk1YjJiMGZlYjhhYTVlNGU1YTdjZjIzMmYwMmMxIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjYzIDNmNjFiNjY0M2I3ZWVhMWRkYTU3YTc3NzUzN2QzNWE2M2YxYWYyNmYgbGVnYWN5LXRydW5rCis2MDI2NCA3NTdhN2YzMWU0NjA5MmMwOGM0NmRkZDg3MDQyNjhmMDc0ZTJiZWRmIGxlZ2FjeS10cnVuaworNjAyNjUgNjljNTcwM2QyMGZiNDEwOTM0YTFlMzBkOWNiNjNmZWJjM2RhNjAyNSBsZWdhY3ktdHJ1bmsKKzYwMjY2IGViZGJlOGRmNjJiMDM5ODUzNGU5MzU1MWNiNTg3MTBhZjY3ZTU3YWUgbGVnYWN5LXRydW5rCis2MDI2NyA0MjY4Yjc3ZjhlNTY3ZDBjMDM2YjMzNTg1MGY0NDAxMTg0NjQ2ZmJmIHB5M2sKKzYwMjY4IDc0MmEyNjRjY2U0ZmFiMzc4MmY3MTEzODk4OTcwNGRiODc3ZmRlMDkgcmVsZWFzZTI1LW1haW50Cis2MDI2OSBjZTE1OWQwMWVlMzIyYTc3MWFjNzM1NmZjMTMxMGUwYmQ0NzQ0YjJjIGxlZ2FjeS10cnVuaworNjAyNzAgNmRhMGVlYTM2NzgzYTkzMDg5MWUzYmFjNzhiMTQ0ZWZkNDQ0YjlmZSBsZWdhY3ktdHJ1bmsKKzYwMjcxIDNiZDE5YzhhZjJiMTFkMWYxM2NkMTA1MDUzZjIwZGJmNmViNDI4MWMgbGVnYWN5LXRydW5rCis2MDI3MiBmYWU1NDU5MWMwMzU2NTg2MTE3NTY2ZmMyNjYxNGU3MmU2MmVhNTVlIGxlZ2FjeS10cnVuaworNjAyNzMgODQ0MjAzMjA5ZmIwNmVjYmU4NTM0YWU1OWFjMmFjMWI4MTU0MGNkZCBsZWdhY3ktdHJ1bmsKKzYwMjc0IDU0NTU4ZTAyOWMyZGE0MjBjNWNhNmYyZDFjZmJjZDljZGMwMjEzZTIgbGVnYWN5LXRydW5rCis2MDI3NSA5MzRhNTlkNTI1NDMxNGQzNzNmZGNjM2NhMjg5YzY3YjdlZjE4NjExIHJlbGVhc2UyNS1tYWludAorNjAyNzYgOTk3MmNjY2Y2YTMzZjQ0OWE1OTg5MjVkNzc4MzM3YjcxMjVhMzg0YiBsZWdhY3ktdHJ1bmsKKzYwMjc3IDEyMDk5MTQzNzI0ZjM0Y2NjZDlhNjJhZjBjZjhhMjE1YjFkZmIxZjQgbGVnYWN5LXRydW5rCis2MDI3OCAwOGViMWM0MTExMTM5MWRiYjFjZGYxZjYzZTNiZjc3ZjFjOGExNThhIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjc5IDUzZTdiY2ZiNTRhNDVmNWZkMWNiMTZlMjUzYWY0MzVjMjdiZWJhMzIgcHkzaworNjAyODAgYWE4Mzg5NThlNTRhYjEzODhlNGQ5Y2Q4NzM5OTY3NDg1MjNjZDE0YSBweTNrCis2MDI4MSA2NTQ3YmUxMWY0NDM4NWZjODBmMzBmOWYzMTdjMmM2Njc0NGU0NTc4IHB5M2sKKzYwMjgyIDhiY2E4ZWIzNmUzN2Y1MTg5ZDA5NTM3MWJlN2VhZmRkOTMxMmYxYTggcHkzaworNjAyODMgYmJjNzE5YThiNThiZjZkOWM0YjdhMWZlMzNkY2EwNTgwY2U0Y2MwOSBsZWdhY3ktdHJ1bmsKKzYwMjg0IDA1ZjAxZGQ3NThhMWJkZmZkOWZjMzA3YTg5YzQ2NDllYjU5YjYzNzIgcHkzaworNjAyODUgM2E0NDJhMDA5YTgzZTU4Njg2OGQ0NmEwYjljMDkwZTkzZmMzOTc3OCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI4NiA4ZTQzNWJkZDRiYzg5NjZhYTM5YWVlZDE5YTA2NzRiNjVlMDA3ODM5IGxlZ2FjeS10cnVuaworNjAyODcgMWJlOTNkZDE3OWRmN2E5MDJjNDliNDZjNDM4YTkxNjQ0ZTU4NDU1MiBsZWdhY3ktdHJ1bmsKKzYwMjg4IGRjY2VhZWZhNjdmZDhlNTgyZTVjZTE0ZTk2YWRkNDEwNWVlMDVkMGUgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyODkgMjdkMjI3YTg3YTczN2JiZDExMmY1ZWY5OGYxYWY0M2MxNThhYTBlYiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MCBlZjQyYmQ3ZmNiYzgzZTM5MDJkODNhMWQwZDAwZTRiY2NlYzc1MjE4IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjkxIGRkYjFlNDk5YTAxZjgxNjNkZTEzM2FlZjk3NzI2Yjk4OGUwYzgyYmEgbGVnYWN5LXRydW5rCis2MDI5MiAzYzU3YTUxZjczOTRmODc1MzI4ZDM5NzBlMDkzNDk5MzY3MTVlMmI4IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjkzIGQ4ZTg4MzU4ZjZjMjQwODI4Yjk2Y2M2YzMyNTEzODYxNjZiMGY2OWUgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTQgNDI0NDlmNjgyODg1YmEwNmVmN2Y1YTBmZDNjY2JkODY5NWQ0ZDgyNyByZWxlYXNlMjUtbWFpbnQKKzYwMjk1IDU5NTBkOGRlODEzNGI1NDllZjgyYWE2OTExZTMwZjc5ZGMzOWRkMGMgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTYgYjU0NzQ2ZTJhODgwYmQzNThhYmRkNDA5NDVmNDVmNzQ5NjUzMzMwZiBsZWdhY3ktdHJ1bmsKKzYwMjk3IDk0NjdlYTIwMDQ2YzMxZDhjZDdiNzUwNWUxNDFhNDBhODQ1MDUwOTEgcmVsZWFzZTI1LW1haW50Cis2MDI5OCAxZjRiMWJhYmI5ZTA3YjFjM2RhNWZlN2IyMjY2YTI0YWYwODA2ODVlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk5IGVhMWQ0N2M3YTQ2NzQ3YjE1YTNjMDY3NTljYWVkNTdiNjIwOTFmZmYgcHkzay1jdHlwZXMtcGVwMzExOAorNjAzMDAgODkxMDUwYTZhNWM5MDE3Mjc3NGZlYzNlM2JlY2ViYzk3YzkyN2U3NCByZWxlYXNlMjUtbWFpbnQKKzYwMzAxIGZiNjhlNDQ1ODdlYTI1OWQ1MjIwMjBhZWYxNGZjMzY5M2E4OGIxN2YgbGVnYWN5LXRydW5rCis2MDMwMiA5NmY1ZGNiNDgwYTYwMmY5ZGU1M2NkOWQyM2VlMzdmNjQ4MGU2MWU5IHB5M2sKKzYwMzAzIDg1MTAzMDE2MmQ3MjgzNGYwOGFlYjkzMGI1YmE0NGE4OTdlMjYzNGQgbGVnYWN5LXRydW5rCis2MDMwNSA2NjZjZWI2Nzk5YTc4MTU3MWU1ZGQzOTg5NjkyYzBkY2FmMmU0ZWI5IGxlZ2FjeS10cnVuaworNjAzMDYgNmFlMjIwMzBlMTUyNTc2ZWY2OGM2YTBhMmIxMzliNDNhZjk4NWIzYSBsZWdhY3ktdHJ1bmsKKzYwMzA3IGQzNDdjMWY5YzM4YWQ2NThiOWE3YWNjN2MyYzdkZjgwOTU3MDdjZDcgbGVnYWN5LXRydW5rCis2MDMwOCBjNmU1YzYwNGVhNjFkZWUyY2EyYTZlYWMyYjNjN2NjZTcyZTYyY2RhIGxlZ2FjeS10cnVuaworNjAzMDkgYmU0NGZhZWQ1NDJkN2ZkMDhmNjFlNDhlMmU0YTQzNTcyNWIzZTdiNSBsZWdhY3ktdHJ1bmsKKzYwMzEwIDBmMDkzZThiMmY1MzFiNGIxNGZlYzliNTRjNDFiOGNhOTI5MGM0ZWUgbGVnYWN5LXRydW5rCis2MDMxMSAzMDdkNDEwOWUyM2VhNWZkZWEwYWMyYjQzM2FkNTg5NGFjYzY2MjZkIGxlZ2FjeS10cnVuaworNjAzMTIgMzEyNGNjNWI5NzNmMTdjNDg5NzA3ZjkwODM5OTFmMWQ1Y2I2MjA4MyBsZWdhY3ktdHJ1bmsKKzYwMzEzIGI3MDQ4NTAxMTIxNDUzOGYzZThjMTM3MGE4NGE3YzhlZDZhNDJlNDAgcHkzaworNjAzMTQgMzdkNzYyOTc1YTk1M2RlMWNjNmU1OGUwZTcxOTFhODA4OWExMTZjMCBsZWdhY3ktdHJ1bmsKKzYwMzE1IDIyMWRlYzAzZTI2MTI1N2JiNDc2N2IzNzMzNmU5MjExYWNmOGFlYTEgcHkzaworNjAzMTYgYWVkYjdhYzI2MjdlZTQyNTFmM2ZkNmFiYjgxNTA2YzAwODQ4OWFkNyBsZWdhY3ktdHJ1bmsKKzYwMzE3IDQ3YmIzMWQwNjU3NzJkMTAwN2E1NGFiNWExZDZjY2VmZGQ2MWY2NjUgbGVnYWN5LXRydW5rCis2MDMxOCA2NGQxM2Y0NTZkMDZiYWNmM2U5MDM0MDllZTQyMTQ3ZGFhMjIyN2FlIHB5M2sKKzYwMzE5IDg0MzE2MTdmMjBlMmE5NWFiZDYxODk5M2Y4ZGYyNDVlMjg4Y2YzNGMgbGVnYWN5LXRydW5rCis2MDMyMCBhYWI1YzhlOGYzOGRjMDMzOWQyMzA4YWViNTVhYmZlMGUxNjg2OWJiIGxlZ2FjeS10cnVuaworNjAzMjEgYWFhNWE3OTRmODg3ZTIxZDFjZmI2NGFmNzlhMzlkNTIxNzQ1MjFkZSBsZWdhY3ktdHJ1bmsKKzYwMzIyIDVlMGI0NjBmMjk0YTVjN2NjMWUxYWRjODFhZDc0NzJlNDE1YTJjYTAgbGVnYWN5LXRydW5rCis2MDMyMyBhNzUwYTI2YjVmYWRhNjJlNmEwZWQ5OWE5NmJiZGUyMDQzZjkyMmUzIHJlbGVhc2UyNS1tYWludAorNjAzMjQgNTFiYjdiMWFlNzY1OTEwNTg4MzZmMTY4N2JiMDNmOWZlZGIwNDY5ZiBsZWdhY3ktdHJ1bmsKKzYwMzI1IGRmMjNkNTI0OTU1MGQ3Zjc4ODg3ZmViMDc2ZTYyNzVmMGY2ZGQ3YTkgbGVnYWN5LXRydW5rCis2MDMyNiA2OTliMzcxNzBjYWRjNmIwMTk0Y2ZhNGMzNjNmZjVmNTlkMTYwMGNiIGxlZ2FjeS10cnVuaworNjAzMjcgY2I1ODM5ZDEzMjI2MTZhMDE0OTc4ODM3OGEyZDg2ZTRmZmNjNTkyNyBsZWdhY3ktdHJ1bmsKKzYwMzI4IDhjYmNhOTFlMzE1NDk3MGJiNDc1NmQyOGYyNWFlZThkNDE5YTk2YmQgcHkzaworNjAzMjkgZmJiOWFlOWE1MTRmZWJhOTBjYWM3MjliYjNjZDk5MjdkNTRkMjMzMiBsZWdhY3ktdHJ1bmsKKzYwMzMwIDVkNzgyYzhkNDAxNjY4Y2I5M2Q2MTljNGQ4NDY5NzE2N2Q0NTAzMWEgbGVnYWN5LXRydW5rCis2MDMzMSBkY2EzZjY0NmU4YTFmYjU5ZmYyOGFjNjY3OGI0MTk0MmFmZWYwNGY5IGxlZ2FjeS10cnVuaworNjAzMzIgZjNiNTg0ODQzZjlmYmRjOWM1NGFiNTE0NTZlNmZjN2UwNzRkYTBmYyBweTNrCis2MDMzMyA5NjJjNDkxZTE3ZDZjYThjNjgwM2IwMmQwYTI3MWQwN2RlYWI5MjQwIHB5M2sKKzYwMzM0IDVmOTg0NDZlMGYxYmI3Yjc1NjI0YmM1NzAyOTVlNWJmMWZhNGRjMDAgbGVnYWN5LXRydW5rCis2MDMzNSA1MGYyZDdiZGFiYzlhNDZjNzA5YzExODZiMTFiY2NiMTM3ODM1NmM1IGxlZ2FjeS10cnVuaworNjAzMzYgOTA5MzkwOGEwY2Y1ZDRjMmNmNjdkNjNmOWEyNmE5OWE5ZDg1ODk5MiByZWxlYXNlMjUtbWFpbnQKKzYwMzM3IGUzMzYyNTg5NTU1MDI2MTdiNTgzMjljN2ZhMDcwYjRlNzc5MjE1ZDAgcmVsZWFzZTI1LW1haW50Cis2MDMzOCA1YjE3YjQ0YmUxYmY4NzhkNjkxZWVjZjlmMzJjOTZlOGU0MmJjZGI1IGxlZ2FjeS10cnVuaworNjAzMzkgNjM1YTc1NjM2MGYxOGM5YTExNWNjYmUyNTY0YTc2MzZkY2M2MTI0NCB0cnVuay1tYXRoCis2MDM0MCA3MmE2NzI3YmVkOWM5ZTE0ZjNlNTU0NjAzYWRhNzQyMjkwY2U4OGFlIHRydW5rLW1hdGgKKzYwMzQxIDZhZGJkNjJiOWFiZmEwZTMwYjU5N2Q3Y2UxMTBkOWUxMjQzYjZiZWEgdHJ1bmstbWF0aAorNjAzNDIgMmNhMmIwODQwYjM1ZDM4NDVkODBiZDc3ODYzNWEwNjVkMzY2YTY0OSBsZWdhY3ktdHJ1bmsKKzYwMzQzIDIwYmY5NDI4NWVlZmU4Njg2NWMxNDQ5MmZjMGRmZjA3N2MwZjM1MWUgcmVsZWFzZTI1LW1haW50Cis2MDM0NCA0ZGQwZmNmM2RhZjczZTI2ZjAzYzJiOGI3ZWQxMTg4ZTE2OTExNTgxIGxlZ2FjeS10cnVuaworNjAzNDUgZmY1OGIzMGE4ZDUyODcxZDZjZjA1NDJjZjdlYTFhNzA0ZDhhMTRlYiBsZWdhY3ktdHJ1bmsKKzYwMzQ2IDZiYmY2ZmRjMTUyYjllNDJlZGJmMTFhNjA1YzIxNjIzMTk5ODFlNjIgbGVnYWN5LXRydW5rCis2MDM0NyA0NjdjNzFmMzY1ZmRlYjRmNjk4ZWM0NzIxMzRhYjg0YjcxOTg0ZmNkIGxlZ2FjeS10cnVuaworNjAzNDggZjAxODEzYjMzY2E0YmNkZmI0Y2UxMzU1ZTdkM2IxZWEwOTg4ZWEwOCBsZWdhY3ktdHJ1bmsKKzYwMzQ5IDYyZjBiYTc0NTM1N2YwNTliZWM2ZGRkM2E0MjU3YjI4MjhmYWM3Y2IgbGVnYWN5LXRydW5rCis2MDM1MCA3YzAyMTgyZTI5NzlhMjJlZTc1OGNhMDJmMjVmODgyYjJiODQwZDQ4IHB5M2sKKzYwMzUxIDliNzRjOWM4YjkyYzc5ZmJmOTA0ZjQ2NzZlNzNjZGE4ZGMzNmYwZDcgcHkzaworNjAzNTIgZjVlNTJhNTNmY2QxNDgzNGY2MzcyYjZjZTFiNmVhZDk4OTEzYjIwOCBweTNrCis2MDM1MyBlZTI0M2NhNjVmNWY1NDY4YmQwOTYzOWM4MDcwNDJmZjNlY2RmNjJlIHB5M2sKKzYwMzU0IGYxNWQzYmY0Y2E1NmExMmQxYjA2YzYyNjFiNTMwZmYxODA0NTdiNGMgcHkzaworNjAzNTUgZTIyNGFkNGI4YjhjYWUzMTZmZGEwNGEyNTk3NTNhZWEyZTZhMDU1NiBsZWdhY3ktdHJ1bmsKKzYwMzU2IDcwN2RkOWYzODRmMzg5NjI0YjIwZjIxMGJhYjliOWI0NzUxMDY4N2MgbGVnYWN5LXRydW5rCis2MDM1NyBmY2ZhMTMxOTllY2JkYTI5ZWQ5NTkxZDUyYWQ3NTg4YzhiYjNhMTc2IGxlZ2FjeS10cnVuaworNjAzNTggMWQ3MWJmNDc1YTg1ZjNhYzY2N2VmN2UzMDUzZGViYWU1MTFkODViZCBsZWdhY3ktdHJ1bmsKKzYwMzU5IDJlNGRkMzliZjY5MDU2MzI2OWY1MTVlNzc0MDYxNDVlMjRmOWE5YzAgbGVnYWN5LXRydW5rCis2MDM2MCA2MDRhYWM0MzM3YTVjNWIxMzRhYTk1YzUxYzZiYmIzNzM0N2U1MTRhIGxlZ2FjeS10cnVuaworNjAzNjEgYzMxNWI2NzI0NWY3ZDU0YjAzMGE1M2UyNGQwNTA0ZDQ3ZGRjY2Y0ZCBsZWdhY3ktdHJ1bmsKKzYwMzYyIGEzZDU3MDBiMWQ1YTNlMDYwNzA3N2I1Y2ZlNDE2NTIyYmUzZjY0YjIgbGVnYWN5LXRydW5rCis2MDM2MyAxZmYyYmI1MTg3ZGZmOTJhNTQyM2ZmYzkxM2NiOWEyZDU3NTkyNDE2IGxlZ2FjeS10cnVuaworNjAzNjQgODVjY2M3YzE1NDI1ZGU4Mjc4YWQ0MzMyOWYyZjJiZjQwOTkxNDkwNyBsZWdhY3ktdHJ1bmsKKzYwMzY1IGIwNjRlMjVmYjg0MjM0MTlmNzc5OWUzZWNhZTM1ZDk1NGY4YjYwY2MgbGVnYWN5LXRydW5rCis2MDM2NiA1NjFjMDY1ZTNmMmQ1ZmU4ZWZhM2M1NjQ5MmUzNWFmMWNlZTU3ZjhlIHB5M2sKKzYwMzY3IDBhNzBmNWIzMGI4YWMxODdhNDc5Nzk0NjVmZTQyZjQyYmExMzJlODAgbGVnYWN5LXRydW5rCis2MDM2OCAyMjk0NWRiY2QwMzAxZjg2NzdiZjQwZTEyODkxOTczNmIwZjExNmMzIHRydW5rLW1hdGgKKzYwMzY5IDQ3MjVjODRiMDQyMjc5Yjk1NjkyZDMyZDE2MTZjZWZmMjBmNWI5YmQgcHkzaworNjAzNzAgZjdkMjM2MGU5NTNkZTdjZTlkNzM5Y2U4MjZjN2ZiYzM0OTAxYmZmOSBsZWdhY3ktdHJ1bmsKKzYwMzcxIGFmYTU5OTMyMjRlNTU2MzA2NGVhYWNjMTNmMDJmOWI2OGViNzY2MmYgcmVsZWFzZTI1LW1haW50Cis2MDM3MiBiZTMxNDBlYzY3YzhmNjMwOGY0ODdhMGIzZTZjYjM0ZjU4NjE5YTQ1IGxlZ2FjeS10cnVuaworNjAzNzMgNzlmNDM5ZDk5ZjhjM2I4YjE5MDY3NTdlZGJjMzEzZDUzZWM1ZDQ5ZCByZWxlYXNlMjUtbWFpbnQKKzYwMzc1IDY5NWU1YmYzYWY5YzA1NjkyMTRmY2NkMzdhZTI1ZjY3MDBkZmNiZWYgbGVnYWN5LXRydW5rCis2MDM3NiA3MjdjYzgxMGQ2OTBiY2U4ODQ2NjQzNzIxZDZjODdmMTExZWQ1YTYxIHB5M2sKKzYwMzc3IGYwNjJkZGE1NDg5NGYyNDBmOThhMDQ4NTRmMDc2MDM0ZDMyNjRkZTEgbGVnYWN5LXRydW5rCis2MDM3OCBlYTNmZTMwMmQzOTIwNjQwZmM2Mjg4NzUwNmI1YTlhNjNmYWYxZGQ0IGxlZ2FjeS10cnVuaworNjAzNzkgZWJmYmFhMTA1MWUyZDBkNzhkNmNkZDIxOWI1NTkwMTE1NWI3OGI4OSBweTNrCis2MDM4MCA1MjMyZjA3ZDljOGUzZGIzODkyNDg0YjI3ZjFmZWNlMjdlN2FiNGFiIHJlbGVhc2UyNS1tYWludAorNjAzODEgMWM5YWMwMGM0NzU4Nzk2MTViYzcxYzFlM2MwMTdjNzkzNzg3NmVkMiBsZWdhY3ktdHJ1bmsKKzYwMzgyIDQzY2FmODE4Y2ZmMDcyOTFjMjg1MzdmNmQ0MWM3ZGZlYWY0OTdiZTggdHJ1bmstbWF0aAorNjAzODMgZWYyZDNiZjgzODNkY2JiMjU2ZTdhN2E4NmE0NzI3NzYwZDI0ZjI1MyBweTNrCis2MDM4NCBmMDdlNmYzMjk3NTUzZTdjNTg0YTgzYzdmZTc0MDVmZDU1ODEzOTVlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzg1IGU2MTRkMjQ4YmRkMTAxNTdiZmY3N2U0YjUwZGM1Y2QzODk1NjViN2UgcHkzay1jdHlwZXMtcGVwMzExOAorNjAzODcgNTgzYWNlMTJjNWNmMTMxYzBlNDY5YWFmZjFmNDFmMzdhYzlmY2E5NSByZWxlYXNlMjUtbWFpbnQKKzYwMzg4IDE1ZjViNzMxZTAwYjM4MTVhMzZhMmJiZDgxZWQ2ZGY1MzY0MGVkZjAgbGVnYWN5LXRydW5rCis2MDM5MCBhMjhkMGIxNGI3N2RlZWY0NWMzYTdiOGEwZjU0ZmRmYzNkYjA5ZWIxIHB5M2sKKzYwMzkxIDJjM2Q0OTdlYmZkNmRiYWFmYzI3ODA2NGFkYTNmNjZjZjViOGZiNTYgdHJ1bmstbWF0aAorNjAzOTIgOTRmMThjMmRlYWE1ZGFhYmUyYjIyMWRhZjVmZTI3NmI1OGIzNjliMSB0cnVuay1tYXRoCis2MDM5MyAwZGEyZWY5ZmVkYzAzMmYwOTdiYWU2YWYwNDVkMDZmYjg3MTJiY2MwIHRydW5rLW1hdGgKKzYwMzk0IDZhYzdkMmU5YTNiYzQwMjUwNzEyODhiMmY2NzJkY2JjMDYwNjNlNWUgcHkzaworNjAzOTYgYWI2NzI2MDczN2IxYzg2ZTEzMWRhZTUzYTZlNzBkNjcyN2U5NGYzYiBweTNrCis2MDM5NyAxNWU4YjM0MjU0ZWNmYjVmNzg4NTFjM2Q2ZDQzZDRiN2Y1MDFjYTIyIGxlZ2FjeS10cnVuaworNjAzOTggMWU1ODNlYjcxYjNmYjM2MTk3OTg5OGJjNjc4OTQwYjUyYTFlY2YwNCBsZWdhY3ktdHJ1bmsKKzYwMzk5IDc3ZDA1MmNlMWY0YzdjNWQzNTA0YzdjMTk5ZTRiZWZlNWQxMmIyZmYgbGVnYWN5LXRydW5rCis2MDQwMCA3NTY0MTNjMGZmMWQ5YWE4N2U0NTExOTFjYTYzYzFkZTgzYmFiNWE3IGxlZ2FjeS10cnVuaworNjA0MDEgN2E2YTgwZTg0YThhMDA2ZTQ2OTdmM2UyMzAyODQ1NjgxZTg1NjE5NiBsZWdhY3ktdHJ1bmsKKzYwNDAyIGRjNDZhNjdhN2I3YjcwZDAxMTdiM2Y1M2YyOTEyMzkzYjA2ZjRjY2QgdHJ1bmstbWF0aAorNjA0MDMgYmQyNDZmMzM2ODdmNzU3NWM0OWQ2ZTAzM2RkMTdjMjIwYWJhOGUxYyBsZWdhY3ktdHJ1bmsKKzYwNDA0IDU0NjczZjcyNDEwNmViMWZlNmUxZmQ4MzA4NDUxY2QyZjIwOTFmMTQgdHJ1bmstbWF0aAorNjA0MDUgZWZlYTQyMTdhOTU0MzNjZTMwY2RhM2RjNGE4MmExNTU0OTRjNjExMCBsZWdhY3ktdHJ1bmsKKzYwNDA2IDQxOGFkMTU5ZmU4NDNlZTQ3NzEwY2UxNTY1MDUzNGE0ZDQ3ZjkyMmMgbGVnYWN5LXRydW5rCis2MDQwNyBjYzIyZDNmMTJiMTM3ZjcyODNmOWRmNzBjOWM1NzI1MjgwYTQ1NDAyIGxlZ2FjeS10cnVuaworNjA0MDggYzNiMzhhODU5ODlmYzc2NTIzMjJmMTQzZWJlMzkwMGFjNmUzN2IxMiBweTNrCis2MDQwOSA4NjA5NGM0NjdlYWZiMTQ4MGNlYTMxOGZhMDdmYmFmODFiMjVmYzZmIHRydW5rLW1hdGgKKzYwNDE0IGU5ZDNkNTYxZGJkMWFmMjk5ZWNkNTBiZTkyZGU3ZmU1ZmMxMGIyYmIgdHJ1bmstbWF0aAorNjA0MTUgM2Y5ZmUyNzE1NTNmMTZkNjExNmM5ZTNiYTMxODBlNjM2YWE0NTE0YiB0cnVuay1tYXRoCis2MDQxNiAzMDNjZWYwNjNjMzUyMGVhNmQ1NWY0ZTI0ZWMwNWM1NjNlMWJkOTJjIHRydW5rLW1hdGgKKzYwNDE3IGI5YmRjNmE5OGJlYTIyODhiNGQzYWJjMDNhODMzNzdkNDQyMmI2OWMgdHJ1bmstbWF0aAorNjA0MTggZWRkMzY3YzIyYzhmY2M0NDkzODY2MTI4YWNmODQxNjU3YjdiMzA1NiB0cnVuay1tYXRoCis2MDQxOSAzZWJhYWUzNDFjMWIxMjNlNWQ5ZTU0M2Q1NjlmMWQ0ZWFhMTQwNGE1IHRydW5rLW1hdGgKKzYwNDIwIDNiNGYwYzVlY2Y1M2ZkNjJjODIxNzViZjg5MzZhYWNkMTQ3MTYxOGUgdHJ1bmstbWF0aAorNjA0MjEgMjlkNjE1ZGQxZDk3MDU1ZjlkYTUyY2U0MDUwZWQ0ZWU3NGJjMTExYiB0cnVuay1tYXRoCis2MDQyMiBiMzcyYzM1NGEyOGMxNzQ3NTJlMDYxNGIwYWMzMjgyYmY1Y2E0MGM0IHRydW5rLW1hdGgKKzYwNDIzIDUwOWNkZjZkNjQ3OTVlZGZkOTQ5NTA0NGM2ZDUxZTI2M2Y3ZDRlZDMgdHJ1bmstbWF0aAorNjA0MjQgOTI3NzNkN2U2NTNlNGMxZmU0OTc4ODM4ZTEzYjVmNGYwMTEzNjMxYiB0cnVuay1tYXRoCis2MDQyNSBlNzkxYmIwYWRjZGU4MjkwNzE3YjRhZDczMzg1OTMwZmU3NTZhZGYyIGxlZ2FjeS10cnVuaworNjA0MjcgN2FjN2UwODlhMDZmYzlhZDRjZTFhY2FjMTI2MzdlNThiZWUwNzhiMCB0cnVuay1tYXRoCis2MDQyOCA3MTY2ZWQ0OThjNmQzY2JkZTVkMTg1MWNiY2U5ZmUzMmZmMjIzMzZkIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwNDI5IGNkNjViYTIzYTUwZTc2MTBlNDAxMDNmMzQzNWU1ZGExNzZiYjBjZGQgdHJ1bmstbWF0aAorNjA0MzEgOTZkMDI0OTE2NGZjNjUyNmZjZmMyYjdkMzAwYTRlYTkwYWFmNmVhNiBsZWdhY3ktdHJ1bmsKKzYwNDMyIGI3YWE4YmRlN2JjZjcwZjQ4Yzg4ZGZhMDQ2MjZjZWE3NmI1NWUwMTcgbGVnYWN5LXRydW5rCis2MDQzMyAyNTBmMjliYWI2MWIxMmMzNjZhYjMzMDZmNTJiZTQ5Y2ZkZmIzNTAxIGxlZ2FjeS10cnVuaworNjA0MzQgOTBlODZlZTM2ODRiM2MxYjU4ZDZlM2VlYzAyYjAwYjliNmRjMTY3ZSBweTNrCis2MDQzNyBlOTc2NGE2OTU4MDk3YTA0ZDg5M2MyNGY1OWRmY2FmMGVlMGMxODMzIHB5M2sKKzYwNDM4IDYyOTA5ZDJlNTczYjk3NGY3MGQ5Njk4YWFhNmUxYTUyMzNmMTNhYWYgcHkzaworNjA0MzkgZTQzMjM4NzYwYzM4NzM5NmUwNzlkNmU3M2MwZTEyOWY2MTlkMDUzNyBweTNrCis2MDQ0MCAyNjI3ODc5NmQ0ZGExMzE5ZjM5MzgzNzAwZjU0N2NjZDY5OWE4ZGU3IGxlZ2FjeS10cnVuaworNjA0NDEgNTNiOTBmMzFlZmQ2ZTY2YTI4MGE2OTBlNjMwOGQ0ODRlZWIwODk2ZCBsZWdhY3ktdHJ1bmsKKzYwNDQyIDUxMGE0ODI4OWQxZDY4OGQ1MTgxY2JmZDgzZDRhOWViOGZiZDk1MzggcHkzaworNjA0NDMgYzhmY2E5YjVjZDNjMzBkY2NiNWQ0ZGQ3MmZmYWQ0MWUzNWYyOWE1ZiBweTNrCis2MDQ0NCA3NjM4ZDRhZTMxMGMyMWY5ODAwODk2MjAxNWU0NGRlMDQ4MDE4OTAzIHB5M2sKKzYwNDQ1IGJkOGQyMzY5ZjE0MTFiMzUwNmI2NGVjOGUyNTJlMGUxZjgwNzMyNzQgdHJ1bmstbWF0aAorNjA0NDYgNWFiMjM3Yzk2Njk1ZGY3YTBiN2JlOGU2NzdmMzRmMGZlMzMwNjQ2MCB0cnVuay1tYXRoCis2MDQ0NyBhZmQwY2IyNWM3M2UyMTMxODA3YjAxMzAxZDBjNjVlZDM3ZDBlY2FmIHB5M2sKKzYwNDQ4IDk2MzlhNzNhZmE0Nzc2MTRjMGVkMzZkMmE4OTg5Yzc0NWE1MzllZGMgbGVnYWN5LXRydW5rCis2MDQ1MCBjMDVlZTc3YjM5ZjJkYzEwNmRkN2FhZTkxYjkxMjllM2E4MjBmODY0IGxlZ2FjeS10cnVuaworNjA0NTMgYjllZTMxYTI2ZjM4NWQzY2ZhOTRjNWJmOTI0ZmM4NDZlMjUwYmY4OSBweTNrCis2MDQ2MyBiZTA2YjMzOTU3Njg0YzQ0YjA5NTVjZDRmOWQ2ZTdkODgyYzdiNDVmIGxlZ2FjeS10cnVuaworNjA0NjQgN2QwZGY1ZWMzZDJmNGJlN2ViMzY0YWZlM2JkOTUyZDE5MDEyNTA1ZCBsZWdhY3ktdHJ1bmsKKzYwNDY1IGU4NDc2YWVmODU3YzIxYzEwZTkxNTQzZTc5OTkwZDBhM2U2MjUzMjQgcmVsZWFzZTI1LW1haW50Cis2MDQ2NiA3MTk4MzYwM2VhOTk5OTA0MjcyNDUxYmEzMzAyNjE3YzI0YTZkMThjIHB5M2sKKzYwNDY3IDNmMjQ5NmRjOTFkYjNmNjc4Yzc4MjIxNzY3Nzg1YTM3Y2ZiYTlkZjUgcHkzaworNjA0NjggODkzMGZmMjMwZWU5ZTQ2M2NmNGY0ZDAxMGQ2NWYzZGQ3OGZmOWY4OCBweTNrCis2MDQ2OSBkZTdjMzA5N2IyYzEwNjUyZTE3YTg2YmZkYTJmODA0YTg0NWQwZDczIGxlZ2FjeS10cnVuaworNjA0NzAgZTc3YjgyYWVkMWE4MzEzMWZmNDM1MzkxNTAwNWY4YjUxMmUyMTk1MiBsZWdhY3ktdHJ1bmsKKzYwNDcxIDAzZTRhMzZhNTZiYmE0OTVlMTMxNWNmMmZlMGE5MGU3NjEyMmEwMDggbGVnYWN5LXRydW5rCis2MDQ3NiBmMzgwZDk5MTM5MGUwOWYyM2QxMjg0NzA5ZWUyYjQ5NjkxOGI5ZjdiIHB5M2sKKzYwNDc3IGYxODNmMTE4OTgyNDhlNzU0ZWZiYmU0MzkzMTIxMzAxNzAyYjIxNDQgcHkzaworNjA0NzkgZDYzNWYyOWU1NWY4Mjk0NzBmNWEyZGYxYTI4Y2U4OTUzYzY3ZWYxMCB0cnVuay1tYXRoCis2MDQ4MCBhNzdjOGRjYmNlZDkxMGZmZDNlMmY5M2QxMmI4MmMwYTVhYzc2ZjQ4IGxlZ2FjeS10cnVuaworNjA0ODEgM2FhNGI4ZGZiYzRhNGNiNTQyY2U5NGY4ZTQyMDZhODI4MGZlODcyOSBweTNrCis2MDQ4MiA4NjU5ZTUyNjE0ZGFkZDY5ZTExYmE2ZTM3MTVmNTdjY2M4OGRhNzNjIGxlZ2FjeS10cnVuaworNjA0ODMgM2YxNmFjOTE1MjE0ZWQzOWU1NmZlNzRiZmI3OWNlMjNkYzE2ODY0MyBsZWdhY3ktdHJ1bmsKKzYwNDg0IGYwZTZiYjliMjRmNjhiMWVmM2RjYmI0YWFmMzBlMjU4OWMzYTU5NDcgbGVnYWN5LXRydW5rCis2MDQ4NSBhNGI4NDI1N2M3Zjg1N2Y1Mjc2ZDVkNTAxNTY3Y2JkYjkyNmIzY2JlIHB5M2sKKzYwNDg2IDQ5MmIzMDJhZGVkNjg5NDg3MmZjM2FmMjVhZGZiOTY2NDUwYmQyMjMgbGVnYWN5LXRydW5rCis2MDQ4NyA2Nzg1MDlmOWEwM2Y3MmExZWViNDA0YjU1YmRiM2RmNzg5YWZjZTM5IGxlZ2FjeS10cnVuaworNjA0ODggMzE2NGI0YWUyN2MzYzFkZjI1MWFlYzcyYzQwMGI3MjEyMTdmYTFlMyBsZWdhY3ktdHJ1bmsKKzYwNDg5IGQ3NTQwMDMxYjk1OTIxNzM5NjFlZWI3OTk3MzZlYTZhYTUyOTcwOWQgcHkzaworNjA0OTEgYzY2ZGE1N2I5NDg4OTgwZTU0MDU1ZmE5NjFjMTM1ZDQzMGM2MWE3MyBweTNrCis2MDQ5MiAzODYwNGZhMmE0OGYxZmVlMTViOTdmZTQ3YjZmYWQyZTE3YmJjMDc4IHB5M2sKKzYwNDkzIGEyODFlMzMxOThjMGFlMzRkMWJiMTU1OGYzZTdlNmFkYjVjY2ZlZjAgbGVnYWN5LXRydW5rCis2MDQ5NSA3Y2I2ZTU2MTdkYTA5ZDg5ZjNlOWNmMzE4OGE1M2E3ODliOGI1MTNhIHB5M2sKKzYwNDk3IDk5ZWYyNDhmYjMxNTNmZDA5ODk1NjBhMDVjODU1MWNlMzIyMjk3NGEgbGVnYWN5LXRydW5rCis2MDQ5OCAyYjYzNjkwZDUxMjg1OTdjNzAxY2RkMzlmMmI2YjNiYmE1YTM3OGE3IHB5M2sKKzYwNTAwIDMzYmJkYzc2YWZiNjJlMTQ1ZWZkNjJhYWVjZTJkOTI1ZDZiYjBjZmQgbGVnYWN5LXRydW5rCis2MDUwNCAzOTc5YWUxZWVhMTdhNzE5ODA5NGI2OWUwZTlmMGQyYjI0ZGE1Zjk2IGxlZ2FjeS10cnVuaworNjA1MDcgNjQ5MmE3OGU5M2I0YzFjY2MxYjkzN2Y3Yzc3NjczOWQ4OWZmYWNiZSBsZWdhY3ktdHJ1bmsKKzYwNTA4IGZhYTg4ZmY0Y2NlNGQyNTlmYWIxMzc5Mjc5YjkxYjExZDY4ZjcxM2EgcHkzaworNjA1MTAgYmRiNzAyOTUyNDhiY2ZjMzVjNzgzM2MwNDAzYWVmMjhiODQ1YTEzMyBsZWdhY3ktdHJ1bmsKKzYwNTExIGJlZWE3M2NhMmI4OGU3ZDY4Y2FhZmQyMzQ3YmQ3YzczYmMyYTYwODYgbGVnYWN5LXRydW5rCis2MDUxMiA1Y2I4Mjg4MzYwZTczOGMzYjIxYTA2ODdjMmM5NDM2MTA2M2FmNzBjIGxlZ2FjeS10cnVuaworNjA1MTMgZDEyYzk3Y2M3NDY3MTNkNDdhMjY3MzJlNGVjNGI1NmEzZDAxMTI4ZiBsZWdhY3ktdHJ1bmsKKzYwNTE0IGY0YjQ5ZWZjZWRjMGVlMjllNGQ0ZmNlMjI2NTFiZjRlN2U5YWMwZDggbGVnYWN5LXRydW5rCis2MDUxNSBkZjVlNTJlMDUyNDZmY2EwZTk1M2Y0ODQxZTljZjE1ZGJlNWEwYzMxIGxlZ2FjeS10cnVuaworNjA1MTYgZDBiMzFmMjQ2OTRkYmU3MWI5YTczZmY0MjNiYmRmMjI5NWY3YmI5NiBsZWdhY3ktdHJ1bmsKKzYwNTE3IDBiNGU4YWZlZDY2MzEyNGQwNWI3N2IwZjZkM2FkN2U0MDQyNzgwODkgbGVnYWN5LXRydW5rCis2MDUxOCBmNWUxOGM5YmRlNzAxNzUyMzgwY2NkNjkyZDg3YzY3MmI1NzBiZWMzIGxlZ2FjeS10cnVuaworNjA1MTkgY2U5ODE2ZjUzNjkwOWI1OWRlYTY5OTdiNDQ1NTE2MmJkMDAxZGViZCBsZWdhY3ktdHJ1bmsKKzYwNTIwIDRjNTlhOGY3OWU0MjgxZWMyNTVlOTk0OWM4ZDY2ZmRiYjFkN2Y5YzMgbGVnYWN5LXRydW5rCis2MDUyMSBlMmE4YjY3NjVhYjNmYjBjOGM1YmM2ZGQxNGQ1ZDAxNmNjYTQzNTliIGxlZ2FjeS10cnVuaworNjA1MjIgZDU0ZDEzM2M2YThkYjdmNzZmNzgwOTA4NmNmMjdkNmZjNGU1MWFlNiBsZWdhY3ktdHJ1bmsKKzYwNTIzIDdlMmU2MDNmNGNiZWNlMDg1MjhmYTZiMDU1OTcwNjU0ZGIyYTllODUgcHkzaworNjA1MjQgYTNlNmY3NDUzM2Q2MGNkMGNiZjNiMTRkY2EwYjU0YzYwMjJmMmRmNCBweTNrCis2MDUyNSA2NDA5MTI0M2MwN2JjZWM5NTkyZDA0MjBkZWI5ZDEyNzJjNTY5OWZiIGxlZ2FjeS10cnVuaworNjA1MjYgYTgxZWY2M2ExMDA5YTI5OTRjY2JlMDFkMjdjYmFhNDA5MjYxYzJiNCBsZWdhY3ktdHJ1bmsKKzYwNTI3IGQ5ODBmMTc1Yzg4NjM0YmRhYjAwMDk1MzViNzgxY2VlNjdhMzFhNjAgbGVnYWN5LXRydW5rCis2MDUyOCA2ZDc1YmUyYzNkM2U0MTJiMzUzZjg2Njk3OTI3MDU1MDNmNDMwYzhmIGxlZ2FjeS10cnVuaworNjA1MjkgNjYwZDI5ODliMTYxY2Q1NDBhYzk5N2NmZjYzM2RjNGQ2Nzg2ODg4MiBsZWdhY3ktdHJ1bmsKKzYwNTMwIDA0NjUzZjkyNjY0ZjMxZDIxNjEyMmNmYWJkOTQxZjkyYTFkZTBiNmQgbGVnYWN5LXRydW5rCis2MDUzMSA2NWIxMjUyYzFiYzE5MGFhZjYwMmM3OTk2Zjk1NjBkZDcxNWM4MGJlIGxlZ2FjeS10cnVuaworNjA1MzMgZjAzYWY2MDEyMjViMWRlOWUwYWM5ZDJiNTMxZTYzZDZmMmI3NGU1YiBsZWdhY3ktdHJ1bmsKKzYwNTM0IGIyZGU5N2ViMWY2N2M3NDMwNTcyYmE5NjZmZDg1ZWVkNTQ2MTJiNDUgbGVnYWN5LXRydW5rCis2MDUzNSA5NWJiZjU2MTNiMThmNDlkZTUyYzQyMmI2OGQ2Y2NhZTJiMGVhYTZjIGxlZ2FjeS10cnVuaworNjA1MzYgYWVmZGNiNTI0MDZkZDcxZmViN2YxNDU1OTcwMmQ0N2JmOGM4NDgxZSBsZWdhY3ktdHJ1bmsKKzYwNTM3IDU5ZDg5ZDYxYzNhMGIzMGNlOTBlZWYzY2ZiODU1YTdjNTc0MTEwMjIgbGVnYWN5LXRydW5rCis2MDUzOCBjMmRjZjU0ZTkxZmQxODhlNjFlMDZlODdlYzFiOTY2MjQxNzI3Y2IyIGxlZ2FjeS10cnVuaworNjA1MzkgMjQ5Njk0MDVlMWFhZDdmNGRkMDgwYjU2OWMzODE5NThhNzgzYTBiNiBsZWdhY3ktdHJ1bmsKKzYwNTQwIGU1ZTAyODk4YjZjNDJjMTE3YWY2OGM4Nzg5NWMxNGFmNmMzZDRmNmQgbGVnYWN5LXRydW5rCis2MDU0MSAzOTQwOTFmZDFkNTMzNTgwNjE0NWJkYzdlM2FmZWUxNjViNTgyMjVkIGxlZ2FjeS10cnVuaworNjA1NDIgMjE1OTRjNWEwNjFhNTBlMDU4MDUyMmIzOGE5NGViZGFjMjc3YzlmOCBsZWdhY3ktdHJ1bmsKKzYwNTQzIGYyY2RlZDBjMWZkNzdhNmI0NWU5YmY2YzJmYjY0MTViMjYzMTMwZDEgcmVsZWFzZTI1LW1haW50Cis2MDU0NCAzYWM0OGNiMzQwMjczNGM2MjlmYWU3NzU2NTdhZWQ1MTljYWVjZGI4IGxlZ2FjeS10cnVuaworNjA1NDUgMjdjYTQ3MDBiYzZkZjBmZjc4YjQ1ODRiNWE2MjY5OGIyMTdkMTJiNiByZWxlYXNlMjUtbWFpbnQKKzYwNTQ2IDQwM2E3ZWU1YTUzZWNlYjZhMTU4ZGVjZmYxNTE0OWYwMjEzOTk2ODQgbGVnYWN5LXRydW5rCis2MDU0NyA2YzhjNmRlNDRmZjc1ODY3YzAyYjU4MjIzMTBhZmVlMWZmM2Q4ZGI0IHJlbGVhc2UyNS1tYWludAorNjA1NDggNmUxMzRhYTczODc5Njk1MjY5OGIwNzIzYTExMjM1OWQ5ZWM3NGFhNCByZWxlYXNlMjUtbWFpbnQKKzYwNTQ5IGI2NmFiZjBmZDU5MTI5NmU1NDY4Njg1N2Y3MmU5MjMwNzkwYzEwYTQgbGVnYWN5LXRydW5rCis2MDU1MCA1YmRjOGI1OTkyMjJiYTE0ZjdmYmFkYmRjZTM1NDc1YmU3MTI1NDg1IGxlZ2FjeS10cnVuaworNjA1NTEgNGFkMDk1NjU1NzlkN2JjZjcyMDlhZDZiY2NmYWU1ZWZlNmQ1YzFlZCBsZWdhY3ktdHJ1bmsKKzYwNTUyIGJkY2Y0MGQxYjM4ZWI0ZjQ3NzNmYzNmM2MzNDg2MjUzYTJjNjYyMzIgcHkzaworNjA1NTMgNWJjNTg3ZjkwMTY0YzViMDdhY2RkYmM2NjcxYzJjODg5MTRlZGRhNyBsZWdhY3ktdHJ1bmsKKzYwNTU0IGViOTdlODMwMmZhMzEwNmM0ODQzNmNjZTA0NWRhOTFkZThiNWQxNjEgcHkzaworNjA1NTUgNGFhNjM4MzEzMjk4MGIzZTQyYzFmZDAxYjg1YTg3ZGEzODNlZGNjOSBsZWdhY3ktdHJ1bmsKKzYwNTYwIDRmNmY0NGJjNTE5NTdlMzAyYTMyNGE0ZjM4NWE3MzlmMzQxZmZkMjIgbGVnYWN5LXRydW5rCis2MDU2MyA3NTAzOWQzMTE4YWVlYWQ2NWUzN2ExMjNkMjcyNWZjNTZmNWUyYzk0IGxlZ2FjeS10cnVuaworNjA1NjQgYTNmZTc0ODVmNWM1NTZiM2ZlZWM1ZWNiZmM4Yzk2M2RjMmYzMTg2OSBsZWdhY3ktdHJ1bmsKKzYwNTY1IDM4NTBkMTNiZjk2Yjc1MzliNWU4MjhhY2VhYmRkZjJlYzkyMWQ1NjggbGVnYWN5LXRydW5rCis2MDU2NiBmMDM5NTVmYWZmYjQ3NGI2MTBkYTFmNTVhNWJkYjdmYjRiODM3YTU0IGxlZ2FjeS10cnVuaworNjA1NjcgOGZkZDZkNjJlYTU1YWI3NGMyYmU5YTY3ZTljMDBiNTdkZTljMTYwZSBsZWdhY3ktdHJ1bmsKKzYwNTY4IGNjMzE5YTVmNTAzZTc0MDZlMWRkMDk4NTllNmQ4M2VhMGRjMDg5NjAgbGVnYWN5LXRydW5rCis2MDU2OSAzZDdiODRkYWEzNGE0ZDRjYmE1OWY0MmYxNzQzNWY0OTYzYTFmMjRhIHB5M2sKKzYwNTcwIDNiZTRmYWZkOWNjMGRmMzc3ZThlZjc5NmEyY2YwZGY3MjU0OTA2NTYgbGVnYWN5LXRydW5rCis2MDU3MSAxYmViN2QyOTNmNTUyYzgwY2I1NWNkMjdiNGJlMGE0MTc1ODlkMGMxIHB5M2sKKzYwNTcyIDM4ZGUwZTQxZDI1NGQ3NDY5NDBkOGJiZGQyMzk1ZDhiNTgzMGRkODIgcHkzaworNjA1NzMgZjY5ZGEzZjU3MjE3NjZlMWZiMWRmYTY3Mjk2NjhjNDVhYTZiZWEyYSBsZWdhY3ktdHJ1bmsKKzYwNTc0IDliNjdkMjU5NWEyMzFiNmY4OTJkNzU5NDljNjhlMzgxZDIwMWQ5NTcgcHkzaworNjA1NzUgNjQzYzEzOTdmOTU0MGYwMmVjOGJiNDIxZTJkYmQxNTJlMWY1NjU5YSBsZWdhY3ktdHJ1bmsKKzYwNTc2IDk2ODZjNGI0NjI0M2RhODVjMmU1M2EwN2Y2ZDdkZDZhNmM5YzZkYmMgcmVsZWFzZTI1LW1haW50Cis2MDU3NyBlNjExMzVmN2Y5YmJmYWI3YzViMTY2MDJiMWM2MDM0ODE2NmQ4NTRjIHB5M2sKKzYwNTc4IGNiMWU1YzM3ZDNkMDI0MGU4YzU5NzVmZWI2MmFhM2QwYTMzN2M4ZWYgcHkzaworNjA1NzkgODY2MDJiNjAzNDYyYzgxNmE4NjYyMmIzMWI0Y2RjNGE2MWRhMzgwNSByZWxlYXNlMjUtbWFpbnQKKzYwNTgwIDFmODdlYzk5MWU1OWRlYWY0NWFlNjE3NmI3NTMyMWRlNDhmMjAwNWMgcHkzaworNjA1ODEgZTg3YmQ4ZGRkMDFiMGEwOTExZTlkNjBkNmFmZDcwNjU1MWRhMmYyMSByZWxlYXNlMjUtbWFpbnQKKzYwNTgyIDBkZmFhOTJiZDUzNDhkYjQ4YzFlYTE2YjA2MTU1YTE4YmE2MTI1ZmEgcmVsZWFzZTI1LW1haW50Cis2MDU4MyBlNjA2OWIyNDAzMWVhZTRhMGU3YTU3ZmEwZGEwNTdiNTJlYTA5NTY0IHB5M2sKKzYwNTg0IDNmOGY4NjQ5M2RhYWU4Mjk3MGI0Yjk5ODY2NTg5NGI0Y2UwOWZmZTggbGVnYWN5LXRydW5rCis2MDU4NSBiZGY3NDg2ODkzYmFhYTJjNzFmNTk2NDdhOTJiY2I2MDY3OWQ1M2EzIHB5M2sKKzYwNTg2IDY0NjM0NzQ0NGZhYTUyY2MxMDVkYTI1NmE1YzhhNjY5ZGYwMTRjZTQgcHkzaworNjA1ODcgNWJkYTRmNzZhZDkyYzY3NTFhNDNhNDA0NTNiMTYxYTU5ZWM0Yzk0ZiBsZWdhY3ktdHJ1bmsKKzYwNTg4IDk0ZDk4MDk2NjA1NmZlM2VlOTA1OWVlNGQxNmUzYTZlN2Y2YzhhNWIgbGVnYWN5LXRydW5rCis2MDU4OSBmMmY5OTE2MzQ3ODE0ODRhNDNiM2IwZGE3MDZjZmNkYjlhOTkyYjlkIHJlbGVhc2UyNS1tYWludAorNjA1OTAgOGQ4OTAzN2Q1ZmMxYWMyMGExMTc1NmUwZDBjZTQyZmFlNTg0YTg1MiBsZWdhY3ktdHJ1bmsKKzYwNTkxIDA2MGYwMzlkMmZhYjU0NTc1OGMwYmNiZjk3ZDVhYTJhNGM5NzZjZDggcHkzaworNjA1OTIgY2ZhMjgwNDI0YjY1MGY4NzllZTMwODdkYzA3NWVlNzJjOGFiOGRkYiBsZWdhY3ktdHJ1bmsKKzYwNTkzIGIwMTEzNjYxMDJkYmFiNzc5ZDdiYzU3MjVjN2I5YmE5ZjA1OTRjY2QgbGVnYWN5LXRydW5rCis2MDU5NCA0ZDU4YzBmYTZlMzQzMjA3YjViMTg5MGJhNTBlNDFiOWNhZTQ5NWZiIHJlbGVhc2UyNS1tYWludAorNjA1OTUgZGFjNDIxN2U5OTY1YTBlYTllMjNjYTg2Njg5MDJjY2U3NjAwM2ViNiByZWxlYXNlMjUtbWFpbnQKKzYwNTk2IGQyYjQ5YTY4ZTZmN2JiMGVhZDI2YjJlZDA3MTE5Zjk5ODhlMTFjN2IgbGVnYWN5LXRydW5rCis2MDU5NyA1ZmU1NTdjNzYwYTIwMGQ2Nzg2ZjBiZGRjNzk3ZDJlM2JiYmUwOTBjIHB5M2sKKzYwNTk4IDY4NzQzN2Y3Yjc4NDkxNjkyZmFjZDcxMGNmMDBlNmUyNzM1MDI5MzUgcHkzaworNjA1OTkgMWMyYTI2Njg2ZTU0NDAxYmRmMWRjMTAzZWNjY2QzYTQ5ZmQ5Y2M3MSBsZWdhY3ktdHJ1bmsKKzYwNjAwIDgzYjVkNmIyYWE3MGYzY2IzNWNkOWNlZTNlMGE4MTJhNzZlYzkyZjMgcHkzaworNjA2MDEgMDFkMWE0ZmZkNWIzNWY5OTgxZDQ3YWFkY2M5N2Q3ZGMxNWE5ZWU5OCBweTNrCis2MDYwMiA2ODYzNmVhODkxNTMxMTkzNTBmNWZmOGZiZmY3OWZkZjFmYzczN2NjIGxlZ2FjeS10cnVuaworNjA2MDMgOGJjMWZkYzYzMzcwZDE0ZmIzZDJhYWYwNmRmMzkyY2M5ZmM5MjdhOCBsZWdhY3ktdHJ1bmsKKzYwNjA0IGY0YzBlNTNjMzU2MWEzNmI5ZDZhNWIxMjc0YmZlY2I3OWRmMTA5ZjkgbGVnYWN5LXRydW5rCis2MDYwNSA3N2IzNzFjNjk1OGNlZGVkZDA1N2QzZWM2NGYxOWNiYmZiMmFkY2M3IGxlZ2FjeS10cnVuaworNjA2MDcgOGZlYzUwYTM4NTlmNGQxZGYyYTRjN2VmZjJiOTc4NWYwODUzMDYxYiBweTNrCis2MDYwOCAxMTFjYjJhZDdhZjQ4ZDY1MWYyMTQ1N2ZiZTk0YWNlYmVmZTdjZWNiIHB5M2sKKzYwNjA5IDNlY2Q1MjZjMzVjNTY3MWU1ZDFkMWVjZGI3MmNlNmMyYTdmNjdkMmMgcHkzaworNjA2MTAgOGVmM2M3YzAwNDcwMTU5YWYwYmUwNzgwNzc5OGQzYTNjNzgyODEzMSBweTNrCis2MDYxMSBiNjVmNzllMzViMDhlY2U0Yjg4YmRiZTMzZTg3NjdlYTg1M2JhZGM3IHB5M2sKKzYwNjEyIGZkZDk5MjkxY2M0NTkxNmU5ZWMyM2FhZjI3MjNhMjExNTY0YTIxZWEgcHkzaworNjA2MTMgMTY1M2Y1ZmYzYzAwMTRhYWY4MzI5MTY0YmU0MTQzN2I5Yzc1MGI5OSBsZWdhY3ktdHJ1bmsKKzYwNjE0IGE0Yzg3Yzg4OTY0ODMxZDM4M2Y3ODg1ZGMzODBhNjMxYzY4NDg1NjggbGVnYWN5LXRydW5rCis2MDYxNSA3Mzc4MjdiNGM1ZDc1ZjUyNTkyYjk3MDgzZmUyYmI1MGM2ZGVjNGQ2IHB5M2sKKzYwNjE2IDkyMGE3NjMzYWUwODkyMjUxZGVjMTJmYzgyMjJkMWNmNGE3NmZmMTYgbGVnYWN5LXRydW5rCis2MDYxNyAxNDJhMTFiMzA1N2U5YWY4N2YyNjNkZDA3MjY5ODc5NmY3ZjRiMTdhIHB5M2sKKzYwNjE4IGI4NDdhOTgyM2IyZmZmYWEyNTQ0YTYwMzY2NjhjZDU2NWI1YzMzODggbGVnYWN5LXRydW5rCis2MDYxOSAzM2I3OGFhZmJiYjIyMjJjOTkwMTkwZWFiYzg5NGRhYzI2OTExZWExIHJlbGVhc2UyNS1tYWludAorNjA2MjIgNjVmYjIxNzUwOTQyNWM5ZTcxZTdmMTIxYjVlMTBmYWU5MWMyYTcyYyBsZWdhY3ktdHJ1bmsKKzYwNjIzIDA1NzFiYzRhYjZjMjgyMWJhOThjMjZjYWZhNTc5YjI5YThmMTcyYjMgcHkzaworNjA2MjQgODE5MDBhOTE0MjJiZjcxMjE4ZDRkZjQxZTk0ZDAzNjU1OTA2ZjQ2MSByZWxlYXNlMjUtbWFpbnQKKzYwNjI2IDBmN2MzMTdiYmU3ZjhjZGM2ZmRhOGZmNGU2NDViMDg5NjdjMzQ1NjIgbGVnYWN5LXRydW5rCis2MDYyNyAwYmEzMWNlYTZlMDNiMmM5MjM3OThlN2E4OTNiM2FiNzcxODFiNmViIHB5M2sKKzYwNjI4IGRiZTNhMTMzYjcxODM0MmFiYjkxYWYyZmQ5ZmY4ZmRiNTA2MzQxZDUgcHkzaworNjA2MzAgZjU1YTRmMTE5MTQxOTVhM2ZlODA3YWM0MmExMTQ1MDVkN2I5NTJiYyBsZWdhY3ktdHJ1bmsKKzYwNjMxIGEyMTI2ZWRiMjA3YjEyODQwY2UwNGNhZTM4NThhMTQ2OTcwNTMyOTIgcHkzaworNjA2MzIgMzQ2NjI1YmE1OTAzMmNiNzQ0YzY1MjJiNzFmN2IwZDY1MjdjMzU1YyBsZWdhY3ktdHJ1bmsKKzYwNjMzIGZmZTJkMGY1N2VmZDcxY2ZjZTZjNTcxNDk2MDBiOWJhMzFlMDMzZGUgcHkzaworNjA2MzQgZDM5ZTFhMGUwOTY1NDgyMzUzNTNhMDhjMzUyOGM0MjEwODM4NDNjOCBsZWdhY3ktdHJ1bmsKKzYwNjM1IDA2M2QwMjJhYzAxMWI4NWVlODZmMDBkMjM0OTYzZDBiMjRjYzFiMWIgcHkzaworNjA2MzYgM2YxMjQ5NzVlMDk5NTk0NWQ0Njg0YWUzYzBkNmM0ZDBhMmIwZjFkYyBsZWdhY3ktdHJ1bmsKKzYwNjM3IDNiYjNjNzQzZjEwNWY3MTBhYThjNzMzMzQxNzI5MGE1OTc4OTMxMDggbGVnYWN5LXRydW5rCis2MDYzOCA5MzhiYTYyMmFjYTAzY2YyZGU2ZTQ4ZDgzNzg2M2VlNzc4ZmRlZGVlIGxlZ2FjeS10cnVuaworNjA2MzkgMDk1OGNjNDZiMzNmMzQ5ZmNjMzFmMjA1MGY2MTZjZDZhMjNmNmJiMyBsZWdhY3ktdHJ1bmsKKzYwNjQwIDhjYmI4YWE0NWJhOWE5YWRiNWM2OTU5NTFiOGZhZDI4N2U0ZTRmYjkgbGVnYWN5LXRydW5rCis2MDY0MSBmZWI2ZGQzNmQ1M2YzM2U5NjYzMDJhN2ZiNDE0ZjlkNTAyY2JmNWFiIGxlZ2FjeS10cnVuaworNjA2NDIgYzczYTI4MDJiNzM4NjYwZDEyYTM5NDE0MjA4ZWY5MWYwNTIxMTNjMiBsZWdhY3ktdHJ1bmsKKzYwNjQzIGU4MmFiMjQyM2FhYjcwOWM2YWM5N2E2NDhmMzI2YjgxYmI2ZDExMmMgbGVnYWN5LXRydW5rCis2MDY0NCA0NGUyZDk4OTkxMTVkNzI4YTRhOWExY2YxODdhMTgyYjJiNzdiMWZhIGxlZ2FjeS10cnVuaworNjA2NDUgN2RjOWRlZTA5OWU4ODBkYTdmMWI5MDExODE1M2EwMTcyZWQ5MjI1ZCBsZWdhY3ktdHJ1bmsKKzYwNjQ2IDVhYzYwNWMwZjI3Y2E4ZDg0YmE5OGVkZDg0NDlmOTY1ODBmMmExMmYgbGVnYWN5LXRydW5rCis2MDY0OCAyMTlmN2YyMTM0ZDQ4ZWY5ZjAxNWI3NTJmZGMzZDJkY2ZkZGEzODhhIGxlZ2FjeS10cnVuaworNjA2NDkgZGViNDg3M2ZhMGYwNGM1N2JhZGVlZjI2NjIyYTg4MzA5NTAzZmY3MSBsZWdhY3ktdHJ1bmsKKzYwNjUwIDdmYTQ3MjVjY2U4NzlkYWVkYTE5MTEwYWRiY2JhOTM1YjVjZGJiNjcgcmVsZWFzZTI1LW1haW50Cis2MDY1MSAyYzYzZjE1MjJiYmU0ZTc2ZWNkM2E5M2YyZTUxY2VhODA3YWU4YjM2IGxlZ2FjeS10cnVuaworNjA2NTIgY2RkMmVhMDgwZTIzNjVkZGFlZDY2MjI3ZjBhNzA5OGQxNjRmNWM0MCByZWxlYXNlMjUtbWFpbnQKKzYwNjUzIDRlMzNmYzgyZTdmMzE4OGY1OTE1OGE1YTM1OTE0Yjk1YWUyZjhhNGEgbGVnYWN5LXRydW5rCis2MDY1NCA0MDNmNzA1ZDU4YzkyZjZhYTQyNWU5NGU4YzFkMWY4NWIxYWQzZTk1IHJlbGVhc2UyNS1tYWludAorNjA2NTUgMzgxZjRhMjkzM2I1ODk3MDE0YTFlODhiYjVmOTJiOGM1MDAzZTkyMyBsZWdhY3ktdHJ1bmsKKzYwNjU2IDVkOGZlY2EzMzMxNWRlOTdiN2QzYWRiMTk5Y2YzY2RjMjI0NWUxMmMgcHkzaworNjA2NTcgNTlhNjQ4NWJhYzAyMzFkMWNmNjJlYTI1MTljMzM2ZTFjMzY5Y2IwYSBsZWdhY3ktdHJ1bmsKKzYwNjYwIDRlNDM3MjJmZDUwM2UxNjI3YzEwNjc0MjdiNDFiNTNiMjJkNTgyMmUgbGVnYWN5LXRydW5rCis2MDY2MSAyNjIyNjM3MzdiY2UyZGNmZjJiYWEzMjRkM2M2ODhhOTliYzkwMTNmIGxlZ2FjeS10cnVuaworNjA2NjIgMWMzMjZkZWE0OTRjMmM5ZWI4NzAwY2E4YjM5YzgwZjk3ZTRiZjQ4MSBsZWdhY3ktdHJ1bmsKKzYwNjYzIGU5NGFmMGM3YWExMmJhMjg3MmZiNjUzZWYyNDMxZWQ1ZmNiOTNmNDYgbGVnYWN5LXRydW5rCis2MDY2NCA0MTY2OTQ1YTBjYzRmZmI3NmI4NmIzODFhYzY0Y2RjYzNmOWIwMzBlIHJlbGVhc2UyNS1tYWludAorNjA2NjUgMDQ2M2Y4MDFkN2RjNTA5NzM4NTJkMjAyNjc0ZTM2MDM3MmVjNDg2YyB0cnVuay1tYXRoCis2MDY2NyA1NGRjZjgwNmRlZDYzYzE4N2Q4NzBhMzkyZTcwMDA1ZTZhMTEwODc4IGxlZ2FjeS10cnVuaworNjA2NjkgNDI0MjJjZjAyMDhiMGFkZWQ2Y2FmZjZkNWQ3ODZiMDI5ODIyZjUxNSBweTNrCis2MDY3MSBlY2E5MGI4YWE3ZmRiOGUyOTc5ZGMwOTRmOGU2ZmQ3YWE0MDM1YTliIGxlZ2FjeS10cnVuaworNjA2NzIgM2ZhN2ZiMzI4ZDlhYTI5MGJmNzg4NDdjZDU3OTU5YjUyNmQ3MjdkYSB0cnVuay1tYXRoCis2MDY3MyAxOTgwZDcwNTg2MjcyNTcwNzNkMjJjNDg3MDQ0MDg1MDAwNDZkZTRjIGxlZ2FjeS10cnVuaworNjA2NzQgODJkNDQyODBjMTM1NmVhZDA1NDA1NjFlMWIyMjBlNTk0YTI5YTcxMCBsZWdhY3ktdHJ1bmsKKzYwNjc1IDc3YzU3OTFiN2MyMTAxNzc4MWM3NjYzYjQyNTM5NDJmNjdiZjhlM2QgbGVnYWN5LXRydW5rCis2MDY3NiAxNWJjOGU4MzI0MjA3YzI3ZTMxMWJmYjIyNjY0N2E0MjllZjhhMGU1IHB5M2sKKzYwNjc3IDY4ZDMxYTkxZmRmMzI5MjI5NjM1NWZkZWVkMzU0Mzc2ZDg5NzEwMmMgbGVnYWN5LXRydW5rCis2MDY3OCA1OTUwYzQ5ZjIyNWFkZWE0MjE2MDM1MTg0YWQwOTY5YzRkMmU2NmM4IHB5M2sKKzYwNjc5IDk3YjQyMGIyZDhkMTBlMGNjNTIyMzY4ZGU3OTQzNzYwZmQ2ZDIzZmUgbGVnYWN5LXRydW5rCis2MDY4MCA1YmE1YzRjOWEwMTY5NjYxZjdkMWJkN2I0ZTRhMzkwZWMzMDQ1MWU4IHB5M2sKKzYwNjgxIDJhODIxZTAwMWEyYjQ2ZDNkYTgxMDRiZjhlOTcyOTNmYzExODRhY2MgcHkzaworNjA2ODIgODUyN2VkNzU2M2QwYjRiY2YzODk3OGM1YzY5ZTM2Y2E4NTk2YmI5NCBweTNrCis2MDY4MyAwZjNkNThmOWNkMzUyNmRjYjZmMmI3YzgxODRhZmRiM2E2YTBkZWJmIHB5M2sKKzYwNjg0IDY0NTkzOGUwZWI1MmIyNTA2YmJhYzc1OWRkZWI4NzQ5OGFjNTYyMWEgbGVnYWN5LXRydW5rCis2MDY4NSAyNDkwNmI3OTI1NDI0MzdlZjAwZjZhMzE3YWE5ZDlkOGQwMzI5ZjQ3IHB5M2sKKzYwNjg2IGFlYmQ5YzRkMTllZGZjMWQ0OTEwZjRjNDU3N2NhOTdkY2ZkOTJmYjYgcHkzaworNjA2ODcgMDE1OWU2MmI5N2M1NWM2MDQ5N2ZmMTM2YjRhNDczMjk4MWE0MWVkNCBsZWdhY3ktdHJ1bmsKKzYwNjg5IGE4MjE1N2Y1MzRhN2UyOTk0NTUwNDljZDQ2MmFlYzIxNTQ2Y2EyZjggbGVnYWN5LXRydW5rCis2MDY5MCBhMmJmMmE1OTQwNGE5MGVmNjNhNGM5MmI1ZWFmYjkzMjljZDljNzRkIHB5M2sKKzYwNjkxIDRjZDFkMDQ3NGExMzRlNWE4MDAzYzVmMjkzOTNkNjY4ZDgzNWU1MzcgbGVnYWN5LXRydW5rCis2MDY5NSA4MzgyMWUwZjM5NWI0ZDdjNTFkZjU0MTAxNmU1MWMwZDJiOWRiM2QxIGxlZ2FjeS10cnVuaworNjA2OTYgMzI5YzZiMmUxMTA1MTc5NGJhZTg2Y2MzYjUwOWMyOTUyMjc3NjYzNCBsZWdhY3ktdHJ1bmsKKzYwNjk4IGJjNjI4NTRlZTljMjExNDg5YzNiOGQ4NWU3ZDMzMDE0NzliMTNiZDMgcHkzaworNjA2OTkgNjI2MGRiMjJmZjc1MmY0NWM0OGMwYjhlN2MwY2ZlNGI2YTgyZDIzYSBweTNrCis2MDcwMCA1ODVhZWE5MDRmMGRiNGRkYTgyNmE3MzE2MzNhNTU1NDE1ZDJjYTE4IHRydW5rLW1hdGgKKzYwNzAxIDg3MjhmODE2Y2E3NTIwM2U0NDliZWE1M2I5ZjhiMDQ0Y2U5OTYwYjcgbGVnYWN5LXRydW5rCis2MDcwMiA4Njg5YjY3MjY1YmZiZjM2ZjI2NTFjNzk0NTQxYmMzNjMyMmQyNWNmIGxlZ2FjeS10cnVuaworNjA3MDMgNjFlYmE4MzMyYzE0NWUwMjVjY2VkYzIwYTZmNGQ4MTNhMGY1ZTlmMyBsZWdhY3ktdHJ1bmsKKzYwNzA0IDc0NTI4MGQ3MTQyNTVjZWM0NzA5NDdmYzliYTE5OWJmN2Q1N2I3NTcgbGVnYWN5LXRydW5rCis2MDcwNyA4NjkwNmE1Y2VjYTYzNDg4MjU2NjJjNGQzOWZmMDBjODc0NThiNGMyIGxlZ2FjeS10cnVuaworNjA3MDggMmQ2ZjY0MGY3MDgxMzljODEwZGQ0NDBhZDhkZTcxNGJlZWM4MzJiNSBweTNrCis2MDcwOSA4NTNjNzNiMDI5ZTNlMjllNzY4NTUwMjVjYWVlMTAzM2ViNWY3NDE1IGxlZ2FjeS10cnVuaworNjA3MTAgN2Y0Y2VmMDQxODZmMWNiYmY1YzEzNDA2Mjc1NWNmZmQ2MGRjYmNhMSBsZWdhY3ktdHJ1bmsKKzYwNzEyIDRhZTAzOTdlZjFjNWYxNGQ5YzQyN2VlZDU3YjlmMDYwMTZkZmNjNjYgbGVnYWN5LXRydW5rCis2MDcxMyA2ZWJlODkzMjhiNWU3M2U5NjIxZGUyMWM3NGI3ZmE5YTllNTk2MTNkIGxlZ2FjeS10cnVuaworNjA3MTQgMWRjNzFmMDhlYTdjN2M4YjlkZjA4MDU0NDY1MjdkODY4MmRhNTdjMiBweTNrCis2MDcxNSBmYjU1MWM5MzhhNTk4ZTkzZTQxNDI0MjgzMWI0MWRiMDI4MWQxMjZkIGxlZ2FjeS10cnVuaworNjA3MTYgMDEzZTY2Y2IzNmMwZmU1YjJhYjQ0ZGE3MmI5YzBiOTBjMDQ2MzRkZCBsZWdhY3ktdHJ1bmsKKzYwNzE3IGZkNzc4OWExYmZjZGEyYTY1ZGQzNDI0MmMyOWZlMzBmZGE0ZGI1OGUgbGVnYWN5LXRydW5rCis2MDcxOCBmOGVlMDZhNTFjMGIyZjIwMzRkZWU2MzYwNDY5MWJmNTI0YmU0YTRiIGxlZ2FjeS10cnVuaworNjA3MTkgYzdmOWY5ZmRjZjgyNzFjMzEyMTEyNTIzMzE5NDczZDczMmFkNGVkZCBsZWdhY3ktdHJ1bmsKKzYwNzIwIGE4Y2E5ZTA2NWQ5ZGVlMTVlOTVkMzQxYTc3ZTk5ZWI4Yjk4NmRlMTUgcHkzaworNjA3MjEgYTUwYzFmYjdkOTIwYTgxYjE5YWFkODdlMGYwMmIyNWQzMjRkM2UxZSBsZWdhY3ktdHJ1bmsKKzYwNzIyIDlmMWEyYzk5MjU1ZmY0MWMxMTJmNDc4NWU2MzhkYTNjYzFhNzgyNTIgbGVnYWN5LXRydW5rCis2MDcyMyAxZGM1Y2ExMTQ0OGNkMDczMDg3YzlmNzY1MjMxYjc2ZmFmZGNlZThkIGxlZ2FjeS10cnVuaworNjA3MjQgZGM1MGRlZTdmOGU1MmUzMWZmZDAzZWJkYzY3NzAxNmNiNmRkNjk0NyB0cnVuay1tYXRoCis2MDcyNSBlNjcwNTBkNjJhZGZhNDZlZGFlYWJmNjBkM2IxOWZjMjExYjA1ZjU2IHB5M2sKKzYwNzI2IDNlNWE3OTBlMGNkNjVkOWU3OGE1OGJjMDhjYmYzNmM5MTg4ZjJlZGUgdHJ1bmstbWF0aAorNjA3MjcgZWVlZjM5YTZmNGRkOTk1YWY2YjMzMGE3MjQ0OWNkZjk1Njc1ZjFhNCByZWxlYXNlMjUtbWFpbnQKKzYwNzI4IDRhZmJjZGUzNDNlZGJjM2QyODFhOTQyZDM4NWMzMzE3YTQ0MzNiMmMgcmVsZWFzZTI1LW1haW50Cis2MDcyOSA0NTY1YzY5NDIwYjhjYjM0YTlmMTM5ZTRlNDAzMTNiNGZjZjRhNmQyIHB5M2sKKzYwNzMwIDc5MDU1NGFlMmIwNGFjYjMwYWRjNzI2NzEwYjA3YjkxZDcwZGMwZmEgcmVsZWFzZTI1LW1haW50Cis2MDczMSBjMGFhNmQ4ZjVjZGI0MjBlMjg4ZTI3YzY2OWY4NzkxZTY3ZDExZTU3IGxlZ2FjeS10cnVuaworNjA3MzIgYzJmYzMxOGM0ZmEzMzNkNmU4MGI1YzdiNGY4MDc0OWI5NGE4MjVkMiBweTNrCis2MDczMyBjYTA4NTM2MjJmMWExZjliOWFjMTkxYjhlMjE0ZDhiNzkxNDQ0ZGJmIGxlZ2FjeS10cnVuaworNjA3MzQgZjg1YjYzZjU2NzA2MDQxOGE3OTdiNTM1Y2RiYTVjMjk2MWRkNmRjNyBsZWdhY3ktdHJ1bmsKKzYwNzM1IDgwOGY4NGM1NjZmMGVkYWQ2YWJiNjk3NDU5ZTI3OGMzZmRkMGUyYWQgbGVnYWN5LXRydW5rCis2MDczNiA4NWI2OGQ3ZDZmNDExZWNjZWNhYjFmZTI0OGNiYzlmMjNkYWZlYjBhIHB5M2sKKzYwNzM3IGEzOWZiODk4YmViMWFkM2RhM2Y2MTExMmFjZmY5NGM3ZGUzOWZlODAgbGVnYWN5LXRydW5rCis2MDczOCA5MmJkMjFlNmE4MmM0ZDJjNzRmNWIyY2VlNTEyZGJhZDExYTY4YmIzIGxlZ2FjeS10cnVuaworNjA3MzkgNTA3NjJiMTk0YTAwYWQ2YjE1YWExZDY3NWRhMWNlZTU1ZTY3MGVhNSBsZWdhY3ktdHJ1bmsKKzYwNzQwIGVlYjcyY2YzN2FlYjRjYjQ4MTU2ZTRkMWNjNGZkZmI0YjExZjVmZDkgbGVnYWN5LXRydW5rCis2MDc0MSA0Y2E3MDY2M2E3OWQwOWE3ZjUwOGQwYTg4MWI0MDUyMjJlYzMzMzQwIGxlZ2FjeS10cnVuaworNjA3NDIgZjBlOGI1NDFmMTEzMjE1ODRmMWU0ZjYyMTk1ODRlZDkzNWE3YTUwOSB0cnVuay1tYXRoCis2MDc0MyAyNzVlZDg1OTNlYzYxZDE2MGZmNmFlZDIyZDU5Y2JjZTEzYzJmZTYyIGxlZ2FjeS10cnVuaworNjA3NDQgYmExN2IyMWFiOTNlNjY0Nzg2OWY2YThlZTcwNTU1NWFjZTQyMzQ0ZCByZWxlYXNlMjUtbWFpbnQKKzYwNzQ1IDc4OWFhNjdkY2U2ZDgyYjIxZmJmNjdlZDU3MzkwMGFlODcwNzIwMzIgbGVnYWN5LXRydW5rCis2MDc0NiA1ZjViNDY0NWQ5MTMyYjRiYTk4ZTY4ZWRiZDRhYjg2Y2E3YjYwYzQzIHB5M2sKKzYwNzQ3IDhlYjhlOWEzMjYwZDZlZTlkMGJiZDViYzBjNjI2ZjgyOTM2YWU1OTQgbGVnYWN5LXRydW5rCis2MDc0OCBhZTU1ZTcxNGQ3NDRkMmEwMjY1M2EwZDE2MmE4Nzc0MGY1MDE5N2M1IHJlbGVhc2UyNS1tYWludAorNjA3NDkgYTQ3ZjVmZmMwODIzNTM3ZjcyNWE1Mjg5N2RlOWUyZjI5MGFmMmI2ZiBsZWdhY3ktdHJ1bmsKKzYwNzUwIDI3Zjg4NTk3ZDAyYjhjMTExOGU1MDViNjkwMTU5OTNmYmRlZDNkNjMgcHkzaworNjA3NTEgYjFjYjZiNDRiNzk4NzMzMzc2ZGJhODkyOTU4MTFlMDA2YTZmYjYwNCBweTNrCis2MDc1MiBkNjczZDAwM2I2Y2E4MWUxNGQ3NjZlNjc4ZWY2OTk3YjM4MjJjNWYzIGxlZ2FjeS10cnVuaworNjA3NTMgOTVjMDAwMjY1NDAwOTA3MDU3NTYyNDE0YzJhZDU0OWViZGVkMjliNiBweTNrCis2MDc1NCBkMzE5ZjQwY2QwMDBmYjg0ZWU0ODc1Nzk4Y2JhNjEyYjM5NTg3ODE5IGxlZ2FjeS10cnVuaworNjA3NTUgOGY4YWRlYzkzY2YyY2JjZDZkY2QwMmM1OTUzNjFmYjQxNDQxZjZhZSBsZWdhY3ktdHJ1bmsKKzYwNzU2IGYxMjA1MTIxZTg0OGE2MjMzY2Q4ZGY0NTQ4Nzc3YzM2YzlmZTRjNTcgcHkzaworNjA3NTggY2VlZTA5ODFmMTQxZDQwMjFjYzU1MzJhNzcxODhmOTc3MmQxMzgxMSBsZWdhY3ktdHJ1bmsKKzYwNzYxIDExNGRjMjE1ODM2OWQ4NzYwMDJlM2Q5ZWRkOTViN2ViYmViMWM0NjAgcHkzaworNjA3NjIgYzUyMDU1ODdiMmFiYzA2N2Y3ZjI4OTViM2VlMDAyZDRlMTNmNmRkYyBsZWdhY3ktdHJ1bmsKKzYwNzYzIGFlOWVjZWRiNGY5MWM2MzhkNTE2Yjg1OWE4YzUyZDllNDI3MjgzZDggcHkzaworNjA3NjQgMThjNzZhZjRmMzY0ODg1NDU3NTY1YzFhYTI1NjUxNjYzM2ExNDZjMiByZWxlYXNlMjUtbWFpbnQKKzYwNzY1IDZlYjY0MmUwYWRkODBjZDVmN2E4NzY2MGQzODYyYTU3NWUwYWViMTkgbGVnYWN5LXRydW5rCis2MDc2NiA3ZWRmNzIyNWIwNWY4YjJiNTc2MTdiYmViZDUxMzZlYTk3OTRmMTU2IHJlbGVhc2UyNS1tYWludAorNjA3NjcgYmVlYTM1YjBlZDUwYWQ1YTFmNTU5NjBjZTUwYjJkOWY4MDcyZDdjZiBsZWdhY3ktdHJ1bmsKKzYwNzY4IGIwZjM4MGE4YjQ0N2I0YjNmZmE0YmQ1ZjVkMjM0ZjdlNjEzNDM0MjQgbGVnYWN5LXRydW5rCis2MDc2OSBmOTAzYTY0M2E4OGIxYjUxYTQ2ODM3Mzg0Zjk0OTc5NGYxMWQ3Yzg3IHB5M2sKKzYwNzcwIDVmMmVhOTY1Zjg1M2VjZTE4ODBiZTA0ODlmZjNmODk5MmM4NTBiM2QgcmVsZWFzZTI1LW1haW50Cis2MDc3MSAzMGI1NmJlYmRlNTRhZGM5ZDc4Y2E5NTMyMGJhYmRhNWFlYzJkM2U4IGxlZ2FjeS10cnVuaworNjA3NzIgNzM3MjMwOGViNjJmOWY2NGQwZDVhYWNmNTgzYjAwZjgxMWU3Mzc4YSBsZWdhY3ktdHJ1bmsKKzYwNzczIDMzMTIyZmY4MzQwNTE1OGViZjZiOGVjMTdhY2E5N2RmYzlkYTBlY2YgbGVnYWN5LXRydW5rCis2MDc3NCA3ZDJmYmI0ZTU3Njg2YTRmZThiNzM3YjI4ZWYxN2I4MzZhYTNiYWRkIHB5M2sKKzYwNzc1IDYwOGJkMTAxNGZiZWE2ZmNkM2RmOWYxNmM0MWNiMWQyMmIzYzA1YjAgdHJ1bmstbWF0aAorNjA3NzYgNTg0ZmMxNWQ0N2FjMmE3MGFkYjZiYjg5NTYxMjI4OTYxMmJmZGM3OSByZWxlYXNlMjUtbWFpbnQKKzYwNzc3IDQ0MGU3MTViYjNkMmVkYWM2MGYzNWMwOTQ4YTUzM2ZjM2E1YmUxYWQgdHJ1bmstbWF0aAorNjA3NzggZDZlZjljYjU0M2FmNWE4MTdiYTA0M2NhYmM1OWUxMzI0NTIzYjA3MiByZWxlYXNlMjUtbWFpbnQKKzYwNzc5IDY4NWNlZTE0MTBmOGUzNDNmODkyOGRkOTUxMDAzZWI5NWZhOWUwZDUgcmVsZWFzZTI1LW1haW50Cis2MDc4MCBmOGZiMjcxMDZlY2MwMTg0ZjJiNmU1NjJhYTkyN2Q2YjVmNTRkMDNlIHJlbGVhc2UyNS1tYWludAorNjA3ODEgMDgzYmY2ZTBhZTUwNTFjYjU1ZDZiZDc0MmM4ZDM0YmZiMTc4MDRhMSByZWxlYXNlMjUtbWFpbnQKKzYwNzgyIDc2YjJkZTljOWIwYjdlNTIzZGE1ZDNlOTc5YjczMGQzNGM5NzU5MDkgcmVsZWFzZTI1LW1haW50Cis2MDc4MyAxZTBlZTMyNGM1MTM2Njg0MzRjODgyMmNkOTJlYmQ4YzFlYjBlNjZiIHJlbGVhc2UyNS1tYWludAorNjA3ODQgNTY3ODZhMmRlZWM0M2I4NzM2YWM1ZmViNDRkMWI3MWNjYTM4ZDg3MCByZWxlYXNlMjUtbWFpbnQKKzYwNzg1IGM3ZTY4M2Q1MmIzYjNlMTEyODhkMjIzZGI2MmQ2NmQ2MTU5OGU2ZGIgbGVnYWN5LXRydW5rCis2MDc4NiA0ZmNiNzAwMTE1ZDgwM2E5ZGIzNGMzOGZlOWRlMDhjMTFhNTliMTVmIGxlZ2FjeS10cnVuaworNjA3ODcgZTcwZjU2Y2Y2OTcyMmUyMDE2OTJjNTEwNDdjZTZkN2E2YWJiZDQ4NiBweTNrCis2MDc4OCA2ODAxNmEwODg4Yjk2ODM3NWMwYWM5ZDIxNTMwNjY4MmQxMjEyZDcyIHRydW5rLW1hdGgKKzYwNzg5IDA5NWNhOWZmMGQ4ZWNhOWMzMWM5NTY4OGJiNjc1ODRlYTVmYTFlMjcgdHJ1bmstbWF0aAorNjA3OTAgZTUxOGUzOWY0YTllOTU5MTc2ZDViMGUxMDJjMTVhZjcxNDlhNmE3MyBsZWdhY3ktdHJ1bmsKKzYwNzkxIGVmNzU0ODE3M2U2MTcxZTk5NTQ5NWNkN2I4MzA3OTM1ODAxMWZkZTIgbGVnYWN5LXRydW5rCis2MDc5MiAwZGQwNWVlZDYzZGU5ODY3NzlmOTUyMjA0MGU5NmMwZjA3YmI1ZTVhIGxlZ2FjeS10cnVuaworNjA3OTMgOGNiZTBiZDkzYzI4YjAxMzIzYTM4OTMyMWIxMjk1OTEyMGVkZWNhMSByZWxlYXNlMjUtbWFpbnQKKzYwNzk0IDE5MGQ1NTM3M2U1MDU3ZDNjOGE3NGE2NGYyYWQ1OTIzYTFlNjgyMmIgbGVnYWN5LXRydW5rCis2MDc5NSA1YWQ4YWU0ZDc4NGU2YWNiODZiZDc4NWMyMDdkNzMzZWM0NmI0MjYzIGxlZ2FjeS10cnVuaworNjA3OTYgZTIyYmM4Yjk2NTQ3M2Y1ODE3NjkzY2Q1OWNiOTM2NjU0ZGNiYWJiMyByZWxlYXNlMjUtbWFpbnQKKzYwNzk3IDY1YWU2OGM3YWNhMzgxNjJiYTA0ODhlMzZmOGRhMDk4YmMxY2EyMWUgbGVnYWN5LXRydW5rCis2MDc5OCA1YzFkYTdiMWI0YTZiODI4ZGJlYjAwODVlOGNlNWYxOWNjNmUxZTFkIGxlZ2FjeS10cnVuaworNjA4MDAgMGE4YWFlNTc1Y2RkZGJmM2QxMzNmY2I0ZWVkOTEwODBlM2ZlNDFmMyByZWxlYXNlMjUtbWFpbnQKKzYwODAxIDFkYzMyMmFkYmI2NzY0MDJlNTJmNTI2OGQ2NmUzNGUxMDc1ZjhlNmEgcmVsZWFzZTI1LW1haW50Cis2MDgwMiA4OWVjNDJiMjk4NjMwZTg4YjFiOTY4YjUzMzA3YjljMDU0NjUxNGU0IHB5M2sKKzYwODAzIDE2N2E5ZmM4Mjg0NDkxY2I1Y2ViZTEyNWExZDk5YTJhMWNlZmQ0MzYgcHkzaworNjA4MDQgODNkMmM3MDQ0M2ZiNzJiMmQ2MDcwZWNhNDQ0NDUxMjY2ODRlY2Y3YSBweTNrCis2MDgwMSBhMDMzNjE3NzkyZDE5ZGVjNGIxZGQwYTY3OWQ3NTRhMjgxNTIyMzNlIHJlbGVhc2UyNS1tYWludAorNjA4MDYgZjE5OWRlMzhhZDAxMDEzNzdhYTQwZmE4MjcyMjJkMDA5MDFiZWM3YyBweTNrCis2MDgwMSA5NTcwMjBlZDNhZmFlOWVlNDY3NWUzNDg1YmE2MWM3YzFiZGZkYTM5IHJlbGVhc2UyNS1tYWludAorNjA4MDEgNzIxYTU5MTBmYmYwZDk5MGE0Y2IyMzVhODg2Mjk5OTllM2FmZDBiMCByZWxlYXNlMjUtbWFpbnQKKzYwODA5IDFjZWIyYTZjNjBlZWFlOWQxNThiNWQ0YjZjNDY2N2M3M2I5ZDAxZDMgcHkzaworNjA4MTAgMmQ5ZWNhMGI0NmZkM2YwOGJiYmRkZWI0NDRhZmZmZDgyMGY2YzJlMyBsZWdhY3ktdHJ1bmsKKzYwODExIDIxODM2ZTBiOWViMDMxOTcxZDZkYWRmZDAxZTlhZmFlYjgyMmMxZjcgbGVnYWN5LXRydW5rCis2MDgxNCA3NDZhOGUxYTc4NWE1OTA1ZjgwM2NiYTcyNTkyMTgzNGE5MGRjYzVmIGxlZ2FjeS10cnVuaworNjA4MTYgZTE4Y2IyMWY1ZjVmZjA3NGM0YzJhZjQ2MzdmNjBjOTAzYjU2NTYzNiB0cnVuay1tYXRoCis2MDgxOSA0MWRjMzY4Njg4OTA4YzNmMGQxMzkyMzcwYmM2NTliODg4MTc5ZDY1IHRydW5rLW1hdGgKKzYwODIyIGVlYzY3YWY0ZDdkZmYxMTViOGRkZTcxZWYyNTExODY4YjRmYWY0YTggbGVnYWN5LXRydW5rCis2MDgyNCAxMGIyNjNhMjAyY2FkMzc4NjNmNzEwNzM3MTgwNzM0NTVhMDc2YTQ2IHRydW5rLW1hdGgKKzYwODI1IGNmNWE1ZDczMmUzY2NiMjkyOGJmOWViMmFhYjBjZWM3MDA2MGMyZjQgdHJ1bmstbWF0aAorNjA4MjYgZjQ4Mzc0YjhjMWMzZDhkMzU2MWEzOWIxMmY1NGIyY2M5NGViYzMwOCB0cnVuay1tYXRoCis2MDgyNyBhMjM1NjczYjlmOGVhMjRiYTgxNzYyNjA0YTNkNGQyMGY5NGZhYTllIGxlZ2FjeS10cnVuaworNjA4MjggODkxZmI1YzNiYzE4MmEzMTc0NWU2Y2I4ZmJiMWI2N2Y1MDI1NGZhYyB0cnVuay1tYXRoCis2MDgyOSBiMmYzZmQ5YTRjNjU3MTQ4ZDIyZDZhYzBmNDVmNTcwNzZiNGMxODUzIHRydW5rLW1hdGgKKzYwODMwIGE5NzY4OWIzZTc0MjVlN2QzOGUxMzllNmZjMDlmZGU2NzdhYzQ0OTkgbGVnYWN5LXRydW5rCis2MDgzMSBiMjdkZTI5YTIzMjdhNjIwODc2OWZlMWYyZWZjYjA3ZWM3NTU5ZTA3IHRydW5rLW1hdGgKKzYwODMyIDMzMjIxYWRjMGMyMDZlMzJmZjE0MWFhMjg1OTllMjA3NWQyNThkMDAgdHJ1bmstbWF0aAorNjA4MzMgNGI0MzIxNDYxYTlmMDI4N2NhN2JkYzAwZTU0ZWFiYzAzZTMzNWI4ZiB0cnVuay1tYXRoCis2MDgzNCBhNTczOTI1YzkxZTQyZWEwY2E3YjdhMWFhNmI2MTgyYTgwMWRiZDk5IHRydW5rLW1hdGgKKzYwODM1IDNhNTVjMGZkODIyZmIzMDVhOWM5ODE5MzdmMGI0NDRmY2I0ZGJmYWUgbGVnYWN5LXRydW5rCis2MDgzNiA3YTM1NWI2YjIxYWM4ZDY0YTZjMTU3M2M0NzY1Zjk0YjZjM2FjMTgwIHRydW5rLW1hdGgKKzYwODM3IGRmNTFiYWQ4NjcxMDA1NDZhYzE3MDIzY2ZiMjhiMTUyYTliMmQ0MmEgbGVnYWN5LXRydW5rCis2MDgzOCA0NTA0ZGZjYzE5MjRkZDVmMzAzZTIyYjVkNTJmZjYwOTVhM2YwMWM2IHJlbGVhc2UyNS1tYWludAorNjA4MzkgM2M0ZDU5M2UxNTM4NjViN2NmNmVkYmYzNmNjNjk4M2RkNmJiNDYyOCByZWxlYXNlMjUtbWFpbnQKKzYwODQwIDkxNWZkYWNmNzAyZGEzYWI0ZTFhZjU2OWIyYzkxYzM5ZDVmNjhhZGIgbGVnYWN5LXRydW5rCis2MDg0MSA1NTcyMzZkNzUyZTJkOTc5ZWUyZmUyMmNkOWI4ZjMzYmMwZjI5NmNhIGxlZ2FjeS10cnVuaworNjA4NDIgMGUyYWFhN2I5YjFmYzliYjllNWQ5YWJhNWRhYmFiY2EyMTE2NDMyOCBsZWdhY3ktdHJ1bmsKKzYwODQzIGQ4ZjEyYmFlMzc4YWQwN2U1OTkwMzUxOGVjODFkZDdlNzI2YzZjYTUgbGVnYWN5LXRydW5rCis2MDg0NCAxNjZlM2JhN2RlMjQzNzc1ZWQ4OTUxODgzZGI1YWUwY2IxNTIzMmE1IGxlZ2FjeS10cnVuaworNjA4NDUgYzQ0NzUyZDkwZmQyY2NlNDBkOWI1NmRkMmY0ZmJlMThhMjVkNTQ3NSBsZWdhY3ktdHJ1bmsKKzYwODUwIDYyZGYxZTMzOTgzMmI2ZjY4ZjQyMTNkODQ3OTg4YzQ0MmNhYzcxOTMgbGVnYWN5LXRydW5rCis2MDg1MSA3MTEzOWI2OTI0MzliZGVkODE4MmIzODZlZGQwMTJkMjY1ZGJkMWM2IGxlZ2FjeS10cnVuaworNjA4NTIgOWFjZWI5MDU0YjNmOWZmMmE3MDk5ZDYyMjIxMGE5MGY1YzE1ZjVjMyB0cnVuay1tYXRoCis2MDg1MyA3YzRjNDYzNDIxMzczYjUyZTRlNzU3NWVmMTZmNTc5NDAwMjhkMGI2IHB5M2sKKzYwODU0IGQzNzg1OWYyOWU1MTFhMTJjNDdjY2M4MTA1OTAzMDgxNjVjNzdmNjUgdHJ1bmstbWF0aAorNjA4NTUgOGM2OGRiODZmZjg3YTQxM2JiZGFkMGQ1NjU1ZGZkNjJkZDBiMTBiNSBsZWdhY3ktdHJ1bmsKKzYwODU2IDFhODllOTEzMzM3Mzk1MDdlMjZlOTZkYWFhYmUwYzU4NjMzOGIyMDYgdHJ1bmstbWF0aAorNjA4NTcgMzE4Y2E2YmM4OWEzZDVkZjNjNmRmNWZhN2Q4ZmI1Nzg4OWQyODk1YyB0cnVuay1tYXRoCis2MDg2MCBmMzc4ZWRkMjFkZjI2ZjYyMjkzMzdlMTAwODZhNGRkYzQzN2QzMWY0IGxlZ2FjeS10cnVuaworNjA4NjEgYWMwOTViNzc0ZTE5M2JmNGY4NzliNTY2YjEyODRhYzhiNmY1YjI1OSB0cnVuay1tYXRoCis2MDg3MSAyNzBmY2QyZTk3ODI2OGE0NDMyODYzNDNiNGFlZjZmYzQxMWYxN2ViIGxlZ2FjeS10cnVuaworNjA4NzIgNjU1MDY1OWRiYzlkYjY2ZTA1OThmY2ZkMmVlYTgyNzQ4N2QzY2VlNiBsZWdhY3ktdHJ1bmsKKzYwODczIDYyMTIzNjczOTBlMzI0YWM3MWI3MTlhODk3NDliYzhmOGM4YjQzZmEgbGVnYWN5LXRydW5rCis2MDg3NCAxODcyYmQ2Y2Y0YjQ1YjU4YWRhOWUyOThkMzliYzNmYTg4MjlhNTI2IHB5M2sKKzYwODc1IDEyZmYxNDZmNTlhNzA3MWFkOGQwODU3NTM3MWViN2ExZTFiNTIzZjQgdHJ1bmstbWF0aAorNjA4NzYgOTNiNjE1NzQxMDc0MGM4M2I2YjgyMTQ4MTNlNDBlMDQxZTBjNWZiOSBsZWdhY3ktdHJ1bmsKKzYwODc3IDA4Y2I1YWJmYjViNmEyNGIxOGRmMmYzMjZjZWMxNDE5OWJiYzM1YmIgbGVnYWN5LXRydW5rCis2MDg3OCBjYzAyMzJkZTA2NmMzM2RlNjU5MmE1YjUwNzM4MmExMTc3NmI1YzAwIGxlZ2FjeS10cnVuaworNjA4NzkgYjcyMzFiZjZiZmI3OTU5ZTJjN2FkZDkyMzY4NDM0MTY5N2I4MGZhMSBsZWdhY3ktdHJ1bmsKKzYwODgwIDdhZjk1NTg0MzkyOTYyOWY2Y2YzOWEwNzBjZDk4ZGM1MmJlMzZiMzcgcHkzaworNjA4ODEgMjFlYjFlNmVkYWZhZjM5ZTcxNDM5MGEzZTJjN2NiN2UzMzUyNzMyZiBweTNrCis2MDg4MiA5Y2M3YTg2NzM3Yzk2NTJmZjNhNTMxODY3MjBlY2IwZjRiOWU3MDYzIGxlZ2FjeS10cnVuaworNjA4ODMgM2QyZmYwMTQ2NTc0OTBjYjBkMWJhZDc1YzU4YjRlNzU4ZTI3YWFmNCBsZWdhY3ktdHJ1bmsKKzYwODg0IDFiYzkyM2ExMDdkOTU2ZTY5ZThhY2IxNzQwMWE3NmNkMGUxYThjNjEgbGVnYWN5LXRydW5rCis2MDg4NSAwZTkyZWY1N2MwZDRhOWVkM2YzMjZjY2UzMDNmMWIxNTQxMjQ0MDQwIGxlZ2FjeS10cnVuaworNjA4ODYgZDRiMGYxMjdjZmNiMWU5MGI1YTA1ZjhhYjMzMDM3MmM4ZjMzYmU2MiB0cnVuay1tYXRoCis2MDg4NyA1MDg3NDE1MDU0ZjE5Mzc4NmViZDlhM2Q2OWNkNzU3YjM0MTU1YzVlIGxlZ2FjeS10cnVuaworNjA4OTEgMmVmY2Q3ZjYwNmY4Y2Q1MWIyYWRmM2IyMWNhMjNhYmI3YTZhZTEyMCBsZWdhY3ktdHJ1bmsKKzYwODkyIGJmNmIyNjhlNzdmM2M0MmYwZGM4NTM1NWE5MzdlZDQ1Nzc4OWM0ZTcgcmVsZWFzZTI1LW1haW50Cis2MDg5MyAzZmM1ODYzMDdkNjY5M2M0ZDNlMjhiNTQ2ZWQ3NDZjZGZlYjcxZmQwIGxlZ2FjeS10cnVuaworNjA4OTQgOGVjZTVjYTRhNzg1ZTA3NGRmMTM5ZTk3NWYzZGM5MWUwYzc1OGNlMCBweTNrCis2MDg5NSA2MDZkNGNjNWNkYjMwYmJhZDE2Y2QzNjE1NzUyOGIzMThmOGNhMjZiIHB5M2sKKzYwODk2IDI3YmVhZTIxYTgyYzk2OTQzZDZhZDFkZDg0ZTdkN2VjZjczYTI3ZmIgcmVsZWFzZTI1LW1haW50Cis2MDg5NyBiYzcwZThiODlhMWMwNTZjNjQ1NDExMWVlNTlhYzBlNjEyYjAyOGViIHB5M2sKKzYwODk4IGIwY2M3YTZkYTFlMDMyZTJiZDUxYzJlMTM0NDc1MzZlODliNWI3ODcgdHJ1bmstbWF0aAorNjA4OTkgM2VlNzc5NTk4NTdhZjNhYTFmODVhZmJjYTk0OWM0ZDY0MWY2Yjk3OSBsZWdhY3ktdHJ1bmsKKzYwOTAwIDI5NWYzN2ZjNjIxYjk1M2MxN2ViNWY2Yjc5MDE5NDUwM2JhNDkyNjkgcHkzaworNjA5MDEgZjlmNDc5Y2U1MGQwYmE0ZGYwN2VkM2I5ODdjNDE1ZWY5NzU0ZDhkMCBsZWdhY3ktdHJ1bmsKKzYwOTAyIDE1ZDU3NzZmMjcwM2NjMDg3ODhhNWQ4NTVmZGU2NjEwNWNhMWI2MTcgcHkzaworNjA5MDMgOWUyNmMwYjIzOTg3ZjVmNjMxYzM0ODY2OTY1YzdlZGJhZWYyNGE5ZSByZWxlYXNlMjUtbWFpbnQKKzYwOTA0IGM0NzRjOTI3ZTAzNjBmZTIyZThlZWJiNTJiNjY2ZjZiOTBiMjZkMWUgdHJ1bmstbWF0aAorNjA5MDYgMjlhNjZlNjIxZGJlM2YyZDc5YzM1MzM2Mjg2MDI2OTUwM2NkODkyOSBweTNrCis2MDkwNyAyZmY1MWM0MTJlNTc3YjU0NWE5YmZkZTMyYTJhNDYxZDE3NjljM2Y0IGxlZ2FjeS10cnVuaworNjA5MDkgMGVhMjM2YTcxZDc3NzNjNmYxMjI4MTkyYWY5MGVmMDRjODFiMzAzZiBsZWdhY3ktdHJ1bmsKKzYwOTEwIDVkNzI2ZGEyMWQ3NTQzMTA1ZmJlZmI0N2Y4YmFjYzVmYmMwMzA1NzggbGVnYWN5LXRydW5rCis2MDkxMSAwOWIxNjdhNDAxOGI2ZGE2OGUyMDgxMmViZjFhMDUzNTdlMGI2MjI0IHJlbGVhc2UyNS1tYWludAorNjA5MTIgMTUxZTdmZmM3ZTg5MzY4YTA2MGY1YWIwN2QyNDFiOWVhN2RjZTJmMyByZWxlYXNlMjUtbWFpbnQKKzYwOTEzIGQxMjE5OWQ2MDJkM2NhOWFiM2RmODlmZDQwZGJhZGU5MjgxMGYzODUgcmVsZWFzZTI1LW1haW50Cis2MDkxNCAxZDUwOGJiYmRiNDlhMmIxMTYyOWVlMTg2YTYzOTI4MjkxYjA4Njk0IHJlbGVhc2UyNS1tYWludAorNjA5MTUgOWY0MjhhNWU2MmIzMTQyN2NjNWZhZjA3Yjc3NGQzOWQzNDQ2ZDkwZCByZWxlYXNlMjUtbWFpbnQKKzYwOTE1IDk0NTUwMTY1ZDYyNjgyMmEwYmQ1MWQzZWQyYjYwM2RmMThhYWU5NGQgcmVsZWFzZTI1LW1haW50Cis2MDkxOCA4MGVjZjY3MzQ3ZTk1NDFmMTM2NGEyNDg5NDU0YWJhZWYzOWM3YzBkIGxlZ2FjeS10cnVuaworNjA5MjAgMWM5NThmZTcxOGUzZTA4OTAyMjNhMDQwODI5NDc3NzRhMTIyYmQ1MSBsaWJmZmkzLWJyYW5jaAorNjA5MjEgYjUyNjVhY2JlZTc1Y2RmZTQ5ZjJkYTU3ODdjMTZjYzQ5NDQyZWE3OCBsZWdhY3ktdHJ1bmsKKzYwOTIyIGY2ZWVlYTAxOWMxZjRjZTVkNTdiOWYzY2JkYmRkZGRjYTBjMTMzMDUgbGliZmZpMy1icmFuY2gKKzYwOTIzIDhhMTg3ZjU2Mjk1OTQ5MjVjMTVmNDQ3MTU0OTcyODI1NjRmODBhYjkgbGVnYWN5LXRydW5rCis2MDkyNCBmODJiZDllZjdkNzg4M2M0MGM3YTg0NjI2NGQzOGU3NjZmZjIyODE2IGxlZ2FjeS10cnVuaworNjA5MjUgMDBiZGQ5NmRkZWRhMzFhMzIzNTczYmI3ODYzZWM2YjQ5ZTQ0NDkxOSBsZWdhY3ktdHJ1bmsKKzYwOTI2IDkwNDhjZTllMzdjOGVmZmIxMGJmZGI3MmU1ZGNlMDI5Y2RhMTQ4ZDggbGliZmZpMy1icmFuY2gKKzYwOTI3IGY5ZTI1NTYyYjJkMWI5OWUzZmE0NTBhNjM3YWUxN2FjYTcwM2RhN2YgbGVnYWN5LXRydW5rCis2MDkyOCBlOWJjNGZiZGExOTEyNWRlNzMxNjRhMmIzOTU0ZTdlMzJkYzk1MzYxIGxlZ2FjeS10cnVuaworNjA5MjkgNTk1M2Y2ZmMwMjA0NDk1MWMwOWM5MGEyYmRjYjFhZjk3ZjE2ODhlYyBsaWJmZmkzLWJyYW5jaAorNjA5MzAgMzM3ODJjYTlmNmRjZDMzMzFiMzk0N2Y3ZGI3NzczYTE3NzhkYzcyOSBsaWJmZmkzLWJyYW5jaAorNjA5MzEgMTg0ZDFiMjI3NWRjODc2YWI1ZTk1ZTNlNTIwOTQyNDQ5ZWQ1NmJmNCBweTNrCis2MDkzMiA3ZDI2MjMwYmI3NjMwMmIyNmVlMWUxY2Q5ZTg5NjE1OGRkZDRkZmZmIGxlZ2FjeS10cnVuaworNjA5MzMgZWMwYTg1N2U4OTZkZGFhYTFiYjk3YTg3OTRhNTY2MWI5OWU2ZTBhMyBsaWJmZmkzLWJyYW5jaAorNjA5MzQgN2JlMjBmNDhmZjY3MGZhODYwMDhlZmE1MDU0NTY3ZDM2YzYzMGE4NyBweTNrCis2MDkzNSBkODlkNGRmOTY3ZTYwYzk3OTkxODg2YTRhMWVjZWNhNmYwNDYxZWE1IGxpYmZmaTMtYnJhbmNoCis2MDkzNiAzNGFmZTZjYjAyYTE1OGMxNzRlMDViZDQ3ODUyMDlkNWMyZDcxYjMzIGxlZ2FjeS10cnVuaworNjA5MzcgOTMwMDUzYzlkYjFkYzM5NjVkODA2NTMyZmNiNjBkNjkwYThhODY0MSByZWxlYXNlMjUtbWFpbnQKKzYwOTM4IGM1OWZkODJhNTZiMDMzM2VmNjAwODRiODY0YmZhYmUwZTEzY2Y2OTIgbGVnYWN5LXRydW5rCis2MDk0MCBlMjg4N2RjNWJkYjVhNmFiODBkYWY5Y2VlNGM0ZmRiZWFkNDRkNDBhIGxpYmZmaTMtYnJhbmNoCis2MDk0MSBhOWUxZmRhZjQxM2Q5ZmYyNmIyOGRmZDU5MjM0NTA3MWNjMmI5OGJlIHB5M2sKKzYwOTQyIDNjYzU3ZmQ4N2QwZTBlOTYwOWQ4ZWMzYzdhOTIzNmYzYmU5NDZmYWEgbGVnYWN5LXRydW5rCis2MDk0MyAwMmQ0Zjk4YTdlMTMyZWVlZTdiM2Q4ZGVlOTVhNTA3ZjIyNDUxY2ZhIGxpYmZmaTMtYnJhbmNoCis2MDk0NCAzYmJmOTZkOTY2MzkxMjQ3MjRjMmM4ZjI0NGQyN2Q0ZjE5Mjg1M2VmIGxpYmZmaTMtYnJhbmNoCis2MDk0NSA2ZWE2Yzg3YTc1MDEyN2VhYzBhMmJjNDVjNWEzYTg1ODhmYmQ4YzZjIGxpYmZmaTMtYnJhbmNoCis2MDk0NiA5MmRiNjlkYzhkNGIwNjU5NzQyZGRkMjVlMWRmNmE4OThlZTM5M2I4IGxpYmZmaTMtYnJhbmNoCis2MDk0NyA4ZWVmNTZlMDk4NmNmMDEyMTUyYTQxYjg3NDU5NzJhYWUxNjdiODYwIGxpYmZmaTMtYnJhbmNoCis2MDk0OCA5OGMzZjlhMWQzNjYzMDBmNWM4NDViZmVjOGZlNzJiMDQ3YmE2NDM0IGxpYmZmaTMtYnJhbmNoCis2MDk0OSA4NWM2MzAzNmNhMDE5MTI1ZDFiNGI4ZTA4MjhjN2UyMGMyNTM0NzVkIGxpYmZmaTMtYnJhbmNoCis2MDk1MCBmMGY4YjIwMDE1MTVlMDVkOTM1OWNhMzgwZWU2YWM3Y2FhNjE4N2ZiIGxpYmZmaTMtYnJhbmNoCis2MDk1MSBhN2YzNTBiM2VkMjQ5MDYzYzM2YmY4MDMwN2FmMWJjZDFhMmNhNjBiIGxpYmZmaTMtYnJhbmNoCis2MDk1MiAxYjRjZmEwMDZiZTE1OTA5MTBjMzdlMjZlZjA0MTNhNzAxMjI4M2VjIGxpYmZmaTMtYnJhbmNoCis2MDk1MyAzNzMwOWUzM2M0MmM0NTJkYWY2MGY0MmYzNWZlNmFkMGJkZmJlOGZlIHJlbGVhc2UyNS1tYWludAorNjA5NTMgNDU0NjY4MTNkZWY3N2NiMmJiZjU1NDg1ZTA3NjI0YjFjNWY3OGUwZiByZWxlYXNlMjUtbWFpbnQKKzYwOTU1IGI4ODdkYmEyYjVlMWMxNDI4MTAzZDI1MjM3MjMyM2NlZDBiMzMzM2EgbGVnYWN5LXRydW5rCis2MDk1NiA4NTNhZjViYmI0OTdiMjMwMzcxNjVmNTU0OTU5YWFlZDQ3MmI2MjY5IGxlZ2FjeS10cnVuaworNjA5NTcgYmM5ZmQ4NGFmZGVjY2ViM2M5NmFjZTI4YjY3YWI2MmExNzQ0NDIzZiBsZWdhY3ktdHJ1bmsKKzYwOTU4IGFiMzhkNzcxZjU2ZGE5OTZhZGY0NTNlMWNmNWVhZWNmNDAzNGZlYmIgbGVnYWN5LXRydW5rCis2MDk1OSBkNDY2Mjc3MzBhMmEzMDNlZWE5ZjBmZGZlZmFjN2M2OGJkZTRhN2Y4IHB5M2sKKzYwOTYwIDQyN2I1NGM3ZWUyNTJkNjQ0NjI1YWMyOGM0MGZlNmU1NjljYjM2OTMgbGliZmZpMy1icmFuY2gKKzYwOTYxIDZkNmEyOTNmYmFmM2I1MTA4ZDVmOGRjMDdmM2RlZGE2ODNiZTI3YjQgbGliZmZpMy1icmFuY2gKKzYwOTYyIDRhOTUyMmZkNzVhNmUyYWI1NzY1YWM2YjgyMmRhZTJjNjk2MDE1OTMgbGVnYWN5LXRydW5rCis2MDk2MyAwOTFiMjc4NzZhMWI4NjRlMWY5MDQwNDgwYjI5MGYzNjBlM2VkMjQwIHB5M2sKKzYwOTY0IDQyYjNiMTE3MzkxZGNiNTJjYjZiZDEwMmJiY2U0ZGJkYjA3N2VhZmMgcHkzaworNjA5NjUgNjdhOWQzMzg1ODUxMzgwZTBkZTkzYjczMTg1MzQ5ZjIwOTQxNThjMSBsZWdhY3ktdHJ1bmsKKzYwOTY2IDdjNTFlMWQxNGM4YzU5ZDljNjA1NmVhMDAxM2QxODJhYzU4NjY1MjEgbGliZmZpMy1icmFuY2gKKzYwOTY3IDZhNmNhNWU1NzlmNjZlM2U3NDAwMzFjMDY5OTc1ZGQ0YzkwMjQxMjUgbGliZmZpMy1icmFuY2gKKzYwOTY4IDA3OWUyMWY1OTMxOTNhZDc4M2RlNWIxNTBiYjMyMzQxMmZhNzk3ZTMgbGVnYWN5LXRydW5rCis2MDk2OSAxMWE3M2ZiYmY4NmYyZGYzOTgwNTc4YmQ2NDI0MzZmYjM1NWE0MzBlIGxlZ2FjeS10cnVuaworNjA5NzAgOGViNTk4MzMxMjMxNTcwODVhOGIzMGEyMTQ0ZmRkZWI3N2UzMGM0NiBsZWdhY3ktdHJ1bmsKKzYwOTcxIDFjNzJhNzM4MjEzMzZiMWQ2ZDMzZmFkYTRhZjAzYWQxYmVlOTQwYjQgcHkzaworNjA5NzIgMTQ3YjQ4YjNiYzIzNGU2ODA2OWY1YjNlYzFlNDdiYWMzYzViZWU1ZSBsZWdhY3ktdHJ1bmsKKzYwOTczIDkwMDM0N2Y3MDI1ODRiYjYyNzM1MTYxNGNjZTJiZmU2MGI5YTZlMjcgbGVnYWN5LXRydW5rCis2MDk3NCBjYTVmMmY5NjA2MTc0YzM2NTE5MzY0MjE5ZDFmYWQwNjU1OGU3NWExIGxlZ2FjeS10cnVuaworNjA5NzUgOTZhMzRlZWY4OWEzZDFkYmZlMjQ1MTQ1MTg4YjgwODBhYjljYzc3ZSBsZWdhY3ktdHJ1bmsKKzYwOTc2IGRkYTkyYTA5N2U4YzZmNmQyMjYwYmZlZGUyM2Q1YzQ1NjIwMWRkYzkgbGVnYWN5LXRydW5rCis2MDk3NyA1ZTA3NzJlZDIwZDFkNjhhOTU2NTAyMTUyYzYwYWI5MzJmZGQ0OWRhIHB5M2sKKzYwOTc4IDM5MzgyMmYyZWY5MDFjMzY1NWQ4NGIyYmY4NDA1ZTNlYWI0Yzg1ZWIgbGVnYWN5LXRydW5rCis2MDk3OSBmMWI1MGFhNWQ1YWY0ODNhYTI2M2FhOTdkY2ExYTkzY2U3MTNlY2U4IHB5M2sKKzYwOTgwIDczNGZjMGExOTY1N2Q1ZjBmMmE4NGJhZDkxNWIwNTMxNjY2OTRlMmIgbGVnYWN5LXRydW5rCis2MDk4MSA3YThkZTJhN2IxYTU2YmRmMjIyZmU2ZjE0NjYwNzNhMWViMTRlZTdiIHB5M2sKKzYwOTgyIDhmOTk0ZDY5Nzc0NzU1MGQxMjZhNWVlZjJiYTg3YjljNjQzMWQ4MDcgbGVnYWN5LXRydW5rCis2MDk4MyAzNjU3YzI3ZWEyZmQyYjlhNTc0NzNmZWQ1OTI3M2Y2MmNiMzc5NmYxIGxlZ2FjeS10cnVuaworNjA5ODQgOTMwYjI4MDJjMDM3YjkzNTU0OWUzYTM3ZjA4MDcyMjVmMWI2NzliMiBsZWdhY3ktdHJ1bmsKKzYwOTg1IGQ3ZTIzMmU5ZjFhMWVlMTVjMmIzZjg1OTJmN2I3YzUxMjQ5NmZjMjcgbGVnYWN5LXRydW5rCis2MDk4NyAxYjE5YTU3MTQ1YTViMmY1YTY2ZjZjMzg1ZTRhNDc4YTA3MzBmMmZlIGxlZ2FjeS10cnVuaworNjA5ODggOTc3MTM5NTZjMWIwZGYzYWVkNzg4YWUyMTRlOGU4M2NjNGIwMWEyMyBsZWdhY3ktdHJ1bmsKKzYwOTg5IGJhMzU5YjZjMzNjMzgxNTY0MWVhOTFiMDI3OTZkNWNkNTUyZDcwOTkgbGVnYWN5LXRydW5rCis2MDk5MCA5ZjAzNzg4NzYzZTA5YTA5MDEzNzBjNzI1YTNiMzU3MTBmNzQ1ZWI0IGxlZ2FjeS10cnVuaworNjA5OTEgMWNjNDdlMTI5ZmY0N2Y0ZWE2ZDRkNjRmMmJkNTgwYmZlNjRjOGRlOCBsZWdhY3ktdHJ1bmsKKzYwOTkyIDU4YzNmMzQzOTY3MDhhZGYzNDE3Y2RmNmRiZDJmNzU1ODk2YjVlZDQgcHkzaworNjA5OTMgMmM1ZDkxNmJkMTFjOWE5ZTExNDY1Y2I5NWI3ZGQwYzAwYzczYzgzMiBweTNrCis2MDk5NCA0Mjk4NWViYmZjNDUzMDliNjk0MDRmNDMyZTJjYWFkODI5NzQ4OTg3IGxlZ2FjeS10cnVuaworNjA5OTUgZTg0YWQyYTI1OGE0Njk0OTQyZjkxNDcxZDhjYmJmYTQxM2RlYzAyMSBsZWdhY3ktdHJ1bmsKKzYwOTk2IDk3NGNmZjNlMDAyMTYyMWFlNGFiNDhjZjBlYTc5ZTkwZWNmZmY2Y2YgcmVsZWFzZTI1LW1haW50Cis2MDk5NyAxMzBmYmZiMTYwMzZhZjQ2ODgwMTJkNmJmNWI4OThhNDE0ZjYyMGUxIHJlbGVhc2UyNS1tYWludAorNjA5OTggNzQ4YWYwYjgzNjc0Y2MxYzFmZTBmYzVlZmM5ZDk1ZTlkMWM2YjZkMiByZWxlYXNlMjUtbWFpbnQKKzYwOTk5IGVjN2YwODczYjY2NGRmNDYzNmVkMzFiN2JlZGUwZTAzMWEwMDY0OGUgcmVsZWFzZTI1LW1haW50Cis2MTAwMCAxZDg0YmY1Zjk0Nzg2YTg0NmMwODAyOGY5OWI2YzNiODI3YWNmNDYzIGxlZ2FjeS10cnVuaworNjEwMDEgNDdhNThjYTNlMTBlYjcwMjdkMGNjOTk0ZTNiMWFkZDY1N2ZiOTRiZSBsZWdhY3ktdHJ1bmsKKzYxMDAyIDM5MTVkNWY2NTBmYTlkZTA3YWJiNzFkMjYxMmM4NjFjMTJhNmU0NmYgbGVnYWN5LXRydW5rCis2MTAwMyA3ZGQyYzE3NDYyNjdkMmVjZTE3OTI4MTUzNWFiMGZlYWE5YWQ2NDIwIHB5M2sKKzYxMDA0IDZiYTUzMDhmN2JhNDE2NWI4ZmUyMGQ5OWVlOWJiNTNlMzAyMjYyMzAgbGVnYWN5LXRydW5rCis2MTAwNiBlZWM0YzFlOWU5Y2M4OGZlZDYxMjM4Y2NmNGUzZmViMTZhZWI1NjcxIGxlZ2FjeS10cnVuaworNjEwMDcgNmExM2ZlY2FmMmRmYjI2YzRiMTAwNjUxNDBlYzEwOGI0YzA3NzY3MCByZWxlYXNlMjUtbWFpbnQKKzYxMDA4IDRlYjVhNjY3Yzg4MmI1YTRlMjc0MTgwOGU3ZjZjMDQwZjZmNWJhNjQgbGVnYWN5LXRydW5rCis2MTAwOSA4MGUwYTI5MzBjNmQ1OTg1ZTU0ODQ3ZjJhYzRiNzMyZTBlNDFhMzYyIHJlbGVhc2UyNS1tYWludAorNjEwMTEgMjQxY2Y4MWEwNTA4Nzk3ZmNjNWQ5YjViMDFhY2NjNDc4OGFiMzUzYSBsZWdhY3ktdHJ1bmsKKzYxMDEzIDlmMTgzYWUzNDU4YmZiOGE5MzE3M2MzZjQyNjc3Zjc5YzRkOTYyZjIgbGVnYWN5LXRydW5rCis2MTAxNiA0MGQyNjlkNmRhOWM1ODMwN2MzYWE0NzdhNTI0MDg5NmE3OTVlZDIzIHJlbGVhc2UyNS1tYWludAorNjEwMTcgYTAxMjEzYTU0MjVkMWM0MDUxZWNhMmVkNzg5ZGQ2NDRiNTMyODMzYSBsZWdhY3ktdHJ1bmsKKzYxMDE4IDY2OTMwNDNkMjdmZDMyOTdjYTlmZDkxZTljM2ZlOGI2MmY3ZmYzNjEgbGVnYWN5LXRydW5rCis2MTAxOSA4MTBiZDY3NzM4NjM2ZWM4NTljNmY1MDI5MzE3ZDY3OWYxMGIwNGY5IGxlZ2FjeS10cnVuaworNjEwMjAgMTlkODUyOTQyZGRkZDIyYzEwOWZjNjg2ZjQ4ZDJkYjIxYWU1ZWFjZiBsZWdhY3ktdHJ1bmsKKzYxMDIxIDg1MzFmODhiNTc4ZTIwYTQyOTc2ZTMzNTZhZTFlYmZiMDcwNDc4ZGYgbGVnYWN5LXRydW5rCis2MTAyNCAzMDU3OGUwNGQzNWNkYzBjODYxNWE4Nzc3YmY2MTRjNmJiMGM1OGQyIGxlZ2FjeS10cnVuaworNjEwMjUgMjdiYWIzOTg5ZjYzNTNjZDcyYjNkN2YzZTAzMmMwODk0MzQ2OTg4NyBsZWdhY3ktdHJ1bmsKKzYxMDI3IDgxM2MxNDY4NThmNzhlMTI4YjExNDFmODFiNjQ1ODBjMTYyM2ViMWUgbGVnYWN5LXRydW5rCis2MTAyOCBjMTI2YmQ5YjUwNWJmODZiODFlYWJlNDc5Y2VmNmNiMjEwN2QyYmFlIGxlZ2FjeS10cnVuaworNjEwMjkgNmE5OTJiNjY4MGIxYjc2NDU1Y2UwZTIxMTNjZTQwMzliZDhhNzRkYiBsZWdhY3ktdHJ1bmsKKzYxMDMwIDFiMGViNzZlZjcyYWJkOTA4MmEwOTUxNGU4NzkxODdmY2FhODVjYTAgcmVsZWFzZTI1LW1haW50Cis2MTAzMiA5YjExNWM1ZTkxMTUyYjA3MjNmZmRlOTViOWI1ODEyYjE4YzAyYmE1IGxlZ2FjeS10cnVuaworNjEwMzMgOTdhMTk3MmI2NzJlN2I1YjUzNWFiMDNmZWY4ODJmMWYxZjgzNzY2ZCBsZWdhY3ktdHJ1bmsKKzYxMDM0IDIxYTVlOWE1NDgzYTUyMjQwYjUxYjYyYmRmOTFiNTY0MTJmMzVhYzAgbGVnYWN5LXRydW5rCis2MTAzNSA3ZWZhNGQxYmNlZDM4YzMwYzU3OTlkNTcxMjZmYzRlYmY1ODMyYWU2IGxlZ2FjeS10cnVuaworNjEwMzYgNDg0ODhmYTUwNzI5ZTRmMGJhMDA1YTVlMmIzMzYwMDM3OTY4MDI4YyBweTNrCis2MTAzNyAwMDJhNWFjNzkyYjFlNmE3Zjk5NjdjYTEwMjM0ZjgyZDYyZDlkNjc3IGxlZ2FjeS10cnVuaworNjEwMzggZWFhOGMxOTM5MTA4ZTAxZDE0ZGZlMDAyN2FlNWJmMGQzZTNmYTc5MCBweTNrCis2MTAzOSA4YzdiYTBlZDg0NDNiNTEzNzJmOWM3OWJlOWQzZDUyZWRkMGRhOTY2IGxlZ2FjeS10cnVuaworNjEwNDAgMThmZWQxNGIwNmI2MDY2NGZjMmZkMjBmYzMxNWFiZTY5YjRmYWE3NyBsZWdhY3ktdHJ1bmsKKzYxMDQxIGMwM2FmZjZkMDdmNTNiMTA2YzYyYzYyOTVmOTBjZTViNTZiZTE4MzcgbGVnYWN5LXRydW5rCis2MTA0NiBkODlmZTFkMmZhZGQ4MmEwY2M4MzYxMjhjMWE5MDM0ZDQwYzk4ODRiIGxlZ2FjeS10cnVuaworNjEwNDggYWRlN2FjODhkMmQwOWUyMGU2MjFiNjIxMTlkOGE3MWQwNmQ1OGU1MSBsZWdhY3ktdHJ1bmsKKzYxMDQ5IGFmOTI4ZmYwYzVjNjlkMWM1ODNhMWQ2OWU4MzE0YzBiOGY3ZDQ1N2IgbGVnYWN5LXRydW5rCis2MTA1MCAxYjZmYjU2OTk2MzQ1Nzg0MGFlOTc4MzdmMDMzYWM0MWFkMTgwMmM3IHB5M2sKKzYxMDUxIGJmOGVlNTkzY2JhZDAzYzcyNGU1ZTQ5NmEwZGVkZGY3ZGMzMTViNzcgbGVnYWN5LXRydW5rCis2MTA1MiA1NWVlZmI0M2VmNmYzYWQxYTAxMTc3ZWRhZDAyYzMxNjU2ZjQ1Nzc1IGxlZ2FjeS10cnVuaworNjEwNTQgYTc3ZTFjZjdlZDI1MjYyYTljZjM1MzQ3ZmQ4NmMzMDI3MzhjZDQ2MCBsZWdhY3ktdHJ1bmsKKzYxMDU1IGIwZmRlOTM2NjFjZTg3NTFlZGZjNmJiMzljY2ZjM2E0YjVmZDc4ZjYgcHkzaworNjEwNTYgMDljOWNlZWNkZDU2ZDA0YmYyMzcxOTFjZDE0ODZkNDc2ZDY4YzNhYiBweTNrCis2MTA1NyA3MTI5MzcyZjUzM2Y0MWIzNzQxNTI2YWY4MjY0OTk1YThjODk1NGU4IGxlZ2FjeS10cnVuaworNjEwNTggZGM1YjAxMDcyOTRjMGRjNGY3ZDY4OTUzZmU1MjcxMTEwMWQ1YWM4OSBsZWdhY3ktdHJ1bmsKKzYxMDU5IGU1N2ZmYTJiNWQwN2YwMTI1ZDZjNzg5ZjRiNTE0ZGY5NThmYmY2ZWEgbGVnYWN5LXRydW5rCis2MTA2MCBiMjk4Y2I0OTc1ZDJkZmRjMDEwZWJkZWEwOGM3YzNlOGYwZWMyNmE0IGxlZ2FjeS10cnVuaworNjEwNjEgZmNlNWFmNWNlMTZhNmQ3MGYwMTA2NTU5OWFkM2NiNmJhODIzNDUxZiBweTNrCis2MTA2MiA4YjUyZmY0MWUwZTI3OTYzMzBkYjRlNmMzZGUyYmE4NzkwYjQ5N2VkIHB5M2sKKzYxMDYzIGY4OGJlYmVlYjY3M2U5ODYwODQ4MGVmMTkyOTZjNzcxZmY0MzVkMDYgbGVnYWN5LXRydW5rCis2MTA2NCAzYTZjYTg5ZWY3NmQ0NzQyNWFkZDNkNDk1MWQ0Yzk5MjNhZmExNjZkIGxlZ2FjeS10cnVuaworNjEwNjUgMTdjOGVjODg5ZmY0MmIwY2YyNDIxYjU1ZTU1NzFmNTlkMmEzNzhiMyBsZWdhY3ktdHJ1bmsKKzYxMDY2IGM1ZTc3ZTBmMmYzMmZmYWY0MmM3NWE3NGRkY2ExZTc0ZjNlMDExNzIgcHkzaworNjEwNjcgMTQ0ZTg0NjcyZWY5MzZkOTcwODAxNWZkNzI1MjM0MzMyYWFjZGZlMCBsZWdhY3ktdHJ1bmsKKzYxMDY5IDQyODljNDEwNDI3OTAzNmVmYjg2MmQyMjQ5MjA4MGM2ODNkYWY0MmYgbGVnYWN5LXRydW5rCis2MTA3MSBmNmRjMDhhZDU2NGIxYzY5NmU2N2EzZmI0MjMwYzM5YjZiODdjYzljIGxlZ2FjeS10cnVuaworNjEwNzIgNGY2MzlhZjU4YTE5MGMwOThiNjY1YTM3YjFkZTA1YmI0NmQ4OTBmMyBsZWdhY3ktdHJ1bmsKKzYxMDczIGU4MWU0NWY4MDAyZThjMDlhM2NmMTA3MTI3NmNhMDc2MmUwMzc3ZjQgbGVnYWN5LXRydW5rCis2MTA3NCA0NWZjM2VjYjMwMjNlZDgwYzk3NTkwMThiMmI5MmVmZTdhMTAxZDNkIGxlZ2FjeS10cnVuaworNjEwNzUgOWIzODFlZDFkYjE0MzMyZTQxNGY5Nzk0MjI2YjIyNTRiNjZhYTRmMCBsZWdhY3ktdHJ1bmsKKzYxMDc2IDYyNGFlODdmMWM5NjFmZDkxZjVhMTU1ZmJhNjg5YzNkNjRlZmQxMjUgbGVnYWN5LXRydW5rCis2MTA3NyAwODhkZmMwZjcxYjQ5ODBjYjhlMjk1MzA2NWEwZWE0NzdmODk4OWQwIGxlZ2FjeS10cnVuaworNjEwNzggNGFlNDMzMTRiNzQ2MjhmOWY5Y2JlYzczN2E3ZWY5NDE2NjZiMzBjNCBsZWdhY3ktdHJ1bmsKKzYxMDc5IGJmMWFiM2JmNzk5Yzg2MzY4Mzg4YzI5YThjYjEyZjRiNzhkZDY5NDYgbGVnYWN5LXRydW5rCis2MTA4MCBjYWNkN2JhMTFiNzc1OGMxODkyOTYwMmZmMmUwY2ZiNmJjZjNjZjM3IGxlZ2FjeS10cnVuaworNjEwODEgMmIzNjcyNTBiMGNkMzM1OTE3YjMyMDI1NGVlOTg4NTM2MzRhY2JlMyBsZWdhY3ktdHJ1bmsKKzYxMDgyIGZlNzM5NGJjNzlkNjNlMjM1MjM5OGYxMjQwOTQwNDQyMTk5NmFhZmEgbGVnYWN5LXRydW5rCis2MTA4MyA3YWZlZjhmNDNlNGE1MmUwODAxOGQ2YzljYzAxNDIyODgwMzcxMDE1IHB5M2sKKzYxMDg0IGM1N2NiMmY4YzM1MDUyYzU0NjQ2Mjg4MGM2YTc5MzBlNWEyMjk5MTEgbGVnYWN5LXRydW5rCis2MTA4NSBkMTMyM2ZjZjNhYTE3OTUzZGMwMjRjNjUyZmIyMGI2ZTdjMDk0MGQ0IHB5M2sKKzYxMDg2IGYzM2Y2NmEyMDgyZmJmMzI2ZmY3NGU2MmY0YmYyNDRlMDAxNzMwOTggbGVnYWN5LXRydW5rCis2MTA4NyBmZmRkMzFmMWNkMjA5NGQyNmI4YjBjMGFiNGY4NmI1NTA5ZTY3MzkxIGxlZ2FjeS10cnVuaworNjEwODggY2E0NWViNzFmMmQyYmEzMWVjZDJhZmIyYjJmZjVkZWJiZjEzNWUwYyBsZWdhY3ktdHJ1bmsKKzYxMDg5IGU0MjVkZGE0ZjYzMDA2MGRmNmFlODJhYWZlOTUxNjAyZDE1MzI2YzEgbGVnYWN5LXRydW5rCis2MTA5MCBmMmYzM2RiNTg5MjAwYmVjM2JkM2I3OTY5MjgwOTA1NGM3ZTEyOTJmIGxlZ2FjeS10cnVuaworNjEwOTEgN2Q3MzQ3ZGQ5NGU4NzdkNzY5OWQ2N2RlN2M5MmU1ZmQyZTZmNGZhYiBsZWdhY3ktdHJ1bmsKKzYxMDkzIGY3ODg0MTY0ZjA4ODliZWI2MTIwYzFlMjY2NmZiNTNhNjdlNDQ2N2IgbGliZmZpMy1icmFuY2gKKzYxMDk0IDJjOTMxODNiOGEzYzI2OTQ0NmM1MzRmMDVhYmMyOTk0OTQ1ZTkwMmIgbGliZmZpMy1icmFuY2gKKzYxMDk1IDZjNDYxMjI1NWY2MDUyYzJhYWE0OWM4MTdkMmE3ODYwMDJmN2M2NjAgbGliZmZpMy1icmFuY2gKKzYxMDk2IGI3OGMzYTQzNzFkNTExMTBhMzc1NDY4ZDcwNGU2MGQyYjUxNjQ4ZTAgbGliZmZpMy1icmFuY2gKKzYxMDk3IGQxNzY5MGM1MDc2NjY4MzhjNmNiOWY3YjNhM2M2NDI4MDUwYTlhMjAgbGliZmZpMy1icmFuY2gKKzYxMDk4IDY1OTJlNWE5MGMyY2Q4NGYyMTBmZDlmNjZkYTJhNzQ4ZjQ4NGI1MWUgbGVnYWN5LXRydW5rCis2MTA5OSA4YWFmMTQ5NWRhMzk1OWNkODQ0Y2I1YTZkZDE2ZjNlMjlhMzYzMDE0IGxlZ2FjeS10cnVuaworNjExMDAgM2U0MzVhMjExMzU2OTY4ZDdlNDBlYjIzMWI5ZTZiNWE1ZWIxMzNhMyBsZWdhY3ktdHJ1bmsKKzYxMTAxIGQ0NDM0ZjAzYjk3MDIyYjI3NWYwNDU2YmEwMzY2MmFmMDNhZTg0ZGIgbGVnYWN5LXRydW5rCis2MTEwMiA5NmQ1YTE1NzMxNmUzNTE4MDkyNzdkODNlNDYyOTNmZDRlNzhiNThlIGxlZ2FjeS10cnVuaworNjExMDMgOGMzYzViNGVlZjU1NTcxOTM5ODU2YjMzMTdhMjA2MjUxMWI2ODE5ZCBweTNrCis2MTEwNCA4ZGQzMGZlMTFhNGIzNGQxMDc3YmU4MDhmMmUwZjE0YWRiODQzNDRiIHB5M2sKKzYxMTA1IDExODhlZGUxNTczNWI5Yjg2OTkxMGNjNDZmODdkNTdjMTk3ZWM2ZjUgbGVnYWN5LXRydW5rCis2MTEwNiBjYzIyMDc0NWU0ZTU5M2U2YzM2YjZmNmRmMmY3NGE1NDBjZDgyZTNlIGxlZ2FjeS10cnVuaworNjExMDcgNTA0YjQzNTdiZGRkMzhlNzNhM2NlZWE2MjZkMjk5MDMwMDQxMmUzMyBsZWdhY3ktdHJ1bmsKKzYxMTA4IDJkMmIwZTE1NWYxOThmYmM2ZjYwN2YxYzgyOTNiOGU4YTYwOTg1NjcgbGVnYWN5LXRydW5rCis2MTEwOSBiZjNmYTM3ZmU3OWNkMDM4YzJlZDNmYjY0MmNiNTY0NDZjYzc5NDk5IGxlZ2FjeS10cnVuaworNjExMTAgMGNiNDgxOTU2NDUyZmM1ZjVjMTAxZWUzZjI0MDhjOTk2NTVhYWE4ZCBweTNrCis2MTExMSAyNDI1NDQzMGU4OWEwYzhlMDVkNzVkOThmODBkNmJlMzI2YmE2ZTY2IHRydW5rLW1hdGgKKzYxMTEyIDAxMjhjZTc3MzU0ZjYwNTI2ZGI4ZGM4N2VlNTA3NjkzNGIzYmE0YzIgcHkzaworNjExMTMgNzEwZDUyNWIwNTRjODFlYjJjZTdiNjJlYWM0OWEyMTZmNGRmMDg4ZiBsZWdhY3ktdHJ1bmsKKzYxMTE0IGMzOGRjYjdkOTRhNmRhOWJkZmNhYjhmNDdmOTQzZTUzNzI4ZDI1ZjUgcHkzaworNjExMTUgZTRmZmU2NDk5NTQ4MWE5NzEwNWI5MzAwYjg5ZWZkN2NjZWM2ZjViOSBweTNrCis2MTExNiA1OTc2MmQ2NzE0YTMxM2I5NWQ5MmQ1YjNkZjY3YTYzNWEyYjAwZTFhIGxlZ2FjeS10cnVuaworNjExMTcgOTcyZmM3ZDdjYjcyNjk3OGMyODU1MDI2YzQ0MjhiNzFlNzQxNTEwMSBweTNrCis2MTExOCA0M2UwODQ4NDdlNTMzMjM0MDFlOGNmN2MyZDAyOGMyNjhjY2Y4MDI4IGxlZ2FjeS10cnVuaworNjExMTkgN2RhMzZiNDljOWU1YWFlMmY4NTA1ZDNlYzA2YjM2YjYxMGRhYWRhMiBsZWdhY3ktdHJ1bmsKKzYxMTIwIGM1NDY1MjM2Njc3MjhjOTU3MDdkZDM4NWNlMGFiMjc4MDZiNWUzMTMgcHkzaworNjExMjEgZGJmMWRkYzVmNDc5NTM3OTQ3NDVmNmZjOWZkZTJlNTQyOWRhZTBmMyBweTNrCis2MTEyMyBiY2U0YzQwZGY3ZGY3NGVmZDg3ZmVlMjkyMDllYjFjZTMzNmYxOTQzIGxlZ2FjeS10cnVuaworNjExMjQgMTA5NjJiM2Y3N2E5YjM4MWI2MzE4MTZhY2IxNmE4ZmM0OWNkNjU5NSBsZWdhY3ktdHJ1bmsKKzYxMTI1IGZhY2YwMWYxNWIxNTM1NTU5YzJiYTA1YzRmNWFhNzIwNDZiODhmMWMgbGVnYWN5LXRydW5rCis2MTEyNiA5MzdhM2M1YWY2OTE5MmI4ZWQxOGY0ZTdhZWY2YzFlNTllY2QwZGI4IHB5M2sKKzYxMTI3IDhjZDk4NGMxN2RlYzg1YWMwNzM5MTg1ZDBlY2NlN2QwZTQ5ZmM1OGMgcHkzaworNjExMjggYjI2OWMyZDAzZmQyZDZhMjcwOGVjZjY2MzBiN2ZlYTIxOTI1YmE5OCBsZWdhY3ktdHJ1bmsKKzYxMTMyIDA5NDA3MTNiNjcyNmNhMjZmM2JkOWU2ZmY0NWMwZTg3YmY1ZDBmN2UgbGVnYWN5LXRydW5rCis2MTEzMyAwNWMzOTYxOTFlNDMyOTFmNzYwYmMyMDI5Mzc5M2Y2YTk0ZmUzYjU3IGxlZ2FjeS10cnVuaworNjExMzUgNGE5NTg4YjFlNGI5NWRmMTNiZDUxMDhlYmEzNDdjMDYxZWZlMjMxNCBsZWdhY3ktdHJ1bmsKKzYxMTM2IDg5Y2ZiMzhhNGI5ODYyM2NhMDU1MjZkNmFiOTIyNjA3ZWQwOGVlMGYgbGVnYWN5LXRydW5rCis2MTEzNyAyMDdjYTBhOGFmZDAwMjMwYWJiNWVjZTI0NzdkNjhmYjczMGIyYTQwIHB5M2sKKzYxMTM4IGNhMTFjZjI0ZWI4NTVmNWM4NmNjMWM0MGYwNDdiNDY1Y2JlN2U0OGEgbGVnYWN5LXRydW5rCis2MTEzOSA2N2Q0MDQ4NjY4NDYyMDk0ZWRmM2VjZTc1NmY0MDI5YTYyZmQ1MDc1IGxlZ2FjeS10cnVuaworNjExNDAgMDJhMDFlNTc4ZDZjNWEwYmUzNDM3ODMwNjY2MGMzZmNjNGQ1OWM2MyBweTNrCis2MTE0MSBiN2VlOTA3NGNhMGViM2I3N2VmZmQyYjIzMWIzMDkxNjc5MTYwZWEwIGxlZ2FjeS10cnVuaworNjExNDIgZmM2ZjkwNTQ1Y2I0OGU1Y2VmNWY2ZWNiYjEwZmU2ZWNjZGNkNzk3YyBweTNrCis2MTE0MyAwMDIzYzA0MjI4ZTZiMzUzMzA1ZDVjYWRhYThmZTY1OTE4MzE4MTA2IGxlZ2FjeS10cnVuaworNjExNDQgODk0NmUyN2E0NTYzYmMyZDNkYjI5ZTQ2MGY5OGMxODFhZGU3NWRmMiBsZWdhY3ktdHJ1bmsKKzYxMTQ1IDliOGZjNDA1ZjliMDRmYzUxMWE2YzIzODExMTk5NGU4MTIyODVjNDQgcHkzaworNjExNDYgOWFkNTQyZWEwNWJhMWRhOWIwMDYxZTJlZTkyZThjOTUwN2Y0MDY2MyBsZWdhY3ktdHJ1bmsKKzYxMTQ3IDQ0ZDEwZDM5MDkyYzY1ZWMyZmViY2NhZTcyNmM4NjJmZjRiODc1NDcgbGVnYWN5LXRydW5rCis2MTE0OCA2YTA0ZGJiMGQxNGI0OWQxNWYzMGRhM2Y3N2QzOWY1ZjY0YTA5ZTY2IGxlZ2FjeS10cnVuaworNjExNDkgMzEyNzk1NmYzYjMzZTdkMWRmYTJmNWUyNzIxNTU4Njg4Yzk1NWJiMiBsZWdhY3ktdHJ1bmsKKzYxMTUwIGE4ZmJkOTI3MTRhOWE5YzQ3MjI3YjhmMjZlODc2ZjQ0ZWU4MjYwN2QgbGVnYWN5LXRydW5rCis2MTE1MSAyZDBiZDA5NWM0MjBiMDcxMTAwMGQ5YmU2Njg0OGY2Y2ZkOTcyYjNiIGxlZ2FjeS10cnVuaworNjExNTIgMGFkZmJhOGFlOTU3MTNjNGUwZDcyZjE1ZDA4OTZkYWZiZmE2YjhkNCBsZWdhY3ktdHJ1bmsKKzYxMTUzIDgyYzNiMGI1YWE5MjU4ZDg4ZTE3Zjk3ZDE1ZjA4ZjA3MmY0OGU3ZTMgcHkzaworNjExNTQgYzA5ZGI3OGJkMDY2Y2NiMTJkMTU4Nzg5ZGJkZjM0OThhNjEzODkzYSBweTNrCis2MTE1NSBjYzU1NDNiNTYxMGIyZDA2NTI4NDQ0NjY4NDk2OWRlZDllZjY1ZjQzIHB5M2sKKzYxMTU2IDBlMDE2OWIwZWFjYzZkZGY4MDY4ZDVjN2NkMTg0NzNhN2MzMGI5ZDkgcHkzaworNjExNTcgNWJhMDY2OTBjMTg0Nzk5YjA1YzVkYjYwMTEwZTIzZmE4YzcwYTUzOCBsZWdhY3ktdHJ1bmsKKzYxMTU4IGRmMTU4MjdmMzQ4ODFiOWFmMDkzNjM1MDgxM2NlZDVjMTIzYzgyMzAgcHkzaworNjExNTkgMzYyYTQ2ZTdjMzNhMmE2YWY2N2E3OTc0MzBmZDY0ZmI5MDU3NjY2YSBweTNrCis2MTE2MSAyMGE0MjY3NGIxMTEwNGFiOTg1ODY5YTFkYmU3NGQxNjBlNWY1NGQzIHB5M2sKKzYxMTYzIGNkMTVhNWU5YzFkZTU5YmJlZmRhN2Y2ZmY4NWY0NjEyMDA1NmQzZjQgdHJ1bmstbWF0aAorNjExNjQgYzEyNWM2MWUwNmE4NjA2NzMyMGI1MjZkODAxZmE5ZjdjZWJjZGY1NSB0cnVuay1tYXRoCis2MTE2NSA3MGM0MWJkNjgwYjVlN2NiMDFhNDI1NmJlY2U5YjMyNGVhNjRkMDgwIGxlZ2FjeS10cnVuaworNjExNjYgMzQzOWZhMjE1ZmFlYzBhZTE4Y2IyODQzOTRmMWNjNTA0NTk1ZGJlYSBsZWdhY3ktdHJ1bmsKKzYxMTY3IDViNzA3OGVjY2VlODM2OTdmNTQ0MTc0MmRmOGU5YWRjNTRlN2NjODIgbGVnYWN5LXRydW5rCis2MTE2OCBhNjJmOTVhNGFkZmM1ZTJhZDI2MzZlMDc2NDliYmM3N2E0MDc1NTAxIGxlZ2FjeS10cnVuaworNjExNzAgNDA2MGRiMTI2ZWNmMzZjNTA1NDI4YzI0ZGM2ZGI1NGYxZDU3YWM1OSBsZWdhY3ktdHJ1bmsKKzYxMTcxIDhiYmU1MzFmY2QzYzhjYTcxZjViNDFkMTI2YjM4ZGUxYzdjYWVlNGQgbGVnYWN5LXRydW5rCis2MTE3MiBmNzJiMmRlOTk3Yjk5Mjc4ODVhOTRjNzM5YzlhYzk3ODFiMjg3ZmJkIGxlZ2FjeS10cnVuaworNjExNzMgOTZjYThjN2NlZGM0ZDAzMWViYjIwOGU1YWRhOTMxOGU2MDhjYTYyOCBsZWdhY3ktdHJ1bmsKKzYxMTc0IDc2MjhjYjQwM2M1M2UxYTM2YWUzZDJmOTQ4YjE3MTU1OTZhNjYzNjUgbGVnYWN5LXRydW5rCis2MTE3NSBiYmRmMDZhODZhMjQzMjk4YjIxMDc0ZTlhZTUzY2FjY2FjMDg0YzMxIGxlZ2FjeS10cnVuaworNjExNzYgMGE4ZWVjYWM1YWQxZGM5MzQ3ZGU0Y2FiNDcyNWI4MTYxMWYwNWZlYSBsZWdhY3ktdHJ1bmsKKzYxMTc3IGY2NTNjMGI4OTE2YjhlNTY1YjcwNzY2ZDkxYTNmMjI1MGQ0ZTY2ODggbGVnYWN5LXRydW5rCis2MTE3OCA0NzMyOGQ3NmU4YWJiZDE3NjMxZWQ2NjgwNWI3NTJlOGZjMTVhM2I4IHJlbGVhc2UyMy1tYWludAorNjExNzkgNTRmMWNiOGE4MWY2NjAyNWM3ZWYxMjZlOGU3ZTQ0ZWI0MDM1NmQzMiByZWxlYXNlMjQtbWFpbnQKKzYxMTgwIDA1NjUxMzBkN2Q5ZjY0YzBkZjQ0MGU1YzIxNWYyYTRkZTgzNDYwY2MgcmVsZWFzZTI0LW1haW50Cis2MTE4MSAxZjdkNjI4YzcwYTlhZWZlNzYyYzJjMzIyMTA4NzZmYWY4ZDY0Yzc4IHJlbGVhc2UyNC1tYWludAorNjExODIgN2ExZmM2MWQ1YzNlNDVmM2EyMjE1ZDQyY2E4NTY4NjFhMTgwZDExOSByZWxlYXNlMjQtbWFpbnQKKzYxMTgzIDVjY2I2ZWIyMDJmZjIxYzAxODAwNDc1NTVlY2E2NjliYjkyNmNlMTcgbGVnYWN5LXRydW5rCis2MTE4NCA4OGMxZTE3Y2VmZmNmMzU5M2ZiMWI1YjBkNjE3NDZhZWMwYWU5ODFjIHJlbGVhc2UyMy1tYWludAorNjExODUgODkzYzdiZDRhOTJiZDg4OWE4NWU2OTFmNDkxODhjMzdiMGE3MjM1NyByZWxlYXNlMjMtbWFpbnQKKzYxMTg2IDU2NjgxZDViZWU3MDkzMGJjNGNkODFjMjg5MWZjZTRjMzBlYTY3MGEgcmVsZWFzZTIzLW1haW50Cis2MTE4NyA0ZDcxMzAxYTZkNGI3ZmE5NzhlMGRlMmNmMGFiMjcxYTE0ZWFlMjZiIHB5M2sKKzYxMTg4IGEzMWI2NTA1MTVjYjljYTQxYzU3YzE1ZDRiZGI3M2JjMTM4ZWRjZjAgcHkzaworNjExODkgY2YzYTgwZjFkYTdkMDdhMDM0ZmU0NzEzZjA0OGYzNzk4ZTZhNDllMSBsZWdhY3ktdHJ1bmsKKzYxMTkwIDYwNjhiNzVlYzI3YTBmMTljNzIwMmM4MGUwODBkZTdmZTNkOWY0YTIgbGVnYWN5LXRydW5rCis2MTE5MSA0NGFkNzhmZTM1ZmFiMTMxN2NmY2QwMzE4N2Y0NzY4NTExYWYxZTY4IHB5M2sKKzYxMTkyIGI5MzJmMDM1ZmIzZWY0MzZkYWIwMDYyMWI1M2U3ZjMxM2ZkMDBmZTIgbGVnYWN5LXRydW5rCis2MTE5MyAyNGY0MjMwYmFlYmU3ZGZjNmNiMzc2OWZlOTc5YjMxZGE2OTE3NmE3IHB5M2sKKzYxMTk0IGM2ZDlhMzRmMDI0ZmRiYTQ2NmE5MjI3OWUzZjExNTZjMjkxN2RlMjIgbGVnYWN5LXRydW5rCis2MTE5NSAyYzczYzU4MzNmMjAwNWFlOWY1NmRjY2JjNWY5ZDIwOWEzMjA1ZjJiIGxlZ2FjeS10cnVuaworNjExOTYgN2U0Yjc1M2FmZWM2ZTE3OTRlMzdhYzhlZGM2NDMyNTFlNDM1ZDJhMSBweTNrCis2MTE5OCBhNTUxMzZjNzhiNjA0MWQzZWU2ZjUwNWZlMTFkNWU5YWI0NTViZmZmIGxlZ2FjeS10cnVuaworNjExOTkgYTE4YTQyNGMyYmQzNGU3ODdmOTIzMzg3MTZkODJkN2Q0OGU5MDcwNSBsZWdhY3ktdHJ1bmsKKzYxMjAzIDQxYTcwNzc0NGJjODk4ZGNhM2RmYjBkNGI1NzcyZjUyMjMxNTFmZjEgbGVnYWN5LXRydW5rCis2MTIwNCA2MjgyZGZkNWRjNDk0ZjQwOTFiYTMyODUyOTViNjlhM2JlYjQ3MzJjIGxlZ2FjeS10cnVuaworNjEyMDUgODgyZWJhMTQ1MTE5OGQ1YTBmZmQ4MWJmMjE3OGZmMTdhZGY4N2IzMyBweTNrCis2MTIwNiAyNTQwNmIzZmY5N2E2ZmQyNWRkNTUxMWRkNTA1ZTMxOWIyOGU0YTg5IHB5M2sKKzYxMjA3IDY1ZWY2MDhkZDY2Y2IwNDMyMGI1YzI3MWNmNTcwNWNkOTliMGU0M2YgbGVnYWN5LXRydW5rCis2MTIwOCBlOTllMWQ4YjgwNzc3MGVlOGJlNmIxYWIzNTE2NDUwMzBkMjcwZDkzIHB5M2sKKzYxMjA5IGM1MThmMzk0NzNmZDBiOTAwM2Q4MzgwMTUyMjM2NWJlZmJjNTJiYWMgbGVnYWN5LXRydW5rCis2MTIxMCBhMTU0ZjE5ODI1OTI4Y2JhZjFmMmZjNDMyNzg5YmRlM2YyZTdhNDBlIGxlZ2FjeS10cnVuaworNjEyMTEgMDcyMzkyZWQ0ZWE2OTEzOTE3NzFmNDA5NWQzOTc4NmZkMDg3NTU5ZSBsZWdhY3ktdHJ1bmsKKzYxMjEyIDg0MDEzOGUyNDk4MGM4OTk3NDYzYzNkODY2NDMxNDAwMDBiZDBhYzEgbGVnYWN5LXRydW5rCis2MTIxMyAyZDU1MWQwNDYwMjJlMWI3NDg2NmE2NTU0MjM3OWJlOTJmYmQzYmI3IGxlZ2FjeS10cnVuaworNjEyMTQgNGQzNjFmMDE2NDFjYjYxMWFiM2ZhOTAzYzBlZjM0OGNjNmZhMzk0NCBsZWdhY3ktdHJ1bmsKKzYxMjE3IDkxZDc1NzJlMzVhMWNkMDEwZWEwMTRiZDM4ZDQ2N2E3YzAyMjhjNzkgbGVnYWN5LXRydW5rCis2MTIxOCBkN2U0YzYzZWJjYWQwN2JlNmIyYmMxOGUwM2MyNWVkMWMzMjY0YTI0IGxlZ2FjeS10cnVuaworNjEyMTkgNTQ4OWFmNjg2NDA4YzFlYzA3MmJhMGI4OTZiZjMzMWIxMmVkMmRlMSBsZWdhY3ktdHJ1bmsKKzYxMjIwIDNmYzA5Y2NmMDE0MTg1ZDJjYjRjZWYxYzVhZTM1MDk2MTk2NTBmODcgbGVnYWN5LXRydW5rCis2MTIyMSAwZTIyNGFhMjE5YTIxYjdmYTIyNWRhMTNiMTVlNzEwMTRjMDk0MDI4IGxlZ2FjeS10cnVuaworNjEyMjIgZjNlYjQ1N2U5NmE3NWMzZjk3N2U1NzBiMjVlMzFiZDgxMmRlNWYwZSBsZWdhY3ktdHJ1bmsKKzYxMjI0IGU0NGM3NDViZWMwYmFkYjc5MDE2ZWFjZDBjYTZiMmYzY2ZlODEwYWYgbGVnYWN5LXRydW5rCis2MTIyNSA0ZWEzNmMwMTJhMmRlNTIyNzQyMTIxZDQ5MzI2NTI5Yzk4YzBmYjE5IGxlZ2FjeS10cnVuaworNjEyMjYgZGQwMTZhNmRkY2M1YTkwMjhmMDViYTUxN2FkZDM3Nzk0Nzk0YmE5ZiBsZWdhY3ktdHJ1bmsKKzYxMjMwIDk3YmVhMzkyMzZhOTNiNjljNDRmOTFiZGE5NDI2NzEzNjI2MmNlNTggbGliZmZpMy1icmFuY2gKKzYxMjMxIDJkNDI1MzAxNWY1ODQwYTE0Y2I0ZGFhZGQ3NzA3OTA4YmE1OTJjMzAgbGliZmZpMy1icmFuY2gKKzYxMjMyIDk2YWE2ZDAyN2UyZTc2OTE4MTZlNDliMzA0ZDk3NTgyODE0MjFjYjMgbGliZmZpMy1icmFuY2gKKzYxMjMzIDU1NDZkYzRhNDI2YWFhNjY5OWI0Yzc3YmQyMWFjZGU2N2JiYzUzN2YgbGVnYWN5LXRydW5rCis2MTIzNCBkMzg3YjAxZGJjMWM5ZGFhZjkwNjZiMTE2ODJlN2M5NWY1MzMzM2IwIGxlZ2FjeS10cnVuaworNjEyMzUgOTFjYTk1NDk5MDZhY2FiYzlhYTY1N2U0MWY2YzI1ZTAyNWRjNDdiZSBsZWdhY3ktdHJ1bmsKKzYxMjM2IDQ5NTcwMGVlMzM0NTZmNzY0Y2VjMWMxNDUyOTUyNjhmMTM2ODJiNTQgbGVnYWN5LXRydW5rCis2MTIzNyA4YTVjNzVlZmFlNGMyMGJlOWE3NDE5YjhkYjEwYWUxZWMyNTY2ZjBmIGxlZ2FjeS10cnVuaworNjEyMzggZGQzMThjM2Y2Y2I3OWE3NDk1OWJmNmEyZjUzNTFhYzJmNGYxNDRkZCBweTNrCis2MTIzOSAwMGNiMGEzNWZiNDliMmZjOTdmNmM3NGNiZjNjNzRjYTI1MTZkYWQ1IGxlZ2FjeS10cnVuaworNjEyNDAgZmYzZTlhZWFhNjkyMzViODkyNTkyMDVlZWEzMTY2ZTdjMWU2MzEzOCBsZWdhY3ktdHJ1bmsKKzYxMjQxIDMwZmE2Nzc3MDk2ZjIxMDJlZDdkNGNjYzg3NjJhZGRiMzY0ZWE2NDUgbGVnYWN5LXRydW5rCis2MTI0MiAxMWU5ZTM2NjdiMzY1Y2RlZDc3ZThjMTc2ZWMyOWE5MjFjYjA4MmM3IGxlZ2FjeS10cnVuaworNjEyNDMgYmVhYjllMTBhMThiZGU5NzhmNDI2ZjkwYzhmODlhOGUwOTA4MmI2MiBsZWdhY3ktdHJ1bmsKKzYxMjQ0IDk5NjBmZDJmNWVhOTQwODVhZWU2OTliY2FkOTgwYzUwNDU1YWY5ZWYgbGVnYWN5LXRydW5rCis2MTI0NSAxYTY4ZWNlMTU0N2FiNDdmNzI5N2NkZmJlODYzYWZkNmRjZGFiNWE1IGxlZ2FjeS10cnVuaworNjEyNDYgMjM0NDAxYWRkMjk5OGZiZmE1NDU3ODQ4YzVmNDk4NTJiMzIzZTRmYiBsZWdhY3ktdHJ1bmsKKzYxMjQ3IGM5ZDY2YmRiY2NjZDQ0YTM1OWM1YmI4MzgzYjRlMmFkYjVjODFkZTUgbGVnYWN5LXRydW5rCis2MTI0OCA0MzYxMDUxMjU0NDU5MWY3OGU4N2UxZDA3MGZlYjcyMzc1MzZhZjMwIGxlZ2FjeS10cnVuaworNjEyNDkgZjUyNDY5MTFjOTAzZjBjM2ZlZTFmNTRmYThlOTEwYmUxMzVmMGI5ZiBsZWdhY3ktdHJ1bmsKKzYxMjUyIDBjZDRhZDFjOTE1M2VhOGExNDE2NThiNTE1MjdjNTQ4MTNjMjNiYjEgbGVnYWN5LXRydW5rCis2MTI1MyBkNDFhNDIwNjQwNWMxMzVmZjBkNWQyOTFlYWI2ZmU0ZTE2OTQ2N2RmIGxlZ2FjeS10cnVuaworNjEyNTQgMjIxNmIxMDBiMmQyZWRlZmQyM2ZlYWRhZjU2YzFlZWZiOGVhNmIwOCBsZWdhY3ktdHJ1bmsKKzYxMjU1IDQyODg5YjFhN2RjMjU1ZGQ4MDUwY2Y5MzA4MGRiODZiZGFkZjE1MTggbGVnYWN5LXRydW5rCis2MTI1NiBjMTk3ZTE4NDQ5YjQwNGY5NTNhNTY5NzU1YzgwYWQxZDA5NjJmYTYxIGxlZ2FjeS10cnVuaworNjEyNTcgZWVmYzYwNGFkOTM1YWI4NDMwNjExNmQ5OTZlNTg4NjMxNDVkNDc2NyBsZWdhY3ktdHJ1bmsKKzYxMjYwIGQwYmUyYzM2Y2JmOGQ3OTkyMjBlZjkwMGU1OGRmOTc1ZWJlMTE0MjEgbGVnYWN5LXRydW5rCis2MTI2MSA3Mzk1ZWQwZjBmN2Y3NzQzOTY5YmI5N2ZhNjI3NDg1NDk5OGVhYjY3IGxlZ2FjeS10cnVuaworNjEyNjIgOWIwNDk0MTY3M2YxNzNmMjE0Yzc0OTIzMjI1NzY5ODEzODdkOWMyYSBsZWdhY3ktdHJ1bmsKKzYxMjYzIGVmODkzMzkwNDg3YmFmZDAxZTg4YWZjOGUzZGVhNDhjZDRlYzc5ZjAgbGVnYWN5LXRydW5rCis2MTI2NCA2MWQyMjcwMWE1ZTVlYjYyNmFkN2RkMDlmZjA2MTBhNDVjZmZkYmU2IGxlZ2FjeS10cnVuaworNjEyNjUgYjI2MmJlY2UxMzIzY2MzZTkxMWNkMDFjMTlmZGU0MWYyMGEwNDg0ZSByZWxlYXNlMjUtbWFpbnQKKzYxMjY2IGI4ZWY3MWIwMTQ0NjEwNzY4YTU4NGNkMTQ4NjE0MzBkOWJlOTUzMzAgcmVsZWFzZTI1LW1haW50Cis2MTI2NyA0YzQ3OTkzYWZiMWIxMjMwZGNhZjlkMzA3NTNiNmViMTZiOGVlMzE3IHB5M2sKKzYxMjY4IDBiOGIzZTY2M2UzYTE1Yzc2NDdlYzE4MzdiMWE3NmY1MTRiYmJkMWQgcmVsZWFzZTI1LW1haW50Cis2MTI2OSAwNjVjNGE3NmFjMDFmMTVjYTRmM2JiMzQzMDE4YzAzYjI0MGIyYmFhIGxlZ2FjeS10cnVuaworNjEyNzAgMTU3NDZiZjRhMGE2M2M0OTkwOTM4MzI3NmE5YWExY2Y0ZTk0NjM3MSBsZWdhY3ktdHJ1bmsKKzYxMjcxIGE0YzI2NTU2NWNiNmI2Nzc0NmM2YzRkZDIyNTMxNmU3NzQ5YmQ2NDEgbGVnYWN5LXRydW5rCis2MTI3MiAzOTgwMzEzZDliOGIyN2MwZTIyMzcwY2YyMWM4YjQ2MDM3MTUyMmRkIGxlZ2FjeS10cnVuaworNjEyNzMgMzZmZWY5OWFmMThkMTIxNDNkMzY4Y2RhOGUxODEwMTE0YTY5ODAxNiBsZWdhY3ktdHJ1bmsKKzYxMjc0IGU5YmU2YWViNGRmMDYyMWZiMjkyMThlNTM0NGVlNjhiMWNmNzdiZDUgbGVnYWN5LXRydW5rCis2MTI3NSA4OThkYzBmOGFiNjM1YWY3ZTg2ZmEyMjlmY2MxODEzMzFlN2JjZGEwIGxlZ2FjeS10cnVuaworNjEyNzYgMTdiMmVhMGFmYTYxMTg4ODI4MWEwZjI0OWIwYzZlYjEwMTM1YzhlNiByZWxlYXNlMjUtbWFpbnQKKzYxMjc4IGFmMjY3ZTU0YmYxZGRlOGQ4YjY3ZGYwMjlmMDc5OWVhZDA3ZTg0ODMgbGVnYWN5LXRydW5rCis2MTI3OSBiYmFiOGY2NGY4ZDYyYzU2OWM2ZDNjODAxZjE4YzkzM2JkNDA4NzJlIGxlZ2FjeS10cnVuaworNjEyODAgOWVjYjAzZWYxYzYyNDE5N2I1MjM5NmM3NmM1ZjExNmRjNTg1MDMzNSBweTNrCis2MTI4MSA0ODViMjE5NTQ3NDYwOTdiMjUwNTIyMjRjZTQ5ZTE2MThlZTBkMTU1IHB5M2sKKzYxMjg1IDQ0YWE1OWY4NTkxZGFhNmU3NzRkYThjNmFmYmM1Mjg2ZDJjZTViOTYgbGVnYWN5LXRydW5rCis2MTI4NiAwYmU5YjFjZjFiMTYyMTE2N2JkYWEyZjc4NTcwZDhjYmFlNDViZDgyIGxlZ2FjeS10cnVuaworNjEyODcgNzEyMmZhNjU2OTdiOGE3M2U2MTBkYjQ4NjgxM2EwM2U5NmEzMmFkOCByZWxlYXNlMjUtbWFpbnQKKzYxMjg4IDVmNDliNTY5ZGVkZjExNGM1ZmVjYmFiNWNkNjAyZjllMmE4NTlhOGIgbGVnYWN5LXRydW5rCis2MTI4OSBhODc1NGMwZGI1M2Y1MDMxM2Y1ZGZjNDE3OGVlNmUyN2Y0OTQ3ZmRmIGxlZ2FjeS10cnVuaworNjEyOTAgMzQzNTk3YzdkNjgyYjM1NTI1ODAzNTJkZWRkZDBjZGIzNjk3OGEwNCBsZWdhY3ktdHJ1bmsKKzYxMjkzIDliYmU1NWY5ODY3ZWU5NDg1NGUzNDVmOWFmNzg3ZmNkZTkxNDQ1ZjcgcmVsZWFzZTI1LW1haW50Cis2MTI5OCAzOTFkZTE0MzIyNmZkN2IzNzc5NmJjOTc4ZmYzZjc4ZjA1YjA4OTE5IGxlZ2FjeS10cnVuaworNjEyOTkgZjg2ZmE1ZmVhZjMxNGRmYTk3YjA2MGIwMWJhMjM2NzQyMzM3ODQ3NyByZWxlYXNlMjUtbWFpbnQKKzYxMzAzIDljZjcwNzI5YzIzZjIwODhiYjUwMzBiMDkwOTM5YjM1YmQyMmRlYWUgbGVnYWN5LXRydW5rCis2MTMwNCAzN2FhNDE2YjRjNDdiNGVmNWY5ZjA5M2FjODY4NzU3NDIzMGExNGJhIGxlZ2FjeS10cnVuaworNjEzMDUgZTVhYWRjMDVmNmY1MWVjZDViZDA2Zjc2MmFmYjE2ZTAxMzcyMWY5MCBsZWdhY3ktdHJ1bmsKKzYxMzA2IDQ1MDUwZDM3NmQ1N2ZiODZmODA0MjQ1ZmJmYzA2OGVmNmZmOTE0OWMgcHkzaworNjEzMDcgYzI3YWFiYWUwNmZkYzc1YjIyOGY2OGQzZDkzZjEwNGZkM2EyMzJkMCBweTNrCis2MTMwOCA5YTcyN2M5ZjliYWEyNTc4NjRkNTNhNjdlMmQzYTAwMjFhOTk3YmNhIHB5M2sKKzYxMzA5IGFmNDRjZWYxY2RmNWE1NWM5M2ZkOWYxNzkyZGIwYTliYTg5MmU1YjcgcHkzaworNjEzMTAgYzgzMDYxNmJkMmZjOTMxMDUzYzQxNzk0M2YxNGU5NGY0ZjI1MzZkOSBweTNrCis2MTMxMSA5NDA1M2IyN2EzNTI1OTBhYzIwZDY2YmY1ZDhlNmVlZDQxMTE1OGMxIHB5M2sKKzYxMzEyIDUwNjU0NzgyMmI4ZDAxMDIyZGE2NTUwMGU0YjYxY2E3ZmU5NmQ1MmIgbGVnYWN5LXRydW5rCis2MTMxMyAxNTg0MjA5NGIwODlhMmM3OGI1MDI1YzZjN2VkOGQ4Y2Q5YWFiNjJlIGxlZ2FjeS10cnVuaworNjEzMTQgOGJhYjQxOGNjODc5M2I4YzAwODZhMDAyN2FhODE4ZTVhODI3MjQ4YSBsZWdhY3ktdHJ1bmsKKzYxMzE3IDViNDIzOWMxZjhmODJmNjA5Zjg4ODBhNDM0YzEzOWMxZDU5NjJlMjMgbGVnYWN5LXRydW5rCis2MTMyOSA3ZjIzYjgwNGU5NGMwNGFjNGZiNzVlMTY1NzI5YzRkZjM2NzM2ZWZiIGxlZ2FjeS10cnVuaworNjEzMzAgNjYwNzBmZGJmMGI5MzA3NzMwYzc1ZDE5YjdjMTJiNTk5MTFlNTg5YSBsZWdhY3ktdHJ1bmsKKzYxMzMyIDZmMTk1NzU1ZjE0NGU4MDJkYzFkOGY3MjUxNmRkMGFhMWViODk3MmYgbGVnYWN5LXRydW5rCis2MTMzOSA0NTZjZWVjNjUzNTdjMTY2NTdiMGFkYmJiY2ZlMjcyMGFmMDdhYjA1IHB5M2sKKzYxMzQwIGFlYWEzMDMxNDdlZWIyM2Y0YzBiNDgwMzE2ZWMzNjRlNDEyNjg5YTYgcHkzaworNjEzNDQgYjlkNmY4NzBiZmIxNjhjNWZjMzZjZGVjYzcwYTE5NTgzMDcyYzU1OSBsZWdhY3ktdHJ1bmsKKzYxMzQ1IGQ4ZGY0YWEwNjI2MWRlNWU0YzBhYTA1MWU0NDg2OTdkNDc5MWU0MzcgcmVsZWFzZTI0LW1haW50Cis2MTM0NiAyMDIyOTQzYWQ0NTBjNDFkNjQ3MDhmYjVjYWNhMmQyNjcyYjViOGY4IHJlbGVhc2UyMy1tYWludAorNjEzNDcgNWQ3NjRkNTE4ZjY1ZWJiOTEwODU2OTcyN2E3Yzg4YjMyMGMyN2ViOCByZWxlYXNlMjMtbWFpbnQKKzYxMzQ4IGU4NTcyZDlhYzg1ZWYzZDNlNGMwMGM0ZWQ4ZjFjYTdhNmFlZDk5ZGUgcmVsZWFzZTI0LW1haW50Cis2MTM0OSBmN2MzNjU4YzcxYzNkNmMzMjAzOTgyNTA3MzI3NWY1ZDc4M2FhNDAzIHJlbGVhc2UyNS1tYWludAorNjEzNTAgMTYyYzY5NTJlYTM0ZDRlNzFmNWY5OTk3ZmQ4MGExYjY4ODM5YTJmZCBsZWdhY3ktdHJ1bmsKKzYxMzUxIGNlNWY2ZmQ1NzkxMzJmNGI5NTBiMDk1NWFkY2Y0ZWI4MTg0MDdiZTkgbGVnYWN5LXRydW5rCis2MTM1MiA3ZjRlNjAyMWJjOWY2MDk0ZmUyYTBkNmE3NTBiMGE2ZWE3YzBlZTA0IHB5M2sKKzYxMzU2IGUwOWJjMWM1Mjk1YmMxOTg0NWEwZjM1NGRhMmU4MzA2NmZlYjhlZTYgcHkzaworNjEzNTcgN2FkYWFiNjRlYjcyZTQ3ZTU3ZmJiNGNjYmFmODcwM2QwYzJmNTgxMiBweTNrCis2MTM1OCA3NzUyYTU3ZjljNDkwZDMxZjBmM2FmOGM2MTIxNTUzNjhlMzlkYmQxIHB5M2sKKzYxMzU5IGU0NDY5MTBjOWQ0MzdmNGQ0YTAzMGFiMDE0NGFkYmQxMWFmYTI0YmEgcHkzaworNjEzNjAgNzQwYjU4MDhjNTdhZTdiM2Q0Yzc5M2JhZGU1MTFjZmFmOWY1MmZlZCBweTNrCis2MTM2MSA0MmE2YWFkMzllNWNlOWJkNDVmYmRhM2Y3ZjY5OTE4YjdkNjgzNTM2IHB5M2sKKzYxMzYyIDdiOTVjNTdiNTgyMWJmYWMyN2VlNmIxNWU0NjE2YWUzOTBjMWUzY2IgcHkzaworNjEzNjMgOTg2MzM4ZWIwYzBkZTUyODYyNWQ0NWI5ZmE1MWMzZWZjOGI5MDdhMyBsZWdhY3ktdHJ1bmsKKzYxMzY0IDc0MzFmM2ZhYTM1NjhhNDJlMWVkNDQzZmE2ZDM1Yjc5YTlhYTk0MWIgbGVnYWN5LXRydW5rCis2MTM2NSA5Mzk1YTIyYTk2NmE5NGNhMDg4YjVjNGE3ZDU5MTI0NGY0YjI2ZDUwIGxlZ2FjeS10cnVuaworNjEzNjYgMDExZDc5YWYwNWVhOTEzZmNiZjczM2Q1ZTFlZjI0ZDZiZjJhZjllYyBsZWdhY3ktdHJ1bmsKKzYxMzY3IGQ1MDI0ZWU5ZTg4YTMxYjFiNmM3NDQ0ODQyMWUxM2FkNjgwMjM0M2IgbGVnYWN5LXRydW5rCis2MTM2OCBkNzJkNTI3ZGU3MTE5NjU2NWFmNzM1ZjJhODQ3ZjQ4ODk3NTQ3YTdkIGxlZ2FjeS10cnVuaworNjEzNjkgY2JiOWUyZjRiMjAyODNhY2EzMzU0YTg5Y2RmODQ2ZmIyNzE2NTFhYSBsZWdhY3ktdHJ1bmsKKzYxMzcwIGRiNWIzMjFlZGNiYjJjMWY5M2VhMGVjMTQxZjhiNTY3NjNmYzZkZDcgbGVnYWN5LXRydW5rCis2MTM3MSA2YTMzZDRmNmYxNmY3ODI3ZTZlMmYxZWY0ZTcwNzMzYWFiNjE0ZGE5IGxlZ2FjeS10cnVuaworNjEzNzIgNTQzZThkZGUzNjFmOGE2MWMyMTZlNzc0YWM0ZmZlNzQ2Yzc1MWNiYyBsZWdhY3ktdHJ1bmsKKzYxMzczIDQ5ZGM5YWY5MGIzZDFmMjlkZWRiNWJhZWMzODc0ZDM2MjY5NmJhNGMgbGVnYWN5LXRydW5rCis2MTM3NCA2NjM0MWJlZDgyYjMwNTNmZmU2NmNlODFhNGYxOTI1OGUwNGMwZjlhIGxlZ2FjeS10cnVuaworNjEzNzUgZDk3YmJhZDlhMzVlZWVlMjAzNzFjMjQxYzY0Y2ZkOGRkZmIxMDhhYSBsZWdhY3ktdHJ1bmsKKzYxMzc2IGJjODEzMjY1ZTJjNjUzM2M1NTBjY2VmYmZlNzMyNmYxZWY4ZWEzNTUgbGVnYWN5LXRydW5rCis2MTM3NyBlMmU1NDJmZGFjZDA5ZGViOGFkYTM1ZjYzZjc3YmZmYTc0OGY4MDdiIHB5M2sKKzYxMzc4IGY2YjNjZjJmMzMzMTFmY2U3MTUxYjYxZjdjNmQ4ZDFkYjcxM2U5MjQgbGVnYWN5LXRydW5rCis2MTM3OSA3Yzc4ZWE3MDcyMTllZTRkMDBlNjQ2MzVjY2RhMWFkMjcxOWZiNGQ4IGxlZ2FjeS10cnVuaworNjEzODAgZTdhYTliNWYyMWI1MGQyOGQ4NWQwNjc0YWJjODU3MzRjOGIwZjVlZiB0cnVuay1tYXRoCis2MTM4MSA1MzczNzUxYWQ0YjQxMGI4Mjc3ZjUxNGNmMjRjMmY1MzdmY2ZlMmMzIHRydW5rLW1hdGgKKzYxMzgyIDBlMGMxNDk4YmUxYTgwZjg2Yjk5NDc0YjVjZTJhYmZkMzNkZWIzYmQgbGVnYWN5LXRydW5rCis2MTM4MyAzNTRlMzc3Yzk1OTAyNDRhYmUwN2E5NzkyYThhYTAyYzdjNmMxYTYzIGxlZ2FjeS10cnVuaworNjEzODYgMTY1ODBkYzE0Mjk0ZTkyMjM5ODRlYTkxMjQwYzg5YzE1MjU4ZjhlOCBweTNrCis2MTM4NyAwMDUzZmM5ZjVhMWY2ZTcwNTg2NDQ4YzhlOTJlNTRkZjlkMGM1NzVmIGxlZ2FjeS10cnVuaworNjEzODggOWM4OTA5ZWU1NzFmNGM1MDVmNTExZDVkMWEzN2I2ZmRhNTUzZjViOSBsZWdhY3ktdHJ1bmsKKzYxMzkyIGI5NDBiMWFkOWEzYWEyMTlhMjFhOTQ4YjEyMTdmMWRkMGUwNjBmYWUgbGVnYWN5LXRydW5rCis2MTM5NSBjMDdjNWM3YTkxNGVlMzFmOWQ3MGM0NGJhMGVmZjY0MDE0MmMwYTMwIGxlZ2FjeS10cnVuaworNjEzOTYgODIzZTExZWJmNjY4MjliYWY1NTBiOTE2MDEzYjUzNGZkNzQ1ZjcwOSBsZWdhY3ktdHJ1bmsKKzYxMzk3IGE1YzkzOTIyOWZmMjdmYjQ2NDZkMWVlY2IxYTFlZGRhYmI4ZmVkOGIgcHkzaworNjE0MDIgMjEyZTljOGFkMDg3ZWIxNmM4OTRlMDBlYzk4NTIwMTg0NTU5ZjJjYiBsZWdhY3ktdHJ1bmsKKzYxNDAzIDU5ZWI1YWY2MWNkNzM2ODUxNzM5ODg3YTcwNTJiNjZlZTJjOTliZWEgbGVnYWN5LXRydW5rCis2MTQwNCA1MzFlNjI0MTZlZWI2N2Q1ZTkyOTdlMDc4ODEzYzIyOGZkNTk4ZGUwIGxlZ2FjeS10cnVuaworNjE0MDUgMGQxMGYxOTNiOWJlMjVhNmZlYzg5OWFjNDNmZjYyMGYxMTFkYjUzZiBsZWdhY3ktdHJ1bmsKKzYxNDA2IDRlMzU4ZWQ3ZjUxNTYxN2ZmYzdiYTUyYjAxZTUzZWM0OTgzMThiMTAgbGVnYWN5LXRydW5rCis2MTQwNyBmZWE3YmE4OTEwYTk2MGJmNzBkZDkyZTRlNzdkNzcwMTYxNWNkYjkxIGxlZ2FjeS10cnVuaworNjE0MDggODMyYzgyMGU5ZDE0NGNiNzZjODc3OGFkNmZjZmZlMjMyYjFmNWM0NiBweTNrCis2MTQwOSAwNThmYmZiOTg1YWU4YTBiNjVkNzA0MTVhNjE5OTE1ZThjNWRhZDQwIHB5M2sKKzYxNDEwIDcwMjY1N2VmYWI5YmU5MTM5M2Q5Y2ViNGM5MjcwNjM2MGQ5NTk0YzYgcHkzaworNjE0MTEgYWUyMWE4ZDcwMzAyNmUxODIyMjMwYzQ2ZWZiNmQxYWY2ZjE1NjU0ZiBweTNrCis2MTQxMiBkMGM2NzdkZGQ2Yjg5YzAxNGQ2NWY5MTc0ODcyMDU3ZjhiMjY5NmJkIHB5M2sKKzYxNDEzIDJlMGUxNDAyOTU5ZDNkZTcwN2M1MWY5ZWUxMjYxYjA0MjE0N2ZhYTQgbGVnYWN5LXRydW5rCis2MTQxNCAzOWZiMmM3ODg0MWVhMjU4MjRiYjFhYjA2OTZhMmE5N2RiNWI5YTAxIGxlZ2FjeS10cnVuaworNjE0MjYgMzc5NzMxMjViMmMwY2MwYWY5NTc4ZmJkM2I1NjNiODI3NTQyNWE2ZCBweTNrCis2MTQyNyBkNzBmYWI5N2ViYjVlYTk3MzEwNzVlMzk3YjkxODMxYjMxNDUwZTRmIHB5M2sKKzYxNDMwIDFmMGU3ZTJkYmUxNWNiYWU5ZTU2NDVjNjEzNGZjZTgyNjJiZjNjMmQgcmVsZWFzZTI1LW1haW50Cis2MTQzMSA3OWRlYTY1MzMyZjg2ZjM3ZjljNjUzZGUyNDBjMThlZWY5NmFmZWQ0IGxlZ2FjeS10cnVuaworNjE0MzMgMmZmM2U0MzIxN2I3ZTU0NGEzOWU1NDU4M2U1MGVmZDk2NDc1YTE5YiBsZWdhY3ktdHJ1bmsKKzYxNDM0IDRkMjkxMjdmM2ZhMGQ3YmNhNzI5Y2RjNTAxZDYwZDIyMDkyNjcxOGMgbGVnYWN5LXRydW5rCis2MTQzNSAxNjczMmRiMDA4MjJlYTlkYWUxN2UxYTRhMzNjZWI5MzRlN2YzYTFkIGxlZ2FjeS10cnVuaworNjE0MzYgYzQ0MDJlYzYwYzNhNGExNTJlZTYyNWU3ZDE3YzI1ZjZkMzU1YzU5YyBsZWdhY3ktdHJ1bmsKKzYxNDM4IDRkMzlkNGE2YTlkYmE1YThkODlmZjFjYzVlYjVkZjNmNDNmODdhNjggbGVnYWN5LXRydW5rCis2MTQzOSAyMmE0YTExMWQ1OThhZTEzYmE3MGZiNzIxMzJiMDAyYzUyM2Q4YWQ3IGxlZ2FjeS10cnVuaworNjE0NDAgNDgyNDdhNGIzOGVkZjA5NzNkMTdhNTY0NTQ0ZWVhMGM3YzkyMjJiNCBweTNrCis2MTQ0MiA2MmVmMGVhMDM0ZjRlOTY5MDc5ZTE2NGM4MDU4ZjI1MTZkMDk3N2VhIGxlZ2FjeS10cnVuaworNjE0NDMgYmI1NDNhODA5ZmUyNGM4YzUyNTFlYjI1OGJmMmU5ZDYwZjg1MGYxNSBweTNrCis2MTQ0NCBmMTFjMDAyNDZmYjUyNWQxN2MzNGYyNmU2YTRmYjZjYjY1YzY0MzJlIGxlZ2FjeS10cnVuaworNjE0NDUgYWNiZjljZjU5NGY4YmQ4NTI2NGQ2YTQ0ZjVlZmM0Njg2NjRhYTBkNiBweTNrCis2MTQ0NiAzNmYzYzZiZjJjOTdiZmFmZWQ2OTgxYWYyMzI5Y2I0MzFhMTU3NGEzIHB5M2sKKzYxNDQ3IDBkYjdmYTE0Yzc5NDhiZjE0MzY4ZjY1YzBkZGZmNjhiM2QzZTMwNjEgcHkzaworNjE0NDggY2IzNjBmYzg4OTEyMjc3M2UzYmIyM2U0NzY4ODMwZTIyNmZkZjBmNyBweTNrCis2MTQ0OSA3MTA0NzhhMTk3N2FjZmNjNDVjMzllODY2MzNkZmJiNzIwN2U2MWE5IGxlZ2FjeS10cnVuaworNjE0NTAgODAxOGY1MDY1NjYxYmFhMzJhMDRjZDJiODYyN2MzOWQ1ODFmMDdjNiBsZWdhY3ktdHJ1bmsKKzYxNDUzIDdlOGNlYjM5NDQ3ZWNiYmE2NmMwZWVkNzYxODhjMTlmMTE4ZGY1OWEgbGVnYWN5LXRydW5rCis2MTQ1NCBiNWNiN2E2NzhmMzg5MWZjNDk2N2VhYTc1MzJhODg3MDk4Y2MzYTM3IGxlZ2FjeS10cnVuaworNjE0NTUgZGU2YjI4MzRiOGFmOTkwZDExYTBkNzMzYzU3NzI0ODk4NTc2NWY2NiBweTNrCis2MTQ1NyA0MzE4MjVlYWM0YWUzNzM2M2U0ZTlmZDA0YTY3MGQyODk1M2ZiNWI0IHB5M2sKKzYxNDU4IGQzM2NhZGI1OTVmNjVkZGFmOGIwM2FmOWUwZTZiN2M0OTM0M2Y2YTggbGVnYWN5LXRydW5rCis2MTQ1OSA2YTdmYTg0MjE5MDJhOTU0ZGVjNzc5ZmU5YTdmNGE0NjE4YjFhOTQyIHB5M2sKKzYxNDYwIDJjMjYwYmUxMjQyZDlhZmQyNzMxODQ3ZDQ3MmUzN2Y1ZWI0ODg2NjYgcHkzaworNjE0NjEgMzRmNGQ0N2VjNDNhNGYzNmMxYjdkMDc4YzQxODZlZGFiNDgwNDNiZiBweTNrCis2MTQ2MiA5ZDlhMzhiOGViMWIxMWEwMjgyNWViMDQ1OTBjOWYyNWUxYThkOWY5IHB5M2sKKzYxNDYzIGEyMDBjMzg3ZThiMjY1MTM1ZGUxNmI2ZDllOTdmNjhjZTQ1YjhhMzAgcHkzaworNjE0NjQgMTZiNDQ3NjQ5NDRlYjhhM2VhODJkYzYzZDkwOGUzNjk5YTk2NmY0YSBweTNrCis2MTQ2NSA2YzM5M2RjZDQ1YzQ4ZjA3MDczMmIxYThkOGU4YmZmOGJhYTQ5ZWE5IGxlZ2FjeS10cnVuaworNjE0NjcgMzIyNjkzYmYxMGNhYzZjZDNjMDg3ZTAwMWU2YTk0YzEwMjJlNDExZCBweTNrCis2MTQ2OCA5NzNhMjNjZjZmMGI3YTA5NTllZDZhYjYyY2U3OWIwZGUyN2IxMGU4IGxlZ2FjeS10cnVuaworNjE0NzEgN2YxM2Q2OTA0ZTE0YTQ5NGFlZWM4ODk5ZGFiZDc4YzI0ZWM5ZDRjZCBsZWdhY3ktdHJ1bmsKKzYxNDcyIDhhM2ZhODZjMzBhNmUyYzcyZDVjN2JiZmMyMzhhOTVlYmYzZjYyMmQgbGVnYWN5LXRydW5rCis2MTQ3MyAzNzQ1ZmRiOTkzMmYwN2M0ODRlOWYzMTU1N2JiMjhiNmFmYzUyOWIxIGxlZ2FjeS10cnVuaworNjE0NzQgOGRlZmExZDVmMDY2ZDkzMDE4ZDhiN2M3ZDlmNTdkZTBkNGMzNzZlNSBsZWdhY3ktdHJ1bmsKKzYxNDc1IGZmMGFiN2IyOGY0OTE3Y2Q4NjM3NDA3NGQyZWY0OWE5ODE1YjEyZWMgbGVnYWN5LXRydW5rCis2MTQ3NiBlMzFkMzE3ODFhNzUzZTBkY2E0MWQyNDY2OTcyOWUzOGVmOTEzY2M0IHB5M2sKKzYxNDc4IDc5ZmRjODhmZjllY2RkZTVmOTcyNGFiMGU5YThjNjI0N2ZhN2IzYWEgbGVnYWN5LXRydW5rCis2MTQ4MCA0ZGFiZDkwNzE4N2VhNzM5MWE1NGI1MzFkYTcyZjQzNDZkZDJlMTk1IGxlZ2FjeS10cnVuaworNjE0ODEgOTY2ZmYxNjhiNTY2OTZjMTA1YzMwNDRlNjYyZDE3YWFmMzc4OTBjYyByZWxlYXNlMjUtbWFpbnQKKzYxNDgyIDdjNDg1NGZmY2RjZDg4Y2M1NzJiZWRkODE5NGZmNWQwZmM2MDcwMGUgcHkzaworNjE0ODMgYzBmMTY1ZTFkYmMwNWRjZTUzMzc4MzBmYTQzM2U5ZGEwYjQ1ODNmMiBsZWdhY3ktdHJ1bmsKKzYxNDg0IGE3YmIwMDRlN2YwNmE5M2NkODg1NzNjMmM3OGJmNDdmNjA3NjZjOTkgbGVnYWN5LXRydW5rCis2MTQ4NSAzZGViNzBlNDE4MmEwN2EyYTc5Mjk4MDViMjE2MTE2YWZjYzNmZTljIHJlbGVhc2UyNS1tYWludAorNjE0ODYgMjdlN2RjMmU2MjkwNWU5MjI4ZjllMGFiMWI2OWU0YWIyNTJmN2I4YiBsZWdhY3ktdHJ1bmsKKzYxNDg3IGFhMzNmYjkwZWFhNTJhOWI5YmE3OWVjMGFlMjc2ZTE5MGEyZjllNDcgcHkzaworNjE0ODggMDQ0ODdhZDNkMWJlZjQxNTM1MGZkM2NjYThjYjRkZjZkNzQ5NTY5ZiBsZWdhY3ktdHJ1bmsKKzYxNDg5IDNiYjBmMWExOTM5ZDkzODc4YjRkNjQ5YmVhZThlNzFlZDU5MTlkMWQgbGVnYWN5LXRydW5rCis2MTQ5MCBiMzU5NDgwY2E4ODY0NjBlY2ZlZjg1MTYwODkxOWFmNWEwYTMzMmIwIHB5M2sKKzYxNDkxIDVjMGI1Y2FiZWVjOTY2ZDdmZWM4MzY0Mjk5ZTFhYjgyNzI5NmQxMzEgbGVnYWN5LXRydW5rCis2MTQ5MiBlZGNiMzU0MjE3NmE1M2QxNDgyZWZjNWQyZDg0OWI1NTllZDkzYjE3IGxlZ2FjeS10cnVuaworNjE0OTMgMTM3MjljNzBjOGQ4YzI5NDk5NmYwNzk4OTkxYTRhZGQ5ZGU2NmIwMiBweTNrCis2MTQ5NCAwNDA1MDM3M2Q3OTlkYzBkNTM5MzBjNjkxNTg1ZmMyODJlMDU3NDhjIHB5M2sKKzYxNDk1IDI1NDYzMTNhOGIyN2FkNGZhYzhhYzkyZjJmMmIzOGM5YzgwMWJhMDUgbGVnYWN5LXRydW5rCis2MTQ5NiBjNTI0MTA2OWZmZmRhYTllN2YxMzVmY2ZhNGJjMWFmNjgwMjI2ZGQwIGxlZ2FjeS10cnVuaworNjE0OTggNTI2ODJiZDczOGE3NWNmNGNiNzEyZTZiMThiNDNjZjMyMjliYWNhZiBsZWdhY3ktdHJ1bmsKKzYxNTAzIGUyMjdlZDJjYTlkMTVhYmJiNjEzMzE0MWIzOTFhMDI1NGJhMzlmMmEgbGVnYWN5LXRydW5rCis2MTUwNCBkNGJiZjliNDcxMGY0N2Q4ZjdjNmMwZmQwNjkzYjAzMjRiOTQyZjQwIGxlZ2FjeS10cnVuaworNjE1MDcgNmZjNmE4MDY3ODRmOTVmMDYwZmVlZWY0NGJmNTM1YjZiMDQ5NjI2YyBsZWdhY3ktdHJ1bmsKKzYxNTA4IDg2NzM2NDAxZDM5NDQ0N2FjYWZlOWM0NTY2NDRkNDAyYzYzN2U4ZWUgcHkzaworNjE1MDkgOTczNjFkOTE3ZDIyZDQwMWEzNmNlODZkZmY2YWQwOWJmMmVkYTIzNCBsZWdhY3ktdHJ1bmsKKzYxNTEwIDQ2MzQyNDMxNzk1NTBhZjU1ODJkYTQwYzM3YTNkODNlZGZhNzIwMTUgbGVnYWN5LXRydW5rCis2MTUxMCAxMTdiYmQ0NGFkYWU2NDZhZWI2NTRjY2VkYmM5YzNhZTYyNjY1Y2MyIHJlbGVhc2UyNS1tYWludAorNjE1MTUgOGYwMGEwOTQ4ZjAwZTJlNTdlNzkyMDY1YWIxNzM2YWRiNWFiMzU0MSBsZWdhY3ktdHJ1bmsKKzYxNTE2IDZjMTdkYWM3MDU3MTdjZmNkNDI0MGEzODcxM2E3ZjhmNDdlZjU2ZWUgbGVnYWN5LXRydW5rCis2MTUxNyA5NjM4ZDJlYTJmNTdiYWEzNjQ3NWE4NTgyM2Q3ZDczMDA2M2Y1YWU5IGxlZ2FjeS10cnVuaworNjE1MTggM2IzOWI3YmIyYzA3YzI2OGY5YTcxODg0OGIxZTdlNjM1ODU4YTJiZSBsZWdhY3ktdHJ1bmsKKzYxNTE5IGUxNDgyODViZDUxMTgzODkwZDE1OTU2ZmEzMGE5MDJjMDljMTlmYzMgcHkzaworNjE1MjAgOTY2MDFmOGYzMzkxNDQ1ZDkyYjJhNTc3MmIyNjAxNjU1OTE5NTBhZiBsZWdhY3ktdHJ1bmsKKzYxNTIxIDMwYzRlMWNhODQyMTIzNjY5ODlkZjgzM2FlMjE3NzAyNWYxNzQ3N2EgcHkzaworNjE1MjIgOWI4YzRiNTEwN2YwZjU1Y2I3M2MyMDc1ZjZhM2MxMmZhMTJjZjIyZSBweTNrCis2MTUyMyAyMTEzOWVhNTliNmJhMjU2NWZiNmI5NDc2NTg4MDNjYjgyNWQxZTA1IGxlZ2FjeS10cnVuaworNjE1MjQgNzhjYThjMjU2MWRiOGU3OTY2OGQxNTc1ZGY4ZjFlN2Y5YjA4MzE1ZCBsZWdhY3ktdHJ1bmsKKzYxNTI1IDZmMGVkYTNlOTJiMzYxYjIxODc3ZTY2NDA1YjU1ZjY4YjBkN2Q2NjYgbGVnYWN5LXRydW5rCis2MTUyNiA1ODFjM2U1YjM0OWIxMjBkMjk2NTBhZGQ2NmQxNDhkZDBkOGVhYTk5IGxlZ2FjeS10cnVuaworNjE1MjcgOTIzMzgwYWNkMWNkZDgwNTVjOThiYzY3NzM1ZDBkNGI5ODY4OGVlNCBsZWdhY3ktdHJ1bmsKKzYxNTI4IGM0MjQwOTliNGNlNGI0ZGU0YmFhYTgzZjYwMGYxMmMwNGRjZmFkOGMgbGVnYWN5LXRydW5rCis2MTUyOSA1MDc3MWEzZmFkMmNhYWE4OGY5NDBlYTM5ZWZiMDA4MjRjNjBiOGEyIGxlZ2FjeS10cnVuaworNjE1MzAgZjMwMmJlZjhhMDA0YWFlZjEyNzEzM2IxNDI0YzVkNTU4MjA1ZmQzMSBweTNrCis2MTUzMSAxY2Q5MzBiODM1YTYzOTI4ZDE3MTgxYmZlNzMxOGY2YjZiYzE0ODE0IHB5M2sKKzYxNTMyIGVhOTE5MTRiY2I5Nzc0ZjU4NTQ5YmRhOTAzNWI1Zjk3NDJjZjhiNmUgbGVnYWN5LXRydW5rCis2MTUzMyBhNjI4ZWY4MmViN2UwYzllMzk1YzVjOGIwNDY5ZmM3ZWU3N2Q5MDgxIHB5M2sKKzYxNTM1IGUwZThiZWYwZDVlY2NiMjcyNGUxNDczOTk2N2YzZWVlMDdiOGViNmEgcHkzaworNjE1MzggY2M3NThlOGRkYzlkNzk0MDUyYWEwYWQwODY1NzlhMjFjNDc3OWFiYyBsZWdhY3ktdHJ1bmsKKzYxNTM5IDk0YTYwODJhNzcwZmEzMGZjZjg1ZDBiZDIxYmQ3MjQ5OTVmMTM4NmEgbGVnYWN5LXRydW5rCis2MTU0MCAzYTcyY2JjYzFiYjgwNmMyYjY5YzZjNWFmMjU3NWZkNDE2ODljMmI3IGxlZ2FjeS10cnVuaworNjE1NDIgZWI2ZDAwNzQ1M2JjMmMyNzlkMDk2MTYxM2UyMDc4ZGZlYTM1MDIwYyByZWxlYXNlMjUtbWFpbnQKKzYxNTQ0IGRjNGQ2OGFlOWQzZGJmMDQxNTk3Njg3ZGJmZDE2YjA0NDMzZDU5NzIgcmVsZWFzZTI1LW1haW50Cis2MTU1MyAwZDc2NTljMmI5OTg1Mjc0YjY2MzFjNmExYjA3MjY1YmY2ZjU2NzMwIHB5M2sKKzYxNTU2IDUxNTYzMzYxNTczNWFmMDZhYjgzNmY5ZDFhZDY3ODQ1YjE0NzFiNGIgbGVnYWN5LXRydW5rCis2MTU1NyBiY2U2OWRiNzJlMDA0M2M1ODEyYjc5MGE3NTQzOGE1YzY2ZTg1NmM5IHB5M2sKKzYxNTU4IDgzYzU1YWNmYjk1OTg5YWU4OTFiN2ZjMDc3YzAzOTQwOTY4ZGUzNTMgcHkzaworNjE1NTkgMWJiNjdlNTAzZGZmY2E0MzY0ZGY2NGI1M2JmY2U2NWEyYmZiN2NmYyBsZWdhY3ktdHJ1bmsKKzYxNTYwIDAwNWRiOTM0ZWUyNWVmOTkwYmRhYjVlYTU2ZmRlZDViNmNlZmVkZmMgbGVnYWN5LXRydW5rCis2MTU2MSAwZTc5NzkzZmZlODcwNWUxZDVlODExNTBkZmYxZTRlYjg1Yjg2NjE5IHB5M2sKKzYxNTYyIDE2YzU3NmRlZTlkM2JhYzE4NGI0MTQ5MzZmZGNkZGFlYTEyNmQxNTAgcHkzaworNjE1NjMgMmY2NDBmMGYwNjk3NmIyZWFkOTAzOTMzZjY2MGEyMDMxMGIyMTE4MCBsZWdhY3ktdHJ1bmsKKzYxNTY0IGVlMGRmY2NmOGNlZTZlY2U4ODdiZDUzOTI2Nzg3ODcyOGI2NTlhYzIgbGVnYWN5LXRydW5rCis2MTU2NSBiMGQwMTk2OWJiYzg3ZGU0NWRjMTdjNzc2ZjViMThhZDY2MTI1ZmY4IGxlZ2FjeS10cnVuaworNjE1NjYgZjNiZTEyMjIwZmQ3ZTAxYmJiMmE4MDY1Y2JmMWFkNmY0YzZlODA2MCBweTNrCis2MTU2NyBmYTcwZTZhZTgzMWFlMWRlYWQxYjlhZGJhZmUwZmU1ZjU2MmExZTYxIHB5M2sKKzYxNTY4IDA1YWMzYzE5YjdhODAzNjQzMjU2YWFhYzk3NjIxYWNiMDVmYTM4ZDUgcHkzaworNjE1NzAgODYwZTIzYTYxZTU1MTBmYmMzM2UzOGFmM2Q1NjUxMTBkYzg3YjcyYSBsZWdhY3ktdHJ1bmsKKzYxNTcxIDI4OTNjMDEyOWZlNWMzNjAyYTY1MzkzNjhmM2FjZGE0ZDczYjE4YWUgbGVnYWN5LXRydW5rCis2MTU3MiBjOGM1NDdjNTFmOWE2ZjBhZTU1MDNmMDk1ZTBiOTFkMGJkYzc3YTRjIHB5M2sKKzYxNTczIDUxZTI0NTEyZTMwNTI4NTU2YzJiYjcxYTRjNjgwMjYxMDg3OTc3MmIgcHkzaworNjE1NzUgMjM4NWUxNmFjYjQyNzlkNTFmYzcxYWMwOTFmMWJhMjYwOWFmYzZiYyBsZWdhY3ktdHJ1bmsKKzYxNTc2IDk2YmQ5NzIyZTMxZDMwMDkyNWE2YTYzMWVmY2RjZTRiYTg3NzYzNzMgbGVnYWN5LXRydW5rCis2MTU3NyA3MjdmNzQzY2Y2MzBiMWQxOWUwZTIyNmExODcyNjUwMmRmNzM5MzhmIGxlZ2FjeS10cnVuaworNjE1NzggZjdhNmYzMzk0MzEwNjc0MDIyMTQ4N2ZhYzhiMDZjOGQ5MzRhZDEzMCBweTNrCis2MTU3OSBmMDk2ZWY5YzQxMTRmNzU3ZmZlM2E3MDJmOTJlNjg1Y2ViNDM5ZWNkIHB5M2sKKzYxNTgwIGQ4N2Q3ZmMyYzJiZjMzYWQ1MDJlZmUyMDlmN2MzYWI5Mjg0ZWMyYTAgbGVnYWN5LXRydW5rCis2MTU4MSAxOWQ0YjY5N2ZiZjlhZDUzYzAwNDU2MmMzN2I3YWY4YzU5N2NkZTlmIGxlZ2FjeS10cnVuaworNjE1ODIgNzMzYzNlZTE5ODk5NjY3ZDVmNjhjZGQxY2I3OWU5MWViMTgwMjcxNyBsZWdhY3ktdHJ1bmsKKzYxNTg1IGM3N2UzMTE5ZTI2NzVlMDg2MTJiOTY4ZWRlZjY3ODA4ODg2NjQ0ZGUgbGVnYWN5LXRydW5rCis2MTU4NiAxZGZiOWFlNzhhMzcyN2NmODNlNDUwZDZiZjI4YmZkZDE2MTg4OWNhIGxlZ2FjeS10cnVuaworNjE1ODcgNGNhNzExOWQxNzAwNWRmNjE1MTFhNWEwNDRlMTZkOGE4YzQ2NDM5OSBsZWdhY3ktdHJ1bmsKKzYxNTg4IGI4NGUwZTIzY2FiZDg5MDQ3NWE1NzgxNjEwZTg3NjNjYmYxNGZhNDEgcHkzaworNjE1OTAgN2Y3NzcwNzE5ZTg0ODY5OWM5MTQxODQ2MmEyYTg1MzAwMTY2MDY2MCBsZWdhY3ktdHJ1bmsKKzYxNTkxIGQ0ZTFkYjg3OTdmNmRjODBjYWZjMTNlZDhlYWY1ZDNmYTJkMmU2M2IgbGVnYWN5LXRydW5rCis2MTU5MiA4MTkxMTY5NTAwOTkwODdiZWFmYWViOGRjMjM4YzgwM2U3Nzg5NWRlIHB5M2sKKzYxNTkzIGQ1Y2ZmN2Y5YTE0MmJlNzIwNjI0Y2FiZTg2OTAwNDMxNGEyNDYxYTMgbGVnYWN5LXRydW5rCis2MTU5NSAyYTAxMDc1Y2Q5MDIxNDI3MjdhZTY1YTVmNThjOThkNTA4NWUwOTMwIGxlZ2FjeS10cnVuaworNjE1OTYgMzAyNjI1ZmE2YTJhNjlhZGM4ZDc5MjQyOWVkOGU4ODQ2N2Y4MGQyZSBsZWdhY3ktdHJ1bmsKKzYxNTk3IDQ1OTcwYjA0Y2U4M2UyZDUzNDM3NDI4YzZlYjA0MmFiNjQyMzk5OTQgbGVnYWN5LXRydW5rCis2MTYwMCA5NjNkNjdkZjM3MjM3ZTVkYzhhMTE0NmY1YmJjZWI2Y2JjYzdmYzY3IHB5M2sKKzYxNjAyIGE5ODU1ZGI0MGZmYjMzZjRhYjBiNGM5Mzg2MzhkZGRiNWZiY2UyZTUgbGVnYWN5LXRydW5rCis2MTYwMyAxZGEyNDk5NjgzYjQzYzNlMGQxNzZlOTYxMDJiYTdiNzhlNzc3ODUzIHB5M2sKKzYxNjA0IDNiMzIzZmY5MzA0YzVmMDU3NjIyYmZmY2NhYmM5ZTRlYjY5YjhmZWYgcHkzaworNjE2MDUgNDIyYjQ5ZGZkMTViNTNjM2U3NTUwYTViYzVlMzVlNGJiNTRlNDViNiBsZWdhY3ktdHJ1bmsKKzYxNjA2IGUwYzliOWVmMDQ2NjBmOWZiODBlYzA0NTY4YjFjNDNkM2YyMmQ1YzQgbGVnYWN5LXRydW5rCis2MTYwNyA0Mjg0NzE4ZmI2MzFmYWRkMzIyMjZmNDU5ZmNlOTQ5NjRmMDlmOWQ0IHB5M2sKKzYxNjEzIGFkMWQ2MDRiYzhlZDM1MzAxNGJiMmU0ZDQzMmI4ZDljNTRhNzA1YjIgbGVnYWN5LXRydW5rCis2MTYxNCBhZGJjOTM0YmYxZmQ1MTAyNzU1NzMyODQwYjc4Yzc2NTc3MDA4NTM0IGxlZ2FjeS10cnVuaworNjE2MTUgMjE0NzdiMWJhNTgxN2M1YzhlMmI4YTlkZjczNWQ3OTg2NjJiNGJkMyBsZWdhY3ktdHJ1bmsKKzYxNjE2IDVjYzA0YTIwNDc2NmYyZTdlNTQzMGEyMjQ2NDEwYjhiYjc4YmI0YWIgbGVnYWN5LXRydW5rCis2MTYxOCA4NTVjNDI5MGRmZDdhYTM0ZGIwOWUzZmZkYmJkYzc4MmUxZDRmMDM1IGxlZ2FjeS10cnVuaworNjE2MjEgNzRhYjhiZDk2YzVkZWIzYTJlMGYwNGIyZTVlYzQzZmZlZGE3ZjI2OSBsZWdhY3ktdHJ1bmsKKzYxNjIyIGIwYjYwOGU1NzljZDVhZTM2MGQ3MGExY2VhNTI0M2E2MDcyNjAxMDQgbGVnYWN5LXRydW5rCis2MTYyMyBlYmMxMzBhNGEyNzM4MjhmNjZhZDZmYmM3MzY3MDRiZjFiNjQxNTdhIGxlZ2FjeS10cnVuaworNjE2MjQgOTNmOTcwN2I2NjRjZTRhY2Q5NDY5YjE4MGI2YjUwYzc2Mzg2Y2I2MiBweTNrCis2MTYyNSAzMzBmNTc0YzU4ZjdjM2RiZWQ1ZWQ0ZDAzN2NiNmY1M2E2YjBhMzk0IGxlZ2FjeS10cnVuaworNjE2MjcgODgxN2E4ZTEyYTU1OWVjYTg3MzIwY2ZmMTEyMDFmZGMwNmU0ZjBjZSBsZWdhY3ktdHJ1bmsKKzYxNjMxIDNiZjE5YzMxYzk1NmYxNDEyNGQzYWNmNWJmMmRjMWFiZGZjYjJiNmYgbGVnYWN5LXRydW5rCis2MTYzMiBkYzViZTBiM2MzYmU3ZGE0MjY0NmQ0NjMyZTY5ODAwZDdmOGE5MWE3IGxlZ2FjeS10cnVuaworNjE2MzMgZTY2NWEwYjE2ZGEwZTg3YjBjM2EwMzZiM2I1NDkyNmI4MzRjMGU5ZiBsZWdhY3ktdHJ1bmsKKzYxNjM0IDI0Mjc1NTUyYzk3MzE3MTQyMTllMTM1ZWYyZWY4NTk0NTJkYTY0NzIgbGVnYWN5LXRydW5rCis2MTYzOSA0NDBiMDhhMzJlMGIzZDUwNGY1MzI1ZWNiYmUwYmU1MjJiMGJkZTJjIGxlZ2FjeS10cnVuaworNjE2NDMgMTY1N2YwYWNjYTc4MjAyMTA1ZDc3MzYwMjA3ODUzZGY1Y2EwNWYyMCBweTNrCis2MTY0NCBhZTNhZDA2NTc3YzdkN2E1ZDBmZGNlNjljODI3NGZhNmM3ZDU2YjE3IGxlZ2FjeS10cnVuaworNjE2NDYgMmRhMGJmMmUyZjVjYzFmM2FjNDY5ODc0YTZjZGNjOTdmMzcyNmUwMyBsZWdhY3ktdHJ1bmsKKzYxNjQ3IDY1ZjM2MTA0ZmNhZDcyY2E4OTIwNGU2ZWM0MzIxNmJiOGIxYzU1NGYgbGVnYWN5LXRydW5rCis2MTY0OCAzOTg5ZmM2MWU3ODljODk0NTM2OGQzNjBhZjVlZjgyMWZhODA1NmI0IHB5M2sKKzYxNjQ5IDNhYTVlYjE4MjkxMzE1MDE5MDdmMzAwNWRiYjZjODFjMWFjMTgxYTAgbGVnYWN5LXRydW5rCis2MTY1MCAyOTNjNjEwNmZiZTM0OTc5ODJjOTU0ZGM2MGUyNTNkMTcyMjIwYTc0IGxlZ2FjeS10cnVuaworNjE2NTEgNjUwOWVmOGJmZTljMzYzZGM3ZmI1NDc2NjdlOWVmNjY0M2Q2MThhZiBsZWdhY3ktdHJ1bmsKKzYxNjUyIGNiYWQxZjVjYWJiMTUxMWRjYTE2MDQ1ZWI3YWI1MDY0ZTM1M2JlM2IgbGVnYWN5LXRydW5rCis2MTY1MyBlODYyODIxOTk0NjUxOTdiMWExNjQxMTcxZGM0YTkzYjAwYTBmN2Q4IHB5M2sKKzYxNjU1IGZjOTNiZjVmZWNlMWQ2NDJiYjhiZGU1OGM1MzlkZTRmMWM4ZmM2OGUgcHkzaworNjE2NTYgOGIwYjg5MDI1ZDk4MjhiM2E4MGI4MjIxYTFiNGRkYmQ3MTM2NWMwZCBsZWdhY3ktdHJ1bmsKKzYxNjU3IDViZDJiZGIzOWU5Y2RlZjVmMzQ5MGRlMjJhZDA0N2JlZDc5YTk5YzYgbGVnYWN5LXRydW5rCis2MTY1OCBkMDBhOWY3NWQyMjNkOTM0ZTBjZWNiNmNhYzJmM2Y5YTNlZmViMmJmIGxlZ2FjeS10cnVuaworNjE2NTkgMGZkYjM2MTYzODQxZDhiNjk2YTk5MDJiMGRiOGMwNmU5YzI4YmUwOSBweTNrCis2MTY2MCBlMDIwM2M2NThiODY1MDFkOWY1MTJhYTBhNjg5YzI1YTVmZGY4ZmRhIHB5M2sKKzYxNjYxIDlhNDc3MDlhMjhiNzlmNGJjNmMxNTNkODgyNGRiMjllMGMyMzI1MzggcHkzaworNjE2NjIgZmMyMTA2NzNlZWYwMTU0NDQyODYyYjg5NDU1NzQ4YzA1NzgzZmVjMCBweTNrCis2MTY2MyA2MGRiOWE2Nzg1NTFkMTc1MDcwYjFkZjE3ZjhiNWU4ZmY0N2UxMGQwIGxlZ2FjeS10cnVuaworNjE2NjUgNmEzZWYzYzkwOTVjMDU4ZjdhZGJmZDBmMGI0ZWJjOTAxM2IzODY2ZSBsZWdhY3ktdHJ1bmsKKzYxNjY2IDEzMmNmM2E3OTEyNjFmNGMyYjUwMmFiOGY4NWZkMzk5ODI2NDk2NjcgcHkzaworNjE2NjcgMDZlNjQxY2IzYTIwMDczZmE5MDZiYjEzODFjYmFiNzQzNDNkYjVlMSBsZWdhY3ktdHJ1bmsKKzYxNjY4IDM5YTRmNDM5M2VmMTk4MjQwNDM2OTUyNGZjODNkNGU2NGU3ZDUzNWYgcHkzaworNjE2NjkgOGU1ZWM2OWI3NmE3NGM1MGRjMTJiNTEyMTc2MzYyMzFmZmU4ZjA0MiBweTNrCis2MTY3MCAzNmUyOTZlNjZkMjE2YWM5N2NlOGE4YzczNDRhNWYyMzhiOGE3NjE3IHB5M2sKKzYxNjcxIDEzMzQ5OGI5MWYxYzQwM2NmNTY2MWZkODk3Zjg1ZDk1Y2ZmMTFmZGUgcHkzaworNjE2NzIgYzk1NjYzYzY4NGNhZjlhMWU0MjFmOTQ1YWJhNTk1OTQ0MTJjMzA5MSBsZWdhY3ktdHJ1bmsKKzYxNjc0IGQ5ZWMwNjhiMDhmMzA5NDdlODk1ZWNmY2EzOWZlYmYyMTEzMDZlNmYgbGVnYWN5LXRydW5rCis2MTY3NSA3ZDJlMWFjODM0Yjg1Zjc4Yzk5NTdkNTYzMGRiMDk2Yjc5M2ZmZDM0IHJlbGVhc2UyNS1tYWludAorNjE2NzYgZDE0YTllNWY4MGFlOGZjMjM0OWE1MzQxZmVmZjQwMmNhMDc3NGVlMyBsZWdhY3ktdHJ1bmsKKzYxNjc3IDFjN2MwOGQyOWZlZWU1ZDcxYTE1ODUxZmRkOWViOTExZTJhZmVmYTMgbGVnYWN5LXRydW5rCis2MTY3OCBkNTExZTMyMTc0M2E5MTFhNWI5MTI0OWI5NjQ1MzFmYjUwZmJlODVmIGxlZ2FjeS10cnVuaworNjE2ODAgMjkxMzE4OTI2MTFjNTVjZDQ0ZTE1ZTg3Njg2ZTI0Njc3MmExMjcwMCBweTNrCis2MTY4MSA3Y2E1N2UyMmE1MjA3ODk0MGQ4OGYyNzE1ZGE4M2YxYzlhYmU1NGIwIGxlZ2FjeS10cnVuaworNjE2ODIgOTFhYzgwNDllNzA5MzQyMmViODFhYjcxNTE4OThiMTBkNmM2ZWJiOSBweTNrCis2MTY4MyBlODM2MGI1ZDVhMTA3NDg0NDRhMTYyNzU2OTkyYWFkY2ZhMzk0YThjIGxlZ2FjeS10cnVuaworNjE2ODQgNjk2MjI1YjVkNTU1NTlhYjFkNzY5Mjc2NTgwNzExNmNiNmI4MDRiNSBsZWdhY3ktdHJ1bmsKKzYxNjg1IGYzZDgzOGRhYjQwZWRiZDU5NjlhMTBlZTBmZmE4NjBmNGU1M2I0YjUgcHkzaworNjE2ODYgMjg3MzNhZGE0ZDAzMWRlMTg5ODc3NWVmZTg3N2IwZDNmZWNlMDZiYyBweTNrCis2MTY4NyA3YzY2NjdiYjhmODUzNDc0ZTVlNzkwMTkwNTZkNzc4NTllY2NkZTRjIGxlZ2FjeS10cnVuaworNjE2ODggYWE5ZGE0YTNjOTdjZTA1NmQ3YjczYzg0N2YxNzZkY2M3NjliYjhhZCBsZWdhY3ktdHJ1bmsKKzYxNjk2IGM0NWE0NTY2OTAxN2I5MjUwZWZjNmYzNWFkYjUxMzY0NTE5MGM4ODIgbGVnYWN5LXRydW5rCis2MTcwMCA4ZjhiMDNjMmJiZmYwMTcyYzk2NTljYmNhZjg2Y2Q1NGI2ZGEyODk2IGxlZ2FjeS10cnVuaworNjE3MDQgOTQ0ZDg3YTliYmQwYWNkZDRkMWFmODIzZDI3YzZmNjRjZTdhYmZiMSBsZWdhY3ktdHJ1bmsKKzYxNzA1IDhlZjA1YWNlZWYyYjRhOWU3NDcwNmVhMTZlODQyNTNlNDAwMjg3YjYgbGVnYWN5LXRydW5rCis2MTcwNyA3MDRhODY0ZWNiMDE0YzUwNzY5YjVhNjc3Mzg3YmE0N2Y5ZDZkY2I1IGxlZ2FjeS10cnVuaworNjE3MDggYWRiNWNhYjMwMWE2ZWU1NWZhZTg1ZmFjOTQxYThhMDliYWYwNGRjNSBsZWdhY3ktdHJ1bmsKKzYxNzA5IDU0NGE0NmRmMDIyMmRjOTI2OTg1M2I5MzBlMDU0NWMxODk1YzJjYTggbGVnYWN5LXRydW5rCis2MTcxMCBmMGU0ZDliNDVlN2YzNjNhMmFhMzI5Y2RiOGQxYmJhYzgyYWIyM2VjIHB5M2sKKzYxNzExIDdmMDM1NTkyZDZlMWJmNTBiNDVmZGMyN2UxMmY4OGY0YTFhMDM3ZDkgbGVnYWN5LXRydW5rCis2MTcxMiA4NWZiZDFkMjY1YTI5NTEzOWI0MDNjMWU2OWYzMzk1ZTYyODQ1Yzk2IGxlZ2FjeS10cnVuaworNjE3MTMgNDQxNTI3YmZjNzljYzczZDA1ZDFjNGI5NTc3ZjQwM2NiZWU1NGNiYSByZWxlYXNlMjUtbWFpbnQKKzYxNzE0IDk5MzU1YmFhNzQ4ZGNkNGU2MTYzYjYxYWU0ZDE1N2IwZDY5MmFmMDUgbGVnYWN5LXRydW5rCis2MTcxNSAyMjc1NjEyYzE2YTlmYzE3MzhkMWMwZTQ0YjgxNzhjODQyMzkwMmIzIGxlZ2FjeS10cnVuaworNjE3MTYgYmYwN2JhZDFkNzJmNjNmYzg5MDUzZTA4OGYwNzM4YzdhY2Q0MzIwYiBsZWdhY3ktdHJ1bmsKKzYxNzE3IDcyZGMxNmU4MDE3OTBlMjNmMTRiMDIwNTQ2ZDJmZDYyNzFkM2QwY2UgcHkzaworNjE3MTggZDY3OTNlY2UzMjU0NGRlNjgzMjE2MjNhYTJlNmE5MzFhMTM4YWM0MyBsZWdhY3ktdHJ1bmsKKzYxNzE5IGEwMjUzNzE4NDk5ZTNiNmFhNWFkOTQ0NmFmOGZlYjVhN2Y1NGNiYzAgbGVnYWN5LXRydW5rCis2MTcyMCAxZjhiYTVlOGEyZmE5M2JkYmU3MDQ3OGY3YTA2ZWUxMWU4MjAyNTRiIGxlZ2FjeS10cnVuaworNjE3MjEgMmUzZjg2ZTczZmEyNzYxZTRmNTY3N2E3MzRiNjlmNzFmNzk3OGIyYyBsZWdhY3ktdHJ1bmsKKzYxNzIyIDcyOGRjMTMzMjdiMmZiOTRjY2I5MWMzZTY4MWJiMmE4MzJhMTc4MDcgbGVnYWN5LXRydW5rCis2MTcyNCBlNDdjM2M3YmJkZGM3YjdiYmY3Njc0NGY2OTAwZmRhZDllNGE0NmJkIGxlZ2FjeS10cnVuaworNjE3MjUgYTczNzZkMTkyYTZkNzhhYjIwNDYwZWVlMTRhMzk4ZWI1MzhmMjc1OCBsZWdhY3ktdHJ1bmsKKzYxNzI2IDdhYTUyZWI5MDc0ZjlkMmE5OTM3ZDNkZDcyMDc0ZjkyN2FjM2Q3YTQgcHkzaworNjE3MjcgOGMxZmY4ZTU0NzM5NzExYTVlZWFhZjgyMjJjNzZlN2RkZmQ1YWNkZiBweTNrCis2MTcyOCAzNzZiNWNiOGEwMTQzNTk5ZmJjMzYyZThlM2RjNWQ0NDRhNmY5MDE0IHB5M2sKKzYxNzI5IDdmNmJjYTc4YzM2NDg1Nzg5NDViMDY4MTMzODc0NjcyYTM2YzczZmYgcHkzaworNjE3MzEgY2RlYmEyMGNjZDZhMDFkNGVmM2Q2YmVhOWM5YTQ2OWE3MDk5MjdhZSBsZWdhY3ktdHJ1bmsKKzYxNzMyIDcyNjRjMDUxYTM5Y2JiNDQwZjI1ODBkNGQ4NDAzNWFjZmUyNWI4NGUgbGVnYWN5LXRydW5rCis2MTczMyA2MWY1YzY2M2I0OWQ4YmFkZTQ3ZmI0MDYwOGZjMjA3M2Q1MjA0MmUzIGxlZ2FjeS10cnVuaworNjE3MzQgYTk5Y2ExZTU3NWVkOTc1ODFiNDc1ZDUxYjRkODJkNDlkZGMzZDA2ZiBsZWdhY3ktdHJ1bmsKKzYxNzM1IDI0MDgzMzA1ZDFjNzA0NjYxNWE5YzViNWZiYWIwMGY5MTg3OWZiOWQgbGVnYWN5LXRydW5rCis2MTczNyAxMWZiYzhhZmUzMDVmZTMzOWViYWIzY2MyNGE1MjMwMmJlZjk1NWNjIGxlZ2FjeS10cnVuaworNjE3MzkgMDRjMjE0ODU2NGU0NTljZmQ5YjQ4NDNjM2YzOTUxNGVmNGRmMWQ3MCBsZWdhY3ktdHJ1bmsKKzYxNzQxIGVlZWI2Yjk1MmQyZjg5ZWFlNDZiZDNmMjY3YzFhYmQ4MjNjMmU0OWQgbGVnYWN5LXRydW5rCis2MTc0MyBmOTc3ODVjN2RlOWI2MjAxZTBjYjJmOThmNDQxMDIzM2Q1ZWY2MGNlIGxlZ2FjeS10cnVuaworNjE3NDQgMjI2N2NhMTRkNTRiYWE2OTQwZmIzYzk2MTE4OTUwMmNhMTQzNGRjYiBsZWdhY3ktdHJ1bmsKKzYxNzQ3IGI0OTc1NGVhOTRkYjkyNmQxNTdlMDBhNGVjMmNmMGM0MjNlODQzZDEgcHkzaworNjE3NDggYjBhNDNiZDVjMjgxODJiYWZjMjZhMDc1NTNlMjMyY2VhNTQyMjAwNSB0cnVuay1ieXRlYXJyYXkKKzYxNzQ5IDcwODM0YzBlNDkxYmQ4YmYxNGQ4YjRiY2NhMTg0MThkODFkMzFiYTUgdHJ1bmstYnl0ZWFycmF5Cis2MTc1MCA0MzU2NDNiNzgwYzcxOWE3MDIxZWM4ZDRmOTljN2M2MTE1NzRiMTJmIHRydW5rLWJ5dGVhcnJheQorNjE3NTIgYzYzMmY5ZTFlYTVkYmQ0YTdmOTE4NjEwOTc1NTM2NzA2YzhmNTQ2OSB0cnVuay1ieXRlYXJyYXkKKzYxNzUzIGQ0YmE1YmQxMTU4MGE4Nzc5MGI2MTJmYjljNjM0ZWMxYjk1YTY4MzUgbGVnYWN5LXRydW5rCis2MTc1NCBkZmEwYTAxMWEyNDM1YTYzNzE0NGM5NWZlZDk2OGIwMmZhOGRjZjRiIHRydW5rLWJ5dGVhcnJheQorNjE3NTYgNjY2NzAwODg5NGUwZGIyNmUxY2U5MjgxZTYzYWUyNGYyYTNkNGVhZCB0cnVuay1ieXRlYXJyYXkKKzYxNzYwIDI0OGY5MjdiYTU3ZWIyNjNjMGRkNmM4YzQ5OTFkMzQ4NzM4YzI4MjIgdHJ1bmstYnl0ZWFycmF5Cis2MTc2MSA3NTFkZTYxNmUwODAxN2ZjMGIxOGQxYTZjZDU3MjYzNWRjZjMyYWQwIGxlZ2FjeS10cnVuaworNjE3NjMgMDEyMmI0NmNlNGUwYmRkNGY1YTg0NGYzM2I0NTIwZjY2NDFkODQwYSB0cnVuay1ieXRlYXJyYXkKKzYxNzY1IGYyYWI1MGQwZmE5MDhlYmU3OWExMmVkYThkZGIxZWYyODkyZjE0ZTMgbGVnYWN5LXRydW5rCis2MTc2NiAyZTVhYjM1Y2NhZjFhZGRiMjNjYTc1OTAzYTk4MDQwMzQ5ZDZkNmE5IGxlZ2FjeS10cnVuaworNjE3NjcgZDZmMGUzZTU1NmE0NTA5ZTM3YWRiMDdlZTJhMjlhYWQxMTg1ZTNmNCBsZWdhY3ktdHJ1bmsKKzYxNzY4IGU2N2Y0MjFhMjBiMGIxYmRiZWE1ZDNiNjFmNmM1NTNjZmJjMmI4MTYgdHJ1bmstYnl0ZWFycmF5Cis2MTc2OSAzMWNmMzhiZGFhYzBjYjAzZTc0YzdlMWIxZDVlZmQyYTY2MjMzZjQ0IGxlZ2FjeS10cnVuaworNjE3NzAgMTBiMGQ4MWEyMTQ1ZGJkZTBjNGIyNGM4OGMzMzhkYzM1NTJlNTFiYiBweTNrCis2MTc3MSA5NTdjYmE3NTUzMTViNDY1MTUyNDMyYzM0N2MyN2NiOTVmZjAxZTdiIHB5M2sKKzYxNzcyIGZiMWQzNWNmYjhkMmRkYTgyZmI3NDkyZGE3NDg5YWU3MjBjNTY0YWMgdHJ1bmstYnl0ZWFycmF5Cis2MTc3MyBmYTQxOGNkZjNiZmU5ZjA0MGVlZjliYjJiY2QzYWRhZDZjZThlY2E5IGxlZ2FjeS10cnVuaworNjE3NzQgMjk2ZjliYzQyYjk2M2VmZDEzNzhiNTcyYmVjYThkOWM4ZTBkYTE4MiBweTNrCis2MTc3NSAzZjBlM2ZiMjcyYTYyMWU2ZDMyZTE1Mjc0ZTgyMDFlNzRmNTUxZjQzIHRydW5rLWJ5dGVhcnJheQorNjE3NzYgZjRjNTBhNTFkMjRmMGJmMzAwMTI0YWZmOGUxMWRiM2QyNjNkY2QwYSBsZWdhY3ktdHJ1bmsKKzYxNzc3IDcyMmJlZjY4MzViOTQ0ZmZhMzAxN2YxODA1NzBjMmZiNTI0ZjMyOWEgbGVnYWN5LXRydW5rCis2MTc3OCBhZjhmYjUzYTU0ZmQzZDQ0YTA4NjI3ODRkNWJhYmRkYWQzMTJmZWY5IGxlZ2FjeS10cnVuaworNjE3NzkgYThmNTRiNmE4YzE4NTVkNDVmMjQ1YTBlNGUwODI3Y2E2Y2ZkZjRiMSBsZWdhY3ktdHJ1bmsKKzYxNzgwIGM2NGM3YjcyN2M2MjU4ZTQzNDA5OWVkZGI5M2RjMDBmODE0MTBjMGEgbGVnYWN5LXRydW5rCis2MTc4MSA3ZGE1YjY4OTcxYTVhOWYwZmQ3OGRmZDRhMzc4MDY0MTc3OGU0YTc0IGxlZ2FjeS10cnVuaworNjE3ODIgOTYzNGMxN2U4ZmU1NjIwNTA5YzFmMWM0ODI1NGM4Y2RlMDcxZDAxNiBsZWdhY3ktdHJ1bmsKKzYxNzgzIGYxZWNiM2U5NzhkYjQ5ZDU3YTVhODMyYWQ2NTNmZDZkNDRkNTg1OGQgbGVnYWN5LXRydW5rCis2MTc4OCA3NTYzZjRkMmYzNmVhNDY4ZGJjZTMyNzI4Y2UyMDYyODNkNTE1MGZjIGxlZ2FjeS10cnVuaworNjE3OTMgODcxMGJhN2ZiYTJiZWE3ZDRjZmJjZGFjNGRlMTg3YjdmMDQwNTY0ZCBsZWdhY3ktdHJ1bmsKKzYxNzk2IGYxZTUxNzg1OTQ3ZjViNWYxNWQzMmRmNDNlNDBkNjI3NmVmZDQ2NzkgbGVnYWN5LXRydW5rCis2MTgwNSA3Mjk2Y2NiYjg1OGMyYjg5ZWY1MGY5ODU3MzI2MDk2OGVhMGU0ZjkxIHRydW5rLWJ5dGVhcnJheQorNjE4MDcgMWQ1YTExNjE5ZWNhODhjZTc3OTQ1OTI0NzNkOGUzZTE4MDllODdkMSBsZWdhY3ktdHJ1bmsKKzYxODA5IGRmNWM4Yjk3Y2IyYTFmYTFmZjY0NWRmZWM2NTMzYTAxYjk4MzMxODIgdHJ1bmstYnl0ZWFycmF5Cis2MTgxMCBjMWZjNmUwYTk0YjliN2MwNDhjZjQ0MDNlNDk0ZWNjMzg5OGZjNDE4IGxlZ2FjeS10cnVuaworNjE4MTEgYWYxYjBmOThkYWRmOWQxYmRkMDY3ZmNlNDVlMmE1Zjk4YmI1NTMxOCBweTNrCis2MTgxMiAzOWRjOTg1YzZmYzYwNjQ0MDk2ZjdlNzhmNjU0ZWUzYmM1ODYwZDIwIHRydW5rLWJ5dGVhcnJheQorNjE4MTMgNDY3YzE2YTUwMzkyY2MwYjVmNGUzNzQzNjMzN2FkNmEwNDg5ZmYwMiBsZWdhY3ktdHJ1bmsKKzYxODE4IDBhNDg1NTkzYWUxY2U1ZDM4ZWI3MDE5YjVjMTg4NDFlZjZiMDgwNDMgcHkzaworNjE4MTkgZDBiOTFhOTBiYWNjOTUzZDc0NDc2NmE3MDE2N2YxMjFiNWZmOGRhOCB0cnVuay1ieXRlYXJyYXkKKzYxODIwIDVlOTE2ODVkOWMwNjg1MmRlYjk3N2ZjMGFlMWFlMzQ2YTc2YzIxZGMgbGVnYWN5LXRydW5rCis2MTgyMSBmNWIxZmExMjE0ZjBhMTU0ZjgwMWJlMjU1MTVjMDE5YzFiNDk5NWU2IGxlZ2FjeS10cnVuaworNjE4MjIgN2NhYWFiMDRhNGQ4ZGEzMjgwZjA5NWZkMDI2YzliNDFkNmEyNzAyZCBsZWdhY3ktdHJ1bmsKKzYxODIzIDVjYTkyODQwMmU1NDM2NWNkZGUzYjBiM2Y0MTlkMGE1MWEyNzhkMjggbGVnYWN5LXRydW5rCis2MTgyNSBhMzljZjMzNTMxMmU3N2NiNTkyZTYzY2Y1MmQ0NzdmOTUzNzY1ZGM4IGxlZ2FjeS10cnVuaworNjE4MjYgYmZlZTg3M2VkZjNmZjZmN2IwNmRhYTY1ODJjMDM0MThjOTljMjRjZSBweTNrCis2MTgyNyA2ODA1MWY4YzY2MThlZGI4ZmU5ZjAxOWY2OTQwZWM1ODU2MzllMDI3IHB5M2sKKzYxODI5IDRhNmIwOTNiMzE5YmJmYzg4MDcyMTAyNmE5YmRmYjhlZWM2Nzc3MzMgcHkzaworNjE4MzEgMzcwOGYwOTA2ZWY1ZTZmMjNjMWFkNmEwYjZhZmZjNTJjNTk1MmY2OSBweTNrCis2MTgzMiA1ZjA0ZTAyYmI0MGM1ZDU2ZGM5NGNiYWUxMDMxNGVjYzlmZmIyNTk5IHB5M2sKKzYxODMzIDJjY2U5MTdkNzk5NjNkOGQ2YmFiMGEzZThmMWQ1ZjI1NWZmMDhiYTYgcHkzaworNjE4MzQgOGMyNjA0ZmU1ODg2OGE1NWY4Y2IxMjBkMzkzYWQxNjJjMzQ0MWMyNCBsZWdhY3ktdHJ1bmsKKzYxODM1IGRmOTA3NzRmOTJiMDY5ZDkwZDc5ZGU0NzAyZjQ0MWY5ZDljNWRmYjEgcHkzaworNjE4MzYgMzBlZjUxMTI4MTMyNjg1MzczZTAxYjQ5ODBiZGRmZmY5ZWU3OTdiMSBweTNrCis2MTgzNyA4NTlmZjVjN2M2MGE4YzBjNmQ1MTU1MmVlYmZlYzcyNWFjMWE2OTkwIHB5M2sKKzYxODQxIDI1NDMxZmY2Y2U2OWRmNjVjYzg5YTY4NjA1YjJjN2MxMDU2MTU3ZmQgbGVnYWN5LXRydW5rCis2MTg0MiAzOGRlMGQyMDIzMzg2NzgxOThiNmVlZjg2ODQ2ODE1MDIwYjQzNzY4IGxlZ2FjeS10cnVuaworNjE4NDYgMmQwZTA4OTE3YTJlMzYwZjk1OWUxNGUwMGJiOGY2OTE1NGY3YzgyOSBsZWdhY3ktdHJ1bmsKKzYxODQ3IDQ2MWZmNDNlNzRkMDIyYWI5NzkzMGYxMjg3MGNmMjBmYjk1NjdiZWMgbGVnYWN5LXRydW5rCis2MTg0OCA0MWVlOWE0MDBhZDExNDAyNjY0MGMwNzUwYjViNDQ4MmJiMGU4ZTBiIHB5M2sKKzYxODQ5IDAyYWUzMTEyNTZhNzdhMWE5NGI0NWQwNzU4ZGIwYTU0NTRmMzdkMDcgbGVnYWN5LXRydW5rCis2MTg1MCBiMmYzZTQ2ZTc4YTI5YTk0MzE3YzZjNGUzZDVmMWNhMmI2NWMyOTA3IHB5M2sKKzYxODUxIGJmY2RhNTUyNDkyZTY1ZjU2N2I2ZDJjNDI1YjdlYzIxYjhlNjFjYjAgbGVnYWN5LXRydW5rCis2MTg1MiBjODZlOWRkMTZiOGQxNGQ1ZmI5YzJhNzdkMDQ0N2EwYjNhNjk0MGU3IGxlZ2FjeS10cnVuaworNjE4NTMgYzkyMzAwOTMwNzcyZDY2NjlmY2Y5NzhiYjUyYmMyNTM5ZWM4Y2ExYiBsZWdhY3ktdHJ1bmsKKzYxODU0IDQyMjg1ZDYzNzU1YWMzOGYwYzQwYjYxNzc5YTUxMTFmOTU5MjZjNTggcmVsZWFzZTI1LW1haW50Cis2MTg2MyBmM2U2NDhmZWU0YzE5YWQ1YmU4ZDY0MTMzZjg5MjZkMGQ3MWU3YWM3IGxlZ2FjeS10cnVuaworNjE4NjQgMDlhZGZmM2Q2NjkxNTRjZjUxYzg0MzlmODRhYjRjYzE5MjU2OTM3MSBsZWdhY3ktdHJ1bmsKKzYxODY3IGNlNDVmZDNhN2EzZmJlNjJkYmNiYWE5OGM5Njk5ZjQ4MTc0MWQ2NjQgbGVnYWN5LXRydW5rCis2MTg2OCBkZTgzZWRjZmViM2QzMDkwNWNkODBiMTZiZmYyMjAzYzAxZjUwNzIzIHB5M2sKKzYxODY5IGRlNTQ0OTVhNDE0YTdiOTM3NGM4MzcwZjY2MzYyMDkwOWFiNTcxMWIgbGVnYWN5LXRydW5rCis2MTg3MCAyYmZmNWE3MjkwMzY5ZGI1NWE4ZTE3NTc2NDIzODhhYWU3MmFlY2FhIGxlZ2FjeS10cnVuaworNjE4NzEgOTU4Y2YwYzI3ZGE5MzkzNjcxZWEwZTcwMmI0MjIzNTNlNTJjZjhjNSBsZWdhY3ktdHJ1bmsKKzYxODcyIDM4YTBhNzM3Y2NkNDI1MzI4NmIyOWRjZDFlNzYyNDY3Y2QwYzdiZDggcHkzaworNjE4NzMgMTQ3ZjM1ZjZlNmU1ODZhZjM5NzE2Y2I1OGYyNzNkZWI5ZDk3NzEzMyBweTNrCis2MTg3NCA0ZjljYTgyN2E3ZDg3ZTk3Y2RlNDlmYzhhN2QxZTdmMTk4Y2U5MmE4IGxlZ2FjeS10cnVuaworNjE4NzUgMGRkNDQxY2E4ZWIwYzM5YzdlM2NmNzU0ZTYxZjE2MDhhMTY2M2E0YSBsZWdhY3ktdHJ1bmsKKzYxODc2IGFiYmQ4MWYyY2M2OGU2YjE3OTdkMzBkZTQyNzgxNTg0NTEyZmMwYWUgcHkzaworNjE4NzcgMDQxZThkN2NjNjg0MDkzMGNkZWI0MDhiMjUxN2ExYWI2MTJkMzdkMSBweTNrCis2MTg3OCA5YjNmMGZhNWQ4Y2EwNzYwMjQwZDAyZTUzMWJmMzdjZjEzODY4NGFjIGxlZ2FjeS10cnVuaworNjE4NzkgODRiYjc3MDFlZmJhZDgyMmEwNDI1ODI0MGRmOGQ4ZWE3MzY4ZGMyNCBsZWdhY3ktdHJ1bmsKKzYxODgwIDJhMWY0ODAxZDQ5NGZjYTQ1ZDAwNzU5MmU3ZTI3MWFkMjE2OThmZWYgbGVnYWN5LXRydW5rCis2MTg4MSBhZTY1OWZmMDUyOGJjMTdiNjFmMWFkYWIxNDBiMjlmNTE1YjM3YzBkIGxlZ2FjeS10cnVuaworNjE4ODIgNDdjMmZmYzM4ZDFkMTAzY2ViNGU1ZDc4MjcwNTNkNDJkYTRlZmJlNCBsZWdhY3ktdHJ1bmsKKzYxODgzIDFhMmM5NjQ1ZjcxZGYzYzA2YjdmY2U4MTM5ZjczMzM4ZGMzOTU3ZTMgcHkzaworNjE4ODkgMmE4NjZlYTY2NTA5YjYzNzhkM2E2ZTgxYWVjZWUyYWE5NzI5MDM3YSBsZWdhY3ktdHJ1bmsKKzYxODkxIGE3Y2JmY2JhYTZiMDYxNTY3YTU5NjE4Yjk3NjllMWMwZDQxOTYzNTIgcHkzaworNjE4OTIgMjJiZDAyMjkzZWZhNWQ1ZDQwNTExYjMxZjIyMTJkMWVlZTY4ZWNlYSBsZWdhY3ktdHJ1bmsKKzYxODkzIDBiNjM5OTkxNThiMDcyNjRjOGVkN2U5OTJiYTI3MzhkYWYxZTVkODMgcmVsZWFzZTI1LW1haW50Cis2MTg5NCA2YmVhMmYxMzUxYjFmNWYzYTRkN2Q1YzYzOTYyOTMyYjUxMGJhYjQ0IHB5M2sKKzYxODk2IDI1NmY5Mzk0ZDkzZGI1ZjMyMmZkZmY0Mzk4NjI0YmMzZjJmZDY0ZjMgcHkzaworNjE5MDAgNzJjYzQwMGQ4MDUzNmQxZTE1NDU2ZWY1ZTM1NzQwMzk1ZTY2ZDE1MyBsZWdhY3ktdHJ1bmsKKzYxOTA0IGU4MWNhYzczZGFmMmYwODE0OTliYThjMGU3OGI5N2Q5ZDU0MDc5MzQgbGVnYWN5LXRydW5rCis2MTkwNSA3ZDNhNmRjNDcxY2Q5MTIzN2ZkMDNmMWZjYmJhMmNiM2EwNDE3MmE1IHB5M2sKKzYxOTA2IDE4OTllMDhmYTQyMTE2NGY0Y2YyNTJmMmNlMGQ0NTVlMTMzZjljODggcmVsZWFzZTI1LW1haW50Cis2MTkxMyA1ZGY3MmI5ODg3ZmE2ODllOTk0OWQzNDI2MTQ3MzY5NjliZDkzODdjIGxlZ2FjeS10cnVuaworNjE5MTQgNDZmODlmNDgwYmQ0YzUwY2QyMDEzZDdkMDBmMWNhZDlmMjg1NDAwYSBweTNrCis2MTkxNSA2MjJkM2IxMTY4YWEyOTRkMjU4ODkyOGI5YjhlMDJjMDA5ZWEyZTQ2IGxlZ2FjeS10cnVuaworNjE5MTYgZjk0YWM4ZjljZjk2ZDRlZmM0NDAxZGMwYWU1ZjZkMmNlYzUzOWUwMSBsZWdhY3ktdHJ1bmsKKzYxOTE3IDY3OTA5NTA4ZTA0MTVhNDBlMDU4MGEwZTU4YTRjNmIxZGY2MjJiOGYgdHJ1bmstYnl0ZWFycmF5Cis2MTkxOCBiNTFlNGI1MGVkMzBlYzI4ZDVmYTY5YTgxNjdmYzkxN2MzNjVlZmEzIGxlZ2FjeS10cnVuaworNjE5MTkgMTUxMTg1NjZmOTg3MjdiYzJhYWQwMWQ4YjQ2NGYxMjQ4MmFiNjY3OCBsZWdhY3ktdHJ1bmsKKzYxOTIwIDE1ZGEwOThiM2NkODVjMTQ3Yjc3Nzg4MmZiYzdiMDhkMGIzNWI2MzEgdHJ1bmstYnl0ZWFycmF5Cis2MTkyMSA0ZWE2ZjEyYmJlOGM2OWJlNjdjNGIzOWFiYmFjZmIyNjdiMzUzZDY5IHB5M2sKKzYxOTIyIDU0YjkwZDdlZGRiNzgxYTBhNWNhOGRmY2M3MWM4ZGU0MzU5ZjU4MGQgbGVnYWN5LXRydW5rCis2MTkyMyAyOTZjMjE4ZjM1Y2Y2YzM3MmFkNmZlMTNiNjc1OTU1YWUxMjdkZjhhIGxlZ2FjeS10cnVuaworNjE5MjQgOGY2Y2NkMDc1YTI0ZDgzNjY4YTRkMzc0ZTg2YjhkZTE1YjczYzAxMSBsZWdhY3ktdHJ1bmsKKzYxOTI1IDdkYTg5MTgxMDJmZWUxNTRjMThlMGVjYjUwZGE1YmZmYTQzNWYxNTEgbGVnYWN5LXRydW5rCis2MTkyNiBjZGRiMjk3YzI0NjUzYjY4NmNiNDMxNDg2ZGM3MzE4NGZhYjk0YzJjIGxlZ2FjeS10cnVuaworNjE5MjcgODVhY2M0MDgxMWIzZDY0NGNmNTJlMjU2MDkzMTkyOWQzOWJmNWRlNSBweTNrCis2MTkyOCAxYWI1Y2MyNTM0MWFkMTgxN2M4ZmZhYWUyOWRmNGEzOGRiMzNmM2ExIGxlZ2FjeS10cnVuaworNjE5MjkgMWRkMDAwMTZhNjljZWQ4ZWI3M2QzNjZmOGVhNWRiZGMwMzBhNDAxNCBsZWdhY3ktdHJ1bmsKKzYxOTMwIGQ1Nzg0ZmMxOWU3YWM3MDY5YjI4N2YyOWU4ZTcxOWZkMzNjYTA5MTIgdHJ1bmstYnl0ZWFycmF5Cis2MTkzMSA2ZWE0MWQ1MjM5ZTA3ZTZlZjY1NTllMThmYjk4MjYzNTg0YTg2OThmIGxlZ2FjeS10cnVuaworNjE5MzMgMWM3ZmE0YWNlY2IzYWQyNTY3YTBkNzc0NDQwOGM2ZjQzZWRiMWQ5ZSB0cnVuay1ieXRlYXJyYXkKKzYxOTM0IDlmY2NjZDU4ZDY1ZGJmOTM2NzcyNzgyMDcxMWIxN2FjMmIzMWQwZDcgdHJ1bmstYnl0ZWFycmF5Cis2MTkzNSAyMGZjNDFjMTdjYzdjNjA3ZjllOWYzNzRmMTg2MjFhYWMwMjUxN2NjIGxlZ2FjeS10cnVuaworNjE5MzYgNTM0MWIzMGIxODEyNWJmMTkyNWMwZDQ0ZjBjNDcyMzg5OGI1MTI4YSBsZWdhY3ktdHJ1bmsKKzYxOTM3IGNjMGQxOTc3ZjgyMGM3OTgyMGU2ZDY0ODZlNzg0YjFjYzQ3OGE1ZTEgbGVnYWN5LXRydW5rCis2MTkzOCAyZTdmZjM4ZTBhMTgzZWE4OGM0ZTJhNWM5ODVlMjE4ZDNjYTgyMTViIGxlZ2FjeS10cnVuaworNjE5NDAgY2NlZWE5OGNjZjM1Zjc3NGU4MmU0NTlhNDMwNDk2MWZiNGExNGYzMCBsZWdhY3ktdHJ1bmsKKzYxOTQxIDJiY2JkMzg4MmVlZWQ2Y2Y3MDg1YWEzM2FkOGUyMzJkNDY1NTY3MzggcHkzaworNjE5NDIgNGQxOTg5MjA0MDYyMGE0NzQxOGFmMDdhOWI0Y2Y1NzlkN2FkZTE1NiBweTNrCis2MTk0MyA4ZDZmZGUxNmU0OTNjYjI0Yzc1ZDE1MmQzODJkMDEzMGY0YjRkODE2IGxlZ2FjeS10cnVuaworNjE5NDQgNjRiZDk2ZmY5NGYxNDk0MTgzMTM0YjI2OGQ1NmUyNzljYmJmN2I1MiBweTNrCis2MTk0OCAxYjZjMGZmMTM0ZmE0YTFkOGE3YThmM2MwMDdhNmY5ODQ5NzQ1Nzk2IHB5M2sKKzYxOTUxIDk5NWM5OTYwZjdmZjM4MzRhOTFkNmMzZmYxNzU0ZTkwYjg3YzRjMzggcHkzaworNjE5NTIgZGNlOWQyZDkyYzg4MTQ3MmEwN2MyOGRiMDVjYzFlZmMzNjhjZWZkNSBsZWdhY3ktdHJ1bmsKKzYxOTUzIGM3OGQzNTg2YzQ3NGY2NjQwNjk1Mzk3YmMyZDdjYTVjZjg4MjY4ZWUgbGVnYWN5LXRydW5rCis2MTk1NCBkYWE2YWNlYWJkZmM1ODQ5MGY4YThkYTIyNmU5NDE5NDI3MDNlNjBkIGxlZ2FjeS10cnVuaworNjE5NTUgNzg1MDRkNjA0YjQ0OGM4YjVjZDhkZTUxYTI4MDZmMTVlOGU4NGE3NiBweTNrCis2MTk1NiBkMDBkZWQ4YjI2NzcxZDQ4YzA4OTgzZmIyNjk0ZTc1NmMzMTU0ZGY2IGxlZ2FjeS10cnVuaworNjE5NTcgYTkzNWM1MGNiNTFhYTQ1ZWViMWU0MjdiMzQ4MDUxYWVlNGQyMjdlMSBsZWdhY3ktdHJ1bmsKKzYxOTU4IDI0ODY3Njk4OGM1NDhmY2NjZjliMDU1OWYyYWI3NjI0NmNjNDE0MzcgbGVnYWN5LXRydW5rCis2MTk1OSAzOGZlNjRlM2IxMzE3M2FmYzkzMzllYWU0M2JkY2YzNzg3NGFmNjk4IGxlZ2FjeS10cnVuaworNjE5NjAgMzZkODI4ZDI3YzM2NDA5MTFlODZjZDZhNmZhZTIwMjg0OTI1Zjc4NyBweTNrCis2MTk2MSBiMDZhMTVlZmRjNmQxZjQyY2Y4NjkyYTg4ZWY5ODdiNTUwODFmZGVmIHB5M2sKKzYxOTYyIGFlMjgzMTU0MjU1ODE2N2U4NDNkYTcyNjdmOGEyNjg0N2E1NTc1ZWQgcHkzay1pbXBvcnRsaWIKKzYxOTYzIDVjMjcxZWY2Y2IzMjYzODNhZjcwNGM1MGZkOTRkOGU5MzYyMjRhZmQgcHkzay1pbXBvcnRsaWIKKzYxOTY0IGI0NWU3YjU3YTBkODJhYWQ1OGRlNzljYjgxNWZhOTcyNDZiOTc4ZmIgbGVnYWN5LXRydW5rCis2MTk2NSBlZjQwZWMzMmM1ZTRkNzczOWIyYTI1MDVkNzAyNGQ1MjhiYjBjMjFlIGxlZ2FjeS10cnVuaworNjE5NjYgODQ3OTNiZjVhNGJmYzBkMjYwOWNjOGEwZjIzYzE2NTlmYzNlNWMyYSBsZWdhY3ktdHJ1bmsKKzYxOTY3IDYxOTJkNWIxMmI2YWUxN2I1M2EyZGFmOGM2YTM5YTY3Njk5YzUxYjYgbGVnYWN5LXRydW5rCis2MTk2OCBkNzQwYzcxZjAyZmYyN2FiOWQ5NTE4ZDgzMzJjNjgwZWJjZTE3MTM3IGxlZ2FjeS10cnVuaworNjE5NjkgNTA3OGI3ZWUxNmRjMTcxZDY5N2JhMzE1Mzk4YTRkMDVjMWVjOTJhZCBsZWdhY3ktdHJ1bmsKKzYxOTcwIGIzNTA5NjBhZGU2ZDY2OTY3NzNiNzFmZTAzOTZiNmY2Mzc3NzViNWMgbGVnYWN5LXRydW5rCis2MTk3MSAzMTNmMzgxZmMwYTcxNzBjYzFlODFhOTc0YTc3YWMwNmQ0NTFjZTdkIGxlZ2FjeS10cnVuaworNjE5NzIgNmYxMzFkMmMzNjI4MjA5YmVmZmQ1ODk1Y2RkNTIzMzE1MzljZGZhYSBsZWdhY3ktdHJ1bmsKKzYxOTczIGVhYzQxZjkwMjk2YzY5YzZkMDdkMjlmMWZlYjQ1M2E0YzBlNDAwZDEgbGVnYWN5LXRydW5rCis2MTk3NCA2MjEzOGEwZjQyMzI2YmIwMzQwYmVlNzBmZDQ3YjExMTRmMmIzMTk0IGxlZ2FjeS10cnVuaworNjE5NzUgYTBlYTNhMGVmYzcxMDkzNGFkNjZlMzkwNzIxMTIzMGZmMjI3ZDZhMSBsZWdhY3ktdHJ1bmsKKzYxOTc2IGYxYWVjN2RlYzA1Y2EyMWViODM2NzQwNmRlYzk4ZWIwNmNmYTZmZDggbGVnYWN5LXRydW5rCis2MTk3NyBlMzlmNjliZjU2MTBlYWQzOTg1MTc3NDQ1OTA5YTdiYWY5NGY4YTFmIGxlZ2FjeS10cnVuaworNjE5NzggNTY0NDJkYjYwYTM2MmJmYjYyZTkwNDYzZjZkYTMxNDkzNmIyZGQ5ZSBsZWdhY3ktdHJ1bmsKKzYxOTc5IDMxYmEzZmExNTg1YjA5ZGIwYzgwMjc3ZGUyMTgwZWFjYzE2MDQ4ZDMgbGVnYWN5LXRydW5rCis2MTk4MCBjYjU2MzMwZDdhZGM4Y2QxMDM5YmU0MDRlZWNmZjkxYjU1YmEyYTdlIHJlbGVhc2UyNS1tYWludAorNjE5ODEgNmE2NmQzMjY3ZDBjZDRkY2E2M2Y1NjFmMTZiNjcwYTY1OTM5NjU2MiBsZWdhY3ktdHJ1bmsKKzYxOTgyIGRhNTU5N2E1YzE5NTgyYThlMzdkNTQwNThmNDE3NWI1ZmFkMTg3MmEgcHkzaworNjE5ODQgMTBhMzlhNjYyZTY5Y2E0ZGRmZmMyYmJmZWI3YjUwODAxYWQ0OWZiNSBsZWdhY3ktdHJ1bmsKKzYxOTg1IDE4ZTE5YWM5OGQzNGMwMTkzMzEyOWRjN2JhNzYxNGI0MTk2MjIwYzMgbGVnYWN5LXRydW5rCis2MTk4NiA1OWQwODI1OTFmNTY4MDQxYTBjNjNmNGE0ZTljMmRhZjZlMmM5NDI4IGxlZ2FjeS10cnVuaworNjE5ODcgN2ZkZmYwMmU2ZjQ1ZWE5ODQ1MWE3YjliYjMwNzAxOGU4ZDg2MzU3YSBsZWdhY3ktdHJ1bmsKKzYxOTg4IDRiZjYxZmNjYzRlNjg4MjQ3N2ZjZjNhOTRmNTk0NWFiOTc1MjZiZjcgbGVnYWN5LXRydW5rCis2MTk4OSA2ZTdiMjgwOGI5YTY5ZTc3YTliNWFmMWM4ZWRiMmMyYWIxN2EwMzVhIGxlZ2FjeS10cnVuaworNjE5OTAgMWQ1MDc0N2U1M2QzNjhiMGQ4MWRhOTIwNmYwZmQyMzljYTZjMDg4OSBsZWdhY3ktdHJ1bmsKKzYxOTkxIDcyMzIyNTlhMDUyOWU2OTYwMjlmMzQ1ODQyYTQ2ZWMxZDFiOWYwODcgcHkzaworNjE5OTIgMWUxMGIzMGY3NDk4YzNkNzJkYjlkZTNhM2NiZTc2MTA5NjZiNmQ2YiBsZWdhY3ktdHJ1bmsKKzYxOTkzIDMxMDNlYTNkZjQ5ZDk0YzdlNzFjNWEwMWJhN2Q2ZjZkYmRkYzQ5MDIgbGVnYWN5LXRydW5rCis2MTk5NyBiYmZjYmFmZWFlODQzZDAwYTk0YjFhZDNiMzBiZmM5NDI4MWJmNTFjIGxlZ2FjeS10cnVuaworNjE5OTggNjRmMmViNDE3MGYxOTYwYTI5NTY4MGY3ZmUxZTgzNTZiNjFhYmE2MCBsZWdhY3ktdHJ1bmsKKzYxOTk5IDY5ZDAwOTA3NDA4ODNlYjhkM2YyYjVlZjk4ODI4NjBkNmFkMmEyNGIgbGVnYWN5LXRydW5rCis2MjAwMCBmOWE2MjlmNDE2NTZkYTcyMGE1NGZkZmFmYjMzNGYzOWJhZjQ0ZGRmIGxlZ2FjeS10cnVuaworNjIwMDIgMjM2NWM0N2ZlNjRkZGMzNGVmMGNjYTYzYjU3Y2FmYzA0ODU3ZTBiMSBweTNrCis2MjAwMyA4NDgxNjBkMTA3ODA2MWNjYmI1ZDY3Y2U3MmIyMjQ1ZTM2OWU1NTJkIHB5M2sKKzYyMDA0IGNhMzhmN2E0YjRjOTU5NjhiODRhMjc0MWY0MWFlMzJhYzI0MDNiYzYgbGVnYWN5LXRydW5rCis2MjAwNSBhNDNiZTA3NDMyNGQyZjNmMWJlOTlmNmU0ZGQ1MmM2ZGY4MGUzMTg1IGxlZ2FjeS10cnVuaworNjIwMDYgMDlmYThjYjJiZmU4ZjRmMmFhNzUwMDE0MzFiZTUzNjdiYmE3MDdlYyBsZWdhY3ktdHJ1bmsKKzYyMDA3IGFhY2Y4YmU1MWY5MDMwNzg3NzA5YmM1Y2Q0NGFlY2FkZmUzOGE3MDMgbGVnYWN5LXRydW5rCis2MjAxMSBhMjE4NTRlNTEwYjQ3YmNjY2VkZTJkZWZhODczZDdiMDI0ZjEwMmQ5IGxlZ2FjeS10cnVuaworNjIwMTIgNjU0YWQ3NGFkZTEzMTIwMTZkN2Y1YmVlNTc1NDY0ZDk4NTFhM2FiYSBsZWdhY3ktdHJ1bmsKKzYyMDEzIDFiNWI2YWJiMWYyZWRlOWIxNDVhYTg0NjI3YmFiY2ZmMDk0MGNmN2MgbGVnYWN5LXRydW5rCis2MjAxNCBjM2U2NzRjYmQ3MmU5ZDlhYjQ1MTdmOTA2NzZiMDBkNjk3ODhmNTI1IGxlZ2FjeS10cnVuaworNjIwMTUgM2I5OTRmNzRiMTAwNDgyMTNlZmQyOGI3ZTU1YWE4MDk5NDVlNmY3MiBsZWdhY3ktdHJ1bmsKKzYyMDE2IGM3N2NjMjNlMzk0ZjE0NDgxNjEyYzA5MTRkZjRlOGQyNTA2MDY1MzUgcmVsZWFzZTI1LW1haW50Cis2MjAxOCA5NzM0YTQyY2ZhMTVlMDE1ZWNkZGI5ZjNlZDNiMmI5MTRmMjVkYmExIGxlZ2FjeS10cnVuaworNjIwMTkgYzRlZDY2NGExZGExYzBiMDFiMDlhOTZlZjNlZWE2ZTM1YzIxMTk0YyBsZWdhY3ktdHJ1bmsKKzYyMDIwIDNlYTNlNTFkMWVlM2ZhOGY2N2JjNDczYjI1NDg1NGQyNzg2YWU5ZjIgbGVnYWN5LXRydW5rCis2MjAyMSBlZmVmNGUzZmVkMTdkYWNmMmYzYmM3YzQwMjc4NDVkZjdkZDVlNDViIGxlZ2FjeS10cnVuaworNjIwMjIgODcyYWJlZDdkMDY5NGQ4OWI0ZmQ1NDk3MjlhNzZmM2ZkOGIyYTUwOCBweTNrCis2MjAyMyA3Y2UxYThmZDhhNzFjYTk3ZTZjMjZkOGZjZWVlZWUxMWEwYWQxMTVmIGxlZ2FjeS10cnVuaworNjIwMjQgZTA2ZTA4ZThmZGNlZGVjNmJhZGEzYjFkYTI4NzZhOWY4Y2MwYTA3MiBweTNrCis2MjAyNSBkMWUxYjc0MGY2ODQzODljMWVlYjJhODYzM2JhMmE1NmQ5MjYwODJmIGxlZ2FjeS10cnVuaworNjIwMjYgMGVhNWMwNTVhYjU0ZjQ2YjZmM2RjMjljMzkyNWZiODRjODIyZjk1YiBsZWdhY3ktdHJ1bmsKKzYyMDI3IDA5MDUzYTdjMWNkZmQ4MThmMDkyZjZhOGM0YzcwNDc4NDQwM2VhYzAgcHkzaworNjIwMjggZmU1M2QxYTM2ZWY2M2I5NGQxZTU5NWZiZjRlNWZkZjM1MzA2MDIyZSBsZWdhY3ktdHJ1bmsKKzYyMDI5IGM0NDBhNTczNzE0OWE3MTJkYjliZDQ1YWJkODQ2ZjU3NjdlYzM2ZDMgbGVnYWN5LXRydW5rCis2MjAzMCA2YjNhYzg5ZTBkZDQ5MjQ5YTEwOGQ5ZGM1Zjg1Zjg1NWMwOTkzODRiIGxlZ2FjeS10cnVuaworNjIwMzEgOTU4Y2Y3ZWNjYWUyNDk2MmQ3OTUwYmFiMjI3NTY1YjkzOWJiNTIwMCByZWxlYXNlMjUtbWFpbnQKKzYyMDMyIDBhNGRhMzk3ZTFkYjQ3YjA4NmNmZGIwMGRkYmY4OWIzYWVhNDM1MzcgcHkzaworNjIwMzMgZjE4NDMzMzdhNjZjMTVlNTMzYzYwMjBlOTBiYjdhZWU2ZmU0NDZmZCBweTNrCis2MjAzNCA0NjM0OGRlNjNmNjFhMGViYTdhMWYzNGM0ZDNhNGE1ZThlZDk5NzBiIHB5M2sKKzYyMDM1IDUxMTBjZjBlNWY4ZmVhZjI0MWNiOTBkZmYyZmY3NTAwMDVlNGRlYzcgbGVnYWN5LXRydW5rCis2MjAzNiAxNjczNmViNDAxNTBhYTdkNzg4NDA3OGZiYjEwNjc1YjJhYmNmN2Q0IGxlZ2FjeS10cnVuaworNjIwMzcgMjNlNDI1NzcyMjZhN2Y4NWZiOGFiMjcyMWZmZDc4MzQ4MDg5YzVhZSBsZWdhY3ktdHJ1bmsKKzYyMDM4IDZlMDJmZjBiZDZmODk0NGI3MTIyOWFiMTcxMDgyMDg5ODdmMDJhZWYgbGVnYWN5LXRydW5rCis2MjAzOSBiMGJmMDZkNDk2NDdkZDI1ZDFjM2QzNjZjODQxYTQ2MjkwOGY4NzYzIGxlZ2FjeS10cnVuaworNjIwNDAgNGM2NzhlOWM3YTMwNTBjMjQxMmIzNjE3NGExMDA1YTdjM2ZkM2JiOCBsZWdhY3ktdHJ1bmsKKzYyMDQxIDUxZWZmMmZkOTUyNzEzNjZjZTg3ODFkMTdmMmEwY2Q2MGViMDAwMmUgcHkzaworNjIwNDIgMGMyMWY5YjRhODMxYTQ2MTZhODZkMjYyYWVhYjY3ZWY2MWVmY2MzMCBsZWdhY3ktdHJ1bmsKKzYyMDQzIDAxYTdlNjY1MjVjMjYyNGNjN2MyODFkMzM2YTM4MzI5MGVmMGUyMDEgbGVnYWN5LXRydW5rCis2MjA0NCBlNDQ4NmMzNDNmN2ZhNjhkOWEwNzFiMDE3OWQ2NzVhNTFlMWQ4ZDljIGxlZ2FjeS10cnVuaworNjIwNDUgZWQ4OGY0ZGU0OTZmMTk4MDZiMzY2YTcwZWYyOWQ3NzJiY2ExNmNkZiBweTNrCis2MjA0NyAyZmY4OGFlOTg1MGM1MmU1Y2U3YWQ5YzVhMTJlZTE1M2E2MjE0YzgxIGxlZ2FjeS10cnVuaworNjIwNDggZTM3MGQ5Y2QxNDllYTI2MDRiYjc4ZjUxYTE3MTU1NjE5ZTU0NWNlZSBsZWdhY3ktdHJ1bmsKKzYyMDQ5IDQyYzVkMjg3YTg1MmU2ZjI4OTg4Y2Q2YjI1OTMyM2RhYzAwNzdhZWIgbGVnYWN5LXRydW5rCis2MjA1MCBmMDUxZTdhODBhY2M3NmI0MDI5ZWU1ODY2MjE0OTU4MWYyYjA2ZTE5IGxlZ2FjeS10cnVuaworNjIwNTEgMjllYTUwN2ZkOTk4MjIzMzc0Mzg3NDEwMjE2ODJmMDMxYzgyMzBjMyBsZWdhY3ktdHJ1bmsKKzYyMDUyIGMxMTIyMTkwNjE3MTFhNDUwMWU4NzZlMGQwNmU3M2U3MTFlOTgwMGYgbGVnYWN5LXRydW5rCis2MjA1MyAwN2Y3NWQ1NTE5YjQ3YjRjMGIxNzVkM2MzZjI1YWFmYmUxYjY4OTkyIGxlZ2FjeS10cnVuaworNjIwNTQgNTlkNDJlNmQxODg1M2JhMGZhZDk4ZjliZmZlNTE1NDA0OGQ1YWMyYSBsZWdhY3ktdHJ1bmsKKzYyMDU1IGVhNzViMTJmZThlNzZmOWJmZTgzMTNmNjg2MDRjOGQwMTRmMzI4YmMgcHkzaworNjIwNTYgOTgyNzZiZTY0NTc5ZmMzYzBjNjEzMWZmMmUyZjE1MWU1NzA1NzgzZCBweTNrCis2MjA1NyAxYzk3MjMyZDkzZmYzZTlhZTIwZTRhMTYxODVjNGFiM2EwNjFjNDg1IHB5M2sKKzYyMDU4IGU4OTk4ZTgwZWFmMmJmOGI1OTkwMTg1ODQ3OGNjZjdjZjZmOTViZGUgcHkzaworNjIwNTkgYmUxOGRmNjM0NDA1ODU5Mzk1NjA1MGM4Nzg3N2E1Zjg2NzNhMzExNCBsZWdhY3ktdHJ1bmsKKzYyMDYwIDMyZWE3NjU0ZmY5YzRlZjM1ZmQzYzk4YzdhMDJkODA3MmE0MTZlYTYgcHkzaworNjIwNjEgNGM3YmI0MDlkYWQ2ZDAwZDkwZDZkYWM0M2Y4MzQ5NzIyZDVkMTA1NiBweTNrCis2MjA2MiBhN2ZiNGQ4N2NiZGUzOTdkYTRmZWYzNWY2Zjc4ZTk5MGJkNmUyOWVjIHB5M2sKKzYyMDYzIDJiYzFkNWFhNzI5ZWU0OTZjNmU5MmZmYzgwZWU0NGU0YzkyYjQ5NjYgcHkzaworNjIwNjQgNjA0MjkxNGU4Mjg2NzdjYjI5ZTZkYTkyZjM4YTVlZWQ4OGIwYjFiYSBweTNrCis2MjA2NSBjNWIxNDlhZDMwMGY4YzA4YzFlYzM4ZWIzMmE5MWIwNjI0NzQ3YzFjIHB5M2sKKzYyMDY2IDU3YmJhYzUzMTkxOTgyOWIzM2ZkZmQzZDMxODZjZTU0Yjg3MDRhZDggcHkzaworNjIwNjcgNjAwZjJmZjhhYTllOTE3MGNjNjA5N2I1NzM1MTZlNjkzNmYzZjFjYSBsZWdhY3ktdHJ1bmsKKzYyMDY4IGZmYmU2Yzc5MDUyM2NkMjg4ZjE4OTFmOTE3MWUyZGVhMDY1OWIzNzEgcHkzaworNjIwNjkgYWVkNjk4Yzg2NDdiOTkxNGYwMTU3YmE3YTNhMTkyOTExMmNlODE3OSBweTNrCis2MjA3MCBmMGZhNjA1YjJhNzhhNjA4YjdmNzMyOTJlZGNhZTNkYTM3M2IzMTNiIHB5M2sKKzYyMDcxIDM4ZjhkZmVjZTk4ZTViZDgzYTczYzZiZmQwNzUzMjM2MzI5MTliOTggcHkzaworNjIwNzIgODY0NTc0YTljZDI2ZWE2ZDVmNTZhOTdlYzhlNGI5OTA5ODA5NzY1NyBweTNrCis2MjA3MyBlOTAzMmY1ZGQ1MzliM2E2NDkyNjE2NzE1Y2IyZTk0MDMxZTA3ZTkwIHB5M2sKKzYyMDc0IGIyZDkzYTk2MGI5ODkwZjZkODMxNjM1ZTg4YzlmYjNhZmY3OGI5MDYgcHkzaworNjIwNzUgZTNkYzg2N2I2MTgyZWUxMjhjMjViMDAxNWVmMDgyZmFhMmE1YmMwNCBsZWdhY3ktdHJ1bmsKKzYyMDc2IDA3YjM2ZDJiNzUzNGM1YzhiYjQ5NmE3MmE5MWY4MGNjMTFmY2MzNzIgcHkzaworNjIwNzcgZTQ3NDgxNzY0ZTU3MzA4NDg4YTE5ZTFjYjM5MjM0MWMxZDY0MTk0MyBweTNrCis2MjA3OCA4MWVlMjcwYTZlYjU0ZjAwMzcyMDA3MTM3YmZmYzQ4MmRmMzUzMzI3IHB5M2sKKzYyMDgwIGMzZWUwZjBmYmVlMWNlZjYyNGIyMDRjYjhiM2VhZWZmNmU0OWEyYWYgbGVnYWN5LXRydW5rCis2MjA4MSA2MWM5MjkyM2NmN2ZjZWIzZTkyZjBmNWJjNzczYjdiOTg4NGVkOWEzIHB5M2sKKzYyMDgyIDQxNTE1NmQ0Y2JkMjBjOGM2MmVhOTE4NzQ4OTE2ZTEwY2ExNjczZTEgcHkzaworNjIwODQgYzcwMTVlMzU3YTJjOTc5YzQyNDJiNmYyMjU4ZDAwODU4NjM3NDhkZiBsZWdhY3ktdHJ1bmsKKzYyMDg1IDE3ODgxZjk2ZWEwMWUzMDQwZjFhNmY5MmIzM2E0ZDIwMDk2ZjNhZWMgbGVnYWN5LXRydW5rCis2MjA4NiA2ZGVjZmUzOGE4MDkxOTlmMTI1ODg1MDIxODg0OGMwNjljOTVkMGRjIHB5M2sKKzYyMDg3IGQ4NmIzMzNjNzJlNzQxYjljNmEyMDc3YjBiNmY4OGNmZjYwOGRhOWIgcHkzaworNjIwODggMzBkZDYwNjk4NjcxZjFiODY2NjU1ZDhjN2Y4MDE4YWNmMjI2MDI1OSBweTNrCis2MjA4OSA1YTE3ZDE1N2RmMDAxNjQ3YjYyMzI0ZDg5OTg1MjJjNzdlNDBiNTVkIHB5M2sKKzYyMDkwIDdkZmY1ZTQxZmE3YWUxYmIwMjc0NTdmYzAxYmU4MDBmZjFhNDA1NWYgbGVnYWN5LXRydW5rCis2MjA5MSA0YzUwNjVkZGI5YmQ2Mzg4MzMwMDJmMjM4ZmU2NDUzNjQyNzJmOGU4IGxlZ2FjeS10cnVuaworNjIwOTMgYWI0ZjhjNDZjM2Q5YjZkYzY5NjZhOTgzNTA5ZWE1ODc2YmNiZDg4NiBweTNrCis2MjA5NSA0Nzc5ZTM0OTZhZTFhZmJiZmI4MTJlYjZlNTUyMzJkZWIzNjEyNGM1IGxlZ2FjeS10cnVuaworNjIwOTYgMDczMGYzZDUwY2RjYTFiMTZkM2RkMmFmZTQ4Y2M1OGFjNWUxOGY3MCBsZWdhY3ktdHJ1bmsKKzYyMDk3IDFjNzhkOGU4NzY1M2E1ZGZiMjc5MTgxNWEzY2I3NWNmNjAzNTY3MWQgbGVnYWN5LXRydW5rCis2MjA5OCAwYjM3NDc3MjU0ZjY0MTgwODI3Njg3ZTI0ZGNkMmQzOWViYjIzODkxIHJlbGVhc2UyNS1tYWludAorNjIwOTkgNTkzOTkwMGQ5OGQyMTQ5OTE4YTFjZjRmOWI0MWFlODc3NmQwZDgxOCBsZWdhY3ktdHJ1bmsKKzYyMTAwIGQ2ZTEzMzNlNjA3NWNmNDFjZjJkMWNiNzU2NmRmOWViNjcwOGE3YjAgbGVnYWN5LXRydW5rCis2MjEwMSBjN2MyNTIwNDg1NTUzNzY4ZTQ5OWE4M2ZmZGZhYzQyNjk5M2IwNzVhIHB5M2sKKzYyMTAyIGY3NTM5MThhYmU2NTI4MzhiMWIxM2YyODM1MThmYTFjNzYzOTgxMmMgbGVnYWN5LXRydW5rCis2MjEwMyAwYjJhNGExMjQ1YTNjOTY2NzE2NzZhZWNlODc2MjQzOTRkNjgxNGFiIGxlZ2FjeS10cnVuaworNjIxMDQgYmI0YTU0NzQzMGY4NWNlMDM1Yzg4MTRmZDBkYzAzMDBlOTQ4YmFmNiBweTNrCis2MjEwNSAwM2VkMDExOGU3MzM3NjAzOGNkYWNmOTIwOTlkNDU5NzFkYzdjOTk2IGxlZ2FjeS10cnVuaworNjIxMDYgOGU2YTRjYzdkZmMwNGRhNjk0YjlkYzM0OWZkZjQ0MjQ2NmRjOGFmNiBweTNrCis2MjExMCA4MTE3OTA2YjdiYTc1ZTZlMmI0OThmMDI2MWRhYWEwNTg1NmY0YTVlIGxlZ2FjeS10cnVuaworNjIxMTEgYTE3MmMyZTM4YWM5ZTJlYTYyZWQ5ZThiNWViYTFiNjY2OGUxNmI2MCBsZWdhY3ktdHJ1bmsKKzYyMTEyIGE5NDQ2OWM3NGI5ZWI0YmIzMmQ4ZWIwNmI4NGQ2YzI0OWNiMDg0N2EgbGVnYWN5LXRydW5rCis2MjExMyAwYTVjODYzNTBhODkyNzYxM2ZhNDUyNDlhMDA5M2NjMzBhMzE5NjNjIGxlZ2FjeS10cnVuaworNjIxMTQgMmIwZWNjN2ZkN2VlYTI4MmRkYjEyZjRlYjM2NzBjNTFkYTQ0Y2ZhYiBsZWdhY3ktdHJ1bmsKKzYyMTE1IDIwNWQ3ZmQ1MGQzNWE5NmNhYjYzNjk5ZWYyNjJmZDIzYWZlNjg5NTIgcHkzaworNjIxMTYgZjU0N2ViZjAyODQzMjg5Yjk0ODFkMTllOGY1OTYyODc3MWZhZDYyNSBweTNrCis2MjExNyA4NzkxYWM5Y2JjY2Q1YmYxZjJhMjU3ODFlNmQ0ODJjYjgzYjQ1ZGFlIHB5M2sKKzYyMTE4IDk3NWJkMjE2MDUyNzBhMDdkOTI1N2M5NDZhNzk1YjQ4ODhjNmE5MTEgcHkzaworNjIxMTkgMTVmNzczZjczMDBlMzcyYzU2YTIxZDU5ZmU0OWNhMjY5NTVhNjQ3NyBweTNrCis2MjEyMSBlY2FiMDM3NjZjYWNjZjM0MTdiZjRmZjlkNzVhM2Q5YTc3NWE0OTU0IHB5M2sKKzYyMTIzIGVlYzE0NDkxN2ExODliZTExZWQ1ZWZhMzVjNjYwNGQwM2JjNjJiY2MgbGVnYWN5LXRydW5rCis2MjEyNCA3NmE4MWVmOWIzNzkxZTk0YzM2YTUwMmE5YjYyMDViMDQ3NjVjYWNiIGxlZ2FjeS10cnVuaworNjIxMjUgYWE5YmFiYjlhNDhlZDljYzI5YjkyZDhiZmJiNmFkNjYxNDJkYTM5MSBweTNrCis2MjEyNiAxNjE3YmIwNWE3OGFkODE4M2MyZGEyNjM4NzIxMDE4OTdiMzZhMTZkIGxlZ2FjeS10cnVuaworNjIxMjcgNGQ4M2I4ZDAzMjk5ZjVhYTFmYTRlNzM0MTNhZjI0ZWU0NGQwMDZmZCBsZWdhY3ktdHJ1bmsKKzYyMTI4IDI4NDhjNjU3YWYwYWU3NGY2MzBiZjM3ZTEyMTNjOThmNzk1M2RkM2UgcHkzaworNjIxMjkgOWRjZGE1NmI4NzFlMWNlYTBiMWU5NDhkN2NkNGM2MWJjOThjNWIzMyBsZWdhY3ktdHJ1bmsKKzYyMTMwIDgxNDIyZjFkZTg5MDlkYTNkZDM3MmE0Y2NlMzM0NTIyOWFiYzIwMTEgcHkzaworNjIxMzEgOTczNmMyMGQyNmViNmY2NDhhZDMxZjRkMjYzZTc2ODMwNGZkOTQxNCBsZWdhY3ktdHJ1bmsKKzYyMTMyIGRkZmU5NDc0MGVkZWE1N2U4YmJlZGIwMTk5ZDE3NWEzN2I3MDBjNTggcHkzaworNjIxMzMgYTcyZTkxNzQ5MWE0ODY4NDI0MzhmNzM4ZjgzNjkwMGViMjdlZDlhZSBsZWdhY3ktdHJ1bmsKKzYyMTM0IDY3ZjFjNDY1Mjc5Y2JjMWQ0ZTFmOGI3NjI5NjI0ZTJmZGYzYzk5YjggcHkzaworNjIxMzUgY2MzMzMzYjdiZDkzNjY2OGMxNjc4MGQ4MGYwM2RkM2NmNmY5ZTkzYiBweTNrCis2MjEzNiA3NmY1NzdhOWVjMDMzZmRhMDgxNDBhYWQ3OGY2NTk1YTA1OGNlNWI1IGxlZ2FjeS10cnVuaworNjIxMzggMDNiMjZmOTFiZjZkMDUwM2EzNDIyYmRkNTc5NDQ1MTA5OTkyYzI0NiBsZWdhY3ktdHJ1bmsKKzYyMTM5IDRiYTY4MTk1YTUxMTYzMjYzY2U5MzQzMDY5YTBmYzA4Y2Y0MGYxM2IgcHkzaworNjIxNDAgN2MwODFjMGIwZjU1ODhkYmMxYjAzNDhlY2U5ZGJkMWE0M2I5ZTkwYiBweTNrCis2MjE0MSBhYzVlNGQ1NGIyM2U5ZDU2ZTJlMTczNDg3OTAzYjMzNmZlMTZiMzk0IGxlZ2FjeS10cnVuaworNjIxNDIgZmIzYzliYjc2YjI5NDU4ZmIzMzg3NTMzOTQ5NzEwOWM0NjE4MTk5MCBsZWdhY3ktdHJ1bmsKKzYyMTQzIGQ4MThmNmQyOTM4NDdhN2YwYjExMTljNTIwYzIyZDdhNGJjNGUxYTEgbGVnYWN5LXRydW5rCis2MjE0NCBjY2RkYzU2YmQ1YjA3MGZiOGZmNjhlMjM0YTJjY2QyNGQ1MGY2M2M3IHB5M2sKKzYyMTQ1IGIyOGEyZDI1ZmQ5MmRjMDU2ZmQ1NmUxZTU3NDFmM2M4ODgwNmI4NWEgbGVnYWN5LXRydW5rCis2MjE0NiAzZDAzNTJhNTQxY2U1NjYyYjY5YWU0Yzc0MjZjODc0NzRiYTE1OWFmIHB5M2sKKzYyMTQ3IDRhMTEzMzAzZjMxNjU0MmRjN2QzM2YzYTIxOTkxZjcwYTVlNjliYjcgbGVnYWN5LXRydW5rCis2MjE0OCAzOTllNzRiYjEyYzdkZDBmOTAxNzNmMGRmNmQ5ODc2NmU2MzdlOGYwIGxlZ2FjeS10cnVuaworNjIxNDkgODI3MzE3Njg5ODZkNDc0OWEwYWUzOGI3MTgxMWJjZmZjNzA5OTBmZCBsZWdhY3ktdHJ1bmsKKzYyMTUwIGMzYTc3MjU4OGRiNzZlYmRlYzVlZTg2ZTgwZmFjNGQ4YzM2YzExMDUgbGVnYWN5LXRydW5rCis2MjE1MiA2YWJlMjViOTkyNGJhYzlmM2FkY2RjYzgxNGI2ZTUzN2E3YmI0MTg4IGxlZ2FjeS10cnVuaworNjIxNTMgNjFhMGM3NmVjZjg3NmVlNWM3MmQ3NTk4ZTQ4MDVlZDBhNTVjMzE5ZCBsZWdhY3ktdHJ1bmsKKzYyMTU0IGExOWVjNGYxNzI3Nzk3MmEzZDVlZWQ3NmY5ZGZlMzYzNWNmODE5YTUgbGVnYWN5LXRydW5rCis2MjE1NSBmODA2ZmQ5OTQxZGE2OGM0NTVkNmMwYmI2Y2RhMmI1NDJjMGNiNmU3IHB5M2sKKzYyMTU2IDBjZTdhMjM1MmE1M2VhMDc4MDBmYmVhNzJkMTMzZjE1ZjBhNzk4MTYgbGVnYWN5LXRydW5rCis2MjE1NyBlODkxNmM2NGRmNGM1ZmI1MDBmZDI2YzQwODIwOTZjMDFkODg4N2ZlIHB5M2sKKzYyMTU4IDQ5MDFlNzVmNzc1YWUxYWMwMjUyYWQzNTI3NGY2NTc4MjM3Yjk1MWYgbGVnYWN5LXRydW5rCis2MjE1OSAzNzI2ZGU4Y2I4ZTFkM2MwMDQzMGFlN2ExYzhmYTExNWQwN2NmNThhIGxlZ2FjeS10cnVuaworNjIxNjAgZjRiZjNlN2JjYmU4MGFlMjRhNzFkMTgyYzEyZTMyZWMxODA0NzEyMCBsZWdhY3ktdHJ1bmsKKzYyMTYxIGRlNzc5NzNkN2UxYTBjNGQyZmM1OTRjOGU0YTRlMTAwODY5MWE2M2YgbGVnYWN5LXRydW5rCis2MjE2MiAzNDQyZTllNmIyY2YxOGRmYTY1MDdiNTIyMjc3M2E0YWM1NWNkN2NmIHB5M2sKKzYyMTYzIDljOTI2YjBhNjQ4ZjQyNDhkZGQ4NTRjNzk4MzkwN2EzYjY5YjI5OWUgcHkzaworNjIxNjUgYjEwMjkyZWFmYjA3MzcxODI3NWRlNmQ1NGM5MzNmZGZjMWZhYTYwOCBweTNrCis2MjE2NiBjM2RjYzBjN2JmZDk1N2UxMjYzOGQxY2UwN2I0OTFlNGFjMzlhOTM5IHB5M2sKKzYyMTY3IGExYTUxOGJlNTQ3ZGQ5MmM5YmJhN2FkNmE4NzRiZjBlYzYyMGJjMWQgbGVnYWN5LXRydW5rCis2MjE2OCAxMDU1ZjM2OWIxZmNlZTA3OWEyY2Q5OGFmZDlkNWVjNzM1NTc2MWZjIGxlZ2FjeS10cnVuaworNjIxNjkgNjI1M2E3MjFkOGE2YTJiM2U2OWIzNTlhMmY0OTJiYjdlYjEwMWNkMSBsZWdhY3ktdHJ1bmsKKzYyMTcwIGUzZjdkY2ZhYTAzMGNiZTg0ZjViZGEzNGZmYmE0OWFmY2FlN2ExMjAgbGVnYWN5LXRydW5rCis2MjE3MiA4NTMyZDU2OTE4NTA5YWI4ZTExMmMzMTM1Y2MxMGI0MDkxYzRhZTQ5IHB5M2sKKzYyMTczIDEwZDk0YzhjODQxNGFiNjcyZTIyNzgwYjAyYmJlZGRiZDdiYTQ3NjMgbGVnYWN5LXRydW5rCis2MjE3NCBmODRjZGZjMjIxZDEzNWUwZTJlMTNlNWJkOTI1ZDExMjlkZjE2NDZiIGxlZ2FjeS10cnVuaworNjIxNzUgYmM3MDBhZDAyOTYyMzE4NTI2NGU4YzVkMmQyMTZiZWYxMTJiYWYyYyBweTNrCis2MjE3NiA0MzUyZDQxYWZmYjAxYjI1ZjBmMTYyOGJmM2NiYWU5OTE5ZTE2OTk3IHB5M2sKKzYyMTc3IDg2NGE1NjcxYzdhNDNjYTc3MWM0NmJjNjc2ZWE1MjZkNTI5OTAyNmEgbGVnYWN5LXRydW5rCis2MjE3OCAyMmE3NGVhZjZiMjI1M2ZjMTI1YjA3OTFjMmU3MTI5N2I5MWNkOWEyIHB5M2sKKzYyMTc5IDQyYTc1OGY5NjFhMTc5MzNjZWUyYmEzNmMxODY5ZjgwMzAyYWQ1ZDMgbGVnYWN5LXRydW5rCis2MjE4MCAwMTJkOTdiYmVlYWY2ZjZjMThlZWZkNDU0MTBkMzQyZWE0YWIyM2U1IGxlZ2FjeS10cnVuaworNjIxODEgZTUzZjJjY2NkZjFkNzFiMjc5NzAxNzljNGY2Y2Q2YmYyMTE0NmMzNCBweTNrCis2MjE4MyBmYjVlYWE0YmU3MDA5MWE2ZWVjNDVkZjcyZjVjZWUyZjYxZDg0OWVlIHJlbGVhc2UyNS1tYWludAorNjIxODUgZjQ2Y2QyNDBlMTA1ODVjOTQ5MDU1MmY2MjdkNzgwNzcyMTUzYzlmNSBweTNrCis2MjE4NyAwMzUyODllNmZlMjM1ZGQzMDRhZTQ4ZDZjOGIxNTU1NGE2MGE2YTAxIGxlZ2FjeS10cnVuaworNjIxOTAgYzdkYTMxYzJjNDVmZjdiZGEwYmEyN2MyYmVjMzMyZTIyODUzMTY5MiBweTNrCis2MjE5MiA5YzY0NzU0Mjc2MDUyMTQzMmY3Nzg5ZmM1ZmFjOGFkY2Y2ZmEwN2E0IHB5M2sKKzYyMTkzIGUyOGVkODVjYzk2MmRkNzQxYzgxZjkyMTg4OTkyNWY4MjY5MTJiNGEgbGVnYWN5LXRydW5rCis2MjE5NCAyN2QzMjQzNjBhNjNlMzE0ZTIyYWEyYTgxMDBjY2JhM2ZmMjM5MDQxIGxlZ2FjeS10cnVuaworNjIxOTUgODZkYTkyOThiOTA4YjhjOTc2YjgxZGEwOTIxMTNiYjljNDI1YmUyYiBsZWdhY3ktdHJ1bmsKKzYyMTk2IGRmNzYxOTUzOTYzMWEyNjhjMmUwNjlhMDIwY2U4ZGE0ZWIyODhmZmEgcHkzaworNjIxOTcgYTkzZDI5MTllYTU5YmRkOWEwYTEwZDY0NDYwN2NiOWJmMWIyMDA5NyBsZWdhY3ktdHJ1bmsKKzYyMTk4IDRiZGJlZjcwOTUxNTVhYmNmOGIyZjk2MDRhZjg3NWMzOTk3M2ZkMGUgbGVnYWN5LXRydW5rCis2MjE5OSA0ZTcyNDg5ZjE2ZDA1MGFmYjU0NzM0NzVkNzNlODkxOGFkNDdmMWMxIGxlZ2FjeS10cnVuaworNjIyMDAgM2FiNTQ3NGJkZTQ1N2Y4NGVmNTA3YzM3YThkMjY0NDFhYmZmMTk0OSBweTNrCis2MjIwMSAzZDlhZDI3ZDkzMGIwNzhlMDEwZDE4MGZhNzM1YzlhYjI5ZWViMzAzIHB5M2sKKzYyMjAzIDU2ZTQ5OTUyZDFhNGY2M2JjNTM5NDkyYTBkN2IzYmQyMDRiZDdlY2YgcHkzaworNjIyMDQgMmQ5NWY3YTk4M2Q4MmQ4MGZkOGNiYWI0ZGIxOTk3Y2Q0MWNiMjJmYiBsZWdhY3ktdHJ1bmsKKzYyMjA1IDI3ZGYzYjgxMzUxODI4ZDM3NGQ3YzkxMGYxNjk0OWMwZDEzZjUyMzQgbGVnYWN5LXRydW5rCis2MjIwNyBjMjY2NzBmMWU1MjBmZWY0ZjE4MDIxYWJhMmFkYzY5MTRjNzBmY2ZjIGxlZ2FjeS10cnVuaworNjIyMDggMjNiNjVmMmQ3NjIxOWQyOTliZjBhNTZhMGUxMGQ2NjM5ZWM0ZDA0ZiBsZWdhY3ktdHJ1bmsKKzYyMjA5IDBiZTQwMGNiZDViOGEwMmM2Y2E5ZTNjNjM0NjZhMjA0MWNmZThkM2IgbGVnYWN5LXRydW5rCis2MjIxMCBkNzZlNTlmYmYwNmQ0MTdjNzUyMmU4YzU5YmQ5MTE2M2Y2Zjg2NTA4IGxlZ2FjeS10cnVuaworNjIyMTEgZmQ0N2E5MDA5MDVjMmQ2ZmY3YmM2Y2ZiZmVmYWMzMTRhY2MzNWM4YiBweTNrCis2MjIxMyA2MGNkYjY3MDNkZjMzZThiYmI2YjgzY2I2ZjI2MmJlYzAxMjgwN2I1IHB5M2sKKzYyMjE0IDA5ZjM2ZDU3YzlkNjEzYTkzZDQwZWE0MGFiNDY3MWFiZjM5NDZmOTggbGVnYWN5LXRydW5rCis2MjIxNSBmOWM2MWM5NmE3Njk1YjBhODUxYTBhODA5MWM0YjA0ODgyN2VkMmI2IHJlbGVhc2UyNS1tYWludAorNjIyMTYgY2QwODE4NDYzN2M1OGJlZjI0YTBjODBmOWM4MmRmZTM3YzRmOTIyMiBweTNrCis2MjIxNyA4OWRkMTYyZjE1NWJmY2E5ZTNkOTIyMTNkM2M4MzE4ZTM1YTM4NDA0IHB5M2sKKzYyMjE4IDQ1ODlkODMxYWE4MGJiZTUxNmI4MTg4MGE0NjVmMjEyYTA5MTY2OTggcHkzaworNjIyMTkgMjE4ZjJkNTVkZTQ4ODFhYzFkNThhYjc3ZjUwZDcwNjM5NTYwMDM3OSBsZWdhY3ktdHJ1bmsKKzYyMjIwIDQzNDgzNDMyMTkyNDg5ZDljOTNhMmZjYzVkNTYzOGQzN2ExZTE5ZDcgbGVnYWN5LXRydW5rCis2MjIyMSA2M2EwZDMzYzRjZDM1NDk4NjM2NzY0MzZlMzJhNDI4ZWE3NDAxMjQzIGxlZ2FjeS10cnVuaworNjIyMjIgMjcwZDc5ZjkwMDcxMWViZDQ2NGIxMTVkNzJkMTIyZjEyYWEwNGYxNyBweTNrCis2MjIyMyBlMDI0Yjc1NTI3OTVlY2I5ZWQ2NjdiMzkyZWE5ZmFhODUxZTVhZTVhIGxlZ2FjeS10cnVuaworNjIyMjQgNjNmOWE4NTI2MDllMzE4ODZmMTJmZjUwY2Q5YTEyZGRjNjc3ZTcwYSBweTNrCis2MjIyNSBhZTY0ZmExYmM5Y2JiNGI5ZTQyZjEwYzRjMmU4ZjM4Y2IzNGE5OTI0IHB5M2sKKzYyMjI3IDUwZjUxODRlZWVkOGQ4YWYxMWNmMWM4MTgyZDYyNjI0MGQwOTFjMDEgbGVnYWN5LXRydW5rCis2MjIyOSAzODJkNWVhMTdkNzhhNDhkMmNhZWFhMDI2MzM3YTUzYWQxNGIzZGQzIGxlZ2FjeS10cnVuaworNjIyMzAgODU0M2Y4YzgxZGEwODhhZDI3ZDJhZWZiZWJiMjNiZjExZGY3NTEzNiBsZWdhY3ktdHJ1bmsKKzYyMjMxIDFmMTU0NjNhZjk4YzM5NGEzMTdhM2ZhNzY3MzNkNDFhMTZkODZlYzMgbGVnYWN5LXRydW5rCis2MjIzMyA3ZWJlODFiMWU0MjMyYTVhNmZkZWViNjY2YWIzOGM0ZTIyMmU2ODBmIGxlZ2FjeS10cnVuaworNjIyMzQgZDkxN2RhMmIxOTQ2ZTEyYzQ2ZjUyMzI2YThlNjdhM2Y1YTUxOTAzMyBsZWdhY3ktdHJ1bmsKKzYyMjM1IDI3YzcxMzlhOThlZjdlOWU2ZDExYzQ0NzQ5OGJlMTkzMjg0NDc4YTkgbGVnYWN5LXRydW5rCis2MjIzNiAwNDk4ZWJiNmM0MWI4MzA5ODI2MTgxNjM5YWNiOWJlOWRiMzcxNDJiIHJlbGVhc2UyNS1tYWludAorNjIyMzcgN2ZkMjc0YTU4ZDVjMWUwZWM1ZWI4N2U3MWMxZTljZTJjOTdhYjM1YiBsZWdhY3ktdHJ1bmsKKzYyMjM4IGFiZGM4MWUxY2I1YmE2NTViZGJjMmQ0MTJlZGJjOWUwYmFlYTJhNWMgbGVnYWN5LXRydW5rCis2MjIzOSBhZjRjNDZiZjNkMDk3MmI3NDU3MDBlZDA0M2YxNzU0YTcyYzQzNDk5IGxlZ2FjeS10cnVuaworNjIyNDAgNjA4ODVmOGU4NTc1Y2U2ZTRmNmRhNjA5MzAwNDU0ZTI0ODk5ZjMwZiBweTNrCis2MjI0MSBhZmM2MjFhMWJjNDE5MDM5OGZkZDQ0YmIwOGY2ZTdlYTVmMDZjMjI0IHB5M2sKKzYyMjQyIDJlOTE3YjBjOGY2ZTg5MmJjNGRiOGExZmRhNWU2ZmJmYmNkY2YyNGEgcHkzaworNjIyNDYgYjNjZDAzMzljYTc3ZTk3OTE4OThjZjE2YzJkODc5ZGFkYmY1Mzk4ZCBsZWdhY3ktdHJ1bmsKKzYyMjQ3IDJjNDU1M2Y2NTkyNDM1MTZiODcxMGMwMmQ5MzBiM2JlMTAwN2Q4NTQgbGVnYWN5LXRydW5rCis2MjI0OCBiZTdiMGViNTk5MGM2YjYxYTk2NDI4YTE3ODRlNjRjMjk2MjFjYWRmIHJlbGVhc2UyNS1tYWludAorNjIyNDkgYWZmMzgzOWQwMzk0MWFkNDVhZDdjMWM0OWVkOGUzMTRiYTE4YWRhZiBsZWdhY3ktdHJ1bmsKKzYyMjUxIDVhNTY5MmUzYzliZTIyOTU0NzFhNjZlODRiNGZjYTQ4OGJkNWViZmUgcHkzaworNjIyNTIgZmYzNGVmMGE4MDk2NDhjZGMzZTA5YjU0Njk3NzBlOWFhOTkzMDU1MyBweTNrCis2MjI1MyAxOGRiOGM0ZDQ0ODdhZTY5YTNkZWVlMGFmYzY1ZmM1ODQyMTI3NzY3IHB5M2sKKzYyMjU0IGVmYTljYzNiZDdmM2ViYTY4ZmE3OGU0OWRjMmIxMWI2YWUwNTk1ZTggcHkzaworNjIyNTUgMTFiMThkZDE1OTAzZWI5YzNiYTY3MzIwMTUzOGY3NTExOTgyYzdlZSBsZWdhY3ktdHJ1bmsKKzYyMjU4IGQ4Yjc3MWJlMjFkZjQ0OTlhMjRiMDllNWE2YjM1ZDViYmU2Y2Y3NGMgcHkzaworNjIyNTkgMzYwMzI2NzY3Mjg4MGE0MWM1YTg5N2ZhMDNiOWVkMmQ3NTQzNzc0MiBsZWdhY3ktdHJ1bmsKKzYyMjYwIGNlMzE4NzQ2MjAxMWY2ODM4NmNiNTBlYjk5OTRlZjdkNWQzZGYyN2QgbGVnYWN5LXRydW5rCis2MjI2MSAwYjU1ODc1YzFjOWMxZDY2MGY3MzFhMzI5NTlhOTE2ZTllMzVmNzMwIGxlZ2FjeS10cnVuaworNjIyNjIgY2Q0YjFmM2ZkMWE5NzQwNzUwMjY0M2IzMDRmMWVhOGZmNWZhODJjNyByZWxlYXNlMjUtbWFpbnQKKzYyMjYzIDg0MmE2YzJjOWJjZDJhNzMwY2NjNDU3ZjIxZjZiMmNmNWY0Y2Q0NWIgbGVnYWN5LXRydW5rCis2MjI2NCAyMjg3YTRhYjI0ZDg3NjExOTg4ZjUxNmI0YWM1ZjI1YzFmZTgwZjVhIHB5M2sKKzYyMjY1IDNjZTdjNzk2YmNhMTI0OTViY2EwN2I3ZmNjYmVhNjBkYTRiYzBhYTEgcHkzaworNjIyNjYgOGQ1NTU4NTBmNzNkOTY4ZmQ2N2NiMmJhNmNhMTVmOTI3MTc0ZTdiMiBsZWdhY3ktdHJ1bmsKKzYyMjY5IDdjOTljZWRjM2U1NGE1ZWZiZjhkYjNhNDAzNDQ5NTcxM2M4Mjc2YWEgcHkzaworNjIyNzAgNWU1NWQ0Mjc1YTA5NDEwZDI5NmI3NzFiMDZmYzk0NjZlOWZhNWYwYyBweTNrCis2MjI3MSAxYWFhYjMyMTgzZjIyNzQ1ODU5NmFlMDNmOWFkOWNiYzZmZmNjMGY3IGxlZ2FjeS10cnVuaworNjIyNzIgMDQxMGZmODE4ZWM3OGVmMWIyMjQwYjNhMjdlMDA5MmVjZGJkNTg5MSByZWxlYXNlMjUtbWFpbnQKKzYyMjczIDY0NWM1MzVmODIyMzI2ZWI3NzAxODY3NjNmMDc3ZGQyYzY5NjM4MjEgcHkzaworNjIyNzUgODQxNmNkZDExYzExNzIxODAyZTlkMjc1NjcxNTQ3NDE4NGJjYWRlNCBweTNrCis2MjI3NiA2MTk2NTI5YWZkNzM4NDc1ZjU5YmYwYjc3ZGFmNTEyMTVkN2EzMjkxIHB5M2sKKzYyMjc3IDI5YTdiZWM2MTBjYmYyMzljZTlkODVlMjA0NGYzYjkxYWM0NGI3NTYgbGVnYWN5LXRydW5rCis2MjI3OCA0NWZkYWU0Y2RiNTU3ZjJhNmM4NTBkZTg5NTIxMjc1NmY5OTI5Nzk4IGxlZ2FjeS10cnVuaworNjIyNzkgZGRjZTdjOTQyMWQyZTk2ZmQ1NWE2ZTljZGVhMjI1NTBmOWNlNWEwMyBsZWdhY3ktdHJ1bmsKKzYyMjgwIGFmYWMzZmY2MGM2YzVjMTA4ODE0NzNjYTM2MzVjMzIzZjYxOWRlYmMgcHkzaworNjIyODEgMDk0YTljZTRiOWJkNGZkZGYzYWJmOTQ2ZjM4NDdlNDViMmI3YjA0YiByZWxlYXNlMjUtbWFpbnQKKzYyMjg0IDk3OTc0ZDk2NzEyNzBiNzg3ZTlhYzI0ODZjMTU2ZDg0YWJmNDU2MWQgcmVsZWFzZTI1LW1haW50Cis2MjI4OSBiYzMzNzcwY2ExMTQ4YzYwMjliMjc0OTQ0ZjgwNGJhOGNkZTc2ZGJhIGxlZ2FjeS10cnVuaworNjIyOTAgYTI0ODU2YmE3N2ZlZDM0Y2FkNTI1OThhMTM5M2MzMzVmM2FlNzA3MiBsZWdhY3ktdHJ1bmsKKzYyMjkxIDMzNjFiOThmZjRmZjhjZThmNzlmZDcyZTNiOTU4MWY4ZTI0MWU3YWMgcHkzaworNjIyOTIgMzY1M2ZiZGQ0NDgzOWJiYTEwODYwNzYwZGZjMjQ0MzliYWNiZDk2OCBweTNrCis2MjI5MyBjMWZhMmU3NThlMDViNWE0YjA3YmI2NjQ1ZmQyNmMyNTRiNjYxZjQ0IGxlZ2FjeS10cnVuaworNjIyOTQgOTQ3ODJiZThmMWU3N2I1OGJmOGM5NWVkYTRlNWFkYzZkMzdlOTBmYyBsZWdhY3ktdHJ1bmsKKzYyMjk1IGZlMjc1MWFjYWQzZTEzYTVjYmFmYzA0M2ZmNDUwMzIxYjFhZTllNDkgbGVnYWN5LXRydW5rCis2MjI5NiBjYTIzM2JlNjQ1OTg5Y2FkZmY0NDY2ZDEyNTYxMTQ1NjVlNjE5ZDk0IGxlZ2FjeS10cnVuaworNjIyOTcgZDQ2ZjZlYjA5ZWJjZmI4NjY0YWRiODlhNzA5NjMxOWEwYTZjNjllMiBsZWdhY3ktdHJ1bmsKKzYyMjk4IDc2NGFhYjBlOGI5YjFlNDZhMzRlMjkxYjczYmJiODcwMDFhMWQ2ODMgbGVnYWN5LXRydW5rCis2MjMwMSA4YjkxNGZjZTlkODRjMDg0ZGE0OTk2ZTA0ODQ5OGFhMmMwOTUzYzI1IHB5M2sKKzYyMzAyIDJhOTg1ODI1NWRlMTA4NzNlODk4YjM5MDg3M2U4NDAzZjhiZTg2ZjEgbGVnYWN5LXRydW5rCis2MjMwMyA4NDAwNjQ4MDI5NTJiMzc4ZTgxZjQ2MjdhMDE3NWM2ZjgyZGNlYTY3IGxlZ2FjeS10cnVuaworNjIzMDQgZjc4MWNhMTQzOTViMDY1N2YyYWFlNjE5ZTU2MTZmMmNhZGI1MjhmNyBsZWdhY3ktdHJ1bmsKKzYyMzA1IDM5ZWEyZmM0NTAzZDEyMzE3OTVhN2NjYTVkNzRhZWIxMzQ5NTNiMjMgbGVnYWN5LXRydW5rCis2MjMwNiA4M2U2OTc1YzMxOTk4NDQxN2FiMWYyY2VlMTgzM2FiMmNhMjdjM2QwIGxlZ2FjeS10cnVuaworNjIzMDcgMzMwN2E1NDUwYzM3OWE2OTFhMmU4OWE2ZDFlYWE5OWUzMzQ2OGM3MiBweTNrCis2MjMwOCAzNmQwYTFlMGMwMjRiYTlkMDA3NmI1OGQxYzFiNzIzZjkyNTI4OGQ0IGxlZ2FjeS10cnVuaworNjIzMDkgYjU0NGJiNjFiY2E5Y2FiZDAzMzc4ZjhjYzdiNTcyMmQ1YTgxYmI2MiBsZWdhY3ktdHJ1bmsKKzYyMzEwIDlhZDMwY2NjZTQ5YzE4MWNkZTM5YmMxZjUzMDJmYTgyMWNlZTZlZDkgbGVnYWN5LXRydW5rCis2MjMxMSAwMjM0M2VjYWYwYmIwMDg5NzlkZmVhYTI1NDRhMzAzMWZiMDkwNzczIGxlZ2FjeS10cnVuaworNjIzMTIgZTBjM2FjYjExNmE1NTRjMTBlNjI5N2VjMjI4OWVlMDdhNjhhODgyZCBweTNrCis2MjMxMyA4ZjJiNjVlYzdiYmFiNzhiOWQ0MGU0ODRhMmZkYjU4YjgzYmFkYzI0IGxlZ2FjeS10cnVuaworNjIzMTQgMjkyMzFhOTczNTgwZWE4NGQzZWUxYmZkZjBlZTkyODhjNTZlYWQxNyBsZWdhY3ktdHJ1bmsKKzYyMzE1IGZjMzNlNzViOTI1NzBkYzNmMTJmNDEzYzQ2NGM3MzAwOGIxOWQ3MmQgbGVnYWN5LXRydW5rCis2MjMxOSA3YTVhNTgwYmE2ZWEyM2JhOTgwNjAwYzQ3MWExNWQwMTgxNzFkZTNmIGxlZ2FjeS10cnVuaworNjIzMjAgMDUyODI3OTAwNzgyNmQ3Zjg4NDJiZjY3ZGRmNmVlZTI0YTUxNWJhOCBsZWdhY3ktdHJ1bmsKKzYyMzIxIDg1ZjBlMWFjMGJjOWIyYjEwNmIwNDU3MzA4YTA1MDgzN2IyZTU2OWMgbGVnYWN5LXRydW5rCis2MjMyMiA0N2Q5YmJlMTA4OTcyMGNkMWUzZDM3MDc0ZWE1M2JmY2MwOWUyZTEzIHB5M2sKKzYyMzIzIDAyOGQ4NjI1NDA5YjIyMmRhZDdjZGI2OWEwMmZkNjlmN2E2NWZhZDggbGVnYWN5LXRydW5rCis2MjMyNCA0YWZkYzY4ZWE1MmVhNThjNjU3ZjVkNDUwZTc3NDcwYTU5YTliMzM0IGxlZ2FjeS10cnVuaworNjIzMjkgNjk1MmU3MTgxZmZjODhmOGJmOTE2ZDk3MjM5ZjVhOGQ3NDI0MWY3YyBsZWdhY3ktdHJ1bmsKKzYyMzMwIGI0MjBlYWJmOTgzNTQ1OTc0MzBhZDg3YmNkODcyOWQ1NzAwYzQyZjAgbGVnYWN5LXRydW5rCis2MjMzMSA3YzIxY2MxNGI5NGY1YTY0ZDI4NmEzZGNjNWFiNzQ4NDJmZTE0ZjExIGxlZ2FjeS10cnVuaworNjIzMzIgMDNkOWM2NjRhN2JjODcwNWZkNWNlNmZmYThiZmVlNWEwNDRjMzJjYyBsZWdhY3ktdHJ1bmsKKzYyMzMzIDQwZmRkNWNkMmVmNTFkNjE2OGQwNzYyODI1ZjI3ZmVjZDJiNGEwY2MgcHkzaworNjIzMzQgZmIwODEwMjViMjIzMGJkN2Q0OGYxZTEzMzk0ZTAyNWM3ZTRkNWI1NiBsZWdhY3ktdHJ1bmsKKzYyMzM1IDQ2ODc5ZTdmYzRkMzM1NGJlZjFkZDYwODlkNDBhMjdjNDc4NDM2MDMgcHkzaworNjIzMzYgYzc0NDIzNTEwMzYxODA3MWQ2MDg4YmYzYjdkNGM1MjI4OWZiYTc2NSBweTNrCis2MjMzNyA3MmE3NjQ4Njk5ZDA4Mzg5OWQyMzY5MmYxYjZlNDU5YjE0NzYyMjhmIHB5M2sKKzYyMzM4IGIzZGNhOGY1NTM1ZWMyMjFmNTBmOGIxMzg3MGQ4N2U3MzFkOTJlY2IgbGVnYWN5LXRydW5rCis2MjMzOSA2MTQ4N2JlNmY0NDI5MmRkMzhkNWNlYjIzMzQzMDdkZjk5ZDc2MGNhIHB5M2sKKzYyMzQwIDhkZDI0NzQxYjZhYWYwYjYyNDNiYjY3Yzg4MDEzMjI0ODFiZWU5MjYgbGVnYWN5LXRydW5rCis2MjM0MSA2ZTRjYTlmNzJiYmE2ZGRiMmQwNmU4ZDc4MGE1YWM5ODI4ZWZlNzMyIGxlZ2FjeS10cnVuaworNjIzNDIgMGZlZGU0ZDFiMTRiYTJhNTNiMTI3MjE5YWZjZjJmZWRhM2RkNThmZCBweTNrCis2MjM0MyBhZDE3MGEzMzU5NjdiYWIyMTdhZDAzYjUwOTg1YmVjMGMwYWIwZDAyIHB5M2sKKzYyMzQ0IDU5NzUzYmRjZTA4OTg0OWNlMWNkN2NhOWJiZTc4ZThkODkxZTAyMzMgcHkzaworNjIzNDUgMjQyMDViMWY5NTRlZjc1ZTYyMzJkN2I2ODYyYWE3OTQ3M2JmY2EzOCBsZWdhY3ktdHJ1bmsKKzYyMzQ2IDk5YmZiOGRlMzRiMWY2ZDAxNjEzNmFlYmUwODhkNzdlNGNhZjkxYTAgcHkzaworNjIzNDcgZWFiMTUzOThlZWYwMGFjYjY5ZTgwYjNlZTE1MmRkMWMxMWNkYzY5MSBsZWdhY3ktdHJ1bmsKKzYyMzQ4IDkxYjA5OWE3ZjNlMjJiODNlYTgyMDM0Zjg0ZjJmNmU2YTI4ZDY0MGUgbGVnYWN5LXRydW5rCis2MjM0OSA5ODFkZjEzYWFiMjAwOGMxMTRmNDUxODU3NGVmYmJjMzg2ZmY1ZGRiIHB5M2sKKzYyMzUwIDE4NDFmOTJlMzBkZWYwYTViMzEyN2Y1YWExZmIwYTAzZDNlNzJmMzQgbGVnYWN5LXRydW5rCis2MjM1MSBlZjA2ZWQ4MDQ5MThhMWE0MDMyMWNhZGZiZDMzOWM4OWRiZWU5ODMwIGxlZ2FjeS10cnVuaworNjIzNTIgY2U1NTk3YWY5OWM3ZDk1Y2JmNWIxOWFjZjVkMDA3MzRhYzI5YjY5MiBsZWdhY3ktdHJ1bmsKKzYyMzUzIDNlMDk1YWI3NWZjODlhZWQwMmYwYzRkNWM3OWNmODc4YTQ3ZTA2NjIgbGVnYWN5LXRydW5rCis2MjM1NCAxOWZkNDYzZWE3MjhlNDBlODZmNjg3OGJjYzI1NWYwZDA2ZDA5NGQ1IGxlZ2FjeS10cnVuaworNjIzNTUgMzhjODMxYjQ3ZGM1YmI0MzFjYzA4MmU0OTU0MDNkNzM1OTRiY2Y1ZCBsZWdhY3ktdHJ1bmsKKzYyMzU2IGIwNGYyMDUyZTgxMjYyOTYxZDJiM2Q3ZjdlNTE1MDE5OTA4NmIwNmIgcHkzaworNjIzNTggYjcyMzEwNjkwMWUwY2YwZjNjNDQzYjFlMWJlZjNhYThlNzJkNTA3NSBsZWdhY3ktdHJ1bmsKKzYyMzU5IDlmM2NhMTkxNjJhNzM4YTYyMGM2MDI3NjFhNjFjYmYwMWQyZWEyZjYgbGVnYWN5LXRydW5rCis2MjM2MCA0ODI4OTY0NWNkZWY3N2ZmZGViNTZjYmJiM2ViMGJjYmZiNjYxNWFhIHB5M2sKKzYyMzY0IDFjOWJhNDAxMWY1ZGQ4NWJkZGVhM2NmNzg1ZDg0YzZiMzFhNjljYWYgbGVnYWN5LXRydW5rCis2MjM2NSAwN2Q3ZTVjZGMxYTAxMGNmOTFhMjQxNzA4OTgwODc1MTU0NDU2NTFlIGxlZ2FjeS10cnVuaworNjIzNzAgYmM5NmJhYzU4NmI0YzIxZmMyYjEyZTJiZjJiY2NmMDE2ODMxZWZkNyBsZWdhY3ktdHJ1bmsKKzYyMzcyIDFmZWYyNmY4OWJjZWExODZhNTQzMjIwMmQ5ZjBmNmU3NGQyMTk3YTUgbGVnYWN5LXRydW5rCis2MjM3MyA3Y2QzNjNkZjdhODQ2Y2QxODI1MDRhZmRlODBiNTg4ODMyYjU4MjFmIGxlZ2FjeS10cnVuaworNjIzNzQgNTAyNGIxMmEwMzlkMWM3ZGUxYTBiMjNlNzhiMTQ3YjQ4MThiMDQwOSBsZWdhY3ktdHJ1bmsKKzYyMzc1IDg5MThjNTFkZTAxMDhhY2VjNzExM2M2NTgxOWEzOTFjNjQzYjBlZDcgbGVnYWN5LXRydW5rCis2MjM3OCA0ZjgyNjFiOTJmYzU2MGRlZDQzMDZlYWFlZTY1MWNjYTU2ZGU4MWI5IGxlZ2FjeS10cnVuaworNjIzNzkgZmI4ZDNlMWY2MTYxMmQ0NGVmZjEzZGIwNjAxMjczMDE1YjExNDYwNSBsZWdhY3ktdHJ1bmsKKzYyMzgwIDViYzdiMjBkYzA0YTlkMjQ5YTgyMzM5NDU3NjQxNWRhN2ZlODhhOTAgbGVnYWN5LXRydW5rCis2MjM4MSA1YzQzMTU5ZjVhZDBiMDY1OTliNmI3YTM5YmVjYzllYmMwMGM2YmNkIGxlZ2FjeS10cnVuaworNjIzODIgNzc5Y2FhMWUwZmZiMmUwYzgyZTFlNzNjZTdmMTQ0ZDI5YzIzYzIyMSBsZWdhY3ktdHJ1bmsKKzYyMzgzIGExOTk3Mzk5Zjg3MjRjNGFhMzM1NDU1ODVkMGVkNzMxN2UwOTNiYTMgbGVnYWN5LXRydW5rCis2MjM4NCBiNjlmNDQzZWY0ODA3MTc5Y2IxMWI2YjUyZWIzNjUzMzk4OThmMjgyIHB5M2sKKzYyMzg1IGJlYjdhYmNkNmMwMWE1NDNkYWRmNmY4MjU4ZGZmNWZiN2JkZTJlNjggcHkzaworNjIzODYgZTE2NTkzZGE0ODk4OWM3MDNkYWU2NzM2YTgwZmVkNThlMmZhMDBkNCBsZWdhY3ktdHJ1bmsKKzYyMzg3IGUwMjlkN2M3ZGU4MTE0NDEzM2ZlOGE4OTkwNTA5YWM3N2RiNjRjODcgbGVnYWN5LXRydW5rCis2MjM4OSA5N2MyMTQxN2FmNDBhZDdiMjc2NjdlNTQyOTgyMzBiZTRmYTBiNzA1IGxlZ2FjeS10cnVuaworNjIzOTAgYjFjNzBjODljM2RhNmMzOWMxMTMyZWUxMzA2ZDY4ODQ3YjI3MjQ0MiBsZWdhY3ktdHJ1bmsKKzYyMzkxIDM3NDgzM2RlNTcwYzI0MWJlMDYzNGZlMTRiZTQ5MmY1MDJmNjI5NTAgbGVnYWN5LXRydW5rCis2MjM5MiAxMGRhMjc5OGU1OGQ4MzY0MWNiMDMyMmM1N2UwMzg4M2UxMDdmMmFkIGxlZ2FjeS10cnVuaworNjIzOTMgNGY3MTgwNjFmNDVhNDQxODdjNTIwYjJjNjA2YjQ2ZmFmMWM0MTU2ZSBsZWdhY3ktdHJ1bmsKKzYyMzk2IDgyZDg1YTA1OTIzYmYzOTg0NmE0NTE2YjE2MDIwZjBkMGU1NzUwYjcgbGVnYWN5LXRydW5rCis2MjM5NyBkMGZhNDVlNjM3YTA1MDAxOTBjZDNkZmIzZTg3ZWVkYmQ1NDg4ZmQ0IHB5M2sKKzYyMzk4IGMzNjU5Y2U4OTNlN2U4YmJlYmI5MjdmYmFmYjA4NzI3OTA2YjhjOTggbGVnYWN5LXRydW5rCis2MjM5OSA2NDRhNjc4MzAwNjFiYTM1YjRmOGFmZmI4YTJiNjQ1MjEyZmU0ZjFmIHB5M2sKKzYyNDAwIDY0OGI0ZDAxY2NjZjU5NTU4MTU1NTY1YjNiM2M0ZmI5YWNkZWJjY2EgbGVnYWN5LXRydW5rCis2MjQwMSAxMDIzNmQxZDA4NjA3NjdhNDlhOGVlMTRiMWNhNTI5NGIzYzllYmVjIGxlZ2FjeS10cnVuaworNjI0MDIgZGE0YTg3ZDYzYjBlZTMwMGIyMDFkYTAyZmUxNDBhZTEyZmM4ZDU4ZSBsZWdhY3ktdHJ1bmsKKzYyNDA1IDM4NWUyMThkMGY2YzVhZTViM2ZmN2NjNzNiODA0MzE3NjUzZmEzYmQgcHkzaworNjI0MDcgZmY1OGNiNWFhNzZkYTYwMDljY2Q4ZTIxZTZhMjY5M2YwZjQzOTZkYiBsZWdhY3ktdHJ1bmsKKzYyNDA5IGY2NDFlNTA1ZmZmNDZlMTc2NWE2ZDEwZjIzNTAyMTMzY2FkNDFkNzQgbGVnYWN5LXRydW5rCis2MjQxMCAzNWJmODAxMmEzNzZlNjNkMTVhOTEzZTYzODI5ZTA3YWJmMDA5MDExIGxlZ2FjeS10cnVuaworNjI0MTEgZDE2NjI1MWQ4MDE0NDkxNjc3NzcyOTg5ZWNlYzY3ZTc5NjgzZmEyNCBweTNrCis2MjQxMiAzMWZmNTlkOTg0YmRlMmM4ZTdmODNmZjU2NzIwZjY1NDM3YTIwMTAxIGxlZ2FjeS10cnVuaworNjI0MTMgODBiMTY1OTVlNDYyNmNjODRiOTI3N2YwMGE3MGQwZmNkOTJlZDhhOCBsZWdhY3ktdHJ1bmsKKzYyNDE0IGEyMGRlZjAxMDFkZTI2OWUxYWRhZGQ0OWUxYmVkMDEwM2M0MjE2YTIgbGVnYWN5LXRydW5rCis2MjQxOCBmM2NmMTJiZDExMTI4NDZkMGFhNDE1MTJkMDg5YmUzMDc0MGUxMDdhIGxlZ2FjeS10cnVuaworNjI0MTkgNzM3MzJkNjZkMGQ1ZjdiNTczNTMyNTZmYWY5N2E5ZTBiYTc0MjcwNyBsZWdhY3ktdHJ1bmsKKzYyNDIwIGM3OGNmZTIxMjZkYTE4NDYxMzY4NmMxNmU1ZDcyMDRkYWQ1OTE5NTYgbGVnYWN5LXRydW5rCis2MjQyMSA2MGY0NDU2ZmEzMzgzZTA3ODNjMTQxNDUxZTJmMzZiNzA2YjMxZTM0IGxlZ2FjeS10cnVuaworNjI0MjIgNjM5NjUzMjdiM2VmNjVmMWJjNzlmMTlkMTg0MTdjOTIwNzkzOTcyMCBweTNrCis2MjQyMyA2MzIzYmRjMmQ2NzExZmJmMmFkNWNjZDcxY2ZlZWM5NGVkMWI3N2VlIGxlZ2FjeS10cnVuaworNjI0MjQgMDIyMjk2MDMyZDhmNjk2NGEwZmQ1YzIxMzY2ZTc5ZDFkY2RjYjIwYiBsZWdhY3ktdHJ1bmsKKzYyNDI1IGZkZDVhMDE5ODc2OWQzMDc1YTkzNmU4ZTgzYTcyMTJjOWNjNjNmYzMgbGVnYWN5LXRydW5rCis2MjQyNiAwNTJmZDhmMWNhMzcxYzY4NzMzODEwMWU2NTk4NDVjYWI4Y2FlNmY0IGxlZ2FjeS10cnVuaworNjI0MjcgNDA2ZWNhMmRkYmJjNGY4OWY2ZmFhYzNiMzQ0N2QyN2FkMzg5YzBhOSBsZWdhY3ktdHJ1bmsKKzYyNDI4IGRmMTNjY2FhNWFlOTdjMDFkODY3OTc1NDg4NTE5ZGQ4ODQwNjAyY2UgbGVnYWN5LXRydW5rCis2MjQyOSA2MDc3NjA2MzM5YmI5ZmQwMjIwOTk3MGVhZGVlODZhNjRjZTgzNTI4IGxlZ2FjeS10cnVuaworNjI0MzAgZDNhZjlmZDFjZmFmZjY3Njg2NWViOGM2YTQ1NTdhM2FkOGQyYzhiNSBweTNrCis2MjQzMSBkMGI4YTkwY2EyNzA5ZjVmZTkzYjA4OGE5ODQ5MmYyZmJkNmRkYjgzIGxlZ2FjeS10cnVuaworNjI0MzIgYmIwZjU4YWRjOTFjZTA3MjBmMDkzNmQ1OWNlYmUzYWExZDA5NWMyMiBweTNrCis2MjQzMyBlYzQ4NDkwYjk2OWFiZGViMzhiMDZlMjQ5OTJkMTFlNjVmMWQ0ZWFjIHB5M2sKKzYyNDM0IDM4NzQ5YzA5YzU1NjM1MDFkMDUxMThmZmQzNTFiYWNkNzMyYjI5YzMgbGVnYWN5LXRydW5rCis2MjQzNSBhZTU1NGU1ZDZlMDZkYjMwZmE1NjkzYWJjN2JiNGQ5NzM0MzAxMzI0IGxlZ2FjeS10cnVuaworNjI0MzYgZjUxOTUzY2NlNmFiMTljNjMyMzYwNzRiYzRhMjgzOTNlZTViMmEyMCBsZWdhY3ktdHJ1bmsKKzYyNDM3IDk4ZTA3MmYyMmM0ZjNkNjI4ZjExNjQ4YzBiNzNlNDkzODBjMzUzZGQgcHkzaworNjI0NDEgMWFjZDAwZjJhMzgwN2NiYTYwMWQ4NWI3ODliZTVmZTJjZDFiNDYzMSBsZWdhY3ktdHJ1bmsKKzYyNDQ0IGI3ZGYzMGFjNWI1YTI2MDg4NzVmMTQzNTk3ODI5Y2QwMzQxNGYwMDMgbGVnYWN5LXRydW5rCis2MjQ0NiAwNDkyODQ3MGFkODYwOWE5ODQ3M2QyMTJkYWI4OWFhZmFkZjQyODQ2IGxlZ2FjeS10cnVuaworNjI0NDcgYmFlMmY0ZmVlZmNjY2FjYWFkYTE1OWQwYTI5Njk1ZjFmNmUwMDE1ZSBsZWdhY3ktdHJ1bmsKKzYyNDQ4IGM0NGI4Y2EzZjRkMjk1OGNhODZiZjIzYmE3MjdkMGI1ZjljM2ZmYTAgbGVnYWN5LXRydW5rCis2MjQ0OSBiMTI1ODM2NDMxMjhlYWNmODU0NzQ4N2EzNTMzYjMzOWQwYzNmMjMwIHJlbGVhc2UyNS1tYWludAorNjI0NTAgNDM0YmNjZWNhN2RmMDg5MGU0MmUyYzc2MmIxMTgwOWFiODE0ZjEwZiBsZWdhY3ktdHJ1bmsKKzYyNDUxIDEwOGZlNTdiOWE2OGUxZTk3OGY4ZGZhNzYxOTlhYjJjMDRiODBkZWQgbGVnYWN5LXRydW5rCis2MjQ1MiAyZjAwNjU0NDg4ODNhYmM1OWY1YTJmZmU1OTI0NDc3Y2E5ODhlNTNkIGxlZ2FjeS10cnVuaworNjI0NTMgMDk0MWQ3OWVhN2Q2ZWZiNjNlMGRkMjU3N2M1MmFjY2VhZGY3ZTgzNyBsZWdhY3ktdHJ1bmsKKzYyNDU0IDg4YThkZWY1ODAwNzc3YWUxZDc3ZTBiMjM0YTM3OWI0NjdmMjM0Y2IgbGVnYWN5LXRydW5rCis2MjQ1NSA2NDJkNTcxMjA5M2I4MGIwOGU0YmQyMDhmYWFlOGYyYjE5MDQ4NDU2IGxlZ2FjeS10cnVuaworNjI0NTYgNjZiNzk5MzA2OGJkYTMxZWU3MjM5MTJjY2I2M2Y3ODYyODNkOTg3MiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NTcgZmIzY2IwNDE5NWUwZjgyMmIwNzNkZjc1NWNhYmNkNjkyZDQ4MWJlNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NTggMTQ0MDNhNTQyNThmYzRlODk1OTVmNmMzZGUxYWFjMTgwMjBlOWFkMSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NTkgMGM1ODI0YjAwMjYzM2JhNDYxNTgwMzI2Mjc1ZTRkM2I5YzQ2YjhiZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjAgZDdmZWZiMzVlOTkzZmZjOTQ3NDJiMDlkOWE3ZTg3NjMxZTdiMDBlMSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjIgYzBjZGFjZjA3ZjU0MGQ5MmM4ZWMwM2RiMjk4ZDk5YmVjMmJlOWE3ZCBweTNrCis2MjQ2MyBmZWQ3MmZhOTY3YmY1YTRhMzFkNjcyNmEwOGZhODQ1ZjMzNGYzZGYzIGxlZ2FjeS10cnVuaworNjI0NjQgYTc0NjU0MzUyMzY2ZWYzODRmODExODMyNDE1NDA0YmI1ODQ2ODk3MiByZWxlYXNlMjUtbWFpbnQKKzYyNDY1IDk4ZGNhZDkwOTJhODg5ZWY0N2E5MTRmM2Q1OTI0NGRmYTYyZWEyMzcgbGVnYWN5LXRydW5rCis2MjQ2NiBjOWRlNjcwNWJkMTEyOTc1YTVhMmFiMjRhOWI4OWUzOGVlZDhjMzExIGxlZ2FjeS10cnVuaworNjI0NjcgMmUxZWE2MWM5NGNjN2YxNzI4ZTg5ZTJhYmYzZjE3Yzc4YmNhNTkyZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjggZWQyNjdjNjk4OWI2Y2NiNDZjNTU4OGNhYTc1MjcyNjk3Mjk5MDdlYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjkgM2M2YTI1ZTRkYmI1ZjBmOTYzYmIxYTY5ODhjZmEyYzUyMmY2Yjc5NiBsZWdhY3ktdHJ1bmsKKzYyNDcxIDA3Y2YyODQ4MGFkMWVjODM2MmFjNTAyZDk5ZDBkMTBlMzcxODZhNmUgcHkzaworNjI0NzIgM2U5YjRmYTkzZTVjNDI5MWM2ZjI4NWJlMGJkMWU3MDRlMTE2YmQ0ZiBweTNrCis2MjQ3NCA2MjFhMmVhY2MyN2M0ODk5M2M2MjI4M2QwYWM2M2U3MGZlYTFkNzJkIGxlZ2FjeS10cnVuaworNjI0NzYgNWU2MzZjOWQ2MWFlNTc1Y2Q2YTQ1ZTgxNTM0NDQ3MzNjZDgxNWFmNCBsZWdhY3ktdHJ1bmsKKzYyNDc3IGEwMjI1NjAwYmZmMTQ5Njg4YTViMGUyYjUyZjc5ZjU0MzE1NmU1M2YgbGVnYWN5LXRydW5rCis2MjQ3OCAzZThhMDNhNjQ5N2UxNzE0MWQzZDZiYmYxNjQ2OTE1YWVlNjFlODkyIGxlZ2FjeS10cnVuaworNjI0ODAgNDU5MDgzYzZiZTE1M2ViYjVmZGE2YTAzNmZjYjZlYmM0NTcwODk5MCBsZWdhY3ktdHJ1bmsKKzYyNDgxIDRmZjhkZmFlYzNmYzZkYjk0M2M3OWNlNjNjYjRmNGY4YWI3MmZkNmEgbGVnYWN5LXRydW5rCis2MjQ4MiBhNTFiMzI5MjQ1YjE0NGRhYmY4YWQ4MTNkYTY5NGFjMjE1OWZhNjA0IHB5M2sKKzYyNDgzIDg1ZDQ2NzE1NjVjODc0OWNkNWJmZDM4YjVjZWQ2OGI3ZjBiNWNiYzUgcHkzaworNjI0ODQgOTBlMjE0NmNiOGEzMDhhMzAxMmU3MzgwMTU3Y2FjMTE4Mjk0YWEzNSBweTNrCis2MjQ4NSA5NTk0N2ZkZjQwYWU0OGFlZDBmZWZhMzhkNGFmYTRlMGRlODI1MmZlIGxlZ2FjeS10cnVuaworNjI0ODYgZDFmYjQ5YWVjNzY1MTA0NGM5ZTgwZTYyMDBjNDQwNTgzYmI1NGJmZSBsZWdhY3ktdHJ1bmsKKzYyNDg3IDg4NjRkZmE5OWM3NjAyY2U4ZjI5OTFhYTU1YTUwNTIwZDU4MWMxMzkgbGVnYWN5LXRydW5rCis2MjQ4OCAzNTExOWIwMzY4NmQyZDQ5ZjMxYzQ0MjMzOGIxOWNkMDgxYTk3MTg2IHB5M2sKKzYyNDg5IDFjZjNiMzRkZjZjNjBlYzBkMDQwODE4N2E2NjgxMmYwZDI4ZDg5M2EgcHkzaworNjI0OTAgNjZjOGJkMWJlZGYzMjMyZGYwZTRhMmQyYjlmMDBlMTNjODRkMDY1MyBsZWdhY3ktdHJ1bmsKKzYyNDkxIDhiNzE4ZmMxNWYzZDZiNTIzMTYyYWQyZTgwNWY0MjFjMmEwNTM5ZGIgcHkzaworNjI0OTIgNWJhNmNiYmNhZWU3MzY0NTNjOWFiZTFiOWEwOWNjOGJjMmQ0ODYwNyBsZWdhY3ktdHJ1bmsKKzYyNDk3IDA0YmQ3NmU5MjA2NTQzMmZlM2Y5N2YzMzQ5MjgxZTU3M2M5MWRlZWIgbGVnYWN5LXRydW5rCis2MjQ5OCA2ODk4NjM1NTIzODA3MzFmZjQ3YmE5MzJiZDI4MjY1MTJjYjBmMjM3IGxlZ2FjeS10cnVuaworNjI0OTkgY2U2MjBjYzlhNmE4Njk0OWQyM2Q4NWIyYzk1MDgyYjY0ZjEzYTZlOSBsZWdhY3ktdHJ1bmsKKzYyNTAwIDllMDVmMTVmOTIxYjAxMGNkZjUwOWNkMDRjZjc1YzllYmI0NmE3MTYgbGVnYWN5LXRydW5rCis2MjUwNCAwYzdjYTQ3MWZiOGQ3NzhiY2IzNTdiOTFkY2IyNTUzZGYzY2JjZjc4IHJlbGVhc2UyNS1tYWludAorNjI1MDUgYzczODI4MDYyMDMxMzBiYTQxMTM0NDUzODA3OTIzZjJhNzdlNWJhNyBweTNrCis2MjUwNiAyYTMxYmMyOGMxMGZmZjBhZDgzNjMzZDY2ZmYzYjcxYzVlNjBiY2I3IHB5M2sKKzYyNTA3IDBlMTE4NWJmYTMxMzRjZDI0MDFlNTA5NjA2NWYwNGZkMTM5NzgwN2YgbGVnYWN5LXRydW5rCis2MjUwOCAwY2ZjODQ1Yjg1MmQ4MjRhMWRlOWUzZjBlMGY4NWExYzY2YmEzYmU5IHRsZWUtYXN0LW9wdGltaXplCis2MjUxMSA1MjM4MzI3ZjQ1YmQ0MDQyYzc2YjVkNGI4Y2RjY2FmOGRmZjk0MTE1IGxlZ2FjeS10cnVuaworNjI1MTIgZmZlZWNiZWJmM2NhN2NlNzZiMGY4OGE1ZDc2MDA5MmZkZmNmM2IzMyBweTNrCis2MjUxMyBlYjI3NDZlOGI5ODMzMGRlMWIxMDJmMWZhZjEzODUzYjk1ZWZkYWM4IGxlZ2FjeS10cnVuaworNjI1MTQgYWQzNDE3NTAzNjM2Y2Y3ZWU1NzEwOTJiM2JmYmVhYzQ0OGQ4OTM2OSBsZWdhY3ktdHJ1bmsKKzYyNTE1IDM2MWQ3NzZkMzgwZWI5NDI3M2M0ZjQzZWY1OTVjYTZiNzU0MDk5YmUgcHkzaworNjI1MTYgNDcyMzNhMTdlOTcwNzk3NGVhZWY0ODgzNGMwMWQzMjY1ODFiYjk3OSBsZWdhY3ktdHJ1bmsKKzYyNTE3IGQ1OGVjMzhlNmRiMWE5NThiMjhhNTNmZmNmYzMyYTAxZTliYjM1NTEgbGVnYWN5LXRydW5rCis2MjUxOCBhZWYzNTAxZDhlNzc2ZTY5MDc4NDJkMDQyMDk1MWFhMmNiODNlMTNkIGxlZ2FjeS10cnVuaworNjI1MTkgMDZlNjdjYjIyMTU4MDg2YTA0Yjk0MzRlMDcwNjg3ZWQ3YTI2OTk1ZCBweTNrCis2MjUyMSBkYWQ4OGNiNmVmMWZkZDU5NTNiZTk2YmY4MTczMjBhNTY0M2RkYmY1IGxlZ2FjeS10cnVuaworNjI1MjMgZWRiM2MzZDY2MDA2N2VhZTU5MjgyMDMyNmJiNzBiNDY5Zjc4ODI5NSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI1MjUgYzU4OTViOTgxZDhmMGY0ZGJiMGNiYzdjYzI0ZDY0Y2I3OWQzYTk4ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI1MzEgNmI3YzkxZDlkYzUxMWJmMTU4YjE1Yzk4NDIyM2ZiNmE3MzY2NWYwMiBsZWdhY3ktdHJ1bmsKKzYyNTM1IGYzNjVhMDE4YWY1YjY5NDY5NTA2NzI1ODE1MjQ2NWY1ZTJiZGRjMzEgbGVnYWN5LXRydW5rCis2MjUzNiA3NjcwMDA1ZGE4YzU2OGJlYjNiZTQ2MTRkMTdhNGZiODkyNGRkYjE0IGxlZ2FjeS10cnVuaworNjI1MzcgZDdkNTY3MmY1ZDVlMDUwYmJjM2RlNmVhMGY2ZjYwNjEzOGE1ZDNlNyBweTNrCis2MjU0MCAwNmFhODAyYmZjYjE4YzViMDE5ZTJmNjUxNDM5MWI2NTQ4NDUxNzUwIGxlZ2FjeS10cnVuaworNjI1NDUgM2Q5ZGRjZTJkYTg1MjA0NzcwY2FiNzU3ZjlmYTMyNjQ3MjM2YzUxNiBsZWdhY3ktdHJ1bmsKKzYyNTQ2IGViYzQwZTUwMDg2OThhNTZkMTcxMzRiODQ1NjRkMjMxNzZiNTMyNTQgbGVnYWN5LXRydW5rCis2MjU0OCAxOGU5YTM3MmE3YTNhMGNjNzk1MGYwMTI2Nzk1YjhhODhlNDQ4NmM4IGxlZ2FjeS10cnVuaworNjI1NDkgODRkZjA4MmRkMjE2NzgzNTgxNThhMWRjZDA1ZjliNmRlZWNlYTFiMCBsZWdhY3ktdHJ1bmsKKzYyNTUwIDU5ZGI1NzVhZTM3NDYyNTY1ZjQ3ZDZhNDVhMjUwMzM1NWEwYTM1MWYgbGVnYWN5LXRydW5rCis2MjU1MSBjNWRjMDVjZDM4NTg5YmMzMGE3YmRmY2E2ZWRhZGNkMzdiNmQxNzNlIGxlZ2FjeS10cnVuaworNjI1NTMgNTc2ZmEyNDQwYTBjOGQ4Zjg4OWQzYWZhNTc2ZmYwNzViNzQ2MmIwNCBsZWdhY3ktdHJ1bmsKKzYyNTU0IGQyYmI1ZjEzMTg3MzhiMDA2NDc1ZmE3ZGYxM2JjODNhNTZlYTkyMmMgbGVnYWN5LXRydW5rCis2MjU1NSAwN2E0ZTE3MTAyNjI5OWNmMjdhOGYwYTIzNGQ5YTUxYzdhOGRiZDAyIGxlZ2FjeS10cnVuaworNjI1NTYgYTUxN2VjY2M3ODNiOWUwYzgxYTA0ZTk4MDc5OWRkZDBlZGQxOGRhNiBsZWdhY3ktdHJ1bmsKKzYyNTU3IDFlYTRkMWIxOGFlZDU4ZDRiNWIzZGE4ZDA3MDUyODRhNDNkZWMwM2MgbGVnYWN5LXRydW5rCis2MjU1OCA0ZTQ3NTQ4ZWRkMzY2ZDJiMTE2YmYzZjFiZGRmYTkxYTA0ZjUyMzRiIGxlZ2FjeS10cnVuaworNjI1NTkgZmVmNmQ2YmE3OGE0MDE3YThkMDdmZTM0OTc0YzM4YzM2MGY5MWQ3YiBsZWdhY3ktdHJ1bmsKKzYyNTY4IGMzNGYwZTYwOWZhNmFlNDMwZGQxYzZkMzY0MWUzNTY4YjQ5NzRlNzYgcHkzaworNjI1NjkgOGQzYWQ4YWY2OTJiNWEzNGVmZmM4MTM3NDA3ODVhMTA3N2IxMWVjZiBsZWdhY3ktdHJ1bmsKKzYyNTc0IDZmZWFkNGNmNzkxMTFkYjBmZGZjYzdiZjM0ZjJhYzNmN2M2MGI3ZTggbGVnYWN5LXRydW5rCis2MjU3NyA3ZjYwYjMzN2IwNDkyZDRmZTdlMTdiODliNzFmMzA2YTYyMjA1ZTczIGxlZ2FjeS10cnVuaworNjI1ODAgMDE1NGRmMjUwZWY2YjUwOTRhNTVlZjIwZDVhM2YxY2MzZmNmN2RlNiBweTNrCis2MjU4MyBlNDJkMzk3NzhlYWQ5Y2NiNDU4NzViYjM2ZjM4ZmQwZGFjNzY0ODM5IHB5M2sKKzYyNTg2IDM3ZDY0NWIwMTUyMzE2ZTQxYjExODQwMjlkMzZiYTZlZjZiM2JiMDAgbGVnYWN5LXRydW5rCis2MjU4NyA3YjQwODFiZWM3ODM3ODlmODY3MDc3Y2E3NmE4OWFjYzdlYWI5N2JhIHB5M2sKKzYyNTg5IGNiYTI4MWIxNmE4MjQ1ZTE1NmZjMWY5YjM4MTNiN2I0ODk4MmI2ZDcgcHkzay1jdHlwZXMtcGVwMzExOAorNjI1OTAgZWY0MjFhMzY1YTFkNGM3MDMxMjFlN2M1MWI4MTllMDU2NzQzNTZlMCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MjU5MiBkNmM2ZjM2NmIyMjA2MmZkM2RlZjJiNDJjMWYxNTQ3MTdhY2MxNjQ2IHB5M2sKKzYyNTkzIDhmNWM3NTllMDE5YzY2Y2JkMGEzNDU3OWU3ZDY4ZTAwNzI2NTdmNGMgbGVnYWN5LXRydW5rCis2MjU5NSAzZDBkM2E2ODA4OTZjZGNlNzY3OTE2MWQ0MjFjYjIxZmM4MzFkNDUxIGxlZ2FjeS10cnVuaworNjI1OTcgOTQ4YmVhOTZkZDIwMWIzMjBiNmE4ZWJiN2ZiMDY0ZjA4YjNkNzQ0MSBweTNrCis2MjU5OCBhZjBlZjA0NDAxYmIyZTc5YjY0ZjkyOTU5OTI2OGY1YTZmZjkyYjMwIHB5M2sKKzYyNTk5IDdhNmQ3NDc0Y2U2ZTA4YjA3Y2I2YTUzYWQ4ZjczZWNiNzMwMTUwN2UgbGVnYWN5LXRydW5rCis2MjYwMCBiMTAxNTU2Yjk4ZWFlNjA5OWU5NmRhMzNhYmE4ZWJmOTc0M2FkMjFkIHB5M2sKKzYyNjAyIDAxYmUxYzhmMDA2YmRkNTYzNzFhYjA4OTU0ZDkwOWFlMjM1YTE1MTQgbGVnYWN5LXRydW5rCis2MjYwMyAwMTQ1MzU3MTk2Njg4NWMzZjRmN2VkNjczYmExYWRjYTFkZjQ1YmE1IHB5M2sKKzYyNjA0IDMwMzZlMjFhYzY2MWRkYTAxM2U2Nzc3MmQ5YTM5ZDk3YTAyODYwMTQgbGVnYWN5LXRydW5rCis2MjYwNSAxNDIzODM0YjcyZDhkOGQyNmUxNzMzYjg3NzZjMTMyZjJmYmE2MjMzIGxlZ2FjeS10cnVuaworNjI2MDYgNjhjZmM1MWU0MzMxZWZlMWI3N2ViYjViNTExOGE5MmY3NDc2MTFhZiBsZWdhY3ktdHJ1bmsKKzYyNjA4IDY1YWNjNTVmMWE2OTBmYTQwNmY3MGQ3NmY3MzZiOTAyMjM0OTM4NDYgbGVnYWN5LXRydW5rCis2MjYxMCBhNDBkN2U2MDVmOWUxMTdhNjYxNzhmZjQ3YTk3YWMyYjVjOGQ2ZDY0IHB5M2sKKzYyNjExIDNmMjExN2QzMjcxZjdjMGY2MGQ0NWQ3MTJhYTM4OWNmMzkzMWNlYTMgcHkzaworNjI2MTIgZTQyZmUxOWJhNmZkZjM3ZThmMjZmYTk4ZDMzNDRhMmJmZDNkNTMwOSBweTNrCis2MjYxNSA4N2QzMTM3YzMxZDQzNjEwMmRmNzZkMGNhMzJhM2NlOWE1MjMxNDcxIHB5M2sKKzYyNjE2IDMzMTVmNmI0NDQwMzBiODc4N2JjZWE0M2Q2NjUwNmM0OTk4MjVlMjIgbGVnYWN5LXRydW5rCis2MjYyMCA1NmY4MWVhOWNiNzk1MGQ0ZTYyZDVlNzk3OWU2ZjkxOGI4OTgyODM4IHB5M2sKKzYyNjI0IDgwYmQ0YmFhNjM5ODE5MjAzNjVhNzI1NDU3MzM3NDQwOWU0OTY0NWYgcHkzaworNjI2MjYgZWExYTljZjczNWE1Njk0NTQzMzY4ZDg0MTdjNTIxOThhNzdhODAwOSBsZWdhY3ktdHJ1bmsKKzYyNjI3IDU0NjA2ZWE5ZjRjN2I5MzM4NDJlYmQ3MGQwNTBkYzNlM2NkYTBhNGQgbGVnYWN5LXRydW5rCis2MjYzNiAwYmExMmMzMmUyYjU2OTU5MDA4NWUyMDEwYzllZTJlZDBhNjA0NmU0IGxlZ2FjeS10cnVuaworNjI2MzggYzRkOTBmYTkzNWVhYTQxMzA1ZjE5NDFiNTRmZmJiNWUwNGFjNzhmNCBsZWdhY3ktdHJ1bmsKKzYyNjQ0IGExYzZmMmFiNTk3ZTAzNzk2MjE0NWFiMDhkZDIxNWM2ZmMwZGNiNWQgbGVnYWN5LXRydW5rCis2MjY0NSAyMGI3MDc4NjY0NTlhZGE3NGEwNjM5MDhiOGJjYWQ5NmJkZGYwZDRmIGxlZ2FjeS10cnVuaworNjI2NDcgMWZmZWMyYTY4N2U5NTk2ZjQ4YWJhYTM4ZjMwMzRjOWVjNjczMWI5OSBsZWdhY3ktdHJ1bmsKKzYyNjQ4IDNmODRlNmFlMzZkYWQyOWUwOTBhNGI0NzQ2YTAzYmQ0OGNiMjY2N2UgbGVnYWN5LXRydW5rCis2MjY0OSBiNTVjNTU2N2NjNzY3MzNmNDFkYzExOTZlYjU1NTFmNWVlOWRiZDEwIHJlbGVhc2UyNS1tYWludAorNjI2NTAgZWI5ZGFiOTU2YTZlYjhiODBlNWFkNGFmZGMyMzM4NjNlMWQ2ZDlhNCByZWxlYXNlMjUtbWFpbnQKKzYyNjUxIDgwNjM1NDg5ZThkODMxNDRiNGMwOWQ3Zjk0NGQyNDJlNDcxYzI1NWEgbGVnYWN5LXRydW5rCis2MjY1MiA2ZDk0OTc1OTdjNGYzZmVmYjRjMThhNmM1MTNiNzcyOTI1YzJiNDg2IGxlZ2FjeS10cnVuaworNjI2NTMgY2M2NjAyOWQyZWZlNTkzOWFiYzI2NDQ5NDE1NTdiYzNiZTg3MjJkNyBsZWdhY3ktdHJ1bmsKKzYyNjU0IGZkMjdhYzVmY2M4MTgwOGU5YWZkOTFlNmFkNzY2YjNkZGU2ODFhZGUgcHkzaworNjI2NTUgMDMyYTBhMGQzZmE5NjA2Y2ZlMTg3MWQ5YmZmNmEyMTJlNmFkYmM1NCBweTNrCis2MjY1NiBhODU5ZjgzNWVmNTNkYThhMjYxZjcyODAxNzE3MmVkZjg1YWQwMTk5IGxlZ2FjeS10cnVuaworNjI2NTcgMGZkZWYxNDk4MWE4ZTNiYjBhMWMyZDA0ODdmNTJjN2IzYjc1YTVlNSBweTNrCis2MjY1OCBiZDkxMDAwYzhlNzNkYzc3NmFmOGI2YzY3NGRmMmM4YTlkZjc1ZjczIHB5M2sKKzYyNjU5IDNkNDM3NzUyMTcwYjUyZGMwNDE3ODExOTM4NzZjZTBlNGRiMWFhNmUgcmVsZWFzZTI1LW1haW50Cis2MjY2MSBiZmE4MmI0OTMzMzU0MDk3MWU2ODlmNGZkMjc5ZmEyMzIxNzkwMGI1IGxlZ2FjeS10cnVuaworNjI2NjMgMGRlYjRhYjA0MjZlMjg3ZDk2ZTA4YzAyMzk1NWE0ODI5OTYyNzQ0NCBsZWdhY3ktdHJ1bmsKKzYyNjY2IGVjMDlhZDViZWQxYWNjYTEwYzJjZDYxZmQ0YmJiYWY5MWFmNjIxZjYgbGVnYWN5LXRydW5rCis2MjY2NyBlYTU5NDMwNmVhODU0MmI5OGJlMDY4NjM3YjA3MTJhNzgzMmExNzIxIHB5M2sKKzYyNjY4IDY4YjFkNDRiNWY3NGE3OWYwMzYwMjU3ZDNkYzg3NjE1MTFiNmFkNDQgcHkzaworNjI2NjkgZWEzMGYwM2IyNGY0MWY4MjE1MzdiNmYzYzJkYjBhMDRjMDBlZTUwYyBweTNrCis2MjY3MSA5NDE4ZGM0YTdiOTg1ZDVjZmJiZGNiOWQxNWNiYjg4MDIwNjVlYTcwIGxlZ2FjeS10cnVuaworNjI2NzkgNWJiOTQwNjViMDc5OTljZTJlMzQ3OTY1OWU3ZTM3MDYxNmY3MGFjMiBweTNrCis2MjY4MCA4M2NjMDk2ODIwODFkYzA0OTNlOTIyM2I4NTI3MTJmZmM4YTZlOTMyIGxlZ2FjeS10cnVuaworNjI2ODMgMzM5MGViNzU5MWY2MTI4YjNmZDY2NDg4NjcyNGY3MTkyOWM4MDA2NiBweTNrCis2MjY4NCBjOTdlMzZhYmNkZDU5NTZmNWIzNzgxZGM2OTMzZmYzMGQ3NWMwNWFmIGxlZ2FjeS10cnVuaworNjI2ODUgYWNiMmE5Mzk0Mjk2YTQ1NzUxNDQxNjFhMzM1Zjg1OGViMjRhOWFiNyBweTNrCis2MjY4NiAxODcyZTFkYzAzNWZjMzI5YjllOGI5OWYyM2MzZjA3ZWIwNGZkZTdkIGxlZ2FjeS10cnVuaworNjI2ODcgYjdjNjZkM2UyZTI4ZGIwMmQ2Y2M3YTc3OGViZDY3M2NiMmNkNjFlMiBsZWdhY3ktdHJ1bmsKKzYyNjk2IGE5NGI5ZGI5MjIzZmNkMjBkMDQ5MGU1NzVkM2Y0MTVlMzc3NDdjNDMgbGVnYWN5LXRydW5rCis2MjY5OCBhYWEwYWI0OTAxMjZlMDJmMTg0MDU1Y2ZjMjgwNDdkMDczYjM2YzM3IHRsZWUtYXN0LW9wdGltaXplCis2MjY5OSBkZTc2YmUwMmRiNDI1YjNlNmE0ZjYwYjcxZjg2MTlmZWJhOWJiYzhlIGxlZ2FjeS10cnVuaworNjI3MDAgNmRiMzkyYWM5ZjRlYjE0MmI0YjdkZTc0NjRmNDFlZGY0NjEwMzI4MCBsZWdhY3ktdHJ1bmsKKzYyNzAxIGI5M2EwNDFjYzIyMTNlNTg5ZDQyYTRlNGE3NzIyZGE0ZWFhZmRiMTkgbGVnYWN5LXRydW5rCis2MjcwMiAyOGIwOTlhYzRjZDhmN2I4Yzc1MWU2ZDQzNGJkNGNmMzgyMjczYjM2IGxlZ2FjeS10cnVuaworNjI3MDMgNmM0ZWZlNTJkNTk0ZDNmZjRmYTAxZmFiZDI4NzY5ODFkZDUxYWYwMyBsZWdhY3ktdHJ1bmsKKzYyNzA2IGMwN2YxOWFmNTU0YTlmNjMwZDdlYmZjMTk1MDJkOWY2NGFiZDFlMzMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNzA3IDJlNDYzNDQyZTU3MDYwNGM5NWRhOGNiNDNmNjk5OTcwNDkwNDZhMGMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNzExIGZlMzAwYTk3MmZiOGRmMjg3NTA0NzU2OTU4ZDAyOWI1YWVmOGU4NjMgbGVnYWN5LXRydW5rCis2MjcxMyA3MTcyZTExZTlmYzhjNjc2ZGNmNjNmZmQ5OTU1ZjVkMjAyNTk5YjVhIGxlZ2FjeS10cnVuaworNjI3MTUgNjQzNDE1ZjkxYTUwYzkyZmY5MzU3ODk5MmZhOGE2ODUxOWQ3ZTkwZCBsZWdhY3ktdHJ1bmsKKzYyNzE2IDAzMWRmZTQ1NTU4NWNjZGQwNzg5N2I4ZTZkMDA0Zjc5Y2E0MjY3OWEgcHkzaworNjI3MTcgYzdjMjVjYzk5NjNkZDMzMjc4MzhhNTM5NTVlYTg5ZjI0MmVkNTM3NyBweTNrCis2MjcxOCAwNWE4MTdlMjVmMjBkNDJjYzcwYWE2YmU2Y2Q3NDY1MmQyZTM3NWEzIHB5M2sKKzYyNzIwIGQ5MDcxZmE4MjQ0YWYzNDMzNjY5YTdjNzA5MGU2YTU3NjYwN2FlYmYgbGVnYWN5LXRydW5rCis2MjcyMSA4YTliOGIzY2UyZTEyMjI1MDM3MTEwYzA2OTVkYTAxNDE3YzgxYTVmIHB5M2sKKzYyNzIyIDliMTBiZjY0ZjEyNDMyMTZiNjMwNzExYzVhODI4YzM5YzA4NTgwNGEgbGVnYWN5LXRydW5rCis2MjcyMyA0YzkwYmU4YTRkMzgyN2RlNGE0MzI1YTRkZmE5ZjE0OGUyY2YxNzNjIHB5M2sKKzYyNzI0IDhlMzNmMzE2Y2UxNDBkYTk3NTg2M2VhNGU5NWRjZDhhMGI1NDIxZmUgbGVnYWN5LXRydW5rCis2MjcyNSAxNWYxZDIzMmVhZTkxMzg1N2I4MjRlODcxYTFkM2U5NzYyZGJlMmRjIHB5M2sKKzYyNzI2IDEwZThlZjk1YjExZjlkYjYxODRlNTU0MDkxZmI4ZWY1Mzk3MWZjYzEgbGVnYWN5LXRydW5rCis2MjcyNyA4NmY3MzgzOGE0YmI3MTUwMWYwMzhlMzk0NGM1ZWE3MzY5Yjg4NTk4IHB5M2sKKzYyNzI4IDU1YmY4ZDY5MGU2N2FmNDYwYmNhOGU1ZTUzYTQ2NTc0YjI4OWI3N2EgbGVnYWN5LXRydW5rCis2MjczNCA0ZGVkMzU3NTRjYjcyMWY0OTYxMjIwOGEwZWI4ODUxOTAxZmFkZDMwIGxlZ2FjeS10cnVuaworNjI3MzYgMzRhNTM4MGVlMjc1YWUwY2ExNzE3MTVhNjdmZmFlMGZlMDVhZDJmZiBsZWdhY3ktdHJ1bmsKKzYyNzM3IDg4YTA5ODA0YmJhMzk0MzE1ZmU4YTM1M2I0MDcwNWNlNzdmOWM4M2IgbGVnYWN5LXRydW5rCis2MjczOCBiNzRhM2Y5NDZhNWU2NzgxMmU5YjAyZjQ5MjM4MDI4MGQxMDBmOTdhIHB5M2sKKzYyNzM5IGRhYzIxODQzY2Y1MzUxNGM1N2Y4NGU5OWZmYmI4M2RkZWU2ZjNkNzIgcHkzaworNjI3NDAgZTE5Zjg3YTk4NzhjMjg4ZDNlOGM5ZTJkODEwMzc3YzEzNjYxYzgwOCBsZWdhY3ktdHJ1bmsKKzYyNzQxIDkxZDVmMDg0MTcwMDA2ODE5MjY1YjFkMTJhMGUyNmU2M2QwZDA0OTAgcHkzaworNjI3NDIgZjJhNGQ4ZDRmMDYzNGNkYjJjNjk4ZjVlYTc0Nzc3ZGNmOGFjNzA4NyBweTNrCis2Mjc0NCAyNzI5ZTk3N2ZkZDllYTdlM2VkYWM1MzMxYjY4ZjNmNzgyNjFiNTU1IGxlZ2FjeS10cnVuaworNjI3NDggNzEwNmNhODcxYmZkMWI2NzVjZjZlYmMyMWNhYzAwMDk1MjQ2MmI3MyBsZWdhY3ktdHJ1bmsKKzYyNzQ5IDJmMzUxZmE1M2E2YjNmMGVhZmU4ODg2Yjk0ZTBkZDczNjhhNDVlNDYgbGVnYWN5LXRydW5rCis2Mjc1NiA1YWU4ZDU0ZDA5NTI4ZjY1NTYxODFkNWViZmFhYzcxMTc3ZjIwMmVlIGxlZ2FjeS10cnVuaworNjI3NTcgMTFlZDQwNWQ5OWNiODZmM2I1YTE3ODU4NWU2OWYzMmU5NDQ1YmE3MCByZWxlYXNlMjUtbWFpbnQKKzYyNzY0IDFlOGI4ZGY0ZGY4MzE1M2RkYWIyNzg3Njk5Y2ViNmE5NmViMGYxOGMgcHkzaworNjI3NjUgYzgyZjYzZWZiYzQwODMxYjQ5Y2JiZmJjODMyMWFiZWQxNjc3Nzc4NSBweTNrCis2Mjc2OSBiMGZiNTVlY2U4OWZjM2VjY2NjNTRiY2NlNTc0NDAwZjVhMjgxYWU5IGxlZ2FjeS10cnVuaworNjI3NzQgZjg0NjhiZmQ0MzU3NjA0Y2Y0OTk4Yjk4OGM0MzQwZWI3Y2Y3NWU0ZCBsZWdhY3ktdHJ1bmsKKzYyNzc1IGRkZDVmNDIzMzJiOTg1NjMyNTc2Yzc4MmViYjUyZTZlNGYzZThmMzUgbGVnYWN5LXRydW5rCis2Mjc3OCBjZGE4MTZjM2ExZTQ2YmUzYWYyZWI3ZDhjZTI5MmRlODI4ZDFmMzRkIHB5M2sKKzYyNzc5IDAyYTgxNDJkODNkYjI4MzczN2Y1MWY3Zjk5NTI3MDk0MTc5NTFmNTggcHkzaworNjI3ODUgOTEzMGI0OGE3MTMwZTE1YTQ5YzRlMTI4NDI2YmZmMTYxNGRlYmQ5NCBsZWdhY3ktdHJ1bmsKKzYyNzg3IDRiMTliNDFlZjYwNjRjNTMwNWNhY2I3N2E1Y2JhZGY4YmM4YmY2YWIgbGVnYWN5LXRydW5rCis2Mjc4OCAxYTJkYmM4NGJkZmNmMGE4YzRjNmRlMGIwN2RiNDRlYjZiZjdlMzFlIGxlZ2FjeS10cnVuaworNjI3OTAgZjQwNjRiNWM4YzVkMmRmNGEwZGE2ZjJmNTA0MmI2ZWY5MWFjMThmZiBweTNrCis2Mjc5MSA5MTFjODdmOGVkNWU1NzNhNmUwZjg1NGIzNzM3OTNkMTViYjA2MGJhIHB5M2sKKzYyNzkyIDBjMmU0YjU1ZjgwYjk3YjU2ZDcxZDAzNGQxMzI5MTFkMDI0MTY2YzIgbGVnYWN5LXRydW5rCis2Mjc5MyBmZmRiNWY0MTM5ZmU3YTg3MmIyZDdjMGI4ZDNmY2YyMWU2Y2IwOWQ5IGxlZ2FjeS10cnVuaworNjI3OTQgMTBiMTM5ZDg3ODYwMjFjMDk1YWIzNTk1M2ZiODhhMDU2Y2E3YjQ4NiBweTNrCis2Mjc5NyBjZWVhNDBkYWE4NDkwNzliNTE1ZWY4MDI0ZjQ0NjA0MDgwYWMxNmNhIGxlZ2FjeS10cnVuaworNjI3OTggN2M4MGJhYzdkNzc2NTZjYjcxZDljYTYxY2UxNWZiN2VmYzg0NzRkMiBweTNrCis2Mjc5OSBjOGFhMjIwYzZjZWVmOTU4YWQ1ZDhkNTMyMzFlZjBlNWY3MmE5NjlhIGxlZ2FjeS10cnVuaworNjI4MDAgNzM3YTE4YjJkZWQzNjVmMGJiZmM5MTBjYTE4ZmRjMjQ2ZGM3NDVmMSBsZWdhY3ktdHJ1bmsKKzYyODAxIDc0YjljODUzNjFmODhlMjUzYjlmN2JiNDlkZmFlMDQ2NjE5YjlhZDcgcHkzaworNjI4MDIgNzQ4NmMyOWY5M2EzZWRkMTEyMDYxOGM1NDlmNmIwMzRjNGUzZDY2ZCBweTNrCis2MjgwMyAwZTVhOTZmYzk0MjJiNGUxMzg1NTM3MWE0MmIzOTAyODczZGQ5ZmMxIHB5M2sKKzYyODA1IDc3ZGY5OTFlYTYzNzk4ZjVjOTVjMzkxZjdlNGFkNzE0MDIzODhlMjAgbGVnYWN5LXRydW5rCis2MjgwNiBkMTk2NTA4OGI4NWRkNzM3NmYwYjc4NjhhYWVjYWY4YmQ0NTQxZWMxIHB5M2sKKzYyODA3IDhiOTMxYTc5ODI3YTliNjVlMDEzMGI3ZmM5YTA1NGM3ZDc2MDBhNmEgcHkzaworNjI4MDggNWZiZDk3ZjFiYzM1ZTNjOTZlM2FmYjBjNTJhYmY0ZGRkNWNiYTEzYSBweTNrCis2MjgwOSAzOGI5NGMwOTdhNTUyNmY1YWJhYzAxNGY3NGI1ZjkwZmFkZmM3ZTE0IHB5M2sKKzYyODEwIGQ3ZTIwMjliM2NhNGJmMTEzMGNhMzkxYjQ2ZGFlYjhkODcyNjE2MWQgcHkzaworNjI4MTEgYjYzNTQ2MmE1Nzk4ZjAzZTU1MmYxY2MxMDE1NmFhNTNlMDNhMDQyZSBsZWdhY3ktdHJ1bmsKKzYyODEyIDgxNTQ2NDljNTUxNjYyMDFlMDlkMGI3MDRiNGNhZDJlN2UzOTUxNzUgcHkzaworNjI4MTUgYTlhY2YxOGE4ZTU3NTExYzdiZWE4ODY0Y2EzOWUxODdjYzAzNTA5MyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MTYgNDMwN2VlZDFmNzNiZTljNGI3ZmI5YzVkN2RlMzI5NTM4NzU4MDM4ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MTggYjlhM2FiZjU5YTQ1NDZmMDAyZDY2ZTQxODI4MDExM2M1Njk3OTBlMCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MTkgYTY0ZjQwYjYyMTY5NjMwYzY3ZmFmNGNiY2FiZjY0N2UxYzY5M2IwOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjAgYmI5NTZmNGUzMjZlYzQ2MTU1ZjE4ZjVjZWIyMDY1ZDMwMjZmYTYwMiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjEgYzUzODE1MjY2MzYwZjA1ZmY1YTFlYTA2NTVjNTNiYjgxZGJhYjRiNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjIgNGIwMzllZGZlZTZiZWU0OTI2ODFlN2Q4NTJmNTAzOGMyMmQ1N2U3ZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjMgOTc0N2QxMTM3MDgzY2E1M2I3NTZhZmQwYTIxMGM2Njk2OWNkYmQ1YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjUgNjdiYTkzYWQwMGZkZjFiOTEzNTRkYmExMTgzMmIzNmM0YmY2OWYxNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjYgMmM0NTU4ZGZmNTNkOTA2NGE3N2ExMmI3MjAwMjg4ZmIyZjZhZjg5YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjcgNDFlOGU3MmFhOWVkYjFiMGI5NmQwOWI4MTZkZDMyN2ZhMDI5ZmY0MSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4NDEgZWY0N2RmMjU0MjNjNzZhYWNhNDQyNTRkYWIwOWI2YmI3YzlhZTVlNCBsZWdhY3ktdHJ1bmsKKzYyODQyIDk1NzBiYzEyODMxNDQ0YTNiODMzNTRmN2U4ZDc3ODVjYmMwYTFmZTAgbGVnYWN5LXRydW5rCis2Mjg0MyBhZDc3NTFhOTU4MDk4ZDcxM2Q2ZWU4MmNmYzE0MDg2YTE4MTJmMzAyIHB5M2sKKzYyODQ0IDgzMWEzMGNkMjNhMjgyMDUyZDliMTEyZTk3MjgwODU1ZTk1Nzk1MTEgcHkzaworNjI4NDUgZTM0NTlhZDAxMzY4NmNiZWNlNzM2NjFlYmY0OGM2NGI1YmQwMzdhMyBweTNrCis2Mjg0NiA2ZWM1NjA4YjY2M2MyY2YyODAzMGE0YjcwY2M0MDJkZjMxMzAyODEyIHB5M2sKKzYyODQ3IGFjZDY4Mjc3YzRkZDAxMjdhNzk4MjEwMzU4NDAzZGZmNWJiZDU1NWUgcHkzaworNjI4NDggMmVmMWMzODExMzhkNTczY2ZkOTRiZmVlOTRhNWY2YjExZWVmNzI3NyBsZWdhY3ktdHJ1bmsKKzYyODQ5IDBlNzZhOGYzNDc2OTVhMzc1MGZiNjgxMWQ1NWQ2ZGJiZDc3OGNiZDYgbGVnYWN5LXRydW5rCis2Mjg1MyBiMTI0ZTMxNjE0ZWQ5NjkzMzZmNzVlMWUyNzZhYTU5MzYwNzkwZmI5IGxlZ2FjeS10cnVuaworNjI4NTQgYzU2MjQwMmMxYzA4Mjk5MjY5YmVmMzY4NzU2YzgyMWI4YjFjYmExZiBsZWdhY3ktdHJ1bmsKKzYyODU1IGM2N2MwOTU1NGQyMzAyMDQzZmIzNzgwOTFjZDAzMjUzYzMzYjdlOTMgcmVsZWFzZTI1LW1haW50Cis2Mjg1NiBlMzU5MzU0NzUxNTMzNzdkNjcyN2Q2NGU2YzUyZjcyYzNiODQwMTViIHB5M2sKKzYyODU3IDgxNDgwNjkyNjNhYTFmMDIxMGNkZDBkNThmMTU5M2ZiYWQ0ZTZlZjYgcHkzaworNjI4NTkgYWVkMDQyMzlhM2ZjMjU4NTIwNTJkYzQ2ZjM5MTZkNjA1YmZlMzY1MSBweTNrCis2Mjg2MCBjZWY1YWEzZWQ3MTMzNTQ5MDQ3Mjg2NjE4N2I2MzlmYjVhNjY3ZmE4IHB5M2sKKzYyODYxIDQ4ZTlmYjBhNzIxNzk5ODc3ZjI2ZWRhZWYwMWFjNmU2MDI5YjY4MTIgbGVnYWN5LXRydW5rCis2Mjg2MiA2Yjc5NzBhYTBkZGEzMjdmMjVhODMxNTE5NTFkOGE3Yjk2NmVhYmNjIGxlZ2FjeS10cnVuaworNjI4NjMgOWY0NTk3OTU1OGE5YmNkODIxOTZmMjJjNzAwOWQxNWVlY2MzNDQ0ZSBweTNrCis2Mjg2NCBkOWQ0Y2VmNDIxYTJkYzQ0YWM0MmFiOGRjOGIxZmEwOGI0ZjNkZTA1IHB5M2sKKzYyODY1IGQ0NDMwZTkwMjFjMjIzZThmZTUwNjAyOTI2YjdjMjFiNTljZmRhOWQgbGVnYWN5LXRydW5rCis2Mjg2NiA3MmJlMTM5MGFlNWY0N2JmNzg5YjRhNzNkMTVmYWVkMzcxODRlZmRhIHB5M2sKKzYyODY2IGU2OWY4NGVlNGYzYTU1MDIyZTJmMjUyZWNlMmJhZDk0MDdkMjE1NWYgcHkzaworNjI4NzEgOTgxY2FmMjRkZDhhNmFhZDhjMzkyOWZmMGFkYWZmYjNkYjk1ZGIwNCBweTNrCis2Mjg3MiAxNmRkZGZlMGE4Y2RjNDY2MjNlM2M3ZDA1OTc5NjQxMjFmMTBlNjUzIHB5M2sKKzYyODczIGM4YjQ5ZDhjMzk2N2U3YWVkYTRhZTc5ODAzMDYxNjNhYmUxOTRlMDIgbGVnYWN5LXRydW5rCis2Mjg3NCBmMmQ3NzFmMzcwYmQ4ZTBiYTM1ODlmYTE2ZTFkY2UyYTRiYjk2ZTU3IHB5M2sKKzYyODc2IGNhNDEwMjQxNGEzNDVjZWVjODA5YmZhNmI1MjkwZWQ2M2I2ODNkMjggcHkzaworNjI4NzcgMTE0MDdjMWY2OGNhNDg0YzI4YjFkOTQ2OTFkYjU4ODU3YWYzYTFmYSBweTNrCis2Mjg3OCBlYWFjNTYxOWEyMWZmYzA1NDljZGYzZTMyYjI2N2YzYjM3YjgxZDFkIHB5M2sKKzYyODc5IDIwMjhmYTJmYzFkZGZjYzk0YWUyZTEzZjFjZmFjNjczMjNkNmNhN2MgbGVnYWN5LXRydW5rCis2Mjg4MCBlOTVkZDI1ZGZiMGNiZTA4MDVlZTkzODMyYTY1MGUwZjM1NTBkNjMwIHB5M2sKKzYyODgzIDVjNWIzNjNkMmYxOWE4MWE5ZWFjNWYzODAxNTA0NmJmOTkwOGNiYTggcHkzaworNjI4ODQgOWZiYzJkYTU0ZTI5M2RlOTEzMWM1MGNjNTQxOGVhMTI2YWI0N2QzOSBsZWdhY3ktdHJ1bmsKKzYyODg1IDA0N2RhM2Y2ZmQ3ZmQ5NGEyZWFkNzcxNTA2NDRiOGZmODlhMjZjMmMgcHkzaworNjI4ODcgY2FjNmExYTMzNGUwNGNiMDZjODc3YzliZTU2ZDQ1Yjg2OThlNjMwNyBsZWdhY3ktdHJ1bmsKKzYyODg4IGI3MTA5YTBjZDBmOWY1N2E1MWZmNWI0OTI1ZDBjZDRhM2MwNWNlN2IgbGVnYWN5LXRydW5rCis2Mjg4OSBhNzY3MGFmYjVjMDkyZDk5NjEzMzIxNDg5NDE2MGE3ZTkzYTk3MTg2IHB5M2sKKzYyODkyIDZhZGExNWQ3OTkwZjcyNjg5OTc3ZjQzYTQ5YzE0ODc1MjMxZTAwNmUgbGVnYWN5LXRydW5rCis2Mjg5MyBiNWE2NzcyNzhiNWZhODU4NDY3YzBhZWRmMDI3NDM3OTVhYWYwZTc5IGxlZ2FjeS10cnVuaworNjI4OTQgYjhlN2ExNjE2MTFjMTRmMzJkYmJiZDgzNzUzN2NkM2MwZTQ5NmY3YyBsZWdhY3ktdHJ1bmsKKzYyODk1IDFmYjI0NmNiMjlhZTQxMWVlOGZjYTgyZjVkMTgxMGQ1ZTU2NjcwMjYgbGVnYWN5LXRydW5rCis2Mjg5NiBkZmIwYmI1ZmFhNmJjOWY2MzRiMDQxMjM3NWRiZmJiOThhYTM3NjE0IGxlZ2FjeS10cnVuaworNjI4OTcgNmJlNjQ3MTlhNTA5YWNjYmY0MGM1ZmQ3M2JkOTExODgzNWMzYTNhMSBweTNrCis2Mjg5OCAyYTE3M2E4YjNiMTNmOGFlMTQ1YjdhZDQ4ODgxOWQ3MjdiZTU2M2Y1IHB5M2sKKzYyOTAwIGZiMTk4NGZiMTgyZDNiOTYxMTBlMmMxNzFmMDZlYTExYjg0ZTg3MTkgbGVnYWN5LXRydW5rCis2MjkwMSAyMjRjYWQ4MjM1OTA1ZjAxZDE4ZmE1NWZlNjRiMzM4YzY0MGI5YjIyIHB5M2sKKzYyOTAzIDVlNGJkODI0OTg0NjI0ZWIyOTllYmJmZmQyMmZhZGVlODZmMmM4YWIgcHkzaworNjI5MDQgZGM1NzNlZTBkOTA0MTdiNzllMjZlNTgxY2FhMDMyY2E5OTFmM2FkNiBsZWdhY3ktdHJ1bmsKKzYyOTA1IGExMzBjZjQ4YWQ2N2NhZWYxYjExMzM5NGVlOTA4MzZjODEwNTI0MzMgcHkzaworNjI5MDYgNWQxNWE4YmNjNDQ1NjYyNTdhNzNhYzUzYmUxZmU3ZWQ1NTI0ZjI3ZSBweTNrCis2MjkwOSA4YmZlMmIwNjUyN2RhZDAzNGQzODgyYmRkYTI4Y2U1OTI4NWY3MTFkIHB5M2sKKzYyOTEyIGI5MzAwNTcxMmUzOTlmZjBjMmVlZGFmY2EzZWI3MjNjNTJkYjI0MmEgbGVnYWN5LXRydW5rCis2MjkxMyA1YjZlYTRkYmE0NGM5Y2NmZTFlYmNiMDg0YzA1ZjhiMWRmM2QyMDdiIHB5M2sKKzYyOTE0IDRkMDA3YTMxYjQ2NDUzZDczY2I3NWQ0MTNjM2M0MDc0OTJjMzU2ZTggbGVnYWN5LXRydW5rCis2MjkxNSAzNzY3NWYwYzMzOGE2NjA1ZjFlNTk5MzA5MzRjYzYyMWE3MjE0NGY0IGxlZ2FjeS10cnVuaworNjI5MTcgODE2YzIxYzc2MmM4NTNmOTY2MDlkZjc4MmUxYjIzY2I0ODQzMDFjNCBsZWdhY3ktdHJ1bmsKKzYyOTE4IGViYzlmNjZmZTk5MDI5Mjg2MzQ5YTM0OGI0YzY5MWU5Y2Y2NDQwZWMgcHkzaworNjI5MjAgOTQ2ZmJhZTRiYWFiNTY2YjQ5NWVlYzhiZjk4ZTM4MWI2MzU3OTNhZCBsZWdhY3ktdHJ1bmsKKzYyOTIxIDRiZDk4OTdkY2UwN2NmYTExYjhiNDVjY2Y1NmY0NWZlMjg0N2E2NTggcHkzaworNjI5MjMgYTg5YmUyNTA3MmUzZGU3ZjNlODFkNTMzNjNkYjI3YWRmMWQyNDJhYyBsZWdhY3ktdHJ1bmsKKzYyOTI0IDVmYjhhNTA0ZmE5NmYxMTE1Yjc1ZGQ1ODMxZjRiZTEzZjhmMDExOWIgcHkzaworNjI5MjcgMTVjNzIyMDI4NjE1NWMxYjdiNzliYjczNDBmOGQ2NGVkNGJjN2YzYyBsZWdhY3ktdHJ1bmsKKzYyOTI4IDU0ZTYyMmVmMzUwMGUyN2ZiN2Q5YzlmY2RhZDc5NWFiYTEzOGUyY2YgbGVnYWN5LXRydW5rCis2MjkyOSA4NGFmMGNmYTdiODFkOTQzNGU3NGFhYjlmYzIyNzk1OTM5YTgyMGZhIGxlZ2FjeS10cnVuaworNjI5MzAgY2Q2YzZkZWI3Zjg0ZTRlYzQ0MzMxMmNmNzM3OThkZDQ4ZjhlMTQ0MCBsZWdhY3ktdHJ1bmsKKzYyOTMxIGMyNDQzOGU5YWI1NGZiYTM2ZWEyMGVjZDUxYzE1M2UwZDBkZTBmY2EgbGVnYWN5LXRydW5rCis2MjkzMiBjY2MzMzdiNDViMmUzMWEwMGNmNDAxM2U5OGM2NDU4N2EyN2MxZWZlIGxlZ2FjeS10cnVuaworNjI5MzMgZWZiOTc5YTQ5NDdkMDAzOGM5ZGYwY2YzYjBhYTA4NTc4MzNhYmUyNSBsZWdhY3ktdHJ1bmsKKzYyOTM0IGYzZjZhODk1YTU1NWRmMzY5NWNjOWVkZmZkZmNlZmNlZWIwMDBlMjAgbGVnYWN5LXRydW5rCis2MjkzOCAzOTU1YzUwMmNmYTM3MjJmYTA5OTQyMTdmNTIyODQ0MGQ1ZjE2ZWU1IHB5M2sKKzYyOTM5IDE3Y2Q2MTJiMDZkYTFmODRmMmMxMzY1ZTEwMDZkOGJlYzA4OTM0ZTcgcHkzaworNjI5NDAgOGI2NzY4NWE4YmMzZWU2NzkyM2ExYjc4ODFhMDM3YzdmMWU4MWFkNSBweTNrCis2Mjk0MyA4YmFlYmExM2FlOTNkNDNmMGU2MzY5MjZiZTI5MmQ2OTFlOWU1ZWYxIGxlZ2FjeS10cnVuaworNjI5NDQgNTFiYWJlNzNjMGNhMzVmNmEzNDhjZjEyMGIwNDA2ZDVhZWNhOGZhNyBweTNrCis2Mjk0NSBhNDQ0OTg1YTY3NWFlNGVhZTQ2MGQyOTc2YmI2OTk4MmY5N2ViMjBjIHB5M2sKKzYyOTQ2IGI0MzI1MDZlZmNlN2ZkOTZlZThhZjY4MzE0NmQ4ZmFhMWIyMmI2ODggbGVnYWN5LXRydW5rCis2Mjk0NyBlMGNhNzRiMzY0ZTQ5YjU1NjE4YTgyM2QyYmQ5ZWViNDE1NjRkOTExIHB5M2sKKzYyOTQ4IGZkMGI4OTRiYzkwYzUyYTQ0ZjU2ZWYyNjg3MDc2NDdlNTlmNGQxZWQgbGVnYWN5LXRydW5rCis2Mjk0OSBiZDI5NTRjNDkxNjk4YzE0MmJhZjUzNmFkM2QxYWM5OTE0NDM4NWNmIGxlZ2FjeS10cnVuaworNjI5NTIgNDQ5NTRkNjVhNzNhNDVkZDUyNWEzMWI0ZGVjNWFjNDQ5NmMxY2RhNSBweTNrCis2Mjk1MyA4N2Q4NTRiYzFlNDVlNzFmMDk3NGE4NjgyZDEwOWU5YzAwNjJhM2I2IHB5M2sKKzYyOTU0IGRlYzUzMWMwYWNmOWI2MmY5Zjg1MzQ5NjA5MTljNDdlZGI3M2Y5NzUgbGVnYWN5LXRydW5rCis2Mjk1NiAzN2IyN2EyNWE4NDcwNGE4YWIwODJhNWQ0ZjhlOTA3YmQxYzQwNjExIHB5M2sKKzYyOTU3IDgwMjUxOWYwNDc1NDVkNDAxMTI5NzIxZDc0MDNlMzZiZjczZDNkNDEgbGVnYWN5LXRydW5rCis2Mjk1OCBmZTliOTdkYmQyMzJkMmNkYWRmODc5YWI3ZjY2Y2FmYTNhNTIyNDMzIGxlZ2FjeS10cnVuaworNjI5NjAgNGM1ZWUxYjM4MDQ1MDE3ZTg2NTdiMzNmYWQ1ZWExY2Y2NTMzYTU2NCBsZWdhY3ktdHJ1bmsKKzYyOTYxIDkxZmZkOWYzY2NlYzkwMTIwNmRhMjc5ZWIxZmFhNDBiZGQ1NDBmZjQgcHkzaworNjI5NjIgYzU2ZTgzZDA4ZDBiMDU4MzUzNGFiOTQwZWEwMDJhYjdlOWE5NWIxOSBsZWdhY3ktdHJ1bmsKKzYyOTYzIDA3YTM1YzlhNWQzZmI4Y2ZkY2Y0OGVmMWI2YTMxNzlkMGI5YzM4NTEgbGVnYWN5LXRydW5rCis2Mjk2NCA0OTk4NzVjYjZiYTJjNDBkMjYwNDJmYmQwNGM2ZDk1YjMxM2U1OTdjIHB5M2sKKzYyOTY3IDQzOTI2OTQ4NTU2OTkwOTcxNDcwNzZmYjdmN2E3Zjk4YzdmODdmMzQgbGVnYWN5LXRydW5rCis2Mjk2OCA1Njc5Y2U2NmU3NGI4ODM4ZDVkYjc3ZjdjOTJhYmFlYzhkNjRhMDE3IGxlZ2FjeS10cnVuaworNjI5NzAgOGRlNTFkYWE1MDZmZDg1NDk2ZmZhOTIwZmNiMWRjNTAxMDY0Mjc1ZCBweTNrCis2Mjk3MSBhYTkyNTBlNmM0MDkzNGUwNTgwNWMxOGYyZmM2MDJkMzI5ZWRmMjNjIGxlZ2FjeS10cnVuaworNjI5NzIgNzZlYzY3NWUyMGI4Y2JmZDE1MzZmOWE5ZGEzZTYzZGU2MDNlNTdhNiBweTNrCis2Mjk3NCAyM2VjMzNmNjY3MzYwZTRhMTUwOWUwMWEwODBhOTEwYzQyODAwZWU0IGxlZ2FjeS10cnVuaworNjI5NzUgODg0Zjg0MjZjY2NmNzg5MTBjYjkzYmRjMDU4OTBhMGRmY2MwMzJjMCBsZWdhY3ktdHJ1bmsKKzYyOTc2IGQwZjRjMjQ2NjhmMjM3ZGE2NjNjMmY0NThhMjU4NWRkMjAyNGMwMmQgbGVnYWN5LXRydW5rCis2Mjk3NyBiZThjNDNhM2ZkNjJmZjYyOTc0NzdhNmEyNjVmY2Q0ZjQ1ZGM2MmJmIGxlZ2FjeS10cnVuaworNjI5NzggMzg5MzhiNzE0MDE4MjQwNjgyNDg3YmMwZjQwNmVjZWRkNzI3ZWZhNiBweTNrCis2Mjk3OSBlM2Q0ZGU5MzUwZmI0ZGRhZGY4OWI2ZmY1ZGRiYmQ3N2QwZjliYWExIHB5M2sKKzYyOTgyIDJlY2ZjNzAxM2ViNWMzMzZjZDEwYjIzOWNlYmJhN2JiZmY1ODQ1OTUgbGVnYWN5LXRydW5rCis2Mjk4MyBhMWY0NThiMDE0OWYwOTAyM2E3YTcwZjZlNDQ2NGEyMmI3Y2Y4YjEzIGxlZ2FjeS10cnVuaworNjI5ODQgYWQ3ZDMxOWFkZjc2N2FjNmE1Nzc1MGE1MzE2YjMwZGY3Y2E5MTVhNSBweTNrCis2Mjk4NSA0MWE5NzY0OWRlNjE3NTdhNWE3MDY5ODEwY2QyODQ0NDQ3NWE0NGIyIGxlZ2FjeS10cnVuaworNjI5ODYgMTMyZjgyZDI0MDI4ZWQ3Zjc4NjVlNzcwNzY5YTVhYzQxNTVlNDA0MSBsZWdhY3ktdHJ1bmsKKzYyOTg3IDQ1MTY3NGY4NmQ3NTQ0ZWEyMzUwZjA2NDY1NmM3M2M5OGQ4M2M5YjYgcHkzaworNjI5ODggNzY1NGViNWQwYTY3MDFkMjNiNDIyMTkyYWE1NzkwMDkyNTA1MmNkNiBweTNrCis2Mjk5MiBiYzhiMjI2NjExZGQ0M2ZiYmI4YzMzMjgyMmEyZmM0ZmVhNThkZTQ1IGxlZ2FjeS10cnVuaworNjI5OTMgYjM4ZWQ3YzFjYWIxYzE5ZTcyZGMzNjA3ZGE3OWEyYWFhMjJlMTBjMCBsZWdhY3ktdHJ1bmsKKzYyOTk0IDJkMWVmOTQ4N2MzMTUzODMyZTk3MDg3NGIxOWQ4ODZlODYwODE4OWMgbGVnYWN5LXRydW5rCis2Mjk5NSBiZTNjOWY4ODY2ZTdiNzJjOTNhOWE0MzAxM2IzNGM3ZjBkZmI3ZjE1IGxlZ2FjeS10cnVuaworNjI5OTYgYWFjN2EyMmJlZjg0NWUyYTVkMzM0OGNkMjUwM2E5NjUyMWQ1ZmUxYSBsZWdhY3ktdHJ1bmsKKzYyOTk4IDI3MGY1NGU4MmQyMDgxYjAwYWJjZGIxNTIwZDViYmUzNWI5ZmNiMGYgbGVnYWN5LXRydW5rCis2MzAwMCA3NjNkNzJkMDAwMjU3YTI4NTc0YWNkNmRlYjk0M2I3Nzk4MzcyYWY2IGxlZ2FjeS10cnVuaworNjMwMDEgMzQxOGYyZWJjZTg3MjMyZjMwYzY2ZWIwOWI4MmIwMGUzZGQ4ZjM1OSBweTNrCis2MzAwMiA2YjRiZmYyOGM3YmEyYjViZWE4NDUwYzQ4ZjUzNzY0NjZhYWZhZWI1IGxlZ2FjeS10cnVuaworNjMwMDMgODdkZTc1OGRiZDY0NjU1YjZiNzk2MjY5MGRjZmYyYzM5MmJhYzVhNiBweTNrCis2MzAwNCAzM2Q0ZTAzYjIzYmFkZTgxNTA1OWM1ODNlYjMyZDM5OTM3N2ZiY2YyIGxlZ2FjeS10cnVuaworNjMwMDUgMTFhMGIyMjFmMzcyNjQzMDc0N2Q4MzExMjc0Njk2NGQyZjAwZTYxNSBweTNrCis2MzAwNyBiNmIyY2VhNWQzMDZmN2I5NzE0YWU5MzAyODdhMjQyNGJjYWNmZmFhIGxlZ2FjeS10cnVuaworNjMwMDggNDI4YjY2YzA0ZDNhOTExYjIzOTQ4OGYzMzUzZGY4YWExZTcwZDQzZSBsZWdhY3ktdHJ1bmsKKzYzMDA5IDYwYjE4YjM5YTNhMmU4MzlmNmQ1ZjJlZjMyZTdhNjFiYTY0Y2MwMmUgcHkzaworNjMwMTEgMmQwNGU1NjAxMmVkYzZmZGQ4NzZkOGEwMWJjZTAyNDBlOGQwN2FlNSBweTNrCis2MzAxMiA2ZWRhYWE3N2FmMjc2ODZlMjgzNzNiNmMxZDI0ZTU3OGZlOTNlYmExIHB5M2sKKzYzMDEzIDBjMDJlMTVhN2MxZmNkMjA1NGFhMDRkZDdkYTU3ZmUzZGUxNmI0MzMgbGVnYWN5LXRydW5rCis2MzAxNCAyY2E3YTI3OTgxNjFjNDBjNmE4MDExNDExZjhjM2Y3YTY3NmMzMmE0IGxlZ2FjeS10cnVuaworNjMwMTUgYmUxZWQ2MmQ4YjgwYzdkMDcwOGQ4ZjdjYTQ5YjBjY2JhYWVjOWJkYyBweTNrCis2MzAxNyBjN2Q1MzBlOGI3ZjUzYmNkM2VjMTNjYmIwNDU1NDRiMmJjMjQ2ZThhIHB5M2sKKzYzMDE4IGYyYTYzZWM1MDU1ZTZjMjQ3ZTgwMGU0MWNhNWYxYmM3YmY3OWNhNmEgbGVnYWN5LXRydW5rCis2MzAxOSA5MWZhYWU0OWNiZWJhYTVjODI5OWQzNzNjMDBkM2E3NGZmYzkyMzg0IHB5M2sKKzYzMDIxIDFlNDI3YmMwZjgxODk0ZmM1MWJkMDA4MGRiYWYzYTE4NjRiNzExZWQgbGVnYWN5LXRydW5rCis2MzAyMiBjMGM1N2JlOThlZWQ2YzQ0YTM0MTNiMGM3YzEwY2ZkZDNlODM5ZDM2IHB5M2sKKzYzMDI1IGMxNWNmMDE0MTVmOTI1NjVlYTRhYjY5NjZlZTNjMWY2MmMwYTBhMDEgbGVnYWN5LXRydW5rCis2MzAyNiBkOGUwMDBlYzc3OTZiZmM2MWU2MTUxOTdkM2YwZjk3MzlmMjhmNjY4IHB5M2sKKzYzMDI3IDg5MmY5YjI5NTljOWQxNjU2MWM1ZTgwMDE0ZDQwMzdlZGNjNjZhODkgbGVnYWN5LXRydW5rCis2MzAyOCAzODQ5NjhkNGQ2NTU4NmUwZWMyN2FjZmJhYmM0ZDIyODMxOWY1MmJlIGxlZ2FjeS10cnVuaworNjMwMjkgYWFhZTQ4OWI5ZDgxYzFiNDg0MmM0MTQzZWE1MjZhNzY5OWUxZjMxOCBweTNrCis2MzAzMCAyY2FjMzFmYzE3YzIxZmFhZWYzOWZhNGIxMTNlMjAzZTE0YmJiZDgwIGxlZ2FjeS10cnVuaworNjMwMzEgZDIzNDUxMTlhMmRhYmRiMTlmMDU2YmQxYTdiODcxNDkxMDM0M2UxMiBweTNrCis2MzAzNyBmYjE0ZmYwNTdjMDk2NzY2ZmRkNjZkZGU1NTg2OWRkNzFjNDI5YWE2IGxlZ2FjeS10cnVuaworNjMwMzggMTZmMTZmY2U1MzAyNWY2MmMxODZiZjgwZjk3YjllMDIzYjlkNWU1NSBsZWdhY3ktdHJ1bmsKKzYzMDM5IGY2Mzg4ZGMwMTljYzgyZjZjYmM4NTFjNGY1ODgwNWM1YzQ4ZjMzNjEgbGVnYWN5LXRydW5rCis2MzA0MCAyMjRlMDdiNjU4NjFjMjU2YmVjMGYwODNmMzFjZDBhYmU5YWE3ZTBhIGxlZ2FjeS10cnVuaworNjMwNDEgOWMxOGJhYTc2MGFkMGQwZGQ5MThlY2E3NGJlNGY4M2JlZjkyZWYyMyBsZWdhY3ktdHJ1bmsKKzYzMDQyIGI0MDgyN2ViNGI4MGI3NmVjM2EwODFkNTI5NWY0NGNlNWMwMDFkNWMgbGVnYWN5LXRydW5rCis2MzA0MyBmZGVmNzE3OTdlODMyMzFiY2MyMzk0OWNhYmVkNzUyNzQ4MDNjZDU1IGxlZ2FjeS10cnVuaworNjMwNDQgZGQ1NTEzYjQ3MmRjOTdmOTA5YTZkYTMyNWFkOThmYmI1NWQxZmUwYiBweTNrCis2MzA0NSA1MjU2NmI0NDVmYzc1NTcwMzAxNWM5YWM4NTZkMjY0Mjc2MzMyZTU3IHB5M2sKKzYzMDQ2IGU1YWViM2RmMTc0ZTQ5N2VmNWNmMzU0ODNlMmY5YWMzMTFjNDM5NTMgbGVnYWN5LXRydW5rCis2MzA0OSBkODg1MDc1ODg3OTA0ODllNWI3OWRmYmJiYTBiMGQ0ZTg4MjVjYWEzIGxlZ2FjeS10cnVuaworNjMwNTAgODc3NzgzMzMzZWFlZGZlNTFhMzAxZjNmZjZiZmZhNTQ4ZTBjNzY0YiBsZWdhY3ktdHJ1bmsKKzYzMDUxIDZiZDY2NjA3NWUxNGM4ZDdlNjhiOTk0N2QwZTMzYjBiZGE4YTlmM2YgbGVnYWN5LXRydW5rCis2MzA1MiA1ZGJiYzQ0OWYwMmJlMjI1ZjkwNjhmMGQwOTUxMjU4NTljNjM5MDhhIGxlZ2FjeS10cnVuaworNjMwNTMgYzdkMWExNzBjOTRjMzVjZDAxNjVkZTY1ZmM4MDRhZGZlMjVmZDAxMiBsZWdhY3ktdHJ1bmsKKzYzMDU0IGMyMTM2YzE0ZGNkNzk0MDlkOGUxMDJmZDhjMzliNTdkNmFhZGFkN2QgcHkzaworNjMwNTUgZjRlNjFkY2RiNmY4NWE0ZDczNTk3OWFjYjE4YzNkMzVmYzViNWI5MiBsZWdhY3ktdHJ1bmsKKzYzMDU2IGIyOWI0NmE0MzlkOWYwYzhlNTViZTQwM2I5MjEwNmI4MGY2NjRkMTcgcHkzaworNjMwNTcgOWM3NjVmNGVkNTEyMzQ1MDJmNDYxYTJiMWU1YWRmMWYzZGMxYmUyMCBsZWdhY3ktdHJ1bmsKKzYzMDU4IGFmYWVlZGFkYmRiMzZiMzhjMWNhNjVhNzViMzc5YjRmYmEwN2ViZTMgbGVnYWN5LXRydW5rCis2MzA1OSA0ZmI2YzBjMTY5ZmYwYjVjYzI0MjM5OGU3NjYyYTAyNTdiYWI0MDRjIGxlZ2FjeS10cnVuaworNjMwNjAgMGRmNjE2MTkzYjk4ODA2YjQ1OWRkOWM2ZDk3Yzg5YTExYjgxYTBjNiBsZWdhY3ktdHJ1bmsKKzYzMDYxIGE3M2U4N2YxNWZmYTc0OWVlMjg3YTc5MDMyZjQyNTY1ODA0MzY3MGEgbGVnYWN5LXRydW5rCis2MzA2MiAwODFmMmE2NjI2MzQ2NWI1OTU3ZGEyMjcxMmFkYjE0MjlhNTBiNjM0IGxlZ2FjeS10cnVuaworNjMwNjMgN2Y3N2RiOTUwY2I0NGVmZDc2YTdkYWVkZDQ1Y2ZlNmM3NjAwZDcyNiBweTNrCis2MzA2NCA4MThjYWViZTM3MzMxMWUxOTQ4MWM4MTg4NzVhYzU1NGU4NDU4N2UyIHB5M2sKKzYzMDY1IDA3NTcyYTgyNTQwZmRkZTcxNzBkMzNmNzljMTZkM2U1NTk4YWE0MGMgcHkzaworNjMwNjYgYmU4N2I3NzI2ODY2MGI1ZDg1OGM1ZTYxMWYwYWJjYzYwODUxZTAwNyBsZWdhY3ktdHJ1bmsKKzYzMDY3IGRlZGNlN2NiN2E1ZGZmN2NhMjIwZWI1MGQ2NjFmNTRkNDI2MzBkZTcgbGVnYWN5LXRydW5rCis2MzA2OCAxZmRmYjI5ZjRmYjgzNjA5Y2Y2ZGM5MmIwNDBkY2Y2ZThjNGZlYTlmIGxlZ2FjeS10cnVuaworNjMwNjkgNWNjZDE2NWYzMGE0NTEyMzI5YmFlMTYyZjQ4M2MxOGE2ZDFjY2MzYSBsZWdhY3ktdHJ1bmsKKzYzMDcwIGIxN2IyOWU2MGU5YmJkOGRiZTUwODI4YWM4MjhhODI1NTMzM2MwYjUgbGVnYWN5LXRydW5rCis2MzA3MSA0OWZmMWZjMDBjNmM1MzRlMWY0MWFmY2VhMjJiNjQ2NjI2MjM4ZDFkIHJlbGVhc2UyNS1tYWludAorNjMwNzIgNjdlNDM2M2VhMmUwNjc0ZTdmZDQ2MjNlOTg4NWM4MzBhNzcyNDk1YyBweTNrCis2MzA3MyBhYjE5MGY3MWI5MTc2OTU2MDUxYTE4ZmVjODQ5ZTBiOWU2ZDdkZGNmIGxlZ2FjeS10cnVuaworNjMwNzQgZTM0MDFmMzE2YTNiOTRiODZkZTQ1ZDMxNmZkYWU2NDg2YmY5ODRlNSBweTNrCis2MzA3NiAyMWFlMmI2NWJiYmIzNjk3ZTE2ODVhNDUwOTUzNDNmZGUzYjU3NDQ3IGxlZ2FjeS10cnVuaworNjMwNzcgNzY2ODFhNjMwNmE4MDcwZTAxNjUyM2NjZDEzNzNhZWQwODg5MDgyYSBsZWdhY3ktdHJ1bmsKKzYzMDc4IDIwNjcwMGQ3NDlmMGYzMjM5ZDAzZTJhYzM4NjYxN2Y0N2M3ZDQyZjMgbGVnYWN5LXRydW5rCis2MzA3OSBiZDJjOTVjMTY1ZWE0YzBkM2RlZWRlMzIyNTBhOTNiYzAyZjVjN2VkIHB5M2sKKzYzMDgwIGE5NDk1YTNmZTJlMGI3ODNkYWQ1MWFlMGEwZmYwZGU4N2Q0MjU3ODUgbGVnYWN5LXRydW5rCis2MzA4MiBlMDNkOGQzZTY3NTQ0Zjc3ZDczOTBlY2FjZDhjMDI2MzgyOTQ3YzA2IHB5M2sKKzYzMDgzIGI3MWZjZmQ5ODY2YmFlZWIwZGVkZjhjMjg5YzQ4ZTkzNDMwMWMwYWIgbGVnYWN5LXRydW5rCis2MzA4NCBhYmUzZjMwNWY2Yzk2MDFkYjI5ODA4NTE4ODljZmM4MzJhN2NjZTgxIHB5M2sKKzYzMDg2IDdlNDY5ZTNjZWJkYTZlMDk4MzcxMjkyMGRmY2M1OTcxZGQ3ZTg3ODAgbGVnYWN5LXRydW5rCis2MzA4NyBiNzEwZDcxOWEwODJhZDU5NTVhNjU4ODBhY2ZiNmZhZWUwZTVkYzQxIHB5M2sKKzYzMDg4IDgxMTMxMDQ2ZDFiMDkyOTBmY2JjMGM0OTU1ZjJiMjliY2U0MzliMmMgcHkzaworNjMwOTEgNmMxNWRiNmNlNWRhZjY0YmMzY2NiZmUzNzFlODEzMmUxOGI0ZTkxZiBweTNrCis2MzA5MiBlZDJjMTg4OGUxNDMwMTQxZjliZTMwZTRkZjM4MGJiODc4NmM4Yjg5IGxlZ2FjeS10cnVuaworNjMwOTMgZWY0ZWM5NjhmZGI2NjgwZWYzMzhmMDM2YzYyMjEzYjMwN2ZkOWZiYyBweTNrCis2MzA5NCA3NDFiMjY2N2FjMGI3MTRmNmFmZGMxMTIyYjM3OTkwY2Q4MDNkNzA2IGxlZ2FjeS10cnVuaworNjMwOTUgZjNkMGVjMGI3MzdlYjljMmJmYWU3OTgyMjUzNjRlYjdhYzkxMGFhOCBsZWdhY3ktdHJ1bmsKKzYzMDk2IGNjYzY2M2FhNGE3NjQ0YzdlMWI1ZTFhMWM1NDNhMTU5MWFhMjg1MDcgcHkzaworNjMwOTcgNmExOWI5YmVhMThlN2JkMmUxOGYwYmVhZjA0ZjVmMjhmODk0ZGU0NiBsZWdhY3ktdHJ1bmsKKzYzMDk4IDhlYThmYjE0ZGY3MTUzZGM3MTFjMDYyN2Q5ZTBlZWFlN2U3MTE2ZmIgbGVnYWN5LXRydW5rCis2MzA5OSBlOTQ1NzQ0NTVkOWRkMDc3M2E4ZWQ5ZDhkNTNiYmMyZmVmMzY3MmRlIHB5M2sKKzYzMTAwIGM4Yjc3MDA3YTFjMTQ0MzNlY2ZmZWQzODZiOWY5ZDFmMGMxNzA3NmIgbGVnYWN5LXRydW5rCis2MzEwMiAyMmNkYjZlYzNlNTY5MmEyNWQyNWFmYzhiNjMxMzAxYTMwMGY4NDMzIHB5M2sKKzYzMTA0IGE0Mjc3YzFjOThhODU0MTJmODkxZTA2MzNkMzAxZThlZTRhODNhZTIgbGVnYWN5LXRydW5rCis2MzEwNSBkN2MyMDdiODBjNDBhYTI2ZjZhMDFhNGMxNTg5OTBjODFlOTRmMDMzIGxlZ2FjeS10cnVuaworNjMxMDYgOTA2ODYwNDVmYmE4ZDEyZjViYjBjZDc0ZjBiMmFjZmFkYzZlNzNlMyBweTNrCis2MzEwOCBhOWZmNzI4OTA4MmIyMGZjOTJhMDcxZDFkMDdlMGFiNmNhYTNjMWExIGxlZ2FjeS10cnVuaworNjMxMDkgMGQ0OTU3NTQwYzk2ZTlmOTdkMThlYjMzZmY0MTRiMzhiNDNhYWJiMiBweTNrCis2MzExNCBjMmFiN2EwNmVkMjRiZWFkNGVjNjM2ZWM1YTI0OTVkNDMyY2E1ODA0IGxlZ2FjeS10cnVuaworNjMxMTUgNTI2ZDhjZjdhOTIwNmUzZjY0NDIyZjMxYWIzZTc3M2Y3ZjQ0ZjljMSBweTNrCis2MzExOSA0YzgzNzU1NzRhYTllNzQ2MTBhODk2Mjk4NDVkODFlYzM2YzEyOTVkIGxlZ2FjeS10cnVuaworNjMxMjIgNjIyYTI1OTY3MjI4ZDlhMDgxYjc4M2M4MmFjZjcxNTQ3MjhmYzkyYiBsZWdhY3ktdHJ1bmsKKzYzMTI0IGYwYTI4NWZjMjAxZDAwNWU1MDNiNDZkODAwMTkyMzZjMzgyNmFjMjIgcHkzaworNjMxMjkgYmRlMzhhN2IyMzE4Mzk5MmU4MTI4OWMzZGNiZTY0Y2YwYWRiMjRhOCBsZWdhY3ktdHJ1bmsKKzYzMTMyIGEzNzViMTM0NmViMzdlMzI0NmVlZjU5NmM4ZDM4MjBmNjFhMDZiYTggbGVnYWN5LXRydW5rCis2MzEzNCBkYWZkZTJlZWUzZDBkOGExM2U5NjkyYTE1NDQxMGJiYzhiN2M5NWI1IGxlZ2FjeS10cnVuaworNjMxMzYgYzllNWZhYTQ4MmU4YmFmMWRlOWJlMjVlMGVjNjI5ZTdmYTZiZmM0MSBweTNrCis2MzEzNyBiMzA1YTk2YTRiZTJlNDRhYTExNmVkZTBkNDFmMzE1ZWJkZWU4ZGU3IHB5M2sKKzYzMTQwIGFjYTVjMWQxYzU2OTRhM2VjMDU2ZjEwMjNiMWE1OTk4YTcyMTcyY2IgcHkzaworNjMxNDQgYTlhYTM0MmEzNjdhOTIyZDIzOWZjZWJiNTQ5NDliZGI0YzFjMjgwZCBweTNrCis2MzE0NSAyZjE0NTE4ZjMwMGI4ZmMzM2E5ZWM2NjE4ZjY2NDNmNGViYWZiMzJlIGxlZ2FjeS10cnVuaworNjMxNDkgNzk5MzIxZTdlN2JiNDMyOTE3NmJhMzcxZDcxYWIxYjVlNTIxYzlkMiBsZWdhY3ktdHJ1bmsKKzYzMTUwIGMxYTY4ZjU0MGQ1YmMzYjNjNTg3M2U3ZDIwYTgzNmU1MDM3NjRmYTYgbGVnYWN5LXRydW5rCis2MzE1MiA4MzdkZTI0YWMxZjdhNWZiZjU3N2RhODRiNzkyZTRiYWY5ZmVjYWJhIHB5M2sKKzYzMTUzIDRhYzljYzFkNzc5ODRiYzljM2VjZTMzMTBjMDA1MWQ5ZTFkOTdjNTEgbGVnYWN5LXRydW5rCis2MzE1NCA2NGQxOWYyODUxZTFiZGYyMTMzMjIwZDUxNjQ0M2I1MTkwNzdiODNmIGxlZ2FjeS10cnVuaworNjMxNTYgMTI4MGI4ZWM5ZGEzODUxZjZiYWM5ZDBjMjhhMTJiMjkzY2U1NmUyNCBweTNrCis2MzE1OCA1YTdjY2Q2NWU1OWIzZDJlYWY3OWM1M2Q4YzU3ZjljMTEyZjAyNzhkIGxlZ2FjeS10cnVuaworNjMxNTkgMDg5YzhkMGRmNzc0NDRkMTU5NjRlODI4YTQyMTQ4NTI1ZGRlMTU4MCBsZWdhY3ktdHJ1bmsKKzYzMTYxIGJhMjNmYzE1NzYxOGIzOTk3MDMwYTE3NmIzY2U3NGZjY2I4OTM1NDUgcHkzaworNjMxNjIgMzlmNmY3ZjE3MmNhOGU1NDdjMjg4N2ZiYzQ0YjA2YWY2ZmE0Y2Y4ZSBsZWdhY3ktdHJ1bmsKKzYzMTYzIGZkMjNlNmQxNzdlOWRhNmQ3YjUzNGE1NTg1Yzg2MzNiZGQ4YTEyYzcgcHkzaworNjMxNjQgMDdhNTNiYjgyYmFhMDViZGIxN2M4MzY0YmZkYzU3YjBkNmRhOGU0MiBsZWdhY3ktdHJ1bmsKKzYzMTY1IGRmMTFhZmYwOTJjZDg0ZTk1YWE4YWFmODVmNTQ1YWMyNmZjZmM5ZWMgcHkzaworNjMxNjYgNmE3NzhjMGE1MTdlNjBlYmQ4Mzc2NjQ0Y2NlOTQ3NmNkOTlmNDNkZCBsZWdhY3ktdHJ1bmsKKzYzMTY4IGIzZWFjM2E3ZmRjM2M3NTE4NDk1OGYxNWY1NmQ2MGE1OTllNWY2NWQgcHkzaworNjMxNjkgZTk5NzM5MDM2NjA2OWE0OTc0Zjk1OWRhZTU3MjJmOGQ2NDAxNWE0YSBweTNrCis2MzE3MCBkMjgxMGI4YWVkNmQxZmMwNzkxNjczMDdkZGJhZTNhNmM1NGNjZjI2IGxlZ2FjeS10cnVuaworNjMxNzEgZmY5YjIwNTc3MjJjYjUwNmE5NDhmYTA5YWIwYjZlZDRkZTMyMGIzYiBweTNrCis2MzE3MyA5MDkxNjM3ZTMyYjFlM2I3ZDI4MTFhNmQ1NzQxZjhlMzhhM2M3YWM3IGxlZ2FjeS10cnVuaworNjMxNzQgOTlmNTBhZjY5MmQwMjhjMTA0MTdhMDk0YWQ1NjhlODMyOTM0NjRkOSBsZWdhY3ktdHJ1bmsKKzYzMTc1IDkyZDAwZjVmM2MwZDA0MDE5NWU3YTliMzg3OTQzOWRlMzcwMTdkMDYgbGVnYWN5LXRydW5rCis2MzE3NiA5ZDQ2YzI4OWQxNjYwNTFhZGM2NDZkYzI3OWQyZmEwOTUyYThhZTVlIHB5M2sKKzYzMTc3IGU2NDAzOWJiZmUyNjg2N2U5NWQ0Y2RlYmU3ZWExMWVlMmJmMzZlYTEgbGVnYWN5LXRydW5rCis2MzE3OCAxZTU3M2MyY2Q5YmU2MWExODAzNTk0ODIxZjFlMGQ2OTIyOThhMDg4IGxlZ2FjeS10cnVuaworNjMxNzkgMmViZTI3MjdmYzkyYWU0MDdjNjc0ODM1ZjAxYzg4OTE2MDk1MTY1ZCBsZWdhY3ktdHJ1bmsKKzYzMTgwIDhhNDlmOGVmN2Y4OTQyMzNhOGExMGVkZWE3Y2I4YmU3MGE5MjNiNGEgbGVnYWN5LXRydW5rCis2MzE4MSA4OTQxNDRiMTczYzlmNjJlMTUwZDBkOTkyNTlmM2JmNjY5YjU4YTU2IHB5M2sKKzYzMTgyIDAzYjEyMzNiZjVmZTAwYzg2ZmRlOTFlNTlkMTFhNWI4NjBkNjMwYzggcHkzaworNjMxODMgODI2YWZmOTVjZjBiZDFiMmI0OGM4NDI4NTQ4ZmYwOTNlMTE3ZjkzYiBweTNrCis2MzE4NCA2NWI3NWY3ODM4ZjNiNzMwZWM1N2NhM2I4Mjk4MWQ5MjU2NjI5MGU5IHB5M2sKKzYzMTg2IDUxYWZkNTY2ZGIyYmQ0MjYzYTQ4ODdiMWE5ZDdiMTBjOGYxNjQ3NWUgbGVnYWN5LXRydW5rCis2MzE4NyA2ZGYwMzk0YWJiZjFiZGEyYjBkN2U1NWZkNDc2NWU2YmZhYTJhY2JhIGxlZ2FjeS10cnVuaworNjMxODggMjg0NTFiNWU4MTZmZGJhMDJiZWJiNmI2Yjg1MzcyMjVlZDVhZDgxZiBweTNrCis2MzE4OSA2MjY1OGIwYWNhMDgyMmU0Yzk2ODU3YzFlM2NhMjk5OWRjMGJlYjRmIGxlZ2FjeS10cnVuaworNjMxOTAgZWVhZDA4YjhlMWZkMDYzZTFkM2ViNDg1NTMyNmVmOGU3ZDhlZTUxMSBweTNrCis2MzE5MSBhNTk2NGVlNjYxOTNhNGIwMmFkZDA5MmE4OTY4OTUwOTU1YTI4OGQyIGxlZ2FjeS10cnVuaworNjMxOTIgZGE2ZWYxMTBjMzczNTI0MmQ3MTQyNmNhYzFiNGViNDIyZGVlNDYwNCBweTNrCis2MzE5NCBlOGY3NDg0NzI3MzBjN2JkYTA5Nzk1MWY4ZDYyYzY5MmM4Zjk2YjU3IHB5M2sKKzYzMTk1IDkxMWE3YmNkYzE3ZTU5MTBjZDNmZTg4ODA0MjkxY2Y4OWVmZjZjODkgbGVnYWN5LXRydW5rCis2MzE5NyA3NTU2OGNkZGE5NDQ3MDlmYjE2NzQ2OWZmNzU1MjA3YTRiM2IzOWZjIHB5M2sKKzYzMTk4IDM4NGM1NGZhZGFhMmZiZDNkNDY2NmQyY2VmOWY5Yjc3NTM0NmI5YWQgcHkzaworNjMxOTkgYTk1OTRhNWNkZjdmYjg2MmI0NDliZjc4NjhjMmM1ZmRjNzQyNmQ2YSBweTNrCis2MzIwMCA1NWQ4YzM1MzIyYTcwZGIzYWU5OWE4MWRiZWYyNTU4ODNkNjAzN2IzIHB5M2sKKzYzMjAzIGMyNmMwMmE0MjAwODI0YmZmMjVlYjFkMjg4MzcwMTY5NzJjZDUwMDkgcHkzaworNjMyMDUgZWNkZWVmYThiYjZhODQxNjA5NWFjODdkYWYyZTQ3NzFiYTE3M2QxNiBweTNrCis2MzIwNyA2OWRhN2E0ZjJmOGUyZDMwOWI0ZTdjY2Q2MTZmZTRmMTgzZjBlZjE0IGxlZ2FjeS10cnVuaworNjMyMDggNDc2OTJmNmM4MTVlZGRiYTQ4NGUyMmExZDdhN2RkMzI0MTZlNmJmMSBsZWdhY3ktdHJ1bmsKKzYzMjA5IDdjOGFjYWEyN2VhZTFkNDU1ZGNhZWVhMWI4ZmQ0OTU1NjAyYmNjODQgbGVnYWN5LXRydW5rCis2MzIxMCBlNGUzYjNlYmEyMjZmZDg5YjY3MzAyMTE5ZmM0MTc3YmEyYzRkMWIzIGxlZ2FjeS10cnVuaworNjMyMTEgZDJjMWVkNDA4YTFkNzZhNjU3MDE1ZjUyM2I1MmZlODc1MWEzNGMwZSBsZWdhY3ktdHJ1bmsKKzYzMjEyIDc2NDc3Yjk3ODg1MDliNDlhNDkyNmE4OTg0MDQ5MDhjMWIxMjlhZDIgbGVnYWN5LXRydW5rCis2MzIxMyBmMjJlZDgwMjg5ZDMwMTQ3OTY3OWYyODVlMWFhNjY4OWYyOWJhZmI1IGxlZ2FjeS10cnVuaworNjMyMTQgNDkwMzhlZTBlNWI1YjUzMDAzN2JjNGE5ZWE0ZmRlM2MyNmM4NWExZSBsZWdhY3ktdHJ1bmsKKzYzMjE1IDgxMjJhMzI0YjdhNTUxOWRkYWE0Yjg0OTVkNGU1NzM5ZGViMjEwZGQgcHkzaworNjMyMTggNjAzYTkzNWVhYWRhOTg1YWI1MmIxZjQwMGU4MmIxYWRlZjZjNzY3ZCBsZWdhY3ktdHJ1bmsKKzYzMjE5IGExNzU4NWE0NWVlN2VhMGYwYzg0OTM5ZTY3ODkxNzJlOGEyODU0ODMgbGVnYWN5LXRydW5rCis2MzIyMCA3YjZlMjIyZWFkYTcwYWI2MmViODAyODEwZGNmMTdlMDA1NDU2ZTliIGxlZ2FjeS10cnVuaworNjMyMjEgNWRkNmM1MWFlZWRlYTQ4OGMzZDI4NzBiMGRhOGU5MDM2YTE1YWQ1OCBsZWdhY3ktdHJ1bmsKKzYzMjIyIDhiMjIzZDM1MWIwOTU5MmIwM2NlNzk0MDM1YWIyNGJhYTIzZGE5ODAgbGVnYWN5LXRydW5rCis2MzIyNSA1NjFlNWY1MDI2ZWIwYTQ0YjM4YjUwZjM4NGVkN2JhMmE2NGM5YTc4IGxlZ2FjeS10cnVuaworNjMyMjYgODc2MDkxMmE5ZTlmZTA1OTA0NTQ3ZjA4MjIzNDM4MjUyYWZhZjMyNyBweTNrCis2MzIyOCAwM2Q2ODc1YmRlMGViYjE5MTdiMTgwNDQ1MDZlYzgzODA1NTE1ZjgyIGxlZ2FjeS10cnVuaworNjMyMzAgZTUzNmM2NTAxNDAyYzExN2QwZWE0ZmY4MzkwZmVkNDhjOWYxYjYyNSBweTNrCis2MzIzMSA4ZmI5YmQ1OTYyZTQ2ZmEyZmM1ZGZlMDI1ZGVmY2QzOTNiMDcwMDdlIHB5M2sKKzYzMjMzIGYyYzRhYjc0Y2M2NWJjZmZkMzc3YmZmOGMxNjA2ZTYyYmYwNzJkNDggbGVnYWN5LXRydW5rCis2MzIzNSA5MDViNjI3MWVmMTE4YWMzZDIwNDAwYjhmN2FkOGY1YTUwODBkYzQ0IHB5M2sKKzYzMjM2IDcxYWE5MDNlYjdhYzIyNDZlOWJlNmMzNmUwZjUyMDkzZTBjZTNiYjMgbGVnYWN5LXRydW5rCis2MzIzOCA4M2U5NTBmMjlkNDQzMzY2ZTI1ZWJjZDA3NmJkZmRmZjI1YmE2YzdkIHB5M2sKKzYzMjQwIGEzYjRmMWU2NWNiZWFlNTY0ZmZkNGM5ZTEyYzExZjMxNDAwZjBiY2UgbGVnYWN5LXRydW5rCis2MzI0MSA0MmZjOTIyMTIwZDk2ZThjMWU4MTc5MGJmYTdiMTBjYWJlZjRmOWQ5IHB5M2sKKzYzMjQyIDk5M2QwYmMwN2UwMDJhOWI5NTlkYmU5ZjI1ZjIwNWJmYWY0ZTM2MWIgbGVnYWN5LXRydW5rCis2MzI0MyBjNTQ2YzQwZmNlY2UwYTY3N2MyZjAxN2QzZGE0YmEwNDc1NGQ4ZmQ0IHB5M2sKKzYzMjQ0IDk1ODI4NmIxNWRlMDUwZDljY2EyYTQ0ODY3ODA0ZjM0YjAyN2UyZjEgdGxlZS1hc3Qtb3B0aW1pemUKKzYzMjQ2IGYyOGI3MDY0MTU5NWYyZDE2ZmRmOGYwNmUwNTUwZjczMjJjN2ZhNzIgdGxlZS1hc3Qtb3B0aW1pemUKKzYzMjQ3IDE3OTU2ZGJhZDBlNDFlMWE0ZWRmNjI1OTFhZDQyNjNmZmE3OThhZTQgbGVnYWN5LXRydW5rCis2MzI0OCA3MDgyMTRmMzUxZmU3ZDhiZGU0YTlkMjIxMDU0NGMzMGZlMTcyZDc4IGxlZ2FjeS10cnVuaworNjMyNDkgN2UxOGQ2NTkzODI0M2E1MDc1ZjZjMTdmYTZkODg5YTA5NWI0MTg2MiBsZWdhY3ktdHJ1bmsKKzYzMjUwIGMyMjllNzVmYzIyNDllNmFkZTQzYjA2NWQxZGVmNjY5M2UzMTI2ZDQgcHkzaworNjMyNTEgMzVhODg5OTI1NmMyY2E3YjI5MzkzZGIyODE5MWQ4MWUyMzNkZGM3MyBweTNrCis2MzI1NSA0ZWI1OWQ4YmFjNGQ2NGM4YjM4YTkwMjE2NzYyMDdiMGQ2ZjYxNTgxIGxlZ2FjeS10cnVuaworNjMyNTYgMDY2M2YyZmFiOTM0NTJjN2MzOTE0Yzk3NDhhY2UyZjgzYmRkNGRiYSBsZWdhY3ktdHJ1bmsKKzYzMjU4IDQxNjI4ZjM4YzVhMjg4NzRmZDYwYTg2ODE0NWY1ZDIwOWM3ZTNiYzQgcHkzaworNjMyNTkgNmYyNTlhOWNjYzg0ODE4ODUzNDI3YjM0NmUwZmNjMWNkYmVhMGVkOCBweTNrCis2MzI2MCBmMGE0NzA5MWM4ZDg2ZGQyZjNiZWRjOWE4YjYxYWVjMWY4MjM1ZmQyIGxlZ2FjeS10cnVuaworNjMyNjEgMWRmNDY2NzAyZGUyYThhZDJjYjNjYTc3YTEwMGIyYTRjZTVhMWM3ZCBweTNrCis2MzI2MiBhYWI4YjhkNGI2YTUwODU1Y2YzYTkxNzg1ZTRhNDdlYzMyYWZlZDhlIGxlZ2FjeS10cnVuaworNjMyNjMgZDVlYWE3ZGFlYzJmNDczMDVjMTViODhmOGE2MGRjYWRhYzQ1NzVkZSBweTNrCis2MzI2NSAwNTRmZjQxMjhmNzQ0ZWVkYzFkZTJmZDE4YjQ4NTBkYTBhMWMzMjNhIGxlZ2FjeS10cnVuaworNjMyNjcgMjdkNjlkYzcyNzkzMjFkMGQ5NDRmZDRmMjMzNTcwNjQ1NmYwOGIwMyBweTNrCis2MzI2OCA1ZTg5MzI5OTFhZGZkMTIxYzNlNTUzMmFiZjU3M2U4YWZhNGFkZGM4IGxlZ2FjeS10cnVuaworNjMyNzAgM2FiYTQ0MjU2MjY1NzllZmUwNjk4ZTY5NjI4YTYyOGY0ZmU2MzEzYiBweTNrCis2MzI3MSA2MmQ5ZWM5YzllZmQxMDJhNzU0MjY2ZDIyMGU3NmY0ZDk5MjhlM2NjIGxlZ2FjeS10cnVuaworNjMyNzMgZjUxM2JiN2I4ZDk3ZTU1YjgxZjNiMTQ1YTViODlmM2ZlZGQ4ZWFiZCBweTNrCis2MzI3NCBhMDkyZGNlNmU5ZDRhOTYxMDI4NDMzZGRlM2I4NGQwZmUzYTlkYjZiIGxlZ2FjeS10cnVuaworNjMyNzYgM2NjMGJmN2YwNGI2ZjU1MTBkZmM1MjhjNTI4YmFkNjY3YWFjMTFiMiBweTNrCis2MzI3NyA4NzZkMmYwZTkyZTRlM2ExNTQwOGE1ZmY5ZDYzZGE0YzA0ZWRjNDI4IGxlZ2FjeS10cnVuaworNjMyNzkgZTRiYjZmMTc0YjAwNDQ0N2NmZTM2NTAwOGJjODRmNzliZjcyYmQyZCBsZWdhY3ktdHJ1bmsKKzYzMjgwIDZkYzkxYjM2NmQ5ZmZlNzJiYTAyNDA1YjU5MGRjNzRkM2UyNGYwMjQgcHkzaworNjMyODIgNTdjZjAwMWFhMmEyNGU4NmNiZjhhMzQ3ZGU4ODQ3MjQwOWYyZmQyZSBsZWdhY3ktdHJ1bmsKKzYzMjg0IGZjZjVkYWM1MTM5NGI4YmI0ZmY3ZTEzY2UyNDg4ZDcxMGYxMWVjYjEgcHkzaworNjMyODUgYmFkYTBlODcxYWMxY2YxOWVmMzk3NTljMGNlZWNhMTA1NGUyMmUwMSBsZWdhY3ktdHJ1bmsKKzYzMjg3IDVhZjM4Yjk1YTE3ZmFlMjk5ZTNhNTlkYTY1ZGJiM2Q2YWYzMzI2ZDAgcHkzaworNjMyODggOTZhODc2YWY5MzBhNDc4Nzc3NWIzZmYzOGQ0ZmY2YzdjNjU4ODNmNyBsZWdhY3ktdHJ1bmsKKzYzMjkwIDhhMTBhNDExOWZjMjc1NzNhZmVhY2Y5NTcyNmUwYjI0YjYyODg0MzggcHkzaworNjMyOTEgMWI0NGVkMWE5MDQ2NWVlNGFkYzQwNGFmYTMxMTVhNDE2MmI4YmVlMyBsZWdhY3ktdHJ1bmsKKzYzMjkzIGRjNDA5OGNhODIzZTI4NzliZWYzNWJlNzJmYWIyMGQ0OTBlNmNmODMgcHkzaworNjMyOTQgZDRiNzQzYmRlYmIxNmM1YzkxYWM1ZTk2YmEzYjc5ZTkzYzJkYWRhMyBsZWdhY3ktdHJ1bmsKKzYzMjk2IGNmYThjNjE4ZWQzNTM3MDlhYTIwYmU0MDMzZmQ3NDEzZTQ3YWJjZjggcHkzaworNjMyOTcgODA0MzViYzdhYWM0ODM4Zjg4YjViZmE1NDBjMjI5YTIxODBiMGJjOSBsZWdhY3ktdHJ1bmsKKzYzMjk4IDFlNTViMmQxYzkzZWYzNTg3Y2RjMjZjNzFlZjEzYzFkMWFlYjg3YjMgcHkzaworNjMzMDAgNTliY2RmZDI3NTAxZmVhNGNkMTMyNTFlZjVhMDI2ZDFhNzE0NDJmOSBsZWdhY3ktdHJ1bmsKKzYzMzAyIDUyOTg3MzlmMGE0ZGZjMTdmNGIxZGI0OTFlZGE4MjUxMTJkYjc4ZTIgcHkzaworNjMzMDMgZDRhY2VkMzNkNTdhNTkyNGMzMjg3YTk1ZGM4OTdkOTFjYTFlM2ZmYyBsZWdhY3ktdHJ1bmsKKzYzMzA1IGUxMTZjYTI2ZDhmMWNhNmJiYzAwYzY5YTA4Y2NhMmU5OWQxYTQ3Y2UgcHkzaworNjMzMDYgZWQ1MzJjYTdhZTc1Y2ZkNjlhZTZhYjgwZTE3MDg3Y2UwNTQ2OTBiNiBsZWdhY3ktdHJ1bmsKKzYzMzA4IGE3YzFiMzE3MDExMzgzMmFmYTZlYTA0MDExNTFkY2ZmYjA1ZTQ5NjUgbGVnYWN5LXRydW5rCis2MzMxMCA1YTQ2MDgyNzJjNTA2YTZjMDQyOGRhMjNlMTY5ODNmY2U2ZjY1MjI3IHB5M2sKKzYzMzExIGZkYTRkNDFhMDc3Mzg3OTU2OTc4ODBjN2Y5ZWNhMzAyNjU1YjBhN2UgbGVnYWN5LXRydW5rCis2MzMxMyAxZDYyZDMyNjEyZDZkY2ZiMmQyNjQ2MmI1ZWVlYzlhMzkwZjlhZDAyIGxlZ2FjeS10cnVuaworNjMzMTUgYThhNTdmZjZmNTY4YmM0ZTlkMzZkMGVhNmMwYmMxMjI2YTUyMDVmYyBsZWdhY3ktdHJ1bmsKKzYzMzE3IDEzNTZhNDE4ODMwYjM0Y2MxOGZmMzczNWZjMGVjZTY2YjU0Yzg3MDYgcHkzaworNjMzMTggNjI4ZGQ1ZWM0ZGQyZThhNzg0YTIwYTJiM2I4YWFkMDkzMTRmZDVhZSBweTNrCis2MzMyMCAxNTczYzc3NmRmODJlYzU1NWU4YmY3ODc4ZmNjY2Y5MjgyMWU3NGY3IGxlZ2FjeS10cnVuaworNjMzMjMgZDU5MjljZjg2OGNiYmI1MjMxYjE5MTQzZTliMzliYzA5ZjYzYTU1YSBsZWdhY3ktdHJ1bmsKKzYzMzI0IDkxODk2MjI3MjcyYTY5MmI1MWQ1MGEwYjUxM2MyYzkwZThjOTE3NzAgbGVnYWN5LXRydW5rCis2MzMyNSA4ZTAwMTc5ODZmNTBlZTY0YTE3ZTg3ZjhjY2EwYTRkNzhlYzIwZmQzIHB5M2sKKzYzMzI2IDM5MTk3OWFmNjYyYmM0OGRhZDY3NDQ0ZTRhZWYyNmVmOWY5Y2Y2OTEgbGVnYWN5LXRydW5rCis2MzMyNyBlNjhlNjEwODYyYmViNWY5YTU3MTJjZGRiMzMyYTkzNTk1ZTJjZWYwIGxlZ2FjeS10cnVuaworNjMzMzAgODdhNzkzNTIzNDJjNjIxNWVhY2UwZjZjY2U0MzY2MTc1NTU2NmM4ZiBweTNrCis2MzMzMSAwODFjMTU4MDZlMjg3YzAzNjYxNmE1MDgyY2Y3YTRiZWI5MTUwNjk3IHB5M2sKKzYzMzMyIDBkNTRjNzA1NjQ2OGIzMmE2OGE1NzdmMzkyMzY0YjNkZDk2YTVhZTMgbGVnYWN5LXRydW5rCis2MzMzMyAzOTdmMjlkZDgyYmRjNWRjNGVmM2ZmNWI3MDY2MDU1MzRhZWM3MzE3IGxlZ2FjeS10cnVuaworNjMzMzQgMzFjYzhlMWE4ZmRmNWYyMzdmNWU5YTk2OTg5Mzk5ZmY5MmMxZjZiNSBweTNrCis2MzMzNSA5NjBhZGU4NTYwNzhkNjU3MTJhZDY3ZjQwNjZlYzQ2N2QwODIyZTc2IHB5M2sKKzYzMzM2IGFlMTZlOTRiYjAzYWU4ZWRmZDcwMzY0OGVlNWM0MDU4ZTZmZDNlZTQgbGVnYWN5LXRydW5rCis2MzMzNyAyYjhmNzQ0ZGI3OWI3MjE1ODdhYzA2ZGNiYTU1ZDc4YjMyNjUyODRkIHB5M2sKKzYzMzM4IDY3ODBmMDE1OThhMjM0NGY3OWU3M2YxZDI1NjE3ZDNmYjUzZTI4YTkgcHkzaworNjMzMzkgOGQ4ZTA2ZjRiZTFmZjRiZjZlNDI1MmRhZTQ1NzBhNDNiY2E4MjZkYSBsZWdhY3ktdHJ1bmsKKzYzMzQwIDBjNzE0MmM1NmQ3ZWQ5ZWY1NzU1OGI5ODMyYzBhNjk0Y2NmYzViMjAgcHkzaworNjMzNDEgYThhZTJhYTA4ZTdmZjUzMDVmODc1ZWM5MmM0OTQ2MDEzMzc2MGE3ZCBweTNrCis2MzM0MiAzYzAzZTliNDY2OTg0MTc1YWY4Zjg2NzA4ZWFkZWRjMGU3NjFjOWQzIHB5M2sKKzYzMzQzIDU5M2I2NDk5MDRiODY2MzYwNDBlYmJjZGIxYjQxZDE2MWMzODNhNWMgbGVnYWN5LXRydW5rCis2MzM0NCAzNjU2ODczOTg1MTg3Yzg4MTJlM2JmNjkyNjBkN2NmMjk0ZDFiZjhiIHB5M2sKKzYzMzQ2IDJlMmM3MTJmZTI2ZDY5N2RkNjZjOWNkYTAzNWE2MjBmYmQ3YzhhZjggcHkzaworNjMzNDcgNTdmNjFkYWQ3YjNiNGYzZjM4YjRlNjhlNmFlZDFkNzM5MTJjMzA4MSBsZWdhY3ktdHJ1bmsKKzYzMzQ4IDM0MDdiZjlkYWMzODdhNGM0YWI3Y2RmMGJhZmRhYTZhODgxYmNlOWIgbGVnYWN5LXRydW5rCis2MzM0OSA1OGEwZDU1MjRmOWEzYmE5NTA2MTUzZDFiZjAyYWY0OGRhZDg3OGRkIHB5M2sKKzYzMzUwIDk4ZjY4NzI2ZGEwMmQ1MGE2YjU5Y2M0OGIwMTIxYmQ1NzA3ZjgwMzEgcHkzaworNjMzNTIgYjYzMDcyOTU3MWU2NjhmNGU0ZTA3MjY4NmE3YTJmZmE4YzBmYzlmZCBweTNrCis2MzM1NCA5YWMxMTA0M2IzOTUzNjNlMThlZjAzZGZhYzk2Yzc3Yjc2MDdlYWQ5IGxlZ2FjeS10cnVuaworNjMzNTUgOTQ3Y2FlZTIzOTllZjFmODkxZDE0MjM5MDU0MWViNzJmZDhkZTllMSBweTNrCis2MzM1NyAzZGYwOTBlZDQ4MTAzZDYyMjkyMDk0NWZlN2YwM2U3NDZjOWMyZjRiIGxlZ2FjeS10cnVuaworNjMzNTggZDZmZTUwMjMzNjI2MGY2MDEzNDE4MmRlMmJjOWQ5ZGU2MTcyNDAzNSBsZWdhY3ktdHJ1bmsKKzYzMzU5IDRlYTk5MzA5ZTUyNTRjOGI1NmEyMzJkOGY2NTA0ODBjMTVkMThiZTUgcHkzaworNjMzNjAgNGYxYTA3OWRmNDI3Y2JkOWU4M2FhOGZlYWE5MDFiOWIxZTNhYmFhNiBweTNrCis2MzM2MSBiMGIzMjczMmY2NmViN2JlMjYwYjdjZDE0NGJlM2Y5OTQyMzU0NDE0IGxlZ2FjeS10cnVuaworNjMzNjQgZWQxMzA0MGFjMmU2ZTVmNzg0Nzk4ZmFmZjE5ZGRiZDFkZDUzYjlhZSBsZWdhY3ktdHJ1bmsKKzYzMzY1IGZmMmRjMDJiYTQxYWEzZDExMTMzOGEzNzRmYWVlZjczMGNmZDQzNWMgbGVnYWN5LXRydW5rCis2MzM2NiA0NTY1MGMyNWEwMjg2NTI2NmYzNjczNmYyNGM1NDRjMzNhNDk3ZGVmIGxlZ2FjeS10cnVuaworNjMzNjcgNTRmZDA0NTg1NTBjNmE3NTAzNjIxNWRmZGE1NTBkNDkyODM2ZWIyMyBsZWdhY3ktdHJ1bmsKKzYzMzY4IGFhOGUxMzI3OWI1YjFhYzFjYzU1ZTVmZjc0N2ZkNGYwNjIxYzk5ODYgbGVnYWN5LXRydW5rCis2MzM2OSBhMmNlZjllODliN2MyZTY5ODNlMjNkNWQwOWZhNTI1ZTcwMDI0NDliIGxlZ2FjeS10cnVuaworNjMzNzAgNWQxYWZmNDZjYzBkZjFlMzgzYjNiYWYxZjBhMjJhMTVkYjU2MmUzNiBsZWdhY3ktdHJ1bmsKKzYzMzcxIGIyNDAzZDQ3MGI2OWRkN2M4YmZiZjA2ODU3ZTdkOTE2YWI2MThkMmUgcHkzaworNjMzNzMgZGQwYmNjMjE2ZmUzNTkyMGFmNDQ2ZTI4NTczNTRjNzljM2UzZjQxZCBsZWdhY3ktdHJ1bmsKKzYzMzc0IDNiODI3ZjM2NDdjYjE4NDY4YWI2NDA2OGE1OTgyYTlmNmUzN2JmM2EgbGVnYWN5LXRydW5rCis2MzM3NSA4OTNhNGRjMTdhOTFjNWViYTEzNzM1MzcyNWJlNjY2YzVlYTVlNzViIHB5M2sKKzYzMzc2IDg4YmI5ZGYzODVkYzBkNzUwNjAwZWYzNmY4NGM4NWI3YTMzZTQ0YTAgbGVnYWN5LXRydW5rCis2MzM3NyAwZjE1NzM1YzE4MzFmNTRlYTBmYWQ1YzBhMWZkYjI3ZGM3Nzg2OGIyIHB5M2sKKzYzMzc4IDYzNzQxYzc1MjFhYTBjMjIzM2NmYThhYzQxYWU1ODQ1ODk0Y2Q2YmYgcHkzaworNjMzNzkgMGU2N2UyMWE0MTEzMjBjNzcyMmZiYWYzYzU0ZDdjZDViODEzMmFlNCBweTNrCis2MzM4MCA1MzA0MDQ2YmIzNThkNTYwMTVjYjY5NzUwNWRmMzJhNzM5ZmI5NjE2IGxlZ2FjeS10cnVuaworNjMzODEgYWJlMzVhODdiMDFkYTMwMzExYjg5NzM1Y2U5NmVkZDkwNzQxNGJkNyBsZWdhY3ktdHJ1bmsKKzYzMzgyIDYwYjg1OTI0ZWM2ZDAyOGU2YTJmYjg3Yzc2YjViNDQwY2UxOTdjZjQgbGVnYWN5LXRydW5rCis2MzM4NCBjZTdhYTg4YjY2OWVhMTBkYzFjYzc5NWFjMGI0ZTBmMjIwNGUyNjdjIGxlZ2FjeS10cnVuaworNjMzODUgYTAyYmMyYTg0ZDE5Y2NkMGI4MDJiODQ4ZDI4NDc2ZDYyMDAwZjM0MyBweTNrCis2MzM4NiA4ODBmZTg4NzdkZjk3OGI5ZWNlMDkyN2QyMjI3NmFlNGI5MTdlNmU0IHB5M2sKKzYzMzkyIGFiODBiYmZhNmYwYzA4OTI1NGM1ZTU2YTlkZmIzMWQ2MWFkZWRmZGEgbGVnYWN5LXRydW5rCis2MzM5MyBiZTU4MWFjZWE0ZTczOTk2YjM3NDg3Nzc5NGUxZjE0N2Q5NDlkNTk0IHB5M2sKKzYzMzk1IDZhZjY0NTEyMjk0YWQwOWQ3MjdiMWYwZGIxMzA0ZDBkNTU2NzJkMjYgbGVnYWN5LXRydW5rCis2MzM5NiA0MmI3OGUwZTY4NDgwNzM0OTYyMTUwNDI0OWM2NWQxOGI4YTMwMmM3IGxlZ2FjeS10cnVuaworNjMzOTcgODRiYjcyZDkwYmM3MjUyOTYzODE1M2E3ZmQ1YTg1ZDZkM2ZiZWRmNiBsZWdhY3ktdHJ1bmsKKzYzNDAxIDA2ODA3OTdhZTQ1NDYyOWUwNTdmZjIyM2UyNmRiMzEyMzAxMThlYTMgdGxlZS1hc3Qtb3B0aW1pemUKKzYzNDAyIDIxNDRjOWYzNjVjOGZhYWZmMzEzZmU1ZDJhNTExZjlhYjQyZWRhMWQgbGVnYWN5LXRydW5rCis2MzQwMyAxY2E5Njc1NjY4ODBlODA2NDIwM2JiMjNhNzgwZjg3YjcyODVjNmQyIGxlZ2FjeS10cnVuaworNjM0MDQgNmZiZDA2ZGI3MDc3NjAxNmQwMzVlMmM1NzU4M2JiM2JjYjA1MjdhNiByZWxlYXNlMjUtbWFpbnQKKzYzNDA1IDZiNzk3NzMxNGMwMmZkNjFiN2ZlZTJhY2Q3NGNmYmU1NjI4ZGI0N2IgbGVnYWN5LXRydW5rCis2MzQwOCAzYmJmNDRkMzIzNjEyMmFjYjkwNzgwMTdhNDkzNmJmZjhlMzFlN2FiIGxlZ2FjeS10cnVuaworNjM0MDkgZjJjMDNkNzE1OTdkNDhiMmM0Yjk2M2I2NGQwYzI2N2ZhYmE5MDhlZSBsZWdhY3ktdHJ1bmsKKzYzNDEwIDY5NGQzNmZiNmY0ZGZhMjY2ODBjNDE2MjNjZTcxZDgwMDA2NWQwNmUgbGVnYWN5LXRydW5rCis2MzQxMSBhOTdlYjE3N2YzYTc3OWNkOWE0YTkwYmJmNmNmNWE1MmI3YjEyYzBhIGxlZ2FjeS10cnVuaworNjM0MTIgYWM5M2VkYzM5NmE2NGY5NGIwMjdmNjRkMzQwMzkyYTZiOGRhMjVkZiBsZWdhY3ktdHJ1bmsKKzYzNDEzIGI2NjA1MGRiODQxZjA1YmFiMjgyM2YxNDVmNWU1MWM0MmY0NWQxNzYgbGVnYWN5LXRydW5rCis2MzQxNCA2ODM2ZThmMWRlZGJjZDQ2ZjAzZDlmNzk5OWQyMThmZjI1OTIxZDMzIGxlZ2FjeS10cnVuaworNjM0MTUgNzQ2MDQxNWRhOGZlYzc2OTEwMjg2YjdlOTMzZGJjOGQ5YWE1MzNmYyBsZWdhY3ktdHJ1bmsKKzYzNDE2IGYzZGRhOWQzNjY4ZmQzMzIzYjc5OThlZGUxN2M1MjFlNmZkY2M2NjIgcHkzaworNjM0MTcgZDYzMzQ0YmExODc4ODhiNjc5MmJhODM2MmEwZGQwOWUwNmVkMmY5YSBweTNrCis2MzQxOCBlZjRjY2EyZDYxNzEzZDMzYzJhNTAyNTIzNWQ0MDMwZTM2OTVkMDJjIHB5M2sKKzYzNDE5IDI0OTYxODg4YWQ5NTZhY2U4MDcyNzU2MmU3NTU3YzZhMjc4OWY3ODEgcHkzaworNjM0MjAgOGE3NDYxMmYzZDJiYWUxZGMyMmJmNTYwNGZjOGNkNDEyZGUwNTY3NCBweTNrCis2MzQyMSBkNmUxZWEyMWM5NDhlYzI4ODUxZjg3ZWUxMWY1MjI5YTllM2FlZmI3IGxlZ2FjeS10cnVuaworNjM0MjIgOTI0MGE1OWEyNWU5ZGRjNDIyYzM1ODQ4MzA3YTEzYjA1N2JhYTcyZiBsZWdhY3ktdHJ1bmsKKzYzNDIzIGNjZTFiMjQzYzExZDEzNjNkODE3MTIwNGZlZjhlZjNkZGQxN2I3YjUgcHkzaworNjM0MjUgNzExOGZhZGU1NzViOWVjMWVkMjk4MTBkYzNiYzNmODYyYWY2NDJkZiBsZWdhY3ktdHJ1bmsKKzYzNDI2IDY0ZjM4NzM0MzhiMWNiMjY0NWQxODdiZjRkZGRhNGVkZmNmNTgxYWMgbGVnYWN5LXRydW5rCis2MzQyNyA1Y2U5MDRjOTBlNjE4Yzc1YjE0MmUzZDBiNDQxZjU1YTZiZTRiNDVlIHB5M2sKKzYzNDI4IGQ5NTNlYTU4Y2M4YmNhMzVlNDJhOTdmZGZhZGZiYjZlMDg3MWRmOTIgbGVnYWN5LXRydW5rCis2MzQyOSA3YTFkYzNlN2M3OWI1MjQzOTllYmEzZmQ4MDlkMzAxMGE3MGIwNTE1IHB5M2sKKzYzNDMwIDgwMWEwOWRkMGViOGFiZGY5YjJmZWI3NTk1Y2RhNDYwYWVjMTcwNWEgbGVnYWN5LXRydW5rCis2MzQzMSBhYzU5ZmRkODBlNDU5ZTY4MjAwZDI2ZGEwYWExYzQ2ZmQ3MjlhY2I5IHB5M2sKKzYzNDMyIDBhYTFiZGU5ZDE5NGE5N2Q2MjU3ZjQ0MWVkYjQ2MzE1YWEzODBkNzUgbGVnYWN5LXRydW5rCis2MzQzNCAzM2M3ZmU4NWUzNWRmZjYwMDJkOWY5ZmQyYjljMmVlMDdlOTY1MTViIGxlZ2FjeS10cnVuaworNjM0MzUgMTJjMjI5ZDAyMWNjMmM2MGE0NjY5YzIyNGVhYzc4MTIzNDJjZmQ1NCBweTNrCis2MzQzOCBmODYyZGZhZjlhNGJlM2EzMDVmYjVlYmQ5ZDc0ZTQwNzE4MDI5NzExIGxlZ2FjeS10cnVuaworNjM0MzkgNzI5NmEyZmI0Nzg2ZGRhOTA3YjQ2ZWNkODYxOWMxOGNkZjc0ZjQ3ZSBweTNrCis2MzQ0MCAzZDVjZGRjNmU1ZTdmYzUwMDM2OGI1MmNhNmM2ZjA0OGQyMzE5MmRlIGxlZ2FjeS10cnVuaworNjM0NDEgNTg1ZjdjYTM4YTg1YWY4MDk3MTM1YzkzNzJmNTA3MjQ3YTljZGM3MSBweTNrCis2MzQ0MyBiYmQzMGM0OTJhOTk4YzNlZDZlMTcwODA3NDJlYjJiMjZkNWZiY2EwIHB5M2sKKzYzNDQ0IGNkYjc1YWYyMzg1YTMxZmRhNjkzZDE2MzllZmI4NjE2NDU5ZWNhNGUgcHkzaworNjM0NDUgOWYzNTQwMDFlYTI1MjcxMTVkYTVmOTJjYmM1NjU0OGRiZDQ1Njk3MyBsZWdhY3ktdHJ1bmsKKzYzNDQ2IGVmZTIyZWVmMjZiZTNlMjc1ZTdiMDhlNTFlZWM2ZjQ0ZTgwZWYwNDggbGVnYWN5LXRydW5rCis2MzQ0NyAyMGIxYzVjNGUzMDQ0NWYyYjZhODdjNjhjZjEyYWYyYzllZjZiN2I4IGxlZ2FjeS10cnVuaworNjM0NDggYTkzODUyOWY0ZDZkZDNhMjE4OTEzMjcyODA3OTBiZDcyMGMyODIzNCBweTNrCis2MzQ0OSAyZTlmNTcyYjczMjI3YTg1OWE0OWNkMjBkNDE1ZmNkMWVhYzYyYjk0IGxlZ2FjeS10cnVuaworNjM0NTAgYjg2YjI5ZTBjZjMyOWQxMGMxODYzMmZkYTQ4OTc3NWFkNmUyMWE1ZiBsZWdhY3ktdHJ1bmsKKzYzNDUyIDMwZjYzMmIzNjg2OGU5ZDcwZWFkMjMxM2Q1NjE1YjQxOTI1YTk0MDkgbGVnYWN5LXRydW5rCis2MzQ1MyAzNzQ5OTI4N2Y3NThhNzJkYjJkMmE5YjM5MDNmMGZmYWIxODYxY2JiIHB5M2sKKzYzNDU0IDYxYTY3NWJhNzkwNjAyNTljN2E5OTIxZDAxZDk0OTMxYmE4ZmJhZjcgbGVnYWN5LXRydW5rCis2MzQ1NSAzNmM3MWQzYTZlZjhjMWU4OGZkYTIxMGRlYzM4NGRlYWJjZjU2NGE4IHB5M2sKKzYzNDU3IDMwNzFhMzM3ZDkyMWYzZWJhZWU5NDIyNDY3N2M3N2Y2NGNlODBiZDYgbGVnYWN5LXRydW5rCis2MzQ1OCA2YTZjYjlkNGJmOTQ1MDJkMzk4OGYzZmZhZmQ4MDVhYTE5Nzg3ZWJiIGxlZ2FjeS10cnVuaworNjM0NTkgNzk2Y2I5M2M5NzA3ZjdiZmNmODkyM2IxNjdiOThlZDViMzRiY2Q1ZSBsZWdhY3ktdHJ1bmsKKzYzNDYwIGNkOTFkYWYwMzI3YzZlZDFlMjUyY2Q2MjA5MTIxYzM1ZWRiZmJiNDQgbGVnYWN5LXRydW5rCis2MzQ2MiAxMmNhMWU4MjAyODJiZjQ5YzVkOTdlZWZkOTc3MjdhYTFjMTkwNTIzIHB5M2sKKzYzNDYzIDRlY2NlOGZlZDZlMWRiNjQzZmFjY2RhZTY5MDgzYjY3NDJmZGMwNzEgbGVnYWN5LXRydW5rCis2MzQ2NCA5NWNiMDA5MzY2ZGNiOTMwOTVlNTg1MmIyOTIzZThiNTliNDBiOWI5IGxlZ2FjeS10cnVuaworNjM0NjUgOGI2MjhjYTIxOGYzZDZjMzYyOWJlZWNhNTkwNzdjMTQzYWRkOTUxMyBsZWdhY3ktdHJ1bmsKKzYzNDY2IGExZjcwNDM1ZDhlMzczZjk2MGI5ODIzZWUyZmM3MmI2M2ZlOTRhZTYgcHkzaworNjM0NjcgY2E4ZDhjOGYyOTYwMzI1MzZlZWMwODk4ZmRmZjE1MGU4ZjdmNGJmMiBsZWdhY3ktdHJ1bmsKKzYzNDY4IDg1MzI2ZmI3NTVlMjk5MGExZGMwYjBhNDhkMzIxYWQ2M2ZkMWRmNDQgbGVnYWN5LXRydW5rCis2MzQ2OSBlODA4NTAwNTViOTMxNzJjMTQwYmEyMTJhY2NhM2ExZTdjYjBjOWVmIGxlZ2FjeS10cnVuaworNjM0NzAgYjgzZDdkMDI5ZTBlMTc1ZWI0OTUxNjIwNDQ4NzI0OTE3MTIyZGVmMSBsZWdhY3ktdHJ1bmsKKzYzNDc5IDYzZGRkM2VlNGEyZDFkNzgyOGFhYzkwMDUwYzQ3MDQ5ZmM3NDI0ZjAgcHkzaworNjM0ODAgODViYTA4N2MwY2M3NGIyY2Y3NWUwZGEwMDEwNzhmZDg0MGQxMDI4MSBsZWdhY3ktdHJ1bmsKKzYzNDgxIDQ1NGQzOGMxZjQ3ZTkxYTgwMjRlNmFmYWNkYzQ2MzZjNTFiNTUzZjUgbGVnYWN5LXRydW5rCis2MzQ4MiBlYWFhMTllOTQ5OTgzYzcxNmJiMDU2YTA3Yzc2OWFiN2U4MzcyODM5IHB5M2sKKzYzNDgzIGQxN2ZhYzg5NmEwYmM2YmZmY2YwOWViMTc0Y2E5MGYxY2ZiYTUwMWEgbGVnYWN5LXRydW5rCis2MzQ4NCA3NzU1NzIxNmJhMzIxYTE2MTYxOGQ3Yjk3MzM4OWZlYWE5NzVkNzAxIGxlZ2FjeS10cnVuaworNjM0ODUgZDVkZDhhODUyOTcwNTZhZWNkN2FmYzExZTExYzVlM2M5OGZmNWY4ZSBsZWdhY3ktdHJ1bmsKKzYzNDg2IDVjZWM0MzZkNjRhMjgxMmFmNzUyYTBiOWYyNWY1NjE1OTAwZDg5YzcgbGVnYWN5LXRydW5rCis2MzQ4NyBiNTM2MDRmYWQ1NGIwZTY2MjkwMWE3YmE1YjQxMWE3N2E0MGYxYTcxIGxlZ2FjeS10cnVuaworNjM0ODggYWUxOTEyMDIzMmI0YThlMzM5MDU2NjRlMTUzMmUzZThiNThhODNkNyBsZWdhY3ktdHJ1bmsKKzYzNDg5IDdmYzk2ZDdlY2YyZWQ3MWNjMWYxNzZkMmI4ZmZjYmUxYjg1MGY3NGQgbGVnYWN5LXRydW5rCis2MzQ5MCA1MWUzMjRiNTczYjA5OTQ2YjdmMTJhNzViZmQ1ZDViNzIwMDg0ZTc1IGxlZ2FjeS10cnVuaworNjM0OTEgYThmMTU4M2I3OGY2ZmVlNzE3NmY3Y2UyZDA4ZjMwY2MwY2IwODU5MCBsZWdhY3ktdHJ1bmsKKzYzNDkyIDRhZDRiZWY5MWU4ZTdmNDQ4OWU5NzFlMTY4MjkwNjBjMjRhOTRiYWMgcHkzaworNjM0OTMgZjQxOWIyZTk2YTk4N2MxZDM2Yzc4Yjg3ODlhMjZjMzhjZWFiZDA1MSBsZWdhY3ktdHJ1bmsKKzYzNDk0IDE3M2U1ZThiM2U1OWVkMmE0YTBiYWExMGI5OTA0MTViMDk2MjY2Y2UgbGVnYWN5LXRydW5rCis2MzQ5NSAwOTEyNTExYjk4OTc2MmJkNDk5ZGRlMDI1MDczOWMwNzEwOGNhMWFmIGxlZ2FjeS10cnVuaworNjM0OTYgMzJiZDE4NzA5ZGZkZjAwNGVhYzM5YTBlYTBmZjBiNzY1MzhjMzkzNCBsZWdhY3ktdHJ1bmsKKzYzNDk3IDE0ZWI4MDRiM2ZjN2RmMWMzMjM2ZmNjZmMxOTUzZGIwMGUwNDQ1MzIgbGVnYWN5LXRydW5rCis2MzQ5OCA1OWFiMmNmMDAyZmE4YjVhZDY4NzgyY2ExYzU4N2U5YzMyYjY4Y2EyIGxlZ2FjeS10cnVuaworNjM0OTkgNTJhNjYzNzM0MzdkMzIzN2M0ZjliMmYyZWFkY2M2YjJiODI2ZjRiNCBsZWdhY3ktdHJ1bmsKKzYzNTAwIDEyYzU2ZDJlYjRkOTc5OTU5NDAzNDA1N2ExMDE2MTViNmNlN2ZiZGIgbGVnYWN5LXRydW5rCis2MzUwMSBkZTExYmY4NDQ5MWQ2Y2U0MTk1MjFjZGE2YTQyM2Y4MGJiMjIwYWNkIGxlZ2FjeS10cnVuaworNjM1MDcgNDZiZDhjZmE3NTRjNTg5YTM2NWZmODEzZmQ3MTJlYTE4MjIzZTNjNCBsZWdhY3ktdHJ1bmsKKzYzNTA4IDMyOTFjZTQ5MjhiYzQ0NjI2YzZmMjBjZWUzYTY5MjUxOGQ1MzEyN2MgbGVnYWN5LXRydW5rCis2MzUxMSAyMmQyZmI3NjFhYzFkMzQ5Mjk5N2MzM2QyMWViMTMzNWQ1OGQ3YzczIGxlZ2FjeS10cnVuaworNjM1MTIgOWM5MzBhMzJjZWJiMjU3OGVkMzE0OGMyNTVkNmI3ZWJkMGJmOTMxMyBweTNrCis2MzUxMyA1MzhlNDEwYzAwODgzMTdmMGVjMjVmZjMzZjVlYzQ3NGUwMWUwZTZlIGxlZ2FjeS10cnVuaworNjM1MTQgNTVhNTBkMzkxYmE5YTgzOTI3YWVmMDY2YTEzYTgyNGNlYmEwZmJlNyBweTNrCis2MzUxNiAyZDdmYTg0Yzg3OGRiNTkyYmE1OTVmZmFjODdkZmQ3MDhjMmNlZTU2IGxlZ2FjeS10cnVuaworNjM1MTcgZDI5MDA1MGVkOGIyMmEyYzYxNzIwOTJlMmFlYzFlODQzYzI5MDAxZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM1MTggN2FhOWFkNjU4MDE0YTQzYmM0NjA1NTQ4Njc4ODFlNmMwNGY5OWYzMyBweTNrCis2MzUxOSA5ZGJjYTI3NTRiNDA2YzNjMjJlNjYyMmZhYTEwMjlmN2Y5ZTkwYmQ1IG9ra290by1zaXplb2YKKzYzNTIwIDFkMjI3MjNhNTc4NTI0NmQ2ZjI3NGJiZWZiOTA4NzY2NWI2ZDU1YTUgb2trb3RvLXNpemVvZgorNjM1MjEgMzYwNzc3NjVlMWNmNDU4YTBjNzA5ODU0NjYyZTAxNDgzODRjZDRhYyBva2tvdG8tc2l6ZW9mCis2MzUyMiA3Nzk4YmM4NmFiYTMyYTE1ZTc2ODJlODkyMDdmZTM2NjI1MGIyMDE1IGxlZ2FjeS10cnVuaworNjM1MjMgOGM4MWZhYTIxMGMxZGRlZjIyMDBkZjE0ZDNmNmU4ZDI4MTM5NjdjNSBsZWdhY3ktdHJ1bmsKKzYzNTI4IDViZTJkODJhYzVhY2Q1OTU3ODc3ZDg3MzdiZTVjY2Q2MmRiMDMyNTQgbGVnYWN5LXRydW5rCis2MzUyOSBjZGQwMDAwNjMxY2M3ODVhZTM4MDgxMWZjNDdiYWM4OGUwYTYzMjRmIHB5M2sKKzYzNTMwIDJjMzRmMTllMzkyMmE2YWQxNDg5N2JmYjczMjhjNGJhMWYyOTI2NDUgbGVnYWN5LXRydW5rCis2MzUzMSBjNmRiYzQzMjNhMjJkMjVlNTA1Mjk4ZGU5NTJiMjVlMjRiYTZjYjU3IGxlZ2FjeS10cnVuaworNjM1MzQgODFjM2E2ZjlkODVmMGEzZGMyYTYzYzk3NmFlODRmODA5ZDZkNGI2OSBsZWdhY3ktdHJ1bmsKKzYzNTM3IDRmNmVhNWM1OWFiMzFiYTVmMDViOTc5ZGI5OGNlNDA2YTU2MDg5MzEgbGVnYWN5LXRydW5rCis2MzUzOSAzOGE5N2RjYzJjOWM1YTkzZWU5MGRiNDAwNjBjZmFjOGMwM2EyZDk3IG9ra290by1zaXplb2YKKzYzNTQwIDcxMTRlMWVmZTNmOTY3NGU5MmNlOWQzNjRiNzRjNGYzZmE5NDIxZmYgbGVnYWN5LXRydW5rCis2MzU0MSBjNTM0YjY5YWI4NzFkNWExMjg2MWI0YjJhZmJkNGEwZTZkYzk0ZTgxIGxlZ2FjeS10cnVuaworNjM1NDIgMmZmZmRlZGIxMGY4YzQ4MjU1NWM1NDEzZTJjOTlmNmYyZTc1NzljYyBsZWdhY3ktdHJ1bmsKKzYzNTQzIGUxODUyM2Y4NDJkN2QxMzk1MGRkOTk4YTIxNWJlNWZhNGYwOWUzMGIgbGVnYWN5LXRydW5rCis2MzU0NCA1YTI5NTUyNDEyZmEyYmM2ZWU4YTIwMmI2Yjg1YjI3NzA1ODE2NzIwIGxlZ2FjeS10cnVuaworNjM1NDUgYmIwNDMzMmM3ZjAxNzgyYmZhZjI5YjMyZGRiMTYxNTZiN2M5ZjA5OSBsZWdhY3ktdHJ1bmsKKzYzNTQ2IDcxZGVlZTZiOTQxZTkzYjg5NWMxZTRjZGJhNjU3NmQ5MDg5ZmUxMmIgbGVnYWN5LXRydW5rCis2MzU0NyA5ZmJjNDFhYmRkNGJlZTBiOGY0ZTQ0MTYyNDNjOTVmNGY0NjUzYjQyIGxlZ2FjeS10cnVuaworNjM1NDggMzQyZmJkY2NiN2Q5NjlmZmRmNzJlYTliYzBiZTcyYzFkNWI5OTRjMSBweTNrCis2MzU0OSA5OTE3NmI5ZDkwYjM3ZmY2ZmQ3MWJkMTRlMDM1ZjVmYTc1OTUzYTUyIGxlZ2FjeS10cnVuaworNjM1NTAgZTJiZWY0NGY0NTdkZGMyMzc0NDA2NzAyZmEzYjVmMzhmZjY0Njc4NSBweTNrCis2MzU1MyA1OTQ4MjhlYTAzYTEwNWFkNDNlY2Y2YTI2YTMwMTdhMjM2NDE3Yjg4IGxlZ2FjeS10cnVuaworNjM1NjEgYTMwZmVkZTg3NjQzZDViYjAxNmRhZWM0NmNhMjc3ZmI4NTJmMDZmMSByZWxlYXNlMjUtbWFpbnQKKzYzNTYyIDVlYzk1MjhjOTNkZWFhNTZkZjk4MjU3OTJhM2Q3YjM3MDFjNDg0MGIgbGVnYWN5LXRydW5rCis2MzU2MyA1ZDE5Mjk5ZWUzNDYzZWQ3ZDM3OTg0NGVmNDI4ZTljYjc5MTc5ZDViIGxlZ2FjeS10cnVuaworNjM1NjQgYzVhODVlNGY5ZTg2NjZiM2RhYmZhNmM3ZjM2MDI3ODk5ZGE0MzNiMCBsZWdhY3ktdHJ1bmsKKzYzNTY1IGEyMThkNWNiMjU4YjIwODMxMzI4MjNhMDlkZGY5MmQ5NTU4YjBiMWQgcHkzaworNjM1NjcgNDZjNmI5Nzg5ZGRlY2MzMDY4MjBmMjZmMGE2OTFlOTZjNTU1YTJiNSBsZWdhY3ktdHJ1bmsKKzYzNTY4IDAzNGQ2YzllMjY3MWY5ZTVkMzNiMzhjNTBiODM0MGQ4MDZkMzBkYzQgbGVnYWN5LXRydW5rCis2MzU2OSAyN2MwZDczNTFlYThkZmFjNGFkMzI2N2IzYmQ2ZDExYzVmZWJlNDdhIGxlZ2FjeS10cnVuaworNjM1NzAgNzI3ZmRiOTA2MTkxM2UyNjJiODM3YzI0NzFmMmNhNTYzNDZhOWMzMyBsZWdhY3ktdHJ1bmsKKzYzNTcyIDU1NjgwMDVkMjIxNzMyMjViNzA2NDFlZWVkM2YyY2NmYzEyZjBiZjcgcHkzaworNjM1NzUgMGQwZDk2NDFmOWJkOTc3YTU1Nzk1MDVhNzA1ZGM4NWZiY2U0OTMzZCBsZWdhY3ktdHJ1bmsKKzYzNTc2IDQ1ZmY3Mzc2NzFmNjMzOWRhOWM1NWE0ZGZlNDdmNDliY2FmNDQyOTAgbGVnYWN5LXRydW5rCis2MzU3NyA2YWJjNjNjNjE1MjY1ZjkxZTJhOTA2Y2ExNjJmYjY0YmFmYTcwNWI2IG9ra290by1zaXplb2YKKzYzNTc4IDkwOTEyYjEwYWU3MmYzOGNhYzNkMTI5ZGFiMGZjZjUyYjc1ZWFhYmMgb2trb3RvLXNpemVvZgorNjM1NzkgZmQxYTJmNDk5NmVmMTY5MGM1M2ZiMzg3ZjBiMjVhYzI2OTAzNmMyZCBva2tvdG8tc2l6ZW9mCis2MzU4NiAyOGNmOTljMTkzYzdkNTZmMjAxMzhkNDQ2NTVhN2RlZDViN2YyNGExIGxlZ2FjeS10cnVuaworNjM1ODcgMGY1ZjMyYmNkYzhmY2ZkZDE1MTE1MGVkZmIyZDJjNWYxNTcxMTU2MSBsZWdhY3ktdHJ1bmsKKzYzNTg4IDA1YWEyMWQ2ZGJlYmU2Mjk5ZmJmOTY1NGY3ZjE5OTBlYzczZDY3YjQgbGVnYWN5LXRydW5rCis2MzU4OSBiYTFmYTUxMWI3MmQxZmM0YjE3NTU1MDJlOTU0ZjdmNGY0MWY1ZTk1IGxlZ2FjeS10cnVuaworNjM1OTMgMjE4YTEwODY3MjhhYjY4NzcwMDdjNDE0YTQ2OTRlMzJjMmFlZmRjZiBva2tvdG8tc2l6ZW9mCis2MzU5NCA4N2IxNDQxODg5YTUzMzJmMTY5NjhjZmRhOTNhMTYxMzNiNmM0NmJlIG9ra290by1zaXplb2YKKzYzNTk1IGY1YjAyOTAyMGUwMjNmZmRmY2U1YTE2YjZkMWMzNTI4NWE3MTZjNWYgb2trb3RvLXNpemVvZgorNjM1OTYgNjgwYmI5ZGQ1ODA3NDRkMWI3ZjQzZWMyZDFlODk1YjQ5MThhMDhiMCBva2tvdG8tc2l6ZW9mCis2MzU5NyAwZmVjZDM4Njc5M2U2MjBhOGQxMWI1MTk5ZDA2OGNiZjUwMDU3MWQ1IGxlZ2FjeS10cnVuaworNjM1OTggMzM5ZTE3MTgzMTVjZDg2MzRkNzhiNWJjNWZjMTlhZDY1Nzc0MjcwNCBsZWdhY3ktdHJ1bmsKKzYzNTk5IDM3NjdhNWFhOTU2MDI1YjhmOWViMGMwZWIwMzcyMThkODJkMTM2MzkgbGVnYWN5LXRydW5rCis2MzYwMCBjYjFjODlhNDRlZGI2NTM0NDJiY2U5M2ExOWQzNjY1OTgyMTAwNDNjIGxlZ2FjeS10cnVuaworNjM2MDEgNzFmZGJjZDdiYWE5YTZhNzc1MzJhNGVjY2ZiZjY4OTM1YzEwMGFkMiBsZWdhY3ktdHJ1bmsKKzYzNjAyIDI2MGI2MmFhZmNiNDk3YmQ5ODBkYzNjOTUyY2JkOWQyNjIzYzEzYTIgcHkzaworNjM2MDMgOWFjYjMxNGI5MDcyNzhmMDQ2MWJhMGUwY2FlNDVjNTM0Mzg2ODI2ZSBsZWdhY3ktdHJ1bmsKKzYzNjA0IDczYjI0MTI3ZjdiNjNkZjk3NzI4Mzk0OTJkYTU4MmEyMjUxNDczM2YgbGVnYWN5LXRydW5rCis2MzYwNSBjYWYzYWNkZmU1ZTQzOGQ2MGM2ODI3NTI1ZGE1OTE2M2MzMmQ5ZjI0IGxlZ2FjeS10cnVuaworNjM2MDYgYWZlMTQ4YTRhZDI3ZGZjNTE2Yjk1YWY2YWNkODgzNmNjNTk2YTE4ZCBsZWdhY3ktdHJ1bmsKKzYzNjA3IGU1MzRlZTBhNGNkMDQ0MWE3MDFjYzM5MTU2MzViNjA5MzEwNmQ0NTUgbGVnYWN5LXRydW5rCis2MzYwOSA4MDY1OWI5YTRjZDdkM2I2MzFkMTY2ZjI4NDZhZmExMzIxNzc3NzEzIHB5M2sKKzYzNjEwIDE1NDZjMWZiOGY4MjgzNDY2YzhiOTc1Y2MwMjVmODExMjRhMWEzMmYgcHkzaworNjM2MTEgZDEyNTlmZmIxMDNjMjhjZTU1YjkyMTNlN2ZkMjEwYjg4YzZmNWVjYSBsZWdhY3ktdHJ1bmsKKzYzNjE0IGQ1NTkxYzE2Yjk5N2IxYTAzZmUxMmUyMjkwNjkwZWJjMWYzNzIyN2EgbGVnYWN5LXRydW5rCis2MzYxNSA2MGRmOGY2NTg1NzVhY2JkMWYwMjQ4OGQ4NTQ0MWZlZGQ5ZDM3NWJiIG9ra290by1zaXplb2YKKzYzNjE2IDg5NTcwOGIwNTZiN2JkNDIxMGRmNmZlYjE1NDEyYzVhYjQ1YWEyOWUgb2trb3RvLXNpemVvZgorNjM2MTcgOTY3MDI2MjU3OTYxMWYxZjlhNjZiZDNkM2Q2NzY0MGIyOTcwMjYyOCBsZWdhY3ktdHJ1bmsKKzYzNjE4IDAwOTExOWViNGQyZDgwMDE5ZTY4Y2Q1MjU4ZDQxYjc4MDRhNGQ2MWUgbGVnYWN5LXRydW5rCis2MzYxOSBkNjg4ZjNmN2M4ZGZkMmUwZTNjMWU1YjY0MzAxOWNmMGViZjlhNzI3IHRsZWUtYXN0LW9wdGltaXplCis2MzYyMCA3NzBlNGUxMzI3NzVhYTBjNWRhYTU3NTEzNzlkYzdiMjlhYjFhZjdmIHB5M2sKKzYzNjIxIDQ5OTA2ZDQzMmI0N2JhYjAzZTQxMmRlODhjZjY1YTNkZWJiYjVkNzUgcHkzaworNjM2MjIgNTYwYzk3Mzk4YjhlNTM0ZWY2ZDJkMTIwZWI1YzgxZDc2MGY4MDNiMSBweTNrCis2MzYyNCAzOGIxYTAxN2RiZjYwMDcxY2FmZGZjMDQ4NTA0NGVhNDRiYjVlMGRkIHB5M2sKKzYzNjI1IDgxM2UwZjhhNzQxZDU5YmQ1Y2E3YjY1MDU3NjU1ZWI5ZGQ3NDI1MTcgbGVnYWN5LXRydW5rCis2MzYyNiAyNmIzNTllMjM3YjU0ZDlhNmRiODA1MzJlNjQ4MzQ0ZTA4MmE0MWY3IHJlbGVhc2UyNS1tYWludAorNjM2MzAgNDZmMzUxZWU5ZDVlZDQxMzAzNGYyZTlmMzc1MzRmZjQxYTI4MWRjZCBsZWdhY3ktdHJ1bmsKKzYzNjMxIDdmZTNhODY0OGNlMjQyZjViMmQ2Y2JmMTcwM2JlZThjNGViOTQ2N2IgcHkzaworNjM2MzQgNmVkYzgwZDQyMDIxMTQ3YzUyYWJmN2Y5MjU3YmU0MjMxYjJiYjI1MiBsZWdhY3ktdHJ1bmsKKzYzNjM1IDkzODI2YjM1ZmFjY2U2NmJkZmUxYWNlNGEwYjc5ZDFjZWMwMjZlZmYgcHkzaworNjM2MzYgODI3MjU0Mzg0NTNiYTljZTY3YTY2N2NmZDA1ZjFjNDhhMmI1ZTllZSBweTNrCis2MzYzOCAzMTY2MTFmYjEyNjgyZjcwYjRkNTc2MTcwMDQ3ZDhhOThkYTY5ODBkIGxlZ2FjeS10cnVuaworNjM2MzkgNTExOWJjNzdiZDZkZGUzMzI1ODQ2YzkzMWU3MGRiNGIyNjAwMDA1OCBweTNrCis2MzY0MCA0MGExNjMwZWYyY2Y4NDYxYTFkMTZmNGE3OTZjYWJiZGU3OTQyZDIyIHB5M2sKKzYzNjQxIDdkZjRiYTQ4NDA1OGZkY2YxMTE5YTI0YTBhMDE3ZTc1NDUyNjFlNTkgcHkzaworNjM2NDIgMWM1MWFiZWI5MjVmZTY4NDVhYzJiYjRjMTA2ODY2MTY1YjMzMGY4ZiBweTNrCis2MzY0NCBhZTAxODY5ZjYyYmU4YmVmNWU2NjJiZDgyMDJlYmU0Mjk5ZmVhMWRiIGxlZ2FjeS10cnVuaworNjM2NDUgZDdiZjI2NjlmZTY2MDg4YTQ0ZjhmMjJkYjZhZjhmNzhlZmJmMjFkNyBweTNrCis2MzY0NiAwOGNlMTkyZjI0YjA0MjM1MmIzOWNiMDYwNDE3MTE2YzZkYmI0MDI0IHB5M2sKKzYzNjQ3IGY3NjJhOWFiNjlkZDE4YmU5NDAyZjI4MzBkZDM1YTc1YTljOGUzZjcgcHkzaworNjM2NDggYzlkNzE3YjViN2EyNDZjNGEyNmMzNjAzMGYwMjNlOTQwOTkwMDBjMyBweTNrCis2MzY0OSA2NTk1M2FlOTgxMjI3OTNkZjg3MzEyMWI1NjY1Mzg0YzY1NmEzYzlhIGxlZ2FjeS10cnVuaworNjM2NTIgOGMyZjVhYWNjMWJjOTgzYzBjNzQxNDg2NzQxNGQwOTJjZGRmYjhmNSBweTNrCis2MzY1NSA3MGY5YTVkYjI3OWMyMGYyM2UxOGY1MWNiNjA0N2NjYjFiMTQ1YWM1IGxlZ2FjeS10cnVuaworNjM2NTYgZjI4Y2JhYjExYWNkNzRjYjAxNzRmODFiYjc5NmQxOTE2MTMxZDcxYiBweTNrCis2MzY1OCBlMjQyMDI2MWQ0YTMwMGM1NTgxMWNhNmFkNzA2NTlmZjRmYjU0NWM5IG9ra290by1zaXplb2YKKzYzNjU5IDU0MTFiNmEyMjZlNWFiMTk1Mjg3NTcwZWE3YWFkMzk1OWMyZDRkZmMgb2trb3RvLXNpemVvZgorNjM2NjAgMGZkNTUzYWQ1M2Y2NDY0MTQxNmY5NDY0NmVjMGY2NjgwNGY0YTQzMSBsZWdhY3ktdHJ1bmsKKzYzNjYyIGFmYmRlMzYwZGQxYTk1ZGFmZmM2NDhjMGQ2YmUxZTNlMzkyNzc3ODQgcHkzaworNjM2NjMgNmQzZTEzMzBhM2FhODRhZDc0NjUzM2ViYTI0MzJlMzQ4ODk4YmJmNSBweTNrCis2MzY2NSBlNzI1ZmYxODM0MmIxM2ZjYWMwYWY4NmZiN2I3MWE3OTg5NDcwNzEyIGxlZ2FjeS10cnVuaworNjM2NjcgMzQ2YTk5ZGY1ODg5YWJhNGRjOTRkNWJlNDMzZGM5ZThiNWFjNmJkZSBweTNrCis2MzY2OSAwYTQ1NTA4MTQzMjA3ZGQ4MmFkNjI5N2Q2ZGM2YWRkN2U4MDhmZmNjIHRsZWUtYXN0LW9wdGltaXplCis2MzY3MCAwYjk3NDI1OGUxNWI4MzJmNWE2YjA5ZjE2Y2I4YjhmMDcwNjJhZmFkIGxlZ2FjeS10cnVuaworNjM2NzEgYjllYWI3NDliYTY2MDA3NWZiMzM1Yjk5MjFmMWNjM2I4ZGNkYWViZiBweTNrCis2MzY3MiAwNGJkMzY5MGZiMWZlNWEzODE1NjRmNjVmZmQzMTQ3ODZhOGZlYzliIGxlZ2FjeS10cnVuaworNjM2NzMgYWJhZmNjZmU3NTAxYzIzMWNkODZiYjNlNDRiNDExY2I2NjMyMjU2NSBsZWdhY3ktdHJ1bmsKKzYzNjc0IDMyNjRhYWY3Y2YzMDNmMDViYTcyMmZkMjNjZDIyZTJiMTlmNTFiNWUgcHkzaworNjM2NzUgNGZlMTkyZDQ4OTYwMzJmMzU2MDYwMDVjZGRmMWExMWM1M2NkODNkOCBsZWdhY3ktdHJ1bmsKKzYzNjc2IDY1M2QwNGYzMDQyODc3MWQ2YWRhNTRiYmE2NGRkODI5Y2M1MzBhZTYgcHkzaworNjM2NzcgZTkyMzlhZDdiOGMwNzAyN2NkYWI5ZGU1MDM4YjRmZjYwOTg4NmY3NyBsZWdhY3ktdHJ1bmsKKzYzNjc4IDRkOThlYmFlZDI3ODM2Zjc3MmE3Y2MyOWM3YjA3NmM0ZWMxYTZjODcgbGVnYWN5LXRydW5rCis2MzY3OSAxOTRiYmYwNGIwMTU0NDI1YzE1M2VkOTM3M2IyOTRkZTc0ZTY5ZGJmIGxlZ2FjeS10cnVuaworNjM2ODAgMmNjYjM0ZDUzN2RiNjRlNjUwZWMxZTAzYTM4NTY2MjVlNGIyOWNiNCBweTNrCis2MzY4MSA5NmIzNDI2M2U0NDhkNGNiMzdmNWZhYTJlYTIyOTMxNjQyNDdkODBmIHB5M2sKKzYzNjgyIDIzYWI1ODZjNDI3YTM3ZTIxZjYxZGUyNzZmMDMyYTJlMmQ4MjA1ODYgcHkzaworNjM2ODMgODExYTgwNjUxMjMyZThkMDg1NGVmODI2MjhjNjU2ZjBhNzA2MmY1NCBweTNrCis2MzY4NCA4Y2MzYWQ4YmY3YzRlNjdhZDM5NmU3MTA3Mzg1ZWYxZTJhYjc3MTQ3IHB5M2sKKzYzNjg1IGUzZTBjMWE2NTIwNDlmZTlmZWM3NWZmYTc1ZDE3MDNkNWMwY2IzNmMgbGVnYWN5LXRydW5rCis2MzY4NiA3MDhhNTYxMjc5Y2FiNDYxMWMwMGQxYzNmNDk3NDBjMzA3YzlkMDMwIGxlZ2FjeS10cnVuaworNjM2ODcgOWEwZDRkYzA3Yzg5NTRjYWJlNDg3OTNkNjAzYjE5YzVjZjRlNjUzNyBweTNrCis2MzY4OCAzNGU0MWY0ZTk2MmYxNGMxZGE1NWQ0OTRiNTM0NjE2MDk1YjM3NWFkIGxlZ2FjeS10cnVuaworNjM2ODkgNGFiM2U3YWM4YmY0YWEzNjYwNDIwODE3ZGM2NTU0NDJhZDg2NjgyZiBweTNrCis2MzY5MCAxN2I4ZjQ0NWQwNDMxZWQwZmM5MTZkMTgwMjY1YzA3OGRmMmIwYmJmIGxlZ2FjeS10cnVuaworNjM2OTEgNjYyZDE1YWY1MmRmNjY2NTRlYjU0NmVhYzhkYmI4YmZiN2ViNWI4MyBsZWdhY3ktdHJ1bmsKKzYzNjkyIGE5NDZiZjc2NjY1NDQwODY1ZDAyZjhkNDE0ZWQyNTdlNDc2Mjc5OGUgcHkzaworNjM2OTMgY2U5Y2RjZWJhZWYwMjQ3YmI4YmFjOGY2YTFhNjA4YjE1ZTJmMDhkZCBweTNrCis2MzY5NCBhNmQ2MTc3MDg2NjVhZjY3ZGVjOTBhNjkxNTEyNzI4ODEyYWU2OGJjIHB5M2sKKzYzNjk2IDcwMTA0YTNlMWQ5ZDM5OTkzMjQyYzdhZDhiYjVkNjdiM2MwODc5NWQgbGVnYWN5LXRydW5rCis2MzY5NyBiZGExNTg1OWY2NThmMjIxMGZhNThjZTlkYjU5NzE2MTJhYzczNDQ3IHB5M2sKKzYzNjk4IGM1NjA0YmU3YWNkZmUwYTM3NzliMmFmYzUwNGZkOWM4ZTU4NzE2ZTYgbGVnYWN5LXRydW5rCis2MzY5OSBiYTgwMTVlMjM0ODcyMDU0NDNjMmI1NjRiMWI4YzZlNTI2ZTQzZGE2IHB5M2sKKzYzNzAwIGUxZmNjMzg4MWNiNjg3NWI0ZGY3MWMxMzEwZTE2NGMzZGZhZjVhNzEgcHkzaworNjM3MDIgZTAxN2UxZmRlMzY5MmUyOWVhYjAwOWY1ODRhZDQ2ZGE5MDBiNGE1ZSBweTNrCis2MzcwMyAzOTc1ZWMyYjBkZTJhZjI0MjU3NWE5OTM5NDA5ZmNhMzg2ZjZmNjY2IHB5M2sKKzYzNzA0IGZjZDQ1NmFlNTE1YmE4ODE4NmQyMTY5ZjcyODBiZTYxYTJjZDdlMGYgbGVnYWN5LXRydW5rCis2MzcwNSAwMjdjODg3ZTlkYTkyMzY4N2ZhNjdhODQ3OWU0Njg0MjkwYmIxZmIyIHB5M2sKKzYzNzA2IGJjNGRmNTFjMDFkNTI1NTE3MWVkNjJmZTk0Y2I1NDhjMmU4YjE2NDcgcHkzaworNjM3MDcgN2M1YjVmMGViMzBkOTUwYjhmMGU1MTJmOWJlMDVmM2I3N2QwNjI5YiBweTNrCis2MzcwOCBkYmQ5YWQ1MmI0ZDBlOWZjZjEwNzE5YjJiNWM0Y2ZkMzczYTMzNzkyIHB5M2sKKzYzNzA5IDc5YzdlODQ4ZWExN2NjOTFjNTI2NWZjNWVlYmQ2M2ZlMDE0ZDYwZjAgcHkzaworNjM3MTAgNmI5NzNkOTM2YjA3OTcxNjBjYzE2YjVlNDcxNTY4ZjU2ZWU4YWViZiBweTNrCis2MzcxMiBjMmEwYTcwODQ2MmViYTI3YTFiMzUwMzBlZDNmNTQ2MGVlYjc4ODQ1IHB5M2sKKzYzNzEzIDA2MTkzZTNkZjQxNmY1YjI3MmM5ODVkZjU1MzUwM2NlZjE5ZmUzZjcgcHkzaworNjM3MTQgOGZmMGI5MjVlYTY0ODg1OTk1NmQ5OWI2MWFkZmNjNjk2NGE5MGE5ZSBsZWdhY3ktdHJ1bmsKKzYzNzE1IDA1MjVjZDViMjU4MjkwMDY4ZjdmZGNjZGJiZTM0YjdiY2FjYzJjY2YgcHkzaworNjM3MTcgNmYxYTYzMmNiMmU1MzJiODNmOWNiNWI3YWY5NzhmZDJjZTEyYjZjNiBweTNrCis2MzcxOCAzYzcwZDY4YmViMzA5NTdhOTc2OWM3ZjBhM2ZlZmUwYzgwMjkxOGZkIGxlZ2FjeS10cnVuaworNjM3MTkgZjYxYjZjMzEwMDFjYjVmYzYyMGU1MGZhMDMxYjMwMjYyMzA3ZWQyMSBsZWdhY3ktdHJ1bmsKKzYzNzIwIDc4OWUwZjE1YzM3YjZmNjI3YWE1ODU4Y2NiZmMzOWExNWNhNTE0NDMgcHkzaworNjM3MjEgMmY5MzE5MTY5ZmVjOWM2MzBkODMzOGYxOTRiMTUyZTZlNmNmYzY5ZSBsZWdhY3ktdHJ1bmsKKzYzNzIyIDU5N2Q4ZmQ1NjkzZTQzOTYxNzBhNTUyYWRkMzZjMDBjYWFiODI1NGEgcHkzaworNjM3MjQgMjczZThkZTM0NjAzZGNhMjdkZWM0NTUyNmMyMzIyYWYyMDVmYzJjOCBsZWdhY3ktdHJ1bmsKKzYzNzI1IGM0YTQ1OGVjZDJlZDdmMDAyZTFkYzBhZGJjMjIxOWNlYjYyMDc5MjQgbGVnYWN5LXRydW5rCis2MzcyNiBmNmM4OGYxNzJiYmVjNjhjODI1Njk4YzhhZjZmMDE1NGE1ZmUzODkzIGxlZ2FjeS10cnVuaworNjM3MjcgYzkxYjM3ZGJiYTNmMThiZGMzNjA0NzYzMjk4MDA2ZjlmYjMzNzUzNiBweTNrCis2MzcyOCBhOGNjOGU2ZjBjMWE2OTAwYjQ5ZDYxNWVjYzE3MWQ1ZjU2NGMyYjBmIGxlZ2FjeS10cnVuaworNjM3MzEgNjFhNTY5N2E3NjI2NTFmZmVlYmQxYjY0ODAyYjdjMjQwMDc2N2U2YiBweTNrCis2MzczMiAxNDc0ZjI1MTI4YzQ0ZWNhODAzYTNlOTUwYmRkMjYxNzg3YjgxMWE2IGxlZ2FjeS10cnVuaworNjM3MzQgZTFhNGJmOTFiMmFlZGM0MGU0ZDBiYjU0MzBhNTY2YTFhNGM0ZGJlMCBsZWdhY3ktdHJ1bmsKKzYzNzM1IDIzMzc5Njk1YjRkYjI4MGM0N2RjYmU1MzEyNDlkYjY5NDRiYzUwZTIgcHkzaworNjM3MzYgMzQzYWFhYTgwMmU4MTA0MmU1ZWM5ZDU3MTBhNjVlY2ZhOGM5OTNjNCBsZWdhY3ktdHJ1bmsKKzYzNzM3IGRjMjdiM2I0NmYwZGZjMjBjOTVmYTg2NjI0MTMxNjE2MmZmOGUzN2MgcHkzaworNjM3MzggZTQxMDQ1OTdjMmEzZWY3NjJkOTYyMWJiNTk5MjRkNTc1ZWJkNGQ5MCBsZWdhY3ktdHJ1bmsKKzYzNzM5IDUxYzYzYjdlYzFhOGJjZWE4NDNjOTY1YTdkNDNhNmJmZmIxNTVhMzIgcHkzaworNjM3NDIgNTAyZTcyZjI4ZTllYzdkNTUyNDBlNTFkYzNhMjE4NTRlODlhY2IzNSBsZWdhY3ktdHJ1bmsKKzYzNzQzIGY5NGFjYWI3OGFhOTlkN2JlMzUzZGY0MTBiZjYyODg0MjNjNjY3MmEgb2trb3RvLXNpemVvZgorNjM3NDQgM2VhYTcyMzY3MTNmYTE3NjVmZmUzNjJmYWMwZDYwZDk1YTRkYWMzMiBsZWdhY3ktdHJ1bmsKKzYzNzQ1IDRhN2YzNDgwZjQ1NGRiNzY3ZGUyNDI0ZjkwNGM3YjBlNzM5OGY5ZGUgbGVnYWN5LXRydW5rCis2Mzc0NiA0ZDNlOTUzNzNkOWUyNDBmMTVkNjNjYjZiNWE4MzZiNGE0NjlmYTVkIG9ra290by1zaXplb2YKKzYzNzQ3IDQzNGYxZDVhY2ZlNGNlODVlYzNkOGZjM2MyN2UwZGQ0MGQ2M2MyNDggb2trb3RvLXNpemVvZgorNjM3NDggODQ5NDZmNDU1M2YxMzk5ZmY1YTdiZjU4ODAzMmNhNjUyNDRlMzUzMyBva2tvdG8tc2l6ZW9mCis2Mzc0OSA0OTNiMzJjN2QxMjEyMjc3Y2NmOTBkMTM1N2QyZWViMGM0MWY3ZDg3IG9ra290by1zaXplb2YKKzYzNzUzIDRlZTI5ZmZkMjg1Njg2NWE1NGExZTU0ZjJlOGFmMTNlY2QwODE5NmQgcHkzaworNjM3NTQgNzdmOGFlOGZjNzBiNGEwOWI1NWJjOWMzNTc3OGQwMDcwMGY5YmRjNiBsZWdhY3ktdHJ1bmsKKzYzNzU1IDY3ZjRiNzc2N2EwYWIxMWFhZDNhNjY5Njk2NTQxNTc5OWMxMzFiYjcgbGVnYWN5LXRydW5rCis2Mzc1NiBiOTdkZDU4ODkyNDY5OWZiM2I1ZTIxZGI1NDhiY2Q5MzkwZjRmNTE5IHB5M2sKKzYzNzU3IDkzZmU5MTNmYWU1NTQ3YTE5YzIxM2Y2MDJjNzJiZjMzOTc3YTQ3MDIgbGVnYWN5LXRydW5rCis2Mzc1OCAwOTA2NWIwMTBjOTUwOGE3NzljMGMzZjEwYTAxZThkM2NjMWEzZjNjIGxlZ2FjeS10cnVuaworNjM3NjAgN2FlNzllOTZmYzQyZjhmM2VmYTA5YTgwZGM4NmFkMjU1ZDk1YWNmZSBsZWdhY3ktdHJ1bmsKKzYzNzYxIDEyNTI0N2VjZTU2MjUyYTY4MWY1ZDI1YjEyY2IzNjM1YzAzOWI3YmQgb2trb3RvLXNpemVvZgorNjM3NjIgYTFjYjU0MzA5YjRkNGY0MzYwYThkYTJiMTUwOTRkMDU5ZGY5ZWZlOCBweTNrCis2Mzc2MyBkY2Q2YmZiMGRiNDM5YzlkMTY3YTdhYTQyNDJkNmViNWUxODBkMDUxIG9ra290by1zaXplb2YKKzYzNzY0IDIzYjk4ZjdlZjQ1NDc2Nzg3YjEzMjEwZGZhOGU4YjhkZWEwMmM4OWIgb2trb3RvLXNpemVvZgorNjM3NjUgNzlmMzEyN2YxZDcyNzBkZWIwNjEwODRlZDdjZjhkMjg5NWE3YWU0NSBva2tvdG8tc2l6ZW9mCis2Mzc2NiAwNzJiZmJiNjU0ODQ4NWU0M2FiM2ZiMzg5YTgwYzAzOGUwMTM0MTQ2IG9ra290by1zaXplb2YKKzYzNzY3IDE1Njc0NmE2M2E1YzhmMzMyN2M4YmVjYzc4ZmYyNTI1MzdlNDNjZjMgbGVnYWN5LXRydW5rCis2Mzc2OCA3NjUyOTM2ZmFkMzlmOGI3ZTBmNmJlZDMzZWUwMmU0NzNkZmM1M2ExIHB5M2sKKzYzNzc1IDVlMjNiMGZjYzc4ZWU2YTQzZGM3ZTMyN2VmM2RhMzhlOTE4ZWE2Y2EgbGVnYWN5LXRydW5rCis2Mzc3NiAyOWM5NTM2YzA0YWQ0ODc2OWVkOTczNmJhMjc3YTQyNzRiNjA2YmZjIGxlZ2FjeS10cnVuaworNjM3NzcgYjZjYmVjNDk5NzU2MjJkNjk3MjdiYzM5ZTQ1NTFhNzczYzU1YjMzMyBweTNrCis2Mzc3OSBiMTRjNGI1YmFiMDhkMzZmZmI5MjUyOTYwZmFkMzBmMGNkNDUxMTRkIHB5M2sKKzYzNzgxIDAwMTU0NTY3ZDU5MzViMjg0Y2FjMjU3MzJiZTg5ODhlMDM3MzIxN2EgbGVnYWN5LXRydW5rCis2Mzc4MiBlZjUxZmNkYTM0OGJmOTIzZGQ5ODJlYTcyYmIyMzY2N2MwNjAxMjIzIGxlZ2FjeS10cnVuaworNjM3ODMgNjNiNDc0NTU2MWMzNDM2ZWY1ZDcyMDNhYmRkMzZmOWM1OWZmYzg2MyBva2tvdG8tc2l6ZW9mCis2Mzc4NCA5ZTZlNmI4MTdmMzIwMmUzMGRiY2M4ODQ5NWFmYTY2NWZlMzEwNDRiIGxlZ2FjeS10cnVuaworNjM3ODUgZmIyZDliMGI0NDcwMzJhMWY3ZGFmMzgxZjVlZmQ5Mjk5NzllMGQ0YyBva2tvdG8tc2l6ZW9mCis2Mzc4NyBlODFkMDJkMDk2OTc0ZjEzMDVlNTI0MTQyMTM5ODIwOWQ3MDFhODY5IGxlZ2FjeS10cnVuaworNjM3ODggZTJjNWFlMzBjZmZlYWNkNDhhMGVmZDU2MWQzZDIxNjc1MTFlMDY2NyBsZWdhY3ktdHJ1bmsKKzYzNzkxIGM1OTVkYTA1NWZkMDkyMjEyZmFhNmNkNTYzODExZTZjZTM1ZTY3MDIgbGVnYWN5LXRydW5rCis2Mzc5MiBjOTBjZGQ4MzU5NjA2ZTQzNzE3YmEwZDk4MDE4ZjBiMTgzN2RiMzkzIGxlZ2FjeS10cnVuaworNjM3OTMgMzk4Njk4MDNiZmFlZWRkMDYwNDNjZTQ3Mzg0OTU2ZjgwMzk1MDkxYSBweTNrCis2Mzc5NSBhZWEzYzU1NDNkNDNmMmI5ZDUxYzM3ODU2NzgzYmRjZDI5YjRlOTUwIHB5M2sKKzYzNzk2IDM2NmE0MzU1MTFkZDVkNGFjNDA1OTQyMmQwMjQ4ZWQ0OTlhMDhkMzUgcHkzaworNjM3OTggMWQyOWJmYTI3MzY4MWI5NDJhZDg4ZWM4MTJlNWEyZjQ0Y2Y1ODQwNSBweTNrCis2Mzc5OSA5MjJlNWEyNGNjODJlOWVmZGE0ODg2NzgzMjk2NmZlN2VlNzA1OWVhIGxlZ2FjeS10cnVuaworNjM4MDAgMjM5MWRhNmM0MmVmMDhhMTZjNzFjZDZhNmI4ZGMxMmM2NDM2OWQ0NiBsZWdhY3ktdHJ1bmsKKzYzODAxIDI2M2ZkNmZiYWNhYzU4NDVlOTQ2MjQ0MTMxMWRiMWMwMmI4M2JiYjcgcHkzaworNjM4MDIgODgyYWExNDY2NWU0N2YxZmQ4ODA3NzgyZDA2NDQ5MThhNTAzOTU1MiBsZWdhY3ktdHJ1bmsKKzYzODAzIDAxOWQzYjExMGE2ZWVlOWE0YTNkNjY1NjQ5NDU1MjMxZmE5ZjZlMmUgcHkzaworNjM4MDQgY2Y1ZjI3MzFmYzU2MDcxOGMxZjM5MWJiM2I5ZjFiMjNjODViYzIwMyBweTNrCis2MzgwNSAxZTFkZjg5MjA5NWE3MTQxNTQxMDQ1YTQ2YTY2ZTYwYjY1ZGI4YWQ4IGxlZ2FjeS10cnVuaworNjM4MDYgZWEyNzNjOGUzZWFhMzA1NDQwZWRmMWUxMGVkMzYwNGZmYjZiMGM1NyBsZWdhY3ktdHJ1bmsKKzYzODA3IDMzODY1YmI1ODM5NjJmMjUzMDU2OWE3YTQzYmY1ZGE3Mzk3YmEwMDYgbGVnYWN5LXRydW5rCis2MzgwOCBkNjYzOWNkOTU3NWZmMjBhZWVjMjlkMGM4YTBkZGU3NzA2MzVhMThiIGxlZ2FjeS10cnVuaworNjM4MDkgNmNlNDQzNWYxNWFkNGU4ZWRjZjlmMjg3NjVjZjJhMDgwMGRjNGFjNyBweTNrCis2MzgxMCAwZTkxNjkwZGFlMmY2Mzk2Y2FmNDIxOGNlMjQxN2NjNWU5NDQyZDE5IHB5M2sKKzYzODExIGVjYTg4MjczMTE5NGNkYWM0MTUxM2U3NjA5NDM5OWM5ZjA4ZDZhMzcgcHkzaworNjM4MTQgNDdlZjlhODA2Y2U5N2JlNzY5YTQzMTE1NDI1ZTg0ODdiMTA2OTc2NiBsZWdhY3ktdHJ1bmsKKzYzODE1IDBkYTI3ZmRmMDE5MjA1NzQ4ZmM2NjgwN2M3ZTZiMGViOTUyMDgwMmIgcHkzaworNjM4MTYgYzQxYzM5NTQ1OGViMDI4YzFmODQ0OTcyYjA4Zjg0MTQ5YTg3MDkyNCBweTNrCis2MzgxNyBiYmEyOWY0NjJiY2M2OTA0OTczYmRlZDE3YzgwZWNmOGQ0YWRkYjNjIGxlZ2FjeS10cnVuaworNjM4MTggMTA1YWQ2MTMyNWFjMWMyMmEwYzUwODgxNDI5NjNkYjk4Mjg3YWY5YiBsZWdhY3ktdHJ1bmsKKzYzODE5IDIxNTEwY2MwYzJlNDJiN2JmMGI1NzdmMGMyOGYzZDVjY2FlZmNhZjkgbGVnYWN5LXRydW5rCis2MzgyMyAwYjI3Y2UzYzZiMjFjOWNhZjc4Zjc0NjU0ZTFkNzFiODVhOTU3ZTBkIGxlZ2FjeS10cnVuaworNjM4MjQgM2RjZDcwMDA0Njk2ZmRmODczMzA0MTE5MDVkOGMwYjFiMGI2OTBlMiBsZWdhY3ktdHJ1bmsKKzYzODI1IGEyZTcyZWNkYmUwMmJlODdlMDg4N2Y0NzA3OTM0ZTk4ZDkzYmMwNzkgcHkzaworNjM4MjYgYzA0YWE0YWFiZTE3ZWJkOTVjOGM4ZGUzNzEyMjZlZmE1YjE5MTQyOSBweTNrCis2MzgyNyAyZTg3NjlkNWE3ODZiOTU0NGMyZmI5NDg2ZDJkMGJkMWVhOWI1ZjIxIGxlZ2FjeS10cnVuaworNjM4MjggZmY2Y2M5ZDRmZmQzNWFlNTFhYzFmOTZhMDNkNDNhNmRmMWE1NjAzMiBsZWdhY3ktdHJ1bmsKKzYzODI5IDAzYWZlNjk4NWU1ZGY3ODAyMDZiMTkwNTg4YzY0NDQ2ZTRlMjA5MGMgbGVnYWN5LXRydW5rCis2MzgyOSA4MmE0N2Q3OGQyNzhiOTc2MzViNTEzZWJiODlhOGFmNTFmYmVhMzQ4IHB5M2sKKzYzODMwIGFmMzY4NWZhOWNhOTE0ODI1NjUyYTRlNWJkZmQ2OGRhYjc1NzdkODUgbGVnYWN5LXRydW5rCis2MzgzMSA1MWE4NjUzMTI4ZTNhZDVmMzlkNTY2M2VhZGQxNTY5YTJiZjNkNTk0IGxlZ2FjeS10cnVuaworNjM4MzcgYmVlMjcxZTc2YTNlNTMxMWI3MTJhZThkMTdkMjJjZWRmZTNlMjJhMSBiZW5qYW1pbnAtdGVzdGluZworNjM4MzggMDc1YzZiZDIwZjA3ODA0ZGI2ZmY5ZmU4ZTNjYTQyZDg0Zjk0ODYzZiByZWxlYXNlMjUtbWFpbnQKKzYzODM5IDAxNTZjMzM2ZTZiM2Q1MWVhYmY2YmE1NTI2NjNmY2U3NTlkZDU1NDcgbGVnYWN5LXRydW5rCis2Mzg0MyAxYmRmMDc0MDk0MDNiNGI1NTc4Mjg3MWU2ZGExYWFhZTZkMzYyYjYyIHB5M2sKKzYzODQ0IDJmNWVkZTAwZmE5ZWUxN2FhZjQ0Y2ExMWQ0ZjE1NDJmMTgxYmQzMTIgcHkzaworNjM4NDUgYzRlMmVmMDlhMmYwNGIyOTc0MTRjOGE2Y2YzNDIxNmNmNjAyMzZjZCBweTNrCis2Mzg0NiAxMDYyYjdkZWM5NWI3YTY3YTBlZGM5ODlmYjFkOTY0ZWMyNjFjNmUxIGxlZ2FjeS10cnVuaworNjM4NDcgZDIzNjJmOTlhNDAzNjhjODk3YjUzMzQyNmQyMDJjOWI4ODgwYzBlMCBweTNrCis2Mzg0OCA2MjJjYWJiYWYyYmNlOTk3ZjU5YmRjYWYxYWUzMmVkYjhkYzAxOWMxIGxlZ2FjeS10cnVuaworNjM4NDkgMmE2M2FiMzU5NWExOWUyOTMxZDNiNGQ5YjgyMTQ1ZGZiMGVhOGYzMSBsZWdhY3ktdHJ1bmsKKzYzODUwIGVjZjJlZDA5NTg4MTU1N2U2YjI4YTc5NGIwOWUwM2Q1NDM3ZGYxNzkgcHkzaworNjM4NTEgYjEzMDQ0ZDU1NGFmZGIzMTIwODFkZTFjNDg4YTBjOWUzMjQ4MDhkYiBweTNrCis2Mzg1MyA4M2ExMDAwMmZlZGJkYTg0OTQxNjAzMjk0OGQzYjU1YTYwODc1MTU5IHRsZWUtYXN0LW9wdGltaXplCis2Mzg1NCA2NTMwMjY0MTQzNzZjODNhNmNkOGU4MzY4ZDEwNTU3OTEyZTA0NTI0IHRsZWUtYXN0LW9wdGltaXplCis2Mzg1NiA4OGJkMDdjMGE4NDdkMDM0MTE3NGUyNWU4ZTY4NDZhMGJmMjRhNzM2IGxlZ2FjeS10cnVuaworNjM4NTcgYmVhM2MxZjUyZTA1Yjg4NzRlYjAyMDExM2IzN2RjYTlhODc3YzJiOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTggZTg3OTdlNmUwN2E3NDA1ZWM1MDUzODU4NjQwZjFjZmUzZWRkOGViMiBsZWdhY3ktdHJ1bmsKKzYzODU5IGE2NWYwOTViMjdmM2NjNDA4NTZjNTE3NmE1NDE1YmJmOTBiYmU2MTIgbGVnYWN5LXRydW5rCis2Mzg2MCAzNzAyNzI5YTI0NzA3M2EwNTI4ODA4NWI1NDY5ZDk5MzQ1NTMwZjQ0IGxlZ2FjeS10cnVuaworNjM4NjEgZmNmOWQ5NWVmNTBkNzhiMzMxZjRjODYzYTE0MTIyM2JmZGFlN2MyMiBsZWdhY3ktdHJ1bmsKKzYzODYyIGNmYjU0OTEwMDFkMDJhZTRiODE1ZjNhNGFiZDM3OWZmNTJlYTNjZWUgcHkzaworNjM4NjMgZTdmMGZkODM1OGY1YWVmNzQxNzk4M2RhYjMwNWZkMWNhOWNiYzRlYiBsZWdhY3ktdHJ1bmsKKzYzODY0IDRkZWRlZjRjMGRmZDI5MDkyNTkwNTEzMmQ2NjZjMGNiNTE1ZDQxNzMgcHkzaworNjM4NjUgYzBmZTU0YTAyOGUzNjU5MjAxM2FmZmNlODRkNWZkZWI1M2Q1YTU1NyBsZWdhY3ktdHJ1bmsKKzYzODY2IDMxNDc2ZGI5OWFjMzFmZjJhODQyYzhkMDVhOTg5ZmRlZGM3NmFkNDcgcHkzaworNjM4NjcgMDZkNzg1NmNhOWY0NmE4ZmViOTRhMmNhMTE5NzJjMjM4NDRiZDIyMyBweTNrCis2Mzg2OSA4MjNiZTRhMjc1ZTJiOTllMTJlMTgyY2ZhYWIyZDk0ODkyNjYxZWQzIHB5M2sKKzYzODcxIGMwZDYxNmYwYWQ4NjM5ZDJjNjA5Zjg4OGY3YzZmZjA5Y2JjMzVlMGYgbGVnYWN5LXRydW5rCis2Mzg3MiAzMWQyZmY4Njk2YmRjOGVjMjBjOTM3ZjQyMmUxOGU4YzlmZmQwNjRiIHB5M2sKKzYzODczIDBiZjA4ZGUzMzlhMGQyMTAzYWYyMTQ5YjBhMzQ2MTdjMjg5NmFmYWMgbGVnYWN5LXRydW5rCis2Mzg3NCBmMTUwMTc3ZmYxZmY3OTRkMjlkZDNjYzQ2NDExMDJlYTVkNmQ5NDViIHB5M2sKKzYzODc2IGViYmY4OTUwNTZlYThhY2YxMWU1N2M3OGM5NTZhNzQ1MDBkMzY5MDEgcHkzaworNjM4NzkgYjZkZDQ5ZWUwMzViNWQzZDZhOGY4YzA0MGM4MTRlMGFiZDVjNWYxZCBsZWdhY3ktdHJ1bmsKKzYzODgxIDY0MDQ0NDZlNWFhMzZiMjEwYjc4ZmFiNDlmODVmN2NlNmIyMjI5MjQgcmVsZWFzZTI1LW1haW50Cis2Mzg4MiA3ZWFhYWQwOWI2Y2RkNGI3ZDk4NmJmYjllZjI1OGQ3NjVhZWY2OTIzIGxlZ2FjeS10cnVuaworNjM4ODMgN2Q2NjExMDQ2NDA0OWIxMDJhMGVlOWY5NjMzZTRiYTgwOTQyNDgyNiByZWxlYXNlMjUtbWFpbnQKKzYzODg3IDEwMGUzMjUwOWI1Nzc2NTM2Y2E2ZGNhYmZiMjI2NGQwNDQyMWNmNTcgbGVnYWN5LXRydW5rCis2Mzg4OCAwNTgwNTMxYzM3NTU1YWRlODMxZWY3MTI2YTg3NGUwYWE3MDIyYmM5IGxlZ2FjeS10cnVuaworNjM4ODkgNWJjN2RhNjUwM2IwNWViNzc2ZTE2MTRhMzlkNjJiOThkOTYxYzE5YSBweTNrCis2Mzg5MCA3OTM3M2UwNzBkNDg2MDA5ZWZhZDkyZDExODVjNmNlNDVhYTY5MWFkIHB5M2sKKzYzODkxIGJiMmM0YmRjM2M2ODNiNDhmYTllOTViZDgyODNmZDk0MDQ4YzI0YmQgcHkzaworNjM4OTIgMWYyZjE1NzdhZTc4MTljZGIwNGY0MTFiOTNhZjI2YmY1OGFiNWU1OCBweTNrCis2Mzg5MyBiNmI1MzRiODI4YjMzOWJiZDZlZjdiYTAyMjVmYzhlYmI5MTEyYzAzIHB5M2sKKzYzODk0IDY1YTYwNjA4YWI1YTU5YjAyODQ5M2NmNzU4ODRlMTk1ZTQ1YWI5ZTAgdGxlZS1hc3Qtb3B0aW1pemUKKzYzODk1IGY5ZWJhY2FjZTM1ZDNjYjU3YzY5ZWFmYzVlMDQ3Y2VhMWI5YWQ5OWYgcHkzaworNjM4OTYgZTBjYTAyMThmZjMzYzAyNGI1MWMyMTRiNTAxNmUyYzljOTQwMjk2MCBweTNrCis2Mzg5NyA0NDQwMjQ3YjhhNDQ4MWRmZTZlNGYzZjAwNTEwNDQ4ZjNmMWQwZTQ5IGxlZ2FjeS10cnVuaworNjM4OTggNzcwODhkNDFjNzkwMWZjZDBhMDFiNDQyNTk1YTZmMWRjYTExN2ZhOCBsZWdhY3ktdHJ1bmsKKzYzODk5IGVkNDcxYTgwMDlhNjMxOTFmNGRjYTliMzU3ZDgxYmRkMzQzYzg2MTkgbGVnYWN5LXRydW5rCis2MzkxMCA0N2ZmMjRiYzYxMTY1ZDJmMzI2NzgxOTQzMmIxNTkwNDY5MTk4YjZjIGxlZ2FjeS10cnVuaworNjM5MTEgYzIzZTZkNTMwMGEwYTI0YzRhNTExMWEyNDU0ODg4YWE1MTMxMmE4NCBweTNrCis2MzkxMiAzOTk5MTllNjFkMjM4YzIyMjBjM2NmZjhmMDAzMzFlMmMxMzBkNjNjIHRsZWUtYXN0LW9wdGltaXplCis2MzkxMyBmNzNlNmY2ZDliYTY5N2NhOTI3ZTNkY2IzNDlkYjhmYjI4ODBhNzM3IHRsZWUtYXN0LW9wdGltaXplCis2MzkxNCA1MzUzYjU1MGM5NjkyY2U4ODdkMjYwYWRhOWQwMDQ1NWM5Y2Q1YmRjIGxlZ2FjeS10cnVuaworNjM5MTUgYTc2ZTQ5YjIxOWEyY2EyYzc1NGU1NTQ3NTk2NjI5NWUxZGU2NjY0OCBweTNrCis2MzkxNiA4NmVkOTc5ZGU4OTg3ZmIwZGMzMThkMmUwOTdlZTQ2OTEwNGNhM2NlIHJlbGVhc2UyNS1tYWludAorNjM5MTcgMzI1OGJiZmM0NTZlNjc0YzFhNDg4NGEwNDA4ZGNkNzlhNzA1MmY4MSBweTNrCis2MzkxOCBlNGExODY0Mzc0NDA0MmI2MzE1ODNjZWU4ODZhMTgyZjRjYTc3MTg1IHB5M2sKKzYzOTI5IGVmMGNjY2RlOGMyNDVjYjU1NmY0MjFmMzIwZjlhNjhjYmJiZjQyYzcgbGVnYWN5LXRydW5rCis2MzkzMCA1NzJkODFlY2YwMGQ2MGUzZDZmZDllNWQyOGY0YTFkZmY5MDE3NGIwIG9ra290by1zaXplb2YKKzYzOTMxIGY4MjExNjYwMGMwZjE4MWJjYjUzOWZiODU2NDY5NDZlODkwMzZkN2Igb2trb3RvLXNpemVvZgorNjM5MzIgMmExYzY5NzhkYzU3NjEwZTA1Zjc2YjlmNTFmNDcyNWY1ZDJjMTQwZCBsZWdhY3ktdHJ1bmsKKzYzOTMzIDIxYmViMGQ1ZTMyOTk1MjRiMWE0OWYyZDk2ODc1NzNhOTZiZWY5YTMgcHkzaworNjM5MzQgZDU3YWE3NTJhNDAxMTgyNzdmNjBhMWQzOTY1MjdhOWIyMTg4MmUyMCBweTNrCis2MzkzNSBkMGY3ODNiYTc2NjlhMzBjMTFiYWUxZjEzNWFhODBhYmJlY2UzMGQ4IHB5M2sKKzYzOTM2IGE2NTYxOWFkNTlmMjg3MzhiYzVmYzY5ODcxNDBhMTRhMGE3NzFlZDQgcHkzaworNjM5MzcgOGZjYzllYzE4ODI0NjNhYmZlMTlhYzkxYmRlYmJiOTQwZGM4NTViMSBweTNrCis2Mzk0MCA1OGY0YjYwNzczZmU2MDdjYmVjOGNmYjc1NWJlNDg0Yzc1MzJhZDQxIHB5M2sKKzYzOTQyIDhhZDRlYmRiZDM3M2FhNzM5MzQyODJjNTIwMzllNDZkYjExMDYzNTIgbGVnYWN5LXRydW5rCis2Mzk0MyAxMGZiMmRlYzM2NjViNGI1ODczMzYxYzRlZWM1MGMyMTBmMTUxZjU0IGxlZ2FjeS10cnVuaworNjM5NDUgYjBkNDc5OWIwZGI4NDRlN2Q3MWE0OGQ2NTUzZThlOTQzZjQ3MDlkYyBsZWdhY3ktdHJ1bmsKKzYzOTQ3IDg0ODBmNTRmY2Q2ZGY0YzMyNGEyZmQ0ZWIxZWIwNDIyMTkxZWRiZTEgcHkzaworNjM5NDggNzFiZWQyMDhmZTUwNDI0MmRmNzM5ODM0YTVmYzc0M2I3N2RhNTY2NiBsZWdhY3ktdHJ1bmsKKzYzOTUwIGU5NWMxNWJiOTk1MDJiN2MxNzg0ZThmNmIyNWJiYmYwYTIzODBkYWYgcHkzaworNjM5NTUgYzM0ZTM0MDU3NzE0YTAxMWFiOTc4Nzc2MDc4YjdmNmExZmY1ODg2ZiBsZWdhY3ktdHJ1bmsKKzYzOTU2IDQ1NGM3YjBiNjhhODdiYzk3ODFiMzFhNTlhMDc0ZGNhMjhlZTVlMmEgdGxlZS1hc3Qtb3B0aW1pemUKKzYzOTU3IGYwNGIwNTllNmM5ODIxMTU1ZmRjNjc1ODkzODQ0NDhhOWVhNThmMmIgdGxlZS1hc3Qtb3B0aW1pemUKKzYzOTYxIDczNTI1NDNjYmEwM2M0MzFlYTdkMTY1MmRiMGJiMDI1MmUzMDNlMGYgbGVnYWN5LXRydW5rCis2Mzk2MiBiYmNlMThkMDBkODc1MjVhY2FmN2I3NDIzYTEwNThkYTgwMDIyMDIyIGxlZ2FjeS10cnVuaworNjM5NjMgMWQwYThjYWMxNWVmMDRlNzU2YzZlN2ZiMjQ4ZDMzM2Q5MjM4NjA5YyBsZWdhY3ktdHJ1bmsKKzYzOTY0IDhlMGJjMWZjMDk1ZTUwZmM0NjcyZjk0Njc2ZTIyYTI4OWUwODUwYzQgcHkzaworNjM5NjUgYWQxM2NiOWU5NGYxYjc0ZjlkYTA0NDdmYmM2ZmZmN2U4OTQ3OTZmYyBsZWdhY3ktdHJ1bmsKKzYzOTY2IGZkNmYzMDZjMDRlMDBhZjJhODNjNGExMjgyYjdhZDE5ZDg1M2ZmYzkgcHkzaworNjM5NjcgMmE0OTZmMWViOWYxNjRmODU4YzI2YmRjNTc3M2NiNWRkYjQ4NTI0MyBsZWdhY3ktdHJ1bmsKKzYzOTY4IDBkN2NjYjUwMDA3Y2UyYzIwZjgzN2E0ZGFiOTAyMjc2NzI1NmMwN2YgcHkzaworNjM5NzAgYjU1MzA5ZWY1NGM3NzM4N2ZlM2RmN2Y5ZmM1MmZkNWI2MDE2Y2FhOCBsZWdhY3ktdHJ1bmsKKzYzOTcxIDk0NWRhMTcyNmNmMWEwOGRmMmFlNGVmODQxNmRlYmZmOTM5MmNjYjMgbGVnYWN5LXRydW5rCis2Mzk3MiA5ZTI3MWNiMjVlNTlmODlmMjk2ZmQ3MTIyY2M3YjQxMzljZGFhMmEyIGxlZ2FjeS10cnVuaworNjM5NzMgZjc0NTNiMGIzMzllMDVlNjcwYjU3YTNlMTQ3NjlhNjEwNWU5NmEwMyBweTNrCis2Mzk3NSBiMzgyYmViN2JlMzZmMjUyNmVhNGY3MjRlNDA4ZmQ3ZWIwNmEzNGQ5IGxlZ2FjeS10cnVuaworNjM5NzYgNzg4MGE0Mjc3MTU4MmJjZTVmNzUxMWU2NmY0ODU2Y2NhZmNlNjQzMCBsZWdhY3ktdHJ1bmsKKzYzOTc3IDRmNWU2YWFmNWE2YTgwYTY1MzkwOTU1ZWJlNGRiYjg5ZjExODI2ZGIgbGVnYWN5LXRydW5rCis2Mzk3OCA3YTFkNGU4MjMzZjg5MDMxMjgzODRjNTcxMjc0NjU5NGQ3ZDk2NmM1IHB5M2sKKzYzOTc5IDMyNTVmMWYxNjBhZGVkYzEwNDFlOWViYWU0ZGY0MzUwNDg0OTYyMmQgcHkzaworNjM5ODAgMTMwY2U4NmQ2MWI2NzkyZTgyYTEwZTMyZmE0N2RkZmU4NmFiMjRjNiBweTNrCis2Mzk4MSBlYmJmMDExNTUwY2Q2YTk0NGY5MDNjODdhOTJjMGUzNjkyY2NlMTdiIHB5M2sKKzYzOTgyIGFmNjgwZmQzZmZkYzc2MzQ4ODFjYTFlYzEzNDg5ODU1MzBlNzNhMmUgbGVnYWN5LXRydW5rCis2Mzk4MyA5ZWExMDRmMWU1Y2QyNjNjNTYxMGJkMjljMjdjODQ5OWNmM2Y1Y2M3IHB5M2sKKzYzOTg1IGNhYTkwY2Y2YmU5YTNkNTdkNDlmOWY3NDE1ZDFhZGE5Y2RiZGQ1N2EgcHkzaworNjM5ODYgMjI4NGZhODlhYjA4ZDU1NzcxMGY0NzE1MDg1ZjgxMjU1MDcyZjU5MCBweTNrCis2Mzk4OCAyMjEwZjQyZTdjODk4YjNkYTIzMDBlNGNiOTY2MDVhODUwOTRkODZkIGxlZ2FjeS10cnVuaworNjM5ODkgMjQ5NTRlYjgwYjliNjE3YjM0MjViNjIzYmU1NTUyY2EwYTIyOTQ3MCBsZWdhY3ktdHJ1bmsKKzYzOTkxIGYwODg1MDhmNmQ5OWRhZWYyZWMyNzFiYTA3YzdjZTQyYWIzMDhjNmEgbGVnYWN5LXRydW5rCis2Mzk5NCBhMDE5M2IwOGYwZWI4Zjc1NmZiYWU3N2Q2YzFkODk3N2E3NTJlNDEzIHB5M2sKKzYzOTk3IGM5YTVmMmViNzIwY2M1NWI1NDk0YTJkMGJiOTJkMDBjZGM5Nzg3MDAgbGVnYWN5LXRydW5rCis2Mzk5OCBjODk0MzRjYjkxNGQ4Y2M5NzQxMDA0N2VjZTBhOTJmZmYzOWVlOTVlIGxlZ2FjeS10cnVuaworNjQwMDIgM2FlYmFjN2YyNzI1MmU0NDM3NzBlZGQ3MzRmNWYzOGEzMDFmZGUwMyBsZWdhY3ktdHJ1bmsKKzY0MDAzIGJmMTQzYmViMDhlOGU2MjFhNTJkMWFkYzlhYjliZGM4ODg5NTQ2OGIgbGVnYWN5LXRydW5rCis2NDAxMiA5ZmRhMDkwYzA0NWY2ZTMxNDRhMjNkMzNhMWNhY2JhM2NlOGQyZGM2IGxlZ2FjeS10cnVuaworNjQwMTQgZWJmNmY2MzllMTE3ODVkYjQ1ZmFiMGNmOWQ3OWViNTcyMmUzM2JlZCBsZWdhY3ktdHJ1bmsKKzY0MDE1IDliZWNlNTdjZGNlMzFiODA5MTJkY2Y2NGU1OTZkZTcyYzhhZTlhOWQgbGVnYWN5LXRydW5rCis2NDAxNiBiMzJkN2I4MzI5OGE5OGU0MGIzMTc3MmZkMGIxNDc1NGVmMzY2NTk4IGxlZ2FjeS10cnVuaworNjQwMTggNzIwMWMwMTkzYWRlZDgzYmRmYzdjZjY4M2Q2MjU4M2U1NWYzYmMzMiBsZWdhY3ktdHJ1bmsKKzY0MDE5IDQwZjJkNWE0ZmFkY2MzM2JlMjA5MDIyYjA4MWI0MGEwOGIyMjk3ZGEgbGVnYWN5LXRydW5rCis2NDAyMCA2Nzc1NjRhMjcwN2FhYzcxYmI0MjFhZGJmMjBlOTkyMTc0NzNkMDZmIHB5M2sKKzY0MDIxIDVmNjVjODMzZGM4NzA2YTJkNWRkYWVhZWU2ZGFiZTM1Njk4ZWVhMDEgbGVnYWN5LXRydW5rCis2NDAyMiA0ZjcwYTlkZTI4NjUxOTYwN2UyY2MxNWYwZjQ0ZmIyYjNjMGVkYWY4IGxlZ2FjeS10cnVuaworNjQwMjMgN2QzNjEzZGMzZjFjY2RlNTBjZmE2NmViODM4MTM0ZGQ5MDg0ZWY0OCBweTNrCis2NDAyOCA3OGQzZDM1OTU1NWVhNWJhZjU3MzFjOTlkODkxZjBjYmU5NmJjMTlmIGxlZ2FjeS10cnVuaworNjQwMzEgZjNkZjUxYjYwZGMyNjIzYjU1NjU2YmNjZGY2MWU5ZDhmODc1ZGZjNSBsZWdhY3ktdHJ1bmsKKzY0MDMyIDIyY2ZjZWIzMzM4ZTY4YWY4NDkyMTJkMTg5ODcxN2IzOTZkMDE3YjYgcHkzaworNjQwMzMgYTdiMTYyMjI3NGIzNzUyZGYwZDZiYWQ0YjZjMDkxOWMxMGRkNjlmNCBweTNrCis2NDAzNCA1ZDI3NDJlMzY4ODZmMDFkZTAzMmE1ZTM1MjUzNTQ2ZmE1ZmNmMzBiIHRsZWUtYXN0LW9wdGltaXplCis2NDAzNSAxZmZlNmFiODRhMWI4ZWRjMjQ4OTM5ZmM2ZDExZGNiOGZmNmUzYzQzIHRsZWUtYXN0LW9wdGltaXplCis2NDAzNiAxYzAzMDkwYjJhMGEyZmJlNjE0YzhlMzQyYTY4ZGRhZjU5ZDg5ZjA5IGxlZ2FjeS10cnVuaworNjQwMzcgMjRkZjM0MzRjY2Y3YmMyODQ1ZWU3ZDJjNmNlMzI1M2RlMTE1OWFjYSBsZWdhY3ktdHJ1bmsKKzY0MDM4IGM4ZTI5NTllOGIwZjE5MmE0YjMyMThiZmY5YTYzMWI2YjdkODRiYTYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDQwIDMxYWVlNjcwMTlhMmFkNGI1OGMwOWIyODMwNjQzNmJkYjUzMzMxYmUgbGVnYWN5LXRydW5rCis2NDA0MSAwMjY1MTNiZTM4ZGFhNzdiZDBjODgyNGY5OTk3YTU5MThkMjE3M2NhIHB5M2sKKzY0MDQ0IGQ1NjQ1MGRiNjBhMjNmMzQzNGQ2YmQwMjA3NGUxYmYzNWJjNzA2NGEgbGVnYWN5LXRydW5rCis2NDA0NSA1MzI1M2YzNjAxNGUwMDFmMWNmMTNjYWMxOWVhYjdkYTViYzAyZTIyIGxlZ2FjeS10cnVuaworNjQwNDYgOTRlMzYzMGRhY2E3MzBmYzg1ZjQ4ZjU3MTQzNjllYzRkZDI3ZGJkOCBweTNrCis2NDA0NyAyNDZhODAyNjM3YWRmN2VkOGM2MGIzMDc5YWFlZmM2NzkyYjk3ZjRiIGxlZ2FjeS10cnVuaworNjQwNDggNTIyOTRhZjRiNjYzY2FkYThlMWZkOTg4NzllZGM0OTE5OTU0NmM3NCBsZWdhY3ktdHJ1bmsKKzY0MDQ5IDdhY2I3ZTdhNWYyODA5MDUwNGQ5NjAwYjJhZWRlZWI2MGY0YjU4OTUgcHkzaworNjQwNTAgNjQyOGM0ZjFhZTA5N2E0MjVjMWJjZTRlZmMzMmVlOTMyZDMwNzAwZSBsZWdhY3ktdHJ1bmsKKzY0MDUxIGQ0Y2Q3MjIzYWYzYmYyOWMzY2E3Y2Q1Yzc2OWE3MzE5ZDQxZjFlZmEgbGVnYWN5LXRydW5rCis2NDA1MiA3NzFmN2E4MDQ4NzRmZDdkYTBiM2ZjZWY4OTVjMmYwMjUzMmFiMTNmIGxlZ2FjeS10cnVuaworNjQwNTMgMDIwNTkyNjhjODI1ZmEzNjBmMTIzNWEyMTg2Njk5Mzk4YWQxMDdjYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNTQgNmNmYTI5N2M2NTU1MGM5YzJmNDIyNjMwNTgzYzJjZDdjOWQ5NTg3MyBsZWdhY3ktdHJ1bmsKKzY0MDU1IDEwNTc3ZTI1Zjc4ZjZjMmEwNWEzMjM0YzI2M2I3ZmFhZDc4NDljNTIgbGVnYWN5LXRydW5rCis2NDA1NiAyZDVmMWQ5NTZlZjZiY2Y0MmNiN2VhNTc1MGFkZjk3ZDkxODdiNjBlIHRsZWUtYXN0LW9wdGltaXplCis2NDA1NyBkZjliMzM3YmEzMTEyNDg5ZDI1ZjNmYWQ5MjJiN2I0MDVkYWIxYmVlIGxlZ2FjeS10cnVuaworNjQwNTggMzkzOWZmODk4MzRjZjYwYzNmMmU1MDMyOGQ2ZTAzNzA4MDQ2YWZiYiBsZWdhY3ktdHJ1bmsKKzY0MDU5IDMzNDkyYzI0MWRhYjVjYTgxMmM5MGZmNGJjZTZjNWM3ZDVkNWM3YTMgcHkzaworNjQwNjAgMTM5ZWNkYmY0ZjE5NmEyZTczYmU2MGUzYThkNzljMmIzYWM2NTZkZSBweTNrCis2NDA2MSBjMWFlYjZjOTRhZjEwZmI3YTgxMTkyNDg1YzQwZDhiYjAxYjMyODc5IHB5M2sKKzY0MDYyIDUzYzYwYzdjY2NkOTgzNGJhOTFjNzRjYjQ4MjY0OWJjZDQ0NGViZGEgbGVnYWN5LXRydW5rCis2NDA2MyA0OTJmOGUxMzA1Y2Y2MmUwNjEyZGNkNTMyNTliNmM1NTg5ODFkMmIwIGxlZ2FjeS10cnVuaworNjQwNjQgZWQ1NzJkMjYwZmE3MTcyYjMxNjQ5MTdiMDEzZTY5NjgwZDYyNzVhMCBsZWdhY3ktdHJ1bmsKKzY0MDY1IDg5NTg3ZWExOGVkN2UxODc0ZjExYmEzMzI5Y2VlYjY1N2JiMjM1YjQgbGVnYWN5LXRydW5rCis2NDA2NiAyOTZhYjEwMzhiN2Y3ODgwMmViOTc0MTE5ZDhjNTI4NjZjYjc0N2ExIGxlZ2FjeS10cnVuaworNjQwNjcgZjQ5ODk1MTZiNGQ2YTI4NjcxNGYwZDZkMmZjYzA4ZWNhNDUzMjc0NSBsZWdhY3ktdHJ1bmsKKzY0MDY4IGRjOWY0ZDZjZDNmMTcyNjgzZWUxOTFjMjg5Mzc0Y2M0YzU1YmQwOTAgbGVnYWN5LXRydW5rCis2NDA2OSBjZDVkMjVkZDYxMzExMmY3YmM5NWMyZGFhY2QyZTQwODBkOTZjNmQwIGxlZ2FjeS10cnVuaworNjQwNzAgODEzYjg3YjE2ZGM1MDkwMmYzNzhiOGQxN2M2YmQ1Y2U0YzU2OWNiYiBsZWdhY3ktdHJ1bmsKKzY0MDcxIGMwMDU3NmUyMDJkYWRjZmRmMTNhNDQ5ZGQzMzk0MjdlNjk1YWE2MzcgbGVnYWN5LXRydW5rCis2NDA3MiA3NTIxMmI0MDhkN2JhYmEyYzJjMmYxZGRjNDU1ZTljNGExZWFkMmZjIHRsZWUtYXN0LW9wdGltaXplCis2NDA3MyBkNWNjM2M1Y2MxODhlYzMyOWU1MTMwYzNhMjRiNWIzNDliMWRjMzNlIHB5M2sKKzY0MDc0IGRmYzM4ZTVhZjEyZDI2NTIwNWY2YmZjZWQ5YWM1ZGExYmQwMmJkYmYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDc1IDQwODRhODRlNGQzYjc0MDAzYWQ4YmU5NjM2ODI1NjgxMDJkYWZhYjEgcHkzaworNjQwNzYgZWU3M2E2YjI3YzNhYTRhNmJmMzVlMWE5YmZiMGU4MGFjNDMxZTMzYSBweTNrCis2NDA3NyAwMzY3YTkzNzg4ZGJhYTEyZmNmY2M5YjgxOTNjMWRlZDE4NjdlZDk5IHB5M2sKKzY0MDc4IDkzMGQ5MzA4YjMyYWE1NjVjOGZjY2YxOTY1MGZiNDNiZjMzNWE5NzkgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDc5IDA5ZWI4ZDYyNjI2YTAyNjM0OTllY2MzNmM3ZjFlMTNjNjJhYThhZDMgcHkzaworNjQwODAgYmJlMjA3N2E0MDFiYzQ5YjM2ODIzMWI4MjA2NjRlMzljN2MzMjE3NyBsZWdhY3ktdHJ1bmsKKzY0MDgxIDdkODI0ZmQxMzFhZDk5MzM5YmFlZTU5NzMzZjI4MjFlNjhlNmQ2NjggcHkzaworNjQwODIgMjZhNzI4M2Y3ZjE3OWM0ZjE0N2I1NzNkYzM0MjQ3ZjFiMjg4ZmM3NyBweTNrCis2NDA4MyA5ODgyN2EyMWUzNTI5ZWI0NTc2YmI4MjYxNGFjNzE4ZGQyY2Y3YjA4IHB5M2sKKzY0MDg0IDkxZWIyNDIwNGUwOGE2YzBlY2U5MWJmMWFiOGY0Y2IwYTViMzE3YTAgcHkzaworNjQwODUgMjkyNWI1NjhhYWNjYTYwOGZmOTc5N2Y2YzM2M2Q5ZDQ5OGYxZjJmYyBweTNrCis2NDA4NiBhY2RhNDMyNTI3MTAwMTdiYTc4ZjE1NTI3NzRjMTFmOWYyYzgzZWIyIGxlZ2FjeS10cnVuaworNjQwODcgMmVhZTMxYTNlZjg5MzAwYWJiMTJjZGIwYTY4NWUwODg5M2RmYmNiYiBweTNrCis2NDA4OCBiZDU4NGYxMjFjNGI1MDIyNDUwMmZjOGU2M2Q5NTRjMDIwOTYyZTA0IHB5M2sKKzY0MDg5IGZmYzZhMmVmNzZlOGFkNzI0YzE1NDQ2ZmQ3NDEyODkwODIzOGQyMzcgbGVnYWN5LXRydW5rCis2NDA5MCA2ZGRlMzkxYmU5N2Q4OGI3YzFhM2NkM2VlNTgyNTMxODExZGE5NTJiIGxlZ2FjeS10cnVuaworNjQwOTEgZjUyOWJmMmRmNDM2OGNhODhmYzJjYzkyYWE2ODk3MDcyZDdiNzJhNSBweTNrCis2NDA5MiBhZmQzYjhlZWUyZmI5ODgzYTFjZWZhNzk5MTNjMWE0NmRmNjRjMDc1IHB5M2sKKzY0MDkzIGU3YTllYWIzNjNhZGFhNTcyYjc1MTE3MTc5NzA5ZTFlNzdlN2E2MzEgbGVnYWN5LXRydW5rCis2NDA5NCA4MjQ4Y2NmZWI1MzQyOWJkNjIyOWJmZDY3ZTk3MTYxODhmMjAyNzhkIHB5M2sKKzY0MDk1IGVjODI3ZjZlNGNjNmI2NjhlODA5NGM3NDk0ZTQzY2QwOWFiYTYxZWYgbGVnYWN5LXRydW5rCis2NDA5NiAwY2EyNDE4Yzc3MDI1N2Y1ZGM3MDA4Y2Q5NzY4MThjMjBmZGY5MmY1IHB5M2sKKzY0MDk3IDI3MTg0NWYzMjNiZTQzMzJmZDcxZjcxYWI4MjFjM2U0M2I2MDhlNjEgbGVnYWN5LXRydW5rCis2NDA5OCAwMTNiZTYzMjBiODI4NmU0ODhiMDMxZDNjOTlmMmJiNjkxZjhmNjcwIGxlZ2FjeS10cnVuaworNjQxMDAgMWVhYzhmZjAxZDdiMDYwN2VkY2QyM2QwNGUzNmU1NzA3ZGUzMDNjYiBsZWdhY3ktdHJ1bmsKKzY0MTAxIDdkNzBiNTllZWFmMmRkOTBkNDZkZmNiYjlhZDJlZDIzOTRhNDA1ZjAgbGVnYWN5LXRydW5rCis2NDEwMiBkYTMwN2JlZWViYjkyMDIwNGI0YzcwMzQ4NjE1ZjQ2YjhiODY4ZjBjIGxlZ2FjeS10cnVuaworNjQxMDMgMmE3YjZlOTljYzU0Y2VlYjQ4Y2U5YzdjZjM3NTQ2YWRiOTEzZmVhZCBweTNrCis2NDEwNCA0NTExZWNkMjU2MzQzYzZiMjQwMjgyYzNjYjg1MDNiZDJhZGJmOWNlIGxlZ2FjeS10cnVuaworNjQxMDUgYWNkZGIwMGIxZGU1ZjA0NTEzZGRiZjZmMGZkMTU2ZGRhMjNkMGIzOSBsZWdhY3ktdHJ1bmsKKzY0MTA2IGU4MWRlY2NiMTdjNmI2NjcyZjY3MDlkOGJiYTMyZTg2MDBkODU1NTAgcHkzaworNjQxMDcgOTRmNjRmMTFmZGQwMDk4ZTRhZDVhM2Q2ZjdhMDA2ZjJlNWRiMDBiOSBweTNrCis2NDEwOCAyNTExNDMxNTE5YTIyMWJjMTg2NGQ4MGIxODQxOWExMjBiY2RmYzlmIHB5M2sKKzY0MTA5IDg4YTQyZGIzNzc3YzIzYjk0N2NlZmJjYTEyMzRlODI2ZGNjZWE4MDEgcHkzaworNjQxMTAgYjgyZTA1NDVkMTExNTRhOWVjMjA4MTUxMTI2MTkyYjRhYjZlZDYyNyBweTNrCis2NDExMSBiODMzYTQwMDk4YzAwZjc5OTc2NjY4NmU1NTVhZTMwZTI0YmVhNThjIHB5M2sKKzY0MTEyIGIwZWYwMDE4N2E3ZWMxNjdiODE1MThhMGIwYWUzZTk2Y2E3ZjZlY2QgcHkzaworNjQxMTMgMjU0M2M0Yzc5NTQzM2E2MzE0ZDAyMTllMmM0ZmZiZmUwNmFhZDUzZiBsZWdhY3ktdHJ1bmsKKzY0MTE0IDFjOTY0ZWQzNWVmOWZiMjc5YjZjYzJkY2EzOWFlMGVlZjdjYzEyNTUgbGVnYWN5LXRydW5rCis2NDExNSA4ZmU0N2IyYzhiZmUzN2E0MDdkY2QzMmZjMmYyZjc4YzNmMDY3Njg4IGxlZ2FjeS10cnVuaworNjQxMTYgY2I4NDk0Y2UxMzM3YzgzZmI0MzY1OGRhMDgxMDFmZmEyYWU0ZGY4MyBsZWdhY3ktdHJ1bmsKKzY0MTE3IDBmNTU2NGZkMDQwYTk0YTNlZTk5ODFlMGMxODRkMGExMWEyMzRmNzUgbGVnYWN5LXRydW5rCis2NDExOCAyNDVkY2EyNjcxMmY3NjMxMjI2MjViMzk0MjEwZWJjYmY5Njk0NDgzIGxlZ2FjeS10cnVuaworNjQxMTkgNTE3ZTE0MTdmN2UyY2Q5ZTk5YTBlODM2MTAyODkwZDlkNDk5ODJlOCBsZWdhY3ktdHJ1bmsKKzY0MTIwIGNlZjlmMjdhNGNjMzNhMWZmODVmODcyMWUyOGU1NDg0MDgwMzhlNDUgbGVnYWN5LXRydW5rCis2NDEyMSAyMTJhMWZlZTZiZjkzZjhiNzRmODFkZDM1NjdiZjk2NGU2MjdlYTIwIHB5M2sKKzY0MTIyIDVjNmNkZmNkNmVhZTQ5ZWZhNWM3YTE1MmJmODIwNWYwZmFhN2ZjNTMgcHkzaworNjQxMjMgNTdjOWFiYWI0ODMyYzhiNjI0ZTdjYmNjOGZjZmU3NjY3OTJjNGQzYSBsZWdhY3ktdHJ1bmsKKzY0MTI0IDRkZDEwMDM3MDg4YzI4MmQxNzZiNDgxNjZkOGQ4ODhiN2MxN2I4MjYgcHkzaworNjQxMjUgYzM0OWY5ZmJjNzA0NDRhN2IzODViYmU0OWJjMjdlMDlkYmNlNDZhMSBsZWdhY3ktdHJ1bmsKKzY0MTI2IGUyZWI3MDIzNTM5MmZiMGRiYzE0M2VmNGMzYWVlODI0Y2QxODVmMWYgcHkzaworNjQxMjcgYjc3MmJlZTNhMTBlZjBjMDUyMmYxNTczMDFhODFjZDBjODFkOWIwMiBweTNrCis2NDEyOCA4ZGM0MzEyYTJmNzU3ODUwYTQzZmU1ZmY5OGQ5OWQ4Nzg0YTlkZTdiIGxlZ2FjeS10cnVuaworNjQxMjkgOTEyMWM1Y2M0ZjA1NDEwZmZkMjBiODI1ZTVmNmIyMmIzMDgzZWU3MiBsZWdhY3ktdHJ1bmsKKzY0MTMwIDcyYjQ5NDZjNDQzYWU0NTI2M2RmZTlhMzViZTFmM2NiYmVhYzA3MTIgbGVnYWN5LXRydW5rCis2NDEzMSBlNmJlYTcyZTk0MzcwM2VlYjg2MTU5YWNlNzEwMjc0YzgyZWNhNTMxIGxlZ2FjeS10cnVuaworNjQxMzIgZTkzNTk4YmQ3ZjQyODkyOTZkMDI0MzE2YmMyYzZlMmNkMmM3ZDlmMSBsZWdhY3ktdHJ1bmsKKzY0MTMzIDY5NjM0NGVmOGJjMDQ4ODE1YTBkZmQzZjI0MDZiZDBlZGM0YWViMWEgbGVnYWN5LXRydW5rCis2NDEzNCA2ZGQzZWI0MTE3MGE1OGRhYjU3OWQxMDIxOTYzMzYyZTM4Y2IwOTc3IHB5M2sKKzY0MTM1IDI4MjAxMDljOGQ1NTI4ZjdkMzdmY2JiYzQ2ZWNiMzgxY2Q0MThhNmIgbGVnYWN5LXRydW5rCis2NDEzNiBjYzcyZjQxZmYwMTQxYTQ3YWE2Y2M4Y2QzNzRjMTg4MGNjMTczNGVlIHB5M2sKKzY0MTM3IDE3N2YxYWFlM2JiNDQ5MWMwMjZlM2ZkY2U3ZjQxZjg2NmJkODU1MWMgcHkzaworNjQxMzggZGE0N2U3ZTEzNWFlOWYzMTY4M2E0YTJiMzY1NDBiZDY3ZmI2NjQ5MSBweTNrCis2NDEzOSA2ZjNjMTM1N2E3ZmJkZTdmYTJjNmM3NDUwOTUzMzQ2MzNkOTY3OWU5IGxlZ2FjeS10cnVuaworNjQxNDIgNjczNTMyYWEzNzhiMWY4ZmVhNjMwZWFhZDNiYTE1YWRiZDZhMjE4ZCBsZWdhY3ktdHJ1bmsKKzY0MTQzIDQ0NWNkNmViYTMzMWU5ZDU2YmU4MGVlZTUyMGRhZTcyZjJlNmYxYjUgbGVnYWN5LXRydW5rCis2NDE0NCAwNDVmODNhMWI4NjQxYzI0ZjZmNDRmZjY5MjVhYjVmMmExN2Q2NDM1IHB5M2sKKzY0MTQ1IGQzZTJhOGU3YmY0NTkxMjJmMjEzZDMxZDNlMzhiZjNiYTQ3YWU5YTEgcHkzaworNjQxNDYgMzJmZWY2MzFmNzg5MzRjMDZiOWRhMTBjYTRmZDg1NTE5YThkMTgzNSBsZWdhY3ktdHJ1bmsKKzY0MTQ3IDdhNWJiNTUzZGEyYjE3MmJiM2FjZTBkNGUxNTBiZjcxNmVhZjA2NzQgbGVnYWN5LXRydW5rCis2NDE0OCA0YzZiOGI5Mzk3MTgxOTdlMjRkOGZiZGViYWU5Mzk4MDJmNzVlYTQ5IHB5M2sKKzY0MTQ5IDZhN2ViMGI3MDE5ODA5OWE4M2M4MGZlYmYyZDE4NDkyOWZiOWYwMGUgcHkzaworNjQxNTAgYjQ1YTk1MzkwNjIwYWU2NzA2MzlkYWQ3NmQzN2ZlOGQ0NTNjYmQzMyBsZWdhY3ktdHJ1bmsKKzY0MTUxIGY3NTFkYWI3MTMwMjRkOTRlYWNiZDJlNmE2YjBjNTUxNjAyMjRmYjggcHkzaworNjQxNTIgYWZkZDQ5YzQ3NTk5ZDhiYWY1NmZiODU3MWFjOGFkNmMzMTViNDQ4MyBweTNrCis2NDE1MyA4YjBlMmM5NmNlODBlMDVjY2U3N2UzMTliOTJkMDI3Y2ZiMTllMzk1IHB5M2sKKzY0MTU0IDFiZmVhOTU2ZDBkNzA5OWFkOWI1OTNhYjkxODFkNWVjODIwMzA0YTcgcHkzaworNjQxNTUgYmZiODI3NGUzOTM5YTk0OWI0YzBhMzc5OTc3YzFiZjhhZjU5NzlkMCBweTNrCis2NDE1NiA3YjNhMDI3YWI3ODViODQ1MGEzMWRmZWNiYWJmMjNkNDUzY2RlYzRhIHB5M2sKKzY0MTU3IGQxNWQ4NjgwYTAwYTYwY2QxOWRiOGU0NWEwMzllMWVjMGY0MWIxNGEgcHkzaworNjQxNTggZjUyODEzZjQzMTg5ZDIzYzA4NGEwNjNkN2ViMmFiNGM5YjI4NmFjNyBweTNrCis2NDE1OSBhMDIxZmYxMTcxOGI2YTk1YThlMWYxNzk2OWFjNTc3MzgzZmY3NzZiIHB5M2sKKzY0MTYwIDM4ZDE3NmViYjJmYWI5NjNmYjNlYjVkNmZmMTAzNTMxOGU1OTk1NzAgcHkzaworNjQxNjEgMThlYWExZDVmMzk0Mjk4MThlODRlZThmZWVjMmZlOThlMWYyNjBhYSBweTNrCis2NDE2MiA1YWYxNTA4OWExMDA2NDhiNjZmMWQ2NDFiMjZlYWI5YmZiY2UyNTFhIHB5M2sKKzY0MTYzIDgwOTc1ZTYxZjhjOGNkZTViNTI5OWFiOWE1ZGRkY2UyNWM1ZDU4ZjEgcHkzaworNjQxNjQgZjMxZTMyYTIwMTNjZjQwYTQ5OGI3MWFmNDIzMTc5N2ZiZDVlMDc2MCBweTNrCis2NDE2NSBmNmFlYTgwOGIzNTc5OTkzM2RlMmYwMjVkNTQ4OWMzN2FhYmExNGQzIGxlZ2FjeS10cnVuaworNjQxNjYgNTI1OGQ0ZDdkZTc3YjQ5ODY1ZTA1M2Q3NzVmMTg0OGZiMDQ2YzAxYiBweTNrCis2NDE2NyA1ZjRhNTFmNjM5ZjFkNWZlNzNhOTgwOWRkNTE2OTY5M2FkYzBhNzZiIHB5M2sKKzY0MTY4IDkxYTg4MjAwZmRmMGRkODkzNDgzODhiMzVmZGI1MjFkMWIyNDk2NTIgcHkzaworNjQxNjkgNDQwMTllMzdhYzkyNWU1NWU0ODk5YmYyMzUxODI0NTc0ZjEzNTNiNyBsZWdhY3ktdHJ1bmsKKzY0MTcxIDY1MGIzZjY4NDVmOTMxZThiYzMxZTRkZTg3MGI4YzFkZWEzYmY4OTcgcHkzaworNjQxNzYgNWE5Y2ZmN2ZkMDhmNWI3OTE3ZjcwNzYwZWJlMGYzNzVkMWI5ODcxMiBweTNrCis2NDE3NyA1ODcwZWJlMjVkZDA5MWE1YmQ1OGJiNTFhZDdmMzhlYWVkMTRiZjE2IHB5M2sKKzY0MTc5IDNhM2UyMzFiODY2ZmJlMmFmZGYzOTAxZDA3ZjE2NzhlMDQxNWYzNWUgcHkzaworNjQxODAgMGFlNTBhYTdkOTdjNTI3N2U3YmY4ZWY4NWQ5YmJjOGE1YWVhOWE3OCBweTNrCis2NDE4NCBiMzc2OWI2YmFlMGYwYWQ3ODczYjYwNmYxYWM2MzRiZjUzZmM1M2VjIHB5M2sKKzY0MTg1IDNkNjg2OWUyYzkyYWM5OTY5YWNlOGE2OGQyZDM5OGMyM2RiNzVmZGMgbGVnYWN5LXRydW5rCis2NDE4OSBlODZmMzg1OGRmMjBjYTkzZDZlYWMwNGIwMzNjOTU3ZWE3NTExZTllIGxlZ2FjeS10cnVuaworNjQxOTAgNTAzZmIzYzVlMDgxNGMxMDVmMmU1OThlMWE3MTYxNzRjOGExMDU2OCBweTNrCis2NDE5MSAzMDE3ZTc5NGJiYjlhYzM1ZDRhOGVmY2U3OGQxOTExOGZhZWQyZTFjIGxlZ2FjeS10cnVuaworNjQxOTQgNDE0MTQ5M2RkM2EwNTU2YWJiMjM3MGJmMGNjYjZmNmM1OTkwM2ZiMSBsZWdhY3ktdHJ1bmsKKzY0MTk1IDQxNDg0ZDE4MzkwY2ZjMzA2MmQ5MTIzMGEwZWRkMmRkNThjMDBkMmQgbGVnYWN5LXRydW5rCis2NDE5NiBmNGZmNThlMzQ2ZWU0OTNlYmE0MmNlMzYwZDg0MjU4NGFiMmRhNGFjIGxlZ2FjeS10cnVuaworNjQxOTcgOTdjZDk1MzY3ZDYwZmZiNWQ3NDE2ODhlODI2YzA1ZTlkNTA2NDY3OSBsZWdhY3ktdHJ1bmsKKzY0MjAyIGUyNGYyNmMzY2NlNDY0OGU3NjcxMTg3YjgzOGI3MjhjMTgxZDExNWYgbGVnYWN5LXRydW5rCis2NDIwMyBkNDA3Zjk1OGMxMzc0ZWM5ZDY0ZjY0MTFmYmFkZDI0YWEzMGQxYjZhIHB5M2sKKzY0MjA0IDEwOWU5NzQ4YzdmNDM1MWJmNmYyYWQzYjMzZWMyZWQxMjJkMjVkZmQgcHkzaworNjQyMDUgZmNkZjgxNGM5YjExMjhhMjE5M2I5NDdkNGNmMmFiNmZhZDVjOWJjYiBweTNrCis2NDIwNiA2NTg1ZmQxZDlhZDcxMjNkNmNhYThjNzQ0YTFlY2NjNGZiNmYzNDA0IGxlZ2FjeS10cnVuaworNjQyMDcgNGI4NjgyZWEzN2MxZjQyNDhkZDZjNjlmOWZlNTg4NTZlNjE3Yjg4YyBweTNrCis2NDIwOCBmZDdlYjI3NDEwMTIxYzk1ZDgwMjhlNTY3YWVkMTc5MjVkNzJmZDIxIHB5M2sKKzY0MjA5IDU3MjZlOTE1N2JmMDJmYjVkODdkZDM3ZjFiNDY0N2JjOTNmYzY3YzcgcHkzaworNjQyMTAgOTJiNzliNmQxYTNiOWJiZDBlMThhOGFmZTVhZGFkNDk4YjNlMDI2YSBweTNrCis2NDIxMiBkYjk5Zjg3NTI3MTA2Y2I3M2JlNmE3ZDE2YjZmMTQxODM2ZTI2NDk2IGxlZ2FjeS10cnVuaworNjQyMTMgNzFjYjdlYTRmMTEwMzY3NTI0ZmIzYjFhYjhkZDNlMTM4ZjBjZmE4MSBweTNrCis2NDIxNCBmY2ZlMTBmM2RjMTQ2Y2Y1MDVhY2VmYmZiYzliZGY4NmU3YzgzZDcxIGxlZ2FjeS10cnVuaworNjQyMTUgYjFmNGVhNGViNTU1NjM5OTM0MWNkNmZmZWU1ZDQ2YTQ3MzkyODQwNCBweTNrCis2NDIxNiA5Yzc5ZWU0OWEyZDk1MmI4ZWFmZjk4MzZmMDJjZjllZjFlNzA4NjE1IHB5M2sKKzY0MjE3IDMxOTg4YjQwMTUzNTc5NTQ2YTVlMjEzZTc3N2Q5NThiZDA5MzAwNjcgcHkzaworNjQyMTggMTMwNzFhZGQ4ZjQ4YWU1OGNhNDViYmYzOGI3NzBkMzc2ZmJhYzE3MCBweTNrCis2NDIxOSBlMzBhZjMyNjRhMGY1NzNhYzEwMjg5Yzc4ZWM5MDJlMjZlMTVmMjFmIGxlZ2FjeS10cnVuaworNjQyMjAgNWViY2RlYjBjYjI2YzY3YTg1MWQ4NDMxMzVmZGExNmE1NjYyYmQzOCBsZWdhY3ktdHJ1bmsKKzY0MjIxIDE0NjQzNDVhMTk2ODNiNzRiNWFmZGZhYTAxMGUxMWE2MDlmMmFhYTMgbGVnYWN5LXRydW5rCis2NDIyMiA4ZjYxYWUwMTEzMGY4ODkzOWRhNTNjNDAyNjZlMjcxZTZlMDNmNmNhIHB5M2sKKzY0MjIzIGQ1YWEyNWJmOTM2MDNlYjRlMWE4MjgyZmE1NTg1NjlmNjc3OTExZjIgbGVnYWN5LXRydW5rCis2NDIyNCAzOGQwNDY3ZjVlYzc2OWQ0ZDRjY2M4NTg5ZjczN2ViZjQ0OWM1NDFjIGxlZ2FjeS10cnVuaworNjQyMjUgN2E4ZWUwNWM2OTdmNTBmMTIyZGMxMGIxMTQ0ZjViMjkzZGU3MjdkNSBweTNrCis2NDIyNiBhMzVkYTk0ZTA1ZmM1YTU4ZWVhN2U2YzI4ODUwNTMxMzQ0YWJhZWVlIGxlZ2FjeS10cnVuaworNjQyMjcgOGM2MDY4ZjE0ZWU4Y2VmMTAxM2UwZTBjYmMxNGQ1YmZiMThlMDIwMyBweTNrCis2NDIyOCBiNWUwMjc3NWZmZmNiM2ZjNGI5OWY1MTgxODA4ZjhjN2IxMzRjYTI2IHB5M2sKKzY0MjI5IDY0MzRkZDcwNGQ2MGVhNjA4MDAzODNhZWI2NDBiNGUxMmZlODgwZDcgbGVnYWN5LXRydW5rCis2NDIzMCAyZGZhYTA2ODNiZThiNjYzZDA2MDM4NDk3MmIwMmQwM2RjMTZmMzg3IGxlZ2FjeS10cnVuaworNjQyMzEgNGRhOGI3YThjZjJlOTRiYmRjNTY1ZTkwMjU4ZmZjMDFjOWYyZGVkMiBweTNrCis2NDIzMiBhMTA2ODhhZGNkZDYyNTM2ZmJkOTVlYzNhY2U5ZDkxZDg4MzU2MGI4IHRsZWUtYXN0LW9wdGltaXplCis2NDIzMyAxNjhjOWU5Njc3MmM1Nzk3MmJmYTc5YmZiODhjZDQ2ZTJhYWFjZTExIGxlZ2FjeS10cnVuaworNjQyMzQgN2ZkOWU5Y2JkNzIxNTNhZDhkNWVkZjU4NTliZWIyNDk4NGM3YTJkMyBweTNrCis2NDIzNSBhMzMzYzg3NzBlMzIxMzI3MzlkZGI1MDRmYzYyNTZjOGY3ZjVjNDA5IGxlZ2FjeS10cnVuaworNjQyMzkgZmFhN2NhNTI0MjcxODg0MjJlZDExN2FkNzM2ODcxY2JjMmQwYTc3NSBsZWdhY3ktdHJ1bmsKKzY0MjQwIGNkYmYxMjkxMmQ0YjgyYTQ0OGU3Zjg2N2Y3MzYyYmE3MDEzODIxNmQgcHkzaworNjQyNDMgZjUyNTQ5ZmI3NGEyNjUxOTExYTZkODliMTIxOTFkZmViYThlODJhNSBsZWdhY3ktdHJ1bmsKKzY0MjQ0IGI5MDVjYjI3OTNjYzlhYWYzYWQ1ZGI0NTM0MzMyNjRmZDg0N2I3MmUgbGVnYWN5LXRydW5rCis2NDI0NSBiYjgxN2E1ZDY4YjdjMzA4M2QyMGY3NDk2NGE3MGFiZjY4OWQ1YmM5IHB5M2sKKzY0MjQ2IGE0NTBkYTI0MDA4OTZkMjQzM2YwM2VmY2NjNTg4NGQyYjc3NzMwMzYgbGVnYWN5LXRydW5rCis2NDI0NyA4NzE0N2RiODJlYjFlMzMyMjYzZjNhOTRlY2Y1Y2NmNDkyNDE2NTdkIHB5M2sKKzY0MjQ4IGFmODg3M2RmMDMyMjVlYzEwZmNkYTY0ZjlkODhlY2VjMWEyNjFkMzAgbGVnYWN5LXRydW5rCis2NDI0OSA5YjhmZjczZDAxODg1OTM3NmM5MGY2NTJiNmZkMGJmYmM2NjdkYjBkIHB5M2sKKzY0MjUwIGQwMTE2NWZhZTk4ZTkwMDRlM2Y4MzU5YjkzYTY2N2QxNDhhYzdlMGEgbGVnYWN5LXRydW5rCis2NDI1MSA0NmU1ODQ2MTUwZDVlOTVmOGEyYTEyMDRiZmVkZTk4ZDQyYmIxZmJmIHB5M2sKKzY0MjUyIDZkMWRjNzYxYWI0ZTA4ODk4OWQ3NTQ0YjRlMWQyYjc5YmRmMDRkZTkgcHkzaworNjQyNTMgMTA2OTU3ODM3OWEwMTJjZDFjOWY4YzI0YTUzOWYyMGM5NDdlM2M4MCBsZWdhY3ktdHJ1bmsKKzY0MjU0IDQ0NmQ1YzI5OTA4YWE5ODUyZTgzNGIzZjlmMjk0YTY2MWVlOGJmZWUgbGVnYWN5LXRydW5rCis2NDI1NSAyZjE2Y2VhMjI0ZjVjYzQ4NTI0MTkyMjNjZGYwZGI2NzRjY2RlMWI0IHB5M2sKKzY0MjU2IGRmZjc2MmFkZjlkNjExMjJhNGViNjY1YzBhM2FlZDRhNjFlYjE0ZDIgcHkzaworNjQyNTcgZjM2ZjA5MmRiZTk3ODQ2YzIyNmUxMDk4MzZlMjdjNWJjM2VjMWM1ZSBsZWdhY3ktdHJ1bmsKKzY0MjU4IGFiYTU4ZjI4ZTE2NmIzZjdhZTc2OTViODU1ZWUzZWY0Mjg3NzRiMTkgcHkzaworNjQyNTkgZjJlMmQ1Yjk2NGRlMzhjMWQ0YTI5OTEwODU3ZWM4ZjI2NWQwYzczZSBweTNrCis2NDI2MCAzN2NmNWExZTYzOWU5MGVmY2NkZGMzZjdiMWQ2YWNhZTI5NWM1NDBiIGxlZ2FjeS10cnVuaworNjQyNjEgNTdhYTg3M2Q5NmZjYThiOTIwNDA3NGZjOGY0NDM1MWMyYTNhMmJlYyBweTNrCis2NDI2MiAwOTViODVkN2EwMTQxZTNmN2VmYWQ5MTU2ZGJmZjI5NmJkMTg4MzQ0IGxlZ2FjeS10cnVuaworNjQyNjMgZThkZjllNDg3M2I0NzgwMTNmZTI5OTdkNTg1OWVjZDVkZmQ2MmRlMyBweTNrCis2NDI2NCAxMGE4Y2U4ZGI2YmZiNGY3YzYxMTAyYzMxYzVmMDJjN2NjMjhmNTVmIHB5M2sKKzY0MjY1IDZmMGZlMDY2YTg0YmI1MDRlNGRiNDcxZWJmNWRkNWQ5ZmM1ZWVhMmEgbGVnYWN5LXRydW5rCis2NDI2NiA2MWU1Mjg2ZDkzN2M4YWNlZDY5MWFhMWUzNmYyMzM2MDY0MGU5ODNhIHB5M2sKKzY0MjY3IGFhMjUwMzE4OGJmMzRkODkyOGQ3MTE1OTVhZjQ0MWJkNzY1YWY5OWMgbGVnYWN5LXRydW5rCis2NDI2OCBjOGY4YTU3OGMwMWI5OGFkZGNhMjBkYzZmMTZkZDM5NTExYjdkMjZjIHRsZWUtYXN0LW9wdGltaXplCis2NDI2OSBlOWM5MzVjZDc4ODhhZWJmOTBlMDU3OWUyNDc4MTIwNmZiNjJjMDJjIGxlZ2FjeS10cnVuaworNjQyNzAgMTg5ODY3YWFiYWZhMzc3ODgzZmZiNTg1MDNmNzhiMjM1OWJmMmQ0MSBsZWdhY3ktdHJ1bmsKKzY0MjcxIGI1YmYxNjc5MGUzYzY5ZDFmNTVkNGFkZGE5OGQ0OTFmMTJjMDEzNzMgbGVnYWN5LXRydW5rCis2NDI3MiA1MTZjMTlkODU5MWE5YjQ2MDM1ZDg1MjU1YTEzMmMwYjNmOTQxMDIzIGxlZ2FjeS10cnVuaworNjQyNzMgOTZiZmY3ZTEzN2ZiZDEyMzBkM2Q1ODQ0NmYyODI2ZDc3NTg1ODdjMCBweTNrCis2NDI3NCA0YjFlMDE1MDVkNGQzN2U5OWYxN2VhMmVjNDQxMGMwZTY3MWY4YjQyIHB5M2sKKzY0Mjc4IDlhZDY5MTI3ZTZhYTY1NGEzNmY3N2JmNDhiYTZhMDU0YWY4ODU0YTYgbGVnYWN5LXRydW5rCis2NDI4MCA5MTU1ZmY3OGZkMDY0ZDY4MGY3MzA4ZjNkZmFhNzkxMThjZWE2MzA1IGxlZ2FjeS10cnVuaworNjQyODEgN2JhNzkwMWRhZDdmOGM2YjVhMGEyY2M0ZjQwNjkzYzA2YWNmMjZiNSBweTNrCis2NDI4MyAyNWZhM2RkMDIxZjUyYWJlMWEyNjk5NjBjNjllZDRlMzZiOGMxZjRmIHB5M2sKKzY0Mjg0IGIzM2U4MzM0ZjgyZjc5ZTMzNzdhMDc4NzU1YTY3ZTk0ZTI0NzM5YmUgcHkzaworNjQyODUgNWNiNTBlN2E5OGEyODU4YTkxMzc0MjgwMTIxOThkNTE4ZDllODBiNSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyODYgOTkxY2FhZDgxYTJkYTZmNTVmYzAxNjgwZTU4ZTg3NzEyZTU0N2JkYiBsZWdhY3ktdHJ1bmsKKzY0Mjg3IDRlMzA0YWRlZDdhODUwYjRiZjY3MWZmODZjYzA3NTY2ZDBhYzg4MDQgcHkzaworNjQyODggNjEzZGFmN2Y4ZTQ4NmI0NzExNjQxMTJhOGJlN2JiMDY1N2JmNjU1ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTEgMTQzNTBlNzVkMDJhNGJlMmRiMmVkMWZlN2NmNDgxMGE0NTNhYTJjZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTIgMzg2YTcyOTg0YWY1ZGNmMzVkMGIwNDIzMGI5YmM5YjFlMGYzNjQzNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTMgZjc3ZjhlNzk5NzE0OTRmYmZmYWRhZjRkNzdjYTA4NjVlY2Q0NWM1NSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTQgMjZlOWM4NzFkMjNmYTEyODBkMTMzZWE5OTNlNmEzZjA5MjNmMjU5YiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTYgNDBkNjAxZGUyOGRjMDgxNzY2NzVkMTIzNjZmNjFhNGFmZTZiMTc5NCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQzMDAgNmY2ZmVkNGYwNjI2YjQ3N2FlZGJiZjg0ZDgwYzNkY2M3NzNmZmU4NCByZWxlYXNlMjUtbWFpbnQKKzY0MzAxIGE2ZDdiZmNkNzQ1NjkxZTBhNGRkYzAxYjIyYTlkMDk2M2I1MjgwZmUgbGVnYWN5LXRydW5rCis2NDMwMiBlZTI4MjNlMWYyM2I2NWY4YmQ0MGZlNzhiZmMwODBkZGI5YzIxMGI4IHB5M2sKKzY0MzAzIDQ2NTBlZWZiNTgzOGU5Yzk2MDRiODFiZjYwNjc5N2IxM2JmZTFjNzcgbGVnYWN5LXRydW5rCis2NDMwNCAzODQzMjg2MGIzYjQ2OGM4Njc2ZWYxNGQzNTg0MDM1OWQwYTY5MWZkIHJlbGVhc2UyNS1tYWludAorNjQzMDkgYjhlOWNjMjgwMjJjNTRmNDcxMDAyODRlYmE0MDYyMGUxZTY2YjAzNyBsZWdhY3ktdHJ1bmsKKzY0MzEwIDRlZDE2NTk0MGJkZDAxOTI1MWRiM2E4OGM0NzI1MjYwMDE3MTFlNjcgcmVsZWFzZTI1LW1haW50Cis2NDMxMSA1Yzg1ZDU1YzRmYjJiZGE0OTVlYzNkNzA0Yzg1MjExMThiZWY4NTNkIHB5M2sKKzY0MzEyIDU2NmM3MTM3YWE4ZGFlYzU0YjhiZWUxZmIyODM5NTUwOTdkOWZkN2YgcHkzaworNjQzMTMgMmUxM2ZmYWIxOTlmZmJjMmM4OTY4YmY1NDkyMGE3NmRjMzc3NGFkZCBsZWdhY3ktdHJ1bmsKKzY0MzE0IDYwOWIwOWE5ZmVlYjQxZjdmMjMzNTJmZmU5OGRlODFkNDI4YWVhYTYgcHkzaworNjQzMTYgODQ1OTBhNjRmM2EyMjY0MzM2ODQwYmU5MGQyOWZiZGQ3ODQ4Zjg1YiBweTNrCis2NDMxNyBmOGE4ODk0ZGE3N2E0YjcyNzY1YjhmZWM5OGMxNzUzYzhkOTRmOTM0IGxlZ2FjeS10cnVuaworNjQzMTggYTI5YmY2OWZiMzQ0NjQ3YzZmZjAxNzM2ZjU3OWY4MmIyZjAyYTQyNyBweTNrCis2NDMxOSAzMDJhNmQ3NjMzNzg0MDY1ZTIzMWVlOGRhMzAwZmY3MDYxODJhOTVjIHB5M2sKKzY0MzIwIGMwNzQxOGRlM2NkMzMyOGVjOTUzNTY2ZmNiMTEwOGQ3NTk1YjU4NmEgbGVnYWN5LXRydW5rCis2NDMyNiBiOGM5YTM1NDMzODEzYjI4MzU4OWY1YWU2OTY4MGNjMGNjNDA5ZTVlIGxlZ2FjeS10cnVuaworNjQzMjggOThkMDEyYThlNDQ1ZjA4YmMyMGQxOGJkZDg4NTNmNGIzZGNlN2I1NSBsZWdhY3ktdHJ1bmsKKzY0MzM4IDhlODVjNDZjZjY3M2MyNjdlYWZmMmQzMTA5MDk0NWE1ZWYyNzZmOTUgbGVnYWN5LXRydW5rCis2NDMzOSAyOGFiYzIwMmM3NzEwNTk3MTJlOTc5ZDIyOWJkODg2ZDlkYTUzNzdjIGxlZ2FjeS10cnVuaworNjQzNDAgMGIxYzAxZWVjNzg4NTI5ZmRmMjYwMzRlNjg5NjQ4MDcwMWQwMDQzYSBweTNrCis2NDM0MSAwMzYzOWIwOWMzNzYwMzI4YWE2ZjExYzQ5MDE0ZDkxOWRlODgyY2YzIHB5M2sKKzY0MzQyIDQwYTc1OTEzZjA0YTY0YjRmZjgxZDA0YTI2YjZmN2YzZDU3ZDFhMzkgbGVnYWN5LXRydW5rCis2NDM0MyBmNjQ5OTY3NjA5ODQ3MjgzOTdlNzZiMzg1YWJhNmY0MThlMTRiY2ExIHB5M2sKKzY0MzQ0IDZmMjdkNTJlOGQ5NTZlMzIzNzk1Njg2YWZhMTg5ZmIxOGIxOThkZDIgcHkzaworNjQzNDUgNjhkODdiYzA2ZmEzNzBkMjVjMDBlOThlNTAwZWQ1ZTkyYmJjMjUxOSBweTNrLXVybGxpYgorNjQzNDYgODcwMDExODk5OTVjMWFlMDhhZDYzYTYxNTA5MTNiZjQyMzliYTRmOCBweTNrLXVybGxpYgorNjQzNDggZjY3MjZmMzJlZjcwNDc3YmYzYTM4ZGNjODYxN2JjYTQ1NDE5ZjViNyBweTNrCis2NDM0OSBjYTA3NDIzMmI4Nzk3NjdhMjgxYzc2ZDhhMjFmM2MxNGYwNzUzMDUwIGxlZ2FjeS10cnVuaworNjQzNTEgZTM5YzgxMGE3ZWIyNzc5MTgwMDU3Y2FmYTlkZDk4Njg5OTJlOGNiMCBweTNrCis2NDM1MiBlZjg4M2ZiNGMwNzZkZDZmODc1YmM1OWM4YTRlYzJlYTcxMzRlODNiIHB5M2sKKzY0MzUzIDcwZDcyYTc1Y2NmMWU2ZjA2ZDQyMDFkNzNkMzlmODdjZjVmNGE3OTkgcHkzaworNjQzNTQgNWY5NDM1MzE3ZGUxNzA1NTI5Mjk5YjRkYjMxODk2ZTg5N2M3ZDcwNSBweTNrCis2NDM1NSBhMDUyM2M3YzFjNGY3ODQ1ZWI2NTYzZTVlYzU0NzlkZDg1NjBkZWUwIHB5M2sKKzY0MzU2IGExNzQxNjE3ZjA2ZjRkNTRjZjFmMGMzNDZhNWYyM2MwZGMzYmM4OGEgbGVnYWN5LXRydW5rCis2NDM1NyBkZjViYjBhNjU5NGJiN2IxMTc5OTZmZjM0NTg0Zjc1MGM3OGUxNjZkIHB5M2sKKzY0MzU4IGE0YjhkYmUxYjYzMzZmMWJjYmE3NTA3M2MzMTRlYzU2MTI3MTkzNDggbGVnYWN5LXRydW5rCis2NDM1OSAxODdhODFkZGFmMmJkZjhjZWEyNWQ5YTE2ZTE2NjQ1Y2I2YjU5OWQwIHB5M2sKKzY0MzYwIDAzYTlhOWQzMDgxZWRhYjY4MWY1MTg3MjY5N2E1MDUyNDZlMzZlMDMgbGVnYWN5LXRydW5rCis2NDM2MSBhNDA4YTA1ZDBlMjUxYjhiNjA5NjY3ZDZjOTk3NTkyMmU3ZDc4NDFlIGxlZ2FjeS10cnVuaworNjQzNjIgZDUyYTczZDhkMjBmMDMyYjkzZDc1ODZmOGUwYmQwZDAyMmVjNzk1ZCBweTNrCis2NDM2MyA2NmM4Zjc2Y2FjNDQ2ZDFhNDNmN2M0ZDE3ODA5MzExMzFkNGYyNDYzIHB5M2stdXJsbGliCis2NDM2NCBhYzg1NGNkZTMxMzVlNTdlYzFmNGZjOTVhZTVkNzQ0OTUwZjNjNTMxIHB5M2sKKzY0MzY1IDU2NGMyOWEwZmFiMWEwNGZhOTQyZDIzYWNjOTRlNGIyYmZkZmVkODUgbGVnYWN5LXRydW5rCis2NDM2NiAwYjE0OWZjNDAxODY4NmZhMjU3NGYyYWJkZWE0NWIwZGNlYzY0ODk0IHB5M2stdXJsbGliCis2NDM2NyAyOGY1NjdhNDEzZjQxNGJjYzBlMjRkMGY4ZTU4YmJjZjc0MWYwZWUzIHB5M2stdXJsbGliCis2NDM3MCBhYjEyZTNhZDJlNjY1ZjJlMmM1YWFlOWJiMzE2M2RmNjU0NjRkMWRjIGxlZ2FjeS10cnVuaworNjQzNzEgYjRkODIzNDgzNDIxZWI0MDRhNzA2NWM5MjgwOTA1NDFmZjBkNDQ0NyBsZWdhY3ktdHJ1bmsKKzY0MzcyIGE2NTAzYWUzZTE5YzFmZmNmNzFlOWQ1YjkyODMyNzViZmExOWMwYjAgcHkzaworNjQzNzUgNmI3ZGRjMGZkYTkzNzgyOTVmNzdmN2JlMDgzY2RkZDYyMWI1OTAyYyBsZWdhY3ktdHJ1bmsKKzY0Mzc2IDU3MDJlZGU0MjI3YTQxYmZlY2MzMjUxYmU1NmJmZGJlNjdhNGM1MTMgcHkzaworNjQzNzcgOTU0MDU5NzkxMGI5Njk1YzFmYzY5ZGZmMzc5MGRkNTBjNDA1Njg0YSBweTNrLXVybGxpYgorNjQzNzggNGRhNzcxNTg4YmEzMTAwNjg4ZDVlYTYxNjgxNzk0YzI0MmQ0ODJjMSBsZWdhY3ktdHJ1bmsKKzY0Mzc5IDE1ODhlMmZhM2U3ZTc0YjJiYTJmMTIzNGJjMGI5N2MxNDAzOGRlMTYgcHkzaworNjQzODQgNmFmZGQ2ZmU1NTEyZGY0ZGExNTA0YzEzYjAzMjZiMTQzYmIwYzM3OSBweTNrLXVybGxpYgorNjQzODUgNWE0MTZhNjQxN2QzODljY2JlMjQ2ODc4NTViZjk3YmVlY2IzZDA0MSBweTNrCis2NDM4NiA3NDRmOWM4MDlmMzAzZjQwNzE1YmJmMmRhZGI2YWU2ODU5MzRmYWRiIGxlZ2FjeS10cnVuaworNjQzODcgMDMyMjgwOGMyMGZlZTY4NTYzMDdkMDNmMWMyOGM1YzhlMWIzMGJmNSBsZWdhY3ktdHJ1bmsKKzY0Mzg5IDY5MDQwMDkyYjhmODMxNzZjOTkzZTkzMjgxZDlkMGU3ZTcwMjE5MTggcHkzaworNjQzOTAgMmMxMDY4MzI4YjViYTQ3NmIxNzI4OTEzOTk4NmZmMjY5ZThmYTY3NCBweTNrCis2NDM5MSAwN2Y5NDcyNjAxNzgzZTEyYzI4Yzg3OGFmOGM0MzA4NGE2ZGU3Mzc3IHB5M2sKKzY0MzkyIGVhMTk0YzlhNmMyZjlkZTQ0M2ExNWJmMjY5MjIyOTRkYWUzOTAwYzcgbGVnYWN5LXRydW5rCis2NDM5MyAyZGRkODZlMzcwMGMyMGVkY2FkYjI4NTI2YjM3ZWVjYmVkZTkzM2UxIHB5M2sKKzY0Mzk0IDViZDQzZWI5ZTUyMGMyNzYyNzljM2Y3NmE4MTI4OGE5MWU1YTU5ZDAgcHkzaworNjQzOTUgYTMzNWM0ZDY0M2IxY2ZlMTQxOTdhOWVmMTk1YzliMjgwNGY2MDhmYyBweTNrCis2NDM5NiBiMWVkMmIwMDVlM2RiZWFkZGY1NDY0YzUwNTUyMWMzZmE1OTQwYzMyIHB5M2sKKzY0Mzk3IDA3MzAyMjRlY2Y1ZmVlMWIwN2NhODNkZDhhYjAyNjdhMTkyNTUwOWQgcHkzaworNjQzOTggMmYyZjMyYWY4YzRlZThmNjU5OGY2MzJkYzgzNzAxYTIwNzI2ZDEwYSBsZWdhY3ktdHJ1bmsKKzY0Mzk5IDI1ODFlZTFmMjZmOWU0YjhkZDM2NzI5YWRiYWM3MWZiMWJhMDZmYjQgbGVnYWN5LXRydW5rCis2NDQwMCBlY2ZmMWExYTA3YjU1NWY4NWU4NjE4NzZmNjZmMmI1ZDU0ZTkzM2UxIGxlZ2FjeS10cnVuaworNjQ0MDUgYjM0YmM2MzhiOGE3Yzc4YjE5MGUzZDlmODZhNTY5MzgwNzIzMTBjYyBweTNrCis2NDQwNiBiZTA3ZjM3OWQ4N2FkZjBkZDY0ZTY4YzZlNjlmN2QwN2M1Yzk2ZGZlIGxlZ2FjeS10cnVuaworNjQ0MDcgYTRiZTRiMTc0NzcxMWRlMTRlMWI5Y2E1NDdlYmRiM2NkNmJlMTg0ZiBsZWdhY3ktdHJ1bmsKKzY0NDA4IGUxMDcwNjJhYTljZDc3ODY4N2Y3YWEzOTVjODFmNWIzMmFlNTg5YzMgbGVnYWN5LXRydW5rCis2NDQwOSA5YWYwZDY1YmMzYjI3ODQ2MDYwMzNlMGZmNzVlZTJiNTYzNjRjYWUyIGxlZ2FjeS10cnVuaworNjQ0MTEgMjdjNzhjYmZhN2M2ODFiOGEzN2IyMjMxMGQ1MjE4Y2VkOWUzNTdiZCBweTNrCis2NDQxMiAwYWVlYjJiNDgzNDFjNzcyODRkZDBlMmM1OGU1MWU0MWExYjk3ODMzIGxlZ2FjeS10cnVuaworNjQ0MTMgZGI2MmM0NDhhMzQ5ZTJmMTVjNGMyY2NlZTg5NjkxYWYyNjc4NTlkYSBsZWdhY3ktdHJ1bmsKKzY0NDE0IGNiODcxZjczNmJlMDI0YTc1ZjRhZTc5MzViOGE0OGU2NGM2YzkyZTkgcHkzaworNjQ0MTUgMmJmNDExMmNkNjgxNWM3MDNlMzY1NTI1ZTlhOGFiNDM4OTdjODk2MiBweTNrCis2NDQxNiBiNDE4ZGQzOWY3OThiZWY4NDcxZmMxOWM4Y2QwMGRjMjcxNWZkZTNlIGxlZ2FjeS10cnVuaworNjQ0MTcgNThmNDNhY2UyOTVlNWMzOTgxOTdhMzJkM2YwZDFjNzg5ZDEyYzliYyBsZWdhY3ktdHJ1bmsKKzY0NDE4IDZiNGIyOTJjM2EyZGE4ZGFiZDc2MjExYzdhOWQ2MTQxZTFkMDc0ZmUgcHkzaworNjQ0MTkgMjVkNmIyZDBlZTQyZWU4YTdmNWE4NWIzYzAzYzU5OTMxMTI0NWQ2ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ0MjAgMDdkY2YwZWE3ODgwZjQwZjkxMTk3Mzc0ZmQ5NTJkMjU2YmQ3NTQ4MSBsZWdhY3ktdHJ1bmsKKzY0NDIxIGMzOTI2M2U5NGMzMzA3NGQ0YjZmZTVhYzRkZWY0ZTA0YjYxZGYxMGMgbGVnYWN5LXRydW5rCis2NDQyMiA3Yjk2ZmFlNDAwZDYxODllOWUwNjUyNTA2NWZhMWI3NTg5ZWVmNWVlIGxlZ2FjeS10cnVuaworNjQ0MjMgMWJmZDVlNzEyYjk0Y2ExNWVkYjk0MzY3YzAyYTQzOGZjZDgwODYwYyBweTNrCis2NDQyNCBlZGM3MDFkMDBiNjIyNDEyMDJkNTI1ZGU3MTU4OTk1NjY2MjIxYzcxIGxlZ2FjeS10cnVuaworNjQ0MjUgNzE3ZThhZWU0YTlkMDdkN2NkYTlmNTgzZjNhNzM4OGNlY2Y5ZGNkMiBsZWdhY3ktdHJ1bmsKKzY0NDI2IGQxYTQ2MzUwYjA0NzZjNGZjYzMzOWMwNDMyMDRkMjk4NzMwZjYyNGUgbGVnYWN5LXRydW5rCis2NDQyNyBiZmRhMzk4YzkxN2U1ZGEyNTBhOWM2MDljYzY4OGYyZGM4OTZhZmI5IGxlZ2FjeS10cnVuaworNjQ0MjggYTcxODZmZWU3NTk2YjY2M2Y1MzQ1YzRhNGIwOTY1NmUxZTY5N2M0ZCBsZWdhY3ktdHJ1bmsKKzY0NDI5IDYyOWVlZGNiYjI2NTg1MzUyODQ3OWI0OTA4MjljMWZhMDljYzk4Y2YgbGVnYWN5LXRydW5rCis2NDQzMSBkOGRjNmIzN2ZkNzg5ZWY0ZjlmODk1NDgxOWNiZTc1YWQ2NWY2M2FjIGxlZ2FjeS10cnVuaworNjQ0MzIgNWViZWZmODA0MjVjNTQ5OWI0YzMyYWNiMjkyZTY1ZmNlZjk3NTk2YyBweTNrCis2NDQzMyA0ZTFjYWRiNzg3MWVlY2UxNDM4YTdlNjZhYzA5MWFjMjc2YzZlMTY0IHB5M2sKKzY0NDM0IGExMDdiYzJkOGYzNDI3ZDk5NzZiNjk0YjBjNTViNzA2ODNjMjUxZjMgbGVnYWN5LXRydW5rCis2NDQzNSBiMzIxMDFjMTliZjg0ODU2MzIwY2RkMzgwMTBmMzZiNzMxMmVmYmFlIGxlZ2FjeS10cnVuaworNjQ0MzYgNGZmYTliYmE3YzVmMDBiOGNhYjdkNDhkMWJlOWEyNWNhOTBkYjg0YiBsZWdhY3ktdHJ1bmsKKzY0NDM3IDI0NTIwZTgyNDEwNzJlNzQwMTc5MWE1ZDY1OWZiMjI2YzAwMDQ4ZDAgbGVnYWN5LXRydW5rCis2NDQzOCA0MjY3YWRhY2RkNTI3OGFkOTdhYzU4NWZmNjE0ZDFlNjMwOTJmODczIGxlZ2FjeS10cnVuaworNjQ0MzkgYTA2N2RjMDQzOGQ1MzJjNTUyMzZmMzRhOTBlY2ZlNWQ1NmZhMDA0NyBsZWdhY3ktdHJ1bmsKKzY0NDQwIDc1YjZiMjczN2VhNzE5MzY4YjdmNmE4YTY4Y2VmYjNhNzJjY2Y4YjcgbGVnYWN5LXRydW5rCis2NDQ0MSBhYzZlYWIyNDczYzViNmYxZTMwMjJmNDQyYzNhY2M3NDY2NTk5MzkzIGxlZ2FjeS10cnVuaworNjQ0NDIgMTZiN2M1MDBiNzUzYTNjOTZlNjA0OGQzMzYzZTg5NDAwYjQ4NmQyNSBsZWdhY3ktdHJ1bmsKKzY0NDQzIDljNjdkM2RjZTkyNWQ5NGZmNTk1N2MzMzYwZjA1Nzk3MDY5NTBjZDQgbGVnYWN5LXRydW5rCis2NDQ0NCBhZWFkMGM3ODFjYmVmNjEyNmExMWY5NTBlZDEyMjkxOWMwZDZmZjNjIHB5M2sKKzY0NDQ1IDU1NmU0ZjZlYzlhMDhjYWNlYWI3OGQ0NjVlYWUxNTM2NjZhNjdjYzUgbGVnYWN5LXRydW5rCis2NDQ0NiAwMTYxNjZiN2I5NzZlMzNmMGJjNjQwYThhNDcyZGMzMWZkNGE2N2Q4IGxlZ2FjeS10cnVuaworNjQ0NDcgNWU4YTdmOWQ5NTIzOTMyMWY4MmU5NzJiYzE2YjY2YTU0ODI4ZTg1MyBsZWdhY3ktdHJ1bmsKKzY0NDQ4IDk2ODE1MjcxOTYzZDVjYWIyYWMzYzBjYjY3NTA5ZGMxMTUxZjYxNTIgbGVnYWN5LXRydW5rCis2NDQ0OSBlMTdiODFhOTVhZWQyZThhOTg1ODIzNTBmMTM0MTVhMTJmYTQ4ZjJiIHB5M2sKKzY0NDUwIDcwZTFhMzhjOTgwNWI2YTZjMTdhNDkyZmNjY2U0ZTJmNzJlY2Y5NDQgbGVnYWN5LXRydW5rCis2NDQ1MSBjNTdkMWU5NTRkOTM0NTdjMzEzNmRhYmY1ZjE2ZDRjMjRmNWIzODA4IHB5M2sKKzY0NDUyIDk2YWRmOTZkODYxYTQ0ZDFiMjllOTE5YWY4MGZmMDQxOTVhMzczYzQgbGVnYWN5LXRydW5rCis2NDQ1MyA3Y2RiZTAxYTQ1NzY0YjJlMzg0M2I1MTg4ODNmMjYyMDBlMDQ2YjdhIGxlZ2FjeS10cnVuaworNjQ0NTQgYWMxNThjYTY4NmNiNTE5YTM4MDEyMmI5MjlhNGNhZmEzZTM5YWFlNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ0NTUgOGI2YzI4NTZkYmU1MTAzN2MyZmQ2ZWEzNWMwNDNjYWI4ZjEyYzUxNSBsZWdhY3ktdHJ1bmsKKzY0NDU2IGViOWZhZTJmYTNmOTY2NDJlYmJmNWFjNzFjYTVkNzI2YjkxOGIzYmEgbGVnYWN5LXRydW5rCis2NDQ2MSA2NWMyMzY2M2QwYmQ2OTgxMzJlYzc5ZjAwYjUxNGYyMzQ1MTFlODg4IGxlZ2FjeS10cnVuaworNjQ0NjIgZGE2ODkzZTIwMDRmNGNhNzA5MWQ5OWM0M2NjZDc0ZGQ2ODU0Y2Q1OCBsZWdhY3ktdHJ1bmsKKzY0NDYzIDY4Y2YzY2JiMjFkMjU4ZDhlMDIyMTZkNGNjZTNjN2I4ZDY5ZDhlMGQgcmVsZWFzZTI1LW1haW50Cis2NDQ2NCA3YjUxZWE4Y2M1NThkYmIzNGI0YzQwMjcxYWZmMmYwMmUxNWRiOTlkIGxlZ2FjeS10cnVuaworNjQ0NjYgYjExYjA5YzFlZmVmMmJlYjIzNTc4M2YzZDY3YzQ1MWU0MGVhNmQ2MyBsZWdhY3ktdHJ1bmsKKzY0NDY4IDg4YmQ4ZWFhNTE1MmVkYzU3OTcyNGM5ZTUzOTA2MzVmYzVjMzA2YTAgbGVnYWN5LXRydW5rCis2NDQ3MSBhOWFkOTlkMGM3MjI0YmUxOGFkZTIzN2VhODRjYjM0NzM0NWI5Y2NhIGxlZ2FjeS10cnVuaworNjQ0NzIgZTBmMWUxYzU2NmQ5ZDY3NTQzMmExNmY1NTE4M2NjM2MxMjExNGE3ZSBweTNrLXVybGxpYgorNjQ0NzMgZjg0NjkxZjQ4OWMzOGM2MDgzN2FkMDVmMTAwYTg2OThiNGM0NGJkNiBweTNrLXVybGxpYgorNjQ0NzQgZGQ5MDdkNmE3YTg1ZDE2M2M3ZTEyMWM1Y2UzZDBmZjNjN2YzZGNkMiBweTNrLXVybGxpYgorNjQ0NzUgZjAwMjdiZmRmOWJjNDQ1MjU2ZjQ3OTRlN2FjZjI5MDllNzc1MzVkYSBsZWdhY3ktdHJ1bmsKKzY0NDc2IDFmNjcxYzg1ZGYwNDdjNWI3NTAyNmMzNDY0NzIyMDE1OTJkOGQyZjYgcHkzaworNjQ0NzcgMWRiZDdhNTIyYTIzNjlmM2I1MjkwNTY5ZTY2NjE4YThiNDhkMWQ1MSBweTNrCis2NDQ3OCA2YzA0ZDE0OTk0ZDA4ODAxM2M0YjgxNmJjOGZlYzU0N2RhNWE2MWJlIHB5M2sKKzY0NDc5IDk2NzY4ODQ3OTg4MzBkODAxNjc0YWVlNWM5YzZiNzRjNTYzZWU1YzEgcHkzaworNjQ0ODkgNmUwNmQ0YTg2ZTNkMDMyOGQ4ZDIwODQwMDM4NjViYTYyYWJiZmI3ZCBsZWdhY3ktdHJ1bmsKKzY0NDkwIGIwMTU2OTMxMTRmNjc5N2FjNGIwZjFiMWUyZTFmMzFjNjMzYzhhOTYgbGVnYWN5LXRydW5rCis2NDQ5MSA3NTJlMWFiYWYxNWE1NmI1YjNmYWU4NDFkNzBhOTUyYmRjYjUwZDlmIGxlZ2FjeS10cnVuaworNjQ0OTIgMDk4MTczZTg0NGQxNTI4NTNjNTI5NjI3YWY4ZmE3MzZhZDNlYjdlYiBweTNrCis2NDQ5NSA1ZDVmNzI4NWY1YzU5YjRmNTE1NjY2MjRiZTk1NzhhY2E2NzFiMGVlIGxlZ2FjeS10cnVuaworNjQ0OTYgYzgzZWVmMDc4ZmQ5ZjBlY2E4OGVlNTg3M2U5MDY1YzE0NTllMTY2NiBsZWdhY3ktdHJ1bmsKKzY0NDk3IGIxYmRjYmM5N2ExNGMwOTRhYjA0ZTgyYjIxNjlmMDg2YzI2ZjFmN2UgcHkzaworNjQ0OTggNjhmZDNhYjg0ODRlZWI3ZDBiNWYzNjMzNzI3OGZmNmNmZWI0YThiNSBsZWdhY3ktdHJ1bmsKKzY0NDk5IDEyYmU0NGM2YTcwMmU4YjNiN2NhYWM5Zjc3ZjBjNDExZDhlODA0OTEgbGVnYWN5LXRydW5rCis2NDUwMCA3ZTc0N2RlMjMxYjM4MjczN2Y2MzE4ZjNiMjA1MGQzZjU2MWYwZDYzIHB5M2sKKzY0NTAzIDIyZmJkZGYxOGQ0ODhhMTAwMTgzMmU3NDc1YThjNTdlOTJkNTU1ZGIgcHkzaworNjQ1MDYgMjcwZmY2ZjRkOTlmM2ZkMGRmOTJmZjcyMjcwNjlmMjVlMmI1MTQ0YiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MDcgZDhhZmE0MWM2OTZhYmJkZWIwM2QyZGRjYzQ3NzFlYzZhY2IwOTA3ZiBweTNrCis2NDUwOCAzYjZmZmNmZTI5NzFlMWZkMzk5ZTAyZTFjYmZmYWI2YTQ2ZjFlZTc3IGxlZ2FjeS10cnVuaworNjQ1MDkgOTU3NGZlZDkzNjg4MzZhNWJmZjc3OTJmMmE3ZjkzMWUyNmY4MGI3YyBweTNrCis2NDUxMSAwYWY2ZjAzMDBlYWZmNDQzZDY4NmIyYTU4ZjdiYmZlNGI3ZGU3YjhjIGxlZ2FjeS10cnVuaworNjQ1MTUgNzc4OGU5ODkzYjg1YmI5MWM3NzNjNzFkMGEzNTNhNDVkMGVkMTI5ZCBweTNrCis2NDUxNiAzYWRhNDZmMjMyMWRjMjQ0NjgwYjQ3MmRiMGUwYjBhYjAzODNiZjFiIGxlZ2FjeS10cnVuaworNjQ1MTcgM2M4ZDNiOThjZmQ3M2NkMjIzNDZiYWVkN2Y3ZDVlYTEyZWExMDA4ZiBsZWdhY3ktdHJ1bmsKKzY0NTE4IDM4MGFhMmQxNjFkMzkyOTcyMzgwMDhjZTRkZTgxYTAxYzBmYjlmZDMgbGVnYWN5LXRydW5rCis2NDUxOSAwYjUyYmRjNGNkODkzOTk5MWI4YTRhYWU5NzUyYTYzMGYwMTkzMTM0IGxlZ2FjeS10cnVuaworNjQ1MjAgNjRhYmI2MWU5ZDRmN2YwNDczZjdiN2ZhNGM4ODEzNjMwZmI1YzJmYyBsZWdhY3ktdHJ1bmsKKzY0NTIxIDU3YzgyY2IwZmFmZmNlOWJmZDJjZDFkODliYWZlNzE2OTQzNDJmMGIgcHkzaworNjQ1MjIgMzdhMjFkMDk3ZDM0ZDM1MTQ1ZTY4YzY1Zjk2NTdlYzIwYzgyYjVmMiBweTNrCis2NDUyMyBlNWE1MWVkOWU2MzQyNzBlMjRlMzExM2EyYjNjMzE2NGNlNjM3OGFiIHRsZWUtYXN0LW9wdGltaXplCis2NDUyNCBkMWU4NjRhNWM2MGM4YjRmMmUwNzg4ODNmMzg3Y2Q3ZTA1NDM1YzA3IHB5M2sKKzY0NTI1IGZmYmQ0ZTMzM2UyZjliZDBlM2YwODgxNWJhYWY2MDE5M2FkZDc1MTggdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTI2IDdkZTAzODU1MDUyM2RjMmIzODhmNmQ0NWQ1NDI3ZjM3MGRlZTQ2NWQgbGVnYWN5LXRydW5rCis2NDUyNyBiZGUyYWI5NDM1OTNjM2E5YWMxODM3ZTVjNGI5MGRkZjMwMmFlY2I1IGxlZ2FjeS10cnVuaworNjQ1MzIgYjI2MTE2NDI1YjExNDM2MDA2NTFlN2Y0ODM2NTMzYmZlNGZhZjgwZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MzMgN2ViMzczNzY1N2QxMmVmYzgwYzAwMmYzYWE5NmVhYmQyNjZkNjM1OSBsZWdhY3ktdHJ1bmsKKzY0NTM1IDg4MjFiNDA1ZTBlNmNmOWU4NmE0OWE1NmEwNDU3ZmYzNWRkZjQyOWUgbGVnYWN5LXRydW5rCis2NDUzNiAwNjRiMGI3NWJhZDUzYjViYTczNjdkMWE5MmU1ZWY0ZDYxMjdiNjNhIHB5M2sKKzY0NTQ0IDhjOTI5Y2UwZmI0MWMwODY1MWU1YWJkMzVlODU3ZDgyNDkzMDRhNWYgbGVnYWN5LXRydW5rCis2NDU0NSA3MjNjMGZmNjk4YjdmNTZmODM1ZTRlNTFmMTA1NGU2OTExN2ViZjM3IGxlZ2FjeS10cnVuaworNjQ1NDYgN2ZiYzM3NGM5NTlkMmQ3NzlmNWNlNjY0ZjM1ZWY0ZmMwODA2ZjdlNSBsZWdhY3ktdHJ1bmsKKzY0NTQ3IDU4ZGMzNjdkYzFlYTAwYmQzY2M4MzUzZGM0YjI2NTJiMWM0Mzk5OWQgbGVnYWN5LXRydW5rCis2NDU0OCBjNGI3NjZhZmFjNmY2NDZlODcxYTEzMTRkNTQzZjY2MWZkYWQyYTNmIHB5M2sKKzY0NTQ5IGRjNDJlZmQ3MjhlZWI4MjJkNTYzNDJlMzYzM2JlOGM3YzUzMjYxYWMgbGVnYWN5LXRydW5rCis2NDU1MCBlZGQ0OGIwODQ5NGRhODk2Y2JmZTU4ZGQzMGJhYmM4NGI1MzY2MTMwIGxlZ2FjeS10cnVuaworNjQ1NTEgYmZhZjE0Mjk1Nzk0OWUwNDNiZDhjZmU2YzdjZGQ4ZTlmZGZmZGNmNSBweTNrCis2NDU1MiA2MDVhYjZmOTI4Mzg4YWY1ZjFkZmFhOTIyYzg5NWE0OWZkMDc5MTkxIHB5M2sKKzY0NTUzIGM3MTJiY2QzMjAzYjRjZTk4MDRjYWVmYTAxNzhjOGY2N2UwYjBjODMgcHkzaworNjQ1NTQgYzU2MDcyZWFhY2MyNjE4YTEzMzlkOGNhMjc4MDBkOTMzMTRjYzg0MyBsZWdhY3ktdHJ1bmsKKzY0NTU1IGE2OWJkM2FiOWY5OTdjZGJhYTE5NjM1N2NiNWYyNzExNmM1ZDMyNDYgbGVnYWN5LXRydW5rCis2NDU1NiA3MjQzNDAxM2IwMzBmZGM4ZDA1YTBlMjVmYTgyZDUxY2MwZWYyNTVjIHB5M2sKKzY0NTU3IDQzZjZiYjBlYWNiMmY0MDgzYjk2OGJmZDRiN2I3MTg2YzI4YWZhMjUgbGVnYWN5LXRydW5rCis2NDU1OCA1YjRjODcwOTkwM2QwN2E1MjUzZWUxMTQ2MzQ2NDRiMzZmZTQ2NDYxIGxlZ2FjeS10cnVuaworNjQ1NjEgODgzOTIwMjE5NDJhNmRmZGNlZTg2YTMxODY0ZDg3NmVhYTI3NzdmOCBsZWdhY3ktdHJ1bmsKKzY0NTYyIGVkNWRjMTNiODk5YmEyZDZiNTQ1YmY4YWExNzk0YTg1YzEyODdiZDMgcHkzaworNjQ1NjUgMWM0YmQ1MDJkZTYyOWIyOTBkYzg3MWQxZmIyYjIxMjk2YTc1OWI4NSBsZWdhY3ktdHJ1bmsKKzY0NTY2IDUwODU5YWU0YWViYmE0YmQ2MmEzNjVjOGQ5OTc2ZmYyMTA5ZjMwY2YgcHkzaworNjQ1NjcgODQxYWUxNzY3YjRjNTQ4MzhiZTA0YmYyNTA3ZWY5NjlkOTBhNDQ3ZiBsZWdhY3ktdHJ1bmsKKzY0NTY4IDI0OGI4YWRmY2M5N2EzOGY1ZjM4M2UwYTBiOGJhOWUxNWUzOGY5MTEgbGVnYWN5LXRydW5rCis2NDU2OSA5MDNiNmUyYTMwNGZiMGIzMDdjY2U0YzlhNWZkZjczZGY2OTg2NGY2IHB5M2sKKzY0NTcwIGI4NTc3MDQ1OTU5MWI4OGI2ODJiMDI2MjJmNzBjM2YzOTU1YTNjMDUgbGVnYWN5LXRydW5rCis2NDU3MSAyYzhlM2NjZWFjNGViNGUwNDAxZTRhODVkMWE4YWZiYTYzMmRiYTM4IHB5M2sKKzY0NTcyIGFmY2Q2OGE4N2VlY2FkMjExMGUxZjg5ODU4ZGY1Nzk5NjE3YjRlMDUgbGVnYWN5LXRydW5rCis2NDU3MyBiZGJiNjZiYzM3ZGNlMWIzZmNhY2NlMjlkNjc3YTU4NGExMDJiNDJlIHB5M2sKKzY0NTc2IGFmYmQ1MGFkNGYzNDg0MDVkNmJkMzViOTgyN2Q1MzM3MmRjYWM5MTUgcHkzaworNjQ1NzcgMWRkMTBiMDRkYjQ3NDFiOWZjOTNkNDIyODU5YjIwZjQ3NzdkZmQzOCBsZWdhY3ktdHJ1bmsKKzY0NTc4IDhhMjgxYmZjMDU4ZDdmMGQxZWE4ZjUyZDliNmNkMTJmMmM1NWU2ZTggbGVnYWN5LXRydW5rCis2NDU4MCAwZmM3ODYxZWNlNWY2Y2YwZTYyM2FiNzU2N2Y4ZmFlNzNhYTU3ZDgzIGxlZ2FjeS10cnVuaworNjQ1ODEgNTVhYzZjN2NlYjU5ODNjMjVmMWZhOTZkNmY1YzI0NTlmNjI2ZmFlMSBweTNrCis2NDU4MiAzYzQ5YWYyZDViZjBhZmU2NWQwYTgxMTA0M2YxN2VlNTNmM2U2NjZjIGxlZ2FjeS10cnVuaworNjQ1ODMgYWQ5YmViNDFhYWMxMDUwMGY3NjU5NTc1MmQxNjFlMWJjZDBkNzFkMSBsZWdhY3ktdHJ1bmsKKzY0NTg0IGUxN2FkZmFmNGY2NGM5YzRhNDE3YWIwN2E2OWVjYjA4NTk0YTZiNTQgcHkzaworNjQ1ODUgZDk0ZmE0Y2I1MmU3MzQ5YTlkMDkwYzM3MmIxNzI5MGFmMmQxZGNkMiBsZWdhY3ktdHJ1bmsKKzY0NTg2IGVmOTI3MDM3NDg0NDRjY2U5MThlMWMyMzYzNzE2ZjFkOWY5ZGM0YmEgcHkzaworNjQ1ODcgZjVmNzBmMjBiNjc4Zjk2NmY2NmE0MWJmZmQ3YzAwOWU1NDIxNzcwNiBweTNrCis2NDU4OCA0ZDJkMGEyMWQ0OTQ4ZGE5YzJjN2IxY2YyN2ZiNGQ0N2Y0ZDQ1YTYzIHB5M2sKKzY0NTkwIGJlNTViN2MyYzhlNjkyNWNiYmU2OGY1OGMxNWUwZTc5NDY1NmZjZjAgbGVnYWN5LXRydW5rCis2NDU5MiA3M2NiY2RlNzVlMDU4YzM4NzQ2ZWFjZWZmZTQwOTJkOTA0NDU5YTZmIGxlZ2FjeS10cnVuaworNjQ1OTMgMjk3ZTEyMThlZmU1MDlmOTM3YmY4MTg2ODE3OTQzZGQ2MzExNmUwZiBsZWdhY3ktdHJ1bmsKKzY0NTk1IGUxNDczOWM1ODQwMTM2OTM0NzViNjE4NDMzYTJmMzg4YjNiOWE5ODAgbGVnYWN5LXRydW5rCis2NDU5NiAyNTQxMmM2ZDI3NzYzNTY1ODBmODI3MDE2NTc4ZTY3ZjhmMjJlYjQ1IHB5M2sKKzY0NTk3IDgyYzQ2ODFjZDliZDA3YTNhZDdlZDVjMWU2MWVkNDNhYTMyZDY4NjcgbGVnYWN5LXRydW5rCis2NDU5OCA3NjA0NTE1YTgxOTg1YWI3MDcyN2MzZTRhZmNiZTc1Y2YwOGM4Yjg1IGxlZ2FjeS10cnVuaworNjQ1OTkgYTkwMGJiMWRlZDlkOWI2ZTdlOTZmZWQ1YTkwNTVhYzliM2FhYjhhYyBweTNrCis2NDYwMCBiOWQyZmY1ZTNkY2ZjMGFlOWVhZGU5NTUxNjc2MDUxYzRmZDBmYzcwIHB5M2sKKzY0NjAxIDhjY2IzNTczOWE5NmYyMGIyYWQ3NjYwYmNkMmVlMDM5NzgyMzZjYWUgbGVnYWN5LXRydW5rCis2NDYwMiBlMjliNGNlNjQxZjk0MzE5NWY4NTFhODE0YjFiNGM2YmM2ZmRhYjUyIHB5M2sKKzY0NjA0IGZkNzljNGQ5Nzc0NWFkMWVjZGZiNzk4ZTI1YjgyYTA0YmM0ZTI5ZTggcHkzay11cmxsaWIKKzY0NjA1IDhjZmI4OWI2MWMyZTUxYjc5MmIxZWJmMzlmZjYwZDI5NzZlMjgyZTkgcHkzay11cmxsaWIKKzY0NjA2IGI2YWQ2NjRjYWU0OTk4ODI3MmRiOGZkM2EyYTk3NGU0NjJiNTk3ZjEgcHkzay11cmxsaWIKKzY0NjA3IDdiMmYyMTg5NTM5MjNjOTBlNDExZTliMzY2NjYxMzYxZDcyY2NjMDQgcHkzay11cmxsaWIKKzY0NjA4IDczOWNjOWZkZWZlNWQ0YWViNjQxNzA4YjVlOTA2ODVkZGJhZjkwZDEgcHkzay11cmxsaWIKKzY0NjA5IGFkOWZiOWYxZDZkM2JkYmFmNTMxNzA0NDUxZDZlZWNhYWJhMmVmZDcgcHkzay11cmxsaWIKKzY0NjEwIDQxNmE1NmViMjRmMzNhYWRiZmNjMzhjMjFmYjE5N2Y0OGEzNTQyMjQgcHkzay11cmxsaWIKKzY0NjExIDQ0NmUzZGFjMGMzMWJkNDlmYjM2Njc5ODE4NzdlNjkzNmM2M2NlZjMgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NjEyIDM3YzdkMTc3NDBjY2E2ODk0MjYzNTczMTdkY2VhZmQ4M2QwMWY3MDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NjE1IGUyNzE5NzZhYzM3MjRlYTBiMTQzMzc4NjdlMmVmOGRhNzkzZjEzYmQgcHkzaworNjQ2MTYgNWY3NDY4YWMxNGNkODdhNWEyMTIzMmM1OWM5YzExN2VkNDBlZDE2MiBweTNrCis2NDYxNyA5MTNhYTI3NGVkNzdiNTdkMWMzMWZiMDk3ZTFlNDRmNzNjYzhkNWVlIHB5M2sKKzY0NjE4IGFjZGZmYjViNDM1MjIxMTNkZmRiNWRkMDViYzhmYmQ5NmQzYzllZjQgcHkzaworNjQ2MTkgZWVkNTMxN2FjODM3ZTI2M2QzMGVhOTAwNDhmM2ZiYmVjN2M0ZWE3OCBweTNrCis2NDYyMCBmOTJjODAwOTVjMTRjOWQ5MWI0NWM1ZGRlYTUxMzQ5ZTUxNDE5NTE5IHB5M2sKKzY0NjIxIGJiNjVmOWI3NmMxZmE1MWEwMmRjNTgzZGQwNTE3ZjUzOGY3ZTFkOWYgcHkzaworNjQ2MjIgODAxMDlkNDA0NGNkYTRmZTkxZTRjNGE2N2I0OTAxZGQxNDk0YWU3ZiBsZWdhY3ktdHJ1bmsKKzY0NjIzIGUxMGUyNTdjYmY2MTVlYmI2NzEwZWRiYjYwYjY0OGViYWUzMmUwNDYgbGVnYWN5LXRydW5rCis2NDYyNCA3ZDE1MzBmYWMxZjY2ODQxNzY5MmNjOTQ0NzEyZDcxODZjNjNhNzJkIHB5M2sKKzY0NjI1IGU2OGZlOTBmMTVhYjAwZTAzMjE4NmY4NTkwZWQwY2U0ZWJiYmRkOWQgbGVnYWN5LXRydW5rCis2NDYyNiA0MjMwOTQzN2YxY2EyNWMwMTYxMzg3NDk4ZDJiMzYxMmYyNDFjMGRiIHB5M2sKKzY0NjI3IDdlMjk5YWIzNWQ5NWUxOTk4OTk5NzkwZGM2ZDM5ZDhlYmI0YTIyZmEgcHkzaworNjQ2MzAgY2ExMzUzYmZkNDhhMzIzMjMwMWRlZDgxNzlkMGY1NDRjYWEyMGEzMSBsZWdhY3ktdHJ1bmsKKzY0NjMxIDcwMzU3ODExNzc4NjI3YzFhMjAxNTE1MzMwM2Q2YTZlYmVmMDczZGIgcHkzaworNjQ2MzIgZDY2NDA0OWVjYWNhZDhiZTE5ODk5ODJiNTBlMWM0Zjk5MWM4YTMyMiBweTNrCis2NDYzMyA3ZGJkNmI2MDc3MDZhMzYzYmFhNmQ4ZjEwODc4YWJlNWU0NmU2NTE5IGxlZ2FjeS10cnVuaworNjQ2MzQgNzBhNGVjNDEyODgyMmFjY2I0NzU0ZDU3NTBlZmY3MjQ1NzgxNWM3ZSBweTNrCis2NDYzNSBjZGE1NTZkMjM5MjQ0N2I5OTA0MDE2OThhZmM4YWE1ZWQxMzY5NmRhIGxlZ2FjeS10cnVuaworNjQ2MzYgMmQ0ODc3Zjc1MDBlZmFjMzgxMjNkNGY4YmM0Y2EyNTM1M2I5MTgzNSBweTNrCis2NDYzNyA2YzM4NjA5MTQyOTJjNmJlODMwNmFlYzYzNjZjZGMwNTJiMmQzNzg2IHB5M2sKKzY0NjM4IGEwNmEwZTExMzJlZTAyZmJhZDExZjgyNGM3NzI1MmFkZDlmZGE5ODIgbGVnYWN5LXRydW5rCis2NDYzOSA2MGZkMDg4NjgxMWM3NWQ1OTYwNzBlNjY4MmQyZDhlYTU3Yzk5YTk3IHJlbGVhc2UyNS1tYWludAorNjQ2NDAgNGE4MzI5NTM1MjM0ZDc1YjVkNzZjNGRiODc4MjAxMTBmM2FjNjZkMCBsZWdhY3ktdHJ1bmsKKzY0NjQxIGU4YmVlMzA5N2Q0NDBlNTNiYmYzZjVlODk2MDU4NWVlZDVhNGI2NDMgcmVsZWFzZTI1LW1haW50Cis2NDY0NyA2Y2QzY2JlMDcwMzVlOTRmZGJhODgzZGRhNDdhZjkzZDA1YWRmMjliIGxlZ2FjeS10cnVuaworNjQ2NDkgODAxNzU0MjAxYjExNDEyODYyYjM1OWIwZTM5YjgyMmFiNjk5MmZiMCBsZWdhY3ktdHJ1bmsKKzY0NjUwIDJkMDM2Yjc4ZGZhNDBiZDYxMjVkMmQ2MWY4ZTA2MWM0NGI0OTFlOGMgcHkzaworNjQ2NTQgYjdmM2Q5NzBlNDRmMDMxNzBmMzQ2Y2M4YWRiODg2NDViYmM3MmZmMCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ2NTUgNjVhZjU0NGRhMTIxZDQ4NTE1MTk0ZDJlZDgxNjlhNDE2MGM5NTczNSBsZWdhY3ktdHJ1bmsKKzY0NjU2IDVkOGY0NzAwNWI3M2ViMGM4NTk3MGQ2YWQwYjJhYzE5Zjg2YTAzOWMgbGVnYWN5LXRydW5rCis2NDY1OCBmOTI3MjQwZGVmMWI3M2M3ZWQxOWRiOGI5MDAyZjI1NmUxMzgzZmUxIHB5M2sKKzY0NjU5IGIzOWNlZWM4MWMxNzRmODFkZGUxMmQ5Yzg4MTkwZTYxMWZhNjdkOWQgcHkzaworNjQ2NjAgZTIyZGVhZWI2YzFiMDJmMjE3Yjc0NDI5ODk4MTFkYWY4ZWFjYzIzMiBweTNrCis2NDY2MSBhZGY0OGYyZmFkZmNiYmU5NTc0YmIzMDZlZWU2OTIwMDU5ZDJhNDRiIHB5M2sKKzY0NjYyIGRhZjlmYWQ3YzU1MTkxMzZlMjI4OWNhODlhMzcxYWE0ODBhZmFlNzYgcHkzaworNjQ2NjMgODMyYWU1MTNkMzQ0NDUwMTY2YTdmNjA1Y2U0NTcyYmYyZmNiMzc2YiBsZWdhY3ktdHJ1bmsKKzY0NjY0IGU0YmJiMWQzZGQxNDVjOGM4NmNmYWMwNjUxNmE1NmUyNGQwOGQ1NDEgbGVnYWN5LXRydW5rCis2NDY2NSAzMDk1NDJmZDdmZThkMzM4MDY3NWJmM2NmMTRhN2MxMTMzNmQxZjY3IGxlZ2FjeS10cnVuaworNjQ2NjYgODFmZDhhOGJhYTlhNzMzY2I1MTljYTJlODExZDlhNThlYjQ1Mzc1MCBweTNrCis2NDY3MCAxODk5YmUzMTIyYzIyMGVjOWZkN2JjOTk4MTg4NzY3YmQzZTBlMjk4IHB5M2sKKzY0NjcxIDVmNGE4OTgwYzFhY2JmNjk5N2MwZDdmNjM4ZmZhNDBkODVjNjI1MjYgcHkzaworNjQ2NzIgN2U1NjAxNmE2NTY1OWUwZDJmZTBhMGEwNjg5OWM5N2MyNTIxNzgzOSBweTNrCis2NDY3MyA3MGUxZDJiYmJjMzJmYWQxNThkOWIzMmE0MjAxMzRiYjI1N2RjMTEyIGxlZ2FjeS10cnVuaworNjQ2NzQgNDAyNWY2Mzg5MTFmYTE5NjFlMTEzZGI5ZDA4ODE3ZjE5MTAzZDZiNiBweTNrCis2NDY3NiBiZDIzMzQxMjBhMzBlN2M0NzFiNDc1NDNmMTc2OWI0YmVmNGYyZjZjIHB5M2sKKzY0Njc3IDY5MDFkNWZmMGY3YWI2YTkzMDBkYzU1ZWZjNjU3MWFjZGYxMDAxM2YgbGVnYWN5LXRydW5rCis2NDY3OCBmYjAyZmVkZmU2NDdmMmM4ODJmMzQ0YTY3N2ViNzM1NmM3NTI5ZDNhIHB5M2sKKzY0Njc5IDFmOGJlMjZkMDk4YWNhNmJlZTZiZDFiMzdhMGVkZmE5OGY2OGY5YWUgcHkzaworNjQ2ODAgOTg4NjBjZmExOWZkMzhiY2ZiYzgwMmRkYTQyOGIyODZiNTc2YjE0ZiByZWxlYXNlMjUtbWFpbnQKKzY0NjgxIGFhMWZiZTMyMWFjZjFmMGEyZjRlNDQwZjllNDk5NGVlMDc5NTEwOGMgcHkzaworNjQ2ODIgMzUwYTI4OWIwZWQ0NWM0NGU0N2U4ZmI5ZTlhNDE0ODFjMGI5Mjk2NSBweTNrCis2NDY4MyBlZjhkNzQ4N2EwNzc3M2MzZjgzMjQzNTU1YjUxMzE1Y2RkN2ZiYmM2IHB5M2sKKzY0Njg0IGE1NzIzYTgzNjdlNzZhMTg5NjYzNDlkNWM5OGQzMjBhNTRhMGRhMjggcHkzaworNjQ2ODUgNDIyNGZmNzdhMWRkY2ZlZjI1MGUxOWY2YThiOGExMjRmYWUyNzY5NyBsZWdhY3ktdHJ1bmsKKzY0Njg2IDg5M2Q5MGI3NzMxYmQwMTVmMDYxY2M4NzgzM2FmZjJlOWY3ODA2NDMgcHkzaworNjQ2ODcgN2QxZTYxNDkyYzdkZmQ3OGIyMWQ0MTE5NjMyNWYxZTE5MmY0NTYzMCBsZWdhY3ktdHJ1bmsKKzY0Njg4IGFjZmFkODY0MGUyMWZmOWJjZTRmZWIzZTM1ZjRkZGVlMmFiMzgxYzIgbGVnYWN5LXRydW5rCis2NDY4OSBlNTAyMDQ2NjY4YjEwMGM4ZjY5NmY5NWEwNTAyZjQ2NzI3ODg5Nzk5IGxlZ2FjeS10cnVuaworNjQ2OTAgODA3ZDY5OTViYWZkM2VlZDI2NzRkOWVhMDA4NjkyZDMzMzUyM2I5OCBsZWdhY3ktdHJ1bmsKKzY0NjkxIGNkYWFjNzlhNzIzNzY4ZDkyODMwMTM0NjNmYjc0NDc2NzlkMjg3Y2YgcHkzaworNjQ2OTIgMmQwYzM2NDMyMjNmNjkyNjg1MDg2MzIyMzdhMjc3MzI0NjA4ZjRmYiBweTNrCis2NDY5NiA0MGVjYjkxMzM5OWU2NzMxMzRiNjY3NGNkZmIxMmY5MjNjNDBiOGVhIHB5M2sKKzY0NzAwIGIxYjNhZjgyYWRkNmZhZDNiMjQzMzgwNmI1OTdmMDA2MTYyYmFmNmYgcHkzaworNjQ3MDEgNGU2ODU5YzZkMzhjOGEyY2FhOTM2YTcyZGUxYjIyMzgwNmQ1ZjMyMSBweTNrCis2NDcwMiAxM2M5ODUyZGU4MWEzZDAxYTI4ZjkyZjYyMjNlZmM4ZTA5YTllMjY5IGxlZ2FjeS10cnVuaworNjQ3MDkgZWE3Y2MxOGM5YWM4NmYyMzJjY2JmYTVhOTFkMjhhMDQ4YWM4MjI3YSBweTNrCis2NDcxNiBkYzliM2YyODkyYjhiMGM0OWUzMmI0Njg4YmVkOGIyYzVjNThlYTAyIHB5M2sKKzY0NzE3IDA0ODE3NzkzYjk2MjViMjQ2MDhkYWExN2FiMzJlOTEzYTkxN2U3M2EgcHkzaworNjQ3MTggZjI3MjA2MTAxZmY5NDNjMmEwMmViNGI4NTNhNDRkNjdkYmEyMmZkNSBweTNrCis2NDcxOSBjOTM1OTZlYzFkM2RlNjY1ZDM2MTBjMmNiYTNkMTg0ZWQ1M2M5NWRkIGxlZ2FjeS10cnVuaworNjQ3MjEgNmYxMzJhMjZiMjJmNzdjZTQ0ZmYxMjg2YWZmNTJkMzVhZDZjZGU4NiBsZWdhY3ktdHJ1bmsKKzY0NzIyIGQ3NTI2NjcwZmYwYWRlZWRlODJkOGQzMmYzMjdmMGY4MWYzYTI4M2EgbGVnYWN5LXRydW5rCis2NDcyNyAzYjAwZTlmOWQ2OTI1OWYyYzUzMmY1ZGFjOTExYzEyYmNiMzhhMTM2IHRsZWUtYXN0LW9wdGltaXplCis2NDcyOCA4ZjEzNDY1MDIyMzQ1ZGRiMzBmYzE2NTQ5OWY2N2ZmNWViZjgwMTgzIHB5M2sKKzY0NzI5IDRiZjg0MDM1Y2I1ZjU4NDFlYjcwOTc4ZTZiMDViNDNmMTE4OGYyZjAgbGVnYWN5LXRydW5rCis2NDczNSBmNzcyNDc2YWQ5MGRmOGU5Mjc2NDA0YzllMDY3Yjc5YTM5MzUxNmJmIGxlZ2FjeS10cnVuaworNjQ3MzYgMjI3OWRkNGEyZjczMmI3NTM4Nzg5ZGVlNDI0N2MxNGY3ODkzZmRkOSBsZWdhY3ktdHJ1bmsKKzY0NzM3IDQ3MjFmMjdlZDZjMjdlODc1M2QzYWFjNjA4OTNhMDNhNDkwOWZkMTQgbGVnYWN5LXRydW5rCis2NDczOCBmYjI3OTI0MmY5NzEwMmQwZGE3NjUyMDAzM2E2YmRhNzliYTFhMmFjIHB5M2sKKzY0NzQyIDQ4MDBkZDIyZjQ1NTgzOGYyZDIwYjVlNjBkNTRkYTdiN2U3ZjExYmUgbGVnYWN5LXRydW5rCis2NDc0NCBkNjY1NzlmOTI1YzQ2Zjg1YjhiMWU4ZGE0MWNlYjRhMzU2MTMwYjYzIGxlZ2FjeS10cnVuaworNjQ3NDUgMjQ3NjM3M2Y1NTRkMTUzOTFmOGJiMmJhNDgzZDgwZmEyM2Q3MWE2NyBsZWdhY3ktdHJ1bmsKKzY0NzQ2IDQ1YjY3MjM2N2IxZjdkNTIyYzNjZGYwNWY1MGExZjc5YjQ4YWQzOWEgbGVnYWN5LXRydW5rCis2NDc0NyA0YmEzZDA3Yjg3MWY4NzM0Mzc0OTNiYTZlMzRhZTgyOWFjYWFiNjUxIHB5M2sKKzY0NzQ4IDRhNzJiZTFkNWMyMTgxMWM4NTNmOGYwZjkwZDRhZmVkMTdhMjNmOWQgcHkzaworNjQ3NDkgNmFlNzFmNTIyYjJmMGFiZmU2ZDAwOTUyZDZlZDE1ZmFmZWUyOGEzZCBweTNrCis2NDc1MSBmYTM0MDg4MzgwZjliZjMwOWNkODEwNzI2NWJkNjIwYWRhNDgwYzFkIHB5M2sKKzY0NzUyIGEwODgyYmZhZjU0ZDhkN2RhMmY5YmUzMDEyOWVhMDFmNzY0Mjk5OWQgcHkzaworNjQ3NTMgMDczODExOWMxZWY4ZmQ5NWE4ODEzMjJmOWM1YWVhNTZlMmI4MDljZCBsZWdhY3ktdHJ1bmsKKzY0NzU0IGEzMTJlMDNhMDYzMzI1MWQxZmUzZDI1ZDdhODZmNmRhNjg3MWEzZDcgcmVsZWFzZTI1LW1haW50Cis2NDc1NiBjMzE5M2I3MTU2YmI2NjUwNDEzNGYyMWEwZmY5NmZmMWQxYTg2MzMwIGxlZ2FjeS10cnVuaworNjQ3NTcgYzNiYzA1MjM3MjcyZWRlZTAyMTg2MmNjNzc0YmNlNDZjMTgwZDBhOSBsZWdhY3ktdHJ1bmsKKzY0NzU4IDJiOWUxMzBlMjFiYzU0NjI5Nzg4Yjk3NWM4Y2VhYzIzMmQ5NDc3ZWMgbGVnYWN5LXRydW5rCis2NDc1OSA2YzlhZjE0ZDdiODEzNDc2ZTIxOTgyYjk1NmMwNWQyMTkxN2M5N2JmIGxlZ2FjeS10cnVuaworNjQ3NjAgNzFkMzFhYjczNTA3MzFmYWNiNGZjNzA4ODM2YzZlNTY1OGU5M2I4ZCBsZWdhY3ktdHJ1bmsKKzY0NzYxIDNhZTkyOWMwZWU3YTI4NWViYmU1NmI5N2Q0NGZiMzA4ZjliYWUyZmYgbGVnYWN5LXRydW5rCis2NDc2MiAwYzYyYTI3OWU0ZGFmZDIwYTIyZTUyMTRhYzExZjY2YzIwZmI3Yzk4IGxlZ2FjeS10cnVuaworNjQ3NjMgMzk0N2JmZGRhNzZkMjdjZTIyYWNiZjVmZjQ4NzNhYjRlOTdmMWNkMCBweTNrCis2NDc2NCA2NDBhZjU0NGE4NjFmNzA0YTM2M2FhYTMzZTEyNjg4MTczNjM0M2RjIHB5M2sKKzY0NzY1IDIyMzFhNWNlZTNmNTZlYzgzMTAwODczOGEyOTJlZmYyYzQ1OTA4YjMgcHkzaworNjQ3NjYgNDYxNGFjMzEyY2NlZTk4MDI2YzJhMDI3YmVmZTEyZjYwOTA0ZjQwMSBweTNrCis2NDc2NyAzMGZiZjhlNDU1NDlkMDI5Njk0MDE2ODcwNzMzZWU5ZWM1NmRkMGM0IGxlZ2FjeS10cnVuaworNjQ3NjggZDdmZDMyY2UwN2FhNjJhZjVlZmU5NzY5MGJlNDY0ODg3YTRiY2JhNiBsZWdhY3ktdHJ1bmsKKzY0NzY5IGEyNDRkNmIxNDUwMThlODBkZGE2MzJmODc2NDM3MGY1ZDFlM2RlZjggbGVnYWN5LXRydW5rCis2NDc3MCA1YjJmMDNiZWJlM2JhZjZiYjU4YzE5YjI3ZTY2ZDVhMmY2YzVjNTlhIHB5M2sKKzY0NzcxIDA4YzVjOGMxMTRiMjlhOGU4MjkwM2JjMWY3M2U2NDE5NzZjNmM4NzQgbGVnYWN5LXRydW5rCis2NDc3MiAyNjc5OTg2MWQzMThjZTA3YTQ2M2I3YTk0YWI5NmQ0ZDA5NWQ3YWY4IGxlZ2FjeS10cnVuaworNjQ3NzQgNjVmNjljYmFmNGYwZDViM2I2ZjgwYWE2OWFmN2M2OGI2MGE1ODZhNCBsZWdhY3ktdHJ1bmsKKzY0Nzc1IGJjOTQzYmJmZGIxZWNiMzMzZWU4YmFjYmEyY2U0NDgzOGI5YWY4OTkgbGVnYWN5LXRydW5rCis2NDc4MSA4M2Y0Yjc3N2Q5NGM1ZTM1MjNlOWJkNmI1MDM1YzlmYzlmMWNlNjBmIHB5M2sKKzY0Nzg4IGY4Yjc0MzYzMjU5M2FhNDEzN2EzZGMwYTBmYWUxY2Y2YTA5OGMwMjQgbGVnYWN5LXRydW5rCis2NDc5MSAxYmM1NDM5NDRkYWEyOGRkMGRhY2RkZDlhMDZiZWZjNDI3MTdmYjAxIGxlZ2FjeS10cnVuaworNjQ3OTIgNGMwMWQ3OGVjNTlmZmY0ZjAxZTYxMzU1NjA1ZGQ0ZDIxODA3MDg0YSBweTNrCis2NDc5MyAzNjE4ODU0NGM1NjEwMjZmNmY4M2Q2ZWZhZmQ5Yjg0YWY2N2U4YmY2IGxlZ2FjeS10cnVuaworNjQ4MzUgYmVkM2RmZDk5MjgxZTQxZTc1OGMxNDdjNzAzODM0NTk3NjRkOWZlYyBsZWdhY3ktdHJ1bmsKKzY0ODM2IGMzMmU5MTY1MGMxNDRiOTI3ZGJjMjIyNTc5N2IzMTkxYmJhYmUwMzMgbGVnYWN5LXRydW5rCis2NDg0MiA2OGM3OTY0ZDI1MzQ3ZDI3ZDFiYWFjOGQ5NzhkMDcxM2NhMjk2MmI5IGxlZ2FjeS10cnVuaworNjQ4NDUgOGU3MzgzY2JlNTZlNDlhN2VkZDI1Mjc4MjRmYzZkNGMxNjU3NjAxMSBsZWdhY3ktdHJ1bmsKKzY0ODQ2IGJkNDM1ZThiMmUyODAwNmRlZWM2NDAwN2MyNDdlNWE0ODc0YjllNTYgbGVnYWN5LXRydW5rCis2NDg0OSAwNWZlZDliZjQ4OWQ3ODNlMWM0NjY2NGYzZjFiNzk5MDUxM2ZjNmIyIGxlZ2FjeS10cnVuaworNjQ4NTMgN2NmYzI4YWMwNzE1MjAxYzkzNmQ3YTg0Mjk4ZTlhNWUyNjRhOGUyMyBsZWdhY3ktdHJ1bmsKKzY0ODU0IDEyNzQyMTFhMzg4ZjlhZDFmODY2Njg4ZDkwNzg1MzNiNWVmMDJlOTIgbGVnYWN5LXRydW5rCis2NDg1NSAzMjhmMzNiYWZmYTM4MjdkNjgxOTM0NzZmN2RiYjRiMDI0OWYwOTljIGxlZ2FjeS10cnVuaworNjQ4NTYgZmQwNTRlNzNlMmYyMzllMzM1ZjU0ZmRmNDZmYjQ0MzdmOTJlMDEyNCBsZWdhY3ktdHJ1bmsKKzY0ODU4IDFkNDRlMDA0YzkxZjhhMmU5ODU1YTdiODE1Y2I1YWM1NGRlM2RhMDggbGVnYWN5LXRydW5rCis2NDg1OSA3NjMyNWMxOWFmODQwODRkM2Y0MDhjOGQwZWI3ZmIzYTI2NWU1YWRmIGxlZ2FjeS10cnVuaworNjQ4NjAgMWNkNGQ2MjQ0NGI2MTQxNDE3MjUzZjJiZWJlZWY2NDY2M2U5ZTg5YyBweTNrCis2NDg2MSBlMTYzODRlM2VlMjJhNjY0NjZlZmI0OTk4ZGY2ZTEzNmFjOGRkZTcyIGxlZ2FjeS10cnVuaworNjQ4NjIgNTQ1ZTQ0MjM2ZjI4NmQ1NmRiMmI5ZTdjYmQxNTNmY2IzNzg0YzZiNSBweTNrCis2NDg2NSBjMDNiMjIzYzJiNjkwYjViNTIwMDhlNmE2N2NmNmZlMGRhZGExY2ExIGxlZ2FjeS10cnVuaworNjQ4NjYgMzgxYWUyYWQ4MTBiNzYzMjdlM2Q5MmY5MzJjM2ZhOGM5NTc1YmIwMCBsZWdhY3ktdHJ1bmsKKzY0ODY3IDUzYjUxYzIxM2IzZGIwMThjNzcxMDc3ZmFlM2I3ZjE5NmI2OWM4MjMgcHkzaworNjQ4NzEgZTI4NmJkMGY0ZTFiZGY2MDExZWE0YzQ5Zjg2ZDc1ZTE3MmE0YmVkNSBsZWdhY3ktdHJ1bmsKKzY0ODgwIDEzZTUyNWQ5NzRiMTU4YmY2ZGFhNDJlOGUzZDkyMzQ3YTgxYTM4NTYgbGVnYWN5LXRydW5rCis2NDg4MSA0ZjgwNGVlNzcyZWIyZmNiY2ZmMmQxZDBkYjViMWM4OTYxNGNlNTMzIGxlZ2FjeS10cnVuaworNjQ4ODIgZmFlYTZlOWRhNjM5YWYxZDAxZDJhNmI0MjMyMTNlZWM2NmU5MmFhOSBsZWdhY3ktdHJ1bmsKKzY0ODgzIGM2NTliNTM4ZjdiYWM1NmE3YTdjOTUwNWU5ZWRkNWFkMGE3ZDQ1MjAgcHkzaworNjQ4ODQgY2Q3NzYzYjA1NDQ2ZjAzODg0NGRjMzNmMzBkYWNkZGI0ZTk2OGE0NyBweTNrCis2NDg4NSA4ZGE1ZDM4ZGRjYTNiOGRjZDE0YmVhMGU2YzQ3MGQ3ZTJmODZiZmIwIGxlZ2FjeS10cnVuaworNjQ4ODcgOTBiNmQxOWYwNmMxZDlmZjI4ZWY2ODEyOGNmMDk2NGNkNTRiY2UzZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ4ODggYTc0N2NkMDY2ZjMyMTFmOTBkYTBiMDBmYTQ0MmI5YzUyNmU4NzQ5ZSBsZWdhY3ktdHJ1bmsKKzY0ODk2IGFkMzA5MTIyNzg0Y2VmZjU2YmM2Njk0ZTI3ZTBlMDExNzgyODI0NDcgcHkzaworNjQ4OTcgMzhkM2E1MGRlZmVjOTdmNDY3OWU3OTFiYjRlMmU3MTg4MjE0MzQzOCBsZWdhY3ktdHJ1bmsKKzY0ODk5IGQ2ZGZmZGIzMGJkZGQ4YWRiZTg0NWZhNjcwZDVlMmRkZGQ2MTRhMWYgcHkzaworNjQ5MDAgYmMyN2M4OTY3Y2FjMWZhZmFiNWI5MGY4MzUyYWRhMmJkYjkwMzFiOCBsZWdhY3ktdHJ1bmsKKzY0OTAxIDJjOWQwYTdlM2JjNGQzZGQzZmYwNDc5MDVkMGM0OTFmZDc1MmFjNGQgbGVnYWN5LXRydW5rCis2NDkwMyBiZWIwZmY1YTJhMGY1OGM1NmJiZDk4OTU2NjQ1ZDZhYmJjZWIzNTFjIGxlZ2FjeS10cnVuaworNjQ5MDQgNWYyNDMxZGU2M2QwYTUxNDhkZDJmM2NjNDYzYzNmOTI2NzVlOWI2NSBweTNrCis2NDkwNSAyZWE4MjlkZDZiNWExZGU3MTVkZDc0NDMzMjJmZjQzNzEwMzE5OWIxIHJlbGVhc2UyNS1tYWludAorNjQ5MDYgMTljZGFhZDc4OGI5MGYwYTMwMTAzZjIzYzIyODE2ZDhmNTJkMzIzNSBweTNrCis2NDkwNyA1ZWUzM2I5ZGRlY2M2OTM0Zjg3ZjYxOWIyYjYwNzZiM2Y0N2ZlMWI0IHRsZWUtYXN0LW9wdGltaXplCis2NDkwOCBhNzBkOTA1ZTUwNDE4YjExOTQyYTA4OGE2MjAzMDc3OGIwNzQxM2U2IHRsZWUtYXN0LW9wdGltaXplCis2NDkwOSBlMjI5NmI1MDA2M2RmM2U3YjlkNGZhNzEzOTg3YjJjNjNlZTUxNzkxIHRsZWUtYXN0LW9wdGltaXplCis2NDkxMCBiMzVjOGIxOTQwYWY1MjEwMGU5ZTNhZTk3OTMzZjZhOWJmMzQ0YjI0IGxlZ2FjeS10cnVuaworNjQ5MTEgYjVjZjBjYjBjN2NlNThiNzMwMzVkMDUwYjllNmFhYmQyOGU4MTdlNCBweTNrCis2NDkxMiA4Njg2NTYzMjgxNTM5NTg1YmRhYjU3OGJkMTlhOWIwMjRlZTU2NjJhIHB5M2sKKzY0OTEzIDVhYWZhMjNjYmZmYzk5NjkxNjJjYjMxOGE0NTljNzJjYjVmYzIyZGIgbGVnYWN5LXRydW5rCis2NDkxNCAyMzIxMDQwZWM5MGJlNjc0YjNiODJiYmMyNzU2M2Q1MmVjNDUxNzBjIHB5M2sKKzY0OTE1IGI5MDc1MmM1ZThjMTUzYzY5YThlNzdmMjdiMDFhZmIxMjEyMGZhZTkgbGVnYWN5LXRydW5rCis2NDkxNiA4Y2ZjZjc5MzI3MjQ1Y2M3MDMyM2YzNzczOWI4NTljMzZkYmE0MDFjIHRsZWUtYXN0LW9wdGltaXplCis2NDkxNyBhYjJjZmQ3YzNiZTg3NjI3YTZkMjk2OWRjYWRkYjg3ZmZmY2FhNmZmIHRsZWUtYXN0LW9wdGltaXplCis2NDkxOCBlNTNlNGE3MWY1NmZkMTg2YmRlODM2OWRhNjNhNDNlZTkwYzMwMmRhIHB5M2sKKzY0OTIwIGQ2MTFiMDA5MWQ1ZjY0ZWVhZmVjNTY2ZmE2NDAxNTljMTVlMWI3ZmYgbGVnYWN5LXRydW5rCis2NDkyMSA1ZDYxYWQyMTRiOWMwNjljODhiMWExOThmMTcyNGEyNDUyNzBlMzE5IHB5M2sKKzY0OTIyIDA0MTU1MDczODIwMWZkZmU0NDYxZTc5N2U3NTNjZGQ1ZTA4YzI2NmQgbGVnYWN5LXRydW5rCis2NDkyMyA4ZDBhOTc2ODE2ZjJmOWRlNzgwMzhlYWZhZTQwYjhmYWM0ZGRmMmE3IHB5M2sKKzY0OTI0IDE4YmYyYWFhODdiNWYyNGU3YjMxNDNlMDI2ZGI0NzQyZjlmMzlhMGEgcHkzaworNjQ5MjUgYzU3MTBmMGRlYmFlMjc1MTVhN2Q4YTMwOWQxMWRjZTE0NjcwZTkwYiBweTNrCis2NDkyNiBlNWUxMmQzMTA1N2VkNTA1YmVhNzUwMjVjOGM2ZmRmMGYzMzU4NjAwIGxlZ2FjeS10cnVuaworNjQ5MjcgNWFjMjZiMWYyNWQ5MWVlYzRiYWJhNDg5YjIyYWVkMGZjMmJiZGIzNCBsZWdhY3ktdHJ1bmsKKzY0OTI4IDZjMTIzN2NiNWFhYTY2YmRjZTg4NWQwOTIxMWE3ZGY2NTZjY2ZhN2UgbGVnYWN5LXRydW5rCis2NDkyOSA4YmFjZTIxNGFlNTRhMjBjOTBiYWNjOTYyYWI4ZmI0OTU2ZDVmYTY2IGxlZ2FjeS10cnVuaworNjQ5MzAgYWZlOGQ1MTViZmUyZTljOTlhYjcyZmFiMzc2MWMxODE1YWQ3ZmZiYyBsZWdhY3ktdHJ1bmsKKzY0OTMxIDgxZTM0ZDdlNGJhMGE3ZmE2MzFiZDNhNDE4MGEwNzM5YzIzOWFiOWMgcHkzaworNjQ5MzMgNmZkOGExZDg0NDhiY2QxNjZmZTM3MGM0M2MyZGM0Y2NmZTY0YTg4YiBweTNrCis2NDkzNCBiZTNkMzEwNmRhNmYyNDUxYWJlYTZkYjFmYzY3ZTdjOTkzZTU0MDgzIHB5M2sKKzY0OTM1IGFmZGQ2NGVkZjE4OWU1Zjk2NzkzNzIxMDYyOTJkNWQ0NjMxMzFiYzggcHkzaworNjQ5MzggOTJiMWNhZmEzMjY3YjY2ODgwMzlhM2NkN2I4MjZmM2E1OTkzZDYzMyBsZWdhY3ktdHJ1bmsKKzY0OTM5IDdhMzBiM2M1Y2I1N2E3YmM5NmVhYjZiYzNiNDMzMzc4NDBkY2VjY2QgbGVnYWN5LXRydW5rCis2NDk0MCBjM2JjNDM4ODgyY2I4MmY0ZTJlOWRjODQyODljMjgzY2RjZGYwNDc5IGxlZ2FjeS10cnVuaworNjQ5NDEgYWUzNGI5NTFiMzM3NzYyNmFiNGQ3ZWIxNzUyOTM0NzU0Zjk5MjlhYiBsZWdhY3ktdHJ1bmsKKzY0OTQ0IDJhZDc0OWQ1N2U2MmMwNTA1ODQ3NTIwZjFmNjFjMTc2ZjMxNGE4MmQgbGVnYWN5LXRydW5rCis2NDk0NSAyY2M0ZTFjNDc1ZjgxM2MxNGNhMDAxMDc4Njg3YzJhYjViOGYyZGJhIGxlZ2FjeS10cnVuaworNjQ5NDYgYzBjMDZmZmFlYTgzMTA5MTNlMDM0YWM4NGYyNzJlYWViMTlkNDg1ZSBweTNrCis2NDk0NyAxOTM2OWM3ZjU3OTE0YTVjZDQyYjYwMDgzZGRlYzU5NzBiMWE3ODEyIHB5M2sKKzY0OTUzIGU3YTZhNDUxNWFiMGIzOWI1NWIyNDFhZGYyMTY4NWFjYTUzMzdhODkgbGVnYWN5LXRydW5rCis2NDk1NCA5OTg2ODIwNzIzZTBjZmM3MjcyZGU4OTlkODBhMWI0MDBkNWM5YTk1IHB5M2sKKzY0OTU2IDNkODY4MjU0ZmY3ZWVmZDZlM2ExZmFiYzM3MTczOTdhMzdjOTE3NTUgcHkzaworNjQ5NTggYzJiMTE0ZDBlMWNmNGQ3MzdkNTkwMzU4NzRiMTM1ZWVjM2YyYjEwYyBsZWdhY3ktdHJ1bmsKKzY0OTU5IDc0MTk1NDk5ZTkwOTNjYTc1ZWMxMWYxYTRiNGRiNTNlYTkyMTQzNmMgcHkzaworNjQ5NjAgZDRlNDczMjkxYTE3Y2ZiMzY3OTg2OWNkNGQ2NjE5NDhlN2ZjYTVhZiBweTNrCis2NDk2MSAyZmJlMjhkZWNhMmEyODRjZDg0MzExNWU0MmQxMmNiOGU1NzZjYjNhIGxlZ2FjeS10cnVuaworNjQ5NjIgZjliODBhODIwYTI1NjljYWJkNTgyZmM5OGE0MWQ5ZGQ5NDQ2NGZkOCBsZWdhY3ktdHJ1bmsKKzY0OTYzIDdkNTcwZGY1ZTkwYTQxM2JlMTc4ODcwMjc5YTRlZThmYmE0NDJiNjMgcHkzaworNjQ5NjUgMmVlMDlhZmVlMTI2MDI1MGZkNzhkMDI3NWI3N2VlZGVhNWJmZjNhYiBweTNrCis2NDk2NiBkZWQyMTcwNDM3MDdjMmY1ZDQzNjViZDhkODc5Mjc5NGEwZTQ0YzA0IGxlZ2FjeS10cnVuaworNjQ5NjcgZjRlN2VmNDMyOWE5NTdlOTJhZmIxMWE0ZjBlZmM4MmRjNmVlNmZkOSBweTNrCis2NDk2OCAxZmRiYTA5NzkzMmFmODZmYTQxNmU4MzNhNzJkNmNiZDkyMTUxOGYxIGxlZ2FjeS10cnVuaworNjQ5NjkgZjg3MjNlYjEwNWFjZDVmYWRlMGQ2ZTZiYWY1MzIyNDMyMTNiN2Y5NSBweTNrCis2NDk3MCBlMjZjNzI0ZDVlMjNlMzc0OGY4NmVlNTc1NDBjODYyZTQ0YmFjYjQ4IHB5M2sKKzY0OTcxIDkxNmQzM2VjN2I1YWZlY2MwYjQzZGQzYzVjNDQ4Mzg0ZjEyNTgyMTkgbGVnYWN5LXRydW5rCis2NDk3MiA0MzJkMjc4MDhiZDFlZTYzOTNhNjlhZmRiOGI5NmNmNTRkM2M5MDVlIHB5M2sKKzY0OTczIDFmMjRjZWMwZjJlMWQ2OGQyNjdkMTc4MTg2ZWFmMWNjYjEzOGNjZjQgbGVnYWN5LXRydW5rCis2NDk3NCA5N2JhOTM2ZThkZjg0Y2E0N2IwYzk2MWZmMjFmNWU2MDhiNGE1NzUwIGxlZ2FjeS10cnVuaworNjQ5NzUgZDA0MGEzYjYzZGY0MjU4ODY3YTE2YWUwOWJkM2NkMTNkOWM4Njg5NiBweTNrCis2NDk3NiA4NzViZWI0YWQ4ODkxNTBhNjA1ODIwZjQzZDQ2ZTQxNWQxNTRmZDQ3IGxlZ2FjeS10cnVuaworNjQ5NzcgMzUwMDRkOWJmZDE1NjA0MDQ1MzFhZmYyMmRiOTU5MzU0NDNiOTc1ZiBsZWdhY3ktdHJ1bmsKKzY0OTc4IGRhMmQzNjMzNzlmMjZlNGU0NGJkMTRkYWQ4NWMxMDBmMjA0NGU0YWEgcHkzaworNjQ5NzkgYTQ0ODJhMWEzMGM2ZDkzY2MzMjM0M2M4YjEyODZlZDgyNzVlZTdiNiBsZWdhY3ktdHJ1bmsKKzY0OTgwIDFlMDA5MTcwODg3NWE3ODUxMmY0MTM3MzU0MzgyODEwZWE4YzllMzAgcHkzaworNjQ5ODEgOWNiMjhhZDVhNDFjMDAxMjY5MGU1OTcxNTk0YjI1YmU1NjBjMTFhMSBsZWdhY3ktdHJ1bmsKKzY0OTgyIDAxZmJlM2ZjODgzZTBhZWIxZWRlMzE0MzgyYmE5M2I0MzY0Njc2OTEgbGVnYWN5LXRydW5rCis2NDk4MyA1MWMwZDNhMDcxYWQwMDc4MDZmYzdkNWRmZGZjYTIyYWMzYThjMTg4IGxlZ2FjeS10cnVuaworNjQ5ODQgM2ZhNDRlNWU0ZTJiMWYyY2Q2ZDhkNDI1ODBkNDVmNzQ5ZTM4OWUwYiBsZWdhY3ktdHJ1bmsKKzY0OTg1IGM2NjJlOGNmZmRkZjYxZDViNmU0YzVkYWE2OTkyZTk0NGJmMGZiNzUgcHkzaworNjQ5ODYgZWZmOWQxMWM0NzYyNmFiY2UwNzI2N2FiMjJjZWZlOGU1NzM0NmU0ZSBsZWdhY3ktdHJ1bmsKKzY0OTg3IDNhM2E1YTQ5MjE0NzFjMzQ4MDE0MWZkZGI0NTdmNzFjYTViMmI0MTEgcHkzaworNjQ5ODggM2JiMWY4YmJhMzM2NzZhMzU5NzdhOTM2NGRjM2NmYzkxOTYyYTI2YSByZWxlYXNlMjUtbWFpbnQKKzY0OTg5IGJiZDBjOTAwMjdiZmI3N2I0NjhjZWVmMzE1ZmIxZjYyYjI1N2I3YzYgcHkzaworNjQ5OTAgYmQ0ODQxMDY5YzY4NDg1OGIyNzJkMjI0OGFhNTVmM2U2M2ZjMTA0NCBweTNrCis2NDk5MSBkMTRkMGIxNWUxOGU3MGY3ZTc0ODY5NTM4MDVmZTQyODUwOWI5ZDczIHB5M2sKKzY0OTkyIDM4ZDcxOWJlZGRiZGQ4NjM2NTFjOTBjMWQyNjFmMWE2NDM4NjYzZDMgcHkzaworNjQ5OTMgZWEyM2U3YzU2MTU0NTZjY2M1OWQzYjNkN2UwMWU2ZjcyMWYyZWRiOCBweTNrCis2NDk5NCBmY2VmZjk1NGYzODA0YzYyYjFjZTY1NWUyNGRjOTEzNGMyMzFkY2RiIHB5M2sKKzY0OTk1IDhlOWU2NTM4M2FmYjY1MDJlMzlkZTc0ZDE1MDc1MGU5YjA1ZWExMjggcHkzaworNjQ5OTYgNjVlOWMwMTAyZWY5YzRiMDk0N2I5MGVkMjE1ODM4YWYxYjcyM2E5NSBweTNrCis2NDk5NyA5MjZiMmExOTYwODMxNTI3ODUwOGIxMDVmMDc3Y2VlNGEwYmUxZTlkIHB5M2sKKzY0OTk4IDllYmQzZjM4NTU3NTlkNThhZWU0ZWI4Yjk3Y2VmMzdiZGFiODIzNGUgcHkzaworNjQ5OTkgYWNhNWIyZTZhNjZmMzI0Yjc0NTQ2ZWI4MGY1NGYyMThjNzM1NTEwZCBweTNrCis2NTAwMCBmNThlM2EwZWE5OWExN2I3NmM1ZTA4NmRmODk1ODhjZDUzODMxY2UyIHB5M2sKKzY1MDA0IDlhYTA3ODE2MTVmYjFjN2E3NjBhZGI2ZGQ1ZDUyNjgxZGEwMmRiODQgbGVnYWN5LXRydW5rCis2NTAwNSBjMGFiMmJhZmIyNjQ0MGI1OWY5ODQ5MDVjNjQxYTA3NjQ3NGE0NjU1IGxlZ2FjeS10cnVuaworNjUwMDYgY2VhMDY2ZGVkZmRmYjIwODgyNTk2ZWEzMzkzMjc2NzFiMmFjNTZlMSBweTNrCis2NTAwNyBjYTBkNjIwY2Q2M2IyYTVmYmRhZWQ0MWJlODY2Nzc1N2ZkMWZkY2FmIHJlbGVhc2UyNS1tYWludAorNjUwMDggMmJiODY2ZDI4MmJhZDU1ZGZlNjVlNzEzOWIxMjkzM2JmODJhOWJmNyBweTNrCis2NTAwOSAxNzczMDJmZWFiMzY4OTU1ZWVkMDMyNWVlOTUxOGRhZjVhYTg5YjQ3IHB5M2sKKzY1MDEwIGRlMGJmNjBmMTI0NWFjNzNlNDRiYjI1ZTJjNThlYWU2ZTVkMDgyYWUgcHkzaworNjUwMTEgNGY2ZWRlYTRiNTU4NTYxMWMxNTRmNWEyMGZiMGQyNzk3Y2QyNzc1YyBweTNrCis2NTAxMiBhNTE5MWQ3ZWE0MDU0MGMzMTYxZTVhY2Q0OTcwMmE3MDEzNGI4Yzg2IGxlZ2FjeS10cnVuaworNjUwMTYgNWY2ZGMyZjg2YTg4NDQxNzViMmI5YjNhZGMzNzdmOTFiN2VhYmU2YSBsZWdhY3ktdHJ1bmsKKzY1MDE5IGVjMzhmYmJiOGNjZWJlMWYyNjcwOTA3ZTY4OTI2ODE1OGY4YWZiZjEgbGVnYWN5LXRydW5rCis2NTAyMCBiNjQ1YWEyYmNhOWNjNzEyMTliYzIzMzQ4Y2IxMDQwYjRlNmMxYTE4IGxlZ2FjeS10cnVuaworNjUwMjEgMmU5MGZlZjIyNmVhNmMyMDJkYTcwMWRiNmEyMGVkYWQ3MDhjZjZhNCBweTNrCis2NTAyMyBhMDk2M2U0NmY0M2U1ZTc3ZTkyMzU1YjU1NDg3ZjFmNDc2ZDVlMzY2IGxlZ2FjeS10cnVuaworNjUwMjQgNjU0ZmY1NzU1NDM2YWQ1M2E2ZGExYzBkMTJiMTRiNTU3NGJiMmMzYyBweTNrCis2NTAyNiA2NTUyMjdjOTg4YTc4ZDZkMjI4M2MxNGM4ZjhjMWFiNzYyYTc5ODljIGxlZ2FjeS10cnVuaworNjUwMjcgYWNhY2ExMWQ4MGRiYzg0ZDMxMDlhZDg2YmQ5MTAzNDU3NjAyNzY2NiBweTNrCis2NTAzMCA1OWFjNWFlZjNiMmQxZmYzYzNhNmM3NmM5NDQ1OTJkZTE1YjJlNTZjIHB5M2sKKzY1MDMxIGIyZjNkZTM1OGFmNDA4MDMyNGQ3YWY4NDVhYjgyMTVlZjZiOTgwMTYgcHkzaworNjUwMzIgMDliZWI5NmJhMjBkNDdjNjM0MTcyN2UxZmVjNmZkMGMxMDZkNGM4OSBsZWdhY3ktdHJ1bmsKKzY1MDMzIGVjODViNThhZDJiYTRhMDgwYTYwMWJiMTFiODQ3NmI5Njk4ZTUyZWMgbGVnYWN5LXRydW5rCis2NTAzNCA2YzhiYWM5MTNhYWJmY2MwOGM1ZmQ0N2Y1Y2U0ZTRhNGQ2ZGNiOGU3IHB5M2sKKzY1MDM1IGViZTkzMjMyOTI0Njk5N2Q1MzgxMjBhMzhhZWY3YTU2ZWUyYzM4MzYgbGVnYWN5LXRydW5rCis2NTAzNiA2MDRmZWJkMjA0Y2IyZDNlNjNmMjlmMTRiOTFlN2Q2OTRmOTJhYTRmIHB5M2sKKzY1MDM3IGVjOTdiN2FhZDIzMWJlY2NmN2EyNzgzZTRiNDAyODg5OGNhYTkzNjYgbGVnYWN5LXRydW5rCis2NTAzOCBlZmU3MDZhYWIzMmI5MWFlMjgzYWVmMWFlZmNiNjk3MzQyNmYyZGNhIGxlZ2FjeS10cnVuaworNjUwMzkgMDE4MDZjZGVkZGRlMzYwOGJmMDQxNDk0MGJlZTgxOTlkYzE1MmExZiBsZWdhY3ktdHJ1bmsKKzY1MDQwIDA5MWRmNGMwOGQ5OWE0ZGU1MzU3Yzk5OThmODRlNTY5MDlhOGJiOTkgbGVnYWN5LXRydW5rCis2NTA0MSBmYmYxNjVhNzg5NTM3M2NhZDMwY2M2MGYxZjM2NWYyYjIzN2Q1ZjliIGxlZ2FjeS10cnVuaworNjUwNDIgN2UwMzBiNjI4Mjk0ZGIyMjliOGUwNzI0MTRiNTVjNzE1N2I3MTFkMSBsZWdhY3ktdHJ1bmsKKzY1MDQzIGI5ODI4YjJhNTFjMGZmMzUxZjFjYjZmMzUyMmU3NWM4NGZlNjEzMzYgcHkzaworNjUwNDQgOTIxYzRhODA5OTIzODMxN2Q1ZGY4ZjNlMjc2ZmJiOTY2YWM1OGMxOSBsZWdhY3ktdHJ1bmsKKzY1MDQ1IGQ4N2NkNWU3MzY1YWE4MmFjNzcxNzUzNDNmZjg5N2MyZTk5MTdiMWEgcHkzaworNjUwNDYgNzY4YmNmZjRjMGRhZWRhNjQ3ZGJkMjc0NDEwZDhkZjcwMTNmZWNmNSBsZWdhY3ktdHJ1bmsKKzY1MDQ3IGYyYzcyNzkyNThjMTJkYzQ2Njk2YzQzYzVkOTM0NGFmMzExZGIwMGQgcHkzaworNjUwNDggZDMxZDYxZjQ2NDk4ZDE0MjE3M2ZiYjI1MTI2YmFkZGNmNGUzZTM4YiBsZWdhY3ktdHJ1bmsKKzY1MDU1IDMwZmRkMGMzYjZkZTFiODIzNWU3NWFiNTgwMDkwNmY5YzdjNDQzZjkgbGVnYWN5LXRydW5rCis2NTA1NiA5YzU2Y2Q5N2ZmNGRlZTMwOTQ2OGMzNTIzMGRiYjk4NTg1YTVmNDZkIHB5M2sKKzY1MDU3IDI3YmNhN2ZhYzM2MmQ3MTU5MGRkNjNiZThlYTYxNTI1NGY2YzkxNzggbGVnYWN5LXRydW5rCis2NTA1OCBjNTkxMWE3YjVmYTAwYmMyNzVmNmNkN2ZiNmQ3MjlhOGI0ZTVlZDdhIHB5M2sKKzY1MDU5IDQ1MjMzZDRjMThkMjNiMDYwYWVkZTNiYjVmMjM2ZjNlYmFlYzJmYjUgbGVnYWN5LXRydW5rCis2NTA2MSBhMjljODZjZTc2Njg3MTExM2JlMjc2YzQyODZiMmExZWZmNDIxNTgxIGxlZ2FjeS10cnVuaworNjUwNjIgMWJlNWI2YmU0M2NiNjk4NTQyYzgzOTIxOTY3NTI0OGRiODJhYzU5ZiBweTNrCis2NTA2MyA3OWY4NGJjMmIxNDkyMDg1ZjdmZDZjM2Q3ZTZhYjY1NWU5YTRiNTZhIHB5M2sKKzY1MDY0IGRiYzJiN2FkMGMyMjE3YzA4MGVkYzAxYzQ3OTc2MWFjZGU0ZmJiMjkgcHkzaworNjUwNjUgZWVmYjk4Mzc5NjQ0ZDliZjg0YzVlMmZlYjNhMjU5YTE1YTM1YjUwZCBweTNrCis2NTA2NiA3OGEyOWEwNTIwNzk4MmQyNmU3M2JhMDA2YjNlNDQ5YWFmY2I3NzY1IHB5M2sKKzY1MDY3IDk5MWNhZGQ0N2Q5NzMyZjMxMTIxMWVlYmRlOTBmYThlOWU3ZDlhMzQgcHkzaworNjUwNjggMjA2ODcxMGIzMmMzNTEzYzI0MzYyYjA4YjUxNTkzMTYzOTQ2NGFjNSBweTNrCis2NTA2OSBmMjgzZTNiNWY5MTdhYjI2YjUzOGY0ZThhMDQ0ZmIwN2I3ODY5YWRhIGxlZ2FjeS10cnVuaworNjUwNzAgNTYwMzg4Y2RhMTYzZDkzZGQ4Yzg0ZjliMDhhMjJmZWI0NWJkYTJlMSBsZWdhY3ktdHJ1bmsKKzY1MDcxIDdjNmVjN2E4MDE2YWRmYTczNGZiOTcyMmNlMTBkYmE2NmM5YTgxYzEgcHkzaworNjUwNzIgYmEzOWI0MGViZjJkOTMzOWNhYmM3ZDVmMDQzYTBhZmIwNzk3NzQ0NyBweTNrCis2NTA3MyA4M2QwZDRjYjdhNjYxYzk3Y2Y1OTg0OGJjNjYxNzZmOTg4ZTg5MmE3IHB5M2sKKzY1MDc0IDNkNTI2NTI1YjNlODFkOTRhYTRmMmU0YzY3MDgxYTU2ODM0OThmNWUgcHkzaworNjUwNzUgNWMzMzAwOTk5NGI0NjM1OGQ2ZWY5ODM1Mzc0ZDhjZTM4ZDI1YjNmYiBsZWdhY3ktdHJ1bmsKKzY1MDc3IDZkZDUyMGUxYmMwZGIzNjFmYWExY2Q2M2VhZTQxNmM5NGNmM2VhZGYgbGVnYWN5LXRydW5rCis2NTA3OCA0ZGVhZGM4ZjllMGEzOTNlYTYxYWFkZjhkOWZkOTRlM2U2YjIwMTg2IHB5M2sKKzY1MDc5IDAzMWI1YWQ1NDdlNDI3YjQzNzc5NGI4MTgxZjI5MjQ5MDYyYjA4M2YgcHkzaworNjUwODAgMTZlYzRiYjE0YTY4ZWE0MjhhY2YwOWViZjBjOTI5ODFkYTI2NDZmMyBweTNrCis2NTA4MSBhOTY4MDI5YjYzZGIxMjFmMDA3YTdkYzkwYWY4OGFjNTgyZGQ0N2UxIHB5M2sKKzY1MDgyIDgxZWM4MjYzYmQ2ZTI1YzlhODg1NWNkMGNlOWFlODgxNzMyOTcyYmUgbGVnYWN5LXRydW5rCis2NTA4MyA1OGQ0YmYzMTcyOGZmOGI0Mjk2MTFiM2Y0YjBlNDkyMWIwOGExYWM2IGxlZ2FjeS10cnVuaworNjUwODUgMTllNzc5ZDAyMDUzNTNmYzhjZTE5MDM1NzM0ZTM3ODI4ZDJkNDNkNiBsZWdhY3ktdHJ1bmsKKzY1MDg2IGI3NGU5ZDA5YjE4MDY5M2QwMGNjNWIzMzQ2YzEwMTRkMTQ2YzE1NzIgcHkzaworNjUwOTAgNzhlZTZiYTIwOTllZTdkMmM2ZDhiNWIyMjNmYjllMTE5YjM3ZDg1YSB0bGVlLWFzdC1vcHRpbWl6ZQorNjUwOTEgNjQ0Y2E0NDg3ODgxZTg3OWUwMTBlZjUzZmY5OTQ2OGY5YTgzNDA1YyBsZWdhY3ktdHJ1bmsKKzY1MDkyIDBlYWU5YjI1YTJlZDBiZGUwNTk1MWI5YTAwZTVjOTgyNzJhZDI4ZDYgbGVnYWN5LXRydW5rCis2NTA5MyA4ZWMxODMwZDU3MTk5NzNlNzA3M2E4MWI4OThiM2ExMTAzN2MxYTEwIGxlZ2FjeS10cnVuaworNjUwOTQgMWFjZmU0MjhlOGYxOWI5NzkwZjQ1N2Q4MmZjZGI0YzJlNGVjM2FmNiBsZWdhY3ktdHJ1bmsKKzY1MDk1IGNlYzcwNGI3OWJkZjFmNTUwMTM2OWYxNmQ5ZmQ3NTI3NzAwNTk1N2IgbGVnYWN5LXRydW5rCis2NTA5NiAyOTI1MTM1Y2EwNTBhNjQ0NzVkZGYzMmFiMGMzNzU0ZTc5NGU2MDY3IHB5M2sKKzY1MDk3IDRlYzVhMGVjNjMxYTA1NTNjNTU2OGQzNDhiYjgzYWI5ZDJjZTFiNTMgbGVnYWN5LXRydW5rCis2NTA5OCBlODVkNTY5MGMyOTZlZjZmMzBmNWU5NzMwYWE2MWIwZmRhN2NhMDJlIGxlZ2FjeS10cnVuaworNjUwOTkgYWMxY2Q0NmJmN2Q1N2U5YjRkNzRmMmNmMGI1YjMxMTM1Y2RlMWM2ZCBsZWdhY3ktdHJ1bmsKKzY1MTAyIDFiMjBhZmE0OGQ1OGFlNTEyNTQ5M2ZjMjMzOWUyOThmNzBmYzJlNGQgbGVnYWN5LXRydW5rCis2NTEwMyBjNDMyMzA3ZWMwMGRkNmQ2ODgxYWIwMTFkNDE0YTkxZTQ4NjExMWQ3IHB5M2sKKzY1MTA0IDk1NzZiYjcxYTAxYjQ4YzBjZDQwOTMwZGU2OTc4ZTY4YzUxOWUzMTMgbGVnYWN5LXRydW5rCis2NTEwNiBlN2Q2NGU4MjkwMzUyMmIzMzY3MDNmZGYxYThjMWMzZWQyYTZlMmQ4IHB5M2sKKzY1MTA4IDliZGI3NDA0ZWZlNzg4OWRiOGJlNzQzZWI4MjNjM2Y2NmU3ZGQxNzEgcHkzaworNjUxMDkgNDk3MjZkY2ExNmQ4MTFjMzE4ZGMzM2ZhNTJlY2EyN2E1NDU4NTc4ZSBsZWdhY3ktdHJ1bmsKKzY1MTExIGI5MzFhMDIyNjQ2NjU2YmYxOWNkNTQ4MmYyMGUxMmQ0OGU2NTRjYjAgbGVnYWN5LXRydW5rCis2NTExMiBmOTA0MGQxMDdkNjY0N2RlZjc5ZGZlMzQ5MjhlNDEzOGUwNDgwZjY3IGxlZ2FjeS10cnVuaworNjUxMTMgMjk3OTUxMzA2NDAwNTIxYjdkNzg0MGIyYzFiMDA3NTBiMGU1ZGZiZiBweTNrCis2NTExNSA2ZTc3MTZhM2JkZWMxMDYwYjhlYjUzYWM2YTc3YzM5MmYwNTZmNjIxIHB5M2sKKzY1MTE4IGRlY2UxN2VkYmVkMDhhYjY5YzkyMjFmODY4YmQwZDQ1NTZjZjY3OWQgcHkzaworNjUxMjAgZmVmZmVjMjZjNTZjYjk2ZGJjZWMzMmU3ZDk2ZTViYzkxMGYyMTI5YiBweTNrCis2NTEyNSA0MGRiNDViZmMwZjJjZGJjY2RlZmE2NWZhNjU1OTM4ZDE3Yjc3YmNlIGxlZ2FjeS10cnVuaworNjUxMjYgNDhlODNlNjY5MzVhOWE2YzMzOGE1NzlhOTVmMDEyZjU0MWE3OTU1NyBweTNrCis2NTEyNyBhNWZmZTM0YzcyYzQ4OTlkYzBjYWU3ODM5ZDJmZmM2Y2ZhMjM4Nzg1IGxlZ2FjeS10cnVuaworNjUxMjggY2FjYTMzODMyYTFhNTEyN2MyMjdmYWJmOTlkOTgzNTgxZjVmOWVlMSBsZWdhY3ktdHJ1bmsKKzY1MTI5IGU2YmE2ZjQxNDY5YmYzMGJlZDRiZWNiYmUyNTJmYWY2NGViZjkwZWIgcHkzaworNjUxMzAgNmM1Y2RkYjI2N2ZlMjRkNTlkNWIzMWVhZTBkMGIyYzJkNTk0ZGRhNCBweTNrCis2NTEzMSA3YWQ2ZTRjZDc3MTM2NmQ5NDU1ODM3N2FlMDg2YmMwMGM2ZTExNTE1IGxlZ2FjeS10cnVuaworNjUxMzIgNDBiMGUzMzE4YThiYmFkZDE3NDQ3YTY4NGRjNTI5MDg0MDE5NGEwYyBweTNrCis2NTEzMyAzM2M2YWY2OWFlMGYxNzUzMWQyYWVhODM0NzY4ODc0NmQwZmE1MjcwIGxlZ2FjeS10cnVuaworNjUxMzQgZTkwN2RhODI1MTY5MTkyOWU4ZmU1NWY4YzJiZDNmMjQyOTE5OTUwZCBsZWdhY3ktdHJ1bmsKKzY1MTM1IDQ5YmU4ODEyZDQzMzBhZWRlNTAwZDA4YTk2MjJhOGFiYjM1ZmM2ZGIgbGVnYWN5LXRydW5rCis2NTEzNiA5NmVhZmFiNDg5MDEyZWRmMmQ5ODEzYmZlZDEwMGJlYTQ2YWM0MjY4IGxlZ2FjeS10cnVuaworNjUxMzkgN2Y1NDIyZDA0MDlmOTQ0NDdlN2UxNGU2ZDE0YmZmYzgzM2FiNjY4MSBsZWdhY3ktdHJ1bmsKKzY1MTQwIGRmYzM3NTgzZjIwNDc2N2VjYWU2OWU0NjVjZWUxNjNlYzA5OWZiNzkgcHkzaworNjUxNDEgOTQ4ZTViMzIzMzI5MWJlMTUyNTZjZjEwNjg5YjU2N2YzNzUxNmYwZiBsZWdhY3ktdHJ1bmsKKzY1MTQyIDQwN2ViMDA0MDA0MTQxY2E4ZWY2MmFjNzg3YjkxNzQzNzIwMTNmYmMgcHkzaworNjUxNDQgODlmNWNmZWMwNTczYzVlYTMzMTJiNzk5YzUwMGZkZjMxMWM4YmVhYSBweTNrCis2NTE0NyA3YzE0N2E3NmEwYjI3MjQ2NzVkNDkwNDAyYmI0NGY5ZjZmNjBlNWIwIGxlZ2FjeS10cnVuaworNjUxNDggOGNkYjE4MWFhOWFmYzY3NTgwOGU5MmNmNjY2YWYxMTEzZjIyZTNhZiBweTNrCis2NTE0OSA3MGJlNjljOTNlMzNhYTUzZThlYzI1YzFkMGFmMDI4ODEwZjhmZjc4IGxlZ2FjeS10cnVuaworNjUxNTAgNDNjNjkzNDUxNGQ3Y2MzNDJlNjNhMjQyODAyZjkyZTdjN2NiNmIwZCBsZWdhY3ktdHJ1bmsKKzY1MTUxIDg5ODkyMTNmMzg2YjI2YmU0NGRiYmM4ZTRjZDJiMWFjYWNlZTQ0ZmUgbGVnYWN5LXRydW5rCis2NTE1MiA2NDRmYTdhMjQwYzhiNzk2MWQ2ZTdhYjI0Y2MyYjA5MzNhYTBlMWI4IGxlZ2FjeS10cnVuaworNjUxNTMgYmIyNjM2ODgyNTAzZGQyNmRmMmVkNzRmOTA0ZmViYmIyYTZmMGVmMyBweTNrCis2NTE1NSBkMjdlMjgwMjA3MDkyZDg1MDZiMjU4Mzc0YmE2N2NlMzhiNmI4OGY0IGxlZ2FjeS10cnVuaworNjUxNTYgMWQ0Y2IyNmVjODlmYTY5ZGFjNzExMzkzMTM4YmE1ZTVmZDk2NjM1NyB0bGVlLWFzdC1vcHRpbWl6ZQorNjUxNTcgNTc4YTRiMGE1MjJkMjYwZmQxMDA4NTUzNGEyNjQzOTI4MDJjOTU4MCB0bGVlLWFzdC1vcHRpbWl6ZQorNjUxNTggMWVkNjk0YTdhYjYwMTQ3Mzk0MTQwOWM5ZTA2M2NlM2E4ZmZhZGJiMyBsZWdhY3ktdHJ1bmsKKzY1MTU5IGE5N2ZkNWEzYjA5MGI2OWM2OWNjZTQxZTJkMWFmYTYxNTY4YTI1YmMgbGVnYWN5LXRydW5rCis2NTE2MCA2MDUzNTI1MGE2MmM2YTQwZjZkZGM1MzQ3Y2EzZjFlZmQ1NzdlZjcxIHB5M2sKKzY1MTYxIDYyODIzZWNhODgxYmU0YTg3ZWM2MGRhMGViZTJiYjkzMDAxM2Y5NzcgcHkzaworNjUxNjIgN2NjY2UyYTczOTRhMDI4MmJlNDBhYmI0ZTVjZGYxMDk4ZDVlMDliMyBweTNrCis2NTE2MyAzNjQxMDY3OTZiMjEwNDcyZWEyOWRmNjgyNDUyMDE5ZjQ3YmU1MjFmIGxlZ2FjeS10cnVuaworNjUxNjQgZWNjNmJlMzgwYzViYzhhNDgyMGNkMjQzMzQ5MjNmMDFjODY0YTg0NCBweTNrCis2NTE2OCAwNjhjMDBiZjVhMjRhZmZmMzY5NTE0MGIyNjNhMDJkOTVlNmNhZTk1IGxlZ2FjeS10cnVuaworNjUxNzEgMGE3NDFjMTNmYzgxYzZlYzI4ZWY5YmZiZGZmZTBiZmMwYjU2YTU5MyBweTNrCis2NTE3MiAzZjZkNDNkNTc1NWNiOWJhZjM0MDhhNDQzMDg0NzJhMmQ1OTgzMjFiIGxlZ2FjeS10cnVuaworNjUxNzMgOTIxYjY3NTljYmRlNzA5ZGI2NjJmY2U1YzFiZDAwYTkzNDAxYzM5ZCBweTNrCis2NTE3NCBhOWRmYTA4NTFiMDczOGM0MTNmNjM1ZWNjMjU2Nzc2MGZhNjJlNzEzIGxlZ2FjeS10cnVuaworNjUxNzUgOTc1YmJkY2NjNTVlZDU4Mjk1MGJlMGE1NTY0MGNkNDUxM2JmNGNjOCBweTNrCis2NTE3NiA4MzMxYmM0ZTgyNzhjODNiZmMxOWNmOGM2ZWRlM2Q0OGQyYTYxNmM3IGxlZ2FjeS10cnVuaworNjUxNzcgYjgzNmJmMjVmMTc2YTI5ZjNiNjFiOWI3ODdjYjFkYTZkMDM0MmMxNiBsZWdhY3ktdHJ1bmsKKzY1MTc4IGJhMjc2N2JkNDYyMDUyOTk5MDYwNzZkM2NlM2UwMzk5YTAzY2UyNDEgbGVnYWN5LXRydW5rCis2NTE3OSBkODc5OGQ1ZWM0YjkzYTU3ZWFkYTdlNmNlNjBmOTNiZDc5YjVkODgwIHB5M2sKKzY1MTgyIDVkMzgzM2U2YWFlMzBlYTFhOWY0YmJhOTE4M2JlZTNjMzMxNDI0ODYgbGVnYWN5LXRydW5rCis2NTE4MyAzYjVjMjYxM2VkMDVkYzk5MDFlMzRkOTQ0ODAwODM0Y2NlMDljNWI3IGxlZ2FjeS10cnVuaworNjUxODQgOTZhOWViZmVlMmNkMmM3NjQ1Y2ZmOWNhOWRmODMzYTRhNDU0MWQwMSBsZWdhY3ktdHJ1bmsKKzY1MTg1IDFhMmY4ZGRlODFlY2M0MjhmZTRmYzZjNDYyYjcxM2VhZTY4NDZkZGUgcHkzaworNjUxODYgNzM5YmIwNzI4ZWZlNTI5OWJiM2JhNzFjODAwZGM4MDRiMTc2OTI5MCBweTNrCis2NTE4NyBlYTUzZWU4YTgzMzMyMWQ4ZTcwZmM1YmRlMTI3NzliYTAwNTU4ZDZlIGxlZ2FjeS10cnVuaworNjUxODggOTBmYmJiY2U3NTdhZjg3MTUxYTE3ZDc3ZjJjY2FkZGYzYjkzYWNmNCBsZWdhY3ktdHJ1bmsKKzY1MTg5IDk1NjFhYWVkZmI3MzhmMDlmYmFjOGEyYTI1Nzc5YzFjNTM2MzFmNzUgbGVnYWN5LXRydW5rCis2NTE5MCBkZDMxNDkwZDNlYjZkZTgyMDVkODZkZTAwNmNhYWQwMDVjMWY5MGZjIGxlZ2FjeS10cnVuaworNjUxOTEgODIxZTczZDdiY2M1NGE0Yjg1Y2I4ZWRkMzllNzMwMTViZWFmMGI2MyBweTNrCis2NTE5MiA2NzllM2MyNzJlYzI2MmUyZGJmMWQ4Mzk3Nzk5YTMxZjkyMmVjMjM3IGxlZ2FjeS10cnVuaworNjUxOTMgMTBmNDFhZGMwZDI0ZTYwMjIzYzUxYTFkYzlkYmRkNmI2YzI5YjM4ZSBsZWdhY3ktdHJ1bmsKKzY1MTk0IDc2MWRjYWFhYTA5ZTIxMDU5OTBjZGY4YjhmNmQyZGNmMmJhNDlmZDIgbGVnYWN5LXRydW5rCis2NTE5NSA2Y2E4YWY2NDc0N2I1MDhjNjVjODA5MTQxNTM5YTY5Yjc2YmZhOWIxIHB5M2sKKzY1MTk2IDIwYjRiODNhNTRhZWZmMTIwMTQ1YWRkNWU5ZDk5MTljNzFkYzIzYzggdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTk3IGZjYmQ5ZjRmMDk1YzRmMDBlMDg0ODVhYTJjZDFlOGYxNzBhN2E1ZTQgcHkzaworNjUxOTggMDQ0MWQzMGQ2NzJiZTA2NTdkZDJlNWYyZjg0ZmNkMzYzZmFmMzUwMiBsZWdhY3ktdHJ1bmsKKzY1MTk5IDgzNzViM2Y2NDcwZjYwYjk0MWQxZmIwYmMwY2Q3NDNiN2FjNGYyZDYgbGVnYWN5LXRydW5rCis2NTIwMSAwZDM3YWIwMGY2ZDZjNDZkNDliNDA2ZDY4ZTZmOGVlZjBlODQxNDI4IHB5M2sKKzY1MjAyIGJkZGMxYTE3MjQ3ZTNmOTU3NjZhMTQzMTU3YTA4NWNkODNkY2ZjYmYgcHkzaworNjUyMDMgYWIyMjE3N2ViNmRjNDk1NjYzYTE0ZDU2NDVhNzE4ZjZhOGE2ZjkzOCBweTNrCis2NTIwNCA0NWY4OGQ3YmYwNTc2YzM0ZGM0YTNkZTY0OGJhYzhmNjY0YWJiY2U5IHB5M2sKKzY1MjA1IDE3OWE3ZjQxNjI0MGFmNWY2MmY3Y2Y5ZGU5Y2ZjZDYwNjlmNzY1NTcgbGVnYWN5LXRydW5rCis2NTIwNiBiNTFjZDVkMzc5NWNmYjUxOGNlNTUwMWU2ZDFiNjdhYmNkYTFlZWQyIHB5M2sKKzY1MjA3IDNlZmEyMDkxNmE5MDQzZjljZGIyYzRmZDI4YjE0NWZlMWMwOTAyNjcgcHkzaworNjUyMDggODg3ZWU2YmQ5Mjg0ZmI5YjZlYWU0MWZiYzIzZWFiNDczMjllZTdlZiBweTNrCis2NTIwOSBiNjg3MDQ0NTdlZmVmMTBmMjc3NzU2ZDBiYjdkYWE2OTI0OTQ5NmJmIGxlZ2FjeS10cnVuaworNjUyMTAgNzU5YTczMjM1OTFlYmQ5NDBkMzc4ZjgxMjdkYWU3ZjI1NDViMTU2ZSBsZWdhY3ktdHJ1bmsKKzY1MjExIDM4NTM4NTZmN2M1MDU1ZDdhNDM4MzdmMDJkNTM0ZTYzN2Q3NWFmYTAgbGVnYWN5LXRydW5rCis2NTIxMiAwOGRkY2FkODUxMzQ4ZWI0ZjcxMWE0NDlhYzIwZGY0NmExMDRjZTIyIGxlZ2FjeS10cnVuaworNjUyMTMgMWIxZTFmODcyZTA5ODMxZGE5MjNhOWNiZGVhNzg4ZjRmN2ZkNDdlNyBsZWdhY3ktdHJ1bmsKKzY1MjE0IDA3Yjg5NjUzMTQ1ZTAzMmE4YjQ4NDAyNzZhMmQwYjY1NzRmNThjN2QgbGVnYWN5LXRydW5rCis2NTIxNSA0MjAzYjdmMDg3YzEwMjM2NGJhOTgzMWQ0ZDE1ZjRlNTIyNjg5MWU3IGxlZ2FjeS10cnVuaworNjUyMTYgNzRmYjBkZjI5YTQ4NzZhMzc1NTJiMjk5NTdlYjY4ODg0NWRiODJjNyBsZWdhY3ktdHJ1bmsKKzY1MjE3IDI5MDA3OGU5YjZhMjAyZWRjNTIzYjU1YjlmNDgxNDY4ZDVhN2ViOGEgbGVnYWN5LXRydW5rCis2NTIxOCAxYzc4YWE3ZWEzMzYwZjM5MmM0ZjZmNjg3ZGZkY2M3NTdkZWE0ODNmIHB5M2sKKzY1MjIwIDFjZTdlNWM1YTc2MTdlOTY2YmI3NDExMWM4OTE0ZTRjYWYzNzY0YWYgcHkzaworNjUyMjEgZDlkNDlmNjczODlmNjM5OWRiMDg4NDE3NjVkZjEyODU1Nzg2Njk0ZSBweTNrCis2NTIyNSAxMDFiYjE4YzEwZDU3NWRjYzMwYTIyNDQxZjM5NDM1YTU1M2ZmODUxIGxlZ2FjeS10cnVuaworNjUyMjYgNzgxNjMwZTI1NTQwYTM1NjI4YzZhNjZiOTZmMjdlODM2YTVmNDNjZSBsZWdhY3ktdHJ1bmsKKzY1MjI3IDM1YTQ2MmZmOTg3MzE3M2ZmYjc0MmMyZjZmMmIyYTAyNGE5MmU0YTAgbGVnYWN5LXRydW5rCis2NTIyOCBhMDI4YzBiMmFjZWU3ODk2MDEyY2QxODVlM2ZiMWFkOTAxYTk2MjEzIHB5M2sKKzY1MjMwIDg2MmMwZWFiMWM1MDliNTBlMGFmY2QxMjE4ZGI0NmJiNDE4ZGUxYTQgcHkzaworNjUyMzEgOGZmMjVkYjAxMDc4MjkyMWIyOTY3ZDIyMmEyZTkyZjQ1Mzc4NjY0MSBweTNrCis2NTIzMyAxODJmY2EwMjVjYTA0ZDU1Y2M0YWNmN2Y5YjE4MzM4M2E2MGQwMTg1IGxlZ2FjeS10cnVuaworNjUyMzQgYjcxZDc2YmY0NTA2NmJkODY5MjcxYmEyMjM1MGZmNTQ0NTY1ZDRmNCByZWxlYXNlMjUtbWFpbnQKKzY1MjM1IDk3MmY0ODlhZTM1NmY3NWZkYmEwNjQzMTgxZDMyODkyMDg3YzA4MjkgbGVnYWN5LXRydW5rCis2NTIzNiA1NTY0MDE1MWUwZmNjMGVkODQ0YjU3Yzk4NDMwMjVkZTY3MGE4NDNlIHB5M2sKKzY1MjM3IGJlMDdjMzA4M2NlYWUyOTBiOTAzOGFhYjkxYWY1NjBkNmM2OTc2OGYgbGVnYWN5LXRydW5rCis2NTIzOCA3NGVlZjg1YjRiMmNkZGU3NjRmYWQxNjBkNDI0ZDEwYWI0YmQ0MmE3IHB5M2sKKzY1MjM5IDMwMGRmNmIxZTRiMGQ3N2Y0MjM0NGE2YzhmNzRlYzAzNGQ2NzU2MmIgbGVnYWN5LXRydW5rCis2NTI0MCA5YTZmOGZiMTc1ZTA1N2IxMjFmODI2ZWFmYTRmNzI3ZmY0MjZiMDQ5IGxlZ2FjeS10cnVuaworNjUyNDEgMzA0ODViYzE3MjY4MDYxNWExZWM5N2EyMDIyNGFlZjI0ZWZjNGVmYSBsZWdhY3ktdHJ1bmsKKzY1MjQyIDQ5N2QyMjQwZTFmMGU5NmM5MTRlNTY0NGUzOTRlNmJiZDA3ZTA1NTYgbGVnYWN5LXRydW5rCis2NTI0MyBkM2Q1ODYwMTlhZmZmMGU3NTg5OGY4MDI1MTliZjI2M2Q2NmY5OWNlIHB5M2sKKzY1MjQ0IGIyMTE3YjE4MDQ5YzQyYTBjNjc4MjM3ZGIwZjUxMWZhMDdiZGFiZDkgbGVnYWN5LXRydW5rCis2NTI0NSA2MTNiMjQwMTRhZmJhMWNhNzk1NWFiY2I4MGVlNTJmMDBlNGViNGM4IGxlZ2FjeS10cnVuaworNjUyNDYgNzY3Y2M4OWUzZmRlYzU5MzZjNDZjOWI3MDkyYjYzNTNiMDY5NmJmMCBsZWdhY3ktdHJ1bmsKKzY1MjQ3IDRhNDYyMWE2ODdhNzg3ZWIzZjgzYjY4N2U2MDA0MTg5ZjMzYWQ4NTcgbGVnYWN5LXRydW5rCis2NTI0OCAyZDBlMDQwMDFlODFjMzZiNjRlOTA3MzY0YmE5N2Q1ZmZhZWFiMGVhIGxlZ2FjeS10cnVuaworNjUyNTAgMmZiNTVmZjA2Mjc1ZTY1YzcwODIzZjU5NWUwNGYyOTI0ZTI3ODc2NSBweTNrCis2NTI1MSA3YjA4NDQ4MTMzODkzYmU5YjMyNGFiMTBhY2RkM2E2ODkxNmUwNGUxIHB5M2sKKzY1MjUyIDcxNTMyYWQ3ZjNlZGY2MDhkOWExZTE0NDkzYTg2NzYwNjQ0ZDdiMWMgcHkzaworNjUyNTMgMGMxMmEzN2Q1ZTVkM2Q0NjQ5M2NlYWM5MWY3MjI3Y2EzZGZmZjM1ZiBsZWdhY3ktdHJ1bmsKKzY1MjU0IGI4ZDRkYmIyOTM4YTU5YTFmOTMwYzZjMTQyYmFmMzQ0Mjc0OTk0NmUgcHkzaworNjUyNTUgOWY5ZTVmZTYzZWMyY2Q3NDU5MmJhN2JkZDNjNmQzMDU4OGM3YmEyMCBsZWdhY3ktdHJ1bmsKKzY1MjU2IDMxMTFiNjU0M2RkOWU4YWU4ZTQwZjZiYjM1ZDExMTFjYmNlOGQxNTggbGVnYWN5LXRydW5rCis2NTI1NyBmM2JmMmU5YmI4NjhjNmU1MGNmMDliNjI1ODJlYTJhZWU2MDc0MDk1IGxlZ2FjeS10cnVuaworNjUyNTggYjAxZTIwZDM3MzA0MjU4NjI2OWZlMzVhOThhY2UyYzMxNWRjNjM2MyBsZWdhY3ktdHJ1bmsKKzY1MjU5IGUzZGE4NjlkZTk4ZWFiMTVlNGVmMGNkMmI3NmYyYWExNWQzYzFmNjIgbGVnYWN5LXRydW5rCis2NTI2MSAyZGE0MmRjYmI4Y2ViYjA0ZWRjNTAyZDQyMjY3MTVmNjNkMGViOTYwIHJlbGVhc2UyNS1tYWludAorNjUyNjIgY2M4NGVlNjY2N2I3MGU1ODdkNTFlN2U0YTIyNWJhMDc3MzY3ZGFlYyByZWxlYXNlMjQtbWFpbnQKKzY1MjYzIDk1ZGYxMThmNDJjNmYyMWIwMDdhYTVlODEwMWJhYTkzYjdiNzZiODYgbGVnYWN5LXRydW5rCis2NTI2NCAxNTFjMWNkOTRhNDAyYmMwZTRlM2YzZTBmYTgzMzQxNTE3ZTQ0YWJlIHB5M2sKKzY1MjY2IDhhZmM0ZTJjNGMwMjM2ZGQ1OWZmNjY1ZjZlZDVhNGNjMDNiOTU5ZWIgbGVnYWN5LXRydW5rCis2NTI2NyA0MGE1NzNmMDFmYzRhMmQxNzFmZmExNWJiNWE4MWU4ZDdlNmFiNDk3IHB5M2sKKzY1Mjg0IGNjYmM4Nzc0ZDgyYjU1YzQxZmM3MDEyMjRhNjhjYzExYjY2ZmI3MTQgbGVnYWN5LXRydW5rCis2NTI4NSA3OTFhNjMxYTJjN2M4MjgxOTI3ODExYWZmOTY2MmU2OGU3Y2JhMDk3IHB5M2sKKzY1Mjg2IDI2MmQyZWE4YWI1MGRhNWJmNGIyNjI2MjUzYjk0ZGVlZDE3NGM0YTcgcHkzaworNjUyODcgM2EyNjdmZTczODNjNDgxMTI2NjA3MjhkZWUzMTg3OWQ4OTQyNWVlNSBweTNrCis2NTI4OSA1MDIyOGQyYjMyYzE0MTE0ZGYyYTJhZWJlOWVhZmQyNGNlZDQwN2YzIGxlZ2FjeS10cnVuaworNjUyOTIgMjFlYWM5MTM4MjQ5NWJiYmUwMDg0ODExNzQzZDk5OTJjNmFkNjZlMCBsZWdhY3ktdHJ1bmsKKzY1MjkzIDBjN2ZhYjBiMDVjMDM2Mzc2YjNlNGM3OTE4NWNmN2Q3ZTE4YzUwMWYgbGVnYWN5LXRydW5rCis2NTI5NiA2ODliNWU4YWU2OWQ0YjE1MzVhMWY2YTg0YThlNDNkM2M5NzYwNDMwIGxlZ2FjeS10cnVuaworNjUyOTcgMDA4MzQyNTE5ZTg2NTY3NzdjMzIzOTNjZjNlODFiOGM3MDhkODlkNSBweTNrCis2NTI5OCBmZDMwOGYwMzhhZmJhNzk3YjljYjUwYWU0YWM5MGY0MGQwNTE2M2JlIHB5M2sKKzY1Mjk5IGI0MGUxM2JjYjllYTVlODY1MzhjZjc0OGI1ZWRmYmQzZmRiZDcxMTggbGVnYWN5LXRydW5rCis2NTMwNyA0MGU5NDlhNjgzNDQ2NWE0MWNkZjc2NDY4ZGRiYTk5Y2Y2NDY2OTNhIGxlZ2FjeS10cnVuaworNjUzMDggOGQwNWRkYTczNWY4NzljOTk0MGRhN2U1M2VjODY1ZDAyZjg1YjRkZiBsZWdhY3ktdHJ1bmsKKzY1MzA5IGIzNWNlOTU0YTM5MjEwYWI5NjQ0ZjlhZDYxMDlmMmY1ZDI2MTc4MjcgbGVnYWN5LXRydW5rCis2NTMxMCA4ZjM2MjBmNWQ2OGFhYmQ1OTkwZDA5ZmM5NzkwZTYzMTliMWIwYTBjIGxlZ2FjeS10cnVuaworNjUzMTEgOTBjMjViMzZlMGFkNjk1NzVjYWM4ODg0NjBjYzViZDNlOGMyYjllMyBweTNrCis2NTMxMiA4M2M3YThmYWViNzhlNjliN2Q1ZWY2ODQxNDJiMjE1ODFlYzU1MmIzIGxlZ2FjeS10cnVuaworNjUzMTMgMTJlM2MzOGQzMTZlMzhkYzEzYzE2N2ZmMjBiYzdjZjM4MjE0MGM1MyBweTNrCis2NTMxNCA3ZjgyMmI1ZDM2NzAxNDdmOWMzMTRmY2Y4NjMwYTFlZjEyNjQwN2VmIHRsZWUtYXN0LW9wdGltaXplCis2NTMxNSA2N2QxNzdhYWI4YTdjNWRiMDNhMmFlMDU1ZTgzMjBjOTkxMDliMzAxIGxlZ2FjeS10cnVuaworNjUzMTggOGExMzM2NjNlYmRlMDlmNjlmYjUzZDJmNGMzODA1NjlhMDI4MTAxZSBsZWdhY3ktdHJ1bmsKKzY1MzE5IDkxNTQ1NTNmODc2YmM3YzI1NjA3NTMzMzAxMGU0MDg2MDkyZjc3ZDMgcHkzaworNjUzMjAgMGZiZGRjMDRhZWUxNTlhNGZjZTIxNjJiZGRiMjE1Y2E2NjIxNmJkOCBsZWdhY3ktdHJ1bmsKKzY1MzIxIDVkYjQzMjg0ZWE3YWFjMjZhMTQ3YzczOGU1YTA4MDk4NzM2MDAwMjMgbGVnYWN5LXRydW5rCis2NTMyMiAxZWMzOGI3MDdjZDZiMTQ5ZTU3OTg3ZjJjZDgzYzM4YmE4MmQ0ZDY0IHB5M2sKKzY1MzIzIDZmMjMyZmNmYjY1NzZjNTVkNGZhZDc1NGM1OGYwOWE4N2JiNzA2ZmYgbGVnYWN5LXRydW5rCis2NTMyNCBiZTc1MjFhZjg0NWEwZTg0YzZjNTA4OTQxN2U1YjAzNmZjNTI5YzU4IHB5M2sKKzY1MzI2IDM0NzYwM2Y3OTRkMTFiNTRiMDk5MzNiM2Q3ZTk3NmQzNmQ2YzEzMWQgbGVnYWN5LXRydW5rCis2NTMyNyAxZGU3MThhMzEwMDRlMTk2N2U1Y2Q1MTMyY2Q0ZWQ2YmQ2NTY0ZGUxIHB5M2sKKzY1MzI4IDRjZWJiNWM4NGQ3Y2ZiYTg2ZjgxZjYwNDc2ODRiOGU5ZjZlODA0Y2MgbGVnYWN5LXRydW5rCis2NTMyOSAwMzc4MThjYWZjMzkzNTk5NjA2ZWEwZjljMTVlZjU5NjA5OWY0OGE1IHB5M2sKKzY1MzMwIDRjMTFmYzNiMzNhMjMzZmI0YzI2ZmYzMjNmMjZjN2U1Y2Q5MTk0NWEgcHkzaworNjUzMzEgMzViMWEyMDQ3MGRiMDc5YzA0NTdjNmE0YWI3ZDk3MzY3MmU2OWUxMCBweTNrCis2NTMzMiBiMzkwMWM1NjYwZjcxZDBhNzJjMGYxNDU1NzA3YjE0YjAyNDU5MTRiIHB5M2sKKzY1MzMzIDE4NzM4OGMxMTUwNTBjOTkxMDQwODE3NWQyZjVmMjI0YTkxNjBiYjMgcmVsZWFzZTI0LW1haW50Cis2NTMzNCAwYWFmZDFhZTUxMjA4YTFiNmNjMzEyMGJlYWFiM2FkZGY1N2M0MjNiIHJlbGVhc2UyNS1tYWludAorNjUzMzUgYzRkMjRmYzhiYThhMmVjNjViMmE0M2Q4OGEzYjUyZDUwMGRjNDIyMyBsZWdhY3ktdHJ1bmsKKzY1MzM3IDEzYjJlMTFmM2NmNWJkNzQwNmRhZmE0OGRmMWZjYmMzN2QwZDBkMjIgcHkzaworNjUzMzggZmVjOTg1Y2JmNTNmYWIwNTgzNzk5NTM3MDAxMjQ2NGQ5NzA2OTg0NyBweTNrCis2NTMzOSA0NTUwMTQ0YjE1NjA2NmZmZmM4ZmE2ZGU4ODQ4MGMzMTU1NDk2ZjAwIGxlZ2FjeS10cnVuaworNjUzNDAgNTQyOGY3ZmExNzFjZjFiYTk2MmM4ZDliNjRkMjI0ZjNhYjkzNjE5NyBsZWdhY3ktdHJ1bmsKKzY1MzQxIGRlNzVlNzI4MGI3YWE2MThjY2E1ZGJmNzFiZWMyZTJmOTgwNWY3YmYgcHkzaworNjUzNDIgYTk0ZjEzNmI1MjgzODJjMzk0MjgzODUxMzIzYzg1NzhjMzAwMjkwZCBsZWdhY3ktdHJ1bmsKKzY1MzQzIDYzMWNkOWFlNWM4ZTIyZTIzYjdhZTJmZjZlZTUyZmFlNTRkMmYxOTYgcHkzaworNjUzNDQgNGZlY2M5Yjk5ZDk4NTIyZGYyZGY1NjM5ODdmNzcxNWM5MmFmYzljNSBweTNrCis2NTM0NSBhNDc2ZWY1ZWViYWRiZTQyOTc2ZTMzZWQ4OGQ1YTU1OGUwNmQ5Y2EzIHB5M2sKKzY1MzQ2IGM1OWU5MGQ4ZDFjNzA4MjFjZTEyMjRlNWYyNWE3NWFjMjRkYjQ5YjYgbGVnYWN5LXRydW5rCis2NTM0NyAzYzE1NWQ3ODEzY2MxNzVjYjkxNzlhMWIyZjRiZDE0Mzc5ZWQyZDg0IHB5M2sKKzY1MzQ5IGMyYjVhMGFiMzA3MDYzODZiOWYzYzkzYTgzZGU5NDc0ZWU0NjI2YjYgbGVnYWN5LXRydW5rCis2NTM1MCA3MGQ0MGY5YWQxZDdhY2QyNzg0ZTM2NzU2YzRiODY5ZGI3Y2MzMzgxIHB5M2sKKzY1MzUxIDBkMmQyNmZmZTIwZWIyNDhhYzM2ZTAyODAxNDliNDkzMTBmN2Y3OWMgbGVnYWN5LXRydW5rCis2NTM1MiAxNDgwMjBiNWM1MzEyZTM5ODAzYTAxZmJhMTY3YzQ1NDhkZjRkMzBjIHB5M2sKKzY1MzUzIDExNDA3NzRmNjlhNTcyYzk1YTQyMDFiMWNhOTQzOGZiOWRjNDVmOGMgbGVnYWN5LXRydW5rCis2NTM1NCBmMWZjN2Q5MzUwOWQzZmVkMjE5MDExYWY1NDlhODRhMGZlNWMzYjViIHB5M2sKKzY1MzU1IDVkMmNkOTZhMTk2YmZkMjJhNDM4M2MwNTY4Y2FjMmMzMWI3NzE4NTMgbGVnYWN5LXRydW5rCis2NTM2NSBmMTIxYTk2M2FiNjk0ZGJiZjM3NThjYmRhZmY0NmFiMmVjMzEwNDk4IHB5M2sKKzY1MzY2IGVmZjRjOTRjMDJjZDFlMTJmODhiMDUxYjQ1ZDczODBkMDY4MzlmMmYgbGVnYWN5LXRydW5rCis2NTM2NyBjMGRmMWM2NDc3YmI5Mjc3YWYzNDkyOTg4MjZhMjkyNWE2YTQwOTk1IHB5M2sKKzY1MzY4IDk1YmMwY2YzMTIwM2NmODc3MmI3MzdkMjAxZWNmOGQxODQxMWIzOTMgbGVnYWN5LXRydW5rCis2NTM2OSBjYzM3MTU3MGUxNDEzMjNmYTA0N2QzOGU3MmUyNzY1MDQyMTZjNmUxIHB5M2sKKzY1MzcwIDEzODE3NzQyYTc4MTBiYTE0MzZkOWM4MDNjNzY0M2U2OGM4NTlhMTEgcHkzaworNjUzNzEgMTliNmM2MzVmNWMxZDMzMDBlNjkxMzgzNTdhOThmYWIzNmFmOGY0MCBweTNrCis2NTM3NiAxNTIyZjNkNWJlNmU3YTk0Njk3MzQzYTUxMmVmOGIzYzc0MDEzZGNiIGxlZ2FjeS10cnVuaworNjUzNzggYjhhOGQxMTMwNzZmYjk0NTg0ZjkxOWE5NTFjNWQzM2U3NDhiYTEwNiBsZWdhY3ktdHJ1bmsKKzY1Mzc5IDRiNzJjN2Y2MzA3NzQ1Zjc4ODZiY2YzZWZjYTk5ZDg4NzczMjIyOTggbGVnYWN5LXRydW5rCis2NTM4MSAxM2ViYjRiNWQ4OWFhODlhMDY2MTg2Y2JkMTRjNzdkZDU1MTdkOTJmIHB5M2sKKzY1MzgyIDQ1YmNkOTZlNTZkMWQ0MjFmYWU3NmM2YzRhMzI3YzdkODY4ZTQwMmMgbGVnYWN5LXRydW5rCis2NTM4MyAwYWZmM2JmMGEzNDI2ZjEyNDQxOWI4NDA3Y2FjODg2NGZiYTFiNTM0IGxlZ2FjeS10cnVuaworNjUzODQgNjkyMmY4NGE3MTU4ZjlmYzkxNThjNGQ3NGQyZjRiMmE3ZGY3MTMzZCBweTNrCis2NTM4NSA2YjdjNjEwMjdlYjA0ZmEzNzE4ZTg3ZGI2NzljYWU1OWZkZWQxMzc4IGxlZ2FjeS10cnVuaworNjUzODYgNTI3OWQ3OTYxMDkzN2E1YjRjNDc1MDExOTc4MTNiZTk0M2Y3ZDNiYiBsZWdhY3ktdHJ1bmsKKzY1Mzg3IDRiMWJhNTBkM2JkZjdhZGUyNTViYzRkZjc5MjU1Mjc5MjkxMWEyMzQgbGVnYWN5LXRydW5rCis2NTM4OCAxNjYwYjMzNTM4MjEwMmRjNmNiMzkwNTE3MjE1MGFhNGU1NzI3ODAzIHB5M2sKKzY1Mzg5IGY4ZDJhMzE4NWQ5YWFmZjNjMmZhMTJiODc5N2RiMjRjNzI5YmI0YzcgcHkzaworNjUzOTAgNGY0NmYzZjcyMzFiZmY4OWMzOTgyOWQ4ZDdjZDU5MzQzOTk2ZTJkNyBweTNrCis2NTM5MSBkMjFjMGEyYjZiMTFhNGU5ZjY5YjQzMmQ4YzViYmVmZDk4MzEzZWU0IGxlZ2FjeS10cnVuaworNjUzOTIgMDAxOGIxOGY1ZjQ2NDBhNzI4NzU1ZTc1Nzc1NTNlOWZlMTQwMGVlYiBweTNrCis2NTM5MyBmMGJkMzdlYTY5NDA1Y2I0MzVlZTFjYTFiYmVlZTMzZGNhMTY0ZWViIGxlZ2FjeS10cnVuaworNjUzOTQgYjg5NDVkOGYwMGVhMjUzMDNmODdhZGFiNGRiZjNjZjQ2NGFlNzAxMyBweTNrCis2NTM5NSBhN2JmNTAzYzg1N2U5YzdlZjIzYWZkOGI3MWM1MWQxN2RjNjI3YzQ1IGxlZ2FjeS10cnVuaworNjUzOTYgZTg3OTZiNTVmODFiMDhkMDVmMmY3MmM2MTRmODFiYTI1ZjQ4YzAzNyBweTNrCis2NTM5OSBiYTg0YzFlM2RkNjBjZWZiM2NhNzYxZjJiMWIxYzg3NzBkNjc4MmE4IGxlZ2FjeS10cnVuaworNjU0MDAgNGE0YzIwYTIxNjdiYjE4M2U1N2E4NGU2MWM1OTFjNTA5Yzk5Yjg2ZCByZWxlYXNlMjUtbWFpbnQKKzY1NDAxIGQ1ODdhYTVlODI0ZDY1MTliY2RhNWIzYWNjNGYwOWZkYjBiNWFlZjMgcHkzaworNjU0MDIgZmVkZGFmMjFjMmE0OWY3ZGY5NDc3NWU2ZmVjZWRjZjM3ZDBhNzdkMyBsZWdhY3ktdHJ1bmsKKzY1NDAzIDc0NzViMGZjYzVmZjJiYzNkZTMwZTUzNzdjNzI1ZjBiYWI1NGUyNzMgcHkzaworNjU0MDQgNjU0NDI1NDYxNzNlYTQyODIwMjQxN2U4NGRjNjY5YjFlNDJjZGNkMCBweTNrCis2NTQxMiA3NjNmZjFiYTkxYzdmMmQzZTU5YjMzMTlkZDhiMDdjOTcxN2M3MjhmIHB5M2sKKzY1NDIwIGJmNTAwODVmYmNkMzJkMWM0MmQ0M2U2ZWMzNzY5MDYzMWUwNDBhYzMgcHkzaworNjU0MjIgOTc2MDdmY2I3YjI2MTk2MWViNjc5MzYxY2M1NzE5OTU1ZWNmMGE0YSBsZWdhY3ktdHJ1bmsKKzY1NDIzIGNjNDNiOTk4ZjViNTE4M2NiMWIxMjI4NGI1YzhhZGE1YzEzNDU3MWQgbGVnYWN5LXRydW5rCis2NTQyNCA0MzdkZGJiY2RkMjk0YjczNWU2OTBhNDUwMmY0M2NjYTIwZjQ5MGM4IHB5M2sKKzY1NDI1IDRlNmEwYWUxYThlN2FhZTk2ODQ3NDRmNmEyYjI0MTAwOTAzYWFjZDAgbGVnYWN5LXRydW5rCis2NTQyNiA3NGNjOTMyYWQ4ZGI2ODZiN2IwZDA4YTdhM2ViOWIxZTYzNGQyMjdhIHB5M2sKKzY1NDMwIDhmMzJiMTMyNjliNGIxYWU5NDdkZmU4MDU2ZTlmYmUwMmQ4ZDhmOWQgbGVnYWN5LXRydW5rCis2NTQzMSBiZDUxY2Y3MTc2MjQ1YjBlZWJmNmRkZDY4MThmNmY1M2JiMDNkOTQ3IHB5M2sKKzY1NDMyIGUwMDdhZjc5ZjY3YzZhNTE3MGE1YjI2Zjk5MTY4NmQ5ZjVjZTM5YmUgcHkzaworNjU0MzMgMWRiNDgzOTQ4MTA2Nzg5MzYzODFjYWNhZjMyYTMzOGUxNmQ0MzVhMiBweTNrCis2NTQzNyAzZTQ0ZGViYzJiYzkwYTc2YjFmNjE4M2RmZTkyNDFmYzE5NTE4YjJkIGxlZ2FjeS10cnVuaworNjU0MzggZGY1YjM5NGQxZTI0MzkyOTVhNjIwOTBlNjkyMzY1OTRmNTZlMTIwMSBsZWdhY3ktdHJ1bmsKKzY1NDM5IGU5MzQ5NTZkZGNlMzcyYzFlMjFkNzU3Y2M0MGRkMDYwYjAxODNkMTggcHkzaworNjU0NDAgNGU0NWQwY2ZhZjcxYjUyYmQxMzkxYzYyOTBkZTEzY2ZmZmJhYjMyNiBsZWdhY3ktdHJ1bmsKKzY1NDQxIDhjNDlhM2U5MGY0MGE4NGZiODM0OTNkYzM1ZDE5ODZlMjliNmEyNjggcHkzaworNjU0NDIgMTgwM2RlNWFlMGRjMzcwZGYyMzcyMjc2ZDViOGZmYzQ2YTA3N2U0NiBsZWdhY3ktdHJ1bmsKKzY1NDQzIDMzZGFhZTYzMzllZTNhMjcwYTI5MmRiNjdjNTE2NzIzYzAzM2ExZWYgcHkzaworNjU0NDQgOTg2Y2JkYWYxNTRmYzI3M2IzNzJiZTk4NmM0OTFhNDY3ZjQxMzY0MSBsZWdhY3ktdHJ1bmsKKzY1NDQ1IDVmM2VmNjQwMGE5Njc2MmU2MGMyN2VkNTFhMDU1ZTZkNzkxMWRjN2YgcHkzaworNjU0NDYgMjUxMjgyNTgwMDQxYTI4MDY4NzI4N2Q4NGE5OWJmZmMzZjIzZmIzNCBsZWdhY3ktdHJ1bmsKKzY1NDQ3IDBjNmI2YmQ4NWFjYWQzNzM3MWI5OWZhYTNjODFmY2VkOTc4NDg3NWYgcHkzaworNjU0NDkgMWYyMmRlOTNkYWY4ZTMzY2ZkMDBjN2FlMGU1MzMwNTdhZjc4ZThmOCBsZWdhY3ktdHJ1bmsKKzY1NDUwIDgyZDRkNmRlZTAzNDc1ZTNlNmFmYWE0YjAzODdiODM1Y2RmNjFlZGUgcHkzaworNjU0NTEgZDRkYjVkZWQ3NmNlMWZjMThjNGRjYzE0NjYxNjRkOGE0NDkwMzFmNSBsZWdhY3ktdHJ1bmsKKzY1NDUyIGQ3YmFlN2JkMzlkNmYyMzA2MjE1MDBkNzJkNGU4NmE3OWIzNDgwNDUgcHkzaworNjU0NTMgMmU4Y2RlZTM0ZDk3N2VlYWI4YTM5YTNhODI5YjUwYTJmMGQyOGJlMyBsZWdhY3ktdHJ1bmsKKzY1NDU0IGUzNjIwYjczYTdkMTRmNzMzYWM1MmM0NjE5OGI3NTIyODNkNWVmNGEgcHkzaworNjU0NTUgMzVlN2RjOTc3YTYzYzM2NDQ3M2YyYzQxYTg2N2Y4MGNlMjFkZDc4NiBsZWdhY3ktdHJ1bmsKKzY1NDU2IDg5NzJjZTU2MjRiNGQ5MTYwN2NhZmViMjAyMzUyNzlkZjA5Njk3YzcgcHkzaworNjU0NTcgYzc3YWM4YmRkM2ZlYjRjN2NkYTk0NmU0OTEzNjM1N2MwYTQxZjI0MSBsZWdhY3ktdHJ1bmsKKzY1NDU4IDQzMjJhZjFiNmQzZDZiZDVlZWIwMTY2ZTZiZDU4M2RkMTdmY2U2MDQgcHkzaworNjU0NTkgMjg4Y2ExYzcyODg4MDk0YjU5MzJiZmIyNzczNzQ4NDk3NWJmMTVhOSBsZWdhY3ktdHJ1bmsKKzY1NDYwIGRjODUwZGEwNGJkNTQ3MjE2ZTMxNDczZjY4NTAxZmFlMjEyYzYyZWYgcmVsZWFzZTI1LW1haW50Cis2NTQ2MSAxNTA4Y2VhMmM2YjU2ZTU4MDIyMmY4MjlmYjU2NDMwODM0MjE0MDM2IHJlbGVhc2UyNS1tYWludAorNjU0NjIgNTZiM2IyY2NmZDY4OGQ4YTU0ZTUxMjk4ZDBhY2JhNWY2MDJlYTU0YSBsZWdhY3ktdHJ1bmsKKzY1NDYzIDU1ZTMyNTgwOTRmMDMyZDNhNjAwYjViNGNiNzBkYjAyMDNiODk4ZTcgcHkzaworNjU0NjQgZmRmM2I2ZjQ5OWRhZTFlYTk0MDE5OTQ5MDE5ZTM2MWE3MDgyYTAyYiBsZWdhY3ktdHJ1bmsKKzY1NDY1IGRhZGE5NGE1MzI5ZjJmODI4ZDNlNzk2YzM4OWMxY2I1NTI1NjRjMjQgcHkzaworNjU0NjYgMWMyNGEwOWFjYjk3Yzk0MDhmOTc2NmM3MDhlODVmYzJmMTE4NDI4ZCByZWxlYXNlMjUtbWFpbnQKKzY1NDY3IDIxZjE0NjM4N2E2M2NmYjVjOTI4OGQ3YmI1YzhiMzIyYmRiZTBjZWMgbGVnYWN5LXRydW5rCis2NTQ2OCA5ZGNiMWQyOGVmYmI4ZjM5ZjNhNTRkMjQ2MTEwMjhhNzVmNjkyMDdjIHB5M2sKKzY1NDY5IDhiZDU2NTAxOTNjNjA4NGUzMzY4NTAwYWY0NDFjODc4MzIzNzlhN2MgbGVnYWN5LXRydW5rCis2NTQ3MiA0MGJlMzdlNjkxNThmNmZjZjZmOTI4YmY4ODQzZTVkMjdhZDNkOTU3IGxlZ2FjeS10cnVuaworNjU0NzUgNjQxZWRlZTRmY2IxNGYxZDYzY2UzYmUzY2RiZjIxZjE2YzExMmFkNyByZWxlYXNlMjUtbWFpbnQKKzY1NDc2IGMyMzViYTcwZTU5NGIxNDA2NzhiNTVkNDkzOGZiNDE4YWM0MzU4OWEgbGVnYWN5LXRydW5rCis2NTQ3NyBkZjBhYzA2Y2RkY2MzZThiNWMxMGE2ZGRjMGFmOWFjMjEyMWIyOGZkIGxlZ2FjeS10cnVuaworNjU0NzggNTEzNDA2YTM3ZTM4NTM2ZmVmZjVkZTQzOTY2NDY0ZjQ3YzFmMzQxNyBweTNrCis2NTQ3OSBiY2Y0MGM4MTg5MWUxMGY5ZDBlMzgxNTZhYTdjN2Y4MmZlZGZiZTZjIHB5M2sKKzY1NDgwIGFiNGM5YzM4NGQzMTg4MDIzNzRmMDkwMWRhMjE0NWNhNDdjZmNkYWQgbGVnYWN5LXRydW5rCis2NTQ4MSBhOGE4MjMyY2I1NDE5YTJiYmRkNTg1MzA0YTM3MDMxZmJiNjcxODliIGxlZ2FjeS10cnVuaworNjU0ODIgNTlmNGY5OTQ3MzBmYTc5YTgxOWI4NzIwODU1ZmQzYzc0YWMwYmFlMSBweTNrCis2NTQ4NyA0OTQxMWQ3ZGMyNTc0NzNiMDhkZDYwNDM3NWU4ODhjZGY0MjAxMWI1IGxlZ2FjeS10cnVuaworNjU0ODggZWE4M2ZlZTU3NDIyMzBiOTY2NDBhY2YwYmIwYjhlYTE3ZGZlN2FkMyBsZWdhY3ktdHJ1bmsKKzY1NDkwIDZjODhkZTNjNGQ0ZGQ4NTJhNmM0YTU3MjA2MDg5NDJkZTBlNTM1N2QgcHkzaworNjU1MDIgMjE3NDU1NjNlNjgwZTBkNGNmZjFkYTNjOWY1YzMzNTYxOTliOTI3MyBsZWdhY3ktdHJ1bmsKKzY1NTA2IDZiYzNjZmUwOThjZTQ1NzhmYjBlNzIyZDI0OWRlOWJlNzYzYjA2NjIgbGVnYWN5LXRydW5rCis2NTUwNyA1MWY1YzhlODg1Y2E4YzQ5ODNmMTNiMDQ1OWMzOGFlODE0MzY0MjkwIHB5M2sKKzY1NTA4IDkzYmNjOTIwMWVlMDdmNzM3MjRkNTcwYmQxYzM2MzY4OWYyZDE4OTUgbGVnYWN5LXRydW5rCis2NTUwOSBmYWNkODE5NzI1MjNiOTYzOGU5YzM4OTNjMmRmMDc3ODYzMjc1YzdjIHB5M2sKKzY1NTEwIDRkODQyN2QyNWY4NGUxY2M5N2Q2MDMwZTRiNjViYTliNDZlZTY2NzEgbGVnYWN5LXRydW5rCis2NTUxMSBjZmY4MmI5OTBhMjI5OGEyOTJjZTUwMTA3ODNlNjQyODc0ODM0MjQ3IHB5M2sKKzY1NTEyIDQ3Y2Q0NTE2ODYzZWVhN2JiZGQ2NGFmZmZkNmU0MmM3YWNkNzgyM2UgbGVnYWN5LXRydW5rCis2NTUxMyBlOWI2ZTQ0ODg4NzFlOWQyZDFjYzU0YWMwNDJlNWZkMDY5YjQyZWE4IHB5M2sKKzY1NTE0IDk3OWYwYTg5OTAzZjI5MzU4MmIzZWNlZThjNjNmMjcyMmIxYjcxZjggbGVnYWN5LXRydW5rCis2NTUxNSA1N2I4Yzc3OGRhMDczNGMzMTkwZGFiZjgzMjIwOTE0MzAzNzg3ZTRkIHB5M2sKKzY1NTE2IGY3ODQ2YTcxZTM4YTIxMTA4NjI4NjM2MTQzMDI4YjhmMjYzYzI0YTMgbGVnYWN5LXRydW5rCis2NTUxNyAzZDA4M2U2OTI2NWVmMGNjMjc1MGEyZjc3NzEyOWFjZGM2NWUzMTcxIHB5M2sKKzY1NTE4IDZjNmEwMzA1NjdkZDA2MzEyYWJlNDZkY2ZjY2UxZDMzYzk0N2M5MjcgbGVnYWN5LXRydW5rCis2NTUxOSBjZjMzMWZlZjMyOTNjNzIwMGU5N2FmYTY4NTA5NmFmZTkwYWRkMGE1IGxlZ2FjeS10cnVuaworNjU1MjAgNTk0Yzk5YzBmMDc4NGEyZjYwNDAwMmVmMWVhMzIxNmUwZmEzMTQ5MCBweTNrCis2NTUyMiBkZjI3N2U2NDJlNTgwMGIzOTRlMjY4OGNkNmY3ZDJkYjg5ZTMxOTI5IGxlZ2FjeS10cnVuaworNjU1MjMgMGRhMzAyZjdmZTk0MzJjNzMzZDkxZmIwOGEwNGEzOTM3ZjVmZGUwOSBweTNrCis2NTUyNCAzODFhNzFkZjA2MGU0ZjU5MzE5MzU2ZWE3YzZkN2Y2ODE3YTc3ZTIwIGxlZ2FjeS10cnVuaworNjU1MjUgZmZjMWQ4ZjhjNWFkMDI1YjZlMjlkMGRiOGZkODZjYzIwZjJjMDI2ZSBweTNrCis2NTUyOCA5ZmFhODc5MDIxMTQzNGY0NTQ2NTRjMGJiNjZjOTEwZTA3NjZlMmMzIGxlZ2FjeS10cnVuaworNjU1MzYgNjhkZjg0MmQ2MzMwODRmZGQ1YzllNmJmY2U1NWMyZjIxNzNlNTg0YiBsZWdhY3ktdHJ1bmsKKzY1NTM5IDViNzc0ZmUwNGM3ZTE3N2UzZDhiM2IyMzE1ZTBjODIwY2QyODBiYjEgbGVnYWN5LXRydW5rCis2NTU0MyBiNjU0ZDE0Y2I5ZDllZTBkNDdjZjIzZTZjMTY0YzhmMGNlYWU5ODcyIGxlZ2FjeS10cnVuaworNjU1NDQgZTVmYzNlMTk4ZGRhYzFjN2M3OWM1N2FlOTlhMDdlYWM4YzNjYjJiZCBsZWdhY3ktdHJ1bmsKKzY1NTQ1IDE2MzU4OTFiMThlODFhZDZmYzkxN2M2YTQ0MGUwYjZhZWRjN2QyNDggcHkzaworNjU1NTggMjM2NjM3MzkwNDU3ZTZiMzE4MWVhNmI2MmI3NjVmNDhhYTkyYzgzYSBsZWdhY3ktdHJ1bmsKKzY1NTU5IDc5ZWEzNDBkMWE1OWRhZmUwYzVkNjQxOWRhZTBkZTFkZTk1YjgxZTcgcHkzaworNjU1NjAgODNhNzIxOTM2NGIxMzY3MTg4M2QzZWY5NGEwMmM3YTBhNWUxMTgwNiBweTNrCis2NTU2MSA1NDkxMDhlOWEwYTMyMjMxN2I1Mjg5MmQzNDI5YTAwY2Y1YTA1NDg1IGxlZ2FjeS10cnVuaworNjU1NjIgOWNjYzE2ODJlMTliODc4OWY0MDJkNzdhYjFmZWI2MDgwNWUzZDQ4MiBsZWdhY3ktdHJ1bmsKKzY1NTYzIDUzYWRlOWU2OGI1NjJlMzNiNGU1OGUzNzUzMmRhZGRiNGQ3YTE2ZGQgbGVnYWN5LXRydW5rCis2NTU2NCAxMjM3M2ZhNjgwNGU0YjlmNjFlMGMzNTY1ZTk3ZmExYzhlYjI0MzE4IHB5M2sKKzY1NTY1IDAzZGFlMDM3YjJiNzI3NTU1ZDI4ZGMwZDZmNzZjZmE5NjkzM2MzMTAgbGVnYWN5LXRydW5rCis2NTU3OCBmMWZjOTQ3NzIyZjI5YTQzY2IyOTdkNDkxODYxM2MyZmU3ZTZkOTJiIGxlZ2FjeS10cnVuaworNjU1ODAgMDQyZDE2YTA1MDE2OTExYmYwOWJjYzg4MTdjOGIyYWNlOTFjZmE3YiBweTNrCis2NTU4MSBjOGM5ZTc4ZmMwODIzODAxYTczN2JmMmNiMGMwM2Q1MjAwMTkzMThmIGxlZ2FjeS10cnVuaworNjU1ODIgODViNjdmYjU2NzJiOTlmMzEyOWRlMDMzZjBjNjAxZmViNmQ2NWZhNyBweTNrCis2NTU4MyBjZmFkM2Y3ZjVlNjM4ZWMxZGQ4NDcxNjRmMWI3OTUwN2M2MzA3ZTdmIHB5M2sKKzY1NTg0IDBiZjZjNDJhYjRlNDIzODU2Yjg5NDYzOGVhYzkzMTc4Y2QzYTk3NmMgbGVnYWN5LXRydW5rCis2NTU4NSAyYjNkNDJlZmZlNWJlMTY5YTc5ZDkxNTliZjY3NDBiMTQ1ZDJhNjhmIHB5M2sKKzY1NTg2IDY0MTZlNjA0NGEzMDE2NzZmMDJhNmE1YjkyZWZkYjg5ZjI2OThmZjIgbGVnYWN5LXRydW5rCis2NTU4NyBhNmQ2YzJmYWQyMjAwZWNmOWYyNjg0Mzc4NTAyMzg5N2UxMjIwNTI0IHB5M2sKKzY1NTg4IDY1OTAxZmZmZmM2YWJlNWEzMGJkZDFjZDAzMTA4ZTlhNzViYzQzMGQgbGVnYWN5LXRydW5rCis2NTU4OSA0ODdlMGQ5YTM4MWE4MDAwMDZhZjc2NzQyODEwYzE5NjQxZGVlODQ0IHB5M2sKKzY1NTkxIGU2ZmU4M2MyZTI2MjA2ZjRhYWU2MmMyMzM2ZTU5ZmRkODRjZTRkOTYgbGVnYWN5LXRydW5rCis2NTU5MiBiMmM1MDVkNGEyMDNkODJkODAyZTVkODQ3NGVkNjJlMzMzZDkzNDQzIHB5M2sKKzY1NTkzIGZkN2I5M2EwMWMwNGI3ZTRlZDFkOTczNWRlNGFmMWY3NzY4YTE5NjkgcHkzaworNjU1OTQgOTQ5YjlhMmI5ODY3NjEwOTYyNzBlMTBmNWU2YWEwMmQ0MzViMzc4NiBweTNrCis2NTU5NSBlMmM3MDZmOTkwNmMzODViOTc5MzZlYTA1OTZjODUyNjkyZmEyOGZlIHB5M2sKKzY1NjAxIDcyMjRmZmY5ODgyM2JjOTgzMDA3OTliM2NmOWM3NjZlNzZkNjU2NWQgbGVnYWN5LXRydW5rCis2NTYwNSA0Nzk2NzY5MGI1ODU1ZWM5Y2EzMzFhZWIyMzFlY2U0MThhNzVhMTNlIGxlZ2FjeS10cnVuaworNjU2MDYgYWFkNTgwOWZjNDE5NTViMTQxMWRhNzc3MGQ4ZjY3ODBiNjVmODVlNyBsZWdhY3ktdHJ1bmsKKzY1NjA3IGVlMGE1MmM5ODJlNWY2YWE0NWRlZjA4YTNjY2U4YmI2MGYwZmUyZmYgcHkzaworNjU2MDggNjNhZWE5OWM5NzFhNjdkOGVjMGJkOWNmOWQ5ZGY2N2M3MTAyYmRmYyBsZWdhY3ktdHJ1bmsKKzY1NjA5IGQ2MTVhYTlmZGYzNjEwNDhkZTJkYjE0ZmYzMDMyOTdiMGQyZDdhN2MgbGVnYWN5LXRydW5rCis2NTYxMCA2ZDhkOTIwY2Q5MzI0MGE0N2NkMGIyMjZkYjgyMTQ3NzNkYmM4ZTZhIGxlZ2FjeS10cnVuaworNjU2MTEgMWExMTcxN2ExNTRiNGRmMjMwNWRjM2I0ZjliYmViNDRlZjNhOGI1MiBweTNrCis2NTYxMiBkMzUyOTY0NGM2ODIzZWM0ZmFjN2QxYjhhMTc0OTBlMjg4Nzg2NjBlIHB5M2sKKzY1NjEzIDM4OGE0YmU3ZDY3OWExNWYxZjI1ODZkODAxY2Y4MzE2NTJhOWYxZWQgbGVnYWN5LXRydW5rCis2NTYxNCA5OWY5YmVhOTA5YjU1OWE3MmY0NGNlNDkxMTc0ZGJkODVmMTQwNmFlIHB5M2sKKzY1NjE1IGIzYWJmZjE3ZTJkZDE3NGQ0N2Y1MDlhMzg1NWM1ODEwNWRhYzAxMTEgbGVnYWN5LXRydW5rCis2NTYxNiBhY2I5OGRiYjFiMDRmZWUzNTA4ZDMxYmQwYzY1YmMzMjExMDZkY2JlIHB5M2sKKzY1NjE3IGJjNmEzNTcyYmM4OTZkM2IxN2ZlNGM5ZWViNjQ3NjcxNDk2NzY5NzMgbGVnYWN5LXRydW5rCis2NTYxOCA5Zjg0MzM5NmRmODk4ZGFlYjM2MDEyYjIyOThhOWVlZWUyNGQwYjc0IHB5M2sKKzY1NjE5IDMwMTM1YjZlMzhmZGFmNzMyMjIyZTA5MjRiMjM5OGEwNGI1YjdlNTYgbGVnYWN5LXRydW5rCis2NTYyMCAzM2NkNmM1ZDFhMDRiMWY4ZDM4MTkxMmQ0YTFjZGU4NmQ5MDNhYWQ5IHB5M2sKKzY1NjIyIDVhMTVhNzA0NGU3ZDhkNmJhOGMyYTljMzAzYTA3MTYyOGNhZjRmMWYgbGVnYWN5LXRydW5rCis2NTYyNCBhYzgxMDMzNDFiODBlOTAyMDVjZGZiNGIwNmNkZDFhYjk1Nzc4NDFjIHJlbGVhc2UyNS1tYWludAorNjU2MjYgMDU0ZGMxMTFiMWQ5YzExYTcwZDczYmU2M2Q3NjNkNmYzN2E4MWFjZiBweTNrCis2NTYyNyA2ZTRmNDdhNjllZmE3NTQyMjc0ZWVhYjY0MmFjYmM5N2FlYTRhMDA4IHB5M2sKKzY1NjM3IDY5NDgxNGQ3YjEwNDNjMTM1MGViNDhlM2NhM2VlYjE3MWI2MDFiZjcgbGVnYWN5LXRydW5rCis2NTYzOCAwYjY3MWJjZTY5NGU0ODk3ODI5NjQxYWVlZDYwZTQ4ZmVlNGU3MGRkIHJlbGVhc2UyNS1tYWludAorNjU2MzkgY2U1OWRhYzNmY2EyNGNiNmEzZGViYzg4M2QyYTdhNGM1YmQzNTBhNSBsZWdhY3ktdHJ1bmsKKzY1NjQxIGNmNjk4NWNiNmQxNTZkZGJhY2IwMThkOWEwN2ViNzhlMWQ0YzAyODEgbGVnYWN5LXRydW5rCis2NTY0MiA3NTI3ZGEyYjA1ZThhOTg4MzZkMzliNzAyOTkxNzg3NDJlODk2M2NjIGxlZ2FjeS10cnVuaworNjU2NDMgZDIxZDhjYmU2YmQ0ZGQ3NDBhZTM2OTJjYjc1YWJjNWM1NmI2ZjMxNSBweTNrCis2NTY0NCAwYWFlNzJmOGRkYTkwNDk5M2Q3ZThiZmNjMTY0MTYzZTJlYjQ4YmJlIGxlZ2FjeS10cnVuaworNjU2NDUgMjlkOTM2YTRmODg1ODg2ZmQwNzVlMDQ2NmE2OTM5MDEzYWRlZDc4MyBsZWdhY3ktdHJ1bmsKKzY1NjQ3IGViZWFhNjUzNmQzMjhhMzE4ODNlNDMzNzk1Y2YzNzdkZWE2NzVmYzQgcHkzaworNjU2NDggNzc3OWFmMzg4YWVjMWEzZTAwMjMyMjUyMzdkOWUwZDFjZjU1YmViNCBweTNrCis2NTY0OSBlZjQxZGFlMzBmMzVkMzZlZDQ3ZTkyZGZkZTg5M2YzMTE0MzA0M2NmIHJlbGVhc2UyNS1tYWludAorNjU2NTAgZWVmZTQ0NTBmNzczZjJjZmExZjQ1ZDQ5NDM5NDE3MjI3MmE3NmFmNiByZWxlYXNlMjUtbWFpbnQKKzY1NjUxIGRkN2UyZDY4YjZkZGRmMTYwODk5Njc0Mjk4YWU4MDdjYjlhMjQzYjEgcmVsZWFzZTI1LW1haW50Cis2NTY1MiBhMzM5M2U1ODFiMTViODRmOTE5Y2UyOGVmMWFiMThiNzc1ODc0MGI3IGxlZ2FjeS10cnVuaworNjU2NTMgYjIxOWQ1NTQwNGU3NmFhNjY0ZTJiOTg3MzcwNTgxMzFmMGNjODBmZSBsZWdhY3ktdHJ1bmsKKzY1NjU0IGI4YzRiZjM5Mzc5NGU5YjFlNzczNzg4YjA3Yjk0M2E5NDdhOTY3NWYgbGVnYWN5LXRydW5rCis2NTY1NSA3OWZhM2UwYzA5ODg5YWFjYmFhMDA4MmI2MmQ3NjQ0Zjc5YzJkZTgxIGxlZ2FjeS10cnVuaworNjU2NTYgM2M4ZWYzNDY2OTIzNzEyMzhkMTAwMjU1NmFiNTIwOWZiYjRiY2Y2MyBweTNrCis2NTY1NyA3MDE1MTY1NTUzOTM3MzZmOWM2OTllYzNlNmNlODIzOGVkYTllN2FlIHB5M2sKKzY1NjU4IGYwNDcyNTMzYmZjOTg5MDYzNWY4OTI4NDQ3NzdkNzNiODcyYjUyZjMgbGVnYWN5LXRydW5rCis2NTY1OSA3OWMyOTE2ZmU1OGU0MWU3MWMyOTc4NTY4NWM2YTlkOGE1Y2QxZjMyIGxlZ2FjeS10cnVuaworNjU2NjEgY2QzYjBiN2ZkOGUxYjdlMmUzY2IzZWYxY2ZlYzcwMmE0ZGYyZDZmNCBweTNrCis2NTY2MiAxMzFmODViYjY5MzAwYzQ4ZTZkOWY2ZGEyNzU3YzIyMTRmOGEwYzk1IHJlbGVhc2UyNS1tYWludAorNjU2NjMgZWNjZDk0Mjk3MDJlNGY1NzNiZGY0NDJiNmZiYmJhOGU5YzRlOTRhNSBsZWdhY3ktdHJ1bmsKKzY1NjY0IGQ3OGUyNGIxMmY2MzM2Yjg3YTUxNmI1MmRiMDNkZDA0MmJkMGZlZTggcHkzaworNjU2NjUgNTBmZmZjODAwODQ1N2E5YmUwZWNlZjg2N2FhZTEyMTQzZjQxZTUxOSBsZWdhY3ktdHJ1bmsKKzY1NjY2IDlkNzhmZDYwYmYyYTVlYWNkNzQ1YWUzNGFmYzg0NjE2OGNhOGNhNjIgcHkzaworNjU2NjcgMDYwMGZjZTY3ODM1MjI4OGNkYjc3ODc2NDM3Mjg0NmU0ZGU3MjUxNSBsZWdhY3ktdHJ1bmsKKzY1NjY4IDRmMWZlOGYxNmVmOTNkNjNmOGYzODE3YTJlNjljZTVmYTA1YWZiYTMgbGVnYWN5LXRydW5rCis2NTY2OSAwNDU1NmUyYTc5ODRmOTQxODE2OWRhMTU2YzQ5ODFkNGI2Zjk1N2Y4IHB5M2sKKzY1NjcwIGY2MDI2YTM3OThkNDQwMTNjYzA3NGZiZDRiMTFlMDIzMWRiN2VkMzUgcHkzaworNjU2NzEgNmIxOTA4ZWE2YjUzNTQ0ZjYzZDllYTFkNWVhMGM4ZGJjNTJhNGE5ZSBweTNrCis2NTY3MiA3MGYyNzk1ZDY5MDI4MjYxNTJlOTBiOGZiNTllYWU1Mjk3NzNhYzlhIGxlZ2FjeS10cnVuaworNjU2NzMgNjFkNTBkYTU4MTZhMzg3MjBhYjQ0OTJlMDI3MDJjZWE0MTQ5YWNmMCBweTNrCis2NTY3NCBmMTI2MGY0MzExZWU3OGM4NTEzMjkzYzJjYWQ0MzFjMmMzODU0NjY1IHB5M2sKKzY1Njc2IGFkZTMzZTEzZWM2OTMwNjZjNmRkNjdmOTFhNTJkNTFlZTk3OGY0Y2EgcHkzaworNjU2NzcgZTg1MDlhYzUwMWYzMjRkODU3NzVlNDA0ZjAxYmQyY2Y0MjMxYWViNyBsZWdhY3ktdHJ1bmsKKzY1Njc4IGI3NTYyMWE0MjBlY2IyOGU5MjM5MDBhNDA3MWUwNGQxOTk2YmY3OTAgbGVnYWN5LXRydW5rCis2NTY3OSBhZjczODhhZDMxNjRlYjc0ZGRkZDk4NTEwYzMwMGUwNTFkNDQ1ZWM4IGxlZ2FjeS10cnVuaworNjU2ODAgMjkzZGY4MTUzZjYxODU4ZWFjYmNiOWEyYzhjODA1MDUzZWQ4YzY4MyBweTNrCis2NTY4MSBmOGEzNDZmY2QwNDE5NjMyMWFjNmIzNzM3Y2M5ZmI3ODc3MTg5YTVlIGxlZ2FjeS10cnVuaworNjU2ODIgNjMzZmIwMjYwYWIzMjI1NDQzZmRlZTJlY2FjZjZmODA4OWExMTRlMyBsZWdhY3ktdHJ1bmsKKzY1NjgzIDM2NTBiMWNlNGJkODQ2NDEwZGE2OGJmNGNkNDJiYTE3YzRjM2YxZjAgbGVnYWN5LXRydW5rCis2NTY4NCA2MGUwZTA5NzYzYWI2MGQ0NDA2YzBiYTk1ZWNjNTczNmNiNjE2YTY4IGxlZ2FjeS10cnVuaworNjU2ODUgMTM2ZjYxYjc0ZThmZTlkMWI2MmZmMmY1YTQ3OTQ2MzFjODkwYzJiMCBweTNrCis2NTY4NiA2NzkzODU3NWFmYzZjYzZjZTY4NTdmYzVkNTg1NjIxZDc1YmM3OTEwIGxlZ2FjeS10cnVuaworNjU2ODcgNTRhMmRiOGZkYzYyNmRlOTRlMzRhY2U0YzQwYzc4NTBjZTBjMWFiZSBweTNrCis2NTY4OCAwYTQzMzc2YmFhNmJmMmE5MDdmMDJkNjk3Y2ZlNWM4MGE5NWQxNjc0IHB5M2sKKzY1Njg5IGU5NjFjYzAxNDYxOTE0MWQyOTYyMzhlYjUwYWI1NGE0YmE4NDAzN2UgcHkzaworNjU2OTAgYzZmMGRlNWYyYzY4NTIzZDZiMjIyZGI2OGNmMWM3NGY1YmNkN2M2OCBweTNrCis2NTY5MSA5MjMzMjg2YzdlZDBkYzVlNzJiODM4Y2JjZTY0MDQwYmZhZmZiY2RmIHRsZWUtYXN0LW9wdGltaXplCis2NTY5MiAxZDgxNzFkNjQ0NjNlZDAyNGViYzNiNjFkNGRmODhhNmQ3NDY5ZDlmIHB5M2sKKzY1NjkzIGNkZDg5ODQzM2Q1ODhlMzBkZjViOTg2YWEzNDUyN2Y2NDViYTI4MzMgbGVnYWN5LXRydW5rCis2NTY5NCBjMDU3OTg5ZTg3ZWI5ZGRlYTE4MTUxOWZmOTkzYTg4OTM4ODdjMjUwIHB5M2sKKzY1NzAwIDE4MDA2MmUzMzk1Njk4MGQ1NWI2MGY0M2JjYmQwOWYxOTIzMTQzOTAgbGVnYWN5LXRydW5rCis2NTcwMiA4MTYzZGFlZTc4NWQ0MGEzZDdmYjU1YWQwZDlmZGIxNDBmMTJhNzdlIGxlZ2FjeS10cnVuaworNjU3MDMgZjYyN2Y4MDIwMWQzOWZlMTVlZjliMmVmNmRmMTNkYmJiMDllYTY0ZiBsZWdhY3ktdHJ1bmsKKzY1NzA0IGU2MWRlYjY5MGU3MDg0MDJkNDUyZWE2Y2ZlNTdlMTRjYzExZWUxNDEgcHkzaworNjU3MDUgYTNmOTUwZDE1YzA4M2Y1NmFkZDFhZjNkYTAyZGMxNDI5ZjA4ZTg4NiBweTNrCis2NTcwNiBjMzdmNGIwMzYzN2YyMjY1ODM5MzQ5MzJkODk0MDJlMDQ4MDlkNmQ0IGxlZ2FjeS10cnVuaworNjU3MDcgNzEwMTQ2ODVlMGU1ZjViOTllM2M3MWQ3ODgyOWZhOTQ2MTZkYzAzYyBsZWdhY3ktdHJ1bmsKKzY1NzA5IDc4MGUxNzAzODkwMjk5YWJhYWUxMDQzNmFiMjA5ZDUyMGVlYjA1ZTMgcHkzaworNjU3MTAgMTcwMjg3M2YyNDkyZjIzMDUyNWE3ZjkwNjFkYWFiMDRmZmJhODkwMSBsZWdhY3ktdHJ1bmsKKzY1NzExIGM2ZDc4Zjg2OTQwNWQ3NTE0ZDRjYTcyYjEzOTg3OTk0ZDVkYzljNDAgcHkzaworNjU3MTIgMWVkODZjZTBiZWIyNjZhMjdkOWZjY2UyZjUyMTU2YWI5NTllODRkZSBweTNrCis2NTcxMyBlYWQzNThjZTRkOGFiMDlmZjI3MzhiZmE4ZmFjMjAyNmU4NWNmNmJkIGxlZ2FjeS10cnVuaworNjU3MTQgODc4ODYxNTE1YjE2MGM5YWJiNjdmZmIzNmI3OTQwNDJhNDlhYzhlYyBweTNrCis2NTcxNSA5ZmIxMGYzZDBmODczMDllOTU0OGNlMTQ0NmVkYTlmYTU1N2Y5YTg5IGxlZ2FjeS10cnVuaworNjU3MTYgODk0YjRhY2ZmZmU0MGQwYmI1Y2VkNjc0ZmEwYTU4Yzg0NGY1Y2I5MSBsZWdhY3ktdHJ1bmsKKzY1NzE3IDhjMGY4NTE5NmUzN2MyZTExZGRmYzM2NzkyNWRiZWY0ZjM5YzAzNmQgcHkzaworNjU3MTkgOTE4YTkxOGE5OTk2YzYwOTA3MGVkMDlkNDNhOTJhN2ZlZTEzYWZkMSBsZWdhY3ktdHJ1bmsKKzY1NzIwIGI5NzNmY2NkMDJhNWI5MDc4MWVjMjczNDQ4YmU2MDliMzMwYTc2NDIgcHkzaworNjU3MjEgY2E0YzUxMzU4NjI5Nzg4YzE3ZGExNTBhODgyY2YyMGM5NDI5N2Q4MiBsZWdhY3ktdHJ1bmsKKzY1NzIyIDFkNjVjOGY1YzA4ZTEzODM1N2RkYTFjMjQ5ZjBhYTBhMzI2NGFjMDcgcHkzaworNjU3MjMgNWRmNTZjZDU1MTlhNTY5NDdkMDRjZjhlYmQyNzU3MDJhYzkwMmE4NSBweTNrCis2NTcyNCAyZDc2YWY3Zjc3MDI2OGE5MmRiNDQ0MDc4YTgyYjlmNjFlYzNhMzkzIGxlZ2FjeS10cnVuaworNjU3MjYgYjYwZTA5MjhkYjNlYzdhMTA1MjQwM2JiMjgyMDVkZmI0YjUxYWZlNSBsZWdhY3ktdHJ1bmsKKzY1NzMxIGUwYzY1OTIyYjg3ODdkZjhhNDI5ZTUwNzBlOTBkNjBiNzc5Yzk0OWYgcHkzaworNjU3MzIgOWRlNjhhZDg2MDc4YzM2MWFiMzBhMThiMmM3Njc2YzlkNTdjYmFiMyBsZWdhY3ktdHJ1bmsKKzY1NzMzIGFlZmI4ZTlkMzg0NGYxZTVlYThhZDM2Y2RjOWMxNmQzMzAwZTczZTcgbGVnYWN5LXRydW5rCis2NTczNCAzMWMzOWE2MmQzZjk2NTVhNzJmODA4MDA0NzFiYzVmNTcwNTNjMDkzIHB5M2sKKzY1NzM1IGViYTc0NTdmNGJiNjkzYjkwYzExMjZhNzA1Yjc3NjYxMjU1Y2U0NjEgcHkzaworNjU3MzYgMTUzZTllNjc4NjQ2NGExODQzNzNlOWVjOWEwZmUwMDdkOWE0MGZiZiBsZWdhY3ktdHJ1bmsKKzY1NzM3IGZmODU2NTM1NDVmNWNhNzBmNGYwZWYyYjJkMzQ3ZTdjZDVhYzdiYTEgbGVnYWN5LXRydW5rCis2NTczOCBlYjFlNjRlNTM1ZTZhMTcxMjZlZmRiNGU5MDI4YzA5NTdkZTc3NmM1IGxlZ2FjeS10cnVuaworNjU3MzkgNWEzNWM5NjNlNzcxMjJlYTZjMzQ5YWM5ZTU4NmQ2NTYxOTkxNTNkNCBsZWdhY3ktdHJ1bmsKKzY1NzQwIGQ5OWZlNTZmOWZmOGQ2NDFjMTYwM2U3NjFhNjhiZDBkOWZkOGRmZDEgcHkzaworNjU3NDEgYWY0ZTQwZjg5M2JkOTUwZDA0NzEzMWZjZjI1MDNlZjkwMTNhMjBhZSBsZWdhY3ktdHJ1bmsKKzY1NzQyIDJiZTE3ZDM2OGE5YzViOGZlNjA4YmZmODVlNzY0YmI3NWJiNjI2NzcgbGVnYWN5LXRydW5rCis2NTc0MyBmMjRmMjZhMTIxODY3NWVlMDc0MjFmOGMzMzdlNmM1OWNhODE4ZDAwIHB5M2sKKzY1NzQ0IDQ4ZGRkZmQyZmJmM2JjMDAzNDcxYTJiZGFiM2U4YWNiNTBjMjcyYmUgcHkzaworNjU3NDUgYWFlZjA4YWEyYTdlZmZiYWMyOWIxMzg3ZWYzODk1M2FhNjZjNjcyMCBsZWdhY3ktdHJ1bmsKKzY1NzQ2IDYxMmIwYzBlNWEwZjMzZDhiOTJkNGFmMWY1NDIyMTFhYTA1NjUxMjEgcHkzaworNjU3NDcgZDlkNTE4Y2Q0OTNjMzJlZmFmYzhhM2JjNTI1MTI0ODIyMWY4NGM3MiByZWxlYXNlMjUtbWFpbnQKKzY1NzQ4IGM3NDgxYzczYzE2M2ExOTdhN2Y5ODJhM2ViMTg2YjZiZWRiMTBiZDEgbGVnYWN5LXRydW5rCis2NTc0OSA0MzVkNjRmZDEzYTljZDlkNGQzMDZlNDM2MTRmYTRmZjVkOWQ5MzU4IHJlbGVhc2UyNS1tYWludAorNjU3NTAgZjRjMmVhYWQwOWY4NDVlMTM4MzBjNDllYTg3YmZhMzVhNGY5YzQwNyBweTNrCis2NTc1MSA0NTU2OTg5NWY3YjU2MTRhYWQ1M2ZjZWM4M2I4ZGIzYTRkMjFiMTMyIHB5M2sKKzY1NzUyIGRkYzY1Y2QyZjBiYmJhYzM1ZjFkZjRjMDFhNTYzOTY5MjQ1MmE2OTUgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzUzIDkwZDA0OTk4M2Y1YjNkZmU2Yzc3MzY5OTAyN2RiMWY4ZDk5ZDQ1ODQgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU0IDA3NDA5ZTk4NWMzOWM5YWExNzFjZmViOGRmMTc2MTU0NzgzMjE2MTMgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU1IDljNDk4OTA3MjE4ZmQ3ZTgwYjJmMzIxOTEyNTY4ZjMyZDQ5ZDU5ZDYgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU2IGZjMWEwYWNmY2VmODA4YmYzY2Y0MzgxOGE1NTQ4NjMxOWVlMTgxNWMgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU3IGRhNTgzMzNlYzdkYTc2MWM1MTEyZjc3OGU1NWFiZmYwNmMxMDFmYmEgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU4IDUwNDkzZjlkZDhjNzFhNGE0NzFiY2VmY2I1OWI0Y2Y4YjExNDk5ZDAgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU5IDE2YjllZTFlZWUzMWZhMjU5NDI4ODVhMTg0MmViMDI4MDkzNWQ3NzUgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzYwIDkzYWI5ZmRhODBhYjBjNGEwZDUzNjI5Zjc3NmRhMDllNDg1OGMxMGYgcHkzaworNjU3NjEgZjQ4Mjg3NWUyYTAzMWFhYjZjMzQ2OTg1ZmEwMzJmMzkyYmFlOTYwMCBsZWdhY3ktdHJ1bmsKKzY1NzYyIGY0YzIyNmM2MWI3MWM4ZjZiM2U4YzY0YWI3M2FlNGNiZWIyYmExMTUgbGVnYWN5LXRydW5rCis2NTc2MyAyZjdlNTdmYzFmM2E2NjZiNTcyY2VhMzhmYjMxNGQzMTg0MDg2ZTFjIHRsZWUtYXN0LW9wdGltaXplCis2NTc2NCBhOGYzZTYzYjQ3ZTQyNDJkMzkyNzgzZTliMDE0N2M1YWI1MjAzOTc4IHRsZWUtYXN0LW9wdGltaXplCis2NTc2NSAzZGU2OWU2YjJjYjI1MjFkOGZiNmI1YjU2ZDlhOGIwYjc0YjA0MzQ5IHRsZWUtYXN0LW9wdGltaXplCis2NTc2NiBjNTA1OWIxMmRkYzZkMTg0NmIzMDUwMDUzODU4ZGUzYjczZWU2MzU4IHRsZWUtYXN0LW9wdGltaXplCis2NTc2NyA5Yjk4NTY3ZDVkZGU1MDcwNGFlOGE1NmQzYWJlMDlhMTk0ZThjZTFmIHRsZWUtYXN0LW9wdGltaXplCis2NTc2OCA3YTAzODAyMGM4ZGQ2M2U2ZGJhZDI2YzYzMWM4NGQ0YTFmNzRkOGU3IGxlZ2FjeS10cnVuaworNjU3NjkgY2FiZjk3YjgyMzMwODYxZTViNjUxMGI0ZjI2MTRiYmNlZDJiNmU4ZiBweTNrCis2NTc3MCBiMzc3YzE0NzMyM2ViZjllMDg2NzJiMjE0ZDY0MDFmZTBlMzVmZmI0IHB5M2sKKzY1NzcxIGU0Yzk4ZDYxNTdjNzAxOTdiYjRhYzZhNGI0MmNmNWRkY2JkYWM5YzUgcHkzaworNjU3NzIgNzFiNTNkNmVhN2E0NWZkYjVlMGRiNjVhZWExNTMyMmM0OTQ4MTIwOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NzMgZDdkNzEzOWQ1ODQwNmI2NTVjYTliYzE4MmJjNDkzMWY3MmUxMTNmNSBsZWdhY3ktdHJ1bmsKKzY1Nzc0IDFkODhhZDVmNGRlZjMzNjNmMjQ4NTE3ZWQzOTUwODFhMGRkYjgzMWIgcHkzaworNjU3NzUgYzM2Y2NmMmE3MWUxNmU2MTk1ZmI3NzM0ZDZjMzIxZGZjYWU5MmVlZCBsZWdhY3ktdHJ1bmsKKzY1Nzc2IGIyOWRmMzY0MmI5N2QzYjZmYzViZTE1MDAwMDc3ZGM3ZDgxNGUwYjcgcHkzaworNjU3NzcgNDBjMDdhNjFlMWMyNmMxZmZhMDRkZDE5NTJiOTQ1NTcyMTdmNDQ4OCBweTNrCis2NTc3OCAxMmMzYTAzMzg5ZTdmM2UyMGE3ZWM4MmI1YzY1MjJhZWRmZTJhOWM0IHB5M2sKKzY1Nzc5IDQ5MjEzZDQyOWM2ODFhMDFkYWUwYjM3ZGE5YWU5OGI5OWYxN2Y5MTIgcHkzaworNjU3ODAgMmJlYmMwYTZkMDQyODBkMGM3MzI2N2Y1ZGRiZjQ3OTI0NzBlNzk2YyBsZWdhY3ktdHJ1bmsKKzY1NzgxIDA2ODkxYWVjNDFkZTZlNjliNzFjNTU1ZWJiYzMyZTgyMzFkNTEyMGEgcHkzaworNjU3ODIgMTk1ZGE2ZDBjNzdjMTA2OGUyOGFkMjk4ODkzZDk4YzlkMzJlOTc0OSBsZWdhY3ktdHJ1bmsKKzY1NzgzIDgwYTlmZjU5ZWIwMjAyYjJjMmM3ZTNiNTI1MTY5NjdhNDhjYzE4NjYgcHkzaworNjU3ODUgNTMwYjRjYjE5NDQyNWEyM2E0NmFjMjhjMjE0YmY1MWRkZjljMjk2MSBsZWdhY3ktdHJ1bmsKKzY1Nzg3IDc1NjU4NTQzYjkxOWJmNTM1NDI4MzNjMGIyMWI5N2I4NzQxMGUxMzggbGVnYWN5LXRydW5rCis2NTc4OCAyMmFkODhlNWMwMDNhNDZkMzQ4MWVmMWU0ZDYzMzAzZTIzYzQyYTRkIHB5M2sKKzY1Nzg5IDQzZmE1MGI5ZWIxMjhmZDVmNzAyYzUyNzQwODc5M2QxNzljYTY2MWUgcmVsZWFzZTI1LW1haW50Cis2NTc5MCA1NTI5NTMzMDZkMzQyYzU4ZTY4MWM3NmQ4NzUwNzg3MDU3ZThjNTM4IHJlbGVhc2UyNS1tYWludAorNjU3OTEgOGQ5OWQwM2EwNmU0NGE3NzQ3YzFkMWMwZjUyNTlmOGE1OTgxMTRhMCBsZWdhY3ktdHJ1bmsKKzY1NzkyIGIwYzRhYjgyMzNmYTliNWNmYmZjYmQ4MDU4MDllOTdmNGUyYmQ5ODkgcHkzaworNjU3OTMgZDdmYmU3M2ZlN2Y3NDQ3OGVlNzI3NTMxNWU1MWE2NGI1Y2JhMzIyNiBsZWdhY3ktdHJ1bmsKKzY1Nzk0IGRkOTkyYjY0MDNmNGNmZGI4MDM1YTQ4YWZkZDMzNTY4MzQ4NDRjOGEgcHkzaworNjU3OTUgNjJjNjlkODhlOTg1ZDdjOTdhNzBjN2JhOTNmZWViMWU1NmQwYTBhYiBsZWdhY3ktdHJ1bmsKKzY1Nzk2IGVkYjVhODU5Mzc0OWU2Y2VjOWFmODI2YjIwYzA4OWIwYzQzMDJmYzQgcHkzaworNjU3OTcgODk1MzhkNWZiODFhZGIyZmIyMDQwMzZhYmQzN2JhMmMxNDQ3ZjMyMSBweTNrCis2NTc5OCA5OWEyZWU0ZTNhMDU3M2MwZjRjNTJlNGE3MDVjYTg3YmJmNTEyNzVhIGxlZ2FjeS10cnVuaworNjU3OTkgOTVmMWM3ZGI4OTIzZjQ4YmY0NGM0Nzk2YTlhNzhjZjk3YTU2N2UzNCBweTNrCis2NTgwMCAzNTFhZDY4NDA3ZTdmZjFmNDUxNWRhMzkzODA2MGY1MTY3Y2IxOGU4IHB5M2sKKzY1ODAxIGYyODdiZWIzNTJmZTE2MzkzOTBmZWM5YWEzMDQ3NjQxNWZiZGY1N2EgcHkzaworNjU4MDIgNTUwODg2MmExZGU1MDVjODBkM2IzNmYyZjAzZjkyZjczNGFjYWI0NiBsZWdhY3ktdHJ1bmsKKzY1ODAzIDVhODdiMGQxY2U5MWUxOGEzMDU3OGRmZjc2OWRjZWI0NzQxNDkxMWEgbGVnYWN5LXRydW5rCis2NTgwNCA2MDE5NGFiMmI3NTYyNWI0ZDMyOWFlNzcxZmIwMWMwMGYxZTE4M2VlIHB5M2sKKzY1ODA1IDMxOTViZDZiNmRkN2NkYWVmYmU4ZGYxNDU0ZDhkODY0YzE2OWYzMzQgcHkzaworNjU4MDYgZmM5MGI1ODE1MTZlYmQ4YTE5MjMxODBkNGRlNDdlZDllNDc3NTIwMCBsZWdhY3ktdHJ1bmsKKzY1ODA4IDFhNDFkNDU2ZDgwMmJmZTQxNDc1NGU2MmY3MGExZjQyYjE2MjlkODUgcHkzaworNjU4MDkgMjExOTI3MTQ3YzYwNmUyZDdkODUwNzI3NDk0NzczOWE0ZTNjNjkzYyBsZWdhY3ktdHJ1bmsKKzY1ODEwIDIyNTRhYTgyNGQ0ZGEzYmZlM2UwOTUxYzQ2MWY5M2JlYjNlNWJjMjYgbGVnYWN5LXRydW5rCis2NTgxMSA3NTE3YmRjYzc2OWExZTE3NTAwYWVhN2IyYzEyNzg1MzM2OWJjOGY3IHB5M2sKKzY1ODEyIDQyMDcyMTlhY2M3YTgwMzljM2RlNDU5YzVmNzMzMmNhZTE5ZjIyMWUgbGVnYWN5LXRydW5rCis2NTgxNCA0YjQ1NjRiZWI2ZGEyZTBiMTM0ZjkzYWYwMWI0ZjExM2JkNTc4NGI2IGxlZ2FjeS10cnVuaworNjU4MTcgMTdmMDEwNTE3YjMzNTA2MDUyZTZhY2MyODU3OTM2NzY3YTcyZmU4NSBweTNrCis2NTgxOCAxZDI5ZTUzY2UyYWY2NjdmNjEwYTU1ZGViNmVhYWViNzc5YmQxNzUwIGxlZ2FjeS10cnVuaworNjU4MTkgNzY2MjAwMTBkNzgyOTg2MzdmYmQ2M2QyZGRiNDQ1Y2JhZGE1MzMyMiBweTNrCis2NTgyMCA1YzBlNWYyY2JjN2Q4OWMwY2IwZjAwMmU3MDg3N2JlZDZkNmY3ZGU3IHB5M2sKKzY1ODIxIDI2MTRkNTAxZGU5YWVmYzE3ZWU3ODUwY2YzYzQ4NTUyODhhZTRlZTAgcHkzaworNjU4MjIgZTE0M2E4ZjM1MjQxN2NmMDQ5Y2M5MGFkMTUyMGQyMWY2ZWI4YmJmYiBsZWdhY3ktdHJ1bmsKKzY1ODIzIDQ3MWE0YTg4ZjUxYzY0YzAzMjMxMGE3OWYxMTgyYThiOTM3NDVmMzMgcHkzaworNjU4MjQgMDI0YjJiOTg0ODY2NzZjYzQxYjRlN2M3NjMyNzg3M2E4N2U3YzUzYyBsZWdhY3ktdHJ1bmsKKzY1ODI1IDFmZGZhMzgyYWUxMzJlMTAzYjg0OTljN2Q4NjVhNzYyOTQ0ZWQwODcgcHkzaworNjU4MjYgOWQxODU2YWJhOWYyNDkzZGE4MTk3NWM5NjM5ZDc4NzA2NTNkMWYzYSBsZWdhY3ktdHJ1bmsKKzY1ODI3IGQ2NTM3YTNlMWI3M2MwMzliYzNkZmNjMzYxMDFlNDQwOGY1YzBlMzIgcHkzaworNjU4MjggMjhkOTNjOWMzYTAzMDM1Y2IxZDNiNTEwNmM2YWRhNmExNTIyOWRjZSBsZWdhY3ktdHJ1bmsKKzY1ODI5IGRiNTg5MjQxZTZmNzRjODk1NWY1NjA2NmY2OGY4MDYzY2NmMTJjOTMgbGVnYWN5LXRydW5rCis2NTgzMCA2ZGRhMDE2NDMxMDZjZmIyZDI3MGIwYjU4OTlhYzg3ZjY5NDRmZmMxIHB5M2sKKzY1ODMxIDU5ZDk3YTNlZTIxOWU0NjE1YzYwYTM5OWNlN2QxMzE1OWY3YmVlZDggcHkzaworNjU4MzIgOTJmNGJiMzY2MzdjMzRlODI5OTM2ZGFiYzk1ZjJjNTBkMDE0ZDFjMiBweTNrCis2NTgzMyA4ZDg4MzUwNTUzYzNmNWE2NzQ5NTI5MjEzYTQ1ZGEzYmUyNDc1ZTRjIHB5M2sKKzY1ODM0IDhhN2EyNTQ1OWM2ZjAyMTlhMjM5ZWQxMjIwNTlhMGU3N2NhNTEwOTggbGVnYWN5LXRydW5rCis2NTgzNSBlMTA3MTNiMmQ1NDMzOGQ5ODc5MTM0YTg5ZmRmOTM5MTM5ZDIzOGEwIHJlbGVhc2UyNS1tYWludAorNjU4MzYgMzI5MTQ5MDQ4YjkwY2M5NTY1OGUxMzIxY2YwMmYzYjdmM2UxMzI3ZiBweTNrCis2NTgzNyAyYmFjMGQ0MjE5MjllNDU2OWU5YWJhZTM1Mjc1NjlkMTUwM2E0M2NkIHB5M2sKKzY1ODM4IDQyOGQzODRlZDYyNjM0OTk2ZGU1YmQ3NDQ5NDEwMjJmYzNhZTlmNzIgcHkzaworNjU4MzkgNWMxMDVmOWE3OGU4ZTFmOTk5Y2VlMTEyZDMyZGJiYzNhNTc3OGYyYiBsZWdhY3ktdHJ1bmsKKzY1ODQwIDlhODlmYjU4MDk4YjZiYTVjZmUyZDJmM2M1MThiNTlmNmRjZDRhMmUgcHkzaworNjU4NDEgNTQxMzhlZTIwZTU3YzJlOWFkMmRmYmM0MTg2NTUxYzc1MmRiMTg3MiBweTNrCis2NTg0MiAwMjc1ZDgxZTMxZDA5Y2JlMzdhYzliMmY1MTlmNWRiYmM3ODZkNWZhIGxlZ2FjeS10cnVuaworNjU4NDMgMjkxYTZmMjIwMzYwNzBjNWEwMzA0MWUxOTkyMTEyYzkwYzM5NDA3YyBweTNrCis2NTg0NCA4M2Y3Nzk4NTI0ZjFjNzAxOWFjMTA5OTEzMTI0ZjViMDg3OWE2MTZjIHB5M2sKKzY1ODQ1IGIwZTNhYzg2Y2RkODAyYTMxZjVlNmYyNTNhMDcxMWQzMDAyNmE3ZjEgcHkzaworNjU4NDYgN2Q2NDgwNmZlYjE1NjA4ZDZhZjJlZWE5ODAwNzgxNzcwZDViNDZiZiBsZWdhY3ktdHJ1bmsKKzY1ODQ3IDVlM2ZhYWU2ZWZjNjcxOWQ0NGJjMGVkYjNiMjdiYzMyMTM4ZGY1NWMgcHkzaworNjU4NDggMTRmMmE0Y2I1N2RlMDQzNTc2Yjg3OGIyNmZkNTBhMTg2ZTJlODQ0YSBweTNrCis2NTg0OSA3YzgxZDVhYTVmNDE3ZDA4NTc3Njg1MmMyMmZjZDNiZDc5NjI0YzZiIHB5M2sKKzY1ODUwIDE4YWE5MTlkZjI0NWFiOWZlZjExODYyOWU4MWZjMmZmNGZjYTJlZTQgcHkzaworNjU4NTEgOTRhN2ZiMzNhZmVhNTI5MDA4ODdmNzEwODU3MDQ4NmU0ODVhZDUwYiBweTNrCis2NTg1MiA0M2E4ODU4NDRhZDhkNGUxNTE2ZjBkYjJhYWRlYTEwZDRmNDRmOGMxIHB5M2sKKzY1ODU1IDRkZjEyMmFkYTc2ZmFmNDZkYTMwYTE4MmRlMmI3ZWVmYTZiNWU1OGYgbGVnYWN5LXRydW5rCis2NTg1NiA4M2ViMmFhYTVmYWFhNDQ1OWNhNjgzMDdhMjYzZDM2Y2Q3MGQ5MzE1IHB5M2sKKzY1ODU3IDE0ZTgxOWJlZWVhYjhjMDRhYzY0Y2U2MTVjN2RhM2RkMjZlMTI1MWEgcHkzaworNjU4NTggMjA5YTQ1ODFiZDkxOWEwMzU0NmJmYzlkMDM3ZmYwZGZmODYwNmNlMSByZWxlYXNlMjUtbWFpbnQKKzY1ODU5IDdmMDM4YTQ3MDBiMWMwODA0ZWMzOTk2ZWFiYzVjYmZiNDE5OTljNTkgbGVnYWN5LXRydW5rCis2NTg2MCA4M2IyZDA3YjQ3NWI1MDMwN2I0OGY2YWY1NzM5ZTE2YmFiNjg1OGJmIHB5M2sKKzY1ODYxIDI0ODA2MjI5NjVlNjAwOGI3OGQ1MDc0YzA4NzJkZDk1ZWZlZjk5NTcgbGVnYWN5LXRydW5rCis2NTg2MiA3NTExZjNlNjcyYTI5ZjM3Mjk1ZGU1M2Q4MWVkNTBjZmQ0MTM2MjNjIHB5M2sKKzY1ODYzIGVhM2QxM2NkN2MxZTZiNmY1ZTRkZTY3MzdmNjcyYzM0ZTYwNTljMWQgcHkzaworNjU4NjQgN2VhODA1ZDg3OWUxYWI1N2NiMjg2MjE4OGEyNGQxMTg5MWRlMzQ1OCBsZWdhY3ktdHJ1bmsKKzY1ODY1IDFhMDU5YWFmZTQ5ZjBlNGI5OTRlYzE4NDQ3NDhlZGU0ZTM5NDRkNTggbGVnYWN5LXRydW5rCis2NTg2NiBhYTYxMzIwOTMzMmQ1MWFiNmVjNjI5YjgyYWVmMGQ3MWJjYWM5MmU4IHB5M2sKKzY1ODY3IDI1ZjA2YTcwM2Y4OWE5ZTg5NmY1NTA4NzRkYWQxY2QzZTc0MzJkYzggcHkzaworNjU4NjggYmQzN2ExODY2MzhmMjgzZDQzZGNjNWQ0M2ZhYzM3NGQ1OWU2MGNjMCBsZWdhY3ktdHJ1bmsKKzY1ODY5IGYwNGI3MDNmMmRkZGExYjExN2ExOTU1NmIwMjlkZTRmNzY5NDFmZjcgbGVnYWN5LXRydW5rCis2NTg3MCA5N2EyNGM2MDljMmVlODgwNDAwOThhNGM4ZjNiOWNhYmEwMmFhNWY5IGxlZ2FjeS10cnVuaworNjU4NzEgNmQyMmVlOGM3M2NhMzQ4YzExNGE2ZmI3OTMyMmZmYjRkNmJjY2VlMSBweTNrCis2NTg3MiA0OWY1MmUyODVhNjQwMmJjZDVmOWQwZTU1ODAwOWRkNDViN2FmMmVhIGxlZ2FjeS10cnVuaworNjU4NzMgMmI4MjlmZmE0ODFiNTc0MWQwZTA0ODFmMzA0YzA1OTVjM2Y4MTYxYSBweTNrCis2NTg3NCA5NmE0Y2RhNjVjNTUyZmZhZDgzYzNjOGI1Y2I0OTNjOGQxOWZmNDVkIGxlZ2FjeS10cnVuaworNjU4NzUgNTEwOTE5MDczMTE5ZjkxOWUyNjIzOGRlZjE1OTI5ODlmMDdhZWNkMCBweTNrCis2NTg3NyA2YWJhZGEwNWMzMTMxMzU5MTI0NmIyYWY3OGEwYmU0N2VjNjVkMzJmIHB5M2sKKzY1ODc4IGY0OWQ5MzE0ZDQzOTExMWExZmMwYjI3NWMzNzQ4YmQyZTYwYmVlZTcgcmVsZWFzZTI1LW1haW50Cis2NTg3OSBlZjE5NTU4NDU1MDk0ZmMxYWFiODNjMGJmZjA0YjhkMWFlM2M5M2UxIHB5M2sKKzY1ODgwIDRiODgwNjQ1NjA3ODcxYzAwNWY5MDlhYWZlMjEwZWFjOGQwZmRiNjcgbGVnYWN5LXRydW5rCis2NTg4MSBjNzgyM2IzNTFmYmNiNzU2NDAyOTBiOTllYjkwMGZhMmFlOWUxYjYyIHB5M2sKKzY1ODgyIDgyYzY5NmYwNDI0YTQ3ZTQ2YThhM2E4YjQwYzg4NTE1OGUwZDg1MWUgbGVnYWN5LXRydW5rCis2NTg4MyA5OWU3ODNlYzc3ODE1ODcxYzY3YWNiMjE2N2M2N2Q5ZDY0MWMyMmMyIHB5M2sKKzY1ODg0IGMxYTdmZGIyNDYyOGYyNDNlMWNmMzJlYjAxNzQxODg5YzMyZjMxNTQgcHkzaworNjU4ODUgNTA0ZTZkMDMwZTg0YzdkZmM0NTlmNGViNjI2YWJiYTZiNGVmMmU1MyBsZWdhY3ktdHJ1bmsKKzY1ODg2IDUwMTI1NmM1NGM4NGE2NDg1MWU4ZjY3ZTZjOTAxMWMzZTVkODUyNTYgcHkzaworNjU4ODggZjdhNjM5NmI0OTZmMDIyYWM5OTU2ODZhYzVkMTliNTczZGIzZWYyZiBweTNrCis2NTg5MCBlNzgwMjRhZjBjZjAzYTQ3ZmQ5NzU4NWY5MTQ0MzZmOGYyMjI5ZjMwIHB5M2sKKzY1ODkxIGE4Zjk4YTcyNzM3MTIxMjJhYjllNzRjYzczODZlNWJjNzNiMDc3ODcgbGVnYWN5LXRydW5rCis2NTg5MiBiZWU0MDAzMzZmZDVjN2EwNDM0MDdkNzk1NDAyZGRlOGFkOGFhMjI0IGxlZ2FjeS10cnVuaworNjU4OTMgYWJkZTRkYjMwN2E1OWM1NjExODNkZTdmZWZjZDAzNjQ5YzI0OTMzYSBsZWdhY3ktdHJ1bmsKKzY1ODk0IDFhZjIxMTIzNjkwNDMwZGUwNzAxMmRiZDA4MTVmMjlhOTVhYzcyM2IgbGVnYWN5LXRydW5rCis2NTg5NSA4ZjIxNTZiMTViYjhlNjkwY2I0MzYyMDY3OTFlMWY2ZjYzOTE1NmU2IHB5M2sKKzY1ODk2IDZjZDdiMThiYjc0MmEzNmEyYzU0ZmNlMTVlODVmNzdjNzAxMTQ2ZjkgcHkzaworNjU4OTcgM2ExMWU3OWI5NDcxNWRkZDcxMDM2NWEzOThlZjYxMjc1MjA4ZmM3ZSBweTNrCis2NTg5OCAwZmU2Y2IwYzMxMGQ3MjlkYWQ1MGIzNjVjYjQxYWQ2MWU4ZTE4ZGEwIGxlZ2FjeS10cnVuaworNjU4OTkgNmQ2ZDNlMDM3NTUwM2NkMjViZTcyNzM2YzVjNmU1ODVmMDBhYjkxZCBweTNrCis2NTkwMCBkNDI2MjkxODUzODJlYjNkN2NmZGExYTcwYWYzOGFiMzRhNjYyZTU5IGxlZ2FjeS10cnVuaworNjU5MDEgYzEyNWU3NWQyMWEwNDg3NzRmNjVjNWE3Yzg0ZTYzOTE3MzYzNmFjMCBweTNrCis2NTkwMiBhMzZiNmMxY2VjNTY3ODIyNjk2NzE4NDZkZjY0NzBjZjc0MzQwODBhIHJlbGVhc2UyNS1tYWludAorNjU5MDMgZTg5NDIwNGFkZmJkYWFhMjdkMDUzOWVhZDE1OTM2OGJiYzI1MDU2NCBweTNrCis2NTkwNCBhZTViNzNjNTIwOTdlNmEzNDY2ZmQ1ZTBlZmU0OGIxOTBlN2FkNzE1IHB5M2sKKzY1OTA1IDUxZjJmOGZlZTVjNDUwZDIxZmY2YWM4ODAxNWU3NTc2ODM4MmYwMTEgcHkzaworNjU5MDYgNmNjODljNjBmNzRkNmI5NzY1Zjc2ZTk1NGE3NTMzMzA3NzdjOTdjYiBweTNrCis2NTkwNyA0ZjUwMjI4MjMxOTkwZWExZGViOWI4OTM3NmMwYTA4NTYwZjI0YmEwIHB5M2sKKzY1OTA4IDY3Y2IzMzg4MDM3N2JjM2FkZTFhNThjODk2MmQ2YWUyM2VmZTUwNTYgbGVnYWN5LXRydW5rCis2NTkwOSAxMWU3MmViZjkwNmFlZmViYTZkODEzZjUyNzY2OGVjZDlmN2NiMzMzIHB5M2sKKzY1OTEwIDFiZTc4OTBjZDc1OTc4MDE2ZWZkNzU4OWVjNjRjZWRmYzEzYzA4ZDQgbGVnYWN5LXRydW5rCis2NTkxMSBjMDMwMjRkYjgwMWY5NmFkNjU5NDAxNzA4MDgyOGQzYjc0MGM0MDU0IHJlbGVhc2UyNS1tYWludAorNjU5MTIgMDQwZDk1ODA1MDBjZGI2NzIzOTk2OTg2MGEzOGE5ZTcwMWQxNGQ4MiBsZWdhY3ktdHJ1bmsKKzY1OTEzIGU5OTYxNGNhMDIwNGI3ZTYwMzFiZmMyMjdmODgyNjRkNzBhZWViYmMgcHkzaworNjU5MTQgMWNiOTA4YTA0M2IzZjBmOTM4Mzk3N2U1OTdjZjRhNmVlYjVjMDE0MSBsZWdhY3ktdHJ1bmsKKzY1OTE1IDc2MDhhZmUxMWZiOTYwNDllN2U0MTZmYzBjYmZmNGJhZDcyMTFiMWMgcHkzaworNjU5MTYgODEzM2ZiYjc0NTg3NTRhNzI1ZTY3MjUwMzYwM2JiMmVkNDgxODFlOCByZWxlYXNlMjUtbWFpbnQKKzY1OTE3IGIxOTlmMzQxOWU2NTgwMmI5ZGQ2NzJiZGZkNzk4ZjE2YjYwZGFmNzAgbGVnYWN5LXRydW5rCis2NTkxOCBhMTlkNjdkNzdiMjJmNzg3YmUxNjVjNTIwOTc4ZTJiNmI5OWRhNjI5IHB5M2sKKzY1OTE5IDg4Y2E1MTc1NDZmZDAyMzU3Y2Y3MjMzZGM5NDdiZTBjZjNiNDUxNTcgcHkzaworNjU5MjAgMDMzZDYzYmY3MDhlYTJhZDQxYzUyZDRiODQxNDZkYTIzMWZhOWM2OCBweTNrCis2NTkyMSAwMTNkNGQ4NDA3Y2I5ZjY4ZTc2NTZkMTFmNjJiNzkxOGE5NTIxZTQ1IHB5M2sKKzY1OTIyIGM2Mjg2MmQ3M2Y5ZWM2NGQ2NTU0OTRjZjFmNjE0NDM0NDZmMmRlYTIgbGVnYWN5LXRydW5rCis2NTkyMyA3MzE2NDU2NWI5MjBlMjA1OTZkMzNhOTkzYjk5ZWQ3YTc5MzdlNzY1IGxlZ2FjeS10cnVuaworNjU5MjYgMjdkMTliNjY1MDM1NzlkOGIzYTQxZTUyYWNhYjkwNzk5ZjJiYjNkZiBsZWdhY3ktdHJ1bmsKKzY1OTI3IDUwOWUzMGE3OTY4ZTAxYmUzMjllYzEyMTU0MGIzZTc1NWZjNGU1NjYgcHkzaworNjU5MjggYzQxMWNmNjk0Mjg5NmNjMjE2MDg5YTY5NTA2NDY4NDQzMjJmMmVhNCBweTNrCis2NTkyOSAwMWI5ZTE4ZDY5YWM0NDllZTk1OWFiNThhMWExYTlmZGNmOGIxYjQ5IHB5M2sKKzY1OTMyIGEwYWJhZmY5N2UwMDFhNGI5MGU0NmRmMzY3ZDdmMTJhYzUwZGI5ZWUgcHkzaworNjU5MzMgOTU5ZDFhYThiNThhZWJlMzI2MzBlZjAyYmQ0MmFlYWZlZjE5NjMzYiBweTNrCis2NTk1OCA1N2E4NzM1NjQ3Y2Y4NzQ1ZDBiNjMyNjUwYWI0ODQ0MzAwY2U2NDgzIGxlZ2FjeS10cnVuaworNjU5NTkgYTc3MDIyZGMzZjYxZDIyMWQxNThmYTk4MTdmNDBmMjUyN2FjZmUzMCBweTNrCis2NTk2NCBlMzlkNDRhZGI2MTgwNmM5NjkyYzNjMGUwYTIzMjQ1Njg3YTc1MzRkIGxlZ2FjeS10cnVuaworNjU5NjUgYThkNjljMWEzZjRlZmQzODc2OGEzNzkzODYzYmRlZTNlY2Q3MjY2YSBweTNrCis2NTk2OSA0ZmFhYmIxODU2MmM2M2Q3MjZkNTZhN2MwZTBjZDU0NWQ5ZjA5NjA3IHB5M2sKKzY1OTcxIDRiMWYyNjJjZWJkZjQwMDMyNzE5ZjI1MzdmOWU4YjBmMTBlZmY3MzQgbGVnYWN5LXRydW5rCis2NTk3MiAyZGM2NDY5ZmM0YzRkNGIzYzZjNzM4Zjg5NDc1MWMzNGM4M2YxMmNjIHJlbGVhc2UyNS1tYWludAorNjU5NzMgMTk0NGQzMTA0MGUzMDY2MWIzYmM2ZGNjOWJjMDM4YjA0Y2MzM2E1ZiBweTNrCis2NTk3NSBhZmJmZDhmMjE0ZGQxMzM3ZDZkMTc1YzhjZmZhZmFkMmU3YTUwMWYxIGxlZ2FjeS10cnVuaworNjU5NzYgMmFhNzlhZDRlYjg1MmRkZGQ2YTdhYTVhMDUyNzdlODlmMDdhNzkwOCBweTNrCis2NTk3NyBiY2UwM2Y4N2Y2NWRiMWExMDQ0YTE0Yzk4N2FjOGEwYzA5MGY1MzE2IGxlZ2FjeS10cnVuaworNjU5NzggNDZjMWJjYzRjMWQzMDM3NDA1NTNhYjY4NjRiYzBhZjUyZDg2MzE1ZSBsZWdhY3ktdHJ1bmsKKzY1OTc5IGQ5NTJlNzUzYzYxMWY3NWFhY2RmNTc1MmM1YzM0ZTU2NTAzNDkyM2YgcHkzaworNjU5ODAgNzQ4OTllNmM4N2E1YzVkYTZhZWI5YzNlNWU4MTgyNTk3YWJkMDRmMyBsZWdhY3ktdHJ1bmsKKzY1OTgyIGY5NzBhNGY3NTYwZmZhMjBlOTRiNTVhNTg5NjdkZGQ0ZmFhODlmNjggbGVnYWN5LXRydW5rCis2NTk4MyBlM2U1MDczNTBlZDRkNGRlODhmMWRhMTQzZGEwMTYyNDM4NmZiMWYzIHB5M2sKKzY1OTg0IDIwNDQzMWQ0NGNkYzQ5Mjg0YzFjM2NkZDgxNWJlN2VkY2Y0ZjU5OTYgbGVnYWN5LXRydW5rCis2NTk4NSBjZmQ3OWE0YzE2MDQzM2RkNTQ4NTZjNDI4ZWZkMzQxZDk3NWNkMTE4IHB5M2sKKzY1OTg2IDc1ZjY0ZmQxZjExMzc4OGJlYzRmZTdlY2VhN2RmZGI4ZWJhYWRmMWIgbGVnYWN5LXRydW5rCis2NTk4OCA2NWIyZGQ0NmUxNzExODk3YjkzMTNjYmM4ODQxZTk3MzEyNWQ4ZTJhIHB5M2sKKzY1OTk0IGI1MjEzODNiODFhNzE1NzE1ZWFmNzg5NTczZDk5YTc1M2VlYTZiOGMgcHkzaworNjU5OTUgOTY5ZWRjM2I3MDdmM2JmYTg0M2IxNTc5NjJlYjJjNDk5NDhhZmM2YiBsZWdhY3ktdHJ1bmsKKzY1OTk2IGU3Yjg1ODkwZTliMTA3MzUwNGQxNWRjMTMwYjI1MTk5ZTdiZjZkYzcgcHkzaworNjU5OTggNTg3Y2Q0ZjY2YzJkY2Q5NWZiYzk1MTQxY2ZjNjVmNzFmNWI4NTJhYiBweTNrCis2NTk5OSBkZmU1NDZiNjZlZWZkNzU4M2FkNTE2Y2Q2NzJhMDcxNGRiZWM2MWM2IHB5M2sKKzY2MDAwIDc2ZTcxY2VjYzRkMzEzY2JjMGE2ZjNlMjUzMzI4ODE1OWU4NzYwMTMgbGVnYWN5LXRydW5rCis2NjAwMSAwN2VjNzJjZjE5YzdkNjFjOGEyZDI2ODBlZjAyOTU5OWRkZGJiZWI3IHB5M2sKKzY2MDAyIDdiYjFjNjBlYWY2NGY1OWU1YmNlYzg1ZjYyNjZmNDJmNmY3Mjc2YWYgcHkzaworNjYwMDMgODVjMDhjZjA4YjJiNWVlZjc1M2Q0ZWRlYzNiZjE5NzhkNDA3ZGUyYiByZWxlYXNlMjUtbWFpbnQKKzY2MDA0IGUxNDU1MmI3MzE3YmNjOTU1OTQzYmFiZGYzNTkyMzA2ZTRiMmUwMTggbGVnYWN5LXRydW5rCis2NjAwNSA2ODJlOWE0MmMxNWQ1M2I0MGYwMmJmMzRiMmJjYzc3OTk2M2U5MTQ0IHB5M2sKKzY2MDA2IGIxNjgyYzY5M2I5YTE1ZDg3OWQ2NzU1MjFmNjFkNWRkM2Q5N2E3NDMgbGVnYWN5LXRydW5rCis2NjAwNyA1Yzc1YTMzZWY1YjI3NjM2MzdkODg4M2M1ZDFjYTZjNTkyN2NlNGUyIHB5M2sKKzY2MDA4IGQyYmEzNmE3YTcxMjc0NWNiOGM1NzAxMzc0ZWZhMjZmN2VhOGE5NjEgcHkzaworNjYwMDkgYWZiOTgwOGIwZjMwZmEyNWIzNjY4Yzc0ODVkY2IyMWIwMTBlMDQ0MSBweTNrCis2NjAxMCBhMjcyMDM1M2YwZDM0OWQ3NDFlOWI1OGFjMjNkMmMxYzJhZTljNWY0IHB5M2sKKzY2MDExIDk4NGUxYzYwMjk3OTJjOWYyOTQ1NzRhYTZkM2M1NjY4MjNhMTYxZmUgbGVnYWN5LXRydW5rCis2NjAxMiAyYTZhZTdlOGM3YzM2ZTAzM2YyMGJhZjM1OTZhNmY2YjZiMzEyZDJhIGxlZ2FjeS10cnVuaworNjYwMTMgNmVhMWE3MjBiMDU3ZWUxYmM4ZWYxNjllMDU0M2JjMjc2MWIzMzhkMiBsZWdhY3ktdHJ1bmsKKzY2MDE0IDcwZWRhYzg5MGYyYjZkZjYyZGM5MzA4ZjdlMDUxNGE4ZGIzY2I4N2EgbGVnYWN5LXRydW5rCis2NjAxNSBjMDAxOWQ0NTU1MWRjNzUwYzc2NjZmMjMwOTgzN2IxZDVjNzhiZTUxIHB5M2sKKzY2MDE2IGM5NWYzODdlZDFmNDI2Y2U2NTIxYzA4YjY1OWY2YjE4YWYzMjNkN2QgcHkzaworNjYwMTcgNThkMjk1ZTc4MDBmN2E0ZjJmYjdhMmYyMWY1Y2ExZjk4ZTMwYTI1ZiBsZWdhY3ktdHJ1bmsKKzY2MDE4IGRlOTU0ZGQ2Nzk3YjZlNjc5NDVkYWU3MTk5YzdiMTIxNTc0YWZmZjkgbGVnYWN5LXRydW5rCis2NjAxOSA4ODExOTgzZGZjYWY4YjIyNmY0MzY3M2QzZDg2NDUwNTYxZGFkYzY1IHB5M2sKKzY2MDIwIDFhNDkyMmZhNTE2MDY1OTIxYWNkMDc0ODdmY2VhMjJmYzc1M2I5YjIgbGVnYWN5LXRydW5rCis2NjAyMSA2NzhhMGYwZTYxYmM1ZDZiYzUyNjFlYzczYjdhNTUxNDI2YmNhNDY4IHB5M2sKKzY2MDIyIDJhNDdiM2JiMTFmZDhiZDllYTk4ZjJlNjcxNTcwM2Q5MjAyOWZiNmIgcHkzaworNjYwMjMgZGY2MjRkZjZlZmEzY2RhMDQxZWE0YzRhMzBiZmI5NWZiNGQ4YTU0YiBsZWdhY3ktdHJ1bmsKKzY2MDI0IDNkYzRkZmEzZWJhMTY4Y2ZiYTQwMTZmOWJmN2UwMzlkOGMzNDIzNjcgcHkzaworNjYwMjYgNmZhYzYzNjEzM2YwMTA2ZWU0YTI5ZTE0ODYyNWEyNWEwNTliNjE4NSBsZWdhY3ktdHJ1bmsKKzY2MDI3IDRmYjdlN2IyYzk2MmFjMDg2OWI5YWQ0ZGQyNWJhZjBiYzU4NjY4ZDEgcHkzaworNjYwMjggOWViMGNkMzAzMjZkOGI2NTQ0YmRiMGJiZmJiOTVhY2JkYjg1ZmZkMiBsZWdhY3ktdHJ1bmsKKzY2MDI5IGRkMTc3ZjU3NmJlOGE5NWU2ZTFjOGE4YTFlZTlhOWRhMDNiMDUyN2IgcHkzaworNjYwMzAgNWEyMDU5M2E4MThmYzIzMmFiY2Y2MjM1MzEyMmY4Njg0ZjQxMDllNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjYwMzQgODJmNzNiMGI1YTMwOGU5ODJjNTAzMjJmOWZjZGEzOTczYjlmMjg0MiBweTNrCis2NjAzOCA1NDhkY2NjNDAwOGVkOTM0YmFmYWQ1ZjdiNzEwY2E0MmRiYmIyMWFiIHB5M2sKKzY2MDM5IGVkZDJjYTg5NGE2N2RjNmI0ZjljYzkyZDY4ZmE0NWE3NzU5NTAzMzYgbGVnYWN5LXRydW5rCis2NjA0MCAwM2MyM2M1MDY1NGU1ZTNhNjJhOGZlYzZmNGE3ZmI0ZDFiMjFjZjZjIHB5M2sKKzY2MDQxIDRkYjFmNTA5ODE3NWFiY2M1NmVhZDZmMDVkODkyMWI1YzNlNGJiMmMgcHkzaworNjYwNDIgZDZlODZhOTZmOWIzNTA4OWNiMmE5NzQ2MDczZDA1YzhjMGFjNmUwNSBweTNrCis2NjA0MyBkMDFjMWQ3Njg4NDE1MzQwZTMyYjZiNzMxN2ZjMWY5NmE3ODgwNWRkIGxlZ2FjeS10cnVuaworNjYwNDQgMTJkMjc2MjA3NmJhYTYxMWY3NjliYmU4MDZmZWRkMjU4NzYwNWZlZSBweTNrCis2NjA0NSBjNDJiZjk4YjI2MGYzNTIwNDY4NDM4NzI1NjI0NzQ0NWUwMjUzNjA1IGxlZ2FjeS10cnVuaworNjYwNDYgZDlmZTI5ZTk1ZDYwMTViNzgzNzU0YzQyZGFiNzczNzExYTg2NTNiNyBweTNrCis2NjA0NyBkZTZmYjlmMzQ1MTMyNzVkNjM2ZjUwMTI4NDdjMzZhMzZjNWNhMTlkIHB5M2sKKzY2MDQ4IDQ3YTgwMWMyOWYxM2Q0OGU2YzBmY2U3NGZmOTlkMjM0N2JkYmUyNGEgbGVnYWN5LXRydW5rCis2NjA0OSBhYTNjOTBjZTE5MzJiYWU3N2NhOWE2NDhkODExYzgxMzFmOTczZmMwIGxlZ2FjeS10cnVuaworNjYwNTAgZmRkMWVlMjBhYjg2YjA5ODA3ZDE5YTQ0NzgxMGRkYTZmMDYzOWY2ZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjYwNTEgZjI3Y2NmZGVhODM0MDEyMDM4Y2JhMDgyN2IzNmQ3NDdiNTk5NGY3ZiBweTNrCis2NjA1MyBlZmM0OTg2M2NkOGZmOWJiMzlkMTM2YWViNWU4YmQyMzlkMDFlMjdhIGxlZ2FjeS10cnVuaworNjYwNTQgNDcxOTJkMGI3MzFmMTA0OTZmM2U2MjMyZDk5YjY1YTUwY2Q2YzkzNyBweTNrCis2NjA1NSA2Y2ViN2M4OWU3NzZiYTkyNDQ5OTc2OWM2OTY5YjVlM2IwNjdhMDE5IHB5M2sKKzY2MDU2IGM1NjJjOGRhZTQ5YTYwNTg3MGU2ZThhYTZmYTdiOGUyZWU5MTdjYWUgcHkzaworNjYwNTcgMjdlMTQyZDk5YTcxNzM5MzZhNjU4ZmRiMDNjZWY4OGMxMjY3ZGI4NiBweTNrCis2NjA1OCBiYmZmZTA5MTRjNTZlNjEwZjExOGUxM2JlYWEwNzliMTkxOGJlMTkyIGxlZ2FjeS10cnVuaworNjYwNTkgMGM2NWM4MDI3NTJhMmI4MjBkM2ViM2JkYmYwY2M2NTc2NjYyMWJjZSBweTNrCis2NjA2MCBhOGM1MzU4MGM1ZWM0NzIyNWMxOGY0YzUxYmFmZTFjM2RiNGFiMTNhIGxlZ2FjeS10cnVuaworNjYwNjIgMzA4MzRiOWFhMTkzN2YxZmY4MmQ0ODc3NDEzMTNkYTg1MDUyYTBhOCBsZWdhY3ktdHJ1bmsKKzY2MDYzIDAxMzEzOGNkYjg3M2IyZWNjMTdmYTZiNDE0Y2YzNGY0YTczNGVmOGMgbGVnYWN5LXRydW5rCis2NjA2NCAwM2UyMTZkYzhmZWNjYjkxYTQxMjc0MjYwMzhkZGM3NDBiMTcwNTg4IHB5M2sKKzY2MDY1IDU2ZWQ0NDVmYTYxZTYwMzRkNDNiMjljZDcyNTE5NTQ2ZjE4YjNiZjQgbGVnYWN5LXRydW5rCis2NjA2NyA5NmJjNTg5NmEyNDA1NTFjZGI3NjQzNmJmY2Y3YjQ5NzQxYjQ1MWEwIGxlZ2FjeS10cnVuaworNjYwNzEgYTJmMjAyOGI3M2VkM2FiZTU2OGFiNjkwYjQ2YTBjNGJlOWE0OGUwZiBsZWdhY3ktdHJ1bmsKKzY2MDcyIDg0YmRkNTNlMzkwNjQ4NmRlYjFjMTZmZjFmZTM4NTczMjRlZjE3YzMgbGVnYWN5LXRydW5rCis2NjA3MyA5NjA1ODlkMmExMmQ5YWQ0Mzc4ZTU3N2M3MWZhZDhjYmQ2ZGU4YjA5IGxlZ2FjeS10cnVuaworNjYwNzQgZmE3YjYxZDJiYjNkN2NjN2NiNzgxZTYwZmJhOTE3MmQ0MmU0ZDRmNSBsZWdhY3ktdHJ1bmsKKzY2MDc2IDExZDhmYTNjODhkOGU4MzY4MWRjM2FlYzQxYmM2MWZkZjgxYmEwN2YgbGVnYWN5LXRydW5rCis2NjA3NyA0OGM1ZWI1MTMzNzBkOGZhOGQ0ZTJlNDlkOWM1N2E1YTQ0NzY2MGI3IHB5M2sKKzY2MDc4IGI1MTU2OTBiMzc5ZDdkZGVhYjUyODNlYTNlMDU3MWMzMzAwYTJkYTMgcHkzaworNjYwODAgZjY3OTYzY2Q0Mzk1M2NjMWQ5ZWUwNTBhMWIxNWFjOGM0Mjc4ZWY5YyBsZWdhY3ktdHJ1bmsKKzY2MDgyIGExZDllODNiYzc2ZGEzYWVlMjdkYTRmOTdkZGUyZGE5MGY4NjkwYTQgbGVnYWN5LXRydW5rCis2NjA4MyBlYjEzNGVlZTMyMzIyNjAwMzczZjU0OGY2ODZiMzViZjkwZGMwNzg0IGxlZ2FjeS10cnVuaworNjYwODQgMzZhZDVlN2UzOWI0ZmJkOTZjYzE5ODE0ZWRjN2U3MDZhMjI1YWExMyBweTNrCis2NjA4NSA5YzE3NWY4ODYwZTIzZGYzNmUxOGEwZDMxODJkYTBlZWE0OGQwOGZlIGxlZ2FjeS10cnVuaworNjYwODYgMjIxZGUxMzk0NjgxMTNjZjU4OTExMWQ4NDczMjY0YzJiYjEzZjg0MyBweTNrCis2NjA4OCA4MWExYTE1NDUxNzIyYjgxOTVmNTc3NGE2ZGM5NGRjNTUzYWRmYzMxIGxlZ2FjeS10cnVuaworNjYwODkgNWRhNmYyMWNmODA1OTQyMWQxZDI0NjQ4NGNlZGNjNGY4ZGQ1NWJmZCBweTNrCis2NjA5MCBmYzExYTkwNGY2Y2QxNzkwYWY5MjBlODQ2MTIzOTgxMzQ1ZTNiOWQ3IGxlZ2FjeS10cnVuaworNjYwOTEgYmVlNmViNzY3NzQyN2Y4M2RhOTU2NmFiNjRhNGNhNzBlYzgwZTNhMSBsZWdhY3ktdHJ1bmsKKzY2MDkyIDYyNGI0NGI3Y2RmMjkyMTg0ZmY3NDAxYjgwZDY3NTU0YmRkOTE1ZWQgbGVnYWN5LXRydW5rCis2NjA5MyBiZTYzZWM3NDhlZTA2NGEyMDZmM2FjY2MwMmFiYjFjMTQ3YTJmYmMwIGxlZ2FjeS10cnVuaworNjYwOTQgN2UxOTRiOWNjMGEyYjRkMWYyNGQwZjQ5Y2VkZmY1Y2ZiMDlmYmJhZSBweTNrCis2NjA5NSBiNGMxNGI3MGZlMGY4MTk5YWM0YmZkMTI5NjlmYmQ2NjNjMDRiM2UxIHJlbGVhc2UyNS1tYWludAorNjYwOTcgN2IzOTUwMWIwYTc2MjQ3YzA5MjA2ZDcwZWIzOTNlOWIwODNmZWJhNyBsZWdhY3ktdHJ1bmsKKzY2MDk4IDEzZmRmOThlYTI5MDAxMzA3MmU3NmExZTA5NzI4ODNjNDIwYzg2YWEgbGVnYWN5LXRydW5rCis2NjA5OSAxNzZjNDA5ZmQ3NDdlODEyYTA2NzJkZGFhOGRhYzAwMDFhZjA1NmU3IGxlZ2FjeS10cnVuaworNjYxMDAgOGNkYTYxNWVmMjJiYjc0OGUwZWUzNTk0NDgxNGVkOWFmOTgzYWYzZCBsZWdhY3ktdHJ1bmsKKzY2MTAyIDVmYTBkMzFhNjcxYjc4MTJiMGNlZjRlMzkzNzYyYTYzZmJmMWNlNjAgcHkzaworNjYxMDMgNTc2NDQxNTI3ZDRmN2NjM2RiNzA2OTJkMzQ0NmExOWEyMmIxMTg5MSBsZWdhY3ktdHJ1bmsKKzY2MTA0IGVkNTlmM2I2N2IzYWUzYzExODc0Yjg3NWViNGMyZTM5ZTY4NDNmN2IgbGVnYWN5LXRydW5rCis2NjEwNSA5ZGIzZmU3ODBiZmM2YTEwMjBlODQ2Y2VhZjVhODBjMDI4OGQyZWYwIGxlZ2FjeS10cnVuaworNjYxMDYgOTI1MTUzMjI1NTcwYzNiOGUyMmNlNTg5MWRjYzliNzFmNDQ2OTNiOCBweTNrCis2NjExMCA1MTllMDQ3NTk5MWY3NmI4MWQ1MzAxNTg0NzU2MzEwMzk1OWE2Zjk1IGxlZ2FjeS10cnVuaworNjYxMTEgNjk2ZjVkODQxOWYyMDkzOTViM2Y2MjE3MjM0NzllZDY1MDljNGViMCBweTNrCis2NjExMyA3ZWNlYzFiMzBjM2Y0MDUzMTcxMDVmZDgzNWQ1OGYwMTQyYzRiM2UyIHB5M2sKKzY2MTE0IDk4ODY2MWZmZDEwMjljYjAzN2Y2MjRmZTI0NDhjMTA4Y2Y4NWI5YmEgbGVnYWN5LXRydW5rCis2NjExNSA1MWY3OTVjOTUzMGVjMGJjYjQ0MTZlOWE5YzZjMGFiZDMwNTVhMWNhIGxlZ2FjeS10cnVuaworNjYxMTYgYTVhMDcxYzgwZjJkMjUyOTRlMWI0NzIzNDE5NTAyYzk4MWI1NzQyOSBweTNrCis2NjExNyAxMmZiMzYyNmVlNTlmMThkZWY4MjdlMDUyOTRkMTIxNjM0YjE4NGYzIGxlZ2FjeS10cnVuaworNjYxMTggMzdhOWY2OTBhOTRhOWFjYjM5MjMyNzUxNmU0MzIzMDU5NjM4NTQ1YSBsZWdhY3ktdHJ1bmsKKzY2MTE5IGI1MzY1ZjM0NjQwZjJjNjY0YzE5MjI5NGViNjAzNTUyOTFmY2U3YWMgbGVnYWN5LXRydW5rCis2NjEyMCA2NmUxYWZkMzM0NWZkYjBiYjRjMWY5N2E5ZDE0ZDBjMWMwYzgxOGQ0IHB5M2sKKzY2MTIxIDE2YzAzZjdjYmMyMjFmOTQwNWMxMzU5YmIyYTczZmZkNDRmMjI4OTIgcmVsZWFzZTI1LW1haW50Cis2NjEyMiAzMmNlNDAyYTdlM2RmMjBjMGY1Y2U1MGU5MzU0ODc0YjI0MGRiY2ViIHB5M2sKKzY2MTIzIGU2MDIxYWFkMmRlMmQ1ZWM5OTRmNjc2NjEwMmQxZTViMTI4ZWU1ZTAgbGVnYWN5LXRydW5rCis2NjEyNCA2ODBiMDc2ZDBjMTNhMDNmMzM0YTY3NDlmYTQ0NjNhNWUzYjExNTE5IHB5M2sKKzY2MTI2IDRmYzQ4MGJlMWU0ZDJjNjc4YTM5MmQ0M2EzOWE0ODc2MmYxOWY5MzQgcHkzaworNjYxMjcgYmM1ODViNGQ0NjA2YjUyYzNjN2U1MWQ5NjJlNWZmMTc4ZjhjOGI2YiBsZWdhY3ktdHJ1bmsKKzY2MTI5IDllZDMyODdiZWVmMThhNGI3YmFiYTA0MTAxZGJjMjJkYzNhZmRmOGYgcHkzaworNjYxMzAgYWJhODU5OGM3ODVjYTUzZTMzNjIxZDBhOGFhNGJhMzY0MTQ5Y2YyMCBweTNrCis2NjEzMSAyMzZmY2YyOTM5YzdkNTIzODkzNGM2ZTBkODMwMDViZDJkMWY1ZDE0IHB5M2sKKzY2MTMyIDNiOTYwODExOGY4ZDg3Yjg4MTFiMzdhNDZhMDc0OTA5NTI0OTFmZjggcHkzaworNjYxMzQgOGExMDhkNTRlZjAzY2FhMWI4ZDdiYTgyMDc2MmRmMGFlYjM1NGIwNSBsZWdhY3ktdHJ1bmsKKzY2MTM1IGQ1NjM2MjFkNzZkYjRmOTRlNzQ1ZWJjNjJiOTIxNzhlYTMzZGIyY2IgbGVnYWN5LXRydW5rCis2NjEzNiBjZDE4NjMwNmYzODVhYzhjZmJlNjE4NzlmNDg0Y2IxMWJmZjA5ZDU0IGxlZ2FjeS10cnVuaworNjYxMzcgOGM0Zjc1MDY2MWVjMzk0NDA0OWYwYmU1MDUyMGY0ZDA3MTg5ODFmOSBsZWdhY3ktdHJ1bmsKKzY2MTM4IDRjMTc3MGE1NWE4NWU1ZGEzMzNlN2U0ZWRlMGFlMTMwNGNiNTg4Y2MgcHkzaworNjYxMzkgY2FhNDFlMTYxYjA0MTFmNDA2YzczZTE4ZTg4Y2Q4N2YxNzU5M2I0OSBweTNrCis2NjE0MCAzYmRjNDZmYWVmNGRhOGIwNmQwNzI5NWNjZmFkOGMwNzJjNmMxMjdjIHB5M2sKKzY2MTQxIDRiMjhiZjVlZTM5M2I0M2JhNDliYjhlODU1YzlkMTYwOTBkNjU3ZDUgbGVnYWN5LXRydW5rCis2NjE0MiA5OWVlM2I3N2JjMGRiMmYyYWUyYTNhODdiMTA1ODQzZjAwNTAxNTkwIGxlZ2FjeS10cnVuaworNjYxNDMgMTg5Nzc0M2IzMTVkZTJhZjU0YmJjYTcwOGMyYmEyMTc1MDEwZWVjMiBsZWdhY3ktdHJ1bmsKKzY2MTQ0IDRkYTRmOTY3OTY3MjU3NDRmYzJkNDg3ZDJmNTI1ZWMzNDM0NGJmYWUgbGVnYWN5LXRydW5rCis2NjE0NSAzNzc5ZmM5ZGZlNWY3Mzg5MGFhYTQ2ZTNjN2VmMTJlNGUwNmZkOTAwIGxlZ2FjeS10cnVuaworNjYxNDYgMzg4ODljYjQ1MTg4MTA1ZDcxZjgzOWM1MzZiNTZjZjQzMWFmNTY3YSBweTNrCis2NjE0NyA3YTZlNmEwNGUyOGQxNDkyYmExMWMwNzkzY2Q4OGU0OWQ1OThhOWI3IHB5M2sKKzY2MTQ5IGQ4M2NlNGI1ODFlNjE1NmQzYTdiYWVhMDE2MWRiNGE5YjRmZTk4MjggcHkzaworNjYxNTAgZDBkNTNkZTlkODJlMmYxZTk3OGMwNTUxYzQ3NjVlMzcyNzI2ZjU4NCBsZWdhY3ktdHJ1bmsKKzY2MTU0IDM4MTdjOTZmZDU0MDhhMGIzZjQxNmU3ZDYzMmVmZjY4YTZkNjg3OWUgbGVnYWN5LXRydW5rCis2NjE1NSAxYzE0Y2UwODU0MTUxZWEwNGUxNjMxYjY2YzE5NGFhYTZhZjM1ZjAwIGxlZ2FjeS10cnVuaworNjYxNjAgYmE1YzRjZTEyYmJkZjE2ZDU5NGUwMjY4NGIyZmFjMTkxY2M2MTI4ZSBweTNrCis2NjE2MSA3NTBkYTJkMTgwODkyZWE5OGIyZTBkYWZmZTBlM2FhZWIzNzY3YTJjIHB5M2sKKzY2MTYyIGM3ZmQwZTg4MWM0NTMwM2FkOWE0MTI5MDNjYTYxMTA4MmFlZjQxNjMgbGVnYWN5LXRydW5rCis2NjE2MyA4OGM5M2E5YjQxMzczYWQxY2UyYTY4OTExZTgzZjY0NzFhNzJiYzNlIHB5M2sKKzY2MTY2IDNiNzRkMTQ2MmUzYTBmN2Q0ZDYzMmE1MDkyMmEwODM4NjUyNjMyM2QgbGVnYWN5LXRydW5rCis2NjE2NyBmMWFlNjljZGQ0ZmZkYmZhYjY3YWM2MDhjMzNjY2ZhNDkwN2ZhYTZkIGxlZ2FjeS10cnVuaworNjYxNjkgZDgyNmE3NTU3MWJjOTc5ZjlkMDU5Nzk4NzE4ODdkMjIyMmU1ZDk5OSBweTNrCis2NjE3MCA3ODRkMjRhNWNlN2JhY2NmOTdjNDM4YjM5NGU2MTllZTBiZDFjOTE2IHB5M2sKKzY2MTcxIDJkODBkMDBiMWVmMzYwMzMwYTdjZTM0ODQ3OGUwNjI2ZjgzOWEzN2MgbGVnYWN5LXRydW5rCis2NjE3MiAzYmQ5MDAyZTc0MWZmYzMwNjYyYjNlODBiOTRmOWE3MTE3Y2MyMTkzIHB5M2sKKzY2MTc0IGUyZWRjMWMxMWU1MDc3NDQyOTUyNTJmMDI4NTdhMzJjZWQ2NGEyOGYgbGVnYWN5LXRydW5rCis2NjE3NSA2MzU2YTU0MTRkMDE5Y2ZhOTljNDQzZDRjMzQ3YmI5ODRmZDIzMDE4IGxlZ2FjeS10cnVuaworNjYxNzcgYmYwNDNkMGRiN2RmYzlmYTk3YWFiYjU1ZDI0OTgyMjNkNzhmZmQ2NSBsZWdhY3ktdHJ1bmsKKzY2MTc4IDc1YzVhMmM5Mzc2ZTliNDVkNjQxYzc3MTEzODcyNTcwZTBkZjQ4NDYgcHkzaworNjYxNzkgMmE2MGY3YjQyMzI4ZGIxNGEyZTk3YjQ4OTUwY2VjYjhjNWQ0ZmE1MyBsZWdhY3ktdHJ1bmsKKzY2MTgwIDVmZDM5Yjg0ZmMyOTJjOWU1MDZmYmYwZjQwMDkxMjQ0ZjI0MzYzMTMgbGVnYWN5LXRydW5rCis2NjE4MSA0YzY4M2VjNDQxNWIzYzRiZmJjN2ZlN2E4MzZiOTQ5Y2I3YmVlYTAzIGxlZ2FjeS10cnVuaworNjYxODIgYjllZDE0ZWI5ZTg3YmZjNmFmN2QzNjE5YTViNTY3NDA4NGMwYTkyZiBsZWdhY3ktdHJ1bmsKKzY2MTgzIDBmNjkzMGE0MzM2MjhjN2I1NWUxYTM0ZDgzMzZkZWZlZjRkN2E3MGUgcHkzaworNjYxODQgMzM4MzA4YzljY2NiY2FmNzBiMmMzMDVmYTBlYmZhZDBhYjZjMTBjMCBsZWdhY3ktdHJ1bmsKKzY2MTg1IDA2ZjU0ZTExYTA4YjRhYjUwMWExMDk3ZGI3ZDYxNzc0NjU4MzRhMTkgcHkzaworNjYxODYgMjJhYjEwNmUzMTg2YjU4NDk0NjBkMWZmM2Y5NjliMjRmNzAzM2UxNCBweTNrCis2NjE4NyBmODNkY2NmNDE3ZjBkYTZkM2QwNjc1YTI1ZGY3Yzk0MjQ3NzM1NTE4IHB5M2sKKzY2MTg4IDkyYTAxZmUyNGFlMDY0MWFmZWQxYTllNDJlZjgzZmQxZTgxMTNkYzAgcHkzaworNjYxODkgNjE1NDUxNmJlNDljZGM5NGZiM2JhOTMzMWEyODI3NzBhMDEzMWY4ZSBweTNrCis2NjE5MCAxNGZjMTY5MjZjMDNmYzg1ODkyMDk3NjZiZTYyZWRiZTk4MTdjZWIxIGxlZ2FjeS10cnVuaworNjYxOTIgMDFmMmRjZTA2ZjdkMTAyZmI5ZDQzMjYzM2E3MzVhOTVlNjMxN2FmYSBsZWdhY3ktdHJ1bmsKKzY2MTkzIGU2YzdiNmZhMDc3MWU0MGI4N2IwNzNjMjdmOWUyYjNlNjcyOTE3ZTUgcHkzaworNjYxOTQgYTUzODYxMDE4NjViOTdlMGUzODczOTg2YmI0NjliZmU2MzE2ZjFiZSBweTNrCis2NjE5NSAxNzdlOGE2MWFmNDVjNTE0MGRlMDZiNzYyMzM1YjYwMThiNWNlZGU0IHB5M2sKKzY2MTk2IDJiODU1YTk0N2YwZjVmNjA0NDhjMTZiYzQ5NWJiODc0ZjcxMWU5YjEgbGVnYWN5LXRydW5rCis2NjE5NyBlMGFiNWIyODYxMjQ1NmNlNzhmOTNhNmQ0ZDQ5YTgzZTg2NTY0NmUzIGxlZ2FjeS10cnVuaworNjYxOTggZTdiY2ZkNzIwODk4YWJhNDI1NzlkMmFkOTU3MjE0ODQ2NGU3MDk5NCBweTNrCis2NjE5OSA2NWUyMzY4M2MwMTBjM2RhNDcxOWMxNTkwMzViMmU2OGQyMTE3Y2JjIHB5M2sKKzY2MjAwIGUzODQ3ZTdjMjRlMDMyZTRhMTQ3NzdhOGM4ZmVmZGUxNzM2YzlkNTUgcHkzaworNjYyMDEgOTk1N2EzNmZjMTY3ZWNjZDM3M2NjNmQ5MDkxY2FhYmVjZTZjOTI1NiBweTNrCis2NjIwMiA1Yjc4NDVlZjRlZmQwZDlhYmM0YWNhNWZmOWY3ZmI1MzM1Njk0MDUzIHB5M2sKKzY2MjAzIGM1MzIzNGZmNjFiMDBmNGRmZWEwOWFhZWMwMDNlNTk0NDgzOWU1NzAgcHkzaworNjYyMDQgODEyZWExMDViMWIwZWQwYjlmMTEzMDU4MmFjNmQ5NzBkMmViZDllNiBweTNrCis2NjIwNSBmNzFhODkyOGMxYjdiOTYzYTc2OGI0MzEwOTRhYjdlOGRlNjg3NWNiIHB5M2sKKzY2MjA3IDE0MjQ5YmNiOTNkMGNhNjVkOWE4YTRiNmRjYjEwOTQzYjQxN2E2MWMgcHkzaworNjYyMDggYzViZTk0ODRiMTRiZDA3YWY0ZThkNDYzYWI4YTdiYTM4MDEwZTk4YiBweTNrCis2NjIwOSA0NWM0MzgwODk3OWU5NTc2MzZlZDNkOTBmMTQyMWE5MDkyMDIwZWE3IHB5M2sKKzY2MjEwIGRjNzc0Y2UwMWMxZmEyYjU5MzIyNjVlY2ViZWY5YjA5ZDQ3ZDkxZjMgcHkzaworNjYyMTEgODMzZDNlY2ZiYmYwOTEwOTQzN2IwMzZiNDY4NDgyMDU1ODYyNDU1MCBsZWdhY3ktdHJ1bmsKKzY2MjEyIGIyNjY1ODQ3NmQ1NTU5ZjAzMWI5NDNiODJiYzA5ZjliOTYwZDZiNWYgcHkzaworNjYyMTMgMzE2OTIzNjc3M2YxYjc1YjMxZGZjZWMyODUwNzZlNGU5MTFhMDVkMyBsZWdhY3ktdHJ1bmsKKzY2MjE0IDJjMmJlZjhmZmNhMTM4ZmRkM2IxYjFmMzE3OTBiMDE1MmZhZTA1YWIgcmVsZWFzZTI1LW1haW50Cis2NjIxNSA1YzEwYWY4ZDMzZjVjZDJkZTMyZGMxNTBjMDJlMWQxNTA5OWM1ZTA4IHB5M2sKKzY2MjE2IDk0Y2MxMWVjN2VjMjAyZTMzNjQ3OTVlNzI4YWFkYjY5NTNjYzBmMWUgcHkzaworNjYyMTcgNWI3NmEzZTQ1YWIzZTAxYjc5YWNlZmY0YzBkMGMzYTEyYzc2MjZjZiBsZWdhY3ktdHJ1bmsKKzY2MjE4IGFlMmMxYjI3NWZlYjNhYWRiMmUyNDQ1NzIzN2IzNWU4ZGY3OTJhMjIgcHkzaworNjYyMTkgNDQ1MmZmMWZiYzlkNTEzNDJjMmQ1Y2YzZTUxZDE5OTljOGY2ZmZkMyBsZWdhY3ktdHJ1bmsKKzY2MjIwIGI3NTczZWYyNGM3MTllYzE1YmZhMzUxMjMyMmQ0MzAyOTQ2ZDFhYTAgcmVsZWFzZTI1LW1haW50Cis2NjIyMyA3ZjhlZjk4Mjk0YmMxMWMzNzVjZTYyYmNmZTM0YmViOTZmOGNjZjg5IHB5M2sKKzY2MjI0IDNmYTA2NmQyYTM5N2RjNzA4NTRhYTMyZDgxNzIzZTU3YTYwYzIyNGQgcHkzaworNjYyMjUgNmIwNGJjNDJiYWE1YmE3YThkNzZlM2UyNWFkZjk3OWY1MTAzOWRjZSBweTNrCis2NjIyNiBjNjE4M2E4OTg4MGU2MjgxM2I0ZDRjZGI2YmY3ZTdjNWQ3Mzk3NDIxIGxlZ2FjeS10cnVuaworNjYyMjcgZmRkOTNiZmE2YzFiYTVlNzViODkwZjk4ZmUwNzdjOWJiNDFhMGU5NCBweTNrCis2NjIyOCBhNjYyMDM0M2UzZGI0N2Y4YmU2ZjI2MjQwZjE4NWRmMjhkMDRlZGQwIHB5M2sKKzY2MjI5IDhhZmE3NzIzYWZhNzZhZDA3YTM4MTQ4NjhmNDhkZWU3ZTBmN2I1NjMgbGVnYWN5LXRydW5rCis2NjIzMCBiNDg2NjQ5Y2E4YmNlMjAxN2EyYTMyODQ5ZWJhYTdiM2ZiZTA1MjQwIHB5M2sKKzY2MjMxIDg5YTliYzE4NTg2YTE3MzJmMWFkMjE0OGRlNTA3NjQyZDE2ZWEyNDkgbGVnYWN5LXRydW5rCis2NjIzMiBiNDU4NjhmZTQ4OWNiMjM5M2ZkYTBlMTQ1MzBhMGM4MTY0OTg2NjQwIGxlZ2FjeS10cnVuaworNjYyMzMgZTdlNzBlODgxMTYwYmFiMzM5NDhjZWVlMGQ3YWU5YTQxMzY5Y2ZkNSBweTNrCis2NjIzNCBhNjc3ZDY4ZTgxMDVjOWFmZGQ4YTQyZTNkMjIyYmYzMzI5ZmNiYjFlIHB5M2sKKzY2MjM1IDQzMzIyMGE2MGE4ZDAzNTBmNDA2ZTFiMTVmMDcxMmQ5YjdiNmMxNTEgbGVnYWN5LXRydW5rCis2NjIzNiA5N2I5ZjBiZTkzODUyNDlmMzJiNjY2MmJmZWZmMzVhZjRkYWEyNjRlIHB5M2sKKzY2MjM3IGU3NDA5Njk3MzhlZjFmOGFmNWZiZjhlYzg1NDA5MTQ5NDI1MjU1ZDAgbGVnYWN5LXRydW5rCis2NjIzOCBlY2Q3ZjU5MGUxNDI0NzljMTZlZWFhZWQ3YjVmNzVjOGMyMzk5MzdlIHB5M2sKKzY2MjM5IGRhYjdhYmI3N2U4Zjg1NTMyYjI3YjZjNGNmMzY3YmU3Yzc2N2VkMGUgcHkzaworNjYyNDAgZjMyNTE3Zjg3NmI2N2MxYzVmMWM4ZjIxNDE4ZDlhNDRjZjFlYmFiNCBsZWdhY3ktdHJ1bmsKKzY2MjQxIDI2YmRkOTRhNDI5Mzc3NmEwNzdkYjE0MTA1ODA4OTVkODA0MWFjMWUgcHkzaworNjYyNDIgYzNiODExMjE0Y2U4ZmFhZDAxODY4MzMzZjJjYjRiMGE5YmNhNmE5MCBweTNrCis2NjI0MyAyMzhhMDg5ZDQyYmQ2MmUwODc2ZTljM2IwNWRkMDNhZDI5NGFhMTEyIHB5M2sKKzY2MjQ0IGRjMDcwOWEyYjQyZjU3NzIzNGE4NjI4MGY1N2Y1YzRlMjQ5MDE2ZWYgbGVnYWN5LXRydW5rCis2NjI0NiA0ODgyZTRjNDFjZTNlZmViNWJjMmYzNTNhYThlN2Q1OTM0MDczNjI0IGxlZ2FjeS10cnVuaworNjYyNDggMTkzMzgyNDc5MjVmYzRjZjljZTMxNTNjMjY3MjYxZDNlMmVhZGQ0MCBweTNrCis2NjI0OSA3NTFmMWI1Njk5YmFkZTRlODA2NTdhODExOGE4ZDFlOGEwOTE2Yjk0IGxlZ2FjeS10cnVuaworNjYyNTAgMTJlZjdhOTJlNTliYmIyNDVkOGM5MzM3NTAwMjE4ZDQ0NjBkZTcyNSBsZWdhY3ktdHJ1bmsKKzY2MjU1IDY2MjMzNmQ1NjdhOWVjZTZlMWIzOGFmNDE1NWM3YzEzYTYyNGJlMDcgcHkzaworNjYyNjAgNmU3MWIzOThiNmNjZGZmNjgzYWMxMjAwMTAyNGYwMGVmYmU2NGE5NiBweTNrCis2NjI2MSBmODM2ODE0MmY4ZDNiNDI5ZjExYzg0YWM5OTM5MmQxMDNjMzM4ZWFlIHB5M2sKKzY2MjYyIDE1ZGYyOTcwNWUxODJhMTI3NjI5ZjY0NmNlY2UyZjRkMDJjOWM4NjAgbGVnYWN5LXRydW5rCis2NjI2MyA0ZGQ1OTg5MTQzODM0N2M1ODQ0MzZmODU4ZGE0NWU0MTAxYjQ4ZjEyIHB5M2sKKzY2MjY0IDY3MDI4ZjViMzMyMWNjM2U5NTIzZDE1NzBlM2MxN2Y1ZTlhN2MwMjAgbGVnYWN5LXRydW5rCis2NjI2NiBjMWE4ZjZiNjQ4ZWE1MWYxY2E5YTJlNTdkNjI1MWFmM2FlOWZiOTMwIHB5M2sKKzY2MjY4IGJiMGY3NDI4YTE1MDdkZWJhNzIyZjFhY2E5OWVjMmIyMDkwY2UzZjAgbGVnYWN5LXRydW5rCis2NjI2OSA2NzQ2YzZiZWUyODYwOTNjMzFlZGI4OTBmZGJmMjM1OTU1NTU5MzBjIHB5M2sKKzY2MjcwIGUyN2NmN2VlMjk2OGIzZmFlOTBhM2VkMWRhZGY0ZWNmY2UyYTU5MTQgbGVnYWN5LXRydW5rCis2NjI3MSBjYTFhOGFjNDdkMDQ2MWQxMzJhNzM0YzMxMjVmYmZiYjBiNjkxZDQ1IHB5M2sKKzY2MjcyIDQ0NWNlNjU3NTE2MmViZDNmOTk0YWY3YjE2MDA3ZTAyYzhmYTI5YzUgbGVnYWN5LXRydW5rCis2NjI3MyA4ZmZlYzM3MjA0MGU0N2E5YjI2MDcwMjE5MTc3NDVlZTc0YmE2OGQ3IHB5M2sKKzY2Mjc0IDE3OWY4ZDg5YWQxOWE2YmE0ZjQ0YTZlZGM5ZmI1ZmUxZTg3ZmFhNDQgcHkzaworNjYyNzUgZmRhNjg5OTcwYjNmODI4YTZkYTIyNTNhNGJjYmFjMmI2MzYwMDY0NyBsZWdhY3ktdHJ1bmsKKzY2Mjc2IDAyNjI3YjkyNWE0M2M3MTk0YjU4MjRiMWIxMGFkZjliZTFjOGM4ODEgcHkzaworNjYyNzcgZmRjMDk0OGM5NWNmMTk3OWIwNTAyNmI5MDk2YWM0ODIxOWJhNjlmZiBsZWdhY3ktdHJ1bmsKKzY2Mjc4IDEzOTU1YmNkMDhiZTFhNWFhYzI1NzU4MjBiYWY5ODZhMmZlMGJmNjEgcHkzaworNjYyNzkgNzdlMWI5NWYxNDE4YjEzMWQ0M2IxYmYzYjZlM2JlYjVkYWNiMWZhZiByZWxlYXNlMjUtbWFpbnQKKzY2MjgxIGM2YjAyZjc5YjJiYzNhMzU2MDljYmFmOGIyMDYxMzRjYTJiYjg0MGEgbGVnYWN5LXRydW5rCis2NjI4MiAyZWNiNTZlNmUwYTZjZDEzMmFhOTExNDBhNDI3NTJkNzU2NTk3ZTc3IGxlZ2FjeS10cnVuaworNjYyODMgNzUxMGQ4NzNiODhjMzAzMGUxNDk5MjljZTI4ZjNkNjlkZWQ2MTE1OCBsZWdhY3ktdHJ1bmsKKzY2Mjg0IDNmMmM0Y2UzMmJhNDdhMmQzOGE0MTIyZjljODYwZWM3ODk3MTJiYWIgbGVnYWN5LXRydW5rCis2NjI4NSA5MGNmYzZiOTI2YzZmNTQ0YjRkZDY0MjlmNjdhMDJiZmE2ZGZmYjBhIHB5M2sKKzY2Mjg2IDQ3MzNkODRmMzQ4OGI0ZGUxMWZlNTBiOTE0ZDMzYjIwNjU1ZTY1MzkgcHkzaworNjYyODcgNzM1MzZhNThhYjQyNjFkMmI1Yjc3NmNmZjI4ZmJmNTkwNjk1Nzk0ZiBweTNrCis2NjI4OCA4Y2ZiYjJlMjc1ZDljOTE1NGFhMGVjMmIxZDUyNTQ1OGU1ODM0N2M4IHJlbGVhc2UyNS1tYWludAorNjYyODkgOTg3ZGI3YWYwNzAwMmExMmMwM2ViZWY5YjJhMDFkNGU5YmUyYzYxOCByZWxlYXNlMjUtbWFpbnQKKzY2MjkzIDUyM2Q2ZDdlNTgyNWMyN2FjMDYzYTczOTNiOWUxMTQxZDM0NzYyYTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2Mjk0IDNhZjZhNzAyMDcwYjQzYTRlYTRkNDU1YmNmNmU1M2I2NGQ0M2RlMzQgbGVnYWN5LXRydW5rCis2NjI5NSBhMWNhZTk1NTVmNWRmODI4NTljN2RkYjY1Y2Q3MzNiNDM0MTlkMjI2IGxlZ2FjeS10cnVuaworNjYyOTYgMmFiMDUyOTIzN2NiMWE1MDAwOGE4YzA0NTgwNTZiODRiOTJkMzk2ZiBsZWdhY3ktdHJ1bmsKKzY2Mjk3IDI2MTFlOGFlMjM4ZmQ2ZjFjZTYzNDU4YmNiYTEzYTVkMDI1MmIzYTYgcHkzaworNjYyOTggZDc5NDIzODE1MGQyMmZjNGFhZjEwM2ZlNjcyNGI1NzlkYzRjOTRkMCBweTNrCis2NjI5OSAwNWUyNWQ3YTA3ZTE5ODdmNTVjMTQ3NmQ4ZDA4NTVhMWQzODk1MjI0IHJlbGVhc2UyNS1tYWludAorNjYzMDAgYTkzNDdjYjhhYzM4MDY3MmRhYjI2MDQ4OGM2YzE4NGVhODQ4YTdkNSByZWxlYXNlMjUtbWFpbnQKKzY2MzAxIDdiMWY4ZWRlOWI1MzQzZThjZjQ2OWI2ZmJkNjA5NTEyZjhjMjZmMGQgbGVnYWN5LXRydW5rCis2NjMwMiBmMDg1ZjM5YTZmNGQxMjIzMWU2ZDY2OWZiODcyY2RlMGY0OTZjMTU1IHB5M2sKKzY2MzAzIDI3MWRjZTA5MTdjMTA1NzU0YzAyNjEwYjM1OWMzMDAyNWJlYjgxMTkgcHkzaworNjYzMDQgYWEwZWY1ZGUzNDVhNzg4ZjdjY2FmZDI0MGUzYmJmMTQ2MThhYzcxNyBsZWdhY3ktdHJ1bmsKKzY2MzA1IDU2OGFiNTgzNzE5NGQ4OTllMTFmZWQwMWMyNzA1Y2JjMWE5ODhhNWIgbGVnYWN5LXRydW5rCis2NjMwNiBmZTUzNjJkOTM1NDI1OGUxOTE5YzkwZDA2NjhlMDQzNTBlNjg1ODI1IGxlZ2FjeS10cnVuaworNjYzMDcgZDYxYjk1NmIwYmY2NDRjMzA5ZjBkZjI4NTY3OGFjY2UyOTk5ZDRhYSBsZWdhY3ktdHJ1bmsKKzY2MzA4IGRlNmVlZjMxYWE1ZjcyOThlMWFhN2M4M2RiNjYxOWVkYWFhZWUyYmQgcHkzaworNjYzMDkgNTA5NDFiZWZmMDMyOGI0ZjZiMjY1YTAzMWRhYzdlNzg3MjY1YzZkNiBweTNrCis2NjMxMCAzN2I3MGNkNGEwZjBkMTBmZjk4OGEwN2YwNTJkYWI1YjRiMDhhZmU2IGxlZ2FjeS10cnVuaworNjYzMTEgYWMzYjY3MDQzMzYxZWE2MjkyMTNlY2YyODUzNjY0YmFlN2Y0YmY0NSBweTNrCis2NjMxMyBiZjRiYzk3M2UyYWFmYjMzOGZmNzA3YTJjYjllZTBkNjE4MmIwNWI5IHB5M2sKKzY2MzE0IDQ0NzAyZTI3Mzc1MDZjNTI3YmRjM2IxYzUwYTI5ODkzZjBkYTUwM2YgcHkzaworNjYzMTUgYzg3MTNmYjA1ZjllNGU4MzQzMThlNTRhNWQwZDY1OTE0YmMzNzEwNyBweTNrCis2NjMxNiA5NzNiZGIyZGI2YWM5NmUyNzBmYzUzMmM3NjE5OGQzZGJkN2JmM2E5IGxlZ2FjeS10cnVuaworNjYzMTcgNGQxNDhiYjg0YTA3N2IyYTlmYTM3MzRmZjRkM2UzNmFmMmU2NjU4MCBweTNrCis2NjMxOCA4NmE0MmU5ZjczZGMyMTkzMDE2OTJhMjdkZTVmZmMzN2RhMjg4ZDJmIHJlbGVhc2UyNS1tYWludAorNjYzMTkgMjNiNDUyYWMxYTUwYTQ5ZmM0OWM3MjAxZmU3NWY5YzAzY2VlOGYyYyBsZWdhY3ktdHJ1bmsKKzY2MzIwIDk2NGRiODc5ZjE5MGU5ZGNjYjFkNmY1ZGNlNzEwN2M1ZDE1NDQxNjIgcHkzaworNjYzMjEgZmY5NmEzMTNjZDFjODM5YmEzMWIzNTQyMzFlY2VkYWRmNDIwNzVhOCBsZWdhY3ktdHJ1bmsKKzY2MzIyIDNlNmU1NjVlZTMwYWRjYjVlYzAzYTU4MGU3ZmExOThhMjRkYTk3ZTIgcHkzaworNjYzMjYgYzQ2YmNjY2YyYWYyZTQ3NzI1NzQ5NWQ5YWQ1YTZiMzc5NzA5MTQzYyBweTNrCis2NjMzMCBiNTI4Y2JlYTYwZTFjNTE1ZjA4MDI2OWQ0YTM5M2U0MDhhNjg3MTRkIHB5M2sKKzY2MzMxIGY3MTIzZDQ1ZDBjNDNlOWFlMGU4MTZhNjA3OGQyZDBkMTUzYjM1MWYgcHkzaworNjYzMzIgOTc0MDQwYzhmMzY5NjExMDc0OWY5MDM0OTY2NzJlMzk1NzE5MGFkNiBsZWdhY3ktdHJ1bmsKKzY2MzMzIGY2NjUwZjI0NzU5OGUyZDk4NmY4NjIwZmJkNDNhMTdjNGMzNmUzMWYgcHkzaworNjYzMzQgNzA4N2VhODI4ZGRhMmZiNTkyNzA0MmM1NDkxOTY2MmFmZDUwNjRmMiBweTNrCis2NjMzNSAwZjQ0NTdjZjI1YjJjZWJhMDk4ZjU0YmI4YzczOWEzNmFkMmU5ODc4IHB5M2sKKzY2MzM2IDc1NjYzN2EzYWM0YmEyNjEwMTQwYTFlNDNkZjA0MzA4M2VlMzczYjAgcHkzaworNjYzMzcgMzZiMmQ2NzRmYzhjNTNmZDQzMDNjM2M0ZjRhN2ExNTVjNWRjNWI1NyBsZWdhY3ktdHJ1bmsKKzY2MzM4IGNkNjFkNTRmYzhjMDY0ZDczNjcxODE2YTk2MTQ3M2M2YTI5YjYyZDIgcHkzaworNjYzMzkgMjkwOTQ4NDJiMzc3NmE5ZjhiZTljOTg2NjNiYjRkNjBkNjBkNjlmOSBweTNrCis2NjM0MCBhOTBiMjg1NDU4YWIwMTdlMWZlMjc0ZjM0NDliNjkzMzMwN2RjYjFlIHB5M2sKKzY2MzQyIDEzOWY2YmFlZjZjMjMwODMxM2ExNDJmNzVhNjNhMWQyNGM4M2U2Y2UgcHkzaworNjYzNDQgNDI0OWU1ODM5N2VmMDFjMWYyZTJhN2MyODBkMmExZmVjNmUxOWFhMCBweTNrCis2NjM0NyA2ZjA4Mjc4YmY4YjFmNWVhOTg3YWU1NTkxYTk4YmJkYzJlYWY2OWE0IGxlZ2FjeS10cnVuaworNjYzNDggZGMwY2FlMWU2YWRiMTU2MTk0MGRkMGI2ODc5NjgzOTEzM2E1ZDAyYyBweTNrCis2NjM0OSA0OWE5M2MwMmE2ZDIxMzE3ZmE1MjYxZjVkMzQ1Yjc5ZDY3ZTI4NGZkIHB5M2sKKzY2MzUwIDc1M2E3NmIzZWVhOTFkZDE5Y2E4OWI2MjFjYmJlNmRjNDY5NTFkYTEgbGVnYWN5LXRydW5rCis2NjM1MSA1YzAzODgxYzIwNzU1MTUyNTUyZjZhMjhiYTU1MmZkZWQzNTI0YmMzIHB5M2sKKzY2MzUyIDczY2M3YjYzNTViODE3NmE5NWI1NTkxODU4OWJlNGVmZDZiZTNmYzEgbGVnYWN5LXRydW5rCis2NjM1NyBkYzE5YTFiN2M1YTYzNDQ4MDUzNTdjNzY4YmY1ZDViYWZmYzM5N2ExIHB5M2sKKzY2MzU4IDJjMmUzYTU2YzdiY2M4NjcyM2MxNGRhOGE5NDE4YWQzZTQ2YmY0YzEgbGVnYWN5LXRydW5rCis2NjM1OSBlOTBhM2YwYTk5MjhhZDNlYjRlZTdlYWM5NjIwZTU2NzdkNzc5NGNhIHB5M2sKKzY2MzYyIGMzN2M3ZGJkNzg4MGRiMDM0NWNhN2U5N2EyMjZiMTFjYmY0Yzg1Y2QgbGVnYWN5LXRydW5rCis2NjM2MyBkYzYwMjkzYjI5ZDUxMTliZjY3NzI5OTZhZTc1NGQxMGRiMmM5YTllIHB5M2sKKzY2MzY0IDk1YWM2OTgzNThhYmIzNGQ4MDM0ZTRkZjdiZWM0ZjA3ZTRiNWQ4OTIgbGVnYWN5LXRydW5rCis2NjM2NSA3NzU2NWJlMWI5NTc3MGQxZjI2NDQ3NzdlODhkYTRiMzg2OWFmNGRmIHB5M2sKKzY2MzY2IDUxMzI2NmE3NWVjMzFlMTFlMzM3NWRlMzYzN2MyOGZlNTA3MzYyNzUgcHkzaworNjYzNjcgZjEwMGVmY2ExNDg3MWJiODIxYTMxYWVjOGRkOWQxYjAyNWJkZGZmZCBsZWdhY3ktdHJ1bmsKKzY2MzY4IDI1ZjE0MTI4YTk3YzE4ZTQ0YmZkZjQxODRiZDk3MThhODU3OTYyY2IgcHkzaworNjYzNjkgMmFiODVjMzkyYThkYWUwMGE1ZTE3MWQ4YzZiYTA5NjllMjQ3YTUwYSBsZWdhY3ktdHJ1bmsKKzY2MzcwIGRkOTYxNDRlNmU4MWZhNGU2Y2M1OGFhZTA3MDM1YTg5NGNjYjFkMzQgcHkzaworNjYzNzEgZjk3Nzc5MjYyYmFjMWIzNWVkYTMwMGI2ZTdmZTI3MGFjMDcyZTE2ZiBweTNrCis2NjM3MiBhZjQwMjM4YTY4Yjk1Y2EwODNhN2JiYzU3ZDQ3ODkwNDYyMWY5N2ZlIHB5M2sKKzY2MzczIDU4OTA3M2NlZTBhZTQ3YTY2YTEwYjljNWFkMDExZTIxZTdhMjAzZmIgcHkzaworNjYzNzQgMzQ4YTMzMDQ4ZWJmNDhmYjUwNzI1NjNmODZiZTc0NDJmNjNjNzQyNyBweTNrCis2NjM3NiAxNzQ3NWViNTUwNjdhYzFkMTk1NjA4MWRmMmNlZGY2MTUwMTQ0MWZmIHB5M2sKKzY2Mzc3IDE0NTQ0OTEwOWEzMWNhMTZiMzRiNzllMjk4NTA4YmFiYjQzNjFlMGIgbGVnYWN5LXRydW5rCis2NjM3OCA2YWUyZDRiNTA3YTI1MmY2MWQ0MzI0MDgyZGNjMjA5ZGRiNmNkMjY5IHB5M2sKKzY2Mzc5IGE0ZGY0OTAzYjM1NTU2NGYyYTQ3ZTUyMTljNDU4N2UzZDc1NDU4ODcgbGVnYWN5LXRydW5rCis2NjM4MCBkMjdkZjA4M2Q0ZTY3NGQ5NzJlOTU0YzQ0ZDc4ZjYzZDc2Y2UyNWI1IHB5M2sKKzY2MzgxIDUxZmY5MzQ1NjJjMjNlY2E2ZGNmMjFlY2VhZmI5N2I1YmIzZGI4MTkgcHkzaworNjYzODIgODc1MzEzMDFiYTQ4Yzg3ZTI4Y2RiZGViMTA1YmJmMWZlZTQ3ZGM5MyBweTNrCis2NjM4MyAzZGMzMTgwOTYzMWZlMTc5MTVjNTY2YjQxMjI2ZTgyZGM2YmMzYzliIGxlZ2FjeS10cnVuaworNjYzODQgOTZkNjI3NmQ4MGUyMzI0NmJhMDEyNDMxZDA3MDMwNjA1NDgyYjVhZCBweTNrCis2NjM4NiBmMjhiOTk5YTY5ZjgzYjY1MDM3MWY1N2NlNDMxOWZiMzc0ZWU3NzhhIGxlZ2FjeS10cnVuaworNjYzODcgODljMmE2OTdmNzcyZjBmYjY1ZmVmZWM0MDMxYzFkZTAzYTRiNmVlNiBweTNrCis2NjM5MCAwZWY3Y2IzNWIyMTY3MjQ2NzY2NGZjYmMzMjM0ZWExZGUyZGU0NjZhIGxlZ2FjeS10cnVuaworNjYzOTEgNGNkOTdmOGRlNjllMjBhOWU2NDVmY2U4YjM2ZTQyOTlhM2RjOTI3YyBweTNrCis2NjM5MiBjMDVmNWFiZWY3OGFkNTI1MmUyYmVkYThlMGQxM2U5N2VkOTBiN2U4IHB5M2sKKzY2MzkzIDI4MDM0N2QyZjc2NTAxZTIzOTQ0NWRlNmYxNWNjYmFiNTdmYjQ0M2UgcHkzaworNjYzOTQgMGZjZDRkYjIzZGZmZWIzOWM1NGM2YTJjMTY1MjE3Mzc5N2NiMjAxYSBsZWdhY3ktdHJ1bmsKKzY2NDA0IGZmMTVlNjJhMzQ5Yjc4YmQ3ODllYWU1YjE3YmU1OTc3MDE0YzU5YWIgbGVnYWN5LXRydW5rCis2NjQxMiA0Yzc3ZDEwMTZmNjBhZjQ1MjZjMzNjYmRkMzkzYWVkN2VhZGU1NDNkIGxlZ2FjeS10cnVuaworNjY0MTQgNzZiYzc1NzcyNzM2ZjMyZTlkMzQxOGE1ZjFmMzE1NzVkYTgwZjNhYSBsZWdhY3ktdHJ1bmsKKzY2NDE1IDM4MWVjZjQ2ZGZhZTQ0YjgzZTNiOGRiNGYxMGNkYjRhMGZmZjQxZmEgbGVnYWN5LXRydW5rCis2NjQxNiAxZWJiMmE4Y2MwNmM5NDQ3MWQ3MmI1NDc2YzIwNTBjNGQxMTVhMWFhIGxlZ2FjeS10cnVuaworNjY0MTkgNGY3ZGUxY2E5MmZmODA2NzFlYTIyYTU4M2IwYjlhOWNlMjYxNDgzNSBsZWdhY3ktdHJ1bmsKKzY2NDIyIDczOGJhODMxOWY0OTIwNGU0OTYxOWNiNWVjOWE1NzNmN2I2MTVmNTEgbGVnYWN5LXRydW5rCis2NjQyNCBjOGQ0NDZlYTk2ZGFiZDNiYjRkZDc2NjU3ZTZkOTJhZTEwMjljZWI2IGxlZ2FjeS10cnVuaworNjY0MjUgMDkzMmI5YmFhN2E0NThmMzVjZDcxZmY3ZWY3MGFmOWNmOTgxYzE3MyBsZWdhY3ktdHJ1bmsKKzY2NDI2IGJiM2QxYmQxZTI5MzNlN2UxMWViZGRiOWM5YjFmYmIyMDNmOTcwYTQgbGVnYWN5LXRydW5rCis2NjQyNyBlN2MyODAwYjIzYmY4MmI1NjkzOWMzY2JkZDlmNzNhMTBhZTIxMzA0IGxlZ2FjeS10cnVuaworNjY0MjggNDE1MjRmOWUyYTJmOWZiODU5Yzk3YTNjMWRkMTNhNTU5MjgwZjZkMiBsZWdhY3ktdHJ1bmsKKzY2NDI5IDVjZTAxNDM4YmFhYTU5NWNmOTE1MjE5MmJlZGRkNjA1NTcwZjA2YTAgbGVnYWN5LXRydW5rCis2NjQzMCA1OTZhMWFkOGZlYjYxYjI1MjM3YzlmN2QyMjZiNzg2MWNhMmU5MDNhIGxlZ2FjeS10cnVuaworNjY0MzEgNzQyNjcxYzVkN2M5NWM2NWFiZDNhMGUzY2QyMmI3YTdjYzRlMjA4ZCBsZWdhY3ktdHJ1bmsKKzY2NDMyIGMwZGE3ZjIzNjFlY2RjMzg1ZjlmYjJkMjFkOTU5NTM3ZDQ3NzE3MGQgbGVnYWN5LXRydW5rCis2NjQzMyAwNTEzNjI5M2YwYzhiZmQ1Y2QyODM1NDYyOWRlNWMyY2Y3ZWEyMjFjIGxlZ2FjeS10cnVuaworNjY0MzQgYzNmMGY5NzgzOWUzODI3N2VmNWM5NTEyYmI5ZmNiMGYxYWQ1NmIwOSBsZWdhY3ktdHJ1bmsKKzY2NDM1IDUyZWY5NWJkZDgwMWU0NGJlNGZmYmEyYjU1MDdhYWVjN2VhNDdjMjUgbGVnYWN5LXRydW5rCis2NjQzNiAwNmYzMjNhYTcyYzQ5NTA3ODBiZTE2NGNjOGRjODVjOWViNTA4YTQ0IGxlZ2FjeS10cnVuaworNjY0MzcgNjcwOWZmODI4N2Q5ODc4NGFhNDFiZDk2NjZiYmJmMWQ4NWUwMTY4MCBweTNrCis2NjQzOSA2NjY1ZWJmZjY0ZjFmMmMyMDY2MTJjMDg4NjFmNTdkZjJkYzg3YjM4IGxlZ2FjeS10cnVuaworNjY0NDAgMWVhZGRkMjM4OGNjMjc0NzFmYjQwMjNkYjA3ZjE4YzM3NDAzY2YzOSBweTNrCis2NjQ0MSAxYWYxNjk3MGRhYzNmZDQ1NjVkZWZhMjMyODkxMWM4MmI3NmE1NGJjIGxlZ2FjeS10cnVuaworNjY0NDIgZDQwNjk4M2VkOTI3OWNjYzY1OWM4NmZiMmNhMWQwYjBmNDc4NjYwYSBweTNrCis2NjQ0NiA4Zjg4NmFjYWExNDJjY2FhOWQ5YjYyMjg4NjIwY2IxZmJiNDU5ZDg3IHB5M2sKKzY2NDQ3IGZlYjdiZGUxYTRkOTMwMTE3MDg2YTI4NTZiZmMwZmE5NjYyZGY3ZjkgbGVnYWN5LXRydW5rCis2NjQ0OCBjODdiODRkYjI0NGNmNjMwZTMwMzcwOTczNmNkOGRmZjE3YTJhNTIxIHB5M2sKKzY2NDQ5IDA5NWRlNWI5MjlkZGJiNTY0ZGY5NTU0OTc1ZTEwMmY5OWJhMGU5YzYgcHkzaworNjY0NTAgNzViMGRjYmMzY2M3MTgxNTg4OTAzMzJlYWU0Y2U3MzQ1NGRlZjIxNyBsZWdhY3ktdHJ1bmsKKzY2NDUxIDNiMDQ4ZTMxZGQ5ZTc3YWJkZjZiZDU5ODkyZGQxMTg3ZDI1YzY3NTEgcHkzaworNjY0NTIgNTlkYjRiM2EwNmIwMWI1MmY3OGM0ZTc0OWJmODIzN2FjNDdkZWQ0ZCBsZWdhY3ktdHJ1bmsKKzY2NDUzIDU2ZDVjMDNiOTJiNmNlZjE1OWVhZjdmZTNlNDA4MmVhNDkyYWE2OGYgbGVnYWN5LXRydW5rCis2NjQ1NCA0N2RiNjJiZjZhYTcwZDhlOGY1YWJmOWUwZGE1YWE5ZDZlOTk5N2JjIHB5M2sKKzY2NDU2IDYyNzAwYmI3ZjdiNTkwOWVhNzhjYjA3MjlmNTk2NjRhMjkyNTUyMjEgcHkzaworNjY0NTcgMmM1YmI0NjM0ZDJkOWVjNmE3Nzc2NTI2ZTFkNWY1OWE0MGI1MGNjMiBsZWdhY3ktdHJ1bmsKKzY2NDU4IGY5OTgwMDE2NmMyYjczZTMzYjcyMmJmZDM1YWZkNzg1ZTAwMzM1MWQgbGVnYWN5LXRydW5rCis2NjQ1OSBjZGRmNWQ2NDc2Y2YxMjdiODk2ZjQyMzY1NDY2OGFiZmE5M2UwNzgxIGxlZ2FjeS10cnVuaworNjY0NjAgZTk2OTIzMjA1NGEyYzM4YjcyNWZmY2JhYjJiNDhmYzA0MmZjZWU5MyBsZWdhY3ktdHJ1bmsKKzY2NDYxIDY5MjliNzQyNzJjNDBlZjUzMjNjYjU2ODEzMGUyYmZlYzIzY2FhMGUgbGVnYWN5LXRydW5rCis2NjQ2MiA2MmU1ZjczZDA1YjQ5ZjQyN2Q2YmJmNWE4NTE4YmZhNDU2OTMyZDA0IHB5M2sKKzY2NDYzIDY0YmU5ZjkwODY0ZTE0YjMzNWI2NGZkMWUwZDVjNTMzOTUxNDQzOTEgbGVnYWN5LXRydW5rCis2NjQ2NCAyNjA1NDY1YmJhM2MxOGExYWIzMGU2YmJhNmFmZWZjM2UzMTQ3MDc2IHB5M2sKKzY2NDY1IGEzZjBkNjY3ZTJjZTU1N2I3ODNlMDc4MDgxN2RiOTc2ZmEwNWIxMzEgbGVnYWN5LXRydW5rCis2NjQ2NiAzYTgyZTUwMjQ3NDMyODAwNWE0ZGI2NjRlY2E5OGVhMWYxMWFkNWE2IGxlZ2FjeS10cnVuaworNjY0NjcgYWFlYmRjNGM0NjkwM2IzMGYyNTg1Nzg2ZjM3OWM2ODA2ZDMwZmM0NSBsZWdhY3ktdHJ1bmsKKzY2NDY4IDAyYTZjYzVkN2EyMjc2ZTE5MjM5MDA1MjgyYzRiZDg2OWUxOTZkNWIgbGVnYWN5LXRydW5rCis2NjQ2OSBiZGI2NjBkY2E3NGQ2YWY0YzI2ZjYyNzk3ZjM0MjVkMmQ2MDIyMTNhIHB5M2sKKzY2NDcyIGY5NzRlMGZhNTRjYWE3N2QzNjEyOWU1YTRmYmE3YmE5MmUxZDhkMzggcHkzaworNjY0NzMgMTE2N2FlNjQ1ZThjMDI3NTQzYWExOWI0ZGQ4NjY5NWY1ZTZiNjRiMCBsZWdhY3ktdHJ1bmsKKzY2NDc0IDIwZGYwNmUxYjI2NjlmNTkyOGVkNmY1YjcwZTI4Zjg4YTE1NTA4OTYgcHkzaworNjY0NzUgNjcwNDNmYjhhZWE1YzBlODEwNTA1ZmFjZjIzM2FiNGY2YzllODU0OCBweTNrCis2NjQ3NiAzMzAyMDQ1YmFlOTc4OTYxMWJlMDQ1YTA3NzdiZjY4MTQ1N2Q2OWI4IHB5M2sKKzY2NDgwIGJiMmEwYTM3ZmFhOTdiZGJlY2JkZWY5MjEyMmNkMTRjNTAyOWExNmIgcHkzaworNjY0ODMgZDE3Y2M0ZDE3NjZjYTEzYWY1NGUyYTY4NDNjNDhmMGFhNWY0MjcwZCBsZWdhY3ktdHJ1bmsKKzY2NDg0IDQ0NTNlMmM2YWE3ZmQyZTU0YTk2NmQ4Yjg1ODc4MjFjMTlkMjNiNTMgbGVnYWN5LXRydW5rCis2NjQ4NSA5N2YyOGRmYTE1NDliM2MxZDA5NmEzZTAwNjAzZTJmOGJjNjcyZWJkIGxlZ2FjeS10cnVuaworNjY0ODcgYTFjMTlmMjYzZjc5NTVmZjFmN2EwZGUyMThkZWQ1NjUyYjQ0ZTkyZCBsZWdhY3ktdHJ1bmsKKzY2NDg4IDVkMmYxNjExOTQ1OTRiMWFhODU3MzEwM2U0MTUzNzY2ZmJlOThiNTcgbGVnYWN5LXRydW5rCis2NjQ4OSAyZjliMDZmOTVjOWE2YTdkMWZlMDk1Njk1NzQwMzBkOTZkYTE3MTA1IGxlZ2FjeS10cnVuaworNjY0OTAgN2IxNjg2MDJmNDRkYjJhZmM0YmRjYjhkMTJiZDZlZTBlZGVmY2JiZCBsZWdhY3ktdHJ1bmsKKzY2NDkxIGUyNDI5ZTIzMjU3NmE2NjZmZDJmNTQzZDk1NmZkZDI5OTljMDk2NzMgbGVnYWN5LXRydW5rCis2NjQ5MyAzMGVmMjJhODAyNjdjM2Q2OTgyNTMwYWI2ZmU4ODIxY2MxMjA0YzViIHB5M2sKKzY2NDk0IGFmNGM0Y2YzZTAxZTA5MzJlNjQ0MGEyOTVmY2QwZTVhOWM3YTNiY2MgcHkzaworNjY0OTYgMjYwNmQ5YTAwYzdiNjIyMDBmNDQwNjVhZWQ0MDljYzBhMmI3NmYzZiBsZWdhY3ktdHJ1bmsKKzY2NDk3IDU4ODE4ODQ2MzYzYmI1ZTBjODFhZDYyZDZhZjQ2OWU1NWRhYzVhMzEgcmVsZWFzZTI1LW1haW50Cis2NjQ5OCBmZTM1NWJkMDVjNDc0MzgyNTQ2Y2Y4NDdhYjU3ODY4ZWM1ZTljN2JhIGxlZ2FjeS10cnVuaworNjY0OTkgNTA3ZWRlOWM3ZjdmNDc1ZGZhZmJkNGE1MmMyMmQ3NjdkMTBhMmJjMCBweTNrCis2NjUwMCA1ZDYxYzY1NDg0OTc5NTAxN2RjYTRjMDk2NWNmOTA4N2E2ODk0YzEwIHB5M2sKKzY2NTAxIDQyOGIwNTNiYjA5ODM5MzkzMzAxOGI3MjE1OTQxM2QwZmIwYWUzOGMgcHkzaworNjY1MDIgYzY3MDNmNDk4OWIzNzMwZjQzOTVmYTgwYjcyNTEwMDQ3ZTBhYWMzOCBsZWdhY3ktdHJ1bmsKKzY2NTAzIDBhZDhjZWE2MGJmYTBiNjA0MzgyNWE2YmUzMzk3NmY0Zjg1NGNkYWEgcHkzaworNjY1MDQgNTI1NzkyMDk3YzYzMDhhNzhhNzZiN2I1ZjU2YmJkOGEyNGMyNmFjZiBsZWdhY3ktdHJ1bmsKKzY2NTA1IDU1NDliNWRmOGJjYmRlYTcyMWVkMWU5Y2U3MTk1NGMyNjAzZjY2Y2MgbGVnYWN5LXRydW5rCis2NjUwNiAwZWVjMzQ3NTUwNDE0ZWVmYTNiNWY1MmEwZTFiNTM3ZGY5ZmMzNzQ5IGxlZ2FjeS10cnVuaworNjY1MDMgNDliOWI5OTY1ZjMxMmJhMTVmYTdhOTJiZDRkZjVjMmM3YzM4Mzg3ZCBweTNrCis2NjUwOCA3NjNlNGI4NDg4MWNjMWI5MjA3OGJiODAyMmI4MmVhMWM2NTBkNzMxIGxlZ2FjeS10cnVuaworNjY1MDkgNjcwMGZkODEyNWJhNWUwZDFjOTY4MTQxYjUxMmJhNWQ0ZWJiYjU1MCBweTNrCis2NjUxMCA5ZmU0NjdmZjBjMDg2MzRiM2NkZjIxYzlhOTY2MjRjYTk0NzZlYTI1IGxlZ2FjeS10cnVuaworNjY1MTIgNWE3MWE2MDY4ZTMwMzU4NDYyN2I3NjVjYWZlMmU0MmJhY2JmYmNkNyBsZWdhY3ktdHJ1bmsKKzY2NTEzIGM0NWE2OTY1YmM0Njc3N2U0MDE3Yjk3NTIyY2RlN2NkYjE0ZTliM2MgbGVnYWN5LXRydW5rCis2NjUxNCA2MjYwMzI1OTc3MTIwMzEwMTI1MGZlYWJlM2FiYjlmNWJhODEzY2ZhIGxlZ2FjeS10cnVuaworNjY1MTUgMTVhYzQ5NjAyYTA2NDhiMWI1NmY5MTIyMWM1ZjI2ZGVjN2FjZjcyYSBweTNrCis2NjUxNiA1NzhhZDQ5MWQ0YTQ4NmJkMDAxN2Q1ODZkMWYwNWMzODY1MDk5MjJlIGxlZ2FjeS10cnVuaworNjY1MTcgYzEzNzI5MzJhZTg3Y2M5NTU1NzBlMjQ5NzA4MmNmNjZjMTFhMDZiNiBweTNrCis2NjUxOCBmM2U1YTg1MzQyMDYyOTM2MzA5OWU3MzZiNWNiMjEwNTM0Yzc1N2NjIHB5M2sKKzY2NTIwIGI2YTgwMzE4ODQ1NGQ3NjMyZWMyM2EyNGI3ZjcwM2ViYTg0MmFhNWIgcHkzaworNjY1MjEgY2M5ZDlkOTY2YjFhNGZmNTAyZWY0ZjY4YWUwZjgwZGZlZTUwMTM1MiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY1MjIgZDZiOGQ0NmEzNDMxYmFjNGJhNDYwYzM0YjhkZmQ3NmE2ZmIxOTY5NCBweTNrCis2NjUyMyA1MGIxZTU1NzU2YTUwN2M1MWFkZTBlOGFiYjM2YWY3ODdkZTY3MGVkIGxlZ2FjeS10cnVuaworNjY1MjQgNGY5YTk3MTQwZjBlZmI5YWVjOGEzNDNmOTdiNWViNDQ3NmE1MDA4NiBsZWdhY3ktdHJ1bmsKKzY2NTI1IDYxYzY4ZTJjNTcxYjA3ZGNlNWE2NjA0MzY1YjczZDNmZjA4YjNlODcgbGVnYWN5LXRydW5rCis2NjUyNiA4NWI0ODBlZjI2MzVjNjdhOTI0MjQwOTcyMzY1ZTExNTIwYWQ2YTI4IGxlZ2FjeS10cnVuaworNjY1MjcgOGIxN2Y5MmJiYzRkYjY2NDM1NjI0Y2QwZDVjZWQ1MWM3Zjc1YTRmNiBweTNrCis2NjUyOCA2YjlmMmNlNWZlOTIyZTg2YzAyMDY0NmE1Njg0ZDMxOGZmMWJlZDg1IHB5M2sKKzY2NTI5IDcwMWRiNWU5NjdiNWRiMTJmMjA4MzM0NjJiMzJkZWRmMzMzYWQ2NmQgbGVnYWN5LXRydW5rCis2NjUzMCBiODQxNTUyYTlhNzNiOTQxZTQxYTAwZjMxMmE0MGEyYzM5MDdmOGZhIGxlZ2FjeS10cnVuaworNjY1MzEgZjcxZjY0YWU2NTE5NjZlNTA0ZTJiZjVkMDM2ODdhNzhiZjIzZjVhNiBweTNrCis2NjUzMiBlNTJhMzU5NWRmZGJjNTA2ZTdiZGEzNzQ4ZDNlNzAyMmFmMDJhMGU5IGxlZ2FjeS10cnVuaworNjY1MzMgMTc3NzZkZjZmZGEyY2MzMDQxNjIzM2YzZDNmZTM5M2JhN2IzMTI5NCBweTNrCis2NjUzNCBjMmUyZTkyNjJiOTliMjA4Y2ZiNmU5YzliNTQyN2ExZjYxNDdlZjU5IHB5M2sKKzY2NTM1IDkyM2ZiNDU4YmQwYzY5ZWY5YjExNzg2OWFkNmU0ZWI1MmUwNWEwYTAgbGVnYWN5LXRydW5rCis2NjUzOCAzODZhMDNlYzFmZjAxNGRmN2IzZWRjY2NmZWQzNGY0OGZmM2IzODgyIGxlZ2FjeS10cnVuaworNjY1MzkgNTVjYjNlMTFiZGY3NGU2NjI3ZmM4ZWNiODliOTc2YTk4Mjc2Y2U1MSBsZWdhY3ktdHJ1bmsKKzY2NTQwIGMyMDA1YzFjZjZjZGU4YTU1ZjU2YTE0YmU5ZDI1MmY1NGJmYWNkOGYgcHkzaworNjY1NDEgNDk5MmZkNDlhOTg1ZDY3OGNjNGUwYjgxYTk5MDUzZWVmYzY4OTg0NCBweTNrCis2NjU0MiAyNWY4MDkxMjNkZjYwNjNmNjY1YzU2MWJiYzY2NTRjNTI1MGJhZTlmIGxlZ2FjeS10cnVuaworNjY1NDMgZDFhYjgzYWQ1ZTJiOTM0ZjM0MDQ1NDQ3N2VkODc1ZTZjMjZlMTlkMiBweTNrCis2NjU0NCA2YjY3OWNhMjQzNjlmYTFkMjM0ZDIxYTEyYzc2MTk5NzJjMTJjYjNhIGxlZ2FjeS10cnVuaworNjY1NDUgZjBjMjVlNmJiYWQ1ODBiN2NhZjYwNWU5MzljNzllMDg4YjVhN2VjZiBweTNrCis2NjU0NiAzOWE5NDcxOTU0NTRkYzIwOGJjMTJhOTMyZTgyNGE3ZmU0M2I1Yzc3IGxlZ2FjeS10cnVuaworNjY1NDcgYzE3NzcwMDc0YTRiZTk1NDkxNzlhZWMyNjMwZThjMWI0ZjRkNGUwOSByZWxlYXNlMjUtbWFpbnQKKzY2NTUwIDU0NjEzYmExZGNhZGY1MDM3YTc2MzQ3ZWMwMzQwM2EzODkwZWY3MGIgcHkzaworNjY1NTEgNmFlMjhhNTAzYzlkMTZhN2RiMmRjYjk5ZWU0MzBmN2U0NGZjMjRmYiBweTNrCis2NjU1MiBmM2RhNTZlM2ZjZTRiMTQyZjIzNjFhOGFmYjk3YjFjNGJiYzJkMzBlIGxlZ2FjeS10cnVuaworNjY1NTMgOTIyYjllMDNiMjYwZWM1OTJmMTY0ZjkwMDc2ZmY3Mzg2ZGYxYTQwMSBsZWdhY3ktdHJ1bmsKKzY2NTU0IGZlNjYwZThjNjNiYTY5MGNkNThiOTE1MzcxZDMwMzViYTNkZThlMjIgbGVnYWN5LXRydW5rCis2NjU1NSAwNmNmMzVlNmUzMDhlYWJmYWVhODNjYTEzMDVlNGEyN2M5MzJhNmU1IHB5M2sKKzY2NTU2IGU4NmVkMTEzNTM1Y2VmMGE4Yjg4YjQ4N2JjYjExYTA3NDM2ODBkZWYgcHkzaworNjY1NTcgZWY3NWViM2RjNDhlODIwMmRlOTM5MjM2YzViZTVmMjEyM2ZiODc3YiBsZWdhY3ktdHJ1bmsKKzY2NTU4IDI3YzFiYTcxODZkOGY3MjljNDdmYzZhNmMwNGM4YWFjNzIzNDEyMGUgcHkzaworNjY1NTkgZGU5MGE3MmUzZTIzNDM4YTlhZWUzYjY2ZGYxZmU0Nzg5ZjZiZTYyMyBweTNrCis2NjU2MCAxZDVjM2JjZjM1YWQzOTg2YzA4YmJjZjViZjljZGViMTRlZTFkNDZmIHB5M2sKKzY2NTYxIDAxOGJjZDY0YzMzZTRmNjhjNzAyYzRiNTc5Y2Q3ZWVmZmVlOTdhNWEgbGVnYWN5LXRydW5rCis2NjU2MiAwZGU1YTM4OGEyNjE4MDRlNzdmYTA2N2Q1OGZhM2FkOTMxOGYyNzlmIHB5M2sKKzY2NTYzIDY0NjE2ZTVkODBiNGIyNjRiOWE5Y2Y5MDgzNWQyOGYxOGIyOTk1ZGEgcHkzaworNjY1NjQgZjZkZjU2N2NjZDYyODlhNGQ2MDVlYzkyZGZhMTNjODRlMjdmZjdkZCBsZWdhY3ktdHJ1bmsKKzY2NTY1IGJlODlkMmEzNGIyZjg5YTMxN2JhZmNlMDRmNmI0ODQ1MzgwNzZiMWYgcHkzaworNjY1NjYgYTVmMjZiM2EyNmZkOWVlOGU1NGNhYzE1M2IzNzI4YTUwNTEzZDBhYiBsZWdhY3ktdHJ1bmsKKzY2NTY3IGVkZjhhNmM2OTAyOGI3NzU4OTVhMWFlYThlN2E3N2ZhM2Q4ODlhNjcgcHkzaworNjY1NjggZjNlYjAwMDQ4N2I5MzYyYzJmY2Y1NDNlMzk5OTY3ZDQ3YTg1YzQ4MyBsZWdhY3ktdHJ1bmsKKzY2NTY5IGY4NDMwYjY4NzZmYjM2Y2ZhOTBjYWU2YmFiYzQyNDc2N2VmZTJlMmQgbGVnYWN5LXRydW5rCis2NjU3MCBiYmUyZTM1ODUyY2Q0ZDhhMDJjN2NhNzIyZmY1YmQ5Mzg1MjdlZWUzIHB5M2sKKzY2NTc3IGIzYzI5ZGE5MzRmNWVkZjg4ZjZkZTBhZGZkMzkwZjY2MzczYTEwYjUgcHkzaworNjY1ODAgMjVkYTA3ZmUzNjMwYzAxYjg5OTE4ZjEwYzczNzkzZTg5MGE3OTg0MCBsZWdhY3ktdHJ1bmsKKzY2NjEwIGRiOTk5ZWIyYmJkYzc1OWQyYjQ5NzI3Y2I3NTFiMDMyNDM4NTE5OWYgbGVnYWN5LXRydW5rCis2NjYxMSA2MDZhYjI1ZGRlZjFiMGJlMmZkZWUzMWQ1OGM2OTBlM2VjMjk4ZmRhIGxlZ2FjeS10cnVuaworNjY2MTIgMDFmYzA4M2UxZGRkMzUxMDFjMmUyMzYwNTYzNDZkYjZlYTI3ZjVlNSByZWxlYXNlMjUtbWFpbnQKKzY2NjEzIGE4NzBjM2M2YTlhZDI0MTM1ODkyYzc3ZTlmYTU4MDczZWY2Yzc1OTQgcHkzaworNjY2MTQgMTIwYjRiY2YwOWZmNzIwZTYzMmY0ZWRlNWQ3OTFlOTRmOWVlNThiYyBsZWdhY3ktdHJ1bmsKKzY2NjE1IGEwMDYyNmYyZDcwNTc5MjM1YWQwMTA0MmYxMzgxMDkxNDkyYjEzOGEgcHkzaworNjY2MTYgOWQxYzUzMTE2OGNhZDdhMWU4OTVmNjcwYjg4MmE5MjFjOGM2MjY4NCBsZWdhY3ktdHJ1bmsKKzY2NjE3IDA5MWE2YzUyMjdhOTQ3NWJhM2FlNmEzZjIxMTMzZDQ4ZjA2YjNmNTkgcHkzaworNjY2MTggYTkxZTc4YWI0ZDdkMjAzMTM2Zjg2ZThmMGM5YWVjMzNmOGUwMGQwYiBsZWdhY3ktdHJ1bmsKKzY2NjE5IDNmZWJjYmZkMzYwMWM0MjNhMzFiMjcwNzQ1YWZlMmFlMmRjYjYxOTkgcmVsZWFzZTI1LW1haW50Cis2NjYyMCA1ZTViMTViNjkyZTE0MTdmNmE5OGNmYjI5MDBjMWVmODUwZjYxMzk0IGxlZ2FjeS10cnVuaworNjY2MjEgYWNjNDRiN2ZhZGUwOWE2ZmU3MmMwOTQxNGY1ODFlNDQxMDdhMDhiZCBweTNrCis2NjYyMiBkYmFlYzI0OWQ1NmYxMmI1Zjg5NjlhNGUzNGJjYjVmODNkYjFmZDUzIHB5M2sKKzY2NjIzIDc4YTIxYjI3OGUxYjliNzRhODJkZWY0MWJmNWE1M2M0NDA2ZGMyZTAgcHkzaworNjY2MjQgZjMyM2ZhNGU0OGQ3OWEyODcxNDEyNmZmNzQzOGQyODc4ODAyZTkwMCBsZWdhY3ktdHJ1bmsKKzY2NjI1IGI1NTBkZTQyODUxYTg1YzEwNjZjMGRjN2Y3ZmZhNDE1YTI0MjM0NWUgbGVnYWN5LXRydW5rCis2NjYyNiBiMjMyZTJlOWU3OTM3ZTM0NTczMjI5MzZmOTE5ZTFkMGZhNjNkYzYyIHJlbGVhc2UyNS1tYWludAorNjY2MjcgMDZlYmYxMmJmYTYyY2E1YjllY2EyZTdhZDcwZDY1ODI4YTljM2UyZCByZWxlYXNlMjUtbWFpbnQKKzY2NjI4IDRlZWRlNWU0OGFlNjg1YWM3YmQ5NTkxMmQyN2I2N2E0YTEzMGE1Y2YgbGVnYWN5LXRydW5rCis2NjYyOSBlMTNjMDNlMGNlMGJiNGM5MjNkMjZmZDczZjU2NjcyNTAwZmQyMWI3IGxlZ2FjeS10cnVuaworNjY2MzAgYmJhZGI5NjBmZDVjMWE5NzY4ZjA5ZDliYjcxZTcwMjdiMTZjMjU1MCBweTNrCis2NjYzMSAzMDRiZWE4NzMxZDIxYTRlMDhlYmRjY2Y2MDVhZWZmY2JiNTIzMTFjIGxlZ2FjeS10cnVuaworNjY2MzIgZTBjMDZjYWVmYmZmMzNmYTQ3MDZjY2U1NWUzODBmMTUwMmFmNmMwYSByZWxlYXNlMjUtbWFpbnQKKzY2NjMzIDY0MDNmMWVkZWNjMTlkMjRjNGViYWViNjE3NWM0OWUxMjFhOTJkM2UgcHkzaworNjY2MzQgZWIzNWZjYmE2NThlZTI1YjMxMGJhNGFkOTI0NDNlYzY2OTBiMzdiOSBsZWdhY3ktdHJ1bmsKKzY2NjQzIDA3NTA0MmM3NzI0Yzc0YTQ5YjZiM2UwNGZkMTQ0NWFjODc0ZGRmYzMgbGVnYWN5LXRydW5rCis2NjY0NSBkZTc1ZmI0ZTgwMGNlZjkzYjkyMzQ1MzM2ZTAwNjhhZWY1MWQwYzFjIGxlZ2FjeS10cnVuaworNjY2NTMgY2RjN2Y2MzY3NzhiNjkyM2QwZmY3MWU5NWYzMjYwMDZlZmUxZDZiNSBsZWdhY3ktdHJ1bmsKKzY2NjU0IDhhMWRiZTVjMmI3NDVjMTg1NWJhNDAxNjM4ZDhkYmZiNWYyNGY5MTQgbGVnYWN5LXRydW5rCis2NjY1NSA1Mjg0NzY4YzI2NGM1OWQ1NTAzNGFjNTExYTZkMGJjODY3M2Q3ZjdhIHB5M2sKKzY2NjU2IGQ3MGJjZjNiNjI4ZDdhMmVkNjE5YmY5M2Y0ZWI5MzkwNWMwYmIwMWUgcHkzaworNjY2NTcgMDY5OWE3MTJhM2RiZGQ4YzUyZjE4ZGFkMzA2OTEyNjEzMjEyYTAwZiBsZWdhY3ktdHJ1bmsKKzY2NjU4IDc2NTFiOTQxM2M4NTRjYjYwZDBjMTAzZTMxZDczNGE5MTIxYTFiYzIgcHkzaworNjY2NTkgN2EzZjc1MmFkZjFjZjg5NDUyYjg4MzljNjQzMWRkOTI1MTdiMGFiYyBweTNrCis2NjY2MCA1MzBjODE0MThjMjgzOGNjODIyYTk5MGEyYTNlM2VhYmMzM2Y5YzczIGxlZ2FjeS10cnVuaworNjY2NjEgMmNhNDE1OWJiZTY1NDA2NjE3M2E5MjUwMWY5ZTI1ZDQ2YzkzYjc0MCBsZWdhY3ktdHJ1bmsKKzY2NjYyIGNlMmZjYTQ4YWNlNDMyNjY4MTg1NDYzMTNjOWExZDUzZmE4NmYzNDEgbGVnYWN5LXRydW5rCis2NjY2MyA3NTVmMzRhYjQzOGIxOTE2N2MzNzEwZDViMjQ4YTZlMzRjMjU1OWMyIGxlZ2FjeS10cnVuaworNjY2NjQgMjMxZjNhMjVjY2Y1YjJkZTg4ZWRhOTBmMjRlNjA5ZGI5MDQzMDJkYiBsZWdhY3ktdHJ1bmsKKzY2NjY1IGRhMDczNDg0ZjVhYzMwNmM1OGJjYzgxOTVkNGQwNjdmZjRiNDdlM2EgbGVnYWN5LXRydW5rCis2NjY2NiA0ODQ0Y2FjMDg2NTI1ZDJhOTg1Zjk2OTAyYTdiODJhNmFlOThmN2MxIHB5M2sKKzY2NjY3IDZjYzVhY2U5ZjUxM2UwMDgwMGUxMDFhNzgyNTZlN2RlOTI1YjAxZWMgbGVnYWN5LXRydW5rCis2NjY2OCBlYzQyZjc5OGY1OTczNjQ0MGEwMzFmZTYyZjJkMzM3MmQ1ODJiZTY3IHB5M2sKKzY2NjY5IDU2YTNmYTQ0OWM2YzZjMTM1NjlmOGM0YWQzYjk5ZDMwNjdkMDE3YTcgcHkzaworNjY2NzAgNTNhY2UzOTdiOWM1YmI1YmY1MjNjMjhkOTJiMzEwZWFkNzg2ZDkzMCBsZWdhY3ktdHJ1bmsKKzY2NjcxIGRiYzZlZGJhNzBhN2I3NjRhYTc0NjljMjIyMzZjODU2ZGFkZGIxZWQgZml4LXRlc3QtZnRwbGliCis2NjY3MiBjYzY5YjkzMWE2MDgyZDlkMjQyNzQ5MjliZWUyNDE5MDAwMWE5NzM2IGZpeC10ZXN0LWZ0cGxpYgorNjY2NzMgNWE5YTgzY2FlOGYxYjJhYjlmZjczNTI0YzU3NjdjZWExYzZhOTQ2ZSBsZWdhY3ktdHJ1bmsKKzY2Njc1IGM1ZjVkNmEzMTNlOTk3M2RkNGYwOTRjZmNlOTE0NzA5MDNkY2U3NzQgcHkzaworNjY2NzYgNjRiYTUyNDBhZjMxYTkyYmQ4MGE5NDFmMDMyY2Y3OTYwYmQ0ZWNiZCBsZWdhY3ktdHJ1bmsKKzY2Njc3IDc0ZTdmOTdkYWQ3ZGVkZDEwNWExN2EyZmM4YWIwZDgwM2NhMGEzNzAgbGVnYWN5LXRydW5rCis2NjY3OCBhOTUwMzBmOTM5ZWQwOGRlYjkzNDM3ZDA2YjI2MmRhODVlZTEzNzBkIHJlbGVhc2UyNS1tYWludAorNjY2NzkgMDI0MTdiNTZlNGIyMWE5OGNkOWQ4NmZhZDZjMTkzODBjOTVkZDRlNSBweTNrCis2NjY4MCBkNTg2MTg1YTdhNTE2N2FlZTJiZGU4ZGI5OTc1Yzg5N2M5MDJmNDVhIHB5M2sKKzY2NjgxIGNhZDFkMmE4YTlkM2I5YjBlMDY2ZDg0OGE4NmNhMzYxY2E5MjQ0ZTggbGVnYWN5LXRydW5rCis2NjY4MiA0MDUzNmRkYzI2YTE5YjhmZWUyNTBmNDM3MzA1Y2YyNTY2MzgzN2E0IGxlZ2FjeS10cnVuaworNjY2ODMgNWIzNTI5NDg1NDIxOGE4Y2FmMTYxNmIxZjdlYmQyZmE2MWQ4YmY0MiBsZWdhY3ktdHJ1bmsKKzY2Njg0IDY5ZTE4NGI5OTBkYzc3YjJlNThjMjJmZmYzYWU4YmYzZjA0N2Q3N2UgcHkzaworNjY2ODUgZWRiNWVlY2YzYmI4YmRlYjY4NTg5NmY3Mjk4NzkyYzg1OGI1MDg3MSByZWxlYXNlMjUtbWFpbnQKKzY2Njg2IGQ4OGYxZjJmMDIxMzVmNmU0NTdmNDdiMzg5MDYxOTc5MzkzMjBiMzMgbGVnYWN5LXRydW5rCis2NjY4NyBhYjM0YTY0N2UyMmZjZWI1MDQ1MTRmZmJiZTFmMDVlYTNlOTJiOGY4IHB5M2sKKzY2Njg4IGI0OTY0ZGY2NDM4NDBlNDNiMWJhZDM2YjQzYjZhMTEwMDhhOGE1YjggbGVnYWN5LXRydW5rCis2NjY4OSBmNGFlYjExM2M5ZWZhZGNlNjk1YjZkZDdkMTg2ODNjNjJmYTRmYTAzIGxlZ2FjeS10cnVuaworNjY2OTAgNDE1NjU1NWYzOTExODFiYzBkOGZjYWNlNzM1M2U3MDYyNzNmYWM4NiByZWxlYXNlMjUtbWFpbnQKKzY2NjkxIDM3NjMyN2NiNjgyMTNjNGQxNDAyMTQxZDUyZTAwNTZlNGEwMGRkMGIgcHkzaworNjY2OTIgN2M1NjYyNDU0OGZkNDgyZjViYWZmZGNkMDdlNmE1MTlmNTRhYzZiZSBweTNrCis2NjY5MyA2YTczMTM0Zjk2MDMyZWYxMTYyZTVmZjI3NTliMDJlY2VjOGQ4NjU2IGxlZ2FjeS10cnVuaworNjY2OTQgYjI4MDFhY2E5ZDZiNWZiZTFhMWEwZThlODRkMzQzMjFiYjJiYzEzMyBweTNrCis2NjY5NSA1OThkMTk5MzYxODZhMzgwNDQ4ZWUzOTFmZTQwZTU4NWEzZmU1ODZiIHB5M2sKKzY2Njk2IGFmNmZlOWFkYjM5YzNmM2FkNTM4Yjk2MzI4Njc0OWE1Nzk3OGI4YTkgbGVnYWN5LXRydW5rCis2NjY5NyA2Y2VhY2QwMTVkNjc4YTUzYzMxZWFjYWU5YzY4ZTQzZTNjOWQ5MTUxIGxlZ2FjeS10cnVuaworNjY2OTggYTRlZDU0ZDU3NjRjOTA2MzFjMGI3YjU1MDM1ZjFjMGI0YTFmMjYzNyBsZWdhY3ktdHJ1bmsKKzY2Njk5IDY3NjU5NDZlMWFjNDlmZmIzNTRiYWJhODVmZmMzODIwYmYzMDkxMDEgbGVnYWN5LXRydW5rCis2NjcwMCA3ZjFmOWUxOGNkZmEzMjVhZTk1NjUyNTQ3MGUyMjA1NzU5NTZkMDc3IGxlZ2FjeS10cnVuaworNjY3MDEgODYwNDVlMWVlNTk1MGM0YTAwMDYzMWZkNmFlNjRkNmFhMjc0ZmIxZCByZWxlYXNlMjUtbWFpbnQKKzY2NzAyIDFmNGVhMDIyOWVjNjY4Y2MwNTkwYmI5NWU2MjE5NjJmYTA5YTI5MjEgcHkzaworNjY3MDMgZWVkNGQ1MzMzMzJmMGZkOTAxYWIzMGQyOTJkNWZhZjZhYWU4YjkzNiBsZWdhY3ktdHJ1bmsKKzY2NzA2IGQzMTgyMzRhMDBkNzU4NmI5NWZkZDM2OTM0NGQxZjZhMjAyNzE1YTQgdGxlZS1hc3Qtb3B0aW1pemUKKzY2NzA4IGVhNTMxNjNiMDZkZTMyYTZmYmIzOTBjYmJiMTQ5MDEzMDExYWIxN2MgbGVnYWN5LXRydW5rCis2NjcxMCBiNWZiOWIwMDJlYzMxNzNjYTlhMjNkNTYwZjI0NmJhYzgwOTRhYThmIGxlZ2FjeS10cnVuaworNjY3MTEgYWRhNmQ3ZjcxYjVkZjA3NmQ5ZTBiMzZlZjdmMGVkMjNmNjc4ODY2ZCBweTNrCis2NjcxNCA1OGE5ODg0ZDJiYzNkMzNmOWRmODU1Mjg1NzcwOWRmZTk5ZDE4Mzg0IGxlZ2FjeS10cnVuaworNjY3MTUgOTVmZmY1YTZhMjc2NTIwYjJlN2UwZjc1ZmUzMDNmNDkzNzY1NjdhNSBsZWdhY3ktdHJ1bmsKKzY2NzE2IGJjNGNhODBiYjVmZDRjOTFhOGI3ZTcwNzNlN2M0ZDFjYzFiNDc3MGQgbGVnYWN5LXRydW5rCis2NjcxNyA1NGNkMWNjNzBhNDc4ZDg1M2VmOGMzNjRhMmUwMjdiNmZhNjAyNDgyIHJlbGVhc2UyNi1tYWludAorNjY3MTggNzI5Mjg5M2ZjMmM1ZjhiODUwODI3Y2YyNDgyMzI5NjAxOWRiZmU1ZiByZWxlYXNlMjYtbWFpbnQKKzY2NzIxIDc0OGVjOWIyYWVmMTAyN2JkOTMzZGU2Zjc4OWJhYjhiY2E4ODBlNjEgbGVnYWN5LXRydW5rCis2NjcyMiA5ZDJmMjgxODI4M2Q1ZTg5YzQxMmRkNmY5MjlkNTZkYzBkZWEwNTE1IGxlZ2FjeS10cnVuaworNjY3MjMgYTVmMzBkMDY0OTNjYmQ0Yzk1ZDlhOGQ2ZTQ2ZDgyMTUzNmQ2NmZhZSBweTNrCis2NjcyNCA4OGU2MTgzY2RiMzhjNmJjYWZjYzY0ODFlNzUwN2I2ODkzZDkwNWRkIHJlbGVhc2UyNi1tYWludAorNjY3MjUgMDMzYmI1Y2FjZDBhMzQxN2JlNmY0ZDQ1YzIyNzYwYmQxZjMxNTIwNCBlbXB0eQorNjY3MjggNmRkODdkZTg1MDNkNTY1MjZjY2Y4ZTE1ZDdiZjMxOWQ2MjE2MmYyZiBlbXB0eQorNjY3MzYgNTZkMTc4ODc0ODIxMzNkOWI3ZTVkZDI4N2FiMjJmZDFjZWFhNGZiOCByZWxlYXNlMjYtbWFpbnQKKzY2NzM3IGVlYjVmYTNlZjg4OWEyMjE5MGM2NTU4YzJhZGNlOGZjMzQwMDg5ZDYgcHkzaworNjY3MzkgOWM5NzFkNTJhM2MzNWZhYjJhYTY3ZTMzOTdhNTNlNjcxNDYwZWJkNCBsZWdhY3ktdHJ1bmsKKzY2NzQwIDg3M2QxZTM2OTc5ZGFlNjdkOTRlNDU1YjU5ZTI4MjU0ZTI4MTdiNTIgcmVsZWFzZTI2LW1haW50Cis2Njc0MSBmOWYwMTQ4NGU0OGIwMmMxZDFjODg2MWM5NGZhYzg4YmEyYzdjMDRlIHB5M2sKKzY2NzQyIDA2OGQ5YjYxNGU3YmZmYWI2OGRkMjgxMTJiYjBmZjEzOGU4ZjQyMDMgcmVsZWFzZTI2LW1haW50Cis2Njc0MyA4YTdjOTMwYWJhYjZhMmMyNmVhYjY5ODkxZjQ5ZDhiZTQ5YWZlNWRlIHB5M2sKKzY2NzQ0IGI5YWZhN2M5Y2MzNWUxNWZiNjhhOWQ0MDFhNmMxMmYzZjYxMDFkMWMgbGVnYWN5LXRydW5rCis2Njc0NSA3NDI2ZDhkN2NlMWI0YTVkYWRmNTlkZjdhNjZjY2Y4ZWQ1NDc5ZmJhIGxlZ2FjeS10cnVuaworNjY3NDYgMjgxYjIxY2EwM2Y2MzYzMDRmOTdlOTM4ZjZiZDYzODE3MDNkYjc4YiBweTNrCis2Njc0NyAwMTM4OTUyNmJhMjU1NzllMzg1NTZhMmMyODAxMDRjMWVlMjdlMDY1IHJlbGVhc2UyNi1tYWludAorNjY3NDggMjdkN2VmYTNlMWFjMDA1NTE5MmE4YmQ3NDEwZDQyYWQzMzY4OWNmNiBsZWdhY3ktdHJ1bmsKKzY2NzQ5IDY0MmYyMGIyMjU3Nzk1NjI4ZTYzOGE3MjRiYjBmMTFmYzUxMTk3NDAgcmVsZWFzZTI2LW1haW50Cis2Njc1MSA4Njg5M2EzOTdkZDA1MWQ0YjE1MjM1YTk4ZWNlMmQ4YjI4YTM0YzE2IHB5M2sKKzY2NzUyIGY4MTJiYzJiNmE3YmZkZjg3MmJlMTc4NTQyZTRiMjE4ZDAzMmZjOWIgbGVnYWN5LXRydW5rCis2Njc1MyA5ODEzMDZmNGI0MDUwMTFlMmVjMjA1YWZkYzBlMGM1YjI2MTFlMWZhIHB5M2sKKzY2NzU0IDNhZWFjNGE2YTJjZmNiNWFlNzdiYmE3NTIwYjk4MjljODkxYmUxZjUgcHkzaworNjY3NTUgNDE5ZTcyMWIzY2E5ZTIwMzA1MjY5MjM4NGFlNjliZTljMWQwYTZiMyBweTNrCis2Njc1NiAyMDBkZDFkODIwZmNmNDg1OTNmZTgzYjRiMjY2MDk2OTMwZTBiZGIyIGxlZ2FjeS10cnVuaworNjY3NTcgNTdiMmQ5YTIyNTk0YTE1ZDU3OTAyZWJjYmM5ZjgxZDg4YzkxZDIxMSBweTNrCis2Njc1OCA0Zjc3MjAwNGE4NWRjYWM1MjYzZmU5ZWRiYzU0MjY2N2U1NjkzNjc3IHB5M2sKKzY2NzYxIDU1ZjkxNGFlOTBlZDY0Y2EwMzA1MmVjNDgyYWNkMGQ0ZTE1ZWZmOWMgcmVsZWFzZTI2LW1haW50Cis2Njc2MiAwMzkxMGI4OTI2NzkxY2Q2NmRjZTQ1ZmYyOTVkMTBlNzBlMjEwYjUzIHJlbGVhc2UyNi1tYWludAorNjY3NjMgMjIyMzY1NjgyYzFiZTIwNjIzM2ExODk3MmNhYzRlZDdhNThmMzhmOSBsZWdhY3ktdHJ1bmsKKzY2NzY0IDEwOTEwMDhmMmNiZDA3ZDRhNjc0ODM0NTQ4MzE3ZjAzMzRlYzNmYjQgbGVnYWN5LXRydW5rCis2Njc2NSAyODNlNTQyNjRjMGQ2N2ZlNGRmYmFkMjYxODA4ZjAwMGI0ZjcyODllIGxlZ2FjeS10cnVuaworNjY3NjYgZmEwNDBkMzBjZmNhYThhNjMyNzY1OThlZWVhYjdlMmZiMmZmMDdmNyBsZWdhY3ktdHJ1bmsKKzY2NzY3IGU4ZTE5NjM5N2Y0NTcxYjRiMWQ2MWYxYWZkNjE2MTJiMTk5OWYyNzAgbGVnYWN5LXRydW5rCis2Njc2OCA3NDk4MWRjODM5ZmQyMmZmZmE2OTA2ZThmODdhOWY5ODMwNjY0ZWJlIGxlZ2FjeS10cnVuaworNjY3NjkgZTgyMjk5MmNmNmNlY2NjZmRmOGEyNGI4MTIyNTAwMjgxOWEyZmM0YyBweTNrCis2Njc3MCA4ZWM4NDk3NjA0Yzc3ZTdmNTU0MWQ5OGY0NmZkMTc5ZjIwOWFkMjBkIHB5M2sKKzY2NzcxIGE4Zjk1OTViOWY1NTM2ZGQ5NzhhMDk5N2Q1NjgyYjdkODllZDUzOGQgbGVnYWN5LXRydW5rCis2Njc3MiAwOGM0OGVhMDUwNDViYjAzZmFkMDY1ZTQ1OTA2MzRiNmFlZjZlMTFlIGxlZ2FjeS10cnVuaworNjY3NzMgYmY4MWNiODg5MmY1MWNlNzM2M2U5ODkzNDI3NDczZDAyZTlhYjU2OCBweTNrCis2Njc3NCBiNWYzOWM4YTQ0MjM5ZTRjYzBmYzM3NDRkN2U1YzA0M2Q4MWJhYTQ5IGxlZ2FjeS10cnVuaworNjY3NzYgZjViOWM2ZjRjNTljNzkwNWQwMDVjMTBmYzE3NzUxNTlkYTliZmYwYyBsZWdhY3ktdHJ1bmsKKzY2Nzc3IGVmNGJiNGQ1ZGZkZTk3YTY1Y2E4YzQ3MmZhZDg4MjY3NjUyY2ZhNTQgcHkzaworNjY3NzggMGIxZGIyNDJkMjMyZTQ3ZjdlOTVlYzUxOTRjNjk5ODY2MTBjMzhhMCBweTNrCis2Njc3OSA4NGNjZjkxYTA2Y2M1NDUyYTVmOGM3Mzc0Y2E1OTFmOTRjNWMyMDI4IHB5M2sKKzY2NzgwIDhhODkyY2YyNWU3YWE2YjM1ZjVhMzI1MjFjYzJiMzBlYzhlN2E5NDEgcHkzaworNjY3ODEgMTZhMTk0ZGE3N2RlOTZlNTc3YzI3ZjcxNDZjZTFlMTBjYmU3NjkzMyBweTNrCis2Njc4MyA4NDQyZjEzNzIwYTRkYzBlNjk2NWJkMTRlNGU3MDc0MGI2NjJjZTIzIGxlZ2FjeS10cnVuaworNjY3ODQgYmUyZjg1YmU1NjZlNTE2MzIzZmI0YzdlMjYxM2QyZTU2NjBkNzI2MyBsZWdhY3ktdHJ1bmsKKzY2Nzg1IGM1NmZiYjdjMTY4OWNhOGIwZDlhNDdmZGFhYjdiY2UyODhhNmZkNjUgbGVnYWN5LXRydW5rCis2Njc4NiA4ODVmZGY1OTcwY2M1NjNhNWMwYWFhNjg0MzlkYjgwYzUyYzExNzJhIGxlZ2FjeS10cnVuaworNjY3ODcgYjIxZGUwNDIxMzk1ZDUwODMyNDcyNmY5MDI5ZGM4N2FlODk1MmIxNSBsZWdhY3ktdHJ1bmsKKzY2Nzg4IDU4MDhhN2FlMDNhY2Q5MDdmMDkwMGJkZDIyMTViNThhY2IwYmVjOGQgcmVsZWFzZTI2LW1haW50Cis2Njc4OSAzNTZlODhkNGFmMzAyM2M3YmViMTZiOTdmNGMyNDZjZDY3MjI1MGY5IHJlbGVhc2UyNi1tYWludAorNjY3OTAgZTU5MWU3NWU4M2EyZjFmMDI3MDJjNmFiMzY5YmFlMjliZjY1M2EzYyBsZWdhY3ktdHJ1bmsKKzY2NzkxIGYyMWEzZDg1ODVjNjU1NDQ5ZmRkY2NhMjEyZDFhZTQ0NDU5MzhiOTUgbGVnYWN5LXRydW5rCis2Njc5MiBhZjdhMzk5ZmMyNzIyMmMyMDY3M2ExNjJiMDcyY2RjNTI3ZjYzMGFlIGxlZ2FjeS10cnVuaworNjY3OTMgOTg0YThiYzZkOTU2ZjM1NTE0NDYwNzkyZDgzNWIyNzNjNDY3Yjk3ZiBsZWdhY3ktdHJ1bmsKKzY2Nzk0IGY3MzFmMDllYTgzOTRjNGU0OGMzNTlhNmQ5OTFiZDk4YjI3OGYyZDEgcHkzaworNjY3OTUgYWMzMTZmMjUyMjljOTIwNGUyNjdjZmEyMmI5NmY4ZGFmZjg3Njc5ZCBweTNrCis2Njc5NyA3M2NlM2ExMTA0NmZiZGMwMDhiY2IzNGVlODFjNDkzODhkZDJjNTcxIGxlZ2FjeS10cnVuaworNjY3OTggZmY1YzNkZDY4ZDA3YzM4OGFhZDJmMDliYWQwYmM2NjUzMmZlMjQ1MyBweTNrCis2Njc5OSAwNTYwNDU1NWI4ZDQwMGRiYmIxNzJmODRmMGYyYzU4NDk0YmZmNzFmIHJlbGVhc2UyNi1tYWludAorNjY4MDAgMmU3OTQ3NTdiZGM4NGFiNzhhZDM2NDY3ZjY5MTBmMjMyNzE5NTViZCByZWxlYXNlMjYtbWFpbnQKKzY2ODAxIGUwOTZjNTJjZDVjYTlhMTNlNTE5NGZjZDFlMmNmZDI1ZDdlMjAwNDEgbGVnYWN5LXRydW5rCis2NjgwMiA4ZjVhOGVhNWJhNzZlYWEzZjVmYjY5MjFmMzc4YzI4YjExYjIwNDk2IHB5M2sKKzY2ODAzIGRhOTU1YzMzOTY1YjQ5MjAzMjUwZGYzYTVkNmJhMzNiYTUzYmJjZjEgbGVnYWN5LXRydW5rCis2NjgwNCAzNTZhMWY2ZWYzNGZkMjg3N2FlZDhjN2FmNzgyYzk4NWU5Y2FkOWM0IGxlZ2FjeS10cnVuaworNjY4MDYgYzViMjdkZjc5ZDdkNmQ5YmY2YjI1NzYyMDEwYmJhNDMwZTZjMmNjYSBweTNrCis2NjgwNyBjMDQ3ODY1MTQ2MGZjYWZkN2E4ZTE5YjNlNDAxZTI2YTU4YWMzN2UyIHB5M2sKKzY2ODA4IDllNDFjNWU3ZTM2MDE5OTY5YjBiMmVkMjNkNGQ1YTY2Yjk0YjkyOWYgcHkzaworNjY4MDkgNTI0YWM3NDRhZTA0Mzk2NjY0MDA5MzA5ZjEwYWZhMjY4YmMwZTQ1NCBsZWdhY3ktdHJ1bmsKKzY2ODEwIGRjOTVlNDZmMWYzZTg5YTliZDYyMGQzNDI3ZTYyODUwMzMyMDkyNTQgbGVnYWN5LXRydW5rCis2NjgxMSBjMmQwMTk2ZWE1OGJkNDZiZWUzOTA4NDcyY2YyOThlNmExOTlkNzUwIHB5M2sKKzY2ODEyIDAyZGQ1ZGI2MjkwZjQ1YmUyZWVhMWViZDU3M2FlOWZjYjg5MWU0NTUgcHkzaworNjY4MTMgYzkzM2M4NDY3YmRkYWFlZWJmNGFmYzJmMjNiOWZhNjQ4ZTU3MjNlZCBsZWdhY3ktdHJ1bmsKKzY2ODE0IGM5Yzc4ZTAwZGY2NzNlNjQzNTczZTViYzViMDM0ZmI0NTIzZjM4MjYgbGVnYWN5LXRydW5rCis2NjgxNSBjNWFlOTMyZjYzYzlkYTM0OGI2YWQ1MjlmOTU5NmM5Y2Y5ODYxMmRhIHJlbGVhc2UyNi1tYWludAorNjY4MTYgZjUxMTVjMTMyZDRhYTZiNGQ5MTcwNTBkODA1MjRjM2M2ZTU0N2Y3OCBweTNrCis2NjgxNyBkZmUzMTBhNDAyNDU4ZDExNjZiNmIwYjE0ZjhiYmY5MWM5NDE0YTFlIHB5M2sKKzY2ODE4IDdhZWMwMDAxNWE5ZTE1ODk0ZGJkZTQ5Y2ZkMjJhODNiNTZlMzc3OTIgcHkzaworNjY4MTkgZDhiNGE2MWFiZjI1ZjcxNWFlM2E2Njk2MDMxNDg1NmVhMWQ2MTQ2ZSBsZWdhY3ktdHJ1bmsKKzY2ODIwIGRiZDJiMTgxN2E3NWQ0MjhmMDQyMWY2OGZkM2M2MjIzOTMyYjZiZjEgcmVsZWFzZTI2LW1haW50Cis2NjgyMSAxMjU5ODRiNzFhNzY4ZTIwMDU1NWU4NGEyMzVkZTZiZGIyM2I3ZjllIHB5M2sKKzY2ODIyIGU5OTE1MzhiOWE4NzZjNzc0ZTYwOTA4ODcxYmRjODA4Njg2YTgwOTkgbGVnYWN5LXRydW5rCis2NjgyMyA5YzdlZDcwYWEyYzNmZTRmOGNmNGI5NDBiZTAxNDEyMjYzMjM3OGRhIGxlZ2FjeS10cnVuaworNjY4MjQgN2VmZGRhZTUwZDI1NTAzOTE1MjFlYzM2MzI5OTAzMmFiMGU4ZTU0NiByZWxlYXNlMjYtbWFpbnQKKzY2ODI1IDY2NzljMzI1MmY5YjBlYjI1ZGQ4MzJjYjM4ZDEwNjU3NGYxNjc5YmIgcmVsZWFzZTI2LW1haW50Cis2NjgyNiBkZDk3ZGM3OWFlMGEwNWYxNGI3ZGRjMTgzODBlNGM1OWRlNGVkZGUwIHB5M2sKKzY2ODI3IDkxNTg3ODE4YWRiODM4MDRhMGRlYWRhZDhjNjU3YjE4MzQzMGZiMGUgcHkzaworNjY4MjggZDIxNDBkZTc2NDc5NGU3ZTRmMmFiMDQ1ODg4MjVhMzk0ZjIyNjhhNyBweTNrCis2NjgyOSAxYzk4MDU1NGI1NGIyYzEwZDRiYjdlYTgwNWJkNGY5NTg5MmQzZmI0IHB5M2sKKzY2ODMwIDBiMmY3NjViYTRmNzc1Y2Y1OWNkNWU0OGE1YzU3ZTkyYzNjODY0NTMgcHkzaworNjY4MzEgODIwOTFkZjY1MWJlN2E5MTc2Nzc3MTkzMTkzNzFmYzVmZjEzMTFmOCBweTNrCis2NjgzMiBjYjc4OGUwODQ0ZTdmOWQwODI4NTRhMjNmZDU0MzMzMDczNDNmYTA0IGxlZ2FjeS10cnVuaworNjY4MzMgY2U3YjhjMzE3ZGEyMGY4YTc0NWE1MmY5MzY0MTUwMjc3ZWRjZTcwZSByZWxlYXNlMjYtbWFpbnQKKzY2ODM1IGRlZWYyODQ4MjJmNzVkMDdhOTI4YzFhNTI1ZTg2Mzc2NTYxNjhiMTQgbGVnYWN5LXRydW5rCis2NjgzNiAyMTA2MGE1NmRlZmM4ODFlNjc3YTExZDExMzkzYTFkMDhiNDIxNzVkIGxlZ2FjeS10cnVuaworNjY4MzcgNmU3Yjg1M2U4NjE2MDkzMzQyNzI3OGRiMjczYTU1ZmQwZmUwOGQ3ZiByZWxlYXNlMjYtbWFpbnQKKzY2ODM4IDFlNWIyMDUwZWM2YWNkNDgyZjg5OTNhNjE1MjRkYzQ0ZjJlZjY4ZjcgcHkzaworNjY4MzkgNTlkYWE3Y2Y4Y2EwOTc5NTJkMDlkYjg1MzNhOGJkODM3YjMwNThiZiBweTNrCis2Njg0MyA2OWVhMTJkYjliMjhiNTk4MzIyZDFjNjU3YWY2NjViOWYyNzNkZTYyIHJlbGVhc2UyNS1tYWludAorNjY4NDQgODYwZjYyODQ4YWYwMmZiZDgzODU1N2QyODA1ZTJjMzZlZjMyMTE5NyB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4NTEgMDIwNWNmMGIxYWRiOWZiZTNjYjdkZWZhZGUzMjhkZTVlMTIxYmU2NCByZWxlYXNlMjYtbWFpbnQKKzY2ODUyIDk0ZDE3Y2YzZDhiYmJlMDI0MmQyMmU0ODQ5MzAyNTBlOWZiZWY4M2YgbGVnYWN5LXRydW5rCis2Njg1MyBiNGZjYjJmNDcxMDFjYmJkZTEzM2NmNTBhYjE0YjdiNjg2ZDI0Yzg0IHB5M2sKKzY2ODU0IDQ4NDU4MTBmNTg4ZWEyOGYwNDcwMzAzM2QwODRjOWVlM2E3NWIzOTIgbGVnYWN5LXRydW5rCis2Njg1NSA1NzVmNjVmMDBjNmMwOTIzYzBiMjZlYTkzZjBjMzFjMTQ4ZTRhZjBhIGxlZ2FjeS10cnVuaworNjY4NTYgZDRiNjEzZGEzOGRjY2Y2ODliNTE4NTYwMjQ3NWFhMTliYmJmMTZiNCBsZWdhY3ktdHJ1bmsKKzY2ODU3IDJiZjFjMWJkOGQ5NmViMGVhZjI4YzY1ZmI2OGNjMTFlYjk5M2NlY2UgbGVnYWN5LXRydW5rCis2Njg1OCA5YzBlZDRhZWNmYmQ5MWQzYmM4MjhmNGFiYmFlNGU2MTlhMWZjMzFmIHJlbGVhc2UyNi1tYWludAorNjY4NTkgNTE4NzZhNDAzYzBkZjliYzU2OTcwNWM3YjliMmVlN2M4NjdhYzcwZSByZWxlYXNlMjYtbWFpbnQKKzY2ODYxIGNlNjRjYmE1MWMyYjdkOWUzYzA2YzU1OTJiNWYwNGRhNWMxODhmYWYgbGVnYWN5LXRydW5rCis2Njg2MiAwZGEzYzMwZmU5YjUyM2FhZjE3YzQzMGIxOGI2MGViNzA5YTk3OGE3IGxlZ2FjeS10cnVuaworNjY4NjMgNTUwZDc1MTYwY2M0ZjczODFiOWI1MWYyNWRmZTA1NTZiZDQzMTQzMCBsZWdhY3ktdHJ1bmsKKzY2ODY1IGEwMjU4YmFlZDAwNTdjMDY1MzU0NDE3MWY5YjdlNjE1MTE5ZDBkNzcgcmVsZWFzZTI2LW1haW50Cis2Njg2NiAwZTM1OWFmYzA2NDY4MTI1M2QwMWQwNGNhNGYwZDY3MzIxODA3MzY1IGxlZ2FjeS10cnVuaworNjY4NjcgMGI3ZTAyMzgwM2ZiMzcyZTA0NTI1MWQzYmYxODU2YzA0NDVhZTYwNyBweTNrCis2Njg2OCAyYTJjZGIyODU2NTZkZTJmM2Y2OTMzZjU5ODM2M2IyNWVkYzE4YTk1IGxlZ2FjeS10cnVuaworNjY4NjkgNjY1ZmEwNTYzMmY3YWI2ODNjYzRmYzU0N2JkNjc5N2FhYTg3Mzg4ZiByZWxlYXNlMjYtbWFpbnQKKzY2ODcwIDA4ZDZkZDY4NGE2YjMxMGYzZDRlMWI4Mzk3OWZjYjNhNzY2ZGNkNzEgbGVnYWN5LXRydW5rCis2Njg3MSAzZGQxNjUxYWYzNWRkNGJjYjI1OGVmMjhiZGQzNGZmYzA0MDZiNWRkIGxlZ2FjeS10cnVuaworNjY4NzIgMzQyZjcwMTg5ZWE5ZTViNThmYzk3ODUwOWZlMzE5NWJjMmFiM2UzYiBsZWdhY3ktdHJ1bmsKKzY2ODczIGMwYWM0Nzk4NGIxMTA0ZGRiYzBhMDc0MGZlZDQ3MjcyYmM2OWZmNDcgcHkzaworNjY4NzQgNzk2YjFiYjk1NTRjYjdlYTYyNTI1NjExMGJkNGM1YTFmZGM1ODllOSBsZWdhY3ktdHJ1bmsKKzY2ODc1IDVhMDkyMTAxZjA2OTYzZTI1MGU1YmYxNGI4ODlkOTU2NWFlNzlhY2IgcHkzaworNjY4NzYgYmRmNGRhNWQwNGFkOWJlNTM1OGMwZjRhMmFkNTVlZGJjN2IxYzQxOSBweTNrCis2Njg3NyBkM2RlMDgyY2EwMzE0YTllYTRiMTljOTRkYmVhMjMzZmVjYmRkNGU2IHB5M2sKKzY2ODc4IGU2NzAyYzFhMDdkNzUyYjNlZTU5NDdiODFmMzA3MDY0MzM2ZjY4MzUgbGVnYWN5LXRydW5rCis2Njg3OSAxODcwMDRkZjU3OWNiMDIxMGQ3NzE4OGEzZjA1ZjI5ZjBlNTZlZWUyIHRsZWUtYXN0LW9wdGltaXplCis2Njg4MCA5OWM3OGQ2MGJlMTI1ZTNlMzhlMDQwODU5NTg1NjEzMjIwYzI1YzNmIHB5M2sKKzY2ODgxIDJmMGQ3Mzg0Y2MxYzBhODMzZDFiZTFlOGFmN2EyYzYyZmRiN2ZjZmIgbGVnYWN5LXRydW5rCis2Njg4MiAwOGEzZTY4ZjFmY2JiMTFjYjVhMDQ2ODk0MWNkNmMyY2IwYjA2ZGNkIHJlbGVhc2UyNi1tYWludAorNjY4ODMgNzFmYTdkM2NjNGM1OWRiZWY3NjczNGU5ODZiMTY4NjFlOTRiYTJmYSBweTNrCis2Njg4NyA5ZmRmOGQ4ZGUyODc1YTdkNTU2Yzk1NDBmY2IzN2IyOTk2YzNmYTJkIGxlZ2FjeS10cnVuaworNjY4OTEgNjJjMjRkNGExZjhmNjIwOWEwMmNiZGRhZjFhMDAwNTdjNzMzNzhlNiBsZWdhY3ktdHJ1bmsKKzY2ODkyIGUxYTg4ZThiOTY0OWJmYWU3ZWZiZjc5MGZhZmY5Njc2YTBhYzU2MjUgcmVsZWFzZTI2LW1haW50Cis2Njg5NCBiMDllNzA1M2I0NzJjMzk1ZTA1YTRhYjliNGVmNWM5YzgzOTlhYWVkIGxlZ2FjeS10cnVuaworNjY4OTUgNWU2NjYzMjg2YWJjNTdjOWI4Y2EyNTU1MGIxMmM1NjBjYTU0NjkyOSBweTNrCis2Njg5NiBhYzg2ZTk1MzU1OGY0NDZjZDRmZjY2YjQxMjgyZjMzZmJjNjM4OWU2IHRsZWUtYXN0LW9wdGltaXplCis2Njg5NyAwZjBjMjI4MzU4M2VlYjg3MTAyYzE3MDFjYjY3ZTMyMTI3OWUyMTdmIHB5M2sKKzY2ODk4IDIzMmEyMmNmZGVhOGZhOTkzZmJhNDU3Zjg4NjFiZWQ2MTkyMDVlNDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY2ODk5IDg0ZjAxNzQyMGI5YjhlMWI2YTkxNDE5MDEwOWY3NWRmOTE2NTU3YjAgdGxlZS1hc3Qtb3B0aW1pemUKKzY2OTAwIGJiNTExNTllNzFkZmMzMTUyZTAzYTJiMDAyNjJhNjEwM2U4NGEyY2EgdGxlZS1hc3Qtb3B0aW1pemUKKzY2OTAxIGQxN2NmZWU0ZjIzZGVmYmVhNTM2ZTYwNTBhZjA0OTQzOTcwY2VlODMgcHkzaworNjY5MDIgZmRjYzhhMzEzNTM3NDQ4ZjQ2MGMyNGJlYzU5Y2FiZDkzN2I4OWNmOSBsZWdhY3ktdHJ1bmsKKzY2OTAzIDQwOWRhYjhiMWQzNDQ5Njk5MWY1OTJhZWEwOGYyZDAyYzI4M2JiNDUgbGVnYWN5LXRydW5rCis2NjkwNCA0ODE5NGQ3YWYzMmYwMjY4MWE3NzZmMGVjZTc2NzI3ZDU3YjJlNzg3IHB5M2sKKzY2OTA1IDBhZGY2YmRiMTcwZjk3M2NhNTdhZTgwN2ZkYzM5MTg2NmQ2ODE4ZjQgbGVnYWN5LXRydW5rCis2NjkwNiA0NzM3ZTVkZjUwZjRkN2ZlOWVhODJiNjMwNzBmMWNhZTc2MzlkNjExIGxlZ2FjeS10cnVuaworNjY5MDggMmExMDk2YjQ4MTdhMmY2ZmUyYzRkMGYwM2U3ZTcxZGRmNmQ1NzQzZiByZWxlYXNlMjYtbWFpbnQKKzY2OTA5IDVhZmM5ZmZhODBiYjc5ZWY2YjJiYzEzYzBiMDQyYzYzOGEyZDhkYTYgcHkzaworNjY5MTEgMDExMTFjNDA2MTZmNTkwYjkxZjI5YjI5YmEwMmNhZDg4ZTdkZDMxMyBsZWdhY3ktdHJ1bmsKKzY2OTEyIDkyZDA4OTAzMzVjMjQ5NDhjYTMwY2UxY2IzNWFlNmJmMWVhODVmYmYgbGVnYWN5LXRydW5rCis2NjkxMyBiOGZjNzkwYTI3YWVjOGI2OGIzOGI4MDIwYWI0ZmJmYjQzN2IzYjZhIGxlZ2FjeS10cnVuaworNjY5MTQgOGQyYTY5NzExYTk3Y2VkNWJiMDQzYWJlNDk5YzE3YzkzYzMxYjg1ZCByZWxlYXNlMjUtbWFpbnQKKzY2OTIwIGQwNjE5ZTIxMGFjNDJmZTA5N2NjMDI1MGM4YmNjZDBiNGVlYTNjMzcgcHkzaworNjY5MjIgNjkzODIxOWRjNWE2NDY0ODdiZmVjODI5NjA5ZjNiMTc1N2VjZjBjNCBsZWdhY3ktdHJ1bmsKKzY2OTI0IGQ3YTcyODQyMGIwM2E3YjM3ZTgxNWIzZDhlNDVkNzdhMzFjYzY5MDggcmVsZWFzZTI2LW1haW50Cis2NjkyNyAxOTkyOGU0NWQxOGIyMTdiZWFkOTQzNWE1NDcwOWRlZmU3MTRhY2IzIGxlZ2FjeS10cnVuaworNjY5MjggOWRlZGZiOGU1NjVjNDQ1ZDUzNGUxNzJjMGE5NDhmYTJjODJiNWRhYyBsZWdhY3ktdHJ1bmsKKzY2OTMyIDNjM2FiZDVmYzgzMzkyMzcyNDcyZDNkMmRjYTAzNWJhY2YwODI3NTEgbGVnYWN5LXRydW5rCis2NjkzNCAwMGU0NjdkYjYxODI1NDM2YmQwYzA1ODU5OTk5YTBiYTkyMzEyMDQ4IHB5M2sKKzY2OTM2IGE1NzgxNDdiYjVjMTMwNTU5NGYyZWNiMGY0Yzk4NWZkNTQ5NzMwNTAgbGVnYWN5LXRydW5rCis2NjkzOCA0NjIyNTIxMWU1MDNhMTk1NGJjODA2MWJhYzEyZWY0MzE3MjcxNDY5IGxlZ2FjeS10cnVuaworNjY5MzkgMjQxZTAzMzcxYzdlNDI2MzJlMjdlZjMyMjIxY2U1N2QxODdiMDJkYiBsZWdhY3ktdHJ1bmsKKzY2OTQwIDYwMjRlMGNhYmE2NDgwMmFkOTMyYmZjY2YxZTk1N2ZhMGY0ZmU5NjUgbGVnYWN5LXRydW5rCis2Njk0MSA0ZTJlNjg4NGZkMjg4NzYyMmFhZWJmOTU5YjYxMmYyNDdkY2Q1YTIyIHJlbGVhc2UyNi1tYWludAorNjY5NDIgOGE4OTEzMmI4NTlmMWViNGMyNWQyZDg0N2I1ZTMyYjEyMzIxNmM4OCBsZWdhY3ktdHJ1bmsKKzY2OTQzIGE1M2JiODMzMGE2NGM1MWJjYzBhNDhkNjhhMjQ2Y2RlNDA2MzUzZWEgcHkzaworNjY5NDQgNTBjODg2ZGFlZGYwZDgxNWQ2NDk5NTgyNjVmYzJmYWIyNjlkMjNkYyBweTNrCis2Njk0NSBjYTcyMjcxYzYyNGMyZGZiZWJjMGI2MDMyZjAxYjkyNDEzYzE0YzA0IHB5M2sKKzY2OTQ2IDJhMzkxMGE4ZGMzNzdhZmFkYzIxYjFlYzQxYmFjNWYxNjI4ZmU5M2MgcHkzaworNjY5NDcgNDkxZWQ4MGE4Y2MxNTEwMzEwZmMzMTJlMjZiMzJmZTgzZjc4OTQ2YyBweTNrCis2Njk0OCBjYmMzYWZjMWU0MGEyMDlkOGQ0NzAyZmZkNGZlZDBhMjQ0N2QwNTdlIHB5M2sKKzY2OTQ5IDJjM2E2YzlkZmY2MmQ1Yzk2MDA2NzkyNzRjOTY3ODgwYTE1YmIzN2UgcHkzaworNjY5NTAgNjQ1ZmU1NmMxMTdhYTYzZjkxZjBjMzQ5MTk3N2EwNWQ4MWQ5MzA3MCBweTNrCis2Njk1MSA0ODFhZDNkOWZmZDFiNjhkZjhkYTg1NzhlMjU3OTgxOTYyM2I2ZjBlIHB5M2sKKzY2OTU3IGY2N2RlNjFjMmNmYTkyMzg4M2VjNDJlMTczY2QxN2Y3NzE4ZGNjM2UgcHkzaworNjY5NTggYjU1NWQ0ZDk1NzVjNDU4ZTk3YzA1ZTk1YjhjYzM2YTI3NjNmODU4NyBsZWdhY3ktdHJ1bmsKKzY2OTU5IDY2YzU0NWY3OTYyNjkzMmMxYWJhM2JiZmNlMmJhM2Y4MTExMTM2MDYgcmVsZWFzZTI2LW1haW50Cis2Njk2MCBkZmNlNjJhYjA3YmEwYTFmNmNlNDcyOWQwNjIwN2NhYWQwZWQzNDRkIHB5M2sKKzY2OTYxIDgzZDA5NDVlZWE0MjI4NDA5MjY3NzViODVlZGRmMzNlNjE0ZTc2MjggcHkzaworNjY5NjIgMDEyMWRmM2NmNWEwMTJjMmI4MDYwZGVlYWM3ZjgzMzRmY2UxNWVlYSBsZWdhY3ktdHJ1bmsKKzY2OTYzIGJjMWY0MzI1MmM5MjIwZjkyYTYwMmVlNWQ3MTM2NTA5NDAxZmMyMzYgcHkzaworNjY5NjQgOTZlNzg1NGQ3YzZlMWExMmIyYWVjNWViNDhkM2M2Y2UzNzBjNzQ5MCBsZWdhY3ktdHJ1bmsKKzY2OTcwIDY4NGJmNzk5MDA5NGJjZmYxZDM4NTRkMjNkNWZlNDA4ZGFjY2M4OTYgcHkzaworNjY5NzEgZTg4NDFjMzQ2NjUxOTQ3MGQ0NTBhM2Y0OGFjZDAwZGVkMzY0NGFiNiBweTNrCis2Njk3MiA1N2UyYjVjNDU3OTVhODA1MGU3NDUwMzM1MzA0MDdjMWQzOWE0MDkzIHJlbGVhc2UyNS1tYWludAorNjY5NzMgZGJkNTRiYWMwYjZmN2NlYjVhOWExZTE0ZDM5ZmRmMzJhNzE1ZmFhYiBsZWdhY3ktdHJ1bmsKKzY2OTc0IDJlMzhjYTcwOWIxZDI5NmM3ZmZhODIxZmIwMmViZTczMjI2YTY5Y2MgbGVnYWN5LXRydW5rCis2Njk3NSAzZmY3YmI4MzA1MTljMjdkZTE1ZjBkN2FhMTg1MTgwMTJmOWVjZmFiIHB5M2sKKzY2OTc2IDI2YmMwY2QwMTA4YjQ1YjZkZWYwOTRjOTEzNjkzZDVkZjk0NjQ1MmQgcHkzaworNjY5NzcgNmNkZTJhMDUxYjI3OWQyMTBjNTY2MGJiZTBjZDI2YTgzYjg4YmU3NiBsZWdhY3ktdHJ1bmsKKzY2OTc4IDg5YmEwMWI2MTRlZWQzMTgwNjk4MGJkMjI5MDFiZTdhNDA3ZjI2YjIgcHkzaworNjY5ODMgODdlZjg5NjA4MjNhMTg0ODE2Y2VmNjVlNTE1MjU1MmJhNTYzNTk2MiBweTNrCis2Njk4NCA4NDk2ZjU0MDNhODIyNTEwNzA2NmIxN2QyNTk3NmMxNzg2Njc5MzE2IGxlZ2FjeS10cnVuaworNjY5ODYgNDE1MTM3ZDBlMjBhNTI3ZmUzMWJjZmI0Y2NjMjNiZmI3YzIxM2RlZCByZWxlYXNlMjYtbWFpbnQKKzY2OTg5IGMyMDhmNWMxZTRmZTdiNzMyYjI0NTZlMDI5ZWI4MzdlN2FiMzJlNmMgbGVnYWN5LXRydW5rCis2Njk5MCBjMWRjZmY3NTk3NmUwNTQ2YmY3NjRkODExOTMzMDVkYTU5NGJjMWUwIHJlbGVhc2UyNi1tYWludAorNjY5OTEgMWViMTcxMjJiNGNjYjdkZmM1YjE2ZGMxZjJjNjQ4ZjBiMzllYzJiMSByZWxlYXNlMjYtbWFpbnQKKzY2OTkyIDgwZDJkNDY3ZjIzODg2ZDdkNGY3NWZlZTg0MGUzNzk3ODkwODQ2OGQgbGVnYWN5LXRydW5rCis2Njk5MyBkZGQwZjhjY2U1NWNkMjA4MmE1NWI5YjYyYmFjNzhmMDM4Nzg3MTYwIHB5M2sKKzY2OTk0IDBhZmE3M2Q0YmY5OTQ3ODEzMzkxZDE1MzdhMjM3NmM2NDJhZGQ5N2MgbGVnYWN5LXRydW5rCis2Njk5NSAxMjQ5ODQwYTQyYjJkYWVhMmE1ZDc2OTA1N2Q3NmUxYjc0YmYyOWI1IGxlZ2FjeS10cnVuaworNjY5OTYgMTk2ODc4MzAzMzhmYmIwZGE2OTdlMTY3ZDYxNTc1NzBmOWY5NGNhMCBsZWdhY3ktdHJ1bmsKKzY2OTk3IGRmNzQyMjQ2MDY2MDY4OTFiNjEyYjE2YzE5YjBkMTczZDg1ZjY4MWIgcmVsZWFzZTI2LW1haW50Cis2Njk5OCA1NDc5YTg3N2JhMjgyNmEwZDAwYjk1YzAxYTlmYjllMGRjMmRiMGNlIGxlZ2FjeS10cnVuaworNjY5OTkgZDg0N2M0ZmI3YjM5OTNiNmJjNDk2YjY2OWViNDNhYTNlMDNjYTM1NiBsZWdhY3ktdHJ1bmsKKzY3MDAwIDcxMjg0ZTkxNTcwNjNiYTdlOTQxYzlkYzA3N2IzZjA4YThlYzAxNjMgbGVnYWN5LXRydW5rCis2NzAwMSBjNmMzMjg0MmU3MWRjNDc5NDI1YjQ4MzY3ZTM0NWI0MjdmZWI1MWYwIHJlbGVhc2UyNi1tYWludAorNjcwMDIgNzE0ZDNjMTQ0M2E3NDZkOGZhZTMxODQxYmUyZGM2Nzk0OGEwODAwZSBsZWdhY3ktdHJ1bmsKKzY3MDAzIGJiYWIxMWNkYjE3NTYxMDA2OWQxZjMxMDk4ZGUyMmMzYzk3MDg5MDUgcHkzaworNjcwMDQgMDU3MTVmMGNkN2U3Nzk0MzRjMzdlNDJmZDkyNjQzOGQ0ODUyN2Q4ZiBweTNrCis2NzAwNSA4OWFlOWQ3ZDE4ZDdiY2RlZjYyYTlmMTg4Y2ZhYWQxMjYwMzNlNzczIGxlZ2FjeS10cnVuaworNjcwMDYgMmE4NWU1YzllMWUyYTc3Zjc4YjczZTdjZmNmYjRiZjc0ZjY1ZDBiMSBweTNrCis2NzAwNyA2M2YzZjA0NWZlNDhhMGM2NGExMjgyOWFlYzdiNGUxN2MyZjdlNzc4IGxlZ2FjeS10cnVuaworNjcwMDggMGJjMmNkMmQ5NTk4MmIzMjU5YWIxNzA0ZThiMzQwZTMyZGU5ZjYwYSBweTNrCis2NzAwOSA4YjY1ZDEzYzE3N2M2YmRhOGMwNGNlNDZhMjRlZGIzODkzYzE2ZDQ0IHJlbGVhc2UyNi1tYWludAorNjcwMTAgMzFhNjllZDA5ZmJiNDBlMTRmMTJhNTNmMTE4ZDlkMWQwOTVlNWI0NiBweTNrCis2NzAxMSA4NDIwYWY2YzMzZWRkOTMzZGFhOTljYWZmOWI4YWRjNWMwNGFiOTgyIHB5M2sKKzY3MDEyIDJhMzg3NzFjZWNkZDVhZDM3NDIxNWQ2ODZlMGIxZDQ3YWM2NDhlYTYgcHkzaworNjcwMTMgNjYzNDUzMGEwNGUwMzQ1MjFhMmZkMDAxMDY1OWI2OTU3ODNhYjdkZCBsZWdhY3ktdHJ1bmsKKzY3MDE0IDFhNDg3YWIwZDY1Yjc0MjlmNWYxNzAxMTc5OTFkYzIwNTkzYTliMzAgcHkzaworNjcwMTUgYmJlMzczMjIxMmQ2NGU2ZjNiMDAwNjVjNDExYzA0YzIyNzMzYjdkMiBsZWdhY3ktdHJ1bmsKKzY3MDE4IGY2NjY4OGU2OWY2NmJmNWViMjVkYzM2YTNhNzMzMmNhMzk4ZTU1YWMgcHkzaworNjcwMjYgNGE3NDU5MGYzOGRhNWIyMGQ0ZDU3YmIwMTE5YjNjMjg2M2VjMDVmMSBweTNrCis2NzAyNyBkZjJiYmRlOTY4ODAyZDljYmFiNjNmMTM3YWU4YTVhZGM0N2MzM2FjIHB5M2sKKzY3MDI4IDE5NWNkN2ViZjYyY2RiYzE1NTZmOWVhOGY1N2UwY2QxNjZhOTBmOTIgbGVnYWN5LXRydW5rCis2NzAyOSA4NjA3MzdjOTZlOTc4MmEyMWRjNDBkYzkzNTAxNGQ3ZjVhMGFiMzk0IHB5M2sKKzY3MDMwIGE1NzY4YmQ2MjkzOGI5ZGY5Yzg1YTJhMGIwZjIzY2I0NjdmMWU0YTcgbGVnYWN5LXRydW5rCis2NzAzMSAwYTE4OGEyZDUwNDg4MmFhMjliZGUwNDljMzRiMjU3OGE0N2VhMzQ0IGxlZ2FjeS10cnVuaworNjcwMzIgMzBjMGIyNjZhZjA2MmMxN2M2ODEwNjcyNzI2NWJjMzVmZmU2ZDkxYiBweTNrCis2NzAzMyBlODBkOWU2ZTI2YmJkMWY2MTcxYTdlMTdlZmVhNjdmMzU3NzZkOTdhIHJlbGVhc2UyNi1tYWludAorNjcwNDAgNDBmZDZlZjBlYWE4ZjMzYmNlY2UzMjAzMmQyMDkwY2NjNjI2MzU5YiBsZWdhY3ktdHJ1bmsKKzY3MDQxIDhiZGU4ZjUxYWRlMTRkZTQ5Y2FjYTMyYjkwOGVjOWQyNmRkNjI4MzYgbGVnYWN5LXRydW5rCis2NzA0MiA0MGQ4ZmIxMjkzMDZhZDRmMzhjODFiM2JhNzE0MzkzY2IzNTllZjNhIHB5M2sKKzY3MDQzIDRiNzI2NTAwYTk2OTljZmQxOTUzOTM2ZDFmM2YxYjIyNTA4M2JlOTUgcHkzaworNjcwNDQgODA0ZTYzNjU4MTdjNGIxMmNjMWFmNGJmNzdkYWEwNmU5OGUzMDA2ZSBsZWdhY3ktdHJ1bmsKKzY3MDQ1IDJhYTY5YjlkMTI3MzhkZjIwZjA4YmM0MGRkZDA2OWZlMTBjODAzMjUgcHkzaworNjcwNDYgMDIxYmM5Zjg4MTAzNDlkYzhiZmU2NmE4NDJmOGYyMzI5MDNjZTY1MSBsZWdhY3ktdHJ1bmsKKzY3MDQ3IDM0ODVkOTU5NTdjMWQyYzU4MWUwMWYxM2IyZDQ5YmJlNjUyYTJmNGEgcmVsZWFzZTI2LW1haW50Cis2NzA0OCA3MTEzOTBkNGFjMjEzOTBiMGM2ZDFkZTI5ODM3MmVmMDM0MzQ5ZDI2IHB5M2sKKzY3MDQ5IDI0ZjY1ZTMwOTBlODBhMjJhZmRlNmE4OTE3NDkxOTg0MWUzNWI5MTIgbGVnYWN5LXRydW5rCis2NzA1MCBiYjEwOWM0YmVkMjc2YTMzZWFhY2M2YzA5NDAxNmNhZWYxZmU5YWMyIHB5M2sKKzY3MDUxIGMwYWZjNGVlYmE3ZDZhODQzMzU3NTc5YzUyYjc1OTQxMjI1YzhlOWIgcHkzaworNjcwNTIgNmEyMGU4YzE3NDVhOTg4OGZmOGE4MDA3MjBiMWVlMWQ5NzhhZjAxZCBsZWdhY3ktdHJ1bmsKKzY3MDUzIGIzZGY1OGY3NmU0OWQ4N2UwY2YzZDk3MzQ3YzhkMjc2NzJhOThkYjYgcmVsZWFzZTI2LW1haW50Cis2NzA1NCBkMmVjNmQ1YjJkYjk3MDFiYTA2Mjk1MzI1ZTg2NTkzOWE2OWQwNzBiIHB5M2sKKzY3MDU1IDlmYzU3M2ZiYWY1ZTM0YmRhY2RmMjRlNDMwOWFmOGFhMmZjNzVmY2EgcHkzaworNjcwNTYgZThjMGE1YTY0NmNhNmNjZGEwMzFlYmZhZDA5MTUxM2EyOGJlZTllMSByZWxlYXNlMjUtbWFpbnQKKzY3MDU3IGVmZWY1ZmM0NWE5YTQ3NzI1MGJlZmNkN2RlZmViNGVlMDUyYmY4ZjYgcHkzaworNjcwNTggYzMyMzEwMjczN2JjMjNjYjhmZmU0OTFmYTlhZTNhNzk2N2VlYTI0ZSByZWxlYXNlMjYtbWFpbnQKKzY3MDU5IGE1Y2E4OTUxYmVmMTcyOWI3ZjVkNGRiNzYzMjJmZmFhOWU0MDBhYTIgcHkzaworNjcwNjAgYjBjY2NiNTU5NDFjNDE3MGUxOTVjMmQwOGY2NTI0MGEzY2JkNWZhYSBsZWdhY3ktdHJ1bmsKKzY3MDYxIDgwNDVkNTU5NmIxYzhiOTMzNDA1NzA3NGUxOWM4MjQ2OTBmYzczNTUgbGVnYWN5LXRydW5rCis2NzA2MiA5Yzk3YmM4NjEyMmEwZjdjNzgzMjI1ODRhYTdhNmJlOGU1MThkYzViIHB5M2sKKzY3MDYzIDA2Y2YyY2VhMzg3YjdlNDUwM2ZhYmM5NmQ1ZGY4ZDUxNjBiODQ2MDEgcmVsZWFzZTI2LW1haW50Cis2NzA2NCAzZTJkZTQ4NGNlMzQyMTdjNmRhNDdlYmFjMTQ4Y2IxMGRhZDJlMDAzIHB5M2sKKzY3MDY1IDk2NDE4ZjgxMmYwNjgwMGUwNzc5NmM3OTMzNmU2YjJhMzk1ZDQ0MTkgbGVnYWN5LXRydW5rCis2NzA2NiA3ZTQwMjYzZGJmZDM0NTQ5OTI4NWZiYzkyZjgyNGYyZjY0YjZmMWMwIGxlZ2FjeS10cnVuaworNjcwNjcgNmNhYzJlMzA3N2EzNGQ3MmEzZTE4MTlmYjRiYmFiNTA0MmNmNjhmMSByZWxlYXNlMjYtbWFpbnQKKzY3MDY4IGYzMjM0ZTQzZTFmZTgwYTI5NGE4NTE1ODgxYmE2OTgwMThjZjQyOTMgcHkzaworNjcwNjkgOTkwNmY2OTZiOTQxOTVhZmFmMDU2OGQxYThkZjliOTU2MDI5ZjU0NSBweTNrCis2NzA3MCAwZGZkYjUyYWJkZjlmOTU4N2IxMDdmYTIzOGZhOTg4YTcyNjI5ZGRiIGxlZ2FjeS10cnVuaworNjcwNzYgNTc4YWE0M2RjNDAwNDMwNzUwMThlNzdmOTJiNmMzMjFiY2ZiMzEzZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjcwNzcgOTFhYjQzNTQ0NDBlZmM4MTQ0YzUyNGEzMmNkNmMyMzMwZDRkMGMzNSBsZWdhY3ktdHJ1bmsKKzY3MDc4IDJlZDNmODkyNmJiODkxYzk5YTg0ZDFjMTBjOTA3NGIwYjExZDE1ZDMgcmVsZWFzZTI2LW1haW50Cis2NzA3OSA0NWFjNTE5NmZhNjc5ZGZhZTE5OTRlMDg3ZDE2OWYxNTczNWEyNWE4IHJlbGVhc2UyNS1tYWludAorNjcwODIgMTE4NGFiYzVmOTZjOTZkNjEyZjNlOTZkMTA0MWFjZjI1MDU2ZDk3OCBsZWdhY3ktdHJ1bmsKKzY3MDgzIDAwZTcxY2Q4OTEyODRhNTdjZWYwYTk2NTg1N2QyZTYzOTQ3OTVkZGMgcmVsZWFzZTI2LW1haW50Cis2NzA4NCA0NTA0NmYwNzIyN2FkM2FmMjcxZDUxN2FmMjhhYmU1YjE5NjY4YzQ4IHJlbGVhc2UyNS1tYWludAorNjcwODggYmQwZTlhOWNkMjgzYTU1NDBhZWNmOWYxYTBiODc1Yjg2MTE5ZTU2ZCBweTNrCis2NzA4OSAwZGVjNTRhYTUzZWU3NWUzN2FmNmExODJiNTliZTAyMTJhOWY2ZGE2IGxlZ2FjeS10cnVuaworNjcwOTAgZjg0OWM1OWJiZmQ3NjRmMDI1M2Y0OTU5Y2QxMzZhMDg5NGQxZWQxMiBweTNrCis2NzA5MSAwYzhmYWY2YzhlYjI5NjBkNGFiNzM4MDFiYjFhODMyZDY3OGRjM2JmIGxlZ2FjeS10cnVuaworNjcwOTIgNWY4MDFhZGQyMGZiYmMzMmM2OTllNDVmOWVmNGExMWI2OGMxMzQ0YiBweTNrCis2NzA5MyBmMmJiMTMzZWY1MTdkNDUwZDAyZmE2Y2ZmYmJmNWVlYWEzZmVlZGMxIHB5M2sKKzY3MDk1IGY2N2IyYzhmYTkzYWQyMzIyZGQyNjllN2MxYTlkNDZhNjMzZmU3ZjggcHkzaworNjcwOTggZTY4ZTQyYjE3ZTVlMzQxNDQ5MDNlOTNhNGM1OTA1YTQ2YmRkMDVlYiBsZWdhY3ktdHJ1bmsKKzY3MDk5IGE1MjllM2RjNjk1YThiNmVkZGU0OGJjMWRmODhmYTAyMTI5MzQzYjggcmVsZWFzZTI2LW1haW50Cis2NzEwMCBjMDg5ZWI2NGVlNTc2ZTU3YmRhZjMyZWMzMGU4YjZlMzAyMGQ5MDQ1IHB5M2sKKzY3MTAxIDk3MmI0MDU0NmQ3OTU1NGYzYTg5NzFmMGYxNmVmMjkzODAwN2ZjMjYgbGVnYWN5LXRydW5rCis2NzEwMiA1MGU3ODIyYzk1ODVmZWY1NmVkNjY2MTFmYWM0Yjg1NDJhZGUzZTkzIHJlbGVhc2UyNi1tYWludAorNjcxMDYgMjNkOWNiNzc3ZDlhODE2YTI1NjJkZThiNzdmYWVjNDVjM2Q0ODEwNSBweTNrCis2NzEwNyA5OGYzMTc1NjQ2MjAzZWY0ZWEzOTBkNDM0NTRiYmRlN2VhYmYzNmZjIHB5M2sKKzY3MTA4IDQwMGZiYzgwNTJhZGVjYzE3NjkyNjg1ZGIzNTMzOGIzY2I5MTUxOWEgcHkzaworNjcxMDkgMWJjM2QxYjM5YTRiNzk1ZTI2NjUzZjdjNjY5ZWQwMmFjNjE4M2IyZiBweTNrCis2NzExMCBlMmE0NzJmM2I3N2Y2YzEwZWE0NTUxN2YzOTE4YzhlYzE5MTkwOGZkIHB5M2sKKzY3MTExIDViNGNiOGNkNTA1MWY3YTAxMzk3OWI0NjQ3YWIxYThiNDhjMDJmNWQgcHkzaworNjcxMTIgYWE2ZTY0OTU5OWFkMDkwZGY5MTJkYTY3MTRkNjg4ZGMzMmJjYzc0NyBweTNrCis2NzExMyAzYTk0NzY4YTJhOGJlNWQwOTI4MDZkYzY4YTVhYjFhZWNiMTcyYTBkIHB5M2sKKzY3MTE0IGQ3MTk2ZmI5NGYyNWZjOGRhNWM5OTM0ODBkNWUwNTUxNDE0NzNiZTQgcHkzaworNjcxMTUgNmUwYTM2MTA3OGU1MjE2OGFhNWVjOTJhNzdjMzg5YjY0YjIxY2E5MyBweTNrCis2NzExNyAxYzIzZTcwMDE1MDY3NDA0NGEwNmVjNzA3YzJhZDFmMjkxY2Y2MjY0IGxlZ2FjeS10cnVuaworNjcxMTggNzljOWFiNjQ5OGZkZmI5ZGZmYTMzMjQ2NGZlNDg3NWE3NDE0ZGZhYiBsZWdhY3ktdHJ1bmsKKzY3MTE5IDlhM2U5MjQzYzUxODliZTY0NTYwMjkzZmIzMDI3NjNlNTU1Y2YxN2UgbGVnYWN5LXRydW5rCis2NzEyMCAyNmYwMWVlYWY1NGU4MGU5Y2RiYmVjMGI4OWM4ZjNlYWI4YWE4NzNmIGxlZ2FjeS10cnVuaworNjcxMjEgZjNmNjUwYzdkM2FhYzYzY2JiZjY2YmYwNWY1NmFkZWU3ZDcyMjgzZSByZWxlYXNlMjYtbWFpbnQKKzY3MTIyIGY3ODY3Yjc3ZGM1NTc4MTgxZDE5NmIyZmY0ZGEzZmI1ZjAyZTY1ZDcgcHkzaworNjcxMjMgODM3MGU5ZWY3ZjBmZGM5NjdkOTlhNmI5MmI2YjdhMmUzNzFlMGY2ZSBsZWdhY3ktdHJ1bmsKKzY3MTI0IDdlNjNmZWIzMGVhNWRkYzY5MDU5OTMwMTliZWQwOTViZDMzM2YwNmUgbGVnYWN5LXRydW5rCis2NzEyNSAyMTBjNTg1Zjk1YmVlNmY0NTlkMTEzNDY0Y2ZiYjJjODc2NDg5ZjVkIGxlZ2FjeS10cnVuaworNjcxMjYgMTA0NTM3YTU0MTk2NTBkMzc5OGY1YWZkOTA3N2U4YWU4ODNiM2MyOSByZWxlYXNlMjYtbWFpbnQKKzY3MTI3IDMyNTYxODc5MjVkMWU5MWVmMWUzMThiMTlkMmIzZWRlZjlmZWQ3OGUgcHkzaworNjcxMzIgMTRkNDQxMmQyYmY4NDgxMzBlYjlkNmI1MWFlMDJhYThkOTBlMGNlYSBweTNrCis2NzEzMyA4MjgwOTQ4NTkyYmIyY2RkZDhhMDU0NTU4OTY5NmQ5MGNmYzA5NDQzIHB5M2sKKzY3MTM0IDk3NGNhZjE2N2ZmMDQ1Mjk2MmMwYjUzMmE2MGJjZGRhODU1Nzc3ZjYgcHkzaworNjcxMzYgNTM0YmU4MDY2YzM2YTZhZmMyNjFiNWJmYzdjNzYyMDBkNTRkYTFiOCBweTNrCis2NzEzNyA4ZmFlNDY1YTM5NjI3YjU5MDM4NTQ2MmU2MDk1ZWI2M2FmNDUyNDBhIHB5M2sKKzY3MTM4IGFjNDJkYzlhMDIwM2VmYjM3ZTY1Zjc3NzM3ZmQxOTQ0YTkxODAzMDkgcHkzaworNjcxMzkgOTJiYTEyZjkzMjgyMzg0YTIzOGMwZmIwNTY5ZTdjZjQ5MWYwMzJkZSBweTNrCis2NzE0MSBkMmY3MzIzZmI3MDk2NWJlNjIyYWZkNGNjN2E1NDIxODUwNTc5YzRjIHB5M2sKKzY3MTQzIGM5ODNmYTY4ZDZmZjI1NWNmYzdiMmE1OTA1MTg5YzNhNTU3M2MzZTUgbGVnYWN5LXRydW5rCis2NzE0NCA2MjM4YjZjZjc3ZjEwNTdjZWFjNTFhNGQ2NjE3ZjU5YjQxODBkZmJkIHJlbGVhc2UyNi1tYWludAorNjcxNDUgZWE4N2U4ODE0MzU5YjM4ZTc3MThiYjAwOGM1MDk5Y2UxYTg4Y2Q3YyByZWxlYXNlMjYtbWFpbnQKKzY3MTQ2IDgyY2NjN2U3N2VjNTU3M2Q1NjhkMmY1MTU2ZDVmZDVjOTBkM2ZmMTAgcmVsZWFzZTI2LW1haW50Cis2NzE0NyA0NzlkYWQ5ZGM5NmMxZThkY2Y2MDQ2ZGNjNWNiZTllMTc4MjhmNjRiIHJlbGVhc2UyNi1tYWludAorNjcxNDggMWY3ZjQxZjIwYWM1OTY2NmQ4NzdkZmRjOTI2YmMyZDE1MTMwYjEwZSBweTNrCis2NzE0OSA5ZGE1MjlhM2ZkNWFlNzQyZDI4YWVlNWVmM2Y4MTcxODI4Nzk5Y2IzIGxlZ2FjeS10cnVuaworNjcxNTAgZmFjY2I5OGQ5NDc0ZTNjMzUwNDA4M2YzNDdjOTFhMDcyY2I4MmQ2NyByZWxlYXNlMjYtbWFpbnQKKzY3MTUxIGFjYjc4ZWNlNTZhOWUxMDJmYzllNjc2MjViMmU3NGQ5Y2FjNTUxY2UgcHkzaworNjcxNTQgMzE3MzcxN2E4OWYzMTdjYTcxMzg4MjkxMTEyMzgyODI4ZDAyMjZlMCBsZWdhY3ktdHJ1bmsKKzY3MTU3IDU3MTkzODA1NDcyMWRiM2ZmZjNlOWIwOTNhOWU1M2IxYTk3MGQ0YWEgbGVnYWN5LXRydW5rCis2NzE1OCAwMDhhY2IwY2JiZmMyOWVlOGM5NGUyZDAwZWM1ZWMyZDAwODliMjhlIGxlZ2FjeS10cnVuaworNjcxNTkgNTgyMzViOWRjM2FlMjRjODk3ZGIxZjdkZjk3OWE0ODU1NmUwMzJlZSBsZWdhY3ktdHJ1bmsKKzY3MTYwIDZmMDY1NzFhOGFlZmFmZTk2NzA5MjU3YjdmMTc5YTQxYmY4YmZmNjkgcHkzaworNjcxNjEgZDBhYTEwZmYyOGM2NTcwMDY1NzBiMzVjODI5NWQ1YTU0MGVhNThmYiBweTNrCis2NzE2MiAyMGE0MDg5NDUzOWE0OGExYTdhMWZlNmFiNDJjNWVkYjVmMDc0ZGVjIGxlZ2FjeS10cnVuaworNjcxNjMgZDM0Y2NiMDM0MWVhNTNhYTg2YmMzNzBkYWQxNjQ0ZDBmMTA5NjBlZCBsZWdhY3ktdHJ1bmsKKzY3MTY0IGVmODgwZTJjYzU2OGNjY2Y5OGI4Yzk0NTMyZTAzNmM1N2UyY2I3NmMgcHkzaworNjcxNjUgNzFmNTNkM2QxNTUxMjFjZjAzYThlYjc3MDg5MGMzZjIxYzA1OTIyNCBweTNrCis2NzE2NiBiYzRmNzQyZTJjMWQ1Mzg0NDUxY2M1ZGNlZDViMjk1MmZjZTI1MTFkIGxlZ2FjeS10cnVuaworNjcxNjcgZjA3YjgyYTMyMWZlMTkwNTUzNzk4NDdkNTU3ZTdiOGU1ZGE5OTkzMCBweTNrCis2NzE2OCA3NjgzMmMwOWQyZmRjMWIwNjllYmYwZjYxYTI2Yzc1YTQ1ZmQyMzZlIHB5M2sKKzY3MTcxIDJlMDg1N2IwZmM2NzU3ODQ0YTllMGRkYjU2N2JhNDVjZGY3MDllMjYgbGVnYWN5LXRydW5rCis2NzE3MiBjZGRkOTE4MGI4Yzg4MDYyMjcwNmFkN2I0ODg5YWJlYWQ1NWQ4NTkxIHB5M2sKKzY3MTc0IDIxMTE1MWZkYzkyNDQ0MmNjYzNjYWNlNWVjMGZjYThiZDQxYTMwZTcgcHkzaworNjcxNzUgMmJiMTJjYTJmZjQ0ZTExYjhjM2RjYmE4NDI0NjU3YWY5ZWIzOTY3YyBsZWdhY3ktdHJ1bmsKKzY3MTc2IGMyYTc1YmE0NmYxNGQ5ZmMyNmQ0YWVjN2U2Yzk0ZTU1N2JkNmMwNDggbGVnYWN5LXRydW5rCis2NzE4MCBhZTgzZDRhYTNlMGVkOTc0M2NjMDNmYjNhYzhhOTY0NWJhODYwNmI4IGxlZ2FjeS10cnVuaworNjcxODEgMmIzMzQwYjVjYTM4NmI1MjQ2N2E1YmVlYjNmYWY1NzkwMGNiOTA5ZiByZWxlYXNlMjYtbWFpbnQKKzY3MTgyIGIyNDgxYTE1Mzc2MzQ4ZmY4MWJjZjFjZDAwNTE3ZjM5ZjQ3YmU5ZGQgcHkzaworNjcxODQgYWNmNjllMDc5Yjg0NmI1YzNkODRlNDBlNzlhOTRlYzFiYThmYWUzOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjcxODUgNTRjYjUwMWY2MjE1YWJkY2NmOWU0MTE1NTJhMGFmZTMzNjRiYTI3MyBweTNrCis2NzE4NyAyMThhOTg5ODExODNkMmEzYzdmM2QxNTg3OWUwZmExMWMwOTI4NDg4IHB5M2sKKzY3MTg4IDYzZWEyMmI1OGQ1NDI1OTIxOTY2ZGYwNTljZjIyYjNlZmY4YzE5ZTQgcHkzaworNjcxODkgNzQ0MGEzMGEyZjEzNDAzYTQyN2UxMjBjYzZmMWY3ODgwYmFlMmQ1ZCBsZWdhY3ktdHJ1bmsKKzY3MTkwIGZiNzI1MzY2ZjlhYzhiZWQ0ZTMyZDY2ZDdlYjkyM2E1NTVjNjgyOGEgcHkzaworNjcxOTIgYjA3MTNmYmM1MDYxYmFhMjUyYTQ0MGIyODg2NTc0ZTkyY2UwOTg3YyBweTNrCis2NzE5MyA4MTE5MGNiMWNhZTI5MzA2YTIyODJkMmUxNmFjNDUwZDY1YWQ2MmU0IHB5M2sKKzY3MTk0IGYyYjQzZDI4MjUxZGNkYzAyMGI4ZmVmNjM4M2VkMmNhOWM2ZDg2NmMgcHkzaworNjcxOTUgMDNlNzRkZDljYzgzZjU5MGY4NWQ5MDI1YTI5NjkzNjZkNmM1NzczNyByZWxlYXNlMjQtbWFpbnQKKzY3MTk2IDhkNmUyNDk5NzI2YTUyODEzYTEzMDE5YTA2YjI3ODk4OTcxYTUwYzkgcmVsZWFzZTI0LW1haW50Cis2NzE5NyA2MWEzMzA1MDQ0M2QyMGYwZDI0YWY5MjI3OTEyODA1NmY5ZTlhOGI2IHJlbGVhc2UyNC1tYWludAorNjcxOTggOTc4MWVlZjMxOTJjNmFiMmNjYjI1Y2Y4YmYxMTg1NmUwOWUwZmUyMyByZWxlYXNlMjQtbWFpbnQKKzY3MTk5IDIwMGM4YWFiMTkxNzZmYmY3MTg2MGQ0NzAyNmJkYmRhNjRhNzg2MTIgcmVsZWFzZTI0LW1haW50Cis2NzIwMCBjZTcyMjRjZjg3YmEyMGY0OGMwZmUwYzhmOTg3MzFhOTVlYzk2NWZjIHJlbGVhc2UyNC1tYWludAorNjcyMDEgMjMyODVmZjEwYzA0ZDc5MWI0ZTcwMWE0ZGE3MjExNThkMmQwZDRkNCBweTNrCis2NzIwMiA5YTEzZTk2Njg4OWNiNDRjODdmNmY4MTQ4ZjZkMWUyMTcwMGExOTYxIHB5M2sKKzY3MjAzIGNkMDhiMDBhY2Q2YTFjYTUzOWIwMjcwMGMxNDU2NzU4ODliOTBjODYgcHkzaworNjcyMDQgOTg2MjhkYzczMGRhZTc3MGY0MTgxMDRmODdiNGIzMWM5YTQwZDcwZiBweTNrCis2NzIxNiA0OTRiYjk2NzEzOTE3OTA1ZWNjZWQ0ZDQzOTZiZDliYjEzNDQ2ZmM3IHJlbGVhc2UyNS1tYWludAorNjcyMTcgMDU5ZjExNmEyODE5NGY4ODM2YmQxOWQ5Y2I3N2NjMjI0ZTZiZDJhNyByZWxlYXNlMjUtbWFpbnQKKzY3MjI0IGMyNzcyY2JmZTE4MWUxZjNhOWI2MmFiYmU0YTdjMzI3MjQ0NzQ2YjUgbGVnYWN5LXRydW5rCis2NzIyNSAxNjYwMGNhY2UzMTVkYzJjMWQ3MmYzNDBiODc0OTFiMTBlMDYzNGY0IGxlZ2FjeS10cnVuaworNjcyMjYgMGFkMDcwNzg0MzNhMzg3OWM1MDA2MzA2YTI1ZWQ3NjU5NmFiYmZjNyBsZWdhY3ktdHJ1bmsKKzY3MjI3IDRjNDYzMjNhZmFiNmY5OWNiZTlmMzkyODZkOGM5NWE5MzY1NzA3YmQgbGVnYWN5LXRydW5rCis2NzIyOCBkYmU0YjE2ZjgwNGJhN2JkMTExNTNhOTFhNGI1NmViMDcxNTUxNTljIHJlbGVhc2UyNS1tYWludAorNjcyMjkgNDIwYTVlODNlMDJlN2I0YzE3NWVhNzY2OGQ2MjNkNDlmYWNlOWU0MyByZWxlYXNlMjYtbWFpbnQKKzY3MjMyIGM3MDdkYTM0MzU1NzhjZGJhNTAyNmI1MzAxY2QzNWNhNGEzZTg4YjggcHkzaworNjcyMzQgZTc0ZGQ1NDE4YTMzZmIwMDBiOTMzOGE5YTM1YzRkZDZlMDAyZGIzNCBsZWdhY3ktdHJ1bmsKKzY3MjM1IGI0MjhlOGY2YjE0MzQ2MjNmNmUxZGZmZTg0MzQ0NGFkNDAyMjUwZTEgcmVsZWFzZTI2LW1haW50Cis2NzIzNiA3ZGUxYjJhZDM4MDQ4NWQwZTk3Mjk4YzZjYjQ5YzIyY2E4MmE0NzhkIHJlbGVhc2UyNS1tYWludAorNjcyMzcgYjBmY2IxN2Y3ZWZhODE1MjZkNjg3MDBkNGE3NGRjYWE4OWVkOTQxZCBweTNrCis2NzI0MSAxZTQ0ZWE1MTZlMGU3MGM1Y2E1MmQzYzNiNTE4YzUwMjhmYjZmODNlIHB5M2sKKzY3MjQyIDYyMGEzNGRjMTBmOTA2NjM3Y2VjNTA2Y2ZjYTkwYjg1ZDVmZjE1Y2EgcHkzaworNjcyNDMgNzU1OWEzMmNjMzBlZjk2MDU0ZTBhY2RkODk4MjJiMDY5ZDc5NTI3NyBsZWdhY3ktdHJ1bmsKKzY3MjQ0IDY3NGVmNGE3Y2Q3MzAxNzVmNTgzYjdjMzcwNDg2YzExZTBlZmVkMmQgcHkzaworNjcyNDUgNGIzMjE5OWE4YWZlYzU3ODVkZDZjOWViN2I5NjBkMmMzODBkZTdlMyBsZWdhY3ktdHJ1bmsKKzY3MjQ2IDA4MTM1YTFmM2Y1ZDg4NTBkYzU1ZDgzZTM2Zjc5NzlkY2NiMmRhNjYgbGVnYWN5LXRydW5rCis2NzI0NyA3M2I5ZmUxYzUzOTczZDNlZmYzN2E2ODhkYjkyMWE0MDQ1NDYwZDk4IHJlbGVhc2UyNi1tYWludAorNjcyNDggMzU2YzNlMThkYTVlODQ4YTlmOTkyMmI2NzA3ZDczZGY3ZDYzZGQ0YiBweTNrCis2NzI0OSBhNWU0MWE3OTQ5NTQ0Mzc5YWZlN2IxMzJlNTE5YzliMThjZTljNjE3IHB5M2sKKzY3MjUwIGZjNDZhYmYxNzBmZGQ4ZDc1Y2Q5YzZiOTk2MzQxYjFiZDVmM2IwZGUgcmVsZWFzZTI0LW1haW50Cis2NzI1MSA5MzZhNmU2MGYzZWI3YTNiZTQ3ZmJhYzI2OTViYTQ2ZmMwZDUwZTUxIHJlbGVhc2UyNS1tYWludAorNjcyNTIgZjM5YWNlYmNlNjI4YmUxZjk4YzkxMDhiMzYyYTdlMTZmMTM3NGNlOSByZWxlYXNlMjQtbWFpbnQKKzY3MjUzIGVkMGRhYzI2YjM5NmRhM2ZiNzc2NDQ5YTBlNTZlY2NjNDNlNDk4NzEgcHkzaworNjcyNTYgZTJkMmE3YTZlODMxNWRjODI2N2IzNmM0OGVmNzFjMGRlNDJlYmE1ZiBweTNrCis2NzI2NiBlYTZlZTI4MjA3NTNiY2VmZWU1MmRiNzkwNjAxZjA4ZTZmMzk1Y2JiIGxlZ2FjeS10cnVuaworNjcyNjcgZDZlNjc5ODlmZjUxNDk3MzYyZmUzZmRiN2RlOGRhZjliMGY3YmIwYyByZWxlYXNlMjYtbWFpbnQKKzY3MjY4IGM2ZDE2YjJhOGVmYTRkNTYyNmFkYWU4ZTE2MTQ5MTYyZTc5MmVhMGYgcmVsZWFzZTI1LW1haW50Cis2NzI2OSBjZTY5MjM1NDVlNWVjM2E2MzkwZDY2MjRhZGQ4NGE2MDQwYTk3YWY2IHB5M2sKKzY3MjcwIDZkNmUzOGNmZjI0NDBlMmY5ZmZkNDZlMWVlMjU1MDFkNjA5Mjg2MDIgcmVsZWFzZTI0LW1haW50Cis2NzI3MSAwYzBiYjEwNGVjNGI3YTdmNmJkYjk5OTJjNTc4NjNiYmU4ZDZhMGZlIHB5M2sKKzY3Mjc3IDJkOWIxNzNkYzNhMmViN2E4MDZlNTFiMzNjOWNhOTVjZmFlODM3YjIgbGVnYWN5LXRydW5rCis2NzI3OCAxNTNmZWQ3YzdiNjBiOTBkNWU5NDY2Mzg5MmM5ZWZlZmNjODEwNDEwIGxlZ2FjeS10cnVuaworNjcyNzkgNzFhNTBlNjc1ZmExZTQ0OGFlZjhiNmRmMmU1YjQzNTQwYTFlNzljMCBsZWdhY3ktdHJ1bmsKKzY3MjgwIDdiYjIwNDYxMmZjNjc2YmJjN2VmZTBlYTYzNGFhNDk4NTlhYjA1YTYgcmVsZWFzZTI2LW1haW50Cis2NzI4MSA4YjliZGE1YjhkNGE5ZDFiYTNhN2EyOWJhM2VmZjdiYmQ1MDQ4ZGViIHB5M2sKKzY3MjgyIDcyMzg5NTBkNWM2MDQwMDc3ZGE3MTVkODFkNWI3NDFjNjNjMmM3MzggcmVsZWFzZTI2LW1haW50Cis2NzI4MyBiZjZhNWJlODI3YjRjMmU2ZDBjYTljYjY3MDllNzA4MDU4MmU0ODZhIGxlZ2FjeS10cnVuaworNjcyODQgMWY3YjZjNDBjOTkwODlhNjY1YjE5ZjE3OTM2ZDM3YmNjYjA5OThjMiByZWxlYXNlMjYtbWFpbnQKKzY3Mjg1IGE5Mzc2YWRjMjg0Y2U3OTBjMTAzMjhiMzZhNzA0ZWQ2Y2FjOTY5MjIgcHkzaworNjcyODYgMDcyMmQ3MWFmYTJmMjg2ZWU0NTFmNDI5MTM3OWQyMTAzOTNkMmE5NCBweTNrCis2NzI4NyBhNDRjZTU1NTZhN2ZjNjMwMjc5MzQ5MWFhMWFkZmZhZTkzM2I0ZWE2IGxlZ2FjeS10cnVuaworNjcyODggZjA0ZGYxMGUyMDUwMTFlOGJjYjRjYjYxMjVlYThkNDU2MjkwODA3MyByZWxlYXNlMjYtbWFpbnQKKzY3Mjg5IGZmYWU1ODM3ODUxY2I0YWFiMmJjNGM3ZDI4ZDA0MjkzMDFkZmUyNGQgbGVnYWN5LXRydW5rCis2NzI5MCAxZTdkMzIyMjc0YzgzZWM3N2M5ZjQzODE2ZWUyZDA4Y2UxZjU4NTQxIHB5M2sKKzY3MjkxIDdiMTg3OTllOTUxOTQ1ODI5NGI5N2E0ZWIxNmNmODFkZTU4YjcyZDkgbGVnYWN5LXRydW5rCis2NzI5MiBmZGM5MzM5NTE5NjQ2ZjVjYjNhYWI5MDBhYWIzMjdkODQzZmFiZTMxIHB5M2sKKzY3MjkzIGNhY2MwMThmYTM0MWFiNWM1Nzk2ZDVlZmY2MmJmZGQ5MmFkMDBiNmYgcmVsZWFzZTI2LW1haW50Cis2NzI5NCAwODhmZGFkZjk2MDlkMTkzZWIxMGY4YTQwZjA5YjUwZGY5MDFmZjljIHB5M2sKKzY3Mjk1IGEyOTBhNTFmZjhlMjdkNzJiOGQxZjFmYjMwYjlhZWM3NjI2MzliMmYgbGVnYWN5LXRydW5rCis2NzI5OCAyZGEzZmNkNDkzNWYxNTRmOTQxODZiMzVjMWU5MTgwMjNlMTNiZmUwIHB5M2sKKzY3Mjk5IDJjYTk2NGQ3MjRkNWZmOWExNjc0Njc0NTE5YjM0MzZkMzgwMWMxZmIgcHkzaworNjczMDAgODQxMzY5ZjM3MzM0ODYxZTkwM2ZmZjM3YWNlOWYxYmMxN2I4MTU5ZiBweTNrCis2NzMwMSBjYjgwMzlkODJhZjNmMTQwZjk2Y2ExMzIxOWMwYTZmMWNmMmFiOGZhIGxlZ2FjeS10cnVuaworNjczMDIgMjQ2NDU4NzA3NzlhYjhjY2EzN2VhYjk2OGFkNDExMjQ1ZTcyYzNlYiBsZWdhY3ktdHJ1bmsKKzY3MzAzIGY0MWNiMjA2ZDA2MWVkMTM1ODY3OGU0MDBjMTk4ZmM2OTlmMjBmZDEgbGVnYWN5LXRydW5rCis2NzMwNCA4OGZmNDVlNThlOTRiNmJhNjU1MmQ4OGRmMjc2MWNjNjZlMjRlYWY3IHB5M2sKKzY3MzA1IGRjMWRiNDZkMGE0NGI5YjlhM2Y2OGI0NjAwZGMwMWY3Y2FiNTM3OWYgcHkzaworNjczMDYgNWZmZDY3ZGY4YzlmMDgxOTg2MGNhMGI1ZjIzOGVmZDVlNjkwZGI0NiBweTNrCis2NzMwNyBlYWRlNDdkZmMxZTQ3MDQ3ODY1ZDVjYWUxYzRiNWY4ODQzNzcxZDcwIGxlZ2FjeS10cnVuaworNjczMDggZjk1ZmY5NmZkNzkyZjJmMWRlMzFlOGI0OWQ3NzE4NjVjODA3YTg2NiBweTNrCis2NzMwOSBiYWMwNDBiNWVmMjJhNDI0NDVlNjQ4ZDhlOTY2MTRjZGYyYWUzNjAyIHB5M2sKKzY3MzEwIDU0ZTVkODUzYjBkZWM3ZTc0ZWYzMTI2ODNhZmMxZjA1MDc1NjRmNmIgcHkzaworNjczMTEgMTU5YTExYjFkMjQ0NTBhNGE1MWE0MWU4Nzg5MzY0NjkyNjU1ZDIzNyBweTNrCis2NzMxMiBlODNhNjBjNjlkNTNmNTU1MWEzMDZlNzdhNmQzOGU5YjExNDg1NDk2IHB5M2sKKzY3MzEzIDM0ZmI2NjZmZjUyZjQxMzRmMzJlZWE2ODU5NWFlNmQ2YmMzOGIwMGMgcHkzaworNjczMTQgN2FhYTNhZmZlY2MxNTMyZTExMDRiYzE3ZjFkODU5Yjk1MTU3M2FiYiBweTNrCis2NzMxNiAzNGJjMjI3OWRjNTZkZmRhYjFkYTMyNzZhNTNjMjYxZjk4YTVhMjA0IHB5M2sKKzY3MzE3IGVkYTQ2N2Q2NWI2NWVmYjIxMWMzZTQ0NzUzOGMxMTgyNjFiMWU1OTYgcHkzaworNjczMTggMjMyN2RkNjg0MjFjY2ZmYzAwNTM4YjdkZjdmMDdkODdkYzc2Zjg4MiBsZWdhY3ktdHJ1bmsKKzY3MzE5IDMyNTBmYjcxYTllMDhjMDZhODZlYWJmMmIxNTBhYWI5ZDNiZGE1MjkgcmVsZWFzZTI2LW1haW50Cis2NzMyMCBiNjRkMDUzYWZkODRkYTkxNDAyOTNjYTg1Njc5ZDAxYzgyNmQ4YWM0IGxlZ2FjeS10cnVuaworNjczMjEgMGJjYWZhNjRlY2NiNDQzNTdkYWNhYjM1N2U1NTRhYWM3YTliNzhkMCByZWxlYXNlMjYtbWFpbnQKKzY3MzIyIGY0MDNkOTQxNTdiMjEwZGNkOTM4ZDJjNjMzZWE0NGMxMWRmNmI2MDYgcHkzaworNjczMjMgNzg0NmZlNDk1MjEyOTAwZDYxMzRhODdlYTQ0YmI4YzFkMWZkNjE3YyBweTNrCis2NzMyNCAwZWI1YWRkMzE2MGEyNDkwOTAxMzdlY2IyMWNhY2NkOGFmMTMwYWMxIHB5M2sKKzY3MzI1IDZhZWYyOGViYmQ2YzExNzRiODZmZDg1MGE3ZTJkNjJiNzdjNjlmZDkgcHkzaworNjczMjYgZGM0YWNmNzUzMjk2MmQzYzliODllYzQwOWVlZGY5YzIyNjdmNjNmOSBsZWdhY3ktdHJ1bmsKKzY3MzI3IGIxODBiMjcxYTdiMmI0NGZkNzZmNDJkYzBlZTFhNjRlZGZhMWZiNTAgcHkzaworNjczMjggMzFkODhmZmZiOThhMTA0YTQ4MzQ5ODIzNjM5YmMxYzNiZjI4MzEyZiBweTNrCis2NzMyOSA4ZjBhMTc1ZjA0YmVhYWQ1ZDQwOTkwMjY2NzUzZmQ2MzljZjA3MDU1IHB5M2sKKzY3MzMwIDNmMmRkYjNkZDE0N2E1YjMyNzI2NjYwOWY4YThhMmM4NDRmZDA4ZGQgbGVnYWN5LXRydW5rCis2NzMzMSAyZDhjMWVhN2Y4YjdlYzQ1ZDhiOTI4MTIyY2IxMGEzMDgxZTAxYWRlIHB5M2sKKzY3MzMyIDVlMjAwN2ZhM2NmODJjNmM0YzRkMGQ0OTRmYTJiMjI2M2Y5ZDBiMzIgbGVnYWN5LXRydW5rCis2NzMzMyBhMGY0ZDQ1ZmQ0NGNmNmYxODc5Yzk1MjIxODhiOTI1ODdhMmQzODQxIHB5M2sKKzY3MzM0IGE0MjIwYzkyZjdjY2Y0MzMwMTY2Y2U2YWUwNTM3ZWMwMDgzMjAxOTcgcHkzaworNjczMzUgMmQ5NzA2OTAxMjQxNzE3NWEzMDgxNWI1MWVmMDA3Yzc3OWZiNjhkYiBweTNrCis2NzMzNiA3ODlhM2FiMGFlOWVhN2Y5Nzk0YWQ4MTBlNzg0MTUzMzUzOTJmNGY0IGxlZ2FjeS10cnVuaworNjczMzcgYzAwOWYwMGE0NTBmZGE3NzRiMTk4MmI1ZDI3NmQxMDMzNWQ2MjM5MSBweTNrCis2NzMzOCBiNmE4MjQ1OTkyMGNlZjBhMjAyOTI3YzMxNWQ1ZTJlY2M2YTY1OWU2IHB5M2sKKzY3MzQwIDEzMzIxY2IyZDc1MjAzMTJmOGQ1MjIzODFlMDk3YTcwYTEyMDgyNjkgcHkzaworNjczNDEgMDMwYTE1MzY5ZWFjNzdjYjNiYzI2OGM4YmFlMWFkM2MwZTYzNzY2ZCBweTNrCis2NzM0MiA1ZjcwNzA2YThlNjcxOGYxYzIyMmUwYjI0ZDEwOTcyZjM5YjYzMjJiIGxlZ2FjeS10cnVuaworNjczNDMgNWZlY2QxZTk1MzI0OTc5MGQzYmM5NjMyZTY4ZjAxMmY3MjY1ODllMSBsZWdhY3ktdHJ1bmsKKzY3MzQ0IDVkOWJlNjVlNzg5MWY3MjA0NTM5ZDQ1MDY2NmE1M2JjYjU2NjNkMGEgcmVsZWFzZTI2LW1haW50Cis2NzM0NSA2MzBjMTc0YjQ2NWU5ODE2OWM0MjhlOWZlMzU5ZTY1ODdiNzA1NGU0IHB5M2sKKzY3MzQ2IDdjMmIxYjUyZjEzNDI4Zjk1NjFjZDFlMTU2NjEwNmFkYWZkYWZiZDcgcHkzaworNjczNDcgOTNkMmRkNjQxYjcwMTk0MzRjOWNiMWYyYzEwOGU0YWJjYjc5YTRhMCBweTNrCis2NzM0OCA4YTNlYWM3ZjljZDY0OTdlYjM1ZGU3N2IzNGY2OTRiYTE2MGQ1ZmU2IGxlZ2FjeS10cnVuaworNjczNDkgNTNhMTI3YWVhNTZlOTM1OTczMTZlZGRhY2Y3NmZhODMzYzVlMzEzMyBsZWdhY3ktdHJ1bmsKKzY3MzUwIGM5ZDBkNGRhOWFjOTdkYzY5N2VjZDVmMDNmZmI4MjMxY2VmMjZjZDAgcHkzaworNjczNTEgN2JiY2EyN2QzNTU5ZTI3ZWQ4NmQ1ODBlYjg1OWE1ZDA0ZjJmY2Y3NyByZWxlYXNlMjYtbWFpbnQKKzY3MzUyIDc1ZTk5MjAzNTFmMjVlMTNkMWEyNTY4MDI2YzdlNWQ5NjNlMjExMmYgcmVsZWFzZTI2LW1haW50Cis2NzM1MyBlNzA0ZWVkZDc3ZGNkZTdhMzMxNGM1ZGY1ZWJmYmNhOGZkY2IyNDlmIGxlZ2FjeS10cnVuaworNjczNTQgZDczMDNhYmNmMDY5MjgyYmYyNGVlZjc0MTdjNDI3OWIzNjBlZjI4NiBweTNrCis2NzM1NSBjYTY3M2JiZGUxYTNkODFhNWI0NGEyZDBmOTdlMDVjM2NlYzFlYzRjIGxlZ2FjeS10cnVuaworNjczNTkgMjQxNjUwM2EzMDc4YjVkZjFjZmU4MTYwMmVhNzA4NWExNjUxNmUxOSBsZWdhY3ktdHJ1bmsKKzY3MzYxIGYxYmIyNDFiYWQyNGJiZjA2MjYyODc4NmY1MmFkZGFkYjM2NzI3ZjIgcHkzaworNjczNjIgNGVhYjM0MDE2MGUwYTIyY2ZmYWYzOTEyNTRiZGVhYWI4YzI3ODU5ZCBsZWdhY3ktdHJ1bmsKKzY3MzYzIDFlOTE5ZDM0Yzk4MjUxNjFiODQ5MTAyYjQ3M2Q4YzAwNzZlYzI0NDAgcmVsZWFzZTI2LW1haW50Cis2NzM2NCA5ZmVhYTZhMWJmMmMyMmJhZTMxYTc0ZWY4NmY2MmQzMTY4ZGE0ZWMxIGxlZ2FjeS10cnVuaworNjczNjUgNzUxYThlZmM1ZDQ2NjJhYTkyZjczMzE4Mjk2MTM2ZDQzN2RhOTA3YSBsZWdhY3ktdHJ1bmsKKzY3MzY2IDk5NTk4YTYxY2MzNWZkN2FmMjJlODI0MTVlOWRhZTVmNGZiODY3ZTYgcmVsZWFzZTI2LW1haW50Cis2NzM2NyBjM2Y0OWFkYWMyZmU2N2UxNmIwY2ZlNmY0MTkyYWUwMDRmMzlmYWIzIGxlZ2FjeS10cnVuaworNjczNjggMDZmYjY0M2Y2NTUzYzRmNGIzNmYzOGQ4ZjM3MzExZDQ4NTZlZDhjYyBsZWdhY3ktdHJ1bmsKKzY3MzY5IGU0OTc2MDkwOWQyYmE1MDZiZDkzMGI3NDA2MTk3NzdhZWQ3OWFjNjkgcHkzaworNjczNzAgYjcxY2MwMDNlZjlmOGE1MTUwYmU4NmI4Y2MzYjg2ZDM2N2QxYjdmOSBsZWdhY3ktdHJ1bmsKKzY3MzcyIGQ2NjY4NmViMTFmNjMxYTdmNGQ0NTE2ZTJkYjg1NDQyNTEyZWYxZTYgcHkzaworNjczNzMgZmZhZDZjMGYyNTJlYjIwODBiMmFmNjYxNDFhODA0ODUxZDE4MzAxYyBsZWdhY3ktdHJ1bmsKKzY3Mzc0IDk2ZjM4ZTM1NzE5NGVjNjg3ZmE0NGYwYzJlODUxMDYwMWQ5ZGQzMDEgcmVsZWFzZTI2LW1haW50Cis2NzM3NSA0MGI3Mjc3ZTY2NWYwMTQ1MmU5YmNlOTY5Njc2YzQwNzJkNGVkNjhlIHB5M2sKKzY3Mzc2IDBkMTBkNWFiMjg0NDBhOTRiNDE4ZDUyMzc5MGVjZjdhMWRlM2QwMDggbGVnYWN5LXRydW5rCis2NzM3NyBmMzdiZjU1ZGI0MTZjYTNjYzBkZTgxMzlkOTZiZGUyZjhjMTc0OTE0IHB5M2sKKzY3Mzc4IDZjMDg3MWYwYzdhNjlkNTQyZmY1MTEwMmRkMTkxY2VmNWNjNzYyNWEgcHkzaworNjczODAgZGZlZGEwZDNkNjM2ZDQwMTczYTcxY2RhM2MwMjMzMDU1ODQ2MDA2NyBweTNrCis2NzM4MSA0Y2YwM2UxNDIwMGM4OWQwNTRkMjg1YmNlOTU4ZmVhZjI2ODU1YTEzIHB5M2sKKzY3MzgyIGVmYjQ5ZGYwZDg5OWRmOWQyYTI5ZjY2MDUxY2FiYzdjZTUwNmM4MzkgcHkzaworNjczODMgMzUyOGI1YzE2OTM4Nzk5Yjg5NWMzMzdiMjM2ZGE4N2JlODU4YmNmMiBweTNrCis2NzM4NSAzMGQwMWE1ZjUxN2VkN2JlNTEyOTM3N2MyMmU2MzllZjhlMGZlOTlkIHB5M2sKKzY3Mzg4IDJkM2YxZDBjMmExMGVjZDU3YWE4ODM4MTNlNTdlMjQzOTQxYzNiYjkgcmVsZWFzZTI1LW1haW50Cis2NzM5MSBkMzdiNGZlNTEzMjg3NTQxZGU1Yjg5NzVjYTg5NzY3YTk0MTg1ZTlmIHB5M2sKKzY3MzkzIDlmZDljZDg1MjYzMWFkNmYzMTM3NzczYWMxMjdhNjY5ZmIyZDVkMjkgcHkzaworNjczOTQgNjhmM2JlYjdlZWFkZjFiMDAxOTU5MWY0MjFlODRlM2QzMWY3OGVhNyBweTNrCis2NzM5NSA3Mzg5NWVhZGE4YmQxYjIyMzI2ZjdhOTIwNzUzZTk0ZGI2YzAxMGM3IHB5M2sKKzY3Mzk2IGEwY2JlNDBkYWM4ZjNmNDc1Y2I3Y2VhOTBmNjk0NDIzOGEzMjczOTUgbGVnYWN5LXRydW5rCis2NzM5NyA1Njg0Y2U5NmU2MzlmN2VlMDk4ZjMzYzBlZDRmZmVmNDZiZGMyZGE5IHJlbGVhc2UyNi1tYWludAorNjczOTggODViMWRlODU1YTEzZmE0YWZmMjA1NjJhZDg2MDE5OTVhY2E2OTQyMSBsZWdhY3ktdHJ1bmsKKzY3NDAxIGRlYjMwNjY5YzM1NWMyOGExYTViOGFhNTY2N2JlNzg4OWI4MjRhM2UgcHkzaworNjc0MDIgNzk3YmQzMzNlZjZiYTIyZTlmM2FlOGYwOWVmY2IxZTgzMjE2OTRkOCBweTNrCis2NzQwNiBhM2E1ZjY0MDRhZDViYTNjZTEzY2Y2ZjNkY2ZhNTI0OTQ0ZDk0ODY5IHB5M2sKKzY3NDA3IDVjYmMzZGQ0NDkxNjEwODUzZDMxODkxOTNjMjY5MzY1YjU3NTlhNTUgbGVnYWN5LXRydW5rCis2NzQwOCAwYTk5NGIzMmRlOWZlNTE2MjBiNDcxYWQ0N2ZkODY1N2JiYWM0ZjFmIHJlbGVhc2UyNi1tYWludAorNjc0MDkgZjgwNDRiOGZmNmVlZWJiYWZiY2VkMDU3OTU4OThmNTU2MWMxMWFiZSBweTNrCis2NzQxMCA4YjE0ZmM1ZTVmM2Y1ZDM5YzM0NzJmZDFiMmE5YjQ4OGEzNmMyZjlmIHB5M2sKKzY3NDExIDM5N2ZiZDZjMzQ3MWEzMTAwMmNlMTAyMjA4YTFhNzg2YzMwZDQ5ZDkgbGVnYWN5LXRydW5rCis2NzQxMiBjNTQ2NDk3YjQyMWExYTJjNTYzNGUxMTVmZjg2ZmJkOGViZTUzMDA3IHJlbGVhc2UyNi1tYWludAorNjc0MTMgYjU4YTQzNTAwMmMxMTFkOTM4MWU4NDhmYjJiZDA0MThmNWY2YmRjMyByZWxlYXNlMjYtbWFpbnQKKzY3NDE0IGZjYWUxNGJjZWE3MzIzNzg1YmVjMzEwNzYwYjAzNGIxYzlmZjg3NTAgbGVnYWN5LXRydW5rCis2NzQxNSAzODFjNjI4MTlmMmVjODI5NzhhY2M5MTJiMDM1NjkwNzg2ZjYxYjdkIHJlbGVhc2UyNi1tYWludAorNjc0MTYgYzUxMjYyYWQ1NjAzZGU5NzJhZGQ3OWQ1YmViOTM1ZTFhMDE0NTk5NCBweTNrCis2NzQxNyAzODAzYjZjNGZmOGYzMjAxMDUwNjdkMjU0Zjg5MzhmMDkzNDk3YjIwIHB5M2sKKzY3NDE4IDA2ZTZjMzlhZDgwMjRmODdmOWE4YTY0NDJiZjhkNjMyYzMzZGQwZDUgcHkzaworNjc0MTkgY2M5ZWZiOWY4ZTU3ZDg0ZDA3MDllYjU0MTkzOGM4M2FmMGM0MWM2MyBsZWdhY3ktdHJ1bmsKKzY3NDIwIGJmMmQxOTI5M2RiNzdjYTNhMGFhYTBmYzJjMTE3YTViMGQ3ZTI2N2IgcmVsZWFzZTI2LW1haW50Cis2NzQyMSBhOTAzNTJlNTljZTYxZDMyZjQzMmQ0ZTljODQ0ODMyYzQ2ZjM1Zjk0IHB5M2sKKzY3NDIyIDE4YWE3MjhlOTUyZDUxMWY5MmIxMTY3YTk3OWVkMjIzMDBlNGE0MDUgcHkzaworNjc0MjMgMGIzYjQ0YjhjNzgyNjI1N2EyNzgxZmJiOTU2OGVkYmRiZThmNzNjNSBsZWdhY3ktdHJ1bmsKKzY3NDI0IDQ2YjVjZjNjYWRlNGFmNzVjNjVlY2ZlMTIxYzA3ZTRlYjdkOGE4NzMgbGVnYWN5LXRydW5rCis2NzQyNSAwZmNmZTE4ZmY4ZjZkNTcwNjhhYTRiNzNlZDg5YmJlMWUxNzE5Yjg4IHB5M2sKKzY3NDI4IGM4YWVkOWEzNmVjYjdmOThjNDgwNzg5ZDM4ZjM3NWUzYWRkZTRiMDAgbGVnYWN5LXRydW5rCis2NzQyOSA4ZDMyOWQyYTM2NGFiNTI1Y2I5Y2YyYzkxMTIwYzYwMTQyMjk2MGQ5IHB5M2sKKzY3NDMwIDA2MDdjOTdhODEyNGI0ZTM4NTFmOGY0YTQ5MTIxNjRkNzcyNjJjYzQgcmVsZWFzZTI2LW1haW50Cis2NzQzMiAyM2I0MzQ4ZmRmNTJmZjZlY2UwNTllYzdkMWIwZDBmNThjZGRiNTgzIGxlZ2FjeS10cnVuaworNjc0MzYgNTYwYjJmNTI5NTJjODdjNGM4MmQ3YzE5MmZjMmJmMzU4Mzg2MjIyYiBweTNrCis2NzQ0MCAwNWMxMmY2ZDE0MDQwOWMxMDk5ODFkNzdkOThkZTg4MmRlZDVkY2MwIGxlZ2FjeS10cnVuaworNjc0NDEgY2MyOTRmYzkwZjZjNGRjZWQ5MTliZGE0ZGNiZTIyNjRiNTczODFkZCBsZWdhY3ktdHJ1bmsKKzY3NDQyIGVmMGM1Y2E0NTQ0MTIzNDRjOTZhNmMyMDI4YjA3NWIyYzNlNTAwMTIgbGVnYWN5LXRydW5rCis2NzQ0MyA4MDM3ZmE3YWNlOWVlYzNjOTBiODI4YzE1MDZkZDFlODU4ZGE2ZWI0IHB5M2sKKzY3NDQ0IGUyOWY2NmZkYjQyYzIwZjlhN2UzZDMyNjQ2MWU2OGEzYmQ1Mjk5NWEgbGVnYWN5LXRydW5rCis2NzQ0NSBmOWFhODdlYjMzNGMxZWRjNDYzYTllY2I3YTE1MzEyM2E4Yjc3MGQ4IGxlZ2FjeS10cnVuaworNjc0NDYgMzU2OWY3YjA5MDI1NmUwYWEwZWNmN2UzYTE0ODk5Njc0ZDE4YTI5YSBweTNrCis2NzQ0NyAyNzdhOGYyOTQ0YjQyMzVhZWVjZDRkNzE1ZmMzMjRiOWEwODA5YWM5IHRsZWUtYXN0LW9wdGltaXplCis2NzQ0OCBiZWYzYzg1YTkwOGQ0Y2RkZDBiMWFmZDYxMDY1NTZiODIyNjg1Yjc3IHB5M2sKKzY3NDQ5IGExZGU5MWFkOTI4ODJkZGI3YjI5ZGU0YmM4ZWIzZGE5ZmRhNGVjZGUgbGVnYWN5LXRydW5rCis2NzQ1MCA3ZmRmOTM2YjMwYmY2ZjJjYWRjYmUzYzVmNDIxNTgyMjZkMzEyMmU5IHJlbGVhc2UyNi1tYWludAorNjc0NTEgM2JmMThiZTdjZTVhNWI0ODQyN2FlNjRlMWI5OGU5NDQyODJkMjQxYyBweTNrCis2NzQ1MiBmMWViYmMxODZjMTEyNzYzZGVlYTE2MTI3ZGY3Y2VkNzA5OTI0ZTllIHJlbGVhc2UyNS1tYWludAorNjc0NTMgOTQyYjRhMmMyYzEzYmU5YWY1OTY2OWY4OGY3YmE0NWVmNDE0MDFmZCByZWxlYXNlMjQtbWFpbnQKKzY3NDU0IDM5YTU2ZDM1NTM3NmFhZmY0OTJlNWYxOWZmNjM1Y2Y0MTU2NWM3MGEgbGVnYWN5LXRydW5rCis2NzQ1NSAzNzEyZDFmNmJmZDU1YjVhNTk5OGJjMDQ5ZWU2MGQzMjI3MGI3YmE4IGxlZ2FjeS10cnVuaworNjc0NTYgYjk2MmQwNGJiN2YwMzM0YWVkMWRmOGE2Y2NlMWNiNmM0Yjc0ZTlmZCByZWxlYXNlMjYtbWFpbnQKKzY3NDU3IDdlZDM4YWExMGRlNmE1MmU2ODY0NjgxYjMzNGVkYTMzYjcwNGY2YzkgbGVnYWN5LXRydW5rCis2NzQ1OCAxODlkZWYwNjI1M2M2YTdhOTcyODViZDQ3ZTk1NzQ3YjVhNzRhZDJkIGxlZ2FjeS10cnVuaworNjc0NTkgMDFmNmVhN2Y3YTc1ODFmNGE0OTRmYzlmNmFlODhkYTg0NTJiMDNmYyByZWxlYXNlMjYtbWFpbnQKKzY3NDYwIDc1YThjYWEyNDE4NjU5NTllNWI2NWZmMzdlMmQ1YTk2ZjM5MWVhMjggcHkzaworNjc0NjEgZWQ4YWRmZWYyNmM2NWIzYTg4NmM4M2IwYmQzNGE2MjY3ODg4MWY2NyBweTNrCis2NzQ2MiA2ZTg5MTM1M2NlOTY1OGViZWJkM2Y2N2U3OTBjMjlhYzQzMmZhYjBmIHB5M2sKKzY3NDYzIDY4MTczM2I0OWZhMjM5OGFmOGZiODFmOThjYjNlMTYxZWI2YjU0YzEgbGVnYWN5LXRydW5rCis2NzQ2NCA2MGU3NzVlYWFhZWVlOGE4ZWVjNmYxYzVjNjk3MjMxY2JlMGY5MTJiIHB5M2sKKzY3NDY1IDNlNTk5NWY2YWI4ZjZhNmM0NGVlOGViNGJhODcyOTAxMTY2NjlkZjMgcHkzaworNjc0NjYgYWIxMmQ3MTZhN2E4MWVkNGEwNGJhNjcwMzAzOTNjNzczNzQwMGM1YiByZWxlYXNlMjYtbWFpbnQKKzY3NDY3IDdmOGY3MWRjODZjNzQwOTVjNmE5MWE0MWUzZjc2MjNmM2YxOGU4NzcgbGVnYWN5LXRydW5rCis2NzQ2OCAwNzMyZDEzZWQwNjc4YWQ4NTY1YjhlOTA0MDAyOTQyZGI4MDM0MWI4IHB5M2sKKzY3NDY5IDBmNzcyNWUxOWJjM2I5M2YzMjgxODY0MjUwZmJmNTYyODA4MTAxOTAgcHkzaworNjc0NzAgNDQ2MWYxOGYyNjQzYzhmYzk5ZjEwMmI0MWUxNzkwNzE4ZDk1MTE4ZSBweTNrCis2NzQ3MSBiMWQyYWY1MmQ4MDE1MzRhOGJkODJiZTk3NDRiZGRhZTM0NGZkZmZkIHB5M2sKKzY3NDcyIGVkODQ3NmQ3ZjY0YTVkNjE2NTE4MTA2NDJkN2E0YjM0NGVjYTM2Y2QgcHkzaworNjc0NzMgMDljMmQxNWU0ZDFkYjYyYzk5ZmExMzU1MWZkNTdlNzBiYzQxN2ZmYSByZWxlYXNlMjYtbWFpbnQKKzY3NDc0IGMxODJlM2I5ZTlmYzNhYmRmZDUwZGE1YjZmYzViYTdmN2RkY2Q2OGEgcHkzaworNjc0NzUgNDBlYzZkMjg5NTUyZTdmMzM5Y2RmMDc3ZjU5NzMzNWU3MjcwZDcwNiBweTNrCis2NzQ3NiA2YTEyMWYwNGJjN2RmNmEyNDlmYTk5OTM2MDM4YjFlN2JmMGE1MTJmIHB5M2sKKzY3NDc3IGQxNzJkZDhkOWUwOWViZDg4ZjUxNDgxZWM3ZDg1OTAzYWI3NzllZjcgcHkzaworNjc0NzggODZlZTJlMGQ0ZDQxNTQ5NTUwNzAzZmI0YzdmMDJhYjY3ZTQxMWU1MyBweTNrCis2NzQ3OSA3OGIwYzhkZTNhOTg4MzgyMTMzODFlMDY1NDZiMDRjYTE0OWMzODg0IHB5M2sKKzY3NDgwIDljODFjM2I3MTExOTUyZjE0ZWEyOGViMzIxMDYxZTJhNDI0ZDk5ZjUgcHkzaworNjc0ODEgY2RkYTIwOTNmNmY1MzA4YjYyYmQyOTYzNDk1ZDEyYjY5OTE1MzUyNCBweTNrCis2NzQ4MiBjYzVhOTVmMGY1NmE1MzRmNWZiNDMwZTkwODBiNzI3ZmQ3MzQyNWQ1IHB5M2sKKzY3NDgzIGM4MjZlNDYyZmE1MWY1M2YyMTVkZmJmNjYxNWEyZWViN2RiODBhM2YgcmVsZWFzZTI2LW1haW50Cis2NzQ4NCA1ZDRkZmVlZGQ1MTJiMzE5NDQzMDhkY2M2OWZmZjQxNDEyMzAwNWUxIGxlZ2FjeS10cnVuaworNjc0ODUgMDQ1MjZhMjIyY2FmMjQzYjM1NGE1NTBkMTNkMTA4ZjY5OGU1Mzg5OSBweTNrCis2NzQ4NyBjZjQ3ZjdjN2RkYjMyNmUwNjhhOTQ2OGJjNGE3MTg3YTA2Y2ZiODU3IHB5M2sKKzY3NDg4IGQxZGUzMDJlNmVmYzUzODYxNjgxMTY3MjFmNWVjYjNkMWVjZGEyOTggcHkzaworNjc0ODkgODFjYTdiYjg4MDRmMDJjNThjYjk5ZTNjNjE5MjE0M2MzOWFhMDhmYyBweTNrCis2NzQ5MCAxMzdiNTBlZTk2ZDVjMWFkMTgwYWU2NDA2OTdhOWNkNGEzZDRiYWZiIHB5M2sKKzY3NDkxIDU0ZmVhYzNkMTE2OTA2NDk3NDM2YzU3YzdiODg3ODIzNDU2NjdlOTggcHkzaworNjc0OTIgZjQ0N2ExZGUyZmFlOWIwMzMyZjk3MDM1NTRkMmRiMzA0NzMyOTQyZSBweTNrCis2NzQ5MyA4NDUzMDVhM2RhMzYzZWJiZDhmZmMzM2EyMjQ5N2NlYTE2ZTZhMzFmIHB5M2sKKzY3NDk0IDMzNDQ4MDRmMzI3ZDZlNWI1ZTFlMmVmYTNlZTA3OTYxYThhMDZiNmIgbGVnYWN5LXRydW5rCis2NzQ5NSA2YTRjYzZiYTFjMTZhZWNiYjJlOWZlZTEzZmQxZjhhM2E4OTQxZmMyIHB5M2sKKzY3NDk2IGEzZDAyOTliNGIxZGFmYmFhODlmNzU4ZmNkMzRjNTQ4NWViNDdlNWYgcHkzaworNjc0OTcgYzZhNGEyY2M1NjEyNmEzOTc0NWVlN2RmODA3MmFlMDkxMjdmNGE0ZiBweTNrCis2NzQ5OCA1ODhhOTVlZjc5NzE3NmE1NTc4Y2MzNDEzMjlkYWJkN2FiNDFjZTRlIGxlZ2FjeS10cnVuaworNjc0OTkgMTA3ZDQ1MzE3OWJlMmVkZTdlNzhmN2FhODY3OGMyMmM2MjA1YmQ0MyByZWxlYXNlMzAtbWFpbnQKKzY3NTAwIDUyMzVkY2RhOTA3NmYyNWE5Y2RjYzcyNmE5YjNhYzM5NDc5MWFiZGIgcHkzaworNjc1MDEgMmE1ZWMwNjBiYjk5ODE5YjZkNWQ1ZTUxYjYwZDhkYmE5N2I0YTYxYyByZWxlYXNlMzAtbWFpbnQKKzY3NTAyIDU5YWRmZTQzNjk4ZGM4NDhkODMxMTUyN2MwZGUzNDQ0YmU2ZmRhOTAgcmVsZWFzZTMwLW1haW50Cis2NzUwMyBhNjUzMjE0NjAyNzA3YmRlMGU1MTA2NGQ3Yzc3ODljZTI5NWU0NDMyIHJlbGVhc2UzMC1tYWludAorNjc1MDQgOTgwN2I3OWExNjJlNmZmYjBiYTQyZTJjNjk1ODQ4NDdhNmE3ZTNjMiByZWxlYXNlMzAtbWFpbnQKKzY3NTA1IDU4OWM4OGIyMGI1YjdlMDA3NzkxMDFjMTdkMTQ5MWEzM2E4ZmI5YzUgcmVsZWFzZTMwLW1haW50Cis2NzUwNiA2OGE2ZTNhYzQxYzE4YzhhMTkwYWRhM2FhMTc2NDRiNjEwZGUyYzU3IHJlbGVhc2UzMC1tYWludAorNjc1MDcgOWEyYjA2Mzg3MGEzMDkxZjIzMDE5ZjdiY2NjOWQ0NWE2NDEzZGI0NiBweTNrCis2NzUwOCA3NWI4ZWUwNjJiMGQ0ZmM5MTdiMTM3MzkzYTI4OWEwZjU0OGMxY2Q2IHB5M2sKKzY3NTExIDg3OGQ0MDQ2OGM0ZTdkMmQxMjkzZmFiNmE2OTY1YWYyMWIxNGY5MjkgbGVnYWN5LXRydW5rCis2NzUxMiBlMDdhMzIyZWY1OTM0Y2UzNWI0OTY5OWUzOTM4ZTIxZmQzMTI2MzEzIHJlbGVhc2UzMC1tYWludAorNjc1MTUgY2FiZjMwM2U3ODdhYTVjZDcyMDliNDBlM2IyY2FiYTNlZTc1YzVhNSByZWxlYXNlMjYtbWFpbnQKKzY3NTE2IGM5ZGE4NWMxOTcxOWI5NTQ2ZGE3YmY2ZTYzY2FmMWMwNWNkNjQ5MWUgcmVsZWFzZTI2LW1haW50Cis2NzUxNyA1MzE0NTdjZmEzZTI0M2UxZmQzMDg1NDk1NmU1NTY0YTU4MTU1NmJiIHB5M2sKKzY3NTE4IDcxYWNhODUzYjI0NDIxMDY2ZmQ0OTQ3MDM3YTBiZjM1MTgwY2EzYWYgcmVsZWFzZTMwLW1haW50Cis2NzUxOSBlNzkzZmMzYzhhYmU5NWUzMTk4Zjg0OTFjNTQ5Y2JlYmZlNTE0ZWM5IHB5M2sKKzY3NTIxIGYzYzQ4NWUyYjQ1MTM2NjU3ODNkYjkxOWI5OTRiMThlYTNjMGJkM2QgbGVnYWN5LXRydW5rCis2NzUyMiA0OGYyOWQ4OTRiM2NjN2FmYmFlYjRhZjUxMTMwODFhNzY0YmUyMzI5IHB5M2sKKzY3NTIzIDQyNTYwMzc0YWIyNTFhYmFkMzQ3M2UzZDBkMjg1MjE4M2UzNzczNDggcHkzaworNjc1MjQgMDdlZmNlMTA3YWFlZjJlOWQ0ZWNiOTFlZDIyMDZjMTg2OTQ4YjU4YyByZWxlYXNlMzAtbWFpbnQKKzY3NTI1IDg1NmZjM2VhMmRkYjg3Mzk3YmNjNGEzODg2ZmMyMDEzOGM4NTlmMDMgcHkzaworNjc1MjYgNzUyMDdhMGE5ZTE1ODQ1MGUwNTk5NzViMDEyYmI3ZmQyZjYzMWIxZiBweTNrCis2NzUyNyA0NThkN2JjMTI5NTA5MTk3OWFkYjY4Mjg0ZWExMWFmNjE1ODU5ZTFiIHB5M2sKKzY3NTI4IGU4YWIyNzU4MmIxODQzZjE4MmEwNDdhNDU2ZTJlMWM5OWNmNjQzYzEgbGVnYWN5LXRydW5rCis2NzUyOSAzZTY1MDAzMmE1ZDFjYmIxMjIxNDQyYjljZmQxMmE3MjhkNDljMGFjIHB5M2sKKzY3NTMwIGMxMTVhZDU4ZWFkZmU5YTBmYmQ4YjY5NjM4YzJlMTMyYzkwMTAyZmUgcHkzaworNjc1MzEgZjZlNTNjMzBhZTk2YzViYzFkMzRhMDk0MDVmMDRmYzkwYTM5NjI2MCBsZWdhY3ktdHJ1bmsKKzY3NTMyIDIzMTY4MDI0NGMxN2IzMjMwYzVjMGE5MzhjZDdlN2M2M2ViYTNlMTIgbGVnYWN5LXRydW5rCis2NzUzMyA3NGJmZWIzNjRhMjNiMzdmZGIzOWQ2MTBiMWEwNjVhYzk5ODZmYTAyIHJlbGVhc2UyNi1tYWludAorNjc1MzQgMTAzYzY4Y2MyOWU1ZTJmNjRiYjI5ZjU1NDk5YTg3Y2FjYmU0NDFhZCBweTNrCis2NzUzNSA4OWU3MzhjNzkyYzBiYzhkYzE2MWVmZGNjOTZkOGNiNjUzZGYxNmFjIHJlbGVhc2UzMC1tYWludAorNjc1MzYgNDc5MGIzMWQ5MjU3NzdmMmYxYzY2ODNmNTY0YjNiMWE5NTQxYjc2MiBsZWdhY3ktdHJ1bmsKKzY3NTM3IDlmOGU1MWZkY2VhMGZiYzY2YmNiOGQ4MWRiZDE4NTFiMGQ5ODI3NjUgbGVnYWN5LXRydW5rCis2NzUzOCBjZDVmNTZhODFjY2UxZDE2NWUzZGZiYzViOGE2MGM4MDkwZDBhOTY0IGxlZ2FjeS10cnVuaworNjc1MzkgM2VjYTVhNzM2NTE2MTBhYTkzMWUzYWRlOGI3YTczZGY3N2ViMGIyNSBweTNrCis2NzU0MCAyN2JhMDk5NTc3NTE0M2ViYTkxNDVhZDg1NzdiMmYxOTE0MmUwZmM3IHJlbGVhc2UzMC1tYWludAorNjc1NDEgNjkyOTU2M2RhZDAwM2Q2NTFmNjBlM2VhMWM5NjgyNzRjNGQ2Y2EzZiBweTNrCis2NzU0MiA2Nzg2MDdjZTEyMmZhODc3N2MwNGNkMjVmMDg3Nzg1ZTM5MTA3MmJkIHJlbGVhc2UzMC1tYWludAorNjc1NDMgNTg5Y2RlNjE0YjViZmU0YmM2MWQ2YjA1NWM2YzUyMTRjN2ViYzY2MSBsZWdhY3ktdHJ1bmsKKzY3NTQ0IGRlZDk5ZTRmNmIzZGJjMTA1MjVlODYwMzE3YmY4ZTAwNGMwZDI1ODAgcHkzaworNjc1NDUgYTlkMDA2N2NiZWE0NjM3NWNmMjMyZmJiNmJjNjBlZWY5OWNlYjQzMSBweTNrCis2NzU0NyA1NGMxOWExYmJhYmQ5ZTVlYzk5NWUwODM3MDdkMmM1ZDNjYTkyOTQxIHJlbGVhc2UyNi1tYWludAorNjc1NDggNGUxM2IzN2IzNzIzYjkyMTczZDgwODhjNDgzMzhlNzcxY2Q3YTczMiBweTNrCis2NzU0OSA5YmI4NmY3ZmI5NDQ3OTVhZjlmOTNmYzExMDViOGI4YjhlYzc5NzdiIHB5M2sKKzY3NTUwIDhkZDM1NmIxNGIwZDdkNTZlMTI4MzM3NzE3NDAxMzc5YmM5YjlkOTkgcHkzaworNjc1NTEgNzI5ZGI5NDY0ZWY2ODhhYTMzYmEyYzc5Y2Q2YjE5MjhlYTU3MjhjYSBweTNrCis2NzU1MiBiZGIwMmVhZDc1OWI5NzgzYzZhZjJkYmNlMGU2NTI4ODlmYzY2ZmU0IHB5M2sKKzY3NTUzIDg1MTkwZmYyMjRlMGM0NzFhNmExNjJiYWRjOTNjNzU2MWQwMGRiYWQgbGVnYWN5LXRydW5rCis2NzU1NCBjMzE5ZDI0NzRmNTdlMGZjYzhmZTU4YmFmMDIxMmY0M2UzYzMxMTcwIGxlZ2FjeS10cnVuaworNjc1NTUgMjc5NDZmMWViOGZhNTc3ZWJlMjhmNDc2ZDRjYmUwMTk0NmZhNWI2MCBweTNrCis2NzU1NiBhMGNlYTAxZWNlNTNjZTZlYWZmNjNhOTE3MzU1ZTA1NjJlNDA0OGI5IGxlZ2FjeS10cnVuaworNjc1NTcgNzY1OTg0MWQyNzE0ZGVkMGRjZmZmOTJhNTM5MjY3ZTRjNDcyNDAyMiBsZWdhY3ktdHJ1bmsKKzY3NTU5IDg2ZDhhNTIyZjQ0MDczZDEyMTEzNjQyMmE0NjRlOGQ2NGU4ZGRkM2UgcHkzaworNjc1NjAgYjQ3YjdkOWM1OTM2MDZhN2EwYTFjZTYwODUwNzM3ZTcxNjFjMGYxMiByZWxlYXNlMzAtbWFpbnQKKzY3NTYxIDg5YmMzMWUwNjQ4OTBiZjhhNWM5ZWE1ODViMjg1NWM2YzFiNGYwNDIgcmVsZWFzZTI2LW1haW50Cis2NzU2MiAwMTM3MTg5N2NiMTkwMDM1ZDU2YmJmNGU2M2QyMWI3YmNlNTBjNzRjIHJlbGVhc2UyNi1tYWludAorNjc1NjMgNWVmOGI1YTc0ZWZhMjFjZGI5ZGE1ODdhNWEwNDc1MGNhMTJlOTQzZCByZWxlYXNlMjYtbWFpbnQKKzY3NTY0IDg1OWY1NTBiNDAwM2FjYTFkMjZmZDRlN2I4N2JhNDA4YzBkZTRmYzYgcmVsZWFzZTI2LW1haW50Cis2NzU2NSAzYzdlZWYxODdiZWEzNGRhYWQxZmZhMzNkMWVjMzhiNDE1ODJiYTFhIHJlbGVhc2UyNi1tYWludAorNjc1NjYgZjA4ZDE0NDhiOTBmZjVkNmMwODUzMGZlOTBlOThjOGZiNjNlYTg2ZiByZWxlYXNlMjYtbWFpbnQKKzY3NTY3IDZlNTFmZTFiN2VkOWVhNTQyZmEyY2U2YWU2YjM5MTA0YmMzODg2ZWMgcmVsZWFzZTI2LW1haW50Cis2NzU2OCBhMTcyZWFhNGQ1ZWMxMDQ5NTNkMGMxZDNkYmEwYWRjZTM3NjIyNTFhIHJlbGVhc2UyNi1tYWludAorNjc1NjkgMTFiZjU5ZmUxMGI5MjQxMDdiN2RhNTJlY2Y1MjYyODMwYTQzZTE5OSByZWxlYXNlMjYtbWFpbnQKKzY3NTcwIDJlMjZlODIxOWFhNDIwYzU0ZWI1YjA0MGYxMTAzYWY1ZDdkNzZmYzMgcmVsZWFzZTI2LW1haW50Cis2NzU3MSAzNjM2ZmU5NTczMmMxMzdhMzE0Yjk3ZmZmMWE2ZTJmYmM5OWUyMDU5IGxlZ2FjeS10cnVuaworNjc1NzIgMjBhYjIyNjBkYzkzYmMwNzJkYjQ3ZGFhOTQyNjk3MDUxMzkxYWUzMiBsZWdhY3ktdHJ1bmsKKzY3NTczIGM0MzRiNzcxNDc3YmZhMWI2NDc4ZjFiMzk0Y2M0NTM4YjU0MTM0ZjMgcmVsZWFzZTI2LW1haW50Cis2NzU3NCBiMzhlYWI4Yzk5MDRkYTdmMmJkZjcxNmJjYjAxNGI1MmY3ODRjZjdmIGxlZ2FjeS10cnVuaworNjc1NzUgMjBjZDhjZjYxMzczZDkzNTdkM2VlZjlkMzY0ZDhlNzczZjUwZWM4NCBsZWdhY3ktdHJ1bmsKKzY3NTc2IGM0OWQ2ZDdjMTgxZTFmMmY0YjljZDZlZWJiOWQ0ZDdmNzNiNTU4OWMgbGVnYWN5LXRydW5rCis2NzU3OCAxMDBlNDE2MGFkZmJhMjlmM2JjMDI5MmI0MDYwZmNlMDFjYmNkN2Q5IHB5M2sKKzY3NTc5IDk0YjRmODhlNWY2YmU0NDQ1YjVlNGNkZDA4NDEwYzc2NjUwNGMxZTQgbGVnYWN5LXRydW5rCis2NzU4MCAwMDc5NjQ4MDk4MDNmZjNjZDdlZjBmYTVlOTI4ZDE2N2IwMzIxOWYxIGxlZ2FjeS10cnVuaworNjc1ODEgOTJjYjZlNWViNDNjZTYxZjI1OGEwZTAzYzk4MjY3MDc5ZGZjM2RlMCBsZWdhY3ktdHJ1bmsKKzY3NTgzIGEzYWI5NTM0NWI1MmIyNGMyYTk3NWVkZDMwYjU4MjQ2MTU2ODcyOWIgbGVnYWN5LXRydW5rCis2NzU4NCAwNTUwNDU4MmNlZDY3ZWQzZjI4MDI0ZDliNjZjNjliYmYyNTRjZmNmIGxlZ2FjeS10cnVuaworNjc1ODUgYzA2MTgzYjJkMDZmNDkwNDM0ZGVlZGQ5NzI1MTdhZTRiYTMzYzZmNiBweTNrCis2NzU4NiAwOThkYmQ5NzMxNDc3YzVjNjQ2YjFmOTJlNWM2ZDdiODNlNzBkOTA1IHB5M2sKKzY3NTg3IGZmMjI2M2RlMGQ2ZjRhYjViYmM5NTZhY2FhODFkNmFlNmE1MWUzMDggbGVnYWN5LXRydW5rCis2NzU4OCA3YTkyYTE2NGZjMTJmM2M0ZGQwMDA3Nzc0MjUyYjZlYWM2ZjQyNTlkIHB5M2sKKzY3NTg5IGRlMzA5NGJiMTQyMWQ3ZDY3YjdmMWUwNGNiYzBmNDk3ZmY4MGUwNDQgcmVsZWFzZTMwLW1haW50Cis2NzU5MCA1N2I1YzQ2MzlhNWQyM2Y0ZWNmNWVjMTQzZjQ3ZGI4NmVjN2Y2MWFkIGxlZ2FjeS10cnVuaworNjc1OTEgYzAzMDFiNTQzMGQ1MjRiMzNjMzQ0NDMyOGY3NWY4MzBlNjMzMWFlMyBsZWdhY3ktdHJ1bmsKKzY3NTkyIDIwYTFjY2FkZGNhZWVlNzc2MDhhZjZiYTUwZjAyOGFjN2ZjZDExNGYgcmVsZWFzZTI2LW1haW50Cis2NzU5MyBiYmIxMDFhNWY4Y2NkZTVkZWM1N2Q1MzkwMmI5YmZjODQ5ZTE5YmQ5IHB5M2sKKzY3NTk0IDY1MWRmYjM0MDVkMjE4ZjRiYzE2MDQwYjJkMDZkOWYxM2RjYTBmZjUgcHkzaworNjc1OTUgNjI0YjllYWVkYjgwZjA5YWFjYmJmYWE4NzM4OTA2NDJkMTU2YmQ5ZiBweTNrCis2NzU5NiAyNWYyMjJiZWZlYzRiZGFlZWIzYTViYzk1ZjUwYTg5ZmM0YWJjZDU4IHB5M2sKKzY3NTk3IDdmMDgyMGQ3MzI5OTM3YTUwNDM5NzMxNjNkNWFlZTc2MjI0OThmZTggbGVnYWN5LXRydW5rCis2NzYwMCA0Yzk4NDRjZjJhM2Y3ODRlMDNiYTIxYTU2MjE1MjNkZWMzM2M1NzM5IHJlbGVhc2UzMC1tYWludAorNjc2MDEgMWYyYTNiMTNlODZkN2M0YmE4NzA3M2UwMThlNjBjZmQ0NzUzZmIyZSBsZWdhY3ktdHJ1bmsKKzY3NjAyIGFiYTJjZTE2M2I3MThkMTFhYTNjYzc4YjA3NjJjMDg2NTM1NDJjOTIgcmVsZWFzZTMwLW1haW50Cis2NzYwMyBiMDFkYTI2YzRiZjk0MDBkN2UxMTAxNDRlZjE3OGJmOTY4ZmE2NjU4IHB5M2sKKzY3NjA1IDgzMjNmMmRmNTYxNzQ3NDZkYTRhNTRjYzZhYzY1MzNiYmUzMThhNzcgcHkzaworNjc2MDYgMmM3OGY4MTVlMTkyYWJmZjZlMTQyMzU3ZjA0MzNhODdiMTYwNmE0YyBweTNrCis2NzYwNyBhYzQyYThmNzVmOTI1Yjc2Yjk3ZjliZTBiNWFiNzc0YmJiZjgwZTcyIHB5M2sKKzY3NjA4IGE5MDY4MjAzYWZkNWMwMDNhNDBlNTU0ODE4NjJjODAyODA4NmYwN2UgbGVnYWN5LXRydW5rCis2NzYwOSA3YzNhZjMyMDBlMzRiNzI1NzcxYmFjNzUwNTM0NjM1NDRiNjU5NGMzIHB5M2sKKzY3NjEwIDY3Y2U3NDVhNzQ3YTg4NDQxNjQ0ZDY2M2NhOTZmODg4ODllM2U0NGMgcHkzaworNjc2MTEgYmE4ZmUzYTQwYTViZjczZDQ1MzI0NjQyYmQzZjU1NmM2OGFmNzEwMCBweTNrCis2NzYxMiA2MTk2MzU0MWNiZjViZDlmYmY3NTJhMjY2MTg5NWY4MWZjNDE3MGIxIHB5M2sKKzY3NjEzIGUwMDczYjc2NTBjYzNjYWU5YjcxMWNjYTFjMDU1YTNmNGNjNTZlZWQgcmVsZWFzZTI2LW1haW50Cis2NzYxNCBkZDVlMWEwNDJkYmE0ZmJhM2M5NDBmNzU1YWEyZjdhZjkzNjZiYTk2IGxlZ2FjeS10cnVuaworNjc2MTUgMGJlMTAzOTEzNDdiOWNkZDBlZmVjNTcyYWRhZjY2ZDk0MTk2YzZkMiByZWxlYXNlMzAtbWFpbnQKKzY3NjE2IGIxMmQ2ZjYwNjYxOGFiZmVmZGE0NTdiY2NjZGY5ZWY3YzY5Yjk0NTkgcHkzaworNjc2MTcgY2UzNjM4ODcyN2E3OGI3NDRlMjNkYzczNTVlMzEzZTdlZTljM2RkYyBweTNrCis2NzYxOCA1MmFkOGE3MjQ3MmU4NDY2Y2MzNmU1NzE3NWNiMTVlZGQ3ZDZkNDI2IHB5M2sKKzY3NjE5IDEzNDhkYzI0NGNhMzRiN2I2NTFiNzkxMmZkNjZkYTMyNTEwODYzNTggbGVnYWN5LXRydW5rCis2NzYyMCAzZGU3MjBjZDE3NjZhNTJlM2FjY2IwYmFlZmEyZGIzMWMwMGI2YWYwIHB5M2sKKzY3NjIyIDZkYWIyNTg3NTJjMThiMDRhODdjNjJiNWI4OGM5ZWQ5ZmYxNzE4YmMgcmVsZWFzZTI2LW1haW50Cis2NzYyMyAxNjkzZmQ5NGQ4MjlkMWYxMDc3NzFjMzRkODkzYjExMWY4Yjg1ZjYxIHJlbGVhc2UzMC1tYWludAorNjc2MjQgNGI5YWQzZTc0ODNlMzVkMDE4YjZjMzUxYWIzYzM0NzU3MzVhZjI1MCByZWxlYXNlMzAtbWFpbnQKKzY3NjI1IGVmZjRhYWI5NTg0Nzk1YTExMGIyMmQ5MjIwYzg3NzQyNGJjZDc3YjcgcmVsZWFzZTMwLW1haW50Cis2NzYyNiBlOWY5M2UyZjhmYmNhOGZmOTg1NGYyMDY3N2NjMTc5NDczY2I3OGZkIHJlbGVhc2UzMC1tYWludAorNjc2MjcgYjE0ZjU4N2Y1MTBlNjk4MjAxYWQwMDAxNTMyMjM5YmM4MzJlZGFiZSByZWxlYXNlMzAtbWFpbnQKKzY3NjI4IDBmZTQ5YWVjMjU3Y2JhNGViNTRiZDAzNjE3OGZhMjA1OTEwYzI1NmYgbGVnYWN5LXRydW5rCis2NzYyOSA2YWEwOTg1YWJiYThjNjg0ZWM2MDk1MTEzOWM4NTk4M2NiMzRkYTEyIHJlbGVhc2UyNi1tYWludAorNjc2MzEgNzg3NDM3NzE0MmY2NGMxYWQzYjRmMDc1NDQ5MDI3Y2I1OTQwYmFlZSBsZWdhY3ktdHJ1bmsKKzY3NjMyIDVkMGU5M2YwMzk4YTNjZjRjMGZhZDRmOTMyZGQzMjdlZDQ5ZjRiY2QgcHkzaworNjc2MzMgYWU5ODY4MTA1OGIyNDdjYTMwYjViNGE0NWQ1NDNmZjY4ZTE3NTZmZiByZWxlYXNlMjYtbWFpbnQKKzY3NjM0IGVlYzkyNTJiM2Q0NTQ4MDE4YmFiZDE5MjczMjBhNjY5NTQyYjBkYjQgcmVsZWFzZTI2LW1haW50Cis2NzYzNSBkYWJlZDY5ZDhhMmFiMmNkMjhhNzI4YThkYWQ0MTc2YWFhYmY5NWZlIHB5M2sKKzY3NjM2IDE3MGE5NzY4ZTdhZWVmOTRmZTgzOGRiYTVkYjg5YjhlZDUyNzI5YWQgcHkzaworNjc2MzcgMTU4MDdlMjYyZWJmMGZhNThkMzlhMTAwMTQ3ZTY2Y2VhMjdmMGNmZSBweTNrCis2NzYzOCBiOGJlOWQxZjBkNDU1ZDM4YTY4YjcyZjY5ZDk1ZjU4MjhlMWMxOGY3IHB5M2sKKzY3NjM5IDIxYTdlOGMxMTcwNzI2MmQxMTJjODVmY2IwOGIxZjYxODRmZGVjMWEgcHkzaworNjc2NDAgMGQzZGViY2I4ZDQ0OTE0NzA0ZDMzY2RkNGU3YThlZTJmZjBkOGEwMyBweTNrCis2NzY0MSA2MGVlOTAxYjczNTI5OGU4MmFhYjgzMmQzZDI4MGRkMTZlMDI5YjRkIHB5M2sKKzY3NjQyIDAyNGE5ODk3YzY1MTBhY2Q2NmYwM2JlYTgzZDVhYjZlNjkwN2ZiMjMgcHkzaworNjc2NDMgOTJjNzM0ODNjMWY3YTVjMjA4ZjYyYzNiNWI0YjVmMGIzZGViMzIzNyByZWxlYXNlMzAtbWFpbnQKKzY3NjQ0IGM3YWJmYWI0ZGNkYjk4OWVjNTI1ZWNkM2NhOGZlMmZlYmRhNmI5MDggcmVsZWFzZTMwLW1haW50Cis2NzY0NSA5MTcwMGQyMTIxYzgyZDNhODU1MjEwZDczZWJlOTRkYjc5MWM1ODI2IHJlbGVhc2UzMC1tYWludAorNjc2NDYgNjNlZTZhMGY3MzU4OTk1NGM3MGVjOTFiMDZlYmY5YTQzNWY4YjdjNCByZWxlYXNlMzAtbWFpbnQKKzY3NjQ3IGE4NmNkZjQ5YjgyMTQ0NjIzZDNjNGVkYzA1Mjk4ZmQ3ODVmZjM5NDkgcmVsZWFzZTMwLW1haW50Cis2NzY0OCAwMDliNDY2Y2M2Y2E5NDUyYThlNGY2ZjcyNTE0ZGI3MDc5OWE3ZDVmIHJlbGVhc2UzMC1tYWludAorNjc2NDkgZTA3YmMzNzk4OTgxMjVlZjBhNTIzYmFhZTA0YTQ2NDA1ZWRjYzJhMCByZWxlYXNlMzAtbWFpbnQKKzY3NjUwIDgyMGMxMTJjYzJhODY1ZjdmYmNjNjkzNTliMmMxMWY4YzBmNDdjZGUgcHkzaworNjc2NTEgNzI1MTkyYzY0YzI4NDkyOTcwOGE0ODhlNTkyN2ExYmU1MWRjNDg1ZiByZWxlYXNlMzAtbWFpbnQKKzY3NjUzIGM4YWEzMTU0ZGIwZTM2MmM4NDNlYjhlNjI4YTU0YzE2ZjM0YmVlMDAgcHkzaworNjc2NTQgYTllMzAyNTBlZDIwNjdmZmU5YTJiNzM2NGUyMzU4ZWUzNTdhYzg1OSBsZWdhY3ktdHJ1bmsKKzY3NjU1IDllMTFjOTJkYTQ3NmNlZDVjODczOWYzYTIxMDhjM2FjMzE1YTc5M2IgcHkzaworNjc2NTggZjRiMTZjMDJkMWY1OWU2M2RlNTg2Y2UwZmU4Yjk5M2EwYTk4ZThkYyBsZWdhY3ktdHJ1bmsKKzY3NjU5IGRjYTU3Y2IwYzIwMDFiMGUzZTkzMDVjZmUxNzhkZWJmZmFiYTBlNDkgbGVnYWN5LXRydW5rCis2NzY2MCA5OWRkMGQwMDcyNWE1OTVmOWRkZTVkMmM5NjMxZjZmYzc0Y2Y5ODc2IHJlbGVhc2UyNi1tYWludAorNjc2NjEgZGNhYzg4NWQwMGYxZGE5YWY4MmIwYzdiNjg5MDY1M2NhYTZiOGQzOCBweTNrCis2NzY2MiA0NjNiZmEwNzMwODEwMGExOTg2NjExZGY5NDM0MDllNDI2OTBmYjRmIHB5M2sKKzY3NjYzIDhiOWQwOGRjODUwMDQ4YjMxNjc0NTJlZDVkODJmNGEwMzA0MGM0ZjUgcHkzay1pc3N1ZTE3MTcKKzY3NjY0IDI2YTA5ZDM4NjY0YTAxY2Y1NzY1YWVkMmNmNDAyOTU4ODkyYjUyMDEgcHkzay1pc3N1ZTE3MTcKKzY3NjY1IGQwNDBjNDM1YWRlOGM5OGRkZjRjNWY0MmRjMmQ4ZTk4MDk0ZjViMzEgcHkzay1pc3N1ZTE3MTcKKzY3NjY2IGRjNjk2ZGViMmNmMjZkYTI0MDk4ZDk2NDBlYzdlOWNkNzlkYWZjNTcgbGVnYWN5LXRydW5rCis2NzY2NyA4M2Q2NDJhMzQzOWIzZTk5ZDdmZDI4OTI1MzRmNzAzMjg1OTFmNDBkIHJlbGVhc2UzMC1tYWludAorNjc2NjggM2RhYzk5MjgxOTRiN2FiNDJkMTMxZjE1NDViMjM0NTZiNWZmZGU2YSBweTNrLWlzc3VlMTcxNworNjc2NjkgMDkzZTRmYTUwZDg0YjY0ZDcyYjI4YmQ3NjFlNDk4MDg3YmNiYWViZCBweTNrLWlzc3VlMTcxNworNjc2NzAgMDVjYWY0NDBjZThmMDBiMTk3ZjkwM2FjYWMwOWRhMjhmODdjMWQ2NSBweTNrLWlzc3VlMTcxNworNjc2NzEgMzhlNjExNjg0NTRiMjU2YWZhZThmZmYxZjk3YWY5N2VlMzJkMDM2NyBweTNrLWlzc3VlMTcxNworNjc2NzIgYjc5ZDFkNzZmMTk1YTcxZGJmMzYzYTM2NGRkNTg3YjIxOGI1NTcyZCBweTNrLWlzc3VlMTcxNworNjc2NzYgNjFjYjZjNGFiMjBkYjc0NmQzNzE0NzFkNDg5M2ViMmJmZGU4ODFiZCBsZWdhY3ktdHJ1bmsKKzY3Njc3IGFkNjQ3NzE2Njk2YzQ4OGRlNGI5ZjIxYTM1NDdlNDkxODY1NDU5ZTYgbGVnYWN5LXRydW5rCis2NzY4MCBkNDcwYjlhN2U5ZTE4OTZkYzE5ZDQ2YmYwYzEwZDRlMzJhN2E4ZDcwIHB5M2staXNzdWUxNzE3Cis2NzY4MSA5ZmEwYTY1ZWNlMjNhMjkxZWNlMDkwMTk3ZjUwNjVhZmUzMjA5OGY0IGxlZ2FjeS10cnVuaworNjc2ODIgNDBmNzU2NjE1NTRkYjgwNzQwNjVlOTFjOWM0ZWRjMWFjYmQ2YmExNCBweTNrCis2NzY4MyBkOWU4MjhlODNkMTI1ZGVmNzYyMzVjM2Q5OGQ1ZjczYWJlZjhkZjY2IHB5M2sKKzY3Njg0IDY5NGQwNGVkMmI0M2RhYzY1N2FiZjVjY2U4MTdmZjM1ZjAzODdhOWYgcmVsZWFzZTI1LW1haW50Cis2NzY4NSA2MmM4OWNiZmI1MTFiODcyNTE2OWIzNWU0MWY0YWMwY2ZkOWIzNzVlIGxlZ2FjeS10cnVuaworNjc2ODYgOThhYmU5Y2RlN2NlNzc3MWI1NmYxOTVhMmU0ZDc5ZDFkZThhNjFmNSByZWxlYXNlMjUtbWFpbnQKKzY3Njg3IGE2ZGRkOTQ5ODNlYTNkMzhhMWMxNjQzYmIxMjlkMDdhNTk2N2RiZDIgcmVsZWFzZTI1LW1haW50Cis2NzY4OCA5YTEwZDQ0MDRiZDAwMmNmNTM0YWExZjk0Y2I3Mjk3OTVlZjJlZGIxIGxlZ2FjeS10cnVuaworNjc2ODkgNDgyMzlmNjIwOWIwNjRkYmU5ZTAwYmZiOTkwYjMwYmQ3NTgwNzU1OCBweTNrCis2NzY5MCAyNjUxOGQ0MWExODY4YzQ5NWM0NzNiYTUxMTFkNDU2MDM2ZDQ5OGRkIHJlbGVhc2UzMC1tYWludAorNjc2OTEgNTk2NzBiN2I3N2E2YjUzMDc3NWRkYzdkNDMwYzhlOWE2YzRiNDYwYSByZWxlYXNlMjYtbWFpbnQKKzY3NjkyIDRhZjVlMmE2MDlhYjM1OGZjOTAwODg1YmUyMTQ5NGNjOTBhMDVkNWUgbGVnYWN5LXRydW5rCis2NzY5MyBiMDg5YTU3NzdkODA2ZTcxNzM5MjhkMjVhM2VjMjgxZWFmZDVmYmEzIHJlbGVhc2UyNS1tYWludAorNjc2OTQgYWU4MTk3NTEwM2IwODljMmEwMWVjODA2MGY4ZDRkMmFkYjZkY2E2YiBsZWdhY3ktdHJ1bmsKKzY3Njk1IDIyYWE3ZGQwZWE4MWI5MThhNmRmNjdlNzRkNmJmMGU1NWM4YTBmZDggcHkzaworNjc2OTYgMmY4YzMxN2RmZjE3ZTdmNmE5MmE4MTMyYmViNDE3MDVhZWZjNjE3YSByZWxlYXNlMjYtbWFpbnQKKzY3Njk3IGFiZjgxNWI4MGI1ZDU1N2EwNTMzNjBiMDMyZTQzZGQxMGFmZmI0ZTcgcHkzaworNjc2OTggZmIyNDU2YTM2YTgzYTg4NTNlMmUyNzRhOGY1ZDczZWJiZTY4MDllMiByZWxlYXNlMzAtbWFpbnQKKzY3Njk5IGUzNTQ2OGJjNGRmNDExZGRkM2I4ZDdmMmUzNzViYThmMzBiMmY5ZTEgcmVsZWFzZTI1LW1haW50Cis2NzcwMCAyMWRlN2E5MTQ2Zjc0YTBjNzhhMzNlY2UwYThjYzljMDUwYjRkMTBhIHJlbGVhc2UzMC1tYWludAorNjc3MDEgMDFjMDIzZDkyMThlYmQ5OTM2ZGMyNmE0OWI1NzRkNDVmZDBiNTFlMSByZWxlYXNlMjYtbWFpbnQKKzY3NzAyIDcxNjc5NzU2NDY5ZTkwMTlkMmVhNTE2ZDY3MjRmZDlhMjk5MTM4NDAgcHkzaworNjc3MDMgOWMzMWE5ODc0NDc4OGJmNmZlYTNhNjM1ODE3ZDg3ODdmMjE1MTM4NyBweTNrCis2NzcwNCBlNGUwZmY3ZGRjODVlYzFlMTU2MTk3NmI5Nzg4ZWI1YzE1YTFmZmVhIHJlbGVhc2UzMC1tYWludAorNjc3MDcgMGRmMGZkZmM4ZTFiMmMwM2IxMGUwZTFjODNmYjk5YzYwZmJjOTA4MiBsZWdhY3ktdHJ1bmsKKzY3NzA4IGEyNTI1MTU0ZTQ0ZjI0MGU5MDM1NmFiMmEzMTNmYjZiZmExZDE2ODUgcHkzaworNjc3MDkgNzc2YTZjYWZjMjFhMzQ4MTk1OTMxMzE4ZTU3N2NjYzI2Zjk1MTk0MiByZWxlYXNlMjYtbWFpbnQKKzY3NzEwIDIwYTg0ZTA2MzA1MjU3MjMyZmY3ODZlZjkyNGJiMDNlMDFmYWUzMDggcmVsZWFzZTMwLW1haW50Cis2NzcxMSBkOTFlNjI4NjI3NjQ1MWJkN2IyYmM0YzliYWZmYjhlNmE1NjM3MTM0IHB5M2sKKzY3NzEyIDI2ZTc4OTQyMTY1ZTEwZmE2NjYyOTAwM2FiN2NkMGVhYTBiOGJkZTkgcmVsZWFzZTMwLW1haW50Cis2NzcxMyAzZTFjNDQ5ZDExZTBlYWUwMDJhMmUxZWE0Y2IzMGEzYjE4OTE3ZjBmIHB5M2sKKzY3NzE0IGRmNjY0OTk1MTQxMGVjODNkOGVjZDI2OTkwYWMxOGEyZTQzM2Y0MzkgcmVsZWFzZTMwLW1haW50Cis2NzcxNSAzMDBiOTVmYTdiNGQzZjliMWQ0NzE3NDBiNDczZTE4YzYxNGFmOGMxIHB5M2sKKzY3NzE3IGI0NTUyZTJmZmQ1YTQxODQ1MmQyYzEwYzI1ODhkODY2N2RmNGYxNGYgbGVnYWN5LXRydW5rCis2NzcxOCBmOWI5NTI5NGFjODU3N2E4NDYxYTlkZTFhNjI1NjFlZWRlNTgyOWI0IHJlbGVhc2UyNi1tYWludAorNjc3MTkgNTg1NWUzZTBlODViMTQ5YzZhODExZmY1YTNmNjk4OWNkY2RiODA4ZiBweTNrCis2NzcyMCBmZGVjNTc2NjExYmRmYTYzNzVjMjUyYzIzZTA3ZDk3OTlkYmIxM2Y0IHJlbGVhc2UzMC1tYWludAorNjc3MjEgMzNhMWUxMDA4ZTU0MGZiZTY2NTk4MDg5ZWI5ODE4Y2U3NzE4MmQyZSByZWxlYXNlMzAtbWFpbnQKKzY3NzIyIGVlZWY3MWRkM2NjZTAyZjhjNjY5NTg5ZjFmZDQ5OTAzZjM0NmY5YTcgcmVsZWFzZTI2LW1haW50Cis2NzcyNCA0NjQ2YzMzNTMxZGIzMDNmOWJiYTExMzkwYWNkZTY0NjRiZjBmNmM3IHB5M2sKKzY3NzI1IDI0NWU3ODdiOTBmYzEwZWE4ZmVkODBlMzg5NTI5MzA2ZGYzMWVjMGYgbGVnYWN5LXRydW5rCis2NzcyNiA2MWQwNjQwOWE2NjA2OTNiNDc4YTY1MTYzNDg4YWFlMGMyYjExODA0IHJlbGVhc2UyNC1tYWludAorNjc3MjcgMzNjZDA2NDkxODU4NTNlZWY3YzBhYWYxZWMxODdlOGRhOThjMDA1YiByZWxlYXNlMjQtbWFpbnQKKzY3NzI4IGE2YzNjNzE1ZTJiNzA3NDBjNGI2YjRmN2RjNmY0N2IxNmE3ZTU5MDUgcmVsZWFzZTI0LW1haW50Cis2NzcyOSBmYjVmOGFmZjIzZmQxY2NjMWU2MTJmZmE2MzE4YTU4NGRjMzM2ZmI2IHJlbGVhc2UyNC1tYWludAorNjc3MzEgMGI3ZGNkYjVjYTNhYWM4OWUwNTNiNjc5MmE0MWJhOTUyNjM5ZDYwYiByZWxlYXNlMjUtbWFpbnQKKzY3NzMyIDJlMjFjZWE0MzY3MDcxYzI2NDkyNTAzN2M2YTEzNzkyZjhiYjViOGIgcmVsZWFzZTI1LW1haW50Cis2NzczMyA0ZDI0MjI5ODk5ODFhZWJjZmM2MDE1YTY3MTIxYzAzYTc2MzY1NDM1IHJlbGVhc2UyNS1tYWludAorNjc3MzQgOWNhYTFlNWRkODJiZGQwMmU1OTU2Y2UyZTM1MDk1ZDE4YzIxNDQzYSByZWxlYXNlMjUtbWFpbnQKKzY3NzM1IDFmMWExMTc3Njc3NDAzMzFlOGIxODBlNTMwMzFlNDNlOGUzM2U2YjQgcmVsZWFzZTI1LW1haW50Cis2NzczNiA4ZDkwMmM1MTNiYTBmODU5ZjU3NDJhMmVlNGFhZWRiY2ViMzIwZWM4IHJlbGVhc2UyNS1tYWludAorNjc3MzcgNzZmMTg5ZWE1NTA5ZjFiMjQ5N2E1ZDVkODY3NzFlODUwZTAxMTc1ZCByZWxlYXNlMjUtbWFpbnQKKzY3NzM4IDNhMzMyYmYwNmRhMDY5ZWZhNzg3ZGU0N2JhOGNlZmFkZDAyNWZhMDQgcmVsZWFzZTI1LW1haW50Cis2NzczOSBlNmRiYWRhYjAxZDhhODUwMWY4NWIwMzJjYWYzNjNkMzBiNDJjMzRmIHJlbGVhc2UyNS1tYWludAorNjc3NDAgNWY0ZjZiN2RhOGNiY2E1NzRmZWJhZDkzZDQzNThmZGRiYTFlY2FiMyByZWxlYXNlMjUtbWFpbnQKKzY3NzQxIDEyZGQyY2Y1ZTBjODAwMjY1MDVhODNkODE2NzMwMTU1NzQxNDczNDAgcmVsZWFzZTI1LW1haW50Cis2Nzc0MiA5NTMwZDMzNGQyNjI0MjE5ZTdlZTFhZWNhZjMzNTMyZTkxMDI2NmJjIHJlbGVhc2UyNS1tYWludAorNjc3NDMgNTg0NjhmY2RlMDZlOWJmNTNiYTU4ZDVjNGY0MmU4OWU3OWI5YTM1MSByZWxlYXNlMjUtbWFpbnQKKzY3NzQ0IDg4YzA4YTYzY2I3NDE1NzBjYzI1MDk2Y2VlOTE0NDFmOWFiNjNmMDMgcmVsZWFzZTI0LW1haW50Cis2Nzc0NSA2ZTgwZWM0MTMwOTczZGU1NWY1MDg3MzhhMDlhYzlmY2IzMGQwMDRjIHJlbGVhc2UyNS1tYWludAorNjc3NDYgYmIxZDlhZTgwMmMzMTUyZDBlMzBiMGRmM2Y4MzA5NTA3NThmMWYwYyBsZWdhY3ktdHJ1bmsKKzY3NzQ3IDc0MGNlOWE1MjNmZmM0YWNjOTExMjAwMmJjOTkyMzRkODZjZDQzZTMgcHkzaworNjc3NDggYTA5MGFhYjU3NWM2ZWY2YzMyMmQ0OTQ3NjcwNGUyOGRkNDVlZjhlYiBsZWdhY3ktdHJ1bmsKKzY3NzQ5IDljNDI4ZGMzZDZmYjc3ODJlMTgwNTc0YWJiM2IzNjU3ZjIyODNhYzQgcHkzaworNjc3NTAgYjVlZmNhMzA0ZDJhZjkxZTFjZDBlNmU2ZmE5ZTExMGIwZTA3MDAwZCBsZWdhY3ktdHJ1bmsKKzY3NzUxIGYyMGViODA5NTM1ZTkxYzBiMTQ0MTZjYzU0NDczNTdjZmNiYmU5NWMgbGVnYWN5LXRydW5rCis2Nzc1MiA0MjY0Y2YwMGE3NWMwZmUyMDYyZWQ4NDYyN2YwNGU0NmYzODc4MThmIHJlbGVhc2UyNi1tYWludAorNjc3NTMgZGQxYjhkYTAxZDAyZDE4YmQzZGY3YzNjZWUyMjc1NjI4ODdjODgzYiBweTNrCis2Nzc1NCAyNTI5MjdhMmYzMmQ2ZmUwZmQwY2NmMzljNWM3MzkyYTc4MTdiNTIzIHJlbGVhc2UzMC1tYWludAorNjc3NTUgY2M3MjcyMzllNTFiMTY0NzIwZmVlNjI0M2QzMTY1NmY2ZGJmMWVlNCBweTNrCis2Nzc1OSBlYjA3MDA5Yzg2NjA1ODExZTY5MzVhYmJmZTk4MTg5MDg2MGE3NGQzIHB5M2sKKzY3NzYwIDE4Zjk2ZjY4ODNhZjVkNTA5MjdlNmI5N2Q0NjMzMjdlZjAwMjg1OGEgcmVsZWFzZTMwLW1haW50Cis2Nzc2MSA3MDMzYjI4Njg1YTEzYmY0NTU0NDVhNDE4YzliMGM1Yjk2NDAwNWFjIGxlZ2FjeS10cnVuaworNjc3NjIgYjA5NTE3OGMwNDkyOGEzNDZjMDJiOGE0NzQwNDcwNGI3ODJiYjY3MSBsZWdhY3ktdHJ1bmsKKzY3NzYzIDE4YmNlMmYyYTdjNTZiYWQ0Y2IzNjRmNmYxYjBkYzY3Y2M3NjFkYTkgcHkzaworNjc3NjQgZDE1NzQ2YWJmNmM3ODNjNjIyYWZlNGJkMjM5OTAwMmRjNTM4N2MyNCByZWxlYXNlMjYtbWFpbnQKKzY3Nzc3IDU3NWY5NzNmZjI0NDMzZTE1MmU4OGE0MzRjNGM4YTY3NDUyNGQyNTAgbGVnYWN5LXRydW5rCis2Nzc3OSA3MmE3YWMyMThlYTMyODNjZDFkNGIxM2I4ZWZkMzJmOWJhZmFiMmQ3IGxlZ2FjeS10cnVuaworNjc3ODAgOTZhYjA4ZWQ5NWE0MDJhZDdmOWZiZDZhZGExYzQyMTdiMDk4MTYxZCBweTNrCis2Nzc4MSA0ZGI2NmMyMGNhNjhlNWExOGEyNjY2ZDVkZmE2ZDY5ZDg3NTBiYTZiIHB5M2sKKzY3NzgyIGVhOWM2MDI2YWU3ZWEyNDYyY2YzYWZjZWViYjU1ODU3NjkxYjgwMDEgcHkzaworNjc3ODMgYWQ5ODJjMjZjM2RkNWY0ZDc3OWE2NTkxYTllNzQ2YjdjNWNlODY0NyBweTNrCis2Nzc4NCBlMzZiZTFlYzcyOTY1YzAwZTZiMGE2ZmEwN2QzMDhjN2FhM2ZmZTRmIGxlZ2FjeS10cnVuaworNjc3ODUgOWU5ZmNhOTRkMjg2MjE2OGYxNDA2OThmYTdjYjcyNDEwN2Q2NzZhZCBsZWdhY3ktdHJ1bmsKKzY3Nzg2IDMzMzZlNGI3N2EwNDEyZWFlODdhYTMyZmEzZjBmYzQyMGZlYWY1OGEgcHkzaworNjc3ODcgZGM2Zjk3NGZiN2Q0ZjgzMjQzNWQwNjE5YzM1Nzc0Zjg3ZjI3NTVlMCBsZWdhY3ktdHJ1bmsKKzY3Nzg4IDFhZjJiOGIwYWQ4OGNiOTQ3OWNiNDdkYWJjYWRiNWY1MjZjNzI4YjYgbGVnYWN5LXRydW5rCis2Nzc4OSBkYWNhYTFmNDQxOWQ3MDNjNjg2NTg2YzJhZDllNzY3ZThlMmU3NjUzIHB5M2sKKzY3NzkwIGFiNTFjMTUwOWJjMDRhNDZiZjlhNTQzMjljYTFjYmRhYTI5OGJjZjEgbGVnYWN5LXRydW5rCis2Nzc5MSBlZGQ3MjQzN2NlYzNmMzU3YjIwZWJhMGY0MDAxM2Y3ZTdlOTE2ZDJiIHJlbGVhc2UyNi1tYWludAorNjc3OTIgN2RhYjg4MDcwYmM3ZGZhZDA4OTUwNzA0ZTI5MmQ3ZDIxNWE3NTg1YiBweTNrCis2Nzc5MyBlYjI4NzZhZTA0NzY5NjBmZTQ3NjU0ZTJlOTBmMzJiMjMyMTdiNTkzIHJlbGVhc2UzMC1tYWludAorNjc3OTQgMjBmMTVjMGYyMWY4OGE5YWY4ODViN2MwNWMyZjA4MGJlNzMwOTRiNyBweTNrCis2Nzc5NSA0ODA1NzQ1ZDU1OTkzNzdiZjhiOWMzNWI2MzQ1YzBjYmNjNTRhOGJjIHJlbGVhc2UzMC1tYWludAorNjc3OTYgMjk5NjgzOTVmOTIwNTM2ODk1ODBkYmE2OWJkZGFlY2FiZmQ3NWM3YSByZWxlYXNlMjYtbWFpbnQKKzY3Nzk3IDE0Y2Q1ODg1NDRmYTFiMWM5YTM1OTViMzJiODFhMThlM2ZhYTYxZGUgbGVnYWN5LXRydW5rCis2Nzc5OCBkNTBkYWQyYjI3NTA0MmFkZWFmMzA5YTk1NmIzYWU4YjI0NzAwMTI0IHB5M2sKKzY3ODAxIDk1NDFhMmVjYzRmYmJjZWU0ZmM4ZTYyODY3ZTRmOGU4MGFmYWQwNmYgcmVsZWFzZTI2LW1haW50Cis2NzgwMiBiN2Q5YWRjNGMzNDM3OTZiYWUzYzg3ODBhYWI4MjhlYzgzNzRiMWU3IGxlZ2FjeS10cnVuaworNjc4MDMgMjJmZjlhNDYyOTg3NTVkZTU4N2I1OTZhOWE0YzdjZTMzNDFiYTk5NiBweTNrCis2NzgwNCBhMTc1YjE5YjRiZjJjZTk4NDEwZTYxZjI3OTlmMmRlYWE3ZjQ3ZjY5IHJlbGVhc2UzMC1tYWludAorNjc4MDYgOGM0MjRmMTE2ZmI4ZDBlZDc1ZDdhOWIyZTRjMjZlYjdmYmM3OGM4OSBsZWdhY3ktdHJ1bmsKKzY3ODA3IDIxZDMzNTdkY2JlYzQxZmM2ZmUwMGMwNDk4NTExOGFjODkwZmIxMzYgcmVsZWFzZTI2LW1haW50Cis2NzgxMCBhNDNhNmRmMThiYTRiYzY4OWMyMjE4ZGQwNDYwMDE3MWEyYzhjNzZjIHB5M2sKKzY3ODExIGFlZjA3MzBkZjliYTMyN2E4ZTE1ZDM3MmFlNzM3ZGZiNmVjNDJlNmYgcmVsZWFzZTMwLW1haW50Cis2NzgxMyA2ODk4N2U5MzExOTNmYWY2OWQyYmFiZDEwNDA1NzA2ODc1NDI4YjNmIHJlbGVhc2UyNC1tYWludAorNjc4MTQgMDc0MDdkZTE4Mzk0ODgzZTRmZGQ0NmNjOWNmNGQ5ZDE2ZGNhZjQ1MSBweTNrCis2NzgxNSBkMDZiMDRjNTdiNTM2MTgwMThmNzFiYmVhZDk1MDljYmUwYzM1NTA4IHJlbGVhc2UzMC1tYWludAorNjc4MTggOTRlNzlkNzhkZmYwZGZiNWM1M2Y0OTg0MmM3ZGY2NWFkNWI3OWU2NiBsZWdhY3ktdHJ1bmsKKzY3ODIyIGYwZGIwNmY0OWE0ZTMwZTQ5NjY2MjUxZjY0OGNlOTVlNzA5ZTE1NjkgbGVnYWN5LXRydW5rCis2NzgyMyAzMzY2ODY0ODE0NDY2MDAwZjc4YWQ5NzViOGM3ZGViYjhhMjM4ZTY3IHB5M2sKKzY3ODI0IDkyZTIxNjUyZjJmNGQzMmRiYmNmNmM1YWIzOWRkNGJjMDEyNmRjMjcgcHkzaworNjc4MjUgY2JiZTI1ODg2NjQ4N2E0MDYwZWRmYTUyYzhkMzk2MGExYWM2NTQyZCByZWxlYXNlMjUtbWFpbnQKKzY3ODMyIGZjOTcyOWM4MGI3OTFhN2NiY2U3YTZiOWM0NjlhYWNhNTIyOGE4ODQgbGVnYWN5LXRydW5rCis2NzgzNCAxODliNDYyZWU5ZDRmMjViZmMyZDAzMGI2OTE4NGEwOTA4ZDc3MjI0IHB5M2sKKzY3ODM5IDJlZTQ2NTM5MjdmNzJmOWJiM2ZmMTRiMzA4M2Q0YTIwM2Q2ODRkZmMgcHkzaworNjc4NDAgZGFmNmQzYWY0MGM0YjkzOWRkMWRjZjE1YTc3Nzk1ZmNmNjczNmY3YyBweTNrCis2Nzg0MSAwMDFhMjUxNWQ1N2IwMTg4YTRhYzQ1YmU5YThjNmY0YzdlYWYyNGZlIHB5M2sKKzY3ODQyIGFlYmY3MTI0ZGQzMjJhOGZiNTU5NGQ0NmU5YTY1MWRiZTViNmE5MWYgcmVsZWFzZTMwLW1haW50Cis2Nzg0MyA4MmU2ZmUzNzA3ODI5ZjY2ZjRkNGZkMGM4YTM1YTAzZGM1MzBkY2JhIHB5M2sKKzY3ODQ0IDI0YjgwYjc5NzhlYzIxOTRjNGZjN2UxMTAwYWE0MGIxYWZlMTFmNzMgbGVnYWN5LXRydW5rCis2Nzg0NSA1NmI3ZWJmMTJlYTNhZGZkOTAzMjQ2MDZlMGRiMTdjY2Y2OTQ4MzU4IHJlbGVhc2UyNi1tYWludAorNjc4NDYgNDdlY2JlMmQzZWVmYmM1M2M3NWJiYzFhNmVkZTczZGNlMzQ5NGQ5NiBweTNrCis2Nzg0NyBiZjIwYzM4NGJlNTYzOWFlYTA1MGU4MDJhY2U4NDEzYzBjOGNiYjNlIHJlbGVhc2UzMC1tYWludAorNjc4NDggNmZhNWY5NjllZmU2NDdhMjNmOGYyYTFiNDYyMmZkNTVjMzJlYjhmYyBsZWdhY3ktdHJ1bmsKKzY3ODQ5IDVlODM5MjlmN2VlYjYxZDZlMDA5YmIxZjQ2Nzk2MjM4MWVlZDVlZmEgbGVnYWN5LXRydW5rCis2Nzg1MCA5YTE4OTA5ODI0ODllNTQ2OTk3MjQwMGM2Mzc5ZjRiMjkxOTkxOWY0IGxlZ2FjeS10cnVuaworNjc4NTEgMGRiOTA3YTcwNzIzNjA5YWIxYTg3MDVkYTdmMGI3MzlmNjE2ZGUwNyBweTNrCis2Nzg1MiBmM2YxZjE0NjJjODI1MzZiYjIzNzk2ZTcwYzg1NTIyMTQ0ZWUyNGRiIHJlbGVhc2UyNC1tYWludAorNjc4NTMgNDhmMjczNzMzNzk1NmVlMTVlMzkxMGQ3ODNmMmVmNzQyNDliMDYzOSByZWxlYXNlMjQtbWFpbnQKKzY3ODU0IDYwODg1NmE3ZTU2OGI4NmU1MTYzZWE2YTg3ZWIwMTY3Mjg4YmM2NjggcmVsZWFzZTI1LW1haW50Cis2Nzg1NSAzY2MwNTZkMjFjMmY0NDM1YTUzNGQyMzM0NWJhZDljMGE5ZDliM2NiIHJlbGVhc2UyNS1tYWludAorNjc4NTYgYjU2MjMxMjI0NzI4YWJmMmNiM2VhYTNiNDdhZmQ3ODA5Zjg1ZGI5MyByZWxlYXNlMjUtbWFpbnQKKzY3ODU3IDQ5NmRmZjQ3YmM3ZWY2ZmMxYTZlMTc0MjI0NzU5OWYyYzlkOGRiYjMgbGVnYWN5LXRydW5rCis2Nzg1OCA5YmRlYjBiZTFkYWQ0ZGM4YjBmMTlkNjFjNjZkZjg5OWU2M2U5ZGZkIHB5M2sKKzY3ODU5IDFjOTRlNzk4Yzg1YjFhNjEzOTQ4ODI3YTAwOWM2YWJiYzMwY2Y0ZjggbGVnYWN5LXRydW5rCis2Nzg2MCA0MjhmNmM0ZTg0NDYyMTBkYzEzOTVhNmYwMWFjY2U1ZDhiNjU2OGU3IHB5M2sKKzY3ODYxIGQwMjgyYTI5MmIwYWE4YzI1MjUxY2NlNDBjOWQ3ODdkMjhmNjBjYjMgcmVsZWFzZTMwLW1haW50Cis2Nzg2MiA5ZmIyYTIzZWFjNDM1YTJiZDBkNmYyOTRhNWJmMDViOWQ0OGE2M2Q3IGxlZ2FjeS10cnVuaworNjc4NjMgMDY0Nzk0OGJlODQwZWZkM2JlODlhZTA4OGRhYTI1YTU1ZTQ5YTFiYiBsZWdhY3ktdHJ1bmsKKzY3ODY0IDY3MDIwNGNmMjNlMjI1NmQyYmRjZDQyMjIxZjdhMGFjNGZjYjU2YmYgbGVnYWN5LXRydW5rCis2Nzg2NSBhNzY1NjE4YzdlOTQ0ZjNlMDcwYTY1MjRkZmZhYzhlZTZhNDNhMmUzIHB5M2sKKzY3ODY2IDQ2Mjc5Y2ViZWE5Y2YxNDNjY2I5MGM0OTM3MzM2NWNlYWUwYTc3MWYgcmVsZWFzZTI0LW1haW50Cis2Nzg2NyA3NzNhZjE4NjA4ZTNhNjJhNDA5ZTkzM2RiNDgwOGYwM2JhZTBkMWVlIHJlbGVhc2UyNS1tYWludAorNjc4NjggZWRiMmVlZmI2ODU2ZjZmYjBmMzExOWQ1OGJkOTI0NDg5ZTAxMTQxNCByZWxlYXNlMjYtbWFpbnQKKzY3ODY5IDc4ZmMwOTZlNTA4NTI5OGZkMDExYTUzMWQ2NTJkZTQ5N2I5ZjIzMjUgcHkzay1pc3N1ZTE3MTcKKzY3ODcwIDdmZTcyYWUxOWFiMjkwYTM0YzQ4MzEzZGIwZTEwZWFmYTFlZTYzODYgcHkzay1pc3N1ZTE3MTcKKzY3ODcxIDQ1YmVhNTg0Njk0ZTM1MGNmMmI5MTI0MTViZGM2ODFhNWFkMjIxNjIgcHkzaworNjc4NzIgZWU5YzljYzAyOGNlMTU5MTk1N2U3YzhkNzEwMTZlM2QyYmZmZWVmNSBweTNrLWlzc3VlMTcxNworNjc4NzMgYWQyNDZjYjRmNjYyZTIxMWM0NzAxZmUzYjlmZGNiNjM5Yzk5NDA4MCByZWxlYXNlMzAtbWFpbnQKKzY3ODc0IDZlM2U1ODJmZTNmMzg4ZWQ4YjAyN2NhYjVlNmNjYjRkNmU1NzJhYTcgcHkzay1pc3N1ZTE3MTcKKzY3ODc1IDBjMGI5YWJiNTg0MjZkZDhhNjdkODBkNDZjNTk3ZmJkNGZmNzFiYzggcHkzay1pc3N1ZTE3MTcKKzY3ODc2IDhiYjlhODU0NjM5YjY5MDVlMDM5ZGVmODNhM2JhNWE3MmRhZDExMWIgcHkzay1pc3N1ZTE3MTcKKzY3ODc3IGZiOTkzZjA5M2NiZjQzYmRkMWMyYmJjNGQ2MTc1MzQzOGFiY2ZiYzcgcHkzay1pc3N1ZTE3MTcKKzY3ODc4IGE2NTRmMWUxYmUyMzFmZDMzYjg5MDkxNWVhNTM2ODg1YmQ3YzdjYTAgcHkzay1pc3N1ZTE3MTcKKzY3ODc5IDBkY2EyYjQ1Nzc3NWQ0NzI1ZGQ0ODIwMmY1ZjVmNjdkYTg4ZjcwOWQgcHkzay1pc3N1ZTE3MTcKKzY3ODgwIDU4OWVkZjYxNWFkYjcyNjJkZjljYTNiYTczZmFlNWQzMTczMThhNjYgbGVnYWN5LXRydW5rCis2Nzg4MSBhN2IzNTdmOWU4YTQ4ZWFkNjJlZDYxYWY5YThjNThjNmNmOWU3Mjk3IHB5M2sKKzY3ODgyIGM0ZmZmYTA5NzJlMzY4ZTBkNzM5OTViZmM4Njk4Y2Y2YTljYjMzZDggbGVnYWN5LXRydW5rCis2Nzg4NCAxZDk2MWZlNTRhNmY5ZDNjMTk0MTA2N2ExMzI3MjZiZmY1NWUxZGMzIHB5M2sKKzY3ODg1IGYzM2RjZjdlNmUxYzNlZDk0NWViYjliOWJiMmM4M2Y4MTc3MjY4YTIgbGVnYWN5LXRydW5rCis2Nzg4NiAwMWI4MDc1Mzc5MTU2NTFiYzE0M2JkMTAzMjM3MTU0MDFjMDhhOGU4IHB5M2sKKzY3ODg3IGU4N2EyNTYxMTg4YjUzMzUyMzFmZDZlYmFiYzdiMzJhMWJmZjliMTAgcHkzaworNjc4ODggMWFkZmFiY2JlMDczMTdmYWQ1ZGZmZGFkZWViNTYwYjBhZDZiYjgxNCByZWxlYXNlMzAtbWFpbnQKKzY3ODg5IDNhYjEwMmQ5Y2Y1NjA2YTc0OTY4MzM2YzE5M2IxMTFiMjY3YWIwYzMgbGVnYWN5LXRydW5rCis2Nzg5MCBhZjU2ZTNmMTRlYjc0YjMwZDM5NzNkNWJkY2UxMjIwN2ViMTQ4N2ExIGxlZ2FjeS10cnVuaworNjc4OTEgNTI5NGIyMTRlMWJlOThlNzk3OWJiZGY5ODEzNTM0NjBjNmY2OWJkZiBsZWdhY3ktdHJ1bmsKKzY3ODkyIDRmZGE0ZjU0NWY3OTA2OTAxMzMyNTEzNTZhZDkyZDgyYjg1MzRiYmMgbGVnYWN5LXRydW5rCis2Nzg5MyAxMTY2NzYxMGU5ZjU2YTczZThiNjg3ZjA5OWRlZTE2N2E2NzFmOTk4IHJlbGVhc2UyNi1tYWludAorNjc4OTQgNTAyZjYxZDFmYmFmNGI1MWVjMDNkZWViNzk4NWM1ZjhmMTUzZTkyOCBweTNrLWlzc3VlMTcxNworNjc4OTUgMWJmNzI3ZTJiMDhmZGU0ZTBjYWI4NjUzODAxNjYzNDgxOWIyMGJmMyBsZWdhY3ktdHJ1bmsKKzY3ODk2IGU0Njc1MTEzZDEwZWZhNzM5YzVkOGFjMzJlMzJiNGVkYmE1M2UwM2YgcmVsZWFzZTI2LW1haW50Cis2Nzg5OCBkZTdiYmM0ZDBiMWQxNzI1ZjIyOTIxMjBlNDM3OTdlNDRlNjkzMjYwIGxlZ2FjeS10cnVuaworNjc5MDIgZDc5ZmRkODQyMGYzNmVjODVkYmY2NDJmYWI3MGQ5YWEwZDIzOWNhMSBsZWdhY3ktdHJ1bmsKKzY3OTAzIGMzYjk3NTk5ZDdhMTk3NGQxZjI4ODVlOTdkNjE0ODE1ZGEwMzdiMTggcHkzaworNjc5MDQgMDM3OTliYjQ0NzcyMjgzZDgxMGU2MjFlMzllZWVlYjllMzhjMDdhMiBsZWdhY3ktdHJ1bmsKKzY3OTA1IGJkM2M1ZGU0Y2M1NDFiZjA5ZGI1MTM5YTY3ZTQ3NzU3YjUwZTJjMmIgbGVnYWN5LXRydW5rCis2NzkwNiAyNDEwMjdiMjRiNDVkOTQzMGFjMWU4MTkxNDEzMTU0NDQzYjlkOWY1IGxlZ2FjeS10cnVuaworNjc5MDcgOTRjMDU0NjYzMDZlMjFmMzIwNjIzYjAxZDBiZjI5ZjIzYWU5NWFlNyBsZWdhY3ktdHJ1bmsKKzY3OTA4IDRiZGVjYWE0ZWNhYjJiNmM0NTYxZGM0ZTY2NTYzNjU5NzZkNzQzYzEgbGVnYWN5LXRydW5rCis2NzkwOSAzYTI1OWExZTFkOWM1ZTA5MTk4N2ExZWY5NDYzZTlkNmNlNTA1ODNmIHJlbGVhc2UyNi1tYWludAorNjc5MTAgYWM4OGIzNDMyMDY2MGIwZDk1ZTA4ODI3NzA3YTcyODAxZTU5MTVmZSBweTNrCis2NzkxMSAzOTY1MzE0YmI5MjJjMjc2NWM1N2JjNTEwMTAwMDlkZTk3YTJiNjNkIHJlbGVhc2UzMC1tYWludAorNjc5MTIgMzEzMmVkMTJlYzEwMDZjMzdiYmMyM2VkY2Y1MmJiZjc4NGM1YzVlMyBsZWdhY3ktdHJ1bmsKKzY3OTEzIDA1ZTAxMDUxNWM0YmM1NzEwMjMwZGM0NjQyNzU5NTQ4M2E2Y2I1MmUgcmVsZWFzZTI1LW1haW50Cis2NzkxNCAwZjlhN2VkYjhlNThjODgxZTNkNTY1MDIyNDUwMzk5NGU2OGQyOTFjIHJlbGVhc2UyNS1tYWludAorNjc5MTUgYWE0NWExNzczZjZlMGNlNGE0Nzg3ZGY1ZTJlNWY4NDZmZGIxNDRlZSByZWxlYXNlMjUtbWFpbnQKKzY3OTE2IGEwYTZkOTkwOTMxMmFkOWMxZDg0NGFmNjZlOWM5MTkzMWI5Mzg1MmEgcmVsZWFzZTI1LW1haW50Cis2NzkxNyBjNzRmZDc1MTg3ZDkwNDg5MWUyMDQ3Zjc3YjU0MzI5ZWNlY2YzNTFhIHJlbGVhc2UyNS1tYWludAorNjc5MTggNzkyOTU2NDFmY2YwYmU1ZDdjNTI2ZjJmZmZjMjM4ZjZhZmQxZTQ1ZCBsZWdhY3ktdHJ1bmsKKzY3OTIwIDg3NTEyODhkZGQ5NjFjNjM4OGFiZmIxNDUxOWUzYmJiNGM0Yzc3NDkgbGVnYWN5LXRydW5rCis2NzkyMSAxMDA5N2JkNjU1NjRmMGRiZGNkMGZkMTY4ZTZkZWVlMmQ2OTczM2UzIGxlZ2FjeS10cnVuaworNjc5MjMgMDY5ZDk1ZGVlYTkxNTRlMmEzMjA1MTBlOTRiYjdmNzE0YzY2MjQ2OCBsZWdhY3ktdHJ1bmsKKzY3OTI0IGVmZDQwMDNlZThlYTVhYTM0NTAyNzYwYTdlYTI5NjA0NzEwMjk0OTggbGVnYWN5LXRydW5rCis2NzkyNSA1MDI3OTI2MzgwMWI1Y2ZkMjRkZThiOWVhODQyOTQ3MGUzOGFlZjU4IHB5M2sKKzY3OTI2IGY2Y2QxYTdhMzFiYjg2NDc3NWJhNDgzZTk2NGRmZDRjMzdlMDg3NDAgbGVnYWN5LXRydW5rCis2NzkyNyAxMTJiYTNkZjg1MWQyZmY2MzkwZWEyZTRhODFjMTgxNTg4ZWVhNGUyIGxlZ2FjeS10cnVuaworNjc5MjkgMGM4NTJjMTE2ZTIzNWRmMDVlMWJkY2JkYWUyNTA1YjU4NDhiYzI0ZSBweTNrCis2NzkzMCA5MmJjMTRlOGIzN2U2YWMzZDQ1ZTA4YTRiMGM5YTU2YmI0N2VkYWJkIGxlZ2FjeS10cnVuaworNjc5MzEgYzNiNDNjYjY3MDNjNjJmNjY3MGNmYmU1NmU4YzE2OTc0OTRjZjFkZCBweTNrCis2NzkzMiBmODU5ZDgyNDM2OWVhOWZiMDVlZmVkYjI4NzkyYzIyMzA4YTc4ZjFhIGxlZ2FjeS10cnVuaworNjc5MzMgYWRiOWI1NDdjN2ZlODNhNThmNTc2YWU0NTczMjE4NDYwOGM4OWU3ZiBweTNrCis2NzkzNCBmNmFlN2NjOWUyZTg1ZDc3NmExNDQ3NWViMTBhOGI3NWE0NGQ5MDcyIGxlZ2FjeS10cnVuaworNjc5MzUgNjk5ZmRkODIxN2YzYmE4MmQyOTJhZGEwMjFkYjIxZGRlZDYyOGRkMCBsZWdhY3ktdHJ1bmsKKzY3OTM2IGQyNzAyNDc1NTU5M2I4Zjc5MjEwYzNiOWJjMzE2NWVhODZlZjZmOTUgcmVsZWFzZTI2LW1haW50Cis2NzkzNyAzMDNhZDQ1YTk2N2ZjNTFlZTc2NTE0MDllZDRhMTY3NmJkZDZlMzcyIHB5M2sKKzY3OTM4IDY2NWM0YWM0NzA3M2U3M2Y4OWRkODMyMDFmZDlkNjhiYmFjM2MzYzggcHkzaworNjc5MzkgZGI1MGRjMDA2MWVkZWIzYjVjMDYyZDAxY2UxNzM5Yzc0YTllMmMyZiBweTNrCis2Nzk0MCAyZTUzMjYyYzU1ZWE2N2VjYWVhMmRlM2FiZDI3YTY3MzhkN2U3NWY4IHB5M2sKKzY3OTQxIDExMzc1MWE4OTkwYzk0ODcyZDliN2RhNzViMWZhNDc4ZjE0OTljYzQgcHkzaworNjc5NDIgNDA4YTlmZjRmOGIyYzgxZTM2YjZlMzkzMzUxMmJkOGZkN2M5ZWM0OCBweTNrCis2Nzk0MyA3YjFkMGNlYTk4NzA2NDgyNTA3ZGQwMzA3YTZiODJlMTk1ZWYzYmVlIGxlZ2FjeS10cnVuaworNjc5NDQgZmIxNTBmY2YxNjVkMGZhNjNhMmYzNGUxN2ZjNjFmOGE0YjZiNjVhOCByZWxlYXNlMjYtbWFpbnQKKzY3OTQ1IDRiZGY5ZTM0MjI5MWE2NGU1ZGY5ZTc4ZjNkMzkzOTQwNWFjNjI1Y2EgcHkzaworNjc5NDYgOTRmOTk2YmM2NGIzYmY4NDg2ZjJiNTY3MTNhMjQ5Zjg3YmFiMGVmYyBsZWdhY3ktdHJ1bmsKKzY3OTQ3IGZlYzcyYzliMjcxZDg5NjQ1MjU0Y2I2YjA1ZTUyOTEwZGU5NDFhNzkgcHkzaworNjc5NDggYWQ3NDQ3YTE2NWJiZmFiNWMwMjYyZmFmZDEzYjc5NTA2NTkyMzBhMCBweTNrCis2Nzk0OSAxZTEyMTQ0MTAzNzVhYWRlZTFjZTYzMGQ0YTliOTZjZmY1ZTA5Y2IzIHB5M2sKKzY3OTUwIGQyODFlYmY4ZWEzMGY0Njk1NGMxMmE4YzhiYzZhNGVhNzc3OTc2NzAgcHkzaworNjc5NTEgZTY3MzYzMmUxODg1NjUzYzBmZTZhNGUxMWNlNTYxZWNkMzdlOGU5ZCByZWxlYXNlMjYtbWFpbnQKKzY3OTUyIDQxZDdkOGYwODUyYjI4NDc5Y2Q1YmVhNGRkZGQxNDg4OThlODdmMmMgbGVnYWN5LXRydW5rCis2Nzk1MyBlMmJiYmMwNmQ5MmM4MjYxZmYzYWM3YmE1YTlmNTUwYWU2NjI0N2JjIGxlZ2FjeS10cnVuaworNjc5NTQgOTNkYTlmMTRlNWI1OGJkYTVmMjI5MzMzMzI3NDM0MGM1ZGU2NWNhYiBsZWdhY3ktdHJ1bmsKKzY3OTU1IGFmZjZlOWRkZGQ5ZjgyOWQ2NWU0ZWJmM2JhYzk2M2QxMDIxZTcxYmEgbGVnYWN5LXRydW5rCis2Nzk1NiAzOTkxZjM3ZWJjYTMxY2NjNzcxM2Q2MjA2ZWI4ZWQxYzA5ODU4NGUxIHB5M2sKKzY3OTU3IDc1YjRlMzIzNDBhOGFiMTBiMWJjYjYwNWY1NTQ3YzQ5MmZkZWNlMGUgbGVnYWN5LXRydW5rCis2Nzk1OCAxYjg4OTMyZGVmZGIyOGI0ZDc5OWIyZTc4YjdjOWYxZTRkMzFlYmYxIGxlZ2FjeS10cnVuaworNjc5NTkgYmNkZmRjMzY5NTcwODUwYTIzYTdmYjExNGZhNWM0MWM3ODY0NTVmMyBweTNrCis2Nzk2MCBhMjhmOWU3NTBiNjQ4MzNlZmM5M2ViZjY5OWRmNjJlMTYyOGQzNWZhIGxlZ2FjeS10cnVuaworNjc5NjEgZTlhMGRlNDhiNzQ3ODRkMDUwMzcxNDgxMTU4NjYxMGQ5MDljYjkzNSBsZWdhY3ktdHJ1bmsKKzY3OTYyIDAyNDMwZTQ0ZDUwZWNkZWViZDFmYWUwOWRhYWVkOTAxNTkxOTg3ZmIgcHkzaworNjc5NjMgZmJmYTFkNjcyNGRlOGMyMWEwMjAwZDZlMGNmMzZiODA5ZWNmMzVhNiBsZWdhY3ktdHJ1bmsKKzY3OTY0IDFlZmExMzA0ZGZiMzI1MDk1YWYyNTE0NTRkYWUzYjNiNjNlNzM0YjYgcHkzaworNjc5NjUgYTllNWFjNGYwOTFjZDVkYzNmNjdhOGFlMGEwNGQyY2Q5MDViMTgwNyBsZWdhY3ktdHJ1bmsKKzY3OTY2IGE2NDk4ODRjNzlhODE0NjhhNmJiM2JjYzU0MjQzMGEwYWJhMjQwNmYgcHkzaworNjc5NjcgY2IzNTI0YjY0MDdmNmUzOGNlZjU5NTcyNThkYWQ3MGI4ZTc5MmM0MiBsZWdhY3ktdHJ1bmsKKzY3OTY4IGVhODdjYzA2OGM1NmY0OGEwOTU5NTljZjg0NWRmNWI5YjE0ZGM1MjEgcHkzaworNjc5NjkgOGJmYjQ2NjQxNGFjOWI1NzQ2Nzc0MDFlYzVmMjgxMTQxMjNhOTgwMyBweTNrCis2Nzk3MCAwMjdhNmYzYWM4NzQ3N2M1ZWM5NDM2NjQyMTQxOTc0MWNkZjA2M2FmIGxlZ2FjeS10cnVuaworNjc5NzEgNWVjM2UzZDU0YWE2NWFmMjYzODA0ZmU1MjE1NTc4Mjc1NDk1MDhhMiBsZWdhY3ktdHJ1bmsKKzY3OTcyIGE0YTg5ZDNlNDFhZjU5YzRiNTRjZWExODdhNzhiMjk2Y2M3MmUwMzkgcHkzaworNjc5NzMgZGIwZGRjZTI4ZDBmODI3MzRmYTZkNjg5NDBmZGViN2ZlZDM1OWFjMyBsZWdhY3ktdHJ1bmsKKzY3OTc0IDdhMDExNjgwZTE1MWJhMmUyM2UyMTdmMWMwMzEyODk0N2UyYTEzZDUgcHkzaworNjc5NzUgNDQyMDc4ZjA3OWFhMDI1MTFhN2MyNGE4OGNlMTZlOWM1YjNkZmJhMSByZWxlYXNlMzAtbWFpbnQKKzY3OTc2IDlkYjNkM2QzOWNjM2U3NTc1YTkyYmFjMTQxNWRlOTU4ODIwMjRkNTAgbGVnYWN5LXRydW5rCis2Nzk3NyAxZTBkMjA1ZmU4ZDcwZTVmOWYxZDYxMzBlYzYzMGFiYWZhNzk1MjcxIHJlbGVhc2UyNi1tYWludAorNjc5NzggNmEwNTY2YTUxMjE4NGJkNTU3OWZjNDNjZTBkZmQwMTg3MGJiZDM5MSBsZWdhY3ktdHJ1bmsKKzY3OTc5IDM0MWJmNzZlYjZlYjcyYjUyODY1ZDQzNGFmY2M2ZjIwMjVlMmQyNmIgbGVnYWN5LXRydW5rCis2Nzk4MCAwZWE0YmQ1OWE0MGQ2NmM3MTM1MTY5YjRlMGIwNjY4ZmY3NzcxYzVjIGxlZ2FjeS10cnVuaworNjc5ODEgZTc3MjA2MTJhNzk2OTg1OTA5MmYzMzVjNWM0NzQ3ZjQ1ODMzMzY4YiBweTNrCis2Nzk4MiA2NDFkMjc5MDNiYzU3NDlhZTBmN2IyNzFmYjk1N2JmZjk0OWY0OWU4IGxlZ2FjeS10cnVuaworNjc5ODMgYmRlZDViZDYwZTk1NGRhNjUzNWNiMmEyNjU0NGM5NWIxNGU2MjU5OCBweTNrCis2Nzk4NSA3Yzc2MjRhMzNmOGIzMjMzNDRiOTEwNGFhYmE5MzkyNzhhNDA2ZTI4IGxlZ2FjeS10cnVuaworNjc5ODYgMzc1NTQzYjk4MjQ0NjAyOWVkM2M3NGQ5ZGY5OWEzZjI1NjYwZjMwNSBweTNrLWlzc3VlMTcxNworNjc5ODcgNzNkY2I4YjQyMWY4MGQxOTVjNmEyNzgzMzAwYWNlOWNkNTFlY2U0MyByZWxlYXNlMjYtbWFpbnQKKzY3OTg4IDJmMTVkNTlkZmI4MDQ4ODAxOGFiZTliM2RlMzEyMzdjY2Q3MDgwOTIgbGVnYWN5LXRydW5rCis2Nzk4OSA0NTdlYzg4NGFmMDQ1YzM1ZTlkNjllOTFjNDA3NmVmYzg5NzMwOThiIHJlbGVhc2UyNi1tYWludAorNjc5OTAgZTJlYmFjMDYyNDMyMjEzY2U0MmY4NTEyY2I3NWM5YjM3ZjQxMmZlNSBsZWdhY3ktdHJ1bmsKKzY3OTk1IDZmYjdkOGY0MjczZjJiMDc1MDIxMWEyN2RiMmEwZmM1NGJiYzBjN2YgbGVnYWN5LXRydW5rCis2ODAwNiAyYWQ2OGRkMGFjOTBmN2E0Mjk3NGI2ZDI0NWU5ODFjZDViYmQ1MWRhIGxlZ2FjeS10cnVuaworNjgwMDcgODdmNTQzMmI5ZWRjOGQ5YTUxZTcyMDBlZTZhN2RkZjFhMzkxY2M2ZCByZWxlYXNlMjYtbWFpbnQKKzY4MDA4IGI5NWRkZTk1OTk2YTliM2ExNDdkYmJkY2FjMjRiNDVlZWZjYjBiNTQgcHkzaworNjgwMDkgODdmODZjY2U0M2IxNTM1YmZiYWRhYTE5MmJjY2ViMzI1Mzg2ZGZmNSByZWxlYXNlMzAtbWFpbnQKKzY4MDEwIDM4MzU3ZTFkMjFlNmFiOTgyOWVhMTE0MWU1ODFjOGNkYTJjMTYyMmYgbGVnYWN5LXRydW5rCis2ODAxMSBiOWVmZGQ4ZjhiMzA5MWVmYzg3NDIzN2Q0ZWM1NzMzNjhiYzc4NDJmIHJlbGVhc2UyNi1tYWludAorNjgwMTIgOWY4MzYzMDg4NTM2YTcyNzgxNTZmMDU5Nzk4MjgxMDM2NzEyZjMzOCBweTNrCis2ODAxMyBhMWFiZmUwMjcwNzRjOTk0ZTZlNGM2NjIxMzhmNmM3OGYyODYzMjAwIHJlbGVhc2UzMC1tYWludAorNjgwMTQgODlhM2Y1YzliNTAzMjI0Y2VhNzEwNTA4Y2MyZTkxNTQ1NWZkOTE1MSBsZWdhY3ktdHJ1bmsKKzY4MDE1IDcxZTczMmM5MzIzNDQ1YTIwZDMzMzM0Y2YwNjFiNGFhN2NjODZiMTEgcHkzaworNjgwMTYgNzBkZTJlMDkxZTU4MjZjMGRmOWIxYjZiYmJkMmM4NWU5NDg2MmZjZSBsZWdhY3ktdHJ1bmsKKzY4MDE3IDE4ZDgxN2E3YTM5ZmE5ZjhhZGUzZDQwMjQ5ZTIzMTE3ZDMwZDU1ZjAgcHkzaworNjgwMTggMzRjNzNhNDYzYjM1NWE4YjEyMTYxY2FiZWEzNDcyY2M0YTAyMGMwMSBsZWdhY3ktdHJ1bmsKKzY4MDE5IDI5MzJiMzdmMWYwNDQyMDVjZWRhY2YzZjRmN2E5OThiNzIxYmRkYTkgcmVsZWFzZTI2LW1haW50Cis2ODAyMCA0NGVhOWVhYzhjNWI1MjUyMmM0YjBkZTgwNDRhN2NmN2U2MDEyYTJiIHB5M2sKKzY4MDIxIDdmNWFhN2U1NGFkNWExMjQyNzNhZmNhODYwNzY3MjU5Y2JjMmQ2NDkgcmVsZWFzZTMwLW1haW50Cis2ODAyMiBmN2EzZjE0MTYxZTE3NTc3Y2ZlNTIxNjdkYTkxNDcxYTMxZjlmYzVlIHB5M2sKKzY4MDIzIGFlMWUxMTQyMzcyOTVkOWZmMWMxNTI3YjQwZjI1Yzc2ZTJhMGVjZDQgcmVsZWFzZTMwLW1haW50Cis2ODAyNyAxYWVhODNlMGFlOWYwMmViYzkzNzVlZmEwZDc2OTBkYWJkMmI4NDFjIHB5M2sKKzY4MDMwIGJjMWIzNzQzOTVmNDAwMDFhOTJkOGFhZDQxNDg2MTNiYjk0MDQxZmEgbGVnYWN5LXRydW5rCis2ODAzMSAzZDQ0N2I3YjEzNjM0ZmYzNGMwYjljN2RlMzQxY2E5ZTg1YWUzY2RiIHJlbGVhc2UzMC1tYWludAorNjgwMzMgZjE0NjJkOTI0YTljMjFlZTk4MDRkYTZiMGEyOTc4MWMwMzY0ODU0MCBsZWdhY3ktdHJ1bmsKKzY4MDM1IGFkMjBiNjliMThiNzBiMTgyNzE1NjZhOGViYjUzNDUxMzM5YzgzOWIgcmVsZWFzZTI2LW1haW50Cis2ODAzNiA5YzA2ZmI3ZDEyNjAyZWM3ZDZjZGViNjgwMWE2NjBiYjRlOGRlNmY3IHB5M2sKKzY4MDM3IDhmYTYxMWJiYjA3N2ZmNzEwOTI3NTliZDU4YzYzZjE4MTk5ODE0YWQgcmVsZWFzZTMwLW1haW50Cis2ODA1MSA3YWFlZjRkNWY4ODBlNzg2M2ZkNjA2MmUyZTMxZmVkY2Q0ZTFlNGY0IGxlZ2FjeS10cnVuaworNjgwNTIgZTc4MmY5NzExNmRjMWNmMTI4MjE0NWVhYmRiZTJlYjVkNDU5NDRmMSByZWxlYXNlMjYtbWFpbnQKKzY4MDU3IGY3M2ZjNDQxNzQ0ZjA2NTdkODA3MzM4ZGIxMWU5ZWU4NjNiNDY4ZGEgbGVnYWN5LXRydW5rCis2ODA1OCA2MThkMzM5N2Y4ODhjZTU0MzI1MWY4MjhjZjJiNjRiZTRhNjQxY2U1IHB5M2sKKzY4MDU5IDI4YWVjYmYxZTgzMmIwNWY2Nzk0ZGFjN2UxYzVlOWE2YzQzZmEyZTEgcHkzaworNjgwNjAgNDNhYWNiZTY0N2NiM2Y0OWE1N2UwNTIxZWY2NDdhYmQxNzYxMGExNyByZWxlYXNlMzAtbWFpbnQKKzY4MDYxIDcyOTk5OTkyOWVmNGI1YmQ2YWIxZDE1MzA0Y2ExNGYzNTU3M2JlMjcgbGVnYWN5LXRydW5rCis2ODA2MiAxMTU0ZDAyNDViNjYxMzhiNGQzZDM3NWQ1MWZjZGE3ZGYyNDllNTczIHB5M2sKKzY4MDY0IGFmYWIzMTkyNTJlNzkyM2RmNDE4ZDBiOWYzYWNhMWFkYWM0MGNhY2EgcHkzaworNjgwNzQgZmE2ZmM1NTI2ZjcxZjEyMzQxNjQ2OTYwNjNkYzM0NThjZDU5MDJhYyBweTNrCis2ODA3NSAyYzg0NGNmYzM3NWEzMWMyMjg2ZTM4MjI5ZTlhYjNhZDY4Y2JjZjI1IHB5M2sKKzY4MDc2IGMzMzhiZWUyMTE3Mzk3MDU2NzA2ZTBlYjc4YzlkYjRjNTZhMDQxMmYgcmVsZWFzZTMwLW1haW50Cis2ODA4MCA3NDMxNjM4ZTdkZDhmYWNjNDVmOWIzY2RjZmI1Y2Q1NjZjNjhhMTI0IHJlbGVhc2UzMC1tYWludAorNjgwODEgOGE0ODM0MzljYjU1ZmViM2ZlOTNjZjNmMDU3MjU5M2M1MmM5YjEyNSBsZWdhY3ktdHJ1bmsKKzY4MDgyIGQ4OTc1ZjI0YWY4YjU4ZGY5Y2VkZWY3ZGY0M2Y2YmI4OWNkYzc5YTUgcmVsZWFzZTI2LW1haW50Cis2ODA4MyA3ZDU1MGNiNTM2OWUwNWFlNmM3YTE3NDY3YjhhMGQ4ZTI4YzhlMWUyIHB5M2sKKzY4MDg0IDNlMThiNDU5ZDRjODg0MWRlNzkwMzg5NzUxMTkwNDdkZTZjMDg2NWMgcmVsZWFzZTMwLW1haW50Cis2ODA4OSBiNzVkNzY5MTUxYmFhOGYwYTExNDlkYWE4YzQzMWM3NDc2M2QyZWUyIGxlZ2FjeS10cnVuaworNjgwOTAgMDJmY2Q5YzVmZWZiZjk4MGZjMDE2OGJiZWE2YzY4MTRhYjE0NTdiZSBweTNrCis2ODA5MSBlZjY0OWNlOWI3ODM5YTA3NDdjNDEwODc3NjM5ZTU3Y2E5MjY3MDU1IHB5M2sKKzY4MDkyIDA2ZjRjMzdkNjVmOTY4OWFhNWMyMzgwZjkwZTJmZTY1NGNjMmJlYmQgbGVnYWN5LXRydW5rCis2ODA5MyAxNWE2NjI2MDg1ZjRhNTEzZWU0MjRjNzhlNWM4MmFlYTNjNTEyY2IzIHB5M2sKKzY4MDk0IDZkMTYzYzJhZWY1NmI4ZGFhYTI0ZWQ0OGRhZWI2ZjdiYTVmMDNkNTkgcHkzaworNjgwOTUgMzg1M2MxNTUzMmM0ZWRlMzNkZDY5YTc1N2YyMWM1ZjIwYzhjZDMwNyByZWxlYXNlMjYtbWFpbnQKKzY4MDk2IDAyMmQ5OTljNGQxYTk0YjE3YjRhYzgxZjBlZGY3N2I5NmVlMzBmNGIgcmVsZWFzZTMwLW1haW50Cis2ODA5NyA5YzJhYzc4NjY2ZDQ1NzgzMjUwZmY2M2JjZmMwMDBjYmM3ODU3MzY4IGxlZ2FjeS10cnVuaworNjgwOTggZGNiZTk5YjBjZTgzMjI3NzEzNmNhNTI1MjQ2ODkwMjgwNDMxOGFkZCByZWxlYXNlMjYtbWFpbnQKKzY4MDk5IDFjNWQ5NDIxMjhiNjg4MDU3ZmY5NWY1MzRmOGFlNzk4YmQ3MzA2NTEgbGVnYWN5LXRydW5rCis2ODEwMCBjNDMyMjY4NzViZDQxMDc5YjI1OTgwYjY0ZDZhM2NmM2NmYTNhMWI2IHJlbGVhc2UyNi1tYWludAorNjgxMDEgN2UxYTk1YjI2YTVjYTZjYmQ0Mjk3YjY1ZmE0OTkwMjNkNjQ5Y2I4NCBweTNrCis2ODEwMiA1Y2MwNzNkNjYxZjdiNmQzM2IyYzNlYzU0MDZkNjg4YTI1MWZkZmVhIHJlbGVhc2UzMC1tYWludAorNjgxMDMgNTA3NDgzMGU5Yjk5NDY0MWYxNTVmYTg5NWJlZjlhY2NhYjFkMWMzZSBweTNrCis2ODEwNCA3MjM5ZmJjZGNkNGZiYTY1YjFjYTM0Y2EzOWU2OTczMTFkMmVlNWNlIHJlbGVhc2UzMC1tYWludAorNjgxMTIgMTNkYWY5OWRiMDM1NzcwYTQyOTg3MWM0MzM2NzBmOTRkZmVjMjY2ZCBsZWdhY3ktdHJ1bmsKKzY4MTEzIGJmNmYyZGZjMzEwYmExNGQ5OTM1NmExMGFjNzE5NGIyMjg1MWM4MWYgcHkzaworNjgxMTQgZDMyYTY2OWY5NmRhOTkzZTA5M2U1ODhkMmRlM2JhMGU1NTAwZTE2MiByZWxlYXNlMzAtbWFpbnQKKzY4MTE1IDkyYWQ5NjU0NDI1MjU4MDRhN2RjNjc3N2M1MDA1NmQxMTFlODc5NzQgbGVnYWN5LXRydW5rCis2ODExNiA1OWYzYmYyYTMyOGQ0NDg0MmM2YzI5OTNmMDY4OTcxZTc1MWM2M2U5IGxlZ2FjeS10cnVuaworNjgxMTcgOTI3ZjVkOTA4N2Y1YTE1ZTVhNDk0YWM5ZGFmMzg2Y2ZjNjk1ZmU5ZSBsZWdhY3ktdHJ1bmsKKzY4MTE4IDM5NGUzODllODlmMDlhNmVmMzhhMGI0YTU4NjIzMDY0Y2I0MmExMTUgbGVnYWN5LXRydW5rCis2ODExOSAyMGVkYjdlNTE1OWY0ZGMyZjkzNTFkYWZkMGMwYmQ5MGQ3MzMwMTkxIGxlZ2FjeS10cnVuaworNjgxMjAgZDFlNTM2YzZmYTJjYjIwNWY0YWRlM2E3MDgwMWEzMWZmMmYzNTYwMSBsZWdhY3ktdHJ1bmsKKzY4MTIxIDY4M2IzZjhiMTJiNDRhMjM3ODlmMmM0YjcxODQ5YmI5NTQ3Yjg4YzUgbGVnYWN5LXRydW5rCis2ODEyMyBmMzU0MDNhMDExYjk0YzU4YTljYjY1OGMwMWEzZTY3NmRhMThlNzQxIGxlZ2FjeS10cnVuaworNjgxMjQgMWM0ZTY3OGExZDNiMWVkZmIxMzcyYjFjY2E5ZDFlYzk1Y2NhODFhMSBsZWdhY3ktdHJ1bmsKKzY4MTI1IDFiODJmMmI4MmZkOTIxMWFkNTI2ZjNmOGU4ZmE5Mzc1NDRiMjg5YzIgbGVnYWN5LXRydW5rCis2ODEyNiBlNWRiZjM4YjFkYWMxYTcxYzg5ZWRmYTQxMWQ0YTQxYzk0NDcwMmFkIGxlZ2FjeS10cnVuaworNjgxMjcgMzZlOTc5M2ViYjVkNDgzYzQ4MGUyMzNjOTU4ZDk3ODg5OWEzZDk5MSBsZWdhY3ktdHJ1bmsKKzY4MTI4IDA5OWI0OGZlOTIyYTBkZjI2N2QzOTg0NDhmYzhjZjRjNmZjZGM2ZmIgbGVnYWN5LXRydW5rCis2ODEyOSBjYWI4NTAxZjhhZTZiMzNiMjk1ZDJmYzBiOWQ0ZTBjZTkxNjVjNjk3IHB5M2sKKzY4MTMwIDg0NjNmZjg2MWEyNmQ4NGQ3Mjk5Y2ZkYTA2MDIyYzNlNTM0OTFiODIgcmVsZWFzZTMwLW1haW50Cis2ODEzMSA0MzZlNjMxN2M3YjRiOTEzNDAzM2QxYzI1MDUwOTNmNzA5ODI0MGZjIHJlbGVhc2UyNi1tYWludAorNjgxMzIgNGZiZjUyYzk5YjZlZDQzNGRiMjQwYzdhMDk1NDgwNTdjMjM5ODQzNSBweTNrCis2ODEzMyBjN2E0NWNiYTA3ODVkNmNhNTZiMzMyMTIzNjkwYWYzMTZlYTI2NjBhIGxlZ2FjeS10cnVuaworNjgxMzQgMGU1YjI0YWRlNGEyMTc2Y2UwYzUxNWM0YmVjNTg2MDQzNjJmYzNkZSBsZWdhY3ktdHJ1bmsKKzY4MTM1IGRmMzkyM2MzNmVjNTlmN2QyMzhmN2FjODg0ZTA4ZTlkMmJhMDhmZTAgcmVsZWFzZTI2LW1haW50Cis2ODEzNiAwNmUxZjdkOWRhODNkZTU0MmFkOTRhNDY2YmRkODY4NzMyNzc4YWM4IHB5M2sKKzY4MTM3IDlkZDJlMjU3YWM3YzIyZTVmNGI0NzMyNzgzOGIyZTAwOTU4ZjAwOGEgcHkzaworNjgxMzggYmIzMTIyM2FiZmFhOGM1YWQ2MmQyOTU4NGJhOGFlOWQwZjkyZDdjZSBweTNrCis2ODEzOSA5ZjYwNGQzM2E0MmY3MGJlOGUwNGE0MTZlNDJlMDljYjRhNDcxMTVhIHB5M2sKKzY4MTQwIDJiMTNkMjAyYTQ3ZDczODZhY2E0NDAyNDQ0Mzg4YzcwMDY5ZTJlMTMgcHkzaworNjgxNDEgYWQ0ZTUyZDE1NGY0YTI5ODgzNmQ3NTdlZjQyMDBmNzE2N2FkMmI4NyBsZWdhY3ktdHJ1bmsKKzY4MTQyIDVjNmZlZDczYjZhOTE4MmE5ODU4YTFhODk3Y2JkN2Q1YTE4MTRlOTAgbGVnYWN5LXRydW5rCis2ODE0MyAyZGViYmU2NDQ1ZTBmZDkxYmNhMjJmZTQ2MzBlODM3NDFmMTkwNDcyIHB5M2sKKzY4MTQ0IDQ4MDE5NjlkYWRlZTNjZmQ3ZjJkZTY0YWNlMzFhZGRlMWM1NWM5ODcgcmVsZWFzZTMwLW1haW50Cis2ODE0NSA2MDk3Zjk3YjBkMjIwNzNiYTBlMzIwOWU2ODNjOGQ1MDRhNDFiNzIzIGxlZ2FjeS10cnVuaworNjgxNDYgNDBmYTg2ODk4MWNjZDhmN2U2ZjBiZTM5ODdlMTM1NWM2YjJkMTA1OCBsZWdhY3ktdHJ1bmsKKzY4MTQ3IGNiMzQ3OWNhODFhY2NhZWE4NDhmNGRkZjczZmJiMTk1YjU2YjYzYjYgcmVsZWFzZTI2LW1haW50Cis2ODE0OCBiZjE3MzRjNmI2ZWQyMjNjZjFkMWM5MjEyZmQ1ZDNlM2FlMTQ5MzIyIGxlZ2FjeS10cnVuaworNjgxNDkgODRjYjAxYzU2NDhiMTc0ZDA3ZGIzNTZiNWJkMDA0ZDgzMjk4MjAxMyBsZWdhY3ktdHJ1bmsKKzY4MTUwIDI1M2UxYzczZmRlNjljYWViNzg0MjBhMjE5NzhkNDI1NTBjNGRhMmEgbGVnYWN5LXRydW5rCis2ODE1MSA1YzRmNjM5YzkyMDA4OTg2MmMyZjFmMGM2NTUyMGI4YWY0NzE1NTBhIHJlbGVhc2UyNi1tYWludAorNjgxNTIgMDhkYmE3Zjk3MDMwMTlhODkwMmU3ZWNhMThmZDUxNWVkMWZiZDcxMiBweTNrCis2ODE1MyAyZjAxZjk5NWY3MDQxMmI3MDIzZDViMTkxM2QwYjI4ODU5Mzg4Mzg5IGxlZ2FjeS10cnVuaworNjgxNTQgMzRkNTFjMzBhNGY0YmYxYzkyMzRkZWVhYzJmYzRmNzUwM2YzODI2MiByZWxlYXNlMjYtbWFpbnQKKzY4MTU1IDk0Y2ZiZjkzZDcxYjRjNjEyNWE2MThmNjhiMTNkZWYxMjRiZmVmOTggcHkzaworNjgxNTYgMWRjYjE5MjE2YjY0ZDYyMGE4MGFjNGVjMGIzYjgwNWUyNzI5ZDRlMSBsZWdhY3ktdHJ1bmsKKzY4MTU3IGU3YWVlN2M5OWQzYjc3YzBhN2IxOGU0YzdhODExZWQ3MjIwZjAwODUgcHkzay1pc3N1ZTE3MTcKKzY4MTU4IDc1Mzk1NGQxNmVkMjE2MDEyYzQ5ZDMwN2IzYTljMGY3NjZhMTIzODggbGVnYWN5LXRydW5rCis2ODE1OSAyNjk2YTM5YmNmMGIwNTc5OGMyZDI2NWY1NzIxN2E1NWFmNGZmOWU3IGxlZ2FjeS10cnVuaworNjgxNjAgYzUwYjExOGVhZjM0Nzc5NGI0ZjI0ZjllOTQyMDVkNWQ2MDUyMjM0NiBsZWdhY3ktdHJ1bmsKKzY4MTYxIDM1NWJjMTIyYzE0NTY1Y2UyMGNkYzk4OTVkZDA0MDM2MjY2NmQwYjEgbGVnYWN5LXRydW5rCis2ODE2MiBkZTdkMTY3YjlmZjEwZGFmMmJlZjMwYTc3NDU2ZjdmNzNhOThlNjQ3IGxlZ2FjeS10cnVuaworNjgxNjMgNjlhMjQwZTVmMDFkY2ZmNmYzODRiNTNkYjJjMGM5OWEyNWI4ZWZhZiBsZWdhY3ktdHJ1bmsKKzY4MTY0IGUwYzY2YmJiNDhkYTgzZWM3NTE0NzgxYmZjMmIxZmRkNmE3YzFiMWQgcmVsZWFzZTMwLW1haW50Cis2ODE2NSA0MDBjZmNhYThkNDZlZTg1YzExY2I2MWIwOGE1Y2ViMDY2Yzk4ZTRmIHB5M2sKKzY4MTY2IGNhODZhYmUxNTkyNjM5YTc2ZTBiYTVlOWI0NzNkNWUyYWM4MDYxYzYgbGVnYWN5LXRydW5rCis2ODE2NyBmZjEwNjQ1MzI1NGExZGQ5ZmU5MDViNTg1NDBiMzZhZjIzMmUwMmQ3IGxlZ2FjeS10cnVuaworNjgxNjggYTU0OWM5MjcwNzc2NzNlYWRlOTU0ZTc5MTgyZWRiN2E3YzlmMmE2YyBweTNrCis2ODE2OSBhYmJjZTQ4YjlhZTQwYTY5YWNjNmU0MjQxYmM5NGQwYTIyNDQzNjNmIHB5M2sKKzY4MTcwIGJjZjQ2ZjMzYmQ5MDUxNmQ3M2FhN2E0OWIwMDE0ZDgyZThkNTA3NjMgcHkzaworNjgxNzEgOGVkZGQ2NjVlOWI5ZmI2YWZlZGRjNGJiMTFiZTZhODNiMmNmODkyMCBsZWdhY3ktdHJ1bmsKKzY4MTcyIDYzNmEwYWM5NjA3YjdhM2E0MGNhMGZjYmYzMDQ0MWJjMTBlNjAyODAgbGVnYWN5LXRydW5rCis2ODE3MyAxMjk3YmI3MWRjNjRiMTZjMjA4MmU2YjdjYWUwMGEzYTlkYTkxN2JhIGxlZ2FjeS10cnVuaworNjgxNzQgNjhjOWY4YjY1ODRkNGIxZWUxZTJmZjAxYTBmOGE3ZTE0YzIwZmZhNSBsZWdhY3ktdHJ1bmsKKzY4MTc1IDIwMzg0ZWJmYzcxNmYyZTBhOWY0YTkwYjZjN2ZlZmQzM2RjZTQ0ZmMgcHkzaworNjgxNzYgMDU4OGE5ODc5M2NkMDg3NWYwZTQ1ZDFmOGUzMGFmODZiZWEzYWU2NCBsZWdhY3ktdHJ1bmsKKzY4MTc3IGViMzU4ZGFlMGNjYWQ4YTVhNTdlYzdkZTM2YzhiZjEzZTk0ZDhkY2YgcmVsZWFzZTI2LW1haW50Cis2ODE3OCAwYzk3MjgzNzJkMDk4YWY0Y2U0Zjg5OTE4YjEzOTIyOTY2OTNjM2I1IHB5M2sKKzY4MTc5IDAwNTJkMjNkMzlmNjE1Yzc2M2U3MzVjNGU2MmE4MjgzNDU2N2RmYjUgbGVnYWN5LXRydW5rCis2ODE4MCAwZTM4YzcwYjk3NzZlYTdhYzFkYmFkYzU2OTU1ODMxNGY3N2I1NjVlIHJlbGVhc2UzMC1tYWludAorNjgxODEgOTMwMTMzOTc5ZDdhMjkxYWQwMWM1MjNlNDhmZTQxM2VlMDAwNjVkNCBweTNrCis2ODE4MiBhZDkyMTA0ZDUwNjA3ZTdhNzMzYzk1Y2ZlNTY0ZWRlMjJjMDE5NGNmIGxlZ2FjeS10cnVuaworNjgxODMgOTRmZjNkZTFlMWE0NWJlYmZmYjVjNTc4ZGQ3MGVkNTgxNDQ5MmUwOCByZWxlYXNlMjYtbWFpbnQKKzY4MTg0IDVlMTY0OTg4YmQ1MWFlYWVlZDM4MDE3YTc1MDY5MTJhNDUzZmMzMWEgcHkzaworNjgxODUgZDM2N2JlNTQzZjZjZThhZjQwNzY0YjE5ZGU3NTZiYzg3YTYxY2QwNCByZWxlYXNlMzAtbWFpbnQKKzY4MTg2IDQ0MGFkZDUxNmNmMWUxYjcxM2ZlODA2OThiZmVkZTI4N2RjY2MxNTEgcmVsZWFzZTI2LW1haW50Cis2ODE4NyAzNmQwMjcwMzc4MTIzMzMyNzg4ZmJiMjIzZDZkNThhYzNhZTkwNDY1IHJlbGVhc2UyNi1tYWludAorNjgxODggYzQ1ZmVkMDNmNzQ3NWMyZDJiYWM1Y2U0NjZhMWViMzE4ZmRjZDQyMyByZWxlYXNlMjYtbWFpbnQKKzY4MTg5IGZjOTRjOWM0MmM2YzgwMDA2MzVhNTVmYzQ2YWE3MjBkOGE0NWExZmIgcmVsZWFzZTMwLW1haW50Cis2ODE5MCBmYTU1ZmE0NTU2ZjA5OTE0Y2RhNDFlYzQ2NzM3YjBkZWQxYjEzZjI5IHJlbGVhc2UyNi1tYWludAorNjgxOTEgYzI3MmZjYWMyNGE0YTI1YjVjYTc1NGQ4ZmY3NDI3MjAxNWIwNzViNiBsZWdhY3ktdHJ1bmsKKzY4MTkyIGYyYTVkNzgyOGI4M2U3MjAwYjY0NjgyMmE0NjM2OGU5NmE1OTBmNzUgcmVsZWFzZTI2LW1haW50Cis2ODE5MyA3Mzg4NjYwOTI2YWExNDllYmFiMWJhZTJjN2M5Y2JmNGM1NzBjZTY4IHB5M2sKKzY4MTk0IDEzNGQxNzNiOTM1MGIyZmU0NTNkMTgzYmFmMmY3NWY0ZjY3NDBiNjggcmVsZWFzZTMwLW1haW50Cis2ODE5NSA0MjdkOGI3NjVhNmEwMGIwMDY3Njc3ODA5MDc5NTdhNGMyMmQ1MWRiIGxlZ2FjeS10cnVuaworNjgxOTYgYTc4OGQ0ZjEwYjk3ODNjZTkzYmFmYjJmNWVhMzliYTQ2MmFmZTgxNiBsZWdhY3ktdHJ1bmsKKzY4MTk3IGI5OTFmZTVmNjM3YTg1ZmVhYjhhYTAwN2U0MTllMDhkNTA5OWVjMDMgbGVnYWN5LXRydW5rCis2ODE5OCA4ZTc3Mjg2NzZmN2U4NWFhZWJiMWQ4NDgyM2EwNDViZGI4ODI0YTAyIHB5M2sKKzY4MTk5IGE5MmY3MWQ0NmRjNGMxYzMyOTA2YzNiMTA0OTI5ZTRmOTFiNjAyZmQgcmVsZWFzZTI2LW1haW50Cis2ODIwMCAyOWY2NDA3N2M0MmY4OGQxYjBkNTQ1ZGE5NDk1OTc4OWFjMTk3OGE0IHB5M2sKKzY4MjAxIDc5MzQ3MjNmN2RjNGZiZGExNTI1NTM4YmY5Njg2ODliOGU4NmExNmUgcmVsZWFzZTMwLW1haW50Cis2ODIwMiAyNjA0NWVkMGMyNmUyY2NlMWQ2ZjViMWM1ZmRiMjkyNzA4ZjY5MWNlIHJlbGVhc2UzMC1tYWludAorNjgyMDMgZWNmMWJiN2JhZWIxZWM3NmY4OTg4MDU1MDU2NDhmYzAzMzg4NDVhMSBsZWdhY3ktdHJ1bmsKKzY4MjA0IDRkMWE2OGJkODA3NmMwYzZlMzQ2NWY2MjdlMzI5ZjFmOTY5ZWU4ZDEgcHkzaworNjgyMDUgMjUzZjllNmU5ZTA3OTk3NTQ0YTk1NDE1MGEwMmRhZDRjY2UwNzQ4MyBweTNrCis2ODIwNiAxMGNjNTNlNzFiMjEyM2Q1NDc5ZDhmMGNkMzZmYzc2NGNlMGJlZTViIHB5M2sKKzY4MjA3IDlhNDI1ZWIwZjdlYTU0YWI0ZTQ4MGNkZDNjMjM3ZjkzYjA2MTRmNWYgcmVsZWFzZTMwLW1haW50Cis2ODIwOCA3YTZlM2JjNjBiYTZkZTEyN2JjZWU5NDRiMTMxNjNmODM5NDA2NjM4IGxlZ2FjeS10cnVuaworNjgyMDkgZTc4ZGNkODdkNzMzZjZmN2IyNGFiMWE2NTllNjUwOTQ0ZWJjZWZkZiBsZWdhY3ktdHJ1bmsKKzY4MjEwIGFhNDY3ODdiOTNjYzY1MWE4ZGYyMzcyN2FiMTBjNGUxYzdhMzRjNGYgbGVnYWN5LXRydW5rCis2ODIxMSAxMDQwMDVkMDdlYTUxOTBlM2QyMjA2ZTI2NzZlMGQ3NTJhYTJlNzUxIHB5M2sKKzY4MjEyIDg0NWZhN2QzNjY0MjA5MGMyNDE5MGQ0NDJlYjg3ZTkyYTFlZDMwODUgcHkzaworNjgyMTMgZGUyNzcxMDcwZDg1MmIyYzgzYzM2ZmQ4ZTc5ZDZkZjUzZjBhODY2NSByZWxlYXNlMzAtbWFpbnQKKzY4MjE0IDZlNGQ2ZDM5MDVhNzlkZjFhZTczZjcyZGJkNTIxMzViMTBmZmJkOWYgbGVnYWN5LXRydW5rCis2ODIxNSA2MDg1NGJkYmNmMWU1YWY3OTBjODhhMzFiMzZjOTUzNTlmMTNmNTU1IGxlZ2FjeS10cnVuaworNjgyMTYgYjA2NmZiYjZhOGJjMjlmYWJkMWVmOGI3NjY5Zjc3NWNkZjk1OThjYiBweTNrCis2ODIxNyBjNzU3MjBjM2UxNmVlMDI4M2ViMWQ1ODJhNDMxZDIyMzBhY2M2MmEwIGxlZ2FjeS10cnVuaworNjgyMTggNmVmYzFkZTM0NWY1YzkxNzdlNDA1ZGFjN2Y2NzViMWViNzllMWQyMyBsZWdhY3ktdHJ1bmsKKzY4MjE5IGZiMDk4MmMzMjE3ZTQ1ODA0NzcyYWM2YmRmMzNmYWYwNWY4M2ZiM2QgbGVnYWN5LXRydW5rCis2ODIyMCBjNTIxNzdmMzY4NTI3NjQwZTdmMjI5OWJjY2Q1OTg0MTBkZjI2MTljIGxlZ2FjeS10cnVuaworNjgyMjEgN2ZiNDMxZmE0OTQ2MDE4NWI5NDdiNWQ4NWZmYzAwNzQ3NjcwNzBjMiBsZWdhY3ktdHJ1bmsKKzY4MjIyIDk4OTMxNGQ3Y2M1ZWZiMmRmY2VmYjU2YzJjZWMyNGJiOTRjYWI1MzkgbGVnYWN5LXRydW5rCis2ODIyMyBjOTE4NGY1MDczNGZiYjk3NGJlMzgyZjEyYzkyYWRiODE0NTgxY2UxIHB5M2sKKzY4MjI0IDVhYjMwNjNjYWY0YzA4ODc4ODQ0NzZmODdhZGNlMmY0MjMzMTE5MjYgcHkzaworNjgyMjUgNWYyNDc1ZmU1MjM5OTUzM2NlMGRlNGJjMjM5ZjNlZWU2YzIyMzQ0NiBweTNrCis2ODIyNiBjM2QzYjc2MGQ4YmZiMGVmNTMxYTM2NGFjZDY3MTdkZDI4OGIzZTFiIHB5M2sKKzY4MjI3IDBlMDViNmNhNmFmZDNiYTdjNTkxZmE0NDQ4MGY4NDQ1NjcxN2ZkY2QgcHkzaworNjgyMjggZTQ3OWI4NmRhMTFkZTY0YWVkOGVjODk0ZDFmZDg5MDM2MzJlZjMzOCBweTNrCis2ODIyOSA4M2VmYzI0NjdmYWYzNDdiNzY2YjM5M2MxZjE0ODkyNjMyZWJlOThhIHB5M2sKKzY4MjMwIDA3MmRlZGVlNzdmYTZkZDQ4NDU2OTY3YWY1NzBmNjlhYTk4YzliMjkgcmVsZWFzZTMwLW1haW50Cis2ODIzMSBjZGQ1ZmEwNWMxNGQwMDk1MzY3MGVmZDhiNjI0ZTQwYmRlODk5OWFmIGxlZ2FjeS10cnVuaworNjgyMzIgMjRhMDkzN2Q3NjI0MzRiYjNjZWRiMDg0MWJmMTkxYjBkM2I4OTU3NyBsZWdhY3ktdHJ1bmsKKzY4MjMzIGFlZTU1Y2EwNGM4ZmEzMDFmODJlNWNmYTVmMjQxNDI5N2VhOTVhY2YgcHkzaworNjgyMzQgZWU5Y2VkOTI4NDNhN2E1OTkyMjdkZDhlNmIwMTNhMzBhYzNhMTE2OSByZWxlYXNlMjYtbWFpbnQKKzY4MjM1IDcxM2EzYTM4Zjk3NWNhMWM0MzlkNzJhOTViNTE4NjVlZGIwMjcwYjUgcmVsZWFzZTI2LW1haW50Cis2ODIzNiBmODg1Yzc2ZjFlOTU1MTIyNmQ4MmVkOTIzNTQ5NzY5Yjc3MmRjMmQ1IHJlbGVhc2UyNi1tYWludAorNjgyMzcgZGRiNzNhNGRmYzIwNGQ1MzliNDBkZDhiNmI5ZGNkMTkxZjU5YzhmZiBweTNrCis2ODIzOCA2ZGYzZDA4Yjg5ZTQ1MGRhZDE0YTlhMjA4OTk3YmVlZmJmZmZjYjYxIGxlZ2FjeS10cnVuaworNjgyMzkgMjFkN2U5ZTg3NTkxYzcyOTUzNWZiNzE1ZDIwNjk2ZmFkZjFkMTc4ZiByZWxlYXNlMzAtbWFpbnQKKzY4MjQwIGI1NjM5ZDI0NWFkNTM1NDc5ZDcxNWEyMzNiYjAzZDYwYTllMDQ0ZWYgbGVnYWN5LXRydW5rCis2ODI0MSA3M2RlZDk0ZmI4YmVhYjM5ODgxODdkZDgxYTMxMzZjNjdjYzljNzU0IHB5M2sKKzY4MjQyIDkxY2Y5ZWQ0NmI3MjMyZTM1NWUwY2Q5OTViOGUzOTQ3MDVjZjg3ODkgcHkzaworNjgyNDMgZDNjN2U5ZDlhZGE3YzA3MjNiM2IwMGM4MjY1MzU2NjdlNDMyZDFkNyBsZWdhY3ktdHJ1bmsKKzY4MjQ0IDZjOGVkNjY3NDMyODkyZjI3M2M3OGU4NjU1ZTNmNjdhYjFhZjgxM2QgcmVsZWFzZTMwLW1haW50Cis2ODI0NSBhZjIwZGQxOWNjMGQ5OTgwN2YzYmFmMGViMzQ1ZjlhZWI5NTJhYTBlIHB5M2sKKzY4MjQ2IDkxYTkyMzM5NzM0NzgzOGU5ZjJhMDBkMWI5MGNlNzE1OGE4YTBmNmYgcHkzaworNjgyNDcgZDA5MTQzMDBlMTJlYmM1YThlZTBmNGRkNGE3NWNkYmM1YTZhZjJmOSBweTNrCis2ODI0OCA4YWExOTUzMGY5ZjIyOGY5ZTgzZGIyNTYzMzkyZGJjY2EyOGQ4Mjc0IHB5M2sKKzY4MjQ5IDQ1MGVjYmI1NmM3YjUwZWI5MmE4Y2U2ZjljNjI1MWU3MjdiNjgzMDQgcHkzaworNjgyNTAgMjgzMjFkYmRmZGMwYzA2YmQzOGUzYTFiMzhhMGQ2NDQ2MDIzNDBmOSByZWxlYXNlMzAtbWFpbnQKKzY4MjUxIDk2MTg4MDMxYjFiNTk3NmJiN2VhMGU2ODllNjRjMDNmOTRiZjcyZjEgcmVsZWFzZTMwLW1haW50Cis2ODI1MiA0MjI5YTRiMTRmMWQ4OTNjMzRiN2ExZDE5Njc0MjQ0YzYyOGMzOTA4IHJlbGVhc2UzMC1tYWludAorNjgyNTMgNzgyNTc4YzkyZTFkM2FiYzEyMTBjZjZlN2RmMDNlMDk1ZjY2YTM5MiByZWxlYXNlMzAtbWFpbnQKKzY4MjU0IDVlYmY4MjY4OWQzNmI0ZTVlOTM0ODllOGE2NjU3MTgzZjY5YmM5N2MgcmVsZWFzZTMwLW1haW50Cis2ODI1NSBmZDRkYTg1NWQ2MDNmNWY3ZjU4NTQzM2UxZDU0MzFhMjkyZTg1MmYwIHJlbGVhc2UzMC1tYWludAorNjgyNTYgYzllNWMxZmEyODVlODNhZDVjOTVkZTZiMGNiYjY1ODI4NzM0ZjQwNiByZWxlYXNlMzAtbWFpbnQKKzY4MjU3IGU4MGM4MDZjZTAyYjQ2NDQwZmIzMmNjMDEzMjk0ODM5YjE4NWUwMzMgcmVsZWFzZTMwLW1haW50Cis2ODI1OCA0NDM4N2YxYTI4YTIwYjQ2NjllMDVmMjBmZjM3ODhlZGQ3NGI3NWNjIHJlbGVhc2UzMC1tYWludAorNjgyNTkgOTFmMmZiYTAyYTUwMjIyODlmN2RlOTZiMmE2MmUxZDIyODQ4MGZkMSByZWxlYXNlMzAtbWFpbnQKKzY4MjYwIDgxYzQ5YmE3YmNjZjc3Nzk2NjIyZDE5MzU5NzQyMmNlZTIyYzRlNTQgcmVsZWFzZTMwLW1haW50Cis2ODI2MSBmYWRmNzhmNWY4YWQzNmVkZTYzNWU2YmE1NGZjNDg5ZTkxMzVlMjg5IHJlbGVhc2UzMC1tYWludAorNjgyNjIgZGI0NjQ0MjZhMzY1MzcyMTc5ZmJkNzhiZDBjYzllY2Q3YjhkMjZlMyByZWxlYXNlMzAtbWFpbnQKKzY4MjYzIDI0YjE4ZTg3ZDY2NDg5MTkwODUyNDE1YTE3NzMwM2EyNTE0NTYxOGQgcmVsZWFzZTMwLW1haW50Cis2ODI2NCAxNTQ4MzYxYmZkMmYzYmI2Zjg1ZWVmNWM3NjQzN2ZkMWQ4Y2YwNTNlIHJlbGVhc2UzMC1tYWludAorNjgyNjUgYmFkYjQ3MWRiYWViZTAxYTg1Y2M0MDBkN2MzZDQwNDkyNGUxZGYzMCByZWxlYXNlMzAtbWFpbnQKKzY4MjY2IDI3OWE1MTAwNjg4NTAwZWRiNzJkZWI5N2UyNzI4ODYxNzE3MzE1OWMgcmVsZWFzZTMwLW1haW50Cis2ODI2NyAwNDdkZjBhNWYxNzQzNjA0YzY2NWYyNGEyNTE5MzYwYTVhZmNiYTk3IHJlbGVhc2UzMC1tYWludAorNjgyNjggNWE1YjBiMmQwMWI5M2VjOWZiYTU1MWUwZjA3NWJjMTUyMTk2NjY0NiByZWxlYXNlMzAtbWFpbnQKKzY4MjY5IGJkMGUzNjFiZDY0MjE1MWI3YjIxMjJhNWNjYzMzODM5NWQ5NzZhMzIgcmVsZWFzZTMwLW1haW50Cis2ODI3MCBmYmY3ZjUzZjQ4ODhkMjkyZjhiMWVlNDExMTJjYjdjZWM3MWFhODUxIHJlbGVhc2UzMC1tYWludAorNjgyNzEgNmYzMGI5NzE0OGI2NTljMDZkZTM0MWE0NjA0ZThkMTc3MjQxM2UzZSByZWxlYXNlMzAtbWFpbnQKKzY4MjcyIDg1MWMyZjA0Zjk1ZDVhZWJhNDkwZjcwZGNhMzljMGM3YWZmYWJhZmEgcmVsZWFzZTMwLW1haW50Cis2ODI3MyBiOTZkNjE2ODhiODdjZjAzZTQwNGYwM2VhNTQxMmViNWU4ZDdkYWY1IHJlbGVhc2UzMC1tYWludAorNjgyNzQgYTZlZTJmZjRkZTRkODczZmYyNWY4MTU3MWEyNmMyZGY3MDhiZjBlZiByZWxlYXNlMzAtbWFpbnQKKzY4Mjc1IDkzY2YzYTZlYWQ2Mzk4Y2VhY2Q0NTUzZDk3NTI2OTc0ZWUyYWUxZDUgcmVsZWFzZTMwLW1haW50Cis2ODI3NiAwNWJmNzAwMmVjOTQyNjUxMjA3M2E1ODM0MWFjOGU3MTZlYjI1ZWY5IGxlZ2FjeS10cnVuaworNjgyNzcgYWZhYzBjYWJjM2FkMjA3MjM1MDZiMWJjMTYxNmY5YjU4MWQ5M2ZiMyByZWxlYXNlMzAtbWFpbnQKKzY4Mjc4IGVhN2UzMDdkZGQ1MWFmMzU0ZjE4NTNjYmIyYTQxOGM3MTBkZDMzZDIgcmVsZWFzZTMwLW1haW50Cis2ODI3OSA3YWMxZjZiZThhZDU1NTJiMzU3NzYzNWU2OGE1Nzg5ZDFhNWUzNmQ3IHJlbGVhc2UyNi1tYWludAorNjgyODAgZmI5MDU4OTBkMDQ5YWEzM2E0NWVlZGNjNDY2OTMzNDU4M2RmMjdlZCByZWxlYXNlMzAtbWFpbnQKKzY4MjgxIDhiMmMxYTBhOWEyYjgxMzhlNDA1ZTE2ZGU1OWE1YmFmODg3N2Y5NzUgcmVsZWFzZTMwLW1haW50Cis2ODI4MiAyMmIxMWMyMmNlZjg0NTk3OTlkZDJiNjZhMTFmMDUzZjNjNzQ3ZGRkIHJlbGVhc2UzMC1tYWludAorNjgyODMgM2IwODY3NGI5YjQ4M2Y3N2MyNzA2OTI0ZTZmZjdmOWUyOTlkZTRmOCByZWxlYXNlMzAtbWFpbnQKKzY4Mjg0IDFlYTUwMTNkOWRhZTBmMTIxNTQzOTJjNTM3ZWQ4MWM3MDMzYTcxNDEgcmVsZWFzZTMwLW1haW50Cis2ODI4NSA5ZWM5OWZkZjgwNGYxODM0NzgxNWJkY2Q4MDZiMDI0Y2Y2ZGY0Njk3IHB5M2sKKzY4Mjg2IDk0MDNkZWZiNjlmYjE5YmY5YmRiNDI1MWY1NWYxMWUzYWZmNGZmY2QgcmVsZWFzZTMwLW1haW50Cis2ODI4NyAxY2E4YzY4NTlhMDc4NTQ4MzVkOWFiN2NjZTQ2Y2IxNTc0NWE1NDFhIHJlbGVhc2UzMC1tYWludAorNjgyODggYmFlZGIwNjllNDI1NmJhYjM0OTYzYjlkN2Q0NzQ2NDJlZDBiNGFlYyBsZWdhY3ktdHJ1bmsKKzY4Mjg5IDUzNjc5ODU5OGFmMDg4ZDNhNDA5MDMwNDlmZTlmMjVlMWVkYzhkOWQgbGVnYWN5LXRydW5rCis2ODI5MCBkNDFhODY4NzUzMzJhNzZhNDBhM2NlMGI1MGZkN2I2MjBjZDhjNzU3IGxlZ2FjeS10cnVuaworNjgyOTEgNTRhNWFmZmI2YWYwMTg1ODY4NDVlYjc2M2U1ZWYzNTRlYTNjYzU4YiBsZWdhY3ktdHJ1bmsKKzY4MjkyIGY0ZWUwMDA2ZWUzOTJmNGVlNjUwY2NlMzhkM2IyNzU3NTczZjc0ZjAgbGVnYWN5LXRydW5rCis2ODI5MyBkYTM0ZjAyNjY0ZWRjOWQ1MjE4MjBjN2Y4NWQ3NzYwOWFjMGU5MmE1IGxlZ2FjeS10cnVuaworNjgyOTQgMDU3Y2I0NmRkYWFkN2E5ZTcyMzk2ODk0OTU5MzViNzRkNzY4OTBmNCByZWxlYXNlMjYtbWFpbnQKKzY4Mjk2IGY4NTQzNzNhNjZlNTViZmQzYTIyNWEzNDkwN2VhNzc0Mjk3NjJlOWIgbGVnYWN5LXRydW5rCis2ODI5OSAzYTU0MGVkNzk1ZDNiMDY4Zjg0NjJmMDU3MGE5MGNhOTI1YzRlMTA5IGxlZ2FjeS10cnVuaworNjgzMDAgZmFjOTM1MGI0MzdkYzlkZDFjOGZlNzU5ZTEzYzNmNDZlZWVlMWE4NiBweTNrCis2ODMwMSAxMTQ2YjdiMGQ1MThiM2M3OWU1NjMxY2M2ZjE1ZjJjYmUyZjZlYWEwIHB5M2sKKzY4MzAyIDU4NGIyNjNiOThkYTY0YTRiNzdiYjk2M2Q1Njg2OWY1NGQ0ODNhNDMgbGVnYWN5LXRydW5rCis2ODMwMyA5ZDUwNjNiNDExZTg3OTU2YjQzZjczZTYzMDEzOGQwZTllNTBjY2ZjIHB5M2sKKzY4MzA0IGUxOGYzMjJiOTMxZTc5MDY0MjE1MWJiNDRlNGFjMzA5NjhjMWY5M2MgbGVnYWN5LXRydW5rCis2ODMwNSA2ZTRkZGUyZTk1ZjdkM2M0MGQxOTdmOWUwZWZmMTQxZWM4YjRlZmUzIHB5M2sKKzY4MzA5IDEzZjE4NTdkZDliZjVkYThlNGVmZWZiYThhMWZjNGY4MzUyOGRhNTQgcHkzaworNjgzMTAgYzI1ZTViNjIwYTRjZjI0ODE3NzNmOGUyNzY1YTEwNzFhNThmNGY5YiByZWxlYXNlMzAtbWFpbnQKKzY4MzExIDkyY2QzNTUxZmExMzFiNzk5YzdhMWY0Zjg1NjIzN2M0NTdjYjNiMGQgbGVnYWN5LXRydW5rCis2ODMxMiBiYzlmODBkZGJiZTI1ZjUyZjhhNzhjZDBmYTcwNzViNzc5ZTQ1ZTEzIGxlZ2FjeS10cnVuaworNjgzMTQgMmNhZmU5ODkxMTdhMzNkZTc5MmQ5MzYyMDZjMTg3MTRlODYyNmI1ZCBsZWdhY3ktdHJ1bmsKKzY4MzE1IDQ3NDc0NWI3YTEyYTZjYTllZTY1MmU3OWEwMjBjM2ZjZWUyOGYzODggcHkzaworNjgzMTYgNDBiYTJhMTI1M2ZhNGJkNGUxNDZiMDUwZGZhNGZkMDAzMWMwZGU5MyBweTNrCis2ODMxNyAwOWE0OThlYjE4MjA1NWRlYzZiNGY4NmY0M2ViYmE1ZGI1YjM1Yjk3IGxlZ2FjeS10cnVuaworNjgzMTggZmQwYmI2OGFkNWM4YmMxY2Y4NTIzODhmMzNjMzg4NDkxN2JjM2Q5OCBsZWdhY3ktdHJ1bmsKKzY4MzE5IDlkZTIxZTYxNTU3N2U4ZmM0YjBmYjhiMDY0MmM4YWY1MzM5MTQ4ZDMgbGVnYWN5LXRydW5rCis2ODMyMCAyYmU0OTBhYmYzMzMzYzIwMTM5NTNlNDM0ZTQ1NjcxYTU3ZTU0N2JmIHJlbGVhc2UyNi1tYWludAorNjgzMjEgNTQzNmU1MzRkYTZlNGEzNzhmOWM4YTczYWRmZDIzOWQ2MjEyMGQ3MyBweTNrCis2ODMyMiBkZGFlYzQ3ZTZkZDk5YTZlMWI1ZmUzNDJhMDRlZjVmMTBjOGU5OWNlIHJlbGVhc2UzMC1tYWludAorNjgzMjMgNmE2ZjEzOGQ0MTYyY2YwMGJkNDcyZTUyMjA1OTM4ZmQ3NzZiYWJmNSBweTNrCis2ODMyNSAxNWM0YzllMzMwZTkyMGZiNmIyNTAxMzAwNGE4MDkzZDM3Y2M5ZWU5IGxlZ2FjeS10cnVuaworNjgzMjYgODY4NWU1ODU1YTQ3OTczOTg4NjYwMzU3MDkwMjE1Yzc5OTdkZjc4NyBsZWdhY3ktdHJ1bmsKKzY4MzI3IGUxNzFjZDUzYWM0YjZlZDc1Nzg3NzdkNDZlMWI5OWJkZTBlM2M3MTEgcHkzaworNjgzMzggNzU4ZDhmYjdiZDk5MDg5NzUyODk0MzU5MWY5NTNjYzJjNmZhM2YxMCBsZWdhY3ktdHJ1bmsKKzY4MzM5IDkxNzQ4OTU5NzJjYjA5MWMxMzA4ZGU1NDVhYmRmODZjMDE2NTIyZjQgcmVsZWFzZTI2LW1haW50Cis2ODM0MSA2ZDliMDMzMWQwNzNhM2VlZjU2ZWI1MTViMTk2YzA4NDYyMDAwZGU5IHB5M2sKKzY4MzQyIDI1NWU2NGExMzc1NTFkYjVhYjY4NjA2ZWFmYjVhMzJiNGE1ZDZlNWQgcHkzaworNjgzNDMgNjRmOTFmZjI0ZmU2YzI0ODAxYzkxZGYxMzVmOWZiNjljY2QwYzE0MCByZWxlYXNlMjYtbWFpbnQKKzY4MzQ0IDcyN2VlMTY2NTIxOWRkYzdkZjI2ZmUzZGE5OTFhMDRhMTJjOGZmZmQgbGVnYWN5LXRydW5rCis2ODM0NSBlNGFjZjA3OWI1MDhkYzAxMjUxZjRkYzQ0OWQ5YjhmYzI2NmFlY2FiIHJlbGVhc2UzMC1tYWludAorNjgzNTkgNDVhZWY1M2Y1YzcxYWM0YjNjYjg5MGQ0MWMxYjk3NDcwY2E4OTI4MCBweTNrCis2ODM2MCBmYzAwMDA2ODJiZmU3YzBlZDRkZmMzMDM3ZTgwMGIyMGMxZTViMDJhIGxlZ2FjeS10cnVuaworNjgzNjEgYmU5YjE1YmY2ODI4MzFjYWZjMzk1YWIzODI2YmI2ZDQxMDkxYzZmNyBsZWdhY3ktdHJ1bmsKKzY4MzYyIDYxNzE5OTc2OWJkMzg0YjUxODRiYzQ2YTI4NjRlNzE4Zjk4YTIzZjYgcmVsZWFzZTI2LW1haW50Cis2ODM2MyAyZmY5OTEwZjE1MjZjODkzNDcyMDRkYmQ5NzIzOWJhZTBlNjFjZDJkIHB5M2sKKzY4MzY0IGU5ODdlMGRmOGY0OGY0MTAwNTkyYTY2N2E0MjMyMmVlYjZmZTY0NTUgcmVsZWFzZTMwLW1haW50Cis2ODM3MyA4OTMzZGViYjkzMDhlYjcwNDhkNzU3NWNmNGMzNDA2MDJiY2U4ZDZkIGxlZ2FjeS10cnVuaworNjgzNzQgYTRhZjVlNmY2YjE3YzM5MjQ2YTc5ZTZkNGZlNDBlZTEzZTc4ZmU2OSByZWxlYXNlMjYtbWFpbnQKKzY4Mzc1IDgxZDIzNjg0ZjY5NGRlMTExNDNhY2YyYWZiOTEyMjc4MTM5ZmVlNTQgcHkzaworNjgzNzYgMDI3NmI4ZmRkZGE3ZDVkNTk0ZmIyMGM2N2FjODNjZGE1YTQ5MGI4NiByZWxlYXNlMzAtbWFpbnQKKzY4Mzc4IDhhNWE5NTkxMTAwZGU3MTc0ZmFhNzhmMzQzNzE2ZTU3ODVjZjQyNWMgbGVnYWN5LXRydW5rCis2ODM3OSBmZWQyYWUxZTUwYzJmZDU1Zjk3MzMxNDlmNWY5MTliYWE2ODE1OTQyIHB5M2sKKzY4MzgxIGYwZTBjMzUzNmUyMjcyNTJhMDQzZTkxOWQ5MzNkMmY1NjcwMjMxMWEgbGVnYWN5LXRydW5rCis2ODM4OCA0NGYxNGZkNGQ5YzI3MzEzOTJmYjhkMmU1MmNhY2UyYjU2ZTgwZDQ4IGxlZ2FjeS10cnVuaworNjgzOTMgNWFjOGYwYjVhNTliZmNjNTdkZTlkM2VhOTQ2YWM5N2UzYWYwY2FlMCBsZWdhY3ktdHJ1bmsKKzY4Mzk0IDBiOGQyY2YzZjU1YjQyYjNiODg2NjQ5OGVkNDliMzk0OGNkMmZhZGYgcmVsZWFzZTI2LW1haW50Cis2ODM5NSA3NmZhMWRlMjc0MmE5OGExMjdmMTI2MzhmYTczZjE5MjZhYzliYTg2IGxlZ2FjeS10cnVuaworNjg0MDEgYTIyOWNhM2ExMmFlMmM0NmRhOGRhZDE3OTRlYjdlNWM4MzFiZWY5MyBweTNrCis2ODQwMiBlNmEyOTc5MGQ3NWFlMGJhN2NlZmUzN2RlMzY3ODRhZjNhNWRkZGMyIHJlbGVhc2UzMC1tYWludAorNjg0MDkgYWRjNDMwYzE2YjU3YjZhNzZiN2RjY2M5Nzc1MTlkZDVmOTZhNWFhZCBweTNrCis2ODQxMCBmZmZkMTBjMTJhMWI3NzIzOWZiNmJlMmU3NmUyZmQ3MWQxZGMyZTEzIHJlbGVhc2UzMC1tYWludAorNjg0MTEgZjlmNWQ5MDQ3YTA1NDFmYTE2ZmZiNWVjMzY0MDVmMGFkYTU3OGFjNyBweTNrCis2ODQxNSBhM2YzMjlmMjNiMjM2ZTMzMTUzMTg2NGQ1OTFhZDMyNmJmYzc5ODY0IGxlZ2FjeS10cnVuaworNjg0MTYgZWE0MzE5NDNhOGRlNTI2MTdiYzVhNTVhNTc2MmVkN2EwOWY4M2Q0NSByZWxlYXNlMjYtbWFpbnQKKzY4NDE3IDU4OWY2ODQ0ZDhlMGVjM2FhZWYxOWQyYzliNjI2OWQyMmIxMjY0NDMgcHkzaworNjg0MTggMzY4ZGYwMDYwNzQwYzcyNjAxNzIzMjhjYjMyMjYwMDhjYzI2Zjk5ZCByZWxlYXNlMzAtbWFpbnQKKzY4NDIzIGVkM2ZkYmYxMDc3NTU2ZjJkMDJlZGZmYzVmYTU1MTVmMTRjYWQ4MDcgbGVnYWN5LXRydW5rCis2ODQyNCBlZGViOTAzOGM0MDViMTE0NzA0YzM1YTQ4MTE0OTkzZDE2ZmYzNDFiIGxlZ2FjeS10cnVuaworNjg0MjUgZDk3YWE5NDNiZWJiNTVkMzU4Y2IyYWMwNjI5YWU5YzkyODMyZjJlMyBsZWdhY3ktdHJ1bmsKKzY4NDI2IGQ4YjY0YzY3NmJjYjFkZTVmNjI1NGZkM2MxYTM2NTM4YmM3MDJlZGIgbGVnYWN5LXRydW5rCis2ODQyNyA1ZjI5MmRlYmQyNGMzNTRkMjViODYzZTg3OTdhMTE3MTAxNDU5NWRiIHB5M2sKKzY4NDI4IGU0OTZmZGI5MjdmYTYyZDA0ODNhMzM5NWRlMWVlNTc4ZjdjMDc1YjUgcmVsZWFzZTI2LW1haW50Cis2ODQyOSA1YzYyNDRkMjE3ZmYxMWI5NzNkYzhkNWI0ZDBiYjA4ZTdkOWNlZDQ4IGxlZ2FjeS10cnVuaworNjg0MzAgNjlhMmE0ZGJkOWI0ZjRkYTRmNDA2ZDVhYWRjNDY2NmRiYzIyYWZkZSBsZWdhY3ktdHJ1bmsKKzY4NDMxIDcyZmU1MWQ2ZjgwMGJjZTc3Y2M2YzQ0Yzg5MWYzNzAxMGJiM2MxYmEgcmVsZWFzZTMwLW1haW50Cis2ODQzMiBlZjNhMWVjZDQ2NjNmZTY1NGUyOTJlYTAzMWUxZjc2ZjhhNTg4ZWFjIGxlZ2FjeS10cnVuaworNjg0MzMgZTNjMjEyNzk5NzA2ZTY2ZmFjNzNjNzliYTBmNGEzZWQzMDE2MGNmOSBweTNrCis2ODQzNCA0ODBmY2RkODIwMTYyMDlkZDcyOTlhZjUzMGU0YzNkZmViNGZhYWMzIHB5M2sKKzY4NDM1IDM2Njg2ZDRkN2U3Mjc1YmMyNDYxZjEwMTlmNTYyMTIwNjJhYjNkMzIgbGVnYWN5LXRydW5rCis2ODQzNiAzYjkzMzU4NTU0NzE5NmFlYzA0MDEwNjYxMGE4ZDU4MTY2YzEzMDJmIHB5M2sKKzY4NDM3IDBhNjZlMWRjMzBmMjIzNTY5ODM3YTdkMWVlOWEyOGE3NDJmZDUyNjggcmVsZWFzZTI2LW1haW50Cis2ODQzOCBjN2MzNDRiNjNlY2NlYmY2MzI3M2ZjOGUyYWE3YjVhODFkOTFlZWQ5IHB5M2sKKzY4NDM5IDdiODZkNmNhYzJiMTg1ZTFjNTYwMWU3N2RhZTFlMDgxNmIwNzQxNGEgbGVnYWN5LXRydW5rCis2ODQ0MCBmMTI3YmNiMGFhNzEyMjVmZmI0YzVhYmQ3NmE4M2ZmOGNkZjI0NWY3IHB5M2sKKzY4NDQxIDlmMDQxYmEzZTRjOTFmYzMzZjNjYTM5MmY3ZjEyNzJhMDg4ZGM1NjIgcmVsZWFzZTI2LW1haW50Cis2ODQ0MiA5ZDA5M2VmODljNTYwNzViZWYwZGMwYmQ1MmYwYzZiODg3ZThkMzViIHJlbGVhc2UzMC1tYWludAorNjg0NDMgY2UzNzMzMTM5ZmFjODAzZWZhODRhNDRkYmViMzNiMjMzYjYxNGE5YyBweTNrCis2ODQ0NCBjOTRmMDI3OWZlZGU5NzdiMjQ3OTU2M2RjZDcwOTY2NzcxNTQ1MWE0IHJlbGVhc2UzMC1tYWludAorNjg0NDUgY2NkOTViMWFhZGU5ZDRjOThkYWM5MDVjNzMzYTU4ZjJlNGViYWMwOSBweTNrCis2ODQ1MCBiNzNiZDVhNzRhMjc4ODM3YmMyYTAyMjk3Y2Y4NDIzZWYxMzQzYTM5IGxlZ2FjeS10cnVuaworNjg0NTEgYmMzMGUzOTVhYTE0YWRlZjAwMjNkMTAyMDNlMTUzNmQzMjBjZWNkZSBweTNrCis2ODQ1MiBiOThmZThkYzhhY2Q2YTEwNDUwYmQ5ZDNhZjg2NDFkM2VhY2YwNDIxIHJlbGVhc2UzMC1tYWludAorNjg0NTMgMzg4NmU0Yzg4ZmE1OTZkOTBlMjQ4MGIzZTEyODVlMzJhMDA1YmVlMCBweTNrCis2ODQ1NCA4YzQ5ZmYwY2UxN2FmMzZlZThkMGI4OTRhMDIyMmQyODQ4MjQzZjExIHB5M2sKKzY4NDU1IGZkY2NhODc5M2ViOWY3ZTI1MTE4MTBmYjJlMTAwY2VlNjA0MTc5ODUgbGVnYWN5LXRydW5rCis2ODQ1NiA5YjI3NmNlMzU2OTdiMjU2YTljYmUzYWY5ZjkxNTBhOGE0ZWM1MWE2IHJlbGVhc2UzMC1tYWludAorNjg0NTcgY2EwOThmYzE4ZWM2MDk4MDM0YmUyZTRmMTRlNGYyNzg3OGQ5YmU2YSBsZWdhY3ktdHJ1bmsKKzY4NDU4IDA3YmJjMmUyMGFhNGI1MDJmYTFkNzY2NDVhMmVlM2ZlMmQ4OTMyYTUgbGVnYWN5LXRydW5rCis2ODQ1OSBmMWNhNWRkNTlhY2E4MjY0ZWI4YmM2Yjk1ZTIwOTk3MTgxYzM5YjYwIGxlZ2FjeS10cnVuaworNjg0NjAgYzhmNzkzZTE1OWJiYmJlOTc1ZTdkMGRhNDZkOWI4ODhhMDA0OWJlNCBsZWdhY3ktdHJ1bmsKKzY4NDYxIGU2ZjU1YzllYzNkMDE0YWZlOTRjMDhiNzc3ODE2M2Q2ZGYyNGVkN2UgbGVnYWN5LXRydW5rCis2ODQ2MiA3OTI3NjMxNmI5NGIzOGYzZGVlYWE4YjAzNzAxM2I5M2NiNjBhNWViIGxlZ2FjeS10cnVuaworNjg0NjMgNjJjYTJjY2NkYjZmYzIwZWEzMzNhZjU4NzRkYmZmYzhjODUwNjkwZSBweTNrCis2ODQ2NCA5YzJiZDY0N2I2NDY0ZWI2NjVkZGMwMjI4ZTU3MDExMWE2NTU3YjU4IHJlbGVhc2UzMC1tYWludAorNjg0NjUgNWQwZWFjMDFhMjg1ZDk4ZWEzODJkYTk3MDI1YjY2NWFhZjNjMzAzZCBweTNrCis2ODQ2NiBiYzY3MGE4ZGY0NGJiMmEzOGEyNDFhNDIzZTlmMmIxNzIzNmRkOTZiIHJlbGVhc2UzMC1tYWludAorNjg0NjcgOTFlMzg1MWM4Y2M3Y2EyMjQzYTk0NTg1MWRjNWU1NmFiMzY2YTBhMSBweTNrCis2ODQ2OCBlMDBiMzI0NzQ5YjA0ZTI5NjM1Y2JiMWNhZjZmMDI0OTEyMmYwYzQ0IGxlZ2FjeS10cnVuaworNjg0NjkgOGFmNTFjZmRkNWU5MGMxMDUxMTMxYzUwYTEyZGQ1NTdjN2RmMmE0NSBsZWdhY3ktdHJ1bmsKKzY4NDcwIDFlMDcwYjgzY2ZhOTRiNzBhNTNlNGMyYjAxYjk3OTA2NzkxZDllNTkgbGVnYWN5LXRydW5rCis2ODQ3MSA5MzdmNTAwZTBmMDZkMDgwN2ZlNGUwNWUxZDBiN2UzZjJhN2NkYWJlIHJlbGVhc2UyNi1tYWludAorNjg0NzIgZDQ0ODNmZWNkNjg3M2MwZWNjNDA3NGQ0MzBkZjM2ZWQ4ZjRhZmZhYiByZWxlYXNlMjYtbWFpbnQKKzY4NDczIGMzNGQ3MjFjMmRjNzI0NjI5YjJhYjUxYmYxMDU1MjMzZDY1MDI0NTYgcmVsZWFzZTI2LW1haW50Cis2ODQ3NCA2MzhlMzA5ZWNjOThhZTgxYTBhZGI3ZDU3NjUwYmQwMzkwZTg1YzZlIHB5M2sKKzY4NDc1IGEwZmY5MDA3YzJhYTNlNzg4YmM5MzQwMmQ1NTQ4OGVlZTA2YmZjNTkgcHkzaworNjg0NzYgNTMwMmY4MDY1MzdhN2JiYzFmNmRmYmJkMTUxYzE2ZjMwMDc3NDNlMSBsZWdhY3ktdHJ1bmsKKzY4NDc3IGQzMjZhNjczY2I2NjA1ZGY0ZWFmYzFkMWY0ODhlYzM0YWZlYWQwYTEgcHkzaworNjg0NzggNWM2Y2JiN2E2MmIwNzZiZWI1MWZkNTI1ODMyZjE1YTk3YjliYjlkYSByZWxlYXNlMzAtbWFpbnQKKzY4NDc5IGZhOTIyOTg1YWY3MzIxN2ViOGFkODFmZGQ5MDY0YTJhZjM3ZTEzY2YgcHkzaworNjg0ODAgZGJlMzllYmQzMDI1NGZlZjM1MTIyZDM4ZjkwYjRjNmFhZTUyZThkZSBsZWdhY3ktdHJ1bmsKKzY4NDgxIGNkYzJmZTFiZThhNWUyMGQ4OTNkNmVlMDY2ZmUyMzVmYjJiMTMxODYgbGVnYWN5LXRydW5rCis2ODQ4MiAyZDQ3MWZkODhhZmZiMjk0ODkyOGRkZGFhMjFkMTdhMGE1MTc0Mzc5IHB5M2sKKzY4NDgzIDhlNjIzYjc4YWNiZjZjMGQ2NjFlNDYzMGE1ZmI4NzAyNTBjYjEyOGMgcHkzaworNjg0ODQgNWQ1ZDkwNzRmNGNhZDQ1NzAyZjRhNmZiZDUwYmFlYzQ1YmNlNjI4OCBsZWdhY3ktdHJ1bmsKKzY4NDg1IDk5YzQ0MTY0MGY3MGM3MTA0Zjc4NDQwZjc5ZWYyZjk0NDI0ZmQ4ZDUgbGVnYWN5LXRydW5rCis2ODQ4NiAxNWEwNTZlMGY4OWZlZjI2NGFiMjA5YWExYjBlN2U1YmIwYzJkNTAxIHB5M2sKKzY4NDg3IDc0NDRmNTY0ZTI3ZDFlOWY2NTliM2Y4YTQ0ZjA1N2M3ZjQ2NjE3YzIgbGVnYWN5LXRydW5rCis2ODQ4OCA4ZGNhYjI0Mzk3YThkMmYwMDcwN2UwZjRjZWU3NzJlZmViODYyZWQyIHB5M2sKKzY4NDg5IDI5M2FjNDRkN2ZmMGRmNjZlNGE0MDFkMTE2MzcwYjIwOTAwYzIwYTggcHkzaworNjg0OTAgM2I1YmUwZWUzMmVhYzk3OTkxYjY3YWM1Njg3OWI0NWJhZmViNDk4ZiByZWxlYXNlMjYtbWFpbnQKKzY4NDkxIGU5NWMzYWViNGM4NTgzOGRhMmFhMjA5ZjZkYzcwMjUxODQzYTVjMWYgcHkzaworNjg0OTIgZWY0YmQ3NzA4YWQ3YjNkYzI4OWM3MzNlMjNhNWZhNjNlNjY3MTQ4MCByZWxlYXNlMzAtbWFpbnQKKzY4NDkzIDQwY2E4YjIxMjIwODFkZTUzZjUyMzViNmY1MTIxNDVjZmIzNmVkMGIgbGVnYWN5LXRydW5rCis2ODQ5NSAxMjhlMjBkYTg5ZWI0MWZjZjRiNmU2MTJjOTA4OTI0YmVlYzBlYmU1IGxlZ2FjeS10cnVuaworNjg0OTYgNTg2MWY2ZTEwODYwNzUzZDBlNzk5YTI0NTc3N2Y4MTM4ZTBmMjIwMCBsZWdhY3ktdHJ1bmsKKzY4NDk3IDk1NTc2ZDhhZjc5ODllMzQzNWJmOTUwMzA3ZDgyY2I4OWYyOTQzMDMgcHkzaworNjg0OTggMDI0NDhjY2Y0MWUwMWE1OTAzODYwZDA0YmE1ZTc3ODg5NzUzMTE0NiBsZWdhY3ktdHJ1bmsKKzY4NDk5IDhlMDNkYWFhZmM3NDFkYjg5ODg2YjgxOTQxMDQ3NGE4NDZkMzdiYTIgbGVnYWN5LXRydW5rCis2ODUwMCBkODdjYmZjNmM1YzY3NzE0MzE1ZGM5NzBkM2Y3OGVkOTNmMDcwNDNmIHB5M2sKKzY4NTAxIGJiZjQ2NDIxMDk4NDA0NWJhMTUxOWEyMmFlNmUwNzU4Y2I5NjVkZjAgbGVnYWN5LXRydW5rCis2ODUwMiBlYWY3Y2ViOGFiNDU0YTNmMDNiZjUxMzY3ZThkYTRlNDNjZDA5ODJlIHB5M2sKKzY4NTA4IDllMTgxZWVkYzk1Y2EyYmI5YTUwNDRhMTU3Njg2MDA3NzIyMGUyMTMgcHkzaworNjg1MDkgMDQ5Njk2M2ZjZmU5ZmI2NGM5NDU4YzIxZDM1NjM1OTMyMjM2MWQxMSByZWxlYXNlMzAtbWFpbnQKKzY4NTExIDRkMzUwZjJiMWYyZTgzODBjYzVlODVkZDdhYjY3MjVmNGEzYWQwMzggcHkzaworNjg1MTIgMTlkZmZkZWM1NTQ3YWI5NDJkNGNjZGNjMDlkMTViNmFlZDZkNjg0ZCBsZWdhY3ktdHJ1bmsKKzY4NTEzIDBmMWU0YWI5NTY1NTE3MWZmNjEwYWZiM2M4NmQyZWY1ZWNmYzM0MTggcmVsZWFzZTMwLW1haW50Cis2ODUxNCA0NGUwYzY5YTUzMDQ4MWQ3Yzc4MmM2YTBmMjU3ODEzZDUyODRkMDBmIGxlZ2FjeS10cnVuaworNjg1MTUgNDNlZGM2NTgxZTQ0ZGZjNDgyY2FiNDE4ZTNhZGRjZTRhZTlmOThjMSBsZWdhY3ktdHJ1bmsKKzY4NTE2IDkzYjJhOTEzZDhhY2ZkMDczYmU2YTVmOGQ2OTQwMTc3ZDI2YzIyYmQgcHkzaworNjg1MjEgYWIwODZhZmRjZjBjZjdlMGY0NDVmNmYyNDg4ZGI4ZDNmODY0NGZiYiBsZWdhY3ktdHJ1bmsKKzY4NTIyIDJkODk3NzJjYzI1Njg4YTZmZmNkNDIyNThhMTZiYjA2YjIxMTQ5NjUgcmVsZWFzZTI2LW1haW50Cis2ODUyMyAyOTM1Y2VkZTU5NGUzNzdmZWMxYmZhZGY2ODcxNDI4MDU3Zjg2OTE4IGxlZ2FjeS10cnVuaworNjg1MjQgNzU2NjFiZjhjYjJjNjczYzM2NzEzOTcwYzg4MmI5ZjAxZDhkMTc2MiByZWxlYXNlMjYtbWFpbnQKKzY4NTI1IDk1YTRmNTMwOGJlMjRjZGVhYTE4Yjk2ODM0ZDczYTZmNDI3NzllYjggcHkzaworNjg1MjYgZGM0MmFkZjg4N2I1NzVmMDQyMmUzZTBlNWMxZmZmZWEyMWVmNzRhNCByZWxlYXNlMzAtbWFpbnQKKzY4NTI3IGQ4NDFmZjY3Y2M2MWI4YTI1NThmYTc1YTNlMGNlMDQyODQxYjM2ODMgbGVnYWN5LXRydW5rCis2ODUyOCA3MDQ0M2FlNzZiMTA1YzgxOWMwNTc0YTg1ZDlmZTgzOTU1NTEwMWViIHB5M2sKKzY4NTI5IDkyYmQwMTQxNTkwNjk3YjU5MzIxYzM3YjZiNDEwNTdmMjg0MDU2NjQgcHkzaworNjg1MzAgMmZmZGY4ZGQzZThiNTA2NGEyOTVlNDI1OWYyNTk0OGQyMjRmMDFkZSByZWxlYXNlMzAtbWFpbnQKKzY4NTMyIGQwOWQ2ZmUzMWI2MTk5ODdmNzlmYTk0MjQzYzkwMzM0ZWYyZDFlNWUgbGVnYWN5LXRydW5rCis2ODUzMyAyN2RiODJhNWNkYTkxOWRjY2EyMWY0Y2ZjNmQ0Nzk2YTlhNWU2Mjg3IHB5M2sKKzY4NTM0IGI3ZmJlMzdlYjg5MDRkZjljYmY5OTg1YTVkY2RiM2UyYjI4MjRlYmUgbGVnYWN5LXRydW5rCis2ODUzNSA0OTFlYzQxMWU1YzhmZjM2ZmQxODE0MGIyZTNmYTBkZjQ2MzA4MTJmIGxlZ2FjeS10cnVuaworNjg1MzYgNzU0M2YxMjgyMDczNjk0YTQ2NDRkMTU3NGJiZjkwNTQ5YzM4MTAwNyBsZWdhY3ktdHJ1bmsKKzY4NTM3IDBmMWIzZjMxMWFlMDEwMmQyZjk0ODZiYjUyZDlkZTMyODU5ZmViODYgcHkzaworNjg1MzggNmVlYTgwYmRjYmY1ZThmNjE2ODgwNGYyYjBkMmYwYWIyYjBiMTcwNyBweTNrCis2ODUzOSA1ZjRjMmRlOTUwOTFiNTJjMDZjY2VmZDkyNWRkMTM4YmMzY2JhMzM1IHB5M2sKKzY4NTQwIGFkOTY5MTM1MGM5MzFkZjYxNDc5NWUwMTIwNWU4NDliMmY3ODQ5MmUgbGVnYWN5LXRydW5rCis2ODU0MSBlODE1NGJkMzIyY2I1NjYxMmMyNDFmODJjNjQ3ZTUxOTllYjdiZGRjIHB5M2sKKzY4NTQyIDg1NDAyNjgwNDBmZjA0M2YwMDgyZjQ3MmE2YjJlZTBmZTNjMGIzMjQgbGVnYWN5LXRydW5rCis2ODU0MyAyYjI3MDdmZjhiYjdhOWYyNWM1Y2MwZmY4NDA1YzZlOWQ1NTM4ZmM4IHB5M2sKKzY4NTQ0IGU0MGNlOGZmZTYzMmQxNmM2ZjYzYjc0YmE2MjUyOGMyNzc1YWVlMzQgbGVnYWN5LXRydW5rCis2ODU0NSAzOGUxOGE4ODRmM2ZlZTY1ZDEyMDljYzdiMGZlOTg2NTdkOWUyOWY2IGxlZ2FjeS10cnVuaworNjg1NDYgODdhZGNjZTQ4ZGVmZTY0ZjU0ZjhlYjQwZTFhNGNlMDE4NjdmNTZiOSBsZWdhY3ktdHJ1bmsKKzY4NTQ3IGJiY2Q0NjM0YWU3MzNiMmQ4NDFkMTdhYThlZjQ3NDIyZDcwMTI3MTUgbGVnYWN5LXRydW5rCis2ODU1MiBiYzkyYmIyMDgxOWZjOWNiNTU2Y2FiYjc1N2Y3ZWJhZjA4OGM4MDAzIGxlZ2FjeS10cnVuaworNjg1NTMgZjU1Yjg1NTMyMzkyN2JkNWU1MDI5ZWY5NmRhMjBmNzZhZTYwNjA5ZSBweTNrCis2ODU1NiA4NzFhMWZmNDZmYTY5YzNkZDZlYTU0ODMzMjE1MjgzZWE0NDY3ZDhiIHJlbGVhc2UzMC1tYWludAorNjg1NTkgNTkzNDYxMmQ1MDcwNWIwNDlhOGI5YjM3OTcwMWE2Mzc1OGY1ZWFmYSBsZWdhY3ktdHJ1bmsKKzY4NTYwIGU5NzQ4ZGI0NzYzNTdjYzYxNDJmYjljMWQwMjYzMWJlMjgzZDlhZmQgbGVnYWN5LXRydW5rCis2ODU2MSBjOTljZTAxNjQ2OTljM2Q0ZjZiNThkZDBhYTJhN2E1NTFjMTgyZGQ5IHB5M2sKKzY4NTYyIGY0NTk5N2Q5YWM1NTU2MThhZGQxYzBjNjZjYTllNzkxOTFhN2MzNDkgbGVnYWN5LXRydW5rCis2ODU2MyAxMmE3ODdiNDRkYjU0NDlmMDBmMDEzNTUxYzYzMzc2ZjhiN2MzMzNlIGxlZ2FjeS10cnVuaworNjg1NjQgMmMwM2M3NTgwYWEzOGJkMzZmMzI2YzA0ODA4MGFkNmI0NzNmOGM2OSBweTNrCis2ODU2NSBiYTE1MjFmMjQ3NDkwNDM0NjI1NWM1MzgyY2U2ZmNiZTIxMTE1NDQ4IGxlZ2FjeS10cnVuaworNjg1NjYgZTMwMTE0MWU5MWIxMDQ2N2VkMWUwN2RjNGIzNDMwNjIxNGQxZTYyNyBsZWdhY3ktdHJ1bmsKKzY4NTY3IGU1Zjk5NmNkYTMyMTZlNGIwMTFkYjVlMDIzZDJlYzFhN2JiMTgzMzIgbGVnYWN5LXRydW5rCis2ODU2OCBhMTlkNTk2ZDM1MDBjZmE2MDU1MzRjNDFhYjFhY2M1NjM0ZTkzNDg1IGxlZ2FjeS10cnVuaworNjg1NjkgMmE4MmJkMjllYzE4ODg1OGQ5ZThmNmFhOTVlZDJiYWNhNGQ1MjRkYiBsZWdhY3ktdHJ1bmsKKzY4NTcwIDQ1NGI2OTZjMWQ3MzBlMmM2NmUyNTdkY2M3ZDRmYjIwYzExZWU0MWUgbGVnYWN5LXRydW5rCis2ODU3MSBjNzc2YjZkODE0YzIzZThiYWJjN2EyZWYyNjEyMTJlOTFiZGVjMTRiIGxlZ2FjeS10cnVuaworNjg1NzIgNTliMTIxMmE0ZGJmM2ZlMDEzMjJmMmVjODY5YWNmMDdhZmQyZjYwMyBsZWdhY3ktdHJ1bmsKKzY4NTc1IGJlOGU5NThkZWU5NGNlZDRhZTZjNTQ3MDA2OTRlNDlmNDc2N2U4ZDYgbGVnYWN5LXRydW5rCis2ODU3OSAwOGFjNDQwNDA4YzlkMzJhNmVmNDNkM2IwYWYwMmQyY2FjY2RhYTA2IGxlZ2FjeS10cnVuaworNjg1ODAgOWE1ZDE0NWYxOWE1MTJiNmI1ODNlZGVjODk2MGU0MmNjMDVmNTg5NCBsZWdhY3ktdHJ1bmsKKzY4NTgxIDQzOTllM2YxMGIxOWIwYTE3MGE4Y2IyYzEzYWM0YzY1MmNhMjZiMzYgcHkzaworNjg1ODIgNmUzM2FlYWVlNzdkZDM5NjgwNTdhODg4NTA4MDc5OTNjNWRkZDY0ZiBsZWdhY3ktdHJ1bmsKKzY4NTgzIGY1NzE4NDRiZWY1YzlhOGU4MDc3MGRiMzRhYTY2MjY2ZDQ4NTM5M2IgcmVsZWFzZTMwLW1haW50Cis2ODU4NCBhMzQ5NGE1YjA0OTU2NDZjZWM5N2I1MTY5NWNlZGMxZTNjZjJjNGFiIGxlZ2FjeS10cnVuaworNjg1ODUgMDJhYjE2MTQyM2E1ODZkMjRkMGYwZDYzNmRiMzhmZmNjMTJjZDkwMiBweTNrCis2ODU4NiA0MTNjY2EzZWJlODJlMDIxN2ViMjk1YjhiZmJjZDUzNzM1NjI3ZGIwIHB5M2sKKzY4NTg3IDAyMjkwNTVjOGJlMDZmMTAxZDNkZGE3M2EwOGU3YmRiMGY5YWJlNjUgcHkzaworNjg1ODggMDk0MzM0NGE1MjYxYmM3NjA4MzdiZmI4NmUyYmE2ZWJmMTU4ZjVhMyByZWxlYXNlMzAtbWFpbnQKKzY4NTg5IDA4ZjNmZTY5MTUxYWM2ZDA0NDkzNjgxMmM3YjU3MGQ0OGRlOTllNGUgbGVnYWN5LXRydW5rCis2ODU5MCBmYWI1MDEyNzdiYzJjM2MzMjljMGM2NGYzMmM4NzViMDZhMjU4NDhmIHB5M2sKKzY4NTkxIGRkYTMxMDdmNmJjN2E3YmI2MDAwMTQ2MzgwYjIwYTE0MmQzYjIzNDMgcHkzaworNjg1OTIgYTg1OGI2MWRiMzI0ZDdlZDNjNmVmNDliNzE4ZDdkYzM3OTI4ZGE4MCBsZWdhY3ktdHJ1bmsKKzY4NTkzIGU0NmEwNmEyNjRiMzJkZGI0YTZlYjEyNjg5MjI1MjFlYzJjMzQwYTMgcHkzaworNjg1OTQgMGZkY2UzOTlkY2RlMGEyM2M4MTc5MWNlNjdhMzgxZGExYjMzNGEwMiByZWxlYXNlMjYtbWFpbnQKKzY4NTk2IDY1YzE5MzhmYjlmZmYyNzhhY2M0Y2U2NTJhMWQ1NDhhYjUxNmY5OTggbGVnYWN5LXRydW5rCis2ODU5NyBiY2Y2NjYzYzVjMDQ4YmE5YTE3YWM0ZWI3YjNlZDI2NzFmMTAwYzQ3IGxlZ2FjeS10cnVuaworNjg1OTkgMmQ0NTNiMjIxYmVjZDdlNGVhYWQwZWUzYzJmYmIxNzg3NTg3NzgxYSByZWxlYXNlMjYtbWFpbnQKKzY4NjAwIDBlZjFlNjY0YTRhNDVhMjkwZGFhMjlmYjhkOGVjNjE3MjU5MmI5YTkgcmVsZWFzZTI2LW1haW50Cis2ODYwMSBlMTFjOTllMWU2ZTdlYzgwMTYyY2M4ODEwZmQ3ODAzZmU3MzhmYzUxIHJlbGVhc2UyNi1tYWludAorNjg2MDIgMmQ1YTljN2U5YjRlMzBiOWRiMTkxYTYzNGM5NzliYmRmNjVkZTFhNyByZWxlYXNlMjYtbWFpbnQKKzY4NjAzIDQ4MzJhMGIxMjg3YjdjNmI3OWM0NjYzOTA1YjE2Mzc1MTVhOTk3YzMgbGVnYWN5LXRydW5rCis2ODYwNCBkMmNjMjZiZGE2YTkzNWU4OGE3MzFmMjQ2NDlmMjk2ZDlmZjA0M2VjIGxlZ2FjeS10cnVuaworNjg2MDUgMDQxMzFjNzAyZDE3MjYwNjZkNDYxMWMyZjQ3YjdiN2E1YTMyZmQ2NiBsZWdhY3ktdHJ1bmsKKzY4NjA2IDBlMDVlMDc4YmNlZDMzMjZhY2E5NzcwODhkZDkzOWFkYjBiMTI3OGUgcHkzaworNjg2MDcgOGRmODE5NDFkZTA1Y2Q1OWI5Njg3MzkwMWVmOGRmYTJiMGIxMTMwYSBsZWdhY3ktdHJ1bmsKKzY4NjA5IGNmZjRmYzUyYzcwOGZkM2MwMTMwMjU4ZjZhNDVlMTEzYmY0MWRhZDEgdGxlZS1hc3Qtb3B0aW1pemUKKzY4NjEwIDY2YjgxYWNhY2JjMDUyODNmMmZlNjEyMWMwZWU0ZjhlMjY4YjcwYjggbGVnYWN5LXRydW5rCis2ODYxMSAzMzc4ZWFmZDI3ZGY1OWE1NzBmYWE1ZWFmMzJjMTRmMjAxYzY0MmVlIGxlZ2FjeS10cnVuaworNjg2MTIgYWU1ZWQxNTc3NGI0ZjU3YWQ5YTcyYTJhMWYxYmM3NGFjNzMwNjA1OCBsZWdhY3ktdHJ1bmsKKzY4NjEzIGViZmU5MTdkMGVlYTJkNzVmYmQ2ZDQzODVlM2MxMmNiOTM4MDM1OTkgbGVnYWN5LXRydW5rCis2ODYxNCBkMDA4NmMxNzZlODI0ZTFkM2ViMzk4YWJiODY5ZWQ4MDEyMjRmYzZhIHJlbGVhc2UyNi1tYWludAorNjg2MTUgYjE3ZWM0YzRhN2MzODUwMGFlYmRhOTMwN2JkNjk2YzBiMWYyMzg5MyBweTNrCis2ODYxNiBiYjg2ZjJlZDE4YWFiMGUyYzI0MGIzMTViNTRmMzgyODY2YTQyMzI5IHJlbGVhc2UzMC1tYWludAorNjg2MTggYmU1OWEyM2I3YzA0MTVhZWMxZDg0MDM0ZjZlZmQyNDJiMTU2NTFiOCBsZWdhY3ktdHJ1bmsKKzY4NjE5IGU4M2FiOTVlOWM4N2JkYjkzODgyOGUyNTk5Zjc4MjNmMTc4NTdlMGQgcHkzaworNjg2MjAgNDI3ZTQzZDBlMDMxY2Y1YzBiY2M1ZTY0MzllNDRkMDA1ODM1MWZlMiByZWxlYXNlMzAtbWFpbnQKKzY4NjIxIDZkZGUwZGYzYmI0ZWNiN2NjMmFjOTVjNTBhZDJlZWVkZjEyNmU4MWQgbGVnYWN5LXRydW5rCis2ODYyMiA2NWJlYmU0YTFhYTNmOTFmNTEzZWM3YzVmYmI5ZDY2ZjI0NzFiZGJkIGxlZ2FjeS10cnVuaworNjg2MjMgODg0Y2QzZjE5YjIwZWM2Zjk1M2Y1MjkzNjI0NGMxNzEwNmZmZGE0ZCBsZWdhY3ktdHJ1bmsKKzY4NjI0IDI2ODBhNGJlYWVhMTg2OWEwNDY5N2VhMjAxYjUwYmMyYzIzN2YwOTEgbGVnYWN5LXRydW5rCis2ODYyOCBhZGIyMzY5ZWI3YmJkMDYyZjQxOWU5MzIxYzA1ZGIxNzA0ZTU5NWE5IGxlZ2FjeS10cnVuaworNjg2MjkgMTJhNWI2N2Q1NjdkMjIxZTlkNDUxMzgzNWY5ZmE2OGY3YmJjOTBlMSBweTNrCis2ODYzMCBjNjk5NWRhZTk4YTY5YzgzZjNmNDgxZjQ5NjA2ZmJhMTczY2QyYTg1IHB5M2sKKzY4NjMxIGEwNGIxYzcxNjdiYWRkZGZhODJlOTI3NmYyMWViNzI3MzNmY2Y2NDQgcmVsZWFzZTMwLW1haW50Cis2ODYzMyA4YmUxNTlkNmZkNDA0M2NjNmY2MWNhZGZjNmEzNGQxZGIxMWJjOWViIGxlZ2FjeS10cnVuaworNjg2MzggMmNjNDJlZmRkM2ZlZGU1MWNiZGY3MTk2MTQ3YjMyN2Q0YmY3NjUzOCBweTNrCis2ODYzOSBjMTBmNmYxMTZhZjBjMWE4ZmQxMzY2NDZhYjA1MDNiMDU4ZDUyNGFlIHJlbGVhc2UzMC1tYWludAorNjg2NDMgNzQ5YTZiODUzMzc2YjY5NWQ2NmRhZjI1MTlhMjMxMTQ5NTE3ZTZkNiBweTNrCis2ODY0NyAwYjFhOGY1NjExN2FjNzlmODExOWQxMjA4MmVkNGZmZDAyZTEwMmYzIHB5M2sKKzY4NjQ4IGNiMjkwNDgyYTFhN2Y5ODlkNGQ5ZTNkMjJmOTg0ZDRlY2RmMDdjNmIgbGVnYWN5LXRydW5rCis2ODY0OSAxZTJkN2YwNzUzMjZhOGFiZjMzNzBkYmVmOTQ3Njc2NTA2NTYwNzYyIGxlZ2FjeS10cnVuaworNjg2NTAgMWI4MTc3MmNkNTlkNzg5OTczMzE0MjMwZThmZmUwZDVjYzE1MzE3OSBweTNrCis2ODY1MSBkZjNmYTQwZmRiZWRhM2E5NzllZjAwMmVlY2MzYzcxNTBiZWMxOTU5IHB5M2sKKzY4NjUyIDdiYzhlMmVlZDY5MGJjMDQ3MWRhMThlMDZiMDc2OWUzYzIwNGY4NjkgcHkzaworNjg2NTMgNTdlZGY4MzVkZWEzNjYxMzM2YjRiNDc5ZDk3ZDQ4ZmVmMmRhY2M4NiBweTNrCis2ODY2MSBkYzMxYmU1MGM0MDUzNGM0OGEwMjc3ZjMyM2Q4Yzk3MjJkYjkxN2Q1IGxlZ2FjeS10cnVuaworNjg2NjIgMWFhZDdkMmU4OTQ1OTQ4NTgzOTVlYjk2ZjlmNzEyN2NlNTllZDFlYyBweTNrCis2ODY2MyA0ODZlMjU3OWM5NzhiOWQyODA5NGI2Nzc5OWViZjMzY2YxNDhiYjc2IHJlbGVhc2UyNi1tYWludAorNjg2NjQgOGRmZTNjNGFiZDViMTE2NjBlMDU2ZjkwYjY3YzI3ZmNiYTI4NWQ3MyByZWxlYXNlMzAtbWFpbnQKKzY4NjY1IDI3YmE4MDNiZGVhOTA1NzFiZWYxYjdiM2EwYjhjNDcyZGY4Y2RiYzcgbGVnYWN5LXRydW5rCis2ODY2NiBhZjAyYjZlNDIxNDJiMzQ2YTIwNjk2MjExYzkxYjVlODYyY2U2ODdlIHJlbGVhc2UzMC1tYWludAorNjg2NjcgZTE1OGM3MDUxMWZlYWRiOWZlNTUzN2E3ZmRmN2E0MzNlMjA5NzVmMyBsZWdhY3ktdHJ1bmsKKzY4NjY5IGU1NmM1ZjNiNmUxOGZhNjk2MThiMzExMjI3M2E4ZWMyNDIzZWQ4OWYgcHkzaworNjg2NzIgNDNlMGIxZWUxYzFiOTI3ZGZmZDcwMjc4ODc0ZjkxMmZhZWU5N2JjYyByZWxlYXNlMzAtbWFpbnQKKzY4Njc1IGE2MGI4NmE3M2UyMDQyNmJkMjgwZmZiZGFlNzJiMDk3YWI1NzA2N2UgcHkzaworNjg2NzYgMzViZjhmN2E4ZWRjYzJkNDkxY2VlZTU4ZGI4MWJlZDQ4MjBkYWQ5ZCBsZWdhY3ktdHJ1bmsKKzY4Njc3IGRiMjFkMTIxYmE1M2Y1ZDMzMmI4NjM1YzM2NjA3NzgwZDZkYTcxNjEgcHkzaworNjg2NzggYmI5YzY1MjRmZGNhNDU5MTkxNWIxZDk3Y2E4M2Y2YzQ1ODEwYzA5NiBsZWdhY3ktdHJ1bmsKKzY4Njc5IDU2MjA1MmEwMzQ3NmY5NzdiMjc2MDg1NTQ4NDlkZDQyYWU1OTNjNjIgaW8tYworNjg2ODAgYTAyOWM1NzkwZTQxZmMyYzdjMGIxMTA0NzJlYWM1N2QzYTQ2OWQwZCBpby1jCis2ODY4MSBkNzIyMGZlYjdkMGI4ODBiNTQxYjQ0ZWNmOGFjNjI0OWY1OWNkNWRhIHJlbGVhc2UzMC1tYWludAorNjg2ODIgZjM5NjlmNGY0OWUzNjdhNzRmYmUyZDg2ZjEwM2Y1MjMxNjA3OWM2NSBpby1jCis2ODY4MyBiM2MxOWI2NzZmNTg2ODNiZjQ0MjI4ZGJhYTgwZTk0MjhmNWVlNTlkIGlvLWMKKzY4Njg0IDYyNjgyNDg3MjBkNjY0Y2ExZDY0NDc4OWRmNmZmNGQ0NWQxOTE1OWUgaW8tYworNjg2ODUgM2M1NTUxYTk0YzdjOTk4OGE5MmI1MzRjODU3Njc1YmFkNzNlZTdmZSBpby1jCis2ODY4NiBkOTZmNTNmNjc3ZGJlZDBjN2UwZmExNGU5ZGQ2NzQ5ZmE1YWQxMDM5IHB5M2sKKzY4Njg3IDhhYjcwZWMyYWY1YmMzMDhhZDc2ZGNmOWI1YWQwNGEzZTNlODEzYWEgaW8tYworNjg2ODggMGRkYzIxZGY5Nzk5YjljNjNhYWQzZDRjNWU0N2RhNWE4ZGQzYmY1ZiBpby1jCis2ODY4OSBhZWQwYzc5ODA5ZTQ5ZjBmYmM3ZWZkOWNmMzFhMGQzZTg5NWE4MmI2IGlvLWMKKzY4NjkwIDc1MDA5ZDQ4NjNjOWQzNDM0NWM3MTc0MTkyMTc2NTFjY2ZhYTFhMDggcHkzaworNjg2OTEgMjllZGYyNmI5YzIzZWZkZGYwZDNmMGE3YWUxMGZiNDNkNzI5ZTVhYyBweTNrCis2ODY5MiA5OWYzYzM0ZDczMjhlMmMxYWEyZDNlNGUyYzdlYzhkYjlkZGVhMDJjIHJlbGVhc2UzMC1tYWludAorNjg2OTMgOGVhMTdmMjdkYTY3ZDI0MWMwZGE0ZmIyZGFkNGRhMDhhNTcxMDNlMSBpby1jCis2ODY5NSA1MDc4NzRmNjU1YWNiYTQyN2YxNGFjOTFjMjA1YWMwODFmMmE4NWIwIHB5M2sKKzY4Njk2IDMzYzRmNDIzYWViZjIxMjc3YzczN2E2MTJkMmJlMDhjMzc5ZjJiMjcgcHkzaworNjg2OTcgZmE2NTFhMWMzNGNjNjhhODYxODZmOTEyYjQ4MmQ3NTNjY2ZiZTU0MSByZWxlYXNlMzAtbWFpbnQKKzY4Njk4IGFhYzUxYjcwYzc0Y2IyYjBmMDhkNTQ4ZjQxMWIxMjM2NmU3NDhkZjcgcHkzaworNjg2OTkgZTM1MDQzMzVmNDgwYTcxYzNiOGFjM2VjNTUyZDcxYTRlMzBhMTg2OCByZWxlYXNlMzAtbWFpbnQKKzY4NzAwIDQyODg1NDZhNDIzOGMyZTQ4ZGRiZGI0ZGYzNWVmMzMyYmI2ZTExYmUgcHkzaworNjg3MDEgNmU5N2Q3MWQ2MWMyNWNiMWIzOThlNWJiZjU1Y2QzYjFhNzQ4MjQ0ZCBweTNrCis2ODcwMiAxY2UxYmZiZTcwNTFkZTE3Y2RjYzcyNjIwMDkyYzZiNTU2ZmVhNTU3IHB5M2sKKzY4NzAzIDljN2YxOThmOWIyNTIwZjkwNTQ0ZWZiZmYyNGI2NjM2YjdhYzVkYzMgcmVsZWFzZTMwLW1haW50Cis2ODcwNCAyMGJkMTE3OGZjNjQyZDY5NTYwYjQ1N2FjMDI5NmI3Y2U2YjcxYTFmIGlvLWMKKzY4NzA1IGI5Y2IzNjQ2NWRkMmEwN2QxZjA5N2Q3YzM3NzM0YmYyN2EzYjYxODEgbGVnYWN5LXRydW5rCis2ODcwNiAxMGMzOGJjNjczN2RlYjRlMmRiODQ0YzkzZjg4OTE2NWZkMDdkNmQzIGxlZ2FjeS10cnVuaworNjg3MDcgZTU1NGI4YmJkZWVhYTkyMmQwMDRkMzQxMTVjZjNlZDdiZWY1N2E4OCBweTNrCis2ODcwOCBiNGJhYTcyNTI4NGE2ZDI4YjllNGMwMGUwZDIwN2E1YjBmNGJkZWQ5IGxlZ2FjeS10cnVuaworNjg3MDkgMDk5NjI3MWUyMWQ4YzRjOTNlMjA4NDAzODljMzhiMWVlZjc2M2M0ZCBweTNrCis2ODcxMCA5ZTJhZDQ0MDE5NmJmMjQ0MGEwNDdjZDNkZWFmOTFiOGI5MjQ0OGNmIHJlbGVhc2UzMC1tYWludAorNjg3MTEgZTkxZjY0ZjVkOTU1ODIxYThmMTk1ZjFhNTBjNTQ3MDFlZGU3ZWNkNSByZWxlYXNlMjYtbWFpbnQKKzY4NzEyIGM4NjM0N2FjNjY2MzUyMjFiYzU4MjZmMWJjZTI4OTZkNTIzMTcxOTkgcHkzaworNjg3MTYgNDA4YzhkY2YwMjQ4YTE2OTE3ZWQ4NWJmNjYxMDVjODIwYjdjMTYwMiBweTNrCis2ODcxNyA0NDQyNDk1N2VhZGY2NzA1Mzc0MmJkY2RmNjgyZjdkN2ExM2ZmNWQ5IHB5M2sKKzY4NzE4IDE4OWQ1MDgzMDI5NzA1NTI1YmI0ZjliOGVmZWMyMzA3MzAzMDhhMWYgbGVnYWN5LXRydW5rCis2ODcxOSA4ZjMyYmE1MmIyMGQ4OTM1OThiYmRjYjg0MDkwZThjZDA4N2M4MzZjIHB5M2sKKzY4NzIwIGQyZGM2ZDA0M2MyMWRhOTcwOGEwOTc3ZWNiM2NlNzM4MDFlNGJjOGYgbGVnYWN5LXRydW5rCis2ODcyMSBiYmRhMzFkZDk3OTc1YmRkMzVjMzE0YzgxY2I0MzhhMjM3Y2JmZjAzIGxlZ2FjeS10cnVuaworNjg3MjIgOWJiYjlhYzA2MWMwZDQ4ZmQ0ODlhMTNiM2M3OGNhNjY2NWEzNzFmNSBsZWdhY3ktdHJ1bmsKKzY4NzIzIDgzMjVlYjA0MTkyMTBjMmI2NzdlMDdjNmQ5OWQ1ZjFkYzlkNzMzM2UgcmVsZWFzZTMwLW1haW50Cis2ODcyNCBmNmFlZmJiZDcwNDVlOWRjYmI4NTQ0NjkyZGJmYTE0Nzg4NTI1NWVmIGxlZ2FjeS10cnVuaworNjg3MjUgMTFjYmYzOWMzMTZmN2Y3NDViMjZhMDBiNmVjOTMwMGY2M2RiYWM1ZSBsZWdhY3ktdHJ1bmsKKzY4NzI2IGQ3MTU4Mzg2MDYzNDY3MGI4M2MzMzMzOGY2NTJlMmNhY2EwYzcwYWQgbGVnYWN5LXRydW5rCis2ODcyNyBlN2Q2ZTVmNTE5ZWYyNTgxMWI5YTA4NmUyYzFhN2MxMTE1Nzg0OGNlIGxlZ2FjeS10cnVuaworNjg3MjggOGRjNDc5YjYzZTAzNjczYjI4NDI2NWQwNmMyNzczMzM0NWE3MTU5YSBweTNrCis2ODcyOSBhODE5OTI3YzJhMTM5OGM4ZGYxMDAzN2Y5MzVkZTY5N2Q2MWE5NTI5IHB5M2sKKzY4NzMwIGYzYmE1Zjk5ZGE1MGQwYjM2M2Q3OWEwYjdmZTI1MWFmOTg0ZjcwZDUgcHkzaworNjg3MzEgYjkyZTY5NWQ1NjFlNWE4MTA3ODM4YTFmY2NmMjJiOTgxMzkxMDI3MyByZWxlYXNlMzAtbWFpbnQKKzY4NzMyIDc1ODc3OTljYWUxY2IwZDMxODUxMGE5ODhlOTM5OWU3MWE5Yjc2M2IgcHkzaworNjg3MzMgN2U1Y2ZiYTU0ZTM0ODAxY2ZmZjFmY2Q2NjdiZWNkZjYyYzgwNGQwMiByZWxlYXNlMzAtbWFpbnQKKzY4NzM0IDZhNzZhYmQ2MTZkZWRiMTY0MTk5MDBlOTZjYzUxY2U5Njk0MzQ1NjcgcmVsZWFzZTI2LW1haW50Cis2ODczNSBhZTNhMTA2MzA2YTgwOGIzODRlYmM2MjYyMzk4MjIwYzk3MGY2MTNjIHJlbGVhc2UzMC1tYWludAorNjg3MzYgNTBmNWMyOWZjZTI2ZDMxY2I4NGQ2YjQ3YWFhNmE0ZjVjZjRhMTdiMyBweTNrCis2ODczNyBjMWM0NGEwYWI0MzhlNmFiMjc4Nzc5NGU3OGJhNGYxZTk5OGM5NzlhIGxlZ2FjeS10cnVuaworNjg3MzggYzUxM2M2OTExOGRjYTYxNDQyMWYxOTNiY2NhMTFhNzlhODA4ZjgwOSByZWxlYXNlMzAtbWFpbnQKKzY4NzM5IDViNDhkNjAwMDkxNjc2MjY4MTZlOTU5NGQ0YzU2MzE1ZGI1MTdmY2QgbGVnYWN5LXRydW5rCis2ODc0MCA5ZWNiZDlhMTAxZDgzN2QxNTczMTQyNmZjOGIxMWQ4ODk3ZGI5YzA4IHB5M2sKKzY4NzQxIDQ5ZDk3MDhkN2VhMzlhZWExNjY3NzBlNmRjMzNkYTFlM2FlYmE4NDMgaW8tYworNjg3NDIgYzllNWMyY2E2MmMzZTJjM2U5Y2Y4NDEwNTRhNDA0MzQ4MjQ3N2NiOSBpby1jCis2ODc0MyA5ZjYyNzRmZDdhOWRmN2MzN2E4MjBiYmYyNmI0ZTI1MGFlZDE1MmIzIGlvLWMKKzY4NzQ0IGUxNGVjNmQxOGFiODFmNTIzZWFmM2QzNWFmZjk4ZTYyOGMwMzJhYmMgcHkzaworNjg3NDUgMWVjMzViZWVkMmQwMTRkY2Y2MTFhY2MwMDYyYzc0ODVlNTg3YTE0YyBpby1jCis2ODc0NiA5ZjQ1ZmEyN2I4MzhhZTBiNjlmNzAyNTgyNDI1MjVhYTc0OTRkOTJmIHB5M2sKKzY4NzQ3IGJhZDM2ZjQ5MjA4MWU3ZGQxYjM5M2RkZWJiZTNjNmFkYjA3M2ZjZGIgaW8tYworNjg3NDggNTgxZDg2MDJmM2Y3NDJmNDAzMTI4MzYwNTg3MGFlODIyYmU5NzNhMiByZWxlYXNlMzAtbWFpbnQKKzY4NzQ5IDFiMjI5ZTdkODE4YmQ1Mjc0Nzk0MDE1N2NmMDcxYzM2ZGU4Yjk4NzEgcHkzaworNjg3NTAgMDc4OGQ0NWJmN2E0N2U5NDcwZDI3YmExYzUwM2ViYzllYmI3NjBkNSBsZWdhY3ktdHJ1bmsKKzY4NzUxIGZiN2YyMzFjY2QzZWM3NzcxY2VmMTFlZGRkY2RkM2Q0ZjJhNGM0OWEgcHkzaworNjg3NTIgNTlkZTA2NTQ3MjMyYTQ5MjhjM2JkYmY1NjgxNTcwZDBiMTcxZTA3NyBpby1jCis2ODc1MyA1OWVmMzE1YmYwMGVmY2ZhNTI0ZDQyNWUwOGIwMGYzZDcwNDhhZjQxIGlvLWMKKzY4NzU0IDY1ODE4Y2ZkNDgyNjVmZDIyMTNkMTFlYzk3NzM3NzQyYmVkNDFkY2UgaW8tYworNjg3NTUgYTk5MWJlNmExMTFkODY4NGZmZWNkOWJjNGY1MjY3YjA4OGMxZmQzNyBsZWdhY3ktdHJ1bmsKKzY4NzU2IDFjMTZlZGEzMTA5ZTU0NTRmNDNjMDQ0YjRlMzk1M2YxODNiNTNjMGYgaW8tYworNjg3NTcgMWZhZWQ3Y2VkMjQyNDU4ZTdmNmQ1YWFiNzdiN2MxZDliZTM5NjczYyBpby1jCis2ODc1OCA2NWVmNDYyOTIxZjczOTI2ZGI3MzlmZmNmZTFlZDUwZTQzNzlmNTViIGlvLWMKKzY4NzU5IGUxMDhjOTgwNmNjM2YyMTAyZWYzODhhNWY0ZTZiZjU4ZjM4YmNhODkgcmVsZWFzZTMwLW1haW50Cis2ODc2MCBhNjYxMTYxNWM3NmJhZmY1YzkxMGFiYjBlYmM3YWQzNjE5ZDU4MjJiIGxlZ2FjeS10cnVuaworNjg3NjEgNjExNDYxYThjNzg1MWJkMDU1MGIyODhjZTlhYjA4MzVmNzQ4Mzk1ZCBweTNrCis2ODc2MiAxYzE3ZDVjYjE1ZGQ1OThhYzZjYTQ5YTljNGQzZmNhYWYzMWUwMWFhIHB5M2sKKzY4NzYzIDM5MTg3YjNlMTJlMDUxMjliMzc4ZjUxMmI0MjI0MGU4NTQ0MmI0MWQgbGVnYWN5LXRydW5rCis2ODc2NCAwNjFjNTEyOTVkMzI2ZGRhNDVlZDkwN2IyNGNhZGUwNmNlNWNiMDQzIGxlZ2FjeS10cnVuaworNjg3NjUgMTg0NDFiOGY3MDAwYzA1MWQ5M2MwMzlmMjRjNzVkYTcyMTEwNzE3MSByZWxlYXNlMjYtbWFpbnQKKzY4NzY2IGU3YzEwMGFmODFlYzI4YmVmYTUzMjQ0NzgwYmFjZGRiNzdlNzYxNzUgbGVnYWN5LXRydW5rCis2ODc2NyAzNTJmMjlkYjVlYmY2MGI4NzgwNjhkNmQ4OTFiZmNjMjNiOGIxYWQ2IHB5M2sKKzY4NzY4IDk1ZThkODU1OTRiYzkyZDBmNDg2Y2FkNjAyZDA0MTJjN2IxNDU0N2UgbGVnYWN5LXRydW5rCis2ODc2OSBmYWU5NmJjOTE5Njg0Nzk1ZTlhMTBjMWVjYjA1YTc5NTNkODcxMTIwIHB5M2sKKzY4NzcwIGJhMzRkZWE1ZDE4YzNmM2EwY2U2MjljN2ZkYmJkZWQxZDViNTg4ZDAgcHkzaworNjg3NzEgNDg4ZThlNmYxY2RjNjMzZDIxMWJhZjBjYmIzOTFmNjcwNzA4NTU2NSByZWxlYXNlMzAtbWFpbnQKKzY4NzcyIDZlZGQyOWEzNDM1NDhmMjJkMTZmOTI4YmQ3ZDA2OTVhMjMzOGRhZmQgbGVnYWN5LXRydW5rCis2ODc3MyA3Y2ZiNTllMzk3ODI2MDkwNDJhNTI4NTc3NDdiN2M2ODkxMGUwNDJjIGxlZ2FjeS10cnVuaworNjg3NzQgYWViMmJkZTIwM2FhY2Q5ZjAzOWVjYjczZjMzODRhZmEyZjFmNzYzNyByZWxlYXNlMjYtbWFpbnQKKzY4Nzc2IGFhZjk2ZWZjNjFlNTQyZGIzMjZhMmY2NmJkNmJkYzgyMGZjZGI5YmQgbGVnYWN5LXRydW5rCis2ODc3NyAwMTVlYTdiMjE5NTBhMzgzYzlhMzYwN2ExOGUxNTEzNDcxNTA2ZmRjIGxlZ2FjeS10cnVuaworNjg3NzggYTJmNTgyMDRlNjgwYjg3YWUzNGY5MjhiMWE0MGUzMDMwMjA0OWE1YyBweTNrCis2ODc3OSBmYTEyYzhlNWFlOGFjYmE4NjZlZTc2NThkMTJiZjdlNjVmMDk0OGY0IGxlZ2FjeS10cnVuaworNjg3ODAgNzViY2VjMDExZWVmNmQyZGE1YTY2YjY5NTQyNGJiM2IyN2M0MTljMiBweTNrCis2ODc4MSA2MTFkOTU3MGI0Y2FiMjRmNmUxZDk5NWIyZTYwMDUzMjJjYjBhM2IyIHJlbGVhc2UzMC1tYWludAorNjg3ODIgMTlmYTZmOWFiNWI1MDA3M2FiMzJkZjZmMzUyYjZhZDYxMmFhNmQxNSBweTNrCis2ODc4MyBjYWE3OWQyMzg5MTcyYWVhZjQ4OTAzNGJmMDc2NDgxMmEwZDQwYzE1IHJlbGVhc2UyNi1tYWludAorNjg3ODQgYWYzNmJhMTIzYzFkMmFjZmEyNDc0OGI1MTk5NDY3YmJjMDZlNGQ4YSByZWxlYXNlMzAtbWFpbnQKKzY4Nzg1IGMzYTBlZTUxZDg2NzgxMzBjNTA5MDY0Y2RmZWU3YzMwMTBjODNmMTAgbGVnYWN5LXRydW5rCis2ODc4NiAyZjU0ZWVmZDAwNzNhMTdhMzZkOWM0NzgxNzEzMzQwZjU4ZGQ3OTQxIHB5M2sKKzY4Nzg3IDYwNjdhMWU2Mjg5YTEzNTdjN2Y5OTEzYmRlYmNhMWUzZjhlZGNmZGUgbGVnYWN5LXRydW5rCis2ODc4OCA1MzdlOGQ3Mjg0MjQ2OTQ5YzU5ZDhhMDE3NDhlNzY1NTkwODBmYzAzIHB5M2sKKzY4Nzg5IDE5MWI3YjNkZGY0ZmE0Y2RiYTVhMzMxYjdjZDNhNTFhNjAwOGRjYzAgbGVnYWN5LXRydW5rCis2ODc5MCAzODAyMWI4ZTE0YWFiMTI3NmYwNzJjMTBlZDljMjI3MDdhYzkxYjg5IHB5M2sKKzY4NzkxIGE2M2Y3Y2YzNzkzYWJmZTBhYzY3YTMzMGI3NWY2MGIzODk3MDdjZDcgcHkzaworNjg3OTIgMzkwNjY4ZTIwNjI4ZTQwYzgzMmQ0YzI1ZmFmYjM2MDZhNDU5MmFhNiBsZWdhY3ktdHJ1bmsKKzY4NzkzIDhkNjZiODJhMTBhMzA4OGM2MGFkZjg0NjQwOWZhN2FmNjM1NjVlZWUgbGVnYWN5LXRydW5rCis2ODc5NCA2YTZiNTkwOTEyZmU2ZjMyMjc2NzM5YTE1ODI0YzE3MGNiMjA1YmM2IHB5M2sKKzY4Nzk1IDVkZDg3OTg2N2NkZTIwMjYwZjM5MGJiZTk4MzJlMzFkYzYyMzhiZmYgcHkzaworNjg3OTYgNWMzYmYzMWQwNGZkNmE4ZDcxOTY5M2YxZjgyZmY3NWIyNjViYTZiYyByZWxlYXNlMzAtbWFpbnQKKzY4Nzk3IGZlMjg3MWFhYjlkOTg4NDhkM2UyMDY5OTk0ZDMxYWIwYTgyMWQyYTYgbGVnYWN5LXRydW5rCis2ODc5OCAyMzQ0Y2VmN2ZmNDQ0NzQ1NGQ5NjFhODU0OGJjMTdiNjg1ZGNhZTAyIHB5M2sKKzY4Nzk5IDVhMDQxZDlhNTFjZDY2ZmJlYzUyMzQ1MzViYzk0NTFkZDFhYWQ4MjggcHkzaworNjg4MDAgY2M5ZGUxOTdkZjdlMTE5MWQxNmY2MWQzOWE5ODgwOTE2NjRjNWIyMiByZWxlYXNlMzAtbWFpbnQKKzY4ODAxIGNjMDc4YTU3NWVlZDMwN2NkODkwMzNjNzMxMTliNmQ3MzJiYzFkM2MgbGVnYWN5LXRydW5rCis2ODgwMiAxYTY0ZDJmNTZiNzk4ZmY2MDM5NmE2MTIzZGFhMjgwMjg1MjI5MzUwIHB5M2sKKzY4ODAzIGE4MzI2N2FkMmZkMjcyMDU0YzFhZmQ0ZjlmMGMyY2ZkYmNlMTBhYzMgbGVnYWN5LXRydW5rCis2ODgwNCBmYjcxYzE1NjIwZWU2Zjk5OWQ5NWIzMmMwOGQ2ODM0OTg2NTY4MDkzIHB5M2sKKzY4ODA1IGRiYzE0YWNkZGUzN2YxODg5N2FiMTMyYjg3MWM5YzY0ZTg0YzBlNGYgbGVnYWN5LXRydW5rCis2ODgwNiAxZjE0ODQyNDg4ZjA4ZmFiOGZjYjg0NWEyNGRkN2ExZjE2NzdjNDlkIHB5M2sKKzY4ODA3IDYxZjFjYjE2ZTdiNDJlNzk2ZWZhMzBjYzMwOTY2N2MyNGJjNTZjZDggbGVnYWN5LXRydW5rCis2ODgwOCAzNmUyNjZiMmU0NjA5OGViYzMxZDBjODQ5MjhiNjA2MTFkNjBmZmQ4IHB5M2sKKzY4ODA5IGM3YmIzMzIwNzQ5NWE4Y2IxYzcyYmZjN2JiYWIxMDA0MDVhM2NjZDYgcHkzaworNjg4MTAgZGQ1NjI0NDM5YmU1MDhmZDQ0MmVhNDQ1NjRlNzZlOGMwYzE0Y2Y2ZSBweTNrCis2ODgxMSA3MzMzODhhY2YwYjY1Y2I3OWJmY2E2NDJjOTNhYzI2YjcyZGM3Y2IyIGxlZ2FjeS10cnVuaworNjg4MTIgZjEzNTI3NDg0YmEzYWI0NGY2YTFjMzQ1MjBlMjZmMWRjMWUzODNjMyBpby1jCis2ODgxMyA0MjRhNTA5YmViZmVhMjAzMGY4ZTU2YjBjMzkyZDYwODkyYTM1ZDEyIGxlZ2FjeS10cnVuaworNjg4MTQgZDFkZTA3NzQ0N2FhNGYzNGEzMWNkY2YwMDE5MzQxNzY5MjkzYmEyZiBweTNrCis2ODgxNSAzMmEyMmZhMTNiOTljNzk2MDMwZTU4MjEwZWZhMTQzZDQ0MzA2OWVkIHB5M2sKKzY4ODE2IGIyMGUyMThkNmYwMGY3ODhiY2E0ZDVhODU0YjZmNDM5ZGY2NTA2MDIgaW8tYworNjg4MTcgNWE4ODBiZGE2YTZiNzg1ZjQ1NTI0ZGE3YjA2N2YzNDFhNWY4MmQxYyBpby1jCis2ODgxOCBhNTdkMTBkNmJjODkzMWYwMDAyMDYxNzZkNTA1YWEwZjJjYTE5ZWE1IHJlbGVhc2UzMC1tYWludAorNjg4MTkgYWIwYjM4NWFlZmMzZTliNjA0MTIyYzNjNWQ5ODE4NjgzYzFiYmYwNSBweTNrCis2ODgyMCA5ZjI5NGViMzgxOTBlNjQzNGQ1NTM1NTEyOTQ0ZWM0YWQyZDY1MDM2IGlvLWMKKzY4ODIxIGM3NzUyMDdjZWRhZDc5NDA1NjA5NTY0OWE2ZjBiNzIwMDRjMWM0ZTYgaW8tYworNjg4MjIgNTM5MDFlNjY5MWMzODI0OGYxMWQ0Y2I1Y2U5OTJhNWRkNGUzMmVhZCBpby1jCis2ODgyMyAwZTc5ZDVhMzcyMzM4MjAzNjNmNmFiOTMzZjc3NDFjN2U4YzRlMTUzIGlvLWMKKzY4ODI0IGM5NGY5OGM1NzUzZjk3MGI1ZjExMjZlODYzYzg4YjI0MDM2NGUxY2MgaW8tYworNjg4MjUgN2VkOWJlZWQ4NzE1NTMzMTkyNWNhMDlhZjc2ZjMzNWFjMDkyZWMzNyBpby1jCis2ODgyNiA3NjZkZTQ5NmE0MmQ3ZjBkMWE3NDJhOGI4ODQ2MDlmN2U0YTE0ZDRkIGxlZ2FjeS10cnVuaworNjg4MjcgN2MzMGFiMDEzNGExZmU2MzQ2ZmFiZmExYzcwZjdjZDM3ODNmMWJhZCByZWxlYXNlMjYtbWFpbnQKKzY4ODI4IDJiM2VjZGUxNzZmZTUwMTc5M2M1NTA1MDI4MDVhZDc0MzY5NThlZWEgaW8tYworNjg4MjkgMjUyZjgyNGJiODBiM2FjMjE3MDlmYzlkNzVlOTU5ZmRiMGNkNjUxMSBsZWdhY3ktdHJ1bmsKKzY4ODMwIGNjNWI0NjBmZjFhYjEyNGYyMmMzZTJkOGFlNjhiMzE1MTQyZTQ5ZjIgcmVsZWFzZTI2LW1haW50Cis2ODgzMSAxMmU5YzVmNzI2NTkwNDllYmYwMzI2MDJlMzA0OGM5OWEyMmIxZDE1IGxlZ2FjeS10cnVuaworNjg4MzIgMzVmYjRhMjYwYTI1M2Q4Zjc1MDhmYTYwNmIzMzgyYjdkMzkzYjUyNSBweTNrCis2ODgzMyA2NjkyOGRhZDgxY2ExNDliNTEwZjEzZjRjY2M1ODYwYjJmMDFkNWVmIHB5M2sKKzY4ODM0IDcxMDZmZjU2ZTlkOGJkZjY5NmQ2YTE4ZGQ4ODhjZjgxNzM4YzEzNmQgcmVsZWFzZTMwLW1haW50Cis2ODgzNSBiODhjYzdlMmJmYjRjMzEzZDUwYmJhYmUyOTQwYTA4Yjc0ZTYwODdkIGxlZ2FjeS10cnVuaworNjg4MzYgMGFkOGM1NmE3YTcwZDBjYjA5MTQwNWZiZDJmMzU4NmFhNGE3YWIyNCBweTNrCis2ODgzNyA3NjJmOWYxODllMmU4NjI3ODg0NWI1MTJmMmEzZWEyZDRjMTgyMDVjIHJlbGVhc2UyNi1tYWludAorNjg4MzggZjBjOTU1Mzc4Y2EzYzUxZWZmY2FhZTUzMTA3NzU1Mjk4M2QzNzIyMyByZWxlYXNlMzAtbWFpbnQKKzY4ODM5IGQyNzQwNjI4MTZmZjY1OGM4ZDJhMzQ3NjMwZGYyYzRlNzNlZjRmMTggbGVnYWN5LXRydW5rCis2ODg0MCAwZWMzNTQ3MDNkMDFjYWE0YmZkODEyZmNmNDQ4MzE0NDRhZjFkYWM3IGxlZ2FjeS10cnVuaworNjg4NDEgYTk5ZGVjZWRmNzJkMjIwYTU2MGYyZDgyNzQxYmUwNTVjYWFhZTQ3YSBweTNrCis2ODg0MiA4NzYzY2YyZjdlMGM1NWZmZDgwMTUzMjJmOGMyMjIxNTMyNjU0NmMwIGxlZ2FjeS10cnVuaworNjg4NDMgOGJmMjA0YWY5NjkxMGU2NGI4N2U5ZTE4Y2ZlNjU2YmQ4MTExZmU5ZCBsZWdhY3ktdHJ1bmsKKzY4ODQ0IDczMDBkNmZiZDkxNGRiZDc0ZGFkZDU4MGU2NmYzMDE2NDE3M2RjNDMgcHkzaworNjg4NDUgY2JlNTQ2NTFlM2I5ODUzNzg0ZTllYTM0ZjRjZDQ2NDAyZmUwZTU4ZSBsZWdhY3ktdHJ1bmsKKzY4ODQ2IDNmNjFmODBlOTEzMGQxNzUzOGE2ZjJhN2NhMjMwYjY2OGFjYzQ4MWQgcHkzaworNjg4NDcgNDA5MmE0MDJlZDNlNzU1YTIwNDk5NzJjYjQ3MmU0Zjg5OGM2YzE4ZSBweTNrCis2ODg0OCBlYzcwYjM5M2UxNzNmODRkZDBlOWUxNDg2N2JlYjdkNzliNjMyM2U0IHB5M2sKKzY4ODUwIDNjNWE4YTM0Nzk5MDdmMGQzODMwMDQ3YThmZmZlMjNhMDU5OGVhMWYgbGVnYWN5LXRydW5rCis2ODg1MSAwNTNmM2U4MjY2MDE2ZWM5YTBmNDJmNzMyZWEyZDJiYjk5Njc1Yzc3IHB5M2sKKzY4ODUzIDNmMTNjNjVhZWMwNTZiM2ZlNTQ2NjEwNDBkNDQzNjQxMzUwZGVjN2IgbGVnYWN5LXRydW5rCis2ODg1NCBmNWQ3ZDA2MDkxMWFlMTkzODMzNDJjNjU4YmU3NTA0OTUyZDdlMjhlIHB5M2sKKzY4ODU1IGI0MGU0YjUyOWY2OWJhZDg5OWRmYmY0OTAxMGE3YmI1OTUyODIyOWUgcHkzaworNjg4NTYgZWM2ZjI5NjA4YmYwOWZkNDQ5ZGU2ZWJlMTQ0NzMzOGIxZDAxYTg1ZiByZWxlYXNlMzAtbWFpbnQKKzY4ODU3IDhhZWQ3ODhiZmNjODNjNzUxZGJhZmNkNjQyNzEwZThhYjM2ZjNiYWMgcHkzaworNjg4NTggMWYwYTNhYzhiZjg1ZGU0NDA0ZmY0ZGJiODA3ODIxODA4Y2M2M2Y3MSByZWxlYXNlMzAtbWFpbnQKKzY4ODU5IGRlMmRjMDllMWY3ZTY2MTFkZjQyYTg2M2ZlNTg0OWMzNDJhZGNhNmMgbGVnYWN5LXRydW5rCis2ODg2MCAyNzM1ZmFjNmIwZDRkM2ZmMmUwMGYyZTJmY2UyMTdhMmYxOWFmZGJkIHB5M2sKKzY4ODYxIGU0Yzg2ZGMxODFlOWEyMDQ0ZTA0NTBmNjI0MDczZTgzNjkzOGU5NDMgcHkzaworNjg4NjIgYjBiNjIxZjJhZjVkZGZjNTJmYWQzOWViMDBiOGI0MjA5N2NlYTdiOSBsZWdhY3ktdHJ1bmsKKzY4ODYzIDcyYmNmMGEwY2IzMWQ0MWEzN2IzYTk3NGU0MGVlM2Y4ZDUwNGRkODkgcHkzaworNjg4NjQgMDk0MGE0ZjI1MDZlNzc4MjQ2MDYwY2I4M2RmYmM5NDA0N2FkNDlmOSBweTNrCis2ODg2NSBkZDYzOGI3ZTc0N2UzZmE1NWU2YTVhNmJlYTVhN2FlODhlNGFlNzE2IHB5M2sKKzY4ODY2IDA5YzE3MTI3YTRjOTkyMDFmYzU3YmJmZGVjZmJhNDgzNmM3OGYxNTkgcHkzaworNjg4NjcgYzk1NDQ1MGY3YWJmY2MyNTFjZDkwMmIyYTRmNDQ0M2MyMzlhZjhjMCBweTNrCis2ODg2OCAwNGM5NWZjMzc2NWZlZDdjNThhOGY0MzI5NzU1NTk2NzNjY2IxN2M2IHB5M2sKKzY4ODY5IGFjZTc1YjA2YTZmNzRkYzU5NmNhOGY0YWU0NjNhMmRlOTM5ZmMwZmMgcHkzaworNjg4NzAgYWVhYTIzN2ViYWQ3Zjc5NWI3MmNiMGM4ODlmZjlmN2U5MmZhNTBhOSBweTNrCis2ODg3MiAzYmY3N2VhMWRiM2UyM2RlYjk0MzAzMDcxNGM2OTRlYzU5MWY1NmRjIHB5M2sKKzY4ODczIGE4MjNjOWYzYTQ1MmJjMjE5MTg0ZmQ2YjliNTBhYjNmNGU1MmJmOGQgcHkzaworNjg4NzQgYjBkNTkzZDQxMjEyMGM3YWYxNTg5NTViZmUyMGRiYjcyZjAwZTZjNSBsZWdhY3ktdHJ1bmsKKzY4ODc1IDg1N2Q2NjM0MWZmOTQwODI5MzhmMWQ5OGJmMmQ4M2ZkMzJjMWYzMDcgcHkzaworNjg4NzYgMDhlOWJlZDZhMWY4NWY5ZTU2NDY1ZGQ4NjZhM2IxNjJmMjM3MDk2YiBpby1jCis2ODg3NyAxYWY0ZmExOGJjYzIwNjVhZTQxYzhmM2Q3MDVjNzIxNTg2ZGM3MWNhIGlvLWMKKzY4ODc4IDUyZmYwNTc5YTQxZjE5YWY0OGFhNDQyYjM3ZmY0MGI5N2ZmNjYzYWYgcHkzaworNjg4ODEgYTRmMjVjMzgwZjk2YjdmM2ZmMjA2OTUyOGRkOGU4NGZlMmNjMThkNiBsZWdhY3ktdHJ1bmsKKzY4ODgyIDVjNzMxMmNlNWRiZDA2MmU4ODIwNjI1MjUxMjRhYTAzOTgyNzIxNDQgcHkzaworNjg4ODMgMDQ4ZWI1YTgzNDNiZTA5Y2E3NDNhYmZjNGZjMjU3YmM5N2Q1NDkyZiBweTNrCis2ODg4NCBiZDc0ZTg2NmY5Y2FmODE3YzdlZGEwOTk5YWE2YzQxMTRjMjBjM2M4IGxlZ2FjeS10cnVuaworNjg4ODUgZmMzOGYyZWNkMmFjMjc3M2RmOGY2NmVhMDczMDM0MzFmNDc4NTdhNyBsZWdhY3ktdHJ1bmsKKzY4ODg2IDZmNzYxZTU3MTRlMDkxOWQ0YTI3NjdhZDkwNmM1OTE0MmI0MTZlYTYgcmVsZWFzZTI2LW1haW50Cis2ODg4NyBjZWYwZmNjOTE1NTllYmI1ZDE2MGVjOTE5MWRjYjllOTAyNmMxYjVkIHB5M2sKKzY4ODg4IGM5YjlhNTA0MWVmNTIxZjU2YjFkZDRkN2MzODk3M2E0NmZlNjRlMWIgcmVsZWFzZTMwLW1haW50Cis2ODg4OSA1NDA2MTFhZTYxYjg2ZmFkYWEzMzk0NGJmYTgyZDc3MTMzMGM4ZmViIHB5M2sKKzY4ODkwIDRlYWM5OTQxNTM4YzViZGVjOGQyOTg4NTY4MjBkZjE0YmUyM2ZjMmEgbGVnYWN5LXRydW5rCis2ODg5MSBkYjBmZmVlZTZlNTA3MDM2OTg1YzYyYmZkMDg5MjNmMjhjYTkyNDlkIHJlbGVhc2UyNi1tYWludAorNjg4OTIgMjUwMzRjODMyOGM3Y2Y3YWQ1MWE0ZTgxMjUxMTYyMGFjYmE0MTdlZiBsZWdhY3ktdHJ1bmsKKzY4ODkzIGYxYWY0MDgwNGFkZTkzYjliM2I1YTJkMTVjMDBiMzcxMGQwMjg4M2YgbGVnYWN5LXRydW5rCis2ODg5NCA1MTMyYTEzZjE2OWEzNDE0YmVmNzVjZjQ1MGFlYTMzYjI5MjcyYjI0IHJlbGVhc2UyNi1tYWludAorNjg4OTUgMjdkMmZhMTkwODRhNTgyZTQ2ODYzZTY3ZjBlMjcxZGNhMmMzZTUyYSBweTNrCis2ODg5NiA3ZWU2ZmEwNjAyYmU5MjcxMmIwNGRlMmRmM2YyYWMzMmRkYzNlZDdkIHJlbGVhc2UzMC1tYWludAorNjg4OTcgYTFhNTI4NzNmOWZjZjA2NWNiODM4YjRlYzE4ZjIyZDU2ZjkxNWNkMyBsZWdhY3ktdHJ1bmsKKzY4ODk4IGZlYjRhMDkyYjg3MWM2N2VjZGY0YzNmZDA2ODgyMGQ1OTlmMWM2YTMgcHkzaworNjg4OTkgYTZhNjM2OWNmYmNjZGFkZjhhNmU1OTRmNWUzZDVhYTg3NGZmZDc2ZCByZWxlYXNlMjYtbWFpbnQKKzY4OTAwIDk5ZjBiMDI2NTUxNmIyNDM5NmQzMzY0NmZkOTVhMjExYjNmNDAzNmQgcHkzaworNjg5MDEgNTlkNWU3MGYzNDk0MjMwZGJkMDE3MWM3NWEzNjA4MzllNjk3Nzk1MyByZWxlYXNlMzAtbWFpbnQKKzY4OTAyIDU3OGRkNzhmYjU1NzM1MmRhODk4NDI4MjRjZjlhYTE2ZjMyNDVhYTQgcmVsZWFzZTMwLW1haW50Cis2ODkwMyA2ZDU1MTc5NzVmZDI0NTczNGFlNWYyZmY5OTVlMzk3MzllYTM5OThhIGxlZ2FjeS10cnVuaworNjg5MDQgODQzYzE3ODY4YjUyYjRmNDhlYWZlNDg1NmI4YTNhN2UwNDI1ZmFlNyByZWxlYXNlMzAtbWFpbnQKKzY4OTA2IDg2M2NlNmMwMzYxNzlmNGM3NGZhOWY3MGJjYjhlNzE4NTY1YjkwYTIgbGVnYWN5LXRydW5rCis2ODkwNyAwMTM5NjQ4NTI2ZDlhOGZjZjdjMTM4MzA4YzdiMGUyNDMwMGJlZjQ1IHJlbGVhc2UyNi1tYWludAorNjg5MDggOWE0NWUyY2FkNmExZjNmMWI0ZmUzMjBiZDU4OWRiYjNhOGYyZTM3NyBweTNrCis2ODkwOSBmN2YzZDg0MWRhMmM2YzFmYTZlMDAxN2Q1OTI1NzIwNmNiZjUwOTY0IHJlbGVhc2UzMC1tYWludAorNjg5MTUgZjViZTZjYWVhZDAzZDg5MGNiNTFiZGRmOWQyMmFhYzI0M2U2ZGUwZCBsZWdhY3ktdHJ1bmsKKzY4OTE2IDRlOGYyOGIzZWEwYThlZmEwMzU3MzA3M2UwNzRkYzU4NWE1MzgxMDYgcHkzaworNjg5MTggZWE1NzY3ZWJkOTAzMmFkOGE4YmI0OGFlOTE1OGQ5ODAwNTdlZWIwNiBweTNrCis2ODkxOSBjMjZmMWFmMjZiZmMyMmFmOWEwOTUzM2I5ZTkxY2I5MzNlZmRmNzFmIHB5M2sKKzY4OTIwIGM0YzRlNGIxZGMxYWU2MzFlZjk4NTkxYThmMjE1MmMwNTUwYjVjZjAgbGVnYWN5LXRydW5rCis2ODkyMSA5OWMxMGQ2NDdmMzI2ZjYzNjE4YjJkOGM5MWUxOWNmYmE3YzkxMTYwIHJlbGVhc2UyNi1tYWludAorNjg5MjIgZmQ4YWY0NmQzNjE1NDNjNzRmNTY3NThlZjZkMDEyZGVhMzJjNjQ1MyBweTNrCis2ODkyMyAyYzdkMzU2OTg4MmRlMzVjZWVhMzVkYWE5NmViMDg0YTlhMzI1YTEyIHJlbGVhc2UzMC1tYWludAorNjg5MjQgZDg2ZTIzMzE4YjQxNWRmYWRkM2IyMTNjYzg5Njk1Mjg3Nzg5YWVlOCBweTNrCis2ODkyNSA1NTEyNTdjODA1OGFmMDNhNzQ2YjBjMDUxZjc0OWIzMTgzNTUzNmIzIGxlZ2FjeS10cnVuaworNjg5MjYgZTNjZWViN2ViOTAxMGVlN2ZkZGU0YTEzNTk0YWJlOWQyZWU4OTAwMSBweTNrCis2ODkyNyAyMWNmOTZjYzIyMTYzYTk1NjkzOGM2MTA2Y2I4NWViYmQ0MzYzYTYzIGxlZ2FjeS10cnVuaworNjg5MjggMjgxOWE0NzA2YzgxMTJmNGJhNmM2MmE3ZTM3MzEzMWZhOTJkYWE4YiBweTNrCis2ODkyOSA3ZDVmYTUyMzQxZTIzMjMwMGNiN2I5MzA4NTdiMDk5NzJlMjVmOTBhIGxlZ2FjeS10cnVuaworNjg5MzAgNzVkMGY2MThlMWRlYzVhZjhkZDg4MmQ5N2ZhYjc3OTNhMmFhODQ4YyByZWxlYXNlMjYtbWFpbnQKKzY4OTMxIDUwZjQwZjJjMzdkZGE1N2Y0YzM4NGExYjhiZGUwOTZhOWFiZTA4ZDUgcHkzaworNjg5MzIgY2M4MTMwYWZiMDM5MTIyYjk0MTM1MTEzNGQ0NGM4N2Q2MWEzMjVmMyByZWxlYXNlMzAtbWFpbnQKKzY4OTMzIDdhNTc1OWU4NTYzOTRmZDQ3M2JkZjljNWE4NDBmNWM3MzE4MjI4MzggbGVnYWN5LXRydW5rCis2ODkzNCA0NzFiZTJjNjQ1N2VlYTM1MjUyODA4YjkxMjg1NjFhMWQyZGM0NjE5IHJlbGVhc2UyNi1tYWludAorNjg5MzUgMDExMzIxOTVmNTYyNTE1OGU3OGYyNmExYzc3YWZiOTFkYjFiMzhiZiBweTNrCis2ODkzNiAzMzY5YTVhY2FmNzk4MzY1YWY0Yzc4MTE4NTc2MWE0NTUxOTVlZmEyIHJlbGVhc2UzMC1tYWludAorNjg5MzcgYzlmZWEzNWI4NzNlYTFhNzgzNjIzYzFlYzYzOWNhOGExZGI2MDMwZSBweTNrCis2ODkzOCAxMGY0YTE2MDQzODg5MWNmZDBlNTNmZDVjYWUzNjU5Nzc3MTgyOWNlIHB5M2staXNzdWUxNzE3Cis2ODk0MCBlMGQ5YzY1OWY3YTZjMGUyNzg5MTM2NGI5ZDBmMzcxNGU5M2QyYjU1IHB5M2staXNzdWUxNzE3Cis2ODk0MSAxNGFjZTIwNTQ0N2JiZTIzOGVhZDY0NThhMzMwMThhZmVmODRlY2IyIGxlZ2FjeS10cnVuaworNjg5NDIgZTQ3MDVmZjYyNmYwOGI0OTRkZDgyYzBmNzE0ZWY4ODU4YjVjYTgwNCBsZWdhY3ktdHJ1bmsKKzY4OTQzIGE1MjI5MjM3ZWI1MGNiZjM2OGY5MDA2MmY5MDdmNjdlNThlY2ZmNGQgbGVnYWN5LXRydW5rCis2ODk0NSA0ZTgyZmIxYWViMDIyMmEwZjhjNDgwYzUyZjg4ODk4NzkyMjc0ODEzIGxlZ2FjeS10cnVuaworNjg5NDYgNmE5MWIzYWRjYWQ2ZTYwNzJhNDE3YWEwMGU3MmM5NDc3ODQ2MDdiMiByZWxlYXNlMjYtbWFpbnQKKzY4OTQ3IGM4NTFlZDBjZjY1ZmJjNmViMzhlZGEyMDk1ZGM4Y2Y4NzM5YzA0MWUgbGVnYWN5LXRydW5rCis2ODk0OCAwOTZiNDg4NDM4ZTkyNGVjODllN2MyODQ3NWM0NWUzMDIwMmZmZTVkIHJlbGVhc2UyNi1tYWludAorNjg5NDkgYzE1NWNiMzhmNzZkMGU2ODA1NThmOGNkMDEwOGNmN2Y1ODhkNjViYiBweTNrCis2ODk1MCA0NWE1Mjc2ZTVkY2M2NWViZTJkN2Q2ZDM0OGNjMmVmODk5ZWY0NTYwIHJlbGVhc2UzMC1tYWludAorNjg5NTEgMjFmYjEwMTQyOTRjYzY3ZTI2NzNjYWRhZGM2YjZjYmY2YjA5MjM4NSBsZWdhY3ktdHJ1bmsKKzY4OTUzIGI0YWNlMmI2YzI4ZjBmNDIxNTEyOGM3NmY1YWI5NzE0NWNhMTBkM2IgbGVnYWN5LXRydW5rCis2ODk1NCBmYjlkMmQyYTQzNTk1NjcyMGI2NzgwZGQ0YTlkZTI3MzFjMzdjYTkyIHB5M2sKKzY4OTU1IGRmYWNlYzhiYTZkYjRlOTYxMjI0OGVkOGVmZWY3ODc2OTVkY2FlNjUgcmVsZWFzZTI2LW1haW50Cis2ODk1NiBiOTRlOWVkMzU1OWMyNzM0MTMzZGQ4YzBmMTQ4ZDIzNWFiYzE2YWMyIHB5M2sKKzY4OTU3IGM0ZDMxZjk3OTkwZTk1YzI5MDA4ZDU1OGI2NWIwZTU0NjA0NzljMDkgcHkzaworNjg5NTggMDRhMzNjNDdhYmI1ZjExNzczYjBiOTBlOTM4MjJlYjE1ZTc2OTIyZiByZWxlYXNlMjYtbWFpbnQKKzY4OTU5IDUyMDM3OTRjN2VhMjE0NzJkZjZjZGYxMTZkOTExOGQ1NWI1ODA0YWUgcmVsZWFzZTMwLW1haW50Cis2ODk2MCAzNWM2OTM3YzAxMjc1YzFlMDIyNmFmNmY4YWM2Y2VmZjBiN2M0MWZhIHB5M2sKKzY4OTYxIGFkMWRiMGFlOThjNmE4NzlhOWViOGFhM2FlYjUwNjgzNzEzMWExN2EgcHkzaworNjg5NjIgMWM1MGExN2MwZjIxYzk2Mjc5MTViMTY1OTNkMjI0NzJhOTlkYjFhNiByZWxlYXNlMzAtbWFpbnQKKzY4OTYzIDY5NjA1MjNmYWRjMWU0YmZiNDRhNjY3N2FkM2QwZWJhYTFhOGYxM2UgcHkzaworNjg5NjQgZDUxMzAyNGY1MTc3NWJhYTVlODAyODc4YTkzYzAzNjUwODhmMjg3ZCBsZWdhY3ktdHJ1bmsKKzY4OTY1IGI4ODUwNjA2ZDkyMWEwYWU4Mzg5ZGQ3NjFhMGFlZjYzMzgwMzA3MjEgcHkzaworNjg5NjYgMDJlMWM1Y2U2YTY5Zjk2ZWMxODEzZGYwMmNiMGNkNTEyYWRhNWNjYSByZWxlYXNlMzAtbWFpbnQKKzY4OTY3IDM2ZmJhZjc1MzhjZWMyNWJkYTgwYzM4ZTA3MTZhMzgyZjI2ZmEwMDIgcmVsZWFzZTI2LW1haW50Cis2ODk2OCBkNDIzNzRkMGFhNTg0YmE5ZmE5NDA2OGM1NGVmZDQyMjI3MzhjYjhlIHJlbGVhc2UyNi1tYWludAorNjg5NjkgZDM2MmRhOThkMGRlODU2YTY0YTA2YmZjYzFiZjcwYWY2YzE3MmFjMCBweTNrCis2ODk3MCBiMDQ4OTZjYWEyOWJlOWJiZWViODc0MDNhMjAwOTZjYzkxOTM1NGUxIHJlbGVhc2UzMC1tYWludAorNjg5NzMgYzk0YTIzN2JmNDk3MDAwYzc5ZjMxYzg5MDFhZjEzNDQ3OTAwMDk3ZCBsZWdhY3ktdHJ1bmsKKzY4OTc0IDIwMDgyOTI1NWE2YTdmYTdhYjUyZDAzN2UyNDcxOGI2ZGNkYzcxYWIgbGVnYWN5LXRydW5rCis2ODk3NSAyZWE3NWY2MGQ5ZTVkMWRhNGVhOTdjMDc1N2FkMjRlYmQxYzJjZDI2IGxlZ2FjeS10cnVuaworNjg5NzYgY2E4ZWE1MmI0NWMzMzhhZmU3ODlkZTA1MjI4OTE0MTFlODdiNDM2NCByZWxlYXNlMjYtbWFpbnQKKzY4OTc3IDk4ZjIyM2VjZThmMjcyOTcwZjU5OWFmNTU4YjE2MzY4YTllNWE1OWQgcHkzaworNjg5NzggMDY4N2Q0NDdkZTYxZmY4ZGFjOTZiOTY1ZjZiNGM2YzcxZmIzNDBmNCBsZWdhY3ktdHJ1bmsKKzY4OTc5IGUxOTg4MDdjNTU4NjdiMjc0NGRjYjZjZTMxYThmNjNmZDM0YThhMzEgcmVsZWFzZTI2LW1haW50Cis2ODk4MCA4NTdkZjZjMDllMTJmOWNjMTU1OGE4ZjM3YjNiY2Q2OTQyMGU2YTMwIHB5M2sKKzY4OTgxIDk0YzJkYzVmNDQ2ZDY3NmFjZWU1NGY5ZjMxOGVkN2JkZDZiZjVhOWMgcHkzaworNjg5ODIgMTRjM2FiOWJkNzA2MWY2MTBjMjBiYjhkNGRjMTI5MzA1N2ExZDE4MiByZWxlYXNlMzAtbWFpbnQKKzY4OTgzIGMyM2U0MGQxYWJiYzhkOTFlYzQ2YTFhNGI4ZjljNDdmMjk2OTgzNGYgcmVsZWFzZTMwLW1haW50Cis2ODk4NCA4MDI1MDY2NDU2NjY0ZGRjNDk5YzhkNjhkYmE5ZDJmNDMxMGVhYmM3IHJlbGVhc2UyNi1tYWludAorNjg5ODUgMmNiMGM1MmQ3NzlmYzIzYmUwZmMyYmFkZjQyOWM2N2ZkNTNjOWEwOSBsZWdhY3ktdHJ1bmsKKzY4OTg2IGY1NzI5MTcxODNmYTJlY2MyYWY0ZTc3N2EyNmU5MWNmZTU5NWZjMmEgcHkzaworNjg5ODcgZjEzOGZiZTI5NDVlNTU4OWIwYTJkNDJkZjgyNTA3NTE1ZmRlMjMyMSByZWxlYXNlMzAtbWFpbnQKKzY4OTkxIGYwODVhYWE0NmQ4NzQ4ZmQ1OGRlZWQwNzZjYmQ5MzA3MDVlMWUxNjMgcHkzaworNjg5OTIgZmZlNzMyZGFkYjBkOGQ5ODQxZDg5N2I5YzcyYTFlMDdhM2UyNTliYiBweTNrCis2ODk5MyAyNTlmYThmNjRhOTdlNjI0NDdkNmU4MTgzNGU5ZjUxY2FjMmIzMDllIHB5M2sKKzY4OTk1IDQ0NTEyMzExZjJiYzgyMDA3MGI4MDVkNjJkNDRiODA5ZTEyZDhhN2EgcHkzaworNjg5OTYgOTZkMjk2Yzc4ZmJhODY2YWE5ZjY4ZTc3N2VmNjhkMmQ3OGE2YjM3ZCBweTNrCis2ODk5NyA1Njc5YmI5YjUxOTBjOTFhYzFhYjEyODFkMWI1NDQwYzE5MTE2ZmU2IHB5M2sKKzY4OTk4IDZjMGJiNTQ4YTk0NmM3YjdlOTVlYmI3OGMxZDVhODI2Zjc1MGI0NDcgbGVnYWN5LXRydW5rCis2ODk5OSA3NzIwZTM2M2MxYzhjZWQ3NzhmMDNmNmQzNjIwZjczYzM2MWYwMzk0IHB5M2sKKzY5MDAwIDg0ZDY0OGNkZGMzMzQ2MGFkN2UyYjYyMjAzMjkxN2FjMGI0Y2QyMDEgcHkzaworNjkwMDEgYjdjZTY3NWZlYmI5MDNjYWFhMGEwNTc4ZDk5ZTI0MzE3ZDFjYWY0MyBsZWdhY3ktdHJ1bmsKKzY5MDAyIGYxMWE0MTA5NTcyNmY5OTM1YWRlNDc3OWM5YTk0MDdmZmU4ZTBiNmUgcHkzaworNjkwMDMgMzMyOTFlMWU4N2VjNzQzZjg1YmI3YTFmNTZhZTE0MjRmMThmMjY5ZCBsZWdhY3ktdHJ1bmsKKzY5MDA0IDQwMDUwMTFkM2EwOWVjYTk5ZTExMjg1MTkxMTIyZWNjNTVmMTI1YWIgcHkzaworNjkwMDUgN2U4MzNjZGViMjQxNzQ1ODZhNTFkMDlkMTczMDBkODY0OGEyNGE4MiBweTNrCis2OTAwNiA0Yjg3ZjMxOTc4YjdlMjE3NmM2OGRiNjhkOTVlYzA1Y2U0N2EwOTI5IHJlbGVhc2UzMC1tYWludAorNjkwMDcgNDhiNzAzN2ZmMjBlODViNjg4ZTBiYjc0NWE3ZTBiOTBkZGQ0ZTQyOSBweTNrCis2OTAwOCA3ZjBlNGU0MjdlYTNkNzBhZThkYWQ0Y2ZkNzg2NTVmN2NiNTIzNTEwIHJlbGVhc2UzMC1tYWludAorNjkwMDkgOThhODU1Yzk3ZmYyMTRmYWFiYTBjY2MzMDI4OTQ4NmEzODQyNzA3YiByZWxlYXNlMjYtbWFpbnQKKzY5MDEwIGQxNzBmZGY0YmRmYjQ1MjJhNjQ0MzNkMzhmOTllNDg0NjU0YjEyZTIgbGVnYWN5LXRydW5rCis2OTAxMSAxNDYzMWM2MjdlMDM3NDJkOGU5ZDgxZTYyMTc2MDhiZWYxNzgyMmM4IHB5M2sKKzY5MDEyIDNlNGM4NzJkMDI0NjdhNTcxNmE1ZmI0ZDJiZDliOTc2ZGJlOTAxMWUgbGVnYWN5LXRydW5rCis2OTAxMyAzNDAyN2U4ZDA0NGYwM2M4ODlhY2Q5OGQ5MzU5Yzg4ZjI0ZDMzYTc3IHB5M2sKKzY5MDE0IGEyODc2NWZkMzJmMDBhNTg3ZjgyYTZiYmM1ZGJhNTBhYjBhNzk3OTUgbGVnYWN5LXRydW5rCis2OTAxNSA3ZWQ5Y2NjMGI1MTk3ZTczMWI4OTgzMGQ1NGUyMDBhNzMyMmFkMTM1IHB5M2sKKzY5MDE2IDhjZDNjZWQxZWQyOTk5ZGU2MGM5Yzk2NzNhOGQxZDA5YzdjMjc3NTQgcmVsZWFzZTMwLW1haW50Cis2OTAxNyBlNzE4ZDI5ODc0ZDc1YzdmNjU3YTY4NmM5ZjdmOTJjOTM3OGJlYWJlIHJlbGVhc2UyNi1tYWludAorNjkwMTggMjI1NGNkMzIwMGYwNjAyZGExZjY3NmFhNDZkNDk4OWNiYzNjOWIzZSBsZWdhY3ktdHJ1bmsKKzY5MDE5IDUzMjQ0YzRlZWYyMjNlMWVlOTEyZDUwZmNiNmY0MzY5MTlkMzhjODEgcHkzaworNjkwMjAgNTQ3YjdhMTdjMzc5OWU3NzIwNWUxMTM5YzIwYzQwMmQwNjUyNzg3ZCBweTNrCis2OTAyMSBhNmIwMjUyM2I5MDM1ZjVjYzE0OTA2ZGNmNWQ0ZWQ0NGJhMTU5YTBjIHJlbGVhc2UzMC1tYWludAorNjkwMjIgMWIzMjBmZmMwZGI4Y2FlODMwODhiOTk1NGYzZjc2NDYyYjljNzg2NSBweTNrCis2OTAyMyA5YTRmZGJjZjJkOWYyYWM3NWJiYThkNGQ5OTMwN2QzZDNmMzg4NjlkIGxlZ2FjeS10cnVuaworNjkwMjQgZmM1MTAyNmFiZGU2YzZkNjVhZWMwNWE3ZjhkYThlNzllMDc2Y2QzNSBweTNrCis2OTAyNSA3NGFhNDNkZDg3NWRkOWU1ZDc5OGM0NjBkNGI0YTQ4YzBmNTUxMTk1IHB5M2sKKzY5MDI2IGFkYmQ3N2E5MGJkZWI1YWMxZGNhM2QwMDdjOGRmZDU0ODZlOTc2OTcgcmVsZWFzZTMwLW1haW50Cis2OTAzMSBjNWE1MmFlYzJkZGY5MWUxM2UwZTdmMzA5MTAyZjI5ZTFkMGIzMGY1IHB5M2staXNzdWUxNzE3Cis2OTAzMiBiNmRlNjkxMmZlMTQ2YmE2YmVkMjA1OGRmNTZlYzU1OGY5MGVhYzZhIHB5M2sKKzY5MDMzIGQyYzA2N2Y5Zjk4Yjk1ZDIxOWNmNDQ4MGZjZTUzM2E3MDVjYzUwYWQgcmVsZWFzZTMwLW1haW50Cis2OTAzNCA1ZmViOTc2YjE4YWFjOGNlOTFmNmViYWE5MDE0Mzk2NGY5NDAxOTBjIHB5M2staXNzdWUxNzE3Cis2OTAzNSBiZWE2YjdhMGI5YTIyZjg5NTE5NGQyNjM4NGE0Njc2Y2QyOWY5NDg5IHB5M2sKKzY5MDM2IDJhNmUwYmM0YmMwMzE5YWZhNGU2ODcxYTUxOTRiZGNiZTUzZGYzN2YgaW8tYworNjkwMzcgMjMxYzRlNDkwYjFmNTlmNzRkYTVlOTM4NGE4YzBhZjRlMWU0YjI2YiBpby1jCis2OTAzOCA2MmNhODFkZDJhZTg4NzI5NmRlYzU3MTNhZDNlMGM1MDFmMzdiNDU1IGxlZ2FjeS10cnVuaworNjkwMzkgYjY3NDcwNmYzYjEwZWRlMmM2ZTU0MmQ0NDI5MmFkOGNlZDk4ODBhNSBsZWdhY3ktdHJ1bmsKKzY5MDQwIDE0MzRkMWJjNjY3ZjcyODI5NmQ2NjM3NWEyZTE3NTZmMTA0MWI1N2YgcmVsZWFzZTI2LW1haW50Cis2OTA0MSBhYjExNDY1NTEyNTUyMzFhYWE4NzZjODQ2YWFkZmVmZTM4MmIyZWM2IHB5M2sKKzY5MDQzIDA1MjJjZmVlODc5YTExZDMzZDRjMWQ5ZjBmMDNiMjcxNDg0OTJlZWQgcmVsZWFzZTMwLW1haW50Cis2OTA0NCA4NDAwMjgyMjZlZDUzZWI2ZjNiNTRlNGZkMWI1MGQ4MDkwYjc1YzVlIGlvLWMKKzY5MDQ1IDA0Y2E1N2JiNzEwODM5MzkzOTRkMzMwZDMzOGM2NTFiMGYyZmIwNTggcHkzay1pc3N1ZTE3MTcKKzY5MDQ2IDRhYjUwOGE1Y2Q3ZWQwYTM1MjE4MzU2OTZmZjJiNTk2MzA1YjZiMDAgcHkzay1pc3N1ZTE3MTcKKzY5MDUwIGMxMDFmNzhhZWQ4YjUxYjM4NTI0YTg4Zjc0OWMzZTg4MjM3YWJiM2QgbGVnYWN5LXRydW5rCis2OTA1MSBjOTA5M2Q0MTU5MGVlYTIyNDNjOWIwZWM5NDMyNThiZGY0ODg5ZjQ4IHB5M2sKKzY5MDUzIGYwNmQ5MDAyNzI5OTQ4NjRiMjVmYTU3N2IzNzY4NzNkY2RjMTIyNDMgbGVnYWN5LXRydW5rCis2OTA1NSBkNjkwMTI5ZDdkYWMyNTU2MmU5Y2RlZjlkNWZhOTA4MTZlYTM1ZjFiIHB5M2sKKzY5MDU2IGZkNGJlYmY5ZGRkZWU3YWM5Nzc3N2VhZTc4MWY4MGRhZDliY2NkODggcmVsZWFzZTI2LW1haW50Cis2OTA1NyAzOTc1NzI1YTg1YjUxODRhYjcyNTVmZWY3YjNkMWNmYTgyZTdkYjNhIHJlbGVhc2UzMC1tYWludAorNjkwNTggOGQ2MDNlNDkzODQ2Zjg3YjBhYzAyNjYxYzcyMmVmNGFiN2NhOGVhMiBweTNrLWlzc3VlMTcxNworNjkwNTkgYmZmOTlhODE4MjRhNzA5NjRkMmQxZWQyNzRhOTI1YWJkZDgxY2FlZCBweTNrLWlzc3VlMTcxNworNjkwNjAgY2E0ZGJlNGFlNjI5ZjQzMTQyNTljZTg4YzQxOGMwOWE4NTFkNzJiMyBsZWdhY3ktdHJ1bmsKKzY5MDYxIDk0NjM0MGZiMTE0YjUzMGYzNGUxZTRkZjg0MWExMjk4YTgzMzgyMTEgbGVnYWN5LXRydW5rCis2OTA2MiAxODg0ZDA4OGUwYWNjZWNmOGIxM2JhMzgzNzViOTkxZTZmNDQ3OWQyIGxlZ2FjeS10cnVuaworNjkwNjMgMGE4YTdjNDU3ZjFiYmY5YmVjOTZiOTk4OGRjY2IxMGNkODA1MGMyNCBsZWdhY3ktdHJ1bmsKKzY5MDY0IDVmYzYwN2I2ZTQyZDdiNzlhNzZmMzdlMTc5YzYxZjQwOTYyMjc5MDcgcHkzaworNjkwNjUgNzNiYTBmNGRiMGQ1OTEwZGNmMjI4NjFkZmEwMTFiNzdjY2I0YzZjZSByZWxlYXNlMzAtbWFpbnQKKzY5MDY2IGQ4YzUyMmQ2MDBlNGUzZTQ5NjA2YTYxNDYyYTg5NTI5MDUzN2IxY2UgcmVsZWFzZTI2LW1haW50Cis2OTA2NyA0NDQ3YmMxZjVhNTEyMTRmNjBmNjg5NjNhOWU5Zjg5Y2U4YWM3ZTVhIHJlbGVhc2UzMC1tYWludAorNjkwNjggOTc0MmU4YTRkY2ExZjBjYzM5YjY1MDgzMDM5ZDE1YTQyMTVhMzkwYiBweTNrCis2OTA2OSA5YzFmMDZiMjczZjcyYzU2MjNlOTFmMDk0MTdmMWUyY2UwZDliZDUzIHJlbGVhc2UzMC1tYWludAorNjkwNzAgOTQ0MDQ2ODA4MzU5M2M1MjJkYjk4NGU5OWFkMmZmMTA5NDg0YzBmMSBsZWdhY3ktdHJ1bmsKKzY5MDcxIDljNWFlZjlmMWZhNzI3ZTc5YTJiYjIyNTQ0YTY0Y2QwMDBjNDc2MjYgcmVsZWFzZTI2LW1haW50Cis2OTA3MiBmMGExYmYyNDkwMTA1ZWRkODg2NWFiM2FlZDE0NTU4ODAzN2U5YTdiIHB5M2sKKzY5MDczIDAxYjljNWQ5OWViZTIzNDQyMWQ2ZGEwMDY4MWRmYmYwNmUwMWI0ODQgcmVsZWFzZTMwLW1haW50Cis2OTA3NCA1MTliMjFmODkxZWJkNWFhOGI5OWJkMjZiMDFkMTY3NjgzMzhkYzg5IGxlZ2FjeS10cnVuaworNjkwNzUgYmI2MzkxNTgyOTZlNzY1NjI2YTI4MWM1ZWIzNzkwNjY0MjMzNzVlNyBweTNrCis2OTA3NiBkODc3ZGJmZDRiZjkzOWUxMjk1NmVmY2M4MDA0MjkyMGM0ZDVlZDdhIHJlbGVhc2UyNi1tYWludAorNjkwNzcgYmVkYzY4NDY4NDRkYmYwZjU5MTRhNDQyODVjOWJmYTdlNjU0NjNjYyByZWxlYXNlMzAtbWFpbnQKKzY5MDc4IDIzODRjMDRlZGJiNjBiYjZjZGQyOWU3Mzc0MzFhYzlmMzI2YmIwZTkgbGVnYWN5LXRydW5rCis2OTA3OSBhMzMwNDE5MGQ4YWFhYTkxNTA4N2NjNWI0ZmNhNjkxYTI1NzI2ZTY4IGxlZ2FjeS10cnVuaworNjkwODAgOWE5ZDI2ZTg0MmIzMzE1YTY3YjE3NzM2MTJiNjBkMzljMTQ0OTA0YiBsZWdhY3ktdHJ1bmsKKzY5MDgxIDMyMjg5MjllY2I2ZDg0ODMzNzlkMjlmNmQwZDIyNjllNDdjN2MwMjcgcHkzaworNjkwODIgZDY2ZTFhYmIzYTk4Y2ZkNmM3YmI4NjA1OTQ2NTk3ZmIyM2E3YmQ4YiBweTNrCis2OTA4MyA3YWQ5OTZlZTMzMzQxZGYwNjgxZjM0OTkwM2VjMDEzM2U2YWJiMDVhIGxlZ2FjeS10cnVuaworNjkwODQgNzI1YjIwODczMGE1OTM0OTE0Zjk3YWQ3Mzk3MDAwZDQzNjQxNjM0OCByZWxlYXNlMjYtbWFpbnQKKzY5MDg1IDA3ZmYyODFiZTAyYzU1NzZhYWM0MGQ2MDQ0MWYwMjVkYTdmODEyM2QgbGVnYWN5LXRydW5rCis2OTA4NiA0ZjYwN2MzYWU4ZTJkMTczZjJhYTgzYWIwODM5NjAwNjQwMWFiOGE0IHB5M2sKKzY5MDg3IDdjYjM1MWM5Y2Y0MDI0N2UyNjkzNzJlN2FhODk0MTA1NGY1MDFkOTAgbGVnYWN5LXRydW5rCis2OTA4OCA0Yjg5NzZlYTY5NjYwYThiMjQ0NDVlNzc1MGQ1NDBlNzk2N2Y4MDg2IHB5M2sKKzY5MDg5IDllYjg0ZmM0MzZmYzFiM2E1YTRjNmFiYmI0M2UwZjZjZjAzNGY4YmQgcHkzaworNjkwOTAgNGFiY2Y5ZDFiOTM4MGZiYTAxNmU4OGE0OTA0OGQ4YTc2NGU2Y2QwZCByZWxlYXNlMjYtbWFpbnQKKzY5MDkxIDE0ZTViNmU4MzY4MDBmODJhOTk3N2U0MTFlYjFmMDU4ZDdjZTBhYTQgcmVsZWFzZTMwLW1haW50Cis2OTA5MiAwYjY2N2UzOTNlYjM0ODcwMWZiYzFhYWY2MTA3NTU3MjVmNGI5NmNhIHB5M2sKKzY5MDkzIDk2OTM0NmRiZjMxZTIwNGM2MTZkZjZjZjA3NjBkZjYyMGI2OGI1YTQgcmVsZWFzZTMwLW1haW50Cis2OTA5NCBkYWFlOGMzMjRiZTFiOTE5MTNmNTRjZmRjYWU2OTdjNDUzZWVlMjcyIGxlZ2FjeS10cnVuaworNjkwOTUgZDE2MjlhOTU5Y2I4NTA0NjlmNmJjZDFjZGMzYzliYTMzYTY1YTY2ZSByZWxlYXNlMjYtbWFpbnQKKzY5MDk2IDQ2M2Y2YzEyZjFkNGMyNTExM2Y2MGUzYjcwOWM5ZGYzODE4MzUyNzQgcHkzaworNjkwOTcgZDg1NzE0NTc0YzhhNTAzNWIwZDk0MGI0ZWM2NTg5NGFlNzc1ZGIyYiByZWxlYXNlMzAtbWFpbnQKKzY5MDk4IGJjYjZhZDFjYjU1ZGZhMzJhNDI0MmQ2ZTM4YzlhYzVjZGVjMmYxZWMgcHkzaworNjkwOTkgYWY5NGVmMzhiNWMwZjI3YmNlOTVkMDkxMDQ1NDg1ODA2NjAzOGY1ZCByZWxlYXNlMzAtbWFpbnQKKzY5MTAwIDNjMjkwYmMyMWQyYzNkYWI5NWZjYTZhOTljZTc5ZGNkMmYwNDM0NzggbGVnYWN5LXRydW5rCis2OTEwMSBlNDhjNTkxNGRhODE4ZmM5MTE3NjdhZTdiYTY0ZGI4MWE5NmEzNDE2IHB5M2sKKzY5MTAyIGUyZGNhZDU2ZTQwZTAzMTc0OWU3ZDM4MDA4ZDdiYzdjYzUyOTZhMDEgcmVsZWFzZTI2LW1haW50Cis2OTEwMyA1ZDBlYWViNDEzNGQ3ZWM5ZDM3ODdiYmEzZTkyN2QzZDg4ZWM2NmMzIHJlbGVhc2UzMC1tYWludAorNjkxMDQgNGE0YTc0MzdjNWUxY2Y2NmFkNGZmMjU2NmVlODU4NzEzZjdjMzM5NCBpby1jCis2OTEwNSA5MWVkM2VjZTBjNzZhMmIyNDViMDc0Y2Y2MWZiYzY1ZDU4NmE3OGI5IHB5M2sKKzY5MTA2IGZjNTg2YjM4MTk4NzNlNjNmOTc1ZjNhNjIyYjU0M2RkNDJiZjMxOTcgbGVnYWN5LXRydW5rCis2OTEwNyBjMjYyOGJmZTZhNjg0OGYyODdlMWM5MmM2NDJhNjg2NzEzZmYxYTZkIHJlbGVhc2UyNi1tYWludAorNjkxMDggYzM3OGM0ZjRhNzk2OWUxZmQwNTU5NzdhZjljYzNiNzg3YTQxN2Q0YiBweTNrCis2OTEwOSAyMGY0YWZjZDNiMjdlZTYzMDBjOGZmOTE5MjBjMGRlMmI2MGYxYjJjIHJlbGVhc2UzMC1tYWludAorNjkxMTAgYjg4ZDM3NzAxMWY1MGRhOWQzNGI5ODdjZjQzNmZkNzQ5OWI1YmQ0ZCBweTNrCis2OTExMSBiNDhiNWRkYWRhODk0OGU4Yzk1MzI1OTZjODdlMGJmY2I1YmE4YzIwIHB5M2sKKzY5MTEyIDZhMjg5NmQ5MjNlM2EyYzI2YjkyNmU5M2M4MjYwNjU2NjNmOWU5MmMgbGVnYWN5LXRydW5rCis2OTExMyA0YWIzODFhZWE2NTgwMjBiZjJkNDZjNDU0ZjJhN2I4NTM2Njc3ZWRlIGxlZ2FjeS10cnVuaworNjkxMTQgZTIyNzA1NGQ0OTZkZmU4NGVjNzQzYjFiZTllMmFiODk5NmEwMjcwZCBweTNrCis2OTExNSBhMDM4ZThmYjY3YzIxMGVjZTE4Y2FiYTY3MjNiNzg3YjMxNDBmMjhjIGlvLWMKKzY5MTE2IDdiNzk2ODg2MjZlNGVmMGRiYzkxZDYyY2FlNDI2ZGE2NWQ1OGNmYTYgcHkzaworNjkxMTcgOTg2N2M4NDk1MzBiYmJmMjY3YmM4MDlmZWIzMTYzYjA1OGMwMTFlNyBweTNrCis2OTExOCA4YzJjNzJjZjJhMGNmYjYyZmIzMDNjYTYzZjVlZWZhNWM2ZmY5NzFmIHB5M2sKKzY5MTE5IDYxNzg3NTMzMzk1YzBkYWFkYWFhZDU1N2JlYjRmMjA3OGZlOGFhNjEgcmVsZWFzZTMwLW1haW50Cis2OTEyMCBlNjdkYzRkYjk2NGM4OWE2NzY0ZDQ4M2JhYTQ3NGY1ZWQ0NDMzMzFmIHB5M2sKKzY5MTIxIDNjMmIzNWExMDU5M2JkNjhjZjhmZjc5ZGQ2ZjMxZjVhNzJhNDNmMWUgcmVsZWFzZTMwLW1haW50Cis2OTEyNCAzNTkzOTRiNjNhMjM4OGFjMjdjMDk4Y2VlZjJmNDhiZWEyMDYxNTMyIHJlbGVhc2UzMC1tYWludAorNjkxMjUgN2ZjMGFkMTFiMGFmMDc0YjA1NGExMWMwNmMzNmNkYTFhYWMyYzk4OCBweTNrLWlzc3VlMTcxNworNjkxMjYgMzc4YmMxOGQyMzUwOWJiZjE5YzhmN2E1YjVhZTgxYzg1MjVhZTNhOCBweTNrLWlzc3VlMTcxNworNjkxMjcgMjM5NDRmMWQ1M2ZkZmI5Y2QwMDBkYmE4YWI3MjZjM2FjNDJmZjg5MiBweTNrLWlzc3VlMTcxNworNjkxMjkgNGM5ZWE2NDdlYWY0MjFkZTU3NjkyZDBlZjM2MTdkM2VlMjA5MmQ2OCBsZWdhY3ktdHJ1bmsKKzY5MTMwIGM1ZTI4Mjg1Yjc0ZDAxMjMyMWI1NmM3YjdhM2Y5ZWZiZDNjNmVjN2IgbGVnYWN5LXRydW5rCis2OTEzMSA3NTQwMzE0ZmYyNjdiNGQ1ZWUwM2NkNTM5ZjJhMDJlYmRkYzA2N2E1IGxlZ2FjeS10cnVuaworNjkxMzIgMDJhOTBkYzBjMjlhOGFmNjViMGIyYjkxMTZlNmM0MGI0YmE2NDY1YSBweTNrCis2OTEzMyBkZjA5MDU5N2FmYWFmMGY3NzhiNWMzYjYxYTc1MWZkMmY3OTUxZmM3IHB5M2sKKzY5MTM0IGJlNTczNTRkZGIxMTQ0NjIzMGFjYmI0YjE5YWZlNTcxMjkxYWU0MTUgbGVnYWN5LXRydW5rCis2OTEzNSBkY2ZkNDM2NTY3Y2VmOTQ4N2RkOTBhNTQ3YTdlYmEzZjFmZGE0NjlkIHJlbGVhc2UyNi1tYWludAorNjkxMzYgNDMxNzFmNTU3YWY4MGZlYTBjOGUwYTJhMzY5ZDFkN2QwYmQ4NTEzNyBweTNrCis2OTEzNyBjMDZmYWE4MTk2YjNhMDdlNjZhNzBmN2Q4ZTJiZTEwNzE4MWIxNGVkIHJlbGVhc2UzMC1tYWludAorNjkxMzggMWMwYTVhOTgyN2ZhOTdmNmUxYjk1MWY2MDYwNzU5ZjljNGFhYjk2NCBweTNrCis2OTEzOSA1ZjZkMjI1ZTNjMWRhYzA5YWJiNzNlZjU4OGU2MzQ4YThmNDE0MjI2IGxlZ2FjeS10cnVuaworNjkxNDAgOTQyNmVlYjdmNGU2YTUxY2NkYzBkMGQzNjBmMjgyOGViNzhkOTY1MiBsZWdhY3ktdHJ1bmsKKzY5MTQxIDlkM2MyY2U4NmY0MjhlMjFmYzRlYjE4M2FhMjM4YmVlMjY3MDkzNzYgbGVnYWN5LXRydW5rCis2OTE0MyAwY2FhMDAyZjVmM2QyNThlNGQ1ZDQyYTFkOGI3MTg0M2Y5ZTQ3MGNlIGxlZ2FjeS10cnVuaworNjkxNDYgMTBkYWVlM2EzNjA5NzhiOTM5MzYwYzgxMzE1ZTRiOGNkNzY1ZjY2MiBsZWdhY3ktdHJ1bmsKKzY5MTQ5IGNkNWRiNDNkYmI2NWI5MTcwMjEyMDFiMzY5NGIxYTdmY2Y3NDYyNDMgbGVnYWN5LXRydW5rCis2OTE1MCAxN2Q0MDFhZDZhMjE1OWZmOGMwYTc0YjhmNjhhZDY3OWZkYjVlMjdkIHB5M2sKKzY5MTUxIGJjMmQ5NGZkOTEwYzBjODM1MDg5MzFmN2U4NGVhNjVkMTJkYjY5YTYgcHkzaworNjkxNTIgMWYyOTIyYmE1YTJhMTAxODk1ZjI5NWE5MzM5NDRlNTI3OTg3MzNlZSByZWxlYXNlMjYtbWFpbnQKKzY5MTUzIDRjMjA1ODM1MDgzMzhjZjkwYTQ5NWQ0ZWM5MWUzNzgyZjQzNGE4OTYgcmVsZWFzZTMwLW1haW50Cis2OTE1NCBhYTA3YTEyMzE5NGEwYjc4OWM2M2NiNDdmNzg4NjZiZmMyYWExN2UzIGxlZ2FjeS10cnVuaworNjkxNTUgNzM5ODFiY2RhNWEyYmJjYWE1OGFmNGI0ZGI3MDBlZjVkYzg1NjUzMSBsZWdhY3ktdHJ1bmsKKzY5MTU2IGViMjYwN2E2NTE2ZTY3YmNhNDUwOGEyZGFlZDYzODFmN2I2NzEyNWQgbGVnYWN5LXRydW5rCis2OTE1NyBiYzkyZDgzZTU1MDgyODc3ZGZmZTUyMDIzODY0MmEyZGU0NWIyYmIwIGxlZ2FjeS10cnVuaworNjkxNTggODY3MmIwZjY1NzVkM2IxY2M2YWVjZjEwMzhiODk5OWM3M2U2NjQxNiBsZWdhY3ktdHJ1bmsKKzY5MTU5IDlhMjQ0YWZhMWE5YTE4MmY0YTg3ZDk1N2I0MDgzZmRkNzI3OTUxNzkgbGVnYWN5LXRydW5rCis2OTE2MCBiNDc3OTU4ZGY5NzhlZDFhY2NkNDFlYzIxM2I2MmQ2MTE5NWU3YTQzIHJlbGVhc2UyNi1tYWludAorNjkxNjEgZmViOTkzNDMwN2I5Yjc4OTVlYmY0MWE0MjdmMDY0NWRiZjJmNzg0ZCBsZWdhY3ktdHJ1bmsKKzY5MTYyIDE0ODQyMTcyYjE1MjJmOWJhMGJmZDRkYTUxYTI5MGJhMzc3NTM3ZWUgcmVsZWFzZTI2LW1haW50Cis2OTE2MyBiOGNlOTc5Y2RkY2UyMDZjNzFjMDY4N2Y0N2VkNzcyYWMyNTcxMDM1IHJlbGVhc2UzMC1tYWludAorNjkxNjQgMzk1NGM5YjkwYjUyN2ExMTAyZWRlN2U2ZTgzYzVmYWM1ZTYyNTgyMyBweTNrCis2OTE2NSAwNmJiY2I3OTJmMDRlMGEzNGQ3MjU0MWJhNTI3YjAyMjIyYzNmZWQ3IHB5M2sKKzY5MTY2IDhkM2Y3ZGQ5YjZjY2UwNTNkYmVhMDA2ZGNhMDg0NDNmNzExMTI0YTcgcHkzaworNjkxNjcgNTBiZDJjMThlZmYwNjUyOTVjMDliOGQ0NDk5ZGM1NWVkYTY4NzhhNCBweTNrCis2OTE2OCA4MTU1ODlkNjJhOWFlMjAxYTkwNDU0ZGM2OGIxMjkxNTQ2ODMwMjlmIHB5M2sKKzY5MTY5IGQyNmQ5NzhkMDA2NjQ4NjhjMGNjYjhmZTk2ZWMwNTQzODFjMDQ2ZDQgbGVnYWN5LXRydW5rCis2OTE3MCA0YjMyNDZjODNlM2YyY2NhYzc0MTU2MWNiYTVhNDdkZjIyZDlkZjYwIHB5M2sKKzY5MTcxIDQyN2Y0YTc0ZjUzOGFiZjQ2NzMxY2Q4NWU4YWRkOWZlZmQ0ZDI3NGIgcHkzaworNjkxNzIgZDg1ZWYyNmVmZDEwMzc2YmIyMTM1ZTFlMThhN2NmMDZiZGYwZjcyZCBweTNrCis2OTE3MyAxMzRmYmNlMTExZTliOWMyZDgxZWUwNDhkODhhMzE5ZjgyODU5YTBkIHB5M2sKKzY5MTc0IGRlZWRkZGM3ZTBiNGQ5MWUzZTlkNjExNThiZTI5MDk0ODQ1MmU4MzAgcHkzaworNjkxNzYgMzg2ZWI0YjVjYmIzYWM2MWZiNWU4YjcwN2MzZGVmZTYxZGY3NWVjMyBweTNrCis2OTE3NyBmYmIxN2NhYjU3MTZlMzkzN2QzNTBmZDQ3MmI2NzQyMWI5MzBjNGFmIHB5M2sKKzY5MTc4IDZiY2Y4NGQ2Mzc5NzUyYmU4NmQxZjliMzQ5OTM4ZTdkN2Y1YzBkMTUgcHkzaworNjkxNzkgNzY2NDA1YzA0YmRjMjk0NDUzM2M0ZGE2ODIwODZiMWY2MGY2Y2RhZiBweTNrCis2OTE4MSA3YzkxZjQ3OWJkMGQ5MTBiZjlkNGMzNDQ5M2QwYTQxZTA4Yjg4ZmM2IHB5M2sKKzY5MTgyIGU5Njc1ZDcyZTNlM2I5NDAzZGU0MGMyZDExMTNmMTUxMGRkMjE2ZmMgcmVsZWFzZTMwLW1haW50Cis2OTE4MyBlNjYzMDc1ZmQxYWU0YTk5ODAwZTY3NTA3OGNhZjJiYTZmNzkwMzc2IHB5M2staXNzdWUxNzE3Cis2OTE4NCA5Y2EzNGMxOGUxYmQzYTFlZjFhMzE4NTQ2MzU5OWI4MTdlYzI4ZTc5IHB5M2sKKzY5MTg1IDAxNjJjZDRmNTViZTMxZDFiZWQyYWZmNWE3ZGM2OTNkZDlmOWEwODggcmVsZWFzZTMwLW1haW50Cis2OTE4NiBmMDA4OTQxM2MxMmZkNDNlODJjNTVlOWE5NTEyYzE2YWJjMzliOWVmIHB5M2staXNzdWUxNzE3Cis2OTE4OCBiYTk0ZDdjMDk1ZTgwZjg5YmUyOWIyMjMzZGJmMzNhYzg1Yjk3ODc4IHB5M2sKKzY5MTg5IDQxMGRmZDQyM2VmMTJiM2MzNDdmNGRlOWNlNzNhNWY1OGE2ZjgyMGUgcmVsZWFzZTMwLW1haW50Cis2OTE5MCBlMmRiMTUxOTZhNTRiNTM5MDI5NDYyODA2MzFkOTlmNWYzYTU2NjBlIHB5M2sKKzY5MTkxIDIzNTgyOTk1NjRlYTgwNDlmOGJjYTFhYTE1NmYxZTBkNDZhYTVmNjMgcmVsZWFzZTMwLW1haW50Cis2OTE5MiBlOTQ1NzgyNDc3NzQwYzhmYzE5YTlkZmQwMDg1Y2UzM2NiMWQ5MGI4IHB5M2sKKzY5MTkzIGZkYWU0ZTc0OWQyYjM4MDlmMDU3OTg0MWZhNTk3MDM2MTdhYmM3ZDcgcmVsZWFzZTMwLW1haW50Cis2OTE5NCA1N2Q3ZDZjMmIxMWJjYzU0OTVmN2U4OWM5ZGM1NGZhM2UyZGNmYjA5IGlvLWMKKzY5MTk1IDQ3ZDc0NzEyNGEzZTBjNGJjNzA4OWJkNzA2ZWIyZTUxZDQ3YmUyZWQgbGVnYWN5LXRydW5rCis2OTE5NiBhZWYyOWE5ZWQ0OTE4NDcyY2YyYjQ3M2UwZjkzZDE4ZjIwNmJhYTg3IHJlbGVhc2UyNi1tYWludAorNjkxOTcgOGM0NDEwZDA2N2VlN2ExOWM3YjZjNjdmODhiMzhhZTFhYjMyOTNjMyBweTNrCis2OTE5OCBhZTAyNmQyNTlkNDExMTM4ZTUwZjA3MTQ3NzE5Y2NiMTlhOTZhZTNmIHB5M2sKKzY5MjAwIDkyMzYzNTFiNTI5YTRjYmRiYThiODU2YjdhNmQ1MjhkMWZhYjVhZWYgbGVnYWN5LXRydW5rCis2OTIwMSBjMDgzYzI3NGY5YWZlY2NhZDgyYjhiNDdiMzA2NzMwMmI5N2JiYzUyIHJlbGVhc2UyNi1tYWludAorNjkyMDIgMmMxOTI3MmQ4ZTU2NTg2ZTE5N2EyYjE0NGU3MGE5OWE4YjkxNTkxMSBweTNrCis2OTIwMyA2ZTVjYTk4YTMwYWMzODUzMTA1ZGQxZWI3MDU1YjM5NjI2NjhjNjYwIHJlbGVhc2UzMC1tYWludAorNjkyMDUgMDFiM2FjZDEwOWRiYjU2MjQ4Mjc0Zjc1MTRmYzIwMGFiYWU3MDNmMCBsZWdhY3ktdHJ1bmsKKzY5MjA2IDJhZGY5ZWQ2YmE3ZTg5NzRlNzcyOGVhMTk5YTgyOWI5MTQxNTdjYWUgcmVsZWFzZTI2LW1haW50Cis2OTIwNyBmZjY4M2E5Mjg0MTkzNDBkNWEwMzE4M2U1NjcxYjdjNTM1MTQwYjY2IHB5M2sKKzY5MjA4IDg3YTk4NWExYjVjOWQwZGMyNmExN2ZkMmRkYmY5OGU2YmZlMTBhODQgcmVsZWFzZTMwLW1haW50Cis2OTIwOSAwNTA3NGM4ODM3Mzg0N2EzYmVjNGYzZGUwOGUyM2NlMDdhYzM1MTY1IHB5M2sKKzY5MjEwIDYzMzg2YWU3N2Y3OTNmODFmNzBhNzU4OThlYmQ3NmExMjY3NzEzMjUgcHkzaworNjkyMTEgZmE3OWYxMjJhMWIyNWYzZTQzMjEzN2NjZTFiZjQyZThiMTc4ODQxOSBsZWdhY3ktdHJ1bmsKKzY5MjEyIDdiN2E2MzliOTYwZjVjMmQzY2I4MzcwMjE5ODVmNTY2NGM4ZDY2ZWIgbGVnYWN5LXRydW5rCis2OTIxMyAwYzMyMGY4ZTdlMjAzNDU4NzMyMmY4YzliZmY2ZTNkMzM1ZGRhZTAyIHB5M2sKKzY5MjE0IGRlYmQxNGM0ODliOTIxOWE1NDhmYzMyMDAyZjRhNGVlODNkMmE0MWQgcHkzaworNjkyMTUgODdmYmJmMjJhZGYzN2JhNzhjZjhjZWIxMjQzNzI3MjdlYjJmMTE0ZSByZWxlYXNlMzAtbWFpbnQKKzY5MjE2IDVjNzAyYTdkNGM0MDlhZmNjMjMxZDkzYWRlNDlmZGU3NTIxNjIwOGEgcHkzay1pc3N1ZTE3MTcKKzY5MjE3IDQwZmY4M2UwMjM5NTMxZWMzOGY2ZWJkMTk0ZDhkN2Y2MjVkNmU5ZjQgbGVnYWN5LXRydW5rCis2OTIxOCA5MDgyMWM3YWQ4NzRmODkzMzQ3OWQ5OTI5NmM0ODQ1NDE0ZmQ2ODExIHB5M2sKKzY5MjE5IDk5MTNjNDcxNTI2MTA2NzQyNjUwYzY4Yjk5ZjRkYWFmNGFiYjBmNDIgbGVnYWN5LXRydW5rCis2OTIyMCBmYWUxNzU4YTIzNDY1MTg3MDJlMWY5NjZjOGQ1MzY4YTZhNTA2OWQ0IHJlbGVhc2UyNi1tYWludAorNjkyMjEgNjMwYTQzNDUxZDA0YWEwYTRkYTE0NWE3ZWJjODE0MmNlNjI2MTMwYSByZWxlYXNlMzAtbWFpbnQKKzY5MjIyIGE5NTM0MzkxZmZmOWYxY2JlMDE1YmJlZGRkOTc4OTRiMDM2M2M4NGMgcHkzaworNjkyMjMgMzYyZDk2ZGJlOTJjNTQxMDJmMTJmMDZkMjlkM2UxYTJhNmJjZTFjNSByZWxlYXNlMzAtbWFpbnQKKzY5MjI0IDc4NmMxMjc4NTcyY2M2ZjM3OGI1OGVlMTBkYjAxMmJmZDk1OGYwMTAgcHkzaworNjkyMjUgYzIxZDhjZGNjYWUxMGU3MmM2MWUxZTdlNTkyOTlhZjAzYWJlMzJmMyByZWxlYXNlMzAtbWFpbnQKKzY5MjI2IDE0NzlkYjJlZjljZDUzYjVlZjE5MDE0NGM0ZTQ3MmUxNWQ5YWFiNWIgcHkzay1pc3N1ZTE3MTcKKzY5MjI3IDZjOGVkZGYyNDAzNWQzNGNjOWMyZDZjOWYyYjE3ZTE0ZmIyODkyOGIgbGVnYWN5LXRydW5rCis2OTIyOCBjYTcxYTQ0ZDU0MzIyMjliODcwM2ZlMmM4MmMyMTMwMTc1NmQyNWNmIHJlbGVhc2UyNi1tYWludAorNjkyMjkgNjI1MWI5ZDMyMWFmOGQ5NWZiNDIyYTdmN2Q3NDVlNjVhNzJiMDk1NyBweTNrCis2OTIzMCA3NDQzOGZjMTFkMDVkY2RhOTdhMDljMTJmNjBhMmQ5NTlmODM2OTM3IHJlbGVhc2UzMC1tYWludAorNjkyMzMgZjVkMTQzNGY0ZDNmOTdlM2MzNjgyYTVjNTcxMmZkMTVhMWU2NmNmNiBweTNrCis2OTIzNCA5OGY0YzkwNjg3NzUwNzEwZmI0ZTFhNmM5NjJjMDQyNWE3MTQxMGJkIHB5M2sKKzY5MjM2IGM4MjA3MjUyNjVhYjE5MDkwYmNhZDE2MTdhOWJlOGFiNjhjMmVjZGYgcmVsZWFzZTMwLW1haW50Cis2OTIzNyBkM2U2ZjI2MDIzMDBjYWVhNzY1ZDRhMDUxMzM3OGY2MmQyZDNiNmFhIGxlZ2FjeS10cnVuaworNjkyMzggMzg4MGExNTkyMTM3ZTY4Yjg5MWM4NDgxNzZhMTllMTY2NGYyZTJhNiByZWxlYXNlMjYtbWFpbnQKKzY5MjM5IDY3NjU0MTA2ZWU3OTU3NGE2ZjRhODhkOGM1YjRlNmFmZTNiY2Q4Y2IgcHkzaworNjkyNDAgNzM1NGYxYWZhZWNiNDViMTQxYTA0MDkyOThlNzk2ZmYyNmRiMTEwYSBsZWdhY3ktdHJ1bmsKKzY5MjQxIDdiYTQxYzA5MTdmZjdiMTA0MDZlZjRiYzk4YTY0YjA5NjBlODFiOTUgcmVsZWFzZTI2LW1haW50Cis2OTI0MiA1YzI1NDc5NWFhMDdhNzI3MThjYzA2Yzg2ZjYxMTY4ZmIxNmQ1MTM3IGxlZ2FjeS10cnVuaworNjkyNDMgYWVhOTBmNWYzOThiZGVjMGMzY2EzNmUxNzYwMTIzYzJiYmE0MmI5ZCByZWxlYXNlMjYtbWFpbnQKKzY5MjQ0IGExYTcxZDUxNWRkMmZkOWY5YjUwZDlhMmRmY2Y0MzA1YzgyZGM5OWMgcmVsZWFzZTI2LW1haW50Cis2OTI0NSAwZjNhYWJhZTRjYzY0NjU5OTIyOWNkYTliNWZkZDYxODRmM2IwMjc3IHJlbGVhc2UzMC1tYWludAorNjkyNDYgNWI3MTMwNDVlYTkwNmUwZmUyMWJiZjFhMTY0ZTMxODkzOWEwNzIxZiBweTNrCis2OTI0NyBmMzc3Mjc3NDgyYWI1ODYwODAyNzIzNTA0Yzk2NDFjOGNjNjZiYmE1IHB5M2sKKzY5MjQ4IGYzNTFmYjdlYTE3OTZhYzA5NGFhZWFiNDZiMGM4N2EwNTZmMDkxZGMgcmVsZWFzZTMwLW1haW50Cis2OTI0OSA4NTdhM2Y5ZGE5MTUzMTU5ZTUyMTZmZmViYTUzZmQ3YjFiZjFkMTI3IHB5M2sKKzY5MjUxIGM1MTNlNzI4ZTI0Y2JmNTY2OGQ4ZDhiYTAxNjFhZGMwM2U4MmMxN2UgcHkzaworNjkyNTIgZTIwZjVhNjg0YWVmYTU4OGI0NTBiMzMwYTRiNmExYTJjYjY1ZWJiOSBsZWdhY3ktdHJ1bmsKKzY5MjUzIGVjNjlkYjI0ZGUxOTBhN2U5MjI0M2QwNzZkMDE4MDM1YjhjZjJiYTQgbGVnYWN5LXRydW5rCis2OTI1NCA4YjA4ODJjNjdiNmNmZTFmMDg1MmM2MmUwYTFjMmRiYTRmYTQxOGMwIHB5M2sKKzY5MjU1IGU1YWJhZmFlMzYwNDVjNWViYmNmNDI3MTdlM2E3YTAxNjI0MGExZTkgcmVsZWFzZTI2LW1haW50Cis2OTI1NyA3NTUyMWMxMjM2MTNhY2FiYjdlZGYyY2M0YzRmNjI5MzY1MjVmYmJmIGxlZ2FjeS10cnVuaworNjkyNTkgNWYzMzU0YzUyZThiOGFhYWU0YTE3NDQ0NDJlYmIzMDU5ZWEyNDcwNyBweTNrCis2OTI2MCBlOTcwN2NjMzY4OWQzOGRiYWFkMDBlNDk0N2UzMWNiNTkyZDNlYWFlIGxlZ2FjeS10cnVuaworNjkyNjEgOGMwMTk4Nzc0ZWQ2ZGFiZWYzZmU1YWNhYzMyOWE5ZDVhNDU5Mzk4ZSBweTNrCis2OTI2MiAxZTdhMDZhN2Y1ZTc4YjA3NTFjZDk0NTYzOTM1ZDVkNzU2OGI3OTYzIGxlZ2FjeS10cnVuaworNjkyNjggYjU4NmNhM2EzMDYyMjUyYWE5OGE2MjQ1NzFmYjcwZWE4ODkwZjA2OCBsZWdhY3ktdHJ1bmsKKzY5MjcxIDQ4NDVhYmY1NzJmMTQ2Yjg0ZmJhNjIxM2ExNDExY2VkZjk3NjUzMTMgbGVnYWN5LXRydW5rCis2OTI3MiBlYzYzNGU1N2JjNTg2MjM2N2MwZjhiZTg5MjEwNGI3OTI3NDkwYjU3IGxlZ2FjeS10cnVuaworNjkyNzMgZjc0NTI4Nzc2YzExNWY0M2VhMTNlZjAyZGYzYTRlYjIzNmMyZGUxNiBsZWdhY3ktdHJ1bmsKKzY5Mjc0IDI0NTY2ZTQ5OTdhZTJmNjc1ZTZiYzhmYTUwMDQxMjY4YWE4MWQ3ZTYgcHkzaworNjkyNzUgY2UwNGUzNmYyYTU1OTkyOTZiNDc0Y2RiYTcxMmI5ZjI2ZDJkODk4NSByZWxlYXNlMjYtbWFpbnQKKzY5Mjc2IDJiNjAzZjcyMzI2MDVkZjM1N2ZmMDA1NWE3ZTUzMDM1NTQwYTUyOWEgbGVnYWN5LXRydW5rCis2OTI3NyA0NzNlYjM3MGRlMmNmZDY2YWJmYmZmNjFmZjU3N2NmMGZjY2M3NjE2IHJlbGVhc2UyNi1tYWludAorNjkyNzggYzkxYjc2ZDhlYzBhOTcxNjVlNThjOTYwZDZhNzliOTFlZTkzM2NmYiByZWxlYXNlMzAtbWFpbnQKKzY5Mjc5IGFhMmViMGYyNDJmZmQ5NTg4YmNjNDcxMjgyNjMyMDhjN2VkZTY0M2YgcHkzaworNjkyODAgOGUxNWRmMzcyNmUxMjA5YTAxYjEzZjEyZWZlOGJiMzk1N2U3YmU5ZCBweTNrCis2OTI4MSA1M2Q2NDQ1YzZjNWE4ZDk4NjAzZTdjM2QzMzM4ODllOWFhZjU0YTkxIHB5M2sKKzY5MjgyIGI0NjE4NWQ3ZTk1YTdhMGMzMzFmMjc2ODM0ZmY1Y2I1NmMwMjA2NTAgcHkzaworNjkyODMgMzc4YWJiMjgxZTMxNWNkMDg0MDBkYmYyNGY1ZjI5NmM1MTJlNGQ3YiBweTNrCis2OTI4NCA4YjE4YjM4OTBlMzE2MDk0Y2RkMDFiYWM3MjAyMTk1NDI3NDVhNGM5IHB5M2sKKzY5Mjg1IGUyMTRiZGQ1NTJmYzI2ZjRmNmIyYzBjYWM2MzRmODgyYjY4OGQ2MTAgbGVnYWN5LXRydW5rCis2OTI4NiA1YTk0MjQ4OTNiNWZkMWQ2ZWM1ODk0M2RkMjFmNWFjNDY4YjRkOGQzIHJlbGVhc2UyNi1tYWludAorNjkyODcgMjMzM2E1N2ZlYjk4NTAyZGUwYjBhYmYyMGJiZDEzZTNlMDFkOTAzNSBweTNrCis2OTI4OCAxYjIzM2M4M2YyYTliODFhY2YwZWYyZmQ0ODI5ZjY0M2Y1ZTgzOWU5IGxlZ2FjeS10cnVuaworNjkyODkgY2E0MjMwMDhmYTRhZTY1MGZjMmRkMGIzYTM1NWU4N2M3NmJhMzY0YSBsZWdhY3ktdHJ1bmsKKzY5MjkwIDkyMTdiM2E0NzUyODYyODBmMDYxYTdhZjE5ZjQ2N2Q3NDlhMjBkNDYgcHkzaworNjkyOTEgNDQ1MmViMDU3Y2M0Y2RhZWQ0ZjllODE1NmI3NDFiMTcyZjU4MGZiNyBweTNrCis2OTI5MiAzZjI3N2I1NjVmNzZlYzY4ZDI3ZmNkZThhNzg2N2Q2OGY4ZDM0MGRlIHB5M2sKKzY5MjkzIDhhYTcxYzE5ZGNiODA4Y2E4MWM2YzJjM2QxYjRhMTc1NDhmZDliZjUgbGVnYWN5LXRydW5rCis2OTI5NCAxOGQzNzI5ZTJiYWMwMTJjMjdmYjdiMzFlYTc1NzAxY2E5NmU4MjAzIHB5M2sKKzY5Mjk1IGIxMjZjZTcwN2EzNDZlODAzZjczN2RjYmNiODQ4NzQ3ODU5YjlkZWUgbGVnYWN5LXRydW5rCis2OTI5NiA1MmY3OGJiMjZiZjUwZjM0ZTZjMmJiZjAwNWViMzQ1YmRlMGU3NDY5IHB5M2sKKzY5Mjk3IGVlYWEyNTkwNjlhMzNiZjkyMDViY2IwZTIzY2QwOWFhOWUxOGNmYjUgbGVnYWN5LXRydW5rCis2OTI5OCA4Zjg5MTBmM2I2NTFjMjgzZWRhNDc5ZmFlZmEzOTZmZGJhMTYzY2Y1IGxlZ2FjeS10cnVuaworNjkyOTkgOGM4ODBiYmJlNjg1YzIyMDE2M2QxNmJkMWQyMGRmM2I4MjQ4OTI5OCBsZWdhY3ktdHJ1bmsKKzY5MzAwIDBjOWQ1OTk4MzRiOGI0Y2M0Y2VlYTFjMDU0ZWZhZDE5MTY4NmFmODcgbGVnYWN5LXRydW5rCis2OTMwMSA0NTc5NTdhN2Q2YmE5YmFmOWFjYjIwOGNhYTBlMjI2NzRhM2RhNTFjIGxlZ2FjeS10cnVuaworNjkzMDIgZjQwMTJlNzgyNjBjNWQ5MDQ0ZjAxODc5Yzg3NTg5NmQ3MWVkOGJiMCBsZWdhY3ktdHJ1bmsKKzY5MzAzIGJmM2I4ZTMwMjEzZjZhZmVlNDAwNzU5OWI2MDBhODg0ZGY1ZjlhNTggbGVnYWN5LXRydW5rCis2OTMwNCBmMGU1Zjg1ODlhMGMzZDQ2NjNjZjI1MTliNTBiYWRlNGNlOGY3Zjc1IGxlZ2FjeS10cnVuaworNjkzMDUgOTBhNGM2NjZmNzdhODU3MzI5MTUzZTA3ODNhYmUxMTVlYmQ3NGI4MCBsZWdhY3ktdHJ1bmsKKzY5MzA2IDQxYzcxYWQ0N2Y4OTNkMzJkZjAwZjIwNmI4ZDJiMTU0MTA0ODVmMGEgcHkzaworNjkzMDcgMzIxZjI3YTQxNGU4NTRhZGVmNTBmNGVkOGZjMDQ0Y2NkNjBiZjUxMiBweTNrCis2OTMwOCA3NjIzOTc5OGE2MDg0OWQ5ZWMzN2JiNWUzZWU1NjIxNWEzYWIwYmZlIHB5M2sKKzY5MzEzIDNmYzI1YWUxODllOTY4YTUwNzZmYjlhZjEyMWM4MzU2ZjVmYzY4M2EgcHkzaworNjkzMTUgZTA1YzZiZTZhZjEwMGE4OTdiOTNiNzRhMzczZjA3MGNlNWI2NzdkYyBsZWdhY3ktdHJ1bmsKKzY5MzE2IDQ2NmViOTc4NGU4YmE5MDhhYTRiNjJlOWQ1MDQwMTk3Mzg1OWY5N2EgbGVnYWN5LXRydW5rCis2OTMxNyBlZjNjNmQ5YjRmZWNhNjc3Yjk0NmQ0NTM4M2RmMzM0ZWNjZmEzMDdkIHJlbGVhc2UyNi1tYWludAorNjkzMTggOTk3YjI2MzJjOWI3NWExY2I2ODIwZGUyYThkMTI2YzE5YjhhM2M1ZCBweTNrCis2OTMxOSBmZGUwM2U3NWJjMTAwYWRkYmEzZDhlODkyNTUxMTViNmU0NGM1NjA0IHJlbGVhc2UzMC1tYWludAorNjkzMjAgZGM4NWNhNDEyMDc5Zjc4M2FkYWIyMzM1ZDgxZDNkNDgwZWJhNzI2MCBweTNrCis2OTMyMSBlNTQyNWFmNjBmMzA0MTYxNTA3MjAzM2E5MmQzNTMwZmYyMDFiNzAyIHB5M2sKKzY5MzIyIGExODkzYzY5MTg3OTRkMGY0YjI3MWVkOWUyYmZmYzc5NjE2MDlmYWQgbGVnYWN5LXRydW5rCis2OTMyMyBlNmExNDY4ODU4MGVmNGRkNjI3ZWNiYTZiNDA3NjUyNDE5NGQ2YTM1IHB5M2sKKzY5MzI0IDUwZDg5NDM2YWVhYjczZGVlYjBiYTM3ZmRkZjYwMGI0YzY0YmI4NjMgbGVnYWN5LXRydW5rCis2OTMyNSAxNjcxMDA0ODM5ZjhiZmZlMjllYjA3ZWI4ZTFmMTFjZTIxZWI5OGU2IHJlbGVhc2UyNi1tYWludAorNjkzMjYgN2UxYTM4NTg0N2E5OGRiOGY1MzVkZWYyODYwNjQ4OWJlNTY1ZTYxNiBweTNrCis2OTMyOCAzNzQzMWNkMTJiZjI3NGFkYzY5OGJhZWUzZmU3MDFjYmE5ZWI0Yzc0IHJlbGVhc2UzMC1tYWludAorNjkzMzAgMjFjM2UzNTMxNTA0NjM2MWEwMGM3Y2UzZmQ1MzI5MmZiYTBmYTUwMSBsZWdhY3ktdHJ1bmsKKzY5MzMxIGUyMzllOTc3YmIzMmEyZDNhNjE2MjBmNjA1MjQ1YmQ1ZDI3Yjk5YzEgbGVnYWN5LXRydW5rCis2OTMzMiBhM2VhNjViZmUzNzA2YTQ2ZTg1ODliMzUxYmEwNDM5ZTkxY2U1YTBmIGxlZ2FjeS10cnVuaworNjkzMzMgZjc4ZDdlYmI5NmRhODRjNjI4NTFjNWNiMjhjMTBmYTMxZDYyNjdiZSByZWxlYXNlMjYtbWFpbnQKKzY5MzM0IGM1MDIyYjEwNjRlYTY2ZWUzNTA3ZWUwYTZhYjFhMzA5NWZjOWQ4NjcgcmVsZWFzZTI2LW1haW50Cis2OTMzNSBlNDM5Zjk3MjJhNzM0OWRmZmU1Y2ZiMDcyODJiMThjYWM0ODhlMjI5IHB5M2sKKzY5MzM2IDU0MGZiZTVjODE2M2Y0OThmNjgwOTQyZWE2ZDZmZWE2ZTJjZDA4N2IgcHkzaworNjkzMzcgN2I4ZmEyNjUyODY2OTEwN2QxYmYzNDMxM2NjNmFiODU5ODZkOTM4NCByZWxlYXNlMjYtbWFpbnQKKzY5MzM4IGRiOGVmYzk0MDE2ZjRkZGNjM2MyMDk2NzJlMjBlZTU5MWVjNmFkYTMgcmVsZWFzZTMwLW1haW50Cis2OTMzOSBkMTg1NTAyOThhZjg3NzMwMGYzNDUxMTNmZDZmYTJhMzRjZTc0OTg4IHJlbGVhc2UzMC1tYWludAorNjkzNDIgZmRlY2I5MTgyNjA0MGRmYTc2OTdjYzYyZWZkYTcxZTY2OGUwMGMyZiBsZWdhY3ktdHJ1bmsKKzY5MzQzIDEzZjEzNTJhM2Y4NzQzZTM5YzYyYTBiZGI2ZDE1MGQ1MDhkNGQwODcgcmVsZWFzZTI2LW1haW50Cis2OTM0NCAyMDcwOTc2OTE5NzI3NGFiMDIyZGE1ODA3MTk3NjdlNjljZGQxNGI1IHB5M2sKKzY5MzQ1IDljNDZkMTA5MDA3ZTZjOGYyZDk5Nzk2MjFkODlkZDY1MTM3OTUyYTYgcmVsZWFzZTMwLW1haW50Cis2OTM0NiA0Y2M0OWQ5NzhlYzIzYWE1NWZiYWEzMGFhZmY4M2VlZWYzNGQ3NDQwIHB5M2sKKzY5MzQ3IGJiYzFjNjgxNTNhYmRlYjJlOTc0Y2MwZGYyNzgzZDBhOTA1OGRhYjMgcmVsZWFzZTMwLW1haW50Cis2OTM0OCAwZjc1MTE1MzMwN2Y0NjllM2RjMGE4MjA5ZjZmYTRjYjVjMmYzMDhmIGxlZ2FjeS10cnVuaworNjkzNDkgYzRjNjEyZDk1YTliNmQ5NjM2MDQ5MjY3ZWQxNWZjNmM5NmFjZTdmMiBweTNrCis2OTM1MCA3ZTI4YTJiMGMxYjFmMTliNTNlODM0ZjhjNzIzYjEzOGMxYmU2NmVkIHB5M2sKKzY5MzUyIGEwMGU1ZGNlYTE2YzhlMDQ4ODQ1ZjkxYzM5Mjk3OTIwMzdjYzA3MTggcHkzaworNjkzNTMgN2EwNTI1NjEzNjQ0N2UwZTVlYzEyNTgxNDNkNjkyMzFiZGJkYzI1ZCByZWxlYXNlMzAtbWFpbnQKKzY5MzU0IGY5ODFlMDU1N2MzNTA3Y2I0NmY1Yzk5OWE4NjY4ZjNkZmYwYzlhNjIgcHkzaworNjkzNTUgMDVkMWNiMDUzZDQ3ZTRmY2FkODEwMjU0NzExZTk5ZWYxZjgxMzJlZCByZWxlYXNlMzAtbWFpbnQKKzY5MzU2IGNjODI1MzExNjI3NTgwYjEwMTRhMzBiZGI4NWY3Y2U5ZWM2ZjdmMTQgbGVnYWN5LXRydW5rCis2OTM1NyBmMzg3ODM0Y2U1ZGNkMzRlNzEzMTYyNmQ2M2UyNWFiNGE4Njk1YmZkIHJlbGVhc2UyNi1tYWludAorNjkzNTggNTRlNDA5YzJmNDhkNmExMjYwYjE0ODVhZGQ5MGVhODcwOTVlODUwMyBweTNrCis2OTM1OSBmYjQ1MTExZjI0NGViNWU5YWM2MjM4ZTIwNDY0ZDgzZThiN2E2ZDc1IHJlbGVhc2UzMC1tYWludAorNjkzNjAgMTgzYTZjMjliZjljMThkZjU5YmI4MTJlODc2NmJhZTliMjhlNjAwZSBsZWdhY3ktdHJ1bmsKKzY5MzYxIDZmNDA3NjhkMDkwOWQ2OWE0NjJlNTRlNDYxZTNhYThlNDlkN2Q1NTIgcmVsZWFzZTI2LW1haW50Cis2OTM2MiBiNDgyMGZjZWRhMjQxYjI1ZDdmOTE2MGYyOWRmZGYyNTUwZjA4MTMzIHB5M2sKKzY5MzYzIGRiNDZmODJkMGExZDFkZTQzNmQyZjFiMDRmMmYwYjZjZTQ1ZDllN2IgcmVsZWFzZTMwLW1haW50Cis2OTM2NCA0MzI3ZGZhNjgxMThmOTliMWI5NzgwMzcyMGNkOTQ5MmE1MDQ3YmMwIGxlZ2FjeS10cnVuaworNjkzNjUgMTgyMTBhZmQwMDVhNzEwODQ1YmI0NjUwMzgyMjg1YmU3NjAyNzcyMyBsZWdhY3ktdHJ1bmsKKzY5MzY2IGM5YWZmYmEwNjllYWU1OTU0MzY1ZWU0MTk2NTQ1ZmQ4MDliZDlkNmYgbGVnYWN5LXRydW5rCis2OTM2NyAyOGU0MzBmMTRjMGRjZjQzMzc2MjFiYWM3YTI4ZmQzZTQxMmYxYjcxIHJlbGVhc2UyNi1tYWludAorNjkzNjggMTlkYjM3OWJhY2Y4MzM3NzI4MmIyMTQ3YjI3ZDgyMzczNjdlNGIyNSBweTNrCis2OTM2OSBmMmRmMTBiYTYwNTQ4NWYzZDA2MjhkMjU0NDQwMmZjMzRhMTdiMTlhIHJlbGVhc2UzMC1tYWludAorNjkzNzAgOTZmZTQ1ZGU3ZjI2ZmVmYTY1ZDU4ZWRjMTI4MmRiM2M1YTRlZjU3OSBweTNrCis2OTM3MSAxY2UwMzZiODgwOTM2NDAxZWExNTliYWVkZmMyOTIzYmU1MTY3NjM4IHJlbGVhc2UzMC1tYWludAorNjkzNzIgZDFlNTQwN2Q1NTA5YmFkOGNmMTc2NTczZjk1OTgxMzhjMDk5OWNkNCBweTNrCis2OTM3MyA0MmZhYTgwNTRjM2RjYmEyYjE2OThkMWFhOGE2NWFiNzAzMGU2ODI1IGxlZ2FjeS10cnVuaworNjkzNzQgYmFhODhlOWU5NzY2Y2E4ZDkyNDY1YTEzMDgwZDQ1ZDVjNWRiY2I3OCBsZWdhY3ktdHJ1bmsKKzY5Mzc1IDJhNDBkOTgxYzY1MmEyYzNjZWZhN2I4NGE4YmUzN2M5MGZhZDk5YzAgcHkzaworNjkzNzYgZDQ2MTNlOTcwNDk4YTRhYjVlNmNhNmE0OGI2NTYxNTM1YWI1YjA2OSBsZWdhY3ktdHJ1bmsKKzY5Mzc3IDk4NTZjNGZhYWMwNDgxYmQ3MDRmZTMyNjEwZGFkOTgwNzMyNGYzZWEgbGVnYWN5LXRydW5rCis2OTM3OCBiNGUxNTRjOGEzOGE1NWI3YzkyMjc3ODY4NWQyZjBkNGI1Nzc1OGNmIHJlbGVhc2UyNi1tYWludAorNjkzNzkgZDJkZTVkYTBmNTYzNGZiODNmZDg2ODA4NWI4YzUzMzkzMjM1N2RhMCBweTNrCis2OTM4MCA1OGI3ZGM5Yzk1NTdiN2JkOTJkNDk3ZGYxMDE2NTg1YWY4MWVkMzliIHB5M2sKKzY5MzgxIGMwMjg5NWEzZWQ2ZDU3ZjNmODZiNDRjMDZiZTcwYmUyN2M2ZjQ4MjYgcmVsZWFzZTMwLW1haW50Cis2OTM4MiBlMTdiMzdjMzVjN2JiMjQwNTFkYzk1YjViNDljYzJjNjYzMGM5ZGIwIHJlbGVhc2UzMC1tYWludAorNjkzODMgMDNhZGRkMTRlNmYyYzMxY2U3Zjk1YzgzMjM4YjJlNDRkNWRhNzQ5NCByZWxlYXNlMzAtbWFpbnQKKzY5Mzg0IDgxOTcxNjZhYTE5YjdkYzMzZTQ3YzkwYzM4MGU2NjJjOTY0ZjRiZWUgcmVsZWFzZTI2LW1haW50Cis2OTM4NSBhNzEzMmRiNjkwOTIxOGYwMjFlMDNmMDE0NTkyYjZiNjc1M2UxYTM1IGxlZ2FjeS10cnVuaworNjkzODYgN2FkMWFiOTkwNmVlNWFhZDhkZmY4NDhlZmU5YmUxNzIyMjdhZWQ5NCByZWxlYXNlMjYtbWFpbnQKKzY5Mzg3IGIwOTFiZjgzNDIyNmEzOWEwMjkyZGQwZDRlY2M1YWU5MmI0M2Y5NDQgcHkzaworNjkzODggNmU5M2RkNTc4Y2I4NjYwZmZlMGExOGJjMTNiMDg4ZGE3OWYwZWU3MCByZWxlYXNlMzAtbWFpbnQKKzY5Mzg5IDAxNTFjNTE0ZGY1NjllZjFiMTg1MmQ0ZmRhN2UxM2M3M2NiNDg1YWQgbGVnYWN5LXRydW5rCis2OTM5MCAyMDdkMGVhOTUzZGYxODU1MGNmZDcwZGEwMDhiYTU1MWU0ODgyOWZjIHJlbGVhc2UyNi1tYWludAorNjkzOTEgMGIzODFiNDIzY2RmNzIzOWNjMWIxODc3MTM0NTQzYjNmZGMzMWFmNSByZWxlYXNlMzAtbWFpbnQKKzY5MzkyIDY2ZWNhMTNlZGUxODNjMmUyODBkZDhhYTZiYmVkMzg4MjYzNmY5MmEgcHkzaworNjkzOTMgODExNTQ2NzcwZDIwZjYwY2Q0NGY4Mjc5MWI0NTM5ODI1NjBhMzQwMCByZWxlYXNlMzAtbWFpbnQKKzY5Mzk0IDQ4MDlhZmE4NWE5YjZiZTliYTYzMDI5MjRkZTA1YjllN2FkZmVmYmQgbGVnYWN5LXRydW5rCis2OTM5NSA3YTEzNTZkMmFlZWYzM2I4NjFiZmI2NzAyY2MxMWE4ODJlNWQwYzYyIHB5M2sKKzY5Mzk2IGFiNjBiZGM3MDcxMDZiOThlMWI1NmI3NTU4ZDllMzdiM2Q4ZGIxNWUgcHkzaworNjkzOTcgNjZkYTUyODMzMzRmMDYxYjFkMzgwNWE2ZGQ3YTIyMjMzOTRlZDIzYiBweTNrCis2OTM5OCAzODk2MTMzYzk1Y2JhOGZjZDAwYjQ4MTJkOTQ3NTgzMzg3ZWE0M2E2IHB5M2sKKzY5Mzk5IDVjZGM1ZjBjMTM0YzhlNjQ1N2Y0NDgwMTkwNmM0MjcxY2I5NjUwYTggcHkzaworNjk0MDAgMzI5NTc5MGE2NWJlN2ZjYTc5YTg5OGRiYmQ5NjkwMDUzYzgxMTU4YSBweTNrCis2OTQwMSBiYzU4YTYxZjgxN2JmOTI4ZmI4NjdhZGExMjc2YTE5YzMzNjU4YWI1IHB5M2sKKzY5NDAyIDQzZDNhOTVlZDY2MjE5NzIwMDFmZGIwM2M1ZjdlOTY0YjgyYmIxYTUgcHkzaworNjk0MDMgZWVmMzliNDM5NmZmZTQ2MWY2NTZlMzRhMTc4MWY4MWQ5NTI5YzQxZiBweTNrCis2OTQwNCAyZjFlZmZmMDY2YjM4ODJkNzAzMWMwN2UxNmM5NjU2NGM5YmY4MjFlIGxlZ2FjeS10cnVuaworNjk0MDUgMDI1MDc4ODI3YjU0MDg2YzcxNGU4YjcyZGIzYmNkZjMyZGJlOGUzNSByZWxlYXNlMjYtbWFpbnQKKzY5NDA2IDhjZDhlMjM2ODgyMjExZTRiYTg2Mzk2OThiMTE3OTBlZDExNGI0YTkgcHkzaworNjk0MDcgOTJmYTM5YjlhZjEzYzgzNjFkNTI0NzliZTI2OWY5NDZmYmViNTc0ZCBweTNrCis2OTQwOCA4NzMxN2E4ODlkYjA0NGE2NDE2NmY4ZjY0ZmEyMzlmYjY2YWMxODc3IHJlbGVhc2UzMC1tYWludAorNjk0MDkgNjliMjZlOTkwZWI4NjEwZmQwYWVmOTA1YjRhODY1MThhMGJhNmQ5YyBsZWdhY3ktdHJ1bmsKKzY5NDEwIDk5ZTI2NGZlMjM4MzBiM2M2YTIzNWVjYWQ2YjVjNDg2YjhkZmU4NzMgbGVnYWN5LXRydW5rCis2OTQxMSBjMjFmYjVlZmM2MzhkYTI1ZWY0MTg2ZWExZGJlNDU1YWEyYTk0MTMwIHB5M2sKKzY5NDEyIDkwMWNiMjA3YjFkMzE3ZTY4ZTE4MTg1Mjc3YzNlODMzM2U4YTUxNzUgcmVsZWFzZTMwLW1haW50Cis2OTQxMyA0OTRkYTJjNzE5MDJkM2I2YTI5MmY0ZTk5NTM4MDdmZGY1ZDUyODcwIGxlZ2FjeS10cnVuaworNjk0MTQgOTg5OWFmZTBmZjhjMThjZmQ5M2VjZGRmYzEyMGE4NmY4MDllMTVkMCBsZWdhY3ktdHJ1bmsKKzY5NDE1IDBhYjM2Nzk2ZGQ3OTU4OTBjOGJjNjQwNjczODJmYjUzZjQzY2Q4MzkgbGVnYWN5LXRydW5rCis2OTQxNiAzMjBjZDcxZTJjNTYyY2FkNzNhN2Q5Y2MwZGJmZWZlMDQ1NGViNTMxIHB5M2sKKzY5NDE3IDEwMGFlNmE4YmMyZGIzOTY3Y2U2OGM1M2RjOWU5ZjE4ODA0ZDBjYjMgbGVnYWN5LXRydW5rCis2OTQxOCBjY2M3MTg4ZmRkMjhmYzNkMjIwNzdjZTBiMDRhNjc1ZDlkOTQ2MWNiIHB5M2sKKzY5NDE5IDVjY2U5OWFhMWY1OGFjN2I5MjEzZTNmNTIyNTJlZDZiODQ4ZGRmNDIgbGVnYWN5LXRydW5rCis2OTQyMCA1NzA4YTFlMDE2NDU5MGU2MDk0MWM0MDNiYWIyMTM2MTJjZTdiMjZjIGxlZ2FjeS10cnVuaworNjk0MjEgMmQzNTRmNGQ3N2JjYmM2Yzc1YTc0MGQ4ZmI1MGY4Yzg3ZTc0YjZmNCBweTNrCis2OTQyMiAxNzU4ZGVkNDRiNGUwZmJiNDcxZTYxM2Y3NjkwYTJlYzZmMzE4ZTc1IHJlbGVhc2UyNi1tYWludAorNjk0MjMgZjg1ZWNkNzU2NDExNGEyMDIwMTRhOWY0NWFhNDgyODI0MjY3ZWEzYSByZWxlYXNlMzAtbWFpbnQKKzY5NDI1IDExN2UxNTJlNTEzYTY1MGNkYjE4NDI0OTVlZDNiZDdjMmJhNjI3YTggbGVnYWN5LXRydW5rCis2OTQyNiA3NGQxOTZjNTQyZjc4YWI4YTk0OWNlNmY4NzYyYzAxODJmYTM3NWNjIHB5M2sKKzY5NDI3IDFjYzYxYzc5YjljZWFmYWYyYjBlM2U3MzljNGQ2NzFmMzJmM2Q4YTIgcmVsZWFzZTI2LW1haW50Cis2OTQyOCBlOGZhMTBjNjZkMTgzZTBlOWI3YjdiNjNkYjZiOTRjNjI2NDUxMjUyIHJlbGVhc2UzMC1tYWludAorNjk0MjkgNTAxYjFmMDM1ZjI5OTBiODJjNmZiNmY4NWY2MmE4NzkwZTJhY2YwMiBweTNrCis2OTQzMSAwZWQyMmYxYWVkMDQ2Mzk0MDgwZTllYWFlYjU2ZWQ4ZTFlYTMxNjhkIHB5M2sKKzY5NDMyIDdiZmE2NDQ5MmQwMDE2MGE0ZTBmNzcyMjcyNjY3NWJiYzExY2VjODQgcmVsZWFzZTMwLW1haW50Cis2OTQzMyBjNTkzNWM3NDk3ZmI2MzFmNDFkNjU2NmQwM2RkODBmOWIyZGFlNjcwIGxlZ2FjeS10cnVuaworNjk0MzQgNGM3ZWQ0MGRiODFlYWJhZmE5MzBkNDZkNjNkZjc3MWM0ODU4NjJkNCBweTNrCis2OTQzNSAwZWI0MDVkMDFlMDgzZDNlMDY2ZTg4MWVmZTMzMWU5Y2MwODc1ZjkzIGxlZ2FjeS10cnVuaworNjk0MzYgYmJiODM1MGRkYmQyNTlkMTZmYzdlYmEwNjlhN2U0ODUwYWEwZGEwNyBsZWdhY3ktdHJ1bmsKKzY5NDM3IDU4NDlhNGY5MDRhMmEwMzI1OGZkOGNiZmMyZWQ0YjRiZDQzNGI4MWMgcmVsZWFzZTI2LW1haW50Cis2OTQzOCA5NDVjYjk1YjM1YmY1NWNhYjVlYmIwNGE4ZmU5ZjZhMjM0NThlZTA0IHB5M2sKKzY5NDM5IDQzMTNiNGQ0YmRjNzNkMTZiZmU1OTkyODNmMjE0YjRiN2YzMmQ5NjQgcmVsZWFzZTMwLW1haW50Cis2OTQ0MCAyMjRkMGVmY2JmNmM5NDhkMjcxMmM5Yzk0MGYyZWI2YTM0MDRiYjI1IHB5M2sKKzY5NDQxIGZkNzRiMGMwNjkyN2M5MDQ5MjMyMjIxYjdlNzk3OWFjNjQwZDNkNjcgcmVsZWFzZTMwLW1haW50Cis2OTQ0MiBjMzMyZjdiNDU2NDcyM2NhMDMxYzhjNGUzNGEwZTdmY2JiNTA2NzA3IGxlZ2FjeS10cnVuaworNjk0NDMgOTk0ZmU0ZGY0YWY3MGY1N2EyMDhjMTgxODUwMjMyNzU0NDI4NDU5OCBsZWdhY3ktdHJ1bmsKKzY5NDQ0IDY1NTBkYjQ5MmYyODhhNzcyY2E2YjI1OTQ2ZTMyMTdhYmJkY2ZjMjEgcHkzaworNjk0NDcgZTQ5MDEzZjFkODMxNDNiMWEyYjIxNDFhZjQ2ZWQxN2VhZjU5ZTczNiBsZWdhY3ktdHJ1bmsKKzY5NDQ4IGMxN2Y5MjgxYTg1NmIxZGE5OTUxZTRhYjQ4NWZhODI4MTI0OTU0MjYgcmVsZWFzZTI2LW1haW50Cis2OTQ0OSA0ZWExMjI5NzM5MTQzZTg1MjYxZGM3MTUyMDcyMWFkOTExMmRiMTc4IHJlbGVhc2UyNi1tYWludAorNjk0NTAgMzZiYzhkMGUwMWJmNzM1MTE0NjY0MjMxNTk3Zjg2YzQ2N2Q3MzhjNiBpby1jCis2OTQ1MSA4Y2ZhMTA4ZTdiZGMzYjljNTQwYWM0NjkwZjljYmEwZjI4MDg2NDVkIHB5M2sKKzY5NDUyIGRhMDA3MGNmNDY1NDRmMmQ4ZmRlY2M2Yzc0MDlmMTY2MDkyZDRhNDEgcmVsZWFzZTMwLW1haW50Cis2OTQ1OSBlNDIzZDA3ZjA4YWYwYTdjNTNhMWE5NzJiOGE2ZTQ0M2QwNjRhZmUwIGxlZ2FjeS10cnVuaworNjk0NjAgZGNmZmM3MjM4MWU3MzRmM2RhN2U0ZjEzOWVjNzllMjg5ZDcyMjJjMiBsZWdhY3ktdHJ1bmsKKzY5NDYxIDdiYmRjZTVjOTI1MDUyNjE1MzZmMTFjYzc5MTAxYmUyZWUxNjMyZGMgbGVnYWN5LXRydW5rCis2OTQ2MiBlNDU1MjUxOTUzMTdkMzk5NGViMmI2NjEzY2Q4NmRjZGFkZGNiODRhIHJlbGVhc2UyNi1tYWludAorNjk0NjMgNDcyNDVhZTMyMTFiYTY5ZWQ0ZGZkYzllN2MxNzBmYzI3NzdkNWEyYiBweTNrCis2OTQ2NCA2NjNjZTc0ZDUxNzU3ZDQ2MzViMTQ4ZTY0OWVjNDdhNzFkNGFkNzI4IHJlbGVhc2UzMC1tYWludAorNjk0NjUgZjlmMmVkNzliMDBmYzJiZjE1ODMwMmY2Y2MyNDk1MDg1MDQ1MjEwMSBweTNrCis2OTQ2NiAxNTRlN2M0NzRhYWQwNDdjOWJkYzVhY2FmOWU1NWRkZmU3NWQ0MWNiIGxlZ2FjeS10cnVuaworNjk0NjcgNjc0NWJkYWE5YjQ5YjU5MzZkZGQ4NDMwMTA4YWEyZGQ3MDEyOGVmNCBsZWdhY3ktdHJ1bmsKKzY5NDY5IGFjNjI0MzJmYjM0MWQ3ZWNmZDA5N2QyYWZlOWViMWQ2ZGIwNDg0OGQgcmVsZWFzZTI2LW1haW50Cis2OTQ3MCBiZGRlNDRhZjk3NDQwNmYzNGU2YjE1MGQyZDExMDhhNjQxM2E3MmRhIGxlZ2FjeS10cnVuaworNjk0NzEgMWE3ZGQ5ZDJlN2VjM2UxMDlkMTU0NTNkM2E1NGQ2NDI0ZDhlYThjNyBweTNrCis2OTQ3MiA2MmExZWQ2ZTYzNmFjMWU1NmEwNTNjZjAyOGNmMDllNTViZjYzNzg4IHJlbGVhc2UzMC1tYWludAorNjk0NzMgZmJiYmMyNTliNWNlODhkYTI5MjMwYzBlZWM5NTAzNjk1OTdjN2U4MCBsZWdhY3ktdHJ1bmsKKzY5NDc0IGQ3YzRkMDcxZGFmYWYxOWFjNWMyYjMxZjVhNjMzNDliNjlkNjM2NjMgbGVnYWN5LXRydW5rCis2OTQ3NSAyOTg4MDZmNjRkZmEzNjQ2ZDkzMTA1NmJlMDVkMjdhMjc3NDg4OTNhIHB5M2sKKzY5NDc2IDRlN2JhNjdjZmEwNTM3MzlmN2M2ZTAyYzkxNmU2NWUwOGFiMzY3MzkgcHkzaworNjk0NzcgODcyMWMyMTNiNmY0NGQwZTQ5NzM3MGU3ZDRmNzJlMjI0MjVjYjQyYiBweTNrCis2OTQ3OCA4NzgyMGZjNjVkN2M5ODk5MDdkZDVkYmQzZTQzZjk2ZDBmOTc3NjI3IHJlbGVhc2UzMC1tYWludAorNjk0NzkgYTkwYzkyOThkYmI0ODhjOWNjMGFhMzJkY2RlODg0YmEwNTM4N2JmYiByZWxlYXNlMjYtbWFpbnQKKzY5NDgwIGJlZWY4ODE4YTY2YzIxYmU1ODEyNzhhYzYxM2FmMTIxNGY4MWVlMmIgbGVnYWN5LXRydW5rCis2OTQ4MSA1ODRjNDdkOGM5M2YxYTc1NGZhY2QyNzZiMzlhMTA4MDcxZDJlMDRhIGxlZ2FjeS10cnVuaworNjk0ODIgNWU3ZDdmZDFkYTVhN2ZhZWI1ZTRiZWFjMmFiYWVmMTY0ZjI2YTAwOCBweTNrCis2OTQ4MyBhYzllZjc0MzFjOGYxMzRjMjA3MmJkNWZmZTc0NWM5MTc4ZWQwMjI1IHB5M2sKKzY5NDg0IGU3NTlkYTkzZGY2NDdmMjUyZmM0NWMyMTE0MjY1NDk3ZGE2MDJmYzkgcHkzaworNjk0ODUgYzYxZjI0ZmYwNTVlNDBkMTMzM2NjOTM4YjhjMGFjN2IwNGRlNGQyMCBsZWdhY3ktdHJ1bmsKKzY5NDg2IDEzMDdhNjZhMzhmOGQ0ODdmMTY0YzJhYTc3ZmYyNmI5YWQ1OTAyMmEgcmVsZWFzZTI2LW1haW50Cis2OTQ4NyA4YTI4ZDk5Zjc4NGQ3N2FjNDFmYzcxZTNiOGEyYTRiOWUzNTRjNmExIHB5M2sKKzY5NDg4IDM0MjNmNjQ3YjU0YTY1YzJjYzFjZGM4NzgwMjk1NDNlNmFhYjdlNjMgcmVsZWFzZTMwLW1haW50Cis2OTQ4OSBkYWI4MDYzNTAzNmU4ODIyODI3NzU1YjdhMmMxZmQ2MzJlMzA4ZjM2IGxlZ2FjeS10cnVuaworNjk0OTAgMmFlNzcwZWU2Mjg0MTcwMThjNDcwOGNjYWM4Y2NhNjQ2MmQyMzY3ZCBsZWdhY3ktdHJ1bmsKKzY5NDkxIDM4NjQyMzg1YjFlMGFmMTQzMGE4MDFjZWMxMGY3MzVlYTgzYTRjOWEgcHkzaworNjk0OTIgNjMxNmYzNzZiODE0YmIxZGUzZTEyMmUwZTFlYWQ0MWMxMTAzYmNkNiByZWxlYXNlMzAtbWFpbnQKKzY5NDkzIGJkYjFjYTlhYmNlMzYyZDg4Zjg5YmIxNTRmODRiZjI5YWJkZTllMWQgcmVsZWFzZTI2LW1haW50Cis2OTQ5NCAxZmVjMGJiNTA5YTJiNWU0ODJiZDg3MTQxODJlYjY1YWY4MWU4MWJiIGxlZ2FjeS10cnVuaworNjk0OTUgMDQxNTQxN2NmZDQ4M2I5OWZkZDQwYmYxNjk2NDRiNjVmMzgzYjZkNSBsZWdhY3ktdHJ1bmsKKzY5NDk2IGYwYzc0MDJjYzAwMDY5M2E3Y2QyMzQ5NjM5M2JmNWYyZWY0YTk4YWUgcmVsZWFzZTI2LW1haW50Cis2OTQ5NyAwOGUwZjAzYmE4MTcyOGMxZThjNWUzZGEyZTNkMjQ0Y2NlNjI0ZTk1IHB5M2sKKzY5NDk4IDIwNjA5ZmMxM2ExMzU3NTRiYmM4MTE0OTdkNGEzZjM3ZGVmYjI2NDYgbGVnYWN5LXRydW5rCis2OTQ5OSBhMDA3NDU0ODAxMjBkZjkwNzc3MDAxYjQ3NWQ4ZGQ0YTZkMGMwZGQyIHB5M2sKKzY5NTAwIDA1OGRjYTczZWUzMDI5NTFmZTBmZDJhMTg4OWJhZmQ4NDA2YzI5NTAgbGVnYWN5LXRydW5rCis2OTUwMSA5NGQ5ZDUyNTQwMWMxNjNlZmRlMDg5YzY1ZWM0Y2Y3Mjg1ODIzMTkwIHB5M2sKKzY5NTAyIDdkNmNkZjMzNWE1NzAyOTBhYjA4YzMyMGMyNGYxODk1ODg3NGI4YzMgcmVsZWFzZTI2LW1haW50Cis2OTUwMyBmZmI5Y2Y5NGM5ZjEzOTlmYjY4MmEyMmMzZWQ3ZmYwOTA2OWM4ZmUxIHJlbGVhc2UzMC1tYWludAorNjk1MDQgZjM1OGJhM2QxZTUzNjM3MjdkY2Y1ZTI1NzYxMjA4ZjYyZTFlMzk4NyByZWxlYXNlMzAtbWFpbnQKKzY5NTA1IDk1YmI3NzM5ZTM4NmNiYjg5MjU1YjNjMTRhOWZmYzM5NjgxZjg3ZjIgbGVnYWN5LXRydW5rCis2OTUwNiBkM2U4OGY3NzhjZGMxNjVhZGU3N2RhYzA2MTk1ZDVjNmJlODc4ZDJhIHJlbGVhc2UyNi1tYWludAorNjk1MDcgNmRiZTNmOWEwNDBjYjhlNGU0ZDYwMzUwNzlhM2RmNWRlMGJhMTkzMSBweTNrCis2OTUwOCA5NzJlODYxN2RmZGE2ZDg1YTgyNzI3YTc2NDFmMDEzMmQxZWNlYzJhIHJlbGVhc2UzMC1tYWludAorNjk1MDkgODM1MTViZDI4NjI2ZDQyOTVmY2EzM2ZmMjQwMzBlMDg4ZGU0NzgzNCBsZWdhY3ktdHJ1bmsKKzY5NTEwIDcyZWU0MmNjOTUzMGYzZjZmNmZkZGNjMGMxZTRlMDNlZWFhZWYxNjEgcmVsZWFzZTI2LW1haW50Cis2OTUxMSA1MTk2ZWFmY2JkNzJjNjJlZmIyMTNiNGJmYjNmMTYxY2ZmNDg4ZWM3IHJlbGVhc2UzMC1tYWludAorNjk1MTIgMjhiZjQ1N2ZiMzRkMGI5YzI3MjVkZDMxZmNjZGU4M2QyN2RmYzQwNyBweTNrCis2OTUxMyBhZjQ2OWRjMTVmYTdiYmQ5NGRjMTVmNzdjODZlYWMzYTU1OTM3ZDE2IHB5M2sKKzY5NTE0IDdiYjNkNTE1YjY3N2VhZjJkZmQyYmY2MjE3NTAwY2UyYWYwZGU1ZDggcmVsZWFzZTMwLW1haW50Cis2OTUxNSA5YzBhNGZiYjU2YjkwYWQzNzQzNzQxMDQwYWQwMGNkODUxMDQwOGZmIHB5M2sKKzY5NTE2IGRiZGQ5NGNkMDdmYjQ2YWMwNTI1MmI2NTFhYmMxOWRiZTMzMjJmNDQgbGVnYWN5LXRydW5rCis2OTUxNyA3ZDg5NzA2NGE2ZWZiNmQ2NzIzZjllOTViMjQ1MGI2M2ZjZTUxYjViIHB5M2sKKzY5NTE4IDRkOWI1MmZjYjVkZjlkOTlkMTQyZDQ0NTFjOTk5YzI5NDBlZjY5NDAgcmVsZWFzZTMwLW1haW50Cis2OTUxOSBlZGNmOTk2ZjA3ZTk4ZmZhMTg2NDZiYzkxMDJkZDM0M2VlNzEzZTI4IGxlZ2FjeS10cnVuaworNjk1MjAgMjlhOWU4NWYzMGJmN2Y4NzE4NTljZDg1M2RlN2I2MDM0ODEzOTlkYiBsZWdhY3ktdHJ1bmsKKzY5NTIxIGQ2OTc2OWI0ZmQyMGE0NTgyMjQ5NzcyMzU0NGU5Yjg5NmUyNzFiYjMgbGVnYWN5LXRydW5rCis2OTUyMiBjYmQ1M2ZmNDk1NTcwYjhhNjVhMzhhNTc1ODZkMGU4MzIyN2Q0ZDk4IGxlZ2FjeS10cnVuaworNjk1MjMgYjBkYjEwOTA4OWM5NjhlZGI2ODdiNDZiODNlNDQ1YTlkYWI4YWE3NCBweTNrCis2OTUyNCAyYWMwMmRhZWYyZWUzOGU5OGYxYTgwOTgyOThiZjgzNzQwNDdkMzk1IHB5M2sKKzY5NTI1IDQzNTg1ZGJmNjFkNTdhMTg5ZTg3MzBjYzRkMWI1ZWQxY2E2ZjBjNTMgbGVnYWN5LXRydW5rCis2OTUyNiBjYjgxOTBhMWJmYWI5YzUzOWY4ZWZjOTMyMzhmMjk2MGQwYWE2YzI4IHB5M2sKKzY5NTI3IDJiZjVlZDY3MWQwMmMxMTYyYjY4ZDZmZGJjNTljYTczYmQxODQ1OWYgcmVsZWFzZTI2LW1haW50Cis2OTUyOCBkZjY5YmNjZGQzNjNiZjI3NDIwNDFlYjU5NGUwN2E2NTQ2ZjI3YjkwIGxlZ2FjeS10cnVuaworNjk1MjkgN2QyOWM2ZThiYTA1NTgwNzUxMzlkZjhhOGRmMmRiMDVhY2Q1ZDI5ZCBweTNrCis2OTUzMCAwOTllOTYwNjc2YjlmMDY0ZDE5ZjA0NjFhODQxNTNiMzlmMGQyYmMzIGxlZ2FjeS10cnVuaworNjk1MzEgMWFlMzRhNDhiNzM5MjAwOGM3N2RlZWM0ODlkODMzMTJlMDFhOTYwNiBweTNrCis2OTUzMiA5Njc3ZGQwYjA5ZTZiNjI3ZjdhNDY3ODAwMmY3OTY3Y2EzZTU2MGVjIHB5M2sKKzY5NTMzIDdmYThiN2EyZjUwYTIxNWU0NzYxNmYyZGQ4NWNkN2E0MTY4YzJkNWUgcmVsZWFzZTMwLW1haW50Cis2OTUzNCAyMTc0MjVlYTI3NjljMjgxNTVjMDhmNWVmMzAwYzAyYWI0M2Y3N2JmIHB5M2sKKzY5NTM1IDkyZGRiYTU3NzlmOTQ5NDhhYjM0NDRiMTRiODIxODU2MTZjNTdiODAgcmVsZWFzZTMwLW1haW50Cis2OTUzNiA4NjEwMDhkZWVkOTdhM2ZkODc4YzEzZWJiOTcxYjcwNWU0NmRkNWRjIHB5M2sKKzY5NTM3IDViNTAxMTk2ZmMzODNmYzMyM2FmNDBmZjgwODZlZDljNTcyZjliZjYgcmVsZWFzZTMwLW1haW50Cis2OTUzOCA2NTlkODg5MDRmNWZiMzNlNzA2M2U4MWUxN2Y5ODM3NzBmYmE1MDVjIHB5M2sKKzY5NTM5IDA4Y2M1NzRhZjRmNjA5ZWMyMjc0OWM5ZDJjYjI5NjI3NWUyNTIxOTIgcmVsZWFzZTMwLW1haW50Cis2OTU0MCAxODk2OTZjNDZjMGU3ZjRmYTI1MTAxZjQ2NzFlNDdjZDIzNzQzMDEwIHB5M2sKKzY5NTQxIGNhYjRlMmU0ODRhMmJlNjA4YWUyYTM2YzdiOWExZDNiYmVhYTgzZWUgcmVsZWFzZTMwLW1haW50Cis2OTU0MiA4M2JkMmQxNzRjYzhkMDJlNzI1ZjA3MTZmYjUzNDFmMTNmYTIzZjE4IHB5M2sKKzY5NTQzIDI3YzU4OWYwOWEyMTc0ZmY5MmM2YWM1NjU3Y2FjNzQyNjM4OGUyYTYgcmVsZWFzZTMwLW1haW50Cis2OTU0NCA5NzFiYjQ3ZmY3MGI2MTEyMTkyMzEwZmE1YjhlZWUzYWY5NDQzZTdhIHB5M2sKKzY5NTQ1IGFjZGIzMjM0MWQ4N2EzMTc5NzlmYzY5MzgyOTgwN2U2OWEzYzYwN2UgcmVsZWFzZTMwLW1haW50Cis2OTU0NiBhMGQ4YzYxNmYzNDA1Y2I5NDEyYTkyZjk3N2MyMzgyZTFmNjczNWFiIGxlZ2FjeS10cnVuaworNjk1NDcgYzA5YjUwMTUxNmJkMGNjNzYyMGFmYzIwY2NmNjQ4ZTU3MTA3ZDVkOSBweTNrCis2OTU0OCA1ZDI4NDA1MDgwZWRmZjM5MmM3NTQyM2E1ZmJkNjNlMTg2ZDQ4NDM0IHJlbGVhc2UzMC1tYWludAorNjk1NDkgMzE2NDVlYWQ0YzM1YmI0M2JlZTJjMWFkMGJhOTZjZTMwNzAxMjk0YyByZWxlYXNlMjYtbWFpbnQKKzY5NTUwIDlhOTMyZjkyZjM5NDk5N2FiMzVkOGJmOTJmZmM5MDA0ZDZmNTdmMzQgcmVsZWFzZTMwLW1haW50Cis2OTU1MSA2NjQxZDgyOGQ3NjJkNjUxYzVmOWNhMmJiYTE3MjhmZGRjZTVkNTZmIGxlZ2FjeS10cnVuaworNjk1NTIgMTMzMjhmMTFhZDI5NTY2MWI4OTQ5NmY1YWRjZDUxYmVlMzU3OGRjYSByZWxlYXNlMjYtbWFpbnQKKzY5NTUzIDNlZjVhMGM1ZTZiNTdmZDk1OTNjYzU4YjNiNmE1MGFjMGFiYzA0ZmEgcHkzaworNjk1NTQgZTM3NTA3MWY5NTBlYzc1N2VjOTk5ZGY3ZGM5NTVjMWRjMjY5MzRhNSByZWxlYXNlMzAtbWFpbnQKKzY5NTU1IGNlMjlmYWVkN2Y2OWUyMGQzYmMxZTJhOTg0MTdlNzY3MDc1ZWJjYTcgcmVsZWFzZTMwLW1haW50Cis2OTU1NiBlNTAyZTJiZjM1ZTg2ZGJmYTNiNTg4ZWYyODg4ZWJlYWEwMDM3ZTcwIHJlbGVhc2UzMC1tYWludAorNjk1NTcgY2Q0MmU4NWNhZmU3ZWQ2YzVjMmRiNjU4MjY3NmMxNWE2OGU5YzdiZiByZWxlYXNlMzAtbWFpbnQKKzY5NTU4IDA3ZjllMDA0OGIwYmRkZjEyODZhOGYxYWM4OGMyYjkzMmNmNmM1MGQgcmVsZWFzZTMwLW1haW50Cis2OTU1OSBlMmVhMGY4M2YwMzk0MmJkOGQxM2Y4ZDRhMjliMzU3Yzg0ZjVjNGM1IHB5M2sKKzY5NTYwIDY0OGUwN2RkMDgyNThmNjBmMGE1OTM1NTY2ZmMxYzRiZGU0OTE1MDYgcHkzaworNjk1NjEgMWU3YWMxNGU0OTM4N2ViNjQ0MjExYzA1NzczZjFiNzMwODhiMDNjYSBsZWdhY3ktdHJ1bmsKKzY5NTYyIGU2YThhMTY0MjMzYTQzYjU5ZDQ1NTk1MzdiMWI5ZTgwODE0ZjgzZDggbGVnYWN5LXRydW5rCis2OTU2MyA4ZDM2YWIwOTNkNDU2YzI0ZDE4ZWRhM2JjZDAzMmVjNTNmMmU5YTNlIHJlbGVhc2UyNi1tYWludAorNjk1NjQgNDdhNzlkN2VlZWRjOTA2ZGZmMzBhNDA3MDhiYzRkOWNmZjFhMWVmYyByZWxlYXNlMjYtbWFpbnQKKzY5NTY1IDNiZDRhZTI2YjM2NDk3ZWY4YTliYTA0M2JjYzkxOWNiNzFlMzYzMzIgcHkzaworNjk1NjYgYmQyYjc3OWY1ZjMxMjM0Mjc3NmMwOGYwMTkxMDUwN2I4NDM0NWU0MSBsZWdhY3ktdHJ1bmsKKzY5NTY3IDIxMDI3NzRlN2EyZDkzYTAzYjc4MTU1OGRhYmM0ODUxNjA0NzAzZTggcmVsZWFzZTI2LW1haW50Cis2OTU2OCBiOGYxMGM2ZmFkNTI4NTQxNDhmMmFmNzVjZjRiZWNjNGEyNjU2YzZjIHB5M2sKKzY5NTY5IDcyZjZmMTcwMWVlMWFhNGIwMzlmY2MxM2QxNjdkODE5OWZmODMxNjMgcmVsZWFzZTMwLW1haW50Cis2OTU3MCA3ZjRhMTE1YWFlNmQ5NTRkYTBiNDU4ZDc0Y2JiNzQ1M2U1YmUzNWYwIGxlZ2FjeS10cnVuaworNjk1NzEgYTQxZThmZjY1MThjMjAzNTlkYmRhMmY0MTIyZDc5ZmYwOTk1MTAxMyBweTNrCis2OTU3MiA1Mjg1MWI5ZDk3NTkwMTFkZWY4NTk5NWU0Njg0NjlhMTQ5MDA4MTc3IHB5M2sKKzY5NTczIDA5NDZjZmQ2ODU3OTk5OTg3YTZiMzhhNzVmMGY2NTRhMjZjNjNhY2MgbGVnYWN5LXRydW5rCis2OTU3NCA2OGI4YWY0OTRiZTI4MGZlMGNiNDU3NjBlZDc4OGQwNjI2OGNhNWNhIHB5M2sKKzY5NTc1IGNhMWQ5OWQ5ZDY5MWVkZGIzNGY2ZGVlNTcxZWE5MDY1NmFlY2Q3OTQgcHkzaworNjk1NzYgYzAxNGEzYjFhZDMxNTViMTJlM2ExZGRmNmViNWFiNzUxNzE5YmNkYyBsZWdhY3ktdHJ1bmsKKzY5NTc3IGE4M2YxMGVkYjZmZjE1OTI4YWZmNjNmYzkzY2Q3YTUyZDVjNDlkYzQgcHkzaworNjk1NzggYmY0MTljZmQ3YjBhYjk0YjA4OThmMWQ4OTdiM2ViOTFiMzY0MmY3MCBsZWdhY3ktdHJ1bmsKKzY5NTc5IDUxMmM1YTVkZTAwYjgwYjI4OTYwMDA0MTI2NDYyM2RlYjVjODk0YmYgbGVnYWN5LXRydW5rCis2OTU4MCA2OWZkZjg4OGYxMTNhNzZjY2IzNGQ2NzJiNTlmZGU1NTMxZjlkYjYzIGxlZ2FjeS10cnVuaworNjk1ODEgZWMzMGIxZmNjMWIzZGZmODdiYzczMzdjZDU3Zjk0ZWQ4Mzg5YjZmMSBweTNrCis2OTU4MiA1YTcyZWVkMWViMWE3OTVmOTlkMzlmZTk2ZDM5OWQ0MWE2Y2MxNTM0IGxlZ2FjeS10cnVuaworNjk1ODMgMDhkZjRmNTU4M2ZmNTJjMjg0YTdiY2RhMWQxODYyYTEzYjFmYWJiOSBsZWdhY3ktdHJ1bmsKKzY5NTg0IGZmMDk2ZDZhOTIyMmJjYjkyM2QwYmRkZDBiYzRmMTlhYWZiMjEzY2UgcHkzaworNjk1ODUgYzZmZjQ3YjNlYjk5ZmJkMmIyNDJiMDZjYmViNjc0YmNiMzZjYzk4MiBsZWdhY3ktdHJ1bmsKKzY5NTg2IGE5M2IxOWEyZjhkOTM0OTE4YTlkNjU4MGZjZjc0MGE2M2JhYmQ0NmQgcmVsZWFzZTI2LW1haW50Cis2OTU4NyA0MjgzOGI0ZDZhYTFiNzY0MmE1MDMyNGM5NWU1Mjk4M2MwN2EwNWE4IHB5M2sKKzY5NTg4IGFlMTZlMmI4NmZlYjUyMjNjYTcwOGFkM2ZjYTU3MjUxOGZmZGY5MjAgcmVsZWFzZTMwLW1haW50Cis2OTU4OSAwMmMzZWIxY2EwZDVmMGQ0ZWNmMDcyZDE3YjJmMzU3ZjRjMmJhOTcxIGxlZ2FjeS10cnVuaworNjk1OTEgMDU5MGMwYjc2ZTY0NjFlNWJjYTY2MzY4YzJiZjczYWY3MWE3N2JjYyBsZWdhY3ktdHJ1bmsKKzY5NTkyIDg3YWI2YmMyMTM0NWJhZDA4NTY2MGE4ZDBjY2ExOGM0YmUyOTQ1NDYgcHkzaworNjk1OTMgZGZjZjY5MGE2N2M4ZTkwOTk1NzViNTk5NzYwOWE3NzhiMDZmMmI4NSBsZWdhY3ktdHJ1bmsKKzY5NTk0IGQzNjYzZjA5ZDc2NDVhM2MzNjBlZGFkZjcwODE3NzEyNjNhNzdmYTEgbGVnYWN5LXRydW5rCis2OTU5NSA1MTIwNzBkYTc0MzNkZDM3OGJlMjJmZGNiZjhjZmNkMmU5ODllZjQ5IHJlbGVhc2UyNi1tYWludAorNjk1OTYgNjEzNWZmNzI0M2RkNzk2ZTIzY2MzNTVhNWJjYTg4MTI1MWIxNDMxNyBweTNrCis2OTU5NyA4Y2I4ZWNjZDY2MzM5Yzk2M2VhNjQ2Y2U2ZWYxZTgxNjU4MTA0YWZkIHJlbGVhc2UzMC1tYWludAorNjk1OTggOGRjMjhhMTI2YjJjODAxZWVhMDBjZjM4YzdjMDFmODM2ZmU3YmUyZSBsZWdhY3ktdHJ1bmsKKzY5NTk5IDljNzU4MDZiZWM2NGFmOTFlNmU4YWI5NjJkMzc2YmVkNGQ3OTZkZmMgcmVsZWFzZTI2LW1haW50Cis2OTYwMCA0MGVkNTc4M2UyNGEyZGE1ZjU0YTA1NDgxZjJkNjgxMDAyNDBmMmEyIHB5M2sKKzY5NjAxIDYxNjEzOGVlZjIyNGJjZDA2YzgzMzQ4YTI5YjViNjgwY2VhYTIyYTIgcmVsZWFzZTMwLW1haW50Cis2OTYwMiBlNWNhMGJkYjM5MGZkNzgxNTMyZjIxN2U0YzIwN2JjNTFhZDQzYTUyIGxlZ2FjeS10cnVuaworNjk2MDMgZTkxYjA0ZGI2ZDE5NjgwYjJlYmU2ODVlNDEwYTZmZTRiZDJjMjkyMSBweTNrCis2OTYwNCBjNTYwN2NmNzY4MDEyNzVkNTRiMDQ2ODQzZDA0YzdlNDZjYzlmNDZlIGxlZ2FjeS10cnVuaworNjk2MDYgOWNjNzY3NThlZTA5YzA3NTEzM2NiNGNiNDk4NjRiYjI2MzUzODQwMCByZWxlYXNlMzAtbWFpbnQKKzY5NjA3IDJhMjYzZDY2ZDY1OTc4MDAxNWYxZTM1M2JkMTYwMTM3ZDk3NzJlZTggcHkzaworNjk2MDggZjQzZjg2N2Q1ZWI2MGE0ZDMyM2UzYzJlYWNkMGZmMDdhYzJiNmY0YiByZWxlYXNlMzAtbWFpbnQKKzY5NjA5IGU1NTIyODc1Yjk4YzI2YTYyNWY3NTUzOTBjNmY3MjNkNjNmMzAwMWYgbGVnYWN5LXRydW5rCis2OTYxMCA5NDk4ZTdkNWIyNjU5OWZlNmFmNmUyZWQ3MDcxZTQ5MjkwYWUyYjA0IGxlZ2FjeS10cnVuaworNjk2MTEgNmE3YTBlMWUyN2JjMDQ0OGRlMzg5YTE4ZTFhNzczMTEwOGRkYTJlYiByZWxlYXNlMjYtbWFpbnQKKzY5NjEyIDcxYTY4ZGNjYTA0NGUzMmVmZWRlMGMyYTBhMThjZmRmZWY1ZDRhZjAgcmVsZWFzZTI2LW1haW50Cis2OTYxMyBlMTNlZDQ4NDQyMmU4MTU1ZmIyNjViOWNjOGZiMGY5ZDdjZjBmNzZmIHB5M2sKKzY5NjE0IGJiOTllZGEzOGMxYjgyZWViYzdhMmNjMjQ2YTlmOTAwZDI1OTJmYmYgcHkzaworNjk2MTUgM2NlYTQwNTFkY2RiNmMwZTZjYjRlM2VlN2JkZjFhN2M4YTg4ZjUxMSByZWxlYXNlMzAtbWFpbnQKKzY5NjE3IGQ0MDgzOGM1YTQyMDZmZTliM2Q1NzhiOGJkYmM0NmExYjUzNTY0N2UgbGVnYWN5LXRydW5rCis2OTYxOCA5NjkzNzhlYTRjNzc3MWM3ZjUxMTMxZGNhMjhmZmIwNTEzYjM4MTgxIHB5M2sKKzY5NjE5IDlkN2ExMzFkY2I3ODk1YTAyZjBjMzc2OTc0NTlmZGFiYzdjNDNhMjkgbGVnYWN5LXRydW5rCis2OTYyMCA1NTY5OTBiYjRmMGFjYWM3ZGM5OWVmYzk4Nzk0ZmVhYzAzM2VmMjUzIGxlZ2FjeS10cnVuaworNjk2MjEgMTVkOGIyZGIyYmU0NTdhNDY2ZDcxOWQ2MTVhN2FhMjY3MjhmMGU0NiByZWxlYXNlMjYtbWFpbnQKKzY5NjI1IGY2N2I0OGExNTEzZWJiYWFmNmI3YzZhMTU2NjYwOWRkMDQ5NzRhZDYgaW8tYworNjk2MjYgOGFlNWIwYzVjMjRkMmFlN2UyYWE1YjgzNTNjMDg1NTdjNjQ2ZTQxZSBpby1jCis2OTYyNyBjMTdjZDliZWMzZDg1MGU0MDc5MzljMzI4NmQwMmE0OWU4NjIyNzE5IGlvLWMKKzY5NjI4IGFkZTQ1NTExYjU2NWIxZWJjOTUzNjNmM2M5NjA5ZDQ2ZWM5NmEwMDQgaW8tYworNjk2MjkgNzczMDZhZDkzMGEzMzRlYmMzZTdlZTRlNzg0Yzc3YzE0NjM5OWE1ZCBpby1jCis2OTYzMCA1ZmQzYWQ1NDk5MTdjYjQzOTI2ZDk3YTFhNzYzMTcyNTMyODRiMTIzIHB5M2sKKzY5NjMxIGVmMmNiYTgwYzk3NWJiNWQ5OTExYzliOWJiZDU4MTk4NmQ2MTQxN2MgcHkzaworNjk2MzMgM2Y3ZTA3M2RhZDdiNWY0N2QxM2E1Y2UwMWViMGE4NmNiYjc0YTZkNCBsZWdhY3ktdHJ1bmsKKzY5NjM0IGI1NWEzYjVkNzAwODgyOTlkYTA5YzljY2VmNDJkZjFiYWY3OThkMWUgbGVnYWN5LXRydW5rCis2OTYzNSBiOGM0NjY0YTY1MzkxNmUyMTY0OTdiY2NhNmFkNDkwYTQxZTdmMTMxIHB5M2sKKzY5NjM2IDVmMjI1N2I3N2FiMDk5MWRkODA3YjI5YTY3ZmViOTc0YmFhNDRmMGUgaW8tYworNjk2MzcgNzljMjMxMWYzM2NjMWUyZmExZGVkNDllY2MyMDhlOTdhM2Q1NzIzZCBweTNrCis2OTYzOCAzZjQ3NTc0NWEzYzMwNTg5ODllZGJmNmE1Y2EyNTI2OWJjMThmYWI0IGlvLWMKKzY5NjM5IGFmN2Q3ODBmN2EwYmU0YmEwNGJjN2Y1NTM4NGFkNjU2NTkwYTYyYTQgbGVnYWN5LXRydW5rCis2OTY0MCA2NWUwNzU1ZTliYmM5ZDdmZDQwMDA5NDBmY2E0ZjBlZWIxYTZmYjA5IHB5M2sKKzY5NjQxIGFhZGVmMjE4OGNlYjZmYjZiYTA0ZWI5NTc0YWQ3N2ZkMDg4ZjcyZDMgaW8tYworNjk2NDIgMmM0YTMzMWNkMzJhOGQ3N2IzZDZhMmM2NDJmMTRjMTRkYjMwZDA0OSBpby1jCis2OTY0MyA5NDg3OTRhYzVhNTJiZTI3MGZjYWQ0OGFkNGJiZWIwNjhkMjQyYjJkIHB5M2sKKzY5NjQ0IDhjNmQ2ODhlNGYxNjEwOWJjNWNiYTY5OTdjNTA5OTkwMDE1MjYxMzYgaW8tYworNjk2NDUgOTVkNzc1ZDlhYjQ3Yzc3ZWRkYjhiMTA5MTM5Yjc1NmU0MTFhYjE3NyBpby1jCis2OTY0NiA0ZmUyODg1ZDA2NTQ5M2I1MWM1MGViNWVlMDViMDNkZDE3NjE3Y2Q1IGlvLWMKKzY5NjQ3IDQwYzk1NDFlNjFmYzg5NjVmZjE5MDJmY2JjZmMxNzg4OGRiM2Q2MmQgaW8tYworNjk2NDggOThkZDIwNTdlMDg4YmI0ZjIyMGViNGNkZGUzNThjZDAyYTEwY2M5ZCBpby1jCis2OTY0OSA5MWEzY2NlNjhlOWI0NjEwZWVjMDliNTdmY2RhMGJkNjJiNGZkNmUyIGlvLWMKKzY5NjUwIGQ5YzFkOWIxMzM3NDgzMGRhOWIxNzkxODFiNjBkZGFlMDNiODEzMDMgaW8tYworNjk2NTEgZGIzY2FlMTI4ZDkxZWFlNWU0ZjE4YzFjZWIxYTNmYjVhNTZhZWUzZSBpby1jCis2OTY1MiAxOTIwMTQ4Nzc5ZDQ0NmJiOGU5NmFjNDg5NjI3M2ZlYWI4M2MyNmUwIGlvLWMKKzY5NjUzIDlmNTM5ZDhjZDkwNDJhM2MzOTk5NmFjYTUzYTBiNzM2ZGE5OWVmMDQgaW8tYworNjk2NTQgMjhjYTFkZjU0NWUyMzY2NzNlNWZhNTYzN2U2YTM3NWZjY2UxZWEzYiBpby1jCis2OTY1NiAyNDA2YzdkZDk4ODQxMDg2NTgyZDk0YjE5NjVjNmMwYjFlMDA1MWI0IGlvLWMKKzY5NjU3IGEyNmRiMzE0NGFlNzEzMDQ1MjM4MTg0NDMzYTZlZGQ1YmYzOWM0OGQgaW8tYworNjk2NTggNGIxMjFiYmNjOTJhZmEwMThlZDA4NGRlN2FiMTRkMjFiOWFlMTFkYyBpby1jCis2OTY1OSBmM2FmNDk5MmI4MGI4M2Q5YTBkOTRmMWRjNjNlNDRiNWRlMTcyMGM1IGlvLWMKKzY5NjYwIDZkYTMwZTNhYmMwZGQwMGQ5Y2VhZDkyMzZjMTVlZWZhOWVmM2I5ZWYgaW8tYworNjk2NjEgMmM3MTkwMmIzNzc0N2Q2OTc1ODMwZDkzZGVjYmNjYzM2ZmYzNzhjMCBpby1jCis2OTY2MiBmNGM0OWNmNjAxYTJjZGM2ZTE0M2NkNTBlNzBmMzQxOWNkOGEyYjNmIHB5M2sKKzY5NjY0IGE0NTBjODZmYzJiYzA0Njg1NWI4NjJhODlkNDY1MWNlMzZmNjkwMjcgcHkzaworNjk2NjUgYzU3MjU0YTljMWEzMjMwMjM1MWM1NDE0ZDkwZTlkY2MwOTdiNTZhZiByZWxlYXNlMzAtbWFpbnQKKzY5NjY2IDA3NmM0NzkxMzEzNDlkNDc1YWQ3Zjk1NGZlMDUxY2I1Y2FkM2MxNzggbGVnYWN5LXRydW5rCis2OTY2NyA5ODU3NWY5YTRlZDM4NTgyMDZmODYxYTdhZDVjMDQ5NDAyOTYwNDliIHB5M2sKKzY5NjY4IGE1YzYyMTVhNDVhZjA5ZTE3ODgyNmYxOWNhMWJhNWYzNDczMDJlNWYgcmVsZWFzZTI2LW1haW50Cis2OTY2OSAwZTU1YWNkMWE0MjY2OWQyZGFhMjBmY2I2Y2I3NGI4MzBkZjkwOTA4IHJlbGVhc2UzMC1tYWludAorNjk2NzEgZTg3M2Y4MDg0NjRhMzM2Mzc2OWM3MTNhNWY2MDBmZDkwYTY4Njk5MiBpby1jCis2OTY3MiA2YTExOGNjNGYzYjc4ZTE5OTMwNThhNjYxYjE2MjRmNTA2NDIyMGI2IGxlZ2FjeS10cnVuaworNjk2NzQgNTFkYjE4MDg0ZWNiYWFkNTA4NDdhNjliNmI3YmVmOGMzYTU1OTY5OSBweTNrCis2OTY3NSBiMzlkNTQwNThhMmJiZjc5NTE3Yjk4NjQwYzRjZmFmM2ZhZjQ0NjUyIHB5M2sKKzY5Njc2IDYyN2RiNTkwMzFiZWIwMTI2MmU3MTI1Yjk2NmVmZDc5ZmE4MjI4YTYgcHkzaworNjk2NzcgNGQ2MWZiYmI0NWQ3NDE3NGFlNmI0ZTFjZGRhMjAwYmZmOWYwMDhkOSBpby1jCis2OTY4MiBkZjdjNmJkMWI2MDkyYjg1NjZiMWVjMWQxMTAwM2IxZmVmODkzYjI0IHB5M2sKKzY5NjgzIDVkY2FhMmUxYmM4NjlhNmQ2NzhiNmU4MjNjZWM4NmI3MzU5ZTRkOWUgcmVsZWFzZTMwLW1haW50Cis2OTY4NSAwZWJiY2Y1OTg4ZGJjMTgzZWJlYTdjMGNkMzIzZGIzNzQ2MWEzZWI5IGxlZ2FjeS10cnVuaworNjk2ODYgMDAzZTAwNzk3ZTkxMDBiMTUwZGFhNjA4NGQ0YmQyNjM0NGMwYzk0ZiBweTNrCis2OTY4NyA4NmI2MGQwNTA2MmJhOGRiZTMwNDFkZDA3NzE5ZmVlNjhlMzFhYmQyIHB5M2sKKzY5Njg4IDI3ZDQzZDY2YmQwOWNlZWMxZWNiYjMxYzU2NjQ4ZWJlYTRlYTE2ZWYgbGVnYWN5LXRydW5rCis2OTY4OSAxNTQ5NDhlMmZkMWM1N2YxOTQyNjc1ZjRhMmJiOWVhYzJmOTRlZWJlIGxlZ2FjeS10cnVuaworNjk2OTAgMDkyMzU4ODljNTRkMTRlNmE2NjhjNjlhN2U2NTVmYjExNDRjZjk0MyBsZWdhY3ktdHJ1bmsKKzY5NjkxIGYzMDg5NTNjNzAxZmM0ZjYxODk5Y2ZlZTk4NTI3ZGFkY2QwZTE4NmEgcHkzaworNjk2OTIgOTgyZjllMjkyNWE0NWM1NDA2NDhkZDFiODliNWViOTI0Njg5OTRkYiBsZWdhY3ktdHJ1bmsKKzY5NjkzIGFiNGRhMmVkYjI4OGRlYTU4MGRiZTc5OWMxM2EyOGFkOWZkNmI5Y2UgbGVnYWN5LXRydW5rCis2OTY5NCBlNzhiYTg4MDBlMmNlMDFlYWM0MDg0ZTlhZWQ0NjU0NWYxYTI5ZmM4IHJlbGVhc2UyNi1tYWludAorNjk2OTUgNTIyN2Y4YzQxODNlZjUxZWI0ZmM0ZDU0ZDFhMDE2MWY0YTEyOThkMCByZWxlYXNlMjYtbWFpbnQKKzY5Njk2IDU0Y2Y2OGZjNzMxMjdlZTEzN2YwMWJkZjIxOWJjYzQwMzNmMjVhYjkgcHkzaworNjk2OTcgMjliMTQ5YmMzMTMwMTYyOWU4NjkxNmFhOTY3MDI3OTVjZjJmMWFiMiBweTNrCis2OTY5OCAyNzMyNjg1MjJlNWVlOTI4NzA4MTU5YjYxMTAzNDA1MDhjOWVlMWQyIHJlbGVhc2UzMC1tYWludAorNjk2OTkgMGM4NzQ3OTlhMTkwZDUwNGQxZDAzM2ZjNjg5NjJiZDQ3MTZiZmNlMyByZWxlYXNlMzAtbWFpbnQKKzY5NzAwIDcxMDE3NzJlYWU4MDVmZWY5MTEyMDljYjdlMjkwMDA0NWM3NGE0YTQgbGVnYWN5LXRydW5rCis2OTcwMSBmNTA1ZWJhNzI2Yzg2NTNjN2Y3NTQ3NmRjNzc2YWI1YzE5YWY5N2ZhIHJlbGVhc2UyNi1tYWludAorNjk3MDIgZGJhMmZhZjA5OTA2NDk1NWRkN2U1YThlYWMzZjk2MTdjNmU3YjkzOCBweTNrCis2OTcwMyAwMWQzYjY4NjMzODdkYmI1OTZlYWYwZmFlNGZhNTQ3Zjg1NzFjYjliIGxlZ2FjeS10cnVuaworNjk3MDQgMDdmYWQzMDEwMjVmMDE5ZWUzMjYxNzQ1ZGZjYmQ1NjkwODdjZWVmMyBsZWdhY3ktdHJ1bmsKKzY5NzA2IGRkMjIxMGIyZGMyMmNiZWQ0YTAzMmYwZWViNGNlNWYyODJiNmI2ZTEgcHkzaworNjk3MDcgMTQ3ZmNlYmFjYjViYjBkMTg5MGI2MTlmZGExZWY3ZTNhN2UxYzMwOSBweTNrCis2OTcwOCAxOWU3Njg1ZDliOTQ2ZjI1ODQ3YjA4YThjYTkxNDdhYTZiMjhjMGM5IHB5M2sKKzY5NzA5IDQ0ZmQyY2M5ZTljYzc0Njc5YjJjNjViMzE0MjY0MzI4NGZmNjY1NTQgbGVnYWN5LXRydW5rCis2OTcxMCAyNzI2OGVmMDQ3MDhkOGUzYzMwYTRkNjZmYzcxYTYxZTViZjAyNGU1IGxlZ2FjeS10cnVuaworNjk3MTEgZDc3MjY3ODI1MzZkOTUwMTZhNmE3NWI2ZTE1YjgwMDRjMGMzZjhmOCByZWxlYXNlMjYtbWFpbnQKKzY5NzEyIDI1N2M5OGZhNTVkNzZjZWE5YmFhYjMxNDhiMTk1NmRiYzI0ZDJmODggcHkzaworNjk3MTMgZTU0OGRmMzYxODhlZjczNTI4NDhjMWRjY2FmOGFmMjY0M2I4NmZjNyByZWxlYXNlMzAtbWFpbnQKKzY5NzE0IDBjNmMwNTcyYzI0NzNjMGQyNjdjZmIzZDQ5YmY1NmRjMDVhODUzYmYgbGVnYWN5LXRydW5rCis2OTcxNSBkOTgyYjk1YmUzZTIxODBkNTU1ZmE4ZjliZmJiZjZhMTZhZjkwOGJmIGxlZ2FjeS10cnVuaworNjk3MTYgNzk4YTE2YWJmNTQ2MDg4NjEwZmU1MGI5ZDRkMzBhMjFlOTAzYWRkYyBsZWdhY3ktdHJ1bmsKKzY5NzE3IGQ2NzQwYTk2YTcwYWRhYzE2YTc2M2UwN2E2NzU2YjRlODliNmVkYTggbGVnYWN5LXRydW5rCis2OTcxOCA5YWQ2NjJhNDNlYjM1MGU0N2E3Y2E2ZWZhNjc1YWI3OTAwN2RlOTM3IGxlZ2FjeS10cnVuaworNjk3MjEgODU0MDdkMDQ3NzgyMDk4MjYzMDVhZGY1MjY2ZTlkODYyZDlkYmYzYiByZWxlYXNlMjYtbWFpbnQKKzY5NzIyIDA5ZTYzMjE0ZjBiZjg2NTA2ZjljYmY1MjdjYjYzNjQ4NjAwOGE0MWEgcHkzaworNjk3MjMgZmI4NjA2ZTA4NmVhODQ0NWY2OWZkNjYyMDdkODNkZThiYTk2ODBiMSBweTNrCis2OTcyNCA5MmU0MmIxYjBhNmVlYzBmMTE3NzY4OWIzYzAxNmFlMDhiZDAzZDBhIGxlZ2FjeS10cnVuaworNjk3MjUgZDc4NjBiYjBiMTVhMGJmZDEzNTJhYjY2YzllYTNkOGVjMjA5ZWJmZCByZWxlYXNlMjYtbWFpbnQKKzY5NzI2IDYwNWZmYzA1MmI0MTk1ZTMzNDAxOWM2MGZhNWQ1ODVhZTIzMDQyOTEgcHkzaworNjk3MjcgMjA1YTJiNGMxZmE1NDY1NTg0NDFhMTgzODM3MDA4ZGU3NzRhMmJjZCByZWxlYXNlMzAtbWFpbnQKKzY5NzI4IDFmZjRiNDFhNTdjMTI2ZDBmOTQ2NmMwMDQ0M2FjNDhlMmM5YjY1ZWIgbGVnYWN5LXRydW5rCis2OTcyOSBlN2U1NDRjZDJjMmI5NDYyYTkyNGQxYWEyMWQ4ZTdkNDhkY2YzN2JiIGxlZ2FjeS10cnVuaworNjk3MzAgNmVhN2QzNzE0YmRmNzhmMjg0NTQzOWQ1ZmQ1ZGFlNTI5NzQzMjhlMyBsZWdhY3ktdHJ1bmsKKzY5NzMxIDU1MTliOWRjYzliNmI2NDQ3YWYwMjAzZGFmMDIzZjQ5NmQwMGM4M2EgbGVnYWN5LXRydW5rCis2OTczNCAzOWYwOWM5ZWQ1YTViM2VkNmMzZjExOTU1M2Y4OThiMjczYWNiNmRmIHJlbGVhc2UyNi1tYWludAorNjk3MzYgMjg3OGJmODE1ZGExZThiYWM4YmNkNzQ3NGU1Mzg0NWM1NTY5NzYzZCBweTNrCis2OTczNyBjYjBhZGUzMzU1NTE1NjBjMTU2ODllMjgwMjhjODgxMWNkMTUwMzllIHJlbGVhc2UzMC1tYWludAorNjk3MzkgNzJkMTNlY2Y0ZmNhNzVmYjI1NmFiNzIzZDIzZDI2NDcwZjkzMzk1OCBsZWdhY3ktdHJ1bmsKKzY5NzQwIDc2ZDc3YWU5N2IzOGZmNjA3M2VlY2VlYWFkZGEzZWM5YWI2M2ViYjQgcHkzaworNjk3NDEgNzU1OWEwM2NiZDMwYWI3NTFiNzRmZGM3ZWQ0OTg4ZmY3NTExOTZlOSByZWxlYXNlMjYtbWFpbnQKKzY5NzQzIDliZmYxMzBkNzkyZGVhNDcxZjJlYTljZjFlNjBhZDcyOWVjMWUzOTUgbGVnYWN5LXRydW5rCis2OTc0NCBlZTcwMTE4NjM5NDMyNjdkZmM1MGVkNTU1YWY2YmYyZWYwYjRhOWM0IHJlbGVhc2UyNi1tYWludAorNjk3NDUgOGEyOTI1NDNlODcxOTk3NDEwNmI0MWI3OTA3MjQ1YTZmZmFhNzU2MCBweTNrCis2OTc0NiBiMmZmMjFiYmI5YzU0MDQ0NzY2YjNmOGMzODRmODRmMmYwZDkxOGM3IHJlbGVhc2UyNi1tYWludAorNjk3NDcgN2M3YjgwNWQwZDBhOGRhZjdmZjRmNjU4ZGUwYzdhMjE1ZjlmZGFiYiBweTNrCis2OTc0OCA3NDhkZmU5YmI4NTdmYzFlZmE3MDIxNWEwODU5NDMyODdlMmI2NWMwIGxlZ2FjeS10cnVuaworNjk3NDkgODVmZTg4NzYxNGNlNDQyMGU5MDFjZjExNmY2ODlkODE2MzE2Y2MzMiBweTNrCis2OTc1MCBlMjYwZDZkYWY3ODQ4ZDg0MDBkN2QzOTVlZDZmMDUxOTE1MGYxN2U0IHB5M2sKKzY5NzUxIGQyNWZjMDIwOTI5NTUwMzZhNzAzNmZiMTU3YzllYzhjNjE5NmU1OTYgbGVnYWN5LXRydW5rCis2OTc1MiAzZGJkYmM1ZTZkODVhZDVlYTEzYTUxMDRlZTVhYTJhY2EwNDQ3YmIzIHB5M2sKKzY5NzUzIDAzZjA3ZDhmMDZlNDZjMDNhYmYyZGI5OGNkODc1OGViMzVjZmQwNmUgcHkzaworNjk3NTQgMzNkNWQ3ZGFhOGM3NDY5ZjEzY2M5MmVlMGZkYzVkMjdjODY4OTRhNiBweTNrCis2OTc1NSA0OTdlYWI3OWIxYmU4ZTkxNzI1YTNlMzFjZDQ3YTU5MDE4NGY0YjljIHB5M2sKKzY5NzU2IGE5Nzc0YjYxZTUyZDNkOGQ2YWM1MzkyMTg1NWU3MTdkMWE5NDA1YmQgcmVsZWFzZTMwLW1haW50Cis2OTc1NyAzMDIyNjNlM2M4ZjFkMmM1NWM3ZDFhMjFlNGM2OGFmZTQ5ZDU3MzEyIGxlZ2FjeS10cnVuaworNjk3NTggZDQ3YzI1OGExZTFjZWZiZWI1ZDVjMzk5ZmQ5Njg2N2JkMmE3ZTRjZSByZWxlYXNlMjYtbWFpbnQKKzY5NzU5IGFiNDBjNzYxMzlhYjRkNzdjOTIwZWY5OWU1MTZiMGU3YmU2N2UwZDAgcHkzaworNjk3NjAgMmY1MjU3NDk0YTJlMGZlYjI2YTIyNDJhNWI1NzFlMzNhZjhhOWRjMSByZWxlYXNlMzAtbWFpbnQKKzY5NzYxIDU1OWU0ZmMzMWM4YTczYjVmNjRmMzJkMDgzZjVjZGY5YTlhMzVlNTAgbGVnYWN5LXRydW5rCis2OTc2MiBlYTQ3Y2VmNjc4MzdiMGVlZDVjNTliNDc5YjNkOTZhOWM2MDFjOWZiIHJlbGVhc2UyNi1tYWludAorNjk3NjMgOTAwMWQ5YzhmNzFlMDUxN2EzZWUzYzMyMTEyMzRlZDhmZDk3YTM5MyBweTNrCis2OTc2NCBkNjczZGE5MTU5MTRkN2M1OTEzNDRjOTMzOGFkOWJiZGQ0NzJhMjJmIHJlbGVhc2UzMC1tYWludAorNjk3NjUgOTgwMGFiMjM2YzA5ZDQ1NWNkNjJhY2I3MWEwMzgyMDRlM2FkZDdlNSBsZWdhY3ktdHJ1bmsKKzY5NzY2IGYwZWFjNDUyYTZjYWZkMThmYTA4OTEyYjI3YzgxZjJkNTg2NTM5YjQgcmVsZWFzZTI2LW1haW50Cis2OTc2NyBiZDQ2NzE3OTJkNTAxNmU1ZTgxNDc2OGFmYjU3MzU2YTZkZjcwNDM2IHJlbGVhc2UzMC1tYWludAorNjk3NjggNDM0MmMwYTJmMmRjOWNhZDQ0OGIxNmQ1ZDkyODVmYWIwZTE3MzIyMiBweTNrCis2OTc2OSA4NDY4YjUyZjVlZTJjMzc3Y2RiZTI3MzE1YjFmMDk1MTFiNmFhNzU2IGxlZ2FjeS10cnVuaworNjk3NzAgMDBmN2JlMDJhZTFmMWMyZDAwOTNiZDNjZjMzY2JiMGU0OWI1NDNmNSBsZWdhY3ktdHJ1bmsKKzY5NzcxIDc4ZTMxMWYyNzdhNzAyN2UxZGI1MDJmOTIxNjZmNGY1ZDRhZTIxMjIgcHkzaworNjk3NzIgOGMxM2Y0MzBlMTYwNmEwODU0ZTZjM2VmNGExYzVkMDMwYmRjYWI1NCBsZWdhY3ktdHJ1bmsKKzY5NzczIDgzM2RkZmVjMGJjNDU2YmUwNDg4YTVlOWZjMWM2ODA1NTg2YTBmOTUgcHkzaworNjk3NzYgYzAyYzJhOTA4Y2IwOThmMWY4ZmRkM2ZjODAzM2Y1YjgwYTcyMWZiZSBsZWdhY3ktdHJ1bmsKKzY5Nzc3IDQzODU5Mjg5MGUyYjdlZjU5MjlhMDFlZWEwOTBkOTFlYzNlY2M0NmQgbGVnYWN5LXRydW5rCis2OTc5MyAyNzkzMzc1M2EzODdmOTFhODJjOTRlY2ZmYjM0ODVhOTEyOWU0OGZjIHB5M2sKKzY5Nzk0IDY3ZWVkODFiYTc0ZmE2YTMwYTgwNmU0NDU2ZDdmNzViMmMwZmVmNmUgcHkzaworNjk3OTUgOTgxNWRhNDNhMWNlZmE0NmQwYTFkODExNzA5N2JiODM5ODk2NmZhZiBsZWdhY3ktdHJ1bmsKKzY5Nzk2IGMxYmYwMzdmZWVmZTA2YjFlY2U5MDA5ODExYzVjNDA1YzlhMmMzMWUgcmVsZWFzZTMwLW1haW50Cis2OTc5NyA2MjRiNTVkMGQ2YjcyZGIxMTNmNDA1MDZjNzYyN2QyMzVkZDA2N2EyIHB5M2sKKzY5Nzk4IDJmM2FmYWNmOWYwYjcyY2NkNjA4N2I4Mjg5OGIxZjVlN2E0Mjg5MmEgcHkzaworNjk3OTkgMTQwOGZlZWMwMDg0OWFlZTA1ODZmOWFmZDJiMTBkZDI5MTY2NDE2NCByZWxlYXNlMzAtbWFpbnQKKzY5ODAwIGRiOGRiMzFmZGI0YzQ3YzAxZmUwZjRkZDc1YjZhMDk0YWRmZjM4YzUgcHkzaworNjk4MDEgMGI5OGUzNzkxYjllYzg3MjBjYTc4MmJkNWFjYzQ1NTA1MGM1MjE2ZCByZWxlYXNlMzAtbWFpbnQKKzY5ODAzIDVhMTc4ODhjNTE1MTNlOTVkYTgxMTZhMDdlMmNmYmQ3MWQ3MGI3ZDEgbGVnYWN5LXRydW5rCis2OTgwNCBlZjE5Y2EwMTNlMTZlZTE1MWQ4MzlhOTJmNGI4MzFmMTI5ZjQ1Nzc0IGxlZ2FjeS10cnVuaworNjk4MDUgMDgyNDA5MzE0YjAwN2E4OGIzZTA3YTZkZDE3NjQ5MmI4ZWMzZjQ3NCBsZWdhY3ktdHJ1bmsKKzY5ODA2IDY1YTNmNTU1ZmFiNzNkYTRlNzRlYjQ1YmY2MTJiMGE3YzY0NWJlMjUgbGVnYWN5LXRydW5rCis2OTgwNyAxNjRiYTdmZmEwZWVlNTQ0YjRjM2UxMzQ3NjhiYzI4MTAxYzg2ZmMzIHJlbGVhc2UyNi1tYWludAorNjk4MDggOTI1MGM4YzYxYTkxMDk1YTk1ZWY1NmQzY2MyMTY4ZjVkZTZlNGE5ZCBweTNrCis2OTgwOSA0ZDNiYWFjMmUxYTIwZGI1MmIxNzc5YmE1ZjFjZjM4ZDU2MDhhYzZkIHJlbGVhc2UzMC1tYWludAorNjk4MTEgMDg0OGViYjhmOWM4OGM5MjcwZGU2NzJmYTE1NmE0NmI0ZTZjZGRkOCBsZWdhY3ktdHJ1bmsKKzY5ODEyIGM2ZWQ1YmZlMzk2OWEzOGI0YzA3ZjcxODNjYWYzMGFiZGZmN2ZiNTYgaW8tYworNjk4MTMgZTA4ZTQwOThhNGU3OWI0MTdjNTVlZTNkMTM3M2NkY2JiYjc1MTM1MSBpby1jCis2OTgxNCA0MDgyZWRhOGI0NjYzYjE0NTE2Y2U2OTYwYzA1MjM5MmM2YTk3OWU3IGlvLWMKKzY5ODE1IDdmODNhZmY2OGMxNjZjZDg0ZTMyZWVjMTZmNjJkZTk1YjdiZTUxNzcgaW8tYworNjk4MTYgMWFhYzc1MjA0MzdhNmZkNGE3NTc0OTkwN2U2N2Y3N2Y2YjYyOTkxNiBsZWdhY3ktdHJ1bmsKKzY5ODE3IGMwNWMzMGZjMTE4YmUxMDA5ZWVmYWJiZjQ0NTQyNzg0NjZiMmE2MmEgaW8tYworNjk4MTggNmNlOTZjZTRkOWFmZTQxNTZkNjEwMjA0MTgzZDIxODNkMmJmZDZkNiByZWxlYXNlMjYtbWFpbnQKKzY5ODE5IDVmNTk1YWM4YWVmYzM5NjJmOWVjMDI1ZjMwNGU5MDhkYjNiNzEyOGUgcHkzaworNjk4MjAgZTA4MTVmZWUyNGY2ZTM4MGIyNjIzZWY2NTFmMWQ0NzVmYWE3OGUyMCByZWxlYXNlMzAtbWFpbnQKKzY5ODIxIDY3YmNmZjI5M2EyMWFkNWZlYjU3NTFjMzg3YTA3ODU3NDQyYTlkZmUgcHkzaworNjk4MjIgMzdlNGRmOWZkYWE2ZDQwMDA1N2JlZWZlMDJhYTMwYmIzZjI4MGVhNCByZWxlYXNlMzAtbWFpbnQKKzY5ODI3IGFkYjExMzNkODkyYWI2ZmMyZjQyYzdjOWY2YzA5OGZhNDdlYTY0Y2QgaW8tYworNjk4MjggYzYxODJjYzdlNmQ3MGUwMzMxYzQxMTE1YTJiMDFmM2NlZGNiNTRjZiBpby1jCis2OTgyOSA3MDJjM2I5ODAzZThjNzUzZDcxZmI3MmM3MGM4MDQ5MjE5ZTAwYzRiIGlvLWMKKzY5ODMwIDZmZDg5MGIyMGQ2M2ZjN2FkOGIwZDVjOTAzNzE1ZWZjMzRjNTk3MGEgaW8tYworNjk4MzEgZGNjMTYxZTFhZjdlY2UyN2FkNTMzY2M0Y2VmNjJmOTRlOTZkMjQwZiBweTNrCis2OTgzMiA0MWUzOGE2MWJjNGI0OTE2N2YyZDU5YmYxYTU2N2VhZDhkZmI2MDA0IHB5M2sKKzY5ODMzIGExZmFmZjc0ZmY4OWUyZGFhYzA0ODg5MDE1NGYxOGRiYmFhZWM5ODkgcHkzaworNjk4MzQgNzE0OWI3ZWVmMTUzZDdiMzdlMmU0NWFkNTMwMTEwMmU1MmUwZjIxNiBweTNrCis2OTgzNSA3NGEyZmY0MDUxOGFlNjY1M2IxODg2Y2I3M2E0NzE5YWFkYjYxNzc5IHB5M2sKKzY5ODM2IGVlNzAyOTcxMGMwNTBkYjIyNmQzYmY4NDQyMGE5YzM5Yzk2OTM0ZDYgcHkzaworNjk4MzcgM2UyN2Q2MDZkNjI1ZjhlOTE3ZmM1ZTFmNTY1OWIwYmRlY2U3ZWU3YiBsZWdhY3ktdHJ1bmsKKzY5ODM4IDMyNmY2ZmFjYzFhYTRmNDM2YjczZDhjYzBkMzFiYzY4ODBkYTIxODAgbGVnYWN5LXRydW5rCis2OTgzOSBhNWJhOWMxN2Y4YjlkNTBlMDljMGYxNGFkMDY2MGFkZmM0YTVmNmUxIGlvLWMKKzY5ODQwIDllNmZiYTVhY2NlNDZiZjg0NzExYmZkZmFlZmJiNzdhMWE1ZDRlNDMgbGVnYWN5LXRydW5rCis2OTg0MSBjMjcyZTMxNWRkODcyMDZhOWQ5NzZjMTA0YmYxNjFkNzZjMTdmMjJjIGlvLWMKKzY5ODQyIDk1NTc2YmYzYWQ3MzU4OTY5Mzg0OTlhNWY2YWEwNmIyYzYwNjA0MDcgaW8tYworNjk4NDMgMzc2ZDgwOGUxYzA1ZmFhYWQ5ZTUwMDJlZTVhZjAyOWU0M2ZiYTk1YyBpby1jCis2OTg0NCA1MTQ0NWIwNDA5ODYxNzYyNjRkNTBmZmI2NzgyZmY3YWUzNDMwNDBhIGlvLWMKKzY5ODQ1IDNmMDIzZmI4M2YyYjliOWExYjRhODQ4OWU1ZDZjZTA3MDRlMWU0MjAgaW8tYworNjk4NDYgYWY5YjZjNDM4MDRlMWU5YzQ5MzMyY2E2NjM0MzYzZDA4YWUyZjJhYyBsZWdhY3ktdHJ1bmsKKzY5ODQ3IGQwNmEzZWJmMzA2ZmE5NDVlNDNmNTlkZjA2MzcwNWEzZjRjM2RjY2QgcHkzaworNjk4NDggNmJhNTU4OGVmNjQ1ODdmMjJhNGU0MWM4ZTYzZDhjMTkwYjA0ODZhZCBpby1jCis2OTg0OSBlYzQ5MDkzMmQ5MWNiNTJkYjEyY2UzNjMzZDczNDcxODk4NzMyMTI2IHB5M2sKKzY5ODUwIGMyOTUyYzJiNWE0YWU2OGU3MzMyNzljNmFmYjg0ZmM0MmNhZTk3OTQgaW8tYworNjk4NTEgYWEyOWQwOTY3MTA1ODllNjc2ZWE4MjFlMTBjYWJmMmQ2ZDc5NzYwOSBweTNrCis2OTg1MiA5OTg4ZTlmMDA0MDhmNjU5MjI3OWFlNmQ2NzQyMTg4MzFjNDI4YmQ5IGlvLWMKKzY5ODUzIDhhODI1YTE3Y2IyNzM1ODJiZmZmOTRjMDVjZGM1ZWU5Mzg4N2RlNjAgcHkzaworNjk4NTQgN2FlOGE4NzI4NDIxZmU1ZjMyNDgwYzExZTg0Y2NlYzhiNjA1MTg3OSBpby1jCis2OTg1NSA5NmFiYjQzOWUyZDA3ZDBjYmFhODdhZDdiNWI2YjE1YWNjMDM3YzY3IGxlZ2FjeS10cnVuaworNjk4NTYgNmE1YmVlMTg5M2FkODM2YzExMjA0MDhhMjllYTVlNzQxYjAyZGQ5MSBweTNrCis2OTg1NyA5MTgyNjRmZjAyZTFjMDllYWM0OTQ0N2MzNGM3NWVmYTFkZjYyYjRjIHB5M2sKKzY5ODU4IDViZTI0YTU2ZjA5MThhZGRjNmZlNTIyMjI4NTgyOWZlZjcyODkzMzIgcHkzaworNjk4NTkgNzY1NzE5ODZhMmY0MjA4MjY2Mzc2YmYwZWIyNGEyOTFjYWZlYzA0NSByZWxlYXNlMzAtbWFpbnQKKzY5ODYwIDhlN2E0YTc3NDEzODQyNmRkN2QwNGQzMmQ4N2ExNTFiYWRmMjg2YTUgaW8tYworNjk4NjEgZWNkOGVmNGU3OWU2YjcxYjExYmNiMjM0YTNhMzY2ZWNlN2NhZDYwYiBsZWdhY3ktdHJ1bmsKKzY5ODYyIGMzMzA0YTRiNjRlYTFhN2U1NThjMjJlZDMxZGNlZmU1YzVlYzkzNzkgcmVsZWFzZTI2LW1haW50Cis2OTg2MyA4NDYwZTVlZTA2YzM5MTVkZTc4MjU4MTIzMWFmZTc2NTM0NTgxYzdiIHB5M2sKKzY5ODY0IDNjYTFmYjYyMmY1YTRiOGE3NTdmMDg5MTUzYzA5OGQxOTRhNjQ2NDMgcmVsZWFzZTMwLW1haW50Cis2OTg2NSAwMDJkYWNhNjZmOWY2YmRmYjlkMTk3MmZjYTdlZDk4YzRiYzdjZDZmIGlvLWMKKzY5ODY2IGVkNWNkOTA0ZjIwMDdjNWNlZTU2OTkzNjY0MzViMTViNTIxMzVlZjEgaW8tYworNjk4NjggNWZmZDkzMjgwYTcxYjQwN2FjODU0OWUxNzM3Nzc0NGYxZDJkNDFjYyBpby1jCis2OTg2OSBhMGVkYTFlMjI4YjhmOGYzNTRhNDBkZmY3Nzc4MjI1MTk3NzRhNWNhIHB5M2sKKzY5ODcwIDBhYjhiZWY2NzFhM2RmNTk4YTAwODk1ODRjZWNhMTE0OGNlNzg4YWIgbGVnYWN5LXRydW5rCis2OTg3MSBjMjAxYzhjZjNjYjQwYzI2NmI4Y2Q2NjRiNDcxNWJhNGY4ZjBiYmFjIGxlZ2FjeS10cnVuaworNjk4NzIgNWI1ZGNjYzUwZTEyYzQ2NGIxOTA0YzI5NDQzNmVkOWQwNDQwZTgxZiBpby1jCis2OTg3MyA0OTkxNGIzZTNhYTgxMDBmNTEwNWE3NTYwMDQyMWZjNGQxY2JhNmU2IGlvLWMKKzY5ODc0IGIzNTE1ZWQyODEzNTA0MTYwYzZhNzMzZDA1ODYxMDg1MTQ4YTdjOTYgbGVnYWN5LXRydW5rCis2OTg3NSBkMzYyOTY2NzM5NzRhMDIyZGE3OTYxNzczNzI5ODZhMjI0NjRkMTg2IHJlbGVhc2UyNi1tYWludAorNjk4NzYgZTg5YzdlZDFjZmZmNDgwZmU1ZDQzNDEyMWQ5ZDUzZGVjN2Q2NjA0NyBweTNrCis2OTg3NyBhYTMwMjE2OTljNTlhYjgwYTlhOWRjZDA1NzI2NTkwYzhiYzA2N2JkIHJlbGVhc2UzMC1tYWludAorNjk4NzggY2QyZWU4MTkwOTU3Yzk0NzAwZjkzNTdmZThhZWI5ZTY1YWJhMTYxZCBsZWdhY3ktdHJ1bmsKKzY5ODc5IDMzOWY1YzFlZjBlZGY0MzMyYWFkOWRiMTFiZWZmNjM1ODQzZmY3ODEgcmVsZWFzZTI2LW1haW50Cis2OTg4MCAwYTVjMjZkMGJlNTQwZGNjMDJkMzk2ZTg3NDUxOGNjM2JhMTE4NTg3IHB5M2sKKzY5ODgxIDYyMGU3NDJjZGY2OGE3NDViMDYwMTg3NWJlZWFmN2Y2ZWIxMjAyOTEgbGVnYWN5LXRydW5rCis2OTg4MiAwZWZmZGE1NDgxOWUyYzQ2N2JkOWIyNmJjZDY5MGFhMWRiZDVlY2U4IHJlbGVhc2UyNi1tYWludAorNjk4ODMgZTVlNWNhMDQ5MWI4NDA4MjVhMDJmZDZlZmNkMzA4MDM2YjlkYjM2MCBweTNrCis2OTg4NCAxM2ExY2JmMTFhMjFlYWQxN2ZmMjRlYThiMWU2YTM0OTAwOWY1OWFhIHJlbGVhc2UzMC1tYWludAorNjk4ODUgZDIyZDZlOWY3OTFjMmNmNzM2Njg3YzUwOWEzOGIxMDc5MWI1ZjU3NiBpby1jCis2OTg4OCBjZTBhOTVhZjZiMWQ0MWJiYzI5MDdkM2E0OGQxNzkxMDVmNzFiYzE1IGlvLWMKKzY5ODg5IDI3MmFjNjU0ZmQxYWYyMDA3NGU4YzdlODA3NGU4MDljNjg1ZTQ1YWYgbGVnYWN5LXRydW5rCis2OTg5MCBmYjdiZTQ1YTk0NDE4ZWY2MWNhNzAzNjhkYzVkMDk3N2EyZDQ0Y2VjIHB5M2sKKzY5ODkxIDNkZjhiZTAzNjMyNDNlMGE4ZWVlZThmZDlhMDFiMzBkNTRjNjliOTggaW8tYworNjk4OTIgOWY2Y2IwNDM3YmU4MjM0M2VmY2JmOTg2ODVjNGE3YTVmMzM4OTI3MiBpby1jCis2OTg5MyA0NDQ5NmNkMGJjNzgwM2U0ODUxOGMzNTZjOTlhYTFlNzhkNTVkNjM1IGlvLWMKKzY5ODk0IGRiMTRlY2EwMTYzNTA2ZGNmYWZhYjMxYmRhODc1MjA0ZGJjMDliNmMgcHkzaworNjk4OTUgYjYxZjMzYWYzNzRiY2E3MmI4YjRmZWVmMGM1MTE4MWU1ZDViZGY2YiBweTNrCis2OTg5NiA4YTRkYzAwODhlODYyNmI1NmNkZjlmZDc1ZGEwMjNhNmVmYzg0MTZjIGxlZ2FjeS10cnVuaworNjk4OTcgMzIxOWIzNGEzMzIwNjEyODk0ZmFhNGM5ZjI5NWMxNjc3MjY3ODY1MSBweTNrCis2OTg5OCBhMzY2Njg4YThmMGQzYzllMmRlNDcxNmIwMDgwZjMyMjQ3MWI3MjZkIHJlbGVhc2UyNi1tYWludAorNjk4OTkgYzhkMDZkZmQ0YzM5ZjVjOTZlMGRhNzg5OTE2ODkwOWJlNjIzODk1YyByZWxlYXNlMzAtbWFpbnQKKzY5OTAwIDViZGI5YzY0MmNjY2QxNjJlOGYzOTcxZGU0MmY4N2JhNmZlYzE2NDYgcmVsZWFzZTI2LW1haW50Cis2OTkwMSAzZTc3MzNjZjI3OWUzNGRhNWZhYzkzMGI0YThjMDAxZTJhNDM0ZWRkIGxlZ2FjeS10cnVuaworNjk5MDIgMmJmMTMzN2MzYTYwNWRjYTA0MGY5MTZlZTNmNDNlNjU4NzJlMmUxNCBsZWdhY3ktdHJ1bmsKKzY5OTAzIDFmMWUyMmVmNTU2MDlhZTE1ODc5OTc2NTg4NjY1ZjdkMjgwMThiMTAgcmVsZWFzZTI2LW1haW50Cis2OTkwNCA1Yzg1OWFlYTQ2YjljN2RjYTU1ZDQxY2ExNGVlMDAxNzU3YTU4NzE5IHB5M2sKKzY5OTA1IDBhNTk4ZGJlZDY3OTI2NmY2M2YxOTZkOTMwYmI5OTFmMzBiMTY2ZjkgbGVnYWN5LXRydW5rCis2OTkwNiAwMTc0YjkzNjY5Y2Q0ODg5ZTU3N2MxYzBhZjhiOTIzNDYwZGNiMDk4IHJlbGVhc2UyNi1tYWludAorNjk5MDcgMTZjY2EzMGNmM2ViODNiMWUyNjA1ZjMyOTRkMTZmMmU3NzI2MDM4ZCBsZWdhY3ktdHJ1bmsKKzY5OTA4IGEwZmVjYmU3MzYxNmY2MjgzZTNkZTBmNjk5OTJiYjc4YzNjYjQzYzYgbGVnYWN5LXRydW5rCis2OTkwOSAwNTA0MDg3YTI3MjM2YjM3ODUwMjA5MDI1N2M2NjNhNmQwMjJiNzg2IHB5M2sKKzY5OTEwIGMxZjAyNmUwODc1ZTA0OWIwOGMyNzVkZTk1NWRmNjY2ZjY3YThlY2IgcmVsZWFzZTMwLW1haW50Cis2OTkxMSA5ZmU1MzE1NjU0M2NmNTJmODJiMTZmZDM3OWEyNzA3NTk0ZjVmMzczIGlvLWMKKzY5OTEyIGY5ZWFkMmUxYTAzY2ZkOGMyM2M4OGVhYzRjYzVlNDEzYmM1ODY0MDMgcmVsZWFzZTI2LW1haW50Cis2OTkxMyBiYzNiMDczYWQxNDZkNTkxNTljZDQ3NzM0ZjY0MWI2OGY2MjM2OTU3IGlvLWMKKzY5OTE0IGE1MmUxNDU0NTU2MTRlN2ZjYjY3MzE4MTg5Njg5ZmE5M2VlNGNlYmYgaW8tYworNjk5MTUgNjZjZTgwZThlNTM3OThlODE5OTY2MDI2M2M5YzZjNDhlMGY3OGRjZSBpby1jCis2OTkxNiBlZjNhNmMxNjgzNzRjNDhkYzAxM2E4YzQxMGRjZmZlNDhkNjNmYTEyIGlvLWMKKzY5OTE3IDgzNjY0ZTdmNzA4YWIzOTdjZGRiYjk2ZDc1ZmVhZTFlMDZlOTkzNmYgcmVsZWFzZTMwLW1haW50Cis2OTkxOCA5NDk0MWIwNTk4MDBlMzQ2YjE1NzFiY2MxNDlhNDhlY2VkZDEzMWRkIHJlbGVhc2UyNi1tYWludAorNjk5MjQgZmE3NDc2NjBkNGQ0MTY4Y2Q1YjIzYmJjNzA5OGIwNTNlZGI1YjE4ZSBsZWdhY3ktdHJ1bmsKKzY5OTI2IDA0ZjNjZjMyYWE3N2Y4MzYwOTA2ZTEyMTU2ZGI3ZjRmMGQ2ZDgxODMgcHkzaworNjk5MjcgNWM3NGU0MGQxOTI2ZTVhNmU4NDgzNzkwODMzOWU5M2E4MzQwYzY4MSBsZWdhY3ktdHJ1bmsKKzY5OTI5IGIxZTYwYjQ3ZTE2MDE3YTZhMWZjMmIwZjc4NmQxMzcwOTY5MWZlYjYgcmVsZWFzZTMwLW1haW50Cis2OTkzMCA1NjE3NDcxMDM3YmM3YWY1Y2NiYTZiNjk4YjZmNzA0NzBiZWNjNzA0IHB5M2sKKzY5OTMxIDgzZmEyNzQ4M2ZkYzkzOTFiYzQwYzdkM2M2ZjVlNjQ3OWRmMjQxZmEgcmVsZWFzZTMwLW1haW50Cis2OTkzMiA1OTUyZDQxMTg5YWQxYWYxMTExM2ZjODgwMGFlNzYyZDkyNTYyM2JjIHJlbGVhc2UyNi1tYWludAorNjk5MzMgOTA0MTJkZmRhYmEzMDZhMjQ5NGRiYTA0NGM2M2UxYmY3NGZlZGE4NCByZWxlYXNlMzAtbWFpbnQKKzY5OTM0IDEyYzY5ZWY0M2RkZTgzMmFjMGQ3ZjIyYmMzMTM2ODg3ODg4MGJhZGIgcHkzaworNjk5MzUgYzBiOWJjMjVjZWJiZTM5OTdhYjNiODU0NWM1OWUwMDExMjllMjZmYSBweTNrCis2OTkzNiBiYzcwZWM5N2UzOWZhZjU3NjY5ZmQwMWNmN2M5M2M3MWI3NThlYWY3IHJlbGVhc2UzMC1tYWludAorNjk5MzcgOWMyNWEwNzkwMDIyYzA2MTc1YmE2ZjViZGI4MDdlY2E0NmJlMjlkNiBsZWdhY3ktdHJ1bmsKKzY5OTM4IGZhZjk2ODIxMmYzMWQ2YTA3YWJmZjdmZDc0ZDNlNzAwY2MzMTc5ODEgcmVsZWFzZTI2LW1haW50Cis2OTkzOSA1NzRmZWY1M2E3ZTNkZTQ5ZTI5MTg5NTc3MTI1OGQxNzEwOGVjYWRlIHJlbGVhc2UzMC1tYWludAorNjk5NDYgNDViNDRiZDMyZjQxNjVkMTY5YzMxYmU5NjI2YmM2OWJhOGM0ZjQ3MyBsZWdhY3ktdHJ1bmsKKzY5OTQ3IGE4YmI4MmY1ZmQ2NDdhZDcwYzNiMDI4NjUwZjliNmM4OGM4OGUwYWQgbGVnYWN5LXRydW5rCis2OTk0OCAyZjZiMzRmNjdlZjAyMDE2NTllZmRhZDU3Zjc5MWJmMTNiMzAwMjgwIHB5M2sKKzY5OTQ5IDJlMjU3NzFkNzIwMjE2MWYyNTQwZjkzMWJmMDU4MTA4ZmU4NTY1MjEgcHkzaworNjk5NTEgNjBkMDlhNzE2NTU2ODBiZDc2YzIxNTFjOGFhMWMzODBjNjUwYTMyNiBweTNrCis2OTk1MiAxZDI0NzM5NTExYzljOTI5ZmVmYmNmMDI2YTliYWI4OGNjNjU3YTgyIGxlZ2FjeS10cnVuaworNjk5NTMgYjhjNGEzNzkzZDBmNTEyYTdmMGQ5YTI4Y2MwMTJmZWNiYWVkYjkxOSBsZWdhY3ktdHJ1bmsKKzY5OTU0IGE3ZmRmNjljYWUxMzVjMGFjNDljZmJjYTEwNzAwN2RmYzBhZDE4NWIgcmVsZWFzZTI2LW1haW50Cis2OTk1NSA0NmNiZTY3Yjk2NjFmNzExOWRjNjg5YjBiNGEzMWIyN2QzMDliMWFlIGxlZ2FjeS10cnVuaworNjk5NTYgZGMzMTVkZjdlODA4NjMyNzk1YzgxODJlZGM0OWIyODlkNDgwMzMxNCByZWxlYXNlMjYtbWFpbnQKKzY5OTU3IDY1NzYyYTA2Yjg4ZjNjZjMwMzEzNThhYjFlMDNkNmQxM2NjNzhiNjIgcHkzaworNjk5NTggMzM3YmQ1MDk0NTVhMTk3MTg3MDM3NWE1OTVlNTAzMjE2NDVhYmY2ZCByZWxlYXNlMzAtbWFpbnQKKzY5OTU5IDE3N2JhMTIyYmIxYjAyYzNhMzMyYjMxNWQ5YjU5YmU1NTU2MWQ3OWUgbGVnYWN5LXRydW5rCis2OTk2MCAyOWIxMmE4OWIyYTA2YzgwNWIxNTcyNTU4MDgwODM5NzhmMTQ5MDA3IHJlbGVhc2UyNi1tYWludAorNjk5NjEgNjQzZDhkNGZjOGViY2M2OTE1NWQzNDE2MzU3YWFkY2E5YzA1MzM4OCBweTNrCis2OTk2MiAwOGEyOTZhODhjM2UwYjM0YjE2MWU5Yjk1MDg2YTE4MTc5NWFlZmZiIGlvLWMKKzY5OTYzIDhlMGNlYjlmNWMyYTczZjM0ZmQyNTk2MzdhMmY4N2ViODJjOTI2NGEgaW8tYworNjk5NzQgNDIxYTAzNjlmMjM5NGE0YTQ3NjNhYzI1YjUyNGY3YmEwZWJlODY1YyBsZWdhY3ktdHJ1bmsKKzY5OTc1IGFjMjY3NjVmYjFiYjhiMDQ2MWVmNWI1OGE4ZTQ0MGRjOGQ1MjEyMWEgcHkzaworNjk5NzYgNzAyZjE4OTkxNjFlMTk0MWQzNTA0NWEwYzdmNDFhZDNiZWZkZDA3ZCBsZWdhY3ktdHJ1bmsKKzY5OTc3IDY5MmM4YTk4ODAyNjRiMmU2ZmNmMTAyMmE3ZWRhZTIyMjBlMDQ3MDQgcHkzaworNjk5NzggMDJlZWNkYjE3MzU4MDc5Y2UwNzM2ZjJlZWRlNzM0YzJkYWZlYWE1YSByZWxlYXNlMzAtbWFpbnQKKzY5OTc5IGY3YjAzMDEwMTYyYzQxMTdkN2Q3Y2NhZWVmZjRlNWQzMWZjNGZjYTAgcmVsZWFzZTI2LW1haW50Cis2OTk4MSAwZWUzYjlhN2YyMDk3ZTlkYTc3NjdmOWQ3NWU0YmVlMzc3YWE3NDQ2IGxlZ2FjeS10cnVuaworNjk5ODIgZDc4YjI4YTM1MjRjNWFhZTZhYTViZTNkNWJlOGE4ODEzMzkwYjE3NCBweTNrCis2OTk4MyBjMDdkN2ZkMjc0Njk5MGUwMjc3OWJkYmU0ODZlNGMwOTk2NTY4ZmU3IGxlZ2FjeS10cnVuaworNjk5ODQgODg3Mzg1NGJiNWY5MDcyZTViNzNiNjM3ODc0NDhkNDBjZTY3MjlkYSByZWxlYXNlMjYtbWFpbnQKKzY5OTg1IGM4MDA0ODIxNWRlNTgwMGIwNmQzNGZiZmYyMzZhOWQ5ZDA5MDAwNzkgcmVsZWFzZTMwLW1haW50Cis2OTk4NiAwNTJmYjUxZjhkY2YzYjc5MjU4OWY5ZDgwYzY3NTZiOWM2MWQ3MDVkIHB5M2sKKzY5OTg3IDNlY2Q0ODQ3NTZiMDIzYjNmYTgwMjQ3ODQwYzdiMzg1MzMwYTY0YWIgbGVnYWN5LXRydW5rCis2OTk4OSBlODcyZjU4N2YxOTAxYTc0MjhlOWVhZWI5YmY5MjU1N2Q4ZTZlMzNlIHB5M2sKKzY5OTkwIGU5OWI1NmRhNDMyYWY2ZDFkNTZiMzIxNzc4NGU5MGI3ZDJhOGFmYWUgcHkzaworNjk5OTEgMzIzYTVhOGQxMGZjODYwMDJiOTMxMWY1YWU3OGUzODkxZTBlMzRhNSByZWxlYXNlMzAtbWFpbnQKKzY5OTk0IDY5ODE3NWZlOGIzZGU5OTBkM2I2YjcyY2NjNWVhMDI0OTI2NjY0Y2QgbGVnYWN5LXRydW5rCis2OTk5NSAzZjczYjdhZjEzMWMxNWQyOTdiZDI2MzFkMDQ2ZTU3MjkzNjMzZmNhIHB5M2sKKzY5OTk2IDM3MjJjZTQ1ODMxODk0N2E5ZjI1YmQ4ODk5YmViMjA2Y2RkZTY1NmIgcHkzaworNjk5OTcgYTFiM2QwMjE2ODIwYTlkNjI4MTg3MDUwNDZjNzgyYTgxYmZiZjY4OCByZWxlYXNlMzAtbWFpbnQKKzY5OTk4IDYzMjY2NjY5MWQzZDQ4MDgzMDUzYzZkOGMwN2E5MTUxZTQ4MmViOTEgbGVnYWN5LXRydW5rCis2OTk5OSA1OGJiZWIzM2Y1ODMzMzFjNjYwOGFmZmE2MzJhNzMxZDFhOWJmMDg4IGxlZ2FjeS10cnVuaworNzAwMDAgNzEyYWE1YmI3YjQ4ZDVkN2NlYzNhMGM5NDA3ZmUyN2VkM2ZlZmZlYyBsZWdhY3ktdHJ1bmsKKzcwMDAxIDg2MjI4OTQ3YjY1ZDFmOTA2Zjg4ZDIzM2YzZjBiNThkYTJmN2U4NGEgcHkzaworNzAwMDIgMTQ5ZGM0YmM4ZWNhMDMxMjMwODc2MDFjZTBiZmNhODU4ZGQ5NTIxZSBsZWdhY3ktdHJ1bmsKKzcwMDAzIDhiNGRhMWY0OTM4NDVjYTA3ODIzMTAyMmE5MWNiYzkxZjVjYTljOTAgbGVnYWN5LXRydW5rCis3MDAwNCBmMTcwNzI5ZTMwMzgyZDljMDI1OWVmYjcxMTdlNTFiZmM2ZWY3MzdmIHJlbGVhc2UyNi1tYWludAorNzAwMDUgZjJlNmE1ZWExMGZlMGEwOTY4YWJiMDg4MjU4OTdiNDc1MmNkYzVlMyBweTNrCis3MDAwNiAzNjk1Y2FmZWY1OGQ5MzQ0ZWEyOWNhNTY5N2RhZWUwYzA5MDc1ZGExIHJlbGVhc2UzMC1tYWludAorNzAwMDcgYjdiMjM4ODdmYmRlNjgxNTBlNzU0ZDg3YTYyNjRjOTU0ZTZjYTIwZSBsZWdhY3ktdHJ1bmsKKzcwMDA4IGVjMWY4ZWI0ZGE1OTRmNWVkOTQwNzk0YjQ4MTY3ZWQzNjA1MmNmYTYgcmVsZWFzZTI2LW1haW50Cis3MDAwOSBlOWQwM2Y2YjBkNTkwNTZmYTk1NDZhMWUyNzU1YTIxMjI1N2ZmYWNhIHB5M2sKKzcwMDEwIDIyOGY4OWFlNTViMTAwODI3YmMwOTA1OWJmZDM2NjYwNjU0MTI0ZWEgcmVsZWFzZTMwLW1haW50Cis3MDAxMSAyYjYwYjQ2NTEzZDI2M2Y5MjA1ZmJmNGNmOTg4NTY3ZDdlOGU4MmMxIGxlZ2FjeS10cnVuaworNzAwMTUgYzRmMjdlNTQ2Y2Y1MTc1ZTUyZGMzNjU3YmZkYzVmZjJmNzEzOTIwYyBweTNrCis3MDAxNiAxMDVhNTMxN2U2OGUxMjkwOTlmZjllOTQxZTIwZGUyZmYzOTJmNmRlIGxlZ2FjeS10cnVuaworNzAwMTcgOGI2ODk2ODg3OWM3MGRmMTBhMDJlMDJlM2JhNjY5M2NjZDMzODZkMiBsZWdhY3ktdHJ1bmsKKzcwMDE4IDE2NzNkOTU3MzExYTBiYjRhOTMzZDZiYTRhY2ZiYjFiOTkwZWRmYTIgcmVsZWFzZTI2LW1haW50Cis3MDAxOSA0ZmQ4MGU2NmIxMDcyMmYzZDQwZjM3NzQ1M2EyZjE2NGQ3NjFhYzRlIHB5M2sKKzcwMDIwIGRiMWRiZjA1NzE0N2E0YTk5NjQ5OWM3YjFiMDczZjkxODMxZmY5ZDggcmVsZWFzZTMwLW1haW50Cis3MDAyMiA4NjZmNzQ3YzE5NmYxMzc0ZDlkZmYwNTVlZDhkZmRiMzFlMjkzZDFhIGxlZ2FjeS10cnVuaworNzAwMjMgODAwM2EyZmI2MjViYTEwMzg3ZGM5MTFlNTlhMGY2M2EyOTc2N2ZjYyBsZWdhY3ktdHJ1bmsKKzcwMDI0IDVkYWMwODFlNzMwZDA4MDVjYTU0OGQ5NWQ4MDg4NDlmNjNjNWQwODAgcHkzaworNzAwMjUgZWIwM2U1YWU3MTA5YTY5NzRjYzIxOGFkZDdmYjU3YTJhMmQ3ZmE4OCBsZWdhY3ktdHJ1bmsKKzcwMDI2IDgzOTk4MzU5NTMzODI5MmEzNDBkNDYwMzZiNDU4OWVlMGY3OWRlZWMgbGVnYWN5LXRydW5rCis3MDAyNyAxZjg0NzA2ZTgxNmMyZTcwZWNmNjAyNmI4NmQ3NTRiMTZkODI5MzI3IHB5M2sKKzcwMDI4IDFmMGRlNDk0YmMxMzEwNzZkNDU0ZTMxZTNjZjQ3ZWIyNjNiNzIyMjggcHkzaworNzAwMjkgOWI2MmNiNjUzODkyMjc2NWE4MjRjOWNiNDVjNzE5YWZlNTk3YmY0NSBweTNrCis3MDAzMCBhNWYwMzcxODUwZmY1NGY0NWYyYTI3OWU2MjA1ZDNkYjVlMjVjZjE4IHJlbGVhc2UzMC1tYWludAorNzAwMzMgYjMwNmM3MmZmZDcwMTBlZDFhNmM3NjdmOWY0ZDFlOGI0NGM3NGUwMCBpby1jCis3MDAzNSBkMTU1NmI4MTk1ZjI4YWQ0NTcyMzZlOTk5MzA1YjgwMjM3ZjdkMjBkIGlvLWMKKzcwMDM3IGUwOTQyYzY3NTM3MjhiNzRiZjZjY2FhOWYxZmVkMGU5MGMzMjE5NTEgcHkzaworNzAwMzggYjcxZGY0NGQ1YmJmMGE2YWJjYTEyMDhjYmNhYmZjZWIzODgwMWEwNSBpby1jCis3MDA0MSBmYzgzY2ExYWMxMTA4ODEzZTFhZmVjNGRiMDJkYzIzMTI5YzZmOTgzIGlvLWMKKzcwMDQyIDM1YzFkNTI2MDdjODRmOWY3MjE2NjllNjMxMWZhNGM4OGU2YzhmMTIgaW8tYworNzAwNDMgZDI0NTMzZmIzZjQ3YTE5ZmQwNGRjYWIzNmY2YjIxOWYwMmUwMDczYSBpby1jCis3MDA0NCBmNzVmYjlmNDcxZDA5YjI1Y2RkYjBjNTg1ZDY1ZTJlZjNlZjBjYTc2IGlvLWMKKzcwMDQ1IDMxNDdiM2I3OGRjZjdlYjMwNTYyNjg0OWZkM2IyNTU5ZjU4NTU5ZTggaW8tYworNzAwNDYgYTI2NWY1OTk2MWY2NmEzZGViYzQzM2QxNGU1MzI5YWIxMDUzYmVkOSBpby1jCis3MDA0NyBjODRkY2FjN2U2OWExODUwZTg1ZmRjNmY3ZGZjMDEzOWQ3NjBiYzAwIGlvLWMKKzcwMDQ4IGYzMzlkYTgzODU4ZDk5MTA0NDQ0YzAwN2FjOWNmMzdmZTdjZDExZGYgaW8tYworNzAwNDkgNzg5ZmY4YmQxOTBhNWI4MDE1ZDUxNzIyNTliODZlMGExMTNkOWJkZSBsZWdhY3ktdHJ1bmsKKzcwMDUwIGJlNWE5Yzg0ZjZiY2NhN2VjNDlhZDZkMzI4MGVhMjUxZDA1MTk4YzIgcmVsZWFzZTI2LW1haW50Cis3MDA1MSAyMDYwMzgxMjFhZGVjOTc1NTM1N2IzNTBmYmY4MDIzYWIzY2M4Yzk3IHB5M2sKKzcwMDUyIDlkZTVkNjJhZDQwMjI4ZWY2MmUyN2VjYWU4YWU3NGE0MmQ0MzFjNmUgbGVnYWN5LXRydW5rCis3MDA1MyBiYTZjMzA2Y2YyY2VlNzcxZmNjMTQyOTU0MWVjZmI1MDc2NDZjOGFjIHB5M2sKKzcwMDU0IDkwMDM3Zjk3ZDg3MDdiY2ZkZGY4MDgzZWU1MTJjNTBlY2VkMDZhODUgcmVsZWFzZTI2LW1haW50Cis3MDA1NSA3NTlkYmFjZTUxZDJlZDFiZWRiNjQwNTRhZmUyY2JhNmExY2NjMDI0IHJlbGVhc2UzMC1tYWludAorNzAwNTYgMjlkNjUyZTNmMmQzMmFiOWNmODNiYmU0NGU2YWJmYjk5ZjIwMjg2YSBsZWdhY3ktdHJ1bmsKKzcwMDU3IDBlNmZhZjI3YjUzMWYyNzNlMTcyMjZjNzhlODQwMzZiYWJiNTI5ZjggcHkzaworNzAwNTggYzY0ZDRhOGFlMmIyZWNiODA5YWM2ZDg1ZjRlNWMzODZhMTdlYTMxMiByZWxlYXNlMzAtbWFpbnQKKzcwMDU5IDJhMGY4NGFjNDlmMDkwM2MzMWRkNTU5YWFlMDQ1Zjg0M2M2MmVmM2EgcmVsZWFzZTI2LW1haW50Cis3MDA2MSA2NzI0MjViZTM4OGE2OTIxZGM4YTc2YWJmODNkNDE5MmNhMWY2NWQ4IGxlZ2FjeS10cnVuaworNzAwNjIgNGUxNTU2MDEyNTg0NTgzYTE4Njg5YmM1Yjc4NzA2YjI2NjdjM2ZjZSBsZWdhY3ktdHJ1bmsKKzcwMDYzIDc5ZTY2YzExZGM4MGNhMmEwYWQ4MGIwNWVhNzU0OTNlMTkyNmRkZTIgcHkzaworNzAwNjQgYWUyMjYzMWE3ODdjNDliOWY0OWUxNTJkODllYWZiZjVhZWUwOGU3MSByZWxlYXNlMzAtbWFpbnQKKzcwMDY1IDY3NjU2N2UyYTcxMTkyMTI2ZjAzNDJkY2E1ZmNhN2JiODcwNjA2NjYgcmVsZWFzZTI2LW1haW50Cis3MDA2NyBkMWEzMTRlMGVmZjcyMDAzNWZiZDQ1MjIwY2RmOWE4ZTdkYTM1N2FhIGlvLWMKKzcwMDY4IDYwMTFjMDkyZTIxMzQ2ZWU3YjM1YjY2NGZjNTMzN2I2MTk3NmY4NTEgaW8tYworNzAwNjkgN2ZhY2E2OTU4ZGFjMDJkYWI5MDM4M2NjNzBkNDc2OWFmNzdkNDM2MCBpby1jCis3MDA3MCAwYWQzZGUyMTZlODNlNDNmZmVhNWZhN2U2MzBmYzZjYzcyNDY1YWM4IGlvLWMKKzcwMDcxIGVmOGZlOTA4ODY5NjhiMWViNDY4Y2I5MWViYWUxMDNmNzczZmExN2YgbGVnYWN5LXRydW5rCis3MDA3MiA3NWZmNjY5YmY5OTZkZWE5ZjBlM2JjYjg2YTU0NDM2ZGJjZjNmMmRmIHB5M2sKKzcwMDczIGI0MjE0NDFlZTY3OWM1ZThjM2IxMjc0ZTVmMTIxMWM2OGM2NTE0NTYgcmVsZWFzZTMwLW1haW50Cis3MDA3NCBlNDI4N2Q4Yzk3NDE3YWU1MjYwYmNjOTI1YmFhYTQ3MDNiZDdhNTViIGlvLWMKKzcwMDc1IDlmMzAwMzYxMjRmNjc4YTAzNmUwYTAxYzAzOGE3ZDE4ZGJkN2RlZmMgaW8tYworNzAwNzYgZTFjZTY2NmQ3NDA1YTYzN2U0MDg1YTExNzRkYjEyZjc3MTYwY2YxYyBweTNrCis3MDA3NyBmYzJhNmY2ZDM2YWNhNTFlNWMyNjI1YWNlNTI5Mzg2ZjQxZTk5ODhjIHB5M2sKKzcwMDc4IGQ3MDc3M2M5YWRhZDJkMWE3OTBhMmI0NDMwNGQxNTVjYjU2NDA3NzAgbGVnYWN5LXRydW5rCis3MDA3OSA1ZGY2NmRmYTZmNjRhYzY2YjIzYTk3YjJkMTJmY2U5ZWY3YjFhYjE3IHB5M2sKKzcwMDgwIDJhNDU4MTA2YWZiZmUzNWI5NmYzODBhMTMwMmQwMGRlMDA1MWEwNzIgcmVsZWFzZTI2LW1haW50Cis3MDA4MSAyYzU5MDNhMDJiMzYzYTM4ZTNjODA0OThlNmI5OGMyMDI5YmExNTc5IGxlZ2FjeS10cnVuaworNzAwODIgNjEyZmM2ZWU2OGY3NDUxODU5OTllZjdhYzAzNzM0M2U4YWRlNWUyZCByZWxlYXNlMjYtbWFpbnQKKzcwMDgzIGI3NjMyZGYxMTIxZmI3MjM1ZmZiMzNkNGUwYTE4NmQxYTY1NDdjNmIgcmVsZWFzZTMwLW1haW50Cis3MDA4NCA2ZmQyMzE5MTdlZjdjMjMxZTM4YjRiMzRhZTY0ZmM0ZTRiZTNlZGRhIHB5M2sKKzcwMDg2IGE2YzI0YWFjZThjYmQ3NDEzMmU2ZGM1MzU4ZWY2NTcyOGYyZmJlYzYgbGVnYWN5LXRydW5rCis3MDA4NyAyY2ViMmE3Njg4MGQ1ZmYzMTQwYjk1ZmMxMTIwY2E2OTg2NTc3NDg2IHJlbGVhc2UyNi1tYWludAorNzAwODggYWRjOWJiNDRlYzQ3MTAxZGYxOThkYWFjN2UwYjMyZDE0NGFiY2U5NyBsZWdhY3ktdHJ1bmsKKzcwMDg5IDk5MTljMWY0Nzk1ZWY4NTE5Y2I3NGJhOThlNTdkNjNhMDIxOGY3MTcgcHkzaworNzAwOTAgOGY1ZDhmMjdjNmZjZGM5ZGI1MDUwOTI3Nzc3MDE2Y2Y1ZDRlYTEyYyBsZWdhY3ktdHJ1bmsKKzcwMDkxIGRjZDNiYzJlMjM3NzNjMDBkOGRjZGI0N2ZjNjViOTg4MzNlNWJhYzUgcHkzaworNzAwOTIgNjBmY2ZkMTM3YTcyOTJjZjJmZWJkYjY2NjVmYTVkNDM3ZTVjMzgyZiByZWxlYXNlMjYtbWFpbnQKKzcwMDkzIDA4YTRhM2Y5YzUwZTljMDE1NWQ5ODZiNGY1ZjBkN2Y5YzRhMzRiODcgcmVsZWFzZTMwLW1haW50Cis3MDA5NCAwYjk3ZmZiODExYTAxMjEyYTc1NDg0NDBiZTljMzI1OTQ4NDFiMDk1IGxlZ2FjeS10cnVuaworNzAwOTUgMTljMWExY2ViMTI5NTU5ZWMzNjRhNGY1ODY4ODkyMGQ5ZWZhOWYzOCByZWxlYXNlMjYtbWFpbnQKKzcwMDk2IGMyYThhNTJiODExZGM4YzVkOTg4YjdhYzY3NmQ5MWJiYzQyMjUxYzQgcHkzaworNzAwOTcgZGUxMTNiNmQyNmQzMjc0MDFjMzg3ODJjY2NjOGE1M2Y4ZWM4ZjQxYiByZWxlYXNlMzAtbWFpbnQKKzcwMDk4IGQ1ZjEzNGEzYTgxNmM3MDkzMWYxNTZjMjcwNzliNzBhMzJmYWI5NmYgcHkzaworNzAwOTkgOGUwM2JmZTdlZjMzMWE5YTM5NDQyOGM3ZjNiODQyODMwM2EzMDc1YiBweTNrCis3MDEwMSBjOTEwZjZlM2JiMjg3MTk4MWNiYTM4YjQyNTkwMjk0NjcxZDgwYzIzIHB5M2sKKzcwMTAyIGNhODdjNDcwN2JmZGRkODczOTBlYTE4MGVjM2JkMjA3NjBiYzlhYTUgcHkzaworNzAxMDQgODVhY2E0M2RhYmM0OTMwMzJjYzk0MjQ1NTYyNGNkNGI4YjdmMmEzOSBweTNrCis3MDEwNSBkNTEzY2UyOTFmYmQyMmZhODZiYjFhOGIxZTg2OTEzNWU1Mjc4YmM4IHB5M2sKKzcwMTA2IGRiMjlhM2ZiY2JhMGZkZmZkOTVhZWE5ODRmYWNiMDI0OTYxZWU2MmMgcHkzaworNzAxMDcgODcxMTVjNzI3MTAyYjQyMDU2MmNkYmU4YTg3NGFkYzA0YzYxNTViZiBsZWdhY3ktdHJ1bmsKKzcwMTA4IDJkNjlkMGQzYTljYTVlM2YwNjQ5MTU4NjUwNGJiMTgwNzI5ODIxMWEgcmVsZWFzZTI2LW1haW50Cis3MDEwOSA5YzU2ZWIxN2YzMzRmY2Y5NThmNDZmMGFkNmM0OTZlMTNlMzNlOGExIHB5M2sKKzcwMTEwIDRkYTVmMGRlZDM2MjJlMTJlMTZiOWFiOGZhNjRhYzk4MDBjYzY5YzUgcmVsZWFzZTMwLW1haW50Cis3MDExMSAxMTZkOTBlZjMxNjQ5NDk0OTk0MjViYjhjMzU2MDcxNDVlMmY3MmE1IHB5M2sKKzcwMTEyIDM3NGE5YWU1ZGQwZjQyYTRjNDQ2Y2NmNWQyOTliODg4MzJiZjY5MzYgaW8tYworNzAxMTMgOGZlMjk4OGNmNTUwOTJjODMyYTgwZGViYmZjZWVkODBjOWYzOGE2NSBweTNrCis3MDExNCA3YjE3NDFkNjgwOWU4OTYzYjVhODg4OGE3MjhjYTFiZmVmNjk5YzM0IHB5M2sKKzcwMTE1IDA0NTg3MzBlYjAzOGI5N2ZmNjI4Y2M2NWRjNjQxYTVjNzI2YjA1MDQgaW8tYworNzAxMTYgMTdlYTE4ZGZjYWE1NWQyZmE2Y2U0NTgwMDk3NmFiMTMzMzExZDA5NyBweTNrCis3MDExNyBkMzQyYTcyNWIyZDU4OThiZTM1Yjc1NTQ4ZWZjOTEwMWI3YzVlZmZmIHB5M2sKKzcwMTE4IDAzODMyMzU2YzA5Njc0NDhlMTg5ODE2Mjg5ODI2OGUxMDk1Zjg3NTMgcHkzaworNzAxMTkgNmMwOGJmZTc4ZmZmZWIyYjY1NDdhZjQ4NTkyYTNjMDNlOGNhY2FmMCBsZWdhY3ktdHJ1bmsKKzcwMTIwIDRhNGRhOTY4ZGUyYTk4Yzg3NTZmOWVhMmE5NDlmZDM1ZjAzM2Y3ZmYgbGVnYWN5LXRydW5rCis3MDEyMSAwYzYzNTU3NGIxMzllMGNjZGEyODMyOTM4OTI5MDdmNTFhZmI4MTY0IGxlZ2FjeS10cnVuaworNzAxMjIgNmIxYjJlN2EwNmU5N2Q1OWY0Y2UzZWI2ZWUyNmQ0ZmFhMjg4NWZkOCBsZWdhY3ktdHJ1bmsKKzcwMTIzIGIzNzNiOTk2MmMzNWFjMmQ0MDQ1MWIzODg0YWMyYTJhN2MzYTRhOTcgbGVnYWN5LXRydW5rCis3MDEyNCA0ZDA3OGQ1MjJmMjU5NzUyZDdhNjE3MjdhYzhjY2M4MGI5ZDg3MmRkIHB5M2sKKzcwMTI1IGZkMDhlOTQ0OWE0Mzg4M2Q0ZDRkMGM2NTAwNzNiYzY2YmFiZDQ1OGYgcHkzaworNzAxMjYgOGY3YmU0ODc3YTYwNmYwMGE5NWE1ZmQ1MzkxNTlmMzFjMjM5N2QzNiBsZWdhY3ktdHJ1bmsKKzcwMTI3IGU4YWY0ZTI0ZjA4ZjhkNGQ2ZjVmY2FmYTIyN2NiZTc3ZWI1M2Q1NTggcHkzaworNzAxMjggMjU5NmRkZGJkMDU3YjdkZjAyZjVmMDczOTI4NWUwMjY3NDg4MTExMCBweTNrCis3MDEyOSA1YWQ4OGI5MTkzMThhNTQ1MzUzOGY3YmY5YmI3ZTJkZjg2MjNkYTU5IHB5M2sKKzcwMTMwIDBhNjA5YmE1NGY1YzY1OTQ1YzRmOTlmODY0ZTdiZmU5MTExOTNhMWMgcHkzaworNzAxMzEgOTgyNTAyODI2Zjc4OTg3NjZlMjlkZGU2MDVjZTM0MWIzOTEwNWI5NSBsZWdhY3ktdHJ1bmsKKzcwMTMyIGFlNzFkZjkzOTRkYWM4YmNkMDIxNWUwNjA0ZTY2MGE3ZmE1NGVkMzYgbGVnYWN5LXRydW5rCis3MDEzMyAxMTc3MjU4NmJjNDM5N2VkNjg1ZWY0Y2VhZWFiY2U4ZTZmMjIxOGQwIGlvLWMKKzcwMTM0IDczOGZhZDM4YTRiZmU1YjYyY2FjODE4NzkxMzljMGFmODlhMzk5YjYgcHkzaworNzAxMzUgNWI0ZThmNGU5Y2JkNjJlOThkNWNkZDRkY2ZkNmY4MTk0ZDU3MWYxZSBpby1jCis3MDEzNiA2MWQyMGU5MTlhOWU2NmY5NTMzNTJiNGFmMmViNmYyMmU2YzI1NWMyIGxlZ2FjeS10cnVuaworNzAxMzcgODAyMzNkZjI0ZjhjYWQ1YWIyZWViZWQ0MjRhMjFkZTU5NDY0YWFlMiBsZWdhY3ktdHJ1bmsKKzcwMTM4IDkyMGE0MWQ1ODFiNTllZWYzNDM3NmQwYmE3NWE3ZWRiZGJmNThmNWIgcHkzaworNzAxMzkgZTY3M2Y5MzkyNDAyZDc1NTQ3NzY3YmU0MmJiNmI3NTRlNTk3ZDRiNiBweTNrCis3MDE0MCBjOTZlMWFiNGRhYjNhYTA1Mzg3YzViOTk4NzdlZmM3OWRiODUzOTMyIGlvLWMKKzcwMTQxIDM4YWE2ZjM2Y2U0ZmMxMDFjMWMwOWM3ODZiZmNlZTIwMzg2NDBlMzYgcHkzaworNzAxNDIgZDc3MTcyZWI2ZmU3ODlkMzNiOTE1YzNlYTJkZmRlMzg4MTBhOWI4ZSBweTNrCis3MDE0MyAzYjg4NWI5MmFmNmNkY2Q0MTgyNGY5NjU5MmEwNTc5ZDg5ZmJmMzk4IHB5M2sKKzcwMTQ0IDc3ZWZiYjNjMzExMGMwMjk3NzRmN2ZkN2NlY2VmM2NmOThkN2EyN2QgcHkzaworNzAxNDUgMDFmODNiYjRhMWM0ZDJiZjk3NmNlMTI2NGU1ZjhlM2M1NWQ1NmRhNSBsZWdhY3ktdHJ1bmsKKzcwMTQ2IGY2MzJhNGU2ZWUzMTQyY2ZkYWI3MjBhYjU4ZTM2MmNhZjQzZDRjNWQgcmVsZWFzZTMwLW1haW50Cis3MDE0NyA3MTExODQ1YzJmNWUzYTIyZTUxOTBkMjg0ZjYwOGZiY2U1ZDUyM2I3IHJlbGVhc2UyNi1tYWludAorNzAxNDggN2Q2OTA3MGEzZDc4M2RlYjBmMTI0MDFlMGU1OGNiNjAyZWFmOGUxZiBweTNrCis3MDE0OSA3Nzg1OTljZTgxYTE0YzY4YTZjN2RiZDk1YmIwZTc4ZjZhMzhjNzg5IGxlZ2FjeS10cnVuaworNzAxNTAgOGEzZGFkY2NkMjA3NTNhYWE0ODU3ZGVmMjM2MzM4M2YyMmRkZjkxMCBweTNrCis3MDE1MSA3MWRhZTIyZTE4MWQ5ODNlMjk0Y2FjZjhiMjhjNzliYjYwZGI5MDQzIHB5M2sKKzcwMTUyIDMwNDlhYzE3ZTI1NmJiMzBiNzlmMTEzNGEzN2I2NTdlMzBkM2I3OGIgcHkzaworNzAxNTMgNThkYjRkZWI3YWIxNmQ3N2RhMDliMjA1NDQyNWIxZWViODQxZGRhOSBsZWdhY3ktdHJ1bmsKKzcwMTU0IGViZTEwODEwZWJlZGVjYmZmZWM3OTY4Y2VlZjkxZWRmYzk2Njg1MzEgcHkzaworNzAxNTUgMDE1OWFjMmJjNzg3YzQ5OTgzNWRkNzg0MzBkMzc2MjYwMDc3MmJjNSBweTNrCis3MDE1NiBlMzdiYjMwMjU1ZjMxMTczNjAzOTljYzQwYmFiY2E3ZjcyYTdlM2VjIHB5M2sKKzcwMTU3IDQ1NjNlNjEyMDU0NGMwNzgxZjhlZjQ5YjZmMDE0OGMyNWI1Njg1MjMgcHkzaworNzAxNTggMTk0ZmQ0MDE5MjJlNjA3ZGI5MTE3OGM3Njk2MzY5NzBiOWQyNmZhMyByZWxlYXNlMzAtbWFpbnQKKzcwMTU5IGY4NjcwYTdkYTIyOTZiMDBiZTlhNWQ3YTc5Njg1OTEyMTJjZGE4YmUgcHkzaworNzAxNjAgNzY4YWVlYTJiYzBmZGJhMzczZDA1MWUzZjQ5NjkzZTIwY2ZiZGNmMSBweTNrCis3MDE2MSA1NWYzYjg4MWNlZDI2MzcxYzY5NWZlMGM1NTk3NmJlMmRiMDNiZWQ4IHB5M2sKKzcwMTYyIDBhNTMzZGMxZGViMjI3NzI0OWUxYWNiNGJjNDEzNGFhN2Y1Yjg0ODQgcHkzaworNzAxNjMgNzZhNTc5YjZiYWRlOTVkMWVhMTk0ZDRmNThhODI4MjA3ZmZiZGU5NSBweTNrCis3MDE2NiAwYzAyODY4NWI0NGMzYmI0YTEwYjE2MTJlYzBiMDg5MDYwNWZiYzljIGxlZ2FjeS10cnVuaworNzAxNjcgMjQwMjMxYWM3OWNmZDAxNzFkMDg3NTgyNmYwNmMyNzJmN2MxYzBkZCBsZWdhY3ktdHJ1bmsKKzcwMTY4IGViMmMzNWRkMjI1YWIzNDQzOTgyZDkyNjdlYzgwNmI5NDg1N2ViYTAgcmVsZWFzZTI2LW1haW50Cis3MDE2OSBmYTljYzRkNDE4NWY3ZmQyYzlkMTI0OWRmMDdmM2RlYmFhMzVjMWJkIGxlZ2FjeS10cnVuaworNzAxNzAgY2UyYjc1OWRjN2YzNWYxNmZiNmQyNGU4MzQ3YTFhOWFmYmJjMjc2YSByZWxlYXNlMjYtbWFpbnQKKzcwMTcxIDRkMGQ2MTVkMzc4NGMyZDE4NDdjNDM1ZDQyMjE3OGM3M2EwNGM5NmEgbGVnYWN5LXRydW5rCis3MDE3MiAyNjI5YzQ3ZmE2YmNlNGY0ODdjYzM4NzgwN2FmYWFhMTI4YjBiMWQ5IGxlZ2FjeS10cnVuaworNzAxNzMgYzhhOGVjODdmZjFmMmYzZTMyNzIyYzEwMGU0MzU3M2RhNDNiYTczMSByZWxlYXNlMjYtbWFpbnQKKzcwMTc0IDQxZTQwNzI4NjYxMDVkNzk0OTkwZmI4NTM5NjNlNDQ1MTE5MThjMjcgcHkzaworNzAxNzUgMzBlZWFkYzQ2NTIwZmJlNDY2YWY2NGZmMzdjMTU2MjNiM2JmNWNiMSByZWxlYXNlMzAtbWFpbnQKKzcwMTc2IDM5ZTlhMjBiN2Q3ZjUwNTRlYmVkOWNiMjQ0OWE2MWY1YWJmNmRlZWUgbGVnYWN5LXRydW5rCis3MDE3NyBkYzNkMjQ4MjRiNjAyN2E3Y2YzNzU3YTJmNmI4OTlmMmU0YjRiZjMzIHJlbGVhc2UyNi1tYWludAorNzAxNzggMjc2MjQ0ZmZjYWVlZTFjZmE0NjJhYTUwZmVmZGRmZjVmNjZiZTg4ZiBsZWdhY3ktdHJ1bmsKKzcwMTc5IDVmMjQ1YzcwMGJiYjE1MGE1YWFiNTJjYTRiZmRiZTE2YjVjZDZhY2UgcHkzaworNzAxODAgNGI1NDMxZmIyZTkyMDIxZGI4ZDQyODY0ZTIxMDliMDYyOWEzMTc5NCByZWxlYXNlMzAtbWFpbnQKKzcwMTgxIGZiYzc3NTk3NjNiMmM4YzBiZDY3MzdhMWQzNGNhMWIxMDk3MGVjMWUgcHkzaworNzAxODIgZWVhYTg3ZmMzYmZkMGNiNzVjNzdlOWZlMzI2MTUwNGZiMTI2ZjkwMCByZWxlYXNlMzAtbWFpbnQKKzcwMTgzIDc1NzkyOTI4ZmNlODliY2ExZThjNTAxZGNhNzczNzBhNGVmOWExZjEgbGVnYWN5LXRydW5rCis3MDE4NCAzM2U5YTE0NWZkMzgzNTdlZDQyYTUyZWJmNTBjYjJlOTlhNjNkODYwIHB5M2sKKzcwMTg1IDk5YjY4ZDdkN2E4OTJmMjk5YTIwNjQxYmRjNzM0N2IwMjg3Mzg0OTggcHkzaworNzAxODYgZmRkZWU1NDU2MDEzYWMwMWU1ZmY1OWZiNmVmNWVmOTA5MWVhZTk5OCBweTNrCis3MDE4NyAxZmMxYzQxZDEzNmY0YmNkODk2ZmEwY2FjNWIyMzM3NzVlZWM2ZDVkIHB5M2sKKzcwMTg4IGY0OGFmNzdlZTg0ZTIwODI4YmQ1M2I2NmEyYWIwZjU3Y2Y0ZDFmZjMgbGVnYWN5LXRydW5rCis3MDE4OSA3OWVhMDY2NzYwNGIzNzIyZjJkMmNkMTZhMGYwOTk2MWZmNzgwMmQ4IGxlZ2FjeS10cnVuaworNzAxOTAgY2RkM2Y2MGQ5OTc0ZjQ0NzY5Y2Y3OWRjNTk3NGE5OGJhZDMxNmRhYyByZWxlYXNlMjYtbWFpbnQKKzcwMTkxIDI3NWJiZWUxNDZhYjA1YmY0ODdmMDliNGFjYjM0MTljNmFmMzM3OTEgcHkzaworNzAxOTIgYThiOWFhMDI4ODk5YmU5NTkwYmEwYjBmODM3ZTIxNGZiYzRhOTA2MSByZWxlYXNlMzAtbWFpbnQKKzcwMTkzIDljZDM1NWE3OTg0NTZmODA4MzdiZDg0YjQzMzI4ODRmZTNmZDVmODIgbGVnYWN5LXRydW5rCis3MDE5NCBkMDFkYzg0N2I1ODYyMWMyZTU0NWQ5Y2M3NDQzMjE5Zjk4ZDE2ODYzIHJlbGVhc2UyNi1tYWludAorNzAxOTUgN2IyNzk2NzhhNmExZGI0NGEwNzhhODNiNDQ1ZjlkZjMxNzIwNDc1NCBweTNrCis3MDE5NiAyNjk4NDQ1MGM3ZTlhODE4OWE4YmVmMDcxMGU5Nzk1NGQwMGMwOWM0IHJlbGVhc2UzMC1tYWludAorNzAxOTcgYWZlZmI3NzE2NGFkM2JmMmRjMTc0ZTA3ZjZkMGE5ZTE5NGI3MDc4MiBsZWdhY3ktdHJ1bmsKKzcwMTk4IDc3NTgyOWNmMDBkMmFiZWM0YjRjZGI1NjE5NTIzMTQ3MjBkYzRjYTggcHkzaworNzAxOTkgOGRiZDFiOTZmYTZiNjkwZmQ3ZGMzOTE1ZDEwYmUyYjVmNzkxNzVkOSByZWxlYXNlMjUtbWFpbnQKKzcwMjAwIGM3NzIzNjI2ZTRlMTA2ODA4MzdhNjNjZTI0YzA4MGRmMmUzZjQ0YzUgcmVsZWFzZTI1LW1haW50Cis3MDIwMSAxZjlkZTUzOTgzYzE1NTEzMTgwZTEzNDY3NTcyZTQ2NWExZTNiZDY4IHB5M2sKKzcwMjAyIGJlYmM0ZWVmOWU4OTNjNDAxOTJjOGFlYTJlZGM4OTY2YTE3OWQxZDUgcHkzaworNzAyMDMgOWZhNzk0OTY0MWQzMDA5YmI2MTk4NWFiZWNmZTkyYjNhYjQ3ZjA2NyBweTNrCis3MDIwNCA0YTNiNDRjMjFiNGYzZGE3YzgyZDViNTMyMWZhNTZhMzE4NmZhOGRmIHJlbGVhc2UzMC1tYWludAorNzAyMDUgM2I5ZjVmYThiY2NkOTFkMmQzZDIxYTRjN2UxNjNiYzAzY2E1ODA0OSBweTNrCis3MDIwNyBjYWJiMGRkY2I4OGU0YTdlMzEwZWZhNDZlNDdkZDEyMjM1MzJhZDY3IHJlbGVhc2UzMC1tYWludAorNzAyMDggMGY2Zjc4N2YxMDNiMjhiNDMyMzU4NmQxNzM0NDYxNDM2MjgzMTEzNiBweTNrCis3MDIwOSBhZWY1Y2ZlNzMzNThkNDhmZmRhZDkyMmIzMWIwMGMwYWY4NzI4NmU3IHB5M2sKKzcwMjEwIGY1YjgxYmU1OTE1OTQ2ZTNmOTIyNGQ2ZDliYjZhYmFjOTVlZGY3YWUgcHkzaworNzAyMTEgOTBhNjY5MTVjYTkxOTcwMGEyNDk5NWE2NjBjNjYwOWVmNzZmMmZlYyBweTNrCis3MDIxMiA0NjUwZWNkZmNmYjY0MjM3ZDI5YzIyOTI0MzgzMmQ0YmU4MTI5ZGQzIGxlZ2FjeS10cnVuaworNzAyMTMgMmIyYjUxZjMwNDA3OTk3N2ZhMTg5NWU3MjMwYzhiN2RjMGIwMjEzNiByZWxlYXNlMjYtbWFpbnQKKzcwMjE0IGZjYzYyMTFlMGQ3MTA1ZTNmN2JiOTNjYTdhMTZmMTk3N2FiNDE1YTggcHkzaworNzAyMTUgNmYwZDIxMTNkZDIyMjYwMGVmOTBmZTQ0NThlZGMyZmRmOGMwMWY5NSByZWxlYXNlMzAtbWFpbnQKKzcwMjE2IGE5OWZhNzY3MTNmYzY2ODljZWMwNjU0NTY5MjMyY2Q1YzI5OWRiM2YgcHkzaworNzAyMTcgYmJiYzk3NDZjNzBkYzQwNmI5ZTA4ZWUzYTcwNTUyZjhjY2QxZDhjMiByZWxlYXNlMzAtbWFpbnQKKzcwMjE4IDQzM2UxMTZjMzM1ZGJiMmVjYzg2MzA1MDU5YTk2OGM4OTI2MjA0ZDEgbGVnYWN5LXRydW5rCis3MDIxOSAxMTQ4NTBmNzNlM2E1ZWJlNzE1ZTI1ZmYyZTFhMTU3YTk1NjVkYjVmIGxlZ2FjeS10cnVuaworNzAyMjAgNGU3NDQ5MzQ4YzFhNGQ1ZGUxMTM2ZDg0YmQxOGI1YzUyN2VlOTI5ZCByZWxlYXNlMjYtbWFpbnQKKzcwMjIxIDAzYzgwZTA3NDJjMzQ0MDhiMDFmNTE5NWMzNGU5MjY3OTc4YjRiZTMgcHkzaworNzAyMjIgMTA2Njc3NmUyODIwMzYyNGNjMTkyZDEzNzI5OTc5YjhiZTI2NWNhNCByZWxlYXNlMzAtbWFpbnQKKzcwMjIzIGM3OWVjNjNlNmMwOGVkM2U5NDZhMzQyZGJlMTI2OTQ4ZDUwMzAzNjQgbGVnYWN5LXRydW5rCis3MDIyNCBiOWNkNjkzOTI2NjY3ZDE4NjRkOWUyZTc3YmNiZDEwMzk3ZWQ2YzJhIHJlbGVhc2UyNi1tYWludAorNzAyMjUgNmRiYjJjMWMwOTAwOWQ2NjIyMGVlNmQyMDM5MjBhYzYzMGQ3ZGIwZSBweTNrCis3MDIyNiBmNTE0NWFiZDRiYTI2YjEwYTk4Y2Q2MjEzODY4ZjRkM2VlM2ZhNTI2IHJlbGVhc2UzMC1tYWludAorNzAyMjcgZTllNDZhZGU2MWM3ODY4NDk3ZDNmZjI4N2Y1MDRjYWUzNzZmMDFkMiBweTNrCis3MDIyOCBhNWUzMmMwNmUxNGIxMjg3YzhlYzY5MjQ2YTU5N2Q1YTZmYWFmYWNmIHJlbGVhc2UzMC1tYWludAorNzAyMjkgYTg5ZmRiYjIzYTRhNzg1NmM3YzZkMjIzZjg4YmZmMGFmOWExYTNkMCBweTNrCis3MDIzMCBiYzFjZTM2ODk4NmU0NWIxZmFmOTZmOTM5OTVkZjQ2YmNkNzVlN2I4IHB5M2sKKzcwMjMxIDM2ZDdmYWE1ZmY5NjE0ZTYyN2RmMGJkZDVjNjdjOGRiZjE3NTgwNDUgcHkzaworNzAyMzIgYWJhNDQwNGY1ZDlmZjUxOWVlZDliZjMwYTBlNzE2ZjE2MTA5NTJiNSBweTNrCis3MDIzMyBiZmMyZmE0Yzg0NDQ5YjYxZDlkYjFhMzdmYjZiNzc0M2JhNTg3MzA0IHB5M2sKKzcwMjM0IGY3YjA2YTk2NTliODUzMDVhODFhYjMwNThiZGRmYmVkZDU0ZDhmYzkgcHkzaworNzAyMzUgNDM3MDQ0ZTYyZDNkM2JkNDk0NjUyNDMwYTUwZjY5OTdhYzA4OWExYyBsZWdhY3ktdHJ1bmsKKzcwMjQ0IDlmMmY4NmRmNWIyNjQ4Y2E2OWExYjc1OWFmZDc4ZjljOWQ2Mjg4NjIgbGVnYWN5LXRydW5rCis3MDI0NSA1Njk4M2NmZGY1ZDRlMmU4ZDk4ZGFlMmEwOGNhMTVkYzM2ODczZGQ2IHB5M2sKKzcwMjQ2IGRjZTI4YzZiOWU4NWEyOGQ4ZGEyYzllMGE4ZDZhOTcwMGIwOTEwMzkgcHkzaworNzAyNDcgMjAzM2Q0NWE1Yjk5NjgxZTE0MGRmYTNjNDE0YTQ5NDEwNDJhY2E4ZSBweTNrCis3MDI0OCA4OTVmNjhlY2IwNTVjM2YxNTY2NTYwMGE1MzE5NDVjMDdjNTRjZWZkIHB5M2sKKzcwMjQ5IDgzNmU0ZGFkZjZkMmNjNjViOGQwZjQ1NmU5NDJiMTE1MTM0OTJmYjEgcHkzaworNzAyNTEgMTA0NWZkNjNmYTczMzVmZjkxNWM1NmRiODU0NWE2YzhlNDNlYjIxZCBweTNrCis3MDI1MiBjZjA5M2E3NjMwNTMzY2ZiZGE0NzhjZmVlNzUyYjFlZTUzNjFlMjZiIHB5M2sKKzcwMjUzIDY1MzcxZGY0MWFjYTYyNDFlZTg4MTMwNTRiMGI3ZTZjNDU5ODcxZmMgcHkzaworNzAyNTQgNTU0MDc0OWEyOWJiODczMDZhYzVmOTNmODhjOTY0YWFlMzIxNTAyZSBweTNrCis3MDI1NSA3MGRlY2I1ODBkZDkxZjBjYTczZGYxMmE2ZTA0Njk2ZWM0YTQyNjVmIHB5M2sKKzcwMjU2IGMwNmYwMmE1ZTk2MjdiMTkwODVmNjYzZTUxODk4ODRmNTA1NzUyNDYgcHkzaworNzAyNTkgYmMwMmRlMjc4NzQ5MDNhYmQ5MzBhNDQxNmNlZjAwNmUyYzM5YjExYSBweTNrCis3MDI2MCBiOWJkMmUzZjc5YmE4YTY1ODUyOTk2NjJhNTQ3ZDA1NmZlZWE2YjBmIHB5M2sKKzcwMjYxIDU5ODI1M2RiMWY1ZDExMmMzODIzZTg0ZTBiZGQzMjViYWE1YWJkNjIgbGVnYWN5LXRydW5rCis3MDI2MiA0ZDdmNjNhYzlkMjQ2NTg4OGFlZGVjNDYwOWU2NjkwN2ZhNWUyMWIyIHB5M2sKKzcwMjYzIGIxZWNmZjVlMjcwNDA0MjJjMzZhNjk5ODIyNTcwNDY5MmU5MWJhZGYgcmVsZWFzZTI2LW1haW50Cis3MDI2NCA1MDM5NzZjZTMzNzNlNTg5YmMxMGJjYTAzODI2MGU3YzQ5MWQxNDIxIHJlbGVhc2UzMC1tYWludAorNzAyNjUgZjQ2N2Q0N2Y2ZGU1MmFkZjYzZmQ0ZDFkMjE1YWIyYWFiZjZlYzY0ZiBweTNrCis3MDI2NiA3ZmNiNzg1ZWMwZjUyN2Q0OGIyMGRjYjE4ZGE1ZWE5MWQyY2VmNTBmIHJlbGVhc2UzMC1tYWludAorNzAyNjcgOTdhYzgzZTQ1MjcwNjFiOTFjYTBjN2RmZGE3NjU2MDQ4ZDM3MmEzMCBsZWdhY3ktdHJ1bmsKKzcwMjY4IDU0NTdlNDZkOWRmZDQ2MjlhNjgxNTU3ZDA2OWMzYWFhMzY3MWQxODUgcmVsZWFzZTI2LW1haW50Cis3MDI2OSBjMTU0MjNmOWZhYzM1MGYzOTI4YTE2OWI4ZjAwNWU3MzUwYzQxOTIwIHB5M2sKKzcwMjcwIDNlNjc2YmYyODMxMDNlZTAxNmY3Yzk4MTgzN2U2OWI2ZGFlNDIzNTcgcmVsZWFzZTMwLW1haW50Cis3MDI3MSA2MzQ1NmQyYmY1YTA4OTE3YzkxMWMzOTYxYTQ2MTU2ZTcyOWI2MTBkIGxlZ2FjeS10cnVuaworNzAyNzIgNWM5MWE2ZTE4NTY0ZjA0ZjMzNGQ2YjE2ZTcwZGFmN2YzOTYyNjMyOCByZWxlYXNlMjYtbWFpbnQKKzcwMjczIGJjZmI3ZDY3OTE2MTU5YmNmYTQ1NzUyYTQ0ZjZlYmNhM2MxMDdmMTUgbGVnYWN5LXRydW5rCis3MDI3NCA3ZjcwNzQ5MjhjNjgxNDJkODA1MjY3NDViOWE1NWY3YjU3OTBlZDgzIHB5M2sKKzcwMjc1IDFhODM5MWNjNGI0NGNkNjZlYTk4NDI1NWExYjBiYTFhNTMxZDkzYTggbGVnYWN5LXRydW5rCis3MDI4MCA3OWZlMDdlMTMzODhlYzdhODQ4Y2EyMmU0M2Y1NWU1Mjc5ZTZiM2FkIHB5M2sKKzcwMjgxIDQyNTUzZTM1ZjhlNGI0OTY2NWI5YjA0ZTFlZTg2ODRlZTkwNzNlMGUgbGVnYWN5LXRydW5rCis3MDI4MiAzYjQzNTc3ZTE5NzFjOGMxMzgwYWYwY2IyYTE3YjM5YWRmOWM3YTQyIHB5M2sKKzcwMjgzIDdjYmQ0NGMyMDNjZjk1Y2FhNzYwNGJmZmM1NDVjMmVlYjliNzEwN2EgcHkzaworNzAyODQgOGVkM2NiYWMxNmJmNTY1M2ZhNDJjMzIyOGI3OWFhOWM0ZDdkYTlmYyByZWxlYXNlMzAtbWFpbnQKKzcwMjg1IGRhYjQ1OTcxYzU2ODg0MWQyMzg1MDg3NmFmNDFmNDEwZTg4MjBjMGUgcmVsZWFzZTMwLW1haW50Cis3MDI4NiBmODA0YjhhMjUxMTVlN2IyMWVhMzE0MDNmM2ZhMDM2OTBhZjdhNDNiIGxlZ2FjeS10cnVuaworNzAyODcgYWUzMDA2YzdkNWIwMTk5YzU2ZjgwZTY0ZTQ2ZTcxYWI3ZDVkY2JmZCBweTNrCis3MDI4OCA4OWQ4YWYyNTkzNTMyNzRlNzcwMTAxOWJkYTk1MTA2Y2YxOTYxMDM4IHJlbGVhc2UzMC1tYWludAorNzAyODkgNTYzYjRmODgzZWQ4OGIxNjYyNzg3Y2I5MTA1ZDBjNDIzN2FlZGM5ZCByZWxlYXNlMjYtbWFpbnQKKzcwMjkwIDU0Y2ZhY2FjNmQwYTE1NWQxOGVkOGZjNjNhZTg0N2M0M2Q3NzQxM2YgbGVnYWN5LXRydW5rCis3MDI5MSAwMzA4MGZhMDhkZmU3Y2NkZjE1YmNlMTViNGM3MGJkYzE0NmRmYzMwIHB5M2sKKzcwMjkyIDViYzlmNmNjNTYxZTA0MTdhNDMzODQ5ZjQ1MGFlYTNkODc4NTc5YzMgbGVnYWN5LXRydW5rCis3MDI5MyA0ZmRkY2Q0ZThlYjUxOTg2M2NhMGE2NGEzMzRkMzUxMTJiMmViNTY3IGxlZ2FjeS10cnVuaworNzAyOTQgYWZkNzExOGM4Y2NmYjQwY2E1NmU3ZDNmMTE1YjBiNGNhZGJjNDYxZSBweTNrCis3MDI5NSBkY2JmZmU5MThhNmY4ZWM2ZWQ3ZmExNThhZDljYmMyNGFiNWFlMGYyIGxlZ2FjeS10cnVuaworNzAyOTYgYWI3YTcyMTVlNDYzNjk1MGYwYWNkODk5OWEzYzc1OTUzZmIxODFmZSBsZWdhY3ktdHJ1bmsKKzcwMjk3IGM1ZTIzYjljZWRjYzk5NzQwMzc2ODA0M2Y0ZGI2ZjU0OTBhNDE3NTYgcHkzaworNzAyOTggYjA5MTFiNWEwMDJlZDg0MWI2Y2YyNWNkODA0ZTllODQyYTA1OGMwZSBsZWdhY3ktdHJ1bmsKKzcwMjk5IDIxODUwZDZkNWI0ZDQwYTk2ZWMyODg4NjA0YWNkMzk5ODFiOGZlZTggcHkzaworNzAzMDAgMDM4MjkwMWM2ZWJkMjc5NDYxMTczNmFmZWNmOGE3YTEzOGNmNTkxZCBsZWdhY3ktdHJ1bmsKKzcwMzAxIDNjMDRkMzRjMDQ5NzE3Y2U4YmNkZTljM2I2N2Q5MzU1NWRjNDM0MzkgcmVsZWFzZTI2LW1haW50Cis3MDMwMiA0MzIyZTZkZDJhNmM5ZWQ2NDgyZTE5OWM0YWMzMzY4MGUzZDgzNzA2IHJlbGVhc2UyNi1tYWludAorNzAzMDMgMGM3ZGFjN2UyZmIwODExMmMzNzAxNzVkMWY3OTMwYTVlMjgyZGQ2MiBweTNrCis3MDMwNSBhNjBmYWNjOWY3Y2Y1NTViMjU0YzBjZjc1ODJmYzUwODlkMzA1NzNmIGxlZ2FjeS10cnVuaworNzAzMDYgZjUxYTI4YjEwNDI2NTE0NTEwZTMzZTViZGZjNTAyYWIwYmVmMzY5ZCBweTNrCis3MDMwNyBjYmNiMjE0MWFlZTU5ZTg0Yjk3ZGY5ZmE4ZWRhZjk4MzUxYzcwM2QxIHB5M2sKKzcwMzA4IDNlY2Y2YzNjYzgxZTBlYjdmZGY0NWY0NTY1OTdhM2RmYzNkM2IzN2UgbGVnYWN5LXRydW5rCis3MDMwOSA4YjBiOWVlNThmNjdiODFhYWJlZGNhZTMxMmRmNjU4OTE2OTg4NWEyIHJlbGVhc2UyNi1tYWludAorNzAzMTAgNDhmZTYyMzE3MWE0MGQ1M2M2ZjI2MTY0NWQxNTFmN2Y1NDc5MzVlMiBweTNrCis3MDMxMSA4NzU4ODFmZjY5YTRkNTQ4YWNjOTZjY2U3MWRkYWIzYzg1MGYyZmU4IHJlbGVhc2UzMC1tYWludAorNzAzMTUgYmViNzg4MjkxYzdhMTZhNmYzNzllZDhlYTIwMDBjMDhlZTg2MmViNSBsZWdhY3ktdHJ1bmsKKzcwMzE2IDVkZmM0NWJkYTk2ZDA5NTBjZTI0ZDllNmNhOTg2MjE1NTExMmFlZGQgcHkzaworNzAzMTcgMzQwMGNiMTBkOWNmN2Q0NjFlZWYzZDFhOGFmMDhmYWJmNjdlN2RlMyBweTNrCis3MDMxOCAxZWI1N2JkZGZiMzhiZTlkNjk5OGZlZTBjOTk1ZTQ3MjBkYmY5ODNjIHJlbGVhc2UzMC1tYWludAorNzAzMTkgMWQ4ZTRiY2VjZjJhYWE5NDEzYTYzMGFkNTcxMDkzYTBiYjM4NGViNCBsZWdhY3ktdHJ1bmsKKzcwMzIwIGJmNjdlNWE4OTNmOGVjMGI1NDZkYTI3MTE1MTBhODYwMzI1NWZhNmMgcmVsZWFzZTI2LW1haW50Cis3MDMzMSA2YjAyNGZmNWI1OGY2YjJkMmY0NzBlMWJkYjJmNzU1YmEwYTRjZmQ3IHB5M2sKKzcwMzMyIDJlOGU4OTdhMTI0NDdmMWMyYWY0M2JmZTQ2YTkyYzAwN2UxOGU2YTkgcHkzaworNzAzMzMgMWE4YmJjNWZiM2VmYzI1Y2NiZWE3ODQwNzI5MTRmYTM2YWVhOGQyYyBweTNrCis3MDMzNSBmMTg4ZGQ2ODYyMGU2YTRhZGIxODVhZDcxYWUxYTAzMmE2OGNlMjk4IHB5M2sKKzcwMzM2IDA0YTViNjQzODUyNjRlOTYzOGMzZTNiNDQzZTljMGM4ZmI3MGE5NDUgcHkzaworNzAzNDIgMGU4ODU4MmFhM2NlNzA0YTIwN2QyNjMyMzhhN2VlNjdjNjc5ZjkzOCBsZWdhY3ktdHJ1bmsKKzcwMzQzIGU1ZTY0YTBjNGFhMmMzMWU1MzdmZDEzOWY5ZWZkYWZiYWVhYWU4YzggcHkzaworNzAzNDQgYjM2M2UyOTc1NmZmMjU4NjNjOTg5NzFkOWJiZjVhMGJlOTYyODk5ZSBweTNrCis3MDM0NiA0ODA0ODNjM2Q5M2UzMTM4ZjcxZTA3YTVhY2VhNzhiOWRmODQ0ZTIzIHJlbGVhc2UyNi1tYWludAorNzAzNDcgMjI3NDdlODc0ZjQ2YjkwNTA2YzZkYmQ2M2Y3ZGM1NmRlZjYzMTMxZiByZWxlYXNlMzAtbWFpbnQKKzcwMzQ4IDYzMmFhNTY4NDc0Yzk4NGYxMjZmOTBjOTNkZTAzOWFjZTRkZDg4YTkgcmVsZWFzZTI2LW1haW50Cis3MDM0OSA4YjEyOGUwNWVjNzQ1NTlkODIxNTBhNjg1ZGFlN2E1OGIxNDgwODUxIHB5M2sKKzcwMzUwIDc5MGNiOThmOGI0ZmJmMDVkODgyZjUzNGRmMjAwMmM0OWVkNmU2MjkgcmVsZWFzZTMwLW1haW50Cis3MDM1MiBhNTk5NDc1YjY5YzMwMDgwMWJiOWExODJlMWY0Y2ViZGJkYzhjODE3IHB5M2sKKzcwMzUzIDFmOGQxMWNkNDY4NDIwMTlhOTJiNGVlMTk0MjlmYTgyY2E2OGIxYzggcmVsZWFzZTMwLW1haW50Cis3MDM1NiA4NjFjZDQ2ZWVhZWU3ZjUzNmE0Mjc2MzliZGFkMjA3ZGZkODUyYWZjIGxlZ2FjeS10cnVuaworNzAzNTcgYTRjOWIwYjBhOGU0YmQ3NDcyODhmZmExNjY2YzhhN2VjYTYyYWZhNiBweTNrCis3MDM1OCAzMTY1OWY5Mzc2MTNjZjY2M2VhZmMwNzIxMGEyNjhiMDQ2NWQ4M2MzIHJlbGVhc2UyNi1tYWludAorNzAzNTkgZjI3Y2FhY2I3NDI2NzllNTBkZDkwNjc5YmE3Zjc3ZjY5ZGMxZjA2MCByZWxlYXNlMzAtbWFpbnQKKzcwMzY0IDNmMThkNjA5YWMxYmQ4NzIxOWRlZmE0OGZlYmJmOGFmMTU4NWQ3MjYgbGVnYWN5LXRydW5rCis3MDM2NSBjNWZlYjA1OGZmYzRhNjFkNTk3YjhlZTA4ZjM1OTliYTIyNDExNGQ3IHJlbGVhc2UyNi1tYWludAorNzAzNjYgMWMwYTBmN2I0Zjc2ZjlkNThkMTY3NDVmMjRhZWZmNmIwOTJkM2I1NCBweTNrCis3MDM2NyA3Mzc3YTRkOTVhNDRjYTEzODBjMzc1ZTRiOWNmZDQ3NTE2Y2Y1MWM1IHJlbGVhc2UzMC1tYWludAorNzAzNjggMWY5NmQ3MzNhNzQzOTBlNjE2MmMzZDNkYmNhYTBiYmYxOTczMjBiNSBsZWdhY3ktdHJ1bmsKKzcwMzY5IDRlMWExNTc2ZjFlNWNmNTY4YzBhMzA2MmE5NDgyMjlkNGU5YTQxYzUgcmVsZWFzZTI2LW1haW50Cis3MDM3MCBjMWRjODdiZDg4M2M5ZTdlYjk3NmUwMmE2ZjgyNzQxZjE5NTFlN2U5IHB5M2sKKzcwMzcyIDBiMTliYTMxODA3MWIxZGUxZDVhMmFhZmJlNzRmNjg2NzI2M2YyMjIgcHkzaworNzAzNzMgNjJmOWRhZDYyOGRlZmMxOTMyNGIyMDcwYjM2ZDUzMmRjZDgzZjM4ZSBweTNrCis3MDM3NSA2OWNkNjE1Yjc2ZmJkNDY2ZDY3NzRmZGY2NjA3ZjRhOGNlYTNlYzgwIHB5M2sKKzcwMzc2IGU4ZmQ3OTc2M2JjY2NlYjhjMmY2N2Q2N2MxN2RmYzVmMjA3NzFmNzYgcHkzaworNzAzNzcgNzBmNWY5MTEzYWUxMWVjODBkYzMzZDg4OTM0N2NjOTc3MGEwNjNjOCBweTNrCis3MDM3OCBiZWFmMDBjOThiNzFlNjMxM2M2YzVjZDAzMTFmNGJkZTU4ZTA0NjM4IGxlZ2FjeS10cnVuaworNzAzNzkgMzdkNzZiNWE4MjdiYTNhMjVjYjYyNzM1NDE2NDM1ZTYzNGVhNDM1MSByZWxlYXNlMjYtbWFpbnQKKzcwMzgwIDRlOTI3ZmFmMzBlYWVlYzFhNGJjMmFhYjBkMDY0OGQzZDU0MjBmM2YgcHkzaworNzAzODEgZWY3ZTQ3ZWIyYjY5NzVkNWI1YzJmYWI3YzdjMDIzNjk1ZmM3M2IzOCByZWxlYXNlMzAtbWFpbnQKKzcwMzg1IDQ0MmJkZmU5M2IyOTIxYTljYTliYTUxY2I0OWJlOTY1YzJjMGE3YWEgbGVnYWN5LXRydW5rCis3MDM4NiAyM2EzOTY5N2ZkNjdlODU4NDE3NzJkYWRiMTZjMmViMjIyMmYzODdmIGxlZ2FjeS10cnVuaworNzAzODcgMWJlMDljNWM2OGU5OGI0ZjdjOGY4OWM4OTkyZTllNGEwMDU0MGI2NCBsZWdhY3ktdHJ1bmsKKzcwMzg5IGRlN2U0NzE2ZDljYmE5N2ViYWE1NjI3ZWU3Y2M0YWEzMzZiNzY4MjcgbGVnYWN5LXRydW5rCis3MDM5MCA2ODU1MWIyYTVmYWEyODAzZTQzZmMzY2RjYjE5ZDZkMjZmZDRlZGNiIGxlZ2FjeS10cnVuaworNzAzOTIgMmZlNWJhZjg5NTY5NTgxZDg1ZDIzYTA1NjhiYmI0ZWE2YTU2ZTE0YyBsZWdhY3ktdHJ1bmsKKzcwMzkzIDBkMTllMTE2ODNmZmViNzVlNGVkOTVhMzk0ZDA4Mzg4Y2QyOWNmOTEgbGVnYWN5LXRydW5rCis3MDM5NSA0ZTk0ZWFiNmM3YTJkMGRlZDEwNjAxZmNhNjY2NTMzODhhYmEyYzQxIGxlZ2FjeS10cnVuaworNzAzOTcgMTJlYmRhOGZiNmIzMDBhZjI3YTZiNGU4ZTcxMmNkNzNjOGQyODE5ZSBsZWdhY3ktdHJ1bmsKKzcwMzk4IDBiZTFjMWYxMjdlMDQwNzc5Y2YzYmU0OGFlOWQ3NzZjZWE3YmRlNDcgcHkzaworNzA0MDAgNmJmMGYzYWIwMjc5YWMxMzcxZTAwZDY3MGQ5OTBmZjcxNTdiZDA4YSBsZWdhY3ktdHJ1bmsKKzcwNDA1IGU0ZDk4NDRhYmEyNTAxYTliNzhlZTQ0NGMxNGYwMGM2MDA0ODI5YTggbGVnYWN5LXRydW5rCis3MDQwNiBjYmE2MDkzODMwNzgxY2I5YWJkMWVjNjBhZTJkMzgzYmZkM2Q0ZWZhIGxlZ2FjeS10cnVuaworNzA0MTggY2NlZGVmMjhmZTA0MjAyMzcyZTk0NjU2OWRiYjFhYjQ2Yzg4YmFmYSBsZWdhY3ktdHJ1bmsKKzcwNDI0IGEzMTkzYzA0MTQ5NmRlY2RmYjZkOTIyOTdiMzI3NTBmODg0ZDA4NjcgcHkzaworNzA0MzAgNmI3MzhiNmY3ZmM2NzhiNTQxMjdjOGMwYjJhZWVkYWNkZDViNTRiZiBsZWdhY3ktdHJ1bmsKKzcwNDMxIGZkNGM4MzkyODA4MDlhY2FhNWQ5YjlmOWNlNDI4MTBlMjU2YmU5YTQgcmVsZWFzZTI2LW1haW50Cis3MDQzMiAzOWY0ZmE1MWFjZmI4MDdiODllMzQ0MmVjMWJhOTg4ZGIzMjc2Nzg3IHB5M2sKKzcwNDMzIGMzNTdkNzkyNjRmOGNiZjRmNWQ3MDJiMDllZDkzYjQ0ODNhYWM5OTcgcmVsZWFzZTMwLW1haW50Cis3MDQzNCA3YzNmZTFhNGEyY2UzNDg4YmVkYWY1MGEwMGUyNTYzODQyYjU3ZDlmIHB5M2sKKzcwNDM1IDE1NzI0N2ViNzkzZGJiZTY3NTZhZjAzYWIzYjkwNzU2MTc5ZmUyZmEgcmVsZWFzZTMwLW1haW50Cis3MDQzOCAxNzFlZDZmZmM4NmM2NGM5Njk2ZTdhY2Y4MDkxZTkzNjY3OTAwMTE2IGxlZ2FjeS10cnVuaworNzA0MzkgNWRlZTkzYTk3NTU4ZTE4MWU3ZTI4YTZmYmE5Y2ZhZWYyODI3N2ZkMCBsZWdhY3ktdHJ1bmsKKzcwNDQwIDEyZTE0ZTZmMWYyZGIxZWQ3NWM1ZTM0ODRmYjFmNjJjOTgwYjJkMzIgcHkzaworNzA0NDEgYWQ0YTcyYjA4ZDNlNDEwZTdlNTNiYmQ1ZWFiZmZiMTUzNDdjYjkxOCByZWxlYXNlMzAtbWFpbnQKKzcwNDQyIGNhYzIwNzM3M2EzNGY3NGM2ZGQxNmU4MDhlMWZiMDI1NjU2MjgzMDIgcmVsZWFzZTI2LW1haW50Cis3MDQ0MyBkOTVlNWFkZDNjYTRjY2UzMjkwOGZiNzAxZmQ4ZGRjMGNhM2M4N2M2IGxlZ2FjeS10cnVuaworNzA0NDQgMmQ5NGM4ZmVkMzc2Zjc2YjhmZTk2ZTI4NzQ4NmYwMTEwODgzODBiYiBsZWdhY3ktdHJ1bmsKKzcwNDQ1IGZjZGZmZDg1YThiZDNlYmUwZWE4YjliYzA4MTQwZDUzMzRkZTM0ZTggcHkzaworNzA0NDYgMjA3YTRjMjdhOTE2YWQ5ZDBhMmI0YTI0MjhkZWZhZjZjYmVkOGQ5ZCByZWxlYXNlMjYtbWFpbnQKKzcwNDQ3IGE1Mjc0MDVhOWMxMDYxMDgzMjQ5MmY2YTllYjg5YzczODIwMzYwMTIgcmVsZWFzZTMwLW1haW50Cis3MDQ0OCBjMzQwZTNmNDliZjM2NDllNzdhY2E2MmJmNmJmZWEwMjFmMjAxZDEwIGxlZ2FjeS10cnVuaworNzA0NDkgNThiMjg2ZTE1ZWJjZTRjZGY5OWNkNDAyZGM1NzEwODhiYzc5ODUyNyByZWxlYXNlMjYtbWFpbnQKKzcwNDUwIDU5MzgwYjM5MGM0MDYyNDlhMDQ4NjQ5Y2IyYzZmMGI0ZTQwMWIxMzggcHkzaworNzA0NTEgNmZlNjQwMWRhNTFmOWNhY2JhZjA2NmZiMjU4YWY2NmEzYjU0NDhlOCByZWxlYXNlMzAtbWFpbnQKKzcwNDUyIDc5NjQyYjU4ODFlMGE2YjIyMmQ3OTZkMTYwNDJlZjRiOGQ5NDQ5MmQgcHkzaworNzA0NTMgZGE0ODQwYjJiYTA2MTJmNzRjMDJlM2QyNTI2YzRjNzM0MWE0YzI5ZSByZWxlYXNlMzAtbWFpbnQKKzcwNDU0IGM3M2RkMjVjMDFjMTIwNDEwNzBlMTEwMmJkNzMwZTk3OTA0MWM3YmIgbGVnYWN5LXRydW5rCis3MDQ1NSA2YmE1ZWU1YTIyMDk0M2EzMDcyMzc3NmIwNjJlNmY3ZDYyZTY5ODY4IHJlbGVhc2UyNi1tYWludAorNzA0NTYgN2Q4ZmQ3OTU1ZDE1NTc0MDdiMTRmNDZlZjEyNDUzMzFmNTgyZjdjNCBweTNrCis3MDQ1NyAzZWUyNTk0NjliYTgyODA0NjhkNzM2Nzc5NjYyYTc0NGFkODAxNmNlIGxlZ2FjeS10cnVuaworNzA0NTggN2I1MzYwZmEzZTE5ZjI5MDZiZjRlZDAzNWZjMmE4YjM2MGRiYWQxNSByZWxlYXNlMjYtbWFpbnQKKzcwNDU5IGJiNWRlMjRhMzQzZjY5NzE1YjI0Zjk5NDFhODBlZWQ5ZTg0MmU4OGMgcHkzaworNzA0NjAgOWY0NjI4YjQ2NTViMGJlOTgyMDE1ZDZmZWZkYmMwN2QwOWE2MGI3YiByZWxlYXNlMzAtbWFpbnQKKzcwNDYxIGZmZTRiOWExMDM1Y2QzNjg5MTQ2YTQ5MTBjM2MyY2EyYzI1ZTc3MmYgcHkzaworNzA0NjIgMzcwMzE3ZmI5NTE1NTYxODM4ZGU1ZDY1MGQ5NDc3NzQzMmY3MzM1ZiByZWxlYXNlMzAtbWFpbnQKKzcwNDYzIGQyYjc4ODdmOGM5YWVjMTAxY2I5ZmFjMTc2Y2JmNmI3ZGQ2NjRjNjkgbGVnYWN5LXRydW5rCis3MDQ2NCA5MmZlZmNkZGJmZTg0MDE1MWE5ZGUxYTUyOTJkODBmNTA2MzgwYTUxIGxlZ2FjeS10cnVuaworNzA0NjUgZmI4MGIyODFlMDVhYTBhYWZlYjRmMGY4NDQ1YWQ3MDIzZjExZGE2MyByZWxlYXNlMjYtbWFpbnQKKzcwNDY2IDdjZmJiZjJkMjk0ZTUxMmEzN2NhMTc1MTk0NGY5ZGVjYTNhZmE1N2YgbGVnYWN5LXRydW5rCis3MDQ2OCBlMmMxY2JkYTJhOTU3MjVhMTEyY2FhNDM5YjQ5NjgwZjFhNTM4YjhjIGxlZ2FjeS10cnVuaworNzA0NzAgMWY3M2UwOTg0ZDU1OWU3ZGE3Mjk1ZGMzMGMyNzc2M2JlYzg4YzFjNCBsZWdhY3ktdHJ1bmsKKzcwNDcxIGExMWE2NzZmZTZjMDVhYWJlMjk1NDJjMDAyMTliYmJlZWVhZDkwZmMgbGVnYWN5LXRydW5rCis3MDQ3MiBlYWQzZGU0OGFhZGQ3OTZmY2I1ZDNmZjZiNzAzMzk1ZDMwMzJjMWUxIGxlZ2FjeS10cnVuaworNzA0NzMgOGZkMTcyMWMzMmM0NzVjMzRiMTk2YjJjMDI4MTljZGM4MWQ2ZDI1NSBsZWdhY3ktdHJ1bmsKKzcwNDc0IDExMDBhNTA2ZWRjZjA1MTA2OTI2OGZiYTczOGUwYzY4MmQyZWZkMzUgcHkzaworNzA0NzUgMjkwYzc1MTNlMTI1Mzc1YWUzOTY4Zjg5NDZlYWNiYjFlMmYyNWIxZCBsZWdhY3ktdHJ1bmsKKzcwNDc2IDQyMmUyZTY3NjNlOWExN2VmNmEwYzIzODYzZjQ5ODg4Zjg4Yzg2MGMgcHkzaworNzA0NzcgNGZkYjEwZGJjNzM2NzZjNjBiYjhkMmEwMjE0MTMxY2Y4YWQ1NGQ1NiBsZWdhY3ktdHJ1bmsKKzcwNDc4IDY2NDY5YjY1ZDU0ODQ0NGNiZjhjMTllNWU0Y2Q0MjZhNjM2YTQ5NWIgcHkzaworNzA0NzkgOWIzNThlYWU1MzJhNjIxZjUyNDU1NjhlMmJjOWNmYmZhNjIwMzE3ZSBsZWdhY3ktdHJ1bmsKKzcwNDgwIGQxYzBmNTUwNDBiYWQ1MjRiMTZmNjE2ODBhMmUwNmE1NzdlMDZhYTAgcHkzaworNzA0ODEgZTdjZjQ2OWQwZTEyODNiNzJiZmMzZjc2NjZmN2E1MzUwMmNhNTk0MCByZWxlYXNlMjYtbWFpbnQKKzcwNDgyIDVhMDJmMGNmM2MzODFlZDVjY2QxOGE4ZGQ4Y2VkNmI4YzhmODBiODggcHkzaworNzA0ODMgMzk1OWQ1MDRiNTRjMzUzODhkZThlZjI1MmE5NmY4ZTVkOGFhMGNhOCByZWxlYXNlMzAtbWFpbnQKKzcwNDg1IDc4N2YyNWIxMjdlZTYxZDBhN2E3ZjVkZGZhOWZlZThlYzFjMGVlZTUgbGVnYWN5LXRydW5rCis3MDQ4NiA3M2ZkYzA3NjgxZTM3ZjBiOTQ5OGFhNzUwOTNlYmIyYmQzNGJlY2YzIHJlbGVhc2UyNi1tYWludAorNzA0ODcgNTA1NzdhZTJjMGMwYzUzOTMzMWNkNTdlM2QwYTFhY2QyMGM1NWFlYiByZWxlYXNlMzAtbWFpbnQKKzcwNDg4IDIyNzM3ZTk1ZjZmNzU1NDQyYTUwMTk2NWEzMzI3YThjMDcwN2Y3YWEgcHkzaworNzA0ODkgNmMwYzE1YTJlZDJkM2ZlOTQ4YTQ2NmRmMTQwNjg4MDY4NWM5NDM1NyBsZWdhY3ktdHJ1bmsKKzcwNDkwIGE0NzBkMGEwMjU2ZTc0MmYyYzlmN2E3NTI5NTkwMTI3ZGRlY2ZmYTAgcmVsZWFzZTI2LW1haW50Cis3MDQ5MSBkOTJhNmRlYzhiZmVkNzUyMTllNjVlZWU2M2M3ZjE5ZTM5ODA0YzBmIHB5M2sKKzcwNDkyIGJjNjgxZTUzZjk0ZTA2YWRkMDJkYTBmNDI2YTI4NjNlNmE5ZGE1NGEgcmVsZWFzZTMwLW1haW50Cis3MDQ5MyBjNWI3OTU4ZjQyOTIwNmUwOTVlZThjMTYwMzhkZjliNzk3YThhNjhlIHJlbGVhc2UyNi1tYWludAorNzA0OTQgMmEzYWYyMTFmMGUxMWZhNzQzNzVmMjQ5MWQ2ZDlhNzA0MzhlMTE3MiBweTNrCis3MDQ5NSBjN2IyY2M4MzU4ZjY2NTZlMmM3ZWI1MDI4Yzg0NDQ1YzNhYjMyOTFmIHB5M2sKKzcwNDk3IDVjYWNlNzViY2IwNTZjYzYyNzI2ZjAxZjQ2NzZiZWU0MWQ3NTEwMDYgcHkzaworNzA0OTggNWFhNjNkZGQxNTEzNDU0YTc3ZjQxNDYxZWVlMDAxNDg3ZDJmOGNmOSByZWxlYXNlMzAtbWFpbnQKKzcwNDk5IGI4NDZkNzA5Y2I3NjMyNzAxYjAxNTJkNThjMWE0Yjg2OGVhMTQ2NjMgbGVnYWN5LXRydW5rCis3MDUwMCAwMjkyODEyMTMzOGQ5MzFlNDAyMTU5NzNhZGNkNjM2OGJlYmZlNmU2IHB5M2sKKzcwNTAxIDVjNTgyMzY2N2RkZDVjZWVkZTk0MzVmMjA5OTgxYjk1MTYyMmYwOTIgcmVsZWFzZTMwLW1haW50Cis3MDUwMiBiODkzNGRkOTI2N2RlMDNiZDc2Zjk5MTg2YjhkNzVhMWQ2ZjYzODk3IHJlbGVhc2UyNi1tYWludAorNzA1MDMgMmQ2ZmY1Y2QyNjAwMTI0NmExOGY1Njc1YmVhNjBmZTZlN2YyZTZhZCBweTNrCis3MDUwNCBmMjc3N2VhOTU0Y2EyNWJlZjFjMmU5MTRmOGZiMTNiYjlhZDQ3YzYxIHJlbGVhc2UzMC1tYWludAorNzA1MDYgNWIxZjAyZGM2OWEzOTE5MDVlNzBiMDM3NzdiODViM2Y4ODU4NTI0MiBweTNrCis3MDUwNyAzYWIyZTUyZDhkMTk2OWMxNDNhZjAwZjE2YjFjMGMyYmMwNGRkNjE2IHB5M2sKKzcwNTA4IGU0MWY1YTg5ZjVjMDZlOTliZjY0NmY2Mjc2N2JlYTAwMTZkNDYyNzggcHkzaworNzA1MDkgYzY2ODhlOTE1NmI1OTE3ZWVkODY1NTMxNjdmYWJkMGQyMDJiZTU1ZCByZWxlYXNlMzAtbWFpbnQKKzcwNTEwIDE4ZDY1NjUxMjM1ZTQ4OTEzMmQxYjg0ODYyZTVmZDE1MTc1YmFiMDkgcHkzaworNzA1MTggZmIyMWVhYmE5NGY2ODllZWQyN2M5OWNkYWE5MWI5MzAwN2E5MTk5NyBsZWdhY3ktdHJ1bmsKKzcwNTE5IGQxYjBiZDQ4YmExNTYzODFiNzlmOWYxZTQ0Y2QzODZjZDQ3YmFhODAgcmVsZWFzZTI2LW1haW50Cis3MDUyMCBjODdlNTgyNjJkNWJjYjNlZDIzNTQyOWUxMzcyYTA2MDUxMzVjZjMxIHB5M2sKKzcwNTIxIGVmZDE3Y2I1ODIzYTk4ZmVhNjAxNjkxMjY1ZDk3YTQzYzE0MTQ4NTEgbGVnYWN5LXRydW5rCis3MDUyMiA3NTJmMmUzZTQ3NTc3ZmIwMzAzZWYwMDg5NmY1ODQ3ZjFlMjJmOGE0IHJlbGVhc2UyNi1tYWludAorNzA1MjMgNDQ1ZDQwNDI3MGVhYWJmMThiZjYzMGY5YjEwZDMyMTE3NTE2NTM3ZCBsZWdhY3ktdHJ1bmsKKzcwNTI0IDg1NmVkNDE4NzY4YzE5MDY4YWE3MWEyMDQwMDA5ZDEyYThmMzU0MWQgcmVsZWFzZTI2LW1haW50Cis3MDUyNSAwOTVkODc0YTMwNTQ5ZmFiZmVkZmVhMmVkMTI2OWI0NTU0NmZjZDNmIHB5M2sKKzcwNTI2IDQzNWI4YmExYTkwMjM0NGE1MWU0YzBlMzhiZDMzNjVhZWM5YmFkZDUgcmVsZWFzZTMwLW1haW50Cis3MDUyNyBkZDlmZGRiMDcyMGRhZjliMmNiOTU3OTJiZDdkN2Q2NDU4ZDgzMTdmIHJlbGVhc2UyNS1tYWludAorNzA1MjggNmNiODQzMDc1ZTY5MTFmMmRjYmE4NmYxMDEyZTgzMTA2MzgxZmE1MCByZWxlYXNlMjYtbWFpbnQKKzcwNTI5IDVmOGM4YzkxOGY5YjAyOWI0ZTk3YzcyYWNlNjMzNDQyMmMyZGJiZjMgcmVsZWFzZTMwLW1haW50Cis3MDUzMCBhYjM4OTg3N2YxNTJmNGM4OWJlMjA1YjhkNDFmYTdkMjU0ZGRhYTA4IHJlbGVhc2UyNS1tYWludAorNzA1MzEgMWY3MmFjOTA5NDA4ZGM0MTQyMDYxN2UxNGQxZTllMmExNzE3ZjY5NyBsZWdhY3ktdHJ1bmsKKzcwNTMyIDQ0MjZlNDkyMjY0ZjA3YWRhNTE2ZTU3Mzg3MDcwZGFmZjBlNjFjMTMgcHkzaworNzA1MzMgMTE5ZTNmYzZjZGYzNTgxZDg5NWYzYjhiMjVmNDYzYTViODYxNmI1MyBsZWdhY3ktdHJ1bmsKKzcwNTM0IGIxNjI3ZTdlNjc4ZDdkOTU5NmQ1Y2RiNTRhNWE5OWQ5YTdhMzYzMTIgcHkzaworNzA1MzUgODg5NzRjYTUwMDNmZjlkYWNmNjEwYmFmOWI0MzA3OGYyODJjYjU2ZCBweTNrCis3MDUzNiAwNWFlOWNjZmY1MTQ0Yzc1ODUwNWMwODM2M2YxMDQ2NjIxNDkxYWM0IHB5M2sKKzcwNTM3IDg3Y2I5NTA1OTFiZWUxYjhhY2M0ZjJkNmQyNmU4YzhkMTVjNTU5MDggcmVsZWFzZTMwLW1haW50Cis3MDUzOCA2ODdlNzUxYzI4OGU2ZmE1NGY4Y2QwMzNhODcyMDFjY2RiNzVlZDcwIGxlZ2FjeS10cnVuaworNzA1MzkgMTNmODg3ZTVmYTBkNzUwMjU1ZmVmYTZjNTFmNWFiMmYzYTczYjQ4OCBweTNrCis3MDU0MiBhNTRlZjE4YWIwZDg5ZGNkMWY4NzM0ZjU0YmU0NDk2YmQxZTJlZGZhIGxlZ2FjeS10cnVuaworNzA1NDMgZWRkNDMwMmNjZWFmZWVlOGIzYzBlMWExMjNhYzBjYmQxNGZjNzMwMCByZWxlYXNlMjYtbWFpbnQKKzcwNTQ0IGExZGRiNGRlODVhNTM2ODE5NThiNzA3MjJjMmQzYTkyNmIwMWEzZGMgbGVnYWN5LXRydW5rCis3MDU0NSA2MGQwNmM5OGE2MDViMTEwMjU5ZDA1NTYyNGRjMmI2MmQzZWU4NjEyIHB5M2sKKzcwNTQ2IDBlNDk4YTlmZGUzYzIyOTNmODhiOWUxY2U5NzNkNmI3ZmE3ZmEzZGYgbGVnYWN5LXRydW5rCis3MDU0NyBhMWQxNmQ5OGFhNDBkYWYwZWFjNDQ5ZWQxMzlkNTllMGY2MDM4Y2QyIHB5M2sKKzcwNTQ4IGM3MDkxMGFjNDkyZDc5ODQ2MmI2ODNhYjk2NjU3NzliNjhkZjExMGQgcmVsZWFzZTMwLW1haW50Cis3MDU0OSA5NGJkMDY2NmZmYTc5MzNmNTFmOWMyMGRlMWI4NmE4MzQ1MjcxNTRhIHB5M2sKKzcwNTUwIGIzNzkxMzA5ZTY5MDRjNzNiOTBjNTA0MjQzMDgyNTE2NGMxNzI3MmIgbGVnYWN5LXRydW5rCis3MDU1MSA2N2ZiOTAzMmQ0M2E0N2JkYWY5OWM2MzhlOTE2MjYwMGQ4MjhjZDM1IHB5M2sKKzcwNTUyIGY2ZWRjNjg2YmRlNzUzM2E5MDAzMTgzZTI3ZTQ5MWE0MmY4YWE1YWMgbGVnYWN5LXRydW5rCis3MDU1MyA3ZWRkMTQzY2Q0ZTQyZjM5ODUxM2ZiZTlkMjc0YmVkNzBiNWYxNjE2IGxlZ2FjeS10cnVuaworNzA1NTQgZGNhM2Q2NzI3NThlM2NkYzUzZDRlZWJiMWM5MTZhNjU4NzFkZmFjZCBsZWdhY3ktdHJ1bmsKKzcwNTU1IGU0YWE1MzBlNTc2MGI4YWNmYjg0MGM3MmY4OTczODNlZjY4MThiYTggbGVnYWN5LXRydW5rCis3MDU1NiAxMDg0NWUxNWVkOWIxYjYwMTgxMWZiYmM2YjY3ZjcxYThiMzAyNjNkIHB5M2sKKzcwNTU3IGQ3NDc2MTJmOGEyZmVlOThhMzU1NDI2ODcyZDAxMmEyODEwYTM2ZjAgcHkzaworNzA1NTggNjhhYzI1NTJmNDRlMTlmNWY1ODYwNTBmZTA5MDk5Y2NmYjQwOTA0ZCBsZWdhY3ktdHJ1bmsKKzcwNTU5IDZkNWM4YTUwNjliMGZmZmM5ZjJjMDkxZTg2NDdjZjk1YzkwNjg0ODggcHkzaworNzA1NjAgYWVkYTkyZjFhYjliNTcwM2JiYzI3NmU5NzRlMzQ5OGI0YjA3NDBjZCByZWxlYXNlMzAtbWFpbnQKKzcwNTYxIDU1ZjE1MDljNDViNjdmMGNjNWM4NThkYzU2NWVjMTMzYTAyMTZkZWQgbGVnYWN5LXRydW5rCis3MDU2MiA1ODY5NGM3NmQ3NmQ4MTVmOGE0YjZmOGE2YjIwODg1M2YwMWRhOTU4IGxlZ2FjeS10cnVuaworNzA1NjMgMDAyN2MwODNhMGQ0YjQwNGNlYzc1OGVjOGNmYmY0MjNjMGIxOGRhZSBsZWdhY3ktdHJ1bmsKKzcwNTY0IGVjM2UyOWYxNjBkZmQxMDEyNmVhMThiZDRlOTllNzRkNTIzZGJhZTAgbGVnYWN5LXRydW5rCis3MDU2NSA3MDFmNjhmOGI3Y2Y3NTNmOTQ2MDE0MTIzYjE3NTM5NjBlNDVjNzVlIHJlbGVhc2UyNi1tYWludAorNzA1NjYgYTJmNmIyYjM4MmI0YzExY2QxYWYwOGEyZjhiOGE4MWZjZTFhNTYzNyBweTNrCis3MDU2NyA5ODZhY2NlMjY2NDEwYmRhYjdiYWUzNjdhZjllNTJlYTRhNTBjZTk2IHJlbGVhc2UzMC1tYWludAorNzA1NjggZjBhNTA3NDE0ZThjYzc4Njc3N2I2YmFjYTRmYzBlYTJkZmNiNmVjNiBsZWdhY3ktdHJ1bmsKKzcwNTY5IDIzYzEyYWM3ZjMxNzM2YzY2NzRkMjFiODRjMWQzMzhmMTQzYWY2OTAgbGVnYWN5LXRydW5rCis3MDU3MCA2ZWRiNzQyMTYzOGMwYjIxY2IwYWFkNWM1MDM5MmM2NzQwNGRjMWU2IGxlZ2FjeS10cnVuaworNzA1NzEgMTJhZGI4MTk3NjQ3OWM0MDMxNjQ3NTMyOTBlYWExYThlM2M1N2IyMSBsZWdhY3ktdHJ1bmsKKzcwNTcyIGE4YThjZjliMjgxODNkNDRkNzAzNzI4YzhhZDQzNzQwNjQ5Njg2ZDMgcHkzaworNzA1NzMgOWI1OTliNjAxMmZhNTRkZjcyYThmMTgzNGRkNWI1YTIwNzU5MWNhOCBweTNrCis3MDU3NCBkMjEzNDEzM2JmMGM5OTUyNDgzNjk5ZDBkMjc3YTExZjk0OWNjZjM1IGxlZ2FjeS10cnVuaworNzA1NzUgODIwZjM0NzViMDhkN2YyYzc0MTIyNjM2OWVmNzk4MjE4YTQxOTdlZiBweTNrCis3MDU3NiAxMWQ1NGM3ZTA4OWI4ODUxMDhhYTJiOWViOWM5NTkzNTk4MDI4M2I4IHJlbGVhc2UzMC1tYWludAorNzA1NzcgYThkYThhY2RhMTI4NjdkNDc0YWU5NDMyOTQwZDUzNDQ4ZTA2YzY1ZSBweTNrCis3MDU3OCBhOTUxNWYyOWIzOGM4NzMyZmQzYjU2NjllYWYxNjZkOWNlZDNlMTk0IGxlZ2FjeS10cnVuaworNzA1NzkgMjQ5NGZmZDYwZWFlOTlkMGU1NmI2MTA5NzgyYzZiMjcwMTdjNmI1MCBweTNrCis3MDU4MCA2MGI5N2ZjOGYwNmRhMzZhNDkxNjc0Y2E0OGIzODc5NTIyMzI0MmMzIHB5M2sKKzcwNTgxIDAwNmM4MWY5YjBlODBlZDYwZTFkMDkyN2FlNWY4NDFmM2U3OTk0YTcgcHkzaworNzA1ODIgMmNjOTAwYmQ2YmIwMTYyY2QwZjJiOTM2NzBkNjdmYzViMGJiOTM2MyBweTNrCis3MDU4MyBiYTQyNDAxNmRiNzQ2OTYwM2Q1N2ZlMTM1Yzk3YzcwYjg4YjkxZmI3IG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODQgNzkyYTdmOTM5ZmRkZWFjMWExY2VkYzE2ZWFmODE1YTMwMGJhMzI2NyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg1IDNhZGIzOTc0ZTc3N2MwOTA3MjQ0OWQxZjM2ZjA5ZWEyNjRkYjBhZjYgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU4NiA4YWQyNTFkYTQ3NDI3NGYxN2FiMDkzYmRmNTU4YTJhOTMzMzQxNzZjIG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODcgZmRjODA2Yzc3Y2Q2ZTQyMTVmNWY2ZDEwYmY1ZmY1ZDNiZGI5ZjExYSBweTNrCis3MDU4OCAzZGY3ZjExOGU1MDQyMmY2YTM4ZDQ4MWVkY2IyNTRjYWJmMDJlMTFlIGxlZ2FjeS10cnVuaworNzA1ODkgZWZmZmM3ZWFhZDZkMzNlNzRlNTczZGM3NzE1YTYxODQyNmFkZDk0MiBsZWdhY3ktdHJ1bmsKKzcwNTkwIDVkNmMwZmM4N2E3MThlYjM2NDNmZmYxNzNiZGU3M2IyZGVjZjY2M2IgbGVnYWN5LXRydW5rCis3MDU5MSAwNjBlYTk3NWQ1OTcxMjk3NjE0MGI0NzJlYjA3NTE2Mzc1YTRkNzM2IHB5M2sKKzcwNTkyIDQxZTM0NGU1NzFhMTYwMjM2MTNhZjEwMzM5YTRhYzI3MmIwNDUzNzEgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU5MyA3M2Y0ZThhZGZlYmZkOGQyNWRhMDFkZDdkZjNjYjQ0MTQ0NDEwMGVhIG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1OTQgN2QwZTNhOGMyZTllMWIxNmNkMDNiNjg4MGEzNmI1MWM1OWM5YjgyZiBsZWdhY3ktdHJ1bmsKKzcwNTk1IDlmODk3NjU2NWY4MjZlZTBlOWE3ZTI0ZDhkOTVmNjgxNGQ3YjQxZTYgbGVnYWN5LXRydW5rCis3MDU5NiA4Y2Q2MTdjM2U3NGIwMjhlZDM3MjE3MjFlOTE4ZTIzMGI3ODUwOGQxIHJlbGVhc2UyNi1tYWludAorNzA1OTggZWUwZjc1MWI4MDIwMDNjNTNhZDU3YTBhZDU2N2I5NWQ4ZTJjZjlhMSBsZWdhY3ktdHJ1bmsKKzcwNTk5IDFmYmVjMjlmODllOGQwMmM1MTVmYzQ1ZjI3ZTkwM2Q4MGZjODM0MTcgbGVnYWN5LXRydW5rCis3MDYwMCBhNjc2ZDM2YzA3ZGQ1Mzk5ZGIwYTFiY2FkZWExNzg5NzA1NmYwODhmIHB5M2sKKzcwNjAxIGY1ZDY3MGZjZGJlOTZiYzdmNDIxYjhiNDI4YTI5ZTdmOTdjMmNiM2EgbGVnYWN5LXRydW5rCis3MDYwMiBmMjc3MDRmNDVkNGFmMzMxMzQzM2MyZmQ4ZDNjMWJlOTRkZWRhMWEwIHB5M2sKKzcwNjAzIDhiNWE4MGY1MzMxN2Y4OTllNzk5MTJkZDEwZDQzNzFhNmEwZjk3MjkgcHkzaworNzA2MDQgYjZmODYxMzIxYjQ1Y2YwZmRhYTRkYTVlYTBkMGQ3NDAxNGY3ZjkwYiBweTNrCis3MDYwNSAzZmRjNGFhMzZkNzY3MDc4YWQ4ZDJiMzZlYzAxY2ViMzYwYTYzMDM2IGxlZ2FjeS10cnVuaworNzA2MDYgNjFlZjY1OWFiNzk5ZGY2MjM3ZGUyNzA5OGM1ZmZkY2NlNjhmMzg2OSBweTNrCis3MDYwNyAzMzgyOWM3OTFiZjYyMjcwYzZlODJiZjIzZTRkYzNkNGZjOTI4MWQ1IHB5M2sKKzcwNjA4IGExMGQ5OTUxM2Y5ZTllZTNhMDU3ZWYyOGNmNGY4OGIxZGQyNDc4NDQgcHkzaworNzA2MDkgY2MxM2NjMjI0ZmY1NjhiZTExYjZjZjZhNmIzZGIxYWE1NmUwZWJhNyBweTNrCis3MDYxMCAwN2I2ZmNkZjdmOTQ5OTRlOWVhZTZiNGFjOGI4NWY3ZDA1NjYwOTM2IHB5M2sKKzcwNjExIDFlMjMzNTk2MmJhZDg1NDZhMWUxMWZmOWRkOGZhMGMwNjExNGQ0YzEgbGVnYWN5LXRydW5rCis3MDYxMiA3OGZlZGMzNDJhNmIxMDdkYmMxYjcyMjA4MmNmNzlmYWQ3MGYyZTg5IGxlZ2FjeS10cnVuaworNzA2MTMgMGEwNTJhMjg3M2IyNDE5ZGY2OWQ4ODcyODQ2OTA0ODZmMTg3ZDk2YSBsZWdhY3ktdHJ1bmsKKzcwNjE0IDAwN2U5Yzg2ZmI1NWI1ZTA4ODRiNmNhNWExODNkMjc1ODU2YzFhNWUgbGVnYWN5LXRydW5rCis3MDYxNSA0ZmU3NjI0OWE5MDkwNzBlZGQxZTlmNWQyMzgyZTUwODFhYzIwMTU2IGxlZ2FjeS10cnVuaworNzA2MTYgNTU3MjkwZmZhNzg0NzY4ZTdhOTQzZTc5NWE4NGE1YmM2ZDUyMWFjYiBsZWdhY3ktdHJ1bmsKKzcwNjE3IDljY2Y4MmU2NTMzMjhmMWQ4Mzk0NDNmOGNmY2ZmOGY5ZGIwMDJkMGMgbGVnYWN5LXRydW5rCis3MDYxOCBlNjAwOWI5Y2Q5MDg0ZmZjYWZlMGIyNTM4YjY5MzBlMzY5OWZlYWE2IGxlZ2FjeS10cnVuaworNzA2MTkgMTRjYzkyYWU5NGM5MDRkMGFjZTMxM2E5ZGM5M2I4MDAzNzVlMDU1OSBsZWdhY3ktdHJ1bmsKKzcwNjIwIDIyOGNmYjZlMjkwMGMxNDQ2Y2EwNjJmNTg4MmYxMGUwY2Y0YWVjMDEgbGVnYWN5LXRydW5rCis3MDYyMSA3NmJmMzQxYWMyMDIzN2IyNDg5ZWQ2MmZiZjcxN2FkZDUzYmQ3YWQ4IGxlZ2FjeS10cnVuaworNzA2MjIgNTAyMzg0OTRmMGYwNWRlZDUzMmI1MzU5MmNkZDg2ZGU4ZjkxMzdkMyBweTNrCis3MDYyMyA3MDU1NDVlYzMyNDNkNDI3MjU0Y2ZlMTdjYWE3MjI4ZmM2ZjY4ZmNmIGxlZ2FjeS10cnVuaworNzA2MjQgZjI2YzFjZDZjOTg1MDA1ZmVkMTU5ZDdlMTQ2MWViMTNlMGFjMDg4OSBsZWdhY3ktdHJ1bmsKKzcwNjI1IGVkZjYyNzI2MWM3YjU1OGIwZjljMWYxZGM1NTZkOWQwODJmNWM2NmIgcHkzaworNzA2MjYgZGFkYmUwMTRiZGE0ZTI3NTBlMmVkZjI1ZGIxMDI0MWRiODVhNGVlNCBsZWdhY3ktdHJ1bmsKKzcwNjI3IGQyMjc1ODRjMWM3ZDhlNzA2NDdiOTY4OGJkNDMwN2U3MmY0MWU4YjggbGVnYWN5LXRydW5rCis3MDYyOCBkYWY2NjFkMDU0NDJhN2FkZDg4YTMzNmVjNWI2YWY3MGQ4MDkwNzAxIHB5M2sKKzcwNjI5IGNhMDJiZDhjOTZmMjk4YmY5YTJhNzBjODUzMmJkNDY4ZDAzNzVhOGIgcmVsZWFzZTMwLW1haW50Cis3MDYzMCA0NzU4MDg2OThlYWZhYWI2MGQ3NTkwZTI4MDhiN2UwMzdmODkzY2NhIHJlbGVhc2UzMC1tYWludAorNzA2MzEgNzVlM2ZlM2MwNzI2NzBkMDZiOGExYjg0Njg0MTdkODIwMmZhNmY4ZCBweTNrCis3MDYzMyBlZTRhMDA2ZDAxNzFlYzE0NGFlOGE2OTQxMGVhODg0YjhkODgwNmY1IHB5M2sKKzcwNjM0IDEwYTg0YzYzOGVkYTEyOTU2OGU2MjZjYmM1ZmUwYmZlMTdiN2Q4NjggcHkzaworNzA2MzUgOGQ2OTE4YWYyMzJiYWY3ZThlOGQyMDIxODZhYjNmYmM3NWViODI1NiBweTNrCis3MDYzOCA4YjY5MTY5MGJhYmQ3MDgwNzY0ZTRhZjM2ZDZjNmE5MTkzNmY5ODI2IHB5M2sKKzcwNjM5IDlhYjc1NDExMDQzMTVmYWVhYzk5NWQzNDg1NDNlNDcxOTUzMTdkMDIgcHkzaworNzA2NDAgNDI2NWQ2YzdjMDc0M2NkMjk5M2ZiN2E5NjFkYTVmMzg3OTQwMDcwOSBweTNrCis3MDY0MSBmYmFkNDJjNDVjOWNiNmM0MWY5MGQ1ZTViNWJlMzlkN2RjNmY1Nzg4IGxlZ2FjeS10cnVuaworNzA2NDIgN2FmZjhhNzY2ZTI1MDZkYTc2YWEzNjc0NWZlZjlhZjBjNGNiODE4NyBsZWdhY3ktdHJ1bmsKKzcwNjQzIGE3MjZmNzkyODU2MTg1NDJkYmE2ZDdkNDYwYTlhMmZhMWJlMTg5OWIgcHkzaworNzA2NDcgOWRmNWQwNjk0OTIxYTYyZDgwYjE4MzViMTEzMWNkNTE1YjAzZjRjNiBsZWdhY3ktdHJ1bmsKKzcwNjQ4IGI3M2NkYWM2YTBjMzhjODVhODY0NjRhMmFiZTkwZjcwMDgyN2I5ZGYgbGVnYWN5LXRydW5rCis3MDY0OSBiYjkwZWM2N2YzMTQ4NTcyNjdmZTU0NjkxMjAyZGIwMDVjNDEwNWVjIHB5M2sKKzcwNjUwIGRhNDU2ZjQyZWJlN2U3YThlYTkxMTI0ZTc5NWU4YWY1ZWI5Y2ViMDAgbGVnYWN5LXRydW5rCis3MDY1MSAzYWRkNDAwZTQxOWZmMDMyMWVlOTg1ZjgzMzRhZmJkOTFjNGQ0ZDNhIGxlZ2FjeS10cnVuaworNzA2NTIgMWY1ZGI5NDM3ZGI4OGM1ZWNkN2ZmZmMyZDdkNzYyZGNiYmU1N2EwMyBsZWdhY3ktdHJ1bmsKKzcwNjUzIDQ5ODNmZDE5NTAzNjZiY2E5ZWM5MzY1YmNmYzYyZjRiNWFlMWIzNTcgcHkzaworNzA2NTQgYmRmYzRiM2E5MzQ3MTk1MWM4MTEzMjgwNTMyODhlZGI4MzYzNGQ3ZSByZWxlYXNlMjYtbWFpbnQKKzcwNjU1IDM5MTg3MWY2YzE2NDJiZDY4YWQ0ODFkN2YzOGQ0MmFmMGFkNGRkY2MgcHkzaworNzA2NTYgNWVmMWMxZDc0YzUxMjI3YWQ3NjBiOTNmMTZjYTVhNmZiMjM3OTg3OCBsZWdhY3ktdHJ1bmsKKzcwNjU4IDk3NmIwNzk5OTU4OTliNzliMDU1YmU0ZDE4Njg4YTBhZTRjNjQ0OGUgcHkzaworNzA2NjAgMzc0OWI4OGRiYjYxMjc1ZjViNGViMzg4NWQ0NGMyZDgzZmZiZDUzYSBsZWdhY3ktdHJ1bmsKKzcwNjYxIDU1ZDU0MjNiYTk4N2NlY2U2NDI2NDY1Mzg1MTFmZDJlYjYwOTQ2ZTggbGVnYWN5LXRydW5rCis3MDY2MiBkNGU3NDcwYmQ2NjA0MmMyYWI5NGNjMTVlYTM5NGVmM2Y0NjMwYjAyIHB5M2sKKzcwNjYzIDE1MGY1NjhkMWJhMmQwMGI0NDZiYjJjNGEzY2M3OWI4N2UyZTEwNmMgcHkzaworNzA2NjQgM2E2ZDI3ZDgwODIyOTVlMmU1MDE4NjdjMzEyZTMzNmFmMGMxMzExMiBweTNrCis3MDY2NSAxYjcyNzNhZWQzNmNlZDBiZjdhNmIwNzhjOTExNjc3OGFmNmM1ZDUzIHJlbGVhc2UzMC1tYWludAorNzA2NjYgZDA1OTM5MjYzYTBlNTE1YTAwMmVlM2RkOTRmZGI5ZjEzMjQwNzU5YyBweTNrCis3MDY2NyBiNzk0MzE5YzEyNWViNDVjYWQwMzBkZWFiYzI5YTk3NjU0YWY2MDNkIHJlbGVhc2UzMC1tYWludAorNzA2NjggZDU1ZTA1YjA2ZTRhMmIwZTdmZDBmZTYzYjc4OWVhZjRiMjY2NDliZCBsZWdhY3ktdHJ1bmsKKzcwNjY5IDdhZGQ0MjNhZjk3MTA5OGYzOTZlM2E5YjgzNDYzY2YyYWMwMjBjZTQgbGVnYWN5LXRydW5rCis3MDY3MSAzNmIzNTkyZjMwMjNiODc0MjE1YzEwZDU2ZmQzZmUxY2E0NDhhYjgzIGxlZ2FjeS10cnVuaworNzA2NzIgOTEzNGEyMDkxMDEzYzVmYTM5OTYzNWE0NjZiYzM3MDY5NGE3N2M1OSBsZWdhY3ktdHJ1bmsKKzcwNjczIGUzMTRiOTZmYjVhZDM2MjkyZmNhZDljNmE1NzY3Y2EwMDczM2MyNmEgcHkzaworNzA2NzQgZTk4OTE1OThhNDMzNDY0YzI3NDkyYmNjNzAwYTQ2MTMwYjZjNjkyNyBsZWdhY3ktdHJ1bmsKKzcwNjc1IGVmNjEyYmU3NzFlZGNlZmI1ZWY0OWRhODQ4Y2VhMjFlMDRlNzBjOGYgcHkzaworNzA2NzYgMDAxMjg4YTY4ZThiMDc0ODRiYjRmNWUxYTM3YWUzMDFmNDZmMTZjMyBweTNrCis3MDY3NyA0NmE0NWVjY2M5ZjcwMWZhY2FiNjMwZTM3NzY2MmVlNGQ2MWVmZGM3IHJlbGVhc2UzMC1tYWludAorNzA2NzggMDE5ODE1YmMzN2VhZjEyZDlkOGE0NzgyYzQ2MTU3N2IzMjBkMDUxMiBsZWdhY3ktdHJ1bmsKKzcwNjc5IDQyM2M5NDc3ZDZlZmU2ZWM4MDc4Yzk1MjNmYTFiOTkwNWYwMzUwZDcgcmVsZWFzZTI2LW1haW50Cis3MDY4MCAwMmYyOTRhMjgyMDZmYjBjZjc5ZTcxN2FmZDUyZDJmZTAwNmEyMTMxIHB5M2sKKzcwNjgxIGY0OWE5N2E5NzllYjA5MDhlMDNhODIzNzk4YzExZTYzZjdlMDIxNjkgcmVsZWFzZTMwLW1haW50Cis3MDY4MiAxYWZiMzY1ZjI0NDgyMjI3ZTliM2ZjODUzMDY1ODIxY2M1MjVjMDFhIGxlZ2FjeS10cnVuaworNzA2ODMgNmU1OTFkNGRjNmM5NmZiNGYwNTQwYzk5OGM3ODM5OTY2ZjM4NTg3YSByZWxlYXNlMjYtbWFpbnQKKzcwNjg0IGYwNWI2ZDlhZGJlNjQ3NzU3NjRhYjg2NDk4ODhmZmQxZmY1NDY5ZGEgbGVnYWN5LXRydW5rCis3MDY4NSBiYWZhZDYxY2YzMDI2MmQ3NzJkZDY1MTAzNTA0MTg1MTljYmYyYTlkIHJlbGVhc2UyNi1tYWludAorNzA2ODYgZTUwODRkNTE0ODA5ZWYwMWM2MmQ0MjlmNzQ3YzM4MjEzY2M5YmQ0MCBweTNrCis3MDY4NyBiMGM1ZGY4Yzg0YTM0NDA0ZDUxMzQ2ZDk0YjU1M2JlMTg5MWFhNzE1IHJlbGVhc2UzMC1tYWludAorNzA2ODggZjE3MWJhYzlmOTYxZDFkNzEzN2ZkNGUwZmZjYTRkMzFhYjZjMDBjNiBweTNrCis3MDY4OSA5ODA3YzI2Y2JjOTlmYTFlMDE1NWRmOTU4MjA3Zjg2OTNlZDQyMzg5IHJlbGVhc2UzMC1tYWludAorNzA2OTAgYTNiOGQxOTFlYzY4MTJlZWI1YmQyZjY5NjkyY2Y1ODJlZmEzMTZkOSBweTNrCis3MDY5MSAwNTA3YWFiNWZiMTE5ZjU5MGUyOTAwYTM0NjNmMjc2NDhjMDFlYWU1IGxlZ2FjeS10cnVuaworNzA2OTIgYmFlZTkwNTIxMTEwZGEyNTViOGFjZTAyZThmMzdmOWQzZjUzOTA0MCBweTNrCis3MDY5MyBiZWYwMGNhNDNlZmFlNmQ5YmRjMmJjOGUzZjI0NWZiNDczMDlmM2MzIHJlbGVhc2UzMC1tYWludAorNzA2OTQgOTJiYzFkZGJjNTcyNGY0ZTFmZWRhYjBmY2ExYzk2ZTRlYTA5ZjExNCBweTNrCis3MDY5NSA5NzViMjAzOTljOGQwMjljYmVkYmJlMTdiMmViZDk1YmYyZTRmOTU1IHB5M2sKKzcwNjk2IDdiNWZiYmU3YjAwOWM0ZjJiZGRmYzhiMGQ4NDZhMzZhYTY3ZGRhZDIgcHkzaworNzA2OTcgNmUxYzRhMjk2M2U0YzQxZDYzMmYyNjQ5MzcwZWEyYTY3YjUyNjdmMSBsZWdhY3ktdHJ1bmsKKzcwNjk4IDljMjNjNTRlNmIxNTk2NzQ2YmEzOGE1NmU1N2Y3NGU1Mjk3MTg5ZjggbGVnYWN5LXRydW5rCis3MDcwMCA2YWQ5YjAxZjk1Zjk5OTFhNmU0MDQxMWJmOTg0ZTU1OTc3NjljZTI5IGxlZ2FjeS10cnVuaworNzA3MDEgNzFiNjlhODczZDIxMzE2NzA4MmMxM2Q0NWUyZGY5YTZlZjVjNGM0NSBsZWdhY3ktdHJ1bmsKKzcwNzAyIDY4NWYxNzkxZmJjNTlhOTc0MTU5Nzg5YjNlZTllMjhjMzlmMTBhMDUgbGVnYWN5LXRydW5rCis3MDcwMyBhN2FlNzNhMzc4MDU5NGYzMzdhMTUyMTk4ZDQ5YzBmYmY5ZGJmMWMxIGxlZ2FjeS10cnVuaworNzA3MDQgMmQ4MzY0OWE5NGI3NWFjNjQ1NGY1MjFmNDA1YjFlMGQ5NGIwZDYwNCBsZWdhY3ktdHJ1bmsKKzcwNzA2IGZjZThmMjM4NDUyZTFjYWQ5ZjU4MGM0ZTk3ZGMxNTExOThhMDFiNjEgbGVnYWN5LXRydW5rCis3MDcwNyAxMWMzMzVhOTZmNjBmMWQ5Y2RjMmFiOGYyNjAxZDBiNDEzYWY4OTM0IHB5M2sKKzcwNzA4IDllNGJiOTQxYTFlYTU1YzUwYTBmZGI3Zjk0OWM4MTg3MDk5YWRkZmIgcmVsZWFzZTMwLW1haW50Cis3MDcwOSAwMDU3MTM5NDFhMTkzYTA2OTI4OTE2YTA0NmY3NWQxNTVkNzlmNjA1IHB5M2sKKzcwNzEwIGNjMDJjOWMyOTBhOTQ4NGJiOTI2OWFlZmE5NzE0MjllNTEyNDRhOGIgcmVsZWFzZTI2LW1haW50Cis3MDcxMSBiOWQ2ZmRmMGZiYjM2MWY5OGE5M2EyMDc0OTkxODk1MjFlN2Y4MzE1IGxlZ2FjeS10cnVuaworNzA3MTIgODRlOTllZmM2N2IyYjFhMGZhY2JmY2NiYmIzZjlkMDM4NjJjZjA3NyBsZWdhY3ktdHJ1bmsKKzcwNzEzIGY1YzJiY2IwOTQ3YjhhYTU2Zjk2Mzk2ZjZlMWM4YmYwYTQwY2IzYjQgbGVnYWN5LXRydW5rCis3MDcxNCAxNGNhZTExNjA2OWQzY2Y1ZGM3ODdiOWIwZjJkNmE1MmU3ODk5ZDJlIGxlZ2FjeS10cnVuaworNzA3MTUgMWI3Y2NjYTM0ZjJmYTY4ZmM5YzVlYzgzNWZmNTJmOTBiNTQwOWYxMyByZWxlYXNlMjYtbWFpbnQKKzcwNzE2IGFhYWYzMjY5NDg3NmE3NjliMDkwODFlOGI0NTc5MDM3MGQ3MWExMjcgbGVnYWN5LXRydW5rCis3MDcxNyA5NjUyMzBiMzM3OWYxYjgyNWMyZjAwOWE2MDc4MTQwNzhiZGM4NjNhIGxlZ2FjeS10cnVuaworNzA3MTggYjljNDk5ZTlmNzRkYTk1YjlkODMxZTQ5MWQ4YTgwOWE1YmEzYTJjZiBweTNrCis3MDcxOSBiNGE0ZjRiNjA4YWJiMWQwZGYwNWFhNzg3MGY0MzcyNThjMDI5OTQwIGxlZ2FjeS10cnVuaworNzA3MjAgYWMxNjRiNTRjOGE4YTNjMTZjNDM1NTI3NTU1MDZhNDRkZWIzNTgwNCByZWxlYXNlMjYtbWFpbnQKKzcwNzIxIGI0YWQ1OTQ4ZTE5N2IyNmI0OTY0YThjMTUxZWZlZWRjNTJlMmI0YWIgcmVsZWFzZTI2LW1haW50Cis3MDcyMiAxMDE0ZjBhYmRiNTcyMTAzY2Y3OTdlMjMxNmU2YmQwNWZjYjg3ZTcwIHJlbGVhc2UyNi1tYWludAorNzA3MjMgNDJlODdmZjlmNjVkYmQyNjc0ZTlmNzI5YjAwYmViMTU5M2I2NDExZSBsZWdhY3ktdHJ1bmsKKzcwNzI0IGViNTUyYTU5MDlmYjhkMjE3NmRjNTlkYjJlYjRlYjY3ZTVhNmUzYTkgcHkzaworNzA3MjUgMzliNjJiMmNiMmM3NjAyM2UwZDM5MDBiYWU1ZWY1NjRmMzcyNTBiMCBweTNrCis3MDcyNyA4ZGY0ZTBjMDZlOTQwMjYzYTI4NGVmOWY4OGU0YmZkMmJkOTViODVkIGxlZ2FjeS10cnVuaworNzA3MjggMmQzOGRlMDAyYmJlYmJmMDk3Yjk2NWJhYzNhZjY5ODljZTVkMWMxYSByZWxlYXNlMjYtbWFpbnQKKzcwNzI5IDA4YmYzMTg0OGE0MjJhYzE5MTZjNjBlNDEyNjQ5YjU3YjE2MzEzZDcgcHkzaworNzA3MzAgMmJmZjkxMjFiZTBmNjRjOWU0NzhjNjNiZTg0OGZmNTM1ZWZjMWJkNSBsZWdhY3ktdHJ1bmsKKzcwNzMxIDE3NWJhNzZlOWMyYjc0YjI4Y2QwYzI5MDY4YTIzOGU5M2MzM2NjZTEgcmVsZWFzZTI2LW1haW50Cis3MDczMiA5ODY1NTlkYTU0ZGUxNDEwNGE0YWUwZDFjMDc4NDM3NGMzODEyZWZkIHB5M2sKKzcwNzMzIDgxYWE0MGFiMzQ2ZDk2MTZiMDI4MzU4ZjJmZGU3ODk0MDZlZmVhNGQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDczNCBmMmM5MGZkMDVkNjZkYzljNzhkMTFjMDYwOTRkMmE3ZDdjY2M5ZTZlIGxlZ2FjeS10cnVuaworNzA3MzUgMTRlMjc1MGUyNTA2ZTU2NmI1MzIyOTM3YzdlZTU3YzJkYjJkY2JhMyBsZWdhY3ktdHJ1bmsKKzcwNzM2IDM5NTIzNDYxZWY3ZTI0NzAzNWU4ZjNlYjAzODhlMDRjOGI0ZjUxMDMgcHkzaworNzA3MzcgOTc0YzJiZWYyODAwZjBhZGU0YTU4ZDJlY2JhOTA1NmI2OGVmMDhkNSBsZWdhY3ktdHJ1bmsKKzcwNzM4IDU3MzA4NTAxNWFhODkzNDY3NDlkMjQ1NmYzOTgxYmU5ZTMyMzU4YmQgcmVsZWFzZTI2LW1haW50Cis3MDczOSA4NTdiZTVkOTUxMjA4Y2FlMGExMDdkOWFkMWIwYzA2ODI4OTM0ZTQ0IHB5M2sKKzcwNzQwIDM3NmI4MjFkYjQyOGI4Zjc1ZDVlMmM0MWFlOWRhOTcwNmYwOTU2NzMgcHkzaworNzA3NDEgZGQ5N2QzYzNmYzY2MThmNDNmYmFhNzkyNTA3NGE5ZjUzOTM5OGJkZiBsZWdhY3ktdHJ1bmsKKzcwNzQyIDNiNWJjYjkzYmQxMTlkYjg2ZDM3ZjFmZDRmMjBkZTkyYzIxNWI4MjAgcHkzaworNzA3NDMgMGUzOGI5NDFkOWU0OTBiZWI2YTMwMmYyZDY3MmZkZTJjNThhMmQzZCByZWxlYXNlMjYtbWFpbnQKKzcwNzQ0IDU0YTEwNzYzODM4OTU1ODNiOWQxZDE5MDI5NWRhMWNmYzRlNzQ2MjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc0NSAyZTVlMDAxZDdkMzZhZDNiNDUyMTRjOTU1NGYzZGE0NTY2MTM3MTE2IHB5M2sKKzcwNzQ2IDk5ODI5YzkwODA1ODEyNzgzZWQzYjgxODhkZTdiNDIwMTBlNDBhMDggbGVnYWN5LXRydW5rCis3MDc0NyAxMGE2M2I5MzBjYmFlMTRmMDAzNDQ5NGIwZDFkMzIzMWUyMjgzYTUyIGxlZ2FjeS10cnVuaworNzA3NDggMjY4YjhlYjMxZjQ5MzZlMmVmYWRjNDg3MTBmZTkyZTBjYzgyYjE5YyByZWxlYXNlMjYtbWFpbnQKKzcwNzQ5IDUyYzM2ZTQ1MGE0OGFjNWNhNjViNjM4N2Q1ZDkyNWNhYWYxN2JmNmQgcHkzaworNzA3NTAgNzU3MWFhYzNlMGMyMGEzNzNhMjVmYmY1NmM1NGY1NzU0MTY2ZThmMSBweTNrCis3MDc1MSBiOGU4N2VkZjJmNjYyODcyZmI1NmUzMDZhMjQxODVhYjVlMDc5NTkwIHB5M2sKKzcwNzUyIGVjYTkzOTAyMmI4MzJlMzdiN2Q2OGYwZDYzNjE0MzE5MDA0ODdiN2QgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc1MyBjMzcxYzA5MjRmMzUzYzlhOTE2NjQ0MmZlYjM5MGY4ODg2NTdkN2M5IHB5M2sKKzcwNzU0IGRlNjNjYmM1NjFiNjhlNmFjOGJhNmZhOTU2NDNhYWYzMGQwYjNiNjQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc1NSA0NWE3MTc0NTA5NjFjNjhjOThkYTgxNTdhMzk5Y2Y4ZDBlZDE1ZWU1IHB5M2sKKzcwNzU2IDc4MGQ2NDAxZWVkNmQ1ZmZhYTUwOTBhY2FmZmVkOGY2MTQzMzY4MDEgcmVsZWFzZTMwLW1haW50Cis3MDc1NyAyZmY4OWYwZjFkMTkwMmI4MTcxMjY1YmQ2MGU0YjBhNmM1MjAwN2NlIGxlZ2FjeS10cnVuaworNzA3NTggZmNmYzJjOTk0YTRhYTBlNzRkOTQwZDhhYTAwZTU1ODU0Y2RlNWUxNiBsZWdhY3ktdHJ1bmsKKzcwNzU5IDgzNGEzYTk2ZDNhYjQ4M2JhYWFiMWE5NWQwZTJjOWVmZTg2MmM5NmYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc2MCBlOWZmMGVmY2ZmYTkwOGFkOGNmMDdjYjM1ZDdiNTk4OTkzZGFjMGEwIHB5M2sKKzcwNzYxIDFlNzhiM2RjY2E0MmFmM2NmZDdmZTFkZTNkMjVhMTI3OGE2MmIxYzUgcmVsZWFzZTI2LW1haW50Cis3MDc2MiA4MDI3MWNlMDlhNjZmYmQ5OWI4MzNmNzU4YjAxYTZiZDRjNTczN2Q5IHB5M2sKKzcwNzYzIDk0YmEyZmFkOTM3OGE2NDNhNGFjNjNlMDEwN2IzYTQ2MTI2M2ZmZTAgcmVsZWFzZTMwLW1haW50Cis3MDc2NCA4MGVjNTBkMTM4NTdmMjg5NDI2ZTM3YzZjOTU0OGJmMjhjMmQwYzdlIGxlZ2FjeS10cnVuaworNzA3NjUgNDIzOWZhNTYyNzM1YWIxMTU0Yjg4YmVmNzdlOTA4Nzg2ZjIzMGY1MSBsZWdhY3ktdHJ1bmsKKzcwNzY2IDU2YTA5ZGQwZTBmMzMwMTQ3ZTNmMTlhMzRjYzZmNTU4YzhkMTNiODkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc2NyBmNmIwNTA1YTIyYjM5ZDk2NDcyMmQzNjFmOGZlN2M0NmY2MTA2NTRlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjggNDNlYmE3ODkxNThmZGNhMzliMTFmMzIyZWQxNzdkOGU4MzVjNTZhMSBsZWdhY3ktdHJ1bmsKKzcwNzY5IDJmMjIyNzFjZjkyNDk4YjgyYmRmZTUyZjljMjMxNjNiM2UxOWQ0YjcgbGVnYWN5LXRydW5rCis3MDc3MCBhMjg4NzEwOWYzNDA2OGVkMGZjMDZhNTRkNWU4MGU5ZDFmYjVmM2RjIGxlZ2FjeS10cnVuaworNzA3NzEgMGFmYjVkODk0NjYxNjRmZGQ4ZTlhYjYwNzM1ZjZlMDk4ODliODQ0YSBsZWdhY3ktdHJ1bmsKKzcwNzcyIDVkZWIyNzA0MmU1YTc5ZTI0N2UzYWRjOTFjYzYwYjZiMzRlYjAwNzYgbGVnYWN5LXRydW5rCis3MDc3MyAzZjgxZDk5NDVlODJhMGU5ODFiYmExMzliYmZiZjIzY2UzZGM5MmIyIGxlZ2FjeS10cnVuaworNzA3NzQgOWQxNzhjYjU0NjZhMGQ3NDJjYThhNjYxNzVlZmYxOGIyYzNjZDVhNCBweTNrCis3MDc3NSBmNGM1ZTNhNjRiZTIzYTRlY2FmZGJjZDhmNmM3OGEwNzM2OTIzM2Y4IGxlZ2FjeS10cnVuaworNzA3NzYgNWVjZTA3ODVkZjgxM2Q1NWNjYWFhZGE0Nzg4NDViNWYxNWQ0ZmE5MiBsZWdhY3ktdHJ1bmsKKzcwNzc3IGUwMTI0ZjU0MGVlNTY0OGVhOTAzMjNjYzcxNDRhY2E5MTFmMTg1YWUgbGVnYWN5LXRydW5rCis3MDc3OCA4OTc2ZWMyY2RmZTVkYjdlODViNDZlMjBhNzZmZTg2MjEwNmY5Yjk2IGxlZ2FjeS10cnVuaworNzA3NzkgZTRlZmNiMjk5MGUyNWViNWVjMGUzOTcxN2RjYjVlNDZhZWQ1MThmNSBsZWdhY3ktdHJ1bmsKKzcwNzgwIDk3MDQ5NmRiMTRiY2RiOTE3YmMyOTYzMTg4MGUyNjQ1MTFhYTk2MmEgcHkzaworNzA3ODEgZGNhYzA0NTkyMzAyODQ4NDNkYWYyM2JiZTVhZGI1ODlhNWU1MGZjNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzgyIDBkNjJjYzViNDhkNWNlY2U0OTc0NmY2MTdhOTI4OGU2ZjVmZDQ3MWQgcHkzaworNzA3ODMgZWE0YzVjM2JjN2FiYjhjMzBjNTI0OWU4ZmMwMTRiNGQ3MTJmNTUzOSBsZWdhY3ktdHJ1bmsKKzcwNzg0IDExYTQ1NjQ3N2U4MjU4NzMzZjMyNTg5ZjdhMmI0ZmVkYzZjZmI4Y2YgcmVsZWFzZTI2LW1haW50Cis3MDc4NSA4MDNkMDI3M2NiZjdjMDkwNTY5MGU2NWIxMjY1M2NkYzVmNGRiMmYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3ODYgNzVlYzEyYjI0NDQ4ZTJiNGRjMWNkNTVkZjRiYjA2MTE1NjIwMjYzZiBweTNrCis3MDc4NyA4OWRlYTNkZjRjYjU3NTBiYWY3ZWZhNTFkM2RmNzc2OGFjMGJlZjE2IHB5M2sKKzcwNzg4IGM2OTk1NDcwNTNhOThjMTk3YjlhMzE2MGQxMTNiMGMxNWVjMzEwY2YgbGVnYWN5LXRydW5rCis3MDc4OSAxMDRjY2QwNjQ2MWE4ODlhMzZlNGI0MzA5YWE4YzM0NjYwNTVlMGQ3IGxlZ2FjeS10cnVuaworNzA3OTAgZjI4ZTZmNzgyMWIzMWI3NDZlMmY2Y2IzZmQ5N2NkMjgyZjQyNGRlOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzkxIGMxYTNjZWMwYWNkNDI3ZjMxOGExZmQzMDI1MjNjNTEwYjZjOTI4ZGUgcHkzaworNzA3OTIgNzJiYmIwZjhiMDlhNzIxNGJmZDAxMTliMWMzOWU0MmY1YmQ0MmM4MCBsZWdhY3ktdHJ1bmsKKzcwNzkzIDI2YjFhZDA5ZDFhNzIzN2YyYTBkYjUyYjJhZmI5ZmM4YjM1OTRmNzIgcmVsZWFzZTI2LW1haW50Cis3MDc5NCBlZTIyMmM0ZDEyOWEyZjY4NWI4YjkyNjRmMmE0ZmEyOWQzMDYwZWFiIHB5M2sKKzcwNzk1IDUyMTk1ZmNhYjE5M2Q2OTQ3ZTNiY2VkMjE5ZjNmZmU5MTM0NDBlMzkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5NiAzODA5M2NiZWQ2YTZkYzYzNzhkNGM2ZDY2ODFkNTRlMjcwMDI1OTNjIHB5M2sKKzcwNzk3IGQxMmIwMmFiZTZkY2I0N2FiMmExOTRjMTY3ZWQyMTY1YThlYmNjYWIgcHkzaworNzA3OTggMjMxZDYxYzQzZTljZGZkZDc2NDVlYTQzZmU1NWUwMmViYWU2MjJlMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzk5IDNkYTlkYzBjNjVjNmIxZjBhZDQyZjA2ZWI4MjY3NzAxYWU0NjIzNDcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgwMCBhOTFjZjBkZWZiZDY3NjY4ZTRjMzdmNmVjMTg0YmYwMWJiZTI2NGQ5IGxlZ2FjeS10cnVuaworNzA4MDEgZDRmODY2NzM5YmIyNGMzNDEyZWQ3NGQzNTFhZTJhNmFiMWMxNDAzMCBsZWdhY3ktdHJ1bmsKKzcwODAyIDk2MmViYTYyMjk5ZmI4ODg4N2VkMDhmYTc0YTE0Njg5NGUwMGU5NWQgbGVnYWN5LXRydW5rCis3MDgwMyAyMzU2MjI2MTc0OTcxZWI4MWY3YWUwNjMyZThhOTAyMmZlZmJlNjJlIHJlbGVhc2UyNi1tYWludAorNzA4MDQgZWNmODQyNGQ3NDIyMGI0MDA2OWZiOTViY2Y5OTdiYWI3YmQ3ZDFkMyByZWxlYXNlMjYtbWFpbnQKKzcwODA1IGQyNDc1ZDgwNjlhY2RjNmY4NzI3Y2UzZjg1NjBhNmNiN2I4MGRiZjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgwNiBlNDc3OGVhOGU0YjI4ZDU0NmM5MzdjZTAyMTE2MjI5NTJjYmQ0NzJkIHB5M2sKKzcwODA3IDZmNDYwYjdhY2Y4ZjRiY2E3MTBhOTA4NTg3YWMzN2UyMDg0NmMyNjUgbGVnYWN5LXRydW5rCis3MDgwOCBjOThhNzFlOTkxNjJhY2M4NmEyZTQwYTJiMDM4YzgxNGJlYmJjZDQwIHB5M2sKKzcwODA5IDA3ZDY1MTcxYTgwMDY5MTFjNzk3MzQ1YTM1MjFkMTU3NTM5ZWU0OWIgbGVnYWN5LXRydW5rCis3MDgxMCA0YWRhYjcyNDMzMzk5NWJhMTdiMzU3YmQ2NWZmYWQ4NzRjOGUyMTAwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MTEgZWVkNGM3ZmEzZTA1ODc0MmRiMTgxYzljMTYxZDAzMTYzMzhmYWQzNyByZWxlYXNlMzAtbWFpbnQKKzcwODEyIDg5OWFhMmQxODk4NDdiN2Y1Yzk1OGE4YWUxYzk3YjJkZDRiMjMzYTMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgxMyA2OTEwNzkyZmNkNGI2NDU5ZTNmYzI0ZWYxMzNjNmQzMzhlOWU2MTlmIHJlbGVhc2UyNi1tYWludAorNzA4MTQgNGVlYjE0YTljNWQyZDcxYzUxMmQzYzdmZDJhZjBkODFkYjkzZDIwNCByZWxlYXNlMjYtbWFpbnQKKzcwODE1IDllY2ViNjE4Mjc0YTUyMWZjNTVjMGI1ZDFmYzhlMTExYjkxYmY2ZDYgcHkzaworNzA4MTYgOTMyYTFlNTE0YzE2MjM0ZmNjYjQyM2RmN2FiM2MyZjFhMDMwOGQwNCBweTNrCis3MDgxNyAyMWMxNTk0YWMzNjlmYTA5YWI3ZWY5ZDM4Y2YzMmY4NzkyYTgwZjk1IHB5M2sKKzcwODE4IGMyYjAxNGI1NWJhYzI0MWUxZjgyOTI2MjQ2MmViMDRkMWQwYjU3MTkgcHkzaworNzA4MTkgMjI0MmMyZTZjNzNhYzZkNjkxMDQ2Y2NjZTdlMDNiMGU2OGZmYzYzMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODIwIDA1ZjkwY2VjYjJhMjllMGRlMDU0Y2Q5YzY4NDRkNmY2Y2U2ODE0Y2UgcmVsZWFzZTI2LW1haW50Cis3MDgyMSA2Njk0ZjNhMWI2ZTcyNzllZThiYzY3NDRmYzAzYTkxZDcyNGQ4OTdhIGxlZ2FjeS10cnVuaworNzA4MjIgMjM0NTFiMDlmMTViOTIzYTgxZGFiOGQwOGE4ZDZhNmFiOWJiMWVmOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODIzIDJiNDM2MzEwZmM4YmIwNTg5OWM2ZjQ0YTRmY2Q5YzJjZjA5MjE1NGQgcHkzaworNzA4MjQgNDQzNjM5MWQyYTlmMjRiZTgyMTA3ZTcyMTIyZDAyYjhjODQzMTQ2OCBsZWdhY3ktdHJ1bmsKKzcwODI1IGFhN2NmMzI4M2Q2ZTA2MjZkMGU5ZjA4ZGVhZjM5NmRlMDljODJlYmYgbGVnYWN5LXRydW5rCis3MDgyNiA0ODU3Y2NhNDVhYTU0MzA4MDgwNzQ2ZTE3YzAzNjBmNmQ3Zjk5MGNlIHB5M2sKKzcwODI3IDM5OGVjOTQwMjc3ZjY0NzZjZGJjMmUyYTNlNjYwYzc4NDQzMGQ3NjAgcHkzaworNzA4MjggZTEyOTQ0NmRmYmY5YTFjMmQzYWM5MjI1Nzc4MTkwYTgyMGRmM2FiNyBsZWdhY3ktdHJ1bmsKKzcwODI5IDUxNDI5YTE5NmM3NWFlMjNhMzI4ODNiZGViMTNjOTZhYzc5MTllYTIgcHkzaworNzA4MzAgYWU2MGU0YzIwYWUzM2Y4NDY0NjJlZDUyYmIzYzQ5ZWYzZTg0YzAyMCBsZWdhY3ktdHJ1bmsKKzcwODMxIGQ4Y2ViMjZjNjZjNDhjMmRmZGQ1MTgzZjAyOWYzZTY5NWZmNzIxN2MgcmVsZWFzZTMwLW1haW50Cis3MDgzMiBkYWZkOTgyZGZjZjRhMGUyM2FkNTczNmYzYjYwMGJmNTk3MWIyODhjIGxlZ2FjeS10cnVuaworNzA4MzMgNTM0ZmFmOTE4N2U4NDAwYTBhYTUzZTBhYzZiYTNmMTA4MGE0ZWExNyBweTNrCis3MDgzNCAzNzUyODczMjdjZTllZmM3MDMzMTNhMDZlZWNjOWY0NzAxMDU1MTQ4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MzUgZDE4NmQzNTNjYzgxNzBmYWUxYWU3MDIzNjE1ZGNiOTUzNjVkZGI3MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODM2IGI5ODUyM2JlMGExNTcwOWZhYjkzMTA3MGY1YmMwZWQ2NDE2NWVmNGIgbGVnYWN5LXRydW5rCis3MDgzNyAxMWQ2ZTUzOGEyNzliNGEyODc4NGRhOGVkMmFjZDVlMGFlYzYyNWJjIGxlZ2FjeS10cnVuaworNzA4MzggYTNiMmE5NzA2ZmMzNmUyMmMxODU0MmExODIwZmRiNWJjZGJmYzBlMyBsZWdhY3ktdHJ1bmsKKzcwODM5IDZhNmRkOGFiM2YyMjg3ZWQ2NzAxOWI2MmJjYmEwZjNiMTI1MjA3ZTUgcHkzaworNzA4NDAgYTM5OGEyZjc1ZDQ0NGZmNWQxMzRkY2FhMmI2OGY4ZTQ5YjI5ZDVkZiBweTNrCis3MDg0MSAxZDFlYjE0OWIzMjM3MWIxMTJlY2M4ZDJkMjk3ZGVjMzRlMDViNDA0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4NDIgNzA3MjllNzM1M2RiMDM1NDg0ZjFmZTlkNWI1MDdkYzgyNzVlNjI1YyBsZWdhY3ktdHJ1bmsKKzcwODQzIDJkODBjMjc5NzUwMTJkZjI5OTBiZGJmMTc5YTUwNmViYjY1N2RmMjkgcHkzaworNzA4NDQgZGI1MDE4N2I0YzBjYjkxNWI2ZTUzZmIwNDMwZjVhYjA2NjY2NGE2ZiBsZWdhY3ktdHJ1bmsKKzcwODQ1IDYyNTlmODBkYzI0ZDYwODQ0YjY3MmE5OGU1ZDEyMDhlNmMwMmU0OTYgcHkzaworNzA4NDYgODQwMDMyZDllZmQ2MmNhYjdmOGYyNTU5YTU3ZWM5NDI5ODI3ZjZiNSBweTNrCis3MDg0OSA4NzE3MTI4M2QwMmY4ZGRmMzE2NzQ0ZjBkZTkzZTI3ZTVmODYxOWQwIGxlZ2FjeS10cnVuaworNzA4NTAgNmRkYmRmZGI3YTg2ZDlhZDgwZThmZTVmODU4OTAxODA3ODFhNTU1MSByZWxlYXNlMjYtbWFpbnQKKzcwODUxIGQ0OTVhMTFjNzZlOTg4NWVhYjRkOGIzODc2MTdjNTllMTQzZWUwMjcgbGVnYWN5LXRydW5rCis3MDg1MiA3NjYzYzQ5YzliZjZkY2M3YWYzOTk3OTgzOGUzOTE0YmJhMGJkNDZiIGxlZ2FjeS10cnVuaworNzA4NTMgMDhjODZmNDVhYzkxNTVjNWNlZDc3ZWNjZTdhNjY5MDMzNGVjYjYzMSBweTNrCis3MDg1NCBmZWE3NGQ5YjJhNWYzMjYxN2Y5OTA3MmEwNzQ1MTUyY2QyMDhmNmM0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4NTUgNjE1NDhiM2U0Y2E4M2VmMTdjODNiYTJhMjNhOGNmNGQ1NGEwMWI0MCBsZWdhY3ktdHJ1bmsKKzcwODU2IDc2NDFhM2YwYjJlYzM1ZWNiODcwYmJkYTY1ZGVmMjJkOWY4MzI5NWMgbGVnYWN5LXRydW5rCis3MDg1NyBlNWQ4ZjBjMGQ2MzQwNjEzMjVkMTU0YWFmOGUxN2VmMGYyZDNjOWVhIGxlZ2FjeS10cnVuaworNzA4NTggYTAyMGU2OTgzOGJhNzJhZTg4NTcxM2QzMmMwNTI3MzY0YTU0M2I1YSBsZWdhY3ktdHJ1bmsKKzcwODU5IGQwMjc1NTc0YzdjZmUzYWU3ZGRmOTU0YmM0M2QwZGZjYWNhN2I3OWIgcmVsZWFzZTI2LW1haW50Cis3MDg2MCAzZDU5ODE3NTA2OGNiYjJjOGE0MDNlYjA0YTYxNjM2NzY4M2IwNmNjIHB5M2sKKzcwODYxIGVmMjgxNmM1NmFjMmVlNjcyOTExMmZkOWI1ZDc3NTFiZGJjOTU3OTcgcHkzaworNzA4NjIgOGY1MWRkMDlmM2YyM2M3ZmFkZTk4ZDI2ZGQyZDlhYTY5ZGIwMGM5NSBweTNrCis3MDg2MyAxNTE2ZmEyMjNmYzE0YjQyOTJmMDYxZDgyNDg0ZmI3ZTU5ZWIxNjU2IHB5M2sKKzcwODY0IDUxMGVkMDU3Yjk1ZmE4NmM2MDVmNDhhODU4YjY2YWY4MzUxODlkZjIgbGVnYWN5LXRydW5rCis3MDg2NSA1NDZjNTAyMWYwMjc4ZTMzMGRkNTYzYzQ4NmU1ZWE3M2IxMGIyMDk2IHB5M2sKKzcwODY2IGUxNjA3ZjZkOWJlODc1Nzk4YTI1N2EwMmFkMTQxM2FjNDUwNDA2ZGEgbGVnYWN5LXRydW5rCis3MDg2NyBlNzBhNmM0NmIzYWI0MGYzM2JlZTM5ZWE3MDhiZTYyYTBjNmVjZDdiIGxlZ2FjeS10cnVuaworNzA4NjggZjRiOTAwMTVlZjAwOTkyMjY4YTY5ZTRjOWMxNDZiMWYwYmMzOGViNSBsZWdhY3ktdHJ1bmsKKzcwODY5IGQzZTMxYmQ1NDMwYWI2OWFhZWQ2NTQzODZjMWQ0MWVmNGQ1NGJlNDcgbGVnYWN5LXRydW5rCis3MDg3MCAwMmRiMmQzNDAxMzM0YjM1Y2ViOTcyNDhjMWMxZGJhY2ZhMTk3OGZjIGxlZ2FjeS10cnVuaworNzA4NzEgNTNjMWI1ZjY2OTY1MmZmZDE1MjgwZDk1ZjAyMmY3MGNhMDBiNzIxNiBsZWdhY3ktdHJ1bmsKKzcwODcyIGU2YjNlNjk2ZGJjZThkNDRjM2Y1OGY5MWE5MjU1YmJiNDIxMDE2ODcgbGVnYWN5LXRydW5rCis3MDg3MyA2MDk2ZWE4MWRlMGI3YTkzOGY0MjYwYTIxOWFlMGI0MmI5MTk4ZTY5IGxlZ2FjeS10cnVuaworNzA4NzQgNjhiN2U4MjE3YzdlNTA0NjE5M2ExMWU3NDY1MWRlODY1MmI4YzM1NiBsZWdhY3ktdHJ1bmsKKzcwODc1IDQ1YmE0NzVkNGU5OGM3MjU2NjcwZjAxYzU3ZTQ2YjkzZWRkNzdkMzcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg3NiBiMmFkYjdlYmRiNTRmMjc5MGIwZDA3MjQxNGIxODZjOTg5MzIwMTI4IGxlZ2FjeS10cnVuaworNzA4NzcgMTEyNjY5ZGZmMDRhYmFmMzUxZjI1MjI1YjBmMmM1MTc2M2YwNDE5ZiBsZWdhY3ktdHJ1bmsKKzcwODc4IGFiOWI3ZDVkYjkzNThmYjNkZGI3YTZkZmIyYTZkNGQwYWNmMzU1ODIgbGVnYWN5LXRydW5rCis3MDg3OSAzYWVhNzVhMzQzMzczZmQ5NjkwMmVlNzY3MzRhZTMyNmRlMGU2MzQ4IGxlZ2FjeS10cnVuaworNzA4ODAgMGMxN2Y3YmVlMmEwNjkwZGU2NWQ4OWQ5OTQ5ZWE1YWNkYWM2MmIyYiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODgxIGQ5YzhkMWE1ZGRlZTIzNTU4OTU3NTllNzIxMmEwZWIxNzVlM2RkODAgcmVsZWFzZTI2LW1haW50Cis3MDg4MiA5ZjhkNmRlODkwMzUyMWFiNjkyZDE0ZmFkMDQxMGI1N2RkZGYzMThlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4ODMgYjVhYThhYTc4YzBmMWMxMTQzMDY0NzA2NDI4YzFiZWI1MGQ1ZDU5ZCBsZWdhY3ktdHJ1bmsKKzcwODg0IGE1MzAxZWRhYTcwNGNiMzBjYjY2MjM2NmQ2YmUzNzVlYWQwOWE4ODcgcHkzaworNzA4ODUgMWQ3YTc3MmIzYjE4MzdiZTkwYmQwNzNkMTExYmMyMDEzYzhmMDZkNSBsZWdhY3ktdHJ1bmsKKzcwODg2IDJiOWM5MTY2ODc3NzRmNmEzM2U3NmViMmVhZmNjMTE2NWZjYTk1MTkgbGVnYWN5LXRydW5rCis3MDg4NyAwOWI3MGQ1ODg4YmZiNGEyMTUwZTM2YzhiZTRkZTkwNTQ1YWUxMWZmIHJlbGVhc2UzMC1tYWludAorNzA4ODggZWZhYTY3YmIzZjA2ZmE4ZTQxNmE2M2NmNTU3N2IyOWE4M2MyNzBiMyBsZWdhY3ktdHJ1bmsKKzcwODg5IGNiMDk2OTA3MWYyYWQ5NGM5ZjU4NDdjNzAwOTA3Y2FmZjI3NTZkNzAgbGVnYWN5LXRydW5rCis3MDg5MCA5NjA5ZWQ3ZGVhZjg5MDUzMDcxOGEwZWE3YWJkYzAxNmZiNjcxMWZlIGxlZ2FjeS10cnVuaworNzA4OTEgMDdjNWMwZDllNzAwMGFjZDFmZTQxOTg4NGNiZTI0MWM2YTNkYTM3MiBsZWdhY3ktdHJ1bmsKKzcwODkyIDIxYjI3ZTExNWRkMjUwMGI2MzZjNGM4Y2U0MjYyMWM5NWI2ZDdmODkgbGVnYWN5LXRydW5rCis3MDg5MyBmYmQ0MDU0ODEzMGRlN2NiNjBjMjYyMDI5M2UxYTFmOTFlNGIwN2Q0IGxlZ2FjeS10cnVuaworNzA4OTQgNTc0NDQ2OGU2MDliZGJmNThkZjE2NjYyZjE0Yjk0NjA2MjMwZDJiNiBsZWdhY3ktdHJ1bmsKKzcwODk1IDgwZmY4NWQ4N2Y2NzViZGNhNmNiODk1ZTMxMTIxNmE1MTI1ODkxY2UgcmVsZWFzZTI2LW1haW50Cis3MDg5NiBmNmQ5YzIwODkxNzA3NDE3MjJhY2M5YjM2N2U5MzcxY2M0ZTI3NGJjIGxlZ2FjeS10cnVuaworNzA4OTcgNTg3ZmNmYmUwOGI2Mzg5ODdhOWEwZmFmOGU0MDcwOWYxZDAwMzUyYyBsZWdhY3ktdHJ1bmsKKzcwODk4IDY2NDA5OTZmMDRlNzQ3MWJmNGQ2N2Y4ZTljN2YyZGIwNmNkNWUxZDMgcHkzaworNzA4OTkgM2JmOWFlNDM3NjA2YzRhMmM2YjMyY2E2ZTk5M2YzNzA0N2VlYjY2MyByZWxlYXNlMzAtbWFpbnQKKzcwOTAwIDIxYmEwYjNmZTgxOWZkNmMzN2U3ODIxMjY5ODBhNDQzYzhlMzNhMGEgcmVsZWFzZTI2LW1haW50Cis3MDkwMSAwZDA4M2ZiMDY2NWRmOTdiMDMyMTFjNDQ4YTY5OTZiOTQ3ZGExNWZhIGxlZ2FjeS10cnVuaworNzA5MDIgZmE5MjQzYmY1MjU2ODY2MjJiM2Q2Mjk2MTIxYmViYmYxYzUwMmNiMiBsZWdhY3ktdHJ1bmsKKzcwOTAzIGU1Mjg2YmUyNGVkNTEwNmFjYzg0YTM1ZjY2ZWQ2OWU2NGQ4ODA2ZGQgbGVnYWN5LXRydW5rCis3MDkwNCA3ZGYyNDQxMTBkZDVmYTE3OTVlOGIzYWE2ODdhMTJkN2EyNTVjZmNmIGxlZ2FjeS10cnVuaworNzA5MDUgYjY1Nzk3OGQ1NmFkNmUyMTNjNzhjNDczODRjOTllYzQxZTAyZmQxZCBsZWdhY3ktdHJ1bmsKKzcwOTA2IDVmM2ZlMWYyNmIzNmQwOWQ4ZjBkMzgzNjFmNzZjZTg5NmQyNDQ0ZDMgbGVnYWN5LXRydW5rCis3MDkwNyAxODM5Yjg1NTNhMmRiZGNhZTllYWViODA5YzE0ZTA4ZTlhNTA2YWMyIGxlZ2FjeS10cnVuaworNzA5MDggNWNmNzQxMzdjMGY4NjA4Y2RhOTg4NGIzMTQyNDk5MGFiMDI3NDU0NCBsZWdhY3ktdHJ1bmsKKzcwOTA5IGUyODE4YjlmOTY0YmU4MmE4ZTY1NzY2ZWNlMzU4MGUzNTcwNDVhNmYgcmVsZWFzZTI2LW1haW50Cis3MDkxMCA1ODU2ZmFlMDA5ZTg2ZDU2M2NhMzUxMGJmNDVhZWU2MWU5NDIxMGU0IGxlZ2FjeS10cnVuaworNzA5MTEgMWUwNTM0MzE5YTNlZTdlNjc1MTRmNGRiOGQ3NTM4NTBjMDFjNzc4YSByZWxlYXNlMjYtbWFpbnQKKzcwOTEyIDliOTZiZDA5MDkwOGE2NzkzOGIxNzU3YWIyZWY1OWFlYWJlMzRlZmIgbGVnYWN5LXRydW5rCis3MDkxMyAxMTEzNTIxMTJhZmE4ZWYyYjhiODIyY2E3NjNjMWM2MDA4OGM2ZmNiIHB5M2sKKzcwOTE0IGY3YjExYmYwMWExMjY0ZDIyMjM2NzIxODliYmRhNTFiNjkzMDJmZTEgcHkzaworNzA5MTUgNjk2NDZmOWNkNzBiNTExODVmNzUyZjczY2E1Y2JhZDg0ZmVlNjI5OCBsZWdhY3ktdHJ1bmsKKzcwOTE2IGZhM2IyZWQyMGQ4NTcyOGYyM2NkMDcxY2MxYzJiZjg5ZjdmZWRjNmUgcmVsZWFzZTMwLW1haW50Cis3MDkxNyA5MTRhNWRlZDFiZTNjOWY2ZjYwZWZiNjg3ZWZiMGNjMDVlZmViZDI3IHB5M2sKKzcwOTE4IGZmYTEzYWZmMjlkYjFkYzAwNzYzZDhjNjAyNzg5YTRkMjkyNWY5ZGEgbGVnYWN5LXRydW5rCis3MDkxOSA4ODQzYTg0MjdhOGM4MmFmMTE4NjliNzVlYTVmN2NmODE2MDAzNzQ5IHJlbGVhc2UzMC1tYWludAorNzA5MjAgODJhZGVkZmQyMzI0ZjRiMzkwZDk1M2IyZTk3NDRmOWE4ZjRlZmRkNSBsZWdhY3ktdHJ1bmsKKzcwOTIxIGY3NThkZDJhODk2ODliYzIwMDY0YWNiYTY3N2MzYTA2MGEzZDAxZTMgcHkzaworNzA5MjIgOTgxYTliM2Q5N2YzYWZlMmQ3MmFmNjg5YTkwYTYzZWU2YzVjN2UyOSBsZWdhY3ktdHJ1bmsKKzcwOTIzIGQzZjVhOWYwNDFkODQwY2ZmMTQ4MTRkNWU1MjFlM2M5NTlkNWMxZDcgcmVsZWFzZTI2LW1haW50Cis3MDkyNCAzMGQ4NzRiMWM0YTcyMzQzZWY2NDc4ZWJhMTE2ZmMxNGQwOTI0OGQzIHB5M2sKKzcwOTI1IDAwMmZhOTIwNWFhZTFhYmQ4NDM1ZDEzZjJhNDczZmI3YTgyODIxMTkgcHkzaworNzA5MjYgN2E3N2U0YmVhZTY2NWQ4MDczM2JiYTcyM2RkZTU1Yjg1YTdhYmE0MiByZWxlYXNlMzAtbWFpbnQKKzcwOTI3IDc2NTUxNDJmNTIyNDE0YWI5MjllOTFkMzljMjUwNmRmZDgxNWQ3NGMgbGVnYWN5LXRydW5rCis3MDkyOCBiNDAyNmFjNzgxMTQ2NTM1NzUyYWE4Zjc5NzNjNDBiMTQ3ZDlhMjZhIHB5M2sKKzcwOTI5IGY4NDM0MDg4NjkzNmNiMmU4NWNjZjlmNGZlNmIyZDVhODgwZWVlNzAgcHkzaworNzA5MzAgNTcwNDRhMzY1MmQ4YjQyZTA4MmVhOWEwYmY1MTQzMGVhMjU5YzJhZSBsZWdhY3ktdHJ1bmsKKzcwOTMxIDE4NGNhNjI5MzIxOGY5NmY0MmE2NzI5MTQ5NjcwMzE0YmEwMThhOTIgbGVnYWN5LXRydW5rCis3MDkzMiAwNGQ0MTg4ZmI0MTE2MDVlOTViYTQwZWZlYTExY2NkODQ1NGRkNjM1IHB5M2sKKzcwOTMzIDFhYzExOTNhNjFkMmY1ZjdkMjg0YWU5YzAwOTk4MWM0ODNkNzUwNmUgbGVnYWN5LXRydW5rCis3MDkzNCBlNTU1ZmQ4YzRiNmVlNzllZjAzNDJhMTY2NTU1N2NlMDQzN2JkNGNiIGxlZ2FjeS10cnVuaworNzA5MzUgZDg1MDkwYTQ4MGJhNGFiMGJhNGFmYTQ1Y2M1ZGZiYmMzZTBjN2JkZSBweTNrCis3MDkzNiA1MTNkOTZiZjBkNzAzNTI2ZDIxYzUyNjFiNGYyNDIwMDU1YWMyNjIzIGxlZ2FjeS10cnVuaworNzA5MzcgMWJhNjVhOTFlNTZiZTljYmZiMTY0ZjQ2YzczOTMxZmE3Y2Q4ZDMxYiBweTNrCis3MDkzOCA3OWE0MjA2MTc2NDEzY2RhZjhkYzFhMzFmMjU1ZmY3Y2ZmYzliZGMzIHB5M2sKKzcwOTM5IGNjMmM3MTMzZGE0ZjVmNDc2MmI4MmI1NjVhYjM4YmQ3YzI4NmZkNDQgbGVnYWN5LXRydW5rCis3MDk0MCA3NjIzNTU4MGFhM2Q0N2MwNDRiN2M5YzIzZmU3ZjQ3NTgzODc0OGUxIGxlZ2FjeS10cnVuaworNzA5NDEgZmZhODFiZDJlYzcyZDY3ZGM2MzEzOTU1N2Q1Y2M1OTA1NzNjYzgwNiBweTNrCis3MDk0MiBhY2ZjMThjZGNkZmI3NzJiZTQ2ZmQ3Yzc2N2FlYzcyYjg5NDJhNGZlIHB5M2sKKzcwOTQzIDA4MmIyNTBkNWVlNTBmZGI5MTRlOTkxOTRkNzE3ZDMxYjBlOTk1MWUgcHkzaworNzA5NDQgZmE3YzM3NjVkMTBmZjRjM2VmY2E5MWFiMjFmN2I4ZDBhMGZlOTQ1YSBsZWdhY3ktdHJ1bmsKKzcwOTQ1IDA1MzBhYWRmZjY5NmQxYjY2YzY2N2NiZDE5YjEwZDJjYzI1OTBlYzUgcHkzaworNzA5NDggNzM0N2Q5MTZmMTNhZTRjZTE5MjM0NjQxY2YxY2M0ZDUzM2Q1MTQyYiBweTNrCis3MDk1MCBkYTc0NDhlYmNlOGIxMTg2NTc3ODI4YjIxNDU5ZmFjZjQ0ZTU5YTI1IHJlbGVhc2UyNi1tYWludAorNzA5NTEgZGM1M2YzNzBjYTlkNzQ3NTNhOTUwMDU1N2U4ZGMzYmUwMmY1ZWJjNSBsZWdhY3ktdHJ1bmsKKzcwOTUyIDE5MTkwZTA1OGQ1OTQzMDVmMDkxNDQwZGNmNDdiMTNlNTljMWZkZTYgcHkzaworNzA5NTMgOTdmZDBkNzZhZTljZTdiMWY1NGViYzhlYzQ4NmY3NzY3ZThjMjUxMyBsZWdhY3ktdHJ1bmsKKzcwOTU0IDAyN2EzYWRjMGQ4ZjU2MjAwMGYyNDZhMDc0YmNjMThkNmMxMzhiM2UgbGVnYWN5LXRydW5rCis3MDk1NSBhYmY2ZGFkN2Q2NGZlMjgzODUyN2EwZjQ2MjhmODc0ZmU5ZTgyN2FkIHB5M2sKKzcwOTU2IDc2ZDYxYzEyNjIzY2Y5MWU3ODU1ZDZjMDdhY2NlMWNkMWMyNzgzMDcgbGVnYWN5LXRydW5rCis3MDk1NyA0NmYxY2U3NjE5OWViNDUxOTlmZGUxMzQ4OTEyNjUwMjVjYWNiNzYyIHB5M2sKKzcwOTU4IGRmNWNiMzgzNmIyODJhZWIyZTJhZTM2MTExZGJmOGU0Y2RlOWRiNzMgbGVnYWN5LXRydW5rCis3MDk1OSBjZTBlMjhkY2NiYzIyOGFiYjllOGExNzQ2MjYwNmYzYTc3YmU2MjE3IHB5M2sKKzcwOTYwIDhiNTFkOTYzNjBiMDNjNWM2NTIxYjUwYmUwZGM5Y2E0OTRhN2Q1YTggbGVnYWN5LXRydW5rCis3MDk2MSBjM2YwN2I2NzdhZmE2NzQ5MzZkMWVhMzQ4YTY5MTExYjFjMDZkZDE4IHJlbGVhc2UyNi1tYWludAorNzA5NjIgZTlmYzUyMmFhZTlhNzM5YzUzNzMxYzIyYmI5YmRkZDNlMDNiYjNmYiBsZWdhY3ktdHJ1bmsKKzcwOTYzIDM0NTY2NzFhNzJiYzE2NmI1MTE4MjMzZTcwMDY0MTZlOGEwYTkzYzAgbGVnYWN5LXRydW5rCis3MDk2NCAxOGJkM2NmNTI4N2ZmMDA4OWRkYzc2YTk4Y2Q0Mjg1N2EyZTA1NDgxIGxlZ2FjeS10cnVuaworNzA5NjUgYjVkMjNmYTliOGE0ODQ3ZjIzOWI3YWI0OWNlMTYzNDllNzQxMDdmYSBsZWdhY3ktdHJ1bmsKKzcwOTY2IDI4N2RmM2EwOWYzNTMwZTM1NWI3YzZlNzJkNTQ1MTNhZDdkN2RlMzEgcHkzaworNzA5NjggZThlZjEzYzk4NTk3MDljNWQ1YjYzMjczYmU4MjY5YzNhMGQ3YzNhMSBsZWdhY3ktdHJ1bmsKKzcwOTY5IDJlNGRiYjM5NTQxN2NiNmQ0MDNkNDVlYjdlZTQ4MDQyZmE3YjFiNzMgbGVnYWN5LXRydW5rCis3MDk3MCBjMzM3ZjIwMjhkOGM3N2UwNzZlZTcwZjUyNTlhNDFhMDNlY2M0NDVhIHJlbGVhc2UyNi1tYWludAorNzA5NzEgMTZjMTQ0MjYyMzc0NjIyMmIwMzBmYThiYTA2YWRjZDZhM2I2ZTFkNCByZWxlYXNlMjYtbWFpbnQKKzcwOTczIGNlM2I1Y2FmNDUyMmM4YTE5ODAyYWYxZTFkZjUxNmJlNzhkNjg5YjAgcmVsZWFzZTMwLW1haW50Cis3MDk3NCA4ZGZmNDA2NDAzYmUyZmY3ZTQwYmM2MmNlN2NiMmU1NTZkNzQ1ZjEyIHB5M2sKKzcwOTc1IGI4MTRiMGMzNTM0NzFjZmI0Yjc0NzIwODMyYTQ1ZmU1NmFmMzBiOWMgbGVnYWN5LXRydW5rCis3MDk3NiAyZDk1YzAxNDEyMTRmODRlNDg1YjAyYzhlY2ZjNGVmOWE2Zjc5MGIwIHB5M2sKKzcwOTc4IGNlZjhiODI1OWFjOThlYjk3OWZmMGNiYTIxNjE1NjRjZDQ5MTAxNjYgcHkzaworNzA5NzkgN2UyYmJiNGRiZjg3NTllMTU0MWQ3NWMzYjQwMzg4YTgyNTEzODM2MyBsZWdhY3ktdHJ1bmsKKzcwOTgwIGE3MzM3M2NjY2NjMjFlMGRmMjUzYWVlZGMzNTQxM2QyODczNTlkMWIgbGVnYWN5LXRydW5rCis3MDk4MSA0MmRhNzE1NGIyNzBiYmQ5NzkyOWIzMWRhYTk3NDM3NGRkM2I3ZTBkIGxlZ2FjeS10cnVuaworNzA5ODIgNjc1NDE1YzViOTEyNTc5MzhkYWUwZWUyY2FjNjljNzhiM2E0YTIwZiBweTNrCis3MDk4MyA2YjZhYzZhYzU1NjZhODQ1NzRjNTgyNzYzNTBkOTJjNWFkZjFiNDc2IHB5M2sKKzcwOTg0IGQ3ZjQ3OGM2ODFiOWUzMDVlOGZmYTMyOGRmNjhhODRkNmFjMGMwOTQgcHkzaworNzA5ODUgZjhhYThkM2Q2NjA3OGU5YmEwMDBiOTNhM2FlYmJhODk3NTkzN2YzZiByZWxlYXNlMjYtbWFpbnQKKzcwOTg2IGU5ZTg3ZDFhMzg5YzUzZDBiYjc1MThhYzk3NDIzN2M4YTA5ZGYwZGUgbGVnYWN5LXRydW5rCis3MDk4NyBmMTVlN2E5MzEzMzRkNTAwZTU3Y2Q1MzQ4MmQxZTAxYjEwNTcwMmY3IHB5M2sKKzcwOTg4IGFmZmNmMDcwNTQzOWE1YjZkNmJiYjMyNDk3OWZhNzc2MzhhZmJjYTEgcHkzaworNzA5ODkgZjk0Mjg5M2ZhNGQ4ZDkyYjY0YjZlMWZhODc2NzE1NmM0NGIzZDM5ZSByZWxlYXNlMjYtbWFpbnQKKzcwOTkwIGRhMmM2ZGQyNmU4OGRhZDAyMjQ1Y2FiNjIxNzA5NGQ5NzVlZTRkNGIgcmVsZWFzZTMwLW1haW50Cis3MDk5MiA5ZTU3OWJhYjc2ZjFjNTcyYTUyMDYxYWFlNzBlMjA0NmE3NTJjZGEyIGxlZ2FjeS10cnVuaworNzA5OTMgNTEwMmJiZjRhYjc0OTVjNTkxOGIyNzNmMWNmYTAxZGE0YjY2ZWJmMCBsZWdhY3ktdHJ1bmsKKzcwOTk0IDk4NTZiNWJlMjZjNGNhYmQ5MWMzYTE3ZWZlM2ViYzI4MGMwYTY3NTQgbGVnYWN5LXRydW5rCis3MDk5NSAzYjM0YzkzNzQ5NTUyYjAzMjMzMTBmNWUxZGEzYTc3NWY0ZTlhZTJhIGxlZ2FjeS10cnVuaworNzA5OTYgOWVkOWQyMDQxMzA2NjU0NDFjOGZlZTNhN2Y0ZTBhYWEwYTQwMjU5NSBweTNrCis3MDk5NyA4M2Y5ZTNkMTBlZGM0ODhmYzc4ZTExZWQ2MTIyMzVlZjgxZTllNzdjIGxlZ2FjeS10cnVuaworNzA5OTggZTNhMTk2OWZkYmU1ZTBhZmU5OTBiYTg0MTQwYWM0ZjY0YTM3MDM4NiBsZWdhY3ktdHJ1bmsKKzcxMDAwIDFlMWRhZGJiZGQwMWI5NzkzOTI0NjM3YzRkMmJiMzhmYTk2OWU1M2EgcHkzaworNzEwMDEgY2Y3M2ZiNWNjM2FjOWQ4M2JlY2RhNGNmZTM5YjJkMzdlYjJlNzMyZCBsZWdhY3ktdHJ1bmsKKzcxMDAyIGI0M2YxNGMxMDNiYmMzYWFkMTgzMzMzNWQxYWFhMjc0NzZjNGExZTMgcHkzaworNzEwMDQgMmRmYzMzNzE3NDkzOGY4NTViNWIzMDg1NDVjMzc2MWYzYWNhNzcxYiBsZWdhY3ktdHJ1bmsKKzcxMDA1IDc1NWJiMWY5YjBlNTg2ZmZmMTQ3NTgxMGYxM2FmNzU0ZmQ0OTg3OTQgcHkzaworNzEwMDYgMWI4ZDY4ZGFlNTcyMTI1NTMzMzlkNWY5NzhlM2Q0ZDM4YmQ5MmM0MSBsZWdhY3ktdHJ1bmsKKzcxMDA3IGViNjIyMTdiYmI1MzczN2JlNzRjNzBhYjczMTNiMjNjMThkMGE3ZDcgcHkzaworNzEwMDggODUwM2EzZDAyNTRkOGY2NDcwYmVhMzcyMDQwYmZmYzg5ZGU5OGRlZSBsZWdhY3ktdHJ1bmsKKzcxMDA5IGQzNDNlODAyYjI3NjBhYTcwMGNmMmZmN2YxN2NhYzM2Y2U1NDA0NzcgbGVnYWN5LXRydW5rCis3MTAxMCAwODBmZGZjNDNmOTQxODY4NjQ3ZDM5MjcwZDAxMDk2NTBkNGJiYTQ4IGxlZ2FjeS10cnVuaworNzEwMTEgMzZmMjViZmIzYTFiY2NkZDQ0M2Q3MjhmMzJhNTc1N2ZhNzdiZjBlMiBsZWdhY3ktdHJ1bmsKKzcxMDEyIGM1YTdlYmVjNTk4NDdhZmQ1NmQ0NjliNDY3MmZlNDY3NTQ2MzVkOWUgcHkzaworNzEwMTMgYTczZDczMjYzMTFkZDhjOTUwNzE1NjZiYWExMzU2MDU4ODA4NGUwMyBweTNrCis3MTAxNCBmMzkwNDY0NjM5ZmJlODU4MDExYjBjNjYwYjNiNjA3NTQwZDEzOTY2IGxlZ2FjeS10cnVuaworNzEwMTUgNDc1YmE0M2NjY2IxZTUyMmQzYjk1NTY4ZjE0MTU5MDczN2M5YjRkZiBweTNrCis3MTAxNiBjMDEzOGIyZDRlZWRjOTkwNTAwYmJiZmUxY2ZlNGQ1NGRjYTg1MWU4IHB5M2sKKzcxMDE3IDkyNmZkMjE3ZTJkY2ExMjUzMTA0YTAxNmUwNTE4OWI1OTZiNGViNTkgcHkzaworNzEwMTggMzNlYjE2OTdjMzgyZGU4NTgzYTliZWZmNjEwZDNjYjU1MWI4YTlmMSBweTNrCis3MTAxOSAzNWMzZTFkN2NmZGY2MTQ3MTczMTE4YzQ0MGFmNWI4MmRjNmE5ZTJjIGxlZ2FjeS10cnVuaworNzEwMjAgYmMxNWI0ODNkMzg0NmRhMGQ5ZWEzMDZiNzRiN2JjMWQ4ZDhlODk3ZCBweTNrCis3MTAyMSBhMGUyMTFiMDRiMmUwYzg0ZDAyNTQ2YzFkNTk0NTFjYzFmMmRhNGFhIHB5M2sKKzcxMDIyIDEwODZkN2VlOGIwYjNmZWZkNzA3OGUyNWQzNWY5YmFhMjE0YzlkNzggbGVnYWN5LXRydW5rCis3MTAyMyBiOTg0NDU2MTk2YWYyNjlkMTNmNWE5NDdlMzgyOGI0ZjAyODc1ZmYyIGxlZ2FjeS10cnVuaworNzEwMjQgN2U4NmZhMjU1ZmMyMjVjZDcyMGIxNmY4YWI2MmVkMjRiMjIwMmJjMiBsZWdhY3ktdHJ1bmsKKzcxMDI1IDkwNjkwZWI4NTM4MGJkM2I4YzIxMzA0ZjgwYmMzNjI0OTM1NWRlMjkgcmVsZWFzZTMwLW1haW50Cis3MTAyNiBmNjM0YzU0NTViNGYzYWI1MDUxYjI2M2Q1NjMyMmVjMGUzMmUyMDlhIGxlZ2FjeS10cnVuaworNzEwMjcgM2UxYTgwNTI1ZjE4YTAxMTFlYTgxNjRjNTYzZDQ1NzJhYzM3NmNmYyBweTNrCis3MTAyOCA5NTM1NTNhZThiODRmZjBlZjk4M2Q4YzIwZmJkMDJhYzg5MWU4YTZjIHJlbGVhc2UyNi1tYWludAorNzEwMjkgYzMzOTU5MzkyOTUzYjAxYWZlNjIxOTMzY2I5OWFmMWVlMDRmOWQwZCBsZWdhY3ktdHJ1bmsKKzcxMDMwIDM3ZmZlYWMzYTFhNjhkNmZmNTdiNzZkMDMxNWFhODBhNzhjNzY1OTggcHkzaworNzEwMzEgMWVmM2RhNmM0MzRjZmIyMjk3YjJkMmFhMjczMGE1OTY4ZGZlNzkzOCBsZWdhY3ktdHJ1bmsKKzcxMDMyIDFiNTBmNzhjZGRjYmI4NzFhNDMyODI5OTNiNDNlNmIzMmJmYTQ5ZGEgbGVnYWN5LXRydW5rCis3MTAzMyBmZDVlZTNkMGY1NTI4ZjY1NmQ2ODZhNjk2NTE0OGFmODliZTk3MjJhIGxlZ2FjeS10cnVuaworNzEwMzQgNTRlMDkzYmQ4ODdlYTc0ZDMwM2E1YjcxMjY1NmNlYjZlZTg3ZTZkNCBweTNrCis3MTAzNiAyM2EyZTE1ODRjMDJhZjJlZjRmOTIzM2U5N2I0NTM5N2ExNTIwMDhmIGxlZ2FjeS10cnVuaworNzEwMzcgOGQ4NGYyMjBmZjI3NzA4ZTA3NTdjOTVkOWU5NTI0MDQwNzc3NDgzNCBsZWdhY3ktdHJ1bmsKKzcxMDM4IDVmMTc5ZjZmMDdlMGZmODM0ODU0ODA4N2FhYTFiMGZlNTUwNWZmNzUgcHkzaworNzEwMzkgZmNiZTFhZDI0ZDQxMGVkN2Q4MzFkZTQ4ZGQ5YmYyMGRlYzVmOGYyNyByZWxlYXNlMjYtbWFpbnQKKzcxMDQwIDBiYzYyZDdkYmY1NDkyZjQyMDRkNjYyZTYwYzBkMGM2NmE0ZDYyNDYgcmVsZWFzZTMwLW1haW50Cis3MTA0MSA3MWY2MTI5ZGRhZDQ2NmY5NjNkYThjMGQ0MjllMzA4NjBhZTI2YTQyIGxlZ2FjeS10cnVuaworNzEwNDIgNTM5MTZhYWNjZjJjYzIzYzg2NTc0OTIwMWIyYjA5MTM2NWE4NWNiZSBweTNrCis3MTA0MyAxYWJmOWUzMGMxOWY5ZjIyZWUyOGZlMjFlYjUzNWM1M2E0YzIzYzRlIGxlZ2FjeS10cnVuaworNzEwNDUgYWNkZDExZTM5ZjBiMDIyNTc0MWFlMDJmZDI0MWE0ZDliOWQ2ZjA0OSBweTNrCis3MTA0NiBjNTg5NDgzYTcyYWNhNTU0Y2RhZTljZjI1NDk5Y2MyMDJiNGU1MGNkIGxlZ2FjeS10cnVuaworNzEwNDcgMzU4MGQzYzA3MmFlNTAzMmIxM2FkYTM4NGU2OWE5ZGJhZmYzNTIzMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDQ4IGEzM2JjODE4M2U0YzE3NjgyNjliNTRhMjVlNWU2NjM5MTQ5NmNmMjkgcmVsZWFzZTI2LW1haW50Cis3MTA0OSAyZTIyMzg2ODgzMmE4MWZmZjlmNzNiMGQzMWU0M2UxZTgwZTI2ZTdmIHJlbGVhc2UyNi1tYWludAorNzEwNTMgNzU5ZjQzYzk3ODg3OGFmOTE1MDc1NmI4NmUyNGQzYWFiM2Y4OGI4OCBweTNrCis3MTA1NCA5NDg5YTllN2FmZDQzODMyNjQ0YjY1MTE0MDU2OGFiMDM2MzYwNjNiIHB5M2sKKzcxMDU2IGM4MDFhNjdjZTI5MmU2Y2JiODRiODY4OGE4YWNlNmE5ZGRkMmMzM2QgbGVnYWN5LXRydW5rCis3MTA1NyBmODE0MjQ5NzJhZDExODc3Y2QxMmM3NDcxNTBkNTM3ODJkZGU4M2NhIHB5M2sKKzcxMDU4IDU0YjJjZDIxYWI0NmNlNGVkYjFiNjc5YTUyZmJhZjJiMzM0ZmJiNDMgbGVnYWN5LXRydW5rCis3MTA1OSA3ZmEwZjgxZDYwN2U3MWFlNmZmMmI5OTBmODAyZTZkN2EzNWNmZjBmIGxlZ2FjeS10cnVuaworNzEwNjAgY2RkNTQ3MTQ3NTY2N2ZjMDk4NWNlMzUyOWMxMGM1OGE3NGNhMGE2MyByZWxlYXNlMjYtbWFpbnQKKzcxMDYxIGQxYzUzNjdkNTdkNjU1NjE4YzAxMDFlMmNkZWQ1MGU5YjMyYzU3YjQgcHkzaworNzEwNjIgZTAyYzViNGU0ZTkyZWRjOTBhMDM2MWY5Mjg0MGI0MWJlMjY2MzFhNiByZWxlYXNlMzAtbWFpbnQKKzcxMDYzIDk4YzM0NDlkYTM2OTNiZDJmYmUyMmNiYWRlY2FlYTlhNGE3Mjk2YTcgcHkzaworNzEwNjQgMWI0ODM5MTFiMmU2NjhlMDQwYzMzNDE0Y2Y5YzEzZTg0YTMyYTlhMyBweTNrCis3MTA2NSBiZWQ1MjRlYzA4NTBjZWI2ZDQ3N2ZjODFiMjdmNzEyMzdiZjE4ZGM4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEwNjYgNjY0NjRkYjM4MmIxNGQ1YmMwNDZkMTBmOGUzNDdkNDRlN2Y3MmZhMSBweTNrCis3MTA2NyA5YjUzNWNlOTlkMmRhYTdiZDIxYTNhOWI1MzAxMmRiNGQzMTE3YzhkIHB5M2sKKzcxMDY4IGQyOGVhMmVlNzA3MGQzNjA1MDUwNTgwMTMxOGM5OTlkOGVjMTkxMmIgcmVsZWFzZTMwLW1haW50Cis3MTA2OSA2NzJmZDdhNDFkMzVmMmJkOGE4ZjFhMTgyYmJlYzhlMDZiNDNmYTEwIHJlbGVhc2UzMC1tYWludAorNzEwNzAgNzVlZmQ3NTc0MzRiODVmODVjNWU3ZjIyNWZlMGNmMWFjMzdhYmY2MyBsZWdhY3ktdHJ1bmsKKzcxMDcxIGIzZDVmNjg1ZDI3YWNjYTVlYTY2OTg0MjI5OTIxNzY3OWE0NjA2MTEgcHkzaworNzEwNzIgY2JlMTkxMzBiMmViNjMxMTM2NjZlODdiNjU0NjU1OWUxNDM4MWRlNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDczIDIwZTdhYTQyZDZmZTRkOTgxNzNjMTk3MzVjMjI1NDk5YWQ2Y2Q1YjIgbGVnYWN5LXRydW5rCis3MTA3NCBmMTNlZThhYzZkNTQ1Mjc3NTFkMjgxYjM5OGExYjU5ODVkYzQxN2U4IHB5M2sKKzcxMDc1IGYzYzRmZjIxNGIxMWVjNmYxMjM5Y2ZiNmQwMTU1NDBiYzA5ZGY4Y2MgbGVnYWN5LXRydW5rCis3MTA3NiA1YzM3YWIwN2E3ZGMzNDE5ODgyNmVjZmYzNWE3NGFlOTM4NDBkZjIzIHB5M2sKKzcxMDc3IDliZTJlMTZhNzFkZjViNjU1ODQzNDRmYjExYTEyYzVjMTg2OGRkMjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA3OCAzOWJlOWFjODliZTk4ZmZjYzI5ZjhlMmJlYmMxZDRhNTE1NGQ2Y2U2IGxlZ2FjeS10cnVuaworNzEwNzkgZjYyMDJiM2VmOGVhOThlNGUwYmUyYmJhZmViZjE0M2Q4MzkwNGQ1ZCBweTNrCis3MTA4MCAxODNkNjA3MmUxZTVkZjkzZjhjZmYzOTBiMWY4NDdiM2Q2OWEwOGE2IHJlbGVhc2UyNi1tYWludAorNzEwODEgMWJmNjcxMjE3YWJmM2NmNzlmN2VlYmEyYzE2MmJlNGVjNThjODM2NSByZWxlYXNlMzAtbWFpbnQKKzcxMDgyIGRjYjM2OGZiNmFkYmZhZTVhZThjOWMzMzE4YTI2ZGU1ZTVjZjI5YmQgbGVnYWN5LXRydW5rCis3MTA4MyA5ODY4NmYzMDdkZTQyNmM2MDlmY2RlMGQ5MThmMzMzMTUyZGIzNmQyIHJlbGVhc2UyNi1tYWludAorNzEwODQgY2JmYmZmMjMzZWY1YzE3Y2Y2ZGVhOWU0OGIxNGJkY2M2OWY0NTU4MCBweTNrCis3MTA4NSAyYTI3ZjlhZGE4ZTMzZTQ3OTQ4MTFmMWM3Mjc0Mzk2NmEyODI0MDg4IHJlbGVhc2UyNi1tYWludAorNzEwODYgY2FjMjA5Y2Y1ZTRjYzczOTAyMzM5ZTg3MDMxN2M1OWY5NTU4MjA5NSByZWxlYXNlMzAtbWFpbnQKKzcxMDg3IGFlNDgyZTUyYTE2YmMwODllOTE1ZWVjMGIwYjMxOTRkNWZiM2M0Y2YgcHkzaworNzEwODggNGU1ZmU4YjZkMTAxYzhmMzYxZDY0YjcwMThkMTVkNmQwN2Y3MWQxYSBweTNrCis3MTA4OSBiNDFjMjlkZWJkZjY5YTc5MDkyNmNkMjk5YzMwNzU2M2ZhNTIzM2RkIHB5M2sKKzcxMDkwIDY5NjYyYmMzYTlmNmI2ZDMyMDg3MWJlOWM5MDZmZjY0M2UyYmY1YjggcHkzaworNzEwOTEgNjQzZjQ0YWQzODdmYjQ2NDMwYjA2NWFmYTg2NjVlNjk2MGVlMjYwMSBweTNrCis3MTA5MiA4YTI2Zjk2MjBiMjExOGQ3YmIyNDJlMDBlMTA4NzU1Nzc5YmZjN2FiIHB5M2sKKzcxMDkzIDQ3NTdkZGFhODk3ZGVjOTNmMmY1YTNkMWI4OTlkZDE3YzIwNTQxMGYgcHkzaworNzEwOTQgNjg5NDM0NDU0Y2I4ZTUzMTI4OGM1MmU4ODM4YWU0ZDRiZWFiZWU2NSBsZWdhY3ktdHJ1bmsKKzcxMDk1IGE5ODA5MTA2NmUwMWIyMDYzODgxNDdmYzVmY2UwNmU0NWNiOWEwMmUgcHkzaworNzEwOTYgMjgwOTZlZDczMTUzZWQ2OTY4NzBiYWRlY2IwZDgyOWUwZGQ3NGM4NiBweTNrCis3MTA5NyBjMmY5ZTEzNTQyYWIyYWMyZjk1ZDBmMGRhNjliMzUwMWZmYjg3ZjMzIHJlbGVhc2UzMC1tYWludAorNzExMDEgMTVjOGU5ZGQxOTk2N2ZkMDExMTcxN2ZjY2M2OGZhMjIzNTVkMzcxNyBsZWdhY3ktdHJ1bmsKKzcxMTAyIDVmNTU4N2YzYzRkNTVhYmMyM2QxZWRjNmEyZTRmOWQwMmVlYTBlOTkgbGVnYWN5LXRydW5rCis3MTEwMyA0NDk1NGU2YTEzNTMyM2I0NDAxNzAxZjRjYWY0YWRjYWE5MmExNTQ2IGxlZ2FjeS10cnVuaworNzExMDQgZmFhMzQ3M2U0NTM0NDg0YmMyM2ZkYmUwMjE2MTk5MzliMTdjYTVhNyByZWxlYXNlMjYtbWFpbnQKKzcxMTA1IGMzYzZiNzM3NGJkYTJlZDhkNzFjYTljZjMzMmI4ODRlNzlkYWQ1YjIgcmVsZWFzZTI2LW1haW50Cis3MTEwNiBkMTlkODkwMTM4ZjFlY2IxZjg0OTJjZjM2OWMwNWE1YTdmMTM4NzI5IGxlZ2FjeS10cnVuaworNzExMDcgMmRmMTUxN2Q4NjhjOWFmMDcwYTg1NTUyOTJlODI0NjU1MTkwYmI2OSBweTNrCis3MTEwOCA3YmY2MGQ3YjA5ZTlhMjA2MmQyNTU2MDg3OWFkYjc1YjVjODhjYjNlIHB5M2sKKzcxMTA5IGI0ZjE1N2Y4ZTRhN2I5OGI1MDI5NWRmNTBiZmI2OTlhMjdhMGJlZTQgcHkzaworNzExMTAgMWZkYjU2NTllZTA4OTY4MmMxZGQ1ZmZkMzg0Y2IzZDJhYWM0YzY2MiBweTNrCis3MTExMiAwNTViMzAyN2Q1NjhiOTYzOTQxMzIxNmM3MjY2MTgwNGQ3ZGI2YjI0IHB5M2sKKzcxMTEzIDZjZjE2ZWE4YTE2ZGU2YjczNDdlM2ViNWQ3YjY0MWRlZTVkM2YwODAgcHkzaworNzExMTQgYjRkZWZkZDdmNDMxYjUxNjljMDY2ZDM1OTc1ZGIzNTBjZWQxM2FmZSBweTNrCis3MTExNSBmYTJhYWM0MzRkMDYzNjU2Yzc3ZTlhNTNhMTY1NzI5NjA3NzIwYWY5IHB5M2sKKzcxMTE2IGZiN2I3NzI3YTczMWFjNjA5ZDgzNGJmZDQyMmY1MTU1ZjJkN2JhMGEgcHkzaworNzExMTcgNTE3NGNjZmIwMWI4MjEzOTUyOTQ4N2IwNmEwNjg0OTAwZGMxOWM2ZSByZWxlYXNlMzAtbWFpbnQKKzcxMTE4IDQ5MjUxOTZhMmZkOGJkNTIyYzBkMDk1YjQxMWU1N2UwMzkwNjVjNGYgcHkzaworNzExMTkgZjEyMWJkOTU2YWUwNTEwOWYzNWY3YmUzM2EzOGZjMjk2NjZmNjVmOSBsZWdhY3ktdHJ1bmsKKzcxMTIwIDkwNDE5ZTFiNDY1NmI1OGZiZDY5Y2QyNDdmOTU4MDU3ZmUwY2NhMDUgcmVsZWFzZTMwLW1haW50Cis3MTEyMSA4YjUzYjk2OWI2MjgxZDgwMTdjNDA4ZDNjNjM5NjBlYWIxNmQ2MDgyIHJlbGVhc2UyNi1tYWludAorNzExMjIgNTQ3YTIzOGEyYWM0OTI1ODFkMzk1NzAzNmYzMjNkZmY5Nzk5MGMyNiBweTNrCis3MTEyMyAxNDZhOGZkZGJiYTI3Nzg3Nzk0MGY1YTM5M2QxODY3NjZkZGFiYzQ4IGxlZ2FjeS10cnVuaworNzExMjQgYjM4N2NhN2QwZmU2MmNmZWRiYTU0OGMzNDM5NTE4YjBlZjU3OWIyMSByZWxlYXNlMjYtbWFpbnQKKzcxMTI1IGExYmViMTZjZjIzNjk0ZDhlMmQwZjRjM2QwZGVmNDhjZjdmMDEyN2IgcHkzaworNzExMjYgYmMwODRhOTczMThiOTMzNDM3MWYzZmNjODg4Njk1OGU1YWU5ZTA2ZiBsZWdhY3ktdHJ1bmsKKzcxMTI3IDVmNjZkZWFkMTE3NWEwOGQ4NGJjZGNjNzZhYzRjMTNmN2U5ZDI1NjIgbGVnYWN5LXRydW5rCis3MTEyOCBjNGNhY2JjOWIzZmQyNDQyM2ZlOWM2Njk5NzNiNGMyMThlNzU5YzQ5IHB5M2sKKzcxMTI5IGE4MGUyZWEzODllMzBiM2YwNzczMzJiMmJjNGQwN2JjZDFkNGUwMTkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMCA1NDQ3ZTFmN2RiZmY0Y2I2ODY1OWQwZjhlMjlmMjBhNDM0ZTY3ODkxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzEgMjQ3NGZhOWMzODU1OTMyMTYyY2FmMzJmNDNlM2RmMWRjMTQxYzBlMyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTMyIDdkODdlN2MwNmI1OWQwNDQwOWFjYWEyMDg3YWY5ZTQwMjFkYWRmMDEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMyA0OGEwMmQ1ZjVkNDI4ZDJkYjlkYmUwODVjZjFkYTEyZjNmNDUxOTZkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzQgMjRmMWE5ODkyZDQ5Y2JlOTU5MTdlNzVjMTU0OWExNzUzNTkyZTc1OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM1IDQyMjI0OGU2YjczYjkwZDNmNzVkYjY2Mzg0ZDI5ZjI5ZTc2YmUxMWIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzNiA4MTc1YmMwMzEzNGUzMmI4YWIwM2RmODQ3NDVmNTg5YTRlZDJhYzUxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzcgNjYxYmQ1NTgzNjMyMTBjMWRmMzhlZDBiMDMzMWFjYWZkOTFlOGRiZCBweTNrCis3MTEzOCBlMjU0MmE3ZDRhY2ZjZjc2ZmQ2ZDVhOTQ2NGU4ZGNhMDM5NDU5NmJlIHB5M2sKKzcxMTM5IGM5ZTQ4ZTAwOGJiNTM2YTQ2YTdmOTY0NjE2MDBmZjI1MDEzMjI2MmMgcHkzaworNzExNDAgNjgzMDBkYTEyZGZlMGRjOGJkYTE5YjBkZGIwNTY2YWU3Y2Q5ZDI5MCBweTNrCis3MTE0MSA5NDE1MDE3NTE5NjkxMmRhNzgxNGRmYWEwNjE1NDZlMDE5NTNkZWNlIHB5M2sKKzcxMTQyIDYwMTlmYjFkYTllMTEzNTBiNWI4ZjY4YjY1YzZlYmM4NzRhOWExMGMgcHkzaworNzExNDMgY2E4Y2ViYTczNzE0N2ZjZGYzMGIwMjY1Njc1Yzk5ZWU0M2ExNGUxYiBweTNrCis3MTE0NCBkNjM4ZWNkZTM1NzI1OTQ0YmRlNTc5MjM5N2JiODIxNDg5MWY2Nzc4IHB5M2sKKzcxMTQ1IDc0Y2YyMGE2MWJlY2I2NzI2MGMzYTM5ZmEwYWUzN2VhNWRjMjEwYzYgcmVsZWFzZTI2LW1haW50Cis3MTE0NiA3MTZhY2NkNGI2MDNlOTI2NDgzMzBjNmY5YzQxZTAzNGZmMmFlNGVmIHB5M2sKKzcxMTQ3IDkzZTkyNDA5Y2I0NjhlOTZkMzllODhjNWFiZGI1MDE5YmY3YTFiMGIgcHkzaworNzExNDggZDM2YWZkMDU4ZDhiYjZjZTUwZDQyNTdmYzhlZmIxNzM5NzYzYWE1NiBweTNrCis3MTE0OSBmNjVmMDExODMzMWMyOTE4MDU1NzcxMDYzNTJlM2Y1M2Q3ODE3NmNmIGxlZ2FjeS10cnVuaworNzExNTAgZTc0NWNlZjhmNDA3NWJjOTM3MjM3N2ZjMWYxYWM5ZmViYmUyZDI0YSBsZWdhY3ktdHJ1bmsKKzcxMTUxIDYxYjUxMWQwNWVlOTQ3MjI0N2M2MjM0NzU1ZjkyOThmM2Y2ZjE2YWMgcHkzaworNzExNTIgNjM0NTAyYmU4ZGNjYmRlNTRhNDU3ZThjOTI2ZTY2ZTM0NDE4N2YwMyBsZWdhY3ktdHJ1bmsKKzcxMTUzIGNiNThjOTczOTg1YzljMmVkMWI5YTUwNGRhNjFmOWY0ZDA5Y2M1NWMgcmVsZWFzZTI2LW1haW50Cis3MTE1NCA3M2E3ZTZhYmE3YjIxMmYwZTkxMDM1Y2YxZGViM2I1NGYzN2ZmOTZkIHB5M2sKKzcxMTU1IDM3MzQ2ZGYyYjg4NGZkZWYzNzc3NDRmZTg1NjQ0YzBlN2FjYmU2ODMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE1NiA4YzdjNWEzNThkYjk1ZTQxZWUxZjBiYTY2YmIxNTliM2VjYzllM2NlIHB5M2sKKzcxMTU3IDE3Nzg0MTg1YWQ5MzUyNTFmZWY2M2RjNjI4NmQwNTI3ZjQ1YTQwNjcgcHkzaworNzExNTggZTY1NjhiM2MyYWU3NWI2NzQ0NTUyMTA4ZjI3YzQxNDgwMDUyODA0OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTU5IDJmNTJhM2QxODVhMzBkN2ZmOWNmMmFhZTFlYzVmNDBiMmI0N2ZkYzcgbGVnYWN5LXRydW5rCis3MTE2MCAzZWY5NzU2ZmZkYWNkYTIxNTRjZjQwZTE1NjYwMjk2ZDYyNTE0OTNiIHJlbGVhc2UyNi1tYWludAorNzExNjEgYmQ3NGM0ZWQwM2E0NmVlMTM2ZjQ1YTRlNTlhZTRiNTkyNDNmNmEwMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTYyIDFkZjM3ZjA5NzQ3YzRhOWM3NzdlMTM5OTdiZWQzZDM1YjdlMWNlYmYgcHkzaworNzExNjMgNzEzNTVkZGYzNzNlZDlkN2M5ZjMzMmFmMzM4ZTg4M2Y1NGUzZjU5MCBsZWdhY3ktdHJ1bmsKKzcxMTY0IGE4ZjE3Y2Q4MmQ4OWYwMjEyNDk5MzZmODE2OTkwYjIyNGZlMmQ2MmUgcmVsZWFzZTI2LW1haW50Cis3MTE2NSBhYTg5MzA2NzJhYTRkODIzYTI1ZmY3ODMyNzExODM4NTg4NDIwMTk2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjYgMWY4MDc5ZWNkMzcwMGM4NjVhYjIwMWU0NzIxYjNkYmIyYzNkMzA2MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY3IDczYjAxNmVjNWI4ZmE3OGFjNTg2MTM5MmJhMDNkYjIxNmFiYWJlYmMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2OCAzNDc2YWQ3NTkwYjc4MGM4YzVjMTYxNDQ0NzVjMDgxNDM2YTgwMGJhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjkgYzUwYzA3OWIwOWViNjcxNjYxOTM1MjFkOTkyMGM0OTEwOGNkY2UwNSBweTNrCis3MTE3MCAyOGUzMGE1YzYzOWQ3ZjBkY2U2MTYwYTJmN2RhZmE1Y2NlNGE2MzhiIHB5M2sKKzcxMTcxIGFkYmRlNWMzYjVmZTRkZjQwYzdmOWZmNjNkMTdmMTEzODNiM2VmNjYgcHkzaworNzExNzIgNDU4ZWJlNGY1YTU4OGY2ODYxZDI0MjhmYzJkYjkzZDY4MGFkOGFmNCBweTNrCis3MTE3MyA3ZWUxY2VmYTZkNjJiOTI5YTFjNWU0YWIzNmRmOTlkNWViOTEzY2QyIHB5M2sKKzcxMTc0IDU4YTdjNTA5NDUyMzA5N2Y2MjcwN2MyZGQ4Nzc3MGVjZGRjMGE5MDQgcHkzaworNzExNzUgYTNiYmRkOTNiMzg5YTY2NTI0MGM1MmMwZjgzYzc0ZmQ4ZjA5MzU5ZCBsZWdhY3ktdHJ1bmsKKzcxMTc2IGQ3Yzk3NTViNjE3NzMzMDA0MGEyNjUxM2IwZmZiMzRiODgzN2FiMWEgcHkzaworNzExNzcgY2I0NzgxNTI0NzA0OTZkZWJjYjk1M2RmZDc4ODFmNTM4ZTc3Yzg1OCBweTNrCis3MTE3OCAyYWFkYzFhZmM5YTE5NGQwYTBjZjcxMTVkMTBkMTFiN2QzZGFiYzk3IHB5M2sKKzcxMTc5IDUzNDc3NDBkNGQ1ZGQ0ZWIzMTk4ZmZmMjc2MjdkMjY2ZmMzMWVhZjggbGVnYWN5LXRydW5rCis3MTE4MCBkMmUxNTYyOWZjMjk3YTAwNzE3ZmJmODRjMjczYmUyMTFiMDhmZjFiIHB5M2sKKzcxMTgxIDdjMmEwNGUyMThmMjFiOTNkMGM3ZDU3NmNlNmUyNmZlNzViYTY0YjMgcmVsZWFzZTI2LW1haW50Cis3MTE4MiA0NmI2Yjg0MTVkZWU3NmNmYWFjMTUzNmIzM2RiN2I5ZTVjN2RhOWI2IHJlbGVhc2UzMC1tYWludAorNzExODMgYjE0ZTllYzlkOTlmNWVjYzFiNjFhMzJjYzdiY2M5ZWI2NDQ5ZDU0OCBweTNrCis3MTE4NCA5YTkxMmE1NzE2NGY2NWJiNTEzYWJlOWUyMzhhNTM0NDU0ZThlZTA2IHB5M2sKKzcxMTg1IDY4YTllNmUzOGFmYThkZDkyYWE1MWJjNGM3MGNlY2M1NzAxMGRkN2UgcHkzaworNzExODYgYzE3ZWYxNGJkZjQxY2FhM2VhZDQ2Yzk2Mjk2YjAwNzdhMjc5Yzc1ZCBweTNrCis3MTE4NyAzNTYzMGMzZWRkMzNjODA5MGI1NDc3YTc5YzI4ODNiOTllMjczZmE0IHB5M2sKKzcxMTg4IGZmNzkzM2Y0NGM0MTYyZjU5NDRhMDhkZTdhZTc5MmM1MTlmZWE4M2EgcHkzaworNzExODkgYWFjZjUwOTRhMWI1ODBmZWNlY2U0YTYxNGU3NDM1YzA2MWNkMzg5NyBweTNrCis3MTE5MCAxZDc5M2VlMTViNmY2ZThkOGQxMzkyNGU5MWE4N2FlMzg1MTVlZGVjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTEgNDlhZWY0MTQxYjkzZjI4NzUzZjdjYWE1NWU4YjRlZjg3MjlkNTU3MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTkyIDViYzhjZjNkOTBiMzU1MzEyODMzNTdhYjA2MmFkYWI3ZmFiMGRlNWEgcHkzaworNzExOTMgYTAxNGRjNDdiNTUyZWI3ZTM3MmI3NDFmZThkZWJlZWQ1NTFhNWM5YiBweTNrCis3MTE5NCBlZTQzMGU1MDc1ZGIyYWRmODEyNGU2Yjk0OTE2YTg5Y2E0MWQzMTcxIHB5M2sKKzcxMTk1IDllZjdiZjRkODU5MDg2Mzk5MjhiYjE1Zjg4N2E0YjEyMzhhYTM5NzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE5NiA2ZGU4NjM2Y2Q4MTczMWU5NDM1MDkzOGRmNmE2NjljMDE3NDAzY2Y4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTcgYjRlZjUwMmZjY2EwMjg3ZWNjNzk0NWQyMjk1NGNjZGMxMjI2NjA2ZiBweTNrCis3MTE5OSBiZGM1NzQ3ODI5MTlkNzhjMTE1MjBkNDM3NzQ0MjU2MWIwM2I1NzgzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMDAgZTAyYmRkNjA4NWZmYmViNWI2ZDI5OTA2Y2ZhNDY2Nzg2YjkyNmJjZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjAxIDc2MTA0OGEwYThkOTliOTY3MGRlYmQ1ODYzYjRjZmYzZTJkMTdkMzYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIwMiAzMjcyNjNmZDJlNjY2M2ExMWNmNmIzNGVlNDZjMWFhYmM3ZDRmNGI2IHB5M2sKKzcxMjAzIDE5YjBkYjEzNTRmNzBlNzZiOWE1N2M5MGJjMDZlNzcxOWFlNDcwNTAgbGVnYWN5LXRydW5rCis3MTIwNCBkOTAwMjQ2MjA1Njg3ZTkxZDE0MTUzMTdiY2Q5ZDJkMjNkMDQ2MDQ4IHJlbGVhc2UyNi1tYWludAorNzEyMDUgZmRjZmNhNzE1YmYzZGFkMGRlOGJiNDY0NDYzOTkwOTQ1OWY3MjhmYiBweTNrCis3MTIwNiBlNmU1YTBlNDM1NDM0NmI1M2Q5N2I3ZmE4ODM4NTc0MjhkNWFlNTZmIGxlZ2FjeS10cnVuaworNzEyMDcgMGZlMzhiYmQ5NzNjZGYxYjNjYTViM2QwZDM1YjczMzYzMjlmOTA0NCBweTNrCis3MTIwOCBkZTVmMTg2MzlhNmNlMWZjMzlmMzY2YjBmYjc1NjU1NjdiYWI0NzA3IGxlZ2FjeS10cnVuaworNzEyMDkgNzhmMzEwYjk2MWMwMmZjYmM3MjNiMGRiMDY2MzhmMWQ1MmEyZjU5ZSBweTNrCis3MTIxMCA5Mzg0YjQzZDQyNmZlZTVmYTRkNTVkZTU2ZTUyNWQzOGZkOGE5NDcwIGxlZ2FjeS10cnVuaworNzEyMTEgYWRkZDc1M2JhNGQ5NmI3MzY2YmQzOGJhNTk3NWRmYmI5MzdmZGJmYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjEyIDE4ZjFjNTZjYTZmZGJmMGQzMGU4YTRiNDhhYzM0NGQ5Y2MyMDNhNTEgbGVnYWN5LXRydW5rCis3MTIxMyAwZjc3MDhiMDEyOGMwN2FlYTQ0NTU3Nzk0M2QyM2MzN2EzNTI1ZGZkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMTQgMWVmMDJlZjQ4YzQyNGJmYzg5ZjM1NGNjOGY4OTU5MjI5MmZlMDBhNSBsZWdhY3ktdHJ1bmsKKzcxMjE1IDVlOGRlNmMzZTAwMjc1MjYyMzI2NjVkM2I0YjEwZDFlMmQ0MTE1ZDQgbGVnYWN5LXRydW5rCis3MTIxNiBlNDIxYTkyYjI1MjA3OGRhN2ZhNjBhZjUwZDY5ODNjZmFhZGU5MTgzIGxlZ2FjeS10cnVuaworNzEyMTcgMDAwNmIyYWRjN2U0MDc4MzliODY2ZGNkODJjYWZmODYxMzQ4N2U5NSBsZWdhY3ktdHJ1bmsKKzcxMjE4IDU4N2EyYWVkMzlmMmVkM2RhNDEwNDZiZGYzMzg2NWI3ZGI3MzZlOTIgcmVsZWFzZTI2LW1haW50Cis3MTIxOSBlYjg0NTMwNTc3YTUzYTI5OWNlZTZhNzRhNTA5YzYzMjZlY2ZmYWNkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjAgZjVjYjNiMzNiNzk0MWE3MDRhMjlmMWZjNjI1NTMxN2YxZjE1MjMyMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjIxIGY1NTBlMjQ2MzA2Mjk5M2FlOWNiYWJkNWU4ZjU2YzU2Y2MyODNkMmIgbGVnYWN5LXRydW5rCis3MTIyMiAyYmJiNjBjMDBlYjcyNTc4MjI0MGMzODBkZDJmNjk3YzE1YjMzMjFhIGxlZ2FjeS10cnVuaworNzEyMjMgMDFmNGU4ODAzZWNkZTAwNjE0MGY0NzY4MDc2NzQ2ZDJkYTgxYTA0MyBweTNrCis3MTIyNCA5OGY0MjM5MjgzNWI2OWFlZDVmYmY4MDNmN2I5ZjM1MzI4MzIyOTAyIHB5M2sKKzcxMjI1IGE3Yzc0ZTA5ZGUzZGYwYWUwMDE2YzVkMmZjYjdjMjYxNmUwNzBkMDcgbGVnYWN5LXRydW5rCis3MTIyNiAxNTJlMDhkZmMxYWY1ZTU3YTRlMzIyYzQ4YTQ5NDhjNGU3MDUxOTg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjcgNThkMTcxNzgwZmQ4OTU0NTM5Y2I1NjFmNDIwY2IxOTFhNzg1Y2U5YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjI4IDVjYmRiNTE1N2ZhNzZjNTAwN2I0ZjZlNzM1YWM3Y2Y2YTQwNmUwNmMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyOSBiZmZhNzc2OTY5MjZkY2Y1OTFjMWZlMzcyZTAwOWZiZjI4OTFkYmIyIGxlZ2FjeS10cnVuaworNzEyMzAgZWIzMmExNTM3ZGQ3ZjhiOWVmZDM3ZDYzZGVjZTM0MmZmOTQxMjkyNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjMxIGYxY2VjMzc2OThmZThkMDQxOTQ1NWFiMWQ0MTAwYzEwMDQxODg1MjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzMiA2NjM1NGJkZGRjZjc2ZGQ0ZjMxODhiMjRlMTA0MDRmOGU3MmI2NTA2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzMgMWNiZWFiZjg4OGExNDY0MmMxYzEwZDY4MjhhMzFjNzk5ODM3NjVkNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjM0IGViOTQ1MTdkZmJkNmQ3YWZiMGViYjk4MmJmYzEzNDQ4YWQxN2QwOGMgbGVnYWN5LXRydW5rCis3MTIzNSA4NWM1Y2U2ZDdmOWM3Y2IwOWI2MjE0ZjQwNDhkOTY3MzZhZmYxMjc0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzYgZWQ3ODMzZDQ4MmM4MWYyZTc3ZmY4YzRlOWQ1ZDkyZWJiMDI0MmQ5OSByZWxlYXNlMzAtbWFpbnQKKzcxMjM3IDk3NmIzMDVhYWRkMjllMGUyZmY5MDJmOWUzN2VkNTQ4MDQ1MTdjNGEgbGVnYWN5LXRydW5rCis3MTIzOCA2ZWFmOTc3MjFkM2Q4YWQxZjExMGNmOWM1YzFlZDExODAyYjg3ZjViIGxlZ2FjeS10cnVuaworNzEyMzkgMzdkNmFmNmY4NWFhYzRkZDhkNDQ3ZDllZTFlMTQyZTg3YTBlZDkzZiBweTNrCis3MTI0MCA4YzYxZTdjYWEwNmNmNzgwYTQ1ODc1MjY3ODI5OWVkMzdmZGE1M2JhIGxlZ2FjeS10cnVuaworNzEyNDEgZGExZTU0ODNhY2EwMTM2YTViNWQ4ZGRlYjkwOTE3YWU0ZjhmOTQxZSBsZWdhY3ktdHJ1bmsKKzcxMjQyIDNiYmM2ODQ0OWY5NGU3ZWJjMmExMWJjMDhmNDZhMzQwMTI3MDFhOGMgcHkzaworNzEyNDMgMTNlZjExOTBlZGE5ZDY0ZTE1YmRlODFiMjk3ZjM3NTEyNzljYjdkNyBsZWdhY3ktdHJ1bmsKKzcxMjQ0IDI0ZWQ1ZDg1MTcyMGNlZTBlMDJhZDVhMmFkNzY3YTMxNGVjYTdiYTEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI0NSA4Y2U5ZWRjODg5NjliOGQ4ZTFmZDMxODM2Nzc1NTQ3MzUxYjliN2QyIHJlbGVhc2UzMC1tYWludAorNzEyNDYgYjkwODdiNjQ1Y2VmYmM0M2JjMzljN2MyMGEwMzc4NjZhY2ZiNWFhMCByZWxlYXNlMzAtbWFpbnQKKzcxMjQ3IDc2MTJhYTg5YmYwNjBlY2QyY2I1YzdjYzY0YWE3ZDI3YzhiZjY2YTAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI0OCBhN2U1YjlkOTBiMTI1ZmNlNmVkN2QwYzBiM2IzZGNlZDRjN2UwOGMxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDkgOGQyMjg3M2U5YjI2ZDFkNTljZjBkMzc1ODFmYjViMTViNjgyMGVlMSBsZWdhY3ktdHJ1bmsKKzcxMjUwIDQzYzg4OWZlZGE0MGIxMTc2MjM5OTc3MTFkNjNhMWYyZmVjYThiYzQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI1MSBiZDEzMzZhM2E2ODYzYWUyNzUxY2EyNjQ3N2NhM2FkZjYzZGQyODI4IGxlZ2FjeS10cnVuaworNzEyNTMgYjJjNjhkZjk0NDYzOWRkNDM0YWQzYjM4YzM0NGNhYjgxMThjOTI1NiBsZWdhY3ktdHJ1bmsKKzcxMjU0IGU3NDA4MzMwMWEzNmUwODc1NWM0OWFlYzhhZjE2ZmJlMDU1Yjg3ZTUgcHkzaworNzEyNTUgYTE2YTA0NTY5NzhmN2VmN2U5OGIzMmNhNzY3MmY2OTdlMjhjNWExYiBsZWdhY3ktdHJ1bmsKKzcxMjU2IGNmZDcxMzY5NDFhMDk5OTIzZjg5MGMyYjE4NWZlZjNkYTk4ODA3ZDUgcmVsZWFzZTI2LW1haW50Cis3MTI1NyBlY2IyMTAzYmEwMjc5ZmY1N2NmNDJhZDM0MjQ3ZjI3NjE4MjA1ZTkzIHJlbGVhc2UzMC1tYWludAorNzEyNTkgN2I0ZWYwYjg3ZGRjZmY5MzEzNWNjMTAzNDQxNDc1MDk4ZDU1ZTEwMCBweTNrCis3MTI2MSA3OTJiYjg4NTAyOWZiZmIyODVmYzlkMzk2NTlmM2QyZTliYTg5NzI5IHB5M2sKKzcxMjYyIDRkOTc2MTFkMWNjYTQ4YTE0ZmZhMWI2OTM4OTU2NjQzMmM4MzlmOWUgcHkzaworNzEyNjMgNjcyYjBjMDQxYmE2Mzg0YWQ4NGIzYmMzYzY2OWJkMzg5YTJkZTRlMiBsZWdhY3ktdHJ1bmsKKzcxMjY0IGM5ZWNkNDVhNWVhMmYxMDNhMzRlNDhjZGVhMDkxOGMxZTliYWI4ODcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI2NSAxNGUwMGYwZjc4Yjc0Y2Y0MTA0Zjc1YzlmYTBjMjAxZmY3OTVkNmIxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNjYgMmQwMGZmM2QyZjVhM2M1Y2NhODM1OGZkNTFiYjNiNTAxZWZlOGZkZCBsZWdhY3ktdHJ1bmsKKzcxMjY3IGExNGRlYjk0ODBmNGQzMjBkYWQyYzYyMzNhY2ZkNDQ3ODRkZWM2NGUgcHkzaworNzEyNjggZjhjNTc2ZmFhOWFkMTNlOWFhNjYwNjNiOGI4ZGY5MGNlNWI4NTM5YyBsZWdhY3ktdHJ1bmsKKzcxMjY5IDU0ZDVmMjk4NmFmNDJjZGQ3OGJiNzI2YWYwZmMwNzk3ODE3NjlhZGYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI3MCBmYjJlYThiYjNhMzNkYzc2ZmQ4NTQxNDJkZjg4MTc0MDZiNDYzZTQyIHJlbGVhc2UyNi1tYWludAorNzEyNzEgYjA0MjljN2ZhNzFhYWVkNWNjOTMyNjk2ZTA5M2Q1YTUyNDZjMTI4MSBsZWdhY3ktdHJ1bmsKKzcxMjcyIDRhY2JiYjNlNjVlMmIwNTgyMWQ0MzY4OWVlM2FmNWJhNTczMDQzNDEgcmVsZWFzZTI2LW1haW50Cis3MTI3MyAyNTFiZmQyZDk5NmEyZGZmOGNjMTMyNjRhYTg1YmZhZTU4YjE4NDYyIHJlbGVhc2UyNi1tYWludAorNzEyNzQgZDM4ODdkZmU2NjFmOTM2MmMzZTJjZmMxMzQzMjQyMmU2MGUxNDU5NyBweTNrCis3MTI3NSAzODg5ZDk1Mjg2MDFlM2JlMThhNjJiODQ4NjM2YTYwYjJkNDUwYzU4IHJlbGVhc2UyNi1tYWludAorNzEyNzYgOTY5YWQxMGE4YTcyNTcwYjgxYzU4NGE1YTRhMTNiYmM0YTkwZTIyZSByZWxlYXNlMjYtbWFpbnQKKzcxMjc3IGQwODg0MzZhYzM2YjEwYTlmMzNjZWU5MThmODE4ZDE3ZDBjYzQ5YjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI3OCA4MjM3ZGU2MzJkNmY2ODE1YTM2ODgyZjk2NDUzZTRhOWJlMmQ4MWEwIHJlbGVhc2UyNi1tYWludAorNzEyNzkgOGI1MzE1MDEzNGY1ZGIxNGQyMjNkZTBhMjNiOWZkZjA1YTc1NjUyZiByZWxlYXNlMjYtbWFpbnQKKzcxMjgwIDlhNGIxOTMzMGFhOTMxYWJkMzU4NjFmY2ZlZTYyNGZmNGUwYzQ0MTIgbGVnYWN5LXRydW5rCis3MTI4MSA3ZTc4MTNhZGEyZDE4MWM0NzI0OWI3OWE5M2ZkZWYzM2Y4ZmEwZDBiIHJlbGVhc2UyNi1tYWludAorNzEyODIgZjNiMjZhNzI5ZTgyZjhmZmZiMTc0ZDQ5M2M2OWM2ZTk5YWI4OTA1OCByZWxlYXNlMjYtbWFpbnQKKzcxMjgzIGY2N2E0ZjFmMjMwZDc0MGZkZWNiYTUzYjM1OTRmOGZkZjkzMjQwOWYgcmVsZWFzZTI2LW1haW50Cis3MTI4NCA5MzRkOWMzY2JhNDE4NGI3NDAyNjkzOGU2N2Y0ZTc4OTdjNjYyN2JjIHB5M2sKKzcxMjg1IGI2OTM0OWQ0YjllODgzMTZiNzVkYzgyODY0NzU2NGQ0OWY0NmI3MDUgcmVsZWFzZTMwLW1haW50Cis3MTI4NiBkNmRlNjg0NGZkNzE0MWIzNmM2NDZkMDYwYjg5Nzc1NTY2OGNmMmY3IGxlZ2FjeS10cnVuaworNzEyODcgMjRmYTdkZGQ0ZGNjZTQ4YjFkZWRmMTBkNjdlYWQzMGM1ZDljM2ZjZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjg4IDFkOGNiNzZlNzE5YjdlMDUwODQyOTFiMmM4ZDJjYzIxNWM5MWJlNDkgcmVsZWFzZTI2LW1haW50Cis3MTI4OSBiMzZiMDBhZTI5ZmZiZjZlNTUzYmM2NDQyNzBlM2E3MmY2Yzg1Y2VhIHB5M2sKKzcxMjkwIGIzM2JkZDI0MTQwMjM1ODljNmVmY2FkYTVlZTIyNTQwNTNjMWY1MWIgcmVsZWFzZTI2LW1haW50Cis3MTI5MSA0MzNkZTNkNTk2MDc4ZDFhZTU1YWQyNTk3NGYwODdhYjA4MmI1YTkwIGxlZ2FjeS10cnVuaworNzEyOTIgMGM2YjE2YTJmOTFiNzVlZjIxNzBhMzZiZDU5ZjJhN2Y4NjI1ZTZkZSByZWxlYXNlMjYtbWFpbnQKKzcxMjkzIDU0OGNhMzQzNTdjZGFlNWM3ZjE5NTUyYjFhNmNmMmJjN2M5YWRkZDcgcHkzaworNzEyOTQgZGEwYzFmNzRjYTIwMGJjOGExZmJhZjAxYTJlZDRiMjYwZGJjMjk5OCByZWxlYXNlMzAtbWFpbnQKKzcxMjk1IDRiODgxYjRhOTBlOTVlZWQ3ZmQ0NTI2Yzk5YWZiMWZiMjE1MTBlOTMgbGVnYWN5LXRydW5rCis3MTI5NiAzNjRiZDAwMmI3Zjg2NzlmZWMxM2JiNTFmMTI4MzAyZGMwYjBiMWY1IHJlbGVhc2UyNi1tYWludAorNzEyOTcgNWE3YTMzYzk0ZDAwMWM4YmRjN2M4ODY2ZmJkMmE1MzU5NjQ0NjcyZiBweTNrCis3MTI5OCBlYzJlNGI1YTBlOTBkYzRkNjBkYzAyNDFmMDkxMmVlZDIzMTE4NDUzIHJlbGVhc2UzMC1tYWludAorNzEyOTkgZDM2YTRmOTIwMzc4M2ZhOTlhZGY4ZWMzOTczYTViNmQwYmFhNGJiMiBsZWdhY3ktdHJ1bmsKKzcxMzAwIDQxNGEzMTE4MWU5ZGMzODAxY2I3M2ZhNzBlMTc3NmRkYzEwMDJmMTMgbGVnYWN5LXRydW5rCis3MTMwMSA3MzYwMDUxNTk5OWJjYTBmMWRlMDQ5NjQzOTI1MDZkNjU5YTUzYmE3IHJlbGVhc2UyNi1tYWludAorNzEzMDIgZTM2Mzk1OGZjZDcwYTQzYWQwN2IzOWRmOTk5NTUyZDBmYTFjZWZjMSBsZWdhY3ktdHJ1bmsKKzcxMzAzIGM2YzQzOTgyOTNiZDY4MmIzNTVmMTA1MGJiMTZiYjNlMThjOGI0MGYgbGVnYWN5LXRydW5rCis3MTMwNCA5ODYyMDFhY2E2OGI0MzQ0YmZiYTM5ZGY4Y2Y5NDE0NzQ0OGZlM2U3IHJlbGVhc2UyNi1tYWludAorNzEzMDUgMjA3OWVkZDUyODU4NzQyY2FkOTFiMTkzMTljY2YyMWQ2Yjg3NzQ5NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA2IGVmYzdlMTNhNzU0MjMyNWJiM2Y3MzA5ZmJlYmIyNGVjNTQ4N2Q3NTcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwNyBiNDg4MWY4ZWM3MDZmODEyMTNiZmJjZWMxZDhmZDcxYjNiMDQ0MDVjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMDggODU5MjY3N2ViMzUyY2Y4NWM2MDU1YjlkYmZkOTA1N2U3ZWI2N2ZiMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA5IDA2NmZhMGJhODI5MDBmYmMyNDk4NzJmMmFlNzRhMTlkZGI5N2ZmZDQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMCA3YzBmZjBkZTYyOTU2ZjE3NzdlYzczMTY2NTYyOGQ0MzYxODQyN2YxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTEgOTk2ODdkNTFiZTBhMTQyNzFmYTYyYTljZjcyZGQ3NWYyOTExZmRiOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzEyIGUwMTI5ODZiZTRmNGU1MmY5YWMxNjhkYWZlZjVkODQ1NDlhZWRhNDEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMyA1MjZkYjI4ZjEwMGQyMTI1YmI4MzU1NTM0ZTU4YjI2YWJlYTczMjVmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTQgMzBiNTBjYmU1YzVlNWZjOGY5ZTlmMGVkMGEyYTExMDZjYzFkMDI2MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE1IGY3ZjcwMTM5ZWY1NzBkZmIzYzY0OTdiNjEzNmExZjllYjk1ZDliMDQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxNiBjZWUxYTg2YzY5YzE1ZTY0OWMxZDc1NTliOTM0MDI1OWY2NDJmOWJjIHB5M2sKKzcxMzE3IDAyNjM1NDYwMjYxZTlhZjFhOTM3YzlmNjBjZjBkNWJhZThiYjFlYmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxOCA5ODY0NTJiNTI2YTFkZjZjZTBhODMzZjQwMzE1Y2IwMWUwZDZjMzAzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTkgMDZmYTg3ZjNlYzM2MjcxZmQwNDc0MGYzMTg5YTAwOWVmZGE5Yzg1YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIwIDU1NjBhMDY4YzA1Nzk1ZmEwNTAwNTIxN2JmYjM4OTVmZTcxYThmYzMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMSBlNGVlYjBkYWY2MjU0NmNmZDM3NjczNzdlYjYyYWM3MWQwZWVmMzA2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjIgNDVmZDIyNzBhZTFiOGMxZDA4OTQ5OWEyYWQ5MjExYzU2N2YyODgxYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIzIGM1ZTBjNmY2NTZlNjM2ODVlMWE5ODYwYzZiZWUxZTZjMDkyNjM5MmYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyNCAwNzZjNzIyMTE1NjExMTk2NTk2NDBhMDI2N2U2NjE5ZGUzZjZlYzAxIHJlbGVhc2UzMC1tYWludAorNzEzMjUgYjk4NDllZmIyNzU0NWM2ODNkNDI0ZGJkODY0NmUwNDJmZWI4Y2I4NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzI2IDhkNjk3NjNhMjMxN2I1NDA2MThmY2ZiMGFhMGNiN2NiNWZkZWY0NjggcHkzaworNzEzMjcgZDM0NzBiYzZkMTkxOGRhOTc4NTc2ZjlmNWQ4ZWUxODdkNDc5ZTk1MiByZWxlYXNlMzAtbWFpbnQKKzcxMzI4IDRhNjdkNjkxNDcyNTg1MTUwNzM0NTgwYjliODY1ZTVkMGE3MTdlN2MgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyOSBkODE5ODUxODJhMzZkNjA4NjBhZDRlZTY0MzJkNGM3NjNiNDA0ODMwIGxlZ2FjeS10cnVuaworNzEzMzAgOTIwYjA3OTA5NjAwM2Q0Zjc0ZDZlNzMxZWQ4ZTlkM2U3YWU5MWZhZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzMxIDViMDFmZTUxM2Y5Mjg2NGZmNWJkNjkxN2U4ZjA4MDYzODgwMjdmNGUgcmVsZWFzZTI2LW1haW50Cis3MTMzMiA1NTQ5ZThmZjI4ZDJjZWM3YTNiMjdiZTE2NTUyM2FjZDNlNzFjZDA0IHB5M2sKKzcxMzMzIGY2NjQwNmYyNjA0NDFmMzBmODZhYzZhM2YyZDI0ZGMyZjAwZGJhZGYgcHkzaworNzEzMzQgYTBlZGQ5MWU5YzZmMzEyNjJiYjNmYTEyNDI0YTA1ODg2MzRkMTg3NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzM1IGY4MjRkYzYwMTA2ZjEwOGYyYzY1OWIyZDBlZGRjYTA4NWVkYzkwOTUgbGVnYWN5LXRydW5rCis3MTMzNiA2MDkzZmRjNWVlOTYyZGUwY2VlOWZiYjI2NmIyZDg2NWY5YmFiOGE5IHB5M2sKKzcxMzM3IDdhMzlmN2U0MmJkOTdjZmYyNmJjOTEzMzUzNTlhNTQ3MGFlNGU3MjAgcHkzaworNzEzMzkgZjM5MWRmOTNjOWFiZDQ5ZjdkMDIwZGQ1MmQ0MTczNWNiNTIyNDVlZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzQxIDM3NDRlZmE0NTY2ODFlYTg0N2Q4M2MzZTc1NjY1Yzg3ZGM5OTljNTMgcHkzaworNzEzNDIgOTc2OGRhODZjZjhlMzJhZjYxNzk1ZjJiNzQ4MjNkNTBmMTk3YWE1NiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzQzIDI4YmFlNWNhNTIxOGQwNGIyYWM0ODUyZjhiMzg2NjRjMzMxMDgzYzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0NSA2OTExNGEzNTZjZjBkYTcyZWJmNDNkNDU1YzE1ODFkMjQ5YjhiNmZjIHJlbGVhc2UyNi1tYWludAorNzEzNDYgOGZiYjk5MzZkNGRhMmIxNzgyOTM5NzgwMDg2NmI3ZGY5ZWFjZmJmOSByZWxlYXNlMjYtbWFpbnQKKzcxMzQ3IDZmY2QxMGVhOTk4YTkyNmQ1MzdjMDY0NTYwZWIwZDQ0ZjZlNzkzOTcgcHkzaworNzEzNDggZGE3M2M0M2U2OTFlZGY4NzVkMWE3MjIzZjkxYWFkN2U4MWNiNGUyOSBweTNrCis3MTM0OSA3MTZmNTk1OGI1ZjBkYTBhNjFmZDI3MTgwMDMyZmZjZWViNjk4NTgwIHB5M2sKKzcxMzUwIDZmNGEwODhkMzU5ZDZjZTZmOTc5ODlmODQzNjA3MTk2MDFjMGVjN2MgcHkzaworNzEzNTEgYzM3YmIxYjdhNDdhODQzZTIwZDgwZmNlNmU4Njc3YTM0YWRlZTMwOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzUyIDQ5YjI0OTIyZWIyZGRmNTdmOTMzMjFmYTU3MTQ0OTgwYTMyNWRhNzIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM1MyA2NzRiMjAwMDIyNGNjODllN2NiYzFhZTRkMTBlZDU4OTI2MzJiMzI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNTQgMzE1ODI0ODVmYmZjZDE1MzQ3MWYwZDg5MmQ5ZmZhZDJjMzU1MDM3MyBweTNrCis3MTM1NSAxNTM5MTdjMDAxYmVmYWZkMjZhZDM3ZWMyNTExOWE3MDdlMTE5OGIwIHB5M2sKKzcxMzU2IGY5MjUzMzkyNWVhNjYyNzA1YWJhMGIwN2JkNjUzMmMwODE3ZjQzMGEgcHkzaworNzEzNTcgOTQ4MzI0NTVlMzdkNTkwY2NhZDc4NDAxOWRiZTgxYTZjMjQ0NGIzOCBweTNrCis3MTM1OCA3NWRlZjdlZDlkNWZjNjNmOTA1YWJiMmRkODAzOWE3YWJjNGI1Nzg3IHJlbGVhc2UyNi1tYWludAorNzEzNTkgYzM5YzFjMjk3OGY5NGY1YjRmODQyYzk2YWE0NTM4ZTExNDIzNTllZSByZWxlYXNlMzAtbWFpbnQKKzcxMzYwIDJiMDgzMTQ2YWNmNWMyNjY4ODQ2ZDU2ZjdhNGFiZmYzMmYwMzliMTcgcmVsZWFzZTMwLW1haW50Cis3MTM2MSBiNTBmMTFiOGNhZDdmNDFlYWVjZGUxMzQ5MTQ0YTA0ZDQyNDg5NDg5IGxlZ2FjeS10cnVuaworNzEzNjIgOTBkMzIzODFhMzQwZmJlNDI1Y2UwZDcxOWJmYzRkMjkyMmViOWJlNCByZWxlYXNlMjYtbWFpbnQKKzcxMzYzIDAxZjFhZTgzNjMxYWU4MmJkODU5OGExMWMxN2UzZjliM2Y1NmMzOGEgcmVsZWFzZTI2LW1haW50Cis3MTM2NCAyNzVjMGJhNzQ4NTg5ZThhNjdmMWQ2YTFhMmIyNzVhMzZiYTMzZTNmIHJlbGVhc2UyNi1tYWludAorNzEzNjUgNWU4YzNlNzQ1MWZmYjc5Y2UxMThmYzI5N2Q4NmVjM2RjMDEwY2Y5OSBsZWdhY3ktdHJ1bmsKKzcxMzY2IDlhYjUyNDE3MGY2ODJmMzMyYmEwYmJhODE1NjVhODJhMWU4MDFhZDggcmVsZWFzZTI2LW1haW50Cis3MTM2NyBmY2UzYWQ0YjIzZDYwYzM1ZWZmZDViYWJlOWZjMmQ0YTdmY2U3NTkwIGxlZ2FjeS10cnVuaworNzEzNjggNWNlMjNjZmI5OGM3ZjVmYmRmNjIwNzA3NmVkZTZiMWMxM2RlNjdkMSBweTNrCis3MTM2OSBjODQyMDExODkzODczZWFmMGI4Nzc3ODJkNDQ4NTE5MWY3NDI1MTU2IHJlbGVhc2UzMC1tYWludAorNzEzNzAgZTIzMjUyYThmZjU5MjZmY2ZjMWRlZjg3OTQ5ZGNkZTZlYTQxNThlNCBsZWdhY3ktdHJ1bmsKKzcxMzcxIDVhNDk0NjIzY2YzYTgxNGI5ZTJlMGJiNzY2ODM1YjRhZWIzZDg0MjUgcmVsZWFzZTI2LW1haW50Cis3MTM3MiA2YzQ2ZDZkYjJmZDZhOWZiMWI1NzgwZDM0NzMyN2NlNDFmYzE3Y2JhIHB5M2sKKzcxMzczIGQxNmNhZGE5NjM3MDE5MDczODA1MWZjNTczMmJmOTNjYWEyMWJiZWYgcmVsZWFzZTI2LW1haW50Cis3MTM3NCBiYTNhOWViY2U4MWU3YzJjYWFmMmFiZmU2MTFiN2M5OWYwZDQ1YzMyIHB5M2sKKzcxMzc1IDM3OTk3MDMwOTQ3NTU2NGY5YTZkODkzMWFlZTdmOTBlNmI1MTU3MDUgcmVsZWFzZTMwLW1haW50Cis3MTM3NiBiYzc5YmVmNTVhYTgwNmU4MzE1NGQ2NDlhMjJkZjgxZDAwYjBlOTgwIHB5M2sKKzcxMzc3IDQxZTcyMDJlOWY5MzA0NmRmZDUzZmIzY2JkYTc1N2RhNmJkNjk3ZGMgbGVnYWN5LXRydW5rCis3MTM3OCAyNDhhZGZjYmI3MTU0NGM2YTU3MzUwZmU3OGE2Y2MxZmVhNTdkMGM2IHB5M2sKKzcxMzc5IGRiMThlNzhiOTJkODZhMDMxZjBiYjBjZjE5MGI4OGY5ODZhYzgxMmUgcHkzaworNzEzODAgMGExY2RhMWU3YzFjNzk2ODczMWNjZmJkMjE4OWYwM2QxZWYyODhlMiBsZWdhY3ktdHJ1bmsKKzcxMzgxIGQwNDQ5MGJlZTJlZDQ4ZDJiOWRiNjc5OWM4NDI1OGQwMmMwMWUxZmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM4MiAwOTE3MDZlMTQwNTYwN2E3NjMzYzg3MTcwZjg4MDE5ZTk0ZmU0ZjU3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzODMgYWU1ZjUxNTZiODgyNjZhZGU0YWE4Mzg4NGQ0OTA0YmQyZmMwZDUxNiBweTNrCis3MTM4NCBmNzEwNTU1MDUzYmYyZjhmNjJlMDM2MDVjYmUwODIwYWE4MTE5ZmM2IHB5M2sKKzcxMzg1IDEwOTk0MTAxNTcwMzMwNzRiN2ViYWI5ZTVhODQwMDIzYTc3Nzc5ZDcgbGVnYWN5LXRydW5rCis3MTM4NiAyNTFlZjk5ZGZiNGM0MDFhODRlODkwYzk5MGNkMjAxYmZkYzNhNDg5IHB5M2sKKzcxMzg3IDc0ZDlmNzVkOWRjMWZjZmQwZjQ0ZmRkZGM3NTg0NjA3NGI2YWEyZGEgcHkzaworNzEzODggMTlmN2QzYWJlN2NkZTI3ZmZhMTQ2MmI5ODUyMjk3N2FiMjQwODg0ZCBweTNrCis3MTM4OSBkZjBlZDllYjc5YzM2NTQ1ZjFjZjEzMmIxMmMwMWRkMjU2YmNlNDc1IGxlZ2FjeS10cnVuaworNzEzOTAgZmQxODBiZjQ3MjI3ZmQ2YTZlMzQ1YjRmYWFjYmE0NWUxMmQ3YzI0ZSBweTNrCis3MTM5MSBhOThjNTA5MDg0ZWIzNTYyY2M2NmNmYmQ2M2ZlODI1YWVhNDg1YTdjIHB5M2sKKzcxMzkyIDdiODk2MmY2NTkxOGIzZTQ5NTk3YzIzNzZiNGNiZjMxNjIyOGYyNzQgbGVnYWN5LXRydW5rCis3MTM5MyA2MWUzN2VmZmFlM2FlYWYzMGU4Nzg0NjE1NGQxOGM1YjVmZDFjOTk2IHB5M2sKKzcxMzk0IGZkMTZlNTc5MDk2ZTNhMzkwZmRmZmEwMWQ2MDc2MTg1MzdjMzAwYjIgcHkzaworNzEzOTUgMGJjMDUyNGQxN2NlYmMyMjFhOTA5YzVmMzY3NDAwN2JmZGZiZDAyZiBsZWdhY3ktdHJ1bmsKKzcxMzk2IDAyMjI0Y2IyMWQ3Y2I5NWViNDUxYzMzMjVjZGViNjNjOGZkYTY0ZjYgbGVnYWN5LXRydW5rCis3MTM5NyBiMTQwNGE4NjhkOGY0OGVkNTdlYmM1OTc4MmFhNWE0MWJkNWY5Nzc0IGxlZ2FjeS10cnVuaworNzEzOTggNWE4ZWJhYmExYTA5ZWZkZmU2NDMyZGRjOGZjNzI1MTdkOTA4MWFiYyBsZWdhY3ktdHJ1bmsKKzcxMzk5IGFmZjJiMTVjY2M2ODQ5YWQxYzYzNmRhMDEzZmZiODg1NTE4M2UyOWQgcHkzaworNzE0MDAgNjdkOWQ2MTYwYzEzNGNkZDhmZDhlZDcyYzFjZmZiZWU4NDlkOWUxMCBweTNrCis3MTQwMSBkMzVjNjQ4NmFkOTRhNjg1OTYwMzc3NmZlNmZjMzU4YzQyMTEyY2VlIHB5M2sKKzcxNDAyIDYzYjU3NTEzYjFiZGQ0MDEyMGEzMzQ5YWYzN2ViYjVmOWEyYmM3MTAgcHkzaworNzE0MDMgZDkwODhlZmQ1NThiZDBiMzU4ZGIxN2NmNTllYWQ5NzVlNDc3Yjc0OSBweTNrCis3MTQwNCAxODA1M2NmNjExNWE1MmE3NzAwNGI1MTU4ZDUxMTA4ZDg5MmYzYzY5IHB5M2sKKzcxNDA1IGMyMzM2OTU3YzUzNTRkYzBiMjM4NjBmZTUxYzM1YjgyNDBiMzFkMTAgbGVnYWN5LXRydW5rCis3MTQwNiAzMDg2NDI3YjA3MDkyMmRjNGFmZjlhZWEwNjg3ZGM1ZGNiZDYzN2YyIGxlZ2FjeS10cnVuaworNzE0MDcgMWNjOTQ5OTdjZmE3ZWRjNWZhOTkxNDU4ZjgxYTQ4MTAwYjI3OWFmMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDA4IDlhNzMxN2NlNmRiOTk0YWFlMjBhYmVhOGU2Y2E4NWE5M2ViNzI3NTEgbGVnYWN5LXRydW5rCis3MTQwOSA1MzY3NjFjMmI2YTRhMjBkNTQ3OTNhZTE1MDMyNmMwZjJhN2EyYTUzIGxlZ2FjeS10cnVuaworNzE0MTMgNDBlZmYzYjE4MmU0ZDJmZjkxYmMzMGZiZDQxOTVjODg2MDI2MjVlMCBsZWdhY3ktdHJ1bmsKKzcxNDE0IGRmYTkxZGZlZDBiMDU0OTZjMjE2ZDM4MjBjMGUyYWUzMGI0NDZmODEgbGVnYWN5LXRydW5rCis3MTQxNSBhNzg4ZmFjZWU2ZWY0ZDc4MzdkMDJkMGJhZDc3ZjVkYWFlNjY5M2UyIHB5M2sKKzcxNDE2IDVhZDIwNDMxMmJjYzMwNmI0ODEyZGE5ZjU4N2UzNzY4MWQyMmIwODQgcHkzaworNzE0MTcgMmJhMzNjMzRkYzFhNzk2NDZhNzI2ZDYzYjExMzg2MDIxMjUyZTE2MyByZWxlYXNlMzAtbWFpbnQKKzcxNDE4IDA3YzNhYzMwZGE4NzA0NDE5YmQ1NmEwZmEzMDVlNThkZDcyNTZhZGUgcmVsZWFzZTI2LW1haW50Cis3MTQxOSBhZGU1YzI3MTk4ZGJlZjBjOTYyOTJhNzA1N2Y2ZmFiOTQ3NThhN2E3IGxlZ2FjeS10cnVuaworNzE0MjAgYmM5NGI4MzIzYjM5YjI5YmQzNzUzNjVlYjI1Yjc4OWI4NjRkYTRjYiBweTNrCis3MTQyMSBmNzBiM2I1ZjUzODBjZTU0NTg0OWRlNWFmYjA0N2UxMjI0YzRiZDM2IHB5M2sKKzcxNDIyIDc5ZTU3Yzg2NmI1ZjRlMmZjMWRlODBjNDVhN2ZhYTBjZmM5OGYyZDcgcmVsZWFzZTI2LW1haW50Cis3MTQyMyBiNGIyNTExZTAzYzc1MzBhOWEzNGQ1MDU1NjY1MGRmZTcyM2ZlNDFlIHJlbGVhc2UzMC1tYWludAorNzE0MjQgZDM2MTBlMzM5MmNmNDlhMzViMjQxN2U3Zjc4YmYwZjUwZmMyZWFiNiBsZWdhY3ktdHJ1bmsKKzcxNDI1IDA5NTAzY2U2NmZmMTIzYWNmMDJlNzMyOTM0NzcwZjdiZjVkYjRmOTQgbGVnYWN5LXRydW5rCis3MTQyOCA4YTQ1NjNkM2I1ZTg4OTViOThjYjFkNzg0ZGNlYjJmNWVlYTQ1MDVlIGxlZ2FjeS10cnVuaworNzE0MjkgYTIxYzg0OGFkNjFlYzQ0ODY5NDg3NjVmZTg3NzZlMDllYTZhZWZjNiBsZWdhY3ktdHJ1bmsKKzcxNDMwIDQwZWI5OWU4OTM1YzY0ZGU0ZjdkNTkwNzlmNTdjODQwNTEwYTY2YWQgbGVnYWN5LXRydW5rCis3MTQzMSBhNmZmMTdhNDJhZDMxYzdhOTdmNTdmMDA0ZjNjMjViODI5Y2MyMjA4IHB5M2sKKzcxNDMyIDEwNjM0ODFhMzZmOGEyYTJhMmE0NWQxNGE5NDE1MTIyYjhmNTBmMjUgcmVsZWFzZTI2LW1haW50Cis3MTQzMyBhNGJjODBmNWQ2YTBmNmJjYzUxOWJmMmJlMGRmMDgxMWM1YWNlYTI4IHJlbGVhc2UzMC1tYWludAorNzE0MzQgY2JhYTFiYzM1MGJhMjA1OThiZWQzYzlhZGMzOTFiYTJlMGMyMmQyYSBweTNrCis3MTQzNSA1ZjM1YzUzYTNhZDdiOGUxMGVmMWQzYTgxZTdjMzg5YTQ3YjM4Y2YyIGxlZ2FjeS10cnVuaworNzE0MzYgZjk2ODlkMTUwYmI5ZmQ4MmMzMzIxNmI2M2I4NDY2NWMyOTgyZDBmNyBweTNrCis3MTQzNyAwYjllNjg5NzFhMWUyZjkyMGEwOTU3ODhiODRkYzU4MmE2MmFkZDhlIHB5M2sKKzcxNDM4IDllYTk1NzRkYWE1YmY2OTRjYTU3NzE0NjU3YWJmYzQ2OWQxMTQ1ODIgcmVsZWFzZTMwLW1haW50Cis3MTQzOSA0YTdkYjQxMmZkZDJhZjhlMmYwMTlhZjUwYTZjM2NiMTlmZmU5MDE5IHJlbGVhc2UyNi1tYWludAorNzE0NDAgYWE5YjBhNmQ3YWRkZDZhMTEwNTc5ZTU0ZmFkZjk5Yjc1YzA2Yjc3MyByZWxlYXNlMjYtbWFpbnQKKzcxNDQxIDA4OWM3MjEwN2Q3YjFjNjEyNTJhODMwMTJjMzA5NGIwZjBhODExZGUgbGVnYWN5LXRydW5rCis3MTQ0MiA5MTY5NDNjZjUyNDM2Zjc3NDNjZTM5MDA0OGJjYjBhMjRkYzE1ZTNjIHB5M2sKKzcxNDQzIGRiYjliNzE3NmVlZjBjNmUwNjU1NWFhZmVhZmJhMzBmYmRlYTE3NGQgbGVnYWN5LXRydW5rCis3MTQ0NCA5ZDkyZWViYjdjMzA1MDNkYzAwNmI3OTg0ZWJhMjNiMDg2NzZlNGQ4IHB5M2sKKzcxNDQ1IGI2MTRhNTFmNDQyMzZhNmY4YWRmZjA5NzA2ZmQ1MTAxZjMxNmUyM2EgcHkzaworNzE0NDYgNmJmNDI2ZTU1MWQ1NzJlMGMyY2U1MWZhOWNmMmFiOTk0MTlmZjA4NCBweTNrCis3MTQ0NyAwMzI3NTA0YTRmNmExYWU0NzQxMDMxOGM0ODYxOWJhNGM3ODQ1MDdkIHJlbGVhc2UyNi1tYWludAorNzE0NDggNGNkZGVmMTQ0NDI4MjQ0Y2YwZjhlMGUyY2U0Y2Y0NmZjNjg3MDliNCBsZWdhY3ktdHJ1bmsKKzcxNDQ5IDMyMzY2YjNlMGNhOTkwNzI1MjY3OWRhNzY5NzUxOTRjM2Y4ZjJiYjggcmVsZWFzZTI2LW1haW50Cis3MTQ1MCAwYzExYzM0MThkODlkNDg2ZDNlZDE5OGM4MGUyOTA2NzYwNjQzM2I0IHJlbGVhc2UyNi1tYWludAorNzE0NTEgOWE4OTk5OTc3MzYzOTk0ZTNhOTg2OGQzNGFiMTMyODYxZWRlYWE1MyBweTNrCis3MTQ1MiBiOTEyNTE1ZmU5Y2UyMmVhN2FiOTBjZjlkODdiNWY5MGQ2NzJlNzYwIHJlbGVhc2UzMC1tYWludAorNzE0NTMgMjc5N2U1ZTYwMDhmMGZlNGJhYzIzYWRlN2I2YzRmZTZlZTgxNDBkMiByZWxlYXNlMzAtbWFpbnQKKzcxNDU0IDE1ZDYwNzVjMDg1YjFlMDNiMjgzZjA3N2Q4NzU2ZDg1MzIzM2JiODAgcHkzaworNzE0NTUgYzk1MDI2YzJmMmJhMGMzZTFlMGQ2NTZkYjA3Y2EyMmQ2MDc1OTJiNCByZWxlYXNlMzAtbWFpbnQKKzcxNDU2IGYwZjYwODkyY2JhMWM5MzgwMmM3MTUwNWYxMDRiMGU0MjU1NDg4YzMgcmVsZWFzZTI2LW1haW50Cis3MTQ1NyAwNmI2NDE3OGEzMGQwZmNiMDg2NGNhZTRkZGRmNWZhNjIzNDk3ZjcyIHB5M2sKKzcxNDU4IDBiZTYzYzc1MDQxYWRmN2M0NjQ3NTQxOWY1ODMwMWJkMWY2MjYwM2YgcmVsZWFzZTMwLW1haW50Cis3MTQ1OSAxYThiZGUxOGQzNTM1Mzk5M2RmN2EyYTVjYjVjZWZkMzRkOGRlYzc1IHJlbGVhc2UyNi1tYWludAorNzE0NjAgNzhhOTczOWRhZmE0MTNmYzIzY2I4ZTNkZjU0MmI2NGVlMzlhZGM3ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDYxIGY3MjQ5NzRiOGQ4OWIzMzVhOTRiNDZjODdmY2U4MjNkYjAzMjNmZDcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2MiA3ZTIyOWNhMGI5MmE1ZTg2MmI0NjcwNzI2NWJiMWFhMjFhZTU3N2NjIGxlZ2FjeS10cnVuaworNzE0NjMgZDkzOTIwYTI1ZGE0YzhjNmMyZTU3NWNjOTgxZjlmMzUwMzZiMWFiNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDY0IDhmMTNhNDE0ZDg0MzI5NThlNWQ3MTZiMzEyOTI0YjdhYmI3NWI4ODkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2NSBmYjQxZmU2N2UwNjFhMjljNDQ4MDllZWU3ZTY4N2NjZTZkZjg5ZGZlIGxlZ2FjeS10cnVuaworNzE0NjYgMWM1MmIxNDU0ZjFlMjAyZmFhMWNmZGNhODFlYzJmZTdlM2ZmNTNjNiByZWxlYXNlMjYtbWFpbnQKKzcxNDY3IDQ0MTEyMjRjYjgwNjg4YjQxYmVmN2YwNTI1YzhiNjNmM2Y2NWQ2NWIgbGVnYWN5LXRydW5rCis3MTQ2OCAyYTAzY2QwNGQ4ZjQwODYxYjIwYzZjYzcyZmFiNzI4OWNkNDI5MTYwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjkgZjY1MmZlMTY0OWVkOGYzODViYjQ2Njc3NTIwYzZjYjgzMjk1NmVmMiBweTNrCis3MTQ3MCBmMzlkMzM3NTI1ODIxNTVjNmNhNzFhZTIzYjFlMTQ0MjlkY2NmM2ZkIHJlbGVhc2UyNi1tYWludAorNzE0NzEgOGIyY2RmZDVhYWI2ZmMzM2UwYTBhNDY4MjIxNWVkMzFkMzY1MjM0NyBweTNrCis3MTQ3MiBlZjM1OTJlOWUwMWU1ZDU5ZmVlNjBlMmMzZDk4NTk5NjNhZTJjZTk5IHJlbGVhc2UzMC1tYWludAorNzE0NzMgZWMyMzljZmEzZTYxNzg1ODA0ZWU0NjQ1ODU5M2JmMWZlMGY4NDU0MSBsZWdhY3ktdHJ1bmsKKzcxNDc0IGJmMmVlZDg2NWE4YTRjMzU5MjBiNjY3NjAyODQ1OWUwOTI4MjNjMTEgcmVsZWFzZTI2LW1haW50Cis3MTQ3NSA0YTM1YzhhNWJlNDZmZTljY2E1NjJmMjAxNzRmZGZiOTYxMGNkNWJiIHB5M2sKKzcxNDc2IDAwMDNiNWI0ZjBjMDM0OWM0NTU1MDVmZWI5MGZkOTgyMjViMTM2YWYgcmVsZWFzZTMwLW1haW50Cis3MTQ3NyA2MzI4OWI4MmM4NDkwMzAxMGE4MzA5NTE3ZmQ3ODdlYWQ2N2EwNGVlIHJlbGVhc2UzMC1tYWludAorNzE0NzggOTAzNTY5YjEzMmMyNDc4ODA1YWYwNDExNjM1YmNjYmIyNWRlZTlkOCBsZWdhY3ktdHJ1bmsKKzcxNDc5IDJlMzhjNjE3ZmQzZWNjZWJjMWViMzQ3MjVjN2ZiYWM5Mjg4YTdkZTcgcmVsZWFzZTI2LW1haW50Cis3MTQ4MCAzNDU1ZmQ3ODQ2N2U2NTgzN2I3M2E4ZDhhNTAwNjFiZGIwMTcxOGRjIHB5M2sKKzcxNDgxIDM3MzI3ZDE5MTJhODE0Njg2MzE4MGI0ODQ0OTk3OTA0NzNmMDYzMzcgcmVsZWFzZTMwLW1haW50Cis3MTQ4MiA1MjgyYzY2ZDg5NzI1YmQ0NzY1YjM1ZmJhZmYyZDFiMDkzNGFiZDIyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0ODMgMmY5YzdiOTBhNzk1ODBhOGU0YjE0ZTdjMWE5ZmQ2MDk0YWFhZWM1NiBweTNrCis3MTQ4NCBmMzc2YTNjYTE3ZDM3ZjlhMzJhNWE2OGNiMmZmZWY0N2ZkMDhmYjk1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0ODUgMmQzNzIwOTg4NWUyN2ViOWQ0OTdlZDNlOWMzNGVjY2RlZTNhNzk3ZiBsZWdhY3ktdHJ1bmsKKzcxNDg2IDg4NjEyOTg1ODZjMTBmMWM1YmU1OTQ2MDliYmU3YTkxMDk5NzdmOTggbGVnYWN5LXRydW5rCis3MTQ4NyBkMGI3NDQzMDNiODRlMzI1NGJiMDU5ZTQ4OWIwNzIzMzc0NTlmZTM0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0ODggYzk0OWRkYzQ5NGViODY2YWVkNjgyNmM3NDg1ZGRlZjgxZDMwOGJlOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg5IDI5NzA1MGFiN2FjYTQ3Njk2OTVhMmYzZWYyY2Q0NmU3YjM1ZTY1NzQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ5MCBmMzQyODFkYjQ3ZTYxYWJiYTlkYTMzOWM2ZGIxNTJlNzA2ZDdkMzM4IGxlZ2FjeS10cnVuaworNzE0OTEgMzYyOTk4Mjg2NjM1ZDA0ZmE3ZjNmZjVhOTEwOTdhZTViNmJkNDNiYiBweTNrCis3MTQ5MiA0YWYzMTE0MGRlMjlkYWFmYTRlOTExYTlkNDgwY2UzYmZhZGZjYjA5IGxlZ2FjeS10cnVuaworNzE0OTMgMTk4OTM0OTM3OWI1YWM1ZDdjMzU5ZjY5MDdkODVkMGJjMTZhOGZhYiBweTNrCis3MTQ5NCBkNWRkZDM0MjFjOWFlNjhjNGIyMzE0OTNjZjE3ZjM0MjIyZTJkMDMxIGxlZ2FjeS10cnVuaworNzE0OTUgN2U5NzhjYTQyOTMwYTkwNmIwY2NiZjNjMjM3ZDc4ZDZlNjM4MTRlZSBweTNrCis3MTQ5NiAzYjFiNjE0MjY5MGFhM2IzM2Q1YjBlMjJmNTQ1NjliM2M3ZjE0ZTQxIHB5M2sKKzcxNDk3IDAzN2Y1ZjdlN2FiMWU2ZGEwNmYzM2JlMmY4MjA5YWZjMzI2NWUyN2YgcHkzaworNzE0OTggZmU1ZDA3YmViNWQzN2Y4NzdkNzRiYjFlNDdkMjA3MzM5OTMzYzVmYiBsZWdhY3ktdHJ1bmsKKzcxNDk5IGJiODE2NGRiMWJkYTY3ZjZjNGM0YmMzN2MyMWUzZjg4YTg5ZWEyZTYgcmVsZWFzZTI2LW1haW50Cis3MTUwMCA0ODQ4NTYwNGVkNDg3YjFkZDQzYWQwMzA4MjU3NmNlNWEzNTJhOTdlIHB5M2sKKzcxNTAxIGNhZGY5NTViYzE4YmQxNWUyODU5N2NhZjc5YzYwNjQyZGNjN2M2OTIgcHkzaworNzE1MDIgZjIyMWZjZTNkNmJhMzhjZmQ4Yzg4ZjA0MjY4ZThhNDZiYWUxZDdjYiBweTNrCis3MTUwMyAwMjFkOGM4MmYyODQ0N2ZlNDc4ZDQyMTA4NTFmMzAzYjk4NmZlMWIyIGxlZ2FjeS10cnVuaworNzE1MDQgOTNkNGY5ODI2MTVmMjY0ZTBkZjk2MzE0ZTU1NGIxNTExZjYwZjMxYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTA1IGQyM2U4NGU0MThjZThkNzNhMTFhMTgzZWRiZjlkMTBjY2ZjZmIzMjEgcHkzaworNzE1MDYgNGUwOGIxOGUzOGZiZTE0ZmQzNGIxZGY4ZTU4MDFjZjRkYjU3OTI3NyBweTNrCis3MTUwNyBhZDNmM2QzMDQ5NjNjZGZiMjI4ZDFkZmM3MjFhNWEwZmQ0MDY2YmM2IGxlZ2FjeS10cnVuaworNzE1MDggMjFlZjQ3NThjYWNkNDMwZmFlOGEyMGU1NDVlOTYyZjFjZmJmZWM2ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTA5IGE4MjQ0MzEyNTJlMGYyNjFkNTIzOTFhNDgwMjFiMDA3NWEzMzUxMGIgbGVnYWN5LXRydW5rCis3MTUxMCAyOTNkYzVmMDhlOTkwZTNkMzY1YjllMjUxNjhlYTNmN2Q4OGEwNDk1IHJlbGVhc2UyNi1tYWludAorNzE1MTEgZTA3MjNjY2VlNzRkZjExZGI3OTY3YzhlYTViZDJlNjUxYTg5MjFhOCBweTNrCis3MTUxMiBhNDhmY2ViMGYwYjNmZmQwYmZiOWVkYThkNWYzNzdmNTdjMjEwMWE4IHJlbGVhc2UzMC1tYWludAorNzE1MTMgNzU0YTNmNzNmZjA3ZmE1NmRlZjMwZTk1ZWViZGQ5N2I5Y2ZiZDJhOSBsZWdhY3ktdHJ1bmsKKzcxNTE0IDNiMjU5MTFjNmE0ZWE2YThlMDZhZTZhZjM2ZTkwN2RjYTAwMjJjZWYgcmVsZWFzZTI2LW1haW50Cis3MTUxNSAxNjg0ODJlYWZiNTYxZGI4Nzk3NDVlZTliNGU5OTc1NWMyZWJjZjYwIHB5M2sKKzcxNTE2IGUyYjliMmJjNzBiMGVjZmYwYjI2OWRiMjkwZWIzYTRjZDgwNTk5MzkgcmVsZWFzZTMwLW1haW50Cis3MTUxNyA3MTNlZjY4ZTdmZmQwMGE1MjZlZTcwZmIwNDBkZTYyNmU2ODE4YWVlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MTggNGNhMTQ3MWJkMWNkMzY4NjA5OTUzMmQ1MTFjN2YyNWIxNmU1ZDQ2MyBweTNrCis3MTUxOSBmNGQ1NTNlYzlkZGM5N2U3MjMzOTgyN2JkMTg3MjZmN2M0ZDhlODgwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MjAgZDdjNTdlMTZiNzNjNWYzZGZmZjYzZWE4ODc0OWMxZDhkYTE3MmJhMiBweTNrCis3MTUyMSA0NDA3ZTRkMDcwODQyMWRlODNhNmYwYjQ2YTUwYzg3YzI3MWI1NmNlIHB5M2sKKzcxNTIyIDFjYjNiY2NlODMxNjdjZGQyZWEwYmQxMWI2ODUxNzBjMmU3MWViMGMgcmVsZWFzZTMwLW1haW50Cis3MTUyMyAyNjA2OWQzYjY4OTE5YWRkOTUxMTk0M2RjNjNhN2M0Y2JjZTdiMjZlIGxlZ2FjeS10cnVuaworNzE1MjQgNDYxNjdhZDNhYjkzZmE4NDcwNTA1YWRmMTFjMzJiMzJiNmJhMTI4MiByZWxlYXNlMjYtbWFpbnQKKzcxNTI1IGM5MTZmODU0ZmFlYjJiODVlM2JmZjhkYjkxMWZjM2UzZmJhOThjN2QgcHkzaworNzE1MjYgODg2N2E1YjYwYTkxMzM0NmE5YWI5MGFhMTQ0ZTI5NTg1NTkyYzBjMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTI3IDY1MDZjYzMzZWJhZGMxOTRiYTg3ZjljZGU0ZmZjNGVlM2ExMWVhMTQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUyOCA1MzZmMTgwZjY2YTc3NjFjNTVmZTg1NzI5NTRiOTA5NzE4ZDRhMTBhIGxlZ2FjeS10cnVuaworNzE1MjkgMTQwOTI4YzZjZjUxZjAxM2Y4MGE4NmI2OTZmZjcwYWJiODQyMGM2ZCByZWxlYXNlMjYtbWFpbnQKKzcxNTMwIDhjODJiN2M1MWJkZGUzMGE1YWY0YzRkMDA1ZTFkYjkyZmNhMDA5MWIgcHkzaworNzE1MzEgNDI3MjllZGRiYjZjMGIwMzJlOWZiZGViMTYyYWFjNmY3M2I2NThhZSByZWxlYXNlMzAtbWFpbnQKKzcxNTMyIGQwYTczY2Y0NjE4MGQ0MTJhNzU0NTc2YzBiYjFmY2QxYzAzODlkYjEgcmVsZWFzZTMwLW1haW50Cis3MTUzMyAwOTg4ODVjNmIxMDFkMDg1NzhhZmVlYWYyNDMwOGFiYzJjODM3YjVlIGxlZ2FjeS10cnVuaworNzE1MzQgYmJiNjNjNzFhOTgzMTkxNDM0MTYwNTU2ZWU3MmZmODFmMzk1M2Q4MCByZWxlYXNlMjYtbWFpbnQKKzcxNTM1IDkzYTJkODBjZDM0ZDAzODAxNGQyYTdiZmUzMGZhZDM4NDg4YWMzMGQgcHkzaworNzE1MzYgNjZkYTUxNGUzZmEzOTUyOTAwYTlmYjg5NmQ2NGFkNmZhYTY0NDE4NSByZWxlYXNlMzAtbWFpbnQKKzcxNTM3IGEyNDkyYjRlNTA1ZGYzZmMzMzdhZDI1ZmY2OGM5Mjg3ODMyNzZjNWMgbGVnYWN5LXRydW5rCis3MTUzOCA4MzIyOGJiZTU5MDY3ODgxNGU0ZTQ0ZmYyNDEzNTRmOTYwMjg3ODdmIHJlbGVhc2UyNi1tYWludAorNzE1MzkgN2UzMTllZWZhYjhjOGVmODRlNTRkMjRlOTA3ODZiY2ExZTBhMTFmOSBsZWdhY3ktdHJ1bmsKKzcxNTQwIDQ4MGY3ZWMzYjg2OTYwOGZmZGI4ODIyY2RjY2VlNWEyYjVjYTM5NWQgbGVnYWN5LXRydW5rCis3MTU0MSAyZWVjNTdhYmM1MjM4ZjM5N2IyZTdmNzNmYWUzOGUzOGQzOWQxN2E4IHB5M2sKKzcxNTQyIGU5ZTJhZTNiZmJjMTQwNDMzMGMxYzQ1MzI5ODY2YmZmMTU5MzQ3ZjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0MyA4YmM0YmM4N2M4ODU5ZTU4OTE3ZDM3OThiMDQ2OTU1ODY3OGFkZjBjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDQgYWU3NDE0MjA4OWQyYmJmZjI2OTNlNGIwYmU1ZGQwYjIxNTM2NTc4NSBsZWdhY3ktdHJ1bmsKKzcxNTQ1IGRhMGY3ZmM3ODdkODI2ZDhjZGY3ZmMyM2Y3NjJkNDdhZWQ1NjdlNGIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0NiBiYzVjNWQ3YTJhMTQ3OWEwNTc2ZDM3OTg4OTkyNmNmYWY0Y2FjMTAxIGxlZ2FjeS10cnVuaworNzE1NDcgN2Q0NDk5NzExYTdkNWFkYjJjMzk2N2UwNTNmYjJjMjkyM2ZjYmJiMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTQ4IDYyMmFiZjZhYzk3ZmFiMzkwZDMyYTMxODk5MWEyYjE5ZWI0NTM4M2QgbGVnYWN5LXRydW5rCis3MTU0OSAxMmE4ZDE5NDcxNjc5MTRhZDAzOWI0ZTFmNDA4ZTEwYTI1ZGM2MTViIHJlbGVhc2UyNi1tYWludAorNzE1NTAgNTQ3Mjc4OTY1MWUxNjExMDIyOGVlNjFkY2NkOWNkMGU5NDBkMWE1YSBweTNrCis3MTU1MSBjNzQwZmVmYWUxYmFiMGU5MWQxZjBiYmU1NzIzMjQ0YzY3Y2NkZDdhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NTIgNDYwN2Y1NGU3NjkzNmI4N2RhYzc4OGI0YzdiZWY4YjE5MDkzMmI2ZCByZWxlYXNlMzAtbWFpbnQKKzcxNTUzIGFiNzVkYTI2NmU1N2M1NWU3NzcwMjRmYmI4NGE2YTMwMDhkYzQ4MzUgbGVnYWN5LXRydW5rCis3MTU1NCAzNzcwNjUyZWIwZTUwOThiZjFjNDI2MDQxMTkxMGM0YzkzZWI1MzIxIGxlZ2FjeS10cnVuaworNzE1NTUgOWUzYzk3NmRhNWY0MDUyN2QzOWU3MTRkMjFjZWNiN2VjZTJjMmRhMSBsZWdhY3ktdHJ1bmsKKzcxNTU2IDVlZjE4ZjBmNDMxMDkxZDA1YzJiNGIyNjFlMDlhMTgwNTlkODVmZTAgcHkzaworNzE1NTcgNmY4ZmM2YjE2N2VhOGIwMTA4MTQ4NTk0MzM4YjY3NjQ5YjA5NGFmMiByZWxlYXNlMzAtbWFpbnQKKzcxNTU4IGU0OWNkNGY0N2Y3NjIwYjAyN2U5NmJjMjgwMmE2NjhiMDY3NTdmYjIgcmVsZWFzZTI2LW1haW50Cis3MTU1OSA5NTEzMmNjMjJlZTVhYjdiOGRhZWM2MTYyZWIzMmQ4MjYzMmQzMDg3IHB5M2sKKzcxNTYwIGZiYzM3ZmJkOTQxNWZmNWQ0NGU3MmM1ZjExZjU4YzE0ZDhlZDU0MTMgbGVnYWN5LXRydW5rCis3MTU2MiAwZTQ2OWRhNjdkNjNhNWY0OGI1ZmUxZjRjMGM5NmE2NTRjMWZlNmFlIHJlbGVhc2UyNi1tYWludAorNzE1NjMgOTkwZjI1NzllYWZlYzk1MDVlYjAzM2FiMzFiOWY4YjM0MzEyY2UzOCBsZWdhY3ktdHJ1bmsKKzcxNTY0IDFkYzUzZTBhMTQ3YTcwNDM2YmQ5NjM2ZjYxYWNlOGU4NjRjNjI4ZmQgbGVnYWN5LXRydW5rCis3MTU2NSA1MzA5OGYyNzBiYmRhMDNmNzJlYmEwOGU2NTY3ZWUzZjUxNzc5ZjZmIHB5M2sKKzcxNTY2IDkzZDJiZWZjYTBhNTRmZWU3NmE5OTA3NzM1MTY5MGFlN2QxODU3Y2UgcmVsZWFzZTI2LW1haW50Cis3MTU2NyBhYWM3MGEzYmEyNTBmM2E0NmEyYzkxMmQ5MDhjZmY5Y2M0ZTNlYzY0IHJlbGVhc2UzMC1tYWludAorNzE1NjggNzRhNGEyN2VhMjkxY2IxZmU2OWNlYWVhMDA2M2I2YjczMDRhZWZmNyBweTNrCis3MTU2OSA4YTE3MzA1N2Q5MDMxYzUyZjhlMTZkODI1NWY3OGI2MjUyY2Y3YThiIGxlZ2FjeS10cnVuaworNzE1NzAgM2JhNjVlZTQxZmU3ZWE4ZGZkZDM5Mzg1M2NkOTM5MjQ5ODFjMjcyMCByZWxlYXNlMjYtbWFpbnQKKzcxNTcxIDhlZWU5NGM3NGU5Yzk4N2M5MmUyNzhjMGYyYjBlZWRhZjZlMGE0ZTkgcHkzaworNzE1NzIgNTZhYzNkNTA5NTJjODc3ZDAxYTA1ZjM3NDQxY2FmY2Y5NTIwOWI4MCBsZWdhY3ktdHJ1bmsKKzcxNTczIDc3NGY3YmNhZDIyYzY5ZjY3ZDMxZTUzMDUxOTUzMzExMTliMWEyOWUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3NSA5ZmQ2NmEyMWFiZDE5NjdkM2YwODQxNGQxOTlhNjg1YzlhYTA0MDRkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzYgMjhlYTU0YTZiYjY0NjI1OWVhNjNkZmFjZTM1ZjkxMjFlY2RlZjg1OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc3IGM2NmQ0ZTMwNmZiNjg1MjEyNDI5NzE1MmEyY2RhN2UzM2ZiYjA0ZjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3OCBhNGNjNDZjYWI2YTc0MzEyYmFjYTcyMDhkN2Y0OGRjYjY1NDk4NTI2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzkgYzhmYjM5OGVjYTIzNzMzNjQ3ZGRmY2U0MGU2YWY0ODg0YWMyYmM4YiBsZWdhY3ktdHJ1bmsKKzcxNTgwIDU3YjhkYzRhODg4OGZmOTEzMzZhMzM3NmFlOWFkY2M5M2ExOTVjOGQgcHkzaworNzE1ODEgY2NmMGU2NDA5NTM2ZDhjMmM4NmI2ZDA1MTA4MzMxYzUwNjkyYTk3YyBweTNrCis3MTU4MiA1OGI3NDk2N2E1NDI1Y2I3MWQxMWU0NjYyMThkMWI0MTBkOWJjODY4IHJlbGVhc2UzMC1tYWludAorNzE1ODMgYzk3ZTQ1ZTkwNTk5ZTY1YTg1ZTA4ZmIzNDg0OTlkODQ0ODM2MjM4MCByZWxlYXNlMzAtbWFpbnQKKzcxNTg0IDE3N2UxMDczMDUyYzg1OWJlZTE3ZWQyNWQ0NDU2MzA3MDcxMTk4MzkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU4NSA0NzAzOTY1ZGEyY2VhOWZmODQzYzIwZjE3NTFlMzNkYzdmYmM0YWRlIGxlZ2FjeS10cnVuaworNzE1ODYgZTA5YTY3MWE1OTBiN2JhNWUyNzY0NjQwNzlmMmJmYmEzZjQxOWM0NiByZWxlYXNlMjYtbWFpbnQKKzcxNTg3IGUwM2JhNWY2ZjQ5NDA2MDNlMDc1OWFmMzZmZTEyZDE5OGE0ZjMzNTIgcHkzaworNzE1ODggODViYzI1MzdlODNlM2Q5NjI0NWY5NmRiZTZiZDcxYTdkNzdkM2U0MyByZWxlYXNlMzAtbWFpbnQKKzcxNTg5IDdiYWE2OGQ2NmM4ZmM3OTk4NDMzNTBmZDAwODRiNTMzZWVkMzY0MDAgbGVnYWN5LXRydW5rCis3MTU5MCA3MWY0OGFkYWQ4OTIzZTdkOWU3OTFkNmIzNmRmMWMzNWQ2YjM3ZTNlIHB5M2sKKzcxNTkxIDYwNTEzODA4NTc3ZjMyMzk0ZjI5N2U4Y2MyZWEzYzdjYzZkMzU5MGEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU5NSAwOTY3NjdiMTg0NTAxODY1OGY0YTNmZGQzZWYzNDYyNjU3NzUyMzkxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTYgZTdkYmZkMDIzZmY1MjFlZWY5M2NkMzNlNjEzNGRiNjlmMDYzNjE0NiByZWxlYXNlMzAtbWFpbnQKKzcxNTk3IDc5NDUyNWVkNjRmZDQyM2JjNWNhMTMxZTcwYmExNGNhOTEwYWJhODUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU5OCBkYWQzZDJiOWE4NzUzZjQ1ZjE5NmI3MDA2NDRjZjllZmMyNmJjZDhlIHB5M2sKKzcxNTk5IGMxN2M1YmE5YmI2Y2M3YmY3NmEyNTMzNDBjZGFlZGZkYTRkYjAzM2EgcHkzaworNzE2MDAgNGZlYmEwOWE4MjZiYTk5ZTViNDgyNzA3YjNkOTY0M2ViYTM0MTU2ZiByZWxlYXNlMjYtbWFpbnQKKzcxNjAxIDY5OGZhMDI0ZTdkMjM5ZjNhZGI3YTAzZjc3ZTM1Nzg3ZTZmMDQ5OTMgcmVsZWFzZTI2LW1haW50Cis3MTYwMiA2ZDk1ZDk3OTNmY2Y1MDAwMjA3Mzk0NWU0YWViMGQzZWYxNTBmYTVlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDMgMmZkMDg4MzBhOTNmMTMyODE5MDUwNWRkOGMxOTY3MzUzMmQ1MGI3YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjA0IDU0MjgzYjRhMTY1N2ZjZmI2ZmQ0N2FkNDNlZDczZDA1ZmQzZDdkYjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYwNSBhZDNhY2NkZTBlZTdhN2JjNWUwODkyNzdkZGU5NzE4ZDgxMWU2ODU0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDYgMGI3ZTQxNDE4MzQzMzI2NmJlN2U2OWJkMzY0NzI5ZjQ1MzJhZjhhZiBweTNrCis3MTYwNyBmZDdmMzZlYWQwYzgxNzBiZmVhNjNkOWY1NzAxZWZiYzFmZjJlZDEwIGxlZ2FjeS10cnVuaworNzE2MDggOWRmNWRkYzE5OGE4MDBiZWEyNGEyMDZhOTZmNzQxZWEwNGQyMDA2ZSBweTNrCis3MTYxMSAxNjcwNGIxNWRmM2ViZTdkNTNkNWRhMDYyZWQxYjQzZWUwMDIxYTAxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTIgYzI0M2IxMGFiNzMwNTUyNWU1MGY4NTMxYTJjOWE4ZDFmYjFhZmE5MiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjEzIDI5NzI5YjkwOGE4MjBkY2FjMzBmOGMwZjA2NDQyOTk1ZmM1NTMwY2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxNCBiOGY0MWRiOGY2YWRhMDhhNTdlMWYzNzcyMmRmODgyYWNkMDEzZTk4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTUgYWJlZmNhMmZkOTJlMjFkM2MzNzY1YTZkN2EyYWE4Yjk2OTliMTVlYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE2IGE3NGUxMDE5MTg1NGQyMWEwNjE1OGYzNDY2NDE0ZjM2MWMyZGYyMGIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxOCA0MDg3NjFjYTNkOTY2M2I2ZWFkNThkNzdiOTRmOTdjZDAwZGViOTk5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTkgNjE5ZGNhYzhkMzg5MDk2NWI0NDc3MmRjZjc3YTdjNTIzY2I0ZDE4ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIwIDJjYTIwOWYzYWFhMjk0MTUxYmIzN2NlN2ZmYzg1MDc4MGY1Yzk5OTQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMSAxMmJkYjM5NzJlMmE3YWE1Y2ZjMmNhZDM2MjdjMjY4YmI3NDcyNjUyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjIgZDg4MWIwNmRjYTM4OGFmYmVlZDkxODE3ZjlhMTU1NTM4OGFmOGNiNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIzIDY3MzQwZmQ2YWM4YTNiYTg4ODQxZWYzOWVlZDA5MzUxNDA3NTM2NjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyNCAyZDYxMTZlZWYyYjM2N2IzZjkyYjg3ODg5MTg5ZDc4YjZlYThiNzVmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjUgY2U2N2U3ODNhNmVkMjNkODYzNjJmNThkNDY3OTQ2MzMzNWU0NGQ5MyByZWxlYXNlMjYtbWFpbnQKKzcxNjI2IDA3ZDIzOWVlYWE2MmVmOTFiNTk0YmE1NGNhOWFmNGY3OTBjODVjZTMgcHkzaworNzE2MjcgNWIxMDhlYmJmYzA4M2U3ZmQzMWY3MzE2MzU5NDI3ODE5ZDhkOGJkOSBsZWdhY3ktdHJ1bmsKKzcxNjI4IDQ0MTllMDYyMTljYWI4OTJjZDU2OTEwMzQzYzBmMmU2OTI0MGMzNTQgcHkzaworNzE2MjkgZGYyNjM4YjliZWUyZWRjMGY2MzZmNGUzMWUwNTM2OTAwMTkyNDM0YSByZWxlYXNlMzAtbWFpbnQKKzcxNjMwIDZiY2RjMTMxZjUzY2JlMzEwODc2MTA4Zjk5ODZjNTY1NGQ5MThlMGEgcmVsZWFzZTI2LW1haW50Cis3MTYzMSA0NjI4MjE3YjAxM2M0MDRmZmYwZjZmYjI0ZGViYmMwMWQ5NmVlYzQyIGxlZ2FjeS10cnVuaworNzE2MzIgN2E2OWZmYzRmNGFlMzY2YzVlMjUzMDY2OWFkZWY2MmYzNTdhODIyZCByZWxlYXNlMjYtbWFpbnQKKzcxNjMzIDIwY2Y3ZjhhNTQwNTJmYTAyYTJjN2VhOWJjZGJlMTA0MWEyMjcxM2QgcHkzaworNzE2MzQgZjMyNWVkZmUwYzNhY2JjMGJiOWZkMzQwYWE1MDBjMGJkMWIwN2ZmYiByZWxlYXNlMzAtbWFpbnQKKzcxNjM1IGM1NGI3ODRhNTZkNTVhZGRiOTRlYzJkZmY1MDJkNTcxOTRhMjExZTQgcmVsZWFzZTI2LW1haW50Cis3MTYzNiA1ZmY5MDMzMmY5MTBlM2I3ZDZiMjgwNjk2MTA4MjBlN2IxNzE0YzdlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MzcgZWViZTVmN2RhZjFlNzhiMDQ5ZjM2YWNhYzcwZTUyMzA0MzI2Y2ViMSByZWxlYXNlMjYtbWFpbnQKKzcxNjM4IDQzZWY3NGJmYzU2OTYxOWE5MmU4MWMwMGU5MWEzZGJhYjQ1N2YxMmQgcHkzaworNzE2MzkgYWM5M2MzZDhlMTkyMDViODdkOGM3N2E2ODZlMjI0Njc5MGRhYWZkYyByZWxlYXNlMjYtbWFpbnQKKzcxNjQwIDQ4YjVmYWQ5Y2UxYjI4NGJhNzVmMmUxZDY1YjgwZGM3MzA2NGZlMjMgbGVnYWN5LXRydW5rCis3MTY0MSA3N2Y5MDlhYzNlMTAyMjk2OGQ2MDUxYWRmYTc0YTNkOGFkMzkwMmY0IGxlZ2FjeS10cnVuaworNzE2NDIgZDNmMDIwNDAwZmYyN2VmYTMzYWVjNjgyYTk5NzZmN2RkMDU3YWIyNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQzIGM1MjRiZmVlNzAzYWU1MmM4YTc0MzIwNWUyYjY3NGZkZTYyN2RjMjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NCAzYTExYTJhZDhmN2I4MDhlNjBjODY4YTNjNmQ2YmIyZTJiZTVmNDRjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDUgYTY3OTBhM2I4MGMzYTI0MGIzY2E5Y2FlMzJkYmJhNTA2ZWRkMWU0ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ2IGNlNGY3ZjQ4OWJkMzYxYWM4OTY2NGU5ZjU5OTcxYThiNjdjNGFkZTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NyA0NTAwYWRjMzFiZTNiOGFlYzA1ZDNhMTA1MGMxYzE5MTc2ZTE0ZWI2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDggZWRlYmM4OTNiMDJjZTBmYjI3MTQzYjEwMWRiNGMxZTRmZmQ3ZTc4MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ5IGRiNzMwNGJmYmY3ZGMzY2Y3MDYyZDY1ZDIyNjVmMjk5MTk5YjFlZDcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY1MCBhMjhhZjU1YzZlNThmMDJhOGRkMWRmZGZjNzMxNjJlYWZiNTNjYWNhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NTEgNWQ0NzI5YzQ3MDMzNThkNGZkYTc2ODFiNDQyMmZmMjE5OGI0ODJiZiBsZWdhY3ktdHJ1bmsKKzcxNjUyIDczYmI0OTQ1MThkZDZkMzkwNWM4MzU2OGJhMWI5YmYzZmE4NzcxOTQgcHkzaworNzE2NTMgMWY1Zjk5MjgwMWY5ZjY5YzJhZjkwNmE5YzJiOTJiYTNmNjZjMTc1NCBsZWdhY3ktdHJ1bmsKKzcxNjU0IDhmNjUzNTY3MjkxZjBiYmJhM2ZiMzdlMjRhNGRmZTBhY2M5Y2JlOTcgcmVsZWFzZTMwLW1haW50Cis3MTY1NSBmMGExNmUxZGVlYTEzZDg4YmJhZTE4YWZmNDgzN2NjMWNlN2NmMWY5IHJlbGVhc2UyNi1tYWludAorNzE2NTYgOTc1YmUxZWIzZWJmMzdkYjVjMWMwYWE0M2QxOTEwYTI4MjY2NGY4NiBweTNrCis3MTY1NyA3M2JmY2IzOTg4ODYyYWI4M2JmNTA3ZDE1Zjc1MmY4OTI5ZmE3ZDBlIGxlZ2FjeS10cnVuaworNzE2NTggY2YxOTBmZjJhNzJjNGM0NzYyZmY3ODM2MDZiMTc0Yjg1ZTliMDdkMSByZWxlYXNlMjYtbWFpbnQKKzcxNjU5IGE2M2I0NmFkZTJiN2I2MWM3ZDA2MTUxYzczN2Q0ZTg3Y2ExZjQ5MWEgcmVsZWFzZTMwLW1haW50Cis3MTY2MCA5MmY3YTQ2MGZmODI4ZGRhYmVlNzgwMzM5ZDQxNmFkOTNjN2E0NDY3IHJlbGVhc2UyNi1tYWludAorNzE2NjEgZjAyMjI4ZDFmOTA4MGMyYmVmOWZjZDVhN2JkZTc0ZTE0MmQ0NDNhZSByZWxlYXNlMjYtbWFpbnQKKzcxNjYyIDg5ZGViNmJjODJlNGJmODUwNGE5YmMxM2Y5ZTZkNzY1MTdiZmY3YzIgbGVnYWN5LXRydW5rCis3MTY2MyA5N2FlN2E3MDljMWQ0MTFhNTEyNzZmYzc4YTdmMTlmMmFlOTkyZTRmIHB5M2sKKzcxNjY0IDg2NmE4YmVlYzA2NTUwOWUxNjZiNGIwY2Q2MTRjNGQwMjMzMDY5YTYgcmVsZWFzZTMwLW1haW50Cis3MTY2NSBiNjUzZWFiMTNiNzMyODZlOTc1ZGFkOTJhOWJlNzY4YjFhNDNlYTc1IHB5M2sKKzcxNjY2IDA3YzZiMDg4OTY4YjIwNTlkYzJkYzhkNmU4M2NjOGI2M2VkY2Y3MWYgcmVsZWFzZTMwLW1haW50Cis3MTY2NyAwN2MxMTE0Njk1ZTk5ZjJmNWIxYjFlZTU5MjQ2NzYzZjE5Mjc0MjRjIHB5M2sKKzcxNjY4IGQ4NGFkOTczY2RlMjVmNjY1YzNmMjZiNmE2NmY3YzU1MmQyMmVkZjcgcHkzaworNzE2NjkgY2M1NTY1NDE1YWRhNDE3ZGNhMzc3MjQ3MmE0Yzk2MjA0OWYwZGQzZSBweTNrCis3MTY3MCA5NzNmNGQ3YWE4N2NmZmRhYTY4YTI4Y2NmNmMxMTA2Zjc1MjNkZjczIHB5M2sKKzcxNjcxIDBjZjc3OTlmYTE5MDJhN2MwMjAxNjViOTYxMjI2MTllNWFiODBhNWEgcHkzaworNzE2NzIgMDBlMDU3MTM2ZmM2NzdkNTQzZmVjMDY5OTE2MzRmMjI4YzlhYWIxZiBweTNrCis3MTY3MyAwZWY1Y2VkZGIxYzNkYmE0MWJkMzJiNTY0ZDgwY2VmMmViNjJjZmZmIHB5M2sKKzcxNjc0IGM2MGMxZDM5YTk1MTY1MWMwYmEwYzJhNTBlNDJlYTY3OGY1ZTVmMjggbGVnYWN5LXRydW5rCis3MTY3NSA5OGE1MGE0OWRjODY1MGJjOTU3ZGYyMjAyODc5MGNjMzIyN2NkN2I5IHJlbGVhc2UyNi1tYWludAorNzE2NzYgMjEyNDk1YjA0MTBjMzNlZmU0ZTEwMzYyYTcwYTM2OWQ5MTI5ZjZlYyByZWxlYXNlMjYtbWFpbnQKKzcxNjc3IDllYWIwNTczZDg0NTQ4MTdiNmUzMjI2MmFmM2U2YWMxMjdlZDU4MTkgcHkzaworNzE2NzggOGU1MWZhZTliYjc1NDI5ZDRkNDMyNTYyYjU5N2QyZTM5MmEwY2IwZCByZWxlYXNlMzAtbWFpbnQKKzcxNjc5IDgyYTJlZjU5NjNlMGYwOTVjZmNjM2I2OTgwMzgzMWQxODZhNjhhNDIgcmVsZWFzZTMwLW1haW50Cis3MTY4MCBkYjI5MmViYTdlYzFhYWIxNmY1NGM0NWYxMDBmNzQ1MmFjZjZhZjJhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2ODEgYzc0MjkyMGM0NWY3NzFjNGI3NmEyYzdlMzQ5YTkyNjA0OWY0ODNlZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjgyIDY4NzRkNzA1NDYwNDMyNTdiYmNmMTMyNjU4MTYzYTkyN2Q3ZWRhZTQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY4MyA5MDhjNjM5ODBlZWNlMDZjYjNiNjQzMTllNDk2MTgxNGVmMWRjZTBiIHJlbGVhc2UzMC1tYWludAorNzE2ODQgYWIwNmEzOGI1OTBjYzQ5NzhkN2QxMjM5NzFjNDE1NDYyODFkZDE5YSBweTNrCis3MTY4NSBhNzA5YmI1ZGZhZjUxMTY1NTAwZWVlZjZiMTViY2M3MTIyNTA4MDEyIHJlbGVhc2UzMC1tYWludAorNzE2ODcgOTg2MmQ1MjcyZDg1N2FhNzg0NDAxMmIyODhlMWRmZDI5YTBmMDIzZiBweTNrCis3MTY4OCA2NmZkY2ZhOTQwMGIwMWVjZGQ0MzczZmQ5NjdlM2VkMzAzNThjNGNmIHB5M2sKKzcxNjg5IGZlOTlhNTYyYjcwODViMjg0MzZiODU5YWM5MTliNTRlMjBhNDJkNDEgcHkzaworNzE2OTAgMjY5NTFlNTk1ODkzMWI4ZDI5MzJlMDhlNmQ3NWU5OTgyYjJhYTkxZSBweTNrCis3MTY5MSA4ZDhmMmY5OGE3NTJhNzY1ZGRiMDVhNTdlNDQzOGU0N2NkNGFmOTQ5IHB5M2sKKzcxNjkyIDEzOTE2YmIyZWZmMDdjYzQzN2U3ZGM3MDU0MDUxMGY4ZDliZWZjZDAgcHkzaworNzE2OTMgM2UzMThjNGFmOTYxYzNhMDk2OTNkN2Q5NzdmYzMxNjQ3Y2I5MzQ5MSBweTNrCis3MTY5NCAyNDlkNTAwYTc3OWE4N2M4OGEzY2Y3OTJkN2RjNjUzMDViOTg5NzU1IHJlbGVhc2UzMC1tYWludAorNzE2OTYgMDJjYjQyMGQ4NjJlNjlhZTIwZDg2MGQzMmZkNjlhMzIzNTZiYTk4MCBsZWdhY3ktdHJ1bmsKKzcxNjk3IDg1OGI5ZDA4ZTM0YjRlZGVlNGE4ZTM2OWYyODA2NjMwZmM4OWEwNWMgcHkzaworNzE2OTggYzg0Yzc1NTI1YmIzNWFlZjJmMGRlZjJlOGI3OWQwYzAyNzZlMDkwZSBweTNrCis3MTY5OSBkODk1YTQyZGZjOTg5MmRhNmIwNDhmMGNmMjQ4ZDI2YjhiM2QyMTZlIHJlbGVhc2UzMC1tYWludAorNzE3MDAgZDZkYTY0NjM1NGQyMWU3MWRkNjVhNDllMGZiY2U3NjA4YWQwZGVhYiByZWxlYXNlMzAtbWFpbnQKKzcxNzAxIGQ0M2Q2NDI1MmQzNjExZDk2N2JhNzljNzA4M2JmMDY0NDI5NDdlYWYgcHkzaworNzE3MDIgMmVkMGQ3ZTFkMTc3MzU3ODhiNDQ2Y2ExOTVlNzE4YzU4M2Y4Njc0YSByZWxlYXNlMzAtbWFpbnQKKzcxNzAzIGZlMTU1MjZlYmU4YmY2ODc5ODVkZWIzMjBmM2IyOWY5YWNkNTBhODIgcHkzaworNzE3MDQgYzVjODY4MGVlMGIxYzFmYTRjZmU3NGE1ZWE0ZDAxZWNlMWY4MTQ4NiBweTNrCis3MTcwNSBhZDVjN2VhY2NlYTExMjUyZWY4NDJlNzkwNzVmZDQ4NWQxMTQwZjI1IGxlZ2FjeS10cnVuaworNzE3MDYgODIwOWI2YzMyZTYxMmJjNDU3ZGQ2MmZmNTViMThiMjYyZTYwYmJhYiBweTNrCis3MTcwNyA4YThkYzdmODU0M2U4N2NmNjYxZjg3MDU4MjhiZmRjYmY2MDI2MzM4IHJlbGVhc2UyNi1tYWludAorNzE3MDggMzQxMjE1NmZiOGVmNmE3MWZjNDNhODJhZjFjMGUxZDY1NmVmNDBjYiByZWxlYXNlMzAtbWFpbnQKKzcxNzA5IDc5YTZjNjNhYzViMGQyMGVjZTlhYjllYzA4ZDliY2JmNzdjMmY0YTIgcmVsZWFzZTMwLW1haW50Cis3MTcxMCA5NmQ4MmZhY2Q4OTBlOWY2ZDhlODIyOTczYTllMzM3ZGNmYWM4NzRmIGxlZ2FjeS10cnVuaworNzE3MTEgNmE3ZmEwNGQ4MTExZTQ4MTNiMzQ3NWI5MTcxNGU4YjBmNWM1ODc3MSBweTNrCis3MTcxMiA1Njg4N2EyYTkwYWVmNjM5MzAxNWZhMzMyY2Q4MWQ0OWFkZDM3YjA4IHJlbGVhc2UyNi1tYWludAorNzE3MTMgZmIwOGY2MGFiNTExMTdjOGQ0NmI5Y2I3YTkyYmVjMjQ0YTRlMjhhNiBweTNrCis3MTcxNCA0ZmE0NzY4NmMwZDcwZmRlYzMwMTI3NDA5NDQ4NTg5ODE2ZTUyYmRiIHB5M2sKKzcxNzE1IDkzMjIzNjAzYzk5MjIwNmI4ZmQ5ODI1N2EyNzU1ZjBhZmZkMzVmYTkgbGVnYWN5LXRydW5rCis3MTcxNiA0ZDk5ODIwN2NmYzNlOWNjMzI4MWUwYTFlZjk5MmViNDk5NjJiYTA0IHJlbGVhc2UyNi1tYWludAorNzE3MTcgNzJhNzAwMGE4NjA5NDJjNTA5NmNmYThlNWRkZDFmM2QwN2MwY2UwNSBweTNrCis3MTcxOCBhNGYxMTdlOTIwZmRhNjBlMGZlYzZmOGIzNzIzZGY2OGIwZmUwYTBmIHB5M2sKKzcxNzE5IGM0ZTlhODc1YzlhNTRmYjcyY2NiOWE2MzBmZTM3YzE0NWNhNjc3ZTcgbGVnYWN5LXRydW5rCis3MTcyMCBkZGExNGFmYTEyYjg1YjBkN2EwYzU2ZDA5Yzk0NGVlMjgzYjJmNjBlIHB5M2sKKzcxNzIxIDk3NTVkOGRkMzM2NmFjY2QyNDYyMWY0OTQ3M2Q3YTM2MWEwYmJmYTcgbGVnYWN5LXRydW5rCis3MTcyMiA3NzkwYjg1ZTcwMDliZTdhZDIxYTE1Y2Y5ZjhlNDdlNDg1ZmM3YzhjIGxlZ2FjeS10cnVuaworNzE3MjMgMjg2NDVhOTYxMDA0MjQwNmE2NWU5NTljOWY1MDA5MTRlZThmNmU3NyBweTNrCis3MTcyNCBjMjc3Y2Y0MTkzZDExYzc2OTk5NGZkMmZkNjg1YWNlZTA4ZGQ2MGU1IHB5M2sKKzcxNzI1IDNlOGRjNTlkNjRkZTQ0NDAzNjQ1YzJlZGM0NGQ2NmU3OTYyOTZmZjYgbGVnYWN5LXRydW5rCis3MTcyNiAzMjljYjAyZjE4ZTZmMjJlNGU3ZWQ1MDNmY2Y4NGM3YmI0NjA3NDJiIHJlbGVhc2UyNi1tYWludAorNzE3MjcgNmVjM2RmMzc1ZjVhODI2Njc2M2Y0Nzk2MmE4MzAwMTMzM2QxYjczZSBweTNrCis3MTcyOCBjZjIxZTlkMjkwNjJmMTZhNzU4MmYwMTFhOTc0ZjJmZTViYjNiYTMyIHJlbGVhc2UzMC1tYWludAorNzE3MjkgNzJmZjQ0YzA1Mjk1Yjk1NWM0NjNjZWEyZTJhNGUyYTU4M2RjYjM4YyBsZWdhY3ktdHJ1bmsKKzcxNzMwIGE2ZDMyNDEzNmUwMTQ1YjI5NThmOWFhY2UyMTU1ODY3YmEyZDE3N2YgcmVsZWFzZTMwLW1haW50Cis3MTczMSBhODJiNTNkYmM2NTY1NWRhYWUxNWQ1MmM0ZGViN2M1YzkwNjc4MjkwIHB5M2sKKzcxNzMyIDFiY2Q1NWRiMzVkZWQ2MTg5ZmViOGM1YTU4N2I5YTk5MDc5ZjFiNWYgcmVsZWFzZTMwLW1haW50Cis3MTczMyBjZjYyMjJjYTBiY2MwNmQ2M2M1NTY5ZmNmMjIzMWFlMDQzYmQ3Nzk0IHB5M2sKKzcxNzM0IDU4OTE1ZmM1NzZhYWNlM2VjYTNmMDMxYWVjODU5ODQxNjI2ZjhmMGEgbGVnYWN5LXRydW5rCis3MTczNSBhZGM3N2E1ZDZhOTYyNmU2OTQyOTBlN2Y4YTBmZTQwNWE4NWU3MjEzIHJlbGVhc2UyNi1tYWludAorNzE3MzYgZDc0YjlhOGU2NmY2MDM2YzE2YjQ0ZDNjZjM3MzZkOWE0M2MwMmZiNSBweTNrCis3MTczNyBkOTk1MDNiNmYyMzhhZWMyNjI4Mzk2ZWZhZTVjNDk2YTMzNGY0M2NmIHB5M2sKKzcxNzM4IDc1NTc3MTZiNmIxY2I5NGJlOTc0OWIwYWFjN2E0ZTBlMjAzZTFiOWUgbGVnYWN5LXRydW5rCis3MTczOSA0OGJmNDJjMmZmN2E4MDM4YWI5MDM0ZDRmMWRlM2JkMzViOGIwYjE3IGxlZ2FjeS10cnVuaworNzE3NDAgN2QyYzgyMjI2OWM3NGNmNDQ4NGUwMWI2NjExOTNmMTVhYThhN2NmZSBsZWdhY3ktdHJ1bmsKKzcxNzQxIDQxYTc1ZGQ5ZGY3OGY0NTdkZWE4ZmZkNDIwMjFmYWM3N2UxMTA2MDAgcHkzaworNzE3NDIgYjdiOGZiZDAxMGNhOWIwMjUwNmU2NTIxODNmNjc4YjNiZTM4MzZlNCBweTNrCis3MTc0MyBkNTBkNGYwOWNkZjdkNzUyZDc0ZjBiODZmZmExYjMyYWJkNTc1ZjMyIGxlZ2FjeS10cnVuaworNzE3NDQgYjdjNDEyZDFhNWNjNDZiOGU2OTM3ZTE3ZTNhMmYwNWMxOTQ5MGE5ZSByZWxlYXNlMjYtbWFpbnQKKzcxNzQ1IDYwNzI5ZWU4NDgyMjU4NDYyN2VkY2YzZWY4YjFhNjQ3YzAwMjJlZjEgcHkzaworNzE3NDYgZTJjNzg1ZmYwYTUwZmYwNTVhZjJlZGVkMDgxZTI5Nzc5YzcxNjhkOCByZWxlYXNlMzAtbWFpbnQKKzcxNzQ3IDQ0ZWY4YTczYThiN2JjY2MyOTI4MjI3Y2UyM2NjNjUyZDYyYTM3ZmYgcHkzaworNzE3NDggMTczN2FhMTUxMzEwODY3ODNmNzgzNGViOWZiMGViMmQxMGVhNzdjMCByZWxlYXNlMzAtbWFpbnQKKzcxNzQ5IDNmMjkyMGFhOTEwY2IzOTQzMGU4M2ZlZTQ2MWUyYWQ1MzEzNDBkNjUgcmVsZWFzZTMwLW1haW50Cis3MTc1MCAxMzgwNzcwM2FmZDBmNTgzNDllMzgyMzhjODI0MmYwODRiN2NkM2FkIGxlZ2FjeS10cnVuaworNzE3NTEgMDM5NzZhMTA4NzAwODNkYzk1Yzk3OWU3YzYxNWFhYmRhNDQ2MmIyZiByZWxlYXNlMjYtbWFpbnQKKzcxNzUyIDBiM2I4ZWQzNjIyNDY0MDk1ZTVjYzQ3ZTIyNTUxMWM3NmQzNDVkZDcgcHkzaworNzE3NTMgMmIxN2M5OTY4OTgxYjIxY2ZkZjYxMDRlNDU1MmQxNDBkNWY3ZTQ4OCByZWxlYXNlMzAtbWFpbnQKKzcxNzU0IDQ1MjdjMTUyZGFhOTM5YzJlZTVlNGE2YjFlNTA1ZDUwMGZjZjk3NWIgcHkzaworNzE3NTUgMjI3OTY3ZmU0NGE0MjZjOTQ0NDIxNTU4YzkxYjA3ZGYzNTg1ZDNlNCByZWxlYXNlMzAtbWFpbnQKKzcxNzU2IDQyYmY1NmUzNDgyNTk2YmE1MDcyYjFlNWI2NTZjMDg4OTc3YmE2ZjYgcmVsZWFzZTI2LW1haW50Cis3MTc1NyA4NTMzY2ZjMjQyMGFkYzEzNjZhOTQwNDIwYzE3ZmRkYTc3NDczNjMxIHB5M2sKKzcxNzU4IDA0ZmZlNmI2MTcwOTEwNjcyZjA1ZmRhMmMxM2VmZGE1ZDYyNGMwZTAgbGVnYWN5LXRydW5rCis3MTc1OSBjZGI2MDE0NDFkMDQ1NTIxZDhlZDBhMjI5NmI3MjcxM2Y3OTVhZGRiIGxlZ2FjeS10cnVuaworNzE3NjAgYTJkNDIzMTAxNDJiZTgxMzhlYTYyMmRkYWZmMzRlODBkMjVmOTViZSByZWxlYXNlMjYtbWFpbnQKKzcxNzYxIGU0MjAyMGE1MjIwYWU5OWI0YWZmZTBlZWI1NmY2MzU1OWMxMTBhN2EgcHkzaworNzE3NjIgMDUzNzVjMmUwNzQyNDAwNmE1NWYxOWM1M2ZhYTBkZTBmNWE3YjE4NiBweTNrCis3MTc2MyA4MDkxZTA1NjZmZTMyMGYyYzVmODEzNDE2NWMyMGM1OGNkYzgzYmFiIHJlbGVhc2UzMC1tYWludAorNzE3NjQgMzcwOTNlOTRhZmM3NzhjOTBiNGJhNzUwM2I4YjBjYTdlZmZjYTZmNiByZWxlYXNlMzAtbWFpbnQKKzcxNzY1IDk2ZWVkNzM4N2NlYTM4OTBlYjU5YjZjNTExY2QxNzZkNjU4N2UzNGUgcmVsZWFzZTI2LW1haW50Cis3MTc2NiA4N2ZiNzIxMzJkNmJkZmExMTU3MTk2N2FiYjRiNzI4OWQzNjAwM2UxIGxlZ2FjeS10cnVuaworNzE3NjcgMTM3ODFiMGY3NDVhNjE4OTBlNGQwOWU2YjI0ZWEyZjk3Yjg3ZDU3ZCByZWxlYXNlMjYtbWFpbnQKKzcxNzY4IGFhNTQ0YTU0NzUzYmE4ZjY4MjBlNzcyMTM0OGE2NjZkN2QzOTE1ODMgcHkzaworNzE3NjkgYmQxODhmZjM0MmE0YzY4OTFlMmMwZTcyOTdlMmUzZjQ3MjFlZDM4MiByZWxlYXNlMzAtbWFpbnQKKzcxNzcwIDczYWEzNzU2YzBiMjZiMDExMzkyNjU4MjQ0Yjc0ZjVjMTM0MWZlOGUgcmVsZWFzZTI2LW1haW50Cis3MTc3MSA0NTVmNDBkMTczOGU4YzA2OTI2YTliN2FlNDk3NjJjYTUwMDVmOTNjIGxlZ2FjeS10cnVuaworNzE3NzIgOGYyOGNlN2I4ZTY5YTE0MTUxOTViNGMwNWJlZjM5ZjRjZjhkNWYwOSBsZWdhY3ktdHJ1bmsKKzcxNzczIDQxMjkzZmE2ZjBkZDQzYTY4Zjg5ODY1NjlkYWE0NWZjZDkzZTE1YWYgcHkzaworNzE3NzQgZDBiMTMzNjNhYTIxNDU2YWUwMGE3NzgwZGUzNWJkNGZkZGFhMWZhNSByZWxlYXNlMjYtbWFpbnQKKzcxNzc1IDI3YWM4Yzg3NDFjZDU5MmI5MGRlZmViOGEwOTcxMGNlNmZkNGE4NTcgcmVsZWFzZTMwLW1haW50Cis3MTc3NiBjZWUxZmMwNzYzNDQzYjRlODdiZjFhNzNhMzQ4YTgyYzc2YmY4M2Y2IGxlZ2FjeS10cnVuaworNzE3NzcgOWNlYWUyOGFiMjcwNDAxMWExZTkwYjgzODY1NDY3YzliYjYxNzU3MSByZWxlYXNlMjYtbWFpbnQKKzcxNzc4IGRlZDQ2NzM1MjU1Mzc5YWQ4YTQ0ZmE0YzhjYmZmOWUzZWYwZDAxOTQgcHkzaworNzE3NzkgOTNjOTI5YTJmYWM3ZDcyMjllZmMyYWU3NDdhZDBiNzUxNzE5MmU4YiBweTNrCis3MTc4MCBjOGE3NTcxMGFiMjUwMTczMGRjYTMwM2U3YTI0ZjRmODgzMGRmZjcxIGxlZ2FjeS10cnVuaworNzE3ODEgNzJjOThiNGJmMGI1NjgxOTJjMzdiNTBmNWY0OWQ4MmI3NzNjOTc2NiBweTNrCis3MTc4MiA2OTZkZDIyODE4NDE1NjFlZmY0ZWMwNzJkN2ExN2ZjY2QzY2Y2Y2Q3IHB5M2sKKzcxNzgzIGVkM2Y1MWYyYWJmYmI3MjljYWM2MTEyYjRhYzA1M2IxMDA2ZGFjYWMgcHkzaworNzE3ODQgYTY4ZTJkYzVmNTE0NGQyMmQ4ODlkYWI3M2I0MDk2Mzg1NGY5NmE5ZCByZWxlYXNlMzAtbWFpbnQKKzcxNzg1IGRlNjNiN2U4NTAwZGMyZjkwODU0Y2QzNTkzMzQ2ODAxNWM4MWI5ZjEgbGVnYWN5LXRydW5rCis3MTc4NiBmNDRkNDJhMTFiOWI0M2EzY2Q4OTA0YzI5NzJkOTkxYjAyYThhZmY3IGxlZ2FjeS10cnVuaworNzE3ODcgNzczMzZkODJhYjk1MGI2OGI5ZTVjMmE4Zjg1OWMxMTAwNzQ2YWYyMiBsZWdhY3ktdHJ1bmsKKzcxNzg4IGMzMDY4MWM2NmIzZmVmMjY1NGI1MjRkYzI3NjYzZjQyNTM5OGM4MGEgbGVnYWN5LXRydW5rCis3MTc4OSBjMmU0YTdhZDA1ZjJiNDc1OTY4NWQ3YmZmZmYwNmY0MmU0MmU3YTU2IHJlbGVhc2UyNi1tYWludAorNzE3OTAgNDE0YmE4ZWZjODA0NmFlNGFlZWU1MTYwNjdiYTg3OTg4ZjUyNDQyMiBweTNrCis3MTc5MSAyYjA1N2QyYjk4ZWIwNzRmMmMxMWYyYzFlMzdlODZkOTUwZDUwYzVhIHJlbGVhc2UzMC1tYWludAorNzE3OTIgYjBmZWEzYWUzYjZlZjU2MjBkOTY4MzI0Nzk4MGZjNGU5YjM2Y2Q0ZCBweTNrCis3MTc5NCBmOWYyM2YzNmMzNmNhOGY0MWQwZWM1ZTc3YTlkOWQ0NWZiMWNhNmU1IGxlZ2FjeS10cnVuaworNzE3OTUgNzhiZmQ0NDgxNzYzMzFjOGIyM2YzZjdmOTlmYTAxZDI5NTEyYzI2MyByZWxlYXNlMjYtbWFpbnQKKzcxNzk2IGM1ZTBkOWJlZWJmOTIzMDg1MzA2NzAxNWFjOTE3MTU3MjFjODE5YTkgbGVnYWN5LXRydW5rCis3MTc5NyA2MThkMmUzYWNhNjJlYmRhMWZlODI2YzM5MjQ1YzlmNmZjMTQ4OGU2IHJlbGVhc2UyNi1tYWludAorNzE3OTggNjExNTE4ZDY4MGRlYzI0YWJkMmJkZmVkNmFmNDA0NzJiYjQyN2FmOSBweTNrCis3MTc5OSBlOTU5NWNiNWM3ODYwYmFlYmEwM2I1NTIwZGJiNjgxOTcwODExNjVlIGxlZ2FjeS10cnVuaworNzE4MDAgMzMwZGI5NTRlNTkzNGUwOWIyYmI2NDkyNzZkNjU3N2ZhNWU1NmQyMCByZWxlYXNlMjYtbWFpbnQKKzcxODAxIGI1ZGYwOTRkODk0MWQyZGE0ODk2ZWM5ZTgwODZmNGE5OWI2MDM0YTkgcHkzaworNzE4MDIgNDRhOGE1MjVlY2ViODA2N2Y4NDIxMWVjMDhmNGU3MzQ4NjU5OGVhYiBsZWdhY3ktdHJ1bmsKKzcxODAzIDZmNDJkZTcyYzJkY2U4OGNhMTBkNjNhNTg0MDY5NjZiZGQxZWNjMmMgcmVsZWFzZTMwLW1haW50Cis3MTgwNCA1MTNkYzZmYTYxYzBiNzBhNmI1ZGYxZmM2NTBhYzVlODcyM2ZhZTIyIHB5M2sKKzcxODA1IGM2ZThjNjU3MTU4ODc2ZjdmMjEzOThiMmNiNDUzYTU3ZDI1MWRlMDQgcmVsZWFzZTMwLW1haW50Cis3MTgwNiA5YmY0YjNlYjA0NDcyNjk5MTM1MzhlNjdkNGNlMTMxMDNmZDQzZDY4IHB5M2sKKzcxODA3IDI0ZDgxZmNiMGUzMzM1ZjJlMmE0ZTJlYTQyZDU4OTQwZTFkNTE3NjEgcmVsZWFzZTMwLW1haW50Cis3MTgwOCA4NTU5N2U1NTY2OGNkMGM5MzhiMmU2YmY0OTFhMzEzMTQzZThjODk1IGxlZ2FjeS10cnVuaworNzE4MDkgMWYxZWNhNjgxNjc1YTM5ZTVhMTMyMjBiZWYzZmMwMzVjMjNjNzA5NCByZWxlYXNlMjYtbWFpbnQKKzcxODEwIDFhMTI5MTM4NDkyODkzMmRmNTNiNzIyZGUwNmEwYjA1NDMyMzZiZDIgcHkzaworNzE4MTIgMmQwOWJjZjcwMzk1NTU4NDVlNDQyYTVjNTg4MTVjM2JiYjdmMmRhMyBsZWdhY3ktdHJ1bmsKKzcxODE0IDE3MDA1NWQ3YjQ5NDJiMjNiNjliYjJmODM2YTdlOTZmMjkzZjVlZDYgbGVnYWN5LXRydW5rCis3MTgxNSBmZjllZGNiMzY4NzhlZTg2MWU5M2NhZDdiYWNlOWZmNmFlMmNhNTNlIGxlZ2FjeS10cnVuaworNzE4MTYgNjI5MmJkMjYzMmUyYmRkN2Q1OGRlZjA3YWY5YjdjMjRlMTU2MTlhMCBsZWdhY3ktdHJ1bmsKKzcxODE3IDQxYmMzM2VlMTczMDRmYTZiMWViYjYzYTQyYjE1YzhjNjUxZjdkZWUgbGVnYWN5LXRydW5rCis3MTgxOCAzMzAxMTUxMzc0MTQ3NWNkZDcyMDZkZDNiNWJmODk5ZGVjMTk2NDcyIHB5M2sKKzcxODE5IGQyOTUyNTRkODRiN2Y2NWZlN2Y2MWE3YTdkNWJiYTVlMTA3YTlkNWYgcmVsZWFzZTMwLW1haW50Cis3MTgyMCA1YmJkMmU2ZDYxMjYyMGU0ZmVlZTMxMjBlMWQwN2U1OTA1YzYzNzM5IHB5M2sKKzcxODIxIGE3YzRhMzdjOWRmMDc3MTY4ZDczZWFjYWU2OGRjYjFhODUwYjUwNDEgcmVsZWFzZTMwLW1haW50Cis3MTgyMiA4Mjk1YjdiMjk0YmQ2MmRiYmVkZDNmYzFkMmRhMzMzOWRjZmNlMzg5IHB5M2sKKzcxODIzIDgzMDBiMjc0ZmRkM2NjZjhkMjE4MTE1N2MyYTg4MDc5YWMxNDllZDkgcHkzaworNzE4MjQgMzMzMTJiOTEwNzczNDAxZGQ1MzU0YmQ5Y2RlNzY4YjUyNzgyMDhiNSBsZWdhY3ktdHJ1bmsKKzcxODI1IGZkZTAxNWEyYzhiM2ViZTI0OTZiNDU2YTFkYmYxOThjZjVlMDU5MDggcmVsZWFzZTI2LW1haW50Cis3MTgyNiAzMmIyNDczMDBmZjlkMzIzOTE5MWMxOGMzZTU0OTBkOWQxYmE0NmY3IHB5M2sKKzcxODI3IDA3NjFlZTI4YjZlZDYyNDAyYWYwZWJmNTZiNWY1NjZiMzFiNWE1MGYgbGVnYWN5LXRydW5rCis3MTgyOCBkNTU3MzIwZGU4NTZjYmIyMTM5NGQ3ZWNhNTEzYmFjZTVmMzI2ZGQ1IHJlbGVhc2UyNi1tYWludAorNzE4MjkgMDZkYjFkOWQyNTVmZjdjN2Q0NWQ0NjNhNWI2MzZmMDdiYjhhNmEyMiBweTNrCis3MTgzMCAxZmM5YjY1MDg3MjMyMjkyNTM2NDQwM2Q5MmM2NDhmMDkyYWVlMGE2IHB5M2sKKzcxODMxIGVjODQyY2M2MTBlNmYxNGYzZTEyYTI1ZDJmMGQ0OTNjZWM0ZjdlMjggcmVsZWFzZTMwLW1haW50Cis3MTgzMiAxMTQwNTljMjY3OTRmMWFkN2M0MmUxYzE1OTY2ZTk4NTk3YTQ2NmY4IGxlZ2FjeS10cnVuaworNzE4MzMgYTFhNmY1ZDJiM2RjYjVlNTIzOWE4ZTQ0ZWE0Y2ExYjczNDJkMDYzMiByZWxlYXNlMjYtbWFpbnQKKzcxODM0IDU5YTFmYjkzOTU3NzRjZWIzYjc4YTNmMGFhNWU1OTY5ZTgzNzk3M2IgcHkzaworNzE4MzUgNDZhMzJkNDQ2M2M4M2E2ZmJkMDI3ZWI1NDMyZWIyY2ViZjc0NDg1OCByZWxlYXNlMzAtbWFpbnQKKzcxODM3IDEzM2M2NjAyN2YzM2U0YzJmNjMxMTM4OTVkY2I4OWYxZDlmMzgwZGQgbGVnYWN5LXRydW5rCis3MTgzOCAzMjIyNjc3NmY4NjYxMzQ2ODI4OTIyOGNkMDIwMTJmMTFjNTAxMWViIGxlZ2FjeS10cnVuaworNzE4MzkgNTRiNDQ4OWYxYzI4NGQ2MTI3NTcwY2Q3YzZjMjc3NzI5M2Q5Y2JkNCBweTNrCis3MTg0MCBmYTRmMThlZGUyNjBiYTc5MjM5ZmZkZmNmMzVkYjA0MzhkN2RhODZhIHJlbGVhc2UyNi1tYWludAorNzE4NDEgYTY1ZTNjMDcyNjBlOWViMDc4MWQ1NWFkZGQxNDg3MDI4YzljYjExOSByZWxlYXNlMzAtbWFpbnQKKzcxODQyIDExNjc4N2Y5YjlmY2RiZjgxMjE3Mzk4YzExYTU0YTU4MjUwNmUyYTcgbGVnYWN5LXRydW5rCis3MTg0MyA2M2NiNWM5MWNlMjE0OGM1ZDA1ZmNkYTJhNzI3NjhhZTNkYjg2YTkwIHB5M2sKKzcxODQ0IGZmN2I0ZTU4MmM0OTA4M2Y3MWI0MmI5ZDcxNDZkYmEyMjUyY2IwMTEgcHkzaworNzE4NDUgZDg4MDJiMDU1NDc0MzAyOWUxNTQ4NjYxYWNjYzM5MmQwYTM3MmRkOSByZWxlYXNlMzAtbWFpbnQKKzcxODQ2IDQzZTQ2ZTRlMDJmMDM2MGIzM2Q3M2YwYTg2MDE5MDRlMzhhNTVhZWIgcHkzaworNzE4NDcgZmJiMWRmMjU0MWMzNmEwOWNlOWJlNTc3Y2FiNjA5MzQyYWQzMzZmMCBsZWdhY3ktdHJ1bmsKKzcxODQ4IDk2OTFlNzM0NTk2NGRhMTlkZjUyZmE4ODkyNzYyZjBmYzNhY2EzZDYgcHkzaworNzE4NDkgMDk2ODkyMTJiM2ViMjgxOTRhYTgxMTg2OWM3ODYwMDBiZjIwNDVmYyByZWxlYXNlMzAtbWFpbnQKKzcxODUwIDJlZjU0ZThhNDRkZDQ4OTllZDkxZGE1ZWU2ZGJlM2QwOTQzZTA5NzUgcHkzaworNzE4NTEgMDBhOTI3ODE1ZGNkNjJkNDY5NDhiYzQ4YzNmZGEyM2Y1YTBhNDE5OCByZWxlYXNlMjYtbWFpbnQKKzcxODUzIGQ1MWU0ZjYyYmM4YzA0NTU4ZDIwOGFmOWNkNDMwNDUxOTNlMjhkYmEgbGVnYWN5LXRydW5rCis3MTg1NCAwMmYzZjg1ZTM5MzZiOGMwMDA4ZWFkZTMzMzZjNzEwYmM0ZTYxNmVmIHB5M2sKKzcxODU1IGM2MmNjMmE1NzY0YjYzNDIyZWI1ZDI2YjM0NWVmOTEwMTk2ZTFkMzQgcHkzaworNzE4NTYgYjVlMmJjYmJmYTc0MDJjMjY5NDg0ZGU3ODY3ZDkwOWMxZGQ5YWM3MyByZWxlYXNlMzAtbWFpbnQKKzcxODU3IDBmNTVlMDljMTZiNTY4MDYwYWMxYjJiYTAzNjVjZmU1NWZmY2VmZDMgcHkzaworNzE4NTggMjk4ZjI4YWZmMThkMjM5NDBiOTljZmI4MDgyNmEyMzFkMjQwMTdkYyBweTNrCis3MTg1OSBiMmZjYjNmMjI0ZGUyZmUzYWYwN2IyYzQ3YTU5NmFkMDNiY2VmYjM0IHJlbGVhc2UzMC1tYWludAorNzE4NjAgMzE4OTUxODkwYWJiNTdjMzk1MzA0NjI5YmQ1MWIyMTUxNjI2YmJmZSBsZWdhY3ktdHJ1bmsKKzcxODYxIDY0MjkxMGEwMWQ3ZjM5MDBmMDBkNGMzZDRjMjJmYjNmZmZmZTcxNDkgcmVsZWFzZTI2LW1haW50Cis3MTg2MiAyZTM3MTkwZjhlYTdkNDljYWNiODk2YTg3ZDI3N2ViN2E3YzNiZThiIHB5M2sKKzcxODYzIGZkYjJiZTQ3MWEzZmRiZDAzNjhkMGMwMDY0ZTI0ZGMzODk1YWE1MGEgcmVsZWFzZTMwLW1haW50Cis3MTg2OSA1ZmQwZGEyYTk3NzhlMTY4ZmY1Yzc0Y2I0OWY1ZTU3Y2VlYTk0YzY3IGxlZ2FjeS10cnVuaworNzE4NzAgYTM0ZDk0NWMwN2VkYjNlY2JlOGY3ZjAwNTBjOGE0ZTNkZTQwMzdiZCBweTNrCis3MTg3MSA4MGRhNTI0NjZmZTg3ZGU1YjYzMzM1OTUxNTBjNDUwNTlmMzM4YzJjIHJlbGVhc2UyNi1tYWludAorNzE4NzIgYTVlYzU3ZTg1ZjY1YzE4Y2MzMDM2NWJlMjMwZjY0MzU2MjMyYTRhMSByZWxlYXNlMzAtbWFpbnQKKzcxODczIDlmOTQxMjE5MjQwMmQ5ZjU5MTc3M2Q2ODQ3YTVmNTk5MDgzZGRjMGQgbGVnYWN5LXRydW5rCis3MTg3NCA5NTU2ZTkzZjJhYmI0OTliNmYzODM5ZWZlZmFmMWVlODczODZjYWE2IGxlZ2FjeS10cnVuaworNzE4NzUgNWE0NmE4MjIwNmU3YmJmMzk4NDVhZjUyOWVlMzVjMGRlMTk2ODBjNyBsZWdhY3ktdHJ1bmsKKzcxODc2IGIzNjZhNDk2ZDQ5OWViMTkxNzcwYmJlZDZjY2QwMTkzNzg1YjBiN2EgcmVsZWFzZTI2LW1haW50Cis3MTg3OCA4OGE3ODg3ZDdmZDRhZjk2YzM4OGIzMjMxNzNhZGM5MzhiOTdhODAwIGxlZ2FjeS10cnVuaworNzE4NzkgY2U0N2RlZTFiNTQ0MjNjYWNhMmI4NDUwNTkwMDAwMmZhNzM5OWFlYyBweTNrCis3MTg4MCBjNTcxMDhkZWYzZTNiZTk5N2I0NjRkNTUwNzRlMmMyYjY0YzhjMTEyIHJlbGVhc2UyNi1tYWludAorNzE4ODEgZDM1MzM3ZjY1MDE1OTk5Y2NjMzMxOTBiMzliYjU1ZjY0NTVlMTgyZSBweTNrCis3MTg4MiBhZDBjMjY5NzJiMjIyMTc1OWQyN2MxNTIzZDMwOWRkYmIwNjllNmZlIGxlZ2FjeS10cnVuaworNzE4ODQgYWQwM2JiNWQwZjdkYmJjNWNmYzU1NDgzYTEwN2IyNDdiNTI2ZjZiYSBsZWdhY3ktdHJ1bmsKKzcxODg1IDZkYzk4MDVjYjBmYTk3NzlhZGE5YmY2ZmZlNTVhZmUwZDBkZmMwODMgcmVsZWFzZTMwLW1haW50Cis3MTg4NiAzY2M1ZmMzMzMyZjZhYmNjYjk5MzExYjUxOTczMzVmZThlNzNmZDJmIHB5M2sKKzcxODg3IDgwNmJjNDY1MWI5ZGUzNWVlNjBmZTY2YzQzNDFiYTNiZDFmNjZiY2IgcmVsZWFzZTI2LW1haW50Cis3MTg4OCBjYWRiNjllMWRjOWE2MmZjYjQ3NGMzMTU2ZjM4ZmE4NzE0NzUzOTJhIHJlbGVhc2UzMC1tYWludAorNzE4ODkgMTgzN2U4ZTIyOTI3NzcxMTE1M2M0YWUwMmUwYWQ0ZDMzN2FiYjA4MiByZWxlYXNlMzAtbWFpbnQKKzcxODkwIDA1ZGU4NjQwNzdiYTliODNlODljZjk1ODczZWRlNzUxNzU0OTY3ZTAgbGVnYWN5LXRydW5rCis3MTg5MSA1ODdjOGUzOTE3YzZhODI1ZjI5MDhmNTlmODU4NjUzMDc2NzJhMmFmIHJlbGVhc2UyNi1tYWludAorNzE4OTIgZDNmZTZlOTY0ODRjOTdjZDRlMDA3NDFhMzc3ZjI1YzQyYjZkNTU2YyByZWxlYXNlMzAtbWFpbnQKKzcxODkzIGVhYmU2Y2Y5NzM0YzgzMmIyOTZhZjhkMzNhOTYyZTdkYTdiNDYxNjYgbGVnYWN5LXRydW5rCis3MTg5NCBhMmVmNGRkNTVjZjI1NjE5NGJmOGNkZjRjZjU5OWFhZTM0NjJmZDZmIGxlZ2FjeS10cnVuaworNzE4OTUgZjA4Zjc3NjA4MmVjY2IzYTdlM2MxMzhkMGRmYTAxZmM1YmZjMzYyNyByZWxlYXNlMjYtbWFpbnQKKzcxODk2IGZmMjllOTY2YWJiNjVhOTIwNjJiODllMjY4ZjQ3NTY4NjQwODJmMGMgcHkzaworNzE4OTcgMmY4ZTUzNWY5YTliZmE0NDFhNzMxYjM4Y2E2MDQ1MzNjNTkyNzBkYSByZWxlYXNlMzAtbWFpbnQKKzcxODk4IGJiODc2YTEzM2JkZjNhN2E5ZGQ1OGMyN2Y4ZDc3MjYwMzg4MWZhYTQgbGVnYWN5LXRydW5rCis3MTg5OSA2NzZkYWExZWYyMjM3MTI5ZTM2ODBlMDQyNjIyYmFmZmUyMGQyYzMxIGxlZ2FjeS10cnVuaworNzE5MDAgMzA1ZmZhZGY4MzE1YjNiNThkMzM2MDFhNThjZDNiYTdkMzZhN2U0ZSBsZWdhY3ktdHJ1bmsKKzcxOTAxIGRkY2MyYTZmZGUzYWUzYjk3MzYxMzQ0ZTI1MGI5OWU1ZThhZmJlMDQgbGVnYWN5LXRydW5rCis3MTkwMiBjNzU2ZjMwYmM0MmE3ZTY0YzA0YzU2Zjg3Yjc4MDUxZGU0NzA5ZTRkIGxlZ2FjeS10cnVuaworNzE5MDMgODUyNDZlNGUxNDI4M2U2ZTE5ZjM0MmMwNWQwOGFjZTA4MmJhMzAzNyBsZWdhY3ktdHJ1bmsKKzcxOTA0IDE0NjdjYmMyMjNlNjAwNzk5MjRlNzIxYWNlZDg2Mzc5YTJlYjkyYjIgbGVnYWN5LXRydW5rCis3MTkwNiAyNDgwZWE3NTA2OGZhMjFlNGQxMWEzYjNiMWVmOWM2ZTE2YjI0ZGI2IGxlZ2FjeS10cnVuaworNzE5MDcgNzFiN2I0OTIxNTEyMWY1OGQwOTFjZWU2ZTU3MGZlMDE1MDVhNjRhZSBweTNrCis3MTkwOCA0YWYwNmIyYmMzY2MyNWVhNmQzZmJiMmY3YWViZGIwNWEwYmRkOGMzIHJlbGVhc2UyNi1tYWludAorNzE5MDkgYzZiZjUyZTE1M2I0YTNkMjNhMTJlNTE2MDkyNjI3NTIwZjRkNmM4MSByZWxlYXNlMjYtbWFpbnQKKzcxOTEwIDg1Y2M5NTEyYjYwYzUzNzgxNjlhMTMyM2RkNTkxZDk1MTgzNTg0NjEgbGVnYWN5LXRydW5rCis3MTkxMSA3Y2QyM2IyZWFhOTNiZWRlMjU4ZTY0YWJlNzdjODhmMjI2ODE5ZjlhIHJlbGVhc2UyNi1tYWludAorNzE5MTIgMDgzY2VhMGYyN2EyYzIxM2E3NDUxM2UzOWRjMjFmOWUzNWFlNDhhZiBweTNrCis3MTkxMyAwMDZhNDBiNWUwYzNiNWY5ZWYyZWFmNGRiOTgxNzNjMTQwMTNiMGE0IHJlbGVhc2UzMC1tYWludAorNzE5MTQgMTc5ZjQ1OTNiZDNlZDA4MWZiM2U3NzBjMzMyN2E0MWI0MzhlY2IyNSBsZWdhY3ktdHJ1bmsKKzcxOTE1IDNkMDdjOWIyMzk1MTQyYjAyYTU0MjQ3OTEzOTBmY2M0ODA4ZGMyZjUgbGVnYWN5LXRydW5rCis3MTkxNiBmODgzMDZjODI2NWUzZGRjMGIyOThlYmEyNWE1NTQ4MTUzNzZkYWRhIGxlZ2FjeS10cnVuaworNzE5MTcgNjJiMzE4NTM1OWUzNjVhMzc4Y2ZiZDY5YThjNjdlOGNlYWUxYTRkNSBsZWdhY3ktdHJ1bmsKKzcxOTE4IDNiNDlkMzBjYTU0MTNiYzA5YzczOGFhN2NmNjg0MzAxM2Y2ZGMwNzcgbGVnYWN5LXRydW5rCis3MTkxOSAyZTI5N2IxZWM5MzU2MGYxMzIwYWNkZGU5N2ZhMjBiODM3ZGJmYjIxIGxlZ2FjeS10cnVuaworNzE5MjAgNjk0ZGFmOGNkZjk5MzhiZjJiZWE4YzBiMzc4NzZkMmFjMjMyMTFiZiBsZWdhY3ktdHJ1bmsKKzcxOTIxIDYyNTVhNzJhNGMxZTllYWJiOWIwZTRlYTMwYjk3OWQwNTU0YWFiNzUgbGVnYWN5LXRydW5rCis3MTkyMiA4ZmJhMjU4NGYzOGJlYTIzMzVmZGEwOGRkZjE0NjJjMjJlMmJmZmI2IGxlZ2FjeS10cnVuaworNzE5MjMgNjMyODYyNDJkZDlkYjE0NDVlNGY5MjMwNTI5OWFiNDcwMjFlNjZlYiBsZWdhY3ktdHJ1bmsKKzcxOTI0IGNhMmYxZTM0ZjU2MmQxYjI5MTZjYTViMGJhYTdjMWJmYWE1OTRmMjQgcHkzaworNzE5MjUgN2JiMWE0Y2Q1ZWU1Yjg2YzZjZmQyZmRlMTVjOTc3YjZjNGIzODk5MSBsZWdhY3ktdHJ1bmsKKzcxOTI2IGVkZDhmMGQ1MmIzOGUyZTUwY2Q2MDIzMDE5YTFkNWQ1YzY3ZmI2YmUgbGVnYWN5LXRydW5rCis3MTkyNyA0NTZiMmEwNmQwMTcwMGY3MDY1ZGJhMTg1NTA0OWQ4ZjZjMGM2ZTJhIGxlZ2FjeS10cnVuaworNzE5MjggYzdlYTgyNmZhZDc3MzQ3ZWU4NTJlZTk0ZjMyYTcwOGVkY2M4MjZmNSBsZWdhY3ktdHJ1bmsKKzcxOTI5IDI1YzIwYTc3ZjM3MzNkOTQwMGQ5MWIzNWMwNzhkMGYwOTg4YmEzN2EgbGVnYWN5LXRydW5rCis3MTkzMCAwYWQ0MTUwOTRhMDUwNjE4ZDg1ODM3OWQyNjNlZGQ2ZDM4MzU3NjFkIHB5M2sKKzcxOTMxIDEyNzkxODEyNzg4ZGZlOWVhNWM1M2Y0YjAyMTgzNTJjNDhhMjM3MmMgbGVnYWN5LXRydW5rCis3MTkzMiBlY2FjYTcxNzdmNjY5NjFjNjk0MTJlNTBmYTkzMDhhZTZiYjRjZTQyIGxlZ2FjeS10cnVuaworNzE5MzMgNGU1YWQ1NjZiZmJiNWE5MzliMjRlYjMyNDBiYzQwMGRhMzIzOTdmNiBsZWdhY3ktdHJ1bmsKKzcxOTM0IGEwN2E5Yjc1OWYyN2MyNTZmZjNjMzVjNWMzYjA4YmM5NGY0Y2RkMzkgbGVnYWN5LXRydW5rCis3MTkzNSA5Yzk4NjA1MDcyNjUwNDgzZTgyNGJmYzY4MGYzODUzMjRjY2VmYzk2IHB5M2sKKzcxOTM2IGYxMTQyZGU0M2U3ZGVhOGZkZjM3MmVmYmMwZWIxNzkwMzE3N2FlYjMgcHkzaworNzE5MzcgODFhZWI4YmM2NTlkNTcwZjYzNjE3ZDFiODBhYTI3ZWUyOWFlZTIwOCBsZWdhY3ktdHJ1bmsKKzcxOTM4IDY5NDdiYzNkZDQzMzIxNjQyZmMyOGE1NWNjZTcxZDRmOGU2MzJjOTYgbGVnYWN5LXRydW5rCis3MTkzOSAzMGIwM2UxZGVhOGJiNzEyMDg3ODFjMjBjMmFlNDYxYTFmNDUyMjc0IHJlbGVhc2UyNi1tYWludAorNzE5NDAgMmNkZGFmOGQzYzNlMGM5OTMxMDdlMzk0NTY3MGFiOTNlNTU0ZmMwMSBweTNrCis3MTk0MSBhM2Q0OGIyZTk1N2RlOTcxYzA5NTVmOWViMzExODQyNTI1MWY4MGIxIHJlbGVhc2UzMC1tYWludAorNzE5NDIgZWYwYWM0MjY5OTM0MGI1ZDg4NzE1YmVmNjkxNTZlNDVmMzQ0YWFjMSByZWxlYXNlMzAtbWFpbnQKKzcxOTQzIDkzMzI5N2ViYWM3YmFjMjBmOWFhNjJmOWEyM2NiYzAyMGI4YjcwOTMgcHkzaworNzE5NDQgNzUwMTBjYWUwNDc5MDA3Njg4MmFmMjc5YjhiNDQ1ZmI5M2MzMzc4MCByZWxlYXNlMzAtbWFpbnQKKzcxOTQ3IDcyYmQ0NTBkNTM5ZjE1N2U2N2ViNmUxYjdkZGUxZWY2M2UzYjQ4YTggbGVnYWN5LXRydW5rCis3MTk0OCBjOTJlOTNhNTQyOThhODMwNGYxZWNlMTU0ZjRkMTU5YTZhYzJjNWNhIHJlbGVhc2UyNi1tYWludAorNzE5NDkgOGZkY2RmMGI1MDgwZWE5MmU1YWVkOTVkODNmYmExZDIwOWRiYzNmMiBweTNrCis3MTk1MCA5MTI0Mzg2NTVmOTMwNDA0OGJmOGNiOGNlZDkzM2FmNWQyM2M3NmNhIHJlbGVhc2UzMC1tYWludAorNzE5NTIgYTNhMjQ2ZGExNDRiN2QzNmJiMmJiN2VjZmNhYTY0MjAyZTgxMzAzOCBweTNrCis3MTk1MyA5ZGExY2ZjZDJhY2Y3ZjY3ZDI5MTAyOTQ2N2Q4MTg1NTNlMmIyMjg4IHJlbGVhc2UzMC1tYWludAorNzE5NTQgMTMzODE5YWU4MGZhOGFjZTE4MTU2M2E5YTJmYzEzYjc4YzEyYmFjNCBweTNrCis3MTk1NSAxYzJkMTFhN2ViMjNmNDEyMzRlZjE0MjMyYTc1ZDUwYmVmMzRhYjcyIGxlZ2FjeS10cnVuaworNzE5NTYgMTcyOTEzZTE3MDE5ZWQyOTYwMTU3ODRmYjY3ZmZjZDc4NjNjZDQyNyBsZWdhY3ktdHJ1bmsKKzcxOTU3IDczYjUwMmY1NzY5MDU5YzA5NDVkZTM4ZTAyMDQ4ODJiMjI4ZDNlZDggbGVnYWN5LXRydW5rCis3MTk1OCAwMDY5NGUwYzJlNmIyZWIzMWNiZmIxNWNlYjQ1NzQxZDIyZTM0ZTUzIGxlZ2FjeS10cnVuaworNzE5NTkgNTljNDExNDM3OWIzNGE3YjljZWNmYWNkNjA4OTM4YWE4MjY3ZTcwZCBsZWdhY3ktdHJ1bmsKKzcxOTYwIDY0MTEwYzBhZDUzMDVlN2I3MjVmYjliN2FmMzAyZjlkYWVkYTdlZjcgbGVnYWN5LXRydW5rCis3MTk2MSBkYjAzMDE2YmY2NTM5ZjQ2ZGQwNDY1NGI2N2Y2ZTlkNGEzMTgxMzMwIGxlZ2FjeS10cnVuaworNzE5NjIgYTE1YzI4YmZiYjM4Yzg2YmJiNjdhZjMzZGU2M2U2NTY1NjQyMWE4NyBsZWdhY3ktdHJ1bmsKKzcxOTYzIDc1OTYzMzcyYjcxNDlkOTY2MTRhZWYwOTQ2NjlmZmE0MGNhYzZjYTEgbGVnYWN5LXRydW5rCis3MTk2NCA1OWExYjAyZGU5MDY3MTIwZjJkNDQwNGFiOTE0MTZmOWFhZDEwOGU3IHJlbGVhc2UyNi1tYWludAorNzE5NjUgNzgzNWFkYTNjZGEyYzZhYmQ2YjhmNTBiZWI1ZDExNGYwMzU4N2QzOCBweTNrCis3MTk2NiAxYTVkMWQxYzk0NzhhOTRkMzk4ODc0ODlkN2M4Y2JlMjFiOGE3NWNlIHJlbGVhc2UzMC1tYWludAorNzE5NjcgZjc2NTcyMTA4ZGQ3YTQ1MjgwNmVjNTFiZmIxNzdjZTRjYmM2OTNiYiBweTNrCis3MTk2OCBiNDVhMzIzNTVkMzc4Y2NjODg0MTRlZjc2M2JjMGVmMWFmZGVhNTlkIHJlbGVhc2UzMC1tYWludAorNzE5NjkgMDFjMzM2M2EzNTdmOWZmNzE2OGIxZGM2MjNkY2MyNzZkOWIxNGUwZSBsZWdhY3ktdHJ1bmsKKzcxOTcwIDQ2MzNmODUzN2JiNzdjN2Y1MWM0ZTNkZDY0NWQyMTg2N2IyZmJmZWQgcmVsZWFzZTI2LW1haW50Cis3MTk3MSAzOTEyMGNjN2UzMjFlZTgwODYwOWQ1MTg0MjU3ZmZlNmRkMDhiYTE3IHB5M2sKKzcxOTcyIGZiNGJiMGEzODU2ZTFiMDQ5MjIwNmFkOTE0MDk5MjQ0ODdkMTJmYmEgbGVnYWN5LXRydW5rCis3MTk3MyAzNTViZWIwYmQwMmJlYTM4N2RjYjM5NzJhMDc4NmRlZDU2YTQ3NTZhIHJlbGVhc2UyNi1tYWludAorNzE5NzQgNzIzNzczMDQyNWZiMzczZmQyYmRlYWM1NDc5MWFjZjBjZDNhMTE1NSBweTNrCis3MTk3NSA5NTFhNjJiODZkZThiOTljZTQ2ZGVmYjY3OTA3NzFhNDVjYTE0YTJiIHJlbGVhc2UzMC1tYWludAorNzE5NzYgYmZiNDdiYzFkMDUxMTQ0MThhZDdhZDhhNjA2YWVhYjc4ZGYzYThmMSBsZWdhY3ktdHJ1bmsKKzcxOTc3IGY3ZWNjZjc2OWMxYWUyZGY5ZjU4ZjBlZWUyODgzMmFjNjgzYTk1NjEgcmVsZWFzZTI2LW1haW50Cis3MTk3OCA3ODVlYTI5OWZlMjM2ZGI2MTMzZjQ5ODczNWNjMzgyNDg4ZDJmYmU0IHB5M2sKKzcxOTc5IDMxNjJlYjA5YzJjM2RkYTdkZTJlMjQxNmYwMjljZjMyZjFjNjNlMTcgcHkzaworNzE5ODAgMDIxYzM5YTM3ZWRmNzYxNWRhY2Y0ZGE0MDIyNDFhM2U0MmE4NWRjZiByZWxlYXNlMzAtbWFpbnQKKzcxOTgxIDU0ZWU2ZmQxODFmMmNhNzMzNTU1MjNhNWZlNjU0OGZhZmFjOGM0NTEgcHkzaworNzE5ODMgOWY2MGVkYmE1YWVhYmZmYjcwMzVmOTFlMjhlM2FhYjI0MjFiNDhkYiBweTNrCis3MTk4NCBhYmRjMTc2NGQ4ZTVhMWFkMDFjN2VjODMyZTdkYTgwMzQ1MjViYzBjIGxlZ2FjeS10cnVuaworNzE5ODUgMDY4OGU4YjI0NjMyNmEwNjgwNjFlMjE2MzVhNmQ5NmQyZjkwZWQ1MyByZWxlYXNlMjYtbWFpbnQKKzcxOTg2IDBiMTY3NGYyN2I3MGZhMDRjODUxM2M2ODJhZTQ3NDc2Y2Q4NjliMTggcHkzaworNzE5ODcgNWQ0ZmMxNjZhM2Q0NjE0MDY4MzAwYmVhMTRhNDRlZTcwMjliMThjNyBweTNrCis3MTk4OCA0NTZlNTg0MzAyMDIwNmM3ZDdmNTNhNzY4NzIyNTgzY2MyNzVmYmRkIHJlbGVhc2UzMC1tYWludAorNzE5ODkgZGUxZDBmNzFlMjA5YjUyYjBkMjY1MjRlYThmMjdiODQ0MTlmNDU4ZCBweTNrCis3MTk5MCBlY2MzZWIxNTY0ODg4Yzg0YTZlMjUxNDg2N2RhZTQ1NWY2NDU2MjQyIHJlbGVhc2UzMC1tYWludAorNzE5OTEgMzgzZTMyYWI2MDdjNGFjMWJlMzc2ZjljYzMwMzRiYjUzODhhM2U3OSBweTNrCis3MTk5MiBlMGQ0NWQzMmZiODI0NDI2ODhmNzM4OWY0NjdmNDBiYTM0YWY3MmEwIHB5M2sKKzcxOTkzIDM1ZDczYTk4ODAzOWZkMTMzNmVmMDc5NmVmZGQ4Yjg3N2FkZWVjMTAgcmVsZWFzZTMwLW1haW50Cis3MTk5NCBjYWYyYjkxZWYwNmE1OWNmODQ0YTlkZjI1ZmE0ZTEwY2QzM2NlNmI2IHB5M2sKKzcxOTk1IGQyY2ZkM2QzYmM1NDhmNGY5NWFmNzllZDMxMjkxNmY5MGNmZjc0MDEgbGVnYWN5LXRydW5rCis3MTk5NiBjNDJiN2RkMTU1MDVjZTk4MTYxYzllZDNkZmNiZGYwNWQwYTlhOGM4IHB5M2sKKzcxOTk4IGQzMWJlOGM5YzhhMjliZjkxY2U3NDNiNjMyMWE1MjQ0N2Q4ZTI2ZmQgcHkzaworNzE5OTkgMWZjYTFjOTMyNjk2MjUxNzNlZjM5NjI2ZmNiMThjNTJiNThjZjBhOCBweTNrCis3MjAwMCBmYjg5OTgzMzUzYWQzYzNjZjhmZGExYWMyMDRiNGM5ZWY5Zjc0NGRlIHB5M2sKKzcyMDAxIGQwNTk0ZTdhNDVkNjM2OTM3MmQ5ZTViYjhhNWJiM2E5NGE3YTczYzAgcHkzaworNzIwMDIgOThhYTYzMWRhYzJiY2QwMWRjNmQyMmZmY2UwN2UxMzZlN2E3Yzc1YiBweTNrCis3MjAwMyA1NTNjYWY2YmFlNDdlMTBhZGE5NDVmNTQ4NTc4ZGNjMDgyMmZlZjAwIHB5M2sKKzcyMDA0IDk3M2QyNGY0NGIwN2Y2MDg4NjFmYTY1NDUzMzVkZTQ0M2ExMDc3MjggbGVnYWN5LXRydW5rCis3MjAwNSAyOTNhZGExZGJmZGFkZTI0NTNkYWFmMjA2MTdiZTcxZjVhMDdiNDZhIHJlbGVhc2UyNi1tYWludAorNzIwMDYgMTc1NDBhMTY0Nzk3OTk1NjU4NjA1ZDBlMDQ0MDFiZGRlYmJjZDYwMiBweTNrCis3MjAwNyBkMDUxMzRhNGYwMmNlNTkyODhlOTY2MWI0MzhkNzY2ZWUxOGEyN2Q0IGxlZ2FjeS10cnVuaworNzIwMDggZjUyMTU5Zjg3MzMyYmJiZjIxOGYxYTRjN2ZiMDFmMDc0ODllMzI5NCBsZWdhY3ktdHJ1bmsKKzcyMDA5IDU3ODEyOTQ0Yzk2MWI3ODk0NDVhNmRlZjUyZjMyYTgzOWI3NGJkNDUgbGVnYWN5LXRydW5rCis3MjAxMCBjYzBkZmYyYmYxYzJlNmQ1M2ZjNDZlNjAxNmZmMjEzNDlkODFhNTA4IGxlZ2FjeS10cnVuaworNzIwMTEgYmY3ZjM0MDczNDE4YmVkYTM2ZjdjZjViMTI2MjdkYWJhM2VlZDgzYiBweTNrCis3MjAxMiAxMWE1NDUyZTMzMDVlNjA3NGM1ZGYyYmNjMmZjNzI4MzBlYmFjOGQxIHB5M2sKKzcyMDEzIDliNDUxZmE1ODUwM2E1MzQwYjk3YTk0ODFiNWViODJiNTllMzFlMzIgcHkzaworNzIwMTQgZDM3YTRjNWQ2ZDJiNTM4YjFmMTM0NmQ2ODE4ZjcyNGM2NTJjM2FkYSBweTNrCis3MjAxNSAzNjJiNGFlMjEyOWE0ZjIyYjBjMTlhN2NiZWI2OGU0ZDc3MzI5N2I5IHB5M2sKKzcyMDE2IDgwNjhhYjUxNjMyZDYxMzFlNjMzZGU1YmZjNGI2ZTdjNDMyYjY5YjkgcHkzaworNzIwMTcgNzQzMjExYjYwYzk0NjdmMThhNDRiZDBjOTViYTE5NTY3ZmFkMzc1YSBweTNrCis3MjAxOCBjZTdjMzUzYTFlOTZiZGEwOGMwYTkxNDEzYTZmMGI3OGY2MmRhMTE3IHB5M2sKKzcyMDE5IDdmYWE4YTdmODYzZTFjZmRlMWI5MGU3MTE3M2ZlMjdkMzFiYmZlYjUgcHkzaworNzIwMjAgOTg4ODllZjE1Nzk1ODg0ZjQyZDY4YjRiMGZhMGI1YjRjYTdiYmY0MCBweTNrCis3MjAyMSBlNDhmODYwYTVjYWMyMGI1OGU5ODE4YTRmYzhhNWYyOGMxYmQ5MTVkIHB5M2sKKzcyMDIyIDZiYmRhMTg1MTczMmUxNTUwY2U2MmQ3MWExNzEwMmZmYjE1MTg2NDkgcHkzaworNzIwMjMgMjE4MDAwOGQwMmVlYTJjM2E3NDVmMGVmNDBhY2JhNDk5NjE4MjZjZiBweTNrCis3MjAyNCBlYTRlMTkyZDk0MTQ3YjQ4YTUxN2Y1NDYzMGVhZDg1MWE4MDA3Mzk2IHB5M2sKKzcyMDI1IDRhYmM0Y2E0NDYxZmRiZWQwMTQxMWE5Y2NmZTZjZmVjZjcxODdlNzIgcHkzaworNzIwMjYgZDU4MDE3NTk5N2NkNTA5Y2E4MjAxOGQ5Y2ExZGQwZjg5ZmYxMDM1NyBweTNrCis3MjAyNyBmOTQzZDgyNGM4YzM1ZGQ3NjJkYzNhMzA5MGIxMmVjNjczMGZhYTRiIHB5M2sKKzcyMDI4IGYyZDcxMGU0NzllMmVkYTcyMWYzMTY4NzRiMzBmZjYwNzNhZDgwODkgcHkzaworNzIwMjkgNzFhMmFhZDViYWQ2NTVmZTRlMTZiYmY5NzM2NTM2N2M4ODUzMWNmZiBweTNrCis3MjAzMCAyOTM1NGM0OTUwZTQ5NDY4M2M3YTg0Nzc4MzU2NzAwYTgyZjQyZDgzIHB5M2sKKzcyMDMxIDAxZDBiZDk1MGNjZDEzNDQ1M2RlMWQxOGFjZmY5Y2E2NDg4ZjU1MjggcHkzaworNzIwMzIgNDFmYTFhMTA2MzczYWRiMjVkMzg4ZDgxOWU1YjE4YmM4YTkwYTE2OCBweTNrCis3MjAzMyBjMjVlNWE5NTU0ZjUzMDkwNjZhYWZlYmI1ZWY0OGZlMjdjM2ViMzYyIHB5M2sKKzcyMDM0IDk3NTA2NjcyYWZlM2ZiNTI0MmM1ODgzYTg4NDY2MTA2YmI0ZGJhOTIgcHkzaworNzIwMzUgMmNlMjZjNDY3OWNiOTc1ODNiMjNmZTMyYzJiMjkyZTZlZDg2MGNhMyBweTNrCis3MjAzNiBjNmM0YzA2M2Q4NzQwZWYyNTIwMWZhOTNhODUyMmU4MjNjZTk5MTQxIGxlZ2FjeS10cnVuaworNzIwMzcgOWUwOTc4M2NlMjI4OGRlZmFkMTAyZmQ0MjIyMmFjZDNmODhkNWNmYiBsZWdhY3ktdHJ1bmsKKzcyMDM4IDVkNzUyMDNjODcxMzkyY2VmYjZhMzNmYTAwNTIyNjkxOWNhMWZmODMgbGVnYWN5LXRydW5rCis3MjAzOSBiNGViYjMwMGU2MTE5YzBmYmZjNzFjYzY2N2IxZWRlMzg3ZjY1OGIwIHB5M2sKKzcyMDQwIDRiZGQ4NDdiNTdjMjdhMjVhMmVkZDY3ZGY0ZGE2NGM0MmU0YjBkZGEgbGVnYWN5LXRydW5rCis3MjA0MSAxZjk1YmE0ZDFlY2IxODU5ODYyMTVjMThmYmZmZDhjYWMxOGQ1Y2U2IHJlbGVhc2UyNi1tYWludAorNzIwNDIgMWE0NTFmZjY1ODNjNTQ4ZjhiMDY2NDcxMzUyZTQ0NTE2NjdiNDVkZSBweTNrCis3MjA0MyA3OGRmYmFmNjNiMTdjOTM5OGExNDIyYzIxYzI5OGQzYTg0MjQ1ZTBjIHJlbGVhc2UzMC1tYWludAorNzIwNDQgNGI0YjU5ZjI3OGJmMzM4Y2IyNTMyMjZkZDRiZDgwZTJlZDRiMmI3MiBweTNrCis3MjA0NSBiMGNjZjJhY2ZhMWU2OTA4MDg5ZWZkYjljYjA2MjE2YjI5NTQ3YTVmIGxlZ2FjeS10cnVuaworNzIwNDYgNTQyNzkxNjMzODlkNDVmNDdlYzViOTI3YWE2OWVjNzg5NjNjNGQ4YSBweTNrCis3MjA0NyA4NDUzN2RlZjQ1NTA1MDE5NjExZGY5M2Q1YTU5N2U4ZmZiNGM2NzFiIHJlbGVhc2UzMC1tYWludAorNzIwNDggN2MzOTU3NGFkMDM3NTQxNmEyYWFhYWE0MjY0YWU1MGQ4NGUwYWVmMCByZWxlYXNlMjYtbWFpbnQKKzcyMDQ5IDc4ZmQxNWUwNTI1ODQwNzBjYTJjZTJkMmQxYjllMDk5NDBmNTc5ZjEgcHkzaworNzIwNTAgZTU2ZmRiYTYxZTk3NWYxMTg0OTMxNjgwYjc4ZjIyY2E5ZDcxNmNmZiBweTNrCis3MjA1MSAzODUyMmVhMmFkZDBhODc2MjZlMzE3ZDljYzJjZDM2ODRkYTViYjdhIHJlbGVhc2UzMC1tYWludAorNzIwNTIgMWMwNjBkNWM0N2NmMGFlZGFjN2M3ZTRmMmFhNTBkN2RlYTQ1ODhhNSBsZWdhY3ktdHJ1bmsKKzcyMDUzIDJiMzk0NWQ3NTVhN2ZlNjFiNzhmNWRlMmUwOTNiNjI5ZTdlZDA1M2MgbGVnYWN5LXRydW5rCis3MjA1NCAwMTkyNDRmNGIwZDBkMGU1ZDkzMmY2ZTU0MDFiMTFlNGRjODEzYzZkIGxlZ2FjeS10cnVuaworNzIwNTUgNDIzZjhmOWIwN2IxNGE4NTQ0YzVmZjMzMDlhNmQyODlkY2RhMjg0YSBweTNrCis3MjA1NiBkOWI5NDIyYjQwOWM4OTg0MDFmOTgwZmRjOGYzNGJjOTE4YjFhOGY4IGxlZ2FjeS10cnVuaworNzIwNTcgOTdjZmY1OTNhMjU3ZTlkNWJhNTgxZjU5ZGU0YTE2ZmQ3YjJmYTkzOSByZWxlYXNlMjYtbWFpbnQKKzcyMDU4IDZmMTU4OGZiNzU5NWUxYjIwZmU2ZDZmNWM3ODU2ZTU0ODEwYjM4NTIgcHkzaworNzIwNTkgYjBhZTlmZmM3Nzc5ZmQ3NTAzZGM0ZmJkNDIxMTVlOGMzMDY5M2Y1ZSByZWxlYXNlMzAtbWFpbnQKKzcyMDYwIDMyNDYwYjA0ZTdiNmUwZDUwNzcyOTJhNzY1Y2VhNWI4OTUxM2FkMWQgbGVnYWN5LXRydW5rCis3MjA2MiA3YjIwNmUyYzAwOTJjNGIyYmI4MWZmMzk4NDEzZDQ0ODkwOWI4ZmQzIHB5M2sKKzcyMDYzIDRhZjJiZGM5YjFiNzM1NTc5NWY2OTc3MmRhNGNiODMwY2ZiZGUyMmMgcmVsZWFzZTI2LW1haW50Cis3MjA2NCBjYWJjZWY3ZTZmMjU2Y2QxODI1OGE1MWI1NTA2ZjI0OTlhODYxOTY4IHJlbGVhc2UzMC1tYWludAorNzIwNjUgMWVjNGJmM2RkZGE2ZjVlZDI5M2E5YjliZGRkOTNmNTc2OWNmNGVlZCByZWxlYXNlMjYtbWFpbnQKKzcyMDY2IGRjYmMyMjAzYmRmMzYyNzZiMmM4ZDA3MTY5NTI5ZGVlZmQ3MDc4MjMgcmVsZWFzZTI2LW1haW50Cis3MjA2NyBkNjVkYjE2OWUzYWQ3MTUxNmUwNGE4ZWVjN2JiZmUzY2U2YmI3ZjJmIHJlbGVhc2UyNi1tYWludAorNzIwNjggM2YxNWEwNmQwMDQ3M2FjOTQ2MzJhMzhmMTI0NGViNGJmOWZiNGRmZCByZWxlYXNlMjYtbWFpbnQKKzcyMDY5IGJmMDUyMjJjMDc0MDBlMjFiNjJkZTkxMGVjNmFhOGFkZWI2Y2ZkZTggcmVsZWFzZTI2LW1haW50Cis3MjA3MCBmN2EzOWU2MTllMGExZjYyZjg1NTBjNTMwNDQ2ZjI2YmI1NTY1MDIyIHJlbGVhc2UyNi1tYWludAorNzIwNzEgMDJkNmYzYTY5NzdmNzhiNTg4NWUxZTJkNDQ5ODExMDFjMDc1ZmZjZCByZWxlYXNlMjYtbWFpbnQKKzcyMDcyIGYyNDY3MTUyODk4MGU3YzM0MzI3MDhlMTUyODFjMjNiOTNiZGZjN2UgcmVsZWFzZTI2LW1haW50Cis3MjA3MyA3MTRmOTVlYTZiOGY2YzhjNzhlZTRiODk3YmQ5MGUyMGUwYjYzZjdiIHJlbGVhc2UyNi1tYWludAorNzIwNzQgMzZlYjUzN2FiYjE3OTM2MmY0YWZlM2I0ZTE2OGNlYWI3MGM1Nzc4MyByZWxlYXNlMjYtbWFpbnQKKzcyMDc1IDUwM2YwZjQxZjM1ZjkxYWY0MjU0YTBhNGE4ODk4YmRlYTBlYmRiZmMgcmVsZWFzZTI2LW1haW50Cis3MjA3NiBiMjhkZGViYmQ4MzU1NzU5ODljZTQ1MzUzMjFmNDExYjIwMmM0YmExIHJlbGVhc2UyNi1tYWludAorNzIwNzcgNmYxMGQ1MjVlM2I4NGI1MzAyYTQ3YjVhYWI3NDA2OTY3M2M3YmNiOCByZWxlYXNlMjYtbWFpbnQKKzcyMDc4IDMxNjZkZWQ2YmM0YTI2YzJkMTlhMDg5NDY4OTExMWMyNzUzYTg4MzYgcmVsZWFzZTI2LW1haW50Cis3MjA3OSA5ZGMzNGVmMjI3MzUzODI3YTQzN2FiMTQ0YTljYWU5OTdhYWU5MmQ1IGxlZ2FjeS10cnVuaworNzIwODAgOTAwMGY5NjZjY2JiYmYwMzU4NWZiZDRlNDMyYmM5Y2RiMDAwMzI2YiByZWxlYXNlMjYtbWFpbnQKKzcyMDgxIGUyODQzYjY0MTc1ZWNkNjk0ZjBkZTc4ZjFlMThkMjQzZTFjYWVmODUgbGVnYWN5LXRydW5rCis3MjA4MiBjOGY5NDAwN2IxYzQ2ZTBlMTllM2UwM2EyMzc1Y2NkYTE1NmZlMzRmIHB5M2sKKzcyMDgzIDIzMmQyMjUwZDcwMzU1ZGZkMzAzMWRlNTA4ZDE4Yzg3ZmI3MTkwMmIgcmVsZWFzZTI2LW1haW50Cis3MjA4NCAwMjViYTEyYzdkYTU0MTg4MDhmMDRmN2ZmN2Q0Y2I3NDMwYjBjMzFkIHJlbGVhc2UzMC1tYWludAorNzIwODUgNzQ1OTAyM2ZmODYxYWU1ZmFjZmE1NjIxYzY5MGQ1ZDQwYTE4MDFmMCBsZWdhY3ktdHJ1bmsKKzcyMDg2IDdmZGE1YWYyYWY3ZDEwYzY2ZGQ2NjRkODY5YTZiYTMyYWYzMmYyZDYgcHkzaworNzIwODcgYTM4ZDZjZDlhYTYzNjljZmZlMzJmMGYzMmMyNjc3YTFkNWFhNjE1MSBweTNrCis3MjA4OSAxNDY5ZmIxYWVhOTI0ZGRjZmM4ZjZkNzI5YjA0M2EzY2NmZmY2YmM5IHB5M2sKKzcyMDkxIDNiNGNlYTQzZjllNjM5OTJjMjFkZDkxZmY4YTkyMDAxYjM2MmE3NmEgcmVsZWFzZTMwLW1haW50Cis3MjA5MyA4MTdkOGIyOGNkNmIzZTI2MzM2NmQ2ZjUyY2M2YWI0NGE2MTkzMjYzIHJlbGVhc2UyNi1tYWludAorNzIwOTQgOWMyYWMxZWYzYTZmZTRkN2YzN2EzMjUxNmM2ZmYyZTgwYTlmYTE3NSBsZWdhY3ktdHJ1bmsKKzcyMDk1IGI0MDg5NDJmYjQzNTM5OGU5YTIxYjI2ODJkMTMzNDc0MGE5MGRkNTAgcmVsZWFzZTI2LW1haW50Cis3MjA5NiA2OWJlYTI2ZWM4N2I5OTM3ZTU2NTg3ZjQ1MTZkYWE1ZDUxMTgxMGIxIHB5M2sKKzcyMDk3IGNlYTY0MWZmNDUzNGMzOTBkYmE0MzI5MDJiY2EzYjRjNDZmYzJkNmUgcmVsZWFzZTMwLW1haW50Cis3MjA5OCAzZGZiYWM3OTljZjUxYzkxYmEwOWQ2MmEwYjg3Mzc0ZTQ4MTIxYjdiIHB5M2sKKzcyMDk5IDAyMDY4ODc3YzE5MGIzZDc3OWFhYzZmM2I0ZDA1MjBkNjY0NTNlMjUgcmVsZWFzZTMwLW1haW50Cis3MjEwMCA0ZWY3ZjkzZDYxYTFhOGQ3MDVmNmU4OGJiNWVlNWRjM2NkYTA3MTk1IGxlZ2FjeS10cnVuaworNzIxMDEgODYxN2U4MTAxNmI2YjBjMWM4OWRjOTQzY2JjN2YwNDY3Mzg4NzZiMSBsZWdhY3ktdHJ1bmsKKzcyMTAyIDVmODFjNDViZGY2ZDEwMTgwODA2YTQzYjYxYzk1Mzg0NjY1OGYyNTQgcHkzaworNzIxMDMgYmE2MzhkM2E0OWQxNWY1ZGY2OThhNWRjZmU0YTgxMTFhYjE2NzMzNiByZWxlYXNlMjYtbWFpbnQKKzcyMTA0IGU5NWM4NzhhYzc5YWU3ZDc5OTk2MzU3ZDQ3ZTE3YTA0ZmVhODVjY2EgcHkzaworNzIxMDUgNzM3MDJhYmUxY2I5NzE4NDgzYjUwMzNjNGEzN2ZmNWFmMWQ4N2YxNiByZWxlYXNlMzAtbWFpbnQKKzcyMTA2IGI4NjMzYzc4OTNmZWY0MDJlZDQ2NjliZTM1N2M0ODQzMmIwMTNkODUgcmVsZWFzZTMwLW1haW50Cis3MjEwNyAyZWYyY2I1NzczZmUyZTRlYWVhZGNkYjQxOGJlZGQ4NjU2OTllNTIwIGxlZ2FjeS10cnVuaworNzIxMDkgMzc1OTgzOWI5ZmE1NDhiY2UwZDQwMGJjZWEyZWY5MWZhYjgxMDBkZSBweTNrCis3MjExMCAyMTgwMzA3NWI0MTExNTc4MDZkNzU3ZmY0OWVkOTM4YzBkMWI4MzI0IHJlbGVhc2UzMC1tYWludAorNzIxMTEgYWU3ZjgyYmJmMTZjOGU2ZGYzYWQzMDMyZjgwNDdlYmQxOGRiYTUwNiBsZWdhY3ktdHJ1bmsKKzcyMTE0IGEzODE0ZGM5OWI4MGQxYzIzZDljZGVjOGNkNWYwOTdjNjFmMzg0ODkgbGVnYWN5LXRydW5rCis3MjExNSAzZDZiYzQyNjQ2YjUxZTBjMmYzYmQzMjIwMDhmMDY4MDU1Y2MyNGU3IGxlZ2FjeS10cnVuaworNzIxMTYgYzg1NWRmN2M2YmI1OTEwNTBiYzhhMDIzMTgzZTU3NWE1MzVhZDQ1OSByZWxlYXNlMjYtbWFpbnQKKzcyMTE3IGNjZjc4NTNiMDc5MzI0NGJmZmM1NDJmOGQ0ZWEyNzY2YzM1MzJjYzMgbGVnYWN5LXRydW5rCis3MjExOCA2NDdhMDQwZGY0ZDExY2Q0NzE5OTk5MGQzYTJiMmMyYTMxY2Y2ZDZmIHB5M2sKKzcyMTE5IGEzZmNjY2VlODk1N2EwZTZhMWE0ZDU3YmJhYjM3NzRjNTM5MTMyN2QgbGVnYWN5LXRydW5rCis3MjEyMCA0MmVmNzZmNTQ0ZmJmMjFiNmU2MzQwMzA1OWU2MzIwMDU0M2YzZGY5IHJlbGVhc2UyNi1tYWludAorNzIxMjEgZmUwNjIxODc2MjRjYmU3M2MzMTc3ZDZkMDMxZDY4MjdlMDBmZTI5OCBweTNrCis3MjEyMiA3NjE3ZmE3MTY0ZGU2ZGM3MTQwYWI5ZTlhZDhiMGMxODZjMTYzMWIwIHJlbGVhc2UzMC1tYWludAorNzIxMjMgY2NlYmJhZDVmOGRmZmU5ZmQ4ZGJmMWM2OTU5ZTIyOGFjNmFmY2MzMSBweTNrCis3MjEyNCA5M2ZlNjExY2JkM2FhMTJmMWZkZmUwZTIxM2M1MjUzMjgyY2Y1MDQxIHJlbGVhc2UzMC1tYWludAorNzIxMjUgYjM5Y2IyOTIxOTQ1NzNkMWJiNDBhMzhmMWNmZjY3MmYxZDRmODE1NiBweTNrCis3MjEyNiA0NzYyMzk0ZmMyNmM1MmMxOWI5MzAwZjgwNDg4ZDIzNmIxNWVmZWFhIGxlZ2FjeS10cnVuaworNzIxMjcgNWQ5NzcxZDdjYzQ2YzdmMjhiNDYwYzE2Y2VkMDFlYzQ4MmRiZDdiMSBsZWdhY3ktdHJ1bmsKKzcyMTI4IDhhODU5YWM3ZTViODFlMTliZWNjYWUwNmRkNGZjOTVmMzQ1NTlkMjIgcmVsZWFzZTI2LW1haW50Cis3MjEyOSBlMjc0NDlkZTYxZGI2NDhjNTQ3NzBhNmM4ODBjMDMyNjRhYzBhYzcyIHB5M2sKKzcyMTMwIGU4OTQ0MzNjNjQ2NDBmMTk3ODdjMDZkY2E1YTdhOTYxNjQwMWQyMmQgcHkzaworNzIxMzEgMjdjNmI2M2QxZGIzNTVmNjg3NzE3NWQzZGMxNzZjOTBhN2RmNDAxZiBsZWdhY3ktdHJ1bmsKKzcyMTMyIDQxMTM3NGM1YWE0MjI3OGQzMGYxNmEwNzIxMWJhZGFlYjVmNWYyMjUgbGVnYWN5LXRydW5rCis3MjEzMyA5NGNkZmQwN2Q0ZjQ4ZDcyODUyNDhjN2MwM2JlMGU0OGQ1ZjRiYTczIGxlZ2FjeS10cnVuaworNzIxMzQgNzlkYzhkNTg4ZWIzMDY2YzI5OGJmNDc5ZTkwN2E4NTdhYWVjNTk2NiBsZWdhY3ktdHJ1bmsKKzcyMTM1IGQ2ODJjOTM0Njg0ODA4ODMyODI1ODQyNDYzNjQ0YzJjOTJiNmYwYTIgbGVnYWN5LXRydW5rCis3MjEzNiAwZjJiMzM1NjY4ZWViYzhmZGE5YTNiMTIwODYwYmEwMzE1OGU4ODMyIHB5M2sKKzcyMTM3IDM0ZTdjMWIxNDQ5NTAxYTE4M2UxZDhiMWExOGRkZTg1YmI5OGY4NTkgbGVnYWN5LXRydW5rCis3MjEzOCBhMWVmYWYwMTUxMDAxNzQ3MGJmY2RhZWE4MTQxY2MxNGNlZjU4ZmJhIHJlbGVhc2UyNi1tYWludAorNzIxMzkgNDBkMzQzMWRiMjQwODU1YzQzZmI1YWJkYThlMWYyODc3NmIxMWJiNCBweTNrCis3MjE0MCAyY2RlMGQwMDNmZmMwM2U4MDEwYTFhNmRhMWZlZmQ3MTQwY2ZkOGRlIHB5M2sKKzcyMTQxIGQ2Njg4ZWQwNDBjZjM2YjRjYzIxNmY2NGMzNTgxNzc1YWNiYzY4OGEgcmVsZWFzZTMwLW1haW50Cis3MjE0NCBjNGExYzQ4ODQwNTZkNDliOGQ4MWVhYWVhODVkZWY3OTg0ZDNhZTJmIHB5M2sKKzcyMTQ5IGFiYzgwZjhiMGRmZGMxZmZkZDVjOGQxZmYwMGQyNzRmZDM3NWFiNDEgbGVnYWN5LXRydW5rCis3MjE1MyBlZDhjMTM5NWQwMzMwY2RmNzQ2YTJiNWVlZjI2MWM0N2E1YjdjMGY0IHBlcC0wMzgzCis3MjE1NSAyOTY1NmEwM2NjZTJmYTRjMTA0ZDgwODI5ZjFkY2JkYTg0ZjAyOTQ0IGxlZ2FjeS10cnVuaworNzIxNTYgYmM2MGRlMjMyMjAzMWNlZDViNDc4OTkxZjdiMmEwNTczM2UyNzNlMyBweTNrCis3MjE1NyA0Yjg2ZTUzZjkwMDZmNjE3MmE5YjljZDI2ZDI0NDZjNzkzNDgxY2Y2IHBlcC0wMzgzCis3MjE1OCBiZGFiN2NjZGM3YjQ4NjQxMWNkNDg0NjhiMmZlYWViOWExOWYxMzg4IHBlcC0wMzgzCis3MjE1OSBlN2E5ZTJmZDcxM2YwMjQxNzBhODQ1MTZkMzZhOTU1MjVjZGQ2ZDY0IGxlZ2FjeS10cnVuaworNzIxNjAgMDkzNWUyNGM4MWMwOGQ1ZGRiNzYyNzM0MDMzMzJkOTA2MWIzZDI2MCBweTNrCis3MjE2MSBlMDhlODBlNzY4YzExZjA5NGYxYjQwNzA3Mzk1MzQyMWJmNmExODczIHB5M2sKKzcyMTYyIGE4MGIzYmI0ZDFiMGRiMjY1Njg3NmIxZTNmMDM0Y2UxMTAzNDIxZjMgcmVsZWFzZTMwLW1haW50Cis3MjE2NCA1NGM3YmEzZGRmYzY1NmVmMWRkMzliZWZhNDczYmIzNDc4MTYxZGU2IHBlcC0wMzgzCis3MjE2NSA2MGQwZjM3M2E4OTQ2YTIwYTBkMDI4YjgwNGRiY2U0ZDVkMjViZmY5IHB5M2sKKzcyMTY2IGFlYjkxNDE5M2I0NWE2MGExZDdkZDRmMWFhMzE3ZDE4Mjg5NDJlNTkgcmVsZWFzZTMwLW1haW50Cis3MjE2NyA4NTU0MjcxNWEyNDkwYmQ2MWI0ZTVkNjAzMThjNGY2MTQ0NWU0NmM3IGxlZ2FjeS10cnVuaworNzIxNjggNjM0ODBiOTJhNWUxMjVmOGQ5YmYwMzE2N2Q5M2E1YTI4OGMxMDZiMiByZWxlYXNlMjYtbWFpbnQKKzcyMTcwIDk2YzA0ZTZhNmQ4ODJkMzZjNTIwNzU0YTE3YWZkMWJkZjg5YjRjMTYgcGVwLTAzODMKKzcyMTcxIGNjNjlkM2RmZjg3YTIyMmFhNzVlYTQ0OWY0Y2RjMmU0YmVkNTM4NmEgcGVwLTAzODMKKzcyMTcyIDVjNTViOWM4MDg0NmE0ZDFmYTMxNDZlZWQyNmU5MTJiMjRkMmFkNTEgcHkzaworNzIxNzMgOTYzZjBmNTE5NzA5NTVlYzc0NDIzMDFmOWEwYzk5YzA3OTk4OTI2NyBsZWdhY3ktdHJ1bmsKKzcyMTc0IDk4NjUxZTRmNjVmZTU5YWEwNzU5Y2Q1OWEwODA2YjU0Nzk2Njk2NWIgcmVsZWFzZTMwLW1haW50Cis3MjE3NSBiYzA0Y2ViY2E3ZTZiNDI5ODNjZTdmOGQwMWU4ODc2ZDkyYWNiMTFiIHB5M2sKKzcyMTc2IDg5ZDVlZjgyYzAwNjc3MGNmM2JmNjhhZjI0Y2RkNDUyZmVmMTc4YWIgcHkzaworNzIxNzcgMDFhZWQ0ODE5NmIwMjhlYjkxYThkNzg3ODgwNTBlOGNhYWJhMjdkZiBweTNrCis3MjE3OCA0MDk0NDhkNDU1ZTNlNDI2MGVhZmM5YzcxMTFjNmNlNWMxZWU4NDY2IGxlZ2FjeS10cnVuaworNzIxNzkgOTYwZWYwMGQ1MjE0MTc3OWQ4MjQ5ZGZhZGJiMzY3ZTJmOThhY2E5ZCBweTNrCis3MjE4MCBiMThiZDFhNDk0YzcxZjA1NTk2MjU0NDFkNjliMDQ2MzllODIxYmE1IGxlZ2FjeS10cnVuaworNzIxODEgMjI4MDM2NWVhYTcyYzEwNzQ2ZDc0M2JmNzFkMGI4NDY0ZTE1NmU4NSBweTNrCis3MjE4MiA5NTA2MWRhMDZjYjg0NWI3OTAzZjRiYjU5NGM2YWRkOGYwMDVmYjQzIHJlbGVhc2UyNi1tYWludAorNzIxODMgODk2M2NkODU4YWQ2MTA2YTYzYzUzMDdmZWUwMzllYTQzYjEzZDlkOSBsZWdhY3ktdHJ1bmsKKzcyMTg0IDhmYjE5Y2E2MmU3MGRmYzVmOTY3OWVlYzdiNzUzZWQ2OTE3OTE5YWIgbGVnYWN5LXRydW5rCis3MjE4NSAxMzU1ZGFjMjM4ZmVjYWViODI3MzFjMTZmMjcxYTJhMDMxMzAzNjhlIHB5M2sKKzcyMTg2IDBkODE3ZThlZDNlYmY5ZGY3YWJhZmZhMDkyYWJhYjU1NDIxNGJmODcgcHkzaworNzIxODcgNDJkMjhlNWRjN2NiMTRjOTQ1MGMyZjYyYTFkYjZiNWY0MTEwNzc1YyBweTNrCis3MjE4OCBlYjgxMTVhYmZmNWU1NTIxNTRmZGYwZmExMDY2MWI4NTM1MDUxZmNlIHBlcC0wMzgzCis3MjE4OSAyM2JjNGIzOTFjMTAyMjliNjk0MThhMTQwYzZmNDNmMTg5NDE1NmY2IGxlZ2FjeS10cnVuaworNzIxOTAgMGM4YmZkZGJmY2EyNjY2NzVmM2JlMWNkNDM3YzAxYzJiYmVhZGYxOSByZWxlYXNlMjYtbWFpbnQKKzcyMTkxIDlkODQwYTU4YTBkNWQxYjZhYmM4ZmUyYzVhNjIwYjg3YjNjMzFmYzYgbGVnYWN5LXRydW5rCis3MjE5MiA1MTFhMzdlZjFhNDEwZmY0ZDI1Zjc0ODE5NGRkYjNiYzYyM2ViZTBkIHB5M2sKKzcyMTkzIDA1MTAxOWYwZGQ5ZmUzOWE1YWQ4YzM0MWY4ZjEzMzQ4YWQxODEwNDUgcmVsZWFzZTMwLW1haW50Cis3MjE5NCBmNjg2YWNlZDAyYTNlNGQ0M2MzNDhjNjNhZDZkMjc4MzJjYmM1ZGY3IHB5M2sKKzcyMTk1IGUxOWNjM2ViYjU4YTBiZTYyNDRhNDM3YWQ0MDg0Y2NkZmMyNDYxZDYgcHkzaworNzIxOTYgMjA2Y2NmOWFhMDI1ZjAxNjQ1ZmMxYmY5MWQ3YWNiNzJlYzc3NzBjOCBweTNrCis3MjE5NyBlNjJiYzU3YTYyZWFiYTBhYWJlODY0MmM3M2E4ZWZiZDAyZDU5NWQ2IGxlZ2FjeS10cnVuaworNzIxOTggMDJiNjE1Mzg5ZDNlZjUwNmFjZDUwMzllMGI3NzI4NmFlYWIwNzk1NyBsZWdhY3ktdHJ1bmsKKzcyMTk5IGQ3YjUxZWJmNmRlNDI0MzY5ZmY1ZDU2MzZhMTViNDljZTkxNjYwYWEgbGVnYWN5LXRydW5rCis3MjIwMCAxYjcxYTU3MGY1NGVhY2ZkODYwMmI0MTY5NDFkYjQ5ZDAxNjc2MjYyIGxlZ2FjeS10cnVuaworNzIyMDEgMWE4NDllZTVmMDhjYzg2NDE2ODIxYjhjYmExNzI5MzBhZTU4NGI4OCBweTNrCis3MjIwMiA1YWFmMjRlYzQzZGMxMGFmYTRhZTc1NmM1Njk5MDZhMDU3YzVkMjFlIGxlZ2FjeS10cnVuaworNzIyMDMgOTAzZTgwZjNlODExOGVmMjdjODFhY2I0ZTg5NTZiMDYxNDQ4NGE4OSBweTNrCis3MjIwNCAxMWIxZmM5OTIxYmQwZTAzZDExNDdmNmVlOGJkYzcwYjNlMjg0NjBlIHB5M2sKKzcyMjA1IGYyNzdhODQwNzFmMTRlZTI4NTdiNGZhMWE0MWY4ZjRlMWFjMTIxOTggcmVsZWFzZTI2LW1haW50Cis3MjIwNiAyMWJkYTYxMWYwZTQwMGQ3NTBlNTlmZDg2ZjZkMzJhMGJiMzQ4ODdhIHJlbGVhc2UzMC1tYWludAorNzIyMDcgZWMzZmM2NDYzMWQ5OWVlZmExZWYwMTk0ZGVmMThlODU0Njk0Yzc0NiBweTNrCis3MjIwOCA1MmE3N2VmMDY5Y2RiYTNhMTJmZTc3NjNlMzc5NDA3ZTM4ZTlkYjMzIHB5M2sKKzcyMjA5IDY2MjAwYTc2ZGUyNjYyYjQ3MTU2NWM4MzVmOTY5NjFjZWUzODdjMzAgcmVsZWFzZTMwLW1haW50Cis3MjIxMCA5YjU1ZTliOTlhNDM2YmRhMzU3ZGNjOTIyZjk4NWI0ZDQ2YzVhYzZmIGxlZ2FjeS10cnVuaworNzIyMTEgNWZlOTA0ZmZjNmI4MjNjNGY5YjIxNmI4YThmMDc1MzdlMzExNTk1MCBweTNrCis3MjIxMiBiZTNjMDdhZGRlOTVkYTQzNWVmYmQ2YjQxMjdiNDhiNDk5MzY1YTQ1IHB5M2sKKzcyMjEzIGUwY2VkZTdmNTIxYjQzOWZlOTgxMDg1YjZiYzIwODIwM2M4ODE3OGMgbGVnYWN5LXRydW5rCis3MjIxNCBhODkzMTk0MTU1YTIyNTIzZmI3NGM4Njk4NGIyNjVmNmFlYzE2YWQxIHBlcC0wMzgzCis3MjIxNSA0ZjY1ZWUxZjQ4NDhmNjliZjRlN2M5MjY0NjRjM2QzMTMxMzQ5Mzg4IHBlcC0wMzgzCis3MjIxNiA1ODcwNTA4MmU3Yzg1Y2I3NWY2NGQ2YWVjMWVhOTJmOThkZGQ0MTBlIHBlcC0wMzgzCis3MjIxNyA1MmE4OWQ3MjNiNmJjMTJkODM3M2ZmMTdmMjVjZTUyOWIxZTYzNTFmIHB5M2sKKzcyMjE4IDBlY2M1YjkwNjQ3Nzk1MjM1ZDZkZjllNzRmMzhhOTAzY2QxM2UyMTUgcHkzaworNzIyMTkgN2JjZTA1MmYwZTdiNzFlNGVmNjNjMmJkNDhhZGU3NjYzMzFlN2Y2NCBsZWdhY3ktdHJ1bmsKKzcyMjIwIGM1ZjE0ZGJlYTQzZmJjY2NmYWI3Y2RiNzkxOTk0ZDEyMDQyMjA1MTEgcHkzaworNzIyMjEgYjA2ZjExZjNiNjViMGQ4ODU5ZWRlOGNlY2EwNGZmMjZkY2VmYTAxMiBsZWdhY3ktdHJ1bmsKKzcyMjIyIGJhNDVlMTI2NTc0ZGExZDZiZjYxZDRiZTcxMDljOWFmNDM5MzdiOGMgcHkzaworNzIyMjMgZTU0MTQxZDYzZTAxODc0YmEyYjg5MDAyNWQ4MjBkYWJlMGI3ZjI3MSBsZWdhY3ktdHJ1bmsKKzcyMjI0IDY0ZDlhOWU3ZjY4ZWNkNDIwYTI5NGE5MmY5ZmZlMjUxYTZkYTE0ZmYgcHkzaworNzIyMjUgMzAzYjdlZThlN2ZlZjJiYWYzZWFjMWJmYzRjODJiMjQ3NDU0MTFlZSBsZWdhY3ktdHJ1bmsKKzcyMjI2IDAwMWFjNTljMWU2NzJjZTNkYTY0YmMxYzg0ZTNjYWQzNGJiZTJmY2EgbGVnYWN5LXRydW5rCis3MjIyNyA5ZmVmMWYxNjU3YzhhNzU1MTRjM2QyOGNkMzYxYWY0MDVlZDQxZjg2IGxlZ2FjeS10cnVuaworNzIyMjggMzU4YWIxZmZhYTgwODRlYTc3M2IxYWE5MWMzYThkNzM4OTBlNzg2OSBweTNrCis3MjIyOSBhZWUyYjEwZGJhYjkzOGVjMmFhNTRkMTgwNzFiZGM2YWQwOGRiZTQ2IHB5M2sKKzcyMjMwIDdmZmQ5NjI1YzkxY2ZkNzk4NDM2NTFkNWEyYjA5OTM0MGVlYWYzNzUgcGVwLTAzODMKKzcyMjMxIDAwMDYzYWRmMDU1ODQ1NjU4YjdkYjIwMWU0NmJhZTMyMjljMmM5ZTIgcGVwLTAzODMKKzcyMjMyIDA3MDljNmQzNjlkZTY3MDdjYzY5YTg3YjUzZGQzOTlhYWM0ZjM5NTEgcGVwLTAzODMKKzcyMjM1IDc2NGVhZTUyMDg4MDhmNWYwNGEzMjZhZTBiMDc2MTAyMGIzYmZlZjQgcGVwLTAzODMKKzcyMjM2IDliMTA3YTc5N2RmODllMDg2M2Q3ZDNmNzdkZDE5ZDYwZjZkZTY1MDMgcGVwLTAzODMKKzcyMjM3IGQ2YjNiNzRiZGEwZTVhZWNiZjNmNjQ1OGU0OTU4YzIzYTMyZjNmMDggbGVnYWN5LXRydW5rCis3MjIzOCA1MjZiMGRjMDkxMzgyMWNkNzA3ODE0ZDBlNzY0YzlmZTZmMzBhMDM5IHB5M2sKKzcyMjM5IGY3ODAxNjk5ODE1YzEyNDNmZjk5ZWE4MTdkNjNlYTQyNmQ1YzA2YWMgcHkzaworNzIyNDAgNjg3N2ExZjRhMDkyN2ZlYzY1ZTFiYTNlZDhlNjMxNTg2NWI4NmI2MiBwZXAtMDM4MworNzIyNDEgYWUyNGRlNDhhZGM0MWQxMTk2ZThiYTFiNGIyNDJmMzFlMmVhZjIxNiBsZWdhY3ktdHJ1bmsKKzcyMjQyIGJkNmQyNTdhOTEzMGY3ODZjYzVjNmYyZjcyYjVhMjcyODUyZDk3YTUgcHkzaworNzIyNDMgODdmYzExNjJkOWY0YjY5NDA5YzliMmM5NTE0NzY4M2EzODZmOWMzYSBwZXAtMDM4MworNzIyNDQgYWJmNTc0ZTlmMWQzZDU5ZDc5NzVlMWVmNWY1ZjRiOTQ2YWYzNDAwMyBwZXAtMDM4MworNzIyNDUgMzk0NDYyZWFiNjVkYjA1Mjc0YTZmNjY0NDVhYzgxODI4NmFmOWE5OSByZWxlYXNlMzAtbWFpbnQKKzcyMjQ2IGE2Nzc4M2Q4MTJmNmU2Y2QzNzc0ZmIxNGJjMWIxZjZlNzBlNDQ3YzYgbGVnYWN5LXRydW5rCis3MjI0NyAzMzI3MGFkNmFkZWY4MmY2MDUzYmMzYmM4ZTg5OWY1OTVmNjc1ZmRhIHBlcC0wMzgzCis3MjI0OCAxM2E4MmE3MTBmMTliNDM5ODAwYThjOWU0OTlmOTQxYTdmZGY1OGJjIHB5M2sKKzcyMjQ5IGY3MGU5MWY1ZmM5Y2ZmMjQ4YjZjMmUxNmFiZjliOTRlNDRmN2ZjMTggcmVsZWFzZTMwLW1haW50Cis3MjI1MCA2M2RkY2U5ZmFmNGE5ODdlYjRhOGY4OTI4MWUyZDBlN2Y5NWI3MWM3IGxlZ2FjeS10cnVuaworNzIyNTEgNGE3NmQ2ZDI5N2NlYmU1ZTNiMDlhMTI5YTVhMzk4NzlmMDg0ZDcyMiByZWxlYXNlMjYtbWFpbnQKKzcyMjUyIGZiNTIxZjk5NmRlMTNiZGE3NTFkZDhhOWU3MTJjNzZiNWMyNjQxNDIgcHkzaworNzIyNTMgMWYwMGJjMWQxMTVhMGJmNDBmYTAyZDliNTA2MDg4MzAwNzMxMWE2NSBsZWdhY3ktdHJ1bmsKKzcyMjU0IDViMjhkZWJhMWNkNmI3YTAxM2I2NWVhYWE4YTNiOWVkNzNjNzVlNDEgcmVsZWFzZTI2LW1haW50Cis3MjI1NSBlMmI1NTNkNzIwNWYzOWJlYjEwNWRkZmQ4N2YwZDJkM2Y4NGIzYzE0IHB5M2sKKzcyMjU2IGE4YjVhNWI5YTQ5YWFkMjE4MzkxYmEyYWMzOGJhYWMxZmEzMTQ4MGUgcmVsZWFzZTMwLW1haW50Cis3MjI1NyA0Zjg2N2YxNDk0ZDU1ZTljMWYwMDkxODAzNTA3NGQ3YTU2N2I0YzJhIGxlZ2FjeS10cnVuaworNzIyNTggYzZmOTlkNGM4MTIyZTEyY2I0Y2I3Yzg2ZTY2ZWVmODk1ZDRmYmE2NCByZWxlYXNlMjYtbWFpbnQKKzcyMjU5IDBiN2VlZmU3YjZkMTdkOGY0Y2EyYTgxZTFmMmYwOThkYWFjYzdkNTEgcHkzaworNzIyNjAgMWMyN2VjYmVkOGM0MWE3MTI5ZWI0YTNhODgyOTU3Mzk0ODU4NmY3YyBsZWdhY3ktdHJ1bmsKKzcyMjYxIGNlOTQ3MjAwYjc2ODhhOTM4NGQzZmU5YzQ3MTU0YTBlN2MyNDA0YjggcmVsZWFzZTMwLW1haW50Cis3MjI2MiAxOGE1YWU5NmFlNWM5YTNmZGUxZGZiZjY4MGIzYjUxOTMzMTgyMTc5IHJlbGVhc2UyNi1tYWludAorNzIyNjMgZTRhZjk3MWI5MTg0NTYwOTgxMmY5MTE2M2Y4ZDQwYmYwN2EyYWI0OSBsZWdhY3ktdHJ1bmsKKzcyMjY0IDVhZGUwZGU3NGI1YTkxM2EwYTcxOGQ0YjFiMmI0NTI2YmI5YWU3NTggcmVsZWFzZTI2LW1haW50Cis3MjI2NSBkN2JiZGU5MzZkNjI5MDVhZGE3Mjk1NmE5ZDk2ZTcwMGFjNGY1YmY1IHB5M2sKKzcyMjY2IDgzNDZkM2M3YzRlMjNiODllOGNhNzgzMjBiNWM0YWMxYmVhYThiMWIgcmVsZWFzZTMwLW1haW50Cis3MjI2NyBlNGZmNDI3MzQ5M2JkMDQ4YmUwZGM5Zjc5Yjg5NjM4M2I4ZDhhODU2IGxlZ2FjeS10cnVuaworNzIyNjggNGNkNDM3ZGZhY2U4OTgzMmJlOGEyMTJiZTg2NTNjZDEwMGUyY2U1YiBweTNrCis3MjI2OSA2NmY3NTAwOGMzYTg3MjUwMjkzNjgyZDhlYjIyZjlkMWU5ZTkyZTU1IGxlZ2FjeS10cnVuaworNzIyNzAgZDhkNjdhYTc1NTI1MjAxZDhjODlhYzk2MDBmYmE1Yjg0MzUzZjYyOCBweTNrCis3MjI3MSBlNjg2ODVjZjM2NTFkOTk4NzY2Y2M0MWExZmYwNmViZjU3YTIxNmZhIHBlcC0wMzgzCis3MjI3MiBkYjI4MzkwY2E2MTcyNjA2NTFmOTZkODM0MmEyN2IwZDAzOWMzMmViIHBlcC0wMzgzCis3MjI3MyBkNmNiYWVhOTc1Njk4ZWJmNzk1ODRlNmQ2YThiNTllMGFiNTgxNmFkIGxlZ2FjeS10cnVuaworNzIyNzQgMmNkOWFlZTZmNjI0NjAzMjg4NWY1NTQ2MTIzNzRiNjlmMDIyNjY4ZiBweTNrCis3MjI3NSBiYzFkMTk2ODM2YTRmYmE4YmMxMTZlZGUzZTEwYTkxMjc0ODY2YmY3IHJlbGVhc2UyNi1tYWludAorNzIyNzYgM2NiNWI3ZDU2MzA5ODFjZjI0Njc5MWIzMWZkMDVmNGU2OGZiMDMwOSByZWxlYXNlMzAtbWFpbnQKKzcyMjc3IDY5MjMxY2VmZDgwZDNmYWZlYjJkNTRiODUyZmQyM2I5N2M2YWU2NmEgcmVsZWFzZTMwLW1haW50Cis3MjI3OCBhZDEyZDhmNDE0YzczNjFhOTg1ZTJmMTgwNDAxY2U5ZjFlYjU0NzZkIGxlZ2FjeS10cnVuaworNzIyNzkgMzA4OGQyZWJmN2JlNWVhM2QxMzBkOGFmODEyMzQ3ZDZlNDM3NmM1YiByZWxlYXNlMjYtbWFpbnQKKzcyMjgwIGZlNTRmMzk0NTk5YzI1MzU4ODE5MGQ5NjE4NjEwNzNjY2FiNWQ4NjIgcHkzaworNzIyODEgNzNhZjkwMjA2Y2JlMzI0Yjk5NjNhZTU2ODg4Y2NkZmRhMjkxYjc4MCByZWxlYXNlMzAtbWFpbnQKKzcyMjgyIDVjYjg1ZWZmOGMwMzVhZWFhMDQwOWYzYzU5MTM3NzgyZmUyZmI4ZDAgcHkzaworNzIyODMgMTJkOGZkNDk5NzIyYzJkY2U0YmJiMWI3OTQ2OTljMDFjMTcwNzUxNyBsZWdhY3ktdHJ1bmsKKzcyMjg0IDUzOGE3ZDU4MzA2NDVkMGE3NjE0YjRmMGM2ZDRjNzA5ZjY5NDg1MzIgbGVnYWN5LXRydW5rCis3MjI4NSA5Yjk1OTAwMDdlODI0OTgxYjVkYTQ4YTkwYzU4ODcyNjViZWY0YjFkIHB5M2sKKzcyMjg2IDEwMDM4MWM1ZTczYWJiN2YwY2I4NzY5YWM0MmQ3MWEzZDBjODFhZmYgcHkzaworNzIyODcgNDc5MTIxNmJmYzFlYmRiOWU4Njk1M2M5NzE1NDc1ZWE0YzVmMmQzNyBweTNrCis3MjI4OCA3NWQ0MWY0NjA4NTIxMDkxN2JjM2E0ZWYwODhiYjNhMzY2MmM1NDA5IGxlZ2FjeS10cnVuaworNzIyODkgODJmZmRmYmM0MmU1Njk2NDlkY2Q0Y2E5Yzg3MmJmNzI2NTFiOGNkNyBweTNrCis3MjI5MCBmNzIyODkyYjYwYWUzYmVhZmRjN2Y2MTA0YTgyZWU0ZWI3ZGMwYjg3IGxlZ2FjeS10cnVuaworNzIyOTEgYmQ0OTFiNWE4ODA4Njk4YjY1ODVlZjFmMjc1NDBhN2E2MTZkZGMxMyBweTNrCis3MjI5MiA1Y2NlYzRiMzY2NDZkMTE3YWZiN2JlNmUzODk3NTI4MjY0NTgyMzgzIGxlZ2FjeS10cnVuaworNzIyOTMgMzEwZGFhOTlkNjA3M2QzM2ZjZjA3YjE0Y2QyMTc3MWU5OGJjMzI3MiBweTNrCis3MjI5NCBjMmQxMDdlMDc4Mzk3NDUyY2U4NmU1ZTE0MDE0ZTQyZjgzOWVhYzMxIHB5M2sKKzcyMjk1IDUzOTliZTdhMzliYTM3MTdiZDgwMWQ1YzZhNDk3ODJkNThjOTc5NWEgbGVnYWN5LXRydW5rCis3MjI5NiA3NTc0M2FhZWU1MDQwYzBiM2JiZDIxNmViZmU4Nzc4YzI1ODI0MzMwIHB5M2sKKzcyMjk3IGQzNzQ3YjBhMmYzNjFhYTRkNzBjNDBmOGRiODE4YjBhZmU1NmFjNmUgcmVsZWFzZTI2LW1haW50Cis3MjI5OCAzYjA5ZjMzMmYxZmEzYjQyMWIxZjNlMjE3YmM3ODNlMWU2YzQ1YTJjIHB5M2sKKzcyMjk5IGIzMzE5YzA4NGQyNTcxYzMwMzgzMTAxNzVlZDM5Y2M1Y2NlOTc1YWEgbGVnYWN5LXRydW5rCis3MjMwMCBkZDkzOGEyY2MyZjBjNzRhNzA3YmZmNTkzZWZiYmFiMzNjMzViM2EyIHB5M2sKKzcyMzAxIDViZWNjODY1NDgxMjIwODJjMWM5MTkzZTJhODZlZjg1MDJmYzUwM2IgcHkzaworNzIzMDIgYmJhN2VlOWRhZWUwNjQ1ODljOTczMTU2ODM3N2M0MWFkYzdhYmQ1NiByZWxlYXNlMjYtbWFpbnQKKzcyMzAzIDYzOWE3OWZhNmEyMzhhNjUyYzk0OGYxNDAwNjczMjkwNzkxMTcxNGMgbGVnYWN5LXRydW5rCis3MjMwNCBhZWI0MDUwY2Q0MzE4NTI2MmZjODllYjdjY2Y2OWUyYWI5NjFhYTljIHJlbGVhc2UzMC1tYWludAorNzIzMDUgNGZjZmM1M2ZjYzc0YmQ2Y2U5OTVmY2RlYzUzOTA1ZDA4MTg2YzJlZiByZWxlYXNlMjYtbWFpbnQKKzcyMzA2IDI0MTZmMTY2ZGU0YjAwZTJhYjdiMDBiYmVmNjUxMTQ5N2Y2ZTkzNGYgbGVnYWN5LXRydW5rCis3MjMwNyBiMWVhNWY3MzEzZmRlNTRkMzFmNTM4NWYxZWE2NzFkMTFlZmI5OTA4IHB5M2sKKzcyMzA4IDBiZjViYjJmM2MwODk4NmRjMDYwZDBhYTRmYjcwODMzYjFiZWE5NjEgcmVsZWFzZTMwLW1haW50Cis3MjMwOSA2NjY4MmZjMTcyZTkwZTk4ZThhMTQ3NGFlMTVmMGYxZWRmZWU3NTVhIHB5M2sKKzcyMzEwIDczMjFkNDUxMGI0MWJhYmNlM2Y5YzJhNDc0ODg2OGJkMmJlNGQ0MDIgcGVwLTAzODMKKzcyMzExIDRkZDVhNmE5M2U3MDg4YzAzYjJhYzE2MDdkYjliMzU2YmI5NDUxNjcgcGVwLTAzODMKKzcyMzEyIDZlMTBiNzBhNDExMDM3NjAyOTRkMTMwMGM5ZWJiZTI4MTA2ODU2ZDQgcGVwLTAzODMKKzcyMzEzIGFjMjA5ZjEzMmIxN2IyODQwMTRkNGExMGNmOTdiYTc3ZGU4YjdjYjcgcHkzaworNzIzMTQgNGU1ODM0YjMyMmMxMGEyY2YwMTBmM2Q0NGU0YmVkODZjNGU1OTBiMyBsZWdhY3ktdHJ1bmsKKzcyMzE1IDJlMDQ0YzlmNGI0MDVmNzk2MjgwOGJlMDkzMzExNTVlYmNlNzllMjAgcHkzaworNzIzMTYgYjAwY2U2ZjBmYTNhOWNmYjkzN2M2YWRhMWRiYTY4ZTJiNDZmZjE3YSBweTNrCis3MjMxNyAxZTgyYmVmNjhmNGRmZTg3ZDZlZDI4OTBjN2UxMTJkYTVlYzA1YWE2IHB5M2sKKzcyMzE4IDVkZmQyMjkwNjM0MTFmZjYxYzM3MWQ2NmEzY2RiOGJmM2VmZjFiNjQgcHkzaworNzIzMTkgZGQ0ODlmNDc1N2JlODI2OWJlOTZlYmFjYTM2ZWIwMzE0NWZiN2UwZSBsZWdhY3ktdHJ1bmsKKzcyMzIwIGFmOGY4NDMyNTc5NzNmMThiOTg4MDQ0MjE1ZTQ3NDZmZWQxZjdkYWYgbGVnYWN5LXRydW5rCis3MjMyMSBiMTJhNDRlZWY0MGI2YzU5MjcwNmVjM2Y1YjY2MzcwOTJlNzZjOTM1IHB5M2sKKzcyMzIyIGM0OWJjMzMwMzI3Y2YyOWVjZTVhMTBkZWFhYzI1MmJmYzE2YzU2MTYgbGVnYWN5LXRydW5rCis3MjMyMyA1ODU3NDI4OGE1YmZlYTlkZWFjNjEwN2UzM2IyN2Q3MmE2NjJkY2NjIHB5M2sKKzcyMzI0IDRjNjM2NzA2MzllYzcwYjVhYTZiNjRlNWRiYmZiZTliYWVjZjQzYTMgbGVnYWN5LXRydW5rCis3MjMyNSA1OGFhMGFkNzcyNTNkNzc1NGM2OGU5YTk2MTAwZjNiNzdiMWZlZTVlIHB5M2sKKzcyMzI2IDU4NzhjYTc4NGE4NDk2ZTRkNWY0Y2Q1YmZmYzA4ODI4YTA4Zjg1NGMgbGVnYWN5LXRydW5rCis3MjMyNyAzM2JiZGQzZWVhNDNkOWZjZWNlNWVmNGM3ZGY3ZTM5Y2Y3ZTkwNGVjIHB5M2sKKzcyMzI4IDlmODUzMmEwZjFhYmNjNDYxYjYwMDA5ZmIxNTUxZmQ3ZDI4MmVmODEgbGVnYWN5LXRydW5rCis3MjMyOSBlYzVmMDNkMWU4MTk4OTMxM2YwYWMxNzdjMmZiY2FkMTI0NGZiNWI4IHB5M2sKKzcyMzMwIGY2YmZmYjllODM0Zjk5ZTYwODA2NjhkMTllNzAxNTk4ZTA0OTFhMmQgcHkzaworNzIzMzEgMTY3Y2QzNzhiNWJkOGIzN2U2NzY2YjNkYTVkYzBkODI5YWMzODYzYSBweTNrCis3MjMzMiAyY2MxMTY5M2ExODBlZDc0MTc4NDMwOWRkZWE3NjRhNDk0NGM5ZTM1IHJlbGVhc2UzMC1tYWludAorNzIzMzMgYzYzNzZkM2ZhOTY4NzgxN2IyYTQxYmY1NjllZGMwNTQ5Y2U2YmE5MiBweTNrCis3MjMzNCBkMTdjYzcyZmZlODA3NjcxZDQ5NjBkNTFiYWUwNTIxZmNkYTBjOGQzIHJlbGVhc2UzMC1tYWludAorNzIzMzUgOWY2YjhjZTIwMjNmMGMyNDRmYjFhMTIxZmRkNTc0M2Y3YTEwYzRmOCBsZWdhY3ktdHJ1bmsKKzcyMzM2IDIxNWI3YjY2ZTYyZGYyODVlMTVkOTE3YWIyZGYyOThjNGJkMzc3ZDYgcHkzaworNzIzMzcgNGYzZWRiNmFmOGMxYmJkM2IzODU1MjVjNmQwMGNkNTM4NDc1ZDRjYSByZWxlYXNlMjYtbWFpbnQKKzcyMzM4IDk3NjAzNTM2NjA2NTdhYWEyMWQyY2QzN2NjOWIxZjA1MDBhMWI2ODIgcmVsZWFzZTMwLW1haW50Cis3MjMzOSBjYTQ1MGIyODI3ZWYzODA5YjM0OTdmZWFjMThjMDJmYWQ0OGJmNDNlIHB5M2sKKzcyMzQwIGQ4NjAxZThiM2FiZTkxZWJhMDdkMzI1ZjE3MzQ3NzQ3Y2QyOTlkOTUgcHkzaworNzIzNDEgYTdjOTllMzRlMjM5ZTIxNzJhNjdjODA3NTI3NzFmYmQ3MGM5NmZlYSBweTNrCis3MjM0MiA4ZThiOTU5MDkxN2FkOTRjNWI4MmM2Mzk1NzM4YTE0NzA3YTEzMmVmIHJlbGVhc2UzMC1tYWludAorNzIzNDMgN2VhNzg3MGRkOTY2ZDIyMTZkNTE0NGQ3M2JhZDUxNWRjMDNmNDA5YiBsZWdhY3ktdHJ1bmsKKzcyMzQ0IGVhMmE5MDA4MmM4Mzc1MjgzOTI1MTEwZGQ5YjlmY2YxNDU2M2ZmNTEgbGVnYWN5LXRydW5rCis3MjM0NSA2ZDY0Y2Q2OWYzODQ0YTU1ZWRiNzM0YjNiYWM1YmVlMGNmYWNjZjdmIHJlbGVhc2UyNi1tYWludAorNzIzNDYgOTg3NDIxZDNmOGFlNDBiNmQ5MDVmY2NiMmY3N2ZjNWZlNTVkOTY3NCBweTNrCis3MjM0NyBiMDM3NTU2N2ZhZTgwYTQ2Y2FjOGMxMjVmZDU4OTZjMzQyMjg3ZjQ1IHJlbGVhc2UzMC1tYWludAorNzIzNDggMWQ4ZjI0ZDQwYzJjNjhmYjliM2VjNDQxY2IxNzUwNDZjOWM4MDIxYSBsZWdhY3ktdHJ1bmsKKzcyMzQ5IDRkNWYwNjY1NzVlZDUwZDkwMTk2MWEzMzEzYTM4YjBmOWQ3YWIwMDkgcmVsZWFzZTI2LW1haW50Cis3MjM1MCBiOTc3YWYxOWM2ZjAxMzdmZTQ3YTc1NjFhM2JjMjExY2FjOGY4ZGU3IHB5M2sKKzcyMzUxIGJiZTJhYTQzMTY5MjMyMzYwNWZkZTFhYmU0YzIzNDk3NWVkM2NjZTcgcHkzaworNzIzNTIgNTgxYjU2NGQ4ZmMzYjJmZTY3Y2NkM2FlMGMyNTUyMjA0MDgxZWM4MCBsZWdhY3ktdHJ1bmsKKzcyMzUzIGE4NWU2NzU2ZGVkMmNmZTdlMmIxOGNkZGNkNDk4YzljMTZkNmVlNjggcmVsZWFzZTI2LW1haW50Cis3MjM1NCBlMDE3OWYwOGQzNGYyMjAzMTQzZTk0MjllNmZiYWM1MmM2NmI2NzhkIHB5M2sKKzcyMzU1IGQzZmZiMzcwMmMzYWY2M2ZhNTBlYTA2ZmE1MzI2NDIyYTNlYzZiY2QgcmVsZWFzZTMwLW1haW50Cis3MjM1NyA4ZjdjZjVjYjIxYmI1ODNhYjRlNWFlZGIyZjQyMzA0YjBlYjRmYzQyIGxlZ2FjeS10cnVuaworNzIzNTggMDI2ZDM5MGVlY2MxOTZhZDA1MTRjYzE4NzEwZjU4NzUyZDAyZTliOSBweTNrCis3MjM1OSAxNWQzYmRlNzBkODdiMDAwZWNjZTk0OTdjMzU4OWQ0ZWNlNzM3ZTQ3IHB5M2sKKzcyMzYwIGYwZmI0ZGRmZjFhYmRhYWEzMzU2ZmQ2ZDMzYWNhMzkwMDczZTlkZWEgcmVsZWFzZTMwLW1haW50Cis3MjM2MSBhZTY4NTA4NjlkNTJmNGY2ZWM3ODJhYjM0Y2M4MDhmNWU2ODIyNmVhIGxlZ2FjeS10cnVuaworNzIzNjIgMjU5MmM2YTlkZGQ2YzQ0ZWNkOTU5ZWZkNmMyNzk1MmVlZTkzZDY1NiBweTNrCis3MjM2MyA5MTFkZjgyYmMyNWRmYjYyZmFlZjZlYTFiOWQwY2Y3MDQxN2JiOTdjIHB5M2sKKzcyMzY0IDViOTAyMWMxOTUxMmJiMmUzYTNiZDAxMzI1MmQyOGY5MjhmODM1MzMgcHkzaworNzIzNjUgNTRkYzU3NzdiZGZiZmU2MzY5ZDgzZjcyNzhiMjg0NmMzOGE4ODZiOSBweTNrCis3MjM2NiA3YmFmNGNjMTNiY2ZmNjhiYjViNGZiOTg4MmQyZGZiZWRmNzVkZDc5IHB5M2sKKzcyMzY3IDNiNWM0MDBjOWRjZDQ1MTAzNWQ4N2M0MjMwNjg2YmJiZmRlNWRkNjUgbGVnYWN5LXRydW5rCis3MjM2OCBmYjEwYjg4YWZkNDAxZTgxMjEyYTVjYWNlNGIxNjhlMTg2NzEzYjczIGxlZ2FjeS10cnVuaworNzIzNjkgNWI0YjA5ZThmMzJiYTljYmU1ZTFhYjc3Yjc3NDU4MTg2NzYyNzQ0NCBweTNrCis3MjM3MCBhMjMwM2E3NGE3NjEwYzhlMmM2YTYzZGQyMTllZWJiODZiZjJhMmZkIHB5M2sKKzcyMzcxIGI2NjZlNzJmNjAyZmE4NTI4ZDgzMDBhZGI0YTA4MTU5NjdkMzlhZmQgcHkzaworNzIzNzIgOTg5NTQ4M2U5NjAxM2E1MmNmZjJkODE5N2ZjNTRlODg2OTdhOWFkOCBweTNrCis3MjM3MyA5YzRkOTI5ZjQwNTk5NDE3MTkxYzNmNDVjNWMzM2JiYmU2YzhkN2UwIHB5M2sKKzcyMzc0IDRiMWE5YWZmZTM0Y2Q0ZjkyMTJkZTdiNTIzYWQ3YTBhOTM4ODIyYmUgcHkzaworNzIzNzUgZWIzYWZiZDZhYWE5NmVmNjc2MDJiYmMwMGU5NjE2ZWVkZTQ4MDAwOCBsZWdhY3ktdHJ1bmsKKzcyMzc2IDRmMTczODRhZThjYmZlNDY4YzAxMTJlZDdlODI0YTlmNmY4OWFjNTEgcHkzaworNzIzNzcgMGY2YTc4NWNmMjg2ZTNkMWQ4M2E1ZTdjNDI0ZjI3OWFmYjFlNjg4MiBsZWdhY3ktdHJ1bmsKKzcyMzc4IDU1NmQxMTMxNGFkNWNmOTEzODJjNGZmOTJhYjFkYmQ1Y2RiYTYwMGYgcmVsZWFzZTI2LW1haW50Cis3MjM3OSA1N2U5YjFiMDgzOGU1MmRlOTQwY2QwNDcxMzRlYTg0NDcwYzViZDJkIHB5M2sKKzcyMzgwIGE4MTVhY2NkODllNDBiMzQxYTVkNjBmNWQwMjAxOTNhYTgxYjRjODQgcmVsZWFzZTMwLW1haW50Cis3MjM4MSA4NTc3NWQxMDBhMzJjNTlmMmNiZDJhMTJjZWYzNmMwYjQxMGU0ZmU3IHJlbGVhc2UyNi1tYWludAorNzIzODIgZTYyMDcwMWEzZWM4NjQwYWZjNmE0MzIzMGE1NTgxZWIxM2MyNDQzNyBsZWdhY3ktdHJ1bmsKKzcyMzgzIGFlYzYyZTljYzZlOGVlZmE2YTFlMWJjY2RiMzM0NmM3ZmE1YWMwZDIgcmVsZWFzZTI2LW1haW50Cis3MjM4NSBiY2JiOTRkNjkyZWZkNzEyOTYyZDRlYTliYzIyNDVhMmVkMmNjNzA4IHB5M2sKKzcyMzg3IDI5MDI1YjUzMDA0NjY4NTAwZDA4OWJkYTU5Zjg4OTJjNjQ0NDZiMDggcHkzaworNzIzODggY2FjMmE1ZjRiOWZhZTEyODRiOTljZmRlNDA5ZWE4N2NkNzlmZjNkZiBsZWdhY3ktdHJ1bmsKKzcyMzg5IGM2ZWZlNThlZWY2NjU3ZWU0YjlmMjg5OTQ5ZWZlMWM2NmNiZDhiZDggcmVsZWFzZTI2LW1haW50Cis3MjM5MCBmMWEzZGU5ZGY0MjVkYjRjM2YxYjY3OTEzMTA0ODQ3Y2E5YjhkN2MzIHB5M2sKKzcyMzkxIGZiN2QxMjE5NmMzNWMyYjVmNWRhYWJjY2Q0MjljZWVjZTk1MWM2NzIgcmVsZWFzZTMwLW1haW50Cis3MjM5MiAzNTU5N2QzZGJkMDgyMDJjYzg4NzFkMWVjMTNkMTgwNDdiYWU0NTgwIGxlZ2FjeS10cnVuaworNzIzOTMgMDM4OGE0MjcyNTk4ZTM4NjRlOTU1OWU5MTFiNmFhZjAwNzAzMDFkYSByZWxlYXNlMjYtbWFpbnQKKzcyMzk0IDBjNTI2ZDE4OTUyNzJiOWE1MjU3ZjgyYTFjMTRiODczNzIxMWY1M2MgcHkzaworNzIzOTUgYWRjOGVjN2Y3ZDIzMDE5ZjAyOWE3NzVmMjE0MjZiNTNiZTBlZWViZCByZWxlYXNlMzAtbWFpbnQKKzcyMzk2IGRmM2Y1ZGI1MjhmMDBiMzcxZjcxNjFhNWJkYzBkNmZhYzgxOTNmOGQgcHkzaworNzIzOTcgN2NiNmRmMDA2OTlmNGIzNGQ3MTliZjZjOGZjYjQyM2ZkNzg4NDQyOSBweTNrCis3MjM5OCAwNGJkYzk0NDcxOGFmOWVlZmYxNzk4YmRkNWQxNjc0ZWNjOWExNDNjIHB5M2sKKzcyMzk5IDljNjU0MDQwNDAwZGVmYTRjMjliYmU2M2UwNDcwZjUzN2NlMWRjNGMgbGVnYWN5LXRydW5rCis3MjQwMCAwYjlkN2NjZWQ5MzcxZDdmYjRjODUzZjVkYTMzMmY2NGI4MTEwYTI1IHB5M2sKKzcyNDAxIDAzNGUwZmNkNjk0ZTg4MWE1OGFlNGYxY2FjOTllZGZhNzQwMTFiNjggcmVsZWFzZTI2LW1haW50Cis3MjQwMiBlY2U3ZTdhODAwNDNjMTU4MjUxMTRiNDNhODgzNjQzZjdjMGZhNzE0IHJlbGVhc2UzMC1tYWludAorNzI0MDMgYzUyZTU1NWM5MThkOWJiYzRmYTYwMmFmOTU3MzdhMzBiMTk2MDk3NiByZWxlYXNlMzAtbWFpbnQKKzcyNDA0IDdkY2EyNTAzNDNlYTQxYzk2Mzk4ZWI2OGFlZTRmY2JkNWFkOGY3ZjYgbGVnYWN5LXRydW5rCis3MjQwNSA0YTg0NzAwNjY0ZDkyNjIxYWZlOGI0MWQ4YTMxZmY4ZTA1NmEyZjM5IHJlbGVhc2UyNi1tYWludAorNzI0MDYgNDYzNDJmZmEyOTYzNTNmMzUwN2VlNzk0MDFmN2MxMDc4OTI2NGUyZiBsZWdhY3ktdHJ1bmsKKzcyNDA3IGMwYWQyM2FlMmEzZTFjY2U0NTkyMDA2ZDlhMGI2NmE4NmM5YWUzNzcgcmVsZWFzZTI2LW1haW50Cis3MjQwOCA2M2IyM2JkMzkwNGRlNzE2OWM2MmNmMGViYTM3NzkzNTc1ZTg4ZjY5IHB5M2sKKzcyNDA5IGNhNTU3Zjg1MGVlZTY0Y2QzZjJmYjExMGEwOGI1ODRjODY0YTI4ZmMgcmVsZWFzZTMwLW1haW50Cis3MjQxMCA3YTY3YjY0N2I5ZTc3Nzc5ZWNlYjIwYTM0ODE5MjJlOWUwOTgzYWRjIHB5M2sKKzcyNDEyIGI2MzAyMDc5N2Y5Njc4YWRhZjRkMmMzZTI2NTc0YTllZWYyZWYwMjggcHkzaworNzI0MTQgYTYyOTkyNDFmYmQ5YmNjNjA1OTdkNTQ2YzA2ZDQ0M2ZjNjYyNzJlNiBweTNrCis3MjQxNSAzYWFhYmIzMTAyZThlNzU5YTg5OTcxOTgxM2VkYTU5OTM2OTgxNjk1IGxlZ2FjeS10cnVuaworNzI0MTYgMzc2ZmUxNTg2Mjc2MDAwN2IwNzRjZDRlYzNjZjZlN2U1NWQxNDM4ZCByZWxlYXNlMjYtbWFpbnQKKzcyNDE3IDIwNTg2OTBhNTNlMTJjZTJlMmM3MTAzMDVjM2JiNDBlYWFiYjMxODkgcHkzaworNzI0MTggNjVkOGRiNWJlYjIwMTIyMTljYmZmMTczOWU0NDcxN2RlYzkxNDRiNiBsZWdhY3ktdHJ1bmsKKzcyNDE5IDJhMGZhY2EzZGVlZTU5ODNhNTBkZTE0MTEyNmZkMzMzYzE5YmFlMTIgbGVnYWN5LXRydW5rCis3MjQyMSA3NzE0Mjk4NWM2NDEwYTUzNTA0ZGY3NzQyMWI2NWNhZDFmNjAxMWUwIHB5M2sKKzcyNDIyIGE3Y2FmMjlkMTQwNjMzYzQ1M2NhNzgyNzgyY2Y5ODMwNzJhNTQ1ZmYgbGVnYWN5LXRydW5rCis3MjQyMyBmYWM1MWEwMjJiZjUwOTMwNDAzZWY5YTZmMWZhY2IyYzk4NGIwODQwIHB5M2sKKzcyNDI1IDg1YjlkZjUyNWUxMDcwZjYzOGFlNTQwZDg5YzgxNWUwNWQyYTBlOTcgbGVnYWN5LXRydW5rCis3MjQyNiAyMzhjYWZjYzI1MTVmNWRiMDNkMGE1MTY4ZWJlMGU3NmZhZjQxYTY3IGxlZ2FjeS10cnVuaworNzI0MjcgNjJiZTVhYzk4OWY0Zjg2YzA0YjI0ODlmYjk0YTc5YmZjNjUzZjg1NiBweTNrCis3MjQyOCBhODE5MGU4ODFmZGZmMmFmNjNjZTIzY2M5MDk1MDQwMTI3NTYwNTU0IHJlbGVhc2UzMC1tYWludAorNzI0MjkgN2EzYmQxNzliMTgwZGNjMTg5NWQyODk3ZTJhZTEzYjlmMTQ0NTI0MSByZWxlYXNlMjYtbWFpbnQKKzcyNDM0IDZjOGIzODBkYjcyN2ZjMjIxYzIyNjg3ZTNiYmQxZGYzNDhhNzY0Y2MgbGVnYWN5LXRydW5rCis3MjQzNSBlN2ZlMjE3Y2UwMTU3ZGQ4MTQ0ZWFhZjdmNjMzMmVkMDcwMjUxNTc1IHB5M2sKKzcyNDM2IGY4NzU4MzUzYzZjMjAyYjZjNTZiNmVlN2MwNGQzNWQ4MjNhNDBmYWIgcmVsZWFzZTI2LW1haW50Cis3MjQzNyA1NzBkM2U1OGVlYTk1OGIyMWEwM2YzODg0YzI3ZTc0MmEwYWFhMDI5IHJlbGVhc2UzMC1tYWludAorNzI0MzggMGVmMjQyZjI3ZDc2OTk3N2EyNmNmMTI3Zjg5MWYxM2U4MWViMjQ2ZCBweTNrCis3MjQzOSBkNzgwMzdjMTYyMjUwMDcyOGYxNGM0YzlmNDY0NGJjMTA2OGI5Mzg5IGxlZ2FjeS10cnVuaworNzI0NDAgNTUwMmZmMmZiZGQ2M2QyN2ZlYTY5MmFkYjAwMmQxMjZlZDk1ZmYzZiByZWxlYXNlMjYtbWFpbnQKKzcyNDQxIGM2OTMwMDNiMTVlMjFkMDQ1MGY3NmUzMzEzMzBlZTJjMDQ3ZGE2MWYgcHkzaworNzI0NDIgYWFjNDA1NWQwNjZhMDNlMzk0ZmQzMTUyNzRmYzIyYjE3OGQ0OGZmNCByZWxlYXNlMzAtbWFpbnQKKzcyNDQzIDRjM2E4NGU1NGQwODI2ODE2YTkwM2ViMzM3Y2IzMDA3OTNkMWQ4ZDggbGVnYWN5LXRydW5rCis3MjQ0NCAwZDVlMmE5Mjg2YTJhNGI4NTNlY2UzNTEzM2IyYzMzYjM3NDUxNWE2IHB5M2sKKzcyNDQ1IDkxNDNkMjBkOGIyNjM5ZDM4NmMxZmY2ODg2OGExMjY2MzU5MDU2MjQgbGVnYWN5LXRydW5rCis3MjQ0NiAxOThiNjhhZTJjMmRmNTM3M2EwNzdkZjJlYTA2YWE3MDFiMjM4YjZkIHB5M2sKKzcyNDQ3IGY1ZjUwN2I1NWQ0NjU3OTUxNWU0ZTUwNWNjZGNjNTMyMmFmZDY3M2QgcmVsZWFzZTMwLW1haW50Cis3MjQ0OCA4ZjNkYTcxMzRjYTVmMDdhMzY1Y2IwMmU2NWY4NzMzYjYxNmRiZDliIHJlbGVhc2UyNi1tYWludAorNzI0NDkgZTU2NzEyZTE4NmY5ZGY4YzViNjFlZGIwNGM2YzA0N2ExYWRmYzE4OCByZWxlYXNlMjYtbWFpbnQKKzcyNDUwIDJkZjJkMWYwOWQ1ODVkNzJmNDJkY2ZiMTZkYTgzODU5ZmExNWYzYzMgcHkzaworNzI0NTEgNmE3MTU3MjdmMTlmNzU1YzNiNDUzODg2MDA4OGM5YWM3ZmFiMGMwZSBsZWdhY3ktdHJ1bmsKKzcyNDUyIDQ3YjNmZWVhNGUxYTUxYzIwMTlkOTZmOWEyYjI1NTIxMDcxYWQ1MjcgcmVsZWFzZTI2LW1haW50Cis3MjQ1MyBjMTQyZTQ1Mzg5NDFlNjNkZDBiMjQ3YmM4ZmMzN2FhNjBmOTc4Zjc5IHJlbGVhc2UzMC1tYWludAorNzI0NTQgMTFhZDY1NDU4MDlhYzdiZmM1MTkxYWZjN2M5NTQ1MTdhZDQ0ZWY2NiBsZWdhY3ktdHJ1bmsKKzcyNDU1IGIzYjE1NTU4M2UwNTVkMzk4MTdkZGI4OGZkNzk1MzA1MjU4ODQ3ZGYgcHkzaworNzI0NTYgMTdmNzc3NGY3NGRkZWI2YjQ0MGJlMTQzOTk1YjA1YmNlMGRjODliZiByZWxlYXNlMjYtbWFpbnQKKzcyNDU3IDFjZDFiMjE0NTJkMzk1MjY2ODU5ZjZjNWVkZWM3ZDY2YThkMjI2MWIgcmVsZWFzZTMwLW1haW50Cis3MjQ1OCBhMDE1YTI5ODU0M2RkZWIxOGMyN2U4NzM1NmQ0MzdiZjBhMmVlNmIwIGxlZ2FjeS10cnVuaworNzI0NTkgMDQ2YmQyYTQxMzIyZmFlYWRhN2Q4ZmM3Y2M5ZGZkZDNiZmJiMzhkMyBweTNrCis3MjQ2MCBhMzZmYTJjZTYxYjFmM2NiNjg0NmY1NzJmNTQ3OWUzZjVhOWYwOTQwIHJlbGVhc2UyNi1tYWludAorNzI0NjEgMWVjZGNhMTFlYjllYzI4NjQwMzYzNDRjODVhOWI1NjZmYjhmZWMzOSBsZWdhY3ktdHJ1bmsKKzcyNDYyIDI5OTNmMDQ5ZTJjOTUzMzNlNmQ3MjkyMjI0NjM2MGU3NDI3MjA3ZjIgcHkzaworNzI0NjMgNTQyMGRhZTM1NWY3M2M2MzUwMWNmOWE3MjY1Y2VhNzZkYjgxZDFiZSBweTNrCis3MjQ2NCAzNzQ5N2E3NzkzYjJmZjczYjA4MWFjNjA2YzlmZGIxMzUyMDkxZGY2IGxlZ2FjeS10cnVuaworNzI0NjUgZjFmZjg3YjliNDM3M2IyYjRjOGNkNDBhODIyMGYzZDI3NGZlYmJiNyBweTNrCis3MjQ2NiAyMzg1MDI0NjA3OTViYzYwZmU3OTczNGMwMWE1MTMzMjhkMGEyNjlkIHB5M2sKKzcyNDY3IDY2ZWNjODk2YjdlNzNhMDU0YjE2NjNhOGFmMTkyYWQ2ZjMwMmM5ZTQgbGVnYWN5LXRydW5rCis3MjQ2OCA5YzdiY2I3ZTc0OGMxNjI0N2RlNDk0ZTcyMWJhNDJlMWU3OTNlNzJmIGxlZ2FjeS10cnVuaworNzI0NjkgYTZlNmE1N2NjY2MyOWE0ZTU1ZTkzOTI0ZGZmODQ0MzgwZTlhYzJjOSBsZWdhY3ktdHJ1bmsKKzcyNDcwIDUyODBmNzU1YjQ4YTE0YjQxYTI4NGE2NzNhMWI3ZmQ3MDg2Y2UzNmIgcHkzaworNzI0NzEgNjk0ZWUyMGM4Yzc0M2JlYjY5YWExNzE0ZTViZjYzMWQ4ZGY4YmRjMSBweTNrCis3MjQ3MiBiYTRlNmEzYWY1NjRlZDcwZmViZTg3YzlmNzY1M2I1ZWM5MTZjY2NkIHJlbGVhc2UzMC1tYWludAorNzI0NzMgNWVhNTQ2MzU3MjI2ZGRhZGY0MTVkZTM1YWNkMjdmZDYzYzQ1ZTkyYSByZWxlYXNlMzAtbWFpbnQKKzcyNDc0IDE3MTI1MjNmOTM2YzUwY2U1MGNhN2JkNzI3OGVjM2M3YmQ2NWFmYjAgbGVnYWN5LXRydW5rCis3MjQ3NSA1ZjIxNTc0Nzk3NDk1ZDU2MDZiYTU4OTBmMzAzMmQyMzcyZDQwNWJkIHB5M2sKKzcyNDc2IGQ0ZWZjNzMzODcwNmJjNGJhZTk3NTQ2N2M1ZGIyMjk2NDEwNzIzMDMgbGVnYWN5LXRydW5rCis3MjQ3NyA3YTllMDgxZWNlNGMzZGExYzQ2MGE0Nzg4ZjJjZTg5OTY4ZDg3YWQ5IHB5M2sKKzcyNDc4IGNiN2JlNjNiOTFkODVlYThhZWZlZTE2NWU5N2ZkZmU0ZTg3M2M2YTggcHkzaworNzI0NzkgMGRhZTdmZWZlZDQ0MDVjODQyZTRkMWQzMmVkZjQyYzE1M2I3NDYyNSBsZWdhY3ktdHJ1bmsKKzcyNDgwIDhiOTg5N2QxNWNmYzgwY2VlNmU4MDE2MGZkNTRhMmQzZWRhNTg3YTEgcHkzaworNzI0ODEgMjA4NjlkOTc4YjhiNDMwOWE5MmIyN2JhNzliNjczZjhkODZiMTFlNCByZWxlYXNlMjYtbWFpbnQKKzcyNDgyIGI4NjdjZTM3NWU5OGNkMGQyMzNkNjc0NWQ2ODFmZjI5MmRhZGQ1ZjggcHkzaworNzI0ODMgZjQ5NTAwOTZlN2Q3YjQ3Nzg4OTY0MGJiZmFiYjBkNDRiYzllMDYzZCByZWxlYXNlMzAtbWFpbnQKKzcyNDg0IDA2N2E2MzlkNWY3NjU5MjJiM2M0YWY4ZDQyNzhmMWYzMDAyMWU3YTAgcHkzaworNzI0ODUgMDcyMmYyMDRkMjZlMDQ1YmVlZmVkYjk2MGRlMGI5ZTU1Nzc0NWY1ZiBweTNrCis3MjQ4NiBmOTE3YWFlNzQxZDVlNjFmZmZkZTFlOTZkYjIyOWFhNGFiMWI5MjdkIHJlbGVhc2UzMC1tYWludAorNzI0ODcgYTE3MTA0OGRhZjc2ZjQyNTc3NzA4MGEzYjY5ZTIyZmZkMGIwNjU2NSBsZWdhY3ktdHJ1bmsKKzcyNDg4IDllZjY4M2Q0MWM5YjIyMjk3YmNjNGIwNWM5NjVkNmZhYmMzZTczMmIgbGVnYWN5LXRydW5rCis3MjQ4OSA1MTBmZmM1ZGIyMzI1ODljNzY5M2E0ZWFjODgyMWQzNWZjZmRiY2NmIGxlZ2FjeS10cnVuaworNzI0OTAgNDQ2YTE1YTFiZWU4ZmQwNjk0NDA4Y2ZjNDQ2YzEwYTY3ZDUwZDAxZiBweTNrCis3MjQ5NCAxMTllNDMyMzQwMGQwMWM4MjJlYjFlMGM3NWZhNWVmMGU2YmNiNjE1IGxlZ2FjeS10cnVuaworNzI0OTUgNzM5ODZhOWNhMWQ2M2RmYjU5NTRmNjk4OWU4ZmNlNjZjNWIwZTM4ZiBsZWdhY3ktdHJ1bmsKKzcyNDk2IDFkNzk0OGNiNTQzMDAwYWYzZDFmZjE0NjA2MzdhYTYzNmI1NDNhODggcHkzaworNzI0OTcgY2NmZGExNGQxNTU0ODFmNGU0ODcwZWViMmFlNzVmZjQ3NjYyMzBkOCBsZWdhY3ktdHJ1bmsKKzcyNDk4IGQ2NjYwM2RkM2IyZDcxOGFiZTFmNzY2NzczN2NlMGI2NWI4NmEzMjEgcmVsZWFzZTI2LW1haW50Cis3MjUwMCBmOWQ5ZWVjNmJlNjcwMTc4NDdmZDdkN2MyNzdmYzRkMzhiYWY3MjBkIGxlZ2FjeS10cnVuaworNzI1MDEgOWY3MTNmNjA1ZjYwZWZkNWY0NGI1YmM1ZjFkMzcwOThjNjIwOTZjZSByZWxlYXNlMjYtbWFpbnQKKzcyNTAyIDM2ZmMwNzk4NDE3ZjE0ZTZkNmMzYzQzNTQ1NzE3YTk4NWQ0OTkzNWIgcHkzaworNzI1MDMgOTlkZDI5ZTI0YmRlM2Q0ZWU1ZDA2OWYwZGM5NjY0Y2FjNzQ3YzNjNSByZWxlYXNlMzAtbWFpbnQKKzcyNTA0IDk2MmI0ZmY3NmNjYTIxMzQ1NzUzM2M4YWQ3NjE1NGJiYWMwNTZiNGQgcHkzaworNzI1MDUgOTIwN2Q0MjkyMDNhMWM1YTk2NTJkODM5OTg5YTU0NDBmYjZlOGM2ZSByZWxlYXNlMzAtbWFpbnQKKzcyNTA2IDA3MmE4YTdjZTk3M2NkZGU0NjRlODk1MGY0MTRkYjUzMjA1ZDgyNTMgbGVnYWN5LXRydW5rCis3MjUwNyBlYjZlYjQ5ZGJhZTllYzdkY2YyMjFlNDZiN2U4MjdlMGQ2ZDhjMmM1IHJlbGVhc2UyNi1tYWludAorNzI1MDggZjkwYjNlZWM3YzMyNzhjNWY5MGRhYWYzODg2MzJjMTUyYjBiYzFjNiBsZWdhY3ktdHJ1bmsKKzcyNTA5IDVkZDNiMzhhMDk3NzhhNjY3M2NiZmM2ZTA4ZjdiODZlNTE0YjJjMWIgbGVnYWN5LXRydW5rCis3MjUxMCBiNzkyMGUxODM0MjI4ZjVlZjc4NGJiYjJhNmZjZDMyNDJhMmUxYjk1IGxlZ2FjeS10cnVuaworNzI1MTEgYWZkNjJlYjE2OTJlZjFhY2JhYmViMWM5YTA1OWYxY2Q2MzBjOTE4YSBweTNrCis3MjUxMiAzMGVkZDdmNjEwMWJkOWE3ZjZkYTkzZjJiYWQwODcyMzk4ZjNhNzk3IGxlZ2FjeS10cnVuaworNzI1MTMgMzI3ZTIzYTZhNjEwMjBhZTBlMWFmNjg1Y2U4NzczNTdiYmQ3YzY0MSBweTNrCis3MjUxNCAyNjFmNTk0MDE0YzYyMjVhM2U5NWM2NTE1NzBjNjZlYjY4ZmExNjRhIHB5M2sKKzcyNTE1IDFiMTVhNTdlMWYwMmY0YmJlMDEzNWEyNWE4YmRlMjExNWZhOTFlMjIgcHkzaworNzI1MTYgZDJiMTc2MTYxYWJmMGIzNjZjZWZjNmUzNzZmNWY0MjI0MmQ4OGM0YSBsZWdhY3ktdHJ1bmsKKzcyNTE3IDcyYTUwMzk0YzJkZGU4MzliNzM2Y2MwOTRmMGRlZDUyNDFmYmM5NmEgbGVnYWN5LXRydW5rCis3MjUxOCBhYTQxYzhjOTYwNTUwMDZmMDczZmJmYjc5NTE5YWU5ODA5ZWFkNGE0IGxlZ2FjeS10cnVuaworNzI1MTkgMmI0MDY1Mzg4NjZkOTA5MTc2ZGYyZTk5NjA2YWZmNDk4MGQwODFlMyBweTNrCis3MjUyMCAyOWI1MThmMjk2ZGUwM2U4ZTQ3Mjc4Yzk0NjQyNTQyMjlmODRhMWE4IHB5M2sKKzcyNTIxIDA1NmFhNzY5ZGE4OTFhMTBmMmU3NjQ1ZGZkMzAwMjY2OTI3YjY2MzAgcHkzaworNzI1MjIgNTcwMmQyZGFkMGY5ZWM4ZWUwZTc1YmUwZDI0NzRhMjM4NGQ2YWIwYiBweTNrCis3MjUyNCAxMzExNzcyOGQwODZkYTQyNTlkNDVmMzkxNjRkOTgzNTQ2YWNkYmNkIHB5M2sKKzcyNTI1IGE3YzUzZmFkMTNiYzM2ZDIyMDJjYjYxMTJjMDBiZjNjYjg5MzhjZWMgbGVnYWN5LXRydW5rCis3MjUyNiAzZTg0ZDYwMTI2YjdlMDI5YzA4MmQwOTFkOGNjNDk3NzRjOGQ3OTk3IGxlZ2FjeS10cnVuaworNzI1MjggZmJjZGFlM2UwY2ExYmVjMTBmNGRlZGQ5OWIzNTJjNGIzYmNiZWZmOCBweTNrCis3MjUyOSA3YzI5YmZiZmQzNTI0NGQwNGM0Mzk0NTg1MTUxYzAxOTc4Mzc0OGMxIHB5M2sKKzcyNTMwIDQxYzA5ZTE0MmJkMDA2ZTIwOWZmZjE0NDkwYjUxM2ExNzdlZmY5MGIgcHkzaworNzI1MzEgZTkxYTc3YTQ4MmViZTRlMWRhOTVlNWRkNTRkOWRlOTg0Yzc5MjBhZCBsZWdhY3ktdHJ1bmsKKzcyNTMyIDM1ZTk4MDNhMmY0ZTQ1ZTQ0ZGU5OGE1ZjM5NzAyYjdlY2ViMzQwMjIgcmVsZWFzZTI2LW1haW50Cis3MjUzMyAwNTA3NDJiYjYwZDViMTczNzRhMTlkNWFhZGQyY2FjMDEyZDMxYTA3IHB5M2sKKzcyNTM0IDllNjdjMmY5OTljOWNjYzYzZDc3MTRlNjcyMGZiNWJlNzE1M2IzN2MgcmVsZWFzZTMwLW1haW50Cis3MjUzNSBjNjBjZGEzNDE4YjU0ZjY1MDhjYWYyMTdjYmEzNmE1ODU1NTY2ZThlIGxlZ2FjeS10cnVuaworNzI1MzYgOGEwNDc3N2I1OWNiZDBhZTg1M2IxZjZkMDYyY2YzNjliYmQ3ZTIwYyByZWxlYXNlMjYtbWFpbnQKKzcyNTM3IDUyMjRhMjU4ZDViYjA0ZTIwNzliMzMwM2IxZDUyZDRmYzNlZWY0NjMgcHkzaworNzI1MzggOWE2ZjVlMDUzMWE2MzE4NjMwNGQyYTJmYzY5MWIzNzVmMzNlOWZiNyByZWxlYXNlMzAtbWFpbnQKKzcyNTM5IDFiZWM2NGI4ZGQxNzZhYTk1MzZmY2Y1MWNhM2ZhNjU1YmYyYWE5ZWEgbGVnYWN5LXRydW5rCis3MjU0MCBhYzQ4OTQ2OTM0MTFkNDE3ZWVhMmU1MzZkY2NiNmM3ODUxYmMwZjMxIHJlbGVhc2UyNi1tYWludAorNzI1NDEgODg4ZGFhMDAzZmMzY2UzNThiZmY3ZDJmNmU4ZTU2MTc3ODU1NTk1NCBweTNrCis3MjU0MiA4NmEzYzlhOWM2ZGU0MWFhYjdiODFkZGFmODQ2ZDY5ZDM0ODcwNzk4IHJlbGVhc2UzMC1tYWludAorNzI1NDMgMTdjNTNmYTM3ODkwMTY3MTBkY2ExZGMyMjM3MmNkMmNlMDA4OTBjMiBsZWdhY3ktdHJ1bmsKKzcyNTQ0IDg4MDNhZTBkZjNmM2E1NTZlNDI5N2Y1MTY2YzFhNjc2ZDc0MjQ4NDIgcmVsZWFzZTI2LW1haW50Cis3MjU0NSAyNDFkYWEyNTlhZjk2YzNlOTIxNzc2NmQxMmY3ZDI4ZDU3YjJiMzVlIHB5M2sKKzcyNTQ2IDI4MWQyZTIzYmRiMmQzZmMyNTk3MWZmOTA3NTQ4ZjA0ZjdjNGVhZGYgcmVsZWFzZTMwLW1haW50Cis3MjU0NyAxOTI3ZThkNzkxNDc3OTU3ZDE5OTc5YTUyMGU1NDllMTJlMzE2OTA0IGxlZ2FjeS10cnVuaworNzI1NDggNGFlMDFhMjQxNjUwZDU2NDhmODNkZThmMTQ3MGUzZjc1ZGJiOWM3MCByZWxlYXNlMjYtbWFpbnQKKzcyNTQ5IGY5ODIyODlmOTNjZmI4ZTM0ODBiNzUyYWUyNjk5YmFlYjk4ZGU3OWUgcHkzaworNzI1NTAgYmRjZDA1YTgxYWNiYTBlZTM4OGJlODBlMzUyNmE3ZDQ3NzJkOWU5YyByZWxlYXNlMzAtbWFpbnQKKzcyNTUxIDYzMGU2ODExMDBlMDhlNDkyYTg1MDI5Y2NhODdhZGNiYjBkOWE2YzIgbGVnYWN5LXRydW5rCis3MjU1MiBkNjVkNzE4OWRlMzJjZDNlYTU2M2U0NjM1NWJlMTRiMjg3NWQxZWVmIGxlZ2FjeS10cnVuaworNzI1NTMgYzc0NzFjOTExYWQyNGVlM2RhZjFlNjk5YTMyNzQyOTZhZDIxYjQ0NyBweTNrCis3MjU1NCBlYTJlNDI1ZDFmNjAwY2IxYmZhN2ViNTM2NjQwMzE4NDM2MTA3MmE5IHJlbGVhc2UyNi1tYWludAorNzI1NTUgZDAyYjBlNzA3Mzc3ZDNlYzY2MWE2OTM3NDNjYzRhNGQ4MmNkMDlmNSByZWxlYXNlMzAtbWFpbnQKKzcyNTU2IDZlN2M3ZjQyNDQzNmI2Nzg4MmI3NGI5MzljOGNiMGZlOWVkZjIxNDMgcHkzaworNzI1NTcgMzQxNjcyMTQ4MGIyMWM1Zjk2MmEzNmJjOTkyMjExYTcyZWRiMWI2ZiBweTNrCis3MjU1OCA0ZWJjZDAxNGYzZDA2YTA3MWRmNjE0NDQ4ZTc3NTlmYmZhNDUzMTY0IGxlZ2FjeS10cnVuaworNzI1NTkgMDQ5NWJjNDdjZDA4NmE5N2JjZGM4ODQzNWU2MzYwNjI5ODJlZTY4ZSBweTNrCis3MjU2MCA0YjQxNzQzZjY1MjdjYmM4ZjMxNDRmYjg1NTNhMzgzMjkzOTNiNTQ5IGxlZ2FjeS10cnVuaworNzI1NjEgNjFjNWJkYjI5NGY5NTE4NWE5ZGVmY2U1YTVkMGYzYjY4ODU2NjI5OCByZWxlYXNlMjYtbWFpbnQKKzcyNTYyIGYyMDA5MzcxOWMwZWZmMTA1NmM4NjUyYmMyMDY5ZTU3YmY0ZWVkOTcgcHkzaworNzI1NjQgMTE5ZjQyMzJhZjQ2MTgwYTY0ODY5NzNjNjliY2FiNmVkNDMyZDE0MCBsZWdhY3ktdHJ1bmsKKzcyNTY1IDk0MTRjMmIxOTIzZWRlYThkMzVjYzc5NTBjNDM1ZTRkZjQ2MzJhZTYgcHkzaworNzI1NjYgMzVjNmQ0MDdkM2M5ZWQ0MGIwMjNkZTBhNDNhOGI4ZjNlNWI1MmEzYSByZWxlYXNlMjYtbWFpbnQKKzcyNTY3IGU5ZWRjYWY0MjU0NzNkOWYxYWE2M2Q4NDNmNTVkODI3MWQwODVlMjAgcmVsZWFzZTMwLW1haW50Cis3MjU2OCBjMmUyYjQ3YTg3YzE0N2I0NGJiN2M1Y2NjMDI1ZDk2YjI3NTViNzg3IHB5M2sKKzcyNTY5IDhhN2U4NGFlNDZjNWRkODU2ZjM5MTlhN2U0NzFmZGM2M2FjODI2MWIgcmVsZWFzZTMwLW1haW50Cis3MjU3MCBjY2ZjYTI1ODc4ODUzZTkxN2NmMzE3M2Q1ZDNjMWEwNTA0OTZmMmExIGxlZ2FjeS10cnVuaworNzI1NzEgMjIyNzdkZmZjNTcxY2FlN2ZiZDgxYTUzNTg1NDNiNDFjMGRjYjk0MSBsZWdhY3ktdHJ1bmsKKzcyNTcyIDg5MzA1NDhhZjczNGUwMjZmMjZiZDRjMGExMjhhNGRiZjhmODY4YzYgbGVnYWN5LXRydW5rCis3MjU3MyA4NDYxNmViZjJiNGZjMDg3Yjg4NzZkMDhmNTRmZDhkYTg0YTE4M2E0IHJlbGVhc2UyNi1tYWludAorNzI1NzQgNWQwZjVjNTcxMzU3OTdlOTc4NWJhYmRkNDBiMWZjODNlY2Q1ZjQyMyBweTNrCis3MjU3NSBhMjZhZjg1YWI4OTUwYjVmMmM3MTA4NGU2ZmNlMWNlZDQxMmM5ZDBhIHJlbGVhc2UzMC1tYWludAorNzI1NzYgNTljYjljMDc0ZTA5N2FjN2MyYjdlYjQ0YzIyZjI3MWUzYjJhODU0NiBweTNrCis3MjU3NyA5NDJmMmQ2ZDVjNWNjM2M2ZDJkMmVjNWMwNzFiNWIxODQ5Y2MzMzkzIGxlZ2FjeS10cnVuaworNzI1NzggYmQ4MGZiODM2YjllOWZkODU4YWQ1YmJkNTBhNGVlNzM5OWI1ZDRiYiByZWxlYXNlMjYtbWFpbnQKKzcyNTc5IDU0NjA0Njg4YjNlOTdiZDMwZjMwNmU3ZDNhNzI5Y2IwOTQ5NDI1ZTEgcHkzaworNzI1ODAgMTM1NzMwMzQxMTQ4N2M1OWRjNDY1YmFkZWRiNmFkN2JmYzVjMWI3YSByZWxlYXNlMzAtbWFpbnQKKzcyNTgxIDI1ODIxOTY0NmUzYWRiOWRlYzIwMGI0YTc4M2QzN2MyNzhhOGZkODEgcmVsZWFzZTMwLW1haW50Cis3MjU4MiBkZmU1ODY1ZTVmOTgwOWNjNWU0YmFmNzEzNzUwNWU2NDFhOTYzOTVjIGxlZ2FjeS10cnVuaworNzI1ODMgYmVhYzBiNDFjZmIxNGZlYzEwMjY0ODEzYmRmZWE0YTYwYTVkMjk5MiBsZWdhY3ktdHJ1bmsKKzcyNTg0IGVmZTEyYWE4ZWYxOWNkMTUxYTYwMGQxYjQzYjYxNDNlYjUzMDk0MTkgcHkzaworNzI1ODUgZTgyMDlhYjQ5NjkxNGUyODM4MDQ1MjQ2YjAwOWI0OWZjMGQ3OWJiMiBsZWdhY3ktdHJ1bmsKKzcyNTg2IDE1YThmNGYyYmM4NDg0NWUyMzllMzBlNWYxMWI2YWU3ODQyZGY3ZTEgcmVsZWFzZTI2LW1haW50Cis3MjU4NyA5MjRkYmI3ZmM2YzU3ZmIwNjFiOGFhNjQ3NTIxYjU1OTU1N2RhMmE4IHB5M2sKKzcyNTg4IGI2Mzg1NzAzNzAzZTFjYzc4MWQzNWNkZWU0ODk3OGMxZTRhYjA5YmYgcmVsZWFzZTMwLW1haW50Cis3MjU4OSA1ZmNlMTRlMWQ3MDMyYzJjZWUzMzAzZTk1YjE4Yjc5OWMwZTlkMmU5IHB5M2sKKzcyNTkwIDc4ZmI3ZjhjZDM0OTIyZGYxNTcxZTJhZTkwNWM2NGFhN2FiNjVlMmUgcHkzaworNzI1OTEgYzJjOGQwZGRmMTg3N2E5YmFlNGU3MjViMWU3NTVmMmMzOWU1OWNhZiByZWxlYXNlMzAtbWFpbnQKKzcyNTkyIGQ4NWJkNDk5ZjNmNGVjZTdhMGQyYzA3MDNjYjlhNmRhNzU4ODllZjUgcHkzaworNzI1OTMgZDIyMTI0YzY0NGZmYTRiODQ1MDNjODY2YWMwNDQ0ZmU3Y2FlODBiYSBsZWdhY3ktdHJ1bmsKKzcyNTk0IDczNWVkMTc4ZGZhZTUyNWJlYzE5NDkyMThlZDI4NGE4ZGU3MTJmYzggcmVsZWFzZTI2LW1haW50Cis3MjU5NSAyYzFkOGYyZDM4Mzk4ZmYyOTVhNjgyYjdmZmQ2NTk4ZDZjNTA4ZmRmIHB5M2sKKzcyNTk2IDA1NDY4MDViMzAyMmEwNjVmODI1MTcwZTMzODdmZjk3MjllZTQ2ZTggcmVsZWFzZTMwLW1haW50Cis3MjU5NyA2NDE5ODI4ZWY2NWFjNDgxM2NjMTA1OTA3OTcyZWQ4NDA3YWM0MzgwIGxlZ2FjeS10cnVuaworNzI1OTggNGViZTZiMjYwYzU1YmJjMDM0MjRmNjc0ZGYzYWZiMzVkNjFhYzQ5ZSByZWxlYXNlMjYtbWFpbnQKKzcyNTk5IDE5ZTk1OTYyNjEwOWYzMjQ1ODNhN2IyZmM1N2E5ODViYWVkMjQ3ZDggcHkzaworNzI2MDAgMmQ2ZmY0YTk0OTUzY2Y5NDM1Y2NjZGQ2NmQ1N2RlODE5OGQwY2JlMCByZWxlYXNlMzAtbWFpbnQKKzcyNjAxIGJiYjkxMWY3YzBjMjlmM2NhYzI3ZmIyM2YzMGRkMmRkNTA3OTQ1YjIgbGVnYWN5LXRydW5rCis3MjYwMiBmNTBlZGQ0YmI0OGY4M2I4ODI4ZjhlZGU3Yzg2MGE4ODhhNGFlOWIzIHJlbGVhc2UyNi1tYWludAorNzI2MDMgNjg4ZDk0ZTg2Y2EyODhkZDQ1YmFkMzQ5NjQ1NWYyODdkYjhkODM2MSBweTNrCis3MjYwNCAzNWJhNjVmMWNjODE3OTYzNWRmMDYwMDU3ZTI0NTM0MmU3YzIwMGIzIHJlbGVhc2UzMC1tYWludAorNzI2MDUgMzQ3ZTU5ZWExYTcxZGE2ODFkYmZlNmI0Mzg5ZTIxNzU0NjcyMzZmNSBsZWdhY3ktdHJ1bmsKKzcyNjA2IDMxOTUyNDUyNDg1YmZhMmI0NjBhNDVjZGQyN2E0ZTliYjZkYzMyMTggcmVsZWFzZTI2LW1haW50Cis3MjYwNyBlOWE3YWVlOGU4MDA0MWUxMGQyNDYxMzg1MGRmMGQ2MWZjOGFlZDY4IHB5M2sKKzcyNjA4IGJkMmY3ZTEzZmQ3M2VkZmQwNGVkN2Y1Y2Y1ZTMwNjIzMTA0YTUzNTIgcmVsZWFzZTMwLW1haW50Cis3MjYwOSAwMjMxODc2ZjMxMDQzZDE4ODYxMzgwMmFiNjU2ZmZlZmI0MmJhNTIxIHB5M2sKKzcyNjEwIGM1MTgwODI2OTIxNGQyMjMwODBkYjY0ZDViZWFkZWE2MWU0NWExMTkgbGVnYWN5LXRydW5rCis3MjYxMSA5MTM3N2RhNTRlZGU5NTg0YWVjMDRjMTk1NTliZjZkY2IxMzJiYWMxIHJlbGVhc2UyNi1tYWludAorNzI2MTIgODgyZDk3OTU0NTI2MGFiNTYwODRmN2EwNzdhYTViYmRlZmZkYmYwNyBsZWdhY3ktdHJ1bmsKKzcyNjEzIDhmNmU5MTIzNzAyNzQyMjgwM2FkYjdkNWQ5ZGI4OTBmZjU5Mzk0ZDcgcmVsZWFzZTI2LW1haW50Cis3MjYxNCAzMjNlMWQ4NDhiNWZmZmFmNzIxN2M3NTU1MDY4MThjYWM1ZDA4Y2JiIHB5M2sKKzcyNjE1IDhjN2NjMTZkYzc5YzQ4ZWQ3NWNiN2ZiZjI0YTM5ZmUwYzU4M2IzMTcgcmVsZWFzZTMwLW1haW50Cis3MjYxNiBhNmM0Y2RmZGE5ZDZkNTA3OTU2ZDcyYzEyNWVmMGQyN2Q0NmNiMWJhIGxlZ2FjeS10cnVuaworNzI2MTggYmY2OTkwMjY0NThlNDkwMjRhOThhMDZmMjBjODYyMGNlNTVhYjM5MCBsZWdhY3ktdHJ1bmsKKzcyNjE5IGRkZWU0ZDA1ZmExN2VhMWRhNzFjYzE2ODZjYTM2MWE2YzQ5MWM3ZWMgcmVsZWFzZTI2LW1haW50Cis3MjYyMCA3ODE0YmU2OTY3YjhiYTA4ODU4MWZkY2EwOWU4ZThhMWMwOTY2MzUxIHB5M2sKKzcyNjIxIGJlY2E2ZDdjY2M5MDc3MWVjZGU5OTYxNzU3NWM4ODMwNjYzYTg4OGIgcmVsZWFzZTMwLW1haW50Cis3MjYyMiAzYTVmNmI2MzM0OTkzNDk0Njk2MDI3Yjc3NGVlOThhODM2MDBiZTNhIHB5M2sKKzcyNjIzIGE2OWU3Y2MwNDliYjVlYzk5ZTc4NGU5Mzk5NmRlZjE0ZTI4MzE5ZjQgcmVsZWFzZTMwLW1haW50Cis3MjYyNCA2N2JhZjJjMTczNjlmODRmNmU2YzM4NTlkOTQzOTEwMjc4MjkyOGVkIGxlZ2FjeS10cnVuaworNzI2MjUgYjA1ZDQ3OWQxY2IwYWRmYWJhODllODUxMThhZmUxNjMwYWVhOTU2OSByZWxlYXNlMjYtbWFpbnQKKzcyNjI2IDM5MWRiODBkMWFmNGNmMjZjYmJiM2E5YzhiNDMwNjAxYjc1ZjU4MDAgcHkzaworNzI2MjcgMzdmOTBmMmY0MDM0OWE4Y2YwZWZmYjZhZTgwZDEyNGNhMmZkODRiMSByZWxlYXNlMzAtbWFpbnQKKzcyNjI4IDFkMDQ4YzlmNDNkYzY2YTAyYjYyYzg3YzcyMmM5OGQ4NTBiOGY5NTIgcHkzaworNzI2MjkgYWE3N2ZkODYyNmJhOTc3NzEwYzcyMzY2ODY3MjVkZjk0NTc3NjU1MiBweTNrCis3MjYzMCBlOTYyMTI5NjY1ZDgwNDQ3NWIyYmYxMTY1NjlhMzllNTNmM2Y4ZDNiIGxlZ2FjeS10cnVuaworNzI2MzEgOTBhODEwMmQ3ZWZiZDY5MDBkZDEzYWI4MDZmNjk2YjVjYzdmYWUwNyBweTNrCis3MjYzMiBjNzJkNGZjZTMwMDA1OTdkYzEyNTkxMjMwNWRmYWE2MTM4MDFkZGYyIHJlbGVhc2UyNi1tYWludAorNzI2MzMgNmQ2OTE0MTc3ZjYwMjY2YjVkYTA0NDczMzk4ZDZjMDc1NGFkYjljYSBweTNrCis3MjYzNCA5MTAzMDkyNzYzNzY3NGRmNWIxMzIxOTdjODZlYzBhYTZmNGZmNGVhIHJlbGVhc2UzMC1tYWludAorNzI2MzUgMDdiNWYyMGQwMjVhODdmNzkzYjZhMzEyZjk0NzA3ZGZhZDcxYThhYiBweTNrCis3MjYzNiAzOGUzNTQ2MDljZjJkNTY2MmZmYzg4YzA1OTI1Y2JiNzUxMmQyMDQ2IGxlZ2FjeS10cnVuaworNzI2MzcgMmE3Y2UxM2NlYTI1MDgzZjk5NjJlYWUxYmE3NTA5ZGZkNzUwYmVlZSByZWxlYXNlMjYtbWFpbnQKKzcyNjM4IGU2OTEyMGJlNjVjNDUyNzkwOWQ5YTFmMDI5MTA0OTdmMWQxNDA3YzIgcHkzaworNzI2MzkgMGZjZjJhY2RlNDczNmQyYWRlMDhmNjdmMmRlMzQzZjY5YWE5YTcyOCByZWxlYXNlMzAtbWFpbnQKKzcyNjQwIGU0ZDkzN2Y3ODlhMTEzMTRmZTFiZDJlOGIwZWFkZmMzMTRiMDNiN2QgbGVnYWN5LXRydW5rCis3MjY0MSA3M2Q5Yjk3MzU0MjQ4YTkwYTg4MmY1NDFmZjcyMTE2NWMwODExYTQ0IHJlbGVhc2UyNi1tYWludAorNzI2NDIgM2M0YjFiNDUwMWMxYjRkODcyMzJiNGI0YTg3YjQ1YTUxMTc1ZDUxYiByZWxlYXNlMjYtbWFpbnQKKzcyNjQzIDZiZTU4NTRlNWRmN2FhYmFkNjI0ODVhNzMxN2E3OTEwOTBjMjkxNDcgcHkzaworNzI2NDQgN2UzZDdiNTIyNGIxZWFiNmFlYWQyMjNlMDI0MTk4OTIzYTNjNGU5NSBweTNrCis3MjY0NSA5MWVhOGZjZDQ1N2U1YzE0MjM0Yjk2ODhkODk2YzQ0MWRjMTEwMTBmIGxlZ2FjeS10cnVuaworNzI2NDYgYWIzMGIyMzdiNjAwMDliNzI3ZjhjYWJjOGNiMjNiNTRmOTJmMDhjYyByZWxlYXNlMzAtbWFpbnQKKzcyNjQ4IDE3ZDE5NDY1NDBkNDc4NzE5NjAyZWE1NGJiNjg4ZmFmMDE1NGMyOGUgcHkzaworNzI2NDkgZWUyMTU2NDlmYWUwNjA4Y2M0ZTkyNWYzM2E0OTI4ZmRlZjFjMmI0MCBweTNrCis3MjY1NCBmYjAxOTcxOTQ5YTU1NDU1MDIwZDRlYTAzNzBmMjQ2MDlkNzhkZjEzIGxlZ2FjeS10cnVuaworNzI2NTUgZTQ1MTg2ZWRhYzkxOWFkYmFhNzY0OTk4N2NmMzNlYTAxMWNiMzFhOCBsZWdhY3ktdHJ1bmsKKzcyNjU2IGY3NmYyM2FmMjI5NWFlNTM2ODU4ZmNiNWE0MzVmNDUwNjczMjMxOTYgcHkzaworNzI2NTcgOWQ1MDM3MDc0NDRlNDE4NzhiNWY2YjgzM2NlNjM2NDI3ODU3NTc2YyBweTNrCis3MjY1OCBiNjAwZTUxMDNjNjNlMjNlYmQ2Yjg2OWI2OTg1NThmNGUwNWIwM2U0IGxlZ2FjeS10cnVuaworNzI2NTkgYjMzYjQyNDliMTg1ODUyMjA4Y2Q4NWExMWY5NjE1ODg1ZjhkNmU2MyBweTNrCis3MjY2MCBlM2RmY2QxZmUyMTBkNjU1ZTY5NmVjODFmM2E0OGQ0NmUwY2ZhNTU5IHB5M2sKKzcyNjYxIGE3YzM0ZjcyOGYwZThhZDEzOWFhZjUzNWE1MjZkOWYwMWYwZmMwNjcgbGVnYWN5LXRydW5rCis3MjY2MiA5M2VkNjhiOTk5ZTc1N2NlZTk4MjgyNTUzMzZhZTRkNWRkMmNlZWYxIGxlZ2FjeS10cnVuaworNzI2NjMgODhkOTY1YmU4NjE3MjVkZmYyMTUzNjJiMGIwMDI4YTBiZGFlOTkwYyByZWxlYXNlMjYtbWFpbnQKKzcyNjY0IGQ5MDJmMzQ5NDQ5OTYwOGMyZWMwNDM0NmRjNDY2ZjcyMTBlNDYxZWMgcHkzaworNzI2NjUgZGQ5MTU4ZmIwODY3ODNmNDhmOTFkYzkxNjliNDJhYzgxOWU1NzQzZCBweTNrCis3MjY2NiA5YmIyYTEzNzFkZGM0MDA1MThmMjBkYTY3MWU1Nzg2Nzc1MjM0MzFiIHB5M2sKKzcyNjY3IGU1ZjI4ODc2YWU2YzkzYmFlOWU4NzBlYjRkNjgxM2I0NDdiNWFlOGQgcHkzaworNzI2NjggMGQ4ZGI4MWE3ODZjNjhhY2YxYWZlMzdhMWVkOGRhNzdjZDg3Nzc3MyBweTNrCis3MjY2OSBjNDBmMTg3YWY2ZGRiY2Y3OThhMTc0YTJjMzhjYjY0ZGM2MDcxOGZlIGxlZ2FjeS10cnVuaworNzI2NzAgODVmYjRjMjI5YTljZWMyMWM4MTM1NDZlMjk4NjY2MmQ2OTkwZTRlMiBweTNrCis3MjY3MSBiNDI2MWRhNGVhNTBjMzc2ZjQwODQ2ZmU1ZWU5NjI2MTA4Yjk4ZjBhIGxlZ2FjeS10cnVuaworNzI2NzIgY2Q0YTc4MjdlZGI2OGE1NjlkMGRjNmE1ZTYyNjM0ZmY2YWU4NWY1YiBweTNrCis3MjY3MyAxOGIyZjJjZDA3NDFmNGEyM2QzZDBlOTIzYWZkOWE0NjYzNTRiNjNiIHB5M2sKKzcyNjc0IDk2MTA5NDcwNTM3MDI5MGNjNWZkNzgzODlmODI1NjAxMGQ5YTFjMzEgcHkzaworNzI2NzUgOTBlMmJmZTRmNjBlN2EyNTI0MmQyYjViMjgxN2E4OGI5Mjc1OTg2NSBsZWdhY3ktdHJ1bmsKKzcyNjc2IDM0YjYwYjczNmFkMzNkNTQ4MzY2NWU5ZDAzOWQ3YjE1NmMyMTIyODMgbGVnYWN5LXRydW5rCis3MjY3NyAyY2ExMThjYWFlNzE2YTdjNzZkOWYwYjhkYWVmOGE2NWUwMTczZmRhIGxlZ2FjeS10cnVuaworNzI2NzggNzkwOTkyYmVkZDYxZDFlN2FmYzEyZmRjZWM4NWI2NGJmZTBkNWI5ZCBsZWdhY3ktdHJ1bmsKKzcyNjc5IDhlOGU4N2MxZWNiN2VjNTdkZTE1MDNjMWQ0ZTA4MTE5OTdkNzJmYzYgbGVnYWN5LXRydW5rCis3MjY4MSBkNTE0YThiN2FlNzhhZTJhYmFjNTBkN2UyMzM3ZWY3ZmE2YTJkMmRkIGxlZ2FjeS10cnVuaworNzI2ODIgNDNmYzQ1ZDNjYjIxNmI1ZTU0ODY1ODEzZTk5NWVhYWExOWMxN2E5YiByZWxlYXNlMjYtbWFpbnQKKzcyNjgzIGFjNjYwZWEzNWY1MjVkYTM2MmMxYmI2MGZmMmM1MGM1NTFhOWM0ZDIgcHkzaworNzI2ODQgYzNkNGQ5M2M4OWUyNTdlZTZjYTAzOTZhYjE3ZThkZjM5ODVkOGE0OSByZWxlYXNlMzAtbWFpbnQKKzcyNjg2IGYxYmY1Mzg3ODZiN2M5ZWJiNWMyMWE1MTdlMGRjZGViYzg5Y2Q5ZmIgbGVnYWN5LXRydW5rCis3MjY4NyA5ODhjYTk4ZDkxOTYyYmZiMDJmZWJhNjRhYTYxYjA0M2NiOTFjNzg4IHJlbGVhc2UyNi1tYWludAorNzI2ODggY2E3ODQ3ZDNjNDUxOTRmMGI4OTRjZjQ0NTRiM2ZmM2ViYzRiNTk5ZiBweTNrCis3MjY4OSAxZjhhY2NkMWY0MmFkMDA0ZWZiYzJkMjVjYTg1ZjQ4ZTc4MmJhNzBmIGxlZ2FjeS10cnVuaworNzI2OTAgYWUwMDYzODZlYzM5M2IyNjM0ZjNhNjZmZjYzNGUwMmRiNzY5YzUzMiBsZWdhY3ktdHJ1bmsKKzcyNjkxIGY5Zjk5N2MxZmQ4MTNjNzUzMGE1NTZhZjY2MGMxNjc3ZjdlN2RmZjcgcHkzaworNzI2OTIgNjk1NjdhMDVkNWU2NTczNmRjMzA0YmI3OTU3ZDk5Mzg0ZGNhMzlmYiBsZWdhY3ktdHJ1bmsKKzcyNjkzIDNhYTZhODYzZmYwNjkxZTU4Y2RiMjU5MmIyYzQwNTIyZTk5ZGViODcgbGVnYWN5LXRydW5rCis3MjY5NCAxY2I4MDRhMmUwMzg3OTY5N2EyZDRhYTg5OTJiMGRmNDJlZGJkZTY4IGxlZ2FjeS10cnVuaworNzI2OTUgYTE5OGU4ZDM2ZWMzYjU3ODAxY2YyOTMyMmUzNjM1MDQ3ZDVlNWZmOSBweTNrCis3MjY5NiBhNTM1OTYwOTQ0NDQxMzg2ZTQ0NDdkODBlODdlMWU2NDkyNGUwMzIxIGxlZ2FjeS10cnVuaworNzI2OTcgODNkZDJiMjUyYTI3NjQ2YzhhYTE1NmM5NDhiMTE2Yjk0ZjMyODI5NiBweTNrCis3MjY5OCBkNjRkNDdlZTU0YTE4MTY4ZmQ5MmYyZWI0MTMzOGVjMmMwMGJlNmFjIGxlZ2FjeS10cnVuaworNzI2OTkgZGNkYTQ0OGNhNjZlODcyNmI2NjhmNmVlNDA2Y2I0ZTdjY2YyMWJkMyBsZWdhY3ktdHJ1bmsKKzcyNzAwIDBlM2FjZTlmNzUxNmRiNGZmNWRmOTNiOTAzZjYxZGQyODMxMWY1OGMgcmVsZWFzZTI2LW1haW50Cis3MjcwMSA3N2NmZWY1OTZkMzM1MGI1OTcwMmRmMWQ0NTMyZTNiZDcxMDJjNTkzIHB5M2sKKzcyNzAyIDkwMWI0ZmZmZWExZjgwZGVjYWI3MjRlMzQzMjY4OWZjNzUyNjdmMTAgcmVsZWFzZTMwLW1haW50Cis3MjcwMyA5YjkyZDJiODZiYWFlZjIxMTRlMDhmODgwZTVkZTk0N2E5Mjc4MDIxIGxlZ2FjeS10cnVuaworNzI3MDQgZDI3MzJlYTk5YmEwODg4M2Y1OGNjMmI0Y2NiNWI2OWFjNzYzYzUyMCBweTNrCis3MjcwNSBlOGYxYTAwNzc3MWFhOTBiOGYwOTJjOTUxMjAzMmM0ZWYwMjE1MDUwIHB5M2sKKzcyNzA2IGIyMmIyZGFhZWI0NGYzOWU5YjMyNzRjY2YwOWExMWU5ZGUzZGIwMDQgcHkzaworNzI3MDcgZDg0MWY5NzI0M2I1NzRhZDg1MzNlNjk0MDg3OTA5ODhlMmI2YWZjMCBweTNrCis3MjcwOCBiNTJiOTJmMzFmYTg4OWMxYTU0OGFlZWUxYmNmMGM3NmFkOGFlYTNkIGxlZ2FjeS10cnVuaworNzI3MDkgZjQzZmMxMTkzYzJhYjM4ODQ3NTY5ZGVhNTlkNjcwMDkwZTkxNGQ1OSBweTNrCis3MjcxMCBlOWMwOGZmYTk4OTUxMzVhOGUxZDkzMjEwMzdhNjE1M2E2OTUwMmUxIGxlZ2FjeS10cnVuaworNzI3MTEgMTBjYTExZTU5OGU2OTNjZjM3MjY4MjRjYzcwODIzY2IwYjA2ODJjNiBweTNrCis3MjcxMiBjNWI5ODJhZjIwOWQ3YmMzOGIzNmM5MDJkNzhhYjNjYzkwYjIyYjBlIGxlZ2FjeS10cnVuaworNzI3MTMgZmU4ZDNmZDY2ZDI2NGVjMjA5MjNhZjlkYmQ4OGNmNmZkOWJhYzcwOCBsZWdhY3ktdHJ1bmsKKzcyNzE0IGI2YjQ1NGIwNmE3YjM1Y2ExMWEwYTI2NTE2Nzg2YjZiNTM5ZGY3MWUgcmVsZWFzZTI2LW1haW50Cis3MjcxNSBmYzc5MzVkZThlOGFkYThjNmM5NGQzNTM5NjhlNWE3NWFiZDYxNTE1IHB5M2sKKzcyNzE2IGQ0MDcyOTc1NWVkZmNjMjcyZWVjYWQzZjAxOTAwMjM0ODhmYTM4ZDggcmVsZWFzZTMwLW1haW50Cis3MjcxNyAzNWJjZTgwYTI1Zjg5OTg2YWViY2ExNDc4MmYyNGYzNTViOTU0NzU3IHJlbGVhc2UzMC1tYWludAorNzI3MTggOTliNDAwODYxNTQzZWE0NDIxNjdjZjk2ZjkyZTJjOGZjMmVhOWE0MiBsZWdhY3ktdHJ1bmsKKzcyNzE5IGFkYmM2NjJmZjRjMWQyOGFiYmQwNTIxZGI1NzJhMGZjMWJhMTdmNWUgcHkzaworNzI3MjAgMGU4YzhiMGQ4NjY5ZTQ5ZDU4MWI1ODQyMGIzZTI4Y2FiY2Q3MDNjNCByZWxlYXNlMzAtbWFpbnQKKzcyNzIxIGYyNTM4MTgzZDI2MjFmYTAwOWFlMmNkZDcyZDI4MTFiMzMzZTkxZDUgbGVnYWN5LXRydW5rCis3MjcyMiA5ZDgxZTJjNDM4ZGI5NzFiNWNiMDlhOTA1ZWViMWFmM2ExNmE4ZmU4IHJlbGVhc2UyNi1tYWludAorNzI3MjMgZTIyMTczNjFlYjM3YTdiYzg0ZjE3MTI2ZWRjOGY2ZWZhZDgyYzBlZCBweTNrCis3MjcyNCAxMDhlOTBiODkyM2VhMmVhOTVjZTBjYjE4ODhjYmVjOWQxMzI2ZTVlIHJlbGVhc2UyNi1tYWludAorNzI3MjUgODA2ZWYzYTFmODU4ZDE0MjZiZGMzMGI0OTNkMjQ5ZGQ5YTZiNGMyOSBweTNrCis3MjcyNiAzNjc4YjJkMzYwYzY5ODU0ODlkNTA2MTE5NjliM2JjODE1NjExMDg4IHJlbGVhc2UzMC1tYWludAorNzI3MjcgZGYzODI2NDcyZTNiZjkxY2RlZDdiOTQwZWQyYzViOGU4NmRiMjlhYiBsZWdhY3ktdHJ1bmsKKzcyNzI4IGYwYjA5ZDA1MzljMDk5NTc0Zjg1NDI1OTViZDE5MTkwY2RhZWIwOWEgcmVsZWFzZTI2LW1haW50Cis3MjcyOSA1NmFkZjg2NGYzODA4ZGQyMjhiY2E4NGE5YTk4OWRmOTZlNjFkZjYxIHB5M2sKKzcyNzMwIDhmZmVhZjY0OTk3MDhlZDZmNzZjYjAzNGNkYTM4YzIyM2Y0MDI5NTUgbGVnYWN5LXRydW5rCis3MjczMSBjMDA5YjJiMzQ4MWY5Y2ZjNWVkNjIxOTlhNTllMDA0NDRiYzNjZjJkIHJlbGVhc2UyNi1tYWludAorNzI3MzIgODc4MzA0NjFhYjQyOTcyYzgxZjM2ZTI2ZTkwYWRiNmFkZWU5MmQ0ZSBweTNrCis3MjczMyA3NmE5ZjljYjQzOGY1MDkzZjNlYjA2MWFkNmJjZDNiZGNhZjA5YzYzIHJlbGVhc2UzMC1tYWludAorNzI3MzQgNzExNmRlM2RiZTk4M2E2ZGYzOTUyN2MwZWIyMmI1MDFjNjRjMzBlNyByZWxlYXNlMzAtbWFpbnQKKzcyNzM1IGY2NWRlMzZmMTg1YzVjZDUwM2ZkNjAyNGQzMTQ3NWNmYTg3NzlmMjggcHkzaworNzI3MzYgMTc4ZjcwZmM0NzhkNzk2YjZhOWE5ZWUyN2M4Y2NjYTMzMjEzMWNlOSBsZWdhY3ktdHJ1bmsKKzcyNzM3IDNiZmRiOGQ3MjU2MGZjZmIyZGM3YTBhMjM5NTkzNDRhMDQxNmU4YTkgcmVsZWFzZTI2LW1haW50Cis3MjczOCBmYjU5YTUyNjRhZTI1Yzk1MDg4YjU1YjM0NzY4OGFmZWJiYTM4N2QwIHB5M2sKKzcyNzM5IDgxYzU3OTAwYTE4MjVhODAzYThmZDhiYTA1M2YwNmI4ZWUzOGJkMjggcmVsZWFzZTMwLW1haW50Cis3Mjc0MCBmYmIzMzM5MGIyNTQ5YjJmNGUwNTA5NWM2NmU4YjFlODg3ZjE3YmZjIHB5M2sKKzcyNzQxIDkwNGExYmQzNWUwMDg5MmI1NGM4NzBmNDRlZTIyYTllNWZmMDI1NDAgcHkzaworNzI3NDIgZDE0M2ViNjI0Y2Y1ZTJmYmZiOWMyZDNmYmUyZmYwMjE0Y2EzMWMxNCBweTNrCis3Mjc0MyA3NGI2NzQ4YjYzZjVmY2FiMWYzMGRiNzdmYzZmZDA0NTYzYTlmYjIyIHB5M2sKKzcyNzQ0IGQwOTk0YTQyYjU5NzViMjYwZTc1YjgwMTMwNDg3YThhN2MxYTY1MTAgcHkzaworNzI3NDUgNDFhNjkyNjI3ZWViM2M1MzM4MDQ3ZjE0N2ExOWNmNzY5N2FhZmRlZiBsZWdhY3ktdHJ1bmsKKzcyNzQ2IDdjYjBhNDU0N2YwYTBmODMyYmY2NmU3MzZjM2U4ZWI2YTMyYzdlM2UgbGVnYWN5LXRydW5rCis3Mjc0NyAwZmZjOTU1ODdkN2M0NTYwMzQwNWFiYmM4OTcwNDUxYzlmMTViYzQ4IHJlbGVhc2UyNi1tYWludAorNzI3NDggMTdkMDc4YzVkNjViNTIyOTlmMTFiY2M4NmY1NDA2YTk1NGE0ZWI5NSBweTNrCis3Mjc1MCA1OGQzYzQ1NGJjMzcyNDM4YjdhMjgxNjU2YjczNjdmYmFhMTY4ZDYzIGxlZ2FjeS10cnVuaworNzI3NTEgZjkzNWI5NTk4MDM5OGQwZDFhZjQyNWYxMjFmZWJlMTFmY2RiYWFlYSBweTNrCis3Mjc1NSBhN2FkMTY5Njg2NmI0ZGQ5NjkyZjFkNDUxMWI4ZDA2NzljYmNjMDdmIHJlbGVhc2UzMC1tYWludAorNzI3NTcgMmI3Y2I0MmRkZTExNjdmMDU3NzU3MDU4ODQ1OThjNGYwNjk2YmYwZiBweTNrCis3Mjc1OCBlM2JiNmI2MmJkMGY1MDc1ZDU3YzllMzFjMTRlMmJmNGJmNjFiNjM1IGxlZ2FjeS10cnVuaworNzI3NTkgZDQ3M2ZiYTRlYzY3NTdiMDg1NDAzODI0YWYxZDBjNmY5MDQ3NjE3MyByZWxlYXNlMjYtbWFpbnQKKzcyNzYwIDk0ZDI4M2QzZDAwYmY3NGI3MTc1MDc0MGEyOWQ1ZmMzNDQ2MTA5MTIgcHkzaworNzI3NjEgNmEzNTlmZDI0NjY5M2Y0OWFmNjQwYjBjM2EyM2Q2NjUxYWM3NTE1ZSByZWxlYXNlMjYtbWFpbnQKKzcyNzYyIDE3MGRkZjk2MGZkZGQ4ZDkzOTIwNTc5NDE4OTk3OTVmNTY4NzQ3MjkgcmVsZWFzZTMwLW1haW50Cis3Mjc2MyA3MWVjNGZjNjgzYWY5MjYzNGJjMzA5NzA4MzkwYmE5MThjZDYwOTM4IHJlbGVhc2UzMC1tYWludAorNzI3NjQgMTQzYWVjYzgwYjZiNmQ1YjAzNDM1NmM5ZDdhZDZmMDBmMjVmYzIzZCBsZWdhY3ktdHJ1bmsKKzcyNzY1IDJkMDZhMzJhMTJlMzcwNmZlMGI1ZDMxYzA2NWNhMTQxMjQ5MGUzMzggcmVsZWFzZTI2LW1haW50Cis3Mjc2NiA3MzdiM2Q0YWNiYjlmYjcwMTdhZTQyZmU4YzA2M2Y3YTJkZmQ5ZWY0IHB5M2sKKzcyNzY3IDY4ZGNlNjU1MDZkOWZhYWIwMjZkM2Q0ZDZkZjk1NTg4YjNlODkyZDEgcmVsZWFzZTMwLW1haW50Cis3Mjc2OCA4ZDI2MWI3NmRhNDZiZjk0YjYwZWYxZjMwZTEyMzBlZWFmMTMxOGEyIGxlZ2FjeS10cnVuaworNzI3NjkgY2VlODBkMDZmN2NlOWM0NjM4YWRmYjFhZWY1YjhjZTFjMDk2YjhkZiByZWxlYXNlMjYtbWFpbnQKKzcyNzcwIDlhMDdlOWQ2MDkzYWRhNDJlMTFkNDhkMDI3YzYwOTY5ZGVjYjcxY2UgcHkzaworNzI3NzEgN2ZmN2JlZjMyOTExNjk0NDMxYzE3NzBiNWZiN2Q2NTk3NGE1YjVmNSByZWxlYXNlMzAtbWFpbnQKKzcyNzcyIDAwZWJiZjFjZTkzNjAyNjgwMjlhMmFmMjc5OWY2YmExM2VlZTZmMmUgcHkzaworNzI3NzMgYWUyMGYxZWJlYzIxY2NlYTM4OTM4YTZiZjY4MTVlMDBiMGIyY2U1MyByZWxlYXNlMzAtbWFpbnQKKzcyNzc0IGRhY2FkNDI4MzZkZDYwMGM3ODk0YzBmNDhhYTUwZDAyY2YyNTc5ODEgbGVnYWN5LXRydW5rCis3Mjc3NSBjMTM2ODg3ZGI3ZWZmNGNiMDFmYzNlMWUzNGRjNWU5OWQ4NjViN2M5IHJlbGVhc2UyNi1tYWludAorNzI3NzYgZDgzNTBkMDQ0Y2YyMjhjZDZmOWY3Y2RiNzY3MjMxZDMxMjMzMTQxMSBsZWdhY3ktdHJ1bmsKKzcyNzc3IDYzOTUzNDdjMDI3NjI2YWQzZmQ3YjVkMzUwNzc5ZTk1ODcyNTEyZTggbGVnYWN5LXRydW5rCis3Mjc3OCA5NDVjNjU3NDQ3ZDIxZTY2NzhkODQ1NjUwYzA5ZTFjZWZkZDFjMjI0IHB5M2sKKzcyNzc5IDhmMTczNjNiOTNlNmVkMWM0YTdjYjI2ZjFiNjYzZDIyZGEyOTFmOWYgcHkzaworNzI3ODEgODgzYWNlN2VhNDQ2NjY0MGVhMWU3ZjZlNjM0MWViNmFkZWU5NTYzMiBsZWdhY3ktdHJ1bmsKKzcyNzgyIDI5MDFiMTNmYmQ3ZTYyZTRmNmIyMjhiZjhjYTJhMmI4Mzg0MmM1ZDkgcmVsZWFzZTI2LW1haW50Cis3Mjc4MyA5Mzk0YTgyZDhkZTE2OTVmMmUxOThiNGNhMDMzNjIzMDk3ZDhjNGY1IHB5M2sKKzcyNzg0IDY5ZTk0MzRlNDUwYWRlYmRjYTJhNzkxNjJlZjQzNTEzMjI5NzQ3MjUgcmVsZWFzZTMwLW1haW50Cis3Mjc4NSBmNzY1MGEwZTkwYWRiNWY2Yzg0ZmY0MmExMGM0YTIxZGJjNGExOGI3IHB5M2sKKzcyNzg2IDc0YmRiMGU1MjEyYmRmMjIxNmQ1MTRhMzc3ZWI2NDY4NTkxMWVmOWEgbGVnYWN5LXRydW5rCis3Mjc4NyA3NmM0NDE0ZDEwYTZjMWMxNjJlNDU0NWEzYzBlNWM0YzUyMTgxMTYzIGxlZ2FjeS10cnVuaworNzI3ODggNmZkMDA5ZWMyMjRhNzM5ZjhmZDFkZGNjMTU1OWFjMTBmYWY1MGM0MSBweTNrCis3Mjc4OSBhYjIzZmYyMDQ3YWEwZDhhOWE5NWQ2NDc0NGQ2ODZlMjAxZGIxMTdhIGxlZ2FjeS10cnVuaworNzI3OTAgYzdmZDc0MWM3MmViZWJkZjRjMmE0N2M5YzdlZDFmMGEzNjJlNTU3OSBweTNrCis3Mjc5MSAwNTYyODNhNWM1ZGEwMDJlZGRhMWZiNmZmNmRiMGUwNmFjNzNlNWZlIGxlZ2FjeS10cnVuaworNzI3OTIgZjI3NWQ2YTBhMWQxNzc5NzNlNDE0MGFiYTAzMTE5NDA2YzhmMTFlOSBsZWdhY3ktdHJ1bmsKKzcyNzkzIDZmYWI4YmQxNWQ3MTBkODUxNzdmZjdmMWJlMmE4M2Y1YmMwMjhjZjMgcHkzaworNzI3OTQgYTUyY2VjYWJmZmQ0YzMyODAwMTA0M2U1OTRiODMxYzM0YmE0NDRjZSBsZWdhY3ktdHJ1bmsKKzcyNzk1IGJkZGYxMWU2MjIwMDAyYTkyZjY1NjAwNzBiOTc4NTdkZWRiNjgzNGMgcHkzaworNzI3OTYgNGNlZWVmYjg1NTVlNjM5YWE5Zjg4N2U0MWMxNGVjMGYyMWMyYzZiZiBsZWdhY3ktdHJ1bmsKKzcyNzk3IGFkNzcyMjYxMTFiMjYzMGFkYjM2NTViM2Q1ZTE2MzE0MGIxNzI2MmIgcmVsZWFzZTI2LW1haW50Cis3Mjc5OCAwODNiYTI0OTA1YWQ5MTk3ODI4ZjI0YTU2MWZkZGY2MzFjY2QwZmI1IHJlbGVhc2UzMC1tYWludAorNzI3OTkgNGZhNGNhNDUwM2M4ZGY2MWU3OWJlMDRkMzUwYmFkMzk2OTI4NmY2ZiBsZWdhY3ktdHJ1bmsKKzcyODAwIDdlMmE2YzFkYzlkMjIzNjNmOTFiOTJjYWVhNGYzZGQ1OGJkY2U5NjAgcHkzaworNzI4MDEgNmU0MGFkZDNlZTAyYTdhZWNjMzA3NjFlYTg1NzY0OWVlOTc4MzdkMCBsZWdhY3ktdHJ1bmsKKzcyODAyIDAyM2EzNDI4ZjFhZWY2OGQ0N2ZhYzcyMWQyYTk4NTQwYjk4NzllODIgbGVnYWN5LXRydW5rCis3MjgwMyA2NzBmYTBjMGZmOWFmMmU2NzExZmZkZjdkZTNjODA3MjYxYWRlODQ0IHB5M2sKKzcyODA0IDg5MjEzMDRiNWY5MjJhNDE1YmRiN2EwZGQyNGIwYjk3MDJhODZkYzEgcmVsZWFzZTMwLW1haW50Cis3MjgwNSBkMmNjZDg5ZThlNmI5NTEzZDJlOGM2NDllZDY2ZTkyYThiODAyNjliIGxlZ2FjeS10cnVuaworNzI4MDYgMzc5ZTYzYmNiZDA0NDhmNmEyMDY3MWVjNjllMzgyNGRkNGVmOGFlYiBweTNrCis3MjgwNyA5M2Y0YTlhZDI2ZjY4ZDMzYmY4MWI4MmEwOTM0ZjY0MTE4ZmMxNGJmIHJlbGVhc2UyNi1tYWludAorNzI4MDggYjMzMjZmZTYzMmU1YTc5M2UxOTZkOTE0ZWQzODBjMmE2YjU0NjA2MCByZWxlYXNlMjYtbWFpbnQKKzcyODA5IDJkNmZmZjlmZThhYjczNmZmMjFhNThhYWY5ZTZmZTU5YmUwYThkNGMgcHkzaworNzI4MTAgNDUwMWI2MzhmYzNmMjk0MGQzMmJlYjZhZjY2MTVmYjFiNzc3OGZhNyBweTNrCis3MjgxMSA5ZDY0NTdmM2EzZWRmNDVhMGUyYzk0OWVmYjBmZDQ4ZGY1MzY1ZWRjIHJlbGVhc2UzMC1tYWludAorNzI4MTIgZWI5YjFhYzNkOWQ4NzA0NmZlZmNlNTY2OGNmMzBhMTlhZTIzZTFkOCBsZWdhY3ktdHJ1bmsKKzcyODEzIGNjMDU1NzM1NjAxNGJkNWViZDdmMmE3NTFkNzNlOWY2OWMxMjU0ZWIgbGVnYWN5LXRydW5rCis3MjgxNCBkNjFhYjA0NGZkZjRkMTgwYjU0ZTQxOGQ3NDk5NzFiODQxZTAxMGVhIHB5M2sKKzcyODE1IDYwNDQ0NDUwMmVhMDI3N2YzODgwMzU4NDIwNWU1ZDk4ZjUyN2RjMWQgcmVsZWFzZTMwLW1haW50Cis3MjgxNiAyYzM1YjgxNmFjMGRhYWRhYjljMGMwODIwYWViNjFkYTQxZDk1MDc1IHJlbGVhc2UyNi1tYWludAorNzI4MTcgMWI2MmJmZmQyZWYyZTBkNWZlMmJmYTQyOGNjZThiZDY4NjgzZTljMiBsZWdhY3ktdHJ1bmsKKzcyODE4IDQyZGJiZWU2NmMzMjJhYzY0NTkwZjUxYzI0ZDZjZjhkOTliMmM0NDYgcmVsZWFzZTI2LW1haW50Cis3MjgxOSA0ZmJjZTZkM2ZlODYxZGU3Y2Q1YTc2MGM5NTA3NGIxOWM4YjdiYmZjIHB5M2sKKzcyODIwIGZhZTNhNzdkMjAzMjE5MTk3YzBjNmU5MmM5NTk2NGVjOGI0ZmQwYWQgbGVnYWN5LXRydW5rCis3MjgyMSBiNjZkYWZiNDA2NDk0MzM1ZThiMzNlZTViMTI0YzUyMDA2OWIzZmRlIHB5M2sKKzcyODIyIDYwNzRmYjQxMTYyMTZkMTIzZTdhZWU5Njc4Njg2Njg1M2MwYjFlNjggbGVnYWN5LXRydW5rCis3MjgyMyBjODNhMTcyZWU5MzFlNTc5YzM3MmM4Yjk2OTBhMmYwZjcwN2YyYTIyIGxlZ2FjeS10cnVuaworNzI4MjQgZGZlODhkMjAyMTgwZWRkOWZmNTliNDUzZjViZmVlMTNkZjYyNDdmZSBsZWdhY3ktdHJ1bmsKKzcyODI1IGFhYjExN2U2YmIxNmMyN2EyYjEwMWE1OGEwZjJlZTcxYjNjMjdhYTAgcmVsZWFzZTI2LW1haW50Cis3MjgyNiBjNDA4MDc0NzNhMzc5ZDQxYjNiMzVmYjNhOTkwNjk2NDg2NjBhYmJmIGxlZ2FjeS10cnVuaworNzI4MjcgODQwYTA5ZGU2OGMzZDE0NThkZGZlNTQ5MjQxNmZlNWU1YjE1YTczMiBsZWdhY3ktdHJ1bmsKKzcyODI4IGYyMjdmZjM0ZTMzZDQ4ZjIzNDFlNTNkZDE1Mzk5YjljNzdjYTk5MmUgbGVnYWN5LXRydW5rCis3MjgyOSAzNTQwNDViYjczMjYxNTg5YmRlMzUzZDE3M2YwMmNiOTQzNDgyNjBlIHB5M2sKKzcyODMwIDczZGM3Mjg0OTg1M2QxNGExNTYwN2E0YmJkYzNmMTljYWNkNDhiNmQgbGVnYWN5LXRydW5rCis3MjgzMSBkYzQ3ZjdjNjVkMzA4YWQ5NGEwNzhlODU2NmYzMWIxMzQ5MDA4MDUyIHB5M2sKKzcyODMyIDYzNjRlOTExZTRjYjM2MWZlZDU0NDliYTQyOWNjYWI4YmY3MzU4NjUgcHkzaworNzI4MzMgMjU5Yzg2NTVjNTkyMzAzYTU0ZTAyN2IwMTI4ZDY1YjM1NjFkNzc5NyBsZWdhY3ktdHJ1bmsKKzcyODM1IDk4N2JiNzM0ZTM3NmMxODdkODFiNTEwZjQ5NzJjNTYzM2Q5OTVhYmMgbGVnYWN5LXRydW5rCis3MjgzNiBlNWRkMjQyOWFjYjMzZWFhMGRiZjZjMTlhYWJmM2FiNjg0Nzg1ZjNlIHB5M2sKKzcyODM3IDhiZWQ2ZTZiYjk4NDJiMWQzNjJkNGVmYWYwMjZiMjE0NzVlOGVlOWIgcmVsZWFzZTI2LW1haW50Cis3MjgzOCBkMGVhNzhlOTI0YTY5MWFhNDg4ZDE4NWVmZjQ3MDgzZjIxMDE4NDBmIGxlZ2FjeS10cnVuaworNzI4MzkgMDRhNGI3ZGYyZDRkMzBmNjkxNmUzZjBmNmYzMDgzMWMzMWQ1MmRkYiBsZWdhY3ktdHJ1bmsKKzcyODQwIGM4ZTFkN2YyMjUyYzRmMGM0ODg0YTI0NTcwOTlkNTkyNmYzYzQwZDIgcmVsZWFzZTI2LW1haW50Cis3Mjg0MSBmMjQ1NGQ3MTI5OGFjZDU5ZjNjYTI0OWIwNTRlZmM2ZTVkMGFhZTg0IHB5M2sKKzcyODQyIGFiMWI1YWMzNDRkNzk4YzgxNDIzNmI0NDA2OTllMzA5NWI3NTQyOGMgcmVsZWFzZTMwLW1haW50Cis3Mjg0MyBlYjIwYzk1MDA2Yzc2M2MzZmEyZWM5Yzc3YTVjYTlmMjI3N2RmYTdmIHJlbGVhc2UzMC1tYWludAorNzI4NDQgMjUzZWNhZTY0NzhhNGM1Nzk1YWJkZTVmOGI5NTIxOTFhM2FkODcxNyBweTNrCis3Mjg0NSA0MzViY2EwNzgxZTNkYmI4MDY1NjQzMzY2OWFmOTg0M2MxNTRmYzRhIHJlbGVhc2UzMC1tYWludAorNzI4NDggNzNmNjI3MzFiMWU2ZTRlOWQ0NWNjNzM3M2IwYmM2NGRhODdhYmZkMSBsZWdhY3ktdHJ1bmsKKzcyODQ5IGQyZDAyOGY2NWM3YzYyMTRmNGIzZWQ1ZmRhZTI3YzQwMjMwMTcxY2IgcmVsZWFzZTI2LW1haW50Cis3Mjg1MCAyYmNhYzA4Y2ZjNmRiZDk2NmQ2Njk5Yzc0NGUwMjhmZDVlYjg5NDhmIHB5M2sKKzcyODUxIGU5NjU3M2U3YzUxODdkZThhN2Y4MzQxZDA2OTVmMzJjMGE1YjRmNTEgcmVsZWFzZTMwLW1haW50Cis3Mjg1MiBjMDhiYmI4NDA2MmUwMTU1ZDQ1MmM4ZDcwYmYzMzc3NTU3OTFjOGNjIGxlZ2FjeS10cnVuaworNzI4NTMgM2U3YmM3NDkzNGExYzcwNzY2NjI0ODc3MjgzNGQ4MWUzYjY4MjhhNiByZWxlYXNlMjYtbWFpbnQKKzcyODU0IGQ1YzU4MmY0NmJjOTRjOGM0NzAyNTAxMmEwZTEzOWZlMTZiMDkwNjAgcHkzaworNzI4NTUgN2NjMGZiMDc2ODQ3MWE4NGM2OTU4NDU1ZjdhMDhmNTZjMzRlNDg3YyBsZWdhY3ktdHJ1bmsKKzcyODU2IDFiNjg5ZDU3ODg4ZDU1ZTUxMTRiZjRiNDYzMDI2ZjAxZGI2M2YxY2IgcHkzaworNzI4NTcgZTA2NDU0YzJjYzBiZmZhZWNiNDIxZTgzMmZjMWJhODgzNWIwNTA3YiBweTNrCis3Mjg1OCBiMWUzNTFjYzU5Yjc0NzVhMjZkMGE5ZTExNzE5ZWE0NGQwMDlkYzljIHJlbGVhc2UyNi1tYWludAorNzI4NTkgNTRiYmZkNDFiZTY2OGRmYzIzYzA4MzUxMDIxMWFjY2RhN2U1NDEzMyBsZWdhY3ktdHJ1bmsKKzcyODYwIDlmZDFkNTRmNjE3Y2YwZjdkYzA0NTA4MzY5NmIzN2I1MTFjOTIwNTcgcmVsZWFzZTI2LW1haW50Cis3Mjg2MSBkZGM5YTE2ZmJlYThkYjlhZmRhNTJkODVmNTdhZjBhZmQzNTNkZTRlIHB5M2sKKzcyODYyIGU3OGUwYmRiYmFjNDgxNzY4ZGEwMjU4YWNjMThlNzM0YmM0ZDJhMWUgcHkzaworNzI4NjMgMGE3OGVmZmI1ZTBiNTIwNDNmMmI0NzhiNTJjYjk1OGU5Mzg0MTAwOCBweTNrCis3Mjg2NCBiZjI4NDMwODg1NjcxN2RiMDRkOWRlNWRmYTQ0MmMxZmI0MGY5ZGJlIHB5M2sKKzcyODY1IGY5ZDI2MDhlMjRlOGEzN2I0YjdmY2ZiN2U2ODJlNDYwZGYxZTY3YmMgcHkzaworNzI4NjYgOTk3ZWY2OGJmYTE1MTc5MGQ3ZTE4M2ZiY2U3ZjQxYTkxOTAyOTZkNCBweTNrCis3Mjg2OCAzM2E3Y2IyMGY1NThjYTUzYzUwODEwZjU0MTBhYjljZDk5ZmM0NWNhIHB5M2sKKzcyODY5IDI1MmQ4MWE0ZjY5ZDJlY2I2NGFhZjllMmNjYTMyZjgxNjE1N2QyMjYgcHkzaworNzI4NzAgODQ2Mjc3YTQyMjQ5MTA0NTU4M2QxNzVjNGVmZDg5MGU0ZTUyYjQ3MSBweTNrCis3Mjg3MSAxNTA5ODZhYjNkYjI4NGNmZDM4ZDY3YTFhY2UyZjA0YzI3ODBiYWU0IGxlZ2FjeS10cnVuaworNzI4NzIgYjI3OGI0YmRmZjFlMjIzOTVjNTBlZGE0ZjNlNDc4Njc1NTk1MDc2OSBsZWdhY3ktdHJ1bmsKKzcyODczIGUxN2MxOGE2Y2FlYzQ3NWRjNjM4ZTkxNDY1MzhlMWM3NGVlODA0ZjIgcmVsZWFzZTI2LW1haW50Cis3Mjg3NCA4OTYzMWY2Mjc4MTBlOGQ2MjIxZTc3YmZjY2Q1MzUwNTU2ZWVmZDk5IHB5M2sKKzcyODc1IGJkMmZiMWJlMTMwZWY0ZmJmMzZiODdlOGI0OTA2Zjg0ZTA1MTYwMzEgcmVsZWFzZTMwLW1haW50Cis3Mjg3NiBkYmE3NjdiYzMxNTVmZDJiYTQzNjg3ZmZjZDc0NmU5ZTk2ZGJiY2ZjIGxlZ2FjeS10cnVuaworNzI4NzcgZjk5ZjNkOGM1MWQ1OGZiZjBmNGMwZDMxMThlMzU2ZGFlZWIzZTFlYiByZWxlYXNlMzAtbWFpbnQKKzcyODc4IGQ5Y2UzZTc0MDY3NjU1Njk4YmEwNjc3OTVlNmFhNzliY2Q3YTY1NTEgbGVnYWN5LXRydW5rCis3Mjg3OSBkZGRmNDI0YmQ2Njk2OGMwNTk1ZDQyZWY0NDRmYzVmNjRkNWJlMTNkIGxlZ2FjeS10cnVuaworNzI4ODAgZTdiNGE0NDNmNzY0YWVmYmRlMWYxYWJmMzRhZmFkZGVmYzYyY2RmMyBsZWdhY3ktdHJ1bmsKKzcyODgxIDYxYmJlNWM5MDUxYmZlZjJjMzlhYzgyMzliNzQxNTAxMjVlMjc3MGMgcHkzaworNzI4ODIgYTU4MGEyZWUzMTI4NDM4NjdlNDZkMjQ5MDRkM2YyZmRiOTkwOTMxOCBsZWdhY3ktdHJ1bmsKKzcyODgzIDYyNWEwMDZhMjUzYjhmMTY0MWRlODgwNjcxNDU2ZDkyNmE4NDMxZjcgcmVsZWFzZTI2LW1haW50Cis3Mjg4NCA5ODk3OGU0ZmQ2MGZhMWNjNzYyMTQ5NTg4MTI3YzM5ZmE2Zjk0NGU4IHB5M2sKKzcyODg1IDgzM2U0NmMxNDk5YmQ3ODEyYTEzYTM2NjM2NmQ1OWMxZTc0OWM4MTEgcHkzaworNzI4ODYgNDhiNzVlYjAyNDM0Y2E2MzE0NjhlMTEzN2ZiYWFkYzQ5MTZkMTkwYyByZWxlYXNlMjYtbWFpbnQKKzcyODg3IDM0MjhhY2QzMWU0NTY0MjU3MDZjZWQ4Y2JkZWRjN2ExNDgxMDk1ODQgbGVnYWN5LXRydW5rCis3Mjg4OCAxZTJjM2U3ZmU2M2NmNDdiNDJkYThkOTRjNzMyOTFjODMyN2FmNzE0IHJlbGVhc2UyNi1tYWludAorNzI4ODkgM2QzMDVkZWNlNTY3NGRjNmRkMzQyOTUxOGQzYjU5MzBkYzIxOWVlMCBweTNrCis3Mjg5MCA1ZGMzM2Y0NjdmZjQ2ZjJmNjMwN2RhNWUzYTI2MTBjNGNjYjdmYjc2IGxlZ2FjeS10cnVuaworNzI4OTEgOWM3NDRkZmNmNGRlNzY1ZTc3MjNiNzU1YmY5MmI1MzdiMGQwZDFlNyBsZWdhY3ktdHJ1bmsKKzcyODkyIGI1ZTAwMGQwM2IyYzRmOTI2ZmM4MmJiZDFhMDRlZmM5YWU0MDNhZGIgcHkzaworNzI4OTMgM2JlMzdlYzQzYzFiYjM4NWZhNWJmZDYwMjg3NTE0Y2VjNjE3MWI0MyBsZWdhY3ktdHJ1bmsKKzcyODk0IGU2N2IxZDA3MWVkNjFmNWZkZmI4MDM2Y2Y3MGEzYmEzNDlkMGUyYTAgcmVsZWFzZTI2LW1haW50Cis3Mjg5NSA1MzhmNGU3NzRjMThlMjdmNjVlYzIyMTFhNDY2MmQzY2UxNGY0ZDlkIHB5M2sKKzcyODk2IDFmNDM3NTYxOWM5YzNkOWMyMjQ3NTQ3MzI3YzVjNzQ3OTc4ODFiMTcgcmVsZWFzZTMwLW1haW50Cis3Mjg5NyBiMDVmODRhZDhlY2IwYzNlMGQ5ZWZmMWUzYjA3YTEwNTkzMDY4ZTFjIHJlbGVhc2UyNi1tYWludAorNzI4OTggZjhjYWRmYjRhMWEyMzczODNlMjY0MWM2NTYxODgyYWEzZTcwYmRiMSBsZWdhY3ktdHJ1bmsKKzcyODk5IDgwMjQxNzVlM2NjNjk5OWIxYWI2YWE5ZmEyYjA2MjMxMmZjMGQ5MmYgcHkzaworNzI5MDAgYmZlNDAyODU5M2UxMTE4ZTE1ZDdhY2U1Y2MzMGY4YmExNTY3YWUwMCBsZWdhY3ktdHJ1bmsKKzcyOTAxIDA0Njg4YWE1NjRjODVlZjJiYjY1MGVjYjQ1ZDkyZTdhNjYwNzUwM2UgcHkzaworNzI5MDIgNTY1NDEzZWU5YzFiMzZkNjdmZjYzYjZmZjZkOGYxMTVmNmZlNDhiYSBweTNrCis3MjkwMyBkNzUwNzlkZTJlNDZlNDAwYjIyOGVlOTk4ZmUzOWI4ZjNjY2ExM2VhIGxlZ2FjeS10cnVuaworNzI5MDQgNzM5MWQ4OGIzZDgyY2QxODI3YTg0NTQ4MTE2NTA0MzVjNzI2NTkxYiBweTNrCis3MjkwNSBiOWM3OGZiNmQ3MWRiZDE2NjJiMTJkYzE1ZTQ2MTJkMWQwNmVlZmEwIGxlZ2FjeS10cnVuaworNzI5MDYgZWIwY2Q4M2M4NGFiZmYzNDc0NDdiNmFkY2JmMTUzNTMwZTk2MTEyMSBweTNrCis3MjkwNyAwYzYxN2I3YTcyN2FlMGFhYWFjOWVkZTZiMjkyYjYxZjFlYTUzNTQ1IGxlZ2FjeS10cnVuaworNzI5MDggZGIyMTI4NjlkODE0NmNkYWI5MGFjZWEwMGU5ZmViNDhlYzIwMzE2ZSBweTNrCis3MjkwOSBjNzQ5NjdmZWIwMjFhYTdhOThmOTJhYTZmYWYyNGYwZDNiNTMxZDIxIGxlZ2FjeS10cnVuaworNzI5MTAgNWFiMmY2Y2E2NWFhZmEwMDhiNzY1ZWMxNDZmN2U0NWJiN2QyOGQwOSBweTNrCis3MjkxMiAxNDUzNzZkZjNhZDcyOGY3MDUyZmRkOGI2ZWJhNjAwYTgzMTdmZWNlIGxlZ2FjeS10cnVuaworNzI5MTMgZjI5YmU3MTBjMTc0ZDFjMzQzNzc3MWQxNjk4NjUxOTE4NzAyOWNjZSBweTNrCis3MjkxOCAzOWQzYTc1ZmE4MjE4NDEwMmYzNDY4NWQ1YjYzOWM4ZGY3YTE0ZTFlIHB5M2sKKzcyOTE5IDVhZWE2MDNiMjMwODkzZTJjYTg3ODcxNjNkNDM1N2QxMDkzYmMyYWMgcHkzaworNzI5MjAgMGQ3NDYxYzA2M2U3OWVkYmJiYmMzODFhYmIyZGM3MTg2NDg3N2YyOCBsZWdhY3ktdHJ1bmsKKzcyOTIxIDE0ODBmYTNmY2FiNDAxMTQ1MWU1OTllZDYyZjcxMjUzNjU2YjIwMGQgbGVnYWN5LXRydW5rCis3MjkyMiA1ZGQxZjZiMTQ5MzkxZmE3ZmMzYTFmYWZkMzNiZTA5MmZmNjJlNTRjIHB5M2sKKzcyOTIzIGRhZGQ4OTcwYjMwMzc1NmJjNzM3NmY2MzUxNjNjYjQ0NDk0NzZlNzUgbGVnYWN5LXRydW5rCis3MjkyNCAxNjc1OWY2MmViMjI2Y2Q3MDFlMDFjYTFkNzVhNTBmNDZiNTdiN2I3IGxlZ2FjeS10cnVuaworNzI5MjUgMjg3Y2UzMGQwOGI1NDQwODQ2ZTYxMzY5MGVlYTVmZWQ5NDI5NWQ0YyBweTNrCis3MjkyNiA2OTlkYTZjNDY3ZGMzOGM3N2IzMjVhYzEyMGRiZGYwNTQzZjJkMmQ2IHB5M2sKKzcyOTI3IDM1NTQwNGVhMTE0M2ZlYTc5M2NmNTI5OGJkYTU2OWZkNDFjYjFiNGYgcHkzaworNzI5MjggNGQ2NzQ1MjkyMmY5M2ZlN2JlNGRlYTkxMTkwYjg1ZThiN2I2NTI4MiBweTNrCis3MjkyOSA4NGE2MGU3MTA1NTMwODNjYjQ0YTZkODkxMTExNGQxNTkwYTk0ZTk5IHB5M2sKKzcyOTMwIGFhYzI2ZGU4YjVkMGU0ZDZlMWYyYTYxNTRmYzJlOTg3MTkwMGRiZDIgbGVnYWN5LXRydW5rCis3MjkzMSBkM2RhYWQwZTdmNmY1Nzg3Y2Y3ZmVjODRhNmNkMDI2MGIxZTIzOWMzIHJlbGVhc2UyNi1tYWludAorNzI5MzIgY2RmZDAxN2NlZTkwOGM4ZmMzNTM5MWZkZmFlNjg2MTY3ZDk4ZmVlMSBsZWdhY3ktdHJ1bmsKKzcyOTMzIDNiNjEyNTY5ZDUzNjFmNzE3YzE4MzkxZTgwZjJlNmEwZTk3OWJiZjcgcmVsZWFzZTI2LW1haW50Cis3MjkzNCA5ODNkMjU2OTFiNjhkODBmODg1YzkxN2E0ZGVhYWU5YWE0MjQ3ZDI2IHB5M2sKKzcyOTM1IGEyN2E3MzljZWY3Zjg3OWFiZThhZDEyNjNmOTkyYjgzYTVhYzlkOTYgcmVsZWFzZTI2LW1haW50Cis3MjkzNiAwMjU4MzUxZGZhNjA0NDkyZjQ1YTE3Nzg1NzJmNDdkYjBhNDNjMjZkIHJlbGVhc2UyNi1tYWludAorNzI5MzcgYWNjMDc4NjZiMjMzMDNmZGVlNjVlOGRmMGNiNGRlYTM3NTQ1NzFjZSByZWxlYXNlMjYtbWFpbnQKKzcyOTM4IDM0MjU3YTc3M2VjMGRjZDM2OWRiYjMzYTJkNmYxMzY3ZTQzMzcyMWQgcmVsZWFzZTI2LW1haW50Cis3MjkzOSA2NTY0NjM4MmU0ZTAzZGU5ZWYxNWJlOGM4YTA1NzU4NjMzYjdhOTBkIHJlbGVhc2UyNi1tYWludAorNzI5NDAgYmEzMDVmZThlODMxMjAzNDc0NDlmYjM1OTQ0NDUxMDJlYmViZTkyNSBsZWdhY3ktdHJ1bmsKKzcyOTQxIDFjY2I2ZDYyNTcxNzMwNTNjMzFmODYxYjgzZmJiMjM4MjliYzI2NzAgcHkzaworNzI5NDIgOTAxMmZmN2Q3NWEyMTY1ZDFiZTgxZjE2MjFmZTk2YTJjMWZiODZmYyBweTNrCis3Mjk0MyAyNzIxYmU3YmUzNjU3YTQyN2UxOGZhZjhiODA1MGY3NjUxOWM3MjUzIHB5M2sKKzcyOTQ1IDI5ZTVjMDE2NWUxMzUxNmFhMjk3MzNjYWY5MDYzYWQwMDVjZjIwNDggcHkzaworNzI5NDYgODgzMDVkNzM5YWU1MjZlM2M3OWE4NWIyOGJhMmE5ZWRjZWIyNjBhZSBsZWdhY3ktdHJ1bmsKKzcyOTQ3IGQ3MWZhNmM0NjhjYzhiMWQ4N2MxMjZjNGI0YzZkYTExNGM0MDA5ZWUgcHkzaworNzI5NDggZmRmM2ViNzgyMmU0NTZiZDUyMTQ1ZDk1ZWZmYzM1NjM5NzY5OGExMCBweTNrCis3Mjk0OSBhNGRkOTIxN2VhMTMxY2YxZjM3NjViNDBlNDQzYmE4ZDYzYzVjMjE1IHB5M2sKKzcyOTUyIDQ3ZGQyOTBkMmQ3NDViNDQzNjQ2NmQ1YzlkZDRhOTIzYjRmYzZlOGMgcHkzaworNzI5NTMgMGU3NjEwMmY0NzhiNTc3NWQ0NGRmOWE2NTBlOGExZTk2ZDdjNGMzNyBweTNrCis3Mjk1NCBmMTNiY2Q5MjJmNzYwMjljZDU2MjdlODdlYzczMWM5MmY5ODMxOWZlIHJlbGVhc2UzMC1tYWludAorNzI5NTUgM2Y3OWVjYWI1ZTUyOTc0MjQ5MDQ5ZTRhY2M3MDA0ZjlmZDU1MmUzYSByZWxlYXNlMjYtbWFpbnQKKzcyOTU2IDIzYTM3M2M4ZWMxYjM4OGI3MDM3NjFmZjQ5MmNkNGNlZTc2MTQ4MmIgbGVnYWN5LXRydW5rCis3Mjk1NyBiYTYzNzZkZmY2YzRmODExNWIyOWJjNDczM2RhOTEzMjZjYmNiYTVjIGxlZ2FjeS10cnVuaworNzI5NTggN2I0YjkyMWYzMzM1Njc3MzY0MTM1MTMwZDlkZTUwZGVmNGYxN2JkYyBsZWdhY3ktdHJ1bmsKKzcyOTU5IDZhYjkzNDcwMDExYmI5NGZkZDVlZjBlNzQxYTU2NzA4ZWU0YzBmMGIgcHkzaworNzI5NjAgNDg2MGY3NDkzYjkxNDc5ZjY0M2U1YTc4NjUzN2JmNTc5NzgwODZjOCBweTNrCis3Mjk2MSAxYzA3OGJiY2EyMzNkNzYxMDY0ODJiMzc0ZjBiZWMyNDA2NjY0YzgyIHB5M2sKKzcyOTYyIDFkMDk2ZDFiOThmZDEzZTAyN2VkYjVmOWJiYjBjNjc3N2MyMWY3NDEgcHkzaworNzI5NjMgMjJmZDk2NzUxOGVlYzAzMWYzYmM3Yzc3Yjc0YTQyNzhlYzdlYzlmNCBweTNrCis3Mjk2NCBiNjFlNmFkNWFlNzBlOWY1MmM0NjRlNzk3MDhjZTQxMjQxOTYwNjU2IHB5M2sKKzcyOTY1IDhjYjM0OTg3M2NkYWUyYmQ3OGRiYTNjNzkzODIyMzhjZDRiOTUyNmMgcHkzaworNzI5NjYgMTU0Y2EzNzdmNTNjN2I1MGU1YzY3OTIxYzQ0MjVjODhhNmU0MzMzOSBsZWdhY3ktdHJ1bmsKKzcyOTY3IDliOGI2MGJjMGY1YjczMTgyZjNjNjY2MGJmYWY5MmFkMzczZWJkNjcgcmVsZWFzZTI2LW1haW50Cis3Mjk2OCBhZjRmZDIzNjU0Y2ViM2Y0MTllY2U2ZjAzYTlmYjlkNTZkZDA0ZTc2IHB5M2sKKzcyOTY5IDRjNzdmOWUxYTE5ZGNlODE5NmZkODEwM2MyYWMwZDViNWViZmU5Y2IgcHkzaworNzI5NzAgODM3YWRiNzZhMGUxYWMwYmMyMTQ3ZDIwN2RhNTM3ZGQxOWQ3NWMyNyByZWxlYXNlMzAtbWFpbnQKKzcyOTcxIDEzOTIxZjUyNjg0ODMwYTNiODE0YTY5Zjk5ODExYjA1OWRjOGNhMDkgbGVnYWN5LXRydW5rCis3Mjk3MiBlNmUzYTBlOTFiZWFjM2QxMjdiNWVmMjFmMTRmMDA0YjRiZTc1MTMyIGxlZ2FjeS10cnVuaworNzI5NzMgODIxZjdkNDJiZjc0MjJhMGZkZTY4M2JlN2JlYWJiZjc4NjdiMmM2MCBsZWdhY3ktdHJ1bmsKKzcyOTc0IGZjNGUyNDQzZjUwOTY0ZTk2NDYyNmM3NjljYWQzMDhjM2ZlMzc2YzQgcmVsZWFzZTI2LW1haW50Cis3Mjk3NSA2MDM4NzAyMjhkYWM1NGUxYTk2YzQ5ZGUzZDViYzA3NWU4MjA5OTQ1IHB5M2sKKzcyOTc2IDYwZDQ5YjNmZDNiZmQyYjc2MzQ0MzA2YTEwYjcxOTA1MmZjMmEwNTggcmVsZWFzZTI2LW1haW50Cis3Mjk3NyAxMDI5ZDlhYWQ0OTFjOGY4MjZjOTY2Nzc4MWQxMjYyZWEzY2Y1ZjJkIHB5M2sKKzcyOTc4IDFkM2IxYmU2YThiMjZiZjI0OTlkMmNlNjQ0N2QyNDZjMWQ0MzdlZGUgcmVsZWFzZTMwLW1haW50Cis3Mjk3OSA3MGZiODQ4ODcwYWNkNDE0YWNjNTdjMThmNGE4NWVmNDlkYzM3ZGJlIGxlZ2FjeS10cnVuaworNzI5ODAgYTZiNzNkODBmYmUyNzVhOWY2M2E3ZDdmY2U3YzAwNzcwZjM5NmVjOCBweTNrCis3Mjk4MSAxMWE1NGRhYmZiMWNkNWQzMzc4YzQzZmM3OTg0ZGI1YTAwNmRlYTUyIGxlZ2FjeS10cnVuaworNzI5ODIgOGIyOTk2NTJiMWU4NWY3ZDEyZTg0ZWExZjMwYjgyOWJmMGEyMTU5MyByZWxlYXNlMjYtbWFpbnQKKzcyOTgzIDlkZGZhNmUwNWZiMGRhMTE5OTQzNDIxYTEyYjlkYzI4OTBhODUzOTAgcHkzaworNzI5ODQgYWMwYjg1ZjY4Mjk3YmQzMGYxZTUwZTI5ZTdhYmViYmQzNTZhZDdmNiBweTNrCis3Mjk4NSA1YjIxMDBlNDZkM2I0OGEwMmYwNGMwZGRiMWFmNzQ4NTJkM2UyNGE0IHJlbGVhc2UzMC1tYWludAorNzI5ODYgNjA1NmM5NmMyZDMyNzU1ODcwYTY4NWRlOWI3MTFmMTc0YWMyODE0MSBsZWdhY3ktdHJ1bmsKKzcyOTg3IGVkMGE5ZDY4NDAyMjY5YTg5MmMwNDE3NzEyMzZiNGZmNmM0Mjc2ODkgcmVsZWFzZTI2LW1haW50Cis3Mjk4OCA5OTY3Mzc5MjcwYTA5NDEzYTM1YjhlYjJmYjlmYjI0YmQxZTg0ODczIHB5M2sKKzcyOTg5IGNlOTllOGUyMmIxZWFjMDk2MDczZmQzNzE3NTk1Mjc1N2U2YzA1MzkgcmVsZWFzZTMwLW1haW50Cis3Mjk5MCBiMDA0MDQ5NGI0YTY5YWFjOTZjYTkxNjlkMmMwZmU3NWM4MjRiMTY4IHB5M2sKKzcyOTkxIGY1NWQ4ZGVkMmQwNWU1YWNlY2JmNjFhYzQzZDIzOTQ5OWFhYjg3ODMgcmVsZWFzZTMwLW1haW50Cis3Mjk5MiBiNzI2ZmZkNDk1MjQ1MGQyMmJmOThiOTRmNWQ1ZjEyMmM1NzVlNTc4IGxlZ2FjeS10cnVuaworNzI5OTMgZTkwYjA2N2Q4M2YyNTE2NGFiNjRlOTU2NWY5MmU0NzNhMWRhZWFhNCByZWxlYXNlMjYtbWFpbnQKKzcyOTk1IDNlYjUyMmRjMzMzN2RlYTIxZjI3NGVkM2Q5ZmIzZjgyYzMxODRlYWYgcHkzaworNzI5OTYgNDAzNTM4MzM5NGVjZmFhNmE3MjUwY2ZlODZkNmIyYjVkNDE4MjNjYiBweTNrCis3Mjk5NyBiYzI1MTY4MTBjYzQxMTNjMTBkODJmMjgzN2NhM2NjNTZkNzE1ZjAwIHB5M2sKKzcyOTk4IGEwYTI1ZGVlY2RiMjM2ZTM1NTFhN2I5NzY2Y2NjYWNlYWEyMTkwNDMgcHkzaworNzI5OTkgNjE4ZTQ2YTY5ZjI3OGYwNDIwMzY5ZGFkZDhiN2M0OTVhYTExNTFjOCBweTNrCis3MzAwMCAyZDNjMmNmMWI1MWUzNGNjODc3MmQ3MWJkNzE5NjIzMDc4MzIxY2MxIHB5M2sKKzczMDAxIDg4YmQ4NzYwYjM0MmVjODdiN2FiZjA4NTA0ODMxMzc0MjM5NjViYWMgbGVnYWN5LXRydW5rCis3MzAwMiAyNjBjOGVkM2Y1ZGY5N2E2NTM1Zjc0NWZkMTZlNDhkNmY2YTkyMGJmIGxlZ2FjeS10cnVuaworNzMwMDQgMWQ4ZjI0YmY0Mzk5NjMzNjBmY2MxMzY4OTMyZWZiOWMxNzlmMDRlOCBsZWdhY3ktdHJ1bmsKKzczMDA1IGYzYzg3MWJkZWE1NzFkNmQ2OWNkOGQ0Mzc1YzE4NjU2ZmM3NDRmYzAgcHkzaworNzMwMDYgZDc1YWIxNjQxM2RhNDJjMTQ3YmVhOGEyNDc1ZWM0Mzc1Y2I0ZjVhYSBsZWdhY3ktdHJ1bmsKKzczMDA4IDFmYTEzNzk0MjA4NWRmZDFmMjEzY2FmNWRjMDAwOTgzZTc4YjRmNmMgbGVnYWN5LXRydW5rCis3MzAwOSA3N2I5MTI0ZjFjOGMxNGQ4ZTc2YzI4YjlhZGJhMWRhN2FlZDdkMmM4IHJlbGVhc2UyNi1tYWludAorNzMwMTAgZDM5YzE5MDMxNmU3NjlkOWNmZDYwNTA1ZjA2NGNkMDgyYjU2YmZlNiBweTNrCis3MzAxMSA0OWMwYjBjYTUxMTNiOTMzODMxODYxM2Y2ODEyMjE2NjA5ZWJlNGNiIHJlbGVhc2UzMC1tYWludAorNzMwMTIgYzVkMzQ5NTgyZTljYWU3YjAzZjU0MTY5NjdlYjhmZTc2MWQzNTQ3YyByZWxlYXNlMjYtbWFpbnQKKzczMDEzIGI2N2FiZDUxYjI3MDRjMGFjYmIwZjcyODQyZTlkOTUzMjJlNmUwMWEgcmVsZWFzZTMwLW1haW50Cis3MzAxNCAxMWRlMzVkYTI4MWMxNzU1ZWU5NzM5YTFmOGFhOWM3ZmQ0OGVjNzBjIHB5M2sKKzczMDE1IDI4ZDY0MTkyYWI1YTJjZjcyYTliZDZiZDkxMzkwMDc1MThjZGMyNDcgcHkzaworNzMwMTYgOWMxN2UzNjY5MzM2YWNhNzBlZTViOWY4OTVjZGM2YWU2ZTI2YTg4MSBsZWdhY3ktdHJ1bmsKKzczMDE3IDc2ZjFiZTlkMjgxODJiZjQ5YjMxZTI4NDZlZGEyZDFlNTIxNjE1MmUgcmVsZWFzZTI2LW1haW50Cis3MzAxOCAxMzRkMTJjMmU3NDUwMGU4ZmEyYmRiYjRiZjUwMDhkNTYwYmY1YmMxIHB5M2sKKzczMDE5IDIzNTZlOTg1ZWNlODM1ZjFiZGUzZmM4N2U0MmQwOTgyYzM2ZDZlZGMgcmVsZWFzZTMwLW1haW50Cis3MzAyMCBlYzVkMjI4YTgzZWZjYTIxZjU3YWQ3NTVlMWYwNDNmZGIwNGQ3M2ZhIHB5M2sKKzczMDIxIGE1YTg5YzYwZDMyZTRlZWZmNDY2OTA2OGU0NDNhYmE1MDZkYTJjYmUgcHkzaworNzMwMjIgNjQ3NTAwNjVlY2Q0ZDFjMjkzYmUxMjJhMmVlMTUwNDYxMTQ4NTRjNSBsZWdhY3ktdHJ1bmsKKzczMDIzIDI1YTMxNTVkYWM3NmM1MTYzOTc0YzllYWY5YzZiNzYxYmNjZDU2NWIgcmVsZWFzZTI2LW1haW50Cis3MzAyNCA5YTRjZTFlNzFhZDgxNjUxNjIxMDlmYmQxYjI3Njg5OTU2ODg5M2IyIHB5M2sKKzczMDI1IDRlZDJlZTBiMjI5MGEwNjQ2YWQ4MTlmZDhjYjhlODEzM2NmMjhlNTYgcmVsZWFzZTMwLW1haW50Cis3MzAyNiBlNDc0NTgzOGY2NTViNWY5NTFiMzU0ZWExM2I0NzA5MGI5ZjRkYmE2IGxlZ2FjeS10cnVuaworNzMwMjcgN2ExMzQ3MWY0ZTliZDFkY2U1MmNhZjg1NTU2MmZkNzhkYjA3YTZjZCBsZWdhY3ktdHJ1bmsKKzczMDI4IDE0NmEzOWIyNTg0NTg1ZjdiOTI0YWFlZTkwZmZmMWRhNGI3OTg5YzkgcHkzaworNzMwMjkgYzhmZTMwM2NlZGE0NTE1OGM3MWZlNzlkYzRlOTNhN2FkZTYxMjU2NSBsZWdhY3ktdHJ1bmsKKzczMDMwIDZlMmE4YmRhYTU0MDIwOGNkMzkwNmJlODhkZDNiNzg1MzI0NDAzN2EgcmVsZWFzZTMwLW1haW50Cis3MzAzMSBiMmVjZDJiZGYxOTUyYjkxNDE4NWQ4M2Y4Y2RiMzAxN2FkZDE0YTNjIGxlZ2FjeS10cnVuaworNzMwMzIgNmQ0YzQ3ZmVjNDQ5ZGFiZDVmZjIzMTA3YmVmOGUyM2NhYzdkNjJkZiBweTNrCis3MzAzNSAxYTUyMWMwNmE3MGRiNTE2YTI1ZDYyYmZkY2VkMjc3MTYxZTE2MzA5IHB5M2sKKzczMDQyIDZkNmI0ZDM3ODFmMjc1ODRjNTA1MjI2YzA4YmJhZmEyYzIyZDQ1ZTYgbGVnYWN5LXRydW5rCis3MzA0MyA2OWNkODBmOGUxMzNhMjQwMjIwM2ZmNjNkNjJhYmQ1YjFiM2ExZmEwIHB5M2sKKzczMDQ0IGY1ZDNmZjAzZGQ1YmNkZDU1MGYxYTJmNWRhNzIyMDUyMmQyNTE2OTIgcHkzaworNzMwNDUgNWJiNWU5MzQzNWIwNGUxMTgxMTA4MDBlODdkZjY1MDU3NzY1ZjU4YyBsZWdhY3ktdHJ1bmsKKzczMDQ2IDQzMWNhNTM5OWEyNDQ4NmMwZmY4YzhkNDU2OTg0MDNmNGI3ZDdhN2IgbGVnYWN5LXRydW5rCis3MzA0NyBjNjJiNjUyMjUxZDg5OWMxMzg3ZDU1NDY4NWU2N2ZkN2FiYTZiODFlIGxlZ2FjeS10cnVuaworNzMwNDggOGQyZjM5YzIxZTllNTJmMmM1MDNjNGRmZDA4NWRmMWEyYjY0Y2IxMCBsZWdhY3ktdHJ1bmsKKzczMDQ5IGIwMWFlZmY3MmI2NTJhN2YxOTk4NzE2MTliZDRjMDNiMTU2NWIzODEgbGVnYWN5LXRydW5rCis3MzA1MyA1NTNjODE1MWM5YzZlMDI1YTY3MmQ1M2ZiYzQxNDY0ZjBhMzZjYmVlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA1NCA0OTVjZjNjMjVlYjE0M2IwMjJmNmYyOTkzODk1MjAzOWU5OTliNjUwIHB5M2sKKzczMDU1IDIzNDYyYjM4MTcxZDY5ZWNmYTA5Y2IwNTFlYTY1NTNiNWQyNDU0ZmQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDU2IDQzNTNmZDA4NDNjYjMxYjM1NmFkYzUwZjkzZDIyMGUyZTcyNTVlZjIgcHkzaworNzMwNTcgM2ZmYmE2YWQzMTljMmVhZWY1MmVhOTQyMjA0MGY1ODA2N2ZkMWY0NyBweTNrCis3MzA1OCBjYTliZThmYzAyNWRjMjc3M2NkYzQzYzVmZTI0NThiYzI2NDNjYzk1IHB5M2sKKzczMDYwIGU0NzVjYzcxZjE4OGE0YTU5ZmI0MTBiYjVmMjk0YWEzOTA4ZWQzMzQgbGVnYWN5LXRydW5rCis3MzA2MSA5MTYyY2RmMzRkZmJmNDU2MmJjYWViNTlkYjM4ODE1NDY2NzFiNDFmIHB5M2sKKzczMDYyIGI0MDQzMDc5MjJjNmU4YzUwOGRkMDc0NjkxOTBiOGY1YTE1MDFkNWYgcHkzaworNzMwNjMgNDk0ODVmOThhMzA4M2JjMWMxODI0NmQyNjJhZTU1NzQ3NGRiYjJkNCBweTNrCis3MzA2NCBhMjUzZmVhODVhZjE1Y2E5OWUwMzNhMDA1NGEzZDE5ZTY5ZDkyNDlhIGxlZ2FjeS10cnVuaworNzMwNjUgZmEyZjkxNzkwNmU3M2I3ZDFkZDY3ODRkY2E2ZmZkOTVhMWI4MmZmOSBsZWdhY3ktdHJ1bmsKKzczMDY2IDRlOTZkN2RhZjc5ZjRjNWI0NDYyZWY3YmY0ZDRmNmVlNzI3ODNlYWIgcHkzaworNzMwNjcgMTE0MzU0YjFlMGU1N2Q4ZGM2NDI5N2U3MDAwNzZiNzYyMDY2OTE4MCByZWxlYXNlMjYtbWFpbnQKKzczMDY4IDc1NjYyMTgxOWY1YTUxZjQxNDZhYzdjNWY4ZTAwNGQ4ZmRkM2JhZDggbGVnYWN5LXRydW5rCis3MzA2OSA1ZGVjNzI0N2IyNDk2ZWI4NWM4YWUwOWJiYTk5OTJlOTA4ZjgyNjA5IGxlZ2FjeS10cnVuaworNzMwNzAgYmYwYmQ2ZWExYzcyZTU1MGU4MDk0YmI5NTMwZDFhMmY2MWUwNmE4NyBweTNrCis3MzA3MSAxYjQzZTZmMmQzMjhhOTcxZjgwOTRkYjMyY2U5ODk1YjRmYmViNzQxIGxlZ2FjeS10cnVuaworNzMwNzIgZDc0YjhlZGQ3YThjZjA0MDYwNDdmOGZmZjBhMTUyOTM0MTUzNWI4OSBsZWdhY3ktdHJ1bmsKKzczMDczIGVmMDc4NWNmYTZhZjUxYjYyYzQ3NmYyYjk3YWFiNzFmNTNhM2ExMTYgbGVnYWN5LXRydW5rCis3MzA3NCBiYmIwYjRmOGI1ZTExYWY1MTY3NjdhOGY5MDI1MGU3NDIxMjliMTNmIGxlZ2FjeS10cnVuaworNzMwNzUgODFiYWY3NmQwNzk3NzNkNjc0N2NlNTA4M2JiZGY3MmU3NDQwNGFmZiBweTNrCis3MzA3NiA1MTlmODBiMWY1ZTNhNjQzZDQzZWVjMTUxN2VmZDBiMjZjMDVhMmU3IGxlZ2FjeS10cnVuaworNzMwNzcgMDcwNTMwZTlmMThmMjk4NDIyNGY1Mzc0MmQ1NDQ4ZDhiNGJkMWE5MCBsZWdhY3ktdHJ1bmsKKzczMDc4IGMzYTI2NTU2ZGQxNGFkMmI1OTQ4MTdhYzQ5YmQ2OWZmZTE5ZDI0MDEgcmVsZWFzZTI2LW1haW50Cis3MzA3OSBmMTRiNTA1ZDM5ZjRhZThhOWI1NTA5MjNlMDE3ODJmMmQ5NTY3MGE3IHB5M2sKKzczMDgwIGY1MWVhYWVkNmM3MWE2MGQ2MTNmZmJjYzdhMWYzNWUxMGI3YThjOTkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDgxIDJhZmY3MDBlMGNhOTE4YzBkM2I0YWJlNjc2ZmIxODhmOWNhZDE2ZWIgcmVsZWFzZTMwLW1haW50Cis3MzA4MiBhNmE3NGI5YTdjZDM3MmIwMzIzODE2YTM2MTI1NzdiYjQwNzY4ZGVmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4MyA1ZGIwNTU2ZWQxMjIzNWJiZmUxZGVhMzRmZTRmY2QxNDZiZTUxODhjIGxlZ2FjeS10cnVuaworNzMwODQgN2I3NzJlZDUzNmM3NjljZTljZTAyMTI2NmI1NWM2MDc5MjZkZWJlNiBweTNrCis3MzA4NSA3NWUxMmM1ZTRlYWZiYTFhMzRiMjRmMDdlN2UwM2I2NGQ2NDMxYzczIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4NiA1MmQyNThlYjAxNzZmYWY0MWRmNjY3M2JkZTUyNjU5ZmNhMmFjNWJlIHB5M2sKKzczMDg3IGI0ZGQ0MjgzZmY4MjBkZGEyM2RmZDE0Yzc3ZTYzZTA1ZDNjNjkzODIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDg4IDFlMmMwMzcxY2U1NzM3ZGE0NmRiMGI0N2IxZWJmZjk4YmFjMzEyMTEgcHkzaworNzMwODkgZjUxN2YyZTRmYjNiYjU2Y2I2NzQ5OTdkOWNkNGNhODhlMWVhZDczMCBsZWdhY3ktdHJ1bmsKKzczMDkwIDUwZjMxMzA4YjUwYWVkNjUxNGY2NTBkZjI0YWQ0MjE3MjlhYTlkNjMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk0IDQyMTE4MTBkYzc5Y2U3YWQ3ZTE5NGU3MGE4OTA3MzViZWYzZDFkODUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk1IDU3YTJkMjcxM2YxOTUzYTBjYTU0Mjg5MjdlMWJjNDdjZDI2NmM2NGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk3IDUyOGMwOTNhYjk4NmQyMDdmODRlZjY5MGE3NTdjNDhhNWY0NzAzNGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk4IDc1N2E3YzBmNjc5ZTNiYWYzOTVlMDY5NWE5ODU2YTJlMjc5YTUwOGIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTAxIDYwMDE2OWFlNTY4MWQzYTk1OGE5OTA2ZWI2MWFhYTdjY2RmYWJlMmQgbGVnYWN5LXRydW5rCis3MzEwMiBmYjc5ZWU0NTc3NTQyODA5YTA3ODE4ZTQyMDU4ZmJhZTdiZjJmYzM3IHB5M2sKKzczMTAzIDdjNDQ0MDUzOGFiYjI0MmY5NWIwNDQzNjQzOGQ5MGVlODMyN2QyNWMgcHkzaworNzMxMDQgODU2N2RmM2E0M2I2MTIzMGYwZTgwZjhjMGYwZTA5NzRmNzk1ZTVjMCByZWxlYXNlMjYtbWFpbnQKKzczMTA1IGMwNTFiYTYxN2YwNDYxOTkwYWNhZTIyZDAxNmI2MzdkMjA3ZmY0ZjQgcmVsZWFzZTMwLW1haW50Cis3MzEwNiA2ODQ2Zjk1ZjhlMDc3YTlhZDQ1ODc1ZTNhZmY5NDc4MTJmY2JhOWMwIHB5M2sKKzczMTA3IDE4YjNkNWIzN2Q4M2ZiZTYyNmExNWZhMzIzMjU1ODMyYzI5YjU1MGQgcHkzaworNzMxMDggYzY3ODU0ZjFjZjc5MzE1ZTcyNDg4NDAxYjEyMjRhNWRkODE3NmE3OCBweTNrCis3MzEwOSA0NDI3ODU5ZDgxN2E3MmMzMzJjNGUwODA4Nzg4NjRhYjdmNWQ2ZjQ5IGxlZ2FjeS10cnVuaworNzMxMTAgOGMxMzA2NzFjODQyNTMyN2ZiZWJjYWYzNjBlMDI5MTk4N2IzZWIxMSBweTNrCis3MzExMSA5MzhjYzE2ZTdmOGRlYmQ5ZTc5MzQ5ZjFjYTY1NWU2Njk1MmZlMGM5IHB5M2sKKzczMTEyIDM1MjJjMmIwZDUxZDQ3ZGUzY2Y2ZDY1ZDlhNTFmNjBkNzA5NGZiY2EgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTEzIGJiZjhmMjVlYjM3N2IyMDE1MjEyYjIwMzI4YzVhMmQ5YzU5NzMzYzUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTE0IGMzN2FlNTYyZWY4MjJkZDU1NjBhZmYxNDMzMWQyOGIwOTVjYmQwMTMgbGVnYWN5LXRydW5rCis3MzExNSAxZGZjYzUzZTgzNmEwZTYwMjkwNDJiMWNkMWMxNGEzZThlOTY1NDg2IHB5M2sKKzczMTE2IGQwZTk2MDc5YjZhY2E5YTliNWJhNTliNDhjZjBmYTcyZmVlZTA0MzcgcHkzaworNzMxMTcgYThkOWNjOTMyNjc1NjE3YTU0MDVjNWQwYWFhYTlhMzQ1NTYxODUyMiBweTNrCis3MzExOCA1MjI5NWViY2NhMzEyNDRkMDFkNDVmNjBmMjdlNjQ3NzY3YmNlMGQyIHJlbGVhc2UyNi1tYWludAorNzMxMTkgYTU2M2JjZjFhNjJkMmY2OWM0OGQyOWIzOTQ3ZjQ1ZTU1NWJjNTMxNiByZWxlYXNlMjYtbWFpbnQKKzczMTIwIGUyNWZjMzc3NjcwNDcwMjIzZDY2MDdkY2FhYjIzMzQ5YmJkN2QxYzAgcmVsZWFzZTMwLW1haW50Cis3MzEyMSBkNTA3MWQ5Zjc0MDhiZGI4OGQ1N2JjNWVjNzJkNzZiMjEwNGYzNjI4IGxlZ2FjeS10cnVuaworNzMxMjIgNWY4ZGVjODQ2ZjQ2ZGU5YjgxNDdiOTkxM2YwOWY3YWQyZmIzYTZlZSByZWxlYXNlMjYtbWFpbnQKKzczMTIzIDU0Mjk1MjdlM2EyODhmZDIxYTVkNjFlYzRlYTRlNmFmNTU3NjY5N2IgcHkzaworNzMxMjQgNDk5M2UxMTBmZDc3ODU4NDhiOGEzNmFiNDUxZmQxNzk3ZDA2YTIxNyByZWxlYXNlMzAtbWFpbnQKKzczMTI1IGNlZDM4MGI0MDAwNDM2MmE3YTlhYzUzODBiZjQ5MDBjZDAzYWE2YzMgcHkzaworNzMxMjYgYmY0Y2ZlNTFiNGI1MjE3NDUyNTFmNmRlZTcxYjc3ZDY3ZTA0ZTAyZCBweTNrCis3MzEyNyA2MjU0MmJiODg3M2ExYjM3ZjdhOGIwZjQ4YzA0NTcxMWQ5MjYxNTZiIHB5M2sKKzczMTI4IDJjMDBiZGFhZDdhOWZmZmUxYTdmOTU3M2JlYWRlZGQzZTE2YzNiZTUgcHkzaworNzMxMjkgOGM4NTA0NzE1YjhhMzg3OWQ1NGIwM2Q0NGJmNzk2MmI3NzQwNDE4ZSBsZWdhY3ktdHJ1bmsKKzczMTMwIGRiODhhNjdlMzhlZWExYTMxZmIzZTA4OWVkOGRlZDBlNWMwZjM4MmMgcmVsZWFzZTI2LW1haW50Cis3MzEzMSAyOTkwNDQwYTIwZjQyYTEwN2QwNGNiMzIxOTE5NDZjNDE3OWRjODVmIHB5M2sKKzczMTMyIDdmYTgzMjkyN2I5MWM4NjQxNDQ2MWQ4OTRjNDlmYWJiYjI4Mzk4NWUgcmVsZWFzZTMwLW1haW50Cis3MzEzMyA3ZDQ3NzU1NjgwZDc4NDMzYjcyNzE4NzkxNmI2OTQwYzA1YTY5YjlkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzEzNCBlMTNhNGY2MmI2Y2FjY2RhZGFiYTY5OWZkZmI2M2I1Zjk4NGFiNTNlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzEzNSAxMjgxNDdkY2JjMWQ1MTEzNzk1M2I2NDU4M2JmNzMxNmM4MTZiODU3IGxlZ2FjeS10cnVuaworNzMxMzYgM2QxMmZiOWNlZDkyNmNhZTc1ZGE2NGFjZWJlM2VjOTUzNTkxNTRjMCBweTNrCis3MzEzNyBmOGI1YTE1MzJiZWM1NjA0NGM5ZWUxNThkYjA4NjMxYmQ3ZmJkMzVlIHB5M2sKKzczMTM4IGYwZjg0YWYxNTk1N2JjODNjNmUzZTViODEyNzUzMTk2YjA0MjJhZTIgbGVnYWN5LXRydW5rCis3MzEzOSBiYTgyMjI4Mzk5MzhkYjA2OTQyZjA0MTliMGZiZDY3NGNmZjE0MDljIHJlbGVhc2UyNi1tYWludAorNzMxNDAgNzIzNGE4M2E4YjE5ZmQ4ZjE1NTBlZDA1YTA3YzFkMjA4NDEwOTI2OCBweTNrCis3MzE0MSAwNDQ5Y2JlOWFjOWQ2YjU5NTUwMWMzYWU3YzFiNWU5MzFmMjNkNzQ5IHJlbGVhc2UzMC1tYWludAorNzMxNDIgMWU3MmE1NDBjMWFhNjc4NzM2NWQwYWRiNjNjYTlmMGQ5MTZhZDU0YSBweTNrCis3MzE0MyA2MjFhNTliYjM0MDQ1YmFiYjJkZjI5MzMwMDgzMjdhZTVhZmE3MGIyIHB5M2sKKzczMTQ0IDg4NWIwYTkyYjUwNjI2MmZjN2Q5OGI5NjNjMGQ4MDcwMzI3YmQ1YTAgcmVsZWFzZTMwLW1haW50Cis3MzE0NSBlODBlMjVlNmExODdiNGM1ZDVjNDVhZTRmMDMzYjcyZWNhMzRhNDVkIGxlZ2FjeS10cnVuaworNzMxNDYgOTA0ODlmMjY3YjMwMGRhNGQ5NWRmNGI1YTcxZWU5NGJmOTIyODJlYyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxNDcgNDI4M2JjOGM5MzA2NTFjYTMxMjgwMTgzMTRiZWZlZjU2YjM2Mjk5NyBsZWdhY3ktdHJ1bmsKKzczMTQ4IGIyZjk2MjM4NTk2OWEyMDhjMmMxY2NjZjBiNWY4NGVkNzkyZmZmN2MgcmVsZWFzZTI2LW1haW50Cis3MzE0OSA1ZTRkMDcwNTY1ZTcyOGM5MzI0ZTYzOGUyOWM3NjVjNjdhMGVlMWI4IHB5M2sKKzczMTUwIGY2MzJlMDJjMjY0MmU4YTE3ZmZiMWI1Yjk5ODYwMDBhNWUwNDk3ZjggcmVsZWFzZTMwLW1haW50Cis3MzE1MSBiN2I3MzUyOTk0Yzg4NDA1MGViNTcxNzYxYWQzYzZkZmVhMjZiYjJiIGxlZ2FjeS10cnVuaworNzMxNTIgY2ZlNTc3YWExNTZhY2M0ZWQwNDk2YWYxMTMyYmQwODk3NGIxMWFiYiByZWxlYXNlMjYtbWFpbnQKKzczMTU3IDJmN2Q5YWJkNjU1YmFiOWQyMmI0YWZmZjFhMDM5YWVhZTQ2MDQxOGIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTU5IDMyYTQ5ZDEwODAxZWQxZWNiZDUwYTM1MzE3Yzk2NTNkN2QzNDA2NDUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTYwIGNmMTljYzA2YjA5MzA4ZGQwNmY2YjMwMTBhNDI5NWZlZTk5YWU2YTggcHkzaworNzMxNjEgMzNhOGJhOTI1YzkyMDlmODVjMDAwYTYwZjk0MTU0YTgxODVmYTZiMyBweTNrCis3MzE2MiA1MWZlY2JiN2ZjODcyNjVmZTBjMmM3ZDcyNTQwMzU5MzlhZDYzZGY0IHB5M2sKKzczMTYzIDRhMjc3MWY2YjlkZDc4NTA0NjNmZGQxMmU1YjgyM2VlMjY0NWU0YzUgbGVnYWN5LXRydW5rCis3MzE2NCAyZmJjNzAzOTM4MmQxYzU4ZjI4MDY2Y2Y4YmU2Y2YzM2IyNzQxNjJiIHB5M2sKKzczMTY1IDJkNTAwZDdiMjBiZTY4NmM2MmJkYzhhZjFlYzA5YjA0ZTcyYjNjODcgcHkzaworNzMxNjYgOThkOGI4Yjc0OWY0NzQ2NWUwZGMzMmIxZGExZWUxYjkzMTYzOTI0MCBsZWdhY3ktdHJ1bmsKKzczMTY3IDE2ZTQ1ZDhiNzk1N2U3ZWUwMDMzNDU0ZjMwZTJkMWM1ODIzOGE3MzcgcmVsZWFzZTI2LW1haW50Cis3MzE2OCBmY2IyNTgwYzFhYjNlOGIzMjlhYTk0ZDZhNGM4MTk2MWNlZmY5NmNlIHB5M2sKKzczMTY5IGUxYTQ2NjAyYjlkNzJhYjA2NjUyNThkMjIzNjNjNWI2NTViMDFiMjcgcmVsZWFzZTMwLW1haW50Cis3MzE3MCAxYTAyOWI3Yzk3NzA1Mjc3ZDc4OWY3Y2UzOGI3ODY0ZWY0MzkyMmMxIGxlZ2FjeS10cnVuaworNzMxNzEgNjVmNTYxYTNlMjkxYjgwZTdhZDMxODE4NGMzMjcwZWQwNTkyZjQwMyByZWxlYXNlMjYtbWFpbnQKKzczMTcyIGFlNTg1Y2Q1Y2E1NGIzZmI0N2E4NTZiYjE2MjNkMzE5ZDJlZTE1NmIgcHkzaworNzMxNzMgNjI1NDRjOTQ2ZWRhMmFmMWQ0Mzg0YTUwZjQyNzAzMWQ0NjI4YmZkNCByZWxlYXNlMzAtbWFpbnQKKzczMTc0IGI4YjMyZmRjYzI4ZDQxZTM4MzRlZWIzYTJkNDAyYjRkNzNjNjcxYjggbGVnYWN5LXRydW5rCis3MzE3NSA5YzJlMDdhOGQyMzAyZDNmNjllZTAzNjQ2NmNhNDg5MDdlNDhmN2I2IHJlbGVhc2UyNi1tYWludAorNzMxNzYgN2MwZTc5ZTcxY2NkYzViM2RiN2EwMWNlNmM5NDZkYjMyMGQwOTcyOCBweTNrCis3MzE3NyAwMzBhM2ZlNGI2MDQ1MjFlMGVhMDEwMWZmZDk2NTMxYzkxMjNjZjcxIHB5M2sKKzczMTc4IGIwMWNjYWMzMDQ3MzUwOWUwYzAyYWU0MGExMGJhNmM3NGJjOTIzNjUgcHkzaworNzMxODIgZTg2YmNjZWJjMDc1ODZlODRmOGM5NjgwYzMxMjNiMDljNDJkNTE2YyBsZWdhY3ktdHJ1bmsKKzczMTgzIGJmYWFmMmY0YjJlNWJkNWIwNzE5OTFjODEyNDNmMWVmN2Q3MWI0NjcgcHkzaworNzMxODQgYmM3NGIyZjYxMTU5NTg5MGMxYzRkMDI4MmU2YmQ3YzA4YWJmMzM0MCBsZWdhY3ktdHJ1bmsKKzczMTg1IGEyOTg0MmU1ZTEzOGMzNzUxYjdiNWNhY2FmZDkxMDk2MjgxYjUzZDMgcHkzaworNzMxODYgNWEzMmYzZDA2MTU4YzNlNGUwMjM4YTc2ZTUxNmNhZGIzZjU4OTNhNiBsZWdhY3ktdHJ1bmsKKzczMTg3IDE0YTRiNmZiMDBmZWJhODE4OTk4YTlhMjljM2I3YzMxZjYyMzAxMjEgcHkzaworNzMxODggYWJkMTNhY2ZmNWRiZTJiYTk0ZmMwM2RiOWE4OWFiNmFlNDM5NTQ0NSByZWxlYXNlMzAtbWFpbnQKKzczMTkwIDQ0MzliMjJjZjZlYWZkZTc5M2MxM2NmOTg4ZDFiODYwOWY4ZWI2MjggbGVnYWN5LXRydW5rCis3MzE5MSAyODc4ODcxOThlMmZhNzI0ZmY0NmM4YTJiNjY1NjJjMzg5YTUyZGI5IHB5M2sKKzczMTk0IDBjOTRjNWNhNTVkNTdmNTMxNzI1ZmFmZDMzMGUxYTFkZGY2NDgwNDIgcHkzaworNzMxOTUgZjQ4YTA1MjE0MjgxYzA4MzMxOWIwMGM3OWVmYzUyNDczMzdlYjg5YyBweTNrCis3MzE5NiBkMDQzNzhmOWZkYjQ1NmI3MTA0MmI2ZDY5ZjViYzgxNDQ0M2U0YjQ2IGxlZ2FjeS10cnVuaworNzMxOTcgN2RmMjkyOWEzZDA2ZmM0ODUyYTU1MjQ3NzBhZTEzNzExMWJmY2VkMSBsZWdhY3ktdHJ1bmsKKzczMTk4IGI3ODJmZDA1YTgwNjQyNTJlNWU2MDhhYjA3MTc4YTgwNTdhMjIyNDUgcmVsZWFzZTI2LW1haW50Cis3MzE5OSAwZDhlZDllNTU4ZjI4ZTMyYjg1OGRjNDZlODExZWEyZTFkMzJiMmExIHB5M2sKKzczMjAwIGFmZjk3ZTUwYTIwNjBhNzdiNGVlYjA4OTY2MzgxMzBmNTMzMTllZWYgcmVsZWFzZTMwLW1haW50Cis3MzIwMSA5N2EwYTg1ODkwMTRkN2VkMmE2MjAxZmIwMGE5NTdkMzg5OGQyNWI3IGxlZ2FjeS10cnVuaworNzMyMDIgMDBkNTc3MmM4Njg2NjI1MjQ2YzJhMzlmYTQ2M2YwZjdkOWE3NDgzNCBweTNrCis3MzIwMyA1ZWNkYjgyOTQzNGY5ODYzYjlhZGIzYzM5ODZlMGUwYjE0YTRjZWRlIHB5M2sKKzczMjA0IDE4ZDgyM2U4YjYwMmNlZGU2N2UyODYyZjQzYjFmZDlkZDhkM2IxYTEgcHkzaworNzMyMDYgZDViZjA4Yzg2MWE2NDI1ZThmMGRhYmMwMjYxNDI0MjI5ZjdmZTM4ZiBsZWdhY3ktdHJ1bmsKKzczMjA4IDNmNjIxMTQwZWZjNGEyZTIzZTlhYjUwYTVmMGEwYWZiZDkyODIyN2YgcHkzaworNzMyMTAgOGZhNGNjYTlhMjJjZTQ5MzA2M2RmYjE3NDEwNzE0NjliYzdiY2ZjMCBweTNrCis3MzIxMSAwMzFiOTYzZjJiYzI3NmQ1ZmUwMDUyNGRmOWQ0NDhlYjg3ZjI0MzhiIHB5M2sKKzczMjEyIDg0MzE3OGNmMDg5OWQ3YzlmZTZlODRjZjk4OGEwODYwMjg5NzRlNzMgbGVnYWN5LXRydW5rCis3MzIxMyAwZTA1NGM2NTcwNjI0MDJkMzc4YWI0NWRkMGQ5NTU0ZWYyMjc2YjQ3IGxlZ2FjeS10cnVuaworNzMyMTQgZTliMGRiNTUzZDAxZmE4MGYzOTQ0ZjgzNjMwNWE1NTY5NjVmMGNhMSBweTNrCis3MzIxNSAzYzQxNTczNDkwY2I4NWM3N2EyZTlkODlhNjkxYWQ4YmIzMjViNTc5IGxlZ2FjeS10cnVuaworNzMyMTYgNTBiZWE1MzM5ZjE4MjJjOWRmOWU4YTFmM2Y3N2VlMzc5MDQ5ZGE1YiBweTNrCis3MzIxNyA3NDI0NjEyOWJkMjIzM2FjYWFkZTkyM2Q5MWQ2NTVmYzRhMDAzZWVlIGxlZ2FjeS10cnVuaworNzMyMTggZGRiNTBjM2I4NmYyZTNkMWJlYzNkNTUyYjI0YzIyN2Q0YWY0ZTU2ZSBweTNrCis3MzIyMyAwYjA3NTMxNjczYWNkMmI0NWFkNWQxYTcwOWE0YTMxNWU2MDZjMTkwIHB5M2sKKzczMjI0IGEwN2VhODJhNWJiMGNjODE5MzhlZDg1ODQyMThmMmJmODUwNjk0ZGEgbGVnYWN5LXRydW5rCis3MzIyNyAzOWNiMDFiMGZjNjQ4ZjMxZmFlMTE1M2JjY2FiNjQyZDA5NDU5YWFlIHJlbGVhc2UyNi1tYWludAorNzMyMjggNjg2YzE1Yjg2NzQ4OThjY2U5OTI1MGY3NzVjMjBmZjlmMTJiZGVhMSBweTNrCis3MzIyOSBlZWY1ZDFjZTZmNGI3MGQ5YmNmMjM0MzhmZmNkOWM5NjlmNzE5ODNiIHJlbGVhc2UzMC1tYWludAorNzMyMzAgZDQ1MjY5OTU2ZWZmZTIyZGFjZDVlY2RmMWQ0NmEwNWU1MTBkYzc2NSBweTNrCis3MzIzMiBlZDZlZDNjODM5ZjViYzkzYWFhZDNlYzA0N2QwZjRiZDE0ZDc0OWMzIGxlZ2FjeS10cnVuaworNzMyMzMgM2E3ODRiMjE3MjIwOWYzYzkyNDQwNmIxYWNkOTQxZTdjMzE0ZTIzZiBweTNrCis3MzIzNiAwODA1ZWEyMTExMjIwZTQwYmU0MWQ5NjI2ODhhMmMyNjA5YmY2ZjgyIHB5M2sKKzczMjM3IGQ5OTIyODI5YzIwNDM0ODI2YzliMDIzMjk1YTVkMTAwNDVlNTEzMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjM4IDAzYmVhZDcyOTQ3ZWY5YjVhZmRjNTRmMTgzYWZiMTZkZTFjNDZlZTYgbGVnYWN5LXRydW5rCis3MzI0MCA4MTBjMjVmMTljZDk0YjJiOTAzMDM0NTNkZGNmY2U0ZmM1OGNiNmM5IGxlZ2FjeS10cnVuaworNzMyNDEgZWJlYjRkNjdkYmFlOTY2OTcwN2RiMzI4ZmM4N2UwMjMxMWI4ZGM0MSBweTNrCis3MzI0MiBjMmNlYzU2ZDBiOGExMTVhYzIzZDQ1Njg4MjE2OGJmMjE2YTM5NjU4IHJlbGVhc2UyNi1tYWludAorNzMyNDMgY2VlZjBhNzhiZjg3OWYzMDE3NDRlYjViZjI0NDdlM2MzNTk0YmQ0MSBsZWdhY3ktdHJ1bmsKKzczMjQ1IDA5NGZkMzM1YTQ3MTAyMDQ1YjBkNzdkY2EwMjk5ZjY3MmEyMGNiNzYgcmVsZWFzZTI2LW1haW50Cis3MzI0NiBlZjc0MzEyZDcyMTU1ZjcxODBkMjhlYjAxMzM2MDE4ODMyZGM0OWVjIHB5M2sKKzczMjQ3IGU0YTdjNDhkZTYwM2JkZDBlMDBjMTAyODMwN2JlNGQzYzIwYTVjOGQgbGVnYWN5LXRydW5rCis3MzI0OCBhZTliNWQ0ZjEyMjlhZDZjMmU0MmYwNzY1NGVmNThiMGE4ZDk2YTcxIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI1MCA2MDI1NTlmYTUyOTdkNTE5MWMyNDYyN2YwMTFjYjM2NzgwMWNhZGYxIGxlZ2FjeS10cnVuaworNzMyNTEgZGEzM2JlZDVkOGM0ODYyOWQyMGU3MDBjYzc3MjIxZDVlMmNmMzRmMiBweTNrCis3MzI1MiAxMTJlMWJiNTdlN2IyZGZhNTdmMDE2NTczMjY0MTNlZTEzMDlmZmJkIGxlZ2FjeS10cnVuaworNzMyNTMgOWMwOTE1NDRlMWRmMjc4ZWVhNzRkZWU4ZjE0OTg2ZDY0NTUyZTIxNCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNTQgNTc4YmFmN2QzMTE0NzMyMDFiOTI0Y2NiNjAzMjYxZDczNzgwOTJmNiBweTNrCis3MzI1NyA4MWE1YjFlYzkxMDVhYWI3YmNjM2NhMDYwYjZhMTEwNWE4MTIxYzMxIGxlZ2FjeS10cnVuaworNzMyNTggMTI4NTNkYjNlZWEzN2NlZDU2MjAxYjhkZjBhYjZkZTI5YTE2MWU3MiBsZWdhY3ktdHJ1bmsKKzczMjU5IDFmOGQ5ODcyMGFjY2M5OTlkMDE5ZDdhM2Q3MDE2MWI0OTliMDJlZjIgcHkzaworNzMyNjAgODg4OGE2ZmU5ZGQ3ZjI5MGQ5M2Y2ZTg3OGE5MGZiNDgyZDRlMjg4MCBsZWdhY3ktdHJ1bmsKKzczMjYxIDk1NDdmNGJiZDVhNDVmODU5ODEwYzllOTAxMjYzZmM5YjM5NThiOTIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjYyIDMyZTM0NDgzZTZkYjcyMzNlZTRlNDE4Mzc0Y2U0NDU4NGRjNGJkYzIgcHkzaworNzMyNjMgY2U4OTU5MmE5M2E0MzZlMmExYTVlODdhZWRmMTk3ZmY4ODRjZTc5ZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjQgMzE3YTE3NTg0MDU4MDM3YzhiZjU2M2EwN2NkYzZmMjNjYjhmMWY3NiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjUgNzg3ZjI3ZWQ3MmMyOGQzYzdiNTE1ODg0YzFmM2M0ZjQ1NTBkOThkNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjYgMTlkOGEzYTRlMTQ5NjAyZTVkOWZmNjIxN2UxNGEyMzBhZGFlYWQxNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjcgN2VlNTc5OWE3YjUxOTU2MTJlMmU2M2U0N2Q1MTQwNmYzZmVmYjdiZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjggM2Q4MzU3Y2NmNTgzMWVmZDlmNjM1OTRkYTlkNDBmOGY1MzNhYTJiNSBweTNrCis3MzI2OSBmYWZiOTkxYmVhNmIxYjA3OTdlNTgzZTJhYWJkNWIyYjYxZGZhMDY3IHB5M2sKKzczMjcwIDc4M2Q0MDQ0ZGMyZGY5MjlhNThjZDg0MDYxZTE2NDMxNTJjNDhjYWMgbGVnYWN5LXRydW5rCis3MzI3MSAwZWJlODg5ZjEwNmZlOWRmZTA3MjE1OTY0MzQ0ZTZlNTI3NWE0YjkwIHB5M2sKKzczMjcyIGRhNjg3MWI5ZDg4NGM0ZTg3YTI4NzA1YjZiZTQ3ZGZhYTU1ZTYwNjggbGVnYWN5LXRydW5rCis3MzI3MyA2NmE1YmIzZDhhOGQ4MmQ4ZjkxZGMwNGEwYzFmNjcyNjRlOTdhMzE5IHB5M2sKKzczMjc0IGQ2NzliNjA5MDdmNzY5OGIwYzBhOWMxM2MzODliOWRhYWMyNTBjYTEgcHkzaworNzMyNzUgM2UyYjhkZTRiMTZjYzgyZGFhNzA5YzIxMWU0NGIyN2VlYmEwM2RiMyBsZWdhY3ktdHJ1bmsKKzczMjc2IDA2ZjVmNDI2Yjg0OTExODZkNWU4NDJmODFkZjY4NzU2NWVhMjhkZGQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjc3IDg4OWI1ZmQ4ZGEzMDlhNTVjZGFkMjY1NmFmNDcxYmZhNjhjNWZkODEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjc4IDg1MTYzNmI2MmFkOTVhYjdjY2VkYmY0NTY0MThlY2Y3NDljYTRhYjQgbGVnYWN5LXRydW5rCis3MzI3OSBkOTQ1ZTZkZTUyMjdiNmJiYjJiZjdhZTQ3MDEwMTA3YjhiZTY0ZWI2IGxlZ2FjeS10cnVuaworNzMyODAgZDc5ZmRlMTA0MWJkYzBhZjc0ZjkwOGE3NDg2ODFmYTkxMDY5MmU4MiBsZWdhY3ktdHJ1bmsKKzczMjgxIDA1NGVhNDdkNmNjNzM4MzZkMzdlZTk3NDU3ZDVhZjA3MWI4OTM1NjkgbGVnYWN5LXRydW5rCis3MzI4MiAwYWJmNTYyYjFlNmNmNmU4OGVmZWU4ZGE4MTcxY2JjYTM0MWMxNmE4IGxlZ2FjeS10cnVuaworNzMyODMgZjdjOWU3MzQyMDg0MDA4MmQyNzZmMzdlZjYwNDBhOGQwMzA1YTliMSBweTNrCis3MzI4NCA2YmZiNTk1MjExMzY0N2QzNjUzZDhkMzJmMjAxYWZjMGM1MDE5ZTg3IHB5M2sKKzczMjg1IGYwMDE5ZmY2YjNlNWIzMzRiZWQwZDAxNzhiOTc5YjI2Yzg1MGU4MTIgcHkzaworNzMyODYgMWVmMTQyMWE2MTIyNTUzMGI0MjdlZDUxNjdhMWFhYzVhNjNkN2M3OCBsZWdhY3ktdHJ1bmsKKzczMjg3IGVmNjVjYzQwMmM5MjMxNjJhYjU0MmY3YTMwODEyNDI5MjViMGNlZTYgcHkzaworNzMyODggY2Y4ZmZhYjQ5MDAzMzVhNzdlYWQ1MjlkNmFmNjYxZWRlNDVmMTVlNCBweTNrCis3MzI4OSA5ODU1MjEzMWY2NDFiYzNiMzE0NGVmYzg3OWE0NzkyOGRhODRjZTY3IHB5M2sKKzczMjkwIDU1ZGQ5ZWQyM2VlYWVjZjI4MGFhYjVmOTVkMGFjMzJiZjA2ZjZmODAgcHkzaworNzMyOTEgOGY5Mjg3OTI1NDdjYWY0ZTYwM2JiOGZhOTE4MzcyNTZmNWY4MjA3ZiBweTNrCis3MzI5MyAyN2UwODljYWI3MjlhMWRmZjQ5MTc0ZTJhODk3YjhlMTdlMjkwMDJmIHB5M2sKKzczMjk0IGI1MDRkNmQzNGZjZDcwODBmMTY3ZDkzODRlNDIwYTJjZTk3ZDUzZWEgbGVnYWN5LXRydW5rCis3MzI5NSA3YWQyZjIyZjEzZTZhMDBjNDhkYjcwZjVjN2M1OTU5NzI0NjAwOTI2IHB5M2sKKzczMjk2IDY5ODU1N2NjNWRjNTA3ZjhiMjI1ODI3M2JmNTYzZjdhM2ZmY2Y5MmEgbGVnYWN5LXRydW5rCis3MzI5NyBjMDE3ZDE5MTY3MzE0MTczNmI1YzcwN2I0ZGNiYWQ2MTdlN2QzYzZjIHB5M2sKKzczMjk5IGNhNTE5OTYwOTlmZGQyNDc0NDhmNjNiNzVhM2JjOTY0ZGQ4MzMzNjMgbGVnYWN5LXRydW5rCis3MzMwMCAyNzk1ZDZmYjIxZTI2MmQ5YzcwMmY0MzIyNDlmOTJiYTA4NTZlNmFmIHB5M2sKKzczMzAxIDU0MTg5ZDVhNjY3NDc5NzQ0NWQ3Y2M1OTE3MjBiMWM4OTZkMmU5MjYgcHkzaworNzMzMDIgMjU1ZGI3MGJiMzE2YWMwZTJmZWFkMzkxM2NjMTQwMGFjZjFlMTE2ZSBweTNrCis3MzMwMyBjZWIyNjJkNDRkNzQ2NDE0NmQ2M2I4NGJlNDQ0YWMyZTI2NTkzNTFhIGxlZ2FjeS10cnVuaworNzMzMDQgNzFjYjYwMjllODkyNzk1MGU3NWQ0ZmFjMDcwYWE4ODBmNTk3ZjY0YSBweTNrCis3MzMwNSAxYzdlYjViNjIyOWRkZjUyOTEyZDcxY2M0OTJhNzY1YTI2ZjQyYWExIGxlZ2FjeS10cnVuaworNzMzMDYgMzVjNWMxZTA3YTQ0Y2YzMDc1ZDM2MjI2OWZiOTA2NTgwNTc1MjlhMCByZWxlYXNlMjYtbWFpbnQKKzczMzA3IGZkMGFkMTE1ZTIzODI5YWI5NmM4YzJlNmYxOWE1NmM1OTk3NjM3YmEgcHkzaworNzMzMDggODZiMzJlMWZkOTlmMGM3ZjgxZTk1NTM2MjM5OWY5MTYzMjc0MDBkNSBsZWdhY3ktdHJ1bmsKKzczMzEyIDFiODYwMmMzOGZkMGM3YWFhNzg2OTRiNzhiZDFiYjlhZDk1MjNkOGEgbGVnYWN5LXRydW5rCis3MzMxMyBjNGE4MWNlM2M4OTMyNzAyMGM3NmIzYWQ1MTdlOGZmYWZlY2E5YWY1IGxlZ2FjeS10cnVuaworNzMzMTQgZWEzMGFhY2IzMTgxNjM3ZThmOWUwMDljY2FkMjU0NGUwYTRmNDlkMSBsZWdhY3ktdHJ1bmsKKzczMzE1IDg3NTM0YmZkMWJlOGI3YmRkMjBjOTBjODIxZmFjYWE2Yjg5MDdlYWYgcmVsZWFzZTI2LW1haW50Cis3MzMxNiBkMmQ1NGRjOGU0MDBmYWE2MTQwYmJkMGUxNjU2M2Y1YTdhNGQzYmY1IHB5M2sKKzczMzE3IDUxNzdiNjc4MGNiNzQyZjAyMzFkNTBhYmFmOGNjMWJmOTAxZWE2MGIgbGVnYWN5LXRydW5rCis3MzMxOCBiOTZjOWQ4ZDVmOTg1ZGI2ZTM4YmI2OWVhY2I1NmFmNmZmYjhiNzdjIGxlZ2FjeS10cnVuaworNzMzMTkgNzYwYTg4NjZhZWZmYTI0MTBhNzM0ZjIzMDU5NjZkMjFjZDg3ZWRlMSBweTNrCis3MzMyMCBhYjNhMjEzMzZhODRkNmI3ODhkNTRkNTFkZTRiMDFiYjc4Njk0YjFlIHB5M2sKKzczMzIxIDQ0NjAzMGYzMTBhOTUxNWM3YTE2ZDg5ZjYyMmMyZDhiM2Y3NmExNTMgbGVnYWN5LXRydW5rCis3MzMyMiA5MWQ0YzUxNGU3OGMwMjk5MWU1Y2ZlYjZkZThiNTM5NDE2YWUyNjQ2IHB5M2sKKzczMzIzIGY1ODI4NzQyYjQ2ZmVkMjQ3OGQxYmM0Yzg0YjA0MTNlYTc2MzY0YzAgcmVsZWFzZTMwLW1haW50Cis3MzMyNCBkNDlkNDhmMzM1YzkwMDliYWJkMGNjNmQ3NzljMWVlOGUxMTQ4ZDAzIGxlZ2FjeS10cnVuaworNzMzMjUgOTE0NWY1OGY3NDk5OWE3MzMwYjFiMDU5YzdjYjM0MTA2Njg2MWRlNiBsZWdhY3ktdHJ1bmsKKzczMzI2IGZhNjdiZjY3NGFmMzYzZTQ0NjQ1NWY4ZGE0ZGI0MmE2NWVjNWJjYzIgbGVnYWN5LXRydW5rCis3MzMyNyBlYzg0NWM0ZTNkNzM2YjZhOTBkYzY1Y2RmZDI3NzdhOWM0ZjNkZDFlIHB5M2sKKzczMzI4IGI4ZDE2MGFkMWM5MjU2MzY1NDgwZjQzOTZhNTBjNTgxZDZlZTFlYjcgbGVnYWN5LXRydW5rCis3MzMyOSA2NjI5N2EwNzRkOGJlOWMwNDUxNzc5MmI5ZGVmMWRjMDE2ZmZkNDhlIHJlbGVhc2UzMC1tYWludAorNzMzMzAgMDQ4MDcwMDU1M2FiMjNmY2VlODVmNjM3OWY1MDViMGYwYzlkNzEyYSBweTNrCis3MzMzMSA3NDRlOTg0ZjE4NDFhYTA1ZjUwOTRjZmYwMjYxNzgyNmFhZWEyZmI5IGxlZ2FjeS10cnVuaworNzMzMzIgNGZkM2E0YWVlZTQ3M2U3MTA3MzgyN2I0YmI0ZTRhOGUzNGIwMDRjOSBweTNrCis3MzMzMyAxM2E5ODc0ZDhmNDc2YTQyZGIzZjU1ZjAwYjczZjI3YjZlN2Q5ZGI4IHB5M2sKKzczMzM0IGI2MDk1ZGM4ZjM1YzA3MGM0N2U4MjIxOGIxZDNhZjczZDMwYzI1NjUgbGVnYWN5LXRydW5rCis3MzMzNSA0YWNkOTM2Y2Y2YjZmOTcyNzI2MGJhNWI0NTJiMTczN2RmNzA1N2FhIGxlZ2FjeS10cnVuaworNzMzMzYgZWRmM2RkYWEzNDZiZmQxMmIwNTY2ZjhiZmI4NDdlMDc5MjI4MmJlOSBsZWdhY3ktdHJ1bmsKKzczMzM3IDAzZDM4YTJhYmM0NmE5OGJiMmVjMzQ2Yjk1ZmRiOTk2NTc2ODVkZTEgcmVsZWFzZTI2LW1haW50Cis3MzMzOCA2NTdhOGFlMGJiYzk0Njc4ODRlNDkwNjVhYjQ3MTIzMjM5MmM5ODQzIHB5M2sKKzczMzM5IGY0MWIyODVmMmI1OWFjZmU4YzZlYTYxMDNjZDUwMjY3MjRiZmMxNTkgcmVsZWFzZTMwLW1haW50Cis3MzM0MCAyNzE5YTg4YzIyOTRmNDA0ZDFkYzJiMjA2ZjRhYTIwYjFhNzE4MjBhIGxlZ2FjeS10cnVuaworNzMzNDEgNjU3OTNhY2MwMDk1MDAyZmEwZjYyMmFjMWQ5MjJiNWNjYWZkNjFkZCBsZWdhY3ktdHJ1bmsKKzczMzQyIDBhZGYwZmE3OTkzYmNlYTQwYjFjNGRmNWY1NjYwMDk4MmZmZDAwYWYgcmVsZWFzZTI2LW1haW50Cis3MzM0MyA4YjNhZTNhMzgyNTA3NjE0ODdlOWQ2YjkxZTkxNmJhZTg0ZTA0MDBlIHB5M2sKKzczMzQ0IGY2MzE0NzVhMjY0MmIzYjM4YjQ3NWRkYzViMzE1NWJlMTM2ZmM4M2IgcmVsZWFzZTMwLW1haW50Cis3MzM0NSBiNDYzNWRhMzEwOTk5MjI4ODkzNzQ2NDBhNmQ1MWFmM2YxYzhiN2ExIGxlZ2FjeS10cnVuaworNzMzNDYgODBlZjNiN2E0ZTBkZjQ1YTFkZTIwYzQ4NjVhZjVmMjVkNmNiYWFhYSByZWxlYXNlMjYtbWFpbnQKKzczMzQ3IDQ3NTVmODk4YjlmZTBkNDljMWQ2NTY1Y2Q2ZjU0MDZmYjExYWY5YjUgcHkzaworNzMzNDggMGRlNjZmY2VmMGZhODk3MmU5NDNmMWQ3MGVkMTRlMzhmMWQyOTE5ZiBsZWdhY3ktdHJ1bmsKKzczMzQ5IGVjNTkxN2Y3N2FjMGU2ODhmZjI2Mzk5NjlmZjhhMjIyNDU4MGYxNmMgcmVsZWFzZTI2LW1haW50Cis3MzM1MCBhMmYyMzc2ZTFkMjAxYTI4OGQ2NTE5NzY0YzkyNmQ2NTA0YjA4YTJmIGxlZ2FjeS10cnVuaworNzMzNTEgNjAwMzZlNTBjZDE4Njc1NTQ3ZDk1YTgzMDJlNzcyZDgzNWZhNTYzMCBweTNrCis3MzM1MiAwMDMxYmEyMTM5MGExYjNhZWY4Yzk5OTQyYjhkYjRiZjk5MDNiNTMxIHJlbGVhc2UzMC1tYWludAorNzMzNTMgMTEyODgyMzk3OWRkZTk0MzI1YmMzMmEyNWNiNjFiNzc4YTNiYTg2MCBsZWdhY3ktdHJ1bmsKKzczMzU0IDBkOWJkOTFlYjg1Y2I1YzRlNDRhMThmMjljMmYyYjY1ZjM4ZjdiYWQgbGVnYWN5LXRydW5rCis3MzM1NSAyMDlhNTM5ZWJmZjgwNmMyOWM2MzI3OWUwNmJjYWMwOGFmZjAxN2M5IHJlbGVhc2UyNi1tYWludAorNzMzNTYgMzI0NGZjNDc3M2Y1NzcyNWVmM2RhZWYwZGRiZDc5MDkyMGI2NDc2NSBweTNrCis3MzM1NyBiYjYzZmQ5NzlmY2QwYTgxNDQ3YTY3MGVmMWVkNTIwOTE5ZTgwMmIwIHJlbGVhc2UyNi1tYWludAorNzMzNTggNWEzOTg1ZTVkYWUzYjU3MzAzNmU5ZWE1ZWEzZTM3NTJiMmQ5MTEyMyByZWxlYXNlMzAtbWFpbnQKKzczMzU5IDE0MDE4MmFjY2QxZjU4MTdlYTE5NmRlOTQyNzAwZWIyMGQxZWI5MjcgcHkzaworNzMzNjAgNDE3OWEzZTY2MTIzMWY5M2NjNTUwMjc2ZTUxZDllOTA4NTQ0YTBkOCBweTNrCis3MzM2MSA5NmEwYzNmNmVmOGJlYTI3Mjg5NTVjOWU1ZjBhN2I1MzY3ODhmMGJjIGxlZ2FjeS10cnVuaworNzMzNjIgMDI3NDQ0ODEwZTNmMzljYjM1OGU2MTE0NDgxNGM1MDk1ZjU0MDMxMiBsZWdhY3ktdHJ1bmsKKzczMzYzIGExZTA2ODFhY2IzNmYxYjdhNzg3M2E0MzQwOGU2MjljODdjN2ZjOTYgbGVnYWN5LXRydW5rCis3MzM2NCA0MWU2Y2Y2ODVlZDE2YjI5ZGU3ODlhODYxYmRlY2M4ODU4MzcxYzk1IHB5M2sKKzczMzY2IDIwMTcwYmQwYWYyNTRkZWQ5N2ExZmQ3MzNlYWNlMWUwNTJiNWQ4ZjIgcmVsZWFzZTMwLW1haW50Cis3MzM2NyA3Mjg4OWEwYjhmMzIyYTczOGYxNmRlZjg4NTZjNWZkYzY1Y2I3ZGY1IGxlZ2FjeS10cnVuaworNzMzNjggOWVlOWU3YWE4YWJjMjQ0MjU4NWQ5ZDdhOWZhMjk4YmQyMDc2ZTE3NiByZWxlYXNlMjYtbWFpbnQKKzczMzY5IGUyMDQxYzVjNjAwNjNmOTNkZWQwYzE3N2IzMDE5NDY5YmE3MzE0NWMgcHkzaworNzMzNzAgNzcwMDQwOGY2NWZjNDFmZmY2MzU2MTYxODBkNzU0MmIxNzRhODk3OSBsZWdhY3ktdHJ1bmsKKzczMzcxIGQ2NmNhZmQ2YmMyMWIwOThkOGY3MjBkZWZmNDcxNWJkNjU0Mzg1NWYgcmVsZWFzZTMwLW1haW50Cis3MzM3MiA1ZWE4NTA3ZDliZTEyYTBmNjU2NzRhZjZiYjBjMTg4MjIwOTRkNmVkIGxlZ2FjeS10cnVuaworNzMzNzMgNjBhMGFmMzJhNjYzZTJhZDI2NTg3NjYwZGI0MjhhMjU3Nzk1MjcxOSByZWxlYXNlMjYtbWFpbnQKKzczMzc0IDEyYmY4N2NkMjc0MzBlMGFkZjczNjhmZmI5NjU2NzI5NWRiNjRlZDUgcHkzaworNzMzNzUgNGY4YTQ0YjUxZDBjMWVhZDRkYzUzZmU4NTBhOGI5MjUxMDlkNzhlZiBweTNrCis3MzM3NiA1MzA2Yjg0ZDRmY2VlYzY5ZmE3NjgxODAzZTUzMDBkYmRlODhmNzUwIGxlZ2FjeS10cnVuaworNzMzNzcgNjM3MGQ3MWUzY2EzMjcxODYyYTU5MjYzMDg3ZmNkY2VhYmNjN2JlNSBweTNrCis3MzM3OCA1NWQyMmIwMjQ0NjRkYjI1YTVjYzUwZDY0ZDExNWZkMjY4Yzc1YzE2IHB5M2sKKzczMzgwIDBlMWIzYzI0ZDNlMjdhNjZmMmU4ZDc4ZWU3NTQ1MTVjMzVmMTM0NWMgcHkzaworNzMzODEgOWYzYTI1NzQzZjAzZmI1MGE5ZjEwYjRkZjZmMmUxNzJmZWFlMjMyNiByZWxlYXNlMzAtbWFpbnQKKzczMzgyIGJhMTAyNTQwZWEzNzM4OGFjMDk1NWU5ZDhhNTJkOGZlZTA4ZmZhN2YgbGVnYWN5LXRydW5rCis3MzM4MyA3Y2Y4OWVkOTBmOWQwNjRhZTRhMWQyYzg5ODRkMjA5ODBkNGY4M2E5IHJlbGVhc2UyNi1tYWludAorNzMzODQgZGFlOWJlNjM3OWIzZTU4NDE4N2RhODZkZWUyNjc5MDNiYTVjNGUxMyBweTNrCis3MzM4NSBmY2JjZDkzMTMzOGI4OTM5ZTkyNWQ2MWYyZGVlNTlmOGJkMGExZDQ5IHB5M2sKKzczMzg3IGM5NDk0Yzg4Nzg4ZjViODUyYmQyZWY5ZjcxOGVjYWM2YWFjMjgyZjUgcHkzaworNzMzODkgZjU3NjgwNzQ4ZWNiZDY5NTVjNzY5NTEwZDdkNzQ4YWU3Yjg0M2Q2YiBweTNrCis3MzM5MCA2NTI1NTFhZTQ3NjcwMmYzNmFmMjVkNjlmM2RmNjhhZjE2MjYwNGE2IGxlZ2FjeS10cnVuaworNzMzOTEgMDdlMmVlMmZkMzZkMzJmYmM0ZjVkYmVmNDBjMzczY2Q1ZWMyOTQzYyBweTNrCis3MzM5MiA2NDkyYjZlY2U1OTg3YWJlNGMxZjQwNjZmYmE3NzRkNmEzMDJiZjgxIHB5M2sKKzczMzkzIGYzNDc1NGE3NDVhZTJhMmE4NDU3ODkzMDc1NzM2ZTBlMTc5NmI0ZTUgbGVnYWN5LXRydW5rCis3MzM5NCA3NjBhNzEwZWI2YzE1NjU0YTk5YTUyODJjYTk4YWI5YTczYmM3YmE5IGxlZ2FjeS10cnVuaworNzMzOTUgMDE3YjRiNjQ0ZmFmMjQ1MzEzYTRhNTc3OGM4NTRlMWE3ZjJiODlhNiBsZWdhY3ktdHJ1bmsKKzczMzk2IGNkZjI1MmM4NzQzMzZiMDVjMWFhNDU5ZjQ4Nzk1YjI0NmU4ZDQ1ZTMgbGVnYWN5LXRydW5rCis3MzM5NyAyNGM4ZDFhYWJhZGUzMTk5MzViZDNiN2YwNWQ2NDVjYjg5MGZlODAxIGxlZ2FjeS10cnVuaworNzMzOTggOTIxZTU2OWQxMjE1NzdmNWIwMzc0NjdjOTI0NDRmNDg1ZmY5NmNhNCBsZWdhY3ktdHJ1bmsKKzczMzk5IGQ4MzM4YTlhMWUzYTg4MTAwZGU0MzMzNmY4ZmM2ZDQ1OTNhMjYxZDIgcmVsZWFzZTI2LW1haW50Cis3MzQwMCBlYjYxY2NhNWY1NGRlM2FhYWRjNDgyNjVmZjJkNDk5ODhjNjZiNjE1IGxlZ2FjeS10cnVuaworNzM0MDEgYmVlNDZmZjBlNTc4MzVhZjM0OGYxMzFmNjI2OWY2YmIyMzAxZDliNSBsZWdhY3ktdHJ1bmsKKzczNDAyIDQ1M2ZlNDg4NDJkMGIxMDg0NWFjYjM1ZmU1OTAzZWQ3NWM5NThlMTQgbGVnYWN5LXRydW5rCis3MzQwMyA3NWM0ZDNiYzZjYzg4NDAzNzdmOThkMTMwYzYxZjBkNDhmODUxYWFkIHJlbGVhc2UzMC1tYWludAorNzM0MDQgMGMzNTdlM2ZjM2QwMTdjNjZhOTQwMTdjZGE3NWRlMzY4NmNjNDM5YyBsZWdhY3ktdHJ1bmsKKzczNDA1IDc4OGUxMzk3Y2U3Nzc0NThmYjBkYzhmM2EwZTk2YjU4YmU0YThjZjAgbGVnYWN5LXRydW5rCis3MzQwNiBiNDMzOThlYTU0OWRlNDQwZTYyODUzYzU4ZTBiODgzZTYzZWQ5M2JkIHJlbGVhc2UyNi1tYWludAorNzM0MDcgNDdlMzM2NWUyMTc3ZTg4YTBhOTlkZTEyYTMyZjQ0NTk1YWJjNWMzYyByZWxlYXNlMzAtbWFpbnQKKzczNDA4IDAzMmMyZTVlMDYxNGYzNzBlODBmOTZhNTMwNDQ2OWI0NjVkMTQ5MmUgcHkzaworNzM0MDkgMDRjY2VjMDQ0MWIyYTYzOTRhYjk0ZDZhNjQwNTI0ZDAxNDFlYzk2YiBsZWdhY3ktdHJ1bmsKKzczNDEwIDAzYTg0OGQxY2I2ODI3NmE4OGEwNmZiNzY3M2JjMWFkZDRhNTNiMDkgcHkzaworNzM0MTEgMjVlZGM1ZjcyYTcyZWEzYzkzZDY2M2NlZjc1ZmI5ODUwNDRlZmU5YyBweTNrCis3MzQxMiAwYjg3ZTQzOGUxYjUzZTNmODEyY2FkOTYzYTdmZGI2NWQxOThiYTJmIHB5M2sKKzczNDEzIDE5ZTVkZmNlMGZiYjAyOTViZDkwNWRjNTc0NGJjYWM1MGY2ZWVkODQgcHkzaworNzM0MTUgMjZmOGFlNmYwMzdkNmI1ZTIzYzIwZTQ1ZWI3NjZhOTFhZGQxZmU4NiBsZWdhY3ktdHJ1bmsKKzczNDE2IGE3NjRkYjY0MDI4NDJiYzc2MTg0YTFmZWNhMzI3ODI2OGFmMDUyZDkgcHkzaworNzM0MTcgOTEyNDIzMTM1NDgzODE2MDZlY2JkNzdjNmViOGQ1NDE2ZjU4MGNmNCBsZWdhY3ktdHJ1bmsKKzczNDE4IDIyMTI3NDBmNDU0NDY5YmU4MTE4NzViOTUyNzE1ZWRhMmYyODQzODEgbGVnYWN5LXRydW5rCis3MzQxOSBjYjY2NDczY2JiZjg4ZDlmMDE4NTcxYWJhZWIxN2JhOWU2NDgwZWEwIGxlZ2FjeS10cnVuaworNzM0MjAgM2ViODUxMDgwOGM5ZDBlNDMzMGI0NGU0N2FhOWIxYjUzNGY3OGVhMCBsZWdhY3ktdHJ1bmsKKzczNDIxIDQwYzhjMzU0OTJmMTRhMjg5NzY1NGZlYWQ3NDE0ZDNjYzE3Mzg5MzUgbGVnYWN5LXRydW5rCis3MzQyMiAyNDdmOGQyNjhkNThjNDFhMjQ0NjJiM2RkNzczYTY2NDI0OGNiNWM1IGxlZ2FjeS10cnVuaworNzM0MjMgZjExOGFhYjY1MGRkM2U5YzI0ZmFmY2MzMjMyMzIwMGU3ZTE1YjA2NSBsZWdhY3ktdHJ1bmsKKzczNDI0IDBiZTM3N2U2MDgwMWI2YWZlYjMyOWYyZjQ3MDA5YmVmMGE2M2QwY2IgcHkzaworNzM0MjUgMDE1MTAyOWRlMWQ5MTc0MGM0ZTE1ZmU3MTc0N2RhMmMwZmZkMzAzZiBsZWdhY3ktdHJ1bmsKKzczNDI2IDNjOGY0ZjdlNGE2MmViMWQwZTBhM2E5MTgxNjExODFlYmNjMDkwOTggcmVsZWFzZTI2LW1haW50Cis3MzQyNyBlNDExOWM5MGJmMjk1MzhkMDAyYmFmOWRlOWZkYWQ1NzNkODFkNDdiIHB5M2sKKzczNDI4IDkwM2VmYmY1MTFiNGZlZTE3OTQ5YWIyNGZkZjRlYjk4MWU5OGZmZDIgcmVsZWFzZTMwLW1haW50Cis3MzQyOSA5MDAwYTA4MTE1OTk0MWJmZTdhZmVmMjVmMmE0ZWRhNWZlMTJhYzAxIHB5M2sKKzczNDMwIDQ2NThmY2FhZmM3MzI4ODNmYTk3MzcwODI0MTA1MjhmNzlmY2VmNWQgcHkzaworNzM0MzEgYjYzNGQwZWM4ZDM1MTU4MzA3ZTgwYjcxM2U3NWVkMGJkZDg5ZjJiZiBweTNrCis3MzQzMiAzMTExMDc0NDNjYzEzNmIwYzNiNTBlNTdmYjE3ZTE1MmM2ZDI1YmUzIGxlZ2FjeS10cnVuaworNzM0MzMgZDhhYTQ4NTQ4NWE2Y2Y4YWEwYzQ3M2Q1MTAwMGI2ZmU1Y2M2YTczYiBsZWdhY3ktdHJ1bmsKKzczNDM0IGUxODMxOGY5ODVlZDJlMWNlZDY2ZjBhNjIwZTc5ZjdkMjMwMzRkMGYgcHkzaworNzM0MzUgMWIzYTE5MDM3Zjc2NDEzNWQxNGI4MjFjYWUxNzhmMGE0NTQzYmU3MiBsZWdhY3ktdHJ1bmsKKzczNDM2IDQzNzNmMGU0ZWIyMTMyYjkxZGU5NzlhNWQwMWM3OTYxZGQ2OTU5NGIgbGVnYWN5LXRydW5rCis3MzQzNyBjN2FjNzBhOTQ0YjUwMWQ5MWYwN2Y3ZDQ4OTJkZjAyM2QwY2QzMjE3IHJlbGVhc2UyNi1tYWludAorNzM0MzkgNGE1MGYwYmRjODA2M2E3YTY5OTZhNTA2MmI5NDFjNGY2MTQxMmVhMCBsZWdhY3ktdHJ1bmsKKzczNDQxIDIwMzQzYWEyYTNlYjc5M2QxNGZkMTRiOGY4MDBiOWNmM2M4MGNmYjcgbGVnYWN5LXRydW5rCis3MzQ0MiBjYjVhZTQ0MDFlYmZkYzY5MzI5MjFjNzlhNzc3YmI5ZTMyYTM4ODg5IHJlbGVhc2UyNi1tYWludAorNzM0NDMgOTgxNGQ3ZjY1OWEwMGVkZmE3NzFiOTI3YjliOWIxYzY2MjE1NGRhMCBweTNrCis3MzQ0NCAyNzdmZDA2NGI1MzAxYTYwYTZlMDhiYzI0YjU3NTM3ODcwNTc3NDRhIHJlbGVhc2UzMC1tYWludAorNzM0NDUgMDc2ZGI0ZGUwMzdhYjEwMWVkMGU3YmYxZmY3ZDI4ZWYxZGJjYjNjMSBsZWdhY3ktdHJ1bmsKKzczNDQ2IGFkMmE1OTYwMTI2ZGEyMWVkNjdkMTg1ZDQ2ZTlkMGVhMGFlYmFjZWQgcmVsZWFzZTI2LW1haW50Cis3MzQ0NyA0NWMwNWZkZDliMzJhOGY2NWQ4OGY3ZTU2YTA4NmFmYWUzMjNiZmE4IGxlZ2FjeS10cnVuaworNzM0NDggMzNmZWZkZTc5M2IwY2M0ZWZhYjIyNjZiYmRiNzM2Y2RjODY4ZjE5NSBsZWdhY3ktdHJ1bmsKKzczNDQ5IGVlYTRkMjM3YzE2ZDc1MTExMzljYjEyYWVlZDY1YTc1ZWIxZTJhMDQgcHkzaworNzM0NTAgODY1NTA2ZjM2ZTU4OGRkZTUzMDI1NTIwYzY4ZWE1NmY5NWUzNTg5NiBweTNrCis3MzQ1MSA5ODJmN2JhMGUxNGEyN2Y2YTBmZmNiYmFlZjBjZGMwOWY3ZWRhYWMxIGxlZ2FjeS10cnVuaworNzM0NTIgMzkwMmU0Zjc0ZWUyODE3YTIxYjZkMDNlOTk3ODcwZTRiNzNmZTU1ZSByZWxlYXNlMjYtbWFpbnQKKzczNDUzIGYwMTk1ZGFhZGZmYmIyNThmNjk0YWQ4N2IzZTU1OWQ3YjZhNWFmOWMgcHkzaworNzM0NTQgMDllNWY4OGM5YmRiZWQ0NmFlYzRlOTRjMDNmZTQ0ZGNhY2VlZDBmYSBweTNrCis3MzQ1NSBjNTY4MmNlMjM0Njc1OWI4Y2EwM2EzYzAxNWRlYTJjNGQyNTEyMjcyIHJlbGVhc2UzMC1tYWludAorNzM0NTYgNmI2NzAxYmExMjExZWE1Zjg4MmY3NmNlMTFhMTMwMmRhMDhhZTBlMiBweTNrCis3MzQ1NyA0YzZjZGJhMWIwYmIzY2EwMzRjNzU3ODAzMGJlMGFiOWQwMTk5OWYxIGxlZ2FjeS10cnVuaworNzM0NTggYzM4N2RhODM3YzRhMjNmZmJlNzdhYTVhY2MxMmRiZDg3ZTU3OWE2ZiBweTNrCis3MzQ1OSBjMTk4NmJiNDMwMGI3MjJiZmFiYWFiZjgwYjUzNWQ5ZjFlMDQ4OTZlIGxlZ2FjeS10cnVuaworNzM0NjAgNmYzMDU0YWZhMWEwZDhhYjEwZjliNjBlNGMxYjY5NzYxMmU2MTI4OCBsZWdhY3ktdHJ1bmsKKzczNDYxIGE1ZjMxYjMwYzdjM2NjZDI5Y2JlYjUwMDBjZDg5ZDJkMjgwOTRiZGMgbGVnYWN5LXRydW5rCis3MzQ2MiBiMGNiM2NiZGZjNDdhYjliNGFhODIwODZiNjNjMWJmNGU0ZTYzN2Q3IGxlZ2FjeS10cnVuaworNzM0NjMgMjJjNzkzNDFlNTgwY2EyYzNjNWIwYzQ2ZWQyNzZiZDFlOTgwMDdlNiBsZWdhY3ktdHJ1bmsKKzczNDY0IGQxMWRiY2Y4NDNkZjhjMDRjZGRlODRjMmU5OGE0NWRjMTQ4ZGU3ZGEgcHkzaworNzM0NjUgMzM0ODkxMTdkYTljNTYwOWM2ZDg1MDY4MDU2OTk5NzJjNjI4Njc5NiBsZWdhY3ktdHJ1bmsKKzczNDY2IGQ0YzY2ZmYxMjljMmM4MzMwNTg3MjViMGFiYjYyNjJiNTQzNDgzOWUgcHkzaworNzM0NjcgYWQ2ZjZjMjYxODdmOTQ0YTg5M2FlMDBlYmYxZDA4YjE1MWU2YzE5NSByZWxlYXNlMjYtbWFpbnQKKzczNDY4IDdlZGMzNzg4M2U4YTFkNmQzZTE1Yzk2YzY5MzU4YWM1MTY2OTU3NWYgcmVsZWFzZTMwLW1haW50Cis3MzQ2OSAzMTVkN2FlNDJlYTcwMjUzNTI3NTYyYzE5YWQyMzNlY2M1MTJmNGExIHB5M2sKKzczNDcwIGE3NWUxOGQ4MTY2YWMyYWZmYTExZjNkNTZkMTQzNDBhYTRlMjgyNTEgcHkzaworNzM0NzEgYTIzMGY4ZDliNDE5MjhjNTJjZjhiMjNlZjZlMGJiYTI0Nzg2NTRlYSBsZWdhY3ktdHJ1bmsKKzczNDcyIDM3MjIzZWY0ZDQ3MGQ0NzE3ZDA0NDBmOTQ3MWRmN2M1ZjNkYjQ2MzYgbGVnYWN5LXRydW5rCis3MzQ3MyA5OGE2NmZhMDFlMGE0ZDBhODYwNTFiNTIwYTRlNzVjOGE2OWQwMTI2IHB5M2sKKzczNDc0IGI4MTg5M2QzN2U3YTllOTU5MDBjODI0YzlkZTdiYjBiMzk2NjViOTAgcHkzaworNzM0ODAgZGNjOTYyYjRkOGZmOTMwZGUwYTM1NDg5ZDM0YmNkZGE0ZGQ2MjRkMiBsZWdhY3ktdHJ1bmsKKzczNDgxIGUyNWE0ZDI3YzM4YjYwNjYwNmY3Y2ZmMTIwMWQ0NTMzNDQyYmVhMGMgcmVsZWFzZTI2LW1haW50Cis3MzQ4MiA1ZmFmY2IzMmYwNjIyN2NkOWY1NzgzYWU4NmU2NTliMmE3OWQ0NGI3IHB5M2sKKzczNDg1IGU3ZDM4YzQwODM2MTliM2NkZTNlMGI2YjdjMWUwMzk1MzIwOWZmMmMgbGVnYWN5LXRydW5rCis3MzQ4NiA2ZGQ1MDdiOTUyY2Y5MDQ1ZTVlMDRiZmVlMzg3NDQ3NDBlNGZmMjU5IGxlZ2FjeS10cnVuaworNzM0ODcgMDcyNDk4ODlhNzczZjE4NDRlMzcwZGMxMjg3MDAzZjhmMDc4ZGEzNSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzM0ODggZTFjMjMwZjAyZmViOWZkZWNlNzhjMGQ5MDM4MmQwN2RmNzExYjU1NiBsZWdhY3ktdHJ1bmsKKzczNDg5IDkxM2M5YmY5OGQ2MDkwMTZhMDFlYzY3MDdlZDczZDQ3ZThkYjYzYzggbGVnYWN5LXRydW5rCis3MzQ5MCA3ZDI0NWE0MjNlOTZjNjdjNmNiNDBhOTkyNDg2OTM4NDU5MThhOGIxIGxlZ2FjeS10cnVuaworNzM0OTEgMDFkMTA3MDVhNzFiMWEyMTRmMzJjZjdkMDRhNWIyYTQ2ODFjMTRmNSByZWxlYXNlMjYtbWFpbnQKKzczNDkyIDNlNDU0MGI3ZmVjOWYxYWU0ZjBhNTgyMmU3NTFhNjY2MTY2ZmU4MWIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczNDkzIGYzMjNjMjgwZGY1ODZhNDkyZGM1Mzc1MjY3ZDYzNTI2YTQ3ZGJhMTUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczNDk1IGQ2NjIyNzg5YWQyNzU2MjBmYWRjZTAzNjVlYjk4MWY1YTYxN2VkYjIgbGVnYWN5LXRydW5rCis3MzQ5NiA0MGFmYjY1NTM2ZGEyNmIxN2NjOWU4NmYwN2YxZmZkMGIyYmE0N2JkIGxlZ2FjeS10cnVuaworNzM0OTcgYTk1MGE0NDM0ZjhiYmZhNzU4MDU1ZDAwYmU0ODQ3NmUxNTA0MmFkNiBweTNrCis3MzQ5OCBkM2I0NGNlNTQzYWU0NDUxNWViNGYxZDk1ZWU4OWYwZWUzNTY1MTI3IHB5M2sKKzczNDk5IDExYzE2YmU0ZDIxYzIxM2NlMjJjYjU2Mjk1OWUzY2ZkOTViYmQyNTcgbGVnYWN5LXRydW5rCis3MzUwMCBlNDhiYTljZTg4MzYyNDVlYjY1YmQ3ZjY5MWYyZTgyZTNhNzMwYTM4IHB5M2sKKzczNTAxIDg3MDAwODllY2NkNGQzZTJjODExNzRjNTc1MzYxMGE2MTUwMzMyZTMgbGVnYWN5LXRydW5rCis3MzUwMiA5MTc0OTdlMjUwOWNkNjZmYmI2ZGExOGNiYjQzODc0YjEwYzY2YTZjIGxlZ2FjeS10cnVuaworNzM1MDMgYzRmYjA3MTIxNDdmZDJlNWFkOTc4MTljNGIyZjdkYWQxYTk4ODUxNCBweTNrCis3MzUwNSBhY2M1OGI1OTNiYmMxYmJiZWJjMjk4MGRmOTc0Njg0MmY5MzJkZjVkIHB5M2sKKzczNTA2IGJjNjFkMjMxYTY1MjZiYzk2N2M1ZmYzYjdlMzlkNTJjMTMwMDNlZWYgcHkzaworNzM1MDkgZTMzYjY1NjI3MTg4YmZjMGIzMjczNDExOTUyZWVkYzExNTczNTdjZiBsZWdhY3ktdHJ1bmsKKzczNTEwIDVjYjRlNTFhNDQwODUxMjdjYWFiYjE5NGMxYTQ0NGI1YzE3NGU0ODYgcHkzaworNzM1MTEgOGFkN2ZjODA5ZjY4NGY5YjdmMWM1NDU0ZmJlMzVlYTZhOGQ5ZDY1YyBsZWdhY3ktdHJ1bmsKKzczNTEzIDM4NjkyMmI2MjljMzkwNTRlMDkyZGUyZjE1N2EyZjBlMWNjNDhjOGUgbGVnYWN5LXRydW5rCis3MzUxNCA1MTRmYzkzNjZmMmRiYmYyNDJlODlmMWI1ZGE3NjgxYjA3ODVlYjlkIGxlZ2FjeS10cnVuaworNzM1MTUgMTczMmE1NGEwMjcyNTg4MmIyZWVmMGQyNmIyYTdkYjliNThkOTk4NSBweTNrCis3MzUxOCBkYzM4MTdhOGY1NTJlYjY4ZjRhZDYwYjI2YTNhOTc5NzRhNGNmMDc1IGxlZ2FjeS10cnVuaworNzM1MTkgODBkMGYyMDJiOWVmMmE2M2YxYjQ0YzExNDc2ZGFiYTIzOTljYjRmMCBsZWdhY3ktdHJ1bmsKKzczNTIwIDQ1NTA2YmU0NDUxNDY2MjE5ZjFjODIxNjI1NDkyOTBiNmZkNTI0YzcgcHkzaworNzM1MjQgZGZkOWI5ZTcxYjJlYjJiNmQ4NDFhYzgyMzE4NmNjMDk5YTNjMzM0MyByZWxlYXNlMjYtbWFpbnQKKzczNTI2IGRiZmUwYWJjZDg5M2EyNjNhMTI3ZjNlMjk2MjU4MDQzZmY4OGVmODIgcmVsZWFzZTMwLW1haW50Cis3MzUyOSBjOTQ1OTRlNmVkYjczMjgzOWYxZTUyYmU4NzkyYjY3MDI3NzZiNWZiIGxlZ2FjeS10cnVuaworNzM1MzAgZTczNzEzNTNhMzAyMGVkMTdjNDVkMzMxZWQzOWIxYmJhMTNjNjAzMiByZWxlYXNlMjYtbWFpbnQKKzczNTMxIGI0ZDBjMDIwZTM1NzcwZmU5NDEwNzY2MzAxN2UwNWI4ZGNmYWJmYjQgcHkzaworNzM1MzIgZjY1YWRhZDM5ODhkNGFhNzMwN2NiNDI0OTcwZjg5YjEwYTU1OTcyOSBsZWdhY3ktdHJ1bmsKKzczNTMzIGE2YTFhNjFmNzJiZjgzZTllNDQ5NjhlYTAwZWIxY2VlMDYwZWIyZjQgcHkzaworNzM1MzQgMDdmNzExZDg3ZmZkYmFiYzFlYmY3ODA5MmQ0Zjc2ZTAyNTEzODBlMSBsZWdhY3ktdHJ1bmsKKzczNTM1IGQxNjI5NDY5NzY1OGVjY2E4YTE0Y2E3Yjg3ZmJlYmRjN2Q4YmJmMGQgcHkzaworNzM1MzYgYWQ2MDczNzhhNGVmZGQzMjg1OTljNTlmNGI4MWIyZjJhOGVjMjBmOCBsZWdhY3ktdHJ1bmsKKzczNTM3IDk1ZTU3OTFmYzNjOTJkN2RiNzU0ZDRmZjMxMzU3YzkyODk1NzQyOGUgbGVnYWN5LXRydW5rCis3MzUzOCA3YTEzMTVhOTkyZjBiNmVjMGEyYWQ0NWNhNzYwNzk4YTdmZmRjOWY3IHB5M2sKKzczNTM5IGNiM2QzMjM0MzhkOTIyNWUzNzM4MDAwY2NhNGY3ZjYyNDVhOTI2OGIgcHkzaworNzM1NDAgYmRjOTc1OTRlNTA5OGE4ZjZkOTFiOWY1NDM0MTQ1ZWYxOGYyZWQ5MyBsZWdhY3ktdHJ1bmsKKzczNTQxIGI5MmI4OTJjNDM2MDM3NTI0ZDkzOWFmODFkY2E2ZmEwZGY3YjNhMjUgcHkzaworNzM1NDIgNmEzMWM0ZTBkZmMxMmE5YWFhODgzOWQ1YjU3NTcxNmNjODQ4YzdmYyBweTNrCis3MzU0NCAyYWVlZDRlY2FkNWI4N2Q4NTRlNTE0MWU3MGY5MWU0NTY3NzY5ODAyIGxlZ2FjeS10cnVuaworNzM1NDUgZjZjYjI5MzIwMjJjYWY0ZGNkNjlkNWQyMGRhMjA5ZTgyODQxZTFlOSBweTNrCis3MzU0NiBhMjBhMzc3Y2MzMjdhODJkZTc5MzAwZjhjMDQzNzlkM2JhOTEwYzVlIGxlZ2FjeS10cnVuaworNzM1NDcgOGE5NzZjZDU3Y2E2NTExNDJjMmI1MzdmYjljYjVjN2NjYzkwMjRiMSBweTNrCis3MzU0OCBmMzE4YWRmZTIyNjRhZTZhYTJmNmFhZjZlZjQwNzMzOTc4YWExYmEwIHB5M2sKKzczNTQ5IGY0ZDg0YzRmMjg5YmRhOWRjNWVmNDJkM2M2YmU1YjFhMTk1NGQwNzIgcmVsZWFzZTMwLW1haW50Cis3MzU1MSA3OWE2MzBkYThmMDBlMDY1OTlmNmExYjFiOGMzN2NjYmEwNjYyMmE2IHB5M2sKKzczNTUyIDU1YjMwM2Q1ZGQ1NTE1ZTE4YzkyZjZmZDM3ZmFkMDhiZmEwYWE3Y2MgcHkzaworNzM1NTQgM2ZlMmQxZDM3Y2YxZjA2MzQyM2U4MzZkMmJkZTIwZmYxYTQ5Yjk4OSBsZWdhY3ktdHJ1bmsKKzczNTU1IDQ0ODY5OTE1NmRmZWEzNWM5NjdlYzgzOWFlZTQwNGE5NmVkMTk1MjEgcHkzaworNzM1NTYgYTFhNmU2ZGJkZDZhNzJmMDY2YTcyMGU4ZmYyODI5OWRjZmFhNjcyYyBweTNrCis3MzU1NyAyNzM1ODkzYzM4NzQ3NDQzNDc2ZDM5OTNjOTQyNTA5ZWYyYTdkZjZhIGxlZ2FjeS10cnVuaworNzM1NTggYTkzN2YwNDA5NTkyODFlYmFhYjM0Mzc1OGY1Y2U4YjQ1YTZiMmJmOCBweTNrCis3MzU1OSA1MmM4Njg3MzY4M2VhZTljZTk5YjRlYWFiNzZlYzhkMWE3ZGVjY2Q4IHJlbGVhc2UyNi1tYWludAorNzM1NjAgZTY5MGI3MzZhZjQ3ODEzNzZjOTllNWUxYmM1YWZiNzQ1MWFlZWM5MyBweTNrCis3MzU2MSBhNTc5OTJhNjNjYWEwN2U4ODFjYzJjN2ZhZjcxZDFiOThiNjY1YmE4IHJlbGVhc2UyNi1tYWludAorNzM1NjIgY2Y5Y2ViNmY1YTNhN2FmNjViZDQ3YTQyOGQ0YWJlNTdhMTZjNWIzMCBweTNrCis3MzU2MyA4ODgyZjhmZTgyM2M2NGIzNTc0NDhjMjI5YTJiZjA0YjkyZDkyOWY5IGxlZ2FjeS10cnVuaworNzM1NjQgYTY2NjEzNGU2YzBjMjM0YjA5NmYyOWM0Y2NmYzBmZjc5NGNjYjUxMiBsZWdhY3ktdHJ1bmsKKzczNTY1IDBmZjBhMzk2ZmRhODM3YjMxYTIwNTRhYTgzMDQyYmIwMWViZTA0ZmIgbGVnYWN5LXRydW5rCis3MzU2NiAwMTcwYzk2MWYyOTA1NGFmNTNiODdlODkyNjE5ZjI0MjdhN2QzZTAwIHB5M2sKKzczNTY3IDI1M2RjN2JlNWQxYWJiNGMxNzk1Y2VjODQ1YTE2YzI4Mjc4MTg0M2MgcmVsZWFzZTMwLW1haW50Cis3MzU2OCBkMDQ4NzczOTFlODA3Y2ZmNjY4ZmU5ZTZmNDhiNGM5MTEwOGMyM2VjIHJlbGVhc2UyNi1tYWludAorNzM1NzEgMTUwZTNmZWJkZjE3ODVlNDhkZGU0MTBmZDY3ZTAzYTFkYmVlZDNmYSBweTNrCis3MzU3MiAxMmU5NjBjYzM3ZDYxZWQ2ZDA3NzE0YjVmYmEwY2Q4ZmFlNTMzNWYzIHB5M2sKKzczNTczIGE2OWEwMzFhYzE0MDJkZWRlOGIxZWY4MDA5NjQzNmJjYTZkMzcxZjMgcHkzaworNzM1NzQgN2M5ZTFjOWVjNWRmZjgyMGEzZTI2MWNmOTJjNGI5NWU1Njg3ZGQyNCBweTNrCis3MzU3NSA0YWNjYzhhM2Y5YWZlODZmY2Q0NjZjMjY5ZDBmMmVjMTA1MTY1NTY0IGxlZ2FjeS10cnVuaworNzM1NzYgODMxYmVlZTIyYTlmY2FjYTE5ZTM4OWFkMTA1OTczNmVjMzlkMjIxNiBsZWdhY3ktdHJ1bmsKKzczNTc3IDlkMDBmZDAwODdmZjkxNjVkZDlmZjlmZGQ2ZjlkMTY5YTZiN2IxMTYgbGVnYWN5LXRydW5rCis3MzU3OCBjM2Q1ZDNjOGU0OWJhOGIyZDk5MzQ3ZTFlZmIzZDg3ZGIxNTI2MDQzIHJlbGVhc2UyNi1tYWludAorNzM1NzkgMjVkODVlNDQ4NmFjZjEwMzMxZDQzNjVkZmM0ODQyYzkzY2Y1MTgzNCByZWxlYXNlMzEtbWFpbnQKKzczNTgwIGEyNGYwOTYwNmI4MzI2OThlMjZhZmIzM2Q2NDM5NzU1MWZkMTc2OTMgcHkzaworNzM1ODEgNzdmYjdkM2M2ZGRlN2E0ZjU3YzcwNGJkZmYyYjEwYTU1MTkzNmFiOSBweTNrCis3MzU4MiA5NjAzMzQ0MzU4NTU4Y2M2NWY3Mzg2Yjg2ODRiMGYzYWY5OTVjOGFlIHB5M2sKKzczNTgzIDVmNDllYThmNTkwOGNmZGNlNDhiMWIzNDFjZjRmODEyNmRkMmY1NzYgcmVsZWFzZTMxLW1haW50Cis3MzU4NCBiNjc2MTU5NDU2ODE1NDc2ZTc5YmE5MjczYjI0ZGVjOTA3OTVhMmY2IHJlbGVhc2UzMS1tYWludAorNzM1ODUgNGQ0NzZmNmYxYmUzYjIxNWRiMWQxZDIwODc0MzhmZDhhMTI2ODExNyBweTNrCis3MzU4NiA2ZGM4ODRiMmRlYTdhYWMyMzg2MDg0MjVjY2M1Nzk3MDU1ZjNhMTk5IHJlbGVhc2UzMS1tYWludAorNzM1ODcgNDZjZjJlNWE1N2Q0ZjdiMDkwYjZlODdhYmQ0YmNhN2U2YzE0ODk4MCByZWxlYXNlMzEtbWFpbnQKKzczNTg4IGRjNzQ1NjM5NzhkZjQ5NTRjM2E2ZTY5NWUzMGJlNzIyNTE4MDc5MjAgcmVsZWFzZTMxLW1haW50Cis3MzU4OSAxNjUxZTJmMzZhZjEyYWVhZWRmMjI4ZTMzZjNkOWRhM2IyNmIyNzcxIHJlbGVhc2UzMS1tYWludAorNzM1OTAgMDcwZTFlMTVjNTE2MWViODgzYjZmMzFkZDhiZjRmYTExODg1MWQ4ZSBweTNrCis3MzU5MSAyZGEwNWY4MGQzNjVhZTlmNTVmNzUzMTdlZmYzY2U1OGQ0OTUyMTJmIHJlbGVhc2UzMS1tYWludAorNzM1OTIgMWQzYmRkZmE4NTA5MGNjNTYwYzRmOTg3YTIzODY1YTM4NmYxYjU0ZSBweTNrCis3MzU5MyA1OGYyYjI3YzkxYTE0Y2I5NzVjOTAwNzIxM2E3YzNkNWQyZTczZWFmIHB5M2sKKzczNTk0IGUyNTIyZTRkMmRjOGJmMmY4MjQ1MmE4NWU4MmYzMjgyYmUyY2E2NjcgcHkzaworNzM1OTUgNWIzZDBiZmM4ZDI4OTFiYzQxMGRkMmExNjlmMjRkYWNkOTMyNmU5MSBsZWdhY3ktdHJ1bmsKKzczNTk2IDFmNjA1ODNiNjI4N2NmMWNhY2UyMGRhNDk4ZWUxYTU3OTc0YWJiMDkgbGVnYWN5LXRydW5rCis3MzU5NyAzYWFmMmUwNjVkYjA1NDAxODAzNzA1ZWQ0YmZhM2ZkMmY5MDMwZGY4IHB5M2sKKzczNTk4IGY0ZWVhMGQyMTY1ZGFkY2YxZThhMTE0ZTMyYTJhNzcyNzFjMjUzMzggbGVnYWN5LXRydW5rCis3MzU5OSAxZjRmNGQ5ZWM3OTMwN2FkYTFhZWQzZjE0ZTBjY2NmYTgwZGI3Yjg2IHJlbGVhc2UyNi1tYWludAorNzM2MDAgYzUzNTc4MzZjMDc5ZDc2ZmVmOGI4MjA3YjUxNTBkNDM0MmQxYjI1OCBweTNrCis3MzYwMSBhYzc4ZWVlYjQ2YzI5NWYwYjY1YjljYjg3NjNlOGNkNGY2MGI1NDRjIHJlbGVhc2UzMC1tYWludAorNzM2MDIgMTBhMjI5YzhiZWFkYjk3NmVmMWMxYjcxODdlOTBjZjAyMGU5ZDcxMyByZWxlYXNlMzEtbWFpbnQKKzczNjAzIDU1OGVkNzJkNGQzM2JiYzM4NjAxNjU5YWI2MzBiYTUzYjRiZWFlMjYgbGVnYWN5LXRydW5rCis3MzYwNCBjNDFmZTEzM2Q4ODczMzA1MmVhZTY5YjcxOWI5ZjYxMTNiZWNmOGI2IHB5M2sKKzczNjA1IDA4ZDA1ODU2MjE0YTM1ODFjYjdhZTZlMTMyNjU1ZTFkZmQxOWFlNmEgbGVnYWN5LXRydW5rCis3MzYwNiAxMTdlODVjYmYxNjliNGI4MDRiMWMwNGI1ZDgwMDQ5ZDA5ZDE4ZDg5IGxlZ2FjeS10cnVuaworNzM2MDcgNTRlZDI3OTFiYjE1YjhjNzJlMDUzMTk5ZTE1ZTAwMWQwOGNjMGQ3OCBweTNrCis3MzYwOCBlZTI1M2ViNmYwOGMwNDkyMGZiMjI1YzZmYjkyZDY3YjdiMjNiNzMxIHJlbGVhc2UzMS1tYWludAorNzM2MDkgNmU4ZDYzMzQ0ZDNlMzBkOTdjODEwYTZhZDMzY2U5MmIwZGUxOTZiMiBweTNrCis3MzYxMCA0YTIyNWRlODkyMzM2MjdjODUxZTIzMjIzM2IwNzIzNzc3YTZlNDBmIHJlbGVhc2UzMS1tYWludAorNzM2MTEgNTQ0YzViYWQxNjA3N2ZhZGRlMDlmYmU1YzA1M2E3MGRiNjUyNjllMSBweTNrCis3MzYxMiAyNjAyYjU2YWQwMmRjNjgyMDcyOTE1Nzg5NDgyNTQ5OWUwOTI4ZGM5IHB5M2sKKzczNjEzIGI1NWE3OGIzOWJkNWVkNmZiYzllMjM0NmM2YWUwZmY2NmI3NDEwMDAgcHkzaworNzM2MTQgZGU4NjZmNDdkMzhhODU3ZDc4NDJkYmEwZWFhYjZlMWNjYmY4OTZmYSBsZWdhY3ktdHJ1bmsKKzczNjE1IDM2ODQ3ODg1OWZlM2FhZjljMjYzMzNkZjMzOThlMzhlYWJjZmZiNTMgbGVnYWN5LXRydW5rCis3MzYxNiBhYTk1MGY3OTYyZmRjNmE1MzZmZTMyZDcxODEyYjRiMzgyMmQxOGRlIHB5M2sKKzczNjE3IDBjMzE5ZTAzZDlhMTBhOWVlY2FkMmEzYzY4ZGMxZTAzZTYwYWMxNTUgcHkzaworNzM2MTggYzllNjVlNDkzNjVkYzM4YmQ2Nzg5MDQ0ZTUxNTY1MGEyZjU2OTdiZSBweTNrCis3MzYxOSBjYjYwMGUwMzQzN2Q2NDBlMWUxODg1M2Q0ZmYyZDc2NjAyY2JmNTk5IHJlbGVhc2UzMS1tYWludAorNzM2MjAgNjU0NDA3NzQ2YmUwYThmMzdhNzhmYjA5MTc2MThhZGE5NjFmOTQxNyBweTNrCis3MzYyMSA5MTA5YjQyMmMxMzhmYzRiZWMyMjIwZmQzM2UyZmIyZmE2YTJiYmNhIHB5M2sKKzczNjIyIDIyMjg5MTZhYjQ3ODhmOWFlOWViYmQyOTc1MDYzNTJkMWYyOTZkN2MgcHkzaworNzM2MjMgMWU1NTg5YTE3Y2YwN2VkOTVlOTQzZGI5NDdkMzRmMzM1NWU2ZDczOCBweTNrCis3MzYyNCA3YzI4N2QzMDAyM2MzNTU5MDBhMjJjNzgwMGEzYTk2OTRiZGRhMTEyIHB5M2sKKzczNjI1IGY5NGMwOWFhNDQ0NDNiYWZkZWExOTk2MDNlYWMyMDk0NjcxOTMwOWIgcmVsZWFzZTMxLW1haW50Cis3MzYyNiAwNzA0ZjE1YjQ2ODI3MWI2MDljYTRhNGEwMDFjMjQzNzU3NTAyOTE0IHB5M2sKKzczNjI3IDQxMTg4NGQwMWY4YjBmOTZhZDRkODExMTg5YTRmYmEzYWVmNDJhZGYgbGVnYWN5LXRydW5rCis3MzYyOCA0ZGI0YWYwY2Y4MmM1YjhhMDZjZmI1NjJjZmYwZDA5ODZhNzM5ZTI0IHB5M2sKKzczNjI5IDVjNzAyYTRkNzVlNDQ1ZDUyZjZkN2NmMzA4ZjZjY2YwNjI4ZGIzOTEgcHkzaworNzM2MzIgNjc2ZTc0YzIwYzZlYTNkNjU4NmI0N2I0ZTFkZjRkNmNhMWJkMzc5MyBweTNrCis3MzYzMyAwY2MyMWM5NzUxZjE0NzVkNTRlMDhlN2U5MTYwMzQ4YzYwNWI4NDEyIHJlbGVhc2UzMS1tYWludAorNzM2MzQgZGI5MWEwNDUzMDUwYzI4ZDE1NGQ0NmRkNTZlMjY1ZDFiZGUyNmM4MyByZWxlYXNlMzAtbWFpbnQKKzczNjM1IGIzMmQxMzZmM2UyMDA0ZTc5ZTRkNmRhYmJhMjFmZmVkZDA1ZWMwZjMgcHkzaworNzM2MzYgMWE5ODQ3MjM0MGZhMGQ4OGFlMzExOGMwYjFjY2FiN2IyY2VhOTRhOCBweTNrCis3MzYzNyBlMzAyNWE0YzBhZDc4NTMzZmE1MjU5OGNiY2RkZmI2MzRlYTcxMDhlIHJlbGVhc2UzMS1tYWludAorNzM2MzggZmZkN2NmNWM3Mjg1Zjg5ZDNhMGYyZmZkZGIwYTZhZmNmYmI3MDM3MCBsZWdhY3ktdHJ1bmsKKzczNjM5IDUyYzQ4ZGVkZTVmNzdmNWI2MDU4ODhmZDg4YzM0NTk0NmIyNGM2ZjggcHkzaworNzM2NDAgYWI5MWZhNWQwYzVjYzIyMjU1OWU1NTJiNjczOGVhMzI0YjFjOGU2ZSBweTNrCis3MzY0MSBkOTRiM2VkNWQ1MzY1YzQ3NDMxODk2ZjgzNzk0NjQ2MWU0YzljMzM3IHJlbGVhc2UzMS1tYWludAorNzM2NDIgYTUxMWZlNTE2NmZkNzc4ZGFiNjY3MDAyMDk0NzljNGViOWUzOWQ3YiBweTNrCis3MzY0MyBkNzQ5NmNjMTBkZmVlZWEwNzE5ZDA2MTllNDA5NTVjOGJmMjE3ODZjIHJlbGVhc2UzMS1tYWludAorNzM2NDQgMGY3ZGM1NzA0YzU5MDY1OTRlYTZlZGI4OTE1ZGNiNTE3YWJkODBlMyByZWxlYXNlMzAtbWFpbnQKKzczNjQ1IGY0N2NlMTFlMDcyYjYxNTU3ODVmYTI3ODgxMjcwYjA5ZmY3OGUzMmEgcHkzaworNzM2NDYgNjZjYzUwODkwODk0YzEzZWIxOTY5ZTc2NTA4ZjQxNWY0MTU0YjU0MCBweTNrCis3MzY0NyA1NjNjYzRkY2M3MDMyOTBiNzBhOTJhZDBlNGY0ODQwZDJjNGIxN2ZkIHB5M2sKKzczNjQ4IDUyODQwYmU0MjUzMGY3NjMwN2RjNDI4Y2Q5YjViMzkyZjY3OWZjODAgcHkzaworNzM2NDkgYTM3YmI1OWQ0YjUzYTkyODZlYzdmNDYzYWUzYzJmMGZiZDdkMWZhYiBweTNrCis3MzY1MCAwOWM0NGM5MzM5NDJiNDQ4OGE2MDkzNDBiZGE3ZDEzYzI4MmI1ZWJmIHB5M2sKKzczNjUxIDQzNjk4MjI0MTRjM2FiYmMwNzMwNDRkZGFjNDQ3OWFiNzY3YmIyOGYgcHkzaworNzM2NTIgMDA4MDAyOGY1Y2EwMDEyM2VmMTI0MDIxOTA3NWQzMmIyMWMyNTRkYiByZWxlYXNlMzAtbWFpbnQKKzczNjUzIGE5MjUyYjg4NDdmMDdkNzY2MzFkMTU0NjE3YTAwYWIyMmEyMjI2ODQgbGVnYWN5LXRydW5rCis3MzY1NCBkY2Y3MTIxZWRiMmU4NWQwMGRlMDE2Mjg5NGQyY2FiZTVmYWIzZTg0IHJlbGVhc2UyNi1tYWludAorNzM2NTUgZmRjMjEwYThhMzI4ZTI1Y2VhMTQxM2Y4ZDUxMDE0MjVjMzJlODU3MiBweTNrCis3MzY1NiAzZjQ2NjhiNDlmMTFlMzliZGNhOWIzN2VmNWE2ODNmZjJhZDUxZGI2IHB5M2sKKzczNjU3IDUyMGYxMzEwYWU2MTM5MDI0OGQzZWNmZGI2MDFkNjg3ZjJmYTc3NWUgcHkzaworNzM2NTggNTI3YmFkZTMwNDNiMjNhNzdiN2Q2MTA1M2QxMWZlZDgzNTJlMjkwNSBweTNrCis3MzY1OSBkNTEwMTdkY2JhMjQ3Zjg5NTFmYWJhMzY5MDgwZDQ1ZDQ4YmQyNzdlIHJlbGVhc2UzMS1tYWludAorNzM2NjAgZjNkYWZmZDRjYjI4YzYyOGUyZjlmNTg1ZmM3ZTE3NDFhYjM0YjZkMSBsZWdhY3ktdHJ1bmsKKzczNjYxIDk4MjliNDIzOTllNTZkOWIyYWQ0MDRjM2E3ZWQ1NGYyODliZjM3ZWUgcHkzaworNzM2NjIgNTA4ODA2NGQ2MTcwNjU4NmY2OGFjNTFjZmMwOTkyZDZjYzQ1YWQzMyByZWxlYXNlMzEtbWFpbnQKKzczNjYzIDcwNDg5NDg2NDZiMDg3ZWYwM2JhNDUxZWFkYWUyOWE4OTg2ZTM5ZjEgcHkzaworNzM2NjQgYzQ1ZTMzMTIzOGFlNzk2YWViMGFmOGYzNzBkYzZiZGIwMzI3NWM1MCBweTNrCis3MzY2NSAxNjRkNjRiMzlhYzA2YzAxODdiZjk2YjdjMzFjOTA4NjQyNTBhOTg1IGxlZ2FjeS10cnVuaworNzM2NjYgN2VjYzA3NWQxNzFmN2EyMWM1ZDQyMDYzNWIyMDE2NDlhYTZjMjE2OSBweTNrCis3MzY2NyAzODBhZjllODBjMmU4ZWZkOGJmNmI5OWI4YzZiZGFmZWZmYTlhYjNmIHJlbGVhc2UzMS1tYWludAorNzM2NjkgYTY2NGE0NDQzYTM5NDg0NTBhZGI0ZWQ0ZjYwNTYxM2IxOTYyYTM3NiBsZWdhY3ktdHJ1bmsKKzczNjcwIDY1YWRiYTk1ZDdlMGU3M2YyYzdlZTdmMzk2NWRlNjhhYmNjNDk1NmQgcmVsZWFzZTI2LW1haW50Cis3MzY3MSAwZDA1NWEwNjJjY2UxZTAyMTgzNzM3NWZmNWQ1NjhkMThhNDI2M2M0IHB5M2sKKzczNjcyIDI5N2ZkZWFmNTgyMjI1MDA5MzAyOTMwNjQwODFlN2NmNTNkYWI4MzUgcmVsZWFzZTMxLW1haW50Cis3MzY3MyBkYjZkMmNlMzgzMGFmNmQ2YTQ1Y2I2NDA0MzE5ZjgwMjM5NjZmNDUyIHB5M2sKKzczNjc0IDk0NjNhMTAyNTE1ZjNkMzk5MmMzZGZmZDkwNDkyZjY0YTU1NzMxNWIgcmVsZWFzZTMxLW1haW50Cis3MzY3NSA0ZTM1NTY0NTNmYmNjYjY4ZGYwOTg5ODA3YjlhOTMxOTZlNzk0NzJkIGxlZ2FjeS10cnVuaworNzM2NzYgYTc5Zjc0ZDZmNWIzOTUwODZjYTMyMzljNmU4NTE1MjMwM2VlOGVhNyBweTNrCis3MzY3NyA2ZTdhMTZhNjQ0MmY2Yzg0M2I2ZWE5OWYwNDQ4ZTFjMTc5M2U2ZGY4IGxlZ2FjeS10cnVuaworNzM2NzggOGYyM2JkMTA5MmZjMjRmMDM2YjkxODJjMmY1OWI2N2E1YTg3OTY4OSBweTNrCis3MzY3OSAxYjhhMDFkYzdmNDVhNGM4ZDI0MDUyZTE1ZTA4NGE5YjJlOTU3MTc2IGxlZ2FjeS10cnVuaworNzM2ODAgNjI5Njc0NDQ4ZDg0ZmJiZjJkOWMyNDIwMTUwMWE4NGM1YTJmOWE5OSBweTNrCis3MzY4MSAyMTBhNTFlZmRjODI2NzBkOTBkZTRjNjg1Y2E2ZmU4NTY1ZjY1NTMzIGxlZ2FjeS10cnVuaworNzM2ODIgYTI3NTgzYzgzNmIyMjhmMzMyZDQzNGE0NmU3MWU5MzFjZTRlMTgzYyByZWxlYXNlMjYtbWFpbnQKKzczNjgzIGUwZDI3Yjc2YTJlOGQxNDRlMzE4M2FjNDkwNDc1ZDU0MzMwMDlmNjUgbGVnYWN5LXRydW5rCis3MzY4NCA3OWMyZWQ2MWEwMjUzZDM5OTRkMTg5NjJhNjA3OTQ4ZDcxMjg2YzdiIHB5M2sKKzczNjg1IDUxMzllOGIwZjIxYzczMjM4MWQ4ODk5YWVkZTZjYjE5MGJiZmZmYjAgcmVsZWFzZTMxLW1haW50Cis3MzY4NiA3MGVkYTAyYzdhOThlMzFiZDgzNGM0N2VkOGM0NTdlYWNiNDYzMDhlIGxlZ2FjeS10cnVuaworNzM2ODcgZTc4Yjk5YjA0OGJhYTg3Yzc4Y2NmMmZkNjI4NjM2NDkwNTQxYmU0ZSBweTNrCis3MzY4OCAzZGNjOGZjNDM1NGVmYmU5MjU2OTI2YmY2ODRiNzhhOGFmNzI2OGRkIGxlZ2FjeS10cnVuaworNzM2ODkgMzkxNWRlZDJkNjBmMWZhNmY3OWYxNTgwNzRhODZkZTFmZTY3NDM3YiBweTNrCis3MzY5MCA2ODEwMmU3ZTFlYjdkMzM2N2JkOGQ5ZDE3MjU2MTc3ZWM2NjY0ZTQzIHJlbGVhc2UyNi1tYWludAorNzM2OTEgNDg3ZDZmMDE4NDJhOTNmZGMzMWJkYWU3MGNiYTljZDE1MDlhNGZiNCByZWxlYXNlMzAtbWFpbnQKKzczNjkyIDUxNGNhZTYyY2NkYTVmMDczNmU0NTQ5NTFhOTBmZTg3YzQ2MzBmY2UgcmVsZWFzZTMxLW1haW50Cis3MzY5MyA1OTE3ODVjZWRjYzhhNWU3Y2QyZmUzMWVhNTkxYjI3NTMxMjc5NTZmIGxlZ2FjeS10cnVuaworNzM2OTQgM2Q1NGNiZmQzODA5OWVkNDhmY2M2ZDUwYjRmYzlhMzhjOWQ3MjE2OCBsZWdhY3ktdHJ1bmsKKzczNjk1IDdlMzkyMDI4YTA5ZWRhMDJmY2E4Njk5ZTU0M2RjOWJhYWQ0ZTY0NjcgcHkzaworNzM2OTYgOTMyMDMzYzMwNGVmNzIwNTQ5Nzc5MjA4N2VhMzY5YzMxYWRiZTNhMiByZWxlYXNlMzEtbWFpbnQKKzczNjk3IGQyYjFmNWVmMmFlM2QyZGVhMDNiYTY4NjI5NWQ0MzNjODkzZjZmMTQgbGVnYWN5LXRydW5rCis3MzY5OCAwMWUxMjVkMzE5ZDQ4MTgwM2QwNmM3NzAzMTk0NDg2ZGVmZDE0NjE3IHB5M2sKKzczNjk5IDI5ZmFjODg0ODQ4OWZkNjZiYmQ3N2QwMjk0MWIzZTRmMzgwY2Q2YTMgcmVsZWFzZTMxLW1haW50Cis3MzcwMCBkM2Q2Y2NjOWFiYjQxMzc4NGVlNGE0M2U3ZGRhZDg1ZWU0MDhjYTMzIHB5M2sKKzczNzAxIGMwNjVmMzNkOWM5Y2Y5YjZhYTA3MDE0NGYxMTEyZmM5NWI2ZWI2ODYgbGVnYWN5LXRydW5rCis3MzcwMiA1YjY2MzkwNzVjNDc5Y2U4ZmMwYzVjNGE1YmZjZTJhMWZlOTJiMjEwIHB5M2sKKzczNzAzIDMyZjcxMTIwZWE1NTA0NGY4MzIxZWZmMGIzNzg1MmY3MWEyNTgyNjcgcmVsZWFzZTMxLW1haW50Cis3MzcwNCAwYWUxMjAyZTUzNjIwZTU5NGM4NDdmNjk1MzQ3MjhjNWVhYjliYjdmIGxlZ2FjeS10cnVuaworNzM3MDUgNDNmZWNjMzk0MzdiMzJjZTMxYzJjYjRjNTBlNDZlOTI3MDk3ZTU4MyBsZWdhY3ktdHJ1bmsKKzczNzA2IDA4Yjc2MjkzNDQ4OGEyNTg1Y2YxYTg4YTk2NmIxOTNjMTVlOGJkOWUgbGVnYWN5LXRydW5rCis3MzcwNyA4NDhjODZmNGJlZDYwNjBiZWVlMWFiZDI0YjBiNzJhZWVmNDBkZWY0IGxlZ2FjeS10cnVuaworNzM3MDggNzBhZGYwZjY4ZmJjYTFjZTc3OGYzZGMwMTAxZDlkZTNkZDYzYzhkNyBsZWdhY3ktdHJ1bmsKKzczNzEwIDJmYWYyZmEyYTQyMzU1NzNhNWEyNjlhZjJlZWQ5NWU5MDUzNDQ2ODkgbGVnYWN5LXRydW5rCis3MzcxMSA5OWQ1MmQ4YWQwMjY2ZWY2YTQwY2ExMzA1MzEyNWVjYTI3MmNmODJmIHB5M2sKKzczNzEyIDRmOTBkZGM2YzNiNjRhYzgxODgwN2IzYjhiZDY1MzgwZDM0N2QzNzEgbGVnYWN5LXRydW5rCis3MzcxMyAzODM2OTk4NDVjOTliMWI5MzcxNzA2MzIxNmZjOTI3ZjRjZDFjOWY1IGxlZ2FjeS10cnVuaworNzM3MTQgNjc2OGIyMzUwYzU3NmE2NmQyMmQzN2JhMjhhOWRmMjI2ZmU3M2E5NCBsZWdhY3ktdHJ1bmsKKzczNzE1IGFkZjY2YjUyMDIyZGFkNTg1YTU0YmQ2ZjQxZjVjMDYxYzA4NjFkYzIgcHkzaworNzM3MTYgM2UwMDFlZWI4MzgxYjkzNjFhMzQ1NjBlMjBjZjY0NTRkMzM1MTRjMSBweTNrCis3MzcxNyBlODhjZDQyZmYyODJkYmM2Y2ViMmUyYThlMTUzYWM1MmUyMjZlYThhIGxlZ2FjeS10cnVuaworNzM3MTggYzQwZDZmZWQ2YjZiYTU1ZTJjZmZjOWE1OTJiNTlmOTI4OGVkMzE2YyBweTNrCis3MzcxOSBkZDQ3MGI3MTI5MDE0NzM1NmU2MGEyYTkzMzczZjg5MmIwNjU0MTkzIHB5M2sKKzczNzIwIDZkNTA3NWVjYzE0YzBhMzM5NjVmNjc3NTM5NDYxYmQxYWU1M2U1NWQgbGVnYWN5LXRydW5rCis3MzcyMSAxYzc2OTJkMjUwOWZhMDEwZDVlMTRkMDdkM2YwYmQ3M2VlNjJmOGZmIHB5M2sKKzczNzIzIGYyYjY1YmQ2N2RmMjVkYTk3YTJhMzRjNDBmMjBkNjk1YTc3MTdhNzcgcHkzaworNzM3MjQgZWQyYTMzNjIwNGQ2YWMzYWExN2ZlOTA2ZThiZmI4NTAyZmE4OGRhZiBweTNrCis3MzcyNSA1NTAyZjI1NWMyN2NlYTU0MTMzNjEwYTlhOGY2OTIzMjYwMGUyNjNkIGxlZ2FjeS10cnVuaworNzM3MjYgNzY1NGZhODU3YjAzYzJhYjY3YjlkNDk5NmM0NDgwMjAyNDhkNGJmOSByZWxlYXNlMzEtbWFpbnQKKzczNzI3IDkyMzBjM2E4MGRjYWQzOGU1YjJjYzY1ZTdmMDdhZjY3ZDg1MzA0NjUgcHkzaworNzM3MjggNzJhZDExOTdmMGZmOTdhODNmYzQ3NWU2Mzc3ZjZlZjAxNjI2YjNiZiByZWxlYXNlMzEtbWFpbnQKKzczNzI5IDRiNjI3OTYxYjQ0NzM2MzlmOTRmZmEyYjM2Y2IwYWU4ZGZmZTdmMjkgcHkzaworNzM3MzAgYTA3ZmQ0N2RmNzZiMzI2NWVhZWNjOThjYjk0ZmIwM2IwZWY3NDgwZiBweTNrCis3MzczMSBlM2ZhMmRkYmIzYTMxNTA5MDEwY2YzNTY5YmNhNTM1ZjhmMmE4Nzc0IHB5M2sKKzczNzMyIDdlNDI4MzM2MmQyNzdmYWFjM2UwNmVkNWVhMDk5OWUyN2RmMGM1MDcgcHkzaworNzM3MzMgZTgwODU5NDYxZGU4Y2QwYzRhYjk0ZWZmZGY2Y2NmM2MxODIyM2QzOSBweTNrCis3MzczNCBiMTY4ZGNjZWU2MDI2NDRhYTI3NjY3MDg4ZjcwOWViMGY3NGJkNWRkIHB5M2sKKzczNzM1IGMyNDI3MGY1NDViOGZhNmZiNmVhNzBlNjE4NGU2MGEzNjJiMzQxOGQgcHkzaworNzM3MzYgNDNmMjI1YzdiNzdlYzQ3MzU4NTBmYTkxN2JkYWRjMjMxNWM2ODEyMyBweTNrCis3MzczNyA5Y2Q3OWRlZTViY2U0YmVmZTkxM2FjOWY4MDhjNWNiMThjMDdjN2ZlIHB5M2sKKzczNzM4IGUwZWQ2MjdlYTY3OTQ4NTQ2MzM1MmEwZjA2OThhYzY5NTAzMTE3MTkgbGVnYWN5LXRydW5rCis3MzczOSBmMGVlYWRkYWY4M2E0YThmYTBhZDU1YjhhNDdiYjhlNDMxODkxOTE0IHB5M2sKKzczNzQwIDE1MWI3ZDUzNmI1YzQ1YmIyMzQ1ZmQ3OWZmZTc4ZDJhZDg3NzUzNDEgcHkzaworNzM3NDIgMzY2YzhhNGU1YTQ2YTBhMWM3MWIyZGU5NGYyMDkyNDM5NTM1ZTFkYiBweTNrCis3Mzc0NCA3NGZjNDc2ZmU3MjgzM2QwZjE1NDhmOWM2YWRlZjdlOTVkYjgyYmZmIGxlZ2FjeS10cnVuaworNzM3NDYgZjJhNTI2Y2MzZjJhZjI2NzUwNzQxMTE4ZmU1ODdlZTk3OTRhNzczYSBweTNrCis3Mzc0NyA2NTE4MTE0ZmIwNjM4MWY5NTcyYjBjYzhlNzI2MGEyNGVjMGRlMDhlIHB5M2sKKzczNzQ4IDBjNmZkNTU2MTQ5ZGIyZjY3Njc4NmQ0NjMwOTgxMGE3NjU0MzA3ZTAgcmVsZWFzZTMxLW1haW50Cis3Mzc0OSBjYzQzZTkyM2VmOTYxN2RlYzVhMTBjN2NiZDBlMzFlN2ZiY2I2NjE4IHB5M2sKKzczNzUwIDYyMTBkZWRkMmNmNzk1NDkzYWMyZTIyODk5NjVhZjZiOGRkNzMwZTkgbGVnYWN5LXRydW5rCis3Mzc1NiA5YmRkYmE2ZTc2NGU2ZDQ1NWMxNTU3YmM3YzNlMzM0YjU2YzkzNGU2IGxlZ2FjeS10cnVuaworNzM3NTcgNDY2MzE2M2U2NDQ5NDJlMmI5NDY5ZmVhNTA4M2IyMTZhMTM2NDkxZiBsZWdhY3ktdHJ1bmsKKzczNzU4IDVjODliOTI3M2U2MTEyZmU3ZmNmYjc2YzQ4MTZmZTIzNTE0MjQ0N2UgcmVsZWFzZTI2LW1haW50Cis3Mzc1OSBjYTUzZjg2ZmU2N2RiMmM4ZTIxZDEwOTgwZWFhMzdjMzI2Mzc5Y2JkIHB5M2sKKzczNzYwIDZjYzE4NWY0MmJmNjZhYjU3Y2Y0MWJjMzg3NmZmNjc5NDQ3YWMzOGUgcmVsZWFzZTMwLW1haW50Cis3Mzc2MSAzYmRlODFlN2M5ZjQwM2NlODYxYTBhYzFiNTQ1MTAxMjE5NTc5MmUxIHJlbGVhc2UzMS1tYWludAorNzM3NjIgNWQ3NDliZGRhOTc5Y2FkM2E3MDcxMzc5MDdhMDlmYTRmZTE5ZjZiYyBsZWdhY3ktdHJ1bmsKKzczNzYzIDJhOGRhZmM4NDUyOGM3OGU3MGUyMjUzOWFhN2UzZjU1ZThlMGMyMDcgcmVsZWFzZTI2LW1haW50Cis3Mzc2NCA3ZDUxNDkxNTUxNWU1YzZkMDNlZTIyYzAwMDc3NjU0YzFjNjJkMjI0IHB5M2sKKzczNzY1IGRhNjk4MDc5OTYzOTkwOGY0YWRlMTIwZGE4NTk5Nzc0ZTlhZDQ3ZGUgcmVsZWFzZTMwLW1haW50Cis3Mzc2NiAxZDQ4YzcwMWYwN2M2MTQ2ZmZjZTcxODczYjljZTZjYmQ2YzkzNTA2IHJlbGVhc2UzMS1tYWludAorNzM3NjcgZWRjZmUzYjhmNzM2MTY3MTk0NTM3NjczYzIyN2ZhNDQ3OTZjOTNiOSBsZWdhY3ktdHJ1bmsKKzczNzY4IGYxNDlmNTdmNzdkNmZlODAwNzgyMzE5MDBmMzFiMjUwNzY3MTQ0YTggcHkzaworNzM3NjkgZTVjODI5MGM3OTQ5YmQ2MDBiZmY2MjYxMTg2NmJjNDhhNGY4N2UyNCByZWxlYXNlMzEtbWFpbnQKKzczNzcwIDc0YzBhNzgxMTRhZTRlMjMwZGEyZThiNGYyYTNlMTcwOGFhY2QxMzggcmVsZWFzZTI2LW1haW50Cis3Mzc3MyA1NmM2NjRiOTE1NDViODE4MTNmYmI1Yzg1MDVhOWNkNGY5OGYyNzMzIGxlZ2FjeS10cnVuaworNzM3NzQgZmVhNTcxNjRiZDc5MWNlZDQ1MmU1ZjMyNzRiMDVkNzExMGI2ZDA4YiBsZWdhY3ktdHJ1bmsKKzczNzc1IDdkYzBkMmM0YjUyMDIzMDZiMmViMWNhYmFjZDkyOGRlYThlNDUxMGQgcmVsZWFzZTI2LW1haW50Cis3Mzc3NiAwNjUzYzFhMGNiMWUxMjY0ZDVlMzhmOTVjMWYwNzMyODAxMzY4ZDgzIGxlZ2FjeS10cnVuaworNzM3NzcgMTc4Mzg4M2U3NmQ3Nzk5MzJhZmY3ZjA0OTFjZDM2ZTFkNDcyNjA5NyBweTNrCis3Mzc3OCBlYTQ0YTE2NWI5Y2U1NDZkMjFhOWRjZWM5NjNlZTY2YjJjNzk3Y2VmIGxlZ2FjeS10cnVuaworNzM3NzkgZjY1ZDYyNDczNDY1YjE1NGM1NzAxMzZiNDY4YWEzZmMxMmZiNmYwZSByZWxlYXNlMjYtbWFpbnQKKzczNzgwIDQ2NmE3MWZjNjI1YzFlNmQzMTgyZTQxMjM3YjgyMDNjOTRkN2UwNzcgcHkzaworNzM3ODEgZmI1NDJlZDkxZTdmNTViODA3ZmFlNjFlMzY2ZmVmY2QxZTRiNDAzOSBsZWdhY3ktdHJ1bmsKKzczNzgyIDI2MjU1ZjI5YTdlNDlkMzc3MjlkNzllMWFlY2MxMjhiNjZkMjVkNGYgcHkzaworNzM3ODMgY2M2YjkxYzNkNzE5YjY5Y2I3N2IwZjQwNDkwNmNjNGNjZTZjYTQwMiBweTNrCis3Mzc4NCBlYTkzM2MyNGFkMTAzM2Q4NjEzNDczMGM3OWM5MzAyOGE4YTdmMjg2IHB5M2sKKzczNzg1IDY1ZTQxYmNiYzI1ZDRkMDZjNDAwZjM0M2ZlMWRhMzEzMDJjNzk3ZjYgcmVsZWFzZTMxLW1haW50Cis3Mzc4NiA3Yjc1OGY4MDgzMzA1YjMzMDI3ODYyYjRhMGExMTczYjlmODAzMjFiIGxlZ2FjeS10cnVuaworNzM3ODggNTIyYWQ5ZWVkNTU4ZTc4YWJmMGVjYzI4MWM0YmFhMDQ0NWFjNDhiNCBweTNrCis3Mzc4OSA1NmEyNzYzOTZlMTVmOWM3OTUzYTMzY2NhMzEzOGYwYTU3MDA1MTJmIHJlbGVhc2UzMS1tYWludAorNzM3OTAgODU2NzdhMmM3ODU1ZDIyMTQzNGQ0YjBhNTMwMWJiY2U4NzUyYmE0MyBsZWdhY3ktdHJ1bmsKKzczNzkxIGVlZWIzNWYyODgxMmNlNWU4NGMwYjk4NmI4YmE4MmRlZGQyZGNiNDQgcmVsZWFzZTI2LW1haW50Cis3Mzc5MiA4OTY4Njc3M2E2MTlhNzcwY2Q4ZjFlMDQwMTg2N2QwZGYzODdiMGE0IHB5M2sKKzczNzkzIGQ4YzgzY2MwZDNmZDhjNTRjN2M1NzI3YWRjODJhMDYyODc3MzBmNjUgcmVsZWFzZTMxLW1haW50Cis3MzgwMSBhNTAxNTczYzIzZjJhNTc4NjYxODdjYjcxYWY2MTE2OTQ5MGM3NzUzIGxlZ2FjeS10cnVuaworNzM4MDIgNDI3ZmI2MzNjNGNjZWFmNjY2MzE5N2Y0NWZmMTc4NDcwNGUxODZjYiByZWxlYXNlMjYtbWFpbnQKKzczODAzIDQ2YTliMThhMWExNzZlMTEzMjEzZWFjNGIxNDFkYTg0MTk2YjE4OWYgcHkzaworNzM4MDQgODc3NjNjOTdmNjhlYTNmMDRhMDkwODk3MGE0YTQ2ZjY0YzA1MWJkNiByZWxlYXNlMzEtbWFpbnQKKzczODA1IDg1NGMwOTQ4YjA4ZDA0MThkNmUxZTY3NjhlZDQ4MWY1MGZkZjM3ZmEgcHkzaworNzM4MDcgNTljNjZhZGUzYzI2ODIyYWE4OGY5ZjAyZDE1ZGQwZmU1ODA5ODUzYSBweTNrCis3MzgwOCBmYzZhZGZmZjlhOWVmZDUyNzExM2FlZjk5YTAyYzY1NDQ1MDMzMGIxIHJlbGVhc2UzMS1tYWludAorNzM4MDkgMWM1MjkyMThiYTk2NDQ0MDAyMzhmOTYzZjFhMDg0NDdjZjhhYmJhMiBweTNrCis3MzgxMCAzYTIxNDYyMmM5NDNjYTRhOGQwMGQwNDczOGIxOTI5NTc5ODkxN2Y0IHJlbGVhc2UzMS1tYWludAorNzM4MTIgZjZmYTVmYjAxMGJmN2ZjYWQ2OWIxNjI0ZjUyYTg3N2YyNWI3ODJiMyBsZWdhY3ktdHJ1bmsKKzczODEzIDBhNDZlMGUzZmMwNzQ4NTNkODJjNWU1MDY0YTQyN2RhYjliNDRkOWEgcmVsZWFzZTI2LW1haW50Cis3MzgxNCA3YjBlNzk3ZjZiMmM4NmVjMzBkM2U2YjYxNzE4MTQ1MGY3Yzg2YzJkIGxlZ2FjeS10cnVuaworNzM4MTUgYjJjNzc2ODU3ZGM0Yzg3M2ZmNTllZmM3ZmM4OWU1Mzk5MmQyYmQ1MyBsZWdhY3ktdHJ1bmsKKzczODE2IDg4NDJmNGUyZmIxYjc0ZGIwNjhkZjA3ZmU1OTg0Zjc3Y2FmNjRlY2IgcmVsZWFzZTI2LW1haW50Cis3MzgxNyBkZmI5ODVhOGRlNmY2NWM5NjNlZTRjNTdhMWMwZTlmZjcwNmU4YmFmIHB5M2sKKzczODE4IDljOWZlOWFhZmJhNmQ2ZDA4ZGRmZmQwNGU3N2U3ZDRjY2M5ZGRhMzYgbGVnYWN5LXRydW5rCis3MzgxOSAwMWFmN2I1MmUwZGI1OWUzNTJmMWM4ZTBkNWQ3ZWVkYmNkMzE0NTgzIGxlZ2FjeS10cnVuaworNzM4MjAgYzdkYTBkYzZlYjBjNmM0NDBiMmEyMWE1ZDE5ZDI1OTcwYjc0M2ZlMiBweTNrCis3MzgyMSA4YTdjMjA2NmE5YjJlNjE0ZDUyMzM5NDYzYTQwNThlZWU5ODQ5ODllIGxlZ2FjeS10cnVuaworNzM4MjIgNDYxNzg4M2FjMWYzM2ZjZWM0MGZiN2E4ZGI3MmY1YjllNmNlNjAzNiBsZWdhY3ktdHJ1bmsKKzczODIzIGMyZjQyNzBiZTM2MjkyZDU0ZjdlNTM5ZDZjOTViNTFjNzk0MzIyZGIgcHkzaworNzM4MjQgMGUzOTFiZjNlYjlkZjljYWI4YTg2NjI1NWE5MTEwZTRkYTBiYmE5MSBsZWdhY3ktdHJ1bmsKKzczODI1IDk4MDhlMzhmZGU3MmI2YjMyYmJiZTYxYWY0NmQ1NDA1N2M2NDViMjcgbGVnYWN5LXRydW5rCis3MzgyNiA1NDBmZDQ2MTYzZDFjOWJlNGM1YjAxYmMwNDczZGFiNWE1M2JlOWUxIGxlZ2FjeS10cnVuaworNzM4MjcgNTJhYWE3N2E1ZGJmYzdmY2E0OTFmYWJkODkxZTBhZjlkMTkzZGMzOSBsZWdhY3ktdHJ1bmsKKzczODI4IDA4YjU4Y2JlY2U3OWVlZGY5NjhiM2QwYjUzMDBmZDE0NjZiNWNhYmMgcHkzaworNzM4MjkgMDQ5MTIyN2U1NDBlY2U1OWY2ZmJjZTgwNzIxMzA3OGNiNTdjNTkxOCByZWxlYXNlMzEtbWFpbnQKKzczODMwIDgzY2UzMzJhMjgzNGY5YmY4NDdkZDc0M2U2Y2M4OGE0YjFlNWU4ZmMgcmVsZWFzZTMxLW1haW50Cis3MzgzMSBmODgyNjk2ZmQxMzRmNzcxNzc0YmIzM2JiMzM4N2FmZmQ0YWI2Zjk5IHJlbGVhc2UyNi1tYWludAorNzM4MzIgMDZiMzYwYTMzZDU3MTFlMzEwZjE5MjZkNGE2NWIxNTBiYTRkMjJjOSBweTNrCis3MzgzMyA3YjlhZDlhYWE5MDI0YzE0ZjZmNWI0NDM0NTljYjExYTI3MjFkYWZjIHB5M2sKKzczODM0IGQxMWQ4OTlhYWIxZDgwZTRhYjI3NThmZWZkNWFiOTM2MGE4MzY2ZTUgbGVnYWN5LXRydW5rCis3MzgzNSA3ZGQ4ZGJkMjcwMzMzODNlYTFiNzI0YjE4MGM4OTQ0MTUzZDRlYTcxIHB5M2sKKzczODM2IDg2OGZmMzdmNWE4MDEyNDc2NzgxZTliNTA0YWY4ZGNmZTcxMDJiN2UgcmVsZWFzZTMxLW1haW50Cis3MzgzNyAxZGVhN2VkNjg2N2Q3YzdkMDg1MDJjYTIwOWNmZTE2NGY0ZWEyMDc4IHJlbGVhc2UyNi1tYWludAorNzM4MzggNzg5ODdiY2YxYWJmYjA4MzU0YzI0Mjg4YWJmMWMzODAxYTYwOTZmNiBweTNrCis3MzgzOSA3ZmYxNDA1Y2NiNjRiYjUxYzRlMTljMTk4MjM3MjU1MjJhODQxZWU0IGxlZ2FjeS10cnVuaworNzM4NDEgNDRmY2RiYjYyMDM4YjExNWYzZTk3MWZmZTlmNjRjZWVlMDA0YzEyZiBsZWdhY3ktdHJ1bmsKKzczODQzIGY3NDJjMDg3NTI4ODdkMzg4ZDAwMzA1NDQ0NDk0NGJlNGVmNzAzNjggcHkzaworNzM4NDQgNGZmNGFhOGQ2NTgzMjk5MjA3NjgzMDgzZGQ2MTYyZDQwZTgyZmI0ZSBweTNrCis3Mzg0NSBjMjMzNjE1YjM0YWFiOGU1MDU3YTJlODhjZGRjYjQwMDE3YmI1MzYyIHB5M2sKKzczODQ2IDQ2NmNhOTZiZTE4MjQwMDlhMGQ0YjdhMzNhMGZhZGE3YThiZmQxMTAgbGVnYWN5LXRydW5rCis3Mzg0NyA3N2ViZWFjYzEwN2E4MDYwZTlmMTIyYjUyZWFlOWMwMzlhODE0NmFlIGxlZ2FjeS10cnVuaworNzM4NTAgOGU4MTU3NDQ1YTU1NjU3MjRmMjc2NjFlMWU0ZWQyYjM1MTk3MmRjNiBweTNrCis3Mzg1MSBhYjQzNGYwZGNiMTVkOTg0ZTllNjMzM2UzNjk5OThkODFmZDkzNTNlIHB5M2sKKzczODUyIGE3NmIzNGNmYzg5N2MxMDI2ZjdiZjAwY2Y5MjQzYjExNzVhNGRhMzAgcHkzaworNzM4NTMgYTQwYTIyNjYxZTUwNDg3ZDJhNzM4Nzk5MzU0MGViYWMwODRhNjBkNyBweTNrCis3Mzg1NCBjNmYxMzkzNGY0YzY2OWI0MDNlNDgyZDNjM2FiYzM1NzBhNDkwMzIzIGxlZ2FjeS10cnVuaworNzM4NTUgMTBhNmNhMmMwY2NiMjcyN2EyNTg2ZmE4ZjQ3MWUzYWQ2Mzc5MTg0OSBweTNrCis3Mzg1NiAyNmY2MGZkNDdhZDNmYTRkNDI0ODI3YTIzZDAyM2ZhMGEzMTRlNmZkIHB5M2sKKzczODU3IDg1ZGI2YTU0M2IzZTQ0YmFmMGU2MTY4YzIzY2YxNmE4ZTUzOTZmNzMgcHkzaworNzM4NTggMWZjMzdmZWNhZjhmMzNmNzc3MzBlYjg4YTM5MjIyMGYyMWY0MjdhYiBsZWdhY3ktdHJ1bmsKKzczODU5IDI0NDQ2ZGM4N2Y3M2U3ZGYwN2UyZmRiNjU3YTFlMTMwNTFhYTY4OGUgcmVsZWFzZTI2LW1haW50Cis3Mzg2MCAwNTIyZTU3MWNlNzQ5NGZhN2Y3NWIwYjZkNmFiYjczNDMzNjRlYzllIHB5M2sKKzczODYyIDdiYjc3NThlNmQ2NGI4ZjkwZmYyNTdjYjc2OGY3M2UzYzVhNTcyY2EgcHkzaworNzM4NjMgNDI2Mzk0ZGJiY2VlMjJmODcxMWRlNjliZGIzZTZkM2JkMzljYWVmYiBsZWdhY3ktdHJ1bmsKKzczODY0IGI0NmFiYzJmMmExZmJhY2FlYzAzZTkyOTk5YzZmYzEwNmEwNjljNDUgbGVnYWN5LXRydW5rCis3Mzg2NSBkMWVkYTcwYjM4M2U5ZWViZDM5YTBlMjE4YmUwYTE0MjRhNzFkYTNmIHJlbGVhc2UyNi1tYWludAorNzM4NjYgYzIzYThmMWNmYWI4ZmFjYTFiYzEwNjNlOGI0ODEwMTlhYzBhOTAwNiBweTNrCis3Mzg2NyA0OWZmMjM0MjA5MTliNDFlYzBiODc5NDAyNDZmYjA5ZTgzOTg0MjI1IHJlbGVhc2UzMS1tYWludAorNzM4NjggNzQ5Y2YwNmNkMDcwOTlhNjBlM2ZiNTAwMjhkMGNkMThjMzVhMDRhNSBweTNrCis3Mzg2OSA1OWNmNWY4MDhjMjRhOTk5ZTM3NTBjOGRjYWI2ODk0MzFhYjE3ZGJlIHJlbGVhc2UzMS1tYWludAorNzM4NzAgZTlmYzg5NDdjNDlhNTU2MzhhOWVhNGMzZTMyNmM5Y2RkNGFmZDBlYyBsZWdhY3ktdHJ1bmsKKzczODcxIDM4ZDZlNGU1MWFmMDg5NTFiMGU5NmY4OTYwNzllNTBkY2Q2YmFkNjggbGVnYWN5LXRydW5rCis3Mzg3MiAxY2VmN2U3MTYyNDc4YjhmODZmZGZlZjlhY2RkYzRhMDc1ZmFmZTcxIHB5M2sKKzczODczIDMwNjM3MTRmZjlmMzFjMGZhYjZhMTgxN2EyZjg2MGRhNmQwOGZjMDAgbGVnYWN5LXRydW5rCis3Mzg3NCA2MzhlYTEzNGFhODJkNzJhMmFjMjBiYWYyMThlMGY0ZjllODIwYmZlIHB5M2sKKzczODc1IGRlNThmNjEzODZjM2I0OWU1NWZjM2RjOWFhNGU4YjIyNzYyNTA1M2YgcmVsZWFzZTI2LW1haW50Cis3Mzg3NiA0MTY4MTM4YzM3MWU1ZDM1MTA0ZjdiNzU2MDU3NTI0ZjBkOTRmMGJkIHJlbGVhc2UzMS1tYWludAorNzM4NzcgNGVhODEzMGVlMDllODRiNDQ0MTY5MTdkYTEyYzFkNmMxNTAyODU5NSBsZWdhY3ktdHJ1bmsKKzczODc4IDgxMDAyYzc2MDBiZDVkMzIwMTllYzg2MTI5OTA4YjUzYzgxZjM5ODcgcHkzaworNzM4NzkgYWRmZDZiNzNkMzY0NzQxYjRkODk3OWExMDY0ZjQzOGEzZjQxZGViZCBsZWdhY3ktdHJ1bmsKKzczODgwIDg4MGI1MGJjYTFiMTkyMmY3ZDJiNGUxZWI0NTMwOWI4NmRiM2I5ZjQgbGVnYWN5LXRydW5rCis3Mzg4MSA5OWUzMGFmNDExNjlmMDVhNzU2MTUyYmY5MzBhZmY4ZDZjYjY1ZThmIHJlbGVhc2UyNi1tYWludAorNzM4ODIgZWUxNTZlYzVlZmJmOTZkMDBkNTQ2MGVmYTk3Y2EwMDA5YWJmNGVlNSBweTNrCis3Mzg4MyAxZjQ4Y2JkNDMyMjZkMjZlZDU2MWY3NDgxNWIxODFhYjg1NTliZGVkIHJlbGVhc2UzMS1tYWludAorNzM4ODQgN2ZhMjFiZGMzNDhiNGY2YTFiN2E4MjJmNTdiNTE0NzgzM2E1OWI5NCBsZWdhY3ktdHJ1bmsKKzczODg1IDFmZDgzOWI4MzMwYTFiNjQ1MmEwN2M4NGYwMTZmM2E1MDYxZDJhYTUgcmVsZWFzZTI2LW1haW50Cis3Mzg4NiBkZTZjNDhkNzNiNzE2ZWVhZjNiY2E3Y2MwYTUzMjE5YTNiN2Q1MWY1IHB5M2sKKzczODg3IGZhMDgwYzRmNTM5YTllYTk4YjllYTQwNjRmNzk5Nzk2YjlkMjdkOTUgcmVsZWFzZTI2LW1haW50Cis3Mzg4OCA4OTdiZGVkODAwMjA2YTZmNTUyM2QyMTkwYzVhYzFiZjAwMGEzZDgwIGxlZ2FjeS10cnVuaworNzM4ODkgOGE4NDRhNWIxNmRiYmY5OTMyMzQ0MGJjODMzMzZiZTNkZjE0YzkzMiByZWxlYXNlMjYtbWFpbnQKKzczODkwIDg2MGEwNjlkMTI2YzliYWY2MGFhMTA1ZjFjNTk1ZTRmYzBhZDFmOTMgcHkzaworNzM4OTEgYjNmYjVlNmI3ZTgyZDYzZmJjNjdhN2UxYzI4OWRmMmMwNjZkMzQ2ZCBsZWdhY3ktdHJ1bmsKKzczODkyIGYwMmU0NzEyMThiNzc5MWQ0MDlkNTNkNzFiYWMzMGVmNTRmNTdjNTQgcmVsZWFzZTI2LW1haW50Cis3Mzg5MyA4YmVmM2EyNjdlMWVlODRmM2Y3YTZlM2M3ZTRiOGE2ZWUyZGM3YWJmIHB5M2sKKzczODk0IGQ5YjE5YjM3ZjgxYWVjYjgzMWFmMGY5ODMxNTRhYzQ5ZTg3ODU5YjEgcHkzaworNzM4OTUgMjdiNTE2MjYzMjY5MTZlNzQ3NmExNDJhY2Y4MGMwN2M2YTlhZDNiYiBsZWdhY3ktdHJ1bmsKKzczODk2IGQ2MWM0ZGNmNjE4OThkYmI3MjVkOTEyNjA1YTAxMDA5YzdlYTlhMzcgcHkzaworNzM4OTcgZDU5OTI1NGMyMDNiYzY5N2I2YmFiY2IwMmNlZGU3ZGM1MGVkZTk0YiByZWxlYXNlMzEtbWFpbnQKKzczODk4IGJhMDQ1OWYyYzBjYjQwMDVjZGRiMDQwNmQ4MjQwNDlkZGUyZTVmOWMgcmVsZWFzZTI2LW1haW50Cis3Mzg5OSBiZTczNmI0OTBhYjJjOGJjZDU5MmFhY2IzMmYyY2MyN2I5ZGU1NzdmIGxlZ2FjeS10cnVuaworNzM5MDAgNDY4YTQwYWRmNTZmNWUzZjQ1NTA3MWRmMmNiMWU3ZTNhNzlhYTA0MyBsZWdhY3ktdHJ1bmsKKzczOTAxIGM5MmI5Mzc3NTU2OTBiOTQ0ZTg2OWExNjIxMDdhYjJlNmI0MzFmNzYgbGVnYWN5LXRydW5rCis3MzkwMiA5YWZlYWUwYmFiZjljNGY2NThmYjNlM2I3MjJkNTRmMjQ5NDFiMTcwIHJlbGVhc2UyNi1tYWludAorNzM5MDMgMTNjNWNmNDg5Nzk3YzQ1YjZiYWQ4OGI2YTRkMzUwNTJkMmMyZDg1YSBweTNrCis3MzkwNCA4MjkwNTE5MTk5ZWMyZmI3YTA5ZWM3ZDhhODZjMTgwMjRkMTAzMThjIHJlbGVhc2UzMS1tYWludAorNzM5MDUgNGYxYjJhNDU3ZTgzY2UxMzRhMzYwZWU2Y2M2MDkyODJiYWY4ZDg2NSBsZWdhY3ktdHJ1bmsKKzczOTA2IDBmMDY1YjQ4YWNmOTUxMjlkMjc3N2UyZDJhN2FjMTc3MjczMzQwOWMgbGVnYWN5LXRydW5rCis3MzkwNyA1ZjQ1MzUyMjU4MTliZWUxNDk1MzM3OTkwM2VmNTU1MDhlMjc2M2Y2IGxlZ2FjeS10cnVuaworNzM5MDggNWQ5YjMyMzAxODE1NDIzODhmMGM2MDU2N2VlMjg0OTZiYmYyYjM3OCBsZWdhY3ktdHJ1bmsKKzczOTA5IGRhMmMxNDdlOTI5ZDBhMWQwYjFiMDY4MTM4MDE4MzI5ZTI2ZjljODcgcHkzaworNzM5MTAgNWEyOGE5NWRlYzE5MzA1ZTdlYjBmZjYxNGJjZDk5MDBkNmY3N2FhZSByZWxlYXNlMjYtbWFpbnQKKzczOTExIDhhNzdlZGU0ZTE3NWE4YzY0ZDJmN2UwNWMxZTRmODFmMDMyZTcyOTQgcHkzaworNzM5MTIgNGFlMWU5NmU5Mzc3NGMwN2VlNDQxZWE1NGNhYTJiZjNiNzk5NzIzZCByZWxlYXNlMjYtbWFpbnQKKzczOTEzIGM0N2VmNGUxMDdkZjkwOGM3MThlOWI1MTRmYmQxYWRhMzA2ZjY4OTcgcHkzaworNzM5MTQgYjUzZTQyZTUwYzQxNTMyYzhjOTA0MzBhYTg3OTZkZDg5NDFiNDFkNyByZWxlYXNlMjYtbWFpbnQKKzczOTE1IDM4OThkNTIwZjEwN2ZmNDAxZDdkMGJiZGUzNDQ2OTgzNjRlNzAzMzMgcmVsZWFzZTMxLW1haW50Cis3MzkxNiA1NjA5MzUyZmVhMTIwZTU5ZDIxOGU1MGY2NTRiNGY1YTJlM2FmZGI4IGxlZ2FjeS10cnVuaworNzM5MTcgZTg5ZmFhYWZhM2VlYTI0OTllMmM3ZDAyMWQzYWFmZThjNGZkZjA1OSBweTNrCis3MzkxOCAwYjJhYmE3YWMxZmFmNjAwNGQ4YTk1YjdkYzIxYjFlOTMwNjVhNDAzIHB5M2sKKzczOTE5IGFlZGMyMjBjYzliZjg5MTEyMjliZmVhZDQ3MmExNDEzY2NjOGQ1ZmUgcHkzaworNzM5MjAgMDExMzdlM2I5ZWJlOGY4ZDVhY2QwNTlhMjE3MGVjOGFhYWJjMzYyYyByZWxlYXNlMzEtbWFpbnQKKzczOTIxIDg3N2JkN2Q1MGQ4OTdmNGU2ZmZhODJiMGY5YjgzYmJiYTc3M2NmZjQgbGVnYWN5LXRydW5rCis3MzkyMiA2ZjBlNTlmYWI2MmNmZjI1N2VhNzdhZjUyMjY1NzUzMTU4MTQ2OTJkIHJlbGVhc2UyNi1tYWludAorNzM5MjMgNjI2NDEzMjcyNDY0OWJhNDY1NjQzMjY4OGU1ZDdjMjJhYWFiZDczZSBweTNrCis3MzkyNCBkMGIzYWY1NjVlYWE1YTkwZWFkNGI5NWQ0YTUzNGZlYjU2ODZkZjJjIHJlbGVhc2UzMS1tYWludAorNzM5MjUgZTUzZDAzMWU1NGQ0NzVjNDA2NzBlMDQxNzg3ZjhhMzMyMzE4YzMyNSBsZWdhY3ktdHJ1bmsKKzczOTI2IDAzYjg2NjA2Y2UwYTJhNzhiYzVlNTkxZTA5ZTMxZjM2MzlmYWVhZjIgbGVnYWN5LXRydW5rCis3MzkyNyA5YjVkMjgxOGUyZDBlNzAyNzc5Yzg0MWY4NDViYWM1ZTYyYWExMDgyIHJlbGVhc2UyNi1tYWludAorNzM5MjggMTM5MzQ3YjAwYzE4Zjc5YzAxNjk2OWVkMWNmODM2OGZjNzRjZWRhMiBweTNrCis3MzkyOSAyZmQ3NGM1MDI2MDAzNjkxMTFkZmUwMmIxYTM2OWZhMmRkNzhjZThkIHJlbGVhc2UzMS1tYWludAorNzM5MzAgMTRjZDE5ZmVhZjIwZDg1OTBlNWQ2ZDdjYmUyYWRkYTk3YWEzMDMxZCBsZWdhY3ktdHJ1bmsKKzczOTMxIGNkZGQ1MTY0ZGIwM2NhNzRlMGIzYWRhMDQyYzYyNzUzNmZmNGEzYWIgbGVnYWN5LXRydW5rCis3MzkzMiBiMWM2MzcyYTgwOTJjM2ViODcxYzc5NWFhMjZhMGUyMzUxNzc0ZjgxIGxlZ2FjeS10cnVuaworNzM5MzMgMjIxNzE4ZTc1N2JhZmFkMDViZmVlNTJiZDM5ZjM3OWQ4ZTYwOTIxOCBsZWdhY3ktdHJ1bmsKKzczOTM0IGZlYWFhN2NjMDJkMTIyY2YwMGJlMTliOWM5NGE3MjdlNzk5NWE2NTUgcHkzaworNzM5MzUgZTUzNmEzYjNhOGQwZTViMGE3MzEyNWYyYWYzNjYxMWM0ZDEyZGJlNyByZWxlYXNlMzEtbWFpbnQKKzczOTM2IGUyMDBlZTljY2M0YmVkNjEyNmJmMmRkNmNlNjNhM2E1ZGI4YzU5MmQgcHkzaworNzM5MzcgYWNhYTBjODdkNDAxZjM1OTNjM2M3ZDEwMzk5MDE0YWM3Mzg5Y2FhOSBsZWdhY3ktdHJ1bmsKKzczOTM4IDdiMjQ2OTQ1ZmM4Y2IwZGI1NmY2MmQwZTZmNGY0ODcyYzJkYWY1NDkgbGVnYWN5LXRydW5rCis3MzkzOSBiMjhkYWRkMjBkOWI3YjQ5ZWQwNmM2OTgwZDlhYzYwYWEyNGQyZjViIGxlZ2FjeS10cnVuaworNzM5NDAgNTljMzRhOTFjNTRkOWZkMGM0OTg3YmI1MTNlZTM0NmQxZTJiNWQ0NyBsZWdhY3ktdHJ1bmsKKzczOTQxIDg0MWExZTY4YjRlZGNjY2IyMTg0ZmJjYjIxYzVmM2ZjMzk4ZTA5NzEgcHkzaworNzM5NDIgNjdmNWUwMWQ1YTZhNzFlMjU3ODc2ZGZlMDVjNWIxNjg1YzY3ZWQ4NCBweTNrCis3Mzk0MyA4MDY2MTYwOGQ0ZTIwNTdjY2RjNDc0N2QxMjE4YmQxMzVlNTAxZDljIHB5M2sKKzczOTQ0IDRjNWUwNzVmNTQ3M2RhNTYzY2Q5ZWE0NjU2NzIyYWY3ZGJiOTkyZTUgbGVnYWN5LXRydW5rCis3Mzk0NSBmM2JmMDgzMjlmMDc5NjZiNWNlMDlmNDJmZjIwNTYwMmRmNmJmYTc3IGxlZ2FjeS10cnVuaworNzM5NDYgODIyYTAyYjcxYmJlYjJjMzdiN2I5YzhiNDYxNDA4NWE3ZmIyMzhkMSBsZWdhY3ktdHJ1bmsKKzczOTQ3IGM2NGY5ZGMzYzZhNDk4NWIzOTQ1ZDQ3OTc0MDIzZDM0YTQzN2I0NzQgcmVsZWFzZTI2LW1haW50Cis3Mzk0OCA1N2IzNTkxZjBjYjIzMmE0N2YyNTg3YTk3MGYzMTcxNWRmNmVkZDllIHB5M2sKKzczOTQ5IDU2Y2NlZjM0MjBlNzgxMzMzNjA5YjkxNTYzMGY4NzNhOGI3MThlNDQgcmVsZWFzZTMxLW1haW50Cis3Mzk1MCBkMjdmZGM3MDM3OWMyNmExMDlhYzY2ZWVmZmViNjMxZjY5NGYwYmRlIHB5M2sKKzczOTUxIDBiNTBlNjg0MWE4MWJkYmU4ZTg5NmE1YzQ5YmEwNzVkOTAwMTA1YzQgbGVnYWN5LXRydW5rCis3Mzk1MiA4NjgyMDIyNWE0ZDVhZmI3NjJkZTlhZmQwMzYyOTlkODAwODUwMjY2IGxlZ2FjeS10cnVuaworNzM5NTMgYTFiNzk3NzhmMjJlM2UyNGNhMzJjNTU5YzhmMWEwMmY1YTcyMDE3YSByZWxlYXNlMjYtbWFpbnQKKzczOTU0IDNkYWRmMzQ1M2QwNTUwOWQ2OGM0ZTM1ODQwNjI2ZDE0ZGE3NzBkYjggbGVnYWN5LXRydW5rCis3Mzk1NSA5M2I0OGFiOTBlYWQwZTVjNWY2YWE2YmM3NjJmMzFjMmZjZjhiMmVkIHJlbGVhc2UyNi1tYWludAorNzM5NTYgMTAyOGE5OTFiNjhlYzNlNmM2Y2RhZjM4MjA5N2UwNDVmMWJhNDk1OSBweTNrCis3Mzk2MSAwYzgxMjg3MGE5NzVlYzBiODY5NjdmMWU5ZDRkZTQ1YTkxZDc0YzAxIHB5M2sKKzczOTYyIDI2MzBjMDc1YjU3Y2IzNTdjYWEzOTI0YzAwODhlNDBiNjIxODk0ZTkgbGVnYWN5LXRydW5rCis3Mzk2MyA0OTNjN2Y5NTBhMmI5YjViYTgxNWRkNTk1ZmMzNWNhMzkyY2ZlMDE1IGxlZ2FjeS10cnVuaworNzM5NzAgODQ4YTVhYzkyNGI5YjUwMDhiMDA1ZjQ4OGM1MTM1MmJjZTg2YWJjOSBsZWdhY3ktdHJ1bmsKKzczOTcxIDJhMzk4ZWRlYjA4ZDk1M2M0MzYyNDY3NmY5MDMyN2IwZWExNWUwZWUgcmVsZWFzZTI2LW1haW50Cis3Mzk3NSBkMGYyMjU4NjViZTY1NjNjYjgzMGIwZDJhMDQ0ZDRkYTY3MjUwNjIzIHB5M2sKKzczOTc2IDMxODc2M2VjYzRiMzA0M2E2MTE5NmUxODI3YjdlOTdlY2VjNzM2MTUgcmVsZWFzZTMxLW1haW50Cis3Mzk3OCA1N2U5ZjJkMzY3YTgxZDM1YmQ3YjJkMGE2MGEyNjFhZmFlOTMyNDBmIHB5M2sKKzczOTc5IGFjZGE2OTJhODQ3ZmNlOWU5NTI3NzY1YjYxMDNhYmM1OWQ0NTQxNGMgbGVnYWN5LXRydW5rCis3Mzk4MCBmM2I5YzUwYTdhYWQ1YzAwZjBkNWIzMjQ3NDhiMWMwNDVjMDk5MmY1IHB5M2sKKzczOTgyIDg4YWNjMTBjYWE2ZTExZmJjZTlhZjdmNDk1YzE0NWZlZjhmMmFiNjMgcmVsZWFzZTMxLW1haW50Cis3Mzk4MyA1YmUwNGUyMzE3ZThkMTJhOGJlMjgyNTcyZWU3N2QyMGFhMGRlYTBmIHB5M2sKKzczOTg1IDAxMGE0OGU5NDIyMzcyMjdmMDczMzMxNWUyMTEzMTY3ZGJhNTcxMmEgbGVnYWN5LXRydW5rCis3Mzk4NiBkMDc2ZTY1YTkwZDZjMTkzODVhOTVmZTc5Y2VkODViM2U1NGU4OTJhIGxlZ2FjeS10cnVuaworNzM5ODcgMmI2N2NiOTI1YmIxOWU4Njk5ZjQ5NmU0MDhmYWNkNDEyOGJjYTUxZCBweTNrCis3Mzk4OCA5NTA3ZTRiOWI5ODg1ODg1MjlkNzUzOTZiOTIwY2E2MGFjZDNhMzc1IGxlZ2FjeS10cnVuaworNzM5ODkgYjc0ZTM5MjYyODE1MTNhMjA5MjAxNmRkNGVmNjZhNmYzNjQ5MGY5MCBsZWdhY3ktdHJ1bmsKKzczOTkwIGIxZDM0ZGZmZmUyZGUwMWVjODBkNTE0MzVmNTA1ODM1OThlZDQ3YTkgbGVnYWN5LXRydW5rCis3Mzk5MSBlMTcyYTg4NjUwY2Y5YWU1NzE2ZGRiZDFlN2ZlYjY0ZmJlNTM5NWJiIGxlZ2FjeS10cnVuaworNzM5OTIgYmQ3NGUyYzk3MzQ4OWE4NmYxZGQ4N2M0Mzc0ZTA0MjIwODExMDk3ZCBweTNrCis3Mzk5MyA0ZDJiNTMyNWVlNDhlODVkYzIyYjkyOGRjNDVkYWY4MzM3M2U3MTljIHB5M2sKKzczOTk0IGRhYWJjYmYyNDE1ZGQwYTM4OTM5ZTEyZjRjMWViMWY4ZDdlMmVjNTQgbGVnYWN5LXRydW5rCis3Mzk5NSAzMmQ0ODY2MmFhNWYzNjMwNTI4NmUzNGJiNWMzNGQ2MjdlOGE1NTAzIGxlZ2FjeS10cnVuaworNzM5OTYgOGViYjkwZGMzYjA0NTBiMzliZDhhOWJkMGIyODVlZmIwYWUwOTkxYSBweTNrCis3Mzk5NyA3YmVjNmI0MDc0ZjU4NDcxZTM0MTdlYWRlNTUyY2Q5NTk0M2UxNWEzIHJlbGVhc2UyNi1tYWludAorNzM5OTggNzM3YTZiMzM3NTA1NjNjMDJmNzUwNjEzMGUyZTA1YTQ2ZDEzZTlhZiBsZWdhY3ktdHJ1bmsKKzczOTk5IDZkOTYyNWRkOTJlN2ViYzVhY2Y1OTQxNDkyY2Y1MWYxYzBiODU3YjQgcHkzaworNzQwMDAgNDFlYjExMjkwMTQyZTc2MzU2MmYyODUzNGMzNDliMTllNTVjNzUxNCBsZWdhY3ktdHJ1bmsKKzc0MDAxIGFhMjJlN2YzMjUxNzgyYTdjZTZmNjBmNDU0NjA5YTg4NzdmZjU3YmYgbGVnYWN5LXRydW5rCis3NDAwMiA3MmM1ZTE3M2FhYzVhNjgxYzk1NzcwY2ZmODc5MjMwMmMzYmMzNWM0IGxlZ2FjeS10cnVuaworNzQwMDMgZWYxYjExOTgzMzhiZmFkNzA0ODc4ZjA1ZTk0MjdjZmM3NWU3ZDMxYSBweTNrCis3NDAwNCAxMjQzOWEwMzM5ODhhNGVlMjE4MTFiNDY0Yzc3MzhkMWNmZjkwNzg0IHB5M2sKKzc0MDA1IDI5ZTdhNGRkNDE3Y2EyNTVmZmQ4OTc3NzQwMTI4YTBmZTU4M2U1N2EgbGVnYWN5LXRydW5rCis3NDAwNiAwZWQ0MDVjMDVjYzMwNGJmZjU3ZDg0ZmU3YTVmNDJiODNmZDIyZjk4IGxlZ2FjeS10cnVuaworNzQwMDcgOThiYmI5NjM0NjcyYTU4MWRmYzk5MGY3Y2NkMTJjYzA3YTllZjFjNSBsZWdhY3ktdHJ1bmsKKzc0MDA4IDIwNzNhOTg5YzAxOTI2YjEzM2ZmMjIyNmE4MGRlZjE3NGU0MmU5NWYgbGVnYWN5LXRydW5rCis3NDAwOSA4YzY2MDZiMzJjYjFjOTBmMzUwZTY1YjM4MTAzNDYwYWQxZDViZDg0IHB5M2sKKzc0MDEwIDg3YjMxMjFjZTU4MGVmMjEzZGNhYTJiYzJjZWM5NDE5OTgwODhmYWUgcHkzaworNzQwMTEgOTM5MDZiMzlmZmVjYzRiMTUwNmZmYzc4ZmVkNjM4ZDBhZDVkODc3NiBsZWdhY3ktdHJ1bmsKKzc0MDEyIGE1MGViNTk2YTZkM2QxYzJlNzQwMzZmYzRjYWJkNThmNDcxYjZmNjQgcHkzaworNzQwMTMgZWRjNzE0ZmZlNmNjYzNhMzNiODk0ZWNmYjVkYzk0NTQ3MDBmY2MxYiBweTNrCis3NDAxNCAzYTMxNjI0M2JkNmM2ZjVmNjM1MTE0YWYwOTFhNTcyYWQ4ZDhkZGI2IGxlZ2FjeS10cnVuaworNzQwMTUgYTg5MjI3MjNhOTJkMDAxZjI0M2M0NmE5Y2FiODhkZTcxNTc2MzBkMSBweTNrCis3NDAxNiA3M2RjZDE4M2ZhZTJkNmQ2ODhhNDU5MzY3MTUyYTI2YjAxMWJiYzcwIHB5M2sKKzc0MDE3IGQxMzQwYTUwYTFiMzA3NmE1ZDVhOTIwNWE2ZjYwN2NjMDNiZWZjN2IgcHkzaworNzQwMTggYmQ0MzFhMGU2ODI3NDlmNDJkOGU5OWFlNDVjMGU0Njg5ZjQyMDBlZCBweTNrCis3NDAxOSAxZmQwZjU2OTdiNDBkYmMxYmZlMmU0MTE2NWYzM2I1YjQzMjQ1ZWRkIGxlZ2FjeS10cnVuaworNzQwMjAgNjlhMDRkYmQ1ZjBhMjdkOTUwNjhkMWNkNmVjYjgyNzMxMTVlNTU0OSBsZWdhY3ktdHJ1bmsKKzc0MDIxIGRjMDg0ZjQwMDNiYmJmNjgwYmM3Zjg0MDg4NzMxYTc4NGMxMzYyMTkgbGVnYWN5LXRydW5rCis3NDAyMiA5ODI3MTQ2OGFiMDdhMTg5ZjY3ODM5NGJkMzliYjhkZmYyNGU0NTAwIGxlZ2FjeS10cnVuaworNzQwMjMgMzM3MGQ2MDhlNWFhNDg1NjM4Y2U5YzIwYjhiODFhOWRjNzU4OGNiOSBsZWdhY3ktdHJ1bmsKKzc0MDI0IDM4NjQ1MmIyZDlkNTczMzc4NDY0OWE5NzgzNmNmMDQxMzY1ZDM5MTkgbGVnYWN5LXRydW5rCis3NDAyNSAwNzc1MGM1NWZkNTVmYjgwNTE0NjEzODdiMjZiZTM1MzAwMGNhNjcwIHJlbGVhc2UyNi1tYWludAorNzQwMjYgOWIxN2Q1NDY5ODIxYjNmOGUxZTFkMzJlZWI2NmI4YjFkYzE2OWNiZSBweTNrCis3NDAyNyBmOTc4ZGRkYjliNzFmZDg4YmRjY2UwZGU2OGY5Y2FkNjc5NDBlOGVjIHJlbGVhc2UzMS1tYWludAorNzQwMjggYWI2M2EyNjJhMTEzYjk1NGViMTljN2NlMjkyNTkzNDdkZDE4MjY1NyBsZWdhY3ktdHJ1bmsKKzc0MDI5IDdmMTU0N2Y2NmNjZjMwYzFlMWJmMDBlNzdlYTg4ZDQwMjBkZGNkZDAgbGVnYWN5LXRydW5rCis3NDAzMCBmYzhmYjhlZmYyMGVjODYzODA4ZTdjNjZlNmQ2MzQzMjBkYTMxZmQ5IHB5M2sKKzc0MDMxIGU4MzBlODNmMGY1YWU0YmI4Njk5ODhjNDJmOGI5Y2I1ZTRjMTAzZTQgbGVnYWN5LXRydW5rCis3NDAzMiAwY2E4MGEyYzc3ZmZkZTg4NTQzNjcyMjg5ODcxYjNlODQwNzRhMDVmIGxlZ2FjeS10cnVuaworNzQwMzMgY2ZhMDA0YzFmZDk1ZDc2MmEwMzE4YjUxNGM0YjIyOTM2N2FkNDE1MSBsZWdhY3ktdHJ1bmsKKzc0MDM0IGIxNmFlNjlkNjQ4NGE3MDUyM2I2MTliYmJkMjRlNjYzMjBmMWM2MGEgcHkzaworNzQwMzUgZTYyMWUzZTMxOTZlYTQxZmRjMzFiM2IyMGIxOGNjOGE3MjFmNzE5MCBweTNrCis3NDAzNiBjYjNhYThiY2Q3YjAyZDhhMDFlNzZiZDY5YTVmNGQyNGUxYjRiN2ZhIHB5M2sKKzc0MDM3IGRjZTQ3YzEwZDNmYWUxZmVmMmZjMmZmNTA4MDQ4Mjc1NTM2MWI1ODAgcHkzaworNzQwMzggZDIwNzlkNWFkY2ZhYTQ0YTFlZjUxZGI1ZDY3MmZlMzA2ZDFmNmI3MyBsZWdhY3ktdHJ1bmsKKzc0MDM5IDdmNmQwM2I1OTg2NWMzMTcwYjMxMDhmZjNiM2E0ZjI2ZDljZTI3ZGIgbGVnYWN5LXRydW5rCis3NDA0MCAyZGFiOGQ2M2ViNTU1NjgzZWJkNDljMTgwYTJjYzNhZmI3ODliMTg1IGxlZ2FjeS10cnVuaworNzQwNDEgOWU3NTI5ZWY0NGQ0MzVkMTk4ZGRjMjYyNzk4NmQ1MzUzMGVmZDllNCBweTNrCis3NDA0MiAxMmExM2U1MzhhMTFkOTk0ZjhmZDU2ZGNmMmQxN2JjNDZmYjJmMzIxIGxlZ2FjeS10cnVuaworNzQwNDMgMTMwZjE5MTFkMTQ2NWI0NjA0NGU5YjkwMTY2MWJjMzJkZGU1N2VkMyByZWxlYXNlMjYtbWFpbnQKKzc0MDQ0IDI3ZTcwZDgxYWQ1NzVlYmUyMzFhNzY0YmRiZTFkNGJmM2M4OWMxZjEgbGVnYWN5LXRydW5rCis3NDA0NSBiN2I4MjZmNjVlNzVkYmVjZjVhNDQ3YzhkOTYyY2U1ZWExMzgzMzRiIHB5M2sKKzc0MDQ2IDkwNmVkMTE5Y2IxOWI0MmNhZDI0N2U0NTcyNDg5NGE1ZWM2ZGQ4NmIgcHkzaworNzQwNDcgODUxMWM3YzBkM2VmZmJjYmZlYjNmNmNkMDljZWNjYzhhZTY5YzVmYiByZWxlYXNlMzEtbWFpbnQKKzc0MDQ4IDAxYWJjZDM3MzAxNDVmOTNkZjNiMmZkMThkZGUxMzQ3ZTQ4OTg0OWIgbGVnYWN5LXRydW5rCis3NDA0OSAxMDdlNGZiOTM2MDVmZDg5MDE1MTc2ZmVmNTdmMGNlNTFjYmQ3NGYxIHB5M2sKKzc0MDUwIDFlYzVjMjY2ZDM5MGRmNjFmYTg5MjAxY2E0MWFjZWVhNmJjMGI2YTIgcHkzaworNzQwNTEgYTI5YmFiYjU0ODg0YjUxNmRhZTYxNjE4YWM0YzRjNWEzNmQyN2Q1OCBsZWdhY3ktdHJ1bmsKKzc0MDUyIDVkN2Q4NTI0MDQyNjMyZDNkOTE2YWIzNWVlNDNkNjExMDNmOWZjMmIgbGVnYWN5LXRydW5rCis3NDA1MyA1OTM5MjE4MGJmNDQ1ZWNlMWI4ZTNhYmFlZTc0ZTRiYjAxZDg3NjFlIHB5M2sKKzc0MDU0IGI0Mjg3ZmYxNjRlNWJjOTM5MTQ5OTY0ODM3NWEzNTRlYmQ3MjkzNDIgcHkzaworNzQwNTUgNzI0ZGZlYWIzZTliOTE1OTBhYWRlMThjZTg3OWIzODAzN2Q3NDE3ZSBweTNrCis3NDA1NiAyZmNkZjk2Nzc5N2RlNjU0NjllOWFiZmI4YzI0N2RiNTk3MjgyYjM4IHB5M2sKKzc0MDU3IDFjNTdkZWJmOTdiYzI3NGQxNmZhMjJlZTlmZjk4M2ZiZDkyYTAwMjMgcHkzaworNzQwNTggYzA3NWI5NzRjMzVjYTRkMTJmYzkxOGY0YmQyZmRjYTQwNzY3ZTgwMCBweTNrCis3NDA1OSBhMDYxNjlhODcyYjM0ODljYmM0YjVkYWEwMTBlNTQzZmU1ZTNmNDliIHB5M2sKKzc0MDYwIDFkYjk3Y2U0YTg1MGEwY2UxYzJkZDQ1NzNkOGRkZTVlY2U3ZThkZGEgcHkzaworNzQwNjEgMjBjYzBlYWE4OTI2NDY3ZWJhYmY3ZGQ3ZTNiZDRkZmMxNTUyY2Y3NyBweTNrCis3NDA2MiA3NjNlNTEyOTY1ZmE3ODAyNGFjYjkxYzk3Y2M4YmE3NzM5MGQ2NGIwIHB5M2sKKzc0MDYzIGVhOGZmOGQ2MjkyOGEzY2JjNDQ2ZDBlMjQyZmZjYWU4MzU5ZDllZjUgcHkzaworNzQwNjQgOGFhODBiNzE1YzUxYzc2ZTc0ZjkzM2Y0YWE5MDM1YjYyY2I3NzZiOSBweTNrCis3NDA2NiAzNmE3ZTk2ZTkwZmIzYTI2NTIwNWE1MzdlNjc2ZDZjMDViOTJmNThlIHB5M2sKKzc0MDY3IGRiNWIzZDMxODY0OTMzYjlhYzNjNWRmMjMzZTBjODY3ZDgzMzUwYTMgbGVnYWN5LXRydW5rCis3NDA2OCBmZTJiMDI2ZGRmMjFjZDFlNWU3ZDZmYTg0ZTJlMTIzYWE5OWY4MTEyIHB5M2sKKzc0MDY5IGUyMzkxZDM2MGFjMjQ3OTE5YzQ1NzUzYjkxZjM5YzU4MTM3OGJjNGIgbGVnYWN5LXRydW5rCis3NDA3MCBiY2RiN2IxODdmYWEwNTQzY2M0ZGExNmU3OTg4NDVkZjM1NzZmYWFmIHB5M2sKKzc0MDcxIGFiMjRmZjY0NmRhODhmNTVjNDNiZTVjNDUzZGVkOGQ3ZTc4YjM0YTQgcHkzaworNzQwNzIgNmUwNzVlZTQ4ZDRiYWVhMjJmZWJmMWNhMjc0NzIwZTJhNGM4ODFhZCBsZWdhY3ktdHJ1bmsKKzc0MDczIGJhNzM4YWYxNGRmY2Q0MWIzMmQ1N2M1MjY2M2RjNTI2NzAwOGJhYTcgcHkzaworNzQwNzQgNThiNTEyZWRmZGJiNDFhZDBmYWJmN2VlZjhjNmVhODA4YmFhMDczZCBsZWdhY3ktdHJ1bmsKKzc0MDc1IDI1OTEzOGE5ODhhNTI3MGExZDg3MThkYzkyMWY4YTVmZjRhNmU0Y2UgbGVnYWN5LXRydW5rCis3NDA3NiA1ZWUyZTk2NWRhNmVkZTEzM2MyMTAxMTU1MjA5ZWMwMzFmYzA3YTI5IHB5M2sKKzc0MDc3IDBhYTUzMjExN2E0YmI2OWYwN2M2M2FlNDdjNWVhNDMwM2NhM2I3ODEgbGVnYWN5LXRydW5rCis3NDA3OCBiMDUxMDU1YjU5ZjE5NDJjY2EzYjYxNTY0NzJkODEwN2Q3NzkzMjMyIHB5M2sKKzc0MDc5IGExOWViOTYzN2ZmN2VkZmZhMTVhNmRkNjkwNmE4YjQ2ZDNmZmZhMjQgcmVsZWFzZTMxLW1haW50Cis3NDA4MCA5ZGM1YWE2MmJlNzJmZjg3YmY4Zjk5OTM1NmUyMmU1ZTFiOTE5MGYwIGxlZ2FjeS10cnVuaworNzQwODEgNjZiYWJlNjMxMDM3Zjc0Njc3NzFhZTk0ZmI0N2IxNDA2MjJmNzYwYiByZWxlYXNlMjYtbWFpbnQKKzc0MDgyIGRlMWQ1MjA2OWQyZGZjYjcyNmM5ODUyZGE3NzRhYTY1NzEwZGRjNjkgcHkzaworNzQwODMgMzc1NTYzYzZkMzI0NGExOWQ3ODljYzA2Yjk1ZTUzOGNlZDI3NWI3YyBsZWdhY3ktdHJ1bmsKKzc0MDg0IDU0YjFmODAyNGJjODNjMzYzNDgwNGRkZjVhODkwZDkyNTZlNTkyZGQgcHkzaworNzQwODUgZjIwNzA1ODc1ZTgwNjUwOTc1MmE2ZTUzMmM0ZDcxYTQ3NWM0MmRhNSByZWxlYXNlMjYtbWFpbnQKKzc0MDg2IGM3MDQyMTI3MTk2YTUxNWZhZWYyOWUyZTA0Y2NlZDI3NTI5ZGM2YzggcmVsZWFzZTMxLW1haW50Cis3NDA4NyA0ZjE3OGU1OTU4MTMxMmU3OGRlMTdlNDc2MTBmMjg0YzlmMmY2YmI2IHB5M2sKKzc0MDg4IGVlMGI5YTkzMWM5NGE0OTY0NDdhN2UzNzhiMDlkYThlYmY5ZDRhMDggcmVsZWFzZTMxLW1haW50Cis3NDA4OSBjMzM2YjMwMzhkMDU0NjQyYWU0NzdhMjYzNzEzZTQxZTMzM2I4Y2IwIGxlZ2FjeS10cnVuaworNzQwOTAgNDYxMmEyYWNkZjJmNjA3ZDc0MzJiM2RlZWMyOTM3ZGI1NTAwZGY3MyBweTNrCis3NDA5MSA2MjM2YWRiMzY2MTgxZDYyNWJhM2RjNmI2NTZmNDkwYTMwOTE5ODQxIHJlbGVhc2UyNi1tYWludAorNzQwOTIgZDYwYjU1OWVlYWQ5ZjI5NzQ4NzlkZjU5NGRjMTg5YzdiNThkNmNjNiByZWxlYXNlMzEtbWFpbnQKKzc0MDkzIDM2NjM2ZmE1NGYzMzMzOWFjYjc2NWJhNjgwZTYzNWIwMWQ2NGJkNjYgcmVsZWFzZTI2LW1haW50Cis3NDA5NCA2YWQyNTYxMjQwODA0M2EwZGFiZTljZmQ3Yzk2ODBlNzNiN2QwZDM5IHB5M2sKKzc0MDk1IGYzMTEzOTU0ODdjOTcwZjJlYTg1MmFhOWFlNzA1MWJhMDA4NjAzOTIgbGVnYWN5LXRydW5rCis3NDA5NiBlYzFmMzJiNzJhYmU4MTMyNjc5NDg1MzAzNDdiZjc3MjkxMzdlZmJhIHB5M2sKKzc0MDk3IGFmOTc3ZTk0ZTJmZGQ0ZTNjNzRlZTUzZjJlZGU2NGMyOTk2ZmFlZDcgcHkzaworNzQwOTggM2E2MTNlMDBmNjZkMzQ4YmMzY2FlMjJhYjJiNjU4MWIxOWY4NDkyOCBsZWdhY3ktdHJ1bmsKKzc0MDk5IGU2Mjk1N2EwZWUxNDIzN2QwMzlmY2E2MjI4MDExNjc0Y2ZjZTI2NWIgcHkzaworNzQxMDAgZWVhZDc4MDdkZjdjYzA3OGZjZWE5OWM1ZmJlOWMxZTZhMTg0ZWNlZiBsZWdhY3ktdHJ1bmsKKzc0MTAxIGMwYWNhZTE5YjQ4NzY3NmE3NjE3NzA4ODBiN2EzOTZiZGNkZGFjM2YgcHkzaworNzQxMDIgZWFmNGEwMDQ4NGJkYmQ4M2VkMDIxMmQwZTRhNDdjZmZlN2E0YWZhMiBweTNrCis3NDEwMyBhZTJjMDU2YzQ2ZDM0NDcwM2UyZDliZDUzYmVmMjUwYTFkOGI4NGU1IHB5M2sKKzc0MTA0IDgxYzhiMzA0MTYzZTNhZGFkOGY1Y2QyOGU4YWQ2Mjg3ZDhkYmFkYTQgcmVsZWFzZTMxLW1haW50Cis3NDEwNSAwYWY5NDA3Yzg4ZDJlNmVmMWI0MTE1MDdjZjMyNDc3ZWQ4OWY4YmQzIHJlbGVhc2UzMS1tYWludAorNzQxMDYgNWNmNjhkM2I2NTMyNDg5OWY1ZmM0MGQwZmY0OTNhNDkyMGRkNTQ3YiBweTNrCis3NDEwNyBhNjQwYmIzYjljMmJiNmJkMmI3MGFkZDc2OGVkM2RlMmYyMWMzMzEzIHB5M2sKKzc0MTA4IGY1MDI5MDc5N2ZiNTBhNTMwZDg3YmNkZGQ3Mjc5NjhlZjY3MTA0N2UgcmVsZWFzZTMxLW1haW50Cis3NDEwOSBmZTc5ODhhNTcwZGZmMjEzZTAwN2Q1MjY4MzQzMWRiZDU5OTkxYWRhIHJlbGVhc2UzMS1tYWludAorNzQxMTAgZGZhZjZkZTJjOGNlN2EzNDRlYTg3Zjg4ZWY3MWEyZGI5MGNlZTY1ZSBweTNrCis3NDExMSBkODI2YTBjYzJjMGUwZTYxZjc5YWIzMmUxNjYxZTEyM2RmYmNmMmVhIGxlZ2FjeS10cnVuaworNzQxMTIgZDFkODI1NGM0ZWQ1YzZmODg5Y2NkNDk0ZWZlNTU0YzJhNzMwYWMyNCByZWxlYXNlMjYtbWFpbnQKKzc0MTE0IDczMmY3MmNiYWY3ZDg0Y2NjZjYxM2Q1YWU5MDhlZWIxMWRjZWYzMzMgbGVnYWN5LXRydW5rCis3NDExNSAwYWNmMjQ5MDE1Y2E0Y2IzZDA5NTgxMzNmOTJjYmQ1OWQ3Yzk1MGRkIHB5M2sKKzc0MTE3IDAxYjc2M2NlYjQwODczZTg5MzRmNzdkODM5ZGY1ZTM5ZTY1NDE0YmMgbGVnYWN5LXRydW5rCis3NDExOCBhYWNkYzczNWYxOWIxODVjMmZkMjExNzAxYzFhNDYzZDY3ZTdjZmIxIHB5M2sKKzc0MTE5IDdiZjhmYzIwMDM3YTFjYjIxYjAzZDFkZjA4ODYzNTJhODllYjIxYjkgbGVnYWN5LXRydW5rCis3NDEyMCA4NjBlNzEyZTMyZTBkZmY4YmYzMGRmZWQyZGEzZmFiYjY2OWFiYjk0IHB5M2sKKzc0MTIzIDAxZTJlOWFkZDA3MGZiNDIyMzViYThmZmJhZmQyODE0MmU1MWNhNWQgbGVnYWN5LXRydW5rCis3NDEyNCAzODMyY2YwMzY4N2JiMzk1MGE1YzI1YWY5MWUzYTkwNjMwZTgyZTQ3IHB5M2sKKzc0MTI1IGNjOWZlZmNkZDUzM2M0YjczYTdmMzQyYTgwYmFlNjIzZjVmNDVmMmQgcHkzaworNzQxMjYgY2ZhYjExZGQzZTczZTU4NmYwMTQzOTM0YjIyMDQzNDk5ZTdmNDJmZSBweTNrCis3NDEyOCA2M2ZkMTdiYTk4NzUzMDYyOTc4YmExMWM1OWFlZTljMTIyYjcwNjk1IHB5M2sKKzc0MTI5IDJjZjlkMThkM2RmNTRjOWZjN2IxODg3MjhkYmQxZDMxOGM4OTU0MWYgcHkzaworNzQxMzAgMGIxZjFkN2IyZTZkZmQwNTk2Y2U0NDI5YTgxZjc2MmM2YzdlMjU2OSBweTNrCis3NDEzMSAzYzQ0OTBhZDAxY2YwNzZkYTA0OTYyZjI5MjY4MWNiNDQzY2IwZjgzIHB5M2sKKzc0MTMyIDc5NzE4ZWUwMzk4NjI5YWM0MWMwMzJkN2MwOWQ4MDNkNzhlMTY0ZTEgcHkzaworNzQxMzMgZWJjOTg1NmE5YmRiMjYwMWY0MzFkNjNhYTk4OGUyYzY5N2JjYzFiNyBweTNrCis3NDEzNCA1NjEzNjRhMzRiMGM0NmQxMzQ0ZmUyOWY4MGFkMmJjZWZiZjA2YjAyIGxlZ2FjeS10cnVuaworNzQxMzUgMGEyMGVkZjNmN2RiODllYjhkZWY2NzY4ZmE5NTMzODg2NjIwMWIxNiBweTNrCis3NDEzNiA2Zjg3MzY3Mzc5OTRkYzExOWE5ODM0NWU5NmQ2ZTJlZjBhZWJlMDQwIHJlbGVhc2UzMS1tYWludAorNzQxMzcgOWZmNWJkMTYwMTZiNDA3YzY3OTc0YmEyNmVhMDBlMDg1ZDM5MGFlMCByZWxlYXNlMzEtbWFpbnQKKzc0MTM4IDIxZTU4MzFjYmFlOGFiYmMzMzlhZTI4ZDE1NmJhYTljYjQ0Y2M3ZWYgcmVsZWFzZTMxLW1haW50Cis3NDEzOSAzODE1YWJlZDkyNzliOGQ4MTFjODRiYzRmNWU4YWIxOTlhNmI2NWU0IGxlZ2FjeS10cnVuaworNzQxNDAgYzI4ZTYxYzViZGY4MjlmYzBmZDQ3YTRjZGJhOGVlOTdiNjk4NmVhNyBweTNrCis3NDE0MSA5NDk5YzIzMmVkYjczZmI3MDI2OWY5NTcyMTA2YjQ0YjlmNDVmNTg3IHJlbGVhc2UzMS1tYWludAorNzQxNDIgNGRmNzA1MDBkYmUzNGQ1NzhiODBjYzE1NjA4NGYzMTE0NWZmNWRkYiByZWxlYXNlMjYtbWFpbnQKKzc0MTQzIDAzZjVjNjdkZjE4ZTJiNmM1NGQ4MjUyMWI4ZmM2NWY2MmZjM2MzMDYgcmVsZWFzZTMxLW1haW50Cis3NDE0NCA4ZDZlYWQyYWNjYTAwNGY1NzA1N2EwMTUyMDY3MTcxMjU1OGE2MzFlIHJlbGVhc2UyNi1tYWludAorNzQxNDUgZmRhOTA2MmViZmE0Yzg3MWU5Y2E3Yzc4ZjUwYzAxNWU0MjIxZTlkZiByZWxlYXNlMjYtbWFpbnQKKzc0MTQ2IGNkYzc0OWQ5YzAyMWI5N2VjNjdlYzc0MTkwZmQxZTBmNWVlNzYyOGQgcmVsZWFzZTI2LW1haW50Cis3NDE0NyA3ZGNlNDA0ZmM4ZWI1YjMzYzMwNmI1ODU5NzMxYWM5NTY0Y2YyODUzIGxlZ2FjeS10cnVuaworNzQxNDggMzYxMmE0ZWNhNWQ1MWNjYWIxZWZjNzhmMmY2YjBiMzc4MmRmZmViYSBsZWdhY3ktdHJ1bmsKKzc0MTQ5IGI0MGVlYjhmNjljYTdiYjY0NTkyYzY5ZmFmZmRlYjEyYmUwN2M2YzAgcHkzaworNzQxNTAgYzMwZmE4YzVlMzI0NmY5NmMwOWFjOWU4MGVkM2UzYTExMTI3NzI2YiBsZWdhY3ktdHJ1bmsKKzc0MTUxIGU0MDUwNmVkY2IzZTE1N2EwOWVlNzIwZDAyNzQ3MTUzMTA3NDgzN2UgcHkzaworNzQxNTIgNmJiMDE4ODdmNDc1Njc2NzYxMWYyODEzOWU1ZjY4MjQ0ZTkzMzcxZSBsZWdhY3ktdHJ1bmsKKzc0MTUzIDI0YTJhY2YxMjkxYzk0MTM3MjJmMzFhM2E1NjUxN2RiMDAxZjdiZDMgcHkzaworNzQxNTQgYWJmZDVmNzhmNDY2YWUxNzAzMDA4NThkNmQzN2Q5YjZhZDlkMDVjOSBweTNrCis3NDE1NSBkNzQ3ZDUyZjlhNjY5MDZlNTJjMTdjZTMzNDk1MWQxOGVlMTYxOTVjIHB5M2sKKzc0MTU2IGY3OTA0MzM2OTYyNWZmOWY2ZjI4YjI0ZDMxNjA1YmJmYTQ4ZDRlMWQgcHkzaworNzQxNTcgZDY4MmNhODg4ZTI3OTRiMTdhNTZmMTlhZWEyZWYzY2U0MDc2OWM0NiBweTNrCis3NDE1OCA1Mzg4NTBiMzg5MzEwOTA3MWM1MTQ4MGE4NDg4YzUyMjkwMWMyN2I0IHB5M2sKKzc0MTU5IGI3YWFiYmE4NGVlMWEwYTk5YWRiMDI4M2RkNmM3OWUwMjFiN2Y0ZTkgcHkzaworNzQxNjAgNTllNWYyOTlkYWEwMjBjNWNiZWVlMjQ1ODQyN2VjNDYzYTkyZGMwMCBweTNrCis3NDE2MSBlYzg1YTUxZGU5Y2Y0OGU5MDI4ZTk1MjE3OWU0ZTgwMzk2NTI4OTQ0IHB5M2sKKzc0MTYyIGRmNWE3MDg2MDc4MTBiZjA5NjM4NTM3MTk5OGNiOTRmODVlZTkyZGMgcHkzaworNzQxNjMgY2M5YTFhM2UzZmI4MWU0MzI4NmM0YzNjYjgwYmM4ZmQ5M2Q2NWFjYyBsZWdhY3ktdHJ1bmsKKzc0MTY0IDFlY2IwN2UxMWEyZGNjNjFmZTNlNTIzMWM0MjMzY2ZjOWY4MmNhYTEgcHkzaworNzQxNjUgOWMyMTExY2ZkOTc0MzZkYjJhMjI0ZmYzMWRiODAwYTNiYjljNmU2NCByZWxlYXNlMzEtbWFpbnQKKzc0MTY2IDA3NjM0NjBiMGIzODFkZmVkNjFkZjJjMDc4MGQ1ODY4ZTdmNDFlNDAgcmVsZWFzZTI2LW1haW50Cis3NDE2NyAxNDgwZmFlM2I3MDNmY2Q3ZDAwNGQ2ZTk4MmJhYzNiMDgwZDAxMDA3IGxlZ2FjeS10cnVuaworNzQxNjggNzRhYWViOWMzNWZiZDExNGVhMjFiM2FiZGJlOTlhZmNmMzYxYWE2YyByZWxlYXNlMjYtbWFpbnQKKzc0MTY5IGNiNDZhMGQ3ODljNjcwZjU0YThkOTBmNDAxYzI4MWE0MTQ4NjNiZTEgcHkzaworNzQxNzAgMjVjZjc3NWE3MTUxOWZmZjYwNjBiOTU3ZTU5YjIxYmQ1OTg4YTVhNiByZWxlYXNlMzEtbWFpbnQKKzc0MTcxIDAzY2Y0Y2I0YTE1MDFkNWEzNjliY2ZiMmRjNDQ5MjhkZTQ0ZmYxZWEgcHkzaworNzQxNzIgOTA4YjM5NzY0YzczOGQ3MTVjOWFiY2ZhZjBiZjY4ZTQzZjhiN2Y4OSByZWxlYXNlMzEtbWFpbnQKKzc0MTczIDEzMjdhZjU2ZWE0OWFiODViMWIyMzUyOTUwYTg2MzE4YzVlZmNmYzEgbGVnYWN5LXRydW5rCis3NDE3NCBlNjUwYTlkNjRhYjVjNmUyOGJkZjhlNDY5YjhlZmU0ZTBhMDA5ZmYyIHB5M2sKKzc0MTc1IDk0ZmM0MzNjNDM3MzQ2YWI2MjgwNDIxZmRmYjNlYzhiNWVhNTA0ZjIgbGVnYWN5LXRydW5rCis3NDE3NiBhMGVhY2I1ZjlkOGFhMzUyYTZlNjJlYmEyNjc4ZWVlNDJiODM0MGUyIHJlbGVhc2UyNi1tYWludAorNzQxNzcgZGYxNzQ0MzE5NDY2YzhjYmY4NzRlOGVjOWJkN2JlM2M2NTNkNTAxYyBweTNrCis3NDE3OCAyNjBmYjQyMWFjMDdhMTQwODk1MDgwZTM2MjBiNWRmOGM4ZmZmM2Q2IHJlbGVhc2UzMS1tYWludAorNzQxNzkgOWRkYTAyYWZhOGVkMDA3YzdhMTM4NzI2NDBmNDI4NzdjNWM0ZjgxMSBsZWdhY3ktdHJ1bmsKKzc0MTgwIDAyNWE2NDI4YTc2NGY1ZTQ1MDkxOTJiNzgyN2MyZTFiODUyMzkxMmIgcHkzaworNzQxODEgYjk2NDA2NTUxMmIxNTU3YWRkYWZhMmI1ZjRiOTk5YmJlODhmN2QwZCBweTNrCis3NDE4MiBiMTFhNzUyNGU1NThmMWNhM2YyMmQ4MGRmOWEzYzU0ZmRlNTNmNDQzIHB5M2sKKzc0MTgzIDIwNzU0MWM5ODc0NDJkNmJiYmY5ZjZkZjRmOGQwNTY0OTgxZjAzYTUgcHkzaworNzQxODQgNzQyMmQ3ODlmZGNhOWIyZTkxYmMwYzU4OWZjYmNhODFhYjhjMDQwNCBsZWdhY3ktdHJ1bmsKKzc0MTg1IDk3NzYwMmIzZTE0MGRjYmRhMzkxOTE5NmI3Y2ExZTFlMTY1M2UzN2IgbGVnYWN5LXRydW5rCis3NDE4NiBlY2EwMjA3YmI3N2YwOTFhOTk0NTg0NmM4OTZhYjQyNjI3YjRiNmE1IHB5M2sKKzc0MTg3IDJlOTQ3MjQ1OTU4YjAxYzllMzJiYmUyYmY0YzlmMTE5YzY5OTgyOTAgbGVnYWN5LXRydW5rCis3NDE4OCA2MDUyMzQxOGY4YzhlOTU1MTc5MmYzZWUxYzQ3NDU2ZWUxNGEzNGYwIGxlZ2FjeS10cnVuaworNzQxODkgMmZiMTA1NzdjNjIxZTI5ZmZiOTVlNDUyYmM1YjI1ODIxNDJlOTc1MiBsZWdhY3ktdHJ1bmsKKzc0MTkwIDg2OGI0ZTYzOWI1YWIxYjhlNzFhNmFkODJjMzJjMGY1YzZhODc5ZTUgcmVsZWFzZTI2LW1haW50Cis3NDE5MSBiNzdiYjUzMjExMDg4OTFlZjI2NDc3NDgzMWM4ODQ2YjIxNmMyNDU4IHB5M2sKKzc0MTkyIGMwMGIwODg0MmQ3ZmQ0YmQzMTM4YjQ5N2U2OTIwMTJkOTc4NTIyNDIgbGVnYWN5LXRydW5rCis3NDE5MyBlOTkwMTNhOWQyZjljYTRlMGMzNjNkYzBhZGY0MDZhZTU2YWM0MmIxIGxlZ2FjeS10cnVuaworNzQxOTQgZDk4YjhhNmVjMmI4NGM1Yjc4MDExNzM0NjA0ZWE1NmM0ZGQ0ZjE2OCBsZWdhY3ktdHJ1bmsKKzc0MTk1IDYxYTA2NWIzMDAxZDg3ZDU2YjM5YmMwN2FlZGMyZDE3OWJjMTliMzkgcHkzaworNzQxOTYgNzU5NjIyZDBhZTI4NDc1NmE0YWRmZThhMjNjNDllZmI4ZWEwNTAzZSBweTNrCis3NDE5NyBjZmZiMWU5NjNkZDhhMDc3MjIxMWMwNzU0ZGJhZGY3NzIwMWY2ZjJlIGxlZ2FjeS10cnVuaworNzQxOTggZDFlYzk1YWUwYWMyODQ2YmQ4Yzk2ZTJjNThjNmNmM2M1ODU4ZGU5NSBweTNrCis3NDE5OSBhMTRjMDhmOGU3N2I1ZjhkOWZkMTNlZDhhZTY1ZTc0MzRiZDM4OTA0IHB5M2sKKzc0MjAwIDdkNDYwODAwNmNmYWMzN2NjOTA4NDlhMTJhZTVlODQ5ZmUyNGI2MWUgbGVnYWN5LXRydW5rCis3NDIwMSA2YzdiNGI0NzA4Mjc3NWFiN2JkNzZlNDljMTQxM2Y0YzcwYzM5ODU3IGxlZ2FjeS10cnVuaworNzQyMDIgNGIxMjE2ZjRmY2I1YjBjMjIxMTA2MDc4OGJhZTllMWE5NGQ3MDFhMSBweTNrCis3NDIwMyAwZjU3YjMwYTE1MmY0NjE5MWRhNmMyOGY5ZWI2NjMxZGVmNzdmODBkIHJlbGVhc2UyNi1tYWludAorNzQyMDQgNTExMmE1NmRmOTc3YTFjMWY5Zjk4NDQwYjMyNTk1OGRiY2I0ZGNjMyByZWxlYXNlMzEtbWFpbnQKKzc0MjA1IDcyNGExMDExZTg5N2E3YjlmMzJhZTI3ZDQxMDFhODk3OGU1ZDMxNjIgbGVnYWN5LXRydW5rCis3NDIwNiAwYjg5M2M2ZWFkNGM3MzZmZTlkOGMyODcyYmM2MzliZjAxMmNkYjAzIHJlbGVhc2UzMS1tYWludAorNzQyMDcgMWJkZTg0NTUyMjJjMzQ4OWE2ZjNiMjhhNGFkOTdmYThjZjAzNWY0MiBsZWdhY3ktdHJ1bmsKKzc0MjA4IGE1NTYzNGNlODExODM4ZGU4MGNlZjQxMWFjMDg2OGJlOTRlODEzMDIgcmVsZWFzZTMwLW1haW50Cis3NDIwOSBiYmQxZDkwZDE1OGFiZGRkNTUxOTAzYWU3NDc4YTU3YzlmN2E4NGIyIGxlZ2FjeS10cnVuaworNzQyMTAgNDJkYjFjZjM5YWZkYmFjNTBjMjg1MWM1MjUzYmEyMjdjMjNkMjM0NyBsZWdhY3ktdHJ1bmsKKzc0MjExIDY3ODlkODQwNjIxZjRkMGRjYzZlNTU0ZDk5NmNlZTlkMWQ3NThiZDkgcHkzaworNzQyMTIgMmY4YTM2MmUzNzNkOTUwY2M5YjgwZWYwNDVmNTBhZGMxZTFmMWY1MCBweTNrCis3NDIxMyAxNWI2MWYzMjdkNTA5NWRiYThiNWNiMmRiZTBjMTVjZjkyZjNlNDhkIHB5M2sKKzc0MjE0IDliZjIwNjg1N2Q3ZTc5Y2UyZDlmNTBiMTIxMGQyMzU1Mjc4MTI0MzAgcHkzaworNzQyMTUgYzEwNzczYmJhZmEwMzU5M2U2YjYwMmQ1NWUxYjUxZWM0Y2MwNjkwOSByZWxlYXNlMjYtbWFpbnQKKzc0MjE2IGI3MWVlYjkwNzA5MzdiNTYyZjI3MjMzZWVkNTNlODA2NTYyNDg5OWUgbGVnYWN5LXRydW5rCis3NDIxNyAwZjAxNjNmOGM1YjU2Y2ZkMmZmZjVhOWY5YmM4Mzc0ZTJlMzY1Yjk5IHB5M2sKKzc0MjE4IDg5ZWJlNDMyNDRhZWJmNmJjM2NiZjFlNzczMTU3NTJhZmMwYjdhZmIgcmVsZWFzZTI2LW1haW50Cis3NDIxOSAwZDIwM2NhM2FjNzhlZGYwNDU5ZWNiNGNiNTUyMjkwYmZiNzg5NTk5IGxlZ2FjeS10cnVuaworNzQyMjAgYTliNTA3ZWNkYTRjOWQyNzJiMzMzODcxOGNmMzYyMWRjZTRmYTRkMCByZWxlYXNlMjYtbWFpbnQKKzc0MjIxIDhjMjFmZmZiMDZjNDYxNGFjYWJiNzkxMWU3YTYwZDRkOTc5ZWFkNzkgcHkzaworNzQyMjIgZmM0NjlhZjZlYjcwMjZiZThkYWM4YzdhMmNjMTkyNTQzNmNjZmMyMiBweTNrCis3NDIyMyAwNmI4NmE2ZTI4ZjFhMTQzNTdlZDQ3NThhNzFjZGU0MWFkM2JlOTA5IHJlbGVhc2UzMS1tYWludAorNzQyMjQgNzRkYzdiYjRmNDY0M2IzZDZmZTgwMjI3YTU5YWYyZjY5YjIyZGNiYyBweTNrCis3NDIyNSA2MDdjZDExOWZlNGI5NzhhM2Q5ZjUxZjUyODdlMzIwMTQ1MjhiY2E3IGxlZ2FjeS10cnVuaworNzQyMjYgMTMyNmVmODZmM2U0MGQzMjZmNmNjZjVlMmYyNzdjYzVhZmQ5YjRmOSBweTNrCis3NDIyNyBiMzRjYWU3ODZjYjAzZTQ2NzI0MmJmNTQ4Y2ViZmRjNDYwZWI3NWMxIHJlbGVhc2UzMS1tYWludAorNzQyMjggYzg1M2EzZDJhMTlkMzU5MmRmMjI5MTAyM2M5OTE5ZmNhYThmZTgwYyBsZWdhY3ktdHJ1bmsKKzc0MjI5IDcyMTJlM2UwY2QxNzUwNzA3NTIyNGZmMDA1YjY5MjczYjM1ZmI5YmEgcmVsZWFzZTI2LW1haW50Cis3NDIzMCAwZjhiNTZlZjBmN2Y0ZGUxOTcwZWI0ZDA4Nzg4YTFhMjNkZGRhOGYxIGxlZ2FjeS10cnVuaworNzQyMzEgN2ZkOWFkYzgxMjgwMGMxMzVkZjBkMjZiNDUzM2NhODg3YTQ3NTEzNiByZWxlYXNlMjYtbWFpbnQKKzc0MjMyIDQ0MzE4MjEwYjAzYzcwYWJlZDJlZDc2NTExNjc4ZjM4OTRiNjUyNWEgcHkzaworNzQyMzMgMDFmODQ4ZWExMTBhZTNkNTkwYzRiMmYzMGZhZmZkMzFmOTM1ZTBlYiByZWxlYXNlMzEtbWFpbnQKKzc0MjM0IGRhOThjYmViZGFjYmEyOWQwNjY0OGU5YjNhN2FmNDNmNWI1YjUxODUgbGVnYWN5LXRydW5rCis3NDIzNSBiYjBiN2QwZTU1MGQ4MGE4Nzk4Mjc2ZGRjZGYwOWUxYjQxNTVlM2FlIHJlbGVhc2UyNi1tYWludAorNzQyMzYgMDdkYmRmMDNlOGY1MDMwNzI5OGEyZjE1MTBjYTJjNzcxZGVjMGI5ZSBweTNrCis3NDIzNyAzZDQ1MzY3Y2M2MmFhN2ZmYjk5MjJhNDY5MGI1MmFkYTM2NjhhYTEzIHB5M2sKKzc0MjM4IGFkZjQ4NGRmNjc5NDhlNDhiMTYyNTZiZTFlZDdlN2Q0MThmMGFlNTcgcmVsZWFzZTMxLW1haW50Cis3NDIzOSBhYTlmZjQ3YmQxYzhlZTU2NTQ5YjE1ZTdhZWI4ZjUwYTlmYjlmZDEyIGxlZ2FjeS10cnVuaworNzQyNDAgNTZiMmRhOTNhZDljODIzMmRlNWFhMGI5NWViMzJmMjcxZTM5MDU4NSBsZWdhY3ktdHJ1bmsKKzc0MjQxIDg5YWQyMGEzMmEyNjAzMTA3ODYzNWViNjdkZjBhNDczZDFmNDNkNDUgcmVsZWFzZTI2LW1haW50Cis3NDI0MiBiY2QzOWVmZmQzMWUzNzg2ZmRiNmIzNjU4N2VhMjFmYTIwMmI5NmMxIHB5M2sKKzc0MjQzIDg4OThmMjhlNmQyYzFhOTU0YTY1YTZiMGYwNDQ0YTc2YTFjOTU1ZjQgbGVnYWN5LXRydW5rCis3NDI0NCA1NzJjMTg3ZGY2MTJlMjc2YTI3M2Y2N2M5NWY4ODAzZmRhMzBkMjliIHB5M2sKKzc0MjQ1IDFkZmQ2ZjQwNzMzNmNhMDI3MzNhZTQ1MjkyMjhiOTNhZGFmYjBjOGQgbGVnYWN5LXRydW5rCis3NDI0NiA1ZTA1ODg5MDk2Y2QwODBlNzEyMjAyMzZmZjM1NzA4OGExYzBjYWU1IHB5M2sKKzc0MjQ3IDhhMDE3ZDNjYjkyOGFlNzJlYTAxMGI5M2E2NDI5MDhhNDE5ZjM3ZTAgcHkzaworNzQyNDggOWZmZmQzZWRiNjY4OWZkYWQyNTU0NDI3OTJiZmIwYzhmYmQyNTAxNCByZWxlYXNlMjYtbWFpbnQKKzc0MjQ5IGE1ZDAyNWFkMjFjOGVhMTRmYWQzODBhZDAyYjkzMmUzMjI5YWU4ZTQgcHkzaworNzQyNTAgZjM1N2UyNjAzZDkzYmViMTVmYWNjNTdhM2Y3ZmNiZmI0NDRkM2NiOCByZWxlYXNlMzEtbWFpbnQKKzc0MjUxIDYwYjMxZjBkYjAxNjM4NDZhZTJhMmE2ZjY3OWU1NmFiMjkyZWU0YjYgcmVsZWFzZTMxLW1haW50Cis3NDI1MiBlZTI1NDU5ZTliOTFmYWNhYzQ3NmQ0N2QxYjZjYjI2NWMxMmQ0MmJmIGxlZ2FjeS10cnVuaworNzQyNTMgM2VkMTU5M2RkMTc0NzIwMjc2YmE3MTI1OGMxMDNiY2M1NWQ2ZDEyZiBsZWdhY3ktdHJ1bmsKKzc0MjU0IDE1NjgzYzBlYWYyODYzMmQ2MjdlYTBhNTIwYmZmNjFlYThiNzgyOGEgcHkzaworNzQyNTUgNjRhZjQxNjBjZjFlYjlmOTNkZGFjODc2NzNjYTAwNDVlZWJlODExNiByZWxlYXNlMzAtbWFpbnQKKzc0MjU2IGZhMTRmODEzMjJjZTA3MTg3OGYzZDZjZDI1YjYwMDQzM2YwYzdlNTYgbGVnYWN5LXRydW5rCis3NDI1NyAxZGYyODFjOWUxODIxZmM5YzUwZGVjODdmOGYxYzczOWE3Nzg1ZWRmIHB5M2sKKzc0MjU4IDEzNzU5OWFjYjhiYWEzMTgwMDc2MmM3ZmQ1MWZjN2M0MGJjYzQzZjMgbGVnYWN5LXRydW5rCis3NDI1OSA5Mzg4M2YzNzg3YjU3OWI5NzgxMTQyMTgyMGI4MzliYzkyOGI1ZmViIGxlZ2FjeS10cnVuaworNzQyNjAgNGZlNTgwMWJmNzEyMTdiYTQ3Njg4NDE2ZTIxZjg4OGRjYjcxYTNhMyBsZWdhY3ktdHJ1bmsKKzc0MjYxIDViZTRjMDllNGE2NjYyOGU0OThjYTNhNTM4ZGQ2ZWExNzdhNjkwNTMgbGVnYWN5LXRydW5rCis3NDI2MiA3YWEwZDZmYTYzNTlmMTc4YTM0ZjYxM2Y3ZDM0MjU1N2Y3YTc3NmQzIHB5M2sKKzc0MjYzIGQyOWQxZDhlMmNkNjM2OWYxMjE0Y2I2MDZmMWY2MmZmM2RhYTYxOWUgcHkzaworNzQyNjQgM2UwY2U5NGMyZTFlMGYxMDQxNzk0MGRmZTNjOGExMjNkNWI3NTgzNyBweTNrCis3NDI2NSBiZDAzZDZkMmVmYjA5NTBkYzM3Nzc5YWMzNzZhOWRkMzQzMWE3NzE3IGxlZ2FjeS10cnVuaworNzQyNjYgNGQ0NGYyYTM4ZTUxZWYyMDgyMTQ4N2ZmODE3OTcxNDU2ZmM3ZDlkYyByZWxlYXNlMjYtbWFpbnQKKzc0MjY3IDA1MzU3NDFiNTdiYjIwYjZkNjQ3NWIzZGRkNWNlMjhmZmEzODhkZGIgcHkzaworNzQyNjggNjUwNTBlODI2YTk2ZGI1NjA1ZWQ3ZGIzMmIzNDA2MDdiMThjMmY1ZSByZWxlYXNlMzEtbWFpbnQKKzc0MjY5IDE2ZmE1NzA2MjllM2Y0NGNjY2I3OTBkMmYwNzNjYmRjYzRlYTQ5OGEgbGVnYWN5LXRydW5rCis3NDI3MCAxOTYxMWEyOWM4ZGU3ZTgxMTIxMDI3NDRjMTRmMzdiZGIxY2E2MzJkIHJlbGVhc2UyNi1tYWludAorNzQyNzEgNTVlMDJmYTdhMTFjMGVhOTlhMDRkZDYwM2EzNzQ2MTU2NzIxZGVkYiBweTNrCis3NDI3MiAwNDEyMTYxNTk1NWEyOGMwNTM2ZGU4Y2Q0NzBiMmU3ZWQ3ZTk0MWJlIHJlbGVhc2UzMS1tYWludAorNzQyNzMgMmM3ZTA3NmI0Y2E5ZDgyOGUzYTMxNTdlNWFmY2M1ZmEzZDE2NGM0OSByZWxlYXNlMjYtbWFpbnQKKzc0Mjc3IDNhZjNmYjE2ODYzODNhZjFlYWYxNGI0ZjE2MDFmMDk2ZGU2OGExNjAgbGVnYWN5LXRydW5rCis3NDI3OCA4M2I0NmE1OTg4YjBlYjUxMGRlNDIzODg5N2Q0OThlNzcxZTE2ODEzIHB5M2sKKzc0Mjc5IDc0NmE4MThiZGQzNTJiNmE5NDg1OTMzMjU3NWExMGUyYjQxNmI0YTEgcHkzaworNzQyODAgODgyNTVjYjQ1MzRkYWQ1ZTRlNjViZTI5ODk4MDhkZTA0MDE5ZjQ3MiByZWxlYXNlMzEtbWFpbnQKKzc0MjgxIDdjMjNmMGJjY2E4NWNlYzU4MzAxNjE0MjlmZGZiYzVhMzViYWQzYzUgbGVnYWN5LXRydW5rCis3NDI4MiA4YjQ4YjI4MmViYTkzOTYwYzA0Y2JjNGE1ZWRmNjAyNGVhMWU3OWE2IHJlbGVhc2UyNi1tYWludAorNzQyODMgNGFlMDRlMGY2ODUwMzhlNGQ2OWRkOTZjMmY2MTk3Mzg5MWFlMzFmYyBweTNrCis3NDI4NCA3OTc4OWU4OWZmNzg0ODVhM2ZkN2M1ZjhhNjBhYzY2M2ZhMTlkZWY4IHJlbGVhc2UzMS1tYWludAorNzQyODUgZDI1MzczMjY2NzI5NzYzNzY4YzI1MmRhOTkxN2MzYWYyZDkwNTYzNyBsZWdhY3ktdHJ1bmsKKzc0Mjg2IGY0MmUwN2FiMzI2ZWM1YWQ4OTY5YmY1NDdjOTg3OTU0ZjdmOTViZTUgcmVsZWFzZTI2LW1haW50Cis3NDI4NyA0NmY5YmUyNTA5MTJmNjEzNWQwZTA3NDhiMDk5ODdlMzBmNjEzMTgxIHB5M2sKKzc0Mjg4IGNmYmVmZGNjMjZkYjJmNTJmMjk4NzBkMDZjOWEzMDBmMmRmMGEyYzYgcmVsZWFzZTMxLW1haW50Cis3NDI4OSBlMWFjNTRiYjA4ZWQyOWMyOTMzNTFlZTU2NWRlMGZlM2UwOTg0MWQ3IHB5M2sKKzc0MjkwIDA4ZWNhNmU4YjBiZWZiYjFjOGRkMzkwMDM0YzQwZmJkZjI1NjNjNDUgcmVsZWFzZTMxLW1haW50Cis3NDI5MSA0NmU0NmEwZTYyMmU2MDJmMGUyOTRjZTVmNTZhNTViNDJiYTRjN2IxIGxlZ2FjeS10cnVuaworNzQyOTIgMDAyOTQ2YjUyZmMzZTdlNzYzMjQwNjZkNjU1MGZkZWI0MDRiZDJmMSByZWxlYXNlMjYtbWFpbnQKKzc0MjkzIGQ5OWNhZGYwZTVmMGM5NjE0NzI5MTIwM2Y5MGVhNDQ3Yzg2YjNiZDcgcHkzaworNzQyOTQgY2ZhN2U5NDNmZmMzZmYwMTk0ZjQ3OWRlMzBlMGE3MTYxN2RhZGE2MyByZWxlYXNlMzEtbWFpbnQKKzc0Mjk3IDUwMmNlMjhmZWJhYWI3NGNkMjY0NTVhOWRhMjU1YzZlMWI0NDI1MDIgcHkzaworNzQyOTggZmE2ZmQxZWQ3Mzc4ODNhOTdjMmI4NmU1ZjRjMGFlMzQ2NjFiNWEzOSByZWxlYXNlMzEtbWFpbnQKKzc0Mjk5IGRkNGRhNzVlYmM5NzE1ZGI5MzM5MjNjZjU4Nzk0ZmNlNWVmYmVlOTAgcmVsZWFzZTI2LW1haW50Cis3NDMwMCAyNzFkMzgyZGNhYmRmZmMyZWVmMjRjM2I1ZmM5ZmU1YTk4MGE1NWQ3IGxlZ2FjeS10cnVuaworNzQzMDEgNjU4ZGU4NDM4MWQ3ZjM3YzRmMmU3ZGE1NmUxY2QwMmM0M2M3ZmQ2ZCByZWxlYXNlMzEtbWFpbnQKKzc0MzAyIDUzNDVlM2JjOWU0MTYyYmZmNWRkOGE1MjA4NWQzY2UxMWE0MDdmYTYgcHkzaworNzQzMDMgYTBlMWQ2MjdiNzE4MzU1NTBkYjQyMjg1MzlmOTYyMGMwMTgyZjBlOSBsZWdhY3ktdHJ1bmsKKzc0MzA0IDM0Mjc3ZGEzOGUzODhiNzlkODg0MTdiMWI4OTdjMWY1ZmJkZGY1OTEgcmVsZWFzZTI2LW1haW50Cis3NDMwNSBjZDlmYTgxZWE0ODAxMzg5OTE4MGM5ZGRhYjFjYjZjOGFhYTRjMzI2IHB5M2sKKzc0MzA2IDg4NDhjNDllZDVmNTc3NDc0ODlhNDBlNDNmM2UwMTI0N2U0YzJlMjYgcmVsZWFzZTMxLW1haW50Cis3NDMwNyAyZmFlODA5NDUwY2QxMWY3MTBhNmY3YTVlMWRkOTYyYTVlZjI1ZDRhIGxlZ2FjeS10cnVuaworNzQzMDggNmEwNWVjNDkzY2U5ZTNmMThjNjllZGMyMzA0YzczNTI1Yjk2NWI1YSByZWxlYXNlMjYtbWFpbnQKKzc0MzA5IGU4MDI1Yjg1YWIxODI3YzY1MDM0YzlmY2Y1OGE0Yjc0ZmJmNjk4ZTUgcHkzaworNzQzMTAgM2ZmMTcyNWY4MzdlYWUxNjZlMGQ5YzQ3YzM0MjVhMjZkYmUzMzA1OCByZWxlYXNlMzEtbWFpbnQKKzc0MzExIDVkZTE5YzUwMTFjYTkzNjc0MTA5MzY2NTg5Zjc4YmE3OWVhZDI0MTAgcHkzaworNzQzMTIgNWQ4NzVmYWRmNjNmNTM1OGM3M2M2OWE5YzUzZDZlYjg5MjYzMTMxZCBsZWdhY3ktdHJ1bmsKKzc0MzEzIGIxNzc1MTg3YWEzMGU3MzcyZTE4Mzc0Njc5Y2E0MGI4YTkxNmNhZDMgcHkzaworNzQzMTQgMDgzODZjNzllMzRmMGZjZGMyNzQzOWNiZTMxOWQwYzMzOGI0Yzc4NCByZWxlYXNlMjYtbWFpbnQKKzc0MzE1IGViMjI0NDIxOTQxOTk5MjVlZTdmNjA2ZTM5OTRjODNkZTk4YjU2YTEgcmVsZWFzZTMxLW1haW50Cis3NDMxNiA5YTQzZmFjODc2MGMyZjkzZjk3MmMwMzRjNGUxMGQ5NDE4NmUyZGEzIHB5M2sKKzc0MzE3IGM4ZjRjMTMyZDZkYjA0ZTlhNDNlODE3NGM5NWMzNzdkZTg5MTlmNTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzE4IDY0MjQ4NWRiZmZiYWExMDMwZjNiMTk5OGJjOGM2MGY3YzA2NzFmYmYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzE5IGJkMWJjY2Q4ZTM0NGI5ZmRkNDNjZTEzNjZhNTYyZDA4MjYzYmRhNzMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzIwIGJhODAyYzBiNTM4YTc5NjkyMzc2NmIzZWFhODkzYTZkYzEyODg2NGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzIxIGZjZWE3YmE0YjAzNGRjYjI0NDA4MTRlZmI5YjhkMGJmOGNiODFiZTMgbGVnYWN5LXRydW5rCis3NDMyMiA3NTk0MmJjNzRmNzEyMzEzMzJmY2U2YjZmMjMyZTUyNDRlZjU3MDAwIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMyAwYzRlZTYyZGYwZTE5MGJlNmUwZjI4ZWMxODUzMGE5MWQ5MzcxNTlmIGxlZ2FjeS10cnVuaworNzQzMjQgMTkyZTM0NDRiODg4ZmE0NTMxZjRmMDg5ZTkzMWExODQzZTdjZDk5YSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjUgZTU3MzNkNThmZGIxNWE3ODA0YWM2OWE0ZTExOWE5YTFlNDM3NTZhOSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjYgNWExMzBiNzU4NWIxY2U1YzUxNTI1MWQzODZiZWZlNTA3MDE0NzViYyBsZWdhY3ktdHJ1bmsKKzc0MzI3IDY1ZDE2ODJkY2Q1ZTBlNThiMGRhYjJjMTUxZjM5YTRiYTRkMzQzZDcgcmVsZWFzZTI2LW1haW50Cis3NDMyOCAxYmUzZDQyN2FjYTI0NDY2YTBiYjEwYWJjZjUyYzU5ZWRhYzJlZDQ1IGxlZ2FjeS10cnVuaworNzQzMjkgMDZjZTlkODQ2OGMyZjA2NjllOWU2YjBiMTg0Zjg1MWFjNjVkZTM1YyByZWxlYXNlMjYtbWFpbnQKKzc0MzMwIDdmM2Y2YjU1ZTQ3YTI4YzdmY2U0ZGYxNTlmOTg1NmNiMjBlNGE4YTIgcHkzaworNzQzMzEgOWZkZjE4MmYxOWE5MTNkMTM5MzU4YjdiMmJmY2JmMTc0ZTliYjZkYiByZWxlYXNlMzEtbWFpbnQKKzc0MzMyIDkzYTk2ZDZkZmZiNWU5MzJkYWUwYzU1MDZiMDlkODg3MDkzYzU2NGYgbGVnYWN5LXRydW5rCis3NDMzMyA3YjY2Y2QwMmQ2MGJhODAxYTUwOTg3OGJmZGMyNGI2NTdlNDYxNjRlIGxlZ2FjeS10cnVuaworNzQzMzQgMzE1OTcyNmQwZTY1OWNjNjg1YmNmOGZlYWY5MmRmNGViMmI5MjhmMyBweTNrCis3NDMzNSA0ZjIwNGViNzZlMDdhMjZhNjY3ZjkzMDJjZDQzZjRiZTAzMzA0MGE1IHB5M2sKKzc0MzM2IDJmNjQxZTMzN2M5Zjk2YTkyOWQ0M2I4NTU5NDQyZmVmMWQ0ZThhMjMgbGVnYWN5LXRydW5rCis3NDMzNyAwMGZkNjI5N2ViZTdiMGRmOGUxYTA4YjZmYjkwOGI2NzJmNTJmYzkwIHJlbGVhc2UyNi1tYWludAorNzQzMzggZjEzNjAyYTg0ZGFhYWZkNmYyYzIxODA2NDA3NThlM2Q1MWU1NTViNCBweTNrCis3NDMzOSAzMDg4NzllYzkwMjM0ZGUzNWM1Y2JmMDEwODRhMDA4NDk4NTg1MTAxIHJlbGVhc2UzMS1tYWludAorNzQzNDAgMTllN2M5OTZlNjdhZWJlNDgzZmM0MjE2ZTU0NTk4ZmE5NGE0NzIzNyBweTNrCis3NDM0MSBlZmE4ODExYjI1MGEzYzY1OWY1YWE1NjBkOTNjNGE1NzNhMmY0ODIwIHJlbGVhc2UzMS1tYWludAorNzQzNDggODVjMGQ4ZDgzY2JmZmI2MmFiODM4NjI1MjAyOWI2ZTk5MDM0NTJmOSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNDkgYjAwMmU5MmEzNmY3NzQ2OGY4ZjY2OGJlMTBjZjAzZTU0YTAwZWVlOCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTAgNDEyYTg1Y2U1ODQ0YWQ4ZDZlOTAyYjdjMGEyMmIxNjE4MGU2YzUwZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTEgOTRkOGMzNDFmYjQyZjIyNDBlYzkxMjYwY2VhODVhODczYTk4ZDQ2MiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTIgY2QyMGE5ZWQ4NGU1YTNiZjEwZGZiNDY4MjIxMmM0MzA4NzUzNWZlNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTMgMTEyODZiNDUzZmNmZmIzOTU1NzM0MjEzY2E0MThhNmIzZDliMDIxNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTQgZTRhNjc0NGNlNGE5ZDdhZjk1NzM2NjA3MDU3MTg1MTA1ODA2MGIyNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTUgY2E2ZTkwNDcwZDk2ZmQzYWNjMjZmMjVlZDE4NWQwYWMxMzM0ZDFhYSBsZWdhY3ktdHJ1bmsKKzc0MzU2IDM2MWEwM2FkM2MzNzNiYzVjNzU3ZjZmZWMyMWY5MmYxZWE1ZDI1NTUgcHkzaworNzQzNTcgYmJlYTk4MTQ4ZTEyNjYxMDQ1MWUxM2I1NDRhNjRiYjk0NDNmNDNiMyBweTNrCis3NDM1OCA1YzhiMjIzOGEyZjUyNGM4ZDc0NDcxNTE1ZTFlMmRiMzhjMDA2N2QzIHJlbGVhc2UzMS1tYWludAorNzQzNjAgZTVhZWJkMDM4ZjBjMmFkMjVlNWQ2ZDE1OTBkNmRhODM4NjBjMzMyYiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjEgMmM2NGU5YmZiMWI2NjY1ZTZiZWJmNGFiNDI2ZjQxODQ1ZTI1Y2RkMiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjIgYjAxM2IzYzhjOWM3ZjVkOWVlMzBmNWI3YWQxZmI3MmYxOGFkZjczYiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjMgYzE5ZTc5MGQ5NDJmNzkwOWQ2NmFjYmE4ZTI5NjA2N2MzMmNlMDA5MCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjQgMDAyNWUwNzJmZTk3YWQ3OTJiN2U1ZGMxZDcxY2E2ZTNkMGJmN2QwMSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjUgMTIzYzk1ZmUwNGI2MDgzMDUzZDYxODZiNGEzNTg5YjNlNTRlNzBiYSBsZWdhY3ktdHJ1bmsKKzc0MzY2IGVmNTY1MzVmNTM1NjE4MDhlNTMxODFlNDNkNzljNzAwZGUxOTJmYzIgcHkzaworNzQzNjcgNGExYWIyZDcwMzg1OWE0YjhjOTgwODI1ZDQ1MTIyMzkwYTViZDA5MSByZWxlYXNlMzEtbWFpbnQKKzc0MzY4IDk4NDk4NWVhMjRjNGRjZTI5NDk2ZDQ0OTM4ODAxODVlODY4YWI1OTIgcHkzaworNzQzNjkgNGE5Yjg1OTE2NDlmYmQ2ZTQ0NDFlZWRjYjBiNjhjMmI0YWM0NjE3NSByZWxlYXNlMzEtbWFpbnQKKzc0MzcwIGUwMGI1MGEzZDQ5OWQ1ZTFkNGEwNGQwM2IwYzUyMzkwODNkZmZhMmYgcmVsZWFzZTMxLW1haW50Cis3NDM3MSA3YjQ5NWM4ZjJhMjQwZWE4MDc1MDRjNThkY2RlMTcyODgzNDE4MWU1IHJlbGVhc2UzMS1tYWludAorNzQzNzIgMWFjZDAyNzdkMjI1MzBlNWMxMmI5OTkyNWVmZDA5YTRjZDdmMjhiNiByZWxlYXNlMzEtbWFpbnQKKzc0MzczIGE0OTJiMmJjOTUxYjQzNGU1NzU5OTE4OTMxZThlYzY3ODcyNTgwODAgcmVsZWFzZTMxLW1haW50Cis3NDM3NCA1MDk1YTUyNzZkOGMyNjY3MGNiMTBlMzY1N2E4NGVmZTIwMjRhYTM3IHJlbGVhc2UzMS1tYWludAorNzQzNzUgNWZiYWMwOWMwZTkxZGIyZmFiNjQ0YzllMGViODU3YWFkYjgzZjVjMyByZWxlYXNlMzEtbWFpbnQKKzc0Mzc2IDU4YzEwY2YwNDYxNjdlMTAwMWFhNWU4ZTAzY2QwODE5N2Q5MzJlYmMgcmVsZWFzZTMxLW1haW50Cis3NDM3NyBkYWQwYTU0ZjVhNTgzZWI5M2Q5MzRhM2Q4NjNjZTBmZDljYjRlNDBmIHJlbGVhc2UzMS1tYWludAorNzQzNzggNTliNmI4NTU3YTMzMjlmMGM2MjIwYjVmZTllMmZmYzJiZTMwYWRmMSByZWxlYXNlMzEtbWFpbnQKKzc0Mzc5IDE3ZTcxNDg1Mjg3ZjcxZjE2YjBlNTI0NWE2NTAxOWFlYWNkNDQ1ZjkgcmVsZWFzZTMxLW1haW50Cis3NDM4MCA1NDZhYTEzNGQ3NzM3YTMwNzFlYzRhYWI1NmZiNTEzOWIyNmI1MjNkIHJlbGVhc2UzMS1tYWludAorNzQzODEgNzcwYTkzYzdhYmZmNzdhNzc0MDQ3M2Q4YmI0MmU1MGZlYjNiYmQzMCByZWxlYXNlMzEtbWFpbnQKKzc0MzgyIGM0ZDZiNzdjMzQ2ODE1NGY2Y2YxNDY5MDE1OThjZjM3ZjE3M2MyODIgcmVsZWFzZTMxLW1haW50Cis3NDM4MyAxMDk0MGJjZWRjOTllNDc4NTVmM2NiM2U1OTNlNjk0MWQ5ZWI1YTZhIHJlbGVhc2UzMS1tYWludAorNzQzODQgMGJiMjMyMDc4YjhjYjgxNWYwOTgzOTBjMWMxMTc0NTlkNzgyNjc2MSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg1IGQ3ZjNjZGYyYjA3Zjc4OWExYWNhNjdkYjY1M2JhOWNjZjg1NDZjMDAgcmVsZWFzZTMxLW1haW50Cis3NDM4NiAwZjdhNmViMTgyMjMxNzRkNjQ2NjQzYjU2YjhiMTY2ODI5ZDkxOTUyIHJlbGVhc2UzMS1tYWludAorNzQzODcgN2VlN2ZkY2VhMGQ3MTZmYTlhYmYzZDE4OTU1YzUxY2E4MTRiZTAxNSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg4IGVmZTgwOGE1ZjU5ZTg4OTdiNTU2MzliODg1ZWRhZTg5Zjk5ODMzYWUgcmVsZWFzZTMxLW1haW50Cis3NDM4OSA3NDNmYTI4MmQ3NDgxMzg0OTkwMDQ0OGZhZjA2Y2U3ZDNmN2EyNDViIHJlbGVhc2UzMS1tYWludAorNzQzOTAgY2U2NjQyMjE4ZmZlYzFhOGNjNjkxNGMzMDNlNjdkNDc0OWE3OTYzNSByZWxlYXNlMzEtbWFpbnQKKzc0MzkxIDM0ZWE1ODhhYzNjNTg4M2NhNjEzZjQ2M2ZmOTVlYmYxZmU4OGNmMWEgcmVsZWFzZTMxLW1haW50Cis3NDM5MiA5NGMyOGJhNjU2YmUwN2Q0M2UzYTA2ZDNjNDM4ZTUwMzhkNWI2YTc0IHJlbGVhc2UzMS1tYWludAorNzQzOTMgNjgwYWQ4ZWVkMzNiMjdkOTBhMTYzNDIyZWM3NDMzMDY1OGQ2MjEzOCByZWxlYXNlMzEtbWFpbnQKKzc0Mzk0IDEyZmVjNzNjYjhlNTNkOTYwOTFhM2MzNGJkZmIxMjFhZmI0OGYxNzEgcmVsZWFzZTMxLW1haW50Cis3NDM5NSA2ZTJiYTIzNzY4MzNiNmJmMWM4NWJmYTZkNDdjYmFlZGQ0Mzg0ODMyIHJlbGVhc2UzMS1tYWludAorNzQzOTYgN2U1MTQxNzA0NmFiODcxMGI4MDBmMmMxYjdjOWYzMjA2ZWQ5M2ZmNSByZWxlYXNlMzEtbWFpbnQKKzc0Mzk3IGZmNmVlYTAxN2E3ZjQ2NDE4NDJiMWZmMjg5ZTVlZTkzMjY2NTVhYzAgcmVsZWFzZTMxLW1haW50Cis3NDM5OCA1NDE0ZmY3Mzg5ZWU5ODFlZDcyZTgwNDgzMTY1YmI0ZTBjM2ZkNWNjIHB5M2sKKzc0Mzk5IDg3ZmRmMjc5NWE3Y2Q0NDM2ODQzYWUxZGQ0MDczMjY0YzAzYWIyNTEgcmVsZWFzZTMxLW1haW50Cis3NDQwMCA5ZDQwNTg2YTZhZmNkZTAxZWZjZmI2ZmE5NTYzNGNjMDBkYWNjZWY1IHJlbGVhc2UzMS1tYWludAorNzQ0MDEgZjcyNDMxOTlkMGIxY2NiMTJkZWFmNjU4ZDVkZTFiMTVjZjM3OTIyMiByZWxlYXNlMzEtbWFpbnQKKzc0NDAyIDRkMzhlNTFlN2NkYzlhOTc5NDNmNjc4NTNmYzI5ZTExMGQxOTNiN2QgcmVsZWFzZTMxLW1haW50Cis3NDQwMyAwMDUwYjU3MTFmYWE2YjdiOGViYWVlZWM3ZDc2MWRmNWQzY2E0ODJkIHB5M2sKKzc0NDA0IGUwNTMyMmVmY2E4NTdhOWY1MWMwYTRjNTgxZTZhMGMyOGZkYjYzMzggbGVnYWN5LXRydW5rCis3NDQwNSBiZTM0NTMxYzZkMGI3NDlmODU5OWY4NWVkMDM0ZGU4ZWNkMGEzMjk0IHB5M2sKKzc0NDA2IDU2ZThjMjJkZjcxZjMxNjY5NzY1ZDIyYzQzOTJkMGVkZWM2OGU2NjYgcmVsZWFzZTMxLW1haW50Cis3NDQwNyA5MWU0MGViNDE5NTZhMDQ1ZDEwMjEyNzFmZTVjZjI0ZjUyMTdkMTdmIHJlbGVhc2UzMS1tYWludAorNzQ0MDggYTI2N2M2MDQ0NjVmMzc0ZDYzODk0Yjk1Nzg1MTkzNjRiNDIyYzU4ZSByZWxlYXNlMzEtbWFpbnQKKzc0NDA5IDAxNDg0MTdlMTMwMWQ4OTNkOGQ0NTEzZTUxNzBjMmUzMjk0ZDlkYmQgcmVsZWFzZTMxLW1haW50Cis3NDQxMCBiZTM0M2FmNDkwOTk5NTM1NTIyNTA2ZWMzZDQzZTQyZjliZGU5NjEzIHJlbGVhc2UzMS1tYWludAorNzQ0MTEgYWYxMTBhNDhkMTU0N2ZhYTZlNGRlMjUwZTVhNjgxOWRhNjg3MDRiZSBsZWdhY3ktdHJ1bmsKKzc0NDEyIDc4NWVjMzQ0NzZiYWZhNTg1NjZlNzc2NzQzZThhOTlmZjE0Nzg3YWMgcHkzaworNzQ0MTMgZTNkNTEzMTliOWQwZWM4MzdjYzEzNzZkYzU3MTk4MGZjZDc0YTY4MCByZWxlYXNlMzEtbWFpbnQKKzc0NDE0IDEyMjRhYTNmYjZhMGQ0Njc2ODFhY2IwYWI3ZGQ3MGRmNzNjZDIzYjYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDE1IDdjOGY0ODExNjBjMjJlMDcxMmI1ZWNhMzFmZThmMTk4MGRjNWI1NWQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDE3IGYyYTEyZjUyNTllN2VkZDIyM2M3NTBlMDVlZjU2MTYyZDZhNTM0NWUgcmVsZWFzZTMxLW1haW50Cis3NDQxOCBmOGRiNDkzZGQ4NGZiODMwZDlhY2I0MGNiMzQ0YWU2MGZmMjllM2I5IHJlbGVhc2UzMS1tYWludAorNzQ0MjAgZmFmOGExMDA5OTBkNjZjZDUxMDFkNDg3YmJmOWFlODA3ZDAyZTIzYiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MjEgM2EzNWUzM2IwNzFiZDRlZDI3NmExYTBkOWQwMDU2MDJmM2EyYjQxZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MjIgOWJjOTU4OGViNjRjMTkxMDY4MjNhZmE1ZjdmMjY2OWFiY2FjNWI4YiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MjMgMzgxYzZmOWI3NGFlYWU2Y2MzZmE1ZGZhYTliNjhjMDkzY2VlNDVmMCByZWxlYXNlMzEtbWFpbnQKKzc0NDI0IDQ5NjI5MTAzNzU4MjA5NjYyZWIzOTYzNzg0YzFjYzA0NTVlZjgxODQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDI1IGZiNTg1N2Y5MDNmZTkzNzVhYmRhMzNhYzA1NDc3OWQxY2E4M2VlNGMgcmVsZWFzZTMxLW1haW50Cis3NDQyNiBmYmY4Yjc5MWNlODExYjQ5MDNjNDIwYjU1Zjg4Y2Q1MDk0MjYyZjgyIGxlZ2FjeS10cnVuaworNzQ0MjcgMzVlZmIxMDU0ZWM2Y2VjYTcyMDE3YTU4NzI2M2NiNmE5MjU3MzQwYiByZWxlYXNlMzEtbWFpbnQKKzc0NDI4IGExYWQxOTJmOGRmNTY0MzczOTBjMmFkODhjZDEzMmQ5NjBiMDYyMGQgcmVsZWFzZTMxLW1haW50Cis3NDQyOSA5NzUyMmUyN2IwNWQwYzgyMzhkZDc0ZjU1N2Y5NGMzNWE2YjI2Y2Q1IGxlZ2FjeS10cnVuaworNzQ0MzAgOWE2YmViMWE5Mzk3NTczZGRmOWQ4ZDk4YmQxNjRhYzVjYzI0ODg2MSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzEgZWVhZmQ4NzE2NDEwYTZjNGRjM2I3OThhMzNlM2Q1NzRhMzY3ZTA0NSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzIgNmFjMTQ3OGQ5YjBlNjYxOThmOWZjNjc5NzUyMGI5YWY5NTU5MmZkYiByZWxlYXNlMjYtbWFpbnQKKzc0NDMzIDUxNTJiNTM2NjEyZTQ4NzhmZDAwZDU3NjdhNWE3MjFhNDc3OGMzMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM0IDAxZGI0MTBmMmYyMDdmZjAwNWU1OWE3YjkzZDNiYjEwMjM4ZDFhN2YgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM1IDg5OTI3ZjVlODNkNmY3OTQ1MTI2OTI1NmEzNWM1ZDE5YzI5NzhjYTkgcHkzaworNzQ0MzYgZDVhNjJkZDkwNzg5ODg3ODAzYjk1MDE3MGNkZDM2Nzg0Njg2NWMyZiByZWxlYXNlMzEtbWFpbnQKKzc0NDM3IGE1ZTZmM2ZmMmUyZjY0Nzk5ZjhjMDZjMGRiOGYxN2UyN2ZiNDlkMDAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM4IDQ5YTQyODY2OTc4OGQ2NzhkNTI2YzY2N2Y2ZmYzOWE2NjYxNmI2NjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM5IDQyNzU5YTZlZTk4YWM1ZDM2YWMyMDZkMTA4YzUxMDMyOTNkMzhhZjcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDQwIDFmYzg5MDE0YmQ4M2RiMDhiNWU1YTliZThkNzA4NWNiYjFiMDAxYzkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDQxIGZlMjg2NDVhNjEyMjZmODA1NTIxODM3ZjU4MjRiOGNmMmQ3NDZlNjcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDQyIGJlYjEyYmI3NzkxYmY3NzkzM2EyNzdmMjc0ZGU3NDc4OTNkOTZlNTkgcmVsZWFzZTI2LW1haW50Cis3NDQ0MyAxZmI3ZTJmN2YwYmI0ZTI0Y2JlYThhM2Q2Mzc1MzA3YmU5NjY4NWFkIHB5M2sKKzc0NDQ0IDVlYTNkNDY3NTY0YTUyYTFlOTE4M2I2ZWNkYjI4YjZjNTAyYmQwMDYgcmVsZWFzZTMxLW1haW50Cis3NDQ0NSA1MWU1YTQxNGIzYzI0N2YyZjc1YTUzODBkYTFmYmM4OTAyYTE1Y2M1IGxlZ2FjeS10cnVuaworNzQ0NDYgYTBmODBkYzA5ZGZlMjI4OWY4YzQ1MjE2M2Q2N2FmMjhhMmQ3OTE3ZSBsZWdhY3ktdHJ1bmsKKzc0NDQ3IGM2ZDMyNzY2ZTk0YzgwYjQ2YTJjNjgzZDY2ZjI2NjRkZjdmMTZjODkgbGVnYWN5LXRydW5rCis3NDQ0OCBiN2E1NzFkNGFhYTdlMWY0YTRiYjZmN2E1MDc4MjhkYWZhNzk5M2YxIGxlZ2FjeS10cnVuaworNzQ0NDkgYWU4MTdmYTRlNjA1NjZlYWNiNDI4NjdmOTQyZjliYmNlMjcxM2ExZSBsZWdhY3ktdHJ1bmsKKzc0NDUwIGU0YTgzZTkxNTIxYTM2OWRjOGQ4Mjc2M2IzNWI0ODg4YzEzODAwMTcgcHkzaworNzQ0NTEgZDcyNGNhOGM1ODIzNDdiM2ExMDQwN2ZkNDZjNTJlZjJiN2RkYjMxNCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTIgNDFiMDFiYjkwNmUzOTY5Y2RmYWFjNjUyMGVhNThhNGFlZDRiZGVmOCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTMgZDcxNDBiYmM2NDczYmU0OWI3YjYyOTgxNmU2Zjk5YTY3ODIzYTU0OSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTQgZDQ0ZTNhYTQyYTViYzc4MTcyNjM3ZmFjNjg1NjBiNDY4MzA4OTVlMCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTUgMDAyMDg3MTg3YjJmZjY3MGZjMDcxMzY3NjBhYjBkOTM3YTRkNDgzNCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTYgZjkxYzFkMjg4MzQzNDg5NTY2ZGFhN2Q3YWRlNWQyZDI2Y2VlNjgyYiByZWxlYXNlMjYtbWFpbnQKKzc0NDU3IDExM2MwYjg2ZmQ3NDlhN2ZjYmY4NmFjOTljNjA2MThjNjRmZTlmNGUgbGVnYWN5LXRydW5rCis3NDQ1OCBiYzFjNDAzMDU0ZTFjNzdmYTcyMGVhNzg5NmNkOTdhMzc4NDU3MmY5IHJlbGVhc2UyNi1tYWludAorNzQ0NTkgMzA5NjNjZmI2OWZkODIwYmI4MGQ2ZDNlNWY4YjQ0NGQyNzg1MmVlOSBweTNrCis3NDQ2MCA0YzUxYzRiZmZiMjFhNzBmOTFlN2Y5MTBlMzE5ZGIwYjczNjhhZmEwIHJlbGVhc2UzMS1tYWludAorNzQ0NjEgNjQzYzZjNzY4NGIxNjVjOGYyNjg5OGEwYjIyNDExZGEzOGRjMTMyNiBweTNrCis3NDQ2MiAyMjc3ZWJjZWRhNDNhNmMxODVhM2VkYTk4MTAxN2ZiOGZlNzA1NDQ5IHJlbGVhc2UyNi1tYWludAorNzQ0NjMgMTM3N2E4YzI2NzkyMjU3NjQxMWUzZWI5ZWEzM2Q5NjkzZDQ5NTExZSBsZWdhY3ktdHJ1bmsKKzc0NDY0IDFlMjg3NzAyNjQzNWViZGIzYWVjMmRjYmFmY2ZkOWM3ZjZlZjAyNDMgbGVnYWN5LXRydW5rCis3NDQ2NSAwMDUzMDI4N2JkYjUxMTMxZTk1NjZlNmU2MGQ5ZGVhY2EyYjViZDc4IGxlZ2FjeS10cnVuaworNzQ0NjYgMzg0MzM0ZDhiOTg3NWJlNjI4MTI5MGM5NGIyNWZkM2IwMTllMTBmMiBweTNrCis3NDQ2NyAwZmNmNDBhMTQwZTVlZGJjMDk3NjU1NmQzMjBiODRmNmM1OTcyNmJjIGxlZ2FjeS10cnVuaworNzQ0NjggMTlmYzBkMDVmYTdhNDliZDVkM2RlZTk4N2M0MGZjMmFkYTdhZTJkZiBweTNrCis3NDQ2OSBmYjdkNWVlOTA4YTUwMmE5NjUwYmJmZDdlNGVmY2VkZDkzMTZkMzM2IHB5M2sKKzc0NDcwIDZhYzJhNjRlODI2YmU0NTQ0ODYyZjIzOTFiZjMxOTRkZWM2ZWUwYTAgcmVsZWFzZTMxLW1haW50Cis3NDQ3MSAxMjI3ZTdjYzFkOWIxOGNkZTg4MjJiNDI1NWZlMjU3ODFmYzQ1YTA4IGxlZ2FjeS10cnVuaworNzQ0NzIgYzYzMGJmMDVjZTM4ZGZlMmU3MjA5MDU2NGE0YjY1MzM0NDI4YzY5YyBsZWdhY3ktdHJ1bmsKKzc0NDczIGJlYzM0MDVlMDczZjM0MmY5ODgxMmJmMDc2M2Q4MDUxN2U3ZGZjYTUgcHkzaworNzQ0NzQgNmFmYTViYmRjMzc1NGI2NDY1Zjg0ODI3ZThmMzlmNGQwMThiNWNkNCBweTNrCis3NDQ3NSBkN2UxZDM5NzhkZDYwMDUzYmU4ZjA3NTMyNTA2OTUwYmZlZjI5ZDllIGxlZ2FjeS10cnVuaworNzQ0NzYgZTUyMDA5ZTIyMDE3ZDUxYTQwY2RlOGViODAxODU2MDdjMzdhNzgzOCBweTNrCis3NDQ3NyA2ZGE2ZWRmYTYyOTZjMmJkMGE5ZmNlMjM3NWYyMDQ0YWJmNWVjYmY5IGxlZ2FjeS10cnVuaworNzQ0NzggNDk1ZWVmZjNiOWZmMGRiYmY5YzRmNDA5YzE4YTUzOWNjM2YxODdmOSBweTNrCis3NDQ3OSA3NDZmMTBlMDYyNGU5ZjNlNDc5Mjk4OTFlYmQ4NjU5YzQ4MzQ4NTNlIGxlZ2FjeS10cnVuaworNzQ0ODAgOGI5YzBmNTczYWIyOWM0MWM2YzVmZGNjYTgyYTFmZTBmZjUzNTVhZiByZWxlYXNlMzEtbWFpbnQKKzc0NDgxIDVlZjZiYzAwNTIwYWIwMThkODdhYTk3YjNlNzAzNzAxMzQyYmY4MTkgcmVsZWFzZTMxLW1haW50Cis3NDQ4MiBkYTIxYjQ4MGZmMDUyMzU1NmJjNzhlOTllZjc5MjEzMWRlNTc1MTYxIHB5M2sKKzc0NDgzIGRlZmZlNmFhNDNkMTE0ZThiZjVlZTEzOTBmOGQ4ZTkyMWQzNGM4MjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg0IDM0YzZmNmQyNjk3NmQzYTY5ZmU0NmZiYTljZTFlNzRkMzQwNDVjZDMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg1IDQyODYzMmE1OTBhZGFjZTNiODdhNDcwYWViNWUzMzYxYjg2Y2VhNmIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg2IDc4NzVkZWFjNDEwYzljM2JmNDA0MWRlN2Q5ZGZjYmFmODdlZDA0YTYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg3IGY2ZTE3YWViOTJhYmM4OGUwZDU0YmNlMzhkMTZjODY1MGI5ZDkzMDUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg4IDQyYjI1Njc5NGU2YzUxMjE5YmZmZGYxZjEwNGIyMGRkYWRiY2U1OWQgbGVnYWN5LXRydW5rCis3NDQ4OSA0ZDA4ODE4YjZjNGExZDg4NzNiMGQ4M2FkNmJjYjNmMjRhMTUxZTU5IHB5M2sKKzc0NDkwIDIxN2JjYjg2MDNhYWQxNWM5Mzc1NDhmNWY3OGQ0MWNiNjE1ZTI3MWIgbGVnYWN5LXRydW5rCis3NDQ5MSAwYjA3YzAzYTVmM2MzNjg0NDAxNTA3NTA0MWYwYTBiNGQxMGExYWRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ5MiA0ZWFjMTMyZmFjOTRiODRmMmJiNDEzMzdhYmEyZmI5YmVmNDdiNGU1IGxlZ2FjeS10cnVuaworNzQ0OTMgMzg0Zjk2NWUxMmNkZjFkODg5YWFmMGU5ODI0MjA3YjUwOWEzMzhhOCBsZWdhY3ktdHJ1bmsKKzc0NDk0IDZiMDg4ZGNmMjVmOGM4OWJhYTg4ZDkwMTZiOGRlOGVmZDUxOTU0MzkgcHkzaworNzQ0OTUgMmFhZjdkMTQxYmQwZmVkOTZmOWEyN2JkOTc4NGI2OTg3MDg2NDYzMSBsZWdhY3ktdHJ1bmsKKzc0NDk2IDI4MjFlNWU3NmU4MjkxYzI3OGZhOGQ5ZDA1ZjljZDZkZTE4ZmFlOTAgcHkzaworNzQ0OTcgYjU2M2FiMDE3MWQ5MjM4YjFkYzhlNWJkOTUzOGFhMDMyNWJjYzkyZSByZWxlYXNlMjYtbWFpbnQKKzc0NDk4IGUzYTBkNGIwZDdhYTAyMDkyYzM3YzI5NDQzNzU0ZWRiOTk5YTc1ZTcgcmVsZWFzZTI2LW1haW50Cis3NDQ5OSBjODdhYWNjYzcwYjYxODAwMDI3ZjI5ZmFlZjNhYjhiOTA1NDMzOTAyIHJlbGVhc2UzMS1tYWludAorNzQ1MDAgZDQyOGJjMTg0ZTFmYmRjMDlhYzg0OGFjMDI3OWMwZmQ3NzQyZTAxNCByZWxlYXNlMzEtbWFpbnQKKzc0NTAxIGViMTAwOTkzNjZlYTUyMjYwNDBhNjQwYWQ5YTRhZWNiYWI0ZWUyMjYgbGVnYWN5LXRydW5rCis3NDUwMiAyNGM5NTNmM2Y4ZGFmMmM5NTk0N2JiODAzN2RiYmIwNDRhYzMwYzIzIHJlbGVhc2UyNi1tYWludAorNzQ1MDMgYWUyZjc1YWEzZmFhOTQ0NDFhZjkyYTY4ZjljMzYyYzZhZGMwNmNkOCBsZWdhY3ktdHJ1bmsKKzc0NTA0IDk1MTY2M2MwMzBiNDhjOGNhYmUyNzVjYmZmMDkxOWI2MzU4YTE4MzEgcHkzaworNzQ1MDUgM2JmMDNhZDRhNmEwNmY4NWY0NjY3NTIzOTZkNzBmZGM2YTFhZWU5YSByZWxlYXNlMjYtbWFpbnQKKzc0NTA2IGQ4NzQwNjQ2YTAzMWNjY2RhYzZiMzRkYzM3OTAzMzYyZjgyMDcyMjYgcmVsZWFzZTMxLW1haW50Cis3NDUwNyA3M2Y0MzJjZDgyZGU4YzcwZThlOTc4MzY0M2EzODczNDJhMWNkN2Q2IGxlZ2FjeS10cnVuaworNzQ1MDggYWQ5MzAwNjdjMTI0ZmJjY2NjOTJmNDNjNDU1YWMxM2NmZThhYjc2MCBsZWdhY3ktdHJ1bmsKKzc0NTA5IDM3ZjJmMzY3YWQ4YmJjNTc1YzU1NjY3MGZiMjcxZDMyOGU0MzRlODAgbGVnYWN5LXRydW5rCis3NDUxMCBjZDE4MWE2ZjRkZDczNzUxMWEyODA4MTk2ZGNhY2Y0YWU0MzYxYjA5IGxlZ2FjeS10cnVuaworNzQ1MTEgZjgwMTJmZGRhNmQzZGUwZTUxMTMyOTljZDlhZmRkZjI0ZGVjY2Q2OSBsZWdhY3ktdHJ1bmsKKzc0NTEyIGY3NDY2YWMxZGQ3MjVmN2Y4NWIzZmI0ODNiZTNjMTEwYTE5NDM3NmIgcHkzaworNzQ1MTMgMmNmYmRlOGNiZjg4NjE4NzM1MDcxYTU0N2VkNmJmYzViZDA0Y2UxZSBsZWdhY3ktdHJ1bmsKKzc0NTE0IDAzMWU0MzE2NGI3NjhkMTllNzU2ODRmNGUyOGNlOWJjOWNiMzU4ZmEgcmVsZWFzZTI2LW1haW50Cis3NDUxNSBlMDFhMTk5MDcxNzExMTg3NWM0NjMxOTAzNjA3NzkwMzMxOGZiZDQ4IHJlbGVhc2UzMC1tYWludAorNzQ1MTYgZjVlNzAxMWZiZmYxMjA1ZjliNDVlYjg3NTU2ODcxNzEzZTgxZTY1MCByZWxlYXNlMzEtbWFpbnQKKzc0NTE3IDY1MGRmMGVjMGMxMmY2ZjE4YjVhMjBiOWYzYTliOTZiMWM5ODc0OWUgbGVnYWN5LXRydW5rCis3NDUxOCAzYWJiZDcyMDliZTg1MDA1ZGJjM2NlYTQ3MjEyNWNlODA0ZDVlZTllIHB5M2sKKzc0NTE5IGNkMGM4YWM5Y2I0OTQzMTdmNjIwYmMxN2VjNmE0ZTlkM2ZmMGQ2YzkgbGVnYWN5LXRydW5rCis3NDUyMSBmZWZkOWViN2E4MjJkY2ZlMjhiYzYxNjVkYmI5YTBhOGVlZjQ4ZWJlIHB5M2sKKzc0NTIyIGM3Y2QyN2Y2NjVkMWRkYzc3MmRjMGQ0M2IxOGFjZWI4ZjBhMTg0MTcgbGVnYWN5LXRydW5rCis3NDUyMyBlNDcxZDZkMzI3MjRhYTZlMjMwNTFmZjk1NjE2MzBjYjI4Y2E0YWE0IGxlZ2FjeS10cnVuaworNzQ1MjQgZTIxYzRjNTI3ZTY2MWVhMWE5NGIwMzBlZTgzYjJmMDU2YzcwOTVkZSBsZWdhY3ktdHJ1bmsKKzc0NTI2IDk3NDU1M2ZiNTlkY2IzM2NiNTI4MGY2NGZjOGFmNjIyMGY1NjkyOTggbGVnYWN5LXRydW5rCis3NDUyNyAwMmQ0MDg5ZjMxZGRjY2M3N2UxYjllMjUwNDBiZTQ0ODJiYjZkYTgwIHJlbGVhc2UyNi1tYWludAorNzQ1MjggMzhiOTdjM2U5OGJkYWE1NmFhODdiZDUwZDE3NWVjYzhmNDUxMjYwNSBweTNrCis3NDUyOSA4NmVmNzRjNGFkOTc3YjMzMDUyMjY3M2ZiYjNhODk0YjVlNDE0NmRmIHB5M2sKKzc0NTMwIDBlNTVmY2NiMTllYzU1ZDMwM2RmNDJkZjRmNDZmYmIwMWFiODYzMzYgcmVsZWFzZTMxLW1haW50Cis3NDUzMSA0ODcxZjgxZDcxMzIwMDRjM2Y4ZDMzOGExY2EwYmUzZDBjODU4MTU2IGxlZ2FjeS10cnVuaworNzQ1MzIgNTk0ZTE5N2VkNjNkNTJlZmM5OWFkNjdjY2JjOGE4ZGU2YzRlN2I4ZCBweTNrCis3NDUzMyBmMzQwODc2MGQ0NmU1YzVhYTY5MmU4Y2ZkOTNlYTBmOTQ2MzczYzFkIGxlZ2FjeS10cnVuaworNzQ1MzQgYmMxNjcwOTJjOThjYjhlYzExNTk4OGVjMGFhYjdiMDhiMTJmM2Y2YyByZWxlYXNlMjYtbWFpbnQKKzc0NTM1IDEzZjE5ZmI5M2Y4ZWNkN2FiY2UyMjYwYzAxZmE1NjUzN2JkMjgzMGQgcHkzaworNzQ1MzYgYTg4OTQxZTJiZjI3M2QyOWNmODQ0YTBkMjk2MmNkYWJmMWY5YjhjNiByZWxlYXNlMzEtbWFpbnQKKzc0NTM3IDE1NDVjZjczNzJhZjk2ODE3NTM5MjBkMWFjNTJkZmU3OGY3OWZkZmMgbGVnYWN5LXRydW5rCis3NDUzOCA1ZDdmNjBiZmZlOGZjNWM2NDdiMDRlZTU0ZWJkY2ZlZDRhZDM5MDJiIHJlbGVhc2UyNi1tYWludAorNzQ1MzkgYzRkNTgxZTcwOWNhNTRhZjM1MTI2YmEwYTNlN2VhMTFkOTMzNGQ3OSByZWxlYXNlMjYtbWFpbnQKKzc0NTQwIGNmYTdhZTcxN2E5MGI2YzlmMWY1ZWFhOWIyYjU2N2NlMzVjMzY3NWUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NTQxIGM0MDNiNjZkOTJiMGZhMjNiYTkyOTM5YzY0MTk5YTc3MjRjYmI4MjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NTQyIDlhMDk2OWI2ZjhlNWU2MzI2ZDJiNWRkMzQzY2I2NWQ1ZGM2ZDI3M2EgbGVnYWN5LXRydW5rCis3NDU0MyBjNGQ4Y2JhZmQ4Yzg5MDYxZmI5MjRjZjhjYWM3OTllMWE1MDdkYmU2IGxlZ2FjeS10cnVuaworNzQ1NDQgNjc1YTNjMTgyNGY0MDU5MTA4YTEwNGU5NWZmYzYwMWUyZDE2ZDZjZCBsZWdhY3ktdHJ1bmsKKzc0NTQ1IDA5MTgzMTJhMmQ3YjlhYjE4MmExYjQ0NWI5OTUzZThjNDkzMDUyYjggbGVnYWN5LXRydW5rCis3NDU0NiBmZmNmYzk5MGU0Y2ExOWNhNzg3ZDRlNDY0NDJhYjZkYzUzYmM2ZjljIGxlZ2FjeS10cnVuaworNzQ1NDcgOTJlMzg1OGNjYTcwYWU2Y2E0YTY1N2EwNDJlYWNjNWE0ZTY1YjRkMiBsZWdhY3ktdHJ1bmsKKzc0NTQ4IGVjOGQyNWUwNTAwYTg4Yzc4MmQ2ZTAwNGEyMGZmNjFkMDVhOGQ1YTAgbGVnYWN5LXRydW5rCis3NDU0OSBkYjg2ZDNjYzFlNmI5MTVmMjhkN2ExNTE5MDYxNjJiNDlkOTFmMGMzIGxlZ2FjeS10cnVuaworNzQ1NTAgYjYwMTM0ZWU1ZWI0NWMzZmJlNjUxMjNhNDJhMmQ2ZTBmM2VkMDIwMCBsZWdhY3ktdHJ1bmsKKzc0NTUxIGY3NWYyNzliY2QzNDA0OWQ0MmM1MTE0MzIyNTFhZDkzNDQ4NTE4MGMgcHkzaworNzQ1NTIgZDkxYWZmMjA2ZGZkZTAzMGJlOTZhNWNhZDc0NzVmZDE1ZDA1OTIxZCByZWxlYXNlMzEtbWFpbnQKKzc0NTUzIGQwM2U1MjhlZjk0NmFhN2M0ZTkzNDdhMmZhMzZjZDA5Y2IxYzFjNDUgbGVnYWN5LXRydW5rCis3NDU1NCA0OGRmNDA3YjYwNjgyNzcwNWRiMmM4NmUxNzBhMDcyMDE0YjY5ZjYyIGxlZ2FjeS10cnVuaworNzQ1NTUgMTRjNWZhYjNlY2JmNDY2YzRlNjRjMWQ4ZTk2YzMwM2YyZDkwZTIwNSBsZWdhY3ktdHJ1bmsKKzc0NTU2IDgwMDU4ZGZlNDY5ZDljNzdlYmIyYTAzYWE1NWU1ZDBkMTY3YzJiNDIgbGVnYWN5LXRydW5rCis3NDU1OCBhZTAwYTNhODA0NzM5MzM4ODY5NTIxY2NiMTRlOWM5NGEwZDdkOThjIGxlZ2FjeS10cnVuaworNzQ1NTkgMGQ5YjU1NmE0Mzc4MDY5YjgyNGM0ZmQ4NGE0NWIwMWQ3MzM2ZWIyNCBweTNrCis3NDU2MCA3MzUzMjJhYTcxZDFhZTZlMjUxYTA5YWNiYzYxOTIxMzhiMGFiNmQ2IHB5M2sKKzc0NTYxIGI2NWViZWQwNmViMDQ1OWRhMTc0ZDU3MmYzMTBkNzRiYWVhZGE3MTEgcHkzaworNzQ1NjIgYjg5ZjU4MmVlNzhhOGI4MGE0NTY1ZDUyZjIzZWZhMTY3Yzk5MWJhZiBweTNrCis3NDU2MyBlMjEzMDNjYWMxMjA1YzQ1OTNkMjY5ZTgyMDUyOTk1ZmY3ZGQ0OGIwIHB5M2sKKzc0NTY0IGYyOWI1OWE0OTI0NjFlMzFlMWM3MzQwMmY2ODUxNDMxMjMyMWFhMzAgbGVnYWN5LXRydW5rCis3NDU2NSAxZjFiNGMwM2U4OTJhYTA0NTg4ZGI1YWI5MDVmM2I5MmI2NzUyNDZlIHJlbGVhc2UyNi1tYWludAorNzQ1NjYgZDIxMDc3ZTYzOWZkZDFiZDRlYWYwNWJhMDNhNTM5OWE3MThjY2JhMiBweTNrCis3NDU2NyAwOTRhNmYxNTg2NDE3NDIwMWFhYTczNzg0NGMxOWJiOGZhZjI5N2QyIHJlbGVhc2UzMS1tYWludAorNzQ1NjkgYjZiZjJhNWY0OWRkZGQwYjc3ZWY5ZDNkMDMxMDI2ZDIzY2ZlN2E1YSBsZWdhY3ktdHJ1bmsKKzc0NTcwIDAyOTUwZDU4MDgwOGJhMWVlYzU1NmU1MDM0MTAyNjlkNGQwOTMxZTQgbGVnYWN5LXRydW5rCis3NDU3MSA1ZjllMTMwNjZkMzY2NzRhMjM2MjYyODYxOGIzMDEzMDc3Mjk2MWRmIGxlZ2FjeS10cnVuaworNzQ1NzIgMzNjZTRjNWJjMmU1NjBjY2JhNDQ2ZTJmNWExYWU4NGFmMjU3MzEyMSByZWxlYXNlMjYtbWFpbnQKKzc0NTczIDlhNzhlM2Q5MDYxNzFjNzIxOGExYTE2ZGY5NzJhMzA1MzZiODNmYjMgcHkzaworNzQ1NzQgNDc0YThlMDZlOTY2MWEwMmE1MmQ5Yjc4MDQ4NDRjNzEwZGMwZTM0NyByZWxlYXNlMzEtbWFpbnQKKzc0NTc1IDYwNmU5N2NhZWI3NzM2ZjViYWFlZGNmNWRmMWZhY2UxMjczMmQ5ODUgbGVnYWN5LXRydW5rCis3NDU3NiBiZmIyMzM3NDUxZTlhYzViZWQxZDc2YmI2NzhmOTYzNjExYTUyOTQ1IHJlbGVhc2UyNi1tYWludAorNzQ1NzcgNmRlY2E3M2JkNTEyZGZjYzM4YzE0NWI0NjFhNjM5Y2RiM2E5MzE2ZSBweTNrCis3NDU3OCAwNDhhOTEzODFiZDgwYWUxYzBjOWExZGZmZDEzMjM5OTFjZTcyMzJmIGxlZ2FjeS10cnVuaworNzQ1NzkgN2RlMjA3ZGQ0NzM5OTI2NDkxNDYyNTc3NDY4MTFiMTdjNzIyN2Y4MSByZWxlYXNlMjYtbWFpbnQKKzc0NTgwIGE0ZWJhYjg0NWY3MjQxZWY0MjNjNzQzNDUyNjQ1NTcyMWEwOWE1ZTggcHkzaworNzQ1ODEgZDQwMzdmYjg1NmQyMTA4YWFlODlmOWY0MDJmODYxZTQzZGNhOGZlZCBsZWdhY3ktdHJ1bmsKKzc0NTgyIDFiOTEyNzg3MTcyMzIwNTg5NTBhN2ZhYWExYjE4NjcwNDEwZDc4ZjggcHkzaworNzQ1ODMgZTliYWEyZGU4YmI0ZWNkYmIwMDU1YzNlNTAzZDlkMWI4YmUyMTdmZSByZWxlYXNlMzEtbWFpbnQKKzc0NTg0IGU0YzJjYmQzYmY5MzgzM2NmMDdjYmUxMTllYzIyNmQzZGY2ZDc0OTMgcHkzaworNzQ1ODUgNjhjOTJlZDhkOTYwNGQzMGE1MzIwNzFjYWYxNzhmMmY4NmRlMzdjOSBweTNrCis3NDU4NiBkODI4MDM2NGM1ODE0Zjg0MTVlNWEzNGE1ZGFjN2JiNzBlMGU3MzhlIHJlbGVhc2UzMS1tYWludAorNzQ1ODcgMWY3NzJmOGZlYzkyMmJmNTQ3YzZiOWRmNWY5ZTM2NDlkMzA5MDc1NiBweTNrCis3NDU4OCA2ZmE4YTgxMThkZjBjM2ZkYmNkZDdmNGI2YjFjMDIwMDkxOWU1OTdmIGxlZ2FjeS10cnVuaworNzQ1ODkgYWVkYzRlYzJmZTI0MDA3Nzc3MWIxMWExZmNhN2EzMjBjY2JjZmZiMCBweTNrCis3NDU5MCBiNGZjOGNiZmUxZWU5MWYwYzRlZjg4NTcyNmI3YTFiODY0OTkwZGFlIGxlZ2FjeS10cnVuaworNzQ1OTEgMDgwOTBiNWU5NmMyZmNlNzcyMGU3NjNkZTYyNDM4YTVhYmIxZTFkNiBweTNrCis3NDU5MiA2OTYxNmUyMjg3MjhlM2Q5Y2E1ZWE3Mjg2N2NiNTczMWVmZjZjZjM4IHB5M2sKKzc0NTkzIDU4ZTYzMTk3ZDRlYWIzMTE4ZGZiODlkM2Q1MTY4Y2I1MDI3ODQyMjkgcHkzaworNzQ1OTQgMzY4YmZjMThhN2ExMzlhYjk1ZDY2YWUyZmQwNWM1ZmJhNTU0YWU4YyBweTNrCis3NDU5NSBiZjUwMGQ4ODU3OTY2YWFmNTg3YjNhMmM1M2Q2N2JjY2E3ODQ2YmU5IHB5M2sKKzc0NTk2IDU2MDAwOGQwOThkZGM3MTllMjAzMzFjNGVkNjNhMjk0MTQyMWI3MjcgcHkzaworNzQ1OTcgODZmYTQzYzZkNTdjNjYxZmI4YzQwZWE1NjQ5ZmNhYjY3YzQzNzc4MSBweTNrCis3NDU5OCA4MDFhYTUyYjEyMTcwNTk4Zjc4OGZjNGVjMzAwODI0ZmFiNTExY2IzIHB5M2sKKzc0NTk5IDk5ZGMyMmVmMWRmMDQ4ODBiOGJmZjNhYTU2OTE0MDU3YjdmMzA2NWIgcHkzaworNzQ2MDAgMzliY2JmMzE2ZGJhNjdiNzkwMDdmM2Q0MjcxZGExNDdjNjhmM2E3NCByZWxlYXNlMjYtbWFpbnQKKzc0NjAxIDk0MjQ5ZDE0MjVhM2ZkYjY3NGNhMWRjM2VkYzI1NjM3MGY5YzIyMjQgcHkzaworNzQ2MDIgMDI3MDA3YjQzZjE2NTYwZGYyYjg0MzExZGE3OTNiMGM3NzQ1OWE0NSBweTNrCis3NDYwMyA3OGI4NmY4YmY1YzQ1OWMxNzVkZWFmODVmYzRlNjNkM2ZmYTJhOTAwIGxlZ2FjeS10cnVuaworNzQ2MDQgNDNhNjY2NzY4ZjQ3NGI1NjFmYzY0YmZhZjcyZWJjZWYzMzY4NTliMCBsZWdhY3ktdHJ1bmsKKzc0NjA1IDM1YTE2MjNjMTAyMzkwODhiMDI2Yzk1MTYxOTlhMDRiZDIwMjYzMDUgcHkzaworNzQ2MDYgZTgxNDUzYmIwNzg5M2Y3ZTY0YTY0OTY0ZjE4NTI1MDNiZjNhMDlmMyByZWxlYXNlMzEtbWFpbnQKKzc0NjA3IDA1YWQ5ZWM2MzA4Nzc0OTM2Mzk5Njg4ZGZhMTIyM2QxNjE4NzVkNjMgcmVsZWFzZTI2LW1haW50Cis3NDYwOCBhY2YyMTViYmU3MDJlMDU1NzBkNGNjMmNjM2Q0ODc4ZGUzZjc3MjA5IGxlZ2FjeS10cnVuaworNzQ2MDkgMTFiNDU1MzVhMWIzZTYxOWNlNmRiN2ZhYWYyNjk4ZDlmMjNiODVkMiBweTNrCis3NDYxMSA4NDk5MjhkNzVkNmUzOTg4ZTFjODVjOWFiNmI0Njc3NDljZTRkZDM2IHB5M2sKKzc0NjEzIDA3YzIzODA2Y2NjNmMyZWRiZTA2Y2I0MjkzZjdmMWU5NTU2Yzg3YWUgcHkzaworNzQ2MTQgYmE1YjI2ODNjMDY0MGM2MDEzMmI1ODlmNGUxNTBkZDg3NDA5YWMzZiBsZWdhY3ktdHJ1bmsKKzc0NjE1IGU1YjQ2M2E2MWVlMjY5ZWE4Y2YwOTQzNjQ3MjIwZDkzNmE5NzYxMGYgcHkzaworNzQ2MTYgZWQ3ZGJjOTIyZDA1YzlmNDVlMTdmNzA5Nzg3ODMxYTY3MzgzN2I3OSBsZWdhY3ktdHJ1bmsKKzc0NjE3IGUxNTdjZWI1NGE0MzhiMTE2NTk4ZTk0ZmRhNDE0YWNiY2QyOGE0M2IgbGVnYWN5LXRydW5rCis3NDYxOCBiNzRhN2EzZTQxYzU3MmRmMzk4MDcyZjVmZjQ5ZTU4MWM2MTI3ODExIGxlZ2FjeS10cnVuaworNzQ2MTkgZDUxMmNiYjg1YWUwMDFkMzk2YzhkOWRkNDY1MWJhYzc2NjM3MjhlYyBweTNrCis3NDYyMCA4MThiYTg5ODUyODEwNDM1ZTE2ODM1OTI0MWQyMWZiY2UzMzFlMDI1IHB5M2sKKzc0NjIxIDY2ZjQ4YmM5NDgxNDg3NTFiYWE3ODM1NWZhNzYyMDAzOGUyYTE4MzggbGVnYWN5LXRydW5rCis3NDYyMiBhYzc1NWM1NjYxMzZkNTEzMDc2MTMyZmNiMzA4YWRlNWE2OThjNTZiIHB5M2sKKzc0NjIzIDAwODg4NDRkMDEwOWE0ZjdiNzNmN2U3MjliYWM5NGI3YmRlZmNjY2EgcHkzaworNzQ2MjQgYWZiYjJiMmZmNmY3ODEwZDk1ZWE3NDQ4YWRmMTJkNzhhNTk5MTU4YSByZWxlYXNlMzEtbWFpbnQKKzc0NjI1IDVkMmI2NmUwMTk2OGEzZmFhZTNmMWEyNDViNzQzN2YyMGZjMThjN2EgbGVnYWN5LXRydW5rCis3NDYyNyBmZDhhNTg5MDA4YWMyMGU0NTE4NzVlMTU4ZTk5ODg3MzM1ODQ2NGQ1IHB5M2sKKzc0NjI4IGE0N2FhMTEwZmNhY2Y4NGFlZDQ0ZDI4OWZmMjI2NWEzNzk5NmM0MzcgcHkzaworNzQ2MjkgNmI4MmJhMzA0YTdlZGU4NzZhMGI3N2VhN2ZlYzNlMjBkYTFiM2FjNSBweTNrCis3NDYzMCAxMDZlZTRlYjU5NzA1ZGNlZmYzZmI0YmM0ZTIyZTk1YWJlYWE4OTkyIHB5M2sKKzc0NjMxIDlmZmE4Zjg4Nzc1MDk0ODdlZTI1OGEyZGNjZGUyZWY5NGJmNGQ5N2EgbGVnYWN5LXRydW5rCis3NDYzMiBlMGNlZjAyMzMwMjAzZTQ2YjIxODE5NjA1ZmQ2MWI0NjNhYmRiMGYyIGxlZ2FjeS10cnVuaworNzQ2MzMgYmI5MDA1MWI0MzRjMDNlZTczM2JmYmJiOTZkZjA4ZjY4NWE1YTllYSBsZWdhY3ktdHJ1bmsKKzc0NjM0IDYzNzFlMmQwZGVhMDA5MTZmOGFmODVkYTFkNjc0ZWI4MjlmMjA4Y2UgcHkzaworNzQ2MzUgZDU1YzlhMDYzMjU4YWU3OTNiNjQ2NzgzNzFkMjQ0NDVlZTJhMzFkZiBsZWdhY3ktdHJ1bmsKKzc0NjM2IGViNjczYTQwMWI5ZDU1MDg2MWI1MDJhZjQyYTkxYzYwNDU2ZmZiNTIgbGVnYWN5LXRydW5rCis3NDYzNyA5NWU1NzM4Y2IzMDk4MTgxOGE1YmM4M2ZiZGU3YzU0OGE4YzA0N2Q2IGxlZ2FjeS10cnVuaworNzQ2MzggNzZhZWJjNWVhNDVjYmFkMzYxNWRmNWZkMDBhMWZkZDQ0M2VhYzdmMyBweTNrCis3NDYzOSAzYjllNzUzMTFlNDMwYTM2NmY5OWI4MGY3YjlmOWJkMmQ5NmJkNDM4IHB5M2sKKzc0NjQwIGNlN2UwMDM4OTk2ZjRiNGY4MzlkOWM1YjQ5MDgwZjZiOWQ4NTVjYmYgbGVnYWN5LXRydW5rCis3NDY0MSAxZjAzZjI5MjBjNjE3MWU4NzU1ODkxNTVlNGMxMWEyYWU5Yjc5YTRmIHB5M2sKKzc0NjQyIDc3YWI5M2NhMDY1ZTM2N2FmMWYxNDkxOTVlN2M5NjgwNjk0MWRhOGYgcmVsZWFzZTMxLW1haW50Cis3NDY0MyA3ZDM5ZTIxM2I3NTYzNjdmOGExYzgyYWQyNzcwYzM3MGY3ZTU2M2IzIGxlZ2FjeS10cnVuaworNzQ2NDQgNjFkYmMxZDFiODA0ZDYyODRmNmZiNDIzZTExYzI1N2YwMzE3MGQwNSBsZWdhY3ktdHJ1bmsKKzc0NjQ1IGEwN2YzMGQ3ZDBmMWNlZjA4NTUxM2FhNGMyMTg2MmQ5ZjM4N2QwMjIgcHkzaworNzQ2NDYgMjViMTNmNzgyZmZlODQ4YTFkM2UwMjEzNTk0ZjM5N2MxMjIzNzQ5OSBweTNrCis3NDY0NyBjNTE3MjFkNjQ0NTFhNDkyYjJmYjhjZDg5NGQ2NTcxZmZiOGFiZDFhIGxlZ2FjeS10cnVuaworNzQ2NDggNjNiNmE5MWFkOWQ5N2RjODg4ZWQ5MGRhZTY0ZjY1MGEzOTQ5ZDVkNSBweTNrCis3NDY0OSAxN2U4M2YwMTY5ZTgxZmYxZGFlMzA4OWFjMWNlZWVmOWIwOWFkYzMxIHB5M2sKKzc0NjUwIDY3NThiZjIwMDJkYWI3YzE2N2I0YTc3OTJiOGIwZDk5MTdjYzM5MGQgbGVnYWN5LXRydW5rCis3NDY1MSA4YThlM2MxNjY4YTA5OTc0NDFlMzFhZGM3MWNjN2ZkMzg4NzNkOTgxIHB5M2sKKzc0NjUyIDE1MDFhMTM2MGNlNGU0ODU3NWJlNDdjNGYwNWY3ZmFkZmUxYmUwMDggbGVnYWN5LXRydW5rCis3NDY1MyAyMGJmYzFkMzU5ODljMDQ1MDk3NTY2OWQ2ZjE4YzMwMGYxOTQ2YzE3IGxlZ2FjeS10cnVuaworNzQ2NTQgYzIxNjViZTAwMTcxYTY4Mzk0M2I1YTRlYWZmZjUzMDdjMWU4YWY2OCBweTNrCis3NDY1NSA3N2RiMjVjNzUyNmExMjllNGMyY2UwNDk3MGQ5ZTZhZTZiYzU1OGE4IGxlZ2FjeS10cnVuaworNzQ2NTYgZTg0NDE4NTA3OTBmODZkZDgxMmY0YTMyMGQ3NGNhNjFkYjljNWI4ZCBsZWdhY3ktdHJ1bmsKKzc0NjU3IDc1ODM3Y2ZlOWZmYmY5YWZhZGNlNjk2NTM5NDA0M2Y2ZTMxNTI3ZWEgcmVsZWFzZTI2LW1haW50Cis3NDY1OCBkNTY3ZDk2M2NiMzcwNGE4YzM4ZDc4OWYxNTMwMzM2NWQ3N2EwMmEwIHB5M2sKKzc0NjU5IDBmNmRjMmU2ZjA5MWU0MTIyNzFkNTk0MDUyZTI3MDY0MjBlZDMyYjUgcHkzaworNzQ2NjAgM2IwYjM3MDE0YWFlYjE3OWM3MWI2ZTdiY2JmZTFiMTM1Njg2YjMzYyByZWxlYXNlMjYtbWFpbnQKKzc0NjYxIDRkZGMwNTk4ZGY3OWY2MzA1YTcyNWEzMDNhOThhNDJlNGYzYzRkNzkgcHkzaworNzQ2NjIgMjY2ZDdkYzNkNjU1MTAzY2E0YTZiNmYwNDA3NWJhOGFkOTQxNmZlMSByZWxlYXNlMzEtbWFpbnQKKzc0NjYzIGZmYmI4ZmZmMzUyMGVmOGEwYjFmMTM4MTNlNDUwYjEzMjdjYTcxNjEgcmVsZWFzZTMxLW1haW50Cis3NDY2NCA2ZjdlNzE5MmZlYmIwZmQxOWE4MTYyMWUzOGQ0ZTAxN2FlOGM4YzRhIHB5M2sKKzc0NjY1IDc4MzcwNWIwNDI1ODBlMzEwMDU4OGRmNWUzYmViYjE5NmQxYTNjNjkgcmVsZWFzZTMxLW1haW50Cis3NDY2NiBkMTkxMTQ0OTIyODYwMGJhNmY5ZGMzOGIwYzI4MjVhYWExMTdiNTAyIGxlZ2FjeS10cnVuaworNzQ2NjcgMWQ0MzgxMmFhZGI2MTg4NzE3MDEyMGMwZWI2ODU5YzhmNmMyYjRkZSBsZWdhY3ktdHJ1bmsKKzc0NjY4IDNjN2M5YjgxZTM2MTQ0NDUxZGFlNDc0MmNmN2E3YjdkNGJiMTczN2MgcmVsZWFzZTI2LW1haW50Cis3NDY2OSA2MjMxNDdhMmI1YjFhYjQzNzdjYzE3Y2UzYjE4NGRjYmMxZDJjMGI3IHB5M2sKKzc0NjcwIGRjNjJkZDMzMjZlZDBiZTIzZjIwNjc5MGE2NGNkYzMyM2Y5ZDUyOTcgcmVsZWFzZTMxLW1haW50Cis3NDY3MSA5MDY0OTBhYjZhZmZiNGVlZGRjMzljOTUyZDUzM2Y3M2Y3ZDg4NGVlIGxlZ2FjeS10cnVuaworNzQ2NzIgMzQ0OTZiZWQ5MzY1ZjVkZDViYjk3OTllY2QwOTA3MmQ5MzM1NWViNSBsZWdhY3ktdHJ1bmsKKzc0NjczIDVkOTc2MWU0NDU1NTg3ZjVhNzMxODExYTI2Zjg4YThmZDM3ZTgxYjYgbGVnYWN5LXRydW5rCis3NDY3NCBkNjI3YjBmZjFkMTdlNWVlNGI4NjdhYTY2NzM0YjkyOTk2ZTUzOTYyIHJlbGVhc2UyNi1tYWludAorNzQ2NzUgMTk3YzJhZTUxY2M2MTJhOTU2ZDNhNGNlZDdmZWQ1NDUwY2MyMjc2OCBweTNrCis3NDY3NiAxZjRmMzQyYmZlMmU4MWRlNzhhOTM5ZDMzNDdmOTgwZWU0NzhhYjJjIHJlbGVhc2UzMS1tYWludAorNzQ2NzcgMjBiOWFmMWYwMGM4NzUzY2E4OGViYjcyYjAzMmI0YzI4Y2U5ZGFkMSBsZWdhY3ktdHJ1bmsKKzc0Njc4IDk1OTAwZGJkNWRkMzNmNTIxMjYxYTU1ZGE2ZWM1YzdkYTE5NzIxYjcgcmVsZWFzZTI2LW1haW50Cis3NDY3OSBhMTUyY2NjYTUzODk2MmVlZTQ4MjU1ZjU3N2JiYzJmNDkxMzZhZjE0IHB5M2sKKzc0NjgwIDRmMDk4ODBiZWJiYmE2Y2IzZDIzMTJhMzcxZThhYzUxODhhZThkMWQgcmVsZWFzZTMxLW1haW50Cis3NDY4MSA4OTliYmNiYWY5YTZlYTg1MTVjOGJmYjEyYTAxZDYwODljZGY5OTMwIHJlbGVhc2UyNi1tYWludAorNzQ2ODIgZGIxNWM3YWYwMTRmYTA4NzI1NTYzNjM5ZmZmMmExODE0ZjdhYjExZSBweTNrCis3NDY4MyAwYzQ5NGU1Nzg3ZGY2YmQwZDA5NzE1MzVkNmIyZjRkZmNjZWM1Y2QxIHJlbGVhc2UzMS1tYWludAorNzQ2ODQgMzRhN2E5MTU4MzcyM2I1OGY5MzkyMjMwYWQ2ZmMxNjk1NzRiZWI0NiBsZWdhY3ktdHJ1bmsKKzc0Njg1IDdlNzY5ZmRkZTQzOWZmYzgwNWQ0MTNjZWNiYTU5ZThiZWJkZjJjZTYgcmVsZWFzZTI2LW1haW50Cis3NDY4NiA5ZTdiNzgzMmZkNDUxMjc4YTdlZmM5NzIyODhiMWVjNTEyMWFiMzAyIHJlbGVhc2UyNi1tYWludAorNzQ2ODcgOTJmMTZjODc4ODlkYTBmNDJkZTNlYWJhNjZmYmYzZDBmZTIxY2M3OSBweTNrCis3NDY4OCA2NTcyZDJlZmM4YjI5YWFhZjI4MGQ4NGNkMzVhYzI3ZGU0NDBhNjA0IHJlbGVhc2UzMS1tYWludAorNzQ2ODkgYzY2NDU1YTQxNmVjN2JmZDkzNDAxMDJjODE3MWZmMTdmZmJiZThmZCBsZWdhY3ktdHJ1bmsKKzc0NjkwIDUzYzRlZmQxNzBjMDUxN2YxNjFhNWIwNzgzODZmNzkzMDMxMjZiZWYgcmVsZWFzZTI2LW1haW50Cis3NDY5MSA3NTAwMDk2YmYxYTA3ZWIwNjRjNTg4ZDg3YzI0Y2ZiMGZmNTY5ODQ0IHB5M2sKKzc0NjkyIDg2OTAxY2FlNmI2NDgzZjlhMmQ1NmVhM2VlMzQwNmE3NWIzMjc5NDUgcmVsZWFzZTMxLW1haW50Cis3NDY5MyBkMzBhM2Q1NzcxNjRlYmNkYTgyYWQyYmFmODY5MzA1MDA4OGE1ZjZkIGxlZ2FjeS10cnVuaworNzQ2OTQgYTcwZTcyZWZjMmFkNjljZGI5OGEzNmZkY2UyMzM4MDM3MTAxMTM2YSByZWxlYXNlMjYtbWFpbnQKKzc0Njk1IDVlMTEwODU0NWU3ODc0YTQ5YzE3NzQzZGUzZGE0NzRiZDJjNWY4OGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0Njk2IGVkMmM1ZTAwNzQxMWQwOTZkOTM4MzRhMWVhZWRjNjExNmJiMmFlMjUgcHkzaworNzQ2OTcgNDgwM2U3NmYyMGM1NmZlOWU5OWM5YjViYjQyOTg4YWU1NTI3MGJmZiByZWxlYXNlMzEtbWFpbnQKKzc0Njk4IDc5MGMwMTlmNjQwMzg4NzMwMzA5MDgyYmZmNTVkYzc3MzVkMmFmNDkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0Njk5IGRjNzIxN2NiNzNiN2IzYmYyNzBjZmYzYTgwY2M0NGJmZjdmN2I3YmEgbGVnYWN5LXRydW5rCis3NDcwMSBmNjQ1NzBkMGY3MWQ5ZGJkNzAwNTA2NGEzNDY0NDc4NTY0ZTBjNjVmIGxlZ2FjeS10cnVuaworNzQ3MDIgMzdmNWQxNzg1YmIzZmU4YzI3Mzk2NWVmYjMwM2M4Yjc2MjZiY2ZjOSBsZWdhY3ktdHJ1bmsKKzc0NzAzIDMwMGRhM2NjZjlmYzNmNzE0ZjFkNTk4MTVhZmI2NDFiMTg2NDMyOWEgcHkzaworNzQ3MDQgMGY3MzMzYWNhNDU1MzIzMTBjNmY1NzgzNDIzMGQwNDNlZGEyY2VkNyBsZWdhY3ktdHJ1bmsKKzc0NzA1IGU4OTVlZjgyYzA4NmNjYjgzYmQxNjU0MzRiZGNlNGM5MDYwMjUwODAgcmVsZWFzZTI2LW1haW50Cis3NDcwNiA4YThkNDY3Yzg5Y2NlYTA0YjE3ZDgyN2VkODhkYTI2OGQ5MzhiNGYxIHB5M2sKKzc0NzA3IDBkZDBiMGRlNWUzMWYwMWI2NDdjOTcyNDJhOTkyOTliZjNmMmUxN2EgcmVsZWFzZTMxLW1haW50Cis3NDcwOCBkNDEwMjQ1OTM5MzFmNjlhYTc2NzM0OGNiYjU0ZTlhYzVlNDViN2FjIGxlZ2FjeS10cnVuaworNzQ3MDkgNWY1ZWE3NDdlMzFhMWFmZDlkZWViNWYzZDRhNmJjZGE2YzI0ZjZkZCBweTNrCis3NDcxMCBjZWI3NTgxOTUzNzcxNmM1YWE3ZTUzZWM5N2E0OGQwNGQ3ZWYzYWMzIHJlbGVhc2UzMS1tYWludAorNzQ3MTEgNjZhMmRlMGQ0MjhlNjVkYjRlNjU3OGQwODQ0ZjAxNDlhYTRiOGU4ZiByZWxlYXNlMjYtbWFpbnQKKzc0NzEyIDZmZTlkZmIxMzljMzFjNzU0MjgwYTEzMDExMGZjNGZjNjNjMTNmZDUgcmVsZWFzZTI2LW1haW50Cis3NDcxMyAxZDFkMmRiNDU2ZDg2ZTI2N2MwNTQwZTJkZDhmNmQ1MmFhMDhhYTJiIHB5M2sKKzc0NzE0IGRlNjI3Y2ZlZWQxNDY2YzdjOTIxZWIyNGMyNjQ3ZDk3OGM5NmE5ZTMgcmVsZWFzZTMxLW1haW50Cis3NDcxNSBmZDM0ZmZjOGY4MDQyZjNlNzZiOGQyOTE4MDQzMDhkZmY1MmI4MjdjIGxlZ2FjeS10cnVuaworNzQ3MTcgOTFkYzYzMjI3MjJkZjhiMmFjOGNjMmQ1NDgxNWM5MGY5ZDhhNzk5ZSByZWxlYXNlMjYtbWFpbnQKKzc0NzE4IGZjOWEwMDc5OTc5NWM0ZDA0M2JhZmRkODMwMDM1MTI4MWZiMzBkNDYgcmVsZWFzZTI2LW1haW50Cis3NDcxOSBlMmZhMDYwNTA4ZGEwNTNjNTc0M2UyZDUxNzcyYzM5ZmE1NjkwMjI3IHJlbGVhc2UzMS1tYWludAorNzQ3MjAgZGQ2YTliYzM5OTQ2M2YwNjJlZGM4MDcxMTllZjAwNGRkNGRlMzQ0MSByZWxlYXNlMzEtbWFpbnQKKzc0NzIxIGUwNDA5ZjAzODIyZmIzMGY3ZGZhODU5ODM0OTk0YTE5MjgxMDdkYjAgbGVnYWN5LXRydW5rCis3NDcyMyA0MGZkOGZkOTZkOTZjZGExY2U3YzgyNjVkMDc1OTZmZjMwODg2NDY1IGxlZ2FjeS10cnVuaworNzQ3MjQgMzJlODVkNTBjNTJkYmNiNDNhOTcxYmZkZDg3YmEzY2Y1OTM1NTM2YiByZWxlYXNlMjYtbWFpbnQKKzc0NzI1IDBiYzc1OWY2ZGVkNWM4ZmJlYWE0ZTkwMDlhMWViMjEzZmZiOGQ4YjUgcHkzaworNzQ3MjYgZTAxNzhiOGFlYWYwNzk4ZmI2YzQzNjRiYWJmNWYzM2MzNGI4YWExNiByZWxlYXNlMzEtbWFpbnQKKzc0NzI3IDkzMWFmNjYxMWFlOWNlNDU0ZTcxYzVmZTJiZjVhYzZkMzAxNWU0MTAgbGVnYWN5LXRydW5rCis3NDcyOCA2N2RlNDJjYTBhMjZhNzA0MWJmNDI2ZmFkYTc2NmQ2NzE5ZmI5ZGY5IGxlZ2FjeS10cnVuaworNzQ3MjkgNGI2MzlmNWI3ZDNlYmVlMGEwYWVlNDFhYzgyZGRmNDVjMGQ2MDc0YSByZWxlYXNlMjYtbWFpbnQKKzc0NzMwIDZmYTk0NmQwNzVmNGFjMzQ3MDk4N2JkMDExOGIyN2JjNmEzMDI4MmMgcHkzaworNzQ3MzEgZDVmYzUxODkxOTk3ZGFlZjk4YzMwNTBhZDY1ZTVmMzM1MTJiNWVkMiByZWxlYXNlMzEtbWFpbnQKKzc0NzMyIGUxZWZjYTYxZWU0ZWQ5ZjkzNTY5MjE1NmRhZTM0ZDNiZDU3YWY3NDYgcmVsZWFzZTI2LW1haW50Cis3NDczMyA1ZGVjOGExMmU0NTVhZTk4ZTcwMmExZDkxMzlkMzcyZjdhMTMyNjZmIGxlZ2FjeS10cnVuaworNzQ3MzQgOGY2Y2YzOWM5NmRkNjIzNjAzMDEwZDM4NWRjMzYzNTY4ODQ3ZDEzOCBsZWdhY3ktdHJ1bmsKKzc0NzM1IDAwZDZjYjYyNTY2N2YzNzE0YjRhZGI3NGFhOGJmZTJiOTEyYzA4NTggcmVsZWFzZTI2LW1haW50Cis3NDczNyBhYjdmZDRiYzM4MjhmOGNlMDc2OTU4NzEzOTgyYWFlYzhiNjZkN2U1IGxlZ2FjeS10cnVuaworNzQ3MzggMjVhNjE3Y2E4M2UyMzkyNTQ3NDA3NDk0MzYzOTE0YjE2NGQ4NDIwZSBweTNrCis3NDczOSA1ZDE1Mjk2YTJhNGUxYzc1YmQ1ZWM3YzljZmQ1NDY4YWMwNmIxZThjIGxlZ2FjeS10cnVuaworNzQ3NDAgODM1ZmM4NTc3ZGM3OTBlMmVlNDVlYzUyOThhMzNmMmU4YzE5NGViMiBweTNrCis3NDc0MSA3ZjJhODc5NDM5OWExZTYwYzQwOWYzNzQ1ZTQ1YzViYzJmM2EzOTk0IHB5M2sKKzc0NzQyIDBmNmRiMDAyYjNhMWZlYzk5ODkzMmQwNmVkYTU3NmYxNGU2YzdkMmQgcmVsZWFzZTMxLW1haW50Cis3NDc0MyA5NTgwYmJiYjU1MmUxM2EwMTEwZDJjOGI2ZDFiNTJlNTFkYjYxZmE3IHB5M2sKKzc0NzQ0IDZhZmZkNmRkYTIyOWQxNDZjODYyMzg3MWFkNGY0OThjYzkyZDQ1NjkgcHkzaworNzQ3NDUgN2U2ZjYxNGE2YWQxOGMyY2YyYWNhMWJkOTVhNzRjYTE2NzcyZTZiMyBweTNrCis3NDc0NiBkNGUzYWYzNDNlMzIwYTkyOTk5OWYxMzZkZmVlMzY5ODE5MWFiOTU5IHB5M2sKKzc0NzQ3IDNmYjFjMWZiZTI2Y2FlZjRkNGQ1NDRkNDIzYWM5NjMzNzAzYWFkNTQgcmVsZWFzZTMxLW1haW50Cis3NDc0OCA2MjI1MDIxYmRjMzZiMTgwOWM0YThlNDJmMDUxM2QzNzNhOTIxNzg3IHB5M2sKKzc0NzQ5IDkyZGFhOWM0MWQ1NjFkZDAxZGRlNjQ2NmMwMjVkY2ZkYTg1ZGI4YWEgcHkzaworNzQ3NTAgZWNkMjI4NTBkMjAxY2E0YmYyNzc0MTJkNjdkMTE1OWNjOTJhMDExNyBsZWdhY3ktdHJ1bmsKKzc0NzUxIDUxYmFhZDI4ZmU3YTE0MWVkNGQ4MDE0ZmFiMTJhMzkxZDljY2NkMzUgcHkzaworNzQ3NTIgNmJmMjUzOWQzYmFhNDIxZTE5YjY4NDAxZTZkYzY2MmI0NzBkMmQ0MiByZWxlYXNlMjYtbWFpbnQKKzc0NzUzIGQ5YTY2OTA1ZjAzZTk1YzIwODgyYjdlYzRmOGEyMTE1NTRkNGVhMTAgcmVsZWFzZTMxLW1haW50Cis3NDc1NCAzOWJlM2VmODJkMjMzNmUzMjczZjBkNTJkMDYzYzMwZjFkNzc1ODQ3IGxlZ2FjeS10cnVuaworNzQ3NTUgNTExMWQzMjk5NzQxNjBjOWRjMzVkYjVhZGJhMmRlMDZiNDQxOTg3OSBweTNrCis3NDc1NiAzZGY5OTE0ZWZjODRlMzkzOGMyODRjMWFhYWM4ZGM5MzUwODJhYzU2IHJlbGVhc2UzMS1tYWludAorNzQ3NTcgMmM5ZWM0ZTdkOGMyMTBiNzcyNzZhNThhNmE4ZmI4MzYzNGYwYzJlYSBsZWdhY3ktdHJ1bmsKKzc0NzU4IGZhZDAyNTEzMjRkN2FhMTQ3MzA4ZGU0ZjQ4MTM4NWRjMDVlMzNlNGMgcmVsZWFzZTI2LW1haW50Cis3NDc1OSBmZmY1OWIwYWRkOThhNTYxNTc0ZTc2NDBmMzMxMDdkODFlZjMzMWRkIHB5M2sKKzc0NzYwIDA3ODFhY2ZkYzk0NWQ5MWViY2QzYTA5MjdkN2M4NDgzNjM2NDk1NGYgcHkzaworNzQ3NjEgOGJjNGM4Y2FjN2Q3MjJmYmI2ZGQxZDk5ZWU1YzMzOWU0MjM1NDk3NCByZWxlYXNlMzEtbWFpbnQKKzc0NzYyIDdkOWNjNGJjZDc3NjBlNTQxZmU0YmNjODQwOWI5MWZhNjgyYWQ5MWYgcHkzaworNzQ3NjMgZDBiZGIxOTMwZDQ5ZTRlMmE5MzgzOTUwOTNlYTgwNGY4MGIwMmM3MiBweTNrCis3NDc2NCBkZDAyNzkxNjY2ZTA1YjgwNGQ0N2ZjYTQxN2EwNjhkMTQ4NTY4ZTg4IHB5M2sKKzc0NzY1IDIyOTMwYWY0ZGRmNzM0ZmM5YmE1YmVmODEzYTY0NTdhY2I1YWVjZDEgcHkzaworNzQ3NjYgOTExOTQ2N2FhODRlODI4ZTM0OTc2YmFhNzFjZGRlNTU0NzM5MGY0ZiByZWxlYXNlMzEtbWFpbnQKKzc0NzY3IGYzYTMwMDgzZmQ5NjRmYzI1MjdhZDRjMGVkNTE1OTNjMmNjYTVjNmYgcmVsZWFzZTMxLW1haW50Cis3NDc2OCAzYzU3ZDI2YjQwYzQ2N2JhNjZkYWU2MjA3MDExOTIwYWNlMmI3ODRiIHJlbGVhc2UzMS1tYWludAorNzQ3NjkgNjU5NDA2NmU1MDQxNjk0MTgzNzVkZDkwODIxMTdjNDU5ZDZjODQ3MiBsZWdhY3ktdHJ1bmsKKzc0NzcwIGY0NGY0NmZlOGRhNTJlMzgwY2IxMDlhODNmYzVjZGVjYzU3YTcwODEgcmVsZWFzZTI2LW1haW50Cis3NDc3MSBkN2FlOGIwNzM5ZTQ3YWU2NGQ4NzUyMTczMzhiMWQ4ZDNhYTBhZWY1IHB5M2sKKzc0NzcyIDMxNjkyMWNjOTA0YTVkYjJlNTU5YTczNjRkN2QzMGQ1NDM2NjgzMjkgcmVsZWFzZTMxLW1haW50Cis3NDc3MyAwYzBhNmNmZDRiZTIyMGM4NTA4YWQxOWM5ZWM0Y2I2ZWM4ZGIwYjgzIGxlZ2FjeS10cnVuaworNzQ3NzQgYWFhNmI3MjRhNGZjZTQ2MTJlYzgyOGIzZDRkMDU5OWU2MjdlZTIzYiByZWxlYXNlMjYtbWFpbnQKKzc0Nzc1IDQzZGE1M2U1MDJlMTVkYzQ0YWRhM2UzZGY4N2I4NjRhM2Q0MzUzYzggcHkzaworNzQ3NzYgODM5M2E5MDIxNmIzODZjNDNkZjQyMjEwY2U1YjcxY2RhZDkwOTRkNyByZWxlYXNlMzEtbWFpbnQKKzc0Nzc3IGJiNWZjMTViMDM0Y2UzYTk0MWJhOWM4ZjY1ZDcyODY4YTIwN2FkMDMgcmVsZWFzZTMxLW1haW50Cis3NDc3OCAxYTM5YTRkZDI3N2M0OTc0N2IwMDA0Y2RiNDEwMmZkZjUwZGRlNzEzIHJlbGVhc2UyNi1tYWludAorNzQ3NzkgOWFjZTg2Mjk5YmI4YmY0YmUxNTk3MmI0NWY0MWQ5M2VhYmFmOTIzOSBsZWdhY3ktdHJ1bmsKKzc0NzgwIGU4ZDY4MWM0NDhkNzJkZGE2NGEyZjc5OGQyMmVmZTRkODFhNGJlYWYgbGVnYWN5LXRydW5rCis3NDc4MSBhZWZmMzMxOWM0MThiNDA3YmQ2Yzk3NGQyYTMwNmFhZmM5NDEyNzFlIGxlZ2FjeS10cnVuaworNzQ3ODIgNzE1ZTY5NzI1M2YyNGFjNWJiNmU1ODliOGNlZjY0ODZlNzYyNzVlZCBsZWdhY3ktdHJ1bmsKKzc0NzgzIDlmMWQ2ZDFkYmIwMDgwYzZlNTVjNzM0ZDhhODQwY2JlZjljZGNjY2IgbGVnYWN5LXRydW5rCis3NDc4NCAxYTFhZjlmYmQ4MzE3OTliMTYzNjdhZTBlNGUwYjE2NzcyMDQxYWY2IGxlZ2FjeS10cnVuaworNzQ3ODUgMjUxM2FmZjQ0NWMyYzllYzE1NjM0ODBmZDFkYjcxYTQ4MThlNmFhNCBsZWdhY3ktdHJ1bmsKKzc0Nzg2IDc2NDNlMjczMDQzNzY0ZTZlMDY0NTA0M2ExZmE2ZGU5NjU5Yzk3N2QgbGVnYWN5LXRydW5rCis3NDc4NyA5NTg0YjhlMjJmNzZmYmE4MmNmMWVmODMxMDQwYTYyNTRjNjVjY2U3IGxlZ2FjeS10cnVuaworNzQ3ODggNmQ0NWZiYzg1YmRmM2ZkYjQyMGRlNTVhMDEzZDU4YmE3NWMwNDBmYiBweTNrCis3NDc4OSA5YjJhNDJmYmQwNGI0MmRhZWE1YWJkYmMwOWZhMDRkMjhhNWI2MjVlIHJlbGVhc2UzMS1tYWludAorNzQ3OTAgYzA0YTdjMzY1NWZjMGRiN2NlNDg5YTZiYzdhMzI3NTE2OTBiYWQ4YyByZWxlYXNlMjYtbWFpbnQKKzc0NzkxIDY4NTU5NTFhZmYxOTllMjhkODUwMDVhNmJiODBmZjA3Mjc0OWYzYWIgbGVnYWN5LXRydW5rCis3NDc5MiBjZjRlMDgxNTg0NmM1ODRjOTA5YTY0ZmZmZjA3ZjQ2Zjc0NWNhMzdhIHB5M2sKKzc0NzkzIDNhZmY1OTc5MTBjNDFiOWYyYWYwYmVhNTgyMGYwMWE4NGU0MTYwNTkgbGVnYWN5LXRydW5rCis3NDc5NCA4Yzc3NzFkY2UwNDc0YTg3ZjJlNmI3YTQ1MjE1MmNhNTIyYzJkNTc4IHB5M2sKKzc0Nzk1IGQ5YjViN2RkODJhMjIyNGJkYjUyY2FhYTRjMzhhOTE3MGM5MTA1NjkgbGVnYWN5LXRydW5rCis3NDc5NiAxZjFmNmJmZDRkZmIwNDQ0N2JmYTllNGM1NTEyZDM0NGRkYmI3YjJlIHJlbGVhc2UzMS1tYWludAorNzQ3OTcgNGFiM2I1ZWFlODk3OTgyMjg0ZWViOGYyNzY0YWE5YmZkNzM3MTBlNyByZWxlYXNlMjYtbWFpbnQKKzc0Nzk4IDlhZDZkNzJiY2RhNWI1NDdiZmI1MmI1ZmUxMWM4NzVhY2YxZThlNGUgbGVnYWN5LXRydW5rCis3NDc5OSAyMWU5MDdhMzgzNmYzYzllMzc0ZTFjM2FiMTRmMmFhZmE3NTUyMjFhIGxlZ2FjeS10cnVuaworNzQ4MDAgNzg0N2I0MDliNzljMWNiNzQ1YzJiYzM3YTQ4NDQyNmU3Y2M4NmIxMiByZWxlYXNlMjYtbWFpbnQKKzc0ODAxIDRjY2NmM2NlMTVhMDljNjI3ZGE2ZDQzYTUwNzkxYjVlZjQ5MmQzOTAgcmVsZWFzZTI2LW1haW50Cis3NDgwMiBkYTg1M2U5ODNmMDgyNGYzZmI1YzdjOTZmMWUzYjAxM2EzYjk5MjNlIHB5M2sKKzc0ODAzIDJkNTc1ZjE2YmNlY2Q5ZjZlMDgzNzg0YjMzN2JjMjNhZDJkZTM3MTUgcmVsZWFzZTMxLW1haW50Cis3NDgwNCA4NTBkYWZkNGEyNDUzZDUyNDYxMDE4MzE3N2U5NmJmYmQ3ZWI0M2JiIHB5M2sKKzc0ODA1IDRlN2Y2YmM4MTBiMzYwZDllODU3NDgzZTg0M2NjMmRhMzRiYzhlODcgcmVsZWFzZTMxLW1haW50Cis3NDgwNiBiZDQyMDM4OGU2YjFkYTE4OTg1YTg3NDM2MDY4ZjM4YjJkZGE2YjcwIGxlZ2FjeS10cnVuaworNzQ4MDcgYTZkZjA3NGQyZTA5M2ZiYjBiMmE1YjIzYjhiNTZjZmEyNmJiZWU4NSByZWxlYXNlMjYtbWFpbnQKKzc0ODA4IDk0NjI0MDRkZjRlMTBjZmRhMWViZmRmYzZhZmFjNjgwNGU0Mzc3NzkgcHkzaworNzQ4MDkgYWI0YTg3ZmVmMWFlNmU0YTg0ZTdkODA0Y2NmOTFkMmNjYzNkY2JhOSByZWxlYXNlMzEtbWFpbnQKKzc0ODEwIGEzM2Y5NmI0M2YyNGFjYjIxNjNjNmM1Y2Y2MzVhNWI3NDI5NWQ0MjcgcHkzaworNzQ4MTEgNDEwMmI1ZjJhMmYxZTNjZTY0ZmQwYmM2NTdmODA3YmJmYmMwYWJmZSBsZWdhY3ktdHJ1bmsKKzc0ODEyIDg1MTllMjhiMjg0Zjc5NGFiNmY2MjA2ZGI3YWFjMTFkN2QzNmM0MTAgbGVnYWN5LXRydW5rCis3NDgxMyBhMmJhYjJkMjM3NDZiNTUyYzlmOGY4YmMyY2U3NTA4YTI1NzJhMTUxIHB5M2sKKzc0ODE0IDU2MGMwNTRhMDFhYTJmZmUxMmZmY2ZiYjdhMzNkZDA3M2Y0NzQ4MTMgcmVsZWFzZTMxLW1haW50Cis3NDgxNSA3ZDRjM2MwODNmMzYxOTdmMmYzOGRlMzQ2MWVkYTU4YmFlY2EwMDYyIHB5M2sKKzc0ODE2IDg4NWRhMTQ2ZmVhNWEzZGZhMzVkOWI4NTJlYjQ2OTc2OTVmYjdjMzAgcmVsZWFzZTMxLW1haW50Cis3NDgxNyA1MDdiYTk3YTJlZWVmMzM5NDU1Y2JlYzY5N2M4MDZiOTZiN2I4ZTcyIGxlZ2FjeS10cnVuaworNzQ4MTggYmI2YWRlNTFhMGI2MjM4ZDEzNWM0YTYwYmI2MmJiMjRiMTUxMmFkNSBsZWdhY3ktdHJ1bmsKKzc0ODE5IDJlYmU4YzgxYWZmMDY5MjhjN2JlYTM4NDdhM2E3NGQzYzBmOTkyZWUgbGVnYWN5LXRydW5rCis3NDgyMCBjMmRlMzI4NjZkMGUzZDY0MGFiZTkyYjM0N2NhODU0MTEzOTFkNDdjIGxlZ2FjeS10cnVuaworNzQ4MjEgYzAxN2E0NTBmNGE1NzY4ZmI1MDYzMWE1MTk0MTAzM2MyNDQyZjE1ZCBweTNrCis3NDgyMiBkNGMyN2RhNDZkY2EwZjc5OWJhNDVlNGMwZThmYjRmNTYxNmNmZjFjIGxlZ2FjeS10cnVuaworNzQ4MjMgNzQyY2U1OGEzMTcxYmMxMmVlNDYwMzUwNmFlOWVkYzE2ZTlkNDczOSBsZWdhY3ktdHJ1bmsKKzc0ODI0IDNlMTkzZDBiMWFiYTg5ZDRiZGFhZDRjMzYyMGY4NzI0NTZmODc5NzMgbGVnYWN5LXRydW5rCis3NDgyNSAzMzg1ZTYxODIxMTI5NDlhNzJkNGI0OTVhYmIwN2I3MGZiYTRkMDRlIGxlZ2FjeS10cnVuaworNzQ4MjYgNGU2MWQ3YmQxYjM2NDZiYTNmYTI5MDllNGMxNjJlMTkzMzlkZGM2ZiBweTNrCis3NDgyNyA5NmI2NDU3NTJjMzM0NzViMzk2NmRjNTI1MTJiZWRmODMyYjZhNjBlIHJlbGVhc2UyNi1tYWludAorNzQ4MjggMjZkZjBiODU2YmNiYzQ4MDNmNmEwNTdkMzE4ZDI0YWY0NTA3MzdjNiBweTNrCis3NDgyOSA0Y2JkYWI2MDFiODdmZjM4YjRlZmQyYmMzOGU2MDI0NDBkNGVkODQzIHB5M2sKKzc0ODMwIDRiNjRkYjM2ZjA5YjhmZGRjMjYyNjZmMDdhNzU0ODk3Njc0OWM4YzAgcHkzaworNzQ4MzEgMzFjMjM2YzUzYjAyNDU3ZTRmOWNhMTdmYjhkZWRkNGQ1YmIzOWI3NSBweTNrCis3NDgzMiBmMTM5MTQ0MmJkMGI1ZDg4MzM3YTBkNWZkMDE2NTBiMmZkMDdiZGIwIGxlZ2FjeS10cnVuaworNzQ4MzMgOWIwMDNiYmNhNWRiZjVjODJjNTU1YWQ1YjJlOTljMjA2ZjUyYzkxYSBweTNrCis3NDgzNCBkODA3MjIwNmZkYzYxZWE2OTI5YjY1MzBmOTkxZTM1ZTMwMWViZTA2IHB5M2sKKzc0ODM1IGI2ZTM5ZWVhMWJiZjZlZjNmYjMxNTVjZjBhNGQ1MTNjZDdjN2U5YTAgcHkzaworNzQ4MzYgZmE5MTI3MGI2MDg3YjBmZGYzOTNjYzA4NWJlOGRjOGU2MDk5YjcwZiByZWxlYXNlMzEtbWFpbnQKKzc0ODM3IGJlNGQ0MjAwOWY3ZTViY2I3YmVlZWIzNDAyM2U2NmMwMzMwNTQ4ODAgcmVsZWFzZTMxLW1haW50Cis3NDgzOCAzMjQ0OGY4YTZjNjM2ZjM5YTYxNzk4NWQxMzdhNTZhZGI5YWMzNDc4IGxlZ2FjeS10cnVuaworNzQ4MzkgN2EzZWQxYjQzNDEwOTc1M2E1N2RlODJkN2E5YzMzYjI3ZTY5NGQ3OCBsZWdhY3ktdHJ1bmsKKzc0ODQwIDMzNGM2MGY1MTI1OTRjODM3NmZjMzBmNTI5ZTAzOTdhMTg4MGU2ZDIgcHkzaworNzQ4NDEgYjBkMDNmYTA3M2VjNWQxNjdhMDE2NDdmZmYzNjI1Mzk2MmQxNzg0ZiBsZWdhY3ktdHJ1bmsKKzc0ODQyIDFhZDlmMmJkYTIwYTI2Yzc0MzI2MWUzYWEwMmVlZWFiMDc1ODNiNzUgcmVsZWFzZTI2LW1haW50Cis3NDg0MyAzYWNkMzFlYWRiYjg4MDcwNDVjZGEwOTZiN2Y0MTQxNjRjNmEzZDExIGxlZ2FjeS10cnVuaworNzQ4NDQgNjYxYzhhOTM4OTJmZjdjMTBkZGUwMWYwZDhhNWViNjFlY2NmZWM0MCByZWxlYXNlMjYtbWFpbnQKKzc0ODQ1IDBmMDlkMzhmODUyZTg0N2E4NmE1N2JkMWMyZWJmODQyOTk4NDI2MzMgbGVnYWN5LXRydW5rCis3NDg0NiA3OGZmOWE3NGNiNGU5YjdkYWExNjExNmVkMDY2MDY2MWJjMzA4YWMwIHB5M2sKKzc0ODQ3IDFiMTg5NjdmYmQ0MDgxMDY5MWVhNTgyOGM4ZTAxN2QxOTQ0MmJhMDQgcmVsZWFzZTMxLW1haW50Cis3NDg0OCA4YWIzMDQwMzQwMjFhNTc3MGY3MzBmMTE3ZThmNmU4NTc1ZmEwZmY1IHJlbGVhc2UyNi1tYWludAorNzQ4NDkgZmFiOTllOGQyOGMzMjc1YmVkMjUzMDBkNmJiZjlkM2Q4YjRkYzM4ZCBsZWdhY3ktdHJ1bmsKKzc0ODUwIGFlMWIxY2Y0N2MwY2ExZjMzNWVjN2FjMzg2M2VkMGYwOTgxMmZmNjkgcmVsZWFzZTI2LW1haW50Cis3NDg1MSAxZTA5ZGM2OGM4ZjM2MzhiZjZjYmQ4MzE1NjVmZjIwYmFkNGQ0ZWJjIHB5M2sKKzc0ODUyIDJlOTg1OGMwZDM2NGQxY2U0YmRmMDAyOGJhNGVhNjg2MWRjOTRmZTEgcmVsZWFzZTMxLW1haW50Cis3NDg1MyBhMmNiYjk0MjFhMTE0M2FjNWFmMDMyNzg1MjVkN2QxNjNhODdjZDUyIGxlZ2FjeS10cnVuaworNzQ4NTQgOTA2OWU1MmMwYmVkYzI1MzMyZjAyMjk5NTNjODVjNTBhZDM2M2QxMiByZWxlYXNlMjYtbWFpbnQKKzc0ODU1IGM4Y2I5ZWYwY2QwYTA0ZDliZDAwZDAxMGM2YTk0YmY4OTYyODE1MTcgcHkzaworNzQ4NTYgNDY2MjViY2EwY2ZiNTZmNDllZmVjYmRiODllOTM2MWE0NDEzYzg1ZiBweTNrCis3NDg1NyA3NmUwOGI5MWQ5OGUwYWRiNzQwODdjNmY3ZTVkYTkwZTJmZmYxOGI0IHJlbGVhc2UzMS1tYWludAorNzQ4NTggY2RhZWIyNTFkNDg4YmUzNjQ1MTQzZDQ3NmZlOTMwYTAwMzM2OTFlMCBweTNrCis3NDg1OSAxNzNiZWQwZTA0YzQ4OTY1MmU1NzJmYTllMDNlY2RiZWQ0YjgyNjQ3IHJlbGVhc2UzMS1tYWludAorNzQ4NjAgNzdiOTZhNTQyNGEyYzY1MmY3NWRmYTNlMzdiNjc0NzNiODgyZDMxOCBsZWdhY3ktdHJ1bmsKKzc0ODYxIDdjNGQ1Mjg2MDEzMWI2ZGE5Y2JlNDllMWIxZGI5OGZmNzFhYzBiY2UgbGVnYWN5LXRydW5rCis3NDg2MiA5YTEwOTcxNDAzYTVhZDBkNDljMTdmYzcxMTNmMjQ5NWZjOGM3Y2Y4IGxlZ2FjeS10cnVuaworNzQ4NjMgN2Y3MjYxMTViYTI5YTBlNjA0NjE0ODMwMjhhMjU1ZjEyYTA2OGUwOCBsZWdhY3ktdHJ1bmsKKzc0ODY0IDE3MmIyZDM2ZGE3N2NkMjgzMTM2ODJlNmYyZmQ5ZDFjZTg0ZGZjZGEgcHkzaworNzQ4NjUgNDJmODgwODNkZGJkZjNlMThmNTFiMzA0ZjAxYmU5MzY4ZjM4OGY2OSBsZWdhY3ktdHJ1bmsKKzc0ODY4IDVmZWQ1ZThlYTljYzMzMzI2N2ZjN2Q2ODgyYmI0NzVlZDk0OWYyYTggbGVnYWN5LXRydW5rCis3NDg2OSAzOGE1MmI2NzI0MjkyNjAzMGQwYmQ0OTE0Mzg3OTA0ZDc1MDc1NWMyIGxlZ2FjeS10cnVuaworNzQ4NzAgMGZmMzdlMjAwMjkyYzkzNmJmNjk0NGE0YWM5YmNkMDVkOTRmM2Q1OCByZWxlYXNlMjYtbWFpbnQKKzc0ODcxIDEyZjE0NWQ3NTUxM2ViOTg2YWE3OGYwNDkzNjEzN2JlNzY2OWQ4MzcgcHkzaworNzQ4NzIgYTk4MDlmM2IxNjRmZmE2ZjBkOGVmMzBmY2E2MThkMjAyODNjMjViMSByZWxlYXNlMzEtbWFpbnQKKzc0ODczIDhjM2IyZGRhNDcwMzYwZTUyMjUxZDM2NWZlMTc0YjYzMGU4YjliZjQgbGVnYWN5LXRydW5rCis3NDg3NCBkYzkyMmE4OWNjZjEwYzM4ZmQ2ZGE1YTBkYmFkN2I0MDAyOTRlYjNlIHJlbGVhc2UyNi1tYWludAorNzQ4NzUgMGE1ODBkYzdhZjEzNzY0MDQ1NTNmZjc1M2YxNjBhNWE3NzY1MTU1ZSBweTNrCis3NDg3NiA2ZjRiODUyYjgyZjE3NTA3YzU5YWVhYWRkMjk5N2I1NmNlNDc5Zjg1IGxlZ2FjeS10cnVuaworNzQ4NzcgOWFjYjhlYjcyYTkyZmE1ZjUzMTg3YjYyZjlhMzI5OWFkZWIxZTBiMiBsZWdhY3ktdHJ1bmsKKzc0ODc4IGNhOTIwYzE2YjIwNTdlOGU0NTUyMTExMDIzOTZiMjkzZGRhZDIyZTAgbGVnYWN5LXRydW5rCis3NDg3OSBlMGQ1YzBjMzgwOGNlMThkMGY5MTJkYTEzZWQwN2Y3MjE0ZmRlNzMwIHB5M2sKKzc0ODgwIGEyN2FiZDM1M2VkMWNhMTM0Yzg5NzNjYzZlNGQ0YWMwZGE5NWIwY2UgcmVsZWFzZTMxLW1haW50Cis3NDg4MSBiMWI2MTVhOTExZjAzMWYwYmE0ZDNjZDk5OThiMzY4ZmY2MThiZDU2IHB5M2sKKzc0ODgyIGU0OTc0ZTk1ZmE2NDllZWY2ODVmZTI4MDI1Y2RhZmU3OGY5MTgzYTcgcHkzaworNzQ4ODMgYjM5OGFmZWZkMzY5NjdhMmJmYjFmOGNlOTFiOWJlODAxZDY2N2M3ZCBweTNrCis3NDg4NCBiYTIyOGU1YzNkYWY3OTZjODY3ODgwOWQ2MWZiZTFjMzY2ZTZmNmJlIHB5M2sKKzc0ODg1IDljZWViNjAyZGRhM2I5YjZlMjY0Njk5NmFkNmM3MTIxZGVhMDFhMTIgcHkzaworNzQ4ODYgMGU0NGRjYzBiMjBkMzlkNzE5M2M2NTNhZjIwODQxNWNlMTM3ZGY2YyBsZWdhY3ktdHJ1bmsKKzc0ODg3IDJlYTFmYzI2ODU0MjUyYzdjZDIyM2E5N2EzOGEzMWQ2NjQwYTllZWQgcmVsZWFzZTI2LW1haW50Cis3NDg4OCBkM2VlNzM4ZmRjZGIxN2NmYzM2ZDRiMjk0ZWM5Y2JkMTA4NWY4MGRiIHB5M2sKKzc0ODg5IDA3MmUzZTMwYjUwY2MyMWRiMjJjZjM1OTI3N2U3M2YxODI3MjllMjUgcHkzaworNzQ4OTAgNTQ3ZDQxYjFkZTk3MzgxYmU1MzEyZmYyY2M2MmI2YWViZmRjOWM5MiByZWxlYXNlMzEtbWFpbnQKKzc0ODkxIDFjNTQ2Y2YzZWIxMGQ2ZDZlY2M0MzIxM2Q2YTRkODI0NmE3MjEyMjMgcHkzaworNzQ4OTIgZDYwMWZlMzdmYzU0Y2UwMThmMzc2YjQzYmM4N2EyZjYwYjQwOGYyYyBweTNrCis3NDg5MyBmZDJmNGFlOTNkMDEyN2VkZmM1OTM2OTk4ODAxN2YxZGQ3NTczMjFmIHB5M2sKKzc0ODk0IGI2M2M3MTgwNjE4ZTM0OGE0MjdjZGM1MjJlYTk5YTk0NmFlNzNlY2QgcHkzaworNzQ4OTUgOTkzZWUzOWU4YmNmZWZhOWRhNWUwOTVjN2RiZGM2YjU4NGFkMjRlYSBweTNrCis3NDg5NiBiYWU5ZjQ4MjNiOGUxMWI1NDY0ODQ3NzJlNzVlYmUzZGY1M2M5ZWY5IGxlZ2FjeS10cnVuaworNzQ4OTcgNWExZTg3OTgzMmZlMzNjNzcxNjU2YWI2MTAyOWZiMDBmZTAwNDMwZiBweTNrCis3NDg5OCA5ODE3OTE1ZWJkZWJjNTFhODE5Yzk0YjU3MDBkYzQxNTc0MmI5NmNhIHJlbGVhc2UzMS1tYWludAorNzQ4OTkgZGUzMzU3YzI2MGI2MDdjYWNmMzZlNzk1NWU1MWYwMzVhYWViNGQ0ZiByZWxlYXNlMzEtbWFpbnQKKzc0OTAwIGRhMDRiMTUyYTZmZTNmNjZmYjk0NTM4Y2Y4ZjU0NGFiOWI3Y2JmNmYgcHkzaworNzQ5MDEgYjMyNmU3ZDY2NDEzNGE4M2VkZmFlMGQ3YzZkNDRlNDAyMmRlNWE1OCBsZWdhY3ktdHJ1bmsKKzc0OTAyIDdhNWMxMTliODY2OTAyZjYyMDYyY2ZhMzIzMDZmNmM5ZmZkZTI3ZDcgcmVsZWFzZTI2LW1haW50Cis3NDkwMyA4NGYxYzk1YjRlOTc0OGY5YTU0OTkzY2E2NjllZjJlZTU3ZDg4YTIzIGxlZ2FjeS10cnVuaworNzQ5MDQgNmZjYTM1MzUyZjdiNzgxNjRiZjJiMzM4YzIxNjFkNWY1NmM4ZTY5YyByZWxlYXNlMjYtbWFpbnQKKzc0OTA1IDRmMTVhMTMxYWIwNzE5NWNjY2M4MzUzODczY2Q2OTdjNjJjMGEwMDAgcHkzaworNzQ5MDYgYzc2Zjg0MzgzOGE1ZmEwNTc1ZGRmYjQ4MTc5YzhiNDJkM2IzYTYyOCBweTNrCis3NDkwNyAzMjg5ZmZjMDVjYzc4NDQ5NDUxM2UyZWU3ZTYwYWZhMDUyMTU5M2EzIHB5M2sKKzc0OTA4IGIzNWRkMWI2MjQ4ZTM5Mzk2ODU5YjkwNDA5OTRhYjJkMjU0ZWJiMGEgbGVnYWN5LXRydW5rCis3NDkwOSBhNDQyYzI1MDRhNTdlMWI1YjcxN2I3ODg1NjFmMGIyNjlmMzllZmFhIHJlbGVhc2UzMS1tYWludAorNzQ5MTAgMzdlOTYyNDZiZGExYzY0OTI2OTIxYmUyMzI1MjI1MDZmMmI2YzQ4NyBweTNrCis3NDkxMSBkYTgxODYxNjg0ZTg5M2E2NDRmNzNjNzE1MDkyZDgwODA3OGY5MmMzIHJlbGVhc2UzMS1tYWludAorNzQ5MTIgMWQyZTZjNDQxYTUzZjAxNWY4NjkxMmIzZDIwNGQ0OTYwYmE4ZjVhMSBsZWdhY3ktdHJ1bmsKKzc0OTEzIDc3ZTA3YWY2Zjg3YTNjODQ1NTgxNDI4NDAwNGI1NWNiMmJjMzg3ZjUgbGVnYWN5LXRydW5rCis3NDkxNCBkNGUwMzZjNmM2MGQ0YTQwMGRmNjg2MmJlMGIxZmZlMmU0ZTMzMWM2IHB5M2sKKzc0OTE1IDg1ZWYxYzA0ZDhkZGY1Y2VhOGFhOTZmNzcwYzEyMGQ1M2Y3ZWQ3NWMgcmVsZWFzZTI2LW1haW50Cis3NDkxNiA1MTc0OGRmY2I0NDRjNzAwNDRlNTRiOTEwZjljYjMxNThiNDcyNmQzIHJlbGVhc2UzMS1tYWludAorNzQ5MTcgOTkzMWUxNzdkYTgxMzhlYjA5YjgyOGJiOWI0ZGE4ZGE1MDFiZTU4NCBsZWdhY3ktdHJ1bmsKKzc0OTE4IDM3NTM4YjU1MGY2ODVhZjM4MWMzNGFlMzY5NWYwYWJiMGE2YzQwNjQgcHkzaworNzQ5MTkgZmQxODc3NDUzMDYwNjI1MjczN2QzOTRiYzU3YjI1MGZiYTFkYzE2YyByZWxlYXNlMjYtbWFpbnQKKzc0OTIwIGQxZDNhMDdhMGVkN2Y0OWYwZjYxMTNlMDJlNmZmM2QwOGM0MjA4MTEgcmVsZWFzZTMxLW1haW50Cis3NDkyMSAzYzgzYTNjYWNkNzc5ODViZTgzNTVkM2NiZWVhZmRkZGMwMDAxNWFlIGxlZ2FjeS10cnVuaworNzQ5MjIgMDQzZmRkYTcwNmEzNzZmY2ZjMzI1Mzg1OTI4MzI5MjA5ZDhkNDIyMiBweTNrCis3NDkyMyA4MjJhMjlmNzY2MGI1MTdmZWQ2N2RjMDRiNWEwZDg3YmU2ODQzNjdkIHJlbGVhc2UzMS1tYWludAorNzQ5MjQgYjRjYTU5NDg0OTE0M2Q2NTYzZWM3MTViM2Q5OWM1NGIxNjRmZWNhNSByZWxlYXNlMjYtbWFpbnQKKzc0OTI1IGYyNTU1YWQ1ZmUwOWVhMDAwYzYwYWFjMjlkYjViNDMyMmM2YWFlMmUgbGVnYWN5LXRydW5rCis3NDkyNiAyMjExYWQzZTdiYmVkNGI5Mzg2OGI4NWQ3YmFmYWY4NDU3ZTdkNzJjIHJlbGVhc2UyNi1tYWludAorNzQ5MjcgYjBlNTEwNWZmOTdiYjljYzRmMmFiOWEyOWY2ZmY1MTQ0ZWFhOWQ4NiBweTNrCis3NDkyOCA3YjJiZDM5YjIxY2QxYzZiYWQ1OWQyMDRiMTY5ZmJkYjJhOTJiNjRhIHJlbGVhc2UzMS1tYWludAorNzQ5MjkgZjY0YzBlYjhjYzYyMDlmNGMyNGJmZjVjMzNmYmFkMjBkNzgzNjk0MiBsZWdhY3ktdHJ1bmsKKzc0OTMwIGZkYTI5MmYzMTYzMjQyMmM2NWRkYzFlZTcyNTQyMzM0ZjY0M2JmNDMgbGVnYWN5LXRydW5rCis3NDkzMSBmMTJjZTdhZGJkMzAwMDkwZDQyYjhhMzIxM2ZjNjRlZjA0ODU2N2FiIHB5M2sKKzc0OTMyIDYxNmE2NjljOTAyM2ZlNzQ3M2E3NWIwOTc5M2MyNzU5ZTZhOWQ0YjkgcHkzaworNzQ5MzMgYjRiYjRiYjg2ODkyODk5NjUzYzljMTYyNzUwMjIxZDhjOTg3YTlmOCBsZWdhY3ktdHJ1bmsKKzc0OTM0IGRlNjU5MDg5NzNkMDI0MzkxZWQ5YzFlZGNlZmY5ZDQzNzMyYjZiNzEgcHkzaworNzQ5MzUgMWI3YmRhZTAyMTc5NDcwZWViMjJiMTg3NDFlZjY1MzdmMmFkMzM3ZCBweTNrCis3NDkzNiBjYzMyOWJiMTlkYTVmMWE5ZmMzODUzNjI4Y2ZjYTFlNDYzZWFlYTE1IGxlZ2FjeS10cnVuaworNzQ5MzcgMjQzZmFmMGY1ZjVlNDMxMDM1ZWI0MzI0ZDRlYjZkMjBiYzgyY2M2NSBsZWdhY3ktdHJ1bmsKKzc0OTM4IGEyYjJjYzBmYTdhZDRkMGY0OTRhNDAwZWZkMWYxYmU2ODc0NGEyMDQgcHkzaworNzQ5MzkgY2Y3NWMwZDJlM2M3NmIxMmQ4OTNjNjk0ZjliZjFhMTUwOWFiYWNkMSBweTNrCis3NDk0MCBjNWIxNTAwMTcyZjg5Y2Y3NTVhMjEzM2EyMjM4MDY0MDA1MTNmMDFjIHB5M2sKKzc0OTQxIDgzMTUyNWYxNWM1NzAyOTEyMmExMmFhM2NkNjRjYjFkMjRiZmQ5NWEgcHkzaworNzQ5NDIgMDc1MjEzOWYzZGExZDNhY2U3MjdmMTBjOTE5ZGY0ZjFkNzAwNDAyYiBweTNrCis3NDk0MyA2YTI3OGU0ZDlmNjE4ZGIyZDJiYjU3NDhlZDU2NTEzMzI3MDQxY2FmIGxlZ2FjeS10cnVuaworNzQ5NDQgMzBjYzRmMDczMjkyZWVhMjZkMWYxMzE1ZmIxMTQzNjE0MWVkYjViYyBweTNrCis3NDk0NSA1OGJhODVjMGQ0YjBiMGZlOWEwZjgyYTgwYzlmNTg2ZGM3YmI5YjUwIHJlbGVhc2UyNi1tYWludAorNzQ5NDYgNDUxNDVhZWI2MzMxMGIyMzIyM2YzZGMyMjQ0ZTViY2VhYjVlZjYyOSBsZWdhY3ktdHJ1bmsKKzc0OTQ3IDAwMDcwMjRlOWUyMzQ4ZTc4MzU3ZjlmOGU1Njc4ZTQ2ZTU2YzFhM2UgcmVsZWFzZTI2LW1haW50Cis3NDk0OCA0YzczNDliOWQxNTlhN2FkYTM1MDFlYmMxOTFhODgxZDZkYzRhM2VlIGxlZ2FjeS10cnVuaworNzQ5NDkgMWViNDI0MjU3MzQ1Y2RiNzZiZWJjMTQ5MzZkMzQxNzdkMWQ5NWY2YyBweTNrCis3NDk1MCAxYjE4MzZjZmNmMjYyYTkwODE4OWFkNGM1MjllYTZhNDY3MTdiYzk2IHJlbGVhc2UyNi1tYWludAorNzQ5NTEgODBhMzhmODkzYjdmM2YwOGU2NDkyNzM5OGRmNWUyZGVkNDlhN2ZiYiByZWxlYXNlMzEtbWFpbnQKKzc0OTUyIGEwOWRhNTZlNDc5NjllZmFlMTNiYWRlOTgzZWQwNTk4NDFiZjRlMzkgbGVnYWN5LXRydW5rCis3NDk1MyAzOWI0NjMwNzk3ZmFjZTdmNGMwNGFhYTc4ZDcwZGJhYzIzY2FhZmI1IGxlZ2FjeS10cnVuaworNzQ5NTQgNjc5MWMyYjFhN2RjOTg4ZGYxNjBhMDgyNmY4Y2IzYzYwNDZkNDNkMyBsZWdhY3ktdHJ1bmsKKzc0OTU1IDQxNmI2NDU1MDdkMGE4NDM5ODlkZmE2NTJiYmFkOGRiYTFkZDE2MjcgbGVnYWN5LXRydW5rCis3NDk1NiA4Y2NjMjNhZmVhM2QxODk2OTk4ZjJjMjNkOTJhNTgwNjJkMWI0ZDBhIHB5M2sKKzc0OTU3IGVhNjk3Y2RlNjg4MjM0ZjdiMmJjNWUwZmQ1MjBkNzAyYTcyZWUwM2QgcmVsZWFzZTMxLW1haW50Cis3NDk1OCBmNTRkMzFlNWZkNGQ2ZjAwYmQ5NTljMWE0ZGNiN2JmNjRlZjI0MjY0IGxlZ2FjeS10cnVuaworNzQ5NTkgMmM1YTc3NTBiNzFkODIxZDA5MDE0ZTM5Y2ZmMjJhZWMwNjExZTdmZiByZWxlYXNlMjYtbWFpbnQKKzc0OTYwIGJkODRmNDJjMzYzMzk1OGI5ZDUyY2ExM2EzMmY1M2NlYWY4YTE1ZWUgcHkzaworNzQ5NjEgNTIyYmUzNmIyOWNkMjE0ODFiOGRiMjU2NWM2MDRjOWY1Yjk0NWRlMyByZWxlYXNlMzEtbWFpbnQKKzc0OTYyIDJkZGRkYzY0MWE5ODczZjAyZmE5ZjgzZjFlNmZhMjJmN2VkMmUwY2IgbGVnYWN5LXRydW5rCis3NDk2MyAyNzE3ZDg1YWJhMmU2YmMzZTczMDkxNTZlYTMzMzEwYzZhMGQxNTgzIHJlbGVhc2UyNi1tYWludAorNzQ5NjQgZTU2MWYxMGM3YjMxMTkyOGJlNzYwOTFiYWUyNmUwM2NiY2U1YzI1NyBsZWdhY3ktdHJ1bmsKKzc0OTY1IGQxMzE5NTY1MzNiZjFjZDljYTg4MzdlMTZmMWZlNTQxYjRlMTMyZTUgcmVsZWFzZTI2LW1haW50Cis3NDk2NiA2OWVlMTUwMWIxMDI2OWMzZjdlZDMxYTAzOTJjYjE4MzlhN2FmZjg1IGxlZ2FjeS10cnVuaworNzQ5NjcgNDM2Y2E3NzVmMjZjYWE4ODQ5ZTRmOWJkZjdiOTIwMzNhNzFhZmQ4YiByZWxlYXNlMjYtbWFpbnQKKzc0OTY4IDIyNTQ4YzdlYWYzNzViZDc2ZTNjNzA1ZjEwYTBkM2UxNGM5ZWQ5ODAgcHkzaworNzQ5NjkgYjNkMjVlNmY2NmYxMmRlNTY0OTc0NTZjNWNhMjNiYWQ0MzE5YzliZiByZWxlYXNlMzEtbWFpbnQKKzc0OTcwIGIwYTJmYmEwMDQ1ODYxMTkwOGE4ZGJiYzZhODJkMzFmMGRiNzIxMmEgbGVnYWN5LXRydW5rCis3NDk3MSAxYzUwZGMyMTMzMTJkYzY0NTczMzc5MzVkMjc5NWQ5ZmRmM2I2YWRjIHB5M2sKKzc0OTcyIGQ4YzI0OGE1OTMxMDUwYTFmOTc1YzNmZjliNzY0OTgyZjc0MzA4OWQgbGVnYWN5LXRydW5rCis3NDk3MyA5ODEwNGFiODU5ZmE5NjdiNWFiNGI1YWM5ZGU0ZDkwYjgxYTk4YjVkIHJlbGVhc2UyNi1tYWludAorNzQ5NzQgODA2YzYzNjM4NWZjY2RiYWJiNTg2ODgxNGQxYWQyMjg0YmMzZTE3NCBweTNrCis3NDk3NSA3ZTM5ODVmYWY5YThhY2ZlMDI3YjBkOGI4OTNlYWE3ODBhMzkxYjdmIHJlbGVhc2UzMS1tYWludAorNzQ5NzYgN2EzZmRkOTNiNTY2NGRhMjUxNGZmYjNhNDk1YzVkMTAxZDlkMjJiMyByZWxlYXNlMjYtbWFpbnQKKzc0OTc3IDFkYjZlZTlkN2JlN2ExZDZjNTMzYWEwN2JhMjViMDk4NWM2ZTdmNWMgcmVsZWFzZTI2LW1haW50Cis3NDk3OCBkYjk3YzA0MmNjMWVkNWI5NWRhODg0NGEzOTUwN2U0Y2NlMTMyOGRiIGxlZ2FjeS10cnVuaworNzQ5NzkgY2IzNDI4YjFmNGFmMjliMjViNDhkMjk3NjU1YWUyZWE4NDBiY2I3YSBweTNrCis3NDk4MCAzMzkzZmZjMGRlNDRlNmEzY2JjYmJkMmNhNzNkNzk0YjVmYTNmNWM2IHJlbGVhc2UzMS1tYWludAorNzQ5ODEgOTIzNDMwNWQzNzQwMzg3YTczMjZkMzQ5YTQ3ZTM1NjEwODkwNzIyOSBsZWdhY3ktdHJ1bmsKKzc0OTgyIDZkOGI1NGIyMWI4NzdlZmZjY2IyYjE1NTQyOTQ4NGIxYzM5MmQ3ZTUgcmVsZWFzZTI2LW1haW50Cis3NDk4MyAyNzNjMjM0ODAwYzE4NDFkMzBiYmU3YjY0ODUxYjdkMGI3YjhjMTBhIHJlbGVhc2UyNi1tYWludAorNzQ5ODQgY2MzZDhhZmY0NTk1NjBjYTQ0Zjg4NTUzMWUzZTc1YTIzN2RlMGE2MyBsZWdhY3ktdHJ1bmsKKzc0OTg1IGM1OTQ5ZTEyYzY5MjllZDhkYjYxYjRmNTBhZWRkNmVjNDdlMmM4ZDQgcmVsZWFzZTI2LW1haW50Cis3NDk4NiA5YzkxNjViZDI5M2FlMjQ5ODY2MWJjNzA1NjlmY2EwYTI1NjE5OTdkIHB5M2sKKzc0OTg3IGM2M2Y4OTIzZTI0ZjY4YjZlZjNiZWEyZDVlNTgwMjExN2Y0YmY5OTIgcmVsZWFzZTMxLW1haW50Cis3NDk4OCAyZGY4YmVkZWM2ZDMzMzhjMzdkZjc2MzBjNTViOTg3ZmUzZWYzZDljIGxlZ2FjeS10cnVuaworNzQ5ODkgYTljZTE1ODlkNjk0ZDI5ODY1NTliNWJkZGU5NzU3NTA4OWNmNmI0YiByZWxlYXNlMjYtbWFpbnQKKzc0OTkwIDdjNDM0Njg3YjQyOTM5NmUxN2FhNWUyMTFkYzJiYjkzNzZkMTYyYjMgcHkzaworNzQ5OTEgNDAwOGEwMTM3ZGU3YjBkNjgwMjFhYWU4ODQ2N2JlODFlNzI1ZWEwOSByZWxlYXNlMzEtbWFpbnQKKzc0OTkyIGQ2MjdjNTg5MmZkNTQ4ZWY0NjNiZjUxMDMxYTNjNzVlMTI1MzBjYWYgbGVnYWN5LXRydW5rCis3NDk5MyA1Yzg3MDBjYzlkMTZlZDI2Yjk0YzRmYWU1YmYxM2Q5NzAwZTQ2MmE0IHJlbGVhc2UyNi1tYWludAorNzQ5OTQgN2E3NjQyYWIxMWIzOTI3Y2QyMmE0N2VmOWUzMjJmOTNhY2M5Zjc0YSBsZWdhY3ktdHJ1bmsKKzc0OTk1IDYyN2IzNDlkZjBlOGUyNzkxN2VjNGZlN2UxMzQ1MDk3YzA2MjQxZjMgcmVsZWFzZTI2LW1haW50Cis3NDk5NiAwMThmMmVhZTI1MjZmZTI0ZGRkNDlkM2Q0MGYxYjZmODdiNjFlYjE0IHB5M2sKKzc0OTk3IGY4ZTY5NmU0Y2ZmMWQ4MDRiNGNlNmEwNjUyNzk3Y2MzMGRlZGJiNzUgbGVnYWN5LXRydW5rCis3NDk5OCBhZjdhMTIwMGZiM2YzNWYwMWQ0MjBmYWY3NWIzZjViMzZlNTAyMTNkIHJlbGVhc2UyNi1tYWludAorNzQ5OTkgNGI4M2VhNmZjNWJkZTIxNjI3MzNlMTU5NzU3ZDA0NGNjZGE3MmUxYiBweTNrCis3NTAwMCAzYTNlMTQ1ZDU1MmM1YzliMDI5M2EyYTdmMWVhMzgzMDdkZGYzMDU1IHJlbGVhc2UzMS1tYWludAorNzUwMDEgMWZmZTZmYjE5YTE4ZGQwOTg5YmFjYTg1NTc1YTI1OWM1NDVhZmMzMCByZWxlYXNlMzEtbWFpbnQKKzc1MDAyIDc0MzVkNTkxYTMyNTgzYWUxMjYxYWI5ZGVkZTFhNDRkNTIzZjgxZjIgcmVsZWFzZTMxLW1haW50Cis3NTAwMyBiNzc3ZTBmMGI1N2NhMjExOTA4ZDM0MzYzMDgyZTdlNDUzMWQ1ODI0IGxlZ2FjeS10cnVuaworNzUwMDQgNWY2M2I1MTQyNzI1MjBmYjk3MDBjNjJmZTViMjg2MTk4ZmMyNTA2ZSByZWxlYXNlMjYtbWFpbnQKKzc1MDA1IGI3MzRkNmI1MTg1Mjk0YzVjODQzMGUyYmUyOWFkZTNiNWQ1ZDk5NTMgcHkzaworNzUwMDYgMzU3Yzc1ZDU5Y2U5OTRiZDY2NDQ4MGYwMzE0N2M2NjU1ODIxMTc2NiByZWxlYXNlMzEtbWFpbnQKKzc1MDA3IGY3M2NkYWUxOTdjNGQxZTJhMDhhNGIzMzM1YmFjZWFhNjQ0MjM2YjMgbGVnYWN5LXRydW5rCis3NTAwOCA3OGUwMGViNDVkYmI0MGQ4YWY0ZWE4ZWVkOTBkMzM2ZGQ4MzVlOWQ5IHJlbGVhc2UyNi1tYWludAorNzUwMDkgMWY1Zjc4ODE4YzUxZTgzNGQyOGJlMDQ4N2M5YWFmMzBmMDI0MTE2MyBweTNrCis3NTAxMCA4MmQ3OTdmZjlhYTNjMzhiZjdmMjk2OGEzOWI2MWNmNWExMmYwYWI1IHJlbGVhc2UzMS1tYWludAorNzUwMTEgNGNlNGRhODQ3ZDkzZjA1MDNkMjkwNGQyMzc2OTU1ZDE3ZjQzNmE3ZCBsZWdhY3ktdHJ1bmsKKzc1MDEyIGMyMzkyYTc5NzE1ZDYxZDZhMjEwYWM2MmE5NGNkZjljOTFhYzMwZTcgcHkzaworNzUwMTMgNTc0YTUzMmZiNDBiMTg2ZThlN2JhM2ZhNTc2NmZiZjU5YjgxYjJiYiBweTNrCis3NTAxNCBhZmRhMDg3NzYzYWYxZWRlZDllMTI3ODQwYzE3NDQ1ODI5NDg1MjEwIHJlbGVhc2UzMS1tYWludAorNzUwMTUgNzcxOTFmM2ExZDI3ZGRjNzAxNDk1OWI3YzJjMTc3YzBhNzE3YmE1ZCBsZWdhY3ktdHJ1bmsKKzc1MDE2IDViOGIxOGIwMGQ0Y2ZmMDVlY2YzZTA4NDIxYzRmMzM4NTA2YTVmYzggcHkzaworNzUwMTcgNTU1N2JjOGNiZjY1Zjk5NGNlNjE1MjM4YzkwZDU0YWM3ZTZmMzZjNSBsZWdhY3ktdHJ1bmsKKzc1MDE4IDA2Y2UyN2E4MmU5OWU3ZmUzZWQ4NGM0NTYxMzEyZDRlNmM1MWIxOTMgcmVsZWFzZTI2LW1haW50Cis3NTAxOSBjYWRiZmM3M2EzYjBkNjYyZjFhNjQwZGQxMjljODIzYWJiY2IyMzc2IGxlZ2FjeS10cnVuaworNzUwMjAgOWM2YTk4M2NmNmE5M2U1Y2U3ZmZlOWE1M2ZmMWU0NWE4ZWMzMmNmYiBsZWdhY3ktdHJ1bmsKKzc1MDIxIDJhZTkzZWFjNDIwZTJhYjlhOWM2Y2Y5NGNjOWM2YjVmYzhjNjdiZTIgcHkzaworNzUwMjIgNGNhMTE1ZjMzYjZiOGY5NjgzM2FkYzM5OWExNGI5ZTBjZDQzMjI3MiBsZWdhY3ktdHJ1bmsKKzc1MDIzIDRhYTdkZTY2MTM3ZmNjM2YzNmRiMWQwNWU4NzdmZTQ4NTBmZjAyZmEgcmVsZWFzZTI2LW1haW50Cis3NTAyNCAzMjI4YmFmYmU2YzkzODY1OGI5ZTg0YjM1NDQ2MDBhZGRlNzJhYTM5IGxlZ2FjeS10cnVuaworNzUwMjUgMmQzNGE3NGYwMDE3MjA2ZmU4ZDcwY2E3MDdlM2YzNTEyMzJlOGEzMyByZWxlYXNlMjYtbWFpbnQKKzc1MDI2IGNhZTA1M2M5ZjljYWNlNGJmZWE4ZWM1MmQ5MmRjODhjNDI3MTU2MjEgcHkzaworNzUwMjcgYjE5YThhZGQxMTJmODgyZDVjZjA5MzI5MzNkZDE1ZjAzZjQ1N2FlMCByZWxlYXNlMzEtbWFpbnQKKzc1MDI4IGQ1OTlhM2YyZTcyZDZlMGM0M2U1N2EzYThkYmQzNjI3N2FiMTcwODYgcHkzaworNzUwMjkgMWQwZDZmNzQzNzhjNmI1MmM3YmE3NDUzNzc4MjAxMWZkNjZkMzIyZSByZWxlYXNlMzEtbWFpbnQKKzc1MDMwIDYwMGVkMmRkNzY3Mjg5MTk3N2RkODRiOTk0MjA1YTFhZTQ1MTQ4N2EgcHkzaworNzUwMzEgOWNhYzhiYTZmNGE5ZGM1OWVjZThmMmFlMmJmMWYzMDNlMjJmNzRmMiByZWxlYXNlMzEtbWFpbnQKKzc1MDMyIGMyNGYwMDAxODJmNDU1NWNkNTllYjg2YTgwMTU5ZjZmZmZjZjQzZDQgbGVnYWN5LXRydW5rCis3NTAzMyA2ODg5OWRjMTE3ZWIzNWZkMzk2YmZiNGIwZDA3YjNkYjZlNjBiNjYzIHJlbGVhc2UyNi1tYWludAorNzUwMzggNTg0ZGIwM2U1MjQ4MDdhNGU3OWU1MDNiOWIzM2VmMzZhYzk2MGIzOSByZWxlYXNlMjYtbWFpbnQKKzc1MDM5IGI0YWI0OWUyODMwNTEwM2M5MjUxZGY0M2MzMjY2OTY5YTNkMTI1YTMgbGVnYWN5LXRydW5rCis3NTA0MCA5ZGFmODg0MGE0NzNlMDhlNTQ3MDQ1MmE3ODA0YWRhNzVhNDNiYTBkIHJlbGVhc2UyNi1tYWludAorNzUwNDEgNTNhNmIzOWVlNGI2NmQ5NDNjMzc1ZGMyNTgyMmRiNzUxMzI2NGE1NyBweTNrCis3NTA0MiAzZmQ3ZjEyMjU1NmE5NjFhNWE5ZGY1YzdlMTcxYmNiYjY3OWY4MmFjIHJlbGVhc2UzMS1tYWludAorNzUwNDMgN2Y3Y2ZhYTM4MzJlM2UyNWEzZGFmZDhlMDZjMDdkY2M2NTc5NzhiZCByZWxlYXNlMzEtbWFpbnQKKzc1MDQ1IDFkMGY0MTZkNGJhNjQyZjM1ZThiMDEyMDcxMjZiNDBmY2JlODI0MTEgcHkzaworNzUwNDYgODk2NjcwZDQxYzlmNzRiMzFhODIyNzQyMTkzMDcxMWJkNDllZTEwZiByZWxlYXNlMzEtbWFpbnQKKzc1MDQ3IGY5YTcwZjIyNTYyNTBlNzFhYTMwYmEzMzNkZjc2ZjhjMzAxMGMxOWIgbGVnYWN5LXRydW5rCis3NTA0OCA3ODVlY2NjMDI1YWM2ZTlmZGQwNzM3ZDEzNzBmM2MyYTA2ZjcwNDc2IHJlbGVhc2UyNi1tYWludAorNzUwNDkgNjU2ZDFkNDBmZWNiZmM1NTljNWY3ZGE4MTBkOGQ4ZTM0ZDA5MTI3MSBweTNrCis3NTA1MCA1OTJiYjgyNTljNTQyNzgwNDVhM2FjMTU4ZTcyZDU5YjU3YmQ5M2VhIHJlbGVhc2UzMS1tYWludAorNzUwNTEgMGY0ZTk1ZmY4NTlkMmNhYzYwMDg0ZDM1NWQ3MzBkNmIxYjZlNjU3OSBweTNrCis3NTA1MiAyOGUyY2UwMGY1NDViZjRlNTdhN2FlYWFjNDRkM2NkYzg5NTliNGZjIHJlbGVhc2UzMS1tYWludAorNzUwNTQgM2RlZjk1MmI1MTVjMmI0NThkOTRkMjA0ZmY4YWVjZjUxODJlNjA1NyBsZWdhY3ktdHJ1bmsKKzc1MDU1IDM1NjdlODcxNTdkODM2MzFhMTYzYTkxYWIzNDgzYzc3NGY4M2ExYTEgbGVnYWN5LXRydW5rCis3NTA1NiBlMDczZmM4OGRjODk0N2YyMTAxNmVkMGQ1ODE5YzYxMTUwN2NlYzM4IHJlbGVhc2UyNi1tYWludAorNzUwNTcgOGVhOTIxYzdkMTBmYTEyMzcwZjU5OTcxNzU0ZjUyYzlhODIyMzZiZCBweTNrCis3NTA1OCBhMDc1NjhjN2E4MmFjYTUyN2FmMGFiOTYzYWExNjlkMDExYjM4ZTJhIHJlbGVhc2UzMS1tYWludAorNzUwNTkgNTBiMThhZThjZWM0NDkyN2U0YWVhOTkzZGRkNjRiMGExMTBjNjEyNyBweTNrCis3NTA2MCAxNDliZWQyMTczNWUwNzRhZTMxY2ZhY2Y3ZWRhOWZiYzM0MTU5ZGZhIHJlbGVhc2UzMS1tYWludAorNzUwNjEgMWI5ZjE0ZTVlOWU1MDdkNzhlNmI1ZDgwOGI1ZTVhMTQ2MDU2M2YzMCBweTNrCis3NTA2MiA4Y2M4MmRjNmJiYjAyM2YxZWM3ODRiMmMwMTQ3MjJhZWY1YWZhODk4IHB5M2sKKzc1MDYzIDI2NDRmNTRlMzY3NjNlMzg2NjVkMTk0YTIzZjdjMzFjZDkwNjQzM2IgcmVsZWFzZTMxLW1haW50Cis3NTA2NCBiYTg0MWJhMDBkMDYyMjJkMDliZWRlY2ExNzZjOGMzMzllMjZkZjg0IHB5M2sKKzc1MDY1IDc4MWVmOTVjYjc4MTg3NmNmZTE0YmVkNWY3YTk1NjU2ZmJiYTdjYTAgcmVsZWFzZTMxLW1haW50Cis3NTA2NiAyYmZhZGRiMTljM2ExYzY1YmJhZmRkNjBkZWUxZmY3Y2E1Mjk4NmFiIGxlZ2FjeS10cnVuaworNzUwNjcgMDBhNWNmMzc0MzE0NjI0MDFhMWQ3NjI3ZGI0YzNlNmU1Y2IzMTRlZiBweTNrCis3NTA2OCA4NWUxZGRkZTU2OWUyNjNhYzQ4NWMwMWJjYjdmZDJlOTU4NTVjYjRmIGxlZ2FjeS10cnVuaworNzUwNjkgZTk5MDI0ZWRkZmI0NWM2MzNiOWI5YTk1NzhlZWEzZjlmNzlmMmEwNyByZWxlYXNlMjYtbWFpbnQKKzc1MDcwIDg5ZmEyNjQxNzE1ZDM0OWE5NDI5NWMyNmJhMWE3OTcwNDZiMmJiNDEgbGVnYWN5LXRydW5rCis3NTA3MSBhY2JmYzY5YjU1ZjNlMGQ2NDgwN2NlZDljNjZkZmI0OTBkMzk2ZGRkIHJlbGVhc2UyNi1tYWludAorNzUwNzIgMDc2YjIzMzM1MjYzN2UyMmM5NTFhOGFiZTBjZTIwYjc2Nzc0MWQzYyBweTNrCis3NTA3MyBiZjliZWY3MGY3ZThhYzYyOTFkNjg1YjEwNzAwNmI1MGE0NmNiMDQ1IHJlbGVhc2UzMS1tYWludAorNzUwNzQgMjAwNmEyZjQ4MTJkNzY3ZjY5ZWY3Y2ZjMGY5Njg1OTBlYzEzMTljYSBweTNrCis3NTA3NSBmM2M1OTUyMTRhYmM0MDA2MWQ4MjdjMTJkNjNkYjVlZjg5Yjk3YWViIHJlbGVhc2UzMS1tYWludAorNzUwNzYgNzM5MTQzNmQ4YTc0ODlkNDYxYjI3OGFjOTVlZWZkNDM5NWM3MjI3YyBsZWdhY3ktdHJ1bmsKKzc1MDc4IGRkNDU2NDk2OTA5Y2Q0Y2NhZWYzZDdmNjY2M2MwM2U1OTU3MjVhZDEgcHkzaworNzUwNzkgYjA1MGVhN2JhZjQwZGViYzk0YWMxZDYzMzNiYmFjMTE0MWExODhlMCBweTNrCis3NTA4MCA3ZWUxNDBiN2VmOTNiYWZkYWNhOGRmYjUzNDI2NjY1MTQxNjExYWM5IHB5M2sKKzc1MDgyIDA0NTNkMThjNjNhNGU4NTgxNzZlOTMzOTIzZGQ0ZjUyOGM0YWRiNDIgcHkzaworNzUwODMgZDY4ODlkYTA2NTJjN2Y4NmJiMzgzN2FlNDM0Mzk0NTU3NmM0NTRhYiByZWxlYXNlMjYtbWFpbnQKKzc1MDg0IDU0NjEwMWE2Njc3Yzg0ZTMzOTdmYjZiYTQyYWY1ZWM1ODRhY2YwMTAgbGVnYWN5LXRydW5rCis3NTA4NSBiMGU5NjE5YjMxZDhkMGExZDg3MjcyNjFiNGQ1MzZhM2Q5MDhkNDNhIHJlbGVhc2UyNi1tYWludAorNzUwODYgZmNiMzFiZTIxMzZkNjRkMDQ2YTU0ODkxNzNiOTJmN2JhYzYxYWVlNyBweTNrCis3NTA4NyBjMGQ5NTYyNWYxN2RlNzhmZGQ3NDY1OGNjNjJkOWEwM2E0OGI1ZWFiIHJlbGVhc2UyNi1tYWludAorNzUwODkgMWE2NWRkZDdkOWUxNTFkZjEzZTdmMjdiN2QxMTRjOTM0ZTU5MzE2ZiByZWxlYXNlMjYtbWFpbnQKKzc1MDkwIGYzZmEzOTY3ZjQ0NjQxZjU4OWEwZGI2MTljZDM4OTc0NGVlMDk1MGEgcHkzaworNzUwOTEgM2RlYzNiNzdiNzg3NWJjMzcxYWVhZjRkMDEwOWRmOGY5OWVhYzgyNSBsZWdhY3ktdHJ1bmsKKzc1MDkyIGEwNDEwODRjMWZkZDY2MjcwZDg2MGJlMWUzMjM4NDNjNTBjMzM4NTggcmVsZWFzZTI2LW1haW50Cis3NTA5MyA5MTBkYTU0NWUxN2JjNWYxYTQ0MTBiYzI5ZWE3ODkyZmMzYWE3OWY3IHB5M2sKKzc1MDk0IDdkMDI2ZjcwNjQ1MGQ5ODAzZDRmYmFkYzAxMGRmNTgxNjJiMmFiMGMgcmVsZWFzZTMxLW1haW50Cis3NTA5NSBiYjhiNzcwY2U4OTBlOTFiZGZmM2U1NjI4NzI3OGVkYWFmNmQ1YmVhIGxlZ2FjeS10cnVuaworNzUwOTggZjA0YTFmMjAyM2VjYjY4ODFiZjE1ZDY5MTM2NzBiNmVkYTE4NzBhMiBsZWdhY3ktdHJ1bmsKKzc1MTAwIGRlYmIyNDVlYmI0MDE4ZDE4YjgzY2QwNzEwMjRiNDQ0ZGEwNDk5OGMgcHkzaworNzUxMDIgYzc2Njc0YzJkNzRkMDM5ZjkxNmZkNTdiNzAzZGRlYmQ0NWYyZDhhMiBsZWdhY3ktdHJ1bmsKKzc1MTAzIGU5NTIxODYwNTMwMGVkMDY0ZGM4ZTU5ZDc0ZGRiYmMxZDNmOGRhOTYgbGVnYWN5LXRydW5rCis3NTEwNCBhYjQ5ZTBhYzhjOGYxMzFlMmMzZDVjYjdhZDdkNTlkYjQwNzI2MWJiIGxlZ2FjeS10cnVuaworNzUxMDUgYjZhZmY3YTU5ODAzMDA5ZDhmZmM5ZmIwYWNiNTZkOTg2ZGFmOWUxNyBweTNrCis3NTEwNiA5NDU3Mjk0OWMxY2E0YmRlMTMzODE3OGE4OWI3ODVjMmM4ZTE1YTllIGxlZ2FjeS10cnVuaworNzUxMDcgZDEwOGZlNzdjMDZjMjU2Y2VlYWU4OTJjYWQzMmYyMmYxOWVmNjBmZSBweTNrCis3NTEwOCA3MDEzZTM2NTExYThjZWRlZmI4MWViOWU1YjIxNzgxMGVkZGExODU4IHB5M2sKKzc1MTA5IDg5Mjc3MThjMTk4ZmY3YjdhOWY2NWNhNjc2OTUxNzU0NmVhNzM5NDcgcHkzaworNzUxMTAgM2FiNDY0ZmQ1ZTAxYTVkZGRhNmViYTY4N2I4OGRiNTJhODk1ODYxMCBsZWdhY3ktdHJ1bmsKKzc1MTExIDUyMzFlYzUxMmM3YWZkMDRhMWU1NjY4ODgzMTg5ZTM2MTk5MTlkYTggbGVnYWN5LXRydW5rCis3NTExMiBjZjkwYWE1N2IyMGJjMzY3NTIxNjk1OGExMWFkM2U0YjRkOTQxMjgzIHJlbGVhc2UyNi1tYWludAorNzUxMTMgOTllMzZmNDdjYTBmNzY2ZjQxMTAxYjNjMGJiMmJiYWNmNjYzMmFiMiBweTNrCis3NTExNCA0ZWM5MTVhNWJiNGUwY2ZjODA4ZmZmY2FmZWEwMWQxNWY3MzY1YTFjIHJlbGVhc2UzMS1tYWludAorNzUxMTUgN2Y2OTVkZDY0ZjkwMWQzMmYyZWQ1ZTU2NWI4MTIyOWFlYjAxZjk0MyBsZWdhY3ktdHJ1bmsKKzc1MTE2IDU2YjUzMDAyOWJhY2Y2YWIyOGU4NWEwMGQyMDA0Y2ZjMzZhNDJiYTkgcmVsZWFzZTI2LW1haW50Cis3NTExNyBiNTBkZDE3ZGZlMjYyYTQ3MjVmNGFlM2U2ZTQ3MGExZmQ0MDBkMzVlIGxlZ2FjeS10cnVuaworNzUxMTggNTBjMzBhODI4NGZiYjRjZTRjYWIyMGI5NDQyNDIxMzg3ZWEyMTc3ZSBweTNrCis3NTExOSA0N2I4MmZiZGMyYmIxZTAwZjAzNjk2N2U1MTI0YjBhNGJkZDc5NGQ5IHB5M2sKKzc1MTIwIDIwMTI0ZWI4ODExYmJmYzg1NmMyYThjYTYyZjJhOTNlNmYyMzM3ODcgcmVsZWFzZTI2LW1haW50Cis3NTEyMSBiOTg1YmNkYjhiOTE0YjNjYWQ0ZTc0ZmI0MDA5NTMwOWQwYWJlYmI4IHJlbGVhc2UzMS1tYWludAorNzUxMjIgODI1MDIxODI1NDYzOTBlYWFhYmNlOTI2N2YzYTA3MmM3YTM5NDE2MyByZWxlYXNlMjYtbWFpbnQKKzc1MTIzIGVlYmYzZDUxZDNhNDZmMzU4MmVkNDdiMzJhZjVkMGVjZGJjZDA3NTEgbGVnYWN5LXRydW5rCis3NTEyNCBlZTlhNTUxYTg3NWVkNGZlNmQ1Y2U0YmI5YjRjYmRmNWI0ZjY0YmE0IHJlbGVhc2UyNi1tYWludAorNzUxMjUgYzYzZTA2Mzg3YjhmY2RmNmExZTI4ZWI2NDI2NGE2YzY2ZTM4NmY0YyBweTNrCis3NTEyNiA3NGIxOGEyNjdjZDc1MmFkYTNiM2RiNGVmZGZlMmQ1MmNlN2U1MWU2IHJlbGVhc2UzMS1tYWludAorNzUxMjcgZWRkOWE1ZTNjYWZiNmYwOTZlMWEyNjYwM2JmNzI3MGJhMjc0ODY3ZiByZWxlYXNlMjUtbWFpbnQKKzc1MTI4IDM1NzdhZjUxMmRmNTczMDMzZjViOGUxOGZlODM0N2FkMjYzNmRmMTkgcHkzaworNzUxMjkgZjI2YjgwMmMwMDNlNWMwMDM1NDA3NDZlODQxYjdmYjI3ZDA4OGQ3OCBsZWdhY3ktdHJ1bmsKKzc1MTMwIGE4ZDBlNzY0ZTM0YjFjYTJlZGNiNDVmZTFjN2FhYWMzNGM3NzMwZjUgcmVsZWFzZTI2LW1haW50Cis3NTEzMSBlNWI4MTIxMmZkZmQ3MTc2OWY0MTJmYWZkNTRiYWE4ODNiMzhiZTg0IGxlZ2FjeS10cnVuaworNzUxMzIgOTg2NzA5YzI0NTMxODk0MDcwMWQxYmZhMTc2MzE4ZjVmZDk4YjZiZCByZWxlYXNlMjYtbWFpbnQKKzc1MTMzIDRkNzQ3MzQ0OTVjZmQ2Njg3ZDExOTM1YjkxMjM2ZDg5ZTc1OWIyODEgcHkzaworNzUxMzQgZTBmMjM0MTE2YWIxNDk4MzU2OTI5NGVmY2FmM2QxM2EwZGIyNTI4MSBsZWdhY3ktdHJ1bmsKKzc1MTM1IDJlMmMxNDJiYmVhYTk5YWMxNzNjOGQ4NGNkNjFiYjUxZmIxZGQ2YzYgcmVsZWFzZTI2LW1haW50Cis3NTEzNiAxODQzODg2YjJiMWQ4NjBiMDhjZjk2YmY4ZTM0NjJiODg2NTYxZGE2IHJlbGVhc2UyNi1tYWludAorNzUxMzcgMWY3MzYxYzc0MjM0YzVjY2MyNDRiYjAxNTI2NzI5NjAwMWNlYzliMSBweTNrCis3NTEzOCBlNzJhNzNhZDdlMjk0Y2JlZmZhMWY1YzViOTBhODg2NzllZWY2MmQzIHJlbGVhc2UyNi1tYWludAorNzUxMzkgOGU5YmRjNmExMDBmYTA4NmJkNDY2ZmJhNmYyYWM2MmMzMGJiMjkyZCBsZWdhY3ktdHJ1bmsKKzc1MTQwIDE5YTRhNjIzZDhiNzA0NGMyYjFiOWUyNTFiMmM4YjA4YTQyNDI0ZmMgcmVsZWFzZTMxLW1haW50Cis3NTE0MSA5MWY5ZGY1MzY3YzFhNWYxYzYxNDZjZjg0ZTk2ZGIzOTE3MWY1YTcwIGxlZ2FjeS10cnVuaworNzUxNDIgYTE3Y2Q5ZmNkZDQ2OWVkMWYzODUwOTJjZDgwODE0NmJmMWYyMDYwYiByZWxlYXNlMzEtbWFpbnQKKzc1MTQzIDFlYTAzZjg2ZTA4MTNkZDgwZTU5ZjBhNjc1NTJiMmY1YThkMTE1NTcgbGVnYWN5LXRydW5rCis3NTE0NCA3ZTE4NTYxNjdjNGE4MmVjMTc1NDAyOThjYzgyNTgzZTU4ZTc0MDAyIHJlbGVhc2UyNi1tYWludAorNzUxNDUgYmExOTY2MmViMjIxYjgzZTYzODE4ZWU0YjEzYTE0MmYzMzE0ZDI4MyBweTNrCis3NTE0NiAwOGU1OTA3NmQ4NmIyY2FlMGRmZTI3Y2Y1NTkwZmI5M2U4MTYwYTUwIHJlbGVhc2UzMS1tYWludAorNzUxNDcgZjk5YmNhNmFiMGRjYzg1ZTc4YTRmYzA5NTkzYzdjYjMyNDExYjNhZiBsZWdhY3ktdHJ1bmsKKzc1MTQ4IGRhZDc0NTNkMGQwODYyYmI3MzAyNTUzNzg4Zjg1YjRlMWMzMTM2MzcgcmVsZWFzZTI2LW1haW50Cis3NTE0OSBkZjU4ZmYyZGUwOWJhMjE4NWMyMTE5ZjI2NGI2MzhlOTc5YzdkMjUzIGxlZ2FjeS10cnVuaworNzUxNTAgNjcxNmM1ZjhjNjBkNWNlNTQ2MDM0YTU0YTgzNDMyODUzNTg1MzkwNSByZWxlYXNlMjYtbWFpbnQKKzc1MTUxIDE4NzM1NDJjMDAwMDBjNGI3Y2UyYzc5OTJkMWYyZDg3Zjg2NjIzMmEgcmVsZWFzZTI2LW1haW50Cis3NTE1MiAwZWZmZGIzOWM0N2I3YTA3YjE5OTdhNWRiYjViZWU2Njc2NjEzZTNmIHJlbGVhc2UyNi1tYWludAorNzUxNTQgN2JjYWYwNjRlMjQwNTY3NGQ4YjU2ZTBiNGVjYmYxODY1MDIyNTk5OSByZWxlYXNlMjYtbWFpbnQKKzc1MTU1IDVhY2FlNDZhZjg0M2ZhOGMzYWQ5MTI3MWE0MWIwZDBiZGUzMmRkYzcgcmVsZWFzZTI2LW1haW50Cis3NTE1NiBkOTEyMDlkODI1MWRlNjA1MzBjMDY2YTU2ZjQ0OTc0MTJlYjQ1NGY4IHJlbGVhc2UyNi1tYWludAorNzUxNTcgNWYyNDVkYTcyYWViYjRkMjc3ZmVhNDRiM2JlMGJjNDM1NWUwNTI2MyBsZWdhY3ktdHJ1bmsKKzc1MTU4IDFjMDE2ZjBlOTRiYWMxZjY0MjkwZjliMmNkODY5MWRkZjFlMmVlZjQgcHkzaworNzUxNjAgMTZjOTg1ZGFhZWIwOWQ2NTNiNjRjZmViNzZkNDg0Zjg5OTQ3Y2Y1MiByZWxlYXNlMzEtbWFpbnQKKzc1MTYxIGU3ZTQ1MjQ0OWE1ZWFjOWE4YWNjYmJmY2E3NTUwMTgzZDFiMzM5M2YgcHkzaworNzUxNjIgNzAzZGU1NWUwMGI4NWQ2N2VlMDRkNzM4YWQxNDM5NTMxOTA0ZjIxMiByZWxlYXNlMzEtbWFpbnQKKzc1MTYzIDA4NDU4MGEzNDliNzExMzc4NjU3NjIxNWZiZmY0YjVjYjkxZDc2ODUgcHkzaworNzUxNjQgMzM5YjgyMzIxZjhlZjYzOWExY2I0OGY0MDNiNjUwY2IyMWU1Y2VmZCBsZWdhY3ktdHJ1bmsKKzc1MTY1IDNlMjg4MTZhYTBhMjMyNWE3MjdlZjYxYmJhMTVjYjU4OWI1MzgyY2MgbGVnYWN5LXRydW5rCis3NTE2NiA4MDdiMGQ1OTczMTRiMmY0NGI1NWY3MTA5ZjIwNGJlZTAwZDc0NTE3IGxlZ2FjeS10cnVuaworNzUxNjcgOTIxN2JkMGNjM2ZjZDUwMzgwMzQyYzMzMTNhMjIxMDM0ZTlhOGE4NSBweTNrCis3NTE2OCAxMDY0NTU1MjM3ZTIxOGNmZDM5ZjA5NmUwMzE4MTNjMDE3Y2JkNTI3IHB5M2sKKzc1MTY5IGUxZDY5NTFiZjM5ZDdkZmNkYTYwYWFmY2ZmZmVhZWViOGIwNTY5ZmIgcmVsZWFzZTMxLW1haW50Cis3NTE3MCA1ZWMxNWRhMWZjNDIyMDVhMWUxM2UxOWMwZjM3YjQ1YjkwZTMwN2EyIHJlbGVhc2UzMS1tYWludAorNzUxNzEgMTE3YjMwOGJlMzIxNDM2YjZiYTkxOWE5MDExYzgzMzhjODQ3NzQ1MCBsZWdhY3ktdHJ1bmsKKzc1MTcyIGNlMjE0ZWU0MTE2NDkyOGEzMGI2NmRkZWZiNGUxYTA4YTllOGJiNGEgcmVsZWFzZTI2LW1haW50Cis3NTE3MyAxNzAwYTc4OTczY2Q4MTQ2YjBiODJlY2UxOTFmZDFmMzU2ZmQzOTQxIHB5M2sKKzc1MTc0IDJjN2IxZDVjOGI2NWIxY2VjMWUyOWViYzMyNTc5NGMzMzM0MjU3MGYgcHkzaworNzUxNzUgZGMzNTAwZDM5ZWYxNDg5OTE4MWIzMDBmNmZiNWU0NjBiNzJiYTgzNiBsZWdhY3ktdHJ1bmsKKzc1MTc2IGZlOGI5YjczZDlhZjBkNGQ2ZjRjZDI5NjNkMzg5Y2RlMGM2YTc3NDEgcmVsZWFzZTMxLW1haW50Cis3NTE3NyBlMzA0ZDlmMzRkMTUyODcwNTMwYjJkODEwOTg0YjczOGJhNzBhYzhkIHB5M2sKKzc1MTc4IGZlOTY0YjNjOTY2MmM3NzJlZTQwYzM3ODc0ZWM2ZDU2NWQyNjU2MWMgcmVsZWFzZTMxLW1haW50Cis3NTE3OSA5ZjE5OGIwZjM2N2ZiYTA0ZGFjMzYxYmEwYTNhNWU0YmMzMWMyNmMzIHJlbGVhc2UzMS1tYWludAorNzUxODAgZTZhNWViZTVhZWRkOGVlMzAyYmQ0MjNjZDRjZGIyYTkyNmU4NmYzNCBsZWdhY3ktdHJ1bmsKKzc1MTgxIDc4M2U2Y2MyYWI2MjM1MTk2YjkyNzA1MGI2YWE5YjVjYzkyMTJkYzkgbGVnYWN5LXRydW5rCis3NTE4MyAwMGMzMzk2ZDdhOGM0YWI0YzJjODQxZDYxMDEzYTA3M2FlOTIxZDBmIHJlbGVhc2UyNi1tYWludAorNzUxODQgOGU3YTY5Mjc4Nzk4MTU4ODczMmY2NTBhYzJmY2FhNTAzNzJhMGMyYSByZWxlYXNlMjYtbWFpbnQKKzc1MTg3IGM4NTBjZTk3N2JiOTgyZDcyNTFkM2Y3ZmE0NzMwYmU0Y2ZiNWY2YTIgcmVsZWFzZTI2LW1haW50Cis3NTE5MSA0YzU5OTgzYmIwNTc5NjY1NzA2MTZjMmMzZmQyMDk1NGMyNmY5YzZiIHJlbGVhc2UyNi1tYWludAorNzUxOTIgYzJjOTBkMWYzYzMzZWM2OTcyNGU2OWY4MzJkNGMzNGE1Y2Y2ZjEwNSBsZWdhY3ktdHJ1bmsKKzc1MTkzIDcyOTAxNDBjZDMzMDI3MDQ0NDQwYTYzYjFkNTZiODIwYTlkMDYwMDkgcmVsZWFzZTI2LW1haW50Cis3NTE5NCBjNDExOTI4NmZhYTc1ZDdkZTllMjFkMTA3N2M2YzNhN2VjNmJkYmU1IHB5M2sKKzc1MTk1IDliMWViNWU3NWUxNTllN2U3ZWQzZTNmOTg1MzY2OTk0ODNmMDY4ZDQgcmVsZWFzZTMxLW1haW50Cis3NTE5NiA3ZDdmOTc4M2M4NmRiMTQ5M2YzNTYwNDM4OTVkODhkYTk4M2M3ZTJmIGxlZ2FjeS10cnVuaworNzUxOTcgNjc0MDliYzk5ZmEyYmNmMDAwMTQwY2EwM2ZhOWY1ZDRlYWE1MjEzMyByZWxlYXNlMjYtbWFpbnQKKzc1MTk4IDc3ZWUyMjA2ODZjYzUwMmJiMDI5NTliOTE0NmNhMGM4Mzk1NzhiMzAgcHkzaworNzUxOTkgMjc1ZDYwZjkzZDNjNWY2MTkwOGU4ZDdkMzVmZWE5MjAxMjc0MzFhMCByZWxlYXNlMjYtbWFpbnQKKzc1MjAyIDQzMTM1MGYyMWQ4N2U5ZDhlYzcwYzZmNWFjNjVjMzIzZmJhZTcwYWYgcmVsZWFzZTI2LW1haW50Cis3NTIwMyA5MTMwZmU5YzU4YmY5N2RmOGQ0M2ZkMjMzNjRhZjA1NmJmMmE3MGIxIHJlbGVhc2UyNi1tYWludAorNzUyMDQgZmM3NGQ1MWE2Nzk3NDFhOWQ1MzZjMGFhNWQ0ODhlN2EzNGZmOTQ3YSByZWxlYXNlMjYtbWFpbnQKKzc1MjA1IGQ0MTM2MDkwYWMzNGY5MWVkYTExZTdlMzRkOTMzY2Y2MDRhZjU3MDQgbGVnYWN5LXRydW5rCis3NTIwNiAyNWNmYjcwYmNkNWU5ZGQwOGNmMGU1OTBkZjQ1NzY1NWYxM2Y5MzRhIHJlbGVhc2UyNi1tYWludAorNzUyMDcgM2VlMDRlYTljYzZlMmY3MzFmNzUxM2YyYTVkZTcyNzg4OGEwYmU5MiBweTNrCis3NTIwOCA5NDZjZWNhZjY0YzFmMWQwNzdmNjZjMDIwZjY1MzdmODczYzc5OTMzIHJlbGVhc2UzMS1tYWludAorNzUyMDkgNTM4NGM4ZWU0YTI2Y2UwMWU3NzA0YWYzOWRiOGFmM2ZlN2YyZmJkNyBsZWdhY3ktdHJ1bmsKKzc1MjEwIDM5Yjk5OTRlODY2OTNiMzUxZDJjM2VmOWFjMmFmNWYyYmM2ZmNhMDMgcHkzaworNzUyMTEgMjhmYmNjNzljMjBhOTNjNmE2NTI5OTBjMWZlMzQ0MGRiMzkyZTM1OCByZWxlYXNlMjYtbWFpbnQKKzc1MjEyIDZkMGRmZTNhMTNjYTE4YWIzNGI1M2RkNjNmNDJkNTI5MDJkYTkwYTMgcHkzaworNzUyMTQgODQ5ZmIyN2M1NTk0NjYyNDRiZTJjMzgzZmE4YWVkMTZkNjVjZjQ0YSBweTNrCis3NTIxNSA1MjI3ZWFiZGJiNjQ3NTg2MDhiNTFiOGU0MThlMDU5MzhkMzFjZjQ1IHJlbGVhc2UzMS1tYWludAorNzUyMTYgNTNmMTdjYzdiZmY2N2M2YzBjOGVlMzYwOWIxZDM4MDcxMTZiOTM0NiBweTNrCis3NTIxNyBkNTQ5MzY2ZGQyMThiMzI0MGMzYWJhZjNkOGVkNDk3NmMxOTFhZDJjIHJlbGVhc2UzMS1tYWludAorNzUyMTggMTUwY2RhZWE1OGVjNjkxNmFjNTE5ZDA5MzM3YjNkM2U2ZGJjYjI0NyByZWxlYXNlMzEtbWFpbnQKKzc1MjIwIDZjZmY2ODJhMzA5ODFmZTIwMzM1MzgxNjQ0NmQwNjc5OGE4YjVlMTggcHkzaworNzUyMjEgNWMwYTc4MDAyMTVhNjc0M2JmMTdiZmNjNGI3OTJlMTk2MDczZGViZSByZWxlYXNlMzEtbWFpbnQKKzc1MjIzIGNjZWI2MmViMWNmMTgzMmIyNzYyYmRmZWFmN2M5ZjFlYzVhYzg2MjQgbGVnYWN5LXRydW5rCis3NTIyNCA0NWZjZTMxMGQ0NzkyY2MzZjlhZDMzNjExODY1MmU4NjY1MGY0MTY3IHB5M2sKKzc1MjI2IDRmNDliZDJlN2M1OGQyOTg0OWQyMzdmYWU2ODBmZDg2NGQwNDNiY2EgcmVsZWFzZTMxLW1haW50Cis3NTIyOCAyMThjZGQ2YzY4NDI4NWQ4MmI4YjA4M2E0ODAyODU3NGFiYTEzODE2IHJlbGVhc2UyNi1tYWludAorNzUyMjkgZDVkOGNiOThlYjJhZWVhMDlkOTg1MzBhYWNkNTk1NDg1MDY1MmZjZSByZWxlYXNlMjYtbWFpbnQKKzc1MjMwIGY0MDU2ZjhmZWVjMjZiZDI5MjUzNmRmNjE4ZWZhYWQ4MDk1MzUyZWUgbGVnYWN5LXRydW5rCis3NTIzMSA0MWJiNWUyZGM5NDdhYzNmN2M0YWY5NDZjMDFhMTRlMGIwYWQwNjdiIHB5M2sKKzc1MjMyIGM5YmQ2MmVmZTZjZTU1MjRlMTc0ZDEwNjNkMTY1YjhjOWJlMGIzNjMgcmVsZWFzZTMxLW1haW50Cis3NTIzMyBiZWMyZTQ0NWUyMjRiNjVhMGRmMTIxZDYxZjk5OWU4MGQ0YjMxMjBjIHB5M2sKKzc1MjM0IDViY2UzYTU5YmZkMmM1ZWZjN2JhOGZjNzFiZjc5ZWNlZmQxNGM5YWIgcmVsZWFzZTMxLW1haW50Cis3NTIzNiBiYjJhMTIzY2RkN2JiMmFmNTgwMTkyMWQ4MzUzM2IwYzQ4YjFlMDQ5IGxlZ2FjeS10cnVuaworNzUyMzcgMzIxYzIyMDdkNWY4ZmE5NDViNTI5MTdkNGE4NDU5YmJlMTA3NzQyZCByZWxlYXNlMjYtbWFpbnQKKzc1MjM4IDkxOWEyN2RkYjRhMzIxMTg2YjEzMzQ1YTM1ODkyMjMyZTliMWI2YzEgcHkzaworNzUyMzkgMDUzODkwMTRiZjQ0NDljZGEwNjI1Y2UyYTRiMjY0ZWIwYTk3MGVmZiByZWxlYXNlMzEtbWFpbnQKKzc1MjQwIGEyY2FiYjM2MjU3ZjNiYzAxMzA1Zjk1ZDhjMDMyZDM1M2I2M2M2MDEgcmVsZWFzZTI2LW1haW50Cis3NTI0MSBjMjE5ZjcyNjFkOTg2MzU2MzExNmQ1NDQ3ZGM2Nzc2ZjNmZThhYWNlIHB5M2sKKzc1MjQyIDkyMmMxMTIyYzkyNWI2YWU1NjJmMThmZTcyMGE5OTA3YTFkZDRjODQgcHkzaworNzUyNDMgOGRiYjBmYzM5OThhZDA4OTA0MjQxNTUyNGI3ZWNlYzI5ZjVmMGQ4MyBweTNrCis3NTI0NCBjODI3NzEwYmNkZmRiMmY2MWM0MThlYzc0NGJjM2JjOWVjYmI1NDg2IHB5M2sKKzc1MjQ1IDEzOGM3ZmMxOWI1ZDZlZWM0ZmMzNDBjYjY0ZGY5NjhmMDAwYzllMzcgcHkzaworNzUyNDYgMmI3ZTBlYWFjNjRlZGQ0MDAwYTNmNmM0NGQzOWE2NDU1ZDk4ZWM3YSBweTNrCis3NTI0NyAyZTRkN2E0MGMyZGQ3ZTEzM2I3MWE5ODc5NzQ3OTk2YTdiOWRlMjNkIHJlbGVhc2UzMS1tYWludAorNzUyNDggYjBiOWU1OTI4ZGE5OWRkZGEyYjc1Yzc0YzRjNjZjZGU4MmQyMDk2NyBweTNrCis3NTI0OSA2YjIzYjBlYmE0MDUxNjVhMGIxYTJkYzliNjdkZDc4ZjZjNWQwMzFjIHJlbGVhc2UzMS1tYWludAorNzUyNTAgN2FhNGE0MjExNTJmOTI0ZTExZjEwNzIxY2EzMTAxYmIyOGU1ZjQ4NiByZWxlYXNlMjYtbWFpbnQKKzc1MjUxIDM4YmUyNjM5MDM1NTAwNGI2MWE1YzAyMGQ2NzM0MzkwNjM4OTI0YTcgcmVsZWFzZTI2LW1haW50Cis3NTI1MiA0OTAxOTBjYjRhNTc3MjI4NjczMzQ2ZGQ2NWUxOTc1ZTY5Njg5NTkxIHJlbGVhc2UyNi1tYWludAorNzUyNTMgMjc4Y2Y1YzhmMWZhOTdjMjY2OGM5MzkxMmYzMzY4NGVkYzg0NDBkZSByZWxlYXNlMjYtbWFpbnQKKzc1MjU0IGQ1MjUwZGEwMDVjYTczOWYyZWE4NjhmM2NkMjg5MDAzOTZmYjA0YjAgcmVsZWFzZTI2LW1haW50Cis3NTI1NSA5NzRjMDNjOTg4ODQ4MDZjZmQzODRjMjZkYjYwN2ZlNWJhMmJjZGIxIGxlZ2FjeS10cnVuaworNzUyNTYgMjljMDE5NmIxYmRkN2I1MTc2MGMxMjZmYjNhNzA4NzBhNzI1OGMyOCByZWxlYXNlMjYtbWFpbnQKKzc1MjU3IGEwMWY0MTNlYTA4YjZkOTE3YjU3ZjdhMGMwZjAyZDQ3OGRjYzJiOTYgcGVwMzcwCis3NTI1OCBiNGQxYmU3MTAyYjMxYjAxMTM3Y2YxNzI3Yjg1OGI0MjYxNmNiZmFjIGxlZ2FjeS10cnVuaworNzUyNTkgZjdlZWE2MmIwOGIwNWEzYjkyYTlkZjdhZWNkMWRhZDdmMjQ4N2E4NyBweTNrCis3NTI2MCBlZTkwMjAxNjI0M2EyOWU3N2RkMmU2ZGFhZDUxZmQzYmMxMmEyZjU4IGxlZ2FjeS10cnVuaworNzUyNjEgOTg3ZTU5NmNmNTczNzNlOWZjMzExNmFmMTM0YTcyYTcxZDhjZmJhMyBsZWdhY3ktdHJ1bmsKKzc1MjYyIDFjN2YyYjlhMTY3ODJjMDZjNTEwNTRkNzU3YjhhNzUwMDY4MzgzMzIgbGVnYWN5LXRydW5rCis3NTI2MyAyZmE5ZmZlNmQxNDUxZDdmZWRlZGZkMzhiMTI0MGI1ZDFmMDBmOWVlIGxlZ2FjeS10cnVuaworNzUyNjQgZDJmOTU5MTE1NDI4NmU1NGYyMTI0M2NkMzJiN2MwM2Q5ZmU0NmM4MyBsZWdhY3ktdHJ1bmsKKzc1MjY1IGExMmU3MDFkOTdjYWM3ODdmMTVlNWY0OTMzYjFhOGY1NmQ0YjlmZDcgbGVnYWN5LXRydW5rCis3NTI2NiBhNDU5NTA3MjZiZGZiYWRiZWUxNTVlZGI4MDVkNzMzZTIwM2NmYjFmIGxlZ2FjeS10cnVuaworNzUyNjcgYTZlN2VkNTJkZjliMzE3ZTZhYzg4MGEyYjZhMWI2ZjE5YWQzNjI0NiBsZWdhY3ktdHJ1bmsKKzc1MjY4IGM5ZDliN2QwOTQyMmY3YTZhOTIwMjEwODFmODAwM2E5YmZlY2UyOGMgbGVnYWN5LXRydW5rCis3NTI2OSBhNGEzMjRjMmEwMGM3ODA4NGVhZGRkMDAzYjY1NmUzNjZjNjgwNDY3IHJlbGVhc2UyNi1tYWludAorNzUyNzAgMjVhYTkwYTY4NjViNjMxMzM5NjJkZDY0NjI2YzUzYzdiNmZkNDdkNSByZWxlYXNlMjYtbWFpbnQKKzc1MjcxIDQzM2Y3MjdlNWU4MjNmMDBkMTAyM2I0MzkwMmViYjM4ZmMyZjkyMmQgcmVsZWFzZTI2LW1haW50Cis3NTI3MiBhOTg2NDQxNzI4NmI5M2Q1Y2I1Njk0NzFhMjk4MTYxNTE3ZDVkNDFjIGxlZ2FjeS10cnVuaworNzUyNzMgNWUzZjZlOGQ2YWU1OTU1OTdjNjRkNWNhZWEwNzk0MjU0ZmM0YjM1YiBsZWdhY3ktdHJ1bmsKKzc1Mjc0IDZjOTFkMTgwMzE4MjY4MTZhOTkxMTlhMzlmY2M0ZjRmNGU2OWU3ZGEgcHkzaworNzUyNzUgYzVhM2Q0MzE0Njc2OWRhMzY3NzA4YzExYmM0YzQ3MzhjOTllMWRjOSBsZWdhY3ktdHJ1bmsKKzc1Mjc2IDMyOTY5MzUyOTljZTYyN2Q3OTIxMGM2MWY1Njk2YmU2ZTA2ODk5NzcgcHkzaworNzUyNzcgZGMwNDdkOWFiZjdiNmNmOTBmZGMxMmJkZTg2MTdiOWEwMGJlOGYwYiByZWxlYXNlMzEtbWFpbnQKKzc1Mjc5IDYxNTViOTU5ZmY3MmJkZjVlZjNjYTBmMGYxOWNlNDY2NjJhOTk5NGEgcHkzaworNzUyODAgZjk5YjNmYzAxZmMwNjg5NmMzOTI5MmI0OTViMGJiZGZiYTA2MTAxYiByZWxlYXNlMzEtbWFpbnQKKzc1MjgxIGM0NWNlMjg1ZjU1MmI5NjNlNDI4NjE1MjVmZDEyYmMwY2NmMGE5ZDggbGVnYWN5LXRydW5rCis3NTI4MiBiNzg1MjFhZTdhNjI0NWU0OGJkNWM4ODJkYmU1OWYzN2Y1NThiMDg3IHJlbGVhc2UyNi1tYWludAorNzUyODMgZTc1OWNhMjU3MDFkOWE2NjdkZGI4NzJiYmE1YjU3NzdlNzY2ZWY3ZCBsZWdhY3ktdHJ1bmsKKzc1Mjg0IDI0OWIwYmU3OTdhODJlMmVkZjYzYzc4MzBlNWZhMzY3MGJjNTcyZmIgcHkzaworNzUyODUgZGQ5NGYxZDhjOWE1Y2E0NDY5NjM0OTA2NzAxN2ZiYmYyM2IxZDgzNyByZWxlYXNlMzEtbWFpbnQKKzc1Mjg2IDQ4YWIyZTYyZGU4YmM2YmQzNjVhYzFhMDE0MzExOWE2NWFiMDYxNzggbGVnYWN5LXRydW5rCis3NTI4NyBlZjczNDY0NDhiNjAwZGZjZWViNTRhZjEwMDNkMGY3ZTAyNTRkMWY4IHB5M2sKKzc1Mjg4IDMwNzJmOTQwZjM1YTM2YjZkNDlmNWUyNGVmMWZkZDU1Yjg4OWExYmIgcmVsZWFzZTMxLW1haW50Cis3NTI4OSA5NmFmZjJjMmE5YTFkNWI3MmUwZjRmMWQwYzFlZDc5NThkMDc4YzVmIGxlZ2FjeS10cnVuaworNzUyOTAgY2I0OWYyZWIwNDU3OWY4N2FmYmVjYTcwOWQwNmU3NmJjZjJhMDYzNSBweTNrCis3NTI5MSA5ZjYzMWEzYmI1NDkzZmFkOTk4MTc5MjlkODk5ODEzZjgwYjBlYmQwIHJlbGVhc2UzMS1tYWludAorNzUyOTIgZDc5MDIwMmMxNTFkYjBjNmZiNDM1Mjk4OGZkODE3Y2ZlZmY1NGJhOCBsZWdhY3ktdHJ1bmsKKzc1MjkzIGFiYmM3OTc1NzVjNDIzNzBhOWVjZTFiY2RiNDUwNjFjOGVkMTU1ZDIgbGVnYWN5LXRydW5rCis3NTI5NCBlYjBjMzlmNjJkZTE5Y2M3YzI0N2Q2NDQ5MDk4Y2M5ZmUwYjU0ODUwIHJlbGVhc2UzMS1tYWludAorNzUyOTYgNTQ1OGMyMGFhMGNmODM5NWJmNGRiNDliMWMxOTY4NTdkZmUzNTA5NyBweTNrCis3NTI5NyA5NDZlM2FmMDBiMGI4ZjEzYjY4Zjk3ZDg3YWY1YjJlM2ViNzZkNTFkIHB5M2sKKzc1Mjk4IDJjNjBlOTQ2MDYyZWMwYWZhYTIxZDNiZWE3YjcyNDNmNjM1OTZiYmIgcHkzaworNzUyOTkgMjVlNTFjNWIwNjk2ZTg1YzQ5MDFiNjk2ZWQ3YTI0NWRjNjZhYTk2YiBweTNrCis3NTMwMCA4OTZhNGZiMTNmMzVjOTFkZmZiMDU0ZGY4NWVlYTgyZGUzZTlkZTc1IGxlZ2FjeS10cnVuaworNzUzMDEgMWVjOGM3ZmI4ODA3YjVhZmNmNmM1MzY1NDBhNjhhNTgxNTU4ODk4YiBsZWdhY3ktdHJ1bmsKKzc1MzAyIDEyY2Q5NGQzOTg3NDY0OGViMGYzY2ZiNTM3Y2VkZmMwZGQwMGYyMzEgcmVsZWFzZTMxLW1haW50Cis3NTMwNCA1N2VlMDc5M2U0NjI3YjgwY2UxMmI2ZmY0MDM0ZmVhN2FkYzQ1ZDc1IGxlZ2FjeS10cnVuaworNzUzMDUgNjg0OTYwZmIxY2JmNjRlODU3OTc5Y2MyYTk2ODVmMDY3MTZiYzExOSBsZWdhY3ktdHJ1bmsKKzc1MzA2IGFiNDIwMzNmZGZkYmU1YWI0ZTEyNmVlNWUxYTgwODFlYzFjZTAyMzEgcHkzaworNzUzMDcgOTFhYTA0NDEwMTM5MGNlZDM5OGFhZDYxZTcxMDAxYTA2NzBkMTU5YSBweTNrCis3NTMwOCAyODM2OTM5ZTdjNTQ3ZmZlZDQwNjQ2ZTEyMmZmM2FiZDBlYjIzNjJiIHJlbGVhc2UzMS1tYWludAorNzUzMDkgMjk5MDhmMmJjOTNmZDhjZGVjMzU3NGNlNDcwYTVhZDAxZWYwNTdiYiBweTNrCis3NTMxMCA2ZDA5MmE1MWUxODdlNDUyMmQ2YmRlODM1ODQ5Y2MyNjE1MGY2ZjBlIGxlZ2FjeS10cnVuaworNzUzMTAgNGY5MTMxMmQ2ZWMyYWIzNWU3YWI4MjJhODNkYTAwOTIzMGYxMjRhYSBweTNrCis3NTMxMSBiNWVhNDc3M2FmZjEwMjFhMzU2MTFiZWEyMWQwZTRiYTk2NzRlMzU1IHB5M2sKKzc1MzEyIGEyZjAyYTEyNWZlYjBiOTY5ZDgzODY0YTBlOTQ3Zjc5YTk4MTQzYTggbGVnYWN5LXRydW5rCis3NTMxMyAzMmMzNWY5YjI0NWM4N2MwYzA3OWY4NDFiOWQ3YzVkNWM2ZmNhOGMzIGxlZ2FjeS10cnVuaworNzUzMTQgZDczZjIyMTVlZmMxOWY5MjM3MjY4ZjhiNDczMzhkNThhMzljODBlMCBweTNrCis3NTMxNSAzM2IwNDEzNTAwMzQyYWY3MGMyOGI5Y2QzNTQ5MGMxYTU0YmQ1N2MzIGxlZ2FjeS10cnVuaworNzUzMTYgZWYzMWIwNGRlNTA1NjJmZmM0NTBhNmExZDQwZTBhZWVmODhkNzZhYSBweTNrCis3NTMxNyAzOTMxYzc4YWYxMTc1YjNjNzQyNGYzMzEzZGYwMGNiOWYwNWVkY2VkIHB5M2sKKzc1MzE4IGZmOGM4NmEyNGIxNThmYmFlMWNmNDU0ODU1ZmY1OGM4NmYwMzQxNGEgbGVnYWN5LXRydW5rCis3NTMxOSAzNTYxOWNmY2QwYjViZjVhNDMwMDFmNjIxM2ZiMmQyZjMzOGQ4NDU4IHB5M2sKKzc1MzIwIDIyMGY3ZGVmZmJhZmI1NzYwMmJhNzM1ZjQzM2IyZWQwNzAxMzNmYmQgcHkzaworNzUzMjEgNDJhNmEyMjQ5NDc0Y2E2YjIwYzExMDRhYWU4NmJhMDc4ZDVmMjU3ZiBsZWdhY3ktdHJ1bmsKKzc1MzIyIDM0OTk5YTFhZWE5YjI2MTc2MTNmYzBlYmMxNTliZjIxMWQ2MGY3ZmIgbGVnYWN5LXRydW5rCis3NTMyMyBiZmE2MGRmNzY5MjkwYTEyM2UzNmJjZWU0MmQwYmYwNWEzNTQxNDFkIHB5M2sKKzc1MzI0IDQ0MzE0OWZiMzU3NDhmNWNkY2ZiYTg5OWE5NzI2ZGYyOTFkZjVkMGUgcHkzaworNzUzMjUgNjU4N2VhNmQzZTc4NDVkZWY5YTIzYzUyYTIxMjViNDgyYWI3NTA4ZiBsZWdhY3ktdHJ1bmsKKzc1MzI2IGYzMmZlZGE2NWM4NTZhZTRhZDI1ODRkZDhjMDc3NzRmZGVlMDgyY2QgcHkzaworNzUzMjcgNDU4MTUzZDVkODJkNmY3MWM3ZmU4ZGI0MjE2ZWE4ZTQ4ZjY5ZWIyNiBsZWdhY3ktdHJ1bmsKKzc1MzI4IDIxNjhiOWQ0OWUzYjE5MDhiMmMxMmZhZGE4NWRkNTQ2ZmFjYzNjMjYgcHkzaworNzUzMjkgNTU5N2JhNzBhMzM2Yzg2NWYwNmE4YTE5MDJkMzIxNjk3Mzc5ZDgwNCBsZWdhY3ktdHJ1bmsKKzc1MzMwIGY3NmUyZTYzNzczMDE4OWE0Y2YxNjA4ZWY0ZjQ3ZjFhMjVmOTdkNzcgcHkzaworNzUzMzMgMjRlOTJjZWYyNjY0NjM1OWZlMDI2MTNjNjAzMWNiOWMxYWM1N2NiZCBsZWdhY3ktdHJ1bmsKKzc1MzM0IGI5NDJjNzA2ZTMzODEyMjhjMmFmNzljZGI5YThiMjU1MDAxMjVmNDQgcHkzaworNzUzMzUgNjk2YWNlYjc2MzViOTk5NjU1NzhjYTU3YTk4ZmY0ZjNiOGQzZmY4YyByZWxlYXNlMjYtbWFpbnQKKzc1MzM2IDg2NzYzMzMzMGE5MzhlNzQ2Mzk5N2Y5NTQyODAzN2UzMGQ3YmEzYzYgcmVsZWFzZTMxLW1haW50Cis3NTMzNyA2MTk0ZmQ3NTQzMjM5OGY4ZTVlYmU4OTIxYTAyNmI5MDJlYmFmMmYyIGxlZ2FjeS10cnVuaworNzUzMzggODZiNjg0Yzk2OTQyNGIyZWFlNmY5ZDY1MWE0ZDBhMzUxN2ZjM2U4ZSBweTNrCis3NTMzOSAzMTMwYjdlODEyYjA0ZWFmMzk4ODQwNjNkNWNmNWY1M2UzYzE4MzM1IGxlZ2FjeS10cnVuaworNzUzNDAgODliNGJiMGFhNWFjZjgzODYyOWU2MTA5M2YzZTM2MzRiM2NhMWVhZCBweTNrCis3NTM0MSA0ZGQwOTAxMDBlY2FmYjViNjkyODk0MWQwYzE2ZWUzYjE2ZmYwMDBjIHB5M2sKKzc1MzQyIDNlZDY1NzE2ZDdhZDI0MmM5OTk2Y2I2YTAxZjQ4NjBiNzAyN2JlZjIgbGVnYWN5LXRydW5rCis3NTM0MyA1YzM2NWFhYjEwZDFjZTMwZmU3NDUwNjcwZWJkNTZhZTk4MGViNGRjIHB5M2sKKzc1MzQ0IGMxMDViOThlNjQ5ZGU5YTQ1ODQzZTgzNjMzNWUyMDY5MzMwMWQ4OGMgbGVnYWN5LXRydW5rCis3NTM0NSAwYWQ3ZjljOTUyYjA4Y2ExMjg5MGI0YWQ0YjAzNDM4YWE4NzE5ZGI3IHB5M2sKKzc1MzQ2IDRiYTI3ZDE4ZGQ5MmRhYWZiNzNiMTdmOWZmNTk1NTQ3ODU2NDQ3Y2IgbGVnYWN5LXRydW5rCis3NTM0NyBiZGU4YTM5NjIyOGMyYWFjMjFlNDM5Y2IyY2IxMDc5OGU4YTQyZjU5IHB5M2sKKzc1MzQ4IGExNWM3ZDUwYjNjYjY0ZTAxNmVkMjNlMzhiN2YxMzJmYWNkOTM0OTUgbGVnYWN5LXRydW5rCis3NTM0OSAzOTdlMDJlMGJlOTMxNGI1NDIxMDNmZDU2ZDQ5OGEyYTA0ZTM2YjEzIHB5M2sKKzc1MzUwIGNhMDE4ZTJiYjg2NTRiOWI1OTRmNmE3YTRhNDcxYTIwNDJmNjMzYmIgbGVnYWN5LXRydW5rCis3NTM1MSA1MmQ2OTczY2JkOTRlYjMzNDRiMDM3M2MyZDZiYTMxM2ViMWJkYWViIGxlZ2FjeS10cnVuaworNzUzNTIgNTNjODNhMTMyZTFlYTIxYmI2YzY2YWU5NGJmNDQyNzQ3OTgwMmEzMyBweTNrCis3NTM1MyA2OThlMGU2OWM3NjU3YjI2OWMwZTRmMTI4NjA3ZGVhYmM5NDM1OGE1IHB5M2sKKzc1MzU0IDZhNWUwYzkxM2M3Y2ViYWFjOGZhNDE3ZjM1Njg3NDAzODU5ZTgwNjQgbGVnYWN5LXRydW5rCis3NTM1NSA5MjA0MDhlNjAzMDMyMTMzN2I5MTNhMWMzOWZiMWJlY2RhMzJmZDcwIHB5M2sKKzc1MzU2IGU0NjE5Y2Y5ZTYyY2JlMTI4ZjllYWFiMmMxY2Q0Yzk5MjVmNmM1ZDMgbGVnYWN5LXRydW5rCis3NTM1NyA4ZWU0NTE3OWM1MDM5ODdiMDNiMDdmMWE1MWI3Y2Y5NzBhOWM1N2Q3IHB5M2sKKzc1MzU4IGE1ZDdiNTI3Nzk1MTkzY2M2YWFjNmMxZDkxZWI3MDhlZmJmNjQzYzQgbGVnYWN5LXRydW5rCis3NTM1OSAxNTIxYTY1N2E4NWFkOWI1NjAxODk3N2M1NTliMDA0OGFjNDEyNWE3IHB5M2sKKzc1MzYyIDIwNWI5NmVmYjc5MDBhMTI4ZTczMGMzYzZjODkyZmU5Y2IxNzg0MjYgcHkzaworNzUzNjMgMzIwMDhkMjNmNmNiNDhhMWVkYTBiMjdmMWIxYWY2ODhiMGVhNzdmZCBsZWdhY3ktdHJ1bmsKKzc1MzY1IDlmNzY1MTE4ZDliOTcxMzlkNmU2ODNmOGJmNjYzNTdiODU4OWRhMmQgbGVnYWN5LXRydW5rCis3NTM2NyAyMjAwOGQ5MzRlNjM3NTkyYzQ3MjdjYmE5MmYxNjZhMTkzMmQ4N2ExIGxlZ2FjeS10cnVuaworNzUzNjkgNDNhZDU1NDYxNWI2ZDIwMGM2MmZlZDc1NjRlZjY4MzUxNDc5NzNlMCBweTNrCis3NTM3MCAwNTA3NDhjZTVhZDllYWUyNDI4MmVhYWI2N2M2OGJkYWQ4M2RkZTM2IGxlZ2FjeS10cnVuaworNzUzNzEgNGI1ZDM5OGViODY2NjQzM2RlZmRmOGQ3YTIzN2MyNmM4MmY4ZTgzNCBsZWdhY3ktdHJ1bmsKKzc1MzcyIDlhMmMzN2MzMmI3ZTcxODBhNzMxNWRhYThjYzQ4YmY1OTM3MjBkMmYgbGVnYWN5LXRydW5rCis3NTM3MyBjZGRiNjIwZjBjZGEwYWUxNGIzMTFiODM0NzhkZmQ1NTVmNTBiZWEwIHB5M2sKKzc1Mzc0IDE2ODg0Nzk1NTMyNDk0YmQ2ZWUwMTc4MTZhZDZkNDhjNmU3ZjQ5ODkgcHkzaworNzUzNzYgMzkyMmU3MzRjOWJiNzMyZjlmNGU0ZGY5OGNlNzliYzUyZjE4MGI4OSBsZWdhY3ktdHJ1bmsKKzc1MzkwIGY1OWRhOWM5MzQyNWE5ZjljZjYxN2M4N2NhYzA0ODU4YWE1YWVlOWUgcmVsZWFzZTI2LW1haW50Cis3NTM5MSA5NWE2OTY0MGViZDNiZDE3OTdmYThiYTJhYTJmNzAxYTcyNzUxN2QxIGxlZ2FjeS10cnVuaworNzUzOTIgOWQxN2JiNGYxMTcwZmFiMjEwZjc4Nzg4MjMzYjIyMThmNTY4NDJkYSBsZWdhY3ktdHJ1bmsKKzc1MzkzIDIwOWUzODI1NGFlOGI4NzhkMzQ1MzU0ZmVmMGRlMjllOWUyMTI1NzggcHkzaworNzUzOTQgOWJkNmE3YWVlMTNjYTgwZTg1Njk3OWVlMzk3OWZhZDIzYzVlNjE2MCBsZWdhY3ktdHJ1bmsKKzc1Mzk1IDJhNzU4MzcxOGQyNTNmZDVhMGRhMjZjZjk4MDU4MGYzNjU4OWQyZWYgcmVsZWFzZTI2LW1haW50Cis3NTM5NiA3ZmU4YTgzMTNhNWIyZTdlMjM0MjJlZmFjZjk2NzZmYjM1ZWJkNjRkIGxlZ2FjeS10cnVuaworNzUzOTcgZThlMTAzNDg4ZmIzN2UzMGI5ZGZmOGY0YTgxZjYwNzZjMTI0NmNhNCBweTNrCis3NTQwMCBiZGJkYTdhOTRjMzMzZTAzNjVkZjYxOTJjMzk0MGE3MzkwN2Q4NGNlIGxlZ2FjeS10cnVuaworNzU0MDEgNzc1NjFjZDM5ZmQzOTdiZDNmYWNlMzJlZWU1YTk2Y2JiOTQzNmU2NiByZWxlYXNlMzEtbWFpbnQKKzc1NDAyIDAzODU0NzMyYTZjMjhlNzM5ZDU1NDZmMjRiOWFhNzJlMWUwMDViZGUgbGVnYWN5LXRydW5rCis3NTQwMyAxODM0NzRiYjAyMTM4ZGE4OGMzYjQ5NmM1MmE3YjFiMGEwNWRhNGNhIGxlZ2FjeS10cnVuaworNzU0MDQgNjM1MDhlYzc2ODQwYWE2NDgyMDk4NzU3MWE3ODk1ZWFkZDEwY2YwYiBweTNrCis3NTQwNSBkYzc1ZDE3ZGQzMDRhNTA2YmQxNTdlNWMyYTRlYWVmZjMxN2NhY2UwIGxlZ2FjeS10cnVuaworNzU0MDYgNjdiYjE3YzJlODY4NTIxOWZhYjNjN2JmYjIwMGMwNmU0ZGQ4NTBjMiByZWxlYXNlMzEtbWFpbnQKKzc1NDA3IDI0N2Q1YTVlYWZhNTM0Mzk3NWI5OWYzZWU5OGZhNGMxZDk0NTgxNjggbGVnYWN5LXRydW5rCis3NTQwOCA1OGU1NzYzMWJlOGNiNjM4ZWQzMWU0YjQyMjlhMDM2ZTQ3N2E5MjhkIGxlZ2FjeS10cnVuaworNzU0MDkgMzg2YTRkN2MzYzk5Y2ZhNDkyNDNjMzhjODVmYTQ0NDliZmY3OGQ2OCBsZWdhY3ktdHJ1bmsKKzc1NDEwIGNkY2Q4MDVlZWU4NWQ2NTA1NzMwMjExMjJlMDYyNWZiNmZmNzIyYTIgbGVnYWN5LXRydW5rCis3NTQxMSBlODUzMmNjOGExNGU0OTc0ZjhhM2YyNzRjMmMzZWM3YzNiMDRiOTg5IGxlZ2FjeS10cnVuaworNzU0MTIgOWU3MThkOGY3MWU4ZjAxNGE2Nzc2YmEyYzFjYWI1NzZkOGU3MGI2NiBsZWdhY3ktdHJ1bmsKKzc1NDEzIDRlZTM0M2M0YmM0OWQwN2UzZWU2NjViMTJjNjAyMzU5OTdjNWY2MDIgbGVnYWN5LXRydW5rCis3NTQxNSA2ZDUwYzRjMWE4YjM0NmZlMDM2NGYyMzdmYzI4MGNhYjFhYWEyNzhkIGxlZ2FjeS10cnVuaworNzU0MTYgNWRmYzU4ZjM5YjlmNTQyMTkwZTY5ZDcwY2EyMjdjZGZlY2MzOGI0NSBweTNrCis3NTQxNyBiZjhjOWJmNzExNWM5M2EyMzBmOWZiOWYzMzhmNDk5YjJhNWRjYzFjIGxlZ2FjeS10cnVuaworNzU0MTggZDI0Mjk4ZGYyYTY2MjA2YmQwMzg1OGQ5M2U3MzRjMDZhNTE1MDVhYiBsZWdhY3ktdHJ1bmsKKzc1NDE5IDkzMzUwYWNiNTQyNWJhNGYwMGI1Y2Q4MDhjN2M2MDRlZTdhNTAyODEgbGVnYWN5LXRydW5rCis3NTQyMCA2NGUxOWE2ODk4ODYxN2VmNTQ1ZmQ0NTE4MGQwZjg4NzJlYWUxNGUxIGxlZ2FjeS10cnVuaworNzU0MjEgZmUzOGQzYzE3ODg4YzhjMGViZWExM2I4YWFlMWYxZmNkZTJkMjA3YiBsZWdhY3ktdHJ1bmsKKzc1NDIyIDE2ZGIyYTkzMjI0ODljMzllYmYyYjA1ZDdiNjA2ZjM5NGZiMGFhNjcgcHkzaworNzU0MjMgNTBiN2Y1NjgxNGY5ZTNlYTNjNjEwYjFmZWIyNmE1N2VkMTAzZDkxYiBsZWdhY3ktdHJ1bmsKKzc1NDI0IGQwZjAwNWU2ZmFkZDA2NGQ3NTAzMGE5YWRiYWZiMTJlN2EyNmNhN2QgbGVnYWN5LXRydW5rCis3NTQyNSA5MDQ0ZjY0YjEwYWUwNmI4YzAxYWYzY2Q0Nzg2ZjJlZTI3NDE0NjQ4IHJlbGVhc2UyNi1tYWludAorNzU0MjkgZmE2MTg4YzQ3YjYzZmM1MjVkODM5Yzg3OTViMjVkMmYzNTc2YWQwMCBsZWdhY3ktdHJ1bmsKKzc1NDMwIDQ1YjYyNzI1Mzc3YTYxMjg1OTdkYmNmZGM2ZDlmZjVlNzRjZGUxNjEgbGVnYWN5LXRydW5rCis3NTQzMSBhNGIxOTIyYTMwNzQ5MjE4NGFhNDQ2OTRkOTI4Y2I1MWMxMjRkOTBlIGxlZ2FjeS10cnVuaworNzU0MzIgZTAwYzc4ODY5YjNjZDM1NjhkMTc3ZWFkMjcxMDliZjExODUyZDZjZSBsZWdhY3ktdHJ1bmsKKzc1NDMzIDk4M2VlZmJmNjY0OTM0MGU3N2RiMjUyMDBlYzE5NzIzNDM2YjczOWMgbGVnYWN5LXRydW5rCis3NTQzNCBlNGEwYjg3MzllNWI4YWI3YmY5ZTRmYTZlYmZmZmRhNzNmNDY3YTNjIGxlZ2FjeS10cnVuaworNzU0MzUgM2IzN2I4ZGQ3NmQ3NTAyNWYxNDEyNDdlZjRkOTUzZmNiNjIxOWZiMSBweTNrCis3NTQzNiBlYzUwOGM4OWFkMzY4MjA3OGNlNDNjMDdkZDY1ZGQyZGRkZDRjNDcyIGxlZ2FjeS10cnVuaworNzU0MzcgMjBkMDk1NDliODJjMGI5OWI3NzBjMTE0ODAyZDdkOGI4OWQyNWE5MyBsZWdhY3ktdHJ1bmsKKzc1NDM4IDE2MTdjMTE1NTZhZmEyOGMxYmNhYjU0ODI0OTBhNWYzZjFkZmIwZGIgbGVnYWN5LXRydW5rCis3NTQzOSA3ZTU4NDk0MjA0YzhmNmU0M2RkZWIwOWE5Njc0OGFlYzQ3ODQzYzM2IHB5M2sKKzc1NDQwIDI3NTRkNjQxODBkMWRjNTU3ZGFiMjk3OWE3OTI1OGE4NzBkNGQ2MDIgbGVnYWN5LXRydW5rCis3NTQ0MSAzYmM2ZmIzYzBjY2QwOWEwNTA3NGZiYTJmYTRlN2IzMzQyMWZkODc5IHB5M2sKKzc1NDQ1IGQ5ZTQ4YWI2MjU2MmMxNGYwM2IyNTJiYjExOWNmM2I4ZDgyNmFmMzUgbGVnYWN5LXRydW5rCis3NTQ0NSBkOTYzMDUxN2M3MGMxOTUwNDIyYWM3ZTEyMmZlMTM4OWZmMWMxZjE1IHB5M2sKKzc1NDQ2IDdmYTE0YmU4YWQ3M2NiMzU3NTc2NjVkODEzODFlMTczMGQ0ZDFjNTYgbGVnYWN5LXRydW5rCis3NTQ0NyA4ZGZhODQzYzgzNTAxYTBlNWRiOWRhZjNjNzQxMmJmNjhlMDhmNGViIHJlbGVhc2UyNi1tYWludAorNzU0NDggMjRkMzIxZmQzZDFhMjBiMTQ3NDY0OGViMWIzZDRiZGYyMjQ1YTI1ZCBweTNrCis3NTQ1MCA5ZTQyY2MxOTJhNDQ2NTlmNDgyYjg3NzBhYWJmM2QyZDdlZjQ4Yjg3IGxlZ2FjeS10cnVuaworNzU0NTEgNzYwMDQzNmRiMmE5Yjg2OWI5ZjAzMGY0YjY4ZTBmN2M4ZTkxZDRmYyBweTNrCis3NTQ1MiAyNmIxMWU2ZmU1ZTMxYzY3ZWJmZjg4Y2ZlNjljNGRlMGFlODNjOGNlIHJlbGVhc2UzMS1tYWludAorNzU0NTMgMzY1OGMwYTk1ODkyMmFmOTI2ZjM5OTc2NzRmYjFmYzdjNzU3ZDgxZCBsZWdhY3ktdHJ1bmsKKzc1NDU0IDYyNGY4MWI1ZWMyNGY3NzNiYjAxZjA3OTQ2NWQ4ZGM3YWJlNWJjZDcgbGVnYWN5LXRydW5rCis3NTQ1NSA3ZDcxYzUxZmMzMDhjMWIyNjUzYjlmMjNkMzdjNDFlNDU5YTE3NTQ0IHB5M2sKKzc1NDU2IDVlYTZjZDI4MzljYzdjMTAyNzZlOWEyNzVjMTZmNTAyZDk5YTc1MzQgbGVnYWN5LXRydW5rCis3NTQ1NyA5YzA2YzczMDk3NjU2NmM0ZWQ5YTkxMTFiOWVhZGZiN2E5MDhiMGYxIGxlZ2FjeS10cnVuaworNzU0NTggNTI5OTU3OWY1NzlhODU0YWZiOGUwNzE3MzMyMzA0ZGNhN2UyNmM2OSBsZWdhY3ktdHJ1bmsKKzc1NDU5IDRjMWZmN2IyNDgyZWUxOGE0ZTk4ZjAwM2JjZjU5ZTg2OTI1NzQ4OTYgbGVnYWN5LXRydW5rCis3NTQ2MSBhMTA4OGJiNGZjZjhhNmQyMTM0NjdlZjgxODQwOGRiMGJkODE5NzhmIGxlZ2FjeS10cnVuaworNzU0NjIgMjA0OGQwNGRlYWI0MmM1NTViODM1YmE3YjQxOWQ0YTI4ZDljMTkyYyBsZWdhY3ktdHJ1bmsKKzc1NDYzIDgxNDMzYTY3NmE4YmFmZTFmZTM2NWY5ZGMzODBiMjJhZmQ1YjliMGMgbGVnYWN5LXRydW5rCis3NTQ2NSBiODE4YTdhNzBhNDc3ODExYTFmMTBhNDNiYmNmZmU0NGVkNTVjNzRiIGxlZ2FjeS10cnVuaworNzU0NjYgOWYwNTNlNTUwYzk3NzY4YjBmYWRmODI5NWIwMjQ2ZDNkNDMxNjYyNiBsZWdhY3ktdHJ1bmsKKzc1NDY3IDk5MzIwN2RjZTM5NTViNDA4ZjZhNmEyNTE1ODUxOWQ2MDk4OTQ1YmIgbGVnYWN5LXRydW5rCis3NTQ2OCAwMDc1MDVjYzFlMmM3MzU2ZjY0YWQ1ZWZmNGRhZTZiNTRkOWQyODk1IGxlZ2FjeS10cnVuaworNzU0NzAgYWMzYzYzMmUxYzEzYzMxYzY2MGI3OTIyM2ZmNzNlOTkzYzUwZjA4MyBsZWdhY3ktdHJ1bmsKKzc1NDcxIGU2ZGViMTVjNWFlNmEwNmZjMWQ0NmE5MWIzMjc0N2Y3ZGY2NjFiZWYgcHkzaworNzU0NzIgMzU0ZmE1NjFhYWRmNmNkYTEwNTY4Y2E1OThlM2E0MTA3Y2UzY2I3MiBweTNrCis3NTQ3MyA0OWUzZDRhYzY5YzZmOTgwYzM1MzU1YjAwNWM4MTc0OGYyMzlkZWVjIHJlbGVhc2UzMS1tYWludAorNzU0NzQgOGE2YjYxNDg0YTk4NGI4YThmZDE4OTcwN2FhYmZhYjU3ZDY5ZDA0ZSBsZWdhY3ktdHJ1bmsKKzc1NDc1IGMzN2NhOWFjZDFmOWFhY2I5ZWViMzgwZjE3OTJjNDYzZGZhOTZhMzEgcmVsZWFzZTI2LW1haW50Cis3NTQ3NiAzMGJiNGMzNTU1OWQ2MTY1MWU3NTFlNzE4MjU3NDRjZmNjYjc1ZDUxIHB5M2sKKzc1NDc3IGQwNzk4NzdkYTMzNWU2MzgyOGY5Nzc5NDY1M2U4MTEzYWNiNTM5MmIgcmVsZWFzZTMxLW1haW50Cis3NTQ3OCA4NGMxNjgwOGJhMmM4MWRhMmVlYmNjMGJjZGFlMjdkYzU4MDM3MGQ4IGxlZ2FjeS10cnVuaworNzU0NzkgZDk0NDQwMDExNGU1MDBkNWM2MjlhNWZlZWVmMzNiYjU4MmM1ODU3OSByZWxlYXNlMjYtbWFpbnQKKzc1NDgwIGFhNTNhMmQ0ZWYyZmNiZTliMzhhMDUxYjZiNzhhZTdhNjc4OTRmNjEgcmVsZWFzZTI2LW1haW50Cis3NTQ4MSA1ZTdjNWM5NGM1NzIxYTE2Yjk3YzIzY2NkYTMwMTQ3ODIwZjAxODU1IGxlZ2FjeS10cnVuaworNzU0ODIgMzQ5YzAzMzc4OTZhMjcyZjYwNmY5MGVlNjZlMDZhODYwMjYxNzc3ZiBsZWdhY3ktdHJ1bmsKKzc1NDgzIGVkN2RlYzEzNjQzMGZlNTViNjViOWJmYjczOGI3M2Y3YTE4NDcxMmUgcmVsZWFzZTI2LW1haW50Cis3NTQ4NCA3NzdiZDVkZDFkOWFjNTQxYTJhM2E5MzdmYmE5MjY4YzliZjJlM2E1IGxlZ2FjeS10cnVuaworNzU0ODUgZTY3ZWI5NjYwMDQxNzlmZWJkYmY5ODc0MWFhZjNlOGRmMjEwMmFhYyBsZWdhY3ktdHJ1bmsKKzc1NDg2IDc3ZWNjNWU0ZjY2NGM3MTQyNGU0ZDUxYWE1ZjEzNjNhMTYwOTJjYjEgbGVnYWN5LXRydW5rCis3NTQ4NyAyOTI4ZjFlOGIzODU4MTU0MjNhZDJlODliNWQ4YzkwMTcxMDUyMDYwIHB5M2sKKzc1NDg4IGNiNTNiMWZhNzIwNmYyZjUyMDUwNTI3OWQ1ZDg1NTQ0ZWI2YmZjM2QgcHkzaworNzU0ODkgM2RiYzYyMDdjYmY2ZGU0ZmZhNTFjYTBiOWM5N2RiMTJkZTAzODYzNSBsZWdhY3ktdHJ1bmsKKzc1NDkwIDg5M2MyYTRjOTU0NDQ1NWY3OTg3MTg4MDFlOWY4N2EyMWRlZjA0OTYgcmVsZWFzZTI2LW1haW50Cis3NTQ5MSBkZTJkOTlhYTQ2ZWFmZjQ4M2E5ZjVjYWIyOTAyNzFhMWRlNGU1NjY2IHB5M2sKKzc1NDkyIDJiNjM1OTcwOTE4OGIxMWI2OWYzMTdlYjBlZGQzY2RkNGIwMWU5NjIgcmVsZWFzZTMxLW1haW50Cis3NTQ5MyAwOThiYTNhNjM3MzBjYTZkNzY0YmJhZGY1OWYwY2ZhNzRiYzYxMDAxIHB5M2sKKzc1NDk0IDUzOTcwMDJmN2U1ZThmYjkxODEyMWQwZDBmNjAzNzQ3MjVjZjdjOGYgcmVsZWFzZTMxLW1haW50Cis3NTQ5NSAwZjllOGQzZWNhYzM4YzU3NjA3MGY1NTU1MjlhNzlmNjkyMmMxZDU4IHB5M2sKKzc1NDk2IDJjNjBhYzRlZDY1ZjY5MDBiODRhYmFhY2M5YTkyNDNiZTQzNGJhZTIgcHkzaworNzU0OTcgZWExZmRhZmJlNGZlMjQ1OGFjMTcyODdlMGQ2YzcwOWVkMDBmY2U1YyByZWxlYXNlMjYtbWFpbnQKKzc1NDk4IGJmZTc1NmViMDlmYWFkMDVlN2FkMGE5YTVhMDhkYzY3YmUxM2ZiYWYgcmVsZWFzZTI2LW1haW50Cis3NTQ5OSBhMGU0MWRmYjk3MmI1MTg3ODMzOWNmYWIxZjE3NDlkOTA1YmY1ZWQ3IGxlZ2FjeS10cnVuaworNzU1MDAgMzg2NDE0Yjg0NmViY2NkY2M3ODRlZDVkNzcwMTMwY2NlNjUyM2RkZSBweTNrCis3NTUwMSAyNWVmNmY0ODE4YTA1Nzg5NGJkOWQ3NzBmZjk3NDg5N2MwODU2NDE3IGxlZ2FjeS10cnVuaworNzU1MDMgMDY5OTkyNTM5ODdiYjUzODVlNzE5NzJlNTBhZGE2NTEwMzQzZjkxNSBsZWdhY3ktdHJ1bmsKKzc1NTA0IDJhNjg1M2ExM2EyZjc5N2Q5Yjg0MmZjMjYwOTgxNzJkZTcwOGE0NGMgcHkzaworNzU1MDUgM2NjZDFkNmYwNWE2YjVjNzBjNWE1ZDk4ZjRmM2M0YTExODY2MGIxNCByZWxlYXNlMzEtbWFpbnQKKzc1NTA2IGQxNjY2Y2M3YmM3NGYzYWQ5ZmU0ZmNmMWYwYjhlNDkxZTlkYmE1MmEgbGVnYWN5LXRydW5rCis3NTUwNyBkODllNGE0ZTBiMjA3ZmRiNDBjNmY5OTI3NTgzY2FkYjk1NDA2ZjExIHJlbGVhc2UyNi1tYWludAorNzU1MDggZWQ5OTAyNmUwN2ZjZGRlODg2YzdhMWM0MDdhZmE5OWUzMDg1ZDdkNyBweTNrCis3NTUxMCA3OWNiMDdmYTM2ZWMxMGUwMDNjNmEwNTYzYTkxY2VlZGNjMThhYzJmIGxlZ2FjeS10cnVuaworNzU1MTEgNjc0OWM4YWRjNDk4NTdjZGRjMjFlZWQ2YzdkZWYwNmViOGM2YTc2MiByZWxlYXNlMjYtbWFpbnQKKzc1NTEyIGU2NDRlZTRlNzZjN2JjZjdhYzFmNGU1NTU3YzE2NTRmYzAwM2UzZGEgcHkzaworNzU1MTMgZjQyNjNhOWJkOGFkZGE3M2FkNGE1NDViMjFhZDU2YjMxOTM4YzAwYSBweTNrCis3NTUxNCA5ODI1ZWMyMjhlZmIxMmNiMmJmNjc4MTNiNjk3OGNmMjYxNGI1MWVmIHJlbGVhc2UzMS1tYWludAorNzU1MTUgMzcxOTM3YmE2ZmE2MmNiMGJjOGY1Nzc2Y2U2OWQ4NmMxNGY2ODc4YiByZWxlYXNlMjYtbWFpbnQKKzc1NTE2IGQ4YTdiMzE0ZmM1MDUwMTI1MzlmYmRlNWQxZDVjYTM4ZDUyOGNlMjkgcmVsZWFzZTI2LW1haW50Cis3NTUxNyA3MTg4MDAyOWZlNzU2MmE0MzgwZTIwY2E5ZGUxYmEzMjM4OWYxZDE5IHJlbGVhc2UyNi1tYWludAorNzU1MTggZjMwNjY3Y2Q0MDQzYzQzYjg5ZTAzNDg5MGU4YjA0NjY4Y2U0MGY3OCBsZWdhY3ktdHJ1bmsKKzc1NTE5IDE2MGYxNmE5MWVlNzM4NWE1MGIzNmExM2YxYWJkMjU4M2IzODI1YzYgcHkzaworNzU1MjAgYmQ2ZGVlNmE3OGMzOTVlYzYxN2ViNDFmMjZiYmFkMTBhNmU4N2ZhZCByZWxlYXNlMjYtbWFpbnQKKzc1NTIxIDQyMzAzYzhjYWIzMTVlYmU3MGE5YmM0YzhiMTExYzcxZTQ3MjZiZmQgcmVsZWFzZTMxLW1haW50Cis3NTUyMiA0YTk1NDJhY2NkMTMzNDVlNzVlMGJmZmQ5N2RmNTVjZmUxODVhNjUwIHB5M2sKKzc1NTIzIDY3MGUyMjJhZmQ0ODE3ZDM4YWUxYmI4ZTk2NDk2ZDc0ZDI0OTQ1NjQgcmVsZWFzZTMxLW1haW50Cis3NTUyNCAzZGFhY2Q5ODkyNWQ3ODY3Nzc4MDk1MjE3ZGZhN2E3MTc1NmRhM2I1IGxlZ2FjeS10cnVuaworNzU1MjUgNzMyNzJiZDk0ZDdiMDNhMTk5NzhhZGU4NGZiZjAwODk3MWJjNjgxOSBweTNrCis3NTUyNiAzNDE4MmY5ODU4OWI4YzlhMjM5MGI5MDZhMzZmNzM2YjcwMDRhNzkzIHB5M2sKKzc1NTI3IGY3NDAzMGJhNjYxMDg4ZjZlMjkyMDc5YTA3OThjYTlkOTZiMjRiMmEgcmVsZWFzZTMxLW1haW50Cis3NTUyOCA5MGMxMGRjYjI5MTMzOTIyMjE4YTdlMWQ2ZDI5ZTI0ODk2MTg3MDc2IGxlZ2FjeS10cnVuaworNzU1MjkgNDNkMGI0NzEwNmRmOGI4ZWVkZWQ4NTc5ZjFmNjQ3Y2Q4ZDEwM2Y5NyBsZWdhY3ktdHJ1bmsKKzc1NTMwIDU1NDFlNDJlMWM4MTFkMWRiZTQ2ZTM5M2UzNzIzYTBhNjRjNGQ5ZmEgcHkzaworNzU1MzEgODU2ODVlN2Q3MmM3MTg0YmM2YjczOWE1ODJkMGVhOGNmZTFiMWJlOSBsZWdhY3ktdHJ1bmsKKzc1NTMyIDU0MDMxZWNlNDNhMzNhY2ExNmRjMDlmMzJhMTI0NzdlM2VhNmI1NmIgbGVnYWN5LXRydW5rCis3NTUzMyBjYWYzYzkzZDAxOTM2YTRiMmU0N2FlNjJlODVlNzhjZjU5YWE1NWYyIHB5M2sKKzc1NTM0IGU2YzRkYmI1ZGIwMmU1MDhhNDllNzk3ZmFmOTM0NjM2MDUwMzE5MGMgcmVsZWFzZTMxLW1haW50Cis3NTUzNSA3YWQ2ZTc4YTljN2RjZGIxNTZkZWRhMmNjNDU1YTI2OGM4MjVmNmUzIHB5M2sKKzc1NTM2IGNlYzdmNGM1ODU0NDE0MjkwZjc1NmU1NjA0Mzc3OTlhZjc3NmI5MGYgcmVsZWFzZTMxLW1haW50Cis3NTUzNyBlZGYyMjYzN2JkOTA4ZDM3Yzk3NDA4NTkxNmQ2Yjc5NjY0ZTcxZTFmIHB5M2sKKzc1NTM4IDJmMTRiMGY0NTUxYWYyYTI5MDA3MzdlYzFiNDllZDE2NGE1ZGJkNDggcHkzaworNzU1MzkgOTFlZTgxZjFhNTI0MmI2NmU1YmM5ZjVlNTI2MDAwZjYyM2JlZjljNiBweTNrCis3NTU0MSA3YWU2ZDVlNGY3OTgzNWU3YjQwN2Y4YTcyZDA4YWYzMjdjMjNkMjY4IHJlbGVhc2UzMS1tYWludAorNzU1NDIgOTViZDcwZDVkNzE1Y2YwOGRiNTMxZDVlN2M3MjBhOTVjZGZkN2RkOSBweTNrCis3NTU1MSBiZGMzOTA3MjFmOTc1YzhkOWY2MTBlM2FmODU0MDk0MDY5YjdlYWJjIGxlZ2FjeS10cnVuaworNzU1NTYgYTIxOTk4ODkzYjFkZTQ2NjNkYmVmMWI4ZDlkMDdlMjk1N2U0ODAzMCBweTNrCis3NTU1NyA5NDFmMWJlNDIzYWExODg3MWViZDlmNTFhZGExZTM2ZWYxZGQwMDkyIHJlbGVhc2UzMS1tYWludAorNzU1NjEgMWI2MDJhMmQ4MWVmNTE4YjdlMjg3MjQyYTE2NzJiNTZlMWRjODBjZiBsZWdhY3ktdHJ1bmsKKzc1NTYyIDZlNGE0OTBlNzE0NzEzZWMwNGE3ZTQ1ODEzYzUwYzA2ODVkOGRmNGQgcHkzaworNzU1NjMgMjYwMDczOTU2MDdlODlkYzNmOTk2MTEwOTg0OGMwYzMwYjNkZjFhYSByZWxlYXNlMzEtbWFpbnQKKzc1NTcwIDEyMDc5YzNkNGI3NzljY2NmYmYyZTNhZDMwNWIxOTNjZTM3ZWVhOTUgbGVnYWN5LXRydW5rCis3NTU3MSBiZjc2MjQxMjBlYzdmZTFhYWUwODZiZGEwYmUyMzg5NjBlZTNlZDhhIHB5M2sKKzc1NTcyIDAyOTk5NTEzOTFlMzZhZDIzMTVkZDQwZjVmNGY1ODQzYWY3M2Y0MTkgbGVnYWN5LXRydW5rCis3NTU3MyBiM2JlZmUwZjJiOGRkYzJkZTQ3YmYzM2ZhMzk1OGRkNmNjMzkwZjJkIHB5M2sKKzc1NTc0IDNjZmQyMGNkNjQ1OWY1Y2M0MmZjYmExZjA2MmM4NGI3ZjMyMDc2ZTUgbGVnYWN5LXRydW5rCis3NTU3NiAxN2NlOTRhZWU3MDQ2YWI5MGYyODE0YmYzNjc0OWM0N2E5Y2MzZDEyIHB5M2sKKzc1NTc3IDFlNzAzNWZhNjE1NGM2ZjY1ZjA2MGY2ZDlhNTJjM2IxMjk0NTg4ZTkgcHkzaworNzU1NzggMjliM2UxMjZjMGMyNDY3MmY3ZjQzOGExNDhlYzVjMzg2ODEzMzBlYiByZWxlYXNlMzEtbWFpbnQKKzc1NTgwIDFiOTQ0NDk3ZTgxZTFkYmZkZjI1ODIwZDVlNWM3MDg5MTk5NTA1NWYgbGVnYWN5LXRydW5rCis3NTU4MSA4YzFiNjFlNzQ2M2E0MWY3ZjFkN2U2YzY4OTA0MGJhYzI3NWMyNTUwIHB5M2sKKzc1NTg0IDVkOGIyZDZkY2Q2MjI5ZGVhMmM0YjU3ZjE4ZGM0Yjk1Mjc2MDczNzUgcmVsZWFzZTI2LW1haW50Cis3NTU4NiA3MTZlYzNlZDNmY2Y4ZmFmNWUzZGI4YmE1YWYxOTM5MTIwMTRhYzEzIGxlZ2FjeS10cnVuaworNzU1ODYgNDE0ZTAzYzE0ODE1OWY0OWJkNmRlYmZlNWNhOGJiY2Q4ZmRlMDc5NyBweTNrCis3NTU4OSBlYmUxOWM0YzcxZjU3MDZjOTdlMmJhN2I4M2FhODNlNzg3MmU2YTk2IGxlZ2FjeS10cnVuaworNzU1OTAgYTliYTYzN2Q0ZGNkMzc1NjU0YzRiYzIwMTRjMzkwNGUyMjE5ZGE2OSBsZWdhY3ktdHJ1bmsKKzc1NTkxIDk3ODM0OWMwNzRjZTA4MjhiZjU1YzAxYTJhYTFlNjA0MzM2MDIwNTcgbGVnYWN5LXRydW5rCis3NTU5MiBmZTg1ZWYyN2RjNDc5MWU2NmRmNTRjOWQxNzA5NTQ1NzU2NGI2YmIwIGxlZ2FjeS10cnVuaworNzU1OTMgNWRlMWFjMjQyYmZiNTYzZjQ0NWY3MzZiNTY0OGQ3NWY4YWExN2NlYyBsZWdhY3ktdHJ1bmsKKzc1NTk0IDU4YmRhMTIwNWFjZDlkODkxYzM0ZTM4OTg1N2M0ZmIyYmFjNzAwN2EgbGVnYWN5LXRydW5rCis3NTU5NSAwYmE5YjIxNzE4MWVkOGM1NjA1ODNjOThmOTBlOWM2YWUyZWQyZDQzIGxlZ2FjeS10cnVuaworNzU1OTYgM2MyNmM2YjRkYjUwMGI3Y2NhZjQwZjExYmU1MGY4ZmI0ZDgzYjM3OCBsZWdhY3ktdHJ1bmsKKzc1NjAwIDA3ZWY1OTc2NmIwMjZlMDMyMTQ5OGU2MzI0YTAxODE1NGYyYmFmZTEgbGVnYWN5LXRydW5rCis3NTYwMSAyN2VhYWMwN2M1ZDZhODlhMWE2MWEwNzY3NjU0M2VlODBkZGE2ZWRkIHB5M2sKKzc1NjAyIGY1NTU2OGIzOTkyNTZjMjczMTgzNzhhMWRlY2Q3Mjk0ZjcyMzU4YjAgbGVnYWN5LXRydW5rCis3NTYwMyAwNjUzNDg2OTM1YjY0MTY4ZGUzNDRkMGE1MjA2ODZhMDFiZDgwOWNiIGxlZ2FjeS10cnVuaworNzU2MDQgYmFjZDRkNDIyNTZiNjY3OGY4NTgxMDlkNGZiNzExYmM0MzMwMGU3ZiBsZWdhY3ktdHJ1bmsKKzc1NjA1IDcyYTVmYzc5MGQwMWZjMjMyMjg2YmVjNzc4NmM3ZmRhODc2ZGRkNzQgbGVnYWN5LXRydW5rCis3NTYwNiA4YTU4YTdlYzkyZGM1NmQ2OWZkODliNWE1YTRhMjc4ZGI1MzUyMTNmIGxlZ2FjeS10cnVuaworNzU2MDcgNGNmYWY2YWVjNWViYzU1OTkwNWYyOWM2NGU4ZjdiNTNmYjNkM2ExNSBsZWdhY3ktdHJ1bmsKKzc1NjA5IGM0Mzg4ZTdlNzdlOWY2NmY2NDEyMDYwMWNmNjBlNzc4NDFjYjJhNDIgcHkzaworNzU2MTAgNTY5YTBkMTcwZmFjNzIwMzQ1MjJkYjY4ZTQ5NTRhZTlkNWM4NGQ3MyBsZWdhY3ktdHJ1bmsKKzc1NjExIDFiODg4MzQzMDEzOTExZmRmYjZlMzU1NzlmMGExMmM0OWU3YzdhZDEgbGVnYWN5LXRydW5rCis3NTYxMiBhMTdiNThhNDg2ZjQwYjU4NTFjNjQ5NmUzMDI1MmNmOTNjNTMxNWNkIGxlZ2FjeS10cnVuaworNzU2MTMgOWZmYTE1MTMwOTg0NjUzMTVlN2M5NzU1ZjY2MWZjNWQ3ZmZlOTVmZSBsZWdhY3ktdHJ1bmsKKzc1NjE1IDY4Mjc5YzEzM2ZkOTkyMmQ0NjE3NjA2NjFmZjAyOWQyOTI3OTcwNjggcHkzaworNzU2MTYgMzIxZTYzNWM5YWI4MjZhOGFmYTVmM2Y0NjhkMDU2NDU2NTM5MjI1YyBsZWdhY3ktdHJ1bmsKKzc1NjE3IGYzYjdiZDZlN2FkZDlmYTcxN2YxMTFjOGUzNjkyNDkxZjJhZGE0ZTQgbGVnYWN5LXRydW5rCis3NTYyMCBkYjIxYzNjMDA5ZGIzOTNjZTI3ZDk3MzdhMTE4MWEyNjA4OWI2ZDI5IGxlZ2FjeS10cnVuaworNzU2MjEgM2MwNjY0NDgwZjdhMTYwYmUzYTQwM2Q3Y2ExNzQ0ZjQ0MTlhZTUyNyByZWxlYXNlMjYtbWFpbnQKKzc1NjIyIDg4MTk1OGRhMjE5YTdhMzRkODAxN2RmMTEzMWM0MmQyYzE2NWRkMTcgcHkzaworNzU2MjMgNmQyNzJmZDFjZGQxZTdiNDVjZGJkMjg0NzhkMTlmOWRlNWUwNzBlMiBsZWdhY3ktdHJ1bmsKKzc1NjI0IDkyZGRlMjgyMTUzZGVmNTRiNDY0OWQwZDQ3ODIzOWJjNzRmODkxMjMgbGVnYWN5LXRydW5rCis3NTYyNSA5ZWI3OWU5NDIwNGQyNjVjODlmNDc5MzhmOTFmZTU4Mzc0MDRhZmI4IHB5M2sKKzc1NjI2IDYyMDA4NWFiNDk1YjQxNjQ4NDFhMzFlMzc5MWJlZmYxMjA1ZDgzN2IgcmVsZWFzZTMxLW1haW50Cis3NTYyNyBiMTFmMDJjYjExMjQ0ZjdkMmY1NWVlYTE1Y2RhNWE2ZjYzZTY5OWJjIGxlZ2FjeS10cnVuaworNzU2MzMgOWRmMzM5MzcxNzFmNjUxNmNiNTA3MTFjMzQ1M2JiOTQ3ZmUzY2JlZiBsZWdhY3ktdHJ1bmsKKzc1NjM0IGYwOTE0NDRkZWVhMDEwNDBmZjJmODNiOGUwYmYwMTZlYmQ5NTZiMmUgcHkzaworNzU2MzUgOTZkNmMxNDZjZmE5MTc2MWE4NWJmMzY0MjM1NmNkMzFiMWE4NjViMSByZWxlYXNlMzEtbWFpbnQKKzc1NjQwIGYzOGRhYmYyNDBjYmFlYzQxNTNmNGM0N2RhNWU4OWJmZTIyOTdjNmUgbGVnYWN5LXRydW5rCis3NTY0MSAzNWJiNDMzODY3MzQ0ZmUzMjdiZTcxM2ZhZDgwZmE3MDRkMGJlMzlhIHB5M2sKKzc1NjQyIDE2MWQzMzJhZmM4ODRkN2E3NDcyNGJjYjRkOTA0NDBiMTM2NzMxODkgcmVsZWFzZTMxLW1haW50Cis3NTY0NyA4MGYyMjkzZmQ2NmFjODUxYjZhNDg1ZTc4MDE0ODdhNmRkYmM2NjdkIGxlZ2FjeS10cnVuaworNzU2NDggMTBlNzI5MzlkMmNmOTE2NmRiNWQ4YTMwN2FmOThmMWQyYzNkZDViOSBsZWdhY3ktdHJ1bmsKKzc1NjQ5IDlhOTFkNDUyYTBmODhmN2U4NjVmYTYyYTI3YWJlZDJlYTY0NzQ1ZWYgcHkzaworNzU2NTAgMmYzMDdjN2FkYjhmYzViMTA3NzUyNzIxZmZlYzQyMjE0MTU4ZjAwMyBsZWdhY3ktdHJ1bmsKKzc1NjUxIDIxNDZiYmRmNGVkN2RhMzhiOWQyZDBlMDJiNjE1ZDA2YWMxMzNhYTQgbGVnYWN5LXRydW5rCis3NTY1MiAwYzljZmM3ZjFlOTViNzdmNWM4Yzg3NWNiYmYzNmFjZWI4NDQ4OTVkIHB5M2sKKzc1NjUzIGViOTI1YWRiYThmOTAxNGM0YzIxZTNiNGY0YzU5MmM5MGQ1ZjhkNGIgbGVnYWN5LXRydW5rCis3NTY1NCAyNjQ2MDlmYmRhNDgxNTYzN2I1OGFjNDViOWI0NGVkNDAxYzE0ZTc0IGxlZ2FjeS10cnVuaworNzU2NTUgYWUwMmIxNjgxNjJjZThmNGRkZWEyMTQwYTE2MjQ5OGMyM2IxMGQ0NCBsZWdhY3ktdHJ1bmsKKzc1NjU2IGM3MDQ3NTBlNmYzZTViMDUwNmUxNzRjZDJmYTRhNmM5ZmI0OTdhMjQgcHkzaworNzU2NTcgNmQyOWNlOWRjYTkwMmRhM2YyMWVjYjA3NTFmMjE0NjE2ZDVmYmIxYyBsZWdhY3ktdHJ1bmsKKzc1NjU4IDJhYjA4YzkxOTY0ODI0Y2YwNWFjOTVjODViYWRkMzljYWU3ZmNjNzIgbGVnYWN5LXRydW5rCis3NTY1OSAyNGQ0M2E5MTQyZDI1YWYwZWIyMDIzZDQwMDI5ZjkxYjkzZjU3ZGU0IGxlZ2FjeS10cnVuaworNzU2NjAgZGFiZTFmOTJjYTI3NDM3Nzc5YTE4Mzc4MzdjZjNlYjc0MGNkZTJiNCBsZWdhY3ktdHJ1bmsKKzc1NjYxIDcyMDY2ZTViOTQyMTdlMTM4NmE5ODU2NThmMzc4NGU5MGFjNDFjMmUgcHkzaworNzU2NjIgY2JlMzkzZmE0NGY5NjI4ODc3YjMzMGU3MmU3YzI0OTM4YzEyNGVhOSBweTNrCis3NTY2MyA1NjdiMGYzNGIxZWIxM2UzMjMyZjcxM2VhYTJlOTZlOGZmYmY3Y2IyIHJlbGVhc2UzMS1tYWludAorNzU2NjQgMDZlNjYzNjYxOGQ3MjFiODNkNDQxZGNmYTY5Y2ZkN2MyOTUxNTI3ZSBsZWdhY3ktdHJ1bmsKKzc1NjY1IGNjODhhNzAzNDI4ZDAxMWYyYmE4NGZlM2UzOWM1NmZhNWNmYzA5NTcgcHkzaworNzU2NjYgYWFjZWU5NzQ5ZDE1NDM1YTk3MWM3OTQ2YmZkMGMwN2U4M2JlNTAyYiBsZWdhY3ktdHJ1bmsKKzc1NjY3IDkyZjBhMWNhNGU5ODY4NDNkM2NiMTY3MmY2YjU1MTIyMTM2ODk5MTcgcHkzaworNzU2NjggMGMzODQwOGFkODE5ZTBlNGIyNDcxYjMzZGFjNmU2MjY2ZWMwNDRmMyBweTNrCis3NTY2OSBiMmM4Yjk4NDI1MGFhZjkxNzljMzExMTk2MjJmZGJjN2JkMzk3ZGRlIGxlZ2FjeS10cnVuaworNzU2NzAgNGQ2NWYxMjJiMmIzYjdmNGZhZGFlNGUwZTUxODMzYjAxMTgxOTMzYSBsZWdhY3ktdHJ1bmsKKzc1NjcxIGRhZDIyYTFlZDI4YjJmNmY1YjU3MWM4N2Q2ZDc5ZmNjN2FlYmI0YTQgbGVnYWN5LXRydW5rCis3NTY3MiA1Y2YzMjQzMzE1YjViYjhhOGI3ZTAzYTc0ZTM5ODViZGMyMDgxNmE1IGxlZ2FjeS10cnVuaworNzU2NzMgZjAyMTk5MWVjZjhkNmIzMWUwZmZkOWYwNjUyOWUxNzNhMzIyMjZiZCBweTNrCis3NTY3NSBlZGYzNWMzYTQ4YWI4YjI0YTJiNTc2MGExNmM3N2VhMDRlZDcyYjk4IGxlZ2FjeS10cnVuaworNzU2NzYgNDNkNDdjYjY2ODhjZmRlMDk5NTA5NmM5NmQ0MzNlNGM4MzJmNWM5MyBweTNrCis3NTY3NyBjYjcyMWMzMTk1ZmM3NGRmNzMyZDI5MmM0OTU3YmJkYzdkYWNiMjljIHJlbGVhc2UyNi1tYWludAorNzU2NzggMTRiNTVhNGU4NzI1YWM4YzMzNDQzZTY2NjIwYmQzZGE4MjRhNjk2NCBweTNrCis3NTY4MCBiNTRkYTVjYWFiMzY1MDUwMTE2NmExMzk2ZDc3MDFiZjJmOGI2Njc1IHB5M2sKKzc1NjgyIDBjMTIzOGNhYmU5MjE1ZWJjZGRhNWUxZTk3ZTI1YWEwMDY4NmYwOTAgcHkzaworNzU2ODQgZjVjNTYzYTdkZTc1ZDM5MmNiMjRlOTJiMTUxNzYzODQ5ZWU2MDNmMCBweTNrCis3NTY4NiA2Y2E2NDJkNGY0MmZkNWY4NzA1NDY2OGUxYzEwYzdhYjA4MDVhMzQ3IHB5M2sKKzc1Njg3IGM3MWJhNWQxZjE3ZDIyZjE2ODc1Y2ZlZjE5MjdiM2U2ZmFlM2RkOGUgcHkzaworNzU2OTYgZDNmNmZiZWJlYWM5MDNkNTM5N2UwOTExOTQzNzRlYjExYjExMjExOSBsZWdhY3ktdHJ1bmsKKzc1Njk3IGZiZTZiMjY1YmQxYTA5NTNiNjg3ZjI3MjllODRkMTQxMzUxYjgxMDMgbGVnYWN5LXRydW5rCis3NTY5OCA0ODM0YTQyODU0MTFiOTEyMzk3NzQ3MmZkNjA0ZmI1MDUxZWVmYTY3IHB5M2sKKzc1Njk5IGEzNTNlMTA4YzdlNDIzOWQ0YTM5NjQ4ZjVkODI3NTExZGM1NDI5NjQgcmVsZWFzZTI2LW1haW50Cis3NTcwMCA5NzczNmM3ODkwYTZiNTM2YWNiYTQ4MDJlZDY5MDI3MGE1OGM0YzlmIHJlbGVhc2UzMS1tYWludAorNzU3MDEgZGQ0NjZhYzE5MmJlOWRlZmQ5MGViZjM2ZThmMWIxYjRhODY5ZTVlNCByZWxlYXNlMzEtbWFpbnQKKzc1NzAyIDhhYzkwNzAxNTYwNTk1NWUzYzkwNjQyMTg4Mzc4ZTM5MzFlNjg0NDEgcmVsZWFzZTMxLW1haW50Cis3NTcwMyBmOGU2NWNhM2ZkMzljZDBiM2UxOWQ5NjEwZjQ5NWU1ZjU2MjdhZDI4IHB5M2sKKzc1NzA0IGNiOWM1N2UyZWJkMzQ3OTMwZjAyMDlmNGMyOWI0MzAxMjExMjgxNjQgcHkzaworNzU3MDUgYTNjYjgxMmQ4MGY5MDc2YzViM2EwMzRhMjg4ZjkzMWFhMDM2ZmEwZiByZWxlYXNlMzEtbWFpbnQKKzc1NzA2IDg4MDNjM2Q2MWRhMjc1YzcxY2FiZTllOWQwMjc0ZGFjOTkwMmUyYzAgcmVsZWFzZTI2LW1haW50Cis3NTcwNyBlYzRhMWI0ZWNiMzE0MDg4NDRhZjg0YzY3MjI0ZmQ1MDFiNTNiNDgxIHJlbGVhc2UyNi1tYWludAorNzU3MDggYjUxOTYwOGE5NzAxZjAxMDhlN2ExNjE4M2NkZGQ1ZWYzMWQzNWJjZSByZWxlYXNlMzEtbWFpbnQKKzc1NzA5IDdiNjAzNjgwYmYyOTVhMjAwMjQ0ZDBhNGQ2M2U1ODRlNzJmMzIxZTAgcHkzaworNzU3MTAgZDNjZjhlYjg3Mjc0YTZjNjRmMTYyYzc5NGY0ZDViZTFhY2RmMTVjNiBweTNrCis3NTcxMSA3NmM2NjY5MGQxZWVhNTM3NmU5Mjg4OTE5MDNmYjVhY2ZhMjY4YjdiIGxlZ2FjeS10cnVuaworNzU3MTIgOGVmZjc1OWQwODBmOWRiMWQ3YmQ3YmYzOGE2OGE1YWE4ODNmNjMxNSBweTNrCis3NTcxMyA5NzEzOTNmNjBiZDg3NGRjNDgxNjViYmQ3YWQ0ODYyNDcwMDUwMjBkIHJlbGVhc2UzMS1tYWludAorNzU3MTQgNmU0ZDg5NjhlMjQ2OTZiZGE5MjhmOTQ1ZjMwNGQ1NWNlMWE1MGVlZSBsZWdhY3ktdHJ1bmsKKzc1NzE1IDdkYzU3Yjk5MWQ4M2JkZGQyYzVmNTJhZDZkNjA4ZTc1ZmFjOGY1Y2EgcHkzaworNzU3MTYgZjU5ODg0M2YzNjk1YmNjYzFmOGMzMDljOWVjZDYzMWVmYTA4OGFhMyBweTNrCis3NTcxNyAwOTVhZjk5ZTZiNjQwZjUyNzc4NDU4N2FiNmI5ZGUyYTlmOTgxZWQwIGxlZ2FjeS10cnVuaworNzU3MTggMzhhNTc1NGIzMDM3NzFkODE1ZDQzZjUwYjNlMjc4YTg3NTIwZjUwNiBsZWdhY3ktdHJ1bmsKKzc1NzE5IGY0YzdmZDg1ZjIzMjQwOTY0YTQxMzQyZTljNjgxNWY5MDEwNmMwNzcgcHkzaworNzU3MjAgMzhmZGEzYTQyYzBiM2Y1OGY2YTc2Y2MxMjE0YjdlZjkwZTUwOWVjOSBsZWdhY3ktdHJ1bmsKKzc1NzIxIGRhOTZiM2ZlYWY1MjViNzYxZmNhNjRmMjlmMWRhNDlkNGFiYzNlZmIgcHkzaworNzU3MjIgNzQ0NzJkYTA5ZjZjZGRlYjg1MTlmNzZlNjdjZDhhNWI0MTE1NzM3ZSBsZWdhY3ktdHJ1bmsKKzc1NzIzIGI1NWMyZWVlMzQ4YjU2MzY2MWQ2MTBjOWNiZGI3NjRmMmQ2NDc0ZmUgcHkzaworNzU3MjUgZjNiZjkyY2QxMTkxNzRjMzljMGE2ODdlN2ZjZjU0MjFmYWMyOGFkMCBsZWdhY3ktdHJ1bmsKKzc1NzI2IDQ1MDEwNWRkOWNhNzQ1M2RjM2MwYTdkMjIwNjkyYjg3OGMyN2FjMzYgcHkzaworNzU3MjcgNmRhMGFlNjgwZmI2MDJkY2ZhNjljNGI2MDM2NzlhZTY5MmZmNmJhOCByZWxlYXNlMzEtbWFpbnQKKzc1NzI4IDAzZTFkYmUyZjRkNTljODM4OWVhNDUyNDg1ZGNmODBhNmFlYmU1NDMgbGVnYWN5LXRydW5rCis3NTcyOSBiNTA0MTc1NmZkOTE0M2M4MDViZDViYjVlOTVkMWFhYTMyNDU0NTU4IHB5M2sKKzc1NzMwIDQxYmUyYzY5NjE5YjJjNmM2NzEwMmVjN2JhOGFmZmU1ODNiMThmMWQgbGVnYWN5LXRydW5rCis3NTczMSBjNTY0MTljYmRkNDg2NDM3MTljZDMzOTkxMGI3ZTA4YzhkMjRlYWIxIGxlZ2FjeS10cnVuaworNzU3MzIgNmQyMzk2ZWE3YjAzYjQ0Yjc0N2ZiMWM0MjVmZDkwMzE5ODljYTJlMyBweTNrCis3NTczMyBlNTVmZmI4N2NiNzAyY2M1ZjM1NjliMDg4NzU2YzYwNjBhMDY1MGE4IHB5M2sKKzc1NzM3IDRjYmVhOWU3ODM1NjgxODEzMWFmYTg3NGJjMmFjZjk2MDAwYzFkMDggcHkzaworNzU3MzggNWE4ZTgxNTk0ZjBmMTYxZTM4M2I4MzcyMDI5YTE4Yjk1M2IxMzY0MyBweTNrCis3NTczOSAwYjFhMDg4MDEyYzc0YTIxN2M2ZDk3MjZlZGMzNWUwYjI5Njk3OGMzIGxlZ2FjeS10cnVuaworNzU3NDAgODc1NTAwNmVkZjk3M2RjYWI1NmEyNGU4YThlM2IyMGJmMjJmMTI2MCBweTNrCis3NTc0MSA4OTZmOTQ1NDFmNzJlZjM1YmFlMTUxZDMwMWYxNzVmZjdjMzNmZmQ4IHB5M2sKKzc1NzQyIDQyMjUyZDZkMTAzMGEyYzJmMjRiN2U4NzU0NWQ2N2NiNDNhMDgwODEgbGVnYWN5LXRydW5rCis3NTc0MyBhNzc4MTcxYzkzZGU1ZWM2OWIxYzM4ZjU4MGQ4NzIwOGY4MzRmNTBmIGxlZ2FjeS10cnVuaworNzU3NDQgYmU1NGI0MDQ4NzllNjVhZTk1MTZmOWJjODA2ODA3N2UzMzMwNzY0YSBweTNrCis3NTc0NSA5MWEwYzNjNjAyMDk0ZTUxYWFmYjkzOTIwMTQyMzc3OWNhZWJjYjVlIGxlZ2FjeS10cnVuaworNzU3NDYgNTVkOGE5MTE3ZGU3ODBmZjliOWFlYzJiOWY4ZWJiZTc3M2ExY2ZmMCBweTNrCis3NTc0NyAxOWE4MzJiODQ2NGEyZWY5MDEzZjg5MDdjYzM0MTZiZGJiYTBjNDAzIHJlbGVhc2UyNi1tYWludAorNzU3NDggNDE2OWQzY2VjYjlkY2QyNzI5NjljNDc1MDI1MjkyYmE0NjA5MTAwOCByZWxlYXNlMjYtbWFpbnQKKzc1NzQ5IDJhYmMzYjRiY2U3Y2Y1NmE1ZWE0ZWI5ZmY4ZDQyMzI3Y2E2OTMxODMgcmVsZWFzZTI2LW1haW50Cis3NTc1MCAxN2FjZGQ2NTllZTllNTBmMGRjOWEyOGZmOTRhMTlhMGQ3ODBjZTI5IHJlbGVhc2UyNi1tYWludAorNzU3NTEgYTBlZjRlZjVmYzg4NzVhYmY3NTM0NDI2N2MyNjM2N2MzODI1Y2IzOSByZWxlYXNlMjYtbWFpbnQKKzc1NzUyIGY5Y2ZlYTIwMTViMjBhNjE0OTdmZWYwZjUwY2I5NGI5MjFlMmM3NjggcmVsZWFzZTMxLW1haW50Cis3NTc1MyA4MTc4MWQxZTJmYjljZDI4MTRlOWY4ODFlMWFlZDZiMDg0NWEwNWEyIHJlbGVhc2UyNi1tYWludAorNzU3NTQgYzFjMGEwYzdmN2JjMzAyNGY1ODk1ZmM4NjM2ZDgzODZkMzIzN2Q2NSByZWxlYXNlMjYtbWFpbnQKKzc1NzU1IDUyNDUyNjc0NWYyZTk5NDdlNTBjNWU0MzJkMmQ0ZWNjY2Q2NGJkOGIgcmVsZWFzZTI2LW1haW50Cis3NTc1NiBmYWM0ZTNmZDc0N2FjZjJjOTE3MDhiYWM5YTJkMGI0N2FmNzMwMWJhIHJlbGVhc2UyNi1tYWludAorNzU3NTcgMjUwYmM4MjQyZTdlYWJmZTQ1ZmRkODBiNjMyNzY3ZDgyMzkxZDczMCByZWxlYXNlMjYtbWFpbnQKKzc1NzU4IDNkNTQwNDY5NTg1YmU4M2I4YzAxYjA0NmE0NzhlMWEzNzUwYjg5OTYgcmVsZWFzZTI2LW1haW50Cis3NTc1OSA4MzA5YWQ2YWU0YzBlNzg4YTI0M2NjNDQyOTE0NGJlNjk1M2ZlYTc1IHJlbGVhc2UyNi1tYWludAorNzU3NjAgYzdkY2MyMjNmOTI1ZDM5NDYxYjFlODc5Y2Q3NjQ3Mzg2YTQ5YzA5NyByZWxlYXNlMjYtbWFpbnQKKzc1NzYxIDM1NTM5NTQzODdmYTViMjY2NWRjMWY4N2FkNDZiOTMyYzgwY2E5NTAgcmVsZWFzZTI2LW1haW50Cis3NTc2MiAyNmVjOGRiZDZmNjk3ZWVmM2RkODdmMTg3Mzg1NDM4NmE5MjJkYzM4IHJlbGVhc2UyNi1tYWludAorNzU3NjMgYjcxOGYzMTg4Yzc2ZmRjMzliMjM5ZjIyNGM0ZGFhNTlhNDA0NTgzOSByZWxlYXNlMjYtbWFpbnQKKzc1NzY0IDQ3ZTJjMTRiMTUwMzM1MDNkMTM3ODk4MjA4ZGQ4MjVhM2I2ZGNhZWEgcmVsZWFzZTI2LW1haW50Cis3NTc2NSBjY2JmN2ViZWY0NzUxMjcyZmMxYmRjZjU0MGI3ZjM3NTYzMzdjNDRmIHJlbGVhc2UyNi1tYWludAorNzU3NjYgYzc2MzdiNjZiMzRiYmUzN2EyZmRlNzZlNDZjNzk1NGQ5MjczMmI5NiByZWxlYXNlMjYtbWFpbnQKKzc1NzY3IDBkZDVkMzY3MjEzNGQ4ZTVhMmIxMTYxN2U1ZWZiYjRhNTdiNjIxMjggcmVsZWFzZTI2LW1haW50Cis3NTc2OCBmMDBjY2Y4ZTEzNWUxMGEzYTI1Y2JkOGI3NjY1NzUxZmQ3Yzc2ZmFmIHJlbGVhc2UyNi1tYWludAorNzU3NjkgZTNlNTNiODljMTc4NDI5NTMzMTFlOWYyN2E2NGJmNGEyNDM2YTUxYyByZWxlYXNlMjYtbWFpbnQKKzc1NzcwIDZkNDJmMWVlZjQ1ZDlkYmU3NjUxNTYzMTBiNzkyNjQxZjhkMWE4MDIgcmVsZWFzZTI2LW1haW50Cis3NTc3MSBiYjgxODg3MzZhMjliNGE2NDE0MGYxMTU3NDNmYTcyNzVjZDNmNWIxIHJlbGVhc2UyNi1tYWludAorNzU3NzIgNzg2YWJhYmE0NjJkMWU3NGQ2ODNiNWYzNmY4MTI2ZGI2M2Y0YjYwYiByZWxlYXNlMjYtbWFpbnQKKzc1NzczIGM4NjMwZjczMDkwNzE4ZWIyNmQxZTY3YThhMjA3YTEzNzRkYWEyNDYgcmVsZWFzZTI2LW1haW50Cis3NTc3NCAxMzE0NzI3YzA5YWU3YTY5MzU0Yzk3NWE5NGU5NjcwZjMwOGM3ZjdjIHJlbGVhc2UyNi1tYWludAorNzU3NzUgMDk2YjQyY2NiMjU4ZjVjNjNkMGRmZmYwOTY1NTljNWQ5MmFlZTAwNyByZWxlYXNlMjYtbWFpbnQKKzc1Nzc2IDhhZGY4ZWY3YTRkYmFhYzhhMGM4MGJlM2MwNWI0ZTFjNTM0YjY5MmQgcmVsZWFzZTI2LW1haW50Cis3NTc3NyAwN2UzYzBiNDFkNTAwM2NjNWE4NTZhNzkyNzQzYjA5ZmMwNjY4YmRkIHJlbGVhc2UyNi1tYWludAorNzU3NzggNjhmNzI4OGQxNTVjZTNjMTdmZTIzZmY3ZmEwMWJjZjgwOTY1YWRmYSByZWxlYXNlMjYtbWFpbnQKKzc1Nzc5IDBkNTFhNWQ1NmI1YTIyMTU5ZGM2ZDBiZmI1ZjlkODMyOWZmN2Y5MzQgcmVsZWFzZTI2LW1haW50Cis3NTc4MCBhMWIwOTM2YjAyN2NmM2YwNmE5ZTRlNTkwNjg5YzRkYTZjYzY5MmNhIHJlbGVhc2UyNi1tYWludAorNzU3ODEgNWQ5M2M3NTQwNTdjZjI2Njc1YzBmNGM2NDMxMjI0M2Y4MDA4MTZiOCByZWxlYXNlMjYtbWFpbnQKKzc1NzgyIDEyN2Q2MjMzOTZhYjkzYWM5N2EwNWIxZGU0MTA5MGM5M2NjNjBkMmMgcmVsZWFzZTI2LW1haW50Cis3NTc4MyBmYWI2NjBjMmVmODg4N2JjYzhiMzlmYjA4MGRlZjQ4YWZjNWQyMjEyIHJlbGVhc2UyNi1tYWludAorNzU3ODQgNjZkZTcxMTEyMzBhYjQ1ZDQ5MzZmYjMyODU0Yjk5ZDU0Y2Y5MzY4MSByZWxlYXNlMjYtbWFpbnQKKzc1Nzg1IDZiMDVkNDhjY2EyODcyMDYzMjAzMzY5MTJiZjY0NDY4NTUxMDY3OTYgcmVsZWFzZTI2LW1haW50Cis3NTc4NiAzZTE1YTA3YTMyZmFmOWQ0MDRjZjIyZTZjNDY4MGUxNjM1ODhkYWIwIHJlbGVhc2UyNi1tYWludAorNzU3ODcgOWIyNGQwMTAxMzNmMGE2MTJmMjljM2MzNjIxNGRmZmRhNTJmMTZiYSByZWxlYXNlMjYtbWFpbnQKKzc1Nzg4IDg1YWE3MDZmNzEyNmQyMTE0MDY5OTkxMGY4NzdmMDkzOTE3MTI1MTEgcmVsZWFzZTI2LW1haW50Cis3NTc4OSA0ODUyMTIzM2JkNmU4ZDRkOWUyNDcwNjZlMWZmYjRkMjhjNWY5ODRkIHJlbGVhc2UyNi1tYWludAorNzU3OTAgYzRjNDI5YjA4YTU3NTk5MjJiMTJjNTg3OTg0ZWVlNGNiYzMwZGQwZiByZWxlYXNlMjYtbWFpbnQKKzc1NzkxIGVmMzE5NDc0OTM3NzAwMDM4ZjRhMTRmODY4MTE0NjQwZGUxNzBiOGQgcmVsZWFzZTI2LW1haW50Cis3NTc5MiBiN2I4OTcwY2Q1YTU3NjQwNGQ0ZTgyMDMwNDA2MDU1NzhhMzk4ZjUwIHJlbGVhc2UyNi1tYWludAorNzU3OTMgMjg4NTI1MGJhNWY0OWY1NWRmYWU3YzkwOTg5NzRhOTgwZjFhY2JiYSByZWxlYXNlMjYtbWFpbnQKKzc1Nzk0IDQwMmRhZGM3YjRhODYyNDIzZWVlMTFiNDU5YjI2MWU3MzkzNTE0YjcgcmVsZWFzZTI2LW1haW50Cis3NTc5NSAxZDY4YjFkYzQxMDkzNmZiODcyMWU4OGU4NDY3MTM2ZDcyNTMzMjAwIGxlZ2FjeS10cnVuaworNzU3OTYgOGQ5ZWY1YTc5YmM3YTU5MzE4ZDUyYWZhNDRiNTdhOWU1MzhkNmQ5NSByZWxlYXNlMjYtbWFpbnQKKzc1Nzk3IDMwMzU5YzMzYjZmNjc3ZjBjNGM1NDg2NTczMjczOTg3NzQzNDNjNWUgcHkzaworNzU3OTggOTdkN2NkMzY1ZGQ1MzQ0ZjUxYTU5MGQ5ZjI1MjI5ZmIxZDY5MmE1ZCByZWxlYXNlMjYtbWFpbnQKKzc1Nzk5IDU5OGI5YmVlNzRlYzg4MmMyZmIyMTAyNWRlYjcyM2NlMDE4ZWI3MDEgcmVsZWFzZTI2LW1haW50Cis3NTgwMCA3Mjg0NTA3YmFkYjJhMDk3NWYxOGQ3OGExZjg0ZjhkODJjZWRjNTM5IHJlbGVhc2UyNi1tYWludAorNzU4MDEgODFiNjNhYjZkNDVmYjRiM2YwN2Q2MzA1OGQ2NmIwNmQzYzA3ZmJjOCByZWxlYXNlMjYtbWFpbnQKKzc1ODAyIDViMjk1MzMwODMwYTA5Njg2NGY5N2RhY2YxZDUzZGI0ODQ4NDUyM2QgcmVsZWFzZTI2LW1haW50Cis3NTgwMyBlOTQwOGNiM2UyNzRlMTUwMjUzMGVjMzViNzcwNDU2YzFhZjVmYWFkIHJlbGVhc2UyNi1tYWludAorNzU4MDQgYmQ3NzZlMDE5OTNhY2I5MWEwMDg5ZGZhODRkZDA3MDFhYTZjZDk0NCByZWxlYXNlMjYtbWFpbnQKKzc1ODA1IDllZDg5OTFhOTE0MWM2NDA5MGRjMjVjOTYxOWI3ODA1MDMzOWI3NjIgcmVsZWFzZTI2LW1haW50Cis3NTgwNiA2NzBjYWE5Nzc1ZjYwYWIzZGU1NjYyMmZmZmNlOTA5ZjVkMjI5OWQyIHJlbGVhc2UyNi1tYWludAorNzU4MDcgNzY0YWUyZWM0YTcwNjMxYjIzNDA2MGFlYjU0M2MwY2MxZTViODZlOSByZWxlYXNlMzEtbWFpbnQKKzc1ODA4IGEwNWUxYTU3MzYzZDc1YTExN2UyZTA2NThjNTBiN2JhNWEwNzE2NmYgcmVsZWFzZTMxLW1haW50Cis3NTgwOSBiZTUzNDhiMDU0YjRmNWMwYTFkODI2YzA3ZWVjNTk3ZTc1ODZkM2E4IHJlbGVhc2UyNi1tYWludAorNzU4MTAgMDBlNDVkMjFmMjViZjg1YTQ3YmJjNGIyMjEwZmNkN2RiNjFjYzY3OSByZWxlYXNlMjYtbWFpbnQKKzc1ODExIDFjMzJiOTVmZTU3OGU3MGJmNTQ1MmIwNzFkY2I5YmFhNmEyNGUyN2MgcmVsZWFzZTI2LW1haW50Cis3NTgxMiBiOTdlOGNlYmU4ZWRhNWQxYmMyNGMyOGVkYWMxZWM0YjI0MDFlNDE1IHJlbGVhc2UzMS1tYWludAorNzU4MTMgZTUwYmEyYTgxOTczNjcyOTEyN2ZmOTdjNjM4MzZlNmE0NTBkMTBmOCByZWxlYXNlMjYtbWFpbnQKKzc1ODE0IGU0YmNmZTJlNmQ1NzZjMGU3YjIxMGVmNmQzZTkzZTkzMmIyMmNmMzYgcmVsZWFzZTMxLW1haW50Cis3NTgxNSAwOTdjMzYwYjRiYTU5YTFjOWMxNDA4N2ExYjY4ZWJjOGVhOGU2MTk2IHJlbGVhc2UyNi1tYWludAorNzU4MTYgNjA0ZGI5YTgzZDE4NzdlM2M2YWFhMDE5NjRmYTViYTk5MmM3NTMzOCByZWxlYXNlMzEtbWFpbnQKKzc1ODE3IGVmMDgyNTNmMjkwYmFiZjExYjE0YzgwYTgxODNlYjFhOThkMzM3YjUgcmVsZWFzZTMxLW1haW50Cis3NTgxOCAzYTk5MjI5MmNjZDg1ZjE2ZjRjNjc5MDY3OTc4YTZmZGM2ZTQ3MzA5IGxlZ2FjeS10cnVuaworNzU4MTkgMjViYzNkNjllOGFmZTMwMTU2ZGM1ZGRhMzQ2OTNiYmUzY2JmN2FmMSByZWxlYXNlMjYtbWFpbnQKKzc1ODIwIDE5Zjc2ZmFiYTk2NTRkZGZkZDNjNTYyODVhOWI3ZTdhYzIwY2UzNWMgcHkzaworNzU4MjEgODY1MzFkZTc1ODk0ZjFmYTIyNGU3MzRiYTBlOTU0ZGU2ZTI5Yzc0MSByZWxlYXNlMzEtbWFpbnQKKzc1ODIyIDU5NTA1ZTdlNzA3MzJhMWViMjljZDE3OWJiYjcyYjM1MjAyNTViODQgcmVsZWFzZTI2LW1haW50Cis3NTgyMyBlNDczMWZkMjdkOTE2ODA1MTQ4MjMyY2U1Njg5Y2Q5MWQ0Yjk2MmU5IHJlbGVhc2UyNi1tYWludAorNzU4MjQgZTk5YWRmYzkyZGMyZWY1NzMxMTUyM2U0NGM4N2I2YjEyNTE5YmNkOSBsZWdhY3ktdHJ1bmsKKzc1ODI1IDM1OTYyYjU0MTU5NTdlZGQzMDZmODZmYzkwOWZjOGQ3NWM2NDJhMzUgcmVsZWFzZTMxLW1haW50Cis3NTgyNiA0MmZkNzg1NTM0N2U4NTkxYTQxZGEzZjQ5MWUwYjAwYTAzNGRlMzg2IGxlZ2FjeS10cnVuaworNzU4MjcgNjMyZGRiMjc1MzIxZGUyNWFmN2JmYWMwYjczOGE5ZGUwOTlkOWNiMiByZWxlYXNlMzEtbWFpbnQKKzc1ODI4IGY4ZmEzNjgwYzVkMzU1ODIyNTJkZWMxOTI2OTY4Yzg4YmYwZjZiMGIgcmVsZWFzZTI2LW1haW50Cis3NTgyOSA2MjlkNDViYTQ2ZDc5Y2YzMGY0MDU2MWI0OGZjYTRhNDdiYzU1MzAxIHJlbGVhc2UyNi1tYWludAorNzU4MzAgZTFiYmM2MjMyZjI5ZDBhMzg5MTIzOTUxNTUzMTYxZDNmZTc4NWZlZCByZWxlYXNlMzEtbWFpbnQKKzc1ODMxIGY4ZWQ4NDQwY2RiNDVmYTFiM2Y0ZDNmYmU2YjUwNjk3MDNhYjZhMzIgcmVsZWFzZTMxLW1haW50Cis3NTgzMiAxMDc1MTc5NDUxYjU2M2I3NTkxMTFmZDhkMjQzMzZjYjVjMzdhZTVlIHJlbGVhc2UyNi1tYWludAorNzU4MzMgYWU5NGY2ODU1MzEwMGMwODZjNzcyYjQ0YjAzMmE0YWYwODQ3Nzc5ZCByZWxlYXNlMzEtbWFpbnQKKzc1ODM0IGI0MGZhODI2ZTFjZjBkOGMzYTdlN2U3YmJjNWYzNDcwYmQxZGU4NTggcHkzaworNzU4MzUgNTgwYWMxNTExNjUyM2MxZGRhYjEyNWQ5MmU5YjdmZjQwZDcwMzQxMyByZWxlYXNlMzEtbWFpbnQKKzc1ODM2IDhhNzc0YWZlOTkwMDkwYjk5YTkxNTE0NWJiM2Y0NzljZjg2NDA2NDQgcHkzaworNzU4MzcgYzdmZjJmY2QyYjZiZjBlN2U5NmY2NWI3NzQ2MTIwNTEwZWZjZTg5MyByZWxlYXNlMjYtbWFpbnQKKzc1ODM4IDI2OWYxZDljODZjZDIyNmEyODhmZDI3OTFhNGJlNjUxYTBlOGJlYjYgbGVnYWN5LXRydW5rCis3NTgzOSA4ZmI4ZmQzYjY3Y2Y2NDM4ODcxNmQ3NmQzZjJiOGE3MGUzNjFiZDQzIHB5M2sKKzc1ODQwIDkzNmFhYTEyNDkyYzcwNmIzMWYwY2ExMTQ3MDNkNWM2ZGNiOTVmYzkgcmVsZWFzZTI2LW1haW50Cis3NTg0MiBiMzFmY2JhYjA1MjBjNDgzYzUwYTU2ZDE1ZTU1ZWI2MzlmNWNiNzJiIGxlZ2FjeS10cnVuaworNzU4NDMgOTU1ZDhmYTEyYWQ1NGI1YWNiODYwMGFmMzAyMjM4YTQ4OWU3OGE5ZSBweTNrCis3NTg0NCA1YzU0MTRhOGM3YzI0NzE2OWJiZTU2NzRjMDI1YjY3NjhiNmQ5ZTIyIGxlZ2FjeS10cnVuaworNzU4NDUgZTFkNDEyNDg5MTA3YjUzMGE2NzU3YTY0YjU3MmI1NThiMDM5MTZjOSBweTNrCis3NTg0NiAxNDBkODhkMWIxNzk4ZmIyZjdjODVjMjRmYTM4MDg2OGNhMzE2NjFiIGxlZ2FjeS10cnVuaworNzU4NDcgZTI1OWIzNGEwYjg4MTQ0Mjc5Mzc3NzQwNjAxZTZhZWM5ODdjNDQxMyBweTNrCis3NTg0OCAxMWZjMTYwZDUzYzRkY2E1MWY1YjdhNTUyY2M5MWVkZjFlOTI1ODY1IHJlbGVhc2UyNi1tYWludAorNzU4NDkgNDNiZmY2OTAzYWE1YTM1NGJjMDc4NWI4MmM3NTJlNjUxMjc1Y2M2YSBsZWdhY3ktdHJ1bmsKKzc1ODUwIGQ3Y2MwZWIzZjIzNGY4NDBjNmYwOWY5MDRjYTgwOWRkZTQ4MjY0ZjYgcHkzaworNzU4NTEgNWY2MWJkM2FhNDI3YjIyZGM4OTA3MzZlNTM3MDI5MjI2MDA5YWU0ZiBsZWdhY3ktdHJ1bmsKKzc1ODUyIGU0YmZiZTliNzRjODkyOTJlNDg5ZWQzNDJlZTA1MjFlZTJjNTEyNTcgcHkzaworNzU4NTMgZDlkNjkwNjBmNWU0YmRjM2MxMWRlZmMwYTY2ZGRlNmNhMGRkODNlZCByZWxlYXNlMzEtbWFpbnQKKzc1ODU0IDFiZGE0NjAyZjkzOWEyZjNkMTIxN2M5NjdjNzlkNmIxMDQ0NmUyZTcgcmVsZWFzZTI2LW1haW50Cis3NTg1NSA1Yzg4Nzc5NDczYjkyOTYzODRkNDlkMWVjMzIwOWNhZmQwZWEzNTE4IGxlZ2FjeS10cnVuaworNzU4NTYgYWY3OGZkYTU3YWY4NjRmOWU4ZTVkMTZkMDI1OTg5MzAzNzlmMzcyZSBweTNrCis3NTg1NyAwMjFkM2EzOGJkMzZhNGEwNzg0MmE3YWE4MDRiZDA3YzI4NzcyYjE2IHJlbGVhc2UzMS1tYWludAorNzU4NTggMDI5ZDY5NjU5YjVmOTk1NDhmZjRlOGM3MmUwOWJhMjU4YmM5Yjc3YSByZWxlYXNlMzEtbWFpbnQKKzc1ODU5IGNlZjVjYjI3MGZkZjdjOTY2YzYyYTUxMjg1MmY3MzRmMDc5NzZhNGQgcmVsZWFzZTMxLW1haW50Cis3NTg2MCAwZGY0N2IxYjMwYjhhMDc5ODE5OTVjYmIzZDZjYjRkN2M3ZWNiNmZjIGxlZ2FjeS10cnVuaworNzU4NjEgODE0MWVjODFhZDJkMzg4OGYyMzk5YmJjNmU4YzA3YmNjYzhiNWE3MCBweTNrCis3NTg2MiA3MGViNmExM2FiY2Q2ODU2NjA1Y2ZiY2IyNjRhNmZhY2IzNDA1ZTZjIHJlbGVhc2UzMS1tYWludAorNzU4NjMgYjA4NWZkMDYxMWRlMGU4MWYxZTdkZTExY2M3NDRmNTM0YjRkZWFiYSByZWxlYXNlMzEtbWFpbnQKKzc1ODY0IDJmMWM1MmQ5ZmVlY2FkYTI0YjcyNWYzMmFiNDNmMTg0YjU4MzZiMzcgcmVsZWFzZTMxLW1haW50Cis3NTg2NiA5ODk5ZWNhOWM4NTdkOTFkNTJlYjcwM2Q0N2QyYjVjNDg4NmU1YjJkIGxlZ2FjeS10cnVuaworNzU4NjcgMTg1MjA0ZDU0MWZlNTZlMzE2OGU1MWMxMmFhYzA4NmFhMDY5NTk4MyBsZWdhY3ktdHJ1bmsKKzc1ODY4IDQxMWI2YWNiY2YxMmU3NjI3Mjg5NTNhMDRkNWFhMzUxNzkwMWNhYzYgbGVnYWN5LXRydW5rCis3NTg2OSBiNGJhZWMxZTZhMGMzMzhhZmUxZGE0YzkwMzM0ZmMyMzg3NDY2NzBlIHB5M2sKKzc1ODcwIGY1YzcyYWNhNmI2MGEzYjA1NmQyMTFhMjBjZTE4NjlmMjliOGM1OWYgcHkzaworNzU4NzEgM2FlNGQzNjY3OTIwZmMzNGFhZjM5NTZhMTEyZWRlMzk2OWU2Nzk0ZSBsZWdhY3ktdHJ1bmsKKzc1ODcyIGZiMWJmYTljYWJmMzNiYzZlNDg0Y2Q2NTNjMWEwN2VkZjQzOTFhODAgcmVsZWFzZTI2LW1haW50Cis3NTg3MyA0NWEyN2Y5NjFhYTFkZjRlOTdlNzZjM2JjNjAwNDFmNDBkMjQ3ODk1IHB5M2sKKzc1ODc0IDIwNGYzM2Q0Mjc2MmIyNDEzNThiMjE2ZTY5ZjNkYTU0ZGZkYmE4MzMgbGVnYWN5LXRydW5rCis3NTg3NSAzOTU5ZmExMDk3MThlYzM3ZjBmMTAzNDNlM2E4MWY3M2ZkOGYzMWU0IHJlbGVhc2UzMS1tYWludAorNzU4NzYgYzkyNjhmZWE4MTA0OTEyN2VjNTM2MTQzZDlmMTY3NjBhZjZiM2IzOCBweTNrCis3NTg3NyBiZWMyNjZmNmQ1MDgxZTI1OTVjY2FlZjlhMGE1Y2VhYjliNjM2YmI1IHB5M2sKKzc1ODc4IGI2Y2MwMTM0YWYzMTQwZTExNmRiMTUwNDM2YzNiM2MyMzAzZjUzNTcgcmVsZWFzZTMxLW1haW50Cis3NTg3OSAyMWEzZjgzZDk5YWJmN2Q3YTllYTYxZTEyN2UwYmRkY2VkZDAyYTVhIGxlZ2FjeS10cnVuaworNzU4ODAgMTI4ZGFmNjY5OWNjYTI4ZDMzMzdlZmI0ZDg1YzU2ZTM2NDk2NDg1ZSByZWxlYXNlMjYtbWFpbnQKKzc1ODgxIDM5MjdlMGUxMzgyNDEyNmU3MzEyNDNlZGY3N2RjYzNlYzNhZmY3YmEgcHkzaworNzU4ODIgMTU4YjIxMWU2ZmE4YzFjODhiNmYxMjY0MjY0ODFjODJmMWZlOTQwNyByZWxlYXNlMzEtbWFpbnQKKzc1ODgzIGYxMDEwNDA1MTMzOWI4YWI2NzcxNWM0ZjUxYmZmODY0MTAzZmE5YTggbGVnYWN5LXRydW5rCis3NTg4NCA0NGY2NDQ3MmU5MjIxYjdlYzM5NmEzOTliZTZmNTE1OGNlMGExMjA0IHJlbGVhc2UyNi1tYWludAorNzU4ODUgMTI0Mzg5ZjRlYmFkYzM5YzU4YzQwMWUyOGU1NjE4YzRjMGUyNjg0ZCBweTNrCis3NTg4NiA2OTBjNTY1YzE1YTllMWZmMjJjZjFmODcyYTI3OWVkOWEyZTY3ZTQwIHJlbGVhc2UzMS1tYWludAorNzU4ODcgNjk0OWNlNzhjMDY1NTgxZTgzY2MwYTcyNTY5YTlkNjJlYTdlNWQ0YiBsZWdhY3ktdHJ1bmsKKzc1ODg4IDdlNjZmZmRiY2JlZmZiZjZhNDJmZTg5OWE1ZGRmYmY2OTU4OWE2YjAgcmVsZWFzZTI2LW1haW50Cis3NTg4OSBkMGQ3ZTE1YjQ5NTM1YTAwOTBjZGZkZTY2NmEzMDYwYWVlZmQyYzZkIHB5M2sKKzc1ODkwIDVlNGQxYjRmNjJmYTFkMDg3ODVmYmI4ZDFiNTgwODRkZTc5ZmY5NzkgcHkzaworNzU4OTEgYWQ2MTEyOWM0NDIyMjU2OTJkYzI1MGI0ZGJhNjZkOWRmNjMwM2FkMSByZWxlYXNlMzEtbWFpbnQKKzc1ODkyIGUxZGNhOTcyZmEzNWQzMWE1NDZjYjcwOGY2NjdhOGRhZjdhNmMyM2MgcmVsZWFzZTMxLW1haW50Cis3NTg5MyBmYzVhNzcxODQzM2E4NTQ0ZjFlZTUzMzA2OTM1MDg0NWFkNzljNTJkIGxlZ2FjeS10cnVuaworNzU4OTQgNjRhZDM2NTA3OTQ0NjZlODRjY2M1MjJiM2RjOTAxNjgyYmRlM2VlYyByZWxlYXNlMjYtbWFpbnQKKzc1ODk1IDE3Nzc5YTk0ZTgyNTA4NmI2NjMxY2ZlYjdmMzAzZGZhOTdjZmY2YTMgcHkzaworNzU4OTYgMGYyOWFhMmQ0ODQ0ZjcxNzQ3OWZiOTgyYjA0MWU5YjViNTJjMjM0NiByZWxlYXNlMzEtbWFpbnQKKzc1ODk3IDcxNTc0ZmU0OTU3NjdiMTE4NzQxN2Y3MDZjNjZjN2YyNzExNDlkMjIgcmVsZWFzZTI2LW1haW50Cis3NTg5OCAwM2Q3NmJkZjkzNjJhYTU0MmYzOWQwMDU4NmJkYTEzZDcwNzc4MTYzIHJlbGVhc2UyNi1tYWludAorNzU4OTkgOWUyNGZkNmE1NWYwOGVhNTcyNzFiM2EwNWI2NDZlYjViODM0NDRjZSByZWxlYXNlMjYtbWFpbnQKKzc1OTAwIDA0NGE2OGJjMGQyZWZiOTYyM2UyNmIzNjBiN2NmZWRjMTJlOWUxOGMgcmVsZWFzZTI2LW1haW50Cis3NTkwMSBjMTgyMjQ5ODhiYjFjODZmODQ0NWY3YzA3YjI4NmMyZmRkZjE1NmY1IGxlZ2FjeS10cnVuaworNzU5MDIgY2Q5ZjcyZmJhNTNiMDMxNTAzNTc0Mjc5MDY4MWZhYmZhNjMyZmU4ZCByZWxlYXNlMjYtbWFpbnQKKzc1OTAzIGVmNmFiNWQwYTAwNmE5YmMxZGNkMDMyNGZhNzk5ZTczOGM4YTBkZmIgcHkzaworNzU5MDQgNTJiMjdjMDgxNjg2OGE4MDU1ZjYyNTJkZjM1ZDE2MzU2NWQ3NTlkMyByZWxlYXNlMzEtbWFpbnQKKzc1OTA1IGFhZmE2NmM1NzQ0NGUzYjI1Y2FmZWQwMWJiMGY3YWE5YzliODNiN2UgbGVnYWN5LXRydW5rCis3NTkwNiAxZTllZWM3MzQ0N2YyOGEwZDBlYjZlMWEzMTQwNjQzZmU0YjEyYThhIHJlbGVhc2UyNi1tYWludAorNzU5MDcgOTBjNzE0NmRkZjQyMTlmOTQzMzQzZDExMjAxMjBjODFmMWFlMjBlNyBweTNrCis3NTkwOCA3NmQwNDIxNDM4YWMzNmY0YTVjMzlhZmQyZTY4ZDNjYTkyMTVhZjdkIHJlbGVhc2UzMS1tYWludAorNzU5MDkgZTdjZTI1MWIzYmZiNmQ0ZDE2NWIyNjBlYTE2ZGMwZmUzMjAxYTRkNSBsZWdhY3ktdHJ1bmsKKzc1OTEwIGU3NTBiOTBiZDk4MmIzMzUyYWM4ODdjNzQ4NzIwZDk2YWM3MzFhYmQgcmVsZWFzZTI2LW1haW50Cis3NTkxMSA0NGRlM2E0MDI0MDE0NTk4ZTRmNGEwYmQ1YmI5MjY0YTE3MmRhNDIzIHB5M2sKKzc1OTEyIGExZGVjNTdiZWE1ZGMyNjA1MTdmNjNiN2U5YjVkNzdmMmM2MGE3YjkgcmVsZWFzZTMxLW1haW50Cis3NTkxMyAyYTk2MWQ3ZjIwMjhiYjM1MTgzZmQ2NmI0NTI0YTJkNDQ1YjViN2QxIGxlZ2FjeS10cnVuaworNzU5MTQgODRiOGEyYjhlOWFlNTFlMDA5NjJlY2ZjZDMyOTVjMzVhMDA1MDVhYiBweTNrCis3NTkxNSBiNmJlMzAwMmQzY2EyZWM3ZDRmMjE2NDc2ZmI3Zjc1MmRmNWExMmFjIHJlbGVhc2UyNi1tYWludAorNzU5MjAgMjE0N2MyZWJjZWQ4NTkzZDY2YmU4ZGRjZDU3Y2JjZGM5ZGE5OTZiZSBsZWdhY3ktdHJ1bmsKKzc1OTIxIDIwZTIxYzE1NWMwNTYyZjY0ZmE3M2FkMzIzNzM3MGI5N2YwYzBkMjEgcmVsZWFzZTI2LW1haW50Cis3NTkyMiAwNjY2ODVmNjk4M2FkNDBlZGIyYWFhNTFlMzM2ZDM0MTY0ZGJiOTcwIHB5M2sKKzc1OTIzIGE3OTU1MjliMDljOTY2YTI3ZWZhNDFmMjc2MTgyYTQ5ZDM0MWUzM2YgcmVsZWFzZTMxLW1haW50Cis3NTkyNyA5ZTgyZjE3YjJjOGRhMjMwM2Y5ZGNjMTRkMzVkZjNiNmM1ZTdhZGJlIHJlbGVhc2UzMS1tYWludAorNzU5MjggZGI0ZGZkYzc0MDI5YWQ5ODQ2NTJjMTM1MjA2MWYxZDAyMGU3ZGVkNiBweTNrCis3NTkyOSA4NDAyZTQ3N2ViNDg3ZGQ0ZDAyOTEzOWM5OTIyYzZmMWUwZTIxYjQwIGxlZ2FjeS10cnVuaworNzU5MjkgZTM1OGFmMjU2OWI5OGMxM2E0Nzg4NjYwZGNiZTdhZjU3YjJhNTE4NiByZWxlYXNlMjYtbWFpbnQKKzc1OTI5IDQ0ODkwOWE5NDBjMDRkYTAzYjM5ZjU4ZDNlYWY3NDkyMzM2ZmNiODMgcHkzaworNzU5MzAgZjMyZGM4NGE4NzZjYzU5OTFiNjdmOWI4ZTc4ZGY2Y2E5NDAxOTExZiByZWxlYXNlMzEtbWFpbnQKKzc1OTMxIDg0NDE4MGI3ZTZmZjBlMGZhODcyNTJiNDNmMjQzMzdmODk0MGZkYzIgbGVnYWN5LXRydW5rCis3NTkzMiBjNzE1ZjgyNTU1YTRjOTM0OTZlYTgyYjk0YzFiN2ZjODFkYjE3ZTg4IHB5M2sKKzc1OTMzIGU4MDk5ODI2MjljNGQ4M2RmNzIwN2I2NmNhNjY5OTBjNzhjMjc1YzUgcmVsZWFzZTI2LW1haW50Cis3NTkzNCAwMzJkOTc0OTA0N2Q3ZTEzZGU2MzUyYWM2MDk0NGU2Y2I1ZGVlYzg5IHJlbGVhc2UyNi1tYWludAorNzU5MzUgYjU3MWM2Njg1MjI5ZjNjMDgxODM0OWFlZmI2NDhjYTA4MDY0MmRlZCBsZWdhY3ktdHJ1bmsKKzc1OTM2IDNjZmVjYmM3YWU5NWE3ZjYyOTgwOTJjZDI4NzBkMjdmZjI0OTkxY2MgcmVsZWFzZTI2LW1haW50Cis3NTkzNyA4Y2ZmOTQ5MzIzYzllNjZiYzE4ZGNlOTI0ZTQ5YzRiZGE3NzFmOTkzIHB5M2sKKzc1OTM4IGIwMDlhMzg3Njk5YjMyZDFjNDRhY2EyY2I5MmRlZmFhMWRlNGM4NGQgcmVsZWFzZTMxLW1haW50Cis3NTkzOSA1NWU1MDhlMjUzNWM5YTMzNDgyOGYyMDQ1NDZhZmU5M2YxNzUzMGIyIGxlZ2FjeS10cnVuaworNzU5NDAgZmZjN2Q5ZWEyNGQ5MDIyZmY2ZTc2ZGJhY2M3MGMyMjYzN2Q3MmVlNCByZWxlYXNlMjYtbWFpbnQKKzc1OTQxIGFhYTJiMDdjMmM0MjU4YjQxNDcwZDUzZmM4Njg1MzQ0ZWNiOTZkMWUgcHkzaworNzU5NDIgMDVmZDQ4ZGMyYWRhOWJmMGJmMTk1MTYzOTNlMTI0MWY5NjBhYjAwMiByZWxlYXNlMzEtbWFpbnQKKzc1OTQzIDE1ZjE4NzI0MDdiZTI2NDZhMTAxZmRiNGQ0YzE0Yjk3NDZmNjJjNDIgbGVnYWN5LXRydW5rCis3NTk0NCA2M2ViMjg4MzkyNmIyZDViODAyNGI1MjA0NjEyZGEzZjBkZmM1NmVhIGxlZ2FjeS10cnVuaworNzU5NDUgZDVhMzRlZjJmY2E3YzMyMTE3NGNjMGEzNGI5NGQ2OTI4YzYwMWIyZiBsZWdhY3ktdHJ1bmsKKzc1OTQ2IDUzZTM4MDA1ZDUwN2M0YmE3ZWI2Y2NmZjM5ZmJkZmQxMTQ4YmEyZTMgcmVsZWFzZTI2LW1haW50Cis3NTk0NyBlYmRkY2VkMmM5YzRkNDg0NWQwOTAwNjE2NWViZGViODU5NmQ2NjkzIHB5M2sKKzc1OTQ4IDBlZDRiZjQzMGQ0ZTVlZTBhN2I4YWJiMWJjNTE4ZWZmODFiMGI5ZDcgcmVsZWFzZTMxLW1haW50Cis3NTk1MiBjNmQ2MjM0MGFlYmYwYzMxOTBmNTk2MzIzZDRkMDIzM2UyZGVmYmI1IGxlZ2FjeS10cnVuaworNzU5NTMgZTY2NWQyMTcwZTg1MmIxOWQ2MDliMjJmZWE5NDMwMmU2M2ZkYTYyYSBsZWdhY3ktdHJ1bmsKKzc1OTU0IDVmNWUzYzdkYThjYjQ1ZmU3NGExY2MxMzdkNGQxNzlmNDc2YjQzN2YgbGVnYWN5LXRydW5rCis3NTk1NSA3ZTAyMzcxYWE1MDYwMmYwOTgxNTRjYTU5ODM1YzA2NzliOTg2NTk1IGxlZ2FjeS10cnVuaworNzU5NTYgNDExZjI1MmEyOTRhNGZlMjE4NjYxNmM3YjI0N2Y3YzMzYzgwMDNiNCBsZWdhY3ktdHJ1bmsKKzc1OTU3IDlkZGJkNjk4MTVjYTdhMDk2Yzc0MWY4NjVkYzc0NDQ5ZmQ3MWMyODEgbGVnYWN5LXRydW5rCis3NTk1OCAyOWZlNWU3YmQ2ZWUxOTAwYTg1MzEwMWJmYzJhMmUxMGU1MWYyMzNkIGxlZ2FjeS10cnVuaworNzU5NTkgNmNmODRlNWE2ZGQ3ZTU1NTg4ZjUzZDdjNjcyOGE0YzUxNmUzMjQzZCBweTNrCis3NTk2MCBlMTFkMjQ2N2QxMjY3OTdiOWYzZGVhNzhlMjQxODBmYjkyMDEwYTU0IGxlZ2FjeS10cnVuaworNzU5NjEgNzEzZTIxYTU0NzFlZDc2MzY0MmM4NTYwZmJkYTM5OGQ1MGNjNDBkNiBweTNrCis3NTk2MiBhY2FmYTUxNDJiZjkxOGY0NjBmNzFhNzdiODY5YWQwMmRlYTFiZWMwIGxlZ2FjeS10cnVuaworNzU5NjMgYzE0NjkyNTIzNGYwM2FjMDljNGYwZWI1MTMzNWJmNmEwN2I0MDE0OCBsZWdhY3ktdHJ1bmsKKzc1OTY0IGExODNjODJiNjI4OTQ3Y2ZlMzk4N2ZkYzU5NDU5ZTZjMDMwMDQ2OGUgcHkzaworNzU5NjUgZTg3YTY2OThhMzA1YTY0NTAxMjc2NzA5YTZjZjllNDI0ZDJhOGEwNiBweTNrCis3NTk2NiBmZDIxOGFiMGUyMmVmZTUzYjgzMTRkY2JhOWE4YzNhMmJmOWRkN2M3IHB5M2sKKzc1OTY3IDMzODYxY2ExZmIyYjExODE2MDIzY2QzZDczYTk5YTNlNTM3ZjVhNDMgbGVnYWN5LXRydW5rCis3NTk2OCAwNTY0NzA0NjhmZTI5ZTE4ZWYxZTJhNDczZjRhMjI0OWUwYmU5NWYzIHB5M2sKKzc1OTY5IGQ1NmIxMDM0OTBhNTViMDAzYmNhZDY2MmY0ODdkNzk0MDE3OGJkOTkgbGVnYWN5LXRydW5rCis3NTk3MCBiZjkzZTRkZjdiZmIxZTYzMjQ5MjU4MzY0ZmEyODBhZTcxYWJlZWRlIHB5M2sKKzc1OTcxIDhkMzZkZWIzNTZmMTlmNGI4YzgwM2VmOTAzYTllOTcxZTllNDJkMWQgbGVnYWN5LXRydW5rCis3NTk3NCA3Yzg2OTkzYjEzYzlmZDc0ZDQyMWE3NGNiODMzNDgzZmYyNTYxODhkIGxlZ2FjeS10cnVuaworNzU5NzUgYjRlOTMzOWI0OTlkNTUyNWFjNWVkNTQwOTlmZmY5ZTI0MDdhZGQ4NyByZWxlYXNlMjYtbWFpbnQKKzc1OTc2IGZjZjhhNDg2NzkyMDYzZGU2NWIwMmExNDdjMzljNTA2NWRkZWIzZjMgcHkzaworNzU5NzcgNmNiNTMyNDhlNWJlNGIwNmIzNWJmZDFkMzNkZWE5ZjU0MjkyNGRhYiBweTNrCis3NTk3OCA2YTZmMzJiMGZhYmQwZDhlZDMzZmNjMTUzN2Y2NWY0YTBjNDZjMjVjIHJlbGVhc2UzMS1tYWludAorNzU5NzkgYmFiM2UzY2Q3NmYxZDUyNDUxMTZlMjdjYzA3OTFlNzVmMmRjOTIxZCBsZWdhY3ktdHJ1bmsKKzc1OTgwIDE3ZGMwYjUzYjQ4ZWRiMWFlMWMwODk4ZTUxZGRiNDFiYWExYWFhNmQgcmVsZWFzZTI2LW1haW50Cis3NTk4MSAxODJmZTBhZjYwNGUzNWFmNmIxYjYyMzNkNzc2M2JmYWQ2MGFmMTNmIHB5M2sKKzc1OTgyIGY1OTQzMTNiOTM2NDVhYjI0ZjgxMmYwNzc5N2U5NGRhM2I5ZWE5MzMgbGVnYWN5LXRydW5rCis3NTk4MyBmYjQ5OGEwZGUwYjk1YWI2MWFmM2RjMTIxOTBjMTRmN2Y5YzYwYTM0IHJlbGVhc2UyNi1tYWludAorNzU5ODQgNWE5OTAwM2M5YjgzZDg0MmYxYjk5NTlmMzMyNjhiZmM2ZWE4MGE2OCBweTNrCis3NTk4NSAyNjRhNzM1YThhZjc3Njc5N2RjYmQxYjA3ZmE3MjRjZmQ1NTljOThhIHJlbGVhc2UzMS1tYWludAorNzU5ODYgZTliODc3NTZhZDNiM2MyOWU4OWIyYzkyOTNkMjk2YjRjMDZkNGYzMCBsZWdhY3ktdHJ1bmsKKzc1OTg3IDdlY2QzZTNjOTU2NDI3MTBkOTAxZjI1ODZlNzA4ZDMxMWVhNTkxYWYgcmVsZWFzZTI2LW1haW50Cis3NTk4OCA4ZDY3NzI1Y2JiNGUzNWQ4ZDg1MGEzNGE0NTU4Yjk1Yzg1OTY0NWMxIHB5M2sKKzc1OTg5IDcwNDliMmM4NmYwNjEwZDExNDlhZTMzOWIyMTY1YzliN2Q2NWVmOTYgcmVsZWFzZTMxLW1haW50Cis3NTk5MSA0Y2JjM2ZlOTM2NzFkOTE1YjA2OTljNWRlNzMxYjc0ZjcyMTA5MTc5IGxlZ2FjeS10cnVuaworNzU5OTIgODllOWQwNTg0ODkwM2U1NmIzYzE1MzkxOTYwYzU4OTAwZWMyZWYyNSBweTNrCis3NTk5MyBhYjM4NjkwZmUwMWNmOTM1YmFmYmQyMTMxOGQ0YjRmNGFmMjJiZjhlIHJlbGVhc2UyNi1tYWludAorNzU5OTUgNzFiM2FhOGE3MzIwZmU0MGNjMjBkOGI3NDA3MGEzZWFjZWQyYmI4NCBsZWdhY3ktdHJ1bmsKKzc1OTk2IDM3MjQ2YjRjM2NjZTM5ZWU1ODIxZGFmNzAxYWU0ZmYyYjY1ZGMwOTAgcmVsZWFzZTI2LW1haW50Cis3NTk5NyAxODJjZDA0ZTI5ZGIxMTg3ZDk2Njc5OTJhNThkNzc4MTA2YzUzZWRiIHB5M2sKKzc1OTk4IDQ3MTc4MDRiYjU3ZGM3NTBiZDU3MGNlMzYxYzU1ZjI5ZGQwOTdkOGUgcmVsZWFzZTMxLW1haW50Cis3NTk5OSA5ZjNmODNkZjY5NzViZTZmMGNjYjA5YTc1NGNiOTA4MDJkY2E5YWM4IGxlZ2FjeS10cnVuaworNzYwMDAgODQ2ZjI2YWQ1ODAwMDIzYjZkZWE3NjZiYzdiY2FlZmM4YjZiZTM0ZiBsZWdhY3ktdHJ1bmsKKzc2MDAxIDI5MTM4NjRkZGJlOTU4OWVhMjk2Y2QzYTBkOWEyNDNlMzE4N2UxN2EgbGVnYWN5LXRydW5rCis3NjAwMiA0MmJiM2UzNjEzZjZjOTBhMWI1NzY1Y2FlZWIwYzFkOWY2MmJlY2JiIHB5M2sKKzc2MDAzIGY4M2I0ODk2MjczOTkzYWI3ZjExNGFmMDhmY2U3ZWVkNTA5Y2UxZGEgbGVnYWN5LXRydW5rCis3NjAwNCAwMmY1YzYwMDgzMjdhZmU1NTU2NTY4MzAxYTliNThlN2Y5ZDg1OGJkIHJlbGVhc2UyNi1tYWludAorNzYwMDcgMjExZTdiNWI5OTljMWEzZDkxZDYzOWEwNTdiNWJjMzk4NzY3ZWI2ZSBsZWdhY3ktdHJ1bmsKKzc2MDA4IDcwMDAyZjI3ZDI4MWVmNmJlZGU4MWQ2YjA0NWY2N2RlOGY4Y2U0NjIgcHkzaworNzYwMTAgNDAyNjk2YWM0Zjk4MmNmYjI3ZWJiOGZmZDQ1ZjUwMjkzYWE2N2U2MCBweTNrCis3NjAxMSBiMGU0ZWZiODNkNjBjNzdmMjk5ODQwMThiODYzYTdmYWUyMmM3ODllIHJlbGVhc2UzMS1tYWludAorNzYwMTIgZmY4ZTM1OWUyODA4NDMyNThkM2IyZWFjYWFkMjk0NmJlZDRjNzc4MyBsZWdhY3ktdHJ1bmsKKzc2MDEzIDZiNGM3MzIwYmEzYTE3ZjI0MjJiZGRjNDM2NjI0MDllZTM5MGY2NTAgcHkzaworNzYwMTQgYjY5MDE3NzYyMjA4YWFhNmYyZTg5M2NjZDg5NTAxODE2NWU5NTEwOSByZWxlYXNlMjYtbWFpbnQKKzc2MDE1IDU5MjU5MDBlZGYxNmYwYzk0YjViYzE4OWFkMWFhYzhjM2U3MDhjODEgcmVsZWFzZTI2LW1haW50Cis3NjAxNiA3NTdiOTdjNjE2OTFlMjkyMzA5NjVmNTdiOWNhMmMzOGE5ZmY0OTk5IGxlZ2FjeS10cnVuaworNzYwMTcgNWI5NWU0ZWFjN2E4Yjk4YTlhNjhiMTNhZmU5NmVjY2U2OWQ5OGM1MCBweTNrCis3NjAxOCBlZDE2NmZmN2Q5NTIzODFjNDVkZjIxZDBjMzUxOTFjMzMwYjM4NWViIHJlbGVhc2UyNi1tYWludAorNzYwMTkgMTBmZTIwZmQ2ZmIzZDhjOGFkYTdmZmY2MmYyMDY2OWI4MGRmMjNjMiByZWxlYXNlMzEtbWFpbnQKKzc2MDIwIDRkYjg0MDQ1YTdmMDA3MWEwYTgyYTBmMWY0ODA4Mzk0NzM0YjVjZGYgcHkzaworNzYwMjEgZGE2YWQ5OGQ1ZGFlZjMwOGEzZTQwYWVjYjVkOTU0YWUxOWUxODcyNSByZWxlYXNlMjYtbWFpbnQKKzc2MDIyIGM3OGEwMGExZDZkYjE4MzBhMTg1NzRjZjE4N2IxZjhiODI4YjUxNWMgcmVsZWFzZTI2LW1haW50Cis3NjAyMyA5M2M3ZjY1MDkzN2Y3ZTk1NzhhNjE0YzdhYWNmN2NhNTRiNThhNWZmIHJlbGVhc2UyNi1tYWludAorNzYwMjQgOTAxMjU5YmMwYjYyZWEwMTlmZmE2YTUwOTBiNjQ2ZDA3YmNkYjMzZSByZWxlYXNlMzEtbWFpbnQKKzc2MDI1IGI3ZTc2Mjc3ZjU0NTI2N2FmODBkYjBkOWY1N2Q5YWIzYWUzYmEyMTcgbGVnYWN5LXRydW5rCis3NjAyNiAxYWE2YjY4ZTg1MjMwNDE3YzNhNzljMmYwM2E0NGNkZjE1MzkwNDlkIHB5M2sKKzc2MDI3IDY1OGViNThkMmU2OGI3NTQwODM1NDMyZjY2MzQ2Njg5ZDkxZTUwYWQgcmVsZWFzZTMxLW1haW50Cis3NjAyOCBjNzg1YWZhNmY5NWM1NjQ5ZDBmNjUzYTVkOGU0NzhiY2Q1ODJkOWY5IGxlZ2FjeS10cnVuaworNzYwMjkgMzAzOWE0YWQ3ZTM5YTExYWNiNzZkZjhjYTE1ZmZhMDgzNDg5ZmQ2ZCBsZWdhY3ktdHJ1bmsKKzc2MDMwIGRkYzE0MWQ5ZWYxYjFiZjMxYjg1MjFlYmNjMmZlNDNkOTBmMDdiNzMgcHkzaworNzYwMzEgMzg3MTliOGUwYzlmNzBlMmYyOTEyZWZlNGNmNzQyMmE4N2VmMjBkNiBweTNrCis3NjAzMiAzOGViNmE4YWRjMjQyYjAyNDRiMGEyMWZmYmE5NGE0ZmYyODc3MzQ0IHB5M2sKKzc2MDMzIDhjYTRkNzc2ODBjNmQyNDIxNDY5OTU3ZmZjMjE5ZDRjMDFiMTU2NGMgbGVnYWN5LXRydW5rCis3NjAzNCA1MWI5OTczZjc2MWVjNDAwYzc0NmRlYTMzZjZmNWI5MmU1Mzc4ZDM3IGxlZ2FjeS10cnVuaworNzYwMzUgNTc1NDJiNTAyZDMyMjNhNmI1MWUyODM5MzFhMzg5Y2JmNzMxYTY5ZSByZWxlYXNlMjYtbWFpbnQKKzc2MDM2IDNiZjc2MWRmODAyYWFkZGFiOTBiMmViMDE3MGNkMzA4ZWUyMmIxYmYgcHkzaworNzYwMzcgYTAxZTZjZWYxMjU2YzkxMzljOTYzMTc2ZjAxMmEwOGUyMzg3M2U4MyBsZWdhY3ktdHJ1bmsKKzc2MDM4IDM0NGM0N2RmMzYzZjhiOWMyOGEwNjAyOTI1NTk2MzMyYTM2YmQ2NGQgcmVsZWFzZTI2LW1haW50Cis3NjAzOSA0NTgwZmUwNzE5ZTcwMmQyMTYxM2U0MTZmNGQ2YTViNTA1MTdiNGYxIHJlbGVhc2UzMS1tYWludAorNzYwNDAgZmQwNTQyNzE2YTgwNTUxZmEyZDg5MDVmMzQyMzliMjliZmNmMGU5OCBweTNrCis3NjA0MSBiNTkxZmM4NzIxZjJmZGM1MDU4NjYxYzk5ZjM2NmU1Mzk0NTMyNTkzIHJlbGVhc2UzMS1tYWludAorNzYwNDIgNmRjNGZhYTQ1Y2JkMDg5MDEwZGY1YTljYzMwYzkxNmIwN2Y4M2Q2NSBsZWdhY3ktdHJ1bmsKKzc2MDQzIDI4ZmVmNzI2NDRiN2M2NDQ0Y2U1YjI5ZGI4YTBiMzVjMGVmY2RiNjYgcHkzaworNzYwNDQgNGE4NDU5ZTMyOTE5MjMyYmVlY2Y1MzAzYmYyYzM2MjVhYzdkNzI0MCByZWxlYXNlMjYtbWFpbnQKKzc2MDQ1IDZlNDg5ZDNkNzNiODgwNDkxNTM3YWVhZjRhZWZhZWZhNjJlODE2MDMgcmVsZWFzZTMxLW1haW50Cis3NjA0NiAxZTFiZTFhMzlhNzkyZWY3NjBkNjkyNGJjMDFlNjNjN2NjYjA5Y2YxIHJlbGVhc2UyNi1tYWludAorNzYwNDcgZjAxMzAyZTZhY2Q1NDQ2MTM1NTY5Yjc1MzQyOTVjZDM0ODQxN2Q5OCBsZWdhY3ktdHJ1bmsKKzc2MDQ4IDVkNmVkMDg4M2JmNTc5YzNmODUzZjEyNGE2NDE0OGJmMzNlNjM4NzMgcHkzaworNzYwNDkgYTVlNDczZTk1YmNlYWQ1YzVkYjNkNzZmZmRlMWM1MmEyNDU0NGJiYSByZWxlYXNlMjYtbWFpbnQKKzc2MDUwIDQ1M2Y1NDc4YTY5MWRkMWRmOWQ1YjRmMGYwZWFlMTg5ZGU2ZTMxMTMgbGVnYWN5LXRydW5rCis3NjA1MSBiOTE5MzcwZjE4MjBmZGJhMTU1OGI5YTczOWVjY2NiNzZjMmViNmVhIGxlZ2FjeS10cnVuaworNzYwNTIgNjk4ZGU1MDE3OTlkOTkzNWFjMmQ2ODZiNjMwODA5NzdjODZkMGMwYiBsZWdhY3ktdHJ1bmsKKzc2MDUzIGQyZDhjYWJiOWUzYTkyM2FiMTAzN2IwZGU4Y2NmNmI5ZWQ0N2M2MzAgbGVnYWN5LXRydW5rCis3NjA1NCA5NmE4NTNmYWU4M2IyMzc0YzgwYjllMDQ0MmFlMzE1OTIzZjcwOWRlIGxlZ2FjeS10cnVuaworNzYwNTUgMTQwMmM3NTI3NTY1NWZkYTNhMThmOTYyNjYzNGU2NDJlZGM1ZWIwYyBweTNrCis3NjA1NiA4YTBkM2M2OWFlMjFhZGJkYTRjMDg2YmM4NTQ1NjYyYjk1NGM1NTg5IHJlbGVhc2UzMS1tYWludAorNzYwNTcgODhhMzY0NmVmMzJjMmE3ODJiYjQxOWJjMWZjNDZhOGY4Njg0Nzg1YyBsZWdhY3ktdHJ1bmsKKzc2MDU4IGU2MDhmNThkNWQxOGI2MWQ0MmQ0MDU1NDI2YjZlMzE2M2IyN2I2OTUgbGVnYWN5LXRydW5rCis3NjA2MiA5NGUxYjE0ZWM4MDRiOGFjOTI5MGIyMDUyODY1ODM3NGRmZmNjNTMwIGxlZ2FjeS10cnVuaworNzYwNjMgOTU5YzY4ZDFkMjhhMGEwYzcyZWZhMGVkYmQ3NzViYmVhMDJmNzZlMiBweTNrCis3NjA2NCAzY2ZkNjk1NjRlOGYwNzZmZDZiZDg1OTRhN2IxZWQwODAyYjJiOTQ1IGxlZ2FjeS10cnVuaworNzYwNjYgZjI5NjBmMTE2ZTc3YTJlYmFkNTEwMzdlMjJhMDliN2E3YTMwYzJhMCBsZWdhY3ktdHJ1bmsKKzc2MDY3IGJlZTg5OTRiMTNkZWRiODE3MDM5OWJjYjI0YTA2ODYwMDU0OWI4NjggbGVnYWN5LXRydW5rCis3NjA2OCBhM2YyMWNlZTY0ZDFmMTI4YTYzNWJkMWMyYzRkNjI3YjMwZTUwMWU4IHB5M2sKKzc2MDY5IGE4MDg2YjMxNGNkMDdlNmMzZWI5MjA5YjJkMzVmMWYzYzRlNDc4M2YgcmVsZWFzZTMxLW1haW50Cis3NjA3MSAyMDFhNDE5ZTllMDY2MGJlNDQ4YmYxMjY3YzliYzhkMWUxN2E3NTEwIGxlZ2FjeS10cnVuaworNzYwNzIgNjViMTEyMWEyNDczZmQyMWU2MmU5YjRiYzliMTNjMTYyNjRjY2EwYSBweTNrCis3NjA3MyA2YzEzYmYzNWQxNjYxMTc0YWJlZWU4ZWYwY2FiMDE1YjE4NjkyMGM5IHJlbGVhc2UyNi1tYWludAorNzYwNzQgMzIwMWZhYjM1MjIwZjc4NTI5OWRkODI4ZTU2MTQ4OGI0NjcyOWNjNyByZWxlYXNlMjYtbWFpbnQKKzc2MDc1IGM5MDA4YTNlN2Y3ZmQyMzQ4Yjk1YTQ4YTQyYTY1Yzk1YjBiZjc1MzEgbGVnYWN5LXRydW5rCis3NjA3NiA2ODVhMjRhNmY5ODY4NDdmMjQyMGNhMTU2NjIyNDBmMjcyMzM0YjMxIHB5M2sKKzc2MDc3IDMyYzdkOTgxMDNiYWVjMWEzNzFjZmNlMjE5ODZmNzQ3YjQwM2FiZDggcmVsZWFzZTI2LW1haW50Cis3NjA3OCBiNDExY2U1ODRiN2ZmMDQxYTlhM2RmYTZlMzU5MTgxNTMwZTE2ZmMxIHJlbGVhc2UzMS1tYWludAorNzYwODAgNjJkY2Q5ZmRkN2IzNGVlNjcyYTcyMTg2NGJjNjA2ZTI0NjkzOTAzYyByZWxlYXNlMjYtbWFpbnQKKzc2MDgxIGJiMzdjN2MyNmZhNDg2NTE1MjcwZmMwNGFkNWRjMDVjZjMzMDNlNmEgcmVsZWFzZTI2LW1haW50Cis3NjA4MiAxOWE1NzNjNDRhZTExYzJiYzJkYTUxM2IzMDRjMjdiODFkOWMzY2I3IGxlZ2FjeS10cnVuaworNzYwODMgOTJjYzdlZDgzZTljMDFhMTgzZTg0YmYzNTNhYTY1YjI3NjBiOWM3MiByZWxlYXNlMjYtbWFpbnQKKzc2MDg0IDdmZDkwZTVhMGFkNWY5YjMzMjA0NWQzMGRiNTFiZmVjYTZlYjQxZjkgcHkzaworNzYwODUgZmU4MDhkNjY0ODNkN2I1ZTlkZGNiMDY2ZThjMWVhZDgzZjQ5MDg1ZSByZWxlYXNlMzEtbWFpbnQKKzc2MDg2IDhjODA3YjNhOTA1MjMyMjcwNTcyYzViMWY5YmUzMzllZGZhOWQxMmQgbGVnYWN5LXRydW5rCis3NjA4NyA1OWU5YWRjYTc3MWIzNGFhZjQ0NzkzYTQwN2I5ZWJjY2JjZWEyMTFjIHJlbGVhc2UyNi1tYWludAorNzYwODggMWRmOTBlMjJiYjcwNjFlNGU3NzI2YWRlZjlhZThjMTNjNjhlNTVmMCBweTNrCis3NjA4OSA5YWYyZTk0NDM5ZDFiNDQ2ZjEwNjU3OGM3YTVmZjMyMjEyNzFmN2Q4IHJlbGVhc2UzMS1tYWludAorNzYwOTAgMWU4YTMzZjYxOGZiMDYzZjc0Y2E2YjZjN2E5NGNjYTc2NGIxMTcyYiBweTNrCis3NjA5MSBmZmFmNjY1ZDJkM2U1ZDU2YWVkZTBiYzk5MzA3ZTBkZmMxNzkwNjI1IHJlbGVhc2UzMS1tYWludAorNzYwOTMgNDJmYTNlMDliNmU3OWQzMWY4ZmUxZjM5NDdlOTJiN2QxMzNiNmRmMSByZWxlYXNlMjYtbWFpbnQKKzc2MDk0IDMzNjRhY2JhYTE1M2NlY2ZlM2NiYjMxZjYxY2ZlNGQ3MTQ5YWU3MDYgcHkzaworNzYwOTUgZWRhOTc5Yzk4YTdmYmUwM2Q2N2QwYzZkZGI3MmUzMDI0MzQyZmVjNCBsZWdhY3ktdHJ1bmsKKzc2MDk2IGM5NGUzYmY4MzkyYmEwMzUzYmE1MWU5OWJlZmFmNjE5NjI2MDQ0NDggcmVsZWFzZTI2LW1haW50Cis3NjA5NyAxZjE3NTg4NDhjNmNiMzgwZGM0MWM0MjBhMzdkZjMyNjA4OGZlYTRmIHB5M2sKKzc2MTAwIGY5NWI1ZmFhMTNjZjVmNGY2Zjk5NGY3YTdkNGI1NTk5NThlOGQ4YzcgcmVsZWFzZTI2LW1haW50Cis3NjEwMSA1MTg2OTgxNGJhOWE4ZjlkZGI3NDNkNzBlNjkxNDJlYjJmYjI3MGU2IGxlZ2FjeS10cnVuaworNzYxMDIgZWE3MzhmZjE4MDE2NjNiYTMyZTMzNDUwYjkyNDEwMjJhYWI0MWI3ZCByZWxlYXNlMjYtbWFpbnQKKzc2MTAzIDYwNWQyZjRjNzUzOTQ5ZDJiOWEzOGZkNTc0MGU2OWQzM2Y5YTA4ODIgcHkzaworNzYxMDQgYzhiZmM0ZGFmZjNkOGY0OGYzNGM2MTQ4Y2FlNjlhYzA1OTNjYTkyMSByZWxlYXNlMzEtbWFpbnQKKzc2MTA1IGY1ZDY4NjA0YzZiOTUyYThlMTZjMGI5YWEyMjlkYzkwYmQ3OTI1MjcgbGVnYWN5LXRydW5rCis3NjEwNiBkMTYxNDQyNjlkNTU4ZDY3MWYyNWFjZTcxNGI5MDQ4ZmU5NDRhMjJjIHRhcmVrX3N5c2NvbmZpZworNzYxMDcgMjk4ZjZiMzQxMjVkMzU4ZTNkODU2ZTJhMTU3ZmJjY2RjYjA5NjU2MSB0YXJla19zeXNjb25maWcKKzc2MTA4IDA2OGY5NDMwY2MyNDBiMDk1ZTI1MjkzZTIyZTIxOWNhNzA3NzlhMmMgbGVnYWN5LXRydW5rCis3NjExMSBmODlhOTNhNzc4YTgxZDA2OGRjODkyNjFkNGU3ZmEyMmM5YmQ1ODExIHB5M2sKKzc2MTEzIGQzYTgxMDUxNjYzYjZiNTZiOGNkYzc0ZWM0MjIwMjBiMDJkOWI0ZGQgcHkzaworNzYxMTQgNDQ0OTg5Y2U1Zjc3MTQ4Y2JlYTQyOGIzNDk4ZWYxZGE2YzYwOGZjYiBweTNrCis3NjExNSA5M2M3NTI4NzUwMzNjYzVkZGViMzFmYTUyMTY5YTgwNGY1ZWRmNGQwIHJlbGVhc2UzMS1tYWludAorNzYxMTYgNjNjOWU2M2UwZGUzZjAyYWI2ZjFkMDMyNmI0ZDg5ZDA2MjZjZDA5ZCBsZWdhY3ktdHJ1bmsKKzc2MTE3IGZkNzgyODA1MTg2NTUxYTk4ZTEwNTEyOGM1MTVlYWZkZjBkNmY1MjggbGVnYWN5LXRydW5rCis3NjExOCAyZWJhZDNkZmNkZTM3NjI3ZWUxMjk1NTJkYmNiNWE0M2YyOGMwY2Y4IHJlbGVhc2UyNi1tYWludAorNzYxMTkgMGNiOTQzOTAwZTUzMWU0ZmEyZTIyNGY0MDFkNTRjMGJlNGJlMGFiYiBweTNrCis3NjEyMCA0ZWEwYTgwZWQ3NmE2MzkyYzFjNTVmZTJmOTAzNGY2MmE1MWIyOWM2IHJlbGVhc2UzMS1tYWludAorNzYxMjEgYTFjOTRmMDc2MWQ0MTNiYWQ2ZjEwOGUwNjVkN2JjODI5ZjIyOTQyMiByZWxlYXNlMjYtbWFpbnQKKzc2MTI0IDM1ZGRmYjQ0NzE2OGQwNmY0NDYyYTM5ZGFhOTk1Yzk3ZGM4NDBkYWQgcHkzaworNzYxMjYgZDNhNzYzNjM5MmFmNTU0ZDFlZWY2MjVlNDZiZmZjNjFlOWUzMzc5MSBsZWdhY3ktdHJ1bmsKKzc2MTI5IGUzZmYzOTc2YmJhY2VmNzUyM2E1ODMzYjEyOTQ4MWI1Yzk2N2JkZjIgbGVnYWN5LXRydW5rCis3NjEzMiA4NTUyYTI2NzcyZTZmYzFiZDgxYjY2MDZmYzYyODY0MjQwMDE5NDZkIGxlZ2FjeS10cnVuaworNzYxMzMgNmRiMjIwYWY4Y2EzZmVjOTA0Njc5Y2U3NWU5YzFmMjA0YjcxYjhlYyBweTNrCis3NjEzNiBkMzQ2ZmZiOGNmZDc0MzMxOWNkYTg1ZmNjZTM1NjdiMDc3Yjk1MWNiIHJlbGVhc2UzMS1tYWludAorNzYxMzcgY2QzNjBhYzU4Y2QyZWEwNmM2YTkwYjIzM2E2MTc3YzJmNmUxOTkzYyBsZWdhY3ktdHJ1bmsKKzc2MTM4IGUwZGRlZGEwZDljMzNmODQyNTEwMjRhMDU2OTdkODJiOGVhZjA4MTMgcHkzaworNzYxMzkgOTMwOWRhYWYzMmQxODA3MDI2ZWMzNjZlNWMwZGQzMjc3YmUzNDY5OCBsZWdhY3ktdHJ1bmsKKzc2MTQwIDgxOGIwYjI4N2FhNDI0NGI3Y2E3YzdmNWI2ODNiYjk4NzMyNmIwZDggbGVnYWN5LXRydW5rCis3NjE0MSA0MmQ0Y2Y4MjdiOWU4OWM4M2ZjYWUzYWI0ZTc2MWJlMmMwM2VkYTQ1IGxlZ2FjeS10cnVuaworNzYxNDIgOTJiZGMzYzdkNWE0M2VmM2Q5YWY4YzEyOGIyYzVmNjk2NzgzZmZlMiBweTNrCis3NjE0MyAxYTMwODYwYmNhMDM3Zjg0MTA5NGIyMjljMzI1ZmM5ZTMyY2I4ZGEyIGxlZ2FjeS10cnVuaworNzYxNDYgMjdlMTIwZjkyMDhiM2FhOGMwYzg5MWE1ZGEzZjFmOWRmYTI4NDU4OSBweTNrCis3NjE0NyBlMjUyODhiYjZmYWYxN2FlODI0MGU1Yjk0ZDg1YmExZDY4MjRlMDkzIHJlbGVhc2UzMS1tYWludAorNzYxNDggNmY1ZjQ4MWQ2MTljMmNkYmJlYmMzNWU5YjlkOGFhM2E4MWZkMzQ4MSBsZWdhY3ktdHJ1bmsKKzc2MTQ5IDA0Y2Y5NWNmOTQ5NmZmZjUwYjFmMmVmMzY2OGNhNzkyMmZhODI1NWQgcHkzaworNzYxNTAgM2EwZTY5MDAxMjE1NDNhNGJmNTE2NDhkN2JkM2JkMTVmYzkxZDdmYyByZWxlYXNlMjYtbWFpbnQKKzc2MTUxIDM4MWE2MmYxZTYzNWYyYzAyMTQ0ZGQ5MWQ0ZjkzYTQ5OTA1ZDQyOTIgcmVsZWFzZTMxLW1haW50Cis3NjE1NCA2Mzc3MGE1YTBjNzlkZjJiNGQyM2Y3NGQ5MDdiZGVkODU1Njc5Mjg2IGxlZ2FjeS10cnVuaworNzYxNTUgMmU0ZTQ3NzIxOWM1NzNmNWNhYjBmMzQ5ZDlhZTdkMzNhZWU0ZTZlNCBweTNrCis3NjE1NiBkY2Q2ODg3YjhhMjc3NDdkYThiNDI3MzZlM2NhMWFkNWY0YTc0MWU0IHB5M2sKKzc2MTU3IDk3OWViMWJiZjZlNmU0NmRhMjcwOTU2ZTk0MzFlMjg3OTgxNmRlM2YgcmVsZWFzZTMxLW1haW50Cis3NjE1OCBkNjFiMjRjODc2NzQ0NzU2OTU0ZmZkMDA5ZTE5YjJjNDJjMzFkYmRlIHB5M2sKKzc2MTU5IDQ4OTg5ZWNmZjgwNDdiYmU0NDBlN2ExNDczMTFiNDM5MTcxOWJlZTggcmVsZWFzZTMxLW1haW50Cis3NjE2MiA2OWQ2MWFmNWE5NTg5MzY0NmVkMjU2NjJmNzRhZjBhMTFmMGIzMGU1IGxlZ2FjeS10cnVuaworNzYxNjMgZDk3MDU5ZTllODUyZWFjMmI4NTYzYWNkZDNiZmExODRlZThjY2I5NyBsZWdhY3ktdHJ1bmsKKzc2MTY0IGYxOTAzMTVmMTg1ZWE3YWJlNGZjM2MxNWViMjRlMTdlMDYwNGViNzYgcmVsZWFzZTI2LW1haW50Cis3NjE2NSBlZDExYjMxNWQzNmEzODg3ZjE2NDAwNTA3MjM3ZGEzZTIwYzE2M2U4IHB5M2sKKzc2MTY2IDE0NDdkNzVkZWY4YjI1NzgxMGYyMDhhNjA4NTI1YTQ1MmVhZDI2NzMgcmVsZWFzZTMxLW1haW50Cis3NjE2OCBjNzZkNWZiZWI2OTE5MzM5Y2QyYmQ1OWEyMjNlMjk3ZGRlMWYwZDc4IGxlZ2FjeS10cnVuaworNzYxNjkgMjY3YTQxOGViYmM5YjY0YTBiMzVmODdiYWVjOThlNzE1YTk3NDJkNSByZWxlYXNlMjYtbWFpbnQKKzc2MTcwIGE3YWM0ZGJkZTVkYjYyMGJhMjAwZmRjOGNjZGNkYjc1ZmQ5MjQ5OTIgcHkzaworNzYxNzEgNjY3ZDk3NzljYWQ2YWZmNjYwNDc5YTNmMTI1NzAwOGQyNWEyMmYwYSByZWxlYXNlMzEtbWFpbnQKKzc2MTcyIGZiZjQxYjExMjRkOGVjYWYxZTdkOGQ3ZWQwNWNiNDQzY2VmZDI4ZGIgbGVnYWN5LXRydW5rCis3NjE3MyBlZDhiMjk2OTExOWUyNmFlNjgyNjk2NDZkYmI0MWM5M2ZiNjRhOWNkIHB5M2sKKzc2MTc0IDBlYjU2YThlNjI2MmYzYjlkMjBhZTM5NTAzNTM1MjQ1N2QyMmM3YTQgcmVsZWFzZTI2LW1haW50Cis3NjE3NSBmZTMzNTYyZDFmOTVhMGZkY2I5ODAxMDJiOTg0OTg1OGQyNGNiNTQ3IHJlbGVhc2UzMS1tYWludAorNzYxNzYgMmQzOTRkMmQyZDM3ZDdkYWExYzZiODEzNjMzOWJjZDA0NDEzYjc3NSBsZWdhY3ktdHJ1bmsKKzc2MTc3IDA1MGE2NWEzZGY1MzhiMjg3OWEzZThmOGMwZDFlMmRkYTAxODZhNTggcHkzaworNzYxNzggYmZjYWIxYmEwZjUxY2IzY2U1MTg5ODViMzE1MTU0OGMwZDMzZTk3ZCByZWxlYXNlMzEtbWFpbnQKKzc2MTc5IGJjYTAyN2I2ZGY1MzNkNmRjM2FiMzEzYTZhY2VmNGYwOTBiNTE5YmQgcmVsZWFzZTI2LW1haW50Cis3NjE4MiBmYmZjY2UxMTI0YWUyNzBhNDZjNGE4YjNiYmE1M2YyMDVmODkxMjM1IGxlZ2FjeS10cnVuaworNzYxODMgNTIxNDA3MzhkNmMzYjVlZWQ2YTQyZDYxYTAzZTQ0MzQ1NzdmNWUxZiByZWxlYXNlMjYtbWFpbnQKKzc2MTg0IDhiZmIzMmI1ZmU2ZDRkMmY5NjRkZDlkZmZlNzJmNWY2NDJmNzczNGYgcmVsZWFzZTI2LW1haW50Cis3NjE4NSBkZDlmODVhNWYxMzQ3Y2ZiMTYyMjY4NGYwZWE2MjQ2M2VjODljMTQ5IHB5M2sKKzc2MTg2IDkyMTlhOTYyYWQxYzMwN2FlMWM3OGVmZTkyY2QzN2RiMDZkMjYxNDkgcmVsZWFzZTMxLW1haW50Cis3NjE4NyBmZmY1NTgyODZhYWUzZmUzNmFkMmM2OTM3NDdmZjNjMmI4NDNkOTQ5IHJlbGVhc2UzMS1tYWludAorNzYxODggMjNjYzc1OWNmYWUzNTgyNTI3ZjNiNTJlZDgyZjI1Y2MxNjU2YWZkYiBweTNrCis3NjE4OSA2ZDkxYWFhZGRkZDA4MWRlNzNlNGYyOWI2ZTczNDM3YWM0ZGI3YmIzIHB5M2sKKzc2MTkwIDg2N2QyZjI3MzViODkwNTU3NjAxYjk0MjU3ODQ2NWQ4MzY2M2RlYWQgbGVnYWN5LXRydW5rCis3NjE5NCBjYTAyMTdjNTJhOGJmMzg0YjM0M2RhYjJmMzgzMGM1ZGM3OTgwYTU5IGxlZ2FjeS10cnVuaworNzYxOTUgZmRkNjQ4NGYxMjEwZDYwYzE2OGUyMzc2NmJkMzQyZGU4YTY2ZjIxNyBweTNrCis3NjE5NiBjYjU5MDU4MDZkZThkYzg3NzI4ODJmOTI0YzVlYzkxMWI2M2UyNmFmIGxlZ2FjeS10cnVuaworNzYxOTcgOTdjMzE4NzE0MDcwZjZmMTdkZjdlNjg1ZTZmN2VhYjZjYjJhNDNlMyBweTNrCis3NjE5OCBmZTZiOWJhYmU0YmU5MTZmNDg0OTA1ZTUzZjFmMjVhMDVjYWMwZmRlIHB5M2sKKzc2MTk5IDk3NmNjNTA0ZDk5ZjI4Mzg1YjVkMmFmZDgxYmIzZDI4NTVjOTM3NWUgbGVnYWN5LXRydW5rCis3NjIwMCAxMDc2NGZmZTc1NDNjZTliYzEyZjYzYWM0MWQ0NWU5NjYxMzkyOWVhIHB5M2sKKzc2MjAxIGIxYTc3NWFhMDcxMGQ0OTYxZWFlZDEzODUwNGU3NGIwZTg3YzdiMGQgcHkzaworNzYyMDIgNGViZGQyZTBhYWFkZTc1M2RjMzRlMGU3MTI3NjU2N2NjYWY1ODk1MSBweTNrCis3NjIwOCA1NGI4ZDc4MGM5Yjk5ZTBiYjU3MmQ0OWM2ZjdkYWQ3ZjZmMTA2NTAwIGxlZ2FjeS10cnVuaworNzYyMDkgMjk1MGQ5NzcxMzk1OWU3MGNmNWU5NWM4OTYwMWIwYjZjZThmMTg3OSByZWxlYXNlMjYtbWFpbnQKKzc2MjEwIDEyZTBjOWVhMzA0ZWVlYjU2ODFiNzg1NDg3OTI5ZjU2NGNlZTFhNWUgcHkzaworNzYyMTEgYzg1ZWI1OTQ2NjE0NTY1YmQzZjlmMjhmZmUwZTVlM2ZhM2Y5NDljNyByZWxlYXNlMzEtbWFpbnQKKzc2MjEyIDc5NWVmNDYzNDllNTAxY2JjOTM0ZjkxNTA0NjlmMWY2MWJhMWMwYmYgbGVnYWN5LXRydW5rCis3NjIxMyAyMTQ4ODUxZjA4MmExOTAwYTYwYzczZmI1NzJjMmMxNzJlZWQ4YzE3IHJlbGVhc2UyNi1tYWludAorNzYyMTQgMjU3Y2I2MWJmNDFiNTY3YmMyOTMwMDEwYjM5M2NhMDg0YWE1MTM1NyBsZWdhY3ktdHJ1bmsKKzc2MjE1IGNlOWY1NWFkNTQ2ZTE0YTU0NzhkMzIwYjU2NzhlNGI3MmIxNmQ4YTQgcmVsZWFzZTI2LW1haW50Cis3NjIxNiBjNzE3ZmU5OTMwODVjZGFhMWZiYzk0ZWNhOWE2Y2ViODIyZWJlZDAwIHB5M2sKKzc2MjE3IDMzYmU4MmZhMjc3YWM5YTFlYTUwMGU5Y2M1YjNhNmExNDY5ZDM4NDkgbGVnYWN5LXRydW5rCis3NjIxOCA0M2YzMmRiMWJmNDZmYjZlMDRjNmRhZDNlNWQwNDA2MWM1OTBhNWI4IHJlbGVhc2UyNi1tYWludAorNzYyMTkgODExNjZkN2I0MTRjOGFmMjc4ZDc5YTEwYmYyODhmMzljMDgxNGFlYSBweTNrCis3NjIyMCAxMzhjMWY3NDgwNGQ2OGM2ZjU2MWFhMTJiMGNkOWRlNDVjNjkzYTQyIHJlbGVhc2UzMS1tYWludAorNzYyMjEgMWMyNzg4OGE5NTVmZTljNmQ5MWUxMTFlNWY0OGEyNGZjN2U4ZmJmZSBweTNrCis3NjIyMyBkNDRmZWEyM2ZkNTdmZDViNzJmMjI1NGExMzIyYzRhMjM0NGRmZWFjIGxlZ2FjeS10cnVuaworNzYyMjQgOTRjZDE4NWY1M2I0NzYxMzZlMTQyMzUwZDc3YzBjZWRlNmVjMGU5YiBsZWdhY3ktdHJ1bmsKKzc2MjI1IDU3MDc3ZGYwMmY5YWNiYzc5MzBmM2MyMWQ2ZjNkOTM2YmMyNjMwMjcgcmVsZWFzZTI2LW1haW50Cis3NjIyNiA1YzBkNGIzZWNkNjVkMThmMjFhODAyMGE5MDc0NWVkYzUzYzM3YTcwIHB5M2sKKzc2MjI3IDRmMWM3YjdiZmNiZGE0MDNhYWRjMzcxNGNmMjE2ODcxZjc4NDI1N2QgcmVsZWFzZTMxLW1haW50Cis3NjIyOCBjZDA0MzZjMzRlZjQ2ZGUwZjQ0ZjA1OTNkYjQwYjE4YWUxNWY5ZTM5IHJlbGVhc2UzMS1tYWludAorNzYyMjkgZjlhNTBjZWRlNmE5MjJiMDY3ZDZkNmNlOTY4MDI2MmY0MjUyYTFkOCBweTNrCis3NjIzMCA4OWY0MjkzOGQ1Y2NiNzMzYzMzNmE0ZDUxNDE2M2Y0MWZmZTQyOGMyIGxlZ2FjeS10cnVuaworNzYyMzEgMTI4ZGQ2ZGUxMzRjYTg5YzJjNzk4Y2ZiZDMxY2YyZDRiNmE2OWVmMiBsZWdhY3ktdHJ1bmsKKzc2MjMyIGIyZDkwYzFjNjM3ZGM1N2Y5NzU4MjE4OGQ0ZjJkNTVlYTcyZDg2Y2UgcHkzaworNzYyMzMgNzYzZDJmZjc4YWU3ZThjNDUyOWE2MWYzZTRjYjY1NWMxMWI0NTE0NSBweTNrCis3NjIzNCA3Y2ViNWViNDYyYzUwM2Y5NmYwZmI5ZTExMjEyY2FjZTIzNjU5M2M0IHB5M2sKKzc2MjM1IGIzNTRjMWI2YjQ3NjdjMzdiNGMzODM2MjU1YjdhZmMwMmRhN2Y1MzQgcHkzaworNzYyMzYgYTA5NTFmMTFiZTNkNzZlNmRhOTk5NTQzNWFmY2U1NDk1ZjEwMTUzMSByZWxlYXNlMzEtbWFpbnQKKzc2MjM3IGI3ZjczYjAyZDZkMjQ4Y2VkODJiNmUxMTdiNWE3MDE0NjIyMTFiMjEgcHkzaworNzYyMzggYjIxODgzNjU3M2ZhY2U4N2Y0ZjdjNzQzNmM5ZDZlNTcyNmY0Nzg2ZCBweTNrCis3NjIzOSA5ODU3OWU5NTJiNTRhZjk3ZDBhOGM2ZDMzMTA4MDA4YjUxMjM5NTQxIHB5M2sKKzc2MjQwIDY4NTUyN2FlNDM3ZGY5MmE4ZjRjYTQzMGUxZWMzMTg3ODIzYjY4MTkgcHkzaworNzYyNDEgMzU3ZTM5NzAwNDg5NzgzZTdhMGRjZjQ2ODdhZDE1YTE0OWI4NjlhZCByZWxlYXNlMzEtbWFpbnQKKzc2MjQyIDhlNmI0NzhhNzA1M2VlYjNmZmZiMzQzMzM4ZTA4MjhlYTM2YmVmNzMgcHkzaworNzYyNDMgNjVlMjMwODVlM2NhZGRkYmNkMDVjMDQyNTZlMDE0NGYyYTUzNDFjNSBsZWdhY3ktdHJ1bmsKKzc2MjQ0IDMyMzM1YmEzYWEwYmIxNjI2MWMwMTc1ZWQ2ZDMwN2FmYWFhYjllYTggcHkzaworNzYyNDUgMTk2ZjJhYjk3NzE4Y2JkYjZiOWUxZWIzNjVhZjFmZmZlYmE3YzYxNCBsZWdhY3ktdHJ1bmsKKzc2MjQ2IGI4MTQ1ZDZkYjdkNDNkNzAxZDU1MTA2ZmNlZjg0Y2UwOWRiYjhlN2YgcmVsZWFzZTI2LW1haW50Cis3NjI0NyBjNjEzYzcyNGUzMTU5YWY4NjExOTNjZjQzY2JkYzE3MmQ5YjllNzg4IHB5M2sKKzc2MjQ4IDkwZjFmNTczMjE4NTlkMGM2NWZhZDQ2NTc5MDY0MmExMzk1Yzg0ZTAgcmVsZWFzZTMxLW1haW50Cis3NjI0OSA1YzkwNTA0ODEzMDlkOGI2ODEzNGVjMmFiNGFiN2JlNWFmMjA4MmRjIGxlZ2FjeS10cnVuaworNzYyNTEgMjc3Yjg5ZDViMzIwOTc0ODAyMDUyZmExZGNjZGFhNzBjMWU4NmFmZiBweTNrCis3NjI1MyBhMWRmNTI0ZmNiYzYyMmIwNzljZjlhOGYyMTliMzhhYzJjYmVmMGUwIHB5M2sKKzc2MjU1IGYwMDEzYWRlOWMxYWQzNmZjMTA0ZDA5OWMzNDg1NDhiM2Q3ZDUzNWEgbGVnYWN5LXRydW5rCis3NjI1NiBhYTY0YTUwYWQ0OTA1ZTc5M2NmNWI2N2Y1OGJkZWZiNjFmMjFhMTc1IHB5M2sKKzc2MjU3IGEyY2I3ZDI3MjFhM2U0ZTRlOGEyZGQ5ZGE1YWQyYTNmMDY3ZTFhOWQgcmVsZWFzZTI2LW1haW50Cis3NjI1OCAyMDdhNDYyNjEzZjNmM2UyNzUxNjg2MTBhZTRkYzY5N2I5YzdjZDk5IHJlbGVhc2UzMS1tYWludAorNzYyNTkgM2YyYTc2ZmEyNDk2YjJhMTVjMmRlNjExMzRhMjY1OWQ2OTA5OWJmZCBsZWdhY3ktdHJ1bmsKKzc2MjYwIGMxYzFmMjhhY2IwNTMyNzkxOTliZTNiNTliNjNkMDMwZGQzZTBmOTAgbGVnYWN5LXRydW5rCis3NjI2MSBiMmFiMDhjOTNhMDI4MjlmNjRkYjhjNGNmNTJkNmU3MGUzNmIxM2MxIHB5M2sKKzc2MjYyIDkyZjkxNzA0MzkxOTk5ZmQzMDcyZDdkNzIxN2Q1OWE1NmIzNDhhZTMgcmVsZWFzZTI2LW1haW50Cis3NjI2MyBiZWM1ODliNDRhYWU3YTZjMzE4ZDY0ZjYzOTVmZWJkNzllYmI5MTMyIHJlbGVhc2UzMS1tYWludAorNzYyNjQgNTU1MDQ1NTQxNzk0ZTgzZmU1NzYwYzVjNDc4YmJhMTgyNjYzOTI3ZiBweTNrCis3NjI2NSAzZGIxZmMzY2VmZDBmODYzZjdiZTU1OTY2ZTlkMTNkMWMzNmMzYzNjIGxlZ2FjeS10cnVuaworNzYyNjYgOTRmMjcwNWRlZjVjZjY1NjY4M2ViMzg2YzEwMzVlZWM1NjllNThjMiBweTNrCis3NjI2NyA3ZDRhYjhjZDAwMjM5NTU0MzI4NjI4NGUwNDVmNTY3NjFiZDVkNGU3IHJlbGVhc2UyNi1tYWludAorNzYyNjggNTZlNzAxZjgyNDVlNTYzNmEwZmZmOWQ5ZGY5ZGFjOGU1NGY3ZTcyZCBweTNrCis3NjI2OSBmYTYwMjcwYWI3OWFlNWM4ZGRkYzg1MmE5MzQ4NmRlOWY0ZDE4OGU0IHJlbGVhc2UyNi1tYWludAorNzYyNzAgMTI1N2E1OTdjOGZhZGEwNTdkNjE0NmRiMjY5MWFlY2NjYmYxNjA5MSBweTNrCis3NjI3MSAzZDkwMmQ2N2FmOWNhMDkyYjJkNzQzYzdhYWQzNWE1ODMxYjY2ZDViIHJlbGVhc2UzMS1tYWludAorNzYyNzIgNzllYTRiMWVmMDRmMjdkZTU3YTc1NDk1YmIyMTk5MzlhYWIzNDE0NyBweTNrCis3NjI3MyA3ZDZiYWQ1YzJkNjRlMDZiMmUyN2VlODdkZGViNmMzMDA1MDQ1ZWU2IHJlbGVhc2UzMS1tYWludAorNzYyNzYgMWEzZDM5NmQxYjZmY2JmNTQyYmU1OTI3NDRlNDhhMzg5YzhhODFiZSBsZWdhY3ktdHJ1bmsKKzc2Mjc3IDUzZWU4ZWNjMThhNTIyYTgyMjNjYWNkZjUxNWI4Y2FiZTlkMjhiMzIgbGVnYWN5LXRydW5rCis3NjI3OCBiYjRmZGEyMmU2NTc4MDhiZTA0ZmY2NTk0MThmNGUyZmViNTY3Y2U1IHJlbGVhc2UyNi1tYWludAorNzYyNzkgYzc3N2U0YjQ1NTAwNGUyODI2ZDAyOWUwMmJiY2JiMGI4MzA3ZWE4ZCBweTNrCis3NjI4MCA4NzY4OGZmNmFjY2M0ZGQ2Y2U0NTBkNzJkNjJkNWJmNmUxMTQ2NmY3IHB5M2sKKzc2MjgxIDA1YTg5Yzg2NjNjYzcyZTg0NWZlY2Q0NjhkYWNiYjkxMGQyYThmNDkgcmVsZWFzZTMxLW1haW50Cis3NjI4MiAwNWM0ZWIwMDg5YzVmMWU1MTJiYzAwNDFhODQ0YjFlNTUzNWY2MGU5IGxlZ2FjeS10cnVuaworNzYyODMgM2IwYjE5YjUzZDMyYmY1NTk4NTU3NmI3ZTdmNmY2MjRmZjkzODVlZSByZWxlYXNlMjYtbWFpbnQKKzc2Mjg0IDU5NWVjMWQ5MGIyZmVmYzY0MTAwYzgxNzM0OWZiYjM4OGYwZmExNzUgcHkzaworNzYyODUgZmI3ZmM4MzAyNzIxZDAwOGQwNzVhZGQ3MzVmYzBhZmM4YzEzMjQzYiByZWxlYXNlMzEtbWFpbnQKKzc2Mjg2IDQwODgxZGIzMTY4OTMzOTJkYzJlN2VkMThhNGExYzUxMDU5YjMyZTggbGVnYWN5LXRydW5rCis3NjI4NyA2YTdmYzJlODU2NWY3M2E3ZjQ2YzkzNjJjMzhlZmEzMzlhNzg2ZmRmIHJlbGVhc2UyNi1tYWludAorNzYyODggNTkwNGFiYjdlZWY3YjNjOGVjYzkyYjY5ZDViMGEyMzNlYThhYzc3MiBsZWdhY3ktdHJ1bmsKKzc2Mjg5IDQ5YTVmMWNiMWIyNTQ3MGFkMWE5MjRlYmMyNzYxYWQ1Y2FkNTE0MjAgcmVsZWFzZTI2LW1haW50Cis3NjI5MCBmNjQwZjU1ZTg4NzM4NTc4OWY0OWQyZTI3NmRmMDFmM2I2NzI0YTZiIHB5M2sKKzc2MjkxIDViMDViNWU5YThlOWI3NDJhOGNjOGRkNmZjMDVhMmE5NmNkZDQ5NDMgcmVsZWFzZTMxLW1haW50Cis3NjI5MiAzNzBkMjE4YTAxYmMzMmQ5ZmI3OTY0OTk2MmQyNzNmN2E2YTkxNDM0IHB5M2sKKzc2MjkzIDJhYTYyZmNlMGJmODY1MzYxZWFhOGVkZjFkYzEyOTliMWYzMTgzNWMgcHkzaworNzYyOTQgYjJhMzkwYzVkZTVmODkzMWQxYzhlM2RhNGYzZGM1MDM2MmY2Mzg5YyByZWxlYXNlMzEtbWFpbnQKKzc2Mjk1IDYyYjhkZTk4M2IyNjQyYjg3OTQyOWRlZTllMjQ4YTMyMTY2Y2Q2MGQgbGVnYWN5LXRydW5rCis3NjI5NiBjMjE3ZTAzMzFkNGIyZTNhOGQ1NGYyNjM3ZmFjZDBkMTAwZjY5Yzk5IHJlbGVhc2UyNi1tYWludAorNzYyOTcgYzQ1OGY4MTNhNzA5NGJmZjA1ODBjMzhhYjlhZTlhMGJiYjhkNzJkNiBweTNrCis3NjI5OCAzZWJmOTA3ZGIwMjhlMTJiYTdjMTczZmUyMjdiZjlhYjllNjA2MTBkIHB5M2sKKzc2Mjk5IDk1MDVhZmU4ODIzZjk0YzA3OTFiNGU3YTIzMDg2YmFhZDA1NzQxMDkgcmVsZWFzZTMxLW1haW50Cis3NjMwMCAwNjliNjZjZmFkM2ZkOWY2NWRlNzA4NDI3ZmQyMTg3NmY1ZWFjMGNkIGxlZ2FjeS10cnVuaworNzYzMDEgNzg1MjMxYzFjNTVhOTE5MTU2N2JiNzMzODRkMGFmZWZhNTlhNDAyYiBweTNrCis3NjMwMiAyZWNjNTkzNmIxZjIzMzNmODNkMzMyZGVmODMxNzI5ZDIxMWYzNDMwIHJlbGVhc2UyNi1tYWludAorNzYzMDMgZjEzNWZkYjczZDg4NTQzN2I3Y2I1OWQ0Yzg1NzVjM2Y4N2IzNzkxZCByZWxlYXNlMzEtbWFpbnQKKzc2MzA0IGM1MDk5ODE4ZTBkNGU1OTBjZGUzN2E2N2ZjOTUzMmQxMmFkNmUwZTEgcHkzaworNzYzMDUgYWJhZjM3MjRiZTcxMTc4NmUyMTYwYmFmYWM2ODhiNDU3ZWRjYTlkZCByZWxlYXNlMzEtbWFpbnQKKzc2MzA2IGFmYjMzNDhiMzcxNTYyMzJmMjAxNTliOWI3NDZmZThmMDE0Yjc3ZWMgbGVnYWN5LXRydW5rCis3NjMwNyAxNTA2MTBjYWU4MDQ5MjlkYzhkNTMwZDQ3OWMwMmRkYjkwZTAxZDgzIHB5M2sKKzc2MzA4IDUxMDI4NzA5YWJjMzI3Y2Y3NzU2ZmZjNDBhZjBlNDQzNjAyNTAwNDkgbGVnYWN5LXRydW5rCis3NjMwOSA4MzY2NDIyNDA0NjRhYmQ0YThlMDFmYjBlY2MzNmRmMTU0NGIxMGY2IGxlZ2FjeS10cnVuaworNzYzMTAgMjNjMTM4YzRlYzA1ZWMxMjJmOGE1MWNiMGE2MjY1NWU2NmJiNmQ2YyBweTNrCis3NjMxMSAxNTRmYjI3MGE4MjBmM2NkMDAyOWViYzQxYTZhNjQzYTY1MThiOWYxIHJlbGVhc2UzMS1tYWludAorNzYzMTIgZWIxYzAzYTM3YTAyOTVkNWFhNmRlM2UxOTZmNDViYWE1MDI1ZGFlNiBsZWdhY3ktdHJ1bmsKKzc2MzEzIGMwODQyM2Q3MGI5ZjIxYTcxMTYzOTczYjA5ZDU0NTBiOTFhZTdhM2IgcmVsZWFzZTI2LW1haW50Cis3NjMxNCBkZjUzNjRmYzBlNWM5ZDQ5MDBiNzYwZTdhNGIwY2VjZGMwYzVjZDgxIHB5M2sKKzc2MzE1IDI1YjY0MGQyMzRmOTU1NWMzYmQxNTFlMjhlNDk3YjRiODJhYTBkYTYgcmVsZWFzZTMxLW1haW50Cis3NjMxNiAyNTBlMWY0NzU1NjhhYTJlNmNlMjY2MTI0YWY4YWEyZTUxNjRlNWZlIHRhcmVrX3N5c2NvbmZpZworNzYzMTcgNjY0ZjYzMDE5NDBmODMyZTYzZjVhZjYyM2IxMzcwNjY3NDVkNjU5OCB0YXJla19zeXNjb25maWcKKzc2MzE4IDYxNTQ1MjkwY2I1MTQ0OTY1NzZiMmY1NWYxNzgyNDAxZmMzN2JhMmEgcHkzaworNzYzMTkgZWIyMzVlYjQ1ZDMyOWJkMzYzNDBkYzJjNDc3NDU0YTZmM2Q1YjY5NSBweTNrCis3NjMyMCBmMTExMmMyNzAwYjFlNjUxMTJhOWZjNWI1ODkyOWY3M2IyMzliYzk1IHJlbGVhc2UzMS1tYWludAorNzYzMjEgNDAxZDIyMzcwNWI3NzgxZmM4OWQ4MTZmMzc3NzJkMTI3NDdkMTFiZCBsZWdhY3ktdHJ1bmsKKzc2MzIyIDFlMDNmZTVhMTFiNDJmMmQwYzViNjg3YTg5NmU4MzQ1NjU0Y2U5ZmEgbGVnYWN5LXRydW5rCis3NjMyMyA5NjcwZmU2ZTZkMTRkY2FhYTNmMDA5NzQ1ODJlODI4ZjI5NzM5MzQ4IHJlbGVhc2UyNi1tYWludAorNzYzMjQgZmQ0MTdjZDY0MzQxODVhYjYwZDcwOTU0OTE0MzlhMGRkMjYzY2EyZSBweTNrCis3NjMyNSBmNjI5MzBkMGZhNzJkMjU1NDA0NWQ3NTZhODM2NzI4MGY2ZmQ5NzFlIHJlbGVhc2UzMS1tYWludAorNzYzMjYgYzg0N2M2ODRjMmM1ZWEwOTJiNjYwMmMwNmY1NmI3ZGIxZGJiYWQ0MyBsZWdhY3ktdHJ1bmsKKzc2MzI3IGQzYjNhOGE4MDkwZmExOWRhYjg1MzU1ZjVjZjU3Y2VjYzExMmFiMWMgcmVsZWFzZTI2LW1haW50Cis3NjMyOCBhYzc2OGM4ZTEzYWNhODhhZDZiNTc3ZThhMmYwOGZkMTE0Njc0ZjNmIHB5M2sKKzc2MzI5IDJkM2NkYTZiOGM5NTIyMTNmMzdmMGNmOWE1OTg3ZDc5YzdkNzA3ODMgcmVsZWFzZTMxLW1haW50Cis3NjMzMCBmNjgwYzFmYjc4MDRmODMyMjVmZGQwYmI2NTc0MmFiZjJlYTljZDRmIGxlZ2FjeS10cnVuaworNzYzMzEgZDEyNzY3OWVjZmFhNmRlNDk1NDU4Y2YzZTg2MzM4ZDJhYWQxZDE5ZiByZWxlYXNlMjYtbWFpbnQKKzc2MzMyIDlkOTM0MmNiZjkzNTNlNGU1OTIxOTYzYjRmZTBjZTZjYjgwMDQwMDIgcHkzaworNzYzMzMgY2ViM2IzNmRkNjgxZWNjMDgyNGViNjgwMTczZGIwNTM4YzdjNThmZCBsZWdhY3ktdHJ1bmsKKzc2MzM0IGM1YTEyMmNiMTI4OGE2YzQ3YTk2NmZlMWRhZGYzOWEzZGNjODVhNDEgcmVsZWFzZTI2LW1haW50Cis3NjMzNSA0MzkxYTIyYWIxZjA0YTkzODY4Y2VjNWQ3MjZjMTBmNThhZWY1NDNmIHB5M2sKKzc2MzM3IDRhYTRjMTlkZmFlZGVjZjdkNDFiM2M0ZDAwZTljYTY1MWQwODY3YzcgbGVnYWN5LXRydW5rCis3NjMzOCBhZGY5Mjc0ZDNlZGM0MTNmYzI2ZGYwN2QzZWYyOGE1MzZmZjM0OWVhIHB5M2sKKzc2MzQxIGY5M2IyYTY4ZGZiNDIwNzRmZjZkMzc5ZTZmNjM4ZDQ4YTFhODAxZmMgcHkzaworNzYzNTAgMzQ5Yjk3ZmY0YzJiNzgzMjRmYWYzZDQ3MzhlNmVhZmZiMzdlMDk2NiBsZWdhY3ktdHJ1bmsKKzc2MzUxIDcxODNkNmI5MzBiYTkxMjRhY2Y4YjQxMGNlMTBkMmQxYzhjNGUwYjAgcHkzaworNzYzNTMgMjYyODIxNmJjNjZkNDc2Zjc3NjkzZDgyYzcyMTQ2MDBmMjBhOTg4MiByZWxlYXNlMjYtbWFpbnQKKzc2MzU4IGE3N2EyZDdjZWQ3ZGQ3YzJlM2NlYzgwMDc3ZWVhMTAyODZkMWI5MGYgbGVnYWN5LXRydW5rCis3NjM1OSAxODRlYjkwYjJlM2Q3NWZiOTFjNDBmOTIxNGVlNjcwMzcyOWExOWY4IHJlbGVhc2UyNi1tYWludAorNzYzNjAgZDZjMjEwNjc3OWI5MGNlMmNiMDk0Njc2ZDJiMTI1YzkyYzcxY2U0YiBweTNrCis3NjM2MSAzYzYyMDMxYjI1MDZkZWNkNTdlNzVjMzUxZWNlOTcyMjY1YjA5MTIzIHJlbGVhc2UzMS1tYWludAorNzYzNjIgM2QyYjA2YWE3YjM2ZmEwYzY0YjYzYzc0YzNkOWQwMDA2MjNjYjMyOCBsZWdhY3ktdHJ1bmsKKzc2MzYzIGYwMTQ4ZDkyZGI3ZmY1MDYzMzM3M2MzODBmMGIwMTZiNmExZjg3YjEgcmVsZWFzZTI2LW1haW50Cis3NjM2NCBlZGE1NmQwNzc1YmFjZDdkYjJmYzY2MTk1OTkyNzZhYzZhYzA2MDJmIHB5M2sKKzc2MzY1IDI0YWI5MWZiMjVhYmYwN2VkYWFhNDM1MWQ5OWQ1MDBmNDdiZDY0ZTIgcmVsZWFzZTMxLW1haW50Cis3NjM2NiAzZDE4Y2QxZDA0YTQ0NjhmMTgxZjIwODc2ZjRiNzU0Njg2YWIzMGZmIGxlZ2FjeS10cnVuaworNzYzNjcgNGVkMTMyZDZiYjcwMDEyMzhmMmMxMzA3MTU5MmJhYzM3MTAwN2UyYiBsZWdhY3ktdHJ1bmsKKzc2MzY4IDZlM2NjM2FkZjFkYzQ0MGEzYjJkYzE4YjI2MzYzYmFjNzUzMGI4NDEgcHkzaworNzYzNjkgYTdmNjE5NGI3OGNjOTJkMjgwODhjN2E0YzE5YjNiMGU3NmNhMTcwYyBweTNrCis3NjM3MCBlZDU0YTFhOTE0YjRjNjYwNTMwMGUyYmUwYTI2YzU1ZGY1YWY3ZGYxIHJlbGVhc2UyNi1tYWludAorNzYzNzEgNWVmMzRiMjk3NjZjZjFhMjc2MzE3Zjg5Y2JkMjRkMjJiYTdiZGVlZiByZWxlYXNlMjYtbWFpbnQKKzc2MzcyIDJjNWM2Njg3ZjFjOGViNTQwZjBmMGE3OTZlM2NmY2RmMDBmMWFhN2YgcmVsZWFzZTMwLW1haW50Cis3NjM3MyA5MmUwNmNkYmVhYjliNjg0MjVlYzJmOWM1MjI1NzdhNjA0ZWQ3NGQxIGxlZ2FjeS10cnVuaworNzYzNzQgNTBkMzU1MzI0YzUwNjMyN2RkYWRjNzM2MmVjMDExZWZjYzIwZWMwNyByZWxlYXNlMjYtbWFpbnQKKzc2Mzc1IGI5NmY3OGNlODM4MzM5M2JjMWRiZjQ0MTBjNGFkNGJlOGYwNzgwZTEgcHkzaworNzYzNzYgMzMzZGRhMzFiZDczMzFlZTYxMTdjMjE5MjRmN2FjZjZiN2UwZGUzMSBsZWdhY3ktdHJ1bmsKKzc2Mzc3IDQxZDI5YzE3ZmQ0MDVkNmFlMTMyZDBiZTNiOWUyYmI0MTk0ZmIzMmQgbGVnYWN5LXRydW5rCis3NjM3OCA0NjMzZWQyMzc5NzBkNzQ2Zjg0YjkxZmMwMGRlMjU2NDdhOWQzNjZlIHJlbGVhc2UyNi1tYWludAorNzYzNzkgMWU1MzRkNzk1MGY4MGU4OTMzNzE2ODdlYTVlYmFhYzAxYzE3YmIzMSBsZWdhY3ktdHJ1bmsKKzc2MzgwIDllZDAyZGY3MmJkNjJmM2U3MTJmZGViNDM3MGY3YmVlZGUzNjQxNjYgbGVnYWN5LXRydW5rCis3NjM4MSBkOGJjYzlkZTE2MDU0Yzc5ZTg0MGYzZjY4ZWI3YWFiMzY3MWI1ODBhIGxlZ2FjeS10cnVuaworNzYzODIgMGJjYzEyYzQ2MDE1YTQ4ODg1NTdjZGFjOWUxZDIwZTI0NWY3YzRhYSBsZWdhY3ktdHJ1bmsKKzc2MzgzIDA1YWYwNDkwMGI2YjkxZTJlZDAwZGM0MzU5ZjUwZmFjZGEwMzdhOWQgcHkzaworNzYzODQgNzE1YzBiYWE4YjJjOGM3OGFjZDVhZGJiMjdmMzI1M2MxNzRjOGM0ZSByZWxlYXNlMjYtbWFpbnQKKzc2Mzg1IDVlNWM5N2I5YzgyNzlmNjJjODM4MDgzNjJiN2RkMzExZDk1NGUyMmMgcHkzaworNzYzODYgYTM0NWJiNTBlYzBmODhjNWRhOGQzMWIwMTI4Mjk0NzhmYzlmZjI5OSByZWxlYXNlMjYtbWFpbnQKKzc2Mzg3IGQ4MDE5ZDFkNTZmMzM0ZjUyZTk2Yjc4MWJiYzRhYmM0NzIxNGIxOTcgcmVsZWFzZTMxLW1haW50Cis3NjM4OCBlZDU5MDc3ODM4YWRlOTkyN2FmNmQ0OTIwNzUzYzEwNmQ5MGJmMDg1IHJlbGVhc2UzMS1tYWludAorNzYzODkgYjMxYTMzYzM2ZjA4NzRjYTE3MTY4YTE0ZWE2N2Q1ZTc0YWE2ZDA0YSByZWxlYXNlMzEtbWFpbnQKKzc2MzkwIGI4YTBiMzMzZTQ2OWUxYTg5OGYzMTQzYTA3OGUxNzFhODkwN2ZmMzEgcHkzaworNzYzOTEgOGQwNmU0NTBiYzk4Y2I2YTRmNzNiYTljZmFmMmRhOTc4YzZmNzNjMyBweTNrCis3NjM5MiBmMTUyNjY3MjAwYWU5MDQyNGNmMmZkY2I1ZGEwYjg2NjA0YzhjNTUxIGxlZ2FjeS10cnVuaworNzYzOTMgYTc5MGY4NGZiYWZhMjgxOGVlNmQ5OGExNmExYzUwNjUwYjZlODJjMCByZWxlYXNlMzEtbWFpbnQKKzc2Mzk0IGY3M2QxMzdjZmJkMDQ2ZjdhNGFkYTYxMGVjNTg1MjI0Yjc0OTNiYjcgcmVsZWFzZTI2LW1haW50Cis3NjM5NSA4NzkzZmY4ZjQ4MjYxZDkxNDZkNDg4MGNjNGY1ZWQ3NjFkMWJmMjMzIGxlZ2FjeS10cnVuaworNzYzOTYgMTY2ZjdhM2I3M2ZjNjBjNjM2ZDY2MmFhYmEwMmVmOWYzZGE3NGIzYSBweTNrCis3NjM5NyA0MmFhZWRhZWZiY2I2NWUwYjk1NjllNzc1ZjZjNTJiZGMwZjYwZTA1IHJlbGVhc2UzMS1tYWludAorNzYzOTggZDU3NzllMTU5ZGRiMWE4ZGEyMWM3Y2I3NmM3YTU4ZmZkZDZjMGJiYyByZWxlYXNlMjYtbWFpbnQKKzc2Mzk5IGMwZGZhOWJkNWM3ZjgyMzNiODI2NWQ5MmU0OGQzNGIxY2YxNmNjYWUgbGVnYWN5LXRydW5rCis3NjQwMCA0YjZiNDk0M2Q2OWE0MGIwYjQ5YTkyYzNlZGIzZGFlMTQxMTczZTJhIHJlbGVhc2UyNi1tYWludAorNzY0MDEgZjU3ZjBjNmFhZTlkODJkODNiY2NmZDkxNGM1NDA2NjNkNDFmYTQxNyBweTNrCis3NjQwMiBhYjViN2UwYTkxMzFhZGJjM2ZhYWZmYjhkYjdkODhiMDAyNWUwNWFmIHJlbGVhc2UzMS1tYWludAorNzY0MDMgYzA3OWZjYmZjNzYxN2I2Yjk4MWVjNmNmZWRmZjQ5ZThjZTZlYmUzMyBsZWdhY3ktdHJ1bmsKKzc2NDA0IDViNTQzMjVlZjZmNTc2MzEzOGFjZWRhOTUxMTJmMWIzMmZkNDJlMDYgcmVsZWFzZTI2LW1haW50Cis3NjQwNSAzOTk4OWM2NmRiMTc4YTIxOGI1OTEzZjg1NzMzOGVjMjc5ZmUyOTc1IHB5M2sKKzc2NDA2IGE5MmVmMTM2ZDlkMGNmZjkxNmI4M2FhNTFjZGUyNTkzODQyOGJjNzcgcmVsZWFzZTMxLW1haW50Cis3NjQwNyA0ZmFlODE2OGM0M2IxMzE4OGUzMGM0MTEwOGQwNTM3YjI4NGE3ZWJlIGxlZ2FjeS10cnVuaworNzY0MDggYjk2YWUzZDhhZGZkMTA4YWIzN2U4YjAyMTI3MDgzZDg2MGUxYjkzNSByZWxlYXNlMjYtbWFpbnQKKzc2NDA5IDJkZDc5NDJkY2ZkNTM5MGE2NmY5MzE1NDhhZjhiNzAzNTViMjRjM2EgcHkzaworNzY0MTAgMjRkMWUwNmM2MjljMWE4NjBmOWRjNWY1ZTIyM2IxOGIxZGY4ZjgzMyByZWxlYXNlMzEtbWFpbnQKKzc2NDExIDY3YzBmOTJjZTU1Yzc3YmEyZTZjZjdlYWRhNDRmYWI1ZjU4YmRmZWIgbGVnYWN5LXRydW5rCis3NjQxMiBhNGQ5YTNkYmM1MzNmYjJlZjJlMWZkNzBjNWEyZTY0MzZmMzI0YTA4IHJlbGVhc2UyNi1tYWludAorNzY0MTMgOThhYjNhZGIwNDVjZTI2ZWE2ZGY2OWQ0MTZmOTViMDQ0MDAwYzg5MyBweTNrCis3NjQxNCAyMjU0YzdkYTk3Nzg4MDQ2MzMwZWQ5MWQ0NGM5MGRhZWU4N2IzZjk3IHB5M2sKKzc2NDE1IDgyMzgwODE2ZTdkYjNiMjY0NzFjMDY4MDY1MWJhYTljODM5ODZkNTQgcmVsZWFzZTMxLW1haW50Cis3NjQxNiBlZDMwYmNmZmExNDY3MmYwZTMzNDlmYzA3N2NlNTlkZTc3YjA5NjBhIGxlZ2FjeS10cnVuaworNzY0MTcgNmFhNTI4YzUwMTI4NGM1ZjdjMmQxNWIyYTM5NjQyMTIxN2I3MzQ3ZSBsZWdhY3ktdHJ1bmsKKzc2NDE4IDQ3NWJmOGI1ODRhOTIzYjA0OGYyMzg3MmYzY2U5ZGJiNmRjZjIxODQgcHkzaworNzY0MTkgZjlmMzk1MGI1ZWM3NTY1MjA3MWU1MTc5OTIzNDgwYmMxZDFjOTEwMCByZWxlYXNlMjYtbWFpbnQKKzc2NDIwIDFjMzUyNzUwZWJmMjNmOTUxNjY4NjM2ZjgxNTM3OGRlMzgzZGE0NjcgbGVnYWN5LXRydW5rCis3NjQyMSBmMmRhNDg4YjRiN2IzOTM1NmUzNDA2N2JkMmVmZGI1NDc1N2UyYTQ3IHB5M2sKKzc2NDIyIGNkNWIxNWMyOWEzOTZlZTk5Y2QwYmJmODQ0YmEzNTM0YjMzZmViODUgcmVsZWFzZTI2LW1haW50Cis3NjQyMyA2ZTM3MDAxM2YzYTBhNTlhNzk5NDhiNjMzYjJlZTViZjI4Y2FlM2I1IGxlZ2FjeS10cnVuaworNzY0MjQgMTM3MTE1ZTM5NWQ4ZGRmYjU3ZWZkNDIwNGFmNGUxMTZhZGJkNmY4MCBsZWdhY3ktdHJ1bmsKKzc2NDI1IDE4YWYwY2UwYTU4YmQ4YjZiYmM3MmEyODBhMWNkY2I5ODllYTBmMGMgcHkzaworNzY0MjYgZWFlYmUyNDYwMzc3YzU1YmFjMjA3ODk1YWU1OWJkMjZhYTAwNTY2NCByZWxlYXNlMjYtbWFpbnQKKzc2NDI3IGZkNmUyYWJhZTE0ZTQyZjUyZmY2ODVmYjJkNjUwNDQzNWMxMjRmMzEgcmVsZWFzZTMxLW1haW50Cis3NjQyOCBlMmIyY2VlZmE4MmFjZmRiNWE5OGI5NDBhM2QwNDAwMzA5Y2JhZmViIGxlZ2FjeS10cnVuaworNzY0MjkgZTgzZTNkYjYyZmM3OGQ0ZTNmZGFhOGYzNjVkZTdjMzMyN2M0ZDcyZSBsZWdhY3ktdHJ1bmsKKzc2NDMwIGUzYzk5NGMyOWEyMjkyN2EyOTg2OWNiNDA1YmFhNjVjMDJjNWExZmIgbGVnYWN5LXRydW5rCis3NjQzMSBiODFkNjAxMTBmODZmNzc4MTIyOWU1ZDAzYmQwMTAyMzFhMDZiZTI2IGxlZ2FjeS10cnVuaworNzY0MzIgMmUzZWMzYmI0YmU3Y2JmZDJhNmRlYmUxMDI2YWYyZmE1MzI3MzU2ZSBsZWdhY3ktdHJ1bmsKKzc2NDMzIDFkOTIzZWJiNDc2MDBmOGEzMWM2ODhiMWVmYjYzZmRlYTNjMmZlM2UgbGVnYWN5LXRydW5rCis3NjQzNCA3YTVjYjRkZWNmNmYyOGU4YTVmMDlkOTE0YWNiZTFkMjg3YTVjY2E4IGxlZ2FjeS10cnVuaworNzY0MzUgYjhiZDUzNjA4NDFiYWE1ZGU1YjlmYzExOGRjZDMyMzBjNWY4ZTY2NSBweTNrCis3NjQzNiA1YWVlZWUwZWFlNWZjZjUzNmJlMzNkODY3MGZhYjI0NmM5ODI4MTY1IHJlbGVhc2UyNi1tYWludAorNzY0MzcgNjM5YmEwMzZjMjA5NDhjNDg4ZWI3Zjk0MzdhMjNmNmM3ZjEyYmNjNCByZWxlYXNlMzEtbWFpbnQKKzc2NDM4IGFmODhiMWQyNWJmMjhlYmM5NTUxZTk1MTgwMTljNmFlMTAwZGU0NjAgbGVnYWN5LXRydW5rCis3NjQzOSA1MTNjNGIxNTc1ZjI2NzAyYmMzMWZlZmU3MDQxZmY0NWFkOTE4NjExIHB5M2sKKzc2NDQwIDRjODcwOGE3OTFlNjAzMmUwMjhjZDk1NGI0NDA0OTQ3ZjY4OTZjNDEgcHkzaworNzY0NDEgNGQ1NTZjMjc5MjZhNjFjNzMyNzY3YWVmMjAyMzJiMmUyOWFmMTcwMyByZWxlYXNlMzEtbWFpbnQKKzc2NDQyIGRjYmNjOGMxNDE3OTM1MDA3Nzc1NGQ3MzJlMDZjZWQ0YzE2NDJmNWEgdGFyZWtfc3lzY29uZmlnCis3NjQ0MyA0ZTI3MGVhYjQ1MmRmMzA4MTQwYTliNWQ3NmMwNTY5M2Y1MDE2NzRhIGxlZ2FjeS10cnVuaworNzY0NDQgZDZmODU1MmZjZTc5ZmFmZDRhYTFlM2M4NmU4NTZjY2QwMmIzMDFmMSBweTNrCis3NjQ0NSBiYzc2NDNhN2E1ZTdiMjg3ZmYzYzk4NzYzNzJjYjZkYjgwNmQyOGI2IHJlbGVhc2UyNi1tYWludAorNzY0NDYgMGVlYjNhM2U3OWVmODg4ZjcyYThiYTdhMzEwYzg5N2Q3ZTJkZWYxMSByZWxlYXNlMzEtbWFpbnQKKzc2NDQ4IGVjNTJjNDE5YjgyNGUxYzVlMDhmM2E5YmQ0NzgyY2UwNjkzOWVkMmIgcHkzaworNzY0NDkgMzczZDQyZjI2ZTk2NmE3ZGE4MDQ5MTk2ZTM0ZDM1YTM2Mjg2OGM5MSByZWxlYXNlMzEtbWFpbnQKKzc2NDUyIGRlMDc4ODBhNTNmZmE3OTA0YjMzZTMzZGEwNjVmMzVlZjIxMDFiMjcgbGVnYWN5LXRydW5rCis3NjQ1MyBkNmNlMThhZDg0NjcxNjllMTgyZWE3ZTIxNWQ5MDliNDBlOGYzNjJkIHB5M2sKKzc2NDU0IDU2ZjE5MDgxZDdiY2U5N2VjZDJhYzBhNWY4MmUzMTc0ZmVmNDk1N2UgcmVsZWFzZTI2LW1haW50Cis3NjQ1NSBlMWQ3MzI1MjdjN2UzNDQ1N2I3OWRmMDcwNjA0Y2I4Y2E3OWU0ZTNhIHJlbGVhc2UzMS1tYWludAorNzY0NTYgMjQ4YzRmYTVmZTBjOTg3OTVhODM2MWNiYjM4NTNmYWYyY2RjOGY0NCBsZWdhY3ktdHJ1bmsKKzc2NDU3IDA4NjllMWFiNTcyZTM3YzMzNTQ5YTJiZDc3MjEzZjY0N2JiNDMzZjggcmVsZWFzZTI2LW1haW50Cis3NjQ1OCBjNDhmZDYzYzJmNjFhMDhiMDIyZDI3YTMzZmQxMjg0MDYxYzUwZmFmIHB5M2sKKzc2NDU5IDA5ODQwOTlhOTQzMTNiMmVmZWJkNTEwYWJhNTEwYTE2YjUwNjQyNzYgcmVsZWFzZTMxLW1haW50Cis3NjQ2MCA3MDQyMTRiOWNiNzZjNzczZDEwOTVlNzUwMWM5NmY1NjYxOTc0OGQ1IGxlZ2FjeS10cnVuaworNzY0NjEgMjYzOWVhN2I5MmVkMDRjNjk2ZTRkNzUwZDIxMzFmZTliOTFkYWVmZSByZWxlYXNlMjYtbWFpbnQKKzc2NDYyIGFkYTVmNmVlZTFjYjEyMWQ0MzcyYmEyZDM5YmRjYjdjOGI0YTFlNjMgcHkzaworNzY0NjMgYzJlY2NhNWZmNjU5M2NkYjA5YjQwYzQxNTI0NTkyN2IxNGU5NTI1ZiByZWxlYXNlMzEtbWFpbnQKKzc2NDY0IGY1NTRkZmZmNzQ1MDU3NjU2ZjVjYTczMjBkODdmNmRlMzZiNTI1NWIgbGVnYWN5LXRydW5rCis3NjQ2NSA4MDhmOWMwZDRhYzQwMGNiZjViMjAzOWMwMzdiMWNhNGNhNGY1ZmNkIGxlZ2FjeS10cnVuaworNzY0NjYgNWNkOTVlNTc3NzJjODBjN2ZiYjc1ZWFlNWJlZjc4YmM3NDYxOGRjMCByZWxlYXNlMjYtbWFpbnQKKzc2NDY3IGM4ZDY5YTA2YjMzYmJmNjE2NDlhOTBkMzY3NzIxYjVjZTc0NjJjZmQgcHkzaworNzY0NjggODE4Y2Q0MGRmODY1ZjI2NzgzMTMwZDUwM2EyYjY1MDU1MjE1NzY3OSByZWxlYXNlMjYtbWFpbnQKKzc2NDY5IGFhOTYyN2M0MTIyMmNhYTJhNGEyZmI2YzFkMDg4MDcyMWU2MzMzN2YgcHkzaworNzY0NzAgM2EyYjE0OWFlNjZlODE1ZjA4M2YyMzZjMDMyY2I5OTQzNTAxOTA4OSByZWxlYXNlMzEtbWFpbnQKKzc2NDcxIGYwMTdhMzQ4NjRlMmJhNTM3MDI5ODY5ZDdhODlmNDdkNmI0YWE5YTggbGVnYWN5LXRydW5rCis3NjQ3MiBhN2ViMWFlNGU5MTkwNGJiZTQ5ZmMzYzRlYWY0ZTFlMGZmNTUyNmQ1IGxlZ2FjeS10cnVuaworNzY0NzMgMzAxN2Q4MmYwNzVhY2RiMTE0YTZjOWViMGU1MTYzODJhZTI0NTU2NyByZWxlYXNlMjYtbWFpbnQKKzc2NDc0IDA4YTBjOTU4OGYxM2YwZjU4NWM3OWQxMWYyMDY2ZTE2NWJhNDJmOWYgcHkzaworNzY0ODMgYjliNjgzZWVkZWUxMTY3OTBjMDFkNzViNTU2MWJmZjAxMDJlODBjNiBsZWdhY3ktdHJ1bmsKKzc2NDg0IDUxMTZlZjc3OWE4MDFmMWNkYjEyYWIyZTc4ZWY2ZTI3NDk5NTBlMTMgcmVsZWFzZTI2LW1haW50Cis3NjQ4NSAzNTdhZDkwYjgxMTRjZjQwZjcyYmM4ODhjZWVjN2E2NGZhODY3Y2ViIHB5M2sKKzc2NDg2IGI3ZmJlZjA3N2VhZTEzY2I1MGJmYWU4OGFiYzk0NmZjYWY5OTQ3ZjQgcmVsZWFzZTMxLW1haW50Cis3NjQ4NyAzOTQ4YjRjNzI5ZDdhZTk0YWQ3NWY2NDFmYzQzZmM3NGI2NjllYmUwIGxlZ2FjeS10cnVuaworNzY0ODggNTE2YzYyMmE0ZjllMTM4MmMyNmQzNzY3YjE3MDlmOGVmMzgzMDFlMSBweTNrCis3NjQ4OSAzMzdlYmI4MjliOGNhMmUzNzcyMTQxYTg0YTNlNzg0YzkyNWYzYjY4IGxlZ2FjeS10cnVuaworNzY0OTAgOWRjYTM4NDc0ODU0OWM4NmQ4NDZkMWU1ZWQzMzBhNjA5YWU1NmVlOCByZWxlYXNlMjYtbWFpbnQKKzc2NDkxIDUzNWUwOGNlNDNmNTc5Y2M2ZTk2NGU3YmVlODBiYTRmZjcxZDU0ZDcgcHkzaworNzY0OTIgNThiMTE5MWU0NTFmYTAwM2ZlMzM5YWUzOTQ1NTIzYzBlZGFiZWQyNiByZWxlYXNlMzEtbWFpbnQKKzc2NDkzIDZmMDQ4YjFlNTI4MDYyMzIzZjllNTFiOTBmNjhmNjQ5NzkyN2EwYjggcmVsZWFzZTMxLW1haW50Cis3NjQ5NCA3NjU5MDlmYzdkZWM5NmUzZWU0ZTExODM5OTgxNjYwNWY3ODU3YTk4IHJlbGVhc2UzMS1tYWludAorNzY0OTUgZmJlZjVmY2NiMGM4OGY5Y2ZiZDA3NTc2NTEwNWUyNDM1OTM1YzAyYiBsZWdhY3ktdHJ1bmsKKzc2NDk2IDgzZDk0ZTcyZjAxY2ZmYTBiMjYxZGQ1NWNmOWFhNDQ0ZWQ4ZmE4MWEgcmVsZWFzZTI2LW1haW50Cis3NjQ5NyBmYjc5OTRiMjkxMDE3M2E0YzdhZTE0MjExYjA3YjA5YWRjYWE5YmYyIHB5M2sKKzc2NDk4IDE3ZTU5MGJlNGM1YWEyYTY2OGVlNDkxYTM3YWIxOTg0ZjRhZWNjZTQgbGVnYWN5LXRydW5rCis3NjQ5OSBjYjNlYWM0MjFjZjk2ZWY4ZTE4Mzc0YTFlMjJmMjE4Y2EyYTIyOWZjIGxlZ2FjeS10cnVuaworNzY1MDAgYjUxZmRhNzU0ZjVhNWUzMTcwNGIzZmUzMTNjOWFmYTc3ZjgyMmZkYyByZWxlYXNlMjYtbWFpbnQKKzc2NTAxIDllNzlhNmFmYTNmNTMxMDBiNmFhNDFhOGFkNjgxZTNmZjAxY2MzNjkgcHkzaworNzY1MDIgMmNkMWZiMTA0MjMzNDgxYTEwZTU3MGY3Njk3Y2FiODQzODk4NzlmNCBsZWdhY3ktdHJ1bmsKKzc2NTAzIDkwMjgyODA0Y2Q1MDE2N2VhMGMyOGI0OWJmYmM5MTQwNjkzZDhjOTkgcHkzaworNzY1MDQgYWQ1MTY5ZTA1ZGMzYjM4YTY5OGZkNjM5NGVhY2FmYzAxNTA3NzRmYyByZWxlYXNlMjYtbWFpbnQKKzc2NTA1IDAxOGIyMGIwMzlhODU0YjVhMTZlY2Y4MGZiNzM1YzdmMTg5ZmJjMWIgcmVsZWFzZTMxLW1haW50Cis3NjUwNyA1ZWEyMjZkMzJmNmQ3N2U1ODE5N2U1NmIzZTNhNWQ2YzZkOThjOWRlIGxlZ2FjeS10cnVuaworNzY1MDggMWQxNTdlMmNlOTQ5M2Y0ODM0ODZmYWQyOTEzMWU2Nzg5NDhmMGNiYSBsZWdhY3ktdHJ1bmsKKzc2NTA5IDg1Y2Q5MzUyNTU2ODdkM2I4MDNmNDk4NjU4NDQzNDUzNjJjNTcyMzQgbGVnYWN5LXRydW5rCis3NjUxMyBjNzczMmY4ODljNDU0OGFlNzBjZjliZDE4OGUzM2FiYjhmZGQzYjc4IHB5M2sKKzc2NTE0IDAyMmNkMGYzYzU1OGVkZGUxNjlmNmJhNTYyYzdkMTQxNTM1NmNiNDMgcHkzaworNzY1MTUgMGRiNjcxNTNkMjVmMTRjM2U5N2M3ZDhiZjEwOTZiODkxYmUwNjg5NyBweTNrCis3NjUxNiAxMzg2ZDBlOWUwZmM3YTRkNjE3ZDgwYjBiZGFiMWI0MGRlNjNkNDc2IHB5M2sKKzc2NTE3IDQxYmQzMTIzODY0ZDg5ZDM1MTFiYmI3NzVlNWZlNDJmZmEzZWVlNmUgbGVnYWN5LXRydW5rCis3NjUxOCBlNWJjMzgyY2NmNzViMWVkOGEzMGNhN2ZiNWQyNDg4ZDIzMTYzMzYxIHB5M2sKKzc2NTE5IDUwODY1NGNlZTEzN2E4ZWQxNTgxNWFlNzMwZWRmODBhMThjYTA0MTAgcmVsZWFzZTMxLW1haW50Cis3NjUyMCBlNjEzM2QxNTRmOTgxOWM2NDlkOGVhZGJjYmZlNDJlNDhjZjIxZTA1IHB5M2sKKzc2NTIxIGZlYTUzMjU4YWI3ZWJlZWQxMDhkYzk3MWVhOTM2MmFhZTRmZmFlZTggcmVsZWFzZTI2LW1haW50Cis3NjUyMiBkZjg2YzQyMGU5N2EwY2MxNTdjNjg3ZThmM2I4MmFjMmMwNWVkN2RlIGxlZ2FjeS10cnVuaworNzY1MjMgODVlMWUxM2I0OThhNzJjMDMyZDgwZDkyZjZhOWZlNTRlYzY4ZjhiYSByZWxlYXNlMzEtbWFpbnQKKzc2NTI0IDJkMzg4ZDFhODNmNDJlMjQ0NmFlZjhlOGNjMWZlNGYyNDQ2OWFkOTcgcHkzaworNzY1MjUgYTFkMTY2YWIxOGM0NGJhNjM2M2FjY2I5ZWYyZmZhNGYwNDRmMzhjMCBweTNrCis3NjUyOSBhNjk4MWY0YTc0YTFkODY2YzA5YjU5ZWU3Y2EwNjAzYzk0ZWMwYWZmIGxlZ2FjeS10cnVuaworNzY1MzAgYTg1NDcxYzQ3NTE0OGRmMDY3N2E5MTIxOWYxNjZjOGI4ZDIxNWQ3NyBweTNrCis3NjUzMSA2MWU2Y2U3MTg1MDA4OWMwZDQ4Mjk2OGQxYWExN2IyODgyNGEyMTIzIGxlZ2FjeS10cnVuaworNzY1MzIgM2Y3MWViZTkxZjkwNTUwNWM5ZTUwZTY1NmI2OTA1ODg1ZjA4YTNjNiBweTNrCis3NjUzNCBjNTQ1OGJhMzg5ZDc2NTlmOGU5MTIxNDVmOGM0NGNlMDdmNTY1NWNhIGxlZ2FjeS10cnVuaworNzY1MzUgN2I3NGFiYjgwMzU2OGRiZTdmNTMwOGY5MzNhYjJjOTQzOWQ1ZDVhNyBsZWdhY3ktdHJ1bmsKKzc2NTM2IDc0MjMwZTVhYjM3MzkwNTU5YzlhNDJmMjJlMzE1N2ZmNzJmODhmYjMgcHkzaworNzY1MzggNDUyMWY1OTk4ZTdjNjJlOTQxMzYwMzk5ODM5ZmU4M2U5ZmNjYWQxMiBsZWdhY3ktdHJ1bmsKKzc2NTQ2IGE4YWI2M2ZkMzA5ODk3YzAwMzVkMmMzNzNjMzZmMDE4N2IxMDgzMzggbGVnYWN5LXRydW5rCis3NjU0NyBjOTM2OTA5MmZlZmNkNDQ1YjljNTYzZGVmZmEyYzFkZjBhNjBlNDI3IHB5M2sKKzc2NTQ4IDEzNzQ4ZjNkZGM3YjU0OWI0ZWI2ZDY2YTY1OTk1MjFkNjY0NGYxOWIgbGVnYWN5LXRydW5rCis3NjU0OSBjN2Q3ZDVjYTg0NDY0ZjJhY2Q3YzA0ZGFkMWZmNTQ4OWE1ZmY5MTM1IHB5M2sKKzc2NTUwIDk4OGRiMGJiZWUzYTNlMGE5NDY2NmVjZDkwNDEwZDVjOTQ5NmM3N2UgbGVnYWN5LXRydW5rCis3NjU1MSA2NzIxZDMzZjNjZDFmM2FjNmRkMTZiZjI0OGNiYWU3MjdmYjc3YmQxIGxlZ2FjeS10cnVuaworNzY1NTEgNTM2NjljYmYwZWQyYTliMjQ5NzMzZWYwNjlkZTE0YjM3YjcxNWViOCByZWxlYXNlMjYtbWFpbnQKKzc2NTUxIDcyNmQxMmRiYTFmNjBlM2RiMTRmZjI0NDA0ZjMxNmNiODBhNThkN2YgcHkzaworNzY1NTIgNGVmN2IzZTJkNmE4YjBiMGE5YjdjOGMyZTk4ZjM0NDllNmUwM2QyZiBweTNrCis3NjU1NCA1MjdiN2MwNzU4NDlmYmY2NDU4N2E1NDZjMzQyNzJkOTliNmU0YzA2IHJlbGVhc2UyNS1tYWludAorNzY1NTUgNTc0ZGQ4YWNhOTE0ZTQ0M2I2Njc1ZWU3YjViNmRlOTA4ODVmMTkzNCByZWxlYXNlMjQtbWFpbnQKKzc2NTU2IDZlNzQwM2FkNTMzNWVhNGQxMmQyNmUxYWVjMDI3NTNhYmU2NWJjZTEgbGVnYWN5LXRydW5rCis3NjU1NyBmZGU1MTMwYmY2Y2RiZDMyYzlmNGFhOGY1M2UyMGFiYmFiMjBmMzgzIHB5M2sKKzc2NTU4IDMzOTg2NjQ4NjMwYmM0YzA5ZjAxZmRhMTc0ZDFiYzAyNDYxZDY4MmIgbGVnYWN5LXRydW5rCis3NjU1OSAxODAyNGQyOTg2OWNiMWY1ZDVlMDkwMWVjMjBhYmJiNDdiZWQ2ZjhkIGxlZ2FjeS10cnVuaworNzY1NjAgYzRjM2ZkNTkzYjBhYzI5NmQzODUyYWE2YzRlMGE1ZDI4N2ZhNGJkNSBweTNrCis3NjU2MSAyOTdkZjc3YmEzOTY0NzA2OTZmYTVlYjI3ZjdmYWIxODNjMTg3NzkxIGxlZ2FjeS10cnVuaworNzY1NjIgNjk2ZDk2MTVhMjM4M2I5NTNiYWE2NzZkMjI0MTE0ZGJhOGIzN2VmNSByZWxlYXNlMjYtbWFpbnQKKzc2NTYzIDViNjA3Y2Q4YzcxYmI1OGRhM2ZjODc5NmU3N2IxMDNjMjBjZmI4M2QgcHkzaworNzY1NjQgM2QxMTU3ODJmZTFiYjA0ZjExYTgzZTM0ZDBhZTQ3MzQzZTI3YTdkMCByZWxlYXNlMzEtbWFpbnQKKzc2NTY1IDBjMTliZTQ1MGU2N2EwMWVjNGEyZDZmMTIzZjdhNGM3YjBlNThlZjkgcmVsZWFzZTI2LW1haW50Cis3NjU2NiBjYjgzNjMwMWRiNjA1N2VkZGNlNDI5YjMyMGEwZDQ0NDcwYzk3M2JhIHB5M2sKKzc2NTY3IDNkNzdkN2MxNmM5MDk3OTZjN2YyYWYzN2ViMWVmYmRmODg2OTc1MjAgcmVsZWFzZTMxLW1haW50Cis3NjU2OCAxNGVlNzViODZhNWYwNDFkNTMxYmNiNDFlNjI5NDdiZGVlY2ZjN2QxIGxlZ2FjeS10cnVuaworNzY1NjkgOTM2YjZmMDY1NTkzOGJlYzA0MjdjMzlhMmYyODY3Mzk2MzNkODgwNyByZWxlYXNlMjYtbWFpbnQKKzc2NTcwIDlmZDhlOTViNGZjZTE3ZGIzNTVlZmZjMTE5ZDI3MThjYzIxODA0M2IgcHkzaworNzY1NzEgODNjNzAyYzE3ZTAyMThkZjk2NTkyZWIyN2E5N2E4YmE2M2M3NDdlMCBsZWdhY3ktdHJ1bmsKKzc2NTcyIDkxNmEzZDM1MDc0MWM3ZjZjZmU4ODYwODgyYjQwOTI5YmRhZDFiMGEgcHkzaworNzY1NzMgMTQ5YzFhN2U3MmMxNTQ3MmYyOWI5MjgwZGNmNzhmYzk1NTMyNGJhMSBweTNrCis3NjU3NCA0YmVkNzk2ZWUwZDc4NjlhZDJmZjAwMTE3ZWVkMWNkOThiM2ExN2RlIHJlbGVhc2UzMS1tYWludAorNzY1NzUgZTA2YzNmNjJmY2M5OGMwMTI2YTIyYTBmZGYxYmI2NmUyYTE1ZDk1YyBsZWdhY3ktdHJ1bmsKKzc2NTc2IDgzMzUyZWQ5MjI5YTNmNjMwYTIzODEyMzA3YzhhOTQ3ZTVmZGE5ZjUgcmVsZWFzZTI2LW1haW50Cis3NjU3NyBiMGZjNTRjNWQyMzRmN2E0OTBmOTU1MDQ5YWY4NzUwNWUyN2IyOTI3IHB5M2sKKzc2NTc4IGYyZTFhYzc1MGYxMTg1MzRlZDAyODU5MTNlZjM1ZDBjMTU1ODk2NDggcmVsZWFzZTMxLW1haW50Cis3NjU4MyA5MzBhZWRlZDkwMGRjOWQ3YTczOTlhM2RkNmYyMTM4N2ZjOWFhZjUyIGxlZ2FjeS10cnVuaworNzY1ODQgOWZiNmQ1NDE0ZGQ4ODJlODM5OTY1NGVlMGUwMDNkN2ExMWFjYzk2OCByZWxlYXNlMjYtbWFpbnQKKzc2NTg1IDBlYWY1YzllZGQ3MjhmMjdjOTg4MjM5Y2JjMjJjOTIzOTkyM2Q4YWIgcHkzaworNzY1ODYgOTE1YTA0NGJlODM0Y2FkMmRkNGM0NWIxMmZjZGM4NWE1MzhkN2QxNyBweTNrCis3NjU4NyBlOGQ1NTBhODlmMGJhMTFhNjUzNWRiNzFhOGYzMzRkY2RiNDVhMGRmIHJlbGVhc2UzMS1tYWludAorNzY1ODggYTk0OTI1NWQ0NTBmYmExNjZkZDBlYWNhYTRhOGUwNWU5ZGM3NmU0NyBsZWdhY3ktdHJ1bmsKKzc2NTg5IDZjZDQ1ZjVjYWI1OGE3M2M5NDM2YjE2NzI5NDgxYzRkNTUwOWYxYjMgcmVsZWFzZTI2LW1haW50Cis3NjU5MCBlOTYwNjlhMTMyN2Y5MzZiNWU3ODFmNDk0MjFmNDBmMTU5NGY2NjE5IHB5M2sKKzc2NTkxIDIxOGE3ZWI0MGQyNmUzODM0YTAyNTlhODE5YzE4YThlMjYzYzhmZDMgbGVnYWN5LXRydW5rCis3NjU5MiBkNTEwMTJmZTA5YjM0MjYyMDZkMDIzYWUzODc1NGM1NGE2NTc1NTFlIHJlbGVhc2UzMS1tYWludAorNzY1OTMgNmJkZWRlMThmYzgwZGY2ZDZiNmY4YjdhOTBlNzVlMDY1YjI5Y2RkYiBweTNrCis3NjU5NCA5ZTUxYTE0OTk4YTJhNjAxYmJjYTM1MzU5Mjg3ODI5NTE3YTYyOTk0IHJlbGVhc2UzMS1tYWludAorNzY1OTUgZjM3ZjZiOWIyMjRiMDc5MDVlZDhlMjhlNWRiZjRjZjY4MDIyMTllMiBweTNrCis3NjU5NiA3NGFjOGMxMjdhNmZmMTZlYTAxYWUxMWVlYTA4OWQ3ZjgzNTZhZDA3IHJlbGVhc2UzMS1tYWludAorNzY1OTkgMWZmMmMzZWRjMTNjZTg3MmZiMWJjZjZmNjBkNWQyMzcxNmU1NjhmMCByZWxlYXNlMjYtbWFpbnQKKzc2NjAwIDI4MTY2NTBkNzY4OGMzMDM4NGY3M2U5ODE1M2U4Nzk2Zjg4MDRjYWEgbGVnYWN5LXRydW5rCis3NjYwMSA4NGUzZDM2ZGE0YzI3MGM2ZWYzNmQzOThkMjg0ODljNDdjODVkODJhIHRhcmVrX3N5c2NvbmZpZworNzY2MDIgMGNmOTkxNThmYTYzNjAwMTcyN2ZmODVkYmMwM2ZkYTFjMDM1MjliMyBsZWdhY3ktdHJ1bmsKKzc2NjAzIDMxNWU2YWU2NGJlZjdhY2Q4NTM5ZTA4NGU3ZjY4NWU0ZGNjNmI1MDAgbGVnYWN5LXRydW5rCis3NjYwNCBmZjJhZWZjOTc4ODFmMjU4NDQzNWZhMTE1ZmI4YzYzNTg0NmMxYzM4IHJlbGVhc2UyNi1tYWludAorNzY2MDUgZTMyMGY4OGE2NWM5YWNiMzg5ZjZiODRkYjk5OTA5MzhlMWNlZDA1YyBsZWdhY3ktdHJ1bmsKKzc2NjA2IGRkYWIzZGE5NDczZGI1ODc2MjUzYzBiMTdmODJkNTYwMmM1ZGIwNjcgcmVsZWFzZTI2LW1haW50Cis3NjYwNyA4ODk2YzQ4NDc0MjNkNThiZGMxYmRkMzNjMWI0MmUxYmRlYzZmYWE2IHB5M2sKKzc2NjA4IDBhNjEzNzk0NGU2MWEwNzY3ZGM2YTVkZmRmY2JlYzc0ZmNhOGE3YTQgcmVsZWFzZTMxLW1haW50Cis3NjYwOSA2NTM2YTFjZDQ3Y2QzZWU4MWY1NzVlMzk3NGY3ODY4MzVhNjNjZjdjIHB5M2sKKzc2NjIzIGQ5OWVmNDY0ZWYzM2ZlZjYzMGNhODcyZmY3Zjg3ZjQ1Mzk3MmU4MmUgbGVnYWN5LXRydW5rCis3NjYyNCA0ZDdjZGY3YTZjNzVkYjVmNzdhZjhiZWZhMDE0ZTJmYjU0ZWYwZTc4IHB5M2sKKzc2NjI1IDFiMmFmY2MzY2NmMzhhODNiNzE1M2FiYThhZWUzY2ZmMDBjZjkxYmQgbGVnYWN5LXRydW5rCis3NjYyNiA1ZDJjOWQ4ODc3ZGRiOWEzYWViMTUxM2RlNmE1MWRkNGY2ODVhMDViIHB5M2sKKzc2NjI3IDI4MDM2OTY3NzYwMmM2YmU2OTM2ZjA4YzQ0NGYxMjU4N2U2YmM4NGUgcmVsZWFzZTMxLW1haW50Cis3NjYyOCBjZjljNjQ5ZGNjNGY0ZjIxOTE0YWE1MDQwOTQyYjg4ZDgwZGQ1MTliIGxlZ2FjeS10cnVuaworNzY2MjkgOGY2ZWVlNDJmODEwZGNkNjMwY2M0Y2NiZjYzOTFiNGRjNWZjYzVjMCBsZWdhY3ktdHJ1bmsKKzc2NjMwIGNiYjZlOTJjMWEwZGQyNTQxOWI0MzUzOWYwODEzMWFkMDNlZjZlNzMgcmVsZWFzZTI2LW1haW50Cis3NjYzMSBkOTM5OGJkZDQxM2EwMzI1MzJhNWY0MzRiYWJmNTc5OTA4ODNhOWQ4IHB5M2sKKzc2NjMyIDBmZjQ3MDM0YzY5MWNhYjNjMjdiOGI2NTU5OGZlMjg0M2RhNGJhOTUgbGVnYWN5LXRydW5rCis3NjYzMyBkNjhhNjAwNTJjNjY1MDY1ZDc1NjAyZTdjMTE3MWRiM2FlYjQyNTM2IHJlbGVhc2UyNi1tYWludAorNzY2MzQgYjQwNTEyY2VjMmQ2YzlmMDM3ZDM3ZWNiZWI3NjdlM2FlYjMzZmIzYiBweTNrCis3NjYzNSBhY2ZkNTYxNWI1MmMxNGM4MmNhMTQ4YzhlMTA2ZGMyNDhmOWU1OGQ1IHJlbGVhc2UzMS1tYWludAorNzY2MzYgYTU0YzE5ODAyYWNjY2FmYTk4ZDFmNTY4NGE4NTNiZDhjNmZkMjRhZSBsZWdhY3ktdHJ1bmsKKzc2NjM3IGU5ZGFjM2VmZjMxNzQzYjUxNTJkODc0ZTA5ZTg1NGFhZGNhN2ExZTcgcHkzaworNzY2NDAgZDdjYzkwMTdhYzRjNjYwMTk1ZTE1NDMzMjI3YmRhMTQxZWUwMDE2ZCBsZWdhY3ktdHJ1bmsKKzc2NjQxIDBhZjgxODFkYTVjZTUxNTE2MThjYTlmNTgzNzFiMjMwZGRjYjllYjYgcHkzaworNzY2NDIgMjYyYTJjZWFmMDVmMWNkZDZlZTg3NmQ1MmU4OGJhMmI1MDVlMmE3ZSBsZWdhY3ktdHJ1bmsKKzc2NjQzIDE1YWMzMTkxZjliZTA1YTQ1YmZlMDdlN2JkNjI1Y2EwYzZmZTQyODMgcHkzaworNzY2NDQgODE4MDkyNWM3NWJhNTE5Y2I0NTUxOTVjZDQ5OWY3OWI5NDA0YjQyZCBsZWdhY3ktdHJ1bmsKKzc2NjQ1IGI3OWQwNDIwYzIwNDBkODJkN2U4NjY3YTk3NjU4MjM3MTY1NGViZjUgcHkzaworNzY2NDYgNWM2ODFlY2M5OTY3YzQxZGY5ZTc3ZWNjNTQ0OTc1MjA1N2Y3ZDFjNSBweTNrCis3NjY0NyBiNjBmMmIyYjljMDQ1NGQzNDFlYWJlMzUxNjMyYmU0YWFlNDBhN2QwIHJlbGVhc2UzMS1tYWludAorNzY2NDggNzVlMWI4YzA1ZjQzZDRhZTQyZDRhZTBmNDkxZjY1NDVjYWNhMWM0MyBsZWdhY3ktdHJ1bmsKKzc2NjQ5IDkxNzA1OGVlYTQ0MDI0OTljZmYyNjQ4MTdkNTNkYTdmZTIxMjBlNDIgcmVsZWFzZTI2LW1haW50Cis3NjY1MCBmZGY3ZDBlYzlkMDQxYjQ1MWM1YjE2MDFkMDhjYjBlYTJmMDU3ZWRlIHB5M2sKKzc2NjUxIGI1Y2QzZDJlYzAyNzZkMjQ5MDM4MjY1YjBiNGQ2ODE2OTBkNjU2NDEgbGVnYWN5LXRydW5rCis3NjY1MiA5Njk1NGU3ZGQ5YjZlMjFjNjhlNTU1MDhmODNhZDAzZjk2NjRiMjY2IHJlbGVhc2UyNi1tYWludAorNzY2NTMgMTE0MzRiNjJkOGNkODA2MmZlZGExNThjZmYzNDgwYjg0YjkzZWM4OSBweTNrCis3NjY0NyBlZjlmNDMyZTRkMzlkY2Q5NDIyY2FhYjM5MTlhNmVmYzQxM2RlMmFiIHJlbGVhc2UzMS1tYWludAorNzY2NTUgMWZhMTg1NDAzMWFhMmE0NjI5NjY2MzgxNTk0NjQ3NTg2Yjg3ODljZCBsZWdhY3ktdHJ1bmsKKzc2NjU2IGYwNDJkYjQzNDYzODM5MmM5Mzk3NjU0NGRhOGI3ZjM1ZWM3ZGVhNmUgcHkzaworNzY2NDcgZDAwZWMyNjBkNjJhYTljOWIxYzQwNDFiMDNlMzc2YzVjMDI0MzY4MCByZWxlYXNlMzEtbWFpbnQKKzc2NjU4IGI4ZTI5MjM2OWVhOGI4MmNmMTllNWMyNjUyZTM4OWVjNjRhY2JkYmEgcmVsZWFzZTMxLW1haW50Cis3NjY1OSBkMzFiMzM1MGFhZGJlNjMwZTBhMjYyN2MxMmIzYzBlYmQzNmY1YjdlIGxlZ2FjeS10cnVuaworNzY2NjAgMWVlMWZhN2JlY2YyYWQyM2VlMjliMjFiNDE1NzNiYzQ4M2YwNzI0MyByZWxlYXNlMjYtbWFpbnQKKzc2NjYxIDU5OGRlOGU2YzQ4YjM0NmMyZTZmZTgzNTY1ZmI0NDcyMDMzZmQzMDUgcHkzaworNzY2NjIgOWRmNGQ1YjUyNjA5Y2ZlNGRiNWEwY2Q3NGJhMjNlZWI0NzgzMDM0YiByZWxlYXNlMzEtbWFpbnQKKzc2NjYzIDczMzEzODg1ODE1NzRlN2ViYjM1MGI0Y2IyNmY1NzEzMTIxZDc0OWUgcHkzaworNzY2NjQgM2VjNmI1MWNkYmRkYmI3MTYzZjNhOWQ2ZmUzNjQxODI2OWEzZTg1MSByZWxlYXNlMzEtbWFpbnQKKzc2NjY1IDA0MGMzOGVkMjI1MTVmOTczNDI4NzE1YTVmMTQ0M2Q3NWE4NzZjZmMgbGVnYWN5LXRydW5rCis3NjY2NiBkNTg3YTRlNWJhNWE1OTQ5MWUyNTAwOWZiMzkxZWMyYTk2MzA3MzdjIHJlbGVhc2UyNi1tYWludAorNzY2NjcgNzNhOTEyNTcwM2MzMmFjMjQ2MTNmYzhmOGQ2MThiYjFhYzBjN2RhNCBweTNrCis3NjY2OCA1NWM4MzJiZDMyMzMzYTFhZjAwMTc5NmU5YzQ1NDA4MWRkZDBiM2ZmIGxlZ2FjeS10cnVuaworNzY2NjkgZDMwODAyOWU5YWQyMmI1YjhmYTQ4OTExNDQ2NDczMTAwNDc3NjNiYyByZWxlYXNlMjYtbWFpbnQKKzc2NjcwIDBmZTg5ODc1ZWRlZjM0NzZkYzI0YWZlMjllYjUzYjA2MGZiMTAwMTMgcHkzaworNzY2NzEgMDE0OGY3NmQ2ZmNkZmQ5ZjI1MTk2YWFhMDMxNGFhOGE3M2QxZGZhNSByZWxlYXNlMzEtbWFpbnQKKzc2NjcyIDZiYjYzYmU3Mjk5Y2I2M2NiZTQyMGQzMDljYjRjZmJlMzFiNDQyMjMgbGVnYWN5LXRydW5rCis3NjY3MyA0ZDc0NDVjYTMwNTE0ZWZmOTVjYTkyNjRiY2M2YzM1ZjdlY2U1OWFmIGxlZ2FjeS10cnVuaworNzY2NzQgYjQxMDdlYjAwYjQyNzFmYjczYTllMWI3MzZkNGYyMzQ2MDk1MDc3OCBsZWdhY3ktdHJ1bmsKKzc2Njc1IGI5ZTlkNTQwYzkwZDMxMjk2YjQ1YjJiZmQxYjU3OTE0NjgwYWI2YjYgbGVnYWN5LXRydW5rCis3NjY3NiAzNmEwZGQyMWM1YjQzZDlhZTg2OWNjM2E1NmQ0MDc3YTAyZGE5YjhlIGxlZ2FjeS10cnVuaworNzY2NzcgZTE5ZGU5NDMzYTRiZmU4Y2ZhMzg2YzFiYjg1ZTA3NGViOWQwNGM1MyBweTNrCis3NjY3OSAyNTUzMmM5OTMyZGZmYTdkOTJlNDM3N2I1MWQ3NWI2ZjliN2ZlNTMyIGxlZ2FjeS10cnVuaworNzY2ODAgZWFiMTIzZGMxMDdmNjRkYzJmZTExZjI3M2RlZjc4YjE4NDQ0ZDQ1NCBweTNrCis3NjY4MSAxYzkyZmJiM2JhZjI2YWM1ZmJlYTVmNDc1NDNhYjg3NTlhMmRkMjI1IHB5M2sKKzc2NjgyIGFkMTQ1NTU4MjI2Yjg3YWVjNzAyZjA5NDhhZTYxMThhMzJmZmQ0MzYgcmVsZWFzZTMxLW1haW50Cis3NjY4MyA2ODU2NTgxN2MxN2Y5NWJlNDQxYWM3YzkwNjJmYzU1YjEyMjgxMjBjIHJlbGVhc2UzMS1tYWludAorNzY2ODQgNmE0OGEwOTFjMGQzODZjOTQ2YWE5NGYwNmQ2YmRkZDhiOWQ3ZjZhYiBsZWdhY3ktdHJ1bmsKKzc2Njg1IDFjMmVjZDU5ZDY1YWY5OWQ3NTA0NTM2ZTZiZjgxNTk3Y2VhMTJlMzYgcmVsZWFzZTI2LW1haW50Cis3NjY4NiA5ZTc1MTYwMWY1MzgyN2UwZWE3ZTMxMzAzZjVmNmFmYzYzOTQwZjBjIHB5M2sKKzc2Njg3IDU2ODYxOGI1ZjZmZDVkNDU1Y2QwOGRmNGEyYjRkZGEwN2YyN2RkZjYgcmVsZWFzZTMxLW1haW50Cis3NjY4OCBhNmIxZTY5NTkzODJlMzVmNDBjMTkxNTk3ZWQzZGJjODI4MTQwNmFhIHB5M2sKKzc2Njg5IGVlYTgwM2QyMzVkMzQxY2M1YmFhYjBhODdkZmM3ZjcwMTM4OGU1ZDMgbGVnYWN5LXRydW5rCis3NjY5MCBiZTFjYmMxNWQ5ZjUxY2NjZmFjY2ZhNzAxNjQyNmE3NzY2YWMxZTg4IGxlZ2FjeS10cnVuaworNzY2OTAgZjliZGJjYzhkMWU4ZTZlYzhjNDU4MDlmMmJkNDAzOGRiYTQ2MmJhMiBweTNrCis3NjY5MSA2MDdmNTE4YmQzY2ZiODBiMGZkNmFjNzQ3NmJlNWExNTgzOWQwNjk1IGxlZ2FjeS10cnVuaworNzY2OTEgYmFjOGVhMmI2ZGEzNTg4NGVhZTlhZmMxMjliN2VhMmMxOTZlYmRmOSBweTNrCis3NjY5MiA4OWY2YTc1NDYyYjI3ZWRiMTUxMjBhODgwZmI2YTAwOTUzMGY3Y2MyIGxlZ2FjeS10cnVuaworNzY2OTMgNmVmNGJjYzRhNDUwMjE2NmI2YzgzNGIyYjZiMjlhMWVlMzExNWM3NiBweTNrCis3NjY5NCA1NmZjZTE4OGM2YmUwN2VmZjk0OGJhNTY1YzEzMzZmNWNiMDNlZWIwIHBlcC0wMzgzCis3NjY5NSBjMGY4ZTRhMjNkZGY0Yjk0OTUyNGE4NTVkM2JhMzIyYjhiMzYyMGRhIHBlcC0wMzgzCis3NjY5NiA2ODU1MjJjNmYzMGZiZTFiMTY1M2ZhM2M0MmQ3Y2RiZDVkMThlYTI1IHBlcC0wMzg0Cis3NjY5NyA5YzU5N2IwYTZhOWI3MWY4ODAzZjY0ZTM3OGJkYWY0ZDQ3NzBmY2FmIGxlZ2FjeS10cnVuaworNzY2OTggMzVmM2ExOWM0MjY1YTc2YzgyYTliZmZmMGM5ZmU3ZmJhNWI0ODI2NiBweTNrCis3NjY5OSBmNWE0NDdiM2YyNmViZjQ5NWJkNTcxY2Y3ZThmNTlhNzk5MDU5NjgxIHJlbGVhc2UzMS1tYWludAorNzY3MDEgNDUwODE4NjFlZjc0YWZmODY4ZjAxZTY5YmE2YThiYWZjNzQ1N2ExZSBsZWdhY3ktdHJ1bmsKKzc2NzAyIDI1YWVkZTYyZmMxNzJhNjY5OGVjMDM2NjJkNDI4YzgyYzgxZjJkZDIgbGVnYWN5LXRydW5rCis3NjcwMyAyNzUwOTczZTM4OTNjNDNiYThiMWNiNGEwNWRlMGUzYmMzZTA0YjNkIHJlbGVhc2UyNi1tYWludAorNzY3MDQgOTg4NzljOGQ1M2YxNjVkYzhjODAwZDhkODRjZGZlMTYwM2Y5ZGI1ZiBsZWdhY3ktdHJ1bmsKKzc2NzA1IDUxYzVjOTEyZWMzZWI0MmUxNjliMDU4ZmQ1NDJhZmM4MWY4NTgzNTYgcmVsZWFzZTI2LW1haW50Cis3NjcwNiBkOWI0ZjZlYTNlMzk3NWIzYjQ5ZDg1ZWZlNjQ2OGNiZjRmYTY4ZDE4IHB5M2sKKzc2NzA3IDc2NDdiMTRlZmU3MWZhOTM2NWZiNDJlMDkxY2VhZWE5YTgzNDJhNDcgcmVsZWFzZTMxLW1haW50Cis3NjcwOCBkYjI4YWViMmZiN2E3YmJhMjJjNmI2YzZlMTg5MjkzMDYyMjkzZWM1IGxlZ2FjeS10cnVuaworNzY3MDkgNDA3NDY5NTZiMzc5MmIzNTc4NTNjMjM0ODIyMmYyYjcxMmZhZDlhOSByZWxlYXNlMjYtbWFpbnQKKzc2NzEwIDY4M2Q1Yzk3ZTQ3NmRlNDk5ZmVjZjg2ZjkwNGI0ODY1YzQ5MmZhZWIgcHkzaworNzY3MTEgNmVmYjQ2YzJiM2MzYWRkYWUyYTViMzRiOTA4YmJiZWJhZDhiODhmZSByZWxlYXNlMzEtbWFpbnQKKzc2NzEyIDI0ZmZiMGEzYWU0YmE5MzQ2ODdkZmNjNzBlMDAzNDc0NDFjZjc3YmUgbGVnYWN5LXRydW5rCis3NjcxMyA0MGMzNjJhNThlN2YwYWExMDQ3NWFkMTZmYmUzOGVjZjY1MjVlMDFlIHB5M2sKKzc2NzE0IGNmMGM2OWJlMDExYTU4N2NjMWNhNzdkYzU0MDc3MDM5MjczYmYxZWUgcmVsZWFzZTMxLW1haW50Cis3NjcxNSA4M2E3NjE5Mzk5NzUzM2EyNzRkM2I5MzBiNzU4NjgwZjMxMjc3ZDgyIHJlbGVhc2UyNi1tYWludAorNzY3MTYgODNjMmJmMzE5MWQ4NWE0OGEwMWE4NGU4NjE4NDI5ZWE2ZjdjZTI0YyBsZWdhY3ktdHJ1bmsKKzc2NzE3IDViODY4M2E5NWVhZWM2NWYwMzllNzhjZDE2NTMyZGU5ZDA1M2Q2M2QgcHkzaworNzY3MTggZTcyOGFlODlhZTY5ZDg4Yzg1ZDMwOTY5NGJkMDU2ZmMyYmQzZjY2YSBsZWdhY3ktdHJ1bmsKKzc2NzE5IDVlOGI3NDQ5Zjk2MTVjMzA3ZDVmYjIxY2I2ZjFmMTJkNjBiMmFmYjQgcHkzaworNzY3MjAgNmM2NDI1NTYzOTE4MjgyOGI2NjBmYWExM2ViMDIxN2M0MGZkODcxNiBsZWdhY3ktdHJ1bmsKKzc2NzIxIDJjNTJkNGQzZTU0YWVkNWM0NzZiYTE5ZmU0NzAyYjliYWI5MzY4OWQgcHkzaworNzY3MjMgZTYzNDcwMzhkZjk3NmZjYzQzYTA4ZDcwZTdhOGFjZjJlZjVlM2VhMCBweTNrCis3NjcyNCBjY2M1NDA2Y2IzODFkZmI5NTVmNmJmZGUyYjdiZjA4MDVmNjU2NTJjIHJlbGVhc2UzMS1tYWludAorNzY3MjUgNzM4YjM5YjEyZGM4ZjA1MDU1ZGJhYzQzYzllNzA0NTIzM2ViOWE2NSBweTNrCis3NjcyNiBlZmVhYmVlNmUwNjFhYzQ5OTNhNDFjYjc3YTA1YWU2NTM2ZDM3ZjAyIGxlZ2FjeS10cnVuaworNzY3MjcgNzUwZTc1ZDkzMDIxNTU1MGRkZmNhN2EyNjUxYzU4ODk3M2FmZGUwZSBsZWdhY3ktdHJ1bmsKKzc2NzI4IDBhNzZhYjNhNjczYzZmZDZlMjBjOTM0NWIxMzEwMGE3N2MwODMzNDAgcHkzaworNzY3MjkgODE2MzAzYTA3NzYyNzc4ZmQxMmU1ZDA5MGZkZGY5YjQ2MWQ2NThjMSBweTNrCis3NjczMCAyNzNlZjA5ZmU4MDQ4ZTBkNDI5OTEyYzFkMGQxNzMwYTMzMjE3ZjJiIHB5M2sKKzc2NzMxIDhiOGFlZTIxZDg1ZTZhOTJkZTFmMGQzM2VjZmUxOWQxOWYyOGE4NWUgcHkzaworNzY3MzIgODk3NGFiNjg1YmFlMDY0MGUwY2Q1NjFmZGViY2ZjNTQwM2Q1ZTYyNCBweTNrCis3NjczMyAxNjY5MWJjOGIxODk0YzQ4NGQ3MmI4ZmE0ODBjYzg2ZDdiMTg5ZTU4IGxlZ2FjeS10cnVuaworNzY3MzQgYmM3MTZkOGY0MzQ1ZDZhNDM5ZjI2NmY2ODNjNWEyNDg0ZTk4Mzk2MSByZWxlYXNlMzEtbWFpbnQKKzc2NzM1IGI1YTRhY2JlYWFhMTYxYWVmMjUwMjUwN2U2ZTliNTMzZWM2ZDMxYzQgcmVsZWFzZTI2LW1haW50Cis3NjczNiA1N2FlNWQ0NGU3MzFmYmMyNDRhNGQ1ZTg1Y2ZkMGRiMDgzYTlhZTgyIGxlZ2FjeS10cnVuaworNzY3MzcgODI3NmQwMGQzMTAwZjVhZjY2MTVjNTIxYzE5ZDI2ZjE2YzY3YzMxOCBsZWdhY3ktdHJ1bmsKKzc2NzM4IDhiNjY4OWMwZTVhNmU2YzU4YjlmZjUzZGQ4M2VhNmVkMTVjZGJkMTAgbGVnYWN5LXRydW5rCis3NjczOSBiMjdkOTQ2Mzg5ZTc2N2U2NDY3MWU1YTUwNmVlMDJiZDMwYWYzNTg4IHJlbGVhc2UyNi1tYWludAorNzY3NDAgNjMxNjljYjllNDlhMDFmMTFjNjRhODUzNjU4NWZmNmE5NjA4NDE1YSBsZWdhY3ktdHJ1bmsKKzc2NzQxIDkyZjdjNGVlNmFhZGZjOGNmMTMwNDcxMDYxMmM3NzBiNGUyNmE0YTAgcHkzaworNzY3NDIgNzUyZTg2MDhlMTMxYjcxZGEyZmQxZmFiOWY3NGRjYzJmZDYwZTFlNSByZWxlYXNlMjYtbWFpbnQKKzc2NzQzIGE0NDA5Y2Y2YjU1NjRhNmJlM2RiNGY0OWUwZmQyMmE0MWFjMjdiZTIgcmVsZWFzZTMxLW1haW50Cis3Njc0NiA5MjExYTVkN2QwYjQyNDY4NjE1ZTcyNzI0ZTM0NzhkOWY2NGRlYzQ0IGxlZ2FjeS10cnVuaworNzY3NDcgMzc0ZDRlOWFhYjA1MmI1ZmY5YzU3ODYwMGY5NmNmNGRlNjg4YzljZCByZWxlYXNlMjYtbWFpbnQKKzc2NzQ4IDZmOWFkMDQxOGY3MGYxOTY3OTlhYTAzMjBiNDkxNWUzNTJjNWRlNjcgcHkzaworNzY3NDkgNGVlMjI2ODkwYjU5OTA5ZDc4YzA5NzA5ZGMyOTI3MTljMWI3M2UyOCByZWxlYXNlMzEtbWFpbnQKKzc2NzUwIGQyOGZiYWMzN2UyMDJmNTdmYzE4Mjc0ZGU2YzM4MTc0Nzg5YWQwMjEgbGVnYWN5LXRydW5rCis3Njc1MSBlMjlhNDUzMzFkZWE4YjU0OGIzZWQzNjJlZTc4ZWExODcwMzBhMTJjIHJlbGVhc2UyNi1tYWludAorNzY3NTIgNjZmYjFlMjc2MmQzNDIzZDdmM2E5NmE3YmI4ZDUxYTc4NjhkNmJlNSBweTNrCis3Njc1MyA3NTYyZTM3NmQ5YjU1MWU3YTNkNTBmODM3MDY3OWU3MDBkZWVkYzE2IHJlbGVhc2UzMS1tYWludAorNzY3NTQgYWU5Mzk2MjYwODM1OWVkYmMyOTMxZDhjYjFkYzQ3Nzk5OGZjNDhlOCBsZWdhY3ktdHJ1bmsKKzc2NzU0IGE2YmYwN2ZmZjZmY2JmZThkNDkwNTE4Njc2ZDhiYmY3MmFiYjIyZjYgcmVsZWFzZTI0LW1haW50Cis3Njc1NCAwY2Q3YWM4YzZiYjNiYmNkZTAyZGQ3MGJhOWUyYzk1OWRlZDZlNzI5IHJlbGVhc2UyNi1tYWludAorNzY3NTQgMTliNGUxZjY0NDNlMTk5OTMzMGJiYTMwYmZmZTA1OTRlY2RiMTM1YiByZWxlYXNlMjUtbWFpbnQKKzc2NzU0IDliNmIxYzFjMWIzMzBmMTIxOTE0NGJjNTRiOWMzYzY3MzgyOGZlNDAgcHkzaworNzY3NTUgY2IyMmVhZWU4NmM5MGMwZmEzMjI5ZmRkYmUwYjUxNjBkNGRlOTI4NSBsZWdhY3ktdHJ1bmsKKzc2NzU2IDliODNiZmVmYzVlN2Y2ZmFlZTQ4NTNhZjljZjRhMjlmYWUzMTZkZTYgcmVsZWFzZTI0LW1haW50Cis3Njc1NiBiYmFiNjAyZGExMTQ5YTY5NzJiNzU2NjdmOTE1MGM0MTM5MzVjM2MwIHJlbGVhc2UyNi1tYWludAorNzY3NTYgZTcwMDRkYTI5ZjUxMmRkYjQ2M2JkNDcxZTdkYWUxNzg3YTdkOTU0MSByZWxlYXNlMjUtbWFpbnQKKzc2NzU2IDM3OGJiNzA1YmU5MDRiYjJkZDhkY2E0YjdmNDI0ZmRmNTJlYTY1OTEgcHkzaworNzY3NTcgN2NiNzNlN2MxNzZkMzBjZDdiNzM5ZDljYTliZTJlNDY1OWMwMTAwZCBweTNrCis3Njc1OCAxNmNkMjFiYTI2OGE0OTY5ZGZhY2M2NzIwNDJhNGU5MTY5MmQ0ZjcxIHJlbGVhc2UzMS1tYWludAorNzY3NTkgYWVlOGViN2Y1ZjAyMWU2MjhhMjBiNTdjYzUxZmM3ZDdiZTRlY2Q5NSByZWxlYXNlMjYtbWFpbnQKKzc2NzYxIDI1NmU5ZjAwZDA2MWVmOGQ1NDY0ZTcwY2E5MWU4ZTY0YzNkODNlZWMgcmVsZWFzZTI2LW1haW50Cis3Njc2MiA0ZDUxYWE1NzJlOGM5YWJlOWY5ZTZiOTY1ZmI2ZjQzMmE5N2VjMjQ2IHJlbGVhc2UzMS1tYWludAorNzY3NjMgMmZmZDE5YTIyNGQ0MWZhNDYzMGU0NDNlYWRiNTRhODRhZjdlYmVhYiBsZWdhY3ktdHJ1bmsKKzc2NzY0IGQ5Nzg1OTA5YzNhNzJiNzU2ZGVmMjY5NmQ4MWYxNjBkNGJjMTNjMDggcHkzaworNzY3NjUgNzllMGRiYjZjNGI4OGM4NjQxN2ZlNjk5ZGRmZmNiNzdkN2E4ZDdhMiByZWxlYXNlMzEtbWFpbnQKKzc2NzY2IDg2OTBhN2VmZjgyYTFlM2Q4YWQ1N2QwZDBkN2MxYjg1Yjg2MzlkODAgcmVsZWFzZTI2LW1haW50Cis3Njc3MCBhZDkxN2I4ZmQ2NGNmNjAxNDcyMTNjZDg3OGVlNWVlM2UxODhiOGRmIHB5M2sKKzc2NzcxIGI3ZWM0YWZjZmMzZjBiZGY4ODBiMzViMWJmMzUzZTlkMjI4NGY2MzcgcHkzaworNzY3NzIgNzNhNmI5YjA1NDNmNGM4MDEzMTUyNTJmMGUyMDkxN2UwMTMxNDNlYiByZWxlYXNlMzEtbWFpbnQKKzc2NzczIDgwNDg1NjllYjUzZjVmNzFlMTI1ZTgyN2E4Y2NiMTQ0NTQxM2M4YWYgcHkzaworNzY3NzQgMjBiN2RlYjUzZDRlNThiMjk0ZDY4ZjllNmQ4ZTVmNWU2ZWFlOWMzMCBsZWdhY3ktdHJ1bmsKKzc2Nzc1IDJiOTM0ZDQ2Njk5M2RkMWI3MWM4Y2FhMzA5NDEyZjg3OTNkYWVlNzUgcmVsZWFzZTI2LW1haW50Cis3Njc3NiAwODdmZTVmYTExM2MxZmQxMGQ5YjU0Nzc5YmIzYWE4YWE5MGM2NDczIHB5M2sKKzc2Nzc3IGQ4YzVlMzg1MTViNmNkYzUyMzA5NTVjYjE5MDAyOTIwNWNmYmNhMTUgcHkzaworNzY3NzggMTU1OGRjNjlhYWNmMjZkODYwZWI3ZWZjNmNmNjMzNjZjOWU1N2I1OCByZWxlYXNlMzEtbWFpbnQKKzc2Nzc5IGE3NjlhOWIzNGZiYzJjNWFjYTJhYzc5ZGM2Y2VmYzAwYzVkYzJkOGEgcHkzaworNzY3ODAgNDkzNzgwZWEzNWNmODIxYWE3YTgzNGQyNTA2MWMxMTViZDhkNWE2NCBsZWdhY3ktdHJ1bmsKKzc2NzgxIGVkMmI2ODgzZmM5NjczNGIxYmMxNTM3ZjMzMmVjZjBjY2YxYzYzOTkgcmVsZWFzZTI2LW1haW50Cis3Njc4MiA0NmMyMjk3NDJjNjQyMTNmZjBkOGI0ZDc0ZDBhMjk0ZmQ5ZDQ3YTU4IHB5M2sKKzc2NzgzIDhjNDdkN2QyYTAyM2I1MTkxMmNlOWYyZGRkNGM4M2NhYzczZGQ5ODIgcmVsZWFzZTMxLW1haW50Cis3Njc4NSAxMTQyMzcxOWJhYmI0MDQ1ZThlMGNlNGFkY2Y0NjJjY2EzYWNjZDVjIGxlZ2FjeS10cnVuaworNzY3ODYgNDY0ODUxYmYyMmZkZWI1MDA3N2UxNGEwYWUyOGYzZmVjMzUyZGQxMCByZWxlYXNlMjYtbWFpbnQKKzc2Nzg3IDJmZGNkNzNjMzJhYWJiOTI2ZTUwOWZmMzIxMjA4M2FjMDdlZWY3Y2EgcHkzaworNzY3ODggNTQ4MzM1Y2IwMDdiMWZlODc0ZmVlZTBmMjRkYzMxNGYxNjllODY4OCBweTNrCis3Njc4OSA0YTllNDNhM2I5ODUzM2FhNzA1MGMxMjRkMzk4NzBiMGE4MWFjZDVhIHB5M2sKKzc2NzkwIGM5MTVmZjU5MWEyZjMzNDFkOGM4MmJhYWJiZGEwY2U2Y2Q0MjRjZGMgcmVsZWFzZTMxLW1haW50Cis3Njc5MSAxNmNlZGRlOWFmMDA5MDRjNDUwZTJkMGI5YWJiM2IxYWE4MmIxNTAzIGxlZ2FjeS10cnVuaworNzY3OTIgYzcwODdlYTFjMjFkZGQzYTNlZDYxMWUxYjk0NWM4OTMyOTBhZjcwOSByZWxlYXNlMjYtbWFpbnQKKzc2NzkzIGU3Yzk0Y2I3MjY3ODk5MWJhYjdiYTUyNWMwYjhkYmIwMzU5MTM2NTkgcHkzaworNzY3OTQgY2IyNjI5OWUwZTUyN2I4OGQ1ZDNkNDk2OTVlYzQzODg2YjY1MGViYSBsZWdhY3ktdHJ1bmsKKzc2Nzk1IGMyZTk0ZWYwZDdlNTg1NzcyZmViNmY4NWRiMzJjZDZhMzljNzE0MDQgcHkzaworNzY3OTYgMGRiZWNjZDdlMGU2ZmFlZGQxZmQyYjY2N2U3MWVlZTBkYjYyYzNiMCByZWxlYXNlMjYtbWFpbnQKKzc2Nzk3IDQyZTMxMWE0NzZlODBiMTA0YmYxNjUxNDE2NWVhZTUwMzJmMDI3Y2MgcHkzaworNzY3OTggMjE1ZGRmZjE5OWMxYjY3Y2U3ODJlYzc0NmUxOTE2NDZmODlkMTU0ZCBsZWdhY3ktdHJ1bmsKKzc2Nzk5IDI3YzYzZDY1MjYyMDlhN2I4MmI4MDM1MGUzZGY5NWFiODRlYzY3MzYgbGVnYWN5LXRydW5rCis3NjgwMCAxMzkyZTM2YWYxYjI2YTIzYjA3ZTBjMWNkOWFmYjYyY2I3YjJlNmRjIHB5M2sKKzc2ODAxIDYwNTI3NTFhMDRjODIzMjcyYWVhM2VmMTliZGFhODNhNmQxZGMwMTIgcmVsZWFzZTI2LW1haW50Cis3NjgwMiBhNzRlMDRmYzkzZWI5ZGNmY2QzMzAyNTk5MzBkMGNjNjg1N2M0NTc1IHJlbGVhc2UzMS1tYWludAorNzY4MDMgNjU0YzY4NTM2OTc1MTQ2NTI0YWJhNGM1ZWFlOTVkMWI0MmRjNmNlMSByZWxlYXNlMjYtbWFpbnQKKzc2ODA0IDdjY2QyMjhiODk1Y2M5ZjA4ZGI1NWMyZTBkYzRiOWY3OGFiNzUwYjEgbGVnYWN5LXRydW5rCis3NjgwNSA1NGY4NDU1OGFkMmIyZjY3MTEwNzc0NjQzMWZlZDJjZjBhMGQ2ZDA5IGxlZ2FjeS10cnVuaworNzY4MDYgMjRhOGEyOWM4YTRhMDQ2ZTY0NGYzZmEzZmIwNmMzYTIyYzE0ZDlhNSBweTNrCis3NjgwNyAzYTdkNTQwNDNhYmE4ZWY5ODA0NjlkZjI5MzE0ODFiNDllNjZlOTFmIGxlZ2FjeS10cnVuaworNzY4MDggMTIwNjNhN2I2YTJhMjllZGJiZDg4ZTY4MzE1MDAzNjljNmI0OGQxZiBweTNrCis3NjgwOSAzNWRmNjc3OTg5Y2I5NTUxMDRhMmIxMGJiZjE4OGUzOTY5NWIyODg4IHJlbGVhc2UzMS1tYWludAorNzY4MTAgZmM3MGM4ZDc0M2RiNzJlNmE5ZDJiOGY0ODVmZmU4MWNjODAzMmRiNSBweTNrCis3NjgxMSA2MjEwNmI2ZjU1OTZjODkzYzc2YTQ4NzdjOWM0YWU0ZTlhMjRiNzI4IHJlbGVhc2UzMS1tYWludAorNzY4MTIgN2M0MjEyNDRlNmVhOGYwZDMyM2JkMDM1NWY0ZjVkOTU5MmFkNWQ1YSBweTNrCis3NjgxMyA1MzZlNDZlZDEwYWNmNDM2MjAwN2FmMGNmMjA4ZjZmMWRiZjgzYzY2IGxlZ2FjeS10cnVuaworNzY4MTQgYjNhMzY0MTkyYzBhZDk3YzhjMzAwNjQyODhlYzAxZTMwNzdlNmFhNCByZWxlYXNlMzEtbWFpbnQKKzc2ODE1IGJjOTM0MDk4Y2FhMTAxZTE4MTk5OTVlMzcxZTI1N2EzMmE3M2NhMmIgcHkzaworNzY4MTYgMDU2ZmZiOGUxN2IzZjU0ZjA5NjA2YTNmZjAzNzYyYTczYzVkMjI2MSByZWxlYXNlMjYtbWFpbnQKKzc2ODE3IGRkNTM5MWQ0YmI2ODBkNGY4NDQ5YzgwZDJjZDlkYTk5ODAyNmZlNjEgcmVsZWFzZTMxLW1haW50Cis3NjgxOCA2YjI4NTIyMTk3ZGIxMGU0NGQ4Y2U5NjNkOThlMzgwODdjMTk3MzA4IHJlbGVhc2UzMS1tYWludAorNzY4MTkgOWYzNTdjOTZmMjQ2ZTg4NDA1NDI3ODZkY2YwZTRmY2EwYTY1ZTQxZiBsZWdhY3ktdHJ1bmsKKzc2ODIwIDcyZWYzZGI1YzZiMzdiMjgxNDdjMTYwZDA0ZDU4MTRhMzc2ZmRhNmEgcHkzaworNzY4MjEgZTVmMjAxM2IyOWExOTdlMWNmOGIzYWRmM2YxMDY5ZWIyMzVhNWYyOCByZWxlYXNlMzEtbWFpbnQKKzc2ODIyIDZlMTMxZTA3MTMxMDVkMDliYWQzNDRiOGMxNWZlY2E3MDkwNDY4ZGEgbGVnYWN5LXRydW5rCis3NjgyMyBkYTFmY2U1NDA4ODVlMWQ3NWFkNmFjY2E0NzU2MjI0ZTI0ZGQxOGZjIHB5M2sKKzc2ODI0IDQwZjNiOGI4M2NjNmEzZTljYmE1ZWI0ZGQzNmJiNTgyNzNlNDA2NzUgbGVnYWN5LXRydW5rCis3NjgyNSA3NzA1YWMyMThjODcwYjUxNWYzYTQwY2FiOTQ4NzhjYTVlZjNkMzhiIHB5M2sKKzc2ODI2IGMwYzg2MWQzOGM0ZmRhZWY2YmFkOGVjNGExMDQ4NDU5NDUyMTFkNDEgbGVnYWN5LXRydW5rCis3NjgyNyAzNTQ2Nzc5YjIxYzcwODNlNTI4NGQ0OTdhYTVkOTlmM2FjZGViNmIyIHJlbGVhc2UyNi1tYWludAorNzY4MjggNjgyNDllZDg4MDllODEzM2M4M2E0NmNiZTk3ZGRhMTJhYjRhNGE3MCBweTNrCis3NjgyOSBiYzU1ZjVkNTBkZWM4NzBhOTQ2NTcwZDgyM2M2NmEwMTNjNjU5NDAzIHJlbGVhc2UzMS1tYWludAorNzY4MzAgNTEwM2Y2OGNjYTY5MDk1ZTcwY2Q3MzY0MmIwMmQ4ZDQxYjczMWRjMiBsZWdhY3ktdHJ1bmsKKzc2ODMxIDJiOGY0ODViMGQwMzk3ZTEyNTAyYTNjOTMwNjMyMzcwYmE3Y2ZmNjYgbGVnYWN5LXRydW5rCis3NjgzMiA3NmJkNWJkY2VjY2RmZDk2NmVjMmI4YjBjMzY3NmYxYjEwNWJmNjFhIHB5M2sKKzc2ODMzIGQyZTE0NjUzYTQzYzk5NWM3ZjYyMmM0MTU4NWRlZWZlYzgyOTNlZTIgcmVsZWFzZTI2LW1haW50Cis3NjgzNCBkODk5ZjI4ZGJiOGU5N2MyMTA5NjJmODAwZjkzOTY0MDYyNWMzNTkyIHB5M2sKKzc2ODM1IDBlZWVhNzY1NmMyMmYwMzBlZDAxZDVmMDNjZGVhOTYyMGYyOGQ2NWUgcmVsZWFzZTMxLW1haW50Cis3NjgzNiA0OWM2OGEyYjA1ODUyYzU0OTE1Y2FiYzkyN2VhODNjNDc0ZGVhM2RmIHB5M2sKKzc2ODM3IGJjMGE2ZTRjZTFiMGJiZjFlMzhkNjZkMzkwMmExNWI3YmNiMmFlYmEgcmVsZWFzZTI2LW1haW50Cis3NjgzOCA5MTllMjE0MjcyNmVmZTJiYTBiZDE1NTQ0MDQ3ODgwZDJhN2I3YTAwIHJlbGVhc2UzMS1tYWludAorNzY4NDAgZmE0ZjIzYjE4MmRlNjc5MWFiZmY4N2E1NjM0MzdiMzY2MDAyNmUyZiBsZWdhY3ktdHJ1bmsKKzc2ODQyIDE1OTJlODk1MWIyYmQzNTQ0NDRiOTg4MGUyMzZjNzIwNGJkZWM4ZjIgcmVsZWFzZTI2LW1haW50Cis3Njg0MyAzMjllZjI5NGNjMmRiNTZkNDJkODJkODIwOWM3MTZiMjA2NjRmNzhiIHB5M2sKKzc2ODQ0IGU5Y2ViYmU5ZGU1YzMxYWY5MzBjMGMxZjhjYjY4ZGE2MmE0ZDE5NzEgcmVsZWFzZTMxLW1haW50Cis3Njg0NSA5NjBlOWU4NGNhNTk3NTVjNmI1ZGRhZDJlNjlkZTM3MDIxNDY3NGMxIHB5M2sKKzc2ODQ2IDdjM2MwMGU3NmMyNDg4YjY2ZTlkYzIxNTNkZTc0ODEyYWE3MzZkM2UgcmVsZWFzZTMxLW1haW50Cis3Njg0NyA2NjY0MGZjNjA3Y2EwNjM1NTg4ZDYwNTJmOWJjYTY1MDljYmI3MjEyIGxlZ2FjeS10cnVuaworNzY4NDggZDg2MjAwMGYxYjAxNTUzZjk3ZTI2NzZkYzYwNDMwODM4ZTBhYWY3MCByZWxlYXNlMjYtbWFpbnQKKzc2ODQ5IDI0YjY4NTMxODYzM2IzYTNlMjkzNGViMTBlZDJhOGEzOGRhM2FiOTggbGVnYWN5LXRydW5rCis3Njg1MCBlNTBlNDlkNjFmZWE1ZjM0MzkwYjJiOTk3Zjg0OWJmYWNjYjIyYzliIHB5M2sKKzc2ODUxIGE5YjZmMjdkMWUyOTBlYzk3Y2MxNWQ1OWUxZjU0YmM2Y2VjYWMzZDEgbGVnYWN5LXRydW5rCis3Njg1MiBjMmU0Y2ZiYjM5OGNiODVmMTFiMzNmY2VmNDg1Yzg1M2IxODU4MTZiIGxlZ2FjeS10cnVuaworNzY4NTMgOTQyODIzZGRkODE4ZmMzODkyYjE4ODBjYTM3M2EwZTQzNmZkOTBkMiByZWxlYXNlMjYtbWFpbnQKKzc2ODU0IDk3YWJkN2FhYmFkYzI4ZTI4ODM0ZGI2M2VmNDhlMzFmYTVhYjBhMmYgcmVsZWFzZTI2LW1haW50Cis3Njg1NSA3ZWIwNTBjMGU2NTQ2N2MwZDFlZmEwOTEzOTkzOGVkZjliMDBhYjQ5IHB5M2sKKzc2ODU2IDJiZDBmMzkxNTkzODQwYzc2MWFiYWI5OWY5NjAxOThmN2Y0ZGQyNjYgbGVnYWN5LXRydW5rCis3Njg1NyA5ZmUxNWMxZjk5Y2M5YjBjOWYyZWNhYjBmMTcyMzYwYzY5N2QzYTg4IHB5M2sKKzc2ODU4IDRmY2JlMGVhOWIzMTc4MTM4NWM1NzY1NDc0ODc5ZDViMmYzMWE1ODMgcmVsZWFzZTI2LW1haW50Cis3Njg1OSBiZjY5YzNmMmI3NzhlNDAzYzQ1ZTU0ODNhZjZiNGI5ZmQ1NmFlODNmIHJlbGVhc2UzMS1tYWludAorNzY4NjEgYjIwNmFkOGNmNWJmMmU0NDc1ZTU2ZjFmYzg5Zjc3M2U2YmE0OTk5YyBsZWdhY3ktdHJ1bmsKKzc2ODYyIDIyYTFlYTkwZmFhNjE3NzM3NjY5OWE0NDQ2MzhkZmRjNzZiMTg4YzcgcmVsZWFzZTI2LW1haW50Cis3Njg2MyBiNDVjYTExYjlhM2VjNzQ4ZWE0ZGMwYjc1NGZiNWY5MjQwOTQ0ZDIxIHB5M2sKKzc2ODY0IDU0YTUwMmRiM2I4Y2UwZDkzZGNmYTZmMzY4OTdiYzFiNDc2NzkyOGEgcmVsZWFzZTMxLW1haW50Cis3Njg2NSBiMzU2ZWQ5NTY0ZTY4YzJjMjIwZDhlMjBhYTdkMWM2NGI2YTcxNTJkIGxlZ2FjeS10cnVuaworNzY4NjYgMGExYzM5YzVmMWI5YzllNDMxMDBiZTJjZWJiMjQ2YWMyZjMwYTI3MyByZWxlYXNlMjYtbWFpbnQKKzc2ODY3IGIxODk2NjIwYzI5NmQyYmYyY2FmOGM3NzM0ZWVhN2ZhNGJmNGUyYTUgcHkzaworNzY4NjggYjEzZjcxNTM5YWFjMDBhNmRjYTRiODFkOWM2ZGJlYTJjMTdlYzNjZCByZWxlYXNlMzEtbWFpbnQKKzc2ODY5IDYyYWZjZmEzZmUxODhiN2I3YTQ4ZjM1ODU2Y2FmNjFkNzU1YzA4NTggbGVnYWN5LXRydW5rCis3Njg3MCBiYjY2NGQyMTkzOWI2ODhkZmFmZDQwYjQ5OTZjNTZhMmJhMGFjMzQ5IHRhcmVrX3N5c2NvbmZpZworNzY4NzQgZTI2ZWU4ZGRkMjlkMTNjNzA5YTE3YmFkZTkwYzk2OTQ1ODU0ZDQ2OCByZWxlYXNlMjYtbWFpbnQKKzc2ODc1IDUxZDM3ZWY0M2UxZTlkZTU4MTNjNGYzOGI2MjRkMzUwZjBhYTBhNTkgcHkzaworNzY4NzYgMGQzOWRhYjA1NjIyZTdiMWUzMWFjZjNiNWI3MDg5ZmE0N2RhZTBjMiByZWxlYXNlMzEtbWFpbnQKKzc2ODc3IDAxOTQ5MWIyNmIzNmNmZTcwMThiZjRkMjEzYTUyMWQ5MGNjYTg1ODYgcmVsZWFzZTI2LW1haW50Cis3Njg3OCBkMzUwYWZjMzM3ZGM2NGM0N2NmYWM3ODk0NWZkODkyOGNhZTI5Y2E2IGxlZ2FjeS10cnVuaworNzY4NzkgMWU4MTY0YjVmMzZkYmFmMmE1OWU5YzBmMmIxY2MxYWY4YWIzNzIyMCBweTNrCis3Njg4MCBlNWRmOWExZGFiNmEwODNiNTVlNjBhYjE2ODMxYzRkYjgxOGQyNGViIHJlbGVhc2UyNi1tYWludAorNzY4ODEgNjRmNWYzNzVkMDczZWM2MjlhODNlM2Q5YTQ4OGU0YTJkYjAyZmFmNCByZWxlYXNlMzEtbWFpbnQKKzc2ODgyIDc2NTIzMzQ2ZTIwZDc2ZDVhOWYzNDQwNGNiNzllMzZlN2ViMTA4NmQgbGVnYWN5LXRydW5rCis3Njg4MyBkMTA2YmE2MTI2YTE4ZWMwYjkxMGRiM2ZmMGU1MzA2NmY1YzQ5OWMwIGxlZ2FjeS10cnVuaworNzY4ODQgNzIzNDYwYjkwYWRkMTRhYzAwNGI0NTU0M2VlYjUyMTkxMDM3ZmQ2MiBweTNrCis3Njg4NSAwZWVjNjMzZWYwZTMyMGUyNzc5M2Q4Y2I0NjRkODNkYzY1ZjFiYzliIHB5M2sKKzc2ODg2IDk2MTNlYzQxYWVhYWEwNTY2MjJmZDk1YWZiMTYxZWY3NDE5ZTI5N2UgbGVnYWN5LXRydW5rCis3Njg4NyBhMzQ5ZGJlYWJhZWU1YTJmZDYxZmQ2MGFiODY2N2Y0NDk3ZDEyMzkzIHB5M2sKKzc2ODg4IDViMzc1OGVlNDM1NjZmOTkzYmI4ZWIwNzRiN2UwNWZiYzJmYzIyNjcgcHkzaworNzY4ODkgMzYyMThiNjgxZDllZGIxNjdlMzE4N2YyN2ExMTg0YzkxMWMxODI1YyBweTNrCis3Njg5MCBkZGQxZGI1ZDJmZTAwZTY4OWJjMTU2ZmM3M2IwY2Q4NzhhNTFiZGE2IHB5M2sKKzc2ODkxIDI2MjEzMGQ3MDMwNmNiY2JjMTI4YTQwNDI0MmJmOGEwZDljNjkzYjYgbGVnYWN5LXRydW5rCis3Njg5MiBiOGNhNjFkNmUyNjIzYTVjZjAyZTA4MzViMjE5Zjk3OTcxYzgzNGYyIGxlZ2FjeS10cnVuaworNzY4OTMgMmQ3NWRhNjVkMjkwZTVkZTVkOTQwNjliNTAxOGYxOGVjNzQ3M2U3ZiBweTNrCis3Njg5NCBhZWVmMmYyN2Y5ZjBjZjZjOWE1NDFlZTI5N2MwYmE0MjQ3ZWIxNzQ3IHJlbGVhc2UzMS1tYWludAorNzY4OTUgN2JhYTU1YjZlOGM5MTg4ZDAyODk0M2I5ODYxZmZjOGYyYzViNGQ4YSBweTNrCis3Njg5NiAxMDEzMjA4OTkwNDE3ZjRlZTBiYTBhMTdlZjEyYjcwNWEzNTJiMmM3IGxlZ2FjeS10cnVuaworNzY4OTcgNmQ0N2IyNDk0NzEzN2QxZTFiYTE4NjkyN2UwNDFiN2FlM2ZhYjMwNSByZWxlYXNlMjYtbWFpbnQKKzc2ODk4IDc3ZTIzMTMxMzVkZDliYTAxOGJhNjllNjhhYmRhOTNjNjAzYmVmNjcgbGVnYWN5LXRydW5rCis3Njg5OSA5Yjg0NzA5OGNiZjkzMDZmMzRjYjBiZmVmMGU5MWRlYmRjNjM1NDA5IHJlbGVhc2UyNi1tYWludAorNzY5MDAgMThlYjAwOTE0YWVlNWJhY2E5OGNkMjg0NWVlY2I1NTgxZDg2ODgxZSBweTNrCis3NjkwMSA2ZjljMDc0NmYxZTIwNTA2OGE4MzZhOTRhYjAzYjJlNTYxOTlmNWZiIHJlbGVhc2UzMS1tYWludAorNzY5MDIgYTA4ODQwY2U4OGQzNGMxZjAzNzlkZmE5YTJmODU5MTNhOWEwOGE5ZCBweTNrCis3NjkwMyBlZDRkNWNkNDdlZTk2MTAyMDdjNGMwZDVlOTE2NzM0MjE0YWI1NDY0IHJlbGVhc2UzMS1tYWludAorNzY5MDQgZjdmNWUxZDI3ZTA2MzAyZTU1MzJmZTFkYmMxYjlhYzFhNDhmMDRjZSBsZWdhY3ktdHJ1bmsKKzc2OTA1IDg5OTk2NzU1Y2YzOWU3MGJjNDZlNzRjODUzODk2M2ViOTcwYzMzZjggcmVsZWFzZTI2LW1haW50Cis3NjkwNiBhNDZkZDhkYTNjMzA4MjdjMTEwMThmZTBhNjEwZDk4NjgxYjA5YmYwIHB5M2sKKzc2OTA3IGUyM2Y1ZWM5MzMxNTg1N2Q3MjI5YjdiZDJkNmIxYjQ5NzAyODY1ZjIgcmVsZWFzZTMxLW1haW50Cis3NjkwOCAxMDk3MGY2NGJhMzMxYjE4OWJkOGU5NTQyZjk1OTEzMjNkZDA2Y2YzIGxlZ2FjeS10cnVuaworNzY5MDkgNzBjYzI4OGY5MTllMTdlYTYwMjM2MzlhOTUzMjJlNzQ2NjNiYWQ2ZCByZWxlYXNlMjYtbWFpbnQKKzc2OTEwIDcyNGEwZGE4NWM0MmNhZTc5MDg2YmQ3ODQ5ZDZlODlmZmQ5MTgwMjIgcHkzaworNzY5MTEgZGMxYWFkZjlmYTRhM2M2Y2UyNDYwMGU3ZGQ2YmRkNjI3NTM5YjRiOSByZWxlYXNlMzEtbWFpbnQKKzc2OTEyIDljOTU3NTJlZGUxMjUzYTkzMjBmZGNkYzc3ZTE0ZWVkM2VhZjk1NzUgbGVnYWN5LXRydW5rCis3NjkxMyA1MzFiMTFhNmExMjU1Y2RlYWY0ZGEwNGI0YzZlYWRkYjk3NTVmY2QyIHB5M2sKKzc2OTE0IGViZWIyZTc3NjNmNWEzYTU4M2JlNWU3OGI1MGIwOGMxNzVlNGNlMjMgcHkzaworNzY5MTUgZWQxMzEyY2RiOWIyMGE5OWYwNDMxN2U1YzFkOTEwZjc3MTY3OTgxOSByZWxlYXNlMzEtbWFpbnQKKzc2OTE2IDVjY2M1ZDQwNjhjMWFlZTI2Mjg2NjRhNDM0ODQ3OTRlMjA0ZWU0OGIgbGVnYWN5LXRydW5rCis3NjkxNyA1M2YyMWYwOGFmMGQ0NGM3NzRkNGNmODIxY2UyMTYzZTAyZThkM2E1IHB5M2sKKzc2OTE4IGQ1MTUwYjI5MzRmYTYwZDM3NDFiZjUzNjFjYTUyOTIwNjg3MjdhMTggcmVsZWFzZTI2LW1haW50Cis3NjkxOSA2ZjYwMGU5MmEwZjUyN2RhNmU1ZjdiMmE3OTc4YjNhZDhkMTJmZTQzIHJlbGVhc2UzMS1tYWludAorNzY5MjAgODk2YmY0OTYyOGFiZmQzYjBmZDg4NWM0N2I4MWQ2MDI5NWJmZDhjZCBsZWdhY3ktdHJ1bmsKKzc2OTIxIGNjYTA5N2VhMjdiOWMxZDg2ODNmZTQyYmI3YTIzYjUyZDE0ZTI5YzkgcHkzaworNzY5MjIgZTlkYTgxMmY0ZmZmNDMxNDQyMjllMTQ0ZmVkODE5ZGVlNjY1NjdiYSBweTNrCis3NjkyMyAyMDg5ZDljMWFlMTNlMWIzYmEwZDc0ODM2YzlmZWU5Mzk1YTY5Nzk3IHB5M2sKKzc2OTI0IDllNGM5MDFmMDA5M2NmZjA0YzdjNjhlZGZmM2YxNWY1MjVkYjIxZTUgbGVnYWN5LXRydW5rCis3NjkyNSBkODkwYzhmZmFkMDJmN2MwM2YyMjgwOGU1OThmYjFmZGJmYzU3NDY1IGxlZ2FjeS10cnVuaworNzY5MjYgYzlhNWIzYTQ2MGZmNjNmZDc1MGUyNjRjNTk2OGNkYjY3ZWRmMmIwNiBweTNrCis3NjkyNyA2NTBiMzI2NDAzY2QyNmJmNWYyZTc5NTMwODkxOWYwODA4ZjY2Yzk5IGxlZ2FjeS10cnVuaworNzY5MjggMWY4YjM2MzIwMjE4Yjg0NDUyZTQ0MzAwMGQ4N2E3MjI5OGNjNThiZSBweTNrCis3NjkyOSA3ODRiZGM3YjE5YWFmM2ExY2NmZWJlOTNjMmQ3MDc3NWEzYzJjNjAzIHJlbGVhc2UyNi1tYWludAorNzY5MzAgNzk0MWE5Zjg2NWMyMjgzYzNjM2MxMmU3MzAyMTMwOTFhZWNjN2RjMSBsZWdhY3ktdHJ1bmsKKzc2OTMxIDZkNzQ2NGRiYjcxNGIxNGVhN2MyZTEzYmMyOGE1N2EzOGRhYjgwZDIgcHkzaworNzY5MzIgMzkxNDlkMjI1ZWM3YTE1MjNjZTJhODU1MDI5MGMzODBlOWZlNTdlZSByZWxlYXNlMjYtbWFpbnQKKzc2OTMzIDAyMDU0YWZhMzYyZjFiMzY0YTg5NTZmZDFiNTZhYjFjNTc2NmFhMDggcmVsZWFzZTMxLW1haW50Cis3NjkzNCAwNDU4OGVmZjI1YTE5MDk1OGEzNTczMTRhODczYTYwYmQ1Y2UxNDg5IGxlZ2FjeS10cnVuaworNzY5MzUgMWMyYjNmNzk1ZDFiMjNlMjE5YjA0ZGE0YWM4MmY3OGIzYWRkOGJlYSBsZWdhY3ktdHJ1bmsKKzc2OTM2IDFkYWFjMmNlZWRiZjI1YzI2Y2E4ZDA2NzM5YzMzNWY2ODk5NTgwNDQgcmVsZWFzZTI2LW1haW50Cis3NjkzNyBjYjA1Y2NkNzU5OTZiY2MwMTY1ZTAwZTg0MjIxYjJlZTliMWQzN2VkIHB5M2sKKzc2OTM4IDU4MTMzNzE0MTg5Y2FhODU4NDNiZmVlNTRlMzAwODQ4N2NkNTE3ZmUgcmVsZWFzZTMxLW1haW50Cis3NjkzOSA2NjMwZTM2YWY5YzM5YjA2MjRjYWMxNTRkY2EyM2E1NmY5Y2UzMmJlIGxlZ2FjeS10cnVuaworNzY5NDAgNTUwMDUzYmFhZmZhNzlkNGM0NWU3Mjc4N2JlZjVjNTg4YTY0OGUxOCByZWxlYXNlMjYtbWFpbnQKKzc2OTQxIDRhY2UwOGFhYzM3NjM5YzM2NTUwODNmMWZlM2ZmYjU0YmZjODcyNjQgbGVnYWN5LXRydW5rCis3Njk0MiBkODU2MjAwMmY4ZTVjMWI2YmNkYTYxYmI5Mzg5NGIzNDQxZmI0NTViIHJlbGVhc2UyNi1tYWludAorNzY5NDMgNDY1ODA5NDE2YTgyZjBiZjFlOTA4YjhlMGQwZmFlY2YxMzMxZWVhYSBweTNrCis3Njk0NCA0ZDQzMGU1NWFkN2M1OGFkZWE0OWZkM2M0ZmE2ZjNjYWMwYjBmOGVhIHJlbGVhc2UzMS1tYWludAorNzY5NDUgNmMxYjIwNjVkMzVjYjNiY2ZlMWNlY2QwYjEyZjdhMDdjYzlkMTllZSBsZWdhY3ktdHJ1bmsKKzc2OTQ2IGJmMmVmZjYwZWFlMmJhYTE3N2Q5MWU3YzhhZmNiZDQ2ZDVkZGRkZWEgcmVsZWFzZTI2LW1haW50Cis3Njk0NyA5OWMwYWIzY2QxZjk1Njk4MDdlNzdhMTgyMTE3M2ViMWQ0MjMxNTZlIHB5M2sKKzc2OTQ4IDc5NzE3YjdkMzc5ZGJmZmViYjY3NjY4Y2I5OTAyMTg5OWE4NzExMTAgbGVnYWN5LXRydW5rCis3Njk0OSBiMWQ3MmQ4OTQ2MjE3YjExMzE4Mjk4ZDU1NDM0MGVhZDEzZDIwMDU1IHJlbGVhc2UyNi1tYWludAorNzY5NTAgMDhkZjFjOWVhNjQzYjU1Y2NhYzY0MTA0YmI4NGEyMjNiZGEzMjNiZSBweTNrCis3Njk1MSBkMDI1ZjQ5ODczMTkxYTAzNDI1OGEwMjZmYTk3OWVlMGQ3Y2RiNjJjIHJlbGVhc2UzMS1tYWludAorNzY5NTIgMDk2YjFkOTk3ODUzOGJiMmM4ODYwYTQzN2IwNjdmZmM3OGUyYjIxMSBsZWdhY3ktdHJ1bmsKKzc2OTUzIDE3NzIxOTU0MDVlN2VhNzU3ZTQ5ZTBmZjU2NDYwYjNlOTI3ZThlZjMgcmVsZWFzZTI2LW1haW50Cis3Njk1NCBlYTVlNTRiZDYyNzRjMzM0ODY5ZmM1MWExNWNjZmRlMDU0OGYyZTJkIHB5M2sKKzc2OTU1IDg2YjVkZjA0NjM0YzA2NmUzMzZkMWY3M2UzNzNjYjBlYmNmMGI4ZDcgcmVsZWFzZTMxLW1haW50Cis3Njk1NiAzZTJiNzk2NWFkYTk5N2JlYWU0MDJhYzBmNTVkZTFiNDIzZWY5NzQwIGxlZ2FjeS10cnVuaworNzY5NTcgMGVlMmFlNzVjZThmNDhiNzliYmIzZjc4YjlhNDQ5MzA5NmY0NDgwZiByZWxlYXNlMjYtbWFpbnQKKzc2OTU4IDM5YWIxYTM2YjIwOTg2NmEyNTFkMGRlYzI4M2I4YmQxZTE5NjlkNzUgcHkzaworNzY5NTkgMDljMTcxZmE1OTM1YTFlMDhmZDIyYzEyYTAwMWRhYmE2ZDIxNTYyOCByZWxlYXNlMzEtbWFpbnQKKzc2OTYzIDI4ZGU4M2YxN2QwODllNDU0N2RhNjM2MTM4ZTI4NTQ0NWI2ZGU2YWEgbGVnYWN5LXRydW5rCis3Njk2NCBhN2M0YzcxN2E5Yzc4ODFhY2IzMDI1MjNlMDAwMDU5MzUwNzU0MmYyIHJlbGVhc2UyNi1tYWludAorNzY5NjUgNDhhOTljZjgxOGM5MmRlZjYwODNjOGFhYjk4YWFiNmRiMWM4Y2M0ZiBweTNrCis3Njk2NyA3YjJlYWEzNGI4NmIzNjcwNzhmNzg2ODZlNjA0NTVjYTNkMTAwMDhhIGxlZ2FjeS10cnVuaworNzY5NjggNmQwOWUzZmRmODQwY2JkODFiODg5NzY4YmRkZDNmMDUzMmMxNTA1MSBsZWdhY3ktdHJ1bmsKKzc2OTY5IDc2MTNkZWYwOTlkMGJjMGFmNDJiNmNkYjc4ODA2Y2JjOWM3YjNkOTIgcmVsZWFzZTI2LW1haW50Cis3Njk3MCA4MDcxOTU5YmMzMDZjNTFlNDY1NjY2YzI2YTJlNjVjMDk4YzAyOTQzIHB5M2sKKzc2OTcxIDUwZjMwNDZkNGZhMDAyNThmZjI2ZDVlNGZhMjMyYzgyYTM4OGNjNWUgcHkzaworNzY5NzIgOGM4NmNkODBhZTI2MWEwYjc5YjU0MmNjMmI2NjE5NjgzODc5MWQ2ZCByZWxlYXNlMzEtbWFpbnQKKzc2OTczIDEzZTYyY2YwMmJjM2ExMDgyMjI4YzgwNzgzM2QwZDU4Zjg5NWI3OTcgbGVnYWN5LXRydW5rCis3Njk3NCAwOWM0ZjFiOTQzOWM5ZGU3ZTVkZDk1MjlhN2I4YjRjYjI3ZDQ2YWI4IHJlbGVhc2UyNi1tYWludAorNzY5NzUgZDc2MTBlYzk1YmNlMjhjZGY4MTdhYzBjYThhZmY1MTg1MDE2OTk5MCBweTNrCis3Njk3NiA3NTU5YjcwZjk4OTkzOGQxZmIxY2MxMDFlYzA2MGM0NGIzYTFjY2E5IHJlbGVhc2UzMS1tYWludAorNzY5NzggN2Y1Y2JjMjhmNDMzM2M5YjQzYTM2OGVjZWZlNWNiNTc1MjY0YTQyOSBsZWdhY3ktdHJ1bmsKKzc2OTc5IGU3MzAwMWFmYzU2ZjA2ZGNmNWE2NTFlZDBhYWIxZDk4YTk1ZmM4N2IgcmVsZWFzZTI2LW1haW50Cis3Njk4MCA5NzUxZGRjYzE4ODI4M2FiODJmODVhOTU5NTY1YWE0Njk2Mzk4ZTc3IHB5M2sKKzc2OTgxIDM3YTA1OThkMzMyZjc1MzhiMGQzYjQ2OTkzNTUxNGYxYzAxZTYxYWIgcmVsZWFzZTMxLW1haW50Cis3Njk4MiAyZTQ4NDE5MGNlYjVhMTk5NDgwMzNhYjZmZjAxZjFjNjc3Zjc5YzI5IGxlZ2FjeS10cnVuaworNzY5ODMgMWEyNWI0MjBlYzAwY2M0Zjk2ZGZjYmVhYjYxMWFmNjJjYmZkNzljOSBweTNrCis3Njk4NCA2MDZhNDVkYmQxMGNlNWUzZTVjNmM3ZGEyYmEyYWQ4NGY1YTJiZDkzIGxlZ2FjeS10cnVuaworNzY5ODUgMzUyNDllOTU2M2FhZjE5MGQzMGM1NWZkYWEzYjNlY2U2NWI0NGM3ZSByZWxlYXNlMjYtbWFpbnQKKzc2OTg2IGRiMTk3YjI4ZTA0NTQ0M2I1YWZjNjk4NzZlMDRmMzg5M2IzNjRmYmUgcHkzaworNzY5ODcgMjBmY2ViZDBjYjVkZDg2ZmU1NWJhZDI5MDYyMzE0ZWZjZGEzYTgzOSByZWxlYXNlMzEtbWFpbnQKKzc2OTg4IGFlZDMyMTg3NjQ5MDllZTNhMWY3Yzc0ZTVmYTJlM2YxMDhjZjVjMTUgcmVsZWFzZTI2LW1haW50Cis3Njk4OSA0ZDNiOWI0Y2FmZjA2YjM1ZTVlMjBmMTczZTg2ZDI2OGM4OWQ4ZWJmIGxlZ2FjeS10cnVuaworNzY5OTAgNDQyZDJiOWQ4MWUwOThmMTgxNzM4ODAwZGU3ZDRjNmE1ZGIzMjM5NCBsZWdhY3ktdHJ1bmsKKzc2OTkxIGYzMTE1MGQ4NDdjM2ZlNDNiNDE4NmE0NzI2NzIxMmE2NDdkMjI5ZTMgbGVnYWN5LXRydW5rCis3Njk5MiBiZTc4ODY2MGE5MzkzMzhmNjEwMTRmMTZjNDIyMTQxMWYxMzY0NzU5IHJlbGVhc2UyNi1tYWludAorNzY5OTMgMDdhMjgzMDhjZWJiMDY5NDEzY2JlZjBiMGQyNjZkNWNmMWZmYWMyYyBweTNrCis3Njk5NCA2NWRlMGJlZTBmZjJlY2JhZTY1YTg2YWY3MjRiNmFiYTliYjIyMzdmIHB5M2sKKzc2OTk1IGI5OTI3ZWVlMmE2OWZhODIyNWM3YjlmMjdlMzFmZDA4YTc4OWE0NzYgcmVsZWFzZTMxLW1haW50Cis3Njk5NiAzMGJlZGJjMjk3NjM1MjMyNTUxYWJmMTgyNjgwYzFiMGQ0YmVlNjdmIGxlZ2FjeS10cnVuaworNzY5OTcgNmM4MTMwMTUyZTg4YTIwMWU1MDY1Y2NiZmVmNDhhYTkyNjVhYTYwYiByZWxlYXNlMjYtbWFpbnQKKzc2OTk4IGNmNzRkOWFmODk1YTY5NGJmMGNmZWMyZTg4NWQyZjdlNDA3YWNjM2IgbGVnYWN5LXRydW5rCis3Njk5OSAxNTIwNjk3OTIwMjAxYjAyODlkODFkZmJiYmExYzg0ODJjNDYyYjdhIHB5M2sKKzc3MDAwIDlkYzU3M2I2ZjhmNWZhN2Y0YzdjNmM2NmRlZWNlMzQzNDBkZGZkM2IgcmVsZWFzZTI2LW1haW50Cis3NzAwMSA1M2UzMjEyNTk1NTZlNWMwYTVjZTliN2VjZmQ4YmVhNmZmYzkxZjRhIGxlZ2FjeS10cnVuaworNzcwMDIgMDcyYzNkMGYwNTFlOWI4YmMwNTZmODI4NDBjODlmMjc2YWZkMTRmZCBweTNrCis3NzAwMyBkZjI2MTA5M2IzMWNmNGRkZGM4MTA2YTVmZThjOWYwOTc2MmEyZTdiIHB5M2sKKzc3MDA0IGJkMjg3NDVjNmZlNzBkNzI3ODg2MmVhN2RmODRiYjE4Y2M4ZjkzNjcgcmVsZWFzZTMxLW1haW50Cis3NzAwNyBiYTc0ZDU4Nzc0YjcwZjZhNmM4NzY2NjY2MTI3Y2YxNzliMzA1NThkIGxlZ2FjeS10cnVuaworNzcwMDggMThhOGIyYmZjOWMyZWJjOGFiNGQ0YmQwMjE2YWU4OGE2YmI2MmYxZCByZWxlYXNlMjYtbWFpbnQKKzc3MDA5IDQyOWEzZTM4ZTQ2YmY1ZDc4NTczZjdhM2MzOGVlM2U2NjdkMDc0ZTkgcHkzaworNzcwMTIgOTNkNWNkZjFjNDU3M2U4NmE0OTMyZGY3YzRlYmEyOWQ3NjViZjc1NiBweTNrCis3NzAxMyAzYTczNmFkNjYxZmI2NDNjMzgzYWFmN2JhNTQxOGJjZTAzZDNkOTRjIHJlbGVhc2UyNi1tYWludAorNzcwMTQgMjUxODYwZGIzNDkzZjM4Y2I4MDdmOTdmZmFmZWUwYTgzMWIyZTMzYSBsZWdhY3ktdHJ1bmsKKzc3MDE1IDI0MDA2Y2E1NjJkNWFiOTVjZmVkNTg1NzY4NDk0NGMyZTc2NDlhOGIgcmVsZWFzZTI2LW1haW50Cis3NzAxNiA0YWEwZDgxNmVlNWJhMDVkMzVjMzJkMTgyODdkOWUzYTg1Y2ZjMTM4IHB5M2sKKzc3MDE3IDgwMjFiOTBiNTZlZGJiN2Y0OGNhZTQyZTM0NjcwMzQ1MjczNGJkM2QgcmVsZWFzZTMxLW1haW50Cis3NzAxOCAxYzRlODk1MjE4NDdlMDAzODIyMzliMmFmYzkzYzI5ODg4Y2Y5YmExIGxlZ2FjeS10cnVuaworNzcwMTkgMTNlMmY4YTc0OWM0NjQyMGE5YjBhMGU1OWM5NTg4NWUwOTU3YTQ5MyByZWxlYXNlMjYtbWFpbnQKKzc3MDIwIDg4NjI3NWZmYWZkNmIzYzY1NjM4ZjZkYmU5YzA2YTY3NGIyOTg1MjcgcHkzaworNzcwMjEgZTc1N2ZhNzc5NjAxZjUwNTNlNDAyYjliYWIzMmE1ODk2MGFmMTdhZiByZWxlYXNlMzEtbWFpbnQKKzc3MDIyIGRmMmNmY2Y5YTA3MzhlMWVhODQxNzUyZTUwMGE0Nzk0OWRiNjgxYzYgbGVnYWN5LXRydW5rCis3NzAyMyAxZjg2ZTBlNDY5NjlmYTQyMjMxM2RjNTNmYzEyMThkOThjZjcxMTVjIHJlbGVhc2UyNi1tYWludAorNzcwMjQgNTU5NDI1MzMzMTc4N2UxMjA0MjA5ZDRjYjU0MjYzMDg2ZWJlZDdjOSBweTNrCis3NzAyNSBkMWYxYTA1OTE1NGJhOWYxMjMwODE0YmE3YzE3Y2EzZjEyOTQ0ZDA1IHJlbGVhc2UzMS1tYWludAorNzcwMjYgY2EyNGVhMWEyYWUyZWQ4NzI2MjVhYWM0NDk5M2I0NDE4NWQ2OTE1ZSBsZWdhY3ktdHJ1bmsKKzc3MDI3IDFkZjczYmYzOGM1NWI4NTdkYjgwMjExYmE0MWZhOGI0ZTM3MTI3NDYgcmVsZWFzZTI2LW1haW50Cis3NzAyOCAzNWRlNTdmNTE1OTk1NzM0OTRjZjdhMmQ4ZTcyNzViNjZhNzZiZmQ5IHB5M2sKKzc3MDI5IDcxZTZhMGRmYWZjODQ3MTZmNDY3ZTllMzMyMTk0Yzc1MzM5ZTllZmQgcmVsZWFzZTMxLW1haW50Cis3NzAzMCA5ZGEwY2YyZGZmY2M5ZWE1OGM1MjAxOTcxNDEwOWNhZGUxNjZkNTliIGxlZ2FjeS10cnVuaworNzcwMzEgYWFlYjY1YmFiM2MwNTFmYjViYjhkNDhlM2JlZTI0MzdjOWFhYzY1ZCBsZWdhY3ktdHJ1bmsKKzc3MDMyIDk0ZTk1N2NmZGEzODNhZjk4ZjhkMTg4NTJhMTZjYzBmNWMwZTIwYzkgcHkzaworNzcwMzMgNDYzNzFiMjhmZGQxMTg1MWNlNTAxNTAxNDQwN2E1MzRmODYyYTc5MSBsZWdhY3ktdHJ1bmsKKzc3MDM0IGJjNWVjNTBjNTBmOWVhYjMzMzQ1NzQwMWNkNTNmMzZlNjExMjQwODcgcmVsZWFzZTI2LW1haW50Cis3NzAzNSAzYzQxMjQ0N2VmYjIwMzBiNDY2NTg1YjYzYjQ1OWM1NmI5MzJlMjQ2IHB5M2sKKzc3MDM2IGU3ZGNjNzQ4NWQwYmQ4MWM1OGY4MTA3YTA0ZmQ3Y2M0ZDQwMWExMWMgcmVsZWFzZTMxLW1haW50Cis3NzAzNyAwODU1ODE4ODRlNmY2MzIyZWFjZDE0Yjc1Y2I5MDA2Zjg1MzZiOTQzIGxlZ2FjeS10cnVuaworNzcwMzggODcwYTQ2YzhhNjcwNWRiMjhjZDljOGZhNjA3NWI4MjhiN2FkY2QxNCBsZWdhY3ktdHJ1bmsKKzc3MDM5IDBlZjk0ZGE3NWJmZGE2ZDczZTg4Mjc3OWJjMTM1ZDg1NTg3M2NhMmQgcHkzaworNzcwNDAgNDI3YzIxNDNlMmM5YmExZjg3Yzk2MjE3NzUxNDc5YjdmN2VjNDliZCByZWxlYXNlMjYtbWFpbnQKKzc3MDQxIDg0MjYzNDI3NmQwMTFkY2IxZjQyZjBjYTNiNDYzYmYxYWYxOTViMmQgbGVnYWN5LXRydW5rCis3NzA0MiAzYjg2YjIzYzU4ZmU0NDBiYjBkODhjMjdlMjQzMzYzMjhkMzg5NjU3IHJlbGVhc2UyNi1tYWludAorNzcwNDMgNzI2MzIzZmQ4N2NhNTBjNjA4OTRlODU3NzUyYWJmMWU2YmUxMjBlOCBweTNrCis3NzA0NCAzNDM0ZTZiMTFhOTIxOGVlOGVhZWVjN2I1YmE0ZDUyMTViMzVjM2NhIHJlbGVhc2UzMS1tYWludAorNzcwNDUgODYzODdiOGI5YWY4YjlkNWZmNjNhYjM4YTM5OGYzZWZmZDA3NTMwOSBsZWdhY3ktdHJ1bmsKKzc3MDQ2IDk0MjRiODRhMmVjOTUyYTMwYjk0MzAyZmU4Yzc3YTQ5MmI0NmRjMjIgcmVsZWFzZTI2LW1haW50Cis3NzA0NyBmNTYwZTFhNzc0NGVmYWQ2MmI5ODJiOTY5NzM1Yzg3MTYzOWM1ZmI1IHB5M2sKKzc3MDQ4IDk2MjhlYjdlOThkZmI3ODAxMGE2NzAzYTA5NDZlMDFkZDAxYjRjMTMgcmVsZWFzZTMxLW1haW50Cis3NzA0OSBkYjc5NjU2NzEwOWNiNGVjZWZlMjk2NDg3NmIyZmYyNmI4NDk1ZjdiIHB5M2sKKzc3MDUwIDZjYTFiOWI3OGMzZmQ3OWJiNzFmNzFmNjkwOGExY2E5ZGE2MTlhNWIgbGVnYWN5LXRydW5rCis3NzA1MSBlNWM0Yzk3MTI2NjFhZjNlMmU4MDUyODJkZGQ5ZjY1NWM5MDBkZWIxIHJlbGVhc2UyNi1tYWludAorNzcwNTIgNDlkZjNjZjkxOWY3ZGJjZWZmZDI1YjhjMTg5ODc0MmYzODIxM2U4ZSBweTNrCis3NzA1MyAyMTA2MTEyZjViMDc2MzhlY2I0YjhmOWVhNWEwY2U0ZGNiNWMyODkxIHJlbGVhc2UzMS1tYWludAorNzcwNTcgNWRjNWQ2YzZmNjQxNzg5ODM2Y2U1OWQ0ZjUzY2U3ZjM2MGIxZTRmMyBweTNrCis3NzA1OCA2NDY3NjQ5OTQxMjAwOTNkMDA2YTYyZWI1MGQ5YTgzMDI2YjA3YWMwIGxlZ2FjeS10cnVuaworNzcwNTkgMTUxMjljODBiMmZlZDdjNTAwNDI0YzYwMTQ0ZDVjN2ExZjdkMDY5MSByZWxlYXNlMjYtbWFpbnQKKzc3MDYwIDY4ODExZGZlNzA2Y2U5NGQzMWU0MWVhMDU0YzE2OWNkZGVlNDg4MjUgcHkzaworNzcwNjEgZTM3MmE4MDU2YzlkNTM3ZDZmZDQ5NDFhZjUxMDY1NDIwMTg3YzJlMSByZWxlYXNlMzEtbWFpbnQKKzc3MDYyIGM0ZTYwOTg4ODM0ZGYwZmQ0MzdhZTM0MjJkYTBjYWI0YWNkNmZjZTAgbGVnYWN5LXRydW5rCis3NzA2MyBhYWE1YWI3Yjk0MmE4ZTQ0NTNmMTMxMGRjYWRkOWM1ZTU3YjAwNmJmIHB5M2sKKzc3MDY0IDU2MGI4NzY2OTE5ZDVkMTVjNDQyYTEyYzk5OTc5ZGZiNTFhMmY4MmEgcmVsZWFzZTI2LW1haW50Cis3NzA2NSAyMjkwNzhlNDcwMTBjOGM4YTdiY2QwNzljOGQwNGY3ZThhMDM5MTZhIHJlbGVhc2UzMS1tYWludAorNzcwNjYgZWIwYmJhYmEwMzYxYjc0NmZiYTk3MGVkYjU4OTk1NzJjOWIwZjdmMSBsZWdhY3ktdHJ1bmsKKzc3MDY3IGRkNjcyNmM5NzhjNjY2OThmNGQ2OTA1MzhkODI5NjJkNjZlMmFlY2IgcHkzaworNzcwNjggOTU3Mjg5MDI5YzA1MzRlNWRlMjRmY2E5MjcyY2FmODBmYzI2MjQ4OCByZWxlYXNlMjYtbWFpbnQKKzc3MDY5IDg1ZTc4MWY1OTliYzhhOTRmNTY3YjFhMzY0MDRmY2RhZGZiMjcxMWEgcmVsZWFzZTMxLW1haW50Cis3NzA3MCA4ZTgyZmIwNDNhZTg3ODU5ZTlkY2I1ZmUwMGE3MDBkYzg1MTFkMTkxIGxlZ2FjeS10cnVuaworNzcwNzEgYWQ3ZTQxNDFhM2ViODNmODZjNmM1NjkwNDBkZTM1M2IxNzU0NDRkNSBsZWdhY3ktdHJ1bmsKKzc3MDcyIDczMzY1YmIyNmZkNjUwY2MwNDYwY2YzNWQ3MWZkMGI2YjE4OGVmYzQgcHkzaworNzcwNzMgMWUzNzE4MGVlY2FlYTQ0M2YxNDhmNGIzNzkwYmI2MTRiZDVjYzNmYSByZWxlYXNlMjYtbWFpbnQKKzc3MDc0IDVhOTM3MTAxN2VkZjlhMWE1MDEzZmY4YTAxZDBhOWFlZjNlZGVhMGUgcmVsZWFzZTMxLW1haW50Cis3NzA4MSA1MjVmNjdiZWViODljN2ZhMjBjYWZjOWU4NzE4NmVlMDAxMTI2N2FhIGxlZ2FjeS10cnVuaworNzcwODIgMzA3NDFlZjY1NjE3MzhkZjcwY2JlMjc1OTg3NTBkZTQwNGVjZTBiYSBweTNrCis3NzA4MyA1NzQzM2I4MzNiMmE4ZGYzNDExNDVlZDBlMzI5ZDk5YzYzYzUxZmYxIHB5M2sKKzc3MDg0IGNiZTFiYmU1NDRjOWU0NmJkYTE1NzhmMzYwYjE3MzE1YWNjOTQzMDYgbGVnYWN5LXRydW5rCis3NzA4NSBhMTFhOGU1M2M0OTVjZThiYzc3MTIzNTVkYmRmNTZkOGY1Y2M0NjdjIHB5M2sKKzc3MDg2IGZlMDQ1OWRjOTg4OWY5Mzc2ZTZkZTFhNTE0MTMzYzkwNTI5MzhlMzAgbGVnYWN5LXRydW5rCis3NzA4NyBmZmQ4MDBlZjQ2ZWEwNTRlOTJlZmI0OTA2Y2QyN2YxNDMxNjNlOGY2IHB5M2sKKzc3MDg4IGNmMzljNWU0NjJmOTRiY2U1ODE1YjJkNjhiMGJhYjUzYWRmNWJhZTIgbGVnYWN5LXRydW5rCis3NzA4OSBjMTk3MmVlZjM1Nzk1Y2UyZDRhMTMxMDQyMTczZjI4N2ExMWUzZTBkIHB5M2sKKzc3MDkwIGMxNGEwMTRhZjk1NGViYWNmMDQwYzY5YzY0YTcwNTFjMTYzZWJlY2EgcmVsZWFzZTMxLW1haW50Cis3NzA5MSA1ZTg0YWJmZGZlYWJkNzVhNTE1YzQ2OGExOGMzZTIxNjg4MWUxYjBjIHJlbGVhc2UyNi1tYWludAorNzcwOTIgOWI0YjQzYThjOTEzMDU5NTUwZmNmODZlNWM4N2I4ZWJkMDgwZDRjMiBsZWdhY3ktdHJ1bmsKKzc3MDk2IDM3NDE5MWUxMGE0NWJlNmQ1NjgyM2FjYTE3Njg5Y2RiMmZhZmFkYTMgbGVnYWN5LXRydW5rCis3NzEwMiA1YzhjNGQyZjhiNzEyMGQxZGVhOGI5NTFjOWNhMGRiOTA4NGMzNzYxIGxlZ2FjeS10cnVuaworNzcxMDMgZjc2NGU0MTI2YTIzMWJhMGI3Y2M2OGI1YmU0OGQxMDU3YWVmN2RkZiBweTNrCis3NzEwNCAzYjQ2ZjJkM2I3NWQwMmYzNTZjMWFmYmVjYTNmYjVjYWZkNjdhN2QyIGxlZ2FjeS10cnVuaworNzcxMDUgZWM4YmIxNTE0ZDY3MWE2M2JkN2M3M2NiMzVkZWJkYzk2MDBlZjNmYSBweTNrCis3NzEwNiAxNWVhYzc2NWNjMzVkOTRkMWNhOTg3NDYwNDIxMmI1MGU2ZDg1ZWFkIHB5M2sKKzc3MTA3IDA0OTgwMjc3MTJiZjQyYzMwZDcyYjljNjhlZDkzNWJlZGVhNTJmNzEgcmVsZWFzZTMxLW1haW50Cis3NzEwOCAzYWVhNTdkYzIxYTliMWQzYjg2MTQ4YWY1MGRjZGViODc4MDFkY2U2IGxlZ2FjeS10cnVuaworNzcxMDkgMzhmNTkzYTgzY2ZjODQyM2Y0ODBkOGQ2YjlhMTM2ZDhkZTlmYTc3MSBsZWdhY3ktdHJ1bmsKKzc3MTEwIDhhZDMzOTkyMjAyYWVhM2E2YTAxNzgyZTAyMTMxMzUyNTkzZTMwYTIgcHkzaworNzcxMTEgYWJlNTAwOGI5M2U5YTRjNzMyZWM1MzE0ZGFkZDY1ODYyMzRiNDEyNyBsZWdhY3ktdHJ1bmsKKzc3MTEyIDYxYTc3MGY3Yjk1MWIzZjkyMDdlN2Q2NmM5OGU0YzkwMGNiYTllMmYgcmVsZWFzZTMxLW1haW50Cis3NzExMyA1NzQ1NmYxNjk0MmQ5OTAwZTk0NTM2NjA2ZGE4MmRlYmFkZGM1OTRiIHB5M2sKKzc3MTE0IDcwZDc0NzNhZmNmZWY2N2I5NjYyZGEyYzFjYzU0YzFjYTQyZTdmZjAgcmVsZWFzZTI2LW1haW50Cis3NzExNSA3MjMzYmMzNGZkNDRlMjg4ZmJlNmUxNWZkZDczN2Y5ZTUyOTIxYzdmIGxlZ2FjeS10cnVuaworNzcxMTYgZTQ4NGZkYTQ2MmE2MGI3MDA2MTBkYWI4NTk4MGI4MjZlN2FlZWFhOCBsZWdhY3ktdHJ1bmsKKzc3MTE3IGJkNmIwM2ZiNzFhMDY0NjY5YjBhOGQyMmUwNjg1NmY4YjhjMzcyZjAgcHkzaworNzcxMTggMjU5ZWQ1Y2I5M2VhY2RmYzQ5MTBiYTEzYTI0MWUzMmFmNTc2NjEyNiByZWxlYXNlMjYtbWFpbnQKKzc3MTE5IGVhZmEwNTNhZjA1NzBkYjA3YWI3NDU1ZDU5ZjJhZTRkYTc3NTUzZGUgcmVsZWFzZTMxLW1haW50Cis3NzEyMCBlYmQwNjE4MzhmYjE3NDU1Zjk4NWZiYzU2ZDMzMGU2ZTU4MTkwZjMzIGxlZ2FjeS10cnVuaworNzcxMjEgNWUwYTk0NzE2MDFmNjM0OTNiYmZkYWU5ODRiYzQ3NzVlYjU1ODI3ZiBweTNrCis3NzEyMiA4YzYwYTk1NWQwMmMwYTJkMjQ5ODZiN2NjNTI4ZDdkZDg1Y2Y1NWRmIGxlZ2FjeS10cnVuaworNzcxMjQgZTNmNTkxNGQ5YmIzZmVhN2Y4OWM1NWM1ZmQzMWE2ZGE3MDU4ZDY2ZSBweTNrCis3NzEyNSAyM2Y0NjcxNTE3NTZhN2M4M2U4NzM1ZjExMzEzN2FmMTJkYWYwZWE2IHJlbGVhc2UyNi1tYWludAorNzcxMjYgYzUwMmVjMjQzNDU4OGI4YmNlODA5OTZjNWJiMWMwMjczZTY5OTFlOSBsZWdhY3ktdHJ1bmsKKzc3MTI3IDc5MGU4ZmNmNTE3OTVmMzJhYTU4ZGY5ZTJmNWY5MTc2OWQ2YWViNTUgbGVnYWN5LXRydW5rCis3NzEyOCA2ZmRlMTFmNGQ4NDI2NjZmMzE5ZWI4ODczZWQ0NWMwNzk1ZWNkZTFmIGxlZ2FjeS10cnVuaworNzcxMjkgZmI2NzFkZjBmNWNjOTY2YTgxNzM1M2VmOTM3Y2FiNjUxY2U5NWIyNiBweTNrCis3NzEzMCBlNTNlNTUyNTJiYTg0YmNlMGU5YmYxMzNlMGJiZWQwNjExZDU0ZGZlIGxlZ2FjeS10cnVuaworNzcxMzEgOTJhNThiODAxMjIwNjczMzQ5NzdhNTkwY2Y4MWQzMGNhMzFiYjA0NiByZWxlYXNlMjYtbWFpbnQKKzc3MTMyIDE5ZjIzNTk5NDRlYjQzNWQxYjZlNTI3NjQ1OTYyNTg1YjE1MDI1MzggcHkzaworNzcxMzMgMjQ0Yjk3OWQ1NDRjMTI0ODQ2NDAxODZlOWE3NDM1MDc5MTQwZTAwNSByZWxlYXNlMjYtbWFpbnQKKzc3MTM0IGQ0YWMzYTgwMDBjNzUxODhkMDI5ZDc1MTM5YzdiNTIwZTdlOTRiM2MgcmVsZWFzZTMxLW1haW50Cis3NzEzNSBhN2Y2YTUzZGFhMTJkMWI1YzY1NmZiZTM3YjlkMjVkZGI1MTkzY2YwIHJlbGVhc2UzMS1tYWludAorNzcxMzYgNGYwOTg4ZThmY2IxNTZkZGViYzQ0OWVkNDExYTUzMjA5NWU4MTc2MSBsZWdhY3ktdHJ1bmsKKzc3MTM5IGFjNWZkODkwOTk5OGZlZDlmNjI4ZjVjNWNjYTI5YWQ2Y2IwMzMxN2QgbGVnYWN5LXRydW5rCis3NzE0MCAzODU3Y2Q0ZDViMzU5NzNiNWI5MzMyMjNiOWUyNmFjMmU4YzQ3YzU2IGxlZ2FjeS10cnVuaworNzcxNDEgMmFhMGQ5ZjAxZDQ3NTNiNTY1MDljZjVlMDliMGJkNTk2ZWM3MzlhZCByZWxlYXNlMjYtbWFpbnQKKzc3MTQyIDYyNDhiN2ZkZWMwZGJiNTlmOWQ3YTQ0MzcxNjQ3MzcwNWU1YjA0ZGEgcHkzaworNzcxNDUgYWQ2MDlkMGY1MTUwOTc0MmExNDJmZWVhYWFhZTBhZTkzM2FlNTMzMiBsZWdhY3ktdHJ1bmsKKzc3MTQ2IDc0MGRiYWUyZTMwY2ZmZDAxMjA0ZDgzYjI0M2M3Y2ViOWZjNmRiOTcgcHkzaworNzcxNDcgMTc0YTI4YzlmYjQwNzAyNTBmMWRlMTE0YTY5MDE5ZDVhZjQ2MGQ5MyByZWxlYXNlMzEtbWFpbnQKKzc3MTQ4IDVhZDVhMWQ2MTJlNWQxNDhjN2VmNTY5N2UxMjYyYjQ0M2IwNjM3YzIgcmVsZWFzZTI2LW1haW50Cis3NzE0OSA5Y2IyNzVkYjRkNmQ1ODRjMTkyZWVkY2UyNjE1YTFlNWY4OGQ1MGY2IHB5M2sKKzc3MTUwIDAwZmU2ODlmMmI3OGQ1NWM1MzYyMGY5MGE1Y2UyZDg2ODVmMzI5MjggcmVsZWFzZTMxLW1haW50Cis3NzE1MSA4ZDljOTM0MGIxMmUxNmM4YzM1NTUwYWEzNWM5NDdiOGZlM2YyMzRhIGxlZ2FjeS10cnVuaworNzcxNTIgNzM2MWVlMmRkZmRiN2E0NDBlYjUzYWMyNGE1M2JmNjE0YzgzZTk4NyBsZWdhY3ktdHJ1bmsKKzc3MTU1IGRiNjI5NzdjNTcxM2Y5MGE3Y2U3YzgwOWNjMDdkZDgwNzFmNTNhNDIgbGVnYWN5LXRydW5rCis3NzE1NyBhZTE5YzI4N2U5YzBmODU1NmExZWE0YTJlNzI0MWI0MTNiNTY0OTU1IGxlZ2FjeS10cnVuaworNzcxNTkgOTZhMjM3MWIxMTRiOWRjYWNlYzJiMTE0Y2EzNzQzMjViZDJkYTdhZiByZWxlYXNlMjYtbWFpbnQKKzc3MTYwIDgxY2YyNGU1Y2U5MjhlOWM5MDNhOWU2M2FiNjQzYWMyODA1OWJhN2YgbGVnYWN5LXRydW5rCis3NzE2MSA2YzE5YTZhNjk3YTYxMWQ0Y2E2ZDEzMWI1MDJhYWUwOWU2MGRmZTAzIHB5M2sKKzc3MTYyIDQ2ZjRiN2I1YjRkZGU0N2VhOWI1YWJkZWIzYTYwOTkxNmE0NDM2NWIgcmVsZWFzZTMxLW1haW50Cis3NzE2MyA4ZGM2ZGZhNDFmZDU2NWNlYWM3NjFmZWYxYzBiNzg1YjVlYmRkNWUyIHB5M2sKKzc3MTY0IDI1Mjg1ODJkNjhmNmJmNjk2NjQyYmI1Y2U3ZGJjYjY1OWY3MDBmMzIgcmVsZWFzZTMxLW1haW50Cis3NzE2NSAzNmFlZDllMzY0MmRjNGQzMzY3OGU3YWY1NmUyZGI0MTIwNjg4M2MzIHJlbGVhc2UyNi1tYWludAorNzcxNjcgZWZhNTk3NjMzMDEwZWZlM2M4YjM2YTA0MTVjZjg5MTg5ODc3YTQ5YyBweTNrCis3NzE2OCA5ODBjNzlmYmQ0YzVkZjQ1Y2MyZjEzZmM5MmIyMTVmYmU4NjUzODliIHB5M2sKKzc3MTY5IDhmZWUyYWI1M2U3MTZhY2VjOWZkOTc2Zjg4OGE2YmJiNzBhYTkwM2UgbGVnYWN5LXRydW5rCis3NzE3MCAyMjhiYmEyZDFmM2Y3NTA4NmY3MTJhZGU3MWUzMDg0M2Y0NzkxMmMxIHB5M2sKKzc3MTcxIGUwNzg1Nzk5ODRhNGU0ZmMxMzgyOWE3NWUzNjI1MGI1MGNmMDJjZmQgcmVsZWFzZTMxLW1haW50Cis3NzE3MiBiM2QzN2ViOTYzMjIzNTQ2MzI2MzMyOWY1NGMxZDllYTIzZTk3ZTJlIHB5M2sKKzc3MTczIDRkNmQ5NTJmZTI4ODExODMzNDcyMGUxMThjNDM5NDBiNDUyNjczNjQgcHkzaworNzcxNzQgZDUyYTcxNzllZWNlZTJlZDVjODZmNTllNjA5ZDRiMmQ1NTY1M2QyMyBweTNrCis3NzE3NiA0NDNmNzFkZDVjZjAyYWJkOTUxNDczNGI1MzcyMzc3NzFlMTI1NWU4IHB5M2sKKzc3MTc3IGE5MmYwYTBhZmU1Njc0OTlkOGFjMmRlMmFiYjBlZTBhMWZjNGQ1ZjAgcmVsZWFzZTMxLW1haW50Cis3NzE3OCAzODRhN2EzNzA5ZGM4ZjllMGVkOGE2ODJmZTZkMWYyNzJlMDNlZjc4IGxlZ2FjeS10cnVuaworNzcxNzkgYmY5N2FjZjhlY2IxODcwYzFkZjhjMDlkZGY5ZjZjMjk4YjBkOTU2NCBweTNrCis3NzE4MCA3YzYzMDkzMWNjODMxYzdlNmI3NDQ0OWJlMGU1ZDYxYmE5NGI2ZWRhIGxlZ2FjeS10cnVuaworNzcxODEgMjM2ZGNmMTcxYjc0NmYyMjNkMmVkMDRlNGRkODdiOTE3OTY2MjUzNSBsZWdhY3ktdHJ1bmsKKzc3MTgyIDFlOTJmZTU5MzkxNmRjMGNlMzYzMzBlYjA0NWI2OWQ1YjAyNTcwNGQgcmVsZWFzZTI2LW1haW50Cis3NzE4MyBkYmFhNGVlZWFlYjhkMjZmYTlkMWQwNjcyMzBiNWFhZmQ2OGEwZGFkIHB5M2sKKzc3MTg0IDVhZmExNjkxNDI5NWU1ZjdkNmQ0ODVhZjE5ZWI5MzA4NDM5NmYyYTIgcHkzaworNzcxODUgMjVhYTQzZTQzMDJiZjVkYjNjMzkyZWVhY2ViNzJlMzJhZjY5Mzk4YyBsZWdhY3ktdHJ1bmsKKzc3MTg2IDdkNmJmZjcyMjE5NTBmZThkMjJkMGJjMjJmNmE5MmFiMzMwMWIwZDEgbGVnYWN5LXRydW5rCis3NzE4NyA4NTZhNDVjMGI2YzQxYzY1ODg2YjcwYzcyZTMxMjRmYzlkZDA2OTVmIGxlZ2FjeS10cnVuaworNzcxODggNWI0NzE4NDdmNmVhNmVjNzM3ZTNiY2I5MWRmMjAwYjUwMjgzZDYwNyBsZWdhY3ktdHJ1bmsKKzc3MTg5IGFiNDBiOTM2YmQxYzE0MzE3ODY0ODk5OTc4MGRhZWFhMmVlMjM0ZGIgbGVnYWN5LXRydW5rCis3NzE5MCBlNjJiZTA4NDc4YmNkYWI2ODQ4ZWM5N2EwYzFmZDVlMWIxZTYyOTI0IHB5M2sKKzc3MTkxIDE2NjZlZThkYWY5YjEyNDkzMDFhZmVjZjA2OGFiNWRkMTNjYjg1YzYgcmVsZWFzZTI2LW1haW50Cis3NzE5MiA1MzEwMGRiMzUxMjg0ZjdiNTBlYjc2ZDFkMDkzOGI1MzI4MWQ2YjRlIHJlbGVhc2UzMS1tYWludAorNzcxOTMgODRiMDBlNmJkNjliMjFmZTNmNGI0ZjIyMDE2M2Q4YmZkNzQ2YTFmMiBsZWdhY3ktdHJ1bmsKKzc3MTk0IDYyMTJlZGMyMmNiZGY4Y2U5YWRkYjI1NGZlNmI3M2IxZjA3ZTgwMTIgcmVsZWFzZTI2LW1haW50Cis3NzE5NSBiYWJmYzA2MTIxMmMxNzQzZjMxMTVhZmRhMzE3NzFhZWExYzgwOWU4IHJlbGVhc2UyNi1tYWludAorNzcxOTYgZDhlNjRhODQ0NzNjZGQ1NGE5YzEzMWQyNjdjMGJiMzI1NTdjMzEyZiBweTNrCis3NzE5NyAzZTIyYzdlOWYzMDdjYjFjOTNmNTM4ZGFlMTk4NWJmNmZjMjY4OTdiIHJlbGVhc2UzMS1tYWludAorNzcxOTggZTQ1NTNiNjA3YjQzZGZjMTdjYjM0YzM4MjQ0NjEyMDc3MDM4OTRhZiBsZWdhY3ktdHJ1bmsKKzc3MTk5IDQyY2ZiNzI3ZmY0ODVhNzhmYjUzOTIxYWIwOGRmYzlhNDZhOWFhZWEgcmVsZWFzZTI2LW1haW50Cis3NzIwMCBlMjI2MWI2MWRmMDY2MDViMmJkNWI0OTJmZGQ1MTY2ZWQxMjQxNzIxIHB5M2sKKzc3MjAxIDcxYmI4NDJiNzlhYjJlMzBhNjBlYzQ4YmI3NTZhNzNkNmZkNzQ5ZmYgcHkzaworNzcyMDIgMjEyYTcyMjg2NGExYWU4Nzc0ZjUyYTkyNmZkOTExYzU2YTE4MDdhYyByZWxlYXNlMzEtbWFpbnQKKzc3MjAzIDBiZTQ1YjVjZjBkNjNkYzMyNGJmNzU0OWM1YjNhZTEyNDZhOTgwN2UgbGVnYWN5LXRydW5rCis3NzIwNCBmY2U2NjExMjQxZDEwOTJjYTFiN2Q2ZTMzNTRhNmY4ODAyMjVkYjY4IGxlZ2FjeS10cnVuaworNzcyMDUgMWQwZmRlNTlkZGVhOGZhNGYxZDBiNmZmM2EyZjAxNDZmNThmYTBiOSByZWxlYXNlMjYtbWFpbnQKKzc3MjA2IDY4YTc1NGFiY2ZiNjhiM2IwMzFjYTY5YWQ0YjhiODgyNjcyZWE2YWIgcHkzaworNzcyMDcgYzAyNmI5MTBhNWU0ODY1ZWUyZjJhOGM5NTcyMGI2NDQ0NzJlOWExOSBweTNrCis3NzIwOCBmYzc1YTk5OGFkYmZlYTc0NzUzOTk0Mzc5MTk2YzJiMmY4MmU0YTNjIHJlbGVhc2UzMS1tYWludAorNzcyMDkgYWRiOTIxZjA0Yjg3NzU3NDAzZmFiOGJiMjliMzJkYmE1MmM4OGVmMyBsZWdhY3ktdHJ1bmsKKzc3MjEwIGZmMmFiYjk0YzY4ZWJmNTJlMmE1OWJmZTc0NDNhZDNjZTMxMTgzYmUgdGFyZWtfc3lzY29uZmlnCis3NzIxMSA5YTU1YjExNzNkMjAwNmM0Njg0YmUxOTI2ZTFmZjQyZDA3ODQzZjA1IHRhcmVrX3N5c2NvbmZpZworNzcyMTIgZjAyODgxMzMyMzQyYTFhNzZmMDM3MWIwMDE1NDFhMjIyOTllYTAxYiBsZWdhY3ktdHJ1bmsKKzc3MjEzIGJhYTcwZDQxYzliZGI1YmVkMGQ3NGRjMDk5ZDYxMDM4NzFkZjIzOTQgbGVnYWN5LXRydW5rCis3NzIxNCA5NDE4ZjRiMDEwNDUxZjdiNGQxZmQwMmI1ZWIwMGZiN2Y5MzQyYzcwIGxlZ2FjeS10cnVuaworNzcyMTUgYzM1MDc1ZjJhOGYzMGU1YWZkYzNiZWVmOWVmZmQ2MGFhNzFlYWRjOSBsZWdhY3ktdHJ1bmsKKzc3MjE2IGIwZGQ2YzIxZGNiZjQ0ODNiMWIwNWViNWFiMDRhOWE1NGRjMDNiMjEgcHkzaworNzcyMTcgNGZmYjkzMzg5MjU2ODc4N2FmMTM1MTg2OTY2ZTRkYmUzZThkMjc2NyByZWxlYXNlMzEtbWFpbnQKKzc3MjE4IDJkZTI0YmIzM2NjNTdjNTBjZmE2NGMwNTQyMDk3YTUzYWVlMmQ3MWUgbGVnYWN5LXRydW5rCis3NzIxOSAxMzk0YTQwM2RjODllNWI0MmFiNDQyZjYyNzYxNjFjOWRhZWVjMTgzIHJlbGVhc2UyNi1tYWludAorNzcyMjAgNzhjYTY5Y2ZjODk3OGI3Mzk5OWYzYzE0NDU2NGE4OTJhMTY4NDcwOSBweTNrCis3NzIyMSBmMDllYjkyZWQwYWIyYWY1NTFhNjdiMWVmYjIxMmYxZWYxMjMzMjE4IHJlbGVhc2UzMS1tYWludAorNzcyMjIgYWM1MjhhOGEzNmNmNWM1MzQyYzgzYzc2OTRlNmYzYjQ0ODQ0OGRjMyBsZWdhY3ktdHJ1bmsKKzc3MjIzIDc0N2IwMWEwNTMwMDY4NzZjMzk4OWFhMDI1ODViYjE3ZjgxYzMwMmEgcmVsZWFzZTI2LW1haW50Cis3NzIyNCBhNzI4ZmE0ODFhZDQzODg3NGFlNjNlMWE2ZDdjYWVhY2I1OWNiZDc1IHB5M2sKKzc3MjI2IGI1YzFjZmRjNjhiOTI5ZjQ0OWE1ZTVlYTY2Y2IwZmM4Njk2M2U4YjMgbGVnYWN5LXRydW5rCis3NzIyNyA2YzhjMDQwYzE0NDNiNzUyYTJjNjQ4M2M1MmNmMDkzMmM2MjgxMzQxIGxlZ2FjeS10cnVuaworNzcyMjggMThiZDFjNjdmNWUyZDRiZjgxMTYxNTVlNjU1ZTg3YjdhODg3YzAyMyBweTNrCis3NzIyOSBiOGUzOGQwYTUyZDdlMTI3ODhiMDkyZGJiMzU5NDg0MWY4YzkyZjU2IGxlZ2FjeS10cnVuaworNzcyMzAgNmQxNzAyNWM4NGMxNGU0YThmMzFlYjQzY2NhZDdlMWZjMzUwNmMwNyBsZWdhY3ktdHJ1bmsKKzc3MjMxIGZjODdhMmZjNDdhNTk1ZWFiYjU2ZjVkMTE5ZDU4MDA4MjQ2ZmIwMjIgcmVsZWFzZTI2LW1haW50Cis3NzIzMiBiZDI0ZTFlOTBmN2NjMjY2ZmY4YjMzOWU5NTJjZjY5MjA5Yjg1ZWU4IHB5M2sKKzc3MjMzIGFkYzljZGMwMmRmMTAwOWM4ODczNDZlMjdkYWU0NDE1NDk0YWUxNTkgcmVsZWFzZTMxLW1haW50Cis3NzIzNCAyN2M5NDZmZjc2YTNhOTJjOTkwOWJhOGMzOTRmNWIyNDNjNjhkMmUyIGxlZ2FjeS10cnVuaworNzcyMzUgNThhNWJiOTcxZTk1MmI3YTVlNjkyNDgxNTc3YjlhY2YyNmRiNTQzNiByZWxlYXNlMjYtbWFpbnQKKzc3MjM2IGMyZmIwNzc0MjQ0NWNmODhmZmVhZDFmNDI0OTRhNjA2NmExMjFlOWQgcHkzaworNzcyMzcgNDZkNjBlNWZmMTAzZTk1YzQ1MWExNDQ1NGVlMDkzN2JjNWEwMmY0MyBweTNrCis3NzIzOCAzOTBkNjc0ZWQ0YzczMjQ3ODYzODk5YzMwY2Y3Mjg3MjFkMDRjMWMwIHJlbGVhc2UzMS1tYWludAorNzcyNDEgZGRmNjFjZDc3NWUwMTlkNGJmM2NhOTczODE0ZDJiNWYxYzVjM2EwZiBsZWdhY3ktdHJ1bmsKKzc3MjQyIDYyNjNhNmZiZjdkOTM0M2Y4NWNmMjU0ZTBjZTNlMjA0YzllZjM1YzEgbGVnYWN5LXRydW5rCis3NzI0MyAyZDVhYjRkMDhjODg1MGI0ZmE3ZmJkMzFhOTA4YzE2MGQxMzdhZjgzIHB5M2sKKzc3MjQ0IGEzMjY2MWIzMzRmNjc2ODM4MzlhM2VmMzdkZjY5NDgzNGE4MmFkOGEgcmVsZWFzZTI2LW1haW50Cis3NzI0NSAzMTMyNjVkNGUwMzI4MTJlZmM3ODAzZWJiNWIzNzZhNjgxYTM3YTU5IHJlbGVhc2UzMS1tYWludAorNzcyNDYgYTEwMzVjYjRhOTI1ZmM4MjE3OWU0NmQ0MTdlYWJlOWY5MGVjYzU0MiBweTNrCis3NzI0NyBmNWU0OTZhODQxN2YzMTVjNGEzYmU0MThmNjU1N2E3ZThjMTY0MmFhIGxlZ2FjeS10cnVuaworNzcyNDggYTZhY2UzMGNiOTEyMjRhOTVhMjgxODVlZWZmZWExMzIzZDdkZjQyOCBweTNrCis3NzI0OSA0YWNkOGZhZWEyZDkzM2I0OTc3MDM5MTRjMmFhYmI1ZDA4ZjA4NTUwIGxlZ2FjeS10cnVuaworNzcyNTAgY2M5N2E5NmU0YTA5MDgyNjc1Njc1ZjIwOGI0NmRiMDFiYzM0N2Q4MCBweTNrCis3NzI1MSA5MjYxMTg0MTc5NzkyYTg4MDFlNTRiNWZjMjEyODRmOGE0ZDdiZWJlIGxlZ2FjeS10cnVuaworNzcyNTIgZmY1YmMyZmEzOGQ2NmVlYzllZGRiODAyMWZkY2MwNDc4ODdjZGY1ZCBsZWdhY3ktdHJ1bmsKKzc3MjUzIGJlMjdlYTJiMzY3OWYwNGE3NGM2YzBlNmI2ZjdiZDQ2YTQzNmM0NDIgcHkzaworNzcyNTQgZWI5NWZkOTVlNjVlZGViYjk4YWI4MGEwNjY5NTA5YmRiZTIwMjU3ZSBsZWdhY3ktdHJ1bmsKKzc3MjU1IDU3Yjk5NmMzZDhmZmIzOGRjOWIyZjc5MDg3ODM5Y2NkMDUxZjljZGQgcHkzaworNzcyNTYgZTk4MTJiODE2ZmZkYjE3OTVjMzBmZTViMmVhODFhODU0MzY2ZTk5ZSBsZWdhY3ktdHJ1bmsKKzc3MjU3IDkxYTU3Y2MwMDIwZTRhYWM2ZmY5M2QzMmQyMTYyZjlhMmIwODIzOTggbGVnYWN5LXRydW5rCis3NzI1OCAyYTIzOTk1MzQ1OTE3Y2E3MjZkMmYxNjI5MWIxYzc5MGJjZDM0MzRiIHB5M2sKKzc3MjU5IDM4NTZjNzY0ZTFmNTJjMjA0ZWQ4MTM1NzJlMWJmYjc4MzA1NTZkZGQgcHkzaworNzcyNjAgZmUxMTdlNWQxM2ExZmNhZWU2YTBiN2VhOGFhNjQ3YjlhNTlmYTM3ZiBsZWdhY3ktdHJ1bmsKKzc3MjYxIGFiYmRjMzFlYTc5MDdiMDU0ZDAxYzY3ZjA2YTUzMTZkMDM0ZThlNjcgcHkzaworNzcyNjIgZmQ5MTc0NGIxY2FhYjQ5ZDBmYjdiNGIwMzhkODhlZTk5NjM0Mjg1NCBsZWdhY3ktdHJ1bmsKKzc3MjYzIDcyZTNlODViYWM4YjBkYzAyOWM1YzU0NTZhNmJjMjQ2YTRiYWM2NmIgbGVnYWN5LXRydW5rCis3NzI2NCBhMTlhZDI5OTA5NWYyN2RiMDJhNWFmZjQ4OGQzZGQ2OGE3NTM4YTFmIGxlZ2FjeS10cnVuaworNzcyNjUgYjAzODZmZTY1MGM3NTk2MGZkMzk2OWMwODM2ZTM2YTllNTE4ZjQwYSBweTNrCis3NzI2NiA4YzRhNzA3YzBiZDhlZWM2OTlhMGUwMjRjYmY2ZDBjZGEzNGNmOTFjIGxlZ2FjeS10cnVuaworNzcyNjcgYzNhZGNmYWMwNzcyMjg2MmI2MjJhMWVkOTM4MTQ1MjJhOTJlNWQzNyBsZWdhY3ktdHJ1bmsKKzc3MjY4IGEwZmNlOTY2NWY0NGFkOWYxM2JjZmYzZjgxNTYzZDFiMTY5OTYzZWQgcmVsZWFzZTI2LW1haW50Cis3NzI2OSAyNDAyZjI5MWU4MDE5YmFlYjliYTkwOGE5NmRiNTE1NjQxYzQ1MzIyIHB5M2sKKzc3MjcwIGU1NDQzNGQyZTJhN2QzN2UyNGIyNDQ1Nzk1NzVjYjVkZjNjOGZiMDMgcmVsZWFzZTMxLW1haW50Cis3NzI3MSBmNmUzNDAwMTRmOTY5NjlkZjZmZGY1OTczOTNlYjU1Nzc4NThlNDg1IGxlZ2FjeS10cnVuaworNzcyNzIgZWI5MjRmYWQ5MjcyMDYyMGQ5NDg2MmE2Y2JjZTU3NTk0NGU1ZTRmOCByZWxlYXNlMjYtbWFpbnQKKzc3MjczIDAzYmZlMzJlZjg0OWNhODYzZDY4NDAzODEwZGY2ZDY2NDU5Yzk5NjIgcHkzaworNzcyNzQgMzUxZmM0MjUwYzFiMGM3YTY1OTlkODI1ZWFkN2ZmNjVhMmRlNDk3ZCByZWxlYXNlMzEtbWFpbnQKKzc3Mjc1IDBmOGE1ODc5MjU2M2MzMzU0YmExZWIzOGRhOTk1NjUzZmNlOWEwNjggbGVnYWN5LXRydW5rCis3NzI3NiA5YjlhZGM0MmM3M2EyYWViYjE0OGNlNGZjYzRhZjZmOTdjYjhmZDliIHB5M2sKKzc3Mjc3IDljMWYzMDZmYjBkZmE1ODQ4YjUzMDM3ZGFiM2Y0NDQwZDVkOTU2ZDcgcmVsZWFzZTI2LW1haW50Cis3NzI3OCA3NDRlMzkxZTQyZmRmMTYwMGU1ZDUwN2Y0NTU0ZGMxMTk4NjVhZjNiIHJlbGVhc2UzMS1tYWludAorNzcyNzkgNTE3NDliNmQ2MmQzZWIyYTQwMGY4YzMzNWI2NjdkZTlmNmYyZWI5NiBsZWdhY3ktdHJ1bmsKKzc3MjgwIDkwZjFlOTJkYjZmMjI1NThlM2VjNGMzMjkxYTIxZjljYzY1N2NmMmQgcmVsZWFzZTI2LW1haW50Cis3NzI4MSBiNTU4NTAwNzBhNTUxOGUzNzEyYTFmY2E3OWI2ODViN2JmZmIyMzkxIHB5M2sKKzc3MjgyIDIzNGJlYWFmZDBjNmRkMmEwNGYzMjYxOGQ2M2FhYmQ0MTM3ZDI4YTAgcmVsZWFzZTMxLW1haW50Cis3NzI4MyAwNmM5NjhlYjRiNDAzYzI4NTUzMjUwZDI0MTJjMWQ2YzQyNzBmZmRlIHB5M2sKKzc3Mjg0IDdiY2U3MjZlYzQ0MGIxNmRjMWU5OGUwOTUyZWY5NDdlNDg0OGMzMTEgbGVnYWN5LXRydW5rCis3NzI4NSAzOTExNTI0YWZjMmQ2ZjFmZTgyMjZmNGZmZjAyMzY1Y2QzNWE2MTQ3IHB5M2sKKzc3Mjg2IGM3MjY1MjE0NWIyMzVkNzM3MmM4OGNjZTMwYTczYTEzNzhiOWJjMTkgbGVnYWN5LXRydW5rCis3NzI4NyBlY2M4YTQ1ODk0Yzk0MWZhMmFmMWM2YjYyNGE4MDY5NTNmYThmMzljIHB5M2sKKzc3Mjg4IGM4NTdiNTY2OTliNTcyZDZhYjY4YmQ4ZDViNDI2MGM3ZDU4OGE1NGUgbGVnYWN5LXRydW5rCis3NzI4OSBjNTgwMmFiOWUzNGU3MTU0ZjRjZDUwYjY3NTRiZDBhN2JmMWZjYWJmIHB5M2sKKzc3MjkwIGZjODMzZWRiYTc2OTlmYmJjY2VhZDhmYjg0NTVmNTUzNGY0Y2Q1ZWUgbGVnYWN5LXRydW5rCis3NzI5MSAyY2JkYWIyNDk4NTg5NzBkODQyM2I4Yjc5MjQ3ZjFjNTk2MmIzMTFlIHB5M2sKKzc3MjkyIDRiYzI2YTgwZTczN2VhM2QzZDU1NmJlOTM2NjQ0OThmZjViNjU2NmMgbGVnYWN5LXRydW5rCis3NzI5MyBmN2UwOWJhMGNiNTVhM2YzYjk2MjI5Y2JiMzEyY2IyZmUxNTVjYmY1IGxlZ2FjeS10cnVuaworNzcyOTQgNjA0OWZlNDAyMmZmYTQ2N2MwZjA1NDY4MWE3ZjYzMWFiMzVjY2UwMyBweTNrCis3NzI5NSBkMzk5ZjZkYzllZTQ4MzlmM2VkMzczNGZkODYwMDM2ZjEzMTI3ZWRiIHB5M2sKKzc3Mjk2IDBmZjJkYWE4M2QwZDdkNTNlYjM5ZDdlZWQyY2I3YjQ2NWVkZWJiOTcgcHkzaworNzcyOTcgZWZiYWM3ZDNhMzY4NTA0NGZiNWMyZDg3Mzk5OTYyOWUyNzU1OTUxZiBweTNrCis3NzI5OCAwZmNlZjlkMzk1OTQwMWIxODRhZGMyYTkxMmEyMWI2Zjk2ODE4Y2I1IGxlZ2FjeS10cnVuaworNzcyOTkgNTljNDcxNDE4NzE4NWYwOTFkODA4MTU3MDgzNjY3ZjcxM2MwZWNkNSBweTNrCis3NzMwMCAyZjY3NjI1ODg2ZjYwMDM1NTdlYjdmOWE4ZDQ4MTk2ZTQ3OTY3YmZmIHB5M2sKKzc3MzAxIGQ1NzI5MWY1ZTY2ODExYzFiMTk5NTQwNjEyY2NmZjkzMjk4NjY3ODggcmVsZWFzZTMxLW1haW50Cis3NzMwMiA4Y2EzNzc4NTMzMjFlM2VkNmE3MTQxY2JiZjU3NzNkMmVmN2FkYmVkIGxlZ2FjeS10cnVuaworNzczMDMgNGZiOGVhZjE0ZjA5Y2IxOWY3Zjc5NDUzMjQ1ZmFlZGNmODk5YTU5NiByZWxlYXNlMjYtbWFpbnQKKzc3MzA0IGUxZjEzMTNjZTZkYTE4ZjcyZjkwNDBlNWU2OTY2ZjI4NThmNDE5MDkgcHkzaworNzczMDUgNzBmNmZhMzA4NGU2N2RkODgyODg2N2MwNjY0MjEwY2JlMTQ3NDQ1MiByZWxlYXNlMzEtbWFpbnQKKzc3MzA2IGFmZjVkZTVjYzQ0MTBmZDhkMTJlZmFiYTY3OTE1YTI2MTk2YmE0NzIgbGVnYWN5LXRydW5rCis3NzMwNyAwZmUyNWUwN2I3N2IzY2NhZDFiMzc5YmRiZjhkNTNlZGQ2YzEzNTM2IHJlbGVhc2UyNi1tYWludAorNzczMDggMzE3NTJjYTAwN2NmMmYzZTQwYjUzYzJmMDdjZmZjMDIxMWIwMWIwMCBweTNrCis3NzMwOSBmYTJiMjdmYTU0MTllODFmOWZjNTRkZDhkNDBlZGNlOWQ1ZjFjMjJiIHJlbGVhc2UzMS1tYWludAorNzczMTAgNDQyZTE3MGI1NmMzZjdmNDlmZGFlZjMwYTExOWFkYzk1NmEzNDA3MiBsZWdhY3ktdHJ1bmsKKzc3MzExIGU2MjJiMmNmZWYxMmQ2ZmYxOTM4NjVkYTRiOWJkM2ZiZDRlY2JlMDIgbGVnYWN5LXRydW5rCis3NzMxMiA3NzY2NDdlM2ZiMDdkZDI0YzRiOGNmOWJkMzkzZDI5MTNmZTQ0M2Y2IHB5M2sKKzc3MzEzIGIwNTc0M2NlNWU5NDMyZmY1Njc1OTMwYTNhZWZjN2JiOWMyNmY5N2MgbGVnYWN5LXRydW5rCis3NzMxNCA0YWFiMDI5NTRkZTFkOWRjZGQ0MjE0MTAyNjZlMjdmODUzYTU0ZDc3IHB5M2sKKzc3MzE1IDIyZTBmYzIwZTkxMTMzZDg3M2NlODVkOGVhZDI2ZmYzODJjMjNiMjEgcmVsZWFzZTMxLW1haW50Cis3NzMxNiAyY2RiYTUxNjdkZjFhMTU1ODg0NTQ4NjU1MmI1ZGIzN2I4MWIzYmM4IHB5M2sKKzc3MzE3IGEyZDZkMzQ1NDcwZTk0YTM4MDY4NWFiMDU3Y2UyYWRlMTU5MDhiNzggbGVnYWN5LXRydW5rCis3NzMxOSAzZWNlZWYzNzgwNjVhNTVhOTdkNmIyZDIyZDVjNjc1Y2I4MGEzYjEwIHJlbGVhc2UyNi1tYWludAorNzczMjIgZjlkMmMzNDI2ZTE0OGM1MTE1YTMzMjg2ZmZhM2EwMTZhNWRmNzMzYyBweTNrLWNkZWNpbWFsCis3NzMyMyBkNmJhMzdlMzI3NzYzNzA2N2RkODJhNThjZDU3MWZhNDFkZDUyNTg1IHB5M2stY2RlY2ltYWwKKzc3MzI0IDg4MmM5ZTcxMWEyZDA1OTNmNGNiZDVmZDNjMDk2NTA4NDExNmNlZjQgbGVnYWN5LXRydW5rCis3NzMyNSA4NmJmNDQwYmY5YmYzNTdhY2RjYjQzMDc2M2QxZGNlN2VmN2JkMzcwIHJlbGVhc2UyNi1tYWludAorNzczMjYgNjEzYjk4ZDBkODhiZTAyZjdkNTQ3ZTIwODIzZGUzODQ1MmFlODAxNCBweTNrCis3NzMyNyAwN2E3NDlmMDY2YTExNzFmMzViMzY0ZTgyMmZkMjhjOTNlNDRmMTEzIHJlbGVhc2UzMS1tYWludAorNzczMjggYTE5MDE3MTFiMjI1YjQwMzliY2E4ZWYxNTk3YWUyYmRlYTg3YTkzYyBweTNrLWNkZWNpbWFsCis3NzMyOSAzMDcwNjZmMDJhYzUyYTQyMzNkN2I3OThiZTUyNTFlMDE3YmZhNTljIHB5M2stY2RlY2ltYWwKKzc3MzMxIGY1NjBhODE3YmZjYjUxMjUyMDQ2Mjg1OTY2MzcwOGViYWM0NmY0M2QgbGVnYWN5LXRydW5rCis3NzMzMiA4ZTgyZGQ1NTIyZjAzOWM3OGY4NmMwMTYxZGZmMzM5M2Y5Zjg2ODZiIGxlZ2FjeS10cnVuaworNzczMzMgYThmYmYyOTRkMjJlNWM1ZmQ5ODRmNWQxY2M2ODIzYTZjNGJkNjA5NiBsZWdhY3ktdHJ1bmsKKzc3MzM0IDk5ZTdjMWI4YjFlMWVlMTk4Mzk3YjIzZTRjYzAxMTYyMjM3MTY2ZTMgcmVsZWFzZTI2LW1haW50Cis3NzMzNSBiM2JiOGIzZTVlNGViYTVlNjhhYTIyOWNmOWUzNWQyM2VhNzZhYzQyIHJlbGVhc2UzMS1tYWludAorNzczMzYgMGZhOWVlNGVhYjg4NzQzZjU4MDIwZTM5MjY2ODI5NGQ0Y2UzYTgwYyByZWxlYXNlMjYtbWFpbnQKKzc3MzM3IDZhZDUzZjY3MDU2YTg0MjA3NDdiYzFhOWEyZjlkMmQxYzljNDU5NzUgbGVnYWN5LXRydW5rCis3NzMzOCAyNWMxZTU3Y2ExYjNlMTg5N2Q4ZmMzYTJmYjc4NmM3ZmNiYTk0YmM5IGxlZ2FjeS10cnVuaworNzczMzkgNjE0NGNkNGQ0MjFiYTMyNmRjYWFhODRmYTZjYjI1YzE0YzVhY2YyOSBsZWdhY3ktdHJ1bmsKKzc3MzQwIGM2MTgxMzdmM2ZkM2I3ZDQ5NWIxOWQ5OWYxNDIxMWMyYjdkZThkOTUgcmVsZWFzZTI2LW1haW50Cis3NzM0MSA3YjEyNTQ1NzM2NTY0YmM5OTcwNzU2MzgyOWFjMDViZjhhMDg5Y2YxIHB5M2sKKzc3MzQyIDg3MTYxMDY5ZWVmMjNmY2VlMjdhNWFlM2M0ZjY3MTgwZGUxNzE0YzcgcHkzay1jZGVjaW1hbAorNzczNDQgMzE1YjU4Y2IxM2E2MzdjOWRmNTEwYTY3YTRiOWNmN2E5NjMyZGFhMyBweTNrLWNkZWNpbWFsCis3NzM0NSBkODhlM2Y1OThhYTQxMmNmM2MzZDdiNzc4MzUwZGI4YTcyZGQwOWY2IHB5M2stY2RlY2ltYWwKKzc3MzQ2IGRlNzNiODU4ZGUxMWQyMTM5Y2M0ZjY0ZmRkY2E0ODZhZDIxNmZiYjQgcHkzay1jZGVjaW1hbAorNzczNDcgZmU1ZWM5OGRlOWRhMWU3MzA5ZGY1NDA3YjcxMjAyZDViMWY5ODA2ZCBweTNrLWNkZWNpbWFsCis3NzM0OCBiODI2OTQxMDcxNTFjMjhhNWUxY2M0MDZkODE3MGUwODQ4ODViY2M1IHB5M2stY2RlY2ltYWwKKzc3MzQ5IDIyNDU4ODRjODZlNjE1NzFiZDI3ZGI3MDgzYzBmNThjOTg2MjA5OWQgcHkzay1jZGVjaW1hbAorNzczNTAgZTEzZDA3MjQzYzczYTBjODJjMDhhZGIwMWQ0ZDg2Zjk2NWE1OTk4NCBweTNrLWNkZWNpbWFsCis3NzM1MSA3NDBhNzg3ZGM1OWEwYjIzZjRjY2Q2ZjZmY2I2MWVjNmM5ZjcxYmQzIHB5M2stY2RlY2ltYWwKKzc3MzUyIDE1OTA0ZDViOThkYjQ3NjAwYTViODk5M2RlZmE5N2QwMWFmMjQxNTIgbGVnYWN5LXRydW5rCis3NzM1MyAyMmEzMjkyY2Y2NzIyYzdkMGVkZjQ0ZWFmZDVhYjgzNGYyZTM2NjEwIGxlZ2FjeS10cnVuaworNzczNTQgZTBiN2U4MWFjZjZmMzMyNWM5NzE5Njg5MmI5NDY5NzA4YjY1ODI5OSBsZWdhY3ktdHJ1bmsKKzc3MzU1IDg5MDNlYTZhOWU2NDc5MTU2NzQ1NWE0ZmFhYWY0ZWFiMzBjOTFlMmYgcHkzaworNzczNTYgZDM5NDIwYTI3ZTY0NjA4YzYwNzc2OTVmMTQyYjFkNmEyZGEwNWRhOSByZWxlYXNlMzEtbWFpbnQKKzc3MzU3IGFmZTZkZGU4MGFiYjM5ZDYxODY0YmFhMDc0ZjUwODVjZDIwNGM3YTMgcmVsZWFzZTI2LW1haW50Cis3NzM1OCA1MThhY2IxMmYzNTdlYmEwMGRkYWMxZTg5YTYxY2Y4NGNlZmVmNzk1IHB5M2stY2RlY2ltYWwKKzc3MzU5IGE2NGNmZWYxZGEwNzUzN2YzNjcxNGZlMzFkMGRmYjQyMTExNWE4ZTQgbGVnYWN5LXRydW5rCis3NzM2MCBmMjFmMmM5MzMyOWViMDg3ODg4ZDU4ZWZlYmY0YzlkNjJiOWNiZmE3IGxlZ2FjeS10cnVuaworNzczNjIgMTBiNjY3OGY1YzA0YjNiNjA1YjU0OGZlYmJmNjhhYTY2N2RjZmE0MSBsZWdhY3ktdHJ1bmsKKzc3MzYzIDM1ZmUyMDY5YWIxZDllYTg0ZmRhOGM3ZDUyMDUzYmY2ZDc5MzZhZmEgcHkzaworNzczNjQgNTllMWIwMzA2YzBlODZiNGNkZjRjNzg1OTRlYmEyMGE1YjU5ODczNCByZWxlYXNlMjYtbWFpbnQKKzc3MzY1IDg0Y2FhYzcxZDc5YmQzZTllZTdlNzRlNWNjYmI4YTNjOGQ1MTJkYjIgcHkzaworNzczNjYgYjBlZDM1Yzk5ZGM2ZDlhMDNmMmQxYjIzOTNjMDJlMTcxZTBlMjYxNyByZWxlYXNlMzEtbWFpbnQKKzc3MzY3IDdhNjc1MTViZjhlMzA4YjY4NGYwOGJlZjgwNzU1NmMzOTc3MTM1M2UgcmVsZWFzZTI2LW1haW50Cis3NzM2OCA3Y2FmNTRjZTUyOWU3ZDIxYjNjYzRmNGViMDEyZmQ0OWJmZjMzNmNmIGxlZ2FjeS10cnVuaworNzczNjkgMGRkMWFhMzMyNjVmMzhjMjQ2NmRjNzVmOWIyMDcxYTJmZGZiN2Q1NiBsZWdhY3ktdHJ1bmsKKzc3MzcwIDllOGQ3NzUwZTQ3MGI4ZTAyOTdhODA5NmM3N2U1MTFmYWVlNDkxYzggbGVnYWN5LXRydW5rCis3NzM3MSBiYjcyNzAzMDAwNDdmNDQzODY1MThlYzNhNWMxNjNiNmViMDNkZGUwIGxlZ2FjeS10cnVuaworNzczNzIgMGM3ZWFkMDM0YTAzYTkyZWQ1ZDVkNzc5YjI2OGY1MzJkNGZmOWVlMiByZWxlYXNlMjYtbWFpbnQKKzc3MzczIGRhM2ZkN2E3NzlhY2QyNzgwN2RmYjQ5NGM1ZWNmMmY4MjhhNDY4ZWYgcHkzaworNzczNzQgZjNmZTU3OWU4ZjE0N2FmMTU5M2IyOTYwNDMxM2EwZmFhMjExOGI3YyBsZWdhY3ktdHJ1bmsKKzc3Mzc1IGY1Y2ViZjExZDVlMDg5NTE4MjgwN2Y4ZDgwOTdiOGVjZDUyOTM5ZTAgcHkzaworNzczNzYgYWM0OTMxYWIwMzY5ZTYzZGRlMGJmZmVkMmUxNWVkNzMwMWM0Nzc5MiByZWxlYXNlMjYtbWFpbnQKKzc3Mzc3IDYxNTAyNzEwZmNlOWYzNjkzNGU5NzEwMTdjNWNhMDM1M2UxOTBiOWYgbGVnYWN5LXRydW5rCis3NzM3OCAxYmRhMWY2Yjg1ZDRhZTBhYzk3OWQ0YjA3MDllNTNkY2ZlYzYyMmRjIHJlbGVhc2UyNi1tYWludAorNzczNzkgZDg0NjgyMDhlODgyNDYwOWU0ZDQ4ODBkNjM2YTFhY2E2NDE1ODIyNCByZWxlYXNlMjYtbWFpbnQKKzc3MzgwIGExZmI1NzU1MzFiMTAzNGI4ODY1MjI1ZTg4M2IxMTI3ODc4NTQ1OGEgcHkzaworNzczODEgYjc3NDk1Yzc3YWU0MDdhMmUxNDRlNjI5YzM5ZjU1NGRkNDEzNTg2YiByZWxlYXNlMzEtbWFpbnQKKzc3MzgyIGFlZTVhMWYzMmIwMGJmNjAxZjVjNjJiZTZjYTY0ZTdiN2M1YjRkODggbGVnYWN5LXRydW5rCis3NzM4MyA0NDFiZmNkNTVmMmQ5YjdhMzRiOWRiNzdkNTVlMzM2OTRlYjc1ZDAxIHB5M2sKKzc3Mzg0IGFkYzg1ZWJjNzI3MWNjMjJlMjRlODE2NzgyYmIyYjhkN2ZhM2E2YjMgbGVnYWN5LXRydW5rCis3NzM4NSBiMzg2ZTUzZGY5MDY5MmM2YTI2YTllM2I1NzBjNDJjZWZhOWVmMTMxIGxlZ2FjeS10cnVuaworNzczODYgZTU3Y2ZjNTI2NjU2ZjY2ZDNmYzNlYTBiYTdjOTIyNzZjNGRmOWJjNSBsZWdhY3ktdHJ1bmsKKzc3Mzg3IDVhYjJiYzJmNmRiODE1ZWU1MTQ0Zjg4ODg0ZGY5ZjQwNWQ1YTFhYjIgcHkzaworNzczODggYWYxZWQxOTcxN2VmMzljOTMyMjcwYjJmYmQ0ODM0MGQwNDI1NmI0NSBweTNrCis3NzM4OSA4OWE5ZGQ4YzYyOGQ0YzA1NDFjMTk4ODFiMDVkMjM2NDI4NGU2YTMzIHB5M2sKKzc3MzkwIGFhZGZjMzFiM2YxNDFmMzg5ZmVlNGM1ZWZhY2UzNWVmMGE3NDkwZjIgcmVsZWFzZTMxLW1haW50Cis3NzM5MSA0Njc1ZjExZmIxMjVkNjllOTBiYmY4YjQxNDg1NjYzNzYyZmIzNWI4IGxlZ2FjeS10cnVuaworNzczOTIgYjQwN2U4YmVjYTRhNDdlNDBiYTRhYTZmYTQyMDFiZDJkZmQ2ZGNkOSByZWxlYXNlMjYtbWFpbnQKKzc3MzkzIGYyZDU0MDk2ZGM4YzI4MzkzOTA4MWM2YWE4MGRkZTZmYjRmOGQ4M2IgcHkzaworNzczOTQgZjljMGM0MTFmODBjY2QxNjYyOGJlNDBkMTc5Y2M5ZTk2NTU1Mjg1NiBweTNrCis3NzM5NSBhYjg4ZGFhNGQyY2UyYzFmM2RkNjRmZDBjNDA5N2VjZWYwMWNhNzM2IHB5M2sKKzc3Mzk2IGE3YWIxYWJkZWI5MjBhNTRjNzM5OThjNzc2ZDgxZDllZjJlNjI2ZGEgcHkzaworNzczOTcgYzFiZWMyZGIxZmNkNzM1ZTcwMmFmY2QzZjU1ZmJmMGIwZWY3OWUxYyByZWxlYXNlMzEtbWFpbnQKKzc3Mzk4IDdlMmFmNGU1NzAzOWZiYjY3MWI0YjZmOTcxNDIwYmJjMTNjNGZiNDQgcHkzaworNzczOTkgNjdmN2EwZTllMjMzMjQzOWM3MDMyYWM0ZjlmNDc1ZDY4ZWU2MmNmMyBweTNrCis3NzQwMCBjMmZkZjI1MzI5ZmYzMGNmOGQ2OGMwYzBlN2NmNDc5ZDdiMjAzNzQ1IGxlZ2FjeS10cnVuaworNzc0MDEgMmNmZjNiY2U0MDk2NzI4Mzc4YjAxYTc3Mzg5MjRkOTZkM2ZlYTU2MCBsZWdhY3ktdHJ1bmsKKzc3NDAyIDFmMTc3ODE4ZjFkMGE3MzRmYzYxNDIyYzNiZjIyODlhMjQ4NjY1MTMgbGVnYWN5LXRydW5rCis3NzQwMyA3NTUwYjRiOTA1YzcwN2NmZGJmNDdmYjY1ZDUzMDg2YTdkMDQ4OTJhIGxlZ2FjeS10cnVuaworNzc0MDQgM2ZhNjcwN2RmOThjYzA0YzkyNDYyZjkyOTYyMzU0MTQ3Y2Q1Zjg0ZiByZWxlYXNlMjYtbWFpbnQKKzc3NDA1IDc4YzNlYjVjMDVmYjI4NjMzNTViOTgwMTUzOTVmYjY2OTQxYmYwNmIgcHkzaworNzc0MDYgZTdmYTM5NTk5MzU1NDFhOWNiMWM1MmUyYmJmYWViMzE5MWY0ZmJiYiByZWxlYXNlMzEtbWFpbnQKKzc3NDA3IDMzOThhOGI3NDMzZDA2MjZlNzYwZjlmZWE4YTFhYjc3YzA3YWM0MDMgcHkzaworNzc0MDggNDA1YzliNjM5ZTA1NTE3ODM5N2Y0YTJjNjY0Y2RiNTc3N2RiM2VkMSBweTNrCis3NzQwOSBmYmY0OTg3ZTUxNGEyNzI4M2YxOTJjZjc1NjU0OWQ2MGM0N2FkOTczIHJlbGVhc2UzMS1tYWludAorNzc0MTAgM2UxNzEyMjIxZmE2ODY3ZjVkYmUzMTMxMzBkOGViNGMwOTExNGVlZSBsZWdhY3ktdHJ1bmsKKzc3NDExIGE2NjY2NzcwNGFiMGU2ZTgxZmM2OWM5NGIwMjRiMmNhODhlMTBiMmEgbGVnYWN5LXRydW5rCis3NzQxMiA5N2E0MDQxNzllNTlkNDhlODBkMTJiOTExZjk2MzY3YWJkY2Y5NzJhIGxlZ2FjeS10cnVuaworNzc0MTMgMjU0MjU1N2ExMmJkNzBjZDI3Y2ViZjI2NDJlZDgwMDJiNTJkNWEzNiByZWxlYXNlMjYtbWFpbnQKKzc3NDE0IDcxZjI0OTFkOGYyZjRhNTdhODMwNTE2YmZjYzRhYWU4Mjc3MWUxOGYgcHkzaworNzc0MTUgNjhmYTk1M2I1ZTc2YjE0MWZkNzU3NWZmMmZhM2U1ZDViYmUyZjBlZCByZWxlYXNlMzEtbWFpbnQKKzc3NDE2IGNjMzJkNTdlMDZiMDQxNzYxYmFiYzU5YzkyMGFlZTMzNjc5NjU5YjkgcmVsZWFzZTI2LW1haW50Cis3NzQxNyBmMDAxMDllMTZlYWI5MDgzMDBmZThmZTkwM2YyMGM5ZDQzOGZkM2M2IHB5M2sKKzc3NDE4IGRkMzFiMWMwMzNiMmIwYWFiMDI3MGVhOWNmNGU5MWQ4NjVmNzljYzUgcmVsZWFzZTMxLW1haW50Cis3NzQyMCBkY2U3NGE4NzMwZjU3Y2ViYzA3M2U0NDVhYmRlMjIzZWMwYjdjY2I3IGxlZ2FjeS10cnVuaworNzc0MjEgMzNlNDAyOTA5Y2YyOWJhMGVmM2QxODMxNTkzOTdiZWExNmQzZjkwYSBsZWdhY3ktdHJ1bmsKKzc3NDIyIGVkZmVkMGUzMmNlZGYzYjg0YzZlOTk5MDUyNDg2YTc1MGEzZjViZWUgbGVnYWN5LXRydW5rCis3NzQyMyA4YTVhYzlmZjUwNTdmMGU2NmY2NTY4NWM0ZWU1MzYyNzVkYjk1MWMzIGxlZ2FjeS10cnVuaworNzc0MjQgMmY5MzZiNzgzMWI2N2NmZTdjZmQ3MDQ4ODVjM2NkNWYzYjUzOTI5NSBsZWdhY3ktdHJ1bmsKKzc3NDI1IDhhMzIwNjk0ZTUzYjVmYzc5NTY2NWU2MzI2MGMyYzEwN2NjZmZmMjggcmVsZWFzZTI2LW1haW50Cis3NzQyNiAwNWZiNzFmMDI1M2Q4ZGEyMmE1M2RiNGJmOTA3MDZmNzJmMDI3YjE2IGxlZ2FjeS10cnVuaworNzc0MjcgOGY1Y2QzZWI3YzczNGNmNjZlZmM1ZTZmODBlMGU0Njg2NzBkN2U5MyBweTNrCis3NzQyOCBkOTgwNWE5NjM1MWMwNjAxYWFkZjAzMzhlMDAyNjk1MGI0MmVlZDE5IGxlZ2FjeS10cnVuaworNzc0MjkgYjRjZTBjOGIwYmNmZmU4OWU0ZTIyODM3M2NjYzM2NjE5NGFmY2U0YiBweTNrCis3NzQzMCA5Yzg1MmEzMWU4N2NlMDFmNmZjMDJhOWUwY2E1ZTg2N2ZlM2NjMmM1IHJlbGVhc2UzMS1tYWludAorNzc0MzEgM2VlYzJlOWQ2NDkzZjU1YTBkMmY5MjJhZDM2N2UyMjkxNmQ4NjE2MSBsZWdhY3ktdHJ1bmsKKzc3NDMyIDIzNWM4MjY0MzQ3NGM4OTczMDBkMzQ4NTgwYWUzZjI0OTk5MGZhYzUgcmVsZWFzZTI2LW1haW50Cis3NzQzMyAzMmVhYjQ0M2E5NmIxMzUxZDBmNGIxOWI1MjdhNjJhZDYwZTI1NzJkIHB5M2sKKzc3NDM0IDNlYjI5YWM3YjIwYTY0YzkxY2M3NDUyN2UwMzliZGFlNWFjZjg5NGYgcmVsZWFzZTMxLW1haW50Cis3NzQzNiBmMjM1OGQzM2YxMDlkZGRkNWRmODMzOTkyYWUyMzBlYzFmMjUyNjFiIHJlbGVhc2UyNi1tYWludAorNzc0MzcgZWZhNTg2N2Q4YTE0ZDE5Y2I5M2Q3ZjM1NDE2OWMzN2NmYzFlOGRlNCBweTNrCis3NzQzOCBlMzBmY2I5NTZiNWZjZjIyYjFkYjYwY2RmZmNjNzE2NzBlOTJlMmFlIGxlZ2FjeS10cnVuaworNzc0MzkgNDFjZWE2NmEyNDI2YTU0NjBlMTUxZTIxMDc1OWVkMDY3NGNhZTMwYyByZWxlYXNlMjYtbWFpbnQKKzc3NDQwIDlmOTBkYjI3NjBkOWI4MWViYTE3YzIyMzhiODY2M2YyN2NkYjZkOTEgcHkzaworNzc0NDEgZDA4ZDg2ZWFkMzc1YTIyZGJiODMwMjAxMTZiMGQwZDA0ZmNhY2RiNiBweTNrCis3NzQ0MiA4ZmQxMmVhNjNjNmFjNmUyZDVkNjM5NzQwMWE4Y2UzYTc3ODQ1ZDc4IGxlZ2FjeS10cnVuaworNzc0NDMgMmY1NGY3ZTljMmIxOWI2MmI1OTU0NGM0NDE0ZTdiYTlmZjI5ODZmYyByZWxlYXNlMjYtbWFpbnQKKzc3NDQ0IDdjZTIyNThkZWU4YTU4OWM2NDYyOGM2NmEwMjE1MjcxNjU1MGZkY2MgcHkzaworNzc0NDUgN2Q3YjU3NjViNDZmN2M0ZTEyMjEyNjBkMGRmNDk5NDE2ZDM1NGI4YSBsZWdhY3ktdHJ1bmsKKzc3NDQ2IDFjY2E4ZDhmOWVlNTBlNmJjNjY2YmY2YTQwMDczZGVlNWJlZmY2MWYgcmVsZWFzZTI2LW1haW50Cis3NzQ0NyBjNWRiZWZiYzkzMjEyY2I3NWUyZTg5YWE0ODAxNWYzMWY2YTQxYmUxIHB5M2sKKzc3NDQ4IDIzZjIxZjQ4MjI5NDg1NWVhYjlhYmQ3YzZmMGFlMTE1MzNhY2FkNzcgbGVnYWN5LXRydW5rCis3NzQ0OSBiNzY0OTczM2EzNTQ1ZTQxYWM4MWJmZDc0MDJkNTM0NmQ2ZDI1OGE4IHB5M2sKKzc3NDUwIDJhOWY2NmRmNGRjNDY3OTM2M2Y1ZDMzNTlhMzU5NWZhYjgwN2VmMTQgbGVnYWN5LXRydW5rCis3NzQ1MSBiNGYzMDFjZWExMTU2YTRjYmY5ZThjNjA2OGUxMTIxYjM3YjU0OTI4IGxlZ2FjeS10cnVuaworNzc0NTIgYzMyZDNiMDhmY2RjMTU1OTg3NmI2YmJiMzAwNDMzNjc2NjUwODM5YyBweTNrCis3NzQ1MyBiZTMyZjYxMTE4M2I5MDNmNDY1MzdkNjU0MTJkYTkxNGU5Y2Q1NGJmIHJlbGVhc2UzMS1tYWludAorNzc0NTQgZjVmZDAxYmE0N2JlMGI3ZTg4MjI5NDU0NDJkMTZiZGMyNjcyODU1YyByZWxlYXNlMjYtbWFpbnQKKzc3NDU1IGI4MGQyOTYyOTc4YzhjZjE5ZDJlNWJkNmM1OWZlYjBmM2VkYWI1YmEgbGVnYWN5LXRydW5rCis3NzQ1NiAyYTljZmUyY2U1OWI0MGJjOTk5NzYzYzBmNWZiZTBlOTVmYTRhZTIxIHJlbGVhc2UyNi1tYWludAorNzc0NTcgNjYyZGZmYzFiMzRkM2Y2MGQ1ZjYxNjA3OTdkZWUwNTQzYzE4NDg4ZSBweTNrCis3NzQ1OCA3YjVmNWFmNGY1YWNiMmRlZmNhOGVlMzcxMDc2Yjg1ZjNmZWIwNTAwIHJlbGVhc2UzMS1tYWludAorNzc0NTkgYTZiZjY4ZTZlODI0Yzc5MDE4NmEyODY0NWI1NzRhNDNmMDBjNDhiZiBweTNrCis3NzQ2MCAzYzBhNDMzYjI2ZTFmY2ExZjQ4NWQ2MDY5YTRhNzQwNjRjODUwNmRlIHJlbGVhc2UzMS1tYWludAorNzc0NjEgNjZmMWQ0YTRjNzk5NGY5M2IyYjQxMmI1Nzc5N2JkNTA4Nzk5Y2FhMSBsZWdhY3ktdHJ1bmsKKzc3NDYyIDVjYTE5NDhhOGZkNjkzMjIyZTQ3NWQwYmU5ZGJiNDU5NjRlZTlmM2UgcHkzaworNzc0NjMgZDUxMzU4NjQ1ZTYwNjM3NTk5MzE2MTgwMTRmMDM2ZmYzY2QxZmNlNiBsZWdhY3ktdHJ1bmsKKzc3NDY0IDg1MzdjMzczNmU5OTY3N2VjNWIyNDc1ZmYyMTk1ZTJhZDJlNDI0NGQgcHkzaworNzc0NjUgZDFmZDBhMzRiYjM2ODI5MDAwNWZlNjU2MzRlNWM4OTdiZjJjYjY2ZSBweTNrCis3NzQ2NiBiYWQxYWUzZmQwNjA3M2EyOWZkMmM0ZmNlYzc4OTVlZTgyZGZhNjM2IGxlZ2FjeS10cnVuaworNzc0NjcgMzEyNTBjMzQ4MzNhNDQyMmZhYTdhMDc5MmY5NGJhMmMzNzE4MjZhMiBsZWdhY3ktdHJ1bmsKKzc3NDY4IDE1YjA2NjhmMGRjNTk3ZmU2NGQxYTJlNGE5MDI3NDE5OTkwMGM1YTEgcHkzaworNzc0NjkgNjIyZjc5YmJhNTIzMWE4M2M2ZThjMGJmODkwMDg0YjNkMjFiYmY4MSBsZWdhY3ktdHJ1bmsKKzc3NDcwIDkyMjVlYTY3N2M0YjI3MTM3OTAwMWM0OTdjMDE3OTI3MTUwNmQzYmUgbGVnYWN5LXRydW5rCis3NzQ3MSBlNWU1NWZmZTlmNzM4YjA4ZDNlODE5NmIyMmY0Y2ZlYWIyNWJhMWY5IHB5M2sKKzc3NDcyIGIyMWVmYzBjZmU4YmJlNTUyMDk3ODI4MDc0ODNhNTI4NzgxOTRiMDcgbGVnYWN5LXRydW5rCis3NzQ3MyA4ZTI3ZDNiOGQyZWM0NTk2OGYwYWQ2YzA3YjZjYTM0NTdkYTJkMTdjIGxlZ2FjeS10cnVuaworNzc0NzQgYWI5MDVmNzRiZjExN2ExYTY4ZDA3ZTg1YjYyMDBiN2JhYTEwNTQxNyBweTNrCis3NzQ3NSBjNWI2YTViODNhYjVkYzY3MjcwNzNmMWEyMDg2NzgwYmU0NGNiZTk2IGxlZ2FjeS10cnVuaworNzc0NzYgOWZjN2YyOTdkMTMyYjlhNWExMjkzMWUxYWI3NTExZjJjMWU0NjlmYyBweTNrCis3NzQ3NyA1NzEwMjI4M2FiNWVjZjU1MzM5ZDBmOGE5MjY4ZGZjYjY4MDVjZGY3IGxlZ2FjeS10cnVuaworNzc0NzggYzVhMGE1ZDZhY2IwN2JhOWMyMzg2MDRiMjM4YWNhYzhmMzVlNDBmMCBsZWdhY3ktdHJ1bmsKKzc3NDc5IDRmNGYwMDFjODFmNTU5ZTM0ZmFlY2QwMTk1N2M5Y2I4OGIyZGJkMDIgcHkzaworNzc0ODAgNDc4YWJjN2JjYWFhZGNhMzM2MzMzNmYzOGYyYmY2ODA3NDhiNTlkNCByZWxlYXNlMzEtbWFpbnQKKzc3NDgxIDBmOTc0YmIyMzhlZGFhM2YxYzJkMWViZmZjNGRlNDA1YTRiZGZjYWQgbGVnYWN5LXRydW5rCis3NzQ4MiBjN2YzM2Q1MjE2ZjljNDBjMjJhMDE5N2NkZDg4OTk1ZDA4NzUyMjg2IGxlZ2FjeS10cnVuaworNzc0ODMgYjM5YTAyMTlmNzI3ZTkzYjRkNjkxYzE3MjgzZGUyNWZiZDRjNGE3ZSBsZWdhY3ktdHJ1bmsKKzc3NDg0IDEwMzA2NzgwZTVjMGNmNWRkZjczNDVjZmNiNzJjMzE2Y2I4ZmU0ODggbGVnYWN5LXRydW5rCis3NzQ4NSAyMDFiNDYxYTEyYmRmYjFjODJkYzcwMDEwNDRkMGRmNTBhMjY1MDgyIHB5M2sKKzc3NDg2IGU4Zjg0NjFkNmQxZGY1MWYxNjhmOWFiYWQ0ZDIyOGM3ZDM5OTQzZTggbGVnYWN5LXRydW5rCis3NzQ4NyBjNDMwZTY2NGU2MDViZmUwZDYyZTI0MDRkZDI3MWZiYWFhMGUxY2U3IGxlZ2FjeS10cnVuaworNzc0ODggMDNmYTYxYTM3ZTJkNTJkMDAxYmU5MDcyNjZiNmE4YTM4MjY5ZGRlZSByZWxlYXNlMjYtbWFpbnQKKzc3NDkwIGFmMTgwOTgxM2RlOTZkNjQzMWYxYWE5ZTQ5ZWE3ZmM0NWZmMjM1NWMgbGVnYWN5LXRydW5rCis3NzQ5MSA3NmZiN2RiZDczODg0MjMyZTMwYWUxY2EwMDlhMTZjNGI4NjI1YmU5IGxlZ2FjeS10cnVuaworNzc0OTIgOTIzODRkN2Y0MjVhNTk4ZWRmZjI5MjgyMWE5NGU1MWI2YTY0ZjVkYiBsZWdhY3ktdHJ1bmsKKzc3NDkzIDE2ODJiOTYyZThkZWUxYzhmNTllYjk1MWRhZDI4ZGU2N2Q3ZWU0MWUgbGVnYWN5LXRydW5rCis3NzQ5NCBjZTExYzEyNzBiNjkwNmY5NDI4YTY1ZjkzYzMxNWE3ZmUwOGM3NGJjIHB5M2sKKzc3NDk1IGQ3NThlYjJjODI4ZTg2YTYyMThlY2IxZmMxNGVmYzZhOTFlOGJkZTAgcmVsZWFzZTI2LW1haW50Cis3NzQ5NiA5YmFiM2Q3YWI0ZjUxYjczZTk2NDY2NTFkNTExMDU0ZjMwN2E2NTEzIHJlbGVhc2UzMS1tYWludAorNzc0OTcgYjNmNTBkNmNiNjQwNmJhMmJjMzI5NjQyMmRhNDg2MTMyMDVmOTljYSBsZWdhY3ktdHJ1bmsKKzc3NDk4IGQxNDBmNDkwMWE0MjM4MDZlOWZhYmVlNzZmY2QwODc3Y2I1YmUxYTcgcHkzaworNzc0OTkgOWU3M2JlNWZhODBmODZjYzVjMDI5OTZhMjAwMjEwYjE1YTNjY2FlMyBsZWdhY3ktdHJ1bmsKKzc3NTAwIDM1NDY5ZTc5ZmY4MDQ2ZmUyYTEzYzgyZjYxOTkxZDZjZmU4MDRkZjYgcmVsZWFzZTI2LW1haW50Cis3NzUwMSBlYjg0ZjcyMTdjNjVkOTI3OGU0Y2YwYzY2MDFmY2I4NTg5MDgwZTZhIHB5M2sKKzc3NTAyIDgwNDEzYzE4MmEyOGI2ODAwZTczOTcxMjI1YjEyYTU3YTQzMGNmMzEgcmVsZWFzZTMxLW1haW50Cis3NzUwMyA2NTdmMTY1ODI5NDM3MzliOTA2ZjY2ZjdlZmFkNDAxNDQ5MmM4YjFjIHJlbGVhc2UyNS1tYWludAorNzc1MDQgYzc2ZDQxZTc0NGMyMzE5MDMwMDg5NTM2Y2JiZjVlNTViYTNiMTY2MyByZWxlYXNlMjUtbWFpbnQKKzc3NTA1IGQzYmVhMTY2OWYyZDg5M2YyOGQ3NTE3Y2M0ZGQyZDQ1NzU0MzdhMTAgbGVnYWN5LXRydW5rCis3NzUwNiBlZWYyZWJjMDgxZGVlMDA2ZjZlMzcxYmM5ODAyNWMwNzc0NTJlM2RlIGxlZ2FjeS10cnVuaworNzc1MDcgYmUwYmYwYmJkOTRhZmZlYzU0MTY0ZjA2NWNlNDJjM2U2ZWUyOGUzMSByZWxlYXNlMjYtbWFpbnQKKzc3NTA4IGIzMDQ4YTUyZTNjODVhYzgzMjM1YjdiOWQ1MTVmMTU0MmViMjIyMGEgcHkzaworNzc1MDkgM2FhZWYyZWRmZGIzNTVkZTU4YmRkMmUxMWU4NDgyMWZiY2IyYmJlMiByZWxlYXNlMzEtbWFpbnQKKzc3NTEwIDFmODRkZGFmYjZhMzkyYzRiMDAxMTM1NTZmZTA3ZDY5MmE3NzIxODAgbGVnYWN5LXRydW5rCis3NzUxMSA3ODYxMGI0OGMzOTZjMTY0ZjM1YTczNWYwNGQ1NjdkMTNmYjk1ZjI4IGxlZ2FjeS10cnVuaworNzc1MTIgZWYwZDA0ZGU0YTQzZjllMGM4NDBkNTAyMWM2YzZlZGNiZjIzNmFiYiByZWxlYXNlMjYtbWFpbnQKKzc3NTEzIDA4MmQwZWFmOGRkYWRjOWM3OTU4ZDhlZjA5YTc3NWJiMzI3NTYwNzIgbGVnYWN5LXRydW5rCis3NzUxNCA3NjA3NjY1OWIyMjQ5ZTA0NDE3ZmI4ZTk0MmFlMzkyZmU3NjJhMTc0IHJlbGVhc2UyNi1tYWludAorNzc1MTUgZjQ3ZDE5OWVlNjY5N2YwZjYwNDYzYmJiMGJkN2ZmZDI2NzMyNTFhNCBsZWdhY3ktdHJ1bmsKKzc3NTE2IDIwMDZmZDgxNmQyMjUyMDJjMDQ2YmJmYTYyODRhYmRhZmI1M2I2MDMgcHkzaworNzc1MTcgOTAwNjI0NWIxOWFmZjljZmZjMDAwMWE2MGY5ZjlhMGUyYTlkYmU0ZSBsZWdhY3ktdHJ1bmsKKzc3NTE4IDQyODhjNDBjODQ0MDc1YjNjZGUxN2Q4NGVhNzBkZmJjYmMzYzMzOTIgcmVsZWFzZTI2LW1haW50Cis3NzUxOSA1NjczZGMzYjY0MzJlNGM5MGM5ODViNTFlNGNhYjM4NGJiMDU1MWE1IGxlZ2FjeS10cnVuaworNzc1MjAgZWFmYWJhZDVlNjAxZWVkNTU1MTIwN2U5N2FmMWFiMGZhYjYwNTNlZiBweTNrCis3NzUyMSAxODlhNWFiYjIzMjNlMWNmMzVmOThiOTE1NGJiMjY4YjEwNGJiMTdhIHB5M2sKKzc3NTIyIDMyZDZhOTRjZDBmYTM5ZmU1ODhjYmM3Y2UxOWU5Yzk5OTUyZmRhNTAgcmVsZWFzZTMxLW1haW50Cis3NzUyMyBhMTZiMjRiMjVhYzMxYTdiZjg5NWJhN2JiODRiY2M5NmE5OTU1NzdkIHB5M2sKKzc3NTI0IDBmYWIzYzJkZDMxNGNmYWY4MzFiNmVjMTBiOWY4ODlmN2M4NDFmMTMgcmVsZWFzZTMxLW1haW50Cis3NzUyNSAyNjljMDk5MjFiYjJmYTQ3YmFlZDQxZjEwYWZkNDc5NTdlZDdlOTI5IGxlZ2FjeS10cnVuaworNzc1MjYgMDg5NTA0MGFkZWZmNTI2MmI0YTBlMWJiNTQ5MjRmMzM3NTgwNWQyOCByZWxlYXNlMjYtbWFpbnQKKzc3NTI3IGYyMjE4M2U2ODg1Yzk5NGM3YzY5OTJiZGVmOWU1NzY5ZDA1ZjM5NTEgcmVsZWFzZTI2LW1haW50Cis3NzUyOCAxMWFkNDJhNzg2YTIxMzk2NGZhMzZiOWQ1MTI1ZTIzNGQxNjQ3NDU2IGxlZ2FjeS10cnVuaworNzc1MjkgZDE0OTNjZDkxMzAwNmQ1M2FkMDY2NGU5ZmY4ZWJjMjhlYTBlMDdkYSBweTNrCis3NzUzMCA4ZTE3OWEwZmNiNWViOGI1NDQxOWIwZTY0YmRkNWFhZTNjMDBmYzMzIGxlZ2FjeS10cnVuaworNzc1MzIgY2EwMGFjYzljMzA0ZWI3YTlmZmE0ODVmNjE4OWUwYTg3OGIxMGMxOCByZWxlYXNlMjYtbWFpbnQKKzc3NTMzIDVjMzJmM2I2NWQyMTZmYjM0ZGQ3OTRhM2IwMTU3MGM0ZmE1M2Q0OGMgbGVnYWN5LXRydW5rCis3NzUzNCAxNzRiZGFiMDI0ZWI4MzUwMDM5NTE0MTdkYjIwMTVkMWY1NjVmMzU4IHJlbGVhc2UzMS1tYWludAorNzc1MzUgNjM1MWQzZDUzZGVkMzc4MGRkYmYzZWI0NmFlOTFlMDIzY2IzNjkwZiBweTNrCis3NzUzNyBkODFlNDg4NDZiNGViZjhhMmY4ZjIxNWIyNjQyZGI1NjcxNjI5NDIwIHJlbGVhc2UzMS1tYWludAorNzc1MzggMjlhMTQxMGNkN2RjODJjNTEwMDdiYTU5MjhiMWRiZjUwNzg0MzkyYiByZWxlYXNlMjYtbWFpbnQKKzc3NTM5IDFlYTdmYmQ5OTI5NDU0Mzg5NTUzY2MzMTQxOGZjMDE3YWE2ZTY4ZjYgcHkzaworNzc1NDIgYjVlZTQ3ODIxZjRiZDg3Y2NjMWJkOTczYzdmYzhiZjJkYjI2ZjY4NSBweTNrCis3NzU0MyBlZDhiMGVlMWM1MzExY2VmYWRkMTJiNmUzNTdmY2NlMjAzZDQxMjc3IHB5M2sKKzc3NTQ0IGE2Y2M0MjEyY2Q1N2UzMGQzNWExZGVlMDU5ZWI4MmJkYTk5ZDFkN2EgbGVnYWN5LXRydW5rCis3NzU0NiBhNGEzZTY4ODQ0NmU0ZWUyNTFiOGVhMmZhNjk5OTYzZDBmMDg2NWQyIHJlbGVhc2UzMS1tYWludAorNzc1NDcgZTM1M2Y1ZDc5ZjRjYzkzNGYyZjY4MTc3MThlZmQyMDNkMWEwNGIyOSByZWxlYXNlMjYtbWFpbnQKKzc3NTQ4IDgxYjMxNDUwNjFkOThjZWM0YzJmZmYyNGY4NDI5OGMxZDM3NTg1MjIgbGVnYWN5LXRydW5rCis3NzU0OSBmYjczYWEyNDUwMTRhYjk2NWVlMTY5ZDE2NWMzZWUzNWQ4YmQ0OTE5IHB5M2sKKzc3NTUwIDUzNjZkNTc1ZTJjZDFkMjRiYWFmM2Q5ZGYzYmJlYThkODhhODEzOTkgbGVnYWN5LXRydW5rCis3NzU1MSA2MGUwNjljNThhMzVkYzIyY2U4ZWIyYTUzYmY5NDYzMzFkM2QxOTkwIHB5M2sKKzc3NTUyIDdhZWNmYTQ0MzJkZjNhOGRlYWU5NjUxODcyYzAzYzhhZWYxMGE5NWUgcmVsZWFzZTMxLW1haW50Cis3NzU1NSA3MDdkOGNhNWVhMGIwMjNiMGIzZTUxZWNhNDk5M2RkZmFkOTQ5OWMxIHJlbGVhc2UyNi1tYWludAorNzc1NTcgOTNmYTEwYmVmMWUyMmZmOTU5YmY3MDhkYTc5OGQ3ZDRjNjEzZTRlMyByZWxlYXNlMzEtbWFpbnQKKzc3NTU5IDkyYTYyZGZmYTQwNDljYzc4NDAxMTQyZGExM2IxOThjYmZhN2Y2YzUgcmVsZWFzZTI2LW1haW50Cis3NzU2MSAzNWY3ZTIzMDk3ZDgzMGE2ZGNlZDdhNDBhZjJhODhhNDgzZTFlMWY5IGxlZ2FjeS10cnVuaworNzc1NjYgOTMwNDY0ZjMyMjA0NjUzYWZjYjQ0MDc5ZDBiMGI4Nzk0OWZjYWQ5MyBsZWdhY3ktdHJ1bmsKKzc3NTY3IDIzZjEyY2JmMTIyYzEzMTQ3YTA0ODlmODc5ZWMxODE0YWM3OWI4MTYgcmVsZWFzZTI2LW1haW50Cis3NzU2OCAxYWUzMzc5YzAyMDhmNmVjOGY0Y2EyNGU5NWY4YzNkZmRmODEzOWY4IHB5M2sKKzc3NTY5IGEzMDY4MGJjYjc1ODljYmVmZDZhY2JhYWJlMjY1NTIwNThiYTMwNTIgcmVsZWFzZTMxLW1haW50Cis3NzU3MCA0NTQ3YTliZmY3Yzc3ZTc3MzcwZGJjY2JiMWE4NjBiNjYxMDgxNmZkIGxlZ2FjeS10cnVuaworNzc1NzEgNjZlNTdlYjU5OTUxMDgxODI3NjRhYzRkNDU2YzkzNGE2ODA1MGU3MSBweTNrCis3NzU3MiBhOWZiMjAzNzA4YzQxMTk3NjA0OWI0NjEwYTg3OWM3MTA5ODI0YjY2IHJlbGVhc2UzMS1tYWludAorNzc1NzMgMWNlZmZiM2M4Y2IyZTU1YzljODQxMjhhMGNjYWJmODg5Yzc2ZjAyOSBsZWdhY3ktdHJ1bmsKKzc3NTc0IDNiZDZkZjExZDFkNmMyNmEyNGRkYWUxNzQwNzVkMGYwYzBkMmE3ZjkgcmVsZWFzZTI2LW1haW50Cis3NzU3NSBkZjAyMDA3OWUyODg5ZDQwYWUyMmM4NTU4NGYxODQ5ZWIzMGE5ZGM5IGxlZ2FjeS10cnVuaworNzc1NzYgOGY3OTcxYjgyMGE0MzViMTA1ZTFlNDcxZjAxYWYwZDY0ZmM1N2YxYiBweTNrCis3NzU3NyBmYjMzN2NiNDZiOWRlODVmZmQ1MmE2YmIwZGQ3YmE1NDk5MTIwMzJmIHJlbGVhc2UzMS1tYWludAorNzc1NzggNzMyMmM1NjkxMjk0ZDRkYzI1NzY1ZDhhZWJiYzMwMThmMjY2NmYyNyBsZWdhY3ktdHJ1bmsKKzc3NTc5IGI5ODg4YzEzMzlkZjUyMGJhZWNjOWI4YzhhNDFiZmYwNjYyMGI5NjkgcHkzaworNzc1ODAgNmVjMTRiYzZhYjBjOWI1NjVkNDk4MTE2NDAwMzc5MTA5Zjc4MzM3YSByZWxlYXNlMzEtbWFpbnQKKzc3NTgxIDgwMDU1OWM5ZDUwNGJmZWExYjQ5NmZhNDE0NWQ0ZTBlZjVhNGFhM2UgbGVnYWN5LXRydW5rCis3NzU4MiBkNjBiN2IyYzRhMWY1MTc0ZDg5ZmJjYTg2ZTZjZTAxYjQ5MWJkM2E1IHJlbGVhc2UyNi1tYWludAorNzc1ODMgYTExN2NiOTI2ZDIwN2UwOWFlMjkzMTExZjBjNTllYTE1MTY3MjNhNyBweTNrCis3NzU4NCA4ZTk2NzcwMDdhMWU4YzNjMzRjMTdhYjg1MmE4ZjdiODY5ZTc3ZDhkIHJlbGVhc2UzMS1tYWludAorNzc1ODUgMGM4Y2JkYmFmYWFkZGE3YWU3ZWUxOWJiNWVjYzU0ZDliMWQ0ZTI5MSBsZWdhY3ktdHJ1bmsKKzc3NTg2IGMyNDc1MjZkNWE1YjAzNDJjZGI4M2JjYmJiYmM1YjhlODc5MjBkNmIgcmVsZWFzZTMxLW1haW50Cis3NzU4NyBhNDg1ZmNkZmU4NTk2MDM4OWNhOTU1YTdlNTY2NzdjYTZjYzdkZmE1IGxlZ2FjeS10cnVuaworNzc1ODggM2I0OWVmNmIwOWZmYTBhOTU4YTI4MWQzNjJmMjc1ZmYxZTllNWVmZiBsZWdhY3ktdHJ1bmsKKzc3NTg5IDVjOWM1M2E3MjFhNTU0YmZiMDI1ZjE0YjBkZDY1MjIzY2FiZjRmYjIgbGVnYWN5LXRydW5rCis3NzU5MCAzZTYyOTQ3MTg1MGFmZTgzOTlmN2E3NGE4MmU1MzYxZTlmM2E5M2UyIHB5M2sKKzc3NTkxIDYwMzZkNzg2OWJkMWY4NDExNmRkZTEzNWNjMjIzNDRlY2NlZTk1YWIgcmVsZWFzZTMxLW1haW50Cis3NzU5MiBiYjEwZjNmZmFlMDI4MWQzNjlhYzJiNzQ4MjA3YjI5NmEzNjQ2ODJlIHJlbGVhc2UyNi1tYWludAorNzc1OTMgM2FhZGNlMzlkMzQ1MmQ5Yjk2ZWEzOWYzZmQ0ZDVkYWY4ZWJjOTJlYSBsZWdhY3ktdHJ1bmsKKzc3NTk1IGZlYWNhYTZlNDBiODRiNzA0ODE4ZmU2MTJmOGU0ZTg4YzFiMWRmYmMgbGVnYWN5LXRydW5rCis3NzU5NiBhOWQ1MThmYWRhNTk5NTY1ZWNjODFkNWZmZWU1NWUxMTU1YWYwODlkIHJlbGVhc2UyNi1tYWludAorNzc1OTcgMTIxZGVlZDU5NjhlZTY4ZTQxZThkNGYyOWVlMTgxM2U2YmIwNmJhNSBweTNrCis3NzU5OCBkNTlmNzZkNmI3OTU3N2RjMWEzZGMxYzI4ZjBmODEwMGViYTQ1MWUxIHJlbGVhc2UzMS1tYWludAorNzc1OTkgZWMxOTI2NDNhZGNiYTI5YTZlYmRhZTRkYzM3YjMxODc3YjQ1YmQ4ZSBsZWdhY3ktdHJ1bmsKKzc3NjAwIDg2YTM1ZTU5YjZiMTk1ODVlNGM0YTJhMDdmMDU1NWY1ZjBkN2I2ZWQgbGVnYWN5LXRydW5rCis3NzYwMSA5ZTU5YmUxZDBjMzcxMGJiMWVhZjIzNGE4ODE4Njg1NmVjNDNiYjIxIGxlZ2FjeS10cnVuaworNzc2MDIgMmRlZjFkZmRmMWY2Mzk4YmQwZDk1ZjEyMzUxNzExZDM5MmY1OWNkMSBweTNrCis3NzYwMyAxNmNkYzE1ZTVkNzViYjFiMzA2ODQxYjhiOWVjMjcwYzIwZjgwNGZiIGxlZ2FjeS10cnVuaworNzc2MDQgZjZhNjI2ZjM0ODQwZmEwYzNmNWViYWQ4Yjg2MDI4ODBiNmJkYzc3MCBweTNrCis3NzYwNyBkZjRkMjE1OGZhMDQ4NjFkNWYxZjQzMTE1ZGNjYmU4NDY5NGFhMDEwIGxlZ2FjeS10cnVuaworNzc2MDggNzViZmE1ZGExYmViNTI1MjdkNzRiZTBjOTFjZTAzMDI2MjY2Nzc1OSBsZWdhY3ktdHJ1bmsKKzc3NjA5IGY4MGU2YmQ0ZmQ0ZTZhN2NjNGE2MTVlYzE2M2E5YTcwMjA3NmEzMzEgbGVnYWN5LXRydW5rCis3NzYxNCBiYWM4MjFkZmZlYTgwNGYxZWY5MTZmMzBkZGM1ZjU2ZGRjNmUyN2MwIGxlZ2FjeS10cnVuaworNzc2MTUgNWRiYmM0M2M1OTFiOTJkNzI1YjdkOTEwMTYxZjU2NzAzODE4M2FkOSBsZWdhY3ktdHJ1bmsKKzc3NjE2IDg4NjMyMGYxYmE4MmEwNWEyZDdkYjAxZjJkOTAxNmYwNzA5MGZiN2IgbGVnYWN5LXRydW5rCis3NzYyMiA3M2ZlY2Q0ZTdmZWMzNGU5Mzg4MzIwNDA0MTYxZWM2YjdkODQ0ZjY5IHB5M2stY2RlY2ltYWwKKzc3NjIzIDI2NWViMjUwZTRhNTgxNzU4ODJlYmEyNWViOTI3NTIyNDE3NmY2M2EgcHkzay1jZGVjaW1hbAorNzc2MjQgOWM1NjNhNGYzZjlhMjQ0YjRhY2ZhMWE4OWM2YTI1ODk1ZjJlODNjNCBweTNrLWNkZWNpbWFsCis3NzYyNSA0NjRhMjM2NzY1NDA5ODJhZjAwOWUwZjgxYzEyN2VjN2Q0MGEwNmEwIHB5M2stY2RlY2ltYWwKKzc3NjI2IDg3NTI1YmQ0OWE5ZDYxNTQzZDA1YjFmYmU5NDBhM2UwYzhhYmM5N2YgcHkzay1jZGVjaW1hbAorNzc2MjcgZDY2YzZlYmJjNjE3NDBmMGRiNTZlYmFkYjMwZTAwOGMyZDQzYTBlNCBweTNrLWNkZWNpbWFsCis3NzYyOCA4MGIwNzhkMDU1NzczNjYxOWE5MWViZjUzYTM3YmQ1ZTlhZDQ2MjM5IHB5M2stY2RlY2ltYWwKKzc3NjI5IGQ4MjhjYzkxYzA5YjUwODA3MTFkMmRjNTQzMGE0MjZhNGRmMjFkMWIgcHkzay1jZGVjaW1hbAorNzc2MzAgMTNiYjlhOTdlMWM1MDI0YjU4NGIwYjE0MzExMTQwNTJmN2E2MzdlZSBweTNrLWNkZWNpbWFsCis3NzYzMSA1MTcxMmM0MmM1ZmIxZjc2YmMxYTI4OTc4YWJhYzM2NjlkYWU4ZDMzIHB5M2stY2RlY2ltYWwKKzc3NjMyIGNlYzE0MGY3MmQwM2ZiZWZkMmE0M2FkZDA1ZDUzNGEzOTFkZjAzNGIgcHkzay1jZGVjaW1hbAorNzc2MzMgYzFkY2U5NTk2ZTc3MWI5YjQyMTk3ZmRiYjI1OTdhZWI0MGFjOTEyOCBweTNrLWNkZWNpbWFsCis3NzYzNCAwNGRlYTAwNjAyNTdiZmEyN2UyZDFiZDI0NzMwMDZiODA0Yzc4YTRjIHB5M2stY2RlY2ltYWwKKzc3NjM1IDQwYTNiZTc4YmM5OWJkMDk3YTliMTU5MzM2YWZkYmQzN2MyNjJmYmYgcHkzay1jZGVjaW1hbAorNzc2MzYgNzNlM2VlNDYzYzk0ODc3MGQ4ZTE2ZTM5NzQwZjRhMzE0YWFiM2NhOSBweTNrLWNkZWNpbWFsCis3NzYzNyAwMDJmN2FiMzVlMTdkMDZlZTU5ZGUyODQ3ZDM4YzBkZGI1NTE3MmExIHB5M2stY2RlY2ltYWwKKzc3NjM4IDNkZjliNDBmZjRmY2U5NmI4MWFkMjIxNDI1Y2UzODNhYTRlZDFlODMgcHkzay1jZGVjaW1hbAorNzc2MzkgZjY0NmFhYTkxYjBlN2NkMjg0Yzg2OGY2OTU3ZDgxYzUwM2E5YmQ2NSBweTNrLWNkZWNpbWFsCis3NzY0MCBmZjM1NjNiYmJiODAzOWJhZWI1NjM1NzhiMzNmMjAwM2VmZDE0YzExIHB5M2stY2RlY2ltYWwKKzc3NjQxIDljZjIwYmQxNTE2YjljOTVmZGUzNGYzYmJkMGFjNjM5ZTE5MWI4MDUgcHkzay1jZGVjaW1hbAorNzc2NDIgZWVmNzZjODEyYmNiZGNhZjg5ZDMyMzQzODA1Mjg2ZDI0Mzk4NGQwYiBweTNrLWNkZWNpbWFsCis3NzY0MyBjMTRjOTQ1MzEyNzM3YmNiZmM2Zjc1NzhmYmI0YzU5ODk3ODViOGZlIHB5M2stY2RlY2ltYWwKKzc3NjQ0IGI0NzFlMDdhMjM3NWM2YTI4NzJjYmNlMzE4OTM1NjFlZmIxMTdkZDEgcHkzay1jZGVjaW1hbAorNzc2NDUgYjRhZjIxNDU2NzhiOGU5MmNlMjY2MTAzZjE4ZmJlNTYxYTE4Yjg5NCBweTNrLWNkZWNpbWFsCis3NzY0NiA2OTRhZmYxNjc3N2Y4MDRmYmMwYWY3Y2Q5MWI4MWQ0MTNmOTE4NDM2IHB5M2stY2RlY2ltYWwKKzc3NjQ3IDdkMTk5NjcyN2QwODRkODdiNjJjMWZlZGI4Y2YwMjhhNzZkYjY3OTggcHkzay1jZGVjaW1hbAorNzc2NDggZGJjMDBmZTM3NzcxOWQ0NGFkZjM2YjAyYTE2Y2NmNjQxNWJhOGNkZSBweTNrLWNkZWNpbWFsCis3NzY0OSAxY2FiZGYyODkzOGVlNGVmMGRmOTFjMGQxMTQxYzcxM2ZjODc4N2JlIHB5M2stY2RlY2ltYWwKKzc3NjUwIDBiZDJiMDcyMDgzMjk4NWM4YzE0NDgxMDE4MDQxY2JkOTMwYjRlNGQgcHkzay1jZGVjaW1hbAorNzc2NTEgOTMxZWM1NTg5MjcxNjRiMDc1ZDQ4MTFiMzg2NTYxM2FmMzZjMGJmNCBweTNrLWNkZWNpbWFsCis3NzY1MiAwYmFjM2RiNGQ1ZTI4Yzc4YWMzYzYzNmVkMThlYWU3MjY5ZTE4MDdlIHB5M2stY2RlY2ltYWwKKzc3NjUzIDYzMjYzY2NkYjA4MWFhMmFiZTZlNDAwN2Q2MjRkZWE1NmQxODE3M2YgcHkzay1jZGVjaW1hbAorNzc2NTQgNmQ4OTZlNDI0YTNkYTQzNmU4Mzk1MDlmODZjNjIwZDBiZDNhZmUxZCBweTNrLWNkZWNpbWFsCis3NzY1NSBiMjIxNGVlMjc5ODc5NDgxZmM2YzNiODRjYzc1ODI5NzQ1Y2I3NzQ2IHB5M2stY2RlY2ltYWwKKzc3NjU2IDA4MTNlODlkMDE5M2Y2Nzk5M2Y4NjU3ZjViZjIyZDE4NWVjMTk5MDQgcHkzay1jZGVjaW1hbAorNzc2NTcgNGFkMDNmNzFkMWUxM2NkNTMwZGVjOWY0ZTg4Y2RlMTQ3ZjBjNTZlNyBweTNrLWNkZWNpbWFsCis3NzY1OCA1NzdjMDk5YWRhODgxNzAxOTc3ODM3ZGU1OTBhYzZmM2NlMGYxMmE0IHB5M2stY2RlY2ltYWwKKzc3NjU5IGYwNDA4NjM3YmU3N2YyOTk3OWU4NzcxYjdjMDIzMzgwMWZiNDE0MTMgcHkzay1jZGVjaW1hbAorNzc2NjAgYjE5OGIwZTIxZDYyY2M2OGQ2ZWFjYThjMzU1ZTk4MDc2ZmUwZjZkMCBweTNrLWNkZWNpbWFsCis3NzY2MSBkNDJhODU0NjNmOWNmNDI4ZTI0ZGQ0NWYxMzMwODBmM2Q3Nzg4MmU3IHB5M2stY2RlY2ltYWwKKzc3NjYyIDVlZWMzYjExZTQxZTE5MzdkYTA5MDg0NDNkOWYyNzYwMDMwMDNkZTMgcHkzay1jZGVjaW1hbAorNzc2NjMgZTAzYjliZGNkNDA1ZThkOTRiYzFhMzdlZTA5OTY3YjUyZTViMzU4NCBsZWdhY3ktdHJ1bmsKKzc3NjY0IGFlNmZiMDViNGMxOWRlNjMzN2Y4N2M5NDg2MTg1ZDIzMmJhZGE2NjAgcHkzay1jZGVjaW1hbAorNzc2NjUgNzgyYTQwZmYzZjBkYzIyY2I2NjU0ZDgzY2UxYjlhZDkxMGY0NzU4MiByZWxlYXNlMjUtbWFpbnQKKzc3NjY2IGYzNGY4YWU3NjQ2ZTcwNjM5YWU0MjlhNTE3MmM1YTZhZmY5ZGVjZWEgcmVsZWFzZTI1LW1haW50Cis3NzY2NyA0Zjk1YjQzNTIxNzljODJkODM5N2U1MzllNGJlMGRiYWQyZjgzM2M1IGxlZ2FjeS10cnVuaworNzc2NjggMDU5ZTFmZDc4NjVjZmU3YjVlYTE3OWVmMjdlOTRjMTBmZTU5ZWJjYyBweTNrLWNkZWNpbWFsCis3NzY2OSBmZWU3YTg4YjA2ZDFmZWM5NTlkNzNkYjNlZDhkY2ZhMTViMjE4MWYyIHJlbGVhc2UyNi1tYWludAorNzc2NzAgZjM4YzExOTZkOWZmMTdlNGYzOGQyZDE1YTQwZmE2YmM4MTc0ZGNkNiBweTNrCis3NzY3MSBmMWFjZDAxNzI1ZTAxODY1MWQwYmE4MmVkNzVjMTVlYjgwNWViZTAxIHJlbGVhc2UzMS1tYWludAorNzc2NzIgZmJlNmVjYjkxYzRiZTU5NTk4NGMxNzQ2NGI2OTQ4YTU0ZTNiYjYyMiBsZWdhY3ktdHJ1bmsKKzc3NjczIDIyY2RlYzdmNDRjNTJmMmJjNmE4YjJiMzNjMzIyZDVkYTMyMGI5NDQgcmVsZWFzZTI2LW1haW50Cis3NzY3NCBjYWE2NGRjNDRkMTZlZmMyYThiZTYxMTNhNmMzMGY2NDFjMzEwM2Q3IHB5M2sKKzc3Njc1IGY1NjgzODNhY2M5ZjgwMjkwZDBiYzNlMGQ3NDNiMTA3MzEyZmM2ZDkgbGVnYWN5LXRydW5rCis3NzY3NiBhOTk2ZDY2ZmFlZDBjYTJkZGRiNmI2ZTY0MDc2Yjc0NTdiNWVjNGY2IHJlbGVhc2UyNi1tYWludAorNzc2NzcgNWMyMzY3MDRkYWYxNWE5MDgzYTVkNmRiMzg0ZTA0NDBjYjYyMmQ5ZCBweTNrCis3NzY3OCBiNjM2Y2M3MmQyZGU3M2IzZjE5ZjE5ZjcxZWEzNzg5OWQ0MDUwYjU4IHJlbGVhc2UzMS1tYWludAorNzc2NzkgZjg1MzliNDk3ZDRhYTEzMmE2NTE1YTIzZDA4ZjMxOGE2ZmNkMjY3MCBsZWdhY3ktdHJ1bmsKKzc3NjgwIDllMTI0ZTY0MDJiYzcyMWQ3YWMwYzhhY2ZlNDUwYjZiOWI5ZjQyZGIgbGVnYWN5LXRydW5rCis3NzY4MSBlZDQwMjdlNjY2MDA2ZTczODY4MjA1YWE1OTI5MTUwMDhlMjcxMjI3IHJlbGVhc2UyNi1tYWludAorNzc2ODIgMWY3MTVhMzc3ZWQwOWQyNWU1YWRjNzM5Njc4N2FmYjUzY2Q3MGU1NiBweTNrCis3NzY4MyA0Y2ZkYzhiN2ZiM2FmMjZmNzU4ZDU4OTQwMDkyYmFjNzU3ODUxMDdiIHJlbGVhc2UzMS1tYWludAorNzc2ODQgZjZmY2VjMjhhZjllNDU5NjQ2ZGUzMWU1YTNhYzFlNTJiY2U3NmUwNiByZWxlYXNlMjYtbWFpbnQKKzc3Njg1IGZlNDg4NGIwNDFiOTNkODI3NTFiODUzM2MzMjI1OGUwZjZhZWRmNWQgcHkzay1jZGVjaW1hbAorNzc2ODYgZDBkMDU3OWRkMWQxM2NmMzI3ZmRkNDBmYmMwN2ZhMmUxZmVhMGY5YSBweTNrLWNkZWNpbWFsCis3NzY4NyA0ZTY5OWQ3YzMyZWNmOGJhMDI0YzkzYmY1ZDA2ZmU2ZTQ3NzQ3NDdhIHB5M2stY2RlY2ltYWwKKzc3Njg4IDJjZjQxZDhmNzg3YWExMDk5NTkwOGE1MDljY2RkZTllZjg1MzE0MTcgcHkzay1jZGVjaW1hbAorNzc2ODkgYWRjOThiZjE1M2VjMDRiYWI3ZGQwZWFjYTk2M2Y4NzM4ZmYwYzhiNyBweTNrLWNkZWNpbWFsCis3NzY5MCAwMWNlN2E4NThkYWRiMjNhNTIzODQ4ZGI5MzAzZmVlYTViOThkNzdlIHB5M2stY2RlY2ltYWwKKzc3NjkxIDZiNzYxODE3YjcxNzQxYWEyZjA0NTY4MWU0Nzg0N2I3NGJmOGM1NzYgbGVnYWN5LXRydW5rCis3NzY5MiAzMWNkZTZlNjNjMDNkOGIzOWNjNjM4NmRhNWE4YjQ1M2E0Mjg4NGM2IHB5M2stY2RlY2ltYWwKKzc3NjkzIDYwN2UyNTI1YzA1MDdkNTMyOTE3NjFiOWEwOTM2OTU5ZGQyY2ZmMmQgcHkzay1jZGVjaW1hbAorNzc2OTQgMGVjNjAzNTM2NTZlMDQxMzM4NmVmOGYxMDVmYzdhMzdkNmNhNmUwZSBweTNrLWNkZWNpbWFsCis3NzY5NSBjZWMyZjI4MTExODIzN2Y1MTcwOWU5YWUzMzNkYTQ3YjI3ODc4ZWFjIHB5M2stY2RlY2ltYWwKKzc3Njk2IGQwZTRiZDc2YzY5Mjc0MzZlNjg2MmIzMTRiYzFlNThhMDUyOGNiODAgcHkzay1jZGVjaW1hbAorNzc2OTcgZDNiODNmZGJjODFhNDQxODdhZTc2OTBkMmI1YTc1M2Y1OTE2N2U4OCBsZWdhY3ktdHJ1bmsKKzc3Njk4IDdhOWYzNmNjNmRmMTFhZWQyNzRjYzk5ZWUxMDM3ZmVlZTNmNDFiNWQgbGVnYWN5LXRydW5rCis3NzY5OSBhNjc4ZmUxYzljOGJlOTM2MTQxZDIxOTAxODVjYzcwMDdlYjNhMmY0IHJlbGVhc2UyNi1tYWludAorNzc3MDAgNjgwMDY2NjNhODUyMzJiOTZlYWY1YjlhOTFhZjViMzQyNTUyNGU1NSBweTNrCis3NzcwMSA3ODdjNjgwZjFmZTg4Y2Y4NTY4NDdhNWZiNTU0MDI0MjNjNWMzNzZmIHJlbGVhc2UzMS1tYWludAorNzc3MDIgZjY2OWNmMTAwZWJiZWQzZmVjODUzNzNiYjY5ZmNhYTRlNzU1Y2M4YyBsZWdhY3ktdHJ1bmsKKzc3NzAzIDk3MDVlZjNmZGIyMjc4MTdlNWU4MDVlYzY5MmE2ODdlOWFjZDk5MDAgbGVnYWN5LXRydW5rCis3NzcwNCBmYTY5ZTg5MWVkZjRlN2NkZmRiZDNkMzg3NjU5NjU1NWM1ODM2MzVkIGxlZ2FjeS10cnVuaworNzc3MDUgYWM2ZTk2MGEwMTRkODJhZTJkNjlmYmEwZjdjMWQ0OTA5OTAxMDMxMyByZWxlYXNlMjYtbWFpbnQKKzc3NzA2IDJkZDY0YzI0ODU0YzkxMGQxMjc2NGM4YjZlZTBhOTg3NjEzMTg2ZGEgbGVnYWN5LXRydW5rCis3NzcwNyBiYjFjMzNlZmZmOTMyOTNmZWExOWM0MGQxYTQ1YTNjNjFiNTE1ZmVjIHJlbGVhc2UyNi1tYWludAorNzc3MDggMzAxZWQ2OWVkZGM0ZWFjY2MxYWI4MjE2MDNmN2FhODg1N2U0ODcxOSBweTNrCis3NzcwOSA5MDIyM2UzNDU4ZWIzMzlkZjAyMzZlNDQ1NjQyYzAzY2FjY2Y5MmQ0IHJlbGVhc2UzMS1tYWludAorNzc3MTAgMWVhNmNlYmJkODE4ZjdkNTcxMmYyZTFjMzVmNTliMDNlNTkzMzIyYiBweTNrLWNkZWNpbWFsCis3NzcxMSBmMGYyMjFlMWE3YzAzMGY3ZjdkZDk1YmM3OWU4M2U3OWJkMDRlZDdjIHB5M2sKKzc3NzEyIGJhZDVlMDNlMjQ0NWUzZTU0NjYyNzYwMWIyOWE2MjU2NjIxNDlkNzMgbGVnYWN5LXRydW5rCis3NzcxMyBkNzdjOTQ3ZmY3ZGI1YWVlZjIxNDNjYTlhZWMzNTk2YWI2NWE0MDg3IGxlZ2FjeS10cnVuaworNzc3MTQgYjQwYTVhNTY4ZTc2ZTQ0YjBkNjY1MTE5YWJiNTM1MmNkYjMwYWRhMiBsZWdhY3ktdHJ1bmsKKzc3NzE1IDE3ODkxNTY2YTQ3OGM0MjQ5NGEwNGQ4MDhkNjRhNDUxNDhhY2FmODcgbGVnYWN5LXRydW5rCis3NzcxNiA1YWIzMDEyZjkwYjc0YzgwNTQ2MGQwODNkMGUxMzAxN2QzNWE5OTQyIHB5M2sKKzc3NzE3IDgwN2Q4M2Y1N2JjODgzOWQ1NzVhNGYyZjVmMTVlMGM5YzEzYTliMzIgbGVnYWN5LXRydW5rCis3NzcxOCA1ZGI4MmE1N2RkZDA2NmJlNmU0NWNmYjYyN2RiZDA2ZTVhNzVmNjU4IHJlbGVhc2UyNi1tYWludAorNzc3MTkgMzk0N2ZkY2EyZjQwZGZmYzFlMDNhODlkM2I4NDg5OTA0MmNkZTc0MSByZWxlYXNlMjYtbWFpbnQKKzc3NzIwIGZmYzRhNDRiZmRiOThmM2Y5ZDcwZTMyMWZlNmFlMGQzN2I5YWQ1MjkgcHkzaworNzc3MjEgODc2NTZlODNkYzE5NjgzMjE2YjQ1NmM0ZjViNWQ4MTk4MTVmZTY5YiByZWxlYXNlMjYtbWFpbnQKKzc3NzIyIGJlMTJkMzYyMTUxOTU1M2UyMDk0NzJlNDQwYTI2MmNiYzNjNzA5YWYgcHkzaworNzc3MjMgOGMzZDJhNzFlZDAxNWVlYzExZTg4ZjJkNGExYTIxMmFiZmExZTVjZCByZWxlYXNlMzEtbWFpbnQKKzc3NzI0IDJkNzIzOWNhZDcxMzJiZTViZGIzZGIyYmM2OGFhNzU4ZGM1MTM3ZGIgcmVsZWFzZTI2LW1haW50Cis3NzcyNSAxZGM5MWU5ZGQ1YzEzYTRiYzJkM2JiN2Q0YjU4OTZhYjI2NGYyMzI1IHJlbGVhc2UyNS1tYWludAorNzc3MjYgMjMyNTMzZjcxYWJkNmY2ZGE5OWNkZTMxMmYyOWY0YjgwMzQ2Y2RhYyByZWxlYXNlMjUtbWFpbnQKKzc3NzI3IDZmZmNkYWZhMDExODk5NDQ4NWExNzRjZTQxMjgzMTQxYjgzNDEyMWIgbGVnYWN5LXRydW5rCis3NzcyOCA3MWFjZDQ0ODJlNjU1YjdkMWExMzc2NDM3MWI3ZTU5MGVhNDQ3N2MyIHB5M2sKKzc3NzI5IGRhYjM0YjYwYTcyZTFhYTIzNDQwZDZjYzJkNDIzMDQxYmEwMzBmZDUgbGVnYWN5LXRydW5rCis3NzczMCBlOThlZTk0NWUyNjI3MzA0Nzk4M2IzNjYwYWUwYjkyMjcxMTg2ZmQxIHJlbGVhc2UyNi1tYWludAorNzc3MzEgYzEwYWNlNWI3NmNlOTU0ZDBjNDI1YmViMWE2ZGMyYjJiZjI2ZTM1NyBweTNrCis3NzczMiBmZmI5NDkyMGVmZjNhYjk3YjJlMGViNDY0ODdjMjI1NWM2ZGRmY2UxIHJlbGVhc2UzMS1tYWludAorNzc3MzMgNjhkMWM4MWZmZjJlYTQzODI2M2FjYjFhNDQyMmY4Yzg1ZmQwZmM2MyBsZWdhY3ktdHJ1bmsKKzc3NzM0IGVhYjZjZGUyYTMxYzg0NWFmOTVhMzgyNmNhNTg1ZjU3ZDA4ZTE0ODUgcmVsZWFzZTI2LW1haW50Cis3NzczNSA1YzFkN2EzYmEyOWMxNmVlYzc4NzU0MjFhMGRkZGIyZTdlNmIzMDE5IGxlZ2FjeS10cnVuaworNzc3MzYgYTI1Njc5MWFhMTlkMGY4ZmUxYWUzZDRmMjdlYjgxYTUxOTFjMDI1NyByZWxlYXNlMjYtbWFpbnQKKzc3NzM3IDBjY2U2MGI2OGU0NjVjMDkxNDRiNDBkNDc5MWUyZmE5MjljOTU5ZDIgcHkzaworNzc3MzggNmEwNTcwZWUyMzY2ZWQ2ZGU2NTFkODUxMTdmNWRjNzE3MGIzMWE3OSByZWxlYXNlMzEtbWFpbnQKKzc3NzM5IDY3ZmYwNDA3NDI3MDMyMTE5ODFmYzZlMzc5MWUyYTFiNmJlYzBiNjEgbGVnYWN5LXRydW5rCis3Nzc0MCBmYmZlNWU0MjM0OWY2YTNlMDJkNjliZWQ4ZmZmOTVjOTZmNzQwOGY0IGxlZ2FjeS10cnVuaworNzc3NDEgMjQxOGEwYTlhOWE5MjVjN2RiOTk0MTJmYWI1Y2NlMjNhZTdjZDkxMCBsZWdhY3ktdHJ1bmsKKzc3NzQzIDVlODkzMGYzNzBkNTQ1N2UzMDQ5OTlkYjc4OTEzZTBjYTU2Y2U3YjIgbGVnYWN5LXRydW5rCis3Nzc0NCBmZjY2MzI0ZjUyYTEyNDIyZDNkZmI5YjhjNDliNmI5MTIxMzllNTAxIHJlbGVhc2UyNi1tYWludAorNzc3NDUgMDgzNTdkOTg3ODJiOWQzZTlhYWU2ZDc3MDkyNjJjNWI1M2UyMjY1MSBweTNrCis3Nzc0NiAyMzU5MzNkNGRhOGVkZTA5M2MzZGM3ZDE4ODRmOGExMjUzMzI1NzY5IHJlbGVhc2UzMS1tYWludAorNzc3NDcgNjk4NWMwZTg1YjRiYzhhY2Q1NTI2NjM3MWUyZWZiYzI2Y2Y1NmUwOSByZWxlYXNlMjYtbWFpbnQKKzc3NzQ4IDc4YzBhYzA3YWE5ZWIyNzZlNjU5MmNmY2U1NWM4NTFkNmE2MTM3YTYgcmVsZWFzZTMxLW1haW50Cis3Nzc0OSA4ZGQ0OWE4NmFkYWE1NDgzMWZhOTlmMTY1YmE1OTYxYTBhYzYyYmE0IGxlZ2FjeS10cnVuaworNzc3NTAgNzcyMzg5NTBjNmRkNDA1ZjcyNmIxMjM3ZWZiNzVlM2I5NDFmZDVhMiBweTNrCis3Nzc1MSAxZjE2NWM0NDAzMDY0YjQxZWU2N2U5YWI3ZjM2NTZkNzNlYzg3YzI3IHJlbGVhc2UyNi1tYWludAorNzc3NTIgNjIwODgzNmZlZGY5OWE1NDYyODQ2YjgzNTg4NzZiYWJmOWI5MzYwNyBsZWdhY3ktdHJ1bmsKKzc3NzUzIDNlMGZlZDI1YzBhZTU5YzdkMDcwNmQzNGMwZjdhZGYwMmIzMjAyNjAgcmVsZWFzZTI2LW1haW50Cis3Nzc1NSAyMmFlYTEzMWI2YWZjMTkxOWNkNzc1MDFmNWFlYzc2OTZiYWU3ODRhIGxlZ2FjeS10cnVuaworNzc3NTYgMmJkZTZkNGExMGVkZWRmYTVmNmUwZjdkYTcxZjY2MzU5OWUzYWExZCBsZWdhY3ktdHJ1bmsKKzc3NzU3IDc0MTE4N2JmYzYxMDJlZTUxMjQ3MGNiZGRlYzRkYzE5NWE0ODNiYzkgcmVsZWFzZTI2LW1haW50Cis3Nzc1OSA1ODI2NmYxYTJlN2YzZTM2MTZlMTEzYjA3NmQ5OTI3NmU2ZjcwMmM3IGxlZ2FjeS10cnVuaworNzc3NjAgYjI1Yjc4Y2U3OThkYzg3ZWNjN2NjMDE4ZWM5MjA4ZmNkNjVkYjcwZSByZWxlYXNlMjYtbWFpbnQKKzc3NzYxIGY5ZmQxNzk1ZmNmNzRlMTNkOTA5MmI2YTc5YzAzNDRmNjg4MDk2MWYgbGVnYWN5LXRydW5rCis3Nzc2MiAxMGFkN2Q4ZTVkMTcxNWE1NDVjZTE5ZGIzNWY2MTk4ZjI4OTEwZGNmIHJlbGVhc2UyNi1tYWludAorNzc3NjMgYmMyYjg4YmVhZTQ1ZGE4ZDk3ZWQ1ODVjZmUxZTYzOTQ2YTcxOTlkNSBsZWdhY3ktdHJ1bmsKKzc3NzY0IDkwN2ZmMTNiZDRlMmUxNDU2MzYzMDZkYzA2NDEyZjI2YzQ4MDAzNTAgcmVsZWFzZTI2LW1haW50Cis3Nzc2NSA3Mzc5Y2Y3MGZkNjAzYWY1ZjhlY2M3Nzk1MGQxMjcyYzRjNGJhNDdkIHB5M2sKKzc3NzY2IDgyMzJiMTBlMzRlMTM4OGJkYWVhMzI4Y2EzYzE3ZDQ0YWYyNDkyYjcgcmVsZWFzZTMxLW1haW50Cis3Nzc2NyA5MmU2ZThkOTA0YTI5ZWRlYzMwYjA5Yjg5ZDRjOTViMmMwMjQyY2Y5IGxlZ2FjeS10cnVuaworNzc3NjggM2MwY2Q3YTdkYjhlZTMwMTcxY2M0YmQwNGY3NzMzMjljM2Q5NThmYyByZWxlYXNlMjYtbWFpbnQKKzc3NzY5IDgwNTYyMDUxYmI3MGFiNTcxMDY1MjExODlkNTgzYzFlZjJkZDhhY2IgcHkzaworNzc3NzAgZDgxNWRkMmZiNWJmOTE4NjI3MzRkYTU1NWQ0YjU1MTY2NGE3MTVmNiByZWxlYXNlMzEtbWFpbnQKKzc3NzcxIDI3NDZjMjE3ZGQ5ZTBhODRjZGE1N2M5MzFlNGQzYTE1MmNhNWZjMTIgbGVnYWN5LXRydW5rCis3Nzc3MiBmZGU5NzE5ZTIwNTZmNDNhZWE1NjM2MmIxYzAxNDIyN2IwMTBkZDE0IHJlbGVhc2UyNi1tYWludAorNzc3NzMgZGYzMzU5OTE4NTE3ZDIxNjJhM2I5NmJkNzM3NjYxODdjY2NjYjc0NiBweTNrCis3Nzc3NCAwZGRmOGQ5NjkwZTVhZTdkMWQyNGJkZWRjYTg2YTBmOWE2YzMwZWNmIHJlbGVhc2UzMS1tYWludAorNzc3NzUgNjcyNmFlYjg2N2I5MDAyMGNhZGJjYjkwOGY0OTg0MThmMjYwNWM1YyBsZWdhY3ktdHJ1bmsKKzc3Nzc2IDQ5ODMxMWZkODgyMmNlNzlhY2RlNDk4NDAwNTU1YTcyYWFlN2YzYWQgcmVsZWFzZTI2LW1haW50Cis3Nzc3NyAzNGUyZDUxNjJjZTkzYzIxMjMyMWY4N2JiYTVjODUwM2M5NTgzYjVjIHB5M2sKKzc3Nzc4IGFmZDIwZDNkODVkYzg4ZjQ2Y2JjYjQ3Y2IyNDJmNGEzMTRhMWExMDkgcmVsZWFzZTMxLW1haW50Cis3Nzc3OSA3NWQyNGIyNDUyYTU5YjM1NmY0Y2RmNGRjMDAzMjZmOGU4YmFlMWRjIHB5M2sKKzc3NzgwIDEyMDU0NjM0NmY5Mzk3OTQ2MDQ4OTE0Y2QzYWJmMjUxM2VlMjEyODkgcmVsZWFzZTMxLW1haW50Cis3Nzc4MSA3NDhlMjgyZTA5MWNlNDNmNmEyNzU0ZjdkYjhkZDMwOThkZDEyNjNkIHB5M2sKKzc3NzgyIDFkZDgyMzJkNGVjYjk4MWM0NTQ2ZDhhZDZjYjEyNTUwZGI2ODE4MDcgcHkzaworNzc3ODMgZDRlMjJmZDUyOGUyYTJlMjY1MTc5YTE0MWQ2NzkzNWY2YWRiZGVmYyByZWxlYXNlMzEtbWFpbnQKKzc3Nzg0IGY2ZjllZTgzZWNiZjNjNDc1ZmE0NTc5MTMyYTgwZTFjNTQwNWYzOWIgbGVnYWN5LXRydW5rCis3Nzc4NSBkYzcxNDdkMWI3ZDk0ZGJmMjk5M2EwYzhhYzJlMWExNjRmNWQzZjVjIHJlbGVhc2UyNi1tYWludAorNzc3ODYgOTZkNWM3MDMxNDQwNTI5MzUxODY5ODUxOWY5MDAyOTc3MzhkN2QyNCBweTNrCis3Nzc4NyBlMjBlMDJmYzE0NDdmYzczMmVlNTc3ZDFhNWIzZmQ1MmI2OGFhZTU4IHJlbGVhc2UzMS1tYWludAorNzc3ODggYWQ3YTYxNTc0YmQ2ODllNjA2ODM3M2VlZDk1MTg3YTg1YzgxNjdlNSBsZWdhY3ktdHJ1bmsKKzc3Nzg5IDk1NzVjZTBkYjIwNDdjMWM1NjZhYTZlOTg5ZDk2MTI2YTJiZTliMTUgbGVnYWN5LXRydW5rCis3Nzc5MCBhOGE0YmM2OWJlYTEyMjUwZGZmNTJmZmRhMGQ5OWMxNmIyYmZjYmZlIHJlbGVhc2UyNi1tYWludAorNzc3OTEgZTY2MGNiNTJiZjAwNjBkY2M3MWIwYTU5ZjdhODgwZjNlYTEwMWViOCBweTNrCis3Nzc5MiAyYmZlZWY2Mjk5MzYyODA0NDFiMmJlNjMzOTQ1ZmVkZTE1OTkxYjljIHB5M2sKKzc3NzkzIDIwMDcwODgwZWE0ODMzNGIxZmNlMTQ3OTA2MDJkNDc5OTNlMDk1OTYgcmVsZWFzZTMxLW1haW50Cis3Nzc5NCBkZWJlNjE2NzNhOGIxMDViZWJiMjE4YjA3NTFiNzhmY2Q3YmQ2OGM0IGxlZ2FjeS10cnVuaworNzc3OTUgN2EzNmNhMDQ3NDJkYTliMjhjNjRjMWYyM2ZlNTk0NDlhMmJmNTlmYiBweTNrCis3Nzc5NiBmOTg5ZjRmMzAyNDUyMjdkOWExOTQxNWZmNTA4MDE3NzZlOTlhYTQ4IGxlZ2FjeS10cnVuaworNzc3OTcgNGY4YjJhMTczYzhkYzVjM2E0ZWRkZDA2MGQ0NTRlM2E2ZTc4ZjViMCBweTNrCis3Nzc5OCAxYTAwODFiODVjMDQ4OTVkYWUyN2UyZmY3OTM5N2FmZTUxNGQyMmFkIGxlZ2FjeS10cnVuaworNzc3OTkgMDExZDk2N2MxYTA0OTY2YjBkZWYyZDNiN2Y0OTAwNThhMWM5YWI4NyByZWxlYXNlMjYtbWFpbnQKKzc3ODAwIGY0MWQzNTNlYjY2MDI2NmRmZjVhYzZjZTc3NDU3ODFjYjVmZjBjOTAgcHkzaworNzc4MDEgNmE0NzkyY2JmNGM5ZjM2OWE1ZTRhYzhiZTVmZGU4N2FmOWMxZWY0ZSByZWxlYXNlMzEtbWFpbnQKKzc3ODAyIDBiZDYxNmRmYzk3Nzg1YTMxMTZkODdhN2Y1OGMwMTU0OGE2ZjllY2MgcmVsZWFzZTI2LW1haW50Cis3NzgwMyA3ZmI3NjQ0YTBiYzY4YTc1ODk4NTVmNTlhMzc1YWI1YzlmNWUwMmEwIHB5M2sKKzc3ODA0IDNmMzZjOWU2YTVhZjdmMjQ0NTY1MGE5Nzg3M2U1Mjc4MDNjMzM4NjUgcmVsZWFzZTMxLW1haW50Cis3NzgwNSAxYWJjMjE5MWJlYWY0OTRjOTNhNmJhZmYzMjU0ZDlkMWJkMTNjZjIyIHJlbGVhc2UyNC1tYWludAorNzc4MDYgYTVlNjhhYjc4OTViZDgxYzY3ZmQwMDE0ZGY3NTIxMmU3ZjIzNTVkYyBsZWdhY3ktdHJ1bmsKKzc3ODA3IDY3MTBhNDNmMTkzZjBmODQ4MGQ4MzFjOWRlNWZlN2M2ODRhNjJiMWUgcmVsZWFzZTI2LW1haW50Cis3NzgwOCA0Y2Y1YWU3MGNiMTE5ZWIyYjRhYmVjMmVkZDI4YzA5MDAyN2FlNDU1IHB5M2sKKzc3ODA5IGY2MDY0NzRhMjEwZDFjZThhYzNjOTFlNGI4ZmRmNThmYWJjOWViNjAgbGVnYWN5LXRydW5rCis3NzgxMCAyNDVmMzYyODIxMTM2Yzc5MGY2MGRhYzczYmNiNmMyZjljOTNjMjM2IHB5M2sKKzc3ODExIDY1OGViNWFlNDYxNTgxMjYwMjZkZGNhOWRiYWU2ZjFhNDUwOGJhYjUgbGVnYWN5LXRydW5rCis3NzgxMiA4MmFkNzg3MTFlZGI1MjlkM2VhNWIzOGNiYzQ2MTY0OGQ0YWNjZmJhIGxlZ2FjeS10cnVuaworNzc4MTMgMzIxODcwYjVkMDMwYWQwNjVjNWQyMGNlMTliOGRhZDQ2NWY4YzUxNCBweTNrCis3NzgxNCBmMmY1OWQ3YjQ2MTQ2MGNhMDVlNjBiNDAxODhhYmUwYzUwY2EyYWY3IHJlbGVhc2UyNi1tYWludAorNzc4MTUgNTQ3MjVlMmU4YWRkMGU5MTQxZTZkNjMxOTBiYzQ2YzRmMDRjMGFmNyBsZWdhY3ktdHJ1bmsKKzc3ODE4IDVhYTkwMjQ4YTk5ZjhmYWVjNzljZTE5ZDg5MzU0OTQ2N2M4NDI2YWEgcHkzaworNzc4MTkgMzhiOTBmZTM0NjIzN2U5YTkzYzBiZWRkN2I0NjExMjExNjc2NmQzMiBweTNrCis3NzgyMCAwZDRiMDU4OWZiYzcyMzMyNTgwMGU2Y2M0NDU4NzMyN2RmZTRjNGU1IHJlbGVhc2UzMS1tYWludAorNzc4MjEgYzU3OTk4ZTNiZTMzYWY5MmQxYTFiOGQyYWRhM2NhOTRkNDdlMjQzNyBsZWdhY3ktdHJ1bmsKKzc3ODIyIDNjZTg2MGI5ZTczMjM3YTQyZjlkODUyZjE5MWRjZmVhZTcxMWQyZGIgcmVsZWFzZTI2LW1haW50Cis3NzgyMyAyYjA4ZGU5YTFmYTAxMjAwZjkwOWNlNDBmM2IzMjBjNTJiYWZjNmNkIHB5M2sKKzc3ODI0IDZkZTY0ODk2YzZmODgxODFlMjM5MzE3ZmM0YmIyMzRhYWQ1OTJiZDggcmVsZWFzZTMxLW1haW50Cis3NzgyNSAyZGFiNDc2MDZhYjYzY2RhODJlZjlkM2YyMjFhY2YwMTVlMWNjNjRjIHB5M2sKKzc3ODI2IDNiNjUwNjgwODdjNjJmNTA4MmYyMzYxNGVmYTc4NmQ2MGVkNmZmODggcmVsZWFzZTI2LW1haW50Cis3NzgyNyAyMGYwZGEzMWZhMmNkNzliM2QwMTg5MzIwZWI3NmE1ZmJiNTAyZTM0IHJlbGVhc2UzMS1tYWludAorNzc4MjggODc5MTAxYTBiNTc5NzAyNTFlOWZkMzUxNzlkZDNjMTc2ODUyZTgyMSBsZWdhY3ktdHJ1bmsKKzc3ODMwIDI3NWNkOWZlMDRmMWJmOTZkNTFlODg3YTQzMGVlOWVjMDE3MzU4OTAgcmVsZWFzZTI2LW1haW50Cis3NzgzMSBkZGUyMGFlNjdmOWYzM2FiMDkwYjlmNDViMjJjYjdiNzhkZTg1Mzg2IHB5M2sKKzc3ODMyIDhlZjI1MjNjM2E1YzU3MjEwMjNjMjhhMmM3ZWFhY2IyODFhZjYyMDEgcmVsZWFzZTMxLW1haW50Cis3NzgzMyBhMmM5MTczNzg0MTFlMjNlYTk5MTBiYjhkZmI2ZmU0MzZlZjY5ODUwIHJlbGVhc2UzMS1tYWludAorNzc4MzQgNjA4NTNjMWFjNTYyZDI1OTg5MGRkZjQ3MjU4YjU1ZmQ0ZGMxYmY4MSBsZWdhY3ktdHJ1bmsKKzc3ODM1IGViZjRmMjI2YWVlZjlkZWJmZTZiZDU0ODhiM2FkOGYyYTIxNzE3NzkgcHkzaworNzc4MzYgZDAxNDYyM2VjZjcyMGMyZGY0NTA4ZWMxYWMyNWM3NWVlMGI4MTQ2MyBsZWdhY3ktdHJ1bmsKKzc3ODM3IGYyMGY4ZmM2Y2ZhZTM0NDFkMDE5ZThiYmY0NjEzYjA5MTQ3MjEwNzQgcmVsZWFzZTI2LW1haW50Cis3NzgzOCBkNmZiMzc4ZDc2NWFmOTE1ZTNmYjBmMjE3ZmU5ZGJkMjEwYjNhOTIwIHB5M2sKKzc3ODM5IDEwOWVjMDZiYmNmMWI4MDUxMWY0NDcxNzhhN2JhOTRhZjQ1Mjg5NmYgcmVsZWFzZTMxLW1haW50Cis3Nzg0MCBlMGFkMWYzYzkxYWYyMmNjYWU5ZGQzNjAyYTg5ZGRkYjUxOGFjMzhkIHB5M2sKKzc3ODQxIGJmYzEzY2U2MmZhYjBkYjQyZDJlNTk4Y2M4N2MwZjkwMjI1YThmYTggbGVnYWN5LXRydW5rCis3Nzg0MiA2Mjk1ZTE2MzAzYTcxODNkNmM1M2VkMWJiZTYzN2ZhYzc4MDJlZjBlIGxlZ2FjeS10cnVuaworNzc4NDMgNTg5M2VmOWE5Yjg0YmY4OGIwYTFkZjg5NDk2Y2QzMTg3NmRlNDBjMyBweTNrCis3Nzg0NCBlZmMyMDMwY2U2YjE2ZDg4ZWMzOGExMjMxZjBhMWI3NDRmODg3Yzc3IHJlbGVhc2UyNi1tYWludAorNzc4NDUgNzQ1MGUwM2E1MDFkYmI5YmY3YzFjMjhkYThhOWE3MmZkZjAzNzJlMiByZWxlYXNlMzEtbWFpbnQKKzc3ODQ2IDg2YjhmNGNiOTIzYWMzMzhkODQ4YmVlMDc1MjFjZWFiNTM2ZDQ2YzYgbGVnYWN5LXRydW5rCis3Nzg0NyBjMGM3NmQ0OGNkMmI4ZWMxOTgyZmM5NDJmOTg0OTA5MGQyN2YxZmVjIHJlbGVhc2UyNi1tYWludAorNzc4NDggNWM0N2NkMTczNmMxNjJhMGQ1YWIxYzMxZDIwNTMxODgxYWYxMTI3YiBweTNrCis3Nzg0OSBkMzRkM2I4ZjlkZWU0ZTE3YWIzOWRlZmU1NTQ4YmVlNjcwZGRmYzhkIHJlbGVhc2UzMS1tYWludAorNzc4NTAgMzkzMzJjMGFmODU2NWVhOTRiYjM5OTBjY2Y1YzY1NGFlMjAyNDVjMyBsZWdhY3ktdHJ1bmsKKzc3ODUxIDgyNGU1ZWNmOTAyMjViNTlmMzYyZDY3OTFkOWVjNDJhZTI4YzVlMTEgbGVnYWN5LXRydW5rCis3Nzg1MiA5MzRkNDk1OGE0MTUxYWZlNTk4NjM2YTBhY2I5MjA3YTg3MTU3ZGFjIHB5M2sKKzc3ODUzIGQ3OWFhNWI2Njk3MWM5ZjFjMjkwYWRlMTQzMGY1MDE1ZWEzOWJjOGUgcmVsZWFzZTI2LW1haW50Cis3Nzg1NCAwMTlmNTJhZTBmZThjY2I5ZmJjYmQ0ZDNhNDljODkzNWUwODVjODdmIHJlbGVhc2UzMS1tYWludAorNzc4NTcgMmJmNzM1N2QxMjJjMjZjMTMxOThlZGI5ODhlMWE0ZjUyMmY1MzRlMSBweTNrCis3Nzg1OCBkMjFiMDVmZjkyMGFmYWYwMjNkYTY1MmVjZmE5ZDRjZDZiZTAxZTFiIGxlZ2FjeS10cnVuaworNzc4NTkgNWE3ZDdlZWI4OGMxMTMyNWE1ZGQ1M2M0ODFlNzcyODc5OTNhZTg3OSBweTNrCis3Nzg2MCAwOTBmYzM5Y2U1ZWMzNWRkNWE0MmYzNjFiMDdmZWVlNjA3MTg0NzhhIHJlbGVhc2UzMS1tYWludAorNzc4NjEgOTc2ZWM0NWQ5MDkwYWY4NGQ5MGQ0ODJmYWE1NDE3NWE0ZWFjMDhhZiBweTNrCis3Nzg2MiA2OTA4YmE0NDVkMmIzNWMzOTBkODE3ZjIzZTc2OTQ4Y2Q0NTFjNWVjIHB5M2sKKzc3ODYzIGY1NjIwN2I5MzZjYzM1OTQ4NWI0YThkZTZhZWE1MWM0NDAwZDY0MzIgcmVsZWFzZTMxLW1haW50Cis3Nzg2NCBlOTU2NTcwYmMzYjlmMDRkOWY5NTQ1YmE3Y2QzNzg5NmZlN2NjMDE4IHJlbGVhc2UyNi1tYWludAorNzc4NjUgZmM1ZWM3ZTA0MTc3M2NmYjUyZjIzODBiOWE0YjE1OTViYzI3ZDdkYSByZWxlYXNlMjYtbWFpbnQKKzc3ODY2IGZlMDg2YWJiNGFlYmU5ZTYwOTA4YTU1Y2Y1MjBlYTBkYTcyZjQwYzIgbGVnYWN5LXRydW5rCis3Nzg2NyA2OGM1NmM0Yjg2MzFjYmQ5Yzg3NzI3MzQ0OWE1ZjZlZTJkNjFlOTE3IGxlZ2FjeS10cnVuaworNzc4NzEgZjBiYzZkOGFhMjFlMDI1M2MyZDJkZGVjZjAxZWIwOGFjNzk0MWZjYSBsZWdhY3ktdHJ1bmsKKzc3ODcyIDcwOThhNDZmMGI3NWU1YWFjZmFmODFkNjVkNzJlMzYxM2IwMjM1MzIgcmVsZWFzZTI1LW1haW50Cis3Nzg3MyAzOGM5Y2NjYmJlNWE0YWNkNDAwNTE1N2FjYTFmNmNlODU5NDIxZjBlIHJlbGVhc2UyNS1tYWludAorNzc4NzQgYTIwNDc3NGQ5YzcwYmRkYzJjZmI4MDc1NzVhZDVjNDZiYjhhYTg3NCByZWxlYXNlMjUtbWFpbnQKKzc3ODc1IDJkZGJlNjJhNjgyMGZhNWQ3YjcyMzY1NTgyNDhjNDZiMDhlNDcwNDAgbGVnYWN5LXRydW5rCis3Nzg3NiA2ZTZiNTk0MTNhMTM4OTliNzVkZmIxYjBjOWE5N2IyOGVjNzYyMGQ3IHJlbGVhc2UyNi1tYWludAorNzc4NzcgNTY2ZDVjOTU3YzE5NzU5NzIzNTM3YTM3OTk4NzAxMWExZjY5OGQ0NyBweTNrCis3Nzg3OCBjZTBkNGRjNDg4ZDI5MDVkY2ExOTFmZDNlYzc0MGQ1MzZjMjE3ZGFmIHJlbGVhc2UzMS1tYWludAorNzc4NzkgZjYyODQyYzI1YmQ4MzNmZDY2MTcyODZkMGYzY2I0YWRlMTk2ZmM0MiBsZWdhY3ktdHJ1bmsKKzc3ODgwIDZiMzNlYTk0ODg5NjYxODExZTA5ZjYyODJmOThmY2M0Y2ZmYTM3MTIgcmVsZWFzZTI2LW1haW50Cis3Nzg4MSBmZDU4MDFiODM4OGQxNTcyMmEwNDdmY2VkNDhlYjdlMDcwZTVlOTFhIHB5M2sKKzc3ODgyIDk4MWEzOWYzNTkxNGQ0MGMyYjY0ZTRjMjMwY2M1NmI3MmNhYzFjNTcgcmVsZWFzZTMxLW1haW50Cis3Nzg4MyA2OWJmZmEzYzc4MmUzMjU4OTRlZjU1ZmNlYTY4ZjU1ZWE4MDU4YzA4IHB5M2sKKzc3ODg0IDFlNDdiZDZiYmVkNTRmODQ0ZGRkMmFjMmNmOWYwYzEyZWVhMmY1MzkgcHkzaworNzc4ODUgYTczYjkyZDFlOWZkNTgyZTc1YWEwNmI1ZjM4NGY4ODlhZmMxODVjNSBsZWdhY3ktdHJ1bmsKKzc3ODg2IDA1MDhlYWQxOGQ2ZjVhMDkyZTlkOTUwYzcyYzE0NjcwNTUwOWVlZjMgbGVnYWN5LXRydW5rCis3Nzg4NyA1NmEyMjA4MjcyMDljYmIzM2QyMGQ0NDUxMzc5OGJjMjk4M2NhMGM1IGxlZ2FjeS10cnVuaworNzc4ODggMTU5ZGE5YTQyZmVmMWM2YWIwMmI5MmZiY2MwNjM1YmUwMjU0MzQ0YyBweTNrCis3Nzg4OSBiY2JiOTA0OGY0ODAzNzNhZjljOGI3YjM0YzFlM2ZkZTk4MWU2Y2E0IGxlZ2FjeS10cnVuaworNzc4OTAgNzcxMzBmMmZlOTQ0ZTRhY2QxMGYwMzViNjc5NGE0MmQxMmIxZWE5MSBsZWdhY3ktdHJ1bmsKKzc3ODkxIGVmNTYzOWM3MTk2NDM1Y2UwYmU3ZTRlMzExZmQxNTNjNWJkNWIzM2UgcmVsZWFzZTI2LW1haW50Cis3Nzg5MiAyNDY2NWE5ZDg4MWFkZTI1Njk3YTc0YzRkMTk4ZGE3ZWRmNDc4NzQ0IGxlZ2FjeS10cnVuaworNzc4OTMgNzViYjJmMTY5MWMwZWE5OGIxNzZlNjMyZmI5MDExNGIzYmZhM2M0ZiByZWxlYXNlMjYtbWFpbnQKKzc3ODk0IDM4ZTMwN2ZiODM5ODU2YWM5NzBlZmJjMmM3MGNmZmE2N2I4NGQ2MTcgcHkzaworNzc4OTUgMzExZGI3YTY4YTgyOTM2ZDEzNGFkZDc0Nzc2ODJkYWY3ZGQzMWM3MiBweTNrCis3Nzg5NiBjN2UzMmI0ZTM4NzRiYmJjZTA0ODM4OGQ1ZWYzOWFkZmNiMTIyNDc1IHB5M2sKKzc3ODk3IGQ4ODdkYjUwMWEyMjExYWEzNGQ3MWUxYmY3MGExZmYzZWE5M2EzNTEgcmVsZWFzZTMxLW1haW50Cis3Nzg5OCBmZDI0ZGVkYmE1OWVhNWYwZTAxM2NkMDljNWUxMGE0NzBiOTY2ZDA1IGxlZ2FjeS10cnVuaworNzc4OTkgYjJkYmYxMWUyYWM0Y2VmMDQ1ZDAzZWFjNDRlOWFiMzA1Njk0OTVkOCByZWxlYXNlMjYtbWFpbnQKKzc3OTAwIDg2MDRlOWEyNTdjYzhmY2E4NTBkZGI2MmRiNjY2MzU5NjNhYmM5ZTIgcHkzaworNzc5MDEgYzdkY2JkNjVjMjEzNTIzZTM0MzZkNTZkOTg3ZGYwODc4NWFjNGMzYSByZWxlYXNlMzEtbWFpbnQKKzc3OTAyIGM5Nzk1N2Y1Y2RmOTI0NWEyZTk0ODg0YTdmZTM2MzBmMDllNmYyMGEgbGVnYWN5LXRydW5rCis3NzkxMCBhZjQ5OGFiMmFmYjRhNWQxNmFkNTg2YThhOGMyOTVkMzY5N2NmMDI2IGxlZ2FjeS10cnVuaworNzc5MTEgNjUyZTBiNzQ4ODVhYzc3ODE4MjBiMDc1ZGRiZmUyOGI0ZDJhYzQ1MCBsZWdhY3ktdHJ1bmsKKzc3OTEyIGQwNTE3NzljNWJiZDZkYWQ4ZjQ0ZTljZmU5MzBlOGRmNTJlYzU0YWIgbGVnYWN5LXRydW5rCis3NzkxMyA1YmFkZWJkYjQzOGNlZjc1NWJjMGQ0NDRiNTZhNWQzMjY5YmY4NjdlIGxlZ2FjeS10cnVuaworNzc5MTQgNGNiZmYwMTM5ZjViODA4OWY4YTBhOGNkNzIxZTUzYThkNzhjZjE5YiBsZWdhY3ktdHJ1bmsKKzc3OTE1IDUyNWI2YzVkNWIxMmNjZmE2NmVmNDFmZGU2NTIwZWNiM2VkODI1YTcgcmVsZWFzZTI2LW1haW50Cis3NzkxNiBjMzdmOTliNTRkN2NmNDUzZTkyZjYzOTc5Y2VlYTQ0YjBhOGFjYTE5IGxlZ2FjeS10cnVuaworNzc5MTcgYzc3MDNiNjQ5NTE2YjczMDM2MGJhYjRjMTY0M2Q3M2Q1YTMzYzkzYyByZWxlYXNlMjYtbWFpbnQKKzc3OTE4IGNkMDBhOTQxODZjOTM0OTc3YTUzYWZjNDNhMjE2ZjkzYTI4Njc0ODAgcHkzaworNzc5MTkgZjNmMDhlZTgzYzU1ODYzOGFkZDRhYzIzNTM5MjQ4NWI3MjEyMDc3NiBsZWdhY3ktdHJ1bmsKKzc3OTIwIGRmMmI5YTZkMjhhZWY4NWI5YTJlNTYyNjRhODM4MDZhMzYwYWEwNjIgcmVsZWFzZTMxLW1haW50Cis3NzkyMSA5OTJjYWUyNDZhMGM3ZmE3ZGFkYjMxYzk2OTY5ZjM5NWZiMTZkZTgzIGxlZ2FjeS10cnVuaworNzc5MjIgN2NiMTRiNTIyZjgxY2JjNmIwZTk5NzkzMWNmMGQ3ZGY5NjA1YWU0ZCBsZWdhY3ktdHJ1bmsKKzc3OTIzIDZmZDJiODE0N2YyYTM3ZTVhYWNhYTQwNThkZjY0NDY1NjBhYmQxMjQgcHkzaworNzc5MjQgMDBkNzgzOGVhZjNhZDM2ZTc5OWVmNjMzMzQzYTJjMjFkMTE5ZGE0ZiByZWxlYXNlMzEtbWFpbnQKKzc3OTI1IGQzMTI3ZjZkZTE2YzA4N2Q5MWZmZGRhY2YxZTRmYjdhNzFhZWYzZTMgcHkzaworNzc5MjYgN2NkMTgyYmVlNjMwYzMzNTAzMmQ5YzQ5NjEyODA1Y2JkMmRhZDU2ZiBweTNrCis3NzkyNyAwOGNmNGIzNTMxYzk0NjQ4ZTBlZDgxNjlmMDhiMzZiN2I3NTMwMDEyIHJlbGVhc2UzMS1tYWludAorNzc5MjggMzgwOTQyODkyZGMwZTBlYmEzOWVmNDNlOTNmZDI1OWRlMzJhMTNhNyBweTNrCis3NzkyOSBiN2ZlY2UxNWJhNWZiOTg3NDg1NGRmZjM4ZDdjMDUwYTM4OTUwOTE2IHJlbGVhc2UzMS1tYWludAorNzc5MzAgYjg4OGRiNzY0NWFhOGNmZjI3ZWU2Nzg3MDEzYzM3MDkwYjc0YjY1YSBsZWdhY3ktdHJ1bmsKKzc3OTMxIGViOTg3YzlkZjM3OGZjNDZiOTg3M2FhMzM5NWNlZDMwOWNkNTU0OTQgcmVsZWFzZTI2LW1haW50Cis3NzkzMiBhODdmY2UwM2EzNGRkMjA0NDk3OGFhYTA2ZDkxNGM3MDI2NzMyMGQ4IHB5M2sKKzc3OTMzIDk2N2JmZDM2OTczNjY5NzMxMTNlMDcwMmIwYmVjNjU4OTIxZDJlZDMgcmVsZWFzZTMxLW1haW50Cis3NzkzNCA5YjM1MWNiOWVmOTgzMzk1NGVkNDBmZDk3MWQ3ZDkxNzc5NmQ1ZjFhIHB5M2sKKzc3OTM1IGVmODE3ODQ3NzU2N2Y3YzA0YTljYjI3Y2Y3YzZhYjA0ZTdiNDYyMTMgcHkzaworNzc5MzYgY2NjNmU1ZDVhM2IzODc5MGQ1Mjc3Zjc0YTUzYzRiOTJjZmVmZjZhNyBsZWdhY3ktdHJ1bmsKKzc3OTM3IDk5M2Y3MDNhNjFiYWUwOGU5MTBjYTdhN2I4NmE1MjAxODhkMDhkNDQgcHkzaworNzc5MzggMmIxZDY2NWU2NjI4NDY4NmMwNTI5OWUwMmE3MGVlMTAyNzlhYzk4NCByZWxlYXNlMzEtbWFpbnQKKzc3OTM5IGRhYmI3NzM0ODUwMWFhMTZkMjZhNmMwYjA5OTZhYzgwNDE5YWNlNmMgcHkzaworNzc5NDAgNTRkMDI1YjJmNDVhOWYzZTE3ZTAzNmM0ODY2NmVjMGRkM2U0ZGU2MyBweTNrCis3Nzk0MSA3MmVjZmZmZTlmMDI1NjZhYzc2YjllMGNhNDY2ZTE1YWZhYWM5NDEwIHB5M2sKKzc3OTQyIGZmMDQwODgwZDFiZTk4NDkyYWRlYmY3NThhZjk3YWY5N2EyZDBmYTcgbGVnYWN5LXRydW5rCis3Nzk0MyA0NTg3YjA2MmI4ZDA2NWNiNzkwNmRkNDNkNTBkODgxOTg1ZGRiN2E0IGxlZ2FjeS10cnVuaworNzc5NDQgY2U0Yjg0YzAyZTVhNzU1NmM4NGZmOWM2ZThmOGI1ZjFhMzQxZGU1ZCBsZWdhY3ktdHJ1bmsKKzc3OTQ1IDMyMzQ0YzVjZjkzMmVhMzI2ODgyYWNjMTFjZmJkY2RlNWMxNjMwYzEgcmVsZWFzZTI2LW1haW50Cis3Nzk0NiA3NDQyZGI1NDc2NDVlMjBlMzRhMGNhY2VlMzJmNzQ5MzhkYzM3MWM0IHB5M2sKKzc3OTQ3IDBkN2U1ZWRjNDUyNjgwODcxOTIzY2VmNzg1NWI2OTEzMTgxMjI5NzAgcmVsZWFzZTMxLW1haW50Cis3Nzk0OCA4ZDgwNWM2YzJkYjM3YmU2NzljNWZjMTJjY2I0M2YyNzcyMDY0NzdmIHB5M2sKKzc3OTQ5IDM5YzhiNDc4MjRjNTA5MTU0Njg5YmM2MzlhNWRhM2RiZmU1Yjg0M2EgbGVnYWN5LXRydW5rCis3Nzk1MCAxYzdmZWFjMGQ2ZDYzODhiYzZiNmRhMmUxZWNiNzU1NGU5MDFjY2YzIHB5M2sKKzc3OTUxIDhhMmViNzc2MTIzMDk3MGFkYWFjZDEwOTNjMmQ4YTk4MzcyMWNkMWIgcmVsZWFzZTMxLW1haW50Cis3Nzk1MiA0YWU4YjljYTQwZmZlN2FjYTcyMDlmNmFiNDAyZDIwZjRlNzJiMTM2IGxlZ2FjeS10cnVuaworNzc5NTQgZDc1Zjg4N2RhNzcyZjgxZWNkNDYyY2E2ZDY3Mjc2MmYxMGYxZDEwZiByZWxlYXNlMjYtbWFpbnQKKzc3OTU1IGE2NGEwMTM0ZTY2Y2UwODljNWUxNDIyNTA5NGQ3N2EwYTU1M2Q4MzUgcmVsZWFzZTI2LW1haW50Cis3Nzk1NiBhN2E3NzBiY2U5M2QyNWYxNDBjZTYxZTI4MzY1ZGZiZWJmYzlkOTdlIGxlZ2FjeS10cnVuaworNzc5NTcgMzBlNDI0NmVlODAzMjg1MDkxNGQzMTJlYTIwMDdiMDdiYzNmMjI4NSBsZWdhY3ktdHJ1bmsKKzc3OTU4IGZiYTFjNzhmMTA0ZTljMzk3OTM3OTlkNjg1YjRmZmJlZDIxYTg1NmIgcHkzaworNzc5NTkgM2MxODhlZDhlNTIxZWUzN2M0MTRlMTM1ZjBlY2ZkMmQ2OTAyYzJkYSBsZWdhY3ktdHJ1bmsKKzc3OTYwIDcwM2EwNGUyOWNlNjM0MjNlMTZkYTFhZjQ2ZmUyNWZlZTAyYmYwZTggbGVnYWN5LXRydW5rCis3Nzk2MSBjNzI1NGU4YmMxZGJkMWZkNDE3ODE1MmFjNWFlODE1MTdmYjBiYzdjIHJlbGVhc2UyNi1tYWludAorNzc5NjIgMGMyYjA4OTg2NDNlMjk2ZDFlZmZmNjIzY2I1Njc2NDM1MmRlZWQxYSBweTNrCis3Nzk2MyA1MTRiNTZlZmQ4OWEyNDM5ZDg0OGRmMmEyM2RmNGMyYTJhNjE5NTcwIHJlbGVhc2UzMS1tYWludAorNzc5NjUgZWViOGE5OWNhMGM1YTJmOGYxOTNlNDc3MGRhZjM2YzNlMWNlYjU5MiBweTNrCis3Nzk2NiAyZjgyOTM5NmE1NGUzN2JlZGNhOTI0YmRkMDAxYTBlYjU1YmMyMWI5IHJlbGVhc2UzMS1tYWludAorNzc5NjcgZjQ0MTQyMmY2ZjU1NzRjOTVjYzYwOWYzZTZkODNlNWJkY2RkOGFkNiBsZWdhY3ktdHJ1bmsKKzc3OTY4IDNjMDIwMzQ5OWFlNTM1YzVlNTU3ZGNmMWMxNDA0NDYwNTk4MjFjOTQgbGVnYWN5LXRydW5rCis3Nzk2OSBiYjZmODNiOWJhNDllMDJmMjBjYzllMDViZmVjYjNkZGQ0MTYzZDE3IGxlZ2FjeS10cnVuaworNzc5NzAgNTRlOTc1NTgyYzY1NGE4ODQ2NTZlOWU2MDNjMjFlOGEwNzRiYmMzZCBsZWdhY3ktdHJ1bmsKKzc3OTcxIDQ1MWVkMzJjZmM1MDYyNDIzM2I4OTUzZThjMWU5MDUzMjFlNjU4ZTMgcmVsZWFzZTI2LW1haW50Cis3Nzk3MiAzN2Y2MjY0ZDFhYTMzOTg5MWIzNmQ2ODE2NGI2NjFiYjVhMzQzYjNjIHB5M2sKKzc3OTczIDRhYWIxNGFmNWUyZGY3MjA1ZTBiODNjZTE4NTA2MjExODc4MTRjNDQgbGVnYWN5LXRydW5rCis3Nzk3NCAzMmUwZjFhYTM0YmNmNzMxMjBjZWE1YzQxYjRkNjdmNjVlMjI3M2FjIHJlbGVhc2UzMS1tYWludAorNzc5NzUgNzgxM2M0MDk0MmU5OTRhOTRhM2JiNjU2MGNlNWIwZWU3NTFjYTMzNiByZWxlYXNlMjYtbWFpbnQKKzc3OTc2IGVlMDhmYjgzNWJmMTJhYTg1MzAwOWE3Yjc4YjU1NGJmYWZkNWU3MWIgcHkzaworNzc5NzcgMTUxNTBjZDhmZDM2NTM0OWZjNGE0YTg1NTU3NTdjOGZiYjcyNmQyZCByZWxlYXNlMzEtbWFpbnQKKzc3OTc5IDMwNGNlOGZjYzMyYTFmODMwODJmYmRmNDVkNjU4NzdhZWUzZTY5NDUgbGVnYWN5LXRydW5rCis3Nzk4MCBkZTVmYTkyNWRmZWE2MTUxMzI4N2IwNjk5MzNlYmE2ZjUyN2QzNjg0IGxlZ2FjeS10cnVuaworNzc5ODEgODFmMmVjZDNiMTNlOGZkZjJjODE3Mzc5ZDA3MTA2YmY4NzBmZTcwYyBweTNrCis3Nzk4MiBjMWE3Yzk0OWMxMTAwZDhmYWRkZTUwNWNkYjQ2NmZmOWVkZjM5NTBkIHB5M2sKKzc3OTgzIDc2Y2Y2MGUyZDAwNTc5NmY2MDAyYjU4MDdkNGI4MTA5Yzk0ZTkyMzMgbGVnYWN5LXRydW5rCis3Nzk4NCBjZmE4N2Q0NjZjMDQ0ODAzZTIwOTFiNzg2YmY0MTFmYTdhNmE5NjNkIHB5M2sKKzc3OTg1IGI1YWQyMTkwZGNlOGMwZjZlZGU5YmZmZjBiYzhhNjk3Njk0NmI1ZmEgbGVnYWN5LXRydW5rCis3Nzk4NiBlMWJkZWJkMTM2ODU5ZWVkYTFhYjkzOGEwZWEwYWE2Y2ZkMDc0NDhhIGxlZ2FjeS10cnVuaworNzc5ODcgNDI2Y2M1ZjJhZDI0MjBhMGJiNDk2MzEwMTRkMWRmZTI4MzYwYTUwZSBweTNrCis3Nzk4OCA1NTUwNTg0MmU5NzM5ZWEwZTNlZWI4MjY5OGYwMTE3YWM1ZjI3MzIyIHJlbGVhc2UzMS1tYWludAorNzc5ODkgN2M5MzM2ODMwMTBkY2IyOWE4ZTNmNzgyMTFiMjQ3M2ViZDdhMjQ3YiBsZWdhY3ktdHJ1bmsKKzc3OTkwIGViNTUwZTgzOTQ2MDk3OGYwMDY3ZWZkN2NiMTZlMjQ0NzZmY2ZlMDIgcmVsZWFzZTI2LW1haW50Cis3Nzk5MSA1MTNjNGEyNjAwYThiZTA3NjM2ZDhjOTQ1YzUxYWNjYjQ4NWE5ODMyIHB5M2sKKzc3OTkyIDVlNTE4MzVmODU5NTEyZWQyYzI0OGJjMTEzNzJmMmYxMDMxMTk4OWYgbGVnYWN5LXRydW5rCis3Nzk5MyAxY2YxNmNlNDE1ZWFlMDZlNDYxNjk5MGE2ZjZiMDQzYWU0Y2QyODk3IHJlbGVhc2UyNi1tYWludAorNzc5OTQgYjExYjgwMzAyNjhkZGMzYTBlYzA0NzA5ZTRkYTMyYzNiYTZmZGUxMSBweTNrCis3Nzk5NSA5NzljM2I2MjUwODM5N2FjOTg3NWU0ODM3YWMzNjQ3OGUyMjE3YzAzIHB5M2sKKzc3OTk2IDExYjdjODEwODE2YmVmNDg5Mjg3ZGJmMjUzOGMxMjcwZWZiYzdiNWUgcmVsZWFzZTMxLW1haW50Cis3Nzk5NyAzMmEzNjBiMTNmYTMyMDZhZWI0NDRmYjc5ODkyMzU3NWNlNGZkN2ZhIGxlZ2FjeS10cnVuaworNzc5OTggY2QzMWE5ZDY3ZWIxMzlmNTMwNjFjNDg2MGYwYjVmZGExMjIxYzc5OCBweTNrCis3Nzk5OSAyNzQxNmNlNjJhYzZiMTE0MGJmYzE1MmYwOTk4OWE4N2Q5ZDhkODU2IGxlZ2FjeS10cnVuaworNzgwMDAgYzAzYzkzYWM4MTUxYzMzMjE3ZTFmZmUwMWM1YmVlNGJhYjBjZWQxZSBweTNrCis3ODAwMSAyYTcwYzcyYjg3YzdmMTJmOWQwOWVhYjgzMjE3ODNiZDkyNjYxNDIyIGxlZ2FjeS10cnVuaworNzgwMDIgZWRlYTQ4YjEyMGUzMzliZWI1ZGJhMmY0YWViOTUxOWZmNjdiMmNkZCBweTNrCis3ODAwMyAzZGQ5MjFhMTkwYjhlMWM2MGY1Y2I2NjYxYmY2ODkxNGU3ZDM0MmJjIGxlZ2FjeS10cnVuaworNzgwMDQgNDJhYzhjYjEzZWQwZGY4MDNlZjM3Y2IzZmM3MjQ4NTAzYTEwYzdiNSBweTNrCis3ODAwNSBhMTNlOGQxZDM3OThjNTAxODMzZmU2YTY2MTViYjRlNzNiNmI4Mjk5IGxlZ2FjeS10cnVuaworNzgwMDYgZmYwZmNkNTE1NGQzMzE2NjdkNWE4NTYzZDRmOTVlOTg3NzJkMzY2YSBweTNrCis3ODAwNyBlOWRiYmNkNGFkNDBhYTdmODY4YzNmNmIxMTViNzYyNWZlNzhhY2Q2IGxlZ2FjeS10cnVuaworNzgwMDggOTRkMTQ4MGJjNTYzMDQxYzIyZDE1ZDU0ODgxMDZiYzVhMTc4ZjIxMiBweTNrCis3ODAwOSA3OGU3OTkyZjI4NTc5ZmE1ZDMyNWM4Y2ViNzdmOTI1YzgwZWI5MWE0IGxlZ2FjeS10cnVuaworNzgwMTAgMGQ4ZjIwZTQ2YzFmYTE5NDc0NmEyYTMzMzcwYzRlN2ZmNDU0OGEyYSBsZWdhY3ktdHJ1bmsKKzc4MDExIDc4Yzg4YjA3Nzg0MzFhNzBhMmMyYjY5Y2RjMWIzNTEyZmE2NjVlY2IgcHkzaworNzgwMTIgOGU1OWY5Zjc4OGY1YjA0ZTYwNTY1MWVlYjcxYWRkZTE1MjUxNmZmZSByZWxlYXNlMjYtbWFpbnQKKzc4MDEzIGZhYjM4MDY3NDk1OTZmMzExYWY5NDU3MjYxZjk1M2UyZDM2NTlhODMgcmVsZWFzZTI2LW1haW50Cis3ODAxNCAyYjhmNDU4YmJjZjU4ZThkNzFhZjZmYjRjY2FkNGI0NjVjZTEyMTdiIGxlZ2FjeS10cnVuaworNzgwMTUgMTNmNjk1YWI5MTExY2M2OWRmMTAxMzExMmUyYmFhM2Q0YjIwMDI0OCByZWxlYXNlMjYtbWFpbnQKKzc4MDE2IDBlYjQyMjYyNGRiNWVmYTNiZjgyYTg4M2JkNThjNzc0MDMwODZjOGYgcHkzaworNzgwMTcgOWNlZTA4NzkxNWFhMWRiMmQ4NDM3YTM2OGY4OTNmMDU0NzI4NmUxYyByZWxlYXNlMzEtbWFpbnQKKzc4MDE4IDUwYmQ5Y2QyZWQ0ODE0M2I3Yjg5ZDQ0Mzg3MzY3MjY0ZDkyYzU2MDAgbGVnYWN5LXRydW5rCis3ODAxOSA3MWUwODkyNjViMjg1M2NjYmIzZjUyNDA5OWIzN2JlODc0MDM2MzljIGxlZ2FjeS10cnVuaworNzgwMjAgNDE4MDU1N2I3YTliYjlkZDUzNDFhMThhZjE5OWY4NDNmMTk5ZTQ2ZSBsZWdhY3ktdHJ1bmsKKzc4MDIxIGZlODMyYzVkMzA2NmIxNjMyN2QzZDJkMjUzNjg1M2VlNWQxNWRhNWIgbGVnYWN5LXRydW5rCis3ODAyMiA1ZTlhYjRjMjViOTE0YThiNjY4OTA4MDk2ODBmODllZWNmM2VlNzY4IGxlZ2FjeS10cnVuaworNzgwMjMgODJjZTNhMDg1NzFjOTUyN2FmYjU4OTkzMGQwODdlMmE0NGJhYjE5NiBweTNrCis3ODAyNCA0MDAyZjFjNDZiODY5Y2UzN2QzMGRjNjllZThjNTBjOThiOWY2MjdhIGxlZ2FjeS10cnVuaworNzgwMjUgNjNiM2E2NWFmZjUyYThlMmVmZjg5ZDIzZWE3ZjkzMzUwYjZhYWMzZiBweTNrCis3ODAyNiBhZDY4M2NlZGZiYjNhOWMyOTI2YTZmMjZkNDBkNGZmM2FhNWEyMzkwIHJlbGVhc2UyNi1tYWludAorNzgwMjcgMjIyYjZkODBlNzY5MjQwMDFmMmYzOGRmYTAzNzBmZjk4YTdjMWY5YyByZWxlYXNlMjYtbWFpbnQKKzc4MDI4IGRkMjIzMGE4YzQxZGExMTdlMTU2YWFjMDk1OGNiZDQxY2E4ZDhkZDggbGVnYWN5LXRydW5rCis3ODAyOSBjYWNmMjA3ZmJkZWQ0M2M0YjQwNmM0MjBiMjFhMWI5YjE5NDU1YzBjIGxlZ2FjeS10cnVuaworNzgwMzAgZTljYjNmZDM0MWU5ODJlNTMzMjUyN2JkOTE5OTg0NzM1NzdkN2NmYSBsZWdhY3ktdHJ1bmsKKzc4MDMxIDg3ZDhiOTVmNTY3NTYwNjE1MGNlMmU2ZmVjMzU5NTlhMjA2YTFjNGUgbGVnYWN5LXRydW5rCis3ODAzMiBkN2Q0OGEzMGFkZjMwMzRiOGI4Njc4NjIzNTEwMDM2NmNmMDdjNjMwIGxlZ2FjeS10cnVuaworNzgwMzMgNjA5ZmExOGIyNGJmY2M2YWI4NGI5ZWUxM2I1MDQ5MmU0ZDJiYTE2ZCBsZWdhY3ktdHJ1bmsKKzc4MDM0IDgxYjIzMDZlNmJmMzFiZTNkZjQxZmRkZGMwNWI3ZWQ2MmI1MWVhNjggcHkzaworNzgwMzUgZjJjOTFiZjViN2I5NjYxZTY2MGYyODkyMzNlODRjYjNjOGNiYmU2OSBsZWdhY3ktdHJ1bmsKKzc4MDM2IDZjYTlkOTZmMTQwZTkwNDI5NTE0YmFjZTBhOTQ5NTcwMWIwNzcxZmQgbGVnYWN5LXRydW5rCis3ODAzNyBjYzM2N2MwNzcyNDU4ZDNlZGMwODE2OTUwNTI1MjNmZTI4OThkMTFiIGxlZ2FjeS10cnVuaworNzgwMzggZWY4ZjFjMmNiNTFmOTBiNWJhNmFkNjk3ZDY2N2QwZDFjNTRlNDgwYSBsZWdhY3ktdHJ1bmsKKzc4MDM5IGU0YWU3OWQ1M2UyMzdhMzVlOTU3ZDJlNTVkNTljYmY1ZGVmNzhmODMgbGVnYWN5LXRydW5rCis3ODA0MCA4NzM4NzU2NTdhZDBmM2YyMmJlMjg0OTE0MTYwNjBkMDI2MzU0YmI2IGxlZ2FjeS10cnVuaworNzgwNDEgMmJhNzY3N2JmYTk1MTQ4YmM0NmU2ZDhhNDRjY2ZjNjBiNGFkOWFkNyBsZWdhY3ktdHJ1bmsKKzc4MDQyIDczNDY1N2I0YjNlNWNmODA1YTZmYWE0YzQ5YmZmM2JiNDEyOWM4OTIgbGVnYWN5LXRydW5rCis3ODA0MyAwM2JhZjZkZjMyZDI2OGUzMTlkMGJjMWM5OGFiOWM3ZjRlZGFjNDM0IGxlZ2FjeS10cnVuaworNzgwNDQgNTUxNDRjYWUwMmJhYjFkNTEzNzg3M2Y4OTdhNWU4OGViZTIyZjMzOSByZWxlYXNlMjYtbWFpbnQKKzc4MDQ1IDBiNDJlMWFhNGE4YmJiMzBmNTA4MTQ4NGZmOTJkMGJkOTQ1NDA5ZGIgcHkzaworNzgwNDYgMjIzNTg3MDBhNGQwYmJiNDc3MDY1NGZiNTE0M2NlNTViYjllMzc5NyBsZWdhY3ktdHJ1bmsKKzc4MDQ3IGEyYWIyNmM1ZjA4YjVhNDhiNzM3NmVhMjgwZTdmMmFhOGE4ZDEyZTcgcmVsZWFzZTMxLW1haW50Cis3ODA0OCAyMWE0NzFjMzQ0ZTNhMDU5ZmFkYmM5ZGRmMGUxZGIwNmMwMjc0NDQ2IGxlZ2FjeS10cnVuaworNzgwNDkgYjdhNWRmMTQwODY5ZTdhZDY2YTY0YWU3MmZkODMyOTUxZGNlMWEyMSBsZWdhY3ktdHJ1bmsKKzc4MDUwIGM1OGVkMjU1NGY1Yzg3MzZiZDAxMjFhMWRiZTA4ZTUxNGI2MDM2YmQgbGVnYWN5LXRydW5rCis3ODA1MSBlZGUwZjA1ZGM2YzA4MTZmMzU3NDQyMmRjMmQzZDg4ZWVkNDhlYTBlIGxlZ2FjeS10cnVuaworNzgwNTIgYTY2ZWI4YTYzZDViNmE4NTljZWJkZWU0MGEwNjgwMzUyN2I4OWYxZCBsZWdhY3ktdHJ1bmsKKzc4MDUzIDEwMTAxY2Y4OWQyMDRhOGU3Zjc0Mzg3YWYxN2M2NDdjMDNhMDE2OTAgbGVnYWN5LXRydW5rCis3ODA1NCA3YzI0ZmVmYzJjZDRiMWMzNWJlMzc1ZDQ0OTBiNWE1ZGQ2YmEwMTM5IGxlZ2FjeS10cnVuaworNzgwNTUgNmI4MmEyMzIzNTAxMmE3NGEzN2YwOGY4NGI2NjI0MWU5ODNmODQwZSBsZWdhY3ktdHJ1bmsKKzc4MDU2IGY0YzUxYWUxNjdjNTUyZDUzNjBjZTQxZTg5ODRmNDVjNDYwZTNmMDIgbGVnYWN5LXRydW5rCis3ODA1NyA4MjE0ZDRmYzMyMzQzNjViNzZkNmQzYzZjYjU3OGQ4MzgzYTM5N2MwIHJlbGVhc2UyNi1tYWludAorNzgwNTggZmRlYzMwYWViOTNmM2FmMzdiY2VjYWRiYTQyMWI4MzdlMWUwOGMyMCBweTNrCis3ODA1OSA1MmJiNDAzMjg2M2UxNjIxN2RhMjZhMzJkOTc3N2NmOTc1YjkwMzhhIGxlZ2FjeS10cnVuaworNzgwNjAgOTM3ZWIwZmUxZjljMWMzM2UzMjYyYTgyZGEyMGQzNDAyYzU5NGVmOCByZWxlYXNlMzEtbWFpbnQKKzc4MDYxIDNkMzc1MzAxMTE1ZGIzYzAxYjExYjQ2NTFmMmVhZDhhY2EzNmZlMmIgbGVnYWN5LXRydW5rCis3ODA2MiA2YTZmYzBjMDkxY2RlZmM2NWU5NzczN2RkOTVmYzE5MmVkMWI1MjU3IHJlbGVhc2UyNi1tYWludAorNzgwNjMgNGFjYmJiNWE0OGZjZDAxY2NjM2M4MzhkMGE1OTY4N2QyNGEzNzZiNyBweTNrCis3ODA2NCBiNDdiY2NhMDAxNWFjNjBkNTIyNDlhNzkwZjNhMGFlNzZjNjQ5OTM0IHJlbGVhc2UzMS1tYWludAorNzgwNjUgZGU1M2JhYTVhYzdkZThiMzFiNGI2ZDQyNTE0OWFiYTY0OGQ4YjQ0OCByZWxlYXNlMjYtbWFpbnQKKzc4MDY2IDM3NzZjMzFjMGU4MjA4YmE3MDUzY2QwM2VkYTkwMjlkYTI4OWJmZjQgcHkzaworNzgwNjcgYzk2NDU3ZGY0MGUwZDljYWJhMzA5N2ZhOTc1NzhmNDRmZmI3ZTU1OSByZWxlYXNlMjYtbWFpbnQKKzc4MDY4IDRlNDBhMjkxMTc1MDkzMWFlMDMzZjcyNzM1ZWNmNzE5MmE1YmUyYWMgcmVsZWFzZTMxLW1haW50Cis3ODA2OSAxMGYxOWQxYzNiNzcxOGJmOWY1ODczMmFhYTE0N2E4ZTNhNDY3YzY2IHJlbGVhc2UyNi1tYWludAorNzgwNzAgNzljMDIyZDc3MjEzYzI0YTIyY2QwY2RlMTNmM2Q1YzAwZjFhMDEzNyByZWxlYXNlMjYtbWFpbnQKKzc4MDcxIGNhNjdjMzdjZDI2ZGMwMGI4OGUwZmMyYWE5ZjkxOTdlNWU2ZGQ0ODUgcmVsZWFzZTI2LW1haW50Cis3ODA3MiAxOTdmMjQzZGRhYjUzZTg4ODkwYTViZmI0MWYyOTZkOTI3ZDgyNTBmIHJlbGVhc2UyNi1tYWludAorNzgwNzMgYjBjNzQzYzdkN2VlYWYwYjRjNGIxYTA1MzI2NzU5YzcyNThmNjkyMSBweTNrCis3ODA3NCA3ZDA3ZGEyYjdkY2FiNzNmMGJlMzY2NDg2MTMwMjQxYWY4NzM2YmNlIHJlbGVhc2UzMS1tYWludAorNzgwNzUgYjZkZjc1YzE3ZTAyZGMwOTA2MWJjNWI5NjY5Nzg0Yzg3ZjBlMzIzNSBsZWdhY3ktdHJ1bmsKKzc4MDc2IDU2OTQ0NDRmZDVkMmU5ZmU3ZTZjZjFlMzVlNzQ2NDRhOWE3N2JhZDEgbGVnYWN5LXRydW5rCis3ODA3NyA1M2Y4M2YyMDJhNmQ2ODQ2OThkMTRkZDNiNzRjODk0MDFmOTZjZGUzIGxlZ2FjeS10cnVuaworNzgwNzggOTE4OTgwM2Y4MzQwNzg2M2Q0NjlhNjlkZjAzOTczYWIzMzczODk1YiBsZWdhY3ktdHJ1bmsKKzc4MDc5IGIxMTZmZmJjZDFiMDcxMTlhMTY0MTY3ZTU4YzUyOWE2YTVmZDBkOTQgbGVnYWN5LXRydW5rCis3ODA4MCBkNTMwYTcyYjQ2ZmM4MmI5Yzg4YTA2MjRiOGY5YzIzYWYzYTFmM2YzIGxlZ2FjeS10cnVuaworNzgwODEgODdjZDg5M2NiOGJhMjZkMjUzOTlhZTNhMmJmOTNjOTgwNGFlNzBmNyBsZWdhY3ktdHJ1bmsKKzc4MDgyIDIxODA0ZGM3YWZmNGI0MTliMGVlZGViM2ZkMDA2NWIwNmI4N2NmZTAgbGVnYWN5LXRydW5rCis3ODA4MyBkZmQ0NmE1ZGI4NzJiZWJmZGY1YzE1YTY1ODVmNDZiNjMzM2Y3MDY3IHJlbGVhc2UyNi1tYWludAorNzgwODQgMGNmZTgzNmM0YThkMDYxMDRiMjBlM2M3NGRjYjkxMjhhOWMyOWFiZCByZWxlYXNlMjYtbWFpbnQKKzc4MDg1IDZhODkyY2VkZjNhNDNhZjI1MDNlMDhlYjdlMjFiNTM1MDg2YzQ3NmIgbGVnYWN5LXRydW5rCis3ODA4NiA4NmE4NGJlMzNlNmFhODZjM2M3ZGUyZTE2ZmJlZWZjMzM4NjYwNGQwIGxlZ2FjeS10cnVuaworNzgwODcgMWJlNzExNDQ3M2ViNWE5ZmU3MThkZDRkOWVjNGQ3ZTAxMWJkMjlhNiBweTNrCis3ODA4OCBiZDVlZTEzZmRkYTFlY2Q4MDU5NTRjNjFjNGZmNzNiMDZkYjQzZWE2IGxlZ2FjeS10cnVuaworNzgwODkgNTdmZjc3MDJlYzc0ZTdiOGZiYjMwNWNkZjAxN2M0ZDNiNjY2MGEzOSByZWxlYXNlMjYtbWFpbnQKKzc4MDkwIDBjZjk3YWQyZmQxZjYxYThkZjViNWFhMjZjYjlhMjFhOTdhOTkwYTMgcHkzaworNzgwOTEgNjQwMDRhOTg2MmU0NzIxZDU4Njg0MWI2MDIzN2UwMzg5MDRlMWY5ZiBsZWdhY3ktdHJ1bmsKKzc4MDkyIDgwZTAyMWZlMzRlZDdiM2I5MDQ5ZjJkNDk5NzQ1MGM1NzgyYTYxZjcgcmVsZWFzZTMxLW1haW50Cis3ODA5MyA3MGUxMTVjMzRmOTcwOGE0MjFmMWM4Y2Y0MTZkZjI2MGNhMjU3NGY0IGxlZ2FjeS10cnVuaworNzgwOTQgM2Q5NGIxZTc3OWM1ODI5MmI1NjNmZjZhMTE0ODVmZmI0OWNmMzliMiBsZWdhY3ktdHJ1bmsKKzc4MDk1IGI4MzRjOGVlOGU3YzkyZGRiNDQwYWVkY2JjODZkOWZkYjQyMTkwNDkgcHkzaworNzgwOTYgZjEwOGY2Mjc1ODU1NTY3NDc0N2JmYjllMjE1NDY0ZDY4NGJjODZiYyByZWxlYXNlMjYtbWFpbnQKKzc4MDk3IGEyODA4NDRiNjhmNDg1NTRjZjg2MGM2NDg3ZDliMDU1MzYyNzgxYzQgbGVnYWN5LXRydW5rCis3ODA5OCBmYWNhOTdjNWYwMzgwNDYxMTY0NjNiNjMxYjY2ZGEwYzc4NDEwNmNmIHB5M2sKKzc4MDk5IDEzZmNhYTc5MzI0YmI4NTE0ZTJjM2JhOGNiMWExMmFiNTVjNDRkOWMgbGVnYWN5LXRydW5rCis3ODEwMCAzZjM5MGY0OGIxMTMxNGVkYTQ2ZWNmNGY0ZDQ2YWRmODA5Y2FjNjIxIHB5M2sKKzc4MTAxIGM4YzBhYTFmZDRhNmQ1MjllMDMwNzc1NmJkN2QyNDE0NjhkMjBiZDkgbGVnYWN5LXRydW5rCis3ODEwMiBjODZkOTNhZWNkN2EyNTAyZDliNzU2Mzc1YmQ1ZjA3ZTE2OWI3NWU1IGxlZ2FjeS10cnVuaworNzgxMDMgZDg0ZGFjZGIyZDEyNTI0OTgwYTY5MWU1NDgyMjJjNzJiOGNiM2JmNiBsZWdhY3ktdHJ1bmsKKzc4MTA0IDYwMGFiOWNlZTQwMzUwZTYzZmMwNDJjZTJjYzZkNjFkNWNlNzJlOGIgbGVnYWN5LXRydW5rCis3ODEwNSA0YmNmOTY4MjlkMWEzZDg5N2Y0MWU3ZGE1ZTU2ZTExYzQ4MTEzNjBlIGxlZ2FjeS10cnVuaworNzgxMDYgOTM2NzZhZTk3YzY4YjUzZTZhMDk2OGMzNDE1OTlhMGFmZTM1Y2ZmYSBsZWdhY3ktdHJ1bmsKKzc4MTA3IDQ4NGRhMTNmMTI1MzUzYzdjODQ5ZTZkMGYzMTJjMWU4YmZmNGVkNDUgbGVnYWN5LXRydW5rCis3ODEwOCBkYmYwM2ViN2MxMmVkNDIwY2U2OGQ0N2E5YzE3ZTE3ZmU0Yzg0Y2I4IGxlZ2FjeS10cnVuaworNzgxMDkgYTk4YjEzNjA4ZDIzYTQ1ZGIwNjI2ZWEyOTk3YmJiODY5ODMzYWE1NSBsZWdhY3ktdHJ1bmsKKzc4MTEwIGU3ZTg5YjQ1ODM0MThiOTQxZDUyOTljZjg4OWQ5MjdlMWFjMTkwOGYgcHkzaworNzgxMTEgMzdlODlkZWJlZjZhM2RlNDk3MGZhNGIzOTZkZjM4MDYzZmRmZGM4OCByZWxlYXNlMzEtbWFpbnQKKzc4MTEyIDc1ODk2MDVkYWVkMTA0MmFmOTkzMjUxNGNjZDhkZmI5N2M5ZGFhMmYgbGVnYWN5LXRydW5rCis3ODExMyBhOTFmZmM5NjQ0ZWI5ZTZmMjY4NzIxNGE3NWE0MDdhYTY4Yzk5YWEwIGxlZ2FjeS10cnVuaworNzgxMTQgNDdmYTU0ZGFiMzhjYTcwYmQ2M2E0NWFkOWRiMDkzOGM3MzVjNTYwZiBsZWdhY3ktdHJ1bmsKKzc4MTE1IDRlMGRiNDQ1NjRiMTczZDA5ZjhhN2E1YzAxMjhhNDQxY2JjYWViNDAgbGVnYWN5LXRydW5rCis3ODExNiBmNDhjNDcxYWM4YzllMGU5OGJiYTE2OGYxM2EzMTc2NGY2Njc4MjFiIGxlZ2FjeS10cnVuaworNzgxMTcgOTZjMjY3MDNiNDkwYTRiNTc5N2MyMzI1MzQ4NDMxNjcwZmVmNDhhMSBsZWdhY3ktdHJ1bmsKKzc4MTE4IDhiZThkNWRiOTZhMjVjYWQ4ZTljMjY0YTYzZGVjZDZmOWYzYzdkODQgcHkzaworNzgxMTkgNTllMTYyYjlmMjI1NDNmNzQ4YjU4MmUxZTIyNmY0NmE5ZDc1YmMzMSBsZWdhY3ktdHJ1bmsKKzc4MTIwIDNlZWYzOWU3Yjc0ZjMyMjk0YzgxZTYxZGVjOGFkMTczNjhkODEwODcgcHkzaworNzgxMjEgZTVjNTY0NjU5MjAzNzM2YjEzNDM4ODllNWMyZGEwMTI0ZGUwMzg4MCBweTNrCis3ODEyMyBlYThjYzEzOTUxYjBiYmE1YzQ4MjBjY2QzYWJmYzEzZWI5YjUzZGZkIHB5M2sKKzc4MTI0IDZhNmVkZGI0NTk5NjdiMTAwMGU2NDcwOWQwZDJmMmM3YWU0NWFhOWUgcmVsZWFzZTMxLW1haW50Cis3ODEyNSAyNjUyODU5MTIxN2NmMzczZTM1NmQ1ODBmZmIxN2Y0MWVkZDAxNDMyIGxlZ2FjeS10cnVuaworNzgxMjYgYmRiZTEzNzlmM2VhZjdmMmZkYzk2YzYxZjEwOGIyZjMxYTU5OTFlNCBweTNrCis3ODEzMCAwYmViN2M4Mjk0YzdmNDM5YzI0MzhkMjBkNThjNTMzMTlmMWNlZjg1IGxlZ2FjeS10cnVuaworNzgxMzEgMGFmNjk5ZjA5ZWUzZTJjZDA1YjQ4YmQ4ZGMzZGRlZjc0ZDdjNWUxMCBsZWdhY3ktdHJ1bmsKKzc4MTMyIDYxZDE3MDFkOWM2NjJlY2IzOTQ0Mjg0MzI0MTNmMWE5MTg3ODVjOTYgbGVnYWN5LXRydW5rCis3ODEzMyAxMTY1OTU5NGY5ODIyNWVlZTM1MTA0NGYxNzIxNTk2MWIwZGEwNzZiIHB5M2sKKzc4MTM0IGM1MjllNTFmODM3NzU4ZGJkNWExOWZhZDg3MzY1YTQxZTcyMGMwMDQgcHkzaworNzgxMzUgNWRjZWNhYzFjOGQ2NzVlYzAxODM0ZjM4NDlmNzQ0NGI3ZDRjYmM5NyBweTNrCis3ODEzNiBkMWUyZjc5NGQwMjA2NDI1ZmQ5Zjc3YWM1ZWUwYjI0NjAwYjIyYzk0IGxlZ2FjeS10cnVuaworNzgxMzcgMTcyZmRiMWQ3MzM3YWRiNGJjOGMxMGY0Nzk1MjVlOGExZDYzZGQwMyBsZWdhY3ktdHJ1bmsKKzc4MTM4IGMyYmRiZDkzNWI1ZTUwY2I2N2IwYzdiYmIyYTQ4MWIzOTZiZTUxNWUgcmVsZWFzZTI2LW1haW50Cis3ODEzOSBhNzFkZWE4OTg3N2Q4OTZmNjYwOTBmN2QxZmJmODI2NGZlNDdkMzFjIHB5M2sKKzc4MTQwIDY4N2NhNGIzNzRmNGM3NTY4YjQwOTYyMTkyMmM5ZTJmNmUzZDY2MjggcmVsZWFzZTMxLW1haW50Cis3ODE0MSBjNDVkY2JkY2FiODczNjJkYWM2YjRkN2NjMjYwOTg4YmRhOGI0ZTZhIGxlZ2FjeS10cnVuaworNzgxNDIgYmZkNDc5OGIxZjc3ZTAwZGI2YTc5ZDgxM2M2Yjc2MzM5NTY2Yzc0YiBsZWdhY3ktdHJ1bmsKKzc4MTQzIDE0ZWUzZDRjN2JkNWM4NTRlM2I2NjNjNGRiYjAzZjQxNDc0YzYwOTUgcmVsZWFzZTI2LW1haW50Cis3ODE0NCA4M2M4ZGZiNTQ0MjEyMGViZTFkOThjYjhmYTEyODEyMzkzNGVhNWQxIHB5M2sKKzc4MTQ1IGZiMDk4MGUxYTRjZTQyZjZjMzQzNDRlZDVjMjRkMTk4NDNlM2MzYjIgcHkzaworNzgxNDYgNWVmZmJkNTUyMWUzZjZlZjU3YTUxMjZkMzMyZDc0MDdlZDBkYjU2NiByZWxlYXNlMzEtbWFpbnQKKzc4MTQ3IDIzNmFiNDhlZGQwY2VhNDk4ODhkMzk4MDg2OWI5ZTQyNWRlNWJjNTIgcmVsZWFzZTI2LW1haW50Cis3ODE0OCAyYjliMjFiODMwZDkyNDYwMzVkZDhkNjM3NDg0YzA1Y2U4YmE4NmU0IGxlZ2FjeS10cnVuaworNzgxNDkgNDcxMjM5MTVlYTIwZDkwZGZmYTM3N2ZiYWY0NmYwZTgzMGNhN2Q2OCBweTNrCis3ODE1MCAzYmQ2NWIzNDZiZmNhMTY3NzhlYjYxODA5NGEzMTNmODkyOGRlNjk4IGxlZ2FjeS10cnVuaworNzgxNTEgNmFlNTBjMmMwYWI5ZjNiODE0ODg1MDQzZTUyNDRkYzUyNzhlOWI0ZSByZWxlYXNlMjYtbWFpbnQKKzc4MTUyIGYxNTZiNWU3M2IwZDFhMTMzOTM1ZjE1Zjc5ZWJjOTE0YWZhNjA0ODAgcHkzaworNzgxNTMgOGNmMDdhNjVkNmY4NTU4ZjljYjQ3NTFiNmM1NDE1NWQ2NTQ3NjMxMSByZWxlYXNlMzEtbWFpbnQKKzc4MTU0IDgyYWE5NjhhOTUwNGE2YjM1MjM1N2Y4Mzk3MTFkYjJlNDJmMDBiMjUgbGVnYWN5LXRydW5rCis3ODE1NSAzMzQ1MmQ5NTMwMWYxNjA3Mzc1ZWUzZTM2OGFjNGM3MWViYmVlMDc1IHJlbGVhc2UyNi1tYWludAorNzgxNTYgNTkwMjk0NDk1ZTVmMmQzMDYxNjA4YzE1NDcwNWM0YjU1OTdlZGRlOCBweTNrCis3ODE1NyAzNzg4YWIyOGNjYWQ3MGU2ZTQ4ODkzNWI4YzE0MzZlODBhNGY2ZTBjIHJlbGVhc2UzMS1tYWludAorNzgxNTggNTZmZTE2Njk4ZWU4Mjg4YWExMDQxZTNhMTc1ZDAyZGY5YTNlMzkwMiBsZWdhY3ktdHJ1bmsKKzc4MTU5IDdiMTYyYzZhOTM0NGZjMDJkZDk2NTI0ZTY1ZTVlOWU5ZTE5N2FjZTkgcHkzaworNzgxNjAgNmY2OWI4ZmMyYmEzZWY2OGE3MGQ1YjVjMmJlOTg2ZTlkMTJlNzQ2OCBweTNrCis3ODE2MSAxMjE4YTJhMjI1M2NjYTM0M2FhN2MwMTJlZTBhOTA2NTE5Nzc1ZTQ0IHJlbGVhc2UzMS1tYWludAorNzgxNjIgNjk0Yzk3YTJjZGRjMTZkYjMxZWUzMmNjMmVjZDU0Y2FiNGQ3OWU1ZiBsZWdhY3ktdHJ1bmsKKzc4MTYzIDIyOTZjNWU2YWQwZGU2NmJjNjQzNWU3NzRmZjFlOTBiZTBjYjdkMWEgcmVsZWFzZTI2LW1haW50Cis3ODE2NCA4MTI5NDYyY2FhMzA3YTU4OTFjNjhmNzBiZjI0ZDhhYTMyNGRlOTNiIHB5M2sKKzc4MTY1IDUzN2I2NjdhZDQ1MDAzYzhkNjY3ZDZmMGM4MDc4MmUyZjZhNTFhOGEgcmVsZWFzZTMxLW1haW50Cis3ODE2NiBiMWM5ZDZiY2YzZDRjODQyYzA2OTcwY2I4MTlhMDcyNmE1YjNiNjZkIGxlZ2FjeS10cnVuaworNzgxNjcgNmFjYjlhZmM3NWNkZTRhY2Q4NjA4ZjNhMzdjMjE5NGVmZDNkNTBmOSBweTNrCis3ODE2OCAzMzQ3YjRlZWFiNDA0ZTdkOTMzMDdkMzk4ZmZjZGY4NjY2Y2UxYmVmIHJlbGVhc2UyNi1tYWludAorNzgxNjkgMjYzYThmOTA1NzhkMDZmZGY3NTFiNzNhMThmYWQzN2M1OWIyYWQ0MiByZWxlYXNlMzEtbWFpbnQKKzc4MTcyIGQ0Mzc0MDI0NzUwMzMyYmQwOWExN2YxNGFmN2E5MzU0OTI0OGRhYTIgcHkzaworNzgxNzMgMzJhNGVlMjQ4MDY5NDM0ZTA4Zjg1ZmEzMDkyZmRlY2EwNjU4YThiMiBweTNrCis3ODE3NCA0MTU3OTIwMDdmZjllZWIzN2U2ODMwNTY4YjdiZGU0OTY4YTQxMTYxIHJlbGVhc2UzMS1tYWludAorNzgxNzYgOGM0YzM5MWNhYWViZjU3NjE3MzQ0ZjljZmQyNWEzNDdiNWIzOTk4YiBsZWdhY3ktdHJ1bmsKKzc4MTc3IGEzMzc1YTBmZmUyZTQ1OTA0M2VlMjE1MTYzNDk5MTA5NzJmZThlMTggcmVsZWFzZTI2LW1haW50Cis3ODE3OCA3MGY0NTZiZjc2Mzg3ZDQ5OTAyZDM5YWZmZjIyOWEwNDQ4ZDA0NDE4IHB5M2sKKzc4MTc5IGUwZWI5NzczYWY4MTgzNGQzZDU5OGEzNjEzNDI1ODI5ZDFhNTc0MjYgcmVsZWFzZTMxLW1haW50Cis3ODE4MCBhNzk2ZjI4YWNlZTJlNzVkYjE5N2MwMjRiMzAzMGI3NGM1ZWI4M2EyIHB5M2sKKzc4MTgxIDY4YmU0NDQyODkwOWVkMzRjN2ZmNjIwZjkyYmVjODQ1NTU5MDkwMTEgcmVsZWFzZTMxLW1haW50Cis3ODE4MiBkYzEzMDRmMDQ1YTYwZTUyNDY0OTYwNzBhN2Y3NjBiNTUyMTMwYjkxIGxlZ2FjeS10cnVuaworNzgxODMgYTBlZmNmOWI2ZWRkNTQyZTZlNWU2N2FmY2ExZGJkNGRmZWY3ODU0YiBsZWdhY3ktdHJ1bmsKKzc4MTg0IDIwMjJlZGU4Y2EwYzYxZjQ0ZmRmNDRjMDE2ZWIwMjc4NWYzMTQyZmEgbGVnYWN5LXRydW5rCis3ODE4NSA5MDFmY2FhZTUyNzVjZDg0NGVjNWI3ODdkY2M5NjEwMTdjNzk5MTk3IHB5M2sKKzc4MTg2IDg3NTZjM2RlNmQyNGI4ZTIyOWU0OTNlMGMxNmU1ZTQzYjJhMGE2YzUgcmVsZWFzZTI2LW1haW50Cis3ODE4NyBkMjkxYjgzMDQyZmI2Yzk4ZTFhNGM0MGJkMmI1NWQ4Mjk4Y2JkYjljIHJlbGVhc2UzMS1tYWludAorNzgxODggMzFmNThkOWM3MDE2ZWM4Zjk2ZDA2NTE5ZmY3OGQ3ZDQ4ZjRmZWJiYiBsZWdhY3ktdHJ1bmsKKzc4MTg5IDVlNmVkYjRlNzZmNTgzNzAxMTBjNjAwYTAwMzkxZDEyZjRhNTg1ODggbGVnYWN5LXRydW5rCis3ODE5MCA2YjI5YjlmOTY4MDU5OWNiNjU2MWUwZjc5MDkzMTEzNGE2NGZmZWViIHJlbGVhc2UyNi1tYWludAorNzgxOTEgZWY3NDc2NGE2MzIwOTgzNjEwNDMxYjMxNjE0YjVhM2U2NDUzZThkZiByZWxlYXNlMjYtbWFpbnQKKzc4MTkyIDNiYWFiZDFkNjhhMjg2ZjQzM2FkZGI0MjJkNWZmMzBkMGE2YjBlYTcgcHkzaworNzgxOTMgMDI5MzE4MjQ2OWE3NzM0ZGQzMmU0OGQ4YWJmM2U0Y2I0ZDg1OWEyNCByZWxlYXNlMzEtbWFpbnQKKzc4MTk0IDQxMWIzMjk5MzhkYzRjYWQ3ODE0MTM4MGYyNDM4YWM1MTQ3YjFmYjUgbGVnYWN5LXRydW5rCis3ODE5NSAxNzI1ZmJhYmU3M2JkNDA1YTA4NTIwYWM3NzgzOThmNjc5NDQzNDcxIHJlbGVhc2UyNi1tYWludAorNzgxOTYgN2FlNDNjMDUxMTZkM2Y5MzZhM2MyMmVmOGE0NDNmOTRmMjkxYTBkNyBweTNrCis3ODE5NyA2Mzc0ZTE4NTkzNDY0MTdkNTI1MDk4Njc3OGFkNmU0NTRlMmMyOWE0IHJlbGVhc2UzMS1tYWludAorNzgxOTggYjY0MWMxYWE2NDNlMTkyOGNhOTA0YmQwN2YzMTQwNDE2NmExNmNmMiBsZWdhY3ktdHJ1bmsKKzc4MTk5IDQ2NWMwNDdlZjMxMWMwY2M0MGYwZTdkM2JhYTUyZWEwMzc3MzljOGUgcmVsZWFzZTI2LW1haW50Cis3ODIwMCA3N2Q4NTkwMjY5MTljZTRhYmU4ZTIzNmRhM2VmZDg4Y2I5OGNiYThhIHB5M2sKKzc4MjAxIDRmNmMxYjgyNzdlYjQzNmVjYmJkYTUwODA2NDhmN2UyMjYwOWJiOGMgcmVsZWFzZTMxLW1haW50Cis3ODIwMiA3YTU2ZjJjYWUzZWNkN2RhMjc2MmZkODg5NjI4MmQ1YjdhOTY5ZDYwIGxlZ2FjeS10cnVuaworNzgyMDMgMTViMDQ5ZmFjMTkxYTQwNjVjYjA4NmM4Yzc3OTU3N2Y5MTk1NWZiNiByZWxlYXNlMjYtbWFpbnQKKzc4MjA0IGQ0ZmJiN2U1M2M5MjkyYjk0ZGZhODJmNWU0ZDIzNWQ5ZTdhOTlkMzEgcHkzaworNzgyMDUgYjczMjZmOWI1OTliNzBmMzUxZTc5YWMxMzRiMDIxYjRmODgwYWIyOCByZWxlYXNlMzEtbWFpbnQKKzc4MjA2IGViZmQwZWFlYmUyNzExOGYyOWE0ZjdhYmU3ODg4YzQyMGUyZTQ1OTEgbGVnYWN5LXRydW5rCis3ODIwNyBiZmIzZTg0Zjg1ZmZmNTllZjM0Yzg5NWUyYmQ5MjE4MjVjNDVhMTYyIGxlZ2FjeS10cnVuaworNzgyMDggZWVjZjFiZWYwNTJkM2RhNTExMjNkMjg1YjgzZDE4YjRjNDFhNWUxNyByZWxlYXNlMjYtbWFpbnQKKzc4MjA5IDU4YjMwZGJjZjk5YzQ4ZDZiODVlNzUzM2JlMGJkMGEwNjcyM2E3NDQgcHkzaworNzgyMTAgYTY3MWVlM2JiY2I0OThlNzQ5NDYzZWY0ZDg5MzdiNzc0NjhjZDgxOSByZWxlYXNlMzEtbWFpbnQKKzc4MjExIDBkYmUyOTMwZWUzZjBkZDI1OTBkNTBiMzM0YmQzMTA4YTA1NTlmM2QgbGVnYWN5LXRydW5rCis3ODIxMiBhMjcyNDQ0ZjBlZjBjOTAyMmYzN2VjODZmZDQ1N2VmZjVjNjJkZDhiIHB5M2sKKzc4MjEzIDIyNTM1NTdkNmZhMmZlNjExMmU4M2MyMzVkNDkwOTVjNzkwMmI5NTIgbGVnYWN5LXRydW5rCis3ODIxNCA0YzBiZTM3YjQ2YjAzNjhjMDNiNGQ3YmViZWJjOGNiNjc2YzBhZTkxIHB5M2sKKzc4MjE1IGRmYzY3YWQ0ZGNlZTU3YjY2NjI3Y2IwZjhkOGRkNDExYTY0MmRkYjUgbGVnYWN5LXRydW5rCis3ODIxNiA4ZjAyYzU0YWMyYWM4YTcwZmU3MTJkOTBjYmUzMGJmYzc1NDcwYjJhIGxlZ2FjeS10cnVuaworNzgyMTcgZTNkMDcxMjMzYmVmYzBhZTE1MzYyYjc1MzdkM2MxMGY5ZmM4ZjQ5YyBsZWdhY3ktdHJ1bmsKKzc4MjE4IGVhMWFkYzY4MzVjY2QxOTJmZDM4OWFjOTQ2ZTljYjE1YWM3MTYzNzUgbGVnYWN5LXRydW5rCis3ODIxOSBmMjI1ZDVlNmUwZTUwYjBjZmNmZTIwODQ4ZTVmNmFhYTA1ZGYyM2NhIHB5M2sKKzc4MjIwIDkzZTNlNmM1MTUxMzc1N2ViODE1MzM4ODE3ZWFkNTVjNDEwMjA3OGYgcHkzaworNzgyMjEgOWE1ODFjMDIxMGYyZWY3Nzc3YmFlMjhmZWYzNjc5YTIxMGNiZTYzNiByZWxlYXNlMjYtbWFpbnQKKzc4MjIyIDQxYzVlOGVmZWFhM2M1OGM5MjU5YTFkYjNhNzlmMGU3YTY5MjU4MmEgcmVsZWFzZTMxLW1haW50Cis3ODIyMyBmYjhjMDM4OGUzODVlNGVkOWM4NDMwZTMyYmMwOWE4Y2UyYmYwNTcxIHJlbGVhc2UzMS1tYWludAorNzgyMjQgOTkyZmQwNTQ3ZmY4ZDU3ZDg0ZjM4ZWE1YTY0MGU4MjZhYjVlOTYwOCByZWxlYXNlMjYtbWFpbnQKKzc4MjI1IDI4NmFmMzA4YzFiYmFhYTg4YTExNWUwODM4OTQ0YWM2Nzc1ZGQwY2YgcHkzaworNzgyMjYgOGE5ZWYyY2Y3OTRmZTZlNmNiNzBiZmI4MmE2Zjc0NmY2ZWI5MzZmYyByZWxlYXNlMzEtbWFpbnQKKzc4MjI3IDU5N2Q2ZDM2MmRkZTQwZDgwZmI3MTdkYjMzODc5OTUyMzg1MDU3MDkgbGVnYWN5LXRydW5rCis3ODIyOSA1YWE5ZjgzZGQwMGQ5ZmUyZDRjMjQ0ZDI5YWViMGU5MDA3OTAxOTc5IGxlZ2FjeS10cnVuaworNzgyMzAgNzJmNDZjYmZhNTdhYWQyMjM3YjZmMjhmYjhlY2E1YjdkODJlZGYyNiBweTNrCis3ODIzMSA1ZTYxNGVhYWE1MDUxYWI5NGViMmExMzFiMzdkNmVhMGY5YmM4NzYzIHB5M2sKKzc4MjMyIDZlNzRkM2U1MWQzM2U5Zjc5MWE2MWZkZDRlNWVmMDM3OTMyZjMyNTQgbGVnYWN5LXRydW5rCis3ODIzMyA0ZmM4YjZmZTRhZjg2N2EyYmFmZGM0Yzg3NDBiZGZjMjNiMzBiYWYzIHB5M2sKKzc4MjM0IDdkYTdmOWJmZGFhYzAxNzg5ZDdkMzQ1YTdlYTMwNDg2OWQ2YTAwYzIgbGVnYWN5LXRydW5rCis3ODIzNSBjNDg1ZTU1YWFmOTY1ZjU0NjU5NjlhNjA3ZGNmMGRhZDE2NzhhMzFlIHJlbGVhc2UyNi1tYWludAorNzgyMzYgOGIxNmYxNDA4MjQ5ZTlhZTJmOTlhNjUxODgwZWI4YjFjYTY0ZWYyNCBweTNrCis3ODIzNyBmNzI1Y2YxMjMzNGI5N2MwMTEyOWJiOThmOTVhZWU5MzJkNjNjOTk5IHJlbGVhc2UzMS1tYWludAorNzgyMzggMDkwNmM2ZjY0ODQ3NDQ5YTdhM2E1MDMwZmY5ZGEwNzU5N2MxN2QzOSBweTNrCis3ODIzOSA0NzRlYzU2ODVhMmRmMGVlY2Y3M2I3MDk4YzVhMjdiY2UzOGM3MmJiIHB5M2sKKzc4MjQwIDNjNzA0NDYxZWFkYTA5Y2I5ZTM3ZjhiNDliOTY2MDdlZDEwNTc3ZTEgcmVsZWFzZTMxLW1haW50Cis3ODI0MSBmOTgxN2VjOGI1NGMwNGIzNjNmNDI5NWVlY2Y4ZDQ4OGJkMWUwMDQ1IHB5M2sKKzc4MjQyIDY3NGMyN2Q4N2VhOTkyMWI1YmQwZmY1M2E5N2FlMTI1MzE0MWYyZTQgcHkzaworNzgyNDMgMWJmMDQzZWRiOGQ1NzRmYWVlNTk2YjMwMzk3ZjlhZDg3NTI5Y2M0NSBweTNrCis3ODI0NCA1MjgyMzgyMGRjZTEzZThkMWYyOTljZjUwODFiMzQ4MzU3YzE5MzAxIHJlbGVhc2UzMS1tYWludAorNzgyNDUgZTc0MjNiZWQwZWM0M2UyYTQ0ZmZhYzA5MjUxNjFmNjIyZGMzMTU0NSBsZWdhY3ktdHJ1bmsKKzc4MjQ2IDhkODcxZTBmYTcwMTg2MjIwYjQ0OGExNTY0ZmEyMzJkZmE2YzRhYmUgbGVnYWN5LXRydW5rCis3ODI0NyBlYWY4YTkzY2RiZmY0Y2E4NjNlNjI3NGNmZTI4MjZjYmJiNGFhMzAyIGxlZ2FjeS10cnVuaworNzgyNDggN2FiNjM4ODRkNjhiNmY1N2Y2NzM1NDUzYjA3NjRjYmRjZWYwNzQzYyByZWxlYXNlMjYtbWFpbnQKKzc4MjQ5IDNhNzEzMmY2NTYyMzEzNjgxMDg0Yjg5MjM1YTg3YmE5OTgzOTIwYWEgbGVnYWN5LXRydW5rCis3ODI1MCBhY2IyN2I5NzkyM2EzYTdlYTQyOTNmZjliOTAzM2M4MWJjZjVjNTdiIHB5M2sKKzc4MjUzIGRlNGNhODgxNGUwZDg4MzE3ZjRjN2EzZjAyODIwMjM4MGMzMmRmNjcgcHkzay1jZGVjaW1hbAorNzgyNTQgNTU3ZTQ1Nzk5N2E4MTY0Y2UyNzYxNzBiN2YyZmQ3YTFhZGE4NzdiNSBweTNrLWNkZWNpbWFsCis3ODI1NSBiYTQwN2MzZDgyMGNkODU2ZGMzYWNlNzZjOTA3ZjYwNDhiYzI0NDk1IHB5M2stY2RlY2ltYWwKKzc4MjU2IDg2NzI3MGQzY2E4OTg5MDRjMjUzOTNlZjlkMDdhZDQ4YzI0YmVjNDYgcHkzay1jZGVjaW1hbAorNzgyNTcgYWM1YzJjZmVhNDJmNmQwNjdjMDExYjRlMWU4MGEyYjk3YTU1YTkzMCBweTNrLWNkZWNpbWFsCis3ODI1OCA5ZmNjMDMwYThlNzAxYjgxMTVhZjg0MWJhYjlmZThmZTY3NzliMzFmIHB5M2stY2RlY2ltYWwKKzc4MjU5IDNlN2RkMjA2ODVkODg1YThhN2E2NDg4YTAxNWY4YTJmMzRkYzJjMTUgcHkzay1jZGVjaW1hbAorNzgyNjAgZjY3YmNkNGVjYmVlZmQ1NmE1YTQxMzFhYmVhZThiODAwNTgwODBjZiBweTNrLWNkZWNpbWFsCis3ODI2MSA2NmY5NzUwYmM2ZmYzNjFkY2VkNmRjNzdjYTQ5YWM3NTBkMmFiZjczIHB5M2stY2RlY2ltYWwKKzc4MjYyIGZiYzE1OTUzMWJlMWNjNWMwNmMzZWE5ZjY4YzI5MGQ4NWE3MjNmYTUgcHkzay1jZGVjaW1hbAorNzgyNjMgMTI5YmJjNjYzOWJkODdmMDk2OWNjZjU3ODUzYWJkMGE5YzQ2YTNhOCBweTNrLWNkZWNpbWFsCis3ODI2NCBiYWRkNGU3MDU3MzNhYmY0MzU0OWFlYzM2NTM0ZjliYmYwOGZjOGM5IHB5M2stY2RlY2ltYWwKKzc4MjY1IDQyMDljMzk4YzkyOTdhYTU1YjliMGVhYTkwYTk4OGY1ZDA3MDdlOWIgcHkzay1jZGVjaW1hbAorNzgyNjYgZTBlM2Y2MzQxNTcwNDZmOTAxY2IyOTIxZTAzYWQ4Mzg1M2ZjODBhZiBweTNrLWNkZWNpbWFsCis3ODI2OCAzYzEyYmRmNmNjNmQxN2YzYjA4N2U5NjQ0MDJiYThhOGVkMzY0YTk4IGxlZ2FjeS10cnVuaworNzgyNjkgYWIyMWEwNDgxZDcyNjRlNjE1MTQ5OTA2NmJiNTZkZDAzOWM2ODJiZSByZWxlYXNlMjYtbWFpbnQKKzc4MjcwIGQzMmQwM2Q0MTk0NzY4N2IwZDI2ZjhlNTdiOTM4Zjg2MmU1NDI3YWEgcHkzaworNzgyNzEgYjk4Mzc3OWYyMTIxYjg1NDUxMWE5NTBmMjc0NzZiMmVkYTQ5Y2FmZSByZWxlYXNlMzEtbWFpbnQKKzc4MjcyIGRjZGE5ODVjNjQwMzQyODA4Y2U3ZGIwNzZhY2FiMmJlMTk1YzZmMjIgbGVnYWN5LXRydW5rCis3ODI3MyBhZjAwZjcwYTFmZjEwNDRjMjdjZWQxZjllMWQwYWQ0YTJmN2NhNjVjIHJlbGVhc2UyNi1tYWludAorNzgyNzQgZGI4NmJmMzljY2FhNjhmM2JmM2Y5ZTcxYzE3NjI4YzJmZmMzMGQyMyBsZWdhY3ktdHJ1bmsKKzc4Mjc1IGQzYWUwNDFlN2I4YzI2ZWQ5NWQ0YTc3MmVmOWNjODdjZTc4YjYxNTMgcmVsZWFzZTI2LW1haW50Cis3ODI3NiAzNzkwZjNlZGExYzU2YjhhYzZmYmVjZTQ3NzkzMTEzMjE5ZTA5NWRhIHB5M2sKKzc4Mjc3IDM5MGIwZTcwN2Y1NGI1ZGMwOWFjMTcxNDc0M2I2YzBkMzMwMDdiMDQgcmVsZWFzZTMxLW1haW50Cis3ODI3OSAxYjI0MmZiMzNiZTcxMjNjYWE2NTAwZTNmOGNiODNlMjE5MTZkM2Q0IHJlbGVhc2UyNi1tYWludAorNzgyODAgYzhlYTc1NTk4ZmQ2ZDJlNDBjMjM0OWNhMDg2MjI2NDQ3NTE4MDg5NSBsZWdhY3ktdHJ1bmsKKzc4MjgxIGI5MjJlMWViZTM4MDIyNjkxOWY0MTQ1NTM4Nzk1NzNmOWQ2ZjA2ZGUgbGVnYWN5LXRydW5rCis3ODI4MiAwZWQxOTM3NjlhNWYxZWRiZjU1NzE5MDA1MGVlMjM2ZTAxZjBkM2Q4IHJlbGVhc2UyNi1tYWludAorNzgyODMgMDM0MDgwNGFkNzEzZTA0ODY0YmI5YWMxNWRiYzJkNzY4MDBjZTZkYSBweTNrCis3ODI4NCA0ZjMwNDQ1MmJiZjY5YWFmZTA2YTliNmZiOTliMmJkNGIwM2E0YTA0IHJlbGVhc2UzMS1tYWludAorNzgyODUgODBiNjEyY2Q5NGE0ZTdkZTFkZTI5OTBhMGJmMmYxNDM3ODA0OGEwYyByZWxlYXNlMjYtbWFpbnQKKzc4Mjg2IDUwMzNhNDI5NWM5NmFlYjcyYTAzYzM4NTcyNDkzMDU1NjJlMDJmNDMgcHkzaworNzgyODcgZTE0NGM2M2UxZmE2MTEyNGUzNzcxZjJmNTU1OTc4MzBlOWIxMjhiMyBsZWdhY3ktdHJ1bmsKKzc4Mjg4IDBkM2M5NzFlYjIwNjk3NTliYjcyNjc5OWZjZThiNmYzNDVhMjBlMjUgbGVnYWN5LXRydW5rCis3ODI4OSAyMGI4NTdiYjEwYjgwODVkOTJjZjUxOTMyZTgwNmQ1YmVkOTQ2M2ExIHB5M2sKKzc4MjkwIGI3NDlhNzlhNTFjY2I0Y2JhNzJkNDc2MWU1Mzg1ZjU0ZTEzYmQ4YTQgcHkzaworNzgyOTEgMGQyZDY2MDYxMzAzYmQ1YjVkMDliNjI4MjRlYzg4YjY1YTljNDZkMCByZWxlYXNlMzEtbWFpbnQKKzc4MjkyIDE3MjBlZTA4M2VlZWY2NGZjMDlhZDNlZGI5NzA5ZjIzNTFjM2ZkOTcgcmVsZWFzZTI2LW1haW50Cis3ODI5MyA2ZDZiZTY1ZDM4ODFmYjYyMWM2MDg0MGVhZDRhZTUxNDBhNzQ1NWY5IHB5M2stY2RlY2ltYWwKKzc4Mjk2IDk2YTRhYTFmMzFjMTM2OTEwMzRmMTQ2YzM0OTRiOTA4ZTVjZGYxMTAgbGVnYWN5LXRydW5rCis3ODI5NyBhYjZmZDllNDU0MzYyMDQyMWNkOTM1ZDg4ZTQ2MmJlZmFiYmFmZmE3IGxlZ2FjeS10cnVuaworNzgyOTkgNTgxZTIxZDdhMTkyODU3YTU1ZTgwYjRhMmM1MzhlYjZlNDE3ODQ4MyBsZWdhY3ktdHJ1bmsKKzc4MzAwIGNjMGU2OWM4ZjBjMjM3MjlmNDQzOGYyZTQ0MGE4MmE3NmI3MDJjOWEgcmVsZWFzZTI2LW1haW50Cis3ODMwMSBmOGRkZmNlZDJhMzQ3YTdjNzg5YTZjOGNjNzFiNDhlMGExZmQ2YmE1IHB5M2sKKzc4MzAyIDAzNjliYmFhNWQyZGZiZjlhYTFmNzVkZTU3NDY0ZjgwMTAwOTI0ODggcmVsZWFzZTMxLW1haW50Cis3ODMwMyAzZGU5YmFjYWQ5NWJjMmJhNGMyZDExYTU4NmZhNDU3Y2QyYjQ1MTYwIGxlZ2FjeS10cnVuaworNzgzMDQgOGI3NDU1ZTAxYTExMTUwZDdjNzFiYjZhOTE1Zjk3NzRlNzUzYTVkNSByZWxlYXNlMjYtbWFpbnQKKzc4MzA1IGY4NjEyZDQxMGUyYzQxOGIyOGVhMThkZGU3ZGZhNzY4MmNiYjQ1OTcgcHkzaworNzgzMDYgZjBhY2YyMTM4YTk2NmE3ZTNlZTdkOTZiYzAyNWExOWZjMDgzMmMyMCBweTNrCis3ODMwNyAyMDQ1NGZiMGJlNmVmNzc0NGRiZTFkYTgxMDk4NjhlZDhjNWNmNDE1IHJlbGVhc2UzMS1tYWludAorNzgzMDggYzI1NGU1NGFjODU2NDZmZGRmOTk5ZGE4OTU1Nzk0ZWFmMzg2OWJmNyBsZWdhY3ktdHJ1bmsKKzc4MzA5IGMxYTRmMjdhZThmZTgzNjY4OGQ3YWVlOTMwNzllMzA3MWU1NDE0NDIgcHkzaworNzgzMTAgMTVkOGVkOTQ4ZmI1NjExYjRhZjZlZDBkNTlmMWM1NzE5MmJlYzFkYSByZWxlYXNlMzEtbWFpbnQKKzc4MzExIDllY2UzZGQxZTkwMTBkMzI2ZmI5MDcyOGRkNDFmMjIzODI3NTc4OGUgcHkzaworNzgzMTIgNTBmOGJmNjE3MDZhNDYwYWJiNjdjNWE0MGQ3ZGJmYmY5OGI3Y2I2ZiBsZWdhY3ktdHJ1bmsKKzc4MzEzIGM0NWVjM2IxMWJiYTllZDgyNGFlN2ViOGIzOWVlN2NhZGE1OTQ3MGMgcmVsZWFzZTI2LW1haW50Cis3ODMxNCA1MjI3YTU1ZWQ3MTQyYmQ5OTUzMWNmZWQ2YjBkOGFhMzBlODJhMmQ4IHB5M2sKKzc4MzE1IGFlNjVjN2QzNWYyN2FhMmI4YjgxNzAwNmE3NzRhZTYyMjVhMjhjYmQgcmVsZWFzZTMxLW1haW50Cis3ODMxNiAzOGY3MzI4MmYwMzgzMGIwMmI1NDNjZjc5ZTJmYTAyNTc4NjBkNjg2IHB5M2sKKzc4MzE3IDVkNzc0MWUxZTY3Mjg2ZTEzODgxZDY4ZTgzMjAwMzBjZDJlNGU0NjEgcmVsZWFzZTMxLW1haW50Cis3ODMxOCAyMzExNTAxNWU1Yjk2ZTc0MWE4NjFiYTUyZDgwMDQ4MTZhODE0NWRiIGxlZ2FjeS10cnVuaworNzgzMTkgMzFjN2RlZjliZjUxZTc4YmNhZWIwZTM1MzAxNTQ3NTg3NGE3OTI1MSBsZWdhY3ktdHJ1bmsKKzc4MzIwIDEzMmQ0MjM0ODIxNmM3M2VkY2Y2NDc0ZTFhYTkxYTlhZmEzNzhmMTkgcHkzaworNzgzMjEgMmViMTM2NThmNTczYTliYjZlZWQwNDc0MDE0OTI0MTY4ZGUxMTE2ZSByZWxlYXNlMjYtbWFpbnQKKzc4MzIyIDhmMmQxMDAxNGMwODQ2NGY5MDZhMmQ5MTU0NTE3MjliMjljNWRhMTMgcHkzaworNzgzMjMgN2EwYzMwZTdlNGNhZjA0NjlkZTVmYzU2ZmU0YWRlMmNlNTkzOGI5OCByZWxlYXNlMzEtbWFpbnQKKzc4MzI0IGQ3YzMzNzdmOGE3YjY3NDJmNzYwMGUzMjRmODRmYmMxODQ5ZDE0ZGEgcmVsZWFzZTI2LW1haW50Cis3ODMyNSBjODhiNjYwMmY4MmQ3NWY2ZjBkYzIyOGE0MjY0ZTRhZGY5ZDk4NWVlIHB5M2sKKzc4MzI2IGE2MDhmYzM3OGQ5MjIxZDQ0MjBhMTVkZWQ4N2QzYjYwMjVjOWU2YzYgcmVsZWFzZTMxLW1haW50Cis3ODMyNyA0OTAyZWEwMjU2MzA3OTk1YmM5OWQ1NGQxMDRjZjIyMDI1MWM4YmI0IGxlZ2FjeS10cnVuaworNzgzMjggNTMyZGE4Njk3M2NkNGExZDk2ZDFlZWY1MTdmMWVkMzkzYmQ3ZmJkMyBsZWdhY3ktdHJ1bmsKKzc4MzI5IGZmODRlMDg5M2NiMWFiNmY3ZjZkNDQ3MzU1YmIyOGQ3YWUyNDlhNGUgbGVnYWN5LXRydW5rCis3ODMzMCA5NzlhYzE3ZWM4MjNkMDZmNjU0ZWRjZjEyYWRiZGM1MDQ5NTkxZmQyIHJlbGVhc2UyNi1tYWludAorNzgzMzEgNDBjYjIyMzNmNzI2ZjFjNjBmYzIzZTEyNzMwZTBjZGYzYjg1ZDkxMCBsZWdhY3ktdHJ1bmsKKzc4MzMyIGZkOTQ4ODg1NDA4ODc3M2NjNDQyN2U5MzIwOTQzN2UyMTQxYzA3MDUgbGVnYWN5LXRydW5rCis3ODMzMyA1YzQ0NjZiMTZkNmQ1NzZlMzE1M2YzY2Q0M2Y0YjQwNDhkMTQwMjBmIHB5M2sKKzc4MzM0IDczY2Q4MzcwNmJjNDU0MmQzNzg4YzAyZTVmNThiYzViNWZmOTRiOWUgcmVsZWFzZTMxLW1haW50Cis3ODMzNSAzMzU3YjhlYmIyNTk1YzMzNTI0YzU0Zjk4ZTkwZDZjYjc4NjlkZGEzIHB5M2sKKzc4MzM2IGVhMDJlY2UzMjNmZTBlODQ0NDE2Mzk2N2Y5MDIyNGUwZGUwOGM3OTYgbGVnYWN5LXRydW5rCis3ODMzNyBlZjczMmMzZGI2M2RjNTlmODQ2YzVkNGY2NTgzNGFiNGNkOTMyMjQ2IHB5M2sKKzc4MzM4IGJkMTNlZWVkYzNiMDNjYzAzNWMzOTY1M2ExN2ViODRhMTczMWZkNWQgbGVnYWN5LXRydW5rCis3ODMzOSAwNDdmMTk5NzdjNDI4NDM2YzJhZGNlZTkyZTg4ZTk3N2MzN2M3MTI1IGxlZ2FjeS10cnVuaworNzgzNDAgYjgzZjk3MTZmMTM1Yjg2N2Y4OTcyNDU0ZTA3MTZlNTI0MWZjOTk2YyBweTNrCis3ODM0MSBkMjg4ZTU0OTFiY2FhYmMwMTZjZGY1Y2I0YWNjZjE2YjE5ODYxMzA0IHJlbGVhc2UzMS1tYWludAorNzgzNDIgN2ZiMDEzZmYwMTRmMTk1ZTg1MWRiNTg5NzkwZDU2M2ZhNTllNWI1OSByZWxlYXNlMjYtbWFpbnQKKzc4MzQzIDVmY2IwZTBiZTg5ZTliMTAxMjEzMWU3YjVkMDk4ZTNhZjI2OWIxNDggbGVnYWN5LXRydW5rCis3ODM0NCA4N2YxYjhmZmMyOGQ3NWRlMTY1MzYwODJlZDkzZWI1YjY0YTY0N2EzIHJlbGVhc2UyNi1tYWludAorNzgzNDUgNzdkODc3ZDBiZjA2ZDkzZWQ0MzUzYjM5Mjk5NDQzZTA1NWFmMTAxZiBsZWdhY3ktdHJ1bmsKKzc4MzQ2IDMxY2I2MWUwZjJiYzAwODY2ZWNkNjE4MjAxNzQwYjU4OTc5Y2E5NzAgbGVnYWN5LXRydW5rCis3ODM0NyA5YjU4MDZhMDA4ZTcxNGVjMmVlZDYzY2RjYjY4N2Y3ZmZhMWM2NmY0IHB5M2sKKzc4MzQ4IDlkNTViMTdhM2M2NDdhZjI1MTZkYWI4NzUyNjNhNTRhMmNiZTJhMGYgbGVnYWN5LXRydW5rCis3ODM0OSAxNTI4NmQ5ZjFhOGUzODAzMjVjNzA5YWZiZWI1MmQxNDVmMjc4YmZlIGxlZ2FjeS10cnVuaworNzgzNTAgOGMwZTQ4OTZkYmZjNTI0NTYyNTkwYTAzMTNjZWYzNTdjMjg3MjQzZiBweTNrCis3ODM1MSBhNGM0NWY4ZTcwYWFlMWYzOTkzMzA0MDM4MDMwMTQyYmNkNjI0MDhmIGxlZ2FjeS10cnVuaworNzgzNTIgOGU4YzQ1YWI0NGRjZjdmN2VhNzI4MmZhOTYyMTZmMDA2ZTFiYTVmNyByZWxlYXNlMzEtbWFpbnQKKzc4MzUzIDU3NjdkOTI0OWY1ODkyM2UzMzMzNTY3NTg1MWQ3ZGY5MWE4NzM1NDggcmVsZWFzZTMxLW1haW50Cis3ODM1NCAwYmQxNzM2ZTMyOTczZDY2MTgwNjZkNTJkMGEwMzQyYjc2N2Q5ZjBhIGxlZ2FjeS10cnVuaworNzgzNTUgZmM0YjAwNWNiZDI4ZjQyMzA5ZjA1NWFmYWFlMjNlM2M3NjAwYWQ4MyByZWxlYXNlMjYtbWFpbnQKKzc4MzU2IGZjMjg2ZmU0NjYxMjMzMGNiMmE0YWFmZDgyZDcyYzY0NDM0ZjM0ZDYgcmVsZWFzZTI2LW1haW50Cis3ODM1NyBhNWZhYWFiOTk1YzQyYzlhNjMzMTQ2MzUzNGRkNDE5NTcxZWU3Y2U0IHB5M2sKKzc4MzU4IGI0YzZiNzY5NGYwYzJlYzgzMTk5ZmE0OTlhNTNmZWE5ODMyZWMzNjMgcmVsZWFzZTMxLW1haW50Cis3ODM1OSBhYzM2ZWM4YmFlNmM2NTA2ODg2MDZiOTJkZjQ0MTFkNzJjMDUyMjk1IGxlZ2FjeS10cnVuaworNzgzNjAgNDYwY2U5ZTg0ODM4M2U1ZjRmZmU2ODJlMmMxNGIyZDFlMDVhYzYzNSBsZWdhY3ktdHJ1bmsKKzc4MzYxIDRhMTE4MWVjNDAzNjRmZmE1NGE3OTY3NjU0M2VmOGU5YWVlNTg1MzEgcmVsZWFzZTI2LW1haW50Cis3ODM2MiBhMWQwNzhiODgyNDcyYTQyNDkxNjQwY2E1M2JmNGQ5ZDZiOWFiMmNhIHB5M2sKKzc4MzYzIDEzOWMxMDQ4ZjMxYmQ1MDBhODg2MWY4MzQ4YjQxOGNiYzIyMmYzNjkgcmVsZWFzZTMxLW1haW50Cis3ODM2NCBiNTJlM2ZmMGE0YzhiMjNlYjY4Y2I3NGU1MDRiYWMyOTk0ZTFlNThlIGxlZ2FjeS10cnVuaworNzgzNjUgOGM5MzBlNGQ1MWJkMjkwZTIwMTdjNDkyYmFkMTZmZjdhOTlmMTU4NiByZWxlYXNlMjYtbWFpbnQKKzc4MzY2IGRmNTZiYTFjYjBhZjI4MjU4YThiODg5YTc1ZWRhNzBkODczNWUzM2YgcHkzaworNzgzNjcgOTI2NzBjYzFhNmJjNDAyZGQxMWFkNTEwMmFjZDE4MjhmYzE4NmE4MiBsZWdhY3ktdHJ1bmsKKzc4MzY4IGZlYzU1ZjUyNzc1Y2U3NzUxODUzZTI0NmQyMWUzNDA0OTVmOWIxMDggcmVsZWFzZTI2LW1haW50Cis3ODM2OSBiZjhkOWYwMzU5YzEyMjYwM2ViNjc5M2ZiNTYzOGFkMjk4NzZmZmVhIHB5M2sKKzc4MzcwIDI0M2NjODBkNGEwNjdiNDkzNDkxZmE5ZjMxMjdiNzk5MjlhMDYzMzIgcmVsZWFzZTMxLW1haW50Cis3ODM3MSA3NmFjN2ExZDcxYjc1ZWFlNmVhNzUxNWViODc2OTEyNWRhNDlhMzg3IHJlbGVhc2UzMS1tYWludAorNzgzNzIgOGE1NmI4MmMxMjg0NTI5MTFkNWJkYjAzYmFlZWU3MTExNDlmZjk1OSBsZWdhY3ktdHJ1bmsKKzc4MzczIGRhMzczZGFjMjQxNWUzMmJjMjVmZTNjOWZjM2VmMWEyMzQ5YzI1N2IgbGVnYWN5LXRydW5rCis3ODM3NCA4OWJjMjhmMjAwMjFmYjQ2MDJhNGRlYzczNDUwZjM5YTVlMDY3OWY5IHJlbGVhc2UyNi1tYWludAorNzgzNzUgODY5MGQwOGQ5NTNmOTdlNTU4Y2YxN2FmYmU5NDM0NzJhNjBjZTRiMCBweTNrCis3ODM3NiAwZjU0ZDQzMjczNGM3NjY1ODgzOGM4NWFlMDJjODIzNTFhYjhlMjAzIHJlbGVhc2UzMS1tYWludAorNzgzNzcgMWRkMWVhZGE0NmMyZDcwZGVhZDRlZmYyMzQyMzBhYzcxOWJkNTg5ZSBsZWdhY3ktdHJ1bmsKKzc4Mzc4IGJkNGM5MTZmMGVmYTVkMWVmNjdkMzcyZTgyNDkzZmI0NTY5YWUxZmQgbGVnYWN5LXRydW5rCis3ODM3OSA5ZTFjYTFjMTE5MDIxYzQ4MTJiZTQxODcxNmI3N2JjZTJlZGJjOWRmIGxlZ2FjeS10cnVuaworNzgzODAgYjE3ODE0YmUwNWYxYzFmNWE2NzI1OGQxZjNmODUzMzYyZDA4NTQwNCBsZWdhY3ktdHJ1bmsKKzc4MzgxIGUyYTQ0NDViMGU3YzMwMGQwYTcyMDJlYTk2MTRiMzU5OTRhMzRkZmMgcmVsZWFzZTI2LW1haW50Cis3ODM4MiA5ZmQ4MDNhYmUxNDFjOTQ2OGI4ZmE2N2VjM2I5M2E4NGQ3ODI1Y2I2IHB5M2sKKzc4MzgzIGI5MDhhNDBmMDAyMDUwOTEzMmMxZDRiYWYxNGIyZDcwNmIzNzM3NTEgcmVsZWFzZTMxLW1haW50Cis3ODM4NCBkZGE1MTY1YTIzNzRlN2Q4NjYxOGNkNzcxNDQ4ODIxOGE5ZDhkZGI2IGxlZ2FjeS10cnVuaworNzgzODUgMjg3NDUwYjJkN2E3OGQ1ZDBkMzMyMzcyOTQ2OTQwZmQ5NmMxYmI0MCBsZWdhY3ktdHJ1bmsKKzc4Mzg2IGVhNjhkNzU1MjliMTFjZmNkYzE3ZTczYjBhZWE4OTA0ZmYwZGFjNGIgbGVnYWN5LXRydW5rCis3ODM4OCA3N2RlN2IxYmNkNTlkYTdlNjc2OGRkODA0YjQ5ZmJhMzRjMGRlZDkyIHB5M2sKKzc4Mzg5IGFiMTA3OTNhNDZhNzAxYzJlODNiM2MwMzRiZmY5ODU0OTY0ODI1NDggcHkzaworNzgzOTAgMTI0OTcwNzJmOWRhY2UyMGNlN2IyYmI1Y2NmMDg5NDczZjYzOWEzMCByZWxlYXNlMzEtbWFpbnQKKzc4MzkxIGZjZjIxMmE5M2RkNDJmMDRmM2UwZmQ3YzJjOTUwYWQ3YTY0Y2Y1YjcgcmVsZWFzZTI2LW1haW50Cis3ODM5MiAzMmIyMTA2MWVlOWZmZjI1NGMzMjIyNGNiNmYyYzU5ZDVkY2ZlNzM0IGxlZ2FjeS10cnVuaworNzgzOTMgZGY1NzE5YzI5OGRiMmQ4ZmJiYjkxOTM2MGViZTdkYWIyNzRjOWRmZSBsZWdhY3ktdHJ1bmsKKzc4Mzk0IDc3ODA0ODJhNjRkYTY5ZjYxNjZmOWJjZDdiOTQ4N2EwMmNhMTE3MWMgcmVsZWFzZTI2LW1haW50Cis3ODM5NSA0NGVlNGYyNzFkN2FlYmY4YWYyMGYwYmQ4OWY0NzE5Njc1NjM4OTFiIHB5M2sKKzc4Mzk3IDc5OGUwZDBjNzI0NmRkYjIwN2MyNzVkMmRhOWE1ZDNlNTg4YTFhM2EgcHkzaworNzgzOTkgNDEwYzFjODBkNjYzYWIzYjlkZTk5M2ZjNjIyZjI0YzJjNmM4NjUwNiBsZWdhY3ktdHJ1bmsKKzc4NDAwIDhkM2ZmMmZiYmU0YjRhNDlhMWIzZWVkMTllYjViNTQwZmE3MDNkNzQgcHkzaworNzg0MDEgNjk2Zjc2N2U3N2ZmOGI5OWMyNjI2NTM5N2Y4NzE3MzNiY2ZmMDRkYSByZWxlYXNlMzEtbWFpbnQKKzc4NDAyIDY3ODI1NmU4MGZjNjAxZDNiMzZlYzYzMTI2YzIxZjc2YzM0MTljZDIgcmVsZWFzZTI2LW1haW50Cis3ODQwMyBlODU0MTJmNTQ0YzgzZTIzM2YyYWJhOTA5ZDQ3ZDU0YmFkZDk4NWE5IGxlZ2FjeS10cnVuaworNzg0MDQgOTU0YjhlMjc2Njc0NjMyMWVmNzRjNmIzMTEwZTVmMzU2ZWRiNjZhNSByZWxlYXNlMjYtbWFpbnQKKzc4NDA1IGU4MDMyN2NiNjg0NjgxZDRmNWM0NjYwMGFmYTM4NDk2ZjgxMzRjN2UgcHkzaworNzg0MDYgMTA3YzRjNmVjNjQ5NTFmYTg4NzBlNTkwMWIwNjQyZThiZDExZjE3MiByZWxlYXNlMzEtbWFpbnQKKzc4NDA4IGE1ZjZkZDE4OTI4MmYwMWRhNjQ5ZmQ3YTlmYzkyMjIxYjRhNmRhYTAgbGVnYWN5LXRydW5rCis3ODQwOSBhOWE0MzgxMDBmOGQ0YjJjYWI4MDVlMzczYTQ0MzU3MjI0MWQyMzI4IHJlbGVhc2UyNi1tYWludAorNzg0MTAgYTk5NDVhZmNjNGVkNGQ3MmJjYmRlNmJkOWMxZWVhMGQ4ZTY0YzNjZiBweTNrCis3ODQxMSAxNzcxOWQzOTVmMWU2ZGU0N2YwZjg3YTg5ZjFlMDZhNDJmNzQzMTYwIHJlbGVhc2UzMS1tYWludAorNzg0MTIgYzQ2NWQyMTQzODc0ZGNhZjVmYzllNWI3MjhiMGM1YzA3N2M0OTdjNCBsZWdhY3ktdHJ1bmsKKzc4NDEzIDA3OTVkZDdiMmM5ZDFiMjQwMTJjOWJjZDdlMzYyODg1NDM4NDU5NWUgcmVsZWFzZTI2LW1haW50Cis3ODQxNCA4MjBlYWY5Mzg4MDQ1YmNkMzIzOWVjZjRiOTQwNTQzMmI3NGY3ZTE1IHB5M2sKKzc4NDE1IDRmNzUwM2FlZWE4NWZjODVjMDUzYjU4MmFmMThiNDhjZTgwOTQyMzYgbGVnYWN5LXRydW5rCis3ODQxNiA5ZWJiY2I3YTM5ODk3MGNjOWRkYTViZDljZThhMDk5YWEwZDIyYjFjIGxlZ2FjeS10cnVuaworNzg0MTcgNDUyMTJhMjQ3ZWQ0ZDVkNGFjNDkwMDA2M2M2ODI1YmU1ZTJjNGI2NCBsZWdhY3ktdHJ1bmsKKzc4NDE4IDJiODJiMTZhNjM3NTZjNDY5NWFjOWM2NmU4N2MzZTNiMjIyNWUwYTYgbGVnYWN5LXRydW5rCis3ODQxOSA1YWMzNDljMzIyZmQzZmZjNzU3ZmM2NGE0YWI2OGMzY2M4NTE5ODlkIHJlbGVhc2UyNi1tYWludAorNzg0MjAgNTllY2VhMTM3NjliMzk4ODAzYjJlYjhhMTdkNmNmZjk3ODA0ZjFlNCBweTNrCis3ODQyMSBjOGVmOTA2YjExYjg4MzIwMTdhNTVhMjM3MjgwYTczNjA4YThlMjk5IHJlbGVhc2UzMS1tYWludAorNzg0MjIgNTZmNGQ2YzUxNDUwMTZlNWE1ZmYyZGM5YTBmNzdhOTcwNTliOGI2YyBsZWdhY3ktdHJ1bmsKKzc4NDIzIDkyMjViNGY4Y2IxZTczYzgxMTVhYzVkZGJjZjdiNTMwNmZhZmIzZDUgcmVsZWFzZTI2LW1haW50Cis3ODQyNCBhZjU4N2I0YjU5MDkxOTRmMzNlMTJlNjMyOWUyODI3M2JlNzlmNjZkIGxlZ2FjeS10cnVuaworNzg0MjUgYzBmYTE0NTM3MGU0MWY0MTAyODQ5NTExMTg5OWRiMzQ1YzcxZTJiMyByZWxlYXNlMjYtbWFpbnQKKzc4NDI2IDNkNGRiMWY1YjNiMTU1ZDViZjc0N2YxZGQyZjU4ODA0MWNlODQ1YjAgcHkzaworNzg0MjcgZTcwOWY2ZjZmNDVjYTljZDlmZGUyZmI5ZmU1OGJiNzM2MTRkNzFiYyBweTNrCis3ODQyOCA1Zjk5MzlhZjJmNzFhY2ZkY2VmZTU2YzZiNDIwZGUzYTAyNjBmZWVlIHJlbGVhc2UzMS1tYWludAorNzg0MjkgYWY5ZTZlZGJiMGZmNzk2YWJmYTU1NjI4YmQ4N2FjMDcxZmE3MjU4OCByZWxlYXNlMzEtbWFpbnQKKzc4NDMwIGU0N2E2NGY5Y2M3N2JmZWFjZWYwMDYzZDYxYTQ1NmY0ZTZiODk3NDAgbGVnYWN5LXRydW5rCis3ODQzMSAzMTgxMjU1ZTI4Yzk5Zjk2ZDgzMzNkNTcwNmQ2ZWRiNmNkNzdjZDE4IGxlZ2FjeS10cnVuaworNzg0MzIgYzk1MGZhYzc0MTFiYTY0MGM5M2ExZDRiMGM2YjI0MzdkYjkxM2I1NCByZWxlYXNlMjYtbWFpbnQKKzc4NDMzIDI4Nzg4ZjcyZDhjMGZlNWRhNWM5NjU1N2ZjOTVhZjYwZTkxNjIwOWYgcHkzaworNzg0MzQgOTRlMmI2OTAyOTY5NmQwYTBhMDIwOTlkODgyOTA0ZjYwNWY5MDhhOSByZWxlYXNlMzEtbWFpbnQKKzc4NDM1IGI3ZGU3YzVhZmEwNDI5M2M3MTkzYTUwM2ExZTc0ZDJhMTJiMjFhODIgcHkzaworNzg0MzYgMTljZjUyNmJlZmE0NjliNTljYmZjZjlhZjFhMDBjMWU2MTMxZjkwOCByZWxlYXNlMzEtbWFpbnQKKzc4NDM3IDEyMjIxYjZjYzhjZGM3ZDA4OGFjZWY0ZmNkODVkYzEzNjM0ZWNhZDcgcHkzaworNzg0MzggZjVlYTEyNjRiN2FlMTc4N2YzYTBhOTIwMTBlMmExZTBiZTBmOWI1YSByZWxlYXNlMzEtbWFpbnQKKzc4NDQwIDM4M2Y0MDk3NWM3NWMzYzMxY2VlOWI0MWMzM2E4NmUwY2QxNWMwNjYgbGVnYWN5LXRydW5rCis3ODQ0MSBiZDgzNTdhOTFkM2U2MzkyNjFiYTFkMTFkMjJiODQwODJhMDgwZjA4IHJlbGVhc2UyNi1tYWludAorNzg0NDIgODViZjg0NDY5YTMyYzlkZTQ2ZTQ5ZmM5ZmQzODRkZjBiOGIzZTAxNCBweTNrCis3ODQ0MyAyMTgzMjc3Y2JhYjE4NzY2ZDdhYjEzMzhmMjY0Mjg5MmFjN2QzZTE4IHJlbGVhc2UzMS1tYWludAorNzg0NDQgYWNjYWI0YmFiNjM0Y2Q2MWM2YzMwODY2NTM4OWVmNWQ1YzBiNWM1ZCBsZWdhY3ktdHJ1bmsKKzc4NDQ1IGVjZmU5Y2ZhYTMzNDczMTEzNGE5NTdhZTU3MzUwNzAyYmZkYmMxNzggcmVsZWFzZTI2LW1haW50Cis3ODQ0NiA4OWE1MGExMTgyMDE5MTJkZTdlNjg3ZDc5Mjc0MGQxY2I5ODg1MzY4IHB5M2sKKzc4NDQ3IDVmMDRlMGNkODE3MTc5MDNiNjMwMjYzZDA2NjdiZGQxMzFiYzZlNWEgcmVsZWFzZTMxLW1haW50Cis3ODQ0OSA2YzE0YzI3OTI1YjllNTgzZDc3ZTliNDQxZDQwMmExZTE0NWNhODg0IGxlZ2FjeS10cnVuaworNzg0NTAgYWFjYzBkNDhkNDRkN2UxMDViNmNmODg2MzZjMmRmYjA3MDljMGQxNyByZWxlYXNlMjYtbWFpbnQKKzc4NDUxIDg1NTNkNDJjOTRiMWE5ZmNhZWNkNzVmMGE0YjM3OThlMTQxNGFiNTUgcHkzaworNzg0NTQgMWE2MmY0ODlhNjhhMGE5MzY2Mjk4ZGNkZDcyNTU2OGExOTZiMDU3OCBsZWdhY3ktdHJ1bmsKKzc4NDU1IDQ3ODBlMDM3N2UxMGY2OGQxYjM4ZmQ1MjUwYTQ5MjhiMjM4ODUwNmQgcHkzaworNzg0NTYgZTFiYzAwMjJiMjNiMmQ5MTBhMjNiODVmM2Y2NmJjYTJmZDY4NGUxMCBweTNrCis3ODQ1NyA5NWIzYmI2YjlmYWFiOWM0OGY3N2U1OThkMTYwZTQzNWM1NGI3YzNjIGxlZ2FjeS10cnVuaworNzg0NTggM2FiNzQwOTQwNWZhM2EzYjkyYmRkYjdlYjE3MTJiYjIzNTJiYWYzMiByZWxlYXNlMjYtbWFpbnQKKzc4NDU5IGMxMmI5NTUzNTA5NDg4MzllNjcyMGVjZDA5OWQ4MGVkZWY1YTEyMjggcHkzaworNzg0NjAgMDgzYzhlNTM1NGFkYjMzYjc5NjNiZDAzOTQ2ZjQ2N2MyM2U2Y2E3OCByZWxlYXNlMzEtbWFpbnQKKzc4NDYxIDdlM2M0NzM1NGRhMzQyNmU3YmNmZjIzZjBiZGMyYWZlZjVkMWQyZGIgbGVnYWN5LXRydW5rCis3ODQ2MiA3ZDM0M2Q1YmZiM2YxY2RmYzgzOTY3M2NiZjI1MzAxMDUwMzFhZWYyIHB5M2sKKzc4NDYzIGFkMmY1ZWFjZDJhMDM2ZDRlODRhYjQwOWQyOTg0Y2E1MzkzZTliOWEgbGVnYWN5LXRydW5rCis3ODQ2NCA5YWMzNTIxNWFmNGE4Yzk3YzJiZTJkOTc0MzFjNzhiYTkyMWI3MTE4IHB5M2sKKzc4NDY1IDNkY2RjYTAwNzA5NTU2NmU0MjY2MTc2Mzc3NzFkODJjNzljNDM5YmQgbGVnYWN5LXRydW5rCis3ODQ2NiAyNTJmMWUyM2U5ODYwMzE2ODRkYzgyNmMwYjM0MmUzNmMzMmU1NDNlIHJlbGVhc2UyNi1tYWludAorNzg0NjcgOGIyMDQ4YmNhMzNjMWQ0M2UxOWFiNGM3ZjE2MzdlMGRlNzY2Yjc2NiBsZWdhY3ktdHJ1bmsKKzc4NDY4IDUzNWUyMTU1YWYxYTgyZTEwMzRhYzgxNTA5YjAyNTFkNGYzYjlkMTQgbGVnYWN5LXRydW5rCis3ODQ2OSBkYzFjZDhlZGZhNDY1NzJlMWU2OTEwNGNjMTgxNjAzMTMyMWZkZmE2IHB5M2sKKzc4NDcwIDYwNDNkMGJkOGJmNzBhNTc0ZDgyN2U2NTRlYzY0NWVkNWRiNTQ5OTUgcHkzaworNzg0NzEgNjJiYWJmNDU2MDA1YjY3Y2RkZWQ2MjA4MmRlNzVhNzFlNzE0NzVkMCByZWxlYXNlMjYtbWFpbnQKKzc4NDcyIDk0ODZmZjQwMmFjYzM4ODE5NGQyODc1ZDRmYWYwZGYyNmU1ZjNhYWMgcmVsZWFzZTI2LW1haW50Cis3ODQ3MyAzMzNmZThkNzkzMjk4YmMxNmRjYmMxNmIwOGY1YzE0Y2NiYmJhNDAxIHB5M2sKKzc4NDc0IDc4NzRkMTNjOWFhNzY3YTc4ODEwYjQwZGE1M2JmZjIyNWQ2NDUwOWIgcmVsZWFzZTMxLW1haW50Cis3ODQ3NSA4ZTY0NjE1YTRjODYzNWZhZWQ0Yzc0YzVkYmNjNGFlN2IxMmUyMTY3IHJlbGVhc2UzMS1tYWludAorNzg0NzYgMmYyZDIyNTc3NzQyODA2YmU2MTZmOTZhNjc0MDU1OGVjOTE3ZTk0ZCBweTNrCis3ODQ3NyA1ZTJhNTg0MzA3YmE5ODdjOGMxMTEyNDJkNjljN2ZjNmI1NGQ5NzM2IHJlbGVhc2UzMS1tYWludAorNzg0NzggMjMxYzg4ZWU4ODg1YzEwMzBlOTYwNmYyNzYxODhhYWQyNjU1YWQxNyBweTNrCis3ODQ3OSAzMjcwYmExYmVjNzZhMzg5YjA3M2MzMTE5ZWY4NDQ4MGFiNTk1YWMwIHJlbGVhc2UyNi1tYWludAorNzg0ODAgMmI2OGUzMTQyZDE3ZTgzM2Y2MTZmMTUxNzk5YzUzZWM5NWUyNjFkNCBweTNrCis3ODQ4MSA1NmY1MzdiZWRhZmVkOWZmN2RhODVhN2E5M2E0ODhkNTM2ODhiODcwIHB5M2sKKzc4NDgyIDQwNzBmNGNmOGM3NzJjZDUzOWUyYjY3ZTFmNjQxMmM0MjJmMjc2NWUgbGVnYWN5LXRydW5rCis3ODQ4MyA0MDY2YjQ1ZDI4YWIyOGJkNmUyNWRmNjkzYzVhM2NmYTJjOTE4MzQ5IHJlbGVhc2UyNi1tYWludAorNzg0ODQgZTU0MDMyM2Q4N2E4YjIwMjJhM2U1ZGM2ZTc3ZDgxODA3ODUxMWY3MiBweTNrCis3ODQ4NSAwZDU5MGU1ZTg0MGM2MzViMmI1ZmU3MDFmYmEyOWQxNjQwMmZhZmY5IHJlbGVhc2UzMS1tYWludAorNzg0ODYgYWJhOWY2NTQxYWQ2OTgzYjUwNDljNzM5NThmMDhjNTAwM2QxMjBkYSBsZWdhY3ktdHJ1bmsKKzc4NDg3IDJhMGFjOWJkZTk5YWZkMDI3YzNkN2MyYWRjODY5OGM2NDcxMjUxMmMgcHkzaworNzg0ODggZDBjMmI5YzJiYWJiMGVkOTY2ODk3ZGJjMTA1OGRjM2MwNTBjMmFkNSBsZWdhY3ktdHJ1bmsKKzc4NDg5IDBiNDg0NjQ4OTA1NWFjZTRmYjY3Mzc4MmE4OWYyZGQ0MjUzNTE1YmUgbGVnYWN5LXRydW5rCis3ODQ5MCBmMTM5Y2EwMzRjM2I3NTAzODA0ZWE1NmEwNWNlOTc4M2ZhZjMxY2I3IHJlbGVhc2UyNi1tYWludAorNzg0OTEgYmYxNDZmMTAzZWU2NzNmMmMyNzg3YTQ3YmEzMDVjNjQ3MmY0ZTA3ZiBweTNrCis3ODQ5MiAwMTk0ZDhhNmIxZWZmYzQyMDY2NjQ3N2ViZTcwNWM0NWU5YWRhNTMyIHJlbGVhc2UzMS1tYWludAorNzg0OTMgYWUwOWFiMjY4NmVkMDQ5NDYxMmQ0OGJlOGIwNWE4MmQwMGFkYmMyNiBweTNrCis3ODQ5NCA4OTFlNzlkNzcwZDg4ZTY3YjA0Yjc2YjVhNDhjMDQ5NDExNDYyOGE5IHJlbGVhc2UyNi1tYWludAorNzg0OTUgODE1MDkyYTVlNWMxMjk4M2E4MzZhNjc2MTRjYWEwZmI1MDlkNDc4NiByZWxlYXNlMzEtbWFpbnQKKzc4NDk2IGQ2MmJkZDg0ZGYwYTNiZGE1ZWUyM2E5OTIxOGJlNWU2MDUxYzU1N2EgbGVnYWN5LXRydW5rCis3ODQ5NyA3NzU5MzdhMzRmOTY2MmIzODg1NDdmMTdhMTM2N2M5ZDliZGI4MTdmIGxlZ2FjeS10cnVuaworNzg0OTggODY0MDJmYTBjNWI4OGVjZjllYzA1MzQ4MzJhMmYxODY1YTVmN2JmYiByZWxlYXNlMjYtbWFpbnQKKzc4NDk5IDU2MGYzZjRlZTlhN2Q4MTllN2E2M2NkZGNmMzk5OGVmOTdhMTk3NTEgcHkzaworNzg1MDAgNTYyMDVmNTQ3Yjc0NjA1OWM1Nzg3YjAzNTQ5NzM5YjMwMjc0MWFmYyBweTNrCis3ODUwMiA4ODcxM2MwZWQwMTAyNWE4MDQ1NDRmYWUxMjAyZThkOWY2NzFiMTQ3IHJlbGVhc2UzMS1tYWludAorNzg1MDUgODFkNjgzM2M2Mjc4YmVmZDAxMjMwZjVmOGY1MjQyZjgxNTFmYWI0MyBweTNrCis3ODUwNiA4OGYxNDdkMjYzNzI2MWY2MzM3NTNkYjA4ZjYyZWMyMWMzN2NkZDcyIHB5M2sKKzc4NTA3IGE5ZTFmMWQzNGM5NjcxYmJlZTE1YWNlNGM5MTJiMDNjNTIyNTg0MjkgcmVsZWFzZTMxLW1haW50Cis3ODUwOCA2NzlmNTJiOGFlZjRjNmQyZjY5ZDI5YjBkNGEwNGZmYTRhNmQ5ZTMzIGxlZ2FjeS10cnVuaworNzg1MDkgODFkY2MwYzg0NWRmYjY2OGVhYzAxODhjNWMxZjY5NzcyMzE2MDIxYyBsZWdhY3ktdHJ1bmsKKzc4NTEwIDAxYzU4Y2VmODJkNDhhOWE4YWIxNjI3ZWNmNzIxNjQzMDdlMTk3YzggcHkzaworNzg1MTEgNWQ5ZjNhZmJjNGU0YmMwYzUxM2VlNmExNTE2NzM4ZjUzZTRhMTNiMyBsZWdhY3ktdHJ1bmsKKzc4NTEyIDEzZmY5ZmRiODQzMWI3MjkzZjMxYmRhNGI4MTdjNmIzNzNlNmQ3OTMgcmVsZWFzZTI2LW1haW50Cis3ODUxMyBmMzc4NjNhN2VkNjc3YTg3MTMyZTc5YjhkMDYwMDA4MWQwYjEzNGZhIHB5M2sKKzc4NTE0IDIwODBhYjg4MGE4MGVkMGJhZmVjZjAxMjc5OGI1ZjAxNmNlNTFiOTEgcmVsZWFzZTMxLW1haW50Cis3ODUxNSA3OTliYzQ5NjRhMWQ5MzAyZDZjYTc0MWE1MTIxODU2YzMxZGQzNWRjIGxlZ2FjeS10cnVuaworNzg1MTYgNzUwODAyNzU5MjFiOGU4NmI1NDU5Nzc2NTE5MjNiNjlkYTk4NGE0NiBsZWdhY3ktdHJ1bmsKKzc4NTE3IGVhYmZhNzc4YjA3NmI2MGU4NTVhMjA2ZTExMWRlZTQzNDU2MDgyZDkgbGVnYWN5LXRydW5rCis3ODUxOCAyY2RlYzg0OGI3NGM2MTQwMTI2ZDE0N2FlYWNkYWNmMmNiMGM4YTNjIHJlbGVhc2UyNi1tYWludAorNzg1MTkgOThlOWM0ZmZkMzQzYWYxY2VjNTA0NmRkMGU4NWRjZDE3ZWM4OWU5MiBweTNrCis3ODUyMCA5ZTgxMTNlNzZhZGJmMDE0NTRjZGFmMGJjMzU0MzY1NGFiOGI3ZTkzIHJlbGVhc2UzMS1tYWludAorNzg1MjEgOGUzZDAzYjgwOTBiY2IyMWRhY2VjZDFkOWZmYjNlNTIwODBiNDNmMyByZWxlYXNlMzEtbWFpbnQKKzc4NTIyIDFjNmZjNzBmNDlkMWFiZWVmOTE2NDhkNDI5YWU0ODU2M2VhMmMwZDQgbGVnYWN5LXRydW5rCis3ODUyMyA2ZTY2NGJjYzk1OGQ2MGYyMWU3OGRjZjEwZjg0MGZkMzVjNzMxMDE4IGxlZ2FjeS10cnVuaworNzg1MjQgNTU3Nzg4NTVjZDI1YTlhZThmYjY2NzVlOWY4YzI5MjdkYjk4OWY1ZCBweTNrCis3ODUyNSAxMjQ2OWYyMDY1NmJlZTA1Nzk1MTBlODdjZmViOWVlNDgzN2Y2OTNkIHJlbGVhc2UyNi1tYWludAorNzg1MjYgMWYxNTgyMzhmYTc2NGQ3MDBhYzlmY2RlNzQ4YjBlYTRhN2IzNGYzMCByZWxlYXNlMzEtbWFpbnQKKzc4NTI3IDRhZmM1MGQxNTU0NDVkMDFkMmM5M2Q2Y2E4NmNlZmM2MzliNzAyZjMgbGVnYWN5LXRydW5rCis3ODUyOCBlMWI3MGM2ZGY5ZTc3M2RmZDcwMjkxYjhkZDVlYzFjMTBjY2Y0MzFhIGxlZ2FjeS10cnVuaworNzg1MjkgOWI0ZTBjZDc4MTdhZGExZTJmMzEzMzQ5N2U3ZDIwMWQ2ZDhkY2UxZSBweTNrCis3ODUzMCAzNzBlMWExYzIzODY5ZGY4MTlkMzFiNDRhYTlmMzJkZjIyODQ4Zjk4IHB5M2sKKzc4NTMxIDA3N2YyYjhiM2U1NzI5MDkzM2RkOTJiY2U0YjUwZjAzMjAyNzYyNDcgbGVnYWN5LXRydW5rCis3ODUzMiA4NTRiMzRhMDY4OTZmZDZlNDdhMTZlOGRlM2U0YzI4ZjBjMzM0NDlhIGxlZ2FjeS10cnVuaworNzg1MzMgOTI0Y2EyOTViMTQ2MDAwMjYzMGIwYTM3ZDFmMDJlODNhMDI3OWJiNiBweTNrCis3ODUzNCBkMWM2Mjg4MmM3M2JkMGRjNGZmMmExNTY0MWRjZDMwMzAyN2Q5ZTg4IHJlbGVhc2UzMS1tYWludAorNzg1MzUgZjUzZmUzM2UwM2VhMWI0OWJmNzY5NmJhMjRjOWUzM2FkYmNlNmIwNSByZWxlYXNlMjYtbWFpbnQKKzc4NTM2IGM0NTgwNWJhMzIzZjdmYWE5YWExNzAyMzg3YjBlMWU0MjNkODEyZTQgbGVnYWN5LXRydW5rCis3ODUzNyA5NDFlMWJmMDRmNTUzMmUxMmYwZmZjOTAyN2RiZjBmM2I1MjZlNmM3IHJlbGVhc2UyNi1tYWludAorNzg1MzggZjAyODNiYjYyMzYxNGFkOTUyYWZhYTdjZWNkM2M5ZjZiMjNhMzA3NCBweTNrCis3ODUzOSA3ODNmMDliMDg3MDZlYTMwZTIwYzVmMGU0NjM2NmEyYjIzODgxNzJmIHJlbGVhc2UzMS1tYWludAorNzg1NDAgMDI2NWNkYzhkNWJiMGNlYmI0ZDkxY2M0OTMyNjc0ODRlMWE3NDRjMiByZWxlYXNlMjYtbWFpbnQKKzc4NTQxIDhkNDhmOWI1OTY4OWJhNDY5ODI2NTU3YThkZGQ5ODZiZDRjZGUzZjUgcHkzaworNzg1NDIgOWI3MjI3N2Q2YjMwYTdjMDhjOWQ2ZDBiNmJkMmY5YzE0MjUxMzgwZSByZWxlYXNlMzEtbWFpbnQKKzc4NTQzIGQ1ZjUwYWU0ZjFmNzhlMTk5ZjEzNzM5MWFkZjQ4YzdlZjJiYjgzOGIgcmVsZWFzZTI2LW1haW50Cis3ODU0NCBmNWJhYzQ3MzcwNjlhNDEzZTg5MmQ3YTUxMDc4OTVkYzFkNmIxZGIyIGxlZ2FjeS10cnVuaworNzg1NDUgNmZhZmI2NGVjMzI4MDhkMjM5ZGQ1ZDBjNTBmNTZlNmQ0Nzc3MjM5MSBweTNrCis3ODU0NiA1ODkwMDRiMjJmNTRjMTM0N2U3ZmVjMzU2YTdkZjMxMGY0NWFhNGVjIGxlZ2FjeS10cnVuaworNzg1NDcgYWZmNjkyYmRiNmRiMTA3OTc4MzMxOTFmMzZhZjMyZjgzMjU4MWNjMSByZWxlYXNlMjYtbWFpbnQKKzc4NTQ4IDg4N2RlNWRmZDk2MDE1YWQ0NDAyOWNhMWViZmI0NDRlYjA1ZTUyYTkgcHkzaworNzg1NDkgZGM4NDZhMjExYzY1OGFhYWUwZjA5MDhlM2MyOGE3NDEwYWYwMWNjNyByZWxlYXNlMzEtbWFpbnQKKzc4NTUwIDQ2YWUxNjRiMTViYTkxZGM2NDkxZTkxYTg2OGIyZDI3MWMzMzE3YzYgbGVnYWN5LXRydW5rCis3ODU1MSA0ZTMwNDMxMDk3NDlmMjk1NzQ2NjhlNDQ2NWU0OWJjY2JiOTdiZjdiIHJlbGVhc2UyNi1tYWludAorNzg1NTIgNThjMzU0OTVhOTM0Mzg3ZDA2NGVkZjU5NjM0YWQ3M2NiOGZlMjhlNCBweTNrCis3ODU1NCA0YmM1YjA0MWQzYWE2YmJlMDkwMWRmMjI2N2U1OGI4ODg4Nzc3Yzk1IHJlbGVhc2UyNi1tYWludAorNzg1NTUgNDBhNDA2ZWVkY2FjOTJlMTFhOTIzNTlkZDY3NGRmY2FjNTc5MmFlOSByZWxlYXNlMzEtbWFpbnQKKzc4NTU2IGQ1NjE1ZWVlNTYzZTU2NDA1MzdkZTk4ZDJiYmJhMWM3NDBhZTg2ZjAgcHkzaworNzg1NTcgY2RmNTk2MDRhMTc0NGQ2YjUzYmI3MjllOTk0Njc2MmZlYzljOWUzNSByZWxlYXNlMzEtbWFpbnQKKzc4NTU4IDhiN2I1YzllNjdmNGQ2NzAzYTc4NzE0ZTU0NDk4Zjg4YWIzMzFmODQgbGVnYWN5LXRydW5rCis3ODU1OSA5MTI3ZDcwNzMwYzViMGQ2MWYwMzdhMTAxZjNhYzA2ZjcwMjNkODgyIGxlZ2FjeS10cnVuaworNzg1NjAgMDQ1OTBlYzZmMzdkZGY2NTc1MDI5NTA4OTc2NmQ5MjliMzE3NWM4NyByZWxlYXNlMjYtbWFpbnQKKzc4NTYxIDQzODY4MGJlNTQ3MmI3YWMyMmU2NzY2NDc4ODUzMmZhYTczNTM3NGYgbGVnYWN5LXRydW5rCis3ODU2MiAzOWE1MDNjODgwMDJhOGY2MWVjNzAyZmNlNTZiNjUzZDg4ZjNlNTk1IGxlZ2FjeS10cnVuaworNzg1NjMgZmJkZTExZDFjMWY1YjNiNzlmZDUzYzcwYjNmOTY5NzJhN2U5Mzg0MCBsZWdhY3ktdHJ1bmsKKzc4NTY0IDkzNDIzOWIyNjhhZGMzNTdiYzA5NTQ1NTM0ZWYzODBmYWZiZjg0NmMgcmVsZWFzZTI2LW1haW50Cis3ODU2NSBjOGIyNjI3NmM1ODc3OTg1YjRiMjQ1MGE4YzU0YTdlMjg4MTJmNWY5IHJlbGVhc2UyNi1tYWludAorNzg1NjYgODlmNDJiNjgxY2U1NTc3MzI3ZjgwNDEwMzJmNjE0NjhhMzNjMTZlNSBsZWdhY3ktdHJ1bmsKKzc4NTY3IDY5YTEwM2VmYWU4ZDRlYjY5NDIxOWI4YjUyYTcyODE0MjBmODgxZmIgcmVsZWFzZTI2LW1haW50Cis3ODU2OCBmOTllN2FlNzEyYjBiMjRmM2VlY2Q0Y2M1MTIxZmIyMjhlM2JkYjRjIHB5M2sKKzc4NTY5IDg0OThmMGQ5ZjAyNjM2MmU5YWUxMTU0NTE2Y2VhNzI4YTkxZWI5ZmUgcmVsZWFzZTMxLW1haW50Cis3ODU3MCBhY2ExODg5NzBjNDdkMDZlYjMwNjc3MjYxZDliNDFkMTAwMjNjOTFhIHJlbGVhc2UyNi1tYWludAorNzg1NzEgMmM5YmYyMThjZTI5ODc4ZjQ3MTg0NTg5OWJlYzNjN2RjZjcwY2E0YiByZWxlYXNlMjYtbWFpbnQKKzc4NTcyIGM5ZjY4ZTQyYWI3OTZhM2JhYjRmOGNmM2NjNjljZTEwNTAzY2I5OTAgcmVsZWFzZTI2LW1haW50Cis3ODU3MyAxMTEwMTNkZDVhOGFhMGVlMGUyNTE3Y2ZiNjJlYWI5YjgwODc0ZDQ4IHJlbGVhc2UyNi1tYWludAorNzg1NzQgNGYxODk0NWZiOGIxN2ZkYmM0NGJmYzgyNzg3NjRjODZlY2Y1OWVmMyBsZWdhY3ktdHJ1bmsKKzc4NTc2IDgzZWY2NzUyNjAxMWFmZjRmZDk0YjEwMzhlMDM2MWY0N2I4ODI4MGEgbGVnYWN5LXRydW5rCis3ODU3NyBmOTIzZmU1NWE0MGMzYjc1ZTk1MGJhNDI0Y2QyYTJmNzI1ZDNhMjZiIHB5M2sKKzc4NTc4IDc1NWQ3YTNhNmJiNzU2ZTNhNjIzYzI5NWFjOTI3MzJjMzU1NzU2MzkgcmVsZWFzZTI2LW1haW50Cis3ODU3OSAzOGIwMmRkMmQ0NTliYWM2NjEwOGIzYjE3ZjgwY2NlNDQzNGNmMGFjIHJlbGVhc2UzMS1tYWludAorNzg1ODAgNDcyOGFhMmM4YTEyODQ1YTI4ZDM3OGRlZTk4ZGJhYWE5ZTIyMTU3YiBsZWdhY3ktdHJ1bmsKKzc4NTgxIDdhODllMWVjNGYwMDVjZTBlMTM5ZTIzYzFkNTdmMjIxNTkzOTA5OTYgbGVnYWN5LXRydW5rCis3ODU4MiA2ZDVjMzFmMjRhMjFiMmQ4NGY2YThjNjFkYjRmNzJhMjI4Njc0YzNjIGxlZ2FjeS10cnVuaworNzg1ODMgNmI5NjhlMmYwNWRkYjBkOTAzMWFiNWRiNTQwNTUzYmMyYTkwMWQ3NyBweTNrCis3ODU4NSAxYWNiNjQzYjJjZjQ0NWEwMDljZGI3YTU1YWQxM2ZjNTI5NWRlYWU5IGxlZ2FjeS10cnVuaworNzg1ODYgZTY0YzRiNDNlYjNjMjc2ODkyNDIyNTI4M2MzZDY5MjQzYmZlNmMwMSBsZWdhY3ktdHJ1bmsKKzc4NTg3IDRjYTgzYzViODU1MWJmZWNiYjhjMDcwY2Q0ZWE3NTliOGM4NmY4NWUgbGVnYWN5LXRydW5rCis3ODU4OCA4NDAxZGU2NWUxMmEyMThjMDRiNDYzODAwNTE2ZTg0OTkxODZmMzkxIGxlZ2FjeS10cnVuaworNzg1ODkgZGFiZGVlYzRmOWMxZDMzMTk1NDY3OGYyZmVkZjY1OWZlNGIxZWEzYiBsZWdhY3ktdHJ1bmsKKzc4NTkwIDgyZWRhMzQ1YTVmNmUxM2Q5Y2ViNjA4ZTgyZGE0MjNkOTYxNDBiMTEgbGVnYWN5LXRydW5rCis3ODU5MSA0YjdiNjk1M2NkMDY0OTcwZjUwNjdjZmNjZjkzYzNhNDhiMTAwNjFmIGxlZ2FjeS10cnVuaworNzg1OTIgMTM3YTIxZmNkMzg1MGFiOTU5ODYzNGM4ZWYwY2MwYTVmZWU2MTRiZiBsZWdhY3ktdHJ1bmsKKzc4NTkzIDgzZTdlZTE4NTE2MjNjY2FlMzZjMjQyOWNhOTkwZGI0MGJhNDc4MjAgbGVnYWN5LXRydW5rCis3ODU5NCA5NzBmYjRhOGU2NTRhYzliZjc5ZDQ5M2MwZTZlZGMxYjYwMjljNTU5IGxlZ2FjeS10cnVuaworNzg1OTUgMTJiY2I2OTkzOGIzYzAxMjc3N2MyNDUwNTU1ZGJiYmNhNGIxNzhiNSBweTNrCis3ODU5NiBjMzFhN2MwYzYzOTk4NTVlOWY4NGE4NjE3YThkOTliMzBiZmI3YjA3IGxlZ2FjeS10cnVuaworNzg1OTcgNWM2N2MxZWY4YWQzZjQ0ZjZkNjZhMjRiNzFmMTNkNmRhMTFjYmU2MCByZWxlYXNlMjYtbWFpbnQKKzc4NTk4IDAxZDZhMTRhYmE2NTE3NmZiMDk2OGZmMmIzMzhmMWMxYTdkNjA0ZjkgcHkzaworNzg1OTkgOTUxYzk3ZTI4NzhkNzFkODI0MjVjMTljMDQzMzlkNGY4ZTBkOWUyYSByZWxlYXNlMzEtbWFpbnQKKzc4NjAwIDhkNzIxNDdmNDQyY2Y5ZDVhMmY3NzQ2YWJhOWM0MmIwNzQ3YjcxNmUgbGVnYWN5LXRydW5rCis3ODYwMSBlYmE5NDJlNzc4OTU3YTExNjE0YTQzNjZlNDIzMWRmMDA5MzU5NzkwIGxlZ2FjeS10cnVuaworNzg2MDIgYjMwZjhjZTgyMTY3N2Q5MzBmNzA0ZGU1MTFhOWQ2YmM3YmExNGVlYiBweTNrCis3ODYwMyBiMDQ0NDA1ZDYyZTU1YzFlNTUwMmJjZTMxYTZmYWNhNWY4M2NmYzIyIGxlZ2FjeS10cnVuaworNzg2MDQgZjU0MTExMjUyNDVlZTI3M2Y3MzE2NTljZTUzNWQ0ZDUwMDVjMTRiZCBsZWdhY3ktdHJ1bmsKKzc4NjA1IDJkMjQxNzY1ZTYzMTc0Zjc5OTM0YzNhNWYxZTFkMzkwY2Y0ZGI2NmQgcHkzaworNzg2MDYgYWFiNWI3NmFhMDU5N2Q4MTQ5OTdmOGZiOWZkYmI2ZjVkZjFiMTdhNCBsZWdhY3ktdHJ1bmsKKzc4NjA3IDY4MTU5N2QwYzU4ZGYxMDcwZWFkMjI4ZWVlMDE2OTVkMDEwZTQ3ZTggcHkzaworNzg2MDggZDRhMTg4ZGFjMjIyODU2OTBmOWVjNTk3NTI5NmY0YWM1MWZlMjA3NCBweTNrCis3ODYwOSA2NTM3NzYxYzMxMDE4M2YwNDM5Y2NlYzg2MDM2OTBhOWVmYzliNDM5IHJlbGVhc2UzMS1tYWludAorNzg2MTAgN2VlYzYyMzhlMTVhYzRlN2ZhMjIzYWIxZmI0Y2MwYmZhY2MyZGE5NCBsZWdhY3ktdHJ1bmsKKzc4NjExIDA4Njg0NjM4MWU4ZjNkNmZiMGUwZTE5YzY2NzgyYThlOGQ0N2FhMzQgcHkzaworNzg2MTIgMWU0YzRiMjM1YTg5ZGQ3NTRmMDUzNDE4NTdiN2M1ZThhOWMwMGM1MiByZWxlYXNlMzEtbWFpbnQKKzc4NjEzIDI1YzBmNGQ3YWU1NjllNDNmYjRiM2E2MjBlYjllODc1MmZkYTIyYzkgbGVnYWN5LXRydW5rCis3ODYxNCAzOGNlZjhkZWFlMjJlZjAxNzMzZWI3MWRkZmFmYTY2MDhiOTVjMjVhIGxlZ2FjeS10cnVuaworNzg2MTUgNTg0ZWM3YTcyNTViMjQwZTlmNTdmYzQwNTZmMGU3MzM2MmNlYjA0NiBweTNrCis3ODYxNiBiZDljNzk5M2VlNzVlMzY1OWQ5YzYzZjQwOGIxZjQzYTc3OTZmMTY0IHB5M2sKKzc4NjE5IGJmZjA1MDQ1MDI4M2VjNzVjNmNlMGFiMDk1NjIwNGJjNjBhNGM2MGUgcmVsZWFzZTI2LW1haW50Cis3ODYyMCBiODc1MGM3MmI5YmM0N2ZjYjZiYWUxMWEwYzYzNmVlMjRlM2VmN2YzIGxlZ2FjeS10cnVuaworNzg2MjEgNjg3ZDg1MTdhMGMzOGNmYTJlNjY2MDZmY2IyNDhlNWU1NmNmZGZlMiByZWxlYXNlMjYtbWFpbnQKKzc4NjIyIDI5ZmFjNGIxYTUxZTc2M2QzZjA3Mjk0MzkyMWNmMGFjM2YyOGU1MmEgcHkzaworNzg2MjMgOGFjZTJlYWQ1NTIzN2IxZTcyYzZmMzRkODg0M2Y5OGUwNjA5N2YwOCBsZWdhY3ktdHJ1bmsKKzc4NjI0IDRiNDEzZGZhMjdmOTkyYTdiZTIzMjE4MzRjNjljZGVlMGExZDY5OTMgcmVsZWFzZTMxLW1haW50Cis3ODYyNSBjNTNjYzZiZDZiNjEzMDgwNjA3MTA5NTA5NDQ2N2JjMzZlNmMzZjJmIHJlbGVhc2UyNi1tYWludAorNzg2MjYgYzRmY2E3NzhiNTczYTUyNjYyZDZhMDM2NzQxYzU3MjUyNTE0NTMxZCBweTNrCis3ODYyNyBiOTk5OTg0NTNkNTIzYWUxMGViYmEzZGZiMWQ0YTlkZjc1MDBkNDZjIHJlbGVhc2UyNi1tYWludAorNzg2MjggZGUwNmI1OWFhNDNjN2Y5YWE1OGQxYWNlZDhkNmQ2YWNlZDQ4OTZiOCByZWxlYXNlMzEtbWFpbnQKKzc4NjI5IDViYjI5NWE5NGIwZjdkMDRkNGEyNzgzNGJiY2FlMjBjYjE4NTM3OWMgcmVsZWFzZTI2LW1haW50Cis3ODYzMCBjMzU5ZDVhY2RjNGI1YjQwN2M4MGQ1OGQxYzJiMDJkMGYyNDU1OWRlIHJlbGVhc2UyNi1tYWludAorNzg2MzIgNmYxZTJmZmQ3YmRlODllMGFiZjNmOWRiYzkyN2Q2MDVjZDM4ZjllMSBweTNrCis3ODYzMyBkZmE3NDkxMTQwZDk0YzZlMWUyZTM0MDM0OWQ1MmNiMGM3MDkyNzYyIHJlbGVhc2UzMS1tYWludAorNzg2MzQgZGYwMjcwYmVmOTcxOGY0YjIwNDM2ZDNkNDI3Yzg0NmZhNmQzZjBmZCBsZWdhY3ktdHJ1bmsKKzc4NjM1IDg2Nzg1MzQyNDJhMDkzOGRhMTdhNmRhMjI0ZGRmODJlODc1ZmEwNjMgbGVnYWN5LXRydW5rCis3ODYzNiBiZmVhNmMyMDJlZGU1NzY3N2FjYjUzZDU0Y2U3ODFiMDE5ZDk1Y2IzIHB5M2sKKzc4NjM3IDYwZTdlNmQzZTQ1YTg5MDdiZTkxYTgwNzA1ZWExYWM0OTkyY2NjODUgcmVsZWFzZTMxLW1haW50Cis3ODYzOCA3ZjUwMDY0MWMwNmExZDk0YzczNTBiYjk5MjlkNTU1NTkzNzg3NmRmIGxlZ2FjeS10cnVuaworNzg2MzkgZGQ4NTI3Mzk5NTgyM2FhNjJiOGNkYTBlODMyNDkxN2E4YWI0MjA2MyBweTNrCis3ODY0MCBkN2E2MmMxNjUwNWIxMmNjYzI2Nzg0NjBkNDliNmViN2U0NzA4Mzc0IHJlbGVhc2UzMS1tYWludAorNzg2NDEgZDVmYmRhMDNjNjAzM2NlMWFlYTA0NWMxNWVkMjA2MGZmMzllZWYzZCBsZWdhY3ktdHJ1bmsKKzc4NjQyIDk5NDRlNTEwNGE1NTk3MDM5OTAzZjM4ZjhkNTQ5M2RmYzVkYWI3NWIgcHkzaworNzg2NDMgNzU5NTkyMWExNDc0ODJmMjEwNjBhYzFiNTE5NTYwMjk1OGM5ODMyMiByZWxlYXNlMzEtbWFpbnQKKzc4NjQ0IDQ2MWQ5Y2QxOTViNzNiMzA2NjcyNjg4ZjIzMDJhYjEyYmEwYWY3MGEgbGVnYWN5LXRydW5rCis3ODY0NSA3NzkwMGU3ZGVhYTU4NzAwNWRmMTJmMmVmZTQ4NGIwNmFmN2VlNWQwIHB5M2sKKzc4NjQ2IDI2MjY5ZGZjMjJhYjQ3ZTQxMTRlZDdkZGY0MTIwYTMzODVmMTdmMzggbGVnYWN5LXRydW5rCis3ODY0NyAwYjI3YzNmMThjYjM4NmY1NjI0NzdmMzRmZmI2ZjhmZTQwMTA4OWYwIHB5M2sKKzc4NjQ4IGZkOGZkZDM4ODk2M2E5NjIxZDhkYjVmZDA2OGZkMDZhNTIyOGUxYWYgcmVsZWFzZTMxLW1haW50Cis3ODY0OSAzMDJkYmM2YzQ4MDcxZWRkNDRkN2U1ZmFkMzZhMDM1MzZkYTI2YjQ5IHB5M2sKKzc4NjUwIGI2Y2FiMjFkODBiOTViNjdhMDVmMzA5ZTFjNWJkYmZlYmE5ZDI5ZGYgcmVsZWFzZTMxLW1haW50Cis3ODY1MSBhM2MwMDU2NmMyZDU5YzJkZjkxZTdjZDQ3N2QwNGQwZjQ1MDE2Y2I1IHJlbGVhc2UyNi1tYWludAorNzg2NTIgODQxMzBjMjI2NWRjYTZmOTIwNzJjOGE2MTMyODI5ZGFiMmZlY2U2ZSBsZWdhY3ktdHJ1bmsKKzc4NjUzIDI5NWQ1OWZhNmU2MmUxZDJjNTE5MThhZjNkOTdkNzhlNzI3OTNmOWEgbGVnYWN5LXRydW5rCis3ODY1NCBkYjRkYTFlZGYzNGY1YTI1MWY1ZDA0MTRiYzRiMDQ5ZTBkMTljMDE5IHB5M2sKKzc4NjU1IDZmYWNiYzE4M2E0YTFmZjdjYzZjYWE1YmVmYTUxNGZkZTI1OWJmMDcgcHkzaworNzg2NTYgOTg3YmEzN2E1NDk0M2FkNDM5NTM4MzBjNjliMDYxYWM2YjkxM2Q0MSBsZWdhY3ktdHJ1bmsKKzc4NjU3IGVlYTE1ZmIwMjQ0ZTJlYjU2MTNiOTkyMWUxNDRkN2ViZTQ5ODkwOWEgcHkzaworNzg2NTggOTUxZmVjMTk2ZWRjNzBhOWRhZGM0NjRiMzhkZGU2MzNkY2U3YmU5NiByZWxlYXNlMzEtbWFpbnQKKzc4NjU5IGY4MzVlMjgyN2QxYWE2MzAzYjcwNGM3OGZkYWE5MDBhOWZlOTRjZDEgcmVsZWFzZTI2LW1haW50Cis3ODY2MCAwMmFlZmM0MjU3ZGU3NmY2M2VlMGI2YzMxNjk3ZWEwZDY4YjAyZGU2IGxlZ2FjeS10cnVuaworNzg2NjEgY2U4YmU2NGIzNGE4YTZkMTNmNDRjNWViMjY1MjE0NjU0ZmZjMzI1NCBsZWdhY3ktdHJ1bmsKKzc4NjYyIGQ4YjJmYTg4Nzg4YjFmNmIzZDczZGVjYjJiNjMwNWFjNjUxZGM3NWEgbGVnYWN5LXRydW5rCis3ODY2MyAwNDk1NWU3ZWI1OTcwNmZiODYyMzAyNWY2MDQwZDE1MDUwZmQxZWFlIHB5M2sKKzc4NjY0IDMxOWU2MjE1YzU2Y2I5OTVlYmY4YWM1Yjk5OTliY2UyZWJkNWU5MjggcHkzaworNzg2NjUgNGRmMzNlODNmMjZmMTBiNTdiNTc0MTI5ZmM3YjIzMzlmZmQwOWE4OSByZWxlYXNlMzEtbWFpbnQKKzc4NjY2IGFkMjJiYzIyZGRkY2JlZjM2MTkxNjk2YTAwNDI5YzdhNjA4ZDUwMWEgbGVnYWN5LXRydW5rCis3ODY2NyAzNTc0YzVmZTIwN2M0NjYxMzM3Njg5Y2U1MDRkZDkxYTk2MzRhYmJlIGxlZ2FjeS10cnVuaworNzg2NjggNjliMmFiYjk1MzQ4NzdkZGQ2NTI2MmZhYWMwZmU1ZjI2ODQwZjA1NCByZWxlYXNlMjYtbWFpbnQKKzc4NjY5IDgxZGMxNzJiZmRhYmRjZjM0NTYxYjg4ZmNlMjVjOTk0YWUyMDc2MDcgcmVsZWFzZTI2LW1haW50Cis3ODY3MCA3NTU3MTViM2NmMjNhM2U5MDcyOTBjYmU3MGIxNzkxYWZjZTEwM2NjIHB5M2sKKzc4NjcxIDQ1YzRiNmQ2ZTJhNTM0Y2U3YmM2MmZhNWNiZGJhMjYzYjgxYmY5MzMgbGVnYWN5LXRydW5rCis3ODY3MiAwMjFjYjRmNDU1OWE1ZmFhYzRiZjFhNmU5YmI0ZWI4Yjg0ZDdjNDJiIHB5M2sKKzc4NjczIDViODE5ZWM0ZTIwNWZjMGZkOWQxMmQ0NmRmMDQ5YzA1NDk3YWIxZWQgbGVnYWN5LXRydW5rCis3ODY3NCA0MzJmOGJhNjczODE4MTJiNDdiZDhhMGFmZjY1YTA2ZGIwN2NkMDQwIHB5M2sKKzc4Njc1IGZlZjRlMjUzZTg4YWYzNWMxMmI3YmQyNDg3M2U2MDNiY2ZkZDdiNjYgbGVnYWN5LXRydW5rCis3ODY3NiAwZmNhMzk3ZDUwZjdmZTY0NDc0NjI3NjQ3NGE3NjQxZDcwMmI5M2M1IHB5M2sKKzc4Njc4IDdiNDhlYmFhZGI2MDAwY2ZiNTQ2ZjZhYTcyOGU5NDQ1NTc0ZThkZjAgbGVnYWN5LXRydW5rCis3ODY4MCA3ZTk2YjBiY2JhMjdlZDc5ZDk5NDYzM2UwMzk1OWVjZjVhMGYyN2RkIGxlZ2FjeS10cnVuaworNzg2ODIgMDE5NzU5OTE2YTliYTdhMjRjOTFkMGFiNzAzZDg0NjZlMzJiMjg3ZSBsZWdhY3ktdHJ1bmsKKzc4NjgzIGU1MDMwMzNlMzE0MzZiOTQ5Y2FkZTQ3ODlkMmRhMzZkY2UxYWEyYWUgbGVnYWN5LXRydW5rCis3ODY4NCA4MjQ0NjNjNDQ4OTg0NDA1OGQ3YmNjZDFlN2YxYjYxMWVhNjU5ZmJmIHB5M2sKKzc4Njg1IDdjZDdmZjZiMGFkYjI4OTEyNTgyY2UwOWZlZWFlYzJmYThhYThkYTMgcmVsZWFzZTI2LW1haW50Cis3ODY4NiA4Yjg2NGFhNzhlOTI1MTdhM2RmNDA5ZjZlZDZkZGU0ZDRlNWZiZGYzIHJlbGVhc2UzMS1tYWludAorNzg2ODcgYWU3ZjI2ZDI0ZTFkY2Y3NDk3ZmUyOWI3ZGY4YmQ1NzFlZDI5YWM3ZSBweTNrCis3ODY4OCAwNGQzYWU1MmZmNzMwMmEzODc5YmJiYjNiNmY0MjFkOTQwNTVjYzViIGxlZ2FjeS10cnVuaworNzg2ODkgMzI2MTk5OTZhMDE0OGM0ZDc5NjMxNjg4MWMzYjk5MGY3ZjE5NDczNyBweTNrCis3ODY5MCBjMmQ5ZDUwZjM3YzU5YjYzM2I0Y2I4YTk1OTA0YWI3OTRjZTUyYzYyIGxlZ2FjeS10cnVuaworNzg2OTEgOTFmYjM5NGMwNGQ2M2Q5OWZlZTJhY2RmOGM3MjZmZmIyMzc0YzVhYyBweTNrCis3ODY5MiA4MTQ3NzE5MmNmN2E5OWEyMjlmOTYzODdiOTZiN2ZhMGI1OWVlZjkxIHB5M2sKKzc4NjkzIGNlZDVmMWY0MTRiMDBjNjU0N2QzMzdkMmRmNDYwYjAwMGUxMjY3NzAgcmVsZWFzZTMxLW1haW50Cis3ODY5NCBmZDE1NWEzNjhmNWJkNDY1ZDY1MzEzMTc3MjA1YzAyZjY2YTFkMDlkIGxlZ2FjeS10cnVuaworNzg2OTUgODE3NTIyZTM1MmQ2NmY2ZDU0OGI4YjIwZTAxMzY2YWEyODA5ZWQ4NSBweTNrCis3ODY5NiAxOWYzMGI0MjJjYTNmZDE3YmE5NDQ4Mjc5Nzc1YjBlYjFmY2U5Zjg2IHB5M2sKKzc4Njk3IDUwNDgwODNlOTlmZmNlNDMwOTNhN2VkZjJmNTc4YjNmNjJlYWUwYTUgcHkzaworNzg2OTggMzAwM2MxNjU2ZTJhZGVlYjVmYWY1YmIyMDIwY2E2NTJjMzMzYmQzYiBweTNrCis3ODY5OSBiZjU4NmIyNzc2ZjY3Y2M4ZWNkM2Y5ZWRjNjE0YTU4OWZiMDVlZGNmIHJlbGVhc2UyNi1tYWludAorNzg3MDAgZWNjYTcwM2JjMGRmNGRiNDVlYmM5NTZjOGQ3MzIxODY2YTg1M2FjZiByZWxlYXNlMzEtbWFpbnQKKzc4NzAxIDMxOTdlY2MwOTQ0YTE3ZjU1OTQzMGJkM2E0MWNhNDhjOTk3YjcyNTMgbGVnYWN5LXRydW5rCis3ODcwMiBkOWU2ZjMxODU2OGZjOTM2M2EzNDZmNzYwYTAzNzA5NzA1ZDliNGE1IHB5M2sKKzc4NzAzIGNjNzBmNjhlOWMxMTEzYzk3ZmE0YjA2NzIxYjNjNDc3ZTMwZTZjZmMgbGVnYWN5LXRydW5rCis3ODcwNCA0NTRlZmY4NDBiZDQyMmFmMDlmMGViMjUwOTdjNTAxMGI1MDgzNWU0IGxlZ2FjeS10cnVuaworNzg3MDUgOGRjNDBjNjM3NjFjOGZkY2I1NTk0ZTUzNWRmNDFlMTQ1NDg3ZDFmYSBweTNrCis3ODcwNiAyNWU5ZGRiY2UxMGFiZTRmYmVlMzg5Nzc0ZjM0MjcwNDNmZjg3ZTQxIGxlZ2FjeS10cnVuaworNzg3MDcgMmI1MDhhYTJhNDM2YmM1NWIyNDc1NDU3ZTQyODNmNjRlZjNmZTZhZSBsZWdhY3ktdHJ1bmsKKzc4NzA4IDJkNWNhMjgwNWVhNWYxYmNkNzc0OGU2YTk3NDNjNDZjNGI3MjNjNzEgcHkzaworNzg3MDkgMzJhYzQyOGNkMThiMzQyZTRkOWI2YmI5Nzg5ZWNiNzhhZGNlMTljZiBsZWdhY3ktdHJ1bmsKKzc4NzEwIDIxNTYzOGZjZjA5YmEwODYzMjBkODFjYzY1Zjc1MGJiN2IxNjZjMGYgbGVnYWN5LXRydW5rCis3ODcxMSA1ZDViY2E2ZWNiMTUxODQyOTNmNTM0NDBmMGQ5NWI4MjJhMmNiNmYyIHB5M2sKKzc4NzEyIDVjMzE3Njc3NWU4NzMwY2IzZDdjMzA0Mjk4ZWEzODViNmRjM2M3ZjkgbGVnYWN5LXRydW5rCis3ODcxMyA0YTExOWQ4NGQwYjU3NTc0M2IwMTc3YmNmOTg2ZWExYjA4NWM2Yzk4IGxlZ2FjeS10cnVuaworNzg3MTQgYjY4YTlhOGMyYzFmNDlmMmMwMThjMTYxMWU5NWIyN2RkMmY4ODkzMSByZWxlYXNlMjYtbWFpbnQKKzc4NzE1IDY3NDMwODc1YzFhMDM2MzFhZWVjMTQwOGRhOTcwNzg1ZGUwYWY3ZjggcHkzaworNzg3MTYgYWE0ODUyNjQ1MWQxNzA1NmUxMDNmMTE1NDI4YTVkZDE3ZDBiMTBhOCByZWxlYXNlMzEtbWFpbnQKKzc4NzE3IDVhYTNiZmM0OGNiZGViYjhlZTViZTk4MzBiZWY4ZjI3MWJhMTU2ZDUgbGVnYWN5LXRydW5rCis3ODcxOCBiYjA4YTNlYzE1NGRhNzM3NjVlMTE0NjY1ODcwMWFjMjE1N2ViYWZjIGxlZ2FjeS10cnVuaworNzg3MTkgNWIxNzY0Mzc0NTQ1YTNmMmRmMTczNWYxOWExOGE3YjBlZDRjZTQ3ZiBsZWdhY3ktdHJ1bmsKKzc4NzIwIDk2NmViMWI5ZTlkYmMzZGJmOGRjZTAzNDViMzk4ZDFkZjY0NzY4NDIgbGVnYWN5LXRydW5rCis3ODcyMSA3NDQ0ZDM0OGQ3NzFmMGY5ODFjMzgwMzZhY2FlMmQ2ZGM4ODFhNjc1IGxlZ2FjeS10cnVuaworNzg3MjIgNDhhNmMyNjIxMjI2NWM1M2I2ZGZmYjdiYWM1NGUwOTRjNWZmYjA2MiBsZWdhY3ktdHJ1bmsKKzc4NzIzIDQ4NmMxYzllZTAwNmMwNjdhZWY0ZmI0ZDA3YThlZmJlZjk0ZTdlMTYgcHkzaworNzg3MjQgZWZlNTI4ZWU5NThhNmIyMWQ1ZDU4NTY0NzQxYmEzZTUxY2FiMGNjYiBweTNrCis3ODcyNSAyNGM2YTU4M2E4NjZhYzhkMjA1ZGEzZDEwNWNjN2JjMjkxMjczNGM3IHB5M2sKKzc4NzI2IDRjNWM1YjQ2NjhiNGE2YWQ0OGI2OGI3MDAzOWU3MTE5YjcwYTY0NWMgbGVnYWN5LXRydW5rCis3ODcyNyBmMzYyY2Q0YmQyYzUxYzZjYzA1NDkyNTI2NjY5MjdlNWMyMWQ0OGNkIHB5M2sKKzc4NzI4IDEyMGQ2Y2NmMjZiMDRlOTk0NjhjMTY0YTE4NGEwOGUwMmYyYzZmYTQgbGVnYWN5LXRydW5rCis3ODcyOSA5MjU4ZjQwNWE3YWM0NjZiNDg1NzJhZGEwMjNkOGRjOWU0ZGI4NzYzIHB5M2sKKzc4NzMwIDk3Y2E5YjE0YTY2MDdiZWM3YmZiYzY5ZTBiNTc5ODU2MTU2NmI2NDIgcmVsZWFzZTMxLW1haW50Cis3ODczMSBkMGJiYmYzYzU1ZjVlMDE1YzM5YTEwNTFkMGJjNDVhZTNjYzllYzViIGxlZ2FjeS10cnVuaworNzg3MzIgYmRmNmQ3NjhhOGNjNWY4ZmFkMDc1YzhkMzgzZDJlZDAwNTk3ZGZiNCBsZWdhY3ktdHJ1bmsKKzc4NzMzIGMyY2Y2YzcxNzBjNTE1MmIwNTI4MmI4YjM2NTljZDk1MjY5MzQxNGQgcHkzaworNzg3MzQgZWJkYzJhYTczMGMwYmQxYzI3MzcxYzMyZTc0ZTVjYTAzODgyMzg1ZSBsZWdhY3ktdHJ1bmsKKzc4NzM1IGEwN2Y3MGZjODJhMTEwMmYxYmI1ZGFkMmUzMTgzZmRlNDYzM2YzYjEgbGVnYWN5LXRydW5rCis3ODczNiBlOGMxMTg5MTU3NjJlNzcxOWY1NjkzOGFiZWU0ZmUwZWMwNTZmNjM5IGxlZ2FjeS10cnVuaworNzg3MzcgNWE5NjMxYjlkZDIyNzYxN2I2M2IyZjc2YzA3MDAzYWEyYzA4YTU4NSByZWxlYXNlMzEtbWFpbnQKKzc4NzM4IGQyZTEwMjdlZGRlODRhMDI4NTNmY2Y5NzkwZjMxMWYxMGY0NmNmMGEgbGVnYWN5LXRydW5rCis3ODczOSBkY2ZiYzM0YjJlM2M2YWI3OTllNmY2YTk1ZDUyMmM4ZjEzZjkyYmEyIHB5M2sKKzc4NzQwIGY5ZWE5MTdhZmYxM2YyYWFlZTMyNWQ4Mzg3YmNiN2E1YmNjYmYyMmQgbGVnYWN5LXRydW5rCis3ODc0MSAxNDliOGI4NzUxNGQxMDQxNmI1OTg4ODRkYjVmNzQ2NTFmNjI1YjM4IHJlbGVhc2UzMS1tYWludAorNzg3NDIgMjEyNDc4NjQwYjFjMjYzNTM1ZmQwY2JmYTZkN2Q1ZGZhODg0ZjdjNSByZWxlYXNlMzEtbWFpbnQKKzc4NzQzIDE2YTI2ZDQzNzRlNDZiZmM5NzdlZWU0MWUwODA0ZWI1ZjgwZDYwYmIgbGVnYWN5LXRydW5rCis3ODc0NCA0ZmE5NmE5MTM4MDg3MWI2OGUxYjg0ZTdhODc1NzhlN2ExMThiZTczIHJlbGVhc2UzMS1tYWludAorNzg3NDUgYWQyNTZhNmM2NTk5MGM4YTM1Mzg3YjBkM2M5MmFjMGZmOWMyMTA4ZiBweTNrCis3ODc0NiAzMTdkMGM0M2FiMmI2YmM4NjQ0MzViNDVmZjY1MGM1ZTM3NWRmMDJiIGxlZ2FjeS10cnVuaworNzg3NDcgZjczNTYxMTI3ZjU3ZTNlMjM4NzNlOWE1ZTA0MWEyYmNkYjE1NWQxOCBweTNrCis3ODc0OCBlNmQxNDE1ODc1OGUxOGI2M2FmNTJiZDBiNTkxNjcyYjI1MjQyZTI0IHJlbGVhc2UyNi1tYWludAorNzg3NDkgMDgwMmJjOTczYjMyNGRhMjUxYmNmZmMxM2FkM2E5YmY1MGZmYTYwOSBsZWdhY3ktdHJ1bmsKKzc4NzUwIGNlOTczYjVjNzc5ZjAzMDRhZDNhYTIwZTVlNjMyMjM0NWFiZmU1ZDEgcHkzaworNzg3NTEgYzE2YjM3YjE4OTFiMDBjMDY1NzkxNDIxZTFkMDM1N2UwYTIwZDY2MCBsZWdhY3ktdHJ1bmsKKzc4NzUyIGVlODgwMjgxNWJhZDJiN2ZmOWY1NjBmOTBhZmNlYzNlNWRmNzNhOTAgcHkzaworNzg3NTMgY2RlMjY4N2UzN2MxNjUwOTI2N2Y4MzUzNjk3MTg5MmIxNGM3NGZjMiByZWxlYXNlMzEtbWFpbnQKKzc4NzU0IDRmMDIxNzk0OTNjMjVkMWZjYmQxOTU1YzBiMDdhNGViMGU3YTg5ZjEgcmVsZWFzZTI2LW1haW50Cis3ODc1NSAyOTkwYmQzYWU4ODM4YTc2ZWZmMTlkZjkxZDBmZjdjNDBjZGU4MmRjIGxlZ2FjeS10cnVuaworNzg3NTYgNDlhMGE5NTBkMjE5YjIyYjlmNWY5ZGNhMDI3NWY5NDRjZmFjYzczMyBweTNrCis3ODc1NyBlMmQ0MTA3OWQwNTk2N2U1YmI2YTZmODdjYjk3MzA1ODg5YmE1ZmE5IGxlZ2FjeS10cnVuaworNzg3NTggZTIzY2JhMDNjYzRiMzNkOWUxM2Y1OGQwMjFiY2JjZjgwMThhYjJiZiBsZWdhY3ktdHJ1bmsKKzc4NzU5IDI3NDIyZDE3MzFlOWU0Njk2NDhmNjk2NjEyNzMwMzExMjhlY2E3MzYgbGVnYWN5LXRydW5rCis3ODc2MCAxNzRiMDg3OWI3ZDBlY2FjYjI2Yjc1M2ZiNmE5YTVmOTU5OTlkNjExIGxlZ2FjeS10cnVuaworNzg3NjEgNzFlNGFiMjEzNDZkNDFlNTA0MTEyODU4MjQ5N2E3Mjc4Y2IzNGZmYiBsZWdhY3ktdHJ1bmsKKzc4NzYyIGNmYjQ0MmQ3MDJjZDQ3MWE2NTAyYTlkMmZiNjZlOGFhMWVmNjc2NDUgbGVnYWN5LXRydW5rCis3ODc2MyAwYTI3M2NhMTBmYTVlNGRmZTY1NjE4NDlkZDgxOTkzNjg3OTJjNTJhIHB5M2sKKzc4NzY0IDRhNmJlODY0YzZiODliMTdjNjM2OGQ5ODM1NzBhYzkyZDQxMTM4NmEgbGVnYWN5LXRydW5rCis3ODc2NSA4NWM5NWZkNWQ3ZTNhMDQ0YTIwNDBjZDE1NTg1MWFhYWY2ODRmY2RkIHB5M2sKKzc4NzY2IGVkYWFmY2E4NzQzMWM3Y2RmYzE1OTkwMmM4NGEzOGNmYTE2NDNiNmQgcHkzaworNzg3NjcgYWI3Yzg3ZWQ1Y2FkZDA0YmE5M2U3OGUyNWNjN2MxMjg1N2IwMWVlMyBsZWdhY3ktdHJ1bmsKKzc4NzY4IGRhMTk4OTQ5NDZlMWY2MTJjMWVjNDA0NTY4MDQyMTZkMDk2NzVlNTIgcmVsZWFzZTMxLW1haW50Cis3ODc2OSBlNDVmZjAyNzQ4MmZlNDg3OTNkZDdmZTJiMTU3ZTQ2ZDI3NTg4NjZhIGxlZ2FjeS10cnVuaworNzg3NzAgOGYyYzM2MGQwMjE0YjUwNDUwODI3NjdmNjM4NGE5NThlYmEzMGYxMyBsZWdhY3ktdHJ1bmsKKzc4NzcxIDViMWRhMzJjOWQ0ZTJkNGIwZDg3ZDk3NzM3YmIwNDBjOGUwZDIyMjggbGVnYWN5LXRydW5rCis3ODc3MiBjNzUyMDY0ZmMyNjI3MjE0OWUyYmVhMDc1ODdjNWY0M2I0ZjEwYzVlIGxlZ2FjeS10cnVuaworNzg3NzMgMzdhODQyNDlhYTA0Nzc3YjE2MDRhZWRiMTQ3ZDk4ZWI2MmUxMTk4YyBsZWdhY3ktdHJ1bmsKKzc4Nzc0IDg1ZWE0NTRhMTNkY2RhMTM2M2RmYTYxNmE5NWFlM2RiYjFkNzIzZjYgbGVnYWN5LXRydW5rCis3ODc3NSAxMzFjMjEwOGQyYjFhZjk4N2VkODdiMmNlNDdhMTdhMjk5NjhhYzBiIGxlZ2FjeS10cnVuaworNzg3NzYgNDY2MDM4N2I5YjM1MjMzMTY4YjhmN2RkMDhkZWU2NzExOTBiMDMyYiBsZWdhY3ktdHJ1bmsKKzc4Nzc3IDQxYWVmMDYyZDUyOTMxZjVjNmU0MzM4OWFkMGJlMmM3MzM1ZDJmZWMgbGVnYWN5LXRydW5rCis3ODc3OCBkYTcxNDY0ZDJjZmYyMThlNTBmNjAxYjQ3MjBmYjk1NzczNzgyNTJjIGxlZ2FjeS10cnVuaworNzg3NzkgNTc1YjEyYjE5OGExNjQ0YTk5MWFlM2JlNzM3MzAxZDJhNTdhNWZiYiBsZWdhY3ktdHJ1bmsKKzc4NzgwIDBmNDY4ZTJkOTNkMGFkMWQwNjIyN2JkMTE2YWFhZjZjN2EyMDc3ZTAgcHkzaworNzg3ODEgYzY3NmZmMGQ4NDk1ZjU3ODc3YzRiNDY2YmE2MmQwM2Q0ODhhYTU4MSByZWxlYXNlMjYtbWFpbnQKKzc4NzgyIGM2ZWQzMzAzNWQ2OTJhZjA1NjJjYWQ5YjA1YmVhZjI5NDVhNDJkNDQgcHkzaworNzg3ODMgZGEzYzVlZmU0MjUyZGQyMzMwMDU1MGYwOTk2NDU5ODE4MzMwMWFmMiByZWxlYXNlMzEtbWFpbnQKKzc4Nzg0IGIwYjgwZWMyZTNhMGZlMGI3NWRkNDkwZGNmNDNiYjMzOWQxMzZiM2QgbGVnYWN5LXRydW5rCis3ODc4NSAzOWQ3MDQ3ODA3ZDUyOTVhNmQ0OGFkOTQzNDgzOGYwZGIzN2RmZDc3IHJlbGVhc2UyNi1tYWludAorNzg3ODYgNDQ1ZjgwMWNhMmQwYjQyOTFjNTJhY2Q3OTI3NGM5OGE4YTM2MjVhMSBweTNrCis3ODc4NyA1NWY2YTNkNWMxNzc5NTczN2FkNjk0YjY0MDI4OTEyNzAzZWMxY2RkIGxlZ2FjeS10cnVuaworNzg3ODggNjY3MTkzMmJkOGI4YmZkMjA4MTQ2NWRkYjY3YTY4ZWE3NWYzMTdlZSBsZWdhY3ktdHJ1bmsKKzc4Nzg5IGEzZjYxNzgzNTRmNWRjMWMwNzU0MzY4YjFiNzQ5ODBmYjU0YzdhODkgbGVnYWN5LXRydW5rCis3ODc5MCA5NmUwMDExZWEwYTQ0Y2E2YTk3NGJhZGI0MzE1YjA3OTIyZGM0NjdiIGxlZ2FjeS10cnVuaworNzg3OTEgMmFjNGY0ZjdlMzkxMTYxY2EwMjEzNzY2YzNlZTkzNmY0YmMzZjFlZiBsZWdhY3ktdHJ1bmsKKzc4NzkyIGEyZjFjMTVjYWU2YzQwNWUyMWU4NDE1ZmZiODM1NjM5MzYyYTY5M2QgcHkzaworNzg3OTMgNzMzY2NjM2YzYTY4MDViMTFiZjVkNjM4YmRjZTBkOGUyMTM5MGM4YiBweTNrCis3ODc5NCAxNDYxNmRmOTI0MDc5ZDExNTJkYWViZWJmNDgzMTRkMjQ3OGI0MWQ2IGxlZ2FjeS10cnVuaworNzg3OTUgY2RmZGVmZWM5OWFiY2RhMTRkY2RhYTdmNDE1MWU4MDVmODAxNjNjMiBweTNrCis3ODc5NiA2OGUwNTA3NjMyYTkxZjc5MDA2YmI2OGM0M2NmODg3N2VmNzQ0OWRjIHB5M2sKKzc4Nzk3IGFjODA4ODRkZGNjMzI2Njk0ODMzOTc0NmFiNjVhYzA1NGMzMDEyNWEgcHkzaworNzg3OTggMDI0YzUzYTg2NTIxZjkwYzAwNDIxMmNmNzc0OTAxNzAxYWI2NmRmZiBweTNrCis3ODc5OSBiM2U2NjczYjZhZTRkMWUwODgyZWFkZmY3MjU2Y2U2NTQzZGNmNTk1IHB5M2sKKzc4ODAwIGQ5Mjg3OGJiYTdiYmY3MGZlY2IzYmFlMzc0ZjcyYWFhOTA0ZmNmMDEgbGVnYWN5LXRydW5rCis3ODgwMSA4OTVjZmViZGUxNzI3YmE3ZDU3OThjY2VhYjJlYjBmYzk4YjZmMWRlIHB5M2sKKzc4ODAyIGM1NTdhNTRhZDZkMWY4N2ZhZWUwNDVlMDhiOWJlOTRlZmRiMzRjNzYgbGVnYWN5LXRydW5rCis3ODgwMyAxY2RhM2Q3Nzc3YWU3ZTNkNTVhYTBmNTYxZDQyMmQyZDJjNDU4Y2MzIHB5M2sKKzc4ODA0IGM4NzAzOTZiNmFlMWExMWE5NWE0NTc5ZDRjOTU3ZTdhMDkxNzdkNGEgcHkzaworNzg4MDUgNTlhMTU3M2I4M2FjNDZiMThlMTg0YzdjYjY5NjgzYWJlNWYxNjhhMiByZWxlYXNlMjYtbWFpbnQKKzc4ODA2IGYxMjY4MmFmNTU3YjYxYWE3ZTAzOTRmMTM0MjY1NWI1ZmIxNGJhYmIgbGVnYWN5LXRydW5rCis3ODgwNyAyYTRlOTJlZmYzMGE3NDJhN2VhNDU5Zjg4NDFmYjVjMzIwYjJjNDhkIHB5M2sKKzc4ODA4IGU0MjE1NWM0NzQ5NGFmZmRjNjViN2MzMDE5ZTg1NWUwMmJhNDdhMDMgcHkzaworNzg4MDkgODhkMjY1ZGU3ZGFlMjA2ZDBjZGJiYjIzNjljY2Q2ZDkyY2RlNjNhOSByZWxlYXNlMzEtbWFpbnQKKzc4ODEwIDJlZWY5YjBlYmQ1Y2RmOTU4NGZkNzFkNzZjZjE4YzA3ODRmYmM2MjMgbGVnYWN5LXRydW5rCis3ODgxMSA1NjY3OWFmYWYwN2RiMmFkODYwYTg3MDA2NWJlZmIzYTdlZDBlOGQ2IGxlZ2FjeS10cnVuaworNzg4MTIgMWY1ZGE1NWVlN2Q3ZjAwMjY2ODM5MDMzMzdhZWZlM2UxNDIzZDBmNiBsZWdhY3ktdHJ1bmsKKzc4ODEzIGUyNzYyZjQ5NTM5MzVlNTFhMDdlYzlkNjVkZDVmZDI4N2JhZTRkNmQgcmVsZWFzZTI2LW1haW50Cis3ODgxNCBiYmYyZWRkNzUyYjYzMmYwODk2OTczOTczZDQwNTU1MTZmNWUzMzQ3IGxlZ2FjeS10cnVuaworNzg4MTUgMjY5YTEyYTUwMTIzZjNiZDk0Y2E0YTllMmUyM2EwMDMwNjE0ZjhkZCBsZWdhY3ktdHJ1bmsKKzc4ODE2IDNjOGUyMDAwNDNkNjllODllOWJhNmViOWVhYzUyNDJiZTEzNTI5MDAgcmVsZWFzZTI2LW1haW50Cis3ODgxNyA1NWY0ZGU1ZTM3OGE4OWViOTI4OGM3ODY5YWFmNzljMWI2ZjI5NzE0IGxlZ2FjeS10cnVuaworNzg4MTggNjUzMzQzMDNmZGQzZmEyNjZjZDZiMGQ3OTUzMmJlYTcxZWYyYzZiOSBweTNrCis3ODgxOSA2ZDliZTFhOTdjMTcyMmU2YTkxZDZiMjE1MDJmMWVhNTBmOWY1MjEyIGxlZ2FjeS10cnVuaworNzg4MjAgZGZiMjM5YzUwMDg5MmZlYzk1NzdkNDNiYzgxMjRjNTNlODRjNGY0OCByZWxlYXNlMjYtbWFpbnQKKzc4ODIxIDlkZDFlY2I1YTI0YzFiNDQyMjc1MzM5YTAyZDU3ZmJmYmNjNmE4YjIgcHkzaworNzg4MjIgZmE0NjMwOTE2Njk5MDQ2MzU3YTVhYzE2ODg0ZjNmYzQ3YmQwZWFhNiByZWxlYXNlMjYtbWFpbnQKKzc4ODIzIDAxN2FhZmU4MzI2ZmFjNmVhMThkYzcyNWQzODEyOGU5ZGU4NjU3ODkgcmVsZWFzZTI2LW1haW50Cis3ODgyNCA1MzBiNzFjZDNiMjk2MTJlOThkNmJlMTA4MWZmNjgzZTUzMGMxYjFmIHB5M2staml0Cis3ODgyNSBiYzBjYzY3NzFjYWE3ODkyNDAyOTZkNzYzZWZmMjEwNTM3NDdhZjRiIHJlbGVhc2UzMS1tYWludAorNzg4MjYgNDQ2ODY2NmQwMWM0YmE1MWE2NzI5MDFmYzk3MTBlZmNkZTYyZjJjYyBsZWdhY3ktdHJ1bmsKKzc4ODI3IDU1NTFmZTY2NjcwYzI0NGQwZDQ1MGFmOWYwY2ZjYWJkNmI2ZmNhYWQgbGVnYWN5LXRydW5rCis3ODgyOCBhZGJiMzdkM2QwZTUwM2QxYjA3YmY2NjNiOTBmNzhlOTJjOGZlMTZkIGxlZ2FjeS10cnVuaworNzg4MjkgMTM1Y2Q4MDY0ZDZmYjg1ZTg0OWY3YmEzYzM5ZGE1MTgzZGVhM2JhNSBweTNrCis3ODgzMCA1YjRhNjZkNjAxYzNhNDQ2MzAyMzRlZGQ4NDNkNmYxOWY4ODc4OGMyIGxlZ2FjeS10cnVuaworNzg4MzEgMDUzZWY2ZTgzY2VkN2M1ZDM4OGU0MGQ1YjA1YzZkODYzMmM5MzA5MiBweTNrCis3ODgzMiBhZDhmNjNkOWRjZDgwMzQ4ZDFiZTc4YjZiY2ZlNjk1YTUxN2ZhNjIwIGxlZ2FjeS10cnVuaworNzg4MzMgNmUzN2UxMjc1ODFiNGMxMDMwYzljMDg3NDg5NTM2MzZhYjAzNTc4YiBsZWdhY3ktdHJ1bmsKKzc4ODM0IGExMTEwMjRhMGJjYjZjNzJkNDMwMTM2YTIzMTA3NzUzZmNhODQwYWMgcHkzaworNzg4MzUgOGIyNDZlODU2MGRiNWQwMWFlODFmOTlmZTlkY2VhYTFmMzZkOTRkMyBsZWdhY3ktdHJ1bmsKKzc4ODM2IGU1MzY3ZDY3YTdmOGFiYjc4NmYyOTUwZTg1OGFkYTA4OTExMGU1OWYgbGVnYWN5LXRydW5rCis3ODgzNyBiOGVkZTBmZWU2MWExMzlmYmZmNzkxN2EyODc0YjA2OTg4N2RkODllIGxlZ2FjeS10cnVuaworNzg4MzggODMxZTMwYzBmZDczMDY4NWFjZTI1MzRhYmIxZWE2ZmNiY2JhZTY3ZiBsZWdhY3ktdHJ1bmsKKzc4ODM5IDkwM2QzZTYzM2E5MjU3YzkzZDgzMWZjZDkwZjI2ZWE0NGQzNzNjYWMgbGVnYWN5LXRydW5rCis3ODg0MSAwNmFkMzJjMDM0ODY0YjZhZDg5NGNkZTAxMWY5YjMyMjlmZmFhNGI5IGxlZ2FjeS10cnVuaworNzg4NDIgOTM0NzM3OWJkNWZiOTdkM2U2M2U3ZTQzOWYzZDhkMTQwM2Y5NjYwZCBsZWdhY3ktdHJ1bmsKKzc4ODQzIGI2MmY3NmFkNDMwZTI4MDIyZWI3NjlmNzU0Mjg4NDUzMzdjNmMzNjMgcHkzaworNzg4NDQgNGRkMDhhNWNjYThhZDljNGE2NjU0NmYyMTIyZDgwYTJjMWJlMzZiZSBsZWdhY3ktdHJ1bmsKKzc4ODQ1IDIwMTYwYjQ2MWNkM2FlYjMwNDZmYWY5OWU4ZmQ0YWFhMzU1NjU1ZWMgcHkzaworNzg4NDYgZWY0OGU0OGYwNjZlOTk5MTU3MzU2ODJiMjlhNWIxMjNiMzRjZmQyMyBsZWdhY3ktdHJ1bmsKKzc4ODQ3IDNlZDk1NDkwYmE5ZDNkYzcyOGMwYTliZWY1NWYzNWI3NzY0YTM3ODAgbGVnYWN5LXRydW5rCis3ODg0OCA2ZWEwYTU4ZWQ4Mzc2OTA0ZGI5OTFiZTg1ODZjZmVhMDk1ODgxMDE3IHB5M2sKKzc4ODQ5IDQ5MTJjZjNiMDE5MGIzNmRhZTViNGFjYTc3MDYyNzc3MDY1ZGUxNjkgcHkzaworNzg4NTAgZmNmZTMyNDY2M2E2MTcxN2E0OWI1ODJkNDVlNDE3MjJlNWJjNzM0OSBweTNrCis3ODg1MSA1YzVkZThhY2IzM2MxYTUxMTY5MzBlYTg2MzlkZjhjMDI3ZDY0M2M5IHB5M2sKKzc4ODUyIDljMmQ5MTkwMTRkMDdhYWRiZTYxNGIxMzg4NzI4YTA3NWY0NzM2MWUgcHkzaworNzg4NTMgYTU2NmU1M2YxMDZkNjBmZWFiYWNhOTA0NTI5YWU2YjdkNWQwYTc4OSBsZWdhY3ktdHJ1bmsKKzc4ODU1IDEzNWFhN2VkZjc5MmI4Mzc0OWFmYTM5NDVmMzJhNzRjODc0NTg3NDcgbGVnYWN5LXRydW5rCis3ODg1OSA1Mzk0ZDgxYzQ1MTNiYWI4N2MyYTMyZDgxZDRiZTM2Y2E0N2I4OTg0IGxlZ2FjeS10cnVuaworNzg4NjAgNjJkN2YwNDk3MDNiNDgzMDU3OGJhMTBkN2RkNTA0ZmI1M2U5ODdmYiBsZWdhY3ktdHJ1bmsKKzc4ODYxIDkwMjdiMTVmOWJiNzYyYTU3NGViZjFkOGFkZmE0MDk1N2U2MzczMTAgcHkzaworNzg4NjIgOTk0ODcxNDUzMmY5MjExNWEwMDU0MDI5OWRlOWIxNGVjZTRlMzRmMSBweTNrCis3ODg2MyBkZDQ4ZTNmMzJkZTU1NGYzZWE2MzMzNTRiOWQ2ZDZkYmRmMGViYTRhIHB5M2sKKzc4ODY4IDIzNmZiMGFmNDQwNDk3MDk2ODNhYmI1MWRmMjA1ZDk2MDc1MWQxYmQgcHkzaworNzg4NjkgYjA1NmJjNzY3YWUxZWIxOGY5Mjg1YWNiMmQxNWFlOTYxMGY3OGQyMCBweTNrCis3ODg3MCAyNmIxOTgwOWQ4MmU4ZjM3YTYyNWIxOTQ5NDhkZTVlZWMyZDBmNDI3IGxlZ2FjeS10cnVuaworNzg4NzEgNjliNzFjMzM4OTkyNWIxMzY1ODhiMDA5MTIyMTNkMjkwNzdkYzUzNSBweTNrCis3ODg3MiA0MjI2MWM2Y2E1NjQzMDFmMmRlZmNiZjgxMDg1N2VkYWNiM2ZiNGJlIHB5M2sKKzc4ODczIDFiY2I0NjU0NzJiZTU5YTgzNmNhMzY0NGMyZmI2NzY1ZTNmNmYwNmMgcHkzaworNzg4NzUgZjQ5ZDI0YjQ0NTZlYzllOTQxYTI4NTNjNDAyM2YxMDJkM2ZmYzU0NCBweTNrCis3ODg3NiAwNmZkYzVlMGMyYzI0M2M4M2M1YmU5YTQ2ZmNkY2I4OTIyZGJhYTU3IHB5M2sKKzc4ODc3IGM5ZGQ4MjNjMTQ2ZDFiNmYyMmZmYzgzMWRlOGUwZDY2NDMxMWIxOGYgcmVsZWFzZTI2LW1haW50Cis3ODg4MCBhYzc1NGZhZWI2M2U4OGY1ZTExZGQyZWQwMTVlMDRiZDVmMmJmNDc2IGxlZ2FjeS10cnVuaworNzg4ODEgODJhMjMwNDcxOTRiZmQwNTg2YzNiZDY2MGRlOTFhNTE5ZWNmNDYyZiByZWxlYXNlMjYtbWFpbnQKKzc4ODgyIDA3YWRiMDk0NDBlZjg5NjY1MjQ4ZTU2NThhOTQyYTllMTExZjhmOGMgcHkzaworNzg4ODMgNmFlMDkwZmQ5OWZlM2IxMzMyMDcyNGIzMzU5ZDc3YTU2NDkxYmQwYyByZWxlYXNlMzEtbWFpbnQKKzc4ODg0IDI3M2ViNWMxYjliOTczNWFlNjNmNWY4YTBiMDM2ZDhhM2FhZWExMGYgcHkzaworNzg4ODUgOTAwZmNhY2M2NDAzNGExNzRjYTk0YzcxMjZlYzQ1ZDBjNTM0NTk0MyByZWxlYXNlMzEtbWFpbnQKKzc4ODg2IDFlMDFlZjk3NTg5OTlmNmZjZmZmMDE0NDdmYTBkYjczYTc3MTRiZGEgbGVnYWN5LXRydW5rCis3ODg4NyA3NmYwN2NjZDdkYjVjNzVlZWMyZmE2YmJjOTNkZTU1YWJjNTYxZmIxIGxlZ2FjeS10cnVuaworNzg4ODggNjcyNjQ2MzY0NmZiNDA4OGVmMzIzMzc2Y2ZjZjQ0MzIxZjlmNzUyMyBweTNrCis3ODg4OSA5ODA4MDhkZTMwYzkxZWYzNTk1MjhmNTcyNDQzMmJkN2FiOTZmMDQyIHJlbGVhc2UyNi1tYWludAorNzg4OTAgZTQ3NDM4NmZmOTZlODg1OWE5OTJlMzkyY2EzMDIwZWRkOTQ4YTNjMCByZWxlYXNlMzEtbWFpbnQKKzc4ODkxIGY4MDhiMTZjY2ZkNmFkZTMxYWQ1MzRjZjdhNTA3ZjhmMDIwY2VmZTkgcHkzaworNzg4OTIgZDZmMjA0ZDQwNjk1ZWJlZjYxM2FkNGZkZWQ3ZjFkMzRkNmFhMzFlNSByZWxlYXNlMzEtbWFpbnQKKzc4ODkzIGMxZmIwN2E1N2M4ZDY3OWEzMjdiODdiZTcxNDI5ODZjMjdjNjJkZDIgcHkzaworNzg4OTQgYzIxYjNlMzJlZDdiOGUyZTZhNTQxNDZlYjYxMzQ1Y2MxYTkwYTI3ZCBweTNrCis3ODg5NSA1ZGNjMzYxOWQ2ZDFkYTgzYTA4ZGQ0MDNiYzVkMzc2NDk0YzhiZTUxIGxlZ2FjeS10cnVuaworNzg4OTYgNjczNTNmYjQwNWVjOTJiZTEwOGQ1OWIyNTJmN2RjNGMwMTEwN2I4MyBweTNrCis3ODg5NyAyMmM4NzcwZjk5MjM5NmIzY2RhMWJlZWNiNDFkZDlmZWQ4NDZlOGY0IHJlbGVhc2UzMS1tYWludAorNzg4OTggMWVlMjQ1MmNlOTQyNjYxNmU1MjI2MDEzMzI1MGU0MWI5ZjcwODllMiBsZWdhY3ktdHJ1bmsKKzc4ODk5IGY0MGE4MDg1MjQ4MDM1YjE3MWIzZDZjNzMzODBlMmMzN2M4YmMzYzAgcHkzaworNzg5MDAgZTEwZDYxY2EzNjhlZGZhZGZjNmRiNTAzM2Y0YzdmZGRkYTFhYWVkMCBsZWdhY3ktdHJ1bmsKKzc4OTAxIDc3YzVjOTBiZWVmMDI4ZDhjOThkNDMwOWZmMDJiNmMwMzZlMTcwNGUgcHkzaworNzg5MDIgZjY1OTc3ZGNmMjFhY2FkMDNlMWU2NGI0NTQ2Y2VmNDI4Zjg5ZTJlNCBweTNrCis3ODkwMyA0ZmJmM2U3MDhmYzQwMWI3MTVmODkwZTFlYjliYmY3YzljYjNiN2Q3IHJlbGVhc2UzMS1tYWludAorNzg5MDQgYjNlZTVmZWQ4ZGE0ODEwNGZkNzllYTBjZjk4NGYyZmE4MGIwNzA4YSByZWxlYXNlMzEtbWFpbnQKKzc4OTA1IDgwMjgzNzA5NzE5MTc2OTI2ZTg0MmZiMTJhMjJkNDYzNTc5NzFjYjUgcmVsZWFzZTI2LW1haW50Cis3ODkwNiA5MGRhYTA3YTQzYmZlOTQ3YmQ1YzI0MTczNWU5M2M3YTg0NWUxMjlmIHJlbGVhc2UzMS1tYWludAorNzg5MDcgNWExNmJmNmRhOTg5MmY4NWRhY2IxMzY1YjYyM2I4ZjA4YjY3ZGM1ZCByZWxlYXNlMjYtbWFpbnQKKzc4OTA4IGYyNTVhNDZiMzE1YWY2Mjk1ZDk1MTc0N2QwNTcyMzU3NTQ2YzY3OTggbGVnYWN5LXRydW5rCis3ODkxMCBkYTk0ZjE2NjZkYTE4ZDE3YzJhOGM1N2I1NmUwNDI4NTk3NzYxZmFkIGxlZ2FjeS10cnVuaworNzg5MTEgNTVlY2RiNzljNjYwMmRkNmU0ZmVmYmZjMDRiYmQ5YjYxOWFkYjRlNSBweTNrCis3ODkxMiBiMWIyMmM2MDIyMmI0MDAyZWE3MGUzZjdjMGNjZTk1Mjg2MTZkZTVlIHJlbGVhc2UzMS1tYWludAorNzg5MTMgNDYwODIzYzY3NWY4OTM4YmIxZjU0YWU5ZTc1YzM1ODNkNTE3YzVhMCByZWxlYXNlMjYtbWFpbnQKKzc4OTE0IDQzY2E2N2JkNzAwYTY5ODEwM2E2NTJiYTIxNTBjM2ZjZGVkM2EzODAgcmVsZWFzZTI2LW1haW50Cis3ODkxNSBhZDAxN2QxYjgwNzJlMGZhODhkNjdiNjNlYWRhNDMwNjNjZTBmODBiIHB5M2sKKzc4OTE2IDVhNmU4OTcwNjRkNmJiMTkyMDg1OTFkOGQ1MDM0YTNlMGUyYzYxZGIgcmVsZWFzZTMxLW1haW50Cis3ODkxNyA2ZDVhYmZmN2ZjMzEzOThiMWRmYzZlYmRjMTFjYmZmMTdlM2VmNjEwIGxlZ2FjeS10cnVuaworNzg5MTggZDFlZGYyODI0MDA4MjVmMWQxNGIxYzhmZTcyYWVlZGNjZTNkNGI1MCBweTNrCis3ODkxOSAyN2FhNDZkMDIxNGFiYzAwNjQ0MTAwYTM5OGYxZjViNzFkMDM2ZWMwIGxlZ2FjeS10cnVuaworNzg5MjAgYTdiNThmMWU4YWYwODVkODc0NWRiODdjNmQxY2I0Y2E2MTk0ZGE2NCBweTNrCis3ODkyMSBiODc4YTBhZDRkOGM2YjRjYjY1ZGE4MmM2NWQ3NWE5MjkwYzFiNmU3IGxlZ2FjeS10cnVuaworNzg5MjIgNTFkMjZmMzFiY2U5NTUyYjYyMmNjZjVlMGRlZmY1ODIyZTVjNzFkNiBsZWdhY3ktdHJ1bmsKKzc4OTIzIGUxZDUxY2QzMTVkMDg1MzQxNmI2YTJkY2RkYmE1ZjI1ZWMyNDk3ZmQgcmVsZWFzZTI2LW1haW50Cis3ODkyNCAzMmM1YWQyOTY2M2NkZTM3NDJjYWQxMDliZjBlMGEyZWQzNDdiOThlIHB5M2sKKzc4OTI1IDE5ZTk2NjBkOWFhNTEyZmUzNDZiYTQyNGY1MzU1N2Y5MTY4M2VjOWQgcmVsZWFzZTMxLW1haW50Cis3ODkyNiBlODA4ZmM1NDhjZDY2NWM5YTYxNDJlNTA4Mjg3YjZhYWM0MjQxNzI5IGxlZ2FjeS10cnVuaworNzg5MjcgMDAyNmU0NDM2MmU1N2QwNGU1NDg1YjRiYTNkYTFjNDZjZmZmYjcyNSBweTNrCis3ODkyOSA2Nzc0ZThjNmMzOWYzODRjZTU3YjhmODUwZGRiNjVkZTI3NzExNmM1IHB5M2sKKzc4OTMwIDg1OTI5NmE3MDkyZjBjYmI2ZjFjMTJiZTEyZGNjM2VmYWNjYWQ0ZmUgcHkzaworNzg5MzEgZTBhMTc3MGRmNTI3ODYxMmVkZWM0MzNiNDExNWViODhhZTExNjQ4MSByZWxlYXNlMjYtbWFpbnQKKzc4OTMyIDcyOGVmMDA3MmRhZjIyZDg5ZjNjODMxOGZmYjhkODRiZmMyZDgzY2QgbGVnYWN5LXRydW5rCis3ODkzMyAyOTA5YTRjYjFiYTcyZjEzY2Q1MDM5ODQzNzRlMWE3MDk0MTAyNTgwIHB5M2sKKzc4OTM0IGFkYzM5MGU2Njg5MDQwMWQ3NjFmMTc3NGZjMDhiNTY3N2RlYWI5NWMgbGVnYWN5LXRydW5rCis3ODkzNSBjYzEzMjEyMTJlNzM0NjBjYmIxZTVlOWQ5MDcwMGY5Zjk2MWEzOTgwIHJlbGVhc2UyNi1tYWludAorNzg5MzYgZDZlMjdmYTIyZjQyYTI2NmM2NmVlYjYzOGQwNTZjYzAyZWExZjgxYiByZWxlYXNlMjYtbWFpbnQKKzc4OTM3IDVmZTVhMjZlMzE2OWU4OWNkYTk1ODBiYmY4OWYzN2ZmOTlhZDY3NTggbGVnYWN5LXRydW5rCis3ODkzOCBkMzkwNWE5ZjQwZjQwNTlkMmQ1Yjk3YjI1NzdkNTEyYzdmZmViYzM3IHB5M2sKKzc4OTM5IDBiNDU3ZjE0OTc2MWRiNmFhZjcwYzI4ZGUyNTA1YjBlZjI0ZTUzMGYgbGVnYWN5LXRydW5rCis3ODk0MCAxYTgxMGNlMTNkYmQ3YzQzYmM3YjczMjMzNzljYzQ1ZTFiNzUyM2Y5IHB5M2sKKzc4OTQxIDk2OTY5MzJhZDgyNzVlNzNmYTk3YzUwODBhNmVhYjExZTZjYWUzYTggcHkzaworNzg5NDIgN2ExOGMyNzYyODg2MTY1NDMwOWFkZGE0NDNhYWM4YjI3NjM4N2JlNSBweTNrCis3ODk0MyBkMzBlYjQyMmM1NjRiZjYxYTBjM2Q4MGQwODIyMWY5YWEyMDQyMTYwIHB5M2sKKzc4OTQ0IDQ2MWI4OWI5NTU1ZDBjYTkzMmM1OWY0MjEzZDFlMjg1Mzk4YjIyMzkgbGVnYWN5LXRydW5rCis3ODk0NSBmMDk3ZjJiYTIzMjkzNzI3MzMzYTZmYjk4ZTVhYzVjM2NjMTRlNjBjIHB5M2sKKzc4OTQ2IDc2ODcyMmIyYWUwYTU5ODQwNzkwZGUxNTAyNWRkNTc3YmEyMzNiYzcgcHkzaworNzg5NDcgMzcyZDFkZTg2ZGU5Zjg2MzBkZTY4ODZjOTc5MmU2MDM4YmM1NTk4YyBweTNrCis3ODk0OCAzZDY4MDk0OWY3NTVkODZiYTlhZTcxMjM0YjUzMTg1MDI0MGI3YWE2IHB5M2sKKzc4OTQ5IGYxMjcwZTAwZjU4Nzg3NmMzY2FmMWFlYTU2OTdmMGM0NDMwNDI4MWIgbGVnYWN5LXRydW5rCis3ODk1MCBkZjhmODFkZjg1OTVjZTVmOTRkNGI1M2I0ZDkxZjY4MTI5ZjY0NTQ2IHB5M2sKKzc4OTUxIDMwOGNmZjdkZjY0ZjE3NGVkZTg2OWEzNmFiYjkwZTBmMjQzNTc5NzkgcmVsZWFzZTMxLW1haW50Cis3ODk1MiA0MDNkMGEyN2JkNTZlZTU1MzY0YzdjZmZjNGFiODBmMGI0MDkzOWVhIGxlZ2FjeS10cnVuaworNzg5NTQgZTdmMTFmNDRkNTE0NTVmNDJjZjJlODc4ZGRjMTRkOGQ1Mzk2OWNiNCBsZWdhY3ktdHJ1bmsKKzc4OTU1IDc3YzcxZjI1OGRmN2NhNzVmODViNDk4N2I1MzU5NzcyNjM4NGE1ZmYgcHkzaworNzg5NTYgNWI3NTRlODgyODU3Y2ZkMWIzMzQ1ZjQzMTJkZDg4MjU5YTNjYThlMiBweTNrCis3ODk1NyBiOTNjZmFmY2RjYWQ3YzMzY2I5NTM2ODhkMGUxMTE1NmFkMzBlYmIxIHB5M2sKKzc4OTU4IDljZjcwMmM5MWE5ZThhZWY4NDkzZjNhNWY1MGY3NDViNjg1ZmIwYmMgcHkzaworNzg5NTkgZTdiNWZjODY0NmFiZmE5MDFlNzJhMzNhYzM5OGFmOWVkNTJlZDc2OSBweTNrCis3ODk2MCBjOGNjYjRlMGM2ZmVhN2QzZDAzM2QyZTdiZDQ2NTk4OGYyZTVkZjQ2IHB5M2sKKzc4OTYxIGM0NWYyMTcwNWVjYjc5ZTM0MWJmYjRjMzkzZjFjNTc1MjNiNTM2YjIgcHkzaworNzg5NjIgOGE5MDllNmQyY2FmYTc5M2VmZTQ3YmI0MTYyMzU1MDAzN2EzYWE2NyBsZWdhY3ktdHJ1bmsKKzc4OTYzIGMxNmUwNzU1ZmNkN2QwNzhkNDY1MTQ5NDY1NjZiMGI5NDJlMWM5NjEgcHkzaworNzg5NjQgYjU3MGM1YjliMmVmMzU0ODQzNjdlNTYxNDUzMDE5MDk5ZGI0YmFjMyBsZWdhY3ktdHJ1bmsKKzc4OTY1IDU5ZTIyM2EwNTY4MGZhMjkxYmZkMzNlMzEzMWM2NzQxOTc1YTAyMTMgcHkzaworNzg5NjYgZDM2MGYzN2E0YjU5NWZiOWEzNDUzMDU3NWQxZmU0NWU5NmQ3NjI4OCBsZWdhY3ktdHJ1bmsKKzc4OTY3IDhmMTk5M2I4NjZmNzkwMjE0ODAxYzBjYzE4MWQ0YjMwYWI3YjhjMjggcHkzaworNzg5NjggZWVmZDUyMWYxOWNlMDVmMzlmNzRiMDJjNzE5MmI2YmYyYTgwY2IwYyBsZWdhY3ktdHJ1bmsKKzc4OTY5IGJiMDZhYTkxODM4MjFkNDUyMjdiMzgyZjk3MjgwYWUwYTk2YjAyZDMgbGVnYWN5LXRydW5rCis3ODk3MCAwOGM1NDczYmVkY2MzOTNlZmU1NGYyZWNhNTFlMTFhOGFjMTExOThmIGxlZ2FjeS10cnVuaworNzg5NzEgZTFkZTA4MGM0NTU2ZDM5NTAwMDRiNjQzNDU4YmFhNGMwOTg5YWVhMSBsZWdhY3ktdHJ1bmsKKzc4OTcyIGI3NGYxYmI4OGU2MDk0ZjMzM2I4MmM3OGM2ZDVhNmJkYTIyYjFkNDMgbGVnYWN5LXRydW5rCis3ODk3MyBhZGI1ZTkyOGJkZTIwZjcyZTY1NjFlMGUwZmZlMGJjZDJmZTk3NTVhIHB5M2sKKzc4OTc0IDM4ZjJmNTI2MmIyMDNhZDU2ZjEwOTgwZDZhNzViNGFiMDg1MGFlNjQgbGVnYWN5LXRydW5rCis3ODk3NSAzN2FkNDBhMjhkM2JmNDBiOWM3MDIwYmU0ZGU5NDk2MWJhYWE4ZTIyIHB5M2sKKzc4OTc2IDk1ZjIxYjJjMjE2YzA4ZmRkOTZiMWZiNjUwOWIwZGNiMWQ4NjQwZWUgbGVnYWN5LXRydW5rCis3ODk3NyA4ZTM4YjdiZWY3MDAwNDJmZjZjZTNmYTBhZjk1OGI1MmUwMThlYzQxIHB5M2sKKzc4OTc4IGRiMzc5YTkwYjQ2ZTQwNDAyZDQ1MGIwNGZiMGRhY2I2ZmM2OTA1NjEgcHkzaworNzg5NzkgNzNlNDJjMGY1Yzk5ZTUyMWZkYmYxZTgwOTljNzBmYzNmY2I5MDIxOCBsZWdhY3ktdHJ1bmsKKzc4OTgwIGI4OTAwYTFkOTgzNTMwODhjNTEwYWIxNjEyNjVkYWY0NGY1NzRmOTMgcHkzaworNzg5ODEgYTJkYmE2ZmUzZmJlNWE4OGNhYTIyNDY0YWY1MzY3N2MyYjMxMDA2OCByZWxlYXNlMzEtbWFpbnQKKzc4OTgyIDhhYTU1MzBlODQwNzNkODhmYmFlYmQzMTc3ZTgyMWFlY2M3ODM5NzIgbGVnYWN5LXRydW5rCis3ODk4MyBlZWI5YmYxNTI1YmFjOGFhZGRjMzUwMGNjZTQ0N2M4OGExODgyOTZhIGxlZ2FjeS10cnVuaworNzg5ODUgYzE5YjRiZmI4MDZhYThjMTUxNWQ4MzdmMWQ5YzQ4MWQxODUxY2MxMiBsZWdhY3ktdHJ1bmsKKzc4OTg2IGM0ZGQzMGI1ZDA3ZWFjZmIzZWFlZDQ0N2U4NWE5ZTExNWM2NzdkY2YgbGVnYWN5LXRydW5rCis3ODk4NyA1OTkzMTE3OWM1ZTJjNTgyM2QxNjJkMjc2MGI3YmMyODU4YTdkNGE3IHB5M2sKKzc4OTg4IDc5ODQ1ZTNkNWNhYzIxZTVlYTM2NmQ4ZGM2YTExNDhiY2NmZDNlMmIgbGVnYWN5LXRydW5rCis3ODk4OSA5ZmZjOGYwNTE1Y2RlYzYwODRmZTVlZTJhODFkMzc1ZjA2OGRhNjgxIHB5M2sKKzc4OTkwIDkyM2M4NzM5Y2E4NjE3NGZlZjkyNDhkNjUwZTg0MDE3MzIyYTdiNjIgcmVsZWFzZTMxLW1haW50Cis3ODk5MSA4NTI3OTliYjNmYjEzY2MxYmE3NWI0ODE1MTM3NWY3MTM2MzE1MGI1IHB5M2sKKzc4OTkyIDQyNTcyZTM0NzEwOGEyZDFkZDc1Mzk1YTY3MDYzNjI4YjQ3ZjZjZDkgcHkzaworNzg5OTMgYjQ1MzNiNTgwZmM5ZWMxYTNkYTU1NWY1YWQ4MzhkNjQ4ZjEzZjcxZSBweTNrCis3ODk5NCA3NDUxNDAwMGY4Mzc1ZDY0Nzk5OWU1NmQ2MzAyM2ZmZTI4ZjllZTUxIHB5M2sKKzc4OTk1IDY2MWNhMGIwNWEzMWU3NTViYzMxZWIwYmEyMjc1NDE2OTI0ZmFmNTMgcHkzay1qaXQKKzc4OTk2IGJmNGE0YWNlZmIyZjg3MDhiMzg5MjY3Njk0ZDc5ZmI0MWMwZjVlM2QgbGVnYWN5LXRydW5rCis3ODk5NyBjOTY2ZTZmZDYxNzhiMTNkZDQzN2U2YzU4ZGJlYjZjNThlYzk4ZTQ0IHB5M2sKKzc4OTk4IDk1YjI2OWM4NjhkYWM5NDViMWFjZGRlYTZiNDQzZWVlNzI0YWZkMjQgcHkzay1qaXQKKzc5MDA5IGFhNjMyOTQzYjhiZGRhZDExMmVhNzBhMGU1ZWI0OTZhNTY5NGJlMjUgcHkzaworNzkwMTAgOTdiNjYyYjEwZmY4MzkwZTQxOTE3NGNjYWFiYWU2NDZlMTliZTc4ZSBweTNrLWppdAorNzkwMTEgMmUxNmM5NjM0MDFkZTAzYjA2OWVjNzkzY2UwMmEyMWE3MjY2N2I0YiBweTNrLWppdAorNzkwMTIgYmM2NWI4NmZhZTk0NjJlN2Q4YTZiZThmOTNkMTFiZDZlZGM3ZjBkNSBweTNrLWppdAorNzkwMTMgMTkwZWFkYWVhYmM1MmFkN2RmZDI1MzBkNzU2NmQxZTlhNjM3YjUyZSBsZWdhY3ktdHJ1bmsKKzc5MDE0IDBmMDgwOTYxZWNlZjEzMWIwNGYyMzgyZjQ5YTY4YTAwYmI2YjhmNzIgcHkzaworNzkwMTUgM2JlM2FjMDE5YmRiMDRlNDM5MGQxOTYxNzhiNzg4ZDFhZDVkMzcyZSBweTNrLWppdAorNzkwMTYgMjA2NGJmNjJhMzlmNzg2OGIzYzM3NDBhOTRkMDUyM2FmMTI5NWYyMyBsZWdhY3ktdHJ1bmsKKzc5MDE3IGJhYzcyZjExYTk4YzU2YzM2MDc4ZTJlZGUzMmIwNTFhNTgwODdlNTMgcHkzaworNzkwMTggMzBmMjgzMDM5ZTBlOTlhNzU3ZDA4MDMwM2UwMjg4YjFhYzQ1YTE1YyBsZWdhY3ktdHJ1bmsKKzc5MDE5IDQ0MDdhYzRjNjM2MGJlNDFmMGJlYWU3OTAzY2I0OTZmMmJlOTUxMGMgcHkzaworNzkwMjAgNThlM2JjMjFjMmRkNzAxZWI0MmE1NzVjN2UwYWIwNTYxZmQzOTMwZiBweTNrCis3OTAyMSA3MDY1NTlkM2FjNTkwOGVjYWE3ZDQ3MGQ4NTYxNjY1ZGUxY2Q5YmFmIHB5M2staml0Cis3OTAyMiA2OWMwZDVlYTJlMWUzYzNiNDcwZThlNDZlM2Q3OGYwM2Y4MjNhNmMzIHB5M2sKKzc5MDIzIDViODg4ZjU5MGZlMjRjYjIzNGUxMjZmYzRjZmJkY2ExMjdjYzdiZjEgbGVnYWN5LXRydW5rCis3OTAyNCA1ODI3ODBlZGQwZTg4YTNiYzY1MzM2NjllMDUwZTU3MDQ2ZTMyZDdjIGxlZ2FjeS10cnVuaworNzkwMjUgODAzOGFmMWUyMDY1NWViNjMzY2U2OGI0MTkwY2FhYzZmNDE0OGRjZSBweTNrCis3OTAyNiA4YTQ2OTNkNTE3ZmVjZjFhM2M4NDkxNTcwNzcyNDA2MzY5MGJlOTlkIGxlZ2FjeS10cnVuaworNzkwMjcgN2YxNjJhMzA5NDk3ODVkOGJlMTAxOTNkODYzODRkN2QzZTZkMGQ5YiBsZWdhY3ktdHJ1bmsKKzc5MDI4IDM0NjU4MmY4NWZhZjg4NDdmNWIyZjViMWQ5MWE4MmU1ZmQ2ODM1NGUgcHkzay1qaXQKKzc5MDI5IDEwYjc2MDZhOTNlZDAzOTFhMjMzNTVlYzM0MDNmOGVkZmMzZDFkZWEgcHkzay1qaXQKKzc5MDMwIDliNDYyNTcwMDI1MWI3NDAwNmNmMjQ1YWJjZGY2ZDAyZDg4Y2ViMWYgbGVnYWN5LXRydW5rCis3OTAzMSA3ZGYzZTEzZDNlNTA5ZTBmMmIwOTk4Y2M3YWM5OWJkNjcxNjdjY2E3IGxlZ2FjeS10cnVuaworNzkwMzIgNzQwOWI1YTdjODFhNmYwNjJmZTczNjc0ODFkMGY1NjE4MzBhN2RlYSBsZWdhY3ktdHJ1bmsKKzc5MDMzIDgwZGM0ZDEzMWQ4NWRkMzMxMjBmOWVhYWVkODM5ZjUxYWI2OGQyODMgcHkzaworNzkwMzQgYjg3OTIwOWMyMDJmZDMzMzg4MTAyYTRlMzQ5ODZhNTI1ZGY2ZDRhMSBsZWdhY3ktdHJ1bmsKKzc5MDM1IDUyNDc5ZTA0NTRlOTBjZmNlYzkzZTMzMmEyOTQ0YjA2NmViM2YxOTggcHkzaworNzkwMzYgMGFjMTkxOTBhNzEwZmE3NzM0Y2RmYzZmNGMzZDYzYjRmMzdmYjE0NiBweTNrCis3OTAzNyBlM2JlMWYxYWQ2MWVlMTE1MmVlMjNlYjlmY2Y2NDEyZjg5M2YzYThhIHB5M2staml0Cis3OTAzOCA1MzFkMzAyM2I0OGI3Y2VkMDM0OGZkMTA2M2JlODIwMmQ4OTIwYWVjIGxlZ2FjeS10cnVuaworNzkwMzkgNDM1ZmEyMTVkMzNmMDhhNjhiNjlkODVkMzAxZjI3MTAyZDAzZjJiNiBsZWdhY3ktdHJ1bmsKKzc5MDQwIGQ2MmNhMWVhY2NiOWRhYmY3Y2QxNTRjNTdkMzY5YTc2MTY2ZTg4MTYgcHkzaworNzkwNDEgZWEyNzhkOWMwYjJhYTMzZjM0ODgwYWM4MmRmMWIyMmJiNDljMWM2ZCBweTNrCis3OTA0MiBiMWFlNGY4Mzc3ZmI2ZTMxZTUwZGE1NGFmMmVjNGMxOTQ2M2NkOTVlIHB5M2staml0Cis3OTA0MyBmNzIyMGNhMTEzNjNjOWM3Y2EzMDM4YTU4NmI3NzIxNDViMTdkYjNiIHB5M2staml0Cis3OTA0NCA4NTU1YTRjYjdjNGNiNjM2ODRmNDQ5NGRiZGRkNmU4ZDliMzYxNjM4IGxlZ2FjeS10cnVuaworNzkwNDUgMTViZGI5NGM4MDU1Y2RlOWEwMWZiNzcwMmEyNjM1NmE3ZjY0ZDgwZSBweTNrCis3OTA0NiBiZmU5ZWUwMmY0YzA3ZTFjYjcxNmUwMmQ3OGEzMDA3ZjJiYTVhYzQ5IHB5M2staml0Cis3OTA0NyBhMWI2YTU0ZTJiNmE1MWM1MzU3ZDQzMDIxZjljYmFlM2ExYmNlNDc3IGxlZ2FjeS10cnVuaworNzkwNDggZDllYzRjOGNlNjk1NDJjNWZhNjNlZWQwMGFhNzU3YTllZDM4ZjBmYyBweTNrCis3OTA0OSA3NmY5ZTNiNmM1ODRlNDhjMWQ4YzlmNDIxMDlhYTYzNGFiMzc1NTRmIGxlZ2FjeS10cnVuaworNzkwNTAgNDg1ZmUyMGRhYjEyMWNiNDY5MTRkZjNhZmE1YTUzMDNiNDk2MTc0YiBweTNrCis3OTA1MSA0Mjk0NjJkNGNhMGMyMDBjNWQyMjNiYWIxNzY2ZTI5MDRkOTdjZjc5IGxlZ2FjeS10cnVuaworNzkwNTIgNDYxODNiZjRmMTQzNjkwNWE5NWI5MWE4OGYwZjliOTgzYjM4MjQ3YyBweTNrCis3OTA1MyA0NjU2ODQ2YTg5YjI2NzVhMjc1M2NkZTcxZGIzMTQwYzU4NjdhY2Y4IHJlbGVhc2UzMS1tYWludAorNzkwNTQgMmNmYTQ0OTcxODhmZWY0NTUwYjRkNWFjMGNjZTdiYTNlNjVhYzc0ZiByZWxlYXNlMzEtbWFpbnQKKzc5MDU1IGQxZGJlNWRmMTc5MWYyOTE4NmM3NTgxNzhmYTcwY2UzYjhjZGU0ZDUgbGVnYWN5LXRydW5rCis3OTA1NiA4NzEyNWQ3NjQ3ZDY4NWIxM2FmNzY2ODViM2M3ZDRhY2MyMWU2ZjFmIGxlZ2FjeS10cnVuaworNzkwNTcgZDdiOWUyOTQxZTE0NWQ3ZGRkYmExMzQ4YmViYzcwMzE2MDIyMDYyYiBweTNrCis3OTA1OCAyNWRlNzE2N2EwNTU4ZjlhMzYwMDIzODc2NDAzOTgzNjA0MWY2MDQxIHJlbGVhc2UzMS1tYWludAorNzkwNTkgMzQ0Y2I2YTRlZjdkYWQ3YmU0NzEzODVjNWQ5ZjMxNWIzMWU3MzAxZSBsZWdhY3ktdHJ1bmsKKzc5MDYwIDIyZjU4OWE4ZTNhYjk4ZTZhYWFkNjYzZjUxMGZlNmIwNGQxODFlN2YgbGVnYWN5LXRydW5rCis3OTA2MSAzZjRjN2M0ZWVmNjJhZjgyM2IyMmNiNmEzYTljZTVjYmMwZjc3NDUxIHB5M2sKKzc5MDYyIDAzODUyZWIwOGRiMTYxNDY4OGNhNmI3MTUwYTYxNThhMjhlNjJkOGUgcHkzaworNzkwNjMgOTlhZjRiNDRlN2U0OTAzOTA4MTdhNTk3YTU0MjU0NmQ3NDllNjk4ZSByZWxlYXNlMjYtbWFpbnQKKzc5MDY0IDE2YWFiMDJlZDk5YzY3ZWMyNjJiOTdhMjk4ZjMyN2EyMjJjNTkyZjMgcmVsZWFzZTI2LW1haW50Cis3OTA2NSBhNWRiMGRmMzIzODIwOTQzZDY5NGE2MGQ5MjM1ZmIxOWQ1NmQ0MWVlIHB5M2sKKzc5MDY2IDcyYTgwOWQxNjVmNDM2Y2M5MDhkYjE3ZDk5ZjlmZmEwYTM2ZGVlYTAgcHkzaworNzkwNjcgMTViODdlYTE0MTNkNmU4MDIwZDNjYzVkNjA3NmQzNGIyZTZiM2E1MSBweTNrCis3OTA2OCBlMTVhOGE0NzY0OTRiYjk0MmFkOGQ0MmEzMWY1MWIxMTM3ODYzMDQzIHB5M2sKKzc5MDY5IDRmMDlkNWIxNDc1ZmZhYzM1NjYwMzFmMDY3ZDc4N2RmY2E2YTJhYjggcHkzaworNzkwNzAgMzdiMWI5MGRlNWMxNTVkOTNiM2EwMjg1ZTIzZmYxMTQ3YmU5YzRjMCBsZWdhY3ktdHJ1bmsKKzc5MDcxIGVlYTcyYjgxYTIzYzY1Y2NiZjYwNWI4NmRhOWRkYzAyZjQxZWE0MTUgcHkzaworNzkwNzIgOTZlZmViZGE0ZWEyYzk2ZDMxZWI2Njg1YTlkZWNkNmExYmE2N2MzMSBweTNrLWppdAorNzkwNzMgZmJjM2YxNjkxYWQ4OWQ1YzQ4MzhhMjY1M2ZkY2E5MTZmNmFmMmZlMCBsZWdhY3ktdHJ1bmsKKzc5MDc0IDBiMWU1MjI4MDdmMmM3YjFkZDE3MWE3MDhmZjEzYWMzMjExMDliNGYgcHkzaworNzkwNzUgOTEwMzg1NWI4MjZiZDQ3NzcyNDQ5MDY2NjQwNzNkOTg5OWUyNDVhZiBweTNrCis3OTA3NiBiOGI0OWM4MjNmZTQ0NWJlOGQ4YmUyMmEzNWFmMTczMjA5OGNjYjVmIHJlbGVhc2UzMS1tYWludAorNzkwNzggYTBhNjdjMmZiN2ZmNmU0MDM5OTBlMGE5YjIxYTFlNGRhMDg4NzVhMiBsZWdhY3ktdHJ1bmsKKzc5MDc5IDhmYTEyODRjZTAwZTU5MDAyN2E0NGU1ZTJmNDYwODFkYTQxMmRiNzUgcHkzay1qaXQKKzc5MDgwIGRkMTJmNzg4YTU0NGRmNjZmMDkxOTA4N2Y3MWU1ZDM2Nzk5ZDlmZTUgcHkzaworNzkwODEgNDcxZDA3ZDJhMjNmNWVmN2VkMjhiYWE5MjQ5NmUzNWZmODBjMzg4NCBweTNrLWppdAorNzkwODIgYTI0MWU0MTU4ODgyM2U3MTFiZjFkMzk3OWZhMmY0NmJmZmQ1YzA3OSBsZWdhY3ktdHJ1bmsKKzc5MDgzIGQ5NDQxMTQwMzA5M2JiMGJjN2Q4MjllNjllNzM3NTQxODdkMjQ2Y2QgcHkzaworNzkwODQgNzdmODUzZmUzY2YyNjE0M2RlYTU5ODIzZThmZmZhNTA1ZDE0NmVlNSBsZWdhY3ktdHJ1bmsKKzc5MDg2IDUwZTA2YjZhYjk1NjVkZjY3YTJlZWIwZjJhNzM1ZWFjZDc1MTY5M2EgbGVnYWN5LXRydW5rCis3OTA4NyBkMWMzYWJjOGUwYzI5YzYwYzc2ZTY3NDliODJkNDE5Zjk2YmU4NTc0IHB5M2sKKzc5MDg4IDc5MWJhMjAxYmFhOTc3NmJmYzI4YzAwMjQyMzEwMmU1NzY1MGE1MzggcHkzaworNzkwOTIgNDI4NWVhMzNhNWRmZTUyMWZiYzAxZjZhYTE3MTQ3YTAxMTAwYjA1YSBweTNrCis3OTA5MyBiOWZmYTlmZDEwMWI1YjljNDljMDM4MmM2NTI0MTRiYjllM2FhOGYyIHB5M2sKKzc5MDk0IDhhMjhiZTQ1YzI0MjNjYmMxMDUwMTRlMWIzOGNhOWM1OGQ2MmY2NjIgcHkzaworNzkwOTUgNWZiZDljNjM4OWM3NTNhZTJjMTMwMzk1OWYwOTJiNmFjNTc4YjBkOSBweTNrCis3OTA5NiA0YjM1NmMxYjI1ZjY2ZDkwOWJhYzMyYzBkMTcwM2M4MWNiOWU2ZTYzIGxlZ2FjeS10cnVuaworNzkwOTcgMDBkYWE4YjczNmNjN2ZjNWI4MzFhY2ZiZThmY2FlOWZlNDRlNmU1NSBweTNrCis3OTA5OCBiNjM4N2Y0M2NkZGJkOWMzY2RkYWI4YTBmZTQ3OWI0Y2NmMDAxNDlmIGxlZ2FjeS10cnVuaworNzkwOTkgOTE0MzFiMDU4NDc4ZWMxODU4NjdjNzVjODgwNmQxZTcwNWFhYzIxOCBweTNrCis3OTEwMCAwN2M3NjY0ZjIxYTE4OTkxOTY1MTRjODUxM2MwMzdjMGQ2MjVjZjc3IGxlZ2FjeS10cnVuaworNzkxMDEgMjUxMmMyYWQ1ZGU3MDViYjYxNGFkZDJmZTYwMjI4MDYwNTZhYmQ0MiBsZWdhY3ktdHJ1bmsKKzc5MTAyIDQ1ODdlMWY3NGVkODVkMTI4ZTUyOGU3N2QzMWM2M2E0ODBiNWQzNzYgcHkzaworNzkxMDMgMmIxYjAzNzk3MThiNDlkNzcyYWFkMTYzNWM3YTY0Yjk0OGIxZDcwZCBweTNrCis3OTEwNCA2MzBjZTYyYzk0NmVmNDdhYzQ0MmZlZmNiZDBhNjczZjBlNTExMWY2IGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzkxMDUgODNhNzY4OWYxYmI1ZDMzMmFkYTk1NDNiZGFmNTUwY2ZlNTQwMjY4ZCBsZWdhY3ktdHJ1bmsKKzc5MTA2IDk5NmEzMTkyMGQ0OGMwOTA3ODFhNTcyZTBlOTQxZTA2OTNlYjk4NzEgbGVnYWN5LXRydW5rCis3OTEwNyAxOGY5NGUyM2NhODBhNjc0N2U1OWFmZDMzMDVlOTViNmRjNDYyNzExIHB5M2sKKzc5MTA4IDNmOTA1MzU5OGNhMGQ1N2I3M2ZlOTFjZmQ0MDM0ZmMzOGEyMTAxZWEgcHkzaworNzkxMDkgYThlMzk3NzlmZWRmMjRlN2I2MDYxNDhmNTkwOGY2ZjM2MDc1MzcyZCBweTNrCis3OTExMCAyZDY4M2I4ZTNmNTAyZjg2MGQxOTA5ZjNjNjRhMGIxYzkzNDY5ZmNkIHB5M2sKKzc5MTExIDQ3NDFmNmRkN2M2OWEwYjI5NDExMDNiZGM1NzY2NmExNDk4YjI3NjkgcHkzaworNzkxMTIgMjI0NTkxYmE2YTE4NGY5NGRjMjFkZWFiNWZmNzQ1NWJhMjEwNjVmMyBweTNrCis3OTExMyAxZTBkMThlOWY4YzFiYzg5YjI2ODdjNGE5Y2Q4MjJjYjliYjc3ZjJjIHB5M2sKKzc5MTE0IDBmMDBkYTY5MDRhNjU3ODE1MWFlZTIwMmFlOWFmYmRlZGJhN2Q1Y2UgcHkzay1qaXQKKzc5MTE1IDlhYjA3YWJlMjMwZGI5OGIxOGQ0NmZlMmFlMGFlMjhkN2Y5NGI2YTQgYnJhbmNoX2xpYmZmaS0zXzBfMTAtd2luCis3OTExNiBlNDMyMzNkODAwNjRmNTgzZGNiYTgxZjVlOTc2ZjEyMTI0YzI5ZjdiIHB5M2sKKzc5MTE3IDAyZTIxNTc2ZGEwMzc3MzkwYjRiYTlkMGVjNTJlODFhMjVkMGJkN2UgcmVsZWFzZTMxLW1haW50Cis3OTExOCBjM2M3YTNiZTQwYjM1NjZlMzFiMTI5NWFkYjRiM2YwMmYwMTU1ZWU3IHB5M2staml0Cis3OTExOSBhY2MzZTM1ODNmYWM5ODhhMjQyZjk4NWQ1NTQ1ZDg2MWEzZDJlMGJjIHB5M2sKKzc5MTIwIDlmZjEwMzVmNjIzNjVlYmYwZDhlYzU2NDczMzJlZmYzNTg2OGRiNDUgcmVsZWFzZTMxLW1haW50Cis3OTEyMSAzZDM4YzAwMzJjZWFhOTVmYmRmYWE5MzlmYTgzMDExNTM0Y2YyZDI3IHJlbGVhc2UzMS1tYWludAorNzkxMjIgZjBlZmFhYjA0MzgxOWFiNWZmN2QwMWY2ZmJkNDAzNjY3ZWM1ZjhjMiByZWxlYXNlMjYtbWFpbnQKKzc5MTIzIGZlNDExNTY5MmY3NmMxMDZjODliNmEyMzNjYTc0N2VjZWUxZjJkZjMgbGVnYWN5LXRydW5rCis3OTEyNCA5YWNiN2MxNTYwNzU4MTk3ZWY1MmU4ZDFmYjU5ZWMwOGZlOGQxZmQ2IHB5M2sKKzc5MTI1IGE1Zjc5NmZiNjFhMTAyNjRkYWMyZmIyMmRlNmM2ZDhkYzUwOTQwMDAgbGVnYWN5LXRydW5rCis3OTEyNiA3MDY5NTdkNmVjZGZmNTBhNzg5YjMwZThiMjk4MGE3ZTBiNGFjODI1IHB5M2sKKzc5MTI3IDEzZmY4NWIxMGRiMGU1NzM0MGU3N2M5OTRlYWE5OWFlN2M1ODNmZTMgbGVnYWN5LXRydW5rCis3OTEyOCA3NGJiMGY2MmIzMmU3YzcyZTZiMGZjYTA4OGU1MzJhMWZiNDg2NzdmIHB5M2sKKzc5MTI5IDEwOWM0ZTYyZWMyMzU3NzJmM2RhZmE0ZmMyNDI3YzI0NTdiNmQ3MWMgcmVsZWFzZTI2LW1haW50Cis3OTEzMCA1YTU1YTMyNjExNjQ0ZGE5Y2NhZDQzYWE2MzM4MTlmZDUwYjM2MjUyIHJlbGVhc2UyNi1tYWludAorNzkxMzEgMGUzYzEwYmNkYmE0MWQyN2IyM2RmYzk5YTFhOTk2YjdiMTcxMmE1OCByZWxlYXNlMjYtbWFpbnQKKzc5MTMyIGE2ODJiNzA4N2FjYmIzZjlmZTUzOGVkODk1YjdkYWZiZjg2YWE2NjggbGVnYWN5LXRydW5rCis3OTEzNiAxODAzNzRiZjJkNTI5ZGYzNDU0NDhmYmI5MDZlMGQ2ZjlhYTAwMGI4IHB5M2sKKzc5MTM4IDM3YzlhYjdkNDhmMWY0NzRmYmE5YmZmMWUzY2Q2OTEwZTgwNDdmNDIgbGVnYWN5LXRydW5rCis3OTEzOSA2NjUxZWZiNzVkOWVhMmE5YjZmZjU3ZjNhY2RjOGFlYmQ4N2UyZDlkIGxlZ2FjeS10cnVuaworNzkxNDAgZTA3NmU1NTgzNGQ5ZjIxMTMyYWFmZTY5NmU1MTc1ZmEzYTI4Yzk1YiBweTNrCis3OTE0MSBlNTIzYmMxYzMwMzQ0NDVmYzhiZjU3ZjljMjk1MGMxMjFkMjU4NWJjIHB5M2sKKzc5MTQyIGU4NjcyMDAzYWU4NGZmMTJhNTg4NGZiMTJmY2ZhZmU5NTlhNzE1NzcgcmVsZWFzZTI2LW1haW50Cis3OTE0MyA4NWNiZTQ0YjM5MjVmODMyYWRhMDcwMzk2YTkxNjZmNjA3MDIxMTk4IHB5M2sKKzc5MTQ0IDYzNTg2NTkyYTNhMDY5NTRlMDk2MDhlNTc3ZjdkYWNiN2Y5MTg1MzUgcHkzaworNzkxNDUgYTYxMmM4YjYxYjRhYTg0YTdmOGVmMzQwYmE4YTUzY2M1ODU1MjIzNCBweTNrCis3OTE0NiBmNzdmODUwMWRhN2ZhYjk0NDQ5NzRhMWRmNTE5ZmQ2ODc5N2JhMGFjIHJlbGVhc2UzMS1tYWludAorNzkxNDcgOTYwZWZhMzI3YzVkOWMxOGRmOTk1NDM3YjBhYzU1MGNiODljOWY4NSByZWxlYXNlMzEtbWFpbnQKKzc5MTQ4IDdjOTI2ODE0NjlmN2JiNDU1MzFhMzFkNTU4OTZkZDEzMWNiYzdjN2IgcmVsZWFzZTMxLW1haW50Cis3OTE0OSAzNTJkNjFhNjlmNTk1YmE0ODllOWU3ZTBiNGVhOGQ2NDI3YWEyMzk3IHB5M2sKKzc5MTUwIGVkYWQ5NDhiNGQ2NmZhYjMxYjAyMzRhNDE4MTJjMzk0NGUwNmIwZjkgcHkzaworNzkxNTEgNTU0ZTBmNDM1ZDA4YWJiNzA0MTVmYWJlNzVlMTgyNjhlOWE2MWZkYyBweTNrCis3OTE1MiA2MjIzYzNmZDYxZjA5ZDczMGZiODBiMDZkMzU2ZjdlODE0MzA5ZjRjIHB5M2sKKzc5MTUzIDhhOTIwYTg5MDlhMDhiZTM5MGM0MjgyNzA1ODljMmFlZTUyNjRiYWUgcHkzaworNzkxNTQgYWU5ZTEzNzQxMWYxZjM4ZjI3MjQ1NTRlMTlmNWFiYjgyNzI2MjdlZSBweTNrCis3OTE1NSBkODcwMGI0ZjFiOWY1MTUyNTA2YzZkYWU3YTM1MTU1YmY5NGFmYmU4IHB5M2sKKzc5MTU2IDRmNzE5YmU3Yzg3NTg1ZjViMTU3ODAzZmRiMDAwNGQwZWYwZGVjNTUgbGVnYWN5LXRydW5rCis3OTE1NyBlNjE5MDQ3YTJmMzY2MDhlYTk2ZmU5NDMyNWVlMjJlMWY4MmIyY2RmIHB5M2sKKzc5MTU4IGE5YTgwN2I3Y2Q0MzlmYzk3ZTQ0MDYwZTJmNDdmODEwMzQzMTEyZjkgcHkzaworNzkxNTkgMGUwNjMyYzU0M2U0MTQ0ZjIyZjMxZDViOTA4ZmNkYmFlOTRlY2YzMyBsZWdhY3ktdHJ1bmsKKzc5MTYwIDcxMWQ1MTczN2VlNmJlOWY2ZWNhZjRhZmI2YjA1OTJlNWY1Yzc0MDEgbGVnYWN5LXRydW5rCis3OTE2MSBkYmM1ODA0ZTgyODU4NWM0MjEwMzQzNDg5ZWJmODIxZjI4ZDFhOTcyIHB5M2sKKzc5MTYyIDZiNmZmZDUyNmUzYmU0ZWQ5OTkyMWNjYjk0ZDZlM2MwOGNhODdiNjAgcmVsZWFzZTI2LW1haW50Cis3OTE2MyBhN2I4OWYyYWMxZGE2YTVlMjQ1ZTc5M2UwYWNiN2FlOThhODg4NmIwIGxlZ2FjeS10cnVuaworNzkxNjQgZGNiOWY0MjcwNDQxYWY3ZWRiMGJhZGRmNmQ3NTkxYjA4ZDU4Zjc5YyBsZWdhY3ktdHJ1bmsKKzc5MTY1IGM4Yzg0MDE2MjgwNDlmOTdkOGE2ZGRmZjQ2YmQzMDAzZjgyZjgwNmEgbGVnYWN5LXRydW5rCis3OTE2NiA3ZGRjZjdkMjgzNmFhYzMyYTUzM2YxMDYzMWFlODFhMmY3OGNlOWE5IHB5M2sKKzc5MTY3IDM1NjYzNjZiODljZjE1OTk0MzA1ZTlkMTc2Nzk3MDM2MmI1OWRkOTEgcmVsZWFzZTMxLW1haW50Cis3OTE2OCA0YmQxYWMxMTMyY2RmZDUwNTlmNzhlZmZkNDUzOWQ3NTRhODJiM2VhIGxlZ2FjeS10cnVuaworNzkxNjkgZjA3NjZjZmY3ZjU5NjhlYWIzOGI4OTgwNDJlZTg5NzgyYjJkOWEwZiBsZWdhY3ktdHJ1bmsKKzc5MTcwIGY4NTdkNGVkMDc3NDc1OTM2ODdkYzM2NWNkOTllOGY3ZTliYmExY2UgcHkzaworNzkxNzEgMTBiZDFkMGY2MmRlMmRjODg1OTY2MzFhY2M5YzRmZjZiZjIzNmY2OSBweTNrCis3OTE3MiBlYTRlNjg5MjhmZjU2YjZmNTQzOTJjYmEwZTNjNDU2NGNhZmQ0MTdjIGxlZ2FjeS10cnVuaworNzkxNzMgMWFlNDc0YzljMzRlNmJjODE1ZmI3NzY1YWFhMzZmNWM2NjAzZjU4YiBsZWdhY3ktdHJ1bmsKKzc5MTc0IDJjOWUwYWIzZjBjN2VmZDkxZmNmYzM3YzIwOWU3OTQzYjQzNDA2MTEgcmVsZWFzZTI2LW1haW50Cis3OTE3NSA2YTEyNTRlMjBjODk2N2JlOTM4ZTllYThiOTM4ZTJiOTMyOTQyYTk2IHB5M2sKKzc5MTc2IGNiMGUzNzI2ZDkxZGFiMDVmNDVkMTMwMzI3NmY1NDliNTRhYzg3MGQgbGVnYWN5LXRydW5rCis3OTE3NyAzMWYwZDlmY2RiNDVjMTdlN2QwYmE2OTcxNmZjN2M3MWM2ODg4Y2YwIHB5M2sKKzc5MTc4IGFjOTYyYmM0MWU4NWZjOTMzYmY3NmJhNzYxNjdjZTkyMGZiNTA1OWQgbGVnYWN5LXRydW5rCis3OTE3OSBiYzVlMGQyZTE3OWQwMDg2ZWIxYzE2OWQyNDE0NDE4M2YyOWE2MTEzIGxlZ2FjeS10cnVuaworNzkxODAgNDU1ZWY3MDE1YmE4MDJkYTA4ZWU3OTYxN2I1NmQxMDlhMDJkZDQ1MyBweTNrCis3OTE4MSA5NTBjMTAzMGY4MTY0MDdmMWI0YjAzMTQzMDhjZDc0MDM1OTE4MWJiIGxlZ2FjeS10cnVuaworNzkxODIgNTc1ZWM3NzNkZGE0MGNmODgzYjZmMmVmZjFhYzdlZTczOWYxMDE5MCBweTNrCis3OTE4MyAyODg2ZjZhYTVlZjYxOWE0YmQxNjVlN2EzMzg1N2I2OTQ4YjA3ODJiIHB5M2sKKzc5MTg0IDQxNDA0NGRiZjM0Mzk0MzE2YTQzMDhmMGUwYzU1NTRmMmRjNWUxYTggbGVnYWN5LXRydW5rCis3OTE4NSBkNGZhMmVhYWI1ZmE4YTU2YzAzYjNmMDJlNGNkMjE3NWY4OWU1MTlhIGxlZ2FjeS10cnVuaworNzkxODYgYzExZjFjZWNiZWIzNWExODZlMjZlNmViYmI1YTNmY2U2MzAxNDZkOSBweTNrCis3OTE4NyBjM2I5YzMzMzMwMWM3YjdmNmY1MzAzYzY4Yzk5NTNlMjBjOTFlZWUxIGxlZ2FjeS10cnVuaworNzkxODggZTgyM2UyN2MyMjVlYWEwNjE3MzlhNjIwN2IxMTM5Y2IzMTk5ODI4NiBsZWdhY3ktdHJ1bmsKKzc5MTg5IGRkNjhlMDRlZTJlODYyMzQ5Njg2NjcwNDlhYTE1MDcwZGYyMzc4NDMgbGVnYWN5LXRydW5rCis3OTE5MCA2MjA5MTJmODMwODI2ZTk1ZWMwMDA4YmQ0ODY4ZTM4YTI2OGU5NDk3IHJlbGVhc2UyNi1tYWludAorNzkxOTEgOThlNDE2NjA1NzRjM2RlZDNhZjYwYThkN2ViYzM5YTA3MzAzY2ZmNiBsZWdhY3ktdHJ1bmsKKzc5MTkyIGRlZmFhZDIwMTdiNWNjMDg5ZTc0ZmI4ZjRiOTExMThjZTFhOTU5NGIgbGVnYWN5LXRydW5rCis3OTE5MyBmY2VmNGRhMzFlMjQ1YmQwMzA1MjAzZmMwMTYwYWQwNmZmYTM5N2ZmIHB5M2sKKzc5MTk0IDIyYzZhMjc2NGNhYjVmZjgwYTI3OWY0NmVjYzY4MDg4ZjljMzczODggbGVnYWN5LXRydW5rCis3OTE5NSA2M2YzYTk0ZjVlOWQ1MDU4NWY0MDk5MDZiNDQyYzI2N2Y5OTI2ODZhIGxlZ2FjeS10cnVuaworNzkxOTYgNDRmZmI4MDkyZWQ2MjkwMzMwYzU0MGVjMTgyMzEwN2EyOGVmNjQ0YyBweTNrCis3OTE5NyBiMjVkMTAyNGYzOTQ2OGU0MzliOTRjNmY3ODg3MDdlZTQ4MGFiYmMwIHJlbGVhc2UyNi1tYWludAorNzkxOTggYzZmNmJlNTMxN2FkMzYxOTZiYTBmMTBkOGUyMmVhZjlkNjdlZTU1YiByZWxlYXNlMjYtbWFpbnQKKzc5MTk5IDhlNDFmMTc5NGQ0NDk1YjhjYjIyNDZlNThmODAzY2IwZTRhYjBlYjkgcmVsZWFzZTI2LW1haW50Cis3OTIwMCAwZmI2ZDM0MjAxNmRkNWM4YTI2YmRmMjhkYjg3Y2Y1NDNjNTg2ZWJlIHJlbGVhc2UyNi1tYWludAorNzkyMDEgOGYxMjAyY2E4ODhlOTViYjI1ZjlkZjc0YjE1YmRjMmJiYmQ1NzJmOSByZWxlYXNlMjYtbWFpbnQKKzc5MjAyIDEyZTIwNzVkYmJlMGUxZjM1YzAwNzhlYWQ3M2Y1OWNjODk4YmM2NGUgcmVsZWFzZTI2LW1haW50Cis3OTIwMyA1ODEyNjNhZjU4MjBmZDFkNjRhYjdlMmI0NTE3NDUxNjU4MzcwNzQyIHJlbGVhc2UyNi1tYWludAorNzkyMDQgOGQ4YzliZjJhMDRlMjdmNTZjNmEzYWU2OWExOWU0ZDQ0OTg5YmM5ZiByZWxlYXNlMjYtbWFpbnQKKzc5MjA1IDY0M2JmOWZmMjI4ZmU0ODBkODBjYjIyYTI5MjBmNWJhMTRhMjcyNmEgbGVnYWN5LXRydW5rCis3OTIwNiBiOWUyN2RlODVlNGJjODY4Mjg5OWQwOGYzYjRmMjEzYTY3MWQ1MmE3IHJlbGVhc2UyNi1tYWludAorNzkyMDcgZTA2MmRkMzU3MTQxOTJhMzE4ZTljNTIxMGUzOTU3YWNjMzU4ZjJmZSBsZWdhY3ktdHJ1bmsKKzc5MjA4IDA5YWE4NzJmNzlmYzVmM2Y5ZTc4Yjg2ZTJhN2E2YzBhNTFmZmE3ZWQgbGVnYWN5LXRydW5rCis3OTIwOSBlYzg0ZmJjZGY3Y2JiNTE5NDE0YzQzMzQzZDA2NDFjMTVmMzgyOTIzIHB5M2sKKzc5MjEwIDkzZjcyMGU5NTE4YWRiZGRhNjgwZmIzZTVkZjk5NTc3OTc2MTRkZDkgcmVsZWFzZTI2LW1haW50Cis3OTIxMSBlZGM5MmJjZTRkNmUyZDkzYWJmNDUxYmI5NDU2Y2U5ZjNiZWI0OGZmIHJlbGVhc2UyNi1tYWludAorNzkyMTIgY2Y1OGI3MzMyMmY4YzRiMGJjNDI2NTFhNTA5MDY5YWZhMDdjZmFkMyBsZWdhY3ktdHJ1bmsKKzc5MjEzIDM4ZTliOWRhMDE2NDJlYmI0NjhiYmNlMDIzY2IyNGZkOGE0ZjJjZTcgcmVsZWFzZTI2LW1haW50Cis3OTIxNCA3NTk4NTE3YjEyMTgwN2ZhYjA1MDA0NTc1OWU1ZmU3MGMwODk0Mjc2IHJlbGVhc2UyNi1tYWludAorNzkyMTUgNjRhMDJiMTMzZTcyM2E5NDY2OTg0MDgzNzU0MmUyNjY5MjUzNDY2YiByZWxlYXNlMzEtbWFpbnQKKzc5MjE2IDllYWJiYTZkZWQwOTYyYjFhOGUxZTk1MzI0MjFkNDM2YTViZjIwNWUgcmVsZWFzZTI2LW1haW50Cis3OTIxNyA0NWQyMjg0Y2MwNjNkZTVjOTNkZDQzM2JkNWMyNzU5MmUzNzE4N2ZmIHJlbGVhc2UyNi1tYWludAorNzkyMTggNzY3ODExMzg1ZmE2ZmRmNzg2ZDZlZmRmYWZhNzVmYjJkZDc2NDEwMiBsZWdhY3ktdHJ1bmsKKzc5MjE5IGRiOTYxYmEzN2NmZTQ0NDY5YzY4ZTUyMmZmZmJlOTUxZWZhNmIyM2MgbGVnYWN5LXRydW5rCis3OTIyMCBlZjFmMzg4ZjQ4M2ZiODUwMDE2YTYwMDNkY2YxMGFhYjdmYzllMDdjIHJlbGVhc2UyNi1tYWludAorNzkyMjEgYzY5NDYxOGRhYjU0M2MyZjg3MGMxYTI2MDE2MWUxZDE3MDIwZTBhMCBweTNrCis3OTIyMiBjOTJjYThiYTFkOTc1MGY2NTk3MDcyYThmNTlkMWFiZTZiN2NkNjcyIHJlbGVhc2UzMS1tYWludAorNzkyMjMgZDEzOThmZjAxYTA3NGI0YzAxOTQ3ODc2YTY2ZGMwOThmMjg0M2ZmZSByZWxlYXNlMjYtbWFpbnQKKzc5MjI0IGFjMjMxNGI1Zjk2Mjg4MjU1NjkyNmY1ZTkxNzlkNzFiMTZlNjA1MTQgcmVsZWFzZTI2LW1haW50Cis3OTIyNSA1M2RiZDg5NmM2YzY5MmY0MjRjMTY1MjJmMGFiOTk4NDI0NTMzNDI3IHJlbGVhc2UyNi1tYWludAorNzkyMjYgMWJmNDhhNWRkZWFkNTM2MzM1NDE5YWUxNWZiY2QyZmQ4ZjE2YmU5ZiBsZWdhY3ktdHJ1bmsKKzc5MjI3IGY5NmM4MjkzZGQ3Zjg4ZDg3YmU4MjNmMDQzOTZlMzI2ZjNiNTc5YWYgcmVsZWFzZTI2LW1haW50Cis3OTIyOCBkYjk0YWVkZWIwZTA0YWExMWJlNGYxZDU2MTdkMTYxMWY4YmZlNTc2IGxlZ2FjeS10cnVuaworNzkyMjkgOWY2MTg3NTAwNjRlZWNkYWVkODZhNThkOWRmZTFlM2E4YWE3NWQ5NSByZWxlYXNlMjYtbWFpbnQKKzc5MjMwIDBkMWNkZDE0YzlmYTE5NjE4YmVhNWY2Y2RhZDI3OTlhYTk3OThmYjMgbGVnYWN5LXRydW5rCis3OTIzMSBhMGI2ZjI4NzExZTVlZTgzZTRhYTNhM2E1NmRlNWU2NzU1OTRhYzZkIHJlbGVhc2UyNi1tYWludAorNzkyMzIgMGMzNDQ4MjdlMDQ4ZjI2OTM3MmZlNjIzYjBkNDVlOWJkOTY1MTI1NiBsZWdhY3ktdHJ1bmsKKzc5MjMzIGM3YTYxNTQ0NjBmYmRhOWVkYjdlOWE3NzA4M2MwODU5ZjYxYTI5Y2UgbGVnYWN5LXRydW5rCis3OTIzNCA5MmYyNTYxNzQxNTQxYTQxODFiMGNkMGNiYTNjNGFmODJhNzIxMWIwIHJlbGVhc2UzMS1tYWludAorNzkyMzUgNjUxYThlNWM0NjBmYTlkMjBiODNkZWEzMGU0MWE4ZDNlYjM2MzExMSBsZWdhY3ktdHJ1bmsKKzc5MjM2IGMwNzNmM2MzMjc2ZWYzZGY0ZmFhYjhiYzkzY2ZiODkxZmZhOWJjMDIgcmVsZWFzZTMxLW1haW50Cis3OTIzNyBkYmFkMWMwNjY4YzlmOGNmZDgzNGM4ZjM5MWIyYjY2MmYyZDkzOTQ5IGxlZ2FjeS10cnVuaworNzkyMzggN2UzYjQ5MDg3N2NlY2RiYTY4Nzg0NThiNmJlNDA3MmFhZDZhZWRlMCByZWxlYXNlMzEtbWFpbnQKKzc5MjM5IGVjNmE5OTVlY2ZiZjgyNGI3MmJmNjFhMWVkMWVjZTk0NGM1MDYxNWEgcHkzaworNzkyNDAgOTcxNGY4YTc3YjE2MGZiNjFlYTM2OWRkNTBmMjQzYzdlM2Q2YTdkOSByZWxlYXNlMzEtbWFpbnQKKzc5MjQxIGJhYzhhMDQyNzBmY2YxNjNhYWIyMDRjOTI0ZGU4NDM2ODI3N2M4YjcgcmVsZWFzZTMxLW1haW50Cis3OTI0MiA0OGY0MGExNzg1Y2FhZjJmM2FlYTQ3ZTg1ZGE1NDdjMWZiZGI4OTU2IHB5M2sKKzc5MjQzIDQxYjIyNTA2N2Y0ZDEyODc2NTMwMjBjZGZjYTNhYjVmYjJhNTRhMDcgcHkzaworNzkyNDQgZDBiZGQwOTg1NjM3NDg2NmFkZTU1MGQ4ZTk0OTQ4NWM1NmMxMzFjZiBweTNrCis3OTI0NSAzODMzY2YzM2NhNjE3NDk3MTI1ZWE5ZWYyZjYxNmM5Y2E1NjhkMjA4IHB5M2sKKzc5MjQ2IDQyOTNjMzM2NjhkZjdkNjI2ZTM0ZjZiMDg4NjBjMzhmZGNmYjUwMWIgcmVsZWFzZTMxLW1haW50Cis3OTI0NyBjMmQyZTI2YmNmN2ZkMjVmZTkxYTQzZjFjYjg3ODM0MjViZjAwMDJhIHJlbGVhc2UzMS1tYWludAorNzkyNDggNjdmM2Y3ZTUzNjZiYzdlM2I5YzE1NmIxZmE3ZDM5YTQ3MDE0MGI4NiByZWxlYXNlMjYtbWFpbnQKKzc5MjQ5IGEzNjZkNjMxYTYyOWE0YWNhNjA3ZmY0M2ExYTk1NGQ2ZjNhY2NiYzIgcmVsZWFzZTMxLW1haW50Cis3OTI1MCBlMTZhMjdiNTUyYTZlMzQ0ZTVjNDAzNGQzMTg5NmJkN2JkY2VlMDczIHJlbGVhc2UzMS1tYWludAorNzkyNTEgZmJhY2Y5NzJmYTQ0ZTY5NTZhOTRlZmE1Y2EyZTIzMmU1N2Y0MTBiYSBweTNrCis3OTI1MiA3ZTZkNzE1MWZkZTg3NGNhNmQxYjNjMDMxMmVmODljZTUwZTYzNGY5IHB5M2sKKzc5MjUzIDJkMmYyMzg3MmQ5MGExMDAzMGNjYmRlNWZkMGViZDBmZGNjMTcxYmYgcHkzaworNzkyNTUgYzUzZjZhM2QyZDNiMGJlNDE3YzNhNTVlOWU3MzkxMTRhYWIzYzg2NyBweTNrCis3OTI1NiAxM2E0NDgwMTJhODRlN2QzMWUyODFhZGUwZjk1MGM1Y2NlMTJmOWRlIHB5M2sKKzc5MjU3IDgyNmQwNTQ2OTBjYjhkYTZhNTgzYzhiYWQ1NTVlYjc3YTQ5YTc0MDkgcHkzaworNzkyNTggZDliOGYyNzNhYjhkYTZkMTYwYzgyOWY4YTgzYTBkMDIwNmExMmVlYyBweTNrCis3OTI1OSA5MDIxN2E4NjY0MmQwN2JhZTAyNjU5YWIzZDIxN2FiZTk5NmMzMjNlIHB5M2sKKzc5MjYwIDdmODE2ZjZiNWQwYjA5NDA3NDE3MTBjNmEwZWRiZjNlNGExODk1NDEgcHkzaworNzkyNjEgNWMwOTJkNGI0OTljZjI3OGNmZWQzNTY2Y2FmNDk1OGZmYzU2NjBkNSByZWxlYXNlMzEtbWFpbnQKKzc5MjYyIDgxZGMwMjI5ODYxNGJhMTZkNTIxZWJmZjFiNTJlZWY0NTk4N2ZmMmUgcHkzaworNzkyNjMgMjg1OGNhZTU0MGU0MTFiODIwMTc0Yjk5NDg5OGZkYTE1ZTEyNTc5MCBsZWdhY3ktdHJ1bmsKKzc5MjY0IGY5MDk3Mzk2MmVhZjFjNDFjNDRlYzRhNzdlZmY0ZGQ1YzA1NTIzOTkgcHkzaworNzkyNjUgODRjYzEzYTE0NGZmYmQ1MjI4YTUwNjA2NjFkMmExYWZhZDlmOTg1NSBsZWdhY3ktdHJ1bmsKKzc5MjY2IGI0ZDhmYTRkMDA0OWMzYWQ2MDNjN2Y2MTQ4ODg4MzY3YTgzOThmMmQgbGVnYWN5LXRydW5rCis3OTI2NyA2NTdkMDJhNTAzZmE1ZDU2M2YwNmExYTg2NGFjOTFhYWYwOGQ3NzM3IHB5M2sKKzc5MjY4IGViMGZmNzEzYTVlOWMxNGVjODk3ZTBiNmRhZTI3MWMxNmI0MzdiZDcgbGVnYWN5LXRydW5rCis3OTI2OSAzN2MwZTI4ZDFhZDRlZmUzMTAwMDRkM2U5YzNkMGFiZDE0MmQzNGZiIHB5M2sKKzc5MjcwIDAxNjE5NjQ2NDljMzhhNjRkYTYwNzkyN2VmMzhlMzAwZTJmZmFhNDIgbGVnYWN5LXRydW5rCis3OTI3MSAyMjlmMjUyYmNlNzczNmU2NjQ3YzM4NjU2MjNlNTYwOTg4MTYzNGNlIHB5M2sKKzc5MjcyIDEwNmJlZTNmMWZlNTE2MzZlMTFhNmM2MDkzZTg1ZjJkMmU3ZmM3ZmEgcmVsZWFzZTMxLW1haW50Cis3OTI3MyA4YzNiMTIwZjI1OTYyZGVjMGE2ZDZlOTNhMTE0NmMxNjEyOWYxOTk0IHB5M2sKKzc5Mjc0IDNkYzY4ODJhNzI3ZDczYTY2ZDllNGQ2MmViYTZiYjg3NzBkMmI2NzggbGVnYWN5LXRydW5rCis3OTI3NSA3Njk4MWVlNTBiNDgyZmViMzdkYzgzZjk2OTg1MzA3MDIyMWIxNTMxIHB5M2sKKzc5Mjc2IDJkNjE3ODQ4MGNjNzEyNmE3ZWNjNGEyNjdiN2M2MmEzZTRkMzE1OWYgcHkzaworNzkyNzcgMzZlOWYzOGU4YTNjMmVlZjJlZjI2YWNjM2U0NTdiMjBjZTg1YTgwZSByZWxlYXNlMzEtbWFpbnQKKzc5Mjc4IDUyY2Y3ZTY1ZGFkMTRiYWIyNjFjODAwODM5M2U5ZTFlNDgwMmRkYjIgbGVnYWN5LXRydW5rCis3OTI3OSA1YjNhNjAxZWQyMDViNWI0MDNmYzM1MjE4MDk5YTM4MWRkY2FmMmUwIGxlZ2FjeS10cnVuaworNzkyODAgMmI2MWVlZDI4ZmFlNGU5MWQwYjlhNzk2NWU2MTgxNjI3NDFiNDNkZCBsZWdhY3ktdHJ1bmsKKzc5MjgxIDdhZDU2MjNmNDEzMjFkYjQ1YjU1MzdkNTAyZmJhMjQyMjM2ZGI2OGIgcHkzaworNzkyODIgODQ0MDVjMjJlNGM3ZmZkOTg5MTU1ZDhmNjhmYjAzMWVlYmI1M2NhMyByZWxlYXNlMzEtbWFpbnQKKzc5MjgzIDYxNTFkMDljZTAzOTQ5MzExM2RjZjllZDFlYzA5MTBmOTdjZThkZGIgcmVsZWFzZTI2LW1haW50Cis3OTI4NCAxNWRlNTM5MDcwN2RhNDQ2OTQwMTMxNjU3OTRiZjkzZGZhYWI3NTQyIGxlZ2FjeS10cnVuaworNzkyODUgOTZhMjQxZDRhMGFiMTcxMjYxOTUxZjQwNzM4ZWYxNTM4NWZmYzA4ZCBsZWdhY3ktdHJ1bmsKKzc5Mjg2IGUyYTk2OTNiNTU1ZWQ2ODUxMmM1NzQ1ZjNmYmRkNmFlZjE4OWQyN2IgbGVnYWN5LXRydW5rCis3OTI4NyA1ZjVkNDczNmRlNzRhZDZkZmUyMWU2YTEyNDY1MGUyZDkwZDgyYmZiIHB5M2sKKzc5Mjg4IDIyNGI3MGQzZDFkNDRlNTYwMGE4MDUyZTg2MDMwZTQ1MDEwNjIwZmEgbGVnYWN5LXRydW5rCis3OTI4OSBjOTM3NTIxZWQ3MDkyYTgxZjcyZGYyZThlZmNlMmI0ZjQ0MDM3NDI4IHB5M2sKKzc5MjkwIDlmYmUyMzcwZGMwMjE3YThkMzhjMDk5NzJmNjliNzdlNzRmOTg0NjcgcmVsZWFzZTMxLW1haW50Cis3OTI5MSA3ZjQzNWMzODVkYTI1YzRmNWNjODljMzNiMTc0OGZiM2I1YmRlZmJkIHJlbGVhc2UyNi1tYWludAorNzkyOTIgMDFiNTc1MTVmMTk1Njg0MDdiYTQyZWQ4MjEyYmVkYzllYTUzYTI2OSBsZWdhY3ktdHJ1bmsKKzc5MjkzIDgwNmE4Y2FmYzk5NzdhZjdmNWI2NzYzYzVlZWMzMjhhNDExYzhlMzggbGVnYWN5LXRydW5rCis3OTI5NCA2ZGY3OTlhMmMyNGU0YTI0NmUyZjg3MzZlYTNkMjJhNDViZDgxYzhjIGxlZ2FjeS10cnVuaworNzkyOTUgY2ZjNTc3MDJhZjdmZDk1YjlhMjU5YzYzYzc0NTE1ZTEzYjUyM2FmMSBsZWdhY3ktdHJ1bmsKKzc5Mjk2IDc2N2IwODMxNjU5ZTAyN2E2OWM2NjQ1YTUxNTBiMDM4NWJmMTFiMWYgbGVnYWN5LXRydW5rCis3OTI5NyBmMDAxNDU1NDE2NmY5M2MzYmQ3Njk3NzMwYWZkMmQ1ODlkZDY4NmU2IGxlZ2FjeS10cnVuaworNzkyOTggYjc4NzJiMGU4YWIyNDFlMzc5ZGQ0OTU3NzY2OGZlMTYwMzE4YWVmNiBweTNrCis3OTI5OSA3M2NhYTM2MWY5Y2RlMTRiYzJhODExNTM4Yzk2NjY1NzNiM2NjNDI0IGxlZ2FjeS10cnVuaworNzkzMDAgZTNmZGZkYjFhOGZmOGZjNmFkNjI4ZjBlOTg0MmM4ODlhOTY2OWRiYyByZWxlYXNlMjYtbWFpbnQKKzc5MzAxIDJlMGQ1OGFkYWRiZTBlYjQzOGE2ZDViMWJmMTEwZjBmZDdjZjA0MGUgcHkzaworNzkzMDIgMWRjMTg0MTJhN2VlNWYwMzdkZDFiMGJlZmU1NTRhNGJhMTdjYTlkZSByZWxlYXNlMzEtbWFpbnQKKzc5MzAzIDNjNGRmZTg2ZWMyYjY0ODI0YWViYjE1ZGQ3MjRjZjczZmZhMGQyMGIgcHkzay1qaXQKKzc5MzA2IDBhMTIzY2RlZDJjOTczYjdiMWZhOWExZmY4ZjUyYmFkMzFlNmEyNzcgbGVnYWN5LXRydW5rCis3OTMwNyA4MGJlZWM4ZmI3NDAzZjIwNjliMjBjYTIwOWI2MzQ2OTZlNGI1NGQ0IGxlZ2FjeS10cnVuaworNzkzMDggNWI2NzljMjQ5ZTNjMWNkNjcwZWJkNTUwZTc3MTFhNTg2OTE3N2E4MSByZWxlYXNlMjYtbWFpbnQKKzc5MzEwIDQ3N2QzNmU1ZDkxMzk1ZTEzZDQzMGI2OGQ4M2U4NTQ3ODA3YTBmZjEgbGVnYWN5LXRydW5rCis3OTMxMSA4ZjAxNmE4MDE2NDJmOWY5M2U4MmNjYWU3MDdlM2JiY2NhNjM1ZWM2IGxlZ2FjeS10cnVuaworNzkzMTIgZTAwZGQwNzA1NmFhZjM5NzJkYWM3Y2YyYmRmMjg2ZDAyZTdlN2VjMSByZWxlYXNlMjYtbWFpbnQKKzc5MzE0IDBmNDJmMzRjMTZlODJiMTBjMzMzY2RkYjJlODA2Nzc5ODVmYzYzNzAgbGVnYWN5LXRydW5rCis3OTMxNSA2NWZmNTI2ZTA1ZWJiZDU1MjRmZGE2OWFkNDJiYTAyNzZlNGIwY2NiIHB5M2sKKzc5MzE2IGNkOTg0OGNmMTg0N2FkYjFjY2I5ODUxMmM1NjIwOGZmOTBmODQzYzcgbGVnYWN5LXRydW5rCis3OTMxNyAzMjQ0ZWZiNmQ4OGY4OGFhZjFiZGY2ZDE2ZWU4Y2IyNGVlZDdjOTExIHB5M2sKKzc5MzE4IDU0MzU4ODA3MTNhNzgzZmE1YTY2YTNmMTJlNGFkODg3ZTRlYmYxNjcgcmVsZWFzZTMxLW1haW50Cis3OTMxOSAxNzgxNjk1ODg2ZGNlODg3YWE3MGQ3NDJlNzRjYTE5NGMzM2EzZjViIHB5M2sKKzc5MzIwIDY4NGNkNzM4MTUzNWE1YTIwOTFhOGM0Njk1ZGQyMDdiMmM1YmQ3MGIgbGVnYWN5LXRydW5rCis3OTMyMSA4ZTk5YjYwMDBmMGRmZTMzZDFkOWU1MjMyYjhhYmQ5YTlmMjI3YTI2IHB5M2sKKzc5MzIyIGE5ZGI1MWNmMWZiYzRkZWRkMzZmYWRmOTY1NzJkZDMxZDZhODg4NjQgcmVsZWFzZTI2LW1haW50Cis3OTMyMyBmNDI4ZjY2ZjdlOWJiNjZkMDkwODNjY2VjYjcxZjA3Nzk4YTk5MTAwIHJlbGVhc2UzMS1tYWludAorNzkzMjUgMTJlZTQ2NDM1ZDAxNzFmYTA5MGI4NzUxZjA5NzNhMmQyZjdkM2UzZiBsZWdhY3ktdHJ1bmsKKzc5MzI2IGZiM2RhNTZkNTQ4ZjBkMjg4MmEzMDdkNDQzZjhlMTQ3YmZkNzBhMWMgcmVsZWFzZTI2LW1haW50Cis3OTMyNyA5MmM5MzI0NjI1YjZhNWEwMDFjMGM4NjNlNmE4MjlmMzc4MmRmMjIyIHB5M2sKKzc5MzI4IDhlNzZlNDZjMTk5NDc1Nzg5MDZkN2Y0NGY2NzQxMWE3Zjk0ZDg5MzkgcmVsZWFzZTMxLW1haW50Cis3OTMyOSBiMDFlZmY0ZWZmZDdlZmE0MjU4M2Q0ZTAwM2UzM2Y4MmE5ZWZlOGUyIGxlZ2FjeS10cnVuaworNzkzMzAgZmE1ZTI5OWNlMDkxYzY3NmYwY2QyYWE3NmE0OTQ0YWZmNjBlNzAzMyByZWxlYXNlMjYtbWFpbnQKKzc5MzMxIGE3MDI2NDhjOGY0MTA0OTNjMmFmNDA2ZDAxMTM5YjJlMmRjMWJkZjggcmVsZWFzZTI2LW1haW50Cis3OTMzMiAzYmEyMzdhMzI2YzI3YjljYmVjYzMwNGRmZmM1NDc1ODMzMGViZDYxIHJlbGVhc2UzMS1tYWludAorNzkzMzMgNTZkZDVkNTA3MGE1YTQ1NDFjN2U1OWVhZGQyZmE1YWRiMzg5ODFhYyBweTNrCis3OTMzNCBiMGViOWY2ZjJkMTBiMWYzMjk1YjY4ZTM0NDFlYTZiYzMyMDQyYTdkIGxlZ2FjeS10cnVuaworNzkzMzUgZjIwZThiOTFmNmU4ZGE5OTJiMWYxYTc3Y2Y1NzQzZTc0NzRlNzNiOSByZWxlYXNlMzEtbWFpbnQKKzc5MzM2IDEwMjYyM2Q2ODQzZmM0OTFkMWRmZWUxNmYyN2YxOTkxZjdlODkxOTIgcmVsZWFzZTI2LW1haW50Cis3OTMzNyA2ZTFkYWQ4NTMwMDdhMmEzNGViYmYyZWY1MGUyM2Y4NzZhZDFkMjQyIHJlbGVhc2UyNi1tYWludAorNzkzMzggNjY1OTVkNDg0ZWE4ZDVmYzc3NjQwNjFkODI4M2YwNWExMDAzN2ZiOCByZWxlYXNlMjYtbWFpbnQKKzc5MzM5IDQ5ODZjZjBhOTFiOGU5Y2JjZjRmZWU2YjQ5NTI3MWNkZGQwM2FjNWEgcmVsZWFzZTI2LW1haW50Cis3OTM0MCBlOWI5NThlODM5MWJkMmUzNDg0YThhY2IxNzFhOWI2YjI0NTAxMzQ0IHJlbGVhc2UyNi1tYWludAorNzkzNDEgMTU1NmU2OTdiMmQ3MGIxYTM2MDRlMjYyYjEzODFkOWIyZjk5MzhkNCByZWxlYXNlMjYtbWFpbnQKKzc5MzQyIGY4NGY4Mzk2M2E3OGFkNjQzNDM4NmIxNjk1YmM0NGI1MTM0OTk5OTkgcmVsZWFzZTI2LW1haW50Cis3OTM0MyAyN2Y5NzI0NDY5OGVkYTA2MDkyNTM5NGNlZWUxM2M1NWQzZGE1N2FlIHJlbGVhc2UyNi1tYWludAorNzkzNDQgYjIxNGNhOGViNmJkMGFiZTVmMTFlMDNlNWY1ZjVlMTU0ZTg2MmI2OSBsZWdhY3ktdHJ1bmsKKzc5MzQ1IDUyZDg0NTgzMWFlODY0ZTAwZDUyZDJiOTA1ZWUyNTM3YjBmZjE3MjggcmVsZWFzZTI2LW1haW50Cis3OTM0NiAyODkwMDZkYzQ2ZWUyNGI0NjYyYmExNGFmOWYxODllNzIzYzAwZWI3IGxlZ2FjeS10cnVuaworNzkzNDcgODFiNzUwOTI0MDkxNmVkYzYyN2U3MTIzZDFkNmY1NTM4MTAyNzEwYiByZWxlYXNlMzEtbWFpbnQKKzc5MzQ4IDk4OGUwNDU3ZTMxMzM5NmNkNTE0NThhMGJjNGRmZGE1YjI5NjU1ZTUgcmVsZWFzZTI2LW1haW50Cis3OTM0OSA3MjAxMTgxMzYwZmRmMjdkMGQxNWM0MzU0Yjc1NTI0YTI0Y2ZiNzZjIGxlZ2FjeS10cnVuaworNzkzNTAgMzdkYTliYzQ2MTc0MmZjNGU0MDY4ZDg2NzNhY2Y5Y2ZiNjI5NTU5YyBsZWdhY3ktdHJ1bmsKKzc5MzUxIGNjOGUzNjk2MmJhY2U2YzUzOWYyMjVjMTEwODVlODMxOTY1NDAzYjYgbGVnYWN5LXRydW5rCis3OTM1MiA5NzYyODQ4NDllOWQ4MTQxMGNlMDY0YjE5ZWUxZmQ1YmZjYmQ2ZTQ3IHB5M2sKKzc5MzUzIGQ2MGJmYjFiOWMwNTJlNzNlODQwMzdlMWE4YmZiZDlhMTgxZDIzNjMgcmVsZWFzZTI2LW1haW50Cis3OTM1NCBlOTFhMDg2YjQxNzgzZTczNzRjZDU4NTliYjk4NmQ5ZDg0OWJiN2E0IHJlbGVhc2UzMS1tYWludAorNzkzNTUgNWFhY2M3NjgwZDNmNzJiZmYyYzYyNTVlN2U1YzliZDEyMWQ4NjlkNyBweTNrLWppdAorNzkzNTYgNDQ2OTY0ODJhYzQyYWJjZTZiOGU4YTQ5NDVhOWU2ZDg3MGZlYjg0NCBweTNrLWppdAorNzkzNTggMWU3NDFlYjMwYjE3MDRhMzUzNmQ4NjcxOGE0YzE2NmZkNGY0NjZjMiBsZWdhY3ktdHJ1bmsKKzc5MzU5IDY1N2U3ZDIxMzA1Mjg5Y2M0MDFiZGUyZTliY2Q3NDRhZWNmYWMzMmIgcmVsZWFzZTI2LW1haW50Cis3OTM2MCA1MDVjZmYxMjVhMDNjNjk5N2E4NTg3MjA4ZmVmOWIwMDc1ZDE2ZjM0IHB5M2sKKzc5MzYxIDAzMTZlNmEyOGE1NTM1ODcxYjNhYjdjNTM1OWZjNmJlN2FkMzBmZGIgcmVsZWFzZTMxLW1haW50Cis3OTM2MiBkZTg0YTZkMGU2OTcwYzBlODkwY2NkNTc5YWI2ZWIxZjc0OGYxMmEyIGxlZ2FjeS10cnVuaworNzkzNjMgNGJjOGY5NjUzZThlMmJkNzNhNzBkMTlhYWY5MjJlOTA1YTQwMjkwYyByZWxlYXNlMjYtbWFpbnQKKzc5MzY0IDU5OTNkYTZkMjQwOTUxNTFhMzE2MTI0ZmNhNzc0ZDViNWU3MjU2NTEgcHkzaworNzkzNjUgMTk1N2MyODk0MjkyNWJiOGRlZmZiYWViYTA0Mjc2NTZiZDY2NDllZiByZWxlYXNlMzEtbWFpbnQKKzc5MzY2IDAzZWFiOTk4YjA3YTE1YTI2NzhkYTRkMDg3YTg2NjFmZTEyNTMwYWQgcHkzay1qaXQKKzc5MzY3IDYyZmIwODZhMzk3NTgyYTIwNmZmZTA3MDVhNThiZGFiMGM3MDdiMjYgcHkzay1qaXQKKzc5MzY4IGNkMGNhNTZiNzg4MGU4YzQ1ZmE0OTY2NzA1MWRkNmRjNzljOTU1OGUgcHkzaworNzkzNjkgMjNkYTU2NjA3YjMzZmFlZjkwMmUyYTk0MjMzYzNkYmY0YjA3MmRmYyByZWxlYXNlMzEtbWFpbnQKKzc5MzczIGQ4Zjg1NTMzM2ZiNDhiOTg2NTIzMTE5YmRlZDQ3YjQ5NDNjNmU3MTYgbGVnYWN5LXRydW5rCis3OTM3NCBkMmRlYWE3MGZhZGI0NWNjNDAxNzQ5Y2RmNjk0YjEzMmFkMjFjYjZmIGxlZ2FjeS10cnVuaworNzkzNzUgMGFiZmEyNjA3ZjU0ZWI4NjU3ZTMyZGY1MzI5NDE1ZmQ4ZTJkNmZjMyBweTNrCis3OTM3NiA5MzRjYmU3MzY4MDM3MmNlMjg1NWEyOThmNzI0ZTE4MjI0NzhlY2VlIGxlZ2FjeS10cnVuaworNzkzNzggNTMyZDcxNDIwZjQ2MTU1ODUyNDRhZWRiZDkzYmM1NTdiMDkwYzVmZiBsZWdhY3ktdHJ1bmsKKzc5Mzc5IDIyOWVhOGNjYzU1MzA3NWM2NDQ3ZmFjMjY5ZGRiMzY2ZTE3MDY0YmQgbGVnYWN5LXRydW5rCis3OTM4MCA4M2ZhNGY4OTk1Njg4MmY1ZWIwN2NhNjUyNjg5NzBkZjRiODIwMWE2IHB5M2sKKzc5MzgxIDE3OWM2NDczODYzMzBiMThiZDIzNjY3NWE5ZWQyMGJmYTEzOTc2YjUgbGVnYWN5LXRydW5rCis3OTM4MiA2MjM4NWQ5YjdkYTA0MzhjODI2NmZhMjVlMDkwNDQ3MWJjMTI3N2Y0IGxlZ2FjeS10cnVuaworNzkzODQgNzQzMGZhN2VlYThjYjlmOTAwNDEzZTk1NDY1ZDAxYjUyNWZhZDFkMSBsZWdhY3ktdHJ1bmsKKzc5Mzg1IDRjZWI1ZGMzNWNjNjVhNjRmYTk0YmNhMWM3M2U2NDVmNGE1OTU4YTMgbGVnYWN5LXRydW5rCis3OTM4NiBjYWM2NjFkYjc3OTVmMTljNmJmMGI3ZjFmZWU3N2U5NThkNmU4Yzk5IHB5M2sKKzc5Mzg3IDQ5NmQ3NjM2MDc2Mzk0NWI2ZTEyYzk4MWI5YzU0MDRkMzFmNTRhZTYgbGVnYWN5LXRydW5rCis3OTM4OCAyZTA4MTNkNjczOGRiZjRjYWU2YWI5ZGMzZWE2MzY1ZDI1NWJiN2EzIGxlZ2FjeS10cnVuaworNzkzODkgNzI1MWU3MzdhNWQ4Y2FiZDZkYmY3MjRhMTRiOWYzN2ExYzczODg1ZSBweTNrCis3OTM5MCA5Y2FhYWZkNTk5ZDY1MzQzYjE0ZjAzZWIzZmUxNWIwNGMxMzk4OGRkIHJlbGVhc2UyNi1tYWludAorNzkzOTEgYzNjMzRmODQ3OTk4YTAwNjY1Nzc2MGQwNzZmYzhiZTgyNjg4ZTdlNyByZWxlYXNlMzEtbWFpbnQKKzc5MzkyIDRiOGRlY2I0NTcyY2Q3MDJlOGI3ODAyNTgyOTMzOTkxODEyMTczYzQgbGVnYWN5LXRydW5rCis3OTM5MyBlOGIwOGQ3NzNlNzg1Zjg3MmQyNWNjYzA4NmQ0ZDFhNDgwY2QxNWQxIHB5M2sKKzc5Mzk0IDAzMDk2MjA5MjM3M2U5NTQyOTVlOTBjMTlhZGRiNzg1NWMwZTk2NzggcmVsZWFzZTMxLW1haW50Cis3OTM5NSAyNDhhN2FkZTQ0NGZiZWY1NGYxNWI4YzQ1ODY1YzY3MTMwMDViMDFjIGxlZ2FjeS10cnVuaworNzkzOTYgZWQ5YTNkYmMzMTJlOWIwYTUyYjZmODJlNzIwY2RhZDUzMTAwY2Y3OSByZWxlYXNlMjYtbWFpbnQKKzc5Mzk3IGQxMWZiYzc5NjQ5OWEzMzhkMDQwMmI4ODlhOTA0ZGE5NTQxMzhjMzkgbGVnYWN5LXRydW5rCis3OTM5OCBkNjg5M2M3MGRmNmE0N2QxODFhYzU3YzNiNjg2ZTU1ODRkZDViYzAwIHB5M2sKKzc5Mzk5IGViMWI2NDY4ZTk3NzQ2ZjYzMDk3ZjJmODA2YTNjOWU5OWJlM2NkNmMgcmVsZWFzZTMxLW1haW50Cis3OTQwMCA1ZDU0NjkyYjZkYzNlM2UzZTlkNGMwOTY4Y2YyMmY1MDgzNzExNjNmIHB5M2sKKzc5NDAxIDA5YTdhMTllN2NiOWIwOTM4ZjAyZTA5N2VmNTdjNDE3MzUwN2U4MWIgcHkzaworNzk0MDIgM2I0ZTlmYTljMWU4ZGMxYTMxYTQ0Yzg5ZTc1Njg2Y2M3MjM3MTE5ZCBsZWdhY3ktdHJ1bmsKKzc5NDAzIDVmOWE3MDY0ZDYyYWEwMDU5MzYwMzAxNDUzZDg5MTIzNTg2NTBhYjAgbGVnYWN5LXRydW5rCis3OTQwNCA0ZWY2NWUyMzk2YWU5YTVlZWFjNDRlZDc0MjU1ZWRiOTc2N2RhMDlmIHJlbGVhc2UzMS1tYWludAorNzk0MDUgNGY4NDFkZjhjOTc2NmY5MzVlOTkzNzRjM2I0YjgwZTcwNjdlMTZkNCByZWxlYXNlMjYtbWFpbnQKKzc5NDA2IGU1ZGQ5Zjk4NjQ0MGM4ODJmYmY0YzBlOTllNzE3YTU4ZWYyZDhmY2YgbGVnYWN5LXRydW5rCis3OTQwNyAwZGZkNjIwNzZkZWQ0MWUyMDlmNTgzNDFhNjQwNzZmNTVlMTQ3ZTI5IHB5M2sKKzc5NDA4IGUxYTg0ZjIyMTUzN2QzYjM2NzUzODJmOTdjZTFkYWViNDI1NWM5YjIgbGVnYWN5LXRydW5rCis3OTQwOSAxYWE2ODQ2NzJjZTZmYTY2YjQ0Mzk5NTA0MzgxZjllMzI2NTIxNTBmIHB5M2sKKzc5NDEwIGUxOGQzODIwMTI4MDU3N2UxNDJmNDgxMzcwMjNlOTlkMzc3ZWYyYmMgbGVnYWN5LXRydW5rCis3OTQxMSBjOTljMzc5Y2VkMmZjMDVmMjk3MjdiYTI2ZjhhMDI4ZmNkZmUyYTFhIHB5M2sKKzc5NDEyIGQ2Y2E5Y2QxYjQxMWU2NTExMDExYTVkOTFlNzM4MmJiN2UxYTkwYzggbGVnYWN5LXRydW5rCis3OTQxMyA3MzI5MzEyZmNiZDdhNTI0ZGFiMDNiYmFiYmI1NmZkYjk3MGU3OGE4IGxlZ2FjeS10cnVuaworNzk0MTQgZmNjMTA4MzNhMWM5YjVhNWYwZWRhOTNjYTk5ZWM3Y2ZkODUxODYxNCBweTNrCis3OTQyMCBlMjc3MGJmMzJkY2Y2ODM5N2QyYzVjYmZkNmE1NjljMTc5OTA2YTZmIHB5M2sKKzc5NDIxIDkzODI4NGNkYTE1YmY1ODEyMjIwM2VlZGY3ZDkwMTdkNDdlMjQyMzMgcmVsZWFzZTMxLW1haW50Cis3OTQyNCAxNDQzMjcyNGQwZmU3ZmFhYmEwOTkyM2M3Y2UyMmFmOTMxZTA0YTBjIGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzk0MjUgZTZiOWVmNDllMzNmOWYzYjExZjY0Nzc5ZDdlNjhkNDg5Mzg5NTcxOSBsZWdhY3ktdHJ1bmsKKzc5NDI2IGUwYjhlY2EyMjUyOTM1OTY5ZTJkYjQ3ZWYxMGNmMzkxMGNkOWRlYmUgbGVnYWN5LXRydW5rCis3OTQyNyAzOGU0MTAwNTBkYzdjMTVkNWUwNGIwZmYyOGRmNzFkNTQzY2VmMjYzIGxlZ2FjeS10cnVuaworNzk0MjggMTZhN2QzMjYwNWJiODMyZGEwYjEwNTI0OGQ0ZTdiMzI5MmQ0ZTViNSBsZWdhY3ktdHJ1bmsKKzc5NDI5IDFhMGUyMTcwNjNiNzU0MjhjN2FkMjBkMDE4ODY5OGRiMDVmMTQwMDEgcHkzaworNzk0MzAgODcwMTU4MWZiNDU1MDYzNzM3YzliMTBlYWE2MzVjNDQzMTQ3N2E5YSBsZWdhY3ktdHJ1bmsKKzc5NDMxIDE4OGY4NjA3NTljMTQwNDg4Mzk2MGQzYzdmZjlhM2FhMTFhY2M0OWYgcmVsZWFzZTI2LW1haW50Cis3OTQzMiBkODE4N2VkOTQzMjU2MGUzNzNjNGFjOTI1MmQ3MDBlZjAzM2EyYzYxIGxlZ2FjeS10cnVuaworNzk0MzMgYjkwNzIyZDNhZWZhMGJlYmVkNjZmZDZiN2U1YzRkZDRiZDk3NzI4MCBsZWdhY3ktdHJ1bmsKKzc5NDM0IDgyNjM3ZTY2OGNhMWNjYjZiNDFjMGEwMmUxZDQwNDQ2ZjYzNjU2N2QgcHkzaworNzk0MzUgMDMwZDZiZjFkOTk1NmY3NzBmOTgxY2QyZmJjNmQ3NjUyYzc2MWM0YiByZWxlYXNlMzEtbWFpbnQKKzc5NDM2IDk1YTc4YTJkNzAwZDgwY2I4MDczOTQzNjhhMzdhOGVkOWFkNTRkMmYgbGVnYWN5LXRydW5rCis3OTQzNyA5NDIxZjY3YjZjMmExNDYwYjVhYWIzYTA0MDNlNjk0NGQ1ZjJkNTcyIGxlZ2FjeS10cnVuaworNzk0NDIgMjBiYWY2M2IwOTRjZDBiZDY3MjllNDE2MDZiZTNjMWJhNzliZThjNSBsZWdhY3ktdHJ1bmsKKzc5NDQzIDJlY2I4ZTk5NjBmYzNhODcxYjc1NDIyNjYwOGMwMzJmNzY0MjAzMjkgbGVnYWN5LXRydW5rCis3OTQ0OCBjOGVjYWJiZTgwMTY5OTkwNGIxMTUwMjc3NmEyNDE0OTQ5MTg1YmIzIGxlZ2FjeS10cnVuaworNzk0NDkgZTQwN2ViYThlMzhkNDQ5ZjgxODMyOTNiZTI5NTJhZDJiZGZmNjNmZCBweTNrCis3OTQ1MCBhY2IxZGM2NjhhOTdiYjhlNDMwOWY2YjE5YzNmNWU5MWRlZDA2MjkyIGxlZ2FjeS10cnVuaworNzk0NTEgNGJiYWZkZjRkNWMxYmViYjJhMjA2M2MxMGMxM2ZkYzgwNDQ4MGU4OCByZWxlYXNlMjYtbWFpbnQKKzc5NDUyIDY2MGI5ZjI0ZWRhYzhlMzcxNTk0OWU3NjQ2OWU4ZDU2YzM3MGUzMmUgcHkzaworNzk0NTMgNTI2YmIwODJjMDU1MjVjOTNmZmYxMWIxMjk5OGRlZDQ1M2IyYjBhZCByZWxlYXNlMzEtbWFpbnQKKzc5NDU0IDU2NDE2OTE1MTUxMGNmZTkxZmJlMGI4N2RiMjE3MmQzNzE0MTk3YjEgcHkzaworNzk0NTUgZTVmZTJmNjI1OTgzY2M2ZjNmMzFiZGM5OGYzMWJhY2IxNjI2NDdiNCBsZWdhY3ktdHJ1bmsKKzc5NDU2IDBmNmEwYjFkYjRlMmIxZWMwYjdjOTQ5NWFmMWVlYTE2MzJjZmM5MzIgcHkzaworNzk0NTcgYjIyN2RiOWEwMDI5NzQ0YmJjZmIxMjIwOGViMDc4NjcwZjkxMTEwMCBsZWdhY3ktdHJ1bmsKKzc5NDU4IDhjNWM1ZTg2ZmIyMjdhNjI3YjY4ZTBjMDc3ODM5ZWUxMTY5ZGE4MDQgcHkzaworNzk0NTkgMGU3YWU1M2I0ZTc5MDI0Y2NhZTZhMzNkYWFjOTdiMjY5MTU3Yjc5NSByZWxlYXNlMjYtbWFpbnQKKzc5NDYwIGU4MTFhYTA5NGYxOTQyOTU3ZTQ4ZGI2ODlmMjcxOGIyMjNhOWY5NzYgcmVsZWFzZTMxLW1haW50Cis3OTQ2MSA5MTcwYWE5NDRmMjkzMzQ1YmQ2ZjhkYTc2YzdhYTAxOWNhNGRlYjVlIHB5M2sKKzc5NDYyIGUxMTgzYTEzN2Q4Y2E4ZjRkN2IxNWE3NTFkNWQ2ODFhNDFmNGNkZTQgcHkzaworNzk0NjMgYWIzMDdmN2RlZmExZWM3OWQzYjZhNmQ5OTdhNTY1ODNlMjAzODEyYiBweTNrCis3OTQ2NCAyMjk0NmQwMGVlY2NlZjdlNDZjNzRkZWVjM2U2NTg4YWE2NDI5MDg3IGxlZ2FjeS10cnVuaworNzk0NjUgZjk2YWQ4MDA3MTJlZTYxZjRhYTEyOTBjNTk2MzgxMmNiNmU5MWRjNCBweTNrCis3OTQ2NiA4NmI3MWY0MGU4YWFlMjcwNGQwOGY1ZTZlN2NiNzJjYWIwZjRkOWJjIHB5M2sKKzc5NDY3IDcxYTQ1ZWNjNGRjOTExZWQwM2JhMjc2YjMyMGYzZGQ3YTNmMGUyYjEgcHkzaworNzk0NjggMzA5ZTJkM2U4ZGNjMjFhZTcwZDM0OGY1YjA1MGZlOGY2ZDliNmFjMiBsZWdhY3ktdHJ1bmsKKzc5NDY5IDhlNmExNjE1N2ZhZjFiZGY1NDRiNDU2NzU0OGUyZWRhM2Q5ZWZhOWQgcHkzaworNzk0NzEgYTJhYTZkZGZlOGUyOTU4YWNhNmU2MjMwNGY1ODAxNGEzYTkyMmYzMyBsZWdhY3ktdHJ1bmsKKzc5NDcyIGRiNWEzYTI3N2MwYjU4MGViZjUxZmM0YTMxOTIwMWQwNmQwYzU5YTEgcHkzaworNzk0NzMgYmIyY2ExYjYzMzIxYTc4YjQxMzM0N2FkOGY0Y2FiZTBlNGNlOTRhMCBweTNrCis3OTQ3NCA0MGY3ODdiMTUxYWM2YzA1MzVhNzM1NmUxZmQyNjQ1MWU2MzIyNjM2IHB5M2sKKzc5NDc1IDJiNjMyMTkxNWU5MmI2MWE2Yzg2OWU3OTc0MDhkNTZlYWQ5ZDYzYTIgcmVsZWFzZTI2LW1haW50Cis3OTQ3NiAwYmMwNDUyNWFmNjM4YmQwMDRiMTEwNDU1Y2ZkNTMyZDYzM2JkMTQ0IHJlbGVhc2UyNi1tYWludAorNzk0NzcgNjAwMDk2MzJlZDExOWY3YmRmMzk5ODVlNjcyYmQ1Y2E1OWQ2ZWM4MCByZWxlYXNlMzEtbWFpbnQKKzc5NDc4IDhlZTJiZjgyMWY2MjY3MTNmOThiYjQ5ZDdiYjVkMTA0NDM5MWU4YWQgcmVsZWFzZTMxLW1haW50Cis3OTQ3OSBlNjNkNDY3OGZjYTczZjI0ZDQyZTE0NzJmYmI2ZWFhNTY5MThlZDk3IHJlbGVhc2UzMS1tYWludAorNzk0ODAgYmI4YmQzMzU4YmNhMDJjZTVhNzAxYmJiNmE3YjY0ODFjYTAyZTgyYSBsZWdhY3ktdHJ1bmsKKzc5NDgxIGJlYTc1ZmY2NTExNDZkYWFkMDAyZDQxZDg3ODk3Njc1NmU1MmJkYmMgbGVnYWN5LXRydW5rCis3OTQ4MiBkNDkzNTI0MjZkZTUxMzMzZDM3ZTY2NTE0MThjZGZiMzAwMDllYTZjIHJlbGVhc2UyNi1tYWludAorNzk0ODMgMjEzYTBhZTJkYjY1YjJlMjUxOTllMDEwNWI0MmUwODA4MTliYzc2MSBsZWdhY3ktdHJ1bmsKKzc5NDg0IDJhMzEwYTQ0OGEwYTdlMjAxNDVjMmJjZDg5MWRiODY4N2IzMGFhMmMgcHkzaworNzk0ODUgNTFiMmFmOWM0NjllYjRhOTUzNmNkMDlkYjBiMjgxZDE1OTRhYmEwOSByZWxlYXNlMzEtbWFpbnQKKzc5NDg2IDJkMDZjNmM3ZTczMjdkZWJkY2Y2ZmFjZTFmZGQwOTVjZWVkODhmZGUgcmVsZWFzZTMwLW1haW50Cis3OTQ5MCBiYmIzNDA1MDFmMjlmYzBmMzM2NjA0MTM3ZjE1MzlhM2YwMTZkMzJmIHJlbGVhc2UzMS1tYWludAorNzk0OTEgOWI5ZmQyOTkwNzJkOGZjYzM4NDY3NWQ4OWJmODU0YmE1YTJhNjZhNyBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5NDkyIGMzYzgyZDgwNDBkNmY0ZWY2NjNiYmQ5MGE1ZTY1ZTg4ZGExMWVmY2UgcmVsZWFzZTI2LW1haW50Cis3OTQ5MyAwNGNjMDc1YmRkZjViYjk5NjNlZjUyMDU0MmFmNzc5N2MyZmI1MTdjIGxlZ2FjeS10cnVuaworNzk0OTQgNjZlNzU3ZDhlYTkzNGNlZWMxZDZiNzA3OTU5NGU2MGYzNDFkZWRhNSBsZWdhY3ktdHJ1bmsKKzc5NDk1IDc3MzlhZWVmZGJjMDE0NGM2OWRiOTc2ZjkyYTkzZTEwMzlhNzk2YTIgcmVsZWFzZTI2LW1haW50Cis3OTQ5NiBjOTZkMjc4Njc3YWYzY2QwOGQ4YmRjMGM0OGQ2NjJjZmNkYzgwM2UzIGxlZ2FjeS10cnVuaworNzk0OTcgMzMyOWMwNWU2ZTMxOTM3OWI4OGFjNDkwOTFlNDA1ZDc3YzE1NzIwYyBsZWdhY3ktdHJ1bmsKKzc5NDk4IGU0ZTRiYmQzOWEyMTNjY2U4Y2JlZDc5YTc0YTliMmUzMDc0YWNjMzAgbGVnYWN5LXRydW5rCis3OTQ5OSA0MGEyZTdhYzhhNDdlMjJhMDE1NjM3NWU5YTZiNjI1OGI5NzhiZWM3IHB5M2sKKzc5NTAwIGExNGEyMDVhYjFmYjg0OTAxZDViZTZlMWZjZDY1MTFhNGNkOGRjNjIgbGVnYWN5LXRydW5rCis3OTUwMSBiYzY4MTRjMzRkNWYyMGUzZTk1YTQ5MGU1ZGE0YTZmM2NhZTdkNWY1IHB5M2sKKzc5NTAyIGY2OTc2OWFiMGViODE2NjczNWU1NWQ2MzZkNjkxODljNDdmOTMyZjIgbGVnYWN5LXRydW5rCis3OTUwMyA1ZTBmZjY1Mjg0ZmEyMDg5YjA0ZTM2YzYxYjIxYTIyMzczNmMyMWU5IHB5M2sKKzc5NTA0IDFkMDAyN2QzNGE1MWUyMWM5OTIyODRlYjMxNTQ2Yjc1ZDkxYmZmYzkgbGVnYWN5LXRydW5rCis3OTUwNSAxMzYxODc3NTg1ZjJjNDkxZWJiMGUwN2U2YTA1NDBjOTJjMTY1YTYzIHB5M2sKKzc5NTA2IGJmM2M0OGYyNDE3YzQ0NzEzZDQzNDgwOThjMGFlMWE3ODg2MWE2OTggcHkzaworNzk1MDcgZGRkNTUwOTUxYjgzZmIxNzBiMDFkZTdmODhmMWI3MzNkMWE4NWE2MiBweTNrCis3OTUwOCA0ZGQ2ZWI2YmU4MmZkNTJmMGJlNzY4ZmQzNmU3ODUyMWU4NGMxYThiIHB5M2sKKzc5NTA5IDYzMjY5YzQxODVjNTJlNjlkNjU3ZjJjYjBhYzQ1Y2YxYzQwMTMzMGYgbGVnYWN5LXRydW5rCis3OTUxMCAwYzAyNTg0YzRlNTM0ZmU3ZjM4NWMxODFmNDYzMDBmMmQwOTYzNWNmIHJlbGVhc2UzMS1tYWludAorNzk1MTEgYTYwOTU0ZWI1MThiOTg0OWE5MjczMjQ0ODAyZGIyMWUxMjMzNWM1MiBsZWdhY3ktdHJ1bmsKKzc5NTEyIDk2NTFjODRjNTIwZDllOGJhNWRjOTMzNDVlNWVmZWE0ZTZjOWU1ODEgcmVsZWFzZTMxLW1haW50Cis3OTUxNCA2MGY5MTI0ZmRlYWMwNTEwODlkZWQ4MGUxZTgxODRlMjliYTJlZjk1IHJlbGVhc2UyNi1tYWludAorNzk1MTUgNDE5ZmY3MDI0NDc4Mzg5ZTBmZjUwODZlYmU0ZjVhNDZhYzFlYzk1OSBsZWdhY3ktdHJ1bmsKKzc5NTE4IDM0ZDgyMjE5NmQ4YmQwZDZhYmQwODYxOGI5NWQyMTI1N2QyMDYwNTYgbGVnYWN5LXRydW5rCis3OTUxOSBlZjZlYmMwNmE3ODZkYzAwYTM4OTFmNzk0MWZlZGYwNzhkMjM5MjU2IHJlbGVhc2UyNi1tYWludAorNzk1MjAgZmZlN2M3OTFiNWI5NDg3OGY0YWFlM2UwZDc3MTc5YjRlMTcyMDZjOSBweTNrCis3OTUyMSAxMzIzMjEyZGExNTQwMDRhZmU3Mjg3M2NhNmYwNDZmYTVhNWFlOTRjIHJlbGVhc2UzMS1tYWludAorNzk1MjIgNWU5ZWFkYzc2ZTg3ZWY3YmU2ZDJhYWM0MWVhY2M1NmZmYzQ1ZmMwNyBsZWdhY3ktdHJ1bmsKKzc5NTIzIGNhZDEyNjQyOGY0OGQ3OGI5N2RhNzcxZmFiNWQ0Yjc2MmQ4OWM4OGEgcmVsZWFzZTI2LW1haW50Cis3OTUyNCA1N2Q4ZDdmMzE3ZjUwMWI0MTU1YTk5NDUyMTIxYTMyOGNkZWE5NTZhIHJlbGVhc2UyNi1tYWludAorNzk1MjUgZmQ1YzBlYTI4NzBiYWM0YjBkMWM5Mjk5ZjAyY2JlNzVjNGFkMDdkNyBweTNrCis3OTUyNiBlNGY5NjkwMTJlNjgzY2FlMmVkODkxODJjNmU1MTNiODFmNGI4MmI5IHJlbGVhc2UzMS1tYWludAorNzk1MjcgZDU3Y2YxYWEyZGQ0ZDAwYzNjMzcwYWUzZGM1OTdhOGQwMDYzMjRjNSByZWxlYXNlMzEtbWFpbnQKKzc5NTI4IDk5ZTUyMzEzMmFlYTQzZDc4YTc2NGUxMDRjOTFjNjA3Nzk0MWI0NTAgbGVnYWN5LXRydW5rCis3OTUyOSA4N2JjMGYxMDg3MDIxMzkxMDcyOWU1MWIzMzA5NGIyYWEwOWIwMjk0IGxlZ2FjeS10cnVuaworNzk1MzAgYTJlNjI3ODI3YmYzNTA5YWI0YTY3ODFiZmZiNmUzZTg1MjczMDExMCByZWxlYXNlMjYtbWFpbnQKKzc5NTMxIDAxZThiMTNmYTk5YTU2NWRjNWE5ZWUyNTlmMDEyMzhjZTY0NjE2NzIgcHkzaworNzk1MzIgZWNiOWE2NjA5YmIxYzU0NTA5YmI4YzhmMWY3N2EzODYyMmYxNzhmNSByZWxlYXNlMzEtbWFpbnQKKzc5NTMzIDU5MjBmOWE1ZTIyZDhkMzNjMTEyNDRiODE1ZmUyMjI4YjUzMGY5MjYgbGVnYWN5LXRydW5rCis3OTUzNCA4MzIwMjJmNjNiY2JkNjc1NTQwODgxOGQ4YTYxYjZmYTg2NGIzM2EyIGxlZ2FjeS10cnVuaworNzk1MzUgN2I4YmEwMTljZDE1YjUyMDk4N2EzODE1OWUzZGJlYWRhNGNlOGMwMiBsZWdhY3ktdHJ1bmsKKzc5NTM2IDRmY2FhZDNmNjY5YjIzZjZiZTNhNzA2MTk4NThjYTdlOGZiZTVjZDcgcHkzaworNzk1MzcgNTcwZWFlMTQ4MWViNjAxMWZjMDlmYzJiYzM3ZWM0NGVjYWMyYThhMyBsZWdhY3ktdHJ1bmsKKzc5NTM4IGMzNmYyM2RhODhjMWFhNTQzZmQ2YzQ2YWNlNmE5NjI5YmUzZTViMmQgcHkzaworNzk1MzkgMzc0OGJjYTRkODY5OGFiMDdjNzYwODQxMjQxY2IxN2QwZDAyYjc4YyBsZWdhY3ktdHJ1bmsKKzc5NTQwIDI1YTdjZTAyMzA2Y2RmMWQzYzEyYjlmZjI4Nzk5NWI5NmVkYmVhNGQgbGVnYWN5LXRydW5rCis3OTU0MSBkMDBmMmVhMjVkMjBhNDFmMjQ2ZDY2ODBmNWYzMWM3YzdkMzIzYmVmIGxlZ2FjeS10cnVuaworNzk1NDIgN2I2N2MzNDI5MTdjY2U2OTEwNDdhN2E1MDBiYzAxY2I4N2JlZGY0MiBsZWdhY3ktdHJ1bmsKKzc5NTQzIDEzYTgxMTJlY2E1MmZjM2NmNGM4ZGU2YjljMzE5Y2U5ZTgxMjEzYWEgbGVnYWN5LXRydW5rCis3OTU0NCBhNGRhZDIxOGM2ZTM0NTY4NWQ3NWE3MmE0MWE5N2MzYjI1NWNiNDdiIHJlbGVhc2UyNi1tYWludAorNzk1NDUgMWUyYzlmZWE3Y2JlMDEwYTZkZGJlYmY5YzMxNjNkZjFjZTRhYzM4NiBweTNrCis3OTU0NiA1Y2M4MmNjZTQ1MjE1ZmM3ZTdmOGEzMWRmYzkyZjNhMGQwNGVhYjY3IHJlbGVhc2UzMS1tYWludAorNzk1NDcgYzc5NjViZDVkMjAwNGUyYzdmMzMyOWRjMjg0YjZjNTQ4MDEzMjM2NCByZWxlYXNlMjYtbWFpbnQKKzc5NTQ4IDZkZTNkZTNhYjcxZjc1MzZhOGExMDhmZDY1YWE0MTlkMDdjNTJiZTQgbGVnYWN5LXRydW5rCis3OTU0OSA4ODJkNjgxZDUwYTAwNGVlYzQ0NmE4Mjc0MDczNzgyNDExZDMxYTU3IGxlZ2FjeS10cnVuaworNzk1NTAgNTRiMGE2Zjc1ZWQ1Nzk1MDZkNmJhMGM4NTFjOWQ4MDZhMzkxYTM0YyBweTNrLWNkZWNpbWFsCis3OTU1MSA3OGUyMDk3NzkyYmVlYWQxYzgyYzk0OTllMTM5MDllYTkyNTFiMmZkIHB5M2stY2RlY2ltYWwKKzc5NTUyIGZkOGZlZjZhZmVmZDhjZGJmZDRhYzI1NTIyYzg4NWE3MDA4NTg5MTEgcHkzay1jZGVjaW1hbAorNzk1NTMgZTk1Zjg3NTVmZjFlM2Y2NjM0ZjJiZTdjMmE1NWMxOWUzYjJlN2FkMCBweTNrCis3OTU1NCBiNGRlYWVhYjk2ZTc4ZDNkY2UyMzU2MzkzZDU3OTdlYjkxYjZkNWRmIHJlbGVhc2UzMS1tYWludAorNzk1NTUgNmRmNmMxOWZiYWUzNThjNDU4MThmMzNlODMwYTYyZWIzMzIxM2YyMyBsZWdhY3ktdHJ1bmsKKzc5NTU2IDA0ZTc3NWIzM2U5ZTJhMzdlYzViMjM1NTRhNWQzMTQ5ODhhN2I3MTMgcHkzaworNzk1NTcgOTYyMDFmNDg4Y2MzY2UyODRmZTAwYmY5YWIyZjBkMzczZGVkMmY1MSBsZWdhY3ktdHJ1bmsKKzc5NTU4IGE0MDRlMzcwMmY3OWYyOGMwMmMzOTZlYzU2YWU2MTNmYmI4ZjlmMDQgbGVnYWN5LXRydW5rCis3OTU2MCBjOGE2MDFlNzQ0Y2Y2ODgzMGRkNjQzMGY2MjM3YmNhYTZlNTcxZDE2IHJlbGVhc2UyNi1tYWludAorNzk1NjMgZjE3MTcxMjg4MGM4ZWJkMmY0NTA2MzgxNjUzZWE5Njg1YmU2MjkyNSBweTNrLWppdAorNzk1NjQgNmQzNDE1YzE1YjhiZjkyMDhiYzQ4MDg0ZTM3NDE5YzlhMGU3YWYwMCByZWxlYXNlMzEtbWFpbnQKKzc5NTY1IDFiZWE1NDA0ZTA4N2MwZTVmYjUzODA3MDFiYTk0YjljYThmYmRiZjEgcHkzaworNzk1NjggNTEyYjgwMjUwNzg5Yjc3MjhjMTVlYjAxODNmZjI3ZWE1YjcxNDkwOCByZWxlYXNlMjYtbWFpbnQKKzc5NTY5IDI0NzhjMzhmZWZmNzQ5ZjhlNmFmNTgzNmQ2YTdiNDdhNjc1ZjM3YTQgbGVnYWN5LXRydW5rCis3OTU3MCA1YmFkODE4ZDE0ZjI4NzNmMzkzOWZhN2IzNmZmNjhhZjE1ZDNiZDI1IHJlbGVhc2UzMS1tYWludAorNzk1NzEgM2Y0NDgyNTI2ZjU1YTI2ODc4N2EwMWQyNzhiMzVmNDg2OWNkY2M3ZiBweTNrCis3OTU3MiAzODgwNmRmMDVkMDlkNmRlZjhjNjQ3Nzg0YjhhOTM0OTM4NDg5YjE0IHJlbGVhc2UzMS1tYWludAorNzk1NzMgNGQ5ZDk3NjBjODhiZWY2ZDcwMjMzNzdlNGMyNGRkMGNkNjc0ODg2ZSBweTNrCis3OTU3NCA0MTVjNGJiNDVmZTY4Nzc0ZjRiMDhkNTg2ZTg3ODcxNWY0Mzk0ZGY1IHJlbGVhc2UyNi1tYWludAorNzk1NzUgYjY0NzMxNTRhNzBiYzMzMTVlZTVhNzNiYTc2ZTBlNGFmNDI0MThkMiBsZWdhY3ktdHJ1bmsKKzc5NTc2IGVhYjM2MTYxN2Y2YTdkMDQxOWRhNDhjOTEzMTYyY2MzMjIwMWY1NGIgbGVnYWN5LXRydW5rCis3OTU3NyBiYWM0YjI4OWY3OWFhZDUzMDZjODQ2NjY4MTNlNjc2MjNmODA2Mjc3IGxlZ2FjeS10cnVuaworNzk1NzggZWI5ZmRhOTBkYTZlZDg0ZDU0N2NiOWM1OWM2MzFkNjdlMzI3MjRiMSBsZWdhY3ktdHJ1bmsKKzc5NTc5IGYzODkxOWJiMjZjYzcxMTlmZDVhODlkYzI3YzNkNjVmNjg5OGRmY2YgbGVnYWN5LXRydW5rCis3OTU4MCA3YTRhMGM2OWUzYTVmMjNmZjI3YmZkNzIzY2I3OGExMWJmMzM3MTg3IGxlZ2FjeS10cnVuaworNzk1ODEgYjU3ZGE0YTRhM2VkOTVlYmQxZWFhNjY4NmVkNGUzYTkyZTMzMmQwOSBweTNrCis3OTU4MiBlODFjYTg4ZDQ3OGNjNTU4MzIxOWUzZmE2M2IyOTM1M2QzZTZiM2I1IGxlZ2FjeS10cnVuaworNzk1ODMgMTMwNjAzM2Q4YWQyYWI3MTlhYzgzOWMxNGM4MjJmNjkzNTA2NWFjNyBsZWdhY3ktdHJ1bmsKKzc5NTg1IGUzNWZlYjk5NWJkOTZjNDUwYjJhMGQzY2NjMmM0MGM1NGVlZmIyMjkgbGVnYWN5LXRydW5rCis3OTU4NiBjNWIyMDY0NWU5MzM1MGM3NDJiODg3NWVlZmRkYmUwYzI3ZmFmMWNhIGxlZ2FjeS10cnVuaworNzk1ODcgZjc3NTU2ZmViZWM4MjBjZjIwMzU2MWNlYmYzZDkzYTdlZDIwOTlkNyBsZWdhY3ktdHJ1bmsKKzc5NTg4IGFlN2NmNTc4ZGU1YWRkZTAwMzk2ZjVkNWNiMzk2OTA1N2FlYzE4MmMgbGVnYWN5LXRydW5rCis3OTU4OSAxN2YwOGQ2NWNjMGQ4MWRkNDc0MmQ1YmY5ZDZiZjdlNTVmYjRkNzAwIGxlZ2FjeS10cnVuaworNzk1OTAgNTdmNGM5OTA4MmRmNTYwOTcxNjNkZGZiMDdhN2MwZWI5YTc0ODA1YyBsZWdhY3ktdHJ1bmsKKzc5NTkxIDQ4ZmQ2OWMyYTJiNDk0ZjJiMTBiMDlkODVjM2M2N2I2MWUwMzE1MDAgcHkzaworNzk1OTIgMWRmMzRmYTQ5MWJkYTA0YjAyMmI1NmMyZmFjYTVkNjI2NjI1YjE1MyBsZWdhY3ktdHJ1bmsKKzc5NTkzIGQ3N2UzODQ2MGUzY2E3ZDZiMmM4ZGViOTBlMmJkODlmOTQ3MjM0N2QgcHkzaworNzk1OTQgNGI1NWNlYTU1MDY3NzZmYWQ4OGNlZDM4MDE1MzAwNzVjM2JjMTJiMCBweTNrCis3OTU5NSA1MTQ5ZDQ4NGQ1NmFjODFkYjc1ZGQxZjM1OGVhNTQ5NTU4OGZiOGU1IHB5M2stY2RlY2ltYWwKKzc5NTk2IDIwNDk3ZDg1ZTAxMTJlYzNlNGM4MWZlYjE1NGYzYjMyOTAxZmU3MWUgbGVnYWN5LXRydW5rCis3OTU5NyAzZjFkNmVkNDgwZGQ4MWIwNDMzYjQ3MWJkNGE3MGExNDRmYjk0NWEzIHB5M2stY2RlY2ltYWwKKzc5NTk4IGU4MDUyYTYwYmJiN2I2ZWYzMmYwYjcwNGVhN2Q0MjY0N2Q1ZjkwYjUgcmVsZWFzZTI2LW1haW50Cis3OTU5OSBjZmJhNTljMzgzNDE1YzI5MmE1NjQxMDM0MWNiNTcxNDZkZWVhYjFmIHB5M2stY2RlY2ltYWwKKzc5NjAwIDg3MGZmNjIyMGEwYjk5YjA0MjBjM2NlMWI2NmZlMzI5OTdkMzhiMzAgcHkzaworNzk2MDEgMjc3ODU4M2JlMjFkNjJjZWVhODRmM2UwODg1YjVkNzUwZDdjMjFhYSByZWxlYXNlMjYtbWFpbnQKKzc5NjAyIGQxMTAxYWE5ODRjMDc1YmM3ZGM2ZWUyOWRjNzA3YWVhYjkyMWIwNzIgcHkzaworNzk2MDMgNGFjMDVkMWY2MGMxODA2OGI2NDg0NjE5MzRlYTAxMzk2NDdiZTg5MiBsZWdhY3ktdHJ1bmsKKzc5NjA0IDY2ZGIwM2E3MDc2NzljNjlhN2U3MDA2Y2M0MjM1ZjdiYjJkODg5OWQgcHkzaworNzk2MDUgNjk5MjQ2N2JiOGI1OWM2MzEwZDRiNTE4ODlhNWFkNjA5MDM4NDE4YyBweTNrCis3OTYwNiA0M2E4MzdkMjcyOGExMzQxZjA0NmYwMTkxZmFmNzhlNDcyZDdiNTg0IGxlZ2FjeS10cnVuaworNzk2MDcgMWZmOGRkNjdiZTgyMjdhNzcwMGY4ODJkMWMxNWJiMjVhMTE3YzU2NSBsZWdhY3ktdHJ1bmsKKzc5NjA4IDJmNWRjMmZhMGU1NmEyNTEwMWIzMGFmZGZjZjRjMDUzODM2OGIzZGEgbGVnYWN5LXRydW5rCis3OTYwOSBjY2E0YjcyZjQ1MGI2NDc4NjcyYTg4ZGVkOTllYTMyMTQ4YjhmNmY2IGxlZ2FjeS10cnVuaworNzk2MTAgMjU1YTQwMWMxOWIwNWFhZTZhNjJmYTUwMjkyMTI5MjNlMmU3NzdlYiBweTNrCis3OTYxMSBlZmViYjdiY2FlOGIxNjRiMDI1MTA1M2M5MjliMjBkN2JiNTU0NWFhIHB5M2sKKzc5NjEyIGI0Nzk2ZWZjYTcxNjRmZmZjYzJjYTIxODQwODEzNzViMDNiN2JkOTIgcmVsZWFzZTI2LW1haW50Cis3OTYxMyBhMWRhYmY0ZTg4NjY1NjFiYjU3NTdmM2FiYzY0ZmYwOGM4ODZlYjU2IHB5M2sKKzc5NjE0IDdkYzhiODhiYjE1YTQxZTRiNjZlYjhlOWUyM2YzODZhNzViMDQ2MjggcmVsZWFzZTI2LW1haW50Cis3OTYxNSA4ZDczMTdjOTI0Y2VmODI0MjY5ZWVkZDIxZTU2ODM4MzQxMTU4MDllIHB5M2sKKzc5NjE2IGVlZWEzNDAxNGM4MDI2ODZkNTZiZTE4MjQ5MDFiMGI4NGU2ZDI5NTMgbGVnYWN5LXRydW5rCis3OTYxNyAyNzhlN2VjYzBmNzdlZjBkZTYyM2ExM2IzMzNlNDY2ZDA2NjQyNjQyIGxlZ2FjeS10cnVuaworNzk2MTggOWQ1MGJjZDNmMGM5Y2E4NWI3ODJlMzQ4ZTRkN2M5Njg1ZWVjNjZmMCBsZWdhY3ktdHJ1bmsKKzc5NjE5IDdjOTIzODA4NWE1Y2UwYTI2ZTIxMGEzNTUyMzk2YjBkNTFkZTA5ZWYgcmVsZWFzZTI2LW1haW50Cis3OTYyMCAzNzdiMjZkODc2ZTBkZmU3YWU1OTFlYzZlZDZkZTNmMGVmZTRhY2QyIGxlZ2FjeS10cnVuaworNzk2MjEgNTNhZmNkYzlhZTBhYmM2OTEwYzM1YzI1MTAyZjhiYzE3NWNlOGYzNyBweTNrCis3OTYyMiBmNzZjM2RlYzg1OGI3YjljODUxMDM3ZmVkODdhYTFkM2JiOTlmNWFlIGxlZ2FjeS10cnVuaworNzk2MjMgNzBiN2U0YTdmN2NlMjBiMmU3NzExMzM2M2I3OWU5Y2FhNzUzNTBmNyBsZWdhY3ktdHJ1bmsKKzc5NjI0IGFhYjY0MjgzZDAwYTFmZTZlNDQzOTk0YjJjMzkxMDQ3YjlmNDFkOTIgbGVnYWN5LXRydW5rCis3OTYyNSA4NGVjYjM1YTA2YmRkZjZjYTE4NmM2OTJhNTU4NzhlMzY3YWUzZWZiIGxlZ2FjeS10cnVuaworNzk2MjYgMWI1ZDVlNzRmNzM4ZjQxYTQ3NDhkYmNkNzE3NjNhNjM3MTZmMDAwNyBsZWdhY3ktdHJ1bmsKKzc5NjI3IGYwYmIxMGNlMDVjNzcyNjY3MGM1MTNlY2U0NDAxNWYwYTI0MzE4OTcgcmVsZWFzZTI2LW1haW50Cis3OTYyOCBhZWEzMTllYTI2YThlOTAzMjNlM2M1MTc4MzJlYWRlNjEzYTRmNzdlIHB5M2sKKzc5NjI5IGZmYTBhYTcwYzc0NjgzZjQ1MGI4ZmM2OWRkZTRmM2IxY2IzYTFlYTkgbGVnYWN5LXRydW5rCis3OTYzMCA3NjU5NDNjMTExNWI5NWJmZGEzYzgyOGQ1YjBkZTFkNjk4YTBmMDUxIGxlZ2FjeS10cnVuaworNzk2MzEgYzM0ZGRjYTM2Nzg2YzFjNGQ3MTg1ZWUzMWI5ZWM3NTlhOTY5MDU0OSBweTNrCis3OTYzMiA1NDYyYzVhOTFmOGRjYjlkYzhmNDNmNTFlMjg4YjRiZDNiMTY3MGRiIGxlZ2FjeS10cnVuaworNzk2MzMgMGFiODllOGJkZWRjNTc2NmRlMjE3Y2EyNDdlODYzMGUyMDBhNjUyYSBsZWdhY3ktdHJ1bmsKKzc5NjM0IGE3ZTlmOGUzNTUzZjdjYTU2OTczMWMwYTQ3NjJjZDZhNWQwZGMxZjMgbGVnYWN5LXRydW5rCis3OTYzNSBkNDc5OWVlNjRjMjNiMWM1ODRiMjI0Mjc5ZGRlMWYzN2QwZjc3ZTBkIGxlZ2FjeS10cnVuaworNzk2MzYgNDg3N2MxMTU5MTUzZjVlZmQ5OWRjY2M1YWI4ZDJmNzdiM2U0YTQ4ZCBsZWdhY3ktdHJ1bmsKKzc5NjM3IDRlZDA0YTM5YzBhOTFiOTNkNTZhZjZlYmY1MTFmMzRlMGQ3NTkwNjIgbGVnYWN5LXRydW5rCis3OTYzOCA1NDk2NTAzYjhiMWFiZDcyZjAzZDQ4NjU4ZjA2MjJjOWQyNGI2YzhhIHJlbGVhc2UzMS1tYWludAorNzk2MzkgODZmNjk5NzY2MDE2MmNiZGRhMDE5MmMzZWMwOTc5MDg3MjRhNjlmMSBsZWdhY3ktdHJ1bmsKKzc5NjQwIGQzODU4OTU4ZGZmNTNlNjI0MzUyMjFhYjE5NTg3ZDUzMGU5ODJlMzEgbGVnYWN5LXRydW5rCis3OTY0MSBiNTI5YTE0MmNjNDllNmYzMTBhYjc0NjJmZDJmZjIyNjFiNWI0YzQwIHB5M2sKKzc5NjQyIGQzMzRhN2E1Njg0NDk4Y2U3ZWU5NTlhNDgwMGI2MDMwMTk4MTI2M2YgbGVnYWN5LXRydW5rCis3OTY0MyBlYmNlYjc3OTY3ZGU4NjM0OGExMmZhZTAwMzk0NmRlMjk5MGM5MTY1IGxlZ2FjeS10cnVuaworNzk2NDQgNmQ0ODM1YTgxYjYzMmFkMDIwZjZiMGI4ZDQ4YjYxYWRkYmZkMDNhZSBsZWdhY3ktdHJ1bmsKKzc5NjQ1IGZhNjQxZDYwNTQ2ODg0ZmQ5YzA2MjExOWZhYjdkYWViNzRjMDBkNzIgcHkzaworNzk2NDYgNjZiNjBhNmU4MTk4NDZmNmJlMGVhNjc5MTU5ZmEwYmQ2YzVkNzZkMiByZWxlYXNlMjYtbWFpbnQKKzc5NjQ3IGE4OGUwZjZhYjk0NWExNjY5MzEzYTRhMjBhYjg1YTEzYzZlOTk1ZWMgcmVsZWFzZTMxLW1haW50Cis3OTY0OCA4OWU4N2JhOGFiNGUwYjBmNTMxNjRkZGIyMWIzZGYxZDRkODExY2ZiIGxlZ2FjeS10cnVuaworNzk2NDkgNmZlNWRjMTc1YzI2NGRmMmFiMTIyNTM4N2FiZDkwZWZlNWE5Yjg5MiBsZWdhY3ktdHJ1bmsKKzc5NjUwIGZkZDAxMzc0MzJmODUzNzM5ZjQxNWY3ODUwZGJjYjljNWY4Mjk2ZTkgbGVnYWN5LXRydW5rCis3OTY1MSA1ZWJjYTYyMjg5MDM2YjM3YmNiN2ZkNGUwOGI0ODk3ZGExMjE1NDY3IGxlZ2FjeS10cnVuaworNzk2NTIgNTBiMmMwZmU1ZTI3YjM5YzIzNGMxOWYyZTMzZjllMmEzODcwMjYyNyBsZWdhY3ktdHJ1bmsKKzc5NjUzIDE1NGRjZmEzMmIyMDFhZWNkYWI3NmY1ZmNlYzNjOGQ4ZWE2MmNiM2MgcmVsZWFzZTI2LW1haW50Cis3OTY1NCBhNzA3Y2EyNjAzNDFiNWY2ZjI4MGE3MjU0ZWE2YTg4NDE4ZDZmZTVjIGxlZ2FjeS10cnVuaworNzk2NTUgNjI5ZTdiM2M4YjJkOTc2ZGM3MGY2NGUzYzdhZTFiOTc1NDI0MjUxYSByZWxlYXNlMjYtbWFpbnQKKzc5NjU2IGVhNGM2YzA2ODk1MDA5ZDBlMDNmOTczYTAyNzA2MjZmODNiY2VjYWUgcHkzaworNzk2NTcgNjU4YjM5ZTY2ZGVmZWQ2ZjZkZWY3YzZlMzMyMWUyMmUyMjFjYzEyZCBweTNrCis3OTY1OCBkNWYyYzc0MjViNGE5NDdlZTg1MWJmZDU0YzI5MmJmOWM4ZWM2ZGQyIHJlbGVhc2UzMS1tYWludAorNzk2NTkgNDRkMzJhNmM5ZTM1N2EzM2FjNjI2MzlhNzk5MzAxNzkzNDUwZDA0NSByZWxlYXNlMzEtbWFpbnQKKzc5NjYwIGRhN2IwMDA2YTc5OTdlNzdiNWQ3OGZmM2M4M2VjOGU1NjY4ZTliZWQgbGVnYWN5LXRydW5rCis3OTY2MSBhZDk0YWY5MTI5Y2NhM2RkZGU2MjY4ODI1ODQ0MzM5N2RhMjJlMTJiIGxlZ2FjeS10cnVuaworNzk2NjIgN2NhNmEzNDMxZjllMjdjYTExNGZmN2M0M2IzMGM0ZWMxOGYzZjg1OSBweTNrCis3OTY2MyBlNDdhNmZmNWI1MjBmMGQxZTUzZDgwYzRkM2VlYTA5NWUwYjczODJiIHJlbGVhc2UyNi1tYWludAorNzk2NjQgMjgxMWJlOTVjOGM4NDQ4YWVlYzk5YjZlODZjZDI2ZmVjNTA3OGRiYyByZWxlYXNlMjYtbWFpbnQKKzc5NjY1IGM1NGRkM2VlZWQ1NmIzZjJjZWUwZWRhNDI2ZjNiZGRmMTc4NzExYjQgcHkzaworNzk2NjYgOGM4YmRjMTFlOWI5OTI5YzU1MTE3Y2I4ODkxY2Q1ZGRhMWVlMThiNyByZWxlYXNlMzEtbWFpbnQKKzc5NjY3IDFkNDg0YzRkYmY2MDRjZGJkNzFkOGQ3Y2Y0ZDA2MTllN2ZmYjQzN2EgcmVsZWFzZTI2LW1haW50Cis3OTY2OCA1MDc4MjIwYmQxZWE2MzIwYmMyNzlmZTE1OTdlOTcxZGYzODI5YzkwIHB5M2sKKzc5NjY5IDMzNGQ0NTYyYzg3NWE5MDIxNTc5ZDRlY2FlNTY3YjM5MDYxZjZkMTYgcmVsZWFzZTMxLW1haW50Cis3OTY3MCBjZjgwMzc3MTg0ZmZhYTY4NjQ0MzFlMzU0MGM5Y2ViNmIxZWFhMDMxIHB5M2sKKzc5NjcxIGMyYjIxN2ZlNGVkNDU0ODFlYjY5MmVjZWJhODkyMmJmZGRlOGI1MDYgcmVsZWFzZTMxLW1haW50Cis3OTY3MiBjMGI2Mjk5YjkzZWViZTg2NmJkZGJhODc3NGQyYmNmOGViZWZjYjcyIHJlbGVhc2UyNi1tYWludAorNzk2NzMgYjFjMDBjN2QzYzg1NWQ1MTcyNjQ3NmRmYTU2ZjA0YjI4NjhhNmYxZCBsZWdhY3ktdHJ1bmsKKzc5Njc0IDA1NDBhOTYyODY5ODhhNGRhYTczNDEyYjlkMzc3NzAxNjg3YmFmZDEgbGVnYWN5LXRydW5rCis3OTY3NSBjZjM0ZmMxZTg0MTNlMTdjOTdmYmU5ZDMwM2Q0NWIzOWYzNDhhY2MzIHJlbGVhc2UyNi1tYWludAorNzk2NzYgYjE5NDFjZmZmYTVjODUxNjFmYTIyMDMwYjllMDEyZDNkZjUwNDNhZiBweTNrCis3OTY3NyBkMzFlMjY5YWFjZGViZDA4MjQ5MzcwNTg1ZThiYmRjZjgzZWIyNWUwIHJlbGVhc2UzMS1tYWludAorNzk2NzggYTY2NTQ1ZGIzYjA2OThhOTkxNzc1NGI2YTNmYTVmZmE1NDAwMWMwMSBsZWdhY3ktdHJ1bmsKKzc5Njc5IGViMDQ5YzNjMDgzZmM4MjE0MzY0M2EwMmJmMjQxMjJlYjc3ODdkZDQgbGVnYWN5LXRydW5rCis3OTY4MCAyNzQ1MWE5Njc2NTAwZDA3NDY3Zjg3YjljYjJhOGE4ZmQ5ZDg3MzEyIHJlbGVhc2UyNi1tYWludAorNzk2ODEgNTNlZTM4ZTYzOGJmOTBlOTgzZThhZjkzMzZjYTdiNmI1NTRmMDdlZSBweTNrCis3OTY4MiAzYjFkMGEzYWRmZmZhZTc0OWRjZTI4OGExNzkyZWQ5N2VlZjhjYzhlIHJlbGVhc2UzMS1tYWludAorNzk2ODMgYmQ1MTIxYmY2OTk2ZDBjM2U5ZTE1Yjc3ZTE0MTJmNzE0MTA0ODMwNSBweTNrCis3OTY4NCBiYTQ4MmY0ODg3ZjdkNjgwMmMyZTgxNjcxN2YxOWIzNTA0ZTkwZjI2IHJlbGVhc2UzMS1tYWludAorNzk2ODUgYTU4NGYyNDMxODBkNTJhNmQ2YzIyYzEwM2U3MmRkNzczM2RhNzY3OSBsZWdhY3ktdHJ1bmsKKzc5Njg2IDdkMjcyNDg4YjYzYzlhNDJmMjM4ZWI3NzFkZDJmOTI2MzViNzUyMGMgcmVsZWFzZTI2LW1haW50Cis3OTY4NyA1ODBmMmY1YmE4NWYzNjUxODE2ODEzZWM3NzM2OThiMmI1YjdiYjY4IHJlbGVhc2UzMS1tYWludAorNzk2ODggOWIyNGFhMzZjMDZmODNlM2JiNDFmZDdmNTUzZGVkNmMzZjc0M2FiMSBweTNrCis3OTY4OSBkMTUyMzVkMjEzN2MxNDg1ODFkMjk2NDlmMmYyNzkyZDk0ZDk1YzA3IHB5M2sKKzc5NjkwIGVhMTBjYjYxMzkwYWVhMjBmYmQ5NjhjMDM1ZGM1MmYxNTA4ZTRkZTIgcmVsZWFzZTMxLW1haW50Cis3OTY5MSA0YTZlMjAxMzU0NzA2OGYwNzcwYjdiYzI2ODJiYmQwNjRiODBiN2M0IHJlbGVhc2UzMS1tYWludAorNzk2OTIgYzY2OTk1YmVmZTQyNDIxYjU2ZTkwYWYzNDdhNGVkNDE1OWM3NDliMCByZWxlYXNlMjYtbWFpbnQKKzc5NjkzIGI2MmE2ODIxMTdlMDBmMzg1MjkwYTVlNGRhY2I4NWVkZmVlYTQ5NTggbGVnYWN5LXRydW5rCis3OTY5NCAzNTI3ZDY1NzllYzI5MGZkOTBkOWI0ZmM0N2U2YTcyNzUxZmU0NWIyIHB5M2sKKzc5Njk1IGQ1YWJkOGRmZDRmNGJhYTBhYmZiYzhlNjJkZTk1MzE0ZDVhZjk3MTIgbGVnYWN5LXRydW5rCis3OTY5NiAwNmE0NmY5NTE5NGVmMTQxNTFjZWNjNjU2MWJkOWE2OTQ5M2NiY2Y1IHB5M2sKKzc5Njk3IDhhYjk2MGI2MTFhNmYxYjkxYmVjODhhYjMxYjkwZmZmMjg2MTI0MzIgbGVnYWN5LXRydW5rCis3OTY5OCAzOWVmZDNmYzU5ZWZhN2YwOGMwODlkZDIwNDE4NGZiNDI0MDUyYmY2IGxlZ2FjeS10cnVuaworNzk2OTkgODc2NjYzNzZkOGIwNTA0MjZhZWY5NTM1NDM1ODhjN2E4ZjQzZDRkYSBsZWdhY3ktdHJ1bmsKKzc5NzAwIDQwYmM4YjFjYTkzMjk4OWY3YTFmNzdiMmEyYjFmN2I1NzZiZGFmODkgcmVsZWFzZTI2LW1haW50Cis3OTcwMSAzYTBmNTI1YjU5YjU5NzQ4YzE0MDJmNDQzYTEwODI5MWZjMGYwZjk4IHB5M2sKKzc5NzAyIDg2YmYzOGVhMzEyMzZlM2JlYWUwOTA2OWE4NzVjYjgwMjA5OTljNzYgcmVsZWFzZTMxLW1haW50Cis3OTcwMyBhYTEyMWEzOWE5NTY3MGU0ODYyNmEwYTc3YmQ4NmRjYWE0N2E0MzExIHB5M2sKKzc5NzA0IGRhMzRkMWY0M2NiMDAwNWZmZjlkOGVkNzZhMWQxN2E0ZjU1NzE2MDMgbGVnYWN5LXRydW5rCis3OTcwNSA3ZWI5MDdjODU0YjQyYWQ5ZGJiYjE4MjU2YjhmNGE0ODg5ZmI0ZmQ0IHB5M2sKKzc5NzA2IGMyMWJjODBjODNmNjJmZGQxNjE5ZTAxMTdjNWNjMWI1MjZmNmRmZjMgbGVnYWN5LXRydW5rCis3OTcwNyBiMjYyNWFjYzI0ODRlNTBlYjYwMjM1YmRhNDVmZTlhODc1NGRhMDJiIGxlZ2FjeS10cnVuaworNzk3MDggMmU1NTljMGFkOGMzNDI4ZmYyNmMyZmYyZWVkNzI4MzUyNzFhNTg2ZiBweTNrCis3OTcwOSA2MTk5MGY3NjM0ODU5MzBlNzkzZWI5Y2ZjOWQ5ODcyNjg5MjNkNTllIHJlbGVhc2UyNi1tYWludAorNzk3MTAgZTE0NjEzMTI0Y2MxNDI4ODg0MDdlNzA5ZjZiMjMyMzRkZjAxY2Q3ZCBsZWdhY3ktdHJ1bmsKKzc5NzExIDY2MTU4ZTRmZDAyMjdlNDA1ZTZhMmI5ZmI1ZDhjZmQwNjk0MGNhZGMgbGVnYWN5LXRydW5rCis3OTcxMiBhMTg0MjI3Y2ZiOTQzYTBjMGQwMjUyMGFhYTA5YTg5NWJjZjdlMzM3IGxlZ2FjeS10cnVuaworNzk3MTMgYzczYTY1OGRhNmZhYzM0NDAzMmRjNDI4MmI0OTk4MzljNDQ2Nzk0YyBsZWdhY3ktdHJ1bmsKKzc5NzE0IGUyOWEyZTAzZTczOWU2NjY5ZWRjNmFhOWRjNjk1MWI0ZDdlY2ZhYzEgbGVnYWN5LXRydW5rCis3OTcxNSAzZjc4NjRjMWNmM2Y2MTU0M2Q0ZDE3YTc4NWMyNThmYzNjZGRlMjE2IHB5M2sKKzc5NzE2IDM0NWI2YWIzMmQ2NTRmNDY2NGU4MDI2YWQwNjRmMDM4ODg4MTk5MDMgbGVnYWN5LXRydW5rCis3OTcxNyA4MmMyMDM0YjgwOTVmODQ0MDM0OTFmOWVmY2EyZmJlMzYxYjAzMDcyIGxlZ2FjeS10cnVuaworNzk3MTggZWUzNDI1ZDFjNjg4Y2ZkODE1Y2M1NWM2NDNmOGY2MDNhMWZhMDJlNCBsZWdhY3ktdHJ1bmsKKzc5NzE5IDRkODRlM2ZhMzMzYTIxZjg5ZGY3NDc2MTFhZTQxMzgxMzRhOWY2ZTggbGVnYWN5LXRydW5rCis3OTcyMCA5YjUwMGEyYzg1OWQwNmZiNjcxNDNkYWIxMmJlOGY0OWUyNDQzYTUxIHB5M2sKKzc5NzIxIGM4Zjk1NTAwM2IyYzFjNWEzNzZiM2NlNzE5M2VjZTVlMzEyMWU2MDUgcHkzaworNzk3MjIgNmEyNGRlZmNjMDBiMmNiOTgwNWE4MmY3ZDc1M2QxNThkYTJhZTBjMiBsZWdhY3ktdHJ1bmsKKzc5NzIzIDk2NWVjNjM1NmQ1ZDg0NDQyMGRmMDQ2YjZmNjVmYWNjYTE3YzM1MmIgbGVnYWN5LXRydW5rCis3OTcyNCA4MWMyZjU5MmU4MDgxMGE4NDY2MWJmMmI4NjE5ZjMwMzI2MjJhMzkwIHB5M2sKKzc5NzI1IDNjNGMwYTcxNmExOGE0OGZkNTNmMGQ0MmE5MDM5OGViNDkzOGIzMTggbGVnYWN5LXRydW5rCis3OTcyNiAwY2ZhYmVkNDY2NjljZTlkMGE4NGE2MWFkNGIxYzk3OTFiODUyNzYwIHB5M2sKKzc5NzI4IGRhOTM5YWIyYmZlMjc3N2E4MDk0MWYzMDZjYTdjNTk4YzI3NzFlYzQgcHkzaworNzk3MjkgMzk5MjEwMjYzZTcxMGMwN2E4ZjFjMDE4Zjc0NWE5NzU3YjFlZTkwMiBweTNrCis3OTczMCBlYjQxNjc2NzIxNjNjOGUzMWUwNDEzZDIzODk2OWUwZDlhN2UzZDkwIGxlZ2FjeS10cnVuaworNzk3MzEgMGQ1NjdjZTVlY2U0YTQzMWRmZDFiNWI0ZmI4MjVhYjZhMjdjZTZjOCBweTNrCis3OTczMiAzOTVhMjdhNDRhOWU0MjQ2ZDhmY2JlNDc1NTU0ZDU0MTgxNzliMTU1IHJlbGVhc2UzMS1tYWludAorNzk3MzMgZDU4NjJkMTJkOTJhYjRkNDRlYTljMzBiNjA4ODhmYmZjMTE2NWNiZiBsZWdhY3ktdHJ1bmsKKzc5NzM0IGY5YzM2OGZlMWFjZjMwOGUzMjRhYmQ3MGI3Yzg3ODEyNGJjNzdmMTQgcmVsZWFzZTI2LW1haW50Cis3OTczNSA2Nzc3Y2ZhYjUxNTJlMmNkZmZlY2JmYzY5YmE5MmZmZTZkZGQ5MDRhIGxlZ2FjeS10cnVuaworNzk3MzYgOWVlOTdhNGFiMTVjMGM5YjdjYzk1MTQ1N2Y1NGYwNDVmOGEzZGVhNyByZWxlYXNlMjYtbWFpbnQKKzc5NzM3IDJkYTUxM2I0NzJjYmU1MGRlNGY2NDhiMzQzNjFmODE5MmI4MzIwYzUgcHkzaworNzk3MzggYThkZGUwMjVhNmY5OWYwMWYwYjc4YTFkZWZhZDFmZTU3OGIyNGNkZCByZWxlYXNlMzEtbWFpbnQKKzc5NzM5IDBkZWYyOGRiNzc5OTdlZWMzNDA0NzhlOWE4OWY0NjVhZDQxYzEwM2QgcHkzaworNzk3NDAgNDYwZjQxYmQwZTM0YWNlZTY0NWM0NDFiYjdiNTU4MGJlYWVhYWVjNyBsZWdhY3ktdHJ1bmsKKzc5NzQxIDU3MTVkZTJhNDA1MTA1MWUyYWUxODcyMjgxNzMxYmE3YjZkOGMxOTEgcmVsZWFzZTI2LW1haW50Cis3OTc0MiA1OGRjNGYzMTZmZjY0NmNkYzMxODZmNzZiYzA4NDVkMzMwNGJkOTk2IHB5M2sKKzc5NzQzIDgxZmUxZDQ1YWU3N2ZhNDJjOTMxMDQ1NGRlZWQ5NDJmZTljZDJlYTEgcmVsZWFzZTMxLW1haW50Cis3OTc0NCA1Y2E4ZTQxNTA0YjZmOTI3OWE2ZDVlNjRiMGQxYmYyMGNkNTkwMjBlIGxlZ2FjeS10cnVuaworNzk3NDUgYzM5OWU5M2JmMGU0NWRjMmI3MWFiMWY0OTM0NzBhMGEzNTg0NzVmYyBsZWdhY3ktdHJ1bmsKKzc5NzQ2IDcyNDA5YjIzMTk2NzMzYTM0M2Y3ZjY2NjMyZmI3OGMzMDhjNjBiNzAgcHkzaworNzk3NDcgYzFiODdlMTNlOWQzZmYxNWM0ZTFmYjUyMmYxNTAxN2ZjYjUyOWUyOSBweTNrLWNkZWNpbWFsCis3OTc1MCAxZTZmMjY4MDE2ZTQ3Mzk0YWUxYWI1YWIxNzk3MjQwMDY2NGQ1NDdiIGxlZ2FjeS10cnVuaworNzk3NTEgZWMxYTU0MTJmZjkwZGVhZTNlZGZlYjQxNGZlODFmMTJmMWQ5MzZjNiBsZWdhY3ktdHJ1bmsKKzc5NzUyIDdhYzNkODhlMzVjMjEwZmYyZTIxYWQzZDQzYmQwYmQyMTY0ZDg4ZWIgcHkzaworNzk3NTMgOGUwNjQxNzg1NTA3NDUzZjE2NGQxMjkxZDY5MTE1ZDUxMTc2ZmQyYSByZWxlYXNlMjYtbWFpbnQKKzc5NzU0IGRjNjM0MTFhMDEwNGViYTQyYmY2ZjI5YzRlY2NlMjY1ZmVhNThlY2YgcmVsZWFzZTMxLW1haW50Cis3OTc1NSA1ZGRhM2YzMmEyY2UyZGQwMWZiNmMzNjgxOTkxMTY1YmYwMDk5ZWUwIGxlZ2FjeS10cnVuaworNzk3NTYgOGFhMjk2ZmE2ZDZjNTNhMDc0YTNiMzAwYmRlMmQ1MGJmNmMwMDFhMSBsZWdhY3ktdHJ1bmsKKzc5NzU3IDQ1ZGQ5YmYzNjFlYzAzMTVmMTg5N2I3MzVkNGY3N2M1NTQ0ZTY0OGMgcHkzaworNzk3NTggOTMwN2RlZWVlNDEyYTIyM2YxNGY1ODMxMjgyNDBmZmM1MzgwNzViMiByZWxlYXNlMjYtbWFpbnQKKzc5NzU5IGY0MTZmMmMyYzA5OWU4NDc1MzdmNTg5M2Q4YWI3MjQwNWQwYWRhYTEgcmVsZWFzZTMxLW1haW50Cis3OTc2MCBiNmM2ZjQyY2RkZGU1ZGY0ZGVkYWY1YmRmYzBmNjBiZjI1ZWRkNGJkIGxlZ2FjeS10cnVuaworNzk3NjEgMDIyNWQyOWYwYmQ5OGUzMzUwMTNlMTZjMTQ1NjlkM2Q3OWVhNmY5MSBsZWdhY3ktdHJ1bmsKKzc5NzYyIGFjYzkwMGRjMTg0YmE5YjBjNjJmNTgyZjhmN2NlZGNhNzZlMjJlY2UgbGVnYWN5LXRydW5rCis3OTc2MyAwZWNlOThiODUzZDUxMDQxZDU5YmYwZmExMmMzZjFjYmE4MzhhZmY0IGxlZ2FjeS10cnVuaworNzk3NjQgYTY2MWM5NmI4ZDEwZWNmN2I4Yjk5ZDVkN2M5ZTY4Zjg4NmQ2ZmY1ZSBweTNrCis3OTc2NSBmYjJkNjRhNGQ4NzJjMzJjNTM3ZTc2YzU2ODkyNWVjMTc2ZDM0M2IxIHB5M2sKKzc5NzY2IGI2OWRjZjYzNTAyYzRkZjI0MmY5OTEzMmZlNmRkZTQ1NzgxMmU0M2UgcmVsZWFzZTI2LW1haW50Cis3OTc2NyBjMDRhNjIyMmNjN2RkNTlkZjI3NWIyYzkyNGI0Yjk3ZjdmOGRmZTNlIHJlbGVhc2UzMS1tYWludAorNzk3NjggYTkwM2JiMzVlZjRmNTM1NzUwZTA3MmI3OTBiOWVhZjRkZjhkYzY5OSBsZWdhY3ktdHJ1bmsKKzc5NzY5IGM1NGNmZTgyOGI4NGEzY2QwYTEwNWUxYWUwNzkzOTJiNDZiYWY0YWQgbGVnYWN5LXRydW5rCis3OTc3MCA4MDA0MzU3ZDViY2MwMzcyZTUyMTg2ZmJhMmVjYzRhMjljZTMyYmM2IHB5M2sKKzc5NzcxIDcxNzc5ZjRhMjA3ODI5NGI1OGRmMjc2Mzc2MThhZTJlNzI2YTQ5NmQgcHkzaworNzk3NzIgMzNhMDJlNGFjNGMyZjFlN2U5N2JkZTQ1MTA5NWE3NGUyYjBhMzJiNiByZWxlYXNlMjYtbWFpbnQKKzc5NzczIDg5M2M3NGQ1NDdlZTczODA2MmI2NmQ1ZTNiZjMyMzdkZWFhZWRlNzYgcHkzaworNzk3NzQgMWFiZjM3ZGIyNTdkOTg4ZGJmNjAzNjEwN2IxN2MwNTEzNDg4NWJiYyBsZWdhY3ktdHJ1bmsKKzc5Nzc1IDIzZGJjOGEzYjk3YTk5OTk2YTdmYjA2ODNkODc5NjVjOGQ0ZjBmYzYgcmVsZWFzZTI2LW1haW50Cis3OTc3NiA2MGNhODk4M2RkM2IxZTI1ZmYzNDMwNzhjMzZiMWIyYTliYWEzYTJiIHJlbGVhc2UzMS1tYWludAorNzk3NzcgNTM1MjIwNGM4ZTg4YzViZDFmZTdhOWFlMDE3NWFhNjVlYWJjZmQyYiBsZWdhY3ktdHJ1bmsKKzc5Nzc4IGU2ODE1ZTFiNzUwMmM2NDA5ZTRmZDdkMGVhZTAyMzcwMTFlNzQ3YTkgbGVnYWN5LXRydW5rCis3OTc3OSAxY2M0ZDJkYjVjZDZiZGIzYjQ2Y2ZiNGMwODQxZDAwMjExMTBmZGE2IGxlZ2FjeS10cnVuaworNzk3ODAgY2ZlNWZhMzRkYjQ2NjY0YzRmZTk4MzBiMTQ1ZGJkMzExYWRiYTcyNCBweTNrCis3OTc4MSBjNDBmYmZmZjZkN2FiYzg4ZDIwYTAxNmViMmNiMDNhMTU5NGM4MTAxIGxlZ2FjeS10cnVuaworNzk3ODIgN2Y2OTE4MWI2NTJjMGE5YmZiNTdmNmQ5NGYyZGY2MzIxNWE2OGVlZiByZWxlYXNlMjYtbWFpbnQKKzc5NzgzIDAyYmQyZjYwYmE1ZDhkNTJmMzY4MjIwNmZlMjI1YzRkNzRkNmVjYjIgcHkzaworNzk3ODQgMjczY2RhMmIwMDUzODEyYmFlZmQyMjM1YjJmZTg2YTVmZGYzODIzMCByZWxlYXNlMzEtbWFpbnQKKzc5Nzg1IGZkY2JlYjlmMzc0YzcxNWU2ZmZmMWM4M2JhYzRjZGFiMDU0NTY5NjkgcmVsZWFzZTMxLW1haW50Cis3OTc4NiA5N2U5NWM5ZDI2ZGFiZjIxNGY4YmM0ZDQ3ODMyMTlmZWY5YTVkNmZiIGxlZ2FjeS10cnVuaworNzk3ODcgZTRiZGMyOTZmYzhlNDI3YjA1NzI2M2M2YTdkOWViYjFmM2ZjOThlYSByZWxlYXNlMjYtbWFpbnQKKzc5Nzg4IGU5NGQ0NDZjNmQwZWY5MzljOTllMmE0YzhiMzlkZmE4YTQzYjlhNzUgbGVnYWN5LXRydW5rCis3OTc4OSA3MmMwZTE1YzAzYjI0YTIzM2FhZjRmN2FkMGRhZDllMTVkODE2YTEyIHJlbGVhc2UyNi1tYWludAorNzk3OTAgMjRjYjQxMTJiNzMxMTMwOWEyMDZlZTljYmRlNWQwZmMwNDk5M2ViYSBweTNrCis3OTc5MSAzMmE4YjUyMGQ3NjdkN2M5YzQ3NDFiOTlkZDViZjYzZmM2ZmE1MjllIHJlbGVhc2UzMS1tYWludAorNzk3OTIgMjhiODIzOTgzZmNlOWQ3MzliMGQxN2RiYTk0Zjg1ZGVhNGZkMDIwMSBsZWdhY3ktdHJ1bmsKKzc5NzkzIDZiZWU0M2VhN2MwMGUzYWFjMzMxYzYzZjE5YWU2MDViNjUyOTEwYWUgbGVnYWN5LXRydW5rCis3OTc5NCBmODdkMmIxYmE0MjkwYzMwMzgyMjk2NjI2YzBjZmQxOWMwMWU5OWE1IGxlZ2FjeS10cnVuaworNzk3OTUgYzJiMDkzZDY4MGNmMzIzMTM0YjQ5YTJkYWZlMTVjMzA2MGFhMTE3MSBsZWdhY3ktdHJ1bmsKKzc5Nzk2IDJkMGNlMzA3ODA5YjRkMDYzY2NkNDlhOTQyNzE1M2E2MWMxODhlNTcgcmVsZWFzZTI2LW1haW50Cis3OTc5NyAxMWRlMmMyOGQxYTA5MTA2NTc3NmRjZWMxZWZlZGNhZGE2YTQ2MDg2IGxlZ2FjeS10cnVuaworNzk3OTggNzA4OGQxODM0Nzc4NGYyOTA4NjFmMmE5ZmUxZTYwZWI2ODhlZGMzZCByZWxlYXNlMjYtbWFpbnQKKzc5Nzk5IDllYzU5OGI0N2RhNGRiYzcwZTljODFiNzJmZjUwOGE2NjFmMWM1NzUgcHkzaworNzk4MDAgYTdiNTNhZDdhZDk3MjZjZTI1NjU5MzdlZTIxZjQxYWRhOWNhMGRlOCByZWxlYXNlMzEtbWFpbnQKKzc5ODAxIDBhNTNjMjU0YTE5MzdkYzA3YTJkZmI3ZTY1MGU3NWJlMWRhMzFmZjggbGVnYWN5LXRydW5rCis3OTgwMiBlNzdiMmZmMjRkZGIxNGY5NTg2YWY3YjY2Njk5MWUyMzI3MzhkZGEyIHJlbGVhc2UyNi1tYWludAorNzk4MDMgN2YyZDdiZmIwNTY3MDZjZjM3ODEyZjk5MThhYzI0Y2NmNmU5MTJkMyBsZWdhY3ktdHJ1bmsKKzc5ODA0IGFjZTcxMTU1MGI1OTdlY2FmYWYyNzFhOTNlMjQ5ODNjNzA0OTM1MzAgbGVnYWN5LXRydW5rCis3OTgwNSA5ZGU1NjMwZmM2MWJhMDA5YzgxYjUxYjFmYjVhOTg5ODJjMzg3ZTE1IHB5M2sKKzc5ODA2IDhmNDVkMzdjNTVhMTQyYmY2M2YzZTFjYjVjMjJmZjQzNTdkOTY1MTAgcmVsZWFzZTI2LW1haW50Cis3OTgwNyA1ODZlMWNlOWYyNDNjODRhNWY1YjM3MWRjNzgyOGI2ZGUxMDYyZDgyIHJlbGVhc2UzMS1tYWludAorNzk4MDggM2M5ZjA4ODdlZTNmOWFlYTlmYjUyMjA1YmY5ZjA3NDhlNTI0NjljNyBsZWdhY3ktdHJ1bmsKKzc5ODA5IDVkYWE3NGJjZjZhMTU5MDkyYWRhMTA0ZDYwNTEyZjlmNWE1N2U1MmYgbGVnYWN5LXRydW5rCis3OTgxMCAzY2U2NmM2OTIyYWJhZGJhM2Q4OWVjNDExNTg2YzNlY2VjMGQ0ZWViIHB5M2sKKzc5ODExIDlmZDg4NTJlY2RkNGMyMDJlOTExOTA5ZWMxZWUxZmNhZDRlMzhjOTIgbGVnYWN5LXRydW5rCis3OTgxMiA2NjQxNzM5ODRmMmQzYTIxZmFhNGM5NzY4YmUwNjMyNzQ2NTFlMTdlIGxlZ2FjeS10cnVuaworNzk4MTMgOWU1ZTlkOGZhODQ3NGZkMWI1ZmI5YmEwMDFkMDYxNmNjMDc3OGE4YiBweTNrCis3OTgxNCAyNWMyODUyYmZkMTViNTQyOTEyZTE3NTkyZWVhMjAyMGZiZmMxNmY5IHB5M2sKKzc5ODE1IDFhZGNmNGE0Njg1NjA2ZTViZmI1YTI2Y2UzOGM1NGQ1MGE2YTliNjcgcHkzay1qaXQKKzc5ODE2IGM1YmU1MzdiNWJhOTA5ZDk5NWJmNDAxZTEzNTQxZjY5ZTI4ZDUzOWMgcHkzay1qaXQKKzc5ODE3IDkyMjA3OWY3MjRhNjIwYzIzYTkwNDJmMzRlN2RmZDJhZGYyYzMyZTcgbGVnYWN5LXRydW5rCis3OTgxOCA5NDI2MmQwZTA2NGE1ZWE4OGYzMzdmNTBlMGNmOTJlZDJmYzkwM2Q5IGxlZ2FjeS10cnVuaworNzk4MTkgZWVlYTc4ZGY4YTNjNzJmNDczNjdhOTQwNmY1MWMwOTZkNjAxMDAwOSBweTNrCis3OTgyMCA5NjAwNjI1YzE1YWZhOWMwYTQyMGI4ODExNDcyMWI0YmEyOWExZTllIGxlZ2FjeS10cnVuaworNzk4MjEgYzEwMDI0YWJkMTE4ZmZjYWZjYzdkZGZlMjY4ZjE3N2JkMTgyMDc1YyByZWxlYXNlMzEtbWFpbnQKKzc5ODIyIDJmZmIyMjRjNjFmNmM3ZDBiYjJiODZjZjQ1MjBmZjJiYjViMTEwZmMgbGVnYWN5LXRydW5rCis3OTgyMyAyNmM2ZGUxOGNkMzBiNWRiMGM0Nzk1NjI4ZjJiMzNkMDczZWVhOTAxIHB5M2sKKzc5ODI0IDM2N2FjNDhiZjA4NWE1YTNiM2JhMWIzY2MxNmE5M2I3YTNlY2FlNDUgcmVsZWFzZTI2LW1haW50Cis3OTgyNSBhMGMwODNlMWQzMWZkZDJmOTNkM2E0NmJmYTQ3NThlNDViZjFkMzk2IHJlbGVhc2UzMS1tYWludAorNzk4MjYgOTViZjk3ZGNjNTkxOTI2MDIzODRmZjlkOWZkMzJiYjlhZGE1NTM5NCBsZWdhY3ktdHJ1bmsKKzc5ODI3IDcyNzQ2MWQ2NmQxMDIyNGRjNzkwZjMwMzkxMjEzZjZkMzQ5OTYxOWUgcmVsZWFzZTI2LW1haW50Cis3OTgyOCA3ZDg5ZDBkYWU5OGU1NTcxOGViYjRhNDYxMTMwZDA0YTZlZWMyY2M3IGxlZ2FjeS10cnVuaworNzk4MjkgYTY1YTk0YjAwOTAyZWMyMmNiZWY4YWNjOGEyMTQ3YjVjYTBlNjdlNiBweTNrCis3OTgzMCAzNzc1YTRmZDExYzJhNzNjZmExOWMwNmY1MWE5MzRiYjIxNmY2YjE5IHJlbGVhc2UyNi1tYWludAorNzk4MzEgZDQ4ODAxYjg2MzgwMWY3MGZmNTVkMGE4ZGVkOWUwN2QyOGUxOTEzMyBweTNrCis3OTgzMiAyYjkzZTMxNjU5NjFlMWE5MjMwZGMzYWRkOTRhMWE1MTJjMzk5YmY0IHJlbGVhc2UzMS1tYWludAorNzk4MzMgNTc2YjBlODczNmM3ZmVhNzRhN2ZjYzM2YmRjMzE2YjkzMzlhZDlkMCBsZWdhY3ktdHJ1bmsKKzc5ODM0IGYxZWEwM2UzN2ZmNmVjYjdmMTI0MDExZDQ3Yzg0NjdmZjY5NTBlZjUgcmVsZWFzZTI2LW1haW50Cis3OTgzNSA3Yzc2YTdiNDExNjAzNWM5NmM5Y2NlYjNjNWRlMjQxNjBmNjg2ODQ0IHB5M2sKKzc5ODM2IDZmZWI1YWRkNzYyYWM2ZTE5NTE0YTFiNGI2MThhYmExMDZiYzQ0MDkgcmVsZWFzZTMxLW1haW50Cis3OTgzNyBiNjZmYzg4ZmE5NmQxYmI3NjYyMzgzYTI0YzlmYzY2NDg5OGU4YjNjIGxlZ2FjeS10cnVuaworNzk4MzggNjRmZGY2NmY2OWIwYjc4YjU0YzJhYjJkZmRjMzMzYjMxNmI3MGI2OSByZWxlYXNlMzEtbWFpbnQKKzc5ODM5IDc3NzRkNjBhODlhOTI4ZTVjNjExYzk3ZDBmMTcwOGNkZTVmNTFjYTMgcHkzaworNzk4NDAgNjk2Y2I1NDk2YTBiODZkMmRjOTAyZmE3MTA0ZGFkOTdiODNlYzZlMiByZWxlYXNlMzEtbWFpbnQKKzc5ODQxIGM2NzMzOWUzNzFhOWIyNWQxZDM5M2IzNTFiZGY0NGYxNDhhMDUxMjcgcHkzaworNzk4NDMgYzhjZmIxZDA3NDI5Y2ExMTFhMjkzYmY1MjJjNTRkZWZiYzk0NTY2YiBsZWdhY3ktdHJ1bmsKKzc5ODQ0IGI4ODg0MmY2NTM0ZGU0OGUxNmMxM2VhMWNiMDE2NjlmZjgxNDU5ZGIgbGVnYWN5LXRydW5rCis3OTg0NSBiNjEwOGY3MjBmNjk4MzNhMzRjYjY4OWJmYWJmMTJjMThiMGE3Y2E3IHB5M2sKKzc5ODQ2IGYxOTRhM2NlZWZhYWMwMGQxZDIxZTcxOTEwNDViOGVhMDYyN2NlNjYgcmVsZWFzZTI2LW1haW50Cis3OTg0NyAyZjI4ODMyZGMzNmMzYjAxYTg3Y2UyMjZhODY2MTYzNmM4ZjI0YjQxIHJlbGVhc2UzMS1tYWludAorNzk4NDggYTczZDYwNDUxYjQ5MGM2YTFhNzJmZmIxYmU3NGZlYjJmOWFhMmE1OCBsZWdhY3ktdHJ1bmsKKzc5ODQ5IDIwYTU5YmFkYWZhMWMyMjE0Y2E2Y2I5YmVhYWE4YWUwMjBkYjRlZDggcHkzaworNzk4NTAgM2NlNGFhYzIwOTM1Nzc2MDM1ZjA3YTMyMmFjNWU4NGQ4NzA2NDgwOCByZWxlYXNlMjYtbWFpbnQKKzc5ODUxIGQ1MWEyYzdjYzgxMWExMmE4NTI0ZTMxNDY1MGE0YjE4ZDk2MGNjYzYgcmVsZWFzZTMxLW1haW50Cis3OTg1MiA1YjBmMWQ1YmQ1NWE5N2MwMDZiZWQxMzAxNTQ3N2RlY2IyNTkwYjM2IGxlZ2FjeS10cnVuaworNzk4NTMgYmJjYzU0YWNiZDhhMmQ5MDU0YTdjYjc3MTkwY2VhNWMzNWExMDUyZSBweTNrCis3OTg1NCAzMzI3ZGYzMmMxMTdjYWMyYjFmMjU1NTE0YjVmNTg1YjAzMzQ2Nzk2IHJlbGVhc2UyNi1tYWludAorNzk4NTUgNjNhZjQ5NmIxNDkzOTQ3M2ZlNjY3MGQxYTMyZGRlZTgwNDY1ZDliYSByZWxlYXNlMzEtbWFpbnQKKzc5ODU2IGY0ZWM0MDczYmQyZTU5NjgwZDFlNTU5NjZmMGMzMDRhNzRkZDUxOWYgbGVnYWN5LXRydW5rCis3OTg1NyBjZTk3OWI2NGIyM2E3OTBiYTQxNmUyNjQ1MjJhYTM5NjVkZDIwZWM4IHB5M2sKKzc5ODU4IGEzMWY4MGQ1ZDFhMTZlYmY0ZDc3MTg1NDIxY2EwMzNjNzcxZTM2MzAgbGVnYWN5LXRydW5rCis3OTg1OSAwMWMxYWEzYTQ5YTdjZDFmNTVmNDJjN2U2MGE1ZjcyYjZhZWRjNWMxIHJlbGVhc2UyNi1tYWludAorNzk4NjAgNTY5Yjg1OWFkZTIwNzczMDJlNmQ1OWJmZWIwMWJlOGUwY2ZhYjQ2NiBweTNrCis3OTg2MSA4MjczZjg5OTRhODg4MGFmM2E4NzFiNGYzMmRmMzdhOGZhNWI4YWNkIHJlbGVhc2UzMS1tYWludAorNzk4NjIgOWM0OGFiNzI4Y2UwZDRmMzE1N2I4ZGE5YWQxMjg3NmFmMjExMGU1OCBsZWdhY3ktdHJ1bmsKKzc5ODYzIDJiNGZjZmMzNWYxMjIzZTBhNTYzNGEwNTIyMWVjMDhlMWYyNTY1MmYgcHkzay1qaXQKKzc5ODY0IDcxMjk3MGIwMTlmNzBjYjIxMWM3MDM5OWRkMTBmNWUwNzcxMzAwYTQgcHkzaworNzk4NjUgNmMxYWRlOWVhMWU0NDU0ZDZmM2ExNjIzYWQ5NDc5NjgzYjhlYTY4NCBweTNrLWppdAorNzk4NjYgOWJhOGM2ZTUyZmEwZGRmYjdmNDNhYjJmODAwM2RjMjM5MTEwM2Y0NiBsZWdhY3ktdHJ1bmsKKzc5ODY3IGJlMDQ0YjhjMzQzYTM1ZjU5MzU2MTgzNjU5MzI4MmI4ZDFhMzk3YTkgbGVnYWN5LXRydW5rCis3OTg2OCBiYTVlYzc1NjA5MzMzN2UzMTE0NGJiMjFjMWFjZjZjMDZlZjE1M2UxIHB5M2sKKzc5ODY5IGVlYzJkYjA5YTZjMTIzOTFmM2IyNWUyOTk1NDRhNDdjNTA3NGRjNjAgcmVsZWFzZTI2LW1haW50Cis3OTg3MCA4MWQ5MGNlZWUzYmRmYTdmZDVjNmQyMTU5OGI3ZWU4NTljMzE4NzRmIHJlbGVhc2UzMS1tYWludAorNzk4NzEgODkyZGIxOGM3ODE1NDgyMGI0MWYwMGRiMGNkNDA1NTQ2NjliZWY0NiBsZWdhY3ktdHJ1bmsKKzc5ODcyIDFhNmYzZDM2YmJkOTYxYjA0NjQ5NjcxM2Y3ZTU2OTBhYTg4OGE1NDYgcmVsZWFzZTI2LW1haW50Cis3OTg3MyA4MmFmMTEzZTAyMGI5N2FmNzc0NTBkODFiOTg1NGE2Nzc0NjU1NzcxIHB5M2sKKzc5ODc0IGUzY2Y5NzdlMmU2NDY3ZTU5ZGVlMjE3Yzc1OWUwYjc5YTI1YTc3MzIgcmVsZWFzZTMxLW1haW50Cis3OTg3NSA4ZDhmN2UwODJlZjZhODRjZTEyMDQwODcwN2E4YzY3NjRlNGQwODliIGxlZ2FjeS10cnVuaworNzk4NzYgOWNlNTMxNjFjM2E5ZGRkYWYyMzIwYmY0YTVjN2NhOTNkYTkxYTg5NSBsZWdhY3ktdHJ1bmsKKzc5ODc3IGZiNmNkOGFkOGY2OWU2YjBhMDFmNmUxM2U3NTk4NGZhNmJiNmU0N2UgbGVnYWN5LXRydW5rCis3OTg3OCBjMDk1N2RhZGE1YzI3ZGY2MmY0M2ZiZThhMDc0OWQ3YTdmMmVlNGQwIGxlZ2FjeS10cnVuaworNzk4NzkgZDc5NTk5YjIxZTgxMTVjZjk2N2EzMmU5MzYxZTBmYmQ2ZDBjZDJlZiBsZWdhY3ktdHJ1bmsKKzc5ODgwIGM5ZTRlMTJlOWNiNmUwNmQ1NzNkOWU3NmU0ODk1MjJhNmQwNjg4MDQgbGVnYWN5LXRydW5rCis3OTg4MSBmMzY5ZGIwZDU4NDU2NTk0MjU3YzMzMDM4MDEyNDY3YWJlN2EwYTgwIHB5M2sKKzc5ODgyIDEwZjFlNjNiMmIzNzQ4MzgxMGM1NDE5NjljOTFhOTcwZjU1MjU1NGMgcHkzaworNzk4ODMgYjYxOWFiY2UwMjY5Nzc2YjFhMzJkMDZmNmNlOTdiNTRmMDc2YjkyYiByZWxlYXNlMjYtbWFpbnQKKzc5ODg0IDg1ZWQ3NDBiZTMyM2Q3MWZiYzkwZjFlZWU4YzMxMzJlYjc5Njk0NGMgcHkzaworNzk4ODUgZDBhNzRiNjUwNWQzYzdkZTUwOTlhNjk1MjU1NDhlYjNiMGIxNzE4YSBsZWdhY3ktdHJ1bmsKKzc5ODg2IDFjOWJlZmRlODM4NWU4Mzc4MWQ3NTdlMjM1ZDJhNWE1MmNkMzk0NGYgcHkzaworNzk4ODcgN2U1NWIyMWM2NjU4YjVlM2EwODQ0MTYxYTZlYzBjYmEzZWMyZWVjOCByZWxlYXNlMjYtbWFpbnQKKzc5ODg4IGRkYjczMjQzOTY3YmIyYWM0OGM4Zjg3ZTJmMTA3ZjAwNGU1ODMwMmUgbGVnYWN5LXRydW5rCis3OTg4OSBlOGFhOWE3ZGFmMDMyODVhMjY4M2M5YmM5NjkyNjEyOGMxNzY3ZGVmIHJlbGVhc2UzMS1tYWludAorNzk4OTAgMjBkYWQyMDA1OGU0Mjk3ODU5MGFiN2FlNTgzY2UwZDUwZDllZTNhYyBsZWdhY3ktdHJ1bmsKKzc5ODkxIGE4ZTkwY2VjYzY5ZTE1ODI3YTljNTM4NjU2Y2Y5NmQ3NjFjMDY5NDEgcmVsZWFzZTMxLW1haW50Cis3OTg5MiBjMzFjNDNkNmFkNzkyOTg5ZTFkM2M5M2EzMTg1YzAzYWZmNzdmYjY1IGxlZ2FjeS10cnVuaworNzk4OTQgN2IwMDQ1NGJiZmUwYTYxNjBiOTZhODBlZTA0Mjk0ZmNiYjMwZDlkMCBsZWdhY3ktdHJ1bmsKKzc5ODk1IDI1YzNiM2FiZjNlN2M4YjUzZDk1ODBhMzhjOTc3NTliNzJkYWYwZDcgbGVnYWN5LXRydW5rCis3OTg5NiBjYjBiODQwMGU3YzRmOWNjNTk2M2RlZGY2N2VhNjA0NDU1M2JkN2YwIGxlZ2FjeS10cnVuaworNzk4OTcgMzhiMjQyNGY4NWU4YWMwZDgzZDMwOTFkY2ZiYzY5ZDVkZWUyZTgwNSByZWxlYXNlMjYtbWFpbnQKKzc5ODk4IGEzOWJmMzhmMmUwYzE3NzU4NjkzNmYyYWViYjUzNzc1YmZhODZhY2QgbGVnYWN5LXRydW5rCis3OTg5OSAyZThkMmQ3YzQzYzBiNThlY2ZiODY4ZGMzNzQzNWJjN2VkMjUxOTNlIGxlZ2FjeS10cnVuaworNzk5MDAgNzNlNWUzZWFkZDg5M2UwMDk4NWZmOGNiMDc5MThiOTdmNjUwYTcxNiBsZWdhY3ktdHJ1bmsKKzc5OTAxIGFjMDc4YThjM2UxYWYwOWQzZWVhZGNjOTFmNDAwOGNjY2UzNDQ2MTIgcHkzaworNzk5MDIgNzY2MGM1M2Q1NzE5ZmU3MzRlZTNmOWUzMTU5NTE3YjNjMTUxZDAyMiBsZWdhY3ktdHJ1bmsKKzc5OTAzIDgyMjdiNjRlOGQ3ODhlMjJkOGNhYjE4YTE4OGY0MWQ0ZjI2ZDJhOWEgbGVnYWN5LXRydW5rCis3OTkwNCBiODk5ODEyOGRlMDhiNTRmMTZjNTk3MTZiMDllNGM5Nzc2YzYyODFlIHB5M2stY2RlY2ltYWwKKzc5OTA1IGUyNDQ0ZjI4NzliNDM1Yjc4N2IzMDQ4NDYwZTc0NDJmMmZlNzdiNGQgcHkzay1jZGVjaW1hbAorNzk5MDYgOGU1YzcxYzc2ZThmYTEyZjI5MmVhYmE4YzQ5YmQ4NmRlYThjZTk3ZiBweTNrCis3OTkwNyA2ZjE5NTlmNjZkNjkwYTM3MzFjMWE4N2JjYzhhNjMxNDAxOTU4YWFjIGxlZ2FjeS10cnVuaworNzk5MDggMjRjZTRhMDA4OWJlMzI5YzFjZjk5ZjUzYmI1Y2QzMGNhYzM3MDI3MiBsZWdhY3ktdHJ1bmsKKzc5OTA5IDdjYmZmMGIxZWI1ZDE4N2E2MmIyMjI1ZGIzNDhjYjZiZDQ5YjczNDEgcHkzay1jZGVjaW1hbAorNzk5MTAgYTE2MjhiZDk3YmI2ODU0ZjkzNWE0MmJmODJkMmY5MzYyNDFmYTczNCBsZWdhY3ktdHJ1bmsKKzc5OTEyIGE3OTJiOWNiMGQ3YWFiYTFkZGUwMDE0NzNkZTY5YWJjOWQxZTQyNzkgcHkzaworNzk5MTMgMjRkN2Y1NTQwMGQzYTFhYjk0ODA4ZmY4NTRmYTU5ZTFlOWVjOWE3YSByZWxlYXNlMjYtbWFpbnQKKzc5OTE0IDgzN2YzYmIxNTc1ZmI4OGZjZDE5OGU0N2E1NjBlZTE1NzM3ZGExNGQgcmVsZWFzZTMxLW1haW50Cis3OTkxNSA0OTkxOWIzMWZmMjAwNzY2Y2YyOTZhMDU4ZTg3ODExMjI4Nzg2N2Y3IGxlZ2FjeS10cnVuaworNzk5MTggMzVhOWRhMDM5NjYzMDMxZTBlZTI1N2NhMTFjOWY3OWFkODc0ZjJjNiBsZWdhY3ktdHJ1bmsKKzc5OTE5IGE1ZWQwMzc3M2U0ZGViNzVjZWM3YWQ1ZDljNzdlMjk2ZTcwNTNjNzggcmVsZWFzZTI2LW1haW50Cis3OTkyMCBhNWI3ZGNiOWFmOGZhMjg1N2QyOWQ3N2U2OWFhZGQyMzZjOWRjYjhmIGxlZ2FjeS10cnVuaworNzk5MjEgM2VjMTkzMWZkMjU2NGI1OTg4NGNiN2VmNWJiOTY0ZDE1NzRmYzk4YSByZWxlYXNlMzEtbWFpbnQKKzc5OTIyIDQ2NGY2Njk2MjBmYWQ2NTE3NTI4MzRlM2FlNWFkM2I3MzFlNDJmODYgcHkzaworNzk5MjMgNWUwMzhmZDJjMTQzMjg1ZmI0OGY4YmRmYjdhZDg1OWZjZTA2YWJkMSBsZWdhY3ktdHJ1bmsKKzc5OTI0IGMwMGIwNzE4ZmQ1MzNhNzIwZTkxYjYwYjUxNzYwNjBlYmM2N2NhNDcgbGVnYWN5LXRydW5rCis3OTkyNSA3YTRkMDI2YjYzOTAwMjQzNGY1YmY5OTU1NmM2N2Q4MzI5MDNhNGE2IGxlZ2FjeS10cnVuaworNzk5MjYgZWQyNjE2MzA3MGY1OGMxZWU4N2M0MzQxZmM3YmE1ZDdkZWJlZTA4ZSBsZWdhY3ktdHJ1bmsKKzc5OTI3IDNhZTcwNzhkNDI3OGIyZTdlNWRiODdjZmQ0OTBjYmRhNmQ4ODEyMzEgbGVnYWN5LXRydW5rCis3OTkyOCA2MTU1MGExMzAyYjA3YTczMTQzNmE4NGIyZDg2ZWIyYmFiM2IyZmIwIGxlZ2FjeS10cnVuaworNzk5MjkgNGNjMTc1OGRjZGY3OGMyNzJmNjk5ZDFlZTQ5MjZlYWY1MjM2OGY2ZiBsZWdhY3ktdHJ1bmsKKzc5OTMwIDJiYWYxY2VlNzFmMmI2NzA4NGFiY2UxNzVkNjZmMDVkOTVmOWRhMDUgbGVnYWN5LXRydW5rCis3OTkzMSA4MDU1MTIzMjljNzUzNGM0MzRmYWUwM2EwODc3NmRhNWY0ZTA2ODM4IHB5M2sKKzc5OTMyIDU1ZmQ0ZTk4N2IyMGUwNzBiMmEyMjlkZjliMDJmMDU4MWFhYmViYjkgbGVnYWN5LXRydW5rCis3OTkzMyA4YzZlNGI3YWQxNThiZWEyOTg3NzI3ZGViYjlkYTFlZTJiNzg3ZjY5IHB5M2sKKzc5OTM0IDA1OTJlNzg0MTc3Nzc0Zjk5OWZiZGFhY2YxYjQxZjRkNjhkMTNjMTMgbGVnYWN5LXRydW5rCis3OTkzNSA5N2I1ODhlZTYyZjBmYjQ2M2Q2NWZiZWRkMTU3ZmYyZDk1NmU3OTcwIGxlZ2FjeS10cnVuaworNzk5MzYgZjM0Y2I1MDFmOGY3ZTMyNjM0Yzc5MzE0MWZhZGFjNGE4MGE1N2FjNyBsZWdhY3ktdHJ1bmsKKzc5OTM3IDU3MGQ5YWM4NGQ3NzdhOTk0ZGZlMWRmZWUwOGNiOTE1ZDk5YjY3N2MgbGVnYWN5LXRydW5rCis3OTkzOCA3MzAxZGE0OTFkNWJiNWI0NmJjODUwOGQ5YTNhY2YxYWZhMWExNDc1IGxlZ2FjeS10cnVuaworNzk5MzkgMzQ4MDljZmQ4NjAxNjg1MmViOTllYzY3ODMzMDVhMTdhMDg1ZWY5ZiBsZWdhY3ktdHJ1bmsKKzc5OTQwIDVmODc4MmFhMGY4YzI4YTM0YmM3YjAwOThhZDZhZWI5MDMyNGYzNDYgcmVsZWFzZTI2LW1haW50Cis3OTk0MSA0NDE2ODIyNGFjNjEwODA3YWFlMjg4MzZlODRjZDRiZWZlMWZhZTRlIGxlZ2FjeS10cnVuaworNzk5NDIgOGY4OWVmOTA5MDA5YjUxYTU0Njg1MzAxZGRhNTdjYTQ2YjAxM2U1YiBsZWdhY3ktdHJ1bmsKKzc5OTQzIGQwMDdmNWU1ZTFmMDE5YTI4MDFjMTU2MjFmMzZmZDA5N2RjNjdlMWEgbGVnYWN5LXRydW5rCis3OTk0NCBjZjdjOWJhMmRlNmU5NDM0YmQ1YzY5NGJhYjQ3ZjAzNzI3M2MwMTQ0IGxlZ2FjeS10cnVuaworNzk5NDUgNGZlYzJlNWUzMzk4YWNiZDk0NDg3YzljMTM3Y2Q3MDQyZmU4ZDk1YiBsZWdhY3ktdHJ1bmsKKzc5OTQ2IGUwZTM1NWFlOTliMjYyNmVjNjAzOTI4NWZhMmFkNGZhNDdiODZkMGEgcHkzaworNzk5NDcgMDA2MWU5ZTMyOWMwNTZhMDAzNDdkZWQ5YmYzNDJjNmU4Nzg4MWE1NyBsZWdhY3ktdHJ1bmsKKzc5OTQ4IDc5MTIzNjZiNDhkOGIwNmQxN2Y4YzQ1YzQ5M2I4MDdjNzRiNjY1ZDMgcHkzaworNzk5NDkgOTkyNmUxMmJmNDg1MDY0ZDFlYmFjODQ1ZjliNjczNzczN2U1NGJjMyBsZWdhY3ktdHJ1bmsKKzc5OTUwIGUxNTkzZTFlNjUyZWVjODdiNTU0NTQzYTYxNmMzYmE3Y2U1NWYxZTkgcmVsZWFzZTI2LW1haW50Cis3OTk1MSA2OWMzNzIwM2ZmYzFkNzkwNjE3NThjODFjZjJiYjQwMThhYTUyZDU2IGxlZ2FjeS10cnVuaworNzk5NTIgZjI0NGZlZTk4OWE5ODFjZWJkMGFkZGRhMjFjMzUwYjE3ZWZiOTc2YSBsZWdhY3ktdHJ1bmsKKzc5OTUzIDg0YWFkNjcwNDYwZTUwNzc5ZGUyMTA5NzRkMjg2M2ViNjQ5NjE2NzggcHkzaworNzk5NTQgOTAyODAzM2U2ZmNjM2Q0ODI3MTBjMzE1MDIxYTBjMTczNDdhNmU5MyBsZWdhY3ktdHJ1bmsKKzc5OTU1IGY0NzA1NzYzNzg3YjU4OWQwY2ViZjY5MGFiM2EzNWE4ZjFkZjY4MzIgcHkzaworNzk5NTYgYTY1ZjkxYmJjMmZiMjk1YjlhZjA5ZGVlMDQ3OTg3ZGJkNDliN2IxNyBweTNrCis3OTk1NyAzMGM4MDAyMjg3NGU3YzkwNTRlNDMwMTAxZjFhZGI3Y2JlMTM4MzYyIHB5M2sKKzc5OTU4IDY2YWQyNjdhNzNiZjYyYTBjOTFhNDc2NzMxMDk1OGFiNTUxMzY5OGQgcHkzaworNzk5NTkgZDM5OTU1MjE2YzA3YTJjZmQ5ZWY0MmFjZTc0ZWM5MTM4NWMzYWQ0YSByZWxlYXNlMjYtbWFpbnQKKzc5OTYwIGMyZTFkZTNmMTFmYzFiMjc2YWJkMjI1NzU0OTE4MzUzM2FhNzgzMGMgcHkzaworNzk5NjEgMDI3ZDU3NWM2ODljMTAyMDliNDJmYWEwYmI3YTIxYTJlYjI1MjA5MyByZWxlYXNlMzEtbWFpbnQKKzc5OTYyIGI0YTE1NWU0ZDMxMjkyZGMwYTI4ZWYxOGRhODQyMTM5ZGNiNWI5NjIgbGVnYWN5LXRydW5rCis3OTk2MyA4ZWQ5OTZkYzBlNTIwOWJhYTZjZTU2ZGIxODM5MDg2ZDAwYWVhNWVlIGxlZ2FjeS10cnVuaworNzk5NjQgOWY5Y2IxYzU3ZjJhN2RjZDM3MWJhODczMmI3YmQzZWFkZjA4YzU1ZCBweTNrCis3OTk2NSBjNDE0Nzg0NzNlYWVhZTUyZmQ4ZTk0NjRhNzQxNGEyZDJkZmU0YjFkIHB5M2sKKzc5OTY2IGE4NGRkZDhkZTlkMWRiYTAyYjNiMWM5MzQ1Yzc3MjE5NmU0OThlMDYgcHkzaworNzk5NjcgZGQ0M2UwYzkzMTc1Y2E2NGIxZWJiMGRhZDcwMDEwNjkyYzg5NmUxMSBweTNrCis3OTk2OCA0YWQ5NTJhNmFmOTU3MWQxNDdkMGFkYzBlNmYzMTY4NmFmNTg2Y2I1IHB5M2sKKzc5OTY5IGI0ZjYwZGYzMWIxNDEyZWVmMzYxNDllZTRkYzU2YmY3NmY4ZDEyOWIgcHkzaworNzk5NzAgZTM1MTU3OTEzN2YzZTQyNGMwYjcwYTgxM2Y1ZDRlYTJkODEzZGIzZSBweTNrCis3OTk3MSBmZDNjYWVhOTJjZDlmOTFlYzhkYmE0N2E0ZjcwMTdhYzg1YzkyMDYwIHB5M2sKKzc5OTcyIGNiNmYyYzg5ZjQzNzJjYzM2NmQzNmQ3NjgxNjkyZTJhZTc4OGU3NjcgcHkzaworNzk5NzMgMDkzZTJiNzE1NjQ1NzQ5MTkxNzdkZGE4ZDk4ZjVlMWY5YTUyZjkxMSBweTNrCis3OTk3NCBkNjU0Mzc0OTI0MjYxOTcwODIyNDk4NDVmZjhmMTM5MTBiZDg4ODMwIHB5M2sKKzc5OTc1IGY1YzRmYzBkMzM3MzM2ZGMzNmE1NDJkZmUxMTQ3Nzc2OGExZTRlMDAgcHkzaworNzk5NzYgMWE2MmJlZWQ4ZDE1ZWY4ZGFlZjQ1OWZmODcxNWUxMjZkN2RiMGUyMiBweTNrCis3OTk3NyAzYjY4OGRhMThmNTNlMzk1MWExYzZkZWU5ZTBhZWZmMzQ0ODY2ODhmIGxlZ2FjeS10cnVuaworNzk5NzggNzVmOTIwOWYzZmI5OTBmOTkwNzk5MmY4NGJiMzNlOThkNDRmMTJlMyBweTNrCis3OTk3OSBhYzA2MWVmMTQ4N2U0N2I2OTdiM2JhMjIzOTQzOTg2ZmQ3ZmM0NGE3IGxlZ2FjeS10cnVuaworNzk5ODAgOWRlMjYxY2Y1YmMyOTk2YzY5NTJkNmZhODM4ZjYyZmQ2OGI4N2JiMSBweTNrCis3OTk4MSBhZmJiYzk4M2UwYmQwNDEyOTU0YTVjNWJjM2IyOTA2YmIxOTFjY2QxIHB5M2sKKzc5OTgyIGQwM2Y1YWNiNGI4N2VmNmU1ZjE4M2RmNTg0ZTYxNTM5YWY2MmJhN2UgbGVnYWN5LXRydW5rCis3OTk4MyA2MTBiNjg1ZTA1MjViZDZjNDE3NDBmZDA4OTY3ZmE5MWIxZTRiY2VjIHB5M2sKKzc5OTg0IGEyOTI5MWNlNGZjZTNjMWQ4NDJkZjMyZDg5ZDAxZjY1MzIyNzMwYTUgcmVsZWFzZTI2LW1haW50Cis3OTk4NSBlZGViMDdjNDExYWYyOTQ3NWMwZjQ1MjIyMDNlYmE4NWZhMzNmOTk4IHJlbGVhc2UzMS1tYWludAorNzk5ODYgZTQ3NWI3NzFkZDRjMGY5OGQxNGZjMzE2ODBlNmY2YzJmMmE3Y2RkYSBsZWdhY3ktdHJ1bmsKKzc5OTg3IDJhZTVmNjBlMjdjOTk1NmRhZWRjNjAxMTAyZTQ0NGE0ZTFkYjYzODggbGVnYWN5LXRydW5rCis3OTk4OCA1NjgwYmEyZGM5YzI2ZWVjZWI2NDcwM2U0Y2Y5YTA4YTgyMGMzMmY4IGxlZ2FjeS10cnVuaworNzk5ODkgYmFlMzc5MDNmNzk3NWQ2Nzc4Y2EzYzUyNGVhYjFmZGI2NDk5OTM1MyByZWxlYXNlMjYtbWFpbnQKKzc5OTkwIGFkMmZmMWMzNmIxYWMxNmNlOGY4NGFhOTI2NTBmYjRjYTViNTlhYTcgcHkzaworNzk5OTEgZGU1MTUxNDBiNWZiZTRjNGIwY2JlYTliMzA4NjQzOWJiN2NkNTZmOCByZWxlYXNlMzEtbWFpbnQKKzc5OTkyIGZlZGIxZjkzMjJkZjNjM2ZhMTEwYWQ3OWMzZDRlM2FhMjZiMjYxNTAgcHkzaworNzk5OTMgODFkMGVhNmQyZGEzN2EzMzkxZTgxOWU2ZjY3YmM0YThhOGMyYWY2MiByZWxlYXNlMzEtbWFpbnQKKzc5OTk0IGU2OTcyZjFjOWQ2ZDAxNjcxNWM5YzQxYmY4Y2UwZGZlOTlmOGM0NTEgbGVnYWN5LXRydW5rCis3OTk5NSA2MzE0NGYxNDU0ZDIwMGY5MTdiMTEwZjFlZjRkOGEwZGNiYjNjZGE1IGxlZ2FjeS10cnVuaworNzk5OTYgNDJlNjA1N2NmMjhmZDdjOTNlMzE4OGVmMDg0MTMxZGRkYTVkYTRkOCBweTNrCis3OTk5NyA4NjBmY2VkYTJkODk0MGI1NDA3NzYxODhkZWVjNGVlNzliYTNjNDgwIHB5M2sKKzc5OTk4IDRmMTJkY2I5Y2U2ZjExNzdkOTdmZDJkMjdmMjgzMTIzOGI2ZTdmMDcgcmVsZWFzZTMxLW1haW50Cis3OTk5OSA4MTA1OTM5MDg1Mjc3NzQwNDcwMGQ1MjU1ODMzNGIwMzY2YTA4NzVlIHB5M2sKKzgwMDAwIDk4YTE1ZmMzOGI4YmYzMWU3Zjc4ZjdkN2ZhMzdjZWE5ZTk3Y2YwY2EgbGVnYWN5LXRydW5rCis4MDAwMSAxMTYzY2Q4YzM5NTZkYjMyMzFlOWExMzRlMDkxNjJlM2M0OWIzOGEyIHJlbGVhc2UyNi1tYWludAorODAwMDIgOTFlYmNmZjViYjI0YzBjOGI0NDc5Mzg1ZGY2MTNmYzA1ZjlmZTJmZSBweTNrCis4MDAwMyA1NTc2NjU0ZTRiOTFhNTVjOWNmOTAzMDA4NTgwZDZhOWQxYmZiYjhkIHJlbGVhc2UzMS1tYWludAorODAwMDQgNzEzZjFmNmJmMzM5YmVmN2ZmMzQ0ZDFhMWFhNjUyMmE3N2I3OWExNyBsZWdhY3ktdHJ1bmsKKzgwMDA1IDlkMTAzOTA0ODQ5OGE4OGViZTE1NTc2MDJkMDU2MmFhMTM3NmYyYmYgcmVsZWFzZTI2LW1haW50Cis4MDAwNiBiODFkODNhODk5ZjM2NzlmZGFkNzg1NWNlMTYwNzZiMGI1NWQ5MTM4IHB5M2sKKzgwMDA3IDU3YmJmY2U4YjI3ODg4Zjc2NTcyODQ5YmFiZWRlOTYyZWI5ZDU4NzkgcmVsZWFzZTMxLW1haW50Cis4MDAwOCBhMmY1YjNiMTllYjI3ZWU5MWY2MDUzMGJiMDczNTMwYzlhNjNjODQ5IHB5M2sKKzgwMDA5IDE5NTA3MGU4NWNlMTUyMDdlNzYxMjBlODUzYTAwZGYxNzgwNjQyZTUgbGVnYWN5LXRydW5rCis4MDAxMCBmMWMwMzZkZTE5YjdkMTY1NTMxOGY5NmEyNmUxNzBiNDZlMWIyMTc1IHB5M2sKKzgwMDExIDg5NzUyYzAzZjM0MmNlNjQ3MWRiNjEzNThjZTliOTVkMTc4ZGRhNGUgcmVsZWFzZTI2LW1haW50Cis4MDAxMiA3N2M0OWU3MzUyNDk3OWFhZDQwY2UwMzEwMjk3NDE1YzQ5YjIzZDQyIHJlbGVhc2UzMS1tYWludAorODAwMTMgZDQ1MDdmNjE1MzFkY2E0YTg2NTNkODJlYmRlNGRiNDViZmEzZmRmNyBsZWdhY3ktdHJ1bmsKKzgwMDE0IGI1MzZhOGE5NmZhOWEyZDc3MjFkNTFjMmQ1YzFkZTY0MGQ1ODhkNDggbGVnYWN5LXRydW5rCis4MDAxNSAwOTE1ODg5NGEzYjA1ZjJiM2VlZWUzMDI0OWFmYzgzMDBhNmEzMjgyIGxlZ2FjeS10cnVuaworODAwMTYgZDQ4NjcwNTg5MmFiNmUxYjYyYmMwZWNmMDkyMzUwNjQyMDFiNDVlYiBweTNrCis4MDAxNyAwYTFjYTBkNzQ0YTQyNjljNTM2ZWM4NjMwM2VkZjhkMzZiYmJjNWY4IGxlZ2FjeS10cnVuaworODAwMTkgMWE5MGZlMzdiNTlkNzM2YzM0Yzk5MmY5NDliYWYyM2Y5NWQyZTlmMyBweTNrCis4MDAyMCA2MGE3ZTU4YTEwZGFkYmY0ZTY1Yjk3ZWI0MzE4YTc4NGM2NTk5OTc0IHB5M2sKKzgwMDIxIDUyMzc3MjM1ZDA1NTIxMTBjZmQzMDQyYTE0NjRjNjAyYTc2NjE1Y2IgcmVsZWFzZTMxLW1haW50Cis4MDAyMiA2M2I1ODEyNGE1NTRhMzZmMWE3YzNjMDNmZDU2ZDQwNDdhNTFkYWE4IGxlZ2FjeS10cnVuaworODAwMjMgN2EzOTBlYjUwZGYxMzQzMjMyYjY3NWYwYjA3Yjc2OTI5ZDI2ZDBiNCBweTNrCis4MDAyNCA2NTFlZGZkMmRiMzg4ODJmODVkODg5MGQ1OGNiOTA0ZGU1YTdiZjlmIGxlZ2FjeS10cnVuaworODAwMjYgNWU4ZTZlN2VlZGIyMTRjNTEyMWY3OTlhNzBmMDk1NGFiNzFjMDkyNSBsZWdhY3ktdHJ1bmsKKzgwMDI3IGE4YmViNjE0OTIyZjkwMmM5NjQ5Mzg4ZWU2MDQ0NjZmMGVhYjIzOGYgcHkzaworODAwMjggMjUxNzMyMDkyNjAxMzU0ZjJmYzllMmFhMTE0NDdiYmQ5ZWI1Yjc5NyByZWxlYXNlMzEtbWFpbnQKKzgwMDI5IDAxNWU4ZjdmNTI2NGY0ZDExMTQyZDI2ZDU3YTA2MmZiMmQwZWY0M2YgcmVsZWFzZTI2LW1haW50Cis4MDAzMCA0N2E1N2RmNjk4OTZmY2YwZjU3NzhkNDM0ZWNmYThlMmVkMWFkNDE2IGxlZ2FjeS10cnVuaworODAwMzEgNzk5NDI2OWFkM2ExZmE3OGRhNDljNjAwNTNkNTc3MTU3YjhiMjRlNiBweTNrCis4MDAzMiBiOGYyOTdjZGZhZGVmMWZkZTRlNmM4MDkxZWNiOWRlYThmNzIyNmRjIHJlbGVhc2UzMS1tYWludAorODAwMzMgZGYyZTllOGQ0MjhlY2ZkYjM5ZGUzYmFlYWZlNjYwM2MzNDMyZDY0ZiBweTNrLWlzc3VlNDk3MAorODAwMzQgYjkyYjU3ZmZiMzFlMTY4ZWY1MjE3YWUxOWZhZDI0MjU2NThhZDkwNyBweTNrLWlzc3VlNDk3MAorODAwMzUgNzY5OGQxYTEwYjAxYzAyM2NkZTY0NGYyOTc3MmNkYmUzZjMwNmQwNiBsZWdhY3ktdHJ1bmsKKzgwMDM2IDdiY2VlNzE3MGQ3YmMzNzIwZDkzNzk0MmNhMDM3YzAxZGZjODBhNTEgcHkzaworODAwMzcgNmZmZTZmOGNhMDkxNjQ2Mzg0MjlhYjNmZTJlMTQ0MDczOWVhZjM3NyBweTNrLWlzc3VlNDk3MAorODAwMzggYTVjODg2ZWE0ZjZmMzE5Y2MzODNkOGQ5ZDcwNjE5MmRiZmE1ZjFiNiByZWxlYXNlMjYtbWFpbnQKKzgwMDM5IGQ2ZGVlM2FkMjU5YjU2YmVkYzdlODIzZGEwMDNmZTI5NmNjMjE2YjEgcmVsZWFzZTMxLW1haW50Cis4MDA0MCBkNGUyMTAzMjNmNzEzNzQwMjY2Yzg2NWZiZWM3NmEzNzMwMWI3MzY5IHB5M2sKKzgwMDQxIDM0MWE2YmRjY2QyZTcyYTM4OGNlNzZiNWY0ZDJhZWNlZjk3Y2IzMTIgcmVsZWFzZTMxLW1haW50Cis4MDA0MiBhOTIxM2Y5MWFiMTY5ODE4YjdmOTVkMWE4OTMxODIzMThjMWQ0MzMxIHB5M2staXNzdWU0OTcwCis4MDA0MyAwODI0ZjI2ODYxYmFiYzNmMjEyYTlkMzZiMjcxMzA2MWU1ODlmMmRmIHB5M2staXNzdWU0OTcwCis4MDA0NCA3MDJiNmM5OWU3NTdjNzEwNjQxZDQ4ODA1MDNlM2QyMWU2MWM4NzUwIHB5M2sKKzgwMDQ1IDdlMGNlNWY2M2EzYmNhNDlhZDMxMWZlODExMTAzNWFjZTZjODc5YzcgcHkzay1pc3N1ZTQ5NzAKKzgwMDQ2IGI0YzY1MzQzMmNiNjc0YzY2OTIyNmY3MzVhZDA5NGQ1MWM0NzQ0YTUgcmVsZWFzZTMxLW1haW50Cis4MDA0NyAxZGQ0ZWZkZWZmZjE1ODc2M2I1NzZhNzU0YzJjYmRkM2ZjNzE5N2RkIHB5M2staXNzdWU0OTcwCis4MDA0OCBiOTViYTBjYzFiN2U1MTE5M2U4YWVlMjg0YTVhMzdhZDBkYjZiNjc0IHB5M2staXNzdWU0OTcwCis4MDA0OSA1Yzk5ZmRiN2RhNzM3NWQzMDYwOTIzZmIxZTRiZWEwMTVkNDBkZDUzIHB5M2staXNzdWU0OTcwCis4MDA1MCBjYjg3NDVmYTY1ODg0MjkxZDIwZTU1OGZmMGQyYTczMzQ3ZjE3ZTk5IHB5M2staXNzdWU0OTcwCis4MDA1MSAzNmIwMDViYzA4OGZmNTJhYWFhY2ZlNmMxOTdiYzE2MThlODY0ZmFhIHB5M2staXNzdWU0OTcwCis4MDA1MiBmMWEyZjNiNmJmYzY0ODUzZjcxYmJjODIzZWEzZmNmZjA4Mjc2ZjMzIHB5M2staXNzdWU0OTcwCis4MDA1NCA1YjZmZTdkMzU5OGJjZTIyYWM1MTJjODQzM2Y0ZWRjYzRiZDU4ZDZkIHB5M2staXNzdWU0OTcwCis4MDA1NSBlOTg0ZjllMTU2NjZjZTZkMzJlZWExM2MxMTAzZjBlOTI1ZDUyMWY2IHB5M2staXNzdWU0OTcwCis4MDA1NiA1MTdjYzRkNTllMTJlMjQxODU4YjkxOTZlZmI2YmY0MmZhNTU2NDY2IHB5M2staXNzdWU0OTcwCis4MDA1NyA5OWU5YzhkNjkwYWI5NDgwNzEzY2E3NWRiMDlkNDJmZDY4ODUxYzk1IHB5M2staXNzdWU0OTcwCis4MDA1OCAyODU1MzU2NGYxYzY2YTQ2MDcyYmU3ZjA3ZTc0ZGI1MTY3ZWU5MGE1IHB5M2staXNzdWU0OTcwCis4MDA1OSBmZDdhMTNmMGViYmRkYzQwYTg2YjgzMGE4ZmU0MzI1ZjYzZWZjNDYzIHB5M2staXNzdWU0OTcwCis4MDA2MCA4NjkzZmMwNmFjOGVjOGUxZGNmYjI4NTZiN2MwYzViZDYyNTk0MzQ4IGxlZ2FjeS10cnVuaworODAwNjEgNzM1YmVkNmM4ZTM2MWQ4NDcxOGYxYjZlOTY1YmFmMzMyNjFlNjc4NyBweTNrCis4MDA2MiA2NDkzYWU3Mjc5MWQzN2JjZjE3YzAyYTM5ZTQ1ODA5MjgzNTNjY2RhIGxlZ2FjeS10cnVuaworODAwNjMgNDUwYzY5MjEwNTgxZTk0Y2VkODhhMWFiYWY5YTJhM2U3NzIzNGNkNSByZWxlYXNlMjYtbWFpbnQKKzgwMDY0IDZiYmYwN2EzZTAxYjVjMDgyNWE4ZDE4OGMzMjZlZTk3NDc2OThmYzIgbGVnYWN5LXRydW5rCis4MDA2NSBiYWU3OTc2NTE2MGQyMjBkNjEyOTZmZTE2OTM5NzczMjQ3NjM3MjFjIGxlZ2FjeS10cnVuaworODAwNjYgNjJkMTE3ODUyMDRmNDA4NTZmMmMzZWNmZjI4YTVlZTVhN2Q5MGU5MiBweTNrCis4MDA2NyAzNjRmMWFjMzIyNjRlZjdkNDRkYWE1MTk5ZTAwMDA4NWQ2ZTIzYzY5IGxlZ2FjeS10cnVuaworODAwNjggMjEyNjdiZjA3MjBlMDE2NjFiNzNlMTBiODE3NDA5YTZiN2U2ZmViZSBsZWdhY3ktdHJ1bmsKKzgwMDY5IGZhOTMwMGZjYjAwNDA4N2UyOGUwNzUzNTRjNmMwNTdkYzRjNWY3MmIgbGVnYWN5LXRydW5rCis4MDA3MCA2MTAyZDg2ODZhYWVkYTc5ZjYwZDdhMDY0YTE0OWVjMzk2NjAzZGZkIGxlZ2FjeS10cnVuaworODAwNzEgMDFkMWZkNzc1ZDE2YjU2OWYyY2ZiZjBiMTk2NGI3NmQ1ZGQ2NWIyZCBweTNrCis4MDA3MiAyMjE2M2Q4Y2FmM2UzM2NiZTVkYTljZmY2N2RkMmJiMzZkMjIyYWQyIHB5M2staXNzdWU0OTcwCis4MDA3MyA5MDY5Y2E1MWU2MTQ4MjgzNmE1MzY3ODUzMmM2MTNlY2UxNjA0YTM5IHB5M2staXNzdWU0OTcwCis4MDA3NCBkNDQzZDg1ZjYyYzE3N2Q2NTExOGRkODgyZjQwOTE0NjZkZmQyZTlkIHB5M2staXNzdWU0OTcwCis4MDA3NSBjYTExYzgzMGY1Y2M5ZGFjZGZkNTkzYTAwZjE0NDZmYThmZjVhZTZjIHB5M2sKKzgwMDc2IGIxMjc2ZmNkYzNiZDc1MDIwYjAyNDA1MWI4YjBmNjY1NWNmOTZhY2UgcHkzay1pc3N1ZTQ5NzAKKzgwMDc4IGNkYmNhN2MzNDMxZDI2ZjE4NTY4YjhkNzIyZGQyZWZiMWExN2ZjZTUgcHkzaworODAwNzkgZDM1MWUxNWZlZTI4ZjA5ZGRkOTY2ODEwNmZlOWFlYWJiY2QzMGU3YiByZWxlYXNlMzEtbWFpbnQKKzgwMDgwIGI0MDQzNmJjZjRiMmI0NmQ1MzYzYzE0OTNkZDE1ODgyYWQ5ZGJmZTEgbGVnYWN5LXRydW5rCis4MDA4MSBjNWE0ZDlkNzJmOTgyMTkyMzZlMjU5MWUyODUzMTNlMTdmMTI3ZGNhIGxlZ2FjeS10cnVuaworODAwODIgN2U4NmY0NDIxMmQ2NTVhNTRiMjU0ZDcwOGVlNDIwYTYwY2ExYzA3MyBsZWdhY3ktdHJ1bmsKKzgwMDgzIDE0ZjMxMGE2ZTQ5Mjg2YzdhZWY5NTc0MWIyY2Q5ZGM4NmM1NzJmMjUgcHkzaworODAwODQgNDg1ZTM0ZWMxYTFhOGI5NjM2ZWM4ZWU0ZTI2ZDk4ODQ0MzRjYTg0NCBsZWdhY3ktdHJ1bmsKKzgwMDg1IDc2NDk0NjM5OTM1MmRmMGNjYjc5YWQ3YzgyZmY5M2MwMjRmZjNhNWUgbGVnYWN5LXRydW5rCis4MDA4NiA0MjI5NjYyZWRlODcyZGJlYzAyN2Q1YmMyNTQyOWRiOWFmNzJiNWYzIGxlZ2FjeS10cnVuaworODAwODggM2E0NDczYmVlYWY1MjM5NWVkZDU1MmM2N2RkOTgzMzIwMmM4OTIwYiBsZWdhY3ktdHJ1bmsKKzgwMDg5IGY0YmQzYjJjYjAwMGViMzI1NzlhYjAxNDc0MDNjMzVhZGU3ZjI1NmYgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDA5MCA1ZTg1MWIyOWVkOTViMTg3ZDI0MWYyYTBlODA0MmFmZjQ1NjYxMjMwIHNpZ25hbGZkLWlzc3VlODQwNworODAwOTEgYzFkMWYwMDBiNDA0ZTY1MWRlZmRhYmRiNmU2ZDk3OGMwMmU5YTk1OSBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwMDkyIDczZDc4ZmVmOTFkNzBmYTJmZTI2ZWM3OTEzMDg2NzJlM2Q2YWIwOWQgcHkzaworODAwOTMgNWZhNDAyYTQ2ZjVhN2Y3ZTM2MDY4YjUzMjZjZmYwYmY3NjE5OTY2YyByZWxlYXNlMzEtbWFpbnQKKzgwMDk4IDMyNDAxNjcxODYyMTgwODdmNTAwM2ZkNTA3N2IxNWVhYWJkNDMzMjIgbGVnYWN5LXRydW5rCis4MDEwMCBmOThiZDg1YWViYjBmNTM3MTg3NThkNTFlOTNjY2NmNzJiYmUzOTBmIHB5M2staml0Cis4MDEwMSA3YjllMzI4Zjc1MzMyMWQwYjk3ZmU3NGJjZWEzZTRhNzY3ZTE4OTkyIGxlZ2FjeS10cnVuaworODAxMDIgNTFiODU1MTZkN2Y5M2E4M2QyM2E0YjA4NDRjOTIwODcwOGU1YjIzZCBweTNrCis4MDEwMyAzNWFiNWNiZDdlNzkwYzAyM2U1ODkyNTkwM2JmNTU2NWY1ZjIxMmI2IHJlbGVhc2UzMS1tYWludAorODAxMDQgODIwYjdlMGE2ZjM4YjFiNTQxNGNlMGI5MmVmMTg0ZmQ0MmQ3NDU1OSByZWxlYXNlMzEtbWFpbnQKKzgwMTA1IDEzN2I0MjRlMmY3ODRiZDlkYjg0NTY1NWE3MmQ1NDA1MDFjMzAxMjAgcHkzaworODAxMDYgODEyOTc5NzVkMjUzZTljZjM3YmU0ZmZiZDBkYjRkY2FiM2QwNmI1NSBweTNrCis4MDEwNyBhZmIyNWMyZDA1NjE5NGNkZmNlZDhlNGYwZTQ5MTE5NGVmZmNiYWNkIHJlbGVhc2UzMS1tYWludAorODAxMDggMDA1NTEwYWMwOTk1YjZmZmFjMjA4MDAxOTcyMTQwMmFiYjcwZGI2ZSBweTNrCis4MDEwOSA4N2QxMjBiOWVmZjJhZTM2ZmI0MmJmNmVhNzY2MTQxMjIxNGU3NjZhIHB5M2sKKzgwMTEwIDU0N2YzMGEwZDRiMWVkNjU2OGUyNWRlYzk2M2YzNjJlZjMzZmM5NzMgcmVsZWFzZTMxLW1haW50Cis4MDExMSA0Y2JiMGZkZWJmNzM3Y2FkYjQwYWNlZjkyZWJiMDJkNzY3MDUzNTQwIHB5M2sKKzgwMTEyIDk1MTc4ZTE3ZTk2MTBjZDgwNDEzODZiYTBjY2U4MDI4YmI3ZjE0YmYgcHkzaworODAxMTMgYmRhYTI4OWQ5ZjE5OWQ4ZTFlNmY5NGUzZjYzNTc3YzgyYjM0N2ZjMSByZWxlYXNlMzEtbWFpbnQKKzgwMTE0IDA0NDJlN2E0MThjZWJmYzM5NDdkN2QzZjU5N2NlMTM4Y2QzZDFjZjIgcHkzaworODAxMTUgMTE2NDBjMWE0NjI4OGE4NmUwZTQ4MDQzMGQwNDVhNjU4YzBmNjhhMyBweTNrCis4MDExNiAxNWIwOWNjZmFjN2NmZGVlZjZjNDVjNGM5YzQ0ODRhMGIzNGNiNzVkIHB5M2sKKzgwMTE3IDYzMzVjZjM0NWFmYWU4MTNiMmM1YjBmNTA0MDIwNTZkYjgxY2UyMzIgcmVsZWFzZTMxLW1haW50Cis4MDExOCA0NGE3NTA3ZjZkYjU0MjdmNTdkYjk1NWVkYTBhMTcxYTJiNzYyNWRiIHJlbGVhc2UzMS1tYWludAorODAxMTkgY2MxMGExNTI3NTIxZDEwNmI4ZWEzYTk3OWQ0ZmEyMzk3MmVmMGY1MCByZWxlYXNlMzEtbWFpbnQKKzgwMTIwIDQ1YWVkY2FlOWM0NzljMjA2NjYwNGFkYTY5Y2U4NjZkODM2NDRhZTAgbGVnYWN5LXRydW5rCis4MDEyMSA4YWI1YmJhZTVlZmU5ZTg0OWYwODg1Y2MxNDM0MWYzZDYxYjMyNzQ1IGxlZ2FjeS10cnVuaworODAxMjIgODFiYmQ1NjcwZWMzOWVjNzI3MjFjZWY1MzBiYmRkNmZhNWQ5ZTE3OSBweTNrCis4MDEyMyA2M2I4MTVjYzZmNGIxZmQ5YjAxOGUyYjkyMmFlZTAzYmRkNTVmNWQ2IGxlZ2FjeS10cnVuaworODAxMjQgMzY5NmQxN2ExMGIzYTQ1MjgxZWQwYWQ5MjAyYzc3OWU2NjFmNDEyZiBsZWdhY3ktdHJ1bmsKKzgwMTI1IGE3NDkxZDQ3ZDQ1NDZmZGMyYmY4ZTA2ZWY0M2JkZjA5ODljYTIxODIgcHkzaworODAxMjYgY2U2MjRjY2EyMDJhZTkxNGYyODg5Zjc5MzliYjRjZjgyZGFlYTNjYiBsZWdhY3ktdHJ1bmsKKzgwMTI3IDQ2MGE5ODRhOWVkNTcwN2QyZmEzNDdhN2JiNjRkNTQ5NDYyNzg3YWEgcmVsZWFzZTI2LW1haW50Cis4MDEyOCA3NzM0MDhjYTVlZTYzM2ZmZGFjMGM5ZmRmMDAxYmI0ZWI3ZWRhYTRlIHB5M2sKKzgwMTI5IDc4NGEwMjI2NjRlM2EyYzE5YjI1MzY3OWQ0MzYyMTlkNzQ3YmQyYjYgbGVnYWN5LXRydW5rCis4MDEzMCAwYTAxYTNlYTE0MGE5N2UwNDgyZGEzZjhiZjRmODM4NzVmZmFjYjgzIHB5M2sKKzgwMTMxIDY4ZmQ3MGE5ZTc3YWZkY2U3ZWU5YzY3MzIwNmYyNDFhNmU0MjI5ZTcgcmVsZWFzZTI2LW1haW50Cis4MDEzMyA1ZTFkYmMzYWU3Njc5N2I3Nzc2MDg3MDUxYjczYzM4ZjUzNzI4MTNmIHJlbGVhc2UzMS1tYWludAorODAxMzQgMWEzMzA0Y2U5YTJlN2FmYTZhZGUzZGNlMGEwZDE5YWIzN2UwMjRkMSByZWxlYXNlMzEtbWFpbnQKKzgwMTM1IGRjNzY1YmNhMjRhZGQ4NGZiNWRlNTk1MDExZWNmOWNlODdjYTlhYzYgcHkzaworODAxMzYgZTUzOTBmZWRjYjZiMTYyYzNkZGNhZTIxOWY1Yzc1MDMyMTY0YTRjMiByZWxlYXNlMzEtbWFpbnQKKzgwMTM3IDdiNjllNjMwZDIzNzc5MGI1Njg1ZjlmMjA4MzA0ZjhmNDc5NzQyNjMgcHkzaworODAxMzggYzUzMmFmYjBmYTg5MjgwMmUxM2ZmY2ZmZTliNTQzZDRlNDgxNjllMSBweTNrCis4MDE0MCAwNDZmOTdlZDU2Nzk0ZWZkZTc1MmQ4ZGI4M2EyNzU4NGFlNDZiMzhhIHB5M2sKKzgwMTQxIDBlMzZjYzBkNmFiMDIwMzM2OTkyMTM5NWFhMTE2MmUyMmQ2ZWVkZmIgcHkzaworODAxNDIgNzM0ZGQyZWRhMWNjNGNhNGJhNjAxM2FmNWY2OTY0YTc1YWM4M2RkNyBweTNrLWppdAorODAxNDMgNzMyMWM3ZDY0MmFkZGE5OTU4MzMyN2M3NmIwZTQ2Zjc5Y2QyZDFjMCBweTNrCis4MDE0NCAyNWUzNWUzODM4Yzc3NTlmZDdmN2M2OGIyN2NkYjFlYTRlMGU4OWM1IGxlZ2FjeS10cnVuaworODAxNDYgN2IwNjU2OTI5Y2RiOTI0NTI1MGJiNGNkMzA1NDFkODA3M2YyMWQ2MCBsZWdhY3ktdHJ1bmsKKzgwMTQ3IDI5MzhiZjg5OTg2Mzg5NWE0ZDJhMmM4OWM0YmJiZDdlNzcyOGU3NzEgcmVsZWFzZTI2LW1haW50Cis4MDE0OCA0ZjEyMjBmM2UyYzdkYjhhMjY3NTFhNDRiYTBhYjFjNDA5MTZjMTMyIHB5M2sKKzgwMTQ5IDRkMDIwODY2MWIxZjczODdhNGM5ZDRkNWMyZTE3OGZmNTAxYjU4ZjkgcmVsZWFzZTMxLW1haW50Cis4MDE1MCAzODRkZDQ0OWE0ZWU4ODJlYjkwMGFjZThjZGVkMzM3ZWM2MGFiOGY5IGxlZ2FjeS10cnVuaworODAxNTEgNzQ2MmU3NTJmMGZhMjhiYWJkYzkwOTk1MTg4Zjk4MDYwNDQwYTAxMCBsZWdhY3ktdHJ1bmsKKzgwMTUyIDMzZDQ3OWEzODY2NmFjNTk1ZjNkZGJiMWQxMjNjMjMxOTAxOTAwMTMgbGVnYWN5LXRydW5rCis4MDE1MyBmMmUyYjE5NmRiOTIyYzI3OGQ3NTAxMDI1ZDJlNzM0ZGZiYjc0M2QxIHB5M2sKKzgwMTU0IGU1ZjZkZTE4YjcxNTZlNWMxNDI4YzAwNmQ1MjBiNzM4OThhYjZlMzEgcHkzaworODAxNTUgY2MzODJmMzliMzk4Y2Y5OTgxZjE4MDgyZGUzY2ZkZWQzYzc5MjdmMiBsZWdhY3ktdHJ1bmsKKzgwMTU2IGQ3ZDVjNzY1NDVmYjM3ZjVjMDVlZDQwZGNjYjk3ZjRiZjU3MThhZmEgbGVnYWN5LXRydW5rCis4MDE1NyBiYWM5OTIyOWRhMmRjYTk0YjYzY2ZlYmFiZDZmZTkxZTRhOTJkZTdmIHB5M2sKKzgwMTU4IDlhY2U1NWIyOWY3ZTljZTBiYjZkMjNiMzQ1MjZhMGU1ZDU3YjI1NzUgcHkzaworODAxNTkgZWIzMGU2NjJmZDZhYzEyNzczYmEzM2VlYmMyOWJhMTA5MDc1ODZmZiBweTNrCis4MDE2MCBmNzMwNzEyZDk3YjhkZGMyYjYyZTYzNjFkOGQxZWUzZjI0ZWFhNzE0IHJlbGVhc2UzMS1tYWludAorODAxNjEgZDQxOWU3MzczMzcwMjE2NWJjNTM2ZmVhZTAzMTdkYjdiMWY2ZTk5MiBweTNrCis4MDE2MiAzMTZiZWMzZjE4ZWM5MTUxMGRjZTM3NzAxMzcwZGJhNGMyNmEzM2IxIHJlbGVhc2UzMS1tYWludAorODAxNjMgMGYzN2FmYjhhOWYyYzBlOWY1NTA2YTNkZDk5YWM1MDRkMWE3ZTNiYSBweTNrCis4MDE2NCBkM2VhYjQ1OTczOTUxYjhjMDZlZjAyYjllODJlMDBlMTQ1NmJkNzViIHJlbGVhc2UzMS1tYWludAorODAxNjYgN2M5MGFjMTk0ZTQwODJkNjAzMzI4YzFkY2U5NmQ3YWE4MDA4YjJiNCBsZWdhY3ktdHJ1bmsKKzgwMTY3IGUwODdiNWQzZDE5MWMyMTA1ODdjNzMwYzk5MjUwNWQ5OTk0MzI2YzEgcHkzaworODAxNjggZWE0MmFmOTY4ZDlkMDU1YTJjOTg0OTVlMmNlNTgwZGZkZDJhOGZiMSByZWxlYXNlMjYtbWFpbnQKKzgwMTY5IDhlZmJjY2UwNzU3ZGY2MDQ3YzE4OTZmYmExNDQzN2ZlNTNkODdkNDEgcmVsZWFzZTI2LW1haW50Cis4MDE3MCA3ZTI3MGRjZjRiZDU5MGJiOWY1MDQ5OGIyZmVlMjAzNTNmNjQ4MjgyIHB5M2sKKzgwMTcxIDBjMGQ4MTllZGI5ZGNmNjk3Y2NmMjMwOGExYmVlNWJjNWE4MTQ4NTYgbGVnYWN5LXRydW5rCis4MDE3MiBhMDdmNjA4MjVlMWFiOWExYmYxMDI4OTFkZjhkMGQ4ZGI3MGI5M2QyIGxlZ2FjeS10cnVuaworODAxNzMgYTdlNjlhNWYyMzM3ODQ2MTBlMDc4NzljNTU0YjA5YjVkMTE2ZjdkNiByZWxlYXNlMjYtbWFpbnQKKzgwMTc0IDZjYmU4NjQ1NzE3ZDNlOTlkZDJhNTY4MzFiNGRiOTdhYzc2YzFjN2EgcmVsZWFzZTI2LW1haW50Cis4MDE3NSA2NTRlMWNjOWI0ZmY1NmE4ZjVlNWE0OWIyYjdiZWM3OGFjNWNmYWUwIHJlbGVhc2UzMS1tYWludAorODAxNzYgZmE4YTAzZGZjMmQxY2I2YzYzNmViNjEyZmM3MDI1NWJkYWM5YWM4YyBweTNrCis4MDE3NyAxM2Q4NmZjNjk5NDA4MWJlYTkxMTZjMGI4Mzk2YmVkZjA4ZjYwMjIzIHJlbGVhc2UzMS1tYWludAorODAxNzggMmY1NDc1NmFlYjExNjZjN2YwYjE4NTAwOWM0ZTEzY2IwYTc0OWJhYSBsZWdhY3ktdHJ1bmsKKzgwMTc5IDIyNzM3YTk5YmY4YzQ0NGJjNGFmZjNmYmI5NDY5MjJhOGZkNzU4ZDYgbGVnYWN5LXRydW5rCis4MDE4MCA2Y2IxYzQ4MDRmOWM4YjFlY2Y3Mjk1NWM1NDVlNmU0ZDhjYzYxZjdlIHJlbGVhc2UyNi1tYWludAorODAxODEgZmU2YjZjMTg5YmI0MTUzZDVjYWJhMGQxNWRjNzUyNmJjNTRkN2Y4OSBweTNrCis4MDE4MiAxZjNkMmU2MTJiNDRhYjc3ZTE4MWI0MTMwMTkyOTk5ZDM4MGI3NTZlIHB5M2sKKzgwMTgzIGZiM2U0MDBjMmNkYTQwODU5MjQ5NWI5MmFkNjMwZjI3ZmEyODQzYTggcmVsZWFzZTMxLW1haW50Cis4MDE4NCA0NTA1ZWI1N2I0Y2E3ZGY4MDE5NDBkZDBjZTk3MmRmZGMxYmE5MTY0IHJlbGVhc2UyNi1tYWludAorODAxODUgYmVkZDZlZTAzZTYwNGU3NTY5YzZmODBkNjg2YzI0NGIyNjIzNmU2MSBweTNrCis4MDE4NiBmNzYyYzZhNTRiZmNjNzZjNmM1MmU5NjlhNzBmZWM1NTIyMmNhNGI1IHJlbGVhc2UzMS1tYWludAorODAxODcgYTk2ZmQwZTg3NGI0OThhNGU2NDgyN2UwYTFkZTYyZTJiMDU3YTJiMyBsZWdhY3ktdHJ1bmsKKzgwMTg4IGJjYTU3NDM3NjEyNzJkZDFlYWIzMjU4NjFiZGRjMGVhZGIzYjk0MjUgcmVsZWFzZTI2LW1haW50Cis4MDE4OSA3MjY3ZTBhY2UzM2MxNzQyNTBhN2ZjNTZmYzY5NTRmZmE1ZTFhYWFiIGxlZ2FjeS10cnVuaworODAxOTAgMDQzZjE0MzA0ZGVkMDQ3MzU3MDJjMWU0OTIzMmQ5YTIzNjhkZjQ4YSBweTNrCis4MDE5MSAyY2ZiMTBhNmMyYjVkNzBiNTNmZDc1ZDZhZjA0MTQ1NmNlNzM1YjM5IHB5M2sKKzgwMTkyIDlkMzVhZmQ4ODIxZjAwNzVhOGI0MzdmOTY0M2IzMzhmZGRlMGRhNmMgcmVsZWFzZTMxLW1haW50Cis4MDE5MyBhNTJjYjk5MWY1NGMxYjI3NWNiOTgyMmNiNjA4OTIyN2U1NWRlYTI4IHJlbGVhc2UyNi1tYWludAorODAxOTQgNzY2NDllZDQ1YzYzN2JhZjk0ZTQ5MTQxMTQ5ZDc2Zjg3YWQ1OTgxMiBsZWdhY3ktdHJ1bmsKKzgwMTk1IDA2NDRjYTNmZTMwYTA0ZWY2NmMzMGJkNDc3NTI4NjlmZTk5YWIxNzkgcHkzaworODAxOTYgNDc3NGQ1OWVlZjdiMzc2MjEzYzhlZjkxOWYxNDFmMGZiMTFlM2NiZiBweTNrCis4MDE5NyAyOGZjMzE2ODhiN2MxMDMxZjI1NmExNzRkYTcwY2YwYTEyN2RhN2UxIHJlbGVhc2UzMS1tYWludAorODAxOTggOWFhYzFkM2Q4NzNkMTgwZWI0NGRkOWFlNjA1OGU3MDg4ODI5MmY1ZCBweTNrCis4MDE5OSA0ODVjM2YwOWEwOWI0OGY4YTNlOTk5MjI2MDY4N2VmMDZhNWMyN2YzIHJlbGVhc2UzMS1tYWludAorODAyMDAgOTM4NmUzZGQ1NzAwYzcwODFjMWM3MDMxYTAwYzI2NGY2MTllY2JiNyBweTNrCis4MDIwMSAxOGExOTU2MzNiNTk5ZWRjMWYxMGM2NjFkY2RlNzQ0NzM4MmQ0NGYyIHJlbGVhc2UzMS1tYWludAorODAyMDIgOGY1YzQ4MGY2ZDZmNTk1MTVmOGY4MGFkYjZkZjFiZGRjMmMzZDc4NiBsZWdhY3ktdHJ1bmsKKzgwMjAzIGNmNTc1NmVjNmVkN2Q3ZjQyYjRmNThjYWMyNDkxMDc0N2ZiYTgxYzUgcmVsZWFzZTI2LW1haW50Cis4MDIwNCBhYTcwN2YxM2M0MDI4YTI3NDEwMWFkZmU1NDJjODQ0N2UzNDAyYTdmIHJlbGVhc2UzMS1tYWludAorODAyMDUgYTcyNzc5NjcyZjE1OWYzMWMwMTliMjI1OTZiZTAwMjgzMjQ5NWNhYSBweTNrCis4MDIwNiBjZjgwNjk4ZjI3NTY4MjhhYWE0ZGEzOWMzOTIxOWVlZWJmMmZkN2Q1IHB5M2sKKzgwMjA3IGI4NzUwMjFjZDk5MzcwMjEwMGQ0ZDlmNmUyZmE0NTFmNDE0OTM5OTkgcHkzaworODAyMDggMmRlYjc4YmM1ZDM4NTkyMTMyNzNmZGE4N2FlZTc4MWNjYzQ1MTkwMSByZWxlYXNlMjYtbWFpbnQKKzgwMjA5IDZlMmUyYjYyNjg1ZWQ3YTljMDcwY2M2ZjM1Mjk1MTc2NjE0YWM5MTAgcmVsZWFzZTI2LW1haW50Cis4MDIxMCA0MWUyZjA1NGQ1MzkwMWNhODIzOTMwOWU1ZTYxZjdlMmEzMzBmYWQ2IHJlbGVhc2UyNi1tYWludAorODAyMTEgN2E1NjRkNzRmZDRhOGEzNzg5MTlkZTViNWFjZmQ5OTFjNmE0MGZhNiBweTNrCis4MDIxMiA3ODk2MTJjZDA5NzA1ZmQyNzFkNTcyYWE1NDI0NzlmMzRlNzk4NjQxIHB5M2sKKzgwMjEzIDgzNjgyZTdkNTlhNjQ0MzkxZTYwYjgzNGY4OTIyYWI0NTU4YjdlNTEgcmVsZWFzZTI2LW1haW50Cis4MDIxNCBjZTYwNWU5NTAwMDgwNmNlMjc1NDQ0MmIyMDNiODc5MDVjMTUxZjUwIHJlbGVhc2UyNi1tYWludAorODAyMTUgNDA5MmU0NTY2ZGIzZmYyNjE5YzIwMjI2NzQyZjJlOTM4MjJjZTI4MiBsZWdhY3ktdHJ1bmsKKzgwMjE2IDdmOTI2MzJmOTEyZDZjN2EzNDYxYjY1MTU2M2NjMDQ2ODVhNTFmNGUgcmVsZWFzZTI2LW1haW50Cis4MDIxNyBiNTE0ZjgzMTFmMjg1NWQ1ZDVlNTZiOGUwNGMzZjlkOGVkY2E2YzRmIHB5M2sKKzgwMjE4IGJjZmI2YmFkZmY4ODQxYmMwZTRjYzAwZDJhNjE5OWJkZWZlOTI3MmMgbGVnYWN5LXRydW5rCis4MDIxOSA3MTg2MGNkYjQ4ODY5MWU2MDE0N2QzOTdmMTA2OTQ3M2Q1NTFjNzRlIHB5M2sKKzgwMjIwIDFmMDJiNDNlMDkwODkyNDdjYmRhYmQwMzY1MDQ2ZDIyNmVkMTQ1OGIgcmVsZWFzZTMxLW1haW50Cis4MDIyMSAyZjMxMWRhYjA2OTczNTgwYjM1NTgyZTE0YTI3NWE1YmNlNzRhODJiIGxlZ2FjeS10cnVuaworODAyMjIgOThiMmNkMTBhYjA1ZjAxZDJhNmNlZTJhNzdlZmU2NzcxMTAzOGY0MyByZWxlYXNlMjYtbWFpbnQKKzgwMjIzIGY3N2UzN2FmYzg3MGE0MzhjZGM3MDMyN2MwNDEwNGIxYTZiZTVjZWIgcmVsZWFzZTI2LW1haW50Cis4MDIyNCA3YWQ2ZWE5N2Q0NDAyMzE1ODY3MDFhMDVhODExMGE2NDU1YmE5NzNjIHB5M2sKKzgwMjI1IDMwMWZiZThiZmFkMTg1OWUxNzVjZjAxZTA3ZWM4OWY2NGFjMGEwMTUgcmVsZWFzZTMxLW1haW50Cis4MDIyNiAzMjI4NTMxMzg5NmM4NDAxMDJmOWUzMWNlZTRmMTMxYzFkM2I1OWJiIGxlZ2FjeS10cnVuaworODAyMjcgN2ZlZjg3OTZmNzc3MDQyZDdiODJiNWQ4M2Q1N2ViOTZjOTNhMTMwNCByZWxlYXNlMjYtbWFpbnQKKzgwMjI4IDM5YjU2MWM1M2U5YWQ3YmJmNjFjMGE4YWNiMDhjOWE1M2QzNmRjNmUgcHkzaworODAyMjkgYzEzZjgyNWZkZWFiNzZiMjQ5MGQ3NDI0NTA5NDdlYjBmYTY5OGM2ZiByZWxlYXNlMzEtbWFpbnQKKzgwMjMwIGJlMTdiZGE1YTY1OGUyYWIxYjk5NWEzNmNkMmZiMGU5YzEwZDFhZmEgcHkzaworODAyMzEgMzU5OTU0Y2YwY2NkYTlkMGUyZmMwNjA4NWVkODBmNjY1OWEwMGUyMSByZWxlYXNlMzEtbWFpbnQKKzgwMjMyIDU5MjdmZGY1ZDQ4YzVhZWVlMTdhMjgyZDBjNWNiYjIzMWEzMmQyZDIgbGVnYWN5LXRydW5rCis4MDIzMyA4Yzk4MjhjMTUwNDA5ZjI3ZjExZWEzZjIwYjY1OTczY2M2NTcxYzRiIHB5M2sKKzgwMjM0IGJmOGQ1NDAyYWJmZjI5ZjU0NmNkMjM1MmYyZmQ4OTYyODE5OWIxZTEgcmVsZWFzZTI2LW1haW50Cis4MDIzNSAxZmI2MDgxNDIwNDA0ZjVkYWViNzU5ZDZlY2RjNmZmMThkZGM1ODEwIHJlbGVhc2UzMS1tYWludAorODAyMzYgNWY1ZWU5NGYxOTI2M2RmN2U1NjA5OGJjNzNjMmI1MzAwNmRlM2I3YyBsZWdhY3ktdHJ1bmsKKzgwMjM3IGMyMzdiZjNkMDQzY2FhZDBiYmM1MDA5MTM3NGJlOTQ1YWQyOGE1MzcgcmVsZWFzZTI2LW1haW50Cis4MDIzOCBlZjczYWM3MWUyOTUwMmY2ZGNlZmYzYTM2OTQxN2I5NGRiZTVlYWE0IGxlZ2FjeS10cnVuaworODAyMzkgZTBmY2EzZTdjZWI5NGJkYzU3NDExZjY3MTM5ZTc1OWEzOTFlYTZiMSByZWxlYXNlMjYtbWFpbnQKKzgwMjQwIDYyMDNmNDcxNjU4NWYyZWU1OGNmY2Y1NTdjYjhjNmU5Mzk4YzcxNjcgcHkzaworODAyNDEgOGQwOGZkYzk3YWE0YzUzM2NlZmE4YjA4NGRkNjhjNjNkOGVjMTVlNSByZWxlYXNlMzEtbWFpbnQKKzgwMjQyIGRjNzNlZTJhOGI5ZWM2YjBiYjU3OGEwZTA2OGQxYmU5ZmQxN2QzMjMgbGVnYWN5LXRydW5rCis4MDI0MyA3MjViZThmOTQxOGI4M2U0MjRlM2NjNDUzY2ZjZWI5ODBlYjVkYjA4IGxlZ2FjeS10cnVuaworODAyNDQgODJkZTBiNDg4ZjJkZDczMWNkNjAwNTU5MDJiN2U1Y2FkNmQ2ZGU4NSBweTNrCis4MDI0NSBiMDE4MzE5YTYxNWIzNTIzMGM2ZWM1MDRiOWU5NDI4NDI5ZTQ3MjM2IHJlbGVhc2UzMS1tYWludAorODAyNDYgZjI3MzJjY2MxMmI0NzBkNDk0ZjJhOGVkOTE1NzQ3ZmYyNmJkYjJhMSBweTNrCis4MDI0NyAzOTczODk4MDU2YjYwZmNiNmE4MDIyMWNlMjRhZmY3MGY0NWUzYTAwIHJlbGVhc2UzMS1tYWludAorODAyNDggNzYzODIyM2YyZTAyZTk1MTIzNzhhZjg4MGE2NmQwNTA0NTlhZGNjOSBweTNrCis4MDI0OSA4ZGUyODVjYWRiMjQwMzMwNWQyYWFhY2IwMWFhNjM4MWYxMTE0MjFiIHJlbGVhc2UzMS1tYWludAorODAyNTAgYWUyNzgxOTIyYTZkZTU3MTVmOTUyNGU3OGJjMGZiZjAyZmNlNzZkMyByZWxlYXNlMzEtbWFpbnQKKzgwMjUxIGNlYTM4ZWY2MDcwMGVmMWI4YWY3ZDJiY2RiNjBhOWVlM2Y2ODIwNzUgcHkzaworODAyNTIgODI3NjNiMjAwYTc5Mzc5NTYwOGY4NzA3ODc5MTViNGQ0N2Y4MWYyZiByZWxlYXNlMzEtbWFpbnQKKzgwMjUzIGRhODcwNDk5MzAwMTZmYjUyMDc1NDQ2NjMwYjM5ODk3YzEzODBkOWYgcHkzaworODAyNTQgYmI4ZmU3OWRjNWNiMzUyZmE0YWEzMGE4NDdjM2VjNTJiM2IzNTEwNiByZWxlYXNlMjYtbWFpbnQKKzgwMjU1IDdkMzQzMmIwN2VhMWE2MmRmYTgyN2MzMzUwODQzNDk5ZWUwZDJmMTggcmVsZWFzZTMxLW1haW50Cis4MDI1NiBiZTEwZjRmYWFmMTJjYTE0MGI2ZjFmODkzYjI5ZGIzYmY4Y2Q0YjY2IHB5M2sKKzgwMjU3IGMyZmRkZGIyYjRhNTVhZmZmNWEyMzVkZGExMjIwMDZlY2MxNGI3MzAgcmVsZWFzZTMxLW1haW50Cis4MDI1OCA0MGEzYTYzM2M1NjQ4NGZkNjhmMTUwZGM3YTBkMTFjMzg0Y2ZkYmQzIHJlbGVhc2UyNi1tYWludAorODAyNTkgMzg3NDI4ZmE2OWZjZGIwZTUyZDAxMWViMzJmOTU4ZmExMjFlY2M1MiBweTNrCis4MDI2MCBlNzczZTI0YjE0ZTZiZmU3NTVmMzFmNTMzOGEzZWJmZWZmNWRlZmIwIHJlbGVhc2UzMS1tYWludAorODAyNjEgN2NmYTc5NzVhYjBlMTllMDIzNjNjZTA1OWJmMWJhNDcwNTJlZmRhNCBweTNrCis4MDI2MiA3Y2ExMjcyZjQzYTM0YWUzYWFjMzgyOTZhOTZhYTIwNzM4OGQ0MWM2IHJlbGVhc2UzMS1tYWludAorODAyNjMgNzNhNjE2NWQwMDJiZDQ2NDRlNjkzNTJiZTc0MmQ1ZmQ0ZDNiMzQ4NyBweTNrCis4MDI2NCBkMDcxMjAxZjI2MTJkNjdlZjMwNzI4MGNjMjM2NzZkM2QyNDhlMDgyIHJlbGVhc2UzMS1tYWludAorODAyNjUgNmVjYTdmYmQ1MzllZGYxMGZiYjA5M2NmNzI0Y2I0NTAxOGNiZDUxZCBsZWdhY3ktdHJ1bmsKKzgwMjY2IGFlMjcyZDIxMmE5ZGFjYWZkNmQ5MTRkNDkzZmUwZjA2ZGVjZDhjMzAgcHkzaworODAyNjcgNGU1YzZiMjlkOTI5NWZlNzE5N2YwMTljYmNlN2MzMjU2MTM1ZGVlOSByZWxlYXNlMjYtbWFpbnQKKzgwMjY5IDFmZDI3MDllZDNmZGI5ZTAxMzE3NDI3NDk4Y2Y1NjQ1MjJjMGFmZjUgcmVsZWFzZTMxLW1haW50Cis4MDI3MCBmODhlYTFiNGZkYmU3Yzk2OTk4YWIyZjc4NzlhMzI2MTA1YmY2OGIzIGxlZ2FjeS10cnVuaworODAyNzEgZTMxN2U4NGU4YTFhYTFhOWRiOThkNDIzNDFhMGEyMjNhYTRlMzAzMSByZWxlYXNlMjYtbWFpbnQKKzgwMjcyIDA3MDM1ZGUwNWQ0YmQ0ZmNiMDI4MjUyYzEyYjIwZTQzMWIxNzU0YzAgcHkzaworODAyNzMgMGYwMWJkNjIwODRlZmE2YTVlZTFhOGE0MTU1MGVlNmM2NzM5Zjc2NSBweTNrCis4MDI3NCA2ZGE3MTdiZmU0MjU3ODRlZWYxNGY2YjUzZjVjZTE4OThhNzY1MWQwIGxlZ2FjeS10cnVuaworODAyNzUgNTA2ZmFkZGM4YTllNzJmODkzYmY1Y2RiYmNmNDJlODc4NTdkNDgzMiBweTNrCis4MDI3NiA1N2QwOTc5NTA5Njg3MzZiNDQ5NGZjMjRjYTVhZDcyM2M3MTczYjMyIHB5M2sKKzgwMjc3IDdjOGViMmJhOTEyOThiOWVmNjgwNDI5MzlmNzRkYTU1M2U0OTEwN2QgbGVnYWN5LXRydW5rCis4MDI3OCBkMWQyMDlmMmM4MDM5ZDg3YzA2ZGUwZTU5MTgxMDExZTg3NjJhZmZmIHB5M2sKKzgwMjc5IGQ3ZmVmZmE3OGZhMDE2NzQ5NWZkYjVmNDgwMjA2ZTZmOGY2MTE1MDAgbGVnYWN5LXRydW5rCis4MDI4MCBkMDlmODQyNThlNTIyZGRmN2MyNzFlYzQ4ZDUzZGVmZTRjNTM5MmJlIHB5M2sKKzgwMjgxIGEyMmYyYWU4NTY0NTI1MTg1ZTQ4ZmZkZTIzMDNiMjkzYzQ2YjYwMDkgcmVsZWFzZTI2LW1haW50Cis4MDI4MiA0ZGRjYTdmZDM2MzkxOTAwOGVlNTZiZGY4NWQ2OWZhMmUzODI3YzJlIGxlZ2FjeS10cnVuaworODAyODYgYmQ0NWUwMTEwOTkwMTRlYWViYTZhMzdiZGNjNDhkYzY3YTZmNGY2ZSBweTNrCis4MDI4NyAyNTllZmU1Yjk2MWIxZGNmZmQ0MzQxZGFkMWE4YmYwNGZjODk3Y2M5IHJlbGVhc2UzMS1tYWludAorODAyODggODZkMDhjYjZiYTVjMWE0ZGYzNzE0MTM1MjI1ZTJkNjNjNDg5OWFmZiBsZWdhY3ktdHJ1bmsKKzgwMjg5IDE5YTlhNDU3YTQ3YWM2MDMxNTlkMTYzYTQ0M2NjMmYwMzQ5ODFlZjkgcHkzaworODAyOTAgOGIzNmY3MTc1MjM4NmI5ZDY3NWZkNTFkYzI4OGQ4ZjEwZTJkY2I5MiBweTNrCis4MDI5MSBhZjI3YzVhOWZlYjgxNDg2Y2U1MTBjMTFjMmI2YWQwODA1ZGQ5ZWY4IHB5M2sKKzgwMjkyIDhiMzQ0NWRmYTcxOGVjZjE3ZTk4NjM4YjhjOTA1YjAxYjM1NWY3MTIgcmVsZWFzZTMxLW1haW50Cis4MDI5MyBmMzRmYjE1MTBjYmM1MDU1NmJmOWMzYjk5YjdjOTUwZGUxOWZlZGQ4IHB5M2sKKzgwMjk0IGNjZTBhNWIyMDE1ZTI0OWUxNzI5MWJiMWJkYmU0ZTVlMTRiZDUwYTcgcmVsZWFzZTMxLW1haW50Cis4MDI5NSBmNDA0N2I1YTBmNTRiZDUzZjU1OGRhYmNmMWY4MGMyODhhZGY1OTRhIHJlbGVhc2UyNi1tYWludAorODAyOTYgNDczYTBmNjc4ODA2MTI2MmEzYzE5ODhhNTc5ZTFhODc5MjI0ZWYxOCBweTNrCis4MDI5NyBkOTVhY2U1MjhkNjU3MjZlMjYyMWUxNDUyNTg0YTE0OGQ4Njg4OTRjIHJlbGVhc2UzMS1tYWludAorODAyOTggZjVhZmFkYjc0NWRhMWEzMWQzMGZjOTc5ZjQ5Y2FjYzMxMzYyODdmYyBsZWdhY3ktdHJ1bmsKKzgwMjk5IDFiNDNlZTFlZTNkODg1MjVkMWFiOGJiYzcwYjk4NTNhN2FhN2JkOWYgcHkzaworODAzMDAgYTJhNGQ5ZGM3ODg0ZjRlZjQ5YTk2NmFkMGU4N2Q2ZWFjYmQ0MWIwZSBweTNrCis4MDMwMSA3MDM5YzYwNDRhYjY1MzRmYWIxNzVmZGRhZjRjOTZmZjk4OWUzNDJjIGxlZ2FjeS10cnVuaworODAzMDIgOWI5MmU3NjcxMTM1ODU3MThiZGJkNzA0NWJlNzVjMDUzYjFhNWI2ZCBweTNrCis4MDMwMyA4ZTJhNzg4NDkyOWRhMmQxZjc5NjI1NjdkZDkxN2E4MTcyMDFhODdiIHB5M2sKKzgwMzA0IDk1Y2NhZmMxNDQ3NTgxNjE1YzdhN2Y2MmZiNzlmNDVlNjliZjViNWQgcHkzay1jZGVjaW1hbAorODAzMDUgOGE5MWNiMzZlMDk0Y2NjODk3YTM4ODc1YmEzMzQwN2FjNzhlMmRkNCBweTNrLWNkZWNpbWFsCis4MDMwNiAyZGIwNmZhZThjMmVhZDY1NGZiOWY2NmQ2ZTBhMTAwOWUwZjI4MWE2IGxlZ2FjeS10cnVuaworODAzMDcgOTQyNTQyMzFhYTZhZjk5NDdmNTgxZmVhYTMyMzAzMzAzMmU1MWU4MSByZWxlYXNlMjYtbWFpbnQKKzgwMzA4IDgxOWQ4MTM0NzUyMjhlNzJjMDc0MmRjNWZhYjc3OTAwYTVkZmFmYmEgcmVsZWFzZTI2LW1haW50Cis4MDMwOSBjMjkwNWIwZWYxZDI0ZDRjZDllN2UzNzFjMDgzZWI5YWM1Yjc0YmM5IHB5M2sKKzgwMzEwIDBhN2EyNWJiYjM0ZjcyYjRlYjZjYjAzNjU3NDRhZjM1ZGJmNGM4YjYgcmVsZWFzZTMxLW1haW50Cis4MDMxMSA2ZDgzNmIxMGUzNzA5ODZlOTAxODA4ZjM3ZTU3YTcyNzNhMDU4NjBlIHB5M2sKKzgwMzEyIGE1NTgyN2IwZWMzYmI5NTM0NTM3M2JlNjM2YmRhNDk0NGI0ZWZiZjMgcHkzaworODAzMTQgYzkxZmI1MDZmMDhkZjA5NDVjYmY5OGM5NWFlYzI5OTEwNThlMWI1YyBsZWdhY3ktdHJ1bmsKKzgwMzE1IGMxZDhhMDA1NWZkYTZlNDBhM2Y2ZjcyM2UwZDc2MGViZTQwMTU1NWMgbGVnYWN5LXRydW5rCis4MDMxNiA5ZDg2ZjA3MDFkOWM5ODg3ZjY2NzhjOWFlMDBhNjlkNzI0YmU4OTVkIHJlbGVhc2UyNi1tYWludAorODAzMTcgZjM2YTBlYmViMTYzOTE1N2ZkNzlmZjc2YmJiODQ3ZTk1YThhMGNmMCBweTNrCis4MDMxOCBhMGI4YWYxYmU1NjBiZGFkNjA3NWVjNGVhMDNjZTNmMjAxNzkxNmNkIHJlbGVhc2UzMS1tYWludAorODAzMjAgOWJhMDM3ODNlY2UzY2I0NWRhZGZjNGVjMjdiYjhjMzc4ZGFkZDA4ZCBsZWdhY3ktdHJ1bmsKKzgwMzIxIDhlNDI0NzQxMTc1NDI0MmMzNjQxZmVmYTEyNzk1NGU1ZDc2NTY0NTUgcHkzaworODAzMjIgOGE1YjJkMDYyOThkN2Y3MGViNDNiZThiODIyNzkzNTY5YmNiZTRhYyBsZWdhY3ktdHJ1bmsKKzgwMzIzIGEzY2UyNzViZjA5NTczYjYyMTU0ZWQxMTZiZmVjYjc4MmU0MTZlNTcgcHkzaworODAzMjQgODg4Yzc1YTFiZTU1MjE5YmYzNzAzOGM1MTJlNjJmYWQ2OWY3YjUyMCBweTNrCis4MDMyNSA3NjhjZTEwNzk5ZjJkODUzYzRlNGYwMTYxNjcxYmM3Zjc4MGNkZjZhIGxlZ2FjeS10cnVuaworODAzMjYgOTJhNjMzYTMwYWNiNmNhMTI1MjY3YzI4N2ZjZTJlM2NjZDRiZDVmZSBweTNrCis4MDMyNyA2N2I4MWMzMjg0ZjliMDg1ZjJmNjZhMjJjOGQxMGM4YjdiNTI0MDQ5IHB5M2sKKzgwMzI4IDFjMTA1YjM3MDc0NjA1MzA1MmUwMjQ5MTVjYjAwNGMxZGFlYzkzMjMgcHkzaworODAzMjkgZTA5MWQ5N2Q1MGQ1ODMwNGRiZTQ1MDI0OWMzNzdkNjllYzAwYTk4YiBweTNrCis4MDMzMCAwNzM3OWZlNzVjNTcwN2ZkZjA2ZDY1ZWYzZTQ4NTU0NjYyYzJjZTAwIHJlbGVhc2UyNi1tYWludAorODAzMzEgNTdhYTMxMDEyY2E1MWNjM2RhODM1Y2I4OWVmNjNkNDEzZjcxZmJhMCBweTNrCis4MDMzMiA5MjY2OTk2NWM5OTcxOTRjMmNkOTlkMTFiNWM2M2NkMGU5MzRhYmIwIHJlbGVhc2UzMS1tYWludAorODAzMzMgYjE5YzYxNmQ1YjRhZDhlZjEwODMyODgzNDJjZTliN2NlNWJhOGQ5MiBweTNrCis4MDMzNCA3ZDQ5ZjAyMWM4NDIwOTNiMGNkODJmMWQ0NTk2YThlODBjYTFkNzdhIHB5M2sKKzgwMzM1IDlmNGY2NzBiMTQ4Y2JhNjE2NGNiNTBhYzA0NDAzMmVmNmZkYWVkZmEgcHkzaworODAzMzYgMmIwOWQ4MjFiY2UxZTg5N2I5ZjYwOTc2NzM5NDMxMzYwODNhNDcyMyBsZWdhY3ktdHJ1bmsKKzgwMzM3IGNhZDRlMDlmMDJhMTMzMDdkYjAzZDg5OTE2MDg3NWIxOTJiOGI5NTUgcHkzaworODAzMzggNGIwMWU4MGQ2YzFmZjY4ZmZkNjFjZGQ1NDg0NzNjNDZhZjQ3NjFhOSByZWxlYXNlMjYtbWFpbnQKKzgwMzM5IGIzODc1ZDFiMzg0NzM5MzNlODBiMDI0ODdhODM1YmE4YmM2ODMxMjAgcmVsZWFzZTMxLW1haW50Cis4MDM0MCAxODZiYzNiODBmNTcxMjI5YWQ1M2VlZjA5OTA0MjQyNWI2ZTdkM2YyIHJlbGVhc2UyNi1tYWludAorODAzNDEgOTRiNjQ5NDBkYWM0NjRjN2MzYzYzMTk4NGUyYTFlYjRlMDFiNmU4NCByZWxlYXNlMzEtbWFpbnQKKzgwMzQyIDU0ZjE1MDIwMjg4YTQ2YzZmZTYzMDg2YzMzOTA0Nzc1NGZmMjA2ZDQgcHkzaworODAzNDMgMjM0MDk1OTUxMzcwNzFjYWQzZTcxZGIzM2JjZTg3NzlmMDdiYmVjMyBweTNrCis4MDM0NCA1YzYyNWEwNDhmOWE1NmJiM2IyOTZjNDZjMWY1YjAwOGYxYTc5OWVhIHB5M2stY2RlY2ltYWwKKzgwMzQ2IDEwNGU4YzgwMWU1ZDM4MTljNGUxYzg3OGRmYTJlOWFmZjU1MmJmNjEgcHkzaworODAzNDcgYzQ0OTgxN2Y0YjU0ZGQ0OTRkZDNjNGEzNTUzZmM5YWIxYWIwNmU1MSByZWxlYXNlMzEtbWFpbnQKKzgwMzQ4IDZiN2UyMDAwMGY5NzY2NzdhNjc1YjkwZDMzNmZiMTE4ZGNlNmExMjEgcHkzay1jZGVjaW1hbAorODAzNDkgM2YyNzczYWU4NDQ4YWQyMjkxNzRlMzlhZDMzZjNmN2M5ZDU5ZDlhZCBweTNrCis4MDM1MCA1NDc4MDA0MmQxZTdkNzQzNTY3ZTc3YjZiZGMyODM1MmYwYmNlNzZhIGxlZ2FjeS10cnVuaworODAzNTEgOGMwNTE3ZjUwYzRlOTQ5MjAzNTBlOGRhYzhmNWE1MmM2YjI1ZGY4YSByZWxlYXNlMzEtbWFpbnQKKzgwMzUyIGRlMzk0NTEwMWE2ZTAwYjYxYzUxOTE4MWY0YTA3YTA3OWQ0M2I5MjQgcmVsZWFzZTI2LW1haW50Cis4MDM1MyA3ZmMyNGI0ZTVmZWRjOGU0YjgwNDYzMmMyMjJiMTIzYWJlZTg5MDNmIHB5M2sKKzgwMzU0IDg4OTlmNDA4MDQzYzQ3NzU1MDEyY2IyYTJlNmM5NjRjYWFiNDMyZTAgcmVsZWFzZTMxLW1haW50Cis4MDM1NSAzZDczN2YyYWI5MDE0MGQwMDgzOWNmNDEwOWNlYTE4Y2I5YmNmNDA1IGxlZ2FjeS10cnVuaworODAzNTYgMmMzZDdiZDcxNjM2NDhhMDkzMGI4YjE5NTY0OGY3NTBhN2VkOWM0NyBweTNrLWNkZWNpbWFsCis4MDM1NyA3MzZjZjc1MWZmNGY1YTU3M2UyYzExM2RjMmUzNWQxM2E4YjQwNmQxIGxlZ2FjeS10cnVuaworODAzNTggMGU2NGJhMzIyOTJiYTU3ZjJiMmFlOGNlZjU0ZmU3NmYzZDMyMDlhNiByZWxlYXNlMjYtbWFpbnQKKzgwMzU5IGIzZDIwZDQ0NjYzODk4MmU1ZjY4M2UxMGRkZjAzNDZmOTIwZDhjNjggcHkzaworODAzNjAgZGI3MTZhNzRiNTE3ZmM1ZDkyZjI1YzMwNGYyMTFmOTBlNzI3ZjgxOSByZWxlYXNlMzEtbWFpbnQKKzgwMzYxIGRkMThjY2NiNTViMDhkOWU5OWNiM2IwZjgzZDFjNzg3MjIwODZlOTIgcHkzaworODAzNjIgOWRjODY0ZWY2NDI1ZDVlZTgyZjg0MjY5YjhjNzljNDYyZDFiYWM2NiBsZWdhY3ktdHJ1bmsKKzgwMzYzIDkxN2Q2YTc0ZmQ0ZjNhNDg0YjQxOWIyOTYyMWQ1MTg3ZjM2ZjlkMTUgcmVsZWFzZTMxLW1haW50Cis4MDM2NCA4N2M5OGZiNzc4YjRmZDAyY2ZjZGVhYTAyYjFjNWYzYjk4ZTU1MmY0IHB5M2sKKzgwMzY1IDViNzI2YzYwMWUyMjE2MWE2YTBjYjYzZDc4NTRlYzJkNTM4ZGM5MmUgcmVsZWFzZTI2LW1haW50Cis4MDM2NiAzYThhNjE4NGY0MGE1NGVkN2VkOThkOTBhOGNjOGZhNGUzYzMxODk3IHB5M2sKKzgwMzY3IDI2OTAyZDliZTAzM2M2YzAyYTg5NTc0ZDA3N2JhNDcxZGY5YzRkN2MgcmVsZWFzZTMxLW1haW50Cis4MDM2OCBjMDEzYTcxODI5YmYyM2ZjNzcxM2ViODlhZjE2OWJjYzFhYzdmZjU2IHB5M2sKKzgwMzY5IDRhZDkwNDYwMjQ2MWJhMGNjOTE0NDdhMWUzZGE3MWEyMDg3ZTdiN2EgcHkzaworODAzNzAgNTlhZDI0NGZlMjk0MjkwMDUyNzkwNWUyMWUzNmM5NjU1NDQwOTE3MSBweTNrCis4MDM3MSA4N2Q5ODgyMzVjNTE4ZTcyZmVjMWZhOGFhMDYxYzMxY2JiZjZhYjAzIHJlbGVhc2UzMS1tYWludAorODAzNzIgMzFkMjhmMDRiODIzNTU5NmJkYjI3NGM3Y2JjYjE3NzYxNWVjZDU0YyByZWxlYXNlMzEtbWFpbnQKKzgwMzczIDg4YzdkZDNkNzU3OWI2Y2I4YjhmYmE2MjUyMWNjNTZlMzcwNTM1MWIgcHkzay1jZGVjaW1hbAorODAzNzQgNjZjOWE5NTljMDdlZmUxNjA0YWRmMWJhYTY1Mzk4MGJlYjc0MjIxNyBsZWdhY3ktdHJ1bmsKKzgwMzc1IGI2NmZhNzc3MGJiZGZjZmNkY2IxNzMxODg5MTdiMTU4Mzg4ODk4YTggbGVnYWN5LXRydW5rCis4MDM3NiA5NjE5MGI1YjNmNmRiODhlZTM0YzQxZjc0YTA4NTUzNzUyNzI4ZDA5IHB5M2stY2RlY2ltYWwKKzgwMzc3IDU4OTYzYTc2NTQ3MWQ3ZjE4ZmEzYzYzMGI2NTY5ODZkMmU5ZmM2NmYgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDM3OCBmNjMyYTM4NjFkMTI1NWI2YTQwMzNiYjcyOTQ3YmZjNzU0ODdiMDc2IHJlbGVhc2UyNi1tYWludAorODAzNzkgYjQ1ZGRhMGI1MzhmYWFiZTFmNTU0ZjhiNzJmNjI0MGM1MzkwOGVhYyBweTNrCis4MDM4MCA0YjdmM2FlMjJjOGZkZjhmOTMyMzBmZTA4MTMyN2Q3MjViMmE0ZDQzIHJlbGVhc2UzMS1tYWludAorODAzODEgYzRiNTM0MzM3MzVhMmY4ODVmN2NkYjNlODFiZGY1ZTI1NmY0Y2UwNCByZWxlYXNlMzEtbWFpbnQKKzgwMzgyIGQyZmFkNDIxMGRkNWZiNWI0Mjg4OGQ0Y2I3ZWJjNmFmODkwYmZhZmIgcHkzaworODAzODMgMTQ5YmFkZjczYmNhZDE2MzI4ZTExNjdjMTllMTA5NWVhMzhkMWMwMCByZWxlYXNlMzEtbWFpbnQKKzgwMzg0IDJmZTQ3MzhlZWIyMzYxOWU5OGNlOGYwMDAxNGUyNGI5ZWRkZTI3YWIgcHkzaworODAzODUgYjA1ZDAyNWJjMGRmNmFjMGJjNzVhMmUwYmVkODExM2UzNWRhYmM2MiByZWxlYXNlMzEtbWFpbnQKKzgwMzg2IGJhMTJmOTIxMzRiYTQ5MTk1ZTAxZTU0NmY5YTdlYzYxYmUyMmFiNjUgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDM4OCBhOGUwOTNhMjQwOTQ5MjQ5YjE0ZDBjMTM5M2EzMDYyYmY5OTAzYmFkIGxlZ2FjeS10cnVuaworODAzODkgZWRjN2YzMzA1MTA1MGU0ZjM3NmE4OGIxZjFkMTI3YmJjNzFiMzc1NCByZWxlYXNlMjYtbWFpbnQKKzgwMzkwIDQ3MzgwMWFlOWU4ZWQ3ODkzMDUzYWExZDQzMTVlMjVkYmIwNTg0ZjMgcHkzaworODAzOTEgNTQ1MjZlZWM4YmM2ZTY0NzA2NjFlOGJjZDhiMjU2ZDg5MmRiMmYyZSByZWxlYXNlMzEtbWFpbnQKKzgwMzkyIGM5YTMyZWRkMmJhN2M4OTQyNjE1NmFlNTgyNjU0NmMxYWNkMjQ4MDQgbGVnYWN5LXRydW5rCis4MDM5MyA4ZGQxMjQxMjM4MDEwYzg1MDZkZDcxZDAyOTI4OTU4NTZmMjFlNGQ4IHB5M2staml0Cis4MDM5NCAxZDE4ZDczZjI5YjUzZDE3OWE2NTA5ZTlkZjE2OTEzMTZkMzA1NTYxIHB5M2sKKzgwMzk1IDkyMjhjNmFjNmNjNjc4ZTNiODZlNjI5NzM3OTk5YWM0NGM5MGVhYmUgcHkzay1jZGVjaW1hbAorODAzOTYgNWE1MjRjNmQ0ZTgzNTIzNDY5OTQxNTk4NjQ5MTg5ZWZiNDQ2YTFmOSBsZWdhY3ktdHJ1bmsKKzgwMzk3IDNkZDYwNjM1M2FiNDNiOTYwM2MxNTBmZWIxZWVkYmZmYzYyOGNhNmQgbGVnYWN5LXRydW5rCis4MDM5OCAwNTJkNDg1MTVjNzYyZmU3N2MzMzdkNDg4NzIzNzEzZDQyNTViYmZiIHB5M2stY2RlY2ltYWwKKzgwMzk5IGI0ZWQxNzI3ZGY3NGNjMGNjM2MwYTFjMjY1ODg5NzdhOTBmNmYzY2UgcHkzay1jZGVjaW1hbAorODA0MDEgNTYyOTY3ODgxZGM1MjVkZWJjMmEwMWJmYTQ3ZDNjZTNjZjBkYmViMyBweTNrCis4MDQwMiBlNjU2NGRhMDE3MThhNWIyNWZkNDk3MTllZmM4ZjcyODYyYmZjMjAzIHB5M2sKKzgwNDAzIGQyYzUxMmQwZWNiNjJhMzQ4YzJlOWIyMzY3MzNkY2NhZTIzY2U4MmYgcmVsZWFzZTMxLW1haW50Cis4MDQwNCA4NmZhZGFlYmNmNjZkM2EwMTA3NzAyNjlmM2QyYWE4ZGFiZGIxZmY2IHB5M2sKKzgwNDA1IGM2YjRmNGYyYjlhOGI3MDQwNmI3ZTA5MzQ4NWM1NzU1ZjFkZWU3NGUgcmVsZWFzZTMxLW1haW50Cis4MDQwOCAyMjU4MjUwYzFmYmIzZTdjMTVmMmIzNTU3OTUyN2NmZDJhYTk4MzJlIHB5M2sKKzgwNDA5IGQ0MjZiYmZkNWJkNzkyZWI5MTgzZjUzYjczODc0NDdkYTdlNjMzNjYgcHkzaworODA0MTAgZmZmODFkNzI2MjhlM2ZmYTEwYjVmODQwMmU1YjAwMWMyZmMzYjliMSByZWxlYXNlMzEtbWFpbnQKKzgwNDExIGU3NjA2YzE1NDFmOGI0OWYyMGJhMDk1OGVlYzAzYjdlMDYzMjQ0ZTkgbGVnYWN5LXRydW5rCis4MDQxMiBhMDU5ZWE5NjZiOGNmZDE1NzhmMmUzNGUxMTAzNTBiODEzYjYzYjczIGxlZ2FjeS10cnVuaworODA0MTMgODQyOGVhYTJkM2FkMTAxY2EzYjI0ZmM1ZTRmZjZiMWIyMjBkZTQxZiBweTNrCis4MDQxNCA4MWVmMWU4NDUyZmIwNTlkOTE1YWI3NTFhZDUwNTNhOWVlMzM5M2VhIHJlbGVhc2UzMS1tYWludAorODA0MTUgNjEyZTg2YWIwNWYxMzFiNmEwMDI5Nzg4YTczZDY5NWY5ODEwNTBjYSBhc3luY29yZS10ZXN0cy1pc3N1ZTg0OTAKKzgwNDE2IDUyY2Q3ZTA0MGZlZjBkMTYyYjg3NzA3YjRhZmI3YmU5NGRlN2UzNTYgcHkzaworODA0MTcgNjEwYThlZmE4OGRiNjU2MWIzNzhiNzIxZjNkN2RmOWM3OGQ3ZWY3OSByZWxlYXNlMzEtbWFpbnQKKzgwNDE5IDBlYzE2ZDgzMTk5MDU4NGZiMzI3ZTBhODg1OWM4MjQ2YzAzNzQ3MmUgcmVsZWFzZTI2LW1haW50Cis4MDQyMCBmYzk3Nzg0ZTVjYzIxZjI5ZTU2NmI2MWNiMTMwYzc4N2NiMTUwZTcyIHJlbGVhc2UzMS1tYWludAorODA0MjEgZGM4YzhkNTQ1MDRlMTg0MzU3MzgwYWNmMTVlYzU4N2EzMWFiMmNjMCBweTNrCis4MDQyMiA2N2E2MDQ4MjljOTcwYzdiYjYxYWE0OTg0MjEyYTQxNjVmYmRkNDhiIHJlbGVhc2UzMS1tYWludAorODA0MjMgMmMzMWRhYzY5NGZmMDQzYzhhN2M4Y2U1MTM3MDQ1MTFlMDJmNzg5ZiBsZWdhY3ktdHJ1bmsKKzgwNDI0IGU3OWE2YzgwMjkzNDE4OWY2OWE3NzNmYmI0MzVkMmNkYWY1ZTI1M2YgcHkzaworODA0MjUgNzRlNDlmYjViYTEyYjJlM2FjMzliOGViNDY4OWM0MjMxZmRjYzU3ZiByZWxlYXNlMjYtbWFpbnQKKzgwNDI2IDgxYWEwMDI4NGJkMjExOTAwY2VmMGM5MDY5ZjY1MWY3MjVmNWI0YmEgcHkzaworODA0MjcgNTRlNWFiMjliMzBiZmY0MzYwZjJiZjk3NWI5MTA3NGZmM2U1NjBhZCByZWxlYXNlMzEtbWFpbnQKKzgwNDI4IGQ3Yzc4M2VmNDU0ODZmZWI4NDc4OTBiNDc2N2E0NTRhNjJjODRjNWIgbGVnYWN5LXRydW5rCis4MDQyOSA3NjkxODk5ZTE4NWYyNzcxMzYwZTZmNjdkYmM2ZTk4Yzc5MDAzMDhiIHB5M2sKKzgwNDMwIDk1YzVlMDk0YjM4MDY0ZDU0ZTNjZWU2MjQ0OTE2MGQ3YjBiOWUxMGYgcmVsZWFzZTMxLW1haW50Cis4MDQzMSAwNjhhMmU3MTU3YWNlY2JkNmMzMTkyYjIwOGFkNGNiMGZjMTdhYzliIHJlbGVhc2UyNi1tYWludAorODA0MzIgY2EwY2JhYzdiODk4MWNkZjBhYTMxMWFjNmU5ODhkZDVlM2I3ZmQwOCBsZWdhY3ktdHJ1bmsKKzgwNDMzIDU4N2RmMGQ3NDc4NTMzYThkMDlmZDhiY2QwNTUzM2I5ZGFmMzA0YTUgbGVnYWN5LXRydW5rCis4MDQzNCA2NzJhZGZjNWRiNDc5OWJiYzc0ODM2NWJkODI0NWNmMGYxZDQzNjBlIGxlZ2FjeS10cnVuaworODA0MzUgNjVkNmM3YmM1ZDVhNDY0N2I3YjZjMGM0NDZhM2QwNjI4NDMzYWMwNyByZWxlYXNlMjYtbWFpbnQKKzgwNDM2IDgwODEwZDgyMzE4ZmQwNzNhNDlmMjA0NjA4MWE4ZmY4OWMwNjRiNmUgcHkzaworODA0MzcgZDgxZWZmMTE4ZDgxOGVmNjFmODIzZDlhYzk2NWFjYTgzMzAyODgwOSByZWxlYXNlMzEtbWFpbnQKKzgwNDM4IDVlNjk1MTljNGUzN2RiMmUxOGI2MDQ0NDY3NjY2NjNhOTU4NTBlNTUgcmVsZWFzZTI2LW1haW50Cis4MDQzOSAzYjgzNDFkMDUyMTZlYzg4Zjk1OGE2ZDZjYjg3NzU5ZGFmMGU1YmM3IGxlZ2FjeS10cnVuaworODA0NDAgMmE3NjhlYTA2MDIzMGU1Yzg0YTgxNGU4YjE5NmI3ODlhZTI0OTcwMCByZWxlYXNlMjYtbWFpbnQKKzgwNDQxIDY0NDYxZjY4YTEwZTAxYWJmYWIxZjUyZDczM2M5Mjc1ZWJiY2Y4NjEgcHkzaworODA0NDIgOTFmOTE2OGFhZGQwZTMzZjQ4MmJjOTUzYjYxYjUzZjM5MWMyNGFhMyByZWxlYXNlMzEtbWFpbnQKKzgwNDQzIGY0ZmU1M2Y4NjYyNzU2NTJlYzE4NjYxYTljM2JjY2QxMjI4OThhZWQgbGVnYWN5LXRydW5rCis4MDQ0NCBlOWQ4ODhjMDhiZjhhMTZhNjdjZDQxZjVmYzgzZDBiOGUwZTY3NzE1IHB5M2sKKzgwNDQ1IGMzOWFjYmI2M2VjM2Y1MWM5ZGNmM2FlMDE5Y2ExNzMyYjdjNjM1ZDAgbGVnYWN5LXRydW5rCis4MDQ0NiAyNGZmODc0MGU0ODEwYmM3NjI1ZWE4ZjY5NzEyYTQ4ZTAxMTcxNTY0IHJlbGVhc2UyNi1tYWludAorODA0NDcgM2E5YTIyZDdiMjJlODEyNmVjM2NiZTk1MTQyOGNmMDUyOTkwMDUxOSBweTNrCis4MDQ0OCA3YmQzODQ3MmVhMjEyMjUxMDNlZjRmMTE4N2MyMDQ5NmMyOTA3ZmNlIHJlbGVhc2UzMS1tYWludAorODA0NDkgZTRjMWViY2I0NjA0OGUxN2ZjZjM3YTlhNmRhYjhhYmUyYjAyMDI1MCBweTNrCis4MDQ1MCA3OTEyOGVmZThhOTkzYTFjNjdhNTU3MTA3NDJiYzBkNmFiMzcyODMyIHB5M2sKKzgwNDUxIGEwOWQ3ZjQxNGNkMTVjMTYyN2Q2MTEyNjM5YWVhMjJmM2U2NWUwNjEgbGVnYWN5LXRydW5rCis4MDQ1MiA3NmEwNTJlZWRlZTY3ZjQxOTVjMWJlZDIzZjhhZTg5ZTc4OWVjZWM4IGxlZ2FjeS10cnVuaworODA0NTMgY2U0OTE2Y2EwNmRkMDM3Y2ExMjIwMWU1OGI5MzZmZGRmZDQxN2E3MiByZWxlYXNlMjYtbWFpbnQKKzgwNDU0IGE1MWFkOGYwOWI2ZjdmMTZmMTQ5MTM0NDUzYzQzNmE2ODU2YzRjZmUgcHkzaworODA0NTUgNWVkMzRmM2Y2YzM1NTFjMjUyNWJhOTEyNjc5ZTMyNThjNjk4OTg1NSByZWxlYXNlMzEtbWFpbnQKKzgwNDU2IGE5MTk2MTE5ZDMzNWIyZTBjMjFjZjMxNjVhMDA4ZTBhYmVlNjA3NzkgcHkzaworODA0NTcgMGZmOGFkZGU2MDljZjllMTc3ZThkNTBhYmJmMDIxZTZhNGYxYzUxNSByZWxlYXNlMzEtbWFpbnQKKzgwNDU4IDZhZmY5YjBhMjg4ZDVmNDU1MDQ0MjA2YTI1NjgyMWFlOTI0NDBjNDYgbGVnYWN5LXRydW5rCis4MDQ1OSA3ZTIyMjk4Nzc0NTlmZTM1MjI1ODNjZTI4ZjkyMmZkOWQ3Njc5NTI5IHB5M2sKKzgwNDYwIGQ1ZWNlNDhlMTYwNmRmZWU2MmIwNjk4ZTcyZjIyNzA2MDA0ODkyOWYgbGVnYWN5LXRydW5rCis4MDQ2MSA5MjBmMzQxMDZjMzQ0YzZmOTJlMDdlODM1NTlkNDViNTc3ZWJmNjAzIGxlZ2FjeS10cnVuaworODA0NjIgNDY5ODljY2M2NTI5NTljZGZmZjdjMWNlNjdmOTNiYmNjZmJmMDA2ZiByZWxlYXNlMjYtbWFpbnQKKzgwNDYzIDBmODdiZTYzMzNkYTM3MDA4ZmUxMTJiNjc2YWE3ZWM2NjgxY2MyZmYgcHkzaworODA0NjQgZDA1M2JiM2Q3ODQyY2JhMWZjNDUyMzAyYzkzMzYwYWFkN2YzOTlmZSByZWxlYXNlMzEtbWFpbnQKKzgwNDY1IGVhZjU2MmY1ODA3ZGUxOTFkNDExNzNhOGE1MWI3NTM2NTFhZTE2ZjMgbGVnYWN5LXRydW5rCis4MDQ2NiAwNjMyMmFiYTg0ZmFmNTc3YjIyNWU2ZWM3NGRmMzYxMTc1ODc4NzQ0IGxlZ2FjeS10cnVuaworODA0NjcgOTgwOGRiOTc5ODU0MTE0OTBhNTE1NjAwNjZhYTVhNmMwZmQ5ZTYxOSBsZWdhY3ktdHJ1bmsKKzgwNDY4IGJlYmNjMjI0YzdjMmMzYmU3Mjk3Nzg4Y2YzNDQ1ZmVmMjNmNWQ4MGIgbGVnYWN5LXRydW5rCis4MDQ2OSA1ZTJkNjE3NTFkOTgwOWYzMjU1YWJkNTA2MWEzNWNmZmYwYTQ4MWZhIGxlZ2FjeS10cnVuaworODA0NzAgMDM2M2M2OTdlMGRhMzA4MDhjODA5MWFhZWE0ZjMxZmQzMmFlMWY1NyBsZWdhY3ktdHJ1bmsKKzgwNDcxIGMyZmZkMjBkNmNmODk2ZTlmYzBhNjRjY2MyMGNlOWRkOTdkZjg5NGEgcmVsZWFzZTI2LW1haW50Cis4MDQ3MiBlZGUxNmEyNzkyYjRjODU5NzMzZmUzN2E5NGQ4OTlmNzBmMmMwZGUxIHB5M2sKKzgwNDczIDAzZjMxZjdlNzYyNzZhZGI5MzI0NDc4YTUwM2Q1MTA0YjRlNmMxMmEgcmVsZWFzZTMxLW1haW50Cis4MDQ3NCBkMjNmNjI2YTczNzk5MWFhMjQ4YmIxNTAwY2U0YmU3ZmM4OWM4OGVhIHB5M2sKKzgwNDc1IGZlMGM0N2RkNWY4NGYxNDBhNjc3YjdhZjBhOTk2ODQ0NmUwYjE1ZmUgcHkzaworODA0NzYgNmZiMzg0N2QzOWVmMzlhMDU3ODUyZmMxY2MxYTJiNTJkOWZjNDkxMCBsZWdhY3ktdHJ1bmsKKzgwNDc3IGMzNmM4MzZmZjQ2NTEyNjVjZTM0YWViY2VkN2M2MzkwMWJjOGU2YmUgcHkzaworODA0NzggYjlmMjEwMmFkNWYwMjY4NWY2Y2U2ZjNkNGE3ZjRkNDQ4YjJmMzEzNyBweTNrCis4MDQ3OSBlZGZkMGUxYjk3NTRkN2U1ZDU5MjE3Yzc0ZTAyZjY1ZTQ0NTgzMDVmIHB5M2sKKzgwNDgwIDVhYzBhYWUyOGY0YzAyMmRlMmE3YmJmZTllZGQ1MTkzZjE3ODU4MmUgbGVnYWN5LXRydW5rCis4MDQ4MSA5NmNhNTBjYjI2MTM1OTNhZmIyM2Q3ZWE4MWIxZDU5YTE1NmJmMDg4IHB5M2sKKzgwNDgyIGQ4MDRkZDk1NzM3YzNhZjNlMWU4ZGU2YmM1N2FmMDI3MWUzMjg1NjEgcmVsZWFzZTI2LW1haW50Cis4MDQ4MyBjMWZiN2Q1ZWU0MzczYjk0YTkxMWNkM2RiMDg0ZDI0ZmQwYWQ4ODljIHB5M2sKKzgwNDg0IDVmMTk2MjIyMDc5Mjg4MDljYmI2NDcyNzczNjUxYTAzZDAyYTk1NjYgbGVnYWN5LXRydW5rCis4MDQ4NSBlOTgyNjZjNTFhMGUwOGUxYWVkYzExZGU4ZDVlODRkMjUyYjQ3OGVmIHB5M2sKKzgwNDg2IGVhNDNmN2Y2ZTg0Y2Y5NWY3Yzk0NTdiY2JhMTFlODMzYmFiZGE0YzQgcmVsZWFzZTI2LW1haW50Cis4MDQ4NyBmNTIzZTQwZGY5YzU2OGY3YmQ3NDFjYmZjNmQ5N2YxZWVkZjA5YzY0IHB5M2sKKzgwNDg4IGMwMjE0NGIxYzk4Y2EwYTFmMjU3NmJkNGRlOGVmYjY2NzhjNjY3YzggcmVsZWFzZTI2LW1haW50Cis4MDQ4OSA2NTQ4YzIzNjc2YTY4N2FhMmRlY2EzZmYxZmVkZTNhMjg1NTk5NWU0IHB5M2sKKzgwNDkwIGVmMGE4OTgxYzM3MDMxYzBkNWY0MDg1N2E5OWMyZWY5NWJkZTVmMDIgcmVsZWFzZTMxLW1haW50Cis4MDQ5MSA5MTY1MjMyZTZkMWFlNDRjNzAzYzZjNzFjNTg2MDAxZTIzMDJjYjAyIHJlbGVhc2UzMS1tYWludAorODA0OTIgOGM3MTc5MTI1ODAzMjRlN2ZkMTEzNWE5YjYyNzNlNDM2MDA0OWY0YiBsZWdhY3ktdHJ1bmsKKzgwNDkzIDJhMDMwYzFjZTk3MmQ1ODcwMzcwM2E5NmY2NGQ4NjM1YmFmNmNiZTEgcHkzaworODA0OTQgYjcxODI2MjQ5ZmJlMTNjN2EzNGRmYzFkYTRlNWYwZWZhZjczYmM5NCByZWxlYXNlMzEtbWFpbnQKKzgwNDk1IGFhNjg1NGE2ZjZkMWQwODRhZTBiNWY3ZjYxNDViODRiZGVjNWEyZjQgcmVsZWFzZTMxLW1haW50Cis4MDQ5NiBkMmE0ZTk2YjU0YTZjZmU1NzljZDQyNTEzNjBjMTIzYTE4Zjg5NGUzIGxlZ2FjeS10cnVuaworODA0OTcgYWI4ZmU5NDc3MzIzNDNkMmU0NzdiYTU2NjVlNGRkZjRiM2JkMjVjZSBweTNrCis4MDUwMSBlZmQ3MDU1M2EwOTg5MjMyZmYxZjZiNDdiZGYzYjUzYzAwZjU3YzZmIHB5M2sKKzgwNTAyIGMwM2EzYzZhNDU2MjYwYjZmOGMwNTVkOWY0MWQxNGE5NWNkODg4OWMgcHkzaworODA1MDMgZDYzYmIzNWRlMmYwMGFhMzgzYjBlM2E0YjRjOTljMjMxODQ5ODIwMSBsZWdhY3ktdHJ1bmsKKzgwNTA0IDA0OGY2YTkyYmRlM2E2YjhkNzUzYjBjMWExYzg0NWU5NGE4NzMzNTEgcmVsZWFzZTI2LW1haW50Cis4MDUwNSAxMGRhZjYzNGUyNGY0ODI2OThhY2Y3OTRlNzQ2ZWRlZDMzOTY2NDVjIHB5M2sKKzgwNTA2IGNmMjA0YTczNzgzZDg1ZGJjMDRkYjRiYzhlNTliMWVhZTQ1NjdiMzcgcmVsZWFzZTMxLW1haW50Cis4MDUwNyA3ZmMyMTFkZjNkNWIyMDUwNGE0ZGFiMjJkZjlmMWU2ODVlMjI4YWNiIGxlZ2FjeS10cnVuaworODA1MDggODYwMDczNTA1YWNhMzI5ZDQwYmM5ZmEwZWJlMTE0MzBkYWIwM2I5ZCByZWxlYXNlMjYtbWFpbnQKKzgwNTA5IDNmZThjZjc4NzM1MzAzNzQ4NGYzZDZjZDEwZDZiMGE5NTZmYWE1NmQgcHkzaworODA1MTAgYjg3N2QyZDA0YzE0Njc1YjEyMGU4NGZkYjQ3MTdiYmIwMDZkNjI1OSByZWxlYXNlMzEtbWFpbnQKKzgwNTEyIDMwOTAzNWMyMmRjZGNjZmI2YmNkZWM2YjA2MjVhZDVmM2ZiMGY0ODEgbGVnYWN5LXRydW5rCis4MDUxNSAzYjI0NGViMjBmYTEzYjE4ZjE1MTNhNGE3MDFiY2ZlM2ZkZjA5ODgyIHB5M2sKKzgwNTE2IGQ1NTkwYTk4N2NiMDZlMGMyMTQxMzQ3MzVjOTU4NDIzYTY0NGM5ZmEgcmVsZWFzZTMxLW1haW50Cis4MDUxNyBkZDQ2NjQ5NDU0NmRkZTM3MjZhYzVkODRmYzJkNmRkNGQ0ZGVhMDI5IHB5M2sKKzgwNTE4IDExYzlhZGFlZjk2YjBiYzM2MWFkOTVhYzZjOGJkMDc4YzYzOTUwYjQgcmVsZWFzZTMxLW1haW50Cis4MDUxOSAxNTcxZjA5ZjRhMjc3NWRkMzg2YTY0ZTA0NDY2MjFlZTIxZGY3M2U3IGxlZ2FjeS10cnVuaworODA1MjAgNzg0Y2ZiYWEyMjlmMTYwY2RiNmEwZmZhZTk5MzZmNmZkNjQzNWJlOCBweTNrCis4MDUyMSA4M2I5MzAzNmVjM2Q3YzY1YmRhMzk2N2MzNDQ3Yzc3NjEzNTE1ZTdhIHB5M2sKKzgwNTIyIDE4YjJkYmJiYzViMjUyMzcyNWMwMmE4YjFlMDBkZDJlMmZkZWJlN2MgbGVnYWN5LXRydW5rCis4MDUyMyBjMDdkMmU1YWNmNjVjMWYzNmFlZDY4MDRiZWI1MTcxNTA5ZTRjMDI4IHJlbGVhc2UyNi1tYWludAorODA1MjQgMjJkZTZjNzFjZGI0MTUyMTZlZGY3ZjNmMzM0OGIxZGMxYzE2YjU1NCBweTNrCis4MDUyNSA0NmFhZTQwNjc0MmQ5ZjE2M2ZiY2I0YjRjM2RmYzI3ZDUxMDhhMzUzIHJlbGVhc2UzMS1tYWludAorODA1MjYgNzEyMzAxNTA2NzMwZDc0MjEzZjBkNGQ0MmQwYzg1Mzg1MzM2ZWQwMSBsZWdhY3ktdHJ1bmsKKzgwNTI3IDZkYTllYWZiMWRhYWRiZWRiYzAzMGQxNzVjY2UwYTZiMDQxNDYxYWUgcmVsZWFzZTI2LW1haW50Cis4MDUyOCBlMjVjNzhhODJhMDgzYjhmYjk5NmUxZTUxOGVjYjI1OTZlMjVlZjNjIHB5M2sKKzgwNTI5IGQ0NDdjNjBmYjRkODg2YzRjZDc3M2U4YWM1MDMzOGYyNDVhMTUxMDcgbGVnYWN5LXRydW5rCis4MDUzMCAxZTFiMjM1MWNmMTJmYjQ1ODJjOTM3ZWEyYzdmZTk5OGM0ZWU5YzM2IHJlbGVhc2UzMS1tYWludAorODA1MzEgZmZlOTlmNTIyZDg2M2JjYTlhNDFiYWQ5NzYyZmMyYWU1YzQwNDFjNyByZWxlYXNlMjYtbWFpbnQKKzgwNTMyIGQ2MjcwOGFlMjZhNTUzNmMwYTA1Nzc3NTMzZWQyMzMyYWIwMjJmYjQgcHkzaworODA1MzMgYzg2OTQwOGQ0ZDNlZGRjMTg0MDk2NGYxN2EyMDM3YmQ1YmI0Y2M2NCByZWxlYXNlMzEtbWFpbnQKKzgwNTM0IDYxYWU2NjRkZTU2YmEwNWExNzQ5NjI1NjA3NmJmOWE4ZTAwMjI3MzggbGVnYWN5LXRydW5rCis4MDUzNSA5NjllZjVlYjgwYzQzNTMyNzM3MDc2NGJhOGQ5MDJkMDU4MGU2OTZhIHJlbGVhc2UyNi1tYWludAorODA1MzYgZjEwYTM3ODc4ZDg0MmQyNzIxOWFlZjZmMWExNWU0MjQyMTFiYTZjMCBweTNrCis4MDUzNyA3MTE1MmNlNzAxZWE1ZDQyZjg2Nzc1YjhmYTg1YTQ5YTJiMDFhYzE2IHJlbGVhc2UzMS1tYWludAorODA1MzggNWMzODJiZmMwMTVhNjY0ZGI5OGU4ZmQxNzY3NjI2MDVmZDgyZjQ1YiByZWxlYXNlMjYtbWFpbnQKKzgwNTM5IDZhOTBkYzk2N2ZlZDAwYzEzNzZiODAxYmQxZGJlZDgyZDYzYWJiM2UgcmVsZWFzZTMxLW1haW50Cis4MDU0MCA0NDhlZjkwMDA4MWNlMmM4ODZjMzg2Zjg3YzlmOTNhY2I4NTA0YTdmIGxlZ2FjeS10cnVuaworODA1NDEgZWVmNGI5NTRkNjQ0MzkwZTQ3ZmE5YjJjMjVkM2NhYzhkYjdjNGUzYSByZWxlYXNlMjYtbWFpbnQKKzgwNTQyIGNhZmVmNzQ1NGRmOWVjYWU2OWNiMWUzOWY1M2FjM2NmMmQ2YWJmY2MgcHkzaworODA1NDMgMTY0YjNhY2FkOWRhY2ExM2UwMGY5ZDA5ZTJiMjhhN2VlM2QyZDVkYyByZWxlYXNlMzEtbWFpbnQKKzgwNTQ0IGFkYzA3OTdiYTkyMTJmMzFlZGQ3MTcyZjk4OGNhYmQzZTM5NDU3N2EgbGVnYWN5LXRydW5rCis4MDU0NSAzNjkxZDc1YjA2MjYzODQxNjRlZDgzMzIxMjY4NzU0MDI3YjVjZTMwIHB5M2sKKzgwNTQ2IDZlY2IzYzgzZmU4MWJmMDU2MjFkMWVkZTM0NDQ5ZTc0MmQzODM5YzggbGVnYWN5LXRydW5rCis4MDU0NyAxN2NjMmY1MzI1NjMxM2FiOWQ1MzQ4ZTAwMmI4OGIxN2RkMDEzMWZkIGxlZ2FjeS10cnVuaworODA1NDggY2NiMWQ1ZWYwNGQ2YTkyMmNkZjNjNTg3OWMxNTc0NjMyMzFhN2Y4OSBsZWdhY3ktdHJ1bmsKKzgwNTQ5IGFlNmY1ODY1YjM4NjA0MWQxZDhiMGY0YTM0OGE3ZDNiNjBmNGYxMzYgbGVnYWN5LXRydW5rCis4MDU1MCAxYWIyNDk0MWM5OTZhZmU5NzA5ZWU0NzRjYjIxZDExZjhlYWQ2OGRhIHB5M2sKKzgwNTUxIDNiNjk3OTA1NWY1YWUxODk0NzUzYjUxOTU3NDk4YWYzY2E4YTM1ZjEgcHkzaworODA1NTIgNmQ5ZDg1NDU4NjFlZWE0YjRmOTNlNjEyMzhlYWJhOTQ5YzJhODY1YSBsZWdhY3ktdHJ1bmsKKzgwNTUzIDEzNzkxNjU0M2VmYWU3ODgyNmE1M2YwZDQzMjk5MjE3OTc0YTVjYmIgbGVnYWN5LXRydW5rCis4MDU1NCBjN2E1ODIyYmYyOTQ4NzM2MzhlMjc5MWZkNTQzMzE4NjFkMzEwMWE5IGxlZ2FjeS10cnVuaworODA1NTUgMDdjZTVhZjMxN2VlMmIzYmUyOTZjODFmNDEzNjRkYjlmZDcxMThkMyBsZWdhY3ktdHJ1bmsKKzgwNTU2IGZiMTBlZjBlZmEyMzU1MmJlN2VmZGI5MzI3OTYwYzZlNjBlZTVkNzcgbGVnYWN5LXRydW5rCis4MDU1NyBmZDNhYmY4MmFjOTYwNWNhMjhhY2M4YTA1MWZkMzMyM2ZlMmQyZTgzIGxlZ2FjeS10cnVuaworODA1NTggMzE2YjU3MDE3ZDBmMjU3NGMyMDBiOWZkMDQ3MThiY2VhYWIyZmZmNiByZWxlYXNlMjYtbWFpbnQKKzgwNTU5IDhjNjQ2OTY3YmE2YjdmMzk0ODQxZTYzMDZmNjc0NThjZmYzMmI5N2UgcHkzaworODA1NjAgODI3OTIwYzU0NmFmNTgwNGY2NTdjYjJkMzJjZGY5YTBkNGM4YTljOSByZWxlYXNlMzEtbWFpbnQKKzgwNTYxIDRhNjlkMzJhMTdiOTA3NmU3MjYwODdjNzJkMzkxNmM1NDJkMTMzNTIgbGVnYWN5LXRydW5rCis4MDU2MiA0NTcyMWI5Y2EyMjA0MTQ0NTQ1ZTc5MDUwYzZlZTBhOWUwYWQwZDEzIHB5M2sKKzgwNTYzIDgxZDcwMzNkOTVhMzVlNDNhODAxMWJlODcxMzdjNjI0ZDRhOWFhMjEgcmVsZWFzZTI2LW1haW50Cis4MDU2NCBiODhhYTEzY2VhZjI1NDFhNDZhZDE0ODc0OTg3NDVmZThlM2Y2MzM2IGxlZ2FjeS10cnVuaworODA1NjUgOTY3ZjdiYzJkY2M4NjM1NDFmMTJkNzZhM2FlM2I5MDRiY2Q3MmExMCBsZWdhY3ktdHJ1bmsKKzgwNTY2IDgyZDQ4NzI0MTMwNjdiOTYwNDQ5MzFmNTRkNjIwZTUyMmI3ZDUwNDAgbGVnYWN5LXRydW5rCis4MDU2NyBiMGYzNDJhYjUwOTUxOGE2YzAyNTZhYjFkNTYwODNlYjg2YzI0ZWUzIHJlbGVhc2UzMS1tYWludAorODA1NjggZjA5MGJkNzJhY2Q4MmE2MTA0MTE5YWY2MGVhMDhmNDg5NzA3M2ZhMCBsZWdhY3ktdHJ1bmsKKzgwNTY5IDBkYzIxMTVmNmJiZWFkZjA4NzIyMmQzYjU5MmRjM2U3YWQyZWU5ZDIgbGVnYWN5LXRydW5rCis4MDU3MCBiYWVmZDdiNDI1ZjE3ODFjYjUxOWVjMzk1OTc1MjhiMjBiNjhjNmVhIGxlZ2FjeS10cnVuaworODA1NzEgM2EwNDg0MjAwMDM0MzhmNTc2ZDIwODc4YjIyMDk2ZWIyMmQ0MTY1MSBsZWdhY3ktdHJ1bmsKKzgwNTc0IGU4NGE0Y2RlNzljN2NhMGI2MTNiMmI0NzM0Njg4YjlmNTFkMGI3MDQgbGVnYWN5LXRydW5rCis4MDU3NSBlYzc3MTVlYTJjNzUxMmJlZGMyMjM0NTUyNjhjMDI3NzZmMmJiNGQwIHJlbGVhc2UyNi1tYWludAorODA1NzYgNjViZTFlNjc4ZTYzZTI2OGM3ZjZkMDM0MTI5MDc4Y2ZiNmI1N2E5NSBweTNrCis4MDU3NyBkNzRlZDdlMjFlNjI5MWE5ZmZlYzlhMGFkMTk4YTIxYjA4ZGVlNDA4IHJlbGVhc2UzMS1tYWludAorODA1NzggNTFlMzBiOTE2ZmM0OTdjZmViYWVjZWE1ZDY5ZWE3Y2Q3YjgxOWJjOCBsZWdhY3ktdHJ1bmsKKzgwNTc5IDIyMGQ0NzY3ZmE5NzgxYmJkNTY5NzllYWQxNzgzMjNkZWRkYTIxODkgbGVnYWN5LXRydW5rCis4MDU4MCAwYjVjNDhjNzYyMjQzZTdmYWM1OTU3YTFiZWFkN2ZiY2M1NzRhOWI1IGxlZ2FjeS10cnVuaworODA1ODEgYzllNDBjZWRjOGJjMjVmZWZjZDk2ZjFiYWQ4YmM3OTg3NzFmNjczNSBsZWdhY3ktdHJ1bmsKKzgwNTgyIGZmMWE1OTNmOGQyM2MxZjc3ODgyY2RkYTNjZWVjZDQ0MTU1MjE3ZjMgcHkzaworODA1ODMgNTc1NDhjY2UxZWEwNWFiNjE0NDRhNjdkNGUzYzQ4ODg3YmY4ZGU0NiBsZWdhY3ktdHJ1bmsKKzgwNTg0IDFlMWNjNjcyZWJkZDI3NjVmM2E4ZmQ5ZjgxYWFlOGQ3OTBhMjUzZWEgcmVsZWFzZTI2LW1haW50Cis4MDU4NSAwNGExOGU1OWNjMmM0MDRkMDJkNDNmMDMwMjkzNDRkMjU4MzQxZjgzIHB5M2sKKzgwNTg2IGNkODhmNWZlMmQwNjUyMzAwZDkzODNiZTg2ZTI4ODRjOGRmZGE0NjMgcmVsZWFzZTMxLW1haW50Cis4MDU4NyBmZDdlYzYwN2UxMDFhNTk0M2MyZDQ5YTE3MTk4ZWY0YTM5ZmM4ZTcwIHB5M2sKKzgwNTg4IDY5NTBlYWI1MWZmZTYxN2RhMDEzNDI4N2MzYThjNWQwNTMwZDkzMWMgcmVsZWFzZTMxLW1haW50Cis4MDU4OSBhNDM3NzY1NTNhYjUzMDc4M2NiNGNkYzE2Nzc5ZWZjZDVlOGY0YmNlIHB5M2sKKzgwNTkwIDA1ZmUxMzdiN2VmZjAzNTY4NjhjNTkwMGMzYWQxMDM4NDgzZTQ4ZmEgcmVsZWFzZTMxLW1haW50Cis4MDU5MSA3MjE2OTJlZDRhN2NhOTllOWQ5OWRkZTdhMTFkNzM5NzZjOTg3YmUxIGxlZ2FjeS10cnVuaworODA1OTIgOTdjZTZjZTZhMjg5NDhiYzZmNDU1Yzg4M2JiNmY2YTM1NzExZjVmOCBsZWdhY3ktdHJ1bmsKKzgwNTkzIDBmNjVmYmU2NmUzYTNiZjlhNjhhYzQ4OTM2OGM2MTk2MDg3YWM3NDQgcmVsZWFzZTI2LW1haW50Cis4MDU5NCA1OWIyYWRiNTJiMTZiMTg5MzIzNDY0ZDIwZjI3ZDNiZmM3NTM0YzkwIHB5M2sKKzgwNTk1IGU3ZjA1ZGI1ZjNiMDMyNzQ0NjhjOGZlYWZiYzY2MjIyYzIzYmJiMzQgcmVsZWFzZTMxLW1haW50Cis4MDU5NiA4MDdmY2FjNGYxN2I1M2E0NmE2M2ExYjIzYzA1MjFhMmZkZGRjODk1IGxlZ2FjeS10cnVuaworODA1OTcgZWE4M2E2MWY2NDMwZTFhNWUzYjdhNjBmZTM3ZmU4OGY1ZjAyMzhkMSByZWxlYXNlMjYtbWFpbnQKKzgwNTk4IDBmM2Y4YjllYjZmZjhkYjFkYTk3NjBjODhlYWYzOWQyMjdhOGM3YjkgcHkzaworODA1OTkgMWQyYjMyMmM0NmJlMzQ1ZDBmZmE3YjFiOGUyYzc4NDgwZmU5MzZiMCByZWxlYXNlMzEtbWFpbnQKKzgwNjAwIDQ5M2JiNDU4NWUzODBmMDk5MGE1YTA1MTQ3MzJlOGU4NDljNWI2ZjUgcHkzaworODA2MDEgZDlhZmE1ZDEyMWVhN2I2ODk1NzliMzI2ZjljYmFhMmJhN2E1YjA4ZiByZWxlYXNlMzEtbWFpbnQKKzgwNjAyIDk0ZTNlOTg5YWUyM2Y3ZGM0Yjc3MjdhMTcxMTdiNzhlYjkxZGRjNTIgcmVsZWFzZTI2LW1haW50Cis4MDYwMyAxODVkZTMxYzhhNmM5YTk0NmViMjk4ZDQ5MmI5NTExMDJlY2ZkNzc2IHB5M2sKKzgwNjA0IDAwNzMxOWE5Yzg4OGNmZDY1MDBkMzk3MTVlNDJlZmIyOWNlMGVkNmEgcmVsZWFzZTMxLW1haW50Cis4MDYwNSA1Zjg4MzA5MzVkNzQ0NDk0MjZjOGU0MzNhMDA5NDNiYTdiYjg1NmNkIGxlZ2FjeS10cnVuaworODA2MDYgNTkzYTIyNTUwMjc1N2QzOWY1NTgzYTUxN2I3ZmIwMzU5ZjcxNjg1YiBsZWdhY3ktdHJ1bmsKKzgwNjA3IDJkNWMzNDVmMzRiOTljYzg3M2FiOGQ5YmQ1ZmI1Y2QxN2M0MDYyODEgbGVnYWN5LXRydW5rCis4MDYwOCAwMWJkZDUzZjc0ODk5ZWQ4YTQxNzM2OTVhMTdiMzk4ZTRlMTA4OGYyIGxlZ2FjeS10cnVuaworODA2MDkgODQwMDkxM2ZjYzU1NWQ2NjRhMmRmMTcxODVkZWRhM2E3MjNiOWM3YyBsZWdhY3ktdHJ1bmsKKzgwNjEwIDM0MzFlMTMzOTEzYzljZjg0ZTljNzZmMDdmNjdmZTU4YjVkZDFhMGQgbGVnYWN5LXRydW5rCis4MDYxMSA0ODZmZTgyYmFmYjg0Zjc4NWZmODUyYmQwYzE1ZmU1ZDYyMWY4MDY0IHJlbGVhc2UyNi1tYWludAorODA2MTIgNzc4MTIxYjIzODhiM2QxNWZkNzk4MjI5ODAzOWVmMjhiY2ZhYzE2MSBweTNrCis4MDYxMyBlOTE4Yjg0ZWY5NjhjYzg5MDU1ZmYyMmFjYzAxYmY3Zjk4MmM2NTI4IHJlbGVhc2UzMS1tYWludAorODA2MTQgNGI1NzAxOTE1MGE4YjNkY2VmY2VhN2MyNmIyNTU0NGU5YWIwMjkzYSBweTNrCis4MDYxNSA3N2RkYjhkM2M0MzM1NGQ1ZTNhOTAzYzA2ZjA4YzU2ZWU3ZTEyZGJiIHJlbGVhc2UzMS1tYWludAorODA2MTYgNGQ5NjM0Yjg0NDliYjhkNDg0M2ExMTE4MjQyMDIzNWJkZGEyYWQ1NiBsZWdhY3ktdHJ1bmsKKzgwNjE3IDZjZGE2MDFmNGM1ODU2ZmE2MjI1YWJjMTljN2FiNzk4MDhlYTAzNTQgcmVsZWFzZTI2LW1haW50Cis4MDYxOCA5ZTUwNTcyMDE1YWQ1YjE5MTU1NzY4Y2E3OGVmMDUxZDQ2ODE5NWNlIHB5M2sKKzgwNjE5IDQwNTIzN2IxMTEwNDI1Mzg0MTA4NWM3NTNjNWEzNTg2NjU1ZmE0NmQgcmVsZWFzZTMxLW1haW50Cis4MDYyMCBlYzZlOWUwZTMxNmQyODljZDU5ZDI0MGI0ODJmNWE3Mzg0Y2FiOTllIGxlZ2FjeS10cnVuaworODA2MjMgNDdmYzZmZTVlNDU0ZmNkMThkOTYzN2FjM2RjNzhhZTg4Nzk2NTE4MCByZWxlYXNlMjYtbWFpbnQKKzgwNjI0IGZjODIyYWYxMWJiYzY4YjY4MWFhYWFjOWQ0ZjA1NDBkZDhjNDQzNzcgcHkzaworODA2MjUgZDY2ZGIxYjIyZDEwOTg5NDk2YTkxYmM3Y2IyMGEwMTk3M2YwYjQ2NyByZWxlYXNlMzEtbWFpbnQKKzgwNjI2IDRkZGZiNWRkNGJiNzk0YmE2MGU4NTZlZWJjMGM4NGU0NWM0MTk2Y2MgcHkzaworODA2MjcgYzQ4MmI0MWFlODU1NGZhNGMzN2MxMTMzNWIzZTA4ZDIyMWM2NjE5ZCBsZWdhY3ktdHJ1bmsKKzgwNjI4IDA2ZTAxMTBiMDgyMDhiOTFjZGI0YTNlYjEyMjBhNWU2MDZiOTI0ZWEgcmVsZWFzZTI2LW1haW50Cis4MDYyOSBmNjI3MDAyN2U0OTlmMTk2YjAwZDVjOTgzNmU4YmZiZGVjNGIzZmM2IHB5M2sKKzgwNjMwIGFjZTM0NTM3NzgwMDBjYzAzZGI1NjVjZjI1NGEyODUzNDBkYWYzZjggcmVsZWFzZTMxLW1haW50Cis4MDYzMSBjOTA4ODE5MjdiYWRhNmQ5MDlhYzVkNGZkMjVmNWFhZDcxNzg2ZWIyIGxlZ2FjeS10cnVuaworODA2MzIgYjZiM2U0Zjc3N2M5NmU2YjM1YTc3MjI5NGVjNThhYTE0M2VkOWM4MCByZWxlYXNlMjYtbWFpbnQKKzgwNjMzIDljYzY5M2Y5YTVkZTAzZDdhNmFmZDRiZWE2MzFjY2NkNDNkODZkMmEgcHkzaworODA2MzQgZjMyYjhhM2FlOWQ2MDI5NGUzMTBlYmRkMjg4NDRhZGY3NmZmNDU5MyByZWxlYXNlMzEtbWFpbnQKKzgwNjQwIDM2YTQxNzk4MTBmMGI2NzBmZTQ3ODBjODkxOWQ0OTE0MGYyMjBjZmEgcHkzaworODA2NDEgNjk5MDQ5YjNjN2Q3MTNmMzg5ZjhmYmQ4MzdhOWMyZjhiZDVhMmRiMSByZWxlYXNlMzEtbWFpbnQKKzgwNjQyIDJkMmE4NThmZTNlMTk0Y2Y5ZDA5M2ZjMzdjYjU1YzE1MDRjOTdiZjkgbGVnYWN5LXRydW5rCis4MDY0MyA3ZTM2MWE2YTJhYzgyMmU3NTEzOTYxOGI1MmYwNzFlMzdkYWNkOGJiIGxlZ2FjeS10cnVuaworODA2NDQgZmU1YTAwNmFmNTJiZGU3MmNmMjg0MDFkZjIzMTIyNWVlN2ZmYzFhYyBsZWdhY3ktdHJ1bmsKKzgwNjQ1IDlmY2VjZTQwNWUyOTUxMWRiNDhjZjRmNmQ3ZjQ3NzVhZjQwYjIwOWUgbGVnYWN5LXRydW5rCis4MDY0NiA1YTQ4ODY1YmJjMWU2YjAzY2Q2OTUzNGVmZTZhOTRkMGUxYmM3MThlIGxlZ2FjeS10cnVuaworODA2NDcgYzJlMGI5M2Y4NjlmNDFjYzVhNDU1NmNmZjFmMGE1ZDk5ODViY2RjNiBsZWdhY3ktdHJ1bmsKKzgwNjQ4IGJmZDI1NDFkOGVjNWEzNTA5ODAyMjlhMTQ5NjhlNjk4NGRmMDZhMjQgcHkzaworODA2NDkgMTAyMDZjYjIzYzgwMjFiZmI5MzMxMzZjYTc1OTY5ZDg0ZjQ3Mjg4MCBsZWdhY3ktdHJ1bmsKKzgwNjUwIDYyMWQyZTk4NGQxODc2ZDA4ZGRlNmJiMGIxODgzNzNiZDJjZTZhNjkgcmVsZWFzZTI2LW1haW50Cis4MDY1MSAyZDNhYmE4Y2Y2YTM0OGM2N2EyODhiYTViMGQxNTU2MTFiMjIzZWM3IGxlZ2FjeS10cnVuaworODA2NTIgMmJkYjhlYmZjNGE5NTIzZDU5NTFjZGMxYmU3NTA1NzUxOTVjZGYxYiBsZWdhY3ktdHJ1bmsKKzgwNjUzIDFiODk0NTk0NDkwZmJlMzlmMGYyZTZkNmZkNWY4NzA5ZWNiYjY1OGIgbGVnYWN5LXRydW5rCis4MDY1NCA3YTM1ZTBiOGFlMDhjNWI1Mjc0NDhjMTU1YTAzNmQ2NmJkNTUzNmJkIHJlbGVhc2UyNi1tYWludAorODA2NTUgZTQ3YWVhODZmNzE0MzM0ZWZhYTEyMDRlZDExNWVhMmJmM2VlZGQzYyBweTNrCis4MDY1NiAwOTFkOTc3YzRkMzc0M2NkOTQ3YzIxMTAxZDdhMjBiNGYyNzE1ZmVhIHJlbGVhc2UzMS1tYWludAorODA2NTcgYmM2MjMwYzY2YzE0MWUwYWJiZTIxMTMwMGM3MDk2N2ZkNGMyZmMyZiBsZWdhY3ktdHJ1bmsKKzgwNjU4IDAwYWM0Njg4Y2RjZDBmM2QzM2UyNjhmMjEyMzRjZDUwNDdjM2M5NDkgcmVsZWFzZTI2LW1haW50Cis4MDY1OSA3YTlkMTcyYTE1ZTkwOWUxZDQzZjRiMDZjOTU4NTU4ZWRhNTBiMTI2IHB5M2sKKzgwNjYwIGFmODEwNDMxYmRhYzlmMzJhNWQ1YzVmNTUyNmFkMzRlNWIyNjA5YTEgcmVsZWFzZTMxLW1haW50Cis4MDY2MSA1OTFkZTZjOWZmZTk0NzQ4ZjU0YmYxNzUzZmIxNDlmY2U5NmIxMTBiIHB5M2sKKzgwNjYyIDUxY2Q1M2QzZjYwMGJmYzU1NDU0MDljMzY3MTRlOGNlZmQ4NWRlMjkgcmVsZWFzZTMxLW1haW50Cis4MDY2MyA3NzQyMzAwNzg5MjZlZjdmNmU0M2QxMTkxYzMyNTE4ODczZTliNGNlIHB5M2sKKzgwNjY0IGIyNWU0YmE0YWY2MTZlOTMzYTkwZWY5NzY5NTkxNDdmNGIxODAyNjIgcmVsZWFzZTMxLW1haW50Cis4MDY2NSA4ZmM5ODdjYWM5MTNmMmNkYWQ0ODI0ZmFhNDZkZDE5OGNhNWFhNDM4IGxlZ2FjeS10cnVuaworODA2NjYgM2U0NTEzOTQ3YzU3YmYzYmRlMTcxM2U2NzYyZGUzM2RmYWY5YWI5YyBweTNrCis4MDY2OSAzYzRjZDdkZGYxZDAxNzQ2NjRiMGU4NjA1ODM3YTA1NTU1N2ExNzMzIGxlZ2FjeS10cnVuaworODA2NzAgM2ViNmVhZDk5YTYxYWQxMjgwZTI4NTg0NDQ1MmYyYTU4NTQxNTFiMiByZWxlYXNlMjYtbWFpbnQKKzgwNjcxIGM5MDYwYzFjMWY5MDU0MjY4ZGJjODIwZDI0NThiMjI5OTZjMThiOWQgcHkzaworODA2NzIgOGUzNGQ1OWJhZGY5OGY3ZDYyZmJjOWI5NDJhOGI1ZDIzYWFiMWVhZSByZWxlYXNlMzEtbWFpbnQKKzgwNjc0IGFiNjQyMzc5ZGRjMDI5NDU2YTJhYzgwMWUwYTRlZTFmMzk2NjFkZjIgbGVnYWN5LXRydW5rCis4MDY3NSBhYmZjN2VkMzU1ZTRlMTEyZWZiZjMxNWE0MWRiOWNkYzk3MDA5NTQ1IGxlZ2FjeS10cnVuaworODA2NzYgNWI2YTdmMmEwNWM2ZDE2ZDI1OTE0OWNlMzliNGUzMDAyNTJkNmExYyByZWxlYXNlMjYtbWFpbnQKKzgwNjc3IDU1ZTBlY2NjN2Y0NmYzNDdkZjQwMGYzYTQ4MjIxZTY3MjdhNGU3MDIgcHkzaworODA2NzggNTJhM2FiNWU4ZThjZjY1OWQ3MDA5YjFhZGU2MTJjNmJjNmVmMzY2YyByZWxlYXNlMzEtbWFpbnQKKzgwNjgxIDNlYmFjMGU0NjBlMDM5ZTM5ODRjNjk0MDgzN2RmNTdkNmZjMTRiZmUgbGVnYWN5LXRydW5rCis4MDY4MiAyNDVlNDMzZDYwZWI1ZGM1M2UxMWQzZjFiZjVmOGE4NGY0NDViMTVkIHJlbGVhc2UyNi1tYWludAorODA2ODMgMTkzMDRkODIzYzg3NDdjMDk3YTQ1YTEwNzAwYmMwMDU3Yjc4OTYzZCBweTNrCis4MDY4NCA4MmRhMjkwZmY3MjIzZTZiYmFkMTYzYzU2OTgyYzZlZGRlNjIxODJkIGxlZ2FjeS10cnVuaworODA2ODUgMmRiNGIzMDBhNDIwODU2NDJjNTVkODc1ZmI5YmUyNjBkYzFjOGZhZCBsZWdhY3ktdHJ1bmsKKzgwNjg2IDU4YmUzYWYxMzBlMjZhOWViOTRlMzQ4N2JmNTU1YTAwNzdlNjRhYTQgbGVnYWN5LXRydW5rCis4MDY4NyBmODliYTEwZjk3MzQ5NTk5ZTcwYmI5MGMyYTcxZmY5Y2E5OWMyZjlmIHNpZ25hbGZkLWlzc3VlODQwNworODA2ODggZTI4ZmVkZjM2MzU5Njk0ZDMwOTg3NjRkMzA3OWQ3Mjg5ODEyMzZmYSBweTNrCis4MDY4OSAyMTM1NWRhYWYyM2E0NmRiOTc2YzI5MTQyODZmYjY4MzcxYTA4ZjE5IHJlbGVhc2UzMS1tYWludAorODA2OTAgN2IzMDdhMzAyNzQ0NzU4ZDIwZTIwMjIxMDJmYjAzNDY1YTI3M2M4MCBsZWdhY3ktdHJ1bmsKKzgwNjkxIGYwZTIxYWM3OTVmNDc1YzM4OTY4ZDM1NmUwNzgyYzBiNDhhZmQxNTcgcmVsZWFzZTI2LW1haW50Cis4MDY5MiBmZGExZGRhZTA0OWM2NzZlYTE0NDZlZTVjYmQ4ZGI4OGQ0MGYwNGQ5IHB5M2sKKzgwNjkzIDQ2ODU3MDlmYWIzZTEzNzcwNjUxMTcwYWViZDFmMGVkYTUzNGZmOTIgcmVsZWFzZTMxLW1haW50Cis4MDY5NCA5ZjRjYTAwNjEwZTMzOGIxMGM0Y2FkNDk4ZWY2N2IyMDkxNzFhNGFlIHB5M2sKKzgwNjk1IGZkMjZlYjlmYjBmOTJhNGEzOWE5NDJhMWI0N2IzNDNmOGY2NjQxYmQgbGVnYWN5LXRydW5rCis4MDY5NiA5NGI1MmU1Y2JlMjk0M2JlYjRkYTU2MTMyODZjZTlkMGQ4MGIwOWFkIHJlbGVhc2UyNi1tYWludAorODA2OTcgYWJmMjIwMWRjMzdjYmVmMWMwNDE4YWY5NjA3MWY0ZmEwM2UzZWU2YSBweTNrCis4MDY5OCAyMTM2OWQxODlkOWU0NzlmNDMwZjM2Mjg5NTNjMjhlYzA2MzAzZjRlIGxlZ2FjeS10cnVuaworODA2OTkgN2Q5OGUwZWE5ZGIzNTRlMzA5M2NlNWU3NzM1NTU2OTk3OGIxNTJmNyBweTNrCis4MDcwMCBkOTVkZjI2MjJmOWY1Yjc3NDc5Nzg4ZjhkYWJiNjAyMzU5NDA0Yzc4IGxlZ2FjeS10cnVuaworODA3MDEgYjFkZDc3MTU0NWUyMTI3ZTNkOWZkNzA0MThkZjQ4YWNlMTNjMzdlNCByZWxlYXNlMjYtbWFpbnQKKzgwNzAyIDQzMTI2NzYyNmEwMzVjZTRlOTI4OThhNmI0NGMzNjJkYzVkZTFmNWYgcmVsZWFzZTMxLW1haW50Cis4MDcwMyBjZjAzNjFjMDI1NTFkMDllMmEwZmM2NTZiZjI1YTU4MmQ3M2ZjOTFhIHB5M2sKKzgwNzA0IGIzYzNiMTI0NjBkNDgxMTA5MWVmMGNkMTRhODEyZThjZmM4ZGJmMmEgbGVnYWN5LXRydW5rCis4MDcwNSA4Yjc1MzI5OTI0NjQyZWI5OWUwNTYwNDE3ZGJkMjIxN2ZmYmU2ZGQ0IHB5M2sKKzgwNzA2IGM2MmIxZDAyNTUxYWUyODY0MTZhNjNhOTRhNTYzZTdkNmY3ZjYzM2QgcmVsZWFzZTI2LW1haW50Cis4MDcwNyBhNzc0NjdiY2FkZTBiNzgzYTk4MTUwYmEwNjE1YzkzZWExOTE2ZTE4IHJlbGVhc2UzMS1tYWludAorODA3MDggMDNjMzIwOTJkMjY2ODI4MWMyYmFjYmRiMDg0MDI1YjMyN2YzNDVjMCBsZWdhY3ktdHJ1bmsKKzgwNzA5IDYyYjlhNzQzMTA0N2Y2ZTk5ZDA3Mjk2NGI0NGFjM2IxMTBiYTkzODMgcHkzaworODA3MTAgZDA2MmI4ZTc5MDUyMWUxM2Y3ZjkzYTk2ZjI3M2Y3ZmI3NjViNWM4YiBsZWdhY3ktdHJ1bmsKKzgwNzExIGI3ZmNiMmFmOGNiNDA4ZGU2N2FiZTg1MWUwMDA4ZDM5NjY5NjQwN2QgcmVsZWFzZTMxLW1haW50Cis4MDcxMiA1NmQ4MzFlNmY1MDg4MWFkZGRlODUyNGM3YmJhMDAyNjJiNjAwOTk5IGxlZ2FjeS10cnVuaworODA3MTMgNDc2N2M2NjZiMjViMDhiM2JmNTliNGRhMWZlNzY3NDFhNTczNjI3ZiByZWxlYXNlMjYtbWFpbnQKKzgwNzE0IDVkNGE1NjU1NTc1ZjJjNGM2ZGE0ZWU2YWNhZjAzYjkyYTMxZjE5YmIgcHkzaworODA3MTUgM2VkMjhmMjg0NjZmNjA2YTE2YWQyNGY4ODgxZjY1OTc0MGRmZTBjNyByZWxlYXNlMzEtbWFpbnQKKzgwNzE2IGY5OTJjZWQzMmMyMDU3OGEyOTMwMWNmZmUyMzI2ODM1Y2Q4MzBlYjIgbGVnYWN5LXRydW5rCis4MDcxNyBkOTJmZjcwODFiMjAzOWQ2Y2M4NTU5YzFiMjMzYjBiZWUxNWM3NDlkIHJlbGVhc2UyNi1tYWludAorODA3MTggZjAyNTVlZjRkYmViZDFmMjM4ZWQ1OTFiZjA3NmRjM2E5NDlhN2JjMyBweTNrCis4MDcxOSA3YWFmNTlkOGVmMGJmYmI0YWRiZDlhNGZjMzRjMzMyNWZjYzYyNDliIHJlbGVhc2UzMS1tYWludAorODA3MjAgOWI0MzhiYjA2ZDRkNjIzZTJlMjM1OGM1Njc3NmJiMjkwYWY2MmYxMSBsZWdhY3ktdHJ1bmsKKzgwNzIxIGZlM2JmMzk5YTE5YzEyNjczN2ViNDU4MjRhOTI0NTdhMmFmOGM5ZTggcmVsZWFzZTI2LW1haW50Cis4MDcyMiA4MWNlZjViNzRmMWE3YWU1OTgzN2UyYjljNzhlMGUwMzQxNTc5MTU5IHB5M2sKKzgwNzIzIGNhMDFhYmQ4YWQ4NzE2ZmMzNzE2MmM0MGEyOGE4YThiODQ1NWRjN2UgcmVsZWFzZTMxLW1haW50Cis4MDcyNCA0ZmQzYWI1ZmE3MWQ2MDZhZTdlMjgwMzEyOTI5OGRlN2JlYWYzMmYwIHB5M2sKKzgwNzI2IDY4NTBhYTc4NmMxODc2N2U3YTNkMjRkM2U5MmQzNmQ5YzU1YjhlOTMgcHkzaworODA3MjcgNTEyZDYxYTY5MmU0ZWIzN2VkNTczZmI3YzA5MTA3YjE1ODRhNDcxOSBweTNrCis4MDcyOCAxMzhiYjVjOTMwNzQ3ZmFlYjY0ZTQ4M2UzN2YyMDVkNGE0ZGM0NjVkIHB5M2sKKzgwNzI5IDE4Y2MwNWU4Mjc1MjI3MWU2NjRiNTNmYmU2MDQ1MTZkNTQ1YmRhOWMgcmVsZWFzZTMxLW1haW50Cis4MDczMCBlOTkxMGQxOTMyMTQ2ZTBhNTM5MjEzNGRmMDY0MGIyODZlYzkxMzUyIHB5M2staml0Cis4MDczMSAxODFjZDE0OTJjYjBjNzViYTk3ZGIzMjAxOWZiYjgxMzczMTM4YTIxIGxlZ2FjeS10cnVuaworODA3MzIgYTExODkwNTI3MjI5OWZiNWU2YTIwMDczNDlhMGFhZjcwNDY2NGQxZCBsZWdhY3ktdHJ1bmsKKzgwNzMzIDAyZTE4N2JhYWY1MTRkN2I5NjJjM2EwNGU0YWMzMTlhOTc3ZWNkNTEgbGVnYWN5LXRydW5rCis4MDczNCAwY2Y4MGI3MGY4MzhhMDM4MWEzMmNmN2I1NWYzNjQ4NDVkMDM0ZGM3IGxlZ2FjeS10cnVuaworODA3MzUgOTgyZWVjOWE4YzI4ODUzYWZkNWU0ZDhmOTg5NDA3MGU4ZDU4ZmVjNyBsZWdhY3ktdHJ1bmsKKzgwNzM2IGViNDcwYjg1ZTY3YWZhNjVmYTNiZDMwMDIzNzlmMTQxZDNkZWRhYzYgbGVnYWN5LXRydW5rCis4MDczNyA3ZWU1NjJjY2VhODAyYzEzNjk4N2YxYjJmOTBhOTlkMmQ5OTQ0OTdhIGxlZ2FjeS10cnVuaworODA3MzggNjM2NTkxZjRjMjE2MmE5MTAwMDMyZmYwMGFmZjQ4OWRkYzFjMjZkOCBsZWdhY3ktdHJ1bmsKKzgwNzM5IDgxNDI0NTNkYjgwY2EwMDFiNTE3OGRmZDYzY2QzY2VkNjM1YzFkODIgbGVnYWN5LXRydW5rCis4MDc0MCA3YzYyZTcyZDg1NmIyOTIzMjdlYmQyODlhMDJhZWZlMGY3OWM3MGJhIHB5M2sKKzgwNzQxIGY2NTY5ZTM0YmQyODFhYTFlMjFlYjExNzkzODI1Y2QxMjM0ZTQwOWIgbGVnYWN5LXRydW5rCis4MDc0MiA3Njk1ZjZhN2UzYTNiNjQyNjJmNzJmOTllNTMzODM3NGY3YjYzMTNjIGxlZ2FjeS10cnVuaworODA3NDMgNjZmYmNhMjg3YTAxMTg0MmMxMDFiNjYyZjI0OTI0MmE2YmRmMTU0MCBsZWdhY3ktdHJ1bmsKKzgwNzQ0IDNjNzY4M2Q2YTNjNDcxMzY0ZTI5ODM2NTZlMmU4NTUyZTU4N2IyM2YgbGVnYWN5LXRydW5rCis4MDc0NSA4NWQ2OTNlNWYyMjkzYmI0MWExNTJmMTI0MWUxNTI1YjMzMjVhZmRmIGxlZ2FjeS10cnVuaworODA3NDYgNTVhNTkzY2MzMjgwM2JjNzRkYmJmYWYzYzY5YTQxNTFhZDY2MDg4OCBsZWdhY3ktdHJ1bmsKKzgwNzQ3IGNkMzNkNmNkMjEwMTk1NjQzMzk1MmFmZDMyYzI2ZDViN2JiM2Q4ODEgbGVnYWN5LXRydW5rCis4MDc0OCBlMGVlMDk1MWU5NTNmMTUxY2YzZmMwOGM3YTA5Zjc1MjQ1ZDU1MzkyIGxlZ2FjeS10cnVuaworODA3NDkgNWVjMTU1ZWM3ZGIyNzBhNGU1MGVmYmE4OWIwNWNkODFkMmMyNTQ5ZCBsZWdhY3ktdHJ1bmsKKzgwNzUwIGQxNzZhYTQ3MzI4NzU2NzhmNGRlZWQ0OGM4ZDA1YTBmNTcxMThlYmQgcHkzaworODA3NTEgYTUxNTM3ZTcwNGE5YjQ0NGU2Y2U1OTg0YzgwMmNjODk1YmM2ZWUxNiBweTNrCis4MDc1MiBiNzYwZjZmZjg5ZWFiMjdhMjRjYjUwZTViZmVjNWU0ZWI0Yzk5ZWM5IGxlZ2FjeS10cnVuaworODA3NTMgYzBlYTA3OTI1NDAwMjg0ZmY0OWMxZWU3MTRlOWRjMjUzYWY1NmE5ZSBsZWdhY3ktdHJ1bmsKKzgwNzU0IGVjYzMyZTJmNDY1NjZlNWRlYzlmNjliNDgyMjUzMmY1MTk0MDBiMWMgcmVsZWFzZTI2LW1haW50Cis4MDc1NSAxODMzNGYyM2Y2ODZmYzI1ODk2NDAyNGQ3MGI5YzE0NjY3ZTdlNjUwIHB5M2sKKzgwNzU2IDExNDM5NzJmMDRiYmQ1Nzc4ODBmMWMzYmIyMDJjMDE0NDEyMzFjNmUgcmVsZWFzZTMxLW1haW50Cis4MDc1NyAxYjRiNTA2YWEwNDI3NjlmOTBhZmExMWExZjM0NjZmMDQ1NDM2ZGZhIHB5M2sKKzgwNzU4IGY1NTBlZDg5Mzk4ZjU4ZTUxYWQ5NWUyZTUyNGU3OTJmYzdkYWM0Y2UgbGVnYWN5LXRydW5rCis4MDc1OSA2ZjQ2NjhiOTdkNjg0MDM1NDM5YmRmMzhmNTkxOTQzNzRiYzFlMTYyIGxlZ2FjeS10cnVuaworODA3NjAgYzc0Mjk5ZGU4MDFhYmEzNWIzNjIwOTQ5NTIwN2NkZDg1Mzk4ODYxMyBweTNrCis4MDc2MSBmMzg0ZTExYzFiYjVmNjhhODc3ZDhhOTUzZDdlZDdiM2RlOWZlMzQzIGxlZ2FjeS10cnVuaworODA3NjIgMzkwN2Q1MjY0OGEwZjI1NjEzMzVlNzBlYjgxMDhlODdkODA4MTFiMiBsZWdhY3ktdHJ1bmsKKzgwNzYzIGFkYzJlYmRhNzYzNmFhZmJkYzc1MDFjYjA3NmM3NzY5NTg4MzdhM2IgcmVsZWFzZTI2LW1haW50Cis4MDc2NCAwYTRjYTg5MmE1OWU1ZTkyOTgxOTEzZjc2ODA1OWU4MDVhZTkwNjE2IHB5M2sKKzgwNzY1IDliYTZmY2VjNGYxNDllMTdhMjIxMjc1NGU1YzkzOTRiNjE0ZTA3MmEgcmVsZWFzZTMxLW1haW50Cis4MDc2NiBkOTIyODA1MTczMDUzNzFjMDUyYmYxMmU0ZGI2N2NhZGQ3ZTBkMjdjIGxlZ2FjeS10cnVuaworODA3NjcgOGM5Yjc4NWIxODQ5ZDA2YjNkN2FkZGRjNDUwMTg4ZDZkMmY2YTYzYiBweTNrCis4MDc3MSBkNDlmMTMxMGUyM2Y5MDJhZDhhZTM3ZThkNTc1MDQ3ZTRkNjA3YzNlIHB5M2sKKzgwNzcyIDZlNGJmY2YyMDgwYzcxNjE2NmFjZTQ3YWJiMmRkZjk0NGRjOTk1NmIgcHkzaworODA3NzMgY2Y0ODUzNTEzMmUwZGMwN2VkMGUzYjdiMDJiMjUyNzQ5YTdlMmM3MiBweTNrCis4MDc3NCBlMDEwNWZkNTIwMzI5MTdlMzAwNTk1ZjM2MDVlNWFmZDVkMzJmNjk2IHJlbGVhc2UzMS1tYWludAorODA3NzUgZDc0YWM3Y2NhNjA3NzBhMTEyZGFhM2QyZTc4NjViMzMwNmFjNjc4YiBweTNrCis4MDc3NiAxMzRhNjNhZjIyYTlhNThhODY1NmMyODFlNzNlYTdmOTFhMmE1OTZmIHJlbGVhc2UzMS1tYWludAorODA3NzcgYmI1MWU0YmJmZjhjMjhiMjIzY2RlMDExOGUyOTUwMGE0MGYyYTY0NCBsZWdhY3ktdHJ1bmsKKzgwNzc4IGRkNjBkZTJmYWUzY2Y2ZDNhZGEyYzZkODUxMjk0NDQ2MGNhODk4MTcgcHkzaworODA3NzkgNDM4MGUwNDM0M2VlOTg1YTdhOTlhMDY5N2YyNjg2MGQ0OGE3YjU4NCByZWxlYXNlMjYtbWFpbnQKKzgwNzgxIGI3YWUzYTZiMWQ4NGIyNzQwYTcyNjQzYTdmZDZiM2E1YWI3ZGM5ZWUgcHkzaworODA3ODIgZjQ0MTFhM2NkZjEzOWJhYzc3OWUyYmVkZDFkNzY3MDE5ZjgxMmY3OCBsZWdhY3ktdHJ1bmsKKzgwNzgzIDMxYTMyZTRlMDI1NmZmOWIxM2IxNTRjOGI1YWFmYTRmYjAxZDgzMGMgcHkzaworODA3ODQgZGM2ODUyMDk4OGE3ZjliOTZhMjUwMDQzYjdlZGY2ODliYzBkMmNiNyBsZWdhY3ktdHJ1bmsKKzgwNzg1IDgxM2RhZWU5NGY3MzgzZjFlYTEzNGExZmQxZWU1N2ZkNTgxZTk4ZmIgcmVsZWFzZTI2LW1haW50Cis4MDc4NiBmYmI1Y2QzNDViNDJlOTFkYzIzZmQzOTY3MWYzOGIxZWVhMjZiNmNhIHB5M2sKKzgwNzg3IDdiMjk5NDA0ZTc4MTBjZDZiOTY2OTkyOGRmMjQ5NGNmYjdkOTdlNWEgbGVnYWN5LXRydW5rCis4MDc4OCBmMDVhMjk4OTM3OWVjOWE2YjMzNTNjMjZlODM4NzBkODcyNGI5Yzg3IHJlbGVhc2UzMS1tYWludAorODA3ODkgNmRiOWJhNDJlNDY4NzIzODBlMDliZjc1NGEwYTVlNjg2MWM5MGI0NCBsZWdhY3ktdHJ1bmsKKzgwNzkwIDM1MjIxYzAxNThiNWE3MmZkMTRmMjNjNmU1OTBhNTJlOTk0ZDIyMTEgcHkzaworODA3OTEgY2NhZGU1NzcyNjc0NjQzNzU3Nzg4ZGU0M2RhZDI5NWE1ZDVlMDFkZCByZWxlYXNlMjYtbWFpbnQKKzgwNzkyIDUwYTRlYzM3MzYxZDAwZGU0MGIxODhmZDdkODdiYzg5YjI3MDk1ZmUgcmVsZWFzZTMxLW1haW50Cis4MDc5MyBiNjA4ZTJlZDlmNzU4OTFiYmZkZjQ3NTJhZDAzYzhjNGU2M2Y2OTExIGxlZ2FjeS10cnVuaworODA3OTQgNGI2OGQ2YzhjZDUyYzRlMDZmN2E3ZDU4ZTVjYjU3NGMyZTY5ZTdhNSBsZWdhY3ktdHJ1bmsKKzgwNzk1IDM1OTMyYTI0YmU4NTA5Y2Q5YjYyN2I3ZWQ4ZTZlMGE1M2QxMTEwOWEgcHkzaworODA3OTYgZDRhYTM1OTA3ODA4NzYyZGVkMDk4ZjhlMWU0ODVlZmJkY2RmZTE1OSBsZWdhY3ktdHJ1bmsKKzgwNzk3IDYyN2YxMTQ0MGI4OWU2MjI1YmI0ODc5OGU5MGYyZTg5MzBjMDBiNTIgcmVsZWFzZTI2LW1haW50Cis4MDc5OCA3NDgzZWNiNjIxZTBmNjBiZDg4MWM3ZTAzNTE4NDU5OWE0OWFkN2ViIHB5M2sKKzgwNzk5IDhlZTgwYzJmOTkyNjc5YzdiZWViZDJiMjAxNTQxYTFhYjRiNzZhZWIgcmVsZWFzZTMxLW1haW50Cis4MDgwMCA1NzVlOTM4YThjYTUyNWIyM2U4MGNmZDgzODBiYjVkYzU1ODQ2NTZkIGxlZ2FjeS10cnVuaworODA4MDEgMTg5YTJkZTNlMDM0NWYwNDRlNTgwNDAyNzg4YmFmMjhkM2I5YTg4MCByZWxlYXNlMjYtbWFpbnQKKzgwODAyIDMzYWMxMDlkZTBjYzJkMjAwNGE0YjA5YTRmNGI2ZDZkNDViOWYzNjUgbGVnYWN5LXRydW5rCis4MDgwMyA4MGQwNTYzMDI2M2FkZDI1OGVlM2E3NWUyZmEzODAyYzU3ODlkYTE3IHB5M2sKKzgwODA0IGY2Nzg1YmNlNTRiNTMzMmRlNWU1NmY3OTE2MzJjNTY5MzA5ZTc4NmIgbGVnYWN5LXRydW5rCis4MDgwNSAxZjc1MDZmMjM3NzE2ZmEwODVhMmE0YWJlYmMwYzRhYTNmMDQ1OWRkIHB5M2sKKzgwODA2IDkwZjRiNjJkNDc1OWQwNDhhNTM4NzY0MjY3MmM1NTFiNzUzYzEwZWYgcHkzaworODA4MDcgNjg5OTEzOTMwMWM5ZTg3YzM5MGMwZWVjMjczMDNmZjA0MzhiY2YxOSBsZWdhY3ktdHJ1bmsKKzgwODA4IDNiNThmMjQ0MWNjODdmZGQ2YjZjYTZiNWYzMjQ1ZTdiMjQ0ZGY4NTcgbGVnYWN5LXRydW5rCis4MDgwOSA5NDUzOGIwNDRjYmVmYWIwZTk0NjdlMmJkNzE5M2E1NmE3N2Q5M2ZiIGxlZ2FjeS10cnVuaworODA4MTAgZjk1YzI1OWI4MGIzY2U1YWQ1NTlmOWY4NDZlMTc2MmJjNjUzODAzMSBsZWdhY3ktdHJ1bmsKKzgwODExIDdiZTgxMjllZTBmZDIxZGQxODk5MDUwYTQ5OTUxODk1ZDk5ZWUwNDQgbGVnYWN5LXRydW5rCis4MDgxMiA0N2EyNzAwYzAwYjQ5ZDg2NWQxY2QyOTRkOTZjOTIyMzNmOTAwY2YxIGxlZ2FjeS10cnVuaworODA4MTMgNWNlYTI3Mjc1YWYxMjU4MmIwNzhjMzM5NmIzMjNlNmM4YTdkYzJjNiBsZWdhY3ktdHJ1bmsKKzgwODE0IDJkOGZhNzRmOTI2M2U0MDAxMjlkYjUzYzQxNDI0ZTA5NTg1Y2FlOTYgbGVnYWN5LXRydW5rCis4MDgxNSBmZmY0MzlmMDg5ZmU1NWFiNTRiOGM3Mzk0ZmUyMWI5NDA1OWY0NjMyIGxlZ2FjeS10cnVuaworODA4MTYgNmZiNmZhODAyMjIxZTdmNTg0YTNkYmY2YjlkMjRjZDgxODU4ZTEwYiBsZWdhY3ktdHJ1bmsKKzgwODE3IDg0NWM2ZDgwMDMwMjQ0NmNhODNiODRmMGIwY2I1MDc4MGU3MTY2MDUgbGVnYWN5LXRydW5rCis4MDgxOCA3N2I3ODYwNzYwMGU1MjRkMmU4NjdkZDU0ZDhiNjQ1NTBmNGJhMTJhIGxlZ2FjeS10cnVuaworODA4MTkgM2ZlNGMzNGY3OGMwMjlmNzhlOGUzMzM5ZGNmMWNjODkwOTI1MjNmZiBsZWdhY3ktdHJ1bmsKKzgwODIwIDk1YzQwMGI5ZDc0Y2EzN2E2ZmM3MjdjOTA4ZmEwMGIzMmE4MDdjYmYgbGVnYWN5LXRydW5rCis4MDgyMSAwZDE0ODI3YmNjMGRmYTllZTIwZDMyZDg4YzQ1MWQ4OWM4OWNlZDkzIGxlZ2FjeS10cnVuaworODA4MjIgOGUzYjVmYmMxZTQxYmYxYjNmNzA2YTQzOWFjYTY2NTM1ZmI0Nzk5NyBsZWdhY3ktdHJ1bmsKKzgwODIzIDAzNzhmNmUzNDZmMDMyNTk4NzA2Nzc1MDZhN2VkYWEyYmJhNDlkZjIgbGVnYWN5LXRydW5rCis4MDgyNCA4ODQ2NmVmMWYwY2RlNjgxODA4YmQzMjM3NjRiNDQ5YmJhYTljZWFkIHB5M2sKKzgwODI1IDhiZjM0NTk0YjY2ZjMxNTNiOTgwZTg2Yjg0OTA5ODExODAwYjlkOTEgcmVsZWFzZTMxLW1haW50Cis4MDgyNiBmMzMwOTA0MmEwYjMxYmVlMTZjMjNkOTkzMzUyOTdiOWI2ZWRiY2ViIGxlZ2FjeS10cnVuaworODA4MjcgMDNiYTYwZDFlNDkyYTM5ODQ1NTcwMTA2ZTI5MmIzZjVjYjRlN2U1NCByZWxlYXNlMjYtbWFpbnQKKzgwODI4IDk0NDkzOGFiYjI2Y2UwNjA5ZjA0MzBkODQzNjZlMzNkOTNkMTJjY2UgcHkzaworODA4MjkgZjRjZWI0YWUwMjQ3ZGJhMzI2MjI4MTFmNzM1YmJhZTc3MzBhMTA0MiByZWxlYXNlMzEtbWFpbnQKKzgwODMwIDI2YjgxYzRlNWZiYTQ3ZTRjNjY4MDNjM2E4OTY1OTU1NjQ5ZTQyNTEgbGVnYWN5LXRydW5rCis4MDgzMSBmMGZhOTQ0YjE1YzBjZjFmODcwNjBkYWYzZjkyNzdiMjAyZTU4ZWI2IHJlbGVhc2UyNi1tYWludAorODA4MzIgOWJlYTM3YTg1MDg4NGNkZDIyNzkxYzk0YTA0MGYyZmRjM2QyZGJhMCBsZWdhY3ktdHJ1bmsKKzgwODMzIGM0MjQyOTliMzg4NGI0MGM3NmE5MGZiN2I1NzdmMDdmNmEyMzBjYzEgcHkzaworODA4MzQgOGI1ZGRlMmMzMWZiM2Y2NjYwNWYzYzk1NmM5MWJmNDQwZjZhYWJhMyBweTNrCis4MDgzNSA3OGU3ZmMwMWM1MWFjNTgzNWY0ZDUzYjNmMWUxMTZjMmMyOWQ4MjQwIHJlbGVhc2UzMS1tYWludAorODA4MzYgNWRjYTBhM2ZiOTkzYzQwNWVlM2E1YWRhMmZiZjM5NzJkMDBlMmU1MiBweTNrCis4MDgzNyBlM2U0NjZmNTNmOWVmMGExNDIyZGU2Njc5ZGRhNGUyNzcyMDMxMzcxIGxlZ2FjeS10cnVuaworODA4MzggOTk1ZWI5NmNhZTY4NmJlZjM1Nzc4ZjBlNGI5NWFhZjI5Nzg1YTI1ZiByZWxlYXNlMjYtbWFpbnQKKzgwODM5IGIzMDNjMzUyNTRkZTQxMzE3ZDljODcwNDQ4MWNiMzg3N2ExYTc2YzIgbGVnYWN5LXRydW5rCis4MDg0MCA2NTU4ZDk2YWRlMDNhZDMzODZiOTVmMjQ0YjJkZWI4YzVkZDVkYTYwIHB5M2sKKzgwODQxIDJmMzEzMDA4YTQxZDQ1ZjJhNmVjZmY2NGFjNjMyYmQ1ZTVhMmRlODQgcmVsZWFzZTMxLW1haW50Cis4MDg0MiA2M2Q1YjlkMzhiMTc2ZmE0YjEzNTdhMDExZGQ2M2NmOTZiMjQwMWY3IHB5M2sKKzgwODQzIDhhZmQ2ZjI4YWNhOWQyMmFlOWJlZTYyYTUyOTA3M2E2YjViMmUyOTggbGVnYWN5LXRydW5rCis4MDg0NCBmMTFkNGQyYjQ0YjY3ZDRhMWE3MjQwOTE2ZGYzOTIzNThhMGUwNjM1IGxlZ2FjeS10cnVuaworODA4NDUgZTExNDZiMjVmNzczMjI0ODY0MzNjODc2N2RkZTIzYWJlZjBhMWZlMCBsZWdhY3ktdHJ1bmsKKzgwODQ2IDFjZmIyMjk4NDRhNzhjNTQyMjI2MjdmMTc5ZDZkZTMxNDMxNzUxMDggcHkzaworODA4NDcgZTUwM2JiOGIzZjYxNWIzNmYzNzI3MmFkNzNlMDk4ODFiMzUzOTM1NSByZWxlYXNlMjYtbWFpbnQKKzgwODQ4IGRjMmFhYzYyNGZmOGY5YjYzNmJlZWZkMzQxMGJjMGMyNzMxYjNkZTUgcmVsZWFzZTMxLW1haW50Cis4MDg0OSAwMTZkYmFiMzUxZjJlMTNlNmQwYzZmNjMyZWUyMmFjNzkzNzQ5ZjEwIGxlZ2FjeS10cnVuaworODA4NTAgODVjYzNlZGM3ZDQ2ZTQyNjQ0YmNlOGJiNTc0MWRhMjZkYTM1NjEyNiByZWxlYXNlMjYtbWFpbnQKKzgwODUxIGFhN2U2YjljYWI2ZDQ5MmRjNmY3MGY4YTE0MjVmZTg2MTZiYjFhODUgcHkzaworODA4NTIgZTIxODAzYzRmMWVlZjVmODkyNmJlZjZlNjVlNDllY2YxODNiNjU3MiBsZWdhY3ktdHJ1bmsKKzgwODUzIGQyYTQ0MDA1NzhhNWM3M2VkNmU3ZTZmM2FmMjIzMmZkNjBlOTdhMzUgcmVsZWFzZTMxLW1haW50Cis4MDg1NCA4OTQyZTk2Mjg2ZGM2NDE3N2VlYjJlY2QyMzNlZjE3NTVmYmNkYTBjIGxlZ2FjeS10cnVuaworODA4NTUgOGI2NDE1OTc5MmJiYjFmNzE2OGIxNmJhMGVkYzY1MGNmNGQwYTM1NCBweTNrCis4MDg1NiA1YjU1ZGM5NTU0ZmNiZDc3ZTA3ZDFiZWI2M2ZmZDE5MWUxMmY2ZTQwIHJlbGVhc2UzMS1tYWludAorODA4NTcgMGVkMWViZTViYzJmYzkzY2YwZjAyMTMyMDJlMTQzNmIxZjY2MzYyYiBsZWdhY3ktdHJ1bmsKKzgwODU4IGU0YTBiYTI1MWM0YTRmZGQwNTg1ZWQ0NmJhN2Y4MmRhOGU0ZDFkMDYgcmVsZWFzZTI2LW1haW50Cis4MDg1OSBiOTJlZjhlYmNjYjk3NjBiNGFlNDk2ZmU1OTdlZjhjYTAxMDhmNWFmIHB5M2sKKzgwODYwIDM5YTJiZTQxMjdkZDQ0MjI1Y2FlMjU4OGQ3NDgyMGVlMWI2N2RiMWUgcmVsZWFzZTMxLW1haW50Cis4MDg2MSAzY2JjYzI3NDU5NzI5MmQxYzQ0Yzc3YTRkMDEzMjhiODI4NjIwOGQzIHNpZ25hbGZkLWlzc3VlODQwNworODA4NjIgOTk2NWVmODI1YzdmN2IyZDg1OTBkY2EzMjZkNmI0OWViMjg1NmQwYiBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODYzIDJkOGEzYmI4ZmI2MDhhNzNhMjcwYmU1NWIxYzhkYTM0NmY3N2RlNzAgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg2NCAzZGE2NzM4OGI5NmEzN2QxNjFlNWE1NWE3OTA3Yjk0ZjY0NjNkMmI1IHNpZ25hbGZkLWlzc3VlODQwNworODA4NjYgNjI1NGMwMjhjNjNkMjQwMGVmZDFhOTMzNjNhZjY2YmFiNzUwNTRkMyBsZWdhY3ktdHJ1bmsKKzgwODY3IGVhNzAwMWMzZjAwMGZmNjkxMzc5NDM0YjVjZTAwNTRlOWNhZWNhMGQgcmVsZWFzZTI2LW1haW50Cis4MDg2OCAyMTY2YjYzYjZmZGY4NmY2YjlmZDE4ZjgzMjIxYWM2MWUwN2EwNWY4IHJlbGVhc2UzMS1tYWludAorODA4NjkgYjRiMzIyYjJlOThiOTkwMTY5NGJiZWQ5ZTYyY2Q2NTVmMzRlMmNiYyBsZWdhY3ktdHJ1bmsKKzgwODcwIDM0NmM0YzJlMzg2ZTc0MzVjNWRhZGRlNjEyMmE1M2EyYzY1NjEwYjEgbGVnYWN5LXRydW5rCis4MDg3MSBjZWJlMjg1NzAwMDY5MGVmMjFiMjVlNDJjMjBhNDU3YTAyMzMxODUyIHB5M2sKKzgwODcyIDRjZGNmZjBlOWEzNmVkOGRlYWEyNzY1M2RhYzBjOWMwYzJlOWYxMzYgbGVnYWN5LXRydW5rCis4MDg3MyA2YjI3YTk1YzJjNTIyODE0YTZlOTFmM2EzYjJjYWU0MGZmMjczYzE1IGxlZ2FjeS10cnVuaworODA4NzQgZTRlNTQ4NmVjY2JlMGU2MzcyYjQ4ZDMxNDA5OGU3YWIyN2YyOGEzNCBsZWdhY3ktdHJ1bmsKKzgwODc1IGNjOTI1MDJkZTRjOTUxMTQ0YjJjZTdiZmY0NDkyZDk2OTI0NTMyOGQgbGVnYWN5LXRydW5rCis4MDg3NiAzYjQ5MDk2M2Y5MmM4NzQ4NjNjYzE3MTJmZmMxMzExODdiZmYxODFkIHB5M2sKKzgwODc3IDI5N2UyMzMyOGM2YzY5NTgwYmE4MThiNzg1YjA2ZDAxZGM3Y2Y4M2Qgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg3OCA1NGVmYWY2ZDJmODkyYTk1YTY3ODIxNmUyMTg0YjcwYzQ0YjllMWM4IHJlbGVhc2UyNi1tYWludAorODA4NzkgMGE4Mzk2OWI2ZjM1ZGIxNmViMmI2Yzg5MjllNDRhYWVjNjdkZDM0NSByZWxlYXNlMzEtbWFpbnQKKzgwODgwIDlhZjk2MGZiYWNjYzVlNGU1MWE3NmI4ZTM1NGUzYTBjY2M5Y2RjNTAgbGVnYWN5LXRydW5rCis4MDg4MSA1M2Y5Yjg0ODgyYTA1Njk1NDA3ZDVhYmVlNDI3NmE5ZjY3ZTVlY2FlIHB5M2sKKzgwODgyIGFiMGIyODU1YzllNDI5MTNhMmQ1ZTE2YmM2N2FjMzllMDA1ZGE1NjggbGVnYWN5LXRydW5rCis4MDg4MyBhZGU4MjkzYmE0ODdhMTk0YjQ2ODE1YTRjN2RhZWY1NzA3NzIwZDcwIHB5M2sKKzgwODg0IDJkM2FlMTJhZDA5MzY4ZGM3MDU5OWJkMzIwYzkzMzVlZTQxMjgyZTYgcHkzay1qaXQKKzgwODg1IDdlNWJkZjU5YTQ4NzEzNjBlNWMwNGRiMWExNjBjYzdhMDk5Nzk5YjggcHkzaworODA4ODYgNjkzZjc0YzQyZTVlZjlkYjNhNmMyOTdkMjllNDhmNDMwZGIzMTIxYiByZWxlYXNlMzEtbWFpbnQKKzgwODg3IDlkNzZhZjk1YzE2NmRhOTI3Y2Q4YjIzOWZhMGRmZGI5MDYyMjlmNWYgcHkzaworODA4ODggOGFkMWM3NGQ1OTA5NzMxNTU0MDFhNmExNDZkN2Y3YzcyMWFiZmQ4OSBweTNrCis4MDg4OSAyYWE2MDUxNjhmMTEyZTEwMzY5OTYxZDZjZDgzZGNjNzBhYjFkMjlhIHB5M2sKKzgwODkwIGYxODJlMDkyMmRjNzQ3NmYzNjVkN2RiZDFkNTQxMGI1MzE4OTQ0NmMgcHkzaworODA4OTEgZjQyMzA3NjVkZGJiMTc4ZGY1ODA0NDI0MmFkN2YwMGIxOTAxNjVlYSBweTNrCis4MDg5MiA1NDhmYThlZGI3ZjBmYjc5ODM5MjIwMDViODg5YmY2MmI0NGMyNDE1IHB5M2sKKzgwODkzIDVhYjRiNGVmY2Y2MWYzN2Q1MmUxNjNiM2JlMjI4NThlZWRiOWQ0NzUgcHkzaworODA4OTQgYTFjOWE5MTI2MGQ5MWEzYWY1ZDgwMGM2NjdlY2UwMzIxNzNjYjExMSBsZWdhY3ktdHJ1bmsKKzgwODk1IGE0OTI1NmIyMjY5NTdhMzA5M2YxN2ViZGU3Njk3MzY3MWIzMTU1NDQgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDg5NiBiMGI3YmEyNmJlNmMxOTE3ODEyMTBhMDMyNDllMWY0ODM0NDhjNTI0IGxlZ2FjeS10cnVuaworODA4OTcgNWZiMzk3N2ZiMzQxZTM3YmM5OTQ3NGM1MTljZTcyZGY0MzA1ZjQxNyBweTNrCis4MDg5OCA4M2M1ZjI3YWY1N2M5MmNlMDQzN2Q2OTA0ZDA2N2Q5OGUzZmVkZmRkIHJlbGVhc2UyNi1tYWludAorODA4OTkgY2E3N2VkNzM5ODI3MDE5ZjIyZTEzZDA0OTM3NGM5YWMwMzcyMGY5NSByZWxlYXNlMzEtbWFpbnQKKzgwOTAwIDBiMDk3MWRhZjU4YzAwNzA3MjQ5MDVkODM1Mzk5YTdmNTAxNzhmYTQgcHkzaworODA5MDEgZDYxNTE0ODg3MjZmOGFlNzY0NjUwMzMwYWZmNDZmZTZlNGFlYmZmMSByZWxlYXNlMzEtbWFpbnQKKzgwOTAyIDUyNjAxMDRkYjk5ZDc0MzQwNmIxNTU2NWEyY2U1YmI0OGUwNjA2M2MgcHkzaworODA5MDMgMDY5ZTdlZmE2NDViNTEwNzY1ZWU1MGI3NmY3NzNkZmI3N2E0Mzg3ZSByZWxlYXNlMzEtbWFpbnQKKzgwOTA0IDU5ODFiMmRhMTMxYTEyNzM0MDRkYWQyZWE3Y2RkMTg1OTAxMDI1ZmYgcHkzaworODA5MDUgNDI3Yzc1MDBiMmI3MGM5ZmM5ZjUyNDY1ZWNjY2U0YmEyOTRjNWFiZSBweTNrCis4MDkwNiAyNDU5ZWU2YWM3YzdhYWUwMmUwOGU2MDkxMGFlY2NlNjE0YzRhOTM1IHJlbGVhc2UzMS1tYWludAorODA5MDcgMTYzMjE4MzQxNTZhMDQwZTgyNzA2OGExMWQyODZlMjA4YTQ4N2Y1OCBsZWdhY3ktdHJ1bmsKKzgwOTA4IDVjOTA5NDc5MmQxYWNjZjQwOWVhZTQ4NzZkYjk5YTc2YzhmM2MxNzAgbGVnYWN5LXRydW5rCis4MDkwOSA0OTBkMWMyMDM2ZTk2MzU2MWU2OGM1NTg0OTkxMWI4OTBkMWZhNDY2IHJlbGVhc2UyNi1tYWludAorODA5MTAgZmU3ZTU2Zjk4NmNkNDUwZmUyNGM1MzRmZGUxOGQxNDUwNDEyZGNmMyBweTNrCis4MDkxMSBlM2EzZWQ2MTRjN2UwOWUzMzI2YTdiMjA2ODQ4ZmVkNmMwOTcwNDRiIHJlbGVhc2UzMS1tYWludAorODA5MTIgNjFjNGNhOTRhMzY2ODI4ZDJkZGI2NWFjNTQ2YzgxYzQwMjg5YjI5YSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDkxMyBlMDQ2YWRiMTA0Nzk3ZjQzZDQ2NTc4MzJmNWM3ZTVjOTY3YTRkYjQ4IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTE0IGUyOTk0MmVhMmZkZjg0MWYxNGU5YTdhMTczMTczNDM0Zjk5Yjk0NGIgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDkxNSAxOWJlZThlYTQ4ZDhhYjU3YjUyOTczNDQzMWFiODEwM2RlZGY2ZGI1IGxlZ2FjeS10cnVuaworODA5MTYgZDAyYjMxNzNjM2M1YjkyMTBjMmMxMmU4NjE3YTg4YWM0NjE3ODZlOCBsZWdhY3ktdHJ1bmsKKzgwOTE3IDM1MzI4ZjA2OTIxY2U5Y2Y1OTAwNmEzNDdmYWM1M2Y5ZDFhMjNmNjEgcmVsZWFzZTI2LW1haW50Cis4MDkxOCA1YTM4ZTdlMTZiZjhjYjkxODg0ZDNlMjhiY2JkZWYwZDMyZDYxMTUyIGxlZ2FjeS10cnVuaworODA5MTkgZmFjYzY5MTc1OWExYzMxOTY5YjViYjQzMzVhZmRjMDFiZGQyYjJmZiBweTNrCis4MDkyMCA3OTY3YmM3YjAxOGQ0YWU2MTg1Y2JhOGFlMjE1MGNiOGEwYTIzNWFlIGxlZ2FjeS10cnVuaworODA5MjEgOWRhYmZjMTlkMWFjNGZmOGY0ZWM5Y2UxNGZhOWQwZWFhMjhiNjI4NyBweTNrCis4MDkyMyBmNzM3ZDZjYmIwNDU2MWZhMzkyN2RkNTJlOTcxODhjYzIyODIzYTZiIHB5M2sKKzgwOTI0IGY1MGQ1Y2E0NjkwY2I2Nzk5MjQyYWNkNDI0MmRmZWJmN2YzOTRmYzkgcmVsZWFzZTMxLW1haW50Cis4MDkyNSA3MWFhMDk4YTA4MmUyNjIzOWU5ZmMxZDc5NTZhODUxMTVkZGQzNDBmIHB5M2sKKzgwOTI2IGI2MDI2NzZjYWRjZDg1YjVhOTgyNzQyMzZjNDBiNmM0ODNhOTBmMTIgbGVnYWN5LXRydW5rCis4MDkyNyBmMTg5ODE5MDQ1MDc5ZjhhYzIwZjJlODZkOTIxZWY1ZTM3OGNjZTJmIHJlbGVhc2UyNi1tYWludAorODA5MjggYmNiMGNmOTI0NjkzYmYwNWJlZDI0M2E2ZjU4ZTYzMmM3MDlmMjhkZSBweTNrCis4MDkyOSAzNjgzNzFmYTdmNWMzNjdkNDQ1OGUyYTE0YjY3YmUyYWYyMmFkODk5IHJlbGVhc2UzMS1tYWludAorODA5MzAgODM5OTUzNTgwYjZkZmNjNWUyMjlkZDk3NTVmZjg2YTQxNDJhOWEwYyBhc3luY29yZS10ZXN0cy1pc3N1ZTg0OTAKKzgwOTMxIDY1NDYxYTcwNTQ5NjdkODkyYTU0ZWJjMmEwODAxYzk4OGUwYWU3ZWUgcmVsZWFzZTMxLW1haW50Cis4MDkzMiAyNmVkYWI5ODlkMmY4ODU1NGZiODYyNGU2YjlmNmFhNmQyNTgxM2JmIGxlZ2FjeS10cnVuaworODA5MzMgZjU4YjlkZWNlMjVlYjhiZGU5OTQyMWI0ZmUzMTE4YjViYjJmMDk4OSBweTNrCis4MDkzNCA5ZmU1NjJhMmYwZTMxNDVkODNhMmI1MDQyZjhlOWI0NGFmM2JiYzk1IGxlZ2FjeS10cnVuaworODA5MzUgZTkyZmI5NWYyMzE3ODJlMDcxYjg0MWNkNWM0Njg0ZGRiY2ZiOGRiOCByZWxlYXNlMjYtbWFpbnQKKzgwOTM2IGI0ZmFmOTljNjQyZjc1MTA2NGRmMTYwOWJiY2M0YTc5NmQ1N2JlMDggcHkzaworODA5MzggODI1ODkzN2UxMzljMjI2M2Q3N2E4YWU5MWJlOWE1Yzk4ZThjNDlkNyBweTNrCis4MDkzOSA0OGQ3OTU5MTY3ZGVmN2RiZTlhOWY1NjEzZTMwZjBhNTk0NjI0ZDFjIGxlZ2FjeS10cnVuaworODA5NDAgMjNiZDYxYzdkYmJjZDU1Njk4NmIzM2E0NGI0MDkyZDk5NTc0YWIxNyBweTNrCis4MDk0MSBjN2QwNjc4OTUyZDNkYjhjNzkxZjY3MmZiNjgzNTU4N2UyNTBlZDJhIHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQyIDBlMzk4MmFlMjgxZDgyMzc1ZDcyYWEyMzhkYTk3ZmFmMjMzODE1YzYgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDMgYzg2N2Q5OTFlOTFmMGQyMjQ1MWNkZDMzYTI2Y2M2NWJjMzkzNTlmYSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0NCBkNmRhMzgxOTc3Y2U1MTZlNGI0MTY3ZDRjNmIyYzA3MWY4ZWYxNzRhIHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQ1IGE5MDM3MjI0OWZkMzVkZjY2NjQzNzJhZDMwZDAwN2NjNWFkYjMyMTYgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDYgY2JkZDAxM2RhZjZkNjE0ZGMyMmY0OWJjNDM3NzVmM2M5MmY4MDQxZSBsZWdhY3ktdHJ1bmsKKzgwOTQ3IGUyYmNjZDM3MmNkNjNiYmM2ZTRjZDM5NGMyYjI5OTI5NTkzNTU5M2IgcHkzaworODA5NDggODVhYzI3ZmE5MTNmYmFhZTJlN2EwMDA2MWNhMGZiMjA2MzgxNzI0NCBweTNrCis4MDk0OSAwN2E0N2E1MTQ1NDg3YWI3Nzg0YmE5MTM4N2JjOWJmOTJkNTA0MDZiIHB5M2sKKzgwOTUwIGE3NzQzN2JkZTMxYWYzMWM3ZTRiOWI3OTJjNGZlYWVhZGIzODBmMTMgcHkzaworODA5NTEgMWFiYjNkM2UzZThkZjUyZjZmZGFlZThhNDVkMTc3NzJjNTgzMDJlMSBsZWdhY3ktdHJ1bmsKKzgwOTUyIGNiYTFkMjFlYWIzZDJjZGU4MmRiOTE2NjQ5MzRmMDU0MDk5YTRkMGMgbGVnYWN5LXRydW5rCis4MDk1MyA3NGFlMGViOTMyZGVhZGFmM2UyZTNlNTU0MmQ2MGVhNzRhYmZlNTVkIGxlZ2FjeS10cnVuaworODA5NTQgNTNkNzYyMzBmYTE4NmY1NmJkN2E4ZmNmMTVmOGFlNzU0YWZiYjU1NCByZWxlYXNlMjYtbWFpbnQKKzgwOTU1IDdlNmYxZTgwYjNjNjU2N2U3MGEwZDY3ZDhlY2QyYWFlN2Q2OWI1YzUgcHkzaworODA5NTYgNDY0NGNmZjI1MjViZTBkZTdlMTNiMzliNDAyOTg3Nzc1MWQyNDRhZSByZWxlYXNlMzEtbWFpbnQKKzgwOTU3IGY4NTFlN2I2ZTBkNWM1ZDBhOTE5NmMxZjU0YjlmMzkxZjIyZDcwN2EgbGVnYWN5LXRydW5rCis4MDk1OCBiZWRlODUwN2YwYWNkNGM4YWNmZmFhZGM0MjBjZjBjNWYzYTVhOTU4IHJlbGVhc2UyNi1tYWludAorODA5NTkgZGIxMzM2Y2M4NTFjMmE4NWRiMGNmMWI2MjQzZGE5NzE3MWVlN2NlZSBweTNrCis4MDk2MCAzMjRmODk4ODZhMWNiNmRhMzJiZTIxOTFkMWQxMmJkY2RlZDVmZWQ3IHJlbGVhc2UzMS1tYWludAorODA5NjEgZDA2ZWYzMGE0NDFlZGI1YmFkNTdkMmFjZjkwZDRlYmFkMmJmNGQ0MCBsZWdhY3ktdHJ1bmsKKzgwOTYyIGI3YTBmMDIxZmY3ZDk3MzU4Nzg4ZmQ0NjkyYTc1ZDMyMDI3YzdmYWMgcHkzaworODA5NjMgYzE0MjNiMGE5MzI5MzY3NjQ1MzQ4ZGQ5YjM4NTM2OTFjODE3Y2JmOCBsZWdhY3ktdHJ1bmsKKzgwOTY0IDRmN2U1MDg5ZmM5N2FlN2FmODNmZWU5MmVkZjgwM2E1ZGQ5OWFjMjMgbGVnYWN5LXRydW5rCis4MDk2NSBhZmUyNTkyMzU0ZDk3YmM1MWFlNGQ5NzE3MTQzZGIxNTM0ZTgxMjRjIGxlZ2FjeS10cnVuaworODA5NjYgNGE5NDBkOTllYzg0YjFiMmFiYmFhYTBjOTI0NDI3YTMyYjAzZGY1YyBsZWdhY3ktdHJ1bmsKKzgwOTY3IDkzMDM5NWIyZGU5MDM2YjBlNzI3ZDgyNDAxMGVmNWY1YTJmN2ZlNzMgbGVnYWN5LXRydW5rCis4MDk2OCAzZmFlN2NiNDkyMDk1YjEyOTFlNjEyOTAwNTE4NGJiZmZlNTFhNTM4IHB5M2sKKzgwOTY5IGM1ZmRlNGE0MmNiMGE1ZTE1N2E2YzFjZmZmYjc1MDQ3ZjVkOTI4NmEgbGVnYWN5LXRydW5rCis4MDk3MCBmNjE0ZGJlYzJmNGY3OTJkN2QyN2Q3OGNjNTcyZmRkOTMxZDEwZTBjIGxlZ2FjeS10cnVuaworODA5NzEgMjI3ZmE3ZGI1MGRlZDAzYTg1NDY3YjAxNTNkYjExZTIzMjM1ZjYxMSBweTNrCis4MDk3MiAwZDk3MzJmNjA3NzY5MjkzNGRjZDQ4OTA4MDU1ZDFjOTkzNzAzMTZkIHJlbGVhc2UzMS1tYWludAorODA5NzMgYjEwYzNhMjRkMmY5ZGI4ZmQ0MWQ4Y2NkNTQ0MzRkY2EzMzg1NDQ1NiBweTNrCis4MDk3NCA2M2Q2ZjVmZWRiZjMxNDU2NWIyOWM3OGI0MGM4YWQzMjNhMGIwOTdmIGxlZ2FjeS10cnVuaworODA5NzUgMTdkMjFlOWU2MzIwMTMzZmMyZTkyMjYwNTgzMGJhNDhlODhiZDFjZiBweTNrCis4MDk3NiBiOTRjMTMzZGI0NTE2NjJiYWQyOTMwZTE2ZTUzNDM1ZTE3NGI0MjcxIGxlZ2FjeS10cnVuaworODA5NzcgMDI3MDE1MTFiNzU5NmMwMDE4ZWQ0NWQ3MTZlMjViMzEwMWQ5ZjRlOCBsZWdhY3ktdHJ1bmsKKzgwOTc4IDMzY2I1Yjk5MmQzOTJlYWYwNDNlZWJjODZkOTYwNTY1Y2Y2ZDk0Mjcgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NzkgYjdmMDJjNjcwYmQ3YzRmODZiMjc5ZTA1MTNhMjJjZDdhNGYzZjIyOSBweTNrCis4MDk4MCA3MDNmOGIxMWIyNTBiZGYzNzQ0Y2Y3Zjk5MjY1MDNkZDIwMjk1YWFhIGxlZ2FjeS10cnVuaworODA5ODEgOWY0NjdjNjJkOTU0MDhlNDEyYzk4YzJiMDIyZWM3YzJkMjM3MjgyMyBweTNrCis4MDk4MiAyODUyMjBmMjRjYzhmM2EzZWU1MjYxZDczMGU0NDBmYjNjYjk4NDIwIGxlZ2FjeS10cnVuaworODA5ODMgNDc4NDcxY2NmN2ZkMTllYzYzYTkwMzFmMjVlNmFjZGU1OWU2ZmYxNCBweTNrCis4MDk4NCBiZTFhZGYzYzhhMzMyYzVhZjJiMzg0YTQ3OWJmYjIzZDc0ZjNmYWViIHJlbGVhc2UzMS1tYWludAorODA5ODUgZTI2M2FjMmJlNGZkNDIwNjgyODRkMDg4NGZiNjNjZDQ0OGQ1Y2U4YyBsZWdhY3ktdHJ1bmsKKzgwOTg2IDJmN2FiOTIyMTIxYTQwYjcxY2FkNmRhOGM2YjU0ZWEyNmFiM2NjNDggbGVnYWN5LXRydW5rCis4MDk4NyAzMjkzZGE4M2RmMWUzMDg2YjgyZTA3YWUzNTA1YTYyN2VhM2UwYmYwIGxlZ2FjeS10cnVuaworODA5ODggZTQzNTg4OGI4ODI1ZTU3ZjI2NjcxZTRmNjQ3ZmFjNTU0MGY3NDRhNiByZWxlYXNlMzEtbWFpbnQKKzgwOTg5IGNhZmI2MjI1ZGVkODZlNmQyMWVlMzk4YmE4OTZiY2Y2ZmY0ZWIxMzAgcHkzaworODA5OTAgNzQzMzU1ZTNlZjRhYjExYmMyZDM1MWMwNmM4MTA1ZTE3OTA2MGYwNyBsZWdhY3ktdHJ1bmsKKzgwOTkxIDhmZjhmMGE1MjZkZDA3Yjc0MjljZWZhNTYyMzQ2NmYxMDU4ZDBiMzUgbGVnYWN5LXRydW5rCis4MDk5MiBmMmNiM2FmNTU2MmZiZDkwNGJiNjE1MmI2OWYxNDFjMzY4MDFhMTkyIHB5M2sKKzgwOTkzIGRjY2RmYmU1NzdiYTU3MmQ2NjQ2MDc5ZmM2Nzc0NWU0ZDYzMzM5NTQgcHkzaworODA5OTQgMjRlYzcyNTk0MTk2NWE5MWZlMzEyMWQ0MzU3NmVlZTUwNDUzNjIzMSByZWxlYXNlMjYtbWFpbnQKKzgwOTk1IDMxYjk0MTJjYWQwMWJkMDNmYzVmMjc3NWYxYTEwMjNjZWEyMTM5NjggcmVsZWFzZTMxLW1haW50Cis4MDk5NiBmMjE5NGU2ODg4MWViZjQzNzYxOWFjMGJmOTUwOWY0NzhmYWQ3YTBlIGxlZ2FjeS10cnVuaworODA5OTcgZDZkZjc0OTc4MGM1NDc5M2M3NWY0NDM3MTQ5MWM2YjBiYjQ1ZmQwMyBsZWdhY3ktdHJ1bmsKKzgwOTk4IDZiYjk4OTFkNDI3NWJkNDJhNjliM2Q5MDNkMTNiNjg3NTQzYzkxNWQgbGVnYWN5LXRydW5rCis4MDk5OSA4OGNmNTc2ZjljZWVhMjVmMWY3OWZiYjI5ZDgwYmJmYWNmZmQyZTZlIHB5M2sKKzgxMDAwIGYwZjQxMThjNzZlOTkwZjZmYWEzYTNhNmMzZGRlMTUxNjU3YmRiNTcgbGVnYWN5LXRydW5rCis4MTAwMSBmMTkxZDVmODBlYjA0MWJhZGU1NTQyNjE3ZmU1NzViZDlkY2Y1NDNiIHB5M2sKKzgxMDAyIGJlZDA0NDkyMzk4ZGVkNjA2MzZmNWEyMWE4Njg5ODU5YWNmZmJiMmMgbGVnYWN5LXRydW5rCis4MTAwMyA2NjNiMzlkNGE3ZWY3ZDY3ODdiMmViYmVhODAwYjE5ZGYyYTE3MTNiIHB5M2sKKzgxMDA0IDRkYTdmYmEzMzcwZmNhMGU4OTk0MTg5ZjEyOGM1ZmI0ZWU2OGNkZTkgbGVnYWN5LXRydW5rCis4MTAwNSBmY2IyMWQyY2ViNzNiMjkzMzkxNDUwNzVmZjQ4Y2NjNDFhMWI2ZmNlIHB5M2sKKzgxMDA2IGFiOWFlNTY3NmFkYWU3MjUxZjVkYTEyZGI5NmU0ZDc0NGUxOTAwNjkgcHkzaworODEwMDcgNDM1YTgzNTVkYWI2YmVmYzQ3MTQxZGMyMTZjMTBkYjBmMmIxZWNhNiBsZWdhY3ktdHJ1bmsKKzgxMDA4IDZmYThlMTM4MWI0OTkzYjE1MzYwZjFkOGU4ZDI1ZjllODQ5NjA0ZTkgbGVnYWN5LXRydW5rCis4MTAwOSAxMTdiNGI4MWI4NjQwMmZmMjk5ZDc4OGY2MzJiZTlmYzRhMDY0YmIxIHB5M2sKKzgxMDEwIDJlOWJjNjFjMWMxZWM3MTg4Y2ZkZTZhODE3OTIxNjhjZTFjMDRiMjEgcHkzaworODEwMTEgZmI3MTkwNDkwNDRmY2M4YWQ3OTEzZDJmZjM0NjcwZjU4MDQzZWQ4YyByZWxlYXNlMjYtbWFpbnQKKzgxMDEyIDJjOWUwOTVkNTJmMDBkZDYzYjNhOWQ3NzE3MjQzZTlkNDhlZjRkODEgbGVnYWN5LXRydW5rCis4MTAxMyA1MGZhM2Y0YzgyOWIzNDFiNmFhYjAwMjk0NWZhOWQ0YjJjNTk5NzEzIGxlZ2FjeS10cnVuaworODEwMTQgZGQxYzhmZjJlOTkwMzA4MTc0MDA5Y2M1ZWRjYzBjZTkyYzc1OWI4YiBweTNrCis4MTAxNSAxMTM5YjVkOTk2YjAwNDE0OTJiMGMwNGY3OGZmNjBlODQxOWQ2Zjg1IHJlbGVhc2UzMS1tYWludAorODEwMTYgYjk2NmQ1ODM1ZDNiMTEwYWUzNTFlZWFhOWQxYjM1MjNmNjIzZWQ1OCBweTNrCis4MTAxNyBkMzE1YTc5ZjFlY2NlZTU0NTJjYmIxNWE0NzkyZDI2ODZiMjU4ZmJjIHB5M2sKKzgxMDE4IDY3NzUxMWVkZjA1Yzc4M2E5ZWM5M2UzYzFmMGZlZGI4YTA0MTNkYTUgcmVsZWFzZTMxLW1haW50Cis4MTAxOSAwMzc1MzMxNmY4MWY3YjEzN2ZkNTg5ZmI2Y2ExNTAxMjMyNjljMjE0IHB5M2sKKzgxMDIwIDZhMmQwY2M3ZDYwNDljYTRlMDFmZDVmYmZlZDAxMmFkZmVkMDNjNWYgbGVnYWN5LXRydW5rCis4MTAyMSAzMDNkYjIyNjExNWRkNmNkZjA5MWIwMmJhMjcyMjllNzIwNjg0ODNmIHB5M2sKKzgxMDIyIDcyNGU4NzViMTk0MWM1N2YxYjIxZDc0NjljMGY5YTU2NThhYmQ1MmEgbGVnYWN5LXRydW5rCis4MTAyMyAyMjk0YmNmNDBlNTE5NTdkMTgwZGExZjU0ZDYzYzZjZTJjOWU5ZTY0IHB5M2sKKzgxMDI0IDNkYzI1ZDAyNGE1MWMzNGI1ZmZjNDY0MjA5NGMwYTU5YzFjODIxZWYgcHkzaworODEwMjUgZjhjMTljNWY1ZGQyNDgzYTAxNDVkNjkxMmI5YWMyOGUzM2YzZjZiZSByZWxlYXNlMzEtbWFpbnQKKzgxMDI2IGQ2OThmYjA1NmE0NTljOWEyZTQwY2MyNjQ0YTQ0MTdjOTYxYTRmNzggbGVnYWN5LXRydW5rCis4MTAyNyBiNmUwM2NhOGEyMDZkZWYzMzE2Mjk5MDhkODUxOTk5MjQwOWE5OGRhIHJlbGVhc2UyNi1tYWludAorODEwMjggMTlhYWM4NGFjMWRhZGViYWY4YjdkNmExMTBiOGI4NWRhZThmYTliNyBweTNrCis4MTAyOSBmZDI1MDMwMjIzYjA3MDI3MDAyZTdkNjU5NTZlNDgwM2NjNzA2YjdhIGxlZ2FjeS10cnVuaworODEwMzAgODRiYWY2MjU4YzNiZjM4NTM5NzUyYmIzYzkwZTFlMGVkN2RiZTE1MSBsZWdhY3ktdHJ1bmsKKzgxMDMxIGUzODMzNWQ0ZGY5MWRlNjQyN2M5YTIxYjU0MWZjZTRmODJkOTU2NWMgcmVsZWFzZTI2LW1haW50Cis4MTAzMiBjYWIxNGJlMGFkYTE1OWRhOWY3ZDk0YzVlZTdjNTZlNjFlMTU3YmM2IHB5M2sKKzgxMDMzIGYxOTc0MDdiZGJhMmY3ZDY0NDkyMmVmNzkzODhkNWM4YjRhYzg1OGEgcmVsZWFzZTMxLW1haW50Cis4MTAzNSA1ZWEwZjU4NThiNzIyYTEyYTdlOWE5MTU5MjhiMTUzZmY0ODFhYjY3IGxlZ2FjeS10cnVuaworODEwMzYgYmMwY2VhNTg0NDc4NDdmMjNkMWI0MjYwNGZkYmM1MDM0MjA2NzdmYyBsZWdhY3ktdHJ1bmsKKzgxMDM3IDVjYWQxMGIyNzdhNDc4MzEzN2U4Mjg2YmIzMTQzYmE5OTBlNWRkMzYgbGVnYWN5LXRydW5rCis4MTAzOCA2OWNlNmM5MzdkNmVjOWVlNGY4N2E4NjhkNjg1MGFmMTVkODc2ODc5IGxlZ2FjeS10cnVuaworODEwMzkgNDNkMDE2OWRmOTQzZmEwMzM1ZTdjZmZmMTIwZjc1ZWZhZDUzMDBkOSBsZWdhY3ktdHJ1bmsKKzgxMDQwIDMxM2Y4NTU4NmVmOGViODM1NGEwMWQxNTQ0OTllMDQzNzI3MTFmZDIgbGVnYWN5LXRydW5rCis4MTA0MSA2N2RjMGE5OGI4ZjZmYzkyNWRkNzNlNzdjMDAxOWQxZGE3NTc1Y2NiIHB5M2sKKzgxMDQyIGZjNDZlNDM3MjI3ZDYyOTFkMTFmODlmZDUwMTI5NDFkMzhhNTMxNTAgbGVnYWN5LXRydW5rCis4MTA0MyA1ZWIwZTU0NTE2MTI0N2NmZTZmZWQyMDdiY2NlMWUzZDdlNDNmMjgyIGxlZ2FjeS10cnVuaworODEwNDQgZmIxOWVjNTc4ODUzMzM5YzYwMDBhNGVmOGE2MmVmOGNhY2NkY2FjMiBweTNrCis4MTA0NSA0ODhkYmUyNjJmNjgxZDRhMThlOTE4MjE2YmVkMzc2NTExNWYyODgzIGxlZ2FjeS10cnVuaworODEwNDYgN2Y1YTU3MWIxZWNiOGEyODgwNzJkOGVkZTdiOTBhZTQxYTU0MDZiZSByZWxlYXNlMjYtbWFpbnQKKzgxMDQ3IDIwYWU4MzgyMWVmMDUzNzI5MmRmMWYwYWI5ZGNhMDE0NGY5MGRhNWYgcHkzaworODEwNDggOGM0OTljYjM3MjNhNGIwOWU1M2MyZjNiZGEyMzhhZDVmZDdlNjZkZSByZWxlYXNlMzEtbWFpbnQKKzgxMDQ5IDczNmQ2Y2U5YjYwYmFhOTM0ZGQ0YmFkOGNkNGY0ZDUzN2VlMjA1NGEgbGVnYWN5LXRydW5rCis4MTA1MyA5NDU3MzhlMTg3MjYzOTE0ZmViNDM5ZjIyYWQwMDViYjRmZjk3ZjVhIGxlZ2FjeS10cnVuaworODEwNTUgNmE4ZGZmZjZkMjQxYjUwMDEyYjkwNzUzODA2NTlkYjUzM2FmZDk0ZiBsZWdhY3ktdHJ1bmsKKzgxMDU2IGU2NDc5OGIzNmVhNGRlZjA2YTY3MmFmNzcxNGFiOTQ1YThhMmQ0YTEgcHkzaworODEwNTcgZGE2Y2Y4ZjNkOGMyZWM4NmQyNTk4MjhmM2IyNzY2OTUyY2E4N2FiZSBweTNrCis4MTA1OCBmMDI1YjZiMGZlMGY2ZjliZGFkYjNmZmRiYWU0YTc1ZjA3MWNhNzBkIHJlbGVhc2UzMS1tYWludAorODEwNTkgMzE0OGQ3MDUyOGI2MDY3MTY1YzcwNjc0ZWFlOTczYzM3YzlhZjM4NSBsZWdhY3ktdHJ1bmsKKzgxMDYwIGU3NjI5ZWZjNTVkMDA3ZTUyNDdmNjlkMDQ3M2E4ZWFlOWE0MjY0NjUgcmVsZWFzZTI2LW1haW50Cis4MTA2MSAwZjg1MDdmNTQ5NDI5ZTBjMmE0NzJjOTc3ZTI1NzkzNjQzMjAyOTA0IHB5M2sKKzgxMDYyIGJiZTlmOThhMGMwMjBjZWRlNjY3ZmVhM2Q5MTg2ZmU4ZjdjZWQ4N2UgcHkzay1qaXQKKzgxMDYzIDgyOWE4NmUxMWJkN2UxNGU5MGRiZDY0YjRiN2MzMTg0ODMzZmZlM2EgcHkzaworODEwNjQgZjEzNThhYTMzYTZlMjM0ZmQxNzVkNGM2Nzc5MGE3ZTlmMDZhZDg3ZCBweTNrCis4MTA2NSBjYmZkMjdkYjhkYzI3ODA3ZjY5OTdiY2NkODViYTI4N2YzNDVhYmVmIGxlZ2FjeS10cnVuaworODEwNjYgZmM5ZTIxNTk2OWQ4MzZhMmFmMzBlMTk2MWU4YTYzNzAwYjhhY2NlMiBsZWdhY3ktdHJ1bmsKKzgxMDY3IDVhYjA0NDM4NTZjYWI4YTJlNTM0NDcwNDY2NWRiZmY4MWRiNDY3N2IgbGVnYWN5LXRydW5rCis4MTA2OCBkNjA0ZmFiNzQ5ZGQ3NDAzYmQ4ZDQyM2FmMzIzY2U2MzgwZTc0YjJiIHB5M2staml0Cis4MTA2OSBjNzU1MTJhODVmZDFhZWMzYmEzM2VlN2U2MTYzY2FiNDdhMjI2YWYzIHB5M2staml0Cis4MTA3MCBiNjZlYmI3Nzc1NjhiMGU5ZTIwYWE1NzliYzFkNzJlZjZmMGEzNDI1IGxlZ2FjeS10cnVuaworODEwNzEgYmEwZmUwMjRlODlmZDRjYTU1NTZlMzE1ZDlkOTU1ZGU0ODRhYTY3OCBweTNrCis4MTA3MiA0NTQwOGNiNGI3MjMyYjlmMjRkOWNjY2IyMzQxMDQxZDQzOWIxMzU4IGxlZ2FjeS10cnVuaworODEwNzMgNjQ5ZDY3MTBhODFmZjc1Njg1MzA2NGRjMzlhY2ZhZDhhYjMzNzM5YiBsZWdhY3ktdHJ1bmsKKzgxMDc0IGY4MGU5MzU4MmI3ZmU2ZGU4MzNlZTNjNGZiY2Q0ZGVmMTg3NTZhNmUgcHkzaworODEwNzUgMDAyMjBlYmVlZDBhOGYyNGI0Y2Q3ZDAzNTYzNWFiYWQ0ZjBhYmY2NiBweTNrCis4MTA3NiA4YWMwZjBkYjVmNTk3NWZlY2E3ZWU0N2JjZTExOGFhOGQzMzE5ZTlmIHB5M2sKKzgxMDc3IGYxNWQ2ZjFhMmZhMzBlZDgzZDdjMjM1ZTZkNzYzYzM3NGFmNDRjZmMgbGVnYWN5LXRydW5rCis4MTA3OCAxZjY5ZjI4MTlkMzEzNTdkNGVkZWJiMjY3ZWUzZWZiNDQ5ZWYzOTQyIHB5M2sKKzgxMDc5IGMwZGQzM2E1YWRiZTZjNWEyYTA4MjY0MzIxZDM5YjgwODJjYmYwYTkgbGVnYWN5LXRydW5rCis4MTA4MCAwYWMxMWRiNWZjOTZlNDcwNTM5ZDJlY2M1ZTJjZmVkNTljZWMyODQ4IHJlbGVhc2UyNi1tYWludAorODEwODEgMDExOTQwYmFlZmIwYmU5MTM1ODIwMTIwNmNmNDYyNjQ4MmY5MjExNSBweTNrCis4MTA4MiBmYjYyZTNhOWQ4ODZmZmJhYTFjNDczZmI4ODE1MDI5YTA4ODUzMzcwIHJlbGVhc2UzMS1tYWludAorODEwODMgOWMzMjFhYWVlZjEyNjA4NmEzODI3YzIzZTM0NmY1ZWMzMGZmMjY1NiBweTNrCis4MTA4NCA4MWEzYTMyMjZjZjVkZDQ1YjRkNzJiMTlhOGRmMzFhZWEyNjNkMTQzIHB5M2sKKzgxMDg1IDlkZmVkOGRkMWM2ZDk4OTU0M2E0MjRjNDA4YmI5OTZiYTdlYzhjODEgcHkzaworODEwODYgMzUzZjQwZWVkMWJjNmQ0ZWNkN2ZmMGUyNTc4NWFlNmZkZjE0OWJlMCBweTNrLWppdAorODEwODcgNGZkN2ZlYTU5ZTViMmJjZjM3MGE2NTI5OWMxNGI2YmI0MmNkOTdkNiBsZWdhY3ktdHJ1bmsKKzgxMDg4IDNlNmNhNGIwM2M3OWE0ZDRmNTZlYWY2OTBhZGJmYTI4YTE5NDkzMjAgbGVnYWN5LXRydW5rCis4MTA4OSA4MTFmYzYzMTkwYTdjZDFhNzJkN2ZmNWU3YjgxNmFkYmQ0ZGY4MjBmIHJlbGVhc2UyNi1tYWludAorODEwOTAgZGZmNmZjMzg4OGM2MmU5OGU5YzRjZTAxZTU3NTk5MDdlMDQ3ZTZmYiBweTNrCis4MTA5MSA4NjgwMWQxZDkwMzg2YmFiMDZhZWVhOTcyYmRmYzhhMmQxMzdmNWE3IHJlbGVhc2UzMS1tYWludAorODEwOTIgMzBmNGJiYmFkZTBiNzExN2I1Mzc5MWM4NTA1Y2JiMWRkNWYyMzBlMiBweTNrLWppdAorODEwOTMgNDk1OWI2ZjViYzg2Y2RjNTA3ZDhkYTY0MTA5ODYzYWY5YmVjMmM4NiBweTNrLWppdAorODEwOTQgNWUzOTM0YTMxYzhkYzAyODg1YmJkOGEyOThmNGIxYmRjMThmNGNkOCBsZWdhY3ktdHJ1bmsKKzgxMDk1IGFmMmY4NGU2NjI1MzdjMzlmNTBiOGJhYjg0Y2ZkMDdiZDc4YTlmNWYgcmVsZWFzZTI2LW1haW50Cis4MTA5NiA1NGRjMTA5ODhmMTU0YzBkZWZlNmFhZjY2MzMxZTY5Yjc4Y2E3OGUxIHB5M2sKKzgxMDk3IGVmNGRlMDUzZDU3N2Y4NWZlOGFmZjk4YzczZjhjNDY2ZTM4ZWQwMGEgcmVsZWFzZTMxLW1haW50Cis4MTA5OCAzYThjYTY3YWU0MzExYjA0OWQxZjk5OGM1NjkwMDgxNDFiZWU4Y2U1IGxlZ2FjeS10cnVuaworODEwOTkgMmE3MGM4MDM0OWIwZWQwYTAyZWIwMGI3NzU2MTI5YjEwMWMyYmY0MyByZWxlYXNlMjYtbWFpbnQKKzgxMTAwIDQ4ZDk2NjRjNDdhM2Y1ODczMTMxNjhmMTU3OGI0ZjI5Yjk5MTlmOTIgcHkzaworODExMDEgNGIxMGVmOGEwMjRjZWZhMzMwNzdlMWMzNDg0YzJlNTlhM2YwNWNkMiByZWxlYXNlMzEtbWFpbnQKKzgxMTAyIDIxYTgxYzdhYTRiYzUwZjc4YTMwMDc4MTMxZWJhOGE4ZWVlMTM4MjAgbGVnYWN5LXRydW5rCis4MTEwMyBiOWQ0YWRmOGIxN2U5ZmYwYWJiZDU3MWQ3OTMyNTI1ZmZkMTViOGU0IHB5M2sKKzgxMTA0IDRiODk2M2NmODBiMjg2ZDY4ZTUxOGVhNjQ2MGI3ZmM0MmViMzY1NTUgbGVnYWN5LXRydW5rCis4MTEwNSBiNzYwNGVhMmY0N2U3ZjVlMDdhZTlmMTcwNjBhYTEwZjdjYmY0N2E0IGxlZ2FjeS10cnVuaworODExMDYgNzNmM2I4ODUxNzVkYjM3ZTAxYTA5NjE1NzQ3MmRhYTJkZDYwNmZmNiBsZWdhY3ktdHJ1bmsKKzgxMTA3IDc3MzcxNGU1ZWFhZWM5NjMwMWQxY2Q5YmViMjZhMWYzOWQwY2EyMGIgcHkzaworODExMDggMmRkY2QzMDUzM2Y3MmZkNjA3Njc4NGY2OWFhMDhhMTg4NTlmZGVhMCBsZWdhY3ktdHJ1bmsKKzgxMTA5IDZmNDc5NjBiNTY0Nzg5ZGNmOGU4MTgzYTUyNTYyNmU4NjVhYmE4Y2MgcHkzaworODExMTAgZWZhZjYyYzJjZjc1OTliNDhjZjNkYWVmMjg3NzRiMzY0MjM2Yzg3ZCBweTNrLWppdAorODExMTIgNWRlYmVjYjQ4MjgyZGFhMDQ4OGNiNzEwMGVhYjI1NzgzZmRhYzgzYyBweTNrLWNkZWNpbWFsCis4MTExNCBiNjQ2NDAxNGNhYTA3Njc2YmNmOWNjM2JjMDgzZTEyZDg1YmI3N2I3IGxlZ2FjeS10cnVuaworODExMTUgZTE4MzZhN2I2YjZlNzY5Yzk2ODMyMTEzNTZiOWFmNTc0Y2YyMzZmOCBsZWdhY3ktdHJ1bmsKKzgxMTE2IDFiM2ViZWQ4YjZjNjUyYTVlNmJhZDg0ZWNkODg5ZTNjMjVhZDIzOTIgcHkzaworODExMTcgMDEzZDc2YWE4OTUxYzJjNDg2MmU3ZDFhNGM0ZTJmMTlmNTI3NzE4MiByZWxlYXNlMjYtbWFpbnQKKzgxMTE4IDMzMDI3M2VjNjAyODM5YWJlYjc4MjQzMTBmNGIyNWQwNjQxYTY0MzYgcmVsZWFzZTMxLW1haW50Cis4MTEyMiBjMWJhODgxNmIxODdlOTM1NjVmNzI4Y2M0NTg2YjM5Y2E4MmY5Y2FiIHB5M2staml0Cis4MTEyNSA5ZWM3YWNmMGEwMDU4NzBmZTg4OTZlMDNkOTJiODg5NWQ3NmMwYzhlIGxlZ2FjeS10cnVuaworODExMjYgYjU1NGVlYTI2MTBjYzhkNzAyZTYzMzIzNzQ0MTA2ZjRkNTMzMTc3YSBsZWdhY3ktdHJ1bmsKKzgxMTI3IDkxZjQ2MmI5MDRiMWZkMjg2OGRlMTI2ZDM3ODhlYTY1YjkzNDU1OGEgcHkzaworODExMjggMzRhNjg2ZmJmZmViOWU1YTY1YjMzYTkxMDJlNTM4NGY3OTFjYjIxYiByZWxlYXNlMjYtbWFpbnQKKzgxMTI5IDEwMzVhOGZkN2RmYjk1NzExYzc1NDU4ZjMwMGQwMjA2M2ZkNDNkYzMgcmVsZWFzZTMxLW1haW50Cis4MTEzMCAwNmM2ZDNhNjdjMTdiMWY4NzliZmMxNmE0ZThmYWRlNTg0NGU2NjQwIGxlZ2FjeS10cnVuaworODExMzEgMmMyOWNkNTY2OGM3NzI4NTJlNjNmYmFkMTZkMjUxYWY3YmI0N2NkZSByZWxlYXNlMjYtbWFpbnQKKzgxMTMyIGU1NTYzMmFhNjhlOTc0MmVkNGVlZDlmZGRkMjVkOTFmMDg1ZWYzYjYgcHkzaworODExMzMgOTBhOWEzNGU1ZWI1MjNjM2VhZTJmYzYwZTE0ZDYwNzgzZjM5ZmYzMiByZWxlYXNlMzEtbWFpbnQKKzgxMTM0IDg0MTBmODNmZDE1OWY2ZWU1MDg3MGJlOWYyNDI0MWQ4N2Q5Mjk1YzMgcHkzaworODExMzUgNjhiYzM1Nzc1ZDMxMzQwMTc1ODEyMzExNjBlYzBkMWJiZTM4ZmMwNiBsZWdhY3ktdHJ1bmsKKzgxMTM2IGM4MDZlZGY4ZDczNDBlZmYxYjJmYjY3NTQzOGZkYmQxZjFiYWYzNDQgcHkzaworODExMzcgZWJhNDk0NzhhYWQ5NjUxNzZhYTBmYTMxNTQ2NjM4MWU4YjUxZTU5MCBsZWdhY3ktdHJ1bmsKKzgxMTM4IDQzMWExNTFlMTAyZDUyNmNlODJjZWQ1MzRmYmNiMmU4NTUwYTgxZjkgcHkzaworODExMzkgNTM2MWY2ZGQxMzk5NjM5YzdmZmExMGIzOGI1NjM1YmZkZGI2ZmJmZiByZWxlYXNlMjYtbWFpbnQKKzgxMTQwIGVlNTk2ZGE4NjJmODI3ZTZlOTljODVmM2I5YWM0ZGY0MjIyYzBhYjggbGVnYWN5LXRydW5rCis4MTE0MSA2Y2JkNGJjYTA5N2EwYWZkMzljOGI1ZDBmNzg0ZGY1ZDQ2OTQzYzg4IGxlZ2FjeS10cnVuaworODExNDIgMTY5OGM1NWIyYWY5NGJjZTU0MDg1NGIwODc1M2U1Y2IzYzMxZDVjZCBweTNrCis4MTE0NCA5Mzc5MDg0NzE3NGE3NDdhZDRjM2ZlM2U3ZmVkMzU3Zjg2MDFlMjE5IHB5M2staml0Cis4MTE0NSAwNjM2NGRhZDhkZGQxNWE0ZjA0MWU3YTZlN2VjZTFkMGQyZjUwNWRiIGxlZ2FjeS10cnVuaworODExNDYgZTRmMjY5NjE1YTI1Y2NlMzEyMDI2MzA1M2YxMDY2YTgxZTIwZjE2ZiBweTNrCis4MTE0NyBiMzg2ZWI4MzQ3NWY0OWY2N2FmM2RjN2NlY2Q4ZGY0MmY4OTEzM2I2IHJlbGVhc2UyNi1tYWludAorODExNDggZGEzZmE4ODFhODAwMzkwNTIwYmZmZTY5OWRiMTQ0YTNkNmFjOGU2MSBweTNrLWppdAorODExNDkgZTA5NmFhZTUzNWI5YjViYTkzYTdjYjczMWMyODNjYmYxYmZiNGI1ZiBsZWdhY3ktdHJ1bmsKKzgxMTUwIDJmYTczYjI5YjMwNTk3NTA3YjZmZDA2OGRmMzJmYWMyOGEzMzhiNTQgbGVnYWN5LXRydW5rCis4MTE1MSBjYjllMDlmM2ZhOGVlYzNjOWE0NWJhNDZlZmJkM2Q4ZDcyMDQyZGQwIGxlZ2FjeS10cnVuaworODExNTIgMzFjZjFiMTI1MzBhOWQwYWVlM2MyNWRjODMyOTlkYzk4MGY3NDJlYiBsZWdhY3ktdHJ1bmsKKzgxMTUzIGFlNGJiNjcwMTA3OGUwZTNiYzQ1Nzg0YjkwNGE0ZTA2ZTU2NDRiNjMgcHkzaworODExNTQgY2E0OTZiZmFjZDFiZTViN2UwNTQzYTBhZjhhNGVmMTlmMDc2ZTcxZCBsZWdhY3ktdHJ1bmsKKzgxMTU1IGNjZjFjYTczYzBlOTc4OWU1ZTY4NDgzOWM2NGY0ZDE1OGIzZDBhNTMgcHkzaworODExNTYgOWU1YjczZWE2YTdjZTFmYTFjNzY0NTc0YmQ4NDIxZWYzZTFmYjE1YiBweTNrCis4MTE1NyA5ZjYyZjU4NjViNDQxZWI4MDk5MGE3MjEyOTgzYTkzMmE0M2MxZjkxIHJlbGVhc2UzMS1tYWludAorODExNTggMjYyMjc5NmFlY2E5NGVhMmZiNjRlZjNlMTE4NDU1ZTA1NzdjODhmMSByZWxlYXNlMjYtbWFpbnQKKzgxMTU5IDU4YTU2YWJhMGViMmMyZTI0YjUzZWE5YTUxZDZmZjVlNGEzODMyYWYgcmVsZWFzZTMxLW1haW50Cis4MTE2MCBhNmE2N2I3MzRkOGIzNjAzYmM2MjU1OTM3MWU4YzRlMTdmZjVlMmNhIHJlbGVhc2UzMS1tYWludAorODExNjMgNzQyZjE5YjQ3MDIwNGI4NWJmZGIzNGY4ZjhjMDFiZTAzZTc5NjQxMiBsZWdhY3ktdHJ1bmsKKzgxMTY0IDBjYjBmYWQ1MTRmMzc1MjFjNjZhM2E3OWE1YzdmMDA4NTc4ZmI1N2QgcmVsZWFzZTI2LW1haW50Cis4MTE2NSAzYjI0N2FmNmNlZTc5MmRjY2M0NDZlYzZjNTRiNWIyMGUxMGQ5OWQyIHB5M2sKKzgxMTY2IDI1MmZlNWM0Y2Q1M2Y4NmRkNjlhYjRiMjExOWE1MTdkZmViOTlhOWMgbGVnYWN5LXRydW5rCis4MTE2NyBlYWY4MWExMzBhZDZjNDQ5OWNlMmQwOGNkNDFmMzFlZWEwZGU1NjU2IHJlbGVhc2UyNi1tYWludAorODExNjggOWVlMjI4ZDA4OWVkZDI4Zjg2YWNlZmM4YzA5YzU1MGZlZjExY2MzMCBweTNrCis4MTE2OSAyYjBhZjY5YWVmOTdkMjI4ZWNmNzJjMmE4ZDMxNzdiMTRmMGE1OGQ4IHJlbGVhc2UzMS1tYWludAorODExNzAgYWIzMWIwMDlhMWVlMjkzNGIwYjZlOGYxNWNiN2I2ZDg4MTRhNTc1NyBweTNrCis4MTE3MSA5YzFhMmJkNTE1MjhjM2E3ZDU1MmMwMDUyM2UzNWRiMmM4ODBiODAzIHJlbGVhc2UzMS1tYWludAorODExNzMgMzA5ZDljZjg0ODA4NTBlNGY4ZWFiMzllZjk5YTI5Mzg3ZmNmNThiYyByZWxlYXNlMzEtbWFpbnQKKzgxMTc0IDU5ZmY3ZDgxMmFlMzQyZjY1MTRlMDNkMTdkNDUxYWNhYzQ4MzlkMzAgcHkzay1qaXQKKzgxMTc1IDIzNjlkNGYxODllNDJjNjc3NDQxNTUwMzliZjA5NzQzOTA1YjM0ZjIgcmVsZWFzZTMxLW1haW50Cis4MTE3NiAxMTRjNGE0MmZjMWQwMzA3M2EzZGZlYTFlMzM0OWFhOWM4MjA5MjdjIHB5M2staml0Cis4MTE3NyBhODE0ZTdlNzI5MDBmYWY0OGZkODhmMTA3MWEyZGE1NWI0YjZlZGU1IHB5M2staml0Cis4MTE3OCBmZGU5YjQzNTQ1ZmJhZjgzYzExNmE5NjFlNTQyOWE2YTYwMDA5NzJkIHB5M2staml0Cis4MTE3OSBlNmJmZTkzYjY1YmJkYTI0M2Y1MzMyZDBmZDljMmNiZjc0MzQ0NjU4IGxlZ2FjeS10cnVuaworODExODAgMGQwMjhkMzU5MGRhMDNkODk1N2Y4YTUzY2JiZWI4ODNlZWU4ZmJlOSByZWxlYXNlMjYtbWFpbnQKKzgxMTgxIGZhOTAyZjhlMGRiMGVkZjgwYTY2YmYzN2FmNDZhMWI3OGI1MzgzNGIgcHkzaworODExODIgMGUzN2E5NWNkY2ZiNWM3M2Y3NzZkZjA4ZDc1ZmU1MjNiM2I5MWZmYyByZWxlYXNlMzEtbWFpbnQKKzgxMTgzIDc3MjAzNmE2ZjdlZjAyODc5YzNjNWVmMjdmY2U2ZDQ3MGRjNWI0MTUgcHkzaworODExODQgMzYzZWZmYjVmNzI3Zjg4NjRkNDBkMTdlOTQ0NDEyMWMwYWFmYTM0YyByZWxlYXNlMzEtbWFpbnQKKzgxMTg1IGVkZWY4OGY2ZjFhYjYxMTI3NTcxNjg2ZWNmZDM5MGMwMDczNDczNTUgbGVnYWN5LXRydW5rCis4MTE4NiAwNWEyYWIyNzFiNjVmNDgzNmQ5NjMyNGMyMmFkZjA2NzNkM2RjODdlIHJlbGVhc2UyNi1tYWludAorODExODcgOThjMTYxMDQwMDAyYzUyOTM4YmFhYThhZjYwZjc4YWJlODJlOGQ5OSByZWxlYXNlMjYtbWFpbnQKKzgxMTg4IGQ5NzJkMDUyZWUyMjE3YWIzOGRmMDg1MTU1MmUwZWEzNmIyNTNkYjggcHkzaworODExODkgYzRlMTFiMGM3ZWU1MTgzYmRkYzIyYzJhY2E0ZmE3Zjc3NmNjYzMyMiByZWxlYXNlMzEtbWFpbnQKKzgxMTkwIDQ3YjRkYTg2YjliOWY1ZDBmMjg4ZDBjNDI4MzAyZTBhY2Y1MTQxOTAgcHkzaworODExOTEgZWE1Njg1ZDk5NDBhM2I5OTU4YjNlMDQ3NTJhMDgxNTU4MTRmYTMyMyByZWxlYXNlMzEtbWFpbnQKKzgxMTkyIGJiOWFlMTI2MzNhOTlhODRhYjBkY2NlYjE1ZTY1YTU5NzAxMTM2MzggcHkzaworODExOTMgZjNlYTdjZDczNWVjZTc0MTYyMmE4OTEyNzNhM2MwYTk4ODJiZTgzZSByZWxlYXNlMzEtbWFpbnQKKzgxMTk0IGI1YmE3ZWE0MjQ2YjJjZTZmMTJmODM3YjlkMTU5MTcxOTU5NTNlMjcgcHkzaworODExOTUgZTkwOTYwMWUwMjE5OWQyNDA1ODc2YjllMTVmYzVmODBlN2EyNzI5NyByZWxlYXNlMzEtbWFpbnQKKzgxMTk2IDFlMTQ5YjUwYWNhNjE4YjM3Y2M5OWI3ODdkZGUzM2E0MDU1NjQyNGEgcHkzaworODExOTcgOTMxMTkxOGMwNjQ5ZGM5ODY5MzAzMzM4NTE3ZmIzN2JjOWU2NzI1ZiBweTNrCis4MTE5OCAwNDJlNmEzOTZhODY0NDcyZTJlYzAyYWE1YTk4YTRjOTRkYzcwODg2IHB5M2sKKzgxMTk5IGRjZjQ3MTE3MTU4ZjAxMjgxOTk4ODJmNTM0ZjU5YzE4NmQ1YjdkNzggcHkzaworODEyMDAgZDJlNjc1NGNiYmQ1ZTc0NDc2NzdkYmFlZGE0ODBmZjU1MDZlM2ZlOSBsZWdhY3ktdHJ1bmsKKzgxMjAxIGU0ZGVkZjU0YzQxZTI0MTI4OTliYTdiMDE3MGNkZmJmM2MzOTVkOTUgcHkzaworODEyMDIgOWFkZTNlNjIzNzEwZjA0OGRlOWViY2VmZDc1ZDA2OWZlNThkOWE2YyByZWxlYXNlMzEtbWFpbnQKKzgxMjAzIGVmMGY2MzRhZDVmYWZkN2I1Njg5ZjlmZGEzZDM3MDQ5NGJmOTA4MzMgcmVsZWFzZTI2LW1haW50Cis4MTIwNCA5OTM4M2YxYmMxN2M4ZjUxNTVhNjA4YWYxNDg3MWVmYTc3MGY2MTBmIHB5M2sKKzgxMjA1IGEwYTUzNTlmOGQxMzY5ZjJmNWFkM2QzYTNlNjg4NThiOGQ3ZjAwZTAgbGVnYWN5LXRydW5rCis4MTIwNiAxODY4OTBkN2ZlNzI0MzYxYWE4YTM1YjgwMmNhYjAxZWU5N2FjZmU5IHJlbGVhc2UyNi1tYWludAorODEyMDcgY2M5YjgyODBlM2Y1ZmQwYWZkOGIzODlmNzkxOTJhNzUyMzgyMTBjMyBweTNrCis4MTIwOCA3OTcwYzQ5OTAxNDQyN2M0NjJjZDU0MmQ0Mzg0OGE4NmYzZjAwNDdjIHJlbGVhc2UzMS1tYWludAorODEyMDkgNTQ2OGYzYWVlNGFlMWIxMTIwYzFjZGY0YTMyMDk5YmIxOThiNWNkNiBweTNrCis4MTIxMCBmNTlmM2M3MzczNGRiMzY1NjAwMmNkNzhlZTk3NDA3MmY3YzJlNTVkIGxlZ2FjeS10cnVuaworODEyMTEgNzc5ZGJjNTBmMWY4OGRlZjcyOTMzZTNiYzA5NTFlZmIyMjY3NjY0ZiBweTNrCis4MTIxMiA5MmQxYzg4MTkwNzFmYzJiMWE4MjkwMGU0ODY5NjhiMmJjYjE3NzdmIHB5M2stY2RlY2ltYWwKKzgxMjEzIDQ2NTJmZTBjM2I4OTc0YWZkMDg2OTAxNWU5Y2RhMzIwMGFjYmYyYzUgbGVnYWN5LXRydW5rCis4MTIxNCBlYzE5OTE5ZTI3Y2ZlNjkwNGQ3YzY5NDgwY2JlZGEzYWQ3MjIxOWYxIHB5M2sKKzgxMjE1IDdmMDUzZTI1YjMzNTJkNGE2YzhkNWYzZWUzMzlmY2M1ZGI0Y2EzZTEgcHkzaworODEyMTYgMzc4YjFjZDg0NzJlZWZiMWRkMGEwNjY4YTFhZTkyOTc2MzFkZDE0MSByZWxlYXNlMjYtbWFpbnQKKzgxMjE3IDllNDM4NWRiMzcwZWQ4N2JiYWIyODBkYjZkNzg0MTg5Mzg2YmZmMjIgcmVsZWFzZTMxLW1haW50Cis4MTIxOCA2OTkwYzZkYjdjMzk5NGM4ODQ0ZDQ2ZTY2MjQwNDBmODA3OGVlYzY4IHB5M2sKKzgxMjE5IDRjOTU4ZTQ4OTNiYTY5ZjgxOWE2YmVlNzJmMTMxNmMwMGFhN2ZlNDEgcHkzaworODEyMjAgMWQ0ZGJmYThlZDRmMmFmNWJkZGUwZTRhNjQ0MjQ3YzJhNTM3ZGM2YSBsZWdhY3ktdHJ1bmsKKzgxMjIxIGNmMjZmMDExNDk2ZWQyYmUzZDhiZjJiMzA0NzJhNDRiMGZlYjE0NGYgcmVsZWFzZTI2LW1haW50Cis4MTIyMiA4MDAyMTQ4YzFhMWI3ZGEwZjkwYzljN2I1N2VhNGExMzI4ZmYwNTNkIHB5M2sKKzgxMjIzIGNhOWQyZjBhOGI4YWNhYTExYjVjOWQ0Njk3MjA2NmMyYjRmYzIyNDYgcmVsZWFzZTMxLW1haW50Cis4MTIyNCBmMzZlMGUyZGFmNDMyZTZmYzM5NGEyMmVhYjNkODBkOGUzOWJiNDIwIGxlZ2FjeS10cnVuaworODEyMjUgZjM1MGFjYmNlNzkwZjFlNGMyYzdiYWQxYmJmMWFmZTQ1OGFhZWU3OCByZWxlYXNlMjYtbWFpbnQKKzgxMjI2IGY1YzY0NTVjMTQzYzY3NTQ3M2E5YTdlNzU3MDJiNDg0MmMxNWZmYzQgcHkzaworODEyMjcgNjg4NmVlOWNiNzJjOTA4ZGFkOWJjN2IzNjJjMGQ2ZDEyNDViMjNiNiByZWxlYXNlMzEtbWFpbnQKKzgxMjI4IGQwOGRhNDU0NGUzMTIxNDhkYzFjMzFiYTgzYjA2NWI3ODQwODQzNTUgcmVsZWFzZTMxLW1haW50Cis4MTIyOSBlZjIyZGMwNjVlMGUxMWI0M2I5YWZlZjE5OThiNGMzMzNiMTMwZDE1IGxlZ2FjeS10cnVuaworODEyMzAgZTU3NjUwYTRjYTgxYTY0NzBlM2RmYWUwNDFmZGNjM2QyN2JjNjg5MiByZWxlYXNlMjYtbWFpbnQKKzgxMjMxIDk2NzgyNmRkNWZjNmMxMzE4NGE4NmJjMjJiY2EzOGE4ZGNkNjJlZjEgcHkzaworODEyMzIgODQ0YmQ3Yjg0MjFiNzNjM2FiYzFiOWQ2MTAyNDgzMjVmYWFiNGJhMSByZWxlYXNlMzEtbWFpbnQKKzgxMjMzIDRiYjAzY2MxZDQyMWY2Y2U1ODgzNjVhZjk3OTk4NTQyMWVmMmZkYjggcHkzaworODEyMzQgYjI5YWI0ZTc2NzM2MmViNGRjYTc2MTcyZDBhNzJiYTAyZjg4M2JhYiBweTNrCis4MTIzNSAyY2E0NjI2ZDljOTMwMzQ4ZTY1MjJlNzIzNTQ2MmJiYmNkYTEzMThjIHB5M2sKKzgxMjM2IGUyMGE2NzdhZjAwMDQ4MTljZjA4NGMyNDNhMTc5OTAyMDZhMjBhYjkgcHkzaworODEyMzcgMDhhYmJkYzk5YmU2OGRlNzQyYzlkZDY1MDJkMTI1Y2IzYTdmNGY5MyBweTNrCis4MTIzOCBiNGNmY2E1YzQyOGU1MjE0N2FlYjAwNjQ1YzA0YzI4NDE4YmRiNWVlIHJlbGVhc2UzMS1tYWludAorODEyMzkgYTA5ZWIzZDU5ZmY3ZjYxZWYwY2E2NDFkYjJmM2VhODg0NmQxMzBjNyBweTNrCis4MTI0MCBmODM3NjEyMDA3ZGM5YWI3Nzc3MDc5MTg1MzcwMzdhM2NkZDE0ZWIzIHJlbGVhc2UzMS1tYWludAorODEyNDEgOGEwMDc5ZDhkMWNlZjQzOTNkY2NiZjcwOTQxOTQ4YzlkZDdkN2NkZCBsZWdhY3ktdHJ1bmsKKzgxMjQyIDdhN2FlNDc2ZGY0ZmUwNDI1MDViZTlkOGE2NTcxNGJhYjYyOWIzMDYgcHkzaworODEyNDMgYzE3NzgzYWVkY2I4OGFiYWY5ZDNhMzNjMTFmM2YwZTdhYmJjYjU0YyByZWxlYXNlMjYtbWFpbnQKKzgxMjQ0IDhiNjQwMWFlMTI2Mjc4MTI0ZDYwYTc3MjExOTU1ZjI5YTA4ZmJmMjQgcmVsZWFzZTMxLW1haW50Cis4MTI0NSAzZjFhNmIwYjc5MGM3ZGM1ODVlNDNkYWI2Mjg1MGUxOWMyMGIyZTBhIGxlZ2FjeS10cnVuaworODEyNDYgNGQyN2U4ODA3MjRhYmQxZTE4YmI0NjU2MTEwN2Q3MjEwYjZkNTMzZiBweTNrCis4MTI0NyBiYzAwZTQ2M2E5NWJmNWVkZGEyNjBiNWFlNTY3NmE3MTNjODFjNjAzIHB5M2sKKzgxMjQ4IGEzM2JlZTE0YWJjNTFiMjA5MzI3YzBhOTU3ZGZkNmI4YmQyYjAyMzkgcmVsZWFzZTMxLW1haW50Cis4MTI0OSBkZGRkMWJjN2U4MzkxNzBlMjY3YjhiZjQ2OTYyM2VkMTNhNTQ0OGNiIHB5M2sKKzgxMjUwIDg5NGM4ZTQyMDc0YTkzYjFlZTA1YzZkZWZmOTkzNzM5YWJlOTk4MmIgcHkzaworODEyNTEgNTU2OTYxZjRmMTZkYTcxMmM4M2QzODkyYjBmMWZhNjhlYzJiYTk0YyBweTNrCis4MTI1MiBmM2Y5NWVkODI3NDRkYjAyZTVhMTI0MjllNzFlN2Y5Nzc4MmRjMmRmIHB5M2sKKzgxMjUzIDMxY2VlMmNmN2MzNzZhYTMzZWMxMjkwNTkwMTg4NjU5MmViZWM5MDggcHkzaworODEyNTQgY2E4MTY0NmRkMjljYmU3MmM2MmQ0YjUxMjZhMDY4NzY0Njk4YTcyMSByZWxlYXNlMzEtbWFpbnQKKzgxMjU1IGQyOTM5OTEwMDk3MzgyMDIzOTcwNzU0NjdmZTk0ZTA4YTBmMGU4MjYgbGVnYWN5LXRydW5rCis4MTI1NiBkMTJiNjVhNzk4MjRmMDBjOGVmNTU1MGRhYzhiNjFmMzIzZGZlMDRhIHJlbGVhc2UyNi1tYWludAorODEyNTcgYzg2ZWViNzMzMzE2YmEzNGVmZmI4MGE3ZDJlMzE1ZTRlNWJhZWJjMCBweTNrCis4MTI1OCA5M2EyNTE2OTg3ZTAwMjIxMTg3YThhMTllMDk5NDZjMWViM2M3NmQxIHB5M2sKKzgxMjU5IDBiMDRjNWNhNTc3ZDE2ZDQ3NzM0MTFiM2VlYzgyZDU2ZDA4YzY1NWIgbGVnYWN5LXRydW5rCis4MTI2MCA3NjY0M2MyODZiOWYwNTE5NmRiMDNkODg1MTc5NmZhZGI3MjExMzYwIHJlbGVhc2UzMS1tYWludAorODEyNjEgYjVmMmM0NDIxYTMxODZiZWVlNDU2MTA3NjYyMzkzYjY5NWNjYzE3OSBsZWdhY3ktdHJ1bmsKKzgxMjYyIDA5OTMyNjUzNTYxYjlkZTQ3ZGZmMjRiZjQ5NjM5MmE3NDMwNTcyMmQgcmVsZWFzZTI2LW1haW50Cis4MTI2MyBlYzU5NWZmMjU3ZTA2NDAxYTUyM2IwNDJhNzA5OWQyMGQzOTc2ZDZjIHB5M2sKKzgxMjY0IGZmNGE5NjhjYTdiYmU3NmU3Mjk2MjllMzVkOTBjOGEzOTg0NmRiZWUgcmVsZWFzZTMxLW1haW50Cis4MTI2NSBjOTgxZjBjODY3OGI0OTg3NWY5NmY3NTJhN2RmZTU5OTI3NjA0YzlmIGxlZ2FjeS10cnVuaworODEyNjYgMzllYjkxYTVmOWRjYTgzNmJmMmFlYmExM2Y5ZDgxMmJhNjE5YWQ0NCBweTNrCis4MTI2NyBkNmNiMmYxMGU2NWVmODczNDkyOGZjNmFjYTYwZWE3ODE5NDRiNjU5IHB5M2sKKzgxMjY4IGI5YTBmMjZmYTJjOTYzMzdkMTE5N2JkMDY4NWUxOTRhNzMxNDAxZDQgcmVsZWFzZTMxLW1haW50Cis4MTI2OSA3ZjY0ZmFkMTc3ZGQ2YzZjYjljMTRlNDNhYThiMmRhMjZlOTJjNjlkIHB5M2sKKzgxMjcwIGYwMWFiMWIxM2QwYWU3N2EzMjQwN2UxOGUwMzhhNTRhMjI0YmE2MDAgcHkzaworODEyNzEgODQwM2Y1MDZkOWU1NGE0Nzc4YmVhZGJkODQzOGJiZWVhOTYzOWZlOCBweTNrCis4MTI3MiBkZTdjODU4MGY5ZWJlNjYwMzIwOTY4NDllNzI2MDI0YWQ0NjRlYjAxIHB5M2sKKzgxMjczIGJmMTRiOTYzOGM3M2E1ZTlhOGUwMjMyYWI0MTdlODFkYzdmOGFjNTAgcHkzaworODEyNzQgNWRiZDJjMjliMGU5NmViZTAzZDZiOGUxODIyZGE1MmE1YTExYjczOCByZWxlYXNlMzEtbWFpbnQKKzgxMjc1IGYwZmNkNjkxODdjZDI2ZDA3NzZjOTQ0OWNiYmUyY2YyMmI5YzRhZWMgbGVnYWN5LXRydW5rCis4MTI3NiBkZWM4ODcwMmM5YmM3MzZkMzM0NWE4YTcxNDBhOWE2MzRlYmE0Y2I3IHB5M2sKKzgxMjc3IDE3NTdiYmViZjc1YWRiMTYxZjBkY2FiOTI5OGNjMGM2MGM5MzQzOGYgcmVsZWFzZTI2LW1haW50Cis4MTI3OCA4MmRiZjkzZjc2MGY0ZTg4MDFlYjY1ZmJhZDIzM2UwOTE5MzcyOTUyIHJlbGVhc2UzMS1tYWludAorODEyNzkgZTc0NjY4NTQ0NWRlZWIxMDM1YjliNTU4Y2VlYzA1NzlmNmFkOTM1OCBsZWdhY3ktdHJ1bmsKKzgxMjgwIDY2NjYwN2NlNGFkYTlkYmNiOTRmNWRjZDJiNzFmZTAzNWY2YzFkNWMgcmVsZWFzZTI2LW1haW50Cis4MTI4MSA0NTVkM2ZiYjE0ZWNiNzVhY2MyNmRlMDRjMzg4MGU4NTZhNDQwOTE5IHB5M2sKKzgxMjgyIDg3MWJmYTFmZGE1OTBkMTJiNzNjNWZmN2ZjM2ViOTI4ZjcwYWJlNTUgcmVsZWFzZTMxLW1haW50Cis4MTI4MyBmMWUzN2E4ZmIyZDEyYjg5OWE2YTAxNjQwYjU2YTE1ZmVjZTlmMzIzIHB5M2sKKzgxMjg0IDFlNTJiZWQ4NzdjMTc3ZjY0NTg4M2IwNmIxZjIzYzA5ZmMxZWZiY2QgcmVsZWFzZTMxLW1haW50Cis4MTI4NSA4ZGEwODhkNmE5NWIyZjFlZDc4ZTNjOTM1ZWI3MTQ1NjBiZjYxMmFjIGxlZ2FjeS10cnVuaworODEyODYgNmIzODkyNmE1ZmNkYzRlYjdhYTczN2UwZmJlZjkyZDk3NjBlNGFmOSBsZWdhY3ktdHJ1bmsKKzgxMjg3IDgwZGM1NzAxNzdjNjY4YTYyYjEyNjI1NjkxNzYzMTVlYWRmZDhmM2UgcmVsZWFzZTI2LW1haW50Cis4MTI4OCAxOTc1MTFjNGI3NWE5N2EzYzA0YTY3YjFhZTk0M2Y3NzY2ODIyMWMyIHB5M2sKKzgxMjg5IGVkMGE2OWQ2NmMxMTM1MDhiNzZmZmYwYjVhMzI0ODlmYzVmYjk5YjggcmVsZWFzZTMxLW1haW50Cis4MTI5MCBiZWM4MThhNzY5MDJhMmY0ZWJmZWM4NTUyZTkzYmNiYzkzYTgzM2FmIHB5M2sKKzgxMjkxIGNmNzRlYzNlMWY4MjY4MjgzMmNlZTZmMjE0NWYyZjExOTJmZjQ5NTAgcHkzaworODEyOTIgNjEzYjYzZjU4YmViZjI5ODRjZmVlMmQ0OTFlM2Q0YzMxOGYzYThmYyBweTNrCis4MTI5MyA4NTliODM4ZWNmM2RiNjVlZmNiN2RkOTFlNzc2N2NiZTE4NGFhNDkwIHB5M2staml0Cis4MTI5NCBkN2Q4MDQ2ZjdhNTJmZjY0NDljNGI4YmU0NzU2MWZlZGNmNmNmYmVmIGxlZ2FjeS10cnVuaworODEyOTUgZThlZGFiZDU0MTliM2UzNDZiNzk1NzQ4YWFiNzI3ZDVmNjdkYWM1YiBzc2xvcHRzLTQ4NzAKKzgxMjk2IGI3NWU2MmZjYWU4MWE3MjczYjFkNzJlZTYwMzJiN2ZkOWE5NWFmZDkgc3Nsb3B0cy00ODcwCis4MTI5NyAyODU5MGQ1YjZiOGIwODY3ZTg1ODY2ODNkY2EwMjA2MzM4YjdiMDMzIHNzbG9wdHMtNDg3MAorODEyOTggZjI0NzE0NmY4YTk1OWVmYzcyMjljNzBjMTRlYjQ3YzdmNzVmNWNlNCByZWxlYXNlMjYtbWFpbnQKKzgxMjk5IDI2ZDc2MDUyMDNkY2MyMDczMDljODY1MzBjYzc5NDZjYmZlOGFiNWYgcHkzaworODEzMDAgMTVmYTU5ZmMxNDlkYmNjYTk5ZTQ2MDRjZmM1YmY5YzUyNTVkNDU3OSByZWxlYXNlMzEtbWFpbnQKKzgxMzAxIDVmMzEzNTBhZmI2MDk4YWQ3YjVjNmIzZTdiNWYzODMyMjU0MDVhMTYgc3Nsb3B0cy00ODcwCis4MTMwMiA2MzkxMDU1ZWZjYTBkYjk2MGNlMDZjMDZkOGM0YmZjNTQyNTMzYzBkIHJlbGVhc2UyNi1tYWludAorODEzMDMgMTA2NWQxYzUzMzA5YWVjNGNlYWQ1NmYyOTVmZDVjYjhmNGFkYWU1MCByZWxlYXNlMjYtbWFpbnQKKzgxMzA0IGYxNGY0MmYzMjkyMmUzZWM5OWY4NzM2OTE4MzAwNjg4ZmYwNjA2MGQgcmVsZWFzZTI2LW1haW50Cis4MTMwNSBjOWVkMGMzZjZkY2RkN2IxZGY2NGVmNjU5ZTY5ZDY3OGYyOGI4Y2E4IHJlbGVhc2UyNi1tYWludAorODEzMDYgYzk5ZmNhMDNmYTM3OGUyN2VkODc0NzRiNTkwOTMwOTk5MmJjMGJlZiByZWxlYXNlMjYtbWFpbnQKKzgxMzA3IDE4ZjYyYTdhN2RiYTgyMzdiNmJlYjVkNDA5ZWEyMzg0MmU1MGM1YjAgcmVsZWFzZTI2LW1haW50Cis4MTMwOCBmNzZmODEwNDRkNDA4M2Q1M2E4ZjlmYWM2OWM4MjRjMDgwMGRkNDYxIHJlbGVhc2UyNi1tYWludAorODEzMDkgZWY3MmYxNTg2NGE5OThmNTI3Y2FmNDdlYjk3ZmNiY2FhODczYmUwNiByZWxlYXNlMjYtbWFpbnQKKzgxMzEwIDA1MjY5NTczZDIxNzJmMGM0NDU1ZjY3N2NhZGI0ZjUyOThiMDY0NDAgcmVsZWFzZTI2LW1haW50Cis4MTMxMSBjMWMxZThjOGRjOWNkMWFkNzQ3MmY5ZjllN2Y0ZjAxNmYxMzY3OWVlIHJlbGVhc2UyNi1tYWludAorODEzMTIgNjg0MWIyYTE2YTUxZDVhNTk1MjMxZDlhMDBmZDM1ZjAxMjJmNDA0MSByZWxlYXNlMjYtbWFpbnQKKzgxMzEzIGNlMzgwOWI4MzQ3MzY4MDljNWI4ZmU5YmI2MDZhMGU4ZGRhMjBhZDIgcmVsZWFzZTI2LW1haW50Cis4MTMxNCA3ZmM0OGFkMTYwODdlZjNjYzI2MDU4MTU4MTg5NTJjZDcwODYxODk0IHB5M2sKKzgxMzE1IDdmMTVhNjAwNjE2MjdkZjliYzU3MTRjMDI5OWNkNTQ5MzRkNjM0NGQgcmVsZWFzZTI2LW1haW50Cis4MTMxNiBhYTc3N2Q0M2YyMmY1ZTk0NjJiNWViOWQzMzY1MzA4ZWNhOTZlNmI1IHJlbGVhc2UyNi1tYWludAorODEzMTcgYzhkMTY2ZWM1NDMwMWRmMzc0MmVlOGQzODU4N2JiMGI2MGEzNDc0OCByZWxlYXNlMjYtbWFpbnQKKzgxMzE4IDc1ZDczOTY1NTZmZGU4MzMwMTdhMTA2MmFlZTI4ZmVjZWViMzgxZDMgbGVnYWN5LXRydW5rCis4MTMxOSA5NDJiM2MxNjhmMTVkYWY1OGI2NDZiNDg5ZTE1MTgwZDBjZTAwYzI1IHB5M2sKKzgxMzIwIDE1MDRjYzVhMTVhMWM0ZTMzZjdjM2JjMDAzOGViODE4NTNjZWE2NzYgcHkzaworODEzMjEgODQ2ODY2YWEwZWI2NmZmN2FmOWNkODZkNjliNGY1YTViZGUxZTdlOSBweTNrCis4MTMyMiA5OTk5OTc0ZmY1MDY5NWJkNWYwM2ZlODViOTYzY2M3NzIyMTQ2MDBlIHB5M2sKKzgxMzIzIDdiYTg1MWQxYjQ2ZWM0ZjQwZDAwZTFjN2M4NTdmN2E3OWM1MjI2MDQgcHkzaworODEzMjQgODljZTJmNmQ0YjI0MTc0YmZhMmNkYTYyMzU5Y2JjMGRiMzU5N2UxNiBweTNrCis4MTMyNSA3ZGNkMWEyNjk3OTdiYjBkYTNmMGVkY2YzN2UzMjI1ZmE5YTA4OGMxIHB5M2sKKzgxMzI2IDgxZDc4ZGQyNzNiMDlmMGQ2ODM3ODg4NjljNjZlY2I3ZTI5MjEyZGQgcmVsZWFzZTMxLW1haW50Cis4MTMyNyA4Yjc2NmVjNjk2ODVkNGY2Y2ZhMzlkOTNmYTc1Y2VhMjZiYTI5N2Q4IHJlbGVhc2UyNi1tYWludAorODEzMjggOWEyMzMwOWRmYWEzMTk5NDE1Y2Y2ZjcwZDU0MzRmNmJlZWVjNGVlMCByZWxlYXNlMjYtbWFpbnQKKzgxMzI5IGI2ZDJhMjdjM2UzYjQ0MmU0ODI3MjViODU1OWNmMzMwNWNkOGZiMzggcmVsZWFzZTI2LW1haW50Cis4MTMzMCAwODNmNjg2YWFmMTVhNGQ5OTU2ZWI3ZWVmYmVjZDg0NDgyYzkxZjdhIHJlbGVhc2UyNi1tYWludAorODEzMzEgZjM3ZWNmNGE4ZmYxMGFlOGUwM2NkZmVhMWJiNWRhNDZjOWU4OTI0ZSByZWxlYXNlMjYtbWFpbnQKKzgxMzMyIDc3ZWIxZmI1OWM3ODA3ZWE4ZGVmZWMwYTlkZmM3MGQ2NzMwZjhjODQgcmVsZWFzZTI2LW1haW50Cis4MTMzMyAzZDBhZThlZjAwNDQ2MjhjZTM5ZmU1N2E4ZWJiNjQ5ZmFhOWQwYmVlIHJlbGVhc2UyNi1tYWludAorODEzMzQgMjhiYmQzMWNiY2FiNmQ2OTYxOTAyMjNjMzNkMzkzNzE1OTc0MjAzYSByZWxlYXNlMjYtbWFpbnQKKzgxMzM1IGY1YWFlODViNjg2NGU2OTRmNWEwNTVjZWUzMGNjOGM1MTEwYjRkNWYgcmVsZWFzZTI2LW1haW50Cis4MTMzNiA3ZjEwYWVjYjA2MzIyYjMzYmIyNWUwZjUwMThkNGJmNmE4YmRmYTc3IHJlbGVhc2UyNi1tYWludAorODEzMzcgYWU0YzkzMWE3MWYwNjk2OTU3NzI2MmE4YTU1OGZlOTEyYTE1ZDU2NiByZWxlYXNlMjYtbWFpbnQKKzgxMzM4IDFhMzRkZTA0Mjk3Mjg3MDdiZmIwZTgwYmVjMjVlYzA0NDA3N2Y4NjkgcmVsZWFzZTI2LW1haW50Cis4MTMzOSBkMWYyNjVjZWE3MGI3NDM2YTljMDU4Y2ZhZTBhMzI4ZTMzZWRlM2M4IHJlbGVhc2UyNi1tYWludAorODEzNDAgYTcyYmM1NGVjNzFkZjg2MWJhY2MxMzg5NTAwYmVjZTBiYzczZDJjNCByZWxlYXNlMjYtbWFpbnQKKzgxMzQxIDZhZTA3MzMyNmU3ZmI4MjQ1ZjgxNDQ5OGRlMWQwYzEwOWY2MTQ1NDkgcmVsZWFzZTI2LW1haW50Cis4MTM0MiBmNDkwZDE1ODE5OGFkZWVlMTUyYmY4ZDI5YjRhYzg2OGEyZjk4YmE1IHJlbGVhc2UyNi1tYWludAorODEzNDMgYmY0ZTgzZGU0ZWE1Mjk4YThlZTgxODQ1OWU2ZGNjZTM5MTRmMzkzMyByZWxlYXNlMjYtbWFpbnQKKzgxMzQ0IDA3NDEwYWVlN2ZjMGVhZjhjNWI1OTc5Zjg1NjcxODkzMTFkZDI0MTAgcmVsZWFzZTI2LW1haW50Cis4MTM0NSAzNGU4YmZlYjBiOTg3OWQxMWI3ZjMwZmU2ZjExMWE5ZDUxY2VhOWE3IHJlbGVhc2UyNi1tYWludAorODEzNDYgNTkwNmEwZmNjODI2YjUxZjI4ZGMzM2VlNzJmYTk4ZmYyZWFjZTYxZSBweTNrLWNkZWNpbWFsCis4MTM0NyA4ZjZlNjdmNjkzZmY1ZTM2YzdlODQ4MTU3NjUxNjY3NTUwMzNkMWU1IHB5M2stY2RlY2ltYWwKKzgxMzQ4IDY1YjU2MWYzOTY3OTNjNGQwOWExMTZkNjE3MTYxNDkyOGE1NmE2NzcgcHkzay1jZGVjaW1hbAorODEzNDkgZTAyM2FkM2UyY2FjY2IyNTI3OWE0NGMxZjkzMWEwMTljMDc2OGU2NyBweTNrLWNkZWNpbWFsCis4MTM1MCA4YzZmOTgxNjk5ZTgyNWFjMGVhNWNiZGEwNzFlZWRjOGRiY2IzZjU4IGxlZ2FjeS10cnVuaworODEzNTEgNjg1MjVlZjM2YjY2OGMzNTdlMDVmOGY2YWEyZDA4MWY0OWUzYjZjNCByZWxlYXNlMjYtbWFpbnQKKzgxMzUyIDRiZmIwMGNlMTJiODU5ZTk1ZDE0MjVkNDZkNWUxZDAzNTRmYWUzZTYgcHkzaworODEzNTMgNDlkN2RlOWQ3YjFhYTAxODI1YzIwMDNjMjY5NzM2NjYyMjg1Yjg1MiByZWxlYXNlMzEtbWFpbnQKKzgxMzU0IDIwYTM1NmVlYjBmNzAxMDNkZWIxNTFiNGQzM2QyNWE0YWIzZWIwZDcgbGVnYWN5LXRydW5rCis4MTM1NSAyMWJiOTNlMDk4OGM0MWI4MWIwMzU4YmQwNzdiMGM1N2FiYTVhNzJjIHJlbGVhc2UyNi1tYWludAorODEzNTYgNWJmNGE4NjMzYzU4Yjg1NWIwZjhjNzNlMzdkZTc2NmU1MGE0Nzc3MyBweTNrCis4MTM1NyBlYWVhODA4YjdmYjg2NzFhODg0ZDFmZTJkZDE3YTJjZmNmZjhjNDJjIHJlbGVhc2UzMS1tYWludAorODEzNTggYjdmNzFmNjA0MzdiNTk2YzU1YWRhZDAwYzI4YTNhNGIyYzYwMDk4MSBweTNrCis4MTM1OSAwY2FmYzIwZTU2Mzc2MzQ2NWNjMDZkZjFhMGU0ZDdlM2Q2MmY2ZTk5IHB5M2sKKzgxMzYwIGU2OGUwMjhkMDkxZTgzNTQwZDE5NDBlOTQwMTU0NWJlNTE5ZWE4OTEgcHkzaworODEzNjEgZTVmZGU3YWQxYjdjYzY5NDAyMzgzMDY2YjY5NGZjNTAyYTg2Y2UwZiBweTNrCis4MTM2MiBjY2RiMDlmNzlhMDM4NTU1Y2FlNGUxOTE0MmQ3NjFmZDA4MjYzYzE3IHJlbGVhc2UzMS1tYWludAorODEzNjMgYmE1MDg4OGNjMDM5MTRmZDAwMTQwMTI4NWQ4ZGQwODhjNWExNzI2OSByZWxlYXNlMzEtbWFpbnQKKzgxMzY0IGRlZWQ1ZmNlODJkNjA2OWYwNTFhZDE3MzVmMmM2YWJkMzhjNzMyYWUgcHkzaworODEzNjUgYzFjNzc2NzRkYmM4YzI5ZDE3ZGRhODlkOTEzZjVlYjFiYjhjYTI3NyBweTNrCis4MTM2NiAyNDhhOTE1ZTM1ZWYwMTYxZGI3ZTJiYzFjOGViM2M1ZDRlYzA2NGI2IHB5M2sKKzgxMzY3IDIzZWU4YWE4NTdlZTM2Yjk5N2QwYWZjN2NhYTJhODZiNGYyYWRkOWUgcHkzaworODEzNjggODJhNDQ4M2Q5YzRhOTQyN2EyZjQyNDVkNjA4MWRmMjI4MWE1YjQzZSBweTNrCis4MTM2OSAxZjNlNzgxMjYxMmI4YmExMjZhZTJhOGViY2UxYmY3YzI1NDE3YjMwIHJlbGVhc2UzMS1tYWludAorODEzNzAgNzQzYzIwN2RjMmI0MjA1Njk2OWI4ZjVkY2ViYTliYzFhMWEyNDQ3YSBweTNrCis4MTM3MSAwMjFmNWVjNWQyZDRmZTM3ZDEwZmRmMjUxYTNiMTVhOWIxMGVmMzczIGxlZ2FjeS10cnVuaworODEzNzIgMThkY2Q5MDNjNTVlMTViMjQ1M2RhODRjMzUzZDhhMDY2YmI4MDAzNCBweTNrCis4MTM3MyBkYTk0MTUwN2VkOTNjNDRjNDAzYzYxMWYwODBjZDY3NzUzMzE5OTVkIHJlbGVhc2UzMS1tYWludAorODEzNzQgYjg0ZjhkMWEwNTIyYzZmOTI5NGZmMjc5MDI4ZjdkOGJmMjE3ZmEwNyByZWxlYXNlMjYtbWFpbnQKKzgxMzc1IDUwM2FmYzYyZDYzMmUxNzhmODZmY2I2MTE0MTQwNGUxODBjYjU5YmYgcHkzaworODEzNzYgZmQ3MmFmMDA2MGM4NTQwYWVjZDk1NDBjNDk0NmYzMjdlNzY0MDllNyByZWxlYXNlMzEtbWFpbnQKKzgxMzc3IDVkNmI3Njg5MGYxN2Y4ODBmZWRlZTBhMDA0ZTgyYzY1MDdjMmEzZGQgbGVnYWN5LXRydW5rCis4MTM3OCAxMjk0MjdiNWU5MTQxYWU4ZGM2MjhjMmQxZjVmMDIzMTc5NmI5MDIyIHB5M2sKKzgxMzc5IDRkODNiYTVkMGFmNWI0NTgxODA4ZjA4MTA1YzljZjhiMDFkNjE0MGQgcmVsZWFzZTI2LW1haW50Cis4MTM4MCA2MmMwZTVmMTQxMzhmNjk2MTBmMjFhYmU4MGY1OTRlMGRhNWM0YjQwIGxlZ2FjeS10cnVuaworODEzODEgNTVlMjM2OGY3MmYyNzRlNmU5MzBhYWU1MjRhMmI1ZmNmZjBjN2NiNSByZWxlYXNlMjYtbWFpbnQKKzgxMzgyIGQ5M2JkNTI1NDczYzVmNjg3ODFiYWUyNDdiYjk1NmMyMTc1MTdhNDYgcmVsZWFzZTI2LW1haW50Cis4MTM4MyAzMjcxYWYwMzVkMDE3OGNkYzU1ZjlhOWIzZDdlOWQ5OWQ2MmNjODM0IHJlbGVhc2UzMS1tYWludAorODEzODQgZjJkM2JmOWRhOWE4MTU0YTZiZGQyY2M5NDg5ODAzZTJkYjdhNDVkYSByZWxlYXNlMzEtbWFpbnQKKzgxMzg1IDZmZTI2MGJjMDk4N2RjMmMzY2RlZjVmMDgwYmUwYTcxYjk0OWE4Y2IgbGVnYWN5LXRydW5rCis4MTM4NiBiM2IyNjVmYmFhYmRmOWVhYjQyYzRkYTYwNDQxOGMxMDdjOWEyZDg1IHJlbGVhc2UyNi1tYWludAorODEzODcgMWU2YjQzNWU4ZWI2YTUyODFiZWFkNzYwYTE0NjY1OTA2MWNhOTUwYSBweTNrCis4MTM4OCA5ZGQ1MjJmN2MwZGUyMWNjY2JkMTY0ZWVkN2QwMjZlZWE5MzE3OTBiIHJlbGVhc2UzMS1tYWludAorODEzOTAgN2Q0ZWUwZGM4NzY0NDAxN2VmZDUzMDc0NzllYTkyMGNkMmRkMDFmZiBweTNrLWNkZWNpbWFsCis4MTM5MSA0ZjlkYjM1YTQwODYxZGI3Zjc3NTUzODU2ZDExMTliN2ExNmNlNmJkIHB5M2stY2RlY2ltYWwKKzgxMzkyIDVlZTQ3ZjBiMjZiMDJhMDdjMzdkYjU2MDA0NTAwZGNjNGNlNTg0NzkgcHkzaworODEzOTMgMjIyOGMyNWNjZTNlNzJmZWIzODY2OGFjMjhmNWMwYzMyYmU1NWNiNyBweTNrCis4MTM5NCAzNzAzMmIyYTU5MmRiMDIzNGFmMTY2MDRiMDAwZDE2NDM4MjIxMDY5IHJlbGVhc2UzMS1tYWludAorODEzOTUgMzg3MTlmMTE2MTliY2Q4OTE1ZjVkMjJhZDQ5YWUxZTBlYTRlYjJlYyByZWxlYXNlMjYtbWFpbnQKKzgxMzk2IGUzZGFhYzA2NmI5MmU3OGUyYmYxOGNlZmY5NGJmZjhjZmJiYTBhZjMgcmVsZWFzZTMxLW1haW50Cis4MTM5NyBkNjAxNmZhNThkZjZiNWNlMWYzN2E1OWY2MTNkOTU3NjlmNDM3YzBlIHB5M2sKKzgxMzk4IGMyOTE3YWM1ZDUyNmRjNGQzZjYyYmQ2MWQzYWE4MDg1ODk0MzkwODAgbGVnYWN5LXRydW5rCis4MTM5OSAzZjA4ZDk4YzhmYTVmMDcxNjMzNWMxNmQ0MGJkYjNmMzI5NGZkMmNjIHJlbGVhc2UyNi1tYWludAorODE0MDAgNzk1NzYyYjVlMGQ2ZTZiMzdlZGU4ZTFiYTdmYmY5MjNhMGY2ZDQxNSBweTNrCis4MTQwMSA5ZGI4YzQxNDkyMWY3MDI2ZGQzNGJlNjA5ODhkMmU5YjM4ZDg0ODg1IHJlbGVhc2UzMS1tYWludAorODE0MDIgZTE5NDBkZGIzZjU2NWE2Mzk0ZmE1ZDZhN2M2MWExMDQxNWU0MGEwMCBsZWdhY3ktdHJ1bmsKKzgxNDAzIDQ0MTQ5MTU3MmZjZTNhZDhkYzkwZTJiNTQ4ZWM1ODg4ZDJjNWM1NWYgcHkzaworODE0MDQgYjA3MmI5ZmIwZmQyZGVjYmUwNGYxM2JiNGFhY2I0MmFkMGI4Y2I5ZiBsZWdhY3ktdHJ1bmsKKzgxNDA1IGYxMzhkMWJhY2ZjNDI4ODA2NjQyMDAxNDk5YmM3MTZkMzNkYjQwNmIgcmVsZWFzZTI2LW1haW50Cis4MTQwNiBkZTYxYTY5NzEyZGFkN2M0NWFmY2EzZjI3MmQxZGVlNGZiYzJmYzk5IHB5M2sKKzgxNDA3IDZjYTJlNmIzYmYzMTc3OWU2ZTA1NzY3MDY2ODM4ZWZmZGI2NTUzNDMgcmVsZWFzZTMxLW1haW50Cis4MTQwOCA3MzQxNmIxYmJjZDViY2FhZmYyMjdiNTY2NTQxNmI2ZmIzMjI3ODZmIHJlbGVhc2UzMS1tYWludAorODE0MDkgM2Q2NGQxYWZlNjc3OWE3MzA0YjBkYmRjZTUyYTFiYzIzODI0ODYzYSByZWxlYXNlMjYtbWFpbnQKKzgxNDEwIGUxZjRmYzYzZDJiM2QyYmU0YWYxN2RmNTU1NmJmYWZiOWE2MTdjNzkgcHkzaworODE0MTEgNTA2ZTliZTg2MTM5Mzg0ZTVlZGIwN2IwODRmNmVlYWVhMGQwZmZjNCByZWxlYXNlMjYtbWFpbnQKKzgxNDEyIGU5YTA0MmEyNTE5NzEzOGY2ZTIzMDhmN2Y0YmFmNmE2NmMyMjBiNDAgcmVsZWFzZTMxLW1haW50Cis4MTQxMyA5NDZjYzVlZTI5NTExMGYzNDVkNTNmZjYyZjdjZjlmZWNmNjc2ZDI4IHJlbGVhc2UyNi1tYWludAorODE0MTQgMGYwOTY4MjlmYzkwYjhiMzVkOTMzNTg3N2MwZjUwMGFkMTgyODE0MyBsZWdhY3ktdHJ1bmsKKzgxNDE1IGZmM2M2NzY2MTNhZGIxNzBhZjgwYTFhMzI1NTYzMTFlOGMxYWQ5YTAgbGVnYWN5LXRydW5rCis4MTQxNiA4NTQyYjc3YTI4ZWE5NjU4NmMwMDgxZDY1YTNjNGM1MmM4MGRiZTdlIHJlbGVhc2UyNi1tYWludAorODE0MTcgYjAyNTBmZmEyMjY3NzVkZWZiMzVlZGJlMzkwYzg4N2E3MDJiZmUwNiBweTNrCis4MTQxOCBmZmYyOWQzZTdhMzkyMTViMTdkYjg5NzMwYTYxMGNlZjBiNjQxMjBmIHB5M2sKKzgxNDE5IDFiMDQ2NzY2MWVmNWE5MGY0MWY4NmY1MjAwYTI4YjRlYzZiMTM0MmYgbGVnYWN5LXRydW5rCis4MTQyMCBmYmZjMzUzNjQ3ZTNjMWIzNWY4ZmEyOTFjNTEzNDU3ZTBmNjA1ZDMzIHJlbGVhc2UyNi1tYWludAorODE0MjEgMjliNTZjMzhhMDMzZGNkYTEwYzc2MWVlNGNiMTMxZDMzZDg5MTlhZSBweTNrCis4MTQyMiBhYmMzZjVhMWNjNWU4Y2FjYWQzNWQxNWJhNWNlM2NlYzczYTVjNmNhIHJlbGVhc2UzMS1tYWludAorODE0MjMgMDZiMDkzNzZjYzViMDQyY2UwZDE2MWIzMDM0NGE1ZDhjYzM0ZTU1MyByZWxlYXNlMzEtbWFpbnQKKzgxNDI0IGVjYTk4YmRjOGExNGY0MGIyMzJhMzg0ZTJlMTliYjlkOTUyYTc2ZTAgcHkzaworODE0MjUgMjNlMzgxOTJhZjk2NDg4M2ZkZDZlMWI0NmM5NjI0MzRhNmVkNjU4OCByZWxlYXNlMjYtbWFpbnQKKzgxNDI2IDMxNjNkYTIyZDU4NTAyYWNjN2RjYjMyYzA4NWRlMzgwMzAzNjM5NGIgcmVsZWFzZTMxLW1haW50Cis4MTQyNyA4YjJkOWQxMDFjODVhNDk2NmZiMjkzNWE0ZTcxYTk5ZTA5MjQ2ODRlIHB5M2sKKzgxNDI4IDY5ODVjNmI5ZDk3OGU1NzEzYTM1MDE5MDA5MDE0ZGFhMTZmMTYzYmQgbGVnYWN5LXRydW5rCis4MTQyOSBiMTRmMzlkMGYyMGEyZGFlNTRmNDkzN2EzMzZhMmE2Mjc0Njg0ZWRhIGxlZ2FjeS10cnVuaworODE0MzAgNmEwOGVlYjRiMzIyMzkyOTc1NGFlN2VmNTA3MWQ2YmNmMmMxZmNmNiByZWxlYXNlMzEtbWFpbnQKKzgxNDMxIGZlYmQ5YzI4OGU3NmY4MGJjOTNhZjgyMTk3ZDhkNDEzY2M1NzFjM2MgbGVnYWN5LXRydW5rCis4MTQzMiBmMDVkMjk5Njc3NmUwZWY0ZjM2ODNmZTIxZmZhNTRiY2NiYzUxNzMzIGxlZ2FjeS10cnVuaworODE0MzMgMTFkNTg1MTYwMzNmN2Q1NDMyOWUwYTZlNjEyOGQxYjJlMmY1NGNmNCBsZWdhY3ktdHJ1bmsKKzgxNDM0IDVkNjc0OTcwYWNkOWEwNjhjYjcxYzUyYjdiNGEyMGVmOGJiZTNjZmEgcmVsZWFzZTI2LW1haW50Cis4MTQzNSA0OTVlYmUwNGQ0Nzk4Y2JjMGY2ODZhZGM4NDc4MjVkOTIwY2NjYzUzIHB5M2sKKzgxNDM2IDZlZjdjZmIxZjhmNDgzMWMwYjAwNWVjMzJkNTJiNmRlNDRjOGM4ODAgcmVsZWFzZTMxLW1haW50Cis4MTQzNyA4YzhkNDBjZTVjYTE1YTQ0NGNmZjljNmUxMzE1ZDYwZjhiYzY3ZTAzIGxlZ2FjeS10cnVuaworODE0MzggZjM4OTU2M2ZmMzcyM2U2MjY1Y2JmMDVkNzgzN2QzZWE5MTU0MTg0OSBweTNrCis4MTQzOSBlMjBlYWUzYjVmZTQ1NDBhNzZhMzA0Y2FlOWQ1MWVhNDVjOTk3YThjIHJlbGVhc2UyNi1tYWludAorODE0NDAgYzBkYmZiNmE3ZDU2NzMwM2M3YmJlMzhhNDdkOWZlMWI1NDI1YTExYiBsZWdhY3ktdHJ1bmsKKzgxNDQxIDNhNmU5NjM3YzMzZGQ5YmUzMDc1OTkxZDVmZTNmNzY3Y2E5YWRjY2IgcmVsZWFzZTI2LW1haW50Cis4MTQ0MiBhOWNhZDVhZTQwNWQ4ZDJhOTVmOGNhYTFjYWMzOWY5NWIxZjI5NTBkIHB5M2sKKzgxNDQzIDcyZmEwMGFjMzhiZTNlMGRkODZhZTc4NjA4Mzc2YTkyY2Q4ZGExYTYgbGVnYWN5LXRydW5rCis4MTQ0NCA1MjQ5NWNjZjYxY2M4OGRlZTczNWYyYmMxNWQ2NzQxZmYwY2MzYTdiIHJlbGVhc2UzMS1tYWludAorODE0NDUgOTU0MTNlYmQ0MDgxMzYzODgzZTI1YjI0MWRmODQ0OTViMDcwYTliMiByZWxlYXNlMjYtbWFpbnQKKzgxNDQ2IDJkMGIwOThmNmNiN2Y5ODcwNDI3YWNlOTMzNDgzNTMxNzZkNTE3ZjQgcHkzaworODE0NDcgMTk0ZjQ4OGI4YWQxYTc3YjQ1ZWI4OWNjNGU4YWM4MTRiMGRjYjVlMiByZWxlYXNlMzEtbWFpbnQKKzgxNDQ4IDFhY2NhOWM0NTU2MmI4ZWY0N2FmOGNhZjYwNjRlZWM2N2MxMzY5YzEgcmVsZWFzZTMxLW1haW50Cis4MTQ1MCAwZTI2Y2I5NzZjNGQ5MGJiZGQzOGE3OTIyOTc0NjQ3OTBiNmRkYjQzIGxlZ2FjeS10cnVuaworODE0NTEgMGY1MjhlZTE1ZWY3MjA2MGI3MTM2MTFjYTQ2NjMxZDc0ODg5MTNhYyByZWxlYXNlMjYtbWFpbnQKKzgxNDUyIDAyMmM5M2VkMWI4ZThmNGJkNjhhNDRmNjdkYTgyMzc5MTIzOTQ4ZmUgcHkzaworODE0NTMgNTVlODE5Y2I1MzYxMDM1OTI1YzgyZDY0ZjM2NzQ0YWE5NDQ3YTc0NCByZWxlYXNlMzEtbWFpbnQKKzgxNDU0IGM2ZGZjM2RkMmQ1ZGY0YTFmYjMxZDRhOTlmNGYxYWIwNjFkNDMxNjcgbGVnYWN5LXRydW5rCis4MTQ1NSAyZWE5MDkyMGNjMTBkM2ExOTgxZDNjYjQxZTY0NGJhNzMwOGEzOWI1IHB5M2sKKzgxNDU2IDE0ZDIzYmRkZjc5MzMzNGFlNjlmZjkzMTMzNTkwZWI3ZDQwZTk0NGIgcmVsZWFzZTI2LW1haW50Cis4MTQ1NyA4MTViYTM4NzJmODUwNDc4Njg4MGY1MjBlMjAwZDE5MGIyZjMwOGM0IHB5M2sKKzgxNDU4IDgwYmU3MjE4NzY3YjcxMmI3NjA2YzYyYmZhZWUwY2FhZThmZjc1YTcgcHkzay1qaXQKKzgxNDU5IDk5ZTllZDIxNGFhZGU2ZGMwM2FiNDMyOWNjYTMzYTIwZjk3Y2Y2NTMgbGVnYWN5LXRydW5rCis4MTQ2MCAyYTM4OTczNGQ1NzAyMGI5MjYwZmVhNzY1YTdkZTljYjNmZjRhMWFhIHJlbGVhc2UyNi1tYWludAorODE0NjEgMWFmMjczNTBmNDFiYzZmY2E3ZTVhNDZmMDQ2OTAwMzM1NWUxOTVkOSBweTNrCis4MTQ2MiA4NDZkYmNmOTcwYWJlYTVjODVlMzM3NDkzODE2NmZmOTA1MDY5MWRkIHJlbGVhc2UzMS1tYWludAorODE0NjMgYjczOWQzMDM0ZWM3NTEyNTg2NjUxNDlhODE2ZDZjZWYxNTMyOTgyZCBsZWdhY3ktdHJ1bmsKKzgxNDY0IDlhMDIzOWMwZWEzYjQxY2RkYjlkMGM5MmVlNDAyYmM3Y2ZiZWNkMWMgcmVsZWFzZTI2LW1haW50Cis4MTQ2NSAwYTY0N2QwOGU2ODVmYWYwYjk3Nzg2MGM3M2Q2ZTJmZTlkYTM1YTA5IGxlZ2FjeS10cnVuaworODE0NjYgZjIwNWQ2NjA1NmY4OWRkOWNmZjY1MjkyMzk0MmYzMTE2OTEyMzU2YyBsZWdhY3ktdHJ1bmsKKzgxNDY3IDc1NWExYmM1NjMyNmVlMDVhN2IzZDUwZWI0YzI4M2VmNDE1Njg3OTggcmVsZWFzZTI2LW1haW50Cis4MTQ2OCBkNmE4ODk2OTcxN2Y1NWJjOGRmZjcwYzkwYmViZDdiOGQ5MzMzZTczIGxlZ2FjeS10cnVuaworODE0NjkgNjNiNTc4ZDgzM2VlN2FkOTNlMjhhM2Y3YzU3OGE5NmRiMThmYzczYyByZWxlYXNlMjYtbWFpbnQKKzgxNDcwIDM1NmE2ZmM5ZTU3ODVjM2Y2NzY1NDYyYjE5OTRmNjczMDMzMWI1OTggcHkzaworODE0NzEgYmY4MmMxZDA0ZTA2Y2RhYmZjZGI5MjI4MTViMTRiZDQxMmJlYmQxOSBsZWdhY3ktdHJ1bmsKKzgxNDcyIDk3MjZjMjE3Mzg4NTgyZTFhYmJlZTYxNmIxM2FkMzAwYzMzMzNiN2YgbGVnYWN5LXRydW5rCis4MTQ3MyBhYjA4MmUzODdkZDVjZTI5NTgzZWNmMTY3NWYyYzk1MGNiMzdhZWM4IHJlbGVhc2UyNi1tYWludAorODE0NzQgODMwY2Q4OWIwMWU4ZjA0ZjVlMTIzZWZlYjY3MzkyYzY0NDQxZjc0NSBweTNrCis4MTQ3NSBjZDQ5MzY2OTExNjNmZGMyOWE0NDRlYWYyNDQ1YmEzZDU0ZTdmMjlmIHJlbGVhc2UzMS1tYWludAorODE0NzYgNmZlZTI2Yzg5ZjZlNGIyYTc2MjkwNjZlMzA0OTM3NGM4NmFlZGU1MiBweTNrCis4MTQ3NyA2ZGM5ZWM4ODU0NjM5MWM3MzE4MThhYmM2N2U3MWU3ZDYxMTAwMTkwIHJlbGVhc2UyNi1tYWludAorODE0NzkgZWU3NmYwYTA2NWMyNGM5ZmNjMjlkNGVhM2QyZTc5MTViZDliNzg0NyBsZWdhY3ktdHJ1bmsKKzgxNDgwIDFlMDZhNmMzMTIzNDFhMzFmZWRmODZhNzAyYmY0ZjM4ODkxNDJmYzUgcmVsZWFzZTMxLW1haW50Cis4MTQ4MSA2OTIwN2Y4MDFiMzE2NjQ1NDNiYTQ5MWI2YWNmYmYwMTJiYjc5YTMzIHB5M2sKKzgxNDgyIDRlNDk1MjYzNjExMzQ1Yjc4NDBmMWVhYjllMmJjNDdiMzRmNWI3Y2MgcmVsZWFzZTI2LW1haW50Cis4MTQ4MyA1NGI1MWFiYjY5NTEyNGRjZTcxMjY0MGYwNzliZDA5NzI3N2Q4YjFiIHJlbGVhc2UzMS1tYWludAorODE0ODQgMWU4YzkyMzE2NDYzNDc0ZTZhYmE1ZjU2NjczZDE4MjM1MzVhM2JjNCBsZWdhY3ktdHJ1bmsKKzgxNDg1IGIwZGVlMzJhMWM2YjA5NWRmYWE5MzdhOTczZDM4YjYzNzRhMDQ4ZDIgcHkzaworODE0ODYgMGJjOGZmZTZiYTlhYzg1ZGZmODVlMTIyZTI4ZDQ3NWQ0YjE0M2U0ZSBweTNrCis4MTQ4NyBhMGE2ZThiZmFhZjcyYTA5MzkxYTUxOGMyYmRkMDdkY2E4ZTU2YzVlIHJlbGVhc2UyNi1tYWludAorODE0ODggZGNhM2NiMTlkYmRkNDcxMjVhN2FhOWEwNjIyYTdkNTM0NTY3ZTIwNiByZWxlYXNlMjYtbWFpbnQKKzgxNDg5IDIxZmEwOWYyNTBlMzAwNmNkYzBiYzUyODU5ZGQ1MzNiMDE1ZTU3NTkgbGVnYWN5LXRydW5rCis4MTQ5MCA0MGNhZDc1OWEzNTU0NzU1Y2RlNzk4OGZkZTAxNTE2M2I5NTA5ZjFhIGxlZ2FjeS10cnVuaworODE0OTEgNzc1MDU3OWMzNzVkYTFkOTI4ODk0NjhjMDcwZWJhZjIwY2EyMzMxOCBweTNrCis4MTQ5MiBlNjRlYTE2MTk4MjBjMGI5YTNmZDU1MGU0OTE1OTFjMWM0ODZlMzI2IGxlZ2FjeS10cnVuaworODE0OTMgMDM2MDE3ZjJlNzRjNmE0NmU0OWUyNmI3NmUxMzgwM2U0ODRkMTFjOSBweTNrCis4MTQ5NCAyZjI0YTJlZjczMzFjNjJlZGYxNjA5MjUyMjFkMzQxM2M3NWNiMzI2IHJlbGVhc2UyNi1tYWludAorODE0OTUgOGFkNjE3ODA1MzVlZmI0YWRmODQwZjc3N2RmOTA2ODg3ZDNiMjJlYiBweTNrCis4MTQ5OCBiMDM4ZmRhNTkzZjZkNThlMWU5NTM2NWYxZTlkZDBjM2QzNWEyNmMwIHB5M2sKKzgxNDk5IGM1NmZiNjNjNjQ4ZjQ5ODMyNjk0YzQxMTQ5N2RjY2UyZjZiYmM0MWQgbGVnYWN5LXRydW5rCis4MTUwMCBlYmRhNjgwM2Y4ZDVjM2UxYTc2N2VjY2UxMTFjZjUwZjMzOGY1NmQyIGxlZ2FjeS10cnVuaworODE1MDEgOTBkNjMxNDY4NGQ0M2JlNDVlNTliMmIzZThiNjA3NDFmOTI2OWE1ZSBsZWdhY3ktdHJ1bmsKKzgxNTAyIGUzYjUzMzhiZTA1ODg5MWJkOTUyZmZkZjY3OTIxNjZjNTI4NDIyMjQgbGVnYWN5LXRydW5rCis4MTUwMyA0YmUyMWEwOGRkNzA3MTZlNjhjYzY0MzY1Y2ZmM2VlNWQzYTgzNmM4IHJlbGVhc2UyNi1tYWludAorODE1MDQgYmYwNGVhZjFhZjc0OGE4M2JkNzQyZWZiMDQ5MzQyYmFkZjkyYTk5OCBweTNrCis4MTUwNSA2MTQ0NzYwZTgzNTBkNGMzYjA4N2Q5ZjE2MzhlNTMzMzA2MTQ4M2VkIHJlbGVhc2UzMS1tYWludAorODE1MDYgNTg0OTE5MTExODJjZTEzYzIxMDdhOTg5N2Y1N2MwM2IzMzkzYTgxMCBsZWdhY3ktdHJ1bmsKKzgxNTA4IGY5MDM2OGM4N2IzM2U2ODUyOWVhMTBiZmM3MTdjNGY0YTRkMGYyYjUgcHkzay1qaXQKKzgxNTA5IGE4ZWFiNjcwMzI2NjY0Y2JhYThjZGIxODM0NDdhOGYxZGZlZmVjYjMgbGVnYWN5LXRydW5rCis4MTUxMCA2OTNlMmJlZjRlZTNiYzgyMDRiMzVkNzczN2VlNzRiZjcyZjNjMWMzIHJlbGVhc2UyNi1tYWludAorODE1MTEgN2Y0MWQ3NWFkNDM1ZDJkODM2ZGZjN2M4ZGEwZDFjMWQ3ZTM0NjNhYyBweTNrCis4MTUxMiBiNzNiZWJkZmU1MjU5YzJhYjdjMzlhOGQ3NzM1M2IzYTEwYzdmMTZiIGxlZ2FjeS10cnVuaworODE1MTMgNzAzMjg3YTk5OTM5MTcwZmMwMzEyYzMyN2ZiNzI2YzNjNjE4ZWNiNSBweTNrCis4MTUxNCA0ZTAwOTE0ZWM0NDdiYmJmZjU3NTg0MWIwMWY1MGU1YmVkYmVlOWEyIHB5M2sKKzgxNTE1IDViYzRmY2YwNDE0M2Q2YzVkMjk5MjRiM2RhYjQ0ZTg0MDk0ODZmZTIgcmVsZWFzZTMxLW1haW50Cis4MTUxNiBjZTI2MTcyM2IzNTYyYmFiYThkMjgyYjQ1YWFkZThlOWZjNTFmYmRlIGxlZ2FjeS10cnVuaworODE1MTcgNzgxOWJhNzdlNDVjMDAwNjNjNmFlMzA5OGQyNzExM2M0YzIzNTRkMiBsZWdhY3ktdHJ1bmsKKzgxNTE4IDIyOTdjZDU3ZDk0NWYyZmE5YzRiNjg3OWIzOGMxYzc2MDRjMzllOTggbGVnYWN5LXRydW5rCis4MTUxOSAyMmNhZGYyNjRhZTUyMTdmMjM5ZTRlYjM5NmQzM2NhZTY4NmJhY2M4IHB5M2sKKzgxNTIwIDEzMjEyZDc0Y2UwMDhlOTA4NGU5Y2YxOWYzMDQ2MjllOWFmYWM3MTUgcmVsZWFzZTI2LW1haW50Cis4MTUyMSA1NGI0ODhjYmQzN2UzOTE0MWE2ZmExNjgzMGMzNWE2NDliYTVjYjRmIGxlZ2FjeS10cnVuaworODE1MjIgNzYxYWM5NzAzYTk2YzE0MWYxNzMzMGExMjQ4ODg4NWUzNGEyZTJjNiBweTNrCis4MTUyMyBlOGE5MzkzYTA3NDhkNWQ1MDQyOTBlMGQ2OTkyNDRhMjA2NThkNDY1IHJlbGVhc2UyNi1tYWludAorODE1MjQgZDA5YzlhOTM3ZTEwYmY2YTcxMmZhOWNhOGYyYTBkYTllNDcyOTJiYyByZWxlYXNlMzEtbWFpbnQKKzgxNTI1IDhhYzNkNTI3NzQ1YzRlM2FhN2Q4OTZmOTExNjBhMTllY2RmMTg5MTAgbGVnYWN5LXRydW5rCis4MTUyNiA0NzA4MDA4MGFiNjE5YjU3MTI0OTgwMjg1MWFhZDJhYjNhMzU4Y2QwIHB5M2sKKzgxNTI3IDQ0ZjQyMjJkOTFiZDcwZjFkMDg5MWQ3MTNhZjVjYzk1MDJhMTg2N2EgbGVnYWN5LXRydW5rCis4MTUyOCA2ZGZmM2Q5MjEyYTg2NWMyMTI4M2ExOWU3YmNkMWEwN2FmOGZhMzFmIHB5M2sKKzgxNTI5IDU1ZGM5ZWYxNWFiMWEyNDVmNDQzMGQwZDI3YWI1MzZmM2U5OTc3ZDcgcmVsZWFzZTI2LW1haW50Cis4MTUzMCA4MmMyNDI2ZjdmM2U5YTA3YWY5MjE0MzRhYzNlMzNkODRmZmFmZTg0IHJlbGVhc2UzMS1tYWludAorODE1MzEgZjEzMzdmZTZiN2I3NzllYzIzMDUxMTM0ZWYzNTQyOTI3ZmFjOGU0NCBsZWdhY3ktdHJ1bmsKKzgxNTMyIGU0YWY3MDJkNjFiN2QzY2FkNzdiMTU1MDc3M2EyZmQyNjIzYjkyYzQgcHkzaworODE1MzMgNGMyZDZlMWI4OTBlZDZjYzQzNmFjOTk5YWFjNTI2ZmIxY2RlMjdkYyBweTNrCis4MTUzNCA5M2M1ZTYyNDEzMDk2NjgwOTI0OThjOTI5ZDNhNDk5NDZjZmE5YjZhIHJlbGVhc2UzMS1tYWludAorODE1MzUgMDgwZTU1MDkxNmVkY2Q5YTg0YTZjZDVlMDFiZGYxNWNkMmZhODljYyBweTNrCis4MTUzNiBmNzg4YWZmNTcyZDExYzk1OTgyNDVjOTdjMjY0YmYxOGM2ZThkNTkwIHJlbGVhc2UzMS1tYWludAorODE1MzcgYmQ1ZjVkZjdlZDc4OTRjN2FhYmU5YTNmNGE2ZGNlNGQ0ODQzZDNkMyBsZWdhY3ktdHJ1bmsKKzgxNTM4IDZhM2MyZjA5NGJiYWQ3YzdiYTI4NjMzMGExZWNkNDFmMDE5YTNlMGQgcHkzaworODE1MzkgOGRiYmQ5MGVlZGE4NmU3YzZhMTI1YWVhZGI4NmQ0ZTkxZTc4ZGJmYSByZWxlYXNlMjYtbWFpbnQKKzgxNTQwIDlmNzljYjk4ZDU1ZjQ0ZWRhYTk5MTM2NjczODJmOTIwYzRjYzZjN2MgcmVsZWFzZTI2LW1haW50Cis4MTU0MSA4MWE1ODBkOTQ3ZWY0ZThhYzg4Zjk2YmUyMDA3NzQ4NDNjM2M4OTY4IHB5M2sKKzgxNTQyIDE5YjNlNDg1M2M3NDMyMmMwZDdhOThkZmE3ODhkNGRkZjBiOWFhNjQgcmVsZWFzZTMxLW1haW50Cis4MTU0MyA0OWQ0OTc3OTA2MDdmOTJlYWZhNGZjNzhiNzVkMmZiYzlmNGFkOGM4IGxlZ2FjeS10cnVuaworODE1NDQgNzAyZDI2MWYzYTI5YWJkZTFiODc1NWMyZTMwNGVmNDZmODA1MzJhOSByZWxlYXNlMjYtbWFpbnQKKzgxNTQ1IDlhZWM2YWQ1M2ExYjk3NGFiZjEwNGYzNGZhMTlmYzg0OGZkOGQ2ZGYgcHkzaworODE1NDYgOWI4YjE0MDNmOGRkYTg1NDA4NjA2NDVjOGZkMTVkOTc0NWEyMDM2OCByZWxlYXNlMzEtbWFpbnQKKzgxNTQ3IDRmOTgyZTk0YWUxNmFhYmYyMDRkNWRiMjM2YTdkYWNhZGYxYWVlMDYgcHkzaworODE1NDggODMyOGM1YzMyNzJjMzUxMDQyMDllZTI0YWQ0NGIwOTU0ODMxNTlkYSBweTNrCis4MTU0OSA2MDI3MDNkMDU2MGFmNTNhMGRmY2VlY2UzOTRhOGYwMGJjYWU2YjAwIHJlbGVhc2UzMS1tYWludAorODE1NTAgZmQ5OTQ2N2FiNGQ1OTY1MDJlZDNkNjY3ZjU5NWJmZDMzMzMyODE0ZCBweTNrCis4MTU1MSA1NmE1NDkzNmRhMWRiZDQ5MmUxYjYyNjZlNjcyNzg2NTY1MjkxYWQ1IGxlZ2FjeS10cnVuaworODE1NTIgYzRmNzM5NzVhNDQwYTkyZGUxODA4NTdkMWVmMDRlZGY3ZWQ3YTRjYiByZWxlYXNlMjYtbWFpbnQKKzgxNTUzIGUzYWQxYjhjNDUyMTI4ZmQ2YmU0MDg5OWU2Nzc1OWU5NjM2MjVlMzMgcHkzaworODE1NTQgODE4MGFiYmQwN2NiMmU2MGFmYWMyNWEzOGQ5NmVjNDdiYmFlNDE4ZiByZWxlYXNlMzEtbWFpbnQKKzgxNTU1IDQ3NDVlMTNhYTllNDM2NDI5YTc5Y2I0NWE5MzdhYTM3N2RkYmZjNmQgbGVnYWN5LXRydW5rCis4MTU1NiA3Y2ZiZmZhNmEzMGIyODJiYTRlZDY0ZTU3NjFmNjllM2E1NjA0NmY5IHB5M2sKKzgxNTU3IGM0MmZmYjNkNjNhZmM3OGExNWQ0ZTcwZDJiYjMyNjRlMDZiYWMxYTAgcHkzaworODE1NTggM2Y0ZDJhODE4MTBjNWNjN2NiMTNlNTYxZDcyNWI2MzQ5YzVlMTYzYyByZWxlYXNlMzEtbWFpbnQKKzgxNTU5IDEzMDdkOTc4Nzg5ZmVmYzNkYWIxMTEwNjBiODRhYTNiZGRlNDFjMmUgbGVnYWN5LXRydW5rCis4MTU2MCA3ZjMxMmY2MGZkYjA1MThkNTU1ZDljOGUwZTM5YmU2OGQ0YmMwOWEyIHB5M2sKKzgxNTYxIDAxNDgyNzAwNDM0ZDhhMDlhM2UzNjIzM2M3Nzg5MmI3Y2UzNmNlMjIgbGVnYWN5LXRydW5rCis4MTU2MiA1NTVmZjU4Y2I3Y2I4YTdhZTM0MTI4ZjQ1NmIyZWYzNTNhMGY0M2U3IGxlZ2FjeS10cnVuaworODE1NjMgZGRhMGUxYWRkOGIzMTI2YjEzZjYxY2NhYWM0YjA2M2UwZTk2M2M4NCBsZWdhY3ktdHJ1bmsKKzgxNTY0IGMyN2VhZDUxYzdkYzYzMjMxOWFiMzVhM2M0OTZmMjExZjVkMWQ2MzYgcHkzaworODE1NjUgY2ZkMjE1ZDk0OTljM2VhMWZlNTMyMTliMjQ5Yjk1M2UwNmFmNjgzZCBweTNrCis4MTU2NiAzMTFhMjUzYjU4Yjc1ZDEwYmQwNGYzMGMwMWRkYTIzMDBiMDY0YmUyIGxlZ2FjeS10cnVuaworODE1NjcgOTZhN2EzY2M1ODk3ZWI0MDhjY2Q0OTQzMzZjMjkyMjg4MGQxYTcxYSBsZWdhY3ktdHJ1bmsKKzgxNTY4IDZiODlkZTM2YTc0ZmMyOTBmYWFhMGFiOGJkNTBjNGM1OTdiYWIzOTAgcHkzaworODE1NjkgMGNjZjBmZGM1OTY2NTJlMTMxYjg2ODM1ZThmZGM1MzEzNzhjNzQ2NyByZWxlYXNlMjYtbWFpbnQKKzgxNTcwIDRiMTQyZjdiMzgxMmQwOTljYjg2NDMwNWNlYTM2MWViYTlkZGRmYTEgcmVsZWFzZTMxLW1haW50Cis4MTU3MSA1Y2NjNzFkY2I1ZGVhNDQxN2RiODViOTQ5ODZkMWI5MDA3MGRiMDVkIGxlZ2FjeS10cnVuaworODE1NzIgYzliZWNjYjYzZWE5MDlhNDNjMDM3ZGYyMmEzMGY0YmRhYThjMTJmYSBweTNrCis4MTU3MyBmNTAxYmU2Mzg4NzhhMTViMmZjYmM1MTM1OTFmOTlmZDczODkyYTYzIHJlbGVhc2UyNi1tYWludAorODE1NzQgMjVmMmEwZjBlOWRlYmQzMDhhMjIxYjliYWFhOTcyMjc1YWU5YmFjOCByZWxlYXNlMzEtbWFpbnQKKzgxNTc1IDVjYzNhMGMxNDgwMmViYmEwNTA2MGFhMjc0NTQxZTMyMzkxMDZhNzkgcHkzaworODE1NzYgN2ZlOWI3OTAwNTRiYWRiODY1NGUxODlhNzNkZDJmZGMwYjg1NTg4ZCByZWxlYXNlMzEtbWFpbnQKKzgxNTc4IDk1MjZhOTA4YTI1OGRiODY2YmE2NWU3MjhjYWY5MDA0MmNiYzAwMGUgbGVnYWN5LXRydW5rCis4MTU3OSAxYTU5MjhiMjU5M2M5MGY3NjhjYzMxMzM0ZTdiOGE5NzNjN2I0ZmNhIGxlZ2FjeS10cnVuaworODE1ODAgYmQ5Y2IyNGJhNjhiNDJkNTMwZmI5YzcxOWY0NjllYjhkNGEzNWFjMSByZWxlYXNlMjYtbWFpbnQKKzgxNTgxIDYyMTk0MTU1Nzg5ODM2ZWM5MjU2MTU1OGIwYzFhZTY0NWZlMDQ0NTYgcHkzaworODE1ODIgN2M5NDc3NjhiNDM1ZDkzODk5OTZkZDVhY2YzZjhmOGUzMmQ3MmQ2NCBsZWdhY3ktdHJ1bmsKKzgxNTgzIGYxMmIwMWU2OGY2NDRmYzIwZGQ5OGI5YjQ0OWRhYjI4NjgxMjQ2YjcgcHkzaworODE1ODQgYjY5N2UyMWQxZTc4NjdmOTIyYTI5NWRjNmQzZmNiZTMyY2M5NzlmYyBsZWdhY3ktdHJ1bmsKKzgxNTg1IGYwMDA3NTRjODk0M2UxODA2OTAzNDg4MTlmMDVmMGJiZWVjOGUxNDIgcHkzaworODE1ODYgNDQxNTU5OWI3MDExNmZlNDkxNDllY2Y2NDRhMTZlYzIwY2Q3NWQ3OCBsZWdhY3ktdHJ1bmsKKzgxNTg3IDJjZmIxOGYxYzI5MzNjZDUwOWE1YTRhNDBmMGI3MzZiMGUyYmY1NzIgbGVnYWN5LXRydW5rCis4MTU4OCAzMDhlZGYxMWM3Y2ZmNjg1MmE2MTQxN2MyMDU0NTE5MWYzMzM0MjcwIHB5M2sKKzgxNTg5IDlhMDRiZGM0ODA4OTgzZjJmMTdhYTk1OTZjMTQ1YjkxMWExYjlkNjEgcmVsZWFzZTMxLW1haW50Cis4MTU5MCA4NTJkNWVhNjI1ZTc0OTUyMzI1NGFkODYwZGE2MjZlMjFjNWY4OTc0IHB5M2sKKzgxNTkxIDQ5YWI1ZGJjNGZhYzljNDNiNGI0MzQzNDI2ODIxZjhlMmE1MmJhY2UgcmVsZWFzZTMxLW1haW50Cis4MTU5MyBkNWM3OWQ4OWIzOTNhZmU2ZjZjZjZmZjZhZWU5YTQ4MTcwZTBiYTdkIGxlZ2FjeS10cnVuaworODE1OTQgMmI1ODdlN2YwMjk5YjlmOGQ2MTE5MGExOTRhMDg3ODU0ZGM3MzIyNyBsZWdhY3ktdHJ1bmsKKzgxNTk1IGI3OTlmODYyZmIyMThiNDJiYzdjNzRjMjUyYjk0MjE5ZWE0NTU2NzEgcHkzaworODE1OTYgMzIyYmY0ZmY0ZDNkNmVmYTU0NDhjMmJhOTlhMzk0MjljZWZiZDZlYyByZWxlYXNlMjYtbWFpbnQKKzgxNTk3IGE5MTc0NzMzNmVhZTYwMjRmNjYzODYxODBjNzRjM2U5NGU4ZDM3YmIgcmVsZWFzZTMxLW1haW50Cis4MTU5OCAwMzcyYjRjN2I5ZjRmNmEyN2YzZGFlODcyMWRkNGVkNDI2MzE5MzY3IGxlZ2FjeS10cnVuaworODE1OTkgMTY0MTkzYWRlNGJhZjBlNzQ2NTMxZmVlNmJhZmUzZmZmNmM0YWEwZSByZWxlYXNlMjYtbWFpbnQKKzgxNjAwIDYzZTc4ZmNmN2Y5NGFjZTY2MWMwNzQ3ZTg5NTNmY2YyMmI3MjcwMjcgcHkzaworODE2MDEgYTdhOWI1OGQxYzE4Njc1MjgwN2FjYjNhODNiYTRiZWYzYTY3OWYwOSByZWxlYXNlMzEtbWFpbnQKKzgxNjAyIDZlNzFlY2E2Mjc4Y2I1NzU4MzE5MmI4OGE5MGE3YzliNjlkMWM4ZTkgbGVnYWN5LXRydW5rCis4MTYwMyA1ZDQzYjk2NjM2Yzg4ODdmY2NjYmEyMjlhZmY0YmY1Nzk3M2JkYjMwIHJlbGVhc2UyNi1tYWludAorODE2MDQgMDQ3MGRjNjNkMTJhOTgwM2JlY2IwNjIwYjc4N2ZhMzE5NjkyYmZjNyBweTNrCis4MTYwNSA5ZmE1ZWQ0Y2EwYmI1YjQ4Y2EwZTNhN2NlYjVmY2RlOTFhN2Y0NWNkIHJlbGVhc2UzMS1tYWludAorODE2MDYgZWQ3OWRhM2E1OTFjNGE4MDliODYyNDgzMGVjYmFlOGQ2ZTMxMjk3NCBsZWdhY3ktdHJ1bmsKKzgxNjA3IDZiN2FmNWEyNWQyZThkMmEzYzA0OGM1ZWZjNjhmN2I1MzlmZjI2ZDkgcHkzaworODE2MDggMDVkNmIyNWRkMTk3MTVhYjg1ODdlOGU3YjdiODk2NzU3OTZmYjQ5YiBsZWdhY3ktdHJ1bmsKKzgxNjA5IDlhNGIwMmJhYTdjNDMxMzBlOGUyYjBiZmFjNTczNWRhNWZlZDM0N2QgcHkzaworODE2MTAgM2VkZmFkMjU0OWM2MTc4ZGExMzQ3NDhjODkzZDdmYmUzZGQ4MTRjNyBsZWdhY3ktdHJ1bmsKKzgxNjExIDU4MzM3OTUwNjFjNWQ5NzA4NWU5NThjNzM0NmYxYWM0Nzc1ODBiNGYgcHkzaworODE2MTIgZTc2NmMwZDg2Y2ZmOWQxZTViYTZlM2E1N2NjZGQxODFkMGZiYTUwMyBweTNrCis4MTYxMyA2NmIzZWRhNjI4M2ZlYWM2YTlhNDAzMWYzZTAzY2Q1OTcyZThiNDNhIHB5M2sKKzgxNjE4IDMyNDJhMGQyMmRlNjM4YWI3MmRkNDE5ZjlhNGEyZDJjOWVkNzQ0ZmIgcmVsZWFzZTI2LW1haW50Cis4MTYxOSBjYWMwMGNiYmU3NzA5NDMzOWJhMWFiYzE5M2VkZjFiZDJlMmM5MzBlIHJlbGVhc2UzMS1tYWludAorODE2MjAgYjFiMzE3NzU4Njc2NTMyYzY1MmUzZmJjMGJiNzBkZTYxNjM1YTkwMSByZWxlYXNlMzEtbWFpbnQKKzgxNjIxIDc5NDUwNDVjM2E3NTkyMDVlMjVlMTU3YWI2MDc5YmU5NTFjN2FiNzAgbGVnYWN5LXRydW5rCis4MTYyMiBjOTYzNDc4YjkwOTJkZWNlZjQxM2NmNjBhOTkyOTBkNmE5ZDFhMzYzIHJlbGVhc2UyNi1tYWludAorODE2MjMgOGUyMWM2ODMxYzdmYTZiM2Y5ZGJkY2JlZjUxMzYxOTExZjBiZDdhNSBweTNrCis4MTYyNCA4YTEzZjc3M2E5NzYzOWU5OGZjN2RlYTE3ZDg1NzYyMmQxNmI3NGFiIHJlbGVhc2UzMS1tYWludAorODE2MjUgM2U2NDI1YzIyMWVjZmM1YTVlMDYwMDhmYTNkM2VhMmU1OGI4MjM4MCBweTNrCis4MTYyNiBlYmI5MTMwYWIwYzQ1OGZhYTA2ZWY1MzE0OTQ5ZDYxNjdjZjc1YjliIHJlbGVhc2UyNi1tYWludAorODE2MjcgNTdiOTAzNTAzNzJmOGMwMjZmNmM2ZTU4MGFlYTBhZGI0OTM5OGFjNCByZWxlYXNlMjYtbWFpbnQKKzgxNjI4IDcxNDY1M2RkNGFhZGFkNDUzY2NhYjliYWNkZWMxMWVlMDgzYzM3ZTIgcHkzaworODE2MjkgZGMyNzY4Yzk5OGRlMTI1MGFlYmVhZmNmZGNjMmMzNDM3MGE1ZDIyYiByZWxlYXNlMzEtbWFpbnQKKzgxNjMwIDY2MTA5ZDBlNGU2ZGYxZGVhNGI3Zjk4YzBhMTFiM2FlYTJmMWE1ODUgcHkzaworODE2MzEgZWJkNjVlYzU0ZDdlOWJlZjVkNmQ1YTI4Y2Q3YTBhYzUyMjY1MDI5ZSByZWxlYXNlMzEtbWFpbnQKKzgxNjMyIDYyY2E1NDBkOGI2ZTYxNTFhZDEyZTk1OTgyMDliNzAwNGY3ZTllZDggcHkzaworODE2MzMgOWY5MmNiYWE1MzlkNmE0M2M1ODIyOTU4M2NjZmJjYWIzZmViMmY3MSByZWxlYXNlMzEtbWFpbnQKKzgxNjM0IGY4MTI3MWMxOGViMDFhZGM2NTk5YjkxNjQ4ZjgxZWZhNjFiNDc4ZTAgbGVnYWN5LXRydW5rCis4MTYzNSA1M2VlNDczMjJkZDJhMmMyYTM0ODI2YjFjNDM1MDQ5NjE3Njc0YmMyIGxlZ2FjeS10cnVuaworODE2MzYgZDY5YjFhMmQ5YmYwZWYxMDQ4MWUzNDdmOGYzMWZiZjA5NDZhYTdlNCBsZWdhY3ktdHJ1bmsKKzgxNjM3IGQ0MjYwZGNhZmM3ZmI2MmI1MzcwM2JjNDQ4MGFiMGIyYjE0ZjJmYWUgcmVsZWFzZTI2LW1haW50Cis4MTYzOCA5YzBjMjdhOWI3MWM3OWNmMjExNmZlNmM5NzM0ZjM4YzJjMWJiYTYwIHB5M2sKKzgxNjM5IDEwOTc3NzA4ZGIyZWFhYjNlYzk1NGQ5ZjBjMDcxYmE2Mzg3NDI0ZDkgcmVsZWFzZTMxLW1haW50Cis4MTY0MCA4OThlYmIyOTkwZGZhNTlmMTlhN2ZjNzlhMjBlNjliZWJmN2I0Yjc5IGxlZ2FjeS10cnVuaworODE2NDEgMmRlNzEyMzNiNjliMGQyMDE2ZWM2YWI2Y2M4NTcxNTY0NWFlZTk5OSByZWxlYXNlMjYtbWFpbnQKKzgxNjQyIGU0Y2JiYmI3ODYzYjkyZGI5YmE2NzNkOWVjYzFiZjcyOWU3MDJiNGQgcHkzaworODE2NDMgY2ZlMTM4NjAwZjY0YzRjN2IxNWUxZTFhYzgwYjI3ZWNmNDdmMzY4YiByZWxlYXNlMzEtbWFpbnQKKzgxNjQ0IGEwM2I5NTY4MzU5YzU1ZGRlYzI5N2EzZGZlYzRlZWU0OTgxZTQ5MDEgcmVsZWFzZTI2LW1haW50Cis4MTY0NSA4ZTI5NGRmMGUzODJhNDZiMWFlMDYyZTFlODIxYzhiNGRiYzZmMzdkIGxlZ2FjeS10cnVuaworODE2NDYgN2IxMTI2YjViZTJkNmYwZDE0NTMwMzkwZDA3M2EzZTcxYjdhMDMxZSByZWxlYXNlMjYtbWFpbnQKKzgxNjQ3IDM3OWVlMjEyMTUzZTAzZjhhZjBmNjBjYzZmYjY3ZGJjN2FjZjUyNmMgcHkzaworODE2NDggZDIwZGIzZWU4NDU3NTVmNWU2N2I1MGNhNjllYjY2NWMyOTdkZmFlZSByZWxlYXNlMzEtbWFpbnQKKzgxNjQ5IGJkNDdjZDFmOWJjMmU4YmNjMjYzMDk4MDlhZGVhNTBiMWNiYzJhYjIgbGVnYWN5LXRydW5rCis4MTY1MCAzNGE2MzdiZmQ0YmU3OGI5ZTQ2MWQ0ZjMzM2M0MGNjZTg3ZTgxZjZlIHB5M2sKKzgxNjUxIGVhNDNiNDA2NDUwZjk0ZmMyNmJlZWU1N2U4ZjIzYzFmNzY0ZGJhZjAgbGVnYWN5LXRydW5rCis4MTY1MiAzYjgwNzA5MTMxNjk0OTZmOGFiM2NlMDU0OTBhNDk3MjU0MmM3NWNmIGxlZ2FjeS10cnVuaworODE2NTMgYjQ3YzRjZjI1ZjAyMmQ3NTkwNjA0MWUzMzg2YTg4MjY3YzhlN2U4OSByZWxlYXNlMjYtbWFpbnQKKzgxNjU0IGMzYWRiOTFjYTU4OTQ3MDk5ZWJmZDhmMTE1ZDIzNTM5MDQ2ZDQyYWMgcHkzaworODE2NTUgZGZmNWYwOWI1YTg2MDE4MmRjZjZjYTczMmY0MWE1NTUwNDY1ZTQ1MiByZWxlYXNlMzEtbWFpbnQKKzgxNjU2IDk3ZWRmMGVhMDNmOWIxNGUyYTQ5ZDQ4YTZhYTE1Y2E4MGNmMzMyZTYgcHkzaworODE2NTcgZGZiZDM0NWY1M2YwM2E1ODVlN2MwNDIyNjVkNzBiZDNjNWYwMjM0NyByZWxlYXNlMzEtbWFpbnQKKzgxNjU4IDZiMDcyOTRiMTM1MjBlMmRmNTY1NmQzZDBiZDEyNWM1NjdlZGIyY2IgbGVnYWN5LXRydW5rCis4MTY1OSBkZDM3OGI4ODViOTQwMzY1NDBmMmM5NTk1MDFhYWU3NDJlOWY5NWI0IHJlbGVhc2UyNi1tYWludAorODE2NjAgYmI2M2VhZWZjNWE2OGQ3OGZkZDVhYTgyMmIyZTYyYzk0YzhiNGI3MiBweTNrCis4MTY2MSA4MzNkZTc5ODg1ZTRmYzkyYzY4NDBmOGExMmY3YmZkNmYxOTI1MjVmIHJlbGVhc2UzMS1tYWludAorODE2NjIgZjZlOTAxODI2ODZiYzYxNWQ0N2VlODQ5NmM4ZDkwOTgxMTEzZDg3OSBsZWdhY3ktdHJ1bmsKKzgxNjYzIDI5MWIwYmI2M2ZiNzZiYWQ4NDAwMzExYWM1NzU3MjE4NzhmODg1OWUgbGVnYWN5LXRydW5rCis4MTY2NCBlZDk4M2IxMTZhN2RlMDBhZDcxYjJmNTcwYzRjYzc5NzU0OTBkMTIxIHJlbGVhc2UyNi1tYWludAorODE2NjUgOGJiZDRlYjRlZmM0MWUzYzM3NzdjMzViMjNkZWFkMWEzODM0ZmQzNyBweTNrCis4MTY2NiBjZWE1ZWY2ODJiZGQ0YzY4MzU1MGEwYjkyYTlkZmQ3MGQ3YjVjYjRjIHJlbGVhc2UzMS1tYWludAorODE2NjcgOWFmNjAwYTY2MTE1NzAxMDg5ZmM3NWNkNmNjZjA0ODVjYzVmOGY3NyBsZWdhY3ktdHJ1bmsKKzgxNjY4IGFlMTFmNTZhZDVkNzQ3ZGFmMjA3MWI3YmY3MzBmYjZkNzRlOTQ5N2IgcmVsZWFzZTI2LW1haW50Cis4MTY2OSAxYjRjMzA3NDJhMjRhM2M2NzllODBiNTI4ZDkwZTNlMjgyYmIyOWNiIGxlZ2FjeS10cnVuaworODE2NzAgYmZiZjJkNjUwZjI2OTM0ZDcyODk5ZGRlZGZjOGUxZmQzMmEzYTIxMyBweTNrCis4MTY3MSAwNTM0Y2UwMWJhNTAyOWIzZjU0NjFiYTUzZmE0ZTIyNDZiMzYzZmNjIHJlbGVhc2UzMS1tYWludAorODE2NzIgODgyNWE3ZTZhNWYwMWU2OTdkMzYxZWZhNTQ1OWViMjFiYzc1OTU2ZCBsZWdhY3ktdHJ1bmsKKzgxNjczIDM3OTdlZTU3ZDNkNmUzODViZWE3NDE0NjNlZDcyNmY4M2IyYjhmNjEgcHkzaworODE2NzQgMTZmYmRmMTBkMTAwMThmY2NkYzgzZjEzMDUzZGU2OTEyMWMzNDVmYSByZWxlYXNlMjYtbWFpbnQKKzgxNjc1IDNkMTFiYTc5ODlkZjBiNTA4ZWM5MGY2YWQ4NTM5MDBiNjM3ZTAzMTMgbGVnYWN5LXRydW5rCis4MTY3NiA1ZTI4YTNkZmRlZWYzZjRmMWM2NzQyNWFmZDY0NDhhZGMwOWVjYmY0IHJlbGVhc2UyNi1tYWludAorODE2NzcgMjViNDE2M2ZmZTNmZDJlNjlkNzViZWU4MDI3YzRhNDMwYmU2YzAxNSByZWxlYXNlMzEtbWFpbnQKKzgxNjc4IDM4ZGRlY2NmMDJhOTQyMjdjNTJlZjRmZDdjOTc5MDBmZTQyYzUzMjAgbGVnYWN5LXRydW5rCis4MTY3OSAxMWFjYzU3ZjU4MDRjYWJjMGMwODRkY2ZmNjVkMDEwNWRhZTUzOTI5IGxlZ2FjeS10cnVuaworODE2ODAgNmUxMjBkOTMxMTJlY2E0MmY3ZjQ3OTY1MGJkODkwYjM1ODU1ZTczYSBsZWdhY3ktdHJ1bmsKKzgxNjgxIDUzMmU5ZTZhYzgyNWYxY2ZiMzZhZjc0NjNmZDhiN2ZiOGQ3YjVmMTQgbGVnYWN5LXRydW5rCis4MTY4MiAyNjgwMzE2OGNlOGE3NDcyZGY1YWRhYzkzYTg5MDM4YWVkOGE5MDgyIHB5M2sKKzgxNjgzIGNiNGZhM2U0YjhkNTc2ODAxOWE2OTU0ZjczNWZhYjQ1YjlkMWRhZjQgbGVnYWN5LXRydW5rCis4MTY4NCBkZDY2MzY4MjE3YzE2MjZlMzFmNGJlYmQ4NDNiYzlhZWQ4M2RhMTA4IGxlZ2FjeS10cnVuaworODE2ODUgMjJjMGUyMjhkNWE3YzEyZjYzNDM2MzFhMzA0YWJkOGI2OTRiYmIxZiBweTNrCis4MTY4NiBiZjIxMDNhMjJlMDA3OGU2YTNkNGE1ZDJiM2E5MTRiZDMwZjllMzRlIHJlbGVhc2UzMS1tYWludAorODE2ODcgM2I2N2ZhMzU4NWYwN2M1NTA3ZTkxNWI2MDM4MTc1ZGJjYzY5ZWY0NiBsZWdhY3ktdHJ1bmsKKzgxNjg4IDlmYTU1OTAyNTlmNDY0YjBkNTRhZGFhNDk1NGZhNTg0OWQ0ODRmMzIgcmVsZWFzZTI2LW1haW50Cis4MTY4OSAwNzdkMjkzODQzOTkxOGQ2M2FjZDAxZjQyMWQzYzk5NTg5YmI2ZDA2IHB5M2sKKzgxNjkwIDdiNTliMWY2MzNjYjRlMjY4YTJmZDA4YjY5MjczN2EzZjE0ODhiYTUgcmVsZWFzZTMxLW1haW50Cis4MTY5MSBlYWNiZTc3NGYwMjllNGQ4OWU3ZmE0NzdhYzliNDNlNTE4YzQ2MGEyIGxlZ2FjeS10cnVuaworODE2OTIgNDE5OTAxZTY1ZGQyMTlkYTY4ZWVmMGJhZmE0OTY2NjdiZjgyMzNjZCBsZWdhY3ktdHJ1bmsKKzgxNjkzIDgyNDU2ODNlNmVjNjEwY2JlOTBmNzNhOWE0ODlhMDNkMzUzOGUwOTUgcmVsZWFzZTI2LW1haW50Cis4MTY5NCAxMDlhOThmOWZjZGRkMzRiYmE5NmVkY2Y1MDVlMmJjOWFhYTg4Y2NjIHB5M2sKKzgxNjk1IGNkMTkyZDFmY2Q2NzYzYjFjM2M1ZDFiYTA3YzczYjgyNDZjNjYwNGMgcHkzaworODE2OTYgODQ5ODhiYjkxZmJmNjM5OWI4YWM2MmYyY2JkODYwYTQ2MjQ0ZTc3ZiByZWxlYXNlMzEtbWFpbnQKKzgxNjk3IGMxNjBhZjA5YzViMDE2NWVmM2QxMmRkNzUxMzE5ZjA3YTM5MTc4NTkgbGVnYWN5LXRydW5rCis4MTY5OCAyYjI1YjUwZWFlYWRkNTU4OWM1OTk3YWM0YjcyODI4M2E1MzIyMzdkIHB5M2sKKzgxNjk5IDBjNzc2NGFhNjk0YTE4NmE0MTA1ZDQ5YmE0ZDkwZGFmNTA4NjMwOTEgcHkzaworODE3MDAgNGMwYjJiYmRkODJkMTcwNDdhOGMxZjU5MjgxMGE2YThmYWM0NDNlMSBsZWdhY3ktdHJ1bmsKKzgxNzAxIGE4MGMxYjk2NGE2ZmU5NmZiOWZiYjg2ZDdkZDAwYWQ3ZWY1NWYzNjcgbGVnYWN5LXRydW5rCis4MTcwMiBiYmFmNjA2MmYyNDE0MzZjOWMwODgwMzgxOWEwNTQ4NTZmNDc2M2E5IHJlbGVhc2UyNi1tYWludAorODE3MDMgZjIxNGUxYmYwMzFkMjk3NzU5ZDI3MWZkZjE4YzI2ZWY4YTAzM2U3MyBweTNrCis4MTcwNCA1MmU5MmU3N2IzMTE0ZDQ3ZjkzMTcyNzMzMDQwMmYwODhjZjgwM2JmIHJlbGVhc2UzMS1tYWludAorODE3MDUgNzM0NDQ4ZTg1NmFhN2M2Y2VhMDEwYmMxNTFhOGJkZTc1YmUzNGFjNiBsZWdhY3ktdHJ1bmsKKzgxNzA2IDA5MTc2ZDBiZGUzODQ5ZTBkMWU5ZTM5OWY4YjIzOTMzZmFmZjg2MzUgbGVnYWN5LXRydW5rCis4MTcwNyBkNzU0MWE0OTBjYmQ4NDIzNWRlZTdkZTIxYWJiNzQ5NjViMWMzNWUyIGxlZ2FjeS10cnVuaworODE3MDggOWJiNWMyMmVmMTM0MjNjNWYyMmM0MjZlMTg1OWIxZWY3YTlmZDI1ZCBweTNrCis4MTcwOSA1Y2RmMjY1NzZlOGVhMWZkNDA0MTc0YTllM2I3OWEzNDY0MmI1YzJiIGxlZ2FjeS10cnVuaworODE3MTAgMTQyY2I2ZjYwZmQ3ZTk1MWM1MmM3NTM3ZDZkZWU2MjA0NDVmNGZmYyBsZWdhY3ktdHJ1bmsKKzgxNzExIDIzZWQ4Mzc2MTVhYWI0OWUxMDVlMDkzNjEwMTYyODNiNjI2MmZkZDIgcHkzaworODE3MTIgZGRhOWJlZTVjODRhMDAwZDA4YzE5YzliYTYwZDc2ZWQwMTg0NTEyMSBsZWdhY3ktdHJ1bmsKKzgxNzEzIDYwNjEzZTgxZmIxZTg1MmQxM2JjN2VhNzI5ZmUwN2U1NjRhYmQ2OTYgcHkzaworODE3MTQgNTkwOWUxZjc2YmU3NDBkNjJjMmEwODQ0ZTA3YTcwZTdjOTBiODgyZSBweTNrLWNkZWNpbWFsCis4MTcxNSAyYjU3MDJkODhmMjc1ZThmYTA3OWJmN2VlMjhmYWI3YWQ4NDBhM2Y1IHB5M2stY2RlY2ltYWwKKzgxNzE2IGM4ODY0ODI3NzEzOGYxYmM1YjZjMGJjNTBmMjlkNDAxMzY2OWEyYTEgcHkzay1jZGVjaW1hbAorODE3MTcgNmI1MDEzZmVhODFiYmYwZWY1NDc4ODFiZjAzYzAxMWRhYmIxNGQ5YiBweTNrLWNkZWNpbWFsCis4MTcxOCA2MWY1NDZlODYxYzEyZjc2MTdiOThmY2ZlNThlNTM2YmM5MDFmNGY2IHB5M2stY2RlY2ltYWwKKzgxNzE5IDA4MjlmNjAyMDgwYjlkYjc3MmU5ZjRjMmQ2NzFjZjM4ZTJmZTNmZDkgcHkzay1jZGVjaW1hbAorODE3MjAgNmYxZjA1YzcyNWI3YzBmNTc3YTFkNmJlYTNmYWJmZDA1MmI5NWU4MiBweTNrLWNkZWNpbWFsCis4MTcyMSAxZmQzNjVkMzY5NTk2MmYzMWM5YTJlNDY4ZTkzZGEwZjExMTA4YTEwIHB5M2stY2RlY2ltYWwKKzgxNzIyIGE0MDlhNWFiODNiYmNiMmM3OGU1YzNkOTU3YmU1YWI3Mzg2MTVmZDEgcHkzay1jZGVjaW1hbAorODE3MjMgYTU2MTA1NDAxZDUyNmQ0MjM3ZGQxYmYzZmVhOGJiYWQ5NDg5ZWEwNyBweTNrLWNkZWNpbWFsCis4MTcyNCAwOWMwNWFkNDViNWYwYmRmNzE4OTFjMGI4MGM5OWNmZjcxZTY4ZTk3IGxlZ2FjeS10cnVuaworODE3MjUgMDljMDZjYTI3ZjdmODQ2Y2VkMzgzNjBhOWM2YjVlYWNmYTUyZDkxNiBweTNrCis4MTcyNiA0M2U5YTNlNjE3OTZlNmQ4ZDAwMmQ2MTJjMjM3ZTM2ZDJmNTg2MWNiIHB5M2stY2RlY2ltYWwKKzgxNzI3IGNiNTBkYjk0MTJjNzA0YzhlNzdhNDQwMTVkMTRiZGE1YmEzZWNjOTggcHkzay1jZGVjaW1hbAorODE3MjggYmU1ODgxNGUyNWQ3ODUxNTJkOGRjYjI4ZjliMTY0MjE4MmJlZDExZSBsZWdhY3ktdHJ1bmsKKzgxNzI5IDNhNTcxZmQ4YzNiZWEwYjFhMGFkMzE2OWU1NmE1N2E4ZjA2NzkwN2YgcHkzay1jZGVjaW1hbAorODE3MzAgZWMxNzRmNDJmMTViZDkwZGRmMmQxNTZhZDE3YWRlMGYzYWMxMGVjNSBweTNrCis4MTczMSAwZTNlYzQxODg0NWFkYzc1NTc4Y2Y5ZDFiYjdkODJmYTFiNTVjYjU1IHB5M2sKKzgxNzMyIGFhNWNlODYxNWM0ZmM3MDUyNmVjZDQ5MWRhZWY4NTVhY2ViOTFlMmEgcHkzay1jZGVjaW1hbAorODE3MzMgMmYyODJmOGY5Mzg4NDhkMzIxMGZjM2JiMjUwYjViMTE2ZTZhNGEwYyBweTNrLWNkZWNpbWFsCis4MTczNCA3NmNmNGFjZjdiNDNmMmQ2MjYyM2M1NTkyMDBjMWY4NmQ3ZTI4ZWIzIHB5M2stY2RlY2ltYWwKKzgxNzM1IDk4NmJhMGVjMmM1NWYzNTA1NWUwYzlhZmExNThjZTFmYzY1MzE1OGQgbGVnYWN5LXRydW5rCis4MTczNiA4ZmE0YTVlNWFmNTUyZGY3OGQ4ZTQzZWQ4MzBlYmUwMGIxOTU2ZTFmIGxlZ2FjeS10cnVuaworODE3MzcgMDZiZDRhNDQ4MzlkOTZkNTQ2MGFhMjM0NDJiNjU4N2I2NzE1YjBmNCBweTNrCis4MTczOCA3MmRjMGVmMzk0YWNiYjQ2NGViZmFjYjBkNWIxODhhMjYwMDI0YTEzIHJlbGVhc2UyNi1tYWludAorODE3MzkgZjg2YzZhNmUxNzQ0MTQ4MjIzNjhkMWUzMmM1YjUwYTY0YWMyYzUyMSBsZWdhY3ktdHJ1bmsKKzgxNzQwIDY3YzMzY2I5NjIyZGE4ZWM0MjY1NDZmMGNmNTQ2OTM0NTRjODBjMzggbGVnYWN5LXRydW5rCis4MTc0MSBlMTJkODdjNDU1OTE5OGUxNmVjNmQxMjAwM2EyNjkzMWViYjE0ZGIwIHJlbGVhc2UyNi1tYWludAorODE3NDIgMWMzMGY5ZWI0MGI4MjYwNzJiZDk2NjQ3NmY4OGM1OWExM2Y5NmRjZiBweTNrCis4MTc0MyA5MTI1MTdjY2RiM2ZkNmZiODY2NDZlYWIwZTUyMDgwZTQ4MDY1YTRhIHB5M2sKKzgxNzQ0IDM3MjFkNGU1YjJlZWQzNzQ4ZGQwZGMyNDllODk5NDlhMzBiOTI4NDMgbGVnYWN5LXRydW5rCis4MTc0NSAzNjYyZDJiNWFmYWFlZGRiNWRkZGM2Yzg4ODk3OTBmZjRmNWFkNzRkIHJlbGVhc2UyNi1tYWludAorODE3NDYgZDBkMDU3YjVkMzYxMzI4NWE4MmI3OGVlODc0MzgzZWM4YzRlYzk0ZSBweTNrCis4MTc0NyA4Yjg3MDE1NTEyNTM5YTA1YmQwYzc4N2Y1OTg2OTNkY2FmM2QwMTlmIGxlZ2FjeS10cnVuaworODE3NDggY2U5MjA5ODExYzBhYWNmYTE1MDNjODBlYTNiZGY0YjlmYzIxYWIxNSBweTNrCis4MTc0OSA0YTExNTIyOTgwYjdiOGU1MzY4MGViOWNmNWQ5MGQ4YTc4MjE3YmI1IGxlZ2FjeS10cnVuaworODE3NTAgYWYyYmRlNzJjZTYxYTJjMzI3MzA4NDY0MDEyM2E0Nzg1N2NiMDZhNiByZWxlYXNlMjYtbWFpbnQKKzgxNzUxIDVlMWIzYjYzNGQ1MzQ2NDkyYjdlN2RmMGQ1ZjQ4Y2IxZGFjYmYyYzQgcHkzaworODE3NTIgNjEwYmE5OWI4ZDBkYTNkMDJiZWYxYWE2ZjI3MjdkMjM3MjE5NmU2OSBsZWdhY3ktdHJ1bmsKKzgxNzUzIDJkMmIzODI0ZTM5YTUxMDQzMWQ2MGZkMGM3YjQ3OGE2Mjg0OWRmZjMgbGVnYWN5LXRydW5rCis4MTc1NCAzZDRmMWMyNTlkMmQwYWIwNDFkODU1ODNiNzhhYzhlOTNiMWE5NTJjIHB5M2sKKzgxNzU1IDljMzA5MTAyNGJjODQ4NmQ2MzQyYjFjZWMwNjhhMDBhYTI0Mzk4YTEgcHkzaworODE3NTYgY2EyNjNkMjAwNWU3NjExZTVjNjQ0YTA4NDg2OWNhZWI4MWExNGVlOSBsZWdhY3ktdHJ1bmsKKzgxNzU3IDBhNGIzM2U0ZWUyMzYzNjUyMjc0NmZhM2QyMjk0MDE3Y2EzOGJjNmIgcHkzaworODE3NTggNTAzMmYxZDVhMWUxNWMxODM1OTFjNDUxN2M3ZTQ0NjhmYzkwNDBiOCBsZWdhY3ktdHJ1bmsKKzgxNzU5IGMxY2FlZTMyNTQ0ZmI3OWY3NGZjOGYwYzg2MmRhNGVkYTE2YjQ1NDUgbGVnYWN5LXRydW5rCis4MTc2MCAxZDliN2QwNTJiY2M1ZjU3MjIxMDRiNzM2ODQ4Y2Y0MmI0NGRiMzMyIGxlZ2FjeS10cnVuaworODE3NjEgNzQyZDMyOWRmZGZkOTVjZjAwNTNiNTI0NjM0MzVhYjIxMGE4ZjZjMCBsZWdhY3ktdHJ1bmsKKzgxNzYyIGRhN2E4ZmY3NjQ5OTc2Y2FlNGY5YzFmMGVlN2I3NDkwZDhkMmI3ODEgcHkzaworODE3NjMgZDc4NzJkZGI0Yjk4MDgwOGFmNThiMDM2ZDMzZjEzNTcyZDc4ZTk1OSBsZWdhY3ktdHJ1bmsKKzgxNzY0IGNkYzdjYThkYjhkNmFiNDQ5NjBkZWNlMjM0Zjk2ZWU4YjI1MWU3N2UgbGVnYWN5LXRydW5rCis4MTc2NSBlMGRlMzM3NjdjMjk4Y2RjOWYwMTU2YzY5N2M5M2M1ZjUyNjliODVkIHB5M2sKKzgxNzY2IDE0MTBhYzYwYTc1NDEyMWY5MDBiM2UwNmE5OGU3MWQ3OWI2MDBkY2MgcHkzaworODE3NjcgM2UwYmMwZTE3ZjU2MGVkNGQ3MmZkZmE5YmJmODQwOWU0YmYzYWVkNyBsZWdhY3ktdHJ1bmsKKzgxNzY4IDI2YmI1MzhlZjZlYTU4MzMzMTM1MTMwMDUxYmQyYzJiNzg3ZTc4NDcgcHkzaworODE3NjkgZTFjYWVkNjk1NDQ4MWZjZTYxZDJjZmNkNjJkOGRjYzVhMTY0NzExOSBsZWdhY3ktdHJ1bmsKKzgxNzcwIDRkZmQ5MTc0MmViOWJiZTIxYjMzYTFkMWJlODI3NDE4Y2JkMzMwZTAgbGVnYWN5LXRydW5rCis4MTc3MSBkMTNkZWMxNDY4Yjg3NDg5YzA2YjQ0NTY0YWY1MmQyODVhNzQwYmJjIHB5M2sKKzgxNzcyIGNkOGVlMDE5OTg5ZDE3NTU3ZjY2ZThhYTUwYjg0YTFhOWVhMmIyMzAgbGVnYWN5LXRydW5rCis4MTc3MyBmZGRhM2Y0NjE0MmU0Zjk3YjE0NjRhMWFiNThlOTA3NDcyNWQwNmRhIGxlZ2FjeS10cnVuaworODE3NzQgMGU3YzdmMThjZDI0YjAzZWNkMmZjYzhkYzE5MDNhMGQ1MjQwNTBmMiBsZWdhY3ktdHJ1bmsKKzgxNzc1IDM4MWM1ZWViNTExMDM4ZDA5MWQ4ZTA4MDhjNGI4NTA4N2VkMmY2ODQgbGVnYWN5LXRydW5rCis4MTc3NiA2YTI4ZWYyOWIxMTAzOTQ0MzUxZTJkZGMxMzBhZDBiZTI5Zjc3MWZhIGxlZ2FjeS10cnVuaworODE3NzcgNTg5YjYxMWQ3YjRmYTI4YzcyMjdiNDY0ODE3NDUyOGUxZmIyYTUxYiBsZWdhY3ktdHJ1bmsKKzgxNzc4IDMwMWI3OGNjOTk5YjI5YmYxYTRjNGE2ZDU5NjE4NTVjYzdlY2FlMzcgcHkzaworODE3NzkgNjhmZDIyNTk1ZGI1Nzc2MDkyMzk4ZWVjNDE1MzUwMmZhNDE0NzYyMyBweTNrCis4MTc4MCBjNGQ0ZGRhY2Y5YTU5Njg2YTA3YjVhYjhiODkzODJlYjkwOGNiYjU1IHB5M2sKKzgxNzgxIDg0OTY1MDUwNzA1MmU2ZjQ2ZTQ3ZGNlMWJkNzEzMzdjNDczNTViMTUgcHkzaworODE3ODIgNDc1Y2JkZTFlZDE5YTdmNDBlMjQwMjk0ZjQyZGE1YTY3MjllODE1OCBweTNrCis4MTc4MyA2YTFkNmQ4Y2JjNTIxM2E2NDk0Mjk3YzI1YTRiNmIwMzY5MmY2OWIxIHJlbGVhc2UzMS1tYWludAorODE3ODQgMzE0MzM5NmE5NGYxZWUzNWViNmY2MjJlZTJiN2M4MDczNjQyYjMwNyBweTNrLWNkZWNpbWFsCis4MTc4NSA0OTViYjczYjFjZjFmM2E1NjY2MmZmZTJmZGU4M2UzZjYzZjdiNTVkIHB5M2stY2RlY2ltYWwKKzgxNzg2IDQzYTNmMmFjYzk0ZWMyZTE2MGUwMDhmNTE5ZmFjZTk2NjRhZGQ0NDkgcHkzay1jZGVjaW1hbAorODE3ODcgMzAzOGVhYzQyZjdkYzdlNGRkMDg5YjUwYTdkODEwZDFlNDZmZWRiMSBweTNrLWNkZWNpbWFsCis4MTc4OCBmNmRhZjUzMGY4OWVhNjNkYzZlNjE0MDcyOThhYTczN2FlNjNkZWJmIGxlZ2FjeS10cnVuaworODE3ODkgZWQwY2EzODkyMWM3Njc1MzE1MzY4OWNhYzRlZjU0MjMxZTRkODg3ZSByZWxlYXNlMjYtbWFpbnQKKzgxNzkwIGRmOGRjOGQxZDU3MWM2ZDAwNTFjMTZlNmExMGY5ZWI1ZWI2NmExMTkgcHkzaworODE3OTEgNzM0ZmVkNTYxM2FlZmE5NGNmMzRiOTBhZTllNTlhOTBkY2Q1MGZjNSByZWxlYXNlMzEtbWFpbnQKKzgxNzkyIDlkNDliNzQ0MDc4YzY1ZGY3YTE2OTJkYzBkZThlNTRiN2Y2MDJhN2MgcHkzaworODE3OTMgY2VmMzc0YjE0ZjViZWU1MzUwNzIwMjBhOTQxZDQwZmNiYTlmMDdkMyByZWxlYXNlMzEtbWFpbnQKKzgxNzk0IGMzZjJlZDRkOGU2NWVjZWE0MWRlZGIyYWE1MmQ2M2ZjNTc0NzZlNTEgcHkzaworODE3OTUgYzMyYjAzOGUwMDIyZTZlMzQzZTM1Y2I2NzcyNzZmN2EyMmZiZjBkOCByZWxlYXNlMzEtbWFpbnQKKzgxNzk2IGVkMjZlYTc4NTM2YmEzYjliNzllNDQ2MjYzZjE3Y2RmMTBjM2Q3ODkgcHkzay1jZGVjaW1hbAorODE3OTcgZmY4ZWM5NGJlYWVhZDhlNzIzMTc1MzYwMDY5YjZlMzExZjIxY2M0MyBweTNrLWNkZWNpbWFsCis4MTc5OCBiMWI3YWY1MTgzZTM1YmNkMzc5ZjZhMmE2M2RmNTVhNGMyZTNkODA1IHB5M2stY2RlY2ltYWwKKzgxNzk5IDczNmZhMzZlYTgxZTIwMmRiOTkxOWQyMTllYTJkNmY4ZmExYWFhNDQgcHkzay1jZGVjaW1hbAorODE4MDAgYTIyZDg5ODg4OTk1MDFiNjM5NzU4N2ViMmVlOTJmYmU1MjkwMjk2MSBweTNrLWNkZWNpbWFsCis4MTgwMSA2ZThkY2I4ZTllNmJmYjk4NTEzMDNiMWYxMTZhNTFkOWZkNzMyYjE4IGxlZ2FjeS10cnVuaworODE4MDIgMmQ3NDMwZGVkZWMzODM2M2VhZjAwMzA4NGNhZTFkYTYwN2JhMDEwNSBweTNrLWNkZWNpbWFsCis4MTgwMyBmZTJhMGUxZWM5NWRjZjkwMWY5ZDRlYmRlZjUyYWJjMDUxMDcxNWI5IHB5M2stY2RlY2ltYWwKKzgxODA0IDBlZmExYWQ4YmI3NTA2YWIxNTcyMjkwNDFlZGYzYWNkZDJmYzE2YjcgcHkzay1jZGVjaW1hbAorODE4MDUgYjExY2MxZjFhNjk4YzUwOWExNTg4ODY5YzZhYmI2YzYxM2UxMDQwMCBweTNrLWNkZWNpbWFsCis4MTgwNiAwZDkzNDc5MzRjYzViNGE5MmFhMjY1NGU2MDU2MDQ0NzU1YTA0OWVhIHB5M2sKKzgxODA3IDYwMGMyMzEyNzIwN2Q4MjA2NTc2ODg5YjVlYTJiNWUxMGJjODZkM2EgcHkzaworODE4MDggZmQ4ZmNjYjJlZTkwOGNkNGZkNzBiYjdiMWMwMGUwMDczZWMyYTNiNSByZWxlYXNlMzEtbWFpbnQKKzgxODA5IDFhMTAxNmZhMDcyMzAwZmE2OTc5ZmNjMGZjZDA3OGRmY2RhYjYyZDUgcHkzaworODE4MTAgZTkzMmRjODg4NTE3YjFmODdmMzZjOTFmMzRiOTM0YmE1NzE0MmQyYiByZWxlYXNlMzEtbWFpbnQKKzgxODExIDljZTU1NjNlZWNmYjc5NDBkZWU5Njk4MjIwZjAwNTcyNTQzY2JjY2YgcHkzaworODE4MTIgNjM0MmQxNDY3YTRkNDQ4ZDI4ZmE3MzRhZDhlMzBmYTFjMTNlZmE3YSByZWxlYXNlMzEtbWFpbnQKKzgxODEzIGEyMTQ1YTA2YTcyNjhmMjAzMDkwOWI0MTY3ZmRhMmFlM2RiN2FmMDUgbGVnYWN5LXRydW5rCis4MTgxNCA5NWNjMWU2ZDAyNDY5NGFhNWZiYmVmODcxYjc0NDlmYzM5NWY5YjZjIHB5M2sKKzgxODE1IDUzODE5NmNmOTFmZjc4MjkxMzZkZWIzMzQ1MDQ3M2EzMmMwZDI0ZWMgcmVsZWFzZTI2LW1haW50Cis4MTgxNiAyZjYxZTNhMTQ2YjFjZGNlNDExYjk1Njc0NDUwN2M5NGZkNThiZGYyIHB5M2sKKzgxODE3IGY1Y2U1ZTFiYjIzYTIxMzZjZDhmZDAzMjliOGZhNzU5OTMxMWNlMTEgbGVnYWN5LXRydW5rCis4MTgxOCBmMmM0ZGQyMmNhNjFhMjEwNzVkYWY4MzI0MjRhNmVjMTI3MzJmNGMxIHB5M2sKKzgxODE5IDgyMjI4MGNlZTA0YjUyN2Y4YzI4YWU3ZTg1YzIzNWI1NWE3MGJjY2UgcmVsZWFzZTI2LW1haW50Cis4MTgyMCAyNmZhYzc0ZWJhYjMyOWUxZDFjN2E0ZGViZjY4MzIxYWJhZGY0YWEyIGxlZ2FjeS10cnVuaworODE4MjEgZmVjZDhmYjdiYmVmNWRiMDc3ZWQ3OTk4M2I2N2Q3NDQzZGVmN2U0ZSBweTNrCis4MTgyMiBiNDRhMmZlNTMxZWY1MWZhNzg1MDYzZDEzMGNmODVlOTk5YmYxMDJjIHJlbGVhc2UyNi1tYWludAorODE4MjMgZDM3OTdlOWRmZDJjMTk3NTg3YzBkMjY4MTY3NzQ5ZDk0MmM5NTAzYSBweTNrCis4MTgyNCBkZGRiOThlZjNiZTVlZjkwNjZkNTYxM2U2ZTI3NjMwNThlZWRiN2VjIGxlZ2FjeS10cnVuaworODE4MjUgZTVmMGIyN2JjMTc4Mzc5OGM2NWU4ZmI0ZTU3MWY4NWVmMjEyODU3MSBsZWdhY3ktdHJ1bmsKKzgxODI2IDgyNWY2NTQ0NWEwYTAxZWYxYTc1MGFlZGZjYTUyNWU2ZjZhZDk2YTMgcHkzaworODE4MjcgNWM2ZTc1YThkNjFkNTVlNjNmYzc5MzM3ZWZkYzdiZDg2NmU1N2ZjOSBweTNrCis4MTgyOCAzZTg2MjU0MDM5YjkwOTZmYTQ4ODY0ZWYxMDFkOTE1NzU3YjI0NmM3IHJlbGVhc2UyNi1tYWludAorODE4MjkgMjcxODE1OGM1OGQwMGZmYzc4YmI0Y2FmZTkwNjM5MTZkMDFlODRhOCBweTNrCis4MTgzMCBhMzYwZTExNDg2NmI1NTRkOGZmMWIxYWRjNWFjNGM4MzlkM2JjYjQwIHB5M2sKKzgxODMxIDRmNjEzMzJhZjM1ZTY5ZmJiMTRlY2I4YzcwNThhMmRkYjI4NDllNDUgcHkzaworODE4MzIgYjk1MTg2MDZjZGRjZTkxZDFhZTk3MDMzYmM2MTQ1ZDU3MzM1N2ZmZiBweTNrCis4MTgzMyBkMjI2NGY5YWM2MWVjZmQ2Y2YwODMzM2YyZGIzZjI3MzVmMDA0NGZjIHJlbGVhc2UzMS1tYWludAorODE4MzQgMzViNGMzNTZmMjRhNjI4MTJiZjg5MGViZWM2ZWVhMTM5ODk4ZjBlYiBsZWdhY3ktdHJ1bmsKKzgxODM1IDExNjZmYjdlZmIwN2E2ZTU1NGU5NWMzMzY2NDE5ZmUzZDc2ZjVlOWQgcHkzaworODE4MzYgZDVlYzI0M2NhYTEyMjRhZmI3NjRjMjQ0YmY0YzA0OTY5OTExNTljOSByZWxlYXNlMjYtbWFpbnQKKzgxODM3IGI1YWY1YzkzMTM1YjI0ZjM0MTQ1ZDY2YTc5NzRhMDZmMDQ5NWNmYTggcmVsZWFzZTMxLW1haW50Cis4MTgzOCA2NTA5ZjlhM2NkZTVhZTI3ZTA0NTdlYTI3N2JmNzk1OGY4NWNhN2E0IHB5M2sKKzgxODM5IDlmN2I4YjMyYjA3NGFhOTFkMzEzNTIxMjBhNDY5MTk4MWE3MDk5MGQgcmVsZWFzZTMxLW1haW50Cis4MTg0MCBhMDZhZDczODM1NTIzZjI0ODZmMDM2YjUwMTYzNWFlYjRhYmFhNTY0IHB5M2sKKzgxODQxIGQyODFlZDU5ZmYwYmU0ZjI0MDJmNGYxNjk1MjE0ZjY3YzEwNTk4MDcgcHkzaworODE4NDIgN2NjYzU1ODExNDEzMWYwOWIxNmVjZGQxZTZkYWJmYWRlZGI1OWQxMiByZWxlYXNlMzEtbWFpbnQKKzgxODQzIGQ5MjcwOGNmMWMxZmEzMzY0YjU2NDEwOTM2MjVlN2VlNTRjZmEyYTYgcHkzaworODE4NDQgYTI1YWQ5YzRhY2UwMDE4Zjg1MmJiNDM3NGVjMTU1ZTg4MzNhODllYSBweTNrCis4MTg0NSBkNDdmZTQxMzRlN2QxMWJmNDAzNjEwN2M4MmU2NWI3ZjMxNjUyNDczIHJlbGVhc2UzMS1tYWludAorODE4NDYgZjgzZjIwMWIxMjc2MDg0ZGE3M2NhZTVlZjdlOTgyOGM0YjQyNjkyYyByZWxlYXNlMzEtbWFpbnQKKzgxODQ3IDE5NjZjMWJjOTA0OGU0ZWVkMWEyMDEwYTVkMGUyMmY5MjY2OTkzYTQgbGVnYWN5LXRydW5rCis4MTg0OCAyN2Q5YmNjN2U2NjFlY2JkN2ZhN2ViOTg1Y2NjZWVjYjg3OGQ5ODQwIHJlbGVhc2UyNi1tYWludAorODE4NDkgMmNmZTE1YjNjZGY1NTJjMDc2YzViNjEyYWI1MTM5NWE4MzIzNTBkOCBweTNrCis4MTg1MCBiMmMxOTk1NjMzYmRjODVlYmMwZWRjY2ZhNzBjYjNjOWRlM2JjOTAwIHJlbGVhc2UzMS1tYWludAorODE4NTEgZDMyYjBlODBmYWFjZDFkMDc3MjUzNTY2MzhlNGE3ODJiMzQ5OTVkNiBweTNrCis4MTg1MiA2ZjM4NTUwMzg5MTliNjIyYjk5NGI4NzFiMjk1NGViODBlYzc3MGRmIHJlbGVhc2UzMS1tYWludAorODE4NTMgODY0YWM3YjNjM2Q2Y2VmM2NmNWEyYTYyODA2YWY1NTQxY2NmOTY0MCBsZWdhY3ktdHJ1bmsKKzgxODU0IGQ3MTEzY2FjZDQyOGI2MWI1ZDhhM2Q1OTdkNDZkNzUyNDZmMGEyNGMgcHkzaworODE4NTUgNmU2ODY2Y2VjMzdlYTJjMDA3Y2M5Mjc2MDM5Njg5ZTZjOWFiZjIxYyByZWxlYXNlMzEtbWFpbnQKKzgxODU2IDk2YTUxMzM4MjVkMjM2Njg4MTgxN2Q3OGFkN2U3ZGNjMzY0NjM5OTAgcHkzaworODE4NTcgYzYwNDAyZmMwNjZmMTBjMDNhNjVlYzA4NjhlNjE3ZTUwMjRiYjliYiBweTNrCis4MTg1OCBiNmVlMjA1Yjk0OThiZDBmZTczZmExOWYzODIxZWUzZDYzNTNlMWEwIHJlbGVhc2UzMS1tYWludAorODE4NTkgZjFhYWRiZWJjNTc3MjkxMjMxMjI4ZmRmNjJlODM5MjEyNzZmZWQ3NyBsZWdhY3ktdHJ1bmsKKzgxODYwIGJhMmYyZDA4NTA0YjA1MDA2ZjE3NWI0NTgxNDY2ZDM0NTA4MzExMTMgbGVnYWN5LXRydW5rCis4MTg2MSBjMTE0NWU2NjhkNzIwODY0NDg4ZGRjZTAwMTk1YmRhYzU1OTU3MzhhIHJlbGVhc2UyNi1tYWludAorODE4NjIgODY1ZTM0Y2Q3ZTViNzY5Mjk3Y2FkYWUwNzBjMGYxZTIwZDgzOWNmOCBweTNrCis4MTg2MyAzMzc1MjM5ZDQzNzBlMmU2NmQ4N2RiNDY4ODNkNjIxMmE3MmU2MTExIHJlbGVhc2UzMS1tYWludAorODE4NjQgMzI5YzEyOWUwN2I2OGFmMjYyNzlkNDhlOWNjZmQ4YzhjOGVlODg5OCBsZWdhY3ktdHJ1bmsKKzgxODY1IDhmNThiOWU1OTY2ODhkNDJlNjY3YWNlNjRlY2QzYzBhZjgzM2RhMzQgcHkzaworODE4NjYgYTJlYTFhMjMxODZiMDg3NjcwMTY4MDgxMzk2MTVmZTZhZTQ5MTdhZCByZWxlYXNlMjYtbWFpbnQKKzgxODY3IGYzM2U0NjRhOWE2MGFhOWYwNDk3OGM2Y2YwZjU1N2ZlYzA4ZDYwZTcgcmVsZWFzZTMxLW1haW50Cis4MTg2OCA1YmY3MzM2ZWEwYWFkODliZDI0ODIyMGMyOTg0ZDkxZDc1MTdlMmVkIGxlZ2FjeS10cnVuaworODE4NjkgNzdjMGNhNjlkNTE4NGQ4OTIyYzVlMTdiYzc1NTU2M2FlNmNiZjcxMCBweTNrCis4MTg3MCAxNDI5YWM2YmViYzNmOGQ5YTdhZDE3MGQ5MTIyNzUyNDU0YmY4NjM3IHJlbGVhc2UzMS1tYWludAorODE4NzEgZGRiNDdmZDYxMmE2NzAxYjM3ZDVjZjM1NjRlMGVhYjAwZDM1ODRjYSBweTNrCis4MTg3MiBlMDg3MTYyNTczYWNjNjc2OTI2ZjJlOGZiZGJiMTdiNGRkMmJiNzc4IHJlbGVhc2UzMS1tYWludAorODE4NzMgZmU1ZWQ3MDI4M2VmZTYwOTQxYTdlYWMzNTQ4NDE0ZTMzOTFkMjA1OCBweTNrCis4MTg3NCA4Y2ZhMGRjMzhhYTc0MmI5ODAzOTE4NGEyNmM1MGZiZmMxZWViY2JjIHB5M2sKKzgxODc1IGZmNTBkNDVlMDYxODEzNTMyZDNmNjA3NjQ4OTdjNjc5OWQ4Y2ZjMmEgcHkzaworODE4NzYgY2QxMDI0MjgxYjczMmJiODQ4ZTA5YjFlZjA0ZTZlNGZkYjZiMDYxNCBsZWdhY3ktdHJ1bmsKKzgxODc3IGYyOTQ0NzNkODc5MzE1ZmIzMjZiNzY4ZTdkZTQ2ODgxMzUyZjNkMWUgcHkzaworODE4NzggN2Y1NDBmZTc3NWZjY2UzNWRiN2QzNmViODY1ZjU5Njg0Y2JkYjRiZCBsZWdhY3ktdHJ1bmsKKzgxODc5IDVmZTRhZDViNWFiOWViNzJhMmZkODMwNGFkZmRhNzJmOWQyZjJhMmUgcHkzaworODE4ODAgZGJlN2FlNjY2Y2UyMjlkNjk0ZThhOTY3MDkxNzE4NDY3M2I4YjAyOCBsZWdhY3ktdHJ1bmsKKzgxODgxIDBkMTY2ZTU3ODg0ZGY0MTdkYTgxOGYxN2FmMDk4Y2I3NjUyZTQ3NGEgbGVnYWN5LXRydW5rCis4MTg4MiBhODg3MmI2NTA1Nzc2YTY0ZDBmMjY4ZDA0N2ZmNmRlYzRmNzYzNzEzIGxlZ2FjeS10cnVuaworODE4ODMgNzJmNzc0OTAzNzcyMDE2Y2ZjNzQzNmYxNzRiM2JmY2I0OGEzZWY2ZiBweTNrCis4MTg4NCA5ZTEyYzY0OWQzMTI3NWYyYzFjNzk0YzFmYTNiNGI3OTRiY2Q3ODg0IHJlbGVhc2UzMS1tYWludAorODE4ODUgYWViNDdkMzBmYmE0ZTM4ZGExZThmMTIyMWU0ZDA2MjA0MjM3MWUxZSBweTNrCis4MTg4NiAwNzY3NjNjNjY3Zjk1NjViOGUyODI5MWVlZmE3YzQ3Y2U0ZmIzYzU0IHJlbGVhc2UzMS1tYWludAorODE4ODcgOGMzYTIyMmZhNmQxNThmNWZiYWViYTNjNjNmNTM0OTFkNzFhNmVlZiByZWxlYXNlMjYtbWFpbnQKKzgxODg4IDRjOTlkYThjMWU4MGU3ZmVjYjNjODU3M2U2N2IyMGQ3Yzk4ZWU4NzAgbGVnYWN5LXRydW5rCis4MTg4OSA3ZWY0NmE2MWRjOTdlYjc1MmY0ODA4NjlkZThkNzMxNWZiYWIzZDk1IGxlZ2FjeS10cnVuaworODE4OTAgMzQyMGRmYzU1OWJiYjgzZjQ0ZjZiYWI3MmM5OTE0YTExZTg2NTZkZSByZWxlYXNlMjYtbWFpbnQKKzgxODkxIDgzMTljYTBkNTQzNDkzMTBjNWVkNzY2MmQwZDdiZWM1Y2Y0Zjg0NjYgcHkzaworODE4OTIgNDQ2N2M0YzFkMzhlY2ZmZmFlYzBmMjI2NTFjNTgzOWQ5NTcwMWUyNSByZWxlYXNlMzEtbWFpbnQKKzgxODkzIDI2Njg1MzExZDMxMzI0MTBhNDc3MWQzYjUzY2M5ZjEyMGYxZWQ4NmYgcHkzaworODE4OTQgNGMzYmU3NGNhNTAxMjdmMDYzOGI2OGZkZTE4YzA1ODRjNGU3NGY1MSBweTNrCis4MTg5NSAzYmExYjViNGMxMDg4NTAwODRjMWJkZTQxYzk3NDRhYmVjMzI3MTFhIHB5M2sKKzgxODk2IGViYzRlODk2OTI0ZTJhOGM0ZTAwNzM2ZjAwMmJiNDA3ZmY2ZjVjNWQgcHkzaworODE4OTcgNmFkYzgzZDk5OWQwZTQ1MmQwMzY2YjlhNGQxMGI3ODZkNmRkMmM0MiBweTNrCis4MTg5OCA2ZmY4OGRjYTgxMzM5ODdjMTc4MTFkYjE3ZmYwODA2MTdmOWVkMjI4IHB5M2sKKzgxODk5IGNkNTk2YThmOTFmMzc4NjE4Y2NiNTE5YTI4MDFiNTk4ZDcxZWE4YWEgbGVnYWN5LXRydW5rCis4MTkwMCBiMDkxYTdlNDI4NWY5M2NiNWZhM2RmMzAxNGFmNjBkODM5Yzg2ZTE2IHJlbGVhc2UyNi1tYWludAorODE5MDEgMmE4ZWUxMWUzZTE4YTNkNDQ3MTJhNDkxNTQ2YzIwNGQ4YjcwZWQ3OSBweTNrCis4MTkwMiA3M2Q4MmIwYjZkZWU0ZGE1Y2U5ZGQ1YTg4NGRjZDJkNmI1YTJlNzA3IHB5M2sKKzgxOTAzIDUwYzIzOTE3NDk3NjE5MzllZjJhMWUzNmM1YTlhMjkxZDIzYmYxZjcgcmVsZWFzZTMxLW1haW50Cis4MTkwNCA3ZGI3Zjg0NDI0MTRmYzRiODdhZTI5ZjZiMDE2NzQyZGU3ODQ4ODZkIGxlZ2FjeS10cnVuaworODE5MDUgOWRhYzU4MTYzYjc5OTlhYzUzMDk3YTc3Zjc5YTI4YmMzMjcxNTliNCBweTNrCis4MTkwNiA2NjE1MTlmZWMzYjg2ODhmYzc1MDg1YTdiMTlhYjAzNGNiNmYzNTgxIGxlZ2FjeS10cnVuaworODE5MDcgOTgyNDU0NjRiNjY1NGEwNWRhODU0MjIzYWE5MWMyYTJiNTQwYTRmZSBsZWdhY3ktdHJ1bmsKKzgxOTA4IDc1NzYyNjBkMWI2NTQxNTAwNTgyZjJlOWQyM2MwNzI4NGEwNzEwMzIgcHkzaworODE5MDkgMjJjMDQ1ZDFiYzhjY2Y5M2NmMmE0MzAxYjQwYTEyNzIyNDlkNzRlZiByZWxlYXNlMjYtbWFpbnQKKzgxOTEwIDhkNWRkMjI3NjY4MDU2NGY3MzY1MGUxNjRmNzlmOGFiYTBmMzFkNGIgcmVsZWFzZTMxLW1haW50Cis4MTkxMSA4OGFlYzUxMjQxODVkZmU0MTgyMWVmODE1NTkwYTdiMjMzM2I1OGNiIHB5M2sKKzgxOTEyIDQ0ZGM5ODUwMmFjMzIzYTVjZGM5MTU3YWRhOTZjYjE5OWE4NjM4NjMgcHkzaworODE5MTMgYTY1M2UzMDYxMDhmNTM0M2FjYmU2Yjg2NjRlNjEwM2ZjM2I2MjZjNyByZWxlYXNlMzEtbWFpbnQKKzgxOTE0IGJkOGExZmQ0YzMxNmYyMGRlYzUzZmY5MTg1YTE2Y2QzYWJjOWJhZWIgcHkzaworODE5MTUgYzhiYzJkOGU5YWUxY2ZjNmI5MDQxZmVmNzBhN2I3MTAxMDI3ZjllMSByZWxlYXNlMzEtbWFpbnQKKzgxOTE2IGY1MmFlZmRhYjE4MjBlNjhhMmU2NTIzZmM2ZGVkMDQ4M2QxOGVkM2MgcHkzaworODE5MTcgMmIyZjU1M2YxY2U2MTEwNTg0MDRmMWM2M2EyMTViZmMzMGFmOGFiZSByZWxlYXNlMzEtbWFpbnQKKzgxOTE4IGY2MGFhZjk5YjgzNmJmNmVlZTE4MTY5OTdjNDA4NjZhMWU3NjVkNTYgcHkzaworODE5MTkgYTI1NTFiMzBmMDQ5NjQ5ODUzZDQxODE4NGQyOTc2YzJiYzMyMDg3MCBsZWdhY3ktdHJ1bmsKKzgxOTE5IGZlNmJlMDQyNmUwZDM1M2RiODRlYzg2OWE1YjAyZGJiYTZjM2Q0YTUgcmVsZWFzZTI2LW1haW50Cis4MTkyMCAwMTY3ZjkxNzIxYTg0YzYxOGZlMjNhOWNjNTY0ZjA1OGFkMjliMDQ1IHB5M2sKKzgxOTIxIDg2MjQ1ODI4MDlmOWM3MmQ0ZTM0N2RjNWE1Y2Y5YzgzMDJhMGI4OGUgcmVsZWFzZTMxLW1haW50Cis4MTkyMiBkOTI4MjA2NWY1YzllYmMyNGZkZWM3MDMzNWRjZWIwNmI4Y2UyYTM3IHJlbGVhc2UzMS1tYWludAorODE5MjMgMTM3ZGE3Y2U1ZThlZDFiYjdhZjRmNzQ2NmY1NThjYzhhMTQ1NjkzNSBweTNrCis4MTkyNCA3MjE2OWZmZTMyYTAyY2UxZGVmNzRkZjdhMzAzMGFhNjQ0NWZhNmM1IHJlbGVhc2UzMS1tYWludAorODE5MjUgNmVhYTc5YmUwNDQ5ZmQwNGY2ZGRhN2IwMGFhMjE4NTc5ZDkzNGVjYyBweTNrCis4MTkyNiAxMDMxOTIxN2FmNDQzMGRmNGZlZWQ1YzFlN2UxZWI2MjZjYTUzNjQyIHJlbGVhc2UzMS1tYWludAorODE5MjcgMzAyMjkwNGY5OTcxMWJiOTdlMjcxYzlmMDAwMjFmNWNmZWNmMjI4OCBweTNrCis4MTkyOCA4MTY5ZjMzZjIyNjg4ZjI0YTJhNDZiNmRmM2U5Y2E0OGJhMDBjNGIxIHJlbGVhc2UzMS1tYWludAorODE5MjkgNDQ0YzAyNWUyOThkYTM2OTZlZjA5MGI4YTViNDJhYThiMzQ4YTdmYyBweTNrCis4MTkzMCBlODBkYWIzZTkwOWY3YjMzYjkxM2NiYmJkZGQyNjcyZWYxNjUwZDg2IHB5M2sKKzgxOTMxIGExMGE3Y2U5N2Y0NWE3YjQ4NWE2NDdmOTExMDcxODI5OGE3YmVlYmYgbGVnYWN5LXRydW5rCis4MTkzMiA4NGRhYjI5YmRlYTcwYTM5MjMxODQzOGM5MTc2NmViZTk0OWE2OWRkIGxlZ2FjeS10cnVuaworODE5MzMgYzJiOTIzODM0ZGVhNzVkZWFlNWEzNjljYzYzZGU4YmFiNjMwZjljYiBsZWdhY3ktdHJ1bmsKKzgxOTM0IDYxZDRjYzY3ODE2NTVkZTk5OWM2YjhlODE3NTc5MzhkZWQ5ZGJjOTggcmVsZWFzZTI2LW1haW50Cis4MTkzNSA4MDExMGZkNDMxOTExOTI5MTk4Njk1ODY0ZTlkNTMxNGQzMjI5OTFiIHJlbGVhc2UyNi1tYWludAorODE5MzYgNmNlN2ViY2Y5MzU4ZGU1Zjk1NjMyNTFhZTNiYjljZDlhMTU3Yzk2MSBweTNrCis4MTkzNyA1MmViMGMwOTNiNjg4N2I5ZGU4NjVhYmM2OGFlNTc1YTA4OWRmY2E2IHB5M2sKKzgxOTM4IGE0OTBhYTMwM2Q4YWRkZmI4MzAyMDk1YzdjMDg2MDQ3MTEwMzU0NGUgcHkzaworODE5MzkgNGU5ZGQ2ZDgwMDYzODBkZGJmNWQ5ZTk4YjU1NTMxYWZhYjU0OGJmMyBsZWdhY3ktdHJ1bmsKKzgxOTQwIDMxZjAxYzg4MWM0NjBmMzZjMDY5YWIzM2ZiNTdhZWYwMjgxMGJjYWEgbGVnYWN5LXRydW5rCis4MTk0MSBhY2ExM2E1ZDYxNDRkMzhiNjg2MjZhODg5OWI2ZWEyYTZhYmViNTE4IGxlZ2FjeS10cnVuaworODE5NDIgNDFlZDU4ZWQ1YzkzYmFjMWQ2OGU1OTYzYTRjY2ZhOTY1ZTlkMmNhYSBsZWdhY3ktdHJ1bmsKKzgxOTQzIDhmMjdiNjFhNDBmYTk5MDUzMzFhNzMwMzljODgwNTcwYmZjMzVhN2YgcmVsZWFzZTI2LW1haW50Cis4MTk0NCA2MDZiYWQ1ODQzNDQ2NGQzMWNhMDBiOWFlOTMxNzkwYWQwMGYyYjczIHB5M2sKKzgxOTQ1IGRiNTUxNjdmYTVlNzk4ODhlNzdkYjQ3NzRjOTU3ZTg3OWFkNWUyOWYgbGVnYWN5LXRydW5rCis4MTk0NiA1MTYwMDQ4ZDUzNjE3MTEwYzE4M2IzZjhlOTA2YjQxMThlYzdjNjcyIHB5M2sKKzgxOTQ3IGJkODZiYmE1ZWQzM2EwMWViMzM1OTViYTliNmExMzM5NTNiN2NmNjEgcHkzaworODE5NDggZTU1ZmFkM2Q1YWU0ODRjNDFjZDE3MmU4YWE5YTgzYzI0NGQyN2QzNyBweTNrCis4MTk0OSA5NTUwZWRhMWMwOTY0ZTY0Y2I2ZDc2MWU4MzFmNWNjNGZlYjU1NmJiIHB5M2sKKzgxOTUwIDliMzMzYmYwOGQ0NWY3NWMwYjY5MWMwMGE4MzViN2U4M2ZiZGQ1ZWEgcHkzaworODE5NTEgNDRjYWM1YzU2NWI3ZjA5OTkzMzY3NWVlOWFjNjg0NDUwOWZjYzIzMyBweTNrCis4MTk1MiBkMDY1NzdkYjcyNzg1MmM1MGJiYTQyOTZkOWQzODJjMGJkNzM3ZDY0IHB5M2sKKzgxOTUzIDczZTUzNTRmOTJlNzE0MjhhY2MxMzE4YjhlOGQ0NDc1NzkyNDJlOWUgbGVnYWN5LXRydW5rCis4MTk1NCBlMGM0ZGFkZGZjNTQ2OWNlZDA3NzkwZDFiNzc5MDc1NjlkM2RmMGU2IHB5M2sKKzgxOTU1IGI5MGUzMzVhNjA5YTk3OTFjNWQ5NjAyNmM4NGRlNWY1MDQ5Zjk5MjkgcHkzaworODE5NTYgOGJjMGJmMjIwMTRkODMxYTg0NGI1MGQyODVkOWY4N2JmNjNkYmQxYyBweTNrCis4MTk1NyAwYTU1YWRlNmQ4NTc4MWMzOGM4MjBiZjc2YjIyNjYwMzU5NzY4MWQ0IGxlZ2FjeS10cnVuaworODE5NTggMGIyZTBiNjgzOWEyNzM1YmM4ZjIxYzlhZmY5M2QwZmYzZjExMmQ2OCBweTNrCis4MTk1OSBiMDBjNzM2NTU1ZGU3MGUzY2QyZWFhNDdjMDJhYzQ3YjI1NjdjOTBiIHJlbGVhc2UyNi1tYWludAorODE5NjAgMGY1ZDExNGVmZjAxNDQyYTNiMjEwY2RmZmVjYzhjY2U4NzIzZmMwYSByZWxlYXNlMzEtbWFpbnQKKzgxOTYxIGU1ODViMjQzMWM0YTU0NjlkNWI0OThiNjJhODBjZWE4ZDU3YWIzZjUgcHkzaworODE5NjIgNTI5NWI0ZGJmMzU1YTg0ZDY5MTA4NDg3ZTE1Nzc1NzU1N2UxMDk3MCByZWxlYXNlMzEtbWFpbnQKKzgxOTYzIGI5ZWNkY2VjMGZmMGQ4YmRjMWY4OGU0M2RkMjUwZGNiYjI2ZjMxNmEgbGVnYWN5LXRydW5rCis4MTk2NCA4ZjEzN2E1YzQxM2NhMzE2MjdlOWY3OWZkZWU3OWUzMDUyNjQ2YThkIGxlZ2FjeS10cnVuaworODE5NjUgN2FjNjE0OGU2YTdmODRhNmJkZWU0YWU2OTVhNzIyYzM0MDAyMGYzOSBweTNrCis4MTk2NiA0ZWFjMTM1YTMzYWZkNjk0ZDM3MDM4NTJlNDNkZGViY2Y4YTk2YmEzIHJlbGVhc2UzMS1tYWludAorODE5NjcgY2ZmMGE5MjMxNDBiZThlYzhiNzg4ZmI4YWZlNmU2YzExN2NhMGEzYyBsZWdhY3ktdHJ1bmsKKzgxOTY4IGQwNjRlODkzNGY0ZDBjY2UwNGM5NWNhNWE4MGY5MGU1ODFmYTVhNDggcHkzaworODE5NjkgMmU1MmZiY2FhYTczYmRkYzIzMTE4MTUyNTI5ZDUxMGUxYWIzYzU0MCBsZWdhY3ktdHJ1bmsKKzgxOTcwIDEzODNiODRiMTdhY2Y3NmNlNTFmNTczMDBhMTcxMTk5MjRiOTM0NWEgcHkzaworODE5NzEgZjgyZDk2YjlmMDNlZGFhYWRlY2I0NWViNGFlMTUzMjdkZGZjMTIzNyBsZWdhY3ktdHJ1bmsKKzgxOTcyIGIwODRjMGE5MzRhN2U5NjM4MTc0OWQ4ZjVmN2NhY2IwNmU1ZGFiZmUgcHkzaworODE5NzMgYjMyYTI4MTZmNmU5Yzc4NDQzOTNiZGY1MTJkOTg3NGNlMmJkZWM1MyBweTNrCis4MTk3NCAwODQwYTI4M2FmNWY5YWI2MmVkYWVjYjcxOWQ4ZWZkODM5OTJkNGY4IHB5M2sKKzgxOTc1IDljYjkwMTY5YjI1YTg2M2RmNzJkZjhmNWY1OGU3NTIxYmE2ZTUwMTIgcmVsZWFzZTMxLW1haW50Cis4MTk3NiA5OWI4MGMyODhmYWM0NWVlZDBmODIzZTY3MmVlNmI3NWM1ZDVlMjI1IHB5M2stY2RlY2ltYWwKKzgxOTc3IDkyYjhiNjc4NDRlMTAxN2Q2NmU2OWY4M2U2NzhhODZiM2E0ODAwODggcHkzay1jZGVjaW1hbAorODE5NzggODY3Yjk3NmUzNDlkYWQyMzk5N2E4NzgxNTUwMGIxM2RhZmU3ZWMxYiBweTNrLWNkZWNpbWFsCis4MTk3OSAwNzIzZWUxOTU0N2I5NTYxNWMwNmRjMTE1NDU3YzcyYzNiMDVhYTUyIHB5M2stY2RlY2ltYWwKKzgxOTgwIGQ3OGIxNTgwODcxMGE3ZDY3NWQ4YmFmOTQxMjIzOGUwMWZhY2YxMzkgcHkzay1jZGVjaW1hbAorODE5ODEgYjc4YTkxOGI3YTBlYzY0YmU4OWMyYzhkYWNkZjBmYTk1YWFjMTZkNSBweTNrCis4MTk4NCA5YmU2MGMxODUwMzJhNjVlMjJhNTk2MTg5NDgyYjQ3NzI3YzdkMDFlIGxlZ2FjeS10cnVuaworODE5ODggZWY1ZGU1NmYyNGM2NGNkZTA2MDRiM2Y3MTE0NWYzMzdiMjIyNWYwMSBweTNrCis4MTk4OSA2MjNiNzM4MTE2ZDI0MmYwYmJjYmZiZGM1ZDU5MTZlN2EzMjBmMzNjIHB5M2sKKzgxOTkwIDk1YjVjYTI0NjhjYzYwYTJjZDI0NjRiM2UzMzc5OTVkMjFmNDcxYzYgcHkzaworODE5OTEgYTU3ZDU5Y2NjYjhmYTVjZWIyYTNhMjNkMzE1Nzk4MTNlMDFhNjMzMSBsZWdhY3ktdHJ1bmsKKzgxOTkyIDZmOWIwYzI0MDE5MWRmNzNjMmYxMDU3YjE5NjIxNmI2MGU5MmRkMGYgbGVnYWN5LXRydW5rCis4MTk5MyA4ZjNmY2MyMzk3ODFiNzY0YzM1MTNiMWFmZmFhMGRmOGIwOGUzMWNiIHJlbGVhc2UyNi1tYWludAorODE5OTQgMGViYzcyZTM2NmExZDk2ZmI4ZThjYzY5NTVmNzI4OGE5ZTg0Y2NhZCBweTNrCis4MTk5NSA3YWMwZjY3ZWJiYmE4OTRiY2Q5YjBiNjVmYTkzYTYzNjdiNmZiNTg2IHJlbGVhc2UzMS1tYWludAorODE5OTYgOTFiYjU3MmI3NTZlMDZkNDc2ZDZiZGEwMGIwNGZjOGU5ODA2MzM1NiByZWxlYXNlMzEtbWFpbnQKKzgxOTk3IDNlYTY2ZTNhMTI5YTRmOTdiM2I3YzZjNDg1ZTcyN2RkNDVjYzA0ODggcHkzay1jZGVjaW1hbAorODE5OTkgZTQzYWI1MmI1N2IyMzQzOWU5ODhlY2YzNGI0ZDc1ZThhNTBjNTIzYiBweTNrCis4MjAwMCAzMmM0ZmZmNDQ1YWQyY2ZmZjA5N2FjOGZlNGYzMzlhNTMyNTBmMTgzIHB5M2sKKzgyMDAxIDQ5ZGQ1OTkxNTBjYTcxNWMyMWUwYTc5YWFjYWQ2OWM2ZmU5MTY0NWEgcHkzaworODIwMDIgZmE4OTc3MzI0ZWQ4NjcwYWIwYWUxN2Y1OWMyZjE5MzI1NGFjMzc4YSByZWxlYXNlMzEtbWFpbnQKKzgyMDAzIGYxOWFlNWNlYzhjZTc5ZjE2MDVmOTNiYjFiNWY1NjNkOGFiODBiM2IgcHkzaworODIwMDQgMzU0Yjc1MWU0NmQ2MWNiNzFmNTk0MGIwMDg4NjI0OGFhZWE3NWRkNiBweTNrCis4MjAwNSAzNTZkMGVhOGVhMzQ3ZjBkN2QwYWRhYTc2NTE2YTI1ZTZjNmM5OWYwIHB5M2sKKzgyMDA2IDI0NjZhZmVkNmY1ZWNlNjllMTUzYmE2M2Q3MmVhZDdlOGMwZTM1MTEgcHkzay1jZGVjaW1hbAorODIwMDcgYjg0ODg3Mzk4NzllYzk4YTUwMTMzZTE3OGRlNzRiNDBkZjhlMmMyZiByZWxlYXNlMjYtbWFpbnQKKzgyMDA4IDgxODU1Y2VkYzE1NmY1OThjYjY5MzhkN2Q4YWU1ODViNTFlMDc3NjggcHkzaworODIwMDkgNDhmNTg1OTc2MGVmNGEzYmIyODVmNmI3ZTZmODNlNzkxNTQzMzU1NiByZWxlYXNlMzEtbWFpbnQKKzgyMDEwIDhhODdjNWFmYWRkYWJlMzE1ODY2MTBjZDY5NWZhNDgxYmUxMTA3NGUgcmVsZWFzZTI2LW1haW50Cis4MjAxMSA1ODQxMzY3NmJlZmI2NGJjMzA5NDdhN2U5MjRiZmI1ZWNhMmQzYzUyIHB5M2sKKzgyMDEyIDIyZWE2OTZhYTc3YWM2M2U1M2QyMmI2Y2RkNDQzNDkxYzMwMTRlZWMgcmVsZWFzZTMxLW1haW50Cis4MjAxMyA3YmM4MWY4NTM1ZWE0MTYwNGI0ZmQ5YTk3ODk1MDg2ZGNiMzQ3M2M3IHJlbGVhc2UyNi1tYWludAorODIwMTQgYWRiOGM4MWNjMzlhNDRmMTMwMmY0ODkyNTZiNDYzYmFjYjlmZjUyNyBweTNrCis4MjAxNSA5ZGM4NGM0MjRlNDEzNjU3YWY4N2YzODc5MTZjZDQ3NWI0NmVlZjBkIHB5M2sKKzgyMDE2IDQyMmExODNlMGJiZGNjNzJhODA2NWQzODFlOTY0YjU3OGQ3ODBjMzMgcmVsZWFzZTMxLW1haW50Cis4MjAxNyAwMDMwYTc0NzA2NjYwMTE2YmRiMmQzY2MwNTRlOTdmMGRkZTRiYjJlIHJlbGVhc2UyNi1tYWludAorODIwMTggODRmZWZiZjFkNmMwODBiMmIxNTEzMWMyZjg0ZWI5NDk2MjUwZTZlMyBsZWdhY3ktdHJ1bmsKKzgyMDE5IGU3NTM1NjJjYzAyM2MwM2YxYWFhMzUwODI0YjA1NWNjZWUxMTRiYzggcmVsZWFzZTMxLW1haW50Cis4MjAyMCBjNDFjYjQ4NGYwOTA2Y2UwZjZjMzc2NTM5ZGE3MzZlNDM1ZTBjMTJhIHJlbGVhc2UyNi1tYWludAorODIwMjEgZDMwZjZjNTlmODEwNzU3NjkxZjUzYWUwZDlhZDkwN2I1NzI3OTE3MSBweTNrLWppdAorODIwMjIgZDMzNzdlYmQzZWU1NGZmZDc3ZmFhYmYyNTEwYTZhMjFjMGE2MDM4NiBweTNrCis4MjAyMyBiNDIzNzcwM2EwY2M1MTQxMWZlZWFmMDc5Y2M0OWZkMzFkYjY4ZTQxIHJlbGVhc2UzMS1tYWludAorODIwMjQgODExMzVjY2Y1ZjU1ZTNlMjBkZjZmYTlkNTBlMzc1ZTcyNzM5YTVhYSBweTNrLWR0b2EKKzgyMDI1IDU1ZTI0YzI0M2UyZjFhODdjYjljMDRhYWYzMDZjYWIzOWI3Mjc0NjYgcHkzay1kdG9hCis4MjAyNiBjNjg0NWU4MzA4NmY1ZjgzMTU4OTc4NGZkMmQ0OTA5YzE5YzZhZWYxIGxlZ2FjeS10cnVuaworODIwMjcgZGEzYzQ3OTRkNmRkNmM1MTk5NzZmOTg0ZWNmYTZjOTc2ZjJhMTg2YiByZWxlYXNlMjYtbWFpbnQKKzgyMDI4IDM0NmNlMjU1YTUyZmVmMWRlZTFjNmFmMWJjNDJkNzg1ZDJjYjA1YzQgcHkzaworODIwMjkgZTRkNTA2NDBmMDc3N2M0Nzg2ZjYxNDNiYmNkNDdiY2EwMTAzOTZjOCByZWxlYXNlMzEtbWFpbnQKKzgyMDMwIDczNTc4MmEyNzVmNTBhODU0YzdiNTE4YjZkYzU5MTJlMzY3ZGJmYmUgcHkzay1qaXQKKzgyMDMxIGYzNDEzNTUzZjhmNWVhMWEyNjkyYmRkNzY4NzU3Mjk2NjJmNDRiYTcgcHkzay1kdG9hCis4MjAzMiA4NTYyNzY5NTJlMDg2Mzk3YTUwNTdkMjY3ZDRiNTIyNGQzY2E1MTljIHB5M2stZHRvYQorODIwMzMgYmNjMGE5OTdmMzIxZmNhZTFkNGUxNDExNzVjZWRmNjU2ZmIxMzY3MCByZWxlYXNlMzEtbWFpbnQKKzgyMDM0IDZkM2IwNWE0MjliNWFjYTVlMmY1MGZjNDQxOWFlNjgwY2NhNzdiZTUgcHkzaworODIwMzUgMmRkMWZlNzA0N2ZmZDlmZDc2NmFmYmY1YWZiMjE2ODg2MjRmYTkyMCBweTNrCis4MjAzNiAxYjA4YTU0MTU1MWFhZDg2N2VjNTlmOGI0Y2FhYjMyZTRmZGFkOTAxIHJlbGVhc2UzMS1tYWludAorODIwMzcgMjgzZDk0NzJkZjRlZDNiN2E1YmY4MDA0ZjRmMWQ2ZTFiODMwMDk1ZiBweTNrCis4MjAzOCA4MDdjZGVhNDc4MTdiYmU3ODJlNzg2NzE0YTEyZDg5ZjhkMWFjOTI4IHB5M2sKKzgyMDM5IDAxN2U2MGFlNjA1ZjRiZTFlMjEzNjUyYWUwMTUzOTA5NWI1ZjJlNDUgbGVnYWN5LXRydW5rCis4MjA0MCBmNTg4OWYyYWMzOWJiMzhlMjI2OTA1MWQzMjU2MDlkM2JmOThmMzQ1IHJlbGVhc2UyNi1tYWludAorODIwNDEgMmJiMGEyN2EzZTM1YzQyN2NhMGZmYjM3MjU4OTM4YTcxZGI4ZTRmOCBweTNrCis4MjA0MiA4Y2MwZTFjOWJhNmQ2MDlmYjhhNTM1YjczZDA3YTM4MjVjYzFhYmU4IHJlbGVhc2UzMS1tYWludAorODIwNDMgY2I0OTk3YjZhYThiZTY5OGI5ZmE4OTM5ZDE1YWFlMmY3Y2E1NmIzZiBweTNrCis4MjA0NCAyY2MwOWYwNjk1MGIwNDgyNWUyMzc2ZTNlMTBhZjgzNTQ1NTUyNzdhIHJlbGVhc2UzMS1tYWludAorODIwNDUgNGQyNTYzOWEzYjE0YmQ2YmNlMmQ4ZmM0ODBlMDBhNmExZWRkOTNlYyBweTNrCis4MjA0NiBiMWQ2Y2NhZDhlYWQ2NjY2NGYwNmIwYjk3ODliNDgwZDA3YWFiNGUyIHJlbGVhc2UzMS1tYWludAorODIwNDcgODRlZDM0NDZhMjlhMWI4MzBmNmJhZTdkMGFmMzYwZDU3YTE5YzUyMCBsZWdhY3ktdHJ1bmsKKzgyMDQ4IDE3NjRlMGJlNDg0YzZjODJmNDAwYzlhMjZiMzVhODI1MzdkNWRhOWQgcmVsZWFzZTI2LW1haW50Cis4MjA0OSAyZmUwODAyYzQyYzc0NWRjZTcyYzVmZTA3ODA1ZjFmMzBiNjIzMDdiIHB5M2sKKzgyMDUwIGMyZTczZDg0NGQ4MjJiZDMyZTg0ZGRiYWE5MzBkOWI1OGJiNjZlYzggcmVsZWFzZTMxLW1haW50Cis4MjA1MSBjNDhkZGM5NmY0NTRhZTI4YjQyZmI4NjU3YmJlNWM1NzE1ZmU1ZDhjIHB5M2sKKzgyMDUyIDZiZmRjZDI1ZWVhNzBkZjAzZTNjYjEzMjZkZThjMzAwYWExNDg2NTIgcmVsZWFzZTMxLW1haW50Cis4MjA1MyA1YzBkOGMyODRjMzJkYzhlN2EwMjY5M2YyOTJkOGJlMGU2MTg3NWQ3IHB5M2sKKzgyMDU0IDZhOTk5MGVmNGE2ZjVlOTczMmEzOThiMWRhYjI3ZDgzMzkxYzMwY2EgcmVsZWFzZTMxLW1haW50Cis4MjA1NSA0NmFiNWU0ZGJhNmJhYzdkMWU3YmIyMGRiY2ZlMDAwNWUyOGE2NjNiIHB5M2sKKzgyMDU2IDFkYTc3MzNlOGYyNDczMWEwYjg4ZGJkNjkwNzgwNGNhMDJhMTFkYzMgbGVnYWN5LXRydW5rCis4MjA1NyBmM2RkOTMwNjY1YmQxNzkzNjMwODgxMzMwNGEyYzQwODRjNWJiMDkxIHB5M2sKKzgyMDU4IGRhMWFhZmE1NWFlMDIzOWVlNTI2ZmVjODRhNGM0MDQyNjZhMTMxY2QgcmVsZWFzZTMxLW1haW50Cis4MjA1OSA5MDdmNTY0NDc2YmU2NjllYmVhZWQ0MThlZmVhZDJlYmU2MGJmY2FjIHB5M2sKKzgyMDYwIDU5YzYwYTU5YjI3YTU3ZTdjNGUxNjJiNmJlZDI2NGRmMDJjNmZkYjYgcmVsZWFzZTMxLW1haW50Cis4MjA2MSA5ZDRkNGFjMGE3YmZlODExNzRhZjRkMDExNWVjZmQwZDRhNmFjMTkwIHB5M2sKKzgyMDYyIDA3NDQ5YjM2NzkzNTdkYjJlZWE5NmE4MzAyZGY4N2MwM2NiYTViNWMgcmVsZWFzZTMxLW1haW50Cis4MjA2MyBmYTgzMDM3MWM3MjQxNzRmYmExYjUzYTA5OTFmMGEzZDUxOGQyMTA2IHJlbGVhc2UzMS1tYWludAorODIwNjggNGQ2OWJkYjcxYzlhZDUxY2RjNjg2OTY0NTI2YzI1NmRiZjI3OGQzZCBweTNrCis4MjA2OSA0NjM1NjI2N2NlOGZiYjU5ZDliMDY3NTI4ODU3ZGE4MTAyZmFkNWE2IHJlbGVhc2UzMS1tYWludAorODIwNzAgZTVmNTAwOGZkNTZkNTBmNDk4MDNiNWU1ZGIyZjg5YmI3MGI5MjgzNyBweTNrCis4MjA3MSBiZjk0ZWI4ZmFmNjI1MzdmZDc0NDZiZTQzZDg5YzliMjJiMzUzNWU2IHB5M2sKKzgyMDcyIGVhMjUxMjliOTRmZWVjNTAwOTg0ODJjNGVmYTgyNWVkNzFkNTM2NTYgcmVsZWFzZTMxLW1haW50Cis4MjA3MyA5MGNjMjY2Nzk4YTI0ZmM1MGMxNWI3NjIxYzFiMzQ4NDg5MjAxMTY0IHB5M2sKKzgyMDc0IGM1NGRkNTc2ZGQwNTU0ODJmMWNjMTczMDQ0Y2U3ZWQwZDU4ZDYzNjEgcmVsZWFzZTMxLW1haW50Cis4MjA3NSBkYTU1ODQ2MWQ5YTk0YmI3ZWU5ZTc5ZmNjMmJjMGUyNGZlOGFlNzA4IGxlZ2FjeS10cnVuaworODIwNzYgZWY4YTJhYjI2ZTlmZWZlZmIzOWY1N2Y5ZmMzMjBhZjhmYjk0Yzk4MSBweTNrCis4MjA3NyAxZjBlMDc4MWY3M2U0NjFiMWE1OTkwYjE1YjFlYjU5Zjg5ZjM5ODE5IHJlbGVhc2UyNi1tYWludAorODIwNzggNWRlNTJlYjI1MmRhNzA2ZGEzZjY5NTRkNTBlMWU4NGE3YzEzYzBmOSByZWxlYXNlMzEtbWFpbnQKKzgyMDc5IGRkNzAwNTE0NWY2ZTY1ZjIzNmVhYjVmMjA4NTg3OTkzYjJiM2QzY2IgcHkzay1kdG9hCis4MjA4MCAxOGJjZjZjMmQxZTM3YjI4MTgxNGY0NDQwNTk0ZDhiYjdlYmQzNWE4IHB5M2stZHRvYQorODIwODEgZjY3NjdkZGU5YjI5ODliODdmZjA2MzE2NjBjN2E3OTY4NmE0ZTI1YyBweTNrLWR0b2EKKzgyMDgyIGI0YTVhODY5ZTFjNTlkOGFmMzU5OTlhMjY2ZThlZGJjODhhNjc3ZmMgcHkzay1kdG9hCis4MjA4NCAzYWZjN2Q4YTQ0NWFhNWFjOTVmMjE3YzUzODdjNjM3OWI1YzU3NTVkIHB5M2sKKzgyMDg1IDBkYTRjN2QxZjNlZjIzM2U1YTM0M2U2NGZkNWMyOTQ5ZGRkNTc3M2UgcmVsZWFzZTMxLW1haW50Cis4MjA4NiBiOTAxOWYwZGQ4OWQzZTE3NjkxMjUyZDEyOGYxMGE4MzVmMTBiZGFlIHB5M2stZHRvYQorODIwODcgNDI5YjMyOWEwM2Y4MzM0YTYyOGNhZGNmMmUzYTYzM2QxMDBmMmE0OSBweTNrLWR0b2EKKzgyMDg4IDM0MzAwNWM0YTRlM2Y1ZTFlMWRhMDY5OTk2MjY3MmFjNmY3MjIxNDQgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDg5IDQ0NmE5NjY4NThmMTQ4MWU3MDQ3YmYwMjdlYzI3NmU0NWI3MjJlZmEgcHkzaworODIwOTAgYzRmNWM3MzRkYTZlNGMxMzdhZDA2MjY5MzNhMDA4NzZjNTk4NDhjMiBweTNrCis4MjA5MSA1YTI4YzZjYjQ3NTI3YjlkNDc3OTNmZWJkOGZhZTA4ZDczNDkzNTM1IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5MiAwNjk1MzVlNTBhOWU0ZmRkNGRmMGRiNmJkZTZmZjkxMjU1ZjU5Y2M1IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5MyA0NjZjMTYyYzczMGMyMGNkNGRjNzZkMzRkZGFhYmU0ZjJmOWE2NzMzIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NCA4OWE0MmUwNzEzZGRiOWVlYjA5ZGY1MDEzMGIzYWJiY2I5ODQ5ZmUyIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NSBlZDA3NzQwYzc2NjdhZmY5ZTlhNzBmYTU1MWMwNTMxMWU3OTljOWRlIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NiA4ODBiZGU1YWI3YzU0MzQ1MzFjZDRkMzI2NzhiYzdlN2ZiNDYwMjBkIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NyBhYzVmNTUzN2M3M2I2ZGU0NzU0Y2U5MTRlMGNiN2QxOGQyOTQwZjVlIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5OCA4MGQ0ODAwNzc0MzM5ZWViNTJiZjY5YWQ2Yzc2M2FmZThmNmJlNzY2IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5OSBmNzNmYTM1ZjZmMDVkZTQ1YjVkYTY4MWRmMDkzNTMzZTRjOTQwNjU0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMCAzNWY4MDE1MjYyNzhkNGE0ZDI2OGEyNmRmN2M2OGNjYjAxZmI0OGU5IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMSA1Y2ZlMDVmMmE0ZTljNTZhYzBjYTM2MjAzODU1NWQ1MDMyY2Y5ZjJkIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMiBjZWMxYjU1ODQ1MTdiMDk3NTI3ZTM0YzgyNTk1ZDY5NzQ5MzJmNWQ3IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMyA4MDYxM2RjZjgwOTEwZDZkMGJhZTM5NzI5NTNlMDA1MzcxY2IxODA3IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNCA0ODNmMzYyYjhlYzMwNDM4MzJhNjExN2Y0NDVhNTAzZTg2NWE5NzAwIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNSAzMDYzMzZhMWNlMjkxMTcwYWUzODA0MzY0ZTRmZmUxNmZmYmJjN2E2IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNiBhNTZmYWE2YjhmYTAyZmQ2NjQ5YzExOWU2NWU1YmY5ZjY3ZTE4YjZiIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNyAxOTkxYTlhYWZmNWUzOTg1MTUyMjdlMjM1NDU2YzYyZTIwNzNlNjNhIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwOCBiNjE0NjQ3YTM0MDA1MmI3MTczZTAxMzQ1ZTI2ZGJhNWFiNTZhOGE5IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwOSBlYmFjMmViNzI1NWI2NTUzYjFlNzNkN2RkOGJhNTk5YTYwODQ4OGI4IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjExMiA5Mzg5NmEwOTQ2YzJlZjU4NGE5N2M1M2RmMDU5NDg4NjNhNzIyYjA3IGxlZ2FjeS10cnVuaworODIxMTMgNWM4NGZjYzFkOTA2ZWFlYzliNWZkNDAwMzVkN2I1MTkyMzE5ZjBjYyBweTNrCis4MjExNCA2ZDk3NDZjZDkzNWM2MGQ3ZjU5Nzc0ZjUyZTI0ZDgwMDhmOGJlYWU1IHB5M2sKKzgyMTE1IDY1NGU1M2U3NWNkMmIwMmNhYzM4MDA3MTE3MjFlNzcxZDBiOWU1NTMgcHkzaworODIxMTcgZWUzNWY3MTU2NzYxMmIxZTU5NzhkNWNhZjJiZTQwOTIzZmM0ZTU3ZiBsZWdhY3ktdHJ1bmsKKzgyMTE4IGM5MTUzOGMxYTdlNmMwNzc4ODA4ZDk5ODU4YzU3NzMwMjExOTQ3NzEgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTE5IDZhY2RkYjVmZThlMjFiZTZkYWMwODk1OGQ3MzAyNTliZjg4N2EwNDIgcHkzaworODIxMjAgYmRlZjQ1NGY3MjEyYThiYWJlMDBkZjZjOWQ5MWM1NzczOWVlNTNjOCBsZWdhY3ktdHJ1bmsKKzgyMTIxIDkyMzczNTEzNzAzMGYyYzRjOTA3MTI5YjEzN2QxNzgxMzFiZTg0OTYgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTIyIDNmMDljYzM4ZTk3ZTMwY2UzMzQxZGEzNWEyYTI3OTA4NWUxYTNmOWIgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTIzIDk2NWE0NGMyYjI5N2I5YjZjZTJjODc0MGViMTgxMDNmZGE5NmRkYTQgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTI0IDUzZDNkMDY4YmY0YzRiOWU3MjBkZWE4ZTVmMWE3OGE4YTIxODVjY2EgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTI1IDk4NjNiYzg2MzBhMzlkZDczYWE2ZTdkNjhiZjVkZWYyNjgzNmJiNzcgcHkzaworODIxMjYgY2UyMWViNWMxN2E1ZjMwM2NjMjc5YjA1NGM0MDRmN2Y3MDI4NWFkYSBsZWdhY3ktdHJ1bmsKKzgyMTI3IGQwMTRkMWY2NTgyMzE5NWMxMWFmYzMxYTJlYTY3ZGIyZWM1ZmRlOWEgbGVnYWN5LXRydW5rCis4MjEyOCBkZDg4MDU3YjI3YjFjZDlmNWJlOWJkZjFhYTQyNWJhZGRhMWIzOTg5IHB5M2sKKzgyMTI5IGYzZDQ1YzQ0M2IxMzc5ZTE4YmY3ZDhiNjg3MmZkMjBhNzI3Njg3MTcgcmVsZWFzZTMxLW1haW50Cis4MjEzMCAxYTg2ZDg0NWZiYzZmMzk0YWRkNmE0MjBjMjdmOThhODI1MGJjYjVkIGxlZ2FjeS10cnVuaworODIxMzEgNzNmOGZhY2EyOTBiZmViNjQwY2NmYmU0MWViNjg2YzAyNTI1OWVmNyBweTNrCis4MjEzMiBhMTAxZDA3M2E1Y2QxZmJjNDU0ZmNiNWMyZjA1NTVkNTY2NWU5Y2Q1IHJlbGVhc2UyNi1tYWludAorODIxMzMgMWFmOTU2NzQ1ODhkMWQzYWUyY2E4ODVlZDAzMjE2MGY4OTVlMmI4MyByZWxlYXNlMzEtbWFpbnQKKzgyMTM2IDU4MTczOTVhMDQ4ZTVmZjE0ZmM4NTE0NzcwNmVmYmY2MDVmNTA3ZmEgbGVnYWN5LXRydW5rCis4MjEzNyAxM2U1YjBiMjA3MWEyYTQyMDY3ZmIwM2ZhY2M5MzE0MDlmYTZiYTUwIGxlZ2FjeS10cnVuaworODIxMzggN2U0Y2Q3MDNhMThiNzMzM2U4ODdiNTVjOTU3MTA0MDkyMWM3MjlkOSBweTNrCis4MjEzOSAxZjEwYzkxMmMxMjdmYzMwZGY5ZmU2MzIyMTZjZGZmMDU4ZjkxZGZjIGxlZ2FjeS10cnVuaworODIxNDAgZGFhOTE4ODhkYTUyYTM5NjYzNTk0ZDQxYjBiZjM3ODE5YTI5MjBiNyByZWxlYXNlMzEtbWFpbnQKKzgyMTQxIGYyNjhjMmFlMDgzNWY0MjRiM2IwN2RkZTljOTRjYzU0MTdjM2UwMjIgcmVsZWFzZTMxLW1haW50Cis4MjE0MiBhZjc1MWExZDZmNDQ5NDdhMjQxNDNhZWM1NWE0YTcwNzc5MjM4YWU4IGxlZ2FjeS10cnVuaworODIxNDYgMGNkOTlmOGMzMGUxMzkwMDA4YTk1ZTE0MGM2NGMyOTY0ODkwNGI4ZiBweTNrCis4MjE0NyAwYWZkNzYwZTdjNzY1MzFiMGRmZDQxYWIzMDA1NWExNDQ4ZjIwZGM0IHJlbGVhc2UzMS1tYWludAorODIxNDggMGI3YWNkYmQwMmViMzQzODQyOTY4Yzc4NTljM2IyZjM3YzVhZmE4OSBweTNrCis4MjE0OSA1YTMyNWUwZjFmZDAxMzU3Zjg0YjU4YjVlZWUxNTM2NGM0MzY3YWIyIGxlZ2FjeS10cnVuaworODIxNTAgNmU1ZDIxZTIyM2QyMjQ4NDE2ZjY4ZWVkMGQ0ZGFlOWNiZWIzZTgzYSBsZWdhY3ktdHJ1bmsKKzgyMTUyIDU2ZWQ2OGMyMTVhNzFmZjk3YTQyZmY1OTY4ZjU2OTUyMmFiM2MwMTEgcHkzaworODIxNTMgNWQzMmI2YWZiNTJlZWVkOTI2NGQ1MjYwNTIzN2Q2MzExNTQzN2VmZCByZWxlYXNlMzEtbWFpbnQKKzgyMTU1IDEwOGY5NGQ1M2VkYmUyYTFkMGFiODMwYjA5MmI0YjE3NGMzYWI4OTggbGVnYWN5LXRydW5rCis4MjE1NiBkOWZjYmE0Y2MxNDU0NWE5YTg0ZTRmZGY3OWY4MGIwMzMyYTRlYTdiIHB5M2sKKzgyMTU3IGY5MThkMzVlYzU2Yjg1Mjg5MDM5NDllNjBmYjAzMDE5OTdhMDFhNDggbGVnYWN5LXRydW5rCis4MjE1OCAzNzZlODFmOWViYjFkMzkxZjdjOWJhMGM2ZDE1NTc2ZDk3NGRiOTYxIHJlbGVhc2UyNi1tYWludAorODIxNTkgOTA2MDYzY2U3MTE5NjU5NTljOTlkYjQ1YmY4NTEwYWQ5M2Y2NzQ4NyBweTNrCis4MjE2MCAxODYzNWNiZDY2ZTBhMzNhZDQyOWU1NTQxYTdmZjcwOTdhMmZmNDY4IGxlZ2FjeS10cnVuaworODIxNjEgZjc4ZmNiMWIyM2Y1YjhlMDAxMDNkYzE2ZTA4MDJiNTFhZTAwN2YzYyBsZWdhY3ktdHJ1bmsKKzgyMTYyIDFjNjk1YzBhYWZmYjQ4YzJkMjI2YzVhYTdmMmUwNDYwZmJjNjUxYWEgcHkzaworODIxNjMgNGUyNGRmZWRmODBjNTFlNTAwOWFhYjk2NDJhZWE2ODg2MWE2NjQ3MCBweTNrCis4MjE2NCBhMTIwNmE2OWU3N2E1M2I5MGNiZDY2Y2EwNGQ0OTJhZjJkMWUwYTNkIHJlbGVhc2UzMS1tYWludAorODIxNjUgNTNhMTUyYjQwMGE3ZTViYzYzYzNlNzI4ZDk4MjQyZWExMmIxYTZiMCBsZWdhY3ktdHJ1bmsKKzgyMTY2IGYxN2EyYzFlMjkxOTI4YzQ2MzcxNmUwMDQ3MTdjOGQ2OWI5ZWIyYzIgcHkzaworODIxNjcgNGRkOGNmZjZiN2JlYjFmNmYxMDNjNGNjZTZlMDhkMDQ2Yjg4MGMxNiBsZWdhY3ktdHJ1bmsKKzgyMTY4IGQxNWJlOGI1YzdjYWQ5NmQ0ZmJmM2QwNmJkMWFhOTBkNTBkNmFhMGYgcHkzaworODIxNjkgZTlmYjA0MmU0NmZiNTAwMDVmNzdlYTE2NDMzZTRmNDE4NWVmNDJkYyBsZWdhY3ktdHJ1bmsKKzgyMTcwIDg4MzZkMjcxNjcwYjZiYjg2NGYxYWIzYzQ0ZDY1MmE5OTIyNjgzNzkgcmVsZWFzZTI2LW1haW50Cis4MjE3MSBlYjk1YWYwYTk5Y2JiMWJhMGFiZjVkYTVhNDE5NmY5NTU2YjNkMzZlIHB5M2sKKzgyMTcyIDI5MDdjZThiZmJiNjAyNzYxN2I5ZmE0MDlmYjYyMDRkYmI4YzY2NmQgcmVsZWFzZTMxLW1haW50Cis4MjE3NyBjYTRmMmU5ODY5YjY3NTJmY2Q5Y2JhYjExMmIxMWQ5MjZkNzdjNmM5IGxlZ2FjeS10cnVuaworODIxNzggNDI2ZWY5YzM3OTE2ZmFmZDNiOGI1ZGE0NjY5NzIxMGU5YjI5ZjZlMiByZWxlYXNlMjYtbWFpbnQKKzgyMTc5IDA3NDg1OWVjZGMxODczMjJkYTk2MjM2N2VmMGQ3YWVlZGI1MTI3MGEgcmVsZWFzZTI2LW1haW50Cis4MjE4MCA3NmJjNmI1NzczNzNjZjU0ZGZlZGQxYjEwYjJmNzRkNDkzNTgzYzdmIHB5M2sKKzgyMTgxIGM4ZDVkMTIwNWZlODMwYTViMWQ2YTQyMDYwMWI2MWJhYmVkMGNhMTYgcHkzaworODIxODIgMGU0NjM3ZWEyMGQwMDEzYTU3MGRjOTEyMDY4ZGM3NDM4NTFjMzg4MCByZWxlYXNlMzEtbWFpbnQKKzgyMTgzIDY2ZWY5YTc3YzhhZmQ1Y2MxODUyYTY3NjIyYWFlMzJlODFhZWFjMDUgbGVnYWN5LXRydW5rCis4MjE4NCAzY2YzNTIzMWY3ZDNlZDM3NWExYTk5ZGZkODViNmZmMGJjNjY2YWY2IHB5M2sKKzgyMTg1IDNhZmUzNjFlZmNmMzhiZjg4NjY1ZWE3MTIzMTc0MGFmN2MxNzdmNWEgcHkzaworODIxODYgY2Y3OTc0MWY3YTIzZmM1NWZlNTAzN2E3NWJhY2YzYTRlYzFjMjc3YyBweTNrCis4MjE4NyA5NWQyMDM1YTE2NGI5YjA1ZTA1NDBkNjZhODM2NTdjMTRjNTExNGRjIHJlbGVhc2UzMS1tYWludAorODIxODggNWY0NTY5MjQ4OWRhMWZkMzU2MWQwNjM5YzY4MDRmM2QxMGRhN2VkZiBsZWdhY3ktdHJ1bmsKKzgyMTg5IGNiMWFiOGU5MTU4MTA3MDg3ZTAxYzNmOWVhMmZlODg1ZTUzYzNlNzkgbGVnYWN5LXRydW5rCis4MjE5MCA2MWZjODRiYzRiMTQ2MjY1ZDBjYzliZDk0NDczNjkzYWUxZGNlMTI3IHB5M2sKKzgyMTkxIGIxN2ZjZGQzOGE1YjQwMmEwYTAxMTliY2I2MGMxMjM3MDkxMTgyNTMgbGVnYWN5LXRydW5rCis4MjE5MiAwZDQyNDU0MTJkMGI1MzNiNTU5OTVlZGEyYTgzNDZmMDNkMjg0MTM4IHJlbGVhc2UyNi1tYWludAorODIxOTMgYzU1MTU3ZTAzYWI5NDNmOThiYjJhNGY0Njk4NjgyNWVmNmJhZmY4MCBweTNrCis4MjE5NCA0NWJhYTQyOWZjNDljY2Q5OTE1YjZkMzIwNDU1MzE2ZWFjOTVhMjdkIHB5M2sKKzgyMTk1IDNkNmYwYTIwNTBlMjkyNmY3MDkzZGEyYjFjZTk1MTI2YmRmYzU1OGQgcmVsZWFzZTMxLW1haW50Cis4MjIwMCA1ZDUzOGQxZTcwOThkOTZhYTFiMTlhYzU1MTAzNjc3ZGExYmFlMDY2IHB5M2sKKzgyMjAxIGEzOWI1MmVlMGIxZDRkOTJlYWI2MmFhOTlkZmFlYzkwM2JkOGY4NDcgcmVsZWFzZTMxLW1haW50Cis4MjIwMiA4OTM5NzAxNDE2MDgyYTI5YmU1MTk0ZjBmNTVkMGY1MTVlNmY2MzQzIHB5M2sKKzgyMjAzIDM0NzQ0YTc2MTQzYThlNjU2ZTFiNjFhN2M5NGYzZDNkNjgyMzNjMTAgcmVsZWFzZTMxLW1haW50Cis4MjIwNCAyMWU4NmRkMzI4ZjE1N2VjNWZjNzMxMWY3NTE5ZDVkM2IzZDk3MjgxIHB5M2sKKzgyMjA1IGI4YjBhMTVmOGE3Y2E0ZTg0MzFiYTlhMGE1M2ViMzg0ZjJmZDMwMjAgcmVsZWFzZTMxLW1haW50Cis4MjIwNiBiYjYyMjJhNGVkMjQyNmU5YzdiZWNjOTg3NWYxYzA5NWIwZTFmYmIyIHB5M2sKKzgyMjA3IDEzYjJhNTkyYzE4NjgzZTJmZGZlMDQ3NmEwODEzYjVhZDBhYmEwMDAgcmVsZWFzZTMxLW1haW50Cis4MjIwOCBiY2MwZTgyNWZhYTBjYTgwZTkzM2E3Mzg0ZGVhOGZjOTQ5MjljMGUxIHB5M2sKKzgyMjA5IGM0ZGQ1YTg4OWVjZGZiNjgzZmQ5NjU4NmVlYzZjMmRhNTBiMzk5NzYgcmVsZWFzZTMxLW1haW50Cis4MjIxMCA0NmI0ODdlNGE3NWI4YzM5ZjA4ODBmZDNjOWM4NjgzYTRjNjNlOTIyIGxlZ2FjeS10cnVuaworODIyMTEgNTcxMTVhYjA2YjI3ODAwNjEzNmRhMzllZjRkYjc3YjRhOTI1YmYzNiBweTNrCis4MjIxMiA1OThlOGRjMThiODNlODlkNmI3MDJjOTQyNWExZmQwYWJiOWNiOTYyIHJlbGVhc2UyNi1tYWludAorODIyMTMgZWY2NDJlMjQwNDdhYjY4MTU2NDhmM2M5ZTJkYzc5YjExMWU3YmEzNSByZWxlYXNlMzEtbWFpbnQKKzgyMjE0IDRlMDk5ZTUwMDRhMWU4MjVjYzI0NGYxMTM3MTE2YTZhNTc4ZDZhNTcgcHkzaworODIyMTUgZDk2YWNjNDFjNTlmMmY0NzdkNGFkYTUxYjRlZGMyMjhkNGRkYTNmOCByZWxlYXNlMzEtbWFpbnQKKzgyMjIwIDY5ZmRmNjhlMGI1YjQ2MDQxMTUyYjIxYjBjMDhlYjk0N2E1ZTA3MTUgcHkzaworODIyMjEgYmE1NTg0NGJmNWMwMzE0YjY5NTUzZjFiYjczN2IyNmViOTQ3NmM4YyBsZWdhY3ktdHJ1bmsKKzgyMjIyIDgzY2EwZWE5ZWYxZmIyMTZjYWZjZjUwZTVlNmFiYmUwZGY2YTY0ZDAgcmVsZWFzZTI2LW1haW50Cis4MjIyMyAxYzVjMTQ2ZGU2NDI1ZDAwZTA5ZDBhYzgzNWI5ZjBkOWQ1ZTVmODIzIHB5M2sKKzgyMjI0IDBjODc0OTA3NjdiZjFjNTE2NzkyNjM2Y2M3YWUyMTc0ZjgwNmM5MDEgcmVsZWFzZTMxLW1haW50Cis4MjIyNSBiNjYzY2Y2YmJlOGIzNzFjYmM0YjEwNmQ4ZmFlOTYxNzQ5MjZkOTUzIGxlZ2FjeS10cnVuaworODIyMjYgMDllYjM2MjZkMmFhZTgxMWQ2ZTQzYjMwZWNlZTM5MzNkMzdhNTc4YiBweTNrCis4MjIyNyAzZDMxMDhhYzIyYjJjNmU1Njg1NTE5NzA2YTY4ZGE1MDkyMWI5Y2Y3IGxlZ2FjeS10cnVuaworODIyMjggMmNkMjIyNTdhODZkN2I4MDY5YTYzMGU0YTYwNGQwNmU5ZTVkY2U5ZCBweTNrCis4MjIyOSBhMzRmZDZmODE2NTE3OWJmYTM1MmZkZjFlMWE4YmJlODAwNDdiOWYwIGxlZ2FjeS10cnVuaworODIyMzAgZTI0OTkwZDA1NDRmZmZmOWYyNGE2NzZhY2E1MGFjNWE5YTExZjE0MSBweTNrCis4MjIzMSBmMjMyYzU2OWQyMjVkN2MxNDcwZDI2YzZjMDFhNWFkN2E1YzhjZWExIHB5M2sKKzgyMjMyIGM1MWJmMzE1M2YyY2E4OWI0MGE4OGI2MDRiMjhjMGFmMTM0ZjMyYmMgcHkzaworODIyMzMgMWJhMGFiMDJlM2I4NTcwNzM0MWFhZmYxMjIzN2RlZmQzMjdjYjJmOSBsZWdhY3ktdHJ1bmsKKzgyMjM0IGNiNmQ5YmQ1NTllZmQzYWQzMzZlNTk0ODU1Y2VhMWE5ZjQ0ZWVhOGQgcHkzaworODIyMzUgYTQ1NmIwMGMzYjc1M2JkZDk2NWVlNzg1ODE3YmMwMGE1NzViNDc3MCByZWxlYXNlMzEtbWFpbnQKKzgyMjM2IDdkY2NlNmEyODFjZTJiZjZhNWQ0N2U4OTk5ZjBlOTM0MjBjZDcyZGYgbGVnYWN5LXRydW5rCis4MjIzNyAxNTJiNDQ2NDJiMmM0MTdlYjZhZTJhYjAyNGQzZmU2ZmZjZmU0MzE4IHJlbGVhc2UyNi1tYWludAorODIyMzggNGFmZWYyZTQwYjYzMzI0OWJkNjBjMzY1NmI0ZWU1M2Y2NmFlYTFkZSBweTNrCis4MjIzOSAyMTU1MmE0OGViZDE5NjhkYjkxNThjNDk1ZmU0OWJlNTc3MGE1MzI0IHJlbGVhc2UzMS1tYWludAorODIyNDIgMmY2ZmVkNjA2MTNlMTJjOGU5MjExMzM0MGVjNmFjNWMxYjBmNDdjYSBsZWdhY3ktdHJ1bmsKKzgyMjQzIDdiMDRkOWE2OThhZWU2NzZjMmIwNThkYmU5YmEyNTQ3NjNmMTNmNTYgcmVsZWFzZTI2LW1haW50Cis4MjI0NCBkMTcxMjc2ZWQ3NmRhNzIzMzRiNzgwMDYyZmQyYWZkZDE1ZTNkMjIwIHB5M2sKKzgyMjQ1IDFkY2FlNTJjNDk1Yzg0NmMxY2ZjZDZkOGRiOWQxMTMyYjQ0NTQ5NzQgcmVsZWFzZTMxLW1haW50Cis4MjI0NiAyOWU1MDk3OTNkM2M0ODE4YThmMGM1NzBiZjY5NWQ5MDUzNTVhNDhiIGxlZ2FjeS10cnVuaworODIyNDcgYWRhZmVlOTU4OWU0NDI5YWRhYjA3ZmYyY2NhNTFmZjBiZDMwY2MxMiBweTNrCis4MjI0OCBlZDg5YjFhYWRjOTNkMmQxZGE3OTA4OTM1NTg5MzgzYTQwZDQ3MjlmIGxlZ2FjeS10cnVuaworODIyNDkgYzkxMmI1YjI0YzhmMmQxYjI0YTcwNzQ1ZjMyNmExODRjNzA5YzM5YiByZWxlYXNlMjYtbWFpbnQKKzgyMjUwIDAxNGU3YzAwZGMyODA1ODMxZjJlZjI0ZjE0Njk5YWQyNWJlMWM3ZTUgcmVsZWFzZTI2LW1haW50Cis4MjI1MSAzOTZlYjY2MGVlOWI0MGJkOWVmMjU4NTJmNTAyMzA3ZWZlNmYzYmUwIGxlZ2FjeS10cnVuaworODIyNTIgMzUyZGRhMDc3MDdiZjkyOGQzZGI5ZTljZTRjOGQ4ZjFjYmQ4ZmQyMSBweTNrCis4MjI1MyBhMzljZWI2Y2VkZTMxNWQ4MzM1ODIzMzc3ZDJhYjMyNWEyMDQ5NmM2IHJlbGVhc2UzMS1tYWludAorODIyNTQgNDU2ZDZjNWQyNmRjNmU2ZTVlZjY1OTY3NTAxYTIwZDY1OGFmMzRjZCByZWxlYXNlMjYtbWFpbnQKKzgyMjU1IDdmZDNmNmVhZjY0OTVjMzA3ZGViNDU5NjgzMzA4N2MxZWFiY2RjMjMgcHkzaworODIyNTYgNzA2Njg4ZmU0NTkzNTY3M2Y5NTM0NDhiNzhhN2IyMmNmY2MzMTVmNyByZWxlYXNlMzEtbWFpbnQKKzgyMjU3IDVmYjNmMWE3NDcyNmE2YjgzZDlhYWI0ZGMwNzNmODFmZTEyMTViNzMgcmVsZWFzZTI2LW1haW50Cis4MjI1OCBmNmQ1ZWE3NjkyNzI3OTYzNDMxODMwMjllNDJmOTY0MjY3ZmMwMzgwIHJlbGVhc2UzMS1tYWludAorODIyNTkgZTQ3NTM4NTVlYzAxYmJlNTE2MTQ3MjI3YjUxN2Y3Zjg2NTFhNTkzNSBweTNrCis4MjI2MiA2ZWE2ZDg1MTUwYjEyYjgxYjc5MzQ4YTkxMzhlNDZhOGE5OWY4YTQ0IHB5M2sKKzgyMjYzIDU0N2U2NWRiNGQzODgyZWZlYjk5MzM3ZGNjMjRmZDllNWQyZjk4NDggcHkzaworODIyNjQgNmI0NTQzNzdhZmZlZDU4Zjc3N2Q1MDYwY2RiZDhhYTUzYWM4MzUyNiBsZWdhY3ktdHJ1bmsKKzgyMjY1IDgxNTI4NGM5ZDcxOTE1NGRhMzc5MzIwYTExYWRhOWRmMDExOTNjNGIgbGVnYWN5LXRydW5rCis4MjI2NiA2NzZhNDgwZWZjMDhjYmRhNGNlODU3Yjk1MTc4ZWI4OTI3YWMyZjQzIGxlZ2FjeS10cnVuaworODIyNjcgZjc5YmU3OTgxMzBmMmIxY2ZjODViMmZiZjg5MWFlNjgzZGE2ZDhhNiBsZWdhY3ktdHJ1bmsKKzgyMjY4IGVlMWVkODBkNzk2MzM5MTc5NWNjMjUxNTdiNGUzMjg2MGRmODAwNmIgcmVsZWFzZTMxLW1haW50Cis4MjI2OSAxYTNkOGVjMGM1ZmE4YWI2NWRlZTE1NTRiNDNkOTg3MDA2NjU2NmE4IHB5M2sKKzgyMjcwIDViMzhiNTIzNGRlZGI3MmFkYzc0NmQ1MjY4NDRhZDc1MWQzNmMwMGYgcHkzaworODIyNzEgMDI4NDJlY2Q4ZTViOTRhZGE4YmFjM2JkNjIyOTNhZmM1N2VkN2Y3ZSBsZWdhY3ktdHJ1bmsKKzgyMjcyIGEzZGQzOWUzNmM5ZGYxOWM2MDBmZjVmODFhOWZjZDNkMmQ0M2Q3YjggbGVnYWN5LXRydW5rCis4MjI3MyBmMTE3NGU3OWY3ZjQzZTc1OTdmNmI3M2M1MTMzZmEwMzExNDQ5YTAwIHB5M2sKKzgyMjc0IGQzYzc1YzJmNDZiZTI2YmJjNjllZjA5ZmMyZjY4MWFiMWIzNGY2OTEgcmVsZWFzZTI2LW1haW50Cis4MjI3NSAwMjA0NDU3M2VlZWMxZWFhMzNjM2FhNDY3MzBiOGY1OWY0M2NhMDc0IHJlbGVhc2UzMS1tYWludAorODIyNzYgNmIwMzEyNDkzNzU1OWU3MDliNGQ4MmVhMWE3ZGE4Y2IxZDk2NzNkYiBsZWdhY3ktdHJ1bmsKKzgyMjc3IGM1MDU2MzgyNDA5NDQ0OWE3ODAyOTU0ZDk2NTcyYTc5NGFhN2E0YmYgcmVsZWFzZTI2LW1haW50Cis4MjI3OCBjODhmNzYwMGJiMTdiYWU3MDg1ODE2ZTA0NGViNDFjM2Q2YzdhZDliIHB5M2sKKzgyMjc5IGY1MDVkZjAzYTdkN2NiZjczOTYxMmQ3MjQ3ZGFkMTlhYTQxNWE3YTcgcmVsZWFzZTMxLW1haW50Cis4MjI4MCBiMDRjZWY1NWZkZjQzY2M2YzIyOGMzYTYxNTliMDFmYzhkYzY4OGI1IHJlbGVhc2UyNi1tYWludAorODIyODEgN2Q5MjgwMjliYzBlOWYzNjA2N2U3YzBkN2ZiNWI5ZTMzNzdhM2E4NiBweTNrCis4MjI4MiBlZWUyNTc5MjgzMDAxYTk4MDQ5NTY4ZjJlZDRiNzdjZGYxZDQzMmM1IHJlbGVhc2UzMS1tYWludAorODIyODMgZGNmOWJjZDlhMWUwODEwNDdkZGYzZjAzYjJmOWUyMGY4YjlmM2ZmNyBweTNrCis4MjI4NCBhMTgzMjNmYmFmOTU4ZmE0N2ExNTMwMDQzZTExMDEyZGM3ZTIxZjViIGxlZ2FjeS10cnVuaworODIyODUgZGVlZDE1NmQzM2Q4MDZmMGRkYzM2OGJkNzQwZDk4MTIwYzUyNDI3NSByZWxlYXNlMjYtbWFpbnQKKzgyMjg2IDBiZTI0MzliYmNkODAxODVmZWNlMjFmYTMwZDNlYmU5NTFmMzAwYmEgcHkzaworODIyODcgZTY0NzQ2ZTAyZTQxMDEwMGYyNmUyYjhhMTJlMTdjZjA3NTQ4YWI5ZSByZWxlYXNlMzEtbWFpbnQKKzgyMjg4IDI4MTgyODNjMTQ5YTJmNDdiZTM4MGJkMmQ5ODhmNmNmNGQzNTAxYjQgcHkzaworODIyODkgOTMzYTM1NTZmNTYzMzU4OGZiMTJiMzY4OGQ5ZjFjN2YzZWQwMjhjOSBweTNrCis4MjI5MCBlYzBmZDVhNmJiNDU2Zjc4N2UwNDI3ZWIwYjUxY2VmYWJjNzkxNjI3IHB5M2sKKzgyMjkxIGNiNmYzYTQ0MWFjMmRlMTZlMWVkZmQ2ZGFjYzY4MWVhNGY5Y2YwNTQgcHkzaworODIyOTIgMmYzNTAxZjhkNDU2ZmRmZDQwY2RhMGJjMjkwNzI5YWRhNDNhNjY5MSBweTNrCis4MjI5MyAzNThkODZhNTcyZmIxODlhMjQzNTA5ZTg2NTk1ZmVhNDE3NjZiOGM3IHB5M2sKKzgyMjk0IGNiZDUxMzllOGZlNDg5NzVjZGJhOWQzMjUyYzlkNzNiNmE4NjRmZTQgcHkzaworODIyOTUgMDg5NzNlNjA4YTJhNDQwZjVlNzVhZDZiZGFkOTRiMzZlOGJhMWMwZSBweTNrCis4MjI5NiAwNTU1ODg0ZTk4NjIzNGI4MzIwOTNhNzM5ZWViNzA2MTQ3YzFjYmMyIHB5M2sKKzgyMjk3IDgyMGYzYjZjYjU1MTE4NzQ5NzcxZmQzY2E5ZGIyNDRiMmZjZTJlZTggcHkzaworODIyOTggNTA0YzQ5OWU4Yzk1ODJkNWIxN2RiNjZhNzMxYjI2NjA4MjVlMzIxMiBweTNrCis4MjI5OSA5ZjIyOTQ4NzQ5MTBjZWRkYmIxZmU1ZmFhNjE3M2U1MGFiOWQxMzU4IHB5M2sKKzgyMzAwIDhhN2NjYjk2MTgxNDU5MWY5YmI4Nzg2NDdkOTRjMWY1NjAwYTJlZGQgcHkzaworODIzMDEgOGRmNjE5MjU5MDU2NGU2NWU2N2E2NGZjMDYxYTJkMjNmYTI5NjkyMiBweTNrCis4MjMwMiAzMjY1MWVlNzc5ZWQwMGNmMTcyMDc1ZTFhZTNhMTUwMDk3N2FhMzRiIHB5M2sKKzgyMzAzIDM2NzBjNjZlZTE0OWE1YzM4Mzk5NmI5MjczMWQ5MDQ4Y2ViZDVkNTQgbGVnYWN5LXRydW5rCis4MjMwNCAxZDE3OTdhZjQ2MjIwYjU3MjA1MmQxMGExZWJhMTYzNDRmOTBmNTA0IHB5M2sKKzgyMzA1IGFhMjYyYzViMThiNTMyNmRiYTEyY2YyYmU4OTMzOGQ4YmI5ZDY4YzQgcHkzaworODIzMDYgOTM1MDc1ZDMzNWZlOGJlN2JiYjhlZTM3NWQ4NmNmNWEyNGYzMzk5ZCBweTNrCis4MjMwNyA0NmZlYzc3Zjk1ZThkMTVlZDAyNDc2OTI2ZmNhY2JkNTY4ZDU0YTJlIHB5M2sKKzgyMzA4IDZlYzgyNWM5YjNiNTAxZjJhYzEyODgzMmRiNzNmMmY0ZDg0ZTdiNmUgcHkzaworODIzMDkgMmUzNzYwM2NhMDRkYTI2YjQxMzcxNWJkODlkYzJlODUyYjBmNTJjMCBweTNrCis4MjMxMCA0YWE1Yjk1ODljNDIxMjA5MjM4MmMxYTNkOTY3ZjRiMjE1NTUxODQxIHB5M2sKKzgyMzExIGE4NTdkZDQwNzk2NDgyZmFmNDJiODE2YWEzOWRiMjg1YWUxMWU4MWMgcHkzaworODIzMTIgMmJjMDgwMDBhODU3MjdlMTBlYTk0ODM0MWQwNDNhNWFkY2EzOTJlYSBweTNrCis4MjMxMyBkZDMwYmM1ZDE4NGU5MTQ2YWE4ZTQ1YjRmYjI3NGY4OWE3MWUzOWY3IHB5M2sKKzgyMzE0IDQ4OTNlNDAwOWY1NjcxMjQ4Yjg2YjBkMTlmNzRjOTg5MWMzOGRiN2MgcHkzaworODIzMTUgOWY2OTllNTE0YTYyYzI3ZTUyODY4M2ZlY2QxMDQ5YmIzMWNiZDQ5MCBweTNrCis4MjMxNiBhOWNlZDQyM2RhY2U3NWEyNzMyYTU4MTAzY2EwZjgxZDkwYzgyNzBmIHB5M2sKKzgyMzE3IDQ3ZTI5YTVjM2RkZmZmMjUwZGUzNjNjNTMxOWRjNTk0YWY5NjRkZmEgbGVnYWN5LXRydW5rCis4MjMxOCAzYmRjZGVjZWE1NjEwZTI2Zjc1MzRmYTk2MjE2NmZhOWQ4OWM3MjkxIHB5M2sKKzgyMzIwIGIwN2IyYzk1NGE4MDc3ZjRjOWFkM2ZjNDg5MzE0ZWQ4NTc0ZjJjYTEgcHkzaworODIzMjEgZDdlMzQyM2M5ZGE4MjAxYmI0YjJhZDNlMjNlOTI0NDMwYWQwM2FlMyBweTNrCis4MjMyMiBlNDJiZTZlNmFjMmQ3MzY0MmQzZjAyYTlmM2ExZmVmZGQ5YzE3MzIwIGxlZ2FjeS10cnVuaworODIzMjMgZmQxYTExMjkzZTYyZTFjYjRiYzIwMTc5Yjg0NjQ5OWQ5NDBkNWFjZSByZWxlYXNlMjYtbWFpbnQKKzgyMzI0IDlmMDE4OGU0ZjgxYTg4NjI3MDk0ZmUxYmEzZTYzYjhlNDk4ZmEyMzAgbGVnYWN5LXRydW5rCis4MjMyNSAyMDAzYjcwYTliYWRkYjY1MTBlOGZlOTkxNGI0YTlkZDExNTIwMjAxIHJlbGVhc2UyNi1tYWludAorODIzMjYgZWFjNjRhNDYxMGYxMjI2MmI2YjU1YjE0M2I0OGRhZjQ3ZTMwOGYxNiBweTNrCis4MjMyNyBiOGQzNjVkYTE3OTg5NDFiNzUzMTI1ZWQyYmI1OGY5NTFjM2EyZTRiIHJlbGVhc2UzMS1tYWludAorODIzMjggMjhmOWEwMDBhMzc5ZDRjNWUxMDhhZjU5OGYxMTAzZThmYmRmMDUxNSBweTNrCis4MjMyOSAzY2QxNmFjNTE4NzcxNTNlYjJmZDg2NTFjZWQ1MTM2ZjEwYmZiNjA0IHJlbGVhc2UzMS1tYWludAorODIzMzAgYzBhNDliNmE2ZmIxMWQ4ODA2ODA5NmE4OWRlOWQ4ODA5NWJjZDg1OSBsZWdhY3ktdHJ1bmsKKzgyMzMxIGY4MTZiOTkxZTViMzFjYTc3MjFlOGMyNzEwZTk0NWQzN2RlMzlhZjIgcHkzaworODIzMzIgODgyNzYxN2EwN2RjOTFmNmUyZDY0MzY4NWQ3MjJjOTQ1NmI2ZGIyNCBsZWdhY3ktdHJ1bmsKKzgyMzMzIGQ3MTQxMWEwYTQ3MzE2YWViMzhjMWVjOWE4ZDE0MDM2N2NmNmYwMTggcHkzaworODIzMzQgMmRjZjQ3YjU5NDNmNGVlNGY1ZDkzMTY5YjYxMTBlMWVjNTRhNmE0MyBsZWdhY3ktdHJ1bmsKKzgyMzM1IDM3Y2U1YWRhZThiOWI4OGU5NzRhNWQ5YTk4NmM5Y2IwZDk1Y2RjZjAgcmVsZWFzZTI2LW1haW50Cis4MjMzNiA3NDY1NzlhOWVhZDcwNWNlN2ZjZGRhZDU4OGM1M2ExYWQ3M2EwNmQwIHB5M2sKKzgyMzM3IDI1YjcyMjFkZGE2OTFiYzVhYjM0ZTVhYWU5NTVlNzE0ZjllZGYxZTAgcmVsZWFzZTMxLW1haW50Cis4MjMzOCAzY2IzY2U3ZGNhYjg1MGY4ZjE1Y2RiN2RmZmJlMjU3YWM1YzA3YzAwIGxlZ2FjeS10cnVuaworODIzNDAgMDI5MDRjNmVlNTAyOTc2MTEzZDJhNmE5NDUxMzRlODdhNmMzOWY0NCBsZWdhY3ktdHJ1bmsKKzgyMzQxIDI1MjBiODE4ZGEwNTIxOTNkOGZhMGY3MzUwYTg2Y2E0MzAzNTc3N2QgbGVnYWN5LXRydW5rCis4MjM0MiBjOGJkYjMyYjA0YWFhY2FhYjJjOTk5ZGQyNWI3MTg0Njc2MTYzNzgxIHB5M2sKKzgyMzQzIDY4YjY3MGYzNjE0ZTkwYjQxZGRmYmJhN2RjMTI4ZDU5NTU4MDI0OTUgcHkzaworODIzNDQgY2UwMzI1Mjc2ZDJhZmFmMjQwMzgxYjIyZDQyNzk2MTJkYzkwZWIzOSByZWxlYXNlMzEtbWFpbnQKKzgyMzQ1IDljYTk1MjRkM2U1NzhhNDFhZDU4NDJiMmQ1MmM5NjdlMDQzODM3NTggbGVnYWN5LXRydW5rCis4MjM0NiA2OWY2ZDIxMzAyODEyNGM3MzA5OTVmN2ViOWM1NzUxNDM5MzZmY2IyIHB5M2sKKzgyMzQ3IGI4MTdlNzE2NTE2ZWRmMDNiZjg2MzVkNzY0NjE1Mjc5ZGI4MGFhZDggcHkzaworODIzNDkgOTVmOGIyNWU1M2NlMDllNGVlODEzMWRiM2I1ODUxM2Y1NzQ0NThiOCBweTNrCis4MjM1MSAyY2Y0Y2ExZWQ2ZDZjZDZmM2FlZGQwNmRhNzg1Zjc3M2U5MGZjMDZiIHB5M2sKKzgyMzUyIGFjZDg2NDg4NjVhYWM1ZTFmM2NlNzY4N2NkYjY1YWYzOTY4NzQwYTIgcmVsZWFzZTMxLW1haW50Cis4MjM1NCBkZmJkYjk4YzkyZTdmMWI3ZjNmNmQ3NzNjNmJlNWE3ZWQxNjJiYmRiIHB5M2sKKzgyMzU1IDBlMTZkZGQ0NDE1NzhlYmRmY2NkNzkxMDFmNWVhNWQyMDEyNDg1YWEgcmVsZWFzZTMxLW1haW50Cis4MjM1NiAyYThjNjhiYTAwMGJhNGYyMDc1ZDlmNjkzZGM4OTcxMDgxNTY2NDY5IGxlZ2FjeS10cnVuaworODIzNTcgZWJmYjZiYzA4MmQ5MmVkOWE0OTk0YzAxNDc5M2RhNzU5ODM1NzE4YyBweTNrCis4MjM1OCBhNGUxYzU2YmU1MzJjZTU4ZjU1MGFmY2RkNGIwZGFjZmFmYWI1MWM4IHB5M2sKKzgyMzU5IDJmOTA1MWZlNmFkOWM2NTE1MjBmNGExYTZlMzJmZDQzYWQzYzkxZTMgcHkzaworODIzNjAgZmU0NDgyOGVhN2VkZGUxZGViNTc2OTE0OWY1NDE5ZWRkNmUyOTdmMyBweTNrCis4MjM2MSBjNTE5MjkyMzNlMTk1NDlmMTA0MDIxM2UxZWQ1NzY5MjQyYWU2OTg3IHJlbGVhc2UyNi1tYWludAorODIzNjMgMTRmOTRjMDFhMDAyYTU4MTE5N2QzZTg4OTRjYzE4ZmNjNWRlMDA5ZiBsZWdhY3ktdHJ1bmsKKzgyMzY0IGY3YjU0MzUyNzcxZDJjZmJiN2MyMDg0OTZkZmYxNWVjNTU5N2UzZmYgcmVsZWFzZTI2LW1haW50Cis4MjM2NSBiNzJjMzNmNDk2YWM4ZTFkNzU3NzMwNjk1ZTkyOTg2MjIwOGZkNjM4IHB5M2sKKzgyMzY3IDcxOTlmZjM4NmY5ZWM3Y2YyYzlhYmJjYWE4NjAyYjdjMTA4MjdlZjYgbGVnYWN5LXRydW5rCis4MjM2OCAyZjhkMTc2MjZjZGZmNDRkNWNjYTAxZTgzYTZiYjMwNWM4YTU3ODhmIGxlZ2FjeS10cnVuaworODIzNjkgMTdmMTdkYzZkNDhiYzRlYjlmODBhYTA0NTE2YTY0NDcyZWY4MjIwMyByZWxlYXNlMjYtbWFpbnQKKzgyMzcwIDA3MTMxZjA4YzNkZTE5NWMwMzgzNTkxYzM0NWI0YWEzMjNlZTFjMGIgcHkzaworODIzNzEgMjk2NDI0Mzc0ODM2MTY1NmQ5MDEwNjg2NzAzNTg2YmM5NGE2ZjBiZiBweTNrCis4MjM3MyA5ZTI5MWFjMDdjNWJjZjU3MjUwZjUzZWQ0NWM2ZmE5MGUzNmZjNDVmIHB5M2sKKzgyMzc0IDBmZTk3OTMyNjQyZTc3YmE3ZTQyZDQzNTlkYTczMWU3NzM5MDIzYjAgcmVsZWFzZTMxLW1haW50Cis4MjM3NSA1MDcyNTkwYjRkZmRjNGYwM2U3MDJlMDUzZTNkMWM2NzlkZGM3YThhIHB5M2sKKzgyMzc2IDI5MGJkMGMxNTBhNjQ1OGQ4MTcyYTE0MDkxOTdlZjE0OThiZjU2OGUgcHkzaworODIzNzcgMTU4MTY2ZWY2ZjA2ZDAxNGZkZTA4OTk1ZGZhZTdjN2Y4NTU2MjJlNyBweTNrCis4MjM3OCBhOTJhYzc1NzAxMTgzYWExNWZlMjk0NjY4YTI0YWMyOGUxNTAxYmIxIHJlbGVhc2UzMS1tYWludAorODIzNzkgYjVkZmEzMzk0OTljMjg0NDE0YzYwNDc1NmFmNTFiNTlkZDdjN2E2ZCBsZWdhY3ktdHJ1bmsKKzgyMzgwIGI4OGRhNGY3N2Y2ODZjNzVkMzQxMTEwNzA0ZmYyYTRkMzY0YzE0MGQgcmVsZWFzZTI2LW1haW50Cis4MjM4MSBmY2FlOTU5YTJmYWI1MmY0MDZlN2U3MjFiNWNkYTZmNDZlYmUzYjk1IHB5M2sKKzgyMzgyIDMyMWVkYmE1Zjc5NWJmNmEwMGZlZDZhNmI2MTViZmM4ZTI3NWU0NWQgcmVsZWFzZTMxLW1haW50Cis4MjM4MyAyNWZiZjAyMzEwMmQ5YjkwYzY3ZTQ4YTQyYzRlNDZmMTZiMDExNjc2IHB5M2sKKzgyMzg0IGU2YmI5OTBhYzlmNjg3MDIwNGJjYzYwMjEwMjhiZmE3NmE2YmMyZDggcHkzaworODIzODYgNGZjZTI1YWJmZGQ4MmZiZDA1MWJiMTI0YzYwNzlkOGIzODYzYTYwNiBweTNrCis4MjM4NyAxNmQ4OGVjYTNjMzNhMTlkZjI1ZGQ2NWYzMjJkYjIwYTIxOGY2MWJhIHB5M2sKKzgyMzg5IGQzNGNlMGRlOTQxY2E4OWE0YzMzZDU5M2M1NTFmYmU4NmM5ZWYwZDIgcmVsZWFzZTMxLW1haW50Cis4MjM5MCBlNmYxYjNkMTA0MGE0NzVhMDQ3NjUyMWJhYmYxNWVlNDI4OWIzMzQ4IHJlbGVhc2UzMS1tYWludAorODIzOTEgMmJjNTRkYTRiODJjMWFiNGMyOWU0NzBkNzJhNmZmNjg5YmJmYmU2YSBweTNrCis4MjM5MiAzMDg0M2JlMmUxMWEyNmMzNDUxZTE2MDE0YzNhNzU0MWI4OTU2ZjhkIHB5M2sKKzgyMzkzIDA0M2VmMDRmNjRkMjJjN2I2OTk4ODM0ZGJhNjAxM2VmMmM2NDNhMzkgcHkzaworODIzOTQgMzBlMWQ4ZDA4MTA1NzgwZjMzZjJhYzRmYmYxYmE3M2FkY2FhOTljMCBweTNrCis4MjM5OSA5ZGNjOTNmZTc1MjgyZWRmOGQyZDgyZjdhNDgxMTliNTcxY2Q1YWFlIGxlZ2FjeS10cnVuaworODI0MDAgYzVhZmU5NTUyNzc5M2M4Mjg4NDZiMzg2YWU0MDgzZjBlOTJhOWViMCBsZWdhY3ktdHJ1bmsKKzgyNDAxIDlmNTQzMGU0Nzc3MDA3ZTNlNzNjYjUwNWU3MmM1NDY1NGRjM2I4YTggcmVsZWFzZTI2LW1haW50Cis4MjQwMiAwMWM5NTgxYzdlM2Y0OTRkYzBmMDMyM2NjMTA1N2ViOGJjMDlkMWJiIHB5M2sKKzgyNDAzIGU5YzhhOTY1ODRkNDM0ZTEwNjIzY2Y0ZTMwYzFiOWYwYmZlODRiMDcgbGVnYWN5LXRydW5rCis4MjQwNCA3NmJjMjU1ZDI5ZmRmNGUzYmU3MGUwNjg3N2ZkMDVlMzgyNzViYjFkIGxlZ2FjeS10cnVuaworODI0MDUgZGI2ZmQ0MDVlNTk0ZmQ2YzMyOTgyNjM0NTAzNzFmMTU5YThmYTg2MSBweTNrCis4MjQwNiA4MTZjZDg1OGQzMzFhOGQ1MDY2NDM5Y2M2ZWU4NzM5YWU5NzAxZjNkIHJlbGVhc2UyNi1tYWludAorODI0MDcgM2U4NzhlMjY5YjA5ZWU1YjFkMDQ2MWFlZDRmNGY3Y2M0OGE3MzhiMCBweTNrCis4MjQwOCAzYTkzYTA2ZTVlMzBjZGZhODk0Yjc1N2VmZWZiMzdkNzcyN2FjYWI2IHJlbGVhc2UzMS1tYWludAorODI0MDkgYjA0NjE2YmU3ZjE0ZDcwNjA0NDdmMDMzZDQ4NjYzNGQyNDRkOTk1MCBsZWdhY3ktdHJ1bmsKKzgyNDEwIGNlODE0MjJlZTM1YjMxMDU4ZTg4MDRmY2NlZGE4NTk1ZGVhOTc3NzMgcHkzaworODI0MTMgZTBkNWE0YTQ5MTEyYTI4ZTExZDA3OTk3ODk3YTA3NDE2MTg1MjJiOCBweTNrCis4MjQxNSA4YjhmMzY5OTQxYzFlZGI0Mjg5MDZkNTI3OWJmZTMzNDZjYzNmMGY4IGxlZ2FjeS10cnVuaworODI0MTYgMzE4NWIwNTVmOTM3NjZkMmFjZjRmYjgzZWE4NzFiMDU0ZTljNmY4YSBweTNrCis4MjQxNyBhODlhM2Q5MmY4YWVhZGZiODI1YzU0MzY2ZGM5MmYzYTk1NDkyZTc0IHB5M2sKKzgyNDE4IGE5YTI2N2E4MWRhYzQyM2FkNThiZDY0NWEwZTBkYWQzYmVlZDI2ZDcgcmVsZWFzZTI2LW1haW50Cis4MjQyMCBjNTNlMTM1YTA4YjY5MGE5MDQ1NzI3ZWMzOTc3YjVkMDBkYTIwOTU1IGxlZ2FjeS10cnVuaworODI0MjEgYTkyNzE5YjQ5ZTVlYmFlODVmMDNiYjdhM2E5YWE3Yzc1ZmYwODQwMSByZWxlYXNlMjYtbWFpbnQKKzgyNDIyIGZhMTFkMmI0Zjk4YTJlZWIxMTYxZTY3ZjM4YmRlZTdhOTA3MGI0NjMgcHkzaworODI0MjMgMTNjMDZhNmY0Njc2NzZlNmRkOTMwZTM1YWM4ODI4OWU0YjRkYjgzMCByZWxlYXNlMzEtbWFpbnQKKzgyNDI5IDQzZjA2Y2EzNmFiMzBkMTY4YTBjZjA3ZGJhZWI0MzZkZWVhMDkzZjEgbGVnYWN5LXRydW5rCis4MjQzMCBmZTk1NTNhNmY3OThkNzExOTM4NmJlNjZlOTJkNWZiNDQwZjhkMmNkIHB5M2sKKzgyNDMxIDZkMGRlZGIzYTI0ZWMwNzY3NDQ3ZTFiOTk5YmJlMWZiYjQzMjY2YzEgcmVsZWFzZTI2LW1haW50Cis4MjQzMyBiYTljZjBkZjIxYjAwOTkwNzJmMWEzYWM4MDc0M2ZlOWJlNmJkMGVkIGxlZ2FjeS10cnVuaworODI0MzQgZmVmNjM0OGMyZGQ2Y2YyMWI1MTM3ZjE4YTk3NWUyNjMxZjdlNzc4YyBweTNrCis4MjQzNyA0YjBjODgyNzVmM2I2NDI1ODUzOTQ0MTE4NGU5YzM2NjlhZjk4OWY0IHB5M2sKKzgyNDM4IDM1MzcwZDcyMzZjOWM2YWU2MmI2NDIwNTA1ODhkODJhMDk4Yzc2Y2YgcHkzaworODI0MzkgMTc4NjYyOGVhNmZmNjQxMGRiOTAzZWYyNGVmMTI0ZWQ1ODY2ZTc5YSBsZWdhY3ktdHJ1bmsKKzgyNDQwIGUxN2IxY2IxYjYxYzljYzYzZjYwZmMxZWM5YzA5YzRhNzAwN2IyODUgcHkzaworODI0NDEgZjQzMGE4OTE5NmM5YWZlZjNkZWY3OGEyOTc1ZDNhOTJlMjQxZTk1OCBsZWdhY3ktdHJ1bmsKKzgyNDQyIDMzMDRkYzU2ZGRhNDQwN2Y4Y2M2NTI4ODcwOGQ4ODlhZmI2N2E0NzUgcHkzaworODI0NDMgYjNiZmFiYzA0NDdjNTE4YTdmOGI2YjUzZWU4MDNlOTFhYjAyYWQyMyBweTNrCis4MjQ0NCAzNmFiZDc1NTRiYWQ4Y2NhMjc2NzM2ZGRmNGY0YzNiNjFkNWUyNDJkIHJlbGVhc2UyNi1tYWludAorODI0NDUgOGE2ODlmMjk3OTcwYzk1YzQwNjljYTlmOTEwNmFmNmUyNjk5NzkzOCByZWxlYXNlMzEtbWFpbnQKKzgyNDQ2IGVmNjc5OGE5OWVhZDJlYjY3MDMzYTk3ODdiODNmMjk4ZjM0NDRiNTYgbGVnYWN5LXRydW5rCis4MjQ0NyBiNTQwYTYxMmY2MDE3MDE1ZWJjNTk1ZTYwZTM0NGFmZWE5YzcwYmE3IGxlZ2FjeS10cnVuaworODI0NDggN2YxNDk2ZTQxMTI0NzM4ZGVmNGE2NzhmZmJmNmVhYzFhYjZkNmQzNSBweTNrCis4MjQ0OSBlODM0YzVkM2E5YTMzZTMwNDU4NmYwOTFiMTE5YTE5MDU4YmI1ZGI3IHJlbGVhc2UyNi1tYWludAorODI0NTAgYWVjNDIyMTExY2RlYTM1NzM3ZjA5YjljZjAzZjMwMWIwN2E2ZjhhMCByZWxlYXNlMzEtbWFpbnQKKzgyNDUxIGYxYmE0ZTZkNmMxMjMxNzM0MjFkZmMzMGE4YTlhNzAwYjM2OTlhODkgcmVsZWFzZTI2LW1haW50Cis4MjQ1MiA2MWFkNjg5NGVkNmFhNzZjMGEzOTk3Yzg1ZTlkYThhOTc3MTVmNWIwIHB5M2sKKzgyNDUzIGNiNzgwMGM2NDkxMjNjYzc0MzBhZTMxMmFhNjYyZmI1YTU5ZmFmNmQgcmVsZWFzZTMxLW1haW50Cis4MjQ1NSBkZTE2YTkxNWJkMmFjN2Q1ODdkMjBjMzM3MDZhMTY2NThjMzUwMjA0IGxlZ2FjeS10cnVuaworODI0NTYgNTI5YjIxNzUzMzliZjA2MTU3NzlmZjJjYjg0ZTdjMzk3MDdhMzg4YyBweTNrCis4MjQ1NyA0M2MwNDcxMWFhY2JjYmFiNTI0YWRlY2ZlYTg0ZGNkYzU1OTMyOTAzIGxlZ2FjeS10cnVuaworODI0NTggMzE0NDNjZjRkZWYyZjJjMWI1NjRjNGI3ZTgxNmQ0ZWI0ODk2ZWU4OCByZWxlYXNlMjYtbWFpbnQKKzgyNDU5IGZhMTZhY2IyZmZkZDYxODVhNjNhZGJkZDliY2YxMzdhYzY3MmU2ZGUgbGVnYWN5LXRydW5rCis4MjQ2MCBjNzJmZDhhMmFlMDFkMDY2YjBmYThlOGNkY2NiZmFmY2E3MWEzNGI2IHJlbGVhc2UyNi1tYWludAorODI0NjEgMWViMzZmMTY5Yzk3MjhmZmM3MDM3MzlmNDBiYTRiNGM2ZjZiZjZjOCBsZWdhY3ktdHJ1bmsKKzgyNDYyIGQzZmExOTliNGExNzQ2NmQ5ZDM1NmVhYTZlNTJlYmQ0ZWMzOGYzOTggcHkzaworODI0NjMgOGJmNmQ4YmVhZmUxZDU0ZThjNzAxM2Y2NjNlOGM4NzY2ZWM1OTYyMSByZWxlYXNlMzEtbWFpbnQKKzgyNDY0IGYyNzFlMWQwZTljNDQyNDk1NGIxYzhmNzZhNGI3YmQ3YzJhNGY2YWUgcHkzaworODI0NjUgZDgzMWZjMGMyNjM0MmMzM2NkNzUzYjQwMjRjMTVhNzc2NDk4ZjM1MCBweTNrCis4MjQ2NiBiOGIxMWQ0MzQ5NDA2MWQ0MmY0ZjZhMTkxMGJiYjZiODYzOWY4Y2RjIGxlZ2FjeS10cnVuaworODI0NjcgYjBiZTg5ZjcwZmY5Yjc2ZWRjMGRiNDFjYTIwOGQ5MWNmNmY3MGIzNiBweTNrCis4MjQ2OCA5OTAwYTk5OGI0NjBjZWQwMGM1ZjI0MmQyOGQyYThlM2RlOWE2NzFjIHB5M2sKKzgyNDY5IDlkYzVmMzg1ZjQ5NDJjNDc5NWRjZDRlYzA2YWU3YzNjMTYyMTE5ZWIgcmVsZWFzZTMxLW1haW50Cis4MjQ3MCA0ZGUxM2ZlYWVhMDE4MDVlMTQ4MWM4MTUwNmRhYjczYjUyM2ZhMWJhIHJlbGVhc2UyNi1tYWludAorODI0NzEgZWJlMWIzZmY4ZDMwMjE4MTg1YTQ1N2ViMDEyMzk3NTM3NWFiYTQ2NCBweTNrCis4MjQ3MiA2MWNiOTQxMGE4NDI0YjUwODUxMzcxOWE0MmZjMmFlNGNkMDIxYjhlIHB5M2sKKzgyNDczIDRkM2I0ZjM0MTkyYjIzOWU4N2Q4YmEwNzczNjYyMDE1NjgyOWNjNDEgbGVnYWN5LXRydW5rCis4MjQ3NCAzMjM5NmU4MDA0OGY5YTg3MDZiMTZhZTYxYmQ4MjlkODlkMzE5ZjA2IGxlZ2FjeS10cnVuaworODI0NzUgNjk3NTZjZGY1MzdiNGZhMzdkY2E5ZDdjOGYwZjM5OTM4YTI0OGUwYiBsZWdhY3ktdHJ1bmsKKzgyNDc2IDhlMjBmZmM2MTk4NjczY2FhZmRjNzIwMWFiOWJmZjY4MDk1NmZhOTcgbGVnYWN5LXRydW5rCis4MjQ3NyBjYzRiZDc2NmZlMTA5YTU3MjFkNjUxYWFlMzY1NjcwN2IzOTIyMGViIHJlbGVhc2UyNi1tYWludAorODI0NzggYzU4NTVkZGRmMGUxZmFiYWU5ODFhNzVlZDRhOTM0NjUwOTJiODk5YyBweTNrCis4MjQ3OSA1NjEzZDJlMWQ3Nzk1MjdlYWI4YzRlOGVkN2EyNjhkMmUwODRiMGNlIHJlbGVhc2UzMS1tYWludAorODI0ODAgYWFlNzM4MWFjMGIyZDBhNWM0OThlYjUyZTMzZDdjOTc0MzQyNzFjNiBweTNrCis4MjQ4MSBkOTdjMjQ1MjMzMjEwYzc5YmI2NDk5N2JkZTkxYWI0NzhjOTg2NjgzIHB5M2sKKzgyNDgyIDJhYWI5NTdiZjYxZmVjNjVhYWNiYWRlNWE1ZTdmZjZlMjA5ZGIwZTggbGVnYWN5LXRydW5rCis4MjQ4MyA2Y2ZlN2I5MDQ2NDlhMDczYzIwYzgzNjQ2YzA0NGZkZmRiNTYxNzdiIGxlZ2FjeS10cnVuaworODI0ODQgNWQ4MzRmY2RmOTgwY2RmYTFmYWQwNGJiZWMxM2JlMzQ4OTM1ZjhkZiBweTNrCis4MjQ4NSAyMzNjOGRhYjhmZmE5ZjcxMDUyOWIwNjcxZmE1MGVmZWZkNTY0MzBkIHB5M2sKKzgyNDg2IGFjODIzZTcxNmQ1NzE3ZThjY2MwZTEwMmYxNjdhM2RiODY3NGNmMTcgcmVsZWFzZTI2LW1haW50Cis4MjQ4NyBiYjIxMWEyZGRhYmQ1ZjBiODYyY2I4Y2UyYmY3NTg0ZDVhMGZmNDA1IHB5M2sKKzgyNDg4IDU1ZWRmNzlhZDgyNzdmMzk5YzQ3ZDA5ZTMxNDUzZTYyZTQ3ZjYzMjcgcHkzaworODI0ODkgZDM1ZjhlNWI0MTk3YThkN2ExNTA0ZmY0NzRkZjJmOWU4ZDE1MTMwMSBsZWdhY3ktdHJ1bmsKKzgyNDkwIDQwZjE5YjBiZmE2MWE1NmI0MTQwZDFjZjY1YWMwMmViNmNjN2QxMDUgbGVnYWN5LXRydW5rCis4MjQ5MSA2YWNiMjUzNTZkMmYxYTY5ZGYxNDQ4MWQ0ZjRkODU1YTE5OTQ5MjdlIGxlZ2FjeS10cnVuaworODI0OTIgYmU4ZTFhNmViZjdhYmU3NWEzODE0YzQyZDMyOTAzYjg5YmVjZjg4NiBsZWdhY3ktdHJ1bmsKKzgyNDkzIDRjYTVkMGFlYTQxZDM2MDljZjQ2NmJmZTgzNTkxMTJmZmYyNWE3NjMgbGVnYWN5LXRydW5rCis4MjQ5NCA4YmI5MzI4OGRiNmQ2OGU5YzE4YTg1Y2FiOTVlZGIyZTAzZDE1MmI1IHJlbGVhc2UyNi1tYWludAorODI0OTUgMjkxMTZiMmZjZmZlOTI4MTM3MTY0ZTI3NTg1OGZiM2M2OTA2ZGRkNyBweTNrCis4MjQ5NiA3MTg0NDIxZjgzYjU2NGZhYjU5ZmUyZmIzMGI0MjI3NjZhYTAyYzQwIHJlbGVhc2UzMS1tYWludAorODI0OTcgYjNiOTEyZDQ1M2E1ODJlNDFkZmZmZTcxYTkxNGUxY2ZkZTdiYjRmNyBsZWdhY3ktdHJ1bmsKKzgyNDk4IDk5Yzg0YTUxZjU3NjViYmViYmZmNzUwOGZhZmM1ZjRlMDFhNTQwYWUgbGVnYWN5LXRydW5rCis4MjQ5OSAyZDVmNTE1MGRjZTI0ZGE3Y2I2ODZiZWNjZWUwMmIyOTc1NTgzYTA3IGxlZ2FjeS10cnVuaworODI1MDAgODBjOGI0MzQxMzEyYTMzOWEwMGYzNzYzMWMzODU1MDA3ODc4ZDdjZCBsZWdhY3ktdHJ1bmsKKzgyNTAxIDU0ZmRjYzBmNGJhY2YzNzQ4NGRiYmNjZjJkN2FlZWMyYmM4MmE3MTggbGVnYWN5LXRydW5rCis4MjUwMiAyMTQ1NTkzZDEwOGRlNjJlYmY3NzA5ODdhNGFjMmE1N2QyNjhjOWQxIGxlZ2FjeS10cnVuaworODI1MDMgN2Y3ZDgyMzQwMmM2OWFlNjIzMmFlMjYwOTNjZDQ4MmE0ZjM1N2YzYiByZWxlYXNlMjctbWFpbnQKKzgyNTA0IDNmNDZmOGE5ZGI1NDk1MTkzMzlmYjlkNTk4YjRiYjBmY2ZkYWJkMjMgbGVnYWN5LXRydW5rCis4MjUwNiA3NmQ5MDg0M2RiYTYxM2M1MDEzODFmNTYzNWI1YWVkNmFmNDQxZGY2IHJlbGVhc2UyNy1tYWludAorODI1MDcgMzZkMDFjMDE3YjliZWVmOTE3ZjViYmU0ODA3ODUxMmUwZTdmNDhkMCBweTNrCis4MjUwOCAxOTRiNmU2MmJlOTUwZDBjYzk4ZWE1Y2JhNWVjMjM2NTZkMDUwYjMxIHJlbGVhc2UyNy1tYWludAorODI1MTAgMjYyNTI5ZDFjMzE1Y2QxOWU5ZDY1ZDEwNDFkYmU3ZTQyZGM5Zjk4YSBweTNrCis4MjUxMSAyYWVlODI5ZWRmZTI4MDIyOGJjZjk4YTliZGZlM2EyZGUxYjliOWQ2IHJlbGVhc2UzMS1tYWludAorODI1MTIgZDc2ZDBlZWIyM2NhYjg0M2FiYzYzN2FhOTQyM2FmMGY0ZmYyMWM2NiByZWxlYXNlMzEtbWFpbnQKKzgyNTEzIDk3NmFhNGE4YmNmMzA3YWJiNTJlYzAwZTMzMTJjOWEyYjEyYmU4OGQgcmVsZWFzZTI3LW1haW50Cis4MjUxNCBlNDJiYWY2NzhkMTQ0MDA2MjAyMmFhZTk4ZTg2ZDc2M2YyZTlhYTRlIHB5M2sKKzgyNTE1IGZlNDZhOGRiYWY2OGNhNzQ0ZGY2YWFkOTE2NmM5M2U1OGE2NmYzMTkgcHkzaworODI1MTYgMTc4NDU1YTJmMWFhNWJiZDk2MDBhMGFmMWY2NWIyOWVjZDAyZmQ4ZiBweTNrCis4MjUxNyAzMWE2ODU0Zjc4MTM5OTE5ZjkyMWU0YmM4NjZhODkzODRlZWE3MjRkIHB5M2sKKzgyNTE4IDM0ZDgyNzI0OWNlMGJjMjk4ZmI5ZTNkMmMwYzgyY2Y3YTViYWRjMTcgcHkzaworODI1MTkgZmE3MTUxMmE3NGY5MTRkNjk3NjBlOTAzN2I4MGZiMWFkZmJjMzQ2ZiBweTNrCis4MjUyMCA2YzNjNTQzZWRlOGM0OTdlZWVmNGY3MmMwZTdjMDBiMmE5M2RmOTQ3IHB5M2sKKzgyNTIxIDI2NzRkM2JkZGIxODFlOGUzM2M2N2MwYzc1YWJhNzY1ZjVjZDJmODggcHkzaworODI1MjIgMzRmMDE1YmNhNTRlZGIzMzM5MTY0Zjc2Mzc2N2M2YTBhNDhmYmQxOSBweTNrCis4MjUyMyAzMjY4MmIyNTNmZmM4MTdlMTZkYTlhNmUxMjE1YWYzYWZlYzgwMWNiIHB5M2sKKzgyNTI0IDRjMzBhNmY0MGU2ODRlNjM4NTM4M2Q5N2ZlN2NiNWRmZGZkNGYxMmUgcHkzaworODI1MjYgNGI5MzQ4MDNjZDM0MTQyNDMxNGRhZDg3MGMyZjhmYzBkODZmNjIzNSBweTNrCis4MjUyNyAxMzU1NzU5NGUyMGI3YWQwODY0NzQ5MTAxYmNjZjhjMzc1MmFlNDg2IHB5M2sKKzgyNTI4IGI2N2Y3MjA5OThhODgwMWE4YWQ4Yjc0Y2JhYTgzZTJhZmIwNzgxZDUgcmVsZWFzZTMxLW1haW50Cis4MjUyOSAwZjY1NDhhODY3NjhiMzI4MTA2MzIxYjg4NDg5M2NlZDM2ODQwYTJmIHJlbGVhc2UyNy1tYWludAorODI1MzIgZWNkNzFiNjEyN2U0MjY3OGRjMWEyYjFmNTcxZjY0MWNlZDBhMjhjMyByZWxlYXNlMjctbWFpbnQKKzgyNTMzIDM0MzkwMzExOGNiNWJiNjcxZTE2OWM0NTFiZWM0OTljNmZhNTBlNzUgcHkzaworODI1MzQgMTI0YTc2YWU3YTcwZTc1NzBkOTQyM2VkN2E2NWY2ZDQ5NDliOWM0ZiByZWxlYXNlMjYtbWFpbnQKKzgyNTM1IGYwNjkxYjRhMzgzYjgyYWVlODUzYTEzYWY3Mzk5NjRmYWU4NWRjMzggcHkzaworODI1MzYgM2ZjZTZjZGI0NzMzNzcxMTY5NTM4MzE5M2I0NzRkZjk0ZWM3YThjNSByZWxlYXNlMzEtbWFpbnQKKzgyNTM3IDFlYWY0YmJlNGIxYzFjMThiOTFjZWNlOWQ5OWM0NjY4YmE0ZjNkOGIgcHkzaworODI1MzggNjFjYWNlY2NmODA1ODEzNTNiODRkNzNjMGRhYTEwOTkxNmExYWJlMSBweTNrCis4MjUzOSAxODI4MjAzOWM1YzljMDA2ZGM1ZmQ1ZjNmMDYyMWZhMTEwYjMxZDk2IHJlbGVhc2UzMS1tYWludAorODI1NDAgOTM5MzI2MTk5NmNlZTIzMGM2NTI4NWFkZDdlMzBmYTVmN2E5MDZjNiBweTNrCis4MjU0MSA5ZTM1NGVhMzgyY2NlN2NiMDBjZWY1YmUyYmVkZTBjZjk5YzM5ZjMxIHB5M2sKKzgyNTQyIDc2N2I0YzU3YWVhNGQ5YmQ3YTQwZjZmZjNhOWM1NmE4YzA5NmQ2ZDggcHkzaworODI1NDMgMzgzMDM5ZWYyNmEwZTA5ZTUxNjBmNmE5NDg0YzI3ZWQxOTAzNDJiNSByZWxlYXNlMjctbWFpbnQKKzgyNTQ0IDNhZTkxM2E5Y2RhOTBlYTNlMjVkOTc5ZDI3NTQ0ZjkyNDE2NjFmMDYgcmVsZWFzZTMxLW1haW50Cis4MjU0NSBhNjNmNmJhYmE2YjU0ZGU5ODc4ODkzNGNkMzhmZDFkMTEwZWYyOTFjIHJlbGVhc2UyNy1tYWludAorODI1NDYgYmU2NjJkMTI0Mzg1OWVkNDM3YzA4NjliNjZkM2I3OTc5YWJmODFjOSByZWxlYXNlMjYtbWFpbnQKKzgyNTQ3IDM2MTQzMWM0ZDM0NGM0NGFjZjZlNmVkY2UwN2UyMDA0NzYwYmY1NTggcHkzaworODI1NDggN2NlNmUzNjRlMTE4MzA2N2U3Y2E4Mzc5ZmFkMjY4MWY0NjNhOTJjYSByZWxlYXNlMjctbWFpbnQKKzgyNTQ5IDNiMTU0ODY2MDhmMDViZWNkMTRjNzYwNTRjNWQ5OWJhNDU0ODI2OGEgcmVsZWFzZTMxLW1haW50Cis4MjU1MCBiMDc0M2Q1MmI2YTMxN2IyOTFmNzUzZDVlYmI3MzU3YWMxZDg1MmY2IHB5M2sKKzgyNTUxIDM0M2NmNWEwOGZmMDBmMDcyMzdjMTkwOTVmMzRiMTk0ZTc2YzQyYzIgcHkzaworODI1NTIgYzZmMTZiOGNiODU4ZGI5NThiMTg0YmQ2ZDQ1MjIyMTBhN2ZhMDU2YiBweTNrCis4MjU1MyBkMjgzMDA5MTIzN2NlYTNjYzIzNWE2ZDA1MWZlMDMyYzMxMDE0MGVjIHB5M2sKKzgyNTU0IDY5MmI3OTg5Y2Q5MjAzNjkwNTBlNzViYjZhZDBiNTViM2NiZWNlY2QgcmVsZWFzZTMxLW1haW50Cis4MjU1NSBmYjM2MGMwNzkwNTk3NmIxZDBlNzc2ZmNjNmQ2OWE2MjkxNzQ4MmI0IHB5M2sKKzgyNTU2IDNhYTIyNDI4NTgyYTM4YTI3MWI5ZWFlZTZjMzRhMWMzMjdlMWZmMDAgcmVsZWFzZTMxLW1haW50Cis4MjU1NyA4MzdlM2NkM2QwODM0NjMzZGViMTlmZjNlZGE5ZTYxNjFiZjVmMWU5IHB5M2sKKzgyNTU4IGQ4ODBjMTE0MzE3NTY3YmM4OTljZWU2ODRlOGIzNTdhZmIzZmRlMTkgcHkzaworODI1NTkgYzFhMjNhNTQwYTI5ZGY2MjZjOGQ1NDdmOGE4MTBjOTQ4ZDE2YTUxZiBweTNrCis4MjU2MCBmZTUyMTdhOGFmZmJkYzBmNGFjNzY4MDc0ZDlhYWYyY2I2NmU5MTI4IHB5M2sKKzgyNTYxIDQ2YWJkZTA3MWZmZmNlMDEzMmNkM2M4Nzc5Y2IwOWY2ZWMwZDJhNWUgcHkzaworODI1NjMgYTFjNDU2MzE3YjdjM2EyMzY4ZTZlODJiM2ExZDc3ZWQwZWMzMWYwMiByZWxlYXNlMjctbWFpbnQKKzgyNTY3IDdmZmQyYTQ0OTQyY2Y2NTYyNzhkMDRmZDlkMjY3YjFlZjc0OWFlNjcgcHkzaworODI1NzAgZGNjMmU4YmY2NGNmZjYxZmRiYzk4Nzc2NTkyNmE0YTU2NmE1M2YzNyBweTNrCis4MjU3MSAwMTQ1MDEyMGMwZGQxOGQ0ODdiMWQzYjRkNWQ4ZDQyMzA4ZmE2NTM5IHJlbGVhc2UyNy1tYWludAorODI1NzIgZTFmNDhlYjAxNGM3MDQ2YWVlMTZmZjljZTBjZDU2ZjcwNjgxNDI4MiByZWxlYXNlMzEtbWFpbnQKKzgyNTczIGNmNGY3Zjk4ZjE5ZTcyYmMxY2I2ZjFlY2I4NDE0YTExNzdkOWQ4ZjcgcHkzaworODI1NzQgZTg0ZDUxNjQ0MTQ0NjBhMzZmZmY3ODBjMjdmNzMyNDg1OTYxMmI2NyByZWxlYXNlMjctbWFpbnQKKzgyNTc1IGM4MWZjMWZmZTk0NjcwM2M3OTFlZmJmYzBmZDFlYzBjYzNjOTZmMDAgcmVsZWFzZTMxLW1haW50Cis4MjU3NiA3MjY0ODNkOTdiNWMwOTM2ZjgwZmVmY2Q4NjcyMDNmOTVkMjdjZjY3IHB5M2sKKzgyNTc3IGE3YzhiNGE2Njc4YmYxMDIxMzAwZWE3MDZkM2Y4OTEwNDJjYjE3NzcgcHkzaworODI1NzggMzZkNWUyZjVkNjAwNDM5NTRhMTU1ZDA0NmUzMTk3MmFlNTVmOWFkYyBweTNrCis4MjU3OSA4ZWQ3ZDExMWIyYzk3ZmVkNjBlNmFjNDI4NDFmZTA1MjNkZDI1NDc2IHJlbGVhc2UzMS1tYWludAorODI1ODEgNzA1ODY5ZDFiZGYwZmRhMjExZjA5OWMxZDQyNTk2NTJmNGFkM2Y1MCByZWxlYXNlMjctbWFpbnQKKzgyNTg1IDQwMDFkNDU4ZjBiMjBjYzdmM2ExNGRiZDhjZWFjOWMzN2UwOGI3ODMgcHkzaworODI1ODYgZWU5ZWUyZjlmZWI5Y2NmYzBiNjdiYjE2ZjEwZjFjMjdjMDI4OTgwOCByZWxlYXNlMjctbWFpbnQKKzgyNTg3IDlkNWZlOTM2MWRlMjFkZTY4Y2JmZjM3Yjk2M2MyYWI5MjNjOGU2ZTMgcHkzaworODI1ODggNjgwYmY2YjhhYjgyNDBhOTZlZWU5YjQzYzRmMWUwZjM1NTdiOGIxNyByZWxlYXNlMjctbWFpbnQKKzgyNTg5IDZlYzU3MjJhMDdhNWYyYWJlOGE3NmNmZDc3OTAzNmU4ZWMxNmE4YjkgcHkzaworODI1OTEgYjZmZWU1NWZhYTFiYmJjODA4NmI2YjkyZjlmNzhkMDdhOWU0YzY2OSBweTNrCis4MjU5MiAzYjczZmI4MDgwN2FhMWJjMmZlMGY5OGQ4MThiZWEzNDI2ZGVhYzRmIHJlbGVhc2UyNy1tYWludAorODI1OTMgODdjZGFmZTNiZDZjNzBhMzYyY2JkZjI5ZWVlOTRiZDEwZjQxMmJhZCBweTNrCis4MjU5NCA4YmJmMjRlNTFjY2ZhYWRhM2Q3MmY5MGE0ZmJjYTQ2ZDRmZmUyYmY0IHB5M2sKKzgyNTk1IDUwOTdiMWI0OTYwMTJlMWUzNDBmOWRiNjYwZmQ1ZTBmZGY5MzgxMWQgcHkzaworODI1OTYgYTA3ZWY1ZWFiOTBiYjI1YjEwNGU2NTg1ZGFhMGYxYjc2ZjMzMzk0MyByZWxlYXNlMjctbWFpbnQKKzgyNTk3IDRkMjkxYWQwNzg5MTQ5ZmMxMWQwMTYyNTVhZmFlYjk4MDU3OTBiMWUgcHkzaworODI1OTggM2RjMjE5MDczODc1NzRlNzM4YWM3ZjIzZTQzY2E1YzhlMWQ0OWExZCByZWxlYXNlMzEtbWFpbnQKKzgyNTk5IDkxNDU3YjIwMTRlNDBiNjE5MTYyMGU5ZTc1MWVjYjI0YWNjYmM1NjkgcHkzaworODI2MDAgODcwYjZiNDU1ZWYwNWQxYjUzYTMzMDkzOGY4MGJjNzY2NTU5M2NlNSBweTNrCis4MjYwMSAxZjI4MTRlYjRkMWRkMWIxYTY3MTQzMzhkODNmZTExYTZlNzM0ZWEzIHB5M2sKKzgyNjAyIDg2ODkwNDQ2YTQ3YmNmNTI4NGJkZmYzYTJkYTE5MWJlMjYxMDUwNWQgcmVsZWFzZTMxLW1haW50Cis4MjYwMyAzOWM3ZDU0ZjI4NDhjMGQxZmEyZTMwMDhmNzRiZTlmNTA4NmQ5ZTI2IHJlbGVhc2UyNy1tYWludAorODI2MDQgMWYzN2QwODJhOWFhZjgwMzdlMDNmNmIzMDVkYzc4ZWQxMDljYmViYiBweTNrCis4MjYwNyBmMWE0MTQ3YjNjMDIzY2NlYTdjNmRmOGZjYzYxMzBhOWQzOTA3MTQ1IHB5M2sKKzgyNjA4IDIzOTllMDQ1MWQwZGVjODY2MDFmMzRjMWZiYmNlMzFlZTI4YTBhYjcgcmVsZWFzZTI3LW1haW50Cis4MjYwOSBkMzZkYzM3YzY3Zjg4NzA2M2VkZWZhMzcxNGMwODBmY2ZhOTY0MDBkIHJlbGVhc2UyNi1tYWludAorODI2MDkgNzRiMGViNzY1YTUwNDliMjUzZTFjYzM1MWRhOGZmMzllMzA4MmM2NiByZWxlYXNlMjctbWFpbnQKKzgyNjA5IDA3MjhiMjk1ZjUzYmQ2YTNkNzBmNWY1YzcyNWE4NTViOGYzYWYyMjkgcHkzaworODI2MTAgMjAyZjMxZDQwMzg5Y2UzZjY1OWZiMTU2MzA4ZTgyY2VlMDAzODA3ZCBweTNrCis4MjYxMSAwNjE4YzYyMzFhMWYxOTI3MTY1OTljZDYwMmZmNGJhMDAyMjJmZTlmIHB5M2stZHRvYQorODI2MTIgZTEyYWVjZGMzMzJjNzg3Nzk2ZGYyOTMwM2NmZjYxY2YxMWQ3NWI4NSBweTNrLWR0b2EKKzgyNjEzIDRmZTQ5M2Q5OWRjYzFjMjE3YmNjNTI3YjBmMzYzZmJjMDBkZWRkY2MgcmVsZWFzZTMxLW1haW50Cis4MjYxNCA3MGIwMzg4ZjlkM2Y1MjU2NWE4NTg5MGNhYWMzZmI5NDRlMzBlMmE0IHB5M2stZHRvYQorODI2MTUgM2VhNmY2OWRiMjQyNjE5ODI0YjA4YmE4MjJiN2ZkZWUyMGNkMmY5MSBweTNrCis4MjYxNyA1ODEyZGQ0NDgwN2FmOTY1MTdlZjJmM2FmODExYzFhZDRkN2M4M2EzIHB5M2sKKzgyNjE4IGQyYjE2ODlhMzM4MWVjNjUyZDdjNGVjODUyM2M5Mjc2YWI0OGRmYWYgcmVsZWFzZTMxLW1haW50Cis4MjYyMCAwNTYyZjJlMDUyOGQxMmRiZDJlMjU0YWYwNGQ0MjBiZmQwOTk4NjRkIHJlbGVhc2UyNy1tYWludAorODI2MjEgNDNhYmEwOWU4OTQ2OTM2ZWQ1M2UyYmFiODJhYjY4ZGViOThhMjFiOCByZWxlYXNlMzEtbWFpbnQKKzgyNjIzIDkxMmFiMmZiNDNmNThiMDEyOTg4MzkzNGFiZGJmNDY3ZDA3NzBhMWMgcmVsZWFzZTI3LW1haW50Cis4MjYyNCBmNjQxYmQ1NDZkZTQxMjhjZDc5Y2U3OTMyMDdkMjMwMGI0ZWY4NzAwIHB5M2sKKzgyNjI1IGU2NTU4NDllNzljNmM4MmE5ZDQ5N2I3OGMwNmIwNDMxYWIzOTI1MWYgcHkzaworODI2MjYgODc1NTVmNDVjZDZiZTU4NjdkODJkOTgyNjY5NGUyYTRlYmJkYzdkYSBweTNrCis4MjYyOCA3NGIyY2JkYTliZGE0NDdmOTk3ODM4MTIzNTU5Mzk5MTU4MTM3MGQ5IHB5M2sKKzgyNjI5IGNjZjhlNjAyMGNmMzRiNWY1ZWM4OGRkNWYyNjhiMTMzNzQ2YWYxMGQgcHkzaworODI2MzAgZjYyNjZjNDU5MTU2MzA2YzliYWJkNWZkOGYzMmQ3NzZjM2QxMGMwYSBweTNrCis4MjYzMSBlN2RhOTY4ZTNlNWEwZGE2NGJhZDlkZWQ5ZjRhZjVhMjA0Njg4MzQxIHJlbGVhc2UyNy1tYWludAorODI2MzIgNWYzZTE4NmJlZjBmMDgzNTNiNzJhZDM5NDA5OWExY2IyYzRmNjY1ZSBweTNrCis4MjYzMyAzNGUzZGJkNDdlNGZhM2VkMGI2ZjY1NGEyY2VkNDEzOWNkN2E1MzFjIHB5M2sKKzgyNjM0IDk0NjQ2NGZkNjkyMTBkNzBiNGFjNWRkZjY3OWUyNzlmYWFmYjVlZTIgcmVsZWFzZTI3LW1haW50Cis4MjYzNSA1NTNmMTBiMDM3ZDllZTIzM2JkNTFhYzBjODM5MTljYzdhNWY4YzViIHJlbGVhc2UyNy1tYWludAorODI2MzYgMzg0ZjczYTEwNGU5NGUxMGQ3OWU5YzE5M2U3ZmQwZTJmMmM4NDg4NCBweTNrCis4MjYzNyAzODJkY2IwYzYwNzNhMTQ2OGJmNDcwYjIyZjcyY2ZlMDc0ZWU2NDk0IHB5M2sKKzgyNjM4IDU1YTAyNGY1MTUyNGJmZDAzNzE4OGQ2MWY4YWVlYmJmMjMyMWY1YTQgcmVsZWFzZTMxLW1haW50Cis4MjYzOSA4YzZiM2RjNjUyZmI5MjMyMmE4ZDM0ZjZhNjM1NDFiM2UzZDMyNjQ5IHJlbGVhc2UzMS1tYWludAorODI2NDAgYTAwODJhNzRkMTI1YTJlODVmOGNkMDVhNTNiMTYxMDY2YmFkYjU1NiByZWxlYXNlMjctbWFpbnQKKzgyNjQyIDA0MDY3OTA4N2QwMzUyYjU2NTEzY2U1Mjk0MjNjMjkyMGMyMjY2MTkgcHkzaworODI2NDQgY2EwNTM3MWNmZjEwYTJmOWQwZjJhMDNiNTEzODQ0ODQ4ODY4NzFhMCBweTNrCis4MjY0NSBmODQ1ZWQxZDg5ZDViYjhjMDMwYThhMTcxMGNkODBiNTFhMmI1ODFiIHJlbGVhc2UzMS1tYWludAorODI2NDYgY2EwYTMzMDFhN2VhMWJhYWJhZjVjMDJkYzY1M2IyN2ZiODlmYjM0YSBweTNrCis4MjY0NyAxMGU2YTU0MzBiNzk0NGI2YmViZjE1M2UxZDZmYWEzYTQwNWI4MDkwIHB5M2sKKzgyNjQ4IGM3MzA1YmE4NDYxOTdiOTM1YmZlZGEwNWQ5NDhlYzg1ZjYyYTExOTYgcmVsZWFzZTI3LW1haW50Cis4MjY0OSBkMTU2ZjdiMzljM2MzNDMyM2ZhZjk0N2I5ZmJmMjAzNmY4MTg2NTcxIHB5M2sKKzgyNjUwIDViYzdkYmQzMWQxYjQ5NDZjMzk1ZGM2MzIwY2Q0ZWExZTYzMGViYzQgcHkzaworODI2NTEgYjA0NDYyNTMyMmUzMTZjNjQ4NGE1MzI2MWRmZGIzZWI0YWZlMGFmMiByZWxlYXNlMzEtbWFpbnQKKzgyNjUyIGE2MzE4ZGFmYjhlYjVjMmQ4MTlmZDcwODIyZGJlYjVlNWZmNzBmZWYgcmVsZWFzZTI3LW1haW50Cis4MjY1MyAzZDhhN2Y3MDFjYjFjMjUzN2Y1ODFhMTc4MGExMjZlZmY2NTUyZDY5IHJlbGVhc2UyNi1tYWludAorODI2NTQgMDlmNWZkMDEzYzBiZTJmZTdiYjBmNDk0NjRhZTMxZTcyNjYzNGE5NyBweTNrCis4MjY1NSA5NzUyYjg1YzAxMTkyZmU4MzhkYWVkMGVmYWJhNTI3MDZkMDI2YzUxIHJlbGVhc2UzMS1tYWludAorODI2NTYgNmVkYzNlMmE3ZGE0YWFkYWZhY2U0NTY5YjBmYzdiYmIzNTU0NDNiMiByZWxlYXNlMjctbWFpbnQKKzgyNjU3IDk3NGY4ZDhiYzBkNDRkMTVkOGI4ZGY1Mzg1MmViYmE4Y2U3ZDg2MGMgcmVsZWFzZTI2LW1haW50Cis4MjY1OCBjOGJlY2Y2MDZhMGFhYzA5NmJmODVmNDk2ZDY4Yjk2MzgyODY3NGNhIHJlbGVhc2UyNy1tYWludAorODI2NTkgNzMwYjcyOGU1YWVmYjU2Y2NmYzRlOWMyY2M5MzRjMmFkODYzODA1OSBweTNrCis4MjY2MSA3YTIxNmJjMmJlZDY1MGI5NzA1YjY4OGE4YzBiNjhlMjc0M2NkNmQ5IHB5M2sKKzgyNjYyIDM1MjhjNGU3ODBiZjA3YjhmOTAyYWNlNzUzNzBkNzY3ODU3YzBmYmYgcHkzaworODI2NjMgZTRiZGE0YTUyMGNhNzUyOTJhMTcxNjBiNTU0OWQzZDYzNDAzMGNlYiBweTNrCis4MjY2NCBmZjJkMWIyY2RjNjkxMzlmMzJkZTc4NDcxM2QxYmRmMDVkMjhlMjMxIGltcG9ydF91bmljb2RlCis4MjY2NSBjNjdmOThhZGI4ZjM2MWNiMTkzNjc2YzhmNTFjOTE1NmU5MjdhYjBjIGltcG9ydF91bmljb2RlCis4MjY2NiA1YjYzMTg1MzcyZDFmMzdhYTcxZDZmMTJiY2IzNDY3Mzc3Y2M5N2MzIGltcG9ydF91bmljb2RlCis4MjY2NyAxNmUzNDhmMTY1Zjg1ZDM0ZDZlYjhiOTc0OTU0MmY0ZGNlMWVmZmI4IGltcG9ydF91bmljb2RlCis4MjY2OCA0NGJkNGFkMWY2ZDQyZmFiMjA0NDUwNjQ0ODUwMGQyMzcwMzdlZDNmIGltcG9ydF91bmljb2RlCis4MjY2OSA1YjZmMDNmMzkxZGFmZTI0NjBhMGEzOTk4NTgzYjU2Mjk3ZGU3MzExIGltcG9ydF91bmljb2RlCis4MjY3MCBlOTYyNzlhYzZkMTQ2OGEzNGQxYTdmNDMyNzA3NTM4ZTBiNDI4MTYwIGltcG9ydF91bmljb2RlCis4MjY3MSBhOTdmNzUwM2U1MGM0MDU2ZmUzMGJhNWY0MzQ5MjUyMGNkZGMyMWM4IGltcG9ydF91bmljb2RlCis4MjY3MiA2MGZjOTQ0NmFhMmUwMzUzNzZkZmEwNzExM2NlYTZmZmQ2YzkzMWNkIGltcG9ydF91bmljb2RlCis4MjY3MyBjMzBkODQ4MDdjNjJkMDk1ZTg0ZGRhNWZkMzI3NTBiZGFhM2ViMzc5IGltcG9ydF91bmljb2RlCis4MjY3NCBkZmUyNjAyMzFjNDljMTQyOThhZTEzYjUxNGRhZTMwNThmNDYwYWFmIGltcG9ydF91bmljb2RlCis4MjY3NSAwY2Q5NDE2YTFjMWU2N2I3ZjQwOWU2ZjMzM2E3ZGI2MTIyNWRiMTU5IGltcG9ydF91bmljb2RlCis4MjY3NiBmNzM1YmIyYjA2ZGUxODU5OGRjMzA4YTE5NDQ4MjEyM2IzMjY1MWFmIGltcG9ydF91bmljb2RlCis4MjY3NyBiZWJjYjZhYjA5YTU2NWIxMzc2ZGUxYTcwYmQ4NTlhNTUxYWY2ZDJkIGltcG9ydF91bmljb2RlCis4MjY3OCBjODcyZTRmYWExZTc0MjM5MWViZTA3MjVmYzgzMzM2ZWRjYjgxOTcwIGltcG9ydF91bmljb2RlCis4MjY3OSAxNGRhN2MzZTkyMjMyYjE0YzM4ZDdmMDBmNTFhN2M3MGM4YTJlMGRiIGltcG9ydF91bmljb2RlCis4MjY4MCAwOTUyZTJkZjNjNGQxYjk4NGNjMGVkZGI3NjVkOThiMjJmYjI4MjI0IGltcG9ydF91bmljb2RlCis4MjY4MSA3NmYzNmNhMTA2MWY0NGZhNWE3YjkxM2I2OTI0MjRmMzc5NDFhZWUzIGltcG9ydF91bmljb2RlCis4MjY4MiAyMmI5Mzg4ZDdjMGVmOTBhN2U2NjE0Y2VlNDA0YmYwNWQ1OWZlYWMwIGltcG9ydF91bmljb2RlCis4MjY4MyBlNDIzM2U5Yzg0NjEyMjY1MWRhYzgxNWJlODQyMTc2NDBjNzkyYzc1IGltcG9ydF91bmljb2RlCis4MjY4NCBlNzY2ZjdiY2IyZDU1YzM0Nzc0ZGEzMmJlNWNmOWI4ZWNhM2RhMzYxIGltcG9ydF91bmljb2RlCis4MjY4NSA1Y2E0MWRlZWJkMGZmYTJlZWY4NjMwZGRhN2I4ZmNkZDBmNGU0Zjc1IGltcG9ydF91bmljb2RlCis4MjY4NiAyZTlmYzUzMmQxZDFiZDliYzgxYjA1Yjk0OTkwYTA0MTM5ZGUyYzVmIGltcG9ydF91bmljb2RlCis4MjY4NyBlMWQ4NmNmMmNmZTQ0YmUwOTQ1M2YxZWExOThiZTBiOTE4MmM0ZWZhIGltcG9ydF91bmljb2RlCis4MjY4OCBlMGZiNDllYzk0NWNjYTU3MjQyOTQ2N2EwNjg5NTM2MzM1OGJlMjA3IGltcG9ydF91bmljb2RlCis4MjY4OSBhMmM3ZjIwNjBlNWJkYmQ4N2NmYmFmZDU0Nzc5ZmM1OWY0YjYzYzg1IGltcG9ydF91bmljb2RlCis4MjY5MCAxYzFmZDk1ZTEzYjQyZWJlZmJjMjY4MWYwMzE4NzZlMjQ0MjU1OGUxIGltcG9ydF91bmljb2RlCis4MjY5MSAwYTMwYjU2Y2EzYWM5ZGUxYjE1YzhhMzY2ZmQwZGMxNmVlYjIwOWFkIGltcG9ydF91bmljb2RlCis4MjY5MiAzNjBlMWEwOGU1M2I5NDgwYWE1ZGNiMzhlMDk5ZWRkYmMyOTYzZmYyIGltcG9ydF91bmljb2RlCis4MjY5MyA2MGZiZmFhN2Q5M2RmZGIxOWQ0ZGIxM2Y5MzJhMmMxZDA1M2VjMzRlIGltcG9ydF91bmljb2RlCis4MjY5NCA5NTBiNDc1NGJiZTJhYmZjMGM1MDFiYmYxZjYwYjkyNTNhNTgxMTk0IGltcG9ydF91bmljb2RlCis4MjY5NSBmZmViODUxMjhjN2U4NDgzMzE2OTZiNmUxNGIyM2E0ZWE3Zjk4ZWE5IGltcG9ydF91bmljb2RlCis4MjY5NiAwMWU0ZTNkMzc3NGQ2MDQ1YzI5OTIzNTg0YzA4ZjdlODQ1MjI4NGM1IGltcG9ydF91bmljb2RlCis4MjY5NyBlODFlZDNhZDA2OWQ5YWMyZTVlYTljY2Y4OTNhNTgwYWZkOTAzYzgwIGltcG9ydF91bmljb2RlCis4MjY5OCAxYWRjMjNkY2U5NzE3YzQ4NDAxMDBhZDJlMzM5MmU0YzYzNjNiYTMzIGltcG9ydF91bmljb2RlCis4MjY5OSAxNzdhODJlY2ZmNjcxMDZhYmJjNGM2NzU2NWMwZjUxY2JlNjAwMjUzIGltcG9ydF91bmljb2RlCis4MjcwMCA4MjQ5N2YxYzFjNTQxNTI4M2FhY2JlYmEwM2IzYWNhNzM0ZjA3ODA5IGltcG9ydF91bmljb2RlCis4MjcwMSA5MGNhNDVkNjU2YzJkNjU3MDU1YWU1NjdiZmQ1Y2IwMzUyNDlmOGQ5IGltcG9ydF91bmljb2RlCis4MjcwMiAzMGJiYzE4NjBmYmIyZTdiZDA2NjY5YzQ2NmFlNzc0ODc0YTdmZDYyIGltcG9ydF91bmljb2RlCis4MjcwMyA4NjVkMThhZmRhMTUxMDk5M2JjZWI0ZGEyMDZhMDU0MjZmNmM1Yjg3IGltcG9ydF91bmljb2RlCis4MjcwNCA3YWYyMjllYTJlNjY1YTllYzFhZWE2Zjc3MWM1ZTBmMGRmZmVlZWY0IGltcG9ydF91bmljb2RlCis4MjcwNSBhMjljYzM4NTAwMjlmNTdlNzIyMzFhYTNkMzZjNmIzYTljYzg0OGM4IGltcG9ydF91bmljb2RlCis4MjcwNiBhNDIxYjRiNDVhYTY2MjBmMmQxYTQ1MWY1YjFmODJmNzBhZjY4ZTY0IGltcG9ydF91bmljb2RlCis4MjcwNyBhN2JiODRmODQ5OGExZjZiYzU1YmNkMWMyZGEzYzZlMWIwNTUzNzJiIGltcG9ydF91bmljb2RlCis4MjcwOCBhZjdlYzE2OTEwNDdiY2MzMmEwNjI1NzA4ZmIxMmVlMzU5MWZiOWQ4IGltcG9ydF91bmljb2RlCis4MjcwOSA2OGIwZTcyZWY0ZjIyMWQwYjVlNmEzYmVhNzUyYTRiY2M4OTY2YWQ4IGltcG9ydF91bmljb2RlCis4MjcxMCA4ZTcwYTVlYzFhY2E2Mjk1NDhlOWMyN2YxMTczMDVkZjljODljZWU0IGltcG9ydF91bmljb2RlCis4MjcxMSA2ZGNhOTM3MDJlNmJkMDJkZGM3ZWFiNDJjYTFiOTdiODE3NzBjZmU4IGltcG9ydF91bmljb2RlCis4MjcxMiA3NmMzNWQ4YTI2YTAxMjBkOGQwYjc5MzgyNGY5ZDg5OGUwZWNhM2Q5IGltcG9ydF91bmljb2RlCis4MjcxMyBhN2NmOTAzYjE3ZGNiMWUyNTZmNzI3N2VkNThlNmM1YjI4YmRlNDgwIGltcG9ydF91bmljb2RlCis4MjcxNCA3OGU2YTZmYmQzNjIxYmQ4ZjcxMDM0OTczMjFmNDg1NzcxYTI5ZjhjIGltcG9ydF91bmljb2RlCis4MjcxNSBhYjE3YjBjMjJiYTFkMjRlMDU0ZGI5Mzk0ZDUwY2ZmNzFiOTYyZTBjIGltcG9ydF91bmljb2RlCis4MjcxNiAwOTViMjk3MmM0NGYxMTIzNmMwZTI5MzAzYzIzN2QwMDRlZDljNTBlIGltcG9ydF91bmljb2RlCis4MjcxNyAzNmY2ZWQwNjUxZTEzNDBlYmY4MWU0OWQ1MGI5MjIwZjlmMWU0YzlhIGltcG9ydF91bmljb2RlCis4MjcxOCA4NTJlNGE3NWUxNTY5MDRhZTQ3ZGY5YmY1YmVkZmY2ZDVjNDZmMTc1IGltcG9ydF91bmljb2RlCis4MjcxOSBmMGVmODNkOTEzNTQ1YmRlMzA5YzRiNGEwMGZkYzA4MTM0YjJjZWE4IGltcG9ydF91bmljb2RlCis4MjcyMCBlY2JhOGZhNWM3NDNlZTBhMjM5NjU1OTE2ODkyMDJhNTg5ZDYxMzcwIGltcG9ydF91bmljb2RlCis4MjcyMSA4ZGNmODQxZjFiZDQwNWZlY2JlZmIwNDZhZDRiNDI1MzMxODY1MGIwIGltcG9ydF91bmljb2RlCis4MjcyMiBiYzBiNGM5MThkZGI0YTdkM2U4OTJjZTQ5ODRjZTc5NTBhMDMwNGRlIGltcG9ydF91bmljb2RlCis4MjcyMyAwZTc4MmE2ZTZiYjc2ZTNlZGE3NmE3YWQyZmNmMDhhYmU1ZWFkZjcxIHB5M2sKKzgyNzI0IGM3ZjM2MTcwMjhhODM5OTE3YjUxMmNhNWJhNTdiZmI4NmRlOGQyZDIgcHkzaworODI3MjUgYTIxNzcyNjJmNmI3ZTVhNzQ0Zjc0MmI0MGRiNzdlZDkxMzA4Y2RhNSByZWxlYXNlMjctbWFpbnQKKzgyNzI2IDA4ZWVlODlhZjdiOTlkMTNhMDU5OGRmNTkyNzc4ZTlhOTYyMzI4YTMgcmVsZWFzZTI2LW1haW50Cis4MjcyNyA4YzYxNGJjNzY2YjQ1Mzk5ZjMxMWRlMGIzMmVhZTI4MTgwNmEwYTYxIHJlbGVhc2UyNi1tYWludAorODI3MjggMGQxMjIwMTc1ZjI5ZWQwMWYwMDk2NmQ1Y2FhNmNhOWQ0N2MyNzJjMyByZWxlYXNlMjYtbWFpbnQKKzgyNzI5IDhhYWFmMDFmY2YwM2VjYTQ0MWFiODRlOWYzOGQzYjFlMGEwYWZlNmMgcmVsZWFzZTI2LW1haW50Cis4MjczMCBmM2JmZGZmMjE0NmFhNGUxMDMyM2E1MGZjYzRhOTdmOTljZTM3M2IxIHB5M2sKKzgyNzMxIGNmY2Y2ZjYzZTBiNGFjMDViNTJhMDkxNTEwZTVjZDVmZWE2YTFmZjUgcHkzaworODI3MzIgNTg1YzcwZGMxZWFhNGY3ZWVmYmZmYjFhN2ZiMzFkMmUwNzM4OWRjNyByZWxlYXNlMjctbWFpbnQKKzgyNzMzIGRiMjkzZmQ3NTI4Yjk0YzAxN2NkYzJjMDZiNTVkMzczN2Y3YTM2NmYgcmVsZWFzZTMxLW1haW50Cis4MjczNCA1MjNhZmZkNGQ0NzI5MzcwOTA3Y2VmMzU5ZDBjNTQ5ZGYxYzM5MmIzIHJlbGVhc2UyNy1tYWludAorODI3MzUgNDNhMGZjMTg0YTU4MTc0OTEyZWFhMTRjY2ViZmQ3YWY1YmZmM2RlMiBweTNrCis4MjczNiA0N2Q0OWI0MDYyMDNhMGYyYTk3ZjE1ZTFlMDY4YTI4ZjM3NjQwNTRhIHJlbGVhc2UyNy1tYWludAorODI3MzcgZTBkZWRkMmRjZmE4MWUwMTFhOTY3MWQ1ZDZjZmQwN2MwYzRiZDcwYiBweTNrCis4MjczOCA3ZTk0YzAzYmI4NGUxNTNlYzFmMTFlNGE3ZGEwYzI0NzMwMTQ2ZTRhIHJlbGVhc2UyNy1tYWludAorODI3MzkgMTBjMDYzMGYxYzE0M2E1Njc1M2MzYzQwZjVmMDBmOGVmMjljNWZkOSBweTNrCis4Mjc0MCAwODlmZDcxMGRjYTg4NDkxNTllM2VjYzUxNTNiYTI3N2FmODU0ZDUzIHJlbGVhc2UyNi1tYWludAorODI3NDEgN2Q5YWIzNWU0M2JjNjZhZjljNDJkOWVkNzg4YmRlZDMwMjY3OWE1NCBweTNrCis4Mjc0MiA4MTVhZTdmMzczMmJlZWJkMWE2ZTFjYTMxMmE2YTVlYjMwZjIyZjE0IHJlbGVhc2UyNy1tYWludAorODI3NDMgNWFlN2RmNmM5M2VkOTliNGJiMTU3YWNlODY1NjBiM2E4OWQzMmY2MyBweTNrCis4Mjc0NCBlM2Y4M2Y1NmRkM2NkZTkzNmM3ZDE5MGZmMzg5ODdmMTljYjg4YWRlIHB5M2sKKzgyNzQ1IGU5N2NkZDVjNWU0ZmM5OTE1NjkyYjgxYzY2ZWUzMzkyYjQwZjViMDMgcHkzaworODI3NDYgOTJhOWRjNjY4Yzk1MjlmMDE4YTYyMGI0NzA3YmMwOWNlMTg2MTZjMCBweTNrCis4Mjc0NyBkNDFhMzFmNWJmODJmNjI0YWYyMTlmOTY5YTdlNTZjYTUzNTU5OTUzIHJlbGVhc2UyNy1tYWludAorODI3NDggNGVmZjljMzVjNTRhN2JiOTg1NGZlMWI2MzEzNGE1ZWM1MmU3YWJmZSBweTNrCis4Mjc0OSBmYmE5ZTkxZTg4ZGNkZjBjNzQ5MzQ2YmY2NmQxMDQxNGU2NTlmZjdkIHB5M2sKKzgyNzUwIGM3MGQ1MGQyMWY4NTFhNmE1NzE0MDY5OWVmMmRhOWU3YmFiM2NmNTQgcHkzaworODI3NTEgZGUxYjlmYzNlMWU3MjIwZjQzMmY2MDdiNThhNDYxM2ZhYTFlNTY3ZiByZWxlYXNlMzEtbWFpbnQKKzgyNzUyIDhlYTYwYWUxNDk2OGYzNjlhMjljMzQyMjg5NWQ2OTVjNTg1MTczMjAgcmVsZWFzZTMxLW1haW50Cis4Mjc1MyBiZDE5YzcxNzhmMjQyYzM4NDE0MWY2MjJhMzMwN2FjYTA2MWIxN2RiIHB5M2sKKzgyNzU0IGY0NzgxYWE4MmIzNzUwYjFkNDg5ZDYwYzMxYjc2YTQ5YzM5ZTAzZTIgcmVsZWFzZTMxLW1haW50Cis4Mjc1NSA1MDI1YmEwNTUzYjYzMjllYjE1OGQ0M2VjMTZjMjU4YzU5ZjkyNmRkIHJlbGVhc2UzMS1tYWludAorODI3NTYgNjM2MTNjNGY2MzE3ZjA2YTA1MTY1YTNlNzI2ZjYxMGQzNTEwODIwNiByZWxlYXNlMzEtbWFpbnQKKzgyNzU3IDRkMjIyZWUyYTFjODU0NzZkYzBkNmNlZDVmODJjZjkxYzBhM2Y4MjQgcHkzaworODI3NTggN2I1NzI4OWViZTBkNGVmOTkxZjU1ZmYxYzk3YzkwNDM4M2U1M2NiMSBweTNrCis4Mjc1OSA5ODNlMmMwYmY4ZGNkZWNkYTk5YmY5MTIwNzYxZjI4NWEwYzNjOTUwIHB5M2sKKzgyNzYwIDM1YzU5ZDExYWUxMzgzMjc5M2IzMDhiNDFjNzRjOTk1ZTg0ZmE5NDUgcHkzaworODI3NjEgYmNiNzllMWFhMDBmN2Y0NGQwOGI2Yzc4NTY3YTU1MTM4MmY2MzJmOSBweTNrCis4Mjc2MiAzM2RlOWNhZjcwOTAwMDAyMmE5NzJiYmJiZGE1MDZiMTJiMDNiODA5IHB5M2sKKzgyNzYzIDI1NGVmNTIwNTEyOGFjNmQ2MDI5MWI2ZTI5YTVkMDBjNTNhZDY1M2MgcHkzaworODI3NjQgOTQzNzg0NzBhZTFjOTA3ODNmMjJlNzg4NTk4NzE4YzNkNDdhODBiYyBweTNrCis4Mjc2NSBmZjFhODAzNzY0OGM0YmM5YzU0ODc1ODc0OTUwN2E3MWE1MTYwMDBhIHJlbGVhc2UyNy1tYWludAorODI3NjYgOGJlMmI5ZTQ4NzE4N2JkYzI4NTdiZmI4MjgxNGRlODU4MTZmYjhiMSBweTNrCis4Mjc2NyBhYWMwOTJlYWY5ZDE4MmQxNTZiYzJkN2EyMDBjOTM2ZmEyNmViYzE3IHB5M2sKKzgyNzY4IDBmYmRjM2ZhMDI0YmU1OGU4ZjFiMWQ4ODg3ZWY4ZDhlOGQ0NWIwM2IgcmVsZWFzZTMxLW1haW50Cis4Mjc2OSBkYWIyODZkMmJhODJmZmFiYzk5MmEyYzE3ZDZiYzc4MGM5ZDcyOWE3IHJlbGVhc2UyNy1tYWludAorODI3NzAgNDk4NjFkZmIyNzAxODAyMTExNWYwYTIxMDNlMjM2MGMwYjIxNDJhYyByZWxlYXNlMjYtbWFpbnQKKzgyNzcxIGVkM2JjN2E5NmZmYjRiYTM3ZDNiNjAzOTAyNmVhMWE3NjJlNjAwYTIgcHkzaworODI3NzIgYWNkNmNjY2NlODM3YjkzNTE2MTA2NDYxNjZlNmVkYTczODFlYjcwMiByZWxlYXNlMzEtbWFpbnQKKzgyNzczIDQyOWQwYzdjZGI4NTZkYzU5YjIzYTE5YmViMTgyYzE3MTI3N2FiYjEgcmVsZWFzZTI3LW1haW50Cis4Mjc3NCBhY2VmNWQ2NjA4MzMwMDk4YzY2ZjNlMWNhODZiNDNlOGI5YWVmNGM5IHJlbGVhc2UyNi1tYWludAorODI3NzUgMDNmNzNjNDZmODljN2NhNzQyYzg5ZTVlZjRiMDNkZjljYWEzMTE1MyByZWxlYXNlMjctbWFpbnQKKzgyNzc2IDAzMDM2YWZjYTU0OTFhMDE0NDk3MTY4ZTJiMmE5NjI0MmU4Y2VlNzcgcmVsZWFzZTMxLW1haW50Cis4Mjc3NyA1ZTYwYzdkYjBmNTEwZWRiYTMxNmZkYTlhOGZjNWJjZWRmMjgyMzZlIHB5M2sKKzgyNzc4IDI4NzU1ZWI1M2YzODk0NjBlZGIwYjJlMmEyZDRmZTZkMDYyNjI3NTYgcmVsZWFzZTI3LW1haW50Cis4Mjc4MCBiNThiNGFhNDY5YzRmODE3OGY3MmVmYmYyYTNlNzU0MWZjOWZmYzVmIHB5M2sKKzgyNzgxIDE2MzYxMjRlNWZmZWViNmNjMTEyMjk1MWFiNGEzMzNmOWZkNzEwYzAgcmVsZWFzZTMxLW1haW50Cis4Mjc4MiA3ZTA5YzY0ZDRhNjRjZTBkMjY0NzFjMjc5ZDA1YTQ4NmFhNGZkMDRhIHJlbGVhc2UyNy1tYWludAorODI3ODMgZjc1NWQxYWI4MDc0NmRiNmNhNTBlYWYxMzBhNjkzZmU0NjI1NTM3NSByZWxlYXNlMjYtbWFpbnQKKzgyNzg0IDUwZjRmMTEzYmJjM2Y3MzFmYmYwMzIxMGQyOWFjYjVjYzE5YzU5OTUgcHkzaworODI3ODUgYTk5ZThhZGFjMDgxZGZjYTI1YmYzOGY1YzFiMGEyYjFlMzQzMDVkNSBweTNrCis4Mjc4NiAzNjdkNjFlNmE3MGYwNjhmMTc1Yjc0OTk1OGJmYTVmMzlmNTk4NmQwIHJlbGVhc2UzMS1tYWludAorODI3ODcgNTU1MzNkNTgyOGIwMzFhNmFhYjYyZjllOGM4MDUxZDUyNTVjOGFlNiByZWxlYXNlMjctbWFpbnQKKzgyNzg4IGYwZGQwM2JmNmJjNWZjMDc3ZDdhNTUwMTNkYTA2MjUwNDIzNWQwMjAgcmVsZWFzZTI2LW1haW50Cis4Mjc4OSA1ZGIyZTA3YzQ0NTFmYzJiMzkxMjI5MGU3MmIwNGZmNmIzNjRhZWQ4IHB5M2sKKzgyNzkwIGJhMGY2ZTE3ZWIyMjNjMDNiZGEzYTZhZWJmYWU3MDgwZTFiM2YyYTggcHkzaworODI3OTEgMGIwNzFlMWVmZDQxNGYwYmQ0MTlkODU5MjViYmU2ZjhiN2E3YmQ0MyByZWxlYXNlMjctbWFpbnQKKzgyNzkyIDgxZDA1NTdkZjY0N2JmZjVkNjM4MmRmNGQ1ZmMwYjg0OGNhZTNiNzkgcmVsZWFzZTMxLW1haW50Cis4Mjc5MyBmOTdiZTU4MGQ4YzE2ZWIwZjlhYjYxNTA4ZjZhZTkxNGRjM2QxN2E5IHJlbGVhc2UyNy1tYWludAorODI3OTQgYjkxNTE2MjQyN2FiNGY2ZTc0OTc2OTQ2ODUxZTFmOWFmZDJlOWQ1NCByZWxlYXNlMjctbWFpbnQKKzgyNzk1IDQyNGUzZmNmZDNhZDExZTA1MTc1NDU0ODk4YTAyYjM2ODkwZDI4NzkgcmVsZWFzZTMxLW1haW50Cis4Mjc5NiBjZTkzNWU3MWJkMDdlNTE4ZTJjNzdjNDE5YjAxODAwYmNmOTU2MjVjIHB5M2sKKzgyNzk3IDQ3MDdlZGU0ZDE0ZmYxNGU3MWIyMzU0ODkxNTAzMDlkMjAwN2Y4M2QgcmVsZWFzZTI2LW1haW50Cis4Mjc5OCBjOGI3N2VmZThiNTZlOTczNzczZWZmN2MxMGYyYTM4Yjc4YzBlM2UwIHB5M2sKKzgyNzk5IDBlNmZiZjUxODg1M2ZlYmZmZDc3M2NlNGYwMGRjMzMwY2EwMGZmZGEgcHkzaworODI4MDAgZWRhYjUwMWY5ZGY4ZWZlMTgyMjI1NmExYTRmYTUyZTNmNmRiNTY2NyByZWxlYXNlMzEtbWFpbnQKKzgyODAxIDI5N2YyYzI4ZjE4MjkzMzlmNGE4YjFmM2MwZDA4YmRjOWY5MTdjNzcgcHkzaworODI4MDIgZDVkNTEyYjg2NWE3NWQzZGIyNDU4MmY3MGEwNjk1MGVlMzliZDRmMiByZWxlYXNlMjctbWFpbnQKKzgyODAzIDUwMTJmZmFlMThmYWM2YjkyY2MzN2VhMTNmMDU0NmQyMGU1Y2E0NmEgcmVsZWFzZTI3LW1haW50Cis4MjgwNCA5MGJmMDYzMWJmYjhlZTg3MGRlYzdkYjlhYWE0OWQ2YmJhOGRkODI0IHB5M2sKKzgyODA1IDRjYjBlODdjMDdjYTM2YTFmMGRmMTU5MDQ0YjU4NDU0Y2E5YjJlOTEgcHkzaworODI4MDYgNjEyZTEyNjMxNTExYjIyNGQzYjRkMTgwNDBlZmE2ODEwMzcwNmY3MiBweTNrCis4MjgwNyBkMDkwZjYyNTRjNDUzZGNlN2Q3NGRmYjA4ZTc3NmM5ZTJmZjU2YzllIHJlbGVhc2UyNy1tYWludAorODI4MDggMzY1ZWVhYjRhMzUwMjYwYWY3ZTEwNzYxMmE4ZjI2NjBmZmFhZTMxOSByZWxlYXNlMzEtbWFpbnQKKzgyODA5IGZjZmE3YmJlMTg1ZWFmYzBhOWIxNTdjNjI5ZjEyNWExMWJkODQzZGYgcmVsZWFzZTMxLW1haW50Cis4MjgxMCA3ZjU3NzUzOTVkMzI4YjBjMjBkZjFjYTBjNDE3ZTRhMmY1MzgyYWVmIGltcG9ydF91bmljb2RlCis4MjgxMSBiZTEzZmYzNzU1ZTlmYWI3MTYzMWNjOGU4NzQzZWJjNTQ5NmQ3MDRmIGltcG9ydF91bmljb2RlCis4MjgxMiA4MWYwZjBkNTNkMTA4NGU2MTcyYWUyNjAzZGU1MDdlZTc4NTZlZDEyIGltcG9ydF91bmljb2RlCis4MjgxMyBkMTM5MTRlY2QzNzBmZmJiNDk4MTJmNWVmYzdiNmJhMzg0NjU4ZjNlIGltcG9ydF91bmljb2RlCis4MjgxNCAxODlmYTkyZDE1ZGM1OTc4MjllNzVmMDRkYjFkOTg2YmYzNmQxOWFjIHB5M2sKKzgyODE1IGIxNDM4ZDI2YzE2N2I4NjIxZGU4YzIyODllNzA0MWVjYmExZjI1MWIgcmVsZWFzZTI3LW1haW50Cis4MjgxNiBhMzUyYjkxNTZjZWVjYjI3ODg0OTg1OTkwM2NkMGQ1ZTRlNWQ4ODdmIHJlbGVhc2UzMS1tYWludAorODI4MTcgMGY0YjdjMDdkMWIzN2I1MjExYzdjMjM1ZjEwOTM0MjBlYmM2ZjRiYyBweTNrCis4MjgxOCA1M2U3YWU4Y2EwMzkxNDhjZDRhMTI1NjY4ZGQ3MWMyOGYzN2M2MzM0IHB5M2sKKzgyODE5IGVhY2NmMWExY2I5MDNiNGRkNjgyM2UyMTFmODk5MTQwYTlmY2MwMWYgcHkzaworODI4MjAgNGMxMWU0MTQwY2VkMWZhMzg4ZDc0ZDZhYmQ5NGZlYTA4ODQ0Mzk5OCBweTNrCis4MjgyMSAwNmIzODkxYTYzOTUzNGJiNGU0MzUyYmNjNzEyZjE1MDBkODcxYWRjIHB5M2sKKzgyODIyIDFjZjQzYzZlNjU2NmIzNjI5ZmYzMmMzYjI4NzQ3YmJiMWU3ZjZiZjYgcHkzaworODI4MjMgMTEyOWQ0ZGZlZWQ2ZmUxZDFiZmU4YzJkYzkxYTdhOWFkY2IwMTc3MCByZWxlYXNlMjctbWFpbnQKKzgyODI0IDQzMjkwOGQ1MjFjZWZlZWI5NTc1MmRiY2Y0ZDY5OGUwZjBhYmYxNjAgcmVsZWFzZTMxLW1haW50Cis4MjgyNSAzMmQ4YjIyYjBlN2M1ZTYyOTBkMGY0ZTdjYzk0NzA3ZWY1ZDYyOWJiIHB5M2sKKzgyODI2IDVjYTIyYTFiZTNjZDIxNjhlMzE0YTQ5N2JmZDk4YTIzNGZiNzI4MTUgaW1wb3J0X3VuaWNvZGUKKzgyODI3IDE5NDM4NGI1MzgwZTUyNDM4ZDJhYmI0YWEwNzM2MGJhNTc0MTAyZjcgaW1wb3J0X3VuaWNvZGUKKzgyODI4IDRkZDk4NTJkYWU5YjNlNzBlYjk5NDFhMGFmY2QzNGI3ZDA2MGVmODAgcHkzaworODI4MjkgNzM3NTE5ZWYxNjJlNmVmMjc2NmE2ZWJiMTQ2YjA3ZDRlNmY4NDA2YiByZWxlYXNlMzEtbWFpbnQKKzgyODMwIGFiMTAyYTIyNjAzODNiMTJkYzU3Mzk0YzA1NTY4MzBjOGY2NTY0MDggcHkzaworODI4MzEgM2YzN2UzY2NjMTMxMzg3ODdlY2I4N2EzNjcxYzI2ZTA5Yzk4MjdkMSBweTNrCis4MjgzMiA2NTc2ZmQ0YzBkMmUzMTE4ZDQ5NGQwZWRmMGViMjQxMTQ0N2IwOWYyIHB5M2sKKzgyODMzIDQ5YjgzYmZjZmE4ZmJiYTNmZjk2ZDZiNTM2YzczOGQ4NjJlOGZlYjEgcmVsZWFzZTMxLW1haW50Cis4MjgzNCA4NDlmNmUyMjBhYTBkMjMxMGY4YTYzMzI2MDUwMTEwYmM5MWM0MzE0IHB5M2sKKzgyODM1IDMwZjY5NWVjOTQ5YmQyMjU1MzhkNDhhMWRjYzM3ZWUwYmUyOGRkOWEgcHkzaworODI4MzYgOGU0MmM3YTVkYWI4ZDhmYjY0ZGExMGQyYTAwZGUxYzY4YmM0MjI1NiByZWxlYXNlMzEtbWFpbnQKKzgyODM3IGY1YjE4ZjI2OGY1N2Q4ZTk2MDJlY2VmMjYwY2QwNWExYjAxZGUyNTUgcHkzaworODI4MzggMGJiNGRhZDgxNjE0Yjc5ZjIyNmZkMzJlZmYzOGNhMTA2Y2ZmYTRjZCBweTNrCis4MjgzOSA2NjRhMjBmNGE4MzZjNzgyMmNkYjU2MTk1MGVlOTI2MjY3MTQ1NGE3IHB5M2sKKzgyODQwIDdlYWJhNDEzZmRhNGI4ZjI1NzYwMmEwNTZmOTJiMTVlMWNhMGMzOTcgcmVsZWFzZTI3LW1haW50Cis4Mjg0MSA5NGY1Mjk3NjRjMzg3M2M2NTFlZDQ1MTgxZTgwYjI2OGJiMzVlMTg3IHJlbGVhc2UzMS1tYWludAorODI4NDIgZmNkNDEyM2FlZDkzNDZjNjc5ZmY4ZThlYWU2MGQ3NjRjYmIzZGNhYyBweTNrCis4Mjg0MyA2MGZkZjE0NzAzMmNmMTVmOTc5NjkxZDdiNjI4NDMzMzRmNjBkNDIxIHB5M2sKKzgyODQ0IDY0Y2FhNzQ4YTI4ZWFjOTFkNWEwNTZlYmRlYmJlZjkwNTBlMTgzZjUgcmVsZWFzZTMxLW1haW50Cis4Mjg0NSA0ZWY2MzlmNGQ4MTAwYjQyOTBjZDU1YWM5NjM5OTExMWEyZGRiNjc1IHJlbGVhc2UyNy1tYWludAorODI4NDYgMWY5OTgyM2Y0ZmFlNzhhMWQ3NWU5Yzk2MmE3YTViYjg2MDExZmM0NCByZWxlYXNlMzEtbWFpbnQKKzgyODQ3IDViMzUyMTMzYzQ1MjFjOWU4MjhiMzJlYTM5YzBiY2U5YTlhZDViYjEgcmVsZWFzZTMxLW1haW50Cis4Mjg0OCBiOWVkZGYzYzFlOTBhMWU2ODlhNjJjYzYyZWJmMDUwYjlhZjRjYWI2IHB5M2sKKzgyODQ5IGVkZmQ3ZWE0OGVkYjI1ZWQ2ZmM5MWI4NDA4MDBlMTEzNzM3ZWY5MTMgcHkzaworODI4NTAgYjU3NDlkZDhjNDIxYmIxZDA4MjQ2NTI2OTJjYWY2YWZhNjhiZDAzYyBweTNrCis4Mjg1MSBkYWVhOTc4YTQ4YWU4OTRmNzYzMTlhY2U1NTc0ODI1ZjYyYWE1N2YzIHJlbGVhc2UzMS1tYWludAorODI4NTIgYWQ1MWFiOGI2NGJkMDNlOTExZTE3MmU5ODUyMzkxMzk3NTBhMzMxOSByZWxlYXNlMjctbWFpbnQKKzgyODUzIDRmZDViYTM1ZGY2ZTU2OTUxODBkMDI4OWJhNTE4MjI4MTBlOGM4YTggcmVsZWFzZTI3LW1haW50Cis4Mjg1NCA5OGE0ZTk2ZjFmNjc0MDFjZTZkOWE2MTdkMmMzNGE0MGM1YmIxYWMwIHJlbGVhc2UyNy1tYWludAorODI4NTYgMzFhM2Q3NmYzODM1MTlmZTZiNTQ2ODU0ZWExNmM1MmJhNTA2MTc0ZSBweTNrCis4Mjg1NyAyYzc1NzllMDRhZDIxNDU1ZmFmZWZhZWU0MjgxOGNmM2M4OWY1NGExIHB5M2sKKzgyODU4IGVmNjdlNzQ4MTI0NDc3NWQ1OGRlOTViYmJjZDI5ODM3NzUwZmI4MDUgcmVsZWFzZTMxLW1haW50Cis4Mjg1OSBhZWRiNTNkOGMyYjhjZDU0NzIxYTk2NTJmMjY5MzU4OTU5ZDc1MGRjIHJlbGVhc2UzMS1tYWludAorODI4NjAgNjdlZGM0MjRlOTdiODJjZGVmODU0NjcwNjk2YjA5NzEwMjE2NTg4MyByZWxlYXNlMzEtbWFpbnQKKzgyODYxIGU2MDdmZTE1ZjJkNjk0MjVmNDU4YTZhZDk0ZWE1OWZjZmQ4OWZiMzAgaW1wb3J0X3VuaWNvZGUKKzgyODYyIDFlMzY3YWZlZmQ3ZTBlOTk0MTMyZWI0ZDEyMDY3ZWFhODA5ZjljY2QgaW1wb3J0X3VuaWNvZGUKKzgyODYzIGE1ZmI3MDdjYWJkZWViZDg2ZTk5NTE0ZDlkNjcwZGZlNTY4NDUyYzYgaW1wb3J0X3VuaWNvZGUKKzgyODY0IGQ0OTNhMWI0NDU3ZTlhOTExZjU3MTI1ZDRkOTE5NDA4YjU5NWI5ZDUgaW1wb3J0X3VuaWNvZGUKKzgyODY1IDIwYmI2ZmQwYmQ5YzM1ZjViNTA4ZjU2MWQ5Yjg0NTllYzZlYjBlNGIgaW1wb3J0X3VuaWNvZGUKKzgyODY2IDMzMWUzN2UwNTJjZjNiYzUzYjc1YjgwYTY3MzE2NjExZmE2OWVjODkgaW1wb3J0X3VuaWNvZGUKKzgyODY3IDNjOWIzODQ0Zjk3ODgxMTBjZTcwMmM0ZGE0MDhkZjMzYmU1MTZmMWYgaW1wb3J0X3VuaWNvZGUKKzgyODY4IDA5MTZlODU4NWFjYjJkOWU3ZDkyYTM4OTRiMzBjMWNiMjlkYzI0NTggaW1wb3J0X3VuaWNvZGUKKzgyODY5IDdmMGRhYmI3ZmQ4ZGQ2MTI2YTU5NGRjNmU4NmViMGRlMjdiMTU3NTMgaW1wb3J0X3VuaWNvZGUKKzgyODcwIDViMWI3ZjU1NzRjMDAxYmI4YTgyN2NmZGUwNDQwNjBiNTI2NDcyZjYgcmVsZWFzZTI3LW1haW50Cis4Mjg3MSA4NjM1NTIzZWY1YzYzOTU1MGE3NmZjNDRiM2ZhZGI1MjVkYmY2MmVlIHB5M2sKKzgyODcyIGQ0ZjY3Yjg2NDkyODhhNGI1MDhhZTI1YWZmZTRhYzAzZjY4YjBmZDUgcHkzaworODI4NzMgYWQ5NWUyMzEyOWM3NmNiMjZkOTBiNTM5OGEwMDQ2MGU1NjAxZjQ2NiBweTNrCis4Mjg3NCBkMzBiOWRmZmI4NmQ0MTA3NTNkM2ZmODZhZjM2Y2IyZTZkOWUyYmZiIHB5M2sKKzgyODc1IDc3MDIzMjkyZmM2MTRiY2E5NTRjYjgxN2JmMGQ4ZmI3MGFhZTk2NDkgcmVsZWFzZTI3LW1haW50Cis4Mjg3NiAxOGJkYzQzY2U1ZWQyOGU1ZGUxZjM0YWMxMmMxY2ZlNmVkODg0MmZhIHJlbGVhc2UyNy1tYWludAorODI4NzcgN2Q3ZTYzZWIzYjUzMDE4NDU0ZGM0NTNiZWJhMGFmODYxY2Y2NzIzNSByZWxlYXNlMjctbWFpbnQKKzgyODc4IDc3ZGZlMmE3NzVkMTk5OTBjM2YzYjdjZDdhMzc3ZTBkNDYzYWVlZGQgcmVsZWFzZTI2LW1haW50Cis4Mjg3OSBlYjAwNzVlNjA3MjViOWYxMzIzY2NhM2Y5MzczN2ZjN2U3MTkyY2YzIHB5M2sKKzgyODgwIDQxMzYwZjgwMzlhYmZiMzQ2MjYyZThhNGUwMjJkZjIxYmMzYThmNTMgcmVsZWFzZTMxLW1haW50Cis4Mjg4MSBkNzRkZTA1MGM0NDVkYmU5ZWNhODNhNTk2MWMyYWU1OTQyYjQzYzUxIHB5M2sKKzgyODgyIDRiNDU2NzgwYzhkOGFmNDI5YWQ5ZmMzMjBhZTNlNThiNzIxZmFmYWUgcmVsZWFzZTMxLW1haW50Cis4Mjg4MyA2MTQxY2IyZTI2ZTE0NzAwMzliYzBiNDIwMzYzMjJkMjNjNTQ3Mjg3IHJlbGVhc2UyNy1tYWludAorODI4ODQgMGYyNDMxNDAxMDIxMjc3MTk2M2U1OWZhOWE2ZWFjZGZlN2IzMDM2ZCByZWxlYXNlMjYtbWFpbnQKKzgyODg1IGMwZTA3NTZlMDk5NjYzNGVlZDVkYzljY2FiMDM0MzgwNWRhMmU5ZDQgcHkzaworODI4ODYgMzgwNWZmZThmZjM4MzE1ZWI2ZTIyMjUwMGVkZTQxN2Y2ZDM2NDk4YSByZWxlYXNlMzEtbWFpbnQKKzgyODg3IDZjNzYzZDYzMWRiYTA1OTQ3NjdlMmNkNzJmNWVmY2QwNzdlMjhmNzAgcHkzaworODI4ODggMmI2OGE4NDQxNDU4NzJmZmFmZTUxYzI4MzM5NmNhNmMxYzkxMjgwNyByZWxlYXNlMzEtbWFpbnQKKzgyODg5IGQ0ZjYxYjM2Y2NlNmU2ZTcwMDI3YTllYzI1ZTBiMjcxYmQ2N2M1ZTYgcmVsZWFzZTI3LW1haW50Cis4Mjg5MCA5ZjFkOWFlZjM3NGM3N2Q5OTlhZGQyZGZmMzIwY2Q3OTMzMzEwNWViIHB5M2sKKzgyODkxIDBmODNjYTEyMDc1MjkwYmIwNWQzNjRjZTIwMTU1NDM3NzA4YmE4ZmYgcmVsZWFzZTMxLW1haW50Cis4Mjg5MiA5Njc1N2M2OTBiMDVmMmRmNGJjZTllYjY5YzcxZmNhNGQwMTFhMmMyIHJlbGVhc2UyNy1tYWludAorODI4OTMgYzcwOGM5NDZmZjNlNDNlN2RjY2ZhOTA3NjhmZjgxYjhlZGRkZDMwNiByZWxlYXNlMjYtbWFpbnQKKzgyODk1IGExZjdkZWEzNjIxOTZiNmIxYWJjNDQ1MGJjN2E3NDBmZDQ4ZGQwMzggcHkzaworODI4OTYgYTI5NzNlNzA1MDU3YTcxYzAwN2NjNmM1M2QyZjA2NGI2YWVkOWU0OSByZWxlYXNlMzEtbWFpbnQKKzgyODk3IDBiMjkxZTJmZjAwZmM5MWE5N2U4MGI1MDUwZTY2YTVhYmI5ZGRlNDIgcmVsZWFzZTI3LW1haW50Cis4Mjg5OCA2MzMzZDNhN2U1YzczOWU5NTU3MTc5ZDEyNTA2M2ZkOWQ5NjgwMzMwIHJlbGVhc2UyNi1tYWludAorODI4OTkgNDY5Mjc4MTAyNzkwODdhMzM4YWMxMjVmNDM3NDU1MGU4MDQwNjc5MyBweTNrCis4MjkwMCA0ZmUyOGE0OTFhNjMwODkzZWE1YTZjOWRiYTI4Y2JlNmE4ODUxNzU3IHJlbGVhc2UzMS1tYWludAorODI5MDEgYzc0NWRmOTQ2MmU2NzdlZDgxMmVlODZmNjJiODAyMjM3MGY3ZTRiZCBpbXBvcnRfdW5pY29kZQorODI5MDIgYWQyNjNjYzM4NmE1NDIyMzJiYjJlZWRjZjM2NDRhMTFlYWFhMDE0OCBpbXBvcnRfdW5pY29kZQorODI5MDMgZmVjZmYwNGQwYWIxM2IwZTg5YzYzYjg3MTZhYWNkNTJiZGRiMTQ1NSBpbXBvcnRfdW5pY29kZQorODI5MDQgN2NkZmFjZTFhYjA5NjI2ZWQxZTRhYTZjYjZhNTY1ZjZiOTNmMDg5ZSBpbXBvcnRfdW5pY29kZQorODI5MDUgNzMwYzhiOTA3ZDdkY2M4NzkxZWY2ZTM0MDBiYjliNmEzNzVhODExMCBpbXBvcnRfdW5pY29kZQorODI5MDYgZmY5ZGRjMTYxZWUzZDA2OTdiYTFjMWU5OGZhNjI4ZTkyZmRjOGJkZiBpbXBvcnRfdW5pY29kZQorODI5MDcgN2I3MWI2ZGM3NDQ0ZTBhMWNjYmMwNGUzNWI1MWU2NTAzODNkYjUyNyBpbXBvcnRfdW5pY29kZQorODI5MDggODlmOTdhMTIxM2NkOWIwNDc1ODQxMTdjODI4YThjZmM0YzhlN2I5MyBpbXBvcnRfdW5pY29kZQorODI5MTAgMjAyNmVhNDQyODg5OWM5M2E3ZWUzNjIwN2FkODk0Y2EwZWIyYjE0NCBweTNrCis4MjkxMiAwYjc1M2EzZmU0YjBlMTc5ZTQ1Zjk3OGUwMmYxZmI0NmVhYmExYjI5IHJlbGVhc2UzMS1tYWludAorODI5MTMgNWZmZmFjOWFjN2Q2YzI2OTU2Zjc5ZDkxM2NhMzYyZjJlNWRlY2RmMCBpbXBvcnRfdW5pY29kZQorODI5MTUgMWYyN2EwNWM2YzMxZDRhMTMxNTJkM2MzOWY3Zjc1OWM3ZDQ0NjFhYSBweTNrCis4MjkxNiAyNGY3ZmEyNTgxZTZmMWQ0ZDJlMGZhMTFkMzViMmI1NGQ4YWMyZTQyIHJlbGVhc2UzMS1tYWludAorODI5MTcgZTcwMzE5ODNlNmZkZjNjNTQ4NTM3ZDdjOGY5YzIxNWY1MGJmNTMzMyByZWxlYXNlMjctbWFpbnQKKzgyOTE4IGUyZWM1ZmJjNmNmMTM3Y2M2NGNhMGMzYTU5YjgwMGRkOTQ3MDBhOTIgcHkzaworODI5MTkgYTBiOTUzNzdhYWFkOGQ2ZTliZGJlMTQwYzM0ZmJkY2FiZTkzNGM4NyBweTNrCis4MjkyMCA3Y2JmOGM0ZTI3Mjc5MWZkNzhiMTMyM2MzYTFkY2YwNGM1N2Q4MDg4IHJlbGVhc2UzMS1tYWludAorODI5MjEgODRmZjQxNzk0ZDNmMmI0OGRhMjZlODg2MmVlZWZkZTE3ZjkzM2RmYSBweTNrCis4MjkyMiAzYzczMDEwYmQwYjBjZjdmMmQ4MjViYTliMmQyZWU0Y2JjMzQ1NDBkIHB5M2sKKzgyOTIzIDdhMDBjYTRiOTU5MmI4NWE2NWVlMjEwNWQyMzgzZTA4N2Q5ZTQ5MWEgcmVsZWFzZTMxLW1haW50Cis4MjkyNCAwMTcxMWY2MGZmZmNmY2Q0MjFmZjExOWI1ZTZlMjJhZDYzYjU2ZWFjIHJlbGVhc2UyNy1tYWludAorODI5MjUgNGM0NWEzMmMzY2M5OThlZTUyMmQyODRjMzcxNDFkM2MyYjFiMzg5MiByZWxlYXNlMjYtbWFpbnQKKzgyOTI2IGVhZjA0YTNmNDUxYTJkYmIwMWZmNDZkMWQ5YzBkOWQxN2FjNjZmNDQgcHkzay1jZGVjaW1hbAorODI5MjcgYzc0MWExZjIyOTc2OThiOTY3OGZlYzBlMGYwNWMxZWIzMmIwMzM4ZCBweTNrCis4MjkyOCBmYThmMzg4MzQyODc4ZTI2OThiNDVjNTdmYzRkZGRlN2MyYjkwYmJkIHJlbGVhc2UzMS1tYWludAorODI5MjkgZTA1YjY0NmQ2Yjk4NTAxZjgxMzdlOGNhZGEzNjMzYTA3MzM0Yzk3ZiByZWxlYXNlMjctbWFpbnQKKzgyOTMwIGIyMjg5M2JlMDhjNzFlMTczZjY2ODM4NjY1NzlhYTY5OTVjZGYwZTYgcmVsZWFzZTI2LW1haW50Cis4MjkzMSBjZjRiODMzYTQ3ZGU4NWFlYzQ3NTgwMDQ0ZmU1ZDZlYmE1MmQ2N2MyIHB5M2sKKzgyOTMyIGYyODMzMDg4MWRiNDRlODA1MjNiNzQwOGUzZmMxYWU0NWVlZTc3ZGQgcmVsZWFzZTMxLW1haW50Cis4MjkzMyA5MDVmYTU3MTk0MDMwZWM1NmIwMmMyOWIzNDFlMWFlMDVhMmRmOWVjIHJlbGVhc2UyNy1tYWludAorODI5MzQgMmE3OWI3MjNhYmRjZjk1MmUxMjM5YjBkOTU0MjA5MTg3MDAwMzgyNyBweTNrCis4MjkzNSA4YzQ0MGNmOTA3NzZkMmQ0NzM4Yzc2OWE1ZGY1ZjU1NDlmYzk3YWUwIHJlbGVhc2UyNy1tYWludAorODI5MzYgOWU2MTlmMTZmNjZhYTQyNGM0ZjgxNjk5NDI1MjI2YjU2YTBlMGQ1YiByZWxlYXNlMzEtbWFpbnQKKzgyOTM3IDNjNzhiM2NmZDQ2MmNmNDhhYmJkYjhjNGFiMGRlNmI5NGZkZjFiOGEgcHkzaworODI5MzggYWJmNjlkNDAyODgzYjdiM2RlMmMzYzlhOTI3ZTgzNTZmMjRhZGZjNSByZWxlYXNlMzEtbWFpbnQKKzgyOTM5IGQxZDgxMjQ2YjIyOTk2ZTNmNTY4MTdlNmQ1MDY1MTlhYmQ4MzU2NmUgcmVsZWFzZTI3LW1haW50Cis4Mjk0MCAxZTIxZDk0ZTA1ZjQ2MjkzNDZlZDBkZWYyYjM2ZTZkYjgzMWU2YzBmIHJlbGVhc2UyNy1tYWludAorODI5NDEgMjY4MzMzMzc1NWYzNjJiNmI1NDdhMDA0MjNiYzk1ZmI5MWE3NDAxMSBweTNrCis4Mjk0MiA2ODAzNmYyYjVhYzhkOWY1Mzg5MzBjNTAyY2VkYWIzMDZlODZkM2YwIHJlbGVhc2UzMS1tYWludAorODI5NDMgYjFkYzYwYjNjN2FlYmMyNDcwYjJjYjRjZDM5OThmNzQ0ZTk3M2YxNCBweTNrCis4Mjk0NCBkYjJkY2NhMjQwNjk0NzI3YmIwOTFmOTRhN2I5MmYwNTM4MWFkM2E5IHJlbGVhc2UzMS1tYWludAorODI5NDUgMTkxOTE1NTllYzAyYzVkZmIyZmU5ZDcyMGMxNTM0ZDZkNzZmOTM2NiByZWxlYXNlMjctbWFpbnQKKzgyOTQ2IGMxNmIzZjZhYzUxMWI2MjQ3M2Q3OWIyNGMzNjQ1OWYwYzdiYmQ0ZGYgcmVsZWFzZTI2LW1haW50Cis4Mjk0NyAyMTFlMzE4ZDIzZWZhOGY2Y2RhMjlmMmQyNTI1OGJjMDFjNzU5ZmJjIHB5M2sKKzgyOTQ4IGRiM2FkNmVjMGE0YjE2ZDk3ZTJjMjFiMzEzZmZlNGM5MTc5Mjg2MjkgcmVsZWFzZTMxLW1haW50Cis4Mjk0OSA5Nzg2ODNmZGU4MjAzNzQxN2Q4MTg0NDUyMGYyZDg3YjFkYTBlYmM3IHB5M2sKKzgyOTUxIDZkYzNkMjIyODNmZjU0ZmM0YjYxZjBmYTlkMmQ0ZWVlYzU1MjI1ODkgcHkzaworODI5NTIgMTZlODYyYTViNmYyNmRlZDk4N2MwODdhMzhiZWUzNDZhYjA5M2MxYiBweTNrCis4Mjk1MyA0YmYwMzM3NzU4NGRiMDc2NDliOGRlMzVlNmVkMjZkNTNhNTllYTkwIHJlbGVhc2UyNy1tYWludAorODI5NTQgNDFhYjE2MWQ0N2E3YmY0NWRjNThiNDc5NjE3NjgyMGUyZGFhYjU0MSBweTNrCis4Mjk1NSA3ZTQ1MWNlOTBjMWE2MjQ0YTNiNGU5YjAxOGE2OTIxMWUwOTFkNjQwIHJlbGVhc2UzMS1tYWludAorODI5NTYgMGQ5MTgxMmY2MjYwOTY4N2YwYjIzZGEzOTIyYzUxZDc2YmRlNGEwMyByZWxlYXNlMzEtbWFpbnQKKzgyOTU3IDMxZGY2ZjhlOWYxZDRkMDQ5ZDliMmI5NmFlOGRiODc3NDdiOTZjNDAgcHkzaworODI5NTggNjdmOGYwNWNkNDBkYzBlMjYxZWMyYWJlZjBkNzhiMTQ1YjYzYmNmNiBweTNrCis4Mjk1OSBjY2QzZTU0NTYyZmE3YTBkNjUzY2ZlNzA4YTE4MDg5ZWEzMjYyNzAxIHB5M2sKKzgyOTYwIGE0ZGFlN2UyZGY3ZTY2NjNmMGQzY2ZiYmEzYWNlYzg1M2YwYjk1NTIgcHkzaworODI5NjEgNDgzNTEwNmVjZTBjNTMyNGEyMGM2MjI2ZjYxZDk5YzgwMzRkOWZmZSBweTNrCis4Mjk2MiBhNjVjOTlmOTQ4OTAwOTViMGNjYTRhMzAyMjZlZTVjMzcxNTYyNDljIHB5M2sKKzgyOTYzIGJiN2ZjMDhmNzIzZWM3ZGI3ZmIxZGY5ZWY2MzY4Y2I3ODZhNDE4ZWIgcmVsZWFzZTMxLW1haW50Cis4Mjk2NCAyZjk1NWJmOTMwMzdiNmQ2OGNiYjg0YjJkNGMxMzg2ZGI4MzQyMDA5IHB5M2sKKzgyOTY1IDI1MjE2YTdlMjM0ZDZhYTM4NWNiM2EyNGZkMmExMjM2OTA0Y2FhNGUgcHkzaworODI5NjYgZDM1NzgyYWMyMWY4NjFmOTY5OTk2ZGQ3ZGQ4MWU2Y2I5NDE0OWMyYiBweTNrCis4Mjk2NyBiNzk0MjkxNTQ4MGY3OGJhNTM5NmFhOTQ5NjQxNjEyOTBlNzdjOTA4IHB5M2sKKzgyOTY4IGM5MDAyMWZkMWZiZmFmZmJmYmRiNGYzM2QxNGY0NzVkYmU2YzM4OTQgcmVsZWFzZTMxLW1haW50Cis4Mjk2OSBjOTZhNzIyYmUxZGJjMWM0ZTBkMGJiNDQ2ZDA3NTUzZTM0YmIyYmQyIHJlbGVhc2UyNy1tYWludAorODI5NzAgYjljOTg5YTJmYWQzMTM3N2NiMjU5MDQ5ZTM3YmI0YjZhZTRjOGNlZCByZWxlYXNlMjYtbWFpbnQKKzgyOTcxIGFhMGI1NmRkMTRhZjdiOGI1ZDQzYWUwZjRkYzQwNDgzZDY0NmVkYmIgcHkzaworODI5NzIgYWQ2NmVmZjk4MDBiYmMyY2YyNDY3MjZhYWJkZDNjZjY3YmZmZGJiYSByZWxlYXNlMzEtbWFpbnQKKzgyOTczIDM1NDU0Njg0NmMyOTdhZTNlMTMyOThjOTUzMzc5NGQyYmQ2OTg1ZDkgcmVsZWFzZTI3LW1haW50Cis4Mjk3NCAzZmRkOWI0MzAyNGM2MjFmMTJmYzI2OTJiOGM1YzBjZWI4NmNhMjRjIHJlbGVhc2UyNi1tYWludAorODI5NzUgN2YzMTNlZDllODhmMzI0MzlhMGU0ZDNiMTVjOWVhMzhhMTE2MWFmYiByZWxlYXNlMjYtbWFpbnQKKzgyOTc3IGExMTIxNDA5Zjk2YjIwZGVmYWE0ZjQ3NTEyZjE5NDUwYmVlMjZiNDEgcmVsZWFzZTI3LW1haW50Cis4Mjk3OCA3M2RkYjhiMmI1NzQ3ZThjMzJiM2ExNmQ0MmU1ZGYzYjZiYjY1MTAxIHB5M2sKKzgyOTc5IDVjZmYwNThkNmNlZDVjMTU5YjFhZmRmYTM4OTIzYzYyNzQ1NWIzY2UgcmVsZWFzZTMxLW1haW50Cis4Mjk4MCAzZmE2MDU2ODhkMDM1YTU0NWI2MDIwMTNiYjBjMGMxNmU3NTgyMTFiIHJlbGVhc2UyNy1tYWludAorODI5ODEgZTFiYzJjODkzNWQyMGE3ZThmNzAyZDE5ZTc4ZjIzMGFhYjJhMTRlMSByZWxlYXNlMjctbWFpbnQKKzgyOTgyIDFjNjZmNzJmNmJjOTNiMWRiNDNjMDM1M2VjY2E0MjA4ZDMwNDY0ZjMgcmVsZWFzZTI2LW1haW50Cis4Mjk4MyBmMjQxNTkyZWNlNGViZTVkZWE5MzAwNTc3NTA4OWVmNjkyNzJiOWM3IHB5M2sKKzgyOTg0IDc0MmZkZjdmNjU0MDA1NjI2ZmU3N2M3MWJmY2U1YjI5ZWNjNDYzM2QgcmVsZWFzZTI2LW1haW50Cis4Mjk4NSA4NzJiMzRjYjI2ODg1MTQ0MmU0MTkzMzgwMWZlNjY0MzlkYzZhNDVjIHB5M2sKKzgyOTg2IGIyZjEzODVhMjM1ZTBkODk4NmUyOTc0ZGMwYWU3MzQ5ZGIwMDJiMDEgcHkzay1jZGVjaW1hbAorODI5ODcgMzMzN2EyOTU1ZTExOTI3YjNkZmE3YWU4OGQ3NGE5NTdhOTAwMGUxZiBweTNrLWNkZWNpbWFsCis4Mjk4OCAxNjkzNDdmOWQ0YzRmMjVkYjA3YzlmZDg0ZmQzNzQ5NzFlNmMxNDIzIHB5M2stY2RlY2ltYWwKKzgyOTk1IDljNzY2Y2QyMTFkYjBlYWE2MjdhNTgxYjEwMTMyOGQwOGQ4ZGEwNDEgcHkzaworODI5OTcgYTE0YTc4NjkyYzdhMTU4MGVhNzk5NTU1MzYwMmY2MGJjMmU3ZGY3NCBweTNrCis4Mjk5OCBjMGQ4ZmUyNWUyNjZlYzg2NjFmMzRmNmU5NzlkNDY3NGIwMDUyNGU3IHB5M2stY2RlY2ltYWwKKzgyOTk5IDFlMjYxY2NlNDExNjQ1YTM2YjU3Yzg3ZjQ4NDhmNWZlMmJlMjU4NzcgcmVsZWFzZTMxLW1haW50Cis4MzAwMCA0NWVkMGNmMmMzODZhNmZiYzk3ZTYwNmY0MjA0MzZhYzI5MTlhMGUyIHJlbGVhc2UyNi1tYWludAorODMwMDEgYzE2MjAyMjBhNDNkMjhmNzcwMDgyMzA5Zjg0NWY0ZTI2NzY1MjRmOSByZWxlYXNlMjctbWFpbnQKKzgzMDA1IGNiZDZmNWQyNGFmOTA2MWVhMmFiYWFlYmUyYjExMmMwNjQzYmVhOTYgcHkzaworODMwMDYgOTA1N2VhMDE0NDYxN2YyODY0MTBlZWQyODYyNmM2ZTU4MzczNTVlYiBweTNrCis4MzAwNyA3NWFmNGEyN2EwNzA5NzFhMDNlYjRkYmMzOGJlN2E2YmI0NmIxYTFkIHJlbGVhc2UyNy1tYWludAorODMwMDggZDBiYTNiOGIwZDQ4MmIxMWVmZjk2ZDg4ZGM2ODIzNWQ3ZGI3Njg4OSByZWxlYXNlMjYtbWFpbnQKKzgzMDA5IGJmZGI1ZjA4YzBmODFmYjUyYzllZGVjOTVmYmQwYTE1OWFiYmI0OTQgcHkzaworODMwMTAgMTVlZGQ1ZmJiY2FlMWQzYmMxOGQwOTY3NTkxNzNmNTg3N2NkMjk1YSByZWxlYXNlMzEtbWFpbnQKKzgzMDExIGZlZTQ5OTQ2MjBmYmY5ODUxYWMxM2Q4NzA2ZmMxYzFlMWNiZWYxODAgcHkzaworODMwMTIgZjRlYjFjNmEzNGVmNDMwYWQwZWJlYjJmNmIxZTFlNWNiMmQ2ZTZiMCByZWxlYXNlMzEtbWFpbnQKKzgzMDEzIDcwNzljNjA3ODE0Y2FhYjRjMGIxODNhNjUzYzdiYTU4NjEwZDdjNTAgcmVsZWFzZTI3LW1haW50Cis4MzAxNiA1YjQ2ODY4Nzc2OGNkNTE4YWI4MmM2NzEwN2ZlMzA2OGIzY2E2ZWEzIHB5M2sKKzgzMDE3IDcwOTI1ZDNjMDI3OTQ3ZjY5OTM2OTgyMjNjODRhMTQyYjM4NzE5ODcgcmVsZWFzZTMxLW1haW50Cis4MzAxOCAyZjFhODM2ZjBmYWMxYTIzZjBkYjUxOWY3YzhkMTk1Nzg4ZDcyZDE0IHJlbGVhc2UyNy1tYWludAorODMwMjUgMjBlNTZlY2NkZjUyMjYzODZhZTQxY2VjMzJlZGYwNDY4YmFiMjI5NSBweTNrCis4MzAyNiA0YjQwYmY5MWViZWIzMjZlNTk3ODQ4MDc4ZTA1NGFiODA3OWZhMmEwIHJlbGVhc2UzMS1tYWludAorODMwMjcgYmI2OGU1MzQ1NGI2ZDY0YzZkMzYwYjMyMzIwZmM4MjU1OWU2ZmJjMiByZWxlYXNlMjctbWFpbnQKKzgzMDMwIDM2NzUyOWRjMzRkMTFmMTI1MzRmMmIzMDM1Y2IyOTZhZWI1ZmI0M2UgcHkzaworODMwMzEgZTVjZGIxMjc2OGNiNGFiOWJhOTQwYzcxY2YxNDM5MzFkZDMwZDk2ZiByZWxlYXNlMjctbWFpbnQKKzgzMDMyIDdiNWQxNTI3YzBjZThhMzA5MDY1Njg1ZWVhZTkzZmVhYzgyMGVjMDcgcmVsZWFzZTI2LW1haW50Cis4MzAzMyA1MjBiZjRkMWNiNjY1MTZiOTEwNzQ2YmE4YjE2NzcwNTY3MjBiNjYwIHJlbGVhc2UzMS1tYWludAorODMwMzUgNDU0NWZmNTA2MWI3YTdhMjI0M2JmYzYxYzNhODNhMTZmMGJhMTQ3ZCBweTNrCis4MzAzNyA5ZGJiZTZlN2I2NjhjMTU4NDZkN2M5ZmIzNWE2ZTA0YjM2NmRhYzU1IHJlbGVhc2UzMS1tYWludAorODMwNDUgMWY0ZWQ3MWI2OGUyMjQ2ZTVkZDYxZWU1YWYyYjhlYTMzMTNiZTZmYyByZWxlYXNlMjctbWFpbnQKKzgzMDQ2IDMwNTkwMmIzYzFhMDA5ZmJjZGUxNzQ3YTUzYWRlZmQ2MTc3NWZkNTMgcHkzaworODMwNTMgMjlhM2VkYTg5OTk1M2RjMmIzMTU2OGQwZWM2NzI1OTk2MTYwZTM1MSBweTNrCis4MzA1NCBlZTAxZjU0ODFjNjgwYzkwY2MzY2QxNmQ2MGY4ODlkN2I3OTYyYzE4IHJlbGVhc2UzMS1tYWludAorODMwNTkgM2U2MDliZjQ2MmZmMzExY2MzMDZkMDhlNDE2NThlODk1YmE2NzQ2MyBweTNrCis4MzA2MiAxYzQ0MWUzOWRiZTQ2ZDg4MGY3ZjE3ZmExNjA4NGViMDY3MGYwMzY1IHBlcC0wMzg0Cis4MzA2MyA4ODUyMGZiNDViZjJlZDRhM2I3OWE2M2Q0N2RjMDNmMDNhNjU0NzMxIHBlcC0wMzg0Cis4MzA2NSA1OTEyNDlkOTgzODNhYzYzNDFkZGJjMTc2Mzk0MzlkODg3ZDZjZmJlIHB5M2sKKzgzMDY2IDE2ZWRkNGZiYTZhNWMyZDZiZTA0MGYxYTk2ZWEyMmM1Yzc4YzdiZTIgcHkzaworODMwNjcgMmFkOGU4Y2U0NmM2YjhmOGU2OWYzNjlhOTA2MzQ5OTQ0ZmRkNDY1NSBweTNrCis4MzA2OSA1YTY5OGExNTJmMzAyMzVkMDQ5OTQ4MzU0ZDkxYWEyNTVkNjA3ZWIxIHJlbGVhc2UzMS1tYWludAorODMwNzAgNzIxZTcyOGFjMDYwZjBhNDBiZDAxZjllYmMyYjY0OTZlN2M5YjRiZSByZWxlYXNlMjctbWFpbnQKKzgzMDcxIDUzNWNhYjFhOGMwMDQ5NmUzY2Y1ODczZDFmMzEzMDQ1YTcxNmVkNjYgcmVsZWFzZTI3LW1haW50Cis4MzA3MiAzN2Q4NDg5MWM2NzFhMmQxN2I0NWFkZTQ1MjZhZjk0ODYxOWE2YjdlIHB5M2sKKzgzMDczIDhlZjk1N2MzODFmZGE3MjcwOTFlYWQwZWY0MzEyMDEyZjVmMWY5NmMgcHkzaworODMwNzQgZmFhNWYwMTdmZWE1ZDg5ZjkzYjc1OTYyN2U2YTQyYzY1YWFmN2RhZiByZWxlYXNlMzEtbWFpbnQKKzgzMDc1IGU2MGZkYjM0OGJkYzYxMTBhYjBlZDc4ZTMwMWNlMWQwZjg2NDk4NDcgcHkzaworODMwNzYgYzQ4M2Y5NDk3ODcyYjYzMjFhOWQ1YWJlY2E4MmZmMzk0NTBlZTI4ZiByZWxlYXNlMzEtbWFpbnQKKzgzMDc3IGJmZmQzOTliNzY0YzZkZDY3ZDgzNTM5MzgzMDBkYTgyYWRlYjI0ZGYgcmVsZWFzZTI3LW1haW50Cis4MzA3OCA3NmUwNzkyMjUwNzljNmY1MzkwZjNkY2Q5NGFmYzJlNmZiMTBkYWE2IHB5M2sKKzgzMDc5IDk5NmVlOWUwMzgxNjcwNzVlN2UxMzVkYTI5NTE4YWM5ZTViZjkzN2YgcmVsZWFzZTI3LW1haW50Cis4MzA4MCAzYTkzZmQyZWJiNDBjZWMyYmY2YTFjNTZiOWFmNWNjYmFiNzU4N2FjIHB5M2sKKzgzMDgxIGMwY2Y3ZDcwMDFlMjMyMGMyYjgyN2I4Njc1MDkyNWZjNGQ3OThmOWUgcmVsZWFzZTMxLW1haW50Cis4MzA4MiA1Y2UzYzA2NDQ4YTc4ZWY0NmYxZWZlMjVhYTI2OTAwNzk2MWIyNzgxIHJlbGVhc2UyNy1tYWludAorODMwODMgYmRjMDY5YTFhNzIxYjI4YWQyMTg0OTIzMmJkNTQyNmRkYTg3MTUwNiByZWxlYXNlMjYtbWFpbnQKKzgzMDg0IDE4M2M1NjI1ZTAwYmRmNjhkMDQ4N2Y2NzZlYjZjYmFkOTIwM2JhMGQgcmVsZWFzZTMxLW1haW50Cis4MzA4NSAxY2U4NGM2MWYzYjEzNjAwMTM5YTEyMTZhM2JmMGE5NjQ0OWEzOTQyIHJlbGVhc2UyNy1tYWludAorODMwODYgZTI2N2VlOTc2MGJkMTRhOGI0MjcwZTEyYWY5ODJjOTQxZmE3YTY3ZCByZWxlYXNlMjYtbWFpbnQKKzgzMDg4IDEwMjc0YTdiYzUzNzc2MWZkYmY4MjYzMGUxYTM2OTQ4MTg4OGE4NjkgcHkzaworODMwODkgZTYzODNjODFkYTQxY2EwNTZiNWNmNjE3ZDE5ZWRjOWJiMzMyN2UxZCBweTNrCis4MzA5MCBmNTIzYjM5ODUyZTc0NjBjZjc3ZDk1MGU2ZmI0ODZlOTcyOGRkZDZkIHB5M2sKKzgzMDkxIDA0ODNiOGU4YmM1OWYxN2M3ODFiNTQ5N2I3OTk3YWY4MWMzY2M2MWYgcHkzaworODMwOTIgMjg1NWQ2MzYzMTkyOWZmNTU3NGRiM2YxNGQ5YTNhZTQ5ZjlkYmY5NyBweTNrCis4MzA5MyBlYzQyYjcyODI2NGRiNmNkNGQ2ODBmZjE0YTBlNzExZDgyYThjYzlhIHJlbGVhc2UzMS1tYWludAorODMwOTQgMjc4NmQ2MmNjNzljMzhhN2EwMTg0ODcxNTgyY2U1MTQ0NjY3MGVhNSBweTNrCis4MzA5NSA3NjRlYzliYmYwMTNhMWYwMTEwYTczZTAzM2E3YzBlOTYwNDhmYTRhIHB5M2sKKzgzMDk2IDg3MjNjMWRkMWQyNWMxYTg0YmQ5ZjJlOGNkMDY2NTkxMzBlNzIzNDQgcHkzaworODMwOTcgMWY4ZmNiYjYzOTZiYzY5ZTZjOTIwMGI1OWJmMjcyNmFmZDBhMjZhMCByZWxlYXNlMzEtbWFpbnQKKzgzMDk4IDk3Yjg0MWIzYjBiNDdiYzY5MjJjOTEwYzFjMDYzMDcxNDY4MzY5NDMgcmVsZWFzZTI3LW1haW50Cis4MzA5OSAwNjBkZTA2MGYwM2ZmMGI2ZDk2YmVhN2EyMWQ1ZjIxMmVjYThjMGEyIHB5M2sKKzgzMTAwIDY4NjE5YzM3MmVmMDEzZjlkYmU4ZGEzMWRlM2FjYTQxZjEzNzJhZGMgcHkzaworODMxMDEgNTgwYzc4OWI3ODVkNWQ3Mzk2MDk3MTFiMTJmYTM3NTdhODAxN2UxYSBweTNrCis4MzEwMiAzODNlODQ2M2Y1NmMwMDA0YjU1Y2ExYmJjZTExMjYxMjk5MzQ5ODY5IHB5M2sKKzgzMTAzIDBmMmIwZjM3NzY0MjQ2ZWMxNDI4MjNiNjQ2MmQyZjA5ODc3NmJlY2EgcHkzaworODMxMDQgMjI3ZGVlMjc4NjM4YTdmNzhlMjE1MmJjMmE3MDVhOGYwMmMzMWI4MCByZWxlYXNlMzEtbWFpbnQKKzgzMTA1IDMyZmFjYmVkZmQwZWJjNGVhMzYyMjg1ZDQ2MmFiZjJjZGYyMzk0OWQgcmVsZWFzZTI3LW1haW50Cis4MzEwNiA0ODI3MTc5NjAyNTdhMDkwZDEzMGFhYzI4YTZhNzc1MTc2MzFiMjBmIHB5M2sKKzgzMTA3IGU0Mzc5NTM0MjVkNzA1NDMyN2Y3NmUyOGY3ZWE0OGE4Y2M1NWM3MGIgcHkzaworODMxMDggYWY5MzQxMzI0ZDNkODJlMTgzODZhODBmMGFmY2E3NzQ1MGQzYjU5YyBweTNrCis4MzEwOSA3MWYxYzBiZThhYTc3NjU0OGVjMzMzNGY4NGFhNjAwY2YzYzMzZGM5IHB5M2sKKzgzMTEwIGRiMzdhZjA3ZDRjMjcxMjA4NGE2ZmFjYWUzNGViMzRjZGFjNzRjMWYgcmVsZWFzZTI2LW1haW50Cis4MzExMSBmOTk3MDM5MWVlYWIyOGMyYTZmMWM0ZTE0ZWE3NmJjMjBjNWFhOTkwIHB5M2sKKzgzMTEyIGFmZGI1MzMyMzA2NTlhNDI3YTM2YjJmNjViMzdiY2UzYjFmOGYwMDkgcHkzaworODMxMTMgZTc3Mzg4NDU3N2E1MzM0Yjc3MWFjYTIwZDU3MTY3MDg3ZTQ2ZWY3ZCByZWxlYXNlMzEtbWFpbnQKKzgzMTE0IDg5OTMxYzgzNjg1NzRhOGI0NjQyZTI3ZmM2NDk3MGE5MTRiNTVjYjYgcmVsZWFzZTI3LW1haW50Cis4MzExNSA0ZWQ2MGM0YmM4YjYwMTY5YmJiNDNhNmVmNTIwNGQ3NmU5YTNiZjViIHB5M2sKKzgzMTE2IDhmYTQyNGFlY2QwZGI4ZTZhZTcxMDdlZTljNjViZWZmY2M2YzJkNWUgcHkzaworODMxMTcgZGMyYTdjMzQ0YmFhZmVhMTBiYTBkOTEwYmNmMTExNGZlNmE2NGZmZiByZWxlYXNlMjctbWFpbnQKKzgzMTE4IDkzNTc4MGM2MmM1OTU3NzAwOWRhZDAwYTVhZmExZTc5ZjhhNmI1MWQgcmVsZWFzZTMxLW1haW50Cis4MzExOSBlZDMyOGU2NzJhY2UxYTNkOGE3ODk4YmEyYzYyNTBhN2M5NjA5YjM2IHJlbGVhc2UyNi1tYWludAorODMxMjAgNWFhNzI2NDE0ZjhmMDhkNDY2MDVhNWM0Y2NhMDlmOTNlMmM4N2I5NSBweTNrCis4MzEyMSBiMGFmNjNhYTA5ZWFjYWJlNTY2OTk0YjdjNGMzNTBkYjQ0ZTM3MWE5IHJlbGVhc2UzMS1tYWludAorODMxMjIgODA3MmRmZDk3ZTFkZGYzN2ZkMGNkZmE5OTk5N2QzODE4ZDA3OTA4YiByZWxlYXNlMjctbWFpbnQKKzgzMTIzIGMzODY2Y2Q5MWFlMDBlNWRkYzIzZmVjYTcyODEzYTE5MDE2NTJiMTUgcmVsZWFzZTI3LW1haW50Cis4MzEyNCBmZjY0NDk2NDMxNDJlMjRjZDJkMGM1MGYzNWU2YTYwMWMxNzhjOTQxIHJlbGVhc2UyNy1tYWludAorODMxMjUgMzNlNGE0N2E2YWQxMGRiNTUzMzAzY2MyYjMzOGQxNzE4NDk4ZTg4NCBweTNrCis4MzEyNiBkODk2ZjNmOTRhNGRmMjI4OGY1NmU2MDc1MTVlMDMzZGQyYTY5MWQ3IHJlbGVhc2UyNi1tYWludAorODMxMjcgNGNjYmMyOWM3ZjExMzI5YTcwOTc3ZGJiZDVhYjEzNzZiOWFjMjNiNiBweTNrCis4MzEyOCAzZjI0NWJlNTkzMzliZmZiMWM4ZDE2YzFiYzljNGI4NGY0MzY2MTA2IHJlbGVhc2UyNi1tYWludAorODMxMzMgYWQ1ZjI3OTNmN2FkZjA4ZjY1ZTg4MDUxZTFiNTJhZjA5ZTRmOTQ3MCBweTNrCis4MzEzNCBmODEyNjM2N2EyZGVkZGRhMjZjMzYzZTQ3ZmU1M2JlZjA5ZDIzZmZjIHJlbGVhc2UzMS1tYWludAorODMxMzUgM2U2NTkyNTgxZDBmNWE4MjI2NDU2NmJmNWY1YjBjZjFiYjg3ODBlMyByZWxlYXNlMjctbWFpbnQKKzgzMTM2IDUzNDNlYTdjMTk4NjM0OWI5N2Q2ZWU3ZGQ2ZWYwNjM4MGVkY2JkN2QgcmVsZWFzZTI2LW1haW50Cis4MzEzOSBhMTZiNWJiZGYxOWI0MjgyYTQ1NTRkMzhkNmQ4YzAzNmE0M2M1MTBkIHB5M2sKKzgzMTQwIDllY2JhOGExMDEyNTUxYTY0Zjk5NWU3YWVmZTU4Njg1NjRlMGY0ZGEgcHkzaworODMxNDEgMmM1NmY0YWIzNmYyNmE0YjNjODUwNDFjYzZmMTZhODU3ZGUyZGVhMSBweTNrCis4MzE0MiAyZGQyOTllN2E2ZGJkMzcxNTk5NDA2ZTlmNGRjNDkwNjdjYzJmZTQ0IHJlbGVhc2UyNy1tYWludAorODMxNDMgZWY5YjM5ZGY1OTM2ODA2MmI0Nzc3MWZlM2ZiMDA5ZDI2MzFiZmRiZiByZWxlYXNlMzEtbWFpbnQKKzgzMTQ0IGIxOWY4YTQ5MjlkNWIzYjhiNTQ5NmZmODM4NTE5YzJhYTI0NDI4NmEgcmVsZWFzZTMxLW1haW50Cis4MzE0NSBmZGIwY2ZkY2NmODU4MjVmMjgwYTgzNWUzNjNjOTYwMDg0NWY4YTQ5IHJlbGVhc2UyNy1tYWludAorODMxNDYgZDg2YzE4NTY4ZTg5NzU3NGE1YTEyZmUwYjI4MGY2MWQ2ZWRjNTMxMiByZWxlYXNlMzEtbWFpbnQKKzgzMTQ3IGQzM2ViYjNlZjBiMTA3ZDg3NWEyOTc2ODMzZTRhMWFiYjI4YWM4YWYgcmVsZWFzZTI2LW1haW50Cis4MzE0OCA5MDRiM2ExNjE2ZjM3YzM4MjU5ZDgzODgzZjMwNTdkY2VhMDJjOTYzIHJlbGVhc2UzMS1tYWludAorODMxNDkgOWUzMDNkNjcxNWNlODlhYTY2YzUzOTA3OWRhY2I3OTgyOTliMjM4NCBweTNrCis4MzE1MCA5ZWNiZGVmYzk4NDlhYjkwOWEwM2JjNjJiZTlkZTVlZmI0YmI2MzllIHB5M2sKKzgzMTUxIDUxM2U0OThiMjIzYzJhNmQwNzFiZTI5YTc5M2YzNmFlZTIyMTJlYzAgcHkzaworODMxNTIgMTBjZTA0MTQwMDk2ODg0YzI1MWEyNDEyMGJhNTJhM2ZkMmE1NGZlNiBweTNrCis4MzE1MyBmZThhMmNlOTE0ZWE4Y2RhYWMyN2E1OGU5ZWRjOTliMDNlYWUzNmZjIHJlbGVhc2UyNy1tYWludAorODMxNTQgZmRiNzFkNmMxODIyNGY4MTBlMmM4ZmJjNGM4N2NmM2FmYjYxMWU2MyBweTNrCis4MzE1NSBlZWNjMDE4YWFjM2VkZGQ3YmZjODA5NTcyZjRlNTg4ZWVkN2JkZjRlIHJlbGVhc2UyNy1tYWludAorODMxNTYgNTVmNDVlOTA2NzRkNmMwNTVlYWNmZmQ4Yjc0NGI4MTYyZjJmYmExZSBweTNrCis4MzE1NyBmNmI5MjgwOGI5YjM0MzU2ZTQzMjNhZGM4MDUwYTVkZDhlNmFjNzU5IHB5M2sKKzgzMTU4IDc0YjE2ZjQzOWUwN2JhMDQxYWVlYjQzYjhkYTAyMDE3NTMyMDA1ZGMgcmVsZWFzZTI3LW1haW50Cis4MzE1OSA0ZDNkZTE2ZDAyY2MyODhlZjhjYmQ4ZjRkZjk0ZGRlMzliZmE5YThhIHJlbGVhc2UzMS1tYWludAorODMxNjAgYzNiZTIwYzM5MGEyNzA5OGIwMmJlMzhjYjE5MzQxNGQ0OWE4ZTI2ZiBweTNrCis4MzE2MSAyY2VkMWNjZDM1ZWE0MGVjOThhMTU1NmU0ZWVmMDIxNTFhNzExNWRjIHB5M2sKKzgzMTYyIDZhOTlkOTFiZTBmOGJjYjg5ODJiMTlkZjFiNTUzYzg2NzI1N2IzMTYgcHkzaworODMxNjMgN2E0MWUwYzQ4ODU1MGMzMDNmZjY1NDBlMThjODQwMDBiOGUyNzYwZiBweTNrCis4MzE2NCBjY2IyMTk5YzE2YmEwZWUyMTM0YmRhZTA5Yjc2NjRlM2I3YzJhNGIxIHJlbGVhc2UyNy1tYWludAorODMxNjYgZjlhMDA3YWZkNDBmMzcyZjhkZWFhZGViNTI4YzJjOTUyY2YzODMxZiBweTNrCis4MzE2OCAzNWMxNDU2MjM0ODAyZTExODFlYzg0YTQ3MzQwZjhjNWI1ZDI3YWM2IHB5M2sKKzgzMTY5IDNlOWI5MmNmY2FjYzUxZjdiNDQ0YTI5NWU0ODQ2NjUwYjI1NDYwMmIgcHkzaworODMxNzAgMDk3MDU3NzAwOWUwNTcxN2QwYzVjMDM2Yjc4ZThjN2IwMTNjNWJlNyBweTNrCis4MzE3MSBhZGVmZDVjMDIzNWRmYjM0MTgyOTg3ZWEyZTkyZmI0ZjZjNTUxNzNiIHB5M2sKKzgzMTczIGJjMDM0NzZjZTkwMTliMDNhMjU3MzQ1YjU3YjRlNmFmZjM0ZjA2N2EgcHkzaworODMxNzQgMGI4NDA5NGIxNTE1OGNlNjQzYWQ0MzkwNmJkZDM0M2JhOThlOTQ2NCByZWxlYXNlMjctbWFpbnQKKzgzMTc1IDMzNTUzNTZmMWM3NGQ0NDhiYTVlNTAzNjI2YWUyOTZjZGRiNGEyMWMgcmVsZWFzZTI3LW1haW50Cis4MzE3NiA1NTIyNDMzMTUwZTFkOThjYjE1ZTBhOWFkOTk3NzIyMzA1YzVmMmZmIHJlbGVhc2UyNy1tYWludAorODMxNzcgZjliODYwZWYyNGJhZDkyMTI5ODY1MDQxYTE4MGNmMzYxYmNlMTY2NSBweTNrCis4MzE3OCBlMWMzYWRmYTU3NDRkZjczMmRiZjUxNDQ1MmRiY2ZiOWI5M2UyYmZhIHJlbGVhc2UzMS1tYWludAorODMxNzkgZGZlMDA5NWZjYWIwZjZmNWM4Y2M3Y2Q3NDcxYTcyNWQxOTc3YTk2ZiByZWxlYXNlMjctbWFpbnQKKzgzMTgxIDJkZjczMzk1MWJhYjQ3YzM1NzcwMTUwMTJmNzIwYzFmYzE1NWM3NzEgcHkzaworODMxODIgZjIxNGFkMDljMzg0MmQxMDU0NDYwMjYxOWJkYmU4OTNiNWE4Yjc3MiBweTNrCis4MzE4MyBlMmQ2MmI1YTg3MzAxMWU2ZDllNmZhMWZmN2ZiMDlkMjNhYTRlNTAwIHB5M2sKKzgzMTg0IGU5MThhZmQzNTA4Njg4NDJkOTVkYTAyOWQwYjg3MjQzM2U5YWJkNjcgcHkzaworODMxODUgZmQ5YjQyMWNkYmFmNTVjNTRjN2ExNTRjN2QwZjkxOGY5N2Y2OTgxMSByZWxlYXNlMzEtbWFpbnQKKzgzMTg2IDViNWJjZjRiOWZiMDIxYTZlMDEyMWRlNDdiMzg1NWZmMDg0NDM1ZGEgcHkzaworODMxODcgYzNmNTgzM2RiODQzMWNkZWUzYTViMTI0MzdlNjllNGM5N2M1YmZiYSByZWxlYXNlMjctbWFpbnQKKzgzMTg4IDY4NWQzOTE4ZjJhNWUxYmM5NDQxN2JmYjU5OTdiYjVkMjZmM2JmNWQgcHkzaworODMxODkgYjVmM2Y3NDIzMzE4NjcxOTRkMDA4YmQwNGI1MWQzY2MxOWVkOTI5OSByZWxlYXNlMzEtbWFpbnQKKzgzMTkwIDFjZDQ1NGRhNDkyOGIzZWNhNjUyNGZmNzUzYWExNzQyOWM0ZDgyYWUgcmVsZWFzZTI3LW1haW50Cis4MzE5MSA4MDMyNTBmNWM0YzI2OGY0NDNiZTI3YWNmMzQ1YTUyMjFlOGFjNDdlIHB5M2sKKzgzMTkyIDE2ZjVjZmIxNmM2YWNjMjk2YzRhZTI0NzU1MGVhMzU3YzM4MTZhZTYgcmVsZWFzZTI3LW1haW50Cis4MzE5MyA0M2RjMTI5ODkyYWRkYmEwYWUwMThjNzJiZDcxZDlmNGU4YmJhYTkzIHJlbGVhc2UzMS1tYWludAorODMxOTQgZTRhYjBmYmJiYzk0NjBlY2IwNzBkNWIzZjc2OWE3N2FjM2MyOWYxNyByZWxlYXNlMjYtbWFpbnQKKzgzMTk1IDRhN2IzOTVlZGI2OWQ3NmRkYzEyNzhjZjE4M2RiMjljMjlhOWNkZGEgcHkzaworODMxOTYgNWVkY2UxNGI2Mjg3NzMyNmYwMGFmZGZjYTQzNGJkMjQ5NTFjYWFmZiBweTNrCis4MzE5NyBhYzdlYjZlYWVmNjg4NzdjZjgyMGFlZmVhZjU4MzZlODEzYzIzYzE2IHB5M2sKKzgzMTk4IDc0ZmQ3ZTgwYjFiZTQyMzY4OGE1ZTY2NGUzYTMwOGJkMWRlZjA0ODggcmVsZWFzZTI3LW1haW50Cis4MzE5OSA1ZDQ1YzY1MTM0OGJlM2I4ZjJmNTliZjYyMThhNmY1NjJiYzRjNDhmIHJlbGVhc2UyNi1tYWludAorODMyMDAgMzE1YzJiNTI0YzU5ZTk1OTYxMTRjNDVkMmZmMDdmNjhiNjg5YTJlZSByZWxlYXNlMjYtbWFpbnQKKzgzMjAxIDMwNjgzM2VmMTE5ZDFjYjVlOWNhYjUxNWE5MDE4OTU5ZGVjZDYwYjggcHkzaworODMyMDIgYmI5ZWVmOGQxYWM2YTRmYzU4ZDNmNWFkOTQ4NWVlMmE2ZTIyZGRlOCBweTNrCis4MzIwNCA4ZThjYjE2OGEwODlmNzQ2YWExNzAwMDRkNGIzZjk0ZGRiNjhmY2YwIHJlbGVhc2UyNy1tYWludAorODMyMDUgZTBiY2I5NzAzNDQyZGFkODg0ZTQzZDk3MWU1YzMzNzg4NGViNWE5MCByZWxlYXNlMjctbWFpbnQKKzgzMjA2IDZkMzFiNjAzNzJjNDgzN2NmZjFjNmQyMjYxNDE2NjhmMmQ5Mjg2ZGYgcmVsZWFzZTI3LW1haW50Cis4MzIwNyAxNzQzZGZlZWI5YjAzZDZiN2I1OTg0YTNhMDQ5N2QxMTk0ZTllMmFkIHJlbGVhc2UyNy1tYWludAorODMyMDggZWEzYjUzNTEzNmU3Zjg1MzI5ZTRjZmRlNTEzODc1NDhiYTAxODQ5MCByZWxlYXNlMjctbWFpbnQKKzgzMjA5IDliY2JjMzQzNzc4ZjNjZGJiOTI4MGQyYmQwZWI4YTMyNGUzYzJmZTUgcHkzaworODMyMTAgMzExOWM0ZDcyNzZiMTVlZGQ2MTg5OWY4ZDhlYWEyMTAyMjNhMzM4NSByZWxlYXNlMzEtbWFpbnQKKzgzMjExIDBiYjQ3YzUxZTkzM2Y4NjhlZTNiNGFmODA2NjNhYjk3ZDU0ZjQwNzMgcmVsZWFzZTI3LW1haW50Cis4MzIxMiBhYTE5YTdjYzFiZjM1MmJiZGU4NjNmOWFlMWJjNmFhNDYwNTc4NmJkIHB5M2sKKzgzMjEzIDc5ZTM3NjgyNGIzODhhNzZiMmQ3MmQzNDYxYjUxMTQ5YTY1M2Q4YWYgcHkzaworODMyMTQgMDEzMmU0ZWU5ZTdmMjQxYzAzMGM1NjViYWE0ZTY5YmE1OTk2MzRmMiBweTNrCis4MzIxNSBkNTVkMjFjMzk2YzVjZDIxOWJjMjMyNDU5ZDdlMWZjNWIzMDUwZmQ3IHB5M2sKKzgzMjE2IGJlNmQwMTRkZjk1NjBhOWRlNWRlNzRkOWViNGFkNzZjYTUzOGRmN2QgcHkzaworODMyMTcgNTE0NjZkNjc3MjJlMDYxMDExYmQxMjYyYjE0ZGFkZDEyODViOTMwMiBweTNrCis4MzIxOCAzZDk5Njk2Njg5ZjliMmFkOTFiZWIyZDA0NTJiZDY3MWFkNmNkMGUwIHB5M2sKKzgzMjE5IGUyZTMyYTg2OTgxMGRmOGY3YzFhZjE1NmU5MGNlODBlZDZlMjY4NTYgcHkzaworODMyMjAgZTVhMmY1MGZlZTY0ZTEyMzNhNzI4ZGU2NTdhZGRjZmE4ODQzN2YzYSBweTNrCis4MzIyMSAwNzE2MDkwNjBmMDU1YWY5MzYxYTVlYTM3MjE3YWYzZDZiYWVkZDUyIHJlbGVhc2UyNy1tYWludAorODMyMjIgNTJiYzE5NDA1YzBmMzMyM2EzZDViNTIwMGI5MmUwZjAzMzRmYzIzNyBweTNrCis4MzIyMyAwNTRmMzI3OWUzY2NlOTU2MGIzOTU2NDUxZTAyYWE1YjMyODgzMzY4IHB5M2sKKzgzMjI0IGVlMzdiY2I4ZjAzZTcyMmVlZjlmN2VlODk4NDdkNDRjNDE3NTBjMWQgcHkzaworODMyMjUgMDU2NDM2MDY1MjkwZjcyYjVkZjdkMzBiNzBmM2Y3ZTBmY2EwMmJiZiByZWxlYXNlMzEtbWFpbnQKKzgzMjI2IGEyNzQ2OGFmNWVjMmRiNWJhNjQzNGQ5Yzc1ZjQ2YjU1NTc0YjBiNDcgcHkzaworODMyMjcgMDU0MGU2N2Q3OTI0MWY3OTI1OWZjZGExM2Q4OGU0ZTJmNDk5ZTAzZCBweTNrCis4MzIyOSBmNmQzYmY0ZmFhOWE3YjU4NTdkODNkM2IxNWYwZWVkZTIxYTQwNzBlIHB5M2sKKzgzMjMwIGYyMGZmOTlhMjQyNzVmMmRmZDMwMjVhMWQyMzk1ZTIxOWViZmY1ZWIgcHkzaworODMyMzEgODM0NzE1ZmFmMTY1YTUwMGJlOTYxZTRjMjAzYWM0ZGNmOTlmNjExNSBweTNrCis4MzIzMiBjNTVmYWY0NzQ1OWUyZWI3NzNlNzRjZjNiM2JmZjBjNDk4ZjYzNDk2IHB5M2sKKzgzMjM0IDEyNTBiMDY4ZjMxNzAxZDlhYWNhMmM3ZjNlY2E4YTZlMjYzMTY2M2IgcHkzaworODMyMzUgOTRiMzkwM2RlMTA3NmIyYjMyNTY3NWY1OTlkNTE4NmUyZTQzN2I0OCBweTNrCis4MzIzNiA5MWNiYjU1ZTIwYmU1NGZhMjU5YmRkZGJjZjk0NGQ3Y2NlNjQ4NDBjIHB5M2sKKzgzMjM3IDE2MTg5YjdkYTNiNjJmNDZmN2U2YjZhNmY1MjhmZmRhM2Y0ZTIwMDIgcHkzaworODMyMzggZjQzNWI3Yjk4NjkwOTdjN2RkMzY3YmYwMDZmMGUyMjNlZDJiNGNiYyBweTNrCis4MzIzOSAyOWFiNTM2Y2ZlZjY3ZjI5ZDY4YTE1ZDExN2RjZjdlMGRjNzQxZGZlIHB5M2sKKzgzMjQwIDkwMjEzMWIzMTkyMjdkODE4YTdlMjg0ZTE3MTQ1NWU5NTE2NzQwNGMgcmVsZWFzZTMxLW1haW50Cis4MzI0MSBiNzVjYTI1YTE0MGJhY2M3ZWZiZTRiM2M5ZWIxMDZhMzUwZDc5ZGUyIHJlbGVhc2UyNy1tYWludAorODMyNDIgODlkNzhiNjY3ZDA3YmU1NDEyMDU2YjJhMDQ2NjBhNGRhZDE5YzQ2NiByZWxlYXNlMjYtbWFpbnQKKzgzMjQzIDRhZTBlMTNlOTQ2NjNlYjcyM2VkZWZlZjgxNWRlYTkzOWRhMTQ1YWUgaW1wb3J0X3VuaWNvZGUKKzgzMjQ0IDk3MDdjODU1MTQ4ZjY4ZTRkZGUxMjZiYzIxNTYxMzgyMjQ4YTJhNTYgaW1wb3J0X3VuaWNvZGUKKzgzMjQ1IDhhNzljYWE0ZjQ3MzI3MWRlZDdiZDAyY2I3ZGExZDdhZGNkNzAwNWQgaW1wb3J0X3VuaWNvZGUKKzgzMjQ2IDI3YzZhOTQ4ODk0OGZkZDU3NzdjMzY2ZjIzYTBkZGZhZGZmMjkyYzQgaW1wb3J0X3VuaWNvZGUKKzgzMjQ3IGExNWUxMGQxY2RjMGRmZjc4ZTA4NzQ3NTU3M2Y3ZDQ3NTllNzdmZTcgaW1wb3J0X3VuaWNvZGUKKzgzMjQ4IDlhNzRjNzVkZDgyNTI1ZmIxYTQzZmZlMDVkMGFjM2M2NDRjYzYzYTkgaW1wb3J0X3VuaWNvZGUKKzgzMjQ5IGVkMDkwMTE2YjczNGY3YzM3ZTIwNmI5YWM4NTZkZWFmNjI2ODcxOWMgaW1wb3J0X3VuaWNvZGUKKzgzMjUwIDYyMTk5NTkxMDkzOTJlMGU1OTUzMTNmZjAyZTIxMGIzZDAwMThlM2YgaW1wb3J0X3VuaWNvZGUKKzgzMjUxIDA5ODM1NmY1Yzg0NjFkMzRkYmUxN2E5NDFhMmM3MTRiMDJlYmVmNTggcmVsZWFzZTI3LW1haW50Cis4MzI1MiAzMjZiMTVkOGMzNDEzNjU4NzUzOTRhOTdlZDhjOTYxNjg1MjA4MGI2IGltcG9ydF91bmljb2RlCis4MzI1MyBkZTNmZmY0MjcyYzg0YjhmNDAyNGNhYzVmOWU3MzM5OWQ1ZDlkMTM4IGltcG9ydF91bmljb2RlCis4MzI1NCA4MDdiZWVmYWQ1MWM0YmU1NjdkM2FjZmViZDRjNTNlZTdjNThlOWE3IGltcG9ydF91bmljb2RlCis4MzI1NSAwNjMzODE1N2I0ZjcwODNlMGI4ZGQzNzQ3MDU2NGRiNGZiNDFlMzNjIGltcG9ydF91bmljb2RlCis4MzI1NiAwNGU0OTI1ZTVhOGNkNmNhOTEwZDMxYTgyMjg0MGQ1NmVjZmVlNjViIGltcG9ydF91bmljb2RlCis4MzI1NyBkYzVkYTAyMTM2ZTk4OTgyYzAyYzhlNTBiNTY2YzVkMzY3NzZhOGYxIGltcG9ydF91bmljb2RlCis4MzI1OCBhNGUwYjdhZjRiYTQ0YjAyMDU3ZWQ4NDEwMzAwNmRhYWFjNTdlZmEyIGltcG9ydF91bmljb2RlCis4MzI1OSBhOTY2YzNkNDNhN2VhYTYxMTI0MGU5ZjhjNTE2YzgxNmI1MmY0MmRmIHB5M2sKKzgzMjYwIGNiMThiYzhkZDQ2OTNhODRjZmY0ZGE5ZTdmYzhiODEzMzZmYzc1ZWIgcHkzaworODMyNjEgMGExNzQ4ZTEzZGU5NmRjNTU3YzVlYWRjMDE3MzI4NDQzZTFjMzU5OSBweTNrCis4MzI2MiAwZjZhMWU0NzZkMzEwY2FlZjA0MzAyNWEzNDhlNmVmODg3M2UyYTM3IHB5M2sKKzgzMjYzIDQ4NTU3ZGIwZWVlYTE4Zjg5MjUzNzFkNWE0NTQ1MjA3NDZiMzE1NWYgcHkzaworODMyNjQgMjQ5NzVhYWQ0MjY4MDlhOGIwNGMyYzc3ZWNlYzUyMjBkNGU2YWJmOSBweTNrCis4MzI2NSA3MTExYjc5N2VjMTE1ZmMzNGE0Y2ZiZTlkNWRkZjgyNDE1MGI5NGJmIHB5M2sKKzgzMjY2IGM1YmZlMTg2MGE1ZDgwZTBkZWRmN2YyM2MzN2I3ODc5MDI3OWU1OTggcHkzaworODMyNjcgMjk0MTIzYWVkNDZiNjUxMGRlM2U2ODk3ZjUxYzdlZTM0YTM2ZDFmZSByZWxlYXNlMjctbWFpbnQKKzgzMjY4IDk3MDRiOWQ4MTBlNWI3MWViNzU5NDY4Y2U4YTg5NjFjZTQ0MzM4ZmMgcHkzaworODMyNjkgODQwNjMzZDM3MmJjZGFlYWViMmQ4MmEwY2U0ODA5NTRhZTlhNzMyYyBweTNrCis4MzI3MCBlZmQ5N2EwMzkzNzQ5YTVmNWU4ODZjNWU3ZGQ1YmE3MzVlMjJjMzg2IHB5M2sKKzgzMjcxIDAzNzZlNjQzNWY1N2MxMmQ0NWUxNjgwNTNiYjYxMTJkZmMzMTQ4YmQgcHkzaworODMyNzIgMWM1ZjYwZjM4MWIyNjRhY2Q2ZjcxNDRmMDc3NjM2ODdjZDUzMWIwNCBweTNrCis4MzI3NCBhZDk4YjUyNWI1ODdjNjZhZDZhZmJlNjIyMTI2Y2I0NmRhYzIwOGVkIHB5M2sKKzgzMjc1IDQwZDZhN2MxNTgzNmEyZjE2NzQyYTBlNGY1YjY1ZTlhMmMyZTY4NzQgcHkzaworODMyNzYgYTFlMmFmNjUzN2RmZmYyMjQxZDA0MzRjNmE2NDY1M2JhZGRmZTA3ZSByZWxlYXNlMjctbWFpbnQKKzgzMjc3IDQzODBmYjIyNmIxMTI3MDViZjVlZDUzZDMxNmNmNzI4YWUwNzc0MDkgcHkzaworODMyNzggNTc5YjMzOWFiMTVmNTY2YmI1ZTQ0ZmZiYTAwZDUxODk5M2Y2OWY5ZSByZWxlYXNlMzEtbWFpbnQKKzgzMjc5IDI5OGM5NjlmNTY1Yjk2NWJmN2MxYmIxZDlhYjA3MzY2ODVhY2M2NjcgcmVsZWFzZTI3LW1haW50Cis4MzI4MSBhN2NjMDhiNGJhMjY5ZDlhNzRhOGE0OGJhMWNiN2RkYzI4MzAxOTcwIHB5M2sKKzgzMjgyIGFiYmI0OWFkMWZjMzMzMDY5ZTI0MjU1OGVlMmFiYWRiMGRjODJkMzEgcmVsZWFzZTI3LW1haW50Cis4MzI4MyAzODExODBhOGY0NDcxMmJjMTM0NDA1ZDYxZWQyNDFkYjBiZjc2Njk3IHB5M2sKKzgzMjg0IDkzNGIwOTBkZmVjODBlZDRiN2NlNGI2YjBhNzE3NGY4ZmFmY2MxYTQgcHkzaworODMyODUgZmU0YmI3Y2IxZmU4N2IyYzEwMmZmZjFiMjdkZmVjYjUyMDI3YTM1MCBweTNrCis4MzI4NiAyYzlhOGU2MTEyYjM5OTIwMTE2ODU0MWJjZWVhNTVkYTVlNTc2YmFiIHB5M2sKKzgzMjg3IDQ2ZDJlYzc4ZWY3OTU3NmNhNWI5YzYzNTc0YzgxM2I1NTkyOTA4NjQgcHkzaworODMyODggYmNmOTNlMzc2NmU4ZTQwM2JlMzBhMTg3NTc1MDdkOTViZjk5OTcyYiBweTNrCis4MzI4OSA3OGEzZGIyZjdlMGYxNzEwZWU5MWI5MmJiYTYyYTVjMWNmYWIwNTY1IHB5M2sKKzgzMjkwIDIwY2M5MzE3OTY5NTg2ZDlmZGJkMDEwNDg2ZmQ1YWM0NjkzZmFiMDUgaW1wb3J0X3VuaWNvZGUKKzgzMjkxIGMzYjY3M2I5NDYxMjNmOTM1MzJhMDJiOTU0MDA3YzE4MzM5YWQ5MWEgcHkzaworODMyOTIgYjgwM2NjMmQ2YTVjYmY3N2QxYTRhYzdjMDdkNzBiYjIyNGY0OTY1NCBweTNrCis4MzI5MyA2NzBkNGNiZjE0NjQ1MjJhYjU0MDZlZmMxNjEwNzAzZDcwMDdjOWUyIHB5M2sKKzgzMjk0IDc4NzFhYWYxMTFhMjVkMjk5MDE2OTRjMWI4NWI3ZWQzZjI2MTdjY2YgcHkzaworODMyOTUgMTAwMmMzZGM5MGQxYTVhN2IyOTIwNzY1ZDQ3YWYyNjI4ZDFlM2UyYiBpbXBvcnRfdW5pY29kZQorODMyOTYgNDY3MDE5NTg4ZmNjN2IyMzZkZDNlZmY5NmRkNzkyOWRiMTI2MmE3NiBweTNrCis4MzI5NyAwOGI5NDNhMWE5MzQ0ZDNjODBjMDYyNDM0MDMwYjVmM2VkZTg5ZDNkIGltcG9ydF91bmljb2RlCis4MzI5OCBjN2RjNWM3YjdhZjE5NWY3NGM2NjZhNjA2MDQwNzI0NGE5ZWE1YjdjIGltcG9ydF91bmljb2RlCis4MzI5OSAzZTc0ODczZjIxZWE1OWEzYmUyMzc0OTJlMjU3MWFhY2MwMzk0YmNmIGltcG9ydF91bmljb2RlCis4MzMwMCA4Y2Y2ZDI2NDQ5NzU3ZjI0ZTc5ZGE1YmI0ZGNmMDI0OWIwYzYyZGYwIGltcG9ydF91bmljb2RlCis4MzMwMSA2NWVlMGJjOTc0NzVmMTMyZDVmNjcxYTZlNDA5NDVlMDlhNDc5OWE2IGltcG9ydF91bmljb2RlCis4MzMwMiBkNmViZWRjZDZlYzRlOGU1NDg1ZjAxZGE2NmI4ZDc1MDc4MDMzN2RkIGltcG9ydF91bmljb2RlCis4MzMwMyA1MTA1YzEyYzMxYjI3ZDliMjg3OTIyODQ5MmQ1NDU2MmY0MWVmYzczIGltcG9ydF91bmljb2RlCis4MzMwNCA4ODJmZDg1NWYxMDJiNDM5MmVmMTNkOWY0MGY2ODgzMTk1MDRlNWEwIGltcG9ydF91bmljb2RlCis4MzMwNSA4OGFkYjY0YTdhZmQ5YmU3YmUyYzZjMTI3NDRlMDEyNTAyMDE3NGM5IGltcG9ydF91bmljb2RlCis4MzMwNiAwMDQ5NjE4MDFkMTg2NTYyNjZhYzVjNTdiZTIzMDczMTQ2NTliMWNiIHJlbGVhc2UyNy1tYWludAorODMzMDcgODQ1Y2VmMmViMWQ3YzdlNzMxYzY1MmI1MTkxZjlkZDI4MWRhMTdlNyBweTNrCis4MzMwOCA3YzRhNzc2MDQwMjc3MzJmNjAwNDc2ZjgzNWY0ZTJhYjY3MTU0ODRjIHB5M2sKKzgzMzEyIDY2MWU0YmY4NWM1ODg1ZDJkYzAyMGI2YTA4YWI3NGM3ZjI1YjMxMWMgcmVsZWFzZTMxLW1haW50Cis4MzMxMyBjMmVhMDUxNjFjOTMwOTdjNDIwZjRkNWQwOGIyODRhNGJjYzJkM2QxIHB5M2sKKzgzMzE0IDU4OTQ1OTBlOWM4ZDVmYWJiYmI3MGIyYTA2NjQ5MjdhMzI1NGQ4YzkgcmVsZWFzZTI2LW1haW50Cis4MzMxNSBjM2IxMzYyNjY1Mzg4YWM5ZTAwOGQ5ZGQzMjYyODcwZGQ5ODUyYmQ2IHB5M2sKKzgzMzE2IDMyZDk0ZjMxNmRhOTg0N2ZmZTI2YjRjYjIyNzQzY2MyNTNmMjNjNDUgcHkzaworODMzMTcgN2FhOTc1Nzc3MjAyM2RiMTQ0NjQzY2RkZDQ4NmZiYmI0NTUwM2UxMyBweTNrCis4MzMxOCA2YjIzYWEzMDAwMzIxZDc5Y2QxOTlhZDZlN2MxOGE3OWU0YjcwMzZhIHB5M2sKKzgzMzE5IGUxN2IxNjAwZjQ0MDZiNmVlMTlmMDJlY2RjYzA4ZjRhYjg4YTI3NmQgcHkzaworODMzMjAgNTUwYjM4Y2FmNWMxZmM3YmZhYTAwMDFiZTY3NDhkMzlhNGQ4OTA0MCBweTNrCis4MzMyMSA4YjQyNjkzZTk1YjhjMzc4M2I1MjlhYmI5OGIzYzVmMWM4NzdkMWQ5IHB5M2sKKzgzMzIyIGY1NzRhMDcxODg2ZGQ3YzRhYzRlYjg0ZDZmMmUzZWI0YWJlOTdkMjAgcHkzaworODMzMjMgNzkwMzUzYmVjZjhjZWNiOWM1NTEyYjRlNmExMjcwZjg3M2M2NzU4MiBweTNrCis4MzMyNCA1N2VhMDA1MTZlZGVhOTU2MTkzMTQ5NGE5YjIwNDI0MGY1ZjJmMzE3IHB5M2sKKzgzMzI1IDZmOGRlZmQwMTdkNzM2ZTcwNTMyYTFlMDVlNWIxYjllYTBhNTRkMzkgcHkzaworODMzMjYgNmUxM2VhZDM4OTU2MDQ4ODExMmU2Y2IxYWEzZGUwNWEzODAyY2NmMCBweTNrCis4MzMyNyBhNDViMzhkY2RmMTZjYTAwNjdkYWYyOTY4ODJmZDIyZmFkMWMyYTE2IHB5M2sKKzgzMzI4IDc0NTUxYzBiNTEzYjZjOTgzMjA4YmJiYmFlYzNhMjkxMWE2YmFiZGQgcHkzaworODMzMjkgZmI2YTEzODA3YWM5NWFlMzFhYjU1OTkwZTVlMDUxOTNlZGVjNWQyZSBweTNrCis4MzMzMCBmYzgxNWYzYjI3ODEyNzRjOGY4ZjlhZjE1NGE5MTRiODllODk5NjE2IHJlbGVhc2UzMS1tYWludAorODMzMzIgMWI1MGU2MjdjNjNhY2U1ZjAyMzg4ZGEwMjliMTA0NmQ3NmNhNDg2MCBpbXBvcnRfdW5pY29kZQorODMzMzMgMTlmZjM2MDMyN2U3ODM4MjFhYmVhMWY5NjhhZGUwMTJiYTYzZWFkNSBpbXBvcnRfdW5pY29kZQorODMzMzUgMDQzY2FhYzZjODc1OTMxM2E4YmYzNzRkMjZmYjI4NDIwZjc3ODZlYiBweTNrCis4MzMzNiAyOWU2MGNlNjNhZTViZTA2ZTFlN2UzYTg2MGQ4MTM5Yzk0YWFjYTE2IHB5M2sKKzgzMzM3IGU0ODZkMTlmMmIwYjgxYzNiOTA2MjlkZTQ1NDk5OThlNDc1NDM1MWEgcHkzaworODMzMzggOGE4MDFhM2FjYTM0OTlhMWFhMGMyNDEyODQxOWQ5MzBhZGM4ZTliMiBweTNrCis4MzMzOSA0M2QxNGJiZDZlYjExNzg0MmI3YmYxZjY3M2I3NGNkY2Q5ZjJjMjk5IHB5M2sKKzgzMzQwIGRlZDU4ZTQ0OWRhMzMyZTZmNTYxZjNhYjQ2Y2UwZDIxYmEzZmRhYzQgaW1wb3J0X3VuaWNvZGUKKzgzMzQxIDEyNWY1NGE3MGFiOGZiZThmZmY1Mjg5YjdhNzVhMjU2MDdkMTkyMzkgcHkzaworODMzNDIgNTk0N2IxYmIwZmVjZGMxN2U1MTNmYzdkNGU4ZDNjMjc2Mjk1NWRiNyBweTNrCis4MzM0MyBiMzdiNzgzNDc1NzQ5MmQwMDliOTljZjBjYTRkNDJkMjE1M2Q3ZmFjIHB5M2sKKzgzMzQ1IGZjZTc4YTIwOGRiMjcwYjAzY2M4OTU1NDg1OTgzMTc2MmZlZjQ5NjMgcHkzaworODMzNDggMDljYTQ2NDkwNzA3ZWY5ZGU0M2U1Y2Q1MDlkM2RlOTRkN2ZiYTk0YyBweTNrCis4MzM0OSBhNmI3MThlODE0NDgwY2ZjNmIzMWUzYWQyM2YwYjY4NGRlYTFlYTM4IHB5M2sKKzgzMzUwIGM1NTg3NmE2ZmEzY2MwMDBhOTNhZWZlZGRiNmUzNmY1YzAyNzA0OTggcHkzaworODMzNTEgYjEyZGRhNjJlOTNiYjk0YWMwYTNlMDgwYzQ0YjQ2MzhiNWVkODlmYyBweTNrCis4MzM1MiBlMDFkMjZhMzQ2ODk5YzhhYzU3OWU0OTA5OWQ3YWIyYmU5YmQ3MWJlIHB5M2sKKzgzMzUzIDRkYTNjNTcwMzQzYmIxMWUwOWI1MTZhM2FiMTM0ZmE4MDBmMDc4YWMgcHkzaworODMzNTQgMjVmNmQ1NzBlN2MxNjEyNjEzZjdmMjE4MDYzNDRhNDEzYjIzMWEwOSByZWxlYXNlMjctbWFpbnQKKzgzMzU1IGJlNjFjODA4YjUyODk2ZjJlMmFiZjg1YWNiOTdmZGYyYTYyOTUwMWQgcHkzaworODMzNTYgZTI1MGU4ODUyNGQ1YjA5YjJkY2JlMjAyMWMzMzU3OTJlN2I2M2EyMSBweTNrCis4MzM1NyA4YmRiZDMyYzJlYmJkZDZhMDJiYmNkMWUyMzdmYTAyNjdkMzJkMmNlIHB5M2sKKzgzMzU4IGY5Y2MwOWRhY2VkYWRkNGM1MmI5MWRhMjYwZjMwZTcyZmZiM2EyZjkgcHkzaworODMzNTkgYWI4OWQwZjUyYTdmMzBiN2I2MDllNzRmOTYwNzg0OTY3ZmE3ZDZlNiBweTNrCis4MzM2MCA5ZWI0YmE0NWE2YjI4NmI2YzU2MTJjNTJlNTRhMTAyMDk2NDE1NjIyIHB5M2sKKzgzMzYxIGUyMzdiMTVjMmJlOTk0MjQzNjJjNWE5NDUxNTczMDc4NTk4ZWQ4OTggcHkzaworODMzNjIgNmVjNjY4NjIyZDY0ZDljYTMwM2ZlMDU1ZGE5MmM4ZTM4MjM5MWVmYyBweTNrCis4MzM2MyA2ZWVlZDM1MjY2MzQyNzQ3ODA1MmE3MTRlMzMxODdhMjdhNDdiZDRhIGltcG9ydF91bmljb2RlCis4MzM2NCBiMjQ4NDFjMzA5YmU1NDY4MTUxMWNhNDczMGM0OTk2Njk2MWI4YzdiIGltcG9ydF91bmljb2RlCis4MzM2NSAxOGIyNzM0ZjdmMzhjYzVlZWIyOTZlMDcwZDQ5OWFlMzBiNGVhOTkxIHJlbGVhc2UyNy1tYWludAorODMzNjYgMjYzZmFkYTI1NjVkYTIzM2MyMWQ2NGQ1Yzg1YzdkNDdhODhiYTYwZSBweTNrCis4MzM2NyAyNjU2NWViZDVlMzJlZTdkNDE2NTU5MGEyMTAyZmUyZjMxNzQzOWI4IGltcG9ydF91bmljb2RlCis4MzM2OCA2ZjViYTcxMzE2ZTcxNjFiNzdmZmZlZmMzOTdiY2UzMWE3MWEyNzU2IHB5M2sKKzgzMzY5IGFmNjkyZWU5MGY2ODM4MDU2ZThmZjljOTJlYjE0NzM5YjFiOGEzNTIgcHkzaworODMzNzAgMjhmMzdhMmI0NDRiZjM1NGM3YWU3NGM3MjlmMGUwNDE3MjFhYmRjYSBweTNrCis4MzM3MSBlMmE5ZjYzM2Q2MTI2ZmFmZmM3NDIyOWY1YzUzMTNmMDRkZjc3ZmI1IHB5M2sKKzgzMzcyIDFjZTlkNGZiMTNjMjY1MjAyMDliYTdhYjczOTNmNDljZDM2ODYzMzcgcHkzaworODMzNzMgNjVhZjdiZTYxNGE0ODE4YzhmNDRhMzNhOGIzOTJjNDk3MmIxMjc3YiBweTNrCis4MzM3NCA1YjI0ZDFlMTgyNjk5ZDExZmE4Mzg1MzM5NzI0ZDYzOTNjZjQ0MTg3IHB5M2sKKzgzMzc1IDIxZDhjNDJjMGIxMDc4MDA5NjhkMGNjYWU1OThlYmFmMjEzMzgzMmQgcHkzaworODMzNzYgMjgxMmJmZDg0YjUwMDBhNWFjNTdmZTIzZTMzOTk5MjBhOGQ2M2RlYiBweTNrCis4MzM3NyAzODcwNDNkMjA4MGI1M2ZkODNhMTk3OTIxNjIzYzc4NjdhNWZmZDQzIHJlbGVhc2UyNi1tYWludAorODMzNzkgZjI5YzMxOWZmNTY3OWEzZjY0MWU0ODhmMTY5MTVkNjkxMTljMTlmYSByZWxlYXNlMjYtbWFpbnQKKzgzMzgwIDQ2MDNhNWM0Njc1YTQzMjAyNTU1MDg4NzkzOWJmMDZiZDRkNTEzNzggcHkzaworODMzODEgZTgwNTc3ZDU2YThmYzQ4M2QwMmJkZDQyZWQ5OGM3ZjhmZDcwMjk5NSByZWxlYXNlMjctbWFpbnQKKzgzMzgyIGRjYjE2ZDcwMzY1MzhhMWQzN2UwMGE4MmExNzAxYjQ2MTQ0OGZjYTkgcmVsZWFzZTI2LW1haW50Cis4MzM4MyBlZGRhNzU5NmM4MzEyNzk1ZmIyOTVjMTMxZjc3MmNlMDk1MTMzZmMzIHJlbGVhc2UzMS1tYWludAorODMzODQgNzhiY2FmZjBkZDJiMDJhY2JiYjdiYzE4YTZmYzU3MWM4ODc2ZDI3MCBweTNrCis4MzM4NSBkYWQwODVjOGRlMDk5YjFiNjk3NTAyZDIyOWU5MmFjZGI4YzA3ZDI3IHB5M2sKKzgzMzg2IDZkZTcwZDQ5YjkxNjVhZDg1ZjY3MWZiNTgxYTQxNjU5OGFhZTJkMWIgcHkzaworODMzODcgOTcwYjdjZDUyNDUzYjVlYTM3Y2RiMzEyZThkNzcwYmE0NzRmYTViZSBweTNrCis4MzM4OCA3MzQ0NDI3ZTg3ZGZjYjM1OWU4NDIwMWE1MjQxM2Y1NTNkNTFiMThjIHB5M2sKKzgzMzg5IDZiZjI5MmU5MDZjMmMyM2ViMTA0YTBkZjQxNDhhZTliOTRlNzkzNjMgcHkzaworODMzOTAgM2M0YmQ4NjEzMzgzZTRkNjE1MDM5OGRhMzk5YjMwODQ0NzNjYzVkZSBweTNrCis4MzM5MSA1NDEwZTExNjdmN2QzYzUzNTY0ODQ2ODVmMGJkYTQ5YTJjNTMwMDI5IHB5M2sKKzgzMzkyIDZlZjMyZDIwOGZjYzRmNGU3NWM5YTJmMzE3NWJhY2EyZjQ5MDZlMzIgcmVsZWFzZTI3LW1haW50Cis4MzM5MyAzMWY0YzRiNmM0NDUwMzMwNmYzYTQzZjE0YzdhMmZjYTZjYTRhYWE4IHB5M2sKKzgzMzk0IGE0YWQxMDk3NTc3NmM1OGU5ZjVlNDU3MWQ3MWM1YjI5NzVlNzQxZDMgcHkzaworODMzOTUgNjZjYjE1YzYyZGI0MmU2ZDc1MGFlNmU5Y2E2ZTc1YjJhMjlmMWVmOCBweTNrCis4MzM5NiBmMmY3OTYxOWY2YTQ5NDcwNWE4MjA0ZTE3ZWRmNDliMTVhYTYyMGE1IHB5M2sKKzgzMzk3IDVlZTNlMjcxMmQ3ZGNmYmY3YTIzOGRlMjgzZGQzYWMzODdmZDJhY2EgcHkzaworODMzOTggY2IyMzFiNzk2OTNlNDZkZmVmZTJhZmIwMTcyYTM4M2E5NTk1ZDE0OCBweTNrCis4MzM5OSA2ZDM1ZDZlNTg1NjIxZmYzZTZmMWQ2NDM4NGIwODU0MGRkYWIzYTc2IHB5M2sKKzgzNDAwIDg5N2ZkNTEwNTFiYjZmMjZhZWEwYmM5ZWVhMTA1YWM4OGRlM2JjMDAgcHkzaworODM0MDEgMzk4ZmE3Yjc3NTNhZTBhNjY4NjllOTYyMmE2Yzg2NGM5OGQ2ZjA4NyByZWxlYXNlMzEtbWFpbnQKKzgzNDAyIDUxYWFkNTA5YzIwZjE1MTU5NTUxYWQ4YmQzNjYzYjA3N2E5OGM4MjggcmVsZWFzZTI3LW1haW50Cis4MzQwMyAxZjAyNzFjMDM2ZTE2OGZlNGFiMjA0MGMwMTkyOWFmOWZlNzE4NjY5IHB5M2sKKzgzNDA0IGNjMmY4NjRiYWM5Y2VlM2I4Yzg3YTliMzQ0NGJlNjE3ZGYzMjIyYTMgcHkzaworODM0MDUgMTM1Yjk5MWQ2NWI2MGU2ODc1MWIwNWQ1MzdiNjY4MGY0ZmNiOTkzNCBweTNrCis4MzQwNiBjZjk4OWEzNGM3N2UzMDM5YmEwNTc1NWI1MjAxYTg1MjNhNjM3YmU4IHB5M2sKKzgzNDA3IDg4YzNkYjZmNDc5ZTQzYjljODc4ZDU1ZTZjZjYzZWRiZjkwOTFmNmEgcHkzaworODM0MDggMjI5OTNkMjdmYzhkZWU0Y2JlMGEyZjM5MzUxODFlMWIyMTYxOGM5NSBweTNrCis4MzQwOSAwYmU1NTA0MjEzZDM4MGYwZmJiY2FiOTQ2MWQwM2JlMThmODViODI3IHJlbGVhc2UzMS1tYWludAorODM0MTAgZTMxNjVlZWFhNzAwYzU4ZDFhNjAyOWYwZDE5MTA4NzI4ZGI4MzhlMyByZWxlYXNlMjctbWFpbnQKKzgzNDExIDc0NTk5ZDM5NTRlMjhkNGM5Zjc0NjE5M2UzNTc4ZGI3NjVmNzNjODEgcHkzaworODM0MTIgMGZlNTVjMjg2ZWRmZDQ3MjY0Yzk3YjhiMDBjOTcwNzZmOTBhMDU4MyByZWxlYXNlMjctbWFpbnQKKzgzNDEzIDc2NjA1Y2ZjNGNmMzgzYmM4ZWJmZmYzMDYxY2MwM2ZhYTY5ZTFiZjggcmVsZWFzZTMxLW1haW50Cis4MzQxNCA2MjVjMjFkZGUxMzgwZjgxZjU0ZDRhMmYyNmMwZmZiODI2MWQ5ZTQ2IHJlbGVhc2UyNi1tYWludAorODM0MTUgYzgzYmE1NTE1MWIxZjMwZDJjZWQ1OTgzYjc0ZWQwOTQwMjY1MWE5OCBweTNrCis4MzQxNiAzMDIwMmMwMDE0MDE1NGQ1M2Q0NWIzYzc2NjQyMjdkODM5NThjYjM0IHJlbGVhc2UzMS1tYWludAorODM0MTcgZWY3NWVjZDBlMWE3YjMyYTk1NDBjNDIyZTZjMmY2NjNkYTVjOGU1NSBweTNrCis4MzQxOCBjYzMzNTA4ZTgwY2Q3ODE5Mjk3YjlhMWRhZTdhMzQxMTVmZmVjMmIzIHJlbGVhc2UyNy1tYWludAorODM0MTkgNzFmYzkyYjg4YjE5YjgwMWU4OTg5YjM4ZDFlYmU4NmE2YTM3MDUyZCByZWxlYXNlMjctbWFpbnQKKzgzNDIwIDAxY2JkOTMyMDI2NDQ4YTc1MTA1Y2ZlMDVkYTA5Njg2ZTViZjM2ZGEgcmVsZWFzZTI2LW1haW50Cis4MzQyMSA4NDM2M2M3NDdjMjEyMGFhNDJiNDhhMWJhMDRiMTdlMDg5MmJlMmI2IHJlbGVhc2UyNy1tYWludAorODM0MjIgOWVlMTk2YTdmOWEyYTMyYmU0NGY4NzYxMWVkNTdhMmQyYzA2NTgyOCByZWxlYXNlMzEtbWFpbnQKKzgzNDIzIGRiYzhkYTgxMzYzMGU2MTBmMGZlNTA4ODU0NmZmZWUwMjE2OWRiMjMgcmVsZWFzZTMxLW1haW50Cis4MzQyNCA5ZGUwN2M1NWZkZGEyNzY5ZWRjNTc5ODVmYzk5Nzc2ODJmNzFlMDIzIHJlbGVhc2UyNy1tYWludAorODM0MjUgYmM2NmUxNTY2YTE5Mjg0NzJhYmYyYWNlMTg4OGIwMjJmOTAzMjcwOSByZWxlYXNlMzEtbWFpbnQKKzgzNDI2IGJmNWM2MzBkYWFmNzUyZDI2ODQzM2JkODIzYTI3M2E5MDQ4MTUxNGIgcmVsZWFzZTI3LW1haW50Cis4MzQyNyA5M2IzYWU2M2QyZjMxMzg4NDE3ZmJmNjQwOWM0MWY1ZDkxZjEzNmQxIHJlbGVhc2UzMS1tYWludAorODM0MjggMTBjMWI2MTQxZDUzNWM1ZGViYjYwYTEzZWZmNWQyMDhmYTk1Mzc4MSByZWxlYXNlMzEtbWFpbnQKKzgzNDI5IDlmMmZiZWU0MjBkYWMyYTFkY2QzMzIwYjFmOGZkNzg5ODlmZmI5NjggcmVsZWFzZTI3LW1haW50Cis4MzQzMCAwZGNhZTQ1NWVjMDc2ZGJkMzhmNWU5ZjdiMDQ5ZDVjYjU2ZWJlZDBiIHJlbGVhc2UzMS1tYWludAorODM0MzEgYmEzNDI3OTYyMzA2MzdhOGY3ZTQzMmY4Y2NkMTVjNTU4MDNiODgzZSBweTNrCis4MzQzMiA2NjFlMGIwYjQwYmYxZjNjYzhkMDVjOGNhYmU1ZmExMzU2MDg4MDU2IHJlbGVhc2UyNy1tYWludAorODM0MzMgMjBjNzI0NGJjYTc4MDM3NjVlMGU2NzVhNDZiODI0YjMxZTI1YjRiNSByZWxlYXNlMzEtbWFpbnQKKzgzNDM0IGI0OTIwMTQ4NGY3ZmU1ZjNhMDQ1ZDczZjdkZWJmMzlhMGYyZGE4NzkgcmVsZWFzZTI3LW1haW50Cis4MzQzNSA5MTgwMjg0MGYwZjc4M2YxZGQ1NTQ0NWU1ZGNjMzk5ZDQ1ZGMzZmQ5IHJlbGVhc2UzMS1tYWludAorODM0MzYgMzQ5OWVkNmNiZDA3N2NkNTZjNDZkMjU1MzU1MTcwMzBlMmZhYzYwYyByZWxlYXNlMjctbWFpbnQKKzgzNDM3IDQ5MDNlNzU3NzQ1NDg1OGE1NzE0ZWM5Mzk0YjYxZmM0MDg1NWY1MTQgcmVsZWFzZTMxLW1haW50Cis4MzQzOCA0NmIxNGEyOTUwZDAwZWI3NjUzNjNhYzAxYWM4OWQzOTM1NzQ0OTE4IHJlbGVhc2UzMS1tYWludAorODM0MzkgNGY2NzkxMDRjYjg2YmRlNjQzYzE5YjczMGM5YTJmYzRkNDZiZTc4OSByZWxlYXNlMjctbWFpbnQKKzgzNDQwIDQwNGE5YWMxYTlhMmI3ZWUzZmI2NWU1ZGExMDhjMWE0M2I0ZDYzNGIgcHkzaworODM0NDEgM2MwZmZlMzk1NTdkZWU1NWRhZDRlZjhlZGQ3MmQ5NmU4YzlkMGUxYiByZWxlYXNlMzEtbWFpbnQKKzgzNDQyIGE4Y2ZlZjg4NDA4ZjNjNDU1Y2U0MzRhNzliYjEzZWU5OTNjYjZkMDQgcmVsZWFzZTI3LW1haW50Cis4MzQ0MyA3MjA3OThhMWVlNzE5MjJmYWE3MzRhYmE1ZGNjZDc3ZjdkYzE2NzIwIHJlbGVhc2UyNi1tYWludAorODM0NDQgNzY1YmZkOGVjOTY4OThjZDUzZDk0NjdhZjY5OTIxNTZhYTVhNmIzZiBweTNrCis4MzQ0NSA1YWYzNjFhZGFhZTlmZGRiYWM3ZjQwYjA4YWUzOGQyZTRjZTM0YzM4IHJlbGVhc2UzMS1tYWludAorODM0NDYgNzViM2VkZGEzYzJiZDk1MzhkYjY5N2YzNWJiODJlMTUzYjVmYWIwYyByZWxlYXNlMjctbWFpbnQKKzgzNDQ3IDE0NmZlZjAyNDlmOWZmYzEwZGY4Nzk3NjY4NjAxODNjZjFlZDViZTQgcmVsZWFzZTMxLW1haW50Cis4MzQ0OCA0MTVlYTJjM2NmZThhOWMwZjA4MzIyMTJhMmNmZTNkNTRlZWM1YWUwIHJlbGVhc2UzMS1tYWludAorODM0NDkgNGEwMDJkYTdmYmZiM2Q5NjYxYjY4YjIyZTRjYTBiMzNmYmYwZWE0YyByZWxlYXNlMjctbWFpbnQKKzgzNDUwIDNkNzgyM2U2ODk3Yjc2MTIwMDQ1MzdiMjQ3NmY2YjJjNzgyM2Q3OWUgcmVsZWFzZTI3LW1haW50Cis4MzQ1MSAyY2E4NDJkY2JlMTFlODQ0ZjAxY2EyY2MxNGVlZjcxNzJhYzUyZTBmIHJlbGVhc2UzMS1tYWludAorODM0NTIgNDczYTgwNjhmNmM1NGE0MjczNTkzZmRmMTFiMDlhZmJjMzg3N2E1MSByZWxlYXNlMjctbWFpbnQKKzgzNDUzIGJlYWIyZmIyOTZjY2RiNjgxMDY3MDYyMGQyZDFjZjY4YmQzZGQ3ZWYgcmVsZWFzZTMxLW1haW50Cis4MzQ1NCAwMWQ5Y2E4MmZkNGU0ZWUzMDNlZmViZGM4YjhhMzgwM2ZlM2NlYzlhIHJlbGVhc2UzMS1tYWludAorODM0NTUgYWFkNTc2NmJmMzZmYzZjY2Q5OGYyN2RmOTM2ZjUwMzdhYTliODg5YSByZWxlYXNlMzEtbWFpbnQKKzgzNDU2IGM3MDZmODY3OWRmY2UzZjRhNTdjZjkxZTdiMThmOGZjYmUyMTc4YWYgcHkzaworODM0NTcgOGMxMDQ1YjkyYjZmMTlkMjdkN2Q5YjgwN2E1Y2U3YTJhMGFkYTY4YSByZWxlYXNlMjctbWFpbnQKKzgzNDU4IGYwNGY0MjEzNGE5MjE3NGZkMDM4NjNlNzA0Y2U1ZGVkMTQ1ODEzY2YgcmVsZWFzZTMxLW1haW50Cis4MzQ1OSAyYmMxZmMyZDhjYzA5ZDczNGQ1YjhhNGJlNzJkYTBkNWZkOGZjMzEyIHJlbGVhc2UyNy1tYWludAorODM0NjAgNjlmODdmOWQzM2U3MjIwYjZiZWIxNjk1ZmM4MjVlMDY0YjcyNzZlYiByZWxlYXNlMzEtbWFpbnQKKzgzNDYxIGJmNjgyMjVkZDJiY2U2ZDVkOTU3MWQzYjlhMzgzOGFmNjUwNmMxNmMgcmVsZWFzZTI3LW1haW50Cis4MzQ2MiA5ZWE1ZGI1NjdiZGQ4YmZmOTI4MDc2OTllNDBkYWFiM2QwNGUzNTE1IHJlbGVhc2UyNy1tYWludAorODM0NjMgYzQzMmFkYWMxMTZhZDcxNDg4MmMzYjI2ZmNlYjI0YjE2ZDQwZWFhOSByZWxlYXNlMzEtbWFpbnQKKzgzNDY0IDkzZDEyNGE4MTk1Y2M0OGE1YjllMmNiMzQ4ZWFhZTEwOWFkZTA4ZmIgcmVsZWFzZTI2LW1haW50Cis4MzQ2NSA5ZjFlZWNiY2MzNjYyMGRlMTU4MzMzZTg0NTg4NzdhNWJkNzEwY2NiIHJlbGVhc2UzMS1tYWludAorODM0NjYgMTk4YjJjZDNhNmQxYjg3YjhhYzJiOTMxYTFlODE3ZjVlYjQwMjA2YyByZWxlYXNlMjctbWFpbnQKKzgzNDY3IDM5NWVjYWU2MDJjYjEwMWU2ZGQ4NjU1ZTA0YjYzMzVmZmI4ZTkwNDAgcmVsZWFzZTMxLW1haW50Cis4MzQ2OCA1YjdlMzVhYTFmMWQxNzNhOGZkMGVjNTNkZWVkNWIzMTM2N2RhODcwIHJlbGVhc2UzMS1tYWludAorODM0NjkgY2I1MjIyNTcyZmNkOTNlYjViMjZlZDVlYjg2MThhOGE5NDlkMDlmOSByZWxlYXNlMjctbWFpbnQKKzgzNDcwIGNkMTFlMWExZmQ4OWJjMTU2ZTQzYzA3N2IzMjFiZDhjNGFiNTE5N2QgcmVsZWFzZTMxLW1haW50Cis4MzQ3MSBmMzU0MTQ2NDJkZmZhMzM1YjI3Yjc2ODQ1NGYwY2I4Zjk1NzI4ZTVhIHJlbGVhc2UyNy1tYWludAorODM0NzIgMjI4YTBlZjIzYTdiMmU1NGFhNDI4N2NiNjYyZGFiMDRjYTk0MDNiNyByZWxlYXNlMzEtbWFpbnQKKzgzNDczIDkyZjk2OGQ4NzRiODZlODFkZWU2YzFiNDkzNTIwOWY4ZTA1MzA1NGYgcmVsZWFzZTI3LW1haW50Cis4MzQ3NCBmNDZkY2Q4YTMxMTM1YTgzMGE2ZGE5Mjk4NzlkYjFhOWMzZjIzYmU3IHJlbGVhc2UzMS1tYWludAorODM0NzUgMjc1NDRmYjBmN2YxNDg1OTA0OTQ0NzBhM2VhYjhkZTFmMmMzOTA4MiByZWxlYXNlMjctbWFpbnQKKzgzNDc2IDEzMTJlNTk0ZWJlNzg0OGU2NzUwN2IwYmMyYzY3NDJkNTFlZTY1M2QgcmVsZWFzZTMxLW1haW50Cis4MzQ3NyA5YmY3YTBmNDJlYWMzOWY1Mzk2MjkxNjY5OTc1NDk2MDllNjgzMjYyIHJlbGVhc2UyNy1tYWludAorODM0NzggNmFlYTcwOTI4YTZhYzZkNDk2NmM5NmQ0NGM2YWQ1MzExZGYyMzUwYyByZWxlYXNlMzEtbWFpbnQKKzgzNDc5IDFhYmRiY2ZhYTA4OWQwODBiMTM2ZWJhZmRkNTY4OTQ0NWE4OWZlN2EgcHkzaworODM0ODAgZjM2YTA0MDc4YmZkYmZlYjI2NGQ3OTMzMjE1NmQwMzVlZTAzOGU0NSByZWxlYXNlMjctbWFpbnQKKzgzNDgxIGViZDRiMjhmNDZhMGYyOWJiZjlkZTU4NzhjNjhkMjYwYjNjMWQ2ODQgcmVsZWFzZTMxLW1haW50Cis4MzQ4MiAwZGQ0ODAwMzhhODg3MmM4NzJkN2VhOTExODFkZjM1MmJmNDQ0ZDQ0IHJlbGVhc2UyNy1tYWludAorODM0ODMgZDE1YjQzYzI3MmZiYjZkNjQ3ZGNiZDgxNzY1Zjk0MjhhYzU0MjZiZCByZWxlYXNlMjctbWFpbnQKKzgzNDg0IDk1MDFjZDY0MGM4ZTg3ZTJlY2YxMTc2OTIyNzBiY2RhNjhjOTVkOWIgcmVsZWFzZTMxLW1haW50Cis4MzQ4NSA4ZjhiYTRiZmJmYTUwNjQ3NjRiYzJmYzQ2MmZlZjY1YjMxZDQ1Nzg1IHJlbGVhc2UyNi1tYWludAorODM0ODYgNzQzNDA2NzQ5YjJkNzA1Y2MzOTFkMTQxZTg4ZGZkZjUxODVjMTI2MSByZWxlYXNlMjctbWFpbnQKKzgzNDg3IGU4ZmM5YTllMTk5MWEwNzk5Nzg1MTU2NDJjZDM2YmM2YTUyYTZkNzQgcmVsZWFzZTI2LW1haW50Cis4MzQ4OCBkZTZkZWY3OTMyNmM5MzY2NzZmMWRkYWM1MTFlOGFmOGFiM2YzMTE1IHB5M2sKKzgzNDg5IDJhNGIyZmVjODI3N2M3YjhmNWZiNWMzMjIwOGU2MzAyY2NjMjkzZTYgcmVsZWFzZTI2LW1haW50Cis4MzQ5MCAyYzI1M2Y2ZTAyZTdmOTI1NDA5NWM5YmUzN2NmODI5ZTdlM2NhMjExIHJlbGVhc2UyNi1tYWludAorODM0OTEgMzg4MTI5NDhjNTMyMTExNzdjOTk5MWQ3OGNlODg2NTFiZDVmZmRhYSByZWxlYXNlMjYtbWFpbnQKKzgzNDkyIDk3Y2IxZGQ4NTY2ZWIyMzVjY2U2OTc1MmVjNzg1NTYxOTVkNjZiZmQgcmVsZWFzZTI2LW1haW50Cis4MzQ5MyA1ZmQwOWU0MTBkMzZiZjM2MGVhMWUyMTViNDI0ODc1NmE2NDkwMWZmIHJlbGVhc2UyNi1tYWludAorODM0OTQgYjdkNWNiYmVhMTgwY2ZmZGI0MDhiYzkzZDIwYWU5ZDBkMTc2NjhmYSBweTNrCis4MzQ5NSA2MWFkODFhNzc0YzU1MDYzZmIxMjllY2U5ZGYyODc0N2UxOTM4MDAzIHJlbGVhc2UyNi1tYWludAorODM0OTYgOWM3NWE5NDE4N2M3M2Y2YTc4OTQ1ODYwMDI0MDQwYWMyN2I1NzMyYyByZWxlYXNlMjYtbWFpbnQKKzgzNDk3IDBkYjY1YzY1MTBkYWE1NjhmMGVlMWIzOTZhOTA3OTBjMDU5YWMwMWIgcmVsZWFzZTI2LW1haW50Cis4MzQ5OCAzMTc0ZDViYTQ2ZTM4ZjFiODAxZWJhMGI2MzMzNTEwYzA1MTg3ODAwIHJlbGVhc2UyNi1tYWludAorODM0OTkgYmMxMGE0NDI3MmRmYzdlZjhmZWE5ZTdiMDYyOTJhMGY2YTc1ZTRlMCByZWxlYXNlMjctbWFpbnQKKzgzNTAwIGZkYmZjZjlkYTJjNzEwY2JmYmNhODhlYWViMjE0ZjMzOTczNzA5NjcgcmVsZWFzZTI2LW1haW50Cis4MzUwMSA4YWRhMzVlOWY0NWQwZjEzN2VhNTNjMjQwZGUzN2YxOWU0NDBkNzFmIHB5M2sKKzgzNTAyIDJjMzY3NTAxNjE0NTFkZDUwMmMzMTI3OWQzNDNhZDBkMDIyYzEyYjIgcmVsZWFzZTI2LW1haW50Cis4MzUwMyBlNDhlZjcxMzFjZmJjN2Y0NDA0MGQ2NTI2ODI1NTMxNjE3MWVmZjZiIHJlbGVhc2UzMS1tYWludAorODM1MDQgYzk2NjMxMzIzOTBkY2RjNjZiZTQwOWVhZmM5MDZkNmJjNmE2NDJhYSByZWxlYXNlMjctbWFpbnQKKzgzNTA1IDBhYWM3Yjg3NzFlMTdmZTNhODJiOTc1MTRmYmY4ODM1NTBhMThkYTMgcmVsZWFzZTI2LW1haW50Cis4MzUwNiA4YTE0OWE5ZjlkYWY2NTcxNjQ1MDA2ZWI0ZTM0M2M2NjA4ZDc2YzIyIHB5M2sKKzgzNTA3IDJlOTdhZWJhZGU0ZGRiY2YzNmUzNjQxOTc4OGNmZThjZWE5ZDM5YTQgcmVsZWFzZTMxLW1haW50Cis4MzUwOCA2M2IyMzQ5ZWY3OTBkNGY0NmI3YzBlNDhmZDc0MmQ1NGUwNDAzNjNhIHJlbGVhc2UyNy1tYWludAorODM1MDkgNzJjOGZhYjkxMTZlYjA4YmIxYzI4M2Y0YTk0MmUyNTBlOTFjZjk0ZiByZWxlYXNlMjctbWFpbnQKKzgzNTEwIGRlOWYzNTNlZTg2NWQ5ZTU4NWIxNjJkNjNiMTY1MjNjNjMwYTE3NTMgcmVsZWFzZTI2LW1haW50Cis4MzUxMSAzN2QzY2Q4YzEwZmI0NTExOTdlNTRlN2JkZWZjZWQ3ZmQwNWNjYTI2IHJlbGVhc2UyNi1tYWludAorODM1MTIgNzUxYzZkZDcxYjVlZDU1ZDQ5NWNlNDA3NTE0MWUxMDkyZjIwMDdkOCByZWxlYXNlMjYtbWFpbnQKKzgzNTEzIGViNmY5OTI1NDMxMzczOGRkYzc4ZWYwMjhlZWE3ZWJhNjZmYTMxMjQgcHkzaworODM1MTQgMTg1ZTNmNzI2NmU5MGQ3NDNhMzk3MWY1YThkMzdhZmQwYTdjN2FmMiByZWxlYXNlMjYtbWFpbnQKKzgzNTE1IDMwMDg2YWEzMzEyMzUxMmFjMzRlZjRjYjlkOGQwMGNkYzU3YjgwYjIgcmVsZWFzZTI2LW1haW50Cis4MzUxNiBkOGRiZjI0MDBkOGEyMWM5ZTRlYWFiNDg1OTliYTk4ODk3ZTgxNWU1IHB5M2sKKzgzNTE3IDhhMmE4MmJiNzFjODIyNDdlMWRmMDg3MjdiMWIxYzZkY2ZjODFiMDggcmVsZWFzZTI2LW1haW50Cis4MzUxOCAyZGMwYjcxMzFjNzIxMDgwYWQ5MTY5YzY5ODQwM2ZmNzg0MDZjOTI2IHJlbGVhc2UyNi1tYWludAorODM1MTkgMDdjODRiOTgxNDAxNDg2MmQwM2RhNjA0MWEwNjgwNGUzZGVkMmMyNCByZWxlYXNlMjYtbWFpbnQKKzgzNTIwIGZkNGIwN2FiNzk3Njk5NjQwMDY1MDEwZGMzZGViOWZhOWIxN2MwMWIgcmVsZWFzZTI2LW1haW50Cis4MzUyMSAzOWUxNGRmNzY1ZTQzMWI5YTc4ZmE0NzUzYTNjMzcyZDE5NmE4MzNlIHB5M2sKKzgzNTIyIDkwNGVmNGJiZmY1ZTU2NGJmNDE2ZDA2NTBhZjk3ZTdlOGQ3MGIyNTQgcmVsZWFzZTMxLW1haW50Cis4MzUyMyBiNjE0NGRhYTQzMzlhMThhYjEwZTZlMWZmNjJkNjQzZTJjYTk0YTQ4IHB5M2sKKzgzNTI0IDYxZDM0ODFlYmE3NDFkNzU3Mjc3ZTI3YjU3NDJiYmE3MzIwMzRiOTEgcHkzaworODM1MjUgNzdiYmIwNWQzMTBlNjNkZGU2ZGRjNWFjNmEzMDY2MDllM2RhOGFlNCBweTNrCis4MzUyNiA5MjQ2YWFkZmNkNzg5YzIzZjEzMzlhZDVhMDFmNGFhZGE2NzNkNTJjIHB5M2sKKzgzNTI3IGViNzkwNDk1YzZhNDUwMmM5YTBlYjE1NjVjYjY5MGQ4MjQ0ZTUxY2YgcHkzaworODM1MjggYTM0OWZhZDUwN2EyMjQ1ODE1ZTUyYmQ5N2ZiZWQ5YmIwY2Y4MjNlMSBweTNrCis4MzUyOSAxNjQwZWZhN2ZmMjljOTI0Yjg4NzhmY2ZiZDE5Yzk0OGZhMTA2N2E1IHB5M2sKKzgzNTMwIGIwOGQzNTA2MjA4ODVmMDJmYWYyNDkyNTA3MmZkNzBlNTgzOGUzNzkgcmVsZWFzZTMxLW1haW50Cis4MzUzMSA4NWNkYWY1ZjNjZGMzZTE0YzA4MWU5ZjI3OTg3NDg2ZTg1ZDhhNzRlIHB5M2sKKzgzNTMyIGEzMTQ5YzkzMTY1NjU2ZThmOTUwMDUzNTk5MDhmZTJjYjM1OGY2NGIgcmVsZWFzZTI2LW1haW50Cis4MzUzMyA2YmFlYmE1NGZkMjRiZDcxYmFlMDA1NTkwYTFmYWJhMDFiY2QwYzRiIHJlbGVhc2UyNy1tYWludAorODM1MzQgMzA2OGUwMGEzMjA3NjhhNWMwMjQzZmMzNGY1YzYzODljZWRkZjc5MCByZWxlYXNlMzEtbWFpbnQKKzgzNTM1IDNiZTI0NjRjMGMzOTQ2ZGMyMjg1N2QyY2UzOWFlYmI4NTg4YTc1ZDQgcmVsZWFzZTI2LW1haW50Cis4MzUzNiBkN2YzMDg1ZDFiMDNlNDJmZDc2YTgzNWQwNjlkMWU1Mzk2ZTk5NjhlIHB5M2sKKzgzNTM3IDdjM2I4NDlkMTgxYWUyZDk4MTE1NjI0OWNiNWY1ZmVjNjAwMDkwOWQgcmVsZWFzZTI2LW1haW50Cis4MzUzOCA1MTZmOWUzNGFmMjA5NmRhMDlmNjM5MzVkZTk2ODA0Y2M3Y2QyMjEyIHB5M2sKKzgzNTM5IGNhNjMyYmFkNmQ2MGNiNDZhNWJjMTMyOGNjYjc5Y2EwZjYwNjNjYWEgcmVsZWFzZTI2LW1haW50Cis4MzU0MCBkYmE5OTgyOGQ5MWMzZThlZTE5NzdkMTFjODI4YmRmMjEzNDVjN2EzIHJlbGVhc2UyNi1tYWludAorODM1NDEgNjUzNjE1MGRkNGY0Mjg2NWQyODQ0NzcxZmFkMmNkMmYyOWM2YzIwNSByZWxlYXNlMjYtbWFpbnQKKzgzNTQyIDU4YzIyZDMwZjc0OTM2NDc3YmEwYmQ2ZDljODc0ZDc3ZDM5NzMzMWYgcHkzaworODM1NDMgNjcyNDkzZmZkNzUzZjk5Y2VmYTk2NTc1OTcxZGFiNjk0MWI3ZjQ4YyBweTNrCis4MzU0NCBjZWNjNmQyYTViNDljYmNjNDRkOTdhMDVkNzdhYWI3YjRlZjMxZTY2IHJlbGVhc2UzMS1tYWludAorODM1NDUgYjZjNWZjY2NiNmRlNWQ1N2RmOWQ1MjgyZTU3YTJhNWM2MjNhOTU2MCByZWxlYXNlMjctbWFpbnQKKzgzNTQ2IDcyMDJjOWEyMDU2NjYyOWRhZDZkMTY3OTQzMzQ4YWY5ZjllOWI4MDAgcHkzaworODM1NDcgMGJmMzZjZGQ4MzM0NTQyNTEwYzVlZGNmY2FjNjM5MzQyZmVkNmI4ZSBweTNrCis4MzU0OCA2ZTNjMjA5M2JiMjEwODRjMDFkY2E0MmRmYmY1OGMyMzVkNTgxZTdjIHB5M2sKKzgzNTQ5IGY4Y2U2NGE5NmM4OTYwMmE1ZjBiOTVlOTA5YWI4YTJhZGU0YmEzYzMgcmVsZWFzZTI2LW1haW50Cis4MzU1MCBhMjRjOWE3NDAxZjQ1MzUxN2UzNTZhYzAxMGVkNzI1MTI4MDEwYmIxIHB5M2sKKzgzNTUxIDY5OWZjZGFmOTk4MTJjYTkxYWM5MjRiNzVkYTU2M2FhNzVlNGY0NTkgcHkzaworODM1NTIgMzA3ZTFjZWU0YTU4MTBmNDBlYjRhMzcxYTk5YzI4MmZlMjViZTBlOCBweTNrCis4MzU1MyA3ZjY4Zjg1NTQzZDRmOTFhN2UyMjRhNGI2NzFmMTdmYjdiMmNjNGE5IHB5M2sKKzgzNTU0IDdmMDcxMDg3ZDgyMGQ5OTJkYjE2YTdiMTUwMDdlMGFjY2VkNDNhMDAgcHkzaworODM1NTUgNjJkOGNmY2NkMThiNDRmNTZlOTZjOTc2MzJhYmNkMjdiNzU5OGFiMyBweTNrCis4MzU1NyA1MTEwMmFiZGVjNTAyMTJmMDU2NzcxMzQyY2IxYTU1N2NjMWU0YTJjIHJlbGVhc2UyNi1tYWludAorODM1NTggYjRmNjE0NzE3OGU1YzJmNzkyNzJiNDIyNGU4OGNlMTlmMDcwMGQ5NSBweTNrCis4MzU1OSBhZmY4ZDdiY2EzZjMzM2ZhOTk2NTQ2ZTllYzUxOWY2NWY1Y2JjMGZlIHJlbGVhc2UyNi1tYWludAorODM1NjAgNDg3NGVmZDFmNjU3YTM2Zjc3MGQ0YWI5MGRjYjM0YWFmNjY0MTBhZiBweTNrCis4MzU2MSA3ZWJmNWY5MDExYjE5MGQyZTgzOTQ0YTZlZDk1NTc5M2NjODBmYWYzIHB5M2sKKzgzNTYyIGI0Yjg5ZDFiNDJjZDQ0NWJhNWIxNDZhZjA4M2I5NjdkYmM4NjIwMjEgcmVsZWFzZTI2LW1haW50Cis4MzU2MyBiYjJkY2YxMjAzYzRjNDcwZjQxYTQ4ZDJjNzViMTJiM2QzOWYwODMxIHB5M2sKKzgzNTY0IGFjMjlmNzBjNjFkYmEzNDQ2Yzc1YmRlMmIyMDdlODk2NDc1ZTA1NTAgcmVsZWFzZTI2LW1haW50Cis4MzU2NSA0MmUxOWMxNGIxNDkyYTVjOWE2MzMzM2M1YTg5MTZhY2VkNGI2MTY1IHB5M2sKKzgzNTY2IDQ3YmE5MDVhN2U4N2RjNjFiNzg4ODU0OTJhYmQ3OGNmNDA2OTE0NGUgcHkzaworODM1NjcgZDBiYjgwZTgxYjM5YTYzYzQ2M2QzYzY3NGUwY2MyNjIwMDMxN2JlMSByZWxlYXNlMjctbWFpbnQKKzgzNTY4IDM3YmE0NzIzMjAyN2E2MDI5OTRhZjExYmE1NWYwZTM0MWJkY2NhOTkgcmVsZWFzZTI3LW1haW50Cis4MzU2OSBmZjZmYWJmMjVjZWY0OTU3YzkzZTc5YTQyZmUwYmNhNmNlYmZiZDk0IHB5M2sKKzgzNTcwIGRmMzc4ZTQ0YmE5YWQzZWY4NGUwMjVkMmU5MDhkYjUyMTlhZTI1ZjYgcmVsZWFzZTI2LW1haW50Cis4MzU3MSAyMzYzOTNjNTU0ZjcxNDkwZGVjYzZmMmNhZmZjMzEzOTdmNTYwYmVkIHB5M2sKKzgzNTcyIDc5NTg4ZDQ4NjdiY2IyNDc1ZDYyNjgxYTcyNGUyOTUxMzY5MDkwNGEgcmVsZWFzZTI2LW1haW50Cis4MzU3MyBkYzk0MTM0MTg2Yzg3NTNjNmMwZTUzNmMzOTI2N2ZlNWZhYTMxY2Y5IHJlbGVhc2UyNi1tYWludAorODM1NzQgODgxNmY0ZTlmNzEyY2YzYjdmMTlhYmQxNGM5NmNiM2ExZWNkYTI0ZCBweTNrCis4MzU3NSA3MGE2YTcyN2VjZDczMjkzNTM4NWE1YmI5ZGZkODlhMjM5MjA3Yjg1IHB5M2sKKzgzNTc2IDY0OTQ3NmM2NjNmY2Y2MTBlNTZkY2Q0NTIyMmRhYWFiMDlmNTVhMzkgcmVsZWFzZTI2LW1haW50Cis4MzU3NyBjYzMzNjY5MmJhYjkwNTQ3NWI5Yzc1ZTVlM2IyZjJhMTUwNTkxYzljIHJlbGVhc2UyNi1tYWludAorODM1NzggOTU5NDAwYWUwNWIwNDZjNjBlZDg5M2FmY2ZhMWU2MGMzYWNkYjJjYiByZWxlYXNlMjYtbWFpbnQKKzgzNTc5IDMxOWM5ZjlkYzQ1NjE5NDZkY2Q1YmI0OGExZDMzOTA0OGZhYTE5OTkgcmVsZWFzZTI2LW1haW50Cis4MzU4MCAzZDAxMWMyZWMyMzdjZDkzNTU4ZWFiZWY3YzBhZjkyN2I2ZTMxNjMzIHB5M2sKKzgzNTgxIDNhZjZjYWU1ZTAyNmJiYTczY2Q2NDU2ZmJhMTJlNmEwN2IyZmUyYTkgcmVsZWFzZTI2LW1haW50Cis4MzU4MiBkNmFjM2QwOWI3OWQ0YTc3ZWQ3NTczM2Y2YjdiMGQyZmIzN2Y0NDdkIHJlbGVhc2UyNi1tYWludAorODM1ODMgYjg1Y2Y4NWI3ZWRiYzU0ZTUxNTU5Mjg2OWM1M2I3Y2UxZmY4Mzk2MCByZWxlYXNlMjYtbWFpbnQKKzgzNTg0IGNlYTZlZDdhMGFhMTFhMGY4NDk3ODk3NDExYzRiZWNlYzNmZTg5MDYgcHkzaworODM1ODUgNGRmYjhhNjFlNjlmZDAzOGYzODJlODBjYzQwMWQ3ZjcwODJhY2JkNiByZWxlYXNlMjYtbWFpbnQKKzgzNTg2IDc2ZTFjNWYzMTkzMWYwZmUwNzliNmU0NTMwOWQwYWJlYThhYmI3ODkgcmVsZWFzZTI2LW1haW50Cis4MzU4NyBlOTcxYzEwNGE1YzIxZTNkMzc0ODBmYjg0ZGMyNTc4MTNkZjBlYjNiIHJlbGVhc2UyNy1tYWludAorODM1ODggZmQyNDk3NTBjYmFlNWE0ZTYwMDQ4NThiOTk4YTE4MTRmY2E5OWQ1MiByZWxlYXNlMjYtbWFpbnQKKzgzNTg5IDZmODFkNmY5YTZkMWM0YTdkY2RkMzU4MjU1Y2Y2NGNmNDhjOTNiYmYgcmVsZWFzZTI3LW1haW50Cis4MzU5MCA2NzMwY2Y5ZDYyN2E1ZGFlODFiNDk3NWFhZTIxM2NhM2NhMTg4MWVlIHJlbGVhc2UyNy1tYWludAorODM1OTEgNzQ0OWQwNDIxM2M2ZTQxZTdhNzQ0MzY5OTNhMDM3MjM2MDQxMjljMCByZWxlYXNlMjctbWFpbnQKKzgzNTkyIDIxNjIwZDliMDg0ODBjZTNhZGMzNjZkYWU2ODJiNzlhY2I3OGQ4NjcgcmVsZWFzZTI2LW1haW50Cis4MzU5MyA1OTU2NzZlNDY2YzBkNDMwYzBlYTIxMGU3ZmRkZDA3YzhmZmJiZWUwIHJlbGVhc2UyNy1tYWludAorODM1OTQgYTljZDI1NTBmZjQwYWNlYjBkNzY0ZjJkMDI0MDlhNjVkYjU4Y2NlZCByZWxlYXNlMjYtbWFpbnQKKzgzNTk1IDEzZDJiYWNjNTZhNDE1NDUyZDdmMTAyOWIyNWRlMjEwZGM4ODNjODAgcmVsZWFzZTI3LW1haW50Cis4MzU5NiBmM2ZlZjIwYTY2ZGQwOGJkMmJlZGExMGE0MDUyODUyYjA0NWY5ZDBmIHJlbGVhc2UyNi1tYWludAorODM1OTcgMjlkMzRlNGQwYTlhMzY3YWU4MDQzMjg1ZWY3ZTgwNDdjMjhlOGNkZCByZWxlYXNlMjYtbWFpbnQKKzgzNTk4IDYxYjY5YmYxZWViZGNlMTFhZmNiMzBhMDdjOGQ4MDFmYzRiYTI0OTEgcmVsZWFzZTI3LW1haW50Cis4MzU5OSBmMmQ4M2ExMzcwM2ZhOWZjMTUyMDBhOGQ1OTczYmFlOGM2N2YzNjNkIHB5M2sKKzgzNjAwIDVjNGNkZjMzYzEzMjVhNzA1NmU3ODgwZDllNTc3Y2Q2ZWEzNWJjNzcgcmVsZWFzZTI3LW1haW50Cis4MzYwMSAxMmM5MWY0YmI0MTQ0OWFiYWM2YWRhZmZjMmQ2YzhkZDBiZDdlYTZkIHJlbGVhc2UyNi1tYWludAorODM2MDIgNjNmYjhkYmJmZGEyNWU0Mjk0YjlhM2ZiZGU0YmVkY2QyZGQ3MGI0OCByZWxlYXNlMjYtbWFpbnQKKzgzNjAzIDQ0Mzg5NmYzMjRjZTIwZmE2OTYwNjg3NzA4NmMwM2ZjZWI4MDAyOTAgcmVsZWFzZTI2LW1haW50Cis4MzYwNCBhMmYwMTMwMjFlMWRkYjFiZmYwODU2MzExOTk0NTc0YzE1ZTMyZTg3IHJlbGVhc2UyNi1tYWludAorODM2MDUgMzdkMzk5YWE4YzE2ZmRhNjc1ZTkyYzY0NTc3OGZhNTUxNWQwMjE3NCBweTNrCis4MzYwNiBmZDIwZWJhMWYyMDExZDYzMDQyZDMzYjlhNGNlZWZkZjI4NmFlYmE5IHB5M2sKKzgzNjA3IDQ3NTBhOGE4YjRjZjQxNzQ1ZjIzYjA5NWIxZTkwZmIzMmU3YTgzN2MgcHkzaworODM2MDggNjM4NDEwYTI5MDQ2ODFjYjA4MjY5ZTg2OWJiZmQ4NzQxOGNmNmFmYiBweTNrCis4MzYwOSA3YTQ3YzRkMzBmNmUxYjNmNDZlYmQwYjQ0Zjg3MWQwMTcxMDNmODk5IHB5M2sKKzgzNjEwIGQ0ODVjNjgwYzY1ZmFjOTM3M2QwOTMyZWE5Y2ZmYjZiMTZlNjJjZjIgcHkzaworODM2MTEgOTUyYThkZTVjYTY1YTE3N2Q5NGZmZTRkYmE2M2RjOTkzMjI5OTM4NyBweTNrCis4MzYxMiA1OTNkNjQxN2VkZjEwNzlmMmMzZTUzNTAyZjYwNTdlNjI0NDllYzZjIHB5M2sKKzgzNjEzIDIwMjQyYWYyNDNkMjBlMjMwNzdjYmQ0MzVhOGJhYTIzZTdhYTYxYzEgcHkzaworODM2MTQgMmQwM2Q2YzRjODI5YzI5MGQ5MDUxNGYxZjVmZWU3NGFlMjNkNTc5NCBweTNrCis4MzYxNSA0NDgyYTQyODg1Zjc1YTUxNjFkZDZlYWNkMDUyMmEyZDg0MWUyYTE4IHB5M2sKKzgzNjE2IDI5ZjIwZWYxMDc1NWEwYWEyNGEwYTExNGFmOGM5MDI2MzllOTM1NzYgcHkzaworODM2MTcgNjAxNWI2ZWM4MWYyYzc3MDNjYzFiMjFkYjI4ZjA3MDUwNzdjNTAxYyBweTNrCis4MzYxOCAwMzFlNmIzNDhhOGU4YWY5ZDNiMTNlNGMzNmQ4NTY0NzFlNWFjNWI0IHB5M2sKKzgzNjE5IDc2MmQ4OWZhY2VhYWFhYzY5ODE2NWI0NzU3NThhYWY2YjU2NmJhODMgcmVsZWFzZTI2LW1haW50Cis4MzYyMCA0NTQwYjZmNDI4ZDM2MzQ3NDg0NjhiMzcxZjIyYTg3MDg5OGE3NDYzIHJlbGVhc2UyNi1tYWludAorODM2MjEgZDU3NTUyYWJmMTgwZTU4ZGQyNDBjNTg2NTg1NDNiZjVkOTY1YzQxYiByZWxlYXNlMjYtbWFpbnQKKzgzNjIyIGI5MmYwYzQ5ZjBlOGY5Y2E2NTY1YjNiYWI1MTlkZjNiMzA1ZjAzMzYgcmVsZWFzZTI2LW1haW50Cis4MzYyMyA2OGNmYzg0ZTRkYjFjODZjMjk0OTlmY2RkOWNkYjM0ZGY2YTg2MDE3IHJlbGVhc2UyNi1tYWludAorODM2MjQgNGMwYjM3ZDg2OWNhZjg3ODZiOGU4MTM4ZTgzZWIxNjBjNjA3NGY1MCByZWxlYXNlMjYtbWFpbnQKKzgzNjI1IGE2OTM0YTFiZmEzYjBmYzYwNTFlMTkzZWEwMGM1ZDEzNjU1NzViYzEgcmVsZWFzZTI2LW1haW50Cis4MzYyNiA2NTdhZTg3N2MwYmYyMDAwNjBjYWUxYjgwMGZlMzU0OGQzZTQ0ZjJhIHJlbGVhc2UyNi1tYWludAorODM2MjcgOGM3OTkwOWE3ZWU3YTYxZjkzZTdjMTI3NjM4ZmNiMzBkN2FjZGNjOSByZWxlYXNlMjYtbWFpbnQKKzgzNjI4IDRkZjcyZmViMzlkOTA1ODFjY2RhNWZkMTA3MDYzNjYwZGEzYWFjNTIgcmVsZWFzZTI2LW1haW50Cis4MzYyOSBlZjExOWRiYmU4ODc2NjE1NWM4YTRlNGI3ZDU5NWM2MGRkMWYzZjE3IHJlbGVhc2UyNi1tYWludAorODM2MzAgYTg4Y2I4MDA1MTEwZjU3M2RiYmM5MDZjZjFkMWI4YzNiZThjOWQyOCByZWxlYXNlMjYtbWFpbnQKKzgzNjMxIGIxZTA0M2RlOWM1YTU4NDAxNGJjYTU4MjZhY2VmYzVmOTNhZGI5ODcgcmVsZWFzZTI2LW1haW50Cis4MzYzMiA1Y2Y2NzliZTNkZmM0ZWE4ZjNmZjg2ZGMyNWQxNzQwYmJiY2ZmYjFjIHJlbGVhc2UyNi1tYWludAorODM2MzMgNmZmZjBmZmZmODViNGVmYmYwZGYzMzUzMjAwZDc5ZTgyYWYzMzliNSByZWxlYXNlMjYtbWFpbnQKKzgzNjM0IDJhY2EzNDQ2MGZkYjQwOWNmNWMxMWMzMjBiMzEyMTQxMDNkOWQ0YjAgcmVsZWFzZTI2LW1haW50Cis4MzYzNSAzZWZiNDU4MTc5MGEzMWM3Nzg2MjBkNDk2NDU4Y2Q1YTRhMjRmM2ZhIHJlbGVhc2UyNi1tYWludAorODM2MzYgNmE2YzEzYTdmMDMwMzhhMGRjODRkM2JlNjYxNDI1ZmY1MDZmNTMxMyBweTNrCis4MzYzNyAzMGE4MDBkN2VhY2NhYWE3MTg3NjBmYjEyMjhlNWY4NzQ3NDdlYzY3IHJlbGVhc2UyNi1tYWludAorODM2MzggZTdlN2M1NjcxOGFmMjZmNTU2MDY2MmRkYzEwMTNiODdiZjM0ODE1OSByZWxlYXNlMjYtbWFpbnQKKzgzNjM5IDE5OTY0OTQ0Y2MwMTNlN2MxZjUxZGU3YzczNTA2YjJkZTlkZDU1NWIgcmVsZWFzZTI2LW1haW50Cis4MzY0MCA4NmQxMTllOTRkYTNhMDZiYzAyYmU3NmJjOTc3YjRmZTdjNDY0ZDMyIHJlbGVhc2UyNi1tYWludAorODM2NDEgNjNmMzgzNzllNGVkYTBiNjc2MWQ1MDhhY2NhM2JlN2Q1YWJjYzNmYSByZWxlYXNlMjYtbWFpbnQKKzgzNjQyIDdiNTg0YTEzYmM5NjVhYmJiZjY5NjMzOGNiM2NmYzc3YzYzOTMxZGUgcmVsZWFzZTI2LW1haW50Cis4MzY0MyBmMzA2MGU2ZmI3MTc1ODVkYTQ2ZmNiNjJkYjIxZWJlNjc4ZTE1Y2IzIHJlbGVhc2UyNy1tYWludAorODM2NDQgMThjOGM1MDA0MTA5ZWQ3MjhkODhlMDgyOWVlNjdlNjY0Nzk4MTU2ZiBweTNrCis4MzY0NSA2OTQ1NDE2YzhkMDQ1YzY4YWVhZmM4NjQyYWJlYjdhYWUwZmUyMGFhIHJlbGVhc2UzMS1tYWludAorODM2NDYgNTE3ODU5Y2IwZTkyMDAyM2Q1YWFjMDkzM2IzNDUxYjkwYWUyYmFhMiByZWxlYXNlMjctbWFpbnQKKzgzNjQ3IGM4MmI2ZWZmYjY5NTMxYTVmM2M4OGZjY2NjN2E5OTI1MWJjNWU2Y2YgcmVsZWFzZTI2LW1haW50Cis4MzY0OCBjZGY2YTNhNTA0MDc0NmQzMTBhNTI0ZmRiODVlYzBmZTVkMGU1ODViIHJlbGVhc2UyNi1tYWludAorODM2NDkgMTI4OGEyNTkzMjg3NmY2MzQ1ZDI3YWE3ODZhMTU5Njg4MWRhYWVlNCBweTNrCis4MzY1MCA1NzEwNWU4NzU2MDRmZWZiYWRlMTM3NjY3YmRjNTM3NWM0ZDUxMDU5IHJlbGVhc2UyNi1tYWludAorODM2NTEgZWJjOTA1MTdiOGQ5NmJmZjgyYTE3ZDAzZDUyYmU4YmMwODc4NzE4NSByZWxlYXNlMjYtbWFpbnQKKzgzNjUyIGUxZWY1MjYzMzM1MGRmNjQzNjRjNzJiOGIzYzQxNGQwOTY2YjhkNjkgcmVsZWFzZTI2LW1haW50Cis4MzY1MyBmODY0ZmZiOGYyZWRlZjY4NmM3NzZlNzU5Yjc4NjM1NWQ4NjkzNDNmIHJlbGVhc2UyNi1tYWludAorODM2NTQgZDI2NWY5MWMzODdkMmZhODQwODg1OTQyZjRjOTUwNzVmZTY2ZDUwMyByZWxlYXNlMjYtbWFpbnQKKzgzNjU1IGE3OTM3ZGE2MjU5MWMyNWU4Y2E3MDE5NDdhN2EwNmMzOWI1MDBhYTAgcmVsZWFzZTI2LW1haW50Cis4MzY1NiA0OGM1OWU5MDU1MzI1MWU3ZjU4NDIwYWJjMGIzN2E1NmM3MmU0ZGI4IHJlbGVhc2UyNi1tYWludAorODM2NTcgN2NlZTFiOTYwOWU0N2RlMDNmZjA4MTU0NDQ0ZjkxMTMwZjJmN2M3YSByZWxlYXNlMjYtbWFpbnQKKzgzNjU4IGIyMDY2Njc4ZDkzN2NmOTkwZmVmNWU4ODBlZTU4MjkwM2I2Y2ViMDYgcmVsZWFzZTI2LW1haW50Cis4MzY1OSBlMjEwZWQ2M2IwNGU0MjM4YzgyMTcxOGY2ZjE1OTAwZjJjZjgzY2QzIHB5M2sKKzgzNjYwIDNkY2ZlMjlkOWNhNTQ0N2MwZjg2ZDQwMjk2ZDY4NTAxZWY4ZWY5NWMgcHkzaworODM2NjEgYTNmNjQ1MzgxZDYxY2UyZTFmYWU2MmI0MTA1NDIzNTYzMzY5NmIwMiByZWxlYXNlMjctbWFpbnQKKzgzNjYyIGY5YzRmMDk5YTI0ZGRkZjc3NDk1OTE4MWVjZmM4NjRlMjI3ZWEzYTkgcmVsZWFzZTMxLW1haW50Cis4MzY2MyA2NjYwMWZiOTBkM2RmNjQ0OGIwN2ZhODE0ZmY5NTM0MTNmYjc3Zjk4IHB5M2sKKzgzNjY0IDcxYWU1MjNlYmE1YmFkZGY3YjgxYThiY2E4Yjc3MzBlMDVjNjRlYmQgcmVsZWFzZTI3LW1haW50Cis4MzY2NSA0NWRiYTIyYTc0ZmM5YTM5ZTgxOGJhYTAzYzY0OGU2ZmYwZTcyNDRlIHJlbGVhc2UzMS1tYWludAorODM2NjYgOWQ5YTgzYjI1MDQ1NzgxZmViZTdkMGFjZjExNzM3NzU4ZjAwYjlmNiByZWxlYXNlMjctbWFpbnQKKzgzNjY3IGFmMzY1NWYyZjI0OGMzZDM0NGYyMWVmNzVhMDhkYTQ0MDMyYjkyNzcgcHkzaworODM2NjggMzNlOWJlMmZhNGQyMzkxZTc1MGEzYTZjMmMyYWZlOThjODcyZDU1YSByZWxlYXNlMzEtbWFpbnQKKzgzNjY5IDYzZTFkMGRjNDRlZTA3YTE2ZjY5NmVhODc4Y2U0ZjU1OTJhMmZlMWUgcmVsZWFzZTI3LW1haW50Cis4MzY3MCAzM2QyZjQyNDU1NjEwMzM2YmUyN2I0YWMwMTljZjI5MWUzNTA3MzRmIHB5M2sKKzgzNjcxIGRjMjBkZjljOWJhOTVmMGFjNjc5NDg2N2ZjNTI3Y2YyNTBmZDQwMjEgcmVsZWFzZTMxLW1haW50Cis4MzY3MiAwM2FhMDVlYmQ5YmM1YmJlOTk0YjQxY2M3ZTRiZmNlNjgwMjcyYmE0IHJlbGVhc2UyNy1tYWludAorODM2NzMgNzFjNDMxNWQ0OWYyN2YyMTgxZmJhODFkZmJlMmZjZjY4MmIxYzQzYSBweTNrCis4MzY3NCBmZjQ0NTZkZDRhNzhjYTRkM2FhMzE2YzQxZDU4MDAyY2UwMjIyYzAyIHJlbGVhc2UzMS1tYWludAorODM2NzUgMjg1MGJkOTE5Mjc3MGQ0YjFkNjI4N2RjOGUyOWE3MzdlOGFlMDI4NCBweTNrCis4MzY3NiAyM2MwODlkYzVjZmYwZTkwNzQwZTZmOTU4MjVkMmVkNzcyYmY3MWY3IHJlbGVhc2UyNy1tYWludAorODM2NzcgZDZiMzM2ZGQ2NDU3NzZmZTEwZjQ2ODk2OTY2ZjBiYWQ1ZTBjZTI5YSBweTNrCis4MzY3OCA5ZDY4ZTc4NDVlNDIwNTA5NTBmNDMxMjViOWZlYzkzMTUxMGQxM2MyIHB5M2sKKzgzNjc5IGM0YmJkYTJkNGM0OTg2NWQyNmViMzlmOWNlOGQ5NzcwYjRiNTc5MGEgcmVsZWFzZTMxLW1haW50Cis4MzY4MCAwNDIwZjU0N2YzYmYyNDExMDYxYzY4MWQzODA1MjZjY2ZjZTgwYzNmIHJlbGVhc2UyNy1tYWludAorODM2ODEgMzk4YTI1Y2Q2MTJkZGFhZWQ1Y2U5ZmVjMDQ4MTkyNTM1MzQwY2UyOSBweTNrCis4MzY4MiA5NzE5ZTVlOGE4YWY5MmViZThlMTc0MTVjMDllYWIwYjk1OTFkZjY1IHJlbGVhc2UzMS1tYWludAorODM2ODMgYjMzYzgwZjdhYjE3NjZiNWM3NzAwMjhlZTRlZGYyMTg4MDdlOTIzZCBweTNrCis4MzY4NCBmMjgzOGViMWJiMWVmOTBhZjk1NzA3ZGFlODZjZDFkNGE2NDA2ZmNjIHJlbGVhc2UzMS1tYWludAorODM2ODUgOGE5ZTk3NjEyN2FiMTM5NzZmNzEyM2YwMjRkMTc2OGJkMDE2NWY2YyByZWxlYXNlMjctbWFpbnQKKzgzNjg2IDM3NzViZjgyOTliMzEzNTZmYjhjNzliZjIxMzJjYTIwNTFhNWFjYWIgcmVsZWFzZTI2LW1haW50Cis4MzY4NyBmNDNmNmQxNzMwNzZlOWFiNWE3ZTY3NTY1Mzg3YjRlMTQwMzQ5ZmU2IHJlbGVhc2UyNi1tYWludAorODM2ODggY2Y5ZmVhMjJjM2E5ZTE2MWY5YzJhY2U2MjQxYzI0MzJmZjQ4YjMzYSByZWxlYXNlMjYtbWFpbnQKKzgzNjg5IGQ2ODZmMzAzMzE3NGE5MzAyNWViZWY0MDY5ODkyNTkxOTJhMWQ3MjkgcmVsZWFzZTMxLW1haW50Cis4MzY5MCAyMGQ3M2ZlYzlmNjIzMDFkZDI0M2RhZGIzZjAzYWNlMjhkYTA2NTBhIHB5M2sKKzgzNjkxIGMxZGM5ZTc5ODZhMmE4ZTEwNzBlYzdiZWU3NDg1MjBmZWJlZjM4MmUgcmVsZWFzZTI2LW1haW50Cis4MzY5MiA1YTczZGQxNWJlMDg0YmU1ZDgxMjJlZjJhODJkZWZkN2NiNjk3OGNkIHJlbGVhc2UyNi1tYWludAorODM2OTQgMjFhOWM5NDAxMTBkMjY1ZTNkNjM1NmM3ZmI4NzM3MjgzNWM5ZTJhMCByZWxlYXNlMzEtbWFpbnQKKzgzNjk1IGZjYTNjOWZiNWExYjYzYzI0NTcxNTgzZDM2NmM4YmQ1ZTFmYzc2NTQgcmVsZWFzZTI3LW1haW50Cis4MzY5NiBiZjY5NTA5NjI2ZmY5NTRhMWNjYjIxMjQ4ZTRjNjc5NTQwMzIyNTYwIHB5M2sKKzgzNjk3IDZlNzk1ZWMzOGU4MDA4Mjg1MGMyYzliYTE2MWJkYTg3YTZjZTc0NTYgcmVsZWFzZTMxLW1haW50Cis4MzY5OCBhZjM5ZTI1NWZlYWQwNTZhZDMwMTJiYmM3NmQ0NjA0NTMzYjUwN2E1IHB5M2sKKzgzNjk5IGYwZWNhNzRmMDBlMTRiMmRmMjI1OGE5ODI3MDc2ZWQ0ZWE2OTE2YzAgcHkzaworODM3MDAgMTQ4OWYzOTlhYmExZTcxZTA2YTFmZjQzNmQ2MWI2MzkyODQ0MDFhZCByZWxlYXNlMjctbWFpbnQKKzgzNzAxIGY0YzlmNmYxZmU3NmE2MmUzYTZiMGI3ODc2YzZjNjJjMDI4ZTgxOTMgcHkzaworODM3MDIgOTE1YjAyOGI5NTRkNzVjM2FkODNhYTkyNjRlMzNlOGYzZTJkZWFkNyByZWxlYXNlMzEtbWFpbnQKKzgzNzAzIDU4MzM0MzU3ODczMmUyZWIzNGQ4M2VjOTRjMGFiZjA0OGZhZWZmMzggcmVsZWFzZTI3LW1haW50Cis4MzcwNCBiM2ZkZDQ0NWUwMzc5ZDczMTQ0NWU1MmRjY2Y4NTdmYTljOTAyNjBkIHJlbGVhc2UyNi1tYWludAorODM3MDUgODk4OTNhMDAyMjczZWVjNTU5ZTIzN2U3YTlmNmY2ODAzOTU2NzY4MyBweTNrCis4MzcwNiBiYTczNTMxNDc1MDc3Nzg2Y2Y4ZmNjYWJkYTE1NmFkZDJhMGYyOGNiIHJlbGVhc2UzMS1tYWludAorODM3MDcgNGM0ZDhhZGU5ZGJhYTE2YzUzM2ExZjY5MmFkODAyZDBiNWNkN2Q5NyBweTNrCis4MzcwOCBmNTk4NDIzYTQ2MjE2OWY3MzEyMDBkZGRkMjY4ZjQxODE0NWEzOThiIHB5M2sKKzgzNzA5IGU2ODg2MzU5NzA2MTNmNTFiMjU2ODc2NTM4NjNlYjI0MTA0Mjk1ZjEgcHkzaworODM3MTAgNzcxOWNjN2VjZjQ1NDZhYWQyZjAzYjhhN2YzZGU3ZDVkNjM3MThmZSByZWxlYXNlMzEtbWFpbnQKKzgzNzExIGU1ZjEyNThjZmM1ODk1ZjEwNjk4ZjFiZTRmMDgzN2Q5MDBjYjVkMDMgcmVsZWFzZTI3LW1haW50Cis4MzcxMiA2YzEyYjE3MTc5MmUyNTBmOGU3NWJkZjQwZmRlZjQ3ZTdmMTVjOGVkIHB5M2sKKzgzNzEzIDU5MzExMTJlYWJlNzdmZDEwODdmMWZjNmFkNzNkMzQzYTNkMmM3OTQgcHkzaworODM3MTQgNzE2ZTYwMTU3MGRhMWM1MTlhNDkyNDhmNjMwNDJmM2U0MmI2YjJhYiBweTNrCis4MzcxNSA0ODVjMDU0YzlhYTE2NTE1MGNjNGEwZGYwY2Y0MjEyMGM5NzE0M2UzIHB5M2sKKzgzNzE2IDcwNDJmYTUzOWU3YzgxNTRjYmJjMDBkYmJlOTZlNThkODE5ZWU0ZjEgcmVsZWFzZTMxLW1haW50Cis4MzcxNyBjNWEyODI3OTdkNWUzNTJlZGQwMzA4YmYxZjQ2ODQzYmM1ZjBmZWMwIHJlbGVhc2UyNy1tYWludAorODM3MTggMGU0NTI5ZDczM2FjNDFhMWNkM2MzMWY0ODk0ZmJmMjRiNWQyYzkwOSByZWxlYXNlMjYtbWFpbnQKKzgzNzE5IDU3NmI3NjU4NDRhZjkyZGE1MzM2Y2ExNWQ0OTc3MWY5ODEzZjU5YzkgcHkzaworODM3MjAgYjM5ODQ2YmM3YmE1NTY3ZTNmNGE3YmRlM2E2YTQzN2I4M2RkNmVmNiByZWxlYXNlMjYtbWFpbnQKKzgzNzIxIGNiMzRjZDYzMDAwMDIwMGEzOWNmZDI2Y2Q1OTYxODVmNWRiMWEwODIgcmVsZWFzZTI2LW1haW50Cis4MzcyMiBmZDdmNzNlMTI1NjgwMGM3MDcxNmJlNjRhOTU4MTQ1NzNmNzhiODYwIHB5M2sKKzgzNzIzIDgzMDQzYzE1MjU2NjgxZTZlYTVjZTg1ZmQwZTRjMzI2NTY4NWZhYTAgcmVsZWFzZTMxLW1haW50Cis4MzcyNCA5ZGU1NmM0MzE3Yzk0M2UwYTkwYTMxZjA0NDEyNDE0MzJjMDViZDE3IHJlbGVhc2UzMS1tYWludAorODM3MjUgYjRhNTMzMmQyYmNhY2NhODIyZWZjNjdmMzE1ZTkyMzJhNjRhOTgwNiByZWxlYXNlMjctbWFpbnQKKzgzNzI2IDJkODhjYTY0YTkwYmMxZDE4ZTc4YWFlZGNmYmEzMDNhYzkyMDZkZTIgcHkzaworODM3MjcgODI4MjI3YTAwNTM4OThiYWU0MjdhMzIyNWQ5YzkwYmQyOGUxMTcwNSBweTNrCis4MzcyOCAzNWZlZTkyMTFmM2I1ODVjOWRhNTU5MGY5M2FhMTkyZmRjZjMxNTk2IHJlbGVhc2UyNy1tYWludAorODM3MjkgOGY0ZjQ2OGZlMjllMDhhZmM2MWJkNGVhNjE5OTg0YjM2ZDZhNzZiMSBweTNrCis4MzczMCA5YzcwNDZmZDRkNjY3MjA5N2JjMDUwOWQ0N2ZkNmFiM2M4ZWIyNjYzIHJlbGVhc2UzMS1tYWludAorODM3MzEgY2E3ZWQ5NDFiY2I5MzQ0MTNlZGM0YzM0NjkzYWE2MzQxZDFhZGRkZSBweTNrCis4MzczMiBjYTZkNmVkMjNiMjM4Yjc5NjczYjA0YmE0ZjQ4Njc0Y2ExMmEyZTU5IHB5M2sKKzgzNzMzIDk1ZmQ0ZmMyN2I5YmI1ZWNjOTI0MjVlOGYyMjU4M2QzNDhlZjMzZjIgcmVsZWFzZTMxLW1haW50Cis4MzczNCA1NmFiOWUxMTFjMWMwZjViNzM5OWE3NmExMjFkYTc3ODI4MmIxNGM5IHJlbGVhc2UyNy1tYWludAorODM3MzUgMzQ3NGRkZjFlYmZlNGEzODQxYjNlOWNhZTBjMzM3NWEzYzU5MjNmOSBweTNrCis4MzczNiBlYWZlMDdkNDBlYjczNTllMDdiMTk0MGU5YzlmYzY4YzMzMmQ5OWZiIHB5M2sKKzgzNzM3IGMxNWFjZDFlOTE2YjM1MDRmNDdiMDA4MWU4ZjExNDZlOGQ1ZGNjZjUgcmVsZWFzZTI3LW1haW50Cis4MzczOCBhMTg1Y2FlZGYzMmNmZWRkYjg0MThkMWYxOTMxZDczMDFkMmY5OWZjIHJlbGVhc2UyNi1tYWludAorODM3MzkgMzViZDU3ZDNkMjMyY2RiZDM2MWQ3ZDc5MWZhNmE3NDc5Y2M5MGM2MyByZWxlYXNlMjctbWFpbnQKKzgzNzQxIDgxMDAwMTc5MzlmNDk5YzdmODU2YTM1Nzg3ZjQwMjBlYzlmYzI3MjIgcHkzaworODM3NDIgNjMzOWE3YjMyNDVjY2MzZWZhZmU2NzIxMzY1OWZmMmYzMWU4MWE3NyBweTNrCis4Mzc0MyA2NzY1MmE3ZjBhZWUyMzc4N2EyZGExMTFiYWI5MjEyZjNlZWUwMGNlIHJlbGVhc2UyNi1tYWludAorODM3NDQgYzE2ODAzYmJkNzkwZDczMmE5OTg1ZTkzODhjODgzMGY4M2FlMWFjOCBweTNrCis4Mzc0NSA3MmYwMDY3MDRmYmRjODE0NTJmNDU3MmFlMDMyY2VhYWYxNzI3ZGNhIHB5M2sKKzgzNzQ2IDM4NGQyMTg5YTk2YTkwMWY2OWExZTY2MDFiZTRkNGMzYjQyYmZhYmYgcmVsZWFzZTI3LW1haW50Cis4Mzc0NyAyOTIyNmMwOGU1NDdkODg4MGE0NGNlMzhiNTYxZjY2YzY5YjZkNjM5IHB5M2sKKzgzNzQ4IGEwMzczOWFmOWQzODVlYjJiNWY5MjFhNTcyZjgwY2U3OTI5NTZkNWUgcmVsZWFzZTMxLW1haW50Cis4Mzc0OSBmY2I3ZTM1OTI0ZTYzNGZjZWIzMWQyYjgyNDZkZDY5Yjg1ODY3ZjkxIHJlbGVhc2UyNy1tYWludAorODM3NTAgYmIyYTMxNWQ2YTAzNTAwMmQxM2E5OTIzYTQyYjgzZmFmMWZiOTFhOSBweTNrCis4Mzc1MSBmODA2ZmIzZDFmMjc3NjM5Yjc1ODVjMjk5MzNjYTlhYzFhZjgxYjZjIHB5M2sKKzgzNzUyIDg4Y2Y5YTBlZDExODEzZjU5ODYwOWI0NWFhN2QxZDliOTViY2FiOGIgcHkzaworODM3NTMgNmIyOGI4OGY2YzRlODg1ZjRjOGYxMmZhYWRjYzRlMzIyMjBhNWYzMCByZWxlYXNlMzEtbWFpbnQKKzgzNzU0IGI5MDZlOWU1ZjJhN2ZhOTM4NDBiNWM2ZTUxNDRkMjllM2UxMWNhNTcgcmVsZWFzZTI3LW1haW50Cis4Mzc1NSA3NmY4NDAyY2E3ZjM1NDBlZjAzMjRjZmZlYjhhMWY4ZGQ3MTVjNzljIHB5M2sKKzgzNzU2IGZhNjMxNGIxNDFkYzQyZDI3YTc5MDU4ZGE4ZWU3NDk3ZTNlNzJmOWIgcmVsZWFzZTMxLW1haW50Cis4Mzc1NyAwZjhhNGZjZmRkMWU1OTRjM2UwNDRhNmY1OTY3OWNlNmEzN2NjMDZiIHJlbGVhc2UyNy1tYWludAorODM3NTggYjA2MjIyZjE1NWZmNWVkNWIzNWE2NzBlNTgzNWE1MmZmZTMyN2EzMSBweTNrCis4Mzc1OSBhZDI5MmZjZTc5ZjllY2IzNjJmZjBmYjQzZmZjMWY3ODRlNzEyYzc1IHB5M2sKKzgzNzYwIDJjMTA1MTBhMWFlZmM1NTU1ZGNjYTEzZjBhOWJjZGQxMTA0YmQzM2QgcmVsZWFzZTI3LW1haW50Cis4Mzc2MSBiYjI2MDhmNzNlYjdjNmQzNDgyZjhkOTRjY2ZkMzc2ZjA5N2I0MGY5IHJlbGVhc2UzMS1tYWludAorODM3NjIgZjdiZDI4YjNjNjgzOTRkMWQ2YzljMDM5OThhYjA1MGZlNDQxNTg0YSBweTNrCis4Mzc2MyA4Y2U2OTA5Njk2ZDQyZjE3NjI4MTk5OGM4NGUxMzAwNWRhOGZhYzMzIHB5M2sKKzgzNzY0IGQxNGUxZTcyNDhiYTNmNmZhZWM5MGEwYjYwNjgyMDBiNDBmNTJkMjMgcmVsZWFzZTMxLW1haW50Cis4Mzc2NSAzMDc1YTdlODVjMTg4MTQzNmVkNTY4MjAwNDVjMGY4NDZjOWJmNjA2IHJlbGVhc2UyNy1tYWludAorODM3NjYgNzY4NjRhYzViNjdkMDEyNjNkZWY4MWQyNzBlMjA2NGIwMTI5MGJiNiByZWxlYXNlMzEtbWFpbnQKKzgzNzY3IDA2YmJkZGExMzJmMzU0OTU4Y2FlNzU4ODUwNjY5ZTc0NzQ1NDM5MmEgcHkzaworODM3NjggNDNlNmJmODZjMzdmMmMzMDQ4ZDRlNDA1NmJmNWQ2ZWM3OWIyN2UwZiBweTNrCis4Mzc2OSAwOGFlZDAwZmJlYzMzOWEwZDdmM2MxZmY1NTE3MzllMzRhMDJlMzQwIHJlbGVhc2UyNy1tYWludAorODM3NzAgMjYwYWJlOWNlZmFjMjhhMjM4YzJhODhjZmE4ZWZkOWQ1ODBmYjE0MCBweTNrCis4Mzc3MSA3YmNmNjI1NWRlMmZmZjNkMmI5OTFlNWY3MDM5NzhlYTBhNDlmMGZjIHB5M2sKKzgzNzcyIDM5NGU0OGM1MTZjNGEzYjEyMzY2ZWI4NzdiOWQwODkyYThjNDQ4NzIgcmVsZWFzZTMxLW1haW50Cis4Mzc3MyA0MGI0ODM3ODMzYThiNTMyZmYzNzQ1OGE3YWE1MjEyZWZkMDZlMDBjIHJlbGVhc2UyNy1tYWludAorODM3NzQgOWQxYzY1ZjgzMjNlZmMyZGVmMjIzM2Y2NTU5MjNmYzBlMzc5ZjQ2YiBweTNrCis4Mzc3NSAwNjMyNzljNmZjMTYwZTBhZDM5M2JlMWM4ZjVjMGQyMDVlOGEyYzNhIHB5M2sKKzgzNzc2IGJjY2M4NGUwNGEyY2FlNzMwOTRhNGQzYzhiMGZhODE0ZWVmNDk3MjMgcHkzaworODM3NzcgZWMzMjE3YTllNTIxNmRmYjJlZjNkNzJlMjBhMDUzZWYxMGE5YjM4ZCBweTNrCis4Mzc3OCA3NjA4NTMyZjkzM2E0NmVhZjQyZWYwN2I4ZDY0MDc1ZmM2M2JiN2EwIHB5M2sKKzgzNzc5IDI3NWFjZmNjY2NjYjA4YjU3NTkzZmM1N2NlYjQ0NDE5ZTQzOGJmMzkgcHkzaworODM3ODAgOWI4MDJiNmI0Mzk1MDlkM2FlZWI3NTRiMWI5ZDg2N2YwYzg0NjU1NiBweTNrCis4Mzc4MSBmMjdiMjdjODJkOGZmNDhiYjNhZGM1MDU1MjNmYTA1NTc5ZWVlYmNiIHJlbGVhc2UzMS1tYWludAorODM3ODIgNzE3NWQxODA1Y2MwZGY2MGFlYzFjNDY3ZjlkZWYzNjQxZjg5ZDgyYiByZWxlYXNlMjctbWFpbnQKKzgzNzgzIDBlZDY2NWU4YTExNTQyOWJmY2Y1YWQyM2RiNmQ0NjI1MzhkNzFhYTggcHkzaworODM3ODQgMjgxMzZhZjAwY2NhYjZkNDdjOWNlYmIxNWVlYmFlM2YzOTE2NTY0NCBweTNrCis4Mzc4NSA0ZTMyNTg4OTQ4ODlmYmRhYWVmMmMwNWE0OWUyMWMzNzMyZmMyZTc3IHB5M2sKKzgzNzg2IGM2ZDg5MjZjOTlkZjU4NTBiNzMyNTRmYzBiZDc2YmM0ZWM0ZmYwMTQgcmVsZWFzZTMxLW1haW50Cis4Mzc4NyA4N2YzMzMwMzgwMzVlNzhjMWY5MDlhOTRmMjkwYjZjZjYwZjYyZDNlIHJlbGVhc2UyNy1tYWludAorODM3OTIgYzFkN2Y3ZmU0N2EwNTcwNzA3ZTU2OTY0YjExZTA2NzE0NGY0MzAyMyBweTNrCis4Mzc5MyBmYjA2ZmFiMTZhM2ZlNjA1YjkyYTM5ZmQwMjEyYTljY2Y4MGZmNzZjIHJlbGVhc2UzMS1tYWludAorODM3OTQgYWU4YzI1Zjk0YWRmNGQzNTE5ZGRlOGQxODgxNDcxZTFjNjEyNWI4NCByZWxlYXNlMjctbWFpbnQKKzgzNzk1IGQ5NWZiYzRhZWU3YzNiOGU2MTIyMWE3Yzk5Zjk5MTgxMTE3MDRmNDMgcHkzaworODM3OTYgOWQzYmEwZDY2NWE2NTA4YzQxN2I1MzU4ZDZlZGIzYThlZGUxYzBjMSByZWxlYXNlMzEtbWFpbnQKKzgzODAyIDI0YjNkZWQ1MTgyNTRjM2FmN2IzMzcyYzcyOTE2OGFhYTAzOGJmNGUgcHkzaworODM4MDQgNGVmZWQ2MmVhYzNhODZjMWVkZjYyNDU1MWRlMjZiZjMxNTk4N2JhMyBweTNrCis4MzgwNSA2MDNjMzU1MDhiMzYzZGMzYmJlNWNlZTc3ZjgxNmVjODA0MGRkMDgwIHJlbGVhc2UzMS1tYWludAorODM4MDYgNzA5OWVjMGJjYmQyYzk5MjhiMjYwOGRkMTc5OWZjYzdmMmY3NzJhYSByZWxlYXNlMjctbWFpbnQKKzgzODA3IDE1ODM5Y2E0M2Q5NmEzNWUzZjE4OWYxNTZhNDYxMjY5YTJiNmRjNWYgcmVsZWFzZTMxLW1haW50Cis4MzgwOCBiYmUyMjIzZTM3NTA2YTA0YjU2Yjg4ODg1NDk0ZWVkYzUyYzIzYmE0IHB5M2sKKzgzODA5IDRiY2Q1MzYxN2E2NTZiZWQ3MzUwYTY4MzhhNGI2MTZjNzA0MmM4NmMgcHkzaworODM4MTAgMjhmZWY5ZTdjM2JiNzMyZjFmMTYwOTY4YTBlNmQ1Mzk4ODBhOTA1MiByZWxlYXNlMzEtbWFpbnQKKzgzODEyIDkyNDczOGFhYjcwZmRkNjlkZWQxNTBhMjk2YmM5NzYxMzFiOGJlZTUgcHkzay1kdG9hCis4MzgxMyA4YzIxMGU2MWNhNzc1NDEwZjcyZjg0ZGExM2U2OGM2MWM2OWI2YTY5IHB5M2stZHRvYQorODM4MTQgYmZmZDFlMjg1NGIzZDM2YjE1MzU4ODg5NzcwMDczZDc1MTBmMTExNiBweTNrLWR0b2EKKzgzODE1IGEwYmRjZGQwZjA4NjQzN2M4MzFjZmIxODI0MDdlODVhNGU5N2RhNzIgcmVsZWFzZTI3LW1haW50Cis4MzgxNiBlNDFjYTY2NzJmODIyZTA5NmNlNmU2OTg1ZGQyMGMzNmM1NTBjYzhhIHB5M2sKKzgzODE3IGY0ZDkyYzZkNGQ0MmE1M2QwNjBhNzNlODNhYmY5YjNiZmQwZjE4MzggcmVsZWFzZTMxLW1haW50Cis4MzgxOCBiZjMzNTliN2VkMmVkNWE3Yjc5YmMyODQ1NmFlMzBiYjQ0MjVmM2RlIHB5M2sKKzgzODE5IGU2MWEwOTRiNDgxOGQ0NTkzMTdmZTNjNjIwYjVjZWRlYWY1MmU5ZjcgcmVsZWFzZTMxLW1haW50Cis4MzgyMCA0YjI0YjdhNDIwYzkyN2ZlNTJhZjAyZDM0YWMwMDQ5ZGUxNzQxMjdkIHJlbGVhc2UyNy1tYWludAorODM4MjEgMDE3ODc1NjNlMmNiMzQ0ZmU5MzQxNzNhNDA3YmU1YzliMjI3NmZiNCBweTNrLWR0b2EKKzgzODIyIDAzNzBjMTFmZDIxZGYzZDRhOTQ0ZjcwYWJkZmYzMmRiMDM0NjI1ZGUgcHkzaworODM4MjMgYjZmZWI2N2EwNWYxZjE2ZmFiN2IzZTUxZmI2Yzc1Y2U0YWYyZDdiYSByZWxlYXNlMzEtbWFpbnQKKzgzODI0IGUxNjU2MDU4NWUzNWM2YjM2NGUzM2ZlNjAzMTRmMTA5OTRiOTk1ZDAgcmVsZWFzZTI3LW1haW50Cis4MzgyNSA1ZWE3MDdkMmNhYTg4ZTlmZjMxYjY1MzRlMWZmZWU4MGJkODJhZjY5IGltcG9ydF91bmljb2RlCis4MzgyNiBiZTE1OWYzZGI1ZDZhZTBkZTMxNjJkYmQyNTBkN2I2NDI2YWYxYjI4IGltcG9ydF91bmljb2RlCis4MzgyOCAxMDg2ZGFkNTBjNzQ4MDkyMGQ4MzBlMWVjNTg1NzZmNzVmMzdhNDU5IHB5M2sKKzgzODI5IDZiMjE4OWQ4ZThjNDRkMmY0MjIwYmExY2JjZjU2ZGNjZWM2MTdmOTYgcHkzaworODM4MzAgYjRmNTQ2MzliN2IxOTVjZjliNzgwNTE5ODdhYmRiMmJmYmI0NDE3ZCBweTNrCis4MzgzMSA5ODNmMTEwYTIyNGUyYTQ1ZWI1OTgzZjlmNzVmMGRlMzhlZmRlYmIxIHJlbGVhc2UzMS1tYWludAorODM4MzIgY2M1YTI0NmIyZGExYmI4MmU4ZjE3ZjQ0NjhkNjgxM2RiNDkxMGViMiByZWxlYXNlMjctbWFpbnQKKzgzODMzIDc1ZWJlNmNjODA4MzM1MWE1NWZiMWU3NjkzY2ZiMmZkNzU0ZDkzMzggcHkzaworODM4MzQgYzUyZjVkZjUwNDQ4ODk3NWQ5YWQ5YTJhOTMwZTYxODZhY2U0NTNjNiBweTNrCis4MzgzNSA4NjgzYWVhNGI3MmVmOGRjNzk5MWFiM2Q4Zjg0MTU3MDgxZmRjYzc5IHB5M2sKKzgzODM2IGUxM2VhODNlMmVkYjNkZTIyZTcyZGU1Mzc0ZTI3NjFlYWZhNDViYzcgcmVsZWFzZTI3LW1haW50Cis4MzgzNyA0MGQxMWI4MTM5ZGE1MGIwNDdmZWIyZjVmODE5MGE5NTYyZjRmZDVmIHB5M2sKKzgzODM4IDUxNWUwZDcwNTU0M2ZlNTc1OTdlN2EyOTQ0MGU2ZTY5ZGUxOTlhZjkgcHkzaworODM4MzkgMDhlMDVkNDI0ZDk3YTYyOTMwMzhkZDVlYTNmZDgwY2M1NDAwMGQ4ZSBweTNrCis4Mzg0MCA2MGFjNDFhZTdmMzEyMGQwNTZjZDYwZDliYjE0OTNkNDQzNmI1MTQwIHJlbGVhc2UyNy1tYWludAorODM4NDEgYjlkMTk4MDIxNzQ1ODk0Mjg3NmUyNzcxZTRmY2ZmZDA4M2QyNjI1YyBweTNrCis4Mzg0MiBkZjI1ODkxNWY1MmZjYjRhYWYzNmNmMGI1OTZkN2Q5MTcxOThmODdkIHJlbGVhc2UzMS1tYWludAorODM4NDMgNWU3ZjE1ZjJjMGJlNmNjZWIxZjM5YWEzNDVhMmJmODA2MTRkZDliYyByZWxlYXNlMjctbWFpbnQKKzgzODQ1IDhiMzc5NmNjMzA5ZThmOTgwNTllYjJjYjQ2ZmU4Y2M2OWJhYjZhODcgcHkzaworODM4NDYgY2MwZWU2YmI1ZTliODcxZWRmZDE5MjhiMDVhNzcxOTg0NjQ0ZDY2MCBweTNrCis4Mzg0NyBmZWZmYzFhMjU5OWM3M2U3NTljMGU4NTExNjQ1NzQxMDkyYmQ0YjRjIHJlbGVhc2UyNy1tYWludAorODM4NDggNzZiYTQxYjc3ZjUzODkzOTUyODQ5ZjcxMzYxZTlkNmEzMjgyYzdjOSByZWxlYXNlMjctbWFpbnQKKzgzODQ5IDQ0NjE5YTU2NmI2YjYzNjEzZjliYTlmMGMwZDIwMGI4MWY3YWEwODggcmVsZWFzZTMxLW1haW50Cis4Mzg1MCBmYTg2MjIyNjU2MDkxMjA3MWY2NTdjM2Q2MmI3NzRkOWE5OGE1Njc1IHJlbGVhc2UzMS1tYWludAorODM4NTEgNTdlNjMxZjA4OGQ3MzYwNTQzMjg0N2IzYTQ0ZjkxMzE4ODVmMGI1NCBweTNrCis4Mzg1NCA0Y2E0OTdmNDgxOWNmZGFkODI2NzAxYmJhNjdkMWUzZTUxYWMyZTdmIHB5M2sKKzgzODU1IDc3YzZmNjBhMWIyNDBiNTA5ZGRjY2I0YTI5ZTBjYTM2ZWU1ZmQ3ZjcgcmVsZWFzZTMxLW1haW50Cis4Mzg1NiA1NWM3MGU3OWM2ODg4NjdjMTFkNzI4OGNmMDQ0MDJhZDYyMzY1OWU4IHJlbGVhc2UyNy1tYWludAorODM4NTggNTUzOTc1MzNkYTUxOGEwM2JiNDNjOGEzYjJkNTM3ZjEwMjgyOGY0NCByZWxlYXNlMjctbWFpbnQKKzgzODU5IGViNWFhOTFmMGUxNmY2ZGRiMTQ3NDk5MzdlNDI4YmU3ZjYzZWRmZTMgcHkzaworODM4NjAgN2Q0NDI1ZTMwOGY3Yjg1MjY2ZWJiMjAzYThmNDYyMzZlNGQ1OGZhZCBweTNrCis4Mzg2MSAxYmQzNTM0MTM2YTAzNjQzNTczZWE5YmQ0NDdkNWE2OTg1NDg1Zjc4IHB5M2sKKzgzODYyIDFhZDU5MjJhZWM0NTNlNDcwMzE3ZjFmMGFmMWE3NDAyNzc5ZGNmMGQgcHkzaworODM4NjMgZDIyODA2ODE4ZmUzYTUzZGI0MDNlMmIyMjE0MmZkNjE0ZWZkY2E2ZiBweTNrCis4Mzg2NCBlYTNhMmQxYmRlZDJhMDViNWRkMDczMzVkZGYxYmNkM2ZhZDNmYzIwIHB5M2sKKzgzODY1IDhkNmI0ZmZjMDUxMmFhNDcxNzE4YWM1YzI2OWM1NTI3NThlNjBiNmYgaW1wb3J0X3VuaWNvZGUKKzgzODY2IDAyMTM1MTU5NWZhYzM2YjIxN2ZkMjJhZTE2ODlkNjI3MTVhNmY4ZWYgaW1wb3J0X3VuaWNvZGUKKzgzODY3IDBkYTNiNTljM2QzODA2MTdjYjViNmJmNTQ4NTVhZjkzMGZkZDljMTIgaW1wb3J0X3VuaWNvZGUKKzgzODY4IGY4MTJiNzk2NDExOTlhMGU5NmQ5MGVlN2ZmOWM5Y2Y0OTMzNGI5MWEgaW1wb3J0X3VuaWNvZGUKKzgzODY5IDNmOGNlZjgzN2YwNzNjMmJjMzc3OTcwNTFiMmE1ZmRiOTZlZjE0Y2QgcHkzaworODM4NzAgMTBjOTVjMGYzNGQzNTViZTlmNWQ2OTdlOTg3NDUzOWIyYzhjNmVmZCBweTNrCis4Mzg3MSA1MjM1NGNiMjk2NDQ5MjZhMTk1OWRkMmEyYjQyNDE0OWFkMjhiYmNmIHB5M2sKKzgzODcyIDljNDQ1YmFkMzViMDg2ZDA0MTczMTMwYTVmOTg0YzViODM0ODVjZjcgcHkzaworODM4NzMgN2Y1ZTExNWQ3NmRmYWQzZjY0ODg1M2NkMmYxN2FlZmMyYWY0ZGI4NiByZWxlYXNlMjctbWFpbnQKKzgzODc0IGExM2JkYjJiODM5OGZiZjE5MWQzMjEyY2MyMjFkOTg5N2MxOTk0YmMgcHkzaworODM4NzUgOGNlMWRmMzUyOGI3NmZjYjJhZWUyYjcwZWU3MGU5YWE5ZTI5NDQ4YyBweTNrCis4Mzg3NiBjNzk5NWU5YmMyZTM2ZDlmMWEyMTY3MTUwMmM1NzBjZmZlNzNiZGFhIHB5M2sKKzgzODc3IDhiOTNjZjMzYjk4N2M4Nzc5ZGVjZjU4MDFiYTE1YzUxYWVhOTc4NmQgcHkzaworODM4NzggNjg4ZWRiYmJlNjU4MTc1ZTZiOGZlMzgwNTdlN2ZhN2M2MGJmMTk4ZiBweTNrCis4Mzg3OSA1ZTNjNjFjYjcwMTQxZDM2MzBkM2VlMGJkMjI2ZGQ4MmYzMGQyMDgzIHJlbGVhc2UyNy1tYWludAorODM4ODAgOTQ2OGQxMzA0Mjg0MjVkMjY1MjE5MDgyYzRmZTllZGZhNmU5MjAxYSBweTNrCis4Mzg4MSAzYWU5NWYyMDc2MDYzNDRmNDIzYjU1ZWZiMjhiNTg4MjdmNjFhZWM0IHJlbGVhc2UzMS1tYWludAorODM4ODIgN2I3ZWJmNTU4ODk0ODU0NzM4YzQxODM0ZDEzNGU1ZDI5ZGFmODc3YSBweTNrCis4Mzg4MyAwMDE1MjlkNjQ3ZmU0OWRhYWQxNDAxZmYzMjM1NTNmZDVlOGJkNjUyIHJlbGVhc2UzMS1tYWludAorODM4ODUgM2E0YmU5ZDI1YTVmODMwNjBjZDI3ZDgxZTk2N2RlMjcyOGEyODA2OCBweTNrCis4Mzg4NiA1YWUzOTBhYzZjNjFkOGFlOWE2ZDk3YTQ0NzBkODVhNzk1ODc1MzAzIHB5M2sKKzgzODg3IDVjMGQ1ZGU1NmZkZjlhYWJlODk1MDE3ZDg1ZmVlNjAxZmUxZTc5MjkgcHkzaworODM4ODggZGUwODA5NzcyZDdlNzAzZTBkMDkxMTg2NjlhNDFmMTkxZmM2M2ZjZSBweTNrCis4Mzg4OSA4YmEwOWNkYjZmYzQ4YjJhZGYwZWM2YmM3NmMxODIxZTg5M2E4Y2Y3IHB5M2sKKzgzODkwIDc5NWViMTI0MDNiOTQ0MjBkYjQ4OGM0MDM4ZjZkZGVlZDJhNDI2NmEgcHkzaworODM4OTEgZGZiYmU3YjMwZTkwMWIzNmZhNDUxODQ4OWIzOTc2OTcyN2ExNmI4ZCBweTNrCis4Mzg5MiBlMTYwNzljNmE0OGY1ODNjZDM2OGQ4ZjRmMDgwNmZmY2Y3ODE2ZWQ4IHB5M2sKKzgzODkzIGYxNjI3Y2ZjYzg5MDUwYjZmNzUzNjlhOWY0MzFkNTYzZDlkZWRhMGMgcmVsZWFzZTI3LW1haW50Cis4Mzg5NCBjMzhmM2I5NjliNGFlNTA0NDRjZGI1YjY2YzcwYmZiMzdlOTczMzY3IHB5M2sKKzgzODk1IDdkYzM3YWUxNzVmY2Q1NzA3ZTc0ZTYwYTUxZTA2NGNmZjk3NDlkMmMgcHkzaworODM4OTcgNmZiMDMxMDM3ZjI5YjUwYmI5NGQxNzAyMzA5Y2ZhNzIzMmI5YWE2NiBweTNrLWR0b2EKKzgzODk4IDM1NWQ3MjczNzM2NGZiZGQ4NTk5ZThmMzM3M2E0ODhjZjUyNzNiZmMgcHkzay1kdG9hCis4MzkwMCA3MmQwNTA0ZTY0ODk2MDQyNGZiMmNiNTFkY2I4ZGZiNzkxYmQ0YmI4IHB5M2sKKzgzOTAxIGM4OWFkNmY5Y2RkYzE4MjIzY2U0YzcxNTg0Y2VjYTQ5MTk5ZDEyOWUgcHkzaworODM5MDIgOTUxMTdhYWI5YTg2ZGY3MmQyZjE5YmMxZDFmYTg2N2Q1NDdhMGZhMyByZWxlYXNlMjctbWFpbnQKKzgzOTAzIDUwMzg4YTgzZWMzZjdlMGIyYzk0NmJjMmIyZTQ0ZjhjOTg0Y2FiYmMgcmVsZWFzZTMxLW1haW50Cis4MzkwNCA1MGY4ZjUyNDdjODEwYWViODAxOGU0Y2EzN2E0NGUwNWI2NzkyNmM5IHJlbGVhc2UzMS1tYWludAorODM5MDUgMGFlNzA2YTcxYTNhNTBkYzFkMTViOTVkMGU5NTU0YmQwMjIxN2I4NiByZWxlYXNlMjctbWFpbnQKKzgzOTA2IGE1NmQ4YTgwYjg4MzllNTU5N2RmZDMwNWE3NjQyMWE2Mzg5YjMxMTkgcmVsZWFzZTI3LW1haW50Cis4MzkwNyA0NmQ0OGQ3MTU0NDJmY2JiODAyZWVkMzk3NTZmZDMyMDkyOWZiODJjIHJlbGVhc2UyNy1tYWludAorODM5MDggNjAwNzZmMjhjMDIzYWM2ZWFhMjg4NTgyMzlkOGJmN2U5Y2JmMzYwZCBweTNrCis4MzkwOSBjMmUxZGIzMGY3NTYyZmFjZTUwZGExYTU0OGRmN2Q1NmRiMGY3MDRjIHJlbGVhc2UyNy1tYWludAorODM5MTAgMzBjYzI3ZWIzNTRhY2Y1MWM0NmJkZTJmMjcxMDUxNGNlNmI4ZjFjYiBiYnRlc3QKKzgzOTExIDk4NTM2NThhODM1NWJiZmI4ZTQzODgzMjU1YjEyMDEyMjA0ZTc5ODQgYmJ0ZXN0Cis4MzkxMyAyOWFmOWFiYzc2Y2FkYTE1M2ZhYzcxODYyZjkwMzRhZjJiNDg1MWFhIHJlbGVhc2UyNi1tYWludAorODM5MTQgYjE4OTJiN2YxOTY2ZjRlYzhiOTMwN2ZmYzQ5OTEwZTUxM2YxNmYxZCByZWxlYXNlMjYtbWFpbnQKKzgzOTE1IDRjNTIzZTFlZjEwZjJiNzIxZjYwNzRjMmJmYzYxMzQxMmNkM2VmODMgcmVsZWFzZTI2LW1haW50Cis4MzkxNiBjMzkxMmFhYzFiNzNmNjBmOWI2Y2U5NzdiYzBlOWRkZjI2Zjk3ZjhkIHJlbGVhc2UyNy1tYWludAorODM5MTcgNmNkMjkyYzljMjk2MGU4MDk3NTJjNTgwMTFiOWFjNGM2MzVhNWZjMSByZWxlYXNlMjctbWFpbnQKKzgzOTE4IDM3MTU2OTA3ZjM1OWNiOWRhNWE4OWEyYzlhZWU2Njg4NTAwM2IxNDQgcHkzaworODM5MTkgMTA5YmRlNWU0MWI5NDRlZjNhZGU5OGFjNjE0OGY2YmMyNmU0YTU4YyByZWxlYXNlMzEtbWFpbnQKKzgzOTIwIGI2NWRjZTU5MDJhMjg0N2JmYzUzOWE3NWQ0NDJmZGM0OWRmNjBhYWIgcmVsZWFzZTI3LW1haW50Cis4MzkyMSBmZjk2MTRlZGYzYTA1NDZmYzZmMTViOWYyYzA1NTgwZmU2YjQzNjI5IHB5M2sKKzgzOTIyIDE0ZmI2N2U3ZmEwNDY4YzEwN2I2ZDExODVkODQzMDEzOTdmYjNjMjggcmVsZWFzZTMxLW1haW50Cis4MzkyMyBmYTQ4NWRjZWE2MTNlOTE1YTM5ZTE0OTE1ODI0YmJjMzFlZmMzMjU2IHJlbGVhc2UyNy1tYWludAorODM5MjQgYmNlYTM1YTJkMmQyYmQ5NWUxMDVkOGU4YjEyYzFkNTA0MjFkYTI3NCByZWxlYXNlMjctbWFpbnQKKzgzOTI1IDE5YWYwODI4N2NjNzkyOTNmMTYxNDk1NTliODUxOTg3Y2I5NGIxZDAgcmVsZWFzZTI3LW1haW50Cis4MzkyNiBhZDZjOGUyMjg3MTJlNGM5NDFjOWZhOGNhNTIxZWQ4NDQ1MjY0ZTZmIHJlbGVhc2UzMS1tYWludAorODM5MjcgYzJkYjI3YWE2YmYyNTAwYmFjYmJjOGY1MzljNWU0MDBmM2MwMzY5YyBweTNrCis4MzkyOCAxMzIyZWYzYzRhNmM4MjkyZTgwZDk5YWNlYWVkNGE0NmRjZGE2YTc3IHJlbGVhc2UyNy1tYWludAorODM5MjkgZGVhMWQyNjhlMzRlZDY3ZjEzMmNkOWIwNTgxZDFkMmE2YjViYTM1NiByZWxlYXNlMzEtbWFpbnQKKzgzOTMwIDllMDAzYTI2MjA5MzNjOTg2YmI1ZjEzODBhMWE3OGI3NTE5YmY1ZmIgcmVsZWFzZTI3LW1haW50Cis4MzkzMSA0Zjc2Y2U2OWFlZDBkYzI3NDQ0YmQzNDViOTgwNzEzOTVlMzJiNjFjIHJlbGVhc2UyNy1tYWludAorODM5MzIgMzkwOTJmODZiMGFmMzJkZWE1YzBiMDk1MGIxYmEwMmNlZTM5MTMzZSBweTNrCis4MzkzMyBhMzg1M2JmYTI1MTgxNmRkNTcxZTRiNmM1ZDhiZTI3OGMxNTVkMDc2IHB5M2sKKzgzOTM0IDNkNmEwMmYwYTJkOGE3YWUzNzc3YzA1ZWI5OGU2YjExNGQ1MzYyMDkgaW1wb3J0X3VuaWNvZGUKKzgzOTM1IDdlNTI1ZTEyNWI3MTVlMzlhMTY2ZjNhYmU3YWFlOWE3ZDM0Y2IzOTAgaW1wb3J0X3VuaWNvZGUKKzgzOTM2IDdkZDVmNWNmYTE3OTQ2NzY3OTM1NGIyYjQwMDU3NDQyOTI3YzA5NzEgcHkzaworODM5MzcgMGExYWQ5YjExNDk2MjI1NWQyMzA1MGU5MDQxMjJkZGQ2MzE2Nzk0ZCBweTNrCis4MzkzOCAyY2I1ODE3NGFhN2RhMDcyYzU5ZDU1MzFiNGU2YzA5YmU1NjRlM2JmIHJlbGVhc2UzMS1tYWludAorODM5MzkgMjllMjBiZGIyYjExYWIwY2UxNDY3MzY2OWYyYTNiZDVkMjI2MWRmNSBweTNrCis4Mzk0MCA0MDU1NmFlNDI0YjczNzlmNGU0YTYxMmYyYzlkYzI3ZDhlOTE4MDA0IHJlbGVhc2UyNi1tYWludAorODM5NDMgNjg5NjliOWRjM2IwNjAwNTZjZGRhNmRiZjA1MjhkMzVmMmMzMjk5ZCBweTNrCis4Mzk0NCA3MzY0OTQwNjcyZjAwNDQ3MTNlZWE0OGFjM2ZjNDczMTdlYTcxMWY5IHB5M2sKKzgzOTQ1IDkzMGIyODAzYzcxNjZiMjIzY2UxNzBmYWVmNGM0ODFhYTZjY2Q2OGUgcmVsZWFzZTMxLW1haW50Cis4Mzk0NiBjM2ZmNmU5MTAwNjhiMmZlODc3ZDUwZGU1YzhkMGZiYWVmN2Y4OTA2IHJlbGVhc2UyNy1tYWludAorODM5NDcgNTYwNjZhNTgyNWNhMjBiY2Q1Mjc0YzRhZDY5Yjg1ZTQwMTkyNzVmYyBweTNrCis4Mzk0OCA3NmQ0NjNjOTkwMDYzOTZkYzQxNTEyMzM4MWExZWIyOGYzZWEzNjRhIHB5M2sKKzgzOTQ5IDkxMDhlN2RjZDdkODA1ZTdiY2QwOGRiMWRkNmM2MTVhMDZhNzc2YzAgcHkzaworODM5NTAgYTFkZTQ2Mzk1NjRlNWFmMWQ5ZTJmNzQyZGNiZDg1OWMwZDQzODFjMCByZWxlYXNlMjctbWFpbnQKKzgzOTUxIGYyMmU5NTA1NTFhZDJiODljMDQ4YzQ1ZDgwYmE1YmIwN2JkZjU4MjYgcHkzaworODM5NTIgM2ZhOGY0MWExMTAzYzk4Y2FmMjY5NGJjYTdlZWE2MjExMGNjNmYzMSByZWxlYXNlMzEtbWFpbnQKKzgzOTUzIGQxYjAzNWUyNDM3MmJlMDE3ZGZkZDRkZDI0ZDBiMTM2ZDQ3NDk2NWYgcmVsZWFzZTMxLW1haW50Cis4Mzk1NCAzZGJiY2QzNGQ0OTRlMjU4YjBjOWZlNTQwZGI1YmYyOTkwNWUzZWM4IHJlbGVhc2UyNy1tYWludAorODM5NTYgODQ5OWFlNWQ5NzE5NmE3MmE1Yjg3NGIzY2JmOTBhODNkYTRlNzM1OSByZWxlYXNlMzEtbWFpbnQKKzgzOTU3IGFiMmQ5NDkzMWIwYzEwNWZhNTNjNjAyMzlmY2IzOWI4MWRlZDQzY2IgcmVsZWFzZTI3LW1haW50Cis4Mzk1OCA1OWRiMzYzZmE1OTQ1YzE3OTA3ODU0YmZkMDAyMmNkNjRjN2JhMTg3IHJlbGVhc2UyNy1tYWludAorODM5NTkgZmQ0NjA2ZWZjNzAwYWJiMjU3OGRiZjg4NjAyMDE1ZmU5OTI1YWZjOCBweTNrCis4Mzk2MCBmN2Q4YWExMGMzZWZhNzY4YTc1YzE2MGEwNDgxYmI2ZjQ0YjBmOTkyIHB5M2sKKzgzOTYxIGVkNjZiMjQxNzFhZjEyZThiNzU2NWJmOWU5ZTBjNWY0YWY5YWFhODcgcmVsZWFzZTI3LW1haW50Cis4Mzk2MiA2OGM0OGY4YWE1NTUzODIzNGZkNWJhNmNlMzJiZmU5Mjc5MzJmMmRmIHJlbGVhc2UzMS1tYWludAorODM5NjQgNTM0M2Y1NzE0ZmVlYzUxYWQzY2ZlMWE3YTVhNjg0MGUyMGM2MjI3NSByZWxlYXNlMjYtbWFpbnQKKzgzOTY1IGJlODNkMjkzYTFlOWFmOWU2N2M4NzA1MmYyZDljZThhMDExYWJkZWMgcmVsZWFzZTI2LW1haW50Cis4Mzk2NiAwMDU3MjFlNTBlMGJhMTRmYjM4YmIyNTA1ZjE4MTExNDEwMWZlMmVhIHB5M2sKKzgzOTY3IDY0YjVjNmYyOTYwMWNkODllNGZjZGZhNzcyMjgyNTJjZDk2YmE0YzEgcmVsZWFzZTI2LW1haW50Cis4Mzk2OCBjYjQ2MWE5MTQ0ZGIwMzU0M2M2NTUyZWRkMDAzZTJhZjhkYzM0ZDYzIHJlbGVhc2UzMS1tYWludAorODM5NjkgZDJiNzIxMTg1YmZhMmNkMTI3NDQ0OGYyYWI2OTYwZTYyYjkxZmJlYiByZWxlYXNlMjYtbWFpbnQKKzgzOTcwIDRhNWFkOTE4ZjdhZjQ1NDRiOTFmMTg3M2VkYmYzNGJkMWRjMDAzMjAgcmVsZWFzZTI2LW1haW50Cis4Mzk3MSA4N2IyZGE4NDAyNTJlN2FiYWZjOGY5Mjc2MTFlOWQ2ZmNmNWJiNmZhIHB5M2sKKzgzOTcyIDAzZTg4NGZhYzRkYmEyNTI5MGI3OGJlNjA0NDVmZjgxNGFkYjg0MjMgcHkzaworODM5NzMgMmRkOTY0ZGFkMTY4NTRmMjcxNWVlODc5MTNmMjU0YmY4N2RhMzg5YSBweTNrCis4Mzk3NCBhNDQ5Y2UxZjM4NWI3MzQ1MDZjZjAzMjc5NzVhMTIyOTc0NGM3NDdmIHB5M2sKKzgzOTc1IGFhODljYmI3YmMyMTliZWExMThjMTQ1NGE1ZGFkMWFmOTEzYmM1NTAgcHkzaworODM5NzYgZmEyZDk3MjBhNjZjYjEwZjYxMTA0MTcxOTEzMjA3ZDRkZGZhZWI5NCBweTNrCis4Mzk3NyBkNmY4ZTg2YTFiZWMyMmMzYWZjYjUzNDhkNzUzNTEzMjE5MmNhYjEyIHB5M2sKKzgzOTc4IDc1NTViMDAzNWE3Nzc0MTFkODRkMTk2YzhkMmQxNTZkZDhiMGQ2ZmEgcHkzaworODM5NzkgMjdiNTUzY2RkODViNjQ2YWI5ZDRjY2I4YjRiMTk3ZDk5YzE2ZTIwYyBweTNrCis4Mzk4MCBmMWQ5MjJkODIwY2FhY2FhYjRkNjc4YmY4NmFkOGI0MGQzZWUzZGRhIHB5M2sKKzgzOTgxIDkxM2FhOGE0MzA0YzU3NGIyZWQyMjJjYmMzYmM2NTc0OTM1MTI4YzcgcHkzaworODM5ODIgM2E4MGU2N2EwZDM3MjVhOGJlN2QxY2QzZWVlYjNhODUwNjZiNWQ1MyBweTNrCis4Mzk4MyBhYTljOGU4MmM0MzU3NmJmMTc1ZjdhYmFiYTdhMTM0MGNhZDdkNmRhIHB5M2sKKzgzOTg0IGQ0YjY3MGFhNmQ2YjgzZGM2NzNlZGM5YTdmOTJlNDI0OTYyNThjMDYgcmVsZWFzZTMxLW1haW50Cis4Mzk4NSAwNjgyOTFkNDRmZDdmOGExYTVjMGU1NGM1YjBjMzhiYTA5NTU3NDM5IHJlbGVhc2UyNy1tYWludAorODM5ODYgZTU0YmFlYmJkNmZmMDEwNDM3NTJjYmRkZTUyNGY3ZjQ1ZTE1NzBiYiBweTNrCis4Mzk4NyAyOTFjOWFmYWIxMmNlMDVkOGRiMmM1ZmU3Y2UyYzk5NTFmYjhmZmJmIHB5M2sKKzgzOTg4IDQ3NDJlN2FlYTJmNTljY2Y2MmQ4MDk4MWJkZTI1NzkxNDJkMzg1YzUgcHkzaworODM5ODkgN2JlNTkxNjMzM2RmZGE2ZjA3N2Q5YjMzNDJkNWMzMTNlOGZiYjFkOCBweTNrCis4Mzk5MCA1MGMwZGJhZWFhMDQ4MDExNjk3ZjM3ZGRkNzRhOGE5YjQyMTBhNmI5IHB5M2sKKzgzOTkxIGFiNjk0Njk3MmI3ZmRiYmQ0OGZmOWRiMDBlMGM0ZTM2YTJmYjA2NjMgcHkzaworODM5OTIgZDg2ODZjNmU2YjVlYmQ2ZDMyMmUwNDVmMDc0NWU4ZmNhNTljODRlOSByZWxlYXNlMjYtbWFpbnQKKzgzOTkzIDNhZjU5N2YxMjMyYWY2OGExNWQwOWM1M2IwYWIyNDNhZmE2MjVjYmMgcHkzaworODM5OTQgZDU0ZGE5MjQ4ZWQ5ZmZhZjY1ZjY1MWNhNzE5ODhjZGNiMTMwY2Q4MiByZWxlYXNlMzEtbWFpbnQKKzgzOTk1IDcwNjM0YzNlMDMxMDdhMWRkYWYzMjYxZGRlOTFkMjFlNGMwOTkzZGMgcmVsZWFzZTMxLW1haW50Cis4Mzk5NiBmNzYzOWRjZGZmYzM2ZGJhNGRiMjExOGEwNGNiOGJmZjMxMDVhYTA4IHJlbGVhc2UyNy1tYWludAorODM5OTcgOTQyMzJhMGM0NWFlMzQ4NjVlMGU5YmVjYjRkY2MxNmE3NGI1MTgyZSByZWxlYXNlMjctbWFpbnQKKzgzOTk4IGNiYTJhOTYxMTE3MDE0NzcyODA1MWM2ODE0ZGVjNTI4ZTMwNDE5ZmQgcHkzaworODM5OTkgMWI1NWI3MWM3YzIxMGVhYTRlYzU3ZjFmZWNiZTkxMTlhYTE5OGQwMCBweTNrCis4NDAwMCBmOGI0ZWJlOWM0MWI5ZDlkNmU4NzNjZjM2MTU5ZjhiMjkwMTc0NjcxIHB5M2sKKzg0MDAxIDM4ZDJiNjRhYjdjMTVmYjc1YmY3OGJmMzc0NzdiMGNiZjgwNzg3OGUgcHkzaworODQwMDIgZDQ2MDBlZTVlODJmMGU5NzE2NGUzMDdkNzk1N2Y2M2U4ODZkMzIyMyByZWxlYXNlMzEtbWFpbnQKKzg0MDAzIDQ5NGExYjk1NDU2OTZiNWI3MjZkMWUxNmY1OGZjMzdmMmRkMmU4YTUgcmVsZWFzZTI3LW1haW50Cis4NDAwNCA5NzEyNDljNzRlODA1ZDhiNzZmZDc4NzljZTc3MzA1YTM4NjJiZThkIHJlbGVhc2UyNy1tYWludAorODQwMDUgOTgxNTU1ZTk5ODZlMzI5NGM0MjE0NmU1MjM5YWI5NjBmZTdjN2FlNSBweTNrCis4NDAwNiBhZWQ0ZDdmMTI4MjFkNzExYTBjMGM1MmEzOGQ5NWI2OTYxMTc1YzQ2IHB5M2sKKzg0MDA3IDA2M2M5OWQ4MDMyYzUxODc1MjMzYmM5ODVlYjA4NWU5ZTk0Y2I4YzYgcHkzaworODQwMDggNzk0ZWI0MGJlZjNhNjU1NGE4OTljMDY3NWM5ZTlmNWZkZWVlODFjMyBweTNrCis4NDAwOSAyZDdiYmExY2YzYmM1NzUyOTIzY2FiNDA2MDRlMDYzOGQ0OGZlYTNhIHB5M2sKKzg0MDEwIDI5M2UzMzJiOGI0YjA1YTY5NzIyY2U5NjM3YzU5Mzg3M2VkODM5OTMgcmVsZWFzZTMxLW1haW50Cis4NDAxMSA4NWFkZmU1Nzg3N2IxYzk1NTk1MDhkZjhkYjJmZDI2ZGJiMTEwNTUzIHB5M2sKKzg0MDEyIDk1MzAxMGMwYjE2ODdmZjlmNDY1OTE2ZThmZWY3ZmJkYWVjZDhlNGUgcHkzaworODQwMTMgYTY1OTJmY2Y3NWU3N2VmNDRhNjk2Yzg0YzNjZmMzNjY2ODJmMGZmOCBweTNrCis4NDAxNCBlMDEzODUwODYwZmFmMTM1Yjc3OTFlMjE5ZTViOGYxNmExNmI4YTIwIHJlbGVhc2UyNy1tYWludAorODQwMTUgMmIwZGY5ZTFmNjllYzllNjE0NWNhMmIwMmNjOGVmMGUxMDY5YjIxNyBweTNrCis4NDAxNiBmMWQxOGY0ZDYxNjNiNTlhZjMyYWZjYjI0ZDk2YWIwNDY0MzYxY2I2IHB5M2sKKzg0MDE3IDk0YjI5MGFiYmFmYmFhNTNiNDhhMTE5N2QzNGMzMDEyODE2NjZhNzIgcHkzaworODQwMTggYTRmZDM3YTFiZjM3NDM1ZDhmNTAxYTQ5N2M4OTlhOTQ5ZGVmM2I0NCBweTNrCis4NDAxOSAxMmZlNGM4OGY5ZTY2NzRkYWJhZjgwNGQ5ZGUyZWM4YzlkZjQyMzdiIHB5M2sKKzg0MDIwIDI3NzExYjBjZDFmMDNiNTRhM2I3NWZhYWNiNzI0MGRkODI5MjEwY2YgcHkzaworODQwMjEgMjg1NDRkNjY4ZWQwZGZiNDY1N2Y0MTNhODEzNzdjM2M5MzI2ZmViYSBweTNrCis4NDAyMiBlZjc1OTU1MTM4ZDIyNzU5ZTZlMzM3NWJiNWZjM2YxMDIyMGMxODM1IHB5M2sKKzg0MDIzIDBhYWM0MGM3NzQ0NDM0MjgxM2ZiMjBlYjQyMWVlNTNjMDc5ZjgyZjkgcHkzaworODQwMjQgYjdhYjc3ZmQyN2I3MDczMDMwMTA1NDRhM2M1ZTNjMzMzZjBjYWM0OCBweTNrCis4NDAyNSAyYzZkMTNjNDA1MThiZWEyMzZjMTdjZDM1ZDJmZmQ5MTcyYjkzY2RlIHB5M2sKKzg0MDI2IGI3MjIwZTQyOWFiYjQ3NDgwMTExNDE2YWIyMTg4MjM4NWNiY2MwMDIgcHkzaworODQwMjcgOWJkMDgyNzAxNzc2NzM2NWI2NTZhMDRmOGY0YzgzM2IwMGU1ZTkyZiByZWxlYXNlMzEtbWFpbnQKKzg0MDI4IDQ1YjI0YWRmZDA2NDlmMDg4YjcyMWFjMTAyMDIwMzE4MzRkZTUwMjIgcHkzaworODQwMjkgYWI2NzBlNDE0YzI2OWU3YjRkYmM5OTdhZTU1NTIyYjM0MmU3MGMwMyByZWxlYXNlMjctbWFpbnQKKzg0MDMwIGQzNjAzMTFmMGU1MjQ3NmFlMTdkYjBkMGI0YjVhNTMyMGYzOGY4NTcgcHkzaworODQwMzEgNWYzMzY1M2UzODM3ZWVlMDA2YTExM2EwMzg5MjAzMWQ2M2EyZGI5ZCByZWxlYXNlMjYtbWFpbnQKKzg0MDMyIDNhNzlhYTJjNDU0OWZlMzUzODNlYjUzZWEwNjUwZTg1ODgxZTBlNTMgcHkzaworODQwMzMgZjI5MjNhMTc1MWQ4MjU0NmJiZmJjMmQzODcyNGY1MWQyODllZjAwMyByZWxlYXNlMzEtbWFpbnQKKzg0MDM0IDBlNzIxODMwNjdlZTdmZTk4MGI2MWY4NjliOWU4YzdlN2UwMDk5M2YgcmVsZWFzZTI3LW1haW50Cis4NDAzNSBjNjhmMjcxMzQyZDA2NWRmMzkxMWI2MzU1MWY1Njg5MWViNTVjYzVkIHB5M2sKKzg0MDM2IDM3YzQ4NzkwZDA4ZTBkZjliYzE0ZDdmYTgzNDNhODI1NzMyYjBiZjMgcHkzaworODQwMzcgNjU2ZmU2MjkyZjlmNmU5Yjc2YWExMzcyMmYyOTUwYTVmZGQ1MjlkYiByZWxlYXNlMzEtbWFpbnQKKzg0MDM4IGIxZjk5MzM1YzY3NzRlN2I1ZTRjMTA5ZDRkMGE0MzBjZGNlYWUyZGEgcHkzaworODQwMzkgYWZhZTk5OTc4MjI2OWYzNDdlY2NiMmUzNGQxZGU5YmQyOWQ5YzkwMiBweTNrCis4NDA0MCAxZTdkY2ZjMDQwNjE5YjhhZGE1ZGE5ZWEyNzU1ZDIwZDc1NmIyM2M3IHJlbGVhc2UzMS1tYWludAorODQwNDMgM2ExYjViMWMwNjliMmE0NjUzMGEzMzNmYjU2MmZlNmQ1N2Q0ODUyNSBweTNrCis4NDA0NCA5NWNlOGRhMzdlNzg3ZmU1Y2JhNWY3Y2RjN2ZjNmQxOTI2NWM3NmU2IHJlbGVhc2UzMS1tYWludAorODQwNDUgZDhkMGFiZTYxZTgzZTdhMDA4YWI3ZGE4ZjU1MGE4YjhlN2YyYTE4NSBweTNrCis4NDA0NiAwNWJhODgyOTJkNGM1ZDljYzY3YzBlN2JhNjQwYzI2MDVmNzAxOTgyIHJlbGVhc2UyNy1tYWludAorODQwNDcgZDY2N2JhOTNmMDJhYzg4NzE3YTE5ZTczMDg4NzQ4ODIxOGM2NmY0NCBweTNrCis4NDA0OCAyMDNiMThkNWM2MjZkZmE5NjM5MDgxM2JhNzQwMmY5NTkyYjViMWMzIHJlbGVhc2UyNy1tYWludAorODQwNDkgNzUzODA0OWVmZGU4OWNiMTZiNWVlM2M2ZTEzNGUwODQ1ODQ3MzdjMyByZWxlYXNlMzEtbWFpbnQKKzg0MDUwIDM1MzQzNTFjODMwMDE0MWEzMzdjYTZjZDQ1ZDc0NTQ5ZjA4ZTExOTIgcHkzaworODQwNTEgOGRiNWJkNzAxYWIzNjBmYTAyZDFkODM2NDVjMGVmZTA2ZDc4MzM5MSByZWxlYXNlMzEtbWFpbnQKKzg0MDUyIDAxNWYwNTEyOTdjNTIzOWFkMzkzNjBkNjY0NTYyYzYwYTUwMjIwNTQgcmVsZWFzZTI3LW1haW50Cis4NDA1MyBjMjMzYzg0YmY0MDNiNGNiMDRjZjgyYjUzZmU5YzEwODk5MjJmOWQ4IHJlbGVhc2UyNy1tYWludAorODQwNTQgOGQwYWI1NTVhMTYwMGRjZDI2NzVjMWQwNTQzZGE1Zjc4MDY3YzYyYyBweTNrCis4NDA1NSAyNjZmM2E4NzdmNjRjOGNlNjY3MjI5MWE4ZTIwMWJkYTdhZmE2YmZkIHJlbGVhc2UyNy1tYWludAorODQwNTYgNmRmYzdkYTE3OTE0MzQ0MDJjYzBiOGVhMDljYzY5NGI5ZTk0NjA4NCBweTNrCis4NDA1NyAyYjM2ZjI5YzMzZmM2ZTQ3YTNlMTY2NmRjYWNkNTYxZDQxM2EwMmQyIHB5M2sKKzg0MDU4IDk0ZDFkYWQ1NTk1NTM0NzU1ZDgwMDgxYWY2OWIxMmEwM2M4MGM4ZjYgcHkzaworODQwNTkgNjRmYjBiZDU1ZDNjZGQ0YmZhMzJhZjBjNDFkZTA3MjBhMDI1Nzk0NyBweTNrCis4NDA2MCA4ZTA5OTFiYTI5ZjQ1NzNkYWIzMDY4ZjU1ZWJkMWNmNTdjMjhkN2Q1IHB5M2sKKzg0MDYxIGY4OGNkZDlhNDRlYTZjMTdlMTllOGY1OTI1NGJkZTRiZjJmZTkwNWEgcmVsZWFzZTMxLW1haW50Cis4NDA2MiA4ZjJmMDU4YjdkODkxMjJjMjc4NzRhZmEwNjliMDVjZTdmYWZmOWQ3IHB5M2sKKzg0MDYzIDU2N2QwMDkyMGVkNjM2NmNiYmE3NGIxOGU5OGM3NjlhNGZlNzAyMjAgcHkzaworODQwNjQgN2ExYWRiZWMwZGI4NzY1N2I4MjJiOWIzYjVkMGM4N2E3OGE0ZDUyYiByZWxlYXNlMzEtbWFpbnQKKzg0MDY1IGI5ZGQ0NjdkMDU3NDE4OTE2MWEyYjA1ZjZmZDE0M2RmNTEyMTdkYzkgcHkzaworODQwNjYgOTk2NjJkYjlkYzQxOTg2ZGFkNGEwNzFlZjY2MGExMGFmMjFhZmVhZiByZWxlYXNlMjctbWFpbnQKKzg0MDY3IDgyN2E2MzNlNjhjZDNlNDRkNTRhZTQ5NTJjOGM1N2YwNGRlYzZhYzcgcHkzaworODQwNjggNmZiMTAxM2UzMDc5YWEwM2YzMTU5MDcxYzBiODJhMzlhY2Q1YjVjMyBweTNrCis4NDA2OSAwMDg3NWNjMzRkMTc1MTI3YTYyZjY3MDRhOGVlMTQzNzAxNDYwMTkzIHB5M2sKKzg0MDcwIDkwMjhmMjNkYjc0YmU0MWVjZmU3NzYxMTMzMTRhM2U3YWUwMDA5ZjggcHkzaworODQwNzIgZTc4M2M3ZDVhZTM2NDY0OGJhY2VjMmQxZWIzZmE1MWZiMTI1M2EwMCBweTNrCis4NDA3MyA3YTU0ODQ4ZDQ5Mjk0OGY3ODcxZGU3OWQ4Y2EwZmM3ZTZjMGJmMWY4IHJlbGVhc2UzMS1tYWludAorODQwNzQgOTg2ODZiMTAzMTRlOThkMDFmOWM4MTA2NjU3YzJjNmRkYmZiMGVkYyBweTNrCis4NDA3NSBkZTQ2ZTQyNTA0MzFjNmI2NGIxOWJmOGVhNTQxN2FhYzY5ZTQ3OTI4IHJlbGVhc2UzMS1tYWludAorODQwNzYgMjBmZGQyNGRkOWFhZjI0ZDNhNGUzYzBmYWY0MjcwNzhlZTZkOWY1NSBweTNrCis4NDA3NyA3OWQ1NzJlYTE3ZGY0MzJkMjAzNWYyOWMzYTRjMTYwMzg5ZjA5MWU4IHJlbGVhc2UzMS1tYWludAorODQwNzggNmU4ZjU4Nzg4NDljOGU2ZDM5ZTA3MzYxZDcxYTBkMDcxMGQwNDQyYiBweTNrCis4NDA3OSBkMTU4ODA4ZGJkNWEyNjk5YTg1YzNiNWYzNjQxMTljZTM3NjE1NjdjIHJlbGVhc2UzMS1tYWludAorODQwODAgNjczYzRlOGEwMWM0N2JiZjk0NTY3MmVkYTg5NGNjMjc3NDg2MWVjYiBweTNrCis4NDA4MSBiMDlmOTNmZTI5ZmJmODA1NzJiYjNmNGJmOTY2MTU4ZDI5NGJmODg3IHB5M2sKKzg0MDgyIGE5MjdhNTljZWUwNmM1N2M4ZjkzOTc1ZDA4ZTM0YWRhZTY4NmFhODYgcHkzaworODQwODMgMTgzOThmOTlmYzU1ZmQyN2ZkYzM2MTQzM2QyNTE0ZDBiOTQ3MzI0NCBweTNrCis4NDA4NCAxMzQyNzZlZWQyODA4OGE0MjczM2UzNzFjMTFmYWIwZGMwYmJiMmMxIHB5M2sKKzg0MDg1IGU5ZTBhMDBjY2ZiMzUxYWE0YjdjMDQxZjUxNzIzNWM2MzZiNGUwZGUgcHkzaworODQwODYgODVhZTQ0MmZmOGE1ZDM1MzU4NzJlMDVmNGFlNmZiODczM2I4NDhhMiBweTNrCis4NDA4NyA4Y2M4Y2U3YzM5MDk0MTFhMWJkNjZmOWUyMDczNGQzODgzNjIyNzVmIHJlbGVhc2UyNy1tYWludAorODQwODggZjA5OGUxYzhiYzU5NzY2OGU0NWI3MjBjY2Q0ZjJjZThmNTJiMjkyYyBweTNrCis4NDA4OSA5MmY3ODc3MDg4YWZlNDY5NzljZTllYjBlYzIxOTYxZWI4MGM0MTU1IHB5M2sKKzg0MDkwIGJmMThkZDcwYzE4MDMwNDYyNjU4MmNlYTIxODNiZmFiOGFjMTYwZGYgcmVsZWFzZTMxLW1haW50Cis4NDA5MSBiNGQ4OGY5ZWYzZjk5MjM0ZDE1MzJjNDY2NTExMWQ3NmRkNmUxYzAzIHJlbGVhc2UyNy1tYWludAorODQwOTIgOTFkNGM3YjFiYzI1Zjg5MjlmMTJmZWY3OTA1YmI1ZWI0MzU1ZDE0YyBweTNrCis4NDA5MyA0YjIzZTI2OWM0ZDk5YTY4NGM2MDk2YTY4N2Y2YTUyNjAzM2Y3ODM5IHJlbGVhc2UyNi1tYWludAorODQwOTQgNWQ5YmRmNWFhMDdiZmQ0OGU3OGIzN2I5MmRhNGY0ZGQ1MzQ1ZTQ1NSBweTNrCis4NDA5NSBmYzg5YjhkZWZmMWUxY2NkNWRiZDhhMjkzYzNlZjhkMTkwNzg2NjM0IHB5M2sKKzg0MDk2IGFhZTNlMGM1MTBmZmU1MDY4MWVkYTdiMWM1NDk2NGE3ODQwMGZiZjMgcHkzaworODQwOTcgZDUyZjljOGZlNWQ2MDliNDU2NzRlZWZkMmIwYjY5MTBjNmQ1YjVhYyBweTNrCis4NDA5OCA3MTVjNDRiNjBlZjM3MzZlNDNhZjQ2NjllNTNkNzhkZDJhOTk5YjQ2IHB5M2sKKzg0MDk5IGEyMzNiZTY4ZDMyZWE4YzlmMzAyMDQ3ZmNmNzdkY2I1Y2ZlMGQ5MzkgcHkzaworODQxMDAgZTQ0MzJlZmM4OGI5ZjhhMjQxNjUyYjg1NDYyZjYyZjBhMjY1NTNiMiByZWxlYXNlMjctbWFpbnQKKzg0MTAxIDkwN2Y3M2UyMjdhNmI5ZTFmZTgwNDBmY2YwYzYyOGJmNjE4NjhiMTEgcmVsZWFzZTI2LW1haW50Cis4NDEwMiA4OTk0ZDhkNjEwZDQ0OTllODA1MGIzMzA3NzQ3NzFmNTIzOWIzNDczIHJlbGVhc2UyNy1tYWludAorODQxMDMgOWZlNzRlYjAyOGFiMDFmOWMzMDFiZjAyNzQ3MWYyNTdkZDk1N2E5ZiByZWxlYXNlMjYtbWFpbnQKKzg0MTA0IGRlZTMwYzQ2NzM5ZWJkMWM4OWZhNjYxZTc1ZGJlMzNkZGJiNDJjNjcgcmVsZWFzZTMxLW1haW50Cis4NDEwNSBkYzMyYTdkOWRhODAyOWZjNDc5MzE5ZDg1OGZhNjU1Y2Q0MzJmOWZlIHB5M2sKKzg0MTA2IGUzZGYzNDU0NGRiOTA4OWYzNzZiMTkwNmU4YzRmODI4MzFlNzIzYWMgcHkzaworODQxMDcgNDA4NWNjNTYwZTllYTUzMjg4NzJkMmY0YTQ3ZWI0ZWU4MjFmZGQ3MyByZWxlYXNlMzEtbWFpbnQKKzg0MTA4IDc1NmY4YjM5ODIzMGIzYTlkZTZjZWRjYzllZjhkNWM3N2M2NzQyMjcgcmVsZWFzZTI3LW1haW50Cis4NDEwOSBiZTBhYTFkMTM4NGNmNjJhODZmODU1NTA5MTk1ZTlkZjFiZjkyYjY5IHB5M2sKKzg0MTEwIDFkODNkOTJlZmZlODExMDRhYTgwYjhlNmM5OTA2YzY0MDQzOWIxZGMgcmVsZWFzZTI3LW1haW50Cis4NDExMSBiMDg5ZWQ1NzZiMTMyNWI1Y2ZjYmZmNDUzNDM1OTYzZjBkNWE3ZTUwIHB5M2sKKzg0MTEyIDc3YjA1MmM2NGViYmMyZTI3ODFhMzU1NjAwNDFkZTRmZTc0ZWJmYzEgcHkzaworODQxMTMgNDcyNTA4MmMyODJmMDNmZTVhZmU5ZDFhOThkNDViMDljYTlkOGJlMCBweTNrCis4NDExNCAxN2Q1YjAzMGU4Nzc5OTAyZDgyZjc2ZWQzMmE2OWQ4ZDVlNzExMzFhIHJlbGVhc2UyNi1tYWludAorODQxMTUgNGRmMGQyYTEzYWExNGYxM2ZiZmEyYThkZGFlOWNjMTAyNDFlN2YwOSByZWxlYXNlMzEtbWFpbnQKKzg0MTE2IDQxYzYwODdmMmU2ZGFlOGYxNDI5M2Y4ZWFlZTIzYzUwNWVlMWZmOGYgcmVsZWFzZTI2LW1haW50Cis4NDExNyA4MDU5ZTZiNjI0NjM2MDhmNzNmZTA4N2I1YmM1YWJmZGZkMGY0ZjBmIHJlbGVhc2UyNi1tYWludAorODQxMTggZTE4OWRjOGZkNjYxNTRlZjQ2ZDljZDIyNTg0ZDU2NjY5YjU0NGNhMyByZWxlYXNlMjYtbWFpbnQKKzg0MTE5IDk1MmQ2NTBhMGFmZDc2OWNkNjJmZTQ5ZGMwZWFlYmRhMjdiZDYxN2IgcmVsZWFzZTI2LW1haW50Cis4NDEyMCBiNjYyYTM5ZjA4MjNlYTk0ZjM1ZTk1MzhlNDVjYzAyNzBkYWU4YzRlIHB5M2sKKzg0MTIxIDBjOGJmZDI4NWVmOTQyODE3MGYyN2Q5ZDIxOGE5ZGQ1Njg4YmFjOWQgcHkzaworODQxMjIgMDVjNGJhYTg3NTQ5YzNkNWUyZWQwZjk0NGYxNjc2NWFjOTFkODFlZCBweTNrCis4NDEyMyAwNDk4ZDY4ZGFkNWQzNzkxYzJkZDQ2YTA1OTdlMmNlNmRhYzQ5YzM3IHB5M2sKKzg0MTI0IGI5MTA1OWU1OWQwZGMyMjUzZThiOTdhZDhlNWYyM2VmNjQwOGQwNjMgcHkzaworODQxMjUgNzQ1YmQ2MzllZDRkY2Q2YWNjOGJhYTJkZGYwMzIzNjVmMjRhZTRhZCBweTNrCis4NDEyNiAwYWRhN2NlMjRkZTJjZDQ5MTdhOGI4YzZmNmMzYTdiODAzZDQ0NmE5IHB5M2sKKzg0MTI3IDk3ZjQ3ZWFjMDlkYjRhZGU4N2FhZWJjYjE0M2Q5MjE4ZDQyMTEyNmEgcmVsZWFzZTI3LW1haW50Cis4NDEyOCA2MGE0Nzc3YTczYTA2MmZmNTc3YmE4ZGI2MmQ0ODFlZTgwOGQ2YzQ2IHJlbGVhc2UzMS1tYWludAorODQxMjkgMjc2NzhmZjBjZGExNDRkMWEwMzkwZGFhMzIzMDhmOGYwMGZmZmVlNCBweTNrCis4NDEzMCA2Y2I3NzZlNTcyOTZiYTNmMWM3NTRlNTc1Zjg1YTNiOGQ5MGQ1Yjc3IHB5M2sKKzg0MTMxIDQ1NDhmNGFiMTljZWUzYzQzZmZhOWRlYzAxMWIwNzA5Y2VjZGU1MGQgcHkzaworODQxMzIgNzdiZjU4Mjk2Yzg3MDU5ZjZjNDY0OWU2MjI4MDMzZjRmOWE1NWQxNSBweTNrCis4NDEzMyBiMmE5YTU5YzJkNTcyYmZhMjQ5MDg4Yzc0NTY3MjExZTRjY2JhNDlkIHB5M2sKKzg0MTM0IGEwNDllMjIwZjAzMDk2MDZkODQ3MDQwNmI2MDczNGM2MzliMGU2OTEgcHkzaworODQxMzUgNmNjNjU1NDE2ZDYzOWJmZTI4MjYzM2I1MGRkZmVkODAwMWQyMDcwZSByZWxlYXNlMjctbWFpbnQKKzg0MTM2IDI0ZTA2ODMzYjViM2I3MjdkYmIwMDA2Y2I1M2JjM2QwZWRkMzVmMzEgcmVsZWFzZTMxLW1haW50Cis4NDEzNyA5ZGQ3NjM0MjNhNTY2ZGRjNjhhMmQwOGVkODBjNWY5MjZlOTVkMDhiIHB5M2sKKzg0MTM4IDVmY2UwMWE1MWFhNWU1MTU0NTljMWZiY2MzMmZiNTFlMzc1YjM1OWYgcHkzaworODQxMzkgNGJjOWRmZDk1YzgwNzU2YjY3YTFmNWFmMWE4OTk4YWEyMzhiYTNmNSBweTNrCis4NDE0MCAyMTJhMTZmOTA2YTY3MjVjODE4OWI2YjZhOTg1ZTlhZGRhYTNkMGRhIHB5M2sKKzg0MTQxIDZmZDk2YzAxYjQzNzEyNmQ5MDY2MzA5YjljNDQ1NzFhMzU3NGY1MWYgcHkzaworODQxNDIgOTkwYTc2NmZmOTgzMzU2MGQ3MDhmMjNmZmQ2NGQ5MDE2ZjJhYjEzZCBweTNrCis4NDE0MyBjYTJhODU5ZTliZjYzNTEwYzBlYzNlOGM3YTkwNzYxZjgxZGZiNWIzIHB5M2sKKzg0MTQ0IGNhZWViZjc0OTdjMzhkNTdkNzM1MTg5NDcxNDczZDk3YTMyZmNlODcgcHkzaworODQxNDUgMjdlMTc2MTY5MzNlZjg5ZjJjMTE4YzdlYTgzYmZmZTM3ZTU2YWM5OSBweTNrCis4NDE0NiBlZTNkY2RmZTJmODczNjVmNWIwMzM5NmE1Y2FlMzM1YzZmYzgyZDI0IHB5M2sKKzg0MTQ3IDc5MjViYmRmYzgwNWYwMTM3NzMxNTUxOTgxYTIyMWUzMzkwNTJmNjggcHkzaworODQxNDggNmVkMzgxMzU1ZDBkNDQ4YTAzMWQ0NmIyZWY1MTkxZWQxMDNkYTEwYyByZWxlYXNlMjctbWFpbnQKKzg0MTQ5IDM1ZTY3YWY4MDZlNTAzZDQwNmQxODZkZGYyNjFkN2MzN2RjN2FmNDEgcHkzaworODQxNTAgYjYyNGM3NDE3YWQ0ZTZlOTFiYmMzOWI3MDMxYzNlZTA5YTJhZjQwMyBweTNrCis4NDE1MSAyYTRjZWViZGZjZmIyNThlZDZlZGFmYjVhZGQzNjM3OGQ5MDcwMGQwIHJlbGVhc2UzMS1tYWludAorODQxNTIgZmViYWVhMWE2ODcxZWZmZDgzNzk0MTgwZmUzMjY3OTczM2VhYTk3ZCByZWxlYXNlMjYtbWFpbnQKKzg0MTUzIDM5ZTFkMzgyNmY0ZWEwZWYzOTFjY2IxOWQzZmQ0Zjg0ZTk0YjkwMTQgcHkzaworODQxNTQgZjNkNTgzN2UzMWI3ODZjM2M0YjM2OWE5ZTM5MDFiYTk1Yjg5MWQxYyBweTNrCis4NDE1NSAzZmEwYTk1NTM0MDI0ZDg5NjA5ODBhZDA3OTk4ZmNhNTY2ODNiY2JlIHB5M2sKKzg0MTU2IGZkYTlkMWZlN2YwNmI3NmQyYjQ1NjU0ZjA0NGFmMzk1NDhhMWJlMDQgcHkzaworODQxNTcgNTFhNzc4NDYyOWJiYWQ4NGRhOGMyZTdiMzM5ZDQyZGJlNGM2MDkxMSBweTNrCis4NDE1OCAzNWM1M2U3ZTIyODBkYzdhOTgwNmM2MGI4NzVjYmQ0OGViMjQyMThiIHJlbGVhc2UzMS1tYWludAorODQxNTkgOWE1NDk0MGEzMzJlZTY5MTc3ZWVmNzk1OWY4MjUyYzEyODEyODQwYyBweTNrCis4NDE2MCBmNzgzMjc4NzkwY2E2MzkzOTIzM2ExMmI1NDZkYTBjY2YwNTgyN2E4IHJlbGVhc2UzMS1tYWludAorODQxNjEgYTAxOTkyZTIxOWMwOTAzMzk3NmI2OGJiODNiNDhmY2EyYTcxZmEyZCByZWxlYXNlMzEtbWFpbnQKKzg0MTYyIDJiMzIzMTJkY2FiMTUwNmFlOWViZjc4NWNhNjVhZWI0ZDJlY2NlZDUgcHkzaworODQxNjMgNjg2YjE4YmZmYjg2NGZhZTgzYjNhZGU4NzM0NjUxMjI3MTM1OGEzNyBweTNrCis4NDE2NCBmYzc5NGFkZDU1OWQ1YWFiNzQ0Y2Q3ZDY0NGQyNDQzNjMxYTAwZTUwIHB5M2sKKzg0MTY1IDQ5NDMwNzhjOTBjOWFkNDg1ZjI3ZGUwZWU2ZWQ1MWExYTI5YWRjNTMgcHkzaworODQxNjYgNzE0MDBjZTBjNzIxZDE1NzA4ZTA0NWY2ZTE2N2FkMDY3YTM4YzJjOCBweTNrCis4NDE2NyBiZGQ3NmFkM2JjNzZiMDExNjAwYWI2M2FlODdiNmM3Zjk1MTI4YTYyIHB5M2sKKzg0MTY4IGVlNzY1YTY3YzBiMTFiMTk1NDJjNTYzNWQ3MTMxZDkxOTlhMmM3OWMgcHkzaworODQxNzAgMGVkNzZjN2I5ODQ3NGJkNjQ1ZWMzYjE0ODljNjM5ZDhhNzBhN2UwYSBweTNrCis4NDE3MSBhOGQ4ZGUyM2NiNzc4NWM0MDcyYWQ5MWNlNTEwNjJiMGM4NzRiZDZmIHB5M2sKKzg0MTcyIGM3MDkzNTE0NThhNjZhZjY5OTdlZDg1NDAyYWY0NTEyN2U2MGNkMGMgcHkzaworODQxNzMgYzEzMGY0MzJmMjRhMDM5YmY2YmVmZmRlODEzMGNjZGIzMDM5NzAxMSBweTNrCis4NDE3NCBjYTU1Nzk0OGE1Y2Y2N2I1MjA2NDQ1NzYzMmQ4ZDM5YjcxNDAyZGNiIHJlbGVhc2UyNy1tYWludAorODQxNzUgNmNkYTVmZDBhM2NmMjNmYzM5NWZhZGEwYWNkMDNmYzkzYzZlYTliMSByZWxlYXNlMzEtbWFpbnQKKzg0MTc2IGI4NzEyNDRkN2Y3OTc4OTBmNzBkNTRjMGZiYjJiNDQ1MzFhNzgzYWQgcHkzaworODQxNzcgOGY5N2M2NGIyMzMzNjIxNjBjNGI3Mzc1ODQ4YzNjZWVmNWJhYzE1MCBweTNrCis4NDE3OCA3NDljMjJmZmEzNmVjNzU3N2JkODEzNWM4NDEzM2E4YTNhZGI1ODViIHJlbGVhc2UyNy1tYWludAorODQxNzkgYzM3MDg2NmYzMGE3NWFhOWZhYzYyNjM3MjlmODQ0OWZjNDc1ZDQ3NiBweTNrCis4NDE4MCBkZjk2MTA2NGY4MTFjZmNkMTlkOTQzYzczNDA0ZTc0ODE3ZmFiZWU2IHB5M2sKKzg0MTgxIDIzYTU5OGMwMTkxMWYyMDQyMDVhNGVkNzE0MDZjMmUyNzVlYjA1MTcgcHkzaworODQxODIgNjg3Y2M4NTRjYjRiZmRmOWI0OThhMzA1M2RkNWUyNTk1ZWI3YWY2OCBweTNrCis4NDE4MyBlNjdlMDdjYjUxNzFjZDg5NTI5ODI4YWI1NzNlYjU5ODM0NGJkMWE5IHB5M2sKKzg0MTg0IDA1YTNkZmRhMDRmZmM2YTMyNWY4OTYzMTM4ZmU1YTE4MWM5ZTdlOGIgcHkzaworODQxODUgNzkwZDQ4Nzg4ODc0YzUxODEyMjQ4YTk1YTFlZTFlNzU3ZDc3YjI1ZiBweTNrCis4NDE4NiA4MGY5OGFmMTdkZWY4ODNkYTQzNWM3N2ViZTg0NDA3OTNmMzEyMjQzIHB5M2sKKzg0MTg3IDIyOGU2ZjAwMWFlMTNiMTQxMWQ5MWJmMTVjOTI0ZWM0ZDdlNjllNzEgcHkzaworODQxODggOWFkZWE5NDU1NzUzOWU0Y2M1YzZiZGZiNjYzN2FlYTVhMmUwNGFlMSBweTNrCis4NDE4OSBlYTBkZWNkMmFjZmI2MmQ3YjAwZDkxNzUzN2Q0Mjc2YjY3NjBhZDBlIHB5M2sKKzg0MTkwIDRmODMxZDQ1MTI1ZjBlNTkxYjY3YzJlMmY5ZWYwODc5MmFlOTE2OGEgcmVsZWFzZTMxLW1haW50Cis4NDE5MSA2NWZlMDU5Yjk3YmYzMzg5MjhiMmVmOThmYWVhODAwNDkyMzY3ZTY3IHB5M2sKKzg0MTkyIGFjMTJkOTQ4YTg5NTc2NDIyZTgxNmVkYWZhZmMxYTVjZjlhY2I0MWEgcmVsZWFzZTI3LW1haW50Cis4NDE5MyBhOWU3OGY2ZjY5NGU2NWE5OGE2Mjc5YzU3OWE3NDMwZjMwNzQzYTJjIHB5M2sKKzg0MTk0IDJjYjI2NjNlMzM2ODkwZjU4ZTY3MzIwZGY4NWI0YTdhZDFkYTUwM2UgcHkzaworODQxOTUgYWI4NGEwYzdkNjNjNjBmNmNkNTQ3NGVmMWVhNGNlYTRiODkxZjkxOCBweTNrCis4NDE5NiBmNjcyM2Q1NWRlNGI2Y2U3MTExOGY5NDI1MmU2OTA4MDFjNTFmYWMwIHJlbGVhc2UzMS1tYWludAorODQxOTcgZDBlOWZlYmZhMDBhYzcxYWYwOTY4ZjlmMjQwOGIxMGFkMmQ5Y2Y5OCByZWxlYXNlMzEtbWFpbnQKKzg0MTk4IDg1NzgwNjE0N2VlNzM0MWQ2YjYzNGRkN2RhMDlkMzc2MGUyNGZhN2UgcmVsZWFzZTI3LW1haW50Cis4NDE5OSBmMjQzMDU4NTk2M2M1ODQ1ZWUyMTFmMzRiYWI4N2Y2ZDA4YjAwMTg4IHB5M2sKKzg0MjAwIGY4NzEyYTA3YjBiMTEzMjE2YzE4ZmJkMzhmOWEyOTA0NWMwMzY3M2YgcHkzaworODQyMDEgMDgyZWFmYTA4ODAyNzIxZmE3MzcyNWI4ZGY3NTFjZjE4OTY4NTdhZCBweTNrCis4NDIwMiBmNjViYmZiYjgyM2ZmYzFhZjQwZWQxZmUzMGE3NzE2MDQ0ZDYxM2YxIHB5M2sKKzg0MjAzIDM4Y2U5NDdjMjhmYjQwMTYxM2IxOGQ3NDI5NDg0NTQ2ZWNiN2YxNjkgcHkzaworODQyMDQgOTE1NWRiNjU5YzIwZmZmMWY3MWRiNzdiNTRiMDdmODgzMTk0MTVkMCBweTNrCis4NDIwNSBhNGVjN2E2YTY4OTVlNGU0NmI4ODRjNzVkODU4NzUwMDFkNzgyMDg0IHB5M2sKKzg0MjA2IDVkM2NhMWMwMThhZTQzNDEwZTAzZDEyMGE4NWNiZjViZGUxMDM2ZmMgcHkzaworODQyMDcgMDUyZjQyZDAyMjJmZDlmNTkwMzY3Y2RkNmRkNzk1ODJlOGJiM2E2NiByZWxlYXNlMjctbWFpbnQKKzg0MjA4IDY2MTQzYzIzNjg0ZGEzYmY1NGY0Yzg5Y2VmZGRlOGZmMGRkM2IxMDggcHkzaworODQyMDkgNWZkMjZmNDUyNjAwMGFmM2ViOTU0YjNjY2I0MGFhMzllNjQ2NjhlNyBweTNrCis4NDIxMCBhZjRhOTFjOTQwNzE3YjkxNmU0Njk0NjljZTBkN2FhMTU3NTQ0ZDA5IHB5M2sKKzg0MjExIDg4ZTg0M2NlMTE2MGU4MjBhMzRmM2UzMDljNjlmZmQ2NDliYjYyOGIgcmVsZWFzZTMxLW1haW50Cis4NDIxMiBiYTZmZGU4YTNhOTk3ZDU2ZGFlMDJiNzc1YjgwZTA0YmUwOTgyOGIxIHJlbGVhc2UyNy1tYWludAorODQyMTIgOGM2YzcyYjZmMWVkMGE2MTA1NTliMGY4YzgzYzZiM2JjMzc3NTZmZiBweTNrCis4NDIxMyA1NGM5Yzg2YWQxMDRiMjdhYTQ2NjRiY2E5OGRhNTU5MjJhOWQ1ZTU5IHJlbGVhc2UzMS1tYWludAorODQyMTQgYzE4ZWViOTY5MTAyZjI0YWQ5NmFkZTMxNmIxNGJiZmRjNjNhMzQ2NCBweTNrCis4NDIxNSAzOGNlZWFlMGQxZjA3OTZmMDIxNjBmMDAzNmYwM2Q3NTVjZDYwNzhlIHJlbGVhc2UzMS1tYWludAorODQyMTcgNTQ5YTQwY2EyMDc0ZDcyMzg4NTRkMzI5MDI5NmM5YTAzMDU5YWE5MyByZWxlYXNlMjctbWFpbnQKKzg0MjE4IDM1MjhiYTdiNDMwNWNhNzViZjdhMDZjMWNkMzFhMTZhNWYxNGMzNDkgcHkzaworODQyMTkgZjJjN2U0YjFkODA0NWMxMjM1MThiN2Q2YWZkZDMwNjE0MzE0NjViZCByZWxlYXNlMzEtbWFpbnQKKzg0MjIwIDM5ZGFjMGE4ODk2YTI3ODZiYTE1Y2U0NDRjYjI3NDg1MGIzNzQ5OGIgcmVsZWFzZTMxLW1haW50Cis4NDIyMSAzMGEwZGNmNWEzZDhhNTgxYjVlZTEyNDg0NzI1MDU4Zjk2NTg4M2ZmIHB5M2sKKzg0MjIyIDVhMjk5ZDc4NTk4NzgzNjE2N2UyMDQ2ZWU4MjlhMjAxMDRiMWE4ZDUgcHkzaworODQyMjMgODdkNDY4YWUzYzNjMmNmNzE0ZTdiOGExODVhNGU1NWFlNzU2NWRiYSBweTNrCis4NDIyNCBkNGUyMGY5ZjEyN2E5ZjRmZGU2OWRkYjQ1YzZhNzY0NzliOThmZDE5IHB5M2sKKzg0MjI1IGFiNjNjNDU3OGIxYmQxNDQxNGJlZmM4MTEwNGMzOTc0YzZkZjQ3ZTQgcHkzaworODQyMjYgNjVjZTk5MjM2ODk3ODY1ODQ2NjMxMWMxZmFkNDZhMjFhOWZiYjMwNCBweTNrCis4NDIyNyBmM2RiNTA0Y2RmYjFmM2Y1NTM4NzkxYTU0ZWI3ODA0M2M4Y2ExN2Q5IHB5M2sKKzg0MjI4IDgzOTdmMmUwMDdlYmMyNGU0ZWFhNGQ3MWJkNjRmMjM1N2UzZjNmODYgcHkzaworODQyMjkgZmE3ZDFkNWQyYWZiNjAxNWE5NzMwYWZmZjM5ZmI3YWRiZmE3ZjMzMCBweTNrCis4NDIzMCA3ZDJiZDg5NTVlZGI4M2IwOTQ4OTI4ZThiNGQzZjY1MzUzY2FmOTljIHJlbGVhc2UyNy1tYWludAorODQyMzEgMGMzZDc2M2YzOGYxNDJhNzg1ZWFiZTc3MDhiZDg4NTlhM2JmMDc0NSBweTNrCis4NDIzMiA5ZDU5MTZhYjYwZTBmMzI0MTExN2M5ZWIxYzEyMDkyZjRkMzQxOTMyIHJlbGVhc2UyNy1tYWludAorODQyMzMgOTk2NjA0Y2RlNDFmNWZlODBjZDY4NGVjOTFjZmQzNzgxZTk5MDkwYyByZWxlYXNlMjctbWFpbnQKKzg0MjM0IGFiY2Y5NTc3ZDVkYjNmYzU1NGQwNDk3M2M1MmRlMGUyMWY5Mzk5NDcgcHkzaworODQyMzUgMWVmZTgyM2UxZjE4ODVlN2QwZDE3YmJjNDJhNGNmOGFlZGViOWEzMCByZWxlYXNlMjctbWFpbnQKKzg0MjM2IGM0ZjVkOThlZTg3YjAzYjFlOGY1NzI4YTY5MDRiZWJhZjg0OTliZmEgcHkzaworODQyMzcgNDk3YTdlMjg0ZTRkYzhlMDAzNDFkYTBjZTZmNjBlNTZkMDhiZTVjNiBweTNrCis4NDIzOCAyZjNhYzgzNGI1MzYzNGVlYmE1ODA4ZjUwYTU0M2QwOTBjNjBkYjVmIHB5M2sKKzg0MjM5IGIxOGM4MGM2ODc1NDAwYmZhOWFjNTMxNGIxNDkxMjVlZGZiYzU1ZmMgcHkzaworODQyNDAgZGZkMDIyOTc0OGVmZDRjMWE2NWJhZDkxYjc5YWU2ZWRiYTQwOGRhYyByZWxlYXNlMjctbWFpbnQKKzg0MjQxIDk3YTVmYjFjOTZjZWIzZTE4NWU0ODQyNDdiOTUwMWU0OTE5ZDc3ZGUgcmVsZWFzZTMxLW1haW50Cis4NDI0MiA4ZTE4NGE4YmIwMGU2NDk3NDFhMjQ2M2I4OTA3ZWM2NDRiM2RmY2Y5IHB5M2sKKzg0MjQzIDQ2MWEyMGFiNDMzZmVlNGI3YjdjMGM2MjVmMTg5ZWNhZjUwZDZlNDggcHkzaworODQyNDQgMzAyZmUyNWNkNmIxMTg4ZjJiYmQ1ZjA0OGQ1ZGIzZjg3ZTAxNzk1NyBweTNrCis4NDI0NSAxMGRmOTM4NzJjYTczMDQyMDI3NWFiNWI3ODM4ODU5NzFjYjFkZWNiIHJlbGVhc2UyNy1tYWludAorODQyNDYgZjVkZWUzMGNjZDM5ZmQ1MGQ4NDk0ZDkwNDU2OGE1YjQ5MzA4ZDlkMCByZWxlYXNlMzEtbWFpbnQKKzg0MjQ3IGY5YWI5YzkyZGI4ZGIyNGRlNmM1ZTVlOTQzNWExMDQxY2Y3ZTJmNDYgcHkzaworODQyNDggYWFjYjE1MjkxZDU0NjEwY2UzMWI3NWYwODRlZjI5OGIwMmUyYzk3NSBweTNrCis4NDI0OSBhMzRiZTAzZjcwOWEzNDliNjExZjIzYjlkNmRjZDVhMWEwMzY3NjRjIHB5M2sKKzg0MjUyIDAxYjBhNmNiMTNkNDNjOWVhMzVmNTJlMGM0ZTU0OTM1MTEzYzg1MmMgcHkzaworODQyNTMgNmUwZmUxYjgzZmYwOTU2ZDVhYzU2NTQwOTc0YWJlM2Q4NGE4ZTlhZSByZWxlYXNlMzEtbWFpbnQKKzg0MjU0IDljNGU4NTc4NWQ0ZTRjNWU5NDA2OGNkMmU2ODg0MmRjZWY4ZjM0ZTggcmVsZWFzZTI3LW1haW50Cis4NDI1NSAwMTMwZTU3NGY1YmU1YTM4NzI3ZDM0ZWQwYzBiOGU1MzNmMDEzOTE0IHJlbGVhc2UyNy1tYWludAorODQyNTYgN2ZmM2ZhNDI5NzIxODNhNWJhMjJkNDViYTk5OTA0ZDRhZWM5NThlZCBweTNrCis4NDI1NyBhNWE1ODcyMDUwZTMwMzg0ZGY4Njc5OTc4MzdhMTYzODVmN2RhNTM1IHB5M2sKKzg0MjU4IGIwMTdhNGVmNzY5NGZhZWE5M2NkNGMwYjA1MjhmZWUwYzcxMjU3YmMgcHkzaworODQyNTkgNGFjZmEzZmU2YTVlYjUyYzE1MmJlYWVkY2M2ZDdkNjJmM2U5Y2QxNSByZWxlYXNlMjctbWFpbnQKKzg0MjU5IGU0OWM1M2Y3NTM1YzA4ZDUxNzZhODE4M2Y4MDlhZTY3OGM0Y2E4ZWMgcHkzaworODQyNjAgZTgxOTA2ZTkyZjk5YWVkZTY2NDBhNjUwZmM3NDU2ZGY4NzFlYzcyOSByZWxlYXNlMjctbWFpbnQKKzg0MjYwIDZhYjY1Njc2NWJjYTM4N2Y3NWQyNmFiNzRmOGZhZmJiZTkwYjFmNGEgcHkzaworODQyNjEgMzUzMDRjMmZlOWUwYmI4ODEzMWEwNWJhMzBhNjhkMDgzOTk1MmM0NSBweTNrCis4NDI2MiBlOTE4NDljZDA2Njg5ZGRlMzE3NWYxMmJkMDJmOWI0MzZjNTQ4NGY5IHB5M2sKKzg0MjYzIGYyZTkxZTA4YzFjNTdmMGFlMDNhZmY4NWRiODM0N2YwYzIwZDhkMzEgcHkzaworODQyNjQgM2FjZDg2ZjhjNTUyNDczYWI5YjYyNmE5OTQxNGNiNGIyMGIxMmIwMyBweTNrCis4NDI2NSAxYzg4MzRmM2NkYjk2Mzg3N2M3MjQ0MWFjOTI3OTQxMTg0Yzc1ZmIzIHB5M2sKKzg0MjY2IDU5NDhlNDhmYmQ4ODBjZDE0ZWU0ZDk4NDIwYWNlOTNkN2RjMjlkZGYgcmVsZWFzZTI3LW1haW50Cis4NDI2NyA4ZjVmYWY1Njk2ZTdhZjJlMTE4MTM3ZTE1YjRiNjU5Y2JjOTg4Mzg0IHB5M2sKKzg0MjY4IDAyZTJkOWVhYjczMDE5OWM1YmFhOTQ2MTkwMmIzMDI2ZGM2NmY1YTAgcHkzaworODQyNjkgNzE2ZDNkMTAyYzBhYTEyNmQ1OTFhNThkMjk0ZTFjMGVlOTIzYWE1MSByZWxlYXNlMzEtbWFpbnQKKzg0MjcwIGE0MTJjZWVlZjBmMWVlYmFjN2ZlN2VlYTdkOGQ1YzVkYThkYjg1YzIgcHkzaworODQyNzEgY2YzOTlkZTEyYjU0MjdkN2FiZmJkOTQ0YTFjY2IzY2Q1ZTVmZGQ0OCBweTNrCis4NDI3NyA3ZTFlMzQzYjcwOGIxODJmNzg3NWM0NzAzNzUzZmNkNGIzNmMyNTgzIHB5M2sKKzg0Mjc4IGFhMjViODY3N2NjM2Y3OWQ0YjUzNTRmOGJjYWNkMWNhMTBmZmQ4ODcgcHkzaworODQyNzkgNTFhMjRhOTE1NDA4NTkzYjg5ZmQxMGNmYTMyOWE2MmIzNTRjY2I2NyBweTNrCis4NDI4MCBiNTM1Y2RlOTMyNzM4M2Y4MWRmMDJlZWIwZDA4YmY3MTZiZGM1YThhIHJlbGVhc2UyNy1tYWludAorODQyODEgMWEwODU5NjIzODgyZjcxZGVlZjE2ZjU4ZmRmMDA0NjIxNzY4ZTA4MSBweTNrCis4NDI4MiA0MmM3MGYxN2MyZmVkZTYxMTYxMDg1NjhhNzViMGVlYzA4YjNjNzNhIHJlbGVhc2UyNy1tYWludAorODQyODIgOWQ0ZGM1ODU1YzUxNWI4MDQ1MjkzZjFiNDBhNmRkYzljYjExNjMwMSBweTNrCis4NDI4MyBiYTUzNmFjN2FiNGU0ZGIwMjg5OTZlYmU5YmNjNTEyMTU5ZDJkYmRhIHB5M2sKKzg0Mjg0IGU3OWJhNTU1OTIyYTE2ODdiYjcxOWRiZjdkYjkyODc4Y2M4MTJkMjkgcHkzaworODQyODUgNzZlOWNmODQ1Njc2MDJiOTBhN2M0YTc3MDc2NThmZWIyNDQ0ZWFlYiByZWxlYXNlMzEtbWFpbnQKKzg0Mjg2IGI5NWVjMTcxZjUwMzY0M2M3Yzk2ZDJjYmEyMTRlYzBhMGJjYThkZDYgcmVsZWFzZTI3LW1haW50Cis4NDI4NyBlZmFhNDdlOTJhOGU4N2UwMzMzMzI4Njk1ODJlZTQ5ZjBhZjJlMzJiIHB5M2sKKzg0Mjg4IDc4OTVjNDU1M2JmNTQ0OTA2N2M1MGZlZmQ4OTA0Yzc3ODJjZTExN2IgcHkzaworODQyODkgOTBiZjIyNDM1NTJkMzM0M2E2NTgzNmY1YzY1N2M0OTJmNzI3NTJiZCBweTNrCis4NDI5MCBlMmJjZTFjNTk2YmViM2E5ZWNlN2FhM2Y4YTdmMWI3YjQ3MDBjYjc0IHJlbGVhc2UzMS1tYWludAorODQyOTEgZTcxNmFhMjA5NGZhOGQ5NmNiMzc1ZDA2NDM2MWE2OWU1M2JjNGVkNiByZWxlYXNlMjctbWFpbnQKKzg0MjkyIDlmODc3MWUwOTA1Mjc3ZjhiM2MyNzk5MTEzYTA2MmZkYTQxNjQ5OTUgcmVsZWFzZTI2LW1haW50Cis4NDI5MyA2ZGI3ODM1YjBhOTVhZmMxZDRmMGFlOWYxNzM5NDhiODU0ZTdiYTBlIHJlbGVhc2UyNi1tYWludAorODQyOTQgMmRlOWQ0NDU3MDgyMTIzZDkwMDlhN2YyNWQwZDk0Y2NmNjViNzI1MyBweTNrCis4NDI5NSBjMWE4M2YyYzcwODc1N2RkZDJjZjJiMjFhYjA5YTUxMDVhZDBmZWM5IHB5M2sKKzg0Mjk2IGQ0YTFmOTE0MmY3YTlkNDc3ZWE3ODQyZmVkMGFjNjNmODIxZjRhODIgcmVsZWFzZTI3LW1haW50Cis4NDI5OCBkYjI5MzYwY2FkMGZhYzNhNjQ5OTNiOTg4NmYxNGRmN2ExN2EyYmMyIHJlbGVhc2UyNi1tYWludAorODQyOTkgNGIxMjk2YjI2MmNhNGJlYWZjNWFjNTdjZWM4MjQ5NzdjNjQ0ODg1NiBweTNrCis4NDMwMCBmOTFmMjllZjRlZTdiNWY1ZWNmYmM5MDVlMjdkOWFmYTlhMDA5OTdkIHJlbGVhc2UyNy1tYWludAorODQzMDEgYzFjNGY4Zjg1MDcwZGE0ZDdiNjlhZTM2ZTllMDEyMWM5MDVlMTVmZSBweTNrCis4NDMwMiA4ZmUzNmUyYjhlZDEzYzIyMjJmZDFkNWI3ZDdlOWRhMDllYTE5OGExIHJlbGVhc2UzMS1tYWludAorODQzMDMgODBhNDgxNGVjZjVkNjUyMWQ2MWNlNjAwYjZhYTViNmQ2OThkYTFjMiBweTNrCis4NDMwNCBiZTc2YjM3ZmU3ZmQ4NDA5ZDNkMmYyN2YyODJlOWI0MWVjM2Q4MWZjIHB5M2sKKzg0MzA1IDYxODBmNDU2NDcxNGRiMTMzZWNmZDI1MzdhMGQ2ZGVmM2Q4ZTYxMTIgcmVsZWFzZTI3LW1haW50Cis4NDMwNiBmNjVlOWMxNThjMDQwNjIzYTk2N2JlNTNiMDRlYzY0MmY0NzZkYWRlIHB5M2sKKzg0MzA3IDg2NzY5OWM5YjYzZmY1ODQ1ZWMwMmYxNzQ0ZTNlNzZkZmQ3MTg1MTIgcHkzaworODQzMDggMTQ4OGNkMTAzZDdiODIxNGY3YTExMDMwMDc0MGZlZjZmYzM1YWQ1ZSBweTNrCis4NDMwOSAxZTIzYzNiMmUyMzI1OWE5MGE5M2JmNGJjZjU1NTYwYzVkMGNiZGZjIHB5M2sKKzg0MzEwIDg3YmRmNTNmZjRiYmZjYTQyOTk2NTMwYTdmMGU5YTg1YjU0MzMxYzggcHkzaworODQzMTEgZjZiM2U2NGI3NjIwNjc4MDI4NmJiMjVmMzViNGUzMGQ2ZTk2ZjNiZiByZWxlYXNlMjctbWFpbnQKKzg0MzEyIDA1M2ZmNjViZTU0Y2IzNjNjNWEyODQ4MTU2ZmEyM2NiNzQyNzAwYjkgcmVsZWFzZTMxLW1haW50Cis4NDMxMyAyY2NkMDQzYWFkNWMxMDkwYWM1OTRiM2M5NmE5Mjc0MTQ3MWUyZGMwIHB5M2sKKzg0MzE0IDg3MDM3ZDgzODBiZjRhMzllZjEzN2YxZjQwODg0MGI5MGQ2OTYzYTYgcHkzaworODQzMTUgM2FjOWEzN2U0MjliYTYyNzkxYWZhMjZiZWZmMmE0OWU2MDMzNjgzNyBweTNrCis4NDMxNiA5NGMwZjk3OTE3ZGRjNjkyODE3OGZmNzJkMGMyMWViYWYwNzVhOGRlIHB5M2sKKzg0MzE3IDA0ODJiMzBjYTQ2NjI5M2VlODJjYmMzNTZjMjI1Yzg1OTNjNzY5MGQgcHkzaworODQzMTkgYWVmYmE4OTllYWVlYjQyNDdhMWFmMmYyYWJkMTEzOWFkYzc0NWI0MiBweTNrCis4NDMyMCA4MzMwMzQ2YjVjNWZhOGI2ZmViOTRkZWM4NDlmZmE3MTBkMTgyYTJjIHB5M2sKKzg0MzIxIGViZmI5NGYyY2JjMzU2NGM4OTJjNWRjODZhMzhhOGIwOTNkNTUyNDkgcmVsZWFzZTI3LW1haW50Cis4NDMyMiAxOTAzNzU0NDUyNDE5ODZhM2E4NDdjOGE0ZDc4ZTgxNGVkNTRhMGFkIHJlbGVhc2UzMS1tYWludAorODQzMjMgNjU1MjA1NTYyNjk1MDFlMzlmZGFkYjgzMGYyNzRkY2RmZTI2Y2U4ZCBweTNrCis4NDMyNCA3OTE1ZDI2NmVlMmIyNWRjYTQ2NWY3MDQ2NTJkMzRlMTkyMWMwMTUyIHJlbGVhc2UyNy1tYWludAorODQzMjUgZWQ4M2Q1NDYzMTVkMmUwYTNhYjNlMDYwNWZhMDUzNjM2ZDg5YWMzZSByZWxlYXNlMzEtbWFpbnQKKzg0MzI2IDMyNWQwMTZjMTlmNzFmODQ3NDM5MmRjZDcwNmI2N2Y5YTI2ODU3YTAgcHkzaworODQzMjcgOWQ0YWZkOGU4NjIxMTU0YzFmOGU2OTViNjAyZjk0ZjVjNDEwM2I3ZCBweTNrCis4NDMyOCBkZWJjMjg0MmI0YjFiZjk0Yzg0NjA4MTgyMjBlNDEwNTE5YmIwMjMxIHBlcC0wMzg0Cis4NDMyOSAwMTEyZjA2NGNlZGZhYjJhZjg4NzVhNTg5YTBjNWNmMWI0Nzc5MTkyIHB5M2sKKzg0MzMwIGQwYjQ2MGE0N2Y3ZmZhNThkZjk4ZDVjNjEwNDIxZTBlNzUyZDFmZjMgcGVwLTAzODQKKzg0MzMxIDA5M2EwOTVhYTc0YzY0ODk5OTY2NGI4ZjY3ZjA4OWJlZDg4NGI0MmYgcGVwLTAzODQKKzg0MzMyIDFhYmE3MzM5ZmE2YzJiODhlNTM1ZWExZjFjYWY0OTUwYjg2Y2Y4ODggcHkzaworODQzMzMgY2IxZjVkMDU0NTEwZTQ3YTRjYjMwNjkzNmYyMWEzYjU1YTYxNTJkOSBweTNrCis4NDMzNCAzNGRmZWU1OTBhMzA3MWIxZWZmZDQwNGM2MWViMmMyYWIyNTMxMWIwIHBlcC0wMzg0Cis4NDMzNSBkNzE2MjIwNzMxOGY2N2NiMDhhYjQ4ZjkyZTg3YzczOWFiNDgxMjhlIHBlcC0wMzg0Cis4NDMzNiAzM2M0Y2NhZmM0ZjUzOGExMmNkNmRhZDJjNzNiOGMyOGFmNTllNjhlIHBlcC0wMzg0Cis4NDMzNyA5ZmFjMTk3MGQzODA2ZjIzYjU4MjdjM2RhYzUyYjU0NmM3NmJlNzBjIHB5M2sKKzg0MzM4IDc4ZTQwMzE2ZTAyMzQ2YWZjNjc3ZjlkMzVhYTQ3ODkwMTVhMTAzNzEgcHkzaworODQzMzkgZWFhZTBkZjZkMDYzMGUxNTI0NjUxYmMwYzZmZWQzZmNjZGYzMmI2OCBweTNrCis4NDM0MSA1ZGMwNmEwNTk2MzBhZGMzNmZjZWJhYzgxZDU5ZDNiZjUyZmMwMTU2IHB5M2sKKzg0MzQ0IDAyNjVkNWY3YmQwNzIxNjZhMmI4M2FiOTQ2OTNjODg2NWEzZDE3ODkgcHkzaworODQzNDUgNGM5NzhjZDM2NDBmYzllN2M0NDc5NGI5NjRiYzU4NGYzOGFjZmRmNSByZWxlYXNlMzEtbWFpbnQKKzg0MzQ2IGIyZThkY2QxNTA0MDM0MWZjZjc2MThkMjFhMDYwZWY1MTg0NzRmNjYgcmVsZWFzZTI3LW1haW50Cis4NDM0NyA4ZjZlNDFjM2EyMThhOThmMDAyNmY1MTMzYzFmOWFlZjg3MGY1Y2RlIHB5M2sKKzg0MzQ4IDVjODlmOTU3MWJhNTQ5MGVjNDY1MjFmYjcyOTgwYzExYjEyMWQzYzMgcmVsZWFzZTMxLW1haW50Cis4NDM0OSAzZTIwYWJkN2RlZjZlMzYwMDhiYWQ1YTQwYmE3OTMwZDljYzlhNGVkIHJlbGVhc2UyNy1tYWludAorODQzNTAgNGJiMzE3ZWI0OTZhMDg3NTdhMmJjZmRjOGI1NWIyMzNmOWRkMzU4NiByZWxlYXNlMjctbWFpbnQKKzg0MzUxIDljYmE5OTA2OGM1NGFhOWZlOGVjY2VmYjhiMWI0NTZjNmI0MGY1YjYgcHkzaworODQzNTIgOTI5Nzk3NDYwNGZmZGIzMTlhOWU2ZDlmMTE4NGFlMjRlYzYxYmFmNiBweTNrCis4NDM1MyA5MTVkYTlmMmRhMTk5ZThiNTRhNGQ1NGRhMGVmYmY4MDg4ODVhZTFiIHB5M2sKKzg0MzU1IDgwZDJlN2QxZDdkNTM0ZmE0NjU5MTJjYWI0YWM0MDFmNDA5YjYwNjcgcHkzaworODQzNTYgOWM1MWYzODM2NTYzMmExYjdiNzg1YTI3OGQ1MTRiMjgxNmVhMGYwYSBweTNrCis4NDM1NyA3MjY3MDVkMDJhZGQyMWU2ZDJjMWJjNTUwN2FmM2QzNmMxNDRjYzQwIHB5M2sKKzg0MzU4IGVmZTlmNmM4YTMxZDRmYzgwZDUzNzFlYmY4OGQwNWNlZmIzYjBmNTYgcmVsZWFzZTMxLW1haW50Cis4NDM1OSA4YWQ1OWI1MjNmZDhhMDY0MjZmNTQwZDVkMzYxNzJiZTFjZjUxZWQ1IHB5M2sKKzg0MzYwIGUxZGNkY2I1MjAxZDQ4NGY4YTBlNWFjYjM4NTYxZmY4NGUzOGUyMzkgcHkzaworODQzNjEgMjk0MTAxZjc3Y2JlY2E0YTFhNzkxNDczNGRmMGJlODYwNmI0ZjY1OSByZWxlYXNlMzEtbWFpbnQKKzg0MzYyIGU2YjQ1NmY5MzQ0N2ExMDA1Y2FiMWY0NjY4NWI1M2ZmZDNjMmRmOTYgcHkzaworODQzNjMgMDQwZWU5NGE5MzUwZWEyNDM3ODAyMDUwYTIzYjM5OGIyMjk3ZWFlMSBweTNrCis4NDM2NCBmZTcyMTRiYzZkNjZiMzM5ZmYxZmYzMWExZmM2YjFlOWQzNzc5YmY5IHB5M2sKKzg0MzY1IGE0OTJmMWFjMDU3NTQ3OWU2YjhlZGE3MGVkNzE1N2QwN2YwMTM2YjkgcmVsZWFzZTMxLW1haW50Cis4NDM2NiA1MzcwZDgxYTVmMmQyYjMwMDRlYzgzNWUyY2M2YzljY2I5MDY0N2IyIHB5M2sKKzg0MzY3IDBhNzg0ZjZhY2FlNzY4MjRjYWFhMzQ1NmIxNmJjYWEyZTc2ZjQ3YTIgcmVsZWFzZTMxLW1haW50Cis4NDM2OCBmOTIwNDNjN2ZmOTg0MGUzOGJkNjIyYWNhMWQ1MWE0OWExNzQzNDE0IHJlbGVhc2UyNy1tYWludAorODQzNjkgZWE4OTNkYjIzZTczOGM2MDg4YzUwNDE0MzdmZWUxYjRhNTQ5MWEwZSByZWxlYXNlMjctbWFpbnQKKzg0MzY5IDQ3NDM3MzhjY2FmZTE3YWM5ZTVhM2NlNmQzNDMxZDgxZDg4NzhiMGUgcHkzaworODQzNzAgODQ4ODM2MDdlMjFhNGIxYWZlYWU0OGJlODE2MjU5NjA0MWY0OTJjMSBweTNrCis4NDM3MiA3YjJkMGQ3N2U0YWM2ZTU0NzczYWU5ODY5OTBjNDI0ZjRkMDYzYTUzIHB5M2sKKzg0MzczIDgwMzg5MjkzMzNhOWM3ODI5YjU3MDBkMDg1ZmUyZjFkMWY5MTFiYzUgcHkzaworODQzNzQgMDhmN2FlMTBjYzc5MmFlYWIwOGU5NmQ0MmNlYzUxZThiYzlmYjdhOCBweTNrCis4NDM3NiBjYThmOGM2Y2MyYjFiMjgxN2UxNDRjNzcwY2ZmNjMyOTY5Njk3M2ZmIHB5M2sKKzg0Mzc3IGFjMzdhMjhkZGM4ZjQ5YjRhOWI0YTdlYTg2N2JkYTVmODA5ZDdiY2MgcmVsZWFzZTMxLW1haW50Cis4NDM3OCAxNTcwZjZlOWE2ODc0NTllYjdlZWY0ZTE5ZDI2YTQxMmRhZjdkYzg5IHB5M2sKKzg0Mzc5IGQ1MDNmN2E0NTQ1NjZiOTQ4YmIxYzc2ZDNmNWJhZmU1OGFlNGZiZjUgcHkzaworODQzODAgNjI5MzBjYjA1ZWQ4YjhhMTQ0YWUyMmUzNWIwYjA4NmY5MjU0YWU0OSBweTNrCis4NDM4MSAwMzI2OGJmOWEyNTY0Zjg0ZmNmMWM4NTkyODMxMDA4ZWY3MDMyZmMwIHB5M2sKKzg0MzgyIDRmMjkwNWVhNzgwOTY3M2YwNDUyZjMyZjlkMWQyYmU1Zjk4YzFhODYgcmVsZWFzZTI3LW1haW50Cis4NDM4MyBhMGU3NTZkOTJkNjAwNjEwZjliYjgxOWM1YTNkZDg2MzAzNzNiZDRjIHB5M2sKKzg0Mzg0IDhjMjE2MGI1YzgxYWY3YTg4MjBlZjY0YzljNjE4YmZiMzMwZDUyODAgcHkzaworODQzODUgOWNhODNjNjRmNzdhZTE1NTkyNmQyZjBhNjk1NDg2ZTMyYWJkOGIyNyByZWxlYXNlMzEtbWFpbnQKKzg0Mzg2IDJlNTc2MTVlNjFmMGYxYWNhNmU1MTc4NjhhNmI1NWNhYjFmYTJjOTYgcmVsZWFzZTMxLW1haW50Cis4NDM4NyA5ZmQzMjZhZjYyZDQ1YzhkYzJhYzY5MDMyMjkyY2FhZGI4MWJmMDVkIHB5M2sKKzg0Mzg4IDQ5ODBiM2U5ZTg0YTE4MTQ5YjZiZmI3MGRjOGM2NzMzOGMxM2E5MzggcHkzaworODQzODkgN2U5YWJkNTNiOTI5OGU3MGZmNmU0YWNmMDY4YjdkZTIyZmUwZTY3OCBweTNrCis4NDM5MCAyOTczZGFhNDcyNGIxZWQ2YWYzZDllYmZiOTRlYzVhOTIxOTU0YzRmIHJlbGVhc2UzMS1tYWludAorODQzOTEgZDI0ODcwZDAwYzQyNTlmODBjNzc2NGNmMzkzNmIyMGI2MjJkNjJiMyBweTNrCis4NDM5MiBiM2I4ZDA4ZjlkMDZlY2ZiZDgzNjNiNGJiMjg1YjBiMDYyNTUwNmE3IHJlbGVhc2UzMS1tYWludAorODQzOTMgZGExOWQwMmFhYWFhM2Q2ZmI3OGUwZTk4YTNhYjhmZjg5OTUwYzdiZCByZWxlYXNlMjctbWFpbnQKKzg0Mzk0IDVhMzEwMWY1NThlZGRlMzQzYWNjNDQzOWFkZDBlNDA5ZTU4MjRiOTEgcHkzaworODQzOTUgNDEzNDk4MTc0Njk3NjhmN2YyYzI4YWIwY2RmZjI1NGQ5ZmZmM2UzOCByZWxlYXNlMjctbWFpbnQKKzg0Mzk2IDNkMWM3MjYyYWExNGRjYzM4NzhkYTY0MjkxNzVhNWExZDE4OTI3OWYgcmVsZWFzZTMxLW1haW50Cis4NDM5NyA5NDQyMzI1MjE2MjRiYjc4Y2IxMDFmODNmYzllMzJiYjgxYTIxNTk5IHB5M2sKKzg0Mzk4IGQ4NTBjMzdiNjZiNmY2ZmQzMDc1YTU2ZDAyOTc3OGQyZTNjMDQ4ZDIgcmVsZWFzZTMxLW1haW50Cis4NDM5OSAwNjFlMjcwMzJlNjE5MzYzMmZkY2ZhOGY1ZDkyMWRlNjMzYjA2NmFjIHJlbGVhc2UyNy1tYWludAorODQ0MDAgMmRjMTdkY2M5NzM0NjlmMjlmZmFmM2UzMmUwM2Y5ZWJlZDE1MmVjNyBweTNrCis4NDQwMSBkZTQyMDdjOWI5YzEyOGQ4MjYzOGU2Yzg4NzA3N2RlOTBjNTE3ZTdjIHB5M2sKKzg0NDAyIDMwNDVlYjk0MDU5N2JjMmM0NGIyNDVlNGU3NDZjZWI0N2QwNzUxZjIgcmVsZWFzZTI3LW1haW50Cis4NDQwMyBmYThiNTdmOTg3YzVmMTViODQ1OTQ2MzVlMDdkMmFhYTNmOTAzNDUyIHB5M2sKKzg0NDA0IGQ2NjgwN2M1MDM4YmZiNjZmNGYzMzM1ODBjOGE3Zjk2YmUyMDQxZWYgcmVsZWFzZTMxLW1haW50Cis4NDQwNSA2YmEwMzMyMmJjMjMzYmJkZDI4MzVjYTY2ODVkYzg3NDk4ZDM4ZjExIHB5M2sKKzg0NDA2IDA2M2I1NTRkMzE1M2YzNmY2ZWU0N2M2YzQxYjVkMGUwMTU2ZWYxNmYgcHkzaworODQ0MDcgNGQ4YTI1YTRkMWY2MDgwNWQ4MjRjMTQwN2RiMDA2MmVhZDQ0YWU2ZSBweTNrCis4NDQwOCA5MjVlOTExM2YwYWFlZmYxM2I2M2RlYTdmOGU4MmU0MDJkZTJlNDZiIHB5M2sKKzg0NDA5IDdhMzk1YmNlYWM5MWFmMzYwZDMzYjU4MzM5OTQ0YTM3MWM4Nzc1MjggcHkzaworODQ0MTAgNDU0N2IxNDkxMTY5MDM3YzBkZjU0MjgyZjZhNDUwNDNlM2MzZjAyYSByZWxlYXNlMzEtbWFpbnQKKzg0NDExIGZhNGQ3OGI5ZTNhMmE2Yjg0Yjg0NThlYWQ3MmQ1N2Y3NDQxMWYxNTkgcmVsZWFzZTI3LW1haW50Cis4NDQxMiA2MTlhZmM4MWM5NzMxZTE1ZDVlMWRiMmY4YjU1NTNiYmEyZTM0NjQ3IHJlbGVhc2UyNy1tYWludAorODQ0MTMgZmE5NDk1MzE2Y2E5MDBkMTkxNzYxNzRkMTZiZDAwZDYyN2I3YTFjNCByZWxlYXNlMzEtbWFpbnQKKzg0NDE0IGEzYjY0MTkyOTZlNTg0YmY3YmRhNTI5MDEyYzUxNTg0OWQ3OTdmNzEgcHkzaworODQ0MTUgMjVlZGI2ZjQzOGI5MjZkOTljOTFkN2U5M2FiYjM0YTFkMDdjMjQ1ZiBweTNrCis4NDQxNiA1MzhhZTYyMjRhNWViNWVmZWQ5OGY3YTU4ZmY5OWY2ZDA5Y2MxMzA2IGltcG9ydF91bmljb2RlCis4NDQxNyBkNzkyMTZmYzIxY2U3NTExOWNiOTdhMWI1M2RiMTY2ZjQ0MGM2ZDcxIGltcG9ydF91bmljb2RlCis4NDQxOCA4MmVhYzNjMmM2OTdkZjBhMTBiYjJmMGY2NmEyYjRlN2IyNTg3ZTg1IGltcG9ydF91bmljb2RlCis4NDQxOSBlZDNkODYxYzQ5MGNhMmZjNzA0M2RkNzE5NDJlYzU0ZmU1OTE3NjI3IGltcG9ydF91bmljb2RlCis4NDQyMCBhMzliYTdhY2JlMjg3MDRhMjgyMTU5NDk3MjFiZTY2ZGQ2ZmY5MzVhIGltcG9ydF91bmljb2RlCis4NDQyMSBlNjYwZTdiZDc5OWQ3MGZjYTdhNzJmYTM0ZDhmNGNkODIzZTgyMTZiIGltcG9ydF91bmljb2RlCis4NDQyMiA4MDY0MWM3YTZmNGY5YzI0ZmZlZmVjYWMwNzY4NDcxOWEwZGI0YWIxIGltcG9ydF91bmljb2RlCis4NDQyMyAzZDc4NTJiODYxMjg0ZDljNjcxN2E1ZWViODUwOTQ2MGY1NGRhMTZlIGltcG9ydF91bmljb2RlCis4NDQyNCBiMjFmZDk0ZjRmYjM3YjMzODE4NjM4ZmNjZjEwMzEyMDU5Zjk0NzM1IGltcG9ydF91bmljb2RlCis4NDQyNSBmMGQwYTA3MGYxMjhmMmI3MGZhZmQ4YTM1MTdmYWVmNGY0YTViYzFmIHJlbGVhc2UzMS1tYWludAorODQ0MjYgOTNkNmFkODUyMzUzNDFkZmMyMTdjZDhlNGQ3YWE3ZTY3NTFmNGUzMiByZWxlYXNlMjctbWFpbnQKKzg0NDI3IDgyMjExYjE4NTBkNGRhMmJjM2Q3MDJmMTZhNDg1ODI5NWU0MGNkYzMgcmVsZWFzZTI3LW1haW50Cis4NDQyOCBkY2IyYWE0MWNkNzgwYTAwM2NkN2QxMGVkMmZiNTViNmIxMjU5YjJiIHJlbGVhc2UzMS1tYWludAorODQ0MjkgYTBkOGRlMDRjM2E4Mjg1MmJiODc3ZmE3MDI0ZGY2NTE3YjZiOGJlMCBweTNrCis4NDQzMCAxZjA0YjAwNzZmZDgxNWUzOTRkN2JjNGJmN2YwZjZhYjBhYjg2MmY4IHB5M2sKKzg0NDMxIGE3Y2FkZDdiMzRiNTI2ZjAyNzU3ZDM0OWFhMzY5ZGE1M2ZhMDQ1NTMgcHkzaworODQ0MzIgNDdiOTNjZGE5MWRmNWIyYmQyYzk3ZDcwNGUwMmE2MjVmOGJjNmRmYSBweTNrCis4NDQzNCA4MWE5YWM3M2Q2MTk2MzI5ZmIyMGVkMDhjMDE0ZTFkOTQ5OTNmZjU1IHB5M2sKKzg0NDM1IDAyNjBlMDRkMmNmYzgyOTg5MmI4MjE4ODU3ZTk2YWNjNDlkMmU2MWIgcHkzaworODQ0MzYgMTFmYzc5OGE4YjQzMjcyMmUwOWY2YmEwYjQ3ODM5NmE5NGNjMTExOSBweTNrCis4NDQzNyBiZDc0MzVhODcwOGI2MzdlZjJmYTJiOGJmZDczNWQ1NGRiYjA5ZmQxIHB5M2sKKzg0NDM4IDU1ZGI2MGZjYWI1NDI0MjcwYjVlMTVlZjVmNTViMGJjNjZmNjFhMGQgcHkzaworODQ0MzkgYjhjZmJiZmUxODM5MDY3ZTc1ZTJlNzNlMTA4MWFiNDU1NzMwMmMwMiBweTNrCis4NDQ0MCBkMWM2YjFhYjViYTc4NTQwODE3MjRlYTVkNmVjOThhMTc3NWIxMTExIHB5M2sKKzg0NDQxIDhiOTRmMTVjYjY1MGJhMWFhZGViMjU5MjAwZjczNmNiMWEwZjZiYTggcmVsZWFzZTMxLW1haW50Cis4NDQ0MiA0YWQ3ZWZkOTA5YmNlOTRiYzJmYTFlZWMzMjM2NDEzNDRkNDA2NmE2IHJlbGVhc2UyNy1tYWludAorODQ0NDMgMTZjZWZkZmVkNjgyMGQyYzU2NDc2MjE5OGUxNDhkYWMyOWJkYjRkMiByZWxlYXNlMjctbWFpbnQKKzg0NDQ0IDE2ZDhhNGU5NGRkMDg3MjQ5NjIyYWY5YjNkZWE4NWY1NWM2MDVlYzggcHkzaworODQ0NDUgMzNjZmFhMzJjOGU4MGU3NWVjNThiZTlkYjI1YjIxODYyYWM4Y2VkZiByZWxlYXNlMjctbWFpbnQKKzg0NDQ2IDhkYmQzMTZiZWJkZjk4NzI1MWRjYTIyZmUyYjYwNDc0YzA5ZTJjYjAgcmVsZWFzZTI3LW1haW50Cis4NDQ0NyBkNTZiM2NhZmIxZTY1NWVmYjgxYzg1Njg4NDQ5ZWRiMmU2MDk3OTdkIHB5M2sKKzg0NDQ4IGI2NWQwMzcxYTczMTU4YjRiOTZlNjE3ZjI4MDg5MDNmYzU5NjBlMmUgcHkzaworODQ0NDkgYjhlZTgwODYzZDYzZmFiODA3ZmQ3YzM5ZjU5YTljY2NiZWJhM2M1NSBweTNrCis4NDQ1MCA3ZDE3NTJkNjIwNTBjOWEzMzYwZmU4NDkyNmViMDljM2JjYzJmYzlmIHB5M2sKKzg0NDUxIDYzMzE2NmQ0ZmMxMmFkOTJhN2Q4YzFjNzllOGYzYWI3ZDFlZjA0ZDQgcmVsZWFzZTMxLW1haW50Cis4NDQ1MiA4M2E2ZmZmM2Y2ODMzNGZkN2NiZGE0YzMxNzgxYzEwMjUxMTM2ZDViIHB5M2sKKzg0NDUzIDEyNzA0NTFmNDYwNDlkN2E5ZDkxNjZlYzNiYzAzYmQwYjE5NGFlODMgcmVsZWFzZTMxLW1haW50Cis4NDQ1NCAzNTY5OWYzODdkYTZlN2QyZDZkZDY3NmIxOGM2NGVjMGE3MjkyNGE3IHJlbGVhc2UyNy1tYWludAorODQ0NTUgOThmMzM3YTY5NTdjMTNjOTA4ZWRhMGI5ZWQ0ZDczZTk1MmI1OGI4NiBweTNrCis4NDQ1NiA3MjY0MGU3MTEzNDQxOGE3MDA2NWE3NTYzNGJjMWRlOTg0N2RhODZlIHB5M2sKKzg0NDU4IDVlMzNiMjdjNzFhODYxNzIxOTc1OTM0ZThiZmUzYzA3NWRmMTZiM2YgcHkzaworODQ0NTkgMjAyNzQ3ZGFlM2NmYWViNGQ2OGIwODE4MTEyNGUwMDI2MzM0ODFmZiBweTNrCis4NDQ2MiBiYTg3Y2FlZWNiOTE0ZjdiMTgzNjY3NDQ4Yzk3MGE2ODM2NzVkNzc3IHB5M2sKKzg0NDYzIGI3Y2IyNzc3M2U3MjkxZjVmMDY0NTBiNmEwMzU2ZTJlMmU2YzA1YzMgcmVsZWFzZTMxLW1haW50Cis4NDQ2NCA3MDAxOWM1Y2YzNWY4ZWM3Y2IzZmUyOTJjMzdjOGRlMzY1ZDg3YjlhIHB5M2sKKzg0NDY1IDk4ODcxOGU5ZjkzZDE1ZTJhOTM3YTZlMWM4NmMwZGI0MmZkN2ZiYzYgcmVsZWFzZTMxLW1haW50Cis4NDQ2NyAwNmU1ZmQ0OTU5ZThhMWU0MDQwNWYwZDJmN2IyY2I1MDdjMDk0ZTA3IHB5M2sKKzg0NDY4IDFmNDcyMDZkNTc3ZjA3YWNlM2QyMWNkMTU3YWVhNGQyMDA4YTY5NTcgcHkzaworODQ0NjkgZjhiYTk1NThhZGJmOTE1YmEyZjkyMzcwMTQyZDI4YmM1YjQzOWI2MiBweTNrCis4NDQ3MCAzZjc3NjRjNDBjMGJmYjk1MmE5NTVkNzdjNjBhOTY5ZTBmNjQ2YmUzIHB5M2sKKzg0NDcxIGRiYzk1NzYyY2Y1ODYzNWM2NWQxNzE1ZDExOGViN2I0YTcyNmE1MDIgcHkzaworODQ0NzIgNTI0YjQ0NGE4MDk1MDk1YTZkOWNiYWMxYmUyMGU0NDBkNTU1M2RiZiBweTNrCis4NDQ3MyBlOTJhZGE2NDJkYmRmZGI3MTdkMzNjOGFiMzlkYmU3N2ExMjM5ZWRiIHJlbGVhc2UzMS1tYWludAorODQ0NzQgODk1YWViNDU5NWMyZjcwZTZhZDUwNjE3YjRmYmIyYmExYjE5NWU1MCByZWxlYXNlMjctbWFpbnQKKzg0NDc1IDQ3MmRjZjUwY2E3MWM4N2ZjODMxYjk5OTdmZmI3NTUwMmZiZmYyYzIgcHkzaworODQ0NzYgNTMzMDViYWVmNTg4ZDg1N2NlMTBiMDYyMmMyMThlM2MzNGE1NWM3ZiBweTNrCis4NDQ3NyA0MDUyZDNlMjg2NWJmOGExYWY0N2FiNDc5MTdjMDBjOTkxMTgxY2FkIHB5M2sKKzg0NDc4IDVlNTVlOTVkNWM3NzRiNGZjMmMxMjM3NTEzZmQ2NTlkMjIzZDlmNGYgcHkzaworODQ0NzkgNjhmZDQzMDg1OWE0OWMzYTgzN2UxZThhMTE3OTZhNTUxMWM4YTI2YSBweTNrCis4NDQ4MCBlYTZkMDgyYTljZjgwODY3Y2MxYjMyMGYxZmYyNWFiMTAxOTc4ZGYzIHB5M2sKKzg0NDgxIDQwZWI1OWUyZjJkMzUwNmZkZTdkYTVhNzVmOWUyMjU5MDhhMjYxODggcHkzaworODQ0ODIgZTVhZTAzZWY3ZmMxM2M4NTcyZTYzNDRhMzg0NzQ4NjFkYWZlYTkxMSBweTNrCis4NDQ4MyBkZThkM2Q3OTFlNmE3ZjQxY2I4NWMzZTgwOTZiMGFiMDA3NjJkNmFlIHB5M2sKKzg0NDg0IDAzMjU0ZmM4MzkwMTE2M2QzYzQ5M2M0ZjQwYzdkMDU4MGRkNzYzNjggcHkzaworODQ0ODUgZTljZDE1ZDUzOWUxYTNmZWRhMDA1Y2JiOWVjYjNmZWUyOTQ1ZTI3MiBweTNrCis4NDQ4NiBiMmIyNjJjNWRhYTg2MzA3M2EwMGMyYjBmZjQ0OWEwOTFlZTcyMDE2IHB5M2sKKzg0NDg3IGI3MGQzM2VlZmQ5NjBlNGQwYzJkNmMzNDhiZTJkNTY3ZjI1OWI5MmUgcHkzaworODQ0ODggMDBjNjk1N2M3NzE5MGIyOTFiZGJhYzNiYTM0ZmMwYWUwOWI3MGU2ZiBweTNrCis4NDQ4OSA5MGViNGM5NzNmNTJhZmY1MWE1ZmE5ZjEzNTIyM2I2NDNjODk2Yzc2IHB5M2sKKzg0NDkwIDBhZjk0ZWU5OWE0ODRiZGMyNTIxYjNkMmJhNzExOTc0MWU1ODc0MzAgcmVsZWFzZTMxLW1haW50Cis4NDQ5MSA5MTk3YmFlNjE5YWE0MGIyNTk4MmE1NDRkNDJjZTM0NzQ2ODFkNmE4IHJlbGVhc2UyNy1tYWludAorODQ0OTIgZWQ0NWEyNmY2NjY0ZGE3MTk4NjIzNGFiZGQ1NTBkMjYyMWM3MjZkNyBweTNrCis4NDQ5MyA0MzMxOWUyOTJkNjRiYTE5YTkyODA3MjdhZjc4MmRjMzZhMDVhMzBhIHJlbGVhc2UzMS1tYWludAorODQ0OTQgNThiODEwMWVhYzIzOGU2MDUzYWQxODI1YTE5NmQzYmY2NDgwYjQ5YSByZWxlYXNlMjctbWFpbnQKKzg0NDk1IDBmNmVlNTljMmE3NjNhODJhNzVhZWRlNTk1MTNiNDE5ODk3YTNlYzggcHkzaworODQ0OTYgZGFiYzExNTExNmJkNzQ4ZDIxMWVkODNmZjBiOWYyMTg1MDc5ZTU1ZiBweTNrCis4NDQ5NyBkMmI4ZjExMDMyMTI0YmJiMjcyM2NmNzIyMjM1NjlkYzZlZjUwOTk2IHB5M2sKKzg0NDk4IGY5OTRlNmZkMDY4MDYyMTQyNDI5MjZmNjgzZWQ4MDNlNjNlM2M4MGYgcmVsZWFzZTMxLW1haW50Cis4NDQ5OSA4ZWNlMjljOGJiYTI4ZWQ1YTZlMjQxYzRkMGU4YmU0ZDE0NzJkYjA4IHJlbGVhc2UyNy1tYWludAorODQ1MDAgMWI1ZWU2ZTg0NWNkZjAxNzM3ZDg5NTZmOWU3N2YzNmY1YzkyNTcwNSBweTNrCis4NDUwMSA3MjUyMzEyMTEyNzMyN2MwMjIwOTZkMzBlN2IyOGE0YTVhODk0OTVkIHB5M2sKKzg0NTAyIGNlNTQ2YTFiOWZlYzFmNjBiZWRiM2YzMTQ2ZDA2ZjA5ODgwNWNkN2QgcHkzaworODQ1MDMgYTQxNWNmOTRjN2RhN2YzNThiYzQ5NWVmOGFlNWQ2MzExNjZjOGIyNyByZWxlYXNlMzEtbWFpbnQKKzg0NTA0IDU5OTdhZTJlYWIzNzE5MTc4NzRiNzNkMjZhMzEzM2M3YzNhMGIyNjIgcHkzaworODQ1MDUgYzNhZDg4M2I5NDBiZTRlZWFiNzUyYjBlYWJkZWY2ZGY2MDA5YzAwNSBweTNrCis4NDUwNiA3OGVhNDQyMmRmNGMyYzhkODEzYmQzN2M1NjA3NzA1OTgwYmY2Y2JkIHB5M2sKKzg0NTA3IDIzY2Y1NDE4NmY1NjUzMjA2OWNmODM5Mzc3NDllOGE4Yzg2OTA0YTkgcmVsZWFzZTMxLW1haW50Cis4NDUwOCA5ODA4M2Y4NzY0NTU0NzI2MmQ5ODE2MjdjOGIwNjQxY2VkYWZjMzYyIHJlbGVhc2UyNy1tYWludAorODQ1MDkgOTcyMDgzNmFhM2NiODkzMTU2ZDQ0YzM3NzY5YWQ1NzRjOTUwODdjNyBweTNrCis4NDUxMCA2MWM0NDc5MzIzOGQxNzE0ZWNkMGY2OWZkZDUxYTkwOGEyNGZjMmYwIHB5M2sKKzg0NTExIGIzMmNiZmE5NjczOTRlMzM5MmVjNDRiMDFmNTdhODM4NWJiYmJlYjcgcHkzaworODQ1MTIgYzc4ZWIwMTZkMWM1MTQ4NmRhNjExZjQwNzk1NjYxZjcxNWQ2Nzc1ZSBweTNrCis4NDUxMyBjNGIzNGIyYTVjYzBlZWViNTcyNWFhZDdjMDAzNzc3ZGMzMDE1ZDdkIHB5M2sKKzg0NTE0IDBiMGJkODEwMjg5MWJiOTNlNmVhYmY2MDU1MGI2M2M2MDM3ODUxMjYgcHkzaworODQ1MTUgN2EzNGRlZjM1ZGU3NGJkNzJmYjY1YzFhZWNlM2MyOGI4NmUwNTRjYSBweTNrCis4NDUxNiAzYzM2ODQ5ZjA2Mzk3YjVhMWY0NjIwNGNkMzU0NTRiOTExYzY3MzVmIHB5M2sKKzg0NTE3IGE4ZDU0ZTgwMjNmMjFhNjJmM2IzNmJhMzgyZjA0ZGJiZGFjMzU3OWMgcHkzaworODQ1MTggOGJiMTYyYjAxOTI2ZjVhZjk4YmY0OTliZWEzZTY4ODUxZDhkZjg5NiBweTNrCis4NDUxOSAyNjNiMTA3N2FiOTc1YjNkZWUwOWU2NjAzMmVjNjBlOTg5M2MwMmM1IHB5M2sKKzg0NTIwIDBkODYxNDA3NTVmMGQ0OTUzOTNlOGY2NjEwMTU1ZmY5YmRlZWE4ZmYgcHkzaworODQ1MjIgNTZkYzJhNWFmMjBhMWFlZGJlZWU0OTA5Y2FiZDZmMDE1ZDU0NzlmMyBweTNrCis4NDUyMyA2MjA5ODc1MWRhNjdiNWVlZjliYjg1YjIxNTcxMjJhMjJkYzA3MTRkIHB5M2sKKzg0NTI0IDE2MTE5MTI5MzI0ZDQxZmFmMzQ0N2EzNjkzMDE4ZjA1MzI1MmVkNzUgcHkzaworODQ1MjUgN2Q5YjRlMDE4YzYyZTkyM2RjZTk1MmVlNjhlMDBlZjJlYWI5MTljMCBweTNrCis4NDUyOCA3OGM0ZGRhN2NkYzYzNzM3ZmEyNDg3ZTE1MjUxZGYxZTk1YTJiOGMwIHB5M2sKKzg0NTI5IDUxMDQ4ZjYyNzZjZTg0YTNjOTkxOTU5NDFkMDUwZmJhMmMwZWZlZDMgcHkzaworODQ1MzAgZGM1ODkyZjczZTAzNmRmODQ2MGNkZWMwMmNkN2ExY2JhMmMwNTJlZCBweTNrCis4NDUzMSA0ZjdiNTZiNzg3MjUyNTYxN2M1NmI3YmZjODQ5N2YyZTMwZDIxYTcxIHB5M2sKKzg0NTMyIGE3NWU5ODkzNzU0MmJjNTMyMzQzMjlkMDZjNDIxNTdlN2VlMGNjNjYgcHkzaworODQ1MzMgYjBhYjgzMmY4OTIxMjgxODgyZTRlMjE3ZmMwZDMzMDlhMDhmZTUzMyBweTNrCis4NDUzNCA3ODE0ZGM5ZjMxYTI1YzkzNzdlYzY2YzUzZTMxOWMyNWE2NjQxYjQyIHB5M2sKKzg0NTM1IDdlMGQ4NjZjYTg3MTQ4MjRjYjJhOWY4ZTU0ZWViYzg1OTgzOGU3NjggcHkzaworODQ1MzcgN2E3YjUzMWJjYjY0ZDEyNWRkM2JiMDFmNGI3MDMxYTcwMDQ1OThhNSBweTNrCis4NDUzOCA3ODg3OTcxZGRhNDgzYmNiZmYyMTlmMWViYTU5ZDMwZjBlZTQ5ZjFkIHB5M2sKKzg0NTM5IDIxMzkxNjAyODdhMTFhMmQwNmVhYWIxNjIyZWE5MzBlMzExMTU2NGYgcHkzaworODQ1NDAgNTZkNDM3M2NlY2I3M2M4YjQ1MTI2YmE3YjA0NWIzYzdiM2Y5NGIwYiBweTNrCis4NDU0MSAxZDBkMzNjMDUxNWVlOGJjNmZmZTY3NGQ5YTFjMmVmNjljOTEwNTNiIHB5M2sKKzg0NTQyIDVjOTlmOGM5MGU2NjQxNjU0YTMzZDM3N2VmMjBiYTMzZDg3ODkxOWEgcHkzaworODQ1NDMgYzM0ODkyNTc1YmMwZTRhZjExMTAwNTEwMDBmOTc2YTFjYjQzMTBjZSByZWxlYXNlMzEtbWFpbnQKKzg0NTQ0IDg3YWE2MmJkMTcxNTZlOWUyODhhZGMwMjE4ZDczYWZhZmMzMzM1N2IgcHkzaworODQ1NDUgOGVmNjhlYmVjMGUxZTJlNmIxNjhmYzEyN2Y2NzhiNWNhNDk3ZDgxZiBweTNrCis4NDU0NiA2OWNiMDlmMjY0MjQwY2EzYzMwMzE3NjBkZjNhMTM0ZDYwZjI0NTUwIHB5M2sKKzg0NTQ3IGU1NThhYzQyNWE1MTg1YmYxYjU2MDgzMTE2MjRkMDk1NmVmMTI2MjQgcHkzaworODQ1NDggMDcxMjI1YWY2NGEzZDcwNTZiMGQ1MzQ2YTAwZGU5N2FjMTI4ZTM2NSBweTNrCis4NDU0OSA2NTdmNzk1MTk5YjllN2UzNDkxMjdlZmZjMmZmZTI5NzYzNWU0ZmQzIHB5M2sKKzg0NTUwIDYzMjRkMjM5NjNhNzE5MDQ1YzUzNGZjYjExM2E0MWZkNjJmMjdlOTIgcHkzaworODQ1NTEgZDM4OTM3NDcxZjg5ODRhYzk2MDVhOWU1N2JhZmIyMmM3MWRjNjE3MiBweTNrCis4NDU1MiAzOWFhYTJhN2ZkNGJmNmVhMjU2NWU0M2NkMTU4MmI0MTZiMzNkY2U2IHB5M2sKKzg0NTUzIDFkMzc0ZTViYTJmMTMyZWI5OWI3ZDU1YzZkYzQxMWNlMmVlN2Y2MDkgcHkzaworODQ1NTQgNDk0NDFlODhjY2MxNGFkNDhmZmMxYzIxYTM2NGQxMTYxYjc2OTU4ZSBweTNrCis4NDU1NSBkOTM5YzgwYzY2NmJkMzczOGI0MDc3OTllMjc2ZDVmYWM0OGYzMTExIHB5M2sKKzg0NTU2IDA2MmFiNTE0NzQ4NzQ1OTdjZWI2NWUxM2EzODQ0NzNhOWExYTc3NzIgcHkzaworODQ1NTcgMDQ3YTlkN2NhMjQxZGMxYjhjZmY2YmJhYzhkMDkzZmI4YzQ4ZGNlZiByZWxlYXNlMzEtbWFpbnQKKzg0NTU4IDJjMmEzOGUwY2YzMDc2NTUxY2FjODU3N2QxNmRlYWY0YjFiOWEzMzMgcmVsZWFzZTI3LW1haW50Cis4NDU1OSA5YmRjNTkwMTIwN2I4Y2Q4MGY3M2M3NWRjN2NjNWVjN2JmYmE0MmEyIHB5M2sKKzg0NTYwIDRhMTQ1NWQzNjhmZjVmZmFkYzgxNGY3ZTlkNmFiZjU1ZDczYTEyYjMgcmVsZWFzZTI3LW1haW50Cis4NDU2MSBmNmRmZDZjNTYzZTExNThhNDg2YzZmM2E2NGVkZGE1MmU3YjhmOGJlIHB5M2sKKzg0NTYyIDIxNDA1ODEyZjMxMjcwY2ZmYTQ2MGQ3ZGM0MzU1NGVhYjhjY2FhNWYgcHkzaworODQ1NjMgMGMwZjFkMGViNzdlOTgwZjcwZmI0M2VjZDgzZDg2NzBiZDQ1Njg1NSBweTNrCis4NDU2NCA1NDEzMzg3OTU5NTA3MTE5YTExZjY5OWZiNjQ4OWIzZmQxOTBlZjM5IHB5M2sKKzg0NTY1IGVmMTZiNGI3OWQ1NDdmNjI5ODlmMjBhOGU0YzRlNGM5ODM5OTY2ZWEgcHkzaworODQ1NjYgNmE4YjVhNjE4ZTdhZWYwYzRmNDZhZTI0NjM0MDAwYmU2Y2FlYWNhMiBweTNrCis4NDU2NyBiMzA2MTA1YmY4M2RmYTI2NWVmYzAyNWFjZjhhN2UyMTdhYjkzOTc2IHB5M2sKKzg0NTY4IDEyNDdmYTc1MTc3MjFhZGNhN2U1MzU0MWFiMTczNzEwZWNhOWFjY2EgcHkzaworODQ1NjkgZmFhYWI1YTY1N2ViNTQ5YjIxN2RkYjBkNGIyYjNiMDA5YzEwMWEyNiByZWxlYXNlMzEtbWFpbnQKKzg0NTY5IDE2OTJjMGI2MDMxNzY0MTU2MjczZjIwOTM3NzNhZTc4M2I5NTg3M2UgcmVsZWFzZTI3LW1haW50Cis4NDU2OSBjZDkxOGFjN2JkNTU0Yzg5NmY1OTNiOTZiYjU5NTRkMmZhMmNlNDg0IHB5M2sKKzg0NTcwIDU0Yjc5NjRkZDdhOTVlMzA5MDIxMDI2NjU3ZmJlZjBkMzdiM2MyODYgcHkzaworODQ1NzEgNTY3ODc1OWE4MDA5YTcwN2Q4NTZiNTE5MjY1OWQzZmFjN2JhYzYwYyBweTNrCis4NDU3MiA1M2NkOGVjZGNlOGFlNjcxYWI1OTYyMzdmZjZkMmFmNzk1NTU5YjI3IHJlbGVhc2UyNy1tYWludAorODQ1NzMgYjMyZmRhOWY3MmZmOTVkMTRkMWUwY2FjZWVhMGUxZTY0NmU0OWJmZCBweTNrCis4NDU3NCA2NTY0MmYwODVjNTVjOTQ1YTliYjA1MzBhNDkwYjI5MjBkNDE4ZWNjIHB5M2sKKzg0NTc1IDExYmE2Mzk3ZTNhNGZlNDc0N2FlMTE1NmEwN2MxODZmOGQxMjcxNGMgcHkzaworODQ1NzYgYzJmODQxOGEwZTE0NjEzOTFkZjYxMmM1ZmQyMzg4NzMyMzQ3ZTJjNiBweTNrCis4NDU3NyBlMDdjNDQ4M2FkM2I2ZmIxNTE1ZDc3Yzg5MGNjMmQ5MTBlODVkNjQwIHB5M2sKKzg0NTc4IDljZWQ3ZjJmMjBiM2YxZDczYWM3M2MxOWRjMTkxMDU4ZTZmMmRkZmQgcHkzaworODQ1NzkgOTRlMWYyMzZjODhkNzc5M2Y2YmIxN2M0Y2M5ZTMyZjMwNTdkMzQyYiBweTNrCis4NDU4MCA2YmEyMGI5MDM5YWU2OTkwMjhmOTgyNDBmOTFhM2E0OGEwNjg2MTc4IHB5M2sKKzg0NTgxIGU4M2FmMTQxZGZmZGFhOGY1NWEyN2VjMTZjNDQwMjM5NmZhODU4YzMgcHkzaworODQ1ODIgMWExZTcyNTRkOTY1NTY3ZmE0ZDFlNmFjMWRlMTVkMjNmOGIxMTkwOCBweTNrCis4NDU4MyBlNGRlMjE3NmY5OGUzMGY0YzRlOGIwYWM3YjVjNDI1OWEwYmZmOGYwIHJlbGVhc2UyNy1tYWludAorODQ1ODQgNGFjOGFlN2U4MDIyYzQ0ZWNjZTcxZWI5MDFlMWRmMzA2OWExYWU2OSBweTNrCis4NDU4NSBhZGZhMWU0ODg3MzRlMmNjZTU3MmI4YzI1MTU0OGRkZTk5Yzg2MWE0IHJlbGVhc2UyNy1tYWludAorODQ1ODYgYzIxOTkxNzVhZGE4ZGU4MWYyY2UxZmFjYTViZGE2NWZjODkzMjFjMSByZWxlYXNlMzEtbWFpbnQKKzg0NTg3IDYwOTVlYTlkY2ZmNDAwOTUwMjBjZWQ4MzUyNjQ1OWFlODUzOGI2YzAgcHkzaworODQ1ODggMWMyMmMxZTQ1M2Q0YTFjY2U3ODUzODRjODM3OGRmMTBkMmUxYTI0NCBweTNrCis4NDU4OSA4NGMyNGRiMTM2NzdjNzQwMjEwYWYyYTQ2YzgzMzc0ZTFiNWE4YThmIHB5M2sKKzg0NTkwIDNlNWE4OTM3NmRmNTQ0MDRmY2Y1MWYwOTQ1OWIwNTRjMDRkMjU0ZWEgcmVsZWFzZTMxLW1haW50Cis4NDU5MSA3NDMyZTUwOGViNjZhOWUwYzhhZGM0NDY2ZTVhMDI1YTc4ZjdjYzg3IHJlbGVhc2UyNy1tYWludAorODQ1OTIgNGEzZGRiODYyYTcyY2FmZGY1YWE4MzFiMGU1ZTBmZjE4ZjgxMThkNSBweTNrCis4NDU5MyA1ZGQxZTU5NGQ5MTk1ZWI1MTI5MDg1MWEwMWEzYThkMTc5MDE4MTFkIHJlbGVhc2UzMS1tYWludAorODQ1OTQgNGI2OGQ0NzM0OGE0ZGFiNzg1NDU2MjI5MDg3YTA2NjI0Nzc5YzRhNiByZWxlYXNlMjctbWFpbnQKKzg0NTk1IDc3MGMzZWMwNTY4NTZiNDQ4NGJiMzQ2Mjc4MjM5NGU0MmQzYzNhNTAgcHkzaworODQ1OTYgODlmZTUxNzlhZWM1ZjAwYzU4MmY5OTE5MzlhYTAxNDkxZmRmZDc0ZSBweTNrCis4NDU5NyA5MWM3ZjQ0ZTRiZWE5ZGNhZmExODNhNDJlYmNkNjAzYjAzMjhlZWNjIHB5M2sKKzg0NTk4IGIyZjdjZjljNjc3NjM1OWYyNzUxNjBmYWQxNTNkNTg4ZTIxNzMxN2YgcHkzaworODQ1OTkgNjNjZWVmMDQ1M2Y0MDZhYmQyMGY5YzRmNWYyMjE5YzdlYjM4NDJiNSBweTNrCis4NDYwMCAyNDAwZjU1ZWEzMTI1MzA4ODg4ODVlMGNmOGNmODljMDIwMjVmYTYyIHJlbGVhc2UzMS1tYWludAorODQ2MDEgNWQ3M2IwMzY1NzNiNzg3ZjUwMjAxNTZhNmRkMDM1ZmE1NjgyODRlZSBweTNrCis4NDYwMiBkNmQ0Yjg0NjRiOGNmNmViMTAyODRkZTE1YWY5YmJjMDEzNmMxMjZjIHB5M2sKKzg0NjAzIGFmNDE0YjI5ZDQ2Nzg3MTNjMjRmOTNkYmIxYWE5N2Y5ODc4ODM1MWEgcmVsZWFzZTI3LW1haW50Cis4NDYwNCBlZjBhMDdkNTRkYzE3ZDMwYjg0OTUwNjIxNmQ0NDJkMjFmZmFlMWI2IHB5M2sKKzg0NjA1IDRjNjRlNjg4ZjY2NWVmZDYyNTA0NzExNGY4NzY0NzA0NzNkOTA1NDEgcmVsZWFzZTMxLW1haW50Cis4NDYwNiBkMDA4ZjQwNmRjOThjOWQxYzNiN2RkZDRkNjUxYzY5ZTUxNGM2NjY4IHJlbGVhc2UyNy1tYWludAorODQ2MDcgYzJkNmYwY2Y5MjZhMmYzZTNmYTAwYTE2NjEyZDk5MGQzZTFhNWI1ZCBweTNrCis4NDYwOCA5NjBkZTAxMDA4MWI3NjMxMDNhOTU3NGFkMGEwMmRiODhkODAwNTk5IHB5M2sKKzg0NjA5IDM4NGFlZTYyNzNlODA1YjY5NmYwMzNhNWVmZWRkNDJkNjljODVmM2QgcmVsZWFzZTMxLW1haW50Cis4NDYxMCAwM2E2Zjc4MzlkNmQzNTMyZmVlNmJjMzgxMzExNjYxMjNhN2YyZWI4IHJlbGVhc2UyNy1tYWludAorODQ2MTEgNTU4ZjMzOGUxMzIwODExNzdlYzZiMGJlMzVhOTc2N2M0MjkyN2FhYyBweTNrCis4NDYxMiBlMDYyM2I2YjQzYjYzN2EzMjEwNWMyOTJmOGQyNGFmZGU5YzhmNjllIHJlbGVhc2UzMS1tYWludAorODQ2MTMgYmFmMWE0ODJiNTdkNzY2ZjdjNWU2NTc5NTE1NjU0NTk0YTExNGIwNyByZWxlYXNlMjctbWFpbnQKKzg0NjE0IDg5MjNlMTQ5M2EzNDQ5MzZlY2I3YThjOTczMDczZGYzNTRmOGQ1MTIgcHkzaworODQ2MTUgZDI3ZDRiZDQ4OGRjODM5NDY0ZWUwYzUyZTAyNGU2YjhlYTFlNDU1NCByZWxlYXNlMzEtbWFpbnQKKzg0NjE2IDBmZGE4MmIxYmZiYmM1MzhkYTY2OTliZTVjYzQyZDE3YzdhY2NmNGUgcmVsZWFzZTI3LW1haW50Cis4NDYxNyBkNTMzMTcxMmI1MDlkNTdmNDI1ZTFhMGQ3NDA0YzkxNzU0YzU5ZTAwIHB5M2sKKzg0NjE5IDc5YTE0ZDM2ODU0MDFjMzUxOWQ4OTE4NWFkY2VhNmZiMDc2Y2NhNWYgcHkzaworODQ2MjAgZTNlZGQyZjliYjZhYzMwNmMxNjRiMWMwMzU3OGQ0YWU2MjBlMTA4ZiBweTNrCis4NDYyMSBlNjBlZjE3NTYxZGNlYzQyNmIyMjFlYTJiMjJjMDkyY2MxZjNlMTJiIHJlbGVhc2UyNy1tYWludAorODQ2MjIgYTBiNGIyZGZkOWQ1YTgxM2NjNDUwOWM3NDAyMWMyZTNkMWVjMjE0ZiByZWxlYXNlMjctbWFpbnQKKzg0NjIzIDg1MTY3MjQ5OGZlNTM0ZGI2ZTY1NTdiZjExOTVhMTYzNjBiYWM4MGQgcHkzaworODQ2MjQgYzQ3ZmYzYTUzYTRhNTFhYWUwMDZmM2E3YWIyNmYzZWY4YjFkYmE2NyByZWxlYXNlMzEtbWFpbnQKKzg0NjI1IDU3NTg0NDQyN2E5NWNmYzE0MTRmZjAwNDZkYTg0OWFkNjczMjRjODYgcmVsZWFzZTI3LW1haW50Cis4NDYyNiBhYTY2ZGY3NzJlMjM3ODQ3YTMzOWUxYTNlZGU0NmY5MTViYTg0YWI0IHJlbGVhc2UyNy1tYWludAorODQ2MjcgZjhmNjZlYmNkNWIxZWI3MWEzYzgyYWZiMWVhYjY5OTFlYWM1YzcwZCByZWxlYXNlMjctbWFpbnQKKzg0NjI4IGRjNTk4NmQwZTVhNDQzMTZjMjcyYzc4M2FkMWEzYWI0Y2FlY2RmMzAgcmVsZWFzZTMxLW1haW50Cis4NDYyOSBhNGNmZDViNWRmOTY2OTc1MzFjOWU4NTM4ZjhmZWI2NjcwYjI4NDI1IHB5M2sKKzg0NjMwIDQ1YjIzZjNmN2Y2YjllY2NkNDRlZDIzOTU5ODZlZTBmZDQ4NzNjYTIgcmVsZWFzZTMxLW1haW50Cis4NDYzMSAyOTdmNjZjYjM3NjQ0YTQ1MjcwODc0OWE0MDM2NjJhZDhkNzgwZTFiIHB5M2sKKzg0NjMyIGIxODY1Y2E3YjY1YzE0NmNlMGZjNWEyYmU0ZTFhMmJjM2Q5MmUzNTcgcHkzaworODQ2MzMgN2MyZWI1YjZjYzU4YzY0YmJlMDcxMTZkOGY5ODVlMmQ2OWE3YmUzMSBweTNrCis4NDYzNCA4NjI3YzNlYzk3MTEyNmY0MDk0NzkxYmU4ZDUzZjBkNjUxY2E4NzUzIHB5M2sKKzg0NjM1IGEyYWVkZGMxOWI2NmI1YzM4ZTUyMTlhYzMxYjZlNmU5ZTEyN2I4ZDEgcHkzaworODQ2MzYgYjFjZjNmN2YzMDRjZjA4NGRmNGUxOTllMDIyY2Y3ZGQ3YTNhNTA5OCBweTNrCis4NDYzNyAxMzIyMjY2Zjk2MTE1YWQ1MjdjMDRlZTYxMTBhMWZiYTViZjNjNzAxIHJlbGVhc2UyNy1tYWludAorODQ2MzggNDQxZTk0Y2U0MDg3MTZmYWQ2NzVkZDAyYTE1YWMzZmI0ODliNDFkMCBweTNrCis4NDYzOSBjYWYwYjRiMDU2OWVhZDA3MjI3YjYxNDIwN2YyY2I4ZDI1ODQ5ODFhIHB5M2sKKzg0NjQwIGE1OGJmNjY3MjVmODZmMGMwZjg4NGRiZGFjYjI3MTdkNWVhZmExZmMgcHkzaworODQ2NDEgZjhjODk2YWQ3ODdmOGQwOGIzNzI1ZTY0YjcxYWViMDA1MjZiOWZkOCBweTNrCis4NDY0MiAyYzU0NzIxMGY4YzlmOTJhZTFmYWRiNzI3MGM3N2IxNmVjMWMyNDhhIHB5M2sKKzg0NjQzIDQ2MmUwYmUzYjZjNDZmNmY3ZmU2YjkwYWU5MTEyNTcxMmQzNzhjYjIgcHkzaworODQ2NDQgYzg4NTUwY2EwZmFmYjY0YWU1OTljYWQwNjQwNTNhOGU2Y2Y1OGY0ZCBweTNrCis4NDY0NSA2MzYxOWI0MjVlY2FhMzkxNGZmYTZjZTlkMzljYjBlZTcxZmNjMjE5IHB5M2sKKzg0NjQ2IGZlYTg2YzVlMzM4NTg5MGE1M2UzNDBhMTcwZDVhMWY4NDlmMGQ3MTYgcHkzaworODQ2NDcgNzFiMjY0ZTFiYjcxNjQ0Nzc5MTFiMThjNWQ1ZTZjNjU4ZmRmMGU4YiBweTNrCis4NDY0OCA5NjU5ZThjNDAwNzliMjlmMjZlNWJkZDQyYjc0ZTIxOGRiZGU3YTFiIHB5M2sKKzg0NjQ5IGJhNTQwOTZiN2E0Mjg5MGVmYWI5YjkxOWNiZDBiNzY3NjYwNDEwYjggcHkzaworODQ2NTAgMzhjYTYzNTE4MDg1ZjU3NGU0MDEzMjA0Y2Q1MjgzNDE3ODQ2MDg2NyBweTNrCis4NDY1MSBhNTFmNDY3ZjVlMWU4MGIwMGE1OTQzYjQzNTY3NjY3YjgzMzE3ZGRkIHJlbGVhc2UzMS1tYWludAorODQ2NTIgZDEzYzJmOTBjMTY5YWE3NmEyZjA2NzQ0Nzk3Y2NkOTlhOTQ0ODI4NyByZWxlYXNlMjctbWFpbnQKKzg0NjUzIDAyN2Y4MTU3OWI0YTBhYzAxZjU2MmU1ZGE2NzI1N2MxNGFhODI1NzggcHkzaworODQ2NTQgZDQ5MjcxNTRiNzdiOGYyMzYxMGRmMTllMTQxNmNiYWI2OTkzNjg1NiByZWxlYXNlMzEtbWFpbnQKKzg0NjU1IGZjNzZlOGM2MTdkYzQ3Yzc3OWQwYzM5NDk3OGIyOGFiMWUyNTMyZjIgcHkzaworODQ2NTYgYWU0NzA3OTQ5Y2IyNDYwOTFmYmI2MmU2MTkwNDgzZDYyMjVlNmYyYiByZWxlYXNlMzEtbWFpbnQKKzg0NjU3IDFiN2VhNDNlNWM3OTY3YjU1MzZlNGNlMzdjZWMwOWFhNTQ2YjU2YjkgcHkzaworODQ2NTggNmYxNGYwMjM1OWU4MGFiMzhmY2QyNzQ1ZGJjMjdhZDE2YTQwYTE1NSBweTNrCis4NDY1OSA4NDIxN2IyZDhjMGMwNmNkNjk4ZmE2MGM1MjZlZTQ0Mjg3ZmQ5ZjJlIHB5M2sKKzg0NjYwIGJlZTY4M2NhZTcxZmM3OWRlOTBmOGI2ODZlNDY2ZGVhZjc0NzEwYTEgcmVsZWFzZTMxLW1haW50Cis4NDY2MSBmMTIwN2Q5YTliMDdjMTM2Y2M5MTIyYzMxZDgyMTJhN2MzZDcwMGMyIHJlbGVhc2UyNy1tYWludAorODQ2NjIgMmRhNWVjZDIyNGZmZTdmZTc0OWNjN2FmM2MwZjQ2MjliOTVlMGU2ZSByZWxlYXNlMjctbWFpbnQKKzg0NjYzIDVhYmFjZDM1MTQ4NTFkYTI3NGExZGE3YWNlZThhNWI3MTJiMTdjYmEgcmVsZWFzZTI3LW1haW50Cis4NDY2NCBiMzA0MzM2ZTBlMzViNDc4ZDUwZDljMTdhYmI2YmRlMzRiYjVkZTU1IHB5M2sKKzg0NjY1IGVkZDA1NmM0YTQwZDIyMjU2MGQ2OTEyMmVkNzFkYTg1YWZiYmE1NWQgcmVsZWFzZTI3LW1haW50Cis4NDY2NiBiOGU1MTI1ZTZmYmQ3MzZiMTQzOTEzOWVhNDEwM2VlNmQ0YzQ3NjgzIHB5M2sKKzg0NjY3IDQ1N2FhOGRhNDkwYTg3N2ZlYWMwNTJhZjA0NDM2ZDQ3MTAwNGQ2MjcgcmVsZWFzZTI3LW1haW50Cis4NDY2OCBjMjBkZTk2YTQzNWFjNjA5NTA0ZTIyNzk5ZTA2ZWE5NTZkNmIxNDI3IHJlbGVhc2UzMS1tYWludAorODQ2NjkgOWZhYTgwZDAxMTFmMWYzMmVlYjQ3M2RhOWU1ZDUxZWIyMjlkMjFmZCBweTNrCis4NDY3MCBiMzE0YWRjOWJjZGVlYWRkMDFlYTMzMGIwYWMzN2JmMjk3Zjg4YzUzIHJlbGVhc2UzMS1tYWludAorODQ2NzEgMmVlYTg5ZDA5M2UyMTQyMTA4YWFiMDc0MGYzMDc1MGFkNDU4ODBlZSBweTNrCis4NDY3MiBjNjY2OWY0YmY4YzU0ZWRjNTUzY2NiY2MzMTdjNjhkMGFlMzhhOTBhIHB5M2sKKzg0NjczIGQwZjlhZmNiMDYxOWVlYjA4ZTI3NWQ1NGJmODA1MzgyOGY2NmMwMzEgcHkzaworODQ2NzQgMzc4ZTE1N2FjMDI1ZmM5OWFlZWE5NGI2MzMyNDg5ZDVhYjVlZDk5NyBweTNrCis4NDY3NSBiNDNkNjNiZjBmNzhmMTA0NTQzYTY4ZjI5ODkxZGRhM2Y3Yjg0ZTM4IHJlbGVhc2UzMS1tYWludAorODQ2NzYgMjFhZTQwNDZlNDcxMDFkOTJjNjNhZGJmOGM0N2VhNjViMTljYzE5OCByZWxlYXNlMjctbWFpbnQKKzg0Njc3IDdlMmNlYjVkMjhlMzM5MzJmZTIxNTU2NzA4ODUwZTYxN2Y0NTdmMTcgcHkzaworODQ2NzggMzkwYWNmNTEzNGU5NGFhNGMyMmJkNmMzODM3OWQyMTVmZTU3ZThlOCByZWxlYXNlMzEtbWFpbnQKKzg0Njc5IDVjNGJlNjNjYWI0YTIyZTE5MDQ4ZjVmOGMzZWEyMTg0YzJlMzA5MTggcHkzaworODQ2ODAgOTMzOTczOGY4NTA0Zjg4MzcyMDlmZDJkNTY5N2IyMzc2NGM0NTJlMiBweTNrCis4NDY4MSAxNmE0MmQ1ZjIyMDljM2NhMTM5ZWI4NGUyN2EwYzMwNGY2MzBhZTY3IHB5M2sKKzg0NjgyIDlmMGQ2OWNhZWQzYjJkZTE2ODU4ZmMwOGZjNTg3N2Q3NmQ4MjcwZDggcmVsZWFzZTMxLW1haW50Cis4NDY4MyBlMjcwMzBlMGNjZWRhOGU4ODc5OTg3Yjg5Mzk3YTY1YjI2NDYwNjM4IHJlbGVhc2UyNy1tYWludAorODQ2ODQgY2FlY2I2ZWJjODNjMmE1NmEwZmM4YWMwYmQ1Njk0N2IyMzBkMDA5ZCBweTNrCis4NDY4NSAyNWNjMjI2ZGM5YmQ0YWIwZTI0ZTQ4MjQ2YWQ3MzlmZjAyYzQ4MjIxIHB5M2sKKzg0Njg2IDI1Mjg5NWQ0OTE1NzBkNWEyNzQ1MjgwOWI1ODI3MTdiZTQwOWIyNGQgcHkzaworODQ2ODcgOTk5ZDdkMjEyZjE3OTJlMDRjZGYzYThmYzY5YjExODI1NjM2NTEzZiBweTNrCis4NDY4OCA1ODMwNzlkZTM3ZTEzOTBhODIzOGQzMTQ1MTZkMmU2YjUzMGU1NDY1IHB5M2sKKzg0Njg5IDkyNjU3NTJhMWM4M2Q5YTUxOWQxYjEyMDg5Mzg0N2VjZjVlNmM0MWMgcHkzaworODQ2OTAgZTgyN2I5YjhhN2I0YTVlZWEyY2NiYWNiZTBkYTBkYWFhNTAxZDU3YSBweTNrCis4NDY5MSAxMTY3ZTM5M2FhNGQ2YTRlZTBhYTM4Yzc2M2M4YTY5OTkwMzEwZDI0IHJlbGVhc2UyNy1tYWludAorODQ2OTIgNmFjY2MyYzY1Y2I4NDc4MDFlYjdkYzI0NzEwZWQzOWQwYTg3MmNhOCBweTNrCis4NDY5MyA1Njg0NGI3MTZjZDc1NjBhYzEwMDJmZDcwYzE2MTJlNjM0Yzc2YjRkIHB5M2sKKzg0Njk0IDU4NmE0MTFjYWM3YzcwZjg4ODZjOGM3NTBjY2Y5YmIyNzQxMjBjOGIgcHkzaworODQ2OTUgNDcwYTUzNjA1NzBjYzAxZTdlNTllZTQyZDJiM2Q5NThhODYwMGE2ZiBweTNrCis4NDY5NiBhNjA4ZmUxZTg2ZjAwODIyNDQ3YTBkYjU0ZjUzMTM5ODIwNDMwNmJkIHB5M2sKKzg0Njk3IGYzMWUwYzdjMDJlMzMzZDc5MjBlMjMzYTY4NjZmODI5OWY0YTAwYjMgcHkzaworODQ2OTggZTA4MGYxMWZjYTE5YjBkZDIwZmE5ZDA3ODRiZTFkZmI0YzZiMTRiMiBweTNrCis4NDY5OSAxNzY0Nzk2ZTllY2EyZDM1NWU0ZGY3YzBjY2QzMmE2ZDU4NDkyMTk1IHB5M2sKKzg0NzAwIGZlNDdlYTg5NzJlYmU2YmEzZjg4YjYyNTZhYzkxZDc5YTVkNTczYjAgcHkzaworODQ3MDEgODg3ZWYzOTk3NmQzOWRkODVhZmQ4NDExMjFkMjI1ZWRiMmUyNjM4YSBweTNrCis4NDcwMiBlZmM5OWEyMDdiYmU3ZDJkNjI4ZWI2NjYyMzZiMWNiZmFhNjU5MzdkIHJlbGVhc2UzMS1tYWludAorODQ3MDMgMjBhMjE1M2IwZGRhODk1ZDRiMGE0YzFiYWRhMGRjNTRhNjUzZDVmYiBweTNrCis4NDcwNCAxY2ZhZDU1ZGU1YmQ2NjBhMmNjNzI5NmVkNjFlZGYzY2Q1NmYxMmU4IHB5M2sKKzg0NzA1IDVjOWMwNGMyOWIyYzBiZmE4Y2VhZTdiZDM3M2YyM2I0MjRkYzZlMTQgcHkzaworODQ3MDYgZWM5MmE5ZmQ3NzgwNmYwYTc5MTNiZTcwOTM4NmJkZDQ0ZjQyNzliZSBweTNrCis4NDcwNyBmNzJmZDJjZGEzNDQyZjU5NTA0MmM0NGE0MDdmMGVmNzI3NmI5NjcxIHB5M2sKKzg0NzA4IGNiOTEzMDdmNzA3MmViYWM5NGU2YWJlMTk5MTg2NzAwYWU4M2ZhZTMgcmVsZWFzZTI3LW1haW50Cis4NDcwOSBlMGE3YjY5Njg1NWY0MGM5NDkzMmU5ODdjYTU0NTE2YzY4YmM3MjJiIHJlbGVhc2UyNy1tYWludAorODQ3MDkgNTIxZWI3ZmVlNjdhNzgxY2FiNWVkMWY1MzhkY2FjOTdiYTU3OTRkMiBweTNrCis4NDcxMCAxYmU4NzRjZTRlYWVmMzA0NDI0Y2U4ZWNmMzhhOWQ5NzZiMmZkYWRiIHB5M2sKKzg0NzExIDdjZjNiZjAxNTBhNGQ1YzYwMjRjYzcwNDZkMzc3ZDBkNWUyYThlNTYgcHkzaworODQ3MTIgMDA0MjUyMDljNDZlZTI1NTdhNzZhZmI4ZWJjZDBkNmMzNjQ5ZDZkMCByZWxlYXNlMzEtbWFpbnQKKzg0NzEzIDZlYjRhZmJlNzdlODU0ODBjMzcxMDg0ZjFmYjI4N2E3OTdkNDhlZWEgcmVsZWFzZTI3LW1haW50Cis4NDcxNCBkOTA1Yzk0ZjlhZTFkMWFlZGM2MjczNDE2MTVmMWVmZjlhOTA3NGE0IHB5M2sKKzg0NzE1IDhmODFlZDhhY2JiMDI0NDRlYTc0MWE2NjVlNjQ4YTQzZmNhOGI0NDggcmVsZWFzZTMxLW1haW50Cis4NDcxNiA2MDFhMGRlZmQxNWJiMmI5OTJhZjE0MTBmNWNjN2EzMWRmZmQwMDAzIHJlbGVhc2UzMS1tYWludAorODQ3MTcgN2M4ZjM0NTlkOWFmOGE3NmMzMjE2NDc2YmVlYjg2MzA1MDY5NDZmNyBweTNrCis4NDcxOCAxN2E4ZjcwNGYwN2Q4OTQyYjU3YjUyYWQyNTUyNjAxNTZmZTQwY2I3IHJlbGVhc2UzMS1tYWludAorODQ3MTkgZmQ2NzM3YWE4OGRjNDZkZmEzY2U3OWE0MzY0YTczNTFlNjdjYjc0MiBweTNrCis4NDcyMCA1MzM4NThhMjk4OWEyZmI4ZDdkNjhhMDFhMDM4MzhlZTAzNWExMjMyIHJlbGVhc2UzMS1tYWludAorODQ3MjEgYzRlNzIzM2Y1NDhkYmRlOGZlYjY2NzNlYTQzOTU5OWMzOTNlMmJmZiByZWxlYXNlMjctbWFpbnQKKzg0NzIyIGIwMDcwMDFmY2E3MTBjNWMwNjBlZTEzM2FhZThjY2U0Y2I4OTA0M2YgcmVsZWFzZTI3LW1haW50Cis4NDcyMyBhMzUxMDg2MTA1YzUzY2UxNDMzZjY2ZDQ3YmQ5MDNlNWY3MjY0NmUwIHJlbGVhc2UzMS1tYWludAorODQ3MjQgNWYzYTY0NTY0YzUxYTEyODYxYjBhZTFmMWRmZWI0MTQ4OGYzNjE5MyBweTNrCis4NDcyNSA1NjcxNGU5YzYzZWZiODRjOWM1NzJkZWU5NDU2MGJhMTM4MmFlZDUzIHJlbGVhc2UyNy1tYWludAorODQ3MjYgYzM1YjQyYThkYTNmYjg2ZDg3MjE0ODIwNGY1ZGE0NGU1MjdlOTYyMyBweTNrCis4NDcyNyBmM2IxZWVhMTFjZTE5NWJiMzdjMTk0NmUxZDlkNmZhMjIxMDZlYWJiIHB5M2sKKzg0NzI4IGY0MzIwZTEyNGIxZmIxZmI3MDVlOGIxM2UxYzQzN2YwZDg2Y2M0MjggcHkzaworODQ3MjkgYjBjOWE4MmUwZWM1YTMzN2VhNjRmMDI5YjJhZDM3MjFiMzgxZjBiZCByZWxlYXNlMzEtbWFpbnQKKzg0NzMwIDg1MmJiMDUyMTU2YTgxMDljODFiNTEwZTAyZmIyOTk0NzBjZTIwYzMgcHkzaworODQ3MzEgZWQ0M2ViZGEzNWYyZTVkZjM5ODY0ZGMzOTViN2NmMzhhMmY3YTJjZiBweTNrCis4NDczMiA2MzkzOWFmYWY5ODRiNGE3OTBjZmVkNGM1MDdlYzM4MDdhMDRlY2I3IHJlbGVhc2UzMS1tYWludAorODQ3MzMgZWY2ZjAzOTcxZmIzNDg3MGNkMTljMDI1NzljOWNkMDQ5MTllMjA4NSByZWxlYXNlMzEtbWFpbnQKKzg0NzM1IDM4MDhlMzc5ZmMzY2U5M2E3Nzg2OTRmYTkzYjI4YjFkYmJjNDQ1ZmEgcHkzaworODQ3MzYgMzc3NGY0ZGVmNzU0ZjFmOGE2YjVhOWFkOTMxMDI5Nzg1ZjE1YzcyZiByZWxlYXNlMzEtbWFpbnQKKzg0NzM3IGZiOTBmMmZmMTc2NGI5Y2U4MjY5OTZlZWE4ZDZhOWQ5ZWE3MTYyYTQgcHkzaworODQ3MzggNjdlZDZkNGY3MGIxYTY2ZmI5MjZmYWFhZDZhN2JiMjVmOGIwYjA2MyByZWxlYXNlMzEtbWFpbnQKKzg0NzM5IDdhYzBlNjA3YzRkNjYyYTNiZDY0N2M1Mjc3M2VjMzdjMGYzNDg0MTggcmVsZWFzZTI3LW1haW50Cis4NDc0MCBkMmU1ODE5ODkzM2JlNDhiZjFiOWZkMWJhZTgxODMxMTZkYjI1NzU4IHJlbGVhc2UyNy1tYWludAorODQ3NDEgODg2OWIxYjg1NDM0OGM0MDk2ZmNlYWRjZTM4NzdlNzM5NDQ4OWFiZiBweTNrCis4NDc0MiA2M2JkYTc4OWQ3M2I2M2Y3YWE4M2U3MzZlMjM0MDhmNzkxYTZmNTVjIHJlbGVhc2UzMS1tYWludAorODQ3NDMgZmE5NTEwYzc5NjQ4MWEwZDk0NjU4OTg3ZDM0ODE5NzM0Y2Y1NGNiMSBweTNrCis4NDc0NCBiN2UyNDRmMzRjYzgwZDAzYjc1MWE2NzI1NTFhODQxYzJkODJmZTg3IHB5M2sKKzg0NzQ1IDc2YjhkYWRhMDZjYmU2YTkzMjUwMGI4NjQ5NjY3MDNkMmJlMDg0MDYgcmVsZWFzZTMxLW1haW50Cis4NDc0NiA0YjljODUyNmVhNGNiNzBjZTQ4MDgwOGYyYTYzYmM1MzQ2MGFjZTk2IHJlbGVhc2UyNy1tYWludAorODQ3NDcgNmQyODJiNThkOTBhYTJmZDM2YTgxMzA5ODY1NThkNjcyOTlkNGU3YyBweTNrCis4NDc0OCAyYmI0ZGQyYWQ1YjUwNzA3YThhOWUxNDIxZTMyMmU0NjJlYjhmNThjIHB5M2sKKzg0NzQ5IDdhYjU5MjMzZTgzZjY5YjViMzcxZmY3MTE4ODkxNjIwOWNlOTViYTIgcHkzaworODQ3NTAgOTIxMDI5NTA3YWQ3ZDQ0YzQ3NTljOTA2MGJmOWYzZTNkNWMwM2ZiYyBweTNrCis4NDc1MSBjMWI3MDkwNzZiZjYzYTFkMWI3NTIyMjlhNjc5NTE1YTdiODU5NDdjIHB5M2sKKzg0NzUyIDljZGJhNjg2NGViNjBjYTJhNTkzNDQ5MWQxOTVjOTU5OGQ5NzE2NTkgcHkzaworODQ3NTMgYTNlZTg3N2ZlZDg5YjVlZDM3Y2NiOThkMzBjODVkMWVlZDExMGY1MSBweTNrCis4NDc1NCBiMTg2YWZhMzcwZTZkMTA1NWU1MWNmYmRjMjE0NmUyNTNiNjQ2N2QxIHB5M2sKKzg0NzU1IGNmYTExOWMzZTQzY2ZlODcyZGQ1NTNkNTA1MzhiYTUyMDUyOTU1NDAgcHkzaworODQ3NTYgZWU5NjdmMWM3MzFiN2QwMzZmZjA0MzE1ZDA1MDJjYmY4ODYxNTAyNCBweTNrCis4NDc1NyAwZGU4MTY0NzU1M2JhMDRhYjcxNDE3MzZlNGFmMzE3NTIwYzkxZTQ4IHJlbGVhc2UyNy1tYWludAorODQ3NTggOTA2NGZjNTdkM2ZhOTA3ZDExMDFmZjYxMzFiYmE1MDQ5YWFkZWM2YiByZWxlYXNlMzEtbWFpbnQKKzg0NzU5IDFlODliNWVlMDJmODVlZjliMjcwOGNhNDQ2YTlhMTY0MTg1NjY2MDYgcHkzaworODQ3NjAgNTg0YjFlZGExMTQxNDc2M2IwYWZhZDBiNWFiMzgyOTVjMzY2YzkzMCBweTNrCis4NDc2MSAzMTRkNDE2ZjRkMjNlMjhjNjU2ZGQ1NzcwMWU5OTQzMjZhNmI1NTBiIHJlbGVhc2UzMS1tYWludAorODQ3NjIgYjFlNzY2Yzc5YTM2Nzc0OWM5YmUzZWFmYjcyMWNlZDU1Mjg2MmRiOSBweTNrCis4NDc2MyBhZGQ2NjQ5MjRhZTk5MTFjMDRkN2YxZmMzOTU0OGM3YzNlMWFmNjQ2IHB5M2sKKzg0NzY0IGIwZDI2ZThkOGEzMzBhYTU2NDIwMzdiYjE4OWE1NzRkZTJjNWNhYmEgcmVsZWFzZTI3LW1haW50Cis4NDc2NSAyZjgzNzA1MzhmZmJiMTdjM2FjYWQ5ZTY0Y2RiZDEwZWFlYTgzY2M1IHB5M2sKKzg0NzY2IDI4ZTZhNDFjNWJhMGIwNDJkYzhmZGI5MDk4NjNkYTU2ODcyYmJhNjMgcmVsZWFzZTI3LW1haW50Cis4NDc2NyA4MmRiODBiNjBiODdiYmFiZjNhZGY1ODdhZTQ2NThkZDc2MjEzMWI2IHJlbGVhc2UzMS1tYWludAorODQ3NjggZDBmYzM1Nzg3NDY3NDY5NDMyYzQxZWQ3MmI4MjdjZDc3N2M5NjU5ZSByZWxlYXNlMjctbWFpbnQKKzg0NzY5IDFlOTIyZDcxY2U0YmY2YTE4OTczZjUzMzdmODZjMzRlZjc1OGFmMWQgcmVsZWFzZTMxLW1haW50Cis4NDc3MCBiYmE4ZmE4OGQxOWEyMWI5MzgyOWY1ZWRjM2ExOTYxNjU4NjdjODc0IHJlbGVhc2UyNy1tYWludAorODQ3NzEgYTU5YWU5Mzg5MTMxOTM2NTgwNmFjMDljNWM0NzE4YmMxOGUwMWIyMyByZWxlYXNlMjctbWFpbnQKKzg0NzcyIDI3NGEwYmY0Njg3MWVmM2E1OTFmMmI5M2EzMTNlZmM4MjA2OWRkM2IgcmVsZWFzZTI3LW1haW50Cis4NDc3MyA0NDE5OWFhODkzMmI3ZDE0ZDAzYTBlMDMxOGE5YjgwNWE5MGRiYmQyIHJlbGVhc2UyNy1tYWludAorODQ3NzQgNTU3ZTI1MzdjOWFlMjM1MzhkOWRkYjRlYTFlYjQ5YmRjNDU5ZGZlOCBweTNrCis4NDc3NiAzMzBkNzlmY2IzZDNkNTg2MjhmOGNlYWIzNTU4MTUzYzk2NTRhNGFkIHB5M2sKKzg0Nzc3IDBmM2I4ZjkyOGVjMTNkOGY5MWVjNDkwZTViNTI0ZmU5MGJhN2ZhYWMgcmVsZWFzZTI3LW1haW50Cis4NDc3OCAzZDIyZWU2NWU0MDc1YTliMzZiMzcxYzJhNDM4MTUzMzFlNDViNDY4IHJlbGVhc2UyNy1tYWludAorODQ3NzkgMmFkOGQ3Y2JjZWFiYjAxNzIwNTkxMjgyZjEzNTc3NWI0NWU1YmJlOCByZWxlYXNlMjctbWFpbnQKKzg0NzgwIGVhMTIxZjg3MzFhNzhiYjU1NWNhNDI1MGJhZWQ0ZWZkMGM4Y2YzZjMgcHkzaworODQ3ODEgNmZmMGVmMWZjYjNjZDk4ZTUxYjMzNTg3NGE4NjgyYWFlOGVhYTRkZiBweTNrCis4NDc4MiAyMDVmZjJiMDJjNzcxMjBlZTIwYjE3N2RjM2I3NjhiZTc0NjQ3ZjY4IHJlbGVhc2UyNy1tYWludAorODQ3ODMgN2RiZmM3ZWYzOWYyYjYzNmQzMGE4NzY0NTEzMTNkOTc3YzE4ZDgzOSByZWxlYXNlMzEtbWFpbnQKKzg0Nzg0IDU1NzM1NWU0NmJhNjE5ZGU1Mzc2MmY3NTMwZWJkNGVkN2Y5ZWE1Y2YgcHkzaworODQ3ODUgNzdjODljODlmNjBlMTEyMjg5ZmU3OWM0M2Q5N2JlZTI1N2JiYjllNSBweTNrCis4NDc4NiAyZDA4NGFkNDY4ZGJkMDBjOTg5MGNhODE0OTYwMjc3ZGY3ZTJlMzM5IHB5M2sKKzg0Nzg3IDgyMzRkMjZiMTNjMTllZjU2OWQwNDgxODE4YmMwZmQwOTUzZmM5NDQgcmVsZWFzZTI3LW1haW50Cis4NDc4OCA5MWEwMGI2YjEyOGJlZDBkMDRlYzgzZTc5NWZjYTJlMGIzNmZhNGQxIHB5M2sKKzg0Nzg5IGVhODQ4M2Y5ZTU1YWE2NjA5MzMyMGMyZjE0MjJhODY1NGNjMDE5ODcgcHkzaworODQ3OTAgOWY1NWZhYWEzMTkzYWNjNjcyNDJjMzIyZTljNjMzZTQ3ODdjNzZjNiBweTNrCis4NDc5MSBlMmRlYzljMGQxM2NmY2FiYzEwN2FjODRiYzQzZDhmY2M5MmIxMTM1IHB5M2sKKzg0NzkyIGNmYWYwZjdlZTBjMmM5MmVjMzEwN2JkMmJkZDYyNmNiNWUxNDdmMTggcHkzaworODQ3OTMgYTYwZGVlY2FjMjQyNGVmZDBhM2VkMDRiYzNhNTAzYzA5Yzk4OWQyMiByZWxlYXNlMjctbWFpbnQKKzg0Nzk0IDNhMjk2M2I2ZjQ0M2U4NTAxOTA4ZmM3MWNmMDA4MDNiYTQ1ODE5ODkgcHkzaworODQ3OTUgZmJlNWQwOGE5ODY2MTM5OWJmNjU3MWU5MmU4YmM5ZTY3N2E3ZWEzMCBweTNrCis4NDc5NiA2OWVkNWVjYjUwMjZhZGRjYjUyMjM3M2U3YWY1YWZiNmZjNmE2ZjFlIHB5M2sKKzg0Nzk3IDQ0ZTQzYmVkNjc0YTU0ZTU5MTM4NDE4ODExZTI0MTQ4MGE5ZWY2MTMgcHkzaworODQ3OTggZTVmMGZmN2Q3YTA2ZWU5MGIzYzZkYjk5M2E5ZGE1YWUxY2E4MmM4ZCBweTNrCis4NDc5OSA0YTRmYmUwMjI3YWE0OTUyNWZiYWEyYjVlM2Q1ZDA2NmVhYWYzN2IzIHB5M2sKKzg0ODAwIDJkOGU0MDg1OTM1MTJlY2MwZDVkMDE4NTBhODYxM2UyODdkNzQyZDggcmVsZWFzZTI3LW1haW50Cis4NDgwMSAyMGM0NWNkYWQ5Y2YxZThkNDFlNmM1YzkyMDc2YjhhYzUxMjFhZjhjIHJlbGVhc2UzMS1tYWludAorODQ4MDIgYjI3NGE5MGE4ZTJiZGZlMDlhMGEwMDU0M2M4YzM5ZDAzMGViMTM2YiByZWxlYXNlMjctbWFpbnQKKzg0ODAzIGE0MmRiOGY1NGJhMTcwNmQzMThhZDc2ZTViYmZlNzNjYTQyZTgxMWYgcHkzaworODQ4MDQgMTIzZjM1MTRiNDViNTI3YmYyNjIxMDc1NTcxZTQ3MzUyZGJiMTU3ZCByZWxlYXNlMzEtbWFpbnQKKzg0ODA1IGRiOWU2MmMyNjVmZjUwZTU5M2NiMmU0NjdjZGY2NTdkYzJiZWRlMWIgcmVsZWFzZTI3LW1haW50Cis4NDgwNiA3Zjk5YWM1MzAxNGE1NDI4MWY5OWJlZDFjOTJkZTJmNDcyMTU0ODFhIHJlbGVhc2UyNy1tYWludAorODQ4MDcgMGU5NmY5ZmE4NGEyNGE2OWY1YTFjYWE0YzgxMzRlZmZjYWZlMmU5MyBweTNrCis4NDgwOCBmZTVmOWNjNDA3NmViYjc5NmJlN2RhZmM5YzViZTQwOGE2ZTUwNTJhIHJlbGVhc2UyNy1tYWludAorODQ4MDkgODBkMWM3NzM0ZGYyNTdlNDdhOWM2MWJiODRhYTE4ODk0NDdkOWEzOCByZWxlYXNlMzEtbWFpbnQKKzg0ODEwIDBlMjlhZTUxZDliYzZhZTAzYTk3ZjI0NjEzNGZhY2YwN2NjMTg1NjkgcHkzaworODQ4MTEgOTA1ZWU5ZTNkYTZkZTA3MWE4MWQ1NzViY2E5NmI4YTU0OWU1N2M4ZSByZWxlYXNlMzEtbWFpbnQKKzg0ODEyIGVkZWQwY2FlZTYyMTMzMTAwMmU5YWU1OGJkYmZkZGQwMmM5YzdkNzkgcmVsZWFzZTI3LW1haW50Cis4NDgxMyA1MzQ4NTNiYThjZDM2YWI1ZjJjZWVjOGFjN2U4NjVlZDVhOTFmYWY4IHB5M2sKKzg0ODE0IDJiZjJhN2E0ZTE3ZDY0NTJiZTc0MDU2NjY5NmMyMDY3Y2IzMDk0ZjcgcHkzaworODQ4MTUgZDdhZTFiOWYxMGFiN2I2ODAzM2Q4ODc2ZThkNjI2YjUxMTYzZGU0MyByZWxlYXNlMzEtbWFpbnQKKzg0ODE2IDJiOWRlYTJhMmZmZmQ2MjkxMzE2YzRhZDhhMTlkZDk4NjQ4YWQ3MGIgcmVsZWFzZTI3LW1haW50Cis4NDgxNyAwNzFiZDhmMzUzNWFjMGRmY2ViNDA0YTI2MzgwZDQ5NzliZjEyOWQ4IHJlbGVhc2UzMS1tYWludAorODQ4MTggMzk3N2RjMzQ5YWU3OTQzMGEwN2I1ZTk2MDRkM2NmNWIxZTM3NjY0YiBweTNrCis4NDgxOSA5MTUxZDVmYWFlM2Q2YTg3MjRhNWI3NWJkNzIxNjViYjY1MzllZmVkIHB5M2sKKzg0ODIwIGI4MWU4ZTNmYTViYmU2NzZkYmRhMDg0ZmNlYzliYWEwZTA0ODNlOWQgcHkzaworODQ4MjEgZjY0M2Q1M2M1MWJkOGIxNzJjZWIxOTg4ZWJkOGE1MDc3NDBiYjE5YSBweTNrCis4NDgyMiBlNjMzZTNhNmIyNTU2OGZhMGVkYjM5NTQxMjc5ZWQzOWQ5M2IwYzBmIHB5M2sKKzg0ODIzIGI2OTUxYjA1MjE3YjIxYWFjNjg3NzBiM2NlM2Y2MmY3NmY0NTNiM2EgcHkzaworODQ4MjQgMzU4NDhhM2I3ZDhhNWFmYmQyYWQ4MjUwYmY4NjRjY2MzNGQ1NTJjYSByZWxlYXNlMzEtbWFpbnQKKzg0ODI1IDdlZjVjNmJlNzIzMjk3ZmY3NzI2ZGM0M2QyMDc0MmFjYTRhODEzODYgcHkzaworODQ4MjYgOWFmZmI0ZDZlOTdlMmQyZWFlZTNlNzVlMGY0MjU2NGQxNDVmMGEzNyBweTNrCis4NDgyNyBjNzc5ZGU2NDQwNWE5MDNkNDE4YWZjMzE3Y2E2NjcwZTNmMTc5YzZkIHB5M2sKKzg0ODI4IGQ4OGZkZjVjNWIzNzY0MmUxNGI5ZmQ4ZmMzODBjZTVkMzhlNDBlMmUgcHkzaworODQ4MjkgYmVkOTUwY2JkMGMwMWU1MzBkYjY5MWMwYzZiZjJiZjc4MDU4M2E0MCBweTNrCis4NDgzMCA1YjAxODdjMGQwMDI0ODEyY2RjMjBmM2NkZTg0Nzc3NmE5YTFiNWI4IHB5M2sKKzg0ODMxIGJjZTk3OTNmYjU0NTBlZDkxYjU1YWE0MWRkZmY3OWNjNWZlYTliZjIgcmVsZWFzZTI3LW1haW50Cis4NDgzMiBhOTdkMTJlNTQ2NWY3OTUyOTc0ZDRkMGVjODA5YmIwZTA1MjgxYmUzIHJlbGVhc2UzMS1tYWludAorODQ4MzMgNjFkZmM3OTY1N2Q3MzdkMmMwNzJjZWNjMGZhZTAyZDFkMjBhZTNmYyByZWxlYXNlMzEtbWFpbnQKKzg0ODM0IGMwZDMxNjc3NzNhOTczMjM4YmE2OGQ3OTlhMWEyMDYwNDE2MzIwYWMgcmVsZWFzZTI3LW1haW50Cis4NDgzNSBiZWI5ZDE3NjUwM2U0NjJhNDUzYmE3Zjk3ZWY5NzJjZTYzOWUxYWIzIHJlbGVhc2UyNy1tYWludAorODQ4MzYgYWQ2M2Y5NjY5MjNjNDEwMzQxNjNhYWJmMGFmYzgwYzcyNjY1ZjhkOCBweTNrCis4NDgzNyAzZWRjMjYzODBlNDk2YWIwZjNiODZhYmIyN2NiNWY2NTA0OGVhYWRhIHJlbGVhc2UzMS1tYWludAorODQ4MzggMWRlYmZmNDJlYTQ2ZDExM2VjMDBlMDJlMWNhNDAwNjQyOTFjYmE3MiBweTNrCis4NDgzOSBmMmVjMDExNWY4YjIwM2U1MWQ0NzgzNWMwYzkzYWUzYTMwZTc3NTZhIHB5M2sKKzg0ODQwIGExNmI2N2Q0ZjMwMzE2ZDEwY2JjNDEzMWY2YzNmZWFkMjg0YmY4NWEgcHkzaworODQ4NDEgYjU3NzRiMjdiM2RiZDlhZWQyZjg4MTQ4NzAyNWVmY2EzNDhkYzY5MCBweTNrCis4NDg0MyA5ODUwNzJjZDMxZDAzYjgyZmJjOGI1NDU5N2E3MWU4ZTU5MTYwZjIxIHB5M2sKKzg0ODQ0IGQ2NTdlOGE2MDEyNjY0OWNmOTUzNmMzNjJjNGRmZWM4NzM3MzVmMzQgcHkzaworODQ4NDYgZDE3NzFiNGNkMGNiYTgzMmFiN2ExNDQ3MzY2ODg1Mzg4Njc0ZTVjNyByZWxlYXNlMjctbWFpbnQKKzg0ODQ3IDFiZTk1MGRjYmIxYTVmODFhZWNmMmJiNGZlYTRjYTU4M2ExZGQ3MmMgcHkzaworODQ4NDggMjMyNDE2N2VjMDFkM2FhMjBmNjM1MzFlNWM0Mzk2ODk5ZGZkNWMyMCByZWxlYXNlMzEtbWFpbnQKKzg0ODQ5IDNmMDAwNDczNmQyODM5Y2E0NDY0NDBjNGIwZTRjMjdlNzdjYThmN2MgcHkzaworODQ4NTEgZmQ1YzRjZmVkN2NkMGMzYWRiMGIzN2E1YjYzZGJjMzQwOWJjNjcyMSBweTNrCis4NDg1MiBhMTc3ZGRkZTQ1ZDFiNzRhMTY3NzllYmVlNmRmNGVlMjIxNjBmZmQ0IHB5M2sKKzg0ODU2IDU3NjFmOGUzNTJlYzIxZmRkNmU3NjNkOGQwMmMwNmZmNTU4MzBkODcgcHkzaworODQ4NTcgNjg5YTgxM2Y0YWZjMGRkOWQ5NjZiZDA4NzNjNmZmZDRlNTBhMDVmYSBweTNrCis4NDg1OCBhODg2OWFmNWQ1ZDBjYTY3NTI2OWVmNTFlZjRiZTE5ZjFkNmRkOTI2IHJlbGVhc2UyNy1tYWludAorODQ4NTggODI1ODlhODg5ZTA3MGZmNzc3MTFjN2ZjZTY3YTcxZTAyNGVlMGVhMCBweTNrCis4NDg1OSBjNDM4Zjk2MzQ2ZTkwZjFhYmVkZjdiMzE0MWFiZDk3MWVkYTU4OTYzIHJlbGVhc2UyNy1tYWludAorODQ4NTkgZTNjM2MzMGYxNDA5ODA4OGE0ZDFmOThiZTVhYThiN2ZkMzljZDhhMSBweTNrCis4NDg2MCBmYTQ3YWY3M2E2OTFlMDA2YmY3MTA1ZDdlNjU0MTEzNTQ3ODI2MWMxIHJlbGVhc2UyNy1tYWludAorODQ4NjEgY2EzNTQyYWRlZTBkYWViYzJjYWQ2YTY0N2Y2OWJjZGUxODg2ZDA0MiBweTNrCis4NDg2MiBlMDY0MWRiZGM4ZjYyYTdlOWFiNjM3NTVlYTg0NzM2YjZjMTdiM2Y5IHJlbGVhc2UyNy1tYWludAorODQ4NjMgZTM5YWQ1ZGMxMWNmZTRkNzQwMDYzYjE5N2RhOTNhYzcyYzI4YTgxOCByZWxlYXNlMzEtbWFpbnQKKzg0ODY0IGRjNDIyZGFhNWRhZGQwYmZjNTQyODc4NDQyZGE1MWRkY2U3NzQ1YzAgcHkzaworODQ4NjUgYTQzMWM0OGFkNDJiMWExOTgzMWFhNWMxZDQ1YTRjODk5NmU0YTgxNyBweTNrCis4NDg2NiBmNzdjYjhkNzZlOTkxNTdhNDAyMDNhNDRkZWI2ZjUxYjI3ZGFkZDYyIHB5M2sKKzg0ODY3IGNkMmVmNzUyODczNjViNmU5YTU1NGNlMmNjZDZjZDkyNTE3NDhmZGMgcHkzaworODQ4NjggOTM4ZDg0MjU3ZDExMDI2MGRjYzEyNjY2NTZjYTgxZDdjMGM2YjQ5YyByZWxlYXNlMjctbWFpbnQKKzg0ODY5IGM4N2VkNmY1OGI4MzA5ODgxZjExNDIwMGU4N2UxYjVjZDI1ZjI5NzAgcHkzaworODQ4NzAgZGYzOWIwYmM0MTA2NzNiNTgxNjgyYzZlYzFlNDkzYjE3NmViMjc5OSBweTNrCis4NDg3MSAwMDY0OTBmMGU3MWZkNjZlYzUxZDNhNGQ0NGMyMWYzMTZkYmZhYmI4IHB5M2sKKzg0ODcyIDAxZGJiODI3NzE3ODg5NjI1ZmFhNTA3OGY2ODEyZTc3ZTljNjZiM2UgcmVsZWFzZTMxLW1haW50Cis4NDg3MyAxNTE4MTcxNzc1MTQ5YzdjYWRiMWM1MzMyYWMzNDVkYjQxODQxMjRhIHJlbGVhc2UyNy1tYWludAorODQ4NzQgZDA2MDQ3NGUwZTI0NTg1NjQxZGE0OGZmZmFlYzk5ZjZiYTFkZDM3ZiBweTNrCis4NDg3NSAyZjI4MDcyN2EzMDdmNmVkOTZjNzBjZjQ4NWVlNTYxNzYyYzE2ODk3IHB5M2sKKzg0ODc2IDI4NjdhZTkwMmZhMzE0NzM2NDY0M2ZiYWI4MGY1YTRiMmNiOGI1MDEgcHkzaworODQ4NzcgZDM5MDQwMGQ3MWY3Yjk2ZWMyMzFhNGMxZjgyNjgyODc2ZjZhMzYyYyByZWxlYXNlMjctbWFpbnQKKzg0ODc4IGI0OWFlZTM4Nzc5YmMwYTlkYjI2NzE1OGNkYzMzNGViZjk5MWU2MGQgcHkzaworODQ4NzkgNGFhMmEyMGFjMzM1YmYwNWE1YWQ1ZjVlMjllOGNkMzA4MGRlY2NkNSByZWxlYXNlMjctbWFpbnQKKzg0ODgwIDI5ZWFkNTRjMDVhZDg3N2FjMWFmODVhMTBkODRmOGFlOWUyOGUxM2EgcmVsZWFzZTMxLW1haW50Cis4NDg4MSAyZGMxZDE4N2VlMDRhZTNlZDNkMWRhZjc3NDlkMTYxOWY4YzQwMDkzIHJlbGVhc2UyNy1tYWludAorODQ4ODIgNDQ5ZDEwNGUxODM2MjczYWVhZTVkOGI3NjBjZTEzZWQ2ODVlNDJiNCBweTNrCis4NDg4MyA0OTgxY2YwYTljYTRjZjllMTc3ZTkzZTdhMjczYzZjODJhMDU2ZTA0IHB5M2sKKzg0ODg0IDc3NDI1ZjJkN2Q3NjU5NzU3NjQ5MDgzMzgxNTg5ZjUxMTMxYThhNmUgcmVsZWFzZTMxLW1haW50Cis4NDg4NSAwNGI0NWQ0NTEwNTlmNTBmMWVmYWYzMDNmNmQ5ODdkNzM1MjhiNjlmIHJlbGVhc2UyNy1tYWludAorODQ4ODYgOTI5MWFhM2Q4ZDM1NzIzNzc1MmI0YjQ5ZTNiY2JlNGYyZWYyNmMxYiByZWxlYXNlMzEtbWFpbnQKKzg0ODg3IGYzZGNiMzE0YzNlMzAyZTU1NDIyZjg2YzQ2ZWM3NmEzYWU2MDZhMTcgcHkzaworODQ4ODggNzFiOTU5NDJjM2E0OWI4ODkyMmY5MTg4ODYzMGI2Y2JiOGNjMzZlZCBweTNrCis4NDg4OSA5ZGM4NDUyMjQ0ODYxMjk4MTI4OWEyNTdlYmNjYzNhMTk2NDE0YTU2IHB5M2sKKzg0ODkwIGI2OTg0MmI1MGUyNjM4ODI4ZjFiMzRiMzQ2Yzg1Y2EyMjg4YjNiNzkgcmVsZWFzZTI3LW1haW50Cis4NDg5MSA2NWY1ZTJjM2YyZGQxOTE5ODBmZmE2ZDNmZmM5OWRlZGU1NzQ1MDJiIHJlbGVhc2UzMS1tYWludAorODQ4OTIgOTI1ODg5ODZiNzhiZDI4YWRiM2QwMmM5NDg1ZmUxZjk5YTQ3MDg5MCBweTNrCis4NDg5MyBlNTI5NGNhMjdhYmUyZDEyMzA0MGEzZTNkMzk2YzdkY2UxOThiM2I0IHB5M2sKKzg0ODk0IGY3YTc2ZmM5N2IyMjBkZjMyNTljNGQyZTEzMzA2YTllYjEzMjI0ZDYgcmVsZWFzZTMxLW1haW50Cis4NDg5NSA0NTExMzkzMjJhMTMxMTk1ZDcwMDMxYmIzMTQxMzFiOTA3ZGNiNzg0IHB5M2sKKzg0ODk2IGNkNWI5YTcwYTY4NWJiNzMzOTgzMzliZGUxOGNjMDgzNjllYTk2ZDggcmVsZWFzZTI3LW1haW50Cis4NDg5NyA1MDFhZTk0ZTViZjYxNTg0MGRiY2YwMmVjZmQ3YmVjNjUyM2I0MjI3IHB5M2sKKzg0ODk4IDQ0Yzg5YzU5OTNjODNhMTg5NzdkMzZjOGRlMGEyMTI0NTliMTY0ODcgcmVsZWFzZTI3LW1haW50Cis4NDg5OSAwYWNlOWVlZjEyMGJlMWYxZjFhNDk1NDJjMGEyMzc3ZDJkOGQ3Njg2IHB5M2sKKzg0OTAwIGE0OGUwMzFkODE3OGZiODBjYTBhOWVjMzM2ZmNhYWQxNWE3OWFiMDIgcmVsZWFzZTMxLW1haW50Cis4NDkwMSA3ODVhOTZmY2QzNDBkZjJkNTk0ZmE1MTdhYzQxZTBhZjRlZWExZWU1IHJlbGVhc2UyNy1tYWludAorODQ5MDIgYjI5ZTg1NTYwMTVjYjczMTBhMTg1ODcwZTZmYzlhZTIyMTE0MjQxNyBweTNrCis4NDkwMyBhMDU0MzMwNjA5NDExODZlMTk5NGFhZGIwNmVhYTY5NWVkOTg1YmEwIHB5M2sKKzg0OTA0IDUzNGFmOTFmMzg0NTQwNjJmZTI2ZGM3MTc4MmZkZWVkNjNmM2RjZjAgcmVsZWFzZTI3LW1haW50Cis4NDkwNSA5MzNkNGI1YjdmM2Q2OGI3ODQ1NWI5MTlhNWJiZDNmYzc0Zjk2MDVkIHB5M2sKKzg0OTA2IDc2MDUxZWIwNzQyMmM3ODhmMzVkMzJjOThhMjIwMDc0ZWFkNWQ3ZGMgcHkzaworODQ5MDcgOGRmYmY2NmYzNjljZjVhMmU3YWE1NjJlN2Q4NDg4ZTE3OWU3OTM0YiBweTNrCis4NDkwOCBkZDMwODBiODBkZGE5MTk0NTU3ZGNmMjM0YTc5Yjk0MWJhN2JhZDMwIHB5M2sKKzg0OTA5IDQzNzRiMWVhZWFkMTc3NmY1YjkyZDY4YmQyODY0NzIxZDg4NjRiOWUgcHkzaworODQ5MTAgMTdlYzllZDUwMTMzYjhiYWVkZGE2MGUyODMyM2M2NzY0ZGExNDYyMyBweTNrCis4NDkxMSAwMzY1ODUzODJkZTE5YmI5N2YxNTEwYzAyYTcxMTZmNWY1NmE0MGE3IHB5M2sKKzg0OTEyIDRmNGJkZGRhYzI1YjIzYjY1MzI0YjZkYjM3ZDg5NDdjOTY3N2JlYjQgcHkzaworODQ5MTMgNzZmZDY4YmJhMWE4ODVhNDVmMDc0NzFkYWJiZmFmZDYyZGY4MmUyNiBweTNrCis4NDkxNCA4ZTQyOGI4ZTdkODE1ODZlMjNiNWY5MmY5Y2E5YjE4ZGFmMTRmNDQ5IHB5M2sKKzg0OTE1IDZjNzc3NTdkMDg4MTE1YTAxY2RkMjkzMWYwMDJkNzA2ODdhMmUzMDIgcHkzaworODQ5MTYgYjU1NzI1MzU5OGIxZjljZDM4MDIwMzNiMDFmOWQ3YmUzZTcwNDE4OCBweTNrCis4NDkxNyBlYzAyODA2NzA0OWRhNjdjNzUxZDI3OTg1OGRiNzFkN2JmNmQ0MGQ2IHB5M2sKKzg0OTE4IDJjZGRmODc4ZTM5NTU1M2I2ZmFlOTc5OTcyMzhhMWU5NTQ1ZDRlNjIgcHkzaworODQ5MTkgY2Y4ODE3MTQ5OWI1YTc4NTBiZWVlN2FlYmRhNDJmZWVkYzE1NjQ1MyBweTNrCis4NDkyMCAzYTRhZmFhOTZhYzMzMjNjMGRjNDU3MzEzMTkxZmFiMDRlNTc3ZTZiIHB5M2sKKzg0OTIxIDQ4NmMyZDZhNzU0NjVkMDFmNjE2YmExNmFjOGE1MGQ2YWM3YjI5ZDUgcHkzaworODQ5MjIgYTg4ZGZmMjdiZTFmN2IyZWIwOWQwOTgwNGJmNGQ5ZmExNDliMjQ5NyBweTNrCis4NDkyMyBmMzViZDA4YzEyYWVmMmM0NmI0ZGI3OWE4Y2ZhN2ZkZTliYWZjMzk5IHJlbGVhc2UzMS1tYWludAorODQ5MjQgNmJkMjc2ZjVkMWJjZTc5OTY3NWY4YzgxMWYxYjgyNzk4M2UyYjBkMyByZWxlYXNlMjctbWFpbnQKKzg0OTI1IDk2ZGI2NDA2NzRjYjdhYWE1M2VmMDk0MWQ5NjI3N2Y1NDkyOWJlMjAgcHkzaworODQ5MjYgM2NhY2UxMjg5ZGU0ODhiYWNmNjIwYmExNGVkNDRjODc1ZjUxOTRiNiBweTNrCis4NDkyNyAzOGIwZDVkMGRkMzBlNTBhNzMwM2U0ZjQzZDY1ZWZkYjFjZWZhYTQ1IHB5M2sKKzg0OTI4IDBkMGYxZGI2MzQzMTNmMzYzMTNlMTRiOTlhM2I1MmNiNjhmOGQ4NWIgcHkzaworODQ5MjkgMDBlNGNlMzFkNDA0MGQ1YzM0YjY1N2RkMTc5Y2VhNTk2NTY4MjNkMSBweTNrCis4NDkzMCBhNmFmOWM3YzhlNjdlOGU0NmM3OTc4MDliODEzYzc2ODUwYWM4OGU4IHB5M2sKKzg0OTMxIDg2MWMzNWNlZjdhYTllNTIyNmQ0Y2MyZWIxZTllYjUyOWExYzk4NDggcHkzaworODQ5MzIgMmM3M2U2Y2U2YTc1Njg0NjhjNzM4MzZhMWM3MjYzY2ViYjE2NjgyMiByZWxlYXNlMjctbWFpbnQKKzg0OTMzIGJmMDExZTMwZmMwNzYyN2I1MjhhYjhjZjE1Yjg1NGQ0OTc4YTZkZDEgcHkzaworODQ5MzQgNDdiMTBlNGE1MWQ3ZThkNGMwZGZmNzY0ZTQ4ZWMyZmE3NjczYmJlNyByZWxlYXNlMzEtbWFpbnQKKzg0OTM1IDM2NGQ2ZWY3Y2NhZTRjYzI0MTc3ZWU0NThkN2QzYzk5OWMzZDQ3Y2EgcmVsZWFzZTI3LW1haW50Cis4NDkzNiBlOTA0Mjc5ODQ0NDJjZjViOTg5YmRiMzA0YzBhNWUzM2ZhZDE1ZTU3IHB5M2sKKzg0OTM3IDYwMzY3OWQ4NTMyOTMwODkyYTJkODg3ZjA1NmYwODg5NDdlZTY4OTkgcHkzaworODQ5MzggN2Q0NWY1MzlkYjk3YzgxMWYyYzU3NWYwZTZhNDkxMTM3ZTQwYmE1MSBweTNrCis4NDkzOSBiMWVjNDhiN2ZmZGZmZWI1MmFmZGYyYjI3NWU4NjUyZWU3NjEzM2EyIHJlbGVhc2UyNy1tYWludAorODQ5NDAgZDhiYjk4ZTQyYzJmZmNhMzhlOGZhN2M2OGZmM2UxNWFkY2RmYzU0OSByZWxlYXNlMzEtbWFpbnQKKzg0OTQxIGY4Y2U5ZjM1OWYzYTY0ZjkxZGQyNWM2ZWYxMWEzYTgzOTYwZmU1ZTYgcHkzaworODQ5NDIgYTBlMGNiODkzZTMxZTMyMGNhZWM3ODFhYjVlYzJkNzg2Y2VkM2MxZCByZWxlYXNlMjctbWFpbnQKKzg0OTQzIDMzNTlkMmUwYTk2NzE3MDliZmQ2MGNlM2QwMjZkNzdiNDVjNWJiZWEgcmVsZWFzZTMxLW1haW50Cis4NDk0NCBlNTlhMTg4MjU4YjM0ODgzOGZmN2Q2MjQ0YzA4ZjNkMGIyNTkzZTM0IHB5M2sKKzg0OTQ1IGQ2ZDY1NWZkZGYyMmFjZWNkYzY5YzE1YzNlYjM3YzJmMjU1N2I2ZDggcHkzaworODQ5NDYgNDg4OWE4MTZlZWMxNjlkOGFhOTVkY2QyZWFiNzYzM2Y1NjM4MGIxNiBweTNrCis4NDk0NyBiMWY1MTM0YjAwNDliZDY4ZWFkOTk1ZDU4NWMyY2EzMWYzZmM5NWFlIHJlbGVhc2UzMS1tYWludAorODQ5NDggNGVjMTIxMTU2ZWU5ZWY0OTI3MGZmNDFkNWM4M2MyYmM5ODRiOGYwZSByZWxlYXNlMjctbWFpbnQKKzg0OTQ5IGE0ZWU4YTVjNjg0MzcyNDQ1ZDg2MGViYWYzMDUwMzM2OGQ1NGJmNjIgcHkzaworODQ5NTAgOWFkNjlmYzRhZWY3NWQxYzMwMWY4NWU0MDdjYWQ5OGQ4NjRkOTBkZiBweTNrCis4NDk1MSA4Y2VlYjU5ZjQ1NTBhZjUxZGE0NzQ1MDhmNjhlOWExZmJhNzIzMTYyIHJlbGVhc2UyNy1tYWludAorODQ5NTIgMDhiZDFhMDhjNjJmNzVlNGQ2MzkzYWVkZjUzNTMxODA0MjdjZWE1YyBweTNrCis4NDk1MyAyYjkzMjc3Nzc4MzJhMjQ0YWYyMWZmNzJhYWU4NWQwYzk0MDMwZGI4IHB5M2sKKzg0OTU0IDllMjIxNjQyMGNkNzk1YjI5YjM3OGY4NjZhMzBhODk2YWFlZjJhNWMgcmVsZWFzZTMxLW1haW50Cis4NDk1NSBjNTM3NzBiMTU0NmRhZDRiOTI5OTU5Y2UzNTNjNzMyMjkyYzk2MWUzIHJlbGVhc2UyNy1tYWludAorODQ5NTYgYzllZGJjZTNmY2FkOGM2Y2QyZDU0MzEwMmExYmU3MGJjZmExNTVjNCBweTNrCis4NDk1NyBlMWM4ZWIzOTA1MDcwMjhhOTEwMjBkNmI2OTc2MjQzYjU5YTEwMjJjIHB5M2sKKzg0OTU4IDA1YTVmNzFjMWE3OGY3ZGNkOGQ5OTQ2MDMyMTAwMzRmNjJlYTJiMmMgcmVsZWFzZTI3LW1haW50Cis4NDk1OSA4MjA4YTQzMTkxZTI5YzkyNDcwMGE5MDg4YjhjY2UxYzk4MDEyOWQ2IHJlbGVhc2UzMS1tYWludAorODQ5NjAgOGFjNzBiMTJjYTYxZmFlMjE0ODc0MDY3NDNlMWEzMmI4ZjQ3Zjc2NiByZWxlYXNlMzEtbWFpbnQKKzg0OTYxIGIzZDBkZWFmNTBlNTIzMmM2ZDliZWM3NWI0MDZkNWJlZGIyYzM5Y2MgcHkzaworODQ5NjIgZDVmZTA0MGY0YTQ4YTI3ODBmZTMzMTJkOTM4MThkNTg4MDA4MzU4MiBweTNrCis4NDk2MyA2YjlmODhkZGI0Y2VlOTE0OWExY2ZkNWY3OTAzZjdiNDEzODkzZjc4IHB5M2sKKzg0OTY0IGYyY2VlYWFhYzkzODBiNTQyM2UyYzUzZDNkOTY1MWEyYWYwNWFmMTkgcmVsZWFzZTI3LW1haW50Cis4NDk2NSBlYmNkODExNTU4ZDY3ZDYwNDY3YTIyNTAwY2FmMTJiYWUyNGRiZjZkIHB5M2sKKzg0OTY2IDM0NzRjZWU5Yzc1OGE4NmU5NDI3ZTMxZTFmNTczN2NmZmQ1YmZkMjEgcHkzaworODQ5NjcgZDUwMDFkNmM3NzM2OGVmYmRhZWYzMzYyOWIxOTIyNTYzMjFjNTA3MiBweTNrCis4NDk2OCBmNzAzYTY0M2U2Y2UwN2I4YzE5NThmZTBhNzRkODFmNjIwMzFmMTVmIHB5M2sKKzg0OTY5IDIyNWE2ZDFjZjgxMWY3MGE3NDgzMjExOGRiZTQxNjVhOTQ5ODNlMDIgcHkzaworODQ5NzAgOWVhNTA0ZDQ1ZWVhYTdlMWJmNDI4ZjhhNjQyOWRiYmNhZjA1NzljNyBweTNrCis4NDk3MSA5NmU3ZWUyMzJhYmYxMWUyZGNiODNhYzE3YThlOTY2NGU5ZDhlYjMzIHB5M2sKKzg0OTcyIGRmZDU1ODRlYjFhY2I1OTliZDQyYmVlNGE4MjI0Y2JmOWU5NGM2MTUgcmVsZWFzZTI3LW1haW50Cis4NDk3MyBhNjc2YWMwNmVhY2MwODdkNjgxY2QzNzA2NzcxY2FlOGUyMDgwODVkIHB5M2sKKzg0OTc0IGZmOTJjYzM1NmMzNTgzMTM0YTJjNTM1ZGY0ZThlNjEyZDZlOGE3NWYgcHkzaworODQ5NzUgZWUxNTI4NTJjOTRkZjk0Njc0MmY2OTBmZTYyZmFhZDlhZWJiNDg2OSByZWxlYXNlMjctbWFpbnQKKzg0OTc2IGY0YTFjNzk2YmM5ODc0NTNlNTY4ZjYyYzViYTRiNWVjMmNjNmE3Y2MgcHkzaworODQ5NzcgNjMzYzZiMTFhNWE5ZTc4NTFhZjk3MTM2NmZhYzkzMTJhYzI0ZjU5ZCBweTNrCis4NDk3OCBkNTYwZWVjZTA4NTdmMDZjM2QwZDUzZDhiZTY4NmNkNTBmYzE5ZThkIHB5M2sKKzg0OTc5IGUzMTQ5MmY0NDBjOWU4ZTUxYTliZTJiNWMzZTFiMDdmMzQwNGM4NjMgcHkzaworODQ5ODAgYTBlY2I4ZTJkNzY5ZTdhM2MyNmFmZmVjYTU1YzA4ZWU5MDNlZGM1ZCBweTNrCis4NDk4MSA1MWQ4ZmZmY2QyNjBlODBhYTI1ZDUzMTE4MDA2MmYzN2ZjYzU4NDJkIHJlbGVhc2UzMS1tYWludAorODQ5ODIgMjBmMzQ1ZmMwMzYxMTRiOTRmNWY5OWZhZTQ3NjQ1Y2Y5ZTgyOWE0MiByZWxlYXNlMjctbWFpbnQKKzg0OTgzIGQwODhmYWEzNTQ1NmVhZmI3ZTYyNTQ1MzIyZGI0MTllNGY4YmFmOTMgcHkzaworODQ5ODQgMmU1YmRlMzgzYTVjNzRhYTE4ZjJlNDRjYWY2MDFhM2RmZDJhOTJhNiBweTNrCis4NDk4NSAwYzc3ZDAwZjRmODI0ZTI4OGI0YjgxNDhiZmUxN2ZmZGM5MmIzNmFiIHB5M2sKKzg0OTg2IGFiM2Q5MmZlYTlmZGE1ZTViZjlkZTdlNzUyZTA5MmFmMjE0ODMxNTEgcmVsZWFzZTMxLW1haW50Cis4NDk4NyAxZGViY2NmYmNiYzlhOGVlZDA4YTM5NTA2YzBjMDY3NzcwYmRlODE4IHB5M2sKKzg0OTg4IDI4ZDQxZDM0YTJlNjE1NTkwNTU0OGQ1M2IzNjYyYTMzZDljMmIzOTMgcHkzaworODQ5ODkgN2FjYTQ1ODQ2MWFiMjcxZTcwM2ZmOGJlMTU0YzM4NjkxODIwNDhjYiBweTNrCis4NDk5MCA3OTUyY2ZhYmJiODg3NWY5ODc0ZTc2MjdkZjRhYmVhOGFlZTk3ZTgxIHJlbGVhc2UzMS1tYWludAorODQ5OTEgODdhZmU0NzQyOWM1NmQxN2Y0OTU0NTUwYmU3Mjg1Y2Q2ZWZjMmE0NCBweTNrCis4NDk5MiBhYTU2ZWJiOGZlOTQ3MzRhMzJmMTA5Y2MwZWE4NTBkOWU1MWM3ODY3IHB5M2sKKzg0OTkzIDI2MGRjN2RlMWU4N2JlOWI1YWI3ZmUzYWNhMmYxZmM4MjA0Yzk5NjcgcHkzaworODQ5OTQgMDA3MjI4ZDBlNTY5ODQ2MzFlODgwMGU3NmI4MTllMWU4YjY4MjdmMCBweTNrCis4NDk5NSAyMzUwNDRiMzlhOTIxMWE1NmJiNGQ0Yzk2Y2RlZTc5OGUxOWJlYjMwIHJlbGVhc2UzMS1tYWludAorODQ5OTYgMTJlMGRmZmVmN2JkMjQ4MjViYjNiZDc5MzVlMzQ0NzY2ZTA3ZTM3OSByZWxlYXNlMjctbWFpbnQKKzg0OTk3IGY2YTBlYjczMGE5Yjc4NGJjMGI0N2YzY2E1ZGM4ZGQwMjNkNzk1ZjYgcHkzaworODQ5OTggOGNjNGJlNjQ4YWI0OTA2ZGRiNGQ2YzFiNjVhNjE2ODEwZDcxYmU0YSByZWxlYXNlMjctbWFpbnQKKzg0OTk5IDI2MGRjMzZjMmM4NjFlZjdiY2NhODllZDRlODI4NTc4MGNiYjFjMjAgcHkzaworODUwMDAgYjk0NTNkNTA0ZjhjYTRhZWZhMjg1ZGY0ZDEzYjI0ZmNmMDk0YmYyZCBweTNrCis4NTAwMSBiMjc4ZDkzZjk1OGVlYzE4NDM4MzAxMDAxMmVlZmUzODRmMGU4MjA0IHJlbGVhc2UzMS1tYWludAorODUwMDIgZTViNzA3OTM1NjZlZGRhNWVlNGFlY2U1MzQ3MTAyODU2MDJlNjc3YyByZWxlYXNlMjctbWFpbnQKKzg1MDAzIGM5ZTI5OTI0OTMyMzgyNWY2M2JiZWU4YTA4ODcyNWZjMjIyMWI2YjYgcHkzaworODUwMDQgOTc3NGMxMWUwM2Y2YjBiOGQ4NTMyYjEyMDU3MTdjMDJkNzFlNDM1OSByZWxlYXNlMjctbWFpbnQKKzg1MDA1IDRjZDBlZGYwYjM1NjE5NzBkZmJhNWJkMGJlYjkyYjM0M2Y2ZmQ5MzUgcHkzaworODUwMDYgYzliMDhjNThmMDYzMGI5MWM5YjNmODgyYTU4Mzg5NmMyZTJhMzNjMiByZWxlYXNlMjctbWFpbnQKKzg1MDA4IDBiNDhjNmY4NjcxZmQ0ZTMwYzE5OGJlZGNkNTU2MjRkYmM2YThmZDAgcHkzaworODUwMDkgYzUyZjc1YzNmYmEyZDg2NDk4YTA1Mzk2ZjMyYTc5MTFjMWIwZjhiNyByZWxlYXNlMjctbWFpbnQKKzg1MDEwIDY1MTExNjVlNDgzMGQ4ZmY2ODQ2ZDQ3OTk1ZGI3ZjFiMmUzNGMxMjYgcmVsZWFzZTI3LW1haW50Cis4NTAxMSBiYzdkODgwOGYxOTVjOWQyNTE0N2M3YWYwMzQwZjgzZTkxMDAyYjczIHB5M2sKKzg1MDEyIDI2NWY3MDE3NzcyYjg3MTEyZjA2NTYxZTdiNTFiMzY3YmVmZDIxOWUgcmVsZWFzZTI3LW1haW50Cis4NTAxMiA0M2ZkOWUyYjVlN2QxZmMzY2JjNGNmY2M3MTEwMTZkN2YxNzJjZDA5IHB5M2sKKzg1MDEzIDYzYmE3YTRlN2MxMDIyMzFhZjY3MzFhNTRmNjgwZDI4NzUxOWU1ZTIgcmVsZWFzZTI3LW1haW50Cis4NTAxMyA0MDlkNmM3NmMzMDdlNDMwY2YyMjRmYzhlNmU2MTc0NzgxNzZhMTBkIHB5M2sKKzg1MDE1IDQwM2FmMzVmNDk0ODdiOTRlNjgxMTBjYzc3M2UzNTM5ZDE1MDdjMjcgcHkzaworODUwMTYgNmM2OGRiZjkzMmQwNjg0ZjBlM2U4NzRlZDc1YTFjYzM1NDY4YWRjNSByZWxlYXNlMjctbWFpbnQKKzg1MDE3IGFjOGFhMjI1YzQxNzVhZmRhY2EzMjg3YTZlNmRkMzAzZGNkZWU2OTcgcmVsZWFzZTI3LW1haW50Cis4NTAxNyAyOGU4ZmZiMmFjY2I2OTg0NWIxMWRiZTllOTA3MjQ1MzlkMTg4YTVhIHB5M2sKKzg1MDE4IDI2ZGZlNDRjOWZhYTQ1OWYwZDBlN2UwMzJkOTExOGUxNmVjMjhjZWQgcHkzaworODUwMjAgMDVjNThiM2Q2ZDM5NDFhYWQzMWMzYWU0NjE0ZDc1YjlmYWI1NTE5MiByZWxlYXNlMjctbWFpbnQKKzg1MDIyIDdhYzMwZDU4YjFkMjE2ZDgzYTU0MzA2NGE0YTRmMjBiN2EzYjM3NmQgcmVsZWFzZTI3LW1haW50Cis4NTAyNSAyZmM3M2Q3Yzc2MjJkMjA2ZWU5ZjMxOWQ0MWYxZmEwYTk4MzZkOWUzIHB5M2sKKzg1MDI2IDg4ODEyNjBkMWQxNGZiZDlkMWFkMWQ4ZjRmZDg2ZTNlYjAzZWVkNGUgcmVsZWFzZTMxLW1haW50Cis4NTAyNyAzZjBmZmM4MTk5ZWFmY2YwMzExZTljNTIwZmNmOWNiMzI4Y2NjYWM5IHJlbGVhc2UyNy1tYWludAorODUwMjggZmQ1ZTUxMDM1MzM1YjM4YjlkMGRiNDMzMTFlYTg4Y2Y5NjQzODE4YSBweTNrCis4NTAyOSBlOTM4ZWNjNTUwMDU0OGJhOTQ1NjVkYTc4MjIwOGY4ZmU3NzExYzE3IHJlbGVhc2UyNy1tYWludAorODUwMjkgNTJlZmIxMDQ0ZGU1OTM0Zjk3MzE5NTQ1OTlhZTYwMmY4ODBmYmJlYSBweTNrCis4NTAzMSBmZjVkM2U1YzRiYjU5NTg4MGJlMzc4ZjE4OWRkZDY5MDMzOTg4OGUwIHB5M2sKKzg1MDMyIGFlZDA0YjNmMGZlMzgyMmZmNTM3NGFjYTIxYWFlZTg4ZmQ2MDJlMmMgcHkzaworODUwMzMgNmI0OWVhMTFiMTU3NzkwYjE2ZjYyNmRkNzJiYWFhOTMzYjA3ZjdjMiBweTNrCis4NTAzNCA1YTdiYjg1YTVkOTljMzU2MzdiYzQ0MzgzNjVhY2U2NWUyMzBmOGFjIHJlbGVhc2UzMS1tYWludAorODUwMzUgMWRjMmI1MGQzNDRmODVlNjNjOWI0YzE1MGQ0MDU1YzkwMGJhYWFjMSByZWxlYXNlMjctbWFpbnQKKzg1MDM2IDdiZGEwYTYzMmIwZDQ1NWM1NDk0ZTEyZTdiZGViMjQ5NzUzNWE4MDEgcmVsZWFzZTI3LW1haW50Cis4NTAzNyA0ZDNmYmNmNmY5NmEwZTgyMzg4ODdkNTY0ZTU3ZDhlOTI0NmY4YjE2IHJlbGVhc2UzMS1tYWludAorODUwMzggY2U0YTIyZmM5Y2M0NDFjOTUzMjAzYWU0ZTk2YWI1NDU4YjEyODAwMSBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDQzIDNkNDkwYzNhMDE5ZTIxMGI2MzRlZmJiN2ExMTA0ZDg4YTk5NmVlMTMgcHkzaworODUwNDQgZjc2ZWYxZjQ2MjY2MzcwNjQwNGNjYTdjMTJjYzZmOTQ4NDdiMmIwNCBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDQ1IDdkZmE5OTAwZjhjNzg4NWNmY2NjOWMwYWE5YTE0OTZkNGRmNDQ0YWEgcmVsZWFzZTMxLW1haW50Cis4NTA0NiBlMTJiYTQyZjg2MWZjN2ViMDUwY2M4NDIzMGU0MWQ3Mzg4MzVkZTdiIHJlbGVhc2UzMS1tYWludAorODUwNDcgZTM4MmZmNzQxNzkwMjYyZTljYjRkOWYzNzVjMTZhMGEzN2FlZjdhNSBweTNrCis4NTA0OCBjOGRjNGI1ZTU0ZmJkNGUxNGNmNTY1NTJjN2I5NjlkYmQ3OGU0YTQ0IHB5M2sKKzg1MDQ5IDNmNDI3M2QzMGIzODUyNTExYTM2MDIxZDU2NjgxYzNmMzZiOWQ3NjYgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDUwIDA5ODEyM2E3YTAzY2I3YjFhNWMxMmI3YTRhYjkyYTdkOWU0NmI2YjEgcmVsZWFzZTI3LW1haW50Cis4NTA1MSA0YzQ4ZWJhMTIxMjNlZTU2NzkxY2I4ZjA3NGE0YjMwNzA4NTQzZmJiIHJlbGVhc2UyNy1tYWludAorODUwNTIgNjk0Y2I1ZDg2NTI1MTUwY2MxZWYzNDY0ZTZkMWMwODk0NmVkNWVmNSByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNTMgYTRiMzk5OGE3YWQ0MmRhNjEwMDNmZTU3ZTA5NDc1ZTY4YTJmYWVlYyBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU0IGZhZmU4NDJlMzIwMGNiOGFkNTc0OTI4YjFmODM1MGE3MTNlZjEzN2YgcHkzaworODUwNTUgNGU1ZDIwMWZmMjk0MDFiMDU4OTdmZTU5OWI1M2RkYzMwMTlkZTE3YyBweTNrCis4NTA1NiAzNTNmMGMyYmFmNzdkMmRkNWY5MDk0NTVjZWM2NWFlYTEyNzM5ZmJjIHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUwNTcgY2VhMzdmYjAzZGMwZjQ5ZmRmY2NjNzgxNzYzOTk3YzU0NTU5YjMzMCByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNTggNDVmNTZlMzBhZmE1NzVmMzIyZDEzNzUzMzA0ZjQ0ZjU0YjRkZDdiZiByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNTkgOTUyM2RiZTBiNjQ5OWU5YTEwZmI2YmMzMWU2ZDVmOGE4ODY4Y2RmMyBweTNrCis4NTA2MCBlMDYyODg0NzY1ZDY1YWRmODQ5MWVmMjhkNzM0NTNlOTk3NTk0YmNiIHJlbGVhc2UyNy1tYWludAorODUwNjEgMDVjZTU4NWY2NGM0ODhhODlhNjAxNGRkNjM3ZTU1YjdiNzUxZGUwMiByZWxlYXNlMzEtbWFpbnQKKzg1MDYyIGUzMzJjZDk1ZjQxNGFhMDg5Y2RlYmQ4YjRiYzVjZDQ0ZGJiZWNhZWUgcHkzaworODUwNjMgOWRhMTNlNTYwYTNhOTZkZDU0YjNjMWVhZWZmMmJiZWU1MTlhZjI1NiByZWxlYXNlMzEtbWFpbnQKKzg1MDY0IGFmYjJmMTQ0Yjk4YzIzNjU1YThlZDhiYTE2MWM0ODg5MzhmYWJlNjcgcmVsZWFzZTI3LW1haW50Cis4NTA2NSA0M2I3OWQ4MGY1YWVjZWFiYTMwN2NhZDk4OTU3NDdhMjMyOWI0YjE4IHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA2NiA3ZDliYWY2NDlmMmQ4ZDdkZDI0MTdmOWNhOTZiNTQ4Yzc1ZDQ1MzcxIHB5M2sKKzg1MDY3IDY0ZTQxMTdmNzg4NzU0YWZmMDQyM2RjMDkwYTBiOGUwOGExMGNmZWUgcmVsZWFzZTMxLW1haW50Cis4NTA2OCBkMWJlZTdjZjZjMmYyYWU1ZGU1NWE5YTkxZDY4ZTVmZTE2OTI1MDk2IHJlbGVhc2UyNy1tYWludAorODUwNjkgZmFkNzhlODZkMTZlY2QzNWJiYjU5YmI3Y2ZkYjY4YjJlNmExNDY3MiByZWxlYXNlMjctbWFpbnQKKzg1MDcwIGRkOTRhYzJhNDJiMTdlZmFjZDUxMWQ3NTRjMjQzZjhkNGY5OWI1MmEgcHkzaworODUwNzEgN2UyNzVhNGNmOTQxMGQ0MjkwZGJiYzRjZDQ3ODRlMTlhMWI2OGZjZCBweTNrCis4NTA3MiBhMDhlNDI3ODllNmQ1MWQyMjQ2MzUyZGFkNDhmYmFlNzg4MWVjNjg5IHB5M2sKKzg1MDczIDQ3MmE2ZWVjMTk2YWJmYzE0ZGQ1MDQzODllM2NiMzIwZTVmZDZhMjQgcHkzaworODUwNzQgMGY4YzJlYjg5ZjQ2ZDVjMGZhYjczYjg3MmU5MmZjZDFhYTE0MGY5OCBweTNrCis4NTA3NSBkYzM4MzM5ODQ3MzRiMjQ5M2VkZjIxYzIxOGZiNmI2MzI2YTFiNWQ4IHB5M2sKKzg1MDc2IDZjOGFkYzIwMGVlMDJmMWQzYTAyNGY0MzFiOWVmZGIzYjgyNjc3ZDUgcmVsZWFzZTMxLW1haW50Cis4NTA3NyA2YzFmMTBlMDc0NTU2NDA3Y2E5NDM3NjVjM2IzMzllNGM4YjRmYzZkIHB5M2sKKzg1MDc4IGZiN2VlMGYyYzZmNGEwNDdhNzAxYTFiZjUwNWUwM2QwZmIzZjM0MTYgcHkzaworODUwNzkgYzE4NDIzZjRiOTY4OGM4OWEwOWZlNjQwYWU5NTljZjUwZGI4NWQzYSByZWxlYXNlMzEtbWFpbnQKKzg1MDgwIGQxMmQ1NTBlYmYzNDU1YWI4OTAxZmY0YTUxOWZlZjAxOWM5NzViNmEgcHkzaworODUwODEgNTUyMmM2YjJhZjg3MmNlMTBiNDQwMTg5NTUwZmQ5NTIxYjAyZGRkYyByZWxlYXNlMzEtbWFpbnQKKzg1MDgyIDRjZjc3ZDE5M2Y1N2Y1ZTA3NmIxYTE5OTU1ZWFiYmRlZTdlYmJkMzQgcHkzaworODUwODMgZGM0NTU1NjQ2ZTgwN2Q4MjZmMjY1MGQ4OWRlODlkNjg4YjkwZDI3YSByZWxlYXNlMzEtbWFpbnQKKzg1MDg0IDA2ZjVlMTkwODU1YTNmZDc3Mjg0ODg5MGRkMmM4YjkyNDEzODdlNzAgcHkzaworODUwODUgYzg2OWVhMDdjZDlkMjY4YzllNmVjODNmYWMyMmUwODJiMDI2OWJiNiByZWxlYXNlMzEtbWFpbnQKKzg1MDg2IGIzYzdlNTE2MjdmZGM2OTkwYmRhNmFhNjUwZDZkMDExMjllNTQzZjIgcHkzaworODUwODcgN2JiMDUxM2NkMGI4Mjg5MmViMjU3Y2ZlN2QzMDY4MzdlNGMyZjQxZiBweTNrCis4NTA4OCA3MzQ4NWNiZDZjOWViNmVjNGUwMGEwNWI2NzI2NDA4YTI0N2RkNTM4IHB5M2sKKzg1MDg5IDU5ZGZiMjEzODNmOGJmOWY2ZDE2ZmVhOGUyOTU1OTI0NGE1NWRiZjQgcmVsZWFzZTMxLW1haW50Cis4NTA5MCAwZWUyMTEzYTRmZGU2MjM2NmRiNjczNzI5Y2M1Mzc1MDYwMzlmOTM5IHB5M2sKKzg1MDkxIDc3OGNiOGU2YzYzODMwNDAzNDFhZTQ3NzZhMGNkZjFjY2NjOTQ4NWYgcmVsZWFzZTMxLW1haW50Cis4NTA5MiBlMTJiMTA0MzU1MzA4ZGJmNzI1YTk1ZDVmM2U5MjM2NTgyNTI5YTRjIHJlbGVhc2UyNy1tYWludAorODUwOTMgN2M3ZDFkOTZlMmMzMzQxNGJkNDliMTFiZTAwNTIxNDllODA4ZjllOSBweTNrCis4NTA5NCBjNjIwZmU4N2M3MDNiMDkwZmM3ZWEwZmQ5NDcyOWYyOTdmMGFjNzNlIHB5M2sKKzg1MDk1IGFjOGQ5Y2FjMzAzMzVlM2EyM2M4MWZiZWFhOGQ0OGM0ODM1MWVlZTQgcHkzaworODUwOTYgMTkxZWQyYWQ1OTk3YzFmYzU2ZmEyMzY5MzVlNTk1ODdiOGNmMjM1ZiBweTNrCis4NTA5NyA5NjFmNTM1NGViNTQxZjQ0NTBlNTBmNDUxOGRhMDQzMTc4YWJhYjNiIHB5M2sKKzg1MDk4IDgwMGFkZGM5ODU3MTlmZWU0MTY3ZjczN2ZkYTRhODJmODcwMDY2NzEgcHkzay1pc3N1ZTk5NzgKKzg1MDk5IDNmYjU4M2M4ZTk3ZTdmNjQ5MDI5ZGM2MGU4NjE3YWMzYTBmZmEwNjkgcHkzay1pc3N1ZTk5NzgKKzg1MTAwIGY0ZDA0NzQ5MWNiNDJhODNmMmE2OTYyNzBlZDM4Nzg1Y2ZiMTQ0NmMgcHkzaworODUxMDEgOTQxMDkwZWQ5NmRmNGYwN2FmNzg2MTgzNTliZmFlODljZmY0ZWFiOCBweTNrCis4NTEwMiA2NDM0Y2RjZTcxNTI4NTIzYTlkMmRkMTEzZTE0NDM3N2JkNTk2MzViIHJlbGVhc2UzMS1tYWludAorODUxMDMgMGI0YmY2Y2RlMTFkZWUwZDQ1NjRkYmQyN2NkNmZhZDJmMDBhNDA0ZSByZWxlYXNlMjctbWFpbnQKKzg1MTA0IDFkMTViNTY3YTc0YjI4M2ViM2Q2ZjhiOThkOThjY2MyNTBiNGJhYzUgcHkzay1pc3N1ZTk5NzgKKzg1MTA1IGFmOWRlZTEyN2UzYzJiNWQwNmE3YmEzOWJmZTdjMzM5MjM3NjI5MzIgcHkzay1pc3N1ZTk5NzgKKzg1MTA2IGM0YzZkODQyZDgyYTAxODcyNTkwZDAyYTM1ZmVkM2M2ZTQ0NjYxOTYgcHkzay1pc3N1ZTk5NzgKKzg1MTA3IDM0YWJlMzY5MTllNTNhNGEyMmM0MWMxZmQwNTk2ODMyYzYyODg0NjMgcHkzay1pc3N1ZTk5NzgKKzg1MTA4IDE0NzI1OGEwYWRmODVjYzRiYzZhY2I5ZGRiZWNlZjcyZWEwODFkYzEgcHkzay1pc3N1ZTk5NzgKKzg1MTA5IDI1ZThiNzgyN2M3ZGYzOTZiNGFiNGFmMWJiMmRjZTE3MDk5ZWE1NzEgcHkzaworODUxMTAgYTQzMGY4ZmVjNGEwZmM0ZGFjOGM5NmM3ZDg3NGE3MjViNWFjZDk1ZCByZWxlYXNlMjctbWFpbnQKKzg1MTExIDAwNzdlZTMwMTM0YzZiM2Q0ZDdiMWYwNjkyYmIwOWVmYjkyODUwNTAgcHkzaworODUxMTMgNmRkY2Y3NDI4MjI3YTIyNDg1MWQ3NGI2YWQyMWU5MzAzOGRkMGE2MCBweTNrCis4NTExNCA1OTM2ZWMzYzRlYzAyN2ZmOTNmZDBiYTZjZjA1MDc0NDg1NGViOTAxIHB5M2sKKzg1MTE1IDAxYjk2Zjc4ZmI3MGI3YmVhYjhmN2UyMTJiODFjNGZkNjgyMGNjMTIgcHkzaworODUxMTYgMWFkZDhlNWYzMTk4NTE4YjMyM2U3N2YyYWZjYzQ5ZGVhOWQ0NDNlYiBweTNrCis4NTExNyA3NDZlOTE1MDExOWFkYjcwODIxNjA0NGIxMDI0NzNmZjJiNjRkZThiIHB5M2sKKzg1MTE4IGU3MTBlNzkyZWYyZTc2YjQ5MWZmNjA0YzljY2EwYWNjOTFmZTE3MGIgcHkzaworODUxMTkgZWYxNjg2ODhhZjBhOTZmODE1ZGQyNzFiMzE2MjNhMjlmYjVmYmY4NyBweTNrCis4NTEyMCBhOTM0OWZkM2QwZjdiY2FlYTE1NjBhZmE0YzVjZDg5MzMwMWYwOGM2IHB5M2sKKzg1MTIxIGVhNDcyM2FhYzQ3OGY0YmQ0NDk4YjEyYTNlMmE3OGFhYzdlMjcyYTggcHkzaworODUxMjIgNDAzM2Y4M2MyZGYxOGQ5OGZhMjc2ZWYzNTdhYTIzYjljYWMwOWUwNyByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUxMjMgOWZlMWRjZTJiZmE0NDUwNjI5ODIyMGI1YjI4MzNmMjlhYTcxY2M3MyByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUxMjQgZDk1NzNlMzYyNGVjMTIyMWVmOWQ5ZGVlMWE2Zjg5YzU3Y2ZlNmRmZSByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUxMjUgN2FkZDQ1YmNjOWM2NzJjMzg0MzI2MGM5MzQ3MThmMjZlYTdiY2MwYiBweTNrCis4NTEyNiBkNzg3ZWY5YWNiNzI0ZThjNTk3NDk3NGUwYTdjNmNkZDY0MTM4YmQ1IHJlbGVhc2UzMS1tYWludAorODUxMjcgYjk5ZjUyN2UwZDc3YzcwMzNlYzFkZTc5OGMzNThkNjE3MmQ1OTg5YyByZWxlYXNlMjctbWFpbnQKKzg1MTMwIDlmMjdkNzJiZjVkZjg5MzA4YmY0MGM2ODJhNjE5ZTg5Y2RhOTM4YTkgcHkzaworODUxMzIgMjgyYzc3ZGIzZDM4OWJkNzM0MWI0YmQ2YThjNWMwODU4MDlkNWU3ZiBweTNrCis4NTEzMyBjYjJmYmI1ZTY0MDk2NGU3ZjdkZTZkZjBmYzdlNDQ5NzdhMWE5MWQ2IHJlbGVhc2UzMS1tYWludAorODUxMzUgMDRmNTNjYTQxNTk2ZWU4MDEwMzkzMjMwNzU4MTI2MWVkZjQ1YWZhZSBweTNrCis4NTEzNiA4N2Y0YjMyOTA1ZGYxMDUwZWYwYWM4NjVmNTg0YjRkYWY1MzIwOTRjIHJlbGVhc2UyNy1tYWludAorODUxMzcgNTk3ODA0YjQxMTI1OWI4YzBmNTY1ODQ5YTY0OTRjZTFjNmY3YTNhZSBweTNrCis4NTEzOCBkYWVjZTdhMjM0ZGM5MWE4MTkwNjQzNDUzMDk4YjBhZDUxNmZkZWIzIHJlbGVhc2UyNy1tYWludAorODUxMzkgNTlkZTIyNWExOWNmOGFjNTQ3YTBjZGJiNDlhOWZkN2MyZTA2ODUyNSByZWxlYXNlMzEtbWFpbnQKKzg1MTQwIGE5YTMwY2ZiODlhNWQzNGJmODZmNzAxNzA2MmNmYmE5NTE1ODlmNzMgcHkzaworODUxNDEgNmYxMzNlODdhNGY4YjFlZWUwODA5YWQ1NWFlZmQ1ODM0MDcwZTM4NyByZWxlYXNlMzEtbWFpbnQKKzg1MTQyIDE1YzM2NzFjMTc4MzJkOWFmOWIxN2VlMTk4NjlmZmZhOThjNjUyMTEgcHkzaworODUxNDMgOWI1ZTZhNTdhYjEwNTQyOTFlNzdjZTUxMDhlMzExOWJmOTZkNjFiMSByZWxlYXNlMzEtbWFpbnQKKzg1MTQ0IDJmNjgzMWNkMjQxZWQ3MjkxNzQ5OGIwZDliNWFkMTBhMmNjOGI1NGQgcmVsZWFzZTI3LW1haW50Cis4NTE0NSAwNjIyZDRkMDhhZjAyNWYyNTFiNmZmZTZiZTVkYzBjYjNkMWM0YmI0IHJlbGVhc2UyNy1tYWludAorODUxNDYgMmU2ODQwYzBjMTI2NmI0NjA2ZTg1NDU4NmY3ZjJiMjkxMGQ0ZTRiYyBweTNrCis4NTE1MyA5NTI1OGE2YTA2ODNlNmE1NDk1Y2QwZDE1NGJmZmVlY2QzMGFmZTljIHB5M2sKKzg1MTU0IDM0MGQxYmY1OTUxZTEwOGIzZmQwMDM5OWU1MGVjMTNlMTYyMjI4ODcgcHkzaworODUxNTUgNDcxZGJkOTA2YWFkMDExZDI0ZGQ4YjI0ZDMyZjRiMzNmODAxYTljYyByZWxlYXNlMjctbWFpbnQKKzg1MTU2IDkxZTYyMzg5MGI5NGMxZGUwNDJmNjcwMDg0NTRiZDMzMDgyMjVmYzQgcHkzaworODUxNTcgZGU0MThkOWRkNzMzMWI2MzI4MjVkMzhmYzY3ODcxOTFhODgxMTBhOSByZWxlYXNlMzEtbWFpbnQKKzg1MTU4IGNlNDc1ZDM1YjUwZmM2MzZlNTJhMDU1ZWY1Mjc5OTAyNTA1OTAzMGUgcmVsZWFzZTI3LW1haW50Cis4NTE2OSA3YzBmMTgzN2U4Y2JlMjVkNDdiMzgxNzVjYTMzNjBmM2Y2YTIwMTg2IHB5M2sKKzg1MTcwIGJlYmU1ZTM1NjYxZTIwNzZlYTdhMTFhNDI4NjM5NGYwNWVkNGRmYWYgcmVsZWFzZTMxLW1haW50Cis4NTE3MSBhNzQ4YmZjYjY5NzMzY2Q5ZmQwZTkzODc4NTdiMzQ2MmQ5M2MwZTBjIHJlbGVhc2UyNy1tYWludAorODUxNzIgZGU3Y2RiNzI2MzUwMmI3NDc3ODY0YzlkYWIwZTcwY2UyYzA1YWJlZiBweTNrCis4NTE3MyAwY2MzZmY4MDIwYWU2NWM5NmNkM2JjZDM1N2FlYzI4ZTkwYmY1ZjIzIHB5M2sKKzg1MTc0IDQyODMxNGVlYjJjNzYzYjljY2I4N2MzMGQ2NDdhNTdmNGI4YmFkY2IgcHkzaworODUxNzUgYmI1ZTE4YTliZGUzYWUyMjdjM2YxZDAyYmZhZmQ2MzliMzNmNzk0YiBweTNrCis4NTE3NiA4ZGU1MzVkZWYxMjIyZTRiNzY1ZjAyOTQ4Y2QzMWQ0MTBjMTQ1MTBhIHB5M2sKKzg1MTc3IDkwNDg4MDdiZTgzYWJiOTk5MDNlNTczODA4NDEwYmI1MDI1OGY4ZmIgcHkzaworODUxNzggYzk5MGViOWI2MGE5ZTQ3OWIxZWY1ODczYmZiNGM5OWUyNDBmZjkzZiBweTNrCis4NTE3OSBlZjVjNTcyMTdiMjAzZWE3NTBjYjhmNGJmNTU1MWZjZjEyNTEyZjgxIHB5M2sKKzg1MTgwIDEyMTJlNTAwYTU4NTBlOTQ0NDExMzRhZjA1ZDFmNWQ1MWRhY2ZkNjAgcmVsZWFzZTMxLW1haW50Cis4NTE4MSBmM2E3MGQ5OWQ3ZTBmYjVjYTViNmQwNTEyZjQ3Yzg3YmY4MGQ5MjhmIHJlbGVhc2UyNy1tYWludAorODUxODIgMDcwYThmNjY0MjIwZTZjNTM4ZTU4YWQ3NGRjZDM0OGI1NjJiMzE4YSBweTNrCis4NTE4MyAzOTRlMjUzODJhNTkyMzZiN2Q1NDhiNGFjM2MwOWVmYmMxYjUxZDMxIHJlbGVhc2UzMS1tYWludAorODUxOTMgZGVjMDg3ODlhOWI0MjMzZjczM2VmM2IxNWI4ZGU5N2M2ODIyYWU5NCBweTNrCis4NTE5NCAwZjg3MDg1YjI5MGY0MDYwZmE4MGQ5YWZkNGVkNmI5YTNlMjE4ZjgyIHJlbGVhc2UyNy1tYWludAorODUxOTUgYjllMjZiMGM0NjE3OTg3OTVhY2Y0Y2FmZTUzMjRkZmE3NDc4YTBhOCByZWxlYXNlMzEtbWFpbnQKKzg1MTk2IDliYmQ0NDk4NjU4ZWUzNzEyYzFhMzUyOGI2M2UwYmE5ODY0ZjY0MGUgcGVwLTM4MgorODUxOTcgM2JiM2VlNmU2MGUwYTgyMjE5Yjg5MjZkNmFkOWEzZGU5YmJhMmM2ZiBweTNrCis4NTE5OCBiYThjZDIwMDdkMjkyMmY1NGVjZDA1NWNmNTY5YzMwZDIxOThlZWQwIHJlbGVhc2UzMS1tYWludAorODUxOTkgMTM5ZGQ0Y2ZiODBmNTc4ZDY1M2M3M2JhYTViMzBhZjU0ZTgzNThkOSBweTNrCis4NTIwMCBmN2M5MTA3ZjdhYmRlMmY1MDdhYWY3OTljNWMwMjFlNDBlMzYyMWU0IHJlbGVhc2UzMS1tYWludAorODUyMDEgZDFlMGNmODE4YWQyOTlmZmU2NDVhYmU5YTEyYjhjZmZmNTBmZjFjOSByZWxlYXNlMjctbWFpbnQKKzg1MjAyIDJjMmJhMWIzMDgyM2YyMDhkNjBhMzk0OTAwNTczZmJlN2QwMmZmMTQgcHkzaworODUyMDMgOTQ1YTU1ZDRlNzNlZjgyNTE0MDczYWZiNjNhOWJkMzg1ZGFmOWRlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjA0IGYxMWRjOTQwNGQxMTg2MWMyYzExZmQ0NTAyODc2NzBjZjlkYWNiNDkgcmVsZWFzZTI3LW1haW50Cis4NTIwNSBhZDQxZmJmMzNlM2I5OGQ0ZDdiMjY4NTMxNDg3NjBmNDc0NmY3YzlkIHB5M2sKKzg1MjA2IDMyYzMyYjcwYWEzM2JiMzQwNmMyMGM4YjQyODc3MTYyNzEzZjhmOTcgcmVsZWFzZTMxLW1haW50Cis4NTIwNyBlMWY2Y2U4MzZmYzUzMTdmYTM5MDVkY2RjODQzODY3ZWM1M2ViMTUwIHJlbGVhc2UyNy1tYWludAorODUyMDggOWViOWUzZjY2ZTNhZDhmZWFmZmRkNWY3NTZmNjg4Y2UwNmY4MDczYSBweTNrCis4NTIwOSA4YmQwYTA2M2NlYjljZTdhOTE0MTFlYjAzNWQyZGZmM2ZjNTE2Y2YxIHB5M2sKKzg1MjEwIGI3N2U5MTQ0NWQ5YjcxZjFhNDQxOWI2ZjliMzI2ZWU0MWUzNDkyZDUgcmVsZWFzZTMxLW1haW50Cis4NTIxMSBiMzM0ZWFhZGI1MDhjZWUyNGZlYWUxMzU5YmExNjc2Mjk4N2YxNTZkIHB5M2sKKzg1MjEyIDZhZjdiNDEwMmQ3N2RjYTEzMzk3OTExNjgxMjZlZGM0M2RjN2U3ZWMgcmVsZWFzZTMxLW1haW50Cis4NTIxMyAzNjMzZDhmZTU1NTA2YTlhM2Q4NzE1ZGViZTc1MGFhNDE2NGM5ZGMxIHJlbGVhc2UyNy1tYWludAorODUyMTUgZDE2MWY4Yzk2NGViOGFiNmFkZTRjNTRmNGI3MjUzNWM5ODhhNGFjNCBweTNrCis4NTIyMCBjMjhmZGVlZWE3ODYwODg4OTk1OGE5ZTI0NjQ0ZGVmYTUwMTQyZThkIHB5M2sKKzg1MjIxIDVmMjBmN2YxNWVkZjcwNDVkOWJmM2U4MmE2NmRjMGJkODFjYzI2YjUgcHkzaworODUyMjIgOGZlOGIyODEzNTZjM2RiM2I4NTMxZTExNmU4NmVkMGFjNjMzOTA2MSBweTNrCis4NTIyMyA3NTNiZjIzZTQ1YzViZThjMjM3ZGEyYmJmNTRlNDBhOGI2M2E2YTE1IHB5M2sKKzg1MjI0IGIwNjViMTk0MGNiZDlmYTNjZTY2MzQ2ZmY2M2JlOTMwNTc2MDhhYjQgcmVsZWFzZTMxLW1haW50Cis4NTIyNSAxMmM2ZGE1YWNkNzMwNjdjOTFkMTZjODM3YzVlNDlkNmZmZmJjNjNlIHJlbGVhc2UyNy1tYWludAorODUyMjYgMDk4MTZmYzljZGU1NTdkMTE2ZWIyYTZjMzk4NTJlODk1NjRjNmFjNSBweTNrCis4NTIyOCBmYjgyODQwZjBlNzBiZWNmNzVhMTJhMDlmYThmZWNiYzE3ZGFiMTdkIHB5M2sKKzg1MjI5IDk5ODg5MGNmZjIwNWYzMjQ1ZjdkZjBmMzY0N2Q1YzVkMDNjMzQ2YzQgcHkzaworODUyMzIgM2Q0MjUwY2NjY2U5MTgyNjVjN2E0ZDUwZWFmYWE0YWQ3YTEyZTIxOCBweTNrCis4NTIzMyA3NzYwOTVhYTA1OGQxZTEwOTNhNDI4MWM2Y2ZiMzYzNTI5NDBkNzBkIHJlbGVhc2UzMS1tYWludAorODUyMzQgYzZkZGJmYjdhYjQzODE5NTRmNmFiMGI2MGNiNjRhYjNjMDQyOGRkNyByZWxlYXNlMjctbWFpbnQKKzg1MjM1IDc5YmI3Y2FlNjliZWNiOTY0ZTAxOGQ3NmM4MGNkZjcxOTEwYzVkNjEgcHkzaworODUyMzYgNzU5ZTVkMjc1YmViMzk5YTFjYjJiMmQ3ZDY4ODEyM2MyYWI5MDI2MyBweTNrCis4NTIzNyA2NGNhMDFlYzE3MTVmYjM2ZTE4MzczNjJkNzI1NzkwMGQ1MTQwMzU1IHJlbGVhc2UzMS1tYWludAorODUyMzggY2Q3MzkxN2YyNDc4Mzg2NmVmZWY0YzEwOWRhMmQyODAxODA2ZTJkOSByZWxlYXNlMjctbWFpbnQKKzg1MjM5IDFjNDE3ODExZTUwOGY5OWU4NWIxZGM0MGU0YzU2NGJkZjhiNmVkOGMgcHkzaworODUyNDAgOGJjYmRkNjczMGE3NTczOGNkMDUxZDM5YTY0ZmQ4MGU1NjQ2MjA0ZSBweTNrCis4NTI0MSA3YTBiNDFmMWM3M2I4NTJhZjRjZjVkMDkxMTdlZTZjNDk4ZjM4Y2VlIHJlbGVhc2UzMS1tYWludAorODUyNDIgZWVkYmU1ZWE0NGNiMjE1OTNkYWIzYmNkZjMxNjE3ODYwZjg4ODA3NyByZWxlYXNlMzEtbWFpbnQKKzg1MjQzIGViN2Q2OWQ4OTY1MDFjYjk2ZTE2NGEwYzkyMTE3MmU0OGIwYzljODYgcmVsZWFzZTMxLW1haW50Cis4NTI0NCBhNjhmODc2MzU1NWIyMTRlZjczNTI5YzkyNzcyMTEyM2FhZTBmOTg1IHJlbGVhc2UzMS1tYWludAorODUyNDUgNTM3MGQ0ZjA4NjQ4MDljZWUxZTNlZjYyOWY3NTgwZGE4MWU1OWQ3OCByZWxlYXNlMzEtbWFpbnQKKzg1MjQ2IGE0Yzk3NDZjYjAzYzVhNWJhODQyYmFkY2JkODBjOGJhYjg3NDRlNGUgcmVsZWFzZTMxLW1haW50Cis4NTI0NyBiZmVlNTQ3ODFiYTFmOTNlNGQ5MGRjZjZlZmYwN2YxN2RmM2E1ZWU0IHJlbGVhc2UzMS1tYWludAorODUyNDggYzk4NzliMzQwMmU0YWI3MmQyZDM5YjQ1ZGI1YWEyM2UzZGNmNmVhNiByZWxlYXNlMzEtbWFpbnQKKzg1MjQ5IGViOGUxMzc4NGRlNzM4NGM1OWZkYmU0NzZhZTM5Y2IwMmExMjA1NmUgcmVsZWFzZTMxLW1haW50Cis4NTI1MCBiOWE3NWRkNzQyMGQwNTY2YjczMjI1ODcyYTc0NWRiNjliODc3MWJmIHJlbGVhc2UzMS1tYWludAorODUyNTEgOTBlMTczNWRmNGQ5NjJjZWUwMGM0ODYxMWNhMGFlZmU4ZTU4ZWIwNCByZWxlYXNlMzEtbWFpbnQKKzg1MjUyIDJkZTgzMjNiZDRlYmEyYWEzNTNjZGIxZmQ2ODBhMTkzYTc0MzlhNGEgcmVsZWFzZTMxLW1haW50Cis4NTI1MyBhMDQ3OTM0MGYwMzUyZjJhZTYzYmIzNmZkOGQ2NGY2MTY5ZDk0NzA1IHB5M2sKKzg1MjU0IGYwMDQ0MGFmOTQxMzc4ZGFiNDRkNGUxZDA3NGJiYmMwYzUzNjA5MmEgcmVsZWFzZTMxLW1haW50Cis4NTI1NSAwNDRjYzhhOWYxOWNmYTFiNzdmYWQwYjhlYTM2MWY5ZmVhNTQ0ZDEwIHJlbGVhc2UzMS1tYWludAorODUyNTYgNmY5ZDE1ZmNjZmE0YWNmMWFmYTM3MGYyMWZiM2NmZGZhYjIzYTc2OCByZWxlYXNlMzEtbWFpbnQKKzg1MjU3IGM2MWMwMmFjMjA5OWZiZjc4NjRlZmZjYmViNDQwNjdjOTNkYmQyMjIgcmVsZWFzZTMxLW1haW50Cis4NTI1OCA2OTU5YWRiYTNiNmE1ZDIyN2RiODkxOTgxYjI5OGIwOGNjOWZkOWVjIHJlbGVhc2UzMS1tYWludAorODUyNTkgYTVjNjNiM2E5NmE5YThmMjI0MmMzZDIwOTczM2IzYWU4NDgyM2Y0YiByZWxlYXNlMzEtbWFpbnQKKzg1MjYwIDI4MzA2MjQ0YWZhMGY0NTg5YzFjNTllZDc0NDAzOGI4MmRkYjQ5M2IgcmVsZWFzZTMxLW1haW50Cis4NTI2MSA2NDk4OWIwMzM5OGNhMmY4ZmI2Njg4NGYyMTlkYTlkOTNhYTcwZjgzIHJlbGVhc2UyNy1tYWludAorODUyNjIgZmY3MzRmMjI1YjQ3ZTk2ODliZDJkZDEwNTg1ZTcwMmM2NDQ4ZDAyMyByZWxlYXNlMjctbWFpbnQKKzg1MjYzIGNhYjQ1ODYzOGU0ZGI1NDdlMGRmNjNkNDA3OTVmMmNmOWQyZTg4MjkgcmVsZWFzZTMxLW1haW50Cis4NTI2NCBiYWE5OGJhODVmZDQxMTg5YzBhOTVjMTUwZmZkNDU1Y2VkZGZjNzYxIHJlbGVhc2UyNy1tYWludAorODUyNjUgMmMxMTViZjUyY2ZmOWNlNWZiZmMyMzBjYzRkYjBhZjU2NzRlY2RhOSByZWxlYXNlMjctbWFpbnQKKzg1MjY2IDI4NTY1MWExNTM1NWVjZGU0MDU5ODk5NGFmOTViNDJkYzIwNzhkMjQgcmVsZWFzZTI3LW1haW50Cis4NTI2NyBjZTIwMjE1MmUyMWExMTQzZTZlOWJlYWNhZjgwMmZlYjdlMTljZWYwIHJlbGVhc2UyNy1tYWludAorODUyNjggNTM2ZDg2NTBkYTNkZjBkOTY3ZGM5Nzc4ZTMzNDNhYjJhYzk4OTZjYSByZWxlYXNlMjctbWFpbnQKKzg1MjY5IGU5ZTI0MWE5M2Y5ZWUzMGNlZjkzODEwNjIzYWZkN2E4MGQ5YjkyY2MgcmVsZWFzZTI3LW1haW50Cis4NTI3MCA3ODM5NmVmNGQ4MWNkNmI3NTNjYTU4MzczYThjZWZhNDhmNTNmMGJkIHJlbGVhc2UyNy1tYWludAorODUyNzEgMWEwZTA2Njk3NzljY2FmNmQ4MjcwODgxMDc1NjEzYmFmMjFlNmRmOSByZWxlYXNlMjctbWFpbnQKKzg1MjcyIDUyMWVhYzMxYTg5M2E5OGEwZDVhZjM0NDZlODM1YjBkZmY0N2M0YjUgcHkzaworODUyNzMgMWNmZDNiMTI0ODlkYWU5NGExZjY0YTc5N2ZjNjAyYzk5ZDdiMGI1NCBweTNrCis4NTI3NCA5YWZlZDcwZDNhY2ExYzYzNzhhZTJjMzRkM2E1ZGRjZmY3OWE3N2NhIHB5M2sKKzg1Mjc2IGRmODQ0YmI2NzI5YTRiYzY2MThiYWRlMmM2MGJkOGE1OGU5MGQ3NWUgcHkzaworODUyNzcgOTI1N2YwODNmY2ZmMjJmNDNmY2E5OGVkMGM3YWY5NzZkYjNmZTRjNCByZWxlYXNlMzEtbWFpbnQKKzg1Mjc4IDAxOTIwNTViY2MzYmU5MTU5MDc2MTc3ZmI1ODI3MzE4ZDBjYzAzYWQgcmVsZWFzZTI3LW1haW50Cis4NTI3OSBkNjcyNzUzYTAzZjAwOGNlOWIyODRhZDliZTQ3ZDAzMGMxODQ3YjNiIHJlbGVhc2UzMS1tYWludAorODUyODAgNzAxODI2MWYyYWMxZGExMTEwZTU3NzZmNjMwZjdkMGNkYWU0MzhiZCByZWxlYXNlMjctbWFpbnQKKzg1MjgxIDJkOTllZGM0ZjEwZGZiMGNmZGE0YTI2YTdmYzFjMGQwYjQyZTU4YzggcmVsZWFzZTMxLW1haW50Cis4NTI4MiA1YjU1ZThhOWMxMDcxZDM2NDQ5NDQ4MzgyYmNmNTVmYjhjYjdmYmNmIHJlbGVhc2UyNy1tYWludAorODUyODcgMDY2ZmIzZmFmNmQ1MzkyZjJlZjMyMjMzMDhkOGUzMTBlNTcxODY0YiBweTNrCis4NTI4OCA4NjI5ZjdkOGI1ZTMzN2IwYTA5N2FmODA3NzkyNTM3OWQ3MDQ2ODk3IHB5M2sKKzg1Mjg5IGQwY2UzZWIxMWIyODZhYjU0OTk5OTJkMWViOGIzMmRmMDVmOTMzMmEgcHkzaworODUyOTAgNGRhNTVjNDkzNDM1NzAwMTVhNDk0OGYwZGMxZTNhOTMzNTM3NmIwNSBweTNrCis4NTI5MSBiOGU3OGNmYzk0ZWJhNmFlNDYyNWU5N2IyOTU2NjQxOGEyM2E0ODUyIHB5M2sKKzg1MjkyIDMyZGNjY2RjNzNmOGY2ZmRlODVmOGE1ODNjYWVkNDQ5OGQ3ODZkMTEgcmVsZWFzZTI3LW1haW50Cis4NTI5MyA3YzEwMzFkMzgyM2NjNGRiNDQ1OTI4N2QzODQ1MDQwYWE0MTY4Yzc3IHJlbGVhc2UzMS1tYWludAorODUyOTUgNjJjNThkYzkxMmU4MTY1NTRiODc4Y2Y3NmRjZmMxZmRjYWIwNmE3ZiBweTNrCis4NTI5NiBmMjM3ZmRlOTI1ZmE3ZGQ0ZTg3NzIyZDc2ODJiMzlhZWIwMGE1YmI0IHB5M2sKKzg1Mjk3IGMxZTk1NDJiNmM3NGFhNjNmMDhhNmE0NGRhN2M4M2E2YzhjNjY0OWMgcHkzaworODUyOTggZTNhZTViMDBiYTE1ZWVlN2I2NWI0MGNhMDkyYjU0MDU0OWQ5MmYzMSBweTNrCis4NTI5OSBhNjJjNGQ1Y2RmNmM3NDM4MTcwZWM2MjNjYWM4NWZlZjIxZjI0MzExIHB5M2sKKzg1MzAwIGIyNDU3ZWI4MzRhZTA5ZDI4NDYyODgzNzllY2JmMzcxNTk5ZTg1M2MgcmVsZWFzZTMxLW1haW50Cis4NTMwMSBkZmIzNGU1ZmUwNjYxOWE4NWMyZDg4Y2IwZTA3MTk3NjliNDlmY2RkIHJlbGVhc2UyNy1tYWludAorODUzMDIgMDcxZjFmN2FmNTIyM2I4OGIyMWVmM2M2YTZkMmMxZGJlMTE3MDQ3NiBweTNrCis4NTMwNCAzOTAxNGYwYWJjMzI4Mjk1YjNiNzgwYzc2MTI3OTA3NDk4Nzg1ZTVkIHB5M2sKKzg1MzA1IDc4NzlhOGVjN2Y3OWE5MzIzY2NjNTBhZWY1NDBlOGZmNGY2NmJiOTAgcHkzaworODUzMDYgMWYzOTE5YWY4YTUzNmQxOGVlZDQ3NTQ4YzA1YjJlODY5MDE4YzE4NCBweTNrCis4NTMwNyAyMTQ3Y2MxNTIyMjcxNTQxMTkwMGNjMjUyNTc1MzdjMmQ3YjhlMDBkIHB5M2sKKzg1MzA4IDhmZDVkMDY0NjJlNmI4ZDVmMTYxODY5ZTdjN2M3NGVjOTQ1MDE0NDggcHkzaworODUzMDkgZTRiZGQwN2NlMGM2MjY5MzhjY2Q5OTM2ZmYyM2YxNTlmZWRhMThkNSBweTNrCis4NTMxMCAxYzQ3NzRiNGU5OGE0NjJjY2QwMDIwYjA1Y2RhYTkwM2QyMzc1ZWI3IHB5M2sKKzg1MzExIDc3YTZhMjQ5ZTI0ZThlNjJlZWY1ZjM1ZjBlYjBiMTJiNjY3NDRmMjEgcHkzaworODUzMTIgZmE2ZTUwMjA4ZDkzMDk1YTQ4ZmIyNmJmMzVmZThmZjQxNTZiOTUwZCByZWxlYXNlMjctbWFpbnQKKzg1MzEzIDM5YTBiOTQzZTNlMWYxN2YxMjJmMWRlYzgwMWYwNjVlZmU3ZDUyN2YgcmVsZWFzZTMxLW1haW50Cis4NTMxNCA4ODRjNzFjZDhkYzY5NWE5MmIxNmMzMTM4Nzc5MmFhZmMxMmMzZDFhIHB5M2sKKzg1MzE1IGExNGUwNzRmYTQyZmM1NTJjMjQ5ZGM2N2IxMjc3NTI0NDRjZWI1M2YgcHkzaworODUzMTYgYzQxMTU1MmNkYzdjZDNiZTg5ZjYxMjM1MTU3MmY2MDFjM2NiNmVhMSBweTNrCis4NTMxNyA4YzU3NjAyZWExYjMwYzJhYTIxZWRiYzdlZGNhMWUyMmYwOGM3ZmQ5IHJlbGVhc2UzMS1tYWludAorODUzMTggYWNkYjMyMDA1YzBhYzMwZmFjMjg1ZjgzOTQ5YWRhODE2NTI5NjFhMCByZWxlYXNlMjctbWFpbnQKKzg1MzE5IDZhMmY4ZjY5MmYwNDhjYzg5ZTgyNGMyOWU4MmRkNGVmYzAzMDYyNmMgcmVsZWFzZTI3LW1haW50Cis4NTMyMCBhOTk2NGE0ZDNjMjlmMDYxZmVjMTkwZTFkZWMyOTAyNDkxNmY2ZGFjIHJlbGVhc2UyNy1tYWludAorODUzMjEgNGM5OGVlZmYzN2U3ZjNjMzJlYTk2MDBhNzc2OTFlNWEwMzUwZjBiMCBweTNrCis4NTMyMiAxYTA0MWYzNjQ5MTZiYjNkM2FiMWIzODZiYTQwNWM2NjhhMDcxZWNhIHB5M2sKKzg1MzIzIDQ5ODczNDRjZWUyMDAxMjhlYWEyNzVmOTBiOGQ5NjlmN2RiZTUzYjAgcHkzaworODUzMjQgYjFmYjA1MzliZjk4YmNiNDQ5NjQ5YzIxMGI4MjQ3M2NlMTI5MGMwNSBweTNrCis4NTMyNSBkYmUwMmU5MTZhZWNjZjRiZTg1NzVkNTAxOGE1ZjcxNThlNTg5YzU5IHB5M2sKKzg1MzI2IDU2OTNkZWRlOWEzYTA4NDAyYTcwZWYwMWQxMTc4YzlkYmY3M2VlMjYgcHkzaworODUzMjcgOWMwMjYxODNkODJhNGVhOTA0MTg5ZGMwMmVmNDNiYzI2YjFiN2E4YyBweTNrCis4NTMyOCBhZWRkYjE4N2ZjYmViYTU2ZTM3YzQ3MDMxOGY3ZDQyMzMxMjdiMjdmIHB5M2sKKzg1MzI5IDBiYmMzYmIwMGZjNGViZGJlYzdlNDE4Yzk4ODQ4MTRiZmU3NzlmOGMgcmVsZWFzZTMxLW1haW50Cis4NTMzMCA1MTU3NWJkYzU0MjA2ZmVhZjgxYTA4NWE3ZTA1ZDc0NTlkMDUzYmU1IHJlbGVhc2UyNy1tYWludAorODUzMzUgNDJkNmMyNjJjOTQ2NjcwNTdlYzQyNWJkYjJiYmRiZjZjOWYzMDUwMCByZWxlYXNlMjctbWFpbnQKKzg1MzM2IDBjNDg4NGRiNTNlMDQ5MDI1Y2ZkNTY2ZjViYzY5MjM4NDBjYzMzY2UgcHkzaworODUzMzcgNjU0M2ZhNGIxNDU4MTUyMzRiYjJiOWY3NzE2YzE1MWMyYWE3YWVlZSByZWxlYXNlMzEtbWFpbnQKKzg1MzM4IDdlMDFkNjk2NGQ1ZDdlMGFiMDc3YWNiZTcyMGNkNmFhZmI0NTk3MWYgcmVsZWFzZTMxLW1haW50Cis4NTMzOSAyZDE2NGIxYWViNzliN2RlMzFjZGU0YzI5NWViMDEyNzgyNWJlMWY2IHB5M2sKKzg1MzQwIGE3YWIwNDhjNjg0NWQ4ZTkzYzNhY2NhYmEyZjdkMGMyNzMxZjg4ODEgcHkzaworODUzNDEgZTdjOWE4NWZlOTYzYjU4ZGUwZjY4NGQ2YTM5ZDNkYzM5NWQ2NDQyZSBwZXAtMzgyCis4NTM0MiBjZjJjNTgzYjJjYmViZjE4YmRhYjQ5MTAxZjFlNTMyYWZmYjczZjY5IHB5M2sKKzg1MzQzIDgxMGI1NDBhZTY1MGY3NmRjMDJiZThhZDEwZjVkYzg1ZDIyNjhkZTMgcmVsZWFzZTMxLW1haW50Cis4NTM0NCAwZjZmYmE2NWJjZGU3ZDI5MTQ5MGY4MGJkNmI1MjY0NzJiODY1ZDJlIHJlbGVhc2UyNy1tYWludAorODUzNDUgYjYyODk5ZWQ3ZmI3ZDViMzc2MmYxOGE2ZDA0ZTcxMWVhZmMyMTlhZCBweTNrCis4NTM0NiBkNDc1Yzk0NTQ2YmVkNjU0ZTk1ZTgzM2VmM2M0NTg2ZWIxOTJmZDM3IHJlbGVhc2UzMS1tYWludAorODUzNDcgZmRlYjBkY2I5YTNmZDBkMTlmNDYzYmRhMmExZjY2OGU1NjdiODNlYyBweTNrCis4NTM0OCAyZmE5ZDczNDVhYzdmYTNjOTQ4MTM2MTEzMmQ0YWY0NjQ1MTZlZDk0IHJlbGVhc2UzMS1tYWludAorODUzNDkgNTFkMzA0ZWM2YzExYjU5NzRmNzRlZDU4OGE1YTgyNjJkNGI5MzFkOCBweTNrCis4NTM1MCBhOWE0NTYyNGNlZGYxZGUzMjQ1NWNkMmUyNmU4NjgyMDkzYWY4Yjk2IHJlbGVhc2UyNy1tYWludAorODUzNTEgMjMxMzRlMTY3M2Q3MWJhOWJkMGY0NDg3MGUzN2E4MWM2ZjZiOThjYSByZWxlYXNlMzEtbWFpbnQKKzg1MzUyIGVkNWU1OThkYTE1MGVmNmI5MDU2YTA3MjczMGE0YjQ5M2E4YjMzYmIgcHkzaworODUzNTMgMjVkMDc4NzM5YzJhNGVkODM4NWRkNmFkMTZlNzFlNzM5NmQwYjE0MCBweTNrCis4NTM1NCBjMDE5ZTk3N2YyMjJjMzBiZDM2ZWEzMDA3MTJhODc1MTU0MzQzYTYyIHB5M2sKKzg1MzU1IGVmMjFmOGM5OWZiMzQwNTJjZWQzNmJlYmUyOGY5ZDRjNWRlYTY1ZTIgcHkzaworODUzNTcgZGEwMTJkOWEyYzIzZDE0NGUzOTlkMmUwMWE1NWI4YTgzYWQ5NDU3MyBweTNrCis4NTM1OCBhZDE1Yjg5MTA2ZGUzYmUwNWUwZjAzOTZiMDY3YTg3Y2VkZmUwZTAxIHJlbGVhc2UyNy1tYWludAorODUzNTkgNDUxOGIyYzJkNjE0ZjEzODE3ZDhlODc1Zjk1MDMzMmNhNWE3MThlZiBweTNrCis4NTM2MCBjZGM5NWZkZGRiN2IyYmE5ZGFhMDMyN2NhYTVmZTljMWY4YmNmMmRlIHJlbGVhc2UyNy1tYWludAorODUzNjEgNWVkZTE1ZTEyNDU4MTY5OTA5M2VjYzQ1MjA2ZmEwYjdmNWQzZjAwYSByZWxlYXNlMjctbWFpbnQKKzg1MzYxIGQ1MGJmYjdhYjU3YzkyNmJmMDdmYWJiOThjYjc4YWFjMDYwODM4YjcgcHkzaworODUzNjIgNDc1ODMwNDI0YzFlODE4NjA1OTk0NTNiMzA5YTk3NGU2ZTNmY2FjNiBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MzYzIDVhYWVmYTk3NTJhY2I0OWE4MDdhZGNlY2EzNWQyMDg1YmEzNDEzNjYgcHkzay10dGstZGVidWctb24teHA1Cis4NTM2NCA2MmMxNGVkNmI4YTBhNjI0YTlhMDU5YjhhMDQ0ZGE3YjhmNWFjNTdkIGlzc3VlOTAwMworODUzNjUgMjY3NmFmNjU1MTRkNGQ5N2E5ZmEyYjhiNzQ0MjgzMTEwZmZmNTgzZSBpc3N1ZTkwMDMKKzg1MzY2IGQ0OTA5YTA1NmQ0ZTc4MDNiZThhMDkyMWUxODE3YWIyZTVkODlmMDMgcmVsZWFzZTI3LW1haW50Cis4NTM2NyA0MWE5Zjk1MWViZWE1ZTFhYzZjZWU2MzExZGZjZDczNDU4ODU3MjcwIGlzc3VlOTAwMworODUzNjggMGFkYjY0NDA1ODFlZTFkNWE2ZjNhNmVhNDQxZmNjNWU5Njc5Y2Q2NyBpc3N1ZTk0MzcKKzg1MzY5IGY3ZjcwNTI5MzEwZjg0YjkxM2M5MmM4MTQ2ZGZmZWFmN2M3YmVkMzAgaXNzdWU5NDM3Cis4NTM3MCA5ZDZkODMwNjNlYzIyYmRjNDIzZDQxMWFlYzAwMGIzOGQ5M2ZjZWM2IHB5M2sKKzg1MzcxIGNiZGU4MWVmNGFmN2MwMmVjODRlOGE4OGMwZDJlMzI0MWFlZDRjY2UgcHkzaworODUzNzIgMThiNzI1OWNkOTJkODM4ZWY2OWZkY2RhNzY4MzdiM2M4ZDVmZTZkNSBweTNrCis4NTM3MyA5N2Y4MGQwYTFkNTYzOGEzYTFmM2U3MmZmYTQ0ZjA2ZTU0NDA3ZWI4IHBlcC0zODIKKzg1Mzc0IDY2OWMzNzI4NzUwYjE3NTZmYmRiOGEyOWVhZDE2MmJjMzllMWMwMTMgcGVwLTM4MgorODUzNzUgNWZhMTI1YWUwN2E2NDE3MjM4YTBmNWQ3NDAxZWNjOGFlMTcxZmE0MiBweTNrCis4NTM3NiBmMzIwMGJlNGVhYTA5ODRkODEzM2I1M2E3ZWEwZjA2OGMzMjQxNWJhIHJlbGVhc2UzMS1tYWludAorODUzNzcgZmFhNGUyMmFhYmE3ZTRiMzZlZjkzZmEwY2U2MWIwZjBkY2EzMzEzYiByZWxlYXNlMjctbWFpbnQKKzg1Mzc4IDhjZjFhZmYxODU5YzYyNjNhNzVhMDBlZWZjNDgxMmI1ZjhlYWFmYjAgcGVwLTM4MgorODUzNzkgNmQ5MThkOTEwYTk2ODdmOThlOThlNGIyMzk0Nzk3Y2EzY2Y2NzE3YiBwZXAtMzgyCis4NTM4MiBkMjQ5MjhjMjgwMDE5MThiNGRjNmVjM2UxMzFlYzkyNWU2NWYwMWE0IHB5M2sKKzg1MzgzIDljNzIzYWZhNDRkYWJiNDIxODE5YTdjNzQ0MmU2OGY0YzI4ZGU0YmQgcHkzaworODUzODQgNDYxM2UxNDQ5MDAwNjgyNDNmYzBkODI4ZWRiN2MxZTExOTc2M2NjZCBweTNrCis4NTM4NSA5ZTE0N2MzNDkxMjZjNmU4MWQ2MTRjNTBiNzk2YjNkZjc0MGFkZDZhIHB5M2sKKzg1Mzg2IGRlZDYxZTI2Yjg0MTRmNDdhZGQ2Y2E3NDk5YTFmNDQzNjlkNWQ3MDcgcHkzaworODUzODcgYTgxNzIwNWQyNTRhOWY3OWZlN2ZkZWMyM2UzYzJlYjQ1YWE5NjY2YyBweTNrCis4NTM4OSAzOWIzOGNhMWFjMDRiZDFiNTFhY2IxZTk1ZjFiNWJmZDE0ZDNlYzg4IHB5M2sKKzg1MzkwIDJmZmJmYmMwZDNjYjE2YzYxN2UyYzg5YTY0NmM5NDZhZjFmMGUzOWUgcmVsZWFzZTI3LW1haW50Cis4NTM5MSA2MTczMWVjOWEwNDgxZTU3MTYwNjgwMTk0NjFmM2ViOTk3YWYxMWJkIHJlbGVhc2UzMS1tYWludAorODUzOTIgZTJhYTNiMWQwOGJjYmMxMGFmNDNkYjBmMmNlMzM2ZTBiMjg3YTk1NSBweTNrCis4NTM5MyA3OTA5NDM2NDA4ZTJlZTA4YzRhMWIxMmE3OWE2YjIwZmIyOGE3NjI2IHJlbGVhc2UyNy1tYWludAorODUzOTQgM2U4ZDI4ODg2YWQ2NjBkOWMzOTRiMTQyZjJhYThmYjhlYWFiMzNlNiByZWxlYXNlMzEtbWFpbnQKKzg1Mzk1IGYyZjUyYjQwYzFmMjhkMjgwNGVhNDYwZTBjMTRmMmNmN2RhMDhlNWIgcHkzaworODUzOTYgZDdhNzFmMWQxZTM0MWMyYTljZDFjMzJkNDVhOWU2YWIzNzEwN2YwYiByZWxlYXNlMzEtbWFpbnQKKzg1Mzk3IDIxOTU3YjNiMGFjYTA5MzM0MWMwNjI2MjViNTNlNTRlYjVjNzczZWMgcmVsZWFzZTI3LW1haW50Cis4NTM5OCA3NWJlYjY3NjJlM2IwMjM2NzlkMjBmYjZkZWU5YjNkMTg3ZDNjMjQ0IHB5M2sKKzg1Mzk5IGMwOTA4Y2ViZjE4NDEwZmM3MGQ4Y2UzZDkyYWUxNjRmNDhhNzQ1NzMgcmVsZWFzZTI3LW1haW50Cis4NTQwMCBkMGY2MGJlYjI4ZjIzZjIzMDQ3OWIyZGEyM2ZlOTgyMzUyNWE1N2VkIHB5M2sKKzg1NDAxIGVhZDUzNjRjNGE1OWE3MzNhNGFlMGRkMjZiYTZiZjI1MjA2Yjg3MzkgcHkzaworODU0MDIgZjI5Y2UwY2MxZDRjZTZiNmNkMGRlMjBhMzA1OWEyYzEwYjQ3YTcyYiBweTNrCis4NTQwMyA3NTIwNmRmOGU1OGM2MDI4NTBkMGVmOWZkNmMxYjY2OGJhMTQ2YjE3IHB5M2sKKzg1NDA0IDJjZTY0OTYwZDQ5MGRiNmRmYTQ3M2JmM2Q2ZDVjMGQ4NWZmNzE1YTYgcHkzaworODU0MDUgMjBmNDYzYTQ1ODRkN2M0MmUwMzg2YThmMTAwNmEzOGVlOTkwM2ZhYyByZWxlYXNlMjctbWFpbnQKKzg1NDA2IDI0NmQzZGZjZTdiMTAzZDBkNTdmMjRkMTllZTEwZTkwNTZiN2M5ZmEgcmVsZWFzZTMxLW1haW50Cis4NTQwNyAyM2VjMGJlMDdlMjBlZGRmODk5YzRjNTE0NzdlYzgzNjc0NWIwYTM3IHB5M2sKKzg1NDA4IDEyMzI3YjlkMzMyNTE5ODFhNTgxMzFhNjAxZTUyNTg5YWIwNmVmMGEgcHkzaworODU0MDkgY2I2ZTliMDNkMGMzMjBjODZiM2VkNmZkOTE3ZjNiMTFlZmNmYTUwNSBweTNrCis4NTQxMCBhMTU2Nzg5Mzc4M2YyMzJkZTBhMzY4YmY2NWY5YjdlZmIyMTY2MjM3IHB5M2sKKzg1NDExIGJmNWNmZTlhMGJiNWU1MWU4Mjk1MTNiNjQ1NzQxMGQ0NTFlMTQ2NmUgcHkzaworODU0MTIgZDAyZDZiYjAyNTM4NTI1Mzk2ZmIyNzAwY2EzMTY4MmNhOTlhZWE3NSBweTNrCis4NTQxMyBlNTE3YzNmNTYwOTE4NGIxYTM3ZWRmNDg0MTU5MGZiNDU4ZjVhOTIyIHB5M2sKKzg1NDE0IDVlZjc2YmMxNzFhZDZkN2Q4ODRiYmU0YTdhZWY1YzQ5NzAzMWFhYTEgcHkzaworODU0MTUgMzcyMTM0MzhlMjFmYWZmZmU3MWNmNzBlYWI3ZDcyMWU2OTQ1ZDkwZCBweTNrCis4NTQxNiA0MGVjYjRkMDBmMjVhYjliMTQ2ZWJlOTJlMDIxNTI5ZGE4NjYyMGM5IHBlcC0zODIKKzg1NDE3IGM0OGMwOWU2OTNlNmM5MThlNDhkMjE5MWRlY2M1YzBhMDkwNjkxMzcgcHkzaworODU0MTggZmE5MDU3MDA3NzU1NTFmNDc1MDY5NDY0NTY4YzlmZjVhMjdkMDE3ZSBweTNrCis4NTQxOSAwZDE2ZDUwYzU3YTBmMjM0MmNlMjg1N2FhMDA4MDg1ZDBhYWJlNDlhIHB5M2sKKzg1NDIwIDE4NzViZmVkNTY4OWI5ZDAyOTI5YjY4ZGZhOWZhOGJjYWY5MjExNTEgcHkzaworODU0MjEgMzYxOWMxMjE0MDA3ZDNkNWUzZDA3ZDIzNTdmNjdiMjJhZDI0MzJmNyByZWxlYXNlMzEtbWFpbnQKKzg1NDIyIGVlYWVkY2JlMjgxZDU4NDRmYjM1YTNkMDM0YTMwMzBjZTRmOGVmMjIgcHkzaworODU0MjMgNjg5OWE5Y2E1ZjM1MzVkYjM0OTJhYmRhMDFmNmM0OGYxNTgzZGU3NCBweTNrCis4NTQyNCA4YjE5MjUwMmE0YTlhZDc4ODM5MDY5NmNkYTM3YzI2ZjEzYzZiNzg4IHJlbGVhc2UzMS1tYWludAorODU0MjUgNjEwYzI1YjVjZmEyODliZjc1NDY3OGI2ZDM0NmZjNjUwOTNmOWIyNiByZWxlYXNlMjctbWFpbnQKKzg1NDI2IGExZWRkYzY0Yjc1MDQ5Yzk3ODgxMDVhOTNlMWUzNzQ3YmFlNTk5NTAgcGVwLTAzODQKKzg1NDI5IDE5NjBmNThhZjc4NWQ0YTcwYWRiZmMwNDE5MmU3ODJiODE2YmYxOTUgcHkzaworODU0MzAgYTc1ZmQzMWRkYWJiZWVjYjAzOGFlYzZiZjRiNGI1YzcxYmQ3NmM5YiBweTNrCis4NTQzMSAwMGQxM2IyZjgxYTNjMzFhMTIzODg1ZmZmMGJiYjc4NDZiY2E2NWIxIHJlbGVhc2UzMS1tYWludAorODU0MzIgNjFjMzU0NzJhNGY4MWE0MjI3NzcxYzFmODBkYjcwYTgzZTE1YWM2NiBweTNrCis4NTQzMyA2NDc0YWRkZDI4MzhiNzY5NzdmZGI4NWJmYzYyMzcwMGNiMzQ3YjNlIHJlbGVhc2UyNy1tYWludAorODU0MzQgZjJmN2I3MGZjNWViZTRmOTBhYTQzNTA4NGI5MWZjOTRlMWQ3YzYzMSByZWxlYXNlMjctbWFpbnQKKzg1NDM1IDMzMzVlZGNlNDhhMzU0NjQ5YjJhOGE4YmM4ZGNjYmJhYTcyMDUxNTUgcHkzaworODU0MzYgYTRhNmQ4MjNmZjg5NTE2NjIyZjE1MjNlNGQxOTZhOTk5MGJjZGQyZCBweTNrCis4NTQzNyA0NzU1NzQ0NzI0ZjIwYmFkNDc3OTZiNWNkNzY3ZmEwNjc2OWViMTYwIHJlbGVhc2UzMS1tYWludAorODU0MzggMWYyMjVkNjY5NDFhOTIzMDI2NTIyMWM4MDIwMzZlYTg0MWMyYjdiNSByZWxlYXNlMzEtbWFpbnQKKzg1NDM5IGU3NmY1NTQxNThhODViZWEzYWY1MWQ5ZDhmNzc2ZTc4NDk2ODliZGYgcmVsZWFzZTI3LW1haW50Cis4NTQ0MCBlOWVhMDk3ODdhMzVjZjkzY2Y1MzVmOTY2NDlkZmFjMTI2YjBlZmQ0IHB5M2sKKzg1NDQxIDRjNTcwNmJjMmY0MzA1MWZjNjhiZjY0MmUwMTdhMWQ0YmY2ZDBlZTEgcHkzaworODU0NDIgNDlkZjc3ODg4OWU2ZmFjY2UzOTZlMGQxYmNjY2U2NzI5YTU5YTEzOCBweTNrCis4NTQ0MyBhNDY3MTFkZTkyOTEyMDcyYmQxODc4Y2FjZDcxYmZkYWFhMTU1ZDA2IHB5M2sKKzg1NDQ0IDc4YTEyYjgyOWE5YWE5ZTc3YzRiYWY5YzM0MjAxNmEyNWQ2MTZiZDYgcHkzaworODU0NDUgMWU3MmFiZjA3M2M1NmY1ZTMxMDMxMjAyZWJkODNlMzZjODQ2MDMzOCByZWxlYXNlMzEtbWFpbnQKKzg1NDQ2IGViZTE0Y2NiYTFiN2I1MWE4NGIxOGI5YTA2OTQyN2M1ZjhjYzJmYmEgcmVsZWFzZTI3LW1haW50Cis4NTQ0NyA2ZmQ0OWQwNTIxMzQ1ZGFkMWZjODJlOTYzNTdiYWM1Y2E3NjUzZTQ1IHJlbGVhc2UyNy1tYWludAorODU0NDggZmEyN2RkMTI5OGZlNTc3NjUwODcyZGNkMTY0ZjZlYWExNDAyZDRjYyByZWxlYXNlMjctbWFpbnQKKzg1NDQ5IDJmM2UwZWVjYzc2Mjc3YmY1M2MxNzcwYTQ2Mjc4OWVlMGQ1NmZkOWMgcmVsZWFzZTI3LW1haW50Cis4NTQ1MCBjY2M0MjRjOTY2NDI2YmQxNTIyMjAyZjIwOTRmMjkyZmViMGE0OTRlIHB5M2sKKzg1NDUxIGI1Y2UwNmJiYjA2ZmUyMTMwMzEwNzI5MjQ1ZTM1ZGM5NjIxOWYwZDEgcHkzaworODU0NTIgZWEyZmU5NTgxYzJkOGYwYTIwMzdmYTFhYjBmODQ5MzIxMjJmZTZlNSBweTNrCis4NTQ1MyAzMGIzZDdjNTI1M2Q1ODhlYjUwNzA2OTA1ZWU5MTkyMjk0ZWQyNzY2IHB5M2sKKzg1NDU0IDM2MTFlYTQyYjc5MmRjMTNjNTU0OGM5NjhiNWQzNzhmZTI5OTM1OWQgcHkzaworODU0NTUgYmE2NTgxZWNiNmYxZWU3YTQ4MzIzNTRiNzg4OWIwZDJmOTQyZDg2YyBweTNrCis4NTQ1NiBmZDA0NGNkYTk3ZDgzNzBmY2UzM2ExMzkwOGViYzA2MGI4MGY5MTU4IHB5M2sKKzg1NDU3IDZhYjBmOTIxOTY2MGI4ODJlZmQ0ZGY2NGM5MzE2MTVjOGY1ODFiY2IgcHkzaworODU0NTggYmVhZTc2ZWQ1ZWJmZTNmOGUzYzA2YmM4NjZhZDBlNmNkZjliNGJlZCBweTNrCis4NTQ1OSA3ZDc5Njg4MTU2ZGI1ZmRiYzkwMGQ4Yzc3MDcyZTYxN2I0OTFlMjQ3IHB5M2sKKzg1NDYwIGRjMjAwY2YyZjU2NThhYzEwNWRlZjUyZDY5M2FlNzc1MmQ5NjVkOTAgcHkzaworODU0NjEgMmYxNzlhM2NiMjA2NjBhMzJjY2Y4MTVlN2Y0NGIxNWNjNTMxZGEzZSBweTNrCis4NTQ2MiA4MmNkZThiNzM3MjgyMzE5MWM5OThkNDAwYzQ3ZmJhMjNlZDdmN2QxIHB5M2sKKzg1NDYzIDRhOGUwZDg5NzU1YjY0YzJlOTAzNTMyZWJmYjYxMTliNWVjMDVkNmEgcHkzaworODU0NjQgNjdhMjE4NTcwZjRhNGUxNmIwNDVhMzU4MzY4MWMxMDYxYTBlZWEzZCBweTNrCis4NTQ2NSA2NjBhZmRhZWIyZDZlNjA3MjNlYWRjYjY1NzRmYTA1YWFhYThiZGZmIHB5M2sKKzg1NDY2IDI4NTNjYWQ5Y2JjMDI0MzAwZTA1N2IwMDRhYTU2ZDg0ODg3MGFlMTcgcHkzaworODU0NjcgZTJjOThjNjBkZDY0ZDBhNWQyMTA0ZDczZmNiNTg2YTI0MTBlMTc0MyBweTNrCis4NTQ2OCBiNjUyMDYxMjliNWM5NGM2ODZkMTQ3NWE5MzA5MTI4OGRkYzU0NGI3IHB5M2sKKzg1NDY5IDk5NWMzM2UyMjYzYjFjOTEwYWFiNDFhZjRmMWExZWJhZjdjYjg4NzkgcHkzaworODU0NzAgYTVlZWFkMTQxY2I0NjM1NmY1ZWJjZGQ5ZDJlNGNiNTE4ODgzYTg5MyByZWxlYXNlMjctbWFpbnQKKzg1NDcxIDZhODQ4OTU1NDAxOTgyYzI2ZDZmY2RhYTk1NzIyNzM2NjRiM2ZhOGIgcmVsZWFzZTI3LW1haW50Cis4NTQ3MiA3MWU3NmQwM2ZjNjdmMjUwNzc0YWNiZmFmZmJlZGY0YzQ0NGY2YWY0IHB5M2sKKzg1NDczIGQ3ZjkwNzM1N2RhN2U5NTBjYmNkYzQxOTg3YzA1OGYxYjdjYzY5ZmIgcmVsZWFzZTMxLW1haW50Cis4NTQ3NCA4MTNiNTFhNmE0MTc5OTdkNTVjMTg1Nzk0Y2ZmNGMxZWFmZTJhOTRjIHJlbGVhc2UyNy1tYWludAorODU0NzUgOTgyYzhlYzczYWUzN2UwZWQ2ZDU0OTczZWJhM2Y3MGJmNjM5ZWM4YyBweTNrCis4NTQ3NiAzZDllZjA5OGRhZjJlMzZmY2JjNmQyMmY3YTk1NmFiNjczYjAxMzBkIHB5M2sKKzg1NDc3IGEyN2ZjMGZmMzY3OGIwMDk2NjM0MDc2NTBmMjllYTRmMjE3MzRmMDEgcHkzaworODU0NzkgMDhhOWMwNDYwMDRkZDExYTk0YWY5ZjFlYzMxMjJmYWQ0MjhkYjZmZSByZWxlYXNlMjctbWFpbnQKKzg1NDgwIDEyNDQyYWMzZjdkZGJiYTNjYmU5ODA0YTkzMjg5MDU0ZTliZGVjNDQgcHkzaworODU0ODEgMTkwZjI0N2VkYjllZWJjZjMwZGZmYjJhZmQxNDk5N2VlYjBiYzcxYiBweTNrCis4NTQ4MiBhZDQwYzBhM2UyMjE1NmExZTNjNWNjZjUyZDg4ZDhiZWI1NjAzYWQyIHB5M2sKKzg1NDgzIGI4M2YwYTY2N2U3Y2ViMmVlZDFjMGQzNmQ4YTRiMDc0ZGE4MzZmOTUgcmVsZWFzZTMxLW1haW50Cis4NTQ4NCAwN2I2YmI3NmVlNDM5MjNjNTU2ZmQwMDk3MTVmMGMzYTU1ZDU5YzNmIHJlbGVhc2UyNy1tYWludAorODU0ODUgMDc4ZTJlNDdlNTJiMDZhZmUxMmQxODE5OTk5ZWVmZGEyMTY3ZTYzMiBweTNrCis4NTQ4NiBiODg2YmY2MDI1MTNiNGY3ZTk3ZTE1NzE1ZmY0MDNkNWNiODdjN2U3IHB5M2sKKzg1NDg3IDkwYzJiNjU0OTBjNzUzMjMxNmFkMGQ3MTVkM2E2NzM2OWM1M2MxNDQgcHkzaworODU0ODggODBkM2EzNzQ5OWIxYjJiMjA5YTZlZDg1NzlmNjc2YjA1NTQ3NGUzNyByZWxlYXNlMzEtbWFpbnQKKzg1NDg5IDA2N2U4YjIwMDBkZDA1NzkyZWYwNDNhNjA2NzZlNWY1ZjVjZTIzYjMgcHkzaworODU0OTAgM2U3OTEzNGM2NTM1N2E3NjJkYTI1ZmFlMTA2ZTUxZWYzYWE0MDBlYiBweTNrCis4NTQ5MSAxYTYwMTNlZTk3NGIwODc3Yjk0YTEzM2M2MGJkMzI5MmM0NzhjYzdkIHJlbGVhc2UzMS1tYWludAorODU0OTIgMjUzYTI2ODc4NTg1NzQ4ZmJlOGJmNjU4MTI3MGFlYzg2NDc2Njg4ZSBweTNrCis4NTQ5MyBiN2VjZDk0NGI3Y2ViMmFkMWM3ZmNiZTEwODJhMmJhN2IwYmZiMjk4IHJlbGVhc2UzMS1tYWludAorODU0OTQgZDUyZDVkMzU5ZGIzMTAwMTBlZjc1ZDVhYjVhN2YyNWQ1YmVlMjgyNiByZWxlYXNlMjctbWFpbnQKKzg1NDk1IDA1MmMxOTlhZTE5YTliMDliODMyNDlkNjJhMTc1Mjk0NmEwYmJhZjYgcHkzaworODU0OTYgZjNkYThjZDc0MTEzNzhiNmQwOWQ1MDY4ODUwN2IxOWM4NTMwZDJlMCByZWxlYXNlMjctbWFpbnQKKzg1NDk3IDQ2OTU2YTI1YzI2NDFiZmU3YmM4YzVhYzNlYzU2YjE4ODk5ODg3MDYgcHkzaworODU0OTggNjI5NjYzMmFkMmNiZTY1ZjcwMzFiYmUxY2U2ZmYxYzIzMzIyYmFmYyByZWxlYXNlMzEtbWFpbnQKKzg1NDk5IDQyNjkyNjdlNmU1N2RhMjQzMjVkZDc2YjM2MjAzNDFhYWZiMjk4NDggcmVsZWFzZTI3LW1haW50Cis4NTUwMCA2Y2YyMjNlY2FhNmYwZGM1MzI3YzVjMTkyNmUzMTVmODcxNjA0MTcyIHB5M2sKKzg1NTAxIGNlYjEyNzAzYzZkYmEzMzAyNjE1ZWMwZWUxNmQ2Nzc2NjI1OGI5ODQgcmVsZWFzZTI3LW1haW50Cis4NTUwMiAyN2MwNTEyNDcyMzNhNmUyNGIzNmIxNzYzZTUxYjYxNGNkYWJmZTI1IHB5M2sKKzg1NTAzIDRkNWYwYzQ0ODdlYjlmZmIzNjVlOTMzMmQ3NWE0ZGVkMzNiYmM1OTYgcHkzaworODU1MDQgMTc4MmRhNDQwZmIxZTQ0NmY3NzhkZDdlNDMyNWFiNWM4NjY5OTlhNyByZWxlYXNlMzEtbWFpbnQKKzg1NTA1IGZlYThmMjFiMTk5ZDc0ZDdiNDA4ZGE5NWU3ZDUzNWE5MGYwNmIyNTcgcmVsZWFzZTI3LW1haW50Cis4NTUwOSA3ZDFlNDUzYjEyMGI2ZTYyYjlhNTA2MWFhZjYyNGJjY2E4NzkwZmNhIHJlbGVhc2UyNy1tYWludAorODU1MTAgODlhOGJmNTMyNWNkMTVmZWE5ZTMwZWU4ZmE5Mzc4ZTgzZjY3NGRlNSBweTNrCis4NTUxMSA1ZTE1NzYwNTA3NDliZWJhMThiMWMyOWNhMzg0N2U1ODQ5ZTJkOGZlIHJlbGVhc2UzMS1tYWludAorODU1MTIgMTc4MDY4NGFlM2FkOTdjMGZiZTZjYTNhYWM3MWYwNzkxNmIwNTQxMCBweTNrCis4NTUxMyBjM2YyYzVkMzVhZmFmY2Q4OWY3ODBlZGYxMGQ4M2E5OTAyNWE0NDM3IHJlbGVhc2UzMS1tYWludAorODU1MTQgZTUxMjM3MmY3NDk0NmQ2ZjhhM2I2MDU4NjgwYmYzMjUxMWE2ZWE2OCBweTNrCis4NTUxNSBjYzFkOGEyZGIzNDg2ZTQxMjgzN2EwOWI5NWQyYzkwNGE0NDAwYmE2IHB5M2sKKzg1NTE2IGY2M2Q3NDc2MjJiZDUxNzM0N2YxZWFmZTAxMmExMmFiOWVmMmE1NzAgcHkzaworODU1MTcgNDUzZmQ4MTgyYzJmOTZlOWUwZTE3YzNmMzNjZGY3MmQ1MDJlYTJiZiBweTNrCis4NTUxOCBiYjMwMzkzZDFlYTE4OWFkM2NiNjdiOTU0ZTdmNzM3ODAyMzg5ZjczIHB5M2sKKzg1NTE5IDE1Nzc1MWNjNGNkNTE4ODM3MDBlOTkzNmYyMjk3YzljZDZiNTJkZWYgcHkzaworODU1MjAgZTc3M2ExZjIzZDQzMzkzZTdiYmY3YTMyZjc0YjQxNTA3OWJmNjAzMSBweTNrCis4NTUyMSA5YzczZmUzZjQ3ZTI2OTA2MDk5M2QzNWE3N2MzYzUwNGM5Yjg0ZDk2IHB5M2sKKzg1NTIyIDZhMzY1YjlhMjJiYTljM2IwMWRlNTA4N2IwNmQyYTJhNTVhMTE4M2YgcHkzaworODU1MjMgNTIwMjVjMzU0MWQ4ODhmZDE5YjA0NzVkNGJlOTJkMWFkZmQwYjU1NyBweTNrCis4NTUyNCAxZjVhMjhiYTc0NzdkMDJhM2I4MTUyMDI5YTI5OTFhOGNlNjAzYzlmIHB5M2sKKzg1NTI1IDg4YmRlZjUzNjBhZjAzYWNlZmZlYjdjZjE3ODU5YTkwZWM3MDNhNzkgcHkzaworODU1MjYgMzIwZDBmYTIxNjU4ZDFkZjc0MTg5NmI0NzM1MjM2MDViMTk2MTk5NCBweTNrCis4NTUyNyA0ZWJjMDMwOGY0YjEyZWUzZjhiNThkOWJjOGFlZGQ5ZTZjNmEzNzRjIHB5M2sKKzg1NTI4IDBiNTBkODcwNjEzNDQ2MzRhNzExMzI5MmZmZTM5MTIzMGZhNzRiMTEgcHkzaworODU1MjkgODBmZTA2NmMxMzVhOTA0NzY4MWI1ZTQ3MWMzNTQ1M2YxYjhlNTg3MyByZWxlYXNlMjctbWFpbnQKKzg1NTMwIDQxODY4Y2E1Mjc0NGM4ZWQyZjNhN2UwZDQ1NGY3NDYwNzJiZWExNDEgcHkzaworODU1MzEgNTYzM2FmNTkwMDU3MDJiOTUzMTAwNTZkMWE1ZTRmYTRiZmU2MTg3ZiBweTNrCis4NTUzMiA4ZjZhYmEyM2ZiMmFiYzc1YmU5ZWIyYzBjY2U5NGJmMTJkZGQ1OGJjIHB5M2sKKzg1NTMzIDEwNDM1OGI1ZDRkMTQ0NmRiYzA1YWJlMGVmYmM4Y2RiMjNlMTU0MDggcHkzaworODU1MzQgZGMyNWM1MGE3YzExNjA2ODg0OTEyZDAyYjUwMTEzNmJkMDgwMDVkZCBweTNrCis4NTUzNSA2YjgzMTQzNzZkZTJlZWI0ZTQ1NmVlMDc0NWY4NWUyZjE2MTA1ZmZkIHB5M2sKKzg1NTM2IDkyZWE1NmI1MmQ4ZjczMTRiYzU3YWE5N2MxODUyYTgxOGZkMzAyOTggcHkzaworODU1MzcgOTcxMjU4NmZhNDJmNWY5ZmVhMGUzNzEwNTU3ZTgxYzhiODM4ZDdiZSBweTNrCis4NTUzOCBhYzg2ODA2ODVmZGVhYTNlNzdmODA4NWRmNTQ2NzU4NTNlZTY2OGM2IHB5M2sKKzg1NTM5IGQ4Mzg0ZmNlM2M3M2I5ZGFhZjQ2YTdiY2Q1MTUwZjE4ZTBmOTZlZDEgcHkzaworODU1NDAgNzhkNTM4NTkzOTVhNDQ2MmU3M2Y2ZWM2NzM1YzU2MzEzNTJiNTFkOCBweTNrCis4NTU0MSBmMzNiYjg1MDc4OWVhODUyZWQzODY2NDU1NDZhOGRkMjU5ODQ5MzQ1IHB5M2sKKzg1NTQyIDdkZTM2NWMxOTg2YmFiYWI2ZGM5OGVlN2IxNzdmMzRlMjY0NGQxN2IgcHkzaworODU1NDMgNmY0Y2Y3MzAzMmZjOWI4ZmM4NDZiMmFhMmI0MTZhMjcxNjJlMzJkNiBweTNrCis4NTU0NCA5MzQ3YjBhODVjYWY1ODZhYzBlZDE2ZWQzOGMzNWY1OWExYTE4ODBlIHJlbGVhc2UyNy1tYWludAorODU1NDUgZWVjNDk5ODQ3ZGY3YmI5ZDgzODRiYmFkYjg0MmEzZDE4ODY2MzM3YSByZWxlYXNlMjctbWFpbnQKKzg1NTQ2IGI3MWFhZjRlN2Q4ZDkwMWJhZmYwNmNjZDE1NTU5MWFkY2FiM2Y1MmQgcHkzaworODU1NDcgMGUyY2JjMzFmYzkyNWUyOTYyMmU4NGZiZmYzNDI0YzgwNmJhMDBhOSBweTNrCis4NTU0OCAzOTRjMDBiNGM5MTk0Y2ZkNzI2ZWEzMmIzMTI4MjFmODc0NmY5MzBmIHB5M2sKKzg1NTQ5IDg0NGVkNmRkZGMwMzFlZmU5NjRlMzVkY2JiOGQ1MjljMjBmZmE0ZmUgcHkzaworODU1NTAgMzQ4ZjMzNjk2NDAyMTU1MDE0OTljN2YyZWE4MDU5YWY5MWY5NzBjMiBweTNrCis4NTU1MiA5MDA1Mjg4OWNlM2RlMzNjMWFlMGEwOWI0ZDA0ZmIzYzEyYmNlODZhIHB5M2sKKzg1NTUzIDI5MmIxZGYwMWJhZDg3YzdjM2Q3MTc1ZjZhNjc4MzFmNzQ4MTliY2EgcHkzaworODU1NTQgM2M0MjI1YmY4N2I0MTI2NjM0NTY4ODNhYjhkNWUzZDVmNmU3OGZmNCBweTNrCis4NTU1NSAyYjE3YmU2MmM3NGZjYzgwMzUyMzE0MTc2MDBkYWY3NGY5MjM3ZjVjIHB5M2sKKzg1NTU2IGQ0MzkwYjZiZjdlYzhlMTZmMmU0MTBlMzk1NTcxMmYwNjFkNTczMjIgcmVsZWFzZTI3LW1haW50Cis4NTU1NyBkZGYyZWFkMjZhYWE0NWVhNjllMDhmMTFmMTMxZjE5M2U1Y2Q3M2M4IHJlbGVhc2UzMS1tYWludAorODU1NTggNGQ2YzYzYzY1NTUwYzIzNjk5NDgyNjgyYzQ3NDZhYjY3Y2JlY2RhYiByZWxlYXNlMjctbWFpbnQKKzg1NTU5IDkzMmY5N2JmYmRjMGM1MDQ5ZmVhZmM4MjFhOGFiMTQ2ZDE0MTdkMTIgcHkzaworODU1NjAgZmNkYzJmYWU1MGMwODFhYzliNzAzZGNhYzk1N2Y5ZmIwMzM0ZDBlZCBweTNrCis4NTU2MSBmOThjM2UyZmQwNTUwMzMxMjQ1MmUxMGE4YjVjNzc2MDUxYzNiMzgxIHB5M2sKKzg1NTYyIGZkNWM4M2Y3NjQ0NzUwYmQyNGFhZmYwY2MyYmU4ODc2YjMxNzkzZWIgcHkzaworODU1NjMgMzYxOGQ5ZDc5MDJkM2NiNDQ4YjI1MTdiMGZkNDgwZDQwOGFiMTVmZiByZWxlYXNlMzEtbWFpbnQKKzg1NTY0IDBiZDBlODdhNjg1MTU0MjI0NmRhNWE3ZTNmZTU5ZjczNWQyOTI2NTggcmVsZWFzZTI3LW1haW50Cis4NTU2NSBmOTE4NGU3Y2QyNWNlMTMwNzUyMDRkYTc4ZGY0M2I4MTcyZjc2ZmM4IHB5M2sKKzg1NTY2IGRkMDg2N2JkOTU1NzkwZDhjODYzNTk2NzE0ZDNkNGYyYzk1ODIzMDUgcHkzaworODU1NjcgMDllZmZmZTcwMDMwNzAxOGVmZTFiMTY3ZTBlZjZkM2ZmNGM2N2UwZCBweTNrCis4NTU2OCA3NmM4ODhmZDIzODBkZjI2YjgwMzI2ZjFmNjY1Yjk4OTI5NWIxMTNmIHB5M2sKKzg1NTY5IDU1ZWQ1YzUyNDQyOGNhMjI4NjRkYjY0ZDhiMDVmNjU0NjhiNWRiNWQgcHkzaworODU1NzAgOWVkNjhkZDZiNzFmZjcyMzM5YjdiYTk3Y2E1ZDI0NzQ3NWUzZWU5YyBweTNrCis4NTU3MSA2MDM5ODQ1MDkzNDMwMmMxMDZlYjkzNDI5OWE4YjQ2NWMxMjViNTQwIHB5M2sKKzg1NTcyIDY4NmEyYTkxZjgyNjA4MGVlOGU1YzMyYjliZjdmMDk1NWYyNzZlYWQgcHkzaworODU1NzMgM2YyZTE0NWM0YTAyZTY2MjBmY2M4NTUwNmNkNjJmZGYyNTQzNWFkMyBweTNrCis4NTU3NCA1MTgxYzNiZjg5NzBlMTdiZTEzZDIxMzQ0NmExMGJiNjNjOGU0NmRhIHJlbGVhc2UyNy1tYWludAorODU1NzUgYTQ0MmVjYjcwODQxZjJkZDdjNTVhMDk1NDc1OWM2YzY0ZmE1ZjYzNiByZWxlYXNlMjctbWFpbnQKKzg1NTc2IDBiYTUwZDQ4NWYwNzI2OGEzNDdlNTA1YTZmYWQ3Y2QzZDJhNWJmOGUgcHkzaworODU1NzcgYjRiZGQ0MjhlYjJiMWYyMzlhMzI0NDIzYjQxN2FiNTRkM2E2MDI1ZiBweTNrCis4NTU3OCBiNzQ5ZGM0YzM3NGMxNjdlYmExMjhjOWE5NjI1MjVkYjFiMjZmZGU1IHB5M2sKKzg1NTc5IGUxZGM5ODYxYjQzZjM5YzExMjI3ZDZiM2QwMTExZTUyNjhmMjM4NDggcHkzaworODU1ODAgNmRjYmE5M2Q2MjYyMDJhYzA1OWUwZGEwMWUxODFiZWYzMmI2NWQxNCBweTNrCis4NTU4MSBkZjBlMzQ4ZTcxNzYyZTlhNTg0NWNkYmY4MGZiZDZhOWM0OTViMzQ2IHB5M2sKKzg1NTgyIDM3OTRjOWI1MDgyNGZkN2I1ZjgzODQ2ZWY4Nzk5YzA2MjFlYmMyNjYgcHkzaworODU1ODMgYmE4NmYzNGYwOGRhNmJjYTFhODhhYzk2ZTdmODViZjM4MmMyN2IwOCBweTNrCis4NTU4NCA5MzA2ZmYxYzNkNDZmN2QxN2JmMWIwYzYzMTdkMGIwMzUyMmQ5NGJiIHB5M2sKKzg1NTg1IDM0MDM1OWQ4MGNhMDU2YTIwY2Y1MjQ1OTE3YzBmMDI5MTIxZmY2NDkgcHkzaworODU1ODYgNDQzYWIyY2JhYmNiY2FkYWRmODk5MGE5ZWE3ZTZjODBhMGZhZTg4YyBweTNrCis4NTU4NyAwMjgzMDU1M2RiZDE5OTI5Nzc3OTMyYTYwMDQwZWU4Nzc2ODJmNzI5IHB5M2sKKzg1NTg4IGZkNTEzNWNiZDkyOGRmMzMwZTM5N2UyNjg4ZTc5OTVjODU4YjUzZGIgcHkzaworODU1ODkgNjA4N2IxZjZjYTliNzRlYjgyY2NiNTA2ZjM4MDJmNTY5ZGJlZTJjOSBweTNrCis4NTU5MCA2YjI2Njg4NzNmMzBkMjkxYzA5NjYzZmUxZmEzNjYzZDUwY2UxMTM1IHB5M2sKKzg1NTkxIDQzNTc1YjA5NjllZDA2M2MwOWY3NDRkYTgxYzBjMzYyY2M4ODg5MjIgcHkzaworODU1OTIgNmVjZTYyOTQ0NWI2MGIzNTE1YjYyYTdmNGIzOGQyYTIwNzA5MjQzOCByZWxlYXNlMjctbWFpbnQKKzg1NTkzIDFiZjc2N2YyOGRiNGRmNjIzNGUyMjAwYmNjOGU3NzZiYjA3ZGNkYWQgcmVsZWFzZTMxLW1haW50Cis4NTU5NCAwNTA1ZWJhNjIzNDcyZmNlZmJmYzFiNjM5MWNkNzFkMzYxNDlkZTg5IHB5M2sKKzg1NTk1IGM5OWNmOTEwMjQ3NmM0OWM1NTA1ZDNmOTdlNGI3MTNiOGVmZGNmYTggcHkzaworODU1OTYgZWFiYzVjNTNmMTM0ZWFjY2M1MWI3MDUxNDljOWMxZWQzYWQzMzBhOSBweTNrCis4NTU5NyAyODgwZTcyYTQ2NGJkMWMxYTg4NTFlZjU5ZTgyZDAzMGZjYzk5MGY0IHB5M2sKKzg1NTk4IDZlNTU5NzkzZTQ1MGNlZTM1NjUzMjY2ODA4NWFiMDNiZWNiMjhiZjAgcHkzaworODU1OTkgMTU4NTk3NDBhYWU2YzJkNzAyYzVjNzljNGU5YjFhODgwYWQ5ZGY2ZiByZWxlYXNlMzEtbWFpbnQKKzg1NjAwIDcwMjUyNzhjNWE0MWE4YjZjODU5MzQxZmQ0NzMxYzBhNGEyMTY4YTAgcmVsZWFzZTI3LW1haW50Cis4NTYwMSBmNjIxNmM1ZjA2ODAzYWU1YmQ5ZTVmOTYzNzNjZGZmYWNlMWZjMzJlIHJlbGVhc2UyNy1tYWludAorODU2MDIgMTVlM2FkMGNhMzY0OGI5Zjk3MGNmZWZlZDZkYmNlODJmNjEwN2M1ZCByZWxlYXNlMjctbWFpbnQKKzg1NjAzIGNhYTE3YTAzMzE3NmIyOWU4NjY0ZTYxZjEwNTI1NzBlM2E3ZmUyMzkgcmVsZWFzZTI3LW1haW50Cis4NTYwNCAwODg0MDI0NjkwMTZiYTUxZjliNWJhZTBhODM4YTk3NDY3MDhmMDc0IHB5M2sKKzg1NjA1IDkzMWYyMzkwODI5NjZmZmNjOWRmNjkzYzQ0ZGMwZDNjYzYxNWM4MjggcmVsZWFzZTI3LW1haW50Cis4NTYwNiA4NzMzYzY5MDNmY2NhMjZkZmZiZjA5YWFjZDQyNjE2MjM4NTljYzk4IHB5M2sKKzg1NjA3IGJlNjBjOTYwYWMwOWE0MGUwNDI1MTAwMDk3ZjM0YzJmYmIxMzFhMTAgcHkzaworODU2MDggMmU4NTA0NzExOWQyMWJhZmY5MTQ3OGM1ZDY5MDZiMDJhZjFkZTk5MiBweTNrCis4NTYwOSA1YjJhZjM1YjhiNGI2MDZhMmMwYjBiNWE3MzBhZDMwMTRlZDQ2NTU5IHB5M2sKKzg1NjEwIGQyNTM0NmMwYjlkMDhkNjJiYWMzYmZiNjBjMjI3ZTQzYmZhMjc1NTMgcHkzaworODU2MTEgM2I1ZWQ4NDkwYWIyYzJhMzJhMDZjYzUwMDlhZTllYjdmMDk4NDI4NyBweTNrCis4NTYxMiA2OTc0MWQ0YjhhNjAwMzlkMDVkYTRiMzA5OWQwZWIxMmM3OTEzZjA1IHB5M2sKKzg1NjEzIDk2ZDdlNzg3NGY4YzQ2MjY1MWU5MzFjMTM0ZjExMmQ3Njk5OGM4Y2MgcHkzaworODU2MTQgOTY2ZWMzMWI4MzQyYzc2MjA4ODNiMjg3NTU0NDg1NTVhNzI2YTgxOCBweTNrCis4NTYxNSA1ZGE4MzdmY2Y2NzU5M2FlYTU0NzI0Nzg5MjhkNDI0YzhmMzJiZjQwIHB5M2sKKzg1NjE2IDQ3M2I5MjFlM2ExZjNiNmQxNWVmNzk2NjY4MjYyNjQ2YTRhYjRiOGMgcHkzaworODU2MTcgN2RkZjYwYzg4OTZhYTA0MTg5OTYxY2JiMzUxMjg5MDY3N2NmMTJkYiBweTNrCis4NTYxOCBhNGRkMzgzOTEyZDg5OGRiZGJhNjU4NzlhYjgzYTdlNDBmNGFkOWJjIHB5M2sKKzg1NjE5IGE5MDQ3Y2UxZTgxZGFjMjcwYzJjZDllY2UwNzhmMDMwYWE4MWU3MDkgcHkzaworODU2MjAgMTljYTcwYjQ2M2M1OTkyY2JhZjdlYmI3YWU1MzI1YThlYWMwMDc1NiBweTNrCis4NTYyMSBhYTJlNDYzN2Y2Y2U5NzE2NDJhNDc4MWVjOTFhNDFlYzM5YjljZDhkIHB5M2sKKzg1NjIyIDU3MzdhZDcxZTllMTllOTQ2ZTJjNTBiNmI2MzA1ZTM0NjU5NTY1MGYgcHkzaworODU2MjMgODdkY2ViZTc4ZDY3Y2EyYjI3ODFiNjhiM2U3NTkyOTNlMTFjNTE4NiByZWxlYXNlMjUtbWFpbnQKKzg1NjI0IDA5OTllM2E0NDczNWJlNjFlNWVjMTZhMDFiYTJkOTc1MTI5Njg0MDYgcHkzaworODU2MjUgZDY5OTcwOGRjMmMxOTA0YmM5MzBlY2M1ODE4Zjg4MzRlYjcxNGI2OSByZWxlYXNlMjUtbWFpbnQKKzg1NjI2IDVhMmQzNDQ5YjU3NWUzYTEwNTdhMWRiYmRiMDBlNTUxOTBkMTcwNTQgcHkzaworODU2MjcgMDY2MDhjYzI1ZmIyMDRjYWU0NzYwZTVlMzM4MDNkMDA4NTEyYTEwYyBweTNrCis4NTYyOCBjZTRkODEwMjU3YjQ0ZDhiNWFkNmVhZTkyOGM5YjUxNWQwNWIyOWIwIHJlbGVhc2UyNS1tYWludAorODU2MjkgY2E5NjkwOTJmNDVhNmNkYjg5MjExM2JhMmQzOTFhNmQwYmRmNmZhYSBweTNrCis4NTYzMCAzMTFkN2FiYmZiZTMwMGExY2JjYTRiZjIwM2JhNjk1YmY4ZmFjZTE5IHB5M2sKKzg1NjMxIGJiMjEzNTllODhiOTQ2NGUyNjgxZDk3OGY5OWU4M2MyODNhY2M4ZGQgcHkzaworODU2MzIgMzE3NTBjNzI3YWUzMDUwYzAwMWM4MDIyNzM1ZTZlNmYxNTk3MWVlMCByZWxlYXNlMjctbWFpbnQKKzg1NjMzIGJjYjI2MGQ2OGIxNThhYWVkMzBiYmE1MjcyMWRhNGM1MTVkZmJkZWQgcHkzaworODU2MzQgODdlNWI1OTM4YzY1ZjBjYWM0MzA4YzU4OGUyMTJkNjVhYTczZmU4NCByZWxlYXNlMzEtbWFpbnQKKzg1NjM1IDQyMmE0ZmIwYTQ5MTI0NGQ1NDM0MDkwYjdhNjAyMTRlNGQwNmVkYWUgcHkzaworODU2MzYgMDczZTFiZTc2YjQ3NDM1ODk0ZTZmZGQ4N2E5ZmVhMGVhYjE0ZjA5ZCBweTNrCis4NTYzNyA5YjIyNTBmYjgwZDhiNWJiNGI5MDEwNTJlZWMyNGE4ZDIxNzg0MDJiIHJlbGVhc2UyNy1tYWludAorODU2MzggOWU0NWZjODA1Mjg4YTc3Yzg0YTI1MjNiOTRiN2E1ZWFlN2ZkMzRhNiBweTNrCis4NTYzOSA2ODQ0MDI3MjU0ZmFlNmIxYmY5NmFlMjdkYmFkMzZiZDM0YjFjZGYwIHB5M2sKKzg1NjQwIDE4NmFmMDUxZDA0ZjIxMGIxYzdlMDZlODkzZDRlOGRjZWJlNzZmNTAgcmVsZWFzZTI3LW1haW50Cis4NTY0MSA5OTRiODc5OWYyOGQ2OGE1ZTRiOTBjMmE4Mjg0ODcxMmE5Nzc1YWJjIHB5M2sKKzg1NjQyIDIxZGQ3MTkzOGE0NDcyZDI0NmU1ODM4NTA2NTBiNzZiYzM5MGIwMjUgcHkzaworODU2NDMgNzRkODFhM2EwZDU2NWExODc4NTlkZDZhOWMzMDBjZTU3Y2ZiYWM5NiBweTNrCis4NTY0NCAwNWQ3YjE5OTFmZjcyZTc0ZjE1MjZhOGExZWM3NTUzNzY3MzYzMzU0IHJlbGVhc2UzMS1tYWludAorODU2NDUgYjQyZjk0OTY0OGJhYzU3ZmRjMDAxMTliM2I3NTk3YTc1MWU3OTQxNCBweTNrCis4NTY0NiA2MzNkZTU3ZmI3M2FlMTE2MzIyNDA5Nzc0MGQxYTQyMTI0ZjBmZjkxIHB5M2sKKzg1NjQ3IDNjOWFmYTkyZjhmZGM2NTMyYjExODY3OTgwMDJjMDA0OTcyYjE3MDUgcmVsZWFzZTI3LW1haW50Cis4NTY0OCA2MjNkZWFlNzczMjQzNjdkNTE2YWE0ZTFmMmQ0MmQ1Mjg2MjlkMDcyIHJlbGVhc2UzMS1tYWludAorODU2NDkgMzlhMmMzYjEwYTdiMWZlZmFmZjRmN2IyNjMzZDQwYjcxMGJmOTczYiBweTNrCis4NTY1MCA5YWMzZmUyY2E0OWViNWVmYWI4NDNiYzg1NWQxMGZkMzU5YWRlNjkzIHJlbGVhc2UyNy1tYWludAorODU2NTEgZWZkMzY5OTgxYjhkZDU2MWNiNmFiYzdjYTI1M2VmOWZjNmU5YTczNSByZWxlYXNlMzEtbWFpbnQKKzg1NjUyIDM4YWQ1N2RiODhhYzRiZTJmNTJjNzA3NTFhYTRiMzEwOGJlNTcxNjggcHkzaworODU2NTMgMjQ0Y2JjYjY3ZGNkODdlMTFiNjM2MzQ3MGIyYjg3ZmI2ZjUxYWNmOCBweTNrCis4NTY1NCAzOWNkY2M3ZDNlMjBkNTQ0ZWFhOGE1YzRhYTNkNjkwNjg2OGU4ZjdiIHB5M2sKKzg1NjU1IDAyM2I0MTM3NjI5MGExMjFjNzdhMjRiNzAxNDcwY2FlNzBhMWIyM2YgcHkzaworODU2NTYgM2E0N2ZiY2IyOWIxMjA1MDg3YzllM2NhOWIwMjU1NmE3ZGRlN2U2NiBweTNrCis4NTY1NyA3YWY0MDZmMjE5YTRlNjFiNDk4YWRjNzFmNWFhMjdmY2ZjYjlhZTMxIHB5M2sKKzg1NjU4IGQ1OGNlM2ZmYjFjYjY5N2YxZWVkYjRhNTNlYTNiMTEyNzZiZDhlZTEgcmVsZWFzZTI3LW1haW50Cis4NTY1OSBiMDIyOGFmNmRiMTE4MGExNzFjN2RlMTIwNTdhZDkzNjYwNTNhZGMyIHB5M2sKKzg1NjYwIDk1ZTNhZWViYjVhYmNkODFlNDgxNzViNGZmMGQyMjk5NWRlMTVlMjYgcHkzaworODU2NjEgZDFkZWY3YjJhYmQyZjU5YjQzMjU0YmEzMjQwOTc0NjJmMWRiMjBmYiBweTNrCis4NTY2MiBiMmE5Y2EyYjYxYTI0MWIwZWQ4ZmQ3ODA4ODExMzAwOGUzNDI3NGEwIHB5M2sKKzg1NjYzIGMxNDdmOTEwYWY3MDA4NmZkNjNkZWFlMGUzZjYyMGI5MTYzYjQwZDggcHkzaworODU2NjQgZTg5NjlmYjgyMmZjMmEyNzlhZTM0YmU3M2Y4ZTFlMTVjNDUzYTNkMCBweTNrCis4NTY2NSBmOGZjMmQwM2Q3ZTQyYTEyZTkyZWMyNzQ4NjM0NzUwOTJlYWQ4ZTdkIHB5M2sKKzg1NjY2IGU3NTgwNjUyYWZiOGU2Y2U2YTM5NWFkZmVmZmM1MTU2MzQ3MmJjZWMgcmVsZWFzZTMxLW1haW50Cis4NTY2NyBhMzE2NTgxMjkwMDgwNzQwZjdiNjMyMGNkNTczMzQzODFiMjY3NmI5IHJlbGVhc2UyNy1tYWludAorODU2NjggYjFjYTdkNWE5Yzc0ZDcwY2FjMTQ0ZDQyOWQ3MTJmNzhiNzczMTU0ZCBweTNrCis4NTY2OSBiMWJkYTFlYzk5NWZhMTAzNmRlMDlmYWEzM2MzNTUwYjJmNDM2ZjQ3IHB5M2sKKzg1NjcwIGUwY2NiNWY1MGUwYzc5MDYzN2VlMzExNTI3NzA1MDQzODAwMzcxYmIgcHkzaworODU2NzEgMTZlYWQ4M2Y3OWNjOTljZTE0MTdiM2YwNDgzYThhMWViNGVkZTFmNSBweTNrCis4NTY3MiA5NmE2OTc2MmI0ODE2MTY3ODE2MDczOGY0MzkwYjQwMjJiNDNmYmE0IHJlbGVhc2UzMS1tYWludAorODU2NzMgN2FhMTRjYWM2ZjRkMDI3MzllY2RiNGI1ZDMwNWQ2ODFkNTkzODE2NyByZWxlYXNlMjctbWFpbnQKKzg1Njc0IGViODgzN2VmZDg0YzViMWVkYWFmY2JlOTA0NWU3NDE1ZmQ5NzZmOTIgcHkzaworODU2NzUgMzUxZDc5NGQzMmY0NDMyOWMxMDczNzNlMWRhZWM4NjI1MzBlZWQyMyBweTNrCis4NTY3NiBhYTIwM2Q0NzhiYjgxMGY2ZGUyYjYxMDJmZTQxNTlhNDIxMTYyMGZjIHJlbGVhc2UzMS1tYWludAorODU2NzcgZDM5N2IwMjYzMWI1NDdkOTRjNjdiNGI5MTM4NGU5NWU2ZDEzMGYwOSByZWxlYXNlMjctbWFpbnQKKzg1Njc4IGJlYTE0ZjAwZDNlMDEwMDcyN2ZmN2MwZjg4ODUxZDc2M2UwNjdjYTMgcHkzaworODU2NzkgYjBhOGZjZGEwNjU0N2Q2ZDM0ZTMzNDcyMjgyNTljMjUxMDM0ZTJmZSBweTNrCis4NTY4MCBjZTlmNWNlMzNhZDJhMGY1ZDAzY2QwOGFhYTc4MzU4MzYxZDJmODRiIHB5M2sKKzg1NjgxIGE0YzEwYTQ0ZDlhZTExYmVjOWM5OTk0MjZlODc0NDY5NmVjYTFjZTUgcHkzaworODU2ODIgMTdjOTZhYWY5M2M4N2QxMDdhM2EzMDU3OTg0OWY5NDliMzRhZmJlNyBweTNrCis4NTY4MyA1YjA2OTg5MmU0MTNhOWUxMTVhYmE5NjA0OTQ4ODljZmRiYzJkOTQzIHB5M2sKKzg1Njg0IDhmMDYyNTk1NGZmYTNjZGQ3MTE2MjM5YzVjYzk4YTA2NmFmMzcyNjcgcHkzaworODU2ODUgY2RmZDE5OGE2ZjFkZTMxMzY2OTk1ZWM2ZDg1MGZhNjg5MDhkYTZjYiBweTNrCis4NTY4NiA3NTJlNGI1YzY0ZTk1Y2FjNDE2MjY0MWRjNDM3MTY0MGE1NjVlYmMxIHB5M2sKKzg1Njg3IGM3Mjc1NzAzM2Q0NGY4NTNkMGY2NGI1OWEyODBmMmIwNjA4NTRlN2EgcHkzaworODU2ODggNjhiZDc1YzY5ZGIxNTBmZmRjY2IyMDM3ZDQyZmRmM2Y0MWRkNWQ0MSBweTNrCis4NTY4OSAzYzMzNjM0OGEyZTk4NmZlNDc3OWMxNTNmNzg3NGM0NTk4NzExZjE4IHB5M2sKKzg1NjkwIDM3MmM5ODA3ZDc1ZDk3MTRlNjA2NDNiOTBhZjBhMWE4YjBkOTYxODMgcHkzaworODU2OTEgNzdjMTNjOWM2ZTU5ZTM5ZTk2OGM0YjRlZmZiNjNmNzE4ZTM1MzU4YSBweTNrCis4NTY5MiA1MTk1OWYzOWE3ZmIxMzZhNWVmMjkzNjhiYjczODMxMWI4NjVmZTdkIHB5M2sKKzg1NjkzIGIwYmE3ZWViOThhNTVlOTQ0MmIxZDA1MTlkODNiYWZkZmVhMGVkZmIgcmVsZWFzZTMxLW1haW50Cis4NTY5NCAyZjdlMDE2OTQ5MjY3NTg2NjViMTY5YjRjODlkM2YxY2JmZTUzMjgyIHJlbGVhc2UyNy1tYWludAorODU2OTUgODZmMDA2MTJjYmQ2MGU5ZTE2NTQwZTgyNGJiZGQ2NDUxZjE3MzQxNCBweTNrCis4NTY5NiBlY2ZmNDFlMDY4ZTZmZTkxZTMwZDFiYTQ4OGRmZmRiYmIxZDQyYzIyIHB5M2sKKzg1Njk3IDgyYjA4M2M5NmEzOWZiZjcxMzA5Y2E4M2I3MmMzZTJmMjgyZTVjMzcgcHkzaworODU2OTggMjQ2YzA4YzgyNWExMDU4OGQ4MDZhY2ViMTJkOGMxNDJjOGE5MjUxNiBweTNrCis4NTY5OSA1MDM2MDBiYjI1ZWFhODk4ZmUyNmI4Zjc2MzhhYmJkNmYyZTJiN2VjIHB5M2sKKzg1NzAwIDNmYWZmN2U1MWY0MGRlZWQwZDQ2ZmI5ZjJlMTJlZDEyZGZhYjUzNTggcHkzaworODU3MDEgMTVlNDE1NTJkY2JkN2NjMDMyMTY2NmM0MjJlOTEzNzAyZDczNDY5ZiBweTNrCis4NTcwMiBiYjMzMzk3M2RlMzhiYzMzOTA4MjZkMDVmMWI3MWI5YzNmMmVjNDhmIHB5M2sKKzg1NzAzIDI3Y2U5OWZjMjUyNzAxNDc1ZTlmOTkwODFhNGJmODBiYWNmNzRlYTIgcGVwLTM4MgorODU3MDQgMWE5MDUzOTFlM2VkNmVkNDI4YjdiNmI1Mzk3NjY2MTk1ZmMzYjYyYSBweTNrCis4NTcwNSA4OTEyMTkyOTgyY2M4Mzc4MTkzMjlhM2ZmODUxMDk4Y2QyYTQwMWNhIHB5M2sKKzg1NzA2IDY2MjhmODZkYjJiNmI3ODkwMmFjYmI1MjY2OTA1NTFmNTU5ZmQyZGIgcGVwLTM4MgorODU3MDcgMWVjMmJmYTU0Y2FiYjliYjYzNDc4YjViYjYxOWM5ZmVlMzMzZmI3OSBwZXAtMzgyCis4NTcwOCAwMjYzNWJhZWFkNWY1YWI1YTczMTZjYWE2ZTBhYjE0MzI2ZDUyNGY2IHBlcC0zODIKKzg1NzA5IGUyYmExMjQ5YTJmNTYzNjYwMjJiOTY4NzkxYThmYTU1M2M2Yzg1YzIgcHkzaworODU3MTAgZDYwN2I2MzEzMDVkYzBhNzAyMDhkYTgyNDVhZDBmZDVjYWExMTkyZSBwZXAtMzgyCis4NTcxMSA0ZDU1ZjBiMDkwZDU4MGQ4MmY1YmQ1NzhjMDY4ZmQyYjE5ZjczMWE5IHBlcC0zODIKKzg1NzEyIDEzMDNjZWFmNDQxYTljOTNmODJlM2Q0NDIwMGVlMjkyNzEyNjIxNTkgcGVwLTM4MgorODU3MTMgYjQ3ZTRlZTE1NDAzMmNlOGI0NGM4YWFlMjA4NWViNGEwODkxODBhOSBwZXAtMzgyCis4NTcxNCA3MGQyYjRhZWRjMDllYTQ3ZjAxNGVhMjIxZmUxNmYzYjY4NTljYjllIHBlcC0zODIKKzg1NzE1IDU5ZTliNThkZGFmODQ4ZDNhZTBkMDg2MWRhMTQ2M2E4NzZhZWE2YWQgcGVwLTM4MgorODU3MTYgNDJiODRkMzE4OGQxMGVmYjIyNmI1YjgyZWIyZjMxMDA3OGFmYjlmZiByZWxlYXNlMzEtbWFpbnQKKzg1NzE3IDRmMGRkZGFmODJkNmE3NDc3ZTQ0YzU2YzQzMWU3NWQ1MDMxMzI5NzEgcmVsZWFzZTI3LW1haW50Cis4NTcxOCA3NzE3ZjhjNDVmY2MzN2ZmNzA1MjMxYWIyNmE0ODgwZjIzMTNhYmJmIHBlcC0zODIKKzg1NzE5IDZlOGQyZTJkOGQ4MjhmNzM5ODlkNzUzZDZlNWFiMmMyN2NjZWZkYjggcGVwLTM4MgorODU3MjAgZTNlNmFhNjMzZjMzYjRlOTY3ZjcwM2ZkNTdiZjVmMjEwNGNjMjAyMiBweTNrCis4NTcyMSA3MDcyYTViMjgxZDM3ZTVjOTcyYTdhZTgxNzIyNWFkNzhhNGFjYWYyIHBlcC0zODIKKzg1NzIyIGI1MDI1NTY5Y2JkNDA2Y2JhZTk0YjkzN2M2OWFlZDllNGJmZWMwYTIgcmVsZWFzZTI3LW1haW50Cis4NTcyMyA4ZTYwZDdhOTYxNDIyNzJmZjE3MWJlN2MwNmNlYmVlNmIxYzZhZGJhIHJlbGVhc2UzMS1tYWludAorODU3MjQgYWQ4OTIzNzYwZDVjMGRhNzQyMzg1OTk0Nzg2NjcwNTMyODQ4ODEyOSBweTNrCis4NTcyNSAwNTExYzg2OGE0ZTM4YTRjNDBiYTVmOTU4M2I1M2Y1NTY1MmVkYzkyIHB5M2sKKzg1NzI2IGI2YWQ0MDEzNzdmYzU5YmNhOTE5MGNjMTUzYTE3YTNlMjFmZmEyN2QgcmVsZWFzZTMxLW1haW50Cis4NTcyNyAxZjBhYjcyOWM2MzI1MzViNGUyMDczMDhkYzkzMDExNzFhN2Y4MmIyIHJlbGVhc2UyNy1tYWludAorODU3MjggMDQwOTBhYjM1MzFlNDMyM2UxNDM4OTlkZjRlZmY0YmJlNWFkZThmMCBweTNrCis4NTcyOSBjNDdlZjE4MGJlMzlkNmM0ZWUxYTRlOTNjYjRiYThiNjA4NzAxYzg3IHB5M2sKKzg1NzMwIGUxMWFjMzAxOTliMTBhYzM1NzliZTY2M2Y4MTU0YzM0YmUzMjgzYmMgcHkzaworODU3MzEgMzRiZWFiOTU5NTk1OWFkZWVkNDc4Mzc2YWNjOWMxMzNiNWUyNDc2ZCBweTNrCis4NTczMiAwMzY3NzBkZDkwOTY3Y2EyZDk0NmY1OGQ0NDFmNjU1YTJlOGQ1MzVjIHB5M2sKKzg1NzMzIDk2MmUxZjRjOWMwMDNiNDgyNzI3YmQ0NTQ0NDAzZmMwMDNiZGJhNzkgcHkzaworODU3MzQgMDg2NTE5YzFlN2QyOWE4MjQ3Njc5Y2U2ZGNmZWU0ZTliZjQzMzJiYSBweTNrCis4NTczNSBkM2I2MWRjNzMyZWZmMjU3MWYxNDNhZTMzZGMzM2RhZjE5ZDA0NzQzIHB5M2sKKzg1NzM2IGE2NjFiNDI0ZWQ0N2E5YmY0MzM3ZDMwOWNlZmUwNTRjZWY3ODQ2YmQgcmVsZWFzZTI3LW1haW50Cis4NTczNiBhOGVmZjM5YWViMDk5NWE4YzMyYmQwZGI5NjBlZGMwZjExMGU1MzNlIHB5M2sKKzg1NzM3IGNmNjM0YTM5N2JlYzgxYTQyYTgzZDc2ZjVkNWU4ZTA2ZGIyN2QyMTIgaXNzdWU0Mzg4Cis4NTczOCBkNGQ1M2I0ZGI5NmVkMzg4OWFlNWQ2OTY2MzUwOTg4Y2Y4YTU2ODU4IGlzc3VlNDM4OAorODU3MzkgNTJjYmY0NTlkYThiY2ZhYWZiYzdkYmE2ZjZjZGZjMTJlZWRkZDM0NyBpc3N1ZTQzODgKKzg1NzQwIGVkY2ZjNGM4OWYzMDQwMTU1Mjc3ZDQyMGExYjhmMjA0OTM1NDY1MDAgaXNzdWU0Mzg4Cis4NTc0MSA1OWFhYzA3NDVlYzc1YjhjNWIyYTkyMjk0ZmQ2ZTkzOTgxZGE4ODQ2IHB5M2stc3RhdC1vbi13aW5kb3dzCis4NTc0MiAzYmFlY2Q0ZTBjMTJhMTNjYTYxZmVlZjBlMTU2M2M4MDliNTc5NDJkIHB5M2sKKzg1NzQzIDZkY2Y2MTQ0N2MzM2Y2ODFmMTQ2NmEzNzYyMGU0MzA5MDY5MDU2NTkgcmVsZWFzZTI3LW1haW50Cis4NTc0NCAxNjE4Y2IxNWI1Yjk4NDQwMGQ4YWU4YTI5MjA0ZjJiZTY0YTIzZTczIHB5M2sKKzg1NzQ1IGU4NTBiYjkzMGM4NDJmMWI1YzVkM2U2ZWNlYjUxNTk5YTliNjc5NDUgcmVsZWFzZTI3LW1haW50Cis4NTc0NiA1Y2YxZTZlNjFjNmMzNzVhZWE4ZmEyYzkwYmE4NWEwYzBlZDYxMWM1IHJlbGVhc2UzMS1tYWludAorODU3NDcgNTBkZDg2ZjZmMjRhZDRiODc4ZDdiODI5YTAzOWIzYTUzYTBhMzMwYyBweTNrLXN0YXQtb24td2luZG93cworODU3NDggMzAxNmE2YTRhNjgwYjg0YTNjMGU0ZDIwNjIwMTFkNzI1NDA5YTRiYyBpc3N1ZTQzODgKKzg1NzQ5IDY0M2EwN2NjOWQ3ZmI4OTM5ODFlNzRiNGFkOTg4NzJmYjQwYzkwNzQgaXNzdWU0Mzg4Cis4NTc1MCBlNTNjODBiMDE2MzMzMjg3ZWYzMTZmMWMzYmNkNjFiYzg0YmI2N2IyIGlzc3VlNDM4OAorODU3NTEgZDdjZTM3YjliY2VkMjAzNmYxZTcwNmE5N2M2ODYyMzVhMGYzOTY1MyBpc3N1ZTQzODgKKzg1NzUyIDJmMWE1NTA2NzkzMTE1MTc1ZGU3ZDQ0ZmJmZjc1MDdkN2YyODQxNzMgaXNzdWU0Mzg4Cis4NTc1MyBmOGZjMjRhMWY5YTZjMmRiYjY2NWE1M2ExZTY0YTc0NWM1YmRlNmIwIGlzc3VlNDM4OAorODU3NTQgZWNmYzBkZDE1ZDU3ZjBkOWE4YWY3NjIxOGNiOTA4ZGUzNTk4MmFhNCBpc3N1ZTQzODgKKzg1NzU1IGU3MTFiODU4NjE3YmU3MmNjNjY0MTk5MjlmOWFiZjI1NTg4N2M4OTIgcHkzaworODU3NTYgOTg1ODlkMGYxMTAxMmFjNjNmOGE5ZGU5YWY3YTQ3MzQ4YzY0YTFmNiBweTNrCis4NTc1NyBjNWY5N2IwNTQxNTg1ODI1YzY2ZGMwYTQzYjhmY2U0NDZkMzJlY2UwIHB5M2sKKzg1NzU4IDgwYzA0NjlmOTg1OTdmODFlNmMzODYxZTg4NWI2ZTEyYTA0ZWMwN2MgcmVsZWFzZTI3LW1haW50Cis4NTc1OSA4ZTZiN2FiMWUxYTE0MDdkNmYwOWNjZmU4MWY4Mzg5YWIyZTQ2MTNkIHJlbGVhc2UzMS1tYWludAorODU3NjAgY2JlMDIyNDcwMTQ3MWM0NzI5ZjQ3MTYyMWI1MWVjMjI0NDM0ZDNkOCBpc3N1ZTQzODgKKzg1NzYxIDM5MzY2YmE1ZjFjMTA3NGI3ZDNhZDE5MzU0MmI2MzU5NGE1NGI4NDEgcHkzaworODU3NjIgYmVjMTZhNWUwY2RhYzFlZjM4ZWU2NjQ0Y2I4OTcxYTE5NTNjY2E1YiBweTNrCis4NTc2MyBhYmRhODI0MGE2NDA1ZGJlOWE5ZTM5Nzg5OGM0OTY2ZWYxYjIzZDM3IHB5M2sKKzg1NzY0IGFlY2I1NmMzZjRlYjVlNzJmM2NlYTkzNzY5M2Y5OTk4NDhlOWQ5NGYgaXNzdWU0Mzg4Cis4NTc2NSA0NTA3OWFkMWUyNjAwOWFjYzBmNTcyNDQwY2FjMjJhYjBhNzc0OTUwIHB5M2sKKzg1NzY2IDM4MTZlYjEyODZjMGNlNTk1OGJlYTk1Y2JiNjg5MTIyYmY2MzQwY2EgcHkzaworODU3NjcgMmUxOWQxZjRiNjEyZWM4OTNkZjBmODZlNjgwZmE0OWI4ODFiZWI4MyBweTNrCis4NTc2OCA3MTdhYWNmZDJkY2Q2ODM2Y2E5OGZlN2ZkZDRjYmQ5ODA1YjJlNmQ1IHB5M2sKKzg1NzY5IGU4ZDVhZDBjMmY1YmNiMWUwNGNiODNkNjc1NmUzMDdjNzg0NmNlMjQgcHkzaworODU3NzAgYTJiYjUwZmZkZmYzZDRmOWY0MTI3YTIzNDM3NGZjYWY3ZGMwNWI0YyBweTNrCis4NTc3MSAyZjk0ZDY4YzI3MzEyNzc3YTgzNGQ2YjczZGM3YzI5YjczMTNhMDZkIHB5M2sKKzg1NzcyIDBiNWJmYmE3YTkwN2U2YjlhMDEwMGFlMzRmNWNkM2Y4NGZkNjY0Y2UgcHkzaworODU3NzMgY2FhNTZjZmYyZmIzYTc4ZWFjMmIzNGZkNzgzYzdkZDE3ZGNkZTRiNyBweTNrCis4NTc3NCAwODAxNDVkM2JiZjc2ODFhNjE1Nzg1OTdmZDlkOGQ5YzUwMzJhNzg3IHB5M2sKKzg1Nzc1IGU0NTNlNWFiMjA3Y2E0MjNjMzI1N2JiOTRhYjA4MWJjZTY3N2YzOTAgcHkzaworODU3NzYgMjQ0MDkwNDM4NjIzZTExZjEyYzQzNzRlZTc4MGQ3NjY4MjViNzZmZCByZWxlYXNlMjctbWFpbnQKKzg1Nzc3IGU3OWM1NzY3YmQwNWQwNmYzOTNjZmI2MTBhNDg2NmE0NWJjMjIyODEgcHkzaworODU3NzggMDJjMTYyNmZmNjBmZTJhMGU5YzU2NTU5ODJjMDRiY2E5NmFlMzhlMCBweTNrCis4NTc3OSAyNzJiOGZmNjBiYTRjMDg0M2UwNzgxYzZiZWM5YjQxM2MzNmRmNWI0IHJlbGVhc2UzMS1tYWludAorODU3ODAgODc4N2Y0YmI0YjIxNjA1MTk4OWFjNTVkYjRhNzM2N2IyZDg0NjJjZCByZWxlYXNlMjctbWFpbnQKKzg1NzgyIGJkMWIzMWMzNzQxMGJjMDNhYzg1MTExYzVkMTBmNTI3ODA4NmZiNDAgaXNzdWU1NjM5Cis4NTc4MyA2ZTRlZWE3NTQzYmMzNjg5NGQ1MWE4YjMzYmM2ZWViMjQ0Yzk2ZGU2IGlzc3VlNTYzOQorODU3ODQgN2I1NDYyOTUxYWM5YjUxMWU3OWNhMTJhMmU3ZjliYWQ1Yjk2ZDk3ZSByZWxlYXNlMjctbWFpbnQKKzg1Nzg1IGY5ODQ0NjlkZTBiYjZkM2RjZDFiNmY1M2ZjNmY1ZTQzZDI0YjIwYjYgcHkzaworODU3ODYgODUyNTU0NDk2OGYzYTU5NjRmYmUyZjA1OGVkZjdkOWJjNTg0MWQ2NiBweTNrCis4NTc4NyAxMmViMjQ0NjM2MTA5NDE3Yzk0NjYzNDFiYjZmMjZjYzYyZjI3MThkIHB5M2sKKzg1Nzg4IGM2YTBlYjdmNzNiZmNmZDcxNmY4YWIyOWFjYjY5ZWEyMDVlNjVmNzggcHkzaworODU3ODkgNDZiYmJkY2Q3NzdmNTViNmJjMjVlMDYxYjI1N2Q1MmFlMzcyYjU5YiBweTNrCis4NTc5MCBmZTM1NTdkYmVmODkyNTIzNTI3NDAxNWRhYWRiNzI4MjhkYjJlYmZmIHJlbGVhc2UyNy1tYWludAorODU3OTEgMzFhMGFiN2FjMmQ1YjU1MjdjYmE1YWRiOWFiMmFlMzQzMjg2MjA3NCByZWxlYXNlMjctbWFpbnQKKzg1NzkyIGVhMGY4M2NmN2U5OTU5NjMyMjY3MjAxNzQwODQzMjljNjZjY2U2ZWEgcHkzaworODU3OTMgODQ2YzBlMTM0MmQwYmExYWVkNTFhYzAxODcyM2UxMTZhMjY5NDQ2ZSBweTNrCis4NTc5NCAxNDM4ZDZiNjcwNTI2NTBmODI2MTUwZGQ1YjcyYWUyMGM2YWJhYThjIHB5M2sKKzg1Nzk1IDA2ZGZhZWI1OGJkZTAxYzM2OGYzZDE1ZWY1MTk0OGNjYWZkMDI0ODAgcmVsZWFzZTMxLW1haW50Cis4NTc5NiA4NThhZjYwYjJkYmJjZDliY2M0YzZmZjAwNTUxMDk3NDdkY2MyOWI4IHB5M2sKKzg1Nzk3IGQ5ODViYTk4MTFlOThlYTU4MGMxM2FmNzVmNWE3OGVkOTQ3NjE4NDUgcHkzaworODU3OTggOTkxMmQ2MWNkZjM0YzJiMDkyMDBjNDBiMjk1YWVjNWE3MmJmOGRjMyBweTNrCis4NTc5OSBjZDgwZDA1ZjJmZDY3ZGI2MTYwMDhhYzY3ZjA4YzFiNmVkMGViZDNmIHB5M2sKKzg1ODAwIDViNmUxM2I2YjQ3M2I1ZmRjMmZmNTBkNTk5MGMyZmZjNTViYjgzYWQgcHkzaworODU4MDEgMzgzNWJjYmZiMjljMGM2YjMxMDI2NWIwYjRkMTI0ODJhY2MwMjBiZiBweTNrCis4NTgwMiA5MDJmNTc3ZTdmOTQ5NTliMDU3MzkxNzY2YzBlMTRhM2ExNmI4ODhmIHJlbGVhc2UzMS1tYWludAorODU4MDMgYmU4YWU2YjE3NTM5ZDI5OTVjMDZjYTY5MGZjZjFmMmU1MDI1MDBkNSBweTNrCis4NTgwNCA4ZDdmMTgzMzJkYjdkZDQxOTRkYjcxZjFiM2YxMTRjOTU3NWI2MTYwIHB5M2sKKzg1ODA1IDFhMDhmNGE5ZWFmZGM0M2VhZjNkYWI2M2VlYWNjYmNiZWRhNTNkMjMgcHkzaworODU4MDYgYTMwZTc1ODIwYjhkZWVmNzEwMWIyMWNlN2VkNzZjM2E3OGQ1MmM5MyBweTNrCis4NTgwNyA3OTIwMDVkZTI3N2M4NmE4YTQ4MTllZTRjZmVkMDJjZmNmYTczMWJlIHB5M2sKKzg1ODA4IGU5OTZjNjFlNDdjN2IzOTM5NTYxNWU5Yjg2OWNkMjM3ODUyY2YxYWYgcHkzaworODU4MDkgMDk4MTc3YWNmNzNmMjA4NjA4MWJiMTdhYTIzMTMzMTliMzgyNDE1ZSBweTNrCis4NTgxMCBiOWRjZmRmZmNiNjIwYzUyNzI0YTFkZGJlZDBlOWJmNTA1ZGFkMDM1IHB5M2sKKzg1ODExIGViZjY3NDFhOGQ2ZTM3OWRjNzEwZjlhOTA4N2RjMjI0ZDQ3MmQ1ZWMgcHkzaworODU4MTIgYTk0ZmI4ZGI5ZjFhNTBmNjFiMGNhZjU0YTc3NzQwOWRlODY2NjhmYiByZWxlYXNlMjctbWFpbnQKKzg1ODEzIGRiNWFiZDgxZGM5NGVkNmE2OGQ4MDdkODkyYTI1Njk5Mjk5MjA3MWIgcmVsZWFzZTMxLW1haW50Cis4NTgxNCAxODk4OWFkNDQ2MzZhZDc1ZWYxODU4NTA2YWU5NGU4OGNhZGIzNWE2IHB5M2sKKzg1ODE1IDUzNjM5ZTU3YmE0MDkyM2FmMzVjNDMzYjBkYTM2ZjBjZTE2MjlkNzAgcmVsZWFzZTMxLW1haW50Cis4NTgxNiBhNGEyNzI0MGZlMDkzNGI4MDliNzM4YWI3MjljYWNmMTY5ZWFkY2UzIHJlbGVhc2UyNy1tYWludAorODU4MTcgZjE0OGY4NjRiMTY4YjA4N2U4OTI3MzgwNmQyNzdlZTFkODU4Y2E1OCBweTNrCis4NTgxOCBiMTcyZDc1MzdiOTliNTQwNGM5Njg5NjhlYjNjMTNlYjk4ZDg2ODcxIHB5M2sKKzg1ODE5IDViNTM2YzkwY2EzNmRlZmIzMGY2Nzg1OGJmYWY3ZGNjNGI0M2Y0NTMgcmVsZWFzZTI3LW1haW50Cis4NTgyMCBhODIwNzJjYTA2YmFhMDUxZDNjMDAxYjE5YTBkZGQ1OWU2N2ZkOGFkIHB5M2sKKzg1ODIxIGM1YWViZmZjOWZhYzQ2NWZhODIwNWM4NzM2NjI5MzAwM2UwYmVkNWUgcmVsZWFzZTMxLW1haW50Cis4NTgyMiBjY2YyZmYwODg2NmI5YmU2YzJhZDVjNjkwMjBiMTJhNGUwMTUyMWEzIHB5M2sKKzg1ODIzIGI0ZTM3MGM4ZTdjYWY0MzIxMjUxYThlODJjNzA4NjlkZjA0NTMxNDQgcHkzaworODU4MjQgMzliOWU5ZGUzNzJiMjAxMDMwZjU1ZWZiYjBlNjUxZTEyZTExZTc2ZCBweTNrCis4NTgyNSA1YTA1NDU0ZTU2NWZhNzhmMzUwNzYzOGNiM2RhMWZlYWNiZDU0NGYwIHB5M2sKKzg1ODI2IDE5MDhhMTQ2ZTk2MWRjMzlmODBiMGQ5NDhkZjk1ZjM5MjYwZjQwN2QgcHkzaworODU4MjcgZGI1YTUwODBmOWI4YTBlZTFlYjZkNGRkOWE2ODJhOTM4MDNkNGM5MiBweTNrCis4NTgyOCBjYjY0MThmNGQ2MGI5Y2Y2NDliMDM0NDYwNDhlZWYzNDU3YWI4NTkwIHB5M2sKKzg1ODI5IDRlMzYwNjUyODNjZjJjNmY3NmQ3NWNmMTM2YWMzMjY3Nzk4NjQ2ZWEgcHkzaworODU4MzAgMTU5NTMwZjBlNDA2YTg2NGUyNDQ1OTc4MTE2ZGUxYTAwNWQ1ODY0NiBweTNrCis4NTgzMSA2NjBkNWYzMjQ4MmVmNDg5NDNhMDZlYzg3OGEwYTc0NjNiZGRlYzgxIHBlcC0wMzg0Cis4NTgzMiBmNTcwZGE5YTQzZjg2ZTBjYjFiYjc2YzA3ODIyZTc4NDk2NGI1YWI0IHJlbGVhc2UyNy1tYWludAorODU4MzMgNDRkODE5MjJhODhmMzVkYmJlYzI1ZDg2YzJlZjY1M2U3NjU0MWQ4YyBweTNrCis4NTgzNCA1YzFjZTVjMzYwZGEyMWZkZTNmMGIwZWRiMzdmNDBjY2UxNjdhMjkxIHB5M2sKKzg1ODM1IDNhOWMzZWM1ZTlkMmNmZmIwY2ZiYTY0NTg3NWRlYWEwOWRkY2I3N2IgcHkzaworODU4MzYgMjM1MmU1ZTQ0MDUzZTk1YmI2ODZiZmI3Njg5MThjMmUxNjBkMDA0YyBweTNrCis4NTgzNyAwZjA3ZDJkYmY4MjBiODk0OTI1MGM0ZTkwYTFhNDFiNjFkZjJmZDU4IHB5M2sKKzg1ODM4IDRlOTJjZGVmZTRjNzQzN2ZmOTJhOGYxMmUzYmM2NjM5NTliYTZhOGUgcHkzaworODU4MzkgZDdkMzIzZGUzNWU3NmQyODA5MjkyNmVlZTcxOTljNTAzNzliZmM2NyBweTNrCis4NTg0MCA5ZDNlYmEwM2ZkMjVkMWQ3ZWVhNGM4NWY3ZDQ2MDMxZGIwNzQwODg4IHB5M2sKKzg1ODQxIGNlZWJiM2Y0NWY5ZmM2MjM4OWQzOGZhYWFmMmJhZDRmMzkxMjI5NDUgcmVsZWFzZTI3LW1haW50Cis4NTg0MiA3NzJiNTVmMDI4MzVkZTY3NjhjYjM4ZjE4YmNlYjYwYTdjODQyZGI1IHJlbGVhc2UzMS1tYWludAorODU4NDMgZDM1MTAwY2M2YzZiMWI0OTAzNTM1OTU2MmI1YTM2Y2Q5Zjk4YTFjMCBweTNrCis4NTg0NCBlNTVhMDBjZjY3OGE3ZTk3MWRjYjFjZjAxM2ZhMDNhN2M1YTVmMWE4IHB5M2sKKzg1ODQ1IGI5YzdiZGNhYTAzMWQ4OTIxNjU0YzYyOGRkZTZjZDNjMDc1YjgzY2MgcHkzaworODU4NDYgZTUxNWQxMjQxODU4NmU1MTMzZGM0YjU5N2M3MDQyMGM0NzU2OWE2NCBweTNrCis4NTg0NyAzMmM0ZThlOTVjYTNjYjViZjg4ZGRkZDM5NWQ0ZWVmMGRhYzYyZTM3IHJlbGVhc2UzMS1tYWludAorODU4NDggODQxODkyZTI3MWY3Zjg1MTQxYmFiYmQwNjY5YjEyM2Q4OGY2MjVkYyBweTNrCis4NTg0OSBhOWM3OWE5ZDJkOTFkMDlmYTI4NGNlNGY0OWI3NDRhMWYxMjYzYjkzIHB5M2sKKzg1ODUwIDlkYTVlMDRiMDc5M2I5OTI2ZjEwMWE4ZDAzMTIxZmE2ODdhMDg4MjQgcHkzaworODU4NTEgMTE4NzE1NmExZjMyYzExNmQ3YmE0YTlkYTUyMzE0ZWIxM2RmYjFmNiBweTNrCis4NTg1MiBjODkyZTQ1NDdmZWRjYzk2MjY1ZGZmMWEzYWI2YmQxZDk0M2M5ODM0IHB5M2sKKzg1ODUzIDI5YWYxODFkZTJmMmQ4OGYzOWEzMjEzMTNkYzFiOWI4OWRmMzIwNDUgcHkzaworODU4NTQgYmExYzczZTE2YzhiMWY5M2E4YWE1Zjk0MzBiNWExZTMwZTNkMTU3ZCByZWxlYXNlMjctbWFpbnQKKzg1ODU1IGZmNmZhMjBiZGFmOGRlY2NjNWQ4NGE2MGJmOTRjNTU2MzZiODdlZWIgcHkzaworODU4NTYgOWU0YTI4MDllNTVjZTBmMDc0NDNlNjI4MzMzMTA2OWE1Y2U0OGE1YiBweTNrCis4NTg1NyA0YjU0MjIxN2U5M2VkMDE3ZjVlZWIxOWMyZWNiZjU3YThiYTI3ZWI3IHB5M2sKKzg1ODU4IGJmNWRhNjM2MDUzYWI5OTI2ZGM3YWRiYTY1MGI3YTk2OWYwY2U0ZjAgcHkzaworODU4NTkgNjkzOGQ3YWQ2MGU0MWFlNTA5Y2FiNGI5NTQyM2MwYWI0OGNmNDVjMSByZWxlYXNlMzEtbWFpbnQKKzg1ODYwIGRmMDIwOTM1ODhkNmJjMmExZWQ4ODgwZjViNGViMGE5NDVjMDg0YTUgcmVsZWFzZTI3LW1haW50Cis4NTg2MSA0ZGNhM2YwZTBmYzA0NjdkNzdjYmNlOWI4NjI5ZTU1ODNmNmMyNmZmIHB5M2sKKzg1ODYyIGU5ZTNmZTRjOWUzMDBlNWFjYzIxNTczOWQ0YTBiZDc4ZGM3MzMzYjAgcmVsZWFzZTMxLW1haW50Cis4NTg2MyBlYmI4MmYwMWRiZTI2MTA5YzRmNGRhMWRiMGMzNWMxOWM0NTgxMzIyIHJlbGVhc2UyNy1tYWludAorODU4NjQgNTlhYmRiOTI3OGY3MjAzMjQzNzNjYTJlYjFmZjgzMDUwNGNhMThjZiBweTNrCis4NTg2NSAwZDUwYTkxMWQ3NGZlNjJhYzBjNjk1YmFlODU0ZmVlZWY5ZGQzZjEyIHJlbGVhc2UzMS1tYWludAorODU4NjYgYWYwNmYwOTcyZDk3YTc2ODdjNmExZjJjZjlmODAyNzM0OTYzYjM5YiByZWxlYXNlMjctbWFpbnQKKzg1ODY3IDA1MWFhNDI3ZGZlZGZmNTlkMmQyOTAyNTUwMTU0YzI3NDIzNzZhMWQgcHkzaworODU4NjggMjE0YjkwNTE4NDFlYTg5ZTk3ZDkxMzM0MGM4NjJhNTIyYzNkNGY3YSBweTNrCis4NTg2OSBhZGQxYmMwNWU0MjY2ZGJiOWQwODRlZDJkNjkzOGYyOGUyNTdlYWE4IHJlbGVhc2UzMS1tYWludAorODU4NzAgZjVlM2RlODdiMTRiZjA0MDc5MGI1MWIwNTJkNTM4ZTAxYTQxYTgwNCByZWxlYXNlMjctbWFpbnQKKzg1ODcxIDY0ZGUxNzQ2Y2Q2ZTM5NjMyMGEyYzhjMWUxNWUxZjM5NzM1NjUyMjYgcmVsZWFzZTI3LW1haW50Cis4NTg3MiAzZTc4ZWRlOGZkMjEyNDdiN2FiZWIwN2Q0ZWEzYjdhMjlkNGU3ODY1IHJlbGVhc2UyNy1tYWludAorODU4NzMgZTQ0MjVkNjhkYWRmMmMzODY0NzU5ODQwZWYwYzczNzljYjhhNzdmMyByZWxlYXNlMzEtbWFpbnQKKzg1ODc0IGEyODE5ODlhMjE4YjBjMWQ1ZTlmYzU1ZTc0MzU1NzlkN2FjZjU4YTggcHkzaworODU4NzUgM2ZmOTkwODljMDJlMzA0OTE2YmJjY2RkZjNhNWEyYzBkNjVhODkwMCBweTNrCis4NTg3NiA2ZGZmNTgxZDMwZjM4MWZjMDhlMzVkNzRjZGQ4OTA3MTc4NzU5M2VjIHB5M2sKKzg1ODc3IGU1ZjI2OWRkMzE4Yjg3ZWExN2U2MWU5ZWU5NzI1NzQwNmI5ZjEyYTQgcHkzaworODU4NzggNWE4ODJmNzg5ZWMxZTdkNThhYmYxZDBjMzhmZDRhM2EwYmU5MDlkMSBweTNrCis4NTg3OSA1YjE2M2YyYTYwMmJlY2EzMTgyMWI4ZmVkYTZlNzM3NmZmODVmNzljIHB5M2sKKzg1ODgwIDdhZDM1YWNiMjBiMGQ0OThjMjIwMzU3ZWYyMGY4OWIyZmE0YWQwYzIgcHkzaworODU4ODEgMjExMGQyNjlhODZlYzAwZWQzNDViM2UwMGFmNTBiODU4MzRjM2I1MyBweTNrCis4NTg4MiA3MzEyMzNmOTA0ODY5ZDlmNTk3YzUzMzU4Y2JmMjBhMjc3ZDRkYjQxIGlzc3VlMTAyMDkKKzg1ODgzIGI5Y2ExMDJhNzZkMDMzNDM0NDQ5ZmI3N2UzNDEzNDg4YjkzZmNiNjYgaXNzdWUxMDIwOQorODU4ODQgNjZiNDRjY2EyOWJiODMzMDUwNDJlOTM1Y2RjMGU0MmVkOTk0NDA4NSBpc3N1ZTEwMjA5Cis4NTg4NiBkMDdiOWIwY2FhZWYxZTRhOTRhOGNhNjBjZTkxODUxZmEyMThkN2UyIGlzc3VlMTAyMDkKKzg1ODg3IDNmN2QwMzQyOTQ5MTg2ZTUxMzI2ZDgxYzk2NjZhYjRjYjg5YTlhOGMgaXNzdWUxMDIwOQorODU4ODggNmYzMWYwYWY1MzU3NjUwMGE1NTIwOGFjYjczZWZhY2ZiMDAzZGVhZSBweTNrCis4NTg4OSA1YjhlNjg4ZWE1YWVkZDljZDViOTUwNmZmMDRlZmVkMGFjMTE1Y2JjIHB5M2sKKzg1ODkwIDE1ZWFjYjRjNTQyMjgzMjFmMzg5NjEzYjBkNzAzMWQ1OTJiZGZkNmMgaXNzdWUxMDIwOQorODU4OTEgZGMwNmFlZDliOTg0NWYwY2M2OTc4NGYzNDE4OTk2NmY5MTQ0OTNmYyBweTNrCis4NTg5MiA1MzgzYWU4ZGIzY2RkMWI1ZTAxOTU0NWU5MjhmMGUxN2YyNmZmZDA1IHJlbGVhc2UyNy1tYWludAorODU4OTMgMWMxMTRkMzlhZTUyNjJhYzUzZGZiODUzYmQ2NDI4YjcyNzFiOWI3ZSBweTNrCis4NTg5NCA2OThkMzBiNDUxMTZjYmM0MGQ5NmVkZTU2YzExOTVkYjFmMGQyNmI3IHB5M2sKKzg1ODk1IDYxM2M3YjU5NmZlNzgxMmRlODdiNDAxN2ZlNWMxN2ViY2FlYWYwNjcgcHkzaworODU4OTYgMWI3YTAzODVjNjVmN2FiODg5NzczMTM4MmYxNTkzMGJlZTdkMjYyNiBweTNrCis4NTg5NyA3MGViZGJkNzlhMDJkMDgzY2ZiOGJiNjExODM5ODBhMzVjMmRiOTZjIHB5M2sKKzg1ODk4IGM2ZDg2NDM5YWE5MTg0NTE4NTQxZjllMDFkZTkwNTY0YjM2YWQ2MmMgcmVsZWFzZTMxLW1haW50Cis4NTg5OSA0MWEzMDE0MDkyNWJlMTM1MjZlNGI0ODAwMDVmNDI3NmExMmVlMzAwIHB5M2sKKzg1OTAyIGE1NmEyYTgwM2NkNzhlZjk0MTdlOWQwMDZlNDliYzkzZGUzNzQ3MWEgcHkzaworODU5MDMgYjY2ZGVkNGJmZjIxMzdjYjJjNGExYWZlNTZkZDk4Y2ExZTVhYTM5ZCBweTNrCis4NTkwNCA2YWMxODU3NmU4ZmE5OTZlYWJmZThmMGZlMWI3YzI1ZWIxMWRlZjA4IHB5M2sKKzg1OTA1IDY0Y2VlOGQxMWYyZThiOGI2NWU2ZWNiZDczNjBmMWY3YmEyYzdhNTIgcmVsZWFzZTI3LW1haW50Cis4NTkwNiBlOGM4NDAwY2FhOTljYTU3ZjljYmYzNjIzOWJiOGM2OTAyZThkOTQ5IHJlbGVhc2UzMS1tYWludAorODU5MDcgNGFmMTRmOWFhOTcwNTY1YjIwNDEyYzgyNTczZTc4MzFjNjI2OTlhOSBweTNrCis4NTkwOCA1ZTcyMGY5ZDFlNmMxOWQ3ZmMzZTMzMTBkOTUyZjU2MDBlMzBhMjViIHB5M2sKKzg1OTA5IDhjNWExMDFhNjM1NDU4MzcwMzVlY2I1ZTU1MWI1MWFlYjZjNzNiMmUgcHkzaworODU5MTAgOGE4ZjJhYTlkYjBmOTkwZDViYTczM2VlMjhlYTVjM2VmNDdkNzNiZSBweTNrCis4NTkxMSA3MjJiMmE0ZmFlMGQxOTZmNjNjNjMxMGQ3ZTBhMGU0NWVmMGE4YmVjIHB5M2sKKzg1OTEzIDRkMjNkZTRmNDEwMjNjNzkzY2I2NjY4ZGU5YWRhZGI4N2U0Zjk4OTMgcmVsZWFzZTI3LW1haW50Cis4NTkxNCAwODYwYmU5YzgzNDMzYTYzZjk5YzdmNGJhYzY2NjIwZTRkMTZmOTY2IHB5M2sKKzg1OTE1IDE2YjkyOTcxYzJkNDQwYzJlZmRhYjU3MmU4YTk2YjI5MzNmYTIyNGMgcmVsZWFzZTI3LW1haW50Cis4NTkxNiAwNTBmMGY3YmUxMWUyNjIyNDk5MDExYzBhZTVmNTA2Zjg2ZTc3ODMxIHB5M2sKKzg1OTE3IGYzNDk4ODhmYWU2NDM5YzBiYmNiYjIyNzZkZjljNDFlMmUwNmRlODMgcmVsZWFzZTI3LW1haW50Cis4NTkyMCBjZmY3OGZmYjkzMmEyNzZmY2QzMGRhMzQ4MzMyN2MxODUyOTIxZWYxIHB5M2sKKzg1OTIxIDBiNWU2ZjdlZGY2ZTYyYWZjZjhmZTg0NTEyYWYyZDljMzdjMWIwYWQgcHkzaworODU5MjIgOGU2MzM4Y2UwODQ2NjRiZWFjN2Y1ZTJlNmEyODgxYjM0NGJjMzAwZSBweTNrCis4NTkyMyA0YTdhM2U1MWNkMjlhMDI2OGFjNzUxZjk0ODE5ZDM1NTJhYzYwMzRlIHB5M2sKKzg1OTI0IGQxNDcyNmY0YjQxMDdiNTZlMTg4YjhhODFmYTY3MmQyZWJmN2NiMjcgcHkzaworODU5MjUgY2YxZDI3MzIxYzc4MjE3MjhhN2RjMDJmZTE3Mzk4MDRlMzNjOGY5NSBweTNrCis4NTkyNiA0MDQyNzc2MGUxNjI5NGFhOTQ3NDQ2M2FlMjU3MGQ1OTRkNDhiMTRjIHB5M2sKKzg1OTI3IDM3MmQ2YWZmMTViZThjNjRlNmUyODkzMjQxODJlODk5YTcxN2VmMTYgcHkzaworODU5MjggOGZhMTMyYTNhZmI1YmU5ZmE1ZjkxMzUzZjZiNmU3ODRhMTBiY2JhZiByZWxlYXNlMzEtbWFpbnQKKzg1OTI5IDVjMTNjZDBmOTliNDVlNDU5NmE4YjhkODczZGFlNDBmNTUxNmMwOTAgcmVsZWFzZTI3LW1haW50Cis4NTkzMCAxNTMyY2EyMWI5MjA1ODY3NjRkNWVkMTNjYWU5ODk5YzhiYmZjNWUyIHB5M2sKKzg1OTMxIDYxYTlhZTUyMmRjY2E2YjQ5NjAyNDk5ZTg4ZGMxMzgyZmNkZDFiYTIgcHkzaworODU5MzIgZjNhMWVhYzYzNWY5OGM3Y2VkNzRiNjIwMTJkOTJkMGQ5ZTAyZTA2NiByZWxlYXNlMzEtbWFpbnQKKzg1OTMzIGY4ZDM0NDg0OTU5NmUxNTE2YTRiYWI0MTg0ZWZjZmRmY2RhNGJjYTUgcmVsZWFzZTI3LW1haW50Cis4NTkzNCBhNGZkM2RjNzQyOTk3MDc2N2E5NjFjZTAyMDcxYWY2NjE5MjBkMTI2IHB5M2sKKzg1OTM1IDhiMzJlNGY2YmQ5OWQyZmIzZDVhNDJlYzYyYmJmNDYwMjkyMjgwOTIgcHkzaworODU5MzYgYjE4Mjc1YjExN2QyMTBiNDExOGQ1ODNlMDE1NTAyNzA0MTA5NDBjMSBweTNrCis4NTkzNyBhMDYyNmY5NzI3ZTBmMmQwOGEyOTUzMzk3NzI2NWZhMjA5ZDg3MzhlIHB5M2sKKzg1OTM4IDc2NWQ0MjFkOTQzYzczNTE0ZjBmYTgzNGI3ZTQ5ZDg2MjIxMDcxYWIgcHkzaworODU5MzkgMWQ1NWNjMjg0ZDRhYjVhZmUzNzRiZGFkM2Q5MjAwOWE5YTgwMjllOCBweTNrCis4NTk0MCAyYzJlY2VkNjM1ZjYwZDBhM2I3Nzk5OTA0ZDZkNjg3ZWE2ODYzMmMyIHB5M2sKKzg1OTQxIGViNTBjNDhkOWNiNDkwOGFhNGM1NWRhYjNmZGNkYjVmM2EyZWU1ODAgcmVsZWFzZTMxLW1haW50Cis4NTk0MiAzZGEyM2RlYjZlOWE1MTllYjZmOTg1N2RhYTJhY2UzNDUwNjEwN2MzIHB5M2sKKzg1OTQzIGQxNjE3MTRlN2M5MjhjNGUzM2EzN2Y4ZTAyNWVmNGVhOGU2NzRiN2IgcHkzaworODU5NDQgNTU2ZjU5MTY2NTQ5OWMyNDIxMTQ5NjdjMDdmYzgzOGFkNTczNmEyZSBweTNrCis4NTk0NSBiZWRlZDQ3YmIxN2Y4YjBlM2UwNmQ3Nzc0NjQ3OGU5NzY0M2RmZDdjIHB5M2sKKzg1OTQ2IDkyNmU4YjZiNmM5ZDZmNzgzYWRmM2YxZjdhZTkyZTdiODMzYThmYmMgcHkzaworODU5NDcgZTcyN2NmMzU0NzIwMTA4MzMyZmRjZDAyZGNiZjkzYTM4Yjg3OTkzZCBweTNrCis4NTk0OCA1Mzg2ZjFmNDI4YTE1ZWFiNThlN2NiMzYzNjJjNjdiNDI4NWZkMWMwIHB5M2sKKzg1OTQ5IGYyNGE1M2VkZTllZDhlODRjYmM5MTRhYzNhYWU5OWU5NDQxZTc3YWYgcHkzaworODU5NTAgMWMwMjBiY2Q1MGNkN2ViNDUwZGRhNjQzMjVmOWFlZTExYmI3NDA5MCBweTNrCis4NTk1MSA1YzAxM2VjMjczMjdkZGFmOTE2OTNlOTY5OGJiOWE3Y2FjNWRjMjExIHB5M2sKKzg1OTUyIGUzOGQyZDE3MzA4NWZmMjg1ZWM0NjlhZTY1MGJlZmNjYjMzNTdjZGEgcHkzaworODU5NTMgNDBhYzQ1YTA5MmI3N2Q0YTE3YzE5ZjY0NjMwMjk2OWNkMTg0ZjdkOCBweTNrCis4NTk1NCBjODVmNTMzOTA2OGExMWI5YjE1MTE2NTFhNWE2OTVkY2VhYTE0MDlhIHB5M2sKKzg1OTU1IDY0ZWY2MWQ5ZmZkYzQxNDFjYTIxMjFmZTFiYzJhYzI4MzFjNTdlMTQgcHkzaworODU5NTYgM2NjYzZhYjU0NmMzYjEyMDYzNzJhMmFhOTI5OGJlYmIwYTg3ZWEyNiBweTNrCis4NTk1NyAzZmRiYzZhNGIwZDBmN2Q4MTAyNDcxMTQ1YWJlOGM2MWRkOWQ3NmU0IHB5M2sKKzg1OTU4IDE4ODMwMjljN2I4YTc0OTQxNmYyNDdjYTdlZGJkN2ZmNjE0ZTc4MTcgcHkzaworODU5NTkgYmFhZDUyZTc4ZGNiM2NhMmYwYTdiMWQ4OTNlYTMxZGQwOGNlZWZjZSBweTNrCis4NTk2MCAwZjc2NWMzM2Y0ZGUyNzNmODc3NjViZDYzNDI3MDExYmI1NzI0ZjE3IHB5M2sKKzg1OTYxIDNiMjEwZDA0OGY1ZGFjNDljZGQxODg1ZmRlMDY3Mzg4ZDlkMmYyN2UgcHkzaworODU5NjIgOThjZWNhMjUxOTg4ZTJlZDM4YTk2YjI4OGZjZGEzNjM3ZTg2NmMyYSBweTNrCis4NTk2MyA5YjY2YTlmMTM3YjZjMDk4ODBjM2I1NTIxMmZiOWE3YTEyNjExYzU3IHB5M2sKKzg1OTY0IDYwMzAxMGFmODBjZjM2N2YwMjEwNTFmZjJkZTZhOGQ3ZjIwZTdkZDQgcHkzaworODU5NjYgNjRhOTdjNGViYWRjZjQ5NGI5YmYxM2M3OGQ5ODUyZTgzODc1ZWYxMSByZWxlYXNlMjctbWFpbnQKKzg1OTY3IDE4MmNiM2Y4MmIwYjY1NzgzYmVjZDcwNDI4MWUxNDMxZTY3MzViNWIgcHkzaworODU5NjggNDgwZTQ1ODI4ZDRiMTkxMjBjYWVhZWI5YTM0MThiNzlmMWQyYTZiNyByZWxlYXNlMzEtbWFpbnQKKzg1OTY5IDBhMmVjMTc0ZmJjZDYyOGMxMjNkNjg5NzdiZDBjNTc1Yjc3YzExNjUgcmVsZWFzZTI3LW1haW50Cis4NTk3MCA5MGJjNzFkNmJlZGZhMTcyNjNkYTk4YjZhY2VkN2MwODVkZDcxYTRhIHB5M2sKKzg1OTcxIDMyMjdiNmYyMDRjYzRiMjYwY2RmN2Y1ODRkMTI2NTE2MDEwODY5OWQgcHkzaworODU5NzIgYWJiZDlkMjZhZTZjNjRlZTQ4MzUzYmRmYzZmNTljZWIzYzc5YzMyNyBwZXAtMDM4NAorODU5NzMgZWE3YjI2MDBmZGM1OThhZjM1ZTBkNDJlYTQ0Mjk5NDkzM2Q2MjI2ZiBwZXAtMDM4NAorODU5NzUgNzEwOTY4YTJlMTYzYjhkOTcyNGM0NmRiMWYyZTRiNTVhNDNjMTRmYSBweTNrCis4NTk3NiA5MzU2ZDc2NWQ3OGUzZDFiMDk4ZmMzMDE3ZTNiZDRhNThhZGM5YTY2IHBlcC0wMzg0Cis4NTk3NyBmOTcyMWE4Zjg3YmQ4YmQzZDgzZGFiZTU4OTlhNmE3YTIxNzUwZDgwIHB5M2sKKzg1OTc4IGVmNmRhZDc1MTdjNWM1NGY5ODcwYTRiZWYyOTZhZWQzZGUxNzY2YmYgcHkzaworODU5NzkgZTZhZjE0NmJiMzhiODg2MGM0NzBkOWRmNDBhODI4NmExN2RiZmU0YyBweTNrCis4NTk4MCBlYTE0OTc3YTM2ZGVmODhhYmRkNWY1ZTBjYjcyMjdkNjJhMzBkOTBjIHB5M2sKKzg1OTgxIGIwMzc3OWYwMDczOWQ0YzZjOTRlOGQwMjU3ZjAyNjAwODY2MDJiZDYgcmVsZWFzZTMxLW1haW50Cis4NTk4MiA4MTliMWUwNTM1ZDE5MGE2ZDU0ODUwZjY5ZjgzYjc1MmQyMTY2NDg2IHB5M2sKKzg1OTgzIGI3MTgwYWZhMGRmZjJmNzhlNzVlMGJkN2QxZDAxYThjMWRmYjA4MjYgcHkzaworODU5ODQgMzZlYTcxOTAyZmM4ZDFjOTgyYWEyMWNhNzg2YmIwMGU5NGUzOWYxZiBweTNrCis4NTk4NSAzODU2YzYxYjVjOGJiYmVkM2QzNWRmNzIxODI0ZTlmNGUzYTAyMmZkIHJlbGVhc2UyNy1tYWludAorODU5ODYgYjAxZmMzYTQyZDM1ZmI4YmQ5ZDRhOTY0MzkyMDk4Y2YyYTFkNTEwMCByZWxlYXNlMzEtbWFpbnQKKzg1OTg3IDcyYTJkNGQ5NDAwMzJkMjU1YmU0YTk1ODhjOGMzZjk2YjZjZTcxYTUgcHkzaworODU5ODggZDY5ODIwNTU0M2JkNzE5NjA5NWY1OWMzYmM1YTQ5MTliZDkxOTM4YiByZWxlYXNlMzEtbWFpbnQKKzg1OTg5IGUyMDNlZDA3MWZjYWI0MzcxY2FjM2E0ZDA2NDJlNmJiODI0ODdkNzkgcmVsZWFzZTI3LW1haW50Cis4NTk5MCBiOTQzOTY1ZmM0MmJjOTFmNzBmM2QyZjg4ZWQ2NzMyOTdlMGFhMzM2IHB5M2sKKzg1OTkxIDhkODI0MzQ4MzIyOGMwM2ZkZTljODU2YjE0ZmVjMjkyYTdhYWE5Y2QgcmVsZWFzZTMxLW1haW50Cis4NTk5MiAyNGIxOGNkNGQ1ZjM1NDk3MjRhZGJiZmQ3M2JjMmQ1ZWJkZDlhYTJmIHB5M2sKKzg1OTkzIDQyYWQ0YWU2ZDhlZWJiNmIyNDBhOTc1ZDJmMWEwNjQyZTk2M2YzYjUgcHkzaworODU5OTQgNjI0ZTgzMWNlNzAwMjkxZmU4ZTEzY2QyNjY1OGJjMzdiMmUyNmQzMiBweTNrCis4NTk5NSBjZTUzZmVhN2Y5NTczZjhhZmU4YjY2NThiZDhmOTA3ZjdhZWVkNjAwIHB5M2sKKzg1OTk2IDViNjI3MDM1YTkyMmY3YTQxMjE1NTg4MzM5YjUyZWZmYmE2ODkxOTYgcHkzaworODU5OTcgOTI1MWJhMjcyZjJjYTMzZjA4YWJjNTFhOGU4YTUyNmVkNjg2ZmM4NiBweTNrCis4NTk5OCAwYmMyYjA2NDA2ZjhiZTNhMzE2MTI0ZTgzNjNhYjNhOTJlOTE0NjFhIHB5M2sKKzg1OTk5IDE5NTRjOGUzMWNiMzhhODlkNjdiMzE1YzQ2NjMzNmE5MGVlNTkyYjAgcHkzaworODYwMDAgZjE4MjUxOGYzZjQyOGNjY2VmMzc4Yzk3NWY0NDI0MTFmYTI0ZTQ1YSBweTNrCis4NjAwMSA3MWY0ZjNiMWMzMzU2ZWVjNWM4Y2M1ZTE2ZDJkY2UwYjNmZmE2MWY3IHJlbGVhc2UzMS1tYWludAorODYwMDIgOWYxMDk2OGY1MTFkNzNmMWJhYzNmOTM3NDczNjQ5OGE2ZmQ1Y2M5MSByZWxlYXNlMjctbWFpbnQKKzg2MDAzIDczNmYzYTEwZDE3MzMxMDMyNzVlYTkwMDVhNWYwMWRkMTQyNDM3ZDIgcHkzaworODYwMDQgMDZlMjE1MDAxMTlhMjljZWYwNzFmZTY3Yjg4YzJmMmE5MWQxOGZkMyByZWxlYXNlMzEtbWFpbnQKKzg2MDA1IDczMmZmYTg2Yzc5OGE5YWU2YmMyOWU3YjgzM2FjZTJjMjRhNzhhNjUgcmVsZWFzZTI3LW1haW50Cis4NjAwNiAyMTE4NTg3MjNiOGNhOTRiNTdlYmQ2MzY2ODE4OGUwMGQwYjliOWQxIHB5M2sKKzg2MDA3IDJlMWFkNzEyMWUyOTdmMTc2YWFkYTJkNjFmNDRhYTBhMDg1MzYzMWEgcmVsZWFzZTI3LW1haW50Cis4NjAwOCA0NTllOTViNjkzMWJlNDNhMzIwM2RlMTU0YWY0Njk5NThiNDg5ZmM5IHB5M2sKKzg2MDA5IDg3NzA5YzZlNTY5MDU3MzdiMTA5OWUxNmJjOGNmNmZiNjE5NDZlYjAgcHkzaworODYwMTAgOTBiYzBjNWQ3MjJmNzc0YzU0ODhhZGQ2ZjVjNzUyYzg5NTZkODhlZCByZWxlYXNlMzEtbWFpbnQKKzg2MDExIDMwNWU5M2ZkNWI2ZDRhZWRiNmYzNWQ3Y2UxZjM2ZjYyOTgyNTc4ZWMgcmVsZWFzZTI3LW1haW50Cis4NjAxMiAzYTc1NTliYThlYjU5MjAzNmEyYWNlMGQxODM2ZGJkMDEyYzVkZTc5IHB5M2sKKzg2MDEzIDQ5YTMxYWUwMzQ4YTU4YzE0YTNkZTIxMWUxZWVjODgxNTdlMjJhYzcgcHkzaworODYwMTQgNjEyYWJiMWU3Njc2MjFjN2I2YjI3ZmRjNzEwNDEwOTQxZjY2YzViOCBweTNrCis4NjAxNSA4YmUwODc2MWRkYzBiZTU3ZjQ1NGRmZGIzMzA2MDE3NzkwZTk5ZDY4IHB5M2sKKzg2MDE2IDk3ZjMyYmE1ZmY4NTRhNmFiZDJlZjkzN2NjNzk5ZDUyOTY1ZDQ3NzcgcHkzaworODYwMTcgMGVlODZmZDkwMmYxZWYzNWJkZWE2NGEzOWMzNWI5YTY5ZmVhZjY0ZCBweTNrCis4NjAxOCAwZWMzMTcwZmFhOTVlNTgyZTVmMGE5NjUxNzBhOTM0MWMyNzc1MDVkIHB5M2sKKzg2MDE5IGFmOWY5ZWZjYmI5ZGI2NGQ2NWEzZjQzZDNhNTA1ZmYyNzIzNjdkNGUgcHkzaworODYwMjAgMDg1ZGU5NjAzYjYyOWZmMjE0NTBlMGE2MDJmYjllOGRkMTY5MGE0ZiByZWxlYXNlMzEtbWFpbnQKKzg2MDIxIDc2MDhkY2FmNzg2ZGRkZGJmYjBkZjA3ZDM3NjdiZmY0MjA5YTA1MWQgcmVsZWFzZTI3LW1haW50Cis4NjAyMiA5NGM1YWQ5ODFjMWI3ZjYxYTM1MGMxNGFmNjQwODc2MGYwMWUwMWQwIHB5M2sKKzg2MDIzIGI0ODE5ODM4ZWI1YjczZjIxNDE0ZGE5NGMxN2Y5NGIxMGY5Mzk1ZjEgcHkzaworODYwMjQgMjE4NzJjMjRhMjViOTA5Y2I0NDgyMjJhNDgyZDQ1MmZkNWVjMjg3MSByZWxlYXNlMzEtbWFpbnQKKzg2MDI1IDllMjkxYmU0ODljZjU1MTRmYjQyNzFiNGIyMWZmNjJkOTMzMTM5ZjEgcmVsZWFzZTI3LW1haW50Cis4NjAyNiBmYzg2NTg2MTliZGY0OWRlYTNjYTQxOWZhYTdlM2UwYjU3MTg5YWQyIHJlbGVhc2UzMS1tYWludAorODYwMjcgZDhkMzM2NDhkMWIyYzdlOGJhMjk0N2Y2NjdlYzU4ZTdkYWU5MTJiYSByZWxlYXNlMjctbWFpbnQKKzg2MDI4IGM5ODIwNzMxODgzZDliZDRmZjRiMGEwYjkxYWEzMzU5MTRmZDYzNDUgcmVsZWFzZTMxLW1haW50Cis4NjAyOSBmM2FmYTEwY2U3NzcxOWUzYmJkYzAyYTgxN2NkZTM2NjEzMGZiZDgzIHJlbGVhc2UyNy1tYWludAorODYwMzAgMTMxZTdjYzllNDE2Y2Q2MTg4MWY5MDNiM2NiYzFjYTZjMjhhNmRmOSByZWxlYXNlMjctbWFpbnQKKzg2MDMxIDMyYzE5MWE1YzFjZjk0OTViZGEwZmM0Njg4MWNiNDIyZjU3NzhmNzMgcmVsZWFzZTI3LW1haW50Cis4NjAzMiBiODliMGM3ZjM3MDk0YTBiNzMzYTA5NmFkNGE0ODU5NjQ4M2YzOWU5IHJlbGVhc2UzMS1tYWludAorODYwMzMgYWUwNmMwNDhkZTI0NzI4MDQzMThlOGViNTA2MGQxMzRiYmYwZjlmYSByZWxlYXNlMjctbWFpbnQKKzg2MDM0IDMyMTdiMTBmODQxM2E4YWQ3OThjYTcwOTY5MzYwM2UzNGNjYTllMTAgcHkzaworODYwMzUgOWI4MTQyOTYyMGY0Yjc3NDVlZWIzZGMyZGI2ZmJkMjY5ZGQ4NGFkNiBweTNrCis4NjAzNiA0MTI3YWIxZjYzMzhjMmM4MGU0MzU2NzQyNjg4YzU3YjdmNWY1YzMyIHB5M2sKKzg2MDM3IDk3ZGY1ZGRlOWY4MWJhNmQ0ZTI3YmE0ZTE2ODJlZGFmZmZmMjE4MzMgcHkzaworODYwMzggYTY4MzBjYzgyMmFhYmUzMzNkOTUyODY3ZmY5Njc2OWZmMDQ0OTc5YSByZWxlYXNlMzEtbWFpbnQKKzg2MDM5IDE0MGQ0NzFiMDYxYTUzZDE3MmY5ZTQyYTYyMDM2MWI3MTE0ZjM3MzMgcmVsZWFzZTI3LW1haW50Cis4NjA0MCA3NWFjMTNmZTdkYTAzYmJjYTRjMzNlOTEwYjllYjJiMGQyY2IzNzMwIHB5M2sKKzg2MDQxIDZmYTQ4ZmEyYTg2NTY4Yzk1ODM1MjMyZmI3OTBlMzY1MDQxY2UzYzAgcmVsZWFzZTI3LW1haW50Cis4NjA0MiA5NDQzMmU0Y2RkY2Y2MjQxYzkzMDNkMDg3ODY4ZmQ2NDM0NGRhMjIyIHB5M2sKKzg2MDQzIDVjNWI3YTliYWMwNWM2NDU5Y2U4ZDkyNDhhNjE0N2YxNmFkZjQxMmIgcmVsZWFzZTI3LW1haW50Cis4NjA0NCA0OTc5NjRjZjllNThlNjBiYWI3ZmIxZGE5ODE5OTQxYzUwNTVhNzAxIHJlbGVhc2UzMS1tYWludAorODYwNDUgNWJkYzBkNmM2OTM5MzNiYzgzZDkyZjBkMjY1MTRhOTg0M2NlZmQxOSBweTNrCis4NjA0NiA1NzU3OTQyNTkzYTBlYmI1MDc5ZmEyMTZjMTMwNmY3ZTQyODBiZDRjIHB5M2sKKzg2MDQ3IGRlMWU1ZWVhN2U3NWQxMDViZTA4YWM0YmJmMmMyMDA5MGUxZjMzZjcgcHkzaworODYwNDggNzE5ZWJjYjkzNGYzZGM0NDAxNTU2NjY4YzFhZTVjMDc2MDZmOTJhNiBweTNrCis4NjA0OSBiYzZjY2U0YWIzYzYzNjc3MDBmOWQ2YWQyYTQ4YWQ5ZTI5ZDliMDZlIHB5M2sKKzg2MDUwIDAwMDVhMTgxZDEwYmJiOTRmYTBlMTIyZGZiOTM5NjM5ZTQxNjczOTggcHkzaworODYwNTEgZWEyYzJmYzAxOWQ2NWM0MTNiZTFiNjJmZmVkM2MxNDM1YWRkODE3OCBweTNrCis4NjA1MiA0MWQ1ZDNkN2RhMjE4ZjlhMjRlNzAzOWViYzZmNGUyYWYyNmQzNWU4IHJlbGVhc2UzMS1tYWludAorODYwNTMgMGE5NDkyMzc4M2E0N2Q0MDE5OGU0MjUxNzM2ZTZmODRiNjk1NDg4MSByZWxlYXNlMjctbWFpbnQKKzg2MDU0IDQzYWNjOTU0MzQxNmI0NWIwNTBiZmE4N2VhM2M3Nzk5NzM4ZDA5MjUgcHkzaworODYwNTUgOTEwM2FhOWIyNzA0YzliNTljYzMwZWI4YzU2ZjI3Y2Y4Nzg3YTI5MiBweTNrCis4NjA1NiAwNTk5ZDIxODg4MzdlYzQyMWYwOTU2ZGY5N2ZjZmZiZWJjOTJhZjhjIHBlcC0wMzg0Cis4NjA1NyBmZWRkYjlhODNhZWYxYzZhYzY4MTUzYzQ4MTQ2N2UxYjVkMTc5MjI2IHBlcC0wMzg0Cis4NjA1OCAwODkyYjJjMzYzNmQ5ZTBjMjhjMzBlYjc2ZjMxZjdmMDg0OTNhYjIxIHBlcC0wMzg0Cis4NjA1OSA5N2I5ZDQwODg5MTRlMzg0YjFiMjNhMzFlYjFlY2ZiZjA0MzhkZTQyIHBlcC0wMzg0Cis4NjA2MCAxMjQzM2U5ODlkOWM5MDE5ZTczZDNhYWYxM2NkMGNkYzM2MjYzMmM3IHBlcC0wMzg0Cis4NjA2MSAzOTMzYWI2ZjZmN2FjOTNkOWU3ODg5ZjVmN2FiMjQ5ZWEwYTYyNWFkIHB5M2sKKzg2MDYyIDUzYjUxZjVlOTVjNGNjYmEzNTVjNTUyMTdhZDEyZDk1OWE3MGMwNTcgcHkzaworODYwNjMgZDBmMWNhMWE4MTM5MWNkMzMyNGRhYjk4YTJlODBlNGZkYzM4Mzk3YSBweTNrCis4NjA2NCBiNjQyNDQxZGExZWE1OTBmYjI3MGNjNDIzOWFmMzFiMzVjMDU1NGQ1IHB5M2sKKzg2MDY1IGVhYTUwNzI1MTIyYjY2YzU5MmUzM2YzNDgxYzM5ZDRiOTJkMmUzYjkgcHkzaworODYwNjYgYTJjZTgyMThlMDI5MmRjZGJjOTMxNzNhZmQ3ZTdhM2I0ZmNlYjk2MyBweTNrCis4NjA2NyA2NDcwNTY2MTk2YjNkMzVkNTM4N2Y2MDE5NmM5ODg3NWY3YWY4YmFkIHB5M2sKKzg2MDY4IDBhM2FlNGEyNTVkZTNhYjc1NTA1ZTFmYzg0ZDAwMjllMTNjMTU2ODQgcmVsZWFzZTMxLW1haW50Cis4NjA2OSBmYjEyZWViMWU3YTliYTIxOGVhOWVlNWZjZTVmYTlmMDk3OTk1ZGFhIHJlbGVhc2UyNy1tYWludAorODYwNzAgZDBiMjBhNjUyMWQyMTQ2ZWQ1ODdiYjQ5ZDIxMmNiNWYwYzMxMDVhYSByZWxlYXNlMjctbWFpbnQKKzg2MDcxIGI1ZTFlNmYzMTQzN2YyYzc1NmM2NTVkODdhYjdhMjQ1OTg0NGIyMDggcHkzaworODYwNzIgYzgyNDg3NTEzZTc2OTA2YWI0MDcwMjFjOWViODEwODZiNzk4MjE5NCByZWxlYXNlMzEtbWFpbnQKKzg2MDczIGZmMmM1YzljMDc5YmEwNmMzZTlhNzczNDM3NjVjODExZmU3MzhmNjIgcHkzaworODYwNzQgN2RjMTM2YTAxMDEzNzA2NmIyYThmOTE1ZTE1ZTkzMzI3ZTY5YTZhOSByZWxlYXNlMzEtbWFpbnQKKzg2MDc1IDQ1MWM5YmI3NTE1OWU0MmFmZDkyMWY4NTU5NmY4N2M4OTc1MDE4NDYgcHkzaworODYwNzYgNzIwZDQ1YTZlMzE2OWQ2YjU1YzYyZmQ5NTBmZWQ2Yjc0NWU2OGI0ZiByZWxlYXNlMjctbWFpbnQKKzg2MDc3IGZlMmQxOWIyYTVjNmQyZGY4ZjhiMGE1MmFkOGY1NjlhZjk0NmRhZTMgcHkzaworODYwNzggYmEyYWUwOTdmNTY3NTMxMmIwOWUxZGFhM2JjNmRmYTA1NmRjZTY4ZSByZWxlYXNlMzEtbWFpbnQKKzg2MDc5IDIwNmRlZDk0MzUzNGQzNmI2NWY0MTBiM2RjOTA4Y2FhMTk5Yjg1NmYgcmVsZWFzZTI3LW1haW50Cis4NjA4MCA4ZTY1ODQ5ZjcxZjUwOTM4ZTZkZmZjNjNlNjIzYzIyOWI3N2NlZjFkIHB5M2sKKzg2MDgxIGJlZWRjNzg1NmY1YjEzOTI5OWM3NjBiZjRhOTA5ODA5NmUwZDBkNzEgcHkzaworODYwODIgOWQxMTMzYzE4NjNlNGMwNjZjMTQ4MWI0ZDU5ZDc3Y2ZkOGIyNjY0MSByZWxlYXNlMzEtbWFpbnQKKzg2MDgzIDlkYjg1Nzk2MDQwMjcyMzVmZDY3YTM1OThjNjQ2NjIxMmI2YTQwNDggcmVsZWFzZTI3LW1haW50Cis4NjA4NCBmMDMwMDU4NGM4MjQ0NGM4YmJmYTkzZmVhN2E2MTgzMDE3MGQ5OWUwIHJlbGVhc2UyNy1tYWludAorODYwODUgZTVkYjMyZjRmNGNkNjgyYTI3ZjgzN2I1N2NmMzVhNmZhODRkMGU5MCByZWxlYXNlMzEtbWFpbnQKKzg2MDg2IGU3MWMyZTFkYWY1NzBiZmJkYzRjYTk3YmViMGJmM2U1YTg4ZTU0N2EgcHkzaworODYwODcgNDkzYTJkNDA3Yzk0NDY4MDYxZmZkYjcyMjI2ZDVlNDAzOWQ1NDAxMCByZWxlYXNlMjctbWFpbnQKKzg2MDg4IDQzZDJkNWFmYmY3MzhiNTkxNDMzZjA4ODU1ZWU0MzBhNGM4ODViMGYgcmVsZWFzZTMxLW1haW50Cis4NjA4OSA3YzU4ZmFmMjJlOWYyZWM1Nzc5ODg0Y2ZiOGEwOGI0YzFkOWRmN2UyIHB5M2sKKzg2MDkwIGNiOWUxMDAzNGU0YTY1ZWMyNzFkZWUwYzAzMzM0MmNhYjdjNDU1MTMgcHkzaworODYwOTEgODQ4OTEyNzg5Yjc5NGFiNDA1ZWE5MjZiZTI0ZTI2ODgyYjYwNjgyNSByZWxlYXNlMjctbWFpbnQKKzg2MDkyIGQ4YWIzNWVjNDg2ZTkwODY2M2JmODhlZTA1NGQwMDVhMTIzOWFlZTQgcHkzaworODYwOTMgNTk1MmI5MzdhYjlhMjhiMjIyNWQzYzk4YzZiZWZhM2VkMGY4ZGFkNSByZWxlYXNlMjctbWFpbnQKKzg2MDk0IGIzYzA5OGMzYTgyNjY5ZjIxOTRlM2IzOWJmMTMwYzYyNzIwZjVjOWMgcHkzaworODYwOTUgNjIxZjNlOWFjZWRkYzVlNzhkNjhmODg5MjVhZTYzYjllMjU5MGE5OSBweTNrCis4NjA5NiAzNTIwZmVhNWU5MjJlYjdhMzEwN2JiNTVmYjE3ZjNmY2FmODY3MTIxIHB5M2sKKzg2MDk3IDUyMDg0ZWE2M2M0MjEyMWE5N2E0NTg5YjEyZmIwOGFkNTcyNzE1YzIgcHkzaworODYwOTggYzc5MWQwMjYxMDA2MjRiNDMxMTYzMzExYzQwODZjMjhkNWViMDhhMiBweTNrCis4NjA5OSA1MzhmNDRiMzJiMGE4ZGI5OTA2N2EyNDZjMTA2NzllNGYzNDczOTE3IHB5M2sKKzg2MTAwIGZmODE2ODg5YWE2MWZjNjIyN2FlODVkYTg5ZjA0M2Q5OGQ0ZDcwMzYgcHkzaworODYxMDEgOWM3YWQwZWQ2NmNiZWNhZGI1NmFiZDVmZDZmZWY1MmU2YTk3NmE1MyBweTNrCis4NjEwMiBiZTFkN2Y2MTlmYzBmMDA2MWY4NmYxNWVlNzRmMjgyOWFmMDQ2NzJiIHB5M2sKKzg2MTAzIDhlMTlmZjk2NGNjOGRhMTYyMGI1ODdlNzgyM2I3MzczMGI4NjBkZmEgcHkzaworODYxMDQgNGVhOTRjNWY2ZDEwMjUyNTRkOTc5M2VlNWJlZWIwNTc0OWQ5OWUzYyByZWxlYXNlMjctbWFpbnQKKzg2MTA1IDg4OWZkOGVjYmZmNDI0NDlkYTUzZmFkNjRiZWIxMzdlMDNlNzI0MTYgcHkzaworODYxMDYgYTM3ZDZkODFmNGIxZTlkNWI4YTA0ZDdhOTA2NjQ5NDM2MjQ3YTdiMSByZWxlYXNlMjctbWFpbnQKKzg2MTA3IGE2Mzk1OWVlYzhmZjRhZGRiYjg5NDk2NGQzMDBiZjk4ZTcyYzUwYzMgcHkzaworODYxMDggYjM0NmM4ZDMzZTU2MDFlYzdhMDliOTViOGI5ZjY0MWEzNjYyOGM4ZSByZWxlYXNlMzEtbWFpbnQKKzg2MTA5IGRlYjIzY2JhYjVhYjYyMzUzOTU2ZTYwODM5MmIwY2U2YTNjMTcwMmMgcmVsZWFzZTI3LW1haW50Cis4NjExMSBmZjZmMzliM2MzOGU0NmJkNWE1MjRiNDY0Njc4NmNjZGUxZTBhZTk5IHB5M2sKKzg2MTEyIDU3M2RiMmFmMmRkYTc0ZjIzMzdkY2FlNDdkZDFjYjk5YWZmMWU1YjYgcmVsZWFzZTI3LW1haW50Cis4NjExMyBmM2I3MTg4MTcxYzAyY2I1Y2Q3YTdmNzk2Mjc0OTk0ZWVkYzEzZjNiIHB5M2sKKzg2MTE0IDM2ODcyYTBlZDk0MzM1ZDgwODAwMWEyMDM1MWYxMjUzZmNkZjAzYzAgcHkzaworODYxMTUgZDdlZGQxNWJhMGYyYWMxMDRmMzZjNzNlNjdhNjY0OGRkZTNjZDBmOSByZWxlYXNlMjctbWFpbnQKKzg2MTE2IDE1NzY3OTAyYjU0NWZjN2JjNDJiYjNhMWE4YjU5NmI4MThjZGI0ZWEgcHkzaworODYxMTcgNDlmMThhOTUzM2NkZTI2MjA4ZTA3ZTViZWUxNzk2YmYwMWUxOTIwYSBweTNrCis4NjExOCBlZGY0MDZlYWIxZGI3ZmEyZTAzOWE0YTU2ZjZhMzE1OTIyNDdiN2U3IHB5M2sKKzg2MTE5IDZlZWQwZmMxODgxOGMxMGE2NTM2ZjkyNmY1YjdkYTJmYzgzM2FjMjIgcmVsZWFzZTMxLW1haW50Cis4NjEyMCA0Y2NkMDY4Y2JhMGM5YjAyMjZiMTFlNzIyYWQzNmRiNGU5YzZmZWEwIHJlbGVhc2UzMS1tYWludAorODYxMjIgZjRmNzk1NTZhNTIyZTA0ZjA2MzhmYTkzOGJjNjFlMWU2MTM4OTM1MyByZWxlYXNlMzEtbWFpbnQKKzg2MTIzIDAwNGQ1ZjE2NTczOGRlY2MwY2YyY2NjMzgxZjYzM2M0MGZjYzA0NWUgcmVsZWFzZTI3LW1haW50Cis4NjEyNCBhMjg1ODQzZTk1OGE0YzNhNzdjMzM1MWMyMGFiYWQzNDQzZWJkYjkxIHJlbGVhc2UyNy1tYWludAorODYxMjUgNDU3NzkyYWZkZWNkNjEwYmZiYmUyZmRjMDk5Nzk0ZTUzZDNkMDNmNCBweTNrCis4NjEyNiAyM2I0OTY3ODQwMWYxODE3MGFkMWQ0M2Y0MGVjODkyMDM1M2NjMWZhIHJlbGVhc2UyNy1tYWludAorODYxMjcgNTNmYjk5MTYzMjdlMGZlYmQ1NDgwODdlNzBkNTQ0MjYyYTYxNjJjNiBweTNrCis4NjEyOCAxMDk1Mzg3MTZjNTkxZDE2MzBlODlmN2RmZTk1Y2U5NGRiMmMyYzEyIHB5M2sKKzg2MTI5IDBjZTBmOGViZGQyOTg1MjIzODIzMjM3ZDUxOTg3ZDQ2MWE3N2ZkOWQgcHkzaworODYxMzAgMTkxMDY3ZjQ5ZmNhMDU1MmYyNjZlNmJjOTY3MTY4ZWQ3YzUzNDU2OCBweTNrCis4NjEzMSBmOTgwZjk0NGJlMTkzNTQyNmQ0ZjRkZjE0YzU2Njk1ZTZmZGEwNDQ0IHJlbGVhc2UyNy1tYWludAorODYxMzIgNjgzNDFmOWM1OTM3M2ZiZTg2YmViMmVjNWY2ZGQ5NzgyYmZlMGRjZiByZWxlYXNlMzEtbWFpbnQKKzg2MTMzIDI2OTczMjZkNGE3N2QzZWM4N2E5MzU5OTAyNTIyNDQ4MDVhMWNkNTggcHkzaworODYxMzQgYTlkYmM4N2EzZmY0YWNhNzQ3NjI2NDI2NjVhMTQyZWU3YWVhY2FiMSBweTNrCis4NjEzNSA2ZDIwZGRlOTYwOWM5MWU3ZWY2YjMwMjAxYTMwNzkyZTM3NTJkMmVjIHB5M2sKKzg2MTM2IGI5NmVkYjAyZWY2MzBmNzE5ZmU5ZDY2M2E0YjJkZjA1NjlhZTI1MTggcmVsZWFzZTI3LW1haW50Cis4NjEzNyAyZDQyMmYxMDAyMmZmMDcxNDc3YjRhZjUxYjE4NmZiZGM2N2IyODQ4IHB5M2sKKzg2MTM5IDU4ZTU0ZjU2M2RlN2NmM2Q0MmE2MGFjZjIwZGI0NjBhNTQ5OWMyNzMgcHkzaworODYxNDAgOGE0ZTI2Mzc5NmEzZTVmZjU5NTIyNmU4Y2ExNjU4M2U4MTUzMWNlMiBweTNrCis4NjE0MSBiOGMyMDZlNWVkNDRhY2ZkM2M3MmVlMjdlZjNiYjkzNTM4MjVjNDFmIHB5M2sKKzg2MTQyIDhlZjMyOTU1YTM0OTRlOWM2YzRmOWNhYmU4MTIwZTJmNGY5YzlkZDMgcHkzaworODYxNDMgNWIwNjVjZjYwZGRlMTJhMDY5ZjhmZmFkZTNlMGI0NmQ3NTQxNTZjZSBweTNrCis4NjE0NCBmMjU1MDEyYjM0NmJjOTRhMTYwNTk1ZDgwMGFiN2IxYTNjNDczMWVkIHB5M2sKKzg2MTQ1IDY3MDg1ZjIwMjE0MjkxMjJmYTEyZWRhYjdmMjI4YTFkOTM3MmQwZWQgcmVsZWFzZTMxLW1haW50Cis4NjE0NiAxNDJkNTM5MGFjNWM2YTAyYWFiMmY5YzQyMzY4ZTNlYzlhMzU5NzE0IHB5M2sKKzg2MTQ3IDRkMWFiMmQyNWJhZjZkOGVjNGJiOTViZmE4NDFhODBhNDFlZjk4ZGMgcHkzaworODYxNDggZGMzMDM4MmJhODlhMTMwN2M4NDBjNWQ5Y2JhOWEzMDNlOWJkYjkzMCBweTNrCis4NjE0OSBmMjlmNjJjMzU3ZTE0Yzk1ZmQyNDZhODNjODYwNjcwMzVkNzg3ODI5IHB5M2sKKzg2MTUwIDgxYjBlODllM2RmM2NkOTQzYWZmNDFlYzVkN2I3ODE0OWMyZDRlMzEgcHkzaworODYxNTEgOGE1ZjA4NzNkNzM4MDIxOTg1YmE2ZTgyNDQ5NTU1OWUyMTRiZGIyMSBweTNrCis4NjE1MiA4ZDY1OWE1NDc5Y2E4NDg5M2EzOWZmYTg0MDE5OGQ1NjM1ZDVjYjA2IHJlbGVhc2UzMS1tYWludAorODYxNTMgNDYyNDFhMzViNWZjNTA3YzNkZjI2Njg2ZTkxODQ3OWM3MjRmMjhkNSBweTNrCis4NjE1NCAyOTk3MzVlNWZkN2Y5MTE0YzMzYWJlMmU1Mjc1ODRhNzFhNDQwYWI2IHJlbGVhc2UyNy1tYWludAorODYxNTUgYzk2NzMxNGVmNjFlNzNmMmU3NmM0ZWRmYjQxMGZjYWI3ZDZlYTI0MyByZWxlYXNlMzEtbWFpbnQKKzg2MTU4IDcxYWM1MjNhNmIxMjM4NDIyM2U4N2I0Njg0MTNhOTQ3NWIzMGYyZDUgcmVsZWFzZTI3LW1haW50Cis4NjE1OSBlMWI2MWIwNTJjNjZiZDNmNGEwOTgxMzJiNDEwMjYwNjYyMTU2NGIwIHB5M2sKKzg2MTYwIDFlNGQ0NmE2MWZiZWVlZWIzZWI0NTA5MGY5OGVhNmI3ZWM4NmEzMTMgcmVsZWFzZTMxLW1haW50Cis4NjE2MSA4NDRlY2UzNzM3NjQxNGNkM2Y1ODZhMmZkMTkwNTY5N2E4OTI3NTFmIHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODYxNjMgN2M1ZDFkY2UzOWZhYWE2YzBjMzcwMGEwZDkzNjUyODQ3YmVlZDI3OCBweTNrCis4NjE2NCA1MjMxYTVhMzdhN2FjZmU4NjczYjEyNDE4YTY1NGY5MzNmYzViZmQ2IHJlbGVhc2UzMS1tYWludAorODYxNjUgYmViYTJkZTIwMGRkMTY1ZTJhMzNjNGU1MTlmZjk4N2Y0MTc0N2I0MiBweTNrCis4NjE2NiA2ZTA3YzdlNGM3Y2NhOTQ4NTY1YWYwOTg2N2RiZDBmZWMxMTQyNDU0IHJlbGVhc2UyNy1tYWludAorODYxNjcgY2M3YTg4ZTA4ODk5MzlhYTYyMGUyNDcwNzFkYjZkNTNkMmFmMDI0NyBweTNrCis4NjE2OCBmZjY1ODVhMmEyNDMyYzFhYTFjZjQ4ZTE1MTRhZDU3ZTdmY2Y2MzNkIHB5M2sKKzg2MTY5IDY2MzFlNWY2ZDJjZWU0MjJlMzJjYTBjN2RiYzc3ZmY2ZDYwMmM2NjAgcHkzaworODYxNzAgMDVlZWQ5ZjBjZTAxNTUyNjA4ZWFiMGQ2OWMwMmYzYzZlNTdmMmYyZSBweTNrCis4NjE3MSA0Mjk0ZTJjMDAyNDU0MDAxZDQ3NGY5OTY0ZDkxZTQ2ODc4YzJiYWFlIHJlbGVhc2UzMS1tYWludAorODYxNzIgMWY0NWJmYjk4NDczNzAxN2MyZjg3NGM2NGIyMDJkYmMwYTJmMDk4OCByZWxlYXNlMjctbWFpbnQKKzg2MTczIGRkZjAwMGFlZjViMDdhNDRlYzRkZmI5OGMzOTljYzk1MTc2ODBkYmYgcHkzaworODYxNzQgMzI5MmNjMjIyZDVjZDg2MTMzZGRlZGE1NDVlODllMzMyNDBhZDVjZiBweTNrCis4NjE3NSAyNzBiNTAyOTZlYTlmYjBlZDA3NWI4NzMxZmQ0MmQ2MzFjOTUxMTkxIHB5M2sKKzg2MTc2IGVhNWFlZjMyYTE3ZjE3MzZjOTY0ZTQ1YWQ2MDVhNDljYTAxZGVkODkgcmVsZWFzZTMxLW1haW50Cis4NjE3NyA0YmI5Yzk3NGY1MTk4NzZjNzAwNDhhNjEzNmIxNGE5YmU2ZGVmYmViIHB5M2sKKzg2MTc4IDRlZTY4MmZiZWMzMGRiYjE0NjQyYmUyYmMwNjUwNzg1NTg0YWZkNGMgcmVsZWFzZTI3LW1haW50Cis4NjE3OSA2MmIzYTBhOTliMTllNGE2ZDU2N2VkMzg5OWNkOGE4NmQyMDNhNWE5IHB5M2sKKzg2MTgwIDJkNWRiZGU2NGEzNThiMjY5OTM0NTY0OTExODJlMjNiODFiZjE2MDQgcmVsZWFzZTI3LW1haW50Cis4NjE4MSA0OGU1NTQ5ZTJjMjU4OWYzZGJiMWMwZTUxMjhhNjJjNTljOTQ3Zjc4IHJlbGVhc2UyNy1tYWludAorODYxODIgN2FiNzJiYTM4ZmUwMmUxMmIxNGQ4YjE3ODkwMDljZGU5YTBiYjQ2ZiByZWxlYXNlMzEtbWFpbnQKKzg2MTgzIGI4MzZmMDQ3NTljZDM2MzNmYWY2MmZmNThjOTRjNTZmMjA1NTMxOTkgcmVsZWFzZTMxLW1haW50Cis4NjE4NCA5NDdiNWFjYzY0YmQ5MjdlNGQwNjc2MjgwYjA4Y2JhNmE5Mzc0N2Q2IHJlbGVhc2UyNy1tYWludAorODYxODUgNmUxYWUzMjNmZGU2MjZiNjJmY2FiMmRhZjJkNjFlMWU3YTVmMWM0ZCBweTNrCis4NjE4NiA0MzBkNTBlM2FjNTMxYTRmMzhiMTIwY2E4YTdmNzNhODdhODc4YmZmIHJlbGVhc2UyNy1tYWludAorODYxODcgOGNmOGJiNWRjNWY4NmVhMmMwMTFjOTQwOWU2NmUwMDRmNTY3NDVjNyBweTNrCis4NjE4OCBlYzlkZDk3MzUzMmYzYzA0ODI5MDdhZDRkYTIzNWMyMzdjYzc1MjI4IHJlbGVhc2UzMS1tYWludAorODYxODkgYmI2NmE0ZjVlYmMyYWJhODU1OWIwMTM4NThhOTYzYTI4OWMyOWZiYiByZWxlYXNlMjctbWFpbnQKKzg2MTkwIDFjZTY5ZWU2OWU4ZWMwMTg1NDI0OGM3MTBkMjViZjQ4NTIwODE1NzggcmVsZWFzZTI3LW1haW50Cis4NjE5MSA0YzFjNDhiM2FmNjYyNmI2MDY4MDVkMWRmNmFmMzI0MmNhNmJjMDNkIHB5M2sKKzg2MTkyIDc5YjNmYzY4MWNiMDk0ODZiNGExYmYyMTgyMTRhODNiMGJiN2JmYmIgcHkzaworODYxOTMgMmQwNWU5ZmRiNTk3ZjAyZGNjMTk0NGZjMjdlMDlkOTlmYWY0NWJkNiByZWxlYXNlMzEtbWFpbnQKKzg2MTk0IDdkMjgwODdmYmFmM2E5YTY5N2Y0NzI4NzA1NzI1OGI3NDAwMzFhMjcgcmVsZWFzZTI3LW1haW50Cis4NjE5NSBiMDI0OWQwODM5ZWRhYjEyM2U4MzQ2YzExNmJjYjkxNTVkN2YxZjgwIHB5M2sKKzg2MTk2IDEyNDNlYzY3OWMyOThiYTY0ZWYyZjU2MTRkMjFlMDhlYTZkNzIyZmIgcmVsZWFzZTMxLW1haW50Cis4NjE5NyA2MmZmMTE2NDQzMzkxZDBlM2Q5OTViNDNiN2RjNDY2MWRiMTRkYTE2IHJlbGVhc2UyNy1tYWludAorODYxOTggMTg4OTZkNTgwMjkwYWNhMzA2ZTljOGVkMmFhMjI4MzQ0ZTY0MGJkZiBweTNrCis4NjE5OSBjNTAwYjQxMzhmN2I5YzExNzlhODBkOWViZDhlMzAxNzdkNDg5MmU0IHJlbGVhc2UyNy1tYWludAorODYyMDAgNjIwODU3MzNmN2RmYjllYzJhYTIyYmNmNDIwZDk3NjdjNGY4ODNjNSByZWxlYXNlMjctbWFpbnQKKzg2MjAxIGIyNTRjNjUwN2MzNWQyNzQwODk0ZWIyYzMyNWQxZDYyNTQwYTQwMzcgcHkzaworODYyMDIgMjU5YTliZWMyMzI2YzY5MWFmZmNlNjE3ZGRkMjZlZTk4ZWE0MDc1NiBweTNrCis4NjIwMyBlZDM1YjExZWJlYzY4Y2U3ZjVkNjA4OTdhOGEzYTMxNDE5ZmQwMmU2IHJlbGVhc2UyNy1tYWludAorODYyMDQgMmEzMzJlNzE1NzY2Mzg2ZWRjOGZjY2FiMTI5NzdiMGQxYTc1NGM2MyBweTNrCis4NjIwNSBlMjEzZTQ2NWEyZGM4NTUyYzk4ZTVjNTc3YTM5N2IyNWY1ODM3NTJlIHB5M2sKKzg2MjA2IGVkZjhjNGIwMDA0MWUwOTU4YTM4M2M5MDY4NDc3N2ZkOTI2YTkxODggcmVsZWFzZTI3LW1haW50Cis4NjIwNyBmZTg5NjJmYzBlMTE5OTNkZGM0MDUxNTlhMjVlYzJjYzdiOWY4ZDNiIHB5M2sKKzg2MjA4IDIzOWZmZWU1ZWRhZTUyOTQ0NmFjMzRjM2ZjYWYxZTNiOWM0N2UyOWMgcmVsZWFzZTI3LW1haW50Cis4NjIwOSA1YjIxMWRjOTY4ZGZjN2JjOWE5ZmYzZWUzZGFmZGNmMjFmMmJlZWNmIHB5M2sKKzg2MjEwIGQzMWVhZWM4ODNlYjNlYmI3MTA4YWNhYmI2YmY1ZTRkNTgxMDQyZWMgcHkzaworODYyMTEgNDliMGQ0MjMwMjNlZDc0ZmEzMGM4YmQ1OTczMzE2YjZhZTMxZTFhNCBweTNrCis4NjIxMiBjMzdiZWY4ZGNlYTJjYjU5MGQxMDVjYjk1NjRhYWI2NjQ2OTBlZWU2IHJlbGVhc2UyNy1tYWludAorODYyMTMgZWRlZmM1ZDJiM2Q3NGU5ZmI1NzM0ZDQ0MGRiMWJmODIwNGU1ZDMyOSBweTNrCis4NjIxNCBkMzNkNjJhYjkxY2NhY2Y2ZTM3OTNhOTE1ODgyYjA3MWI5MTMzNmYxIHB5M2sKKzg2MjE1IDczY2E2ZGZiMjJhYTE1MTM4MjAzODkxMmUwODBlNjZjNGMxNmIxODYgcmVsZWFzZTMxLW1haW50Cis4NjIxNiAxODVhYjdjNGI5NDY5MWE4OGVmZjcyMzUxMmRkYzEzNDY5ZDI3NWY1IHJlbGVhc2UyNy1tYWludAorODYyMTcgMzg1ZDIzOWJjYmZhNzgwNjY2YjE1NDczYjNkNTk1Yzc3YmZlNTI2NCBweTNrCis4NjIxOCA4MjIyMTQxMDU2MmIzZGIwOGNmMWQ5MzBjZmFjZGI3NDVjNzM4NDExIHB5M2sKKzg2MjE5IDQ1OGIwNWFiZjk4NzNkOWE3NmUyYmMzZTdkNDlkNGI4MjNhOGMwMjYgcHkzaworODYyMjAgNTcxZDMxN2I0Y2Q1ZjJmM2U2NTMxOTg0YjlhMTUyNGZlZTFkYThhYyBweTNrCis4NjIyMSA1ZGVkMjVlMDZhOWFmYmFjMmZhOTBkZDVlZDQ0MGZhMzcwOWNlMWU3IHB5M2sKKzg2MjIyIGY5MGVkMzdhZTE2ZjBhNDQyZjQ5OWVhMDYxYzljODQ3MTNjMjAzOTUgcHkzaworODYyMjMgM2JmODY3ODVjZDljNWUzNzkxYjU1MmJkZDExYzk0OTRlYzBmNTYxZCBweTNrCis4NjIyNCAxMGUwNTgwODk1ZWQ0NTgwNDIwYThhMzFlMzI1MjJjMjhlMTcxM2RmIHB5M2sKKzg2MjI1IGZkZDM2ODFiMTQzOTk2NDMyNDllYjM0ZTcxZTNmNjYxMWQwYzgxNTIgcmVsZWFzZTI3LW1haW50Cis4NjIyNiBlM2ZkMTIwNWIxMDU1ZTU4NTZlOTE1OThkNjkzMzA1YTY2NzI4ZmQwIHB5M2sKKzg2MjI3IDMyMDdkOWY0ZDAwYWVkMzJlODBkNTdmODMyMDU1YjA4OWRlZjdjYjMgcmVsZWFzZTI3LW1haW50Cis4NjIyOCBhMDkwYmY3MTZhNjg3MzU2NzljMWE0ZmQwYTM4Mzg0NjE0NTFjNGZkIHB5M2sKKzg2MjI5IDlkNzNmOTgyN2M5ZjRhNWY5YjNjYjQzZGFmNWMzZDgwMTc1ZjUwMzEgcHkzaworODYyMzAgNTNlYzM4ZDMxOTg4YTFkMmQ1OTExMjBiZDE0YWVjZTJmMDM5M2I1YiByZWxlYXNlMzEtbWFpbnQKKzg2MjMxIDg5MTFmNDc1YWQzZDJmZjNjZGNkMTYyNTAyYmNjMWZlODU0MTdhNzMgcmVsZWFzZTMxLW1haW50Cis4NjIzMiA5NmRiYjBjMTY4YjY3OTUzMTM3ZTUwOGNjYjkxZWU3OWU1MjQ5ZjkyIHJlbGVhc2UyNy1tYWludAorODYyMzMgYWNiMGEzY2MxZTE4YzcwOWQ1YjYzMmIyMjFjMDRiNjgzNjg0YzEyNSByZWxlYXNlMjctbWFpbnQKKzg2MjM0IDlmODYyMTFmMGE0MjczYmM5MDFiODY1NWVjNWE1NjkwMGEyZjc1YzggcHkzaworODYyMzUgMjIyM2FmZTNlYWJhOTQ4MDQ5NzE5ZjdmNTQ2MTA5YmUwNDYwMTY0MCBweTNrCis4NjIzNiA5NmYzMGZkNTRlMGZlYTZmYmRhZTNmOTdjNDIyOTE1MzVhN2I1ZTg4IHB5M2sKKzg2MjM3IGY1ZGQ0YTU0ZDc5YjUxNWY5ZmEyOTdkNTk5M2M4NzVkMWViNzZlNDAgcmVsZWFzZTMxLW1haW50Cis4NjIzOCBhMTdiMjFjMjdhMzM4NDc0OTI3M2U3ODU1YjM0OTVmNmJlZGQ4OWRjIHJlbGVhc2UyNy1tYWludAorODYyMzkgNWQ4NGYxYjczZDUxMDI4MmQ1NTk0MzZmNDMxMTNmM2Y3MTQ5OTZlZiBweTNrCis4NjI0MCBmZjA3MmFhNzBjMWRhNzRhOTFjMTVlZDA4MWZjODI2MGMxMGI4ZjIyIHB5M2sKKzg2MjQxIGNjZDk5ZDU0NzlkY2U3OTE3YTk1ODVkMGFmNzA0NDcwNDJiOWRkOTQgcHkzaworODYyNDIgZDQzYmYzMGZhZjZlYjg1MDA3ZWVlZjc4YjlkZmQ0Y2YxMDMxZjRhYSByZWxlYXNlMzEtbWFpbnQKKzg2MjQzIDYzNmZlZDhlNzhkNjNmNjJhZjE4MjBiNjFlYjZmODM5ZGZmZWYwMDcgcmVsZWFzZTI3LW1haW50Cis4NjI0NCBiNTY0OGUxMGMyM2E3ZGMxYTgyZGNkYzI4YmU5YzU3YzIyOWZjNWU2IHB5M2sKKzg2MjQ1IDJiN2ViMGU4NmQwN2NkZmM1Y2E1MWUzNWVjZjA1MmExMGViZGVmZjAgcmVsZWFzZTMxLW1haW50Cis4NjI0NiBkZjM0OTkxYzdkMGU5NWFiN2NkMGE4NDk2MzNhYjE3NDA2MjczMjlhIHJlbGVhc2UyNy1tYWludAorODYyNDcgZmM0ODM3NTA3OWE2YWU2OWEwZTc1NzNjNGMxNmM3ODAwNmE3MmNiZCBweTNrCis4NjI0OCA2OGY4YTk1YjUwYzdmYWUyNmMzZWMyMDgxMGE3OWE3NDQ1ZjY5ZDE3IHB5M2sKKzg2MjQ5IDUxMTVkNGEyZDg5ODI0NjAzZDBlMTg3YTM3YTBlMTM4NGIzZDcwMTggcHkzaworODYyNTAgN2NiODA0MzU4MWI1N2ZlZmY4Mzc3NDRjYTk1M2M1NjdkMDU4YjJmYSByZWxlYXNlMzEtbWFpbnQKKzg2MjUxIDMwNDVhZGEzOTI2OTE1NzYyN2IxMmZmMjBmYTc0ZjMwOTUwZWU4NmMgcmVsZWFzZTI3LW1haW50Cis4NjI1MiA2ZGRjNTc2MzRkZTU2ZWQzMzFhNmI1OGFjMWEyZWZiNzgwOTZjODJjIHB5M2sKKzg2MjUzIGJhMGFlYzY3Yjk5YTBhOGUzZmFlNmY4NmMwZmMxYWVlMTkxMDQyMzcgcHkzaworODYyNTQgODgzOGM1NmI2OTUyNTFkMjYxNjY4MjJjZjNkMTUxOWYxOWFmNmU5YSByZWxlYXNlMjctbWFpbnQKKzg2MjU1IDNiZjQyZDkxMGRiOGI4Nzg3NGJhNTBlM2JkNGI0YjE2MDhlNjUxNzQgcmVsZWFzZTI3LW1haW50Cis4NjI1NiBmZjEyNTcxMjhjNzUwZTdkNjk0ZTMxZTVjOWY0NzQ2ZjcyNDg2N2JmIHB5M2sKKzg2MjYwIGY0NTdjNDZmOTA5ODM2YzljMWZlMThiMjhhMWE0YjhjM2E5ZDE2YzIgcHkzaworODYyNjIgZTg1MDI1NjdlZmFmNDllM2ZhYmRhYTk3MmQzMWVkZTEyZjU2MGJiZSBweTNrCis4NjI2MyBiZTU0Njk4MDhjZTliODc2M2E3MjY0MjZmOTZkNWZiM2U4MDhiNjMxIHB5M2sKKzg2MjY0IDM4MjZhZGNhN2EzYmY0Y2E0MTg4NzA3ZjM0MWNhNTljODAwNzczYzEgcmVsZWFzZTI3LW1haW50Cis4NjI2NSA0ZmViNTFmNmZkNzZiZDlhYWMyZDQ4OWYxNDQ4ODNhZGIwM2U4ZDhkIHJlbGVhc2UyNy1tYWludAorODYyNjcgMDczYjA3YjNiZGFlY2Q1OWUxMzY0M2VjMTNiOTI0ZmEwNzNiYTY4YyByZWxlYXNlMzEtbWFpbnQKKzg2MjY4IGRiNjU3NDNkMDYyZmM1YWYyMWM4NjQxZjA1ZTgzYWZkYzM0MzdkZmQgcHkzaworODYyNjkgNzYyYjk0NDUwMzY3NWU0NzU1YTNmYjcyMzhkYjk2ZjczMTA3ZDY3ZiByZWxlYXNlMzEtbWFpbnQKKzg2MjcwIGYwYzdlMmIxMTI3MzlmM2RkODVlYjUyYjgxOGM1ZGFjY2Q3MDhlZWYgcmVsZWFzZTI3LW1haW50Cis4NjI3MSA0MzQ4YzliNmE3MmQ2ZDk0YjU1MTc2ZGNiMGVmZDk0NGE4YjUwMDY4IHB5M2sKKzg2MjcyIDc3YjhjOTVmMGMxYjUzYzAxOWEzYjQwZDYyNGU0ODkxMmU0NzlkNjggcmVsZWFzZTMxLW1haW50Cis4NjI3MyA5N2I5NWFlMjM0OGIyYWE3MzIwY2RjMTU4NzgwOTEwMzM0NzYwMDY5IHJlbGVhc2UyNy1tYWludAorODYyNzQgN2E5ZGJhODlhN2NlODQ2YjQ5YjM4MjBmZTQxOGI2YzI2YjJjNDIyMCBweTNrCis4NjI3NSAxMGJkZGEyNDI2NTQ1NTBmOWEzZDg5NjM1MzAwZjIyNjE4M2RkZGJlIHB5M2sKKzg2Mjc2IGFmMDRhYWUxOTNmZmY2NTllNjdhYjM3NjkzMjUyYmQ1ZDhmZDgwNTIgcHkzaworODYyNzcgNzA0MjVmZDQ3ODU2NTBiYWQ0YzdmN2RkNWE1ZjVjMWM2ZjNkNjhkNyBweTNrCis4NjI3OCAyY2MzZDYyZjA2ODA4OTkzZjQ1NWE4YWM5Mjc0YjNlYzBiOGUzMjc2IHJlbGVhc2UzMS1tYWludAorODYyNzkgMTQ5OWRiOTljNGNkY2YyZGYzMjI2NDY3OWEwNTNiMzAzNDNhOWJlYiByZWxlYXNlMjctbWFpbnQKKzg2MjgwIDI4NjQyNGU3NWNkOTI0ZTFhMjE2MmI1MDJhZGE0ZjgxOWExNjNhYTAgcmVsZWFzZTI3LW1haW50Cis4NjI4MSAzN2Y0M2RlNjVkMTBlOWY4MmY3NjMxODkwN2IwNjgyYmU3NmUyNzI5IHB5M2sKKzg2MjgyIGQwMzYzMmMzNjhkMzcyODVmMWM2YjllMGE1ZmU0MjE3Y2FkNGEwMDkgcHkzaworODYyODMgNjFiYmQ0Yjc1ODc0ZTIwODRjMzZlODM0YWEwMzQ2ZjkzZTdjMzc1YSBweTNrCis4NjI4NCBmNmI4ZjMzNmUwMGFhMzc2Nzg5M2ZhYWRmZjVkODIzNjBkYzUyZGY3IHB5M2sKKzg2Mjg1IGI2MDNkMjQ4ZDRhZDkxMTBkMGZkZWFmYjVmMTg5NzQ1YTU5NjVlZDEgcHkzaworODYyODYgYjFjMDZmYTQ4Y2M0YjA5Mzk5MWFiNDViMWYwZjAxNGI1ZmFkZTlmYiBweTNrCis4NjI4NyAzMjg5OTJiMGVhNzlhZjRlODc0NDgxNGE2MjFjMWVkYjIyMDQxMGFiIHJlbGVhc2UzMS1tYWludAorODYyODggZGNmMTdmYTg0ODIxNzZlNzZlNTkyMTkwYTczMGUwYmQwZjE2OWJiMiByZWxlYXNlMjctbWFpbnQKKzg2Mjg5IDM5NzllMGNjMzNjMTMzMjBkYjA0OGVjMWMwNGQwOWRmMmE4MzgzYjIgcHkzaworODYyOTAgYWQ2NDkwYTU2ZDE1OGI5YjZmZDBlZjBjYzRmNDM3N2JjZmFlZTViNCByZWxlYXNlMzEtbWFpbnQKKzg2MjkxIDc0NWQwZjE2ZGY3NmE4YjAxMGFiNzE2ODg1ZjQwYWY3MzQ2ZDI3MDIgcmVsZWFzZTMxLW1haW50Cis4NjI5MiA2ZTg0MzIxMTY2NGQ3MjE2OWE1NzdmMzNjODZmMzJjMGM3ZjVkYzliIHJlbGVhc2UyNy1tYWludAorODYyOTMgZTQ5ZWJiZDJjNDk2MWVkMmE3Y2U3OGFjMjRhNjIyOWNlMTQxMzVkZiBweTNrCis4NjI5NCBjMDhmN2Q2YTAyMzE2OWViOTFiNjkxNzQ4NjUzMGFjMjIyNGE2YjBiIHJlbGVhc2UzMS1tYWludAorODYyOTUgNTM4NGU0ZTQ2Mzc0ZGFkNWJiY2EyNmMzYTQ5ZDllNzQ1MjYxODkzNyByZWxlYXNlMjctbWFpbnQKKzg2Mjk2IDA1NDNjMDJlOTQxYzEwMjRjNjMzMzBiNDdjZDJlYTk1ZmE3ZmIwNDAgcHkzaworODYyOTcgMjI2MmY2YzQ0ZWJjYTY2OTM0YWY0NDJiYzI4YTY1OTBmNDY5YzQ0ZiByZWxlYXNlMzEtbWFpbnQKKzg2Mjk4IDhmMDllZWRjZDcwYTBhODkzZTg3M2ZmNTRlZDgwMThmYjE2NzkzODMgcmVsZWFzZTI3LW1haW50Cis4NjI5OSBmZGNhYWMwZTAxMGEwMzU5OTE3NzBkZDk3Mjk0Mzg4ODNjZjcyZjMyIHB5M2sKKzg2MzAwIDMzNTQyM2Q3MzZhN2ZmNDNiMWY3ZmJlMTFkMGViODcwMzU5M2UyZTIgcHkzaworODYzMDEgZThmMWVmNWZkNDIzODM5NjdiNTMyMzg0ZmUyMWY2ZDBiNTI0MmY2MiBweTNrCis4NjMwMiA0MThkY2IxYzQ1ZjdmYjgwMWRmNThkNjAwNTMxZDdhOTFkNzY4N2VhIHB5M2sKKzg2MzAzIDgwNDczYWQ2OTdhYzMwNjc1OTdlY2YwMDhkMzRjZjI2NmEyZDcxNGEgcHkzaworODYzMDQgODE1NGRiOGExNTkzM2RiNWQyNjAxZTg2YjYyZmYzOWQ2N2U2ZTkxNSBweTNrCis4NjMwNSBmODIwOGMzMzk3OGY4ZjRmN2ZkMzU3YzRhMGQ1Zjg2MDJlNWVmYTEwIHB5M2sKKzg2MzA2IDg4ZDA0ZjAxNDNjNzI3NmVmYWI3ZjA4ZTk2MWJkYjM5ODc5YzVmODcgcHkzay1jZGVjaW1hbAorODYzMDcgODU1YTEwZWZiMTBhMjlhZmUxZDI5NGJmY2Y4OWQxNzU4MmZlYmE2MiBweTNrCis4NjMwOCA3NmJjNzE4ZmU3YzkyYTllNzMxYTNiNjg2NzhlNTA3YTc5ODcwMjM3IHB5M2sKKzg2MzA5IDNkYjE3YTQ5NGRjOTRkMjU1NmU5ZmIzNGJmMTQ3YmI1ZjNmNzVhMGEgcHkzaworODYzMTAgM2MxYmZlNTRjZDIwOTZhMTg2ZmRhNzU0YWM4YTlhYzg5NzlmOGZhOSBweTNrCis4NjMxMSA2ZDEyOTRhZGZhZjQ0MDljMDc4ZmE5M2Y0NTM2ZmVkYzNiYjMwYWM3IHJlbGVhc2UzMS1tYWludAorODYzMTIgOTZjODBmNDJiY2U2Y2I5N2MxMGM0MmEwYzBjMTgwZGVkN2M3MzRmNSByZWxlYXNlMzEtbWFpbnQKKzg2MzEzIGQ1NWI3ZDBiYzk3MzdmYzA2ZjE0ZGMxN2U2MDQxN2RhZDU3MzU5YTAgcHkzaworODYzMTQgMDc0NTMzYTc1OTYyZTBhMjBkMGM2MWQ2MDFkYjdmZTk0YjVlMWNlZCByZWxlYXNlMjctbWFpbnQKKzg2MzE1IDFmZmJkNjc1M2ExNTQzN2FkNDA1ZGZjZGNkNGYwZjg3ZDJiMTFlMWMgcHkzaworODYzMTYgMjk0OGQ1ZmIxZWJlYjVmOThhMTkwYzkzYmY3NzM4N2U0NDAwYjZlZSBweTNrCis4NjMxNyAyZDY4MjQ4ODQ0MzViN2I3M2I2Mjg2Y2JmYjQwOTZlMWIxMWRiMTQxIHJlbGVhc2UyNy1tYWludAorODYzMTggYThhYWNkYjQ1MjBlMTZlOGMxZjlkNWEyMWFkY2ViZjM1NWRkNWIwZiBweTNrLWNkZWNpbWFsCis4NjMxOSBiMGRlMGNlOGE3MjY0YjQ4ZGI4MzBiOWNkZDU2YTI2ZjFkZjJlNTI3IHB5M2stY2RlY2ltYWwKKzg2MzIwIDgzNzhlYjgwNzc0NmJiMWUyN2M2YzMyOWJmYjgzN2U0MGIxYjQ1NjkgcHkzay1jZGVjaW1hbAorODYzMjEgMTY5OGIwZjY0MGI2NGU1ZTI0MDMwYjJkNjFkZGFmY2E4NjM1MzhlYyBweTNrLWNkZWNpbWFsCis4NjMyMiBjYTJiOTM3ZTFhOGQxMjY1ZWYzYzY5MWY5MTE1OTlkZDBjZWRmN2EyIHB5M2stY2RlY2ltYWwKKzg2MzIzIDJiMWY4NGE0YWQzM2MxNWY1ZGEyZjhlZGYwMzQ4MjRiMmIwNzUwNGEgcHkzay1jZGVjaW1hbAorODYzMjQgMDcwMzY4MTc1YjI0OWM1NzRlNTU2OTU2ZjRiMTNlYWQwNzUyNzU4NyBweTNrCis4NjMyNSAzYmQ3MzExM2U4MTA3YWU1YTBlNzEwYTRjMWUxNjQ4NWI3MmFhOGYyIHB5M2stY2RlY2ltYWwKKzg2MzI2IDQyNzA4MGYyYWFiNWVkMzVhM2YyMzE2ZjkzYjk3OTJlY2E0OWVkYzYgcHkzaworODYzMjcgM2YxMDM0YjQzNDc4M2M0MDIwYzcwNWNlZGM3OTAzMDFmMzViMDFlYyBweTNrCis4NjMyOCBmM2M1MzM4NTdmYWJiYjc5NmQzM2M3YzM4NzE2NTYyN2E3MWE3ZTMzIHJlbGVhc2UzMS1tYWludAorODYzMjkgMGFkNmEwZDAxNDlhYTgyYTI1MjBkMTQzMTE4MTIzYjEzNDc3MTI0NyByZWxlYXNlMjctbWFpbnQKKzg2MzMwIGQ2ZDcxZDRkNmI2NTA2Yjc1ODJjNzRjNGU4OGUzMTJlMWM4OTE3MzggcHkzay1jZGVjaW1hbAorODYzMzEgMThjYmFiYTYxZmE1NjQ0M2IyMDNiMTcyNDhhODhmNGZkNGRhMGU4ZCBweTNrLWNkZWNpbWFsCis4NjMzMiAwMGJjM2FmODliN2NkYTE1NjRkM2ExZWQzZjZiNTc2MWVjZDJkMGIwIHB5M2sKKzg2MzMzIDhhYjFkZTA4MTNiM2JmNzQ2MzRmNjhmYTc5NDgwZjdlMDI4MWQwNTMgcHkzaworODYzMzQgNzg4MDNjZjE0YTk0YWZiM2M4NGQzMjI5Njk2YmNlNGVmZDBhYjA2OCBweTNrLWNkZWNpbWFsCis4NjMzNSBhZDY0OGYyYjVlMDAwNWRmMmE2MzQyZjI3M2M2ZWMwNDY0ZjgyYWI3IHB5M2stY2RlY2ltYWwKKzg2MzM2IDQ0Y2QwNDBkZGE1NjY2MjVhOTU1MThkM2YxOTNmZDE4Y2Y2NGU3ZmEgcHkzay1jZGVjaW1hbAorODYzMzcgNDI4YjYxMmNiMDc2ZDgzODg3ZDU0MzdkNTZlMWZjNDk5ODI1NjcwNiBweTNrLWNkZWNpbWFsCis4NjMzOCBiYWI3ZTcwM2UzZWE5ZDExNDcyYjMwNGMyNGE4NWJiMDc1MjY1NjRjIHB5M2sKKzg2MzM5IDU2YjZjY2NhMWQ0Y2I1YzdlNTVhNjY0NzNlNjJhYjAyODM4N2M3MGUgcHkzaworODYzNDAgOTAwODExZjY3MDVkNzVlNDQzMjAzZTZjNTE3MDUxNGI5N2JkYjA3MSBweTNrCis4NjM0MSAxYjVmNDdlMmUwZjAzMGYxNGE4MTVmNjk3MWZiOWQ3ODMzNjIwMzZiIHB5M2sKKzg2MzQyIDZhMmI5MTE3ZDQ3N2I3NjBjYTJkMGZiNGNkM2JiZDkwZjE0OTRhYWUgcHkzaworODYzNDMgNzZhMWM1ZTg4MzUyZjczZDJjYWY3NDZlZWU1MDEyZTVkNmNmNGZmMyBweTNrCis4NjM0NCBmYzNiMTJlYmZiOWEyYjQzYzNkYjFlNWFkYTQ4MWEzYTZiZDQ0MGMwIHB5M2sKKzg2MzQ1IDc1ZTAyZmRiZDMzZTZjY2IyMzkzY2RmZGI5ZDVhYTYwYzFjN2E2YWYgcHkzaworODYzNDYgMzA2MzM5YzMxNzU4NjU2MTAzODk2NmQ5NWI0ZmU0MTUzMTJjNjQ2OCBweTNrCis4NjM0NyAzMjNkNDNlODk1M2FmOTFjOTU0ZTk2YWE3NDk4MWZiN2RmMjljODUyIHB5M2sKKzg2MzQ4IDlhNjZmZWIwN2EwYWMxMmFhNmFkYzBmODAyODI1ZGM1MTVkNzNjOTkgcHkzaworODYzNDkgYjM0N2I1Y2Q0MTEyNjk4MzYyNGI3MTk2NzY2MTcyNDFkZmRkNTY1ZiByZWxlYXNlMjctbWFpbnQKKzg2MzUwIDY0MGEwOGVjOGZhMjk0YzZkZGIxODQ4MTRiYWM4NjUxMmEwOWM4YTYgcHkzaworODYzNTEgYjZkYTk3OTMwZjYzMWZhY2E5OTUyYzM0ZjVhMjYxMzYyZDRlZTJkZCBweTNrCis4NjM1MiBiNDkzOGMzNGI4MDM2MGNjN2IxNDQyNGUzYjIzMTI1YjBhNmY2OTNjIHJlbGVhc2UyNy1tYWludAorODYzNTMgNDQ4YWI3NTE2YzBhMDZkNmE4OTJiMWFjNWNiYTE5NTY4MGViNmJiYyBweTNrCis4NjM1NCA2NDZkZmRjNDhjYTg2ZjEyOTIxMDVhZWZkY2NkZjczNDY2YWYzMTU0IHB5M2sKKzg2MzU1IDE5NGYzMGRjNDcwMzQ1OTQxNWQ5ZmM0NWQ3ZGUwZGE4MWE1YzEwMzMgcHkzaworODYzNTYgOTRkMGNjYjYzYjQ2NGNjZmY2MDI0YTc0NzU4Y2EzNTI3MmI3MmZmZCBweTNrCis4NjM1NyA3NGZhNjNhYWIzZmQ2Yzc5N2QwZWRiMjYyNjZlZDM1OTlhOGYxM2UwIHB5M2sKKzg2MzU4IDZmMmE5MjFkOTcyMDMxNTg5NTdmNGRlMTZlZDljYWE5M2YxODBhMTcgcmVsZWFzZTMxLW1haW50Cis4NjM1OSA0MGViMGM5YTNmOTIzZjk5NGU4M2M4YjU0ZTViYzFkMDNiZmViMGY2IHJlbGVhc2UyNy1tYWludAorODYzNjAgODYxOGRmNmVjYWRkOWI2NjY5MDc3Y2Y2MDlkMzZlN2RmYTIwZWMwZSBweTNrLWNkZWNpbWFsCis4NjM2MSBmZTljZjUzNTExOTAyN2I3ZjFhN2UxYTQ1YmI3ZWRiODc0MGNlMmE0IHB5M2stY2RlY2ltYWwKKzg2MzYyIDczNjcyZTQ0NWNjOTEzMjNhMTcwNjM3MzAzYmMwOWYxZGJlYWNiNDUgcHkzay1jZGVjaW1hbAorODYzNjMgN2E4NDBiNmQyZjIyNDk3NWM5ZTc3N2YzN2RiMDlkZmNjODMxZDNhNyBweTNrLWNkZWNpbWFsCis4NjM2NCA2MDAwNTkxNGRmYzc2MGE4MjMwOTNmNjAxYzkwNDA0NTJmNTdkOGUwIHB5M2sKKzg2MzY1IDljMDk4NTdiZGEwYjQ5ZDAzZjhkMGQ4NzUxYmZjOTFlYTFkYTA4MzAgcHkzaworODYzNjYgYWYyNmJjMDk0OTVlM2NlMTRiZjUyOWJkMTU2YzRhOWEwYTliMzc0MSBweTNrCis4NjM2NyAzMTJhZDhmOThmZTM3MTdlNWE4YTg3YmVhZGFkMjYwOGRmOGNlNGM4IHB5M2stY2RlY2ltYWwKKzg2MzY4IGUzM2YxNmNhOWVjZmRmNjY3ZjRiZjVmNGY4NWYzZjUxYWNmZjIxZWIgcHkzay1jZGVjaW1hbAorODYzNjkgZWVlYmI2MjJmZDA4Zjg1MDIyNTBmMDMxMmVmOTQwNDgxMzhjNWU1NCBweTNrCis4NjM3MCAwYWE4YWY3OTM1OWQ1YjUwYzU5NDBjYTFkOGZlMjZmZDBhNmQ0YTVjIHB5M2sKKzg2MzcxIDhmNWQyYjUyNzYzNGE4YzFmMmUzMjJjYTQ2YzMwMDA0MTA4NTk1ZjYgcHkzaworODYzNzIgYmI5ZTQ3Yzk5MWI0MTgyZmNiMmMwMzkxMGY1NjVjMzIzNGI2ZmIxNiBweTNrCis4NjM3MyA2NTM2NGM0NGUyOTU4ZThlZWM3ZDg3M2M4ZmIwZjJjZGNjYzZmMmQyIHJlbGVhc2UzMS1tYWludAorODYzNzQgZDBmYzEwNjYxN2UyYTcwNTc0ODE4NDliNjViMzYxODA5MmJlMGE4YiBweTNrCis4NjM3NSBjNGRjYmU1MWMyZTMzOGNlNWJiN2U2OThhMGIzNGMyMWI1NTI0NGQ1IHB5M2sKKzg2Mzc2IDlmYTUyNDc4YjMyYjlmYTdmOWNhYTIxOGI5NDgzYmUwNDQzOWE0ZWYgcHkzaworODYzNzcgNTU3YmJmNmIzZDcwYWM4MjE5ZmE2YzAwNTY5YmZkNjYzYzM3MmUzMSBweTNrCis4NjM3OCAyZGQ1MTllNTk5Y2MyM2Q3ZjVhYmM5YWIxOTVhZDhlMjk0MWJiOGFlIHB5M2sKKzg2Mzc5IDQ5MTk2NDI2ZWQyZjE0MzIyNTg1NTA5MGZiNmEwY2U2ZTY5OGY1NGIgcHkzay1jZGVjaW1hbAorODYzODAgMTZhNDZiNmU3MDU0NGExNDk5NjMwZDFiZDY2NGUxYzhmMTJjYWM3YSBweTNrCis4NjM4MSBmMDA1MDJmNTdiMjhhZTgwZDg0ZjJlOWNiNjRlYTMyNDNiN2E2ODE2IHJlbGVhc2UzMS1tYWludAorODYzODIgNmEyODFmMDQwYmIxMzRmMjJjNWExODNlZGY5ZmViYzgyMjA3ZWJjMSByZWxlYXNlMjctbWFpbnQKKzg2MzgzIDU3NDI4ZTMxMjNhY2MzNDFjNjY1M2ZlZTcyNzc0MWU4MmVjNjYwMjAgcHkzaworODYzODQgMWIxNmJkMmJmNmM3ZDBjYWJjYzM1ODFlM2M3NDgyODc5MGRhYWIwMCByZWxlYXNlMzEtbWFpbnQKKzg2Mzg1IGFlOTI2ZWNjZGQwZWQwY2E5MDI0MWQ5YmY0MTUyYzZiN2VjMTRjMDQgcmVsZWFzZTI3LW1haW50Cis4NjM4NiAxODE3YTE2ZDFlYWI2YTk2MGRlNzdiYmU2N2I2MjZmNDgzZGFlNTI1IHJlbGVhc2UzMS1tYWludAorODYzODggZWI0YTM0N2I5OGMxNmNkYzNiMWYxOWEzNDM5Y2Y4ZjNlOTY0OGZlZCBweTNrCis4NjM4OSAxODE3YjcwODhkOGRmZWQxZDAwZDZmM2QyM2EzM2Q3MDE2YWRiN2UzIHJlbGVhc2UyNy1tYWludAorODYzOTAgZjkzZmFiZGI4N2FiNDE4MzExZWU1MGYwM2JhMWM3ODUzZWRlM2RiZSBweTNrCis4NjM5MSBlMDI3NThlNTUyZTkyNTc4OGVkN2Y0YzBmZTVlNzYwMjFhMWY3OWZhIHB5M2sKKzg2MzkyIDk2MWM5ZTg4MjFkZDVkYjU1YzVmZDcyMjYwMTU0NzE1MzMyODgxYWIgcmVsZWFzZTMxLW1haW50Cis4NjM5MyBhNWIzOWQ4OWRjY2I3MDYwZTg5NDU2NzM5MjBiOGIwNjQ0NThhMzI4IHJlbGVhc2UyNy1tYWludAorODYzOTUgMDZmNzZlZjI3Zjg2YzA0YjI1YWIxNzg0ZWZjOWRjOWNmMDg5NzQ3OCBweTNrCis4NjM5NiBkZWE0Zjc2NDE5NDBmZTNkOWEzMzgyMGYyNDYyMTFjOTM5MGRhNjM2IHJlbGVhc2UzMS1tYWludAorODYzOTcgNzRhNTg5NGI5NTEzNGYwODllZjUzNTI1OWFjMmNmYjM2YzNiYjVkZiByZWxlYXNlMjctbWFpbnQKKzg2Mzk4IDhlNmExY2QxZjQyYmYzZjcyMDBlMWE0YTIxNTg4YTczNDIwNzNjMTcgcmVsZWFzZTMxLW1haW50Cis4NjM5OSA3Y2VjMGRkMzkxZDY5ZjczNmUzYjZmZTUzZWVlNjU4NzZmMGIwY2I5IHB5M2sKKzg2NDAxIDMxYjFhYTMwMzA2YzU2M2QwNjQ5MmRhMDk1ZWNkMDY4YzU2MmNlZTggcmVsZWFzZTMxLW1haW50Cis4NjQwMiBlNTQ2Zjc2MDVjZjEyMzBhYjBkMzMzNDY1ZWI1NDQ2ODY4YWYzNmM1IHB5M2sKKzg2NDAzIGM1ZTA0OWZkODE3MGM4YTRhY2IzMTExNGRhZjM1YTZhMWEwODk4MjEgcHkzaworODY0MDQgYWFmY2Q1ZTBmYWYxYmY5ZWM4YzgwMGExMzg0YmI0ZWVhODgxMmRmNCBweTNrCis4NjQwNSA2N2ViM2Y1M2RlZWI5MjljODM3ZTU1ZDhkNGEzYWMyMjY2YmNlZDBkIHJlbGVhc2UzMS1tYWludAorODY0MDYgNWI5ZWM1YWNkYWM0Mjc0YWQ0NGQ2YWY4MGFhZDVhOGU1ZGEyZmEzNiBwZXAtMzE1MQorODY0MDcgNzc5Mzc3ZjMwNzdkOWUwNjFlNjRmN2I5YzRkNGViNmY4NjIwYTBkNCBwZXAtMzE1MQorODY0MDggNzIzZWQxYjc3ODcxYmEyMWU1NDY1NGRmNmRlYTY0MjE2ZjcxYWM1NSBwZXAtMzE1MQorODY0MDkgYjUyMmFiZmQyZmRlNzAwNDRjMjAzNzg3NzgzODBjN2VlODg4MTVkMyBweTNrCis4NjQxMCA5OGJkM2NhMWVkODYzNmY5NmI1MTNiYTQ3NDQxYmRiN2RiNDUwZWE1IHB5M2sKKzg2NDExIGM2OWFhMDcyODJhODhhZTgyY2E2NzhkZmI1Mjc4YjQyMDZiNDdkOWUgcmVsZWFzZTMxLW1haW50Cis4NjQxMiAxMmRhNWZiODExMzQwMThmZjg4ZTczMGQyNjM0MGJmOGU5MjE0ZjNiIHJlbGVhc2UyNy1tYWludAorODY0MTMgNTU3MmI4Njk2N2ZmNzZlNmIyOGQ1MWYxMjI2MTk0OWNmZGE2MDhlYSBweTNrCis4NjQxNCA4NTdkOWZlNjAxNjk4MjYzYzNkY2I0NjEzZDQ5YjY4YzJjNjFjYjEzIHB5M2sKKzg2NDE1IDE2NmM3YmU3MmU3OGE2NjI1NmRmMTA1M2I3YTVhNjIwNWIzMTNjNmMgcmVsZWFzZTMxLW1haW50Cis4NjQxNiBkZjJlYmRkYzI4YzYzMmIyMmYyYmY4NGVjZjI3MDk5YmE2YzVjZjJlIHJlbGVhc2UyNy1tYWludAorODY0MTcgYzNkODVkMmFlMWM4N2EzZjk2OWVjOWE4NzM5ZWNjYTdhODVjN2JjNiBweTNrCis4NjQxOCAxYTY1MjkwZTZkMDM2MDVjMDYxMTc5OWZkMDMxZGJmYzFlNmQ0YTBkIHJlbGVhc2UyNy1tYWludAorODY0MTkgNTAzMDdhNzk1NDI0NTIwMzg2OGU2MzAwNDI1YTYzYjk5MDc0YmNmNCBweTNrCis4NjQyMCAwYTFhNGM0NDQzODE2ODFkZWRiYjQxOTJkMWU2MTM1YTRkYTRhODhiIHJlbGVhc2UzMS1tYWludAorODY0MjEgYmU1MGM5MWU2ZGE1M2Y0MWNjNTk0ZmQ2NDA4MTAxY2M4NWFhODc2YSByZWxlYXNlMjctbWFpbnQKKzg2NDIyIDYyYWIzOWVmZTFjNGI0OTU2YTk3OGEwY2Q4YjA4MDkyZWI2MjlkZjAgcHkzaworODY0MjMgZWM0MjExMmMyMTAwOWJhM2U3MDJjOTc4ZDg3NjM2NGIzN2ZmZTExNiByZWxlYXNlMzEtbWFpbnQKKzg2NDI0IDhlYjFjOWU4MTg3YmQ4NTA0MTQ1ZGYxYjBhNDk0NDhhYTk1YjhmNmYgcHkzaworODY0MjUgYzlkM2UxMmJjZDQyZTZlOWE4ZjVlNTY3ODM5NTcwZTUzMTYyYzVkNSBweTNrCis4NjQyNyAwNTA5ZWNkZmY4YWU3Yzk1ODUyMjNlMTg0OWM1MzRlODcxYWYzNGFkIHB5M2sKKzg2NDI4IDU2ZmIxZTc3Njc0ODYxODQyYjczNDI4ZmMxZmMxMDc3N2VjOTEyNjcgcHkzaworODY0MjkgMDMyOTYzMTZhODkyMzFjNjhlZjZiYWFiZDhmN2I0OGI3MGJhY2M1YiBweTNrCis4NjQzMCAwYTI3YzlkYjlhYzc5MzMxYTJlYjZkODhkZTc3YjM0NmJhNGJmYzlkIHB5M2sKKzg2NDMxIDhkNjUxNjk0OWE3MWQwNzU4NTVjZTkyYTZiOTZlNTk1NDJmNDI0NjkgcHkzaworODY0MzIgMTI2MTAyYmE3NDhmOGYzZjJkNmRiYTM3ZTU4NmE5ZjZmNGYzMzkzMSByZWxlYXNlMjctbWFpbnQKKzg2NDMzIDZhYTc3ODNlYTBlOWU2YTNkYzVlNWE5ZTU5N2ViZTg1Mzk0ODMzM2UgcmVsZWFzZTMxLW1haW50Cis4NjQzNCBkMmVmODhlNzFiNGFjOWY3NDRlYzkxN2Y5MjY0NWMwZDFjMDhjODY2IHJlbGVhc2UyNy1tYWludAorODY0MzUgZTJlZjQ3YmMyODFkNDk4MzJmNDZhYzQ5NDRiYWM3OTNjYTM4Njc5OCBweTNrCis4NjQzNiBjZTQxMjdlYzVlZWI3ZGFmZGViMGMwMjY1MTU0ZWYwMWZjZmU3YmJiIHJlbGVhc2UyNy1tYWludAorODY0MzcgZjZlODEzYjQ4YWYzZGFjYWU3YjYyZDIyYjkwOGVkYzRkMDg1YTI4NyByZWxlYXNlMjctbWFpbnQKKzg2NDM4IDNkNTQ4YjcxZDA4MjgxY2U1ODI3MzRjZjI3ZmYwMTkzMTFmYWNjMGQgcHkzaworODY0MzkgYzIxYWVmM2ZmNWUyZjM3YzZlZTFlMDQ3YmFmNzMxOWEzNTg0YTZiNSByZWxlYXNlMzEtbWFpbnQKKzg2NDQwIGNhMGVkYTQwMDIxNDgxNDI2YjBhYTAxM2RhODE3YTE3OWJlNzdlMDMgcmVsZWFzZTI3LW1haW50Cis4NjQ0MSA1YWNlMWRhMzI3NWU5ZTgwZmUzZjE2MDNiOWZjOTY3ZTEyOGE0MTk1IHB5M2sKKzg2NDQyIDAzMjQ2MjQ3OWUwYmQzMmFmZTY3ODc0MWM0MzhhYTVkN2NkYWIyNjIgcHkzaworODY0NDMgNWZkOTE3ZDQxYzljMmQzN2RkZDNmODlkOGRkOWY1MWRkYjkxNmMwOSBweTNrCis4NjQ0NCBjYWJjNzYxMTU0Nzg0OTlmNDQwZGU3ZGQ4MjJmMGVjYTRhZTdmYTY1IHB5M2sKKzg2NDQ1IGE4M2Q5ODg4YTBkOWFiYTA3ZDA0NmFmYmZiYTlhYTE2MTA1MDAzODYgcHkzaworODY0NDYgZDEyYjk5MzYyOWExNjc4MTlhM2E5Yjg0YzNjMzAxMjE4ZjNkOTVmNiBweTNrCis4NjQ0NyA2YmRkMzJjYjU1YTlhMmYwZmM4NGE4MjNlNzUzN2YwMGQ4MjhjZTBkIHJlbGVhc2UzMS1tYWludAorODY0NDggNGM0ZmU3MTM5YzY4ZTIxYmJmYTQ4MjEzNGY1NDM1OGEzNmRkNjRiMCBweTNrCis4NjQ0OSBiMTFhODRkZTQ0OTI1ZGNiOTYyN2UxY2MxMjU5YjA3NjE3NmE2NmM4IHB5M2sKKzg2NDUwIGM2YjJmNDE3ODMwZWFiNDU2NWQ4YmJlNzg1MzEzNjUwYThiNmM2NjQgcHkzaworODY0NTEgZDkyYTViODUwZjVlNTY4MDhiZWRjMDE3MjM5MDZlZDY0YzVlNmUyZSBweTNrCis4NjQ1MiBkOWU2YjhhNzcwNzA1MmJkNDA5ZWQ0NmY4NzQ2NzU2ZWY1MzU5ZDEyIHB5M2sKKzg2NDUzIGQxOGU5ZDcxZjM2OWQ4MjExZjZhYzg3MjUyYzZkMzIxMWY5YmQwOWYgcmVsZWFzZTMxLW1haW50Cis4NjQ1NCBkNWVlOTZlN2FjZWJiM2ZiNTIwYWIzODM4MTlhNGZkMTBjNmE0NTdiIHJlbGVhc2UzMS1tYWludAorODY0NTUgNjNkOWYwMGZlYTA3MzBjMWM0MzdhNTBmNjRhNDJiNzc5MmJkY2JmYiByZWxlYXNlMjctbWFpbnQKKzg2NDU2IDRkNDVhNGFmMzJhOTZmNzE4YzEzZjc5Mjc0MmUyNjMwMTMzYmMzYWEgcmVsZWFzZTI3LW1haW50Cis4NjQ1OSA1MDIyZTViNzNhZDE5N2MxNjY3NjVjZTdjMGEyMDQ2NWE1NDFjMzcyIHJlbGVhc2UyNy1tYWludAorODY0NjAgY2UzODhmYjFiZTAxZjkyMTliNWY4NDA2NmM5OTUzMWUxYzM0ZDIyMyByZWxlYXNlMzEtbWFpbnQKKzg2NDYxIDBmMzk4MTg4YzdmNjA2MTAwMjQ5YmQwZjkzYzRiZTU0NTZhODkzMjcgcmVsZWFzZTMxLW1haW50Cis4NjQ2MiBiN2QwMmFlNDVkMTUzNTE3NDhjODRmNTg4Y2FmZDlmMmU4MGIwZGVmIHJlbGVhc2UyNy1tYWludAorODY0NjMgZmNhYmU0N2ZlMWRlNTA0ZjAzZWJjZjZlYWNkNDMyOTdhYjk3NmM3MCBweTNrCis4NjQ2NSAyNGZjOGM4NTJkMTNhNDc2NTY1MWJlNzY4ODYyMjhiNzljZTU4MmM1IHJlbGVhc2UzMS1tYWludAorODY0NjYgYjQ1ZWFiYzdjMDA0NmM1MTdjNDE0YjFkOWIwYWQ3ODg0NzA2ZDdhMCByZWxlYXNlMjctbWFpbnQKKzg2NDY3IGJhMDE0NTQzZWQyYzIzNWM2NjRmZWE0YTJhNzU3Y2M5NTEwZTk0NjEgcHkzaworODY0NjggNjgzMzI3MTM3MzY1MTQ2OTgyNzlkYjIxNGJlNjM4MGU0YTA4YzFhYSBweTNrLWNkZWNpbWFsCis4NjQ2OSA2Mjg5NTlmYjQwYzMzOWE2OTIxZmViNjM3NDY1MzI2OTY1Mjg2Y2E3IHB5M2stY2RlY2ltYWwKKzg2NDcwIGU0NWQwYmI3ODBkY2IzY2YyMGFhZmQyMmQxMTQ3Y2VmM2Y1MGZiNzUgcHkzay1jZGVjaW1hbAorODY0NzEgZjcyM2FhMTU3YTgyZDk3NjcyODllODYyNTQ2OGYyYzQ5OGU2YjNjOSBweTNrLWNkZWNpbWFsCis4NjQ3MiBkYTAzYzY1MDUyNDBlYWViZTIxOTBmODA1NGI5YWE5NWQ2M2JlNjY4IHB5M2stY2RlY2ltYWwKKzg2NDczIDY5YzkxMzFhYTMyMjRlNzY3ZDhkNzYyMTZkOWYyNDdiMGI1YWU5MjcgcHkzay1jZGVjaW1hbAorODY0NzQgMzM1ODI3MTBlMDE0MWZlYzA0YTljNmI4YzM2YmJiZjM4MzhmMjQ2NiByZWxlYXNlMzEtbWFpbnQKKzg2NDc3IDk4YzhlNzkzYzBiM2RjY2VmYTRlNWJlMGJmMTg2YjRhYjhiNGQwOWUgcHkzay1jZGVjaW1hbAorODY0NzggMGRmNmFjNjIyNzJiYTk1ZDIyYjNlNWM4Mjc3NmUxNzYwNDhkMmYzYyBweTNrCis4NjQ3OSA0YjhjZWQ1ZmVmYjc0NmIzODMzYjY4OWRkYjc5ZjZjNTdhMzk3YWIyIHB5M2sKKzg2NDgwIDM0NjI3ZGNhMjE5NmVkOGMzMjM2M2E5ZWFhMGU5MDhjYTcwZmJkMGQgcHkzaworODY0ODEgNTJmZTYwMjE2ZTg5MzIzMjIxN2FkYjk3MzgxZDJjMmMyOTgxMjBkMCByZWxlYXNlMzEtbWFpbnQKKzg2NDg0IGFlNjYxMGNhOTBhMTljZjY4MzE5YzEwZjU1MjQ5Y2M5ODkwYzNlZjcgcHkzaworODY0ODUgNTVhYmMwOTY1ZTlkNzY1ZDMwMzM2YWNhMjliMjBhZGI1YWRkMGYzMiBweTNrCis4NjQ4NiBiYjEyMzc0YzhkYzZlN2FjMTUxMDBmMDA3MzcwMzU3NjE1MWJkZDQ5IHB5M2sKKzg2NDg3IGM0ZmU0YjEzMDBkNTc4OTUzMTUwZGRmMWI3M2E0ZmMyNzY5YzNhYTAgcHkzaworODY0ODggZWYxZGI3ZjVjOGE5ZjIxMDU1YjNmMzg5N2NiZGJlYjQ5YWY0N2YwYyBweTNrCis4NjQ4OSBmZjZiMmJmNzVkODEyNjcxYWRjYjc1OWUwNTliZDEzOTE4YzY2YTJkIHJlbGVhc2UzMS1tYWludAorODY0OTAgNDY3OWZiZGZjODE3ZjY2YjE1YTYzMGNiNDZkZDFjZjFlOTAzZGUyMiByZWxlYXNlMjctbWFpbnQKKzg2NDkxIDU4NmE5MmNmNGNjN2Y0NzM1OGFiOTk4Yzk0OWQwNjJlZjc1MmM5OGUgcHkzaworODY0OTIgYzlmYjMwZmQxZjBhNWNhZmQyMmUyNmFhNGExOTFmZDMwNzJkZTg3MCBweTNrCis4NjQ5MyAwZDFiNjYyMzAyNDdjNTVjZTI4YmFmMDQzNDgwMTAwZjlhNDcwNGYzIHB5M2sKKzg2NDk1IDUyYmY3OWZkNmQ2YzZmNGI2YTYyOWIzMmEyNDg4Y2VjZjJjMmU0NWYgcHkzay1jZGVjaW1hbAorODY0OTYgZDU0YzhmMTZjNTFjMmJmNWZmZjQyZjIyNTNjMjgzNGVlMmE1YTRmMCBweTNrLWNkZWNpbWFsCis4NjQ5NyBiZDY4Y2VmNGYxZWUwOTg4ZGUzOTlkZGRjODMzYjY5ZDMyODJjNzY5IHB5M2stY2RlY2ltYWwKKzg2NDk4IDc4MjZkOTA3Yjc2NWJkM2UyNjY4MTQzNGQ3MmE2ZWRiNDdlZTUxMWQgcHkzaworODY0OTkgZDhjYzk1ZDdkZTYyYTFmYmU1ZWJmZTY3YTUzNWQzMGIwNTc3ZjA4MyBweTNrCis4NjUwMCA3NWE4MmZlMjc0YTdjODZmZTdhNTY2MmFlMjM0ODAwMjE0N2JhOTE2IHB5M2sKKzg2NTAxIDM3OTAyOTcxNGUyNDU5ODk3MTA2YTIzNTY2Y2I4MDg1Y2Q4N2UwM2EgcHkzaworODY1MDIgOTRiYmNlY2Q5NTgyNTdkYjBhMWQyMzA1ZjM3MDVmMDY4NDJjMWVlZCByZWxlYXNlMzEtbWFpbnQKKzg2NTAzIDUyZTUxOTliNjUxMzNlMDU2M2NiMDFjMjcxNDVkYTQwMjQxNGFhMTMgcmVsZWFzZTI3LW1haW50Cis4NjUwNCBiNDE0MDRhM2Y3ZDQxOWIxYWYyNGM0YzQ4NzZjOGM2NjQ0YjFmMzY1IHB5M2sKKzg2NTA1IDY2ZThkMzVkNzFmZGVhZmI3ODFhOTI5NTdlMWExMGJkM2NmODM5YzcgcmVsZWFzZTMxLW1haW50Cis4NjUwNiBjZGMzOWY2YmViZjEwYmJkZjc1NTJkZTEyNmEyNDZlOTIwNDY5NjYzIHB5M2sKKzg2NTA3IGFmMTNmYjZmYjNkZjdlNGE2ZDlmNWJkYjYxOWJkZmFjYmQ5MmRiNDQgcHkzaworODY1MDggMTViZDUwZWUyYzRjM2U5ODY4YWNjOWM2YzY1MzAxYmVhZjE0NGJmZiBweTNrCis4NjUwOSA4MDVjMjhkZDY3YjNlMjFiMDc3MjgxZTRjOWI1MjYzOWY0OGY3N2Q2IHB5M2sKKzg2NTEwIDQ4M2JiZWJjNTdiZmZiNWY2OTQyMWZkZmE0YWMyYWI2NzllNzIyYjQgcHkzaworODY1MTEgZjlmYjkyZWE0ODUwMjkyODA3ODQ3ZjAxYTg1ZWNiYjM0Njc0OTkzZCBweTNrCis4NjUxMiBlMTA1ZTZhYzg1MzY1MTRkNjkzNjM4Y2EzYWNlNDljYTY1NDQ1MjBkIHJlbGVhc2UyNy1tYWludAorODY1MTMgMjdlMzJkNTIwMDU1NjA4OTc1MjUzOTZkZTY2ZWUyMTYyMWUwYWNiYyBweTNrCis4NjUxNCA1YmM0NjNiMDRjODMzM2QzMWY3NGE2ZjM1MDgyNWVjNTdlOTYxZTU2IHB5M2sKKzg2NTE1IDAxOTQyMWE4OWVmNTlkYzBiMTZmYTY5M2Q0OGRjMGU0ZmM1MWIxNDkgcmVsZWFzZTMxLW1haW50Cis4NjUxNiA4YjZmYWVhMzA1NzM0MGQ1NmZlZjllNTRkYzg3OWJkYjk1YjQ1ZGMzIHB5M2sKKzg2NTE3IDI5NzgxNjBmNDkxNDk1YmIxMzUyYTBhMDBkMjBkYWJhZjQxMTY2ZTQgcHkzaworODY1MTggODJiMTYxZmEyODE4NDEyNGQ5NjdlY2ViYmNiMTM5NWI1NzAxMmUyZSBweTNrLWNkZWNpbWFsCis4NjUxOSBmMGRkYzkxYmFlYzA0YTQ3MjlmYjRjN2UzNDU4NzM1OGIxOGJmNzA3IHB5M2stY2RlY2ltYWwKKzg2NTIwIGJiMjc2OTM4OWM1MzE0NzNlMGU5YzhjMTQ3ZmQ5ZGJjNjJhOTFmZjkgcHkzaworODY1MjEgMzc4ZDRmNGU5Y2I1MGQ4ZmQyMjc5NGRkYjJjNDk5ZWE0NGUwNzI1MiBweTNrCis4NjUyMiBmYjdkZGYxZDM1OTQwMjkyNzAzZTcwMWRlODY3YTVjMWY1MDE4NDY0IHJlbGVhc2UzMS1tYWludAorODY1MjMgOTMyYTNmZmE0ZTU2MTFlZTk3MDZhMmIxNmIxZjdhNDFlMmE2ZWE2YyBweTNrCis4NjUyNCBhMDE5YmI0ZmZiNTBlNTU3NTY5ZDlhMmE2ZWU4YjFjZTVhNDQxYzllIHJlbGVhc2UzMS1tYWludAorODY1MjUgMWRhYTQwYjQxMjExNzI2OGU0ZDIwNDI1ZTBiYTdlYmY5MDZlMTY5ZCBweTNrCis4NjUyNiBhZTMxNWE3ZjYyZDI3ODExZjNkMzc5MTFhM2MxNzAxMDlkY2M1OTE3IHB5M2sKKzg2NTI3IDY3YWI3NDAyZTBkZWNkZWIzYWY0MzMyZTZlMTYyN2E3NmRmNTYxMzUgcmVsZWFzZTMxLW1haW50Cis4NjUyOCAyN2M1NDUzYTE0N2Y1MTFjYzI4ZTM4OTA3NDJkNWE0MzFiM2I5NjA2IHB5M2sKKzg2NTI5IGI4NDIwZTc2NzYzOGU1NjI2ZTQ5NTM5NjY4ZWZlMDI1OTBkN2Q2MzUgcmVsZWFzZTMxLW1haW50Cis4NjUzMCAwY2NhNzNiMGE1YmYwMDg3NzdlZjk0NTk2MTIwM2ZmMDRlZGFiMTNjIHB5M2sKKzg2NTMzIGExZGE4MjQzYjYzZTZhYzI3ZDAyNjc3ZDA0ZDllNTgxNWI1MmFlY2EgcHkzaworODY1MzQgNDIwMzAxNDAwNDAzZjBlMjM5YTdhNzcyOWM2NDdlYTk3ZjY5NzU4NCByZWxlYXNlMzEtbWFpbnQKKzg2NTM1IGU5ODNlYjIyMjlkZmRhMGU3Y2NjMTQwN2NiNWRmNWUwNjYzOGVhZmQgcHkzaworODY1MzYgNGIzYTU1MDIwMDJkMjE4OTAwZmU5NzE0MWU2NjkxZmNjZjlkNWU0MiByZWxlYXNlMjctbWFpbnQKKzg2NTM3IGQ5Yzg5MDcyMDQ0ZTQ4ZDc1YmQ0ODkxYTk2NDE1MTViODVhYjdmZTAgcHkzaworODY1MzggZTM3MzQ0YThmMGM5MWMzOTQxMjcyN2JhZmQ1Njg5NzQ3YjQ4YzMxMCBweTNrCis4NjUzOSAzNTA4OThlMDk1YWE2ZmJjZjA1ZWY5YmI4ZGM2NDM0NjE4ODBjZDQ1IHJlbGVhc2UzMS1tYWludAorODY1NDAgYjliZTQ1ZjQzM2I5MmRiODUzMDBlMDM5MzIwZDA0OTM5MmUyYzMwOCBweTNrCis4NjU0MSA1MWY3MmM1ZmUyOGU0YmYxYWM4NmM4MDljZDQxOTY4YjI3NGY3OGZiIHJlbGVhc2UzMS1tYWludAorODY1NDIgZDRmNWUyN2VkMTg2YjZkYjM2YWRlYzdiYmJkZDBjODhmMjExYjMxYSBweTNrCis4NjU0MyA0NTcyZDI4ZGJhYzczM2EzZDcxMWZhNDdkYmFjMzlmODFhYTQ5NzZiIHJlbGVhc2UzMS1tYWludAorODY1NDQgY2RkY2JlM2JmNTdhMmU4Mzc5N2NjZDU0MjE2Nzg0MTY2MjJlMThhNiBweTNrCis4NjU0NSBjNjRlZDZkYTQ4YjlhYjM4YjU5MjYzODNkMDBmMDVhY2IyMDQ3YTM5IHB5M2sKKzg2NTQ2IGQyMmFhNWFlNzc2MjVmNzY5ZTc5ZDk2NjA1OTY0YTAzNjI0NDU3NGMgcmVsZWFzZTMxLW1haW50Cis4NjU0NyA1ZWQzN2MyYzA1NzQxZGVlOWFiMTBmNjk4YmE1NjI0NDJhY2RiYmVlIHB5M2sKKzg2NTQ4IGU5YWMzZjMxMTE5OTU3ODFmYjk1NjFhYjViMWJjZjBjZDg5NmExZDAgcHkzaworODY1NDkgODRhMzA1ZTJlNTQ4ODkzMTc0YzZhNTMwYjAzOTEwMzhlYzRmNDM4MCBweTNrCis4NjU1MCA0YjRjNzIxMzJhYjZlYjJiMzVjZGJhOWFlZTllN2MzYWFkMDEyNjZkIHB5M2sKKzg2NTUxIGU1MzBmYzc2ODJiZjI5NjRiYTY5NTA0MzFiODc0NGZmYmRhZWIxMjQgcHkzaworODY1NTIgNDA5NzBlODllNjBhYmEzOWY0NzUyNTQzNTMzZTYwNzE5M2M4MGRjMCBweTNrCis4NjU1MyA4MjVlNDgwYzkzMGRhMTAzMWVjNzkxN2QwOWM0NGYwMTIzOWFiMmI2IHB5M2sKKzg2NTU0IGYwNzk2NDM5MTViNTNlOWNmMDE4ZjYzODNhZjkzODg3YjhmN2M5MmYgcmVsZWFzZTI3LW1haW50Cis4NjU1NSAyNDVmNmNhM2IyMzMwZmViNGEyNzgxYmRjNDI3NjBiMmE5MThkYzU0IHB5M2sKKzg2NTU2IDUzZGQ3MDBhMzViNmYyZmU2NzcwMDc5ODQxMTFlZGVjMjFlYWQ2ZTcgcmVsZWFzZTI3LW1haW50Cis4NjU1NyBkZGIzYmM4ZTY5OTBkZjRmMWE2MTU2NGQxZmFiYmYzMzE3MjM0ZmUzIHJlbGVhc2UzMS1tYWludAorODY1NTggMTliNzExYTc3ZWZmMWI0MzdkNjY0NjRiMDBmZWM5MDk0ODFhYmMyYiByZWxlYXNlMjctbWFpbnQKKzg2NTU5IDJkZDUzOTI1ZjAwNzFkZDY1ZThlMTMzMDdjNDgyMDFkNzJkMjUxZWMgcmVsZWFzZTI3LW1haW50Cis4NjU2MCA1ZDU1YzViYjhhYjFjNDA1NGQ3NjQwNjIxYWYxZWU0MmVlNDI1ZjhlIHJlbGVhc2UzMS1tYWludAorODY1NjEgYjQ2YmNlODdkMmFmMDFlNDU4OTgyNGQ5ZmY5MmQzMzkxNzgyY2E3ZCBweTNrCis4NjU2MiBkZWJjNzY2NDE5MTIyYWY2MDhhNzZhNTcwODg1MGE5OTQxYmZmNjhmIHB5M2sKKzg2NTY0IDQwYjBjNjliYjJiZDc1MDZmNThkZThjOWU5MDBjMzA5MTcyY2EwMjEgcHkzaworODY1NjUgYzIwYWRlNjNmM2RiY2ExYjhhMjc4MjRmYmVjNjA2MTE3YzdjYjY1OCBweTNrCis4NjU2NiA0ZWQ2MTAxZjhhYjI1NTU0M2NiNzVjZmNjMDM1ZDljZjc2Njk0YjQ5IHB5M2sKKzg2NTY3IDdmMzJjNWY1NmQxYTExOGQ3ZTAzNzAyOTNmNWRhMmY1YWM0MDg5NzIgcHkzaworODY1NjggYTE5MzZmYTYzNTgwZDYyYzkzMWY1MjMwNDk4NTI4OTg5OWYxODVlNyByZWxlYXNlMzEtbWFpbnQKKzg2NTY5IDU5ZTU2YjgyZTZjYjJjZmI1OTUzMjk3ZTViMTI1YTFkZDM4NzkyM2UgcmVsZWFzZTI3LW1haW50Cis4NjU3MCA0ZTJkYTUyN2Y1YjFkYjFhZmUxODQ4MWNhNmY1YWEzNmNlZjRhNTBmIHB5M2sKKzg2NTcxIGFlZjhmMTg1MGQyNGQ3MGRiZTIyMTk3YmUwNzUzZDkzMTkxNjg2ZmYgcHkzaworODY1NzIgNzhhMzgwZDU3ZmVhMTk0YWMzMjRkZjk4NWJhYTlhNzAxZmE1OGE0MyBweTNrCis4NjU3MyA1MWUxY2JkZDhmZDI4NTZkZmVhM2I2NDgwZTRjYzdiNThhM2MzZWJkIHB5M2sKKzg2NTc0IDJhZTRlZWQ0YTNiMzc4N2U4NDlhZmM4ZmNkNmM2ZjA0NTc4NTdhNzEgcHkzaworODY1NzUgODM4ZjY5NDhkZWI4YjZmODA1NjhmZDg5ZTcxMDBmMmUxMzZiYWIyMCBweTNrCis4NjU3NiAzZDJmNTVjY2Q2NjBlYzYxNTM1YWI2NGNkZDNmYTZiMTc4ZDk3Y2JhIHB5M2sKKzg2NTc3IDgwYjQ4YTNhMjQ3MzRjNTM4OGYxODgxYmE3NThlMTI1MWNiOTcyZTIgcHkzaworODY1NzggZDU3MTgxYWNhZjhjNDNkNjQzYTM4ZWZkYjE0NzlhNzI3Y2MzMjczOCBweTNrCis4NjU3OSAxZWY0NjUxZmVlZjg5YjgwMmFjZDczZTUzYzM5MGIxMmJkNWExMzg2IHB5M2sKKzg2NTgwIDQxZDU4YmVjM2UwOGI0NWEzODAyNDQ1MzNlZDk5ZTg1NmE3NzljODQgcHkzaworODY1ODEgNGU1MTJhOTQ5YjYwYzA0ODAxNTc0N2M1ODQyOTZmOTg0ZWFhZTk2MCByZWxlYXNlMzEtbWFpbnQKKzg2NTgyIGE3YzIyMTA3YWVjZDA0NTcyYmYwNGMzODRjYzBlZjE2MDg2MDQ5ODEgcmVsZWFzZTI3LW1haW50Cis4NjU4MyA2NmQ0MGI2YTJiYjFhZDgwZGJmOGQ0NTJjNjY1MmU1OWM5ODRlZTU2IHB5M2sKKzg2NTg0IDNhMGU3MDAwZGM4ZjlkNzA4YWE1ZWFiNTE2MWQ2NDdiNzExYmZjM2UgcHkzaworODY1ODUgZWE4MzU1Y2RkZDlmODE5N2JmODU3ODcyMzA0YzViNzIyMDU5MzFiNCBweTNrCis4NjU4NiBiYzlkYzdlN2YzNzNkYWM2ZDU1MTZjYjgyNGRiNDliNjMwODhlNTE5IHJlbGVhc2UyNy1tYWludAorODY1ODcgM2M5YjFjMDViYTllYzU3YmQ0YzFhOWMzOTdiYzg5MmM5ZjA0YjY4MSBweTNrCis4NjU4OCA3Y2RiZGJmMzQ4MGI4ZjAyYjlkMDk3ZjhhMGRlNWEyNTZkMDgyYmQ4IHJlbGVhc2UzMS1tYWludAorODY1ODkgYzQwNGMyYTM0NmE1ODQ0YjVhOTU4ZGIwMmUzNjcwMGM0MDcwZjczZiByZWxlYXNlMjctbWFpbnQKKzg2NTkwIDYzMWQ4NDRiYmM0NTkzMmQ1ODhmNTRiNjdiOTRiZmRlNmQ1MzczOGIgcmVsZWFzZTI3LW1haW50Cis4NjU5MSA5NjVmODU5ZTYwYWZmOTE3NjhlZjZkNjMxN2NmOWNiNzNiYzcwODM2IHJlbGVhc2UyNy1tYWludAorODY1OTIgNTA3NTE4MjJmNjIyMzA2NjVhYTFmYzQ5YjI3YzM1ZmFiMDY4MjIwYSBweTNrCis4NjU5MyBjMDZlZDI1ZTY5YjgzMzI3ZDViNWM5ZGFiNThjNGNjMTJjNzYzYzRhIHB5M2sKKzg2NTk0IDRmMjlhYThmOWY1NGIxYTI1ZDY5YjQwZmVlOTFmMjhiOWM1MzA0ZjQgcHkzaworODY1OTUgNDNlNTBiYjkyM2E5NmVlYWE1OGUxOWM5OTBmOTQ2NTQxZTlmZjUyNiBweTNrCis4NjU5NiA5ZmU3NmMyNmVhOWZlN2JmM2JlYjM0ZmRkMTI5OWNiMTgwZWM2ZWE4IHB5M2sKKzg2NTk3IGRlZGY3MTliMjZhMzc0ZDI5MjRhMmIwMGE2ZDM3YjI0ZGE5ZWM2MjkgcGVwLTAzODQKKzg2NTk4IDEyOTNmODE5Y2UzNjYyMmU0YWMzNzY1ODMzNGQ1YjIwNWMzNDk4OTQgcHkzaworODY1OTkgNTNiZTFhNjdlOTY0YWVjYzM5Mzk0YWI0YTBmZjMyODgxNWNlYmU4OCBwZXAtMDM4NAorODY2MDAgMTNhMmE1ZGUxYjdmNmViYzU1MzA2YzU2YzkxNTk0MDkxOTg5YmVjYiBwZXAtMDM4NAorODY2MDEgODZlM2Y2MzI0ZTY1MDIzNTBlMWUxYmNjNjQ0Mzk0YTRmZDBhMGZmMiBweTNrCis4NjYwMiA0NGIzMTIxOWFlY2QzMzJlYmQyY2ViMmM5YmUyMjY0ODBkZTdjOTUzIHJlbGVhc2UyNy1tYWludAorODY2MDMgNjcxZTZiZDE4MTE0M2QyODQ2ZGFjMTI4MDVhMDAxYmRjM2RjY2FiYyBweTNrCis4NjYwNCBiNmQ3YzViNmYxZjIwMTNiMDE0MWY1YzViMmVkYmYxN2MxYTNkYmM3IHJlbGVhc2UzMS1tYWludAorODY2MDUgZjVkYjUzNzgzOTIyZDI3Njc3NzgzOTg4ZjJiOWFjN2I0ZWY3MDAzOSBweTNrCis4NjYwNiBlZWQ0MmQyODM1NjIyZGY4YWE0OTQ1MGI1NjdmNDliNmUwOWJkYTNjIHJlbGVhc2UzMS1tYWludAorODY2MDcgNmVhYmY4YzFhNzVjN2U1MjMyY2RhZGZiMmI1ZjE4ODI0MThmMDU4YiBweTNrCis4NjYwOCA5ZmVjNmFiY2E3ZDc2NzYyMjYyZWZkNjRhNjg4NGJlYWMwZjQ1ZTViIHB5M2sKKzg2NjA5IDRhZTJkMDExYTgwYmE1Y2ViNGE0NTNkYWRkNjJkZWM2OWNjMTgyYjYgcmVsZWFzZTI3LW1haW50Cis4NjYxMCA1OTMwN2FhN2QyZmU2N2EwODFhZTRlZjcxMzM3MTdjNGQ4M2EyYTJkIHB5M2sKKzg2NjExIDQzMzU2OTNkZjI1OTc5ZDliZjg3NTIwYmEwNzdlMWI5YjU2MmJjZDQgcHkzaworODY2MTIgMWNkYzljMWM0MzBlODVjNWI2NTNhZDEyNjNkNDFmODE3ZjQxMGYzZiByZWxlYXNlMzEtbWFpbnQKKzg2NjEzIDdhZWMyMzg2ODI4NzdiMzliMmM0NjI4NDMyM2Q3NDhkYWE3N2MzNjggcmVsZWFzZTI3LW1haW50Cis4NjYxNCAxMGExYzM5OTg2NGU0NjNiZDA3NDE3YjIzZTAzYWU4NWZlYTZkYzYwIHB5M2sKKzg2NjE1IGNmZDUzODMxMWI2ZmE2MGZiYzkzNTgzNmE0ZWE0MDdkOWU1MTk4NmMgcmVsZWFzZTMxLW1haW50Cis4NjYxNiA0OGZkYzJkOGY4OTZlYzc0ZDUwNzkyNjI5ODc2Zjk3ODlmZjY2MDQ0IHJlbGVhc2UyNy1tYWludAorODY2MTcgN2FmMTllOTlkMmY4NWViOTdjZTBkZDNjNzQ3MjcwMjQ1OTA1NTZjOSBweTNrCis4NjYxOCAyMzhjYWFmNjg1MmI3MzNlZjA1MGQxNjY5YWY5ODc3YTcyZDEzMWRjIHB5M2sKKzg2NjE5IGFkZDdlOTcyMWY4MDk0NzEzNjFlYjRhYjRhM2M1Nzk4MDE4YTUxZGUgcHkzaworODY2MjAgZTAxMjM3ODMxYWQyZmFkNjljNWZkYmQxMjRiOTA3MWYyMGQ4ZDUwMSBweTNrCis4NjYyMSAzOThiMjE4MjFkMWI0YTAwYTQ0N2YyYzMyNmIyY2VhMmIwNDQ1YzI1IHB5M2sKKzg2NjIyIDI1NzUxMmI5N2Y4MjNkM2U3MDBhZmFiYjg3OWJmMDBmOTBkZDU3NjIgcHkzaworODY2MjMgMWI0NDhmZDdlMWEyNDhjNDkzMjE1N2FmMTQyYThmMjdmMWE2ZDU5MCBweTNrCis4NjYyNCBhY2Q5NjI4MjQ4MTkxNDg5ZTA2MzFiOGFiMzlkYTU3NzU2YWJmYzViIHB5M2sKKzg2NjI1IDQ1OWE2OTAyNWQ5YzE2YmRiOWE4NDI2MDMyMjI4OWI2Mjg5ODc1NDEgcHkzaworODY2MjYgNjIxODJhYmMxMTZhYmFjNTVlOGZmZDc2YjNjNGQxNmEyY2EwYjcyMyBweTNrCis4NjYyNyAwN2NhZGMyYzY0MzgyOTlmZTNjNGUyZGFhMWJlNmI4Njk1ZDljZjNiIHJlbGVhc2UzMS1tYWludAorODY2MjggODM3YWQ1ODU0ZmM5M2I0MGM1MTQyOTJkMGZiYmY2OTIzYzAzZTUxOCByZWxlYXNlMjctbWFpbnQKKzg2NjI5IDJiZWIyNTM2OTI4OTc1MjY3NDM0MmMwZWE4NzVkNzk5YzBmY2U1MjEgcmVsZWFzZTMxLW1haW50Cis4NjYzMCA1YzA2ZDNkMWI5YzkwZDUwMzhmN2ViMmVkM2E4Y2JiYzhjOTE5NmYwIHB5M2sKKzg2NjMxIDU0NGI0NTNlNjBhNThlZWMwZTZhNDI4MzRkNzA2Y2EwM2JlMWM4NjIgcHkzaworODY2MzIgMjA2ODI1NWI0ZGEwMGExOGZjNmNiYjZhZmM4Y2JiMWU5MDVlNTg0NiBweTNrCis4NjYzMyBmZGZjNmRjYTgwNDgzYjNkMTNmY2U1Y2NiNmRjMTkyNDBlNDczZDUyIHB5M2sKKzg2NjM0IGQyOWE2N2MyNjYwMGM3NjgzNGI5MGM2MTc4ZjZmNWIyYzgyNTNiMDkgcHkzaworODY2MzUgOWEwYzI0MDFjNmE2ZTFmMDFiY2U3OTUyMTMwZmQ1NTMxOTY2MTM4ZSBweTNrCis4NjYzNiBmNTQ3NjhhNWUyZjU1ZGM2ZTFlNzc5MjAyMDU0NzRiYTAwNDMwNzQ4IHB5M2sKKzg2NjM3IDYxNGM4NDY3MGM2M2QzNWEwZjI3YTg4OGQ4Njk4NTM5MDQ5M2ZlN2QgcmVsZWFzZTI3LW1haW50Cis4NjYzOCBjMTNmODk4MGNhN2ZkZmIzOGM0NWI0MDZmOGE5MzM5NWE4Nzk0ZGIzIHB5M2sKKzg2NjM5IGY4Y2ViNmFmZDdhOTFhYWM5YTc5Nzk5MTU5YjliNmRjZjQzOTUzMjIgcHkzaworODY2NDAgOTcxNzE1M2Q1NThkMDQ5ZTRjMzUyMTU1ZTk5ZTg3MWRjNzE4YzZmYiBweTNrCis4NjY0MSA2MWQxZWMzMDdiYjBkYjQ5MWViNmNiYjFiMjBlMmFiN2U4MTY5Yzc2IHB5M2sKKzg2NjQyIDMyMmFhM2U4Mjc2OGJlM2JjN2MyODZhODdiNWUxOGJmNWI3Mzc0MjAgcHkzaworODY2NDMgMTc5ZGM0YzM0NzBmM2NmNzZkZmI5Yzk4YzI3OTExMDdiY2E1NDc0MyByZWxlYXNlMzEtbWFpbnQKKzg2NjQ0IDk0M2E4NjQ5OTAwZGZmOTg1NTFlYzIyNTU1NGZmNmVhODlhM2EyODUgcmVsZWFzZTI3LW1haW50Cis4NjY0NSBlZWQzMjg4ZGVkODk1ZmIyZDg5ZTRhYzRlOTk1YjUyMGRlYjdkZTg5IHB5M2sKKzg2NjQ2IGE3ODQ0NTdlMDAwZTVjM2M5ODU3OTY1MjM0NDgyYjZjOGFlZmUyNzggcHkzaworODY2NDcgMWVmOGU5YTc1ZmVmM2M3MjIzMDVmNjQ4YjdiNDg0ZWU2NDQ4MTBiMSBweTNrCis4NjY0OCAyMmJjZGFjMTgxYmNhOTExYmU4MDFhYzZhNDVkMTRmNDQ0ZGU2ZDQwIHB5M2sKKzg2NjQ5IDFlYzA1ODBkOWQ5ZDdiNjc4OWYyOWRiODgxMjhjZDVkZjcxZTM3ZTAgcHkzaworODY2NTAgNWJhOGJmY2U3ZWMxZDZkYzA2MTM1YjQ5NzFmZmIwMGQyMmM1ZDBjMiBweTNrCis4NjY1MSA4YmExNmFhYmQ1NjQ2YjcyODY1ODhlMTlhZGFhMGRlNGQwNmJkYTE1IHB5M2sKKzg2NjUyIDQ4NWRjZmZjODhiNDVlMTY4NWVjMWNmYzY4N2NlNjRjZDAzNWIzNzUgcmVsZWFzZTMxLW1haW50Cis4NjY1MyBmNDdmY2Q1YjUwMWRlYzFhODJkYjNmOGU0NDQ1NDk0YTZiN2RmNTRkIHJlbGVhc2UyNy1tYWludAorODY2NTQgN2IxNGYxZmY2MDJiYjUwOGRkNTU0OWE5NzQxNGU3MWIzMjk5YTk3NiBweTNrCis4NjY1NSBhZGQ4YTAzZGRlZTZlMzVkNDc2YzVlNjY5NjgyYmM0NGY4MzViYmU0IHB5M2sKKzg2NjU2IDA3YTQ4NzBmNjBhMDdmMGY1M2NkNWUwZjE3ZjQ4NTFiMzI1NzI2OTYgcmVsZWFzZTMxLW1haW50Cis4NjY1NyBhMDgxNjI1ZGQ2YzYyN2ViMzU0N2ZmNjUwNTBkNzRlMmRmMDhiYTBhIHJlbGVhc2UyNy1tYWludAorODY2NTggZmZjMzcyYzhjZmEwYzc2M2UzYzQ1ZjMzMmI0ZDFmODA4ODEzMmFiMiByZWxlYXNlMzEtbWFpbnQKKzg2NjU5IDVkMTEyYzc4N2Q2ZTk0ZjBkMTdmYjQ4N2QyMzJjZDlkMTZkYmIyYjIgcmVsZWFzZTI3LW1haW50Cis4NjY2MCBmMDJmM2IzM2RkOGY5MWY0MmIxYzcwMzAzMDJhODI1NThiMGQ0NWQ0IHB5M2sKKzg2NjYxIDVhYmZjMWNjMjJkMTFmM2M4Y2ExYjZhMDhiY2M3MjdhYmQ3ZTUyZmIgcHkzaworODY2NjIgNjZlMGY1YzY1MTU4Njg5ZTNjYTYxZGVlZWU1MGY2OTRlMjBmMzQ0OCBweTNrCis4NjY2MyBjNWNhMWE5YjFmZGY1ZjJjNGY3YWRmYThjOGUxZWY4M2Q0ZTg1OWU3IHJlbGVhc2UzMS1tYWludAorODY2NjQgMGIyNzE2ZjhhZmI1OTA0ZDQyODI5YjQ5OWIxN2I3ZjU1YmUwYTI2NyByZWxlYXNlMjctbWFpbnQKKzg2NjY1IDBlZmQ0MjU4OWYxNzFlMzgxOGE4ODFlOTA2YTZjODdhYTJiMmM5YzAgcHkzaworODY2NjYgZGM2YTI3YmY4NTkyOGNhNzVlM2JhYWJiNDBmYjE1NDM2YmM4ZTdjYiByZWxlYXNlMzEtbWFpbnQKKzg2NjY3IDlhMTkwNjhiYThiMTBlMTEzYzQ0ZTE0ODllNmNkNjQ4MjEwNDcwY2YgcmVsZWFzZTI3LW1haW50Cis4NjY2OCAxMDJkYjBjZmZlNTFmNmNjNGM5ZWYwN2RkZjNkNDhmZjBmMmZhNTYxIHB5M2sKKzg2NjY5IDNlOTVmMDg5MjM3YTllMjc5OTdkMjFmZGMwYzJkMTkzOTI5NzAwMmIgcHkzaworODY2NzAgMDgxM2MyYWNmNzQxNTUxOTRkYzBkMDA5ZGE2OGJmY2I4Yjc0MzMzYSBweTNrCis4NjY3MSBhZGE2N2RlNjQ5MTk5NzFjYWI5YmMyMjYyYzA3M2RmNTIwMGFjOTdkIHB5M2sKKzg2NjcyIDUzODJjYTk1YzNmNmMzMTZkOGZkYmY5NmM5MDIzMDU5NDdkZWMyZWQgcmVsZWFzZTMxLW1haW50Cis4NjY3MyBkNmI2Zjk5ZjVhZjllMDE1MWEyMjg0MzFmZDFlYjRjZWJhNDQyZjhiIHJlbGVhc2UyNy1tYWludAorODY2NzQgYWE2NGQ0ZjFhNzk1NjE1MzVjYWY1YjE2NzI3Mzg1NDEzNGM2OGNhNyByZWxlYXNlMzEtbWFpbnQKKzg2Njc1IDJmZjc1ODMxNWZhMTBjNWI4ODZkYzZlYWYyNDhlZTY2ZTNmNTNhYzIgcmVsZWFzZTI3LW1haW50Cis4NjY3NiA3YjcwNTEyODI3Y2YzOTRkMjllOGI1YWMxYWQ2NDljNzQ5MDY1NDQxIHB5M2sKKzg2Njc3IDBhOWZkNWM5NGRjMzU5NTg5ZDRjYTEyMmE4YjRmYzgxMjY4NmQ1ZWUgcmVsZWFzZTMxLW1haW50Cis4NjY3OCA0YzJiMmJlNzE0NTdmNzUwYmJjNmM3Njc5NzM0YTEwYmIwMTEzMmQ0IHJlbGVhc2UyNy1tYWludAorODY2NzkgYzZiN2RmMWJkZjUwZTQ4YjYwZGQ3ZmQyNDQ2N2U3NGVjN2E0NjM4ZiBweTNrCis4NjY4MCA3ZWU1OTBhZWIyYjM0MjEyNGVlYjM2ZGIwNDIxZTEyNDlhMjU2ZmYwIHJlbGVhc2UzMS1tYWludAorODY2ODEgZDk3NzQxMjFhNmRmZGE3ZjVlOTBiOTQ1ZjdmNzM0MGJlYzZmODNkZiBweTNrCis4NjY4MiA2ZjI1Y2FjMjgzNmVhZDc5NjM5ZWI4NGU1YWMxMzliZDEwNDRkZWEyIHJlbGVhc2UzMS1tYWludAorODY2ODMgNGYzNTg2NmZkOGNiMTJlYTg1ZWZlYzYwNmRkYmU2M2Y2Njk2NGM4MSByZWxlYXNlMjctbWFpbnQKKzg2Njg0IGYxNTBiNjc4NTQ4ZWRmMDljOTgyZGFlMTFkNzg4MmNjN2QwODNiOTggcHkzaworODY2ODUgMzM2MjU4OWMwYzAyYWJlMjA3NWJkZmJiOTVhYjRiNWU1MjlhZDFmYyByZWxlYXNlMzEtbWFpbnQKKzg2Njg2IGUwZWNjZmE5YWQ2YmEwYTA0YmRjN2Q0YjI0YzllMjVhOGEwNzg3ZjcgcmVsZWFzZTI3LW1haW50Cis4NjY4NyA4MmFjNzUzYmY2MmE5YTBkOTAwNDc2YmU2MTI2ZDhhYmMzNWZlYjQzIHB5M2stY2RlY2ltYWwKKzg2Njg4IGU4ODQwMzMxZjc3OGU3N2RiZTBkZTU5OTZiMmQ5YTllNzFiMmM5NWYgcHkzay1jZGVjaW1hbAorODY2ODkgYWE0ZGVhZjM0NGQxOTkwMjZlN2MyZGNjMmMyYzVhNTM0YjQ2ZjBmZCBweTNrCis4NjY5MCBkY2FkNzA2YjM4ZmM0OGI4ZGVhYWRhZmYyYjk2ZmU1NjM1ZmRmN2IwIHB5M2sKKzg2NjkxIDBjNjY4MTQ2YjEyNmE2ZmQ0MmExNTAwMmJhZThkM2M5MzU4ZGQ2ZGMgcmVsZWFzZTMxLW1haW50Cis4NjY5MiA4ZGNiMTc3ODFlODMyNGZmMGFjMjU2MzFhMTBhYWRmZmRhMjIwOWJiIHJlbGVhc2UyNy1tYWludAorODY2OTMgMTI3ZjUxNjhhNzc0ZjljZGVmNTVmNDYwODFhNzUwNTVhOWU2M2YzOSBweTNrCis4NjY5NCA5OGUxZGRkNTA1YmMyOWFmYTRhOGZjNGU4MTgwYTJhNmE5ZDE5MDU1IHB5M2sKKzg2Njk1IDU4YWM1MTYwZDFiN2JiYmNlNzhkMTUxZGVjMGVkZmI1YTZiNmRkMzkgcmVsZWFzZTMxLW1haW50Cis4NjY5NiAzZjYyMzUwZWRkMmU5MzY0NjdlMzcwZDQ1MjE2MzY2YjQzYWExNjU0IHJlbGVhc2UyNy1tYWludAorODY2OTcgNDAxMDkzMDE4Mjg1NDRmMDQzYTE0NjgwMGZhN2Y3ZTUwYmNjNzg4ZiBweTNrCis4NjY5OCBjYzljNTFmOTUyNGY5ZGZlMWIzMjE2YTk0NGU2NjMwNWQ5YzU5ZWI5IHJlbGVhc2UzMS1tYWludAorODY2OTkgMmMzNzAwNjVjMWI0ZGU5MTUxZjAzODQ0ZTU5ODViYzAyMDQ2NmQwNyBweTNrCis4NjcwMCAyNjBmZjM3OTExNWM3YjdjNDVlOWUwZTZlM2I4MTM4MTMxNzQxMDQxIHB5M2sKKzg2NzAxIGRjYjYwYmYyNmRjZTk4YTYwZTE4N2NiNDg2ZTA2NmEwY2YwNzE5NGMgcHkzaworODY3MDIgNWE2OWE1ODljNmYwODY5N2VkZTVkZTNlMzMxOTVhMTQ4NTU3ODBlNyBweTNrCis4NjcwMyBhNzM5ODgzZWU2YzU2MDYxN2ZjNzQzYWE2NjVjZWE1ZTU1ZGVhOTQ2IHJlbGVhc2UzMS1tYWludAorODY3MDQgOTUyMjgyYTUwNDdmYzIxZmZhYjIyODUxYjA0NTcxN2FjZmVlNWFjYiByZWxlYXNlMjctbWFpbnQKKzg2NzA1IDMzMDNhYmUyOWQwYjM4ZDIyNjhhMTllNDlhZTU0ZDkzYzc0N2UyYmYgcHkzaworODY3MDYgYTRiN2E0MWRhYmQ5NGM4MzYxMTVhYjcwODM5MDVlMGQ3NmViZTkwYiByZWxlYXNlMjctbWFpbnQKKzg2NzA3IDYzZjExNGIwOWNhZmE5MjBmNDAwNGViYjM2MDI3ZmVmYTBiNjM0YWEgcmVsZWFzZTMxLW1haW50Cis4NjcwOCAwY2U1Nzk1MWFlYzYyYTkyMzExNDMyZTM3NTZjMjg5N2VkNGExYzdmIHB5M2sKKzg2NzEwIGM4NmYxNzEwNDY3ZTdhNWQ0YWM4ODYxYTljMjFkODc3ODljNmZjN2IgcHkzay11cmxsaWIKKzg2NzExIDZjYTI4OTBiYWI2NzhkZmI1YjAzY2EzMTg4Zjk2YWY3ZGE1ZThlN2UgcHkzay11cmxsaWIKKzg2NzEyIDBmOGM1MmVjOWY3ZjE1YzFlMTNkZGY3MTlmMTkwYmU5ZTAyYzViZjggcHkzay11cmxsaWIKKzg2NzEzIDlhZGYzOTdmNTZlN2I0M2M3ZGE5NzE3NmVhZGQwMTljZjdkNjczYmEgcHkzaworODY3MTQgOGI0YTUzMWFkMzUyYTQ0OGI4ZDdmOWE5M2EzYTk0MTFmY2ZlNWJmYiBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MTUgMWFlNTFkMTNjMjViOTIzNTYwNjg5M2QxODM3YmQzNmZhMmY1ZmQ2OCBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MTYgYmUwZjRkOGJmY2VhYWNhNTY0MjdhMWUyMTFhZGI0NjIyNTY2NTRkZiBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MTcgOWYyM2M1ZjQ4NTZjMDI0NGU4NzkzNjQ4MDY5M2Y1YjE2MjExMmMzMiBweTNrCis4NjcxOCBiYWI5YzIwN2UxY2Y4YWQxNmQyMzI0NGQwZGEyYzE0M2U3ZGViNDkxIHJlbGVhc2UzMS1tYWludAorODY3MTkgMTQwNGFiMDc2YjU4ZjQ0YzYyM2M2ZjFiYWJhZjk1YTIxYjJkN2U0ZiByZWxlYXNlMjctbWFpbnQKKzg2NzIwIDQzNmRhZjA5NWU4OTY4ZTVjZWFjNGY5MWFkY2FlYzU4YjlkYmI3ZTcgcHkzaworODY3MjEgMDgyODgxNGUwM2FkZGI4MjBhNzU0ZGJhNDI0NDEzYmM1YTI5MzU0OSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjIgNjFmOWQzYmYyMzRjZjBmOTBkZjkyYjM5ZTdmYmQ4NmNiYzRjYWY1ZSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjMgMDkyNGY0MGJiNmRjNTFjNWJjZjY2MjQ4ZmZlYjJhNGM0Nzc1YzdjYSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjQgNDI1OGUyOGNmNDQwNjBhZTQzZDliMzk4MGJlYmIwZmE2MjlkMGMyYyBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjUgNjUyYmFmMjNjMzY4NmU1MjBhZWQzZDBlN2I3N2M2ZTVhNGEyNDQzZiBweTNrCis4NjcyNiAyODg5ZWQ3MzQxZTA3ZTlmZjk0Y2ExNWM3OTM2MmExNDg2ODU5YTcxIHJlbGVhc2UyNy1tYWludAorODY3MjcgMGExYmFhNjE5MTcxYWYzMjQ4NjllY2JjYjZjNzE0NDAyOTg3NTllYyBweTNrCis4NjcyOCBmM2E2MWRhZmJmNmJhZDg4ZjE1ZjgxZDdmNTMwM2E1NWQ0NzQxOGMzIHJlbGVhc2UyNy1tYWludAorODY3MjkgNGZlZDAwNjU5ODMxNDFiYTAyYWMwNjQ2MjRiY2I2N2QxYmIzYzQ5ZiBweTNrCis4NjczMCA4M2IwNTE3ZDBmYzVlMDJmMWU5ZWJiNTYwNjIxNzhkNDhjNzBmZDdmIHB5M2sKKzg2NzMxIGE3NjNlZDNkNmU4Y2FhODdhYzE3YWI4MjAwZTkzN2RlNWNlOTIzZjEgcHkzaworODY3MzIgODJkYTJhYmNlNzIyMGMzNDYzMGM1ZjljOTBmMzMyNzExYTQ0NDRmZiBweTNrCis4NjczMyA5Y2QxMDM2NDU1ZTdkNjI4NWI0YzFmYjM0M2QzMjFiMWU2YzQ3NzM5IHB5M2sKKzg2NzM0IDM5NWFjNmUzMTlhODk1OWIzMjExN2YxNWEwY2NhMzc2ZWIwODgzOWEgcHkzaworODY3MzUgMjZmODBmNzI0YjRmZjE2OTAwNjU3MWE1ZjNmNDBhMGVlZWIzNjdhYyByZWxlYXNlMzEtbWFpbnQKKzg2NzM2IDI1MzJjNGJjMDM3M2ExNjhjY2Q4ZTY3NzljOGFmYmJlNzU3MjUxMjIgcmVsZWFzZTI3LW1haW50Cis4NjczNyBkNmU4YjdlMjUwYzY1YWMzN2U5MzlkZDg3N2M3NTAwYTRhNzBiNGYwIHB5M2sKKzg2NzM4IGI3MzgxMjY5MGM2ZTY1OGZiYzk5ZmQ3ZGNkMDRkM2Y3Zjg3ZDlkMWYgcmVsZWFzZTMxLW1haW50Cis4NjczOSAyODc3MjY1YmRiMDFjYTE1YWIxNWZmNmE3MGI1YjQ1OGU4NzNlMTZhIHJlbGVhc2UyNy1tYWludAorODY3NDAgOThjYTY1NTMyM2MwNWNiM2QxYWE3MzI2ZDhmMzc5YTZhMzUyNzg0YiBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3NDEgNGRkN2ViMmQ5ODU2Y2VmM2ZlNDE2MmU2NzQyYjNiOTliZDg5ZjQwMCBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3NDIgODU4ZTg2ZGI0NDJmNWFkODFhY2I0NDkzODgxOGE3M2I0NDM2NDVkNSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3NDMgY2VhZDA0YjNjNWVkMTNmMmY1YjNiZGM0ZmYxZmI4OTk3NzQyZDMwMCBweTNrCis4Njc0NCAwY2IyNjUyNjQxOWQ4OGI3YTQ2ZDUzNWVlMzdhNTcxNjc3OGVhMmZmIHB5M2sKKzg2NzQ1IGM1NGM0MTFkM2RhN2ExNGI2YjNlODllMDI1OTQxZjJkZDYyODY0MDQgcHkzaworODY3NDYgMDNkOTMzOTQ4YmYzZWFhOGM3OWM2NDlkZWJkNTZjYmI2Y2Y1OTUxNiBweTNrCis4Njc0NyA2Nzg4MjEwNWRkNjU1OGJjYjUwYzNmMjc3MjVhYzk3MTdjYjhlNmUzIHB5M2sKKzg2NzQ4IDRkMzk1MmEyMWUyNTc2MGEyOWEwYzY4Yzc1MzMyOGViNDYxNDVlOTQgcHkzay11cmxsaWIKKzg2NzQ5IGFlODJjNzcwNzY5Y2FkNTVmMWYyMDY5NThkYjg3YzUzZjVlN2ZkNDQgcHkzay11cmxsaWIKKzg2NzUwIDExNzhlMjU0NWRjYjVjNjgyYTIwNjVjNTJiM2FiNWM0OTgyZjllYzQgcHkzaworODY3NTEgZWRlZDY5MTQ5N2I3NDhjM2NlYjhlZGUwYzFiMTY3ZGM3MjhkYTU1ZiBweTNrCis4Njc1MiBmM2RmOTNlMjYyNjc1YWM1YjljZThkNzcxZjgwNmU4OTc3ZjVlYjY0IHJlbGVhc2UzMS1tYWludAorODY3NTMgMGRhNDJjZDAxNTc2NTVkZmNlYjBjZTIxMTA1ODc4YWJmZDFmOWNlNSByZWxlYXNlMzEtbWFpbnQKKzg2NzU2IDQ1N2M3ZTcwNGVjMjk5YzM5ZjYxNTI3ZGZiNjZlYTA1ZDJkMWVlOTIgcHkzay1jZGVjaW1hbAorODY3NTcgMmQ2Y2RjODE4NWNhZTU3NWNmZDIzZGZhYjNlZDEwZTgzNDk1OGEwYiBweTNrLXN0YXQtb24td2luZG93cy12MgorODY3NTggMTQwZDhhNjU3NzA1NDMzYTgzNDVlYzg0YzNjZmI1ZDI1NTNkMTdjYyBweTNrCis4Njc1OSAwNmQyMzAyNmY5MDQ1NjliN2VlMTU4ZjJlYmNhZmViNzgwNDE5OTg1IHB5M2sKKzg2NzYwIGY1OWRiZjI4ZTEyYzNmNmI5Y2M4YTlhNDQ2YjIwYzgyZGMzODU3NjUgcmVsZWFzZTI3LW1haW50Cis4Njc2MSBlNDhlZDJlZjZkNWZmYjM5MmQxYmQ3OGI5MDM2MjY4MmQ5N2NiZjVhIHJlbGVhc2UyNy1tYWludAorODY3NjIgN2FiNGZkYTc3MDMxMjc2NTUzMTI0YjhiMGQ5ZjI4MGI3ZGI5NDVhOSByZWxlYXNlMjctbWFpbnQKKzg2NzYzIDE5MjMyMDIwZTQ5MWQ3OGVmMWIwNmEzZDdhOTNlYzc5Njc1MTBlMTcgcmVsZWFzZTI3LW1haW50Cis4Njc2NCA4Y2U5YWU1YTE1NDI3YjA3ZGRmYzBhM2ExNGE2MDY0YWVmMjY1ZmNmIHJlbGVhc2UyNy1tYWludAorODY3NjUgNmMzNWFiYzdkMGQyMTkyZTMyMTM5ZDIxYmJmOTcyNWQ4Nzk5ZTE4ZSByZWxlYXNlMjctbWFpbnQKKzg2NzY2IDQ1YWI1NWZhM2RjMGRmOTU4MTY0YmMwMTQ0ODdiMDBhMzdmZjAwNDIgcmVsZWFzZTI3LW1haW50Cis4Njc2NyA3Nzc3MWIwODVlY2E3NWQ0Yjc3MDU4YTNjNDlkZmRlNjQxYzI2OTE5IHJlbGVhc2UyNy1tYWludAorODY3NjggYTgwM2ZkODQxZmQxN2MzYzQzNThmMjhkMGIxZjYyYmI1OGRjYzg2ZCByZWxlYXNlMjctbWFpbnQKKzg2NzY5IGQ2YzU3NTAxNTNiYjExODY0NGJlMTA2OTU5YWExNTUyN2NiYWYxMzkgcmVsZWFzZTI3LW1haW50Cis4Njc3MCAzN2IzN2I2YTg5NzJiZDZmMDU2OGQ5MWY5NTg4YmU2ZWEwN2YyNTZiIHJlbGVhc2UyNy1tYWludAorODY3NzEgMjk1NWYzMzc5NjllODE2NDRmMTA3Y2MyZTc4NjE5ZDIwZjYwNDU5OCByZWxlYXNlMjctbWFpbnQKKzg2NzcyIGUxMGY2MThjOTY3YWMyOTNjNmIyYTE2ZTU4NGExMDg2ZGJkNTk2NWUgcmVsZWFzZTI3LW1haW50Cis4Njc3MyA4MzVjMTc2MjM5ZDAyNTdiMmU2OTY2MDIxOTExNWRlY2NlNDBkMTc1IHJlbGVhc2UyNy1tYWludAorODY3NzQgZmIyYWE0NWExYjIyZTNiMWI1ZjMzNDM4NDZhMWZlMGM1MzEyOWFiMiByZWxlYXNlMjctbWFpbnQKKzg2Nzc1IDhiNmE5ZWNiZTk4OWMwYjRjMGI3YmRmOGJhNWY5ZGU1NzVmNTk0YmYgcmVsZWFzZTI3LW1haW50Cis4Njc3NiAyZTU4MTI2ZGJhZDA4NzAzYmUyZjMzYzM4YTg3YzQxZGU2YjU2Y2U3IHJlbGVhc2UyNy1tYWludAorODY3NzcgNDEzNjUxNWNkZmFjZGZjNzg0NDk4YTJiYjdjMTRkM2FiODI0N2JhMiByZWxlYXNlMjctbWFpbnQKKzg2Nzc4IDdjMGViOGQ1NjE0NmI5YWVhZjM5N2M0ZTdjMGQ0ZmI3ZjAxNjBhMTYgcmVsZWFzZTI3LW1haW50Cis4Njc3OSA3MWI3NzE1MTkzMzNhMDRiMTIzM2QxYmE1YWZkZjI2Njg0NzM5NWE1IHJlbGVhc2UyNy1tYWludAorODY3ODAgYTM3MmZjNDg2MjgxNjY3NDE2ODQ0MjgxMTUyMGRhMjlkYzdhMTc2MSByZWxlYXNlMzEtbWFpbnQKKzg2NzgxIDQ1ZTQ5MjY5ZTBkOGVmMWRkMjgyMjNmNjQ5YTJlYWU3YmE2OTEyM2IgcmVsZWFzZTMxLW1haW50Cis4Njc4MiBlNzU5M2ZlYjVhZDVjM2ZiMjJiNzQ4ODEwOWY3Yjc3YzNlMzA1MTFlIHJlbGVhc2UzMS1tYWludAorODY3ODMgYTlmMGVjNjA0YzhhZDA4ODBiZGExOTdkMWRiMTllOWE1OWJlYzAyMCByZWxlYXNlMzEtbWFpbnQKKzg2Nzg0IDA1ZWU2ZjhjMDI2MGFhNWJlMWU1YTFmNGY3Njg5MTQ0ZDVlOWZiZGMgcmVsZWFzZTMxLW1haW50Cis4Njc4NSAzOWI1YWY3NzNlNzU5NmFiNzc3MTlhZjEzZDA2NTY5NDdmNTlkZjI3IHJlbGVhc2UyNy1tYWludAorODY3ODYgOWJlYWQ5MDlkOGVmZWRlYzdmNDA2MzRkNjAzNjliZTU0ZmI2OGRiNyByZWxlYXNlMzEtbWFpbnQKKzg2Nzg3IDliMzQ0YmUxYmU5YTdlOWI5MDI1NGViNGFkMmJlYzgwNzU5YWJlZTYgcmVsZWFzZTMxLW1haW50Cis4Njc4OCAzZWU2ZDAzOGFmOWI0NmU4MDkzNGZlOTcwY2VlMGU2NzcxMjY3ZTJmIHJlbGVhc2UzMS1tYWludAorODY3ODkgNzI4MTkzN2IyZDY1YjNkNThiYzdjYmQ1ODliNDM3Mzk0NGM1ZWZmYiByZWxlYXNlMzEtbWFpbnQKKzg2NzkwIDlkNmUyNDY1ZjU5MjU0NjRmYjA5NGRlZTVlMThlYTJkNmVkMWQ4MjkgcmVsZWFzZTI3LW1haW50Cis4Njc5MSA0ZWExYzZhNGU5MmQwZmI5OTZiNDQ5ODJlMTY4MWVmN2RhNzEyYmQyIHB5M2sKKzg2NzkyIDJjMTY3MjgxNjJmZGRiZWI2YjJmY2IyZjlmYTIyODc3ZmYxZjI2YTEgcmVsZWFzZTI3LW1haW50Cis4Njc5MyAwMDAwYmJhYjA4YjQ0NzY4NDZjMDIxZTQ1OTc5MjFmZDA2NTJlM2Y0IHJlbGVhc2UzMS1tYWludAorODY3OTQgYjBlOTdkYmQ5OGI4NDM4ZTFjNmU4MTc2MmI0NDNjNDg5NWI0YWYwYiBweTNrCis4Njc5NSBmYTAxN2JjYWVlMTAwMDNiMjM4OGExZGYzMjQxN2ZlYWViODY2NWE5IHB5M2sKKzg2Nzk2IDUwODRjZTk0ODQzNzg1OWQ1MWEyNjc2MTUwNDY3MWE4Y2MwYmMzZTQgcmVsZWFzZTMxLW1haW50Cis4Njc5NyA0NmZlYWVjNzI5YmRjNjdiZmIyMDQ5MWZkYWNkNjYyOWY0YTcwZjlhIHB5M2sKKzg2Nzk4IGZiNWM0NWQzOGUyYWY1MTUwZGIyNThjMmY1NDMzODY5MDBkMzliOTIgcHkzaworODY3OTkgYWM1MjA3ZGQ4ZDlhMzM0NjYzZjc4NzQ4ODY5OGE1NGUzYTc3NTljZiBweTNrCis4NjgwMCBhY2ViNDUxNmE4ZDQ0YTJkNTBhZTVjNTZlNjQzYTBjYmFlMzE1ZDIxIHB5M2sKKzg2ODAxIGJmNWY0MTc0YjhjMmQ1ODg4YTA4YjRjYzZiNjM5Y2VkNWIxZTAyN2EgcHkzaworODY4MDMgMjMxYjBiYmMxZjkwNDY0YzVkZDMyMjg3OWVmOGFiMDJkYjdjN2JhYSBweTNrLXN0YXQtb24td2luZG93cworODY4MDQgMzI5ODQyZGYwNmExMGEzZjY5MTViM2MxMjBlZGZjYTAxNTE5OGY1NSBweTNrCis4NjgwNSAwZTFkZDQ1NDhhYTE3YzFiMDhiZjdlZDhlYTIyOGYxZWQ2NjYyODhkIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgwNiAxMzJhOTRlYzBjZTgwZDZlZTY1YTc3ZWU2NTA0YjNkYmFlZjA1ZGU1IHJlbGVhc2UyNy1tYWludAorODY4MDcgNDI3OWU0MTdiMmEwMjRiMGNiNGJlODAyZDExMjA5ZDJhZDllMjAzMiByZWxlYXNlMzEtbWFpbnQKKzg2ODA4IGZhZGY3NGMwYzUwNDNkOTc5OGViMzhhNjAyZGE2NzYwYWUyM2RlNWIgcHkzaworODY4MDkgNzg2ZWUxMWUwYzg0MWEwYjUzZTYxNDcxMDJkYmVkNTM5YWRiOTg0YSBweTNrLXN0YXQtb24td2luZG93cworODY4MTAgYzdhMzQyYTc5OGU3NzEzNzc5MDA0NmY5OGNlMTk5YzE5MmE3MmI0ZCByZWxlYXNlMzEtbWFpbnQKKzg2ODExIDc0OWIxZTcxMzkxY2FlMzYyMmU0MjgwNWYzNjdiMmY2ZGQxYmZlMDkgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODEyIGM4MTYzYzJhMWI2ZjRkZTE0MTY2MGUzZmIzOTFjOTkyYTcyNzNlOGQgcmVsZWFzZTI3LW1haW50Cis4NjgxMyBjODJjYTNiZWI0ZGYxNWU5NTMyZGMxMzc1ZjM5ZmRiYzZkYmE5ODI3IHJlbGVhc2UyNy1tYWludAorODY4MTQgOWZlZmYxNzdmNDRkMTI2OWFlMjNkNjM2OTBjYjYzMTFjMGVmOGI3NiByZWxlYXNlMjctbWFpbnQKKzg2ODE1IGFkNzlmOWIzYTAyMTk3MGFmMGVlZDRlMmM3ZjQxZmQzNzk3ZDM0NTkgcmVsZWFzZTMxLW1haW50Cis4NjgxNiBmMjIyMjVhOWQ3MjA4MmFmNjZhOTMzMzA4MmEwMTFlM2I0ZGYyZDdlIHJlbGVhc2UzMS1tYWludAorODY4MTcgZWE0ZWM2ZGU5Y2VmZTA5YTg2ZDhiMzI0YTJjOGQwZDg0NjI4MGY2ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MTggYWJiYzU4YTA2ZTQzZDQ4ZDllZjNmOGI1NGU2ZWY2NDlkNzUzNDQ0MyBweTNrLXN0YXQtb24td2luZG93cworODY4MTkgOTZjYTk5ZGZlZmQ4ZWU3MWI0MDNkYTk2ZGI5YmVkNmQ2ZWJlNjRlZCBweTNrCis4NjgyMCA4NmE2NTM5ZDJjMjUzNWRlZWM1MTk0N2U0OWQ2YmYzODIxODdkNDVkIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgyMSAwYjYzNDA3MzA5MTNjNGNjNTU3NTk2ZTZkODIxZWU2MmJkNGE1NWM0IHJlbGVhc2UzMS1tYWludAorODY4MjIgYjRiZmRjNTJhZDUxMDZiMTc0YTlkYzE2NzNlZmM4YzhlMzM0N2NjNyByZWxlYXNlMjctbWFpbnQKKzg2ODIzIGNjZjI2MzNiOTVkZDg5ZjVjMWVmMTU4OTY0MzUxNDliZGNiNjk0YzkgcHkzaworODY4MjQgNjMzNDFkZDM2MGFmNWY3MDM4NzAyYmY2ZDkxNGZjMDdkZDkwYTFhOCBweTNrCis4NjgyNSBmZWU5OGI2MDQxMzljN2Y1YmE4MTNhYTc3Mjg2ZmU0Y2ZiOWYyZGM1IHB5M2sKKzg2ODI4IDU5NjIzOWRhM2RiNzlkZWQwYzU4MmFkODg0ZmE2YTU1ZGU4NTgwZTggcHkzaworODY4MjkgZDNiYWQ0MWFkNzAxNzc3ODg4NDU0MWRlMjczNDI5ZGI0ZDhhZDkyMyBweTNrCis4NjgzMCA1OGMyYWM2MGNjYjlkYWI0ZDI1ZTdlMmU5MGRkZTI3NjliZGI0OTdmIHJlbGVhc2UzMS1tYWludAorODY4MzEgODJhZGUyMTNhNjZkZjkyZmI3NDM3OTIxMTdmNWYwZGJkMGJmNmZkNyByZWxlYXNlMjctbWFpbnQKKzg2ODMyIDUzOTVmOTY1ODhkNGYwMTk5ZDMyOWNiNzllYjEwOTY0OGRjNGVmNWUgcmVsZWFzZTI3LW1haW50Cis4NjgzMyA3ZTM4ZjhmYmJhZGRhYjhhMTZhNjY1YTQ5NGFmZWNmY2Q1MGRmM2U4IHJlbGVhc2UyNy1tYWludAorODY4MzQgYTRmNzU3NzNjMDA2MGNlZTM4YjBiYjY1MWE3YWJhNmY1NmIwZTk5NiByZWxlYXNlMzEtbWFpbnQKKzg2ODM1IGRjMjZlNGE3ZDJlNjBkMDUyM2U2MTAyMjFjNTU5NzE1ZTgyOThlNDYgcmVsZWFzZTMxLW1haW50Cis4NjgzNiA2M2FiMzlkMTE4NjBlMTU2MjgzMDQwMzJkYjM3YmI1YTlmY2UxYTJkIHJlbGVhc2UzMS1tYWludAorODY4MzcgODczN2ZiMTdmNDQ0MDFhMGEyZTk3ZDU0YzlhZTUwZDVmYzRjYzczNSBweTNrCis4NjgzOCBhMjdmYjFlNmUwOWQ0NGU0ZjExZDc3ZjQ5NzIxNjc0NGJkYWQyZWFhIHB5M2sKKzg2ODM5IDQxY2QwOTJiZTkzYWE0MDY0NGJjODg1Yzc5M2Y3NTQzYzQxZDljOWMgcHkzaworODY4NDAgZjk1MTI3NGFmM2M3ZjU3Y2YwODQzZDBkZjViOWQ3ODRjZmIxYWJjYiByZWxlYXNlMzEtbWFpbnQKKzg2ODQxIDcyZjBiZWEwNTQ1Nzc5MDA4NGJmODI3OGFiYTA2ZTlmMDJmNWY4YjQgcmVsZWFzZTI3LW1haW50Cis4Njg0MiAxYjc3ZjJlYjE2MDY3ODY2YThiOTI1ZTlmZGVlM2ZiODMzOTA1YjRkIHB5M2sKKzg2ODQzIDBmMGM2Yjg3OTc5NmJlZTc3ZWEzYjc1Y2YwMmRhZjIzYjIzMzg5ZmQgcHkzaworODY4NDQgZDBhMTZmOWYzNzQxZmQzYzkzNGNmZmQzOTQ5MDc2MWY3NTZjZGM4NiBweTNrCis4Njg0NSA1MzgxOGU0YzRmY2E1NjQ4ODQwN2Q5Y2NiMmY4YzhjMWJhNjVmNjYxIHB5M2sKKzg2ODQ2IDViZTNlZmI0N2JmZDU4MzY4Nzg2YjUyZTMxYzBhNDU4Mzc2ZTZiZWEgcmVsZWFzZTI3LW1haW50Cis4Njg0NyBlMGE1MjUyMDJjNzdjYzY3OTc1NWZmODFlZTM1MzUyZTFlYmJkYTY0IHJlbGVhc2UzMS1tYWludAorODY4NDggYzRhYWM4ZTY5ODg4NjViNDBlZjdhOGY3MTc4NmJhZDg4NzVkNTdmNyByZWxlYXNlMjctbWFpbnQKKzg2ODUwIDI3ZWU0MmIwZmFmNmNjYjA3ZTMwYjIxZDlkNmY2NGI3Y2U3ODBjNzAgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2ODUxIDcyZmY0MzUzMjIxNDgwYjYzZDY4MTg1M2IyYzgwMmJkMGVmOTRmODEgcGVwLTAzODQKKzg2ODUyIGQyNGFhM2IxZWUyODE2OTc0NDk4ZmUzMTMzNWE2ZDkwMDYyNzZlY2QgcGVwLTAzODQKKzg2ODU0IDAzZDBkMTg2NzEzYjRmZTQ5N2NjZTg0ZDBhODMxNzMxNDI1YzkzZTAgcHkzaworODY4NTUgYmRkNTc4NDFmNWUyZjQ2ZjhjMGQ2YTAyZDQyNzA4ZWM1NzQ0NDdiNCBweTNrCis4Njg1NiA5M2NkNGRlOGVlMGIwNGExMzAyZmFjYjgwZmZiZDQyNjI2ZDhiMDU2IHB5M2sKKzg2ODU3IDY5ZWM3NzUyNjE4MGZiZTkwZTBiMjQ2ZDJiODYzN2M3OGNkZmZkMGEgcHkzaworODY4NTkgMTZlM2M5NWJjNDZjNWE0ZWNiZTI5NzY2MzVjMWE3ZjhmZWI1NmFlYyByZWxlYXNlMzEtbWFpbnQKKzg2ODYwIDdhNWYyNjU0OGUxYzI4NTMwYzg3NGFjMTI4NjFiOTNmZjc1OGE0MTcgcmVsZWFzZTI3LW1haW50Cis4Njg2MSBlNWZjYjQyMjZiNDJhNjczNmY0M2RmMzE0NzBlZTc5NDRlZThhYjQwIHB5M2sKKzg2ODYyIDJlMGQ5MDA5YWI2YjllMWM3MWUxZjk2ZTcyZDlkM2YzMDJiMjlkZWEgcmVsZWFzZTMxLW1haW50Cis4Njg2MyA4ZmQxM2M1ZDM4ODIzOTc0NDFiOTcwNzZhNzM0ZjAxYWI5M2RmNmNkIHJlbGVhc2UyNy1tYWludAorODY4NjQgZTgxMmRiMzQ0YTY1ZDU1MmFjMDIwMGU1NGU3N2UxZjhmMjRmY2NhYyBweTNrCis4Njg2NSBlYWQ1MzA3MDNiOWJlNWNiODlmYTRjMjMxZmU3ZmU5M2NmMzU3YTY3IHJlbGVhc2UyNy1tYWludAorODY4NjYgNjY3ZDI4MzQ0MDE3MTlkYTJmYTQzOTVkOTdhMjhkZTM5NjRkYTlmNSByZWxlYXNlMzEtbWFpbnQKKzg2ODY3IGNkNmQwY2FmZmVmMjRiZTA2ZDJlYzg4MDZiNmMyMDkwOGYzMGRhYzUgcHkzaworODY4NjggYjBmZjMzM2VjM2RhMWJkNjMyNmExNTQ3YTE3MmEwODQ2Zjg0MzVmZSBweTNrCis4Njg2OSBlODlhYTkxNDc2MjRjYTYzOWI5YWNlM2IzYTU4MDAyMTdjNjE2ZTZkIHB5M2sKKzg2ODcwIGU3MzkyZmZlZTA3MWE3NmFjMGVjYjUxODA1MWMyNTIyMjIwODNmMTMgcHkzaworODY4NzEgNmNhODkyMmRhZmI1M2I1OWQ4ZTc5N2RlZmY3ZGZhY2Y0NWY5NDJiMyBwZXAtMzgyCis4Njg3MiAwY2NhOTY2MTUzOTUxYjk2M2JmMTlmNTFhMDgwOGIxYTM4ZGNlMmMwIHJlbGVhc2UzMS1tYWludAorODY4NzMgZGU2ZTc5YzViMWVkNDQzZmY4ZDU0YjJmZmJmODY3ZDg0Mjg0ZGNjNyByZWxlYXNlMjctbWFpbnQKKzg2ODc0IDY3OTlkNTRkYjM3ODEyYWJmMTBhMWQyZTIwODM5NWZhNzg1MDNmNGMgcHkzaworODY4NzUgZTMyYTMwMGFjYWMyZmM4NmM3ZDNjNDNlZTNkMTQ4NDcxMjgxYWNjOCBweTNrCis4Njg3NiA5ZTlhNzA5YjM4OWVjYWUzNmIxNDZmOTA3ODkxMWIxZWY2OTE3NmUyIHJlbGVhc2UzMS1tYWludAorODY4NzcgZWQ0YmZiNzVkMjhkODgwNjQ1YzgzNDU3OWFmNWI2ZmE4MGE3ZmYzYSByZWxlYXNlMjctbWFpbnQKKzg2ODc4IDMxMmIyOTE2Y2ZkNDVkOGJmMzExYmRiYTI2MjkzZmE4ODQ5NTg2MGMgcHkzaworODY4NzkgMzJlNjc1ZGFhMGU1MWJmZTJmNTRkMzcyY2NiZGUyYzRiN2MzZWFlNiBweTNrCis4Njg4MCBmMTZiZjRjYWU1ZDczN2ZhZjQzNmYwZTFlZmRjYjVmNDRkZDQ3MWJmIHB5M2sKKzg2ODgxIDI4YjY3YjU3MGYyYmY5YTU5YmU0MzUyZGIxNGNmYTIyNTVkZWQ0MzIgcHkzaworODY4ODIgYjQwNWE3ZjBhZWQ3MWI4ZGE1OTFiZmZlMGQ3ZTIwZGVmMDRiOWIzOSBweTNrCis4Njg4MyA4MzA0YmQ3NjViY2Y3N2Y4MzdmNTE2OWE4OGI1ZDc0NGI1ZTJkMDMyIHB5M2sKKzg2ODg0IDcyNDkyMGEwMTVmNzAxYTIxZGQ3ZTMyOWE0OGY1NGUxM2QxZGUxYTkgcHkzaworODY4ODUgZWRhOGRhM2E3NWIzYzYyNDcwMTQzNjlkZWQ1ODkwYWYyMDlmYzc5YiByZWxlYXNlMjctbWFpbnQKKzg2ODg2IGRlYjlmMmQzN2I2M2JkMTMxYWE5NDg4NjhhZGUzZmRlNDhjNGU0MDkgcmVsZWFzZTMxLW1haW50Cis4Njg4NyBmZDZlNTY1M2IzMTAyNTA2MmZiN2JhNjM5Y2MyMjk4NmYyZmIwMWY4IHB5M2sKKzg2ODg4IDE4Mzk5ZTYyMGI0MTEwY2Q0OTZjYzk3ZWEzZWE5YzhlY2FjMDUwMzIgcHkzaworODY4ODkgZTQ0NDEwZTU5MjhlZTMxMTRjNjU4ZGY2N2NkMTgwZTViNTAxMTVkOSBweTNrCis4Njg5MCBiODBmNWJmMjZlOTg3YjhkNTUwYTUzM2RjODg0Mjc1NDRhZjI5MTYxIHB5M2sKKzg2ODkxIGY3OTkyOGFkYWI1NzlmM2NmMWFiZjhmZGNiZWI3YWZlN2M0YmNlNGYgcHkzaworODY4OTIgN2VhMDJmMzFjMjUyY2JlYjQzZTdlYmFjZTQ5MjE2MTBhNWNiZTg0ZSBweTNrCis4Njg5MyAyZjZkMGYzNjFhYjkyYzk3Yzc5NzZlNDBhNjcxMDViMGE0MzE3NGQ2IHB5M2sKKzg2ODk0IDM0MDM2OWZiMmU3MGVmNDk5MTc2YzhhMzRhYWIzMzc2NjUxNDlkYTMgcmVsZWFzZTMxLW1haW50Cis4Njg5NSA3NDY3YTFjMTFhZWI0NjU0NDY1ODhhYjZjZjgyNjExMTFkNzE2ZjkzIHB5M2sKKzg2ODk2IDY1NmQyNGQxOTc0OWIwYjJmYWMzZDlhZDdjYTdlOGQyZGExNzdhNTMgcHkzaworODY4OTcgZDYxMDA3NDk3MGQ3OWUzZjU1N2IyN2QxYzZiNWM5ODdhYzMyYTAyZCByZWxlYXNlMjctbWFpbnQKKzg2ODk4IDA0ZThiZDlhMWFiYWUzNzk5ODlkNTMxYzgyYzg0MmQ0NTg1YzAwY2UgcmVsZWFzZTI3LW1haW50Cis4Njg5OSA3ZmQyYzdkYmRkYTY4MzhiZGY4Y2I1OGI5MGJkMDI2ZDZhM2EwYmE4IHJlbGVhc2UzMS1tYWludAorODY5MDAgMjk4NGI1N2Q2N2RhNDkzYjg5OWIzZDMyMDU1MWRkZmI0NGQyZjkxZiByZWxlYXNlMjctbWFpbnQKKzg2OTAxIDJiMmZjNDI2MjE3MDFmODk2OTU0MjMxMjk0OWE3NzA4YzhmZDlmY2IgcHkzaworODY5MDIgMTE1NTJlYTZhOTQ0YzNiMzM2OTA3YjFhMDA5ZDVkOWUwMzYyMzYzZCBweTNrCis4NjkwMyA2OTNmNzQzMGMzY2E1MDgwN2IzMDUwYzcxNjBmN2MzNWE5ODRhZjlhIHB5M2sKKzg2OTA1IGZlZTNhMmYyNDNlOGU3ZjJiMDFkOWYxMDQ0N2YxNjJhYjNmYTM3M2MgcHkzaworODY5MDYgMDkyM2Q5YjNkZTZlYTgyMmMyOWQ1MWEyZjEzMThlYjQ2ZWI0ZWUwYiBweTNrCis4NjkwNyA1Y2I1M2YwOTRjMWE4OGQwYzFlYzU4ZGUxODE4Y2ZlNzgwOTkzMjcwIHB5M2sKKzg2OTA4IDkxODRhMzkwOWRlMGM5OTM5MmRiZWIzNzRlNDU0MzI5M2Q1Mjk0NGIgcHkzaworODY5MDkgOGI5NWVhMzE3MjViM2VlODFlYTI2OGM3MTUwOTQ4ZDhkNjVjZDQ2ZSBweTNrCis4NjkxMCAzOGJlYzkwZmQ4YWI2MDNkOGZmODg5MTk0OGVkOWI5Y2M5MDg4YzdmIHB5M2sKKzg2OTExIDAwYzhjZGY1MzkzNmIzNWFiYzIxYWYwMTQzZjI5MzhkZDkzMzRjNjggcHkzaworODY5MTIgMTQ4OTZmMTMxM2RiMDlmZjRjYWYzNTEwZmY1ZjBjYTdiMGI0MzBhOSBweTNrCis4NjkxMyBmZjdjNTkzNzc5MDMwMGE2MmMxNWRiOGQ2NDYyMWMzOWIxYjY3YjA5IHB5M2sKKzg2OTE0IDcxODA5ODVjMWMyMjNkMzMyMGQ5YjI2NjI2N2FjNGUyMmU1YWI4NzkgcHkzaworODY5MTUgZTVjMjhkNjc2OWNmZDE3MTZmMjczMWUzZGJjMWFhOTU5N2I5ODc1YyBweTNrCis4NjkxNiAyYmFhZDhiZDBiNGZjODY1ZjJkOGQ0YmUyOWM0MjM2MGQwODE5NWQzIHB5M2sKKzg2OTE3IDM3MDAyZTRmZjY3NzJmYmZlYzkxYzYxNmM4NTNkM2MzMDRhMWViZGUgcHkzaworODY5MTggNWRhMDkzYjQ5YzJhMmQzNDIzNjhjMjk2N2U1MGRmOTExMDc0ZmJjNCBweTNrCis4NjkxOSAxM2M3MWM4YzVjMGY4NWVkMTVjMzJkOTA1MzY1NjI5ZWYwOGJlMTExIHB5M2sKKzg2OTIwIDRlMThiOWJlMjVhNDA4ZTFiOGQzZTY3NTZkZmE2M2QyOWJlMjc3NjAgcHkzaworODY5MjEgY2Q4ODc2N2I4ZDBjOWZmMTQ5MTJjZjViMDkwMDU4YjczNTlmZTQxNCBweTNrCis4NjkyMiA0Mzk2NTU4MGM1NTZkYjk0NTRiZjcwMTQwODY4ZGZhN2RiMjk2M2I0IHB5M2sKKzg2OTIzIGM1YjU0OGZkMGM4YzgyNjEzMmMyNTdjYzRjMGM0NjI3NGNjMGIyYTcgcHkzaworODY5MjQgYjkzMTdhOWEzZDNhYjc0N2Y2M2VmYzE5MTk2OGVhMTMxY2Y3MTc0MiBweTNrCis4NjkyNSBlMzFhNDk3MjA4NGFmNTI2OTUyN2ZjMTBkMDZlODNmNzc4M2UwMjgwIHB5M2sKKzg2OTI2IDA3OGU1YzdiMzE1OWYwY2JmZjBlNjc3NDczZDE0OWRlYTM1YzlhYWIgcmVsZWFzZTMxLW1haW50Cis4NjkyNyBlNzg0NGI3ZjZlZDQ5ZWI4MmU0ODkzMjg3NDM1YTQxMGM4OGE4NTdlIHJlbGVhc2UyNy1tYWludAorODY5MjggMDllZDQxMWExMDkwNjI4ZTZjMzc3MDkzNDgyMzRiZDYzOWRjYzk3YSBweTNrCis4NjkyOSA5MGI2Y2JmMmIxMWI2MTNjYmFiYjI4MjdlZWMyNzI2MTM4ZTJhMmYwIHB5M2sKKzg2OTMwIDg5Y2RhMDgzM2JhNjAzOTFjMTYyMTM3OTQwZDQ4ZmNlYzIzMjZhZDcgcHkzaworODY5MzEgMGRkZmE1YmNmYmQzNzAzYTdmMjk1YWY2NjZkZTdiMDM0ZTdiYjIwMCBweTNrCis4NjkzMiBkMmVhNzExYWIxMDdjNWI0ODY5MDE4NGZjMmY4NTJjNmQ0M2Y4YTQ1IHB5M2sKKzg2OTMzIGRjNzM0NzI5MzVjNThkYzkyNjEzZjhhYzQ0N2RiMmNkOTViYTgwNTggcHkzaworODY5MzQgN2U0ODMzNzY0Yzg4YzAwMzdhMWY5ZGZmN2Q0ZGFmNzA2MzY0NDRkZiBweTNrCis4NjkzNSA5YTIwNTgzMDljMWFhNjA3ZDIzYzE2ODllMDJhYTczZTBjNDRkMTFjIHB5M2sKKzg2OTM2IGI4YmJjMGZjNjE5MTg4YzQyZTFlZTQwMzMyYWJkMjcyYzc2MzRhMTggcHkzaworODY5MzcgZTMzOWZjYTZlNTFhMTAxNmYxODg1NzA2ZGE0MDk0NDUxYTM0ZTdjMSBweTNrCis4NjkzOCBhMzYzMGRkOTIyMTgwYjIxOWZiMzFmYjM4YWNkNDJiYzM5YzZjNDcwIHJlbGVhc2UzMS1tYWludAorODY5MzkgNDVhZjVhMDY4Y2M3ZjQwNmFmODFmMzZlOTVhMTU5OGRlY2MzYjE3NSByZWxlYXNlMjctbWFpbnQKKzg2OTQwIDFhZGQ4Y2VmNzUyN2ZlOWE2ZmY2NDkxMjkzMTc5MWFiNzIwMzEwODYgcHkzaworODY5NDEgNWYyNDEyODQzYmI5MWU2ZDFkZjI5M2U4YWIxOGIxMDc0ZDkwNmQ0ZSByZWxlYXNlMzEtbWFpbnQKKzg2OTQyIDg2MjljMmEyMzRkYjAzNmQzZGI4NDY5MGI4NGQ2YWQxZDcyOTM5ODEgcmVsZWFzZTI3LW1haW50Cis4Njk0MyBkZWUyMDE1NWZkNjU3NDhkOGZjMjdiNGJkODI1MmY0Mjc5NjBmNDA2IHB5M2sKKzg2OTQ0IDE4ZDg5YTMwZmFiZjk5MzM2OTFmNDY4OGVlMjQxNGNkOGIxYmE1NjQgcHkzaworODY5NDUgZTExZjdlNjYyMzY5MTA2ZDJhMDdiMDNlMGFjNzhmOGU5ZGEyZTU2MyBweTNrCis4Njk0NiA5OTZmODRlNTA1YmUzNTJkZDA5NDViYzAzZGNiZWE0YTFkZDQ1ZjVlIHB5M2sKKzg2OTQ3IGJmNDk1ZGRlMjBlMzkzMmRhOWI3MmNiMjk2ZTdiZWEwYTViMzcxZmQgcHkzaworODY5NDggMTA5OGZhYjg1ZTQ3MjczNmE4OGFmNTNjYTc3ZDU3YzljMTM4NzZiZSBweTNrCis4Njk0OSBmOTA1ODJjNmNiNWZmNmI3MjM1MWJjMjhiZGU0NzdhYTZlNDY5OGFmIHB5M2sKKzg2OTUwIDY0YzY0MmJiN2ZmNzlhZTZiMjUxZWJlZTJlNWVmNGIwMDUwYmI1YTMgcHkzaworODY5NTEgZTAyMDIxZmJmZTIyYjVjNTNiYmI5YWViOGQ3NzNiZWE2YmFkNjlmMSBweTNrCis4Njk1MiAxY2JmZWZmZWExOWY3NjdkYTZhMzJhMWVhOTc2ZjlkMDMzOTZmNjdlIHB5M2sKKzg2OTUzIDZlNDlhZjJlMDg5MTA5ZmM4YTI4NmRkNzEzZGU2ZjY0NTE3ZTk4MzMgcHkzaworODY5NTQgZDdkZTMxYWU5NWE0NDdjYzUwYjdkMTM1YTUzMTUwYWExZGIyMmMxMSBweTNrCis4Njk1NSBkN2ZhMTdhNDY2OWRiODVhYWJkMTUwOTYxYjM5NmE3NmQzMjk2MjliIHB5M2sKKzg2OTU2IGM2MTRmNzg2NzVkNGE3MDEyNDM2NDhhNDU4ODYwNWE5NjYzOTRhZDIgcHkzaworODY5NTcgMDlkMjNmYjBkNDI4ZWRkNDA0MTI2OGE0YzBjZTNkZGZjNTM5YjljNSBweTNrCis4Njk1OCBhMGNmNjRhNTI5MWU3NWEzMWNlMjNiYjlkOWZkYmM2ZDEyMjZlZDNjIHB5M2sKKzg2OTU5IDc4NTFiZmIxYmQ3MzM5Zjg2MGVkYjNiMTY3ODk2NTNkOGIzM2I4OWUgcHkzaworODY5NjAgNzY4NTRlNDVjNDY1MjcwZjJkMDAxODA2MTUwNmNmYTA0OGUwOTM4NiBweTNrCis4Njk2MSA4YmY5MGI4NzEwZDAzNzgyN2M5MTQxNjNkNTA5NjQxZWI5MDhlYTFjIHB5M2sKKzg2OTYyIGE1YTNhZTliZTFmYjAzOTUyODY4NGJiYzIyODlmZWQyNmQ0MThjNjIgcHkzaworODY5NjMgMTA3NTYxYzU4ZGUxMDQzNTMxNWMzYWQxYzhmMmQ1YzdjODM5Nzk1NCBweTNrCis4Njk2NCA0OGMyOGMyODFkNTdhZmZlNDY5NzFjZjljOTdjZWFhMTE4MGQwYzAxIHB5M2sKKzg2OTY1IDM4MzUzYmE0MDhhMWQ4NDI2ZGE3NWYwNTE4ODhlNGEyMDIwYzg2Y2UgcHkzaworODY5NjYgNTc3YTI1ZDY1NWM0YWFmYzE4N2VjNDA4OTA1ZmMzNDc4OWY4YWU0NyBweTNrCis4Njk2NyA4MWY0ZDFmZGY1NzM0MTMyZWQzMDNhNjI5MTJkNGYwMmFiZWIxODEzIHB5M2sKKzg2OTY4IDdjMWI0Y2E0NWRiNmRkOWUwYzI1OGI5NjFkYzUxZDI1MzdkMzUwNDMgcHkzaworODY5NjkgOTRmYTUzYjU4ZWU1MzQ4ZWZmMTVjYWM2ZGQ5YjJkNGU1ZGQ4OWQzMyBweTNrCis4Njk3MCA3ODIxNjI2MzQyNWQxNTgxZTlmZjhlZmI3Yjk5NzhhNGNhNTA3MDNmIHB5M2sKKzg2OTcxIDRhNTk5OTAyMzEwZGI4YTRkOTlkYzg2YjA4YjAxYTU1NTQ0MWYxMzQgcHkzaworODY5NzIgNWI2ODY3NWQ3MjY5YzZhNWMwNDlkYmUzN2MyZTYxZDI0ODg0YWIyMCByZWxlYXNlMzEtbWFpbnQKKzg2OTczIGZkYjM1MjMxZWJlMjU5ZjUyZTI4MzE4YjExZDlhYjkxY2UxM2Y5M2EgcmVsZWFzZTI3LW1haW50Cis4Njk3NCBmZTJhNTZhMWJhNzQ0MzRjYzAxMWI1YjcwOGY1ZTBmYjJjM2Q5ZTg0IHB5M2sKKzg2OTc1IGZhYWQxNzk3ZmM5MmNkNjFlZTU3ZTkzMjI2YjMwNTk5ZmQ4OTljYzMgcHkzaworODY5NzYgNWZkYTUxOTgzNGRmODUyYjhlNGY2NjNiNzUyNmJhYjY2NjgxNWNmNyBweTNrCis4Njk3NyBhZTEwMjgyZTdmNGVjN2YyZDcyYzQ2NWMzNWIyMjE0Yzc5MzYwNjY5IHB5M2sKKzg2OTc4IDMwMWQyM2Q2ZGQ5YjZlZDgwMzM4NjQwZGFlNzFlODU4NDI4OTRlMGEgcmVsZWFzZTI3LW1haW50Cis4Njk3OSA1MjNhNmZjNTNhNzA1YzQ1Y2ZjMjg5OWEzOTA2ODVkNmQ2YmE4ZTIyIHB5M2sKKzg2OTgwIGIzMDA0ODY2M2I3YmZlNjFlN2I1MmRlMGJhOTgzMTBjYWNiMzcwMmYgcHkzaworODY5ODEgM2QyYmZkMjBjMmY0ZDkyZGY1NGJhZDc1ZjUyZTQ2MzU0MDY3MzhiMCBweTNrCis4Njk4MiAzMjE0ZTIzMWExYzQ1OTNlNWZiMzBiYzlkYmRiM2EwZGIyZThiNTE5IHBlcC0wMzg0Cis4Njk4MyAyMmYwY2YxYTI3MTFiMjQ0NzE4MDExZjY3NjMzZGQ0ZDhlMDgzZjRmIHB5M2sKKzg2OTg0IGY3NGY1YTA4M2I2Zjc4NTdiN2Y3NTRjYmQwZGFhMmI0YTg1YTk5YjQgcHkzaworODY5ODUgODNhZDAwYTNhNDg5MTgxNjUyZDRiZjJlZDViYWRjM2FiYzQyNmVkZCBweTNrCis4Njk4NiBiMDM0ODMyNDE0Zjc4NzgwNmQyYWE1M2E4ZjhjNzYxYTViOTI1YTMzIHB5M2sKKzg2OTg3IDY2NWYwZmM2ZGRkN2JmMzhkZjUwMTExOTE5ZDM3ZjZlNTIzMzdmYTggcmVsZWFzZTMxLW1haW50Cis4Njk4OCA3Y2U5MDAxZDdhNzcxZDI0NGY0MjljZmEyNTRmYTJlZGUyOGE1NzFhIHJlbGVhc2UzMS1tYWludAorODY5ODkgMzE4MmM2MDg3ZTUyZWUxMGY2YWUxNGQ3ZmM0ODMwODc0MTY4YzYwZiBwZXAtMDM4NAorODY5OTAgNTU2ZGYwODdkZTRmYzEzMmU5ZGQ0MDZkMDg0YjlkZTMyMmI1YmI5MSByZWxlYXNlMjctbWFpbnQKKzg2OTkxIGU3NTZlYzhmNDE0M2JiOWEzZjE0ODNjNGMzMjI2MDY3MjJiMjYwN2YgcGVwLTAzODQKKzg2OTkyIDVhNzIzYjdhZWZiNzBmNzI4Y2NlZjNkNTIzNTNiYzVhYTQxMTE2YjMgcmVsZWFzZTI3LW1haW50Cis4Njk5MyA0Yzk4NDQ3MzI5MjU3MzM5Yjk1OWQxN2IyZTNmYjA4Y2YyNWVjODI0IHB5M2sKKzg2OTk0IGJkM2JhODk5NDJlMzE2ZDM1Y2E5YTIyMWM1MmU2NDkwYjdkZjhkMDggcGVwLTAzODQKKzg2OTk1IGY4OTVhMjIyMWZlMTNiMDA5ZmRiNWJlMDI5NWIxYzZkMmJmOTNhNmYgcGVwLTAzODQKKzg2OTk2IDNkZmVjOGYxNGU3MzJlN2JkNmUwMzVlNjZiNDVmMjAyYWMxOWQ4YjUgcHkzaworODY5OTcgM2Q5YTg2YjhjYzk4MDQ2ZjBkNzQ1NjQ3OTgyOTQxMGUzODZiZTZiMyBweTNrCis4Njk5OCA2MmI2MWFiZDAyYjhkNzA5NTM5NzY4NzhlZDVjZTJjMjE1NzkxNGZjIHB5M2sKKzg2OTk5IDE0ODY0MTZjODZkOTdkODIxODEwNzM5YmJmYWNmZDhlM2NiYTdjZDYgcHkzaworODcwMDAgNmIwMzQ5MWVlMTcxYjQ5YmYxNzBlMzMyYzFkZWVlNjE5MGU2MGU0YiBweTNrCis4NzAwMSA0Y2RhZmIwMmIyMGUxNTc0NTJhZjQ2OTdhZmQ4Y2Q3ZGM0N2M4Mzk2IHB5M2sKKzg3MDAyIDVlYzRlZDUxOGVmOGZkODQ5YzkzMzk2YmMwYmExZjUxYTZlZTIxNTQgcHkzaworODcwMDMgYTZlOTQ5YTZmZmM5YzlmMWQ3MjVmNThmMDk4MDExN2IxN2JhNTYwYiBweTNrCis4NzAwNCBkNjE4M2JjZWJkZGU2ODJlOTQzMjA2NjBhYWMxOGVjMmRlOTg5NjNlIHB5M2sKKzg3MDA1IGQyOWI1NWFjMTYzMTkzODA2MGY5NDI0YjRhMTRmODk0MmQ4YWQ5ODkgcmVsZWFzZTI3LW1haW50Cis4NzAwNiA3YzIzYTY4ZmEzZGU4NmEzN2RlOTkxZjZhMTZiYmE2OTQ2YjJkNjdhIHJlbGVhc2UzMS1tYWludAorODcwMDcgN2I2YWY1NmVlNzRkMDg0NzBkMGMxMTI4NWI2YzNmMTVjMGU5Yzc3YiBweTNrCis4NzAwOCBhMmZhYmUyMjRlODczNjMyMTM4MzE4N2UyYjg4MmU4YzM4OGJhODRhIHB5M2sKKzg3MDA5IGE5MDcxMTBkZjI1YTA4OTc4OWJlMGI4N2M1MzE3YmY3NGFmMTg4ZTIgcHkzaworODcwMTAgYjM3ZGE2MGM5MDcyYTE2MzAwZTVlZTEzM2QzMzk2YjZlYTcwNGI2MyBweTNrCis4NzAxMSA1NmVlZDhmNDA3YmY5NDY5YTRkZDI2ZmRhMTRmOGJhNGIwMzRjNDgzIHB5M2sKKzg3MDEyIDFkMzUzMWFhY2VhMGUxMDk1ZGZlNTY0NjEzNzRmZDcyYWU2MjUwMGMgcHkzaworODcwMTMgNGRmOGI0MzQyZTcwMjQzZjc5NTE2MTA0YTY0YjNlOTE5N2Y0OGI4MyBweTNrCis4NzAxNCBiMWU3ODk2MzFkYmM0MjFkM2JiNjQ3NWNiMmNhMjhlZTAxYTc1OTFlIHB5M2sKKzg3MDE1IDUxZDI4YTBkMWMzMmU4ZDhiZmE1YTI0Nzg1ZGM0NDAzOWNjNzY4NzcgcmVsZWFzZTMxLW1haW50Cis4NzAxNiAzYWFmMzdjMjRkYjhmYTc3ODZlZWRhY2M0YTVkNzdkMmEzM2UzZjczIHJlbGVhc2UyNy1tYWludAorODcwMTcgMmUxZmNmMjhjOTE0NWNmNjcwYWM4ZWU3ZWQ4ZTM0ZGE2NGQwM2FlNCBweTNrCis4NzAxOCA4OTNiMDk4OTI5ZTdlZmVlNGY3NTNiNWRhZTkwODU4MzVkM2I3NTI2IHB5M2sKKzg3MDE5IDcxM2M2YjZjYTVjZTIyZWEzY2VkYTgwZGQxY2Q0YWJlZmI3YTA3NzUgcHkzaworODcwMjAgOGIwMmY3Zjk0NzViMmEzNzQ4OWExNzJjZDhlZWZjMzM5YjZmNzdmNyBweTNrCis4NzAyMSBmMzVhNmQ3ZTMyNWZmNTMyY2IzOTY1NTdhNjM2ZWYyNTY0ZjNlMTFlIHB5M2sKKzg3MDIyIDQ4YzQwNzA5NDE3YjljNjBkYzRiZGNmYjdjMGQzNzUxMjgxNmIzZjQgcHkzaworODcwMjMgZjgyZWVhNDc4MWYxNTYzYTM1ODIxOThkN2QzMDIzM2YwZWE5MGVjNCBweTNrCis4NzAyNCA3MjE0ZGM1YmZmNWNmYjc5ODkxNTQ1NzM3MzQ0OGMxZmEzNDVhZWI2IHB5M2sKKzg3MDI1IGMyNTc4YTY4ODc5ZDljNWI3ZWI4Y2Y5MzNjMjczMWM3YTNkOGNmZjEgcHkzaworODcwMjYgMjk2ZTZmODVmNTZkNDE2MzAxYTdmNTk1YjdkYjg2ZjVjOTgzMWZiZCBweTNrCis4NzAyNyBkNTgyZGFiYjMwZjg1Yjc3MGYwMmZkNzM5ZDBlNGExMjdkZDliNTllIHB5M2sKKzg3MDI4IDQ4NDUwZjA1OTcwYjkwMDgxNDFjNzYzNmYyMzNmZDIwN2UzNTI3NTEgcHkzaworODcwMjkgOGNhYmNmNGY5MDMzOGI1YTlhNTA1NTg4NzI4OGNlNmQyMzE4YjEwNiBweTNrCis4NzAzMCBiZWRlODNlMjA4NTM0YzJkYWZhZGRiZjJmNjNlYTNkYTlkNjQxNDIxIHB5M2sKKzg3MDMxIGRlN2YyOGE2NDBlNWE2OWNiNmNiZWMzNGY3M2Q4NmNlYmI2MjQ2NDQgcHkzaworODcwMzIgNTczYTY3Mjc2MjE3MWYwNGQyMTYwZDQyMTViMmNhOGM1MzA4NjU0ZSBweTNrCis4NzAzMyBhOGYzODQ3NjE5ZjRkYjI0ODdmYmM2Yjc2MzQwMTY2MTM5ZWY3ZThiIHJlbGVhc2UyNy1tYWludAorODcwMzQgOWI2MDM2MTFmNmQ0YzZkNGFhNDlmZjM2ZTc2ZjQ5NmYwZmIwZmIyNCByZWxlYXNlMzEtbWFpbnQKKzg3MDM1IDI5NDgwNmNhYzhjNTRiZTUzYmJkNWY1ZThmMDQ0N2E1ZDIyN2NkNDMgcmVsZWFzZTMxLW1haW50Cis4NzAzNiBkZGM2YzQ3YmY4MjVlMzk4ZTBmNGFkNTFlMDRhMTM5MDE0OGRkM2M5IHB5M2sKKzg3MDM3IGYxNGY2MTlkNzA1MDAyNzU5MDQ1ZTAyNjQ0YTNkZWFiYjYzOWEyZDUgcmVsZWFzZTMxLW1haW50Cis4NzAzOCBiMzJkMTllYjQzMzhlYzE1NmZkZTg0MjViNDU2MmEwOTYwMzI0ZjEzIHB5M2sKKzg3MDM5IGZkNjM4Y2E3NDYzNGFhMTdmYzM4Mjg3ZDQ2NTY1YTFhOTEzYTFhNzUgcHkzaworODcwNDAgYWUzZmE3ODFlZWYyZTQwMzVmYzIxYWM4OTIwZTNjZGRlNTRhNjM2NiBweTNrCis4NzA0MSBmMWJlMzQ5MjM0YzNlNGRmNDNkMGNmM2JjNTk3OWU1YjA0MmJmOWZlIHB5M2sKKzg3MDQyIGNiNmQ1ZDE1MWJiNDIxYTM2MDYwNmM3ZjA4MTkzOTliZmI5MGYyZTMgcHkzaworODcwNDMgZjJhNGFkZTM2YTFlYTgxMzA1NGM5MmE1NmEyN2JkN2ZlZTA2ZWI2YSBweTNrCis4NzA0NCBiNTVmM2Q2MzljZDg2Zjk1NDdkNTY4M2NlZGNkODE2N2NhOTBiNmZkIHB5M2sKKzg3MDQ1IGMyY2E4NjdjZGQxYTIwNzg3MDEwZTAzM2RiNDgzMGU0YmQzNjA0NDMgcHkzaworODcwNDYgNWVlYmU0YWQwZDg3OGQ1MTQwN2RhZWZhZmM4YzBkNzkyNGM4Mjk0OCByZWxlYXNlMzEtbWFpbnQKKzg3MDQ3IDBmZDZhZTBhODU2N2RhMTg5MWZlNWFlNGQwZGE5NDUzNWQ5OTQ2NDkgcHkzaworODcwNDggOTgzMmU5NmU3MzBhOTA1NGUyMDdkZTI5YTU0NWM2NTU3ZmEwMmRhZiBweTNrCis4NzA1MCA3NTcxMWQxNzQzY2NlNjg3ZjY5YmFjODk1M2ZjOTUyMzgwYTA2Y2VlIHB5M2sKKzg3MDUxIDRlNjI5MjdhMmJkYTk1OTk0NzcwNjZkNTliNjc5NTM0ZDc3MzA4MjAgcHkzaworODcwNTIgNzc5YTIzYTA4ZDhjZWVmMDczZjk2OGFhMjdlMDM4NzI3N2JhZDg2MyBweTNrCis4NzA1MyAzMzlkZDYyMmRlNWE1ODMyNDg0MTQ2NzA0NTlkOTI5OTk0ZjFlOWFkIHJlbGVhc2UzMS1tYWludAorODcwNTQgYmE3MDlhZDNmZjRjYTY5Y2Y2Y2U4NDE3YzY5YTEwMWExMWFiNTE0NyBweTNrCis4NzA1NSAwNGNlYzJlMWNhNDFhODc0Y2I4NTlmNjI4ZjhlNGRjYjY5NDNmNTU3IHJlbGVhc2UyNy1tYWludAorODcwNTYgMTgyN2E4YWM5YjE4ZTljODQ2YzY4NTY0ZTU1MzkyZThiZDgyNDc3ZiBweTNrCis4NzA1NyAzZmVlODhlNjQ0MmEzZGEyNWY5ZjVkYWZhNjkxZDQ5NzNmY2Y3Y2Y5IHB5M2sKKzg3MDU4IGRmZTg2ZGEyN2U2OGMzOGU2ODQ4YWE0YzQyMmU1ZWIzMWYyMjM1NDkgcHkzaworODcwNTkgNjgyNWIyY2Q5YjgxYzM4YmRmMjkwODZlYjhkZTMwNzAxMzU4MDgwNCBweTNrCis4NzA2MCAzZDFiY2I1NGE4MmI2NmNmNGVmYmE1MjEyYWYwNWRmYTQ2NDkzNThhIHB5M2sKKzg3MDYxIGI3ZjA4YTBhZWEyODg2NTEyZDkxYTJlN2MyZjQ4NGZjODYzYzc4ZWEgcmVsZWFzZTI3LW1haW50Cis4NzA2MiAxMTA5NGI1Mjg4Zjk4OTdlMjNhYzU3NTg2ZDM3NmU3OWY5NDBhYjQ5IHB5M2sKKzg3MDYzIDU2ZjQyZTE4NGExOTZlOTg3MDg0NmNmMDZkODAxNmNmYjM3NGE2MDYgcHkzaworODcwNjQgMmY1Y2QxODY5YjFhNWY2YzFjM2MyMWI5ZTFjOTYxZjFmNTA1ZDRlYSBweTNrCis4NzA2NSBlYzc5YWFmOGMwYmZjMmMwZjNmM2Y5NTljOTU1MjlkOTJiM2JmM2I2IHB5M2sKKzg3MDY2IDgzNThkYzEzYTU3NDg1YjA4OThlNmNmNGI3MWExZjM2ZDY0NmY1NDEgcHkzaworODcwNjcgMWNjYmJkZGJlYTg4MWU3YmU2ODMyYTIzZjZhYjQxNzVhMWNiOGZhZCBweTNrCis4NzA2OCA4Mzk1NWU0NjFjNGJhNzM1YWFmYjM2YzQ4NjU2M2MzNDJhNjY0NWNiIHB5M2sKKzg3MDY5IDZmYjU2NDA0YjZiYjIzZWQ1MjVhZGRkYTYyY2U0YWNiNjhmMjJlZGQgcHkzaworODcwNzAgNGQwYmZjMzAzNzI0NjQ5MzJlNDkyZWU1NzJmYjJmZDU0YWE3NGYwZCBweTNrCis4NzA3MSBjMzhkYTRjNTQxODRlOGYwN2FmN2Y5OTM4ZjRiYzYzNDc0Y2Y3MjU0IHB5M2sKKzg3MDcyIDA3MzE3NmYwMzgxM2YwZTRkYTMzM2Y2OWJjMDgwNjdiYWQxZjQ5ODIgcHkzaworODcwNzMgNjlhNTBiYTQ0ZTY1YjdmOWNhNmZkNTYxZTU3MTcwYjA3NDQxNzQwYiBweTNrCis4NzA3NCAyODVlMGNmYmY5MGYzMTM4OWYyYjkwOWU5NTA1YjZmYmI5ZjczOTAyIHB5M2sKKzg3MDc1IDVjM2FjODc5NWU5YzRkNDM3MzM2NTJlN2E0MTRiN2NhMDJhZjkyMWMgcHkzaworODcwNzYgNjgxYThlODljNjVjODIzOGFkYWU2ZTRhZTdlZTY2MDQ0MmRjNzA4ZiBweTNrCis4NzA3NyBiMzY3YjUzMmE4MjMzOWE0YzQzMTA0MWNlMjg0NGYzMzA5Yzg1MjlmIHB5M2sKKzg3MDc4IGNiM2NlYmNlYmE1MGZkMmFhN2Q4MTQ1ZDM2NTc2MDdhYWY0YzA4NGUgcHkzaworODcwNzkgYjhlZWQ3YTU2YThjZWU1NDNkNTA1ZDE2YTcxODcwZjk4ZmEzMDdkYiBweTNrCis4NzA4MCA1OWY5NzJiMWQ1NjcwMWYxNWZkNmFkOGUyYTQzMjQ4NDQ5NDBkNzcxIHB5M2sKKzg3MDgxIDU5N2MzMDY5YWZkMzk5MTc0NzAxMGIyNzg1Yjc3NWQ4MTYyYjA5ZTAgcHkzaworODcwODIgM2YyNDI0NGIxMGZkODhkNmZjMzRjYjI1ODc4NTdmODcwZDYyY2MyNCBweTNrCis4NzA4MyA4MTcwNTU1NDE2YWM0NDg4MjNlMzk4MTc0MTQwZjhiODkyMWFiMjBlIHB5M2sKKzg3MDg0IDVmMjg2YmEwMTM5NmU3MzM4ZTg3MWU1NWUwMDZiZjUzMWVkYzdmZWMgcHkzaworODcwODUgNDk2NWJlOTBmZTE5OWE4MzM3MmQ2NjM1Mzk5MjQwMmY2ZmRlZjZlYSBweTNrCis4NzA4NiA5MDJkYjQ3MjI1OTRjMmY5MDU1ZTU3MmUzZDUyNjcyNTY1NTk3Mzk3IHB5M2sKKzg3MDg3IDkwNzllY2Q0MzNhMjI1ODk0NTZhODVhODkwMzgwNTA1MTlhMTdlYjEgcHkzaworODcwODggYjYzNWNlYTk0MTk1NzgwYzg3MTZlMjM2NDc5YWYzMTliY2MyNjI1MyBweTNrCis4NzA4OSBmNDQ4ZGQ2YjY3ZGJjMGZlNTY5MDE1Y2U2YmU1MDY0ZGJjOGMzZDc5IHB5M2sKKzg3MDkzIDA2MjkwN2Y2ODVhYzRlNzFmZTcxN2JhMGIxOTNhYmI0NmU4ZmNjMWYgcHkzaworODcwOTQgMjNmZjRhMGMzNzViMzMzMmE5N2U1Nzk4MDU4YmMzNzM0ZGVmY2EwMSBweTNrCis4NzA5NSAxZTRhNmU1NTc2YWY0ZTQ3MDJiYWRjOGUwZmE3Y2ZhZTVmZTFhZDc2IHJlbGVhc2UzMS1tYWludAorODcwOTYgMjZlZGZiMjdhMGNlOGU5NDNjNWRjOGQ1NjA1NWNkZjQ3NzZjNzNiZSByZWxlYXNlMjctbWFpbnQKKzg3MDk3IDBhZTA3Y2FhYjUwNmZlZjE0ODExOWExYzVkMmNlNjkwMmEwOGQ1MjcgcmVsZWFzZTMxLW1haW50Cis4NzA5OCAyNmM2NTkzNTcxZjFmYWU3ZDAyMzQzZjM2MmRiM2U4YTA5ZmI1MzAyIHJlbGVhc2UyNy1tYWludAorODcwOTkgZTExNWIyYmZhOWQ3YzY1MzlkMGQ4MWY2YjU1YTNlZjUyNmVkY2YzYyByZWxlYXNlMzEtbWFpbnQKKzg3MTAwIDE1YTc1NzBlM2ZmZDAzZDI3NmUwYWFkZWMyMjQ4MTk3ODNlMjY2ZGYgcmVsZWFzZTI3LW1haW50Cis4NzEwMSAzMGVhY2E0NzM1Y2I4YzhlNjFiNWY5MmZiYmE4ZWQ0YTRlZmNlMjE0IHB5M2sKKzg3MTAyIGM0ODk4Y2VmNDcxNWYwOGZlNzNiYzI3YzY5M2M0ZWJmMzVmODBkYmEgcHkzaworODcxMDMgMjdkNmFhNGYxODExMWY1MjM4ODQyMGVjZjU3NzBjMzM0NGVhMDk2MSBweTNrCis4NzEwNCAyNTEzZDg5MmIyNTQxOGI1ZDBhYTJhYmU1NTNiZTkzODU1NzVjMjJjIHB5M2sKKzg3MTA1IDg2OGQ1NmFjMWM1OTA2NjI4ZjNlODEyMmQwZWMxM2VmM2E0OGVhOTMgcHkzaworODcxMDYgYzIzNDliNmJmZmFmMmE0OWQzYWY0M2I2ZjdmODFkZjhmYTVlNGFmYyBweTNrCis4NzEwNyA0YTk0YzJkYmY5ZTg0YTQ1MWVmYzY2YmEzNWE0ZjY3MjQ1MWYwZDE1IHB5M2sKKzg3MTA4IDg3ZjIzYzc5NDllZTgxMDkzM2Y5NDE3ZmM1Yzk0NjJhMTk1ZWY3ZGUgcHkzaworODcxMDkgYTFmMzZiOTM3M2JiYWYxOTFmNTFhODMyOWM4ZWI4NGEwZDZjNzBkYSBweTNrCis4NzExMCAzOTAwOTg0MTQ3MWI1OTdhM2IyYjc4ZTdmNWUzZjA4M2U5OTNhMmE0IHB5M2sKKzg3MTExIDZlZjFhZWFlNDJiZWI2ZWM4NTFlZGZiMDMxY2MyMDVjOTgxMTEzMjAgcmVsZWFzZTI3LW1haW50Cis4NzExMiAxMWZjNmMzODA4YjY0MDQ3ZWJlYzI0YjMyNDE1NmI3YzJjYzcxZDkwIHB5M2sKKzg3MTEzIDJmYjFlYzVjNzM1ZWIyMDM3YWZkZDE1NmJlMDE0NWYyNDBmY2JmNGYgcHkzaworODcxMTQgMTIxZWQ4NDhjNjcwYjJiNTJlNmUyNmRiODMyMWJkZjQwNzU5MTc5OSBweTNrCis4NzExNSAzOTZkOWZhNGZhMjQzMmFmZjg4ZjVlNGU3ZGZhNjc5NmVjN2U5NWY0IHB5M2sKKzg3MTE2IGFiMTM1NTM3MDJmNTVjMjVlMWIzYjY3YjljOTU4NDBhZTRjZTJmYWMgcHkzaworODcxMTcgNDE3ZjhjY2NkMjA4OWE2OTk4NTRmOTliY2NiYTE5ODIzMzNjMDA2MCBweTNrCis4NzExOCA1MGRlOWYxYTZkNTQ3MDNlNDk5OGE3NzU0ODA1MGIyMWIxODc0Nzc4IHB5M2sKKzg3MTE5IDc4ODk4NGI3ZGE2ZjJlZWYxODA0OWYwODljNTI0ZWY4OTkwMjhjYWIgcHkzaworODcxMjAgYmRlZDA2N2Y5MWU4ZGQ4YjU3Y2I2YjYzMWQ4NjM2MzE4YzlkZjM1NCByZWxlYXNlMzEtbWFpbnQKKzg3MTIxIDc1Y2FiNmNkOTdjNjM1MjNhNDM5YjEyMTk1MjdmYjVmNDM1MTJlYmIgcmVsZWFzZTI3LW1haW50Cis4NzEyMiA3ODZmYmVkNzhkNTdkNzc3MjUwYzI2MGU1NzQ4ODA4MzQ0NTQ2ZDlkIHJlbGVhc2UyNy1tYWludAorODcxMjMgYWEzMGIxNmQwN2JjNDU0ZmZiNjI1NTY4YTFlNGEwMTgxOWJmMDNhNSByZWxlYXNlMjYtbWFpbnQKKzg3MTI0IGY0ZjU2ZWZhMjg3MDIwMWNmY2Q1MzVlMDUzNGE3NjhiODZlODc5MjcgcHkzaworODcxMjUgOWU3MmI2ZDBmNDhiYTNmOTI1N2JmZTYyYmI3NzYyNjE2NTJiMjY3MyBweTNrCis4NzEyNiAwODIxZWYxMjJkNTMxZGNlMWE3OTNmMjZmZjc2ZDE0OWY0ODFlY2Y0IHB5M2sKKzg3MTI3IGE0NmUxOWU4NjY4MDE2NTMzOTYxMWFhYWRlNDdiMzBiMWUwNzcyZjAgcHkzaworODcxMjggYzcxOGNiNzg2YWViNWZjNTgwMjk3ZWVjZGYyMDcyZjI4NjU1ZWU4OCBweTNrCis4NzEyOSAzMjRkOTNkNjg1MzMxZGY2YWY5OGNhODRlM2Y5N2Y5NGRmMDgyYzQzIHB5M2sKKzg3MTMwIGQ5NGQzNjVkN2NlNWVjNmZiMDVlODI3NDA2MDQ2NjkxZWE1MDZjZmIgcHkzaworODcxMzEgNTIyMDEyMmUzZTliYzdkMzlmZWE3MzZkOWM5ZTZiZTA5N2YzYjM1NSBweTNrCis4NzEzMiA3YjdmNmVmNGY5OWM3ZmY2MTI0MDE1M2VmN2JjNWY4NmYzOThkYzcwIHB5M2sKKzg3MTMzIDk1YTczZTRiMmNlYjNlMDI5Zjg2ZTNhOTE0Y2FlYzQzYjljOWNlNjggcHkzaworODcxMzQgNGM3ZTMyZTU5Mjg4NTdmODA2YjEzNDFhZDJhZmJhMGY4OWFjODc2NiBweTNrCis4NzEzNSAxMTM5MjViNzliOTdiMDNjNmVlYjc0YWJlYjdjYTQzMDNjMjgyMDBiIHB5M2sKKzg3MTM2IGQ1NzU5MWJkZjYxZThlOTgzNjU0ZWRiZDI1YzlmM2I4MGNjMWZkNmMgcHkzaworODcxMzcgNTBkMTcwYmI3MWM3NTMxODYxNDY3Y2NjNTc1ZDA0Yjk2ODIzZDRlNCBweTNrCis4NzEzOCBiODQyNjFiZDZkNGE0ZTZlYjBiYTc3NDIxNGQxNDJmNGNhYmM1M2FkIHJlbGVhc2UyNy1tYWludAorODcxMzkgZTAwNzJiZGRkMmQ1NTcwMGEzOGNmYWJlZjY3ZGE5OGFhOTRiYWQwYiByZWxlYXNlMzEtbWFpbnQKKzg3MTQwIDhkNGZlZWRlYWFlZDM0NWE0ZmY0NWEzMTA1ZDFmNTEyNzU1YzJiNTQgcHkzaworODcxNDEgMTY5YmYwMWJiNTA3ZTA3ODk0YWEzZDgzMDNkYTBmYzRkMzhlMzdhYiBweTNrCis4NzE0MiAyMWRmODE1NWM3NzBmM2NmYTY2Njk0NDAwMTJjOWE5MWMyMjE0MGZlIHJlbGVhc2UyNy1tYWludAorODcxNDMgZjhiZWE5OTYwNDYyMTE4YmI2MWIzM2QwZDczNDdiYjZiZTlkY2MyMyByZWxlYXNlMjctbWFpbnQKKzg3MTQ0IDgwMDU2M2FjMDU3ZWRhZTNlNmUyNTFlNWUzYmMwM2E4OGQ5YzljOWIgcmVsZWFzZTMxLW1haW50Cis4NzE0NSBkMjgxMjZlYmQ2MGQwMmRhOTcyMjM0NWQxMjNiYzYxMTU2OTJmNWI2IHB5M2sKKzg3MTQ2IDZlOWYzOTdiYmEwMjVlMmFiM2VlMjA2YjJjNTZlODFhZGNiNjE4ODAgcHkzaworODcxNDcgYzUzN2JkMzdmNTA4YWYxM2MyMTI4ZjQyZDUyMWVhMjU2MGVmYTI5OCBweTNrCis4NzE0OCAxYjY1OWEwMDU3MGJkYjRiN2RiMGE2ZTMyZmNkMDk2Y2RiM2JkYzU2IHB5M2sKKzg3MTQ5IDc0MDMwMmJiM2FkZmIzODRiNjc2NDZiNDE2OGI5ZGI0NzlkODJlOTkgcHkzaworODcxNTAgYmJjZTQyZjZkZDdkYmJmMjZhOTYxMmQzMjJlZjYzYjNiZGYyNTY4MCBweTNrCis4NzE1MSAzYzU4OWNhNDFkM2EzZDFiMTYxNWEyNjY0Y2VjODM0MGJmODM4Mzk1IHB5M2sKKzg3MTUyIDE0ODZkMzE3MWM2ODY3OGFmNTdiMTY5NTk2N2Y3ODQyYzA0OTZhMmYgcHkzaworODcxNTMgMzhkYzQxMzk4NTRjOGNiOGFiNmM3ZmE0OGY0OTY2MTM0OTVjNjU3ZiBweTNrCis4NzE1NCA5Y2IyZWNiYjFmMGNhOWI3NmU0MmY5MmViMjUzN2YyNjY4M2M5ZTM2IHB5M2sKKzg3MTU1IDhjMjU0YjY0YTQzODA0Y2QyOTFmNWNhYjlmMzMyNzEwNzEzNDA5NTUgcHkzaworODcxNTYgOGRlMzM1NjI4NTVmYWY5Y2I5NmFjNjNmOGRmNDMzOWNjODE2OGMzMCBweTNrCis4NzE1NyBjODZkYzJiZDNhZTgxMzEzZTQ3ZmFjOTNmMjJhYTc0ZDNmYTZmZDI4IHB5M2sKKzg3MTU4IDc0ZmU3M2MxMDYxMWQyM2QxZTM4YjYzNTU5ZGU1Y2EwOTliOWQ4Y2IgcHkzaworODcxNTkgNzM4ZWFlZWQwYjFhMjQ3MjlkMTYwMjllZDZkNDdmMzQ2ZTFkMzQ4ZCBweTNrCis4NzE2MCA0Zjg0OTcyMGJmNDEzNzMwZjZkYmNlN2IyM2NlODNmNDVmMTcxNWQwIHB5M2sKKzg3MTYxIDAxMzNiOGNiN2Q4MDZkMzdlMzU3MzNkN2I0OWU5NjUwNmM0NTg4ZjYgcHkzaworODcxNjIgMzMwYTk4NTIzOTZkZjg4ZWZkNmNlOTJlNWNjMjljMzgzMDk2Y2RlYiByZWxlYXNlMjctbWFpbnQKKzg3MTYzIDcyNTNiZTk2YTE5ZWJmMTY4OGE2ZWJjN2Y0ODA0M2VlMmU0OGJlNjYgcmVsZWFzZTMxLW1haW50Cis4NzE2NCBmYTU1YjAzYmU1NzQwMmUxODk0ZjRkZmM2MzkxZjQ3NGZiMzk2NjA5IHJlbGVhc2UyNy1tYWludAorODcxNjUgMDRlZDlkYmM2ZTA1MWMzMDlkNjllOGI4YzE4YmQxMGMzZGNhZjBiZCByZWxlYXNlMzEtbWFpbnQKKzg3MTY2IDcxNGI4ZTFlZjcyNjNlMjgwOWM5YWQ5YTUzZjA1OThiMDgzYWE1MWQgcmVsZWFzZTI3LW1haW50Cis4NzE2NyBhYzNjNTUyNzFmZGQ0MmEwMWMxM2U2NGJmM2FmNmMyOGJlY2JhNzFmIHJlbGVhc2UyNy1tYWludAorODcxNjggYWE5OWRjOGY3MDVkZmJhOTJkNTVmYWI2NjQ4MWY0YmMwYmI3ZGFmNCByZWxlYXNlMjctbWFpbnQKKzg3MTY5IDIwN2VhOWEwNTA2MmYyNDJhNzI3NjE1MDE2YjM0ZDlkOWViNTM1NjEgcmVsZWFzZTI3LW1haW50Cis4NzE3MSBkNmM3MDJkNDBmZmIyZGU4ZTFiZjQyNzU2MmY1MGM1MTc1NTBhNzJhIHB5M2sKKzg3MTcyIDM1MzA3OWFmNGY1Mjc1YzkxMTlkMjNhMTVhNDhjMzI0ZDcxNGQ5NjUgcHkzaworODcxNzMgNzA0MzZiNDZlNDM0ZDJkOTJlODY0ODc0OTcxYTMzYWYwYTU0YWQ0ZiBweTNrCis4NzE3NCBiMWJkZWY1Njk2NmVlMTM0OWZiNjkxMzhiMTE0MzYxNDYzNTgyNTdkIHB5M2sKKzg3MTc1IDhkMzhjNmEyNzE4MWMxZDE1N2Q4NjAwMTdiMzk1NDNlZjYwNmE3NWMgcHkzaworODcxNzYgYTgxMWY3YzEwZTgyNTBmYjRlMzQ0ODFjMTYwNDE1NmNmMjE4YzhkZSBweTNrCis4NzE3NyBmMjJkOTEzMzJkYjk0ZjZhM2Y2MGFkZDI4YThmZTg0MzQwNjRiZTQ1IHB5M2sKKzg3MTc4IDMwNmQ4OGEzMjM1NzIzZDM1M2Q1ZDEyN2Y4NTMwZDZkOTc2YTJlZTUgcmVsZWFzZTMxLW1haW50Cis4NzE3OSBiOTdkODQzZDY0NTYyOTZlYTEzNzQxOGE5NWRiZjk2OWRmZWZjNmQ3IHB5M2sKKzg3MTgwIDI2M2M5OThiMmY0NTljODcxNTYxZTI3ZDQ1MDlhMzJjNGRjMjJmNzIgcHkzaworODcxODEgM2I2Mjg1NTRlMWFhMTVlM2Y4MmNhNzYxYTVmZDhjYTNhZTFlMTBjMiBweTNrCis4NzE4MiA2MTJkZDVmMmFhYjMxYTc2ZGJlOGFlODkxZTNiNDI1Mjg5NjFkNzZkIHB5M2sKKzg3MTgzIGNlMjg3NzY4NzM3MDA2ZTUwOWIxMDlhYzk2NGRhODE3MmFlOTBlYjcgcHkzaworODcxODQgNTNiZGYxYzgxNDg2YmNlZGExZjQ1ODhmNWRhYmIwOTY2OWJkOWMwNSBweTNrCis4NzE4NSAyY2Y3YmIyYmJmYjhlZWY3YjY5NDI0YTZmNjA0MjYwNzU5NTc4Nzk2IHB5M2sKKzg3MTg2IDk5OWIxYWEyNDY3ODNhZWY5MGUyNjc1YThmMzcyYWI1MGFiOGYxYmUgcHkzaworODcxODcgMTU1MzFjYmUzZjU1ZmQzZWNmMWYwZTQ3MzRjOThjYzAwMmE2MDQxYSByZWxlYXNlMzEtbWFpbnQKKzg3MTg4IDBlYWRkMWIyZDI1OGM4MDQ2MjIwN2I5OTczNGJjMWQ2MmIzOWM3OGUgcHkzaworODcxODkgNWJmYTQzNmEyODdiZjA0MDQ3MGIyZTc4ZmRhYjdlZmQzMzE1Zjk0MiBweTNrCis4NzE5MCA3YWNhMzJhMjg5MGVmMjA0YTY4OGYwOWJlNGM1MjM4YWFjNjAwODg5IHB5M2sKKzg3MTkxIDY2ZDllMzg4MTc2MTAyMmEyNzdhOWRlODIzNGFiNDU1ZDU5MGU2OTYgcHkzaworODcxOTIgZDAyZTc2ZGFjZTViZjExZTMxMzc1NzUyZWYyNGU4OTI4ZjBlMzcxOSBweTNrCis4NzE5MyA1NTRmMjZjZTMzZTE5OTljY2Y5MjZjMGJiZDcyZDg4YWNkYTIyMjU3IHB5M2sKKzg3MTk0IDMyNDJmZDE3NzE2NjRlYjA3NGYwNjc4YjI1MGI1OWViMzRhMWNiOTAgcHkzaworODcxOTUgYjc0MDUxY2FkNzE3ODIzNzA3ZWEwNDczYTBhODBhZDg4MWIxYWJiMiByZWxlYXNlMzEtbWFpbnQKKzg3MTk2IGE5MWIzMTY4ZmNlMjk4MWViZTFmNTczMjZiNzFlYTViZGQxNjU2YTAgcmVsZWFzZTI3LW1haW50Cis4NzE5NyBjZmU3Y2ExYTdiYWIyNDVmNTljYmRmYjMzNjM1ZGMzODA2NDFmOTIyIHB5M2sKKzg3MTk4IGYzMTMwYzJjNDZmNWE0ZWU0M2ExZDNkZDBjNmJlYjVkYjZjYmExOGEgcHkzaworODcxOTkgOTllY2E2MmQ2OTE5OTRiNjgwNmQ5ZTQ1ZWQ3NmJkNmEyY2M4NTg5OSByZWxlYXNlMzEtbWFpbnQKKzg3MjAwIDgwODE3NjJlYjZkMWFlYzFhZTYwOTUxODY4Zjg4ZGNmNmMyYWFhNTQgcmVsZWFzZTMxLW1haW50Cis4NzIwMSAxMGVlNGYzMmI5MWM0MDJjODQ3YTBmNDU1NTVhNTM3MjMzZGUwYjAzIHB5M2sKKzg3MjAyIGI3Y2ZiNWYwZmM1NWIzNjYzNjcwOWNjMTA5ZDcxNTdlOWQ2YjQ3YmYgcHkzaworODcyMDMgZWQyYWMyMTA4NGY0ZDk5MzY0MjU1MWE0M2E1YzhmY2VmYTNiZTcwYiBweTNrCis4NzIwNCAyODcyZjQ2ZTgxOTcwZDRhMDRjOGU1YzNiYjBjZWI0MzdjMmQ3OGM2IHB5M2sKKzg3MjA1IDQ3MDg4ZTVjYjQwMTMxZmVjMzRlM2NlYWEyYzhiNmM1NzJlYjIyM2YgcHkzaworODcyMDYgZWFiOGY5MWY1NzU0ZGQ4N2VkOGJmN2Y2OGRjMjE2MGM1OTQ0NDRkYiBweTNrCis4NzIwNyBkZTA1ZDg0Njc5NWU0Yjc3NjFhMjMyZjM3MzAwOWNkNjIxZTZiNTRkIHB5M2sKKzg3MjA4IGZhM2QwNzg3Mjk5MzQxMTEwZTcxNTMzZGIzZThjYmU2ZDA2NmYzYmIgcHkzaworODcyMDkgMDYyMDZmMDAxYmNkNGM3MjFlMzBiYjI2YjJhODNlOGZjMTQyMzdhZCBweTNrCis4NzIxMCBiYzg4MDliM2U0YmU3ZjVmMWFmMTgzM2JhNTA1NDY3YTM5ZTEyNjdjIHB5M2sKKzg3MjEyIGY3ZTllYThjNjFhMDI3Nzc1M2NmMjYwNmMzN2YwMWMxZTY1NjNiZDAgcHkzaworODcyMTMgNjY4YzQyMThhZTI2ZTczNmZkMmYxZDc1NWQwOWMzMTE3YzNmMzQ0ZiBweTNrCis4NzIxNCA0ZjgxYjVkMzU2Y2NkNDVmNGZjOWVlYWNiZjdiZDE1NWFiNDU2YmUzIHB5M2sKKzg3MjE1IDc5NGY1NGJiOTcxMzgwYzQ0MzhkOTg1NDFiNmM3ZWMyYzVhZDRlYmEgcHkzaworODcyMTYgZjhjZjk3MzE0YWVlYWUzNjBmNGY5OWYyNzRhZjYxODBjYTdkMzdiZiBweTNrCis4NzIxNyBjMjg3NzExNzdmYzQwNWZkMDJlYTM0NWFhOTViMGM0MjVhMGFmZWRiIHB5M2sKKzg3MjE4IDE5MTE2MTkxZDUyZDhhYjNkOWVmYTZiZmQ1ODcyNTUyOGU0OTJlNDQgcmVsZWFzZTMxLW1haW50Cis4NzIxOSBiYWYwZDE4OWVkMDczNGI3NGYyZDE0MzNlNWUzOTA1NDA4ODMwZGI5IHJlbGVhc2UyNy1tYWludAorODcyMjAgMTZiNmFlNzVkZTk0NjgyMDNjZjBlMzg4ODI3MzU3MDI5YjExODdhYSByZWxlYXNlMjctbWFpbnQKKzg3MjIxIDEwYmZkM2MxMjlkYWUyNzFiYWQ2NzZkNzYyZGRlY2Y0ZTVmMmViMmYgcHkzaworODcyMjIgMjYyYmEwYWI0ZTIxZWYxZTc5YzYwMmMzNjZlODAwODA4ZmExNTcxNCBweTNrCis4NzIyMyA3ZjhjZGNmYmIwOGUxODM1ZmRkNDFkODcwZDFmM2MwZTllYTVlMjg3IHJlbGVhc2UzMS1tYWludAorODcyMjQgYWM4ZGE1NTc4NDkzYzRkNGIwMDliNTllYmE1ZmJhZDdjMDdiM2M0NyByZWxlYXNlMjctbWFpbnQKKzg3MjI1IGIwODRiNTBlNGFhNmRjOTE4M2RjMGU4Mjc2NDg3ZDk1NzY4OGI4MmQgcHkzaworODcyMjYgNzFmYjAzMjc0YTg5Y2MzYTY5NzljYzE0ZDc2NzNjN2E2MTUxMTU0ZSByZWxlYXNlMzEtbWFpbnQKKzg3MjI3IDlhYzg2OTlkODhkNjFkYjMxZGRkNGVlM2I1YWRkZTQ0OTUzMTNhZmQgcmVsZWFzZTI3LW1haW50Cis4NzIyOCA2ZjQ2YWZjNTE0MzRjYTg5MTA5Njc5YTFhOGYyNTUyMmJiMGM2NWI5IHB5M2sKKzg3MjI5IDU5YjQzZGMzNDE1ODUyOWJhMjA4ZGVkZWJkZDczZmRjZTM4MWE3NGQgcHkzaworODcyMzAgZGEyMGU3YTAxZmE2M2E2ZDhhYjM0ZjIxMGRhMTI4Y2U0NDE1NjRlZSBweTNrCis4NzIzMSA2OWI4NTk2NGVjODg4MzgwMDkxOTc5YTE3NTgwNjdiMDRmZjM3NjcwIHJlbGVhc2UzMS1tYWludAorODcyMzIgOGNjZjU4YjBhNWRhNzc2MDA2ZDdmYzk4ZDllNjk3NWM4MjI2NWE3OCByZWxlYXNlMjctbWFpbnQKKzg3MjMzIDc2NzQyMDgwOGE2MmFlZmEzMWI0Y2FhZDFmNjMwMTRhNWViN2ZjMGEgcHkzaworODcyMzQgMDcyZWUzZjc0M2MyMWYzNzcwY2NmMTNhZDQ4ZTEwYTE4MDQ4MDYzZiByZWxlYXNlMjctbWFpbnQKKzg3MjM1IGIwNjZiZDBiNjRlN2NmNjg0MmY4OGQ5ODZmYzljMjlkN2MzNTJiNDMgcmVsZWFzZTMxLW1haW50Cis4NzIzNiAxMjM4MWYxOWUyYWRmYzhmMTY4NTBlOWM2NWM2Y2E2NzE2NzAyOGMxIHB5M2sKKzg3MjM3IDMxMTBkNGE0ODg3OGI0ZDUxN2MyMDMwMjRiNzZhMGM2N2M4N2ZjNDAgcmVsZWFzZTMxLW1haW50Cis4NzIzOCBmM2FkNTJmNjZiOGE0MmE1NzkzOTMyYzcyMmQwNDlmODljMjZlZGM4IHB5M2sKKzg3MjM5IDZhZmJlNDYxMmQ0OTQzYmY3ZGQzYjVkNDg1YjdiNGUyNzhjNTU5OTQgcmVsZWFzZTMxLW1haW50Cis4NzI0MCA3OWEyYjZhMTI4MDUxMWRmYmYzYjg4NWZhMDBhZTg2NzA4NDA4MDExIHJlbGVhc2UyNy1tYWludAorODcyNDEgZDE4ZjQzMTNiMTk3ZTU2YjJiMjIxZDQzODE2ODI4M2IzY2RmMGJhOCBweTNrCis4NzI0MiA3ODNmMzExY2E4NjkzY2VlMDMyZGZkZDQ3OWRhNWU2MWIwNTFkYTVlIHJlbGVhc2UzMS1tYWludAorODcyNDMgOGQ3MTcxYjNjZGQ2OWE3Mzg3OGVhYzA5NDA4OWQwZTdlYjM0ZGQ1MCByZWxlYXNlMjctbWFpbnQKKzg3MjQ1IGUxNTY1MTlhMWM2MDM3NDRmNzE3MmVlYzdkNzc4NDQ5ZTJjZDg5MTUgcHkzaworODcyNDYgMzhhYWE3MmMwMTMxYTk1NjkyODAxNjYxNTMyMDA3MTg5MDA1ZjJmOCBweTNrCis4NzI0NyBkNmNjYmQzZjViNDU1MWNlNGZlMmQzZDBmMDM0YTc2ZTk2NzJkZmY2IHB5M2sKKzg3MjQ4IDQwZjU0MzYzNjg0NmM3OGI2YzBiYzYxNDk2YmY2MTg0MjFlMWEzMDIgcHkzaworODcyNDkgZjlkMDk1NTk2ZWE5NjQwMWRkOTIwOTJhNThmOWU5YTk0MDNlNzA1YSByZWxlYXNlMzEtbWFpbnQKKzg3MjUwIGQ3MDlkMTE0Y2RlM2MwNWM0YTA3NDU2ZGNjYmNkMjVhYjVjYTBjNDYgcmVsZWFzZTI3LW1haW50Cis4NzI1MSA1MzFmNDIzYjAxOWQzMWY1MWUwYWRjNDlhNjgwZGJhMTlmYmUyNjZhIHB5M2sKKzg3MjUyIDdjMzcxNWIxMGNkZDQ1YmUyYmVmNmIyMDI4ZDMwOWRjNDdiMTVlYmUgcmVsZWFzZTMxLW1haW50Cis4NzI1NSA0ZWU0MDg2ZGQxYjc0MDVkMGJjMjg4ODg5NzQ2MWQ2ZjU3Y2QxZGFhIHJlbGVhc2UyNy1tYWludAorODcyNTYgYTYxNTQ0Nzc4ZmE3NDFjOTg1NWY5MTVhN2JjYTc2ZTk0NDgzYTI4MyBweTNrCis4NzI1OCAxYzAyN2EwODNhNmU5MGI3YjM5ZmI3MWQ3NjI3YjdkZDg2YTFkZDBhIHB5M2sKKzg3MjYwIDhlNzAxYmZmZTZlMmMwYjJlMzdhODE5ZGUyZjA3YzNjZWFkZTc4MGQgcHkzaworODcyNjEgMTc4NThhYjJjZDkyYTQ4MDk4NjQ5YzA0NWI0NThjZjY3Mjk0YWQ2YiBweTNrCis4NzI2MiBjZmI3ZjYzMjJmYmJiYWFiZmRkOWViN2Q5MjNlMGNiYTBlMjNjNzBlIHB5M2sKKzg3MjYzIDc5YTkwZmEwNzlhOGJmMTgwMjdkMTUyN2ZlMTZiYmM0ODg5MWE5NGYgcHkzaworODcyNjQgYWE0MjhhYTliNjhiMmE3MjI3NzU2MTc1YzIwMTI0NzZiNGE3NDg5OCBweTNrCis4NzI2NSA0MDEyNWNkZGFmYjkwNTI5ZDEyZWQwNWQ5MWZiMzQzZGE5OTZhYjVkIHB5M2sKKzg3MjY2IGE5NmEyYmNjZGY4YTI3YTEyM2M2Nzc2ZWMyMTMyNjllYmZhODMyZTIgcHkzaworODcyNjcgMDE5YWQ5ZjMyYzEzZThhYmFhMjcwZGYxMTA4NWNkZWVlNDM3NWVlMCBweTNrCis4NzI2OCA0NzE2MzA4NDA0MjYzZWIxOWM1MmNlMjk2YThhNDY4MDA2MTUxOWNhIHB5M2sKKzg3MjY5IGFmZTVmNmIxYzc2Njc3NzFjMWE4MjhkOTc3YjJlZmE4NDc2Y2UwMWQgcHkzaworODcyNzAgMjNkZGJkODM1OTUwYjg5YzE5OGQ2NjA5NTgyMTJlM2U1MGRmMjk1MSBweTNrCis4NzI3MSBhMGZjYWQ5MDcwYWQxYzdjOWJjMTIyYzQ2YWViYjFhZDQ2OGE1NDI0IHB5M2sKKzg3MjcyIDZkYTM3YzM0ZjhhMzAzMjQwZThiZGJmNTFhMTdiMWViYmNiYWEzYTEgcHkzaworODcyNzMgYjU4MDkyNzg3MjEzNzc0NGIxOWFjZjhmMmYzYjk2M2NiZWZiYWVkMiBweTNrCis4NzI3NCA0ZGNlYzE0NmI5OWQ0NmVlZTQ1YzQ1MTdjODRkM2JhNWM5MDdmMDM4IHB5M2sKKzg3Mjc1IGEyOGU4NzIxMTE3YzI2YzQ3ODYzN2Y3ZGNmZDkxNjViNjI5ZmVkZTQgcHkzaworODcyNzYgOWEyZTU2ZDExNDZkZjI4MzBjOWY2Nzg0ZmFiYmE0NDU4ZDQ2Njg1OCBweTNrCis4NzI3NyAyZDI5OTdmMTllOTBjNTk4NmE0YjI4OTY3ODQ0OTc0OThmODZhNWU2IHB5M2sKKzg3Mjc4IDI2MTMxODNlYzAyNTFiMGM4N2FmM2EwYjg2OGZjOTQzODg1M2ZjZDUgcmVsZWFzZTMxLW1haW50Cis4NzI3OSA1YjQ0MDU5MjQ3ZGI2MmJhODhmNWQ3NWMzMGNmMzA5ZDZmOWM1YTVkIHJlbGVhc2UyNy1tYWludAorODcyODAgMDBmN2Y1MWNlOGJhNTk0N2IxMjI1NTlmNjZhMTc3NWU4YWZlNjQ4MiBweTNrCis4NzI4MSBmZjA3YTA2ZjZkNjVkMGEzMDE2N2U5MWZiMjY3YTI3OTBhNGM5YmZmIHJlbGVhc2UzMS1tYWludAorODcyODIgM2I1Y2M2NjM4ZjNkMTBkNDgxNjVkNDBiZjQzMWFkMWZlMGY4YjYxMyByZWxlYXNlMjctbWFpbnQKKzg3MjgzIDVlYzJjMmJmYWRlZDUyMzEwZGIxMmYyYWMwODgzNTk3NzBiZDA1NzkgcHkzaworODcyODQgOWNjMTk3OGVjOWQ0OThjNDkxMjMzZjdhNWRjMWY0ZTZlZTAwOWNlZCBweTNrCis4NzI4NSA5YjE1OTRjMTU0NGI3ZWNjODc0MzQ2NmU3MWMwNzQyMzE2MzMxM2E1IHJlbGVhc2UzMS1tYWludAorODcyODcgODBlM2FkNWE2MzFkNTc1M2EzMGQ3MGRiOWZjM2IyMTc2YzI5MjQzZiByZWxlYXNlMjctbWFpbnQKKzg3Mjg4IDRhZTJjMjExMTZmMWRmM2RkYThkYzMwNjBmOTRlYWI3ODNlYWQwOTggcHkzaworODcyODkgN2Y1NDk5MDhiZjUwMzJhOWZhNDAyZDdjODJhZDZkMWNlNmRmY2M5ZiBweTNrCis4NzI5MCBhNTFhNGY1ZTg3ZTQ5ZTIzYjA4NjU1NjBhY2FkYjU5ZTI1M2JiNTFjIHJlbGVhc2UzMS1tYWludAorODcyOTEgNTY5OTk0OTVhOWJhYzViYjQ1YjU3MjczNDEyODdjMTFlNjEyZWQ3MSByZWxlYXNlMjctbWFpbnQKKzg3MjkyIGI3NTBjNDVhNzcyY2U4YmQ5NjFlMTU2M2I3YTQ1MDQzNjY4ZjI2NjQgcHkzaworODcyOTMgZjU5Y2RhNTdhN2ZhODMzOTQwODJlNzBmYTVkZTlkMzdiZDFlYjY0YSBweTNrCis4NzI5NCBhZDliNWM1ZDI4MzFmNGJkMDI1ZWMxNmU2YzRmMzQ5ZGM0MGY5YmFlIHB5M2sKKzg3Mjk1IGQyZDUyNmRiMjc3MzZhY2JiZTQwYTg3ZDI4YzFiM2YzMTVmOTVjYWIgcHkzaworODcyOTYgY2E3YTVkMTI3ZDU3Y2RkNGFlNjM2MTU5ZWM4NTc2ZTAwOWNjZTE5YSBweTNrCis4NzI5NyBlY2QyOGU4NGM0NGIwZjRjNGU3N2M5NmI1Mjk3MGRhODgwYWZkNDQ4IHB5M2sKKzg3Mjk4IDljMWZjZWRlZjJjMTlkNWY1Zjk5YzcxMWMwYWVjNjE2MTQxYjQ1ODggcHkzaworODcyOTkgM2RlNmNkOTAyNjI0YzdiOTA4ZjBlMGJhZjBhNTg0ZTdkNzJjMmQ1MyBweTNrCis4NzMwMCAzZjE3NTJkNDI1M2JiMTNmZDlhMTlhZjUzYTEwNzViZDE5YmQ2YTU5IHB5M2sKKzg3MzAxIDFhYTRlNWNhOTE3NDIxNzQzN2UxOWRjYTk1Njg1NGZlMTZjOWE5MWUgcHkzaworODczMDIgZGU1YjkwZGFhYmI0MmUxMjE0N2I5OTMxMDY4NTczYmMxZmQ1YzI5ZiBweTNrCis4NzMwMyBlMDhjMjBhNjdmNjQ3ZmVhZDg3OGYzMjM3ZDg3MTAyNzY1ODliNTZiIHB5M2sKKzg3MzA0IGE2MTgyODdlYWZkNjU4YjE5ZjhiMGU2ODgxNzYzYjEzMTUxZjAyMjYgcHkzaworODczMDUgMDAzN2Q2NWRlYmQ4ZDk4YzllNDEyN2U3YTAwOWZhZmYzMGE5YTIyMCByZWxlYXNlMzEtbWFpbnQKKzg3MzA2IDdlOGViNjM0ZjBhOTFjNTQ3ZTg3ZWYyNzRiMjA5MmJjZmQwMGMwZTEgcHkzaworODczMDcgMmFhMDUwYTQ0YWE4MWY0NjUwYTc1ZWQ3MGEzMWRiMzBjMThjZmI3YyByZWxlYXNlMzEtbWFpbnQKKzg3MzA4IDU5ZTIzMDI5N2JmZmFkZGQ0ZDM2ZDNlYzk5YmYwYmFjYmI2MjliNGMgcmVsZWFzZTI3LW1haW50Cis4NzMxMCBkODRlYzg1NjAwYjFhOTgwNGQ2YjU0ZTk1MmQ1ODA1YzY5ZDA4MjY2IHJlbGVhc2UyNy1tYWludAorODczMTEgZmQ3MjYxNGI5MDMyMTAxYTU3YTQzYTRiMDBmNzkzMGQ3OTEyODE4NyByZWxlYXNlMjctbWFpbnQKKzg3MzEyIDRjMDYxOWI4MzJlMWJjZTNlMjc2YzNjYjBmYTI0ZjdlNDcyYTQ0ODkgcHkzaworODczMTMgZDliNDQyNjQ3OWFjNjE3OGVlN2JlNWY3YjAyMGFlMDNhZTI4M2VjNyByZWxlYXNlMzEtbWFpbnQKKzg3MzE0IGM2ODgzZWM0ODg4MDQyYjNmODMwMmQ4MTA2ZWNiZTNhOGRhNTlhZjcgcmVsZWFzZTI3LW1haW50Cis4NzMxNSA1YjkyZmIwMmU4M2JjNWZjOWI4NzA1YjdiNmYwN2MwZTIwYTExN2ZjIHB5M2sKKzg3MzE2IGFiNjUwMDMzNDZjMTFhMTUxYzUyYjBkN2MyYTQ4NzAyOTgwMjcyYWUgcHkzaworODczMTcgNDM2YmJjN2YwYWE2OGFhNzU2NTk1YTA2NTZhMmNkNGQwOGRmMDdlOCBweTNrCis4NzMxOCBkYzMyNzg4ZjBlNGUzMjU4YmJkOTllNTRmN2Q1YTE2ZDkwZjkzYzdkIHJlbGVhc2UzMS1tYWludAorODczMTkgZmMyZjBjODZiNDk3Y2I5MzhkNTRiZDBjYmNhMDg2ZjU1ZTgzZWVhNCByZWxlYXNlMzEtbWFpbnQKKzg3MzIwIDJjNDI5ZDhjNWVlMjAyYTM3MjM4MDNkNjM3N2NmZjU4NDZiNjBkMTEgcmVsZWFzZTI3LW1haW50Cis4NzMyMSA4NWMyZmUzMWIxMWVjMDk4NDZkZWNlZGJjODVkM2Q2Njg3ZGU3NDhmIHJlbGVhc2UzMS1tYWludAorODczMjIgNGQyYjQyOGQ3ODgyMjU4YTQxYTQ3NGI4ZmIzZjI3NjFjMDBmYjJhMiByZWxlYXNlMjctbWFpbnQKKzg3MzIzIGU5ZDkyNGZlMzdlMDNhMzA1ZTZhNmVjZTJiNTY4ZDJmY2Y1OGNkMzUgcHkzaworODczMjQgZWE4Zjk0Y2U4MjkzMjY5NmRlMmVjZWMzNmYyZDJhY2Q1NTBmMDNlNyBweTNrCis4NzMyNSBhZWQyYmJhZmE1NTBlOWRmZGY0MWQzMjI4NTdmMDI0Yjc1YjRjNzZkIHJlbGVhc2UzMS1tYWludAorODczMjYgMjM5MWNlMzVhZDY5N2YyYjI2NDM3MDYzZGVmOWQ4NWE5NTg2MTZkYyByZWxlYXNlMjctbWFpbnQKKzg3MzI3IDliZmQ2YWJmMDFjYTI5Y2RlNGZiZWVjOTBmOGUyNDg3OTdhYTdmNzcgcHkzaworODczMjggMDc0YzIxNzE0YTAyNzhlNDgyOTM0OTVjMzk5NDQxZTA1NWU0MjEyYiBweTNrCis4NzMyOSAwYzJhN2U1Nzg1Yzg2MTEyY2NkYWE1ZTI5OGJjNjJkMTE5OTgyOTk3IHB5M2sKKzg3MzMwIDdhNTViODA4ZTQ5MWMxMDI3NjYyMDExNTQyNGEyNmQ5ZTIyY2U3MzMgcmVsZWFzZTMxLW1haW50Cis4NzMzMSA2OWIzYTE1MWFlYzU3NDMyMTkzZDM2ZWViOWZmMzRjZTM5YmU4ZTU1IHJlbGVhc2UyNy1tYWludAorODczMzcgMDcxMTNkMWVmOGU1MWE1MmZkNTQ3ZGRhNjcxMGYxNWE2MzIwMzgyOSBweTNrCis4NzMzOCA2MTkzNWM4ZGMwOWUwZGI1Yzk2NjI2NWRmYjgwOTQ0NTdmNWE1ZTc1IHB5M2sKKzg3MzM5IDAxNmI0MjVmMGNkMGNlNDRlYjM0ZmMzNzU2M2RmZjBjOWJiZjIyNGIgcHkzaworODczNDAgYjZkM2ZlNzA4MDJmMzI5MGQ2M2FkYjViOThmY2E3YjRlNDA3MWZkYyBweTNrCis4NzM0MSA1YTZhMWNhMjRlMDRjZmFhMTVmNzcxM2JiNzc0MTNiOWY1MTM5NGQ1IHB5M2sKKzg3MzQyIGM3MGFhMDExYzA1OTg1ZTQ2MmViZGQ0NmZlMTlmNDIwYzQ2Y2FmNWIgcmVsZWFzZTMxLW1haW50Cis4NzM0MyAzNDFiOTNkODMxNTcxZDg0OGFjYWU2ZGIxODNlNzRkYWVlMGI2NDIzIHJlbGVhc2UyNy1tYWludAorODczNDQgMjJkYjRkMmY2NTU0OTg5OTlkYTUyOGVmYzNjYjM5ZDA0NWEyNWIwNyBweTNrCis4NzM0NSAwNTUwYTI0NDdjMWU2MzFhMDM5YTc0OGNmOWNlOTdiNjA3OWJhNDlhIHB5M2sKKzg3MzQ2IDNhMjk1M2UyMWY3ODU3MzQ2ODdmMWQ3Yzk1MzhhMjFjZWYzZTU0NmMgcHkzaworODczNDggNWJiZjViNmQzNjU4MDUyNWM0N2E1YzdiYjczYTFlMGNhNzJiODcyNSBweTNrCis4NzM0OSBhYzhjNmM3YzBjYjM1Njc1NGQ5YTk0MTc1ZGYwNDk3NDFmNzk1ZGVhIHJlbGVhc2UyNy1tYWludAorODczNTAgODkyMjM2MTM3ZGI5NjE4MTJiNDllYTljZmNmNWMwZTFiMTU5OGVlOSBweTNrCis4NzM1MSA0M2JjNTkyMmYyOTkwNjQ1YzUxMzVmZTYzZTYwNjJmOTE2OWU3ZTJkIHB5M2sKKzg3MzUyIDYxYmM4NjI2NjdlNmUzZDlmM2IxM2E1NTFjNDIxNTJjMDNkY2I5ZDcgcHkzaworODczNTMgMjZjMGY3NjllOWI0NzFkMWI5MGI3NzU5YTZiYjdiNTlmMGQ3NWExMSBweTNrCis4NzM1NCAyODcxN2RlNGM1NjJjYzNhOWQxYWYzZDk3NjdmNmMwOGVkOTRmNTRiIHB5M2sKKzg3MzU1IDQwOWJhMjUwODcxMjI4ODRlYTA2NmY4ZTIzNzVmMWJjM2I5Njc5ODIgcHkzaworODczNTYgYTVlZDRhMTI0MzBhYTdiMWRmODdkM2M1ODUwZWMwODdkYjE0M2FlMyBweTNrCis4NzM1NyA4ODRiMTRlZDhmNTQzZGQ3NmExMDc0NTU4YzhhNmIxNDdjMzcyYWVlIHJlbGVhc2UzMS1tYWludAorODczNTggNjhhNDJiOTQ0ZmUzOThhYTZiNDk0NGJjYzljMGQyMjUwNzQ5ZDBkZSByZWxlYXNlMjctbWFpbnQKKzg3MzU5IGNkMjdjM2M0NDIzNGFmZWU1YTU0MmIxOGNmNGI3NzhhOTgzOGNhNGQgcHkzaworODczNjAgYTBhOTk1ZTBlNjQwMTlmNmMwYjg2MTUyOTk5OWZhODhmNTJkMTZhMCBweTNrCis4NzM2MSA3OGMxNTIyODhmNTNhOGZkMzNjM2Y2ZTQ0MzY5ZWUyYzk4MGI0ZDk3IHB5M2sKKzg3MzYyIDRjMDQyNjI2MTE0ODMxZjcxZGQ3MGNkMjQzYmU1NGM4NzIyMDhiYjEgcHkzaworODczNjMgYmYzNmQ2YmRkZTYwYjRhZjA1MGIzZTVkOWE0Y2JhN2MyMDVlYzVjYSBweTNrCis4NzM2NCA5Y2YxNTEyZjg4MTJjMjAwMWUwZTc1MWQ2ZjkyY2RjNWEyMGZmNmFlIHB5M2sKKzg3MzY1IGM3YTA1MzdjN2YzYzI4NjcwOGU1ZmIyNGRiYmI5OWViNzNkODIyODYgcHkzaworODczNjYgYTA2NjQ3ZmY1ZDk4MThlMWZkMTlmNTAwNmM1NDkwMjA5OTRjZTc5NSBweTNrCis4NzM2NyBlNjVjZDIxZDVmNzMxNGVlN2E1MTA4NDQxY2E5NjQ3YTQ1YmFiZmUwIHB5M2sKKzg3MzY4IGZlN2E4YTFiZGYzZDZiYzcyMTAzMDI2MjYyZWFhZjc2MzM4NzY1YWQgcHkzaworODczNjkgNzJmNTM2ZDEwNzUwZjRiOGYxNGQzZmM0NGNiYjMxZjkwMDRmY2VhYiByZWxlYXNlMjctbWFpbnQKKzg3MzcwIDZmZTk0ZmMwMmZjNzU4ZDMwZWQ3NGU1YzgxMTNlMmY2NzVjOTEyY2YgcmVsZWFzZTMxLW1haW50Cis4NzM3MSA3YWMwM2VjM2IyNzhiOTVkOTViMzU5YjZhYzA5NzI3YmZhYTFjMGFhIHB5M2sKKzg3MzcyIDhhZGI3NWM2OTMwNDcyODc0YmExMzU2MTBmMzZiMjVmMjQwNDY0ZmIgcHkzaworODczNzMgMGI5NDYzNWVkMmY2ZmE4OTM5MzM5YzQyNjI4NDQwYTMzNjM2NjQxNSBweTNrCis4NzM3NCA0NDAxMDAzOWJkZGZhNjk5ZDQ4YWZhZDc1YTc1ZjY4MGMzNWFiNWI5IHB5M2sKKzg3Mzc1IDM4MTU1NjM2OWNhZjZhMmVmMzRkZTNiM2JhOTA3OTE2YWNiNjViYjMgcmVsZWFzZTMxLW1haW50Cis4NzM3NiA1ZjQ5ZDNjYjE5NGY5NzBkNTExOTlkMWMzOWYzMzllNmRkZTBmOGI4IHJlbGVhc2UyNy1tYWludAorODczNzcgNzM2OTY0ZjcwOGRlYzIzOGZjNTFhMDczZjBjYTlhZGUwNDUwMzhiMiBweTNrCis4NzM3OCAyOWRiOTdjMTc2YzljZDlkMDE1MDFhMmZhMjQ3NGJmNGE5ODY4NzNjIHB5M2sKKzg3Mzc5IDUxNWRlMjI3NzAwMTg0ZDEzZTc0ZDE5YTZhOWI3MGU1OGI1NmMyZDMgcmVsZWFzZTMxLW1haW50Cis4NzM4MCA3YTQ4NTkwYWZkOTJlNGJmOGYyYTgxYzU4ZWQ4NDk4YzQ3ZGM4NDFkIHJlbGVhc2UyNy1tYWludAorODczODEgYzJkNWNkMDMyYmM5MTYxZjk0MjViYzk0MWI5Y2FkMjRlY2RhNjk5NiBweTNrCis4NzM4MiAzYzE4MmY3MWQ0YzljNTY2MDdlYWFmZTdjNGI2NTU3YTBmZmUzOTdlIHJlbGVhc2UzMS1tYWludAorODczODMgOTY1MzE0ZjEyZjcxOWRiOWMzZWZhNTIyMGFmNjRmYmVkNGI1MWZjMCByZWxlYXNlMjctbWFpbnQKKzg3Mzg0IDkzODVjNTM2ZjQ1NDgwMjc5NzEyZWRhYzg2YmJkNjNiODg3NjI4NTYgcHkzaworODczODUgZWU5YmRhY2QzY2I2MTAwOTk5NzliOWM3MGJiZTFkZGY3NjExMjMzMCByZWxlYXNlMzEtbWFpbnQKKzg3Mzg2IDBhZjk0Zjk3NmQ1MDE4ZmQyYzViMDZiY2Y1Yjg0OTRmOTMxMjg2ZGIgcmVsZWFzZTI3LW1haW50Cis4NzM4NyBkYWU1MTc2ZDdiN2YzMDBjMjJlMWIwMGQ2MTkyOGJhNDI3YzQ5YWFlIHJlbGVhc2UzMS1tYWludAorODczODggZDE2YWRkNTZkYWMwMzRiOWVjY2RhMGM4Y2E2N2JlZWY5ZDEwNGIxNiByZWxlYXNlMjctbWFpbnQKKzg3Mzg5IDU1MmJhYzc1NThlNzc5MmIwYjQxYjE3ZTY4Zjk4MDdkOWU1YmE0NTIgcHkzaworODczOTAgNGUyMjIwMmU2MmY4M2NkMTIzMGEyYTBjM2QzZGQxODMyN2MyMDk4NyBweTNrCis4NzM5MSA5ZmI4OWZhYTU5NTgzM2EyMDA0OWQzNzNjNWQyYjk0ZmJjZWNjM2MzIHB5M2sKKzg3MzkyIDRlMmI4NjBlNjU3YzlhYmI0MmRiYzM1YzI0MzdlNzYyMjUwNjYyYzAgcHkzaworODczOTMgZTU4ZmE5ODNhOTRlZjhjZmMwYWIyNTFlYjk2ZWZhMjAxOTQxZWRjZCBweTNrCis4NzM5NCA0ZmFmZTk3ZDBhZGJhNmYwNDAzMjkyMmQ1MGUwNDdlYzMwYWViYzQzIHB5M2sKKzg3Mzk1IDViODAyNmZhYTBhNzNkNjE3OTE1NzZmN2I1ZjQ3ZWM4NTAxMDYyZWUgcHkzaworODczOTYgMTNiNGEwZjUyYzJjMmNiZjRkZDZkNmQzMmZjYWZmYzQyOGNiNjU3NSBweTNrCis4NzM5NyA3YzMwZDBmMTAyOGM0ZDM3NTQ2YjY1MTg5NTUwNmJmMmUzOGI1MzhmIHB5M2sKKzg3Mzk4IDQ3Y2M0ODk2NWU1MjUzNDhiZmRiYzQ0YWE5MGNjMmU0YzJmY2MxOTEgcHkzaworODczOTkgNmY1NmIyNDdhN2NkMjgyMzNjYjA4NzU3ZmEyODRjMzgwMWQzMzdmOSBweTNrCis4NzQwMCBlM2FmNWYzYTc5MDRjMGQ1MzQzZWM5NjMzZWE2NmU3YWNmZDIzYTY2IHB5M2sKKzg3NDAxIDliMjYyNDg4MzBmNjVjYTYxZGU4ZDc2MmExYmZmYmM5NzYwYTZiZmIgcHkzaworODc0MDIgZmM5NmJkMThiZGM2MWM1ODkyNDIwMzAwMTZkYjEwNmEwOGE0MzI4NSBweTNrCis4NzQwMyA2ZDU2MjdhMDY2Nzc4ZGRkOWIxZWI2NjUzNzZkZDJlYzRiYTI1ZTdjIHB5M2sKKzg3NDA1IDNkODZjZDlmYzUzNGFlZmFhZjU3MzZjYmQ0M2FlZjk4NmE4OWM5NDUgcmVsZWFzZTI3LW1haW50Cis4NzQwNiAwYzRhZmM1ZjU5MzhlMjdiZTk1MDIxM2I5YTU5YmM5MmZlYzRkYmM1IHJlbGVhc2UyNy1tYWludAorODc0MDcgNDdkYmYzZWMxYWQ3ZDgyOWQxNmQzODQzODhjMjlhYjMxN2YzZDQyZCByZWxlYXNlMjctbWFpbnQKKzg3NDA4IDI0ODk0ZmE3YzU4YzUwYzViZmE2OGI3OTdlNjkyM2QxM2Y1ZDAxOTMgcHkzaworODc0MDkgNTE3OTRhZGE2ODEwYWY0OThkNTcyMWM0MzU2ZDI2YTMwNGIyODE3ZCByZWxlYXNlMjctbWFpbnQKKzg3NDEwIDIyYTBlYTdkOTc0ZWI2ZDIzNmJhYWEzOTQ0NjE0MGZhYTk3YzkwMjkgcmVsZWFzZTMxLW1haW50Cis4NzQxMSBmNTY3YTZjODU5MzY0NWQ4Nzc2NzM0ZjM1YjMyM2VhZThiNmMzYjM0IHB5M2sKKzg3NDEyIGZjYWE5ODdjY2VhMDIwNjI3YzRmMGY3OTc2NTY3MjJmMWFmZTA1NjEgcmVsZWFzZTMxLW1haW50Cis4NzQxMyAzNjcxOThiNzMzY2RiYjQyNjZmYTE0MTM4ZmJjODAzNmI2M2ExMDI0IHJlbGVhc2UyNy1tYWludAorODc0MTQgYjE2OGIyY2MxYjIxZDJlMjQzYThhNmNlOTExN2ViNjVjNjNhMzNkZiByZWxlYXNlMjctbWFpbnQKKzg3NDE1IDgxNWI2OTE3NTVmYTBiZmMyNDRiMzUyNTU5MjFkMjY1ZTdmNDNmZjggcHkzaworODc0MTYgODY4NTcxMTU4NmQ0MzFlYzZiZDVkMzVjMDdmMDE0Y2FjZjBhZTZiNCByZWxlYXNlMzEtbWFpbnQKKzg3NDE3IDU2NGE0MTY2NmVmNmY0YjE2MjVjNzZkZjUyZDYxYTFlYWEzYTE5NDkgcmVsZWFzZTI3LW1haW50Cis4NzQxOCA4YjUzZjI1NjE1OWFhM2FhYjg0MGFkOGQzM2U0MzJhMmY2MjkxNWE2IHB5M2sKKzg3NDE5IDUyZDI5YzcxNThmZTIwNzkyYTMzMTQ5Njc2NDVlNzc0OTAzMDViMWUgcmVsZWFzZTMxLW1haW50Cis4NzQyMCBjZDFkZWU1NWFjZTg0ZWU2OWM5NmFlYzE0Y2I5ZTM1OTlkMDQ2NGYwIHJlbGVhc2UyNy1tYWludAorODc0MjEgMjA0YmY0MzNkMzY2YTMwN2U0NmQ5ZmJjYzI5NTNmN2UyYzNkYzJkOSBweTNrCis4NzQyMiAwOThjOTdlOTVkOTMxOWY1Yzc2ZWIzOGQ2Yjg1ZWQxNDI5MzY0ZTAwIHJlbGVhc2UzMS1tYWludAorODc0MjMgMGRhZjM5MWExZjFkZjg2OGQ3MDBmNDlkNzdmZWJhZDlkM2JhMGMyMSByZWxlYXNlMjctbWFpbnQKKzg3NDI0IGQ1YzhjZTNhNzBkNDg5OGQ1ZjliZmY3ZTQ3NmIwOGYyZjIwNWUwZjMgcHkzaworODc0MjUgMmYyZGU2Y2M2MmM3ODA0NGQxNjA4NDg4MTU4ODFmYmM0MjBkZTVhYSBweTNrCis4NzQyNiA1NzJmNzNmZjI4YzIyMmZlNDAyZWZjYzljODcwNTk1ZmEzNTFjNmY4IHB5M2sKKzg3NDI3IGE4NDIwNGYxMTZmOGI2N2Y0ZTJjMDlhOGM3ZmRjODAxY2M4MzEyOTggcHkzaworODc0MjggNWNmODU1NWU1YmU1NWFlMTI0NmEzZTkwNTUxMGYzOWFhYzNhNTczNCByZWxlYXNlMzEtbWFpbnQKKzg3NDI5IDU5NWYyNTg4MDZlZmYwYWRiY2I1YTQ1OTE2OTM0Mzg0OGRkMTE0ZjggcmVsZWFzZTI3LW1haW50Cis4NzQzMCA0MzhhNDY5ODAwNGFkZDU0ODZjZjdiYzRiY2RjOGQ0MjgzNGVhNGE5IHB5M2sKKzg3NDMxIDU2MWVhNjQwMTg4YjM0NGQ2MDRlYzBhMmRkMTM4MGFjNDEwMjU4ZjQgcmVsZWFzZTMxLW1haW50Cis4NzQzMiAzZjkwNTFkODY2MDMyOTE5MjZhZmQwYzBmYjNlMDE0MDRhMDY3OTQxIHJlbGVhc2UyNy1tYWludAorODc0MzMgOGU3ZDRjMzk3NDU4N2NkMzViNDU5OGMyMjYzNDBjYzAzNmE2NjU0NyBweTNrCis4NzQzNCA1M2E0MWExMTc0MTFiYmIwZjAxNTliZjNlYmEyY2Q1ZWFhYmIwYWVhIHJlbGVhc2UzMS1tYWludAorODc0MzUgYzYzYWNlNWE1MzQ2YmIwYTliMTUyMTM3MjA5MDUwMzJhNGM3NjA1ZiBweTNrCis4NzQzNiBhODJkZjIwOTg1OGE2NGRmZTExY2UxOTc5NjZmMWQ1ZmUxYjQ2ZDM2IHB5M2sKKzg3NDM3IDZmZjUwY2VmOTg0ZWU1NTliMjk5NzdmNDQzYTIzZjdiZjU2MGRiOTcgcHkzaworODc0MzggOTI1MDJiMzY3NGNiZWM3OGNmODJiMjMwYWZkY2FmYzYxZTYzMjNmZSBweTNrCis4NzQzOSA2ZjQ4MzQyZTllM2RmNjliMmU3NmYxOWNlNmIwNDIxZjUxNGI0NjVlIHB5M2sKKzg3NDQwIDk5ZDE0NjNlZGI1NmMxZWQ3NWVjODUxY2QyZmMwYzYxN2U0YjU5ZmYgcHkzaworODc0NDEgODlhNDE2ZmQ3YzI5NzA3YmQ0MWZmODQ1YTc5YzFlZDc2YjA2ZGI0NCBweTNrCis4NzQ0MiA2YTYyM2E3NjcwNjIyYzcyYzNkNTRkODYzZDJkNmQ5YzU4ZTk4NzY3IHB5M2sKKzg3NDQzIGUyMTlmYjQxMzRlM2JkN2Q2YzgyNzcyNTMwYjM2Zjk2NDFhODkyYzEgcHkzaworODc0NDQgNGRjMjQ4YWMyNjRmNTg5MDQxOGYzMjZhOTI1YTEyYjlkYmZlNGExYSByZWxlYXNlMzEtbWFpbnQKKzg3NDQ1IGNmMThkOWU1MWI5ZDYwMDQzM2EzYTdiZGUzZWZmM2RlOTI1ZGFiMjIgcHkzaworODc0NDYgMzZhYzNkOWQ3NGMxNTA1MjlhMWNjYTZlNTRhNDFlZDkyYTI1ZjRjZSBweTNrCis4NzQ0NyA4M2JjZGFkMjUzMzVmOGIyMThhYTEwNWViOWMzNTRkOTQ2OTIwYWU5IHB5M2sKKzg3NDQ4IDEyMWJhMDRmMGZiYjEwMWFiYjM5N2FhYmUwNGY2Y2U5ZThhNjJkNWMgcHkzaworODc0NDkgMjE5MmJiOTVmNTRiMGRhZTFlM2Y4OTU4MGRmOGNlNmQ5Y2MzMTg3YyByZWxlYXNlMzEtbWFpbnQKKzg3NDUwIDkzZjU2MTk0Y2Y1YjgyYzMzYmUyMzdiMGYwYjQzMjM2ODZhNDEyYTAgcmVsZWFzZTI3LW1haW50Cis4NzQ1MSA3NjU3OTZhMzRhYmUxODhkMDQ1OTM1MjZlNmRhZTY2ODAzZDg5NDUyIHB5M2sKKzg3NDUyIDgxOTgyYWNlZDg2YmM5NWM3MzVlMGJiZmU4NzI2ODcyODE2NmY0NWMgcmVsZWFzZTMxLW1haW50Cis4NzQ1MyBiNWQwM2NlYjhkNzkwNzhlMzkzYjdhNDBjMDQ3Yjc4NDIxNjU4M2RhIHJlbGVhc2UyNy1tYWludAorODc0NTQgZDRlMGRhNzYxODhiNjAyNjdhYmE1OGRjODNkMWYzYWRhYzNiZmM5ZiBweTNrCis4NzQ1NSAzYjYxNWVlNzg3YjBmMDY3ZTQ3ZDRmNzUxNTNiMjEzZTU4MzM4MGU0IHB5M2sKKzg3NDU2IGMzNGFjOWY5ZGU4MzE3ZDM2MjZkNjljM2UxNDU1ZjAzODUyMjZiMDkgcmVsZWFzZTMxLW1haW50Cis4NzQ1NyA1YzA4MmYxOTdkZGY3NzNlZDllYjJhMTkxMDg3Njg1NzBkZTljNDNhIHJlbGVhc2UyNy1tYWludAorODc0NTggZmRiOGIwMmMxZTY1YjM1MjNmYmJjZThhYmEyMGNiNDIxMmYzMzFiYyBweTNrCis4NzQ1OSBlMWJmM2MxYzk1NjEzNDI1YWRkZTg1ZDk3YjczNGVmYjlhZDJhMWRiIHB5M2sKKzg3NDYwIGNhZjg5YTZhMTdhN2U4NGJhMGY0YmEyYTE0YjBmYWEzMmM0MDcwYmQgcHkzaworODc0NjEgY2VmMjgxN2VhMTU3MjVlOTRmMDkyNzc1YTE0OTBkNzA1NTcwNjcyNCBweTNrCis4NzQ2MiBkNWZhYTlmZmRmMmE5MzM4NGUyMmRmOGMyMjk5YzQzYTA2OGM4NGExIHB5M2sKKzg3NDYzIDA5NjczMTYyMGZmMmFlYWNjYjU0MjNlNzM5N2NlZjAzNDU0ZjJhNzIgcHkzaworODc0NjQgYzM3ZDZkYjAyYzg0ZDAzZGM2NjI2MGQzYmZiZDk1MTA2NDY0NTJlZCByZWxlYXNlMjctbWFpbnQKKzg3NDY1IGQyYzI4YTM3Zjc2MzA2NzUwNDQyMGU1YTg4OTA5MDcwMGRkN2RjMjYgcmVsZWFzZTMxLW1haW50Cis4NzQ2NiA4OWFlMmMzYjA4NWNjMWIzOTdiNjJjMDhlZWVkZjY3YzJjMmRhNzI4IHB5M2sKKzg3NDY3IDUxMzI0MTU0Zjg5M2Y3YjU1ZTExOWJhMDhlNTgyOTFhMzNiOGI3ZDggcHkzaworODc0NjggMWM1NjBmNGI1ZTViNDlkMDRlMmNjYzIyY2JlNTU5MTA0ZTcwNjU4NiBweTNrCis4NzQ2OSA5NjhkYjNlNWIxZDgwMDA4ZmU2NjI3MGM2Njg3ODNhZmE2MzhmYmJiIHB5M2sKKzg3NDcwIDYxODc2NjFjZGMwODhiYzJiMjAxNjYwZTM3Y2Q5YWVjOWUyNzNmMWIgcHkzaworODc0NzEgMzljZWE5ODA5MDVkM2QyYzMxZWE3MzU2OTI2MGQ0Mjg4ZDFiNmI4NCBweTNrCis4NzQ3MiAyZTk2NzBkNjcwMTczMWU1Y2ZjYjMwODZmNmMyZmRhYjEzNjZkZjJjIHB5M2sKKzg3NDczIGM1MTBjMTUwNWNlNzIzNGViMDM5ZjUwM2VhMWQ2NjlhM2M5YjE2NWUgcHkzaworODc0NzQgNTcwMWE4MDg0MDAxOTE3ZjZmYTJmYzE2YWM5ZTc3ZWI0NzQxNWVmYyBweTNrCis4NzQ3NSA4NGMxZDI2Nzk3MDc4ZmY4ZjAwOTIxNzBkYTczNjIzZGY3ZWUxNDg0IHB5M2sKKzg3NDc2IDJkODJjZGY2MmIyY2RlMmZkNTg1MzZjYTU3NzA0MmE1Nzg0NzQ2YzkgcHkzaworODc0NzcgNmM4YTFjMTE3NjFiNDg5MTI0MjhkNWVhMmRkNjRkMTU5MmE0YzAzNSBweTNrCis4NzQ3OCA4ZTlhNDdkYjM5M2NlZmJlMzgzNGE0OTJjZDg2ODdjYmJlOGY0YWU4IHB5M2sKKzg3NDc5IGVkOGRmNWE5MGNmMTk2MjUwNThkMjJkOTM2ZDFkMTQ0ZjlkOTYyNDAgcHkzaworODc0ODAgOTUwM2IwNjYyNTJkZGIxNzk5YjM4YTIxMjk5YzYxODAxYmY0YjMyOSByZWxlYXNlMzEtbWFpbnQKKzg3NDgxIGQ1MWFmZTQ3ZGU3MzJhNDBiZTVkMTU5Zjc0ZjM5ZTMxMDJjZWE3MGUgcmVsZWFzZTI3LW1haW50Cis4NzQ4MiBmYTRkZTY2YzdkZWViM2M3YzhmZTNiZDE5NzRlMzkwOWQ3Y2M0MzQ2IHB5M2sKKzg3NDgzIGM1NjZjNDEzMTQzOWYxNzc4ZjMxNTMwYjlhMTBkZGY3NDcxZGI5NzEgcHkzaworODc0ODQgYTY3YjQyYmZmNDcxODYyN2ZmZTMxMzA5NTQ1ZGQwMjYxZjFjMGVmYyBweTNrLWZ1dHVyZXMtb24td2luZG93cworODc0ODUgMzhkNjY5ODAxODdlMjg0NjQ1YjA4MWU2YjFmMmIxOWI4OGZlY2Q4NSBweTNrCis4NzQ4NiA2NzhkODMzNmY0YzNkYzY2ZTM1NzNjMjg1N2RhOTQ5MDU2ZTU2NzliIHB5M2sKKzg3NDg3IDFiMjE2MGFkNGM2ZTRhNmI5MTc2MmI0MGRiYWRhOTJmMTdiNjlkODAgcmVsZWFzZTMxLW1haW50Cis4NzQ4OCA0ODhlZDU1MGI3Zjg4OGNlZjhlYjA1YmQ1MTc5MzQxZTE0MjU5YWNmIHJlbGVhc2UyNy1tYWludAorODc0ODkgNGI5MjZhMTNkYzU0MjhmYWFmY2JkZTFmNzBiZWMyZTljYzI2NmU2ZiBweTNrCis4NzQ5MCBhMDE1MzNiMDFiOWM5YmMxNjhmZTdkMTA3NTAzNjkzNzdlMzZiNGQ5IHJlbGVhc2UzMS1tYWludAorODc0OTEgZDViYmM2NWJjMmIzZTAxYTM0ZWFkYjNjNjg1OTA3MGQ2MjBhNGJhNSByZWxlYXNlMjctbWFpbnQKKzg3NDkyIGMxN2E0OTk3MjI0NDE0NzQ4NmE3OTVmYmNkYzJlY2M3NWNkZjZiMGMgcHkzaworODc0OTMgYmYwOWVjZjY4YTE5OTk4NjFiNzFlYTE0MjY4YjdkNDRmOWQwYzMxNiBweTNrCis4NzQ5NCA0ZDIwYWVhNjA1YzVmYjQ0MDBjM2I3YjEyNjcwYmIwY2I2ZTE2NjZkIHJlbGVhc2UzMS1tYWludAorODc0OTUgZmJiZWZjZDZhMWE2OTVhZGZiNmUwY2I0N2E5MzRmZGUxZjRjNGM4MCByZWxlYXNlMjctbWFpbnQKKzg3NDk2IGY0YmE1NGUwYmE3NzQ1MDYzMjU2ODMxOThjOGVjODUwMTgwOTRiYTIgcHkzaworODc0OTcgYzJhZTkwYWNjOTA4ODU2NjYwODlkNGM1ZDRlMTI3NTE2ODQzMDM4MyBweTNrCis4NzQ5OCAxMDhiYzEyNjkzMGY3ZjhmMTJlZWJjZjRiZDRjMTA5ZTcxMmU2Njc4IHB5M2sKKzg3NDk5IGUyMGE2NDM2YTkyNzBmOGFlN2Y1MGIyNWQxY2UwZTQ2MjBjODc2ZGYgcmVsZWFzZTMxLW1haW50Cis4NzUwMCBkZDZkMWVjYmViNTZkM2NhMzMyYWUyZDkyMTFjNmM0NmY0ZTMwZTEyIHJlbGVhc2UyNy1tYWludAorODc1MDEgYmNkNmE2NWI4YjIyM2U1NWEyOTk1MzI3NTMwOWVhMWZkZGQxZDZjOSBweTNrCis4NzUwMiA0NDJmMWRhMDFhODk4MmQ0YWVjNDdmZGY1ZjI5MDRhMmY5NDQ4Y2FiIHJlbGVhc2UzMS1tYWludAorODc1MDMgZDRkM2M4OWFiMzg4ZjBjOTUxZWY0ODIzYTM5MmZmMjIzNGYyMTNiNyByZWxlYXNlMjctbWFpbnQKKzg3NTA0IDkzZTk1YjJlMWExYTIzYjNiMWI1YmU5Y2VmNjJlMDNjM2E2ZWEzODUgcHkzaworODc1MDUgNGJiN2Y3YjE1MWZlYTk0OThjYjUyNjcxOTcyYmM3Yzc3ZDM0YzE4MyBweTNrCis4NzUwNiA2NmQ4NDQ2YTAxOWJlNzY3OTk0NGNjM2M5MDc2YWQ5OGFmNjYyOWE1IHB5M2sKKzg3NTA3IGY2MTE5NjQ1M2M3ODFlNzA2ZmVjYjE4ZGViMDc5OTI5NzFjMjRhZGUgcHkzaworODc1MDggMjJjMTJhNWQ4ZWQzMDUxNTUyNzA1OWJjNjljMDZkN2E3Mzc2YTQ5MyBweTNrCis4NzUwOSA1ZGFlMDRkNDllMTVjOTlkZTg1OWNjMjUyOGUyMzdjMTkxZjVmZWU4IHJlbGVhc2UzMS1tYWludAorODc1MTAgYzY5NDY4NWI3NWUyNDNhMWNhYTdiMmIwMTg4YjQzYTY2ZTNiYWI5MCByZWxlYXNlMjctbWFpbnQKKzg3NTEyIDY2NDcwNWRiZmU2Mjk5ZTE5ZDMwMTNiNDcyZWQwNTkxNzQyNjQwYTEgcHkzaworODc1MTMgZWZkYzVkMGQ4MWI3MjFjMjhjYTYzZTg3M2FkNDYzNWNlY2U5ZTY2MCBweTNrCis4NzUxNCBiYmY3NTFmZGY0MjA2NzdjNTRiZGMyMzQ2ZWZkYjZjNzc5ZDJkZWRjIHB5M2sKKzg3NTE1IDJkMDlhZjRjMTM3YzljNmYzY2Y0YjE1NTNmZmY1YzQ3MDY0Mjg0MDggcmVsZWFzZTI3LW1haW50Cis4NzUxNiA4OTU0OTUzNWQ5NzU4NzQyMzBlMmI5OTVmZTNjMTVhMmMxMTFkODNlIHB5M2sKKzg3NTE3IDZmMTk2MjJkZDM0MmI0ZDkyZjBjN2U3YjU4MGYwYzllYzhjMTZiMjAgcHkzaworODc1MTggZmM4MzRiMzIzZjI2N2RkNDRkZmU5YWU3ZWY5MTk3ZDI3OGJlNWFhZiBweTNrCis4NzUxOSA1NjA1ZjY5MjBiNjM4ZTQwOGU5YmNjNWJmYjU0MmJhNDA3NWRlZWJhIHB5M2sKKzg3NTIwIDMwNWFmNmY1Y2FiZjk0ZWI0MmI5NTcwOTZiZTEyNmNhOWExMjQ4OGQgcHkzaworODc1MjEgNTMyMDlkMDBkM2FiMTkyZTQ2NWMzNDU3NGJhNGQxZWI5M2MzNjhjMCBweTNrCis4NzUyMiAwMDA0MDEzYWU5ODRhOWM0MTUzMDMyZTNiYmUwMGU3ODBiMzZhNjI4IHB5M2sKKzg3NTIzIDEwOWRlZmMxYThjZmIyZTJiMmY0MjA3M2QzZGE2MDYwZTgwMTEyMGUgcHkzaworODc1MjQgM2E0ODE2YzM2ZGY3ZmVjZDc5Njk0ZWZjMjFjZGYxOGQ5NDNmOGMxZiBweTNrCis4NzUyNSBlMGM1MmMwZTg1ODYyMzMwY2YyMzM1ZDY2YmY0ZjdmMWEzNzlhNTVmIHB5M2sKKzg3NTI2IDdkNTUxZDVlZjRmY2Y0Njk4ZWQ2MmNhODg1M2I3NmE5NzA5ODk5YWQgcHkzaworODc1MjcgY2Q2ZTM0M2UyNzhlOGMyNGIxMDhhOTJjYzUwNGE2NWQ1ODg2YzExYyBweTNrCis4NzUyOCA2MTQ0OGNkYzBmYThjMGY1YjJlMzI3YTgzODkxMTBlYjc1YzZhOTA5IHB5M2sKKzg3NTI5IGVmOTM1MzFkMGFjNDdjOTIxZmVmMjllOGMwNzQ5ZDRjNTQzNjNlMjcgcHkzaworODc1MzAgMmUyNDc2ZmI4M2VmZjkwZWQ3Y2VmMDUzY2EyNTEyNzc0NDdkMDU2NyBweTNrCis4NzUzMSA0YTc3MzljNTI3NGI4YTViODJmZmQ2NDEzODE5MTkxYmMwNGVmOWEzIHB5M2sKKzg3NTMyIDg4MDU4NmI4ZDBkMDE1N2JhZjRkOWVkNmI1NTAzMDJjZTQ0ZThjZjMgcHkzaworODc1MzMgMDE3MTRlZmRjNmNmMTIwOTRjZDcwZTU0OGY4ODI3ZTczOTQ5OThjYiBweTNrCis4NzUzNCA4ZmNiOGYyNjU1YTU5MjQwODUzY2YxNmVmYzhmYTUxYWYyMmE3Nzk1IHB5M2sKKzg3NTM1IDE0ZmQwZGZiMTZmZmMzNjI2OWE2YWQ5M2I4MjI2ZDdjOTI3NjQzOGQgcHkzaworODc1MzYgZjUwOTEyOTgzNDYxN2M5NjFhYzM3NjQzZGY3MWEzNWEyNTE4YmY0YSBweTNrCis4NzUzNyBiOTAxZGE1NjFjZDE0MDcwZmJjNzY2NDIzNTJjMDQzOGYzODBlZmFhIHB5M2sKKzg3NTM4IGE4YmUwNTY3M2YzNDM3N2YwZjQxMDQ5OGZlYjhiOGMxMDVjMWM4YzggcHkzaworODc1MzkgNWFhNDMzYTI3N2Y5MzdmYzc4Y2EyY2VlMDI3YzZlYzZiZjk4YWZlMyBweTNrCis4NzU0MCBhNGVjMjBjYzkwNjY2ODIxYjE2NWE5NmRlNjgzMGM5NTI3YmNmM2IyIHJlbGVhc2UzMS1tYWludAorODc1NDEgNTRmMWQ1NjUxNTU1NzRhNzczYjMzMTU2NDM3OTJjODIyNGU3MGQ5YyByZWxlYXNlMjctbWFpbnQKKzg3NTQyIDE4YmNlZTg1NjliYjM3YTQ0ZTJiY2M5ZTg1MjAzN2MwYmEyNDlmOTkgcHkzaworODc1NDMgY2M3OGE2YmVmYmYyZjFmNmVlYTRiNTgwZjI4YTE1OWQ3YTg0ZDY0YyByZWxlYXNlMjctbWFpbnQKKzg3NTQ0IDA1Y2NjZDQyNTdhMjJhODc4NDI5MzdmYzI5YzdmZmFmMTc1YzM2NmQgcmVsZWFzZTI3LW1haW50Cis4NzU0NSAzNTQ2Y2UxYWEzNTViYzY3NDE5ZTY1YmQ1NGExZjJhYTdjNDc3ODY1IHJlbGVhc2UzMS1tYWludAorODc1NDYgNTJhODYxNzQ2MTI5N2JiOTU5NDZjN2Y5YmFlNjhhMDcwNGExZTFmYyByZWxlYXNlMjYtbWFpbnQKKzg3NTQ3IDZjY2RiMWUwMTYxMTU3NGQxYmUwM2U5ZmU1MjFiNGVmYTNkMmYyYTMgcHkzaworODc1NDggNjk0NjBjODA1NzM3YmU4MzUxZjVjZWIyZTUwZWFmNTVlYjdlYjQwMSBweTNrCis4NzU0OSBiN2JlNjUyZGFmNmVlMzIyMjA3YjNhNDBjYWJlZGU4MWRmYTA1YzdlIHB5M2sKKzg3NTUwIDc3ZGVkYWEzNmQzYWNiOGFmYzMxYzM2NWIyMTg3YjliYjkzYmNhZWMgcHkzaworODc1NTEgNzQxYjkzYmM2OGE1YmViZThkNzFlZGI0MjkwZjQ2NzMwN2NmMjdhYiByZWxlYXNlMzEtbWFpbnQKKzg3NTUyIDk1NTllMTE1MjU5NWI5NWRkMmQ0MTczMmY2NWI0ZWEyNTg0MzI0ZjkgcmVsZWFzZTI3LW1haW50Cis4NzU1MyAwZDk3YmI5OTQyNWRlY2ExZmFjYmY5MDUyOTA4Y2NhZGEwODNmMWZkIHB5M2sKKzg3NTU0IDViYmMxZGM0NTlhNTgxZjY3NmQ5NTgzYjI0ZTZjMmQ5YzY3MWU1YjIgcmVsZWFzZTMxLW1haW50Cis4NzU1NSAxZGYyMDIxYzdjM2M0N2QyZmJhZDA4YWNiZDUwMmJiYjcwYTliZWIyIHJlbGVhc2UyNy1tYWludAorODc1NTYgMjQ5ODhmOWY4NTBiMWMzZWEwMTZiMTYyNDc2OGZiNGYyZTY0NGMxMyBweTNrCis4NzU1NyBmYTU5ODhmN2M4YmQyNTcwNjQ4YzU0YTIwODYwOWY4MzRmNzdiMDU4IHB5M2sKKzg3NTU4IDJhNzczYmVmNDBjMjExNzQzZTA0YzY1YmZmZmVlZDhlY2FiNzFkMzEgcHkzaworODc1NTkgNjAzMjNhMGU4MGQ3YzFmZmEyYjMyZmUyNGUzZGNkM2EyZDg1ZjZlMCBweTNrCis4NzU2MCAzN2E5MTViZGY4MjdiYTUxNDI1NmVlYmIyZDhlYmEyNjEyZTA3OGEzIHB5M2sKKzg3NTYxIDQyN2Y5ZjE1NTA0ODVlODQ0MjhhOGVmYjhkN2Q1MDk1MDQyZTc5YmYgcHkzaworODc1NjIgMmI0MGU0Yzc3Nzc1NTM3MjZlNzIyZGM1YzhkMjhlYmY5ODVhZTJlMiBweTNrCis4NzU2MyBiMGZhZjdhNDUyMzk1MTE0MzQwMGU3NjM4YzVhZWNlOWM2ZTllZjIyIHB5M2sKKzg3NTY0IDhiNWVlYjVmNDU0NjY0YmM3ZDZkYjY4MzY3MTA3MmViNDNjOGYzNGIgcHkzaworODc1NjUgZTJlNTljYjRmNTBjYjJjMjljMDAyNzEwMTY3YTJhNDI0MTBlMDJmMSByZWxlYXNlMzEtbWFpbnQKKzg3NTY2IDAwYmIwNDA2YmZlZDk0MDFhYWNhNGZmYmQzNzhlYzNiMjUyMmY2Y2EgcmVsZWFzZTI3LW1haW50Cis4NzU2NyBhYjYxYmFiMzIxYzEwMTE5NjcwMjE3YWExZjc5M2IwZjg5ZWYwOTEzIHB5M2sKKzg3NTY4IDdlNzE2YjlhNDAzZDE0OTQ5ZGYyYTRlOTVlZDY3YjI3ZjYzYmE5MWYgcmVsZWFzZTI3LW1haW50Cis4NzU2OSBmMDY5N2NhOGFkNDc2ZGQ4OGFmMzZhMjY5MmIyMThiMjJkNzA1NTRmIHB5M2sKKzg3NTcwIDJlNTkyYTRlNjhhYjhmNjA3MTQ0OGMwZWI4OTczMzg1NWFjMDQxNDMgcmVsZWFzZTMxLW1haW50Cis4NzU3MSAyZTFkYmIyNTJmMjU3ODE5YTAxMjkzZDQ3ZTRkZmNmODJiNTUwYTY2IHB5M2sKKzg3NTczIDEwYjgzNjY4MzdkODBkZTczNWExYmMyMTE0OTQyZWIxZDFiMzIwYzYgcHkzaworODc1NzQgNDFkNWI2Y2ExOTIzZWY5ZjRiNzA3OGJmMTEzNjk5ZWU0YjdmNmZjOSByZWxlYXNlMzEtbWFpbnQKKzg3NTc1IGU4ZTY0ZWI0Y2E0Y2Y1N2Y0OGRjZTEzNjkyYWE0N2FmMTE4MThhOGYgcHkzaworODc1NzYgOTEzODYzNGI4YmQxNDYwMmRkMjVmYWFjNWFhYTRmYzhlNzNhYWY4MyByZWxlYXNlMzEtbWFpbnQKKzg3NTc3IDRjODNhMjlhNzEyZjkxNWRhNGY5ZmJhZTIxMzc4OGJkM2U2MGZmNDggcHkzaworODc1NzkgODdlNmJkYjM3M2QxM2Q1NWY5OGU2YTEwYTAzOThiNzcyYzYzNDdhOSBweTNrCis4NzU4MCAxNjMxOWY5YmU5N2M0ZWI5YTE1YWUzMDgxM2E0ZDFmZGMyOTVmYzc3IHB5M2sKKzg3NTgxIDU0ZWY1MmY5NzFhNTE5N2YzY2U2YTAyMWE4MzA0ZWRhMWFiYWMzZTggcHkzaworODc1ODIgNjNiZjg0Y2ZkOGE2MTRlYjg1NjAwMTJjNTkwZGM0YzhmZDQ0MGQyOSBweTNrCis4NzU4MyBmMGI1NmEzOGE1MjQzYmUwMTdjM2ZmYThjZDFhZWUzZTRkYjU4OTBkIHB5M2sKKzg3NTg0IDQ0ZWIwOWE1NTM5M2YwN2JlOWE0YjliODFmYjNiMzc0NTUyMjI3MWIgcHkzaworODc1ODUgZjM3Zjk2ZmNlN2I5NGRhN2YzMzcyOWQ1Y2Y3NjY0YzkyZWFmOTNkOSBweTNrCis4NzU4NiBmZGI2YmQxZDUzNTRjZTgzNmU0NzE0OWM0MDBhMTY4NDYyOThiYTY2IHB5M2sKKzg3NTg3IDhjN2RmMDM1NjAzNjAyMGZlZGRhMDY4NWNiOWYzYTBmMmNjYjE5YmIgcHkzaworODc1ODggY2FjZmZmMzQ5ZDQ4ZDczMmNiMGZkOGE5NDIyZmQ0Mzk1ZDhkYWVjYiBweTNrCis4NzU4OSAwZGZiODM5N2E5NzNiYWU2YjE2ZDFhN2YxYjY5NTY2NDliMjExNDJhIHB5M2sKKzg3NTkwIDcwMjAzN2MwMzlmZjAxMzk0OTQ0ZGViYmZjM2YzYTJjZGNiNzJmMTMgcHkzaworODc1OTEgYzcyZWU2ZTNiN2RmOGJiOWQxOGNiZjQwZmEyZGYwNDMxNTcxNDQyOSByZWxlYXNlMzEtbWFpbnQKKzg3NTkyIGExM2I4NjYzZmViYWM3N2VkZTU0MzNjZjQ0MTZjZDdkYzU4M2MwMjUgcmVsZWFzZTI3LW1haW50Cis4NzU5MyA1NTEwMDYzYjM5ZDQwMWUwZThmOTljMDkzNzA0NGRhMjlmZWIyZGI0IHB5M2sKKzg3NTk0IDNmZTY2ZmMyMjE3YjMwMWE5YmU0ZTY4MGQ1MDc2NmE0YzM4MmIyMzUgcHkzaworODc1OTUgYjY4ZjM4N2ZiYjQ4YThiZTQ1M2ExZTM4MjY1ZGM4ZjcwMjFiM2YwNiBweTNrCis4NzU5NiA4NzU3MjFkYTc0NmQzNWI3Y2I5NjE2ZWJmZjU2MTlmNjQyNjFiYmY5IHJlbGVhc2UzMS1tYWludAorODc1OTcgNTNkYjI5MGU0NmVmOTNiODhkY2U4Y2U2Y2VmMzU5NjNiOGViOTc2OCByZWxlYXNlMjctbWFpbnQKKzg3NTk4IDhmOTI0Y2FmMmU1ZTk4ZGM5ODRjYmI1MTM1OWRhZmE4Njc4NTkxYTAgcHkzaworODc1OTkgZWNhMjVmMWRlYWU3MzE4MzBiYmVjMjQ1M2RiZThmMWZiMTNkZTI3MCByZWxlYXNlMzEtbWFpbnQKKzg3NjAwIDUwMGViM2QwODk3ZjQ5MTNkYTg4Y2EyMjBmN2ZjY2JkMGRjNDE0Y2IgcmVsZWFzZTI3LW1haW50Cis4NzYwMSAzYmM3NDYxNmM5ZmZjMzE5YTIyM2U3ZDk2YjgyYTMyNmM2Zjc2MzE2IHB5M2sKKzg3NjAzIGZhODU1MDIxM2JjZmRkZTcyMzJjZmEzNDY5NTcyODI0MTZhMzcxNTAgcHkzaworODc2MDQgMzM1NDNiNGUwZTVkNjE1MDU4ODA1YmY1Njc0ZDg3NmY2NTk1N2QzZCBweTNrCis4NzYwNiBjZDhjOWI2N2YwMzM4NTI2NjQzMzA1NTdjMTc3NjQ1OTlmMzA5NWNlIHB5M2sKKzg3NjA3IDVkYmE2N2NhNmNjZmI1NWMwMTdlOGE2NjFmNjU2NjZhZGJjYmVmN2UgcHkzaworODc2MDggN2JiMzdhNGNkN2NmNzU5ZWQwMTc1NmQwZDg3NjY0NTAxMmExNTNjYiByZWxlYXNlMjctbWFpbnQKKzg3NjA5IDVkYjg5ODUzY2FjZTE5NjgwN2MwMWZmYzYzMWE4ODFjZmFkZjc0YjIgcmVsZWFzZTMxLW1haW50Cis4NzYxMCA5MDBiYTA3ZTQ4MjRiOGUwOGVjOTZjMzVhZjE2MTliNjIyN2IzZTMwIHB5M2sKKzg3NjExIGNjZWQwYTdjZWI0M2U4MDQxNTdhYzFmNDE0ZjcyOTNkMzg0MjUyMDEgcHkzaworODc2MTIgNDE1YTc5MmUxMjQ5M2I4YzIxYmFhZWNkNzdkNTU4ZTRkOTg4ZWEyYiBweTNrCis4NzYxMyBhOWFhNWU0ZWI4YzNhZTU1ZjkwZDE2MWVkYzhhYjU1NmVkZGExZDI4IHJlbGVhc2UyNy1tYWludAorODc2MTUgZjhjMmQ4OTBmZDEwNTRiOWQzNWRjY2E4ZTA5MmIzYzQ1MjYwNTNhMyBweTNrCis4NzYxNiA4ZGJmODU1YzkwZWRhYzc4MTk2OWVlYTQ2MDUxYjc3MGU0MjAxNWZlIHB5M2stY2RlY2ltYWwKKzg3NjE3IDU3ODU3YTYwZmE5Nzg1YmVlMDQ5MmMzNWI4YjNhYzRlMDc0ZmMxMWUgcHkzay1jZGVjaW1hbAorODc2MTggZGQ0OTQ1NWQ4YThjOTE3NzcyN2JlOWM1Y2M4YWRjNDA2NjliYjZmZSBweTNrLWNkZWNpbWFsCis4NzYxOSA2YWY5ZTgwMDAzMzI5NzhhNGEzZDhkNmI4MGY0MWYxMDQ3ODE1YTJjIHB5M2stY2RlY2ltYWwKKzg3NjIwIGE2Y2Q4NGNhN2IyYTc5NjUwZjQ0MmUwN2RiY2Q1MjhiNWYyNTM5NzkgcHkzay1jZGVjaW1hbAorODc2MjEgYWVlNDU0NDAwZWQ3MTdiODI3YmZlYWU1MzhmMzM3NjY3ODNkMjg3NCBweTNrLWNkZWNpbWFsCis4NzYyMiA0YWE2NmU1MTQ4OGYzOTQ1YWRiZjdmMWZmNTJjYmFkYjkwNGQ2ZTJhIHB5M2stY2RlY2ltYWwKKzg3NjIzIDBiMmVhOTAzMDBjMGM5YmZmZWE1MTUxMzI5NjE1OWZkMGFiYzM4YTcgcHkzay1jZGVjaW1hbAorODc2MjQgZDJjYTViMzEwNGFhM2NiOTdjMTRkNzA1YzIzN2JkZGNmNzA5MmQ1ZCBweTNrLWNkZWNpbWFsCis4NzYyNSBkMzkzZWM1MzZjYTlkNWQzZWEzMjAxMjIzN2QxOTQ4NjkwNjI5ZDA4IHB5M2stY2RlY2ltYWwKKzg3NjI2IDNmZWFkYTcyMjMzYzQ3MzRlNzJjOTQyMzdmMmI0ZTQ0NDg3N2YzMTAgcmVsZWFzZTI3LW1haW50Cis4NzYyNyBkYzYyNDViZmU1NjYxYWY5NmZjOTI2YzYxYmYxZDk4NzY2MzM1ZjM3IHB5M2sKKzg3NjI4IDc0MzZkYWVjOTQyMTBlMjUxZmI4YTY5MDI1MmRjZDlkYTUyYzlhY2QgcHkzaworODc2MjkgNDQ5NmRlYjI2MjY1ZGEzNjA3ZTA4NmFjNTAzM2U2ODRiOGFhZWIyMiBweTNrLWNkZWNpbWFsCis4NzYzMCA3OThhYTNmZTAzNDdiNTlkOTliYzA4N2VhMzUxODM0N2QxZjQ3ZTQ3IHB5M2stY2RlY2ltYWwKKzg3NjMxIDIxZTRmMWFhMjQzMGMyZmM1OTk2YTM3YzY3MGE0YTFhZWY2YzM5NjYgcHkzay1jZGVjaW1hbAorODc2MzIgMGZjMjQ5M2EzODYzZDdlMmQxNTMzMDgxNjI0NGY2MjFiNzBmMmZkNCBweTNrLWNkZWNpbWFsCis4NzYzMyA1ZDM2ZjBhNTM3ODNhZGU0MGJkMWJlNzU2M2M0MjM0MWMxNTFhOWQwIHB5M2stY2RlY2ltYWwKKzg3NjM0IGU3MGM5MzYxMmQ3ZmNiZDJiYzk5ZjFmZjFmNjMzY2EzZmM0NzY1ZDQgcHkzay1jZGVjaW1hbAorODc2MzUgZDQ0YmE3NTIxMDNmMjNiN2FhNzgyOWE5YThiMzY3NjE1YmNkZDYyYSBweTNrLWNkZWNpbWFsCis4NzYzNiAxNmU4ODZhNzZjNWE1OWM0OThjZWE5YTcwNGI4ODMxZjZmZjY2ZmMzIHB5M2stY2RlY2ltYWwKKzg3NjM3IGZlNzIzYjhkN2M1ZmUzMDk3YWZjODllN2FlZDVkZDc1ZmMyZGQ2MDkgcHkzay1jZGVjaW1hbAorODc2MzggNjQwMTQ5MTNlYjg4MDliODVmZGI2YzllMjcyOWNhZDBjNGI5YTJjZSBweTNrCis4NzYzOSBiMzQ0Mzc3ZmRkOGRiNTZiNDAxMDlkODE1NzU5OWQyMjYyOTI0Y2ZkIHB5M2sKKzg3NjQwIDMzNjVjN2I2NDg5MzdkZmU1MmQwYTU2ZWNjOTI3ODNkZGY5NGQxZTYgcmVsZWFzZTI3LW1haW50Cis4NzY0MSA4ZjMzYjUwMjE4M2JmMDM5NDgxMmVkNTFjYWJmYTNkMWEwODE3YjA1IHJlbGVhc2UzMS1tYWludAorODc2NDIgZmYxMjYxYTE0NTczM2E0NmRiZmMwYjE0ZTA5MTczMzgyZjlkMjU0MyBweTNrCis4NzY0MyA5ZWExMmU4NmQ1NjUyMjdmM2Y2OWYyOWE5ZDUzNTQzNzZjZmJmMWVhIHJlbGVhc2UyNy1tYWludAorODc2NDQgMTUyYTA5ODViMTM4Yjc5MThkMTdkN2M4Y2U1YjRlMzJhZGZkZmE1OSByZWxlYXNlMjctbWFpbnQKKzg3NjQ1IDBhZmM0MTM5Y2M3MDI5MWM0YTFmMzAyNDM4NzQzNGFkNjI1ZWE3OGYgcmVsZWFzZTI3LW1haW50Cis4NzY0NiAwY2FlMjFkZTk5MjEzOGY0ZDU1YTY0ZjYyYmM5NzQyNGE0ZjhlYzk5IHB5M2sKKzg3NjQ3IDAwNzFhMTczNDY5MDk5MDdhYTZjNTAyZDcwMDMwNzBlMzliZGJhMWYgcHkzay1jZGVjaW1hbAorODc2NDggNmM0NjNiMDdkYmRiNzJhYzU0ZDQxMGRmOTI0ZGVhZTIwODU3MzFjYSBweTNrCis4NzY0OSBkYmI2ZmIyYzViOWQ3ZTZhMDk5YzhhZjkyZjA1YjRjMmNiNzdkMDI4IHJlbGVhc2UzMS1tYWludAorODc2NTAgZWI5NTRjNzY1NTIxYWE3MjdkNDI2NGY3NDIwZTNmYzliZDQ0OWI0YyByZWxlYXNlMjctbWFpbnQKKzg3NjUxIGE1YWUzYTE3ZDVmYjE4MTQxNWZjMzJjNWY0NGJhZWZmYTZhM2Q0ZWUgcHkzaworODc2NTIgZTBlNGVmYjYzMzU0Y2RiNmY0NjZjZTUwNjMyMjgzYWVjYzM3ZmU3YiBweTNrLWZ1dHVyZXMtb24td2luZG93cworODc2NTMgMjU2Zjc5NGMyY2MwMjg0NDQwYmY1ZWNjNzYyMGYzMzg3MGUwMmZkOSBweTNrCis4NzY1NCA1ODFlNjcyNDc4ZjdlYTRhMWYzMjcyYmU3ZWE4MDZlODI5MjVlYjI4IHB5M2sKKzg3NjU1IGM0ZDY3ZmE5MDlkY2QyZGExOWQxYzQxZWYwNTZhMjA3NjYyYmI0ODAgcHkzaworODc2NTYgYjAyMGRmOWVlMzgxNmNiMGE5MzY0ZTQwYzRlYTdhYjg1MDIzYTBiNyBweTNrCis4NzY1NyBkMzllZmE1NGRlYWYwNDkzMDk5OGU0MDI5MTcyOGUyZmY3MTRjYmYwIHB5M2sKKzg3NjU4IDQyNjBlMzAyNTJlYjJiYjdkNTVlYjQ4M2RiZTU1MjhkNjY5YmM1N2IgcmVsZWFzZTMxLW1haW50Cis4NzY1OSA3MzBiMWFmMDkyMzg3NDgzZDA3Mjg4ODFmYTg5ZjA2ZGQ2ZjZiMzhhIHJlbGVhc2UyNy1tYWludAorODc2NjAgMDRhYTViZTcwNmFjMDE3NzExYTFhYTk1YjFhOWY1MzQyNDNmYTBkMyByZWxlYXNlMzEtbWFpbnQKKzg3NjYxIGE1ZGFhMTQwMDFhOGVlYmE0YWQwMjk3YjY2N2VlNTk2MmEwNThmOGIgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjYyIGY4OWUzN2NkNmM2NTc3MTY4ZGNiM2YwMjUzMDY3YzIyNmRiZTNhYjQgcmVsZWFzZTMxLW1haW50Cis4NzY2MyA4OGU1YWU1YjdkYzI2YTAxYzY1YmFlOTUyMzI4MWQ3OWM1YzEzYmQ0IHJlbGVhc2UyNy1tYWludAorODc2NjQgZTI4ODY4Y2Y5ODI1ODljNzVlMTdkMGQ0MGRlM2EyOThjN2E4MzdiMSByZWxlYXNlMjYtbWFpbnQKKzg3NjY1IDc0NjE0M2VjMWY2MGRhMTI5NTRhN2VhNjcxZjkxNTM2ZjQwMjkyYTAgcHkzaworODc2NjYgNGFmOTg3ZWMwMzNhMGQwNmUxMzE5OWY4OWE1MmVmZWFhZWNhMTBhZSBweTNrCis4NzY2NyAyODUzOGYyZTBjYzI0N2YzZjVmODlhNDcwOGZhNGZmYWY0OTM4NGQxIHB5M2sKKzg3NjY4IGQ4ZWQwY2M5ZTMzODJjMjY5NGNjZDBmNGVhMzEyYWNmM2I1YTE1YmYgcmVsZWFzZTMxLW1haW50Cis4NzY2OSA5M2I3YzAwMDhiMDg1ZTA3YTI5NDQ0Zjg5NjFhOWYyZjdmMmMxMGI3IHJlbGVhc2UyNy1tYWludAorODc2NzAgNzNiMjQ0NzZjYTNiYWFmNzA3ZTc3NjNiN2JmZDdmNzIyNTBmZDUzMyBweTNrLWZ1dHVyZXMtb24td2luZG93cworODc2NzEgYTA0OGQwY2YyYWQxZDgyMTA3ODQ5NWNlMzk3MDJiYjQ0NzNkYWE5NSBweTNrCis4NzY3MiA1Mzg0ZTcyMGYyOGZkMTk4MzYwZGNkNjZlOTg1NmZiMTNlOWJkNzdhIHB5M2sKKzg3NjczIDQzOWJmOTY4MGJlZjI2NjAzYzhmNGE3NzE5MjkxOGFlMzczN2UyMDYgcHkzaworODc2NzUgZThiY2M3ZGJhYjdkYzIwYzMzOWYzODMxM2Y4YTQ0YzRkYTU0M2NlYiByZWxlYXNlMzEtbWFpbnQKKzg3Njc2IGM4OThkZDIxNWJhMDY2NTc0ZjdhZTQ4ZTE5YTc2Zjg4MzVmZjU2M2EgcmVsZWFzZTI3LW1haW50Cis4NzY3NyBmYTU5YWMxMTY0ODQwZGU5YzE4YjQ5MmNjYTM0MzY2ZDgyNjY4MzliIHB5M2sKKzg3Njc4IDU3NzZmNDI0ZDg1NzgxMmQ3MWZhYmQ2NzE1ODYxMzdkMjIyM2UzMjAgcHkzaworODc2NzkgMjgxMTkwNjFmN2QwMTE4OGRlNDI1ODExOWY2MzA0MGZkOGZjODdjYSBweTNrCis4NzY4MCA4MDYwMGMwYzMzYjc4YjFkYzg1ZDcxZThhMmRhMDIyMDRjMjc0YTRiIHB5M2sKKzg3NjgxIGY1YjEwNWM5ZjQ2YmY2ZjJhYmMzN2NlMTRhNjdjZTVjMmViMDNiZmEgcHkzaworODc2ODIgYmExNmZmODZkNGY2Y2QxNTk2ZGEyNjBiZDNiM2ExNzg5YmZkZDVkNCBweTNrCis4NzY4MyBkYmE5YjljN2EyZGI3NmY4NDc3MGFjMjEzZjZkOTM4NmFhNjU0MTAzIHB5M2sKKzg3Njg0IDZjYjdlZDdiNjY5N2U1MzUyYTNmZjRlZTQ0MWMwNDU3ZThlYzE5ZTggcHkzaworODc2ODUgOTQ4NjkyNzEyZmQ3MTBkNGMzMTE4ZjEyMGEyYmVlYmJlYTk5NmEwOSBweTNrCis4NzY4NiA5MzFkMjMyMGY1NmEwN2I0NzFkZDQ2MzM4NGYwMzU3NjBkNjk3NTY3IHB5M2sKKzg3Njg3IDRjNDZmNjYzMmRkZjk3NzY0YmVkMDQyZTQ3MGM4YTliMDk4MzBlOGYgcHkzaworODc2ODggNzc0ODNmM2U0OTFhNzkzNjBjMDA5ZGJjNGNkNDU2Y2FmZTNlYWFhMSBweTNrCis4NzY4OSBjNDE3ZDgwNTc2ODI3NDA5N2NkMzVjOWIwZjAwMWYzYWIwYzhjYmYzIHB5M2sKKzg3NjkwIDc0N2M1NWE5NGNiMGU1ZTUxOGRmZTY2ODZjNmEyMTdmYjFmNmFjZjcgcmVsZWFzZTMxLW1haW50Cis4NzY5MSA2YjdkOWYxYzJjZTUxYTg0Y2YwYTIzMjY4ZGM0YWY4MDg0NzAxZjllIHB5M2sKKzg3NjkyIDI0NTM1OTM4MmIwZmFkM2U0MzI4YzdiZGI1MGRjNTMwYWRiYTZlY2QgcmVsZWFzZTI3LW1haW50Cis4NzY5MyBmZWIyM2UyNGRjYjVjNzBmMzMxMTA3OTljZjcyOTZhMmQ0MWE3NmQwIHJlbGVhc2UzMS1tYWludAorODc2OTQgYTMzZTFmMDIwOTFmOGZhMTVlN2I4MmIwNzRlYjJjOTU5NDQ5ZTkwMyByZWxlYXNlMjctbWFpbnQKKzg3Njk1IGE2NmE2ZTQyNTM4ZmU0MDkxM2Y2NTYzZDJiY2VkNGFmZTdhOTcyZjUgcHkzaworODc2OTYgZTlhNTFkNDYzNTc5MjQ0MzE1NjNhN2E2MmUwOTQ4ZTM2YzM0YjlkYSByZWxlYXNlMzEtbWFpbnQKKzg3Njk3IGE0NzZlYjA4N2VlOTc2ODMzMWU4M2EzNTI0ODA0ODM1NTc1OTdhYmMgcmVsZWFzZTI3LW1haW50Cis4NzY5OCA4YWM0YmNjYThlMzE2MWYyZWZiN2JkYWVjYzE3ZTc5ZjI0NGJiMWFlIHB5M2sKKzg3Njk5IDlhY2VkNWFlZDExYWY1YWUxN2JjN2Y0NDRiNWI4YzM2NmQ3Y2U3MjIgcmVsZWFzZTMxLW1haW50Cis4NzcwMCBiMGI0NDE0YzBiZGMyMWRlNDM2NTI0Nzg4ODA4N2RkNzMxMWY2MDlkIHJlbGVhc2UyNy1tYWludAorODc3MDEgNzhkZTNhN2ZiODk2MzRlMjk2YmMyNTc0YTVkMmE1NDExZTNiYjJlNiByZWxlYXNlMjctbWFpbnQKKzg3NzAyIDI3NWZiOTg0OTQ5MWZlMTVhN2YyMGJjMWJiN2M2ZWMyNjNmNGUyOWYgcmVsZWFzZTMxLW1haW50Cis4NzcwMyBmNDk4ZWE5NzhjNmZlMGVkYzlkYTVlYTg4ZTk5YzQwZjhiOThlNDQyIHB5M2sKKzg3NzA0IDYxMTU2N2VjNGQ3YjcxNWNiODA2OGMwMDkyNDJmZGI4ZDczNDQxYjcgcHkzaworODc3MDUgOGMxODk5MmQzNzUwYWMyM2RhYjc5MDFjNjZjNTE3YzE4NGFkYmY1MSBweTNrCis4NzcwNiBmNjBhODk5YTIwNGU1YjI4ZWRjYzZlZWI0MTM3N2I3YzNkNGIyMWYzIHJlbGVhc2UzMS1tYWludAorODc3MDcgNDA5NGJjMTNhY2ZjYzQxMzBmM2MyNDk2MzgxNDMxODEzZDYyOGRjOSByZWxlYXNlMjctbWFpbnQKKzg3NzA4IDlmNDllZTUyMzk3NTYxMDk4MDJlZTc0MzJmNjA3ZTUwZmQxMjA4OGUgcmVsZWFzZTMxLW1haW50Cis4NzcwOSA1YmNmMTA4YTNmNWRmZjI3ZGEyMTA3ODhlYzMzYjY5ZTU1YjAyYmMwIHJlbGVhc2UyNy1tYWludAorODc3MTAgNmU1YWFkYTRmZGQ1ZjE3Njg4NjJiZWI0YmY3MDUxM2U0MjVhMDVhYyBweTNrCis4NzcxMSA1MDExODcwZWM4NmJkNGYxOGIyNTQ0YmU0YjZhMjY1MzdiNTJhYTIxIHB5M2sKKzg3NzEyIGE3YzQ5OTI2NmE5ZmUwMjUxYjZlNzE4ZjhmOGFhY2RkZmUzNDg5Y2EgcHkzaworODc3MTMgOGY1MDljNTI2MGE5OGFjMzk4ZWFlODU4MmYxMzU3ZjE2ZGIxZWEyMSBweTNrCis4NzcxNCA4OTMyNzNkNzkzYzZlZjUxYzU1MjljODBlMmI3ODJiOTI0MDMyMDM1IHB5M2sKKzg3NzE1IDczMWRlYzRlNzUxMzgxNjRhZDljOGIzZGRkMGE4MTAzMDJkNjM4NjQgcmVsZWFzZTI3LW1haW50Cis4NzcxNiA5YWQ4OTY0MjZmNzk2NDE4MDEzYmFmMzU5YWVhNGY4MGNmY2VlZjczIHB5M2sKKzg3NzE3IDcwYmVhMmRhZGVmOGE3MTRkMmIzYTdkM2ZjZjY1NjRlMGQ3ZjZiOTQgcHkzaworODc3MTggOGI4NDhkM2M2YWQwMTQ0NTA4OTlmZWNkMGY4Y2UyYTQ3MWMxNWNkYyBweTNrCis4NzcxOSBkMzZlMzQ1YTFhM2NlY2JlOWRkZjhmNjYwMDBmZDBmMTJjMzRiMzc5IHB5M2sKKzg3NzIwIGYwZWIzNDQ4Y2UzODQ1OTI5MzQwN2MzZmEwYzk0NDI4ZDc5ZDg5YzEgcHkzaworODc3MjEgOWNkODNjNjU4YmE0NjIwYmYzMjMzOGJjNmZhOTY3ZmIxNGFkZDJmNyBweTNrCis4NzcyMiAzNzRkYzkxMGRiMzNhZDY4YzA3Mzg4OWY3YTk1NmRkNDhjZWQwN2U3IHB5M2sKKzg3NzIzIDE4ZGJjM2JhMTZjMGVhZmQ4MGM2NzJmMzc4YTY3YzQ3ZjJmZWIxM2QgcmVsZWFzZTI3LW1haW50Cis4NzcyNCBjMDA3YzNkYmJkM2ZiZDllZTNiZDViODRjYzZjNzZmZWYxZTk2Yjg2IHJlbGVhc2UzMS1tYWludAorODc3MjYgYWQyZjM0MzgwYWFjODY3ODQ3NGJkNjUzY2UxMzk2YmNlYmRjNmM1YyByZWxlYXNlMzEtbWFpbnQKKzg3NzI3IDNlMWMzZDJhODY4OTA3MDVmMTM3Mjc2OTA0NWFkNmE5YmJkMzQ0NjIgcmVsZWFzZTI3LW1haW50Cis4NzcyOCBmNzhlN2RiMWQ1ZTg2NGVjZTc5OWQ5ZTdlMTk1Nzk3MzYxMWExMmU2IHB5M2sKKzg3NzI5IDQ1NDk0MjZlZTRkNjUyZWJjODVkYmZjYWMwZDIwMzY1MDEzMDY4YzUgcHkzaworODc3MzAgZjRhODA4ZjVhNjZkMWNlZGRjZTQ0MzUxODM3MDM4YzdmZTZjZjBjMCBweTNrCis4NzczMSBhN2QxNWRmN2Q2N2QzZjBmMTEzMWZlNDhjMDhlYmRlZDhkMDdmNWNiIHB5M2sKKzg3NzMyIDk4YzhhYTIzN2ZjMWNjMTM5OGUyZDhkNTcwMWQ4NTE2MDE0YWVkYmIgcHkzaworODc3MzMgM2JmNGQ5ZjE2NjBhNGMxZGNlYTUzNWI5NDQ0ZTY0OTJjZDY5MjQzZSBweTNrCis4NzczNCBjZDI3OTgyMDg3ZWFjNGJiMjQxOGU1OTMwYmI1YTcwMGM3YzMwYmVlIHB5M2sKKzg3NzM1IDhhYThkY2E0NjY4NGI1NGZiY2RkZWU1NzlkZjdhMWU2OGZiYmE2OTEgcHkzaworODc3MzYgMWU2MmEwY2VlMDkyMmMzZjlmYjgzN2M1MTlmOGEzOTMzOGUzYTM3YSBweTNrCis4NzczNyA2NDJjODgwNjgzMGY1ZmI0MjAyNDEwMWQxYTgxNzI5ZWJkNjg3YzcxIHB5M2sKKzg3NzM4IDIwMDQzZGE3ODcyNmEzOTRhMmIyYjZkMmEzMDUwZjYyYTU4NTFiMDMgcHkzaworODc3MzkgNjI5ZWIzYjY5OTA5ZjFjY2I2ZjFlMGFhZGVkM2ZhNDliNTA0YWE2ZCBweTNrCis4Nzc0MCAzNDc4ZDAwN2RmMjM3MjJkZjlmZDM3ZmIyZTdmNDVjZTA2NGNiNTdiIHB5M2sKKzg3NzQxIGEzYjdjMjkwNzU0YTBhMTUyMzgxYThjYTgxM2NiZWY5NzQ4OTZhNDAgcmVsZWFzZTMxLW1haW50Cis4Nzc0MiBhNmJjNDk3YjE5NjI0M2NlZDhlMzIwMTExMDFhOWM1YzRlN2Q4MzcwIHJlbGVhc2UyNy1tYWludAorODc3NDMgN2M1YzM3Yjk2MjgxNmI3ODc1NGU5MDVjYTlkZmQzZWI3NTkxN2Y3MyByZWxlYXNlMjctbWFpbnQKKzg3NzQ0IDhhZjZlOGZjMDIwNWJjY2M2NTgwMjdkMWVmMzc5M2NlNzYyNjhiY2IgcHkzaworODc3NDUgNDU1N2Q0OTVhNDg0NmMzZTUyMjVmNWZkNWEwYzZhNTQ4YTk5ZTI0NSByZWxlYXNlMzEtbWFpbnQKKzg3NzQ2IDA4MTkyMjY1ZDE3MmM0YzEwODk3NDdiNmMwODEyOTIzZDI0NzNjOGUgcHkzaworODc3NDcgYzBmZWY4YTE0NGZhZDk4ZGU4ZWQ2YWUwZDI5MGQzNTI0MDViMTMyYyBweTNrCis4Nzc0OCBlZmNiMTRmOTRlNzY5MTNiZGZjMTYxM2U3Njk4NzI4YWYzOTI2MThhIHB5M2sKKzg3NzQ5IGRkM2YyOGZmZDAyOTA4OWQwOGQxZjE2ZjM1MjhmNmNkMGI1ODk4NDQgcHkzaworODc3NTAgNDk3ODlhNTJhOTc2MjQ0NDMzNmQ0ODJjMjhlYjM2OTA2YzM2OWNiOCBweTNrCis4Nzc1MSAwZWZmYjE3NWM5ODE5Yjk0NDJlMjUwYzY0Y2NjOTg1ZTcxZTc0MDNhIHJlbGVhc2UzMS1tYWludAorODc3NTIgODVmYmQ3NzU1MzRlYjdkODA4MzZhYzhiZjU0Yzk5NTgxMWQ1ZTFkZSByZWxlYXNlMjctbWFpbnQKKzg3NzUzIGEwZDRlZGE4ZGEwYWYwZmU4YzA0MTY2Njk0MmMyMWE1ZWZhZTJmYTAgcHkzaworODc3NTQgNGNjNDdhOTA4M2UzODk5OTZmZmFkNGU5YjZiMzk2MjhiYjJmMTY4MiBweTNrCis4Nzc1NSA0YTgyYmU0N2E5NDgxYjFjMDNiYjk1MWFlOGU4YzY4YzVlOWEwMWUyIHB5M2sKKzg3NzU2IGRlODYyZGMwY2NjYWY2OTEyMWUxZThlNzQ4NDY5NDMwZTBmMDBlNGIgcHkzaworODc3NTcgMjk2MWFmODBkNTQ1NThiNjdlYzRiMzVjNzYzZjdmMzBkZGJiY2ExNCBweTNrCis4Nzc1OCA1MDYwYTkyYTg1OTdlNTBlZWUzOThhMTdjMGU0OTU4ZDU0M2JjOWRmIHB5M2sKKzg3NzU5IGU5MzQ4ZDY4Y2ZjZDAwMDhlOWQ4ODU2ODY5MjAxNDE2MTAyYjI0MjQgcHkzaworODc3NjAgYzA0MjViNWVkZTQ3YWQ2ZjJhN2QxMWI0MjAzNTE2ZmRkZmQwNzNlNyBweTNrCis4Nzc2MSBhNDRiYWRmOWUwMGY2M2QzZGM1ZGY5ZTlkNzA2MTAxNWJlNWZjNGRkIHB5M2sKKzg3NzYyIGJjNTdmZGQ4OTU2MmIxNzIzMTk4NzAwZDE4YTRhYTA5NDAxNzAyZmYgcHkzaworODc3NjMgNzk5Y2QxNTIzMTExN2Y5MzM5OTAwNTNhMGQ2ZmJkNDEzYmMxN2ZlNCByZWxlYXNlMzEtbWFpbnQKKzg3NzY0IGI3NDI2YmU2YmJiNGNhMWYzOGZhY2E3OTE1Y2UyZDg4MzcxNDVmZWYgcmVsZWFzZTI3LW1haW50Cis4Nzc2NSA3NDUyMjVhZTI5ZWYwODFiZmVkNjBlMWI3NTZhNWQxZWYzNWE0YzIyIHB5M2sKKzg3NzY2IDkxMmZkMjBkZTBlMDcyMGNiMDQ0ZmU0N2ViZTMwZjI3Y2M5MzZmMmMgcHkzaworODc3NjcgMTMyMzc0ZDUzN2U0ZDEwZDc2ZDZmZmU3NjhmM2U4NDJjYjQzMTg4ZiBweTNrCis4Nzc2OCBlZDAyNTkyMzA2MTEyYTBjZTJkNzAyMzI4MTg4ODM3MDczNTQ4ZTNkIHB5M2sKKzg3NzY5IGJkYjU3ZjQ2M2M4NWZiNTRmM2Y5ZDJkMTJlMGY3NDc3M2Y0ZTk3ZTcgcHkzaworODc3NzAgNGJmM2E1YTA0MTIwOTM3OWY3N2FkNzcxYTkwMzUzZDQ4NDQ1OGFhNSByZWxlYXNlMzEtbWFpbnQKKzg3NzcxIDA3NjI4OThmZDgwMjg2ZTg3ZmY5ZGFhMWQwMjY5ZDI5ZDFlZTAzYzQgcHkzaworODc3NzIgOGY1M2E0ZTg5NjMxM2M1NmRmZTc1ZjIxNDg1ZTZiNThjYzgwNTkzMCBweTNrCis4Nzc3MyBkZTM4Nzk0ZDE3NDk4OWEzOWVkNWVmMjE4NjVmMjY5YTljY2Q5ZDExIHB5M2sKKzg3Nzc0IGYwNmMyNzhiNGYyMTIzZWJiZWY3ZmMxYTQ0ZDkxZDQxMGE4NWUzZTcgcHkzaworODc3NzUgNThiNzg0NTUzY2E0ZjVhODQyZWYyZThkMmM5MTRhYjcyMzA3OWZhMSBweTNrCis4Nzc3NiA5MmY2MWE2OTJlMzk0MTMxYWRiMzVhMzBkNDY2YTk5Y2QwOTcxODM2IHB5M2sKKzg3Nzc3IDUxMGY3ZTI5ZTcyODE3ZWUxZjZhZDg5NDhjMWRiYmJmMzZhNTRmNWQgcHkzaworODc3NzggMjBlM2FmMWQ1MzBhOGZiMzk5MmM3M2MxZDY5MmY0NzU4YjczYTk4OSBweTNrCis4Nzc3OSBjZjllMWY3NDY0ZGM1OGVjZTlhNzcyZGRlZmFjNjM5OTA4ZjkzMDdiIHB5M2sKKzg3NzgwIDkyZjJkN2QyOGZlZWRiMzIwZDZhNWExZWU0NGYxZmJmZjg4OGZlNDcgcHkzaworODc3ODEgMzRkODkxNTgwZjM4ZDQ1NmYwMjM1MDA2ODQ2YzhiYmM0MzQ3NTFjZiBweTNrCis4Nzc4MiAyNDdiN2JhNmZmYWQ0NDg5MTg5MDdiNGI3ZDAxMTRkZGNhNmE4MjJkIHB5M2sKKzg3NzgzIDhjNDQ4YTQyNzdhMGQ0ZmI5YTY1Y2E1Y2Y4Yjg2N2Y0ODZhZTY5MDYgcHkzaworODc3ODQgYWJiNjg2YTVhMWRmY2Q2YzAyZmY0NTdhM2YyMjcyMmFjYmI1OGI0ZSBweTNrCis4Nzc4NSBjOWI0ODRmMmEwYjcwNzQ5NTdlYzI2ODU5YjE1OTljN2M1MjU1ZjM1IHJlbGVhc2UzMS1tYWludAorODc3ODYgNzFlMWE5OTYxODM2MTlhM2EyNjIzMDViNDhmY2RlM2MxZWE0ZGZkMyBweTNrCis4Nzc4NyAzZDgyNGI1MTM3ZGRiMTMzZGZlNTdhNTg2ZjU3MGEwNjUzNmRlYWYzIHB5M2sKKzg3Nzg4IGQ4MjRlOWNmYmVlODZkZjBhNWIzNTE5YTJmZTZmYjc2ZTM3MjcyNzAgcHkzaworODc3ODkgYTMyODhhNGUyZWFkOWFkMTAzNzZkM2JjYTQxZjIzZmMyNTU5ZmYwZiBweTNrCis4Nzc5MCAxNDIyODgwODljMWE0NjU2YTFhMmQ5NjJkOWM4ZWI4ZTNmMWYyMjEyIHB5M2sKKzg3NzkxIDVkNjY2ODU0ODQyODQyZjkxY2FhYTM1OWMyMThlNzJiYTMxZTAzNzEgcHkzaworODc3OTIgY2NiYzg0MjIyZmRhNThhMzYwNmNjZmI5NDljYzFkMjQ3YjVmNDI5YyBweTNrCis4Nzc5MyAxNzc0ZDZhMmY1YmZlZjhmMWU2YjQxNDU5YjE1NDg4NmNmNzVmMzlmIHJlbGVhc2UzMS1tYWludAorODc3OTQgMjY4MzZlNDdkZmI5MWM0NzFiNmExOTFmNTZkNWQ4NGM0ZTRiNmIxMSByZWxlYXNlMjctbWFpbnQKKzg3Nzk1IGQyYTY0NjEyZDIzNWI2ZWYyNDJlZDlhYzNmZTNkN2IyN2Q1MjgwZDIgcHkzaworODc3OTYgNjRjMjQ1MzEzY2ZmOWZkZDQ2ZTU0ZGNkM2M1YjM5OTgyNDRmNDAxOSBweTNrCis4Nzc5NyBhNGNmYjI3ODI0MTY0YWZkMWNjYjI1NWM3MjcwMDhhNGEwMWQ0YWE0IHB5M2sKKzg3Nzk4IDU5MTkyMjI5OWFjYzExMThhZDAzM2E3YWI4ODQxZmZmMTY5NzgwN2YgcmVsZWFzZTMxLW1haW50Cis4Nzc5OSBiMzMyZTczYjU1NjcwN2M0YTEwODhiMDA4OWQwM2U2NzE2MmM4YzE1IHJlbGVhc2UyNy1tYWludAorODc4MDAgN2U3ZmM5NGZkMGQ0MTRmYmVjMjMzZTdhMjRiNTI2NmI2ZmJmMzM5OCByZWxlYXNlMzEtbWFpbnQKKzg3ODAxIDQxOWNhMDg5ZDM2NWYzMDE0YTRlMDJiNTBhOTRlZjMwZjc2NWQ3MjEgcmVsZWFzZTI3LW1haW50Cis4NzgwMiA2YTFkMDgwNjIzZDc3YjgyNWMxZGU3NzI5OWYzODY4MzNiNmMzNWQwIHB5M2sKKzg3ODAzIDcyMjI2OTc5NjRmYzc0NDM5OWM4ZWUxMThiYjM5NDhhZDE1ZGQxZGEgcmVsZWFzZTMxLW1haW50Cis4NzgwNCBjN2ZkOWI2YWEwMDJlZTMwMWNlM2ZmOWU4ZTdjMTZmMmVlZGEwYmZiIHJlbGVhc2UyNy1tYWludAorODc4MDUgOGEzMDJhMDllZTgzYTc2OTA1ZWVkMmUwNTdmZmZlOGI5MGE2YjAzMiBweTNrCis4NzgwNiAwMjBkYTliODdkYWE4OTEzMzRiYjc4NDM4YTEwNGYwYWFkM2VkNzI3IHB5M2sKKzg3ODA3IDFkNGRjOWRmMjQ5NjcyODIzNTZmYjk2OGVhNDg0MDBkNjcyNDZjODQgcHkzaworODc4MDggMDFiMjUzMzMxYTg2ZTA2ODBiN2Q0YjdmYjRhNjg4MjNhODcyOWI0NiBweTNrCis4NzgxMCA3YmE1ZjU3Yzc0ZTU3NjI4Y2E0MWNmNTVmNjMwZDk0MmNmYjE5MWI5IHB5M2sKKzg3ODExIDdlNTc3N2UxZjBmZGEzZjEzNmM5YzE0NmU5MzBiYzJkYmIzMGEyOWYgcHkzaworODc4MTIgMTJjYzgxMDYyZDRhODRmNjcwYjhiYTg4M2Q0NmU4OTNhMDI1OWM4MyBweTNrCis4NzgxMyA0M2M4YzFiZGQ5NGZkOGFlZmU5ODg1ZTMyMWMxMWY4NjEwNzRhZGQ3IHB5M2sKKzg3ODIwIDgzZDNkNWUwNjg3ZWZlNGQxMTg4N2UwYmVhZDM5YmI3YTE0NWJiNGEgcHkzaworODc4MjEgMmVlNmI0NDRjOTNkZWU0ODUwMTE2MDYwMzRiOWQ3OWEwNDBjMGYxMCBweTNrCis4NzgyMiA1MjYwZmQxMmM3NjNkZGQzYzlkMzIzZjVkMzEzNDk1MzQxMmIzNDY5IHB5M2sKKzg3ODIzIDBiMGEyYjZjM2FkOTgzNTc3Yjg0MjcyZGQ1YjZiYzQ3OGU5OWE2OGMgcHkzaworODc4MjQgMDkzM2MzNzUzYTcxMmI5ZjhhZjJkMjNlNDBhZTBkZGExZjhhYzI1NCBweTNrCis4NzgyNSAxNDI3MGZlODRkYzc3MWY5ZGRmODY3NWRkYTliMDA4MzY0ZDQxMGNiIHB5M2sKKzg3ODI2IDNlYTI4MDk5NzAwMWQ0MjNhYTRhOGYwNGZkZDg2YzkwZWE5NDRhODcgcHkzaworODc4MjcgMzc3ODE1OTg1Y2FmMGQwM2MzZTM2OGI5YjQ5MDNhNGMzY2UwOWFlOSBweTNrCis4NzgyOCA1ZjhlYjllN2FjZGMwNjVhZTNhMDA2ZTE3OTFmZWVjNzkyNjU4M2Q2IHB5M2sKKzg3ODI5IDEyMDc0ZjNhYjgwOTVmOTFhNDczNjhhYmFkNzFkMWY2ZmFmYzVhMTIgcHkzaworODc4MzAgZGY5YTA2MTYwMDRkOTJlOTdmODcxYThhOTVkZTM5N2QwZDkwZjU5YSBweTNrCis4NzgzMSAxMzNkZWU4MmEwMDk2MTZlMWMwZGNjZmE1ZGJhOGY5MmIxNzMzODkzIHB5M2sKKzg3ODMyIDNlNzVjZjNmNjM1NTU2N2RkYTg2ZjBhNjY3ZmE3NzcyYWQ2ZTk4ZmQgcHkzaworODc4MzMgNjY1ODdlOTBmZGZiNjI3Zjg4YWIxYWM3YTI5ZjMxMDRkYTJhOGZkNCBweTNrCis4NzgzNCBmNTk1MGRmMDNjZTIxMGM1MGNjZDk2NTFlYTRjMDY2Y2JiZDk0OTMyIHB5M2sKKzg3ODM1IDZhNTcxMTk2NTU3MWFiMjA2YjU0OWVmNGYwMDYzNjY5MGQ0NjE3MTUgcHkzaworODc4MzYgNTRmYTYyMTY1ODUzMzViMjNhYzU0ZGMzYmVmZmFkZWI2NWI0MGU0MSByZWxlYXNlMzEtbWFpbnQKKzg3ODM3IDBkZTE5MDVhNzYxZjg3YWQ4MjM0NWM2NmY0YWUzMmNjYjM1N2VmODkgcmVsZWFzZTI3LW1haW50Cis4NzgzOCAwODBhMGU5NmI0ODJiMTNjMDg4N2NlMmViNjI5YTcwNzc3YTQ0ZGI2IHB5M2sKKzg3ODM5IGIwYjc5YzM3MzRhY2RmYWY5ZmY0M2U3NWZlMzlhOTAwZTZlZDI4NzkgcHkzaworODc4NDAgY2FkMTgxMWQ5ZTEzZTlmZTgxNWQxNDc4NzhlZWMzMDYwNDdmYWMxZSBweTNrCis4Nzg0MSAzOTdiOTlmNTkxMmU3NmI2YzU3NTExZmY5ODdkNTE5MzliZjczM2RlIHJlbGVhc2UzMS1tYWludAorODc4NDIgNjMxZTgzMDAxNmMwZTc0ZjVkOTM0YWQzNWYwN2ZiNGE3Y2I4YjUzNSByZWxlYXNlMjctbWFpbnQKKzg3ODQzIDMxNDY1OTY4YWUyNjM1YzY1ZjcwN2VlODI1ZmQxZDE0MmFkMjE2NGQgcHkzaworODc4NDQgYzZiOGM1YjU2NGE4YzQ0ODYyNjdiMjg5YjUzOTJiMzU0MTI1ZDcxZCBweTNrCis4Nzg0NSA4NzU3Y2Q2NTkyOTE5NGE0YjRjODBhYzBjZjNkMDhmODY2NThmYmFmIHB5M2sKKzg3ODQ2IDI1M2Q5MWU0ZjY3MjkxNDQyNTY4OTZmMGNjMDY5NmM1MTVlYzI1NDAgcHkzaworODc4NDcgM2I3OWVjODNjZTIxNjY2ZjRiNTA2NWE3NzVjODk5MWQ0ZWFmMzljMCBweTNrCis4Nzg0OCBlNDgwNjA0NzY3YzRkMzEzNzgyMjc4MjYwOTIwNWJlYzQ0MTU3ZGNhIHB5M2sKKzg3ODQ5IDE1OTY3YjdmMDU4ZjFiNzgyYTlkMGI2MWZmYWI0YWIyMWViOWE0OGEgcHkzaworODc4NTAgMGUxZjRkZjQ3OGY2NjhhNzRkYjE3ZGQ1YjdlNTViZjc1NTBjY2E0NCBweTNrCis4Nzg1MyA2NDkyYTcxMzg4N2U4ZDkzNTBjZDA2M2U4YzRkY2MzOTMxZjVhMDI0IHB5M2sKKzg3ODU2IGRjOWE1NmRkYTQyODdmNzc2MDg2NjQzMWQyYjIxYTY5ODQyMjJhZDcgcHkzaworODc4NTcgOTBjYmE2YTY3MmYwZTliZDdjM2I2YTU0YmY1Y2I5OWM2NjI4ZjZmOSByZWxlYXNlMzEtbWFpbnQKKzg3ODU4IGQ2NTY2YTcwY2FhMGE4NGI0ZjIxN2EyYTdlN2YyMDQ2Mzc1Njc4OTQgcHkzaworODc4NTkgODIzOWVjNmYzOWU2MjU1MTA4OTdlOTM3ZTlkZmU1NWRjMGZjZmJiMyBweTNrCis4Nzg2MCBjMDNmNjRjNzFiMDVhY2UwZWNiYzVkMmU3NjdmZTZjYjI4ZjUwOWM4IHB5M2sKKzg3ODYxIDA5MzIzYzkxMTA5ZDJmY2UxZTU3MDU1Mzg0MDQ3NjVlYmU1NWU0ZDYgcHkzaworODc4NjIgYzZkNDUzNDU2MmY0MGExMjcyZGNjY2U4MTFkM2E2NTIyYWI2MGU3MiBweTNrCis4Nzg2MyBmMTJkYTUzYjhkNjgzMDU2N2ViNWJlNzgyOWNkYjljZmQxNTQ3YmMyIHB5M2sKKzg3ODY0IGFiZTIwMWRmZDNkY2UyZmI3MTE4ODllY2RhZGQ2ZDY0M2NlM2VkYTQgcmVsZWFzZTMxLW1haW50Cis4Nzg2NSAwNzU5NzRhOTBjMzFiMGM3ZWUwNWUyNmQ4MjY1M2Q1NDU4MjQxMDliIHB5M2sKKzg3ODY2IDRkMTkyNzA5MWIzOWY3OWZhMDRiMDUyMzBiYjI5MDJhOWZhOWZlMjEgcmVsZWFzZTI3LW1haW50Cis4Nzg2NyBlYTBiOTRkNDc1NGQ3NTViZWZhNDg3NTZlODBhYzIxY2QzNmZiZTNmIHB5M2sKKzg3ODY4IDIwNTE3YWEzYTM1ODlhYzYwODlhOGY4MWFiMTBkMWU3NTkyZGIyYjkgcHkzaworODc4NjkgNzI2M2JkOTBlMTEwZDQ2NmE0NGQyYzhmMTJhYTc0ZDNhMDQyYzU0MyBweTNrCis4Nzg3MCAzZWQzYzdjNmI2MDVkNzgwNzBlMGJhMTUyOTNkNDI0N2MzZTU0MTc1IHB5M2sKKzg3ODcxIDFmNzFjNDNhZDdlMzM4ZmYzMGU1ZjczZTA5M2FmYjhiYmVjYzVlOTIgcHkzaworODc4NzIgNjE1Nzc4YmU5OGU5OTUyNWU3ZGZlMjcxMjBjZGUwZjIxNTg5MzkzZCByZWxlYXNlMjctbWFpbnQKKzg3ODczIDhiYmZmMWMyNGEzMTJhMGJmNzMzODQzOGViOTY3ZDNiZDYyYTBiMjQgcHkzaworODc4NzQgOTY2Yjg3ZjIzOTVjYzljNzJiNjlmM2RhOTRhMTljZjU5YjA3ZmVlOSByZWxlYXNlMzEtbWFpbnQKKzg3ODc1IGFkYzdlMTY3MWQ4YzM5NWEyYjg4ODU2MzBlMjQ0YThkOGU3MWMzZmYgcmVsZWFzZTI3LW1haW50Cis4Nzg3NiA5ZjEzZGM0MzlkYzUxYzY5NTVkMjJmYmFlMmVhYWM4NDUyN2Q4YTJhIHB5M2sKKzg3ODc3IDE5YzA1MDUxYmYxYTAyZDIwZjhkMjEwYmU2MDU1Mjc5YWQ0OTA2MDggcHkzaworODc4NzggOWIyZTYwYWU0ZmVmOTdkYjMwZDczNzJmYTFjNmVmMmU1YWFhMzYyZSByZWxlYXNlMjctbWFpbnQKKzg3ODc5IDdlYzIxNjUzYTRkMWU1NzJlNjdlODVjMzQ5NGY5NmRlYmQ3ZjQ5ZGYgcmVsZWFzZTI3LW1haW50Cis4Nzg4MCA5NTMwMWE0Mjg1MmY1NDI1ZTlhZTEwZDlhODFiY2FmMTE5NDEyOGYzIHJlbGVhc2UyNy1tYWludAorODc4ODEgMmU3NDM2OWI0ZjQwNjBhYzY3NzljNjI4ZjNlYzBlYzNiY2NjOGYxYSByZWxlYXNlMzEtbWFpbnQKKzg3ODgyIDBjOTRjNjgxZmM1MzIwZGMyODA4ODEzMjM0ODdkNDZiOWEwYzQxYjkgcmVsZWFzZTI3LW1haW50Cis4Nzg4MyBlNGQwN2E2ZjdhYmZjMTY2MTlmYTU4OTMxMWNjY2M5YWI1ZmU2YThmIHJlbGVhc2UyNy1tYWludAorODc4ODQgNWFiOTYzNjRlNzYxOTAwZDQ1MzJhNzFlNzhkOTQyYzRkZjkwYmJiNiByZWxlYXNlMzEtbWFpbnQKKzg3ODg1IGRlNzYyYjAxYzM2NjRiNDk0N2NhMzgyMzVlYjliNTYxYTIwOTllM2EgcmVsZWFzZTMxLW1haW50Cis4Nzg4NiA1OGExYjdlOGU3NTMyMzY5ZDBmYzVmOTllYmMxM2Y3ZjFkNjYzZjM0IHJlbGVhc2UyNy1tYWludAorODc4ODcgNWY3NzkwN2IwMDQxZTdlMTJhOTE0ZmY5YmJmNTZmNTQ5MzdjYjExMyByZWxlYXNlMzEtbWFpbnQKKzg3ODg4IDRhZDYxOTZmMzBhNWIyMjA4YWZhNzY5MmU4OTdkMzJlNGFiNTQwYTYgcmVsZWFzZTI3LW1haW50Cis4Nzg4OSBlMWI4MGUzOWU0MGYzMGMzMjc1MGEyYjI5MTc2ZjA1ZjdjNTdmZjUyIHJlbGVhc2UyNy1tYWludAorODc4OTAgYjMzYmY2NjRjNDhhYTQ5NWU4ZWI5NzIzN2JiMmI3NjIwZWRiNGEzMSBweTNrCis4Nzg5MSAxNTcxY2MwNzJmYzJhZTMwOGU3OTk5MzQ3NmQyYmRhZjg0YWExNzU1IHB5M2sKKzg3ODkyIDY4MWQwNTQyYmJiZDA3ZTY0Mjg5ZTM5YzcwNTM3MzlkMDZmM2JkMDggcmVsZWFzZTI3LW1haW50Cis4Nzg5MyBmZmIyYzI0YmNiNjI2ZGQ4ZTEyZThmMzM0OWEwOWEyOTkxYzkzNDA0IHJlbGVhc2UzMS1tYWludAorODc4OTQgNGJkMjk2YzQ5NTI2ZjYzNTAzNTYxYjI0Yjc3MmM2MTQwY2I1M2M1OCByZWxlYXNlMjctbWFpbnQKKzg3ODk1IGEyMmQ2MWJlNDg0MmI0MGM3NDU0NzlmMDlkYmEzZTlkYzllNDIwYTggcHkzaworODc4OTYgZmU2ZmNhZjdiYjE3ZGE0ZmYwNTk1NGNhYzZiOTdmMTU3MzUyMzM1NSBweTNrCis4Nzg5NyBmOGM2ODMxODRhZmZkYjdmZmZiYmNiNWJmZTQxOTJkNTkzYzQ4Zjg5IHB5M2sKKzg3ODk4IDk3NGIyN2M5ZDg0OWRmNGM5ZDVhMjMxNjY5OGJkZmZmNDA1ODg4OGEgcHkzaworODc4OTkgMWEzN2Y0YmExZjkyMDE4M2ZlODIxNjcyYTQ3M2YxODNhODdkM2RkNyBweTNrCis4NzkwMCBjMmM0YTk5NDQ1OTZmNGMxMzZlMDQ4N2RkM2QzZWUzY2Y4NzNmYjcxIHB5M2sKKzg3OTAxIGM0YTUyNTI2ZTc3ZmE2NDIxNmRiMzRiYzAzN2NiODc3YjliMjM0NmYgcHkzaworODc5MDIgYjVhNzliNWNhMjAzNzJhNjAxN2I0YWFiYWY1ZjcxNGY5M2NhYzVmYSBweTNrCis4NzkwMyAzYzEyYWI5ZTIxNGU5ZWNkNTE0MGUyMTIyNDM3YjJiOTgyNjc1MGI0IHB5M2sKKzg3OTA0IGVhM2FjNjJlZmU2N2NkNGNkZjdmYTI3NWM4YjBmNDdmZjM0YjVjMzYgcHkzaworODc5MDUgYTJiMTYxZjE3NTI1MmZkZTdkMTRmYmNmZWNkMWU5N2YwMDUxZjgzZSByZWxlYXNlMzEtbWFpbnQKKzg3OTA2IDU2N2Q5NjFiZTA4M2M1NzRlYTYzNGQ5MTVjMGQxOTFkYmVjOGIwZTQgcHkzaworODc5MDcgZWM1ODg5MDk3NWYxZDJmMGNiZmM5YWJmZWJmMTZkYmViMjBjYmY2OCBweTNrCis4NzkwOCA5ODU1YzhjY2NiMzZjMGUwNGFkMTk1NGQyMGU3N2VhNDhjN2MwNmZhIHB5M2sKKzg3OTA5IGRiN2EzMmQ5MGNmNGEyZDkzNThiNzBjZjM0ZTlkNmNkNGZlMzNjODQgcmVsZWFzZTI3LW1haW50Cis4NzkxMCAzZTZkZTg4NTFmMjMxMDE2NWY3OWQxZWIzNDBiZDA1ZDYyMTFkOTdmIHB5M2sKKzg3OTExIDE0NTA1MjFiOWQ5M2Y0YWMwZTVlYWE2MmRmMTFjZmQ4YTMxMDdhMTAgcHkzaworODc5MTIgZTBhNjZhYTM0MjdhNjk2OWIzY2E4MzExZDBiYjgzNzVkZDRlYTI0NiBweTNrCis4NzkxMyBlNDdkOGQ5NTViZDYxMDgzZGYxOWMzMWRiYjM2YjIwNjkzODQ4MGMzIHJlbGVhc2UzMS1tYWludAorODc5MTQgYWU5OTRiZDQ2NjE3OGM5MmU4OTNmZDQ0MzVmZDBhYzNhZDY4ZmU5YiBweTNrCis4NzkxNSA2NWFkZDdhNDBmNzAyMmYyOWM0OTA1YjM2MDFkMTI4MjlmMmI2YjQ3IHB5M2sKKzg3OTE2IGVkZjMwMWFmMjYxNjEzYWRkMGI3MzlkMzk1YzcxYjY1NWFmODY5MTcgcHkzaworODc5MTcgYWM2Y2MxNDA0ZTE1MDU3NDQwZWNlYTgwNmM3ZmEwMDdmOTdlNTgwMCBweTNrCis4NzkxOCAxYzY1YWI0NGQzNjcxYjNkNDhmY2E0MWI2MjdhMTU0NWUxNzBiYTE0IHJlbGVhc2UyNy1tYWludAorODc5MTkgZDcwNTIyY2M5ZDRmZTdhNjQyZTFkNTczZjE5N2JkNzBjMDFjMTRjMyBweTNrCis4NzkyMCBhZDBlYjU3ZWIyYjViODc2ZDk3YTA3MzUxZTU5ZDJhOGJmMTExOWNkIHB5M2sKKzg3OTIxIGMwZjNhYzE5MzkyYjYxOTM0MzhmOGZlZmNjNDE1YmUwNThjMTA2MjcgcHkzaworODc5MjIgYjE2YjBkNzU0ZmM5M2E1N2VhYzZkOTEwMTZmMGU4ZmViODZjZDEyNiBweTNrCis4NzkyNCBkNTczOTcxMzExMjQyYWU4ODJiYzBhYjllMDU5NTYwODQ2N2UyYjNkIHB5M2sKKzg3OTI1IGRiOGQxNTkzMzEyMWMyN2ZiNjBlZjdkOWZhNGI0MWMyODJlOWYyMDkgcHkzaworODc5MjYgNzhmZjA4Y2NkMThiN2ZkYmE5ZDFmYzkxZWI0NDRlMjUwN2RmMDNmNCBweTNrCis4NzkyNyA3NTEzNzJiNzllZDY5MjVhNzcxNGM0NTVkMmY2N2IzNWJkMjMxYjc3IHJlbGVhc2UzMS1tYWludAorODc5MjggMjA5Njk4MjFiYjYxNGEzYWI5NzYyNTJkZTMwNzkyODI3Mjk4ZDI5NSByZWxlYXNlMjctbWFpbnQKKzg3OTI5IDdiNTE1OTRhMTVkZWQxNThkNGJiMjc0Mzg1ZWViYzJjOWYzNmU4NmUgcHkzay1jZGVjaW1hbAorODc5MzAgZWQ2ZDA1M2VlYmE1ZWI2NzJlODg5ZGM4ODk1M2EzNmM4MTBhMjQ4NSBweTNrLWNkZWNpbWFsCis4NzkzMSA5ZmEwN2U3Y2RmMzg2MmFmNTA3ZjMzOTVmZWViNWEzMDIyNGMxYjBlIHB5M2stY2RlY2ltYWwKKzg3OTMyIDRiNDY5Yzg3ZDdlMmVhODEzMzUyMjQzOWZlMTFiOTI0NzhjMzg0NzIgcHkzay1jZGVjaW1hbAorODc5MzMgODMwOTUyYTcxZDIxNzdkODFhNGFkZWZhMzNiNjZjNzlmYjQ1OTQxZCBweTNrLWNkZWNpbWFsCis4NzkzNCAwNDhhZDA3MTdhNDUyMjlhZjMwYjc4YmM5N2RhNGEwODRiOTczM2FkIHJlbGVhc2UzMS1tYWludAorODc5MzUgZjgyN2Y3MDNlZjY1YzBlNDAzYzJlYThjZDU4OWQyMmQ3ZDM2YWUyZSByZWxlYXNlMjctbWFpbnQKKzg3OTM2IGEzYzM3OTU4YTIwOTQ4ZGM1OGExZDIwZTM3OTQ3MWVmNTRjMzQ0YjUgcHkzay1jZGVjaW1hbAorODc5MzcgNzA3Zjg5MjdkNjYzMDYwYjdjMmVjN2Q2YTEyZTIyY2ZhMjkyMTY3ZiBweTNrLWNkZWNpbWFsCis4NzkzOCAyMjQ0YWM2YzJhOWJmYmZkM2ZjNmQzMThlNDMwNmU1MzE2ZmE1ZDhjIHB5M2sKKzg3OTM5IDU0Yzg2NDQ0NTNmOTEzNGRjMWI4NWRlYzVmMmE3MGUxZDM5NTRmMDggcHkzaworODc5NDAgYzBiOTVjZGFmNDYwYTJhODIzM2ZhYWZmOTA3ODY0MGYyOGUyOGZmZiBweTNrCis4Nzk0MSBjYjc1NGE1ODJiMzQwYzU5MDE5YzRkNDMwNDMwNzgyZTdlYWU3ZWViIHB5M2sKKzg3OTQyIDI1ODFhMTdiMjlhZjAzMzE5MjI1YjAzYjg3YjAwNDNiMWRlYmUwNGIgcHkzaworODc5NDMgZGYzNGJiMDg2OWJjODUyZDRiNGZkMDdjZTI2N2IxY2E3NzA0NDUzMSBweTNrCis4Nzk0NCBlYzk2YjViNTcyM2JjZjQzMjY3NTAxMjQ1YzQ3Yzk4YmU5Y2Y3NDE5IHJlbGVhc2UyNy1tYWludAorODc5NDUgMWIxYTY0Mjk3MTQ5N2FkMGNlNTgwZDY3MWFmODMxNzdmYzYyOWZjYSByZWxlYXNlMjctbWFpbnQKKzg3OTQ2IDdmMGQwYzlhMmQ3MjkzOTljMmYyOGNjMzkwMjhjYzUyOTBmY2FkNjYgcHkzaworODc5NDcgMjY5Y2Y0NmMwOWFmNWI4MzM3YjkwMjE3YjIyNjkwMjQ2NGFiMjliNCBweTNrCis4Nzk0OCBmZWY1MjFmNDVhZjNhOTBhNjhiNjc0MDk3MTUzM2Q1MWE3ODM3ZGQxIHB5M2sKKzg3OTQ5IDQ5YjBiMmJjMGU4MzMxYmRmOWU0MjBiZGFmMzJmODFiZGYxYjZkOGYgcHkzaworODc5NTAgNDM1MDcyMWRlZTU1M2YzY2M2MTVmZmI0NjQzZTcyZDIxMWMyMGFlNSByZWxlYXNlMjctbWFpbnQKKzg3OTUxIDYwMDkzODhjYTVhMjNmZmNhYjc2MjE1YmYzZjliYTFjOThhMjFjMTEgcmVsZWFzZTMxLW1haW50Cis4Nzk1MiA3NGJmOTNiZTU2NzEwMmQxMThmNDM0MjgzMzRmY2E5NWUzMTQ3YTJlIHB5M2sKKzg3OTUzIDYwMWJjYjZmZjc1MmQ3NWM3MDJmMWJjZWIyNDgwZDE3MDNiNmE3ZjEgcHkzaworODc5NTQgMjM2ZTExYmExOGM1NzM5NmQ1NzJlNGI4MmU0YTU3MWVmOGY5MzZmMyBweTNrCis4Nzk1NSAyZWExY2ZkZjkyOWJlZTA5Mzg2ZTU2M2MwYzI0MTE0MDQwNzA1NmYwIHJlbGVhc2UzMS1tYWludAorODc5NTYgZGRhYTE3YzA5OGQ5M2RlZGM2N2NiNzZhZjYwN2Y4MjM1NTk0MWFlMyByZWxlYXNlMjctbWFpbnQKKzg3OTU3IDkxNDQ2ODE3Y2MzZThlNzNmY2U0MGE3OTNkNzUwZGMyNjBlNTA4ZmIgcHkzaworODc5NTggYTUwMjE0OTY2ZDI0ODJlYTZlZWFlMjdmNmVjYjJhMDc0YjE2YzBmNyBweTNrCis4Nzk1OSA3N2ZlM2YxNjA4N2FmOWYxYzczNWU2MWE4YWVkMTAxNGRlNmRlYTNmIHJlbGVhc2UzMS1tYWludAorODc5NjAgYWVjY2JkMTY5NzBmOGY2NWEyMmY2YTU3ZWYwOThlZTMwZThkOTQyYyBweTNrCis4Nzk2MSBlMTUyNjBhNDRlNDQ3OGZhNDZkZjcwYzJlYzc5MjBiMDNkYWEzYWZmIHJlbGVhc2UyNy1tYWludAorODc5NjIgNTA0OGIyNzIwMGQ3NGExMDc1Y2ZlNWNiZTNlMDc1ZTUyZWVlYWVhMCByZWxlYXNlMjctbWFpbnQKKzg3OTYzIDZjYzUyNzdmNWU3YWEzMzM1MjFlYzc0NTZmZTE1YjNlNmFlZjdhZjAgcmVsZWFzZTMxLW1haW50Cis4Nzk2NCBhYzBlYjVkZjJjMDViZWMxOGUzYTk3N2MyYzljMjA4YTU4YWM2ZDA5IHJlbGVhc2UyNy1tYWludAorODc5NjUgZDEyMDIxOGQ4MGFiNDNiNGM3ZWU5MmEyNWJhYWYzZmViZDNmMjFkNyByZWxlYXNlMzEtbWFpbnQKKzg3OTY2IDNlZWFlY2YwMDVjMTRkMzhjNGY3ZDIwNWEzNTlkYjFlZjY5YzQzMmMgcHkzaworODc5NjcgNmRjZDQ5MTUwNmVkNTA1MzMxODg0NzJhNTk1OWIzZDgyYjdlMTQyYyByZWxlYXNlMzEtbWFpbnQKKzg3OTY4IGI5YjU1MWVkMDg1OGQyYjdkYjE0MzNiMDMxZTgxNWQ0NDIxMjcwMjggcHkzaworODc5NjkgNDVhMzkxY2RjNjhhYzI4ZGNkM2Q0YWJmOGEyYTBmMjM2OWZhM2YxYSBweTNrCis4Nzk3MCA0YWJmYjc2NzBlYWRkYTkwN2JkNjFlMjJlMTUyMTk3MDIzMzYyMWY4IHJlbGVhc2UzMS1tYWludAorODc5NzEgNDFiZGMwMzJlNzFhY2Q3ZjQ0NTU1NGE1MTFlYWE5ZjVjYjA2NjA2ZiBweTNrCis4Nzk3MiBlMWNjMzU3Mjg0ODFlZWRkNGI3NTNlNjBhYjcxYWYwMmU3MzkwOWU5IHB5M2sKKzg3OTczIDRlODZkNjk1YmE5OGE1ODIyOWRlNDgyZTM1MmQwYjY4M2Y5NmUxYTIgcHkzaworODc5NzQgYzY2OWE2OTc2YmY4Y2YyYjdhNzQ3MzYxMDVlNTUyZWI0YWIwMjVlZiBweTNrCis4Nzk3NSBjY2JkNjU4N2Y4ZWQ1Yzg3MjJkMDQ3MjI1YmEzYzAxZTE2NzBiZGJmIHB5M2sKKzg3OTc4IGY5MTZjMmFhMjM4ZmU4YTIwY2U2NThhMmI5ZmFhMDg1YWQwMzQ2OWMgcHkzaworODc5NzkgZWZkZjI1NjE3YjdjZDQyN2VhNDdiODk0YmVjM2I4YWMyYWU5ZTU0OSByZWxlYXNlMzEtbWFpbnQKKzg3OTgwIGUxMjVkOTJmNzQzOGUxMmZmZjhmM2NkM2RjNjU5OGM3M2MxODA1MDEgcHkzaworODc5ODEgODcxOWRkNzEyMzg0ZGI1OTY5YTUyOTNlZDJhNGRjMTk3M2U0M2ZjYyBweTNrCis4Nzk4MiAxMGQ2N2RiNjc5NDIwZjRlNzUzNzk1Y2I0MjYxOTVhNDZkZWQwZmJjIHB5M2sKKzg3OTgzIGNiZGM4YjFlNmJkMzljYTFjNWE5YjRjMGM3OTY5MTYzYzAzYmI3ZWYgcHkzaworODc5ODQgNGVhZTMzZjM3OTdjNWQxY2QyMmU2OWQ0OTg0MWZlYjdjZmU4NzczOSBweTNrCis4Nzk4NSAyNWQ1M2U0NDk3ZDg1MjdkODllMjYwMGI3ZDg1ZDc5ZjBkOWExM2VlIHJlbGVhc2UyNy1tYWludAorODc5ODYgMmYwODk0YzAyYmYyYjg4Y2EwMjJmMTlhM2U5MmRjZThlZjgyYjgwNyBweTNrCis4Nzk4OCA3Y2JiNWYzYjY5NTRiOWFjMmYyNWIyOThhNTFhNmIwMDRiNjRmYTVmIHB5M2sKKzg3OTg5IDdkNjU4YjQ5YjNlMTRlOWIxNjNlYzJiM2JjMTZkOTQ5MWQxNDUwMTAgcHkzaworODc5OTAgM2FjOWI3Y2Y3NjE0Y2RlMDJmNWFkYTA1MzQ1YjMwM2I4NTZhYjc3MCBweTNrCis4Nzk5MSA2MDhmM2E2MTU4YThjODEzMzc4OTA3NTMyMTYxZWIxNTU1ODE5YThiIHB5M2sKKzg3OTkyIDQ3NGIyY2UwNzk0ZmZhZmZjYWU0ZTM2ZGM1MWZkOTUxZjQ1NWExYjcgcmVsZWFzZTI3LW1haW50Cis4Nzk5MyAwMzUzYjE2MTNhYTgxNGJjNmM5M2UyNDQ5ZTIyMzQ5YmUxMjg4YTQwIHB5M2sKKzg3OTk0IGYxOTgyNGFhYjM5YzgwYmQ0NmNlY2NmOTg5YmExNjAzY2ZhOGM2MWQgcmVsZWFzZTMxLW1haW50Cis4Nzk5NSAyNDRhMjc0NzczOTZkNGEyOTgwNGE0YmZiYWFlMTA2OGMzNzJmOWIxIHJlbGVhc2UzMS1tYWludAorODc5OTYgZjZlOWFjNGI4ODEzNmIzOGQ5NDdjMWU2MDE1ZmZhMjkxYWYxNmFlYSBweTNrCis4Nzk5NyA3Zjg4ODhiNGZkZmNhZmU5YTNkMDBlODIyMTlhNjVjOWUxZmU3MzdjIHB5M2sKKzg3OTk4IGQ4NjQzMjhhNzRlNDE0MmFhMjg2ZjgyMmM0YjgyN2QxYjcwY2Q5MzAgcHkzaworODc5OTkgOTZmZmU0YTMxMWRkNGQ1ZjA1NDhjM2JkMDVkNGUzM2JlZTRjZjM2ZSBweTNrCis4ODAwMCAzNTkzYjBkOWNhYTc0YzkwNDhiMDlkODRlMDE5ZDQxNzVmMDBjMDI2IHB5M2sKKzg4MDAxIGZlYmUwNGE2ZDQ4NjRkZDg4YTg4MmYxN2YzM2YwMTAyYjQ3Zjk2MjMgcHkzaworODgwMDIgNDQzMGU0ZDYzNTk0N2EyYTE0YmQ1OGIzNjQ0NDIyNTg4MWE1YjIxOCByZWxlYXNlMzEtbWFpbnQKKzg4MDAzIDE4YWI4ZTBlNjcwMjViYzMzOWJiNDJkZGJmM2JlMDQ4OTMyMjI5YTYgcHkzaworODgwMDQgMmFmY2RmNjhhMzg5MWY3OTUyYmExYzhlMzMzMzRkMzc5YjY0NTAxZSBweTNrCis4ODAwNSBiMDRkYTU0NGUxM2JiZjU0M2Q3ZmNkZjJmY2I0NDAwNTZkNjgzNjE5IHB5M2sKKzg4MDA2IDQ4NDU0NzY1ZDhlMGNlNjU1MGEwNGM0ZDUzYWIzN2EyOGE5N2M4NjggcHkzaworODgwMDcgOTExZDBhNzQ2MDllMjE4MDIwZDNkZmUyZWQwYTE4NGMwNTBjNTUwOCBweTNrCis4ODAwOCA3YjJkN2NlZGFmYjBhMTE2MmYwZDI1YmZjOGZiNjBjZGY1NzBjM2U1IHB5M2sKKzg4MDA5IDBiNGM5OTUyOTlkZGNlZGQxNTI3YTJjZWNlMmI5MDdhMjZlZmIxMjYgcHkzaworODgwMTAgNGRjNTUwMzczMWZlYTE3NjdjZDZjYWU4ZWQ5YThjMGYzYWUzOWRlNCByZWxlYXNlMzEtbWFpbnQKKzg4MDExIDI5MzAzOTNmMGJiYjkxZGE1YzRlNjA0NTVhNWU2ZGFlNDFiODNhYTEgcHkzaworODgwMTIgYWUwOTk0NTgzMzQ1MWJiOGNiNWM3MzE5ZWYxYWU3OWY5MmYyZTk5OCBweTNrCis4ODAxMyBjMGM1OTRhZWY4NDIzNWU3MDBhMmYzMmFjNmY0OTI5ZGJiYmM0M2ExIHB5M2sKKzg4MDE0IDM5NjlhNmNhMTZhZjI5MTc2YzQ4NjUyODNiODZmMmUwOGRlNWQyOWQgcHkzaworODgwMTUgM2Y5OWMzNmQwMGI4YWQ1ZjI3YzU2OWVjMDE4NjcyYzE2Mjc1NzE1ZiBweTNrCis4ODAxNiA5M2I3YzA1ODBjNDM0NjliZmJhMTdjZjUxMTg4NDVkOGMxNGEzNDJlIHB5M2sKKzg4MDE3IGYxMzBiZTAxZDIzMDBkOTk0MzJmM2JhZWNjZWYxZjRiYWY3OTEyMzAgcHkzaworODgwMTggYmVlYWIwZmE0MWU1ZWFmZjY5NmFhZTU5ZjIzMmM2YjQ3ZTAwMzcyYyBweTNrCis4ODAxOSBiMDM3NDdhZGE0NGQ2YTgwMjUxMzYxMmEyYTQ5OTA3ZTJiNzM3NjE0IHJlbGVhc2UzMS1tYWludAorODgwMjAgZWYwNzc3YWY5OTc4ZWUyYjI3ZjQ0Yjk4OWY2YWNmZWY2ZjRjMDViMiByZWxlYXNlMjctbWFpbnQKKzg4MDIxIGI4Zjk3ZDhjZDQ4NWYyN2FkMzVjMzNkYmRhODRhZDA0ZjIwZWIwMjIgcHkzaworODgwMjIgM2MzMTYyMzZlYWJkMmFlZDc3ZGI1OWRkMDZmOTc0OGRlOTIxNjRhNCBweTNrCis4ODAyMyA0MWQ4NzRlY2JkODFmYjQ2NjE3Zjc4ZGIwMTVhNTRlMGZmZTg3OWFlIHJlbGVhc2UzMS1tYWludAorODgwMjQgN2FjYjgzOWYzNjEzMmViNDhhYzZlODBmMDY1YWUzN2NhOTdiYjdlYiByZWxlYXNlMjctbWFpbnQKKzg4MDI2IDhkZGNhZTJiNjRiNDcxZmQzZWVhNzAyNDljMjJhZjczNDJkMjJlMWEgcHkzaworODgwMjggNGEyMGUzY2EyNWU5YWQ3ODE0MzRjZjgxZjVhYzM0ZjQ2MDg1OGRmMyBweTNrCis4ODAzMiA5MDc2ZTQyMjBmYTRmMGQzNzBlNzA3NGVlMjAyN2JiZTAxZGVmOTU5IHB5M2sKKzg4MDMzIGU4NGQ1ZWZhNmQ3NTRiMTNlNDY3ZGM5Yjg0MDg2ODg1ZjNjMmFlODUgcHkzaworODgwMzUgYWI5ZGM0MjU0N2MwOThlMzQ3ODY0ZjZhMjA1YjRhNTk2NmRiZGUxMSBweTNrCis4ODAzNiA4NjVkNWIyNGJmMjhjYTQxYjUzNmJlZmMzMjY0MDdjMDNlNzRhNGQ1IHB5M2sKKzg4MDM3IGZlMTAyM2FmNmI1OTY5ZDRjNTE0YzQyZTkxZWNmY2VmYzEyYmU2YWEgcmVsZWFzZTMxLW1haW50Cis4ODAzOCBhZGE3MDJjMDRkMTRjMzc0YmVmNjFmNjJmMWRiYmQ1NjQxMGRjNjhhIHJlbGVhc2UyNy1tYWludAorODgwMzkgNDJlZmMxMWFiNzgyZDBkMWQwMmM1OGY4N2M2MmQxNTljN2JlOTk5YSBweTNrCis4ODA0MCA4NTY1ZTcyM2I0YTBlYTNkYWExNGI1MzVlYTI0NWFlNzQxY2NmY2RmIHB5M2sKKzg4MDQxIGZjMWQxNTkxNzg5NTVmYzIxOTZiMWQ4Mjk0OGFiOGRiMTQ5NGQzY2MgcHkzaworODgwNDIgYjExMDRiNDI1MTM0YzZlOWRkMTYzOGJhNGJkYzQ2Y2M2OGMwNjUxYSBweTNrCis4ODA0MyA5ZjI4MmNmYTg5YTIxODZhNWU5NmIzZjM1ZTUzMzc5NzU3OGYxZjYwIHB5M2sKKzg4MDQ0IGI3YTk3ZjExYjQxYjM3NmQ5NDFhYjQ0ZDMzYjFiZjQ4YTRjYTAyZjUgcHkzaworODgwNDYgYzkxZGUzMjY4MzVlOTc4ZmQ5NWZlOWU1NjBiZDA1Njk1MzUzNjViZSByZWxlYXNlMjctbWFpbnQKKzg4MDQ3IDFmNmUwNDVlOGE2OWJhYjVjNTVjZjZlMmU4YmRiZjY2Yjc3YTAzMmIgcHkzaworODgwNDggZDY3MDQ4MmE1ODIxMTc1ZjljZjkxMTcyM2RkMDU0MzViMWQyMTM0OCBweTNrCis4ODA0OSA0NWRhODMzMjc2MzVmZGJjZDVjNDg0NTNhMTI4YmNiMTUxYWRmMGUzIHB5M2sKKzg4MDUwIDJjZjY3YzZhYTZlZTY4ZjBhYmU4MDdhNjUzZDIxZGVhZDBlZjFkMWYgcHkzaworODgwNTEgMzg0NzM3YTc0MDgwZTNlMTc0YjVlODVjOGZiNjUwZDU2NTdhNzYyNSBweTNrCis4ODA1MiA0NzI0Yjk0YzU3NDU2OGI2MjM4YmQ3NTA1MzFhMTI5OGJkNjhiNGQ4IHB5M2sKKzg4MDUzIDM2OGU5MTAzMTg4MDIwMGIwODRmM2Y2MTZkOGYxZTJjYmRmZmM2MmIgcHkzaworODgwNTQgYWVlZmEyMjFiYmU2NTI4MDVmMGY1MmY4NDYxNDNmYWEzOTE5NTAzYiBweTNrCis4ODA1NSA2OTFiYzJjMmZjMjJkNTVlY2RkNTVmMmEwNGFjNmJlYjZhZGJlNjdkIHB5M2sKKzg4MDU2IDUyNWFlYWEzZDUzZjI5ZmU1MGE0OTY1ZDc4NzJmMTdmZDJjNjdhZmUgcHkzaworODgwNTcgZmFlYzFiNWE5NmRiNzQ0ZDc2Yjk5YjFlMTJjODU2ZDBhNzZmODA1ZiBweTNrCis4ODA1OCAzNjkxMDg1MWE3MTVjZmI1ZjU1NGVlMzIyNDYwZDcxM2ZhNGFmNzAwIHB5M2sKKzg4MDYyIDdiMzFiZWI4OGNkYjJmMTk2ODMwNGUwMjhjZDQ4OWMwY2RmYWVjYzMgcmVsZWFzZTMxLW1haW50Cis4ODA2MyAzNjc0ZGNiNDFhOTRmMzBjMDcwZTllZmNkYWFiOTU5ODlkZmQ3MDBjIHB5M2sKKzg4MDY0IGRkODdiMGVmY2RkODM0YTJlNWJjNDU5MTA0MWFmNjI0NzUxNjFjYWQgcmVsZWFzZTI3LW1haW50Cis4ODA2NSBjNTljZWEyMTg1NDc2NzM1ZDBiN2RlYzczNWE5OWI4MWY1OTVmMGZjIHJlbGVhc2UzMS1tYWludAorODgwNjYgZGY4YjZhMmJkZGRkNzJmOGQ0MGE4MjY0MzAxMTFhOWE2ZWFhYWRkMyBweTNrCis4ODA2NyA4MTFiNGZiOGYwY2M2OTIwMWE0YjE3OWQwY2YyNzFiOGIwYWM1ZDQzIHJlbGVhc2UzMS1tYWludAorODgwNjggMWY2ZDE0MThjYzE4MzE2N2JiZGFmNmJjMGI2YTBjNWZlODBiOWI3NiByZWxlYXNlMjctbWFpbnQKKzg4MDY5IGE3OGM2ZDBjM2Y2OWNkOWY3NjNiMjE3YTBjMzMzMzRlZDE0N2NjMzAgcHkzaworODgwNzAgNmU4ZTBmZTE4MjA1ZjAwYTI1MjY5ZTFiODcyODJkOWUzNzI2N2RmZCByZWxlYXNlMjctbWFpbnQKKzg4MDcxIGI5NDhkYmQxZmFjMWI0YjdjNmI0MTFjMWFmYzYxMWE1YzY4YTI4Y2QgcmVsZWFzZTMxLW1haW50Cis4ODA3MiBjYWNjMzVhMWUwYzNkMTU5ZGU4MzE0OTQ5YzZkNDdmNGZmN2I4MGIwIHB5M2sKKzg4MDczIGQzNWEyNGE5NDcxNzhkNDkzZTQzN2NhYWQyY2EwNjE1MDU3ZTEyYjUgcHkzaworODgwNzQgNGQyNzVjNTgyMTRiMzEzMjkxZDI5ZGEzYThiNTJjYzQ0MWZmZTdkYSBweTNrCis4ODA3NSBlZGUyNjBhNTNmYjUwYTg3YTlmZjRlMmNiMjczYWQ4YmQ5MDU1NTQ2IHB5M2sKKzg4MDc2IDI5NWZmNTVhMjY1ZTdiODcxNGZiMTA1MGQzNzY5M2NmOTgxNGU1NmYgcHkzaworODgwNzcgOWEwMGRlMjUwZTFlNDk4MmMyY2QyMTIwMDIxNmM5MzJhYzJlODVjZSBweTNrCis4ODA3OCA4OTYyOGYzZWNkY2JiN2I5YWZkMTM0MGQ1ZTc3ZWYwMDMxOWY5YzQ0IHB5M2sKKzg4MDc5IDQxNTE3M2Y4N2Y0NWQ4MjFkYzEzMjk5OTBjNGUyODVhNjUyMTg2ZjIgcHkzaworODgwODAgNmU2ODI2NTM4OTc0M2IxM2ViZDVhYTNiM2E5YjA5M2MzODRjN2Q3NCBweTNrCis4ODA4MSBmZDhlODBmYzJkOTQzNjRlZDRlOTQyNjI3ZDQyNTNkZjk4MDJmNjY1IHJlbGVhc2UzMS1tYWludAorODgwODIgNjEwMTYyOTgxMGUwMGRkMjUxNjM3M2RjY2VhYjA4ODc3MzNlYTlhZCByZWxlYXNlMjctbWFpbnQKKzg4MDgzIDk5ZWFiNWVkZjk5ZGVjNzJmYzdkMDM5NzYwMjdkYzU4M2IyZDYyNGEgcHkzaworODgwODQgNTdiZDBkODY0Y2IwMzdhMTQ3Y2MxZTEwZmQ0Nzc0ZTBlNzRiZTRkOSBweTNrCis4ODA4NSBmNWEzYjYzOTdhNTM4ZDgxMDIyOWMzNmM0ZjkxNDQwOTJjZGJmMDBhIHB5M2sKKzg4MDg4IGVkOGYwNThkYzY0YjA3NWNmNTZlMjc5NjgzMDIxNmY1NGRhYTI1M2IgcmVsZWFzZTMxLW1haW50Cis4ODA4OSA1MmU4MDI5MTRjZjg5NjIwYzhlYTc4NjY2MjIzMmM0ZDQ0ZGQxYWMzIHJlbGVhc2UyNy1tYWludAorODgwOTAgMmQ0MmY2NGIyOGZkZWYyMWNiOGE1OTkzMTBjNjQ1OWM0YTRlMmZiZiByZWxlYXNlMjctbWFpbnQKKzg4MDkxIDM0ZDQ4ODQ4ZDQxYmM4MTFiMzYyMmZjY2FmZDJkMWY3YmZjN2NiYjcgcmVsZWFzZTMxLW1haW50Cis4ODA5MiBmNDQxYzZlM2E3NjkxMjljMTE4MDRjN2VlODM0N2VmYTI1NzU1MjMwIHB5M2sKKzg4MDkzIDRlMGJjZWM4MDlkZDgwOTRiOTlmMWY1MTcyN2QwMGQ0Mjc2YTZlYTAgcHkzaworODgwOTQgNzYxZTlhZDE2NWVmMWZjMTliZDNmNWVjM2ZkNGUyODgwYjFlM2Y3ZCBweTNrCis4ODA5NyBmYzVkMDJhZTUyZGQ2YmQ4Mjc1MjAzZDU3MmZmNTQ4NTA2Zjc1Mzk1IHB5M2sKKzg4MDk4IDJmZGU1YWJmYjVmMWI3ZmJhMGYxNzlkYzMyZDM4NDMyMjU2NmNjMGEgcmVsZWFzZTMxLW1haW50Cis4ODA5OSBlYWM1NDU3ZmYxOTViMDhlZjc1NDQwOTliMzFjNTRjM2IyMzNlZDZmIHJlbGVhc2UyNy1tYWludAorODgxMDAgNDk2ZWE1MDI4YzAxYWM1ZDcyODIxNzUzNDExZmQ3MDQzNWJjM2I2OSBweTNrCis4ODEwMSAzODI0YmVmMzc2Y2M3ZmVhY2YzMDg4MDlkNDJkNzg4NDE4MmI3MWE3IHB5M2sKKzg4MTAyIDEwOWFmMDM5ZjQ0ZjBkNTk2NjI3MmFhNTZkMzFhMTA2MWNkM2I4NzQgcHkzaworODgxMDMgY2M4OTc1NzI0ZjlhOGJmNDhhNWIzZWU0MjJhMDY5NDI5NWQ0MDcxNiBweTNrCis4ODEwNCBkNzA1OGY3NGJkMDRiNGZhNmZkNWE4ZjZkN2NjM2Q5ZTQ3N2Y2Mzc5IHB5M2sKKzg4MTA1IDQxYzUxZjVjZjVkOTk0ODAwNjJkNTAwNzAyMTc4MDBiZTA4MTY4YmIgcHkzaworODgxMDYgYTdhYTgzNzNiNWZjYjUyMDRhNzFmODk2YjhkMWExMTJiMDUxMDllZiBweTNrCis4ODEwNyAzYzFjOGQ0MjY5NjYzMDFhYmVlZTM4NzE3ZjkyZDE1ZDdmOGU1MmRlIHB5M2sKKzg4MTA4IDk5MTQ3MGJlMDM0MGJlMGM2YmFkZDZmMDJmYzAyMjRlOWM2YjJhNTIgcHkzaworODgxMDkgZGU5MjUzNjFlYmE1MTE2NzY5ZGNlMzVlMTZmMmFmOTRkYmUwYmFjNCBweTNrCis4ODExMSA5MWFiZTg1NTA3MmEzNjZkMmQ4ODE4YzA1MDI4NzczMzZkNmRkM2MzIHB5M2sKKzg4MTEyIDA3ZTFlYjI0NGRmODhiMzY4MDBmMmJhNjg3YTI4MjJlNjczYzY0ODIgcmVsZWFzZTMxLW1haW50Cis4ODExMyAwMmVjMTk5N2Q3NWU4N2NjNWI5OGYzOGIxNGRhNjg3N2UzMzIwZjlkIHJlbGVhc2UyNy1tYWludAorODgxMTQgYzM1NDAwYzM2MzA0ZTg5N2E4NDBlNDhiMjI5ZjM1YzczYWZjNWEzOCBweTNrCis4ODExNSBhOTI1ZWE0ZTEwNWY4MTRmZmFmYzlmZDlmMzE0YjkxZmJmMzc0ZGUzIHB5M2sKKzg4MTE2IGI4ODBjODIyN2MwMjcyYzJkMjE5YzFiNzY5ZmE0MDMxMWFhODFlMjAgcmVsZWFzZTI3LW1haW50Cis4ODExNyAyMzNjYzc0MDI3NGI3MTI2YjQ3ZmFlNzg5NWI0NGEwMjRmNTRiM2FlIHB5M2sKKzg4MTE4IGU0ZTRiZmMwOWUxOGRiM2NmY2M0OWE1YjBiMjk2ZWI5MDRjN2YwZWIgcHkzaworODgxMTkgNmI4YjZlNWFlYzBhNWY0NDhkNjg1MWE0YmNkOTNkMTA5MjVkNDQ4MiBweTNrCis4ODEyMCA3ZjdjMmFhYjg2MWMxMWE4NDBmNDRiYTQxZjM2OGRmZjAyOTQ4YTVmIHB5M2sKKzg4MTIxIGRhNDRiYjBjZDRlOTkyZDg3NjgxOWZmNzdhMmUxZDIzZDRmMGM2MjUgcHkzaworODgxMjIgZmJlYmYwZjA2MDU3OTgwOWIzZmIyM2UxMWY4NmI3NjE3YmQ5MWVlNyBweTNrCis4ODEyNSAzYjNjNTM2MzA2MzdhNWEzYjc0OGRhYTIxYTliYmU5ZjUwYjJlMmFkIHB5M2sKKzg4MTI2IGFlZjQ4MjQyMGU5NmNjYmEzOGZlODA3MjlkYjRlOGZiOGE2YTM5MTYgcHkzaworODgxMjcgY2U0MDc1NGE4NDJhM2RiNTFjMWM2MjQ4NTAxNzI4NGUxMjUzZDQ3ZCBweTNrCis4ODEyOCAzZDMzZjQxZTgxOGRiZjFjZTZhYzhkMDFmMGFiNmM5ZmI4NWEyN2IyIHB5M2sKKzg4MTI5IDkzZTk4ZDQwZjJhNWE1NDk5ZDEyZDIzMmQwYjU0MGIzNThkZGVlNGIgcHkzaworODgxMzAgNWU3MGVlZTg2YzYxMzBiMWJkMjE3NmE1MzAyOGIwNjg3YzFiZTdlZiBweTNrCis4ODEzMSBjODM5NmQyN2Y1NmU4ZDY1OWVkOTI4MzRmNDNlODUzMjY2Y2FlMmYzIHB5M2sKKzg4MTMyIGYzNjUzOGJhOTBhOGZhMzBhMGVjODE5MzlmOTg4NjMyNDlhYTQ4ODIgcmVsZWFzZTMxLW1haW50Cis4ODEzMyBkZjkxYTAxOGRlM2FiNTA1OGNjYTA2MTNlNmUzYTMyMjY1ZWE2ZmFjIHJlbGVhc2UyNy1tYWludAorODgxMzQgZmI2NjhhYWEyZmE0ZjBkNzVjYThhODg1NWI1ZjgwYThmODg1YTU4OSBweTNrCis4ODEzNSBlNGUzMmM0ZmY2MjYyN2EzZTVjMGI2NDE2ZDkyM2JiMGU5NDVlZDg2IHB5M2sKKzg4MTM2IGNjMjE2MjcwOGJmNjJiNWJmNzVhYzE0MDBhYWE2YTcxYTAxOGU5NGMgcHkzaworODgxMzcgOGUwYjYxN2M2YzIyMTZkMzQ5ZDgxODk0ZjAzNmNlNGQzODRiYjQ0YSBweTNrCis4ODEzOCAxNjQ4MDExYzY1ZGE5YTBjMjZkYmJmNDY3ZDQxNWE2NGRlOTQwZGFlIHJlbGVhc2UzMS1tYWludAorODgxMzkgMjQxNjFjZjQwNWY0YzIyMzc0MzBiN2ZlOTZhMDk3ODU3ZDRhYWVkMiByZWxlYXNlMzEtbWFpbnQKKzg4MTM5IGRlOGRiN2FhZjdhMjk2MDU3YWUyNjEyNWI5OTYxOGM5NjFiNGZlZjYgcmVsZWFzZTI3LW1haW50Cis4ODEzOSBjNDA4MTdjOTU1MTRiMTQ3MWRiMjY3MGUzNDc0NzQ4ZWM4NDM5MGJhIHB5M2sKKzg4MTQwIGI5NjgwNTNhZmFkMGRjNTFlOGIwODdlNTlmZjExZTU5NDk4NjM4MWMgcHkzaworODgxNDEgNzg4YjAxYjVhNzRlYTE3YzYwZjc3ZDZiMmQxZTlmYTgwZjViNTc4ZSBweTNrCis4ODE0MiAzMGM5MTM0MmI2YWU2MzY1YjczM2IxMzM2MDcyMWRkOTRiMDcyZDc3IHB5M2sKKzg4MTQzIGIzY2FkZjVjZjc0MjZjNWIyNzgyMGU0Zjc3ODk3OTBiZGM1YjAwMTAgcHkzaworODgxNDQgMDg2NzNlNWY1NDlhMjdjYzcxNTgxZTY3OTllZjdkMGQ2YWJmNmMxMyBweTNrCis4ODE0NSBiYWE5MjJiNDYyMzdkYjJiMjlhMjg0MDMxNGRkMDZjMzcxZTEzOTU2IHB5M2sKKzg4MTQ2IDRmN2YzOTk1MTk0YTFjOGIwM2Q0Mzg2MzFiZDY4YWNhNGUxMzgxMGUgcHkzaworODgxNDcgNGM0YWJmYjg4NGZiNDhmZTE1Y2NkNmFjNmViYTU5ZWU4ZmQ1MmQyMyBweTNrCis4ODE0OCBiY2YwMzBmNzNlZWViNDE1N2NkOWRmOGYyMzUwYTdlZDUwYjM3ZjM5IHJlbGVhc2UzMS1tYWludAorODgxNDkgYjhjMGNhMzU5NzlhMmNkZThjMWY4N2ZmZTQyNTBkM2Q4NzRkNTZkZSBweTNrCis4ODE1MCA0MzFkZGNkYjQzMTA2YWQ5YjZiZWIzOGE2NGI2ZDlmMzBmZDEwNmI3IHB5M2sKKzg4MTUxIGZjMmFkZTg4YWI0MTc5ZmI4YzFlZDM5ODllYWNhZDcwYTAwMGM1NmIgcHkzaworODgxNTIgZDFjMDYzMDZjMTliZTgyYmUzOWIyNGJiNmZjZjZkNWViYzkxYjM1OSBweTNrCis4ODE1MyBhMGE1YzVkOWFhNGZkZjFmMTY0NDI3ZDAxZjlhMmM3MDY3N2JmYmMxIHB5M2sKKzg4MTU0IDNiYjIxZGY2NGFhNTEyMDE1ZWI0YmM0NjkxOGU1OWIxY2Q0Y2VhMDAgcHkzaworODgxNTUgNDA2M2U1MjY5ODJmMjZiYTAyYzI2M2EyYmU3ZGViYzg4ZWE2NjU0ZCBweTNrCis4ODE1NiA2ZjQwYjQ3MDllOWE1MmZkOGVjYTY0YTE3YmMwYjQxMmUzMjdlYzcwIHB5M2sKKzg4MTU3IDVhNjVlYzI4NzcxMzc0NTk2ZjJlZTRjZmIwMjM5ZWMzMjY2Y2MyM2IgcHkzaworODgxNTggZGQyN2RmOGQxNGVmYzE5N2ZlYjE3OTk4ODk1OWE1MjkzMGJkYTVmOSBweTNrCis4ODE1OSAyZGU2OTllNWY4ZjMxYTUzMjFlMjA3ODE4MTJkYzQxOGM2NDNjOWRjIHB5M2sKKzg4MTYwIDkwYTJkOWI3MDJiY2JhYWZiYTljYWQ3NzcyMTZhYmExZDVlN2VjZmEgcHkzaworODgxNjEgZjNiZmViMmZiY2ZiMDZkNWYzYmViMjgwMTRjZjQ5OWNkYTFkZDRjYyBweTNrCis4ODE2MiAwM2UyYTg3NTU3MDkwYWE1MmJhMDI4YjRkYmI2NmJmNzQzZTIzNWZkIHB5M2sKKzg4MTYzIGMxNzVmNWRmZjM5NjA0YmQ5MDdlNDUyOGU3YjRjZDg0MGZjNGQ3NWMgcHkzaworODgxNjQgODI1ZWJhZGViZjliYTI5MjE4NWVkNmVkZDM0OGIzNTMzNzI0MDZjNyBweTNrCis4ODE2NSAxZTNmMTY5YjllNDZhZTRlMWJhODMxMjI5MTkyYmM1Y2FjYzZkYmY1IHB5M2sKKzg4MTY2IDcwOTE5YmFkNzQ1ODQxZDAyNjZjN2FiZmI3YzFlZTZhMjM4NDg2ZTMgcHkzaworODgxNjkgN2Y5YTk4Zjc2NmQ3NWM5YjU5NDQ4OTAyY2RmNTQ5MWNkNDViYWFkYyByZWxlYXNlMjctbWFpbnQKKzg4MTcwIDQ3M2U0MzY4MzllZTYzOTFlMmM1NzA2NmUxY2Q1MWRlYjljM2VlN2EgcHkzaworODgxNzEgOGEzMGEyY2I0YjllMzQ3MmQ4OTJkYmEzNmQ4ZGQwZDkwYmEyNWU4ZiBweTNrCis4ODE3MiA1OThjMTk1ZTUyZjM2MDg2ZmU5MzkwMjhkY2U3MWM0OGZmZjEyMzIyIHB5M2sKKzg4MTczIDNiOTNkMDA5OWNlZDA3YzdhNWNiZDRhYThhOWVhZGQwMzc4OTg0ZTkgcmVsZWFzZTMxLW1haW50Cis4ODE3NCBiMDIyNTk1N2UwMDY1OTk1ZmIyMWE3OGEyYTMwMzE2M2EwNDA4NTE5IHB5M2sKKzg4MTc1IDkzYTQxZGY4YzczNzhjZmFiNmY3Njg4NTZjOThlMmZiZDJjY2FhZjEgcmVsZWFzZTI3LW1haW50Cis4ODE3NiAwYjUyOThlN2IyZDU0MDViZDcyMzc5ZWQ2NmIzNjgzMjg4OTg4NzFjIHB5M2sKKzg4MTc3IGViNGJhMDNkN2M0ZGYzMjMyMjNjNzZiYmM2MWQyYzgxYzFjNTQyYmIgcmVsZWFzZTMxLW1haW50Cis4ODE3OCAwZDZlY2NmMDBiNWJkNjdkMWMyMDk5ZWNmYjdlMzgwOTM3MDk2NDIzIHB5M2sKKzg4MTc5IDcxMjgxMDE3YzQzZmM0M2ZmYjE3N2QyYWQ4MWYwNWU2Y2UzZmExYjMgcHkzaworODgxODAgZmFlMTllNTUxN2I2NWJlMmJmMzA3M2QzMzc1MDM4MTcyMGQ2MGUzZSBweTNrCis4ODE4MSAwMzIyMGVkNDhiY2FlMGRlMGZjY2RjYmMwYWQ4YzY4YTViMGNkODc5IHB5M2sKKzg4MTgyIGMyYmQ2OTIwNzhkMjBlNzNhZTQxOTZkMmU0ODFlMmNjYjg3NGI0OGUgcHkzaworODgxODMgMzJjODk2Njg4YzkxZDA2OGE4NjNiNzYzZDJlMzc3ODM1ZGM0YmM5MCBweTNrCis4ODE4NCAwOGYzMmQxMWI3ZWZiYTI1NDU1ZGMwZDY5OTcyZDk3NmYwNmI5Y2ZjIHB5M2sKKzg4MTg1IDg5YTNmNmMxMmYwMjEyZGQ2MWZmNWFlMDA5YzIzYTI2ZmVmZDM3OTIgcHkzaworODgxODYgNzU3YTliMTgzNmIxOWYyYjY3ZjZhZmI2YjEzZGFhNmZkMDk0MDk5NyBweTNrCis4ODE4NyAwMDc1M2QwNGJiYmZiMzNkNTg1YTFkMTY3YmI5ZGQwMGFlMDJlZGQ2IHB5M2sKKzg4MTg4IDNjYWJjZTBiNmNhZmNhY2M5MDE4ZmE1ZGZhZmNhM2UwYmMyYjgwNGMgcHkzaworODgxODkgMjE5NzU0ZTljMzljMmZhMDYyODA0MGM5ZjJhNzVhMjMzYjY5MjM4ZSB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTkwIDcwNTc4MGJhOWUzYTA1M2I1YzhjNTJiMzc2ZGM0NzlkMWNjY2ZiZmQgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5MSA3NzZjM2MyOTRiYjczNWM0ODljMDQ2Yjg4Zjg4NzVjMGU0ZjRhN2FlIHB5M2sKKzg4MTkyIGY2MzkyYzRjZTYxOTg3Nzc3ZGY3ZmM5MzRmYTBiODllNWIzZWI0YzQgcmVsZWFzZTI3LW1haW50Cis4ODE5MyAzMmZjMWNhZmZiMTcwMjZmYTg1YTdmYzIyZTVkMTBhNTZkNWU5YjU0IHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgxOTQgODJiN2Y1M2MyYWNkNGE5M2E3ZGIzYzZlNDQyMDJjNzRjOThlYTBmMyB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTk2IGY5OGFkNjUwOTAyOTVhNTQ0MjRkNWI1OWUyMzY2NzBjNDkzMTg3MmEgcHkzaworODgxOTcgNjViMDk3YWVkYTgwMTNjYTc3MjdjNTk5YTgwMzM0M2VmODQwMDcwYiBweTNrCis4ODE5OCA3YjMwZDljZmEwZDllNTE4ODRiNTRmMjRhZGFiY2VkNTIwZGRhNWY1IHB5M2sKKzg4MTk5IDQ4NzE4YjE5YzBkYzA4MmUwYWUyMDFiZGRjNzE4MGRmOGM3ZmVmZmEgcHkzaworODgyMDAgYmRmOTg2NGZkMjc2MDg1MzAzYTlhMTYwZmQ0ZDk2OTQ3ZDUzYjFjOCBweTNrCis4ODIwMSAxZjIxNWZkYTIzODM4Y2UzNzU4Nzc4MWQ5YWYxZmQxMTM3YWU4OTAxIHB5M2sKKzg4MjAyIGE2NzVhNDQ2ODYyMDg0Mzk3ODg1ZDE3YTMwNjE4YjAzZjNiZDRmMjMgcmVsZWFzZTI3LW1haW50Cis4ODIwMyAxZDNiZTdiMDFkODQ1ZWE2NGVjMGY5MzQwZDJkZjg0MmRmMTdhMDQ1IHB5M2sKKzg4MjA0IDhlYWEzMjc5N2Y5MmUyOTJlOTQ1ZDBjMGRlOTM4ZTkyMDRjZDI2NzAgcHkzaworODgyMDUgYWM0N2QxMWE4Y2EyNGQ0NjFmNjBhNDc5YmNlMGY3MTYyOWI0NmNhNiByZWxlYXNlMzEtbWFpbnQKKzg4MjA2IDQ0YzFiNTZkNzc4N2Q3MTUyMjMyOTY0MzdlYzQzNjE5NTg4NTc5ZDggcmVsZWFzZTI3LW1haW50Cis4ODIwNyA4MDU2MTc2YzA1M2YwNWZjMTE3ZWQ5YTUyNjUyOTk5ZTQ5ZDFmMDQzIHB5M2sKKzg4MjA4IDI3OWEwYzk1OWY3ZGFlZjBiOWMyNjEzZWUzOWRkMjUxN2ZlMDlhMmUgcmVsZWFzZTMxLW1haW50Cis4ODIwOSA1OTFkNTRmZmU5NjlkNzQ2N2NkYzEwMThiODg0N2FkMGFkMDlhY2E5IHB5M2sKKzg4MjEwIGY4MmEwNGNiMTUwYTJjMDY4ZjE1OWM5ZTM5ZDcyMGNhMzA2MWFjYzggcHkzaworODgyMTEgYjBhYjMzNTIyZGRhOWY4M2NiYWUxNDNkYzk5ZDA3YTNhYzIyMDk5YiBweTNrCis4ODIxMiAwZTMwZDQxM2I5ZTk3ZjQ2Y2NhOTgwZDc2NGRhODdmYzUyOGUzZDc3IHB5M2sKKzg4MjEzIGJhYzI5NjY4MGNmODQ2N2JjZDJkOTE3YjZhOWM2ZGFkOWQyYjk5Y2QgcHkzaworODgyMTQgYjIyY2M3NTYzYjI4ODIzMTFiZDlhZGVhNDZlMzk3OGQzMTg0NDYzYSByZWxlYXNlMjctbWFpbnQKKzg4MjE0IGZjMmFiN2NkZGNmMDA1OGE1MWY5MTUyZjhmMTljMDMwZTAzZGFmZjYgcHkzaworODgyMTUgZGQ3MzI4NjcyOTY4MzFlMDNhMTc4MjIwMWZjYjMwZDQ4YzE3OTUyZSBweTNrCis4ODIyMCBkMjFjYjZhN2ExNGVlOWFjMzNhMDMyN2NhMmE5MmQ2MjY0NjViZjhmIHB5M2sKKzg4MjIxIGU3OTU5MzA5ZjU5YzY1YjRlYTI4NjM2ZDdiMjM4OWNhZTIzZDc0NGEgcHkzaworODgyMjIgZTQwNjQzYTNjMzFkZmZmM2FiYTc2ZWZjNjVmNzg2NWRiZGZhNmUxNiBweTNrCis4ODIyMyA3YzdlZTRlMTE4NTBkMDc3Zjc1NTc2ZmFmNTdiODVjZTdmODRjZjllIHB5M2sKKzg4MjI0IDJkYjYxN2U5MGNhMGMxMjBkM2MzYWY3MGYwMmJjZjcwYmFkYThjNjkgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODIyNiAzZWY4NjUzMjdkN2IwNTgwZWMwYjAyMTRhMTJjOGJkNTk5NThkZTQ5IHB5M2sKKzg4MjI4IDg1MjE4NmU1YWUyYWM2OWUyMWQwNDIxMzAyNDk4MTY3YzYwNzFkZjQgcHkzaworODgyMjkgY2Y3NTAwZjA4MGZkM2FjNjNlNDMwYzY0ZjkzNzI5MTU0ODFjMmNkYyByZWxlYXNlMzEtbWFpbnQKKzg4MjMwIGQ3Y2QxYjYyNjA4Yjk4MzFjNTQxZjQ0MGE2MGEyYjM5NmY1Mjk3M2EgcHkzaworODgyMzEgMDg1ZTBkZDYzNzk2YjgwZDNmOGRlZTdmOTBlZDczZGFmZDliMDk2NiBweTNrCis4ODIzMiA1YzUxNzI0YmY0MTExNmEwODMyYjBjMzM3NmRiZmE4ZDIxMmI0MzcxIHB5M2sKKzg4MjMzIGJlMTFlNTY1M2ZkYTk3NTRmZWNiNDE0YjQxNjhmMzRlNzI4Y2ExN2MgcmVsZWFzZTMxLW1haW50Cis4ODIzNCA2NDcxM2UzMTY4M2Y4YjcxZTI0Yjc5Y2Y5ODdkYjljMDMxZDU1ODE2IHB5M2sKKzg4MjM1IDMzNDgxMmJhNTg3NDIyYmRjNGI4OTBmNzliZDM0YzE3ODVjNTNlNzQgcHkzaworODgyMzYgNmExZmI5NDY0N2NiNGRkZmM4Y2ZhOWRkNjdkODhmMzg3NDA3NjMzNSBweTNrCis4ODIzNyAyYWFkNzA3ZWRhNjI3OGEyYTNjNjY1NjkwNjVlZDQxNGFiMzAzMTM4IHJlbGVhc2UzMS1tYWludAorODgyMzggZjEyZmU2ODVlNDRkMjhkYzk3M2M2MTJkNmVlYmFkNjYwMDMwM2E2NCByZWxlYXNlMjctbWFpbnQKKzg4MjM5IDc5MWY1MmZiZTVlMDYwYWZiZGU0NTlkOTBjY2M3N2M5Mjg0NDc1MjYgcHkzaworODgyNDAgNWYxYWQ2NWExYjg0Yzc3N2ZkNTM0MTM5MDI1ZTA3NjU0NWJkYTkwNiBweTNrCis4ODI0MSAzYzc3NzJmZmZiYWQzNGEyNjMwMmNkMzMxMjQ2ZGI5NTVlNDQ1ZTU0IHJlbGVhc2UzMS1tYWludAorODgyNDIgYzY5MDYwOTk5NWE2Mjc2MjczNzNkNjRmYzhhZmQ3NzkzY2U0MGQxYyByZWxlYXNlMzEtbWFpbnQKKzg4MjQzIGIwZWZiNmYwZmU5NDMyNjNmNzY1ZTMwMGFkZTAxMWMwZDhkYWYzMjYgcmVsZWFzZTI3LW1haW50Cis4ODI0NCAwYzYwNGU2NTQyOWUzMmI4MjM0N2Q5NzMxNDE4NTc1ZGZlMjg4NGYzIHB5M2sKKzg4MjQ1IDQ2ZjA3ZGM0MzdmZmJkNzkyNWE1MzFmZWVlNDg4NzkwZGMzZjdlZTMgcHkzaworODgyNDYgOGExOWY2MDI5Y2U1OTdlMjk3NGEyZTRiYmYwNzViMzg0NTA5YzlhYiBweTNrCis4ODI0NyBjODI1ODhjYTNhNzkwOWRjYTdkNmY5MDEwOTNjY2I0YzlmOTM5MjgxIHB5M2sKKzg4MjQ4IGQzYjRmYTJkZDcyODhlYzcwMTE1MmY3NzA3NzUxZjI0ZjAwZGQ2NTEgcmVsZWFzZTI3LW1haW50Cis4ODI1MSAyYzkzNzJhMWM2ODViNWI5MGU0YmNhYTU1NWIwODZmYTYxZTExMjBjIHB5M2sKKzg4MjUyIGRjNTAxZWZhMDViNDEyNWJjNWU1YmU2M2NlOTM5YmYyMWMzZjU3MTAgcHkzaworODgyNTYgMzZlZWIyODJjZDg0NGVhODkwZDIxODdmM2YxYTQ0MzBkNzE3OTM3YiBweTNrCis4ODI1OCBiZmE1ODM1ZTEwZjBlNzE4NWFkNzQ2NDhiOTFkNjA3ZDZkMzdiODgxIHB5M2sKKzg4MjU5IDU5NWMyYjU2NjgxZWJiNzZkZGE4NmY3MDMxYmI5MDg1MmEyNmIxMTEgcHkzaworODgyNjEgZGZiZDk1NjhmNDljYmU5MDE3M2I2NjNkZjAxNjZjZWIwMTVkZDQwNiBweTNrCis4ODI2MyAyYmVmN2FiNjI1NmI0MjEyNDQ0NTlkY2FjZmFhYjUzZWNhNjBiZDhkIHB5M2sKKzg4MjY0IDkzYzQwODFkZmQxOTVjYmRiMDdiZThmZTE4MjVjMzIxZGMwYTYwMDQgcHkzaworODgyNjUgMjY1NzRiMDI3MDQyYzg4MDMxYTc4YTc2OWVmOGI1YjY3MDFiMWVlNCBweTNrCis4ODI2NiBhY2YzZTI0ZGQwZDBkZmQxZTIwYzkwN2Q2OTZkM2RhOTY1YThmNTZmIHB5M2sKKzg4MjY3IDdjM2RhZmJlZTlkMGI2YjFjMTEyMTVhNTJjMTY5Yzc2ODNkMGNjYmUgcHkzaworODgyNjggZTgyNTAxODEyYWUzZDMxNjU2MzVkOTdmNmY5N2E5ZjhmMWRjZjcwZiByZWxlYXNlMjctbWFpbnQKKzg4MjY5IGE5ZGRkZmJhYjI0MTc5YzBiNjllYjA4MzExY2Q2ZTdhZTE5NWI0NmUgcmVsZWFzZTMxLW1haW50Cis4ODI3MCAxODIwN2I5ZDlhNjBmODE1NjIwYmU1NmUwNWNhMGY1Yzk3NjhkMzI0IHJlbGVhc2UyNy1tYWludAorODgyNzEgMGYwYzVmOWFjZTlmM2JiNGI1MjBiYzRmNDRkOTQzZWRlOWM3NThiMCBweTNrCis4ODI3MiBkZTY3OTJiZGQ5NjU5M2JkNTFlMjEwYjg3OTc5MjIxMmE2YTE4ODAwIHB5M2sKKzg4MjczIDA4NmMyYmNkOGQ3NGU2YjQ0NzQ2OGY3NDYzNWZhZTI2NGFiNmJlZmUgcHkzaworODgyNzQgNGEyNzIyMjVjM2RlNzFlNjFhMDcxODVlNDQwM2I5MjRiZjBiODg2YSBweTNrCis4ODI3NSBiYzA5ZGI4MmE1ZDBmNTQzNjkxMGU1MTBmODc4NzI2MDAxMTNhMzc0IHB5M2sKKzg4Mjc2IDAyZWZkYjllMDllOTBlYzI1OTAwMzk0NmQ0ZjQ0ZmNjMTliYTEzODIgcHkzaworODgyODAgNGY5NDg3Mzg0NmEzZmE1ZmY5NGVjMmI1NzlhZjk5NTNiMjM1MGM0MCBweTNrCis4ODI4MSAwYTlmNjgwYTJjZjA1YzNiYWVjNGM2OWE0ZDY3YzBkY2QxOTkwYjU5IHB5M2sKKzg4MjgyIDk4N2U2NjE1YTA3OTZhZDkwMDRmYzFjM2FhMDkwMTQ2YmVhNWI0MGMgcmVsZWFzZTMxLW1haW50Cis4ODI4MyBhNmRmM2MzZTM3NDIzNjEyNGZmOTY4OTBjNzYzNDYyZDFjMjdhNWJjIHJlbGVhc2UyNy1tYWludAorODgyODQgMzFmNDBiZTkyMjUyNGM2MjkzZWQ3NzA2NjJlNTcwYjBiMDI2MmYxNSBweTNrCis4ODI4NSA4ZmE3M2EwODg1Yzk1ZThlMTZmNWRhNzAyZWFkMDI0MmNmN2FjM2E3IHJlbGVhc2UzMS1tYWludAorODgyODYgY2E5MDk0MzhjZjlmODkxYmYwNzQ3NDQ0ZTRmZmU2MzllYjAyM2YyNCByZWxlYXNlMjctbWFpbnQKKzg4Mjk5IDczYzQ5NTc5YTQ4N2M0YmQxYjc1OGQ4YzVjZTI4OGYxNGExNDM0ODMgcHkzaworODgzMDAgOTAwZmMxZWU0NDg3ZWZlMTg3ODAwNjEwZjg2M2M1NjBiNDMzZmRlZiByZWxlYXNlMzEtbWFpbnQKKzg4MzAxIDk0NGFkZjdlZGEyZWJiMWVhNjExNGI1MTZiZjZhMTJlOWI5MWIxZGEgcHkzaworODgzMDIgOWU2NTk1MTI2NmEyMDUxMjk1MDE1N2VlZWE2ZGRiODk5ZWNiYmY5NyBweTNrCis4ODMxOCBhYTg3MzAwNGNlYTgwZGU3YWRmYmZiMTVjMjZlOTMwMGM5ZjY4YzliIHJlbGVhc2UyNy1tYWludAorODgzMTkgNzczY2IzMzJjYzYzYjZjNmE3YzU1MzRjMjgwNjFjNDk4NTg0MGUzOSByZWxlYXNlMzEtbWFpbnQKKzg4MzIwIGQzMzkwM2ViMzM4ODU0MWZhZWQ3YzQzYTkxNzVkMTA4NGIwOGYzZGYgcmVsZWFzZTI3LW1haW50Cis4ODMyMSAxN2Q2ZjE2NWVhZTk3ZjliNGVjNmNkNzFmMTllNWI4Y2FjMDhhNTNlIHJlbGVhc2UzMS1tYWludAorODgzMjIgNWJlNzAxMTM5MDg5Y2Y4Zjg0ZjU5MjI0NDJlNGRlMzI1Mjg4MjU4OCBweTNrCis4ODMyMyA4ZTk5Njk0MThkYmViY2I4YmJmNDQ5YTY1NmY0MzlhMzg0NmVkOTQ3IHJlbGVhc2UzMS1tYWludAorODgzMjQgYjIxNzg2NDE5YmI4MzNkYjEzNjcwMTAyNDM5NTMxYzFlZDU4MDFhMiByZWxlYXNlMzEtbWFpbnQKKzg4MzI1IDc4MmJmNWYzN2FjYjA2ZmVkNmYwNGJkMWRjM2YxZmU3NmViYzM5N2IgcmVsZWFzZTMxLW1haW50Cis4ODMyNiAyZTNjNTg0MWEwYTY2NDBlZTc2NDQxYTY2MDY4ZDE3ZDk2MGIzMDYwIHJlbGVhc2UzMS1tYWludAorODgzMjcgYTFkMWJmYzM4M2VmY2Y2ZTFkNzNlODRiODY1M2MwODVmODE1MTcxYiByZWxlYXNlMzEtbWFpbnQKKzg4MzI4IDYyNzA5NDYxMTVkMDg0NWM1Zjk5YmQzNTdjNmNiMmY4MjhkODdhNzIgcmVsZWFzZTI3LW1haW50Cis4ODMyOSAwMzg2NDNkMzlmYzE1NmRmM2IzNjJmYWVhNTUwYmI1MmMyZmMwMDFiIHB5M2sKKzg4MzMwIDQ1MDY0OTU2NTg2MzFiZWI5MmYwYzYxNjhlN2ZjN2I0YmM5MGIxYWEgcHkzaworODgzMzEgOGNjMTAyNzlhYzdkZDZlNDY3NTM5M2VjODNiOGFjMTAzYzA4NDI5YSBweTNrCis4ODMzMiBlNTY2OGFkYzFlZDllNmFiYTA2ZGY2OTg1YWY1MzlmODIwNThkNjUyIHB5M2sKKzg4MzMzIDA3NzQ2YmUwYmJhZDQ3ZTY2YzE1ODBjMmEzMWMwMTIxODg3ZjJhMDggcHkzaworODgzMzQgMGJiYTUzM2MwOTU5ZjYyNTQwMGQ1ZWU3NzgyMjg1ZGNlMGZkMThkOCBweTNrCis4ODMzNSBmOTAyZmM3NzkzZTEyYjQ4YjYwMTM4YzI4NmU1YWNjM2Q5ZGRhODEzIHJlbGVhc2UzMS1tYWludAorODgzMzYgZjIyYzk5ZGI4YTQ2NTZmZjU2MGM5YzZmMjdjZGRiZWZiNzIzYWFiZSByZWxlYXNlMjctbWFpbnQKKzg4MzM3IGNlOGRiNDg1ZTI2ZTQzNTY4YWQzOGU2M2M4ZTRiNjg2OWU5ZTVkMTQgcHkzaworODgzMzggZGM1NmM4MjcxZmE4NTFmYzcwZDQ5YWM3MTY3ZWM4MmQ4MTc1YmYyMiByZWxlYXNlMjctbWFpbnQKKzg4MzM5IDQzNTUyMTJmZTJjNDMwMzExYTgyYjA4YjkyMzMwNWZlMmRhMTFkMDcgcmVsZWFzZTMxLW1haW50Cis4ODM0MCBjY2ZiNWJhNTBhNDRlOWMxYzA3NGVkYjE0MmY4MTc0MmRkMjA1NjJiIHB5M2sKKzg4MzQxIDVhNTA0ODVhMzc1ZjExYzhlMTYwZTg5YjI1MDU3NDUwMzc5ZjgzYTUgcHkzaworODgzNDIgYmM2ODVhZGJhYTE1Y2UxNjJkNDYxY2MxMjY1Mzc4ODJmZGVkM2RmNSBweTNrCis4ODM0MyA0NjBmMmYxYzVlYzgzZmJjMGRkNmQ5ODE2YTE2YWViNDgwODI4YWUyIHB5M2sKKzg4MzQ0IGJiM2Y2ZDNjYzBiM2MzN2RkZjFkYjlmODM0Yjg5NWU0ZDNiMGUzYWYgcHkzaworODgzNDUgNTI2N2U1MjYzZTQ3N2Q0ZmY4NjY1NjA3YWE1ODI4Y2JiYjJiZmFkYyBweTNrCis4ODM0NiAzOWI1ZmM2Yzc5MmQ0YjU5NjlkYzg4ZTAxZTE5YTk2NzgyYmNmNWMxIHB5M2sKKzg4MzQ3IDg4ZDY5YzJmOWVmYTMyMzM1ZTM0ZGY0MDk0YWY3NjY3ZTVjNGFmYWYgcHkzaworODgzNDggOWIzM2Q2NWNkYWU0YWViNjVjYzI4YjgyZDMwZDE5YzYwZjQ0NWUwNSBweTNrCis4ODM0OSA4ZDI1OTI1OTEwYjEwYjU1NmRjOGYxOWNkOWY3YjQwZjMyMzhmMjVlIHB5M2sKKzg4MzUwIDBkYTY4ZTJlNGQ3ODBiNjhiZDVmYWY3YjNkNzFiMDA0ZDg2YTIzZTggcHkzaworODgzNTEgYWNhOTFjNTVmMzhkNDUwZmZmZGU3NWUyNGFmNWRkY2E1N2ZhYWJjMyBweTNrCis4ODM1MiBhYmFiMmM1M2Y1OGZkMzM3NDA2YjRiYTAxZjA0NmFlZmMzMzZhMmI0IHB5M2sKKzg4MzUzIDQwNWE0NGM2ZGNlZGI0NTdjM2QzOWQ0MDQzOTlkZmM1YzkyNTgwMDIgcmVsZWFzZTI3LW1haW50Cis4ODM1NCBiNWUzNmE1NDljMjUzNzkxZWE0OWMzOWNiYmE0ODJiM2E2Nzk5NDlmIHJlbGVhc2UzMS1tYWludAorODgzNTUgOGUyMDk4NmIzZDZlOWI4ZGRjYzZhNWYyNGNhMTVmMzEzZThiYTkwNyBweTNrCis4ODM1NiA1MTZiOWRiNmFmZTRhZjQ4Yzk5MTY3NGMwYmQwNGU5MTU3ZDg4MTcyIHB5M2sKKzg4MzU3IDM5NGNiMDIyNDdmYzM2YjkxNjdjMDYyMGI0OTI0NTJkNTI5NWNmYTMgcHkzaworODgzNTggYjdiMWRjZTNlNzdmMjk2NTNlZmVkMTNlNGUxMGExNzYyMGVmNGZjZiBweTNrCis4ODM1OSBkNjFlYmZjZTE4ZWQzYWUxMmI4ZGRlZDc0ZGFjMjUxZmNlYTY1YzUzIHB5M2sKKzg4MzYwIDE1MThiOTM1ZGUxMGU3MDczMDU5MThiZmJkNjBlNmE5YjcwODU5NWYgcHkzaworODgzNjEgYjU3MDJiMjBiNDc2MGU1OTFiZDQwNzY3MDZmYzkwMzJlYmYzODBjZiBweTNrCis4ODM2MiBiNGM3ZDIwM2MzZDE0MzBjY2I3NTUxZDQyYzljOWQyZjRmMzdjZDg4IHB5M2sKKzg4MzYzIDNiOWQ3Yjg0NTYxODM5MjgwZDg4ZWMxMTEyM2U2ZDcxODNmMWNhYzggcHkzaworODgzNjQgMDlmMDdjN2RjM2RjMjVkZTE1ODljMzA0NGJjZDY1OGI3ODA1MDc2NyBweTNrCis4ODM2NSAzZTAyMTM2NmU1MWZhYzYyYWE1NGVjYjljODFkN2Y1YTI3ZDcxNzczIHB5M2sKKzg4MzY2IGYxZmFlYzQ5MzUwZGNkYTZlODljYWQyMGM4ZjE5M2QxZGUwYmE3NDggcHkzaworODgzNjcgYmNlNzU4OTM5ZDc5OTNiYzAzYTgxN2Y1YWU5MTRhYmNkZDg5NmYxZiBweTNrCis4ODM2OCAxZDljNWEyYWE2OTRlN2YyZTUyNWFlYjRlMWQ0NTI0MWU3YzZkOGI4IHB5M2sKKzg4MzY5IDI2MTM2N2U5ZTZjMWM4YTFjZDZiMDJjODFkNDMwNDdjM2QwZmYyNTAgcHkzaworODgzNzAgMzQxMWNjN2Y2NGRmNjY5YzRhMDJiYmQ4NmRlM2U2OTBlM2NkYmUxMyBweTNrCis4ODM3MSA5ZmRmYzA1ZWZiYjViZmNmN2M3YTU1NGYxNzk2OTQ4MDk1ZmM1MDhjIHB5M2sKKzg4MzcyIDk0NmVjZTI2YTQ4ZjNiZmU5YWQ4ZDVjMTQyYmZhMjU1ZjM3YjRkOWMgcmVsZWFzZTMxLW1haW50Cis4ODM3MyA2OGQ2MTdkZDMwY2QzOTE5OGVlZmRiMDAwNjExYzhmYTIzMmNlZWNmIHJlbGVhc2UyNy1tYWludAorODgzNzQgN2M3MWIwYTVhMjkwMTRiOTYwMGY2MDNjODlkZDg4NDVmMWU1YjM0NyBweTNrCis4ODM3NSBlOWZiNmQ1MDQ1OWFmNWM1ZGFlNTliNTEwYWIxNTllMWM5MDhkOTlhIHB5M2sKKzg4Mzc2IGJiNzU3ZmFjYmZhNjExMjAzNmQ2NWM1NGZmZmMyOTExNmY1ZWNmZTUgcmVsZWFzZTI3LW1haW50Cis4ODM3NyA1NzQyYzc5MDg2YTg3OTgwNDc2YTNkMDY1NGQ4ZTFmZDdhZWNkMWUyIHB5M2sKKzg4Mzc4IGY1MmUzNWM3NWUzM2M2ZjhkZDE3ZDdiODdmOGQwN2UxYjU3ZmY3ZDAgcmVsZWFzZTMxLW1haW50Cis4ODM4MSBkNjk2NmQ5Yjc2MDlmY2M3MzFiM2Y5OGY5Njg0MGI0MzI5MzcxZDMxIHB5M2sKKzg4MzgyIGRjZjE3OTFjYjE3NjdhNTE2ODc0ODkzYmVlMGE0YmIzMGVjOGE3MWMgcHkzaworODgzODMgMDcxZDI1YWZhZGFhODk2ZTk3MWNlY2FmMzNhNmM2NzM3NGUwOWZhMiBweTNrCis4ODM4NCA2NDNhYzk0NmVmZjQ5ZjQ3NTVhMWExMmEyNjY2NDc5ZGFjMzg2OGNhIHB5M2sKKzg4Mzg1IDE0NmU4MWU0ZTUxZTRhOTU0NzVmNzEyOTBjNDEwMjdmOGNlYWYwNzIgcHkzaworODgzODYgZjViODg5YzM2Zjk5MGE2ZGY4YjAxOTVlMWFhYTkxYTBjNjJmMjZhOSBweTNrCis4ODM4NyA1ZGZlMGM0MmZmZThkNDIyOWRkYzVmMTJlNWVhOGM1YjNkZmYyMDA0IHB5M2sKKzg4Mzg4IDU2ZTYxN2MyYjVlODNlYzE3MGFhNzExNWEzYzQ4OThhOGY5MWMwZWMgcHkzaworODgzODkgNzJiNDJkYzA0MWYzZmY1ODc2YjJjNTU5NjRjZWJjNzZlY2I3NjRkZiBweTNrCis4ODM5MCAwMzdmMTZiMDJjYTU1MmM2ZmQ2Yzg5MmZmYjZkNjA4NTFiNWQwZjQwIHJlbGVhc2UzMS1tYWludAorODgzOTEgMmI0ODIyYjdjNDI0ZWM1OTgzN2JlNjEwNjViZDgxZWJmMzhjM2I3NyByZWxlYXNlMjctbWFpbnQKKzg4MzkyIGQxYjVkODA0ZDJhNTQ1MjcxMzc3MTgyODAyOWQ4YjU3NjI2MDZjNjkgcmVsZWFzZTMxLW1haW50Cis4ODM5MyA4MDg0YzY2OGI2Mzc3MzU1NTg0ZjgyMTBjODJiMzljNGNjZWQyZjg5IHJlbGVhc2UzMS1tYWludAorODgzOTQgYjQwOWQ3ZWNiNjY1NzQyNjI0NmQ5NDFhODM4YzFjOWZjYzcxYWY0YiBweTNrCis4ODM5NSAxMmFjYWY3YTQ5NTVkZGE1MGIzMzhhMDg1ZTFlMzNkN2IyZWQwZjhkIHB5M2sKKzg4Mzk2IDRkMmE1ODkxOGRmMTU4NzYyZmM1NWUwZTE4NzI4YjQ0NDkxOTM1NWYgcHkzaworODgzOTcgODlkNTJlZmZjMzBhYTdkMzljMjdhYzBkODU5YmY0YmU2Y2U4YjEzZCByZWxlYXNlMjctbWFpbnQKKzg4Mzk4IGQ5YjcxM2U5NWYzOWU5MGQzYTVhMTcxMzBiNWFlOGE2NDUxZDY2NjUgcmVsZWFzZTI3LW1haW50Cis4ODM5OSAwMmI4ODEzMjZmNmVkODJjMGUwOTY5Yjc1YjVhNjJjZjg2YjZlMDllIHB5M2sKKzg4NDAwIDIwZDgyODczYWE5NzdhOWY1NmYxOGFiMDBjNTM2MzQwZGNhNmUxZDkgcHkzaworODg0MDEgMDZhNjU3ZDFhM2FjMTk5ZjVkNDBhMmE0NDk3NWJjMzZhM2I1NzA4MiBweTNrCis4ODQwMiBjMzEwZDI5NGZkZGUwZmIwNzY5NjczNmNmZWNhNWUzOTY3OTQ3NGU5IHB5M2sKKzg4NDAzIDJjYmU5ZDA1OGY3ZTkyYjFkYjRjODVkMGEyNzM1OWEzZGIxYmE4YTAgcHkzaworODg0MDQgMTExNTc3YmY1YmE4OTY2ZjdiY2E5OGVkNzljZmUxMzU5MGFlYTM0NiByZWxlYXNlMzEtbWFpbnQKKzg4NDA1IDExYzY3YTYwODRjOGVkNGYyZjMxMTFhYWQxOWUyYWUwNTAzNjZkZDggcmVsZWFzZTI3LW1haW50Cis4ODQwNiBiYmFmOTMwNGEwZDA0YTBjYzQyNThmMjU3MzUxZTA4MWQyMDg0ODMwIHJlbGVhc2UyNy1tYWludAorODg0MDcgZjNjZTRhYmJhYWY4NWU4ZmIzZGViMDU4ZTIwYWI1YzYzNDRmY2Y3ZiBweTNrCis4ODQwOCA4ODNhMDIzZWI5NDMzZDYyZjAyNzNjNmE3MDZmYTljZTUxZjMxYTA5IHJlbGVhc2UyNy1tYWludAorODg0MDkgN2QzMjA4MjBmNDYyZGQ4M2I1M2Y3NDIyYWU0ZDZmNGNmZDU0OTkxMCByZWxlYXNlMzEtbWFpbnQKKzg4NDEwIGJhOTVjMGJkZDhhOGQ3ODM0OWUxMDk2ZDQ4NGEyNjIwYmY4NGRmNzYgcmVsZWFzZTI3LW1haW50Cis4ODQxMSAxMDY2MDNjYTUzYzM3YzBkNWE4MjJmMDgxYjQwZTFjOWM1MmIyYjE2IHB5M2sKKzg4NDEyIDZhNTQzMTE2YmYxNzQ3NWMyMjhlNzYwNGYwNTc2OGU3ODIxNmEyMTkgcHkzaworODg0MTMgMThjMWY1Mjg5NjUwMWM3ZWUxM2IwMzg0NTRhMzlhY2I0NWE4Nzk3OSBweTNrCis4ODQxNCA5M2RmOTVlNDAzZDFhNDg2MTUxZjNlNGE5MWQ1ZDM2MDY3NDUyYWVhIHB5M2sKKzg4NDE4IGI0NWY0ZjM5ZjIwNGQ4NjVjOTJkZmMwN2IwZDMyMzRhYTkwNTdlZjAgcmVsZWFzZTMxLW1haW50Cis4ODQxOSAwODg1NTE0ZDg5N2MwYzRiN2NiZTJhY2UzZTQyNGY4ZmQ5YzRhZGI3IHJlbGVhc2UyNy1tYWludAorODg0MjAgNWJhYWMxODZmMGMyOGJlYzVhMzM4MGVjMjA2ZTQyNmUyMzBmM2EzNCBweTNrCis4ODQyMSAwM2VjNjFlMTM0NjBiMjcxYWE1Zjc5ZGM2NGQ0YTkyOTk3ODJiMGE4IHB5M2sKKzg4NDIyIGQxZDlkN2UwMGI0YTVhMTk4ODgyMTE5ZmQxMzhkMjZjZDk3YzVkZjYgcmVsZWFzZTI3LW1haW50Cis4ODQyMyBkODAzMWJhMzhlMTZkM2VkYzhhYzNiYjVhYmRhZGM2YTc0NDI1NTM2IHB5M2sKKzg4NDI0IDQzYWY5ZTM2YmRkNThhMmJhNzhkNmIwZGUyYWQ0NzBiY2ZiNGYzYWIgcHkzaworODg0MjUgMmVlMmM3NjA4MmM4YzZhZWY1ZTYyNTU2MjBkYTc2NzEzMTY1YWIwZSByZWxlYXNlMzEtbWFpbnQKKzg4NDI2IDlmZjNiNjY5NTQ4ZjgzMmE5MjlkOGFiYWI0NTE2YjEyZjA0ZjU3YmYgcHkzaworODg0MjcgN2E4OWY0YTczZDFhZmQ2NjQ0OWRmZjdkMGI1NzMxYzc2ZGRlNDIyMCByZWxlYXNlMjctbWFpbnQKKzg4NDI4IDVlN2RkNjU3ZjllYjc1MWYzYjE0ZTZlYjU5MDA2MzhmNTIwMmVhYTMgcmVsZWFzZTMxLW1haW50Cis4ODQyOSA5MDdmMzg3OTIzNWE4ZDRhZWE2MTAyOGEyOGE4ZTdjMzRmYzAxZmY0IHJlbGVhc2UyNy1tYWludAorODg0MzAgYWQyZjhjNjg2ZTA4NTVhNzIyZDMwMDczNTlkMjMxZGEwNTFlMjYyNyBweTNrCis4ODQzMSAzOWNmMjBkNWFkNGM1ZWE1NTM3YTlmMWNjMzA1YzUzZGQ4OWVjOTMyIHB5M2sKKzg4NDMyIDZkMzlkYWVkZWRkNTUzNmU3OWZjNTZkNzMyNWYxNWM5MzVkNTNlZWMgcHkzaworODg0MzQgNmMxY2E5ZGViNDJhOTUyODZiYjI3ZWI1NWI2Y2E0YzQyZTVjYTQ4ZSBweTNrCis4ODQzNSAxNWE4ZTIyYzQxMDFkZWRhOTVhZWFhYWQwMTgxNjM3NzNjOTFlNjYyIHB5M2sKKzg4NDM2IDIyZDk0ZjU1YjBjNzAzNDJhYjg3ZGY5NmJmNzlhY2E3N2YyN2ZkNGYgcmVsZWFzZTI3LW1haW50Cis4ODQzOCA5MmRlYmRmOTgxYzVmMzQ0M2U4NzdmNThiNDg2MTE1N2I3Y2QyODY0IHB5M2sKKzg4NDM5IDZjYWI5YTk5NDEwNTAzNTQwZmUyMWRkYjkyMDdkZjMwYWVkNzIwMmEgcHkzaworODg0NDAgNWFmMDM1NTg5YWE3NzcyZWZmZDA0MjdjNjc0YzI5ZTllMjY3NmE2NyBweTNrCis4ODQ0MSA1ZTM3NjY5MTcyYzhkMjc4MzRkYWY4NjhlNmRmMjhjY2Q4MWEzMDgxIHB5M2sKKzg4NDQyIDEwMWJjNjY5NTFjN2NhNGU2MzliZGU4NjlhZjQxNWMzNDdjZmZiOTMgcHkzaworODg0NDMgNzg4ZWFmYWVmN2RjNDgyMGRiNzhjYjQ5YTU3YTBhZGY2M2ZjNTBjZSBweTNrCis4ODQ0NCA1OTAwZDk0OGZlNTdhNDM5OWRjMmZmZWMzYmExMjY0YjIxN2Q0ZTE2IHB5M2sKKzg4NDQ1IDQ5NmFjNGQxYTlhYmI5NjVjOWUxMTllMjQ0ZTYzYzdkYjE2ZDE4NDggcHkzaworODg0NDYgYTIyMmEwMTVlMjhkOGFlOWFmMzg5OTI1OGRjNmMxNWMzZDQwYWRkMCByZWxlYXNlMzItbWFpbnQKKzg4NDQ3IDY2MzgxY2VjNmM3MzI1YzMwNjA2NzM0ZGQzNzY2NWRkMTA0ZDY1ZWIgcHkzaworODg0NDggMjAzOTQ1MDYwYmFmZjIwNmE2YTc3Yzg2YmFhZDg4NzAxYWQ0NGY3OCBweTNrCis4ODQ0OSAwZjUyY2ZjOTFmYWVjMDg5OTc3NTQ4N2MyZmRiMDQ0NWQzMGNlY2YxIHB5M2sKKzg4NDUwIDQ0MTkwN2MwODE0ZTVjNzFlOGNlNDQ5MzY0OThiZmFiNzMwZWQ3YmYgcmVsZWFzZTMyLW1haW50Cis4ODQ1MSBhODNjYzk2MWM0M2EyZDMyNjliZGE0ZTczY2ViOTg5OTFhYzM0MjE5IHB5M2sKKzg4NDUyIDM1YzBlMzdmZTk1MDEyM2YwYmNlYzVjNTk0ZjU1NDViOWU2ZjZmODkgcmVsZWFzZTI3LW1haW50Cis4ODQ1MyBhZWM5NTI3ZjYyMjMyNzY5OTY3MjE5NThkOGMxYzM1NjJkOWE1YTY5IHJlbGVhc2UyNy1tYWludAorODg0NTUgYmY4NjQzOTVkMWM4OGIxYzMyYzJhZjk1YTg4YTg0NjgxNjU4YjQ4MyByZWxlYXNlMzItbWFpbnQKKzg4NDU2IDdiMDExY2Y2NGY5MDZjMjJmYThjYWU0Y2NlYjc1ODRhOGQ4NGMyNTUgcHkzaworODg0NTcgMzcxZjA0ZTFiZDNmOGIzZTkyYmNjMmRlNjhiNjlkNDdiNDdlYjBkNSByZWxlYXNlMzItbWFpbnQKKzg4NDU4IDc5MDJmNWJlMmM5MDZiZjBiNzZhYTQzN2Q1NzA2ZGFjN2JjMTRhZDUgcmVsZWFzZTMyLW1haW50Cis4ODQ1OSA5ODM2MzA3OTczMzhlMmRmN2IwYWViZTBmMzNiNDFjYjZmZmJmNWM0IHB5M2sKKzg4NDYwIDUxYTA4MGJhY2IyNTA4ZDU0NjBiYWMwM2QwMWIwY2Q3ZTQyNDBiZDEgcHkzaworODg0NjEgZGE1ZGQzZTIzYzg3MDI1MjA4OWMwYzRkZjNkYzk0ZDIyZmY4ZGFmYiByZWxlYXNlMzItbWFpbnQKKzg4NDYyIDZjMWUwNWE0YjU0MWYxZTIwMWFmMzQ5ZWU0MTgxNTRjYjU5M2NiZGIgcmVsZWFzZTMyLW1haW50Cis4ODQ2MyAyN2VhM2FlMzYyY2Q1MWZmNmEyYmIwMmRiMTc0MjI5ZjgzZDNhYTJkIHB5M2sKKzg4NDY0IDk1NGNkNWRiNTFkYzM1ZWY0M2I4ZjQzOTQ1Y2RkMmZhODgxZjVlZjAgcHkzaworODg0NjUgOWY4MTQ2ZjQ1ZWFlODdjOTI4OTUzODJhMGNjZDAwNjdmZmE1ZjA4NSBweTNrCis4ODQ2NiBhMWYzNWMyMWE3MTJjMTE4NWY1YzBhMzIzYjUwYmMzNjgzOWQ1MWU5IHB5M2sKKzg4NDY3IDYxNGUzMjkwMGVmN2RiODZjNmEwYzhkZTFjMDg3Mzk4ZDUyNjVmNmUgcHkzaworODg0NjggZWI4ZmMxY2UxYzgxZWI4M2ZhNzZlMjYxOWI5N2FhYmE5YmUyYTUwMiByZWxlYXNlMzItbWFpbnQKKzg4NDY5IDQ4MjU4NzE4MDI1NWE1MWIwOTIxNjQ1ZWU2ODQxZTM2YjQ4MTA0YTYgcmVsZWFzZTMyLW1haW50Cis4ODQ3MCBiMTdiYmExYzczMDNjZTdlNTlkZmJjMjc4ZjY0ZTU1Nzk2NzMyZjQwIHB5M2sKKzg4NDcxIDQ1MGY4ZDUxZGRhODY5YjNmMzU4MjllYzI1NTZhMWNhYmY3NDk2MTUgcmVsZWFzZTMyLW1haW50Cis4ODQ3MiBmZjg2YTE3OWJjMTNjYTcxMzUzNzBiNTczYTJmZTVlMzYzODU5OGQ3IHJlbGVhc2UzMi1tYWludAorODg0NzMgMTg1Mzk4OWY3NGU3NmFiNDc1Y2IyNjQ1NDY3YmNiOWE4ODMwOGEyMCByZWxlYXNlMzItbWFpbnQKKzg4NDc0IDE1OGQ2ZGVmMmVmODdmMzEyOWFlMGQ0MWM2ZmQyMDZhMWJkYTM1NzIgcHkzaworODg0NzUgYTAzNmMzMGFiNWFlNGFjOWQ3MDViZmU3ZjY0YWUzZDYxNjUwYzk5MyBweTNrCis4ODQ3NiBhYjE2NjRiMjk4ZmNkYjFmOGU5NmM5YjNmNDBhYzk3ZWY5MTYwZGUxIHB5M2sKKzg4NDc3IDAwYTRmZmE3MmRiZTNkMWVhMWQyZDQ2ZjM1MjY5NTEwNDc5MDcyZTcgcmVsZWFzZTMyLW1haW50Cis4ODQ3OCBiYjg1N2Q5YzMwNzEyMGM1ZGZhMjIyNDQ2MWNiNDU5Yzc3NzVmZDI2IHB5M2sKKzg4NDc5IDI4NDAyNmUwMDM0MmQ0YWVlMzI5MGM4MGRlZDJiMWE2MTdlNGJiNGUgcmVsZWFzZTI3LW1haW50Cis4ODQ4MCAyYjhlNmEyMWFlYWExOTU0YjM5ZGJmYWUzMjFmOWE0M2YyODE5ZWFiIHB5M2sKKzg4NDgxIGVmMjhhYWQzYmJhZTBmNTdmMjY0YTBhYmRlNWQ1NGE4YjYxN2RhNzEgcHkzaworODg0ODIgYjRjMTVkODcwOTRkOWVhNTE3ZGZkZmNkZDQ1ZGM1OGU4YTcxMGE4OSBpc3N1ZTEwMjc2LXNub3dsZW9wYXJkCis4ODQ4MyAyM2RlM2FhNzIyMzA2ZDJiZmZlYjBmZWNhMTQ1NzViMTFjYTE5Mzc3IGlzc3VlMTAyNzYtc25vd2xlb3BhcmQKKzg4NDg0IGY1ZTljMTdiODVhZDA2YjE3YmQ1ZDMxY2Y4ODE1YjBmZDUzNzMxMGUgcHkzaworODg0ODUgYzYwNjBlZjVjNDA1MTQ2Y2VkMjJiZWE0OGRkYjI0ODllODk1ZmY0ZiByZWxlYXNlMzItbWFpbnQKKzg4NDg2IDQxYzUyODAzMzBmZDYyNDJkNzFlM2YwYTkyMjFlNzcyODYxMTUyMmIgcHkzaworODg0ODcgNDI5NWUwOTVhZDRmYjhlOTJiY2Y2MWU2MGE1MDZlOWRmNDRhNDFkYiByZWxlYXNlMzItbWFpbnQKKzg4NDg4IGI1NTg2OTU5ODY4M2ZhOWI1YjdlMDQ5MTMyYTkwMzRkMDczMjZlN2MgcmVsZWFzZTI3LW1haW50Cis4ODQ5MCA3ODY2MDcxNGYxN2EzNTU3ZjhiNWU0MTdmYWJiYTIyYzc0M2VlZGUwIHB5M2sKKzg4NDkxIDY3ZWMyNmNjNGI0ZjdlMzFkM2MzY2Q0ODRiZmM3Mjc3NzVjZDc3YjkgcHkzaworODg0OTIgY2UyMGFjNDFlMzFmZDk0MDQwNGNkMDhjNmY4MzJkOTg2MjA2ZGQ0MCBweTNrCis4ODQ5MyBmZWQ3NjhiNzExMzYxODNmNmUyNDI1NjZmODBhZmFlYTQzZGI3ZThkIHB5M2sKKzg4NDk0IDdmODVmYmMxNmNhZWRkMDgzODI4MmY4MWNkYjk4ZDY1NzQxMGNlM2IgcHkzaworODg0OTUgNDczZDIzM2EwNDc4MWRmZjM3OTI3MzlmOTc4ZDM0NDAwNjhlYTY3YSByZWxlYXNlMzItbWFpbnQKKzg4NDk2IGFlMTg2YjNiMmM1NTZlMWNiMzJiM2MxZTk4NjdhMGQ1ZmUzODMyMzUgcHkzaworODg0OTcgMTlkZjQ3ODM5YmNhYjU1ZjdmNjMxOTM2YTExNjhiNGQzZDkxY2JjZSByZWxlYXNlMzItbWFpbnQKKzg4NDk4IGVhMjYwZDM5M2NkZWUzYzNlMzYxNGY5NTdkZWI3MmRiZDc3ZmIwNzAgcHkzaworODg0OTkgYzkwZTBlNWIwZDI1NDcxMDUxZTJhZTZjMTMyZjQ1NGY3NDNiZGFmZSByZWxlYXNlMzItbWFpbnQKKzg4NTAwIDM3MmIyZWYwZmYzN2I2YTFhYTEyZTQzMGNiMmRlYzk5OWI2NDc5M2MgcHkzaworODg1MDEgMjQzMzliZjBjN2U2NmE3ZWExZWNhMmE1MmMyNGYyOGZjYWQ0ZmVmNSBweTNrCis4ODUwMiAzMDQxMWFmMzRlZWJmYWZhNzU1ZmUzMzhmZjM4ZTU0MmQzNzAyYTVlIHJlbGVhc2UzMi1tYWludAorODg1MDMgNWNlNDk5MTgwZDI0NWY4MGI2NmEwNTdlOGRlY2IyYTMzNWFkMWRjNSBweTNrCis4ODUwNCA5ODA2OTc3Njk4NjYyMDVkMDlkMzAwMjAxZmY4NTI1NzcwNDg3YzNmIHJlbGVhc2UzMi1tYWludAorODg1MDUgMjQ3YTI4MTA5MzJhYTU1YzEyNWM1NjEwNjVjMjkyNzQzNGM0MDk1NSBweTNrCis4ODUwNiBhNzUxNWE5NGZkYjViNTA1ODliMjNmMTIxZjYwZWQ0YThkZWY2YzFjIHB5M2sKKzg4NTA3IGUyZjk2YmQyOTI1MmU2MjFiYjllMTU2M2ZiYmIwZWNhODIzMWRlNTMgcHkzaworODg1MDggNjQ4MmRkMWMxMWVkMWMxYWZiOTlkMjM0ZTI4MzBmMzRjOWYzNDc4NiBweTNrCis4ODUwOSAxNmVlNDJkZTBmYWI5MmYxOTBjOGNjYTI3NGM5NGVkNDZiNDkxZDFkIHJlbGVhc2UzMi1tYWludAorODg1MTAgMmI1NGJlNjU1MTY5OGE3MTg1NmE1MmU1YzFhYWQxMjJjODg0MzMzNSByZWxlYXNlMzItbWFpbnQKKzg4NTExIDMyN2E1YTc4YTI1N2NmZTI3YWNkOTAxYzY1ZTA4NGJhNzE5NjE4ZDkgaXNzdWUxMDI3Ni1zbm93bGVvcGFyZAorODg1MTIgMmY4ZWM3N2QzMmNkNDcxOGFhYzc0MTU1NTNiZjc0NWQ1ODMwYWJhMyBweTNrCis4ODUxMyAwNTg2YzY5OWQ0NjdhNjRjM2UyM2RkODc2ZDJkMzYyZTYzM2Q4OTBkIHB5M2sKKzg4NTE0IDYyOTk0NjYyNjc2YTdiZTc5MGUwZGNjYzYzMjgxOGI3ODhmNmJmMjEgcHkzaworODg1MTUgMGU5ZjNiYjYzZDAwYjdhYTUwZGRiYjFlNTc2OGEwODgxZTIyZGQ2ZSByZWxlYXNlMzItbWFpbnQKKzg4NTE2IDJmODljYmJlYzBiNDg0ZDExYjk2NDEwNWQwZGMzMjQ5NmZhZjI4YTggcHkzaworODg1MTcgMDg3NDY5OGIxMjAxZGY5YzJlYzk1ZDA5ZGU4MTA4OGQ1ZGM5MTg5MiBweTNrCis4ODUxOCBlYzNjMDY3NjE4NTZkZDYzMGE5NWUzOTkzMTY5YWZiNzg4ZWU3ZWMzIHB5M2sKKzg4NTE5IGFjMGQ4ZTIxYTQ3ZGViNTVlYWM5Mjc0OTRhMjM4YzE4NjJkNzAwNDMgcmVsZWFzZTMyLW1haW50Cis4ODUyMCA0NGNjOWVmNDMxMjdmOGI2ZDliNWZhNDFmY2Y3YTYxMzk3YmE3ZGJhIHB5M2sKKzg4NTIxIGYyZWRhZjYyZDgyM2ZiNjZmZTc5ZjRkYmYxYmZmNzM4MzIyMWUwODAgcHkzaworODg1MjIgN2Y4ZGExMGJmY2VmY2YzN2VkY2E3OWE4YmFkZTc4ZmJkMjFiMmNkMCBweTNrCis4ODUyMyAxNjVkMDE1YTJiYWYwN2YzMzdkMGY1NjJkMzJkYzVmMmJiZjBjNjI4IHJlbGVhc2UzMi1tYWludAorODg1MjQgMDNmN2FmYmMxNjA4NDhkNGUxN2I2NjBkM2RlZjU3ZDcyOTRmYmQxOSBweTNrCis4ODUyNSBjOGM1N2U3NjY0Mjg1MzFkZjY4YmFhMWNmNTdmYjc2NmJmNzA5MjZkIHB5M2sKKzg4NTI2IDc0ODYxYTQyYTZlNmEyODljM2FiNWI3NzE5YmYwY2Y0ZjBiNzUwMjMgcHkzaworODg1MjcgYmExYWViMzYyMTgyMWYyMjIxMjkxNGY1NWQ4NzE4ZDY1NGM1MWY2YSByZWxlYXNlMzItbWFpbnQKKzg4NTI4IDAzNWVmZGFmODIyOWM3OWM0MjBkMTA0NjFiMDY4ZGU0Yzc2NGNmZTAgcHkzaworODg1MjkgMjMyNWZlMzZhYTM0NTY2M2U5NGVmZGYyNDYyZDA2MTdmZmU0Zjc2OSBweTNrCis4ODUzMCA1YTlkOTBkNGY4OWViODBmMTM0M2JjZjM4NWI3N2U4NTE1ZmVhODZkIHJlbGVhc2UzMi1tYWludAorODg1MzEgYWJhMTZhNTY4M2QzNjg1ZWVlMWQ2MWFhNzQ1NjNjYjZjMTgwZWNhYiBweTNrCis4ODUzMiAzMjM4NmZhNjdhMTJhNzY5MTczMzdhM2MzYjgzODQyODY3YjE5OWQzIHJlbGVhc2UzMi1tYWludAorODg1MzMgY2Y5MTc2ZjJhNjIwNWFkYzRmMzQwNGI2ZTkyNjZkMmEyYzdjYWI4NSByZWxlYXNlMzItbWFpbnQKKzg4NTM0IGExY2ZlODE1ZDk3YWFkMGFmNDkyZWVmNWU4ZTIyOTY1OWM1MTMyMjcgcHkzaworODg1MzUgNWEyOThhZmFjYjk1NTQ3NTdiN2QxMjFhZTkwYzE2N2NmZmUyNTU3MiBweTNrCis4ODUzNyBkZTVjM2EzOWFkZTcyNGRiNDI2NWIyOGYwZjYwMGZjMzc4NWJhNmNjIHJlbGVhc2UyNy1tYWludAorODg1MzggZThkZmU2MDJlZmExY2RlYTk4ZmM1Y2UxYTg4YTU1MGQ2ZTRkZDdhNyByZWxlYXNlMzItbWFpbnQKKzg4NTM5IDk4NjFkYzExODMyMjJmZTBiYjU5YmZhZWViMTMxMzA5MTMwYjJjZGYgcHkzaworODg1NDAgOGJhNzY1MzI4MDMwNmE0M2YwOTI4NmU2OTM5YmViYmZhMmNmYzRiMCBweTNrCis4ODU0MSA3MzI2ZjA2NGQ4M2FmZWE1MjBjYTY2M2M4ZjMzZmJhZWRjOWE5ODU0IHB5M2sKKzg4NTQyIDYwOWYyYjgyMzM1MGU0MmMyNjY0ZWJiMDE4Y2M4NTJhNjg3Njk0MjAgcHkzaworODg1NDMgYmY4OTA2Y2UxMDRiNTAzZGM4YjI4NWI2YjM0MWQwM2NkMzQzZjFlMSByZWxlYXNlMzItbWFpbnQKKzg4NTQ1IGZkNmVjNWUwODRhMmM3ZTZlMWQzNWU2MTRmZDc2NDc0OTAwODc2ZGIgcmVsZWFzZTMyLW1haW50Cis4ODU0NiBkYjdlZjM0ZWVkYWY1YmViOWNkOTI1YTYzYTBjNGMxNzMyNDc4NGExIHB5M2sKKzg4NTQ3IDNlNGQ5NTlmOGUxMmVkZmVlMmVhNWY1ZDA3MTdkOGVlNTMzMjhkOTMgcHkzaworODg1NDggZmVhYjIzMGJkMGRkZTQwYTU5OWYwNDNlN2NjNTJhZGY5YTZjOWY3NCByZWxlYXNlMzItbWFpbnQKKzg4NTQ5IGNjM2MzYTQzODM5OGRkYWYwOWE3MmZlNGI0MWM2Nzk3NjE5NTg2Y2EgcmVsZWFzZTMyLW1haW50Cis4ODU1MCA1NzBjNTkzOWJjMDNlNzIyOGI5MjA0MDU3ZjZmOThlYTdmNjNjNTQ3IHJlbGVhc2UyNy1tYWludAorODg1NTEgY2JjYjI2YTlkMmJkZGQ5MjA0Y2I5NDBmMWY2MmZiM2M4NDZjYTMxNSBweTNrCis4ODU1MiA0NTczOWNhNjNlYjM0NWIwMGExYWIxMDEwOTg5MjdlMzM0ZTJmNjQ1IHJlbGVhc2UzMi1tYWludAorODg1NTMgMjM2YzRkYzZmMGU3ZDdiYjgyNjQ3YzZkODMzZWNlYmQwZWJhNGE4ZSBweTNrCis4ODU1NCBjOGMwZTQyOTQ0YTE2OTdhNjk5YzNhZDJhOTgzMDhhZDAxMTBkNjZkIHB5M2sKKzg4NTU1IDM2NGU0YzEwNjI5N2VhZmFlNmYyNGFiYjljNDE3MjVlYmM2M2Q2MWIgcmVsZWFzZTMyLW1haW50Cis4ODU1NiBiMjQ1ZDY5YjRmMGFkNGU3YWY4NjkwYTNmNWQ5NzVmMmY3M2U2Y2UxIHJlbGVhc2UzMS1tYWludAorODg1NTcgYzc5NjY1ZmIyNjdhYTM3NDcwY2QyMzY1ZDE3MmQ5YzdkZTAyZDYyMiByZWxlYXNlMzEtbWFpbnQKKzg4NTU4IDYxNGE4YzdiOTUyNWFkMDYyOGEyZDY0YmExZTAwZDc5MDk1MjRkMTYgcHkzaworODg1NTkgOTI2MjljY2FhZTc2NDZlNTRiMmM1MDMyN2RhZGNkY2U1ZjQ2ZDliOCByZWxlYXNlMzEtbWFpbnQKKzg4NTYwIDU4NWRiMDY4MDY5ZWQ2MTZlZWQ0NGYyNTMzNzU1ZTQ5MWMyMTJjNWEgcmVsZWFzZTMxLW1haW50Cis4ODU2MSBlZmYyZThmMTViZWQwOGYyNjVhMGFkMzBlZTNhZjUyYjhhODU1NjAxIHJlbGVhc2UzMS1tYWludAorODg1NjIgNWIzNWJiYmUzMmU3MGFiNjcwZGFiNDE5MzdiNDk0MzYzYjg1MjJmZiByZWxlYXNlMzEtbWFpbnQKKzg4NTYzIGUzYzY4NDE1YTMyZDEwMGM2ZGUzMmNmYjkyNzM0OTdlNDQ2YmZlYjAgcmVsZWFzZTMxLW1haW50Cis4ODU2NCBkMzU2NjQ5NTA0ZjlmNDc2YTcxZTRiMWI1OTIyYWUzMjViZTgyNGVhIHJlbGVhc2UyNy1tYWludAorODg1NjUgOGVlZWU5ZDZkMzJiOTEzMWZjMjFkZDc5ZGI1MThlNjE2ZGZlZGFjMyByZWxlYXNlMjctbWFpbnQKKzg4NTY2IGM3Yzc2Y2ZiZGI0ZTAxOWU3OWY2NjJlMzZiMTYxN2M1NTUxMTkzNTMgcmVsZWFzZTI3LW1haW50Cis4ODU2NyAzZTVmMmUyYTg0YWJlNGU4ZDEzNGRjN2M2NTRiNzJkYWQ5ZWQ2NjZkIHB5M2sKKzg4NTY4IDIyNmYwMDFhNzAxZmYzNGFmYjVmMGU4OGVjNTU4NThhODU1YzlhODAgcmVsZWFzZTI3LW1haW50Cis4ODU2OSAzNGFlMzE2MzE4ZWY0NTRmOWMyMzkzZDJlM2I3ZDYwMGFmN2YwMzkzIHJlbGVhc2UyNy1tYWludAorODg1NzAgNzIwYTJmNDRjYmYyY2NhMGY3NGMzZDNlNTliNTY4M2NlOWY1MDJmNCByZWxlYXNlMjctbWFpbnQKKzg4NTcxIDc4ZGIzZDBjNmRiNzJhMWI2ZDE5ZjA5ODE2YjQ2NjliMjhlOGQxNmQgcmVsZWFzZTI3LW1haW50Cis4ODU3MiBiMzU2Yjg3MWJmNjdkMmI1MGZlMzBiZTg3ZDUwNjI4NDNhZGU2YWI1IHJlbGVhc2UyNy1tYWludAorODg1NzMgMDFjOTZiMzc1ODZkZDY3YzQ5ZGZlN2Q2YzgxYTliMTE0MjMzZmUzNSByZWxlYXNlMzEtbWFpbnQKKzg4NTc0IDAzNTI2NzgxMjgyYWUyNThiYjZkNGQxOTVkZDc4ZjUzN2JlY2ViNDMgcHkzaworODg1NzUgNzQwYWI5MjdiZjg5OGJkY2NjNmYxNGU5NTBlM2ExNGRkNzhiOTNjNCBweTNrCis4ODU3NiBiMTdhMDY0OTI5YjA0YzhmNzZhM2U2OTJjMDJhMGI5YTg1YjBmMWEzIHB5M2sKKzg4NTc3IDlmZjdiYzM2MTA2MDQzMzhkZWZhZDFhYTJlM2EzYmY0YTdmMDc4ZWYgcHkzaworODg1NzggZWI1ZWQzZGE2ODYyMzRhMDE1OGI0ZTFiMjQ1ZmQ3ZWJlYzllYjQ5OCBweTNrCis4ODU3OSAxNzYyZDc5ZWFiNjVmNWZjM2I2Mjk3YjU1OTM0Nzc0MjkzZGUwYjcxIHB5M2sKKzg4NTgwIDdmZDgwYzYxZGRhYTNmODBlYjI0YWU0ZjI2MTMyZmJhMGFmNzhhYmIgcHkzaworODg1ODEgZDNmOTNhMTJkNmE5MTVlZTQyMzAxMzAwMDk2ZTcxYmE3OTY0ZGYwYiBweTNrCis4ODU4MiA2MzZiMmI1NTIwNzNkMWYwYjgyYmViYTBhMGVkNDU3ZWI0NzI0NmU4IHJlbGVhc2UzMi1tYWludAorODg1ODMgZmQ0MDExMGQ1ZDg3MzdmOGFkN2EyMjQ5MjJjOTIwOWQzNGY2N2E3YiByZWxlYXNlMjctbWFpbnQKKzg4NTg0IGJkMjUyYzEyZGExZDg4M2M0MWQzYmI2MGEyOGYxYTFhM2QzODYzYWEgcHkzaworODg1ODUgZjRiMWE2NTc5NTQxN2I0YmJlOGVkODk0N2I5ZWNiMTgyZDJhZGEzZCBweTNrCis4ODU4NiBiZTZjMzhkMTgxN2IzMDIwYjc2MDQwMGFhMmY1YWVmNzE3YTljOTIzIHB5M2sKKzg4NTg3IDM2YzFiNjhiMDU4NjVmYjlmYTE4OWI1YjllMGQxZjg4MDg4YTMyYmQgcHkzaworODg1ODggMTlkMDdmYTQyMDA0YjEyNDFlZjY5MzFhOGIyMWZmODAzYmNmZmYwOSBweTNrCis4ODU4OSA4NDJmZWU2YWUwZTUwMzA4OTBlZGY1ZDcwOTNiZTViODlhNTM4NmRkIHB5M2sKKzg4NjAyIDdhYjU2OWIxOGM5OGY4ODRhYmE1ZTVjYjUyNzUxZmY2M2ZhOWFhNzQgcHkzaworODg2MDMgOGM1YjgxMTQ4NGJjMmQyZWUxMzQ2YTNkYTU0NjUyY2U4MzQ5MjBlMiBweTNrCis4ODYwNCAxMmNhNDc3YzQzNzhjMTc1OGQwOTk5NTE2ZTA5YjQ0OTFjZjBhZDczIHB5M2sKKzg4NjA1IGI3ZTg1ZmQwZDFjOTJkYjlmZjliMmQwN2U3ZWE3ZmYwZmJiNjE5ODUgcmVsZWFzZTMyLW1haW50Cis4ODYwNiAxODYzNmI4NzFkMDE3NDIyOTljZmE4MGQzOTg1OWZkYzFmYmU4ZDc2IHJlbGVhc2UyNy1tYWludAorODg2MDcgNGI2MDUyMzIwZTk4M2FkNzk4ZDQxZDMwYzQ5NmZkOWMxNzIxMjQwNyBweTNrCis4ODYwOCBhMDM4MzQyODcyYTM0YzU0ZDcwOTNhNzQ2ODM4YzFlYWZhNjQxYzE3IHB5M2sKKzg4NjA5IGE5ZWIwMDg3YjYwMjE0M2JkNjU5ZmIxZGE5NWEwNzdmMjQzODBhM2UgcHkzaworODg2MTAgNzg1OTMzYmE0OGFjNmIwNDc2MWU1MGY0MjA5YmM2MDgwMTQ2ZTRlMiBweTNrCis4ODYxMSA2NmVkNzFhNmUyOWE4ZjFiZjM5YmJhM2Y2OGIyNmYwZmE2MjA4NDRlIHJlbGVhc2UzMi1tYWludAorODg2MTIgNjc1YjQ4YzRjODhhMWJiNzFlOGJhYjUxZWRkMDczOGM0ZjFkMTYxNyByZWxlYXNlMjctbWFpbnQKKzg4NjEzIDcwNmJlNmVlOTY2OGI0NjQ0MDViZGI2NWI2ZDgzNTk3MWZkNWE5MzMgcHkzaworODg2MTQgNmYxMmFhZGZmYzlmYjkxZDNlMTM5ZGFlYTY1NjU3MmI4M2I3M2RhMiByZWxlYXNlMzItbWFpbnQKKzg4NjE1IDhiM2VmNzE5YmNlZDJkYWE4Zjg0MGIwMTkxNDJjNmIzZTUwNDljMjYgcmVsZWFzZTMxLW1haW50Cis4ODYxNiBkYjQ2ZWRhMjBmZDAyOWZiNzAxMjA5NGM0YTQwNWI0MTMxN2M4ZTRjIHB5M2sKKzg4NjE3IGE3NDkyNGVlYTg2MWE5ZGU5NjFmNTdkM2VlN2QwNjYzZjIxZDk5NGIgcmVsZWFzZTI3LW1haW50Cis4ODYxOCBmNzFhY2M0YjIzNDEwMmI2NzU3OWJlZDJjMTM3ZTBmMDJlNjdlNjVhIHB5M2sKKzg4NjE5IDg3NDI1ZGMyM2YyNmU1ZGVmMWNlMmM2YTAyZTNiMDMzZWQzMDIyZjIgcHkzaworODg2MjAgZDIxOTAwNTExNjc1Y2VhNDlhOTBjN2FjYmIwMmExZWU1ZWZjNWQzMCBweTNrCis4ODYyMSAyNzk2MWRjYTgzMzMwMmMxZjIxNWYwYzk2NTdmMDgyZTkyOWJjMTM0IHB5M2sKKzg4NjIyIDE3ZDFjNmNlZGU3ZWQzYmNjZTI1MjE1M2FlZGFhODFiMjg0ZDA2YzggcHkzaworODg2MjMgNTlmOWVkMTJmMTdhNGVmZWY0MzE4MzA0NTg1ZDE2MDJlYWFkMWNmZiByZWxlYXNlMzItbWFpbnQKKzg4NjI0IDNkM2JhNDUyZjhhZGVjNTMzY2QzMjg2MWJjN2Y3OTdhMzMxODI5YjMgcHkzaworODg2MjUgYWFhZjdiNThlMjA5MGMyZWI2NTA4NmNlZDM0MzRiMGE2YzdjMDA5MyBweTNrCis4ODYyNiAyNjdkYmQ2Yzk4YzMxOTMwMWU5NWM3MDFjYmMxYTg3MDZlYTI0NTIzIHB5M2sKKzg4NjI3IDUzYTQ1ZmI3MDc4NmZhM2RjZWQxMzFkNzZmOTM3YTRkNGU2OGZkNDUgcHkzaworODg2MjggNzNjNWFiYjQxMjk2ZDY5OTc0ZjZiMjMxYjEzOTlkMDJhYjBhZGU4ZSBweTNrCis4ODYyOSAyYTE5ZjAyNWI5NzRhYTViZGUzMzNkOGMxOGIwNTBlNDlmYzFhMWM4IHB5M2sKKzg4NjMwIGE4NjdmMDJkOGY4ZDdmNmIyZDljMGVlNTE3MWVlM2Q5ZDA3YTQxODEgcHkzaworODg2MzEgNjU0YzlmMTNjZmU5ZTEwNzJmNGZiYjEyMGE1NmQ1NWMwMmM4M2NlMSBweTNrCis4ODYzMiBmNDU1NWQzNGYzNDBhMzA5YjEwMmIwMzExNjM3ODY3ZmIxYTA0OWJjIHB5M2sKKzg4NjMzIGIzMjI2YWQ5YTM5OGRmOWRmYjZmNTkwNzIyNzNiMGNmMTc5YmFlNmEgcHkzaworODg2MzQgYmE4ZTMwMmI2MjZjMDA4ZDFkMzFmMzlmODk2ZWVjN2FjZmE4MTczMiByZWxlYXNlMzItbWFpbnQKKzg4NjM1IGM2ZDMwM2I5OWM4MmFhZjI4YThjZjE4MWY3OTJlMmE0NGY0MTZjNGIgcGVwLTMxNTEKKzg4NjM2IDRkZDkzZDBmNWQxZTA3OGRlNzMxNDc5YjIzMjkyZWEzMDU5ZjcxNGYgcHkzaworODg2MzcgNjgwOGQ1ZGJhMWVjMTNmMGZhOTg4YmE5MjVlODFkZmQ1ZGNiNDY0ZCBwZXAtMzE1MQorODg2MzggOWViMjAyZTYzMjBlNGFkYzk3ZWRjOWMyODlmNjcxOTNmMDVkYWIyZCBlbXB0eQorODg2MzkgNDA5MjI5NmEzZDhkYTViMWYxYTA2MmZhYzIzNGExNGFiN2E4NTFiNSBweTNrCis4ODY0MCA3ZmE4NmE5MTk1NjcyYzhkODg4NGViNzYwNDJkY2UwMzIyNWIzNGExIHB5M2sKKzg4NjQxIDYwYTViNGIyMzU1ZGU1ZjczNjY2NTdjODNmY2I1ZDI3ZjE5MTRjMjMgcmVsZWFzZTMxLW1haW50Cis4ODY0MiAwYjU5NmZmNmQ0Njk3NTdlMjczMjAxNzBjM2Y2OGUyYTFhODlmMWVlIHJlbGVhc2UyNy1tYWludAorODg2NDMgNzNkYWY5MWM2MTVjNTNjYzc4YjVkNDljODY0MGM1YWFlYzNiYmI5ZSBweTNrCis4ODY0NCA3NjQxZmUwODlkYTFkYWQ3Y2FmM2YwOTMyOGRkNGE5MDBkNjczYzNhIHJlbGVhc2UzMi1tYWludAorODg2NDQgOTA3ZDViMmVkNWExOWY1ZTIzZDYxNWQyYjIxNGJlMjFhYTBmYjI4YiBweTNrCis4ODY0NSA1NzE3ZGQyMTY2ZWUwNTg0NjI1MmZlZGVmN2Q4ZDQ5ODU0NTIzMzQ5IHJlbGVhc2UzMi1tYWludAorODg2NDUgN2VlYTJhNTc0ZGZjODRjNzA5MTgwOTQ1Mzg4YzhkZGQ2MzNiYjVjMSBweTNrCis4ODY0NiA3NjRiOTllZThjODEwOWY0MGNmOGYwMjYzZDE2MjM2YmRiY2YxZjVlIHJlbGVhc2UzMi1tYWludAorODg2NDYgYzg2ZjkwMzQwY2Q3ZDIyNzJkNjdlYjFjOTBmNDE1ZTNlYWFjNzUzYSBweTNrCis4ODY0NyAwN2FmZmEwMzM4YmFkMjk0MTA1MWEzZWM4NjljZWI0ZWY0ZmYyMGU5IHB5M2sKKzg4NjQ4IDMxZDRiMDRjYjViMDU2N2QyZWQ0YWY3NzNkMTg4Zjg0NWZjYWVkZTMgcmVsZWFzZTMxLW1haW50Cis4ODY0OSA5N2QwNTBjMzE3MmY5ZTJlZGM4MmIyOTIyOGRiZDY4OTFmY2QyYmEwIHJlbGVhc2UyNy1tYWludAorODg2NTAgMjc2ZGU5YjI5MzAzMGMxMDRkZWI3YzY3NWUzYWY2OTk2OWE5ODc0MiBweTNrCis4ODY1MSAzNzRmMGIyMmU0YTRjNWIxYmU0MGQwNjFkNWY4NDY5YmExZDU0YjJkIHJlbGVhc2UzMi1tYWludAorODg2NTIgMDkxMjlhYWZiOTUzNmJkY2ZiZmQ3YTQ0YzNiYzJlMWQwMjk3MmUzNSBweTNrCis4ODY1MyBmZWQyYzZkNDlmMTk4MDA2ZTU0YjM3OTFhNDk1ZjdiYmFjYmUwODlhIHB5M2sKKzg4NjU0IDk3OWRhOGYxMzlkZDNkNmUyMTlmMGJhYmZmNDc2Zjk1Y2NlNmE1MjEgcmVsZWFzZTMyLW1haW50Cis4ODY1NCA2YThmYTJlOWIxMDU1Y2FkN2NjMjE4Mzk5MDNmOWYzOTgzYzM1NzgwIHB5M2sKKzg4NjU1IGNkMTQ3ODI4ODZjYWEyODUwM2JiMzU2ZjViM2MzN2E0MWUyMTFiNDEgcmVsZWFzZTMyLW1haW50Cis4ODY1NiA3MjJhZWViNTdlYWJiZGZmOWJmNTFiNGY4NDNlYTFmYzQwZmVkMDE5IHB5M2sKKzg4NjU4IDEwMjU2YmQ2ODc4NzkxNWY4ZjNmZmQ1OTQ2MTFkNjcwMDY5MDI3ZTIgcHkzaworODg2NTkgNTlmNzRhYWQ5NzAzMWYxOWRlYWRjZThmODY5MDQ1YWRmZDk4NDc5MCByZWxlYXNlMzItbWFpbnQKKzg4NjYwIGM3N2IyNWFkZmVjMjNjNDE0MWE1MWNkZTFhODU5Mzk1ZDkzMTBjMTUgcHkzaworODg2NjIgYTU4MTI5Y2RkMzY1NzMyNGEyZWYwODg0ZDQ5ZmRjNGRiZmI0YzUxNiByZWxlYXNlMjctbWFpbnQKKzg4NjYzIDg2ODdhMWI3MzUxNmNjNTIwMzFjNzcwOTgyZDkyZDkyZmJlNGRiZGMgcHkzaworODg2NjQgMTkwOWMxMmVmMDZjN2MxYzJlMjI0MjYyOWMzYjgyZDFkNzc0NDg3NSBweTNrCis4ODY2NSA2Y2VjMDkxMDIwYTJjOTk2OWFjOGFhMjk3ZGFmMmYzNmRlZDQ5ZmQ0IHJlbGVhc2UzMi1tYWludAorODg2NjYgNzQyZDczYTk5NDI1NzRiNTEzMGM5NGRlMWYzYTI4NmMxZTIyNzBjYiByZWxlYXNlMjctbWFpbnQKKzg4NjY4IDY1MGQxNDgyMGJkOGM2NmRmNGEwYmFhNWQxZGRhZTNkNDA4NzViMGYgcHkzaworODg2NjkgYTk1NjU5MjViYTcwNjFkNjM3MTg0MDY0ZDc4ZmI1MmY4ZGM4MmIyMyByZWxlYXNlMjctbWFpbnQKKzg4NjcwIGE1YjVmZGE2Njg5YzY1M2Q4NWQ2ZjQ3ZTdlMGE0NmQ0ZTIxZDFiM2QgcmVsZWFzZTMyLW1haW50Cis4ODY3MSAyZjA3ZDM3NWNlNmVlY2FiNDcxZTVkOGViYjg4OTEwNmYxNjlkYTEwIHB5M2sKKzg4NjcyIDQ1NjUwZWIzNDY4NTExN2E3Yjg2Zjc1NmZiMTI2ZGNiMmYzZmQ1MTEgcmVsZWFzZTMyLW1haW50Cis4ODY3MyAyMTQzNmU0ODE2MWZjMzE3MDIwMTAwMWNjYWJhN2E1NWIzOWRiNTc1IHJlbGVhc2UyNy1tYWludAorODg2NzQgZGM4NjI2ZTA4NTc3ZDZiMWZkMTJlNDBmZDU5YzllNTIzMDA4ZDZhMyByZWxlYXNlMjctbWFpbnQKKzg4Njc1IDcyOGZiYzI2MzU5YzEwN2ZmNzU1Y2U1YmI2YjliM2IwODBmMWJlZjEgcGVwLTMxNTEKKzg4Njc5IGNiZDA2MDgxMDNmNjEwNmVmYTFkNjUyM2Q5ZTBlYWI5OTRkY2ExNGYgcHkzaworODg2ODAgYjdkNjJiYzAxOTk4ODkyMTJiZGNkNDBkNWQwNGEzY2E5ODhkMzQ1ZiBweTNrCis4ODY4MiAyZGRjYTU1ZTA5OGRkYTJiMWE2ODU2YTM1OWUxOWY3OGQ5ODVjNjg4IHB5M2sKKzg4NjgzIGJiZGRhYzVjMThkMzk4MGU3NjU4YTA5YmQ0ZmU4NTQxNzk4YzM1M2MgcHkzaworODg2ODQgN2M2YjIxZGIwMGUzZTNmMTU1ZDJiOGE5MWQxMmNkMjg0ODIwODc0ZSBweTNrCis4ODY4NSBhMmQ2MTExN2MyZDI2NDlmOTA5MGY2ODlhYTg1YzU1NzVhNmQ3MzM5IHB5M2sKKzg4Njg2IDEwYjgzOGY2ZTVhMWE5NGJhNzNhMWQzYzY1Yzk1MGNkZDhkNWRiMzMgcHkzaworODg2ODcgZmRmMzJmYTBmNDQwZTcxZTUwZDBmZmMzNTIyOWQ2YTE0YzdkMmE0MiByZWxlYXNlMzItbWFpbnQKKzg4Njg4IGIyOTRmZjc1NzMzNjVjZGRjY2E4YTI3YzE2NDlmZDE4ZDE5OTQ0OGMgcGVwLTM4MgorODg2ODkgZjhhNzdmZDY3NWY1YTNjZTA1MWVlNDA0YzdiNTZkYjFjNzJlYmYxZCByZWxlYXNlMzEtbWFpbnQKKzg4NjkwIDQ0NzM0ZDM3NTM5MzE1NDhhYzRhOGVkOTI4MmIwMzQ5YjhiNjAxNTIgcmVsZWFzZTMxLW1haW50Cis4ODY5MSAyNjExY2JkNzVjNGY5NzFjZjZmYmY2YjMzNzI3OTk2NjdiNTk1MDMwIHB5M2sKKzg4NjkyIGEzNjYwOTZiOTVhZDJhNmI1ZjhhODZiNGE5MDhkMjI4NzFiOGNkYzkgcmVsZWFzZTMyLW1haW50Cis4ODY5MyAxNzk3MzAwZjg3Yjk5ODY1YjY2NTgxY2VkYWE4NDc2ZDI0NTg3NTFmIHJlbGVhc2UyNy1tYWludAorODg2OTQgOWFjYzkwMjFmMTFlMzAyMTgzNmM4OWNlODI1ODNiYmY4ZWY5N2E5MyBwZXAtMzgyCis4ODY5NiA4ZTA3ZmM5NDg2ODA2ODQ5MDVmMjZlY2E0ZTYyY2I4ZmJkYWVkNjQ4IHB5M2sKKzg4Njk3IDliNzI1NDY3MGNlOWRhMDAyNzUzY2EwMGMyNDhlYWJmNWRkZjNmYWUgcHkzaworODg2OTggNzJmMzBmOGVmMzMxZTliNWY1MTQwZThmMzFlYTdkY2JlYjkwMDBhMiByZWxlYXNlMzItbWFpbnQKKzg4Njk5IGI4MmMzZTU5M2RiNjU1NWZiODE2NTgxNmJjN2EyOWNhMWIyMjdjNDYgcHkzaworODg3MDAgMWQxOTg1MThjYjg3NWMzOWU1M2FlZTNhZjdkNTRhNjZmYzEyZDNmMyBweTNrCis4ODcwMSA1ZGMzNDkzZTA3YTlmMmE4MzBlNzlhYjMwODFjMDY0OTAzMGMzZDE2IHJlbGVhc2UzMi1tYWludAorODg3MDIgZGE5NTQ0MGQ5MmIzNmIwMDgyMTg3MTExNWQzM2IwYzUxMDhjMTFmMyBweTNrCis4ODcwMyA3M2E0OTlmMGVhZjFiMGFlZjI4NDRhNjFhMTljMTM0MDk5N2Y4ZDdjIHB5M2sKKzg4NzA0IDg3ZGUwMTdkYTRiZjdjYjNkNjAyNzY1MTdkMjE4MzBiM2FlOWUwZDcgcHkzaworODg3MDUgNzI5MGI4ZjNjOWZiOTk4NDY2OWQwODA3ZTk4NGJlYzcxMzUxM2YwMyBweTNrCis4ODcwNiAzM2U3NjhkMjNiMTZhNTcxMGU0ZjUyMmE2MjA4ZTkyYmNjMmQzY2U5IHB5M2sKKzg4NzA3IDZmMTE3ZDI3YWQxYzVlNjMyMzlkZDUyYzMyNTYyZDgyNDI1YWY4NjcgcHkzaworODg3MDggYzdhOTM2MzYyMjgxOWYzZWFiNzcyYzc4MDQzNGIyMzQ3MWZlMGIyNSBweTNrCis4ODcwOSAzNzhlZTMyOGI2MGUwYjE2MzZhYTI0NzU3YmVhMWExNWY5MjgxYWU0IHB5M2sKKzg4NzEwIGExZGJlNTNmMzc5ODQ1ZmY2MzY3MDliMDhhYjQ1NjMzN2M4NjVjOTMgcHkzaworODg3MTEgNGRhYzQ3NjllYTI0OGFhY2M4MzA3N2U1N2E2NGQyYzEzNDFjMjNhYSBweTNrCis4ODcxMiA2YjEyZDJiNjhmMjUzMzNkZDVhZmZlNmUzZThmNDZiNTVjZDQyNDI0IHB5M2sKKzg4NzE3IDBkYzZhOTBkZWUyMTkxMjJhYmY1NjZhYzg1OGFlYTY1YzQzMDA4MmYgcHkzaworODg3MTggNmM4ZWM1ZjhiOWU1MWJjZTE1NGUxMThlZmE5MWY3MWIwMDk2ZWJkMCByZWxlYXNlMzItbWFpbnQKKzg4NzE5IGE0ZTdmYmVkNzUzYzczMWE1NTI2N2NlNzEwMDlhODBkODI3MDRkNGEgcHkzaworODg3MjAgNzM4ZmVlYzljZWQwMWZjMzEzODkyZGIzYjEwNTg5ZmI2MDI1Yjg3YSBweTNrCis4ODcyMSAyMGE1YTA4YzNiNmNhOWQ4YTQwODY5N2I5NTc2NzBkNWUzZDYyOWMwIHB5M2sKKzg4NzIyIDIwOGE1MjkwZmQzOGVjOGM0ZmUxMzhlNzllODIzZDAxODc0M2VjYzYgcHkzaworODg3MjMgYTE3MjcwNjNhN2RmZWIwZDJhNjNhNmIxYTI5ZjQ2ZmVjMzJiMDU4MiByZWxlYXNlMzItbWFpbnQKKzg4NzI0IGY1Mzk4ZmI4MTQyODliMjRhOGIwNWZhZWQzNDRmN2Y5MGI3NzU2ZDcgcHkzaworODg3MjUgMmZjZTljNzQyY2RlYWI0ZGVkMTExNTJlY2JkZDkwNjdlMTBlZjBlMiByZWxlYXNlMzEtbWFpbnQKKzg4NzI2IGRkYzBiYjZhN2I3YzcyYzdhYmI3YjFjNDgwZGVhOGZkOTE4ZGI5Y2UgcHkzaworODg3MjcgNThjYjBmZTA2ZGFhMzY1MTk1MzU1MWJlNWIxMWIxNDUwMTU0N2IwMCByZWxlYXNlMzItbWFpbnQKKzg4NzI4IDk2NWFiOTkxMWZjZDBlZjE0YWZlMGRhOWY4MzU1NWM2ODk3OGU3ZDAgcmVsZWFzZTI3LW1haW50Cis4ODcyOSBmMjA0NmRmY2E3MzExMzY3MmQ1OWI1MDQ2ZmY4NmIwYjAzYjQxZDA5IHB5M2sKKzg4NzMwIGI1MjgxZjVmYWRlNGRkNTY3ZjFmMWQ1NmZhYzljZTdkNTdlYjlmOTkgcHkzaworODg3MzEgYmM5ZWZiYmU2M2NmM2ViM2EzYjdjMWI5MjQ2YzU0NGY2ZmE1ZmViMiByZWxlYXNlMzItbWFpbnQKKzg4NzMyIGE4Mzg5NDY4ZTY1MTM3YzUwNjVmNzAyYzg0NmI5YzBlNTYxZTU5NzIgcmVsZWFzZTI3LW1haW50Cis4ODczMyAwODgwNGFlYTA4ZjFjNDhhMTZjODQ5ZGExMjcwN2U1MWE4N2Q4NmQ5IHB5M2sKKzg4NzM0IDJmNWY3NTViMjY4NzhjYjBmYjM1YzBjNTkwNzNhYWYxOGViZTM2ODMgcHkzaworODg3MzUgZDJiNWJkZTVjMWZhNGM5NGE3NDdjNjcwMTYzZDZhYzcwMWY5NjA5NiBweTNrCis4ODczOSAxYTA1YmMzNmEzMzQwYTRlNmI1OTYxNTM4NTQzZjEwZTliZjhjZjdhIHJlbGVhc2UzMi1tYWludAorODg3NDAgM2Y3MGM1NGQ4NmQ4OWFkY2Y3YTc0NTIwMjU5NjdhOGY3MGJlMjljZiBweTNrCis4ODc0MSBlMmRmYzhmMjRkM2Y2ZWE4Mzg2M2QyZTMyYzBjMzAzZTAyNmFhYWZkIHJlbGVhc2UyNy1tYWludAorODg3NDIgOTNmZDE2NjcwNzc0YTI3N2I5MTczOTA0MjZiODRjMjhhYjc5NmM3YSBweTNrCis4ODc0NCBlNzQyMDliOWIyZjUyODhmOTM3ZDZlMzQxMWEyY2YxMGE4NjQ2YjA0IHB5M2sKKzg4NzQ1IGU3YjZhZGJhNTcxYWE5M2E0NDE0NWYwZWJmN2I1YmJhMmUzODU5MzEgcHkzaworODg3NDYgNTBiMzhlNGIwMjMxMjY3YjkxNzU1YzRkMWEwMDcyMGYzODE5NTI2OCBweTNrCis4ODc0NyAwZTcxODBlNGMzY2RiOTQ4NDE4YmMxN2I1NzRkMWZmNjUxNDI5ZjRkIHB5M2sKKzg4NzUyIDg1YTM0YTMxNjk2OTI3ODU5M2Q0NTRhODZlZjQzYTJmNzZjMmQ3NmMgcHkzay1jZGVjaW1hbApkaWZmIC0tZ2l0IGEvTWlzYy92YWxncmluZC1weXRob24uc3VwcCBiL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAKaW5kZXggYTY2MzA1Yi4uODFhMDdjOSAxMDA2NDQKLS0tIGEvTWlzYy92YWxncmluZC1weXRob24uc3VwcAorKysgYi9NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwCkBAIC0xMzcsNiArMTM3LDE4IEBACiAjIyN9CiAjIyMKICMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpBZGRyOAorIyMjICAgZnVuOlB5T2JqZWN0X0ZyZWUKKyMjI30KKyMjIworIyMjeworIyMjICAgQUREUkVTU19JTl9SQU5HRS9Vc2Ugb2YgdW5pbml0aWFsaXNlZCB2YWx1ZSBvZiBzaXplIDgKKyMjIyAgIE1lbWNoZWNrOlZhbHVlOAorIyMjICAgZnVuOlB5T2JqZWN0X0ZyZWUKKyMjI30KKyMjIworIyMjewogIyMjICAgQUREUkVTU19JTl9SQU5HRS9Db25kaXRpb25hbCBqdW1wIG9yIG1vdmUgZGVwZW5kcyBvbiB1bmluaXRpYWxpc2VkIHZhbHVlCiAjIyMgICBNZW1jaGVjazpDb25kCiAjIyMgICBmdW46UHlPYmplY3RfRnJlZQpAQCAtMTU1LDYgKzE2NywxOCBAQAogIyMjfQogIyMjCiAjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6QWRkcjgKKyMjIyAgIGZ1bjpQeU9iamVjdF9SZWFsbG9jCisjIyN9CisjIyMKKyMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpWYWx1ZTgKKyMjIyAgIGZ1bjpQeU9iamVjdF9SZWFsbG9jCisjIyN9CisjIyMKKyMjI3sKICMjIyAgIEFERFJFU1NfSU5fUkFOR0UvQ29uZGl0aW9uYWwganVtcCBvciBtb3ZlIGRlcGVuZHMgb24gdW5pbml0aWFsaXNlZCB2YWx1ZQogIyMjICAgTWVtY2hlY2s6Q29uZAogIyMjICAgZnVuOlB5T2JqZWN0X1JlYWxsb2MKQEAgLTI4Niw2ICszMTAsMzggQEAKICMjIyAgIGZ1bjpNRDVfVXBkYXRlCiAjIyN9CiAKKyMgRmVkb3JhJ3MgcGFja2FnZSAib3BlbnNzbC0xLjAuMS0wLjEuYmV0YTIuZmMxNy54ODZfNjQiIG9uIHg4Nl82NAorIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE0MTcxCit7CisgICBvcGVuc3NsIDEuMC4xIHBybmcgMQorICAgTWVtY2hlY2s6Q29uZAorICAgZnVuOmJjbXAKKyAgIGZ1bjpmaXBzX2dldF9lbnRyb3B5CisgICBmdW46RklQU19kcmJnX2luc3RhbnRpYXRlCisgICBmdW46UkFORF9pbml0X2ZpcHMKKyAgIGZ1bjpPUEVOU1NMX2luaXRfbGlicmFyeQorICAgZnVuOlNTTF9saWJyYXJ5X2luaXQKKyAgIGZ1bjppbml0X2hhc2hsaWIKK30KKworeworICAgb3BlbnNzbCAxLjAuMSBwcm5nIDIKKyAgIE1lbWNoZWNrOkNvbmQKKyAgIGZ1bjpmaXBzX2dldF9lbnRyb3B5CisgICBmdW46RklQU19kcmJnX2luc3RhbnRpYXRlCisgICBmdW46UkFORF9pbml0X2ZpcHMKKyAgIGZ1bjpPUEVOU1NMX2luaXRfbGlicmFyeQorICAgZnVuOlNTTF9saWJyYXJ5X2luaXQKKyAgIGZ1bjppbml0X2hhc2hsaWIKK30KKworeworICAgb3BlbnNzbCAxLjAuMSBwcm5nIDMKKyAgIE1lbWNoZWNrOlZhbHVlOAorICAgZnVuOl94ODZfNjRfQUVTX2VuY3J5cHRfY29tcGFjdAorICAgZnVuOkFFU19lbmNyeXB0Cit9CisKICMKICMgQWxsIG9mIHRoZXNlIHByb2JsZW1zIGNvbWUgZnJvbSB1c2luZyB0ZXN0X3NvY2tldF9zc2wKICMKQEAgLTM4OCw0ICs0NDQsMjggQEAKICAgIGZ1bjpTSEExX1VwZGF0ZQogfQogCit7CisgICB0ZXN0X2J1ZmZlcl9ub25fZGVidWcKKyAgIE1lbWNoZWNrOkFkZHI0CisgICBmdW46UHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgorfQorCit7CisgICB0ZXN0X2J1ZmZlcl9ub25fZGVidWcKKyAgIE1lbWNoZWNrOkFkZHI0CisgICBmdW46UHlVbmljb2RlX0ZTQ29udmVydGVyCit9CisKKyMgQWRkaXRpb25hbCBzdXBwcmVzc2lvbnMgZm9yIHRoZSB1bmlmaWVkIGRlY2ltYWwgdGVzdHM6Cit7CisgICB0ZXN0X2RlY2ltYWwKKyAgIE1lbWNoZWNrOkFkZHI0CisgICBmdW46UHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgorfQorCit7CisgICB0ZXN0X2RlY2ltYWwyCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZV9GU0NvbnZlcnRlcgorfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmRpc3QgYi9Nb2R1bGVzL1NldHVwLmRpc3QKaW5kZXggOTI2OWRkZi4uZjQ1ZGU1YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5kaXN0CisrKyBiL01vZHVsZXMvU2V0dXAuZGlzdApAQCAtMTI3LDYgKzEyNyw5IEBACiAjIGJ1aWx0aW4gbW9kdWxlIGF2b2lkcyBzb21lIGJvb3RzdHJhcHBpbmcgcHJvYmxlbXMgYW5kIHJlZHVjZXMgb3ZlcmhlYWQuCiB6aXBpbXBvcnQgemlwaW1wb3J0LmMKIAorIyBmYXVsdGhhbmRsZXIgbW9kdWxlCitmYXVsdGhhbmRsZXIgZmF1bHRoYW5kbGVyLmMKKwogIyBUaGUgcmVzdCBvZiB0aGUgbW9kdWxlcyBsaXN0ZWQgaW4gdGhpcyBmaWxlIGFyZSBhbGwgY29tbWVudGVkIG91dCBieQogIyBkZWZhdWx0LiAgVXN1YWxseSB0aGV5IGNhbiBiZSBkZXRlY3RlZCBhbmQgYnVpbHQgYXMgZHluYW1pY2FsbHkKICMgbG9hZGVkIG1vZHVsZXMgYnkgdGhlIG5ldyBzZXR1cC5weSBzY3JpcHQgYWRkZWQgaW4gUHl0aG9uIDIuMS4gIElmCkBAIC0yMDcsNyArMjEwLDcgQEAKICMKICMgRmlyc3QsIGxvb2sgYXQgU2V0dXAuY29uZmlnOyBjb25maWd1cmUgbWF5IGhhdmUgc2V0IHRoaXMgZm9yIHlvdS4KIAotI2NyeXB0IGNyeXB0bW9kdWxlLmMgIyAtbGNyeXB0CSMgY3J5cHQoMyk7IG5lZWRzIC1sY3J5cHQgb24gc29tZSBzeXN0ZW1zCisjX2NyeXB0IF9jcnlwdG1vZHVsZS5jICMgLWxjcnlwdAkjIGNyeXB0KDMpOyBuZWVkcyAtbGNyeXB0IG9uIHNvbWUgc3lzdGVtcwogCiAKICMgU29tZSBtb3JlIFVOSVggZGVwZW5kZW50IG1vZHVsZXMgLS0gb2ZmIGJ5IGRlZmF1bHQsIHNpbmNlIHRoZXNlCkBAIC0yMzEsMTUgKzIzNCwxNCBAQAogIyBzeXN0ZW0gZG9lcyBub3QgaGF2ZSB0aGUgT3BlblNTTCBsaWJzIGNvbnRhaW5pbmcgYW4gb3B0aW1pemVkIHZlcnNpb24uCiAKICMgVGhlIF9tZDUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIE1ENQotIyBNZXNzYWdlLURpZ2VzdCBBbGdvcml0aG0sIGRlc2NyaWJlZCBpbiBSRkMgMTMyMS4gIFRoZSBuZWNlc3NhcnkgZmlsZXMKLSMgbWQ1LmMgYW5kIG1kNS5oIGFyZSBpbmNsdWRlZCBoZXJlLgorIyBNZXNzYWdlLURpZ2VzdCBBbGdvcml0aG0sIGRlc2NyaWJlZCBpbiBSRkMgMTMyMS4KIAotI19tZDUgbWQ1bW9kdWxlLmMgbWQ1LmMKKyNfbWQ1IG1kNW1vZHVsZS5jCiAKIAogIyBUaGUgX3NoYSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgU0hBIGNoZWNrc3VtIGFsZ29yaXRobXMuCiAjIChOSVNUJ3MgU2VjdXJlIEhhc2ggQWxnb3JpdGhtcy4pCi0jX3NoYSBzaGFtb2R1bGUuYworI19zaGExIHNoYTFtb2R1bGUuYwogI19zaGEyNTYgc2hhMjU2bW9kdWxlLmMKICNfc2hhNTEyIHNoYTUxMm1vZHVsZS5jCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKaW5kZXggZWFlMjk3OC4uZmFjYThjZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKQEAgLTkwLDcgKzkwLDkgQEAKICAgICAgICAgaWYgKFB5TGlzdF9JbnNlcnQobGlzdCwgaW5kZXgsIGl0ZW0pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QobGlzdCwgImluc2VydCIsICJuTyIsIGluZGV4LCBpdGVtKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoaW5zZXJ0KTsKKworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGxpc3QsICZQeUlkX2luc2VydCwgIm5PIiwgaW5kZXgsIGl0ZW0pOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC0xOTMsNyArMTk1LDggQEAKICAgICAgICAgaWYgKFB5TGlzdF9JbnNlcnQobGlzdCwgaW5kZXgsIGl0ZW0pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QobGlzdCwgImluc2VydCIsICJuTyIsIGluZGV4LCBpdGVtKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoaW5zZXJ0KTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChsaXN0LCAmUHlJZF9pbnNlcnQsICJuTyIsIGluZGV4LCBpdGVtKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYnoybW9kdWxlLmMgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2FjOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKQEAgLTAsMCArMSw2MDUgQEAKKy8qIF9iejIgLSBMb3ctbGV2ZWwgUHl0aG9uIGludGVyZmFjZSB0byBsaWJiemlwMi4gKi8KKworI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKworI2lmZGVmIFdJVEhfVEhSRUFECisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8YnpsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKyNpZm5kZWYgQlpfQ09ORklHX0VSUk9SCisjZGVmaW5lIEJaMl9iekNvbXByZXNzIGJ6Q29tcHJlc3MKKyNkZWZpbmUgQloyX2J6Q29tcHJlc3NJbml0IGJ6Q29tcHJlc3NJbml0CisjZGVmaW5lIEJaMl9iekNvbXByZXNzRW5kIGJ6Q29tcHJlc3NFbmQKKyNkZWZpbmUgQloyX2J6RGVjb21wcmVzcyBiekRlY29tcHJlc3MKKyNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0luaXQgYnpEZWNvbXByZXNzSW5pdAorI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzRW5kIGJ6RGVjb21wcmVzc0VuZAorI2VuZGlmICAvKiAhIEJaX0NPTkZJR19FUlJPUiAqLworCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKSBkbyB7IFwKKyAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMCkpIHsgXAorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTIFwKKyAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAxKTsgXAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCisgICAgfSB9IHdoaWxlICgwKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKSBQeVRocmVhZF9yZWxlYXNlX2xvY2soKG9iaiktPmxvY2spCisjZWxzZQorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQorI2VuZGlmCisKKyNkZWZpbmUgTUlOKFgsIFkpICgoKFgpIDwgKFkpKSA/IChYKSA6IChZKSkKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJ6X3N0cmVhbSBienM7CisgICAgaW50IGZsdXNoZWQ7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBCWjJDb21wcmVzc29yOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJ6X3N0cmVhbSBienM7CisgICAgY2hhciBlb2Y7ICAgICAgICAgICAvKiBUX0JPT0wgZXhwZWN0cyBhIGNoYXIgKi8KKyAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBCWjJEZWNvbXByZXNzb3I7CisKKworLyogSGVscGVyIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIGludAorY2F0Y2hfYnoyX2Vycm9yKGludCBiemVycm9yKQoreworICAgIHN3aXRjaChiemVycm9yKSB7CisgICAgICAgIGNhc2UgQlpfT0s6CisgICAgICAgIGNhc2UgQlpfUlVOX09LOgorICAgICAgICBjYXNlIEJaX0ZMVVNIX09LOgorICAgICAgICBjYXNlIEJaX0ZJTklTSF9PSzoKKyAgICAgICAgY2FzZSBCWl9TVFJFQU1fRU5EOgorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyNpZmRlZiBCWl9DT05GSUdfRVJST1IKKyAgICAgICAgY2FzZSBCWl9DT05GSUdfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpYmJ6aXAyIHdhcyBub3QgY29tcGlsZWQgY29ycmVjdGx5Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgICAgICBjYXNlIEJaX1BBUkFNX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybmFsIGVycm9yIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHBhcmFtZXRlcnMgcGFzc2VkIHRvIGxpYmJ6aXAyIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9NRU1fRVJST1I6CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUjoKKyAgICAgICAgY2FzZSBCWl9EQVRBX0VSUk9SX01BR0lDOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJJbnZhbGlkIGRhdGEgc3RyZWFtIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9JT19FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiVW5rbm93biBJL08gZXJyb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX1VORVhQRUNURURfRU9GOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSBsb2dpY2FsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSB3YXMgZGV0ZWN0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX1NFUVVFTkNFX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJuYWwgZXJyb3IgLSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgc2VxdWVuY2Ugb2YgY29tbWFuZHMgc2VudCB0byBsaWJiemlwMiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGVycm9yIGZyb20gbGliYnppcDI6ICVkIiwgYnplcnJvcik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKKyNpZiBCVUZTSVogPCA4MTkyCisjZGVmaW5lIFNNQUxMQ0hVTksgODE5MgorI2Vsc2UKKyNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKKyNlbmRpZgorCitzdGF0aWMgaW50Citncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK3sKKyAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCisgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gVXNlIGEgbGVzcy10aGFuLWRvdWJsZQorICAgICAgIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCisgICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOworICAgIHNpemVfdCBuZXdfc2l6ZSA9IHNpemUgKyAoc2l6ZSA+PiAzKSArIDY7CisgICAgaWYgKG5ld19zaXplID4gc2l6ZSkgeworICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1ZiwgbmV3X3NpemUpOworICAgIH0gZWxzZSB7ICAvKiBvdmVyZmxvdyAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgYnVmZmVyIC0gb3V0cHV0IHRvbyBsYXJnZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorfQorCisKKy8qIEJaMkNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb21wcmVzcyhCWjJDb21wcmVzc29yICpjLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuLCBpbnQgYWN0aW9uKQoreworICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYy0+YnpzLm5leHRfaW4gPSBkYXRhOworICAgIC8qIE9uIGEgNjQtYml0IHN5c3RlbSwgbGVuIG1pZ2h0IG5vdCBmaXQgaW4gYXZhaWxfaW4gKGFuIHVuc2lnbmVkIGludCkuCisgICAgICAgRG8gY29tcHJlc3Npb24gaW4gY2h1bmtzIG9mIG5vIG1vcmUgdGhhbiBVSU5UX01BWCBieXRlcyBlYWNoLiAqLworICAgIGMtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICBsZW4gLT0gYy0+YnpzLmF2YWlsX2luOworICAgIGMtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgYy0+YnpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNoYXIgKnRoaXNfb3V0OworICAgICAgICBpbnQgYnplcnJvcjsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHRoaXNfb3V0ID0gYy0+YnpzLm5leHRfb3V0OworICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoJmMtPmJ6cywgYWN0aW9uKTsKKyAgICAgICAgZGF0YV9zaXplICs9IGMtPmJ6cy5uZXh0X291dCAtIHRoaXNfb3V0OworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAoYy0+YnpzLmF2YWlsX2luID09IDAgJiYgbGVuID4gMCkgeworICAgICAgICAgICAgYy0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgICAgICAgICAgbGVuIC09IGMtPmJ6cy5hdmFpbF9pbjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEluIHJlZ3VsYXIgY29tcHJlc3Npb24gbW9kZSwgc3RvcCB3aGVuIGlucHV0IGRhdGEgaXMgZXhoYXVzdGVkLgorICAgICAgICAgICBJbiBmbHVzaGluZyBtb2RlLCBzdG9wIHdoZW4gYWxsIGJ1ZmZlcmVkIGRhdGEgaGFzIGJlZW4gZmx1c2hlZC4gKi8KKyAgICAgICAgaWYgKChhY3Rpb24gPT0gQlpfUlVOICYmIGMtPmJ6cy5hdmFpbF9pbiA9PSAwKSB8fAorICAgICAgICAgICAgKGFjdGlvbiA9PSBCWl9GSU5JU0ggJiYgYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChjLT5ienMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBjLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYy0+YnpzLmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihCWjJDb21wcmVzc29yX2NvbXByZXNzX19kb2NfXywKKyJjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZlxuIgorImNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYicnIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvIHRoZSBjb21wcmVzc29yLCBjYWxsIHRoZVxuIgorImZsdXNoKCkgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQloyQ29tcHJlc3Nvcl9jb21wcmVzcyhCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wcmVzc29yIGhhcyBiZWVuIGZsdXNoZWQiKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGNvbXByZXNzKHNlbGYsIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIEJaX1JVTik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlEb2NfU1RSVkFSKEJaMkNvbXByZXNzb3JfZmx1c2hfX2RvY19fLAorImZsdXNoKCkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0XG4iCisiaW4gaW50ZXJuYWwgYnVmZmVycy5cbiIKKyJcbiIKKyJUaGUgY29tcHJlc3NvciBvYmplY3QgbWF5IG5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQloyQ29tcHJlc3Nvcl9mbHVzaChCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5mbHVzaGVkKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlJlcGVhdGVkIGNhbGwgdG8gZmx1c2goKSIpOworICAgIGVsc2UgeworICAgICAgICBzZWxmLT5mbHVzaGVkID0gMTsKKyAgICAgICAgcmVzdWx0ID0gY29tcHJlc3Moc2VsZiwgTlVMTCwgMCwgQlpfRklOSVNIKTsKKyAgICB9CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0JaMkNvbXByZXNzb3JfaW5pdChCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7CisgICAgaW50IGJ6ZXJyb3I7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOkJaMkNvbXByZXNzb3IiLCAmY29tcHJlc3NsZXZlbCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoISgxIDw9IGNvbXByZXNzbGV2ZWwgJiYgY29tcHJlc3NsZXZlbCA8PSA5KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJVbmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKKyAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KCZzZWxmLT5ienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOworICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitCWjJDb21wcmVzc29yX2RlYWxsb2MoQloyQ29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBCWjJfYnpDb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpCisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyNlbmRpZgorICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBCWjJDb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAorICAgIHsiZmx1c2giLCAgICAoUHlDRnVuY3Rpb24pQloyQ29tcHJlc3Nvcl9mbHVzaCwgICAgTUVUSF9OT0FSR1MsCisgICAgIEJaMkNvbXByZXNzb3JfZmx1c2hfX2RvY19ffSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihCWjJDb21wcmVzc29yX19kb2NfXywKKyJCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWw9OSlcbiIKKyJcbiIKKyJDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCBmb3IgY29tcHJlc3NpbmcgZGF0YSBpbmNyZW1lbnRhbGx5LlxuIgorIlxuIgorImNvbXByZXNzbGV2ZWwsIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cbiIKKyJcbiIKKyJGb3Igb25lLXNob3QgY29tcHJlc3Npb24sIHVzZSB0aGUgY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQloyQ29tcHJlc3Nvcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYnoyLkJaMkNvbXByZXNzb3IiLCAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoQloyQ29tcHJlc3NvciksICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUJaMkNvbXByZXNzb3JfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgQloyQ29tcHJlc3Nvcl9fZG9jX18sICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBCWjJDb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylCWjJDb21wcmVzc29yX2luaXQsICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBCWjJEZWNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqZCwgY2hhciAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKyAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgZC0+YnpzLm5leHRfaW4gPSBkYXRhOworICAgIC8qIE9uIGEgNjQtYml0IHN5c3RlbSwgbGVuIG1pZ2h0IG5vdCBmaXQgaW4gYXZhaWxfaW4gKGFuIHVuc2lnbmVkIGludCkuCisgICAgICAgRG8gZGVjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzIGVhY2guICovCisgICAgZC0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgIGxlbiAtPSBkLT5ienMuYXZhaWxfaW47CisgICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBkLT5ienMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgY2hhciAqdGhpc19vdXQ7CisgICAgICAgIGludCBiemVycm9yOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgdGhpc19vdXQgPSBkLT5ienMubmV4dF9vdXQ7CisgICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKCZkLT5ienMpOworICAgICAgICBkYXRhX3NpemUgKz0gZC0+YnpzLm5leHRfb3V0IC0gdGhpc19vdXQ7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7CisgICAgICAgICAgICBkLT5lb2YgPSAxOworICAgICAgICAgICAgbGVuICs9IGQtPmJ6cy5hdmFpbF9pbjsKKyAgICAgICAgICAgIGlmIChsZW4gPiAwKSB7IC8qIFNhdmUgbGVmdG92ZXIgaW5wdXQgdG8gdW51c2VkX2RhdGEgKi8KKyAgICAgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7CisgICAgICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGQtPmJ6cy5uZXh0X2luLCBsZW4pOworICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGQtPmJ6cy5hdmFpbF9pbiA9PSAwKSB7CisgICAgICAgICAgICBpZiAobGVuID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgICAgICAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOworICAgICAgICB9CisgICAgICAgIGlmIChkLT5ienMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZC0+YnpzLmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX18sCisiZGVjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGInJyBvdGhlcndpc2UuXG4iCisiXG4iCisiQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZFxuIgorInJhaXNlcyBhbiBFT0ZFcnJvci4gQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtXG4iCisiaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5lb2YpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgIkVuZCBvZiBzdHJlYW0gYWxyZWFkeSByZWFjaGVkIik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4pOworICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0JaMkRlY29tcHJlc3Nvcl9pbml0KEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGJ6ZXJyb3I7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpCWjJEZWNvbXByZXNzb3IiKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKKyAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCAwLCAwKTsKKyAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK0JaMkRlY29tcHJlc3Nvcl9kZWFsbG9jKEJaMkRlY29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBCWjJfYnpEZWNvbXByZXNzRW5kKCZzZWxmLT5ienMpOworICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpCisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyNlbmRpZgorICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBCWjJEZWNvbXByZXNzb3JfbWV0aG9kc1tdID0geworICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLAorICAgICBCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9lb2ZfX2RvY19fLAorIlRydWUgaWYgdGhlIGVuZC1vZi1zdHJlYW0gbWFya2VyIGhhcyBiZWVuIHJlYWNoZWQuIik7CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfX2RvY19fLAorIkRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uIik7CisKK3N0YXRpYyBQeU1lbWJlckRlZiBCWjJEZWNvbXByZXNzb3JfbWVtYmVyc1tdID0geworICAgIHsiZW9mIiwgVF9CT09MLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIGVvZiksCisgICAgIFJFQURPTkxZLCBCWjJEZWNvbXByZXNzb3JfZW9mX19kb2NfX30sCisgICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIHVudXNlZF9kYXRhKSwKKyAgICAgUkVBRE9OTFksIEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX199LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9fZG9jX18sCisiQloyRGVjb21wcmVzc29yKClcbiIKKyJcbiIKKyJDcmVhdGUgYSBkZWNvbXByZXNzb3Igb2JqZWN0IGZvciBkZWNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJGb3Igb25lLXNob3QgZGVjb21wcmVzc2lvbiwgdXNlIHRoZSBkZWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cbiIpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkRlY29tcHJlc3Nvcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYnoyLkJaMkRlY29tcHJlc3NvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoQloyRGVjb21wcmVzc29yKSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUJaMkRlY29tcHJlc3Nvcl9kZWFsbG9jLC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgQloyRGVjb21wcmVzc29yX19kb2NfXywgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBCWjJEZWNvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgQloyRGVjb21wcmVzc29yX21lbWJlcnMsICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylCWjJEZWNvbXByZXNzb3JfaW5pdCwgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBNb2R1bGUgaW5pdGlhbGl6YXRpb24uICovCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2J6Mm1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl9iejIiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19iejIodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkNvbXByZXNzb3JfVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJEZWNvbXByZXNzb3JfVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9iejJtb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfSU5DUkVGKCZCWjJDb21wcmVzc29yX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyQ29tcHJlc3NvciIsIChQeU9iamVjdCAqKSZCWjJDb21wcmVzc29yX1R5cGUpOworCisgICAgUHlfSU5DUkVGKCZCWjJEZWNvbXByZXNzb3JfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJEZWNvbXByZXNzb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmQloyRGVjb21wcmVzc29yX1R5cGUpOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCmluZGV4IGViNzQwZjkuLjQwMDM3YjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCkBAIC0zOCw2ICszOCwxMCBAQAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKIC8qIC0tLSBSZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiBQeURvY19TVFJWQVIocmVnaXN0ZXJfX2RvY19fLApAQCAtMTYyLDcgKzE2Niw2IEBACiBlc2NhcGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKQEAgLTE3NCwxMiArMTc3LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3RyKTsKLSAgICBuZXdzaXplID0gNCpzaXplOwotICAgIGlmIChuZXdzaXplID4gUFlfU1NJWkVfVF9NQVggfHwgbmV3c2l6ZSAvIDQgIT0gc2l6ZSkgeworICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyA0KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgInN0cmluZyBpcyB0b28gbGFyZ2UgdG8gZW5jb2RlIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbmV3c2l6ZSA9IDQqc2l6ZTsKICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuZXdzaXplKTsKIAogICAgIGlmICh2ID09IE5VTEwpIHsKQEAgLTIwNSw4ICsyMDgsOCBAQAogICAgICAgICAgICAgZWxzZSBpZiAoYyA8ICcgJyB8fCBjID49IDB4N2YpIHsKICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2MgJiAweGZdOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2MgJiAweGZdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICpwKysgPSBjOwpAQCAtMjM2LDggKzIzOSwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0lOQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUob2JqLCBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSk7CisgICAgICAgIHJldHVybiBjb2RlY190dXBsZShvYmosIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihvYmosIChjb25zdCB2b2lkICoqKSZkYXRhLCAmc2l6ZSkpCkBAIC01ODgsNyArNTkzLDcgQEAKICAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOwogfQogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYmNzX2RlY29kZShQeU9iamVjdCAqc2VsZiwKQEAgLTYxMyw3ICs2MTgsMzIgQEAKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2NvZGVfcGFnZV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBwYnVmOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gTlVMTDsKKyAgICBpbnQgY29kZV9wYWdlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSp8emk6Y29kZV9wYWdlX2RlY29kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjb25zdW1lZCA9IHBidWYubGVuOworCisgICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CisgICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKK30KKworI2VuZGlmIC8qIEhBVkVfTUJDUyAqLwogCiAvKiAtLS0gRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjQ1LDE3ICs2NzUsMzEgQEAKICAgICBQeU9iamVjdCAqb2JqOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlfc3NpemVfdCBsZW4sIHNpemU7CisKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JqLCAmZXJyb3JzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKLSAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9BU19EQVRBKG9iaik7Ci0gICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShvYmopOwotICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLCBzaXplKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvYmopKTsKKyAgICAgICAgUHlfVU5JQ09ERSAqdTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgdSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKG9iaiwgJmxlbik7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHNpemUgPSBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSk7CisgICAgICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKil1LCBzaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihvYmosIChjb25zdCB2b2lkICoqKSZkYXRhLCAmc2l6ZSkpCkBAIC02NzYsMTQgKzcyMCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjcoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGNyhzdHIsIDAsIDAsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzAwLDEyICs3NDIsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0ciwgInV0Zi04IiwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03MzAsMTMgKzc3MiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzUzLDEzICs3OTQsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03NzYsMTMgKzgxNiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgKzEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTgwNywxMyArODQ2LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04MzAsMTMgKzg2OCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTg1MywxMyArODkwLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKzEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODc2LDExICs5MTIsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTg5NywxMiArOTM0LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTkxOSwxMyArOTU2LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTQyLDEzICs5NzgsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVBU0NJSSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTY4LDE0ICsxMDAzLDEyIEBACiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05ODksNyArMTAyMiw3IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKG1hcCk7CiB9CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKIAogc3RhdGljIFB5T2JqZWN0ICoKIG1iY3NfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLApAQCAtMTAwMywxOCArMTAzNiw0MiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZU1CQ1MoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCBzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQogCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2NvZGVfcGFnZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzdHIsICp2OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGNvZGVfcGFnZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHY7Cit9CisKKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIEVycm9yIGhhbmRsZXIgcmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTExMDEsOSArMTE1OCwxMSBAQAogICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAgICAgICAgICBjaGFybWFwX2RlY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJjaGFybWFwX2J1aWxkIiwgICAgICAgICAgIGNoYXJtYXBfYnVpbGQsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWRidWZmZXJfZW5jb2RlIiwgICAgICAgcmVhZGJ1ZmZlcl9lbmNvZGUsICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogICAgIHsibWJjc19lbmNvZGUiLCAgICAgICAgICAgICBtYmNzX2VuY29kZSwgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJtYmNzX2RlY29kZSIsICAgICAgICAgICAgIG1iY3NfZGVjb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNvZGVfcGFnZV9lbmNvZGUiLCAgICAgICAgY29kZV9wYWdlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY29kZV9wYWdlX2RlY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKICAgICB7InJlZ2lzdGVyX2Vycm9yIiwgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgICAgIHJlZ2lzdGVyX2Vycm9yX19kb2NfX30sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwppbmRleCAzMTRiYWZkLi5kNjg5OWMyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKQEAgLTc2Nyw4ICs3NjcsOSBAQAogZGVxdWVfcmVkdWNlKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKICAgICBQeU9iamVjdCAqZGljdCwgKnJlc3VsdCwgKmFzbGlzdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilkZXF1ZSwgIl9fZGljdF9fIik7CisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopZGVxdWUsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGFzbGlzdCA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilkZXF1ZSk7CkBAIC04MzIsOCArODMzLDcgQEAKIAogICAgIGlmICghUHlPYmplY3RfVHlwZUNoZWNrKHYsICZkZXF1ZV90eXBlKSB8fAogICAgICAgICAhUHlPYmplY3RfVHlwZUNoZWNrKHcsICZkZXF1ZV90eXBlKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICAvKiBTaG9ydGN1dHMgKi8KQEAgLTExNDEsNiArMTE0MSwzNSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVpdGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeV9zc2l6ZV90IGksIGluZGV4PTA7CisgICAgUHlPYmplY3QgKmRlcXVlOworICAgIGRlcXVlaXRlcm9iamVjdCAqaXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxuIiwgJmRlcXVlX3R5cGUsICZkZXF1ZSwgJmluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KHR5cGUgPT0gJmRlcXVlaXRlcl90eXBlKTsKKworICAgIGl0ID0gKGRlcXVlaXRlcm9iamVjdCopZGVxdWVfaXRlcigoZGVxdWVvYmplY3QgKilkZXF1ZSk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogY29uc3VtZSBpdGVtcyBmcm9tIHRoZSBxdWV1ZSAqLworICAgIGZvcihpPTA7IGk8aW5kZXg7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlaXRlcl9uZXh0KGl0KTsKKyAgICAgICAgaWYgKGl0ZW0pIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpdC0+Y291bnRlcikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0KilpdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlaXRlcl9sZW4oZGVxdWVpdGVyb2JqZWN0ICppdCkKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGl0LT5jb3VudGVyKTsKQEAgLTExNDgsMTQgKzExNzcsMjEgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVpdGVyX3JlZHVjZShkZXF1ZWl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUoaXQpLCBpdC0+ZGVxdWUsIGl0LT5kZXF1ZS0+bGVuIC0gaXQtPmNvdW50ZXIpOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgZGVxdWVpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilkZXF1ZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZGVxdWVpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlaXRlcl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJkZXF1ZV9pdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoZGVxdWVpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC0xMTgzLDYgKzEyMTksMTYgQEAKICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWRlcXVlaXRlcl9uZXh0LCAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZGVxdWVpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGRlcXVlaXRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwKIH07CiAKQEAgLTEyMzYsOSArMTI4MiwzOCBAQAogICAgIHJldHVybiBpdGVtOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVyZXZpdGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeV9zc2l6ZV90IGksIGluZGV4PTA7CisgICAgUHlPYmplY3QgKmRlcXVlOworICAgIGRlcXVlaXRlcm9iamVjdCAqaXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxuIiwgJmRlcXVlX3R5cGUsICZkZXF1ZSwgJmluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KHR5cGUgPT0gJmRlcXVlcmV2aXRlcl90eXBlKTsKKworICAgIGl0ID0gKGRlcXVlaXRlcm9iamVjdCopZGVxdWVfcmV2aXRlcigoZGVxdWVvYmplY3QgKilkZXF1ZSk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogY29uc3VtZSBpdGVtcyBmcm9tIHRoZSBxdWV1ZSAqLworICAgIGZvcihpPTA7IGk8aW5kZXg7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlcmV2aXRlcl9uZXh0KGl0KTsKKyAgICAgICAgaWYgKGl0ZW0pIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpdC0+Y291bnRlcikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0KilpdDsKK30KKwogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZXJldml0ZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGRlcXVlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtMTI2Niw2ICsxMzQxLDE2IEBACiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkZXF1ZXJldml0ZXJfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGRlcXVlaXRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBkZXF1ZXJldml0ZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsCiB9OwogCkBAIC0xMzU0LDEzICsxNDM5LDE1IEBACiAgICAgUHlPYmplY3QgKml0ZW1zOwogICAgIFB5T2JqZWN0ICppdGVyOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOworCiAgICAgaWYgKGRkLT5kZWZhdWx0X2ZhY3RvcnkgPT0gTlVMTCB8fCBkZC0+ZGVmYXVsdF9mYWN0b3J5ID09IFB5X05vbmUpCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKICAgICBlbHNlCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgZGQtPmRlZmF1bHRfZmFjdG9yeSk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaXRlbXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKWRkLCAiaXRlbXMiLCAiKCkiKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCAiKCkiKTsKICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTU3MywxMiArMTY2MCw4IEBACiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG1hcHBpbmcpKSB7CiAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICBrZXkgPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBvbGR2YWwgPSBQeURpY3RfR2V0SXRlbShtYXBwaW5nLCBrZXkpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgb25lKSA9PSAtMSkKQEAgLTE1OTYsMTIgKzE2NzksOCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICBrZXkgPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBvbGR2YWwgPSBQeU9iamVjdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQpAQCAtMTY3OCw5ICsxNzU3LDEzIEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXF1ZWl0ZXJfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJmRlcXVlaXRlcl90eXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9kZXF1ZV9pdGVyYXRvciIsIChQeU9iamVjdCAqKSZkZXF1ZWl0ZXJfdHlwZSk7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXF1ZXJldml0ZXJfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJmRlcXVlcmV2aXRlcl90eXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9kZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgKFB5T2JqZWN0ICopJmRlcXVlcmV2aXRlcl90eXBlKTsKIAogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jcnlwdG1vZHVsZS5jIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBNb2R1bGVzL2NyeXB0bW9kdWxlLmMKcmVuYW1lIHRvIE1vZHVsZXMvX2NyeXB0bW9kdWxlLmMKaW5kZXggZDVhNDJmZi4uNTEwMDc4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jcnlwdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBjcnlwdG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImNyeXB0IiwKKyAgICAiX2NyeXB0IiwKICAgICBOVUxMLAogICAgIC0xLAogICAgIGNyeXB0X21ldGhvZHMsCkBAIC01Niw3ICs1Niw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X2NyeXB0KHZvaWQpCitQeUluaXRfX2NyeXB0KHZvaWQpCiB7CiAgICAgcmV0dXJuIFB5TW9kdWxlX0NyZWF0ZSgmY3J5cHRtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCA4OGQ0Zjk3Li5jYzg3YmFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtMTYsOSArMTYsMzkgQEAKICNkZWZpbmUgSVNfQkFTRVNUUklORyhvKSBcCiAgICAgUHlVbmljb2RlX0NoZWNrKG8pCiAKLXN0YXRpYyBQeU9iamVjdCAqZXJyb3Jfb2JqOyAgICAgLyogQ1NWIGV4Y2VwdGlvbiAqLwotc3RhdGljIFB5T2JqZWN0ICpkaWFsZWN0czsgICAgICAvKiBEaWFsZWN0IHJlZ2lzdHJ5ICovCi1zdGF0aWMgbG9uZyBmaWVsZF9saW1pdCA9IDEyOCAqIDEwMjQ7ICAgLyogbWF4IHBhcnNlZCBmaWVsZCBzaXplICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmVycm9yX29iajsgICAvKiBDU1YgZXhjZXB0aW9uICovCisgICAgUHlPYmplY3QgKmRpYWxlY3RzOyAgIC8qIERpYWxlY3QgcmVnaXN0cnkgKi8KKyAgICBsb25nIGZpZWxkX2xpbWl0OyAgIC8qIG1heCBwYXJzZWQgZmllbGQgc2l6ZSAqLworfSBfY3N2c3RhdGU7CisKKyNkZWZpbmUgX2NzdnN0YXRlKG8pICgoX2NzdnN0YXRlICopUHlNb2R1bGVfR2V0U3RhdGUobykpCisKK3N0YXRpYyBpbnQKK19jc3ZfY2xlYXIoUHlPYmplY3QgKm0pCit7CisgICAgUHlfQ0xFQVIoX2NzdnN0YXRlKG0pLT5lcnJvcl9vYmopOworICAgIFB5X0NMRUFSKF9jc3ZzdGF0ZShtKS0+ZGlhbGVjdHMpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY3N2X3RyYXZlcnNlKFB5T2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChfY3N2c3RhdGUobSktPmVycm9yX29iaik7CisgICAgUHlfVklTSVQoX2NzdnN0YXRlKG0pLT5kaWFsZWN0cyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitfY3N2X2ZyZWUodm9pZCAqbSkKK3sKKyAgIF9jc3ZfY2xlYXIoKFB5T2JqZWN0ICopbSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2Nzdm1vZHVsZTsKKworI2RlZmluZSBfY3N2c3RhdGVfZ2xvYmFsICgoX2NzdnN0YXRlICopUHlNb2R1bGVfR2V0U3RhdGUoUHlTdGF0ZV9GaW5kTW9kdWxlKCZfY3N2bW9kdWxlKSkpCiAKIHR5cGVkZWYgZW51bSB7CiAgICAgU1RBUlRfUkVDT1JELCBTVEFSVF9GSUVMRCwgRVNDQVBFRF9DSEFSLCBJTl9GSUVMRCwKQEAgLTQ3LDkgKzc3LDkgQEAKICAgICBQeU9iamVjdF9IRUFECiAKICAgICBpbnQgZG91YmxlcXVvdGU7ICAgICAgICAgICAgLyogaXMgIiByZXByZXNlbnRlZCBieSAiIj8gKi8KLSAgICBQeV9VTklDT0RFIGRlbGltaXRlcjsgICAgICAgLyogZmllbGQgc2VwYXJhdG9yICovCi0gICAgUHlfVU5JQ09ERSBxdW90ZWNoYXI7ICAgICAgIC8qIHF1b3RlIGNoYXJhY3RlciAqLwotICAgIFB5X1VOSUNPREUgZXNjYXBlY2hhcjsgICAgICAvKiBlc2NhcGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCBkZWxpbWl0ZXI7ICAgICAgIC8qIGZpZWxkIHNlcGFyYXRvciAqLworICAgIFB5X1VDUzQgcXVvdGVjaGFyOyAgICAgICAvKiBxdW90ZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0IGVzY2FwZWNoYXI7ICAgICAgLyogZXNjYXBlIGNoYXJhY3RlciAqLwogICAgIGludCBza2lwaW5pdGlhbHNwYWNlOyAgICAgICAvKiBpZ25vcmUgc3BhY2VzIGZvbGxvd2luZyBkZWxpbWl0ZXI/ICovCiAgICAgUHlPYmplY3QgKmxpbmV0ZXJtaW5hdG9yOyAvKiBzdHJpbmcgdG8gd3JpdGUgYmV0d2VlbiByZWNvcmRzICovCiAgICAgaW50IHF1b3Rpbmc7ICAgICAgICAgICAgICAgIC8qIHN0eWxlIG9mIHF1b3RpbmcgdG8gd3JpdGUgKi8KQEAgLTY4LDcgKzk4LDcgQEAKIAogICAgIFB5T2JqZWN0ICpmaWVsZHM7ICAgICAgICAgICAvKiBmaWVsZCBsaXN0IGZvciBjdXJyZW50IHJlY29yZCAqLwogICAgIFBhcnNlclN0YXRlIHN0YXRlOyAgICAgICAgICAvKiBjdXJyZW50IENTViBwYXJzZSBzdGF0ZSAqLwotICAgIFB5X1VOSUNPREUgKmZpZWxkOyAgICAgICAgICAvKiBidWlsZCBjdXJyZW50IGZpZWxkIGluIGhlcmUgKi8KKyAgICBQeV9VQ1M0ICpmaWVsZDsgICAgICAgICAgICAgLyogdGVtcG9yYXJ5IGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgZmllbGRfc2l6ZTsgICAgICAvKiBzaXplIG9mIGFsbG9jYXRlZCBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbjsgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgZmllbGQgKi8KICAgICBpbnQgbnVtZXJpY19maWVsZDsgICAgICAgICAgLyogdHJlYXQgZmllbGQgYXMgbnVtZXJpYyAqLwpAQCAtODYsNyArMTE2LDcgQEAKIAogICAgIERpYWxlY3RPYmogKmRpYWxlY3Q7ICAgIC8qIHBhcnNpbmcgZGlhbGVjdCAqLwogCi0gICAgUHlfVU5JQ09ERSAqcmVjOyAgICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgcGFyc2VyLmpvaW4gKi8KKyAgICBQeV9VQ1M0ICpyZWM7ICAgICAgICAgICAgLyogYnVmZmVyIGZvciBwYXJzZXIuam9pbiAqLwogICAgIFB5X3NzaXplX3QgcmVjX3NpemU7ICAgICAgICAvKiBzaXplIG9mIGFsbG9jYXRlZCByZWNvcmQgKi8KICAgICBQeV9zc2l6ZV90IHJlY19sZW47ICAgICAgICAgLyogbGVuZ3RoIG9mIHJlY29yZCAqLwogICAgIGludCBudW1fZmllbGRzOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZmllbGRzIGluIHJlY29yZCAqLwpAQCAtMTAzLDEwICsxMzMsMTAgQEAKIHsKICAgICBQeU9iamVjdCAqZGlhbGVjdF9vYmo7CiAKLSAgICBkaWFsZWN0X29iaiA9IFB5RGljdF9HZXRJdGVtKGRpYWxlY3RzLCBuYW1lX29iaik7CisgICAgZGlhbGVjdF9vYmogPSBQeURpY3RfR2V0SXRlbShfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cywgbmFtZV9vYmopOwogICAgIGlmIChkaWFsZWN0X29iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYoZGlhbGVjdF9vYmopOwpAQCAtMTIxLDE0ICsxNTEsMTQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWdldF9udWxsY2hhcl9hc19Ob25lKFB5X1VOSUNPREUgYykKK2dldF9udWxsY2hhcl9hc19Ob25lKFB5X1VDUzQgYykKIHsKICAgICBpZiAoYyA9PSAnXDAnKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgoUHlfVU5JQ09ERSAqKSZjLCAxKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwMywyNSArMjMzLDIzIEBACiB9CiAKIHN0YXRpYyBpbnQKLV9zZXRfY2hhcihjb25zdCBjaGFyICpuYW1lLCBQeV9VTklDT0RFICp0YXJnZXQsIFB5T2JqZWN0ICpzcmMsIFB5X1VOSUNPREUgZGZsdCkKK19zZXRfY2hhcihjb25zdCBjaGFyICpuYW1lLCBQeV9VQ1M0ICp0YXJnZXQsIFB5T2JqZWN0ICpzcmMsIFB5X1VDUzQgZGZsdCkKIHsKICAgICBpZiAoc3JjID09IE5VTEwpCiAgICAgICAgICp0YXJnZXQgPSBkZmx0OwogICAgIGVsc2UgewogICAgICAgICAqdGFyZ2V0ID0gJ1wwJzsKICAgICAgICAgaWYgKHNyYyAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpidWY7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGJ1ZiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc3JjKTsKLSAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKHNyYyk7Ci0gICAgICAgICAgICBpZiAoYnVmID09IE5VTEwgfHwgbGVuID4gMSkgeworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dldExlbmd0aChzcmMpOworICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiXCIlc1wiIG11c3QgYmUgYW4gMS1jaGFyYWN0ZXIgc3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxlbiA+IDApCi0gICAgICAgICAgICAgICAgKnRhcmdldCA9IGJ1ZlswXTsKKyAgICAgICAgICAgICAgICAqdGFyZ2V0ID0gUHlVbmljb2RlX1JFQURfQ0hBUihzcmMsIDApOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtNTAyLDcgKzUzMCw4IEBACiB7CiAgICAgUHlPYmplY3QgKmZpZWxkOwogCi0gICAgZmllbGQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+ZmllbGQsIHNlbGYtPmZpZWxkX2xlbik7CisgICAgZmllbGQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBzZWxmLT5maWVsZCwgc2VsZi0+ZmllbGRfbGVuKTsKICAgICBpZiAoZmllbGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHNlbGYtPmZpZWxkX2xlbiA9IDA7CkBAIC01MTEsMTEgKzU0MCw5IEBACiAKICAgICAgICAgc2VsZi0+bnVtZXJpY19maWVsZCA9IDA7CiAgICAgICAgIHRtcCA9IFB5TnVtYmVyX0Zsb2F0KGZpZWxkKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgZmllbGQgPSB0bXA7CiAgICAgfQogICAgIFB5TGlzdF9BcHBlbmQoc2VsZi0+ZmllbGRzLCBmaWVsZCk7CkBAIC01MzAsMTYgKzU1NywxNiBAQAogICAgICAgICBzZWxmLT5maWVsZF9zaXplID0gNDA5NjsKICAgICAgICAgaWYgKHNlbGYtPmZpZWxkICE9IE5VTEwpCiAgICAgICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmZpZWxkKTsKLSAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9OZXcoUHlfVU5JQ09ERSwgc2VsZi0+ZmllbGRfc2l6ZSk7CisgICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fTmV3KFB5X1VDUzQsIHNlbGYtPmZpZWxkX3NpemUpOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCAqZmllbGQgPSBzZWxmLT5maWVsZDsKICAgICAgICAgaWYgKHNlbGYtPmZpZWxkX3NpemUgPiBQWV9TU0laRV9UX01BWCAvIDIpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5maWVsZF9zaXplICo9IDI7Ci0gICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fUmVzaXplKHNlbGYtPmZpZWxkLCBQeV9VTklDT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5maWVsZF9zaXplKTsKKyAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9SZXNpemUoZmllbGQsIFB5X1VDUzQsIHNlbGYtPmZpZWxkX3NpemUpOwogICAgIH0KICAgICBpZiAoc2VsZi0+ZmllbGQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtNTQ5LDExICs1NzYsMTEgQEAKIH0KIAogc3RhdGljIGludAotcGFyc2VfYWRkX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VTklDT0RFIGMpCitwYXJzZV9hZGRfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VDUzQgYykKIHsKLSAgICBpZiAoc2VsZi0+ZmllbGRfbGVuID49IGZpZWxkX2xpbWl0KSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJmaWVsZCBsYXJnZXIgdGhhbiBmaWVsZCBsaW1pdCAoJWxkKSIsCi0gICAgICAgICAgICAgICAgICAgICBmaWVsZF9saW1pdCk7CisgICAgaWYgKHNlbGYtPmZpZWxkX2xlbiA+PSBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAiZmllbGQgbGFyZ2VyIHRoYW4gZmllbGQgbGltaXQgKCVsZCkiLAorICAgICAgICAgICAgICAgICAgICAgX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChzZWxmLT5maWVsZF9sZW4gPT0gc2VsZi0+ZmllbGRfc2l6ZSAmJiAhcGFyc2VfZ3Jvd19idWZmKHNlbGYpKQpAQCAtNTYzLDcgKzU5MCw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhcnNlX3Byb2Nlc3NfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgYykKK3BhcnNlX3Byb2Nlc3NfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VDUzQgYykKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKIApAQCAtNzEwLDcgKzczNyw3IEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBpbGxlZ2FsICovCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAiJyVjJyBleHBlY3RlZCBhZnRlciAnJWMnIiwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICInJWMnIGV4cGVjdGVkIGFmdGVyICclYyciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3QtPmRlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsZWN0LT5xdW90ZWNoYXIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNzIzLDcgKzc1MCw3IEBACiAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwJykKICAgICAgICAgICAgIHNlbGYtPnN0YXRlID0gU1RBUlRfUkVDT1JEOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJuZXctbGluZSBjaGFyYWN0ZXIgc2VlbiBpbiB1bnF1b3RlZCBmaWVsZCAtIGRvIHlvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgaW4gdW5pdmVyc2FsLW5ld2xpbmUgbW9kZT8iKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJuZXctbGluZSBjaGFyYWN0ZXIgc2VlbiBpbiB1bnF1b3RlZCBmaWVsZCAtIGRvIHlvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgaW4gdW5pdmVyc2FsLW5ld2xpbmUgbW9kZT8iKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTc0OCwxMCArNzc1LDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUmVhZGVyX2l0ZXJuZXh0KFJlYWRlck9iaiAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqbGluZW9iajsKICAgICBQeU9iamVjdCAqZmllbGRzID0gTlVMTDsKLSAgICBQeV9VTklDT0RFICpsaW5lLCBjOwotICAgIFB5X3NzaXplX3QgbGluZWxlbjsKKyAgICBQeV9VQ1M0IGM7CisgICAgUHlfc3NpemVfdCBwb3MsIGxpbmVsZW47CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeU9iamVjdCAqbGluZW9iajsKIAogICAgIGlmIChwYXJzZV9yZXNldChzZWxmKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzYyLDE0ICs3OTEsMTUgQEAKICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSAmJiAoc2VsZi0+ZmllbGRfbGVuICE9IDAgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RhdGUgPT0gSU5fUVVPVEVEX0ZJRUxEKSkgewogICAgICAgICAgICAgICAgIGlmIChzZWxmLT5kaWFsZWN0LT5zdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhlcnJvcl9vYmosICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIik7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlX3NhdmVfZmllbGQoc2VsZikgPj0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhsaW5lb2JqKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdG9yIHNob3VsZCByZXR1cm4gc3RyaW5ncywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiKGRpZCB5b3Ugb3BlbiB0aGUgZmlsZSBpbiB0ZXh0IG1vZGU/KSIsCkBAIC03NzksMTcgKzgwOSwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgKytzZWxmLT5saW5lX251bTsKLSAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobGluZW9iaik7Ci0gICAgICAgIGxpbmVsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShsaW5lb2JqKTsKLSAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCB8fCBsaW5lbGVuIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGxpbmVvYmopOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobGluZW9iaik7CisgICAgICAgIHBvcyA9IDA7CisgICAgICAgIGxpbmVsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lb2JqKTsKICAgICAgICAgd2hpbGUgKGxpbmVsZW4tLSkgewotICAgICAgICAgICAgYyA9ICpsaW5lKys7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKICAgICAgICAgICAgIGlmIChjID09ICdcMCcpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSBjb250YWlucyBOVUxMIGJ5dGUiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgIH0KQEAgLTc5Nyw2ICs4MjUsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcysrOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgaWYgKHBhcnNlX3Byb2Nlc3NfY2hhcihzZWxmLCAwKSA8IDApCkBAIC05NTMsMTMgKzk4MiwxMyBAQAogICogcmVjb3JkIGxlbmd0aC4KICAqLwogc3RhdGljIFB5X3NzaXplX3QKLWpvaW5fYXBwZW5kX2RhdGEoV3JpdGVyT2JqICpzZWxmLCBQeV9VTklDT0RFICpmaWVsZCwgaW50IHF1b3RlX2VtcHR5LAotICAgICAgICAgICAgICAgICBpbnQgKnF1b3RlZCwgaW50IGNvcHlfcGhhc2UpCitqb2luX2FwcGVuZF9kYXRhKFdyaXRlck9iaiAqc2VsZiwgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQsIHZvaWQgKmZpZWxkX2RhdGEsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZmllbGRfbGVuLCBpbnQgcXVvdGVfZW1wdHksIGludCAqcXVvdGVkLAorICAgICAgICAgICAgICAgICBpbnQgY29weV9waGFzZSkKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IHJlY19sZW47Ci0gICAgUHlfVU5JQ09ERSAqbGluZXRlcm07CiAKICNkZWZpbmUgQUREQ0goYykgXAogICAgIGRvIHtcCkBAIC05NjgsMTAgKzk5Nyw2IEBACiAgICAgICAgIHJlY19sZW4rKztcCiAgICAgfSB3aGlsZSgwKQogCi0gICAgbGluZXRlcm0gPSBQeVVuaWNvZGVfQXNVbmljb2RlKGRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKLSAgICBpZiAobGluZXRlcm0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgcmVjX2xlbiA9IHNlbGYtPnJlY19sZW47CiAKICAgICAvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZmllbGQgd2UgbmVlZCBhIGZpZWxkIHNlcGFyYXRvciAqLwpAQCAtOTg0LDE3ICsxMDA5LDE2IEBACiAKICAgICAvKiBDb3B5L2NvdW50IGZpZWxkIGRhdGEgKi8KICAgICAvKiBJZiBmaWVsZCBpcyBudWxsIGp1c3QgcGFzcyBvdmVyICovCi0gICAgZm9yIChpID0gMDsgZmllbGQ7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBmaWVsZFtpXTsKKyAgICBmb3IgKGkgPSAwOyBmaWVsZF9kYXRhICYmIChpIDwgZmllbGRfbGVuKTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGkpOwogICAgICAgICBpbnQgd2FudF9lc2NhcGUgPSAwOwogCi0gICAgICAgIGlmIChjID09ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICBpZiAoYyA9PSBkaWFsZWN0LT5kZWxpbWl0ZXIgfHwKICAgICAgICAgICAgIGMgPT0gZGlhbGVjdC0+ZXNjYXBlY2hhciB8fAogICAgICAgICAgICAgYyA9PSBkaWFsZWN0LT5xdW90ZWNoYXIgIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX3N0cmNocihsaW5ldGVybSwgYykpIHsKKyAgICAgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICAgICAgICAgICAgICBkaWFsZWN0LT5saW5ldGVybWluYXRvciwgYywgMCwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChkaWFsZWN0LT5saW5ldGVybWluYXRvciksIDEpID49IDApIHsKICAgICAgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpCiAgICAgICAgICAgICAgICAgd2FudF9lc2NhcGUgPSAxOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0xMDA5LDcgKzEwMzMsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdhbnRfZXNjYXBlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFkaWFsZWN0LT5lc2NhcGVjaGFyKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZCB0byBlc2NhcGUsIGJ1dCBubyBlc2NhcGVjaGFyIHNldCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTAyNSw3ICsxMDQ5LDcgQEAKICAgICAgKi8KICAgICBpZiAoaSA9PSAwICYmIHF1b3RlX2VtcHR5KSB7CiAgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICJzaW5nbGUgZW1wdHkgZmllbGQgcmVjb3JkIG11c3QgYmUgcXVvdGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTEwNTcsMTQgKzEwODEsMTMgQEAKICAgICAgICAgICAgIHNlbGYtPnJlY19zaXplID0gKHJlY19sZW4gLyBNRU1fSU5DUiArIDEpICogTUVNX0lOQ1I7CiAgICAgICAgICAgICBpZiAoc2VsZi0+cmVjICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5yZWMpOwotICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fTmV3KFB5X1VOSUNPREUsIHNlbGYtPnJlY19zaXplKTsKKyAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX05ldyhQeV9VQ1M0LCBzZWxmLT5yZWNfc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFKiBvbGRfcmVjID0gc2VsZi0+cmVjOworICAgICAgICAgICAgUHlfVUNTNCogb2xkX3JlYyA9IHNlbGYtPnJlYzsKIAogICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUgPSAocmVjX2xlbiAvIE1FTV9JTkNSICsgMSkgKiBNRU1fSU5DUjsKLSAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX1Jlc2l6ZShzZWxmLT5yZWMsIFB5X1VOSUNPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUpOworICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fUmVzaXplKG9sZF9yZWMsIFB5X1VDUzQsIHNlbGYtPnJlY19zaXplKTsKICAgICAgICAgICAgIGlmIChzZWxmLT5yZWMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG9sZF9yZWMpOwogICAgICAgICB9CkBAIC0xMDc3LDExICsxMTAwLDIwIEBACiB9CiAKIHN0YXRpYyBpbnQKLWpvaW5fYXBwZW5kKFdyaXRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSAqZmllbGQsIGludCAqcXVvdGVkLCBpbnQgcXVvdGVfZW1wdHkpCitqb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5T2JqZWN0ICpmaWVsZCwgaW50ICpxdW90ZWQsIGludCBxdW90ZV9lbXB0eSkKIHsKKyAgICB1bnNpZ25lZCBpbnQgZmllbGRfa2luZCA9IC0xOworICAgIHZvaWQgKmZpZWxkX2RhdGEgPSBOVUxMOworICAgIFB5X3NzaXplX3QgZmllbGRfbGVuID0gMDsKICAgICBQeV9zc2l6ZV90IHJlY19sZW47CiAKLSAgICByZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZCwgcXVvdGVfZW1wdHksIHF1b3RlZCwgMCk7CisgICAgaWYgKGZpZWxkICE9IE5VTEwpIHsKKyAgICAgICAgZmllbGRfa2luZCA9IFB5VW5pY29kZV9LSU5EKGZpZWxkKTsKKyAgICAgICAgZmllbGRfZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZpZWxkKTsKKyAgICAgICAgZmllbGRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZmllbGQpOworICAgIH0KKyAgICByZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBmaWVsZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfZW1wdHksIHF1b3RlZCwgMCk7CiAgICAgaWYgKHJlY19sZW4gPCAwKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTA4OSw3ICsxMTIxLDggQEAKICAgICBpZiAoIWpvaW5fY2hlY2tfcmVjX3NpemUoc2VsZiwgcmVjX2xlbikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc2VsZi0+cmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGQsIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDEpOworICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKICAgICBzZWxmLT5udW1fZmllbGRzKys7CiAKICAgICByZXR1cm4gMTsKQEAgLTEwOTgsMTAgKzExMzEsMTEgQEAKIHN0YXRpYyBpbnQKIGpvaW5fYXBwZW5kX2xpbmV0ZXJtaW5hdG9yKFdyaXRlck9iaiAqc2VsZikKIHsKLSAgICBQeV9zc2l6ZV90IHRlcm1pbmF0b3JfbGVuOwotICAgIFB5X1VOSUNPREUgKnRlcm1pbmF0b3I7CisgICAgUHlfc3NpemVfdCB0ZXJtaW5hdG9yX2xlbiwgaTsKKyAgICB1bnNpZ25lZCBpbnQgdGVybV9raW5kOworICAgIHZvaWQgKnRlcm1fZGF0YTsKIAotICAgIHRlcm1pbmF0b3JfbGVuID0gUHlVbmljb2RlX0dldFNpemUoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOworICAgIHRlcm1pbmF0b3JfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOwogICAgIGlmICh0ZXJtaW5hdG9yX2xlbiA9PSAtMSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTExMDksMTEgKzExNDMsMTAgQEAKICAgICBpZiAoIWpvaW5fY2hlY2tfcmVjX3NpemUoc2VsZiwgc2VsZi0+cmVjX2xlbiArIHRlcm1pbmF0b3JfbGVuKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB0ZXJtaW5hdG9yID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7Ci0gICAgaWYgKHRlcm1pbmF0b3IgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbWVtbW92ZShzZWxmLT5yZWMgKyBzZWxmLT5yZWNfbGVuLCB0ZXJtaW5hdG9yLAotICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkqdGVybWluYXRvcl9sZW4pOworICAgIHRlcm1fa2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKKyAgICB0ZXJtX2RhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7CisgICAgZm9yIChpID0gMDsgaSA8IHRlcm1pbmF0b3JfbGVuOyBpKyspCisgICAgICAgIHNlbGYtPnJlY1tzZWxmLT5yZWNfbGVuICsgaV0gPSBQeVVuaWNvZGVfUkVBRCh0ZXJtX2tpbmQsIHRlcm1fZGF0YSwgaSk7CiAgICAgc2VsZi0+cmVjX2xlbiArPSB0ZXJtaW5hdG9yX2xlbjsKIAogICAgIHJldHVybiAxOwpAQCAtMTEzMCw5ICsxMTYzLDEwIEBACiB7CiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdCA9IHNlbGYtPmRpYWxlY3Q7CiAgICAgUHlfc3NpemVfdCBsZW4sIGk7CisgICAgUHlPYmplY3QgKmxpbmUsICpyZXN1bHQ7CiAKICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJzZXF1ZW5jZSBleHBlY3RlZCIpOworICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInNlcXVlbmNlIGV4cGVjdGVkIik7CiAKICAgICBsZW4gPSBQeVNlcXVlbmNlX0xlbmd0aChzZXEpOwogICAgIGlmIChsZW4gPCAwKQpAQCAtMTE2MywxNCArMTE5NywxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhmaWVsZCkpIHsKLSAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmaWVsZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBmaWVsZCwgJnF1b3RlZCwgbGVuID09IDEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChmaWVsZCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgTlVMTCwgJnF1b3RlZCwgbGVuID09IDEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTExODAsOSArMTIxMSw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwogICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBzdHIsICZxdW90ZWQsIGxlbiA9PSAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghYXBwZW5kX29rKQpAQCAtMTE5NCw5ICsxMjIzLDEzIEBACiAgICAgaWYgKCFqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihzZWxmKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPndyaXRlbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIodSMpIiwgc2VsZi0+cmVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cmVjX2xlbik7CisgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+cmVjLCBzZWxmLT5yZWNfbGVuKTsKKyAgICBpZiAobGluZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNlbGYtPndyaXRlbGluZSwgbGluZSwgTlVMTCk7CisgICAgUHlfREVDUkVGKGxpbmUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihjc3Zfd3JpdGVyb3dzX2RvYywKQEAgLTEzMjAsNiArMTM1Myw3IEBACiB7CiAgICAgUHlPYmplY3QgKiBvdXRwdXRfZmlsZSwgKiBkaWFsZWN0ID0gTlVMTDsKICAgICBXcml0ZXJPYmogKiBzZWxmID0gUHlPYmplY3RfR0NfTmV3KFdyaXRlck9iaiwgJldyaXRlcl9UeXBlKTsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMzNiw3ICsxMzcwLDcgQEAKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgc2VsZi0+d3JpdGVsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRwdXRfZmlsZSwgIndyaXRlIik7CisgICAgc2VsZi0+d3JpdGVsaW5lID0gX1B5T2JqZWN0X0dldEF0dHJJZChvdXRwdXRfZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmIChzZWxmLT53cml0ZWxpbmUgPT0gTlVMTCB8fCAhUHlDYWxsYWJsZV9DaGVjayhzZWxmLT53cml0ZWxpbmUpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBtdXN0IGhhdmUgYSBcIndyaXRlXCIgbWV0aG9kIik7CkBAIC0xMzU4LDcgKzEzOTIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNzdl9saXN0X2RpYWxlY3RzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeURpY3RfS2V5cyhkaWFsZWN0cyk7CisgICAgcmV0dXJuIFB5RGljdF9LZXlzKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzNzcsNyArMTQxMSw3IEBACiAgICAgZGlhbGVjdCA9IF9jYWxsX2RpYWxlY3QoZGlhbGVjdF9vYmosIGt3YXJncyk7CiAgICAgaWYgKGRpYWxlY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpYWxlY3RzLCBuYW1lX29iaiwgZGlhbGVjdCkgPCAwKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzLCBuYW1lX29iaiwgZGlhbGVjdCkgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihkaWFsZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTM4OSw4ICsxNDIzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjc3ZfdW5yZWdpc3Rlcl9kaWFsZWN0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lX29iaikKIHsKLSAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oZGlhbGVjdHMsIG5hbWVfb2JqKSA8IDApCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAidW5rbm93biBkaWFsZWN0Iik7CisgICAgaWYgKFB5RGljdF9EZWxJdGVtKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzLCBuYW1lX29iaikgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTE0MDUsNyArMTQzOSw3IEBACiBjc3ZfZmllbGRfc2l6ZV9saW1pdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqbmV3X2xpbWl0ID0gTlVMTDsKLSAgICBsb25nIG9sZF9saW1pdCA9IGZpZWxkX2xpbWl0OworICAgIGxvbmcgb2xkX2xpbWl0ID0gX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQ7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJmaWVsZF9zaXplX2xpbWl0IiwgMCwgMSwgJm5ld19saW1pdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQxNSw5ICsxNDQ5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBmaWVsZF9saW1pdCA9IFB5TG9uZ19Bc0xvbmcobmV3X2xpbWl0KTsKLSAgICAgICAgaWYgKGZpZWxkX2xpbWl0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIGZpZWxkX2xpbWl0ID0gb2xkX2xpbWl0OworICAgICAgICBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCA9IFB5TG9uZ19Bc0xvbmcobmV3X2xpbWl0KTsKKyAgICAgICAgaWYgKF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0ID0gb2xkX2xpbWl0OwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTU2LDE3ICsxNTkwLDE2IEBACiAgICAgeyBOVUxMLCBOVUxMIH0KIH07CiAKLQogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfY3N2bW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAiX2NzdiIsCiAgICAgY3N2X21vZHVsZV9kb2MsCi0gICAgLTEsCisgICAgc2l6ZW9mKF9jc3ZzdGF0ZSksCiAgICAgY3N2X21ldGhvZHMsCiAgICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAorICAgIF9jc3ZfdHJhdmVyc2UsCisgICAgX2Nzdl9jbGVhciwKKyAgICBfY3N2X2ZyZWUKIH07CiAKIFB5TU9ESU5JVF9GVU5DCkBAIC0xNTk0LDExICsxNjI3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1PRFVMRV9WRVJTSU9OKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICAvKiBTZXQgdGhlIGZpZWxkIGxpbWl0ICovCisgICAgX2NzdnN0YXRlKG1vZHVsZSktPmZpZWxkX2xpbWl0ID0gMTI4ICogMTAyNDsKKyAgICAvKiBEbyBJIHN0aWxsIG5lZWQgdG8gYWRkIHRoaXMgdmFyIHRvIHRoZSBNb2R1bGUgRGljdD8gKi8KKwogICAgIC8qIEFkZCBfZGlhbGVjdHMgZGljdGlvbmFyeSAqLwotICAgIGRpYWxlY3RzID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWFsZWN0cyA9PSBOVUxMKQorICAgIF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiX2RpYWxlY3RzIiwgZGlhbGVjdHMpKQorICAgIFB5X0lOQ1JFRihfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiX2RpYWxlY3RzIiwgX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBZGQgcXVvdGUgc3R5bGVzIGludG8gZGljdGlvbmFyeSAqLwpAQCAtMTYxNCw5ICsxNjUyLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQWRkIHRoZSBDU1YgZXhjZXB0aW9uIG9iamVjdCB0byB0aGUgbW9kdWxlLiAqLwotICAgIGVycm9yX29iaiA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2Nzdi5FcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIGlmIChlcnJvcl9vYmogPT0gTlVMTCkKKyAgICBfY3N2c3RhdGUobW9kdWxlKS0+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+UHlDdXJzZXNFcnJvcik7CiAKICAgICAvKiBNYWtlIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSAqLwogICAgIHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeUN1cnNlc1ZlcnNpb24pOwpAQCAtNTAyLDQgKzUxNSw3IEBACiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fdmVyc2lvbl9fIiwgdik7CiAgICAgUHlfREVDUkVGKHYpOwogICAgIHJldHVybiBtOworICBmYWlsOgorICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDVlMWFmYTkuLjRlMTQ0OWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0xMDUsMTAgKzEwNSw2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKIAotI2lmZGVmIF9fb3NmX18KLSNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTICAgICAgLyogRG9uJ3QgdXNlIG5jdXJzZXMgZXh0ZW5zaW9ucyAqLwotI2VuZGlmCi0KICNpZmRlZiBfX2hwdXgKICNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTCiAjZW5kaWYKQEAgLTEyNSw2ICsxMjEsMTAgQEAKICNpbmNsdWRlIDx0ZXJtLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTEFOR0lORk9fSAorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEhBVkVfTkNVUlNFU19IKSAmJiAoZGVmaW5lZChzZ2kpIHx8IGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoU0NPNSkpCiAjZGVmaW5lIFNUUklDVF9TWVNWX0NVUlNFUyAgICAgICAvKiBEb24ndCB1c2UgbmN1cnNlcyBleHRlbnNpb25zICovCiB0eXBlZGVmIGNodHlwZSBhdHRyX3Q7ICAgICAgICAgICAvKiBObyBhdHRyX3QgdHlwZSBpcyBhdmFpbGFibGUgKi8KQEAgLTE0Nyw2ICsxNDcsOCBAQAogLyogVGVsbHMgd2hldGhlciBzdGFydF9jb2xvcigpIGhhcyBiZWVuIGNhbGxlZCB0byBpbml0aWFsaXNlIGNvbG9yIHVzYWdlLiAqLwogc3RhdGljIGludCBpbml0aWFsaXNlZGNvbG9ycyA9IEZBTFNFOwogCitzdGF0aWMgY2hhciAqc2NyZWVuX2VuY29kaW5nID0gTlVMTDsKKwogLyogVXRpbGl0eSBNYWNyb3MgKi8KICNkZWZpbmUgUHlDdXJzZXNTZXR1cFRlcm1DYWxsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoaW5pdGlhbGlzZWRfc2V0dXB0ZXJtICE9IFRSVUUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3OSw3ICsxODEsNyBAQAogICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjaGFyICpmbmFtZSkKK1B5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZuYW1lKQogewogICAgIGlmIChjb2RlICE9IEVSUikgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xOTQsMjcgKzE5NiwxNzUgQEAKICAgICB9CiB9CiAKKy8qIENvbnZlcnQgYW4gb2JqZWN0IHRvIGEgYnl0ZSAoYW4gaW50ZWdlciBvZiB0eXBlIGNodHlwZSk6CisKKyAgIC0gaW50CisgICAtIGJ5dGVzIG9mIGxlbmd0aCAxCisgICAtIHN0ciBvZiBsZW5ndGggMQorCisgICBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yIChpbnZhbGlkIHR5cGUgb3IgaW50ZWdlciBvdmVyZmxvdykuICovCiBzdGF0aWMgaW50Ci1QeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoUHlPYmplY3QgKm9iaiwgY2h0eXBlICpjaCkKK1B5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShQeUN1cnNlc1dpbmRvd09iamVjdCAqd2luLCBQeU9iamVjdCAqb2JqLCBjaHR5cGUgKmNoKQogewotICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7Ci0gICAgICAgIGludCBvdmVyZmxvdzsKLSAgICAgICAgLyogWFhYIHNob3VsZCB0aGUgdHJ1bmNhdGlvbiBieSB0aGUgY2FzdCBhbHNvIGJlIHJlcG9ydGVkCi0gICAgICAgICAgIGFzIGFuIGVycm9yPyAqLwotICAgICAgICAqY2ggPSAoY2h0eXBlKSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOwotICAgICAgICBpZiAob3ZlcmZsb3cpCisgICAgbG9uZyB2YWx1ZTsKKyAgICBpZihQeUJ5dGVzX0NoZWNrKG9iaikgJiYgUHlCeXRlc19TaXplKG9iaikgPT0gMSkgeworICAgICAgICB2YWx1ZSA9ICh1bnNpZ25lZCBjaGFyKVB5Qnl0ZXNfQXNTdHJpbmcob2JqKVswXTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgob2JqKSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGEgc3RyIG9mIGxlbmd0aCAlemkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKQotICAgICAgICAgICAgICAmJiAoUHlCeXRlc19TaXplKG9iaikgPT0gMSkpIHsKLSAgICAgICAgKmNoID0gKGNodHlwZSkgKlB5Qnl0ZXNfQXNTdHJpbmcob2JqKTsKLSAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9HZXRTaXplKG9iaikgPT0gMSkgewotICAgICAgICAqY2ggPSAoY2h0eXBlKSAqUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLSAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICBpZiAoMTI4IDwgdmFsdWUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOworICAgICAgICAgICAgaWYgKHdpbikKKyAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHdpbi0+ZW5jb2Rpbmc7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBzY3JlZW5fZW5jb2Rpbmc7CisgICAgICAgICAgICBieXRlcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Qob2JqLCBlbmNvZGluZywgTlVMTCk7CisgICAgICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSA9PSAxKQorICAgICAgICAgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpWzBdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhbHVlID0gLTE7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgaW50IGxvbmdfb3ZlcmZsb3c7CisgICAgICAgIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJmxvbmdfb3ZlcmZsb3cpOworICAgICAgICBpZiAobG9uZ19vdmVyZmxvdykKKyAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqY2ggPSAoY2h0eXBlKXZhbHVlOworICAgIGlmICgobG9uZykqY2ggIT0gdmFsdWUpCisgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgcmV0dXJuIDE7CisKK292ZXJmbG93OgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAiYnl0ZSBkb2Vzbid0IGZpdCBpbiBjaHR5cGUiKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIChjaHR5cGUpIG9yIGEgY2hhcmFjdGVyIChjY2hhcl90KToKKworICAgIC0gaW50CisgICAgLSBieXRlcyBvZiBsZW5ndGggMQorICAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybjoKKworICAgIC0gMiBpZiBvYmogaXMgYSBjaGFyYWN0ZXIgKHdyaXR0ZW4gaW50byAqd2NoKQorICAgIC0gMSBpZiBvYmogaXMgYSBieXRlICh3cml0dGVuIGludG8gKmNoKQorICAgIC0gMCBvbiBlcnJvcjogcmFpc2UgYW4gZXhjZXB0aW9uICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9DY2hhcl90KFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW4sIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNodHlwZSAqY2gKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgICAgICAgICAgICAgICAgICAgICwgY2NoYXJfdCAqd2NoCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIGxvbmcgdmFsdWU7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgYnVmZmVyWzJdOworI2VuZGlmCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIGlmIChQeVVuaWNvZGVfQXNXaWRlQ2hhcihvYmosIGJ1ZmZlciwgMikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldCh3Y2gtPmNoYXJzLCAwLCBzaXplb2Yod2NoLT5jaGFycykpOworICAgICAgICB3Y2gtPmNoYXJzWzBdID0gYnVmZmVyWzBdOworICAgICAgICByZXR1cm4gMjsKKyNlbHNlCisgICAgICAgIHJldHVybiBQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUod2luLCBvYmosIGNoKTsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKSAmJiBQeUJ5dGVzX1NpemUob2JqKSA9PSAxKSB7CisgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19Bc1N0cmluZyhvYmopWzBdOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOworICAgICAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZG9lc24ndCBmaXQgaW4gbG9uZyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKmNoID0gKGNodHlwZSl2YWx1ZTsKKyAgICBpZiAoKGxvbmcpKmNoICE9IHZhbHVlKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgImJ5dGUgZG9lc24ndCBmaXQgaW4gY2h0eXBlIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KIAorLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIHN0cmluZyAoY2hhciopIG9yIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nCisgICAod2NoYXJfdCopLiBSZXR1cm46CisKKyAgICAtIDIgaWYgb2JqIGlzIGEgY2hhcmFjdGVyIHN0cmluZyAod3JpdHRlbiBpbnRvICp3Y2gpCisgICAgLSAxIGlmIG9iaiBpcyBhIGJ5dGUgc3RyaW5nICh3cml0dGVuIGludG8gKmJ5dGVzKQorICAgIC0gMCBvbiBlcnJvcjogcmFpc2UgYW4gZXhjZXB0aW9uICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKndpbiwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmJ5dGVzLCB3Y2hhcl90ICoqd3N0cikKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIGFzc2VydCAod3N0ciAhPSBOVUxMKTsKKyAgICAgICAgKndzdHIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhvYmosIE5VTEwpOworICAgICAgICBpZiAoKndzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMjsKKyNlbHNlCisgICAgICAgIGFzc2VydCAod3N0ciA9PSBOVUxMKTsKKyAgICAgICAgKmJ5dGVzID0gUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChvYmosIHdpbi0+ZW5jb2RpbmcsIE5VTEwpOworICAgICAgICBpZiAoKmJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgICAgICAqYnl0ZXMgPSBvYmo7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJleHBlY3QgYnl0ZXMgb3Igc3RyLCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgIHJldHVybiAwOworfQorCiAvKiBGdW5jdGlvbiB2ZXJzaW9ucyBvZiB0aGUgMyBmdW5jdGlvbnMgZm9yIHRlc3Rpbmcgd2hldGhlciBjdXJzZXMgaGFzIGJlZW4KICAgIGluaXRpYWxpc2VkIG9yIG5vdC4gKi8KIApAQCAtMzU4LDEzICs1MDgsMzcgQEAKIC8qIEFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiBXaW5kb3cgT2JqZWN0cyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luKQorUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luLCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBQeUN1cnNlc1dpbmRvd09iamVjdCAqd287CiAKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgY2hhciAqYnVmZmVyWzEwMF07CisgICAgICAgIFVJTlQgY3A7CisgICAgICAgIGNwID0gR2V0Q29uc29sZU91dHB1dENQKCk7CisgICAgICAgIGlmIChjcCAhPSAwKSB7CisgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJjcCV1IiwgY3ApOworICAgICAgICAgICAgZW5jb2RpbmcgPSBidWZmZXI7CisgICAgICAgIH0KKyNlbGlmIGRlZmluZWQoQ09ERVNFVCkKKyAgICAgICAgY29uc3QgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gY29kZXNldDsKKyNlbmRpZgorICAgICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyAgICB9CisKICAgICB3byA9IFB5T2JqZWN0X05FVyhQeUN1cnNlc1dpbmRvd09iamVjdCwgJlB5Q3Vyc2VzV2luZG93X1R5cGUpOwogICAgIGlmICh3byA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICB3by0+d2luID0gd2luOworICAgIHdvLT5lbmNvZGluZyA9IHN0cmR1cChlbmNvZGluZyk7CisgICAgaWYgKHdvLT5lbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih3byk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopd287CiB9CiAKQEAgLTM3Miw2ICs1NDYsOCBAQAogUHlDdXJzZXNXaW5kb3dfRGVhbGxvYyhQeUN1cnNlc1dpbmRvd09iamVjdCAqd28pCiB7CiAgICAgaWYgKHdvLT53aW4gIT0gc3Rkc2NyKSBkZWx3aW4od28tPndpbik7CisgICAgaWYgKHdvLT5lbmNvZGluZyAhPSBOVUxMKQorICAgICAgICBmcmVlKHdvLT5lbmNvZGluZyk7CiAgICAgUHlPYmplY3RfREVMKHdvKTsKIH0KIApAQCAtMzgxLDI5ICs1NTcsMzQgQEAKIFB5Q3Vyc2VzV2luZG93X0FkZENoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCB1c2VfeHkgPSBGQUxTRTsKLSAgICBQeU9iamVjdCAqdGVtcDsKLSAgICBjaHR5cGUgY2ggPSAwOworICAgIFB5T2JqZWN0ICpjaG9iajsKKyAgICBpbnQgdHlwZTsKKyAgICBjaHR5cGUgY2g7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGNjaGFyX3Qgd2NoOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmdGVtcCkpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDtjaCBvciBpbnQsYXR0ciIsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sO2NoIG9yIGludCxhdHRyIiwgJmNob2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxjaCBvciBpbnQiLCAmeSwgJngsICZ0ZW1wKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpTzt5LHgsY2ggb3IgaW50IiwgJnksICZ4LCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2w7eSx4LGNoIG9yIGludCwgYXR0ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJngsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnksICZ4LCAmY2hvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwpAQCAtNDEzLDE3ICs1OTQsMzMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgdHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb0NjaGFyX3Qoc2VsZiwgY2hvYmosICZjaCwgJndjaCk7CisgICAgaWYgKHR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJhZGRfd2NoIjsKKyAgICAgICAgd2NoLmF0dHIgPSBhdHRyOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRfd2NoKHNlbGYtPndpbix5LHgsICZ3Y2gpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRfd2NoKHNlbGYtPndpbiwgJndjaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2Vsc2UKKyAgICB0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvQ2NoYXJfdChzZWxmLCBjaG9iaiwgJmNoKTsKKyNlbmRpZgorICAgIGlmICh0eXBlID09IDEpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkY2giOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRjaChzZWxmLT53aW4sIGNoIHwgYXR0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3YWRkY2goc2VsZi0+d2luLHkseCwgY2ggfCBhdHRyKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcnRuID0gd2FkZGNoKHNlbGYtPndpbiwgY2ggfCBhdHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiYWRkY2giKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQzMSwyOSArNjI4LDM0IEBACiB7CiAgICAgaW50IHJ0bjsKICAgICBpbnQgeCwgeTsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywicztzdHIiLCAmc3RyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87c3RyIiwgJnN0cm9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2w7c3RyLGF0dHIiLCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2w7c3RyLGF0dHIiLCAmc3Ryb2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXM7aW50LGludCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO2ludCxpbnQsc3RyIiwgJnksICZ4LCAmc3Ryb2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNsO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHIsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9sO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC00NjIsNDcgKzY2NCw3NCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYWRkc3RyIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndhZGRzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHdzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGR3c3RyKHNlbGYtPndpbix5LHgsd3N0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGR3c3RyKHNlbGYtPndpbix3c3RyKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkc3RyKHNlbGYtPndpbixzdHIpOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHN0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZHN0cihzZWxmLT53aW4seSx4LHN0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRzdHIoc2VsZi0+d2luLHN0cik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlc29iaik7CisgICAgfQogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKQogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cl9vbGQpOwotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImFkZHN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNXaW5kb3dfQWRkTlN0cihQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IHJ0biwgeCwgeSwgbjsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2k7c3RyLG4iLCAmc3RyLCAmbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaTtzdHIsbiIsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaWw7c3RyLG4sYXR0ciIsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2lsO3N0cixuLGF0dHIiLCAmc3Ryb2JqLCAmbiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2k7eSx4LHN0cixuIiwgJnksICZ4LCAmc3Ryb2JqLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA1OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gdXNlX2F0dHIgPSBUUlVFOwpAQCAtNTExLDE4ICs3NDAsNDEgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFkZG5zdHIgcmVxdWlyZXMgMiB0byA1IGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKSB7CiAgICAgICAgIGF0dHJfb2xkID0gZ2V0YXR0cnMoc2VsZi0+d2luKTsKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHIpOwogICAgIH0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2FkZG5zdHIoc2VsZi0+d2luLHkseCxzdHIsbik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGlmIChzdHJ0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkbndzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRud3N0cihzZWxmLT53aW4sd3N0cixuKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZG5zdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXNvYmopOworICAgIH0KICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHJfb2xkKTsKLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJhZGRuc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NDgsMTAgKzgwMCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZia2dkKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmYmtnZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHdia2dkKHNlbGYtPndpbiwgYmtnZCB8IGF0dHIpLCAiYmtnZCIpOwogfQpAQCAtNjA2LDEwICs4NTYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmYmtnZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZia2dkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgd2JrZ2RzZXQoc2VsZi0+d2luLCBia2dkIHwgYXR0cik7CiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoMCwgImJrZ2RzZXQiKTsKQEAgLTYzNCwxMSArODgyLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IoaT0wOyBpPDg7IGkrKykgewotICAgICAgICBpZiAodGVtcFtpXSAhPSBOVUxMICYmICFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcFtpXSwgJmNoW2ldKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJWkgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIsIGkrMSk7CisgICAgICAgIGlmICh0ZW1wW2ldICE9IE5VTEwgJiYgIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wW2ldLCAmY2hbaV0pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICB3Ym9yZGVyKHNlbGYtPndpbiwKQEAgLTc4Myw3ICsxMDI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTgxMSwxMCArMTA1Niw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogI2lmZGVmIFdJTkRPV19IQVNfRkxBR1MKICAgICBpZiAoc2VsZi0+d2luLT5fZmxhZ3MgJiBfSVNQQUQpCkBAIC05MTAsNiArMTE1Myw0MyBAQAogICAgIH0KIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKK3N0YXRpYyBQeU9iamVjdCAqCitQeUN1cnNlc1dpbmRvd19HZXRfV0NoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgeCwgeTsKKyAgICBpbnQgY3Q7CisgICAgd2ludF90IHJ0bjsKKworICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CisgICAgY2FzZSAwOgorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gd2dldF93Y2goc2VsZi0+d2luLCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaTt5LHgiLCZ5LCZ4KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gbXZ3Z2V0X3djaChzZWxmLT53aW4seSx4LCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2V0X3djaCByZXF1aXJlcyAwIG9yIDIgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY3QgPT0gRVJSKSB7CisgICAgICAgIC8qIGdldF93Y2goKSByZXR1cm5zIEVSUiBpbiBub2RlbGF5IG1vZGUgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJubyBpbnB1dCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGN0ID09IEtFWV9DT0RFX1lFUykKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhydG4pOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChydG4pOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19HZXRTdHIoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTAwMSwxMSArMTI4MSw4IEBACiAgICAgfQogCiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7Ci0gICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih3aGxpbmUoc2VsZi0+d2luLCBjaCB8IGF0dHIsIG4pLCAiaGxpbmUiKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoY29kZSwgIndtb3ZlIik7CkBAIC0xMDQ2LDExICsxMzIzLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQogICAgICAgICBydG4gPSBtdndpbnNjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOwpAQCAtMTEyMSwyOSArMTM5NSwzNCBAQAogewogICAgIGludCBydG47CiAgICAgaW50IHgsIHk7Ci0gICAgY2hhciAqc3RyOworICAgIGludCBzdHJ0eXBlOworICAgIFB5T2JqZWN0ICpzdHJvYmosICpieXRlc29iaiA9IE5VTEw7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTCAsIGF0dHJfb2xkID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKICAgICBpbnQgdXNlX3h5ID0gRkFMU0UsIHVzZV9hdHRyID0gRkFMU0U7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInM7c3RyIiwgJnN0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO3N0ciIsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNsO3N0cixhdHRyIiwgJnN0ciwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9sO3N0cixhdHRyIiwgJnN0cm9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzO3kseCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxzdHIiLCAmeSwgJngsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2w7eSx4LHN0cixhdHRyIiwgJnksICZ4LCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPbDt5LHgsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMTUzLDQ2ICsxNDMyLDc1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc3dzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndpbnNfd3N0cihzZWxmLT53aW4seSx4LHdzdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3aW5zX3dzdHIoc2VsZi0+d2luLHdzdHIpOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJ0biA9IHdpbnNzdHIoc2VsZi0+d2luLHN0cik7CisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzb2JqKTsKKyAgICAgICAgZnVuY25hbWUgPSAiaW5zc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zc3RyKHNlbGYtPndpbix5LHgsc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc3N0cihzZWxmLT53aW4sc3RyKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19JbnNOU3RyKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCBuOwotICAgIGNoYXIgKnN0cjsKKyAgICBpbnQgc3RydHlwZTsKKyAgICBQeU9iamVjdCAqc3Ryb2JqLCAqYnl0ZXNvYmogPSBOVUxMOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUwgLCBhdHRyX29sZCA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CiAgICAgaW50IHVzZV94eSA9IEZBTFNFLCB1c2VfYXR0ciA9IEZBTFNFOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaTtzdHIsbiIsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9pO3N0cixuIiwgJnN0cm9iaiwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNpbDtzdHIsbixhdHRyIiwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaWw7c3RyLG4sYXR0ciIsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpO3kseCxzdHIsbiIsICZ5LCAmeCwgJnN0ciwgJm4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDU6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9pbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0cm9iaiwgJm4sICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMjAyLDE3ICsxNTEwLDQxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc25fd3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2luc19ud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdpbnNfbndzdHIoc2VsZi0+d2luLHdzdHIsbik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXNvYmopOworICAgICAgICBmdW5jbmFtZSA9ICJpbnNuc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zbnN0cihzZWxmLT53aW4seSx4LHN0cixuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zbnN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM4NSwxMCArMTcxNywxMiBAQAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGNoYXIgYnVmW0JVRlNJWl07CiAgICAgICAgIFB5X3NzaXplX3QgbiA9IGZyZWFkKGJ1ZiwgMSwgQlVGU0laLCBmcCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgICAgICBpZiAobiA8PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cmVhbSwgIndyaXRlIiwgInkjIiwgYnVmLCBuKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3dyaXRlLCAieSMiLCBidWYsIG4pOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDkzLDcgKzE4MjcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIHNlbGYtPmVuY29kaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1NjksMTYgKzE5MDMsNTIgQEAKICAgICB9CiAKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKLSAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHd2bGluZShzZWxmLT53aW4sIGNoIHwgYXR0ciwgbiksICJ2bGluZSIpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihjb2RlLCAid21vdmUiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzV2luZG93X2dldF9lbmNvZGluZyhQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2VsZi0+ZW5jb2RpbmcpOworfQorCitzdGF0aWMgaW50CitQeUN1cnNlc1dpbmRvd19zZXRfZW5jb2RpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqYXNjaWk7CisgICAgY2hhciAqZW5jb2Rpbmc7CisKKyAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCB3aW4uZW5jb2RpbmcgKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIG1heSBub3QgYmUgZGVsZXRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBlbmNvZGluZyB0byBhIG5vbi1zdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBhc2NpaSA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHZhbHVlKTsKKyAgICBpZiAoYXNjaWkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVuY29kaW5nID0gc3RyZHVwKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpKSk7CisgICAgUHlfREVDUkVGKGFzY2lpKTsKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGZyZWUoc2VsZi0+ZW5jb2RpbmcpOworICAgIHNlbGYtPmVuY29kaW5nID0gZW5jb2Rpbmc7CisgICAgcmV0dXJuIDA7Cit9CisKKwogc3RhdGljIFB5TWV0aG9kRGVmIFB5Q3Vyc2VzV2luZG93X01ldGhvZHNbXSA9IHsKICAgICB7ImFkZGNoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19BZGRDaCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImFkZG5zdHIiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19BZGROU3RyLCBNRVRIX1ZBUkFSR1N9LApAQCAtMTYwOCw2ICsxOTc4LDkgQEAKICAgICB7ImdldGJrZ2QiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRCa2dkLCBNRVRIX05PQVJHU30sCiAgICAgeyJnZXRjaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0Q2gsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRrZXkiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0S2V5LCBNRVRIX1ZBUkFSR1N9LAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB7ImdldF93Y2giLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRfV0NoLCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAgICAgeyJnZXRtYXh5eCIsICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfZ2V0bWF4eXgsIE1FVEhfTk9BUkdTfSwKICAgICB7ImdldHBhcnl4IiwgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19nZXRwYXJ5eCwgTUVUSF9OT0FSR1N9LAogICAgIHsiZ2V0c3RyIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldFN0ciwgTUVUSF9WQVJBUkdTfSwKQEAgLTE2NjMsNiArMjAzNiwxNCBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBQeUN1cnNlc1dpbmRvd19nZXRzZXRzW10gPSB7CisgICAgeyJlbmNvZGluZyIsCisgICAgIChnZXR0ZXIpUHlDdXJzZXNXaW5kb3dfZ2V0X2VuY29kaW5nLAorICAgICAoc2V0dGVyKVB5Q3Vyc2VzV2luZG93X3NldF9lbmNvZGluZywKKyAgICAgInRoZSB0eXBlY29kZSBjaGFyYWN0ZXIgdXNlZCB0byBjcmVhdGUgdGhlIGFycmF5In0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSAgLyogc2VudGluZWwgKi8KK307CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiBQeVR5cGVPYmplY3QgUHlDdXJzZXNXaW5kb3dfVHlwZSA9IHsKQEAgLTE2OTUsNiArMjA3Niw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwogICAgIFB5Q3Vyc2VzV2luZG93X01ldGhvZHMsICAgICAvKnRwX21ldGhvZHMqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgUHlDdXJzZXNXaW5kb3dfZ2V0c2V0cywgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTg3NSw2ICsyMjU4LDcgQEAKICAgICBXSU5ET1cgKndpbjsKIAogICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKICAgICBzdHJjcHkoZm4sICIvdG1wL3B5LmN1cnNlcy5nZXR3aW4uWFhYWFhYIik7CiAgICAgZmQgPSBta3N0ZW1wKGZuKTsKQEAgLTE4ODYsNyArMjI3MCw3IEBACiAgICAgICAgIHJlbW92ZShmbik7CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgZm4pOwogICAgIH0KLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzdHJlYW0sICJyZWFkIiwgIiIpOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgIiIpOwogICAgIGlmIChkYXRhID09IE5VTEwpIHsKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICAgICAgcmVtb3ZlKGZuKTsKQEAgLTE5MTcsNyArMjMwMSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9OVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTk1LDEwICsyMzc5LDExIEBACiBQeUN1cnNlc19Jbml0U2NyKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFdJTkRPVyAqd2luOworICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW5vYmo7CiAKICAgICBpZiAoaW5pdGlhbGlzZWQgPT0gVFJVRSkgewogICAgICAgICB3cmVmcmVzaChzdGRzY3IpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHN0ZHNjcik7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcoc3Rkc2NyLCBOVUxMKTsKICAgICB9CiAKICAgICB3aW4gPSBpbml0c2NyKCk7CkBAIC0yMDkwLDcgKzI0NzUsOSBAQAogICAgIFNldERpY3RJbnQoIkxJTkVTIiwgTElORVMpOwogICAgIFNldERpY3RJbnQoIkNPTFMiLCBDT0xTKTsKIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICB3aW5vYmogPSAoUHlDdXJzZXNXaW5kb3dPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKKyAgICBzY3JlZW5fZW5jb2RpbmcgPSB3aW5vYmotPmVuY29kaW5nOworICAgIHJldHVybiAoUHlPYmplY3QgKil3aW5vYmo7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMjkyLDcgKzI2NzksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjMyNCw3ICsyNzExLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0MTYsNiArMjgwMyw4IEBACiB7CiAgICAgUHlPYmplY3QgKm87CiAgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJjdXJzZXMiKTsKKyAgICBfUHlfSURFTlRJRklFUihMSU5FUyk7CisgICAgX1B5X0lERU5USUZJRVIoQ09MUyk7CiAKICAgICBpZiAoIW0pCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQyNSwxMiArMjgxNCwxMyBAQAogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtLCAiTElORVMiLCBvKSkgeworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX0xJTkVTLCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhNb2REaWN0LCAiTElORVMiLCBvKSkgeworICAgIC8qIFB5SWRfTElORVMub2JqZWN0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgaGVyZS4gKi8KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oTW9kRGljdCwgUHlJZF9MSU5FUy5vYmplY3QsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKQEAgLTI0NDEsMTIgKzI4MzEsMTIgQEAKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobSwgIkNPTFMiLCBvKSkgeworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX0NPTFMsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKE1vZERpY3QsICJDT0xTIiwgbykpIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oTW9kRGljdCwgUHlJZF9DT0xTLm9iamVjdCwgbykpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBQeV9ERUNSRUYobyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjYzOCwxMCArMzAyOCw4IEBACiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoTlVMTCwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZyh1bmN0cmwoY2gpKTsKIH0KQEAgLTI2NTQsMTYgKzMwNDIsODAgQEAKIAogICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87Y2ggb3IgaW50IiwmdGVtcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKE5VTEwsIHRlbXAsICZjaCkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIodW5nZXRjaChjaCksICJ1bmdldGNoIik7CiB9CiAKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisvKiBDb252ZXJ0IGFuIG9iamVjdCB0byBhIGNoYXJhY3RlciAod2NoYXJfdCk6CisKKyAgICAtIGludAorICAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybiAxIG9uIHN1Y2Nlc3MsIDAgb24gZXJyb3IuICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9XY2hhcl90KFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndjaCkKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgd2NoYXJfdCBidWZmZXJbMl07CisgICAgICAgIGlmIChQeVVuaWNvZGVfQXNXaWRlQ2hhcihvYmosIGJ1ZmZlciwgMikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgICp3Y2ggPSBidWZmZXJbMF07CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGxvbmcgdmFsdWU7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOworICAgICAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZG9lc24ndCBmaXQgaW4gbG9uZyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgKndjaCA9ICh3Y2hhcl90KXZhbHVlOworICAgICAgICBpZiAoKGxvbmcpKndjaCAhPSB2YWx1ZSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBkb2Vzbid0IGZpdCBpbiB3Y2hhcl90Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlDdXJzZXNfVW5nZXRfV2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHdjaGFyX3Qgd2NoOworCisgICAgUHlDdXJzZXNJbml0aWFsaXNlZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9XY2hhcl90KG9iaiwgJndjaCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHVuZ2V0X3djaCh3Y2gpLCAidW5nZXRfd2NoIik7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzX1VzZV9FbnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjc5MSw2ICszMjQzLDkgQEAKICAgICB7InR5cGVhaGVhZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVHlwZUFoZWFkLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5jdHJsIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbkN0cmwsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmdldGNoIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0Q2gsIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHsidW5nZXRfd2NoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbmdldF9XY2gsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKICAgICB7InVzZV9lbnYiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVXNlX0VudiwgTUVUSF9WQVJBUkdTfSwKICNpZm5kZWYgU1RSSUNUX1NZU1ZfQ1VSU0VTCiAgICAgeyJ1c2VfZGVmYXVsdF9jb2xvcnMiLCAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VzZV9EZWZhdWx0X0NvbG9ycywgTUVUSF9OT0FSR1N9LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggZWYyZjdiMy4uODczZDQ2ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC03LDggKzcsNiBAQAogCiAjaW5jbHVkZSA8dGltZS5oPgogCi0jaW5jbHVkZSAiX3RpbWUuaCIKLQogLyogRGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGJ1aWxkaW5nIHRoZSBjb3JlIG1vZHVsZSBhbmQgYnVpbGRpbmcgZXh0ZW5zaW9uCiAgKiBtb2R1bGVzLgogICovCkBAIC03NjYsOCArNzY0LDEwIEBACiAgICAgUHlPYmplY3QgKm5hbWU7CiB9IFB5RGF0ZVRpbWVfVGltZVpvbmU7CiAKLS8qIFRoZSBpbnRlcm5lZCBVVEMgdGltZXpvbmUgaW5zdGFuY2UgKi8gCisvKiBUaGUgaW50ZXJuZWQgVVRDIHRpbWV6b25lIGluc3RhbmNlICovCiBzdGF0aWMgUHlPYmplY3QgKlB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDOworLyogVGhlIGludGVybmVkIEVwb2NoIGRhdGV0aW1lIGluc3RhbmNlICovCitzdGF0aWMgUHlPYmplY3QgKlB5RGF0ZVRpbWVfRXBvY2g7CiAKIC8qIENyZWF0ZSBuZXcgdGltZXpvbmUgaW5zdGFuY2UgY2hlY2tpbmcgb2Zmc2V0IHJhbmdlLiAgVGhpcwogICAgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIG5hbWUgYXJndW1lbnQuICBDYWxsZXIgbXVzdCBhc3N1cmUKQEAgLTgwOSwxNCArODA5LDE2IEBACiAgICAgfQogICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCB8fCBHRVRfVERfU0VDT05EUyhvZmZzZXQpICUgNjAgIT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcyIpOworICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcywiCisgICAgICAgICAgICAgICAgICAgICAiIG5vdCAlUi4iLCBvZmZzZXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKChHRVRfVERfREFZUyhvZmZzZXQpID09IC0xICYmIEdFVF9URF9TRUNPTkRTKG9mZnNldCkgPT0gMCkgfHwKICAgICAgICAgR0VUX1REX0RBWVMob2Zmc2V0KSA8IC0xIHx8IEdFVF9URF9EQVlTKG9mZnNldCkgPj0gMSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgogICAgICAgICAgICAgICAgICAgICAgIiBzdHJpY3RseSBiZXR3ZWVuIC10aW1lZGVsdGEoaG91cnM9MjQpIGFuZCIKLSAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KSwiCisgICAgICAgICAgICAgICAgICAgICAiIG5vdCAlUi4iLCBvZmZzZXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTk0Niw2ICs5NDgsNyBAQAogY2FsbF90em5hbWUoUHlPYmplY3QgKnR6aW5mbywgUHlPYmplY3QgKnR6aW5mb2FyZykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKHR6bmFtZSk7CiAKICAgICBhc3NlcnQodHppbmZvICE9IE5VTEwpOwogICAgIGFzc2VydChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA+PSAwKTsKQEAgLTk1NCw3ICs5NTcsNyBAQAogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgInR6bmFtZSIsICJPIiwgdHppbmZvYXJnKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfdHpuYW1lLCAiTyIsIHR6aW5mb2FyZyk7CiAKICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgcmVzdWx0ID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC05ODUsOSArOTg4LDggQEAKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXByOwogICAgIC8qIEdldCByaWQgb2YgdGhlIHRyYWlsaW5nICcpJy4gKi8KLSAgICBhc3NlcnQoUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcilbUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpLTFdID09ICcpJyk7Ci0gICAgdGVtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpIC0gMSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEX0NIQVIocmVwciwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwciktMSkgPT0gJyknKTsKKyAgICB0ZW1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhyZXByLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKSAtIDEpOwogICAgIFB5X0RFQ1JFRihyZXByKTsKICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNzksNiArMTA4MSw4IEBACiAgICAgUHlPYmplY3QgKnRlbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IGdldF90emluZm9fbWVtYmVyKG9iamVjdCk7CiAgICAgUHlPYmplY3QgKlpyZXBsYWNlbWVudCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICBfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKKwogICAgIGlmIChacmVwbGFjZW1lbnQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lIHx8IHR6aW5mbyA9PSBOVUxMKQpAQCAtMTA5OSw3ICsxMTAzLDcgQEAKICAgICAgKiBzdHJmdGltZSBkb2Vzbid0IHRyZWF0IHRoZW0gYXMgZm9ybWF0IGNvZGVzLgogICAgICAqLwogICAgIFB5X0RFQ1JFRihacmVwbGFjZW1lbnQpOwotICAgIFpyZXBsYWNlbWVudCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGVtcCwgInJlcGxhY2UiLCAic3MiLCAiJSIsICIlJSIpOworICAgIFpyZXBsYWNlbWVudCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGVtcCwgJlB5SWRfcmVwbGFjZSwgInNzIiwgIiUiLCAiJSUiKTsKICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgaWYgKFpyZXBsYWNlbWVudCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNjYsMzEgKzExNzAsNiBAQAogICAgIGlmICghcGluKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEdpdmUgdXAgaWYgdGhlIHllYXIgaXMgYmVmb3JlIDEwMDAuCi0gICAgICogUHl0aG9uIHN0cmZ0aW1lKCkgcGxheXMgZ2FtZXMgd2l0aCB0aGUgeWVhciwgYW5kIGRpZmZlcmVudAotICAgICAqIGdhbWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGVudmFyIFBZVEhPTjJLIGlzIHNldC4gIFRoaXMgbWFrZXMKLSAgICAgKiB5ZWFycyBiZWZvcmUgMTAwMCBhIG5pZ2h0bWFyZSwgZXZlbiBpZiB0aGUgcGxhdGZvcm0gc3RyZnRpbWUKLSAgICAgKiBzdXBwb3J0cyB0aGVtIChhbmQgbm90IGFsbCBkbykuCi0gICAgICogV2UgY291bGQgZ2V0IGEgbG90IGZhcnRoZXIgaGVyZSBieSBhdm9pZGluZyBQeXRob24ncyBzdHJmdGltZQotICAgICAqIHdyYXBwZXIgYW5kIGNhbGxpbmcgdGhlIEMgc3RyZnRpbWUoKSBkaXJlY3RseSwgYnV0IHRoYXQgaXNuJ3QKLSAgICAgKiBhbiBvcHRpb24gaW4gdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1vZHVsZS4KLSAgICAgKi8KLSAgICB7Ci0gICAgICAgIGxvbmcgeWVhcjsKLSAgICAgICAgUHlPYmplY3QgKnB5eWVhciA9IFB5U2VxdWVuY2VfR2V0SXRlbSh0aW1ldHVwbGUsIDApOwotICAgICAgICBpZiAocHl5ZWFyID09IE5VTEwpIHJldHVybiBOVUxMOwotICAgICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHB5eWVhcikpOwotICAgICAgICB5ZWFyID0gUHlMb25nX0FzTG9uZyhweXllYXIpOwotICAgICAgICBQeV9ERUNSRUYocHl5ZWFyKTsKLSAgICAgICAgaWYgKHllYXIgPCAxMDAwKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgInllYXI9JWxkIGlzIGJlZm9yZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIjEwMDA7IHRoZSBkYXRldGltZSBzdHJmdGltZSgpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyByZXF1aXJlIHllYXIgPj0gMTAwMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeWVhcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8qIFNjYW4gdGhlIGlucHV0IGZvcm1hdCwgbG9va2luZyBmb3IgJXovJVovJWYgZXNjYXBlcywgYnVpbGRpbmcKICAgICAgKiBhIG5ldyBmb3JtYXQuICBTaW5jZSBjb21wdXRpbmcgdGhlIHJlcGxhY2VtZW50cyBmb3IgdGhvc2UgY29kZXMKICAgICAgKiBpcyBleHBlbnNpdmUsIGRvbid0IHVubGVzcyB0aGV5J3JlIGFjdHVhbGx5IHVzZWQuCkBAIC0xMjg2LDE0ICsxMjY1LDEzIEBACiAgICAgICAgIGFzc2VydChwdG9hcHBlbmQgIT0gTlVMTCk7CiAgICAgICAgIGFzc2VydChudG9hcHBlbmQgPiAwKTsKICAgICAgICAgd2hpbGUgKHVzZWRuZXcgKyBudG9hcHBlbmQgPiB0b3RhbG5ldykgewotICAgICAgICAgICAgc2l6ZV90IGJpZ2dlciA9IHRvdGFsbmV3IDw8IDE7Ci0gICAgICAgICAgICBpZiAoKGJpZ2dlciA+PiAxKSAhPSB0b3RhbG5ldykgeyAvKiBvdmVyZmxvdyAqLworICAgICAgICAgICAgaWYgKHRvdGFsbmV3ID4gKFBZX1NTSVpFX1RfTUFYID4+IDEpKSB7IC8qIG92ZXJmbG93ICovCiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZuZXdmbXQsIGJpZ2dlcikgPCAwKQorICAgICAgICAgICAgdG90YWxuZXcgPDw9IDE7CisgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZuZXdmbXQsIHRvdGFsbmV3KSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBEb25lOwotICAgICAgICAgICAgdG90YWxuZXcgPSBiaWdnZXI7CiAgICAgICAgICAgICBwbmV3ID0gUHlCeXRlc19Bc1N0cmluZyhuZXdmbXQpICsgdXNlZG5ldzsKICAgICAgICAgfQogICAgICAgICBtZW1jcHkocG5ldywgcHRvYXBwZW5kLCBudG9hcHBlbmQpOwpAQCAtMTMwNywxMiArMTI4NSwxNSBAQAogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmZvcm1hdDsKICAgICAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CisKICAgICAgICAgaWYgKHRpbWUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobmV3Zm10KSk7CiAgICAgICAgIGlmIChmb3JtYXQgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0aW1lLCAic3RyZnRpbWUiLCAiT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHRpbWV0dXBsZSwgTlVMTCk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzdHJmdGltZSk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfc3RyZnRpbWUsICJPTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdGltZXR1cGxlLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmb3JtYXQpOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKQEAgLTEzMzgsNyArMTMxOSw5IEBACiAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CiAKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInRpbWUiLCAiKCkiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCAiKCkiKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM1NSwxMyArMTMzOCwxNSBAQAogCiAgICAgdGltZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInRpbWUiKTsKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInN0cnVjdF90aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOworICAgICAgICBfUHlfSURFTlRJRklFUihzdHJ1Y3RfdGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF9zdHJ1Y3RfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOwogICAgICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDYxLDcgKzE0NDYsNyBAQAogICAgICAgICBnb3RvIERvbmU7CiAgICAgUHlfREVDUkVGKHgxKTsKICAgICBQeV9ERUNSRUYoeDIpOwotICAgIHgxID0geDIgPSBOVUxMOworICAgIC8qIHgxID0gKi8geDIgPSBOVUxMOwogCiAgICAgLyogeDMgaGFzIGRheXMrc2Vjb25kcyBpbiBzZWNvbmRzICovCiAgICAgeDEgPSBQeU51bWJlcl9NdWx0aXBseSh4MywgdXNfcGVyX3NlY29uZCk7ICAgICAgICAgIC8qIHVzICovCkBAIC0xNTk0LDExICsxNTc5LDEyIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnB5dXNfaW4gPSBOVUxMLCAqdGVtcCwgKnB5dXNfb3V0OwogICAgIFB5T2JqZWN0ICpyYXRpbyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoYXNfaW50ZWdlcl9yYXRpbyk7CiAKICAgICBweXVzX2luID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKGRlbHRhKTsKICAgICBpZiAocHl1c19pbiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByYXRpbyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmxvYXRvYmosICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZsb2F0b2JqLCAmUHlJZF9hc19pbnRlZ2VyX3JhdGlvLCBOVUxMKTsKICAgICBpZiAocmF0aW8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB0ZW1wID0gUHlOdW1iZXJfTXVsdGlwbHkocHl1c19pbiwgUHlUdXBsZV9HRVRfSVRFTShyYXRpbywgMCkpOwpAQCAtMTY5MiwxMSArMTY3OCwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpweXVzX2luID0gTlVMTCwgKnRlbXAsICpweXVzX291dDsKICAgICBQeU9iamVjdCAqcmF0aW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGFzX2ludGVnZXJfcmF0aW8pOwogCiAgICAgcHl1c19pbiA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcyhkZWx0YSk7CiAgICAgaWYgKHB5dXNfaW4gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmF0aW8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2FzX2ludGVnZXJfcmF0aW8sIE5VTEwpOwogICAgIGlmIChyYXRpbyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHRlbXAgPSBQeU51bWJlcl9NdWx0aXBseShweXVzX2luLCBQeVR1cGxlX0dFVF9JVEVNKHJhdGlvLCAxKSk7CkBAIC0xODM3LDggKzE4MjQsNyBAQAogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIH0KIApAQCAtMTkzNiwxMCArMTkyMiw4IEBACiAgICAgUHlPYmplY3QgKnB5dXNfcmVtYWluZGVyOwogICAgIFB5T2JqZWN0ICpyZW1haW5kZXI7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMTk3NCwxMCArMTk1OCw4IEBACiAgICAgUHlPYmplY3QgKmRlbHRhOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMjQ2MCwyNiArMjQ0MiwyOSBAQAogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBsb2NhbHRpbWUodCkuICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZV9sb2NhbF9mcm9tX3RpbWVfdChQeU9iamVjdCAqY2xzLCBkb3VibGUgdHMpCitkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgc3RydWN0IHRtICp0bTsKICAgICB0aW1lX3QgdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQodHMpOwotICAgIGlmICh0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB0bSA9IGxvY2FsdGltZSgmdCk7Ci0gICAgaWYgKHRtKQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIGxvY2FsdGltZSgpIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAodG0gPT0gTlVMTCkgeworICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBjdXJyZW50IHRpbWUuCkBAIC0yNDkyLDYgKzI0NzcsNyBAQAogewogICAgIFB5T2JqZWN0ICp0aW1lOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoZnJvbXRpbWVzdGFtcCk7CiAKICAgICB0aW1lID0gdGltZV90aW1lKCk7CiAgICAgaWYgKHRpbWUgPT0gTlVMTCkKQEAgLTI1MDMsNyArMjQ4OSw3IEBACiAgICAgICogdGltZS50aW1lKCkgZGVsaXZlcnM7IGlmIHNvbWVvbmUgd2VyZSBnb256byBhYm91dCBvcHRpbWl6YXRpb24sCiAgICAgICogZGF0ZS50b2RheSgpIGNvdWxkIGdldCBhd2F5IHdpdGggcGxhaW4gQyB0aW1lKCkuCiAgICAgICovCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjbHMsICJmcm9tdGltZXN0YW1wIiwgIk8iLCB0aW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGNscywgJlB5SWRfZnJvbXRpbWVzdGFtcCwgIk8iLCB0aW1lKTsKICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1MTIsMTEgKzI0OTgsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6ZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRlX2xvY2FsX2Zyb21fdGltZV90KGNscywgdGltZXN0YW1wKTsKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgICAgIHJlc3VsdCA9IGRhdGVfbG9jYWxfZnJvbV9vYmplY3QoY2xzLCB0aW1lc3RhbXApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI1NzEsMTAgKzI1NTcsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfYWRkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKFB5RGF0ZV9DaGVjayhsZWZ0KSkgewogICAgICAgICAvKiBkYXRlICsgPz8/ICovCiAgICAgICAgIGlmIChQeURlbHRhX0NoZWNrKHJpZ2h0KSkKQEAgLTI1OTMsMTcgKzI1NzgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKikgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3VidHJhY3QoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChQeURhdGVUaW1lX0NoZWNrKGxlZnQpIHx8IFB5RGF0ZVRpbWVfQ2hlY2socmlnaHQpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoUHlEYXRlX0NoZWNrKGxlZnQpKSB7CiAgICAgICAgIGlmIChQeURhdGVfQ2hlY2socmlnaHQpKSB7CiAgICAgICAgICAgICAvKiBkYXRlIC0gZGF0ZSAqLwpAQCAtMjYyMiw4ICsyNjA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiAKQEAgLTI2NDgsNyArMjYzMCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9zdHIoUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKIH0KIAogCkBAIC0yNjY3LDEzICsyNjUxLDE0IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUih0aW1ldHVwbGUpOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmb3JtYXQiLCBOVUxMfTsKIAogICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIlU6c3RyZnRpbWUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHVwbGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJ0aW1ldHVwbGUiLCAiKCkiKTsKKyAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCAiKCkiKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzdWx0ID0gd3JhcF9zdHJmdGltZSgoUHlPYmplY3QgKilzZWxmLCBmb3JtYXQsIHR1cGxlLApAQCAtMjY4NiwxNSArMjY3MSwxNiBAQAogZGF0ZV9mb3JtYXQoUHlEYXRlVGltZV9EYXRlICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIF9QeV9JREVOVElGSUVSKHN0cmZ0aW1lKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogaWYgdGhlIGZvcm1hdCBpcyB6ZXJvIGxlbmd0aCwgcmV0dXJuIHN0cihzZWxmKSAqLwotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShmb3JtYXQpID09IDApCisgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgoZm9ybWF0KSA9PSAwKQogICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKChQeU9iamVjdCAqKXNlbGYpOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgInN0cmZ0aW1lIiwgIk8iLCBmb3JtYXQpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3N0cmZ0aW1lLCAiTyIsIGZvcm1hdCk7CiB9CiAKIC8qIElTTyBtZXRob2RzLiAqLwpAQCAtMjc0MCwxMCArMjcyNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVfREFUQVNJWkUpOwogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgZWxzZQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNzc1LDI3ICsyNzU5LDEwIEBACiAgICAgcmV0dXJuIGNsb25lOwogfQogCi0vKgotICAgIEJvcnJvd2VkIGZyb20gc3RyaW5nb2JqZWN0LmMsIG9yaWdpbmFsbHkgaXQgd2FzIHN0cmluZ19oYXNoKCkKLSovCiBzdGF0aWMgUHlfaGFzaF90CiBnZW5lcmljX2hhc2godW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxlbikKIHsKLSAgICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpwOwotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCB4OwotCi0gICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKLSAgICB4ID0gX1B5X0hhc2hTZWNyZXQucHJlZml4OwotICAgIHggXj0gKnAgPDwgNzsKLSAgICB3aGlsZSAoLS1sZW4gPj0gMCkKLSAgICAgICAgeCA9ICgxMDAwMDAzKngpIF4gKnArKzsKLSAgICB4IF49IGxlbjsKLSAgICB4IF49IF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKLSAgICBpZiAoeCA9PSAtMSkKLSAgICAgICAgeCA9IC0yOwotCi0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIF9QeV9IYXNoQnl0ZXMoZGF0YSwgbGVuKTsKIH0KIAogCkBAIC0zMTAwLDEyICszMDY3LDE0IEBACiB7CiAgICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZSwgKnRtcDsKICAgICBQeU9iamVjdCAqZ2V0aW5pdGFyZ3MsICpnZXRzdGF0ZTsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CiAKICAgICB0bXAgPSBQeVR1cGxlX05ldygwKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZ2V0aW5pdGFyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2dldGluaXRhcmdzX18iKTsKKyAgICBnZXRpbml0YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRpbml0YXJnc19fKTsKICAgICBpZiAoZ2V0aW5pdGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRpbml0YXJncywgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldGluaXRhcmdzKTsKQEAgLTMxMjAsNyArMzA4OSw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKICAgICB9CiAKLSAgICBnZXRzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZ2V0c3RhdGVfXyIpOworICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKQEAgLTMyNDMsMTAgKzMyMTIsOCBAQAogdGltZXpvbmVfcmljaGNvbXBhcmUoUHlEYXRlVGltZV9UaW1lWm9uZSAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmUgKm90aGVyLCBpbnQgb3ApCiB7Ci0gICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgaWYgKFB5X1RZUEUob3RoZXIpICE9ICZQeURhdGVUaW1lX1RpbWVab25lVHlwZSkgewogCWlmIChvcCA9PSBQeV9FUSkKIAkgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMzI5Nyw3ICszMjY0LDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lem9uZV9zdHIoUHlEYXRlVGltZV9UaW1lWm9uZSAqc2VsZikKIHsKLSAgICBjaGFyIGJ1ZlsxMF07CiAgICAgaW50IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzOwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgY2hhciBzaWduOwpAQCAtMzMyMywxMSArMzI4OSw5IEBACiAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgbWludXRlcyA9IGRpdm1vZChzZWNvbmRzLCA2MCwgJnNlY29uZHMpOwogICAgIGhvdXJzID0gZGl2bW9kKG1pbnV0ZXMsIDYwLCAmbWludXRlcyk7Ci0gICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7CiAgICAgLyogWFhYIGlnbm9yZSBzdWItbWludXRlIGRhdGEsIGN1cmVudGx5IG5vdCBhbGxvd2VkLiAqLwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIlVUQyVjJTAyZDolMDJkIiwgc2lnbiwgaG91cnMsIG1pbnV0ZXMpOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJVVEMlYyUwMmQ6JTAyZCIsIHNpZ24sIGhvdXJzLCBtaW51dGVzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM2MjQsNyArMzU4OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zdHIoUHlEYXRlVGltZV9UaW1lICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM3MDEsMTAgKzM2NjcsOCBAQAogICAgIFB5T2JqZWN0ICpvZmZzZXQxLCAqb2Zmc2V0MjsKICAgICBpbnQgZGlmZjsKIAotICAgIGlmICghIFB5VGltZV9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoISBQeVRpbWVfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICBpZiAoR0VUX1RJTUVfVFpJTkZPKHNlbGYpID09IEdFVF9USU1FX1RaSU5GTyhvdGhlcikpIHsKICAgICAgICAgZGlmZiA9IG1lbWNtcCgoKFB5RGF0ZVRpbWVfVGltZSAqKXNlbGYpLT5kYXRhLApAQCAtMzc1MCw2ICszNzE0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlDUk9TRUNPTkQob3RoZXIpOwogICAgICAgICByZXN1bHQgPSBkaWZmX3RvX2Jvb2woZGlmZiwgb3ApOwogICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9FUSkgeworICAgICAgICByZXN1bHQgPSBQeV9GYWxzZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X05FKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X1RydWU7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBjb21wYXJlIG9mZnNldC1uYWl2ZSBhbmQgIgpAQCAtNDEwNSwzMyArNDA3NywzMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKICAgICBzdHJ1Y3QgdG0gKnRtOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCiAgICAgdG0gPSBmKCZ0aW1ldCk7Ci0gICAgaWYgKHRtKSB7Ci0gICAgICAgIC8qIFRoZSBwbGF0Zm9ybSBsb2NhbHRpbWUvZ210aW1lIG1heSBpbnNlcnQgbGVhcCBzZWNvbmRzLAotICAgICAgICAgKiBpbmRpY2F0ZWQgYnkgdG0tPnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAotICAgICAgICAgKiBleGNlcHQgdG8gdGhlIGV4dGVudCB0aGF0IHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZGF0ZXRpbWUKLSAgICAgICAgICogY29uc3RydWN0b3Igd291bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgYSByZWFzb24gdGhhdAotICAgICAgICAgKiBtYWRlIG5vIHNlbnNlIHRvIHRoZSB1c2VyLgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHRtLT50bV9zZWMgPiA1OSkKLSAgICAgICAgICAgIHRtLT50bV9zZWMgPSA1OTsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaWlpaWlPIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1faG91ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9taW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fc2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgIGlmICh0bSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0gbG9jYWx0aW1lKCkvZ210aW1lKCkgZnVuY3Rpb24iKTsKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgLyogVGhlIHBsYXRmb3JtIGxvY2FsdGltZS9nbXRpbWUgbWF5IGluc2VydCBsZWFwIHNlY29uZHMsCisgICAgICogaW5kaWNhdGVkIGJ5IHRtLT50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKKyAgICAgKiBleGNlcHQgdG8gdGhlIGV4dGVudCB0aGF0IHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZGF0ZXRpbWUKKyAgICAgKiBjb25zdHJ1Y3RvciB3b3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciBhIHJlYXNvbiB0aGF0CisgICAgICogbWFkZSBubyBzZW5zZSB0byB0aGUgdXNlci4KKyAgICAgKi8KKyAgICBpZiAodG0tPnRtX3NlYyA+IDU5KQorICAgICAgICB0bS0+dG1fc2VjID0gNTk7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3NlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDE0MiwzMiArNDExNCwxNSBAQAogICogdG8gZ2V0IHRoYXQgbXVjaCBwcmVjaXNpb24gKGUuZy4sIEMgdGltZSgpIGlzbid0IGdvb2QgZW5vdWdoKS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgZG91YmxlIHRpbWVzdGFtcCwKK2RhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgUHlPYmplY3QgKnRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7CiAgICAgdGltZV90IHRpbWV0OwotICAgIGRvdWJsZSBmcmFjdGlvbjsKLSAgICBpbnQgdXM7CisgICAgbG9uZyB1czsKIAotICAgIHRpbWV0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHRpbWVzdGFtcCk7Ci0gICAgaWYgKHRpbWV0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodGltZXN0YW1wLCAmdGltZXQsICZ1cykgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZyYWN0aW9uID0gdGltZXN0YW1wIC0gKGRvdWJsZSl0aW1ldDsKLSAgICB1cyA9IChpbnQpcm91bmRfdG9fbG9uZyhmcmFjdGlvbiAqIDFlNik7Ci0gICAgaWYgKHVzIDwgMCkgewotICAgICAgICAvKiBUcnVuY2F0aW9uIHRvd2FyZHMgemVybyBpcyBub3Qgd2hhdCB3ZSB3YW50ZWQKLSAgICAgICAgICAgZm9yIG5lZ2F0aXZlIG51bWJlcnMgKFB5dGhvbidzIG1vZCBzZW1hbnRpY3MpICovCi0gICAgICAgIHRpbWV0IC09IDE7Ci0gICAgICAgIHVzICs9IDEwMDAwMDA7Ci0gICAgfQotICAgIC8qIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCi0gICAgICogZnVsbCBzZWNvbmQsIHJvdW5kIHVwLiBPdGhlcndpc2UsIFZhbHVlRXJyb3JzIGFyZSByYWlzZWQKLSAgICAgKiBmb3Igc29tZSBmbG9hdHMuICovCi0gICAgaWYgKHVzID09IDEwMDAwMDApIHsKLSAgICAgICAgdGltZXQgKz0gMTsKLSAgICAgICAgdXMgPSAwOwotICAgIH0KLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgdXMsIHR6aW5mbyk7CisgICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIChpbnQpdXMsIHR6aW5mbyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQyMDUsNyArNDE2MCw5IEBACiAgICAgaWYgKHNlbGYgIT0gTlVMTCAmJiB0emluZm8gIT0gUHlfTm9uZSkgewogICAgICAgICAvKiBDb252ZXJ0IFVUQyB0byB0emluZm8ncyB6b25lLiAqLwogICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGY7Ci0gICAgICAgIHNlbGYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgImZyb211dGMiLCAiTyIsIHNlbGYpOworICAgICAgICBfUHlfSURFTlRJRklFUihmcm9tdXRjKTsKKworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgc2VsZik7CiAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CkBAIC00MjI1LDExICs0MTgyLDExIEBACiBkYXRldGltZV9mcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgUHlPYmplY3QgKnNlbGY7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0aW1lc3RhbXAiLCAidHoiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImR8Tzpmcm9tdGltZXN0YW1wIiwKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPfE86ZnJvbXRpbWVzdGFtcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzLCAmdGltZXN0YW1wLCAmdHppbmZvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pIDwgMCkKQEAgLTQyNDIsNyArNDE5OSw5IEBACiAgICAgaWYgKHNlbGYgIT0gTlVMTCAmJiB0emluZm8gIT0gUHlfTm9uZSkgewogICAgICAgICAvKiBDb252ZXJ0IFVUQyB0byB0emluZm8ncyB6b25lLiAqLwogICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGY7Ci0gICAgICAgIHNlbGYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgImZyb211dGMiLCAiTyIsIHNlbGYpOworICAgICAgICBfUHlfSURFTlRJRklFUihmcm9tdXRjKTsKKworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgc2VsZik7CiAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CkBAIC00MjUyLDEwICs0MjExLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdXRjZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBkb3VibGUgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICp0aW1lc3RhbXA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDp1dGNmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQogICAgICAgICByZXN1bHQgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsIGdtdGltZSwgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDI2Niw5ICs0MjI1LDEwIEBACiBkYXRldGltZV9zdHJwdGltZShQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3RyaW5nLCAqZm9ybWF0OworICAgIFB5T2JqZWN0ICpzdHJpbmcsICpmb3JtYXQ7CisgICAgX1B5X0lERU5USUZJRVIoX3N0cnB0aW1lX2RhdGV0aW1lKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6c3RycHRpbWUiLCAmc3RyaW5nLCAmZm9ybWF0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOnN0cnB0aW1lIiwgJnN0cmluZywgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKSB7CkBAIC00Mjc2LDggKzQyMzYsOCBAQAogICAgICAgICBpZiAobW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QobW9kdWxlLCAiX3N0cnB0aW1lX2RhdGV0aW1lIiwgIk91dSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLCBzdHJpbmcsIGZvcm1hdCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobW9kdWxlLCAmUHlJZF9fc3RycHRpbWVfZGF0ZXRpbWUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLCBzdHJpbmcsIGZvcm1hdCk7CiB9CiAKIC8qIFJldHVybiBuZXcgZGF0ZXRpbWUgZnJvbSBkYXRlL2RhdGV0aW1lIGFuZCB0aW1lIGFyZ3VtZW50cy4gKi8KQEAgLTQzOTMsOCArNDM1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopIGxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTIzLDcgKzQ0ODIsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3N0cihQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKHMpIiwgIiAiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKHMpIiwgIiAiKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1OTYsOCArNDU1Nyw3IEBACiAgICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgICAgICAgICByZXR1cm4gY21wZXJyb3Ioc2VsZiwgb3RoZXIpOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChHRVRfRFRfVFpJTkZPKHNlbGYpID09IEdFVF9EVF9UWklORk8ob3RoZXIpKSB7CkBAIC00NjM5LDYgKzQ1OTksMTQgQEAKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfRmFsc2U7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9ORSkgeworICAgICAgICByZXN1bHQgPSBQeV9UcnVlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgY29tcGFyZSBvZmZzZXQtbmFpdmUgYW5kICIKQEAgLTQ3MjUsMTYgKzQ2OTMsODMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xvY2FsX3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnV0Y190aW1lKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIHN0cnVjdCB0bSAqdGltZXA7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqZGVsdGE7CisgICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7CisgICAgUHlPYmplY3QgKnNlY29uZHM7CisgICAgUHlPYmplY3QgKm5hbWVvID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICp6b25lID0gTlVMTDsKKworICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QoKFB5T2JqZWN0ICopdXRjX3RpbWUsIFB5RGF0ZVRpbWVfRXBvY2gpOworICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOworICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgc2Vjb25kcyA9IGRpdmlkZV90aW1lZGVsdGFfdGltZWRlbHRhKChQeURhdGVUaW1lX0RlbHRhICopZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb25lX3NlY29uZCk7CisgICAgUHlfREVDUkVGKG9uZV9zZWNvbmQpOworICAgIGlmIChzZWNvbmRzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICB0aW1lc3RhbXAgPSBQeUxvbmdfQXNMb25nKHNlY29uZHMpOworICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKKyAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRpbWVwID0gbG9jYWx0aW1lKCZ0aW1lc3RhbXApOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICB6b25lID0gdGltZXAtPnRtX3pvbmU7CisgICAgZGVsdGEgPSBuZXdfZGVsdGEoMCwgdGltZXAtPnRtX2dtdG9mZiwgMCwgMSk7CisjZWxzZSAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCisgICAgeworICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZTsKKyAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZSh0aW1lcC0+dG1feWVhciArIDE5MDAsIHRpbWVwLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9tZGF5LCB0aW1lcC0+dG1faG91ciwgdGltZXAtPnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fc2VjLCBEQVRFX0dFVF9NSUNST1NFQ09ORCh1dGNfdGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWUtPnR6aW5mbyk7CisgICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIChQeU9iamVjdCopdXRjX3RpbWUpOworICAgICAgICAvKiBYWFg6IGJlZm9yZSByZWx5aW5nIG9uIHR6bmFtZSwgd2Ugc2hvdWxkIGNvbXBhcmUgZGVsdGEKKyAgICAgICAgICAgdG8gdGhlIG9mZnNldCBpbXBsaWVkIGJ5IHRpbWV6b25lL2FsdHpvbmUgKi8KKyAgICAgICAgaWYgKGRheWxpZ2h0ICYmIHRpbWVwLT50bV9pc2RzdCA+PSAwKQorICAgICAgICAgICAgem9uZSA9IHR6bmFtZVt0aW1lcC0+dG1faXNkc3QgJSAyXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgem9uZSA9IHR6bmFtZVswXTsKKyAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgIH0KKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCisgICAgaWYgKHpvbmUgIT0gTlVMTCkgeworICAgICAgICBuYW1lbyA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICBpZiAobmFtZW8gPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJlc3VsdCA9IG5ld190aW1lem9uZShkZWx0YSwgbmFtZW8pOworICAgIFB5X0RFQ1JFRihuYW1lbyk7CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKgogZGF0ZXRpbWVfYXN0aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgUHlPYmplY3QgKnRlbXA7Ci0gICAgUHlPYmplY3QgKnR6aW5mbzsKKyAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKKyAgICBfUHlfSURFTlRJRklFUihmcm9tdXRjKTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hOmFzdGltZXpvbmUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGF0ZVRpbWVfVFpJbmZvVHlwZSwgJnR6aW5mbykpCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE86YXN0aW1lem9uZSIsIGtleXdvcmRzLAorCQkJCSAgICAgICZ0emluZm8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKQEAgLTQ3NDMsNyArNDc3OCw3IEBACiAgICAgLyogQ29udmVyc2lvbiB0byBzZWxmJ3Mgb3duIHRpbWUgem9uZSBpcyBhIE5PUC4gKi8KICAgICBpZiAoc2VsZi0+dHppbmZvID09IHR6aW5mbykgewogICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgICAgICByZXR1cm4gc2VsZjsKICAgICB9CiAKICAgICAvKiBDb252ZXJ0IHNlbGYgdG8gVVRDLiAqLwpAQCAtNDc1OSwyMCArNDc5NCwyOSBAQAogICAgIH0KIAogICAgIC8qIHJlc3VsdCA9IHNlbGYgLSBvZmZzZXQgKi8KLSAgICByZXN1bHQgPSBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKHNlbGYsCi0gICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQsIC0xKTsKKyAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKWFkZF9kYXRldGltZV90aW1lZGVsdGEoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0LCAtMSk7CiAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEF0dGFjaCBuZXcgdHppbmZvIGFuZCBsZXQgZnJvbXV0YygpIGRvIHRoZSByZXN0LiAqLwotICAgIHRlbXAgPSAoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQpLT50emluZm87Ci0gICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0KS0+dHppbmZvID0gdHppbmZvOwotICAgIFB5X0lOQ1JFRih0emluZm8pOworICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKKyAgICBpZiAodHppbmZvID09IFB5X05vbmUpIHsKKyAgICAgICAgdHppbmZvID0gbG9jYWxfdGltZXpvbmUocmVzdWx0KTsKKyAgICAgICAgaWYgKHR6aW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgIFB5X0lOQ1JFRih0emluZm8pOworICAgIHJlc3VsdC0+dHppbmZvID0gdHppbmZvOwogICAgIFB5X0RFQ1JFRih0ZW1wKTsKIAotICAgIHRlbXAgPSByZXN1bHQ7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJmcm9tdXRjIiwgIk8iLCB0ZW1wKTsKKyAgICB0ZW1wID0gKFB5T2JqZWN0ICopcmVzdWx0OworICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopCisgICAgICAgIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTyIsIHRlbXApOwogICAgIFB5X0RFQ1JFRih0ZW1wKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00ODA0LDYgKzQ4NDgsNDQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX3RpbWVzdGFtcChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoSEFTVFpJTkZPKHNlbGYpICYmIHNlbGYtPnR6aW5mbyAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5T2JqZWN0ICpkZWx0YTsKKyAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdCgoUHlPYmplY3QgKilzZWxmLCBQeURhdGVUaW1lX0Vwb2NoKTsKKyAgICAgICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmVzdWx0ID0gZGVsdGFfdG90YWxfc2Vjb25kcyhkZWx0YSk7CisgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdHJ1Y3QgdG0gdGltZTsKKyAgICAgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICAgICAgbWVtc2V0KCh2b2lkICopICZ0aW1lLCAnXDAnLCBzaXplb2Yoc3RydWN0IHRtKSk7CisgICAgICAgIHRpbWUudG1feWVhciA9IEdFVF9ZRUFSKHNlbGYpIC0gMTkwMDsKKyAgICAgICAgdGltZS50bV9tb24gPSBHRVRfTU9OVEgoc2VsZikgLSAxOworICAgICAgICB0aW1lLnRtX21kYXkgPSBHRVRfREFZKHNlbGYpOworICAgICAgICB0aW1lLnRtX2hvdXIgPSBEQVRFX0dFVF9IT1VSKHNlbGYpOworICAgICAgICB0aW1lLnRtX21pbiA9IERBVEVfR0VUX01JTlVURShzZWxmKTsKKyAgICAgICAgdGltZS50bV9zZWMgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7CisgICAgICAgIHRpbWUudG1fd2RheSA9IC0xOworICAgICAgICB0aW1lLnRtX2lzZHN0ID0gLTE7CisgICAgICAgIHRpbWVzdGFtcCA9IG1rdGltZSgmdGltZSk7CisgICAgICAgIC8qIFJldHVybiB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLCBidXQgdG1fd2RheQorICAgICAgICAgKiBjYW5ub3QgcmVtYWluIHNldCB0byAtMSBpZiBta3RpbWUgc3VjY2VlZGVkLiAqLworICAgICAgICBpZiAodGltZXN0YW1wID09ICh0aW1lX3QpKC0xKSAmJiB0aW1lLnRtX3dkYXkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUodGltZXN0YW1wICsgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZikgLyAxZTYpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfZ2V0ZGF0ZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewogICAgIHJldHVybiBuZXdfZGF0ZShHRVRfWUVBUihzZWxmKSwKQEAgLTQ5NTAsNiArNTAzMiw5IEBACiAgICAgeyJ0aW1ldHVwbGUiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV90aW1ldHVwbGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIlJldHVybiB0aW1lIHR1cGxlLCBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4iKX0sCiAKKyAgICB7InRpbWVzdGFtcCIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3RpbWVzdGFtcCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBhcyBmbG9hdC4iKX0sCisKICAgICB7InV0Y3RpbWV0dXBsZSIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3V0Y3RpbWV0dXBsZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIFVUQyB0aW1lIHR1cGxlLCBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4iKX0sCiAKQEAgLTUyMDcsNiArNTI5MiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CiAKKyAgICAvKiBFcG9jaCAqLworICAgIFB5RGF0ZVRpbWVfRXBvY2ggPSBuZXdfZGF0ZXRpbWUoMTk3MCwgMSwgMSwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDKTsKKyAgICBpZiAoUHlEYXRlVGltZV9FcG9jaCA9PSBOVUxMKQorICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTUlOWUVBUiIsIE1JTllFQVIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNQVhZRUFSIiwgTUFYWUVBUik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYm1tb2R1bGUuYyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCmluZGV4IDgyN2FjY2UuLjMyN2I4NzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RibW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCkBAIC0yMTIsNiArMjEyLDcgQEAKIHsKICAgICBkYm1vYmplY3QgKmRwID0gKGRibW9iamVjdCAqKXNlbGY7CiAgICAgZGF0dW0ga2V5LCB2YWw7CisgICAgUHlfc3NpemVfdCBzaXplOwogCiAgICAgaWYgKChkcCktPmRpX2RibSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhEYm1FcnJvciwKQEAgLTIxOSw4ICsyMjAsOSBAQAogICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgYXJnID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKGFyZywgTlVMTCk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKKyAgICAgICAga2V5LmRwdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZzaXplKTsKKyAgICAgICAga2V5LmRzaXplID0gc2l6ZTsKKyAgICAgICAgaWYgKGtleS5kcHRyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICghUHlCeXRlc19DaGVjayhhcmcpKSB7CkBAIC0yMjksOCArMjMxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGtleS5kcHRyID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKTsKLSAgICBrZXkuZHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGFyZyk7CisgICAgZWxzZSB7CisgICAgICAgIGtleS5kcHRyID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKTsKKyAgICAgICAga2V5LmRzaXplID0gUHlCeXRlc19HRVRfU0laRShhcmcpOworICAgIH0KICAgICB2YWwgPSBkYm1fZmV0Y2goZHAtPmRpX2RibSwga2V5KTsKICAgICByZXR1cm4gdmFsLmRwdHIgIT0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvUkVBRE1FLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjE3Y2ZmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9SRUFETUUudHh0CkBAIC0wLDAgKzEsNDYgQEAKKworCitBYm91dAorPT09PT0KKworX2RlY2ltYWwuYyBpcyBhIHdyYXBwZXIgZm9yIHRoZSBsaWJtcGRlYyBsaWJyYXJ5LiBsaWJtcGRlYyBpcyBhIGZhc3QgQworbGlicmFyeSBmb3IgY29ycmVjdGx5LXJvdW5kZWQgYXJiaXRyYXJ5IHByZWNpc2lvbiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50Cithcml0aG1ldGljLiBJdCBpcyBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIE1pa2UgQ293bGlzaGF3L0lCTSdzCitHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uLgorCisKK0J1aWxkIHByb2Nlc3MgZm9yIHRoZSBtb2R1bGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgdXN1YWwsIHRoZSBidWlsZCBwcm9jZXNzIGZvciBfZGVjaW1hbC5zbyBpcyBkcml2ZW4gYnkgc2V0dXAucHkgaW4gdGhlIHRvcAorbGV2ZWwgZGlyZWN0b3J5LiBzZXR1cC5weSBhdXRvZGV0ZWN0cyB0aGUgZm9sbG93aW5nIGJ1aWxkIGNvbmZpZ3VyYXRpb25zOgorCisgICAxKSB4NjQgICAgICAgICAtIDY0LWJpdCBQeXRob24sIHg4Nl82NCBwcm9jZXNzb3IgKEFNRCwgSW50ZWwpCisKKyAgIDIpIHVpbnQxMjggICAgIC0gNjQtYml0IFB5dGhvbiwgY29tcGlsZXIgcHJvdmlkZXMgX191aW50MTI4X3QgKGdjYykKKworICAgMykgYW5zaTY0ICAgICAgLSA2NC1iaXQgUHl0aG9uLCBBTlNJIEMKKworICAgNCkgcHBybyAgICAgICAgLSAzMi1iaXQgUHl0aG9uLCB4ODYgQ1BVLCBQZW50aXVtUHJvIG9yIGxhdGVyCisKKyAgIDUpIGFuc2kzMiAgICAgIC0gMzItYml0IFB5dGhvbiwgQU5TSSBDCisKKyAgIDYpIGFuc2ktbGVnYWN5IC0gMzItYml0IFB5dGhvbiwgY29tcGlsZXIgd2l0aG91dCB1aW50NjRfdAorCisgICA3KSB1bml2ZXJzYWwgICAtIE1hYyBPUyBvbmx5IChtdWx0aS1hcmNoKQorCisKK0l0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlIGF1dG9kZXRlY3Rpb24gYnkgZXhwb3J0aW5nOgorCisgICBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkU9dmFsdWUsIHdoZXJlIHZhbHVlIGlzIG9uZSBvZiB0aGUgYWJvdmUgb3B0aW9ucy4KKworCitOT1RFCis9PT09CisgCitkZWNpbWFsLnNvIGlzIG5vdCBidWlsdCBmcm9tIGEgc3RhdGljIGxpYm1wZGVjLmEgc2luY2UgZG9pbmcgc28gbGVkIHRvCitmYWlsdXJlcyBvbiBBSVggKHVzZXIgcmVwb3J0KSBhbmQgV2luZG93cyAobWl4aW5nIHN0YXRpYyBhbmQgZHluYW1pYyBDUlRzCitjYXVzZXMgbG9jYWxlIHByb2JsZW1zIGFuZCBtb3JlKS4KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTZmOWRhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCkBAIC0wLDAgKzEsNTY2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgImxvbmdpbnRyZXByLmgiCisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKyNpbmNsdWRlICJjb21wbGV4b2JqZWN0LmgiCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImRvY3N0cmluZ3MuaCIKKyNpbmNsdWRlICJtZW1vcnkuaCIKKworCisvKgorICogVHlwZSBzaXplcyB3aXRoIGFzc2VydGlvbnMgaW4gbXBkZWNpbWFsLmggYW5kIHB5cG9ydC5oOgorICogICAgc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKFB5X3NzaXplX3QpCisgKiAgICBzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YobXBkX3VpbnRfdCkgPT0gc2l6ZW9mKG1wZF9zc2l6ZV90KQorICovCisKKyNpZmRlZiBURVNUX0NPVkVSQUdFCisgICN1bmRlZiBQeV9MT0NBTF9JTkxJTkUKKyAgI2RlZmluZSBQeV9MT0NBTF9JTkxJTkUgUHlfTE9DQUwKKyNlbmRpZgorCisjZGVmaW5lIE1QRF9GbG9hdF9vcGVyYXRpb24gTVBEX05vdF9pbXBsZW1lbnRlZAorCisjZGVmaW5lIEJPVU5EU19DSEVDSyh4LCBNSU4sIE1BWCkgeCA9ICh4IDwgTUlOIHx8IE1BWCA8IHgpID8gTUFYIDogeAorCisKKy8qIF9QeV9ERUNfTUlOQUxMT0MgPj0gTVBEX01JTkFMTE9DICovCisjZGVmaW5lIF9QeV9ERUNfTUlOQUxMT0MgNAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5X2hhc2hfdCBoYXNoOworICAgIG1wZF90IGRlYzsKKyAgICBtcGRfdWludF90IGRhdGFbX1B5X0RFQ19NSU5BTExPQ107Cit9IFB5RGVjT2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIHVpbnQzMl90ICpmbGFnczsKK30gUHlEZWNTaWduYWxEaWN0T2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIG1wZF9jb250ZXh0X3QgY3R4OworICAgIFB5T2JqZWN0ICp0cmFwczsKKyAgICBQeU9iamVjdCAqZmxhZ3M7CisgICAgaW50IGNhcGl0YWxzOworI2lmbmRlZiBXSVRIT1VUX1RIUkVBRFMKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisjZW5kaWYKK30gUHlEZWNDb250ZXh0T2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpsb2NhbDsKKyAgICBQeU9iamVjdCAqZ2xvYmFsOworfSBQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0OworCisKKyN1bmRlZiBNUEQKKyN1bmRlZiBDVFgKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNfVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKlB5RGVjU2lnbmFsRGljdF9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY0NvbnRleHRfVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNDb250ZXh0TWFuYWdlcl9UeXBlOworI2RlZmluZSBQeURlY19DaGVja0V4YWN0KHYpIChQeV9UWVBFKHYpID09ICZQeURlY19UeXBlKQorI2RlZmluZSBQeURlY19DaGVjayh2KSBQeU9iamVjdF9UeXBlQ2hlY2sodiwgJlB5RGVjX1R5cGUpCisjZGVmaW5lIFB5RGVjU2lnbmFsRGljdF9DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSBQeURlY1NpZ25hbERpY3RfVHlwZSkKKyNkZWZpbmUgUHlEZWNDb250ZXh0X0NoZWNrKHYpIFB5T2JqZWN0X1R5cGVDaGVjayh2LCAmUHlEZWNDb250ZXh0X1R5cGUpCisjZGVmaW5lIE1QRCh2KSAoJigoUHlEZWNPYmplY3QgKil2KS0+ZGVjKQorI2RlZmluZSBTZEZsYWdBZGRyKHYpICgoKFB5RGVjU2lnbmFsRGljdE9iamVjdCAqKXYpLT5mbGFncykKKyNkZWZpbmUgU2RGbGFncyh2KSAoKigoUHlEZWNTaWduYWxEaWN0T2JqZWN0ICopdiktPmZsYWdzKQorI2RlZmluZSBDVFgodikgKCYoKFB5RGVjQ29udGV4dE9iamVjdCAqKXYpLT5jdHgpCisjZGVmaW5lIEN0eENhcHModikgKCgoUHlEZWNDb250ZXh0T2JqZWN0ICopdiktPmNhcGl0YWxzKQorCisKK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQoraW5jcl90cnVlKHZvaWQpCit7CisgICAgUHlfSU5DUkVGKFB5X1RydWUpOworICAgIHJldHVybiBQeV9UcnVlOworfQorCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK2luY3JfZmFsc2Uodm9pZCkKK3sKKyAgICBQeV9JTkNSRUYoUHlfRmFsc2UpOworICAgIHJldHVybiBQeV9GYWxzZTsKK30KKworCisjaWZkZWYgV0lUSE9VVF9USFJFQURTCisvKiBEZWZhdWx0IG1vZHVsZSBjb250ZXh0ICovCitzdGF0aWMgUHlPYmplY3QgKm1vZHVsZV9jb250ZXh0ID0gTlVMTDsKKyNlbHNlCisvKiBLZXkgZm9yIHRocmVhZCBzdGF0ZSBkaWN0aW9uYXJ5ICovCitzdGF0aWMgUHlPYmplY3QgKnRsc19jb250ZXh0X2tleSA9IE5VTEw7CisvKiBJbnZhcmlhbnQ6IE5VTEwgb3IgdGhlIG1vc3QgcmVjZW50bHkgYWNjZXNzZWQgdGhyZWFkIGxvY2FsIGNvbnRleHQgKi8KK3N0YXRpYyBQeURlY0NvbnRleHRPYmplY3QgKmNhY2hlZF9jb250ZXh0ID0gTlVMTDsKKyNlbmRpZgorCisvKiBUZW1wbGF0ZSBmb3IgY3JlYXRpbmcgbmV3IHRocmVhZCBjb250ZXh0cywgY2FsbGluZyBDb250ZXh0KCkgd2l0aG91dAorICogYXJndW1lbnRzIGFuZCBpbml0aWFsaXppbmcgdGhlIG1vZHVsZV9jb250ZXh0IG9uIGZpcnN0IGFjY2Vzcy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlID0gTlVMTDsKKy8qIEJhc2ljIGFuZCBleHRlbmRlZCBjb250ZXh0IHRlbXBsYXRlcyAqLworc3RhdGljIFB5T2JqZWN0ICpiYXNpY19jb250ZXh0X3RlbXBsYXRlID0gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSA9IE5VTEw7CisKKworLyogRXJyb3IgY29kZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBzaWduYWxzIG9yIGNvbmRpdGlvbnMgKi8KKyNkZWZpbmUgREVDX0lOVkFMSURfU0lHTkFMUyAoTVBEX01heF9zdGF0dXMrMVUpCisjZGVmaW5lIERFQ19FUlJfT0NDVVJSRUQgKERFQ19JTlZBTElEX1NJR05BTFM8PDEpCisjZGVmaW5lIERFQ19FUlJPUlMgKERFQ19JTlZBTElEX1NJR05BTFN8REVDX0VSUl9PQ0NVUlJFRCkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAgLyogY29uZGl0aW9uIG9yIHNpZ25hbCBuYW1lICovCisgICAgY29uc3QgY2hhciAqZnFuYW1lOyAvKiBmdWxseSBxdWFsaWZpZWQgbmFtZSAqLworICAgIHVpbnQzMl90IGZsYWc7ICAgICAgLyogbGlibXBkZWMgZmxhZyAqLworICAgIFB5T2JqZWN0ICpleDsgICAgICAgLyogY29ycmVzcG9uZGluZyBleGNlcHRpb24gKi8KK30gRGVjQ29uZE1hcDsKKworLyogVG9wIGxldmVsIEV4Y2VwdGlvbjsgaW5oZXJpdHMgZnJvbSBBcml0aG1ldGljRXJyb3IgKi8KK3N0YXRpYyBQeU9iamVjdCAqRGVjaW1hbEV4Y2VwdGlvbiA9IE5VTEw7CisKKy8qIEV4Y2VwdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIElFRUUgc2lnbmFscyAqLworI2RlZmluZSBTVUJOT1JNQUwgNQorI2RlZmluZSBJTkVYQUNUIDYKKyNkZWZpbmUgUk9VTkRFRCA3CisjZGVmaW5lIFNJR05BTF9NQVBfTEVOIDkKK3N0YXRpYyBEZWNDb25kTWFwIHNpZ25hbF9tYXBbXSA9IHsKKyAgeyJJbnZhbGlkT3BlcmF0aW9uIiwgImRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiIsIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uLCBOVUxMfSwKKyAgeyJGbG9hdE9wZXJhdGlvbiIsICJkZWNpbWFsLkZsb2F0T3BlcmF0aW9uIiwgTVBEX0Zsb2F0X29wZXJhdGlvbiwgTlVMTH0sCisgIHsiRGl2aXNpb25CeVplcm8iLCAiZGVjaW1hbC5EaXZpc2lvbkJ5WmVybyIsIE1QRF9EaXZpc2lvbl9ieV96ZXJvLCBOVUxMfSwKKyAgeyJPdmVyZmxvdyIsICJkZWNpbWFsLk92ZXJmbG93IiwgTVBEX092ZXJmbG93LCBOVUxMfSwKKyAgeyJVbmRlcmZsb3ciLCAiZGVjaW1hbC5VbmRlcmZsb3ciLCBNUERfVW5kZXJmbG93LCBOVUxMfSwKKyAgeyJTdWJub3JtYWwiLCAiZGVjaW1hbC5TdWJub3JtYWwiLCBNUERfU3Vibm9ybWFsLCBOVUxMfSwKKyAgeyJJbmV4YWN0IiwgImRlY2ltYWwuSW5leGFjdCIsIE1QRF9JbmV4YWN0LCBOVUxMfSwKKyAgeyJSb3VuZGVkIiwgImRlY2ltYWwuUm91bmRlZCIsIE1QRF9Sb3VuZGVkLCBOVUxMfSwKKyAgeyJDbGFtcGVkIiwgImRlY2ltYWwuQ2xhbXBlZCIsIE1QRF9DbGFtcGVkLCBOVUxMfSwKKyAge05VTEx9Cit9OworCisvKiBFeGNlcHRpb25zIHRoYXQgaW5oZXJpdCBmcm9tIEludmFsaWRPcGVyYXRpb24gKi8KK3N0YXRpYyBEZWNDb25kTWFwIGNvbmRfbWFwW10gPSB7CisgIHsiSW52YWxpZE9wZXJhdGlvbiIsICJkZWNpbWFsLkludmFsaWRPcGVyYXRpb24iLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIE5VTEx9LAorICB7IkNvbnZlcnNpb25TeW50YXgiLCAiZGVjaW1hbC5Db252ZXJzaW9uU3ludGF4IiwgTVBEX0NvbnZlcnNpb25fc3ludGF4LCBOVUxMfSwKKyAgeyJEaXZpc2lvbkltcG9zc2libGUiLCAiZGVjaW1hbC5EaXZpc2lvbkltcG9zc2libGUiLCBNUERfRGl2aXNpb25faW1wb3NzaWJsZSwgTlVMTH0sCisgIHsiRGl2aXNpb25VbmRlZmluZWQiLCAiZGVjaW1hbC5EaXZpc2lvblVuZGVmaW5lZCIsIE1QRF9EaXZpc2lvbl91bmRlZmluZWQsIE5VTEx9LAorICB7IkludmFsaWRDb250ZXh0IiwgImRlY2ltYWwuSW52YWxpZENvbnRleHQiLCBNUERfSW52YWxpZF9jb250ZXh0LCBOVUxMfSwKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgIHsiTWFsbG9jRXJyb3IiLCAiZGVjaW1hbC5NYWxsb2NFcnJvciIsIE1QRF9NYWxsb2NfZXJyb3IsIE5VTEx9LAorI2VuZGlmCisgIHtOVUxMfQorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmRlY19zaWduYWxfc3RyaW5nW01QRF9OVU1fRkxBR1NdID0geworICAgICJDbGFtcGVkIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkRpdmlzaW9uQnlaZXJvIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW5leGFjdCIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkZsb2F0T3BlcmF0aW9uIiwKKyAgICAiT3ZlcmZsb3ciLAorICAgICJSb3VuZGVkIiwKKyAgICAiU3Vibm9ybWFsIiwKKyAgICAiVW5kZXJmbG93IiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICppbnZhbGlkX3JvdW5kaW5nX2VyciA9CisidmFsaWQgdmFsdWVzIGZvciByb3VuZGluZyBhcmU6XG5cCisgIFtST1VORF9DRUlMSU5HLCBST1VORF9GTE9PUiwgUk9VTkRfVVAsIFJPVU5EX0RPV04sXG5cCisgICBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EX0hBTEZfRVZFTixcblwKKyAgIFJPVU5EXzA1VVBdIjsKKworc3RhdGljIGNvbnN0IGNoYXIgKmludmFsaWRfc2lnbmFsc19lcnIgPQorInZhbGlkIHZhbHVlcyBmb3Igc2lnbmFscyBhcmU6XG5cCisgIFtJbnZhbGlkT3BlcmF0aW9uLCBGbG9hdE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sXG5cCisgICBPdmVyZmxvdywgVW5kZXJmbG93LCBTdWJub3JtYWwsIEluZXhhY3QsIFJvdW5kZWQsXG5cCisgICBDbGFtcGVkXSI7CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgY29uc3QgY2hhciAqaW52YWxpZF9mbGFnc19lcnIgPQorInZhbGlkIHZhbHVlcyBmb3IgX2ZsYWdzIG9yIF90cmFwcyBhcmU6XG5cCisgIHNpZ25hbHM6XG5cCisgICAgW0RlY0lFRUVJbnZhbGlkT3BlcmF0aW9uLCBEZWNGbG9hdE9wZXJhdGlvbiwgRGVjRGl2aXNpb25CeVplcm8sXG5cCisgICAgIERlY092ZXJmbG93LCBEZWNVbmRlcmZsb3csIERlY1N1Ym5vcm1hbCwgRGVjSW5leGFjdCwgRGVjUm91bmRlZCxcblwKKyAgICAgRGVjQ2xhbXBlZF1cblwKKyAgY29uZGl0aW9ucyB3aGljaCB0cmlnZ2VyIERlY0lFRUVJbnZhbGlkT3BlcmF0aW9uOlxuXAorICAgIFtEZWNJbnZhbGlkT3BlcmF0aW9uLCBEZWNDb252ZXJzaW9uU3ludGF4LCBEZWNEaXZpc2lvbkltcG9zc2libGUsXG5cCisgICAgIERlY0RpdmlzaW9uVW5kZWZpbmVkLCBEZWNGcHVFcnJvciwgRGVjSW52YWxpZENvbnRleHQsIERlY01hbGxvY0Vycm9yXSI7CisjZW5kaWYKKworc3RhdGljIGludAordmFsdWVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1lc2cpOworICAgIHJldHVybiAtMTsKK30KKworI2lmZGVmIENPTkZJR18zMgorc3RhdGljIFB5T2JqZWN0ICoKK3ZhbHVlX2Vycm9yX3B0cihjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Cit0eXBlX2Vycm9yX2ludChjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc2cpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3R5cGVfZXJyb3JfcHRyKGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK3J1bnRpbWVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIC0xOworfQorI2RlZmluZSBJTlRFUk5BTF9FUlJPUl9JTlQoZnVuY25hbWUpIFwKKyAgICByZXR1cm4gcnVudGltZV9lcnJvcl9pbnQoImludGVybmFsIGVycm9yIGluICIgZnVuY25hbWUpCisKK3N0YXRpYyBQeU9iamVjdCAqCitydW50aW1lX2Vycm9yX3B0cihjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1lc2cpOworICAgIHJldHVybiBOVUxMOworfQorI2RlZmluZSBJTlRFUk5BTF9FUlJPUl9QVFIoZnVuY25hbWUpIFwKKyAgICByZXR1cm4gcnVudGltZV9lcnJvcl9wdHIoImludGVybmFsIGVycm9yIGluICIgZnVuY25hbWUpCisKK3N0YXRpYyB2b2lkCitkZWNfdHJhcGhhbmRsZXIobXBkX2NvbnRleHRfdCAqY3R4IFVOVVNFRCkgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworeyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgcmV0dXJuOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmbGFnc19hc19leGNlcHRpb24odWludDMyX3QgZmxhZ3MpCit7CisgICAgRGVjQ29uZE1hcCAqY207CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoZmxhZ3MmY20tPmZsYWcpIHsKKyAgICAgICAgICAgIHJldHVybiBjbS0+ZXg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJTlRFUk5BTF9FUlJPUl9QVFIoImZsYWdzX2FzX2V4Y2VwdGlvbiIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCit9CisKK1B5X0xPQ0FMX0lOTElORSh1aW50MzJfdCkKK2V4Y2VwdGlvbl9hc19mbGFnKFB5T2JqZWN0ICpleCkKK3sKKyAgICBEZWNDb25kTWFwICpjbTsKKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChjbS0+ZXggPT0gZXgpIHsKKyAgICAgICAgICAgIHJldHVybiBjbS0+ZmxhZzsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgaW52YWxpZF9zaWduYWxzX2Vycik7CisgICAgcmV0dXJuIERFQ19JTlZBTElEX1NJR05BTFM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmbGFnc19hc19saXN0KHVpbnQzMl90IGZsYWdzKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIERlY0NvbmRNYXAgKmNtOworCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGNtID0gY29uZF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGZsYWdzJmNtLT5mbGFnKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBjbS0+ZXgpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXArMTsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoZmxhZ3MmY20tPmZsYWcpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGNtLT5leCkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBsaXN0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxzX2FzX2xpc3QodWludDMyX3QgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgRGVjQ29uZE1hcCAqY207CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChmbGFncyZjbS0+ZmxhZykgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgY20tPmV4KSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIHVpbnQzMl90CitsaXN0X2FzX2ZsYWdzKFB5T2JqZWN0ICpsaXN0KQoreworICAgIFB5T2JqZWN0ICppdGVtOworICAgIHVpbnQzMl90IGZsYWdzLCB4OworICAgIFB5X3NzaXplX3QgbiwgajsKKworICAgIGFzc2VydChQeUxpc3RfQ2hlY2sobGlzdCkpOworCisgICAgbiA9IFB5TGlzdF9TaXplKGxpc3QpOworICAgIGZsYWdzID0gMDsKKyAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7CisgICAgICAgIGl0ZW0gPSBQeUxpc3RfR2V0SXRlbShsaXN0LCBqKTsKKyAgICAgICAgeCA9IGV4Y2VwdGlvbl9hc19mbGFnKGl0ZW0pOworICAgICAgICBpZiAoeCAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9CisgICAgICAgIGZsYWdzIHw9IHg7CisgICAgfQorCisgICAgcmV0dXJuIGZsYWdzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmxhZ3NfYXNfZGljdCh1aW50MzJfdCBmbGFncykKK3sKKyAgICBEZWNDb25kTWFwICpjbTsKKyAgICBQeU9iamVjdCAqZGljdDsKKworICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBQeU9iamVjdCAqYiA9IGZsYWdzJmNtLT5mbGFnID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oZGljdCwgY20tPmV4LCBiKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGRpY3Q7Cit9CisKK3N0YXRpYyB1aW50MzJfdAorZGljdF9hc19mbGFncyhQeU9iamVjdCAqdmFsKQoreworICAgIFB5T2JqZWN0ICpiOworICAgIERlY0NvbmRNYXAgKmNtOworICAgIHVpbnQzMl90IGZsYWdzID0gMDsKKyAgICBpbnQgeDsKKworICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgc2lnbmFsIGRpY3QiKTsKKyAgICAgICAgcmV0dXJuIERFQ19JTlZBTElEX1NJR05BTFM7CisgICAgfQorCisgICAgaWYgKFB5RGljdF9TaXplKHZhbCkgIT0gU0lHTkFMX01BUF9MRU4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgc2lnbmFsIGRpY3QiKTsKKyAgICAgICAgcmV0dXJuIERFQ19JTlZBTElEX1NJR05BTFM7CisgICAgfQorCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgYiA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKHZhbCwgY20tPmV4KTsKKyAgICAgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gREVDX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBzaWduYWwgZGljdCIpOworICAgICAgICAgICAgcmV0dXJuIERFQ19JTlZBTElEX1NJR05BTFM7CisgICAgICAgIH0KKworICAgICAgICB4ID0gUHlPYmplY3RfSXNUcnVlKGIpOworICAgICAgICBpZiAoeCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBERUNfRVJSX09DQ1VSUkVEOworICAgICAgICB9CisgICAgICAgIGlmICh4ID09IDEpIHsKKyAgICAgICAgICAgIGZsYWdzIHw9IGNtLT5mbGFnOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZsYWdzOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIHVpbnQzMl90Citsb25nX2FzX2ZsYWdzKFB5T2JqZWN0ICp2KQoreworICAgIGxvbmcgeDsKKworICAgIHggPSBQeUxvbmdfQXNMb25nKHYpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIERFQ19FUlJfT0NDVVJSRUQ7CisgICAgfQorICAgIGlmICh4IDwgMCB8fCB4ID4gKGxvbmcpTVBEX01heF9zdGF0dXMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgaW52YWxpZF9mbGFnc19lcnIpOworICAgICAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKKyAgICB9CisKKyAgICByZXR1cm4geDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50CitkZWNfYWRkc3RhdHVzKFB5T2JqZWN0ICpjb250ZXh0LCB1aW50MzJfdCBzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKGNvbnRleHQpOworCisgICAgY3R4LT5zdGF0dXMgfD0gc3RhdHVzOworICAgIGlmIChzdGF0dXMgJiAoY3R4LT50cmFwc3xNUERfTWFsbG9jX2Vycm9yKSkgeworICAgICAgICBQeU9iamVjdCAqZXgsICpzaWdsaXN0OworCisgICAgICAgIGlmIChzdGF0dXMgJiBNUERfTWFsbG9jX2Vycm9yKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworICAgICAgICBleCA9IGZsYWdzX2FzX2V4Y2VwdGlvbihjdHgtPnRyYXBzJnN0YXR1cyk7CisgICAgICAgIGlmIChleCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgICAgIHNpZ2xpc3QgPSBmbGFnc19hc19saXN0KGN0eC0+dHJhcHMmc3RhdHVzKTsKKyAgICAgICAgaWYgKHNpZ2xpc3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworICAgICAgICBQeUVycl9TZXRPYmplY3QoZXgsIHNpZ2xpc3QpOworICAgICAgICBQeV9ERUNSRUYoc2lnbGlzdCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsRGljdCBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoZSBTaWduYWxEaWN0IGlzIGEgTXV0YWJsZU1hcHBpbmcgdGhhdCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlCisgICBtcGRfY29udGV4dF90IGZsYWdzLCB3aGljaCByZXNpZGUgaW4gdGhlIGNvbnRleHQgb2JqZWN0LiBXaGVuIGEKKyAgIG5ldyBjb250ZXh0IGlzIGNyZWF0ZWQsIGNvbnRleHQudHJhcHMgYW5kIGNvbnRleHQuZmxhZ3MgYXJlCisgICBpbml0aWFsaXplZCB0byBuZXcgU2lnbmFsRGljdHMuIE9uY2UgYSBTaWduYWxEaWN0IGlzIHRpZWQgdG8KKyAgIGEgY29udGV4dCwgaXQgY2Fubm90IGJlIGRlbGV0ZWQuICovCisKK3N0YXRpYyBpbnQKK3NpZ25hbGRpY3RfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VELCBQeU9iamVjdCAqa3dkcyBVTlVTRUQpCit7CisgICAgU2RGbGFnQWRkcihzZWxmKSA9IE5VTEw7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90CitzaWduYWxkaWN0X2xlbihQeU9iamVjdCAqc2VsZiBVTlVTRUQpCit7CisgICAgcmV0dXJuIFNJR05BTF9NQVBfTEVOOworfQorCitzdGF0aWMgUHlPYmplY3QgKlNpZ25hbFR1cGxlOworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfaXRlcihQeU9iamVjdCAqc2VsZiBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5VHVwbGVfVHlwZS50cF9pdGVyKFNpZ25hbFR1cGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfZ2V0aXRlbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKK3sKKyAgICB1aW50MzJfdCBmbGFnOworCisgICAgZmxhZyA9IGV4Y2VwdGlvbl9hc19mbGFnKGtleSk7CisgICAgaWYgKGZsYWcgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBTZEZsYWdzKHNlbGYpJmZsYWcgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsKK30KKworc3RhdGljIGludAorc2lnbmFsZGljdF9zZXRpdGVtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgdWludDMyX3QgZmxhZzsKKyAgICBpbnQgeDsKKworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoInNpZ25hbCBrZXlzIGNhbm5vdCBiZSBkZWxldGVkIik7CisgICAgfQorCisgICAgZmxhZyA9IGV4Y2VwdGlvbl9hc19mbGFnKGtleSk7CisgICAgaWYgKGZsYWcgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB4ID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICBpZiAoeCA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICh4ID09IDEpIHsKKyAgICAgICAgU2RGbGFncyhzZWxmKSB8PSBmbGFnOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgU2RGbGFncyhzZWxmKSAmPSB+ZmxhZzsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfcmVwcihQeU9iamVjdCAqc2VsZikKK3sKKyAgICBEZWNDb25kTWFwICpjbTsKKyAgICBjb25zdCBjaGFyICpuW1NJR05BTF9NQVBfTEVOXTsgLyogbmFtZSAqLworICAgIGNvbnN0IGNoYXIgKmJbU0lHTkFMX01BUF9MRU5dOyAvKiBib29sICovCisgICAgaW50IGk7CisKKyAgICBhc3NlcnQoU0lHTkFMX01BUF9MRU4gPT0gOSk7CisKKyAgICBmb3IgKGNtPXNpZ25hbF9tYXAsIGk9MDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKywgaSsrKSB7CisgICAgICAgIG5baV0gPSBjbS0+ZnFuYW1lOworICAgICAgICBiW2ldID0gU2RGbGFncyhzZWxmKSZjbS0+ZmxhZyA/ICJUcnVlIiA6ICJGYWxzZSI7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIns8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCAiCisgICAgICAgICAiPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgIgorICAgICAgICAgIjxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXN9IiwKKyAgICAgICAgICAgIG5bMF0sIGJbMF0sIG5bMV0sIGJbMV0sIG5bMl0sIGJbMl0sCisgICAgICAgICAgICBuWzNdLCBiWzNdLCBuWzRdLCBiWzRdLCBuWzVdLCBiWzVdLAorICAgICAgICAgICAgbls2XSwgYls2XSwgbls3XSwgYls3XSwgbls4XSwgYls4XSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxkaWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKKworICAgIGFzc2VydChQeURlY1NpZ25hbERpY3RfQ2hlY2sodikpOworCisgICAgaWYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSB7CisgICAgICAgIGlmIChQeURlY1NpZ25hbERpY3RfQ2hlY2sodykpIHsKKyAgICAgICAgICAgIHJlcyA9IChTZEZsYWdzKHYpPT1TZEZsYWdzKHcpKSBeIChvcD09UHlfTkUpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RGljdF9DaGVjayh3KSkgeworICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgPSBkaWN0X2FzX2ZsYWdzKHcpOworICAgICAgICAgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIERFQ19JTlZBTElEX1NJR05BTFMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogbm9uLWNvbXBhcmFibGU6IFB5X05vdEltcGxlbWVudGVkICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXMgPSAoU2RGbGFncyh2KT09ZmxhZ3MpIF4gKG9wPT1QeV9ORSkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9JTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9jb3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgcmV0dXJuIGZsYWdzX2FzX2RpY3QoU2RGbGFncyhzZWxmKSk7Cit9CisKKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgc2lnbmFsZGljdF9hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKXNpZ25hbGRpY3RfbGVuLCAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KKyAgICAoYmluYXJ5ZnVuYylzaWduYWxkaWN0X2dldGl0ZW0sICAgLyogbXBfc3Vic2NyaXB0ICovCisgICAgKG9iam9iamFyZ3Byb2Mpc2lnbmFsZGljdF9zZXRpdGVtIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiBzaWduYWxkaWN0X21ldGhvZHNbXSA9IHsKKyAgICB7ICJjb3B5IiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbGRpY3RfY29weSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUgPQoreworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKQorICAgICJkZWNpbWFsLlNpZ25hbERpY3RNaXhpbiIsICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlEZWNTaWduYWxEaWN0T2JqZWN0KSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIChnZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAoc2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpIHNpZ25hbGRpY3RfcmVwciwgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmc2lnbmFsZGljdF9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkLCAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAocmVwcmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgKFB5QnVmZmVyUHJvY3MgKikgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEV8CisgICAgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgc2lnbmFsZGljdF9yaWNoY29tcGFyZSwgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIChnZXRpdGVyZnVuYylzaWduYWxkaWN0X2l0ZXIsICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHNpZ25hbGRpY3RfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKXNpZ25hbGRpY3RfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0IE9iamVjdCwgUGFydCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBEZWNfQ09OVEVYVF9HRVRfU1NJWkUobWVtKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2NvbnRleHRfZ2V0IyNtZW0oUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKSAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChtcGRfZ2V0IyNtZW0oQ1RYKHNlbGYpKSk7IFwKK30KKworI2RlZmluZSBEZWNfQ09OVEVYVF9HRVRfVUxPTkcobWVtKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY29udGV4dF9nZXQjI21lbShQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG1wZF9nZXQjI21lbShDVFgoc2VsZikpKTsgXAorfQorCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUocHJlYykKK0RlY19DT05URVhUX0dFVF9TU0laRShlbWF4KQorRGVjX0NPTlRFWFRfR0VUX1NTSVpFKGVtaW4pCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUocm91bmQpCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUoY2xhbXApCisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitEZWNfQ09OVEVYVF9HRVRfVUxPTkcodHJhcHMpCitEZWNfQ09OVEVYVF9HRVRfVUxPTkcoc3RhdHVzKQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGNhcGl0YWxzKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKEN0eENhcHMoc2VsZikpOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0YWxsY3IoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobXBkX2dldGNyKENUWChzZWxmKSkpOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGV0aW55KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobXBkX2V0aW55KENUWChzZWxmKSkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRldG9wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobXBkX2V0b3AoQ1RYKHNlbGYpKSk7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0cHJlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHByZWMoY3R4LCB4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciBwcmVjIGlzIFsxLCBNQVhfUFJFQ10iKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRlbWluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0ZW1pbihjdHgsIHgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIEVtaW4gaXMgW01JTl9FTUlOLCAwXSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGVtYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRlbWF4KGN0eCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgRW1heCBpcyBbMCwgTUFYX0VNQVhdIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBDT05GSUdfMzIKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X3Vuc2FmZV9zZXRwcmVjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKHNlbGYpOworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoeCA8IDEgfHwgeCA+IDEwNzAwMDAwMDBMKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9wdHIoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIHVuc2FmZSBwcmVjIGlzIFsxLCAxMDcwMDAwMDAwXSIpOworICAgIH0KKworICAgIGN0eC0+cHJlYyA9IHg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X3Vuc2FmZV9zZXRlbWluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKHNlbGYpOworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoeCA8IC0xMDcwMDAwMDAwTCB8fCB4ID4gMCkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfcHRyKAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciB1bnNhZmUgZW1pbiBpcyBbLTEwNzAwMDAwMDAsIDBdIik7CisgICAgfQorCisgICAgY3R4LT5lbWluID0geDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfdW5zYWZlX3NldGVtYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoc2VsZik7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh4IDwgMCB8fCB4ID4gMTA3MDAwMDAwMEwpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX3B0cigKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgdW5zYWZlIGVtYXggaXMgWzAsIDEwNzAwMDAwMDBdIik7CisgICAgfQorCisgICAgY3R4LT5lbWF4ID0geDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHJvdW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBCT1VORFNfQ0hFQ0soeCwgSU5UX01JTiwgSU5UX01BWCk7CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHJvdW5kKGN0eCwgKGludCl4KSkgeworICAgICAgICByZXR1cm4gdHlwZV9lcnJvcl9pbnQoaW52YWxpZF9yb3VuZGluZ19lcnIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGNhcGl0YWxzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHggIT0gMCAmJiB4ICE9IDEpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgKKyAgICAgICAgICAgICJ2YWxpZCB2YWx1ZXMgZm9yIGNhcGl0YWxzIGFyZSAwIG9yIDEiKTsKKyAgICB9CisgICAgQ3R4Q2FwcyhzZWxmKSA9IChpbnQpeDsKKworICAgIHJldHVybiAwOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIGludAorY29udGV4dF9zZXR0cmFwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBmbGFncyA9IGxvbmdfYXNfZmxhZ3ModmFsdWUpOworICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0dHJhcHMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHRyYXBzIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorY29udGV4dF9zZXR0cmFwc19saXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgZmxhZ3MgPSBsaXN0X2FzX2ZsYWdzKHZhbHVlKTsKKyAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHRyYXBzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXR0cmFwc19saXN0Iik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0dHJhcHNfZGljdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGlmIChQeURlY1NpZ25hbERpY3RfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIGZsYWdzID0gU2RGbGFncyh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmbGFncyA9IGRpY3RfYXNfZmxhZ3ModmFsdWUpOworICAgICAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHRyYXBzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXR0cmFwc19kaWN0Iik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgaW50Citjb250ZXh0X3NldHN0YXR1cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBmbGFncyA9IGxvbmdfYXNfZmxhZ3ModmFsdWUpOworICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0c3RhdHVzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXRzdGF0dXMiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHN0YXR1c19saXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgZmxhZ3MgPSBsaXN0X2FzX2ZsYWdzKHZhbHVlKTsKKyAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHN0YXR1cyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0c3RhdHVzX2xpc3QiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRzdGF0dXNfZGljdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGlmIChQeURlY1NpZ25hbERpY3RfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIGZsYWdzID0gU2RGbGFncyh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmbGFncyA9IGRpY3RfYXNfZmxhZ3ModmFsdWUpOworICAgICAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHN0YXR1cyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0c3RhdHVzX2RpY3QiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRjbGFtcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgQk9VTkRTX0NIRUNLKHgsIElOVF9NSU4sIElOVF9NQVgpOworCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRjbGFtcChjdHgsIChpbnQpeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgidmFsaWQgdmFsdWVzIGZvciBjbGFtcCBhcmUgMCBvciAxIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgaW50Citjb250ZXh0X3NldGFsbGNyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBCT1VORFNfQ0hFQ0soeCwgSU5UX01JTiwgSU5UX01BWCk7CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldGNyKGN0eCwgKGludCl4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KCJ2YWxpZCB2YWx1ZXMgZm9yIF9hbGxjciBhcmUgMCBvciAxIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJ0cmFwcyIpID09IDApIHsKKyAgICAgICAgICAgIHJldHZhbCA9ICgoUHlEZWNDb250ZXh0T2JqZWN0ICopc2VsZiktPnRyYXBzOworICAgICAgICAgICAgUHlfSU5DUkVGKHJldHZhbCk7CisgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICB9CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiZmxhZ3MiKSA9PSAwKSB7CisgICAgICAgICAgICByZXR2YWwgPSAoKFB5RGVjQ29udGV4dE9iamVjdCAqKXNlbGYpLT5mbGFnczsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0QXR0cihzZWxmLCBuYW1lKTsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICJjb250ZXh0IGF0dHJpYnV0ZXMgY2Fubm90IGJlIGRlbGV0ZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJ0cmFwcyIpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0X3NldHRyYXBzX2RpY3Qoc2VsZiwgdmFsdWUpOworICAgICAgICB9CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiZmxhZ3MiKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dF9zZXRzdGF0dXNfZGljdChzZWxmLCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY1NldEF0dHIoc2VsZiwgbmFtZSwgdmFsdWUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9jbGVhcl90cmFwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBDVFgoc2VsZiktPnRyYXBzID0gMDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfY2xlYXJfZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgQ1RYKHNlbGYpLT5zdGF0dXMgPSAwOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjZGVmaW5lIERFQ19ERkxUX0VNQVggOTk5OTk5CisjZGVmaW5lIERFQ19ERkxUX0VNSU4gLTk5OTk5OQorCitzdGF0aWMgbXBkX2NvbnRleHRfdCBkZmx0X2N0eCA9IHsKKyAgMjgsIERFQ19ERkxUX0VNQVgsIERFQ19ERkxUX0VNSU4sCisgIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9ufE1QRF9EaXZpc2lvbl9ieV96ZXJvfE1QRF9PdmVyZmxvdywKKyAgMCwgMCwgTVBEX1JPVU5EX0hBTEZfRVZFTiwgMCwgMQorfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MgVU5VU0VELCBQeU9iamVjdCAqa3dkcyBVTlVTRUQpCit7CisgICAgUHlEZWNDb250ZXh0T2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisKKyAgICBpZiAodHlwZSA9PSAmUHlEZWNDb250ZXh0X1R5cGUpIHsKKyAgICAgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhQeURlY0NvbnRleHRPYmplY3QsICZQeURlY0NvbnRleHRfVHlwZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzZWxmID0gKFB5RGVjQ29udGV4dE9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIH0KKworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZi0+dHJhcHMgPSBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKVB5RGVjU2lnbmFsRGljdF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoc2VsZi0+dHJhcHMgPT0gTlVMTCkgeworICAgICAgICBzZWxmLT5mbGFncyA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmZsYWdzID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKilQeURlY1NpZ25hbERpY3RfVHlwZSwgTlVMTCk7CisgICAgaWYgKHNlbGYtPmZsYWdzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisKKyAgICBpZiAoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKSB7CisgICAgICAgICpjdHggPSAqQ1RYKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAqY3R4ID0gZGZsdF9jdHg7CisgICAgfQorCisgICAgU2RGbGFnQWRkcihzZWxmLT50cmFwcykgPSAmY3R4LT50cmFwczsKKyAgICBTZEZsYWdBZGRyKHNlbGYtPmZsYWdzKSA9ICZjdHgtPnN0YXR1czsKKworICAgIEN0eENhcHMoc2VsZikgPSAxOworI2lmbmRlZiBXSVRIT1VUX1RIUkVBRFMKKyAgICBzZWxmLT50c3RhdGUgPSBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKK30KKworc3RhdGljIHZvaWQKK2NvbnRleHRfZGVhbGxvYyhQeURlY0NvbnRleHRPYmplY3QgKnNlbGYpCit7CisjaWZuZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIGlmIChzZWxmID09IGNhY2hlZF9jb250ZXh0KSB7CisgICAgICAgIGNhY2hlZF9jb250ZXh0ID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKyAgICBQeV9YREVDUkVGKHNlbGYtPnRyYXBzKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPmZsYWdzKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOworfQorCitzdGF0aWMgaW50CitnZXRyb3VuZChQeU9iamVjdCAqdikKK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIGxvbmcgeDsKKyAgICBpbnQgaTsKKworICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBCT1VORFNfQ0hFQ0soeCwgMCwgSU5UX01BWCk7CisgICAgICAgIHJldHVybiAoaW50KXg7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTVBEX1JPVU5EX0dVQVJEOyBpKyspIHsKKyAgICAgICAgICAgIHMgPSBtcGRfcm91bmRfc3RyaW5nW2ldOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHYsIHMpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0eXBlX2Vycm9yX2ludCgiaW52YWxpZCByb3VuZGluZyBtb2RlIik7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICJwcmVjIiwgInJvdW5kaW5nIiwgIkVtaW4iLCAiRW1heCIsICJjYXBpdGFscyIsICJjbGFtcCIsCisgICAgICAiZmxhZ3MiLCAidHJhcHMiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqcm91bmRpbmcgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0cmFwcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0YXR1cyA9IE5VTEw7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4LCB0OworICAgIGludCBjYXBpdGFscyA9IDE7CisgICAgaW50IHJldDsKKworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKyAgICBjdHggPSBDVFgoc2VsZik7CisKKyAgICB0ID0gKmN0eDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKKyAgICAgICAgICAgIGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAifG5Pbm5paU9PIiwga3dsaXN0LAorICAgICAgICAgICAgJnQucHJlYywgJnJvdW5kaW5nLCAmdC5lbWluLCAmdC5lbWF4LCAmY2FwaXRhbHMsICZ0LmNsYW1wLAorICAgICAgICAgICAgJnN0YXR1cywgJnRyYXBzCisgICAgICAgICApKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHJvdW5kaW5nICE9IE5VTEwpIHsKKyAgICAgICAgdC5yb3VuZCA9IGdldHJvdW5kKHJvdW5kaW5nKTsKKyAgICAgICAgaWYgKHQucm91bmQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1wZF9xc2V0cHJlYyhjdHgsIHQucHJlYykgfHwKKyAgICAgICAgIW1wZF9xc2V0ZW1pbihjdHgsIHQuZW1pbikgfHwKKyAgICAgICAgIW1wZF9xc2V0ZW1heChjdHgsIHQuZW1heCkgfHwKKyAgICAgICAgIW1wZF9xc2V0Y2xhbXAoY3R4LCB0LmNsYW1wKSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KCJpbnZhbGlkIGNvbnRleHQiKTsKKyAgICB9CisgICAgaWYgKCFtcGRfcXNldHJvdW5kKGN0eCwgdC5yb3VuZCkgfHwKKyAgICAgICAgIW1wZF9xc2V0dHJhcHMoY3R4LCB0LnRyYXBzKSB8fAorICAgICAgICAhbXBkX3FzZXRzdGF0dXMoY3R4LCB0LnN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIHR5cGVfZXJyb3JfaW50KCJpbnZhbGlkIGNvbnRleHQiKTsKKyAgICB9CisKKyAgICBpZiAoY2FwaXRhbHMgIT0gMCAmJiBjYXBpdGFscyAhPSAxKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoImludmFsaWQgY29udGV4dCIpOworICAgIH0KKyAgICBDdHhDYXBzKHNlbGYpID0gY2FwaXRhbHM7CisKKyAgICBpZiAodHJhcHMgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlMaXN0X0NoZWNrKHRyYXBzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXR0cmFwc19saXN0KHNlbGYsIHRyYXBzKTsKKyAgICAgICAgfQorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgICAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHRyYXBzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXR0cmFwcyhzZWxmLCB0cmFwcywgTlVMTCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0dHJhcHNfZGljdChzZWxmLCB0cmFwcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0YXR1cyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUxpc3RfQ2hlY2soc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXRzdGF0dXNfbGlzdChzZWxmLCBzdGF0dXMpOworICAgICAgICB9CisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICAgICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXRzdGF0dXMoc2VsZiwgc3RhdHVzLCBOVUxMKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXRzdGF0dXNfZGljdChzZWxmLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X3JlcHIoUHlEZWNDb250ZXh0T2JqZWN0ICpzZWxmKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBjaGFyIGZsYWdzW01QRF9NQVhfU0lHTkFMX0xJU1RdOworICAgIGNoYXIgdHJhcHNbTVBEX01BWF9TSUdOQUxfTElTVF07CisgICAgaW50IG4sIG1lbTsKKworICAgIGFzc2VydChQeURlY0NvbnRleHRfQ2hlY2soc2VsZikpOworICAgIGN0eCA9IENUWChzZWxmKTsKKworICAgIG1lbSA9IE1QRF9NQVhfU0lHTkFMX0xJU1Q7CisgICAgbiA9IG1wZF9sc25wcmludF9zaWduYWxzKGZsYWdzLCBtZW0sIGN0eC0+c3RhdHVzLCBkZWNfc2lnbmFsX3N0cmluZyk7CisgICAgaWYgKG4gPCAwIHx8IG4gPj0gbWVtKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX1BUUigiY29udGV4dF9yZXByIik7CisgICAgfQorCisgICAgbiA9IG1wZF9sc25wcmludF9zaWduYWxzKHRyYXBzLCBtZW0sIGN0eC0+dHJhcHMsIGRlY19zaWduYWxfc3RyaW5nKTsKKyAgICBpZiAobiA8IDAgfHwgbiA+PSBtZW0pIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfUFRSKCJjb250ZXh0X3JlcHIiKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICJDb250ZXh0KHByZWM9JXpkLCByb3VuZGluZz0lcywgRW1pbj0lemQsIEVtYXg9JXpkLCAiCisgICAgICAgICAgICAgICAgImNhcGl0YWxzPSVkLCBjbGFtcD0lZCwgZmxhZ3M9JXMsIHRyYXBzPSVzKSIsCisgICAgICAgICBjdHgtPnByZWMsIG1wZF9yb3VuZF9zdHJpbmdbY3R4LT5yb3VuZF0sIGN0eC0+ZW1pbiwgY3R4LT5lbWF4LAorICAgICAgICAgc2VsZi0+Y2FwaXRhbHMsIGN0eC0+Y2xhbXAsIGZsYWdzLCB0cmFwcyk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2Jhc2ljX2NvbnRleHQoUHlPYmplY3QgKnYpCit7CisgICAgbXBkX2NvbnRleHRfdCBjdHggPSBkZmx0X2N0eDsKKworICAgIGN0eC5wcmVjID0gOTsKKyAgICBjdHgudHJhcHMgfD0gKE1QRF9VbmRlcmZsb3d8TVBEX0NsYW1wZWQpOworICAgIGN0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX1VQOworCisgICAgKkNUWCh2KSA9IGN0eDsKKyAgICBDdHhDYXBzKHYpID0gMTsKK30KKworc3RhdGljIHZvaWQKK2luaXRfZXh0ZW5kZWRfY29udGV4dChQeU9iamVjdCAqdikKK3sKKyAgICBtcGRfY29udGV4dF90IGN0eCA9IGRmbHRfY3R4OworCisgICAgY3R4LnByZWMgPSA5OworICAgIGN0eC50cmFwcyA9IDA7CisKKyAgICAqQ1RYKHYpID0gY3R4OworICAgIEN0eENhcHModikgPSAxOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorLyogRmFjdG9yeSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgSUVFRSBpbnRlcmNoYW5nZSBmb3JtYXQgY29udGV4dHMgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitpZWVlX2NvbnRleHQoUHlPYmplY3QgKmR1bW15IFVOVVNFRCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgbXBkX3NzaXplX3QgYml0czsKKyAgICBtcGRfY29udGV4dF90IGN0eDsKKworICAgIGJpdHMgPSBQeUxvbmdfQXNTc2l6ZV90KHYpOworICAgIGlmIChiaXRzID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChiaXRzIDw9IDAgfHwgYml0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKG1wZF9pZWVlX2NvbnRleHQoJmN0eCwgKGludCliaXRzKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBjb250ZXh0ID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgICpDVFgoY29udGV4dCkgPSBjdHg7CisKKyAgICByZXR1cm4gY29udGV4dDsKKworZXJyb3I6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIsIHdpdGggYSBtYXhpbXVtIG9mICVkIiwKKyAgICAgICAgTVBEX0lFRUVfQ09OVEVYVF9NQVhfQklUUyk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9jb3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICBjb3B5ID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpOworICAgIGlmIChjb3B5ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgKkNUWChjb3B5KSA9ICpDVFgoc2VsZik7CisgICAgQ1RYKGNvcHkpLT5uZXd0cmFwID0gMDsKKyAgICBDdHhDYXBzKGNvcHkpID0gQ3R4Q2FwcyhzZWxmKTsKKworICAgIHJldHVybiBjb3B5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqZmxhZ3M7CisgICAgUHlPYmplY3QgKnRyYXBzOworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworCisgICAgY3R4ID0gQ1RYKHNlbGYpOworCisgICAgZmxhZ3MgPSBzaWduYWxzX2FzX2xpc3QoY3R4LT5zdGF0dXMpOworICAgIGlmIChmbGFncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB0cmFwcyA9IHNpZ25hbHNfYXNfbGlzdChjdHgtPnRyYXBzKTsKKyAgICBpZiAodHJhcHMgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZmxhZ3MpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBQeV9CdWlsZFZhbHVlKAorICAgICAgICAgICAgIk8obnNubmlpT08pIiwKKyAgICAgICAgICAgIFB5X1RZUEUoc2VsZiksCisgICAgICAgICAgICBjdHgtPnByZWMsIG1wZF9yb3VuZF9zdHJpbmdbY3R4LT5yb3VuZF0sIGN0eC0+ZW1pbiwgY3R4LT5lbWF4LAorICAgICAgICAgICAgQ3R4Q2FwcyhzZWxmKSwgY3R4LT5jbGFtcCwgZmxhZ3MsIHRyYXBzCisgICAgKTsKKworICAgIFB5X0RFQ1JFRihmbGFncyk7CisgICAgUHlfREVDUkVGKHRyYXBzKTsKKyAgICByZXR1cm4gcmV0OworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBjb250ZXh0X2dldHNldHMgW10gPQoreworICB7ICJwcmVjIiwgKGdldHRlciljb250ZXh0X2dldHByZWMsIChzZXR0ZXIpY29udGV4dF9zZXRwcmVjLCBOVUxMLCBOVUxMfSwKKyAgeyAiRW1heCIsIChnZXR0ZXIpY29udGV4dF9nZXRlbWF4LCAoc2V0dGVyKWNvbnRleHRfc2V0ZW1heCwgTlVMTCwgTlVMTH0sCisgIHsgIkVtaW4iLCAoZ2V0dGVyKWNvbnRleHRfZ2V0ZW1pbiwgKHNldHRlciljb250ZXh0X3NldGVtaW4sIE5VTEwsIE5VTEx9LAorICB7ICJyb3VuZGluZyIsIChnZXR0ZXIpY29udGV4dF9nZXRyb3VuZCwgKHNldHRlciljb250ZXh0X3NldHJvdW5kLCBOVUxMLCBOVUxMfSwKKyAgeyAiY2FwaXRhbHMiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0Y2FwaXRhbHMsIChzZXR0ZXIpY29udGV4dF9zZXRjYXBpdGFscywgTlVMTCwgTlVMTH0sCisgIHsgImNsYW1wIiwgKGdldHRlciljb250ZXh0X2dldGNsYW1wLCAoc2V0dGVyKWNvbnRleHRfc2V0Y2xhbXAsIE5VTEwsIE5VTEx9LAorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgeyAiX2FsbGNyIiwgKGdldHRlciljb250ZXh0X2dldGFsbGNyLCAoc2V0dGVyKWNvbnRleHRfc2V0YWxsY3IsIE5VTEwsIE5VTEx9LAorICB7ICJfdHJhcHMiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0dHJhcHMsIChzZXR0ZXIpY29udGV4dF9zZXR0cmFwcywgTlVMTCwgTlVMTH0sCisgIHsgIl9mbGFncyIsIChnZXR0ZXIpY29udGV4dF9nZXRzdGF0dXMsIChzZXR0ZXIpY29udGV4dF9zZXRzdGF0dXMsIE5VTEwsIE5VTEx9LAorI2VuZGlmCisgIHtOVUxMfQorfTsKKworCisjZGVmaW5lIENPTlRFWFRfQ0hFQ0sob2JqKSBcCisgICAgaWYgKCFQeURlY0NvbnRleHRfQ2hlY2sob2JqKSkgeyAgICAgICAgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAgIFwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgY29udGV4dCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDT05URVhUX0NIRUNLX1ZBKG9iaikgXAorICAgIGlmICghUHlEZWNDb250ZXh0X0NoZWNrKG9iaikpIHsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICAgICAgICAgICBcCisgICAgICAgICAgICAib3B0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnRleHQiKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgIEdsb2JhbCwgdGhyZWFkIGxvY2FsIGFuZCB0ZW1wb3JhcnkgY29udGV4dHMgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgV0lUSE9VVF9USFJFQURTCisvKiBSZXR1cm4gYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQuIFdoZW4gY29tcGlsZWQKKyAqIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBpcyBhbHdheXMgdGhlIG1vZHVsZSBjb250ZXh0LiAqLworc3RhdGljIGludCBtb2R1bGVfY29udGV4dF9zZXQgPSAwOworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnJlbnRfY29udGV4dCh2b2lkKQoreworICAgIC8qIEluIGRlY2ltYWwucHksIHRoZSBtb2R1bGUgY29udGV4dCBpcyBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemVkCisgICAgICogZnJvbSB0aGUgRGVmYXVsdENvbnRleHQgd2hlbiBpdCBpcyBmaXJzdCBhY2Nlc3NlZC4gVGhpcworICAgICAqIGNvbXBsaWNhdGVzIHRoZSBjb2RlIGFuZCBoYXMgYSBzcGVlZCBwZW5hbHR5IG9mIDEtMiUuICovCisgICAgaWYgKG1vZHVsZV9jb250ZXh0X3NldCkgeworICAgICAgICByZXR1cm4gbW9kdWxlX2NvbnRleHQ7CisgICAgfQorCisgICAgKkNUWChtb2R1bGVfY29udGV4dCkgPSAqQ1RYKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgQ1RYKG1vZHVsZV9jb250ZXh0KS0+c3RhdHVzID0gMDsKKyAgICBDVFgobW9kdWxlX2NvbnRleHQpLT5uZXd0cmFwID0gMDsKKyAgICBDdHhDYXBzKG1vZHVsZV9jb250ZXh0KSA9IEN0eENhcHMoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKTsKKworICAgIG1vZHVsZV9jb250ZXh0X3NldCA9IDE7CisgICAgcmV0dXJuIG1vZHVsZV9jb250ZXh0OworfQorCisvKiBjdHhvYmogOj0gYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KKyNkZWZpbmUgQ1VSUkVOVF9DT05URVhUKGN0eG9iaikgXAorICAgIGN0eG9iaiA9IGN1cnJlbnRfY29udGV4dCgpCisKKy8qIGN0eCA6PSBwb2ludGVyIHRvIHRoZSBtcGRfY29udGV4dF90IHN0cnVjdCBvZiB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVF9BRERSKGN0eCkgXAorICAgIGN0eCA9IENUWChjdXJyZW50X2NvbnRleHQoKSkKKworLyogUmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0ICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfR2V0Q3VycmVudENvbnRleHQoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisKKyAgICBQeV9JTkNSRUYoY29udGV4dCk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKy8qIFNldCB0aGUgbW9kdWxlIGNvbnRleHQgdG8gYSBuZXcgY29udGV4dCwgZGVjcmVtZW50IG9sZCByZWZlcmVuY2UgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19TZXRDdXJyZW50Q29udGV4dChQeU9iamVjdCAqc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIENPTlRFWFRfQ0hFQ0sodik7CisKKyAgICAvKiBJZiB0aGUgbmV3IGNvbnRleHQgaXMgb25lIG9mIHRoZSB0ZW1wbGF0ZXMsIG1ha2UgYSBjb3B5LgorICAgICAqIFRoaXMgaXMgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgZGVjaW1hbC5weS4gKi8KKyAgICBpZiAodiA9PSBkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUgfHwKKyAgICAgICAgdiA9PSBiYXNpY19jb250ZXh0X3RlbXBsYXRlIHx8CisgICAgICAgIHYgPT0gZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSkgeworICAgICAgICB2ID0gY29udGV4dF9jb3B5KHYsIE5VTEwpOworICAgICAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBDVFgodiktPnN0YXR1cyA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgfQorCisgICAgUHlfWERFQ1JFRihtb2R1bGVfY29udGV4dCk7CisgICAgbW9kdWxlX2NvbnRleHQgPSB2OworICAgIG1vZHVsZV9jb250ZXh0X3NldCA9IDE7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZWxzZQorLyoKKyAqIFRocmVhZCBsb2NhbCBzdG9yYWdlIGN1cnJlbnRseSBoYXMgYSBzcGVlZCBwZW5hbHR5IG9mIGFib3V0IDQlLgorICogQWxsIGZ1bmN0aW9ucyB0aGF0IG1hcCBQeXRob24ncyBhcml0aG1ldGljIG9wZXJhdG9ycyB0byBtcGRlY2ltYWwKKyAqIGZ1bmN0aW9ucyBoYXZlIHRvIGxvb2sgdXAgdGhlIGN1cnJlbnQgY29udGV4dCBmb3IgZWFjaCBhbmQgZXZlcnkKKyAqIG9wZXJhdGlvbi4KKyAqLworCisvKiBHZXQgdGhlIGNvbnRleHQgZnJvbSB0aGUgdGhyZWFkIHN0YXRlIGRpY3Rpb25hcnkuICovCitzdGF0aWMgUHlPYmplY3QgKgorY3VycmVudF9jb250ZXh0X2Zyb21fZGljdCh2b2lkKQoreworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIFB5T2JqZWN0ICp0bF9jb250ZXh0OworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGRpY3QgPSBQeVRocmVhZFN0YXRlX0dldERpY3QoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGdldCB0aHJlYWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdGxfY29udGV4dCA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKGRpY3QsIHRsc19jb250ZXh0X2tleSk7CisgICAgaWYgKHRsX2NvbnRleHQgIT0gTlVMTCkgeworICAgICAgICAvKiBXZSBhbHJlYWR5IGhhdmUgYSB0aHJlYWQgbG9jYWwgY29udGV4dC4gKi8KKyAgICAgICAgQ09OVEVYVF9DSEVDSyh0bF9jb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNldCB1cCBhIG5ldyB0aHJlYWQgbG9jYWwgY29udGV4dC4gKi8KKyAgICAgICAgdGxfY29udGV4dCA9IGNvbnRleHRfY29weShkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUsIE5VTEwpOworICAgICAgICBpZiAodGxfY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBDVFgodGxfY29udGV4dCktPnN0YXR1cyA9IDA7CisKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpY3QsIHRsc19jb250ZXh0X2tleSwgdGxfY29udGV4dCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodGxfY29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodGxfY29udGV4dCk7CisgICAgfQorCisgICAgLyogQ2FjaGUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLCBhc3N1bWluZyB0aGF0IGl0CisgICAgICogd2lsbCBiZSBhY2Nlc3NlZCBzZXZlcmFsIHRpbWVzIGJlZm9yZSBhIHRocmVhZCBzd2l0Y2guICovCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBpZiAodHN0YXRlKSB7CisgICAgICAgIGNhY2hlZF9jb250ZXh0ID0gKFB5RGVjQ29udGV4dE9iamVjdCAqKXRsX2NvbnRleHQ7CisgICAgICAgIGNhY2hlZF9jb250ZXh0LT50c3RhdGUgPSB0c3RhdGU7CisgICAgfQorCisgICAgLyogQm9ycm93ZWQgcmVmZXJlbmNlIHdpdGggcmVmY291bnQ9PTEgKi8KKyAgICByZXR1cm4gdGxfY29udGV4dDsKK30KKworLyogUmV0dXJuIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aHJlYWQgbG9jYWwgY29udGV4dC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdXJyZW50X2NvbnRleHQodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGlmIChjYWNoZWRfY29udGV4dCAmJiBjYWNoZWRfY29udGV4dC0+dHN0YXRlID09IHRzdGF0ZSkgeworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopY2FjaGVkX2NvbnRleHQ7CisgICAgfQorCisgICAgcmV0dXJuIGN1cnJlbnRfY29udGV4dF9mcm9tX2RpY3QoKTsKK30KKworLyogY3R4b2JqIDo9IGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVChjdHhvYmopIFwKKyAgICBjdHhvYmogPSBjdXJyZW50X2NvbnRleHQoKTsgXAorICAgIGlmIChjdHhvYmogPT0gTlVMTCkgeyAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgIFwKKyAgICB9CisKKy8qIGN0eCA6PSBwb2ludGVyIHRvIHRoZSBtcGRfY29udGV4dF90IHN0cnVjdCBvZiB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVF9BRERSKGN0eCkgeyBcCisgICAgUHlPYmplY3QgKl9jX3RfeF9vX2JfaiA9IGN1cnJlbnRfY29udGV4dCgpOyBcCisgICAgaWYgKF9jX3RfeF9vX2JfaiA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3R4ID0gQ1RYKF9jX3RfeF9vX2Jfaik7ICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dCAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0dldEN1cnJlbnRDb250ZXh0KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgY29udGV4dCA9IGN1cnJlbnRfY29udGV4dCgpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGNvbnRleHQpOworICAgIHJldHVybiBjb250ZXh0OworfQorCisvKiBTZXQgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0IHRvIGEgbmV3IGNvbnRleHQsIGRlY3JlbWVudCBvbGQgcmVmZXJlbmNlICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfU2V0Q3VycmVudENvbnRleHQoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqZGljdDsKKworICAgIENPTlRFWFRfQ0hFQ0sodik7CisKKyAgICBkaWN0ID0gUHlUaHJlYWRTdGF0ZV9HZXREaWN0KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBnZXQgdGhyZWFkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIElmIHRoZSBuZXcgY29udGV4dCBpcyBvbmUgb2YgdGhlIHRlbXBsYXRlcywgbWFrZSBhIGNvcHkuCisgICAgICogVGhpcyBpcyB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBkZWNpbWFsLnB5LiAqLworICAgIGlmICh2ID09IGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSB8fAorICAgICAgICB2ID09IGJhc2ljX2NvbnRleHRfdGVtcGxhdGUgfHwKKyAgICAgICAgdiA9PSBleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKSB7CisgICAgICAgIHYgPSBjb250ZXh0X2NvcHkodiwgTlVMTCk7CisgICAgICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIENUWCh2KS0+c3RhdHVzID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICB9CisKKyAgICBjYWNoZWRfY29udGV4dCA9IE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpY3QsIHRsc19jb250ZXh0X2tleSwgdikgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfREVDUkVGKHYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKy8qIENvbnRleHQgbWFuYWdlciBvYmplY3QgZm9yIHRoZSAnd2l0aCcgc3RhdGVtZW50LiBUaGUgbWFuYWdlcgorICogb3ducyBvbmUgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgKG91dGVyKSBjb250ZXh0IGFuZCBvbmUKKyAqIHRvIHRoZSBsb2NhbCAoaW5uZXIpIGNvbnRleHQuICovCitzdGF0aWMgUHlPYmplY3QgKgorY3R4bWFuYWdlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlIFVOVVNFRCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCAqc2VsZjsKKyAgICBQeU9iamVjdCAqbG9jYWw7CisgICAgUHlPYmplY3QgKmdsb2JhbDsKKworICAgIENVUlJFTlRfQ09OVEVYVChnbG9iYWwpOworICAgIGxvY2FsID0gZ2xvYmFsOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmbG9jYWwpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGxvY2FsKTsKKworICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICZQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZi0+bG9jYWwgPSBjb250ZXh0X2NvcHkobG9jYWwsIE5VTEwpOworICAgIGlmIChzZWxmLT5sb2NhbCA9PSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmdsb2JhbCA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmdsb2JhbCA9IGdsb2JhbDsKKyAgICBQeV9JTkNSRUYoc2VsZi0+Z2xvYmFsKTsKKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworfQorCitzdGF0aWMgdm9pZAorY3R4bWFuYWdlcl9kZWFsbG9jKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGYpCit7CisgICAgUHlfWERFQ1JFRihzZWxmLT5sb2NhbCk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5nbG9iYWwpOworICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eG1hbmFnZXJfc2V0X2xvY2FsKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmV0OworCisgICAgcmV0ID0gUHlEZWNfU2V0Q3VycmVudENvbnRleHQoTlVMTCwgc2VsZi0+bG9jYWwpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJldCk7CisKKyAgICBQeV9JTkNSRUYoc2VsZi0+bG9jYWwpOworICAgIHJldHVybiBzZWxmLT5sb2NhbDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eG1hbmFnZXJfcmVzdG9yZV9nbG9iYWwoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXQ7CisKKyAgICByZXQgPSBQeURlY19TZXRDdXJyZW50Q29udGV4dChOVUxMLCBzZWxmLT5nbG9iYWwpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJldCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgY3R4bWFuYWdlcl9tZXRob2RzW10gPSB7CisgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKWN0eG1hbmFnZXJfc2V0X2xvY2FsLCBNRVRIX05PQVJHUywgTlVMTH0sCisgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pY3R4bWFuYWdlcl9yZXN0b3JlX2dsb2JhbCwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZSA9Cit7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImRlY2ltYWwuQ29udGV4dE1hbmFnZXIiLCAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCksICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpIGN0eG1hbmFnZXJfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAoZ2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIChzZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIChQeUJ1ZmZlclByb2NzICopIDAsICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjdHhtYW5hZ2VyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgRGVjaW1hbCBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfTmV3KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBQeURlY09iamVjdCAqZGVjOworCisgICAgaWYgKHR5cGUgPT0gJlB5RGVjX1R5cGUpIHsKKyAgICAgICAgZGVjID0gUHlPYmplY3RfTmV3KFB5RGVjT2JqZWN0LCAmUHlEZWNfVHlwZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkZWMgPSAoUHlEZWNPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICB9CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRlYy0+aGFzaCA9IC0xOworCisgICAgTVBEKGRlYyktPmZsYWdzID0gTVBEX1NUQVRJQ3xNUERfU1RBVElDX0RBVEE7CisgICAgTVBEKGRlYyktPmV4cCA9IDA7CisgICAgTVBEKGRlYyktPmRpZ2l0cyA9IDA7CisgICAgTVBEKGRlYyktPmxlbiA9IDA7CisgICAgTVBEKGRlYyktPmFsbG9jID0gX1B5X0RFQ19NSU5BTExPQzsKKyAgICBNUEQoZGVjKS0+ZGF0YSA9IGRlYy0+ZGF0YTsKKworICAgIHJldHVybiAoUHlPYmplY3QgKilkZWM7Cit9CisjZGVmaW5lIGRlY19hbGxvYygpIFB5RGVjVHlwZV9OZXcoJlB5RGVjX1R5cGUpCisKK3N0YXRpYyB2b2lkCitkZWNfZGVhbGxvYyhQeU9iamVjdCAqZGVjKQoreworICAgIG1wZF9kZWwoTVBEKGRlYykpOworICAgIFB5X1RZUEUoZGVjKS0+dHBfZnJlZShkZWMpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25zIHRvIERlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK2lzX3NwYWNlKGVudW0gUHlVbmljb2RlX0tpbmQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBwb3MpCit7CisgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CisgICAgcmV0dXJuIFB5X1VOSUNPREVfSVNTUEFDRShjaCk7Cit9CisKKy8qIFJldHVybiB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24gb2YgYSBudW1lcmljIFVuaWNvZGUgc3RyaW5nLiBUaGUgbnVtZXJpYworICAgc3RyaW5nIG1heSBjb250YWluIGFzY2lpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFsxLCAxMjddLCBhbnkgVW5pY29kZQorICAgc3BhY2UgYW5kIGFueSB1bmljb2RlIGRpZ2l0LiBJZiBzdHJpcF93cyBpcyB0cnVlLCBsZWFkaW5nIGFuZCB0cmFpbGluZworICAgd2hpdGVzcGFjZSBpcyBzdHJpcHBlZC4KKworICAgUmV0dXJuIE5VTEwgaWYgbWFsbG9jIGZhaWxzIGFuZCBhbiBlbXB0eSBzdHJpbmcgaWYgaW52YWxpZCBjaGFyYWN0ZXJzCisgICBhcmUgZm91bmQuICovCitzdGF0aWMgY2hhciAqCitudW1lcmljX2FzX2FzY2lpKGNvbnN0IFB5T2JqZWN0ICp1LCBpbnQgc3RyaXBfd3MpCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCBjaDsKKyAgICBjaGFyICpyZXMsICpjcDsKKyAgICBQeV9zc2l6ZV90IGosIGxlbjsKKyAgICBpbnQgZDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodSkpOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICBsZW4gPSAgUHlVbmljb2RlX0dFVF9MRU5HVEgodSk7CisKKyAgICBjcCA9IHJlcyA9IFB5TWVtX01hbGxvYyhsZW4rMSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGogPSAwOworICAgIGlmIChzdHJpcF93cykgeworICAgICAgICB3aGlsZSAobGVuID4gMCAmJiBpc19zcGFjZShraW5kLCBkYXRhLCBsZW4tMSkpIHsKKyAgICAgICAgICAgIGxlbi0tOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChqIDwgbGVuICYmIGlzX3NwYWNlKGtpbmQsIGRhdGEsIGopKSB7CisgICAgICAgICAgICBqKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKDsgaiA8IGxlbjsgaisrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPD0gMTI3KSB7CisgICAgICAgICAgICAqY3ArKyA9IGNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpIHsKKyAgICAgICAgICAgICpjcCsrID0gJyAnOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKKyAgICAgICAgaWYgKGQgPCAwKSB7CisgICAgICAgICAgICAvKiBlbXB0eSBzdHJpbmcgdHJpZ2dlcnMgQ29udmVyc2lvblN5bnRheCAqLworICAgICAgICAgICAgKnJlcyA9ICdcMCc7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgICAgICpjcCsrID0gJzAnICsgZDsKKyAgICB9CisgICAgKmNwID0gJ1wwJzsKKyAgICByZXR1cm4gcmVzOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBDIHN0cmluZy4gVXNlIHRoZSBjb250ZXh0CisgICBkdXJpbmcgY29udmVyc2lvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUNTdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xc2V0X3N0cmluZyhNUEQoZGVjKSwgcywgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgQyBzdHJpbmcuIEF0dGVtcHQgZXhhY3QKKyAgIGNvbnZlcnNpb24uIElmIHRoZSBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseSwgc2V0CisgICBJbnZhbGlkT3BlcmF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tQ1N0cmluZ0V4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworCisgICAgbXBkX3FzZXRfc3RyaW5nKE1QRChkZWMpLCBzLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICAvKiB3ZSB3YW50IGV4YWN0IHJlc3VsdHMgKi8KKyAgICAgICAgbXBkX3NldGVycm9yKE1QRChkZWMpLCBNUERfSW52YWxpZF9vcGVyYXRpb24sICZzdGF0dXMpOworICAgIH0KKyAgICBzdGF0dXMgJj0gTVBEX0Vycm9yczsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBQeVVuaWNvZGVPYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Vbmljb2RlKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnUsCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBjaGFyICpzOworCisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMCk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmcodHlwZSwgcywgY29udGV4dCk7CisgICAgUHlNZW1fRnJlZShzKTsKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBQeVVuaWNvZGVPYmplY3QuIEF0dGVtcHQgZXhhY3QKKyAqIGNvbnZlcnNpb24uIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBleGFjdCwgZmFpbCB3aXRoIEludmFsaWRPcGVyYXRpb24uCisgKiBBbGxvdyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIHRoZSBpbnB1dCBvcGVyYW5kLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tVW5pY29kZUV4YWN0V1MoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBQeU9iamVjdCAqdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBjaGFyICpzOworCisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmdFeGFjdCh0eXBlLCBzLCBjb250ZXh0KTsKKyAgICBQeU1lbV9GcmVlKHMpOworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFNldCBQeURlY09iamVjdCBmcm9tIHRyaXBsZSB3aXRob3V0IGFueSBlcnJvciBjaGVja2luZy4gKi8KK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX2RlY19zZXR0cmlwbGUoUHlPYmplY3QgKmRlYywgdWludDhfdCBzaWduLCB1aW50MzJfdCB2LCBtcGRfc3NpemVfdCBleHApCit7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBNUEQoZGVjKS0+ZGF0YVswXSA9IHY7CisgICAgTVBEKGRlYyktPmxlbiA9IDE7CisjZWxzZQorICAgIHVpbnQzMl90IHEsIHI7CisgICAgcSA9IHYgLyBNUERfUkFESVg7CisgICAgciA9IHYgLSBxICogTVBEX1JBRElYOworICAgIE1QRChkZWMpLT5kYXRhWzFdID0gcTsKKyAgICBNUEQoZGVjKS0+ZGF0YVswXSA9IHI7CisgICAgTVBEKGRlYyktPmxlbiA9IHEgPyAyIDogMTsKKyNlbmRpZgorICAgIG1wZF9zZXRfZmxhZ3MoTVBEKGRlYyksIHNpZ24pOworICAgIE1QRChkZWMpLT5leHAgPSBleHA7CisgICAgbXBkX3NldGRpZ2l0cyhNUEQoZGVjKSk7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGFuIG1wZF9zc2l6ZV90LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tU3NpemUoUHlUeXBlT2JqZWN0ICp0eXBlLCBtcGRfc3NpemVfdCB2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcXNldF9zc2l6ZShNUEQoZGVjKSwgdiwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IGZyb20gYW4gbXBkX3NzaXplX3QuIENvbnZlcnNpb24gaXMgZXhhY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Tc2l6ZUV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgbXBkX3NzaXplX3QgdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworCisgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisKKyAgICBtcGRfcXNldF9zc2l6ZShNUEQoZGVjKSwgdiwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBkZWM7Cit9CisKKy8qIENvbnZlcnQgZnJvbSBhIFB5TG9uZ09iamVjdC4gVGhlIGNvbnRleHQgaXMgbm90IG1vZGlmaWVkOyBmbGFncyBzZXQKKyAgIGR1cmluZyBjb252ZXJzaW9uIGFyZSBhY2N1bXVsYXRlZCBpbiB0aGUgc3RhdHVzIHBhcmFtZXRlci4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfZnJvbV9sb25nKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIFB5TG9uZ09iamVjdCAqbCA9IChQeUxvbmdPYmplY3QgKil2OworICAgIFB5X3NzaXplX3Qgb2Jfc2l6ZTsKKyAgICBzaXplX3QgbGVuOworICAgIHVpbnQ4X3Qgc2lnbjsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9iX3NpemUgPSBQeV9TSVpFKGwpOworICAgIGlmIChvYl9zaXplID09IDApIHsKKyAgICAgICAgX2RlY19zZXR0cmlwbGUoZGVjLCBNUERfUE9TLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIGRlYzsKKyAgICB9CisKKyAgICBpZiAob2Jfc2l6ZSA8IDApIHsKKyAgICAgICAgbGVuID0gLW9iX3NpemU7CisgICAgICAgIHNpZ24gPSBNUERfTkVHOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbGVuID0gb2Jfc2l6ZTsKKyAgICAgICAgc2lnbiA9IE1QRF9QT1M7CisgICAgfQorCisgICAgaWYgKGxlbiA9PSAxKSB7CisgICAgICAgIF9kZWNfc2V0dHJpcGxlKGRlYywgc2lnbiwgKmwtPm9iX2RpZ2l0LCAwKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShNUEQoZGVjKSwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm4gZGVjOworICAgIH0KKworI2lmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDMwCisgICAgbXBkX3FpbXBvcnRfdTMyKE1QRChkZWMpLCBsLT5vYl9kaWdpdCwgbGVuLCBzaWduLCBQeUxvbmdfQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgY3R4LCBzdGF0dXMpOworI2VsaWYgUFlMT05HX0JJVFNfSU5fRElHSVQgPT0gMTUKKyAgICBtcGRfcWltcG9ydF91MTYoTVBEKGRlYyksIGwtPm9iX2RpZ2l0LCBsZW4sIHNpZ24sIFB5TG9uZ19CQVNFLAorICAgICAgICAgICAgICAgICAgICBjdHgsIHN0YXR1cyk7CisjZWxzZQorICAjZXJyb3IgIlBZTE9OR19CSVRTX0lOX0RJR0lUIHNob3VsZCBiZSAxNSBvciAzMCIKKyNlbmRpZgorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IGZyb20gYSBQeUxvbmdPYmplY3QuIFVzZSB0aGUgY29udGV4dCBmb3IKKyAgIGNvbnZlcnNpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Mb25nKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnB5bG9uZywKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBkZWMgPSBkZWNfZnJvbV9sb25nKHR5cGUsIHB5bG9uZywgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IGZyb20gYSBQeUxvbmdPYmplY3QuIFVzZSBhIG1heGltdW0gY29udGV4dAorICAgZm9yIGNvbnZlcnNpb24uIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBleGFjdCwgc2V0IEludmFsaWRPcGVyYXRpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Mb25nRXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBQeU9iamVjdCAqcHlsb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgZGVjID0gZGVjX2Zyb21fbG9uZyh0eXBlLCBweWxvbmcsICZtYXhjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICAvKiB3ZSB3YW50IGV4YWN0IHJlc3VsdHMgKi8KKyAgICAgICAgbXBkX3NldGVycm9yKE1QRChkZWMpLCBNUERfSW52YWxpZF9vcGVyYXRpb24sICZzdGF0dXMpOworICAgIH0KKyAgICBzdGF0dXMgJj0gTVBEX0Vycm9yczsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIFB5RmxvYXRPYmplY3QuCisgICBDb252ZXJzaW9uIGlzIGV4YWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tRmxvYXRFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWMsICp0bXA7CisgICAgUHlPYmplY3QgKm4sICpkLCAqbl9kOworICAgIG1wZF9zc2l6ZV90IGs7CisgICAgZG91YmxlIHg7CisgICAgaW50IHNpZ247CisgICAgbXBkX3QgKmQxLCAqZDI7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworCisgICAgYXNzZXJ0KFB5VHlwZV9Jc1N1YnR5cGUodHlwZSwgJlB5RGVjX1R5cGUpKTsKKworICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBpZiAoIVB5RmxvYXRfQ2hlY2sodikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGludCBvZiBmbG9hdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNpZ24gPSAoY29weXNpZ24oMS4wLCB4KSA9PSAxLjApID8gMCA6IDE7CisKKyAgICBpZiAoUHlfSVNfTkFOKHgpIHx8IFB5X0lTX0lORklOSVRZKHgpKSB7CisgICAgICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5X0lTX05BTih4KSkgeworICAgICAgICAgICAgLyogZGVjaW1hbC5weSBjYWxscyByZXByKGZsb2F0KCstbmFuKSksCisgICAgICAgICAgICAgKiB3aGljaCBhbHdheXMgZ2l2ZXMgYSBwb3NpdGl2ZSByZXN1bHQuICovCisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChNUEQoZGVjKSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChNUEQoZGVjKSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlYzsKKyAgICB9CisKKyAgICAvKiBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZmxvYXQgKi8KKyAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHYsICJfX2Fic19fIiwgTlVMTCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGZsb2F0IGFzIGludGVnZXIgcmF0aW86IG51bWVyYXRvci9kZW5vbWluYXRvciAqLworICAgIG5fZCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodG1wLCAiYXNfaW50ZWdlcl9yYXRpbyIsIE5VTEwpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChuX2QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbiA9IFB5VHVwbGVfR0VUX0lURU0obl9kLCAwKTsKKyAgICBkID0gUHlUdXBsZV9HRVRfSVRFTShuX2QsIDEpOworCisgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChkLCAiYml0X2xlbmd0aCIsIE5VTEwpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobl9kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGsgPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKGsgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobl9kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGstLTsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KHR5cGUsIG4sIGNvbnRleHQpOworICAgIFB5X0RFQ1JFRihuX2QpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkMSA9IG1wZF9xbmV3KCk7CisgICAgaWYgKGQxID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBkMiA9IG1wZF9xbmV3KCk7CisgICAgaWYgKGQyID09IE5VTEwpIHsKKyAgICAgICAgbXBkX2RlbChkMSk7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKyAgICBtcGRfcXNldF91aW50KGQxLCA1LCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBtcGRfcXNldF9zc2l6ZShkMiwgaywgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgbXBkX3Fwb3coZDEsIGQxLCBkMiwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBtcGRfZGVsKGQxKTsKKyAgICAgICAgbXBkX2RlbChkMik7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiByZXN1bHQgPSBuICogNSoqayAqLworICAgIG1wZF9xbXVsKE1QRChkZWMpLCBNUEQoZGVjKSwgZDEsICZtYXhjdHgsICZzdGF0dXMpOworICAgIG1wZF9kZWwoZDEpOworICAgIG1wZF9kZWwoZDIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAvKiByZXN1bHQgPSArLSBuICogNSoqayAqIDEwKiotayAqLworICAgIG1wZF9zZXRfc2lnbihNUEQoZGVjKSwgc2lnbik7CisgICAgTVBEKGRlYyktPmV4cCA9IC1rOworCisgICAgcmV0dXJuIGRlYzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tRmxvYXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKE1QRChkZWMpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBkZWM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzZXF1ZW5jZV9hc190dXBsZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKmV4LCBjb25zdCBjaGFyICptZXNnKQoreworICAgIGlmIChQeVR1cGxlX0NoZWNrKHYpKSB7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorICAgIGlmIChQeUxpc3RfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5TGlzdF9Bc1R1cGxlKHYpOworICAgIH0KKworICAgIFB5RXJyX1NldFN0cmluZyhleCwgbWVzZyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIFJldHVybiBhIG5ldyBDIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIERlY2ltYWxUdXBsZS4gKi8KK3N0YXRpYyBjaGFyICoKK2RlY3R1cGxlX2FzX3N0cihQeU9iamVjdCAqZGVjdHVwbGUpCit7CisgICAgUHlPYmplY3QgKmRpZ2l0cyA9IE5VTEwsICp0bXA7CisgICAgY2hhciAqZGVjc3RyaW5nID0gTlVMTDsKKyAgICBjaGFyIHNpZ25fc3BlY2lhbFs2XTsKKyAgICBjaGFyICpjcDsKKyAgICBsb25nIHNpZ24sIGw7CisgICAgbXBkX3NzaXplX3QgZXhwID0gMDsKKyAgICBQeV9zc2l6ZV90IGksIG1lbSwgdHNpemU7CisgICAgaW50IGlzX2luZmluaXRlID0gMDsKKyAgICBpbnQgbjsKKworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGRlY3R1cGxlKSk7CisKKyAgICBpZiAoUHlUdXBsZV9TaXplKGRlY3R1cGxlKSAhPSAzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBsZW5ndGggMyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIHNpZ24gKi8KKyAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKGRlY3R1cGxlLCAwKTsKKyAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInNpZ24gbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggdGhlIHZhbHVlIDAgb3IgMSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzaWduID0gUHlMb25nX0FzTG9uZyh0bXApOworICAgIGlmIChzaWduID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKHNpZ24gIT0gMCAmJiBzaWduICE9IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic2lnbiBtdXN0IGJlIGFuIGludGVnZXIgd2l0aCB0aGUgdmFsdWUgMCBvciAxIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNpZ25fc3BlY2lhbFswXSA9IHNpZ24gPyAnLScgOiAnKyc7CisgICAgc2lnbl9zcGVjaWFsWzFdID0gJ1wwJzsKKworICAgIC8qIGV4cG9uZW50IG9yIGVuY29kaW5nIGZvciBhIHNwZWNpYWwgbnVtYmVyICovCisgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShkZWN0dXBsZSwgMik7CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0bXApKSB7CisgICAgICAgIC8qIHNwZWNpYWwgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIkYiKSA9PSAwKSB7CisgICAgICAgICAgICBzdHJjYXQoc2lnbl9zcGVjaWFsLCAiSW5mIik7CisgICAgICAgICAgICBpc19pbmZpbml0ZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcodG1wLCAibiIpID09IDApIHsKKyAgICAgICAgICAgIHN0cmNhdChzaWduX3NwZWNpYWwsICJOYU4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyh0bXAsICJOIikgPT0gMCkgeworICAgICAgICAgICAgc3RyY2F0KHNpZ25fc3BlY2lhbCwgInNOYU4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgaW4gdGhlIHRoaXJkIHBvc2l0aW9uICIKKyAgICAgICAgICAgICAgICAibXVzdCBiZSAnRicsICduJyBvciAnTiciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGV4cG9uZW50ICovCisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJleHBvbmVudCBtdXN0IGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZXhwID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgICAgICBpZiAoZXhwID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBjb2VmZmljaWVudCAqLworICAgIGRpZ2l0cyA9IHNlcXVlbmNlX2FzX3R1cGxlKFB5VHVwbGVfR0VUX0lURU0oZGVjdHVwbGUsIDEpLCBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2VmZmljaWVudCBtdXN0IGJlIGEgdHVwbGUgb2YgZGlnaXRzIik7CisgICAgaWYgKGRpZ2l0cyA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgdHNpemUgPSBQeVR1cGxlX1NpemUoZGlnaXRzKTsKKyAgICAvKiBbc2lnbl1bY29lZmZkaWdpdHMrMV1bRV1bLV1bZXhwZGlnaXRzKzFdWydcMCddICovCisgICAgbWVtID0gMSArIHRzaXplICsgMyArIE1QRF9FWFBESUdJVFMgKyAyOworICAgIGNwID0gZGVjc3RyaW5nID0gUHlNZW1fTWFsbG9jKG1lbSk7CisgICAgaWYgKGRlY3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgbiA9IHNucHJpbnRmKGNwLCBtZW0sICIlcyIsIHNpZ25fc3BlY2lhbCk7CisgICAgaWYgKG4gPCAwIHx8IG4gPj0gbWVtKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gZGVjX3NlcXVlbmNlX2FzX3N0ciIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBjcCArPSBuOworCisgICAgaWYgKHRzaXplID09IDAgJiYgc2lnbl9zcGVjaWFsWzFdID09ICdcMCcpIHsKKyAgICAgICAgLyogZW1wdHkgdHVwbGU6IHplcm8gY29lZmZpY2llbnQsIGV4Y2VwdCBmb3Igc3BlY2lhbCBudW1iZXJzICovCisgICAgICAgICpjcCsrID0gJzAnOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgdHNpemU7IGkrKykgeworICAgICAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKGRpZ2l0cywgaSk7CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjb2VmZmljaWVudCBtdXN0IGJlIGEgdHVwbGUgb2YgZGlnaXRzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGwgPSBQeUxvbmdfQXNMb25nKHRtcCk7CisgICAgICAgIGlmIChsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGwgPCAwIHx8IGwgPiA5KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY29lZmZpY2llbnQgbXVzdCBiZSBhIHR1cGxlIG9mIGRpZ2l0cyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNfaW5maW5pdGUpIHsKKyAgICAgICAgICAgIC8qIGFjY2VwdCBidXQgaWdub3JlIGFueSB3ZWxsLWZvcm1lZCBjb2VmZmljaWVudCBmb3IgY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgd2l0aCBkZWNpbWFsLnB5ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAqY3ArKyA9IChjaGFyKWwgKyAnMCc7CisgICAgfQorICAgICpjcCA9ICdcMCc7CisKKyAgICBpZiAoc2lnbl9zcGVjaWFsWzFdID09ICdcMCcpIHsKKyAgICAgICAgLyogbm90IGEgc3BlY2lhbCBudW1iZXIgKi8KKyAgICAgICAgKmNwKysgPSAnRSc7CisgICAgICAgIG4gPSBzbnByaW50ZihjcCwgTVBEX0VYUERJR0lUUysyLCAiJSIgUFJJX21wZF9zc2l6ZV90LCBleHApOworICAgICAgICBpZiAobiA8IDAgfHwgbiA+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+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYTRhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgTUVNT1JZX0gKKyNkZWZpbmUgTUVNT1JZX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworaW50IG1wZF9zd2l0Y2hfdG9fZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9zd2l0Y2hfdG9fZHluX3plcm8obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3Qgc2l6ZSwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3JlYWxsb2NfZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworCisKKyNlbmRpZgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmNzYyOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKQEAgLTAsMCArMSw4MTQ5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxtYXRoLmg+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+PSA0ICovCisKKy8qCisgKiBBZGQgdGhlIHByb2R1Y3Qgb2YgYSBhbmQgYiB0byBjLgorICogYyBtdXN0IGJlIF9rbXVsX3Jlc3VsdHNpemUobGEsIGxiKSBpbiBzaXplLgorICogdyBpcyB1c2VkIGFzIGEgd29yayBhcnJheSBhbmQgbXVzdCBiZSBfa211bF93b3Jrc2l6ZShhLCBsaW0pIGluIHNpemUuCisgKiBSb21hbiBFLiBNYWVkZXIsIFN0b3JhZ2UgQWxsb2NhdGlvbiBmb3IgdGhlIEthcmF0c3ViYSBJbnRlZ2VyIE11bHRpcGxpY2F0aW9uCisgKiBBbGdvcml0aG0uIEluICJEZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHN5bWJvbGljIGNvbXB1dGF0aW9uIHN5c3RlbXMiLAorICogU3ByaW5nZXIsIDE5OTMsIElTQk4gMzU0MDU3MjM1WCwgOTc4MzU0MDU3MjM1MC4KKyAqLworc3RhdGljIHZvaWQKK19rYXJhdHN1YmFfcmVjKG1wZF91aW50X3QgKmMsIGNvbnN0IG1wZF91aW50X3QgKmEsIGNvbnN0IG1wZF91aW50X3QgKmIsCisgICAgICAgICAgICAgICBtcGRfdWludF90ICp3LCBtcGRfc2l6ZV90IGxhLCBtcGRfc2l6ZV90IGxiKQoreworICAgIG1wZF9zaXplX3QgbSwgbHQ7CisKKyAgICBhc3NlcnQobGEgPj0gbGIgJiYgbGIgPiAwKTsKKyAgICBhc3NlcnQobGEgPD0gTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSB8fCB3ICE9IE5VTEwpOworCisgICAgaWYgKGxhIDw9IE1QRF9LQVJBVFNVQkFfQkFTRUNBU0UpIHsKKyAgICAgICAgX21wZF9iYXNlbXVsKGMsIGEsIGIsIGxhLCBsYik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtID0gKGxhKzEpLzI7ICAvKiBjZWlsKGxhLzIpICovCisKKyAgICAvKiBsYiA8PSBtIDwgbGEgKi8KKyAgICBpZiAobGIgPD0gbSkgeworCisgICAgICAgIC8qIGxiIGNhbiBub3cgYmUgbGFyZ2VyIHRoYW4gbGEtbSAqLworICAgICAgICBpZiAobGIgPiBsYS1tKSB7CisgICAgICAgICAgICBsdCA9IGxiICsgbGIgKyAxOyAgICAgICAvKiBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBfa2FyYXRzdWJhX3JlYyh3LCBiLCBhK20sIHcrbHQsIGxiLCBsYS1tKTsgLyogYiphaCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbHQgPSAobGEtbSkgKyAobGEtbSkgKyAxOyAgLyogc3BhY2UgbmVlZGVkIGZvciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIG1wZF91aW50X3plcm8odywgbHQpOyAgICAgIC8qIGNsZWFyIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgX2thcmF0c3ViYV9yZWModywgYSttLCBiLCB3K2x0LCBsYS1tLCBsYik7IC8qIGFoKmIgKi8KKyAgICAgICAgfQorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjK20sIHcsIChsYS1tKStsYik7ICAgICAgLyogYWRkIGFoKmIqQioqbSAqLworCisgICAgICAgIGx0ID0gbSArIG0gKyAxOyAgICAgICAgIC8qIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBhcnJheSAqLworICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgX2thcmF0c3ViYV9yZWModywgYSwgYiwgdytsdCwgbSwgbGIpOyAgLyogYWwqYiAqLworICAgICAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK2xiKTsgICAgLyogYWRkIGFsKmIgKi8KKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogbGEgPj0gbGIgPiBtICovCisgICAgbWVtY3B5KHcsIGEsIG0gKiBzaXplb2YgKncpOworICAgIHdbbV0gPSAwOworICAgIF9tcGRfYmFzZWFkZHRvKHcsIGErbSwgbGEtbSk7CisKKyAgICBtZW1jcHkodysobSsxKSwgYiwgbSAqIHNpemVvZiAqdyk7CisgICAgd1ttKzErbV0gPSAwOworICAgIF9tcGRfYmFzZWFkZHRvKHcrKG0rMSksIGIrbSwgbGItbSk7CisKKyAgICBfa2FyYXRzdWJhX3JlYyhjK20sIHcsIHcrKG0rMSksIHcrMioobSsxKSwgbSsxLCBtKzEpOworCisgICAgbHQgPSAobGEtbSkgKyAobGEtbSkgKyAxOworICAgIG1wZF91aW50X3plcm8odywgbHQpOworCisgICAgX2thcmF0c3ViYV9yZWModywgYSttLCBiK20sIHcrbHQsIGxhLW0sIGxiLW0pOworCisgICAgX21wZF9iYXNlYWRkdG8oYysyKm0sIHcsIChsYS1tKSArIChsYi1tKSk7CisgICAgX21wZF9iYXNlc3ViZnJvbShjK20sIHcsIChsYS1tKSArIChsYi1tKSk7CisKKyAgICBsdCA9IG0gKyBtICsgMTsKKyAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsKKworICAgIF9rYXJhdHN1YmFfcmVjKHcsIGEsIGIsIHcrbHQsIG0sIG0pOworICAgIF9tcGRfYmFzZWFkZHRvKGMsIHcsIG0rbSk7CisgICAgX21wZF9iYXNlc3ViZnJvbShjK20sIHcsIG0rbSk7CisKKyAgICByZXR1cm47Cit9CisKKy8qCisgKiBNdWx0aXBseSB1IGFuZCB2LCB1c2luZyBLYXJhdHN1YmEgbXVsdGlwbGljYXRpb24uIFJldHVybnMgYSBwb2ludGVyCisgKiB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlIChtYWxsb2MgZXJyb3IpLgorICogQ29uZGl0aW9uczogdWxlbiA+PSB2bGVuLCB1bGVuID49IDQKKyAqLworbXBkX3VpbnRfdCAqCitfbXBkX2ttdWwoY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICBtcGRfc2l6ZV90IHVsZW4sIG1wZF9zaXplX3QgdmxlbiwKKyAgICAgICAgICBtcGRfc2l6ZV90ICpyc2l6ZSkKK3sKKyAgICBtcGRfdWludF90ICpyZXN1bHQgPSBOVUxMLCAqdyA9IE5VTEw7CisgICAgbXBkX3NpemVfdCBtOworCisgICAgYXNzZXJ0KHVsZW4gPj0gNCk7CisgICAgYXNzZXJ0KHVsZW4gPj0gdmxlbik7CisKKyAgICAqcnNpemUgPSBfa211bF9yZXN1bHRzaXplKHVsZW4sIHZsZW4pOworICAgIGlmICgocmVzdWx0ID0gbXBkX2NhbGxvYygqcnNpemUsIHNpemVvZiAqcmVzdWx0KSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtID0gX2ttdWxfd29ya3NpemUodWxlbiwgTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSk7CisgICAgaWYgKG0gJiYgKCh3ID0gbXBkX2NhbGxvYyhtLCBzaXplb2YgKncpKSA9PSBOVUxMKSkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBfa2FyYXRzdWJhX3JlYyhyZXN1bHQsIHUsIHYsIHcsIHVsZW4sIHZsZW4pOworCisKKyAgICBpZiAodykgbXBkX2ZyZWUodyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKgorICogRGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGxlbmd0aCBmb3IgdGhlIG51bWJlciB0aGVvcmV0aWMgdHJhbnNmb3JtLiBWYWxpZAorICogdHJhbnNmb3JtIGxlbmd0aHMgYXJlIDIqKm4gb3IgMyoyKipuLCB3aGVyZSAyKipuIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4uCisgKiBUaGUgZnVuY3Rpb24gZmluZHMgdGhlIHNob3J0ZXN0IGxlbmd0aCBtIHN1Y2ggdGhhdCByc2l6ZSA8PSBtLgorICovCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK19tcGRfZ2V0X3RyYW5zZm9ybV9sZW4obXBkX3NpemVfdCByc2l6ZSkKK3sKKyAgICBtcGRfc2l6ZV90IGxvZzJyc2l6ZTsKKyAgICBtcGRfc2l6ZV90IHgsIHN0ZXA7CisKKyAgICBhc3NlcnQocnNpemUgPj0gNCk7CisgICAgbG9nMnJzaXplID0gbXBkX2Jzcihyc2l6ZSk7CisKKyAgICBpZiAocnNpemUgPD0gMTAyNCkgeworICAgICAgICAvKiAyKipuIGlzIGZhc3RlciBpbiB0aGlzIHJhbmdlLiAqLworICAgICAgICB4ID0gKChtcGRfc2l6ZV90KTEpPDxsb2cycnNpemU7CisgICAgICAgIHJldHVybiAocnNpemUgPT0geCkgPyB4IDogeDw8MTsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gTVBEX01BWFRSQU5TRk9STV8yTikgeworICAgICAgICB4ID0gKChtcGRfc2l6ZV90KTEpPDxsb2cycnNpemU7CisgICAgICAgIGlmIChyc2l6ZSA9PSB4KSByZXR1cm4geDsKKyAgICAgICAgc3RlcCA9IHg+PjE7CisgICAgICAgIHggKz0gc3RlcDsKKyAgICAgICAgcmV0dXJuIChyc2l6ZSA8PSB4KSA/IHggOiB4ICsgc3RlcDsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gTVBEX01BWFRSQU5TRk9STV8yTitNUERfTUFYVFJBTlNGT1JNXzJOLzIpIHsKKyAgICAgICAgcmV0dXJuIE1QRF9NQVhUUkFOU0ZPUk1fMk4rTVBEX01BWFRSQU5TRk9STV8yTi8yOworICAgIH0KKyAgICBlbHNlIGlmIChyc2l6ZSA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pIHsKKyAgICAgICAgcmV0dXJuIDMqTVBEX01BWFRSQU5TRk9STV8yTjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBNUERfU0laRV9NQVg7CisgICAgfQorfQorCisjaWZkZWYgUFBSTworI2lmbmRlZiBfTVNDX1ZFUgorc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydAorX21wZF9nZXRfY29udHJvbDg3KHZvaWQpCit7CisgICAgdW5zaWduZWQgc2hvcnQgY3c7CisKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZuc3RjdyAlMCIgOiAiPW0iIChjdykpOworICAgIHJldHVybiBjdzsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3NldF9jb250cm9sODcodW5zaWduZWQgc2hvcnQgY3cpCit7CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbGRjdyAlMCIgOiA6ICJtIiAoY3cpKTsKK30KKyNlbmRpZgorCit1bnNpZ25lZCBpbnQKK21wZF9zZXRfZmVudih2b2lkKQoreworICAgIHVuc2lnbmVkIGludCBjdzsKKyNpZmRlZiBfTVNDX1ZFUgorICAgIHVuc2lnbmVkIGludCBmbGFncyA9CisgICAgICAgIF9FTV9JTlZBTElEfF9FTV9ERU5PUk1BTHxfRU1fWkVST0RJVklERXxfRU1fT1ZFUkZMT1d8CisgICAgICAgIF9FTV9VTkRFUkZMT1d8X0VNX0lORVhBQ1R8X1JDX0NIT1B8X1BDXzY0OworICAgIHVuc2lnbmVkIGludCBtYXNrID0gX01DV19FTXxfTUNXX1JDfF9NQ1dfUEM7CisgICAgdW5zaWduZWQgaW50IGR1bW15OworCisgICAgX19jb250cm9sODdfMigwLCAwLCAmY3csIE5VTEwpOworICAgIF9fY29udHJvbDg3XzIoZmxhZ3MsIG1hc2ssICZkdW1teSwgTlVMTCk7CisjZWxzZQorICAgIGN3ID0gX21wZF9nZXRfY29udHJvbDg3KCk7CisgICAgX21wZF9zZXRfY29udHJvbDg3KGN3fDB4RjNGKTsKKyNlbmRpZgorICAgIHJldHVybiBjdzsKK30KKwordm9pZAorbXBkX3Jlc3RvcmVfZmVudih1bnNpZ25lZCBpbnQgY3cpCit7CisjaWZkZWYgX01TQ19WRVIKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9IF9NQ1dfRU18X01DV19SQ3xfTUNXX1BDOworICAgIHVuc2lnbmVkIGludCBkdW1teTsKKworICAgIF9fY29udHJvbDg3XzIoY3csIG1hc2ssICZkdW1teSwgTlVMTCk7CisjZWxzZQorICAgIF9tcGRfc2V0X2NvbnRyb2w4NygodW5zaWduZWQgc2hvcnQpY3cpOworI2VuZGlmCit9CisjZW5kaWYgLyogUFBSTyAqLworCisvKgorICogTXVsdGlwbHkgdSBhbmQgdiwgdXNpbmcgdGhlIGZhc3QgbnVtYmVyIHRoZW9yZXRpYyB0cmFuc2Zvcm0uIFJldHVybnMKKyAqIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlIChtYWxsb2MgZXJyb3IpLgorICovCittcGRfdWludF90ICoKK19tcGRfZm50bXVsKGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICBtcGRfc2l6ZV90IHVsZW4sIG1wZF9zaXplX3QgdmxlbiwKKyAgICAgICAgICAgIG1wZF9zaXplX3QgKnJzaXplKQoreworICAgIG1wZF91aW50X3QgKmMxID0gTlVMTCwgKmMyID0gTlVMTCwgKmMzID0gTlVMTCwgKnZ0bXAgPSBOVUxMOworICAgIG1wZF9zaXplX3QgbjsKKworI2lmZGVmIFBQUk8KKyAgICB1bnNpZ25lZCBpbnQgY3c7CisgICAgY3cgPSBtcGRfc2V0X2ZlbnYoKTsKKyNlbmRpZgorCisgICAgKnJzaXplID0gYWRkX3NpemVfdCh1bGVuLCB2bGVuKTsKKyAgICBpZiAoKG4gPSBfbXBkX2dldF90cmFuc2Zvcm1fbGVuKCpyc2l6ZSkpID09IE1QRF9TSVpFX01BWCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKGMxID0gbXBkX2NhbGxvYyhuLCBzaXplb2YgKmMxKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisgICAgaWYgKChjMiA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICpjMikpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIGlmICgoYzMgPSBtcGRfY2FsbG9jKG4sIHNpemVvZiAqYzMpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworICAgIG1lbWNweShjMSwgdSwgdWxlbiAqIChzaXplb2YgKmMxKSk7CisgICAgbWVtY3B5KGMyLCB1LCB1bGVuICogKHNpemVvZiAqYzIpKTsKKyAgICBtZW1jcHkoYzMsIHUsIHVsZW4gKiAoc2l6ZW9mICpjMykpOworCisgICAgaWYgKHUgPT0gdikgeworICAgICAgICBpZiAoIWZudF9hdXRvY29udm9sdXRlKGMxLCBuLCBQMSkgfHwKKyAgICAgICAgICAgICFmbnRfYXV0b2NvbnZvbHV0ZShjMiwgbiwgUDIpIHx8CisgICAgICAgICAgICAhZm50X2F1dG9jb252b2x1dGUoYzMsIG4sIFAzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICgodnRtcCA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICp2dG1wKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkodnRtcCwgdiwgdmxlbiAqIChzaXplb2YgKnZ0bXApKTsKKyAgICAgICAgaWYgKCFmbnRfY29udm9sdXRlKGMxLCB2dG1wLCBuLCBQMSkpIHsKKyAgICAgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkodnRtcCwgdiwgdmxlbiAqIChzaXplb2YgKnZ0bXApKTsKKyAgICAgICAgbXBkX3VpbnRfemVybyh2dG1wK3ZsZW4sIG4tdmxlbik7CisgICAgICAgIGlmICghZm50X2NvbnZvbHV0ZShjMiwgdnRtcCwgbiwgUDIpKSB7CisgICAgICAgICAgICBtcGRfZnJlZSh2dG1wKTsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KHZ0bXAsIHYsIHZsZW4gKiAoc2l6ZW9mICp2dG1wKSk7CisgICAgICAgIG1wZF91aW50X3plcm8odnRtcCt2bGVuLCBuLXZsZW4pOworICAgICAgICBpZiAoIWZudF9jb252b2x1dGUoYzMsIHZ0bXAsIG4sIFAzKSkgeworICAgICAgICAgICAgbXBkX2ZyZWUodnRtcCk7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgIH0KKworICAgIGNydDMoYzEsIGMyLCBjMywgKnJzaXplKTsKKworb3V0OgorI2lmZGVmIFBQUk8KKyAgICBtcGRfcmVzdG9yZV9mZW52KGN3KTsKKyNlbmRpZgorICAgIGlmIChjMikgbXBkX2ZyZWUoYzIpOworICAgIGlmIChjMykgbXBkX2ZyZWUoYzMpOworICAgIHJldHVybiBjMTsKKworbWFsbG9jX2Vycm9yOgorICAgIGlmIChjMSkgbXBkX2ZyZWUoYzEpOworICAgIGMxID0gTlVMTDsKKyAgICBnb3RvIG91dDsKK30KKworCisvKgorICogS2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHdpdGggRk5UL2Jhc2VtdWwgYXMgdGhlIGJhc2UgY2FzZS4KKyAqLworc3RhdGljIGludAorX2thcmF0c3ViYV9yZWNfZm50KG1wZF91aW50X3QgKmMsIGNvbnN0IG1wZF91aW50X3QgKmEsIGNvbnN0IG1wZF91aW50X3QgKmIsCisgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBsYSwgbXBkX3NpemVfdCBsYikKK3sKKyAgICBtcGRfc2l6ZV90IG0sIGx0OworCisgICAgYXNzZXJ0KGxhID49IGxiICYmIGxiID4gMCk7CisgICAgYXNzZXJ0KGxhIDw9IDMqKE1QRF9NQVhUUkFOU0ZPUk1fMk4vMikgfHwgdyAhPSBOVUxMKTsKKworICAgIGlmIChsYSA8PSAzKihNUERfTUFYVFJBTlNGT1JNXzJOLzIpKSB7CisKKyAgICAgICAgaWYgKGxiIDw9IDE5MikgeworICAgICAgICAgICAgX21wZF9iYXNlbXVsKGMsIGIsIGEsIGxiLCBsYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfdWludF90ICpyZXN1bHQ7CisgICAgICAgICAgICBtcGRfc2l6ZV90IGR1bW15OworCisgICAgICAgICAgICBpZiAoKHJlc3VsdCA9IF9tcGRfZm50bXVsKGEsIGIsIGxhLCBsYiwgJmR1bW15KSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KGMsIHJlc3VsdCwgKGxhK2xiKSAqIChzaXplb2YgKnJlc3VsdCkpOworICAgICAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBtID0gKGxhKzEpLzI7ICAvKiBjZWlsKGxhLzIpICovCisKKyAgICAvKiBsYiA8PSBtIDwgbGEgKi8KKyAgICBpZiAobGIgPD0gbSkgeworCisgICAgICAgIC8qIGxiIGNhbiBub3cgYmUgbGFyZ2VyIHRoYW4gbGEtbSAqLworICAgICAgICBpZiAobGIgPiBsYS1tKSB7CisgICAgICAgICAgICBsdCA9IGxiICsgbGIgKyAxOyAgICAgICAvKiBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBiLCBhK20sIHcrbHQsIGxiLCBsYS1tKSkgeyAvKiBiKmFoICovCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsgIC8qIHNwYWNlIG5lZWRlZCBmb3IgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGErbSwgYiwgdytsdCwgbGEtbSwgbGIpKSB7IC8qIGFoKmIgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMrbSwgdywgKGxhLW0pK2xiKTsgLyogYWRkIGFoKmIqQioqbSAqLworCisgICAgICAgIGx0ID0gbSArIG0gKyAxOyAgICAgICAgIC8qIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBhcnJheSAqLworICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQodywgYSwgYiwgdytsdCwgbSwgbGIpKSB7ICAvKiBhbCpiICovCisgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICB9CisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMsIHcsIG0rbGIpOyAgICAgICAvKiBhZGQgYWwqYiAqLworCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGxhID49IGxiID4gbSAqLworICAgIG1lbWNweSh3LCBhLCBtICogc2l6ZW9mICp3KTsKKyAgICB3W21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3LCBhK20sIGxhLW0pOworCisgICAgbWVtY3B5KHcrKG0rMSksIGIsIG0gKiBzaXplb2YgKncpOworICAgIHdbbSsxK21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3KyhtKzEpLCBiK20sIGxiLW0pOworCisgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQoYyttLCB3LCB3KyhtKzEpLCB3KzIqKG0rMSksIG0rMSwgbSsxKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsKKyAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsKKworICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGErbSwgYittLCB3K2x0LCBsYS1tLCBsYi1tKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIF9tcGRfYmFzZWFkZHRvKGMrMiptLCB3LCAobGEtbSkgKyAobGItbSkpOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCAobGEtbSkgKyAobGItbSkpOworCisgICAgbHQgPSBtICsgbSArIDE7CisgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7CisKKyAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBhLCBiLCB3K2x0LCBtLCBtKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKyAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK20pOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCBtK20pOworCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBNdWx0aXBseSB1IGFuZCB2LCB1c2luZyBLYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gd2l0aCB0aGUgRk5UIGFzIHRoZQorICogYmFzZSBjYXNlLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlCisgKiAobWFsbG9jIGVycm9yKS4gQ29uZGl0aW9uczogdWxlbiA+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+CisKKworZW51bSB7Rk9SV0FSRF9DWUNMRSwgQkFDS1dBUkRfQ1lDTEV9OworCisKK3ZvaWQgc3RkX3RyYW5zKG1wZF91aW50X3QgZGVzdFtdLCBtcGRfdWludF90IHNyY1tdLCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7CitpbnQgdHJhbnNwb3NlX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7Cit2b2lkIHRyYW5zcG9zZV8zeHBvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7CisKKworc3RhdGljIGlubGluZSB2b2lkIHBvaW50ZXJzd2FwKG1wZF91aW50X3QgKiphLCBtcGRfdWludF90ICoqYikKK3sKKyAgICBtcGRfdWludF90ICp0bXA7CisKKyAgICB0bXAgPSAqYjsKKyAgICAqYiA9ICphOworICAgICphID0gdG1wOworfQorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90eXBlYXJpdGguaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE0ODEyYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgKQEAgLTAsMCArMSw2NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVFlQRUFSSVRIX0gKKyNkZWZpbmUgVFlQRUFSSVRIX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgIExvdyBsZXZlbCBuYXRpdmUgYXJpdGhtZXRpYyBvbiBiYXNpYyB0eXBlcyAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqKiAgICAgICAgICAgRG91YmxlIHdpZHRoIG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbgorICoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKyNpZiBkZWZpbmVkKEFOU0kpCisjaWYgZGVmaW5lZChIQVZFX1VJTlQxMjhfVCkKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBfX3VpbnQxMjhfdCBobDsKKworICAgIGhsID0gKF9fdWludDEyOF90KWEgKiBiOworCisgICAgKmhpID0gaGwgPj4gNjQ7CisgICAgKmxvID0gKG1wZF91aW50X3QpaGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBfX3VpbnQxMjhfdCBobDsKKworICAgIGhsID0gKChfX3VpbnQxMjhfdCloaTw8NjQpICsgbG87CisgICAgKnEgPSAobXBkX3VpbnRfdCkoaGwgLyBkKTsgLyogcXVvdGllbnQgaXMga25vd24gdG8gZml0ICovCisgICAgKnIgPSAobXBkX3VpbnRfdCkoaGwgLSAoX191aW50MTI4X3QpKCpxKSAqIGQpOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICB1aW50MzJfdCB3WzRdLCBjYXJyeTsKKyAgICB1aW50MzJfdCBhaCwgYWwsIGJoLCBibDsKKyAgICB1aW50NjRfdCBobDsKKworICAgIGFoID0gKHVpbnQzMl90KShhPj4zMik7IGFsID0gKHVpbnQzMl90KWE7CisgICAgYmggPSAodWludDMyX3QpKGI+PjMyKTsgYmwgPSAodWludDMyX3QpYjsKKworICAgIGhsID0gKHVpbnQ2NF90KWFsICogYmw7CisgICAgd1swXSA9ICh1aW50MzJfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MzJfdCkoaGw+PjMyKTsKKworICAgIGhsID0gKHVpbnQ2NF90KWFoICogYmwgKyBjYXJyeTsKKyAgICB3WzFdID0gKHVpbnQzMl90KWhsOworICAgIHdbMl0gPSAodWludDMyX3QpKGhsPj4zMik7CisKKyAgICBobCA9ICh1aW50NjRfdClhbCAqIGJoICsgd1sxXTsKKyAgICB3WzFdID0gKHVpbnQzMl90KWhsOworICAgIGNhcnJ5ID0gKHVpbnQzMl90KShobD4+MzIpOworCisgICAgaGwgPSAoKHVpbnQ2NF90KWFoICogYmggKyB3WzJdKSArIGNhcnJ5OworICAgIHdbMl0gPSAodWludDMyX3QpaGw7CisgICAgd1szXSA9ICh1aW50MzJfdCkoaGw+PjMyKTsKKworICAgICpoaSA9ICgodWludDY0X3Qpd1szXTw8MzIpICsgd1syXTsKKyAgICAqbG8gPSAoKHVpbnQ2NF90KXdbMV08PDMyKSArIHdbMF07Cit9CisKKy8qCisgKiBCeSBIZW5yeSBTLiBXYXJyZW46IGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL0hEY29kZS9kaXZsdS5jLnR4dAorICogaHR0cDovL3d3dy5oYWNrZXJzZGVsaWdodC5vcmcvcGVybWlzc2lvbnMuaHRtOgorICogIllvdSBhcmUgZnJlZSB0byB1c2UsIGNvcHksIGFuZCBkaXN0cmlidXRlIGFueSBvZiB0aGUgY29kZSBvbiB0aGlzIHdlYgorICogIHNpdGUsIHdoZXRoZXIgbW9kaWZpZWQgYnkgeW91IG9yIG5vdC4gWW91IG5lZWQgbm90IGdpdmUgYXR0cmlidXRpb24uIgorICoKKyAqIFNsaWdodGx5IG1vZGlmaWVkLCBjb21tZW50cyBhcmUgbWluZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK25seih1aW50NjRfdCB4KQoreworICAgIGludCBuOworCisgICAgaWYgKHggPT0gMCkgcmV0dXJuKDY0KTsKKworICAgIG4gPSAwOworICAgIGlmICh4IDw9IDB4MDAwMDAwMDBGRkZGRkZGRikge24gPSBuICszMjsgeCA9IHggPDwzMjt9CisgICAgaWYgKHggPD0gMHgwMDAwRkZGRkZGRkZGRkZGKSB7biA9IG4gKzE2OyB4ID0geCA8PDE2O30KKyAgICBpZiAoeCA8PSAweDAwRkZGRkZGRkZGRkZGRkYpIHtuID0gbiArIDg7IHggPSB4IDw8IDg7fQorICAgIGlmICh4IDw9IDB4MEZGRkZGRkZGRkZGRkZGRikge24gPSBuICsgNDsgeCA9IHggPDwgNDt9CisgICAgaWYgKHggPD0gMHgzRkZGRkZGRkZGRkZGRkZGKSB7biA9IG4gKyAyOyB4ID0geCA8PCAyO30KKyAgICBpZiAoeCA8PSAweDdGRkZGRkZGRkZGRkZGRkYpIHtuID0gbiArIDE7fQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB1MSwgbXBkX3VpbnRfdCB1MCwKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgdikKK3sKKyAgICBjb25zdCBtcGRfdWludF90IGIgPSA0Mjk0OTY3Mjk2OworICAgIG1wZF91aW50X3QgdW4xLCB1bjAsCisgICAgICAgICAgICAgICB2bjEsIHZuMCwKKyAgICAgICAgICAgICAgIHExLCBxMCwKKyAgICAgICAgICAgICAgIHVuMzIsIHVuMjEsIHVuMTAsCisgICAgICAgICAgICAgICByaGF0LCB0OworICAgIGludCBzOworCisgICAgYXNzZXJ0KHUxIDwgdik7CisKKyAgICBzID0gbmx6KHYpOworICAgIHYgPSB2IDw8IHM7CisgICAgdm4xID0gdiA+PiAzMjsKKyAgICB2bjAgPSB2ICYgMHhGRkZGRkZGRjsKKworICAgIHQgPSAocyA9PSAwKSA/IDAgOiB1MCA+PiAoNjQgLSBzKTsKKyAgICB1bjMyID0gKHUxIDw8IHMpIHwgdDsKKyAgICB1bjEwID0gdTAgPDwgczsKKworICAgIHVuMSA9IHVuMTAgPj4gMzI7CisgICAgdW4wID0gdW4xMCAmIDB4RkZGRkZGRkY7CisKKyAgICBxMSA9IHVuMzIgLyB2bjE7CisgICAgcmhhdCA9IHVuMzIgLSBxMSp2bjE7CithZ2FpbjE6CisgICAgaWYgKHExID49IGIgfHwgcTEqdm4wID4gYipyaGF0ICsgdW4xKSB7CisgICAgICAgIHExID0gcTEgLSAxOworICAgICAgICByaGF0ID0gcmhhdCArIHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPCBiKSBnb3RvIGFnYWluMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqICBCZWZvcmUgYWdhaW4xIHdlIGhhZDoKKyAgICAgKiAgICAgICgxKSBxMSp2bjEgICArIHJoYXQgICAgICAgICA9IHVuMzIKKyAgICAgKiAgICAgICgyKSBxMSp2bjEqYiArIHJoYXQqYiArIHVuMSA9IHVuMzIqYiArIHVuMQorICAgICAqCisgICAgICogIFRoZSBzdGF0ZW1lbnRzIGluc2lkZSB0aGUgaWYtY2xhdXNlIGRvIG5vdCBjaGFuZ2UgdGhlIHZhbHVlCisgICAgICogIG9mIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiAoMiksIGFuZCB0aGUgbG9vcCBpcyBvbmx5IGV4aXRlZAorICAgICAqICBpZiBxMSp2bjAgPD0gcmhhdCpiICsgdW4xLCBzbzoKKyAgICAgKgorICAgICAqICAgICAgKDMpIHExKnZuMSpiICsgcTEqdm4wIDw9IHVuMzIqYiArIHVuMQorICAgICAqICAgICAgKDQpICAgICAgICAgICAgICBxMSp2IDw9IHVuMzIqYiArIHVuMQorICAgICAqICAgICAgKDUpICAgICAgICAgICAgICAgICAwIDw9IHVuMzIqYiArIHVuMSAtIHExKnYKKyAgICAgKgorICAgICAqICBCeSAoNSkgd2UgYXJlIGNlcnRhaW4gdGhhdCB0aGUgcG9zc2libGUgYWRkLWJhY2sgc3RlcCBmcm9tCisgICAgICogIEtudXRoJ3MgYWxnb3JpdGhtIEQgaXMgbmV2ZXIgcmVxdWlyZWQuCisgICAgICoKKyAgICAgKiAgU2luY2UgdGhlIGZpbmFsIHF1b3RpZW50IGlzIGxlc3MgdGhhbiAyKio2NCwgdGhlIGZvbGxvd2luZworICAgICAqICBtdXN0IGJlIHRydWU6CisgICAgICoKKyAgICAgKiAgICAgICg2KSB1bjMyKmIgKyB1bjEgLSBxMSp2IDw9IFVJTlQ2NF9NQVgKKyAgICAgKgorICAgICAqICBUaGlzIG1lYW5zIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBsaW5lLCB0aGUgaGlnaCB3b3JkcworICAgICAqICBvZiB1bjMyKmIgYW5kIHExKnYgY2FuIGJlIGRpc2NhcmRlZCB3aXRob3V0IGFueSBlZmZlY3QKKyAgICAgKiAgb24gdGhlIHJlc3VsdC4KKyAgICAgKi8KKyAgICB1bjIxID0gdW4zMipiICsgdW4xIC0gcTEqdjsKKworICAgIHEwID0gdW4yMSAvIHZuMTsKKyAgICByaGF0ID0gdW4yMSAtIHEwKnZuMTsKK2FnYWluMjoKKyAgICBpZiAocTAgPj0gYiB8fCBxMCp2bjAgPiBiKnJoYXQgKyB1bjApIHsKKyAgICAgICAgcTAgPSBxMCAtIDE7CisgICAgICAgIHJoYXQgPSByaGF0ICsgdm4xOworICAgICAgICBpZiAocmhhdCA8IGIpIGdvdG8gYWdhaW4yOworICAgIH0KKworICAgICpxID0gcTEqYiArIHEwOworICAgICpyID0gKHVuMjEqYiArIHVuMCAtIHEwKnYpID4+IHM7Cit9CisjZW5kaWYKKworLyogRU5EIEFOU0kgKi8KKyNlbGlmIGRlZmluZWQoQVNNKQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgaCwgbDsKKworICAgIF9fYXNtX18gKCAibXVscSAlM1xuXHQiCisgICAgICAgICAgICAgIDogIj1kIiAoaCksICI9YSIgKGwpCisgICAgICAgICAgICAgIDogIiVhIiAoYSksICJybSIgKGIpCisgICAgICAgICAgICAgIDogImNjIgorICAgICk7CisKKyAgICAqaGkgPSBoOworICAgICpsbyA9IGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBtcGRfdWludF90IHFxLCBycjsKKworICAgIF9fYXNtX18gKCAiZGl2cSAlNFxuXHQiCisgICAgICAgICAgICAgIDogIj1hIiAocXEpLCAiPWQiIChycikKKyAgICAgICAgICAgICAgOiAiYSIgKGxvKSwgImQiIChoaSksICJybSIgKGQpCisgICAgICAgICAgICAgIDogImNjIgorICAgICk7CisKKyAgICAqcSA9IHFxOworICAgICpyID0gcnI7Cit9CisvKiBFTkQgR0NDIEFTTSAqLworI2VsaWYgZGVmaW5lZChNQVNNKQorI2luY2x1ZGUgPGludHJpbi5oPgorI3ByYWdtYSBpbnRyaW5zaWMoX3VtdWwxMjgpCisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICAqbG8gPSBfdW11bDEyOChhLCBiLCBoaSk7Cit9CisKK3ZvaWQgX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKTsKKworLyogRU5EIE1BU00gKF9NU0NfVkVSKSAqLworI2Vsc2UKKyAgI2Vycm9yICJuZWVkIHBsYXRmb3JtIHNwZWNpZmljIDEyOCBiaXQgbXVsdGlwbGljYXRpb24gYW5kIGRpdmlzaW9uIgorI2VuZGlmCisKKyNkZWZpbmUgRElWTU9EKHEsIHIsIHYsIGQpICpxID0gdiAvIGQ7ICpyID0gdiAtICpxICogZAorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdm1vZF9wb3cxMChtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IHYsIG1wZF91aW50X3QgZXhwKQoreworICAgIGFzc2VydChleHAgPD0gMTkpOworCisgICAgaWYgKGV4cCA8PSA5KSB7CisgICAgICAgIGlmIChleHAgPD0gNCkgeworICAgICAgICAgICAgc3dpdGNoIChleHApIHsKKyAgICAgICAgICAgIGNhc2UgMDogKnEgPSB2OyAqciA9IDA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOiBESVZNT0QocSwgciwgdiwgMTBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOiBESVZNT0QocSwgciwgdiwgMTAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzogRElWTU9EKHEsIHIsIHYsIDEwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OiBESVZNT0QocSwgciwgdiwgMTAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChleHApIHsKKyAgICAgICAgICAgIGNhc2UgNTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGV4cCA8PSAxNCkgeworICAgICAgICAgICAgc3dpdGNoIChleHApIHsKKyAgICAgICAgICAgIGNhc2UgMTA6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMjogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTM6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChleHApIHsKKyAgICAgICAgICAgIGNhc2UgMTU6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTc6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvKiBFTkQgQ09ORklHXzY0ICovCisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikKKyNpZiBkZWZpbmVkKEFOU0kpCisjaWYgIWRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91dWludF90IGhsOworCisgICAgaGwgPSAobXBkX3V1aW50X3QpYSAqIGI7CisKKyAgICAqaGkgPSBobCA+PiAzMjsKKyAgICAqbG8gPSAobXBkX3VpbnRfdClobDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKQoreworICAgIG1wZF91dWludF90IGhsOworCisgICAgaGwgPSAoKG1wZF91dWludF90KWhpPDwzMikgKyBsbzsKKyAgICAqcSA9IChtcGRfdWludF90KShobCAvIGQpOyAvKiBxdW90aWVudCBpcyBrbm93biB0byBmaXQgKi8KKyAgICAqciA9IChtcGRfdWludF90KShobCAtIChtcGRfdXVpbnRfdCkoKnEpICogZCk7Cit9CisvKiBFTkQgQU5TSSArIHVpbnQ2NF90ICovCisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIHVpbnQxNl90IHdbNF0sIGNhcnJ5OworICAgIHVpbnQxNl90IGFoLCBhbCwgYmgsIGJsOworICAgIHVpbnQzMl90IGhsOworCisgICAgYWggPSAodWludDE2X3QpKGE+PjE2KTsgYWwgPSAodWludDE2X3QpYTsKKyAgICBiaCA9ICh1aW50MTZfdCkoYj4+MTYpOyBibCA9ICh1aW50MTZfdCliOworCisgICAgaGwgPSAodWludDMyX3QpYWwgKiBibDsKKyAgICB3WzBdID0gKHVpbnQxNl90KWhsOworICAgIGNhcnJ5ID0gKHVpbnQxNl90KShobD4+MTYpOworCisgICAgaGwgPSAodWludDMyX3QpYWggKiBibCArIGNhcnJ5OworICAgIHdbMV0gPSAodWludDE2X3QpaGw7CisgICAgd1syXSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgIGhsID0gKHVpbnQzMl90KWFsICogYmggKyB3WzFdOworICAgIHdbMV0gPSAodWludDE2X3QpaGw7CisgICAgY2FycnkgPSAodWludDE2X3QpKGhsPj4xNik7CisKKyAgICBobCA9ICgodWludDMyX3QpYWggKiBiaCArIHdbMl0pICsgY2Fycnk7CisgICAgd1syXSA9ICh1aW50MTZfdClobDsKKyAgICB3WzNdID0gKHVpbnQxNl90KShobD4+MTYpOworCisgICAgKmhpID0gKCh1aW50MzJfdCl3WzNdPDwxNikgKyB3WzJdOworICAgICpsbyA9ICgodWludDMyX3Qpd1sxXTw8MTYpICsgd1swXTsKK30KKworLyoKKyAqIEJ5IEhlbnJ5IFMuIFdhcnJlbjogaHR0cDovL3d3dy5oYWNrZXJzZGVsaWdodC5vcmcvSERjb2RlL2Rpdmx1LmMudHh0CisgKiBodHRwOi8vd3d3LmhhY2tlcnNkZWxpZ2h0Lm9yZy9wZXJtaXNzaW9ucy5odG06CisgKiAiWW91IGFyZSBmcmVlIHRvIHVzZSwgY29weSwgYW5kIGRpc3RyaWJ1dGUgYW55IG9mIHRoZSBjb2RlIG9uIHRoaXMgd2ViCisgKiAgc2l0ZSwgd2hldGhlciBtb2RpZmllZCBieSB5b3Ugb3Igbm90LiBZb3UgbmVlZCBub3QgZ2l2ZSBhdHRyaWJ1dGlvbi4iCisgKgorICogU2xpZ2h0bHkgbW9kaWZpZWQsIGNvbW1lbnRzIGFyZSBtaW5lLgorICovCitzdGF0aWMgaW5saW5lIGludAorbmx6KHVpbnQzMl90IHgpCit7CisgICAgaW50IG47CisKKyAgICBpZiAoeCA9PSAwKSByZXR1cm4oMzIpOworCisgICAgbiA9IDA7CisgICAgaWYgKHggPD0gMHgwMDAwRkZGRikge24gPSBuICsxNjsgeCA9IHggPDwxNjt9CisgICAgaWYgKHggPD0gMHgwMEZGRkZGRikge24gPSBuICsgODsgeCA9IHggPDwgODt9CisgICAgaWYgKHggPD0gMHgwRkZGRkZGRikge24gPSBuICsgNDsgeCA9IHggPDwgNDt9CisgICAgaWYgKHggPD0gMHgzRkZGRkZGRikge24gPSBuICsgMjsgeCA9IHggPDwgMjt9CisgICAgaWYgKHggPD0gMHg3RkZGRkZGRikge24gPSBuICsgMTt9CisKKyAgICByZXR1cm4gbjsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IHUxLCBtcGRfdWludF90IHUwLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KQoreworICAgIGNvbnN0IG1wZF91aW50X3QgYiA9IDY1NTM2OworICAgIG1wZF91aW50X3QgdW4xLCB1bjAsCisgICAgICAgICAgICAgICB2bjEsIHZuMCwKKyAgICAgICAgICAgICAgIHExLCBxMCwKKyAgICAgICAgICAgICAgIHVuMzIsIHVuMjEsIHVuMTAsCisgICAgICAgICAgICAgICByaGF0LCB0OworICAgIGludCBzOworCisgICAgYXNzZXJ0KHUxIDwgdik7CisKKyAgICBzID0gbmx6KHYpOworICAgIHYgPSB2IDw8IHM7CisgICAgdm4xID0gdiA+PiAxNjsKKyAgICB2bjAgPSB2ICYgMHhGRkZGOworCisgICAgdCA9IChzID09IDApID8gMCA6IHUwID4+ICgzMiAtIHMpOworICAgIHVuMzIgPSAodTEgPDwgcykgfCB0OworICAgIHVuMTAgPSB1MCA8PCBzOworCisgICAgdW4xID0gdW4xMCA+PiAxNjsKKyAgICB1bjAgPSB1bjEwICYgMHhGRkZGOworCisgICAgcTEgPSB1bjMyIC8gdm4xOworICAgIHJoYXQgPSB1bjMyIC0gcTEqdm4xOworYWdhaW4xOgorICAgIGlmIChxMSA+PSBiIHx8IHExKnZuMCA+IGIqcmhhdCArIHVuMSkgeworICAgICAgICBxMSA9IHExIC0gMTsKKyAgICAgICAgcmhhdCA9IHJoYXQgKyB2bjE7CisgICAgICAgIGlmIChyaGF0IDwgYikgZ290byBhZ2FpbjE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgQmVmb3JlIGFnYWluMSB3ZSBoYWQ6CisgICAgICogICAgICAoMSkgcTEqdm4xICAgKyByaGF0ICAgICAgICAgPSB1bjMyCisgICAgICogICAgICAoMikgcTEqdm4xKmIgKyByaGF0KmIgKyB1bjEgPSB1bjMyKmIgKyB1bjEKKyAgICAgKgorICAgICAqICBUaGUgc3RhdGVtZW50cyBpbnNpZGUgdGhlIGlmLWNsYXVzZSBkbyBub3QgY2hhbmdlIHRoZSB2YWx1ZQorICAgICAqICBvZiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgKDIpLCBhbmQgdGhlIGxvb3AgaXMgb25seSBleGl0ZWQKKyAgICAgKiAgaWYgcTEqdm4wIDw9IHJoYXQqYiArIHVuMSwgc286CisgICAgICoKKyAgICAgKiAgICAgICgzKSBxMSp2bjEqYiArIHExKnZuMCA8PSB1bjMyKmIgKyB1bjEKKyAgICAgKiAgICAgICg0KSAgICAgICAgICAgICAgcTEqdiA8PSB1bjMyKmIgKyB1bjEKKyAgICAgKiAgICAgICg1KSAgICAgICAgICAgICAgICAgMCA8PSB1bjMyKmIgKyB1bjEgLSBxMSp2CisgICAgICoKKyAgICAgKiAgQnkgKDUpIHdlIGFyZSBjZXJ0YWluIHRoYXQgdGhlIHBvc3NpYmxlIGFkZC1iYWNrIHN0ZXAgZnJvbQorICAgICAqICBLbnV0aCdzIGFsZ29yaXRobSBEIGlzIG5ldmVyIHJlcXVpcmVkLgorICAgICAqCisgICAgICogIFNpbmNlIHRoZSBmaW5hbCBxdW90aWVudCBpcyBsZXNzIHRoYW4gMioqMzIsIHRoZSBmb2xsb3dpbmcKKyAgICAgKiAgbXVzdCBiZSB0cnVlOgorICAgICAqCisgICAgICogICAgICAoNikgdW4zMipiICsgdW4xIC0gcTEqdiA8PSBVSU5UMzJfTUFYCisgICAgICoKKyAgICAgKiAgVGhpcyBtZWFucyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgbGluZSwgdGhlIGhpZ2ggd29yZHMKKyAgICAgKiAgb2YgdW4zMipiIGFuZCBxMSp2IGNhbiBiZSBkaXNjYXJkZWQgd2l0aG91dCBhbnkgZWZmZWN0CisgICAgICogIG9uIHRoZSByZXN1bHQuCisgICAgICovCisgICAgdW4yMSA9IHVuMzIqYiArIHVuMSAtIHExKnY7CisKKyAgICBxMCA9IHVuMjEgLyB2bjE7CisgICAgcmhhdCA9IHVuMjEgLSBxMCp2bjE7CithZ2FpbjI6CisgICAgaWYgKHEwID49IGIgfHwgcTAqdm4wID4gYipyaGF0ICsgdW4wKSB7CisgICAgICAgIHEwID0gcTAgLSAxOworICAgICAgICByaGF0ID0gcmhhdCArIHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPCBiKSBnb3RvIGFnYWluMjsKKyAgICB9CisKKyAgICAqcSA9IHExKmIgKyBxMDsKKyAgICAqciA9ICh1bjIxKmIgKyB1bjAgLSBxMCp2KSA+PiBzOworfQorI2VuZGlmIC8qIEVORCBBTlNJICsgTEVHQUNZX0NPTVBJTEVSICovCisKKy8qIEVORCBBTlNJICovCisjZWxpZiBkZWZpbmVkKEFTTSkKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IGgsIGw7CisKKyAgICBfX2FzbV9fICggIm11bGwgJTNcblx0IgorICAgICAgICAgICAgICA6ICI9ZCIgKGgpLCAiPWEiIChsKQorICAgICAgICAgICAgICA6ICIlYSIgKGEpLCAicm0iIChiKQorICAgICAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKmhpID0gaDsKKyAgICAqbG8gPSBsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgbXBkX3VpbnRfdCBxcSwgcnI7CisKKyAgICBfX2FzbV9fICggImRpdmwgJTRcblx0IgorICAgICAgICAgICAgICA6ICI9YSIgKHFxKSwgIj1kIiAocnIpCisgICAgICAgICAgICAgIDogImEiIChsbyksICJkIiAoaGkpLCAicm0iIChkKQorICAgICAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKnEgPSBxcTsKKyAgICAqciA9IHJyOworfQorLyogRU5EIEdDQyBBU00gKi8KKyNlbGlmIGRlZmluZWQoTUFTTSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2NkZWNsCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgaCwgbDsKKworICAgIF9fYXNtIHsKKyAgICAgICAgbW92IGVheCwgYQorICAgICAgICBtdWwgYgorICAgICAgICBtb3YgaCwgZWR4CisgICAgICAgIG1vdiBsLCBlYXgKKyAgICB9CisKKyAgICAqaGkgPSBoOworICAgICpsbyA9IGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2NkZWNsCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKQoreworICAgIG1wZF91aW50X3QgcXEsIHJyOworCisgICAgX19hc20geworICAgICAgICBtb3YgZWF4LCBsbworICAgICAgICBtb3YgZWR4LCBoaQorICAgICAgICBkaXYgZAorICAgICAgICBtb3YgcXEsIGVheAorICAgICAgICBtb3YgcnIsIGVkeAorICAgIH0KKworICAgICpxID0gcXE7CisgICAgKnIgPSBycjsKK30KKy8qIEVORCBNQVNNIChfTVNDX1ZFUikgKi8KKyNlbHNlCisgICNlcnJvciAibmVlZCBwbGF0Zm9ybSBzcGVjaWZpYyA2NCBiaXQgbXVsdGlwbGljYXRpb24gYW5kIGRpdmlzaW9uIgorI2VuZGlmCisKKyNkZWZpbmUgRElWTU9EKHEsIHIsIHYsIGQpICpxID0gdiAvIGQ7ICpyID0gdiAtICpxICogZAorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdm1vZF9wb3cxMChtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IHYsIG1wZF91aW50X3QgZXhwKQoreworICAgIGFzc2VydChleHAgPD0gOSk7CisKKyAgICBpZiAoZXhwIDw9IDQpIHsKKyAgICAgICAgc3dpdGNoIChleHApIHsKKyAgICAgICAgY2FzZSAwOiAqcSA9IHY7ICpyID0gMDsgYnJlYWs7CisgICAgICAgIGNhc2UgMTogRElWTU9EKHEsIHIsIHYsIDEwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSAyOiBESVZNT0QocSwgciwgdiwgMTAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSAzOiBESVZNT0QocSwgciwgdiwgMTAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNDogRElWTU9EKHEsIHIsIHYsIDEwMDAwVUwpOyBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChleHApIHsKKyAgICAgICAgY2FzZSA1OiBESVZNT0QocSwgciwgdiwgMTAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSA2OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNzogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSA4OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSA5OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMFVMKTsgYnJlYWs7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgIH0KK30KKy8qIEVORCBDT05GSUdfMzIgKi8KKworLyogTk8gQ09ORklHICovCisjZWxzZQorICAjZXJyb3IgImRlZmluZSBDT05GSUdfNjQgb3IgQ09ORklHXzMyIgorI2VuZGlmIC8qIENPTkZJRyAqLworCisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZChtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IHYsIG1wZF91aW50X3QgZCkKK3sKKyAgICAqcSA9IHYgLyBkOworICAgICpyID0gdiAtICpxICogZDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2lkaXZfd29yZChtcGRfc3NpemVfdCAqcSwgbXBkX3NzaXplX3QgKnIsIG1wZF9zc2l6ZV90IHYsIG1wZF9zc2l6ZV90IGQpCit7CisgICAgKnEgPSB2IC8gZDsKKyAgICAqciA9IHYgLSAqcSAqIGQ7Cit9CisKKworLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoqICAgICAgICAgICAgICBBcml0aG1ldGljIHdpdGggb3ZlcmZsb3cgY2hlY2tpbmcKKyAqKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKiBUaGUgZm9sbG93aW5nIG1hY3JvcyBkbyBjYWxsIGV4aXQoKSBpbiBjYXNlIG9mIGFuIG92ZXJmbG93LgorICAgSWYgdGhlIGxpYnJhcnkgaXMgdXNlZCBjb3JyZWN0bHkgKGkuZS4gd2l0aCB2YWxpZCBjb250ZXh0CisgICBwYXJhbWV0ZXJzKSwgc3VjaCBvdmVyZmxvd3MgY2Fubm90IG9jY3VyLiBUaGUgbWFjcm9zIGFyZSB1c2VkCisgICBhcyBzYW5pdHkgY2hlY2tzIGluIGEgY291cGxlIG9mIHN0cmF0ZWdpYyBwbGFjZXMgYW5kIHNob3VsZAorICAgYmUgdmlld2VkIGFzIGEgaGFuZHdyaXR0ZW4gdmVyc2lvbiBvZiBnY2MncyAtZnRyYXB2IG9wdGlvbi4gKi8KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CithZGRfc2l6ZV90KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiKQoreworICAgIGlmIChhID4gTVBEX1NJWkVfTUFYIC0gYikgeworICAgICAgICBtcGRfZXJyX2ZhdGFsKCJhZGRfc2l6ZV90KCk6IG92ZXJmbG93OiBjaGVjayB0aGUgY29udGV4dCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIHJldHVybiBhICsgYjsKK30KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CitzdWJfc2l6ZV90KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiKQoreworICAgIGlmIChiID4gYSkgeworICAgICAgICBtcGRfZXJyX2ZhdGFsKCJzdWJfc2l6ZV90KCk6IG92ZXJmbG93OiBjaGVjayB0aGUgY29udGV4dCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIHJldHVybiBhIC0gYjsKK30KKworI2lmIE1QRF9TSVpFX01BWCAhPSBNUERfVUlOVF9NQVgKKyAgI2Vycm9yICJhZGFwdCBtdWxfc2l6ZV90KCkgYW5kIG11bG1vZF9zaXplX3QoKSIKKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK211bF9zaXplX3QobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgKG1wZF91aW50X3QpYSwgKG1wZF91aW50X3QpYik7CisgICAgaWYgKGhpKSB7CisgICAgICAgIG1wZF9lcnJfZmF0YWwoIm11bF9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0Iik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgcmV0dXJuIGxvOworfQorCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK2FkZF9zaXplX3Rfb3ZlcmZsb3cobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIsIG1wZF9zaXplX3QgKm92ZXJmbG93KQoreworICAgIG1wZF9zaXplX3QgcmV0OworCisgICAgKm92ZXJmbG93ID0gMDsKKyAgICByZXQgPSBhICsgYjsKKyAgICBpZiAocmV0IDwgYSkgKm92ZXJmbG93ID0gMTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK211bF9zaXplX3Rfb3ZlcmZsb3cobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIsIG1wZF9zaXplX3QgKm92ZXJmbG93KQoreworICAgIG1wZF91aW50X3QgbG87CisKKyAgICBfbXBkX211bF93b3JkcygobXBkX3VpbnRfdCAqKW92ZXJmbG93LCAmbG8sIChtcGRfdWludF90KWEsCisgICAgICAgICAgICAgICAgICAgKG1wZF91aW50X3QpYik7CisgICAgcmV0dXJuIGxvOworfQorCitzdGF0aWMgaW5saW5lIG1wZF9zc2l6ZV90Cittb2RfbXBkX3NzaXplX3QobXBkX3NzaXplX3QgYSwgbXBkX3NzaXplX3QgbSkKK3sKKyAgICBtcGRfc3NpemVfdCByID0gYSAlIG07CisgICAgcmV0dXJuIChyIDwgMCkgPyByICsgbSA6IHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorbXVsbW9kX3NpemVfdChtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYiwgbXBkX3NpemVfdCBtKQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgcSwgcjsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCAobXBkX3VpbnRfdClhLCAobXBkX3VpbnRfdCliKTsKKyAgICBfbXBkX2Rpdl93b3JkcygmcSwgJnIsIGhpLCBsbywgKG1wZF91aW50X3QpbSk7CisKKyAgICByZXR1cm4gcjsKK30KKworCisjZW5kaWYgLyogVFlQRUFSSVRIX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Vtb2Rhcml0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YWVjZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Vtb2Rhcml0aC5oCkBAIC0wLDAgKzEsNjUwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFVNT0RBUklUSF9ICisjZGVmaW5lIFVNT0RBUklUSF9ICisKKworI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorCisKKy8qIEJpZ251bTogTG93IGxldmVsIHJvdXRpbmVzIGZvciB1bnNpZ25lZCBtb2R1bGFyIGFyaXRobWV0aWMuIFRoZXNlIGFyZQorICAgdXNlZCBpbiB0aGUgZmFzdCBjb252b2x1dGlvbiBmdW5jdGlvbnMgZm9yIHZlcnkgbGFyZ2UgY29lZmZpY2llbnRzLiAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgQU5TSSBtb2R1bGFyIGFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKgorICogUmVzdHJpY3Rpb25zOiBhIDwgbSBhbmQgYiA8IG0KKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBhZGRtb2QtY29ycmVjdAorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK2FkZG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgczsKKworICAgIHMgPSBhICsgYjsKKyAgICBzID0gKHMgPCBhKSA/IHMgLSBtIDogczsKKyAgICBzID0gKHMgPj0gbSkgPyBzIC0gbSA6IHM7CisKKyAgICByZXR1cm4gczsKK30KKworLyoKKyAqIFJlc3RyaWN0aW9uczogYSA8IG0gYW5kIGIgPCBtCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogc3VibW9kLTItY29ycmVjdAorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3N1Ym1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgZDsKKworICAgIGQgPSBhIC0gYjsKKyAgICBkID0gKGEgPCBiKSA/IGQgKyBtIDogZDsKKworICAgIHJldHVybiBkOworfQorCisvKgorICogUmVzdHJpY3Rpb25zOiBhIDwgMm0gYW5kIGIgPCAybQorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IHNlY3Rpb24gZXh0LXN1Ym1vZAorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK2V4dF9zdWJtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IGQ7CisKKyAgICBhID0gKGEgPj0gbSkgPyBhIC0gbSA6IGE7CisgICAgYiA9IChiID49IG0pID8gYiAtIG0gOiBiOworCisgICAgZCA9IGEgLSBiOworICAgIGQgPSAoYSA8IGIpID8gZCArIG0gOiBkOworCisgICAgcmV0dXJuIGQ7Cit9CisKKy8qIAorICogUmVkdWNlIGRvdWJsZSB3b3JkIG1vZHVsbyBtLgorICogUmVzdHJpY3Rpb25zOiBtICE9IDAKKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzZWN0aW9uIGR3LXJlZHVjZQorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK2R3X3JlZHVjZShtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCByMSwgcjIsIHc7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZ3LCAmcjEsIGhpLCBtKTsKKyAgICBfbXBkX2Rpdl93b3JkcygmdywgJnIyLCByMSwgbG8sIG0pOworCisgICAgcmV0dXJuIHIyOworfQorCisvKgorICogU3VidHJhY3QgZG91YmxlIHdvcmQgZnJvbSBhLgorICogUmVzdHJpY3Rpb25zOiBhIDwgbQorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IHNlY3Rpb24gZHctc3VibW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorZHdfc3VibW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgZCwgcjsKKworICAgIHIgPSBkd19yZWR1Y2UoaGksIGxvLCBtKTsKKyAgICBkID0gYSAtIHI7CisgICAgZCA9IChhIDwgcikgPyBkICsgbSA6IGQ7CisKKyAgICByZXR1cm4gZDsKK30KKworI2lmZGVmIENPTkZJR182NAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIDY0LWJpdCBtb2R1bGFyIGFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBIHByb29mIG9mIHRoZSBhbGdvcml0aG0gaXMgaW4gbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0LiBBbiBBQ0wyCisgKiBwcm9vZiBpcyBpbiB1bW9kYXJpdGgubGlzcDogc2VjdGlvbiAiRmFzdCBtb2R1bGFyIHJlZHVjdGlvbiIuCisgKgorICogQWxnb3JpdGhtOiBjYWxjdWxhdGUgKGEgKiBiKSAlIHA6CisgKgorICogICBhKSBoaSwgbG8gPC0gYSAqIGIgICAgICAgIyBDYWxjdWxhdGUgYSAqIGIuCisgKgorICogICBiKSBoaSwgbG8gPC0gIFIoaGksIGxvKSAgIyBSZWR1Y2UgbW9kdWxvIHAuCisgKgorICogICBjKSBSZXBlYXQgc3RlcCBiKSB1bnRpbCAwIDw9IGhpICogMioqNjQgKyBsbyA8IDIqcC4KKyAqCisgKiAgIGQpIElmIHRoZSByZXN1bHQgaXMgbGVzcyB0aGFuIHAsIHJldHVybiBsby4gT3RoZXJ3aXNlIHJldHVybiBsbyAtIHAuCisgKi8KKworc3RhdGljIGlubGluZSBtcGRfdWludF90Cit4NjRfbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG8sIHgsIHk7CisKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBhLCBiKTsKKworICAgIGlmIChtICYgKDFVTEw8PDMyKSkgeyAvKiBQMSAqLworCisgICAgICAgIC8qIGZpcnN0IHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzI7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzMjsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiBzZWNvbmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMjsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDMyOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIHJldHVybiAoaGkgfHwgbG8gPj0gbSA/IGxvIC0gbSA6IGxvKTsKKyAgICB9CisgICAgZWxzZSBpZiAobSAmICgxVUxMPDwzNCkpIHsgLyogUDIgKi8KKworICAgICAgICAvKiBmaXJzdCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMwOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzQ7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogc2Vjb25kIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzA7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzNDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiB0aGlyZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMwOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzQ7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgcmV0dXJuIChoaSB8fCBsbyA+PSBtID8gbG8gLSBtIDogbG8pOworICAgIH0KKyAgICBlbHNlIHsgLyogUDMgKi8KKworICAgICAgICAvKiBmaXJzdCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDI0OworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gNDA7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogc2Vjb25kIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMjQ7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSA0MDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiB0aGlyZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDI0OworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gNDA7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgcmV0dXJuIChoaSB8fCBsbyA+PSBtID8gbG8gLSBtIDogbG8pOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkCit4NjRfbXVsbW9kMmMobXBkX3VpbnRfdCAqYSwgbXBkX3VpbnRfdCAqYiwgbXBkX3VpbnRfdCB3LCBtcGRfdWludF90IG0pCit7CisgICAgKmEgPSB4NjRfbXVsbW9kKCphLCB3LCBtKTsKKyAgICAqYiA9IHg2NF9tdWxtb2QoKmIsIHcsIG0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3g2NF9tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYTAgPSB4NjRfbXVsbW9kKCphMCwgYjAsIG0pOworICAgICphMSA9IHg2NF9tdWxtb2QoKmExLCBiMSwgbSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAoreDY0X3Bvd21vZChtcGRfdWludF90IGJhc2UsIG1wZF91aW50X3QgZXhwLCBtcGRfdWludF90IHVtb2QpCit7CisgICAgbXBkX3VpbnRfdCByID0gMTsKKworICAgIHdoaWxlIChleHAgPiAwKSB7CisgICAgICAgIGlmIChleHAgJiAxKQorICAgICAgICAgICAgciA9IHg2NF9tdWxtb2QociwgYmFzZSwgdW1vZCk7CisgICAgICAgIGJhc2UgPSB4NjRfbXVsbW9kKGJhc2UsIGJhc2UsIHVtb2QpOworICAgICAgICBleHAgPj49IDE7CisgICAgfQorCisgICAgcmV0dXJuIHI7Cit9CisKKy8qIEVORCBDT05GSUdfNjQgKi8KKyNlbHNlIC8qIENPTkZJR18zMiAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgMzItYml0IG1vZHVsYXIgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIGRlZmluZWQoQU5TSSkKKyNpZiAhZGVmaW5lZChMRUdBQ1lfQ09NUElMRVIpCisvKiBIQVZFX1VJTlQ2NF9UICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3N0ZF9tdWxtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICByZXR1cm4gKChtcGRfdXVpbnRfdCkgYSAqIGIpICUgbTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMmMobXBkX3VpbnRfdCAqYSwgbXBkX3VpbnRfdCAqYiwgbXBkX3VpbnRfdCB3LCBtcGRfdWludF90IG0pCit7CisgICAgKmEgPSAoKG1wZF91dWludF90KSAqYSAqIHcpICUgbTsKKyAgICAqYiA9ICgobXBkX3V1aW50X3QpICpiICogdykgJSBtOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYTAgPSAoKG1wZF91dWludF90KSAqYTAgKiBiMCkgJSBtOworICAgICphMSA9ICgobXBkX3V1aW50X3QpICphMSAqIGIxKSAlIG07Cit9CisvKiBFTkQgSEFWRV9VSU5UNjRfVCAqLworI2Vsc2UKKy8qIExFR0FDWV9DT01QSUxFUiAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdGRfbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG8sIHEsIHI7CisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIGEsIGIpOworICAgIF9tcGRfZGl2X3dvcmRzKCZxLCAmciwgaGksIGxvLCBtKTsKKyAgICByZXR1cm4gcjsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMmMobXBkX3VpbnRfdCAqYSwgbXBkX3VpbnRfdCAqYiwgbXBkX3VpbnRfdCB3LCBtcGRfdWludF90IG0pCit7CisgICAgKmEgPSBzdGRfbXVsbW9kKCphLCB3LCBtKTsKKyAgICAqYiA9IHN0ZF9tdWxtb2QoKmIsIHcsIG0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYTAgPSBzdGRfbXVsbW9kKCphMCwgYjAsIG0pOworICAgICphMSA9IHN0ZF9tdWxtb2QoKmExLCBiMSwgbSk7Cit9CisvKiBFTkQgTEVHQUNZX0NPTVBJTEVSICovCisjZW5kaWYKKworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdGRfcG93bW9kKG1wZF91aW50X3QgYmFzZSwgbXBkX3VpbnRfdCBleHAsIG1wZF91aW50X3QgdW1vZCkKK3sKKyAgICBtcGRfdWludF90IHIgPSAxOworCisgICAgd2hpbGUgKGV4cCA+IDApIHsKKyAgICAgICAgaWYgKGV4cCAmIDEpCisgICAgICAgICAgICByID0gc3RkX211bG1vZChyLCBiYXNlLCB1bW9kKTsKKyAgICAgICAgYmFzZSA9IHN0ZF9tdWxtb2QoYmFzZSwgYmFzZSwgdW1vZCk7CisgICAgICAgIGV4cCA+Pj0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gcjsKK30KKyNlbmRpZiAvKiBBTlNJIENPTkZJR18zMiAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICBQZW50aXVtIFBybyBtb2R1bGFyIGFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEEgcHJvb2Ygb2YgdGhlIGFsZ29yaXRobSBpcyBpbiBsaXRlcmF0dXJlL211bG1vZC1wcHJvLnR4dC4gVGhlIEZQVQorICogY29udHJvbCB3b3JkIG11c3QgYmUgc2V0IHRvIDY0LWJpdCBwcmVjaXNpb24gYW5kIHRydW5jYXRpb24gbW9kZQorICogcHJpb3IgdG8gdXNpbmcgdGhlc2UgZnVuY3Rpb25zLgorICoKKyAqIEFsZ29yaXRobTogY2FsY3VsYXRlIChhICogYikgJSBwOgorICoKKyAqICAgcCAgICA6PSBwcmltZSA8IDIqKjMxCisgKiAgIHBpbnYgOj0gKGxvbmcgZG91YmxlKTEuMCAvIHAgKHByZWNhbGN1bGF0ZWQpCisgKgorICogICBhKSBuID0gYSAqIGIgICAgICAgICAgICAgICMgQ2FsY3VsYXRlIGV4YWN0IHByb2R1Y3QuCisgKiAgIGIpIHFlc3QgPSBuICogcGludiAgICAgICAgIyBDYWxjdWxhdGUgZXN0aW1hdGUgZm9yIHEgPSBuIC8gcC4KKyAqICAgYykgcSA9IChxZXN0KzIqKjYzKS0yKio2MyAjIFRydW5jYXRlIHFlc3QgdG8gdGhlIGV4YWN0IHF1b3RpZW50LgorICogICBkKSByID0gbiAtIHEgKiBwICAgICAgICAgICMgQ2FsY3VsYXRlIHJlbWFpbmRlci4KKyAqCisgKiBSZW1hcmtzOgorICoKKyAqICAgLSBwID0gZG1vZCBhbmQgcGludiA9IGRpbnZtb2QuCisgKiAgIC0gZGludm1vZCBwb2ludHMgdG8gYW4gYXJyYXkgb2YgdGhyZWUgdWludDMyX3QsIHdoaWNoIGlzIGludGVycHJldGVkCisgKiAgICAgYXMgYW4gODAgYml0IGxvbmcgZG91YmxlIGJ5IGZsZHQuCisgKiAgIC0gSW50ZWwgY29tcGlsZXJzIHByaW9yIHRvIHZlcnNpb24gMTEgZG8gbm90IHNlZW0gdG8gaGFuZGxlIHRoZQorICogICAgIF9fR05VQ19fIGlubGluZSBhc3NlbWJseSBjb3JyZWN0bHkuCisgKiAgIC0gcmFuZG9tIHRlc3RzIGFyZSBwcm92aWRlZCBpbiB0ZXN0cy9leHRlbmRlZC9wcHJvX211bG1vZC5jCisgKi8KKworI2lmIGRlZmluZWQoUFBSTykKKyNpZiBkZWZpbmVkKEFTTSkKKworLyogUmV0dXJuIChhICogYikgJSBkbW9kICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3Bwcm9fbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIG1wZF91aW50X3QgcmV0dmFsOworCisgICAgX19hc21fXyAoCisgICAgICAgICAgICAiZmlsZGwgICUyXG5cdCIKKyAgICAgICAgICAgICJmaWxkbCAgJTFcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbGR0ICAgKCU0KVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZsZHMgICAlNVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbGRsICAgKCUzKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgJTBcblx0IgorICAgICAgICAgICAgOiAiPW0iIChyZXR2YWwpCisgICAgICAgICAgICA6ICJtIiAoYSksICJtIiAoYiksICJyIiAoZG1vZCksICJyIiAoZGludm1vZCksICJtIiAoTVBEX1RXTzYzKQorICAgICAgICAgICAgOiAic3QiLCAibWVtb3J5IgorICAgICk7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisvKgorICogVHdvIG1vZHVsYXIgbXVsdGlwbGljYXRpb25zIGluIHBhcmFsbGVsOgorICogICAgICAqYTAgPSAoKmEwICogdykgJSBkbW9kCisgKiAgICAgICphMSA9ICgqYTEgKiB3KSAlIGRtb2QKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX211bG1vZDJjKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCB3LAorICAgICAgICAgICAgICBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIF9fYXNtX18gKAorICAgICAgICAgICAgImZpbGRsICAlMlxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICglMSlcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICglMClcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpIFxuXHQiCisgICAgICAgICAgICAiZmxkdCAgICglNClcblx0IgorICAgICAgICAgICAgImZsZHMgICAlNVxuXHQiCisgICAgICAgICAgICAiZmxkICAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmYWRkICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZnN1YiAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZtdWxsICAoJTMpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgzKVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTApXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWJwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsbCAgKCUzKVxuXHQiCisgICAgICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTEpXG5cdCIKKyAgICAgICAgICAgIDogOiAiciIgKGEwKSwgInIiIChhMSksICJtIiAodyksCisgICAgICAgICAgICAgICAgInIiIChkbW9kKSwgInIiIChkaW52bW9kKSwKKyAgICAgICAgICAgICAgICAibSIgKE1QRF9UV082MykKKyAgICAgICAgICAgIDogInN0IiwgIm1lbW9yeSIKKyAgICApOworfQorCisvKgorICogVHdvIG1vZHVsYXIgbXVsdGlwbGljYXRpb25zIGluIHBhcmFsbGVsOgorICogICAgICAqYTAgPSAoKmEwICogYjApICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogYjEpICUgZG1vZAorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK3Bwcm9fbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICJmaWxkbCAgJTNcblx0IgorICAgICAgICAgICAgImZpbGRsICAoJTIpXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICUxXG5cdCIKKyAgICAgICAgICAgICJmaWxkbCAgKCUwKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZsZHQgICAoJTUpXG5cdCIKKyAgICAgICAgICAgICJmbGQgICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgyKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZmxkcyAgICU2XG5cdCIKKyAgICAgICAgICAgICJmbGRsICAgKCU0KVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMylcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmc3ViICAgJSVzdCgxKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZzdWJwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMiksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMylcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlzdHBsICglMilcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTApXG5cdCIKKyAgICAgICAgICAgIDogOiAiciIgKGEwKSwgIm0iIChiMCksICJyIiAoYTEpLCAibSIgKGIxKSwKKyAgICAgICAgICAgICAgICAiciIgKGRtb2QpLCAiciIgKGRpbnZtb2QpLAorICAgICAgICAgICAgICAgICJtIiAoTVBEX1RXTzYzKQorICAgICAgICAgICAgOiAic3QiLCAibWVtb3J5IgorICAgICk7Cit9CisvKiBFTkQgUFBSTyBHQ0MgQVNNICovCisjZWxpZiBkZWZpbmVkKE1BU00pCisKKy8qIFJldHVybiAoYSAqIGIpICUgZG1vZCAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90IF9fY2RlY2wKK3Bwcm9fbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIG1wZF91aW50X3QgcmV0dmFsOworCisgICAgX19hc20geworICAgICAgICBtb3YgICAgIGVheCwgZGludm1vZAorICAgICAgICBtb3YgICAgIGVkeCwgZG1vZAorICAgICAgICBmaWxkICAgIGIKKyAgICAgICAgZmlsZCAgICBhCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZsZCAgICAgVEJZVEUgUFRSIFtlYXhdCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDEpCisgICAgICAgIGZsZCAgICAgTVBEX1RXTzYzCisgICAgICAgIGZhZGQgICAgc3QoMSksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZsZCAgICAgUVdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZpc3RwICAgcmV0dmFsCisgICAgfQorCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIHcpICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogdykgJSBkbW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdCBfX2NkZWNsCitwcHJvX211bG1vZDJjKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCB3LAorICAgICAgICAgICAgICBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIF9fYXNtIHsKKyAgICAgICAgbW92ICAgICBlY3gsIGRtb2QKKyAgICAgICAgbW92ICAgICBlZHgsIGExCisgICAgICAgIG1vdiAgICAgZWJ4LCBkaW52bW9kCisgICAgICAgIG1vdiAgICAgZWF4LCBhMAorICAgICAgICBmaWxkICAgIHcKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VkeF0KKyAgICAgICAgZm11bCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmaWxkICAgIERXT1JEIFBUUiBbZWF4XQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFRCWVRFIFBUUiBbZWJ4XQorICAgICAgICBmbGQgICAgIE1QRF9UV082MworICAgICAgICBmbGQgICAgIHN0KDIpCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDIpCisgICAgICAgIGZhZGQgICAgc3QsIHN0KDEpCisgICAgICAgIGZzdWIgICAgc3QsIHN0KDEpCisgICAgICAgIGZtdWwgICAgUVdPUkQgUFRSIFtlY3hdCisgICAgICAgIGZzdWJwICAgc3QoMyksIHN0CisgICAgICAgIGZ4Y2ggICAgc3QoMikKKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VheF0KKyAgICAgICAgZm11bCAgICBzdCwgc3QoMikKKyAgICAgICAgZmFkZCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnN1YnJwICBzdCgxKSwgc3QKKyAgICAgICAgZm11bCAgICBRV09SRCBQVFIgW2VjeF0KKyAgICAgICAgZnN1YnAgICBzdCgxKSwgc3QKKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VkeF0KKyAgICB9Cit9CisKKy8qCisgKiBUd28gbW9kdWxhciBtdWx0aXBsaWNhdGlvbnMgaW4gcGFyYWxsZWw6CisgKiAgICAgICphMCA9ICgqYTAgKiBiMCkgJSBkbW9kCisgKiAgICAgICphMSA9ICgqYTEgKiBiMSkgJSBkbW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2NkZWNsCitwcHJvX211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgX19hc20geworICAgICAgICBtb3YgICAgIGVjeCwgZG1vZAorICAgICAgICBtb3YgICAgIGVkeCwgYTEKKyAgICAgICAgbW92ICAgICBlYngsIGRpbnZtb2QKKyAgICAgICAgbW92ICAgICBlYXgsIGEwCisgICAgICAgIGZpbGQgICAgYjEKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VkeF0KKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZmlsZCAgICBiMAorICAgICAgICBmaWxkICAgIERXT1JEIFBUUiBbZWF4XQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFRCWVRFIFBUUiBbZWJ4XQorICAgICAgICBmbGQgICAgIHN0KDIpCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZm11bCAgICBzdCwgc3QoMikKKyAgICAgICAgZmxkICAgICBEV09SRCBQVFIgTVBEX1RXTzYzCisgICAgICAgIGZsZCAgICAgUVdPUkQgUFRSIFtlY3hdCisgICAgICAgIGZ4Y2ggICAgc3QoMykKKyAgICAgICAgZmFkZCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgyKQorICAgICAgICBmYWRkICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDIpCisgICAgICAgIGZzdWIgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMikKKyAgICAgICAgZnN1YnJwICBzdCgxKSwgc3QKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmbXVsICAgIHN0LCBzdCgyKQorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZtdWxwICAgc3QoMiksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMyksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VkeF0KKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VheF0KKyAgICB9Cit9CisjZW5kaWYgLyogUFBSTyBNQVNNIChfTVNDX1ZFUikgKi8KKworCisvKiBSZXR1cm4gKGJhc2UgKiogZXhwKSAlIGRtb2QgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorcHByb19wb3dtb2QobXBkX3VpbnRfdCBiYXNlLCBtcGRfdWludF90IGV4cCwgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBtcGRfdWludF90IHIgPSAxOworCisgICAgd2hpbGUgKGV4cCA+IDApIHsKKyAgICAgICAgaWYgKGV4cCAmIDEpCisgICAgICAgICAgICByID0gcHByb19tdWxtb2QociwgYmFzZSwgZG1vZCwgZGludm1vZCk7CisgICAgICAgIGJhc2UgPSBwcHJvX211bG1vZChiYXNlLCBiYXNlLCBkbW9kLCBkaW52bW9kKTsKKyAgICAgICAgZXhwID4+PSAxOworICAgIH0KKworICAgIHJldHVybiByOworfQorI2VuZGlmIC8qIFBQUk8gKi8KKyNlbmRpZiAvKiBDT05GSUdfMzIgKi8KKworCisjZW5kaWYgLyogVU1PREFSSVRIX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzZlMDM3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVkNDT01QQVRfSAorI2RlZmluZSBWQ0NPTVBBVF9ICisKKworLyogVmlzdWFsIEMgZml4ZXM6IG5vIHN0ZGludC5oLCBubyBzbnByaW50ZiAuLi4gKi8KKyNpZmRlZiBfTVNDX1ZFUgorICAjaW5jbHVkZSAidmNzdGRpbnQuaCIKKyAgI3VuZGVmIGlubGluZQorICAjZGVmaW5lIGlubGluZSBfX2lubGluZQorICAjdW5kZWYgcmFuZG9tCisgICNkZWZpbmUgcmFuZG9tIHJhbmQKKyAgI3VuZGVmIHNyYW5kb20KKyAgI2RlZmluZSBzcmFuZG9tIHNyYW5kCisgICN1bmRlZiBzbnByaW50ZgorICAjZGVmaW5lIHNucHJpbnRmIHNwcmludGZfcworICAjZGVmaW5lIEhBVkVfU05QUklOVEYKKyAgI3VuZGVmIHN0cm5jYXNlY21wCisgICNkZWZpbmUgc3RybmNhc2VjbXAgX3N0cm5pY21wCisgICN1bmRlZiBzdHJjYXNlY21wCisgICNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAorICAjdW5kZWYgc3RydG9sbAorICAjZGVmaW5lIHN0cnRvbGwgX3N0cnRvaTY0CisgICNkZWZpbmUgc3RyZHVwIF9zdHJkdXAKKyAgI2RlZmluZSBQUklpNjQgIkk2NGkiCisgICNkZWZpbmUgUFJJdTY0ICJJNjR1IgorICAjZGVmaW5lIFBSSWkzMiAiSTMyaSIKKyAgI2RlZmluZSBQUkl1MzIgIkkzMnUiCisjZW5kaWYKKworCisjZW5kaWYgLyogVkNDT01QQVRfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2RpdjY0LmFzbSBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNkaXY2NC5hc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFiYmEwOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNkaXY2NC5hc20KQEAgLTAsMCArMSw0OCBAQAorOworOyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKzsKKzsgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cis7IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworOyBhcmUgbWV0OgorOworOyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorOyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCis7Cis7IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cis7ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKzsgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzsKKzsgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKzsgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCis7IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCis7IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCis7IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCis7IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCis7IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorOyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorOyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCis7IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKzsgU1VDSCBEQU1BR0UuCis7CisKKworUFVCTElDICAgIF9tcGRfZGl2X3dvcmRzCitfVEVYVCAgICBTRUdNRU5UCitxJCA9IDgKK3IkID0gMTYKK2hpJCA9IDI0CitsbyQgPSAzMgorZCQgPSA0MAorX21wZF9kaXZfd29yZHMgUFJPQworICAgIG1vdiAgICByMTAsIHJkeAorICAgIG1vdiAgICByZHgsIHI4CisgICAgbW92ICAgIHJheCwgcjkKKyAgICBkaXYgICAgUVdPUkQgUFRSIGQkW3JzcF0KKyAgICBtb3YgICAgUVdPUkQgUFRSIFtyMTBdLCByZHgKKyAgICBtb3YgICAgUVdPUkQgUFRSIFtyY3hdLCByYXgKKyAgICByZXQgICAgMAorX21wZF9kaXZfd29yZHMgRU5EUAorX1RFWFQgICAgRU5EUworRU5ECisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y3N0ZGludC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y3N0ZGludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMzJmZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Zjc3RkaW50LmgKQEAgLTAsMCArMSwyMzIgQEAKKy8vIElTTyBDOXggIGNvbXBsaWFudCBzdGRpbnQuaCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8KKy8vIEJhc2VkIG9uIElTTy9JRUMgOTg5OTpUQzIgQ29tbWl0dGVlIGRyYWZ0IChNYXkgNiwgMjAwNSkgV0cxNC9OMTEyNCAKKy8vIAorLy8gIENvcHlyaWdodCAoYykgMjAwNi0yMDA4IEFsZXhhbmRlciBDaGVtZXJpcworLy8gCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8gCisvLyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKy8vICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIAorLy8gICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAKKy8vICAgMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKy8vICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLyAKKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy8vIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisvLyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTworLy8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7CisvLyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgCisvLyBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgorLy8gT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgorLy8gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisvLyAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2lmbmRlZiBfTVNDX1ZFUiAvLyBbCisjZXJyb3IgIlVzZSB0aGlzIGhlYWRlciBvbmx5IHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXJzISIKKyNlbmRpZiAvLyBfTVNDX1ZFUiBdCisKKyNpZm5kZWYgX01TQ19TVERJTlRfSF8gLy8gWworI2RlZmluZSBfTVNDX1NURElOVF9IXworCisjaWYgX01TQ19WRVIgPiAxMDAwCisjcHJhZ21hIG9uY2UKKyNlbmRpZgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKy8vIEZvciBWaXN1YWwgU3R1ZGlvIDYgaW4gQysrIG1vZGUgd3JhcCA8d2NoYXIuaD4gaW5jbHVkZSB3aXRoICdleHRlcm4gIkMrKyIge30nCisvLyBvciBjb21waWxlciBnaXZlIG1hbnkgZXJyb3JzIGxpa2UgdGhpczoKKy8vICAgZXJyb3IgQzI3MzM6IHNlY29uZCBDIGxpbmthZ2Ugb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbiAnd21lbWNocicgbm90IGFsbG93ZWQKKyNpZiAoX01TQ19WRVIgPCAxMzAwKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorICAgZXh0ZXJuICJDKysiIHsKKyNlbmRpZiAKKyMgICAgIGluY2x1ZGUgPHdjaGFyLmg+CisjaWYgKF9NU0NfVkVSIDwgMTMwMCkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKKyAgIH0KKyNlbmRpZgorCisvLyBEZWZpbmUgX1c2NCBtYWNyb3MgdG8gbWFyayB0eXBlcyBjaGFuZ2luZyB0aGVpciBzaXplLCBsaWtlIGludHB0cl90LgorI2lmbmRlZiBfVzY0CisjICBpZiAhZGVmaW5lZChfX21pZGwpICYmIChkZWZpbmVkKF9YODZfKSB8fCBkZWZpbmVkKF9NX0lYODYpKSAmJiBfTVNDX1ZFUiA+PSAxMzAwCisjICAgICBkZWZpbmUgX1c2NCBfX3c2NAorIyAgZWxzZQorIyAgICAgZGVmaW5lIF9XNjQKKyMgIGVuZGlmCisjZW5kaWYKKworCisvLyA3LjE4LjEgSW50ZWdlciB0eXBlcworCisvLyA3LjE4LjEuMSBFeGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIF9faW50OCAgICAgICAgICAgIGludDhfdDsKK3R5cGVkZWYgX19pbnQxNiAgICAgICAgICAgaW50MTZfdDsKK3R5cGVkZWYgX19pbnQzMiAgICAgICAgICAgaW50MzJfdDsKK3R5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgaW50NjRfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ4ICAgdWludDhfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQxNiAgdWludDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgIHVpbnQzMl90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICB1aW50NjRfdDsKKworLy8gNy4xOC4xLjIgTWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIGludDhfdCAgICBpbnRfbGVhc3Q4X3Q7Cit0eXBlZGVmIGludDE2X3QgICBpbnRfbGVhc3QxNl90OwordHlwZWRlZiBpbnQzMl90ICAgaW50X2xlYXN0MzJfdDsKK3R5cGVkZWYgaW50NjRfdCAgIGludF9sZWFzdDY0X3Q7Cit0eXBlZGVmIHVpbnQ4X3QgICB1aW50X2xlYXN0OF90OwordHlwZWRlZiB1aW50MTZfdCAgdWludF9sZWFzdDE2X3Q7Cit0eXBlZGVmIHVpbnQzMl90ICB1aW50X2xlYXN0MzJfdDsKK3R5cGVkZWYgdWludDY0X3QgIHVpbnRfbGVhc3Q2NF90OworCisvLyA3LjE4LjEuMyBGYXN0ZXN0IG1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcwordHlwZWRlZiBpbnQ4X3QgICAgaW50X2Zhc3Q4X3Q7Cit0eXBlZGVmIGludDE2X3QgICBpbnRfZmFzdDE2X3Q7Cit0eXBlZGVmIGludDMyX3QgICBpbnRfZmFzdDMyX3Q7Cit0eXBlZGVmIGludDY0X3QgICBpbnRfZmFzdDY0X3Q7Cit0eXBlZGVmIHVpbnQ4X3QgICB1aW50X2Zhc3Q4X3Q7Cit0eXBlZGVmIHVpbnQxNl90ICB1aW50X2Zhc3QxNl90OwordHlwZWRlZiB1aW50MzJfdCAgdWludF9mYXN0MzJfdDsKK3R5cGVkZWYgdWludDY0X3QgIHVpbnRfZmFzdDY0X3Q7CisKKy8vIDcuMTguMS40IEludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBob2xkaW5nIG9iamVjdCBwb2ludGVycworI2lmZGVmIF9XSU42NCAvLyBbCisgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAgIGludHB0cl90OworICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICB1aW50cHRyX3Q7CisjZWxzZSAvLyBfV0lONjQgXVsKKyAgIHR5cGVkZWYgX1c2NCBpbnQgICAgICAgICAgICAgICBpbnRwdHJfdDsKKyAgIHR5cGVkZWYgX1c2NCB1bnNpZ25lZCBpbnQgICAgICB1aW50cHRyX3Q7CisjZW5kaWYgLy8gX1dJTjY0IF0KKworLy8gNy4xOC4xLjUgR3JlYXRlc3Qtd2lkdGggaW50ZWdlciB0eXBlcwordHlwZWRlZiBpbnQ2NF90ICAgaW50bWF4X3Q7Cit0eXBlZGVmIHVpbnQ2NF90ICB1aW50bWF4X3Q7CisKKworLy8gNy4xOC4yIExpbWl0cyBvZiBzcGVjaWZpZWQtd2lkdGggaW50ZWdlciB0eXBlcworCisjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoX19TVERDX0xJTUlUX01BQ1JPUykgLy8gWyAgIFNlZSBmb290bm90ZSAyMjAgYXQgcGFnZSAyNTcgYW5kIGZvb3Rub3RlIDIyMSBhdCBwYWdlIDI1OQorCisvLyA3LjE4LjIuMSBMaW1pdHMgb2YgZXhhY3Qtd2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlQ4X01JTiAgICAgKChpbnQ4X3QpX0k4X01JTikKKyNkZWZpbmUgSU5UOF9NQVggICAgIF9JOF9NQVgKKyNkZWZpbmUgSU5UMTZfTUlOICAgICgoaW50MTZfdClfSTE2X01JTikKKyNkZWZpbmUgSU5UMTZfTUFYICAgIF9JMTZfTUFYCisjZGVmaW5lIElOVDMyX01JTiAgICAoKGludDMyX3QpX0kzMl9NSU4pCisjZGVmaW5lIElOVDMyX01BWCAgICBfSTMyX01BWAorI2RlZmluZSBJTlQ2NF9NSU4gICAgKChpbnQ2NF90KV9JNjRfTUlOKQorI2RlZmluZSBJTlQ2NF9NQVggICAgX0k2NF9NQVgKKyNkZWZpbmUgVUlOVDhfTUFYICAgIF9VSThfTUFYCisjZGVmaW5lIFVJTlQxNl9NQVggICBfVUkxNl9NQVgKKyNkZWZpbmUgVUlOVDMyX01BWCAgIF9VSTMyX01BWAorI2RlZmluZSBVSU5UNjRfTUFYICAgX1VJNjRfTUFYCisKKy8vIDcuMTguMi4yIExpbWl0cyBvZiBtaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UX0xFQVNUOF9NSU4gICAgSU5UOF9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUOF9NQVggICAgSU5UOF9NQVgKKyNkZWZpbmUgSU5UX0xFQVNUMTZfTUlOICAgSU5UMTZfTUlOCisjZGVmaW5lIElOVF9MRUFTVDE2X01BWCAgIElOVDE2X01BWAorI2RlZmluZSBJTlRfTEVBU1QzMl9NSU4gICBJTlQzMl9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUMzJfTUFYICAgSU5UMzJfTUFYCisjZGVmaW5lIElOVF9MRUFTVDY0X01JTiAgIElOVDY0X01JTgorI2RlZmluZSBJTlRfTEVBU1Q2NF9NQVggICBJTlQ2NF9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDhfTUFYICAgVUlOVDhfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1QxNl9NQVggIFVJTlQxNl9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDMyX01BWCAgVUlOVDMyX01BWAorI2RlZmluZSBVSU5UX0xFQVNUNjRfTUFYICBVSU5UNjRfTUFYCisKKy8vIDcuMTguMi4zIExpbWl0cyBvZiBmYXN0ZXN0IG1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlRfRkFTVDhfTUlOICAgIElOVDhfTUlOCisjZGVmaW5lIElOVF9GQVNUOF9NQVggICAgSU5UOF9NQVgKKyNkZWZpbmUgSU5UX0ZBU1QxNl9NSU4gICBJTlQxNl9NSU4KKyNkZWZpbmUgSU5UX0ZBU1QxNl9NQVggICBJTlQxNl9NQVgKKyNkZWZpbmUgSU5UX0ZBU1QzMl9NSU4gICBJTlQzMl9NSU4KKyNkZWZpbmUgSU5UX0ZBU1QzMl9NQVggICBJTlQzMl9NQVgKKyNkZWZpbmUgSU5UX0ZBU1Q2NF9NSU4gICBJTlQ2NF9NSU4KKyNkZWZpbmUgSU5UX0ZBU1Q2NF9NQVggICBJTlQ2NF9NQVgKKyNkZWZpbmUgVUlOVF9GQVNUOF9NQVggICBVSU5UOF9NQVgKKyNkZWZpbmUgVUlOVF9GQVNUMTZfTUFYICBVSU5UMTZfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDMyX01BWCAgVUlOVDMyX01BWAorI2RlZmluZSBVSU5UX0ZBU1Q2NF9NQVggIFVJTlQ2NF9NQVgKKworLy8gNy4xOC4yLjQgTGltaXRzIG9mIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBob2xkaW5nIG9iamVjdCBwb2ludGVycworI2lmZGVmIF9XSU42NCAvLyBbCisjICBkZWZpbmUgSU5UUFRSX01JTiAgIElOVDY0X01JTgorIyAgZGVmaW5lIElOVFBUUl9NQVggICBJTlQ2NF9NQVgKKyMgIGRlZmluZSBVSU5UUFRSX01BWCAgVUlOVDY0X01BWAorI2Vsc2UgLy8gX1dJTjY0IF1bCisjICBkZWZpbmUgSU5UUFRSX01JTiAgIElOVDMyX01JTgorIyAgZGVmaW5lIElOVFBUUl9NQVggICBJTlQzMl9NQVgKKyMgIGRlZmluZSBVSU5UUFRSX01BWCAgVUlOVDMyX01BWAorI2VuZGlmIC8vIF9XSU42NCBdCisKKy8vIDcuMTguMi41IExpbWl0cyBvZiBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5lIElOVE1BWF9NSU4gICBJTlQ2NF9NSU4KKyNkZWZpbmUgSU5UTUFYX01BWCAgIElOVDY0X01BWAorI2RlZmluZSBVSU5UTUFYX01BWCAgVUlOVDY0X01BWAorCisvLyA3LjE4LjMgTGltaXRzIG9mIG90aGVyIGludGVnZXIgdHlwZXMKKworI2lmZGVmIF9XSU42NCAvLyBbCisjICBkZWZpbmUgUFRSRElGRl9NSU4gIF9JNjRfTUlOCisjICBkZWZpbmUgUFRSRElGRl9NQVggIF9JNjRfTUFYCisjZWxzZSAgLy8gX1dJTjY0IF1bCisjICBkZWZpbmUgUFRSRElGRl9NSU4gIF9JMzJfTUlOCisjICBkZWZpbmUgUFRSRElGRl9NQVggIF9JMzJfTUFYCisjZW5kaWYgIC8vIF9XSU42NCBdCisKKyNkZWZpbmUgU0lHX0FUT01JQ19NSU4gIElOVF9NSU4KKyNkZWZpbmUgU0lHX0FUT01JQ19NQVggIElOVF9NQVgKKworI2lmbmRlZiBTSVpFX01BWCAvLyBbCisjICBpZmRlZiBfV0lONjQgLy8gWworIyAgICAgZGVmaW5lIFNJWkVfTUFYICBfVUk2NF9NQVgKKyMgIGVsc2UgLy8gX1dJTjY0IF1bCisjICAgICBkZWZpbmUgU0laRV9NQVggIF9VSTMyX01BWAorIyAgZW5kaWYgLy8gX1dJTjY0IF0KKyNlbmRpZiAvLyBTSVpFX01BWCBdCisKKy8vIFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYIGFyZSBhbHNvIGRlZmluZWQgaW4gPHdjaGFyLmg+CisjaWZuZGVmIFdDSEFSX01JTiAvLyBbCisjICBkZWZpbmUgV0NIQVJfTUlOICAwCisjZW5kaWYgIC8vIFdDSEFSX01JTiBdCisjaWZuZGVmIFdDSEFSX01BWCAvLyBbCisjICBkZWZpbmUgV0NIQVJfTUFYICBfVUkxNl9NQVgKKyNlbmRpZiAgLy8gV0NIQVJfTUFYIF0KKworI2RlZmluZSBXSU5UX01JTiAgMAorI2RlZmluZSBXSU5UX01BWCAgX1VJMTZfTUFYCisKKyNlbmRpZiAvLyBfX1NURENfTElNSVRfTUFDUk9TIF0KKworCisvLyA3LjE4LjQgTGltaXRzIG9mIG90aGVyIGludGVnZXIgdHlwZXMKKworI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKF9fU1REQ19DT05TVEFOVF9NQUNST1MpIC8vIFsgICBTZWUgZm9vdG5vdGUgMjI0IGF0IHBhZ2UgMjYwCisKKy8vIDcuMTguNC4xIE1hY3JvcyBmb3IgbWluaW11bS13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cworCisjZGVmaW5lIElOVDhfQyh2YWwpICB2YWwjI2k4CisjZGVmaW5lIElOVDE2X0ModmFsKSB2YWwjI2kxNgorI2RlZmluZSBJTlQzMl9DKHZhbCkgdmFsIyNpMzIKKyNkZWZpbmUgSU5UNjRfQyh2YWwpIHZhbCMjaTY0CisKKyNkZWZpbmUgVUlOVDhfQyh2YWwpICB2YWwjI3VpOAorI2RlZmluZSBVSU5UMTZfQyh2YWwpIHZhbCMjdWkxNgorI2RlZmluZSBVSU5UMzJfQyh2YWwpIHZhbCMjdWkzMgorI2RlZmluZSBVSU5UNjRfQyh2YWwpIHZhbCMjdWk2NAorCisvLyA3LjE4LjQuMiBNYWNyb3MgZm9yIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgY29uc3RhbnRzCisjZGVmaW5lIElOVE1BWF9DICAgSU5UNjRfQworI2RlZmluZSBVSU5UTUFYX0MgIFVJTlQ2NF9DCisKKyNlbmRpZiAvLyBfX1NURENfQ09OU1RBTlRfTUFDUk9TIF0KKworCisjZW5kaWYgLy8gX01TQ19TVERJTlRfSF8gXQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9SRUFETUUudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjZmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL1JFQURNRS50eHQKQEAgLTAsMCArMSwxNSBAQAorCisKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGV4dGVuZGVkIHRlc3RzIGFuZCBhIGJlbmNobWFyayBhZ2FpbnN0IGRlY2ltYWwucHk6CisKKyAgYmVuY2gucHkgIC0+ICBCZW5jaG1hcmsgZm9yIHNtYWxsIGFuZCBsYXJnZSBwcmVjaXNpb25zLgorICBVc2FnZTogLi4vLi4vLi4vcHl0aG9uIGJlbmNoLnB5CisKKyAgZm9ybWF0aGVscGVyLnB5ICAgLT4KKyAgcmFuZGRlYy5weSAgICAgICAgLT4gIEdlbmVyYXRlIHRlc3QgY2FzZXMgZm9yIGRlY2NoZWNrLnB5LgorICByYW5kZmxvYXQucHkgICAgICAtPgorCisgIGRlY2NoZWNrLnB5ICAtPiAgUnVuIGV4dGVuZGVkIHRlc3RzLgorICBVc2FnZTogLi4vLi4vLi4vcHl0aG9uIGRlY2NoZWNrLnB5IFstLXNob3J0fC0tbWVkaXVtfC0tbG9uZ3wtLWFsbF0KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JlbmNoLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iZW5jaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTRhMjEwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iZW5jaC5weQpAQCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIE1vZGlmaWVkIGFuZCBleHRlbmRlZCBieSBTdGVmYW4gS3JhaC4KKyMKKworIyBVc2FnZTogLi4vLi4vLi4vcHl0aG9uIGJlbmNoLnB5CisKKworaW1wb3J0IHRpbWUKK2Zyb20gbWF0aCBpbXBvcnQgbG9nLCBjZWlsCit0cnk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCisKK0MgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQorUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKKworIworIyBOT1RFOiBUaGlzIGlzIHRoZSBwaSBmdW5jdGlvbiBmcm9tIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIG1vZGlmaWVkCisjIGZvciBiZW5jaG1hcmtpbmcgcHVycG9zZXMuIFNpbmNlIGZsb2F0cyBkbyBub3QgaGF2ZSBhIGNvbnRleHQsIHRoZSBoaWdoZXIKKyMgaW50ZXJtZWRpYXRlIHByZWNpc2lvbiBmcm9tIHRoZSBvcmlnaW5hbCBpcyBOT1QgdXNlZCwgc28gdGhlIG1vZGlmaWVkCisjIGFsZ29yaXRobSBvbmx5IGdpdmVzIGFuIGFwcHJveGltYXRpb24gdG8gdGhlIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdC4KKyMgRm9yIHNlcmlvdXMgdXNlLCByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBvciB0aGUgYXBwcm9wcmlhdGUgbGl0ZXJhdHVyZS4KKyMKK2RlZiBwaV9mbG9hdCgpOgorICAgICIiIm5hdGl2ZSBmbG9hdCIiIgorICAgIGxhc3RzLCB0LCBzLCBuLCBuYSwgZCwgZGEgPSAwLCAzLjAsIDMsIDEsIDAsIDAsIDI0CisgICAgd2hpbGUgcyAhPSBsYXN0czoKKyAgICAgICAgbGFzdHMgPSBzCisgICAgICAgIG4sIG5hID0gbituYSwgbmErOAorICAgICAgICBkLCBkYSA9IGQrZGEsIGRhKzMyCisgICAgICAgIHQgPSAodCAqIG4pIC8gZAorICAgICAgICBzICs9IHQKKyAgICByZXR1cm4gcworCitkZWYgcGlfY2RlY2ltYWwoKToKKyAgICAiIiJjZGVjaW1hbCIiIgorICAgIEQgPSBDLkRlY2ltYWwKKyAgICBsYXN0cywgdCwgcywgbiwgbmEsIGQsIGRhID0gRCgwKSwgRCgzKSwgRCgzKSwgRCgxKSwgRCgwKSwgRCgwKSwgRCgyNCkKKyAgICB3aGlsZSBzICE9IGxhc3RzOgorICAgICAgICBsYXN0cyA9IHMKKyAgICAgICAgbiwgbmEgPSBuK25hLCBuYSs4CisgICAgICAgIGQsIGRhID0gZCtkYSwgZGErMzIKKyAgICAgICAgdCA9ICh0ICogbikgLyBkCisgICAgICAgIHMgKz0gdAorICAgIHJldHVybiBzCisKK2RlZiBwaV9kZWNpbWFsKCk6CisgICAgIiIiZGVjaW1hbCIiIgorICAgIEQgPSBQLkRlY2ltYWwKKyAgICBsYXN0cywgdCwgcywgbiwgbmEsIGQsIGRhID0gRCgwKSwgRCgzKSwgRCgzKSwgRCgxKSwgRCgwKSwgRCgwKSwgRCgyNCkKKyAgICB3aGlsZSBzICE9IGxhc3RzOgorICAgICAgICBsYXN0cyA9IHMKKyAgICAgICAgbiwgbmEgPSBuK25hLCBuYSs4CisgICAgICAgIGQsIGRhID0gZCtkYSwgZGErMzIKKyAgICAgICAgdCA9ICh0ICogbikgLyBkCisgICAgICAgIHMgKz0gdAorICAgIHJldHVybiBzCisKK2RlZiBmYWN0b3JpYWwobiwgbSk6CisgICAgaWYgKG4gPiBtKToKKyAgICAgICAgcmV0dXJuIGZhY3RvcmlhbChtLCBuKQorICAgIGVsaWYgbSA9PSAwOgorICAgICAgICByZXR1cm4gMQorICAgIGVsaWYgbiA9PSBtOgorICAgICAgICByZXR1cm4gbgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBmYWN0b3JpYWwobiwgKG4rbSkvLzIpICogZmFjdG9yaWFsKChuK20pLy8yICsgMSwgbSkKKworCitwcmludCgiXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQorcHJpbnQoIiMgICAgICAgICAgICAgICAgICAgQ2FsY3VsYXRpbmcgcGksIDEwMDAwIGl0ZXJhdGlvbnMiKQorcHJpbnQoIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIikKKwordG9fYmVuY2htYXJrID0gW3BpX2Zsb2F0LCBwaV9kZWNpbWFsXQoraWYgQyBpcyBub3QgTm9uZToKKyAgICB0b19iZW5jaG1hcmsuaW5zZXJ0KDEsIHBpX2NkZWNpbWFsKQorCitmb3IgcHJlYyBpbiBbOSwgMTldOgorICAgIHByaW50KCJcblByZWNpc2lvbjogJWQgZGVjaW1hbCBkaWdpdHNcbiIgJSBwcmVjKQorICAgIGZvciBmdW5jIGluIHRvX2JlbmNobWFyazoKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICBpZiBDIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgQy5nZXRjb250ZXh0KCkucHJlYyA9IHByZWMKKyAgICAgICAgUC5nZXRjb250ZXh0KCkucHJlYyA9IHByZWMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgorICAgICAgICAgICAgeCA9IGZ1bmMoKQorICAgICAgICBwcmludCgiJXM6IiAlIGZ1bmMuX19uYW1lX18ucmVwbGFjZSgicGlfIiwgIiIpKQorICAgICAgICBwcmludCgicmVzdWx0OiAlcyIgJSBzdHIoeCkpCisgICAgICAgIHByaW50KCJ0aW1lOiAlZnNcbiIgJSAodGltZS50aW1lKCktc3RhcnQpKQorCisKK3ByaW50KCJcbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCitwcmludCgiIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWN0b3JpYWwiKQorcHJpbnQoIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIikKKworaWYgQyBpcyBub3QgTm9uZToKKyAgICBjID0gQy5nZXRjb250ZXh0KCkKKyAgICBjLnByZWMgPSBDLk1BWF9QUkVDCisgICAgYy5FbWF4ID0gQy5NQVhfRU1BWAorICAgIGMuRW1pbiA9IEMuTUlOX0VNSU4KKworZm9yIG4gaW4gWzEwMDAwMCwgMTAwMDAwMF06CisKKyAgICBwcmludCgibiA9ICVkXG4iICUgbikKKworICAgIGlmIEMgaXMgbm90IE5vbmU6CisgICAgICAgICMgQyB2ZXJzaW9uIG9mIGRlY2ltYWwKKyAgICAgICAgc3RhcnRfY2FsYyA9IHRpbWUudGltZSgpCisgICAgICAgIHggPSBmYWN0b3JpYWwoQy5EZWNpbWFsKG4pLCAwKQorICAgICAgICBlbmRfY2FsYyA9IHRpbWUudGltZSgpCisgICAgICAgIHN0YXJ0X2NvbnYgPSB0aW1lLnRpbWUoKQorICAgICAgICBzeCA9IHN0cih4KQorICAgICAgICBlbmRfY29udiA9IHRpbWUudGltZSgpCisgICAgICAgIHByaW50KCJjZGVjaW1hbDoiKQorICAgICAgICBwcmludCgiY2FsY3VsYXRpb24gdGltZTogJWZzIiAlIChlbmRfY2FsYy1zdGFydF9jYWxjKSkKKyAgICAgICAgcHJpbnQoImNvbnZlcnNpb24gdGltZTogJWZzXG4iICUgKGVuZF9jb252LXN0YXJ0X2NvbnYpKQorCisgICAgIyBQeXRob24gaW50ZWdlcnMKKyAgICBzdGFydF9jYWxjID0gdGltZS50aW1lKCkKKyAgICB5ID0gZmFjdG9yaWFsKG4sIDApCisgICAgZW5kX2NhbGMgPSB0aW1lLnRpbWUoKQorICAgIHN0YXJ0X2NvbnYgPSB0aW1lLnRpbWUoKQorICAgIHN5ID0gc3RyKHkpCisgICAgZW5kX2NvbnYgPSAgdGltZS50aW1lKCkKKworICAgIHByaW50KCJpbnQ6IikKKyAgICBwcmludCgiY2FsY3VsYXRpb24gdGltZTogJWZzIiAlIChlbmRfY2FsYy1zdGFydF9jYWxjKSkKKyAgICBwcmludCgiY29udmVyc2lvbiB0aW1lOiAlZnNcblxuIiAlIChlbmRfY29udi1zdGFydF9jb252KSkKKworICAgIGlmIEMgaXMgbm90IE5vbmU6CisgICAgICAgIGFzc2VydChzeCA9PSBzeSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmlnbnVtLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iaWdudW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY3ZTE2MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmlnbnVtLnB5CkBAIC0wLDAgKzEsNDIgQEAKKyMKKyMgVGhlc2UgdGVzdHMgcmVxdWlyZSBnbXB5IGFuZCB0ZXN0IHRoZSBsaW1pdHMgb2YgdGhlIDMyLWJpdCBidWlsZC4gVGhlCisjIGxpbWl0cyBvZiB0aGUgNjQtYml0IGJ1aWxkIGFyZSBzbyBsYXJnZSB0aGF0IHRoZXkgY2Fubm90IGJlIHRlc3RlZAorIyBvbiBhY2Nlc3NpYmxlIGhhcmR3YXJlLgorIworCitpbXBvcnQgc3lzCitmcm9tIGRlY2ltYWwgaW1wb3J0ICoKK2Zyb20gZ21weSBpbXBvcnQgbXB6CisKKworX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCisjIGhhc2ggdmFsdWVzIHRvIHVzZSBmb3IgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXRpZXMsIGFuZCBuYW5zCitfUHlIQVNIX0lORiA9IHN5cy5oYXNoX2luZm8uaW5mCitfUHlIQVNIX05BTiA9IHN5cy5oYXNoX2luZm8ubmFuCisKKyMgX1B5SEFTSF8xMElOViBpcyB0aGUgaW52ZXJzZSBvZiAxMCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUworX1B5SEFTSF8xMElOViA9IHBvdygxMCwgX1B5SEFTSF9NT0RVTFVTIC0gMiwgX1B5SEFTSF9NT0RVTFVTKQorCitkZWYgeGhhc2goY29lZmYsIGV4cCk6CisgICAgc2lnbiA9IDEKKyAgICBpZiBjb2VmZiA8IDA6CisgICAgICAgIHNpZ24gPSAtMQorICAgICAgICBjb2VmZiA9IC1jb2VmZgorICAgIGlmIGV4cCA+PSAwOgorICAgICAgICBleHBfaGFzaCA9IHBvdygxMCwgZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgZWxzZToKKyAgICAgICAgZXhwX2hhc2ggPSBwb3coX1B5SEFTSF8xMElOViwgLWV4cCwgX1B5SEFTSF9NT0RVTFVTKQorICAgIGhhc2hfID0gY29lZmYgKiBleHBfaGFzaCAlIF9QeUhBU0hfTU9EVUxVUworICAgIGFucyA9IGhhc2hfIGlmIHNpZ24gPT0gMSBlbHNlIC1oYXNoXworICAgIHJldHVybiAtMiBpZiBhbnMgPT0gLTEgZWxzZSBhbnMKKworCit4ID0gbXB6KDEwKSAqKiA0MjUwMDAwMDAgLSAxCitjb2VmZiA9IGludCh4KQorCitkID0gRGVjaW1hbCgnOScgKiA0MjUwMDAwMDAgKyAnZS04NDk5OTk5OTknKQorCitoMSA9IHhoYXNoKGNvZWZmLCAtODQ5OTk5OTk5KQoraDIgPSBoYXNoKGQpCisKK2Fzc2VydCBoMiA9PSBoMQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhkYTRkMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKQEAgLTAsMCArMSwxMDc1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIworIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisjIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisjIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisjCisKKyMKKyMgVXNhZ2U6IHB5dGhvbiBkZWNjaGVjay5weSBbLS1zaG9ydHwtLW1lZGl1bXwtLWxvbmd8LS1hbGxdCisjCisKK2ltcG9ydCBzeXMsIHJhbmRvbQorZnJvbSBjb3B5IGltcG9ydCBjb3B5Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKK2Zyb20gcmFuZGRlYyBpbXBvcnQgcmFuZGZsb2F0LCBhbGxfdW5hcnksIGFsbF9iaW5hcnksIGFsbF90ZXJuYXJ5Citmcm9tIGZvcm1hdGhlbHBlciBpbXBvcnQgcmFuZF9mb3JtYXQsIHJhbmRfbG9jYWxlCisKK0MgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQorUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKK0VYSVRfU1RBVFVTID0gMAorCisKKyMgQ29udGFpbnMgYWxsIGNhdGVnb3JpZXMgb2YgRGVjaW1hbCBtZXRob2RzLgorRnVuY3Rpb25zID0geworICAgICMgUGxhaW4gdW5hcnk6CisgICAgJ3VuYXJ5JzogKAorICAgICAgICAnX19hYnNfXycsICdfX2Jvb2xfXycsICdfX2NlaWxfXycsICdfX2NvbXBsZXhfXycsICdfX2NvcHlfXycsCisgICAgICAgICdfX2Zsb29yX18nLCAnX19mbG9hdF9fJywgJ19faGFzaF9fJywgJ19faW50X18nLCAnX19uZWdfXycsCisgICAgICAgICdfX3Bvc19fJywgJ19fcmVkdWNlX18nLCAnX19yZXByX18nLCAnX19zdHJfXycsICdfX3RydW5jX18nLAorICAgICAgICAnYWRqdXN0ZWQnLCAnYXNfdHVwbGUnLCAnY2Fub25pY2FsJywgJ2Nvbmp1Z2F0ZScsICdjb3B5X2FicycsCisgICAgICAgICdjb3B5X25lZ2F0ZScsICdpc19jYW5vbmljYWwnLCAnaXNfZmluaXRlJywgJ2lzX2luZmluaXRlJywKKyAgICAgICAgJ2lzX25hbicsICdpc19xbmFuJywgJ2lzX3NpZ25lZCcsICdpc19zbmFuJywgJ2lzX3plcm8nLCAncmFkaXgnCisgICAgKSwKKyAgICAjIFVuYXJ5IHdpdGggb3B0aW9uYWwgY29udGV4dDoKKyAgICAndW5hcnlfY3R4JzogKAorICAgICAgICAnZXhwJywgJ2lzX25vcm1hbCcsICdpc19zdWJub3JtYWwnLCAnbG4nLCAnbG9nMTAnLCAnbG9nYicsCisgICAgICAgICdsb2dpY2FsX2ludmVydCcsICduZXh0X21pbnVzJywgJ25leHRfcGx1cycsICdub3JtYWxpemUnLAorICAgICAgICAnbnVtYmVyX2NsYXNzJywgJ3NxcnQnLCAndG9fZW5nX3N0cmluZycKKyAgICApLAorICAgICMgVW5hcnkgd2l0aCBvcHRpb25hbCByb3VuZGluZyBtb2RlIGFuZCBjb250ZXh0OgorICAgICd1bmFyeV9ybmRfY3R4JzogKCd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF9leGFjdCcsICd0b19pbnRlZ3JhbF92YWx1ZScpLAorICAgICMgUGxhaW4gYmluYXJ5OgorICAgICdiaW5hcnknOiAoCisgICAgICAgICdfX2FkZF9fJywgJ19fZGl2bW9kX18nLCAnX19lcV9fJywgJ19fZmxvb3JkaXZfXycsICdfX2dlX18nLCAnX19ndF9fJywKKyAgICAgICAgJ19fbGVfXycsICdfX2x0X18nLCAnX19tb2RfXycsICdfX211bF9fJywgJ19fbmVfXycsICdfX3Bvd19fJywKKyAgICAgICAgJ19fcmFkZF9fJywgJ19fcmRpdm1vZF9fJywgJ19fcmZsb29yZGl2X18nLCAnX19ybW9kX18nLCAnX19ybXVsX18nLAorICAgICAgICAnX19ycG93X18nLCAnX19yc3ViX18nLCAnX19ydHJ1ZWRpdl9fJywgJ19fc3ViX18nLCAnX190cnVlZGl2X18nLAorICAgICAgICAnY29tcGFyZV90b3RhbCcsICdjb21wYXJlX3RvdGFsX21hZycsICdjb3B5X3NpZ24nLCAncXVhbnRpemUnLAorICAgICAgICAnc2FtZV9xdWFudHVtJworICAgICksCisgICAgIyBCaW5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgorICAgICdiaW5hcnlfY3R4JzogKAorICAgICAgICAnY29tcGFyZScsICdjb21wYXJlX3NpZ25hbCcsICdsb2dpY2FsX2FuZCcsICdsb2dpY2FsX29yJywgJ2xvZ2ljYWxfeG9yJywKKyAgICAgICAgJ21heCcsICdtYXhfbWFnJywgJ21pbicsICdtaW5fbWFnJywgJ25leHRfdG93YXJkJywgJ3JlbWFpbmRlcl9uZWFyJywKKyAgICAgICAgJ3JvdGF0ZScsICdzY2FsZWInLCAnc2hpZnQnCisgICAgKSwKKyAgICAjIFBsYWluIHRlcm5hcnk6CisgICAgJ3Rlcm5hcnknOiAoJ19fcG93X18nLCksCisgICAgIyBUZXJuYXJ5IHdpdGggb3B0aW9uYWwgY29udGV4dDoKKyAgICAndGVybmFyeV9jdHgnOiAoJ2ZtYScsKSwKKyAgICAjIFNwZWNpYWw6CisgICAgJ3NwZWNpYWwnOiAoJ19fZm9ybWF0X18nLCAnX19yZWR1Y2VfZXhfXycsICdfX3JvdW5kX18nLCAnZnJvbV9mbG9hdCcsCisgICAgICAgICAgICAgICAgJ3F1YW50aXplJyksCisgICAgIyBQcm9wZXJ0aWVzOgorICAgICdwcm9wZXJ0eSc6ICgncmVhbCcsICdpbWFnJykKK30KKworIyBDb250YWlucyBhbGwgY2F0ZWdvcmllcyBvZiBDb250ZXh0IG1ldGhvZHMuIFRoZSBuLWFyeSBjbGFzc2lmaWNhdGlvbgorIyBhcHBsaWVzIHRvIHRoZSBudW1iZXIgb2YgRGVjaW1hbCBhcmd1bWVudHMuCitDb250ZXh0RnVuY3Rpb25zID0geworICAgICMgUGxhaW4gbnVsbGFyeToKKyAgICAnbnVsbGFyeSc6ICgnY29udGV4dC5fX2hhc2hfXycsICdjb250ZXh0Ll9fcmVkdWNlX18nLCAnY29udGV4dC5yYWRpeCcpLAorICAgICMgUGxhaW4gdW5hcnk6CisgICAgJ3VuYXJ5JzogKCdjb250ZXh0LmFicycsICdjb250ZXh0LmNhbm9uaWNhbCcsICdjb250ZXh0LmNvcHlfYWJzJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuY29weV9kZWNpbWFsJywgJ2NvbnRleHQuY29weV9uZWdhdGUnLAorICAgICAgICAgICAgICAnY29udGV4dC5jcmVhdGVfZGVjaW1hbCcsICdjb250ZXh0LmV4cCcsICdjb250ZXh0LmlzX2Nhbm9uaWNhbCcsCisgICAgICAgICAgICAgICdjb250ZXh0LmlzX2Zpbml0ZScsICdjb250ZXh0LmlzX2luZmluaXRlJywgJ2NvbnRleHQuaXNfbmFuJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuaXNfbm9ybWFsJywgJ2NvbnRleHQuaXNfcW5hbicsICdjb250ZXh0LmlzX3NpZ25lZCcsCisgICAgICAgICAgICAgICdjb250ZXh0LmlzX3NuYW4nLCAnY29udGV4dC5pc19zdWJub3JtYWwnLCAnY29udGV4dC5pc196ZXJvJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQubG4nLCAnY29udGV4dC5sb2cxMCcsICdjb250ZXh0LmxvZ2InLAorICAgICAgICAgICAgICAnY29udGV4dC5sb2dpY2FsX2ludmVydCcsICdjb250ZXh0Lm1pbnVzJywgJ2NvbnRleHQubmV4dF9taW51cycsCisgICAgICAgICAgICAgICdjb250ZXh0Lm5leHRfcGx1cycsICdjb250ZXh0Lm5vcm1hbGl6ZScsICdjb250ZXh0Lm51bWJlcl9jbGFzcycsCisgICAgICAgICAgICAgICdjb250ZXh0LnBsdXMnLCAnY29udGV4dC5zcXJ0JywgJ2NvbnRleHQudG9fZW5nX3N0cmluZycsCisgICAgICAgICAgICAgICdjb250ZXh0LnRvX2ludGVncmFsJywgJ2NvbnRleHQudG9faW50ZWdyYWxfZXhhY3QnLAorICAgICAgICAgICAgICAnY29udGV4dC50b19pbnRlZ3JhbF92YWx1ZScsICdjb250ZXh0LnRvX3NjaV9zdHJpbmcnCisgICAgKSwKKyAgICAjIFBsYWluIGJpbmFyeToKKyAgICAnYmluYXJ5JzogKCdjb250ZXh0LmFkZCcsICdjb250ZXh0LmNvbXBhcmUnLCAnY29udGV4dC5jb21wYXJlX3NpZ25hbCcsCisgICAgICAgICAgICAgICAnY29udGV4dC5jb21wYXJlX3RvdGFsJywgJ2NvbnRleHQuY29tcGFyZV90b3RhbF9tYWcnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQuY29weV9zaWduJywgJ2NvbnRleHQuZGl2aWRlJywgJ2NvbnRleHQuZGl2aWRlX2ludCcsCisgICAgICAgICAgICAgICAnY29udGV4dC5kaXZtb2QnLCAnY29udGV4dC5sb2dpY2FsX2FuZCcsICdjb250ZXh0LmxvZ2ljYWxfb3InLAorICAgICAgICAgICAgICAgJ2NvbnRleHQubG9naWNhbF94b3InLCAnY29udGV4dC5tYXgnLCAnY29udGV4dC5tYXhfbWFnJywKKyAgICAgICAgICAgICAgICdjb250ZXh0Lm1pbicsICdjb250ZXh0Lm1pbl9tYWcnLCAnY29udGV4dC5tdWx0aXBseScsCisgICAgICAgICAgICAgICAnY29udGV4dC5uZXh0X3Rvd2FyZCcsICdjb250ZXh0LnBvd2VyJywgJ2NvbnRleHQucXVhbnRpemUnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQucmVtYWluZGVyJywgJ2NvbnRleHQucmVtYWluZGVyX25lYXInLCAnY29udGV4dC5yb3RhdGUnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQuc2FtZV9xdWFudHVtJywgJ2NvbnRleHQuc2NhbGViJywgJ2NvbnRleHQuc2hpZnQnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQuc3VidHJhY3QnCisgICAgKSwKKyAgICAjIFBsYWluIHRlcm5hcnk6CisgICAgJ3Rlcm5hcnknOiAoJ2NvbnRleHQuZm1hJywgJ2NvbnRleHQucG93ZXInKSwKKyAgICAjIFNwZWNpYWw6CisgICAgJ3NwZWNpYWwnOiAoJ2NvbnRleHQuX19yZWR1Y2VfZXhfXycsICdjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQnKQorfQorCisjIEZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgYSByZXN0cmljdGVkIGV4cG9uZW50IHJhbmdlIGZvciByZWFzb25hYmxlIHJ1bnRpbWVzLgorVW5hcnlSZXN0cmljdGVkID0gWworICAnX19jZWlsX18nLCAnX19mbG9vcl9fJywgJ19faW50X18nLCAnX19sb25nX18nLCAnX190cnVuY19fJywKKyAgJ3RvX2ludGVncmFsJywgJ3RvX2ludGVncmFsX3ZhbHVlJworXQorCitCaW5hcnlSZXN0cmljdGVkID0gWydfX3JvdW5kX18nXQorCitUZXJuYXJ5UmVzdHJpY3RlZCA9IFsnX19wb3dfXycsICdjb250ZXh0LnBvd2VyJ10KKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZmllZCBDb250ZXh0CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUcmFuc2xhdGUgc3ltYm9scy4KK0NvbmRNYXAgPSB7CisgICAgICAgIEMuQ2xhbXBlZDogICAgICAgICAgICAgUC5DbGFtcGVkLAorICAgICAgICBDLkNvbnZlcnNpb25TeW50YXg6ICAgIFAuQ29udmVyc2lvblN5bnRheCwKKyAgICAgICAgQy5EaXZpc2lvbkJ5WmVybzogICAgICBQLkRpdmlzaW9uQnlaZXJvLAorICAgICAgICBDLkRpdmlzaW9uSW1wb3NzaWJsZTogIFAuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgQy5EaXZpc2lvblVuZGVmaW5lZDogICBQLkRpdmlzaW9uVW5kZWZpbmVkLAorICAgICAgICBDLkluZXhhY3Q6ICAgICAgICAgICAgIFAuSW5leGFjdCwKKyAgICAgICAgQy5JbnZhbGlkQ29udGV4dDogICAgICBQLkludmFsaWRDb250ZXh0LAorICAgICAgICBDLkludmFsaWRPcGVyYXRpb246ICAgIFAuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgQy5PdmVyZmxvdzogICAgICAgICAgICBQLk92ZXJmbG93LAorICAgICAgICBDLlJvdW5kZWQ6ICAgICAgICAgICAgIFAuUm91bmRlZCwKKyAgICAgICAgQy5TdWJub3JtYWw6ICAgICAgICAgICBQLlN1Ym5vcm1hbCwKKyAgICAgICAgQy5VbmRlcmZsb3c6ICAgICAgICAgICBQLlVuZGVyZmxvdywKKyAgICAgICAgQy5GbG9hdE9wZXJhdGlvbjogICAgICBQLkZsb2F0T3BlcmF0aW9uLAorfQorCitSb3VuZE1hcCA9IHsKKyAgICAgICAgQy5ST1VORF9VUDogICAgICAgICAgIFAuUk9VTkRfVVAsCisgICAgICAgIEMuUk9VTkRfRE9XTjogICAgICAgICBQLlJPVU5EX0RPV04sCisgICAgICAgIEMuUk9VTkRfQ0VJTElORzogICAgICBQLlJPVU5EX0NFSUxJTkcsCisgICAgICAgIEMuUk9VTkRfRkxPT1I6ICAgICAgICBQLlJPVU5EX0ZMT09SLAorICAgICAgICBDLlJPVU5EX0hBTEZfVVA6ICAgICAgUC5ST1VORF9IQUxGX1VQLAorICAgICAgICBDLlJPVU5EX0hBTEZfRE9XTjogICAgUC5ST1VORF9IQUxGX0RPV04sCisgICAgICAgIEMuUk9VTkRfSEFMRl9FVkVOOiAgICBQLlJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgQy5ST1VORF8wNVVQOiAgICAgICAgIFAuUk9VTkRfMDVVUAorfQorUm91bmRNb2RlcyA9IFJvdW5kTWFwLml0ZW1zKCkKKworCitjbGFzcyBDb250ZXh0KG9iamVjdCk6CisgICAgIiIiUHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSBvZiBzeW5jaW5nIHRoZSBDIGFuZCBQIGNvbnRleHRzIiIiCisKKyAgICBfX3Nsb3RzX18gPSBbJ2MnLCAncCddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY19jdHg9Tm9uZSwgcF9jdHg9Tm9uZSk6CisgICAgICAgICIiIkluaXRpYWxpemF0aW9uIGlzIGZyb20gdGhlIEMgY29udGV4dCIiIgorICAgICAgICBzZWxmLmMgPSBDLmdldGNvbnRleHQoKSBpZiBjX2N0eCBpcyBOb25lIGVsc2UgY19jdHgKKyAgICAgICAgc2VsZi5wID0gUC5nZXRjb250ZXh0KCkgaWYgcF9jdHggaXMgTm9uZSBlbHNlIHBfY3R4CisgICAgICAgIHNlbGYucC5wcmVjID0gc2VsZi5jLnByZWMKKyAgICAgICAgc2VsZi5wLkVtaW4gPSBzZWxmLmMuRW1pbgorICAgICAgICBzZWxmLnAuRW1heCA9IHNlbGYuYy5FbWF4CisgICAgICAgIHNlbGYucC5yb3VuZGluZyA9IFJvdW5kTWFwW3NlbGYuYy5yb3VuZGluZ10KKyAgICAgICAgc2VsZi5wLmNhcGl0YWxzID0gc2VsZi5jLmNhcGl0YWxzCisgICAgICAgIHNlbGYuc2V0dHJhcHMoW3NpZyBmb3Igc2lnIGluIHNlbGYuYy50cmFwcyBpZiBzZWxmLmMudHJhcHNbc2lnXV0pCisgICAgICAgIHNlbGYuc2V0c3RhdHVzKFtzaWcgZm9yIHNpZyBpbiBzZWxmLmMuZmxhZ3MgaWYgc2VsZi5jLmZsYWdzW3NpZ11dKQorICAgICAgICBzZWxmLnAuY2xhbXAgPSBzZWxmLmMuY2xhbXAKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYuYykgKyAnXG4nICsgc3RyKHNlbGYucCkKKworICAgIGRlZiBnZXRwcmVjKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLnByZWMgPT0gc2VsZi5wLnByZWMpCisgICAgICAgIHJldHVybiBzZWxmLmMucHJlYworCisgICAgZGVmIHNldHByZWMoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLnByZWMgPSB2YWwKKyAgICAgICAgc2VsZi5wLnByZWMgPSB2YWwKKworICAgIGRlZiBnZXRlbWluKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLkVtaW4gPT0gc2VsZi5wLkVtaW4pCisgICAgICAgIHJldHVybiBzZWxmLmMuRW1pbgorCisgICAgZGVmIHNldGVtaW4oc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLkVtaW4gPSB2YWwKKyAgICAgICAgc2VsZi5wLkVtaW4gPSB2YWwKKworICAgIGRlZiBnZXRlbWF4KHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLkVtYXggPT0gc2VsZi5wLkVtYXgpCisgICAgICAgIHJldHVybiBzZWxmLmMuRW1heAorCisgICAgZGVmIHNldGVtYXgoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLkVtYXggPSB2YWwKKyAgICAgICAgc2VsZi5wLkVtYXggPSB2YWwKKworICAgIGRlZiBnZXRyb3VuZChzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5yb3VuZGluZyA9PSBSb3VuZE1hcFtzZWxmLnAucm91bmRpbmddKQorICAgICAgICByZXR1cm4gc2VsZi5jLnJvdW5kaW5nCisKKyAgICBkZWYgc2V0cm91bmQoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLnJvdW5kaW5nID0gdmFsCisgICAgICAgIHNlbGYucC5yb3VuZGluZyA9IFJvdW5kTWFwW3ZhbF0KKworICAgIGRlZiBnZXRjYXBpdGFscyhzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5jYXBpdGFscyA9PSBzZWxmLnAuY2FwaXRhbHMpCisgICAgICAgIHJldHVybiBzZWxmLmMuY2FwaXRhbHMKKworICAgIGRlZiBzZXRjYXBpdGFscyhzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMuY2FwaXRhbHMgPSB2YWwKKyAgICAgICAgc2VsZi5wLmNhcGl0YWxzID0gdmFsCisKKyAgICBkZWYgZ2V0Y2xhbXAoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuY2xhbXAgPT0gc2VsZi5wLmNsYW1wKQorICAgICAgICByZXR1cm4gc2VsZi5jLmNsYW1wCisKKyAgICBkZWYgc2V0Y2xhbXAoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLmNsYW1wID0gdmFsCisgICAgICAgIHNlbGYucC5jbGFtcCA9IHZhbAorCisgICAgcHJlYyA9IHByb3BlcnR5KGdldHByZWMsIHNldHByZWMpCisgICAgRW1pbiA9IHByb3BlcnR5KGdldGVtaW4sIHNldGVtaW4pCisgICAgRW1heCA9IHByb3BlcnR5KGdldGVtYXgsIHNldGVtYXgpCisgICAgcm91bmRpbmcgPSBwcm9wZXJ0eShnZXRyb3VuZCwgc2V0cm91bmQpCisgICAgY2xhbXAgPSBwcm9wZXJ0eShnZXRjbGFtcCwgc2V0Y2xhbXApCisgICAgY2FwaXRhbHMgPSBwcm9wZXJ0eShnZXRjYXBpdGFscywgc2V0Y2FwaXRhbHMpCisKKyAgICBkZWYgY2xlYXJfdHJhcHMoc2VsZik6CisgICAgICAgIHNlbGYuYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciB0cmFwIGluIHNlbGYucC50cmFwczoKKyAgICAgICAgICAgIHNlbGYucC50cmFwc1t0cmFwXSA9IEZhbHNlCisKKyAgICBkZWYgY2xlYXJfc3RhdHVzKHNlbGYpOgorICAgICAgICBzZWxmLmMuY2xlYXJfZmxhZ3MoKQorICAgICAgICBzZWxmLnAuY2xlYXJfZmxhZ3MoKQorCisgICAgZGVmIHNldHRyYXBzKHNlbGYsIGxzdCk6CisgICAgICAgICIiImxzdDogQyBzaWduYWwgbGlzdCIiIgorICAgICAgICBzZWxmLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBsc3Q6CisgICAgICAgICAgICBzZWxmLmMudHJhcHNbc2lnbmFsXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucC50cmFwc1tDb25kTWFwW3NpZ25hbF1dID0gVHJ1ZQorCisgICAgZGVmIHNldHN0YXR1cyhzZWxmLCBsc3QpOgorICAgICAgICAiIiJsc3Q6IEMgc2lnbmFsIGxpc3QiIiIKKyAgICAgICAgc2VsZi5jbGVhcl9zdGF0dXMoKQorICAgICAgICBmb3Igc2lnbmFsIGluIGxzdDoKKyAgICAgICAgICAgIHNlbGYuYy5mbGFnc1tzaWduYWxdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5wLmZsYWdzW0NvbmRNYXBbc2lnbmFsXV0gPSBUcnVlCisKKyAgICBkZWYgYXNzZXJ0X2VxX3N0YXR1cyhzZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IGVxdWFsaXR5IG9mIEMgYW5kIFAgc3RhdHVzIiIiCisgICAgICAgIGZvciBzaWduYWwgaW4gc2VsZi5jLmZsYWdzOgorICAgICAgICAgICAgaWYgc2VsZi5jLmZsYWdzW3NpZ25hbF0gPT0gKG5vdCBzZWxmLnAuZmxhZ3NbQ29uZE1hcFtzaWduYWxdXSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKworIyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbnMgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB0aGUgc3RhdHVzIGZsYWdzLgorY29udGV4dCA9IENvbnRleHQoKQorY29udGV4dC5FbWluID0gQy5NSU5fRU1JTgorY29udGV4dC5FbWF4ID0gQy5NQVhfRU1BWAorY29udGV4dC5jbGVhcl90cmFwcygpCisKKyMgV2hlbiBjcmVhdGluZyBkZWNpbWFscywgX2RlY2ltYWwgaXMgdWx0aW1hdGVseSBsaW1pdGVkIGJ5IHRoZSBtYXhpbXVtCisjIGNvbnRleHQgdmFsdWVzLiBXZSBlbXVsYXRlIHRoaXMgcmVzdHJpY3Rpb24gZm9yIGRlY2ltYWwucHkuCittYXhjb250ZXh0ID0gUC5Db250ZXh0KAorICAgIHByZWM9Qy5NQVhfUFJFQywKKyAgICBFbWluPUMuTUlOX0VNSU4sCisgICAgRW1heD1DLk1BWF9FTUFYLAorICAgIHJvdW5kaW5nPVAuUk9VTkRfSEFMRl9VUCwKKyAgICBjYXBpdGFscz0xCispCittYXhjb250ZXh0LmNsYW1wID0gMAorCitkZWYgUmVzdHJpY3RlZERlY2ltYWwodmFsdWUpOgorICAgIG1heGNvbnRleHQudHJhcHMgPSBjb3B5KGNvbnRleHQucC50cmFwcykKKyAgICBtYXhjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwKCkKKyAgICBkZWMgPSBtYXhjb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHZhbHVlKQorICAgIGlmIG1heGNvbnRleHQuZmxhZ3NbUC5JbmV4YWN0XSBvciBcCisgICAgICAgbWF4Y29udGV4dC5mbGFnc1tQLlJvdW5kZWRdIG9yIFwKKyAgICAgICBtYXhjb250ZXh0LmZsYWdzW1AuQ2xhbXBlZF0gb3IgXAorICAgICAgIG1heGNvbnRleHQuZmxhZ3NbUC5JbnZhbGlkT3BlcmF0aW9uXToKKyAgICAgICAgcmV0dXJuIGNvbnRleHQucC5fcmFpc2VfZXJyb3IoUC5JbnZhbGlkT3BlcmF0aW9uKQorICAgIGlmIG1heGNvbnRleHQuZmxhZ3NbUC5GbG9hdE9wZXJhdGlvbl06CisgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLkZsb2F0T3BlcmF0aW9uXSA9IFRydWUKKyAgICByZXR1cm4gZGVjCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgVGVzdFNldDogT3JnYW5pemUgZGF0YSBhbmQgZXZlbnRzIGR1cmluZyBhIHNpbmdsZSB0ZXN0IGNhc2UKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjbGFzcyBSZXN0cmljdGVkTGlzdChsaXN0KToKKyAgICAiIiJMaXN0IHRoYXQgY2FuIG9ubHkgYmUgbW9kaWZpZWQgYnkgYXBwZW5kaW5nIGl0ZW1zLiIiIgorICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lICE9ICdhcHBlbmQnOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoInVuc3VwcG9ydGVkIG9wZXJhdGlvbiIpCisgICAgICAgIHJldHVybiBsaXN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKKyAgICBkZWYgdW5zdXBwb3J0ZWQoc2VsZiwgKl8pOgorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigidW5zdXBwb3J0ZWQgb3BlcmF0aW9uIikKKyAgICBfX2FkZF9fID0gX19kZWxhdHRyX18gPSBfX2RlbGl0ZW1fXyA9IF9faWFkZF9fID0gX19pbXVsX18gPSB1bnN1cHBvcnRlZAorICAgIF9fbXVsX18gPSBfX3JldmVyc2VkX18gPSBfX3JtdWxfXyA9IF9fc2V0YXR0cl9fID0gX19zZXRpdGVtX18gPSB1bnN1cHBvcnRlZAorCitjbGFzcyBUZXN0U2V0KG9iamVjdCk6CisgICAgIiIiQSBUZXN0U2V0IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBpbnB1dCBvcGVyYW5kcywgY29udmVydGVkIG9wZXJhbmRzLAorICAgICAgIFB5dGhvbiBleGNlcHRpb25zIHRoYXQgb2NjdXJyZWQgZWl0aGVyIGR1cmluZyBjb252ZXJzaW9uIG9yIGR1cmluZworICAgICAgIGV4ZWN1dGlvbiBvZiB0aGUgYWN0dWFsIGZ1bmN0aW9uLCBhbmQgdGhlIGZpbmFsIHJlc3VsdHMuCisKKyAgICAgICBGb3Igc2FmZXR5LCBtb3N0IGF0dHJpYnV0ZXMgYXJlIGxpc3RzIHRoYXQgb25seSBzdXBwb3J0IHRoZSBhcHBlbmQKKyAgICAgICBvcGVyYXRpb24uCisKKyAgICAgICBJZiBhIGZ1bmN0aW9uIG5hbWUgaXMgcHJlZml4ZWQgd2l0aCAnY29udGV4dC4nLCB0aGUgY29ycmVzcG9uZGluZworICAgICAgIGNvbnRleHQgbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY25hbWUsIG9wZXJhbmRzKToKKyAgICAgICAgaWYgZnVuY25hbWUuc3RhcnRzd2l0aCgiY29udGV4dC4iKToKKyAgICAgICAgICAgIHNlbGYuZnVuY25hbWUgPSBmdW5jbmFtZS5yZXBsYWNlKCJjb250ZXh0LiIsICIiKQorICAgICAgICAgICAgc2VsZi5jb250ZXh0ZnVuYyA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZnVuY25hbWUgPSBmdW5jbmFtZQorICAgICAgICAgICAgc2VsZi5jb250ZXh0ZnVuYyA9IEZhbHNlCisgICAgICAgIHNlbGYub3AgPSBvcGVyYW5kcyAgICAgICAgICAgICAgICMgcmF3IG9wZXJhbmQgdHVwbGUKKyAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dCAgICAgICAgICAgIyBjb250ZXh0IHVzZWQgZm9yIHRoZSBvcGVyYXRpb24KKyAgICAgICAgc2VsZi5jb3AgPSBSZXN0cmljdGVkTGlzdCgpICAgICAgIyBjb252ZXJ0ZWQgQy5EZWNpbWFsIG9wZXJhbmRzCisgICAgICAgIHNlbGYuY2V4ID0gUmVzdHJpY3RlZExpc3QoKSAgICAgICMgUHl0aG9uIGV4Y2VwdGlvbnMgZm9yIEMuRGVjaW1hbAorICAgICAgICBzZWxmLmNyZXN1bHRzID0gUmVzdHJpY3RlZExpc3QoKSAjIEMuRGVjaW1hbCByZXN1bHRzCisgICAgICAgIHNlbGYucG9wID0gUmVzdHJpY3RlZExpc3QoKSAgICAgICMgY29udmVydGVkIFAuRGVjaW1hbCBvcGVyYW5kcworICAgICAgICBzZWxmLnBleCA9IFJlc3RyaWN0ZWRMaXN0KCkgICAgICAjIFB5dGhvbiBleGNlcHRpb25zIGZvciBQLkRlY2ltYWwKKyAgICAgICAgc2VsZi5wcmVzdWx0cyA9IFJlc3RyaWN0ZWRMaXN0KCkgIyBQLkRlY2ltYWwgcmVzdWx0cworCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICBTa2lwSGFuZGxlcjogc2tpcCBrbm93biBkaXNjcmVwYW5jaWVzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgU2tpcEhhbmRsZXI6CisgICAgIiIiSGFuZGxlIGtub3duIGRpc2NyZXBhbmNpZXMgYmV0d2VlbiBkZWNpbWFsLnB5IGFuZCBfZGVjaW1hbC5zby4KKyAgICAgICBUaGVzZSBhcmUgZWl0aGVyIFVMUCBkaWZmZXJlbmNlcyBpbiB0aGUgcG93ZXIgZnVuY3Rpb24gb3IKKyAgICAgICBleHRyZW1lbHkgbWlub3IgaXNzdWVzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnVscGRpZmYgPSAwCisgICAgICAgIHNlbGYucG93bW9kX3plcm9zID0gMAorICAgICAgICBzZWxmLm1heGN0eCA9IFAuQ29udGV4dChFbWF4PTEwKioxOCwgRW1pbj0tMTAqKjE4KQorCisgICAgZGVmIGRlZmF1bHQoc2VsZiwgdCk6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIF9fZ2VfXyA9ICBfX2d0X18gPSBfX2xlX18gPSBfX2x0X18gPSBfX25lX18gPSBfX2VxX18gPSBkZWZhdWx0CisgICAgX19yZWR1Y2VfXyA9IF9fZm9ybWF0X18gPSBfX3JlcHJfXyA9IF9fc3RyX18gPSBkZWZhdWx0CisKKyAgICBkZWYgaGFycmlzb25fdWxwKHNlbGYsIGRlYyk6CisgICAgICAgICIiImZ0cDovL2Z0cC5pbnJpYS5mci9JTlJJQS9wdWJsaWNhdGlvbi9wdWJsaS1wZGYvUlIvUlItNTUwNC5wZGYiIiIKKyAgICAgICAgYSA9IGRlYy5uZXh0X3BsdXMoKQorICAgICAgICBiID0gZGVjLm5leHRfbWludXMoKQorICAgICAgICByZXR1cm4gYWJzKGEgLSBiKQorCisgICAgZGVmIHN0YW5kYXJkX3VscChzZWxmLCBkZWMsIHByZWMpOgorICAgICAgICByZXR1cm4gUC5fZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgZGVjLl9leHArbGVuKGRlYy5faW50KS1wcmVjKQorCisgICAgZGVmIHJvdW5kaW5nX2RpcmVjdGlvbihzZWxmLCB4LCBtb2RlKToKKyAgICAgICAgIiIiRGV0ZXJtaW5lIHRoZSBlZmZlY3RpdmUgZGlyZWN0aW9uIG9mIHRoZSByb3VuZGluZyB3aGVuCisgICAgICAgICAgIHRoZSBleGFjdCByZXN1bHQgeCBpcyByb3VuZGVkIGFjY29yZGluZyB0byBtb2RlLgorICAgICAgICAgICBSZXR1cm4gLTEgZm9yIGRvd253YXJkcywgMCBmb3IgdW5kaXJlY3RlZCwgMSBmb3IgdXB3YXJkcywKKyAgICAgICAgICAgMiBmb3IgUk9VTkRfMDVVUC4iIiIKKyAgICAgICAgY21wID0gMSBpZiB4LmNvbXBhcmVfdG90YWwoUC5EZWNpbWFsKCIrMCIpKSA+PSAwIGVsc2UgLTEKKworICAgICAgICBpZiBtb2RlIGluIChQLlJPVU5EX0hBTEZfRVZFTiwgUC5ST1VORF9IQUxGX1VQLCBQLlJPVU5EX0hBTEZfRE9XTik6CisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF9DRUlMSU5HOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfRkxPT1I6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfVVA6CisgICAgICAgICAgICByZXR1cm4gY21wCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EX0RPV046CisgICAgICAgICAgICByZXR1cm4gLWNtcAorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF8wNVVQOgorICAgICAgICAgICAgcmV0dXJuIDIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgcm91bmRpbmcgbW9kZTogJXMiICUgbW9kZSkKKworICAgIGRlZiBjaGVja191bHBkaWZmKHNlbGYsIGV4YWN0LCByb3VuZGVkKToKKyAgICAgICAgIyBjdXJyZW50IHByZWNpc2lvbgorICAgICAgICBwID0gY29udGV4dC5wLnByZWMKKworICAgICAgICAjIENvbnZlcnQgaW5maW5pdGllcyB0byB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciArIDEuCisgICAgICAgIHggPSBleGFjdAorICAgICAgICBpZiBleGFjdC5pc19pbmZpbml0ZSgpOgorICAgICAgICAgICAgeCA9IFAuX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgIHkgPSByb3VuZGVkCisgICAgICAgIGlmIHJvdW5kZWQuaXNfaW5maW5pdGUoKToKKyAgICAgICAgICAgIHkgPSBQLl9kZWNfZnJvbV90cmlwbGUocm91bmRlZC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisKKyAgICAgICAgIyBlcnIgPSAocm91bmRlZCAtIGV4YWN0KSAvIHVscChyb3VuZGVkKQorICAgICAgICBzZWxmLm1heGN0eC5wcmVjID0gcCAqIDIKKyAgICAgICAgdCA9IHNlbGYubWF4Y3R4LnN1YnRyYWN0KHksIHgpCisgICAgICAgIGlmIGNvbnRleHQuYy5mbGFnc1tDLkNsYW1wZWRdIG9yIFwKKyAgICAgICAgICAgY29udGV4dC5jLmZsYWdzW0MuVW5kZXJmbG93XToKKyAgICAgICAgICAgICMgVGhlIHN0YW5kYXJkIHVscCBkb2VzIG5vdCB3b3JrIGluIFVuZGVyZmxvdyB0ZXJyaXRvcnkuCisgICAgICAgICAgICB1bHAgPSBzZWxmLmhhcnJpc29uX3VscCh5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdWxwID0gc2VsZi5zdGFuZGFyZF91bHAoeSwgcCkKKyAgICAgICAgIyBFcnJvciBpbiB1bHBzLgorICAgICAgICBlcnIgPSBzZWxmLm1heGN0eC5kaXZpZGUodCwgdWxwKQorCisgICAgICAgIGRpciA9IHNlbGYucm91bmRpbmdfZGlyZWN0aW9uKHgsIGNvbnRleHQucC5yb3VuZGluZykKKyAgICAgICAgaWYgZGlyID09IDA6CisgICAgICAgICAgICBpZiBQLkRlY2ltYWwoIi0wLjYiKSA8IGVyciA8IFAuRGVjaW1hbCgiMC42Iik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxpZiBkaXIgPT0gMTogIyBkaXJlY3RlZCwgdXB3YXJkcworICAgICAgICAgICAgaWYgUC5EZWNpbWFsKCItMC4xIikgPCBlcnIgPCBQLkRlY2ltYWwoIjEuMSIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsaWYgZGlyID09IC0xOiAjIGRpcmVjdGVkLCBkb3dud2FyZHMKKyAgICAgICAgICAgIGlmIFAuRGVjaW1hbCgiLTEuMSIpIDwgZXJyIDwgUC5EZWNpbWFsKCIwLjEiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOiAjIFJPVU5EXzA1VVAKKyAgICAgICAgICAgIGlmIFAuRGVjaW1hbCgiLTEuMSIpIDwgZXJyIDwgUC5EZWNpbWFsKCIxLjEiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHByaW50KCJ1bHA6ICVzICBlcnJvcjogJXMgIGV4YWN0OiAlcyAgY19yb3VuZGVkOiAlcyIKKyAgICAgICAgICAgICAgJSAodWxwLCBlcnIsIGV4YWN0LCByb3VuZGVkKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgYmluX3Jlc29sdmVfdWxwKHNlbGYsIHQpOgorICAgICAgICAiIiJDaGVjayBpZiByZXN1bHRzIG9mIF9kZWNpbWFsJ3MgcG93ZXIgZnVuY3Rpb24gYXJlIHdpdGhpbiB0aGUKKyAgICAgICAgICAgYWxsb3dlZCB1bHAgcmFuZ2VzLiIiIgorICAgICAgICAjIE5hTnMgYXJlIGJleW9uZCByZXBhaXIuCisgICAgICAgIGlmIHQucmMuaXNfbmFuKCkgb3IgdC5ycC5pc19uYW4oKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgImV4YWN0IiByZXN1bHQsIGRvdWJsZSBwcmVjaXNpb24sIGhhbGZfZXZlbgorICAgICAgICBzZWxmLm1heGN0eC5wcmVjID0gY29udGV4dC5wLnByZWMgKiAyCisKKyAgICAgICAgb3AxLCBvcDIgPSB0LnBvcFswXSwgdC5wb3BbMV0KKyAgICAgICAgaWYgdC5jb250ZXh0ZnVuYzoKKyAgICAgICAgICAgIGV4YWN0ID0gZ2V0YXR0cihzZWxmLm1heGN0eCwgdC5mdW5jbmFtZSkob3AxLCBvcDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGFjdCA9IGdldGF0dHIob3AxLCB0LmZ1bmNuYW1lKShvcDIsIGNvbnRleHQ9c2VsZi5tYXhjdHgpCisKKyAgICAgICAgIyBfZGVjaW1hbCdzIHJvdW5kZWQgcmVzdWx0CisgICAgICAgIHJvdW5kZWQgPSBQLkRlY2ltYWwodC5jcmVzdWx0c1swXSkKKworICAgICAgICBzZWxmLnVscGRpZmYgKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5jaGVja191bHBkaWZmKGV4YWN0LCByb3VuZGVkKQorCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDb3JyZWN0IHJvdW5kaW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHJlc29sdmVfdW5kZXJmbG93KHNlbGYsIHQpOgorICAgICAgICAiIiJJbiBleHRyZW1lbHkgcmFyZSBjYXNlcyB3aGVyZSB0aGUgaW5maW5pdGUgcHJlY2lzaW9uIHJlc3VsdCBpcyBqdXN0CisgICAgICAgICAgIGJlbG93IGV0aW55LCBjZGVjaW1hbCBkb2VzIG5vdCBzZXQgU3Vibm9ybWFsL1VuZGVyZmxvdy4gRXhhbXBsZToKKworICAgICAgICAgICBzZXRjb250ZXh0KENvbnRleHQocHJlYz0yMSwgcm91bmRpbmc9Uk9VTkRfVVAsIEVtaW49LTU1LCBFbWF4PTg1KSkKKyAgICAgICAgICAgRGVjaW1hbCgiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIKKyAgICAgICAgICAgICAgICAgICAiMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIKKyAgICAgICAgICAgICAgICAgICAiMDAwMDAwMDAwMDAwMDAyNSIpLmxuKCkKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHQuY3Jlc3VsdHMgIT0gdC5wcmVzdWx0czoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSAjIFJlc3VsdHMgbXVzdCBiZSBpZGVudGljYWwuCisgICAgICAgIGlmIGNvbnRleHQuYy5mbGFnc1tDLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQuYy5mbGFnc1tDLkluZXhhY3RdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLkluZXhhY3RdOgorICAgICAgICAgICAgcmV0dXJuIFRydWUgIyBTdWJub3JtYWwvVW5kZXJmbG93IG1heSBiZSBtaXNzaW5nLgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBleHAoc2VsZiwgdCk6CisgICAgICAgICIiIlJlc29sdmUgVW5kZXJmbG93IG9yIFVMUCBkaWZmZXJlbmNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZXNvbHZlX3VuZGVyZmxvdyh0KQorCisgICAgZGVmIGxvZzEwKHNlbGYsIHQpOgorICAgICAgICAiIiJSZXNvbHZlIFVuZGVyZmxvdyBvciBVTFAgZGlmZmVyZW5jZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVzb2x2ZV91bmRlcmZsb3codCkKKworICAgIGRlZiBsbihzZWxmLCB0KToKKyAgICAgICAgIiIiUmVzb2x2ZSBVbmRlcmZsb3cgb3IgVUxQIGRpZmZlcmVuY2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlc29sdmVfdW5kZXJmbG93KHQpCisKKyAgICBkZWYgX19wb3dfXyhzZWxmLCB0KToKKyAgICAgICAgIiIiQWx3YXlzIGNhbGxzIHRoZSByZXNvbHZlIGZ1bmN0aW9uLiBDLkRlY2ltYWwgZG9lcyBub3QgaGF2ZSBjb3JyZWN0CisgICAgICAgICAgIHJvdW5kaW5nIGZvciB0aGUgcG93ZXIgZnVuY3Rpb24uIiIiCisgICAgICAgIGlmIGNvbnRleHQuYy5mbGFnc1tDLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQuYy5mbGFnc1tDLkluZXhhY3RdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLkluZXhhY3RdOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuYmluX3Jlc29sdmVfdWxwKHQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBwb3dlciA9IF9fcnBvd19fID0gX19wb3dfXworCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFRlY2huaWNhbGl0aWVzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIF9fZmxvYXRfXyhzZWxmLCB0KToKKyAgICAgICAgIiIiTmFOIGNvbXBhcmlzb24gaW4gdGhlIHZlcmlmeSgpIGZ1bmN0aW9uIG9idmlvdXNseSBnaXZlcyBhbgorICAgICAgICAgICBpbmNvcnJlY3QgYW5zd2VyOiAgbmFuID09IG5hbiAtPiBGYWxzZSIiIgorICAgICAgICBpZiB0LmNvcFswXS5pc19uYW4oKSBhbmQgdC5wb3BbMF0uaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBfX2NvbXBsZXhfXyA9IF9fZmxvYXRfXworCisgICAgZGVmIF9fcmFkZF9fKHNlbGYsIHQpOgorICAgICAgICAiIiJkZWNpbWFsLnB5IGdpdmVzIHByZWNlZGVuY2UgdG8gdGhlIGZpcnN0IE5hTjsgdGhpcyBpcworICAgICAgICAgICBub3QgaW1wb3J0YW50LCBhcyBfX3JhZGRfXyB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yCisgICAgICAgICAgIHR3byBkZWNpbWFsIGFyZ3VtZW50cy4iIiIKKyAgICAgICAgaWYgdC5yYy5pc19uYW4oKSBhbmQgdC5ycC5pc19uYW4oKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIF9fcm11bF9fID0gX19yYWRkX18KKworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFZhcmlvdXMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiBfX3JvdW5kX18oc2VsZiwgdCk6CisgICAgICAgICIiIkV4Y2VwdGlvbjogRGVjaW1hbCgnMScpLl9fcm91bmRfXygtMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwKQorICAgICAgICAgICBTaG91bGQgaXQgcmVhbGx5IGJlIEludmFsaWRPcGVyYXRpb24/IiIiCisgICAgICAgIGlmIHQucmMgaXMgTm9uZSBhbmQgdC5ycC5pc19uYW4oKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCitzaGFuZGxlciA9IFNraXBIYW5kbGVyKCkKK2RlZiBza2lwX2Vycm9yKHQpOgorICAgIHJldHVybiBnZXRhdHRyKHNoYW5kbGVyLCB0LmZ1bmNuYW1lLCBzaGFuZGxlci5kZWZhdWx0KSh0KQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICBIYW5kbGluZyB2ZXJpZmljYXRpb24gZXJyb3JzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgVmVyaWZ5RXJyb3IoRXhjZXB0aW9uKToKKyAgICAiIiJWZXJpZmljYXRpb24gZmFpbGVkLiIiIgorICAgIHBhc3MKKworZGVmIGZ1bmN0aW9uX2FzX3N0cmluZyh0KToKKyAgICBpZiB0LmNvbnRleHRmdW5jOgorICAgICAgICBjYXJncyA9IHQuY29wCisgICAgICAgIHBhcmdzID0gdC5wb3AKKyAgICAgICAgY2Z1bmMgPSAiY19mdW5jOiAlcygiICUgdC5mdW5jbmFtZQorICAgICAgICBwZnVuYyA9ICJwX2Z1bmM6ICVzKCIgJSB0LmZ1bmNuYW1lCisgICAgZWxzZToKKyAgICAgICAgY3NlbGYsIGNhcmdzID0gdC5jb3BbMF0sIHQuY29wWzE6XQorICAgICAgICBwc2VsZiwgcGFyZ3MgPSB0LnBvcFswXSwgdC5wb3BbMTpdCisgICAgICAgIGNmdW5jID0gImNfZnVuYzogJXMuJXMoIiAlIChyZXByKGNzZWxmKSwgdC5mdW5jbmFtZSkKKyAgICAgICAgcGZ1bmMgPSAicF9mdW5jOiAlcy4lcygiICUgKHJlcHIocHNlbGYpLCB0LmZ1bmNuYW1lKQorCisgICAgZXJyID0gY2Z1bmMKKyAgICBmb3IgYXJnIGluIGNhcmdzOgorICAgICAgICBlcnIgKz0gIiVzLCAiICUgcmVwcihhcmcpCisgICAgZXJyID0gZXJyLnJzdHJpcCgiLCAiKQorICAgIGVyciArPSAiKVxuIgorCisgICAgZXJyICs9IHBmdW5jCisgICAgZm9yIGFyZyBpbiBwYXJnczoKKyAgICAgICAgZXJyICs9ICIlcywgIiAlIHJlcHIoYXJnKQorICAgIGVyciA9IGVyci5yc3RyaXAoIiwgIikKKyAgICBlcnIgKz0gIikiCisKKyAgICByZXR1cm4gZXJyCisKK2RlZiByYWlzZV9lcnJvcih0KToKKyAgICBnbG9iYWwgRVhJVF9TVEFUVVMKKworICAgIGlmIHNraXBfZXJyb3IodCk6CisgICAgICAgIHJldHVybgorICAgIEVYSVRfU1RBVFVTID0gMQorCisgICAgZXJyID0gIkVycm9yIGluICVzOlxuXG4iICUgdC5mdW5jbmFtZQorICAgIGVyciArPSAiaW5wdXQgb3BlcmFuZHM6ICVzXG5cbiIgJSAodC5vcCwpCisgICAgZXJyICs9IGZ1bmN0aW9uX2FzX3N0cmluZyh0KQorICAgIGVyciArPSAiXG5cbmNfcmVzdWx0OiAlc1xucF9yZXN1bHQ6ICVzXG5cbiIgJSAodC5jcmVzdWx0cywgdC5wcmVzdWx0cykKKyAgICBlcnIgKz0gImNfZXhjZXB0aW9uczogJXNcbnBfZXhjZXB0aW9uczogJXNcblxuIiAlICh0LmNleCwgdC5wZXgpCisgICAgZXJyICs9ICIlc1xuXG4iICUgc3RyKHQuY29udGV4dCkKKworICAgIHJhaXNlIFZlcmlmeUVycm9yKGVycikKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICBNYWluIHRlc3RpbmcgZnVuY3Rpb25zCisjCisjICBUaGUgcHJvY2VkdXJlIGlzIGFsd2F5cyAodCBpcyB0aGUgVGVzdFNldCk6CisjCisjICAgY29udmVydCh0KSAtPiBJbml0aWFsaXplIHRoZSBUZXN0U2V0IGFzIG5lY2Vzc2FyeS4KKyMKKyMgICAgICAgICAgICAgICAgIFJldHVybiAwIGZvciBlYXJseSBhYm9ydGlvbiAoZS5nLiBpZiBhIFR5cGVFcnJvcgorIyAgICAgICAgICAgICAgICAgb2NjdXJzIGR1cmluZyBjb252ZXJzaW9uLCB0aGVyZSBpcyBub3RoaW5nIHRvIHRlc3QpLgorIworIyAgICAgICAgICAgICAgICAgUmV0dXJuIDEgZm9yIGNvbnRpbnVpbmcgd2l0aCB0aGUgdGVzdCBjYXNlLgorIworIyAgIGNhbGxmdW5jcyh0KSAtPiBDYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbiBmb3IgZWFjaCBpbXBsZW1lbnRhdGlvbgorIyAgICAgICAgICAgICAgICAgICBhbmQgcmVjb3JkIHRoZSByZXN1bHRzIGluIHRoZSBUZXN0U2V0LgorIworIyAgIHZlcmlmeSh0KSAtPiBWZXJpZnkgdGhlIHJlc3VsdHMuIElmIHZlcmlmaWNhdGlvbiBmYWlscywgZGV0YWlscworIyAgICAgICAgICAgICAgICBhcmUgcHJpbnRlZCB0byBzdGRvdXQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIGNvbnZlcnQodCwgY29udnN0cj1UcnVlKToKKyAgICAiIiIgdCBpcyB0aGUgdGVzdHNldC4gQXQgdGhpcyBzdGFnZSB0aGUgdGVzdHNldCBjb250YWlucyBhIHR1cGxlIG9mCisgICAgICAgIG9wZXJhbmRzIHQub3Agb2YgdmFyaW91cyB0eXBlcy4gRm9yIGRlY2ltYWwgbWV0aG9kcyB0aGUgZmlyc3QKKyAgICAgICAgb3BlcmFuZCAoc2VsZikgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBEZWNpbWFsLiBJZiAnY29udnN0cicgaXMKKyAgICAgICAgdHJ1ZSwgc3RyaW5nIG9wZXJhbmRzIGFyZSBjb252ZXJ0ZWQgYXMgd2VsbC4KKworICAgICAgICBDb250ZXh0IG9wZXJhbmRzIGFyZSBvZiB0eXBlIGRlY2NoZWNrLkNvbnRleHQsIHJvdW5kaW5nIG1vZGUKKyAgICAgICAgb3BlcmFuZHMgYXJlIGdpdmVuIGFzIGEgdHVwbGUgKEMucm91bmRpbmcsIFAucm91bmRpbmcpLgorCisgICAgICAgIE90aGVyIHR5cGVzIChmbG9hdCwgaW50LCBldGMuKSBhcmUgbGVmdCB1bmNoYW5nZWQuCisgICAgIiIiCisgICAgZm9yIGksIG9wIGluIGVudW1lcmF0ZSh0Lm9wKToKKworICAgICAgICBjb250ZXh0LmNsZWFyX3N0YXR1cygpCisKKyAgICAgICAgaWYgbm90IHQuY29udGV4dGZ1bmMgYW5kIGkgPT0gMCBvciBcCisgICAgICAgICAgIGNvbnZzdHIgYW5kIGlzaW5zdGFuY2Uob3AsIHN0cik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYyA9IEMuRGVjaW1hbChvcCkKKyAgICAgICAgICAgICAgICBjZXggPSBOb25lCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBjID0gTm9uZQorICAgICAgICAgICAgICAgIGNleCA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwID0gUmVzdHJpY3RlZERlY2ltYWwob3ApCisgICAgICAgICAgICAgICAgcGV4ID0gTm9uZQorICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgcCA9IE5vbmUKKyAgICAgICAgICAgICAgICBwZXggPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICB0LmNvcC5hcHBlbmQoYykKKyAgICAgICAgICAgIHQuY2V4LmFwcGVuZChjZXgpCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQocCkKKyAgICAgICAgICAgIHQucGV4LmFwcGVuZChwZXgpCisKKyAgICAgICAgICAgIGlmIGNleCBpcyBwZXg6CisgICAgICAgICAgICAgICAgaWYgc3RyKGMpICE9IHN0cihwKSBvciBub3QgY29udGV4dC5hc3NlcnRfZXFfc3RhdHVzKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKHQpCisgICAgICAgICAgICAgICAgaWYgY2V4IGFuZCBwZXg6CisgICAgICAgICAgICAgICAgICAgICMgbm90aGluZyB0byB0ZXN0CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKHQpCisKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9wLCBDb250ZXh0KToKKyAgICAgICAgICAgIHQuY29udGV4dCA9IG9wCisgICAgICAgICAgICB0LmNvcC5hcHBlbmQob3AuYykKKyAgICAgICAgICAgIHQucG9wLmFwcGVuZChvcC5wKQorCisgICAgICAgIGVsaWYgb3AgaW4gUm91bmRNb2RlczoKKyAgICAgICAgICAgIHQuY29wLmFwcGVuZChvcFswXSkKKyAgICAgICAgICAgIHQucG9wLmFwcGVuZChvcFsxXSkKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdC5jb3AuYXBwZW5kKG9wKQorICAgICAgICAgICAgdC5wb3AuYXBwZW5kKG9wKQorCisgICAgcmV0dXJuIDEKKworZGVmIGNhbGxmdW5jcyh0KToKKyAgICAiIiIgdCBpcyB0aGUgdGVzdHNldC4gQXQgdGhpcyBzdGFnZSB0aGUgdGVzdHNldCBjb250YWlucyBvcGVyYW5kIGxpc3RzCisgICAgICAgIHQuY29wIGFuZCB0LnBvcCBmb3IgdGhlIEMgYW5kIFB5dGhvbiB2ZXJzaW9ucyBvZiBkZWNpbWFsLgorICAgICAgICBGb3IgRGVjaW1hbCBtZXRob2RzLCB0aGUgZmlyc3Qgb3BlcmFuZHMgYXJlIG9mIHR5cGUgQy5EZWNpbWFsIGFuZAorICAgICAgICBQLkRlY2ltYWwgcmVzcGVjdGl2ZWx5LiBUaGUgcmVtYWluaW5nIG9wZXJhbmRzIGNhbiBoYXZlIHZhcmlvdXMgdHlwZXMuCisgICAgICAgIEZvciBDb250ZXh0IG1ldGhvZHMsIGFsbCBvcGVyYW5kcyBjYW4gaGF2ZSBhbnkgdHlwZS4KKworICAgICAgICB0LnJjIGFuZCB0LnJwIGFyZSB0aGUgcmVzdWx0cyBvZiB0aGUgb3BlcmF0aW9uLgorICAgICIiIgorICAgIGNvbnRleHQuY2xlYXJfc3RhdHVzKCkKKworICAgIHRyeToKKyAgICAgICAgaWYgdC5jb250ZXh0ZnVuYzoKKyAgICAgICAgICAgIGNhcmdzID0gdC5jb3AKKyAgICAgICAgICAgIHQucmMgPSBnZXRhdHRyKGNvbnRleHQuYywgdC5mdW5jbmFtZSkoKmNhcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY3NlbGYgPSB0LmNvcFswXQorICAgICAgICAgICAgY2FyZ3MgPSB0LmNvcFsxOl0KKyAgICAgICAgICAgIHQucmMgPSBnZXRhdHRyKGNzZWxmLCB0LmZ1bmNuYW1lKSgqY2FyZ3MpCisgICAgICAgIHQuY2V4LmFwcGVuZChOb25lKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBNZW1vcnlFcnJvcikgYXMgZToKKyAgICAgICAgdC5yYyA9IE5vbmUKKyAgICAgICAgdC5jZXguYXBwZW5kKGUuX19jbGFzc19fKQorCisgICAgdHJ5OgorICAgICAgICBpZiB0LmNvbnRleHRmdW5jOgorICAgICAgICAgICAgcGFyZ3MgPSB0LnBvcAorICAgICAgICAgICAgdC5ycCA9IGdldGF0dHIoY29udGV4dC5wLCB0LmZ1bmNuYW1lKSgqcGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwc2VsZiA9IHQucG9wWzBdCisgICAgICAgICAgICBwYXJncyA9IHQucG9wWzE6XQorICAgICAgICAgICAgdC5ycCA9IGdldGF0dHIocHNlbGYsIHQuZnVuY25hbWUpKCpwYXJncykKKyAgICAgICAgdC5wZXguYXBwZW5kKE5vbmUpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIE1lbW9yeUVycm9yKSBhcyBlOgorICAgICAgICB0LnJwID0gTm9uZQorICAgICAgICB0LnBleC5hcHBlbmQoZS5fX2NsYXNzX18pCisKK2RlZiB2ZXJpZnkodCwgc3RhdCk6CisgICAgIiIiIHQgaXMgdGhlIHRlc3RzZXQuIEF0IHRoaXMgc3RhZ2UgdGhlIHRlc3RzZXQgY29udGFpbnMgdGhlIGZvbGxvd2luZworICAgICAgICB0dXBsZXM6CisKKyAgICAgICAgICAgIHQub3A6IG9yaWdpbmFsIG9wZXJhbmRzCisgICAgICAgICAgICB0LmNvcDogQy5EZWNpbWFsIG9wZXJhbmRzIChzZWUgY29udmVydCBmb3IgZGV0YWlscykKKyAgICAgICAgICAgIHQucG9wOiBQLkRlY2ltYWwgb3BlcmFuZHMgKHNlZSBjb252ZXJ0IGZvciBkZXRhaWxzKQorICAgICAgICAgICAgdC5yYzogQyByZXN1bHQKKyAgICAgICAgICAgIHQucnA6IFB5dGhvbiByZXN1bHQKKworICAgICAgICB0LnJjIGFuZCB0LnJwIGNhbiBoYXZlIHZhcmlvdXMgdHlwZXMuCisgICAgIiIiCisgICAgdC5jcmVzdWx0cy5hcHBlbmQoc3RyKHQucmMpKQorICAgIHQucHJlc3VsdHMuYXBwZW5kKHN0cih0LnJwKSkKKyAgICBpZiBpc2luc3RhbmNlKHQucmMsIEMuRGVjaW1hbCkgYW5kIGlzaW5zdGFuY2UodC5ycCwgUC5EZWNpbWFsKToKKyAgICAgICAgIyBHZW5lcmFsIGNhc2U6IGJvdGggcmVzdWx0cyBhcmUgRGVjaW1hbHMuCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHQucmMudG9fZW5nX3N0cmluZygpKQorICAgICAgICB0LmNyZXN1bHRzLmFwcGVuZCh0LnJjLmFzX3R1cGxlKCkpCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHN0cih0LnJjLmltYWcpKQorICAgICAgICB0LmNyZXN1bHRzLmFwcGVuZChzdHIodC5yYy5yZWFsKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQodC5ycC50b19lbmdfc3RyaW5nKCkpCisgICAgICAgIHQucHJlc3VsdHMuYXBwZW5kKHQucnAuYXNfdHVwbGUoKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQoc3RyKHQucnAuaW1hZykpCisgICAgICAgIHQucHJlc3VsdHMuYXBwZW5kKHN0cih0LnJwLnJlYWwpKQorCisgICAgICAgIG5jID0gdC5yYy5udW1iZXJfY2xhc3MoKS5sc3RyaXAoJystcycpCisgICAgICAgIHN0YXRbbmNdICs9IDEKKyAgICBlbHNlOgorICAgICAgICAjIFJlc3VsdHMgZnJvbSBlLmcuIF9fZGl2bW9kX18gY2FuIG9ubHkgYmUgY29tcGFyZWQgYXMgc3RyaW5ncy4KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodC5yYywgdHVwbGUpIGFuZCBub3QgaXNpbnN0YW5jZSh0LnJwLCB0dXBsZSk6CisgICAgICAgICAgICBpZiB0LnJjICE9IHQucnA6CisgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IodCkKKyAgICAgICAgc3RhdFt0eXBlKHQucmMpLl9fbmFtZV9fXSArPSAxCisKKyAgICAjIFRoZSByZXR1cm4gdmFsdWUgbGlzdHMgbXVzdCBiZSBlcXVhbC4KKyAgICBpZiB0LmNyZXN1bHRzICE9IHQucHJlc3VsdHM6CisgICAgICAgIHJhaXNlX2Vycm9yKHQpCisgICAgIyBUaGUgUHl0aG9uIGV4Y2VwdGlvbiBsaXN0cyAoVHlwZUVycm9yLCBldGMuKSBtdXN0IGJlIGVxdWFsLgorICAgIGlmIHQuY2V4ICE9IHQucGV4OgorICAgICAgICByYWlzZV9lcnJvcih0KQorICAgICMgVGhlIGNvbnRleHQgZmxhZ3MgbXVzdCBiZSBlcXVhbC4KKyAgICBpZiBub3QgdC5jb250ZXh0LmFzc2VydF9lcV9zdGF0dXMoKToKKyAgICAgICAgcmFpc2VfZXJyb3IodCkKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluIHRlc3QgbG9vcHMKKyMKKyMgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0ZnVuYykgLT4KKyMKKyMgICAgIExvb3AgdGhyb3VnaCB2YXJpb3VzIGNvbnRleHQgc2V0dGluZ3MuIFRoZSBkZWdyZWUgb2YKKyMgICAgIHRob3JvdWdobmVzcyBpcyBkZXRlcm1pbmVkIGJ5ICd0ZXN0c3BlYycuIEZvciBlYWNoCisjICAgICBzZXR0aW5nLCBjYWxsICd0ZXN0ZnVuYycuIEdlbmVyYWxseSwgJ3Rlc3RmdW5jJyBpdHNlbGYKKyMgICAgIGEgbG9vcCwgaXRlcmF0aW5nIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzIGdlbmVyYXRlZAorIyAgICAgYnkgdGhlIGZ1bmN0aW9ucyBpbiByYW5kZGVjLnB5LgorIworIyAgdGVzdF9uLWFyeShtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KSAtPgorIworIyAgICAgJ3Rlc3RfdW5hcnknLCAndGVzdF9iaW5hcnknIGFuZCAndGVzdF90ZXJuYXJ5JyBhcmUgdGhlCisjICAgICBtYWluIHRlc3QgZnVuY3Rpb25zIHBhc3NlZCB0byAndGVzdF9tZXRob2QnLiBUaGV5IGRlYWwKKyMgICAgIHdpdGggdGhlIHJlZ3VsYXIgY2FzZXMuIFRoZSB0aG9yb3VnaG5lc3Mgb2YgdGVzdGluZyBpcworIyAgICAgZGV0ZXJtaW5lZCBieSAnaXRyJy4KKyMKKyMgICAgICdwcmVjJywgJ2V4cF9yYW5nZScgYW5kICdyZXN0cmljdGVkX3JhbmdlJyBhcmUgcGFzc2VkCisjICAgICB0byB0aGUgdGVzdC1nZW5lcmF0aW5nIGZ1bmN0aW9ucyBhbmQgbGltaXQgdGhlIGdlbmVyYXRlZAorIyAgICAgdmFsdWVzLiBJbiBzb21lIGNhc2VzLCBmb3IgcmVhc29uYWJsZSBydW4gdGltZXMgYQorIyAgICAgbWF4aW11bSBleHBvbmVudCBvZiA5OTk5IGlzIHJlcXVpcmVkLgorIworIyAgICAgVGhlICdzdGF0JyBwYXJhbWV0ZXIgaXMgcGFzc2VkIGRvd24gdG8gdGhlICd2ZXJpZnknCisjICAgICBmdW5jdGlvbiwgd2hpY2ggcmVjb3JkcyBzdGF0aXN0aWNzIGZvciB0aGUgcmVzdWx0IHZhbHVlcy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgbG9nKGZtdCwgYXJncz1Ob25lKToKKyAgICBpZiBhcmdzOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcnLmpvaW4oKGZtdCwgJ1xuJykpICUgYXJncykKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcnLmpvaW4oKHN0cihmbXQpLCAnXG4nKSkpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKK2RlZiB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdGZ1bmMpOgorICAgICIiIkl0ZXJhdGUgYSB0ZXN0IGZ1bmN0aW9uIHRocm91Z2ggbWFueSBjb250ZXh0IHNldHRpbmdzLiIiIgorICAgIGxvZygidGVzdGluZyAlcyAuLi4iLCBtZXRob2QpCisgICAgc3RhdCA9IGRlZmF1bHRkaWN0KGludCkKKyAgICBmb3Igc3BlYyBpbiB0ZXN0c3BlY3M6CisgICAgICAgIGlmICdzYW1wbGVzJyBpbiBzcGVjOgorICAgICAgICAgICAgc3BlY1sncHJlYyddID0gc29ydGVkKHJhbmRvbS5zYW1wbGUocmFuZ2UoMSwgMTAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjWydzYW1wbGVzJ10pKQorICAgICAgICBmb3IgcHJlYyBpbiBzcGVjWydwcmVjJ106CisgICAgICAgICAgICBjb250ZXh0LnByZWMgPSBwcmVjCisgICAgICAgICAgICBmb3IgZXhwdHMgaW4gc3BlY1snZXhwdHMnXToKKyAgICAgICAgICAgICAgICBlbWluLCBlbWF4ID0gZXhwdHMKKyAgICAgICAgICAgICAgICBpZiBlbWluID09ICdyYW5kJzoKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWluID0gcmFuZG9tLnJhbmRyYW5nZSgtMTAwMCwgMCkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWF4ID0gcmFuZG9tLnJhbmRyYW5nZShwcmVjLCAxMDAwKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1pbiwgY29udGV4dC5FbWF4ID0gZW1pbiwgZW1heAorICAgICAgICAgICAgICAgIGlmIHByZWMgPiBjb250ZXh0LkVtYXg6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgbG9nKCIgICAgcHJlYzogJWQgIGVtaW46ICVkICBlbWF4OiAlZCIsCisgICAgICAgICAgICAgICAgICAgIChjb250ZXh0LnByZWMsIGNvbnRleHQuRW1pbiwgY29udGV4dC5FbWF4KSkKKyAgICAgICAgICAgICAgICByZXN0cl9yYW5nZSA9IDk5OTkgaWYgY29udGV4dC5FbWF4ID4gOTk5OSBlbHNlIGNvbnRleHQuRW1heCs5OQorICAgICAgICAgICAgICAgIGZvciByb3VuZGluZyBpbiBzb3J0ZWQoUm91bmRNYXApOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jYXBpdGFscyA9IHJhbmRvbS5yYW5kcmFuZ2UoMikKKyAgICAgICAgICAgICAgICAgICAgaWYgc3BlY1snY2xhbXAnXSA9PSAncmFuZCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNsYW1wID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jbGFtcCA9IHNwZWNbJ2NsYW1wJ10KKyAgICAgICAgICAgICAgICAgICAgZXhwcmFuZ2UgPSBjb250ZXh0LmMuRW1heAorICAgICAgICAgICAgICAgICAgICB0ZXN0ZnVuYyhtZXRob2QsIHByZWMsIGV4cHJhbmdlLCByZXN0cl9yYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY1snaXRlciddLCBzdGF0KQorICAgIGxvZygiICAgIHJlc3VsdCB0eXBlczogJXMiICUgc29ydGVkKFt0IGZvciB0IGluIHN0YXQuaXRlbXMoKV0pKQorCitkZWYgdGVzdF91bmFyeShtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIGEgdW5hcnkgZnVuY3Rpb24gdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgaWYgbWV0aG9kIGluIFVuYXJ5UmVzdHJpY3RlZDoKKyAgICAgICAgZXhwX3JhbmdlID0gcmVzdHJpY3RlZF9yYW5nZQorICAgIGZvciBvcCBpbiBhbGxfdW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiB0ZXN0X2JpbmFyeShtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIGEgYmluYXJ5IGZ1bmN0aW9uIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGlmIG1ldGhvZCBpbiBCaW5hcnlSZXN0cmljdGVkOgorICAgICAgICBleHBfcmFuZ2UgPSByZXN0cmljdGVkX3JhbmdlCisgICAgZm9yIG9wIGluIGFsbF9iaW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiB0ZXN0X3Rlcm5hcnkobWV0aG9kLCBwcmVjLCBleHBfcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSBhIHRlcm5hcnkgZnVuY3Rpb24gdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgaWYgbWV0aG9kIGluIFRlcm5hcnlSZXN0cmljdGVkOgorICAgICAgICBleHBfcmFuZ2UgPSByZXN0cmljdGVkX3JhbmdlCisgICAgZm9yIG9wIGluIGFsbF90ZXJuYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9mb3JtYXQobWV0aG9kLCBwcmVjLCBleHBfcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSB0aGUgX19mb3JtYXRfXyBtZXRob2QgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIGZtdDEgPSByYW5kX2Zvcm1hdChjaHIocmFuZG9tLnJhbmRyYW5nZSgzMiwgMTI4KSksICdFZUdnbicpCisgICAgICAgIGZtdDIgPSByYW5kX2xvY2FsZSgpCisgICAgICAgIGZvciBmbXQgaW4gKGZtdDEsIGZtdDIpOgorICAgICAgICAgICAgZm10b3AgPSAob3BbMF0sIGZtdCkKKyAgICAgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgZm10b3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCwgY29udnN0cj1GYWxzZSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGxvZyhlcnIpCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCA5OTk5LCBpdHIpOgorICAgICAgICBmbXQxID0gcmFuZF9mb3JtYXQoY2hyKHJhbmRvbS5yYW5kcmFuZ2UoMzIsIDEyOCkpLCAnRmYlJykKKyAgICAgICAgZm10MiA9IHJhbmRfbG9jYWxlKCkKKyAgICAgICAgZm9yIGZtdCBpbiAoZm10MSwgZm10Mik6CisgICAgICAgICAgICBmbXRvcCA9IChvcFswXSwgZm10KQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBmbXRvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0LCBjb252c3RyPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3Rfcm91bmQobWV0aG9kLCBwcmVjLCBleHByYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSBfX3JvdW5kX18gbWV0aG9kIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGZvciBvcCBpbiBhbGxfdW5hcnkocHJlYywgOTk5OSwgaXRyKToKKyAgICAgICAgbiA9IHJhbmRvbS5yYW5kcmFuZ2UoMTApCisgICAgICAgIHJvdW5kb3AgPSAob3BbMF0sIG4pCisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgcm91bmRvcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9mcm9tX2Zsb2F0KG1ldGhvZCwgcHJlYywgZXhwcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSB0aGUgX19mbG9hdF9fIG1ldGhvZCB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBmb3Igcm91bmRpbmcgaW4gc29ydGVkKFJvdW5kTWFwKToKKyAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgZiA9IHJhbmRmbG9hdCgpCisgICAgICAgICAgICBvcCA9IChmLCkgaWYgbWV0aG9kLnN0YXJ0c3dpdGgoImNvbnRleHQuIikgZWxzZSAoInNOYU4iLCBmKQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHJhbmRjb250ZXh0KGV4cHJhbmdlKToKKyAgICBjID0gQ29udGV4dChDLkNvbnRleHQoKSwgUC5Db250ZXh0KCkpCisgICAgYy5FbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgxLCBleHByYW5nZSsxKQorICAgIGMuRW1pbiA9IHJhbmRvbS5yYW5kcmFuZ2UoLWV4cHJhbmdlLCAwKQorICAgIG1heHByZWMgPSAxMDAgaWYgYy5FbWF4ID49IDEwMCBlbHNlIGMuRW1heAorICAgIGMucHJlYyA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgbWF4cHJlYysxKQorICAgIGMuY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisgICAgYy5jbGVhcl90cmFwcygpCisgICAgcmV0dXJuIGMKKworZGVmIHRlc3RfcXVhbnRpemVfYXBpKG1ldGhvZCwgcHJlYywgZXhwcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSB0aGUgJ3F1YW50aXplJyBtZXRob2QgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMsIHVzaW5nCisgICAgICAgdGhlIG9wdGlvbmFsIGFyZ3VtZW50cy4iIiIKKyAgICBmb3Igb3AgaW4gYWxsX2JpbmFyeShwcmVjLCByZXN0cmljdGVkX3JhbmdlLCBpdHIpOgorICAgICAgICBmb3Igcm91bmRpbmcgaW4gUm91bmRNb2RlczoKKyAgICAgICAgICAgIGMgPSByYW5kY29udGV4dChleHByYW5nZSkKKyAgICAgICAgICAgIHF1YW50aXplb3AgPSAob3BbMF0sIG9wWzFdLCByb3VuZGluZywgYykKKyAgICAgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgcXVhbnRpemVvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworCitkZWYgY2hlY2tfdW50ZXN0ZWQoZnVuY2RpY3QsIGNfY2xzLCBwX2Nscyk6CisgICAgIiIiRGV0ZXJtaW5lIHVudGVzdGVkLCBDLW9ubHkgYW5kIFB5dGhvbi1vbmx5IGF0dHJpYnV0ZXMuCisgICAgICAgVW5jb21tZW50IHByaW50IGxpbmVzIGZvciBkZWJ1Z2dpbmcuIiIiCisgICAgY19hdHRyID0gc2V0KGRpcihjX2NscykpCisgICAgcF9hdHRyID0gc2V0KGRpcihwX2NscykpCisgICAgaW50ZXJzZWN0ID0gY19hdHRyICYgcF9hdHRyCisKKyAgICBmdW5jZGljdFsnY19vbmx5J10gPSB0dXBsZShzb3J0ZWQoY19hdHRyLWludGVyc2VjdCkpCisgICAgZnVuY2RpY3RbJ3Bfb25seSddID0gdHVwbGUoc29ydGVkKHBfYXR0ci1pbnRlcnNlY3QpKQorCisgICAgdGVzdGVkID0gc2V0KCkKKyAgICBmb3IgbHN0IGluIGZ1bmNkaWN0LnZhbHVlcygpOgorICAgICAgICBmb3IgdiBpbiBsc3Q6CisgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCJjb250ZXh0LiIsICIiKSBpZiBjX2NscyA9PSBDLkNvbnRleHQgZWxzZSB2CisgICAgICAgICAgICB0ZXN0ZWQuYWRkKHYpCisKKyAgICBmdW5jZGljdFsndW50ZXN0ZWQnXSA9IHR1cGxlKHNvcnRlZChpbnRlcnNlY3QtdGVzdGVkKSkKKworICAgICNmb3Iga2V5IGluICgndW50ZXN0ZWQnLCAnY19vbmx5JywgJ3Bfb25seScpOgorICAgICMgICAgcyA9ICdDb250ZXh0JyBpZiBjX2NscyA9PSBDLkNvbnRleHQgZWxzZSAnRGVjaW1hbCcKKyAgICAjICAgIHByaW50KCJcbiVzICVzOlxuJXMiICUgKHMsIGtleSwgZnVuY2RpY3Rba2V5XSkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKworICAgIGltcG9ydCB0aW1lCisKKyAgICByYW5kc2VlZCA9IGludCh0aW1lLnRpbWUoKSkKKyAgICByYW5kb20uc2VlZChyYW5kc2VlZCkKKworICAgICMgU2V0IHVwIHRoZSB0ZXN0c3BlY3MgbGlzdC4gQSB0ZXN0c3BlYyBpcyBzaW1wbHkgYSBkaWN0aW9uYXJ5CisgICAgIyB0aGF0IGRldGVybWluZXMgdGhlIGFtb3VudCBvZiBkaWZmZXJlbnQgY29udGV4dHMgdGhhdCAndGVzdF9tZXRob2QnCisgICAgIyB3aWxsIGdlbmVyYXRlLgorICAgIGJhc2VfZXhwdHMgPSBbKEMuTUlOX0VNSU4sIEMuTUFYX0VNQVgpXQorICAgIGlmIEMuTUFYX0VNQVggPT0gOTk5OTk5OTk5OTk5OTk5OTk5OgorICAgICAgICBiYXNlX2V4cHRzLmFwcGVuZCgoLTk5OTk5OTk5OSwgOTk5OTk5OTk5KSkKKworICAgICMgQmFzaWMgY29udGV4dHMuCisgICAgYmFzZSA9IHsKKyAgICAgICAgJ2V4cHRzJzogYmFzZV9leHB0cywKKyAgICAgICAgJ3ByZWMnOiBbXSwKKyAgICAgICAgJ2NsYW1wJzogJ3JhbmQnLAorICAgICAgICAnaXRlcic6IE5vbmUsCisgICAgICAgICdzYW1wbGVzJzogTm9uZSwKKyAgICB9CisgICAgIyBDb250ZXh0cyB3aXRoIHNtYWxsIHZhbHVlcyBmb3IgcHJlYywgZW1pbiwgZW1heC4KKyAgICBzbWFsbCA9IHsKKyAgICAgICAgJ3ByZWMnOiBbMSwgMiwgMywgNCwgNV0sCisgICAgICAgICdleHB0cyc6IFsoLTEsIDEpLCAoLTIsIDIpLCAoLTMsIDMpLCAoLTQsIDQpLCAoLTUsIDUpXSwKKyAgICAgICAgJ2NsYW1wJzogJ3JhbmQnLAorICAgICAgICAnaXRlcic6IE5vbmUKKyAgICB9CisgICAgIyBJRUVFIGludGVyY2hhbmdlIGZvcm1hdC4KKyAgICBpZWVlID0gWworICAgICAgICAjIERFQ0lNQUwzMgorICAgICAgICB7J3ByZWMnOiBbN10sICdleHB0cyc6IFsoLTk1LCA5NildLCAnY2xhbXAnOiAxLCAnaXRlcic6IE5vbmV9LAorICAgICAgICAjIERFQ0lNQUw2NAorICAgICAgICB7J3ByZWMnOiBbMTZdLCAnZXhwdHMnOiBbKC0zODMsIDM4NCldLCAnY2xhbXAnOiAxLCAnaXRlcic6IE5vbmV9LAorICAgICAgICAjIERFQ0lNQUwxMjgKKyAgICAgICAgeydwcmVjJzogWzM0XSwgJ2V4cHRzJzogWygtNjE0MywgNjE0NCldLCAnY2xhbXAnOiAxLCAnaXRlcic6IE5vbmV9CisgICAgXQorCisgICAgaWYgJy0tbWVkaXVtJyBpbiBzeXMuYXJndjoKKyAgICAgICAgYmFzZVsnZXhwdHMnXS5hcHBlbmQoKCdyYW5kJywgJ3JhbmQnKSkKKyAgICAgICAgIyA1IHJhbmRvbSBwcmVjaXNpb25zCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDUKKyAgICAgICAgdGVzdHNwZWNzID0gW3NtYWxsXSArIGllZWUgKyBbYmFzZV0KKyAgICBpZiAnLS1sb25nJyBpbiBzeXMuYXJndjoKKyAgICAgICAgYmFzZVsnZXhwdHMnXS5hcHBlbmQoKCdyYW5kJywgJ3JhbmQnKSkKKyAgICAgICAgIyAxMCByYW5kb20gcHJlY2lzaW9ucworICAgICAgICBiYXNlWydzYW1wbGVzJ10gPSAxMAorICAgICAgICB0ZXN0c3BlY3MgPSBbc21hbGxdICsgaWVlZSArIFtiYXNlXQorICAgIGVsaWYgJy0tYWxsJyBpbiBzeXMuYXJndjoKKyAgICAgICAgYmFzZVsnZXhwdHMnXS5hcHBlbmQoKCdyYW5kJywgJ3JhbmQnKSkKKyAgICAgICAgIyBBbGwgcHJlY2lzaW9ucyBpbiBbMSwgMTAwXQorICAgICAgICBiYXNlWydzYW1wbGVzJ10gPSAxMDAKKyAgICAgICAgdGVzdHNwZWNzID0gW3NtYWxsXSArIGllZWUgKyBbYmFzZV0KKyAgICBlbHNlOiAjIC0tc2hvcnQKKyAgICAgICAgcmFuZF9pZWVlID0gcmFuZG9tLmNob2ljZShpZWVlKQorICAgICAgICBiYXNlWydpdGVyJ10gPSBzbWFsbFsnaXRlciddID0gcmFuZF9pZWVlWydpdGVyJ10gPSAxCisgICAgICAgICMgMSByYW5kb20gcHJlY2lzaW9uIGFuZCBleHBvbmVudCBwYWlyCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDEKKyAgICAgICAgYmFzZVsnZXhwdHMnXSA9IFtyYW5kb20uY2hvaWNlKGJhc2VfZXhwdHMpXQorICAgICAgICAjIDEgcmFuZG9tIHByZWNpc2lvbiBhbmQgZXhwb25lbnQgcGFpcgorICAgICAgICBwcmVjID0gcmFuZG9tLnJhbmRyYW5nZSgxLCA2KQorICAgICAgICBzbWFsbFsncHJlYyddID0gW3ByZWNdCisgICAgICAgIHNtYWxsWydleHB0cyddID0gWygtcHJlYywgcHJlYyldCisgICAgICAgIHRlc3RzcGVjcyA9IFtzbWFsbCwgcmFuZF9pZWVlLCBiYXNlXQorCisgICAgY2hlY2tfdW50ZXN0ZWQoRnVuY3Rpb25zLCBDLkRlY2ltYWwsIFAuRGVjaW1hbCkKKyAgICBjaGVja191bnRlc3RlZChDb250ZXh0RnVuY3Rpb25zLCBDLkNvbnRleHQsIFAuQ29udGV4dCkKKworCisgICAgbG9nKCJcblxuUmFuZG9tIHNlZWQ6ICVkXG5cbiIsIHJhbmRzZWVkKQorCisgICAgIyBEZWNpbWFsIG1ldGhvZHM6CisgICAgZm9yIG1ldGhvZCBpbiBGdW5jdGlvbnNbJ3VuYXJ5J10gKyBGdW5jdGlvbnNbJ3VuYXJ5X2N0eCddICsgXAorICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zWyd1bmFyeV9ybmRfY3R4J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3VuYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBGdW5jdGlvbnNbJ2JpbmFyeSddICsgRnVuY3Rpb25zWydiaW5hcnlfY3R4J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X2JpbmFyeSkKKworICAgIGZvciBtZXRob2QgaW4gRnVuY3Rpb25zWyd0ZXJuYXJ5J10gKyBGdW5jdGlvbnNbJ3Rlcm5hcnlfY3R4J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3Rlcm5hcnkpCisKKyAgICB0ZXN0X21ldGhvZCgnX19mb3JtYXRfXycsIHRlc3RzcGVjcywgdGVzdF9mb3JtYXQpCisgICAgdGVzdF9tZXRob2QoJ19fcm91bmRfXycsIHRlc3RzcGVjcywgdGVzdF9yb3VuZCkKKyAgICB0ZXN0X21ldGhvZCgnZnJvbV9mbG9hdCcsIHRlc3RzcGVjcywgdGVzdF9mcm9tX2Zsb2F0KQorICAgIHRlc3RfbWV0aG9kKCdxdWFudGl6ZScsIHRlc3RzcGVjcywgdGVzdF9xdWFudGl6ZV9hcGkpCisKKyAgICAjIENvbnRleHQgbWV0aG9kczoKKyAgICBmb3IgbWV0aG9kIGluIENvbnRleHRGdW5jdGlvbnNbJ3VuYXJ5J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3VuYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBDb250ZXh0RnVuY3Rpb25zWydiaW5hcnknXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfYmluYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBDb250ZXh0RnVuY3Rpb25zWyd0ZXJuYXJ5J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3Rlcm5hcnkpCisKKyAgICB0ZXN0X21ldGhvZCgnY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0JywgdGVzdHNwZWNzLCB0ZXN0X2Zyb21fZmxvYXQpCisKKworICAgIHN5cy5leGl0KEVYSVRfU1RBVFVTKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9mb3JtYXRoZWxwZXIucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2Zvcm1hdGhlbHBlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGEyYjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9mb3JtYXRoZWxwZXIucHkKQEAgLTAsMCArMSwzNDQgQEAKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIworIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorIworCisKKyMgR2VuZXJhdGUgUEVQLTMxMDEgZm9ybWF0IHN0cmluZ3MuCisKKworaW1wb3J0IG9zLCBzeXMsIGxvY2FsZSwgcmFuZG9tCitpbXBvcnQgcGxhdGZvcm0sIHN1YnByb2Nlc3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCitmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCisKK0MgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQorUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKKworCit3aW5kb3dzX2xhbmdfc3RyaW5ncyA9IFsKKyAgImNoaW5lc2UiLCAiY2hpbmVzZS1zaW1wbGlmaWVkIiwgImNoaW5lc2UtdHJhZGl0aW9uYWwiLCAiY3plY2giLCAiZGFuaXNoIiwKKyAgImR1dGNoIiwgImJlbGdpYW4iLCAiZW5nbGlzaCIsICJhdXN0cmFsaWFuIiwgImNhbmFkaWFuIiwgImVuZ2xpc2gtbnoiLAorICAiZW5nbGlzaC11ayIsICJlbmdsaXNoLXVzIiwgImZpbm5pc2giLCAiZnJlbmNoIiwgImZyZW5jaC1iZWxnaWFuIiwKKyAgImZyZW5jaC1jYW5hZGlhbiIsICJmcmVuY2gtc3dpc3MiLCAiZ2VybWFuIiwgImdlcm1hbi1hdXN0cmlhbiIsCisgICJnZXJtYW4tc3dpc3MiLCAiZ3JlZWsiLCAiaHVuZ2FyaWFuIiwgImljZWxhbmRpYyIsICJpdGFsaWFuIiwgIml0YWxpYW4tc3dpc3MiLAorICAiamFwYW5lc2UiLCAia29yZWFuIiwgIm5vcndlZ2lhbiIsICJub3J3ZWdpYW4tYm9rbWFsIiwgIm5vcndlZ2lhbi1ueW5vcnNrIiwKKyAgInBvbGlzaCIsICJwb3J0dWd1ZXNlIiwgInBvcnR1Z3Vlc2UtYnJhemlsIiwgInJ1c3NpYW4iLCAic2xvdmFrIiwgInNwYW5pc2giLAorICAic3BhbmlzaC1tZXhpY2FuIiwgInNwYW5pc2gtbW9kZXJuIiwgInN3ZWRpc2giLCAidHVya2lzaCIsCitdCisKK3ByZWZlcnJlZF9lbmNvZGluZyA9IHsKKyAgJ2NzX0NaJzogJ0lTTzg4NTktMicsCisgICdjc19DWi5pc284ODU5Mic6ICdJU084ODU5LTInLAorICAnY3plY2gnOiAnSVNPODg1OS0yJywKKyAgJ2Vlc3RpJzogJ0lTTzg4NTktMScsCisgICdlc3Rvbmlhbic6ICdJU084ODU5LTEnLAorICAnZXRfRUUnOiAnSVNPODg1OS0xNScsCisgICdldF9FRS5JU08tODg1OS0xNSc6ICdJU084ODU5LTE1JywKKyAgJ2V0X0VFLmlzbzg4NTkxNSc6ICdJU084ODU5LTE1JywKKyAgJ2V0X0VFLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdmaV9GSS5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnZmlfRkknOiAnSVNPODg1OS0xNScsCisgICdmaV9GSUBldXJvJzogJ0lTTzg4NTktMTUnLAorICAnZmlfRkkuaXNvODg1OTE1QGV1cm8nOiAnSVNPODg1OS0xNScsCisgICdmaW5uaXNoJzogJ0lTTzg4NTktMScsCisgICdsdl9MVic6ICdJU084ODU5LTEzJywKKyAgJ2x2X0xWLmlzbzg4NTkxMyc6ICdJU084ODU5LTEzJywKKyAgJ25iX05PJzogJ0lTTzg4NTktMScsCisgICduYl9OTy5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnYm9rbWFsJzogJ0lTTzg4NTktMScsCisgICdubl9OTyc6ICdJU084ODU5LTEnLAorICAnbm5fTk8uaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ25vX05PJzogJ0lTTzg4NTktMScsCisgICdub3J3ZWdpYW4nOiAnSVNPODg1OS0xJywKKyAgJ255bm9yc2snOiAnSVNPODg1OS0xJywKKyAgJ3J1X1JVJzogJ0lTTzg4NTktNScsCisgICdydV9SVS5pc284ODU5NSc6ICdJU084ODU5LTUnLAorICAncnVzc2lhbic6ICdJU084ODU5LTUnLAorICAncnVfUlUuS09JOC1SJzogJ0tPSTgtUicsCisgICdydV9SVS5rb2k4cic6ICdLT0k4LVInLAorICAncnVfUlUuQ1AxMjUxJzogJ0NQMTI1MScsCisgICdydV9SVS5jcDEyNTEnOiAnQ1AxMjUxJywKKyAgJ3NrX1NLJzogJ0lTTzg4NTktMicsCisgICdza19TSy5pc284ODU5Mic6ICdJU084ODU5LTInLAorICAnc2xvdmFrJzogJ0lTTzg4NTktMicsCisgICdzdl9GSSc6ICdJU084ODU5LTEnLAorICAnc3ZfRkkuaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ3N2X0ZJQGV1cm8nOiAnSVNPODg1OS0xNScsCisgICdzdl9GSS5pc284ODU5MTVAZXVybyc6ICdJU084ODU5LTE1JywKKyAgJ3VrX1VBJzogJ0tPSTgtVScsCisgICd1a19VQS5rb2k4dSc6ICdLT0k4LVUnCit9CisKK2ludGVnZXJzID0gWworICAiIiwKKyAgIjEiLAorICAiMTIiLAorICAiMTIzIiwKKyAgIjEyMzQiLAorICAiMTIzNDUiLAorICAiMTIzNDU2IiwKKyAgIjEyMzQ1NjciLAorICAiMTIzNDU2NzgiLAorICAiMTIzNDU2Nzg5IiwKKyAgIjEyMzQ1Njc4OTAiLAorICAiMTIzNDU2Nzg5MDEiLAorICAiMTIzNDU2Nzg5MDEyIiwKKyAgIjEyMzQ1Njc4OTAxMjMiLAorICAiMTIzNDU2Nzg5MDEyMzQiLAorICAiMTIzNDU2Nzg5MDEyMzQ1IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTYiLAorICAiMTIzNDU2Nzg5MDEyMzQ1NjciLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxIiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIiLAorXQorCitudW1iZXJzID0gWworICAiMCIsICItMCIsICIrMCIsCisgICIwLjAiLCAiLTAuMCIsICIrMC4wIiwKKyAgIjBlMCIsICItMGUwIiwgIiswZTAiLAorICAiLjAiLCAiLS4wIiwKKyAgIi4xIiwgIi0uMSIsCisgICIxLjEiLCAiLTEuMSIsCisgICIxZTEiLCAiLTFlMSIKK10KKworIyBHZXQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGxvY2FsZXMuCitpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnV2luZG93cyc6CisgICAgbG9jYWxlX2xpc3QgPSB3aW5kb3dzX2xhbmdfc3RyaW5ncworZWxzZToKKyAgICBsb2NhbGVfbGlzdCA9IFsnQyddCisgICAgaWYgb3MucGF0aC5pc2ZpbGUoIi92YXIvbGliL2xvY2FsZXMvc3VwcG9ydGVkLmQvbG9jYWwiKToKKyAgICAgICAgIyBPbiBVYnVudHUsIGBsb2NhbGUgLWFgIGdpdmVzIHRoZSB3cm9uZyBjYXNlIGZvciBzb21lIGxvY2FsZXMsCisgICAgICAgICMgc28gd2UgZ2V0IHRoZSBjb3JyZWN0IG5hbWVzIGRpcmVjdGx5OgorICAgICAgICB3aXRoIG9wZW4oIi92YXIvbGliL2xvY2FsZXMvc3VwcG9ydGVkLmQvbG9jYWwiKSBhcyBmOgorICAgICAgICAgICAgbG9jYWxlX2xpc3QgPSBbbG9jLnNwbGl0KClbMF0gZm9yIGxvYyBpbiBmLnJlYWRsaW5lcygpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsb2Muc3RhcnRzd2l0aCgnIycpXQorICAgIGVsaWYgZmluZF9leGVjdXRhYmxlKCdsb2NhbGUnKToKKyAgICAgICAgbG9jYWxlX2xpc3QgPSBzdWJwcm9jZXNzLlBvcGVuKFsibG9jYWxlIiwgIi1hIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlX2xpc3QgPSBsb2NhbGVfbGlzdC5kZWNvZGUoKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgIyBTb21lIGRpc3RyaWJ1dGlvbnMgaW5zaXN0IG9uIHVzaW5nIGxhdGluLTEgY2hhcmFjdGVycworICAgICAgICAgICAgIyBpbiB0aGVpciBsb2NhbGUgbmFtZXMuCisgICAgICAgICAgICBsb2NhbGVfbGlzdCA9IGxvY2FsZV9saXN0LmRlY29kZSgnbGF0aW4tMScpCisgICAgICAgIGxvY2FsZV9saXN0ID0gbG9jYWxlX2xpc3Quc3BsaXQoJ1xuJykKK3RyeToKKyAgICBsb2NhbGVfbGlzdC5yZW1vdmUoJycpCitleGNlcHQgVmFsdWVFcnJvcjoKKyAgICBwYXNzCisKKyMgRGViaWFuCitpZiBvcy5wYXRoLmlzZmlsZSgiL2V0Yy9sb2NhbGUuYWxpYXMiKToKKyAgICB3aXRoIG9wZW4oIi9ldGMvbG9jYWxlLmFsaWFzIikgYXMgZjoKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBsaW5lID09ICIiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgeCA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgaWYgbGVuKHgpID09IDI6CisgICAgICAgICAgICAgICAgaWYgeFswXSBpbiBsb2NhbGVfbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxlX2xpc3QucmVtb3ZlKHhbMF0pCisKKyMgRnJlZUJTRAoraWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0ZyZWVCU0QnOgorICAgICMgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvcXVlcnktcHIuY2dpP3ByPTE0MjE3MworICAgICMgZW5fR0IuVVMtQVNDSUkgaGFzIDE2MyBhcyB0aGUgY3VycmVuY3kgc3ltYm9sLgorICAgIGZvciBsb2MgaW4gWydpdF9DSC5JU084ODU5LTEnLCAnaXRfQ0guSVNPODg1OS0xNScsICdpdF9DSC5VVEYtOCcsCisgICAgICAgICAgICAgICAgJ2l0X0lULklTTzg4NTktMScsICdpdF9JVC5JU084ODU5LTE1JywgJ2l0X0lULlVURi04JywKKyAgICAgICAgICAgICAgICAnc2xfU0kuSVNPODg1OS0yJywgJ3NsX1NJLlVURi04JywKKyAgICAgICAgICAgICAgICAnZW5fR0IuVVMtQVNDSUknXToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlX2xpc3QucmVtb3ZlKGxvYykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyMgUHJpbnQgYSB0ZXN0Y2FzZSBpbiB0aGUgZm9ybWF0IG9mIHRoZSBJQk0gdGVzdHMgKGZvciBydW50ZXN0LmMpOgorZGVmIGdldF9wcmVmZXJyZWRfZW5jb2RpbmcoKToKKyAgICBsb2MgPSBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSkKKyAgICBpZiBsb2MgaW4gcHJlZmVycmVkX2VuY29kaW5nOgorICAgICAgICByZXR1cm4gcHJlZmVycmVkX2VuY29kaW5nW2xvY10KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKKworZGVmIHByaW50aXQodGVzdG5vLCBzLCBmbXQsIGVuY29kaW5nPU5vbmUpOgorICAgIGlmIG5vdCBlbmNvZGluZzoKKyAgICAgICAgZW5jb2RpbmcgPSBnZXRfcHJlZmVycmVkX2VuY29kaW5nKCkKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IGZvcm1hdChQLkRlY2ltYWwocyksIGZtdCkKKyAgICAgICAgZm10ID0gc3RyKGZtdC5lbmNvZGUoZW5jb2RpbmcpKVsyOi0xXQorICAgICAgICByZXN1bHQgPSBzdHIocmVzdWx0LmVuY29kZShlbmNvZGluZykpWzI6LTFdCisgICAgICAgIGlmICInIiBpbiByZXN1bHQ6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ4Zm10JWQgIGZvcm1hdCAgJXMgICclcycgIC0+ICBcIiVzXCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodGVzdG5vLCBzLCBmbXQsIHJlc3VsdCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ4Zm10JWQgIGZvcm1hdCAgJXMgICclcycgIC0+ICAnJXMnXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHRlc3RubywgcywgZm10LCByZXN1bHQpKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlcyAgJXMgICVzXG4iICUgKGVyciwgcywgZm10KSkKKworCisjIENoZWNrIGlmIGFuIGludGVnZXIgY2FuIGJlIGNvbnZlcnRlZCB0byBhIHZhbGlkIGZpbGwgY2hhcmFjdGVyLgorZGVmIGNoZWNrX2ZpbGxjaGFyKGkpOgorICAgIHRyeToKKyAgICAgICAgYyA9IGNocihpKQorICAgICAgICBjLmVuY29kZSgndXRmLTgnKS5kZWNvZGUoKQorICAgICAgICBmb3JtYXQoUC5EZWNpbWFsKDApLCBjICsgJzwxOWcnKQorICAgICAgICBpZiBjIGluICgiJyIsICciJywgJ1xcJyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gYworICAgIGV4Y2VwdDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworIyBHZW5lcmF0ZSBhbGwgdW5pY29kZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFjY2VwdGVkIGFzCisjIGZpbGwgY2hhcmFjdGVycyBieSBkZWNpbWFsLnB5LgorZGVmIGFsbF9maWxsY2hhcnMoKToKKyAgICBmb3IgaSBpbiByYW5nZSgzMiwgMHgxMTAwMDIpOgorICAgICAgICBjID0gY2hlY2tfZmlsbGNoYXIoaSkKKyAgICAgICAgaWYgYzogeWllbGQgYworCisjIFJldHVybiByYW5kb20gZmlsbCBjaGFyYWN0ZXIuCitkZWYgcmFuZF9maWxsY2hhcigpOgorICAgIHdoaWxlIDE6CisgICAgICAgIGkgPSByYW5kb20ucmFuZHJhbmdlKDMyLCAweDExMDAwMikKKyAgICAgICAgYyA9IGNoZWNrX2ZpbGxjaGFyKGkpCisgICAgICAgIGlmIGM6IHJldHVybiBjCisKKyMgR2VuZXJhdGUgcmFuZG9tIGZvcm1hdCBzdHJpbmdzCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgcmFuZF9mb3JtYXQoZmlsbCwgdHlwZXNwZWM9J0VlR2dGZm4lJyk6CisgICAgYWN0aXZlID0gc29ydGVkKHJhbmRvbS5zYW1wbGUocmFuZ2UoNyksIHJhbmRvbS5yYW5kcmFuZ2UoOCkpKQorICAgIGhhdmVfYWxpZ24gPSAwCisgICAgcyA9ICcnCisgICAgZm9yIGVsZW0gaW4gYWN0aXZlOgorICAgICAgICBpZiBlbGVtID09IDA6ICMgZmlsbCthbGlnbgorICAgICAgICAgICAgcyArPSBmaWxsCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJzw+PV4nKQorICAgICAgICAgICAgaGF2ZV9hbGlnbiA9IDEKKyAgICAgICAgZWxpZiBlbGVtID09IDE6ICMgc2lnbgorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCcrLSAnKQorICAgICAgICBlbGlmIGVsZW0gPT0gMiBhbmQgbm90IGhhdmVfYWxpZ246ICMgemVyb3BhZAorICAgICAgICAgICAgcyArPSAnMCcKKyAgICAgICAgZWxpZiBlbGVtID09IDM6ICMgd2lkdGgKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDQ6ICMgdGhvdXNhbmRzIHNlcGFyYXRvcgorICAgICAgICAgICAgcyArPSAnLCcKKyAgICAgICAgZWxpZiBlbGVtID09IDU6ICMgcHJlYworICAgICAgICAgICAgcyArPSAnLicKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDY6CisgICAgICAgICAgICBpZiA0IGluIGFjdGl2ZTogYyA9IHR5cGVzcGVjLnJlcGxhY2UoJ24nLCAnJykKKyAgICAgICAgICAgIGVsc2U6IGMgPSB0eXBlc3BlYworICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKGMpCisgICAgcmV0dXJuIHMKKworIyBQYXJ0aWFsbHkgYnJ1dGUgZm9yY2UgYWxsIHBvc3NpYmxlIGZvcm1hdCBzdHJpbmdzIGNvbnRhaW5pbmcgYSB0aG91c2FuZHMKKyMgc2VwYXJhdG9yLiBGYWxsIGJhY2sgdG8gcmFuZG9tIHdoZXJlIHRoZSBydW50aW1lIHdvdWxkIGJlY29tZSBleGNlc3NpdmUuCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgYWxsX2Zvcm1hdF9zZXAoKToKKyAgICBmb3IgYWxpZ24gaW4gKCcnLCAnPCcsICc+JywgJz0nLCAnXicpOgorICAgICAgICBmb3IgZmlsbCBpbiAoJycsICd4Jyk6CisgICAgICAgICAgICBpZiBhbGlnbiA9PSAnJzogZmlsbCA9ICcnCisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoJycsICcrJywgJy0nLCAnICcpOgorICAgICAgICAgICAgICAgIGZvciB6ZXJvcGFkIGluICgnJywgJzAnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgYWxpZ24gIT0gJyc6IHplcm9wYWQgPSAnJworICAgICAgICAgICAgICAgICAgICBmb3Igd2lkdGggaW4gWycnXStbc3RyKHkpIGZvciB5IGluIHJhbmdlKDEsIDE1KV0rWycxMDEnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcmVjIGluIFsnJ10rWycuJytzdHIoeSkgZm9yIHkgaW4gcmFuZ2UoMTUpXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciB0eXBlIGluICgnJywgJ0UnLCAnZScsICdHJywgJ2cnLCAnRicsICdmJywgJyUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gcmFuZG9tLmNob2ljZSgoJycsICdFJywgJ2UnLCAnRycsICdnJywgJ0YnLCAnZicsICclJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgJycuam9pbigoZmlsbCwgYWxpZ24sIHNpZ24sIHplcm9wYWQsIHdpZHRoLCAnLCcsIHByZWMsIHR5cGUpKQorCisjIFBhcnRpYWxseSBicnV0ZSBmb3JjZSBhbGwgcG9zc2libGUgZm9ybWF0IHN0cmluZ3Mgd2l0aCBhbiAnbicgc3BlY2lmaWVyLgorIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIGFsbF9mb3JtYXRfbG9jKCk6CisgICAgZm9yIGFsaWduIGluICgnJywgJzwnLCAnPicsICc9JywgJ14nKToKKyAgICAgICAgZm9yIGZpbGwgaW4gKCcnLCAneCcpOgorICAgICAgICAgICAgaWYgYWxpZ24gPT0gJyc6IGZpbGwgPSAnJworICAgICAgICAgICAgZm9yIHNpZ24gaW4gKCcnLCAnKycsICctJywgJyAnKToKKyAgICAgICAgICAgICAgICBmb3IgemVyb3BhZCBpbiAoJycsICcwJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGFsaWduICE9ICcnOiB6ZXJvcGFkID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIHdpZHRoIGluIFsnJ10rW3N0cih5KSBmb3IgeSBpbiByYW5nZSgxLCAyMCldK1snMTAxJ106CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJlYyBpbiBbJyddK1snLicrc3RyKHkpIGZvciB5IGluIHJhbmdlKDEsIDIwKV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgJycuam9pbigoZmlsbCwgYWxpZ24sIHNpZ24sIHplcm9wYWQsIHdpZHRoLCBwcmVjLCAnbicpKQorCisjIEdlbmVyYXRlIHJhbmRvbSBmb3JtYXQgc3RyaW5ncyB3aXRoIGEgdW5pY29kZSBmaWxsIGNoYXJhY3RlcgorIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIHJhbmRmaWxsKGZpbGwpOgorICAgIGFjdGl2ZSA9IHNvcnRlZChyYW5kb20uc2FtcGxlKHJhbmdlKDUpLCByYW5kb20ucmFuZHJhbmdlKDYpKSkKKyAgICBzID0gJycKKyAgICBzICs9IHN0cihmaWxsKQorICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnPD49XicpCisgICAgZm9yIGVsZW0gaW4gYWN0aXZlOgorICAgICAgICBpZiBlbGVtID09IDA6ICMgc2lnbgorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCcrLSAnKQorICAgICAgICBlbGlmIGVsZW0gPT0gMTogIyB3aWR0aAorICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gMjogIyB0aG91c2FuZHMgc2VwYXJhdG9yCisgICAgICAgICAgICBzICs9ICcsJworICAgICAgICBlbGlmIGVsZW0gPT0gMzogIyBwcmVjCisgICAgICAgICAgICBzICs9ICcuJworICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gNDoKKyAgICAgICAgICAgIGlmIDIgaW4gYWN0aXZlOiBjID0gJ0VlR2dGZiUnCisgICAgICAgICAgICBlbHNlOiBjID0gJ0VlR2dGZm4lJworICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKGMpCisgICAgcmV0dXJuIHMKKworIyBHZW5lcmF0ZSByYW5kb20gZm9ybWF0IHN0cmluZ3Mgd2l0aCByYW5kb20gbG9jYWxlIHNldHRpbmcKKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiByYW5kX2xvY2FsZSgpOgorICAgIHRyeToKKyAgICAgICAgbG9jID0gcmFuZG9tLmNob2ljZShsb2NhbGVfbGlzdCkKKyAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBsb2MpCisgICAgZXhjZXB0IGxvY2FsZS5FcnJvciBhcyBlcnI6CisgICAgICAgIHBhc3MKKyAgICBhY3RpdmUgPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZSg1KSwgcmFuZG9tLnJhbmRyYW5nZSg2KSkpCisgICAgcyA9ICcnCisgICAgaGF2ZV9hbGlnbiA9IDAKKyAgICBmb3IgZWxlbSBpbiBhY3RpdmU6CisgICAgICAgIGlmIGVsZW0gPT0gMDogIyBmaWxsK2FsaWduCisgICAgICAgICAgICBzICs9IGNocihyYW5kb20ucmFuZHJhbmdlKDMyLCAxMjgpKQorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCc8Pj1eJykKKyAgICAgICAgICAgIGhhdmVfYWxpZ24gPSAxCisgICAgICAgIGVsaWYgZWxlbSA9PSAxOiAjIHNpZ24KKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnKy0gJykKKyAgICAgICAgZWxpZiBlbGVtID09IDIgYW5kIG5vdCBoYXZlX2FsaWduOiAjIHplcm9wYWQKKyAgICAgICAgICAgIHMgKz0gJzAnCisgICAgICAgIGVsaWYgZWxlbSA9PSAzOiAjIHdpZHRoCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSA0OiAjIHByZWMKKyAgICAgICAgICAgIHMgKz0gJy4nCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEwMCkpCisgICAgcyArPSAnbicKKyAgICByZXR1cm4gcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZGVjLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZGVjLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwODU4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRkZWMucHkKQEAgLTAsMCArMSw1NTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjCisjIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMKKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisjIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisjIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKyMKKworCisjIEdlbmVyYXRlIHRlc3QgY2FzZXMgZm9yIGRlY2NoZWNrLnB5LgorCisKKyMKKyMgR3JhbW1hciBmcm9tIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC9kYWNvbnZzLmh0bWwKKyMKKyMgc2lnbiAgICAgICAgICAgOjo9ICAnKycgfCAnLScKKyMgZGlnaXQgICAgICAgICAgOjo9ICAnMCcgfCAnMScgfCAnMicgfCAnMycgfCAnNCcgfCAnNScgfCAnNicgfCAnNycgfAorIyAgICAgICAgICAgICAgICAgICAgICc4JyB8ICc5JworIyBpbmRpY2F0b3IgICAgICA6Oj0gICdlJyB8ICdFJworIyBkaWdpdHMgICAgICAgICA6Oj0gIGRpZ2l0IFtkaWdpdF0uLi4KKyMgZGVjaW1hbC1wYXJ0ICAgOjo9ICBkaWdpdHMgJy4nIFtkaWdpdHNdIHwgWycuJ10gZGlnaXRzCisjIGV4cG9uZW50LXBhcnQgIDo6PSAgaW5kaWNhdG9yIFtzaWduXSBkaWdpdHMKKyMgaW5maW5pdHkgICAgICAgOjo9ICAnSW5maW5pdHknIHwgJ0luZicKKyMgbmFuICAgICAgICAgICAgOjo9ICAnTmFOJyBbZGlnaXRzXSB8ICdzTmFOJyBbZGlnaXRzXQorIyBudW1lcmljLXZhbHVlICA6Oj0gIGRlY2ltYWwtcGFydCBbZXhwb25lbnQtcGFydF0gfCBpbmZpbml0eQorIyBudW1lcmljLXN0cmluZyA6Oj0gIFtzaWduXSBudW1lcmljLXZhbHVlIHwgW3NpZ25dIG5hbgorIworCisKK2Zyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNhbXBsZQorZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCitmcm9tIHJhbmRmbG9hdCBpbXBvcnQgdW5fcmFuZGZsb2F0LCBiaW5fcmFuZGZsb2F0LCB0ZXJuX3JhbmRmbG9hdAorCisKK2RlZiBzaWduKCk6CisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICBpZiByYW5kcmFuZ2UoMik6IHJldHVybiAnKycKKyAgICAgICAgcmV0dXJuICcnCisgICAgcmV0dXJuICctJworCitkZWYgaW5kaWNhdG9yKCk6CisgICAgcmV0dXJuICJlRSJbcmFuZHJhbmdlKDIpXQorCitkZWYgZGlnaXRzKG1heHByZWMpOgorICAgIGlmIG1heHByZWMgPT0gMDogcmV0dXJuICcnCisgICAgcmV0dXJuIHN0cihyYW5kcmFuZ2UoMTAqKm1heHByZWMpKQorCitkZWYgZG90KCk6CisgICAgaWYgcmFuZHJhbmdlKDIpOiByZXR1cm4gJy4nCisgICAgcmV0dXJuICcnCisKK2RlZiBkZWNpbWFsX3BhcnQobWF4cHJlYyk6CisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiA2MDogIyBpbnRlZ2VycworICAgICAgICByZXR1cm4gZGlnaXRzKG1heHByZWMpCisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICBpbnRsZW4gPSByYW5kcmFuZ2UoMSwgbWF4cHJlYysxKQorICAgICAgICBmcmFjbGVuID0gbWF4cHJlYy1pbnRsZW4KKyAgICAgICAgaW50cGFydCA9IGRpZ2l0cyhpbnRsZW4pCisgICAgICAgIGZyYWNwYXJ0ID0gZGlnaXRzKGZyYWNsZW4pCisgICAgICAgIHJldHVybiAnJy5qb2luKChpbnRwYXJ0LCAnLicsIGZyYWNwYXJ0KSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycuam9pbigoZG90KCksIGRpZ2l0cyhtYXhwcmVjKSkpCisKK2RlZiBleHBkaWdpdHMobWF4ZXhwKToKKyAgICByZXR1cm4gc3RyKHJhbmRyYW5nZShtYXhleHApKQorCitkZWYgZXhwb25lbnRfcGFydChtYXhleHApOgorICAgIHJldHVybiAnJy5qb2luKChpbmRpY2F0b3IoKSwgc2lnbigpLCBleHBkaWdpdHMobWF4ZXhwKSkpCisKK2RlZiBpbmZpbml0eSgpOgorICAgIGlmIHJhbmRyYW5nZSgyKTogcmV0dXJuICdJbmZpbml0eScKKyAgICByZXR1cm4gJ0luZicKKworZGVmIG5hbigpOgorICAgIGQgPSAnJworICAgIGlmIHJhbmRyYW5nZSgyKToKKyAgICAgICAgZCA9IGRpZ2l0cyhyYW5kcmFuZ2UoOTkpKQorICAgIGlmIHJhbmRyYW5nZSgyKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKCdOYU4nLCBkKSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycuam9pbigoJ3NOYU4nLCBkKSkKKworZGVmIG51bWVyaWNfdmFsdWUobWF4cHJlYywgbWF4ZXhwKToKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDkwOgorICAgICAgICByZXR1cm4gaW5maW5pdHkoKQorICAgIGV4cF9wYXJ0ID0gJycKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDYwOgorICAgICAgICBleHBfcGFydCA9IGV4cG9uZW50X3BhcnQobWF4ZXhwKQorICAgIHJldHVybiAnJy5qb2luKChkZWNpbWFsX3BhcnQobWF4cHJlYyksIGV4cF9wYXJ0KSkKKworZGVmIG51bWVyaWNfc3RyaW5nKG1heHByZWMsIG1heGV4cCk6CisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiA5NToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKHNpZ24oKSwgbmFuKCkpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKChzaWduKCksIG51bWVyaWNfdmFsdWUobWF4cHJlYywgbWF4ZXhwKSkpCisKK2RlZiByYW5kZGVjKG1heHByZWMsIG1heGV4cCk6CisgICAgcmV0dXJuIG51bWVyaWNfc3RyaW5nKG1heHByZWMsIG1heGV4cCkKKworZGVmIHJhbmRfYWRqZXhwKG1heHByZWMsIG1heGFkamV4cCk6CisgICAgZCA9IGRpZ2l0cyhtYXhwcmVjKQorICAgIG1heGV4cCA9IG1heGFkamV4cC1sZW4oZCkrMQorICAgIGlmIG1heGV4cCA9PSAwOiBtYXhleHAgPSAxCisgICAgZXhwID0gc3RyKHJhbmRyYW5nZShtYXhleHAtMiooYWJzKG1heGV4cCkpLCBtYXhleHApKQorICAgIHJldHVybiAnJy5qb2luKChzaWduKCksIGQsICdFJywgZXhwKSkKKworCitkZWYgbmRpZ2l0cyhuKToKKyAgICBpZiBuIDwgMTogcmV0dXJuIDAKKyAgICByZXR1cm4gcmFuZHJhbmdlKDEwKioobi0xKSwgMTAqKm4pCisKK2RlZiByYW5kdHVwbGUobWF4cHJlYywgbWF4ZXhwKToKKyAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICBzaWduID0gcmFuZHJhbmdlKDIpCisgICAgY29lZmYgPSBuZGlnaXRzKG1heHByZWMpCisgICAgaWYgbiA+PSA5NToKKyAgICAgICAgY29lZmYgPSAoKQorICAgICAgICBleHAgPSAnRicKKyAgICBlbGlmIG4gPj0gODU6CisgICAgICAgIGNvZWZmID0gdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobWF4cHJlYykpKSkKKyAgICAgICAgZXhwID0gIm5OIltyYW5kcmFuZ2UoMildCisgICAgZWxzZToKKyAgICAgICAgY29lZmYgPSB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtYXhwcmVjKSkpKQorICAgICAgICBleHAgPSByYW5kcmFuZ2UoLW1heGV4cCwgbWF4ZXhwKQorICAgIHJldHVybiAoc2lnbiwgY29lZmYsIGV4cCkKKworZGVmIGZyb21fdHJpcGxlKHNpZ24sIGNvZWZmLCBleHApOgorICAgIHJldHVybiAnJy5qb2luKChzdHIoc2lnbipjb2VmZiksIGluZGljYXRvcigpLCBzdHIoZXhwKSkpCisKKworIyBDbG9zZSB0byAxMCoqbgorZGVmIHVuX2Nsb3NlX3RvX3BvdzEwKHByZWMsIG1heGV4cCwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIG5pbmVzID0gWzEwKipuIC0gMSBmb3IgbiBpbiBsc3RdCisgICAgcG93MTAgPSBbMTAqKm4gZm9yIG4gaW4gbHN0XQorICAgIGZvciBjb2VmZiBpbiBuaW5lczoKKyAgICAgICAgeWllbGQgY29lZmYKKyAgICAgICAgeWllbGQgLWNvZWZmCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIGNvZWZmLCByYW5kcmFuZ2UoMiptYXhleHApKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgY29lZmYsIHJhbmRyYW5nZSgyKm1heGV4cCkpCisgICAgZm9yIGNvZWZmIGluIHBvdzEwOgorICAgICAgICB5aWVsZCBjb2VmZgorICAgICAgICB5aWVsZCAtY29lZmYKKworIyBDbG9zZSB0byAxMCoqbgorZGVmIGJpbl9jbG9zZV90b19wb3cxMChwcmVjLCBtYXhleHAsIGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBuaW5lcyA9IFsxMCoqbiAtIDEgZm9yIG4gaW4gbHN0XQorICAgIHBvdzEwID0gWzEwKipuIGZvciBuIGluIGxzdF0KKyAgICBmb3IgY29lZmYgaW4gbmluZXM6CisgICAgICAgIHlpZWxkIGNvZWZmLCAxCisgICAgICAgIHlpZWxkIC1jb2VmZiwgLTEKKyAgICAgICAgeWllbGQgMSwgY29lZmYKKyAgICAgICAgeWllbGQgLTEsIC1jb2VmZgorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBjb2VmZiwgcmFuZHJhbmdlKDIqbWF4ZXhwKSksIDEKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIGNvZWZmLCByYW5kcmFuZ2UoMiptYXhleHApKSwgLTEKKyAgICAgICAgeWllbGQgMSwgZnJvbV90cmlwbGUoMSwgY29lZmYsIC1yYW5kcmFuZ2UoMiptYXhleHApKQorICAgICAgICB5aWVsZCAtMSwgZnJvbV90cmlwbGUoLTEsIGNvZWZmLCAtcmFuZHJhbmdlKDIqbWF4ZXhwKSkKKyAgICBmb3IgY29lZmYgaW4gcG93MTA6CisgICAgICAgIHlpZWxkIGNvZWZmLCAtMQorICAgICAgICB5aWVsZCAtY29lZmYsIDEKKyAgICAgICAgeWllbGQgMSwgLWNvZWZmCisgICAgICAgIHlpZWxkIC1jb2VmZiwgMQorCisjIENsb3NlIHRvIDE6CitkZWYgY2xvc2VfdG9fb25lX2dyZWF0ZXIocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiMS4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKK2RlZiBjbG9zZV90b19vbmVfbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIwLjkiLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKKyMgQ2xvc2UgdG8gMDoKK2RlZiBjbG9zZV90b196ZXJvX2dyZWF0ZXIocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiMC4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKK2RlZiBjbG9zZV90b196ZXJvX2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiLTAuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSkpKQorCisjIENsb3NlIHRvIGVtYXg6CitkZWYgY2xvc2VfdG9fZW1heF9sZXNzKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjkuIiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGVtYXgpKSkKKworZGVmIGNsb3NlX3RvX2VtYXhfZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihlbWF4KzEpKSkKKworIyBDbG9zZSB0byBlbWluOgorZGVmIGNsb3NlX3RvX2VtaW5fZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihlbWluKSkpCisKK2RlZiBjbG9zZV90b19lbWluX2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiOS4iLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZW1pbi0xKSkpCisKKyMgQ2xvc2UgdG8gZXRpbnk6CitkZWYgY2xvc2VfdG9fZXRpbnlfZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBlbWluIC0gKHByZWMgLSAxKQorICAgIHJldHVybiAnJy5qb2luKCgiMS4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZXRpbnkpKSkKKworZGVmIGNsb3NlX3RvX2V0aW55X2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIGV0aW55ID0gZW1pbiAtIChwcmVjIC0gMSkKKyAgICByZXR1cm4gJycuam9pbigoIjkuIiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGV0aW55LTEpKSkKKworCitkZWYgY2xvc2VfdG9fbWluX2V0aW55X2dyZWF0ZXIocHJlYywgbWF4X3ByZWMsIG1pbl9lbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBtaW5fZW1pbiAtIChtYXhfcHJlYyAtIDEpCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihldGlueSkpKQorCitkZWYgY2xvc2VfdG9fbWluX2V0aW55X2xlc3MocHJlYywgbWF4X3ByZWMsIG1pbl9lbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBtaW5fZW1pbiAtIChtYXhfcHJlYyAtIDEpCisgICAgcmV0dXJuICcnLmpvaW4oKCI5LiIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihldGlueS0xKSkpCisKKworY2xvc2VfZnVuY3MgPSBbCisgIGNsb3NlX3RvX29uZV9ncmVhdGVyLCBjbG9zZV90b19vbmVfbGVzcywgY2xvc2VfdG9femVyb19ncmVhdGVyLAorICBjbG9zZV90b196ZXJvX2xlc3MsIGNsb3NlX3RvX2VtYXhfbGVzcywgY2xvc2VfdG9fZW1heF9ncmVhdGVyLAorICBjbG9zZV90b19lbWluX2dyZWF0ZXIsIGNsb3NlX3RvX2VtaW5fbGVzcywgY2xvc2VfdG9fZXRpbnlfZ3JlYXRlciwKKyAgY2xvc2VfdG9fZXRpbnlfbGVzcywgY2xvc2VfdG9fbWluX2V0aW55X2dyZWF0ZXIsIGNsb3NlX3RvX21pbl9ldGlueV9sZXNzCitdCisKKworZGVmIHVuX2Nsb3NlX251bWJlcnMocHJlYywgZW1heCwgZW1pbiwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pCisKK2RlZiBiaW5fY2xvc2VfbnVtYmVycyhwcmVjLCBlbWF4LCBlbWluLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYzEgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICBmb3IgZnVuYzIgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgeWllbGQgZnVuYzEocHJlYywgZW1heCwgZW1pbiksIGZ1bmMyKHByZWMsIGVtYXgsIGVtaW4pCisgICAgICAgIGZvciBmdW5jIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKQorICAgICAgICAgICAgeWllbGQgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwgcmFuZGRlYyhwcmVjLCBlbWF4KQorCitkZWYgdGVybl9jbG9zZV9udW1iZXJzKHByZWMsIGVtYXgsIGVtaW4sIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYzEgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICBmb3IgZnVuYzIgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgZm9yIGZ1bmMzIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCAoZnVuYzEocHJlYywgZW1heCwgZW1pbiksIGZ1bmMyKHByZWMsIGVtYXgsIGVtaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYzMocHJlYywgZW1heCwgZW1pbikpCisgICAgICAgIGZvciBmdW5jIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgKHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMocHJlYywgZW1heCwgZW1pbiksCisgICAgICAgICAgICAgICAgICAgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgICAgIHlpZWxkIChmdW5jKHByZWMsIGVtYXgsIGVtaW4pLCByYW5kZGVjKHByZWMsIGVtYXgpLAorICAgICAgICAgICAgICAgICAgIGZ1bmMocHJlYywgZW1heCwgZW1pbikpCisgICAgICAgICAgICB5aWVsZCAoZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwKKyAgICAgICAgICAgICAgICAgICByYW5kZGVjKHByZWMsIGVtYXgpKQorICAgICAgICBmb3IgZnVuYyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIChyYW5kZGVjKHByZWMsIGVtYXgpLCByYW5kZGVjKHByZWMsIGVtYXgpLAorICAgICAgICAgICAgICAgICAgIGZ1bmMocHJlYywgZW1heCwgZW1pbikpCisgICAgICAgICAgICB5aWVsZCAocmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwKKyAgICAgICAgICAgICAgICAgICByYW5kZGVjKHByZWMsIGVtYXgpKQorICAgICAgICAgICAgeWllbGQgKGZ1bmMocHJlYywgZW1heCwgZW1pbiksIHJhbmRkZWMocHJlYywgZW1heCksCisgICAgICAgICAgICAgICAgICAgcmFuZGRlYyhwcmVjLCBlbWF4KSkKKworCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBkaWdpdCBsZW5ndGhzIHVwIHRvIHByZWMgKyAzMAorZGVmIHVuX2luY3JfZGlnaXRzKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3Q6CisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBkaWdpdCBsZW5ndGhzIHVwIHRvIHByZWMgKyAzMAorIyBBbHNvIG91dHB1dCBkZWNpbWFscyBpbSB0dXBsZSBmb3JtLgorZGVmIHVuX2luY3JfZGlnaXRzX3R1cGxlKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3Q6CisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAjIHRlc3QgZnJvbSB0dXBsZQorICAgICAgICB5aWVsZCAoMCwgdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobSkpKSksIDApCisgICAgICAgIHlpZWxkICgxLCB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtKSkpKSwgMCkKKyAgICAgICAgeWllbGQgKDAsIHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG0pKSkpLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgKDEsIHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG0pKSkpLCByYW5kcmFuZ2UobWF4ZXhwKSkKKworIyBJZiBpdHIgPT0gTm9uZSwgdGVzdCBhbGwgY29tYmluYXRpb25zIG9mIGRpZ2l0IGxlbmd0aHMgdXAgdG8gcHJlYyArIDMwCitkZWYgYmluX2luY3JfZGlnaXRzKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0MSA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDIgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdDEgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MiA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgeCwgeAorICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgeCwgeAorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIGZvciBuIGluIGxzdDI6CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG4pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhuKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobiksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5aWVsZCB4LCB5CisKKworZGVmIHJhbmRzaWduKCk6CisgICAgcmV0dXJuICgxLCAtMSlbcmFuZHJhbmdlKDIpXQorCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBjb21iaW5hdGlvbnMgb2YgZGlnaXQgbGVuZ3RocyB1cCB0byBwcmVjICsgMzAKK2RlZiB0ZXJuX2luY3JfZGlnaXRzKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0MSA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDIgPSByYW5nZShwcmVjKzMwKQorICAgICAgICBsc3QzID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QxID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgICAgIGxzdDIgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MyA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIGZvciBuIGluIGxzdDI6CisgICAgICAgICAgICBmb3IgcCBpbiBsc3QzOgorICAgICAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZShyYW5kc2lnbigpLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZShyYW5kc2lnbigpLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgICAgIHogPSBmcm9tX3RyaXBsZShyYW5kc2lnbigpLCBuZGlnaXRzKHApLCAwKQorICAgICAgICAgICAgICAgIHlpZWxkIHgsIHksIHoKKworCisjIFRlc3RzIGZvciB0aGUgJ2xvZ2ljYWwnIGZ1bmN0aW9ucworZGVmIGJpbmRpZ2l0cyhwcmVjKToKKyAgICB6ID0gMAorICAgIGZvciBpIGluIHJhbmdlKHByZWMpOgorICAgICAgICB6ICs9IHJhbmRyYW5nZSgyKSAqIDEwKippCisgICAgcmV0dXJuIHoKKworZGVmIGxvZ2ljYWxfdW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3Q6CisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIGJpbmRpZ2l0cyhtKSwgMCkKKworZGVmIGxvZ2ljYWxfYmluX2luY3JfZGlnaXRzKHByZWMsIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdDEgPSByYW5nZShwcmVjKzMwKQorICAgICAgICBsc3QyID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QxID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgICAgIGxzdDIgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3QxOgorICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgYmluZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgZm9yIG4gaW4gbHN0MjoKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBiaW5kaWdpdHMobSksIDApCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgYmluZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorCisKK2RlZiByYW5kaW50KCk6CisgICAgcCA9IHJhbmRyYW5nZSgxLCAxMDApCisgICAgcmV0dXJuIG5kaWdpdHMocCkgKiAoMSwtMSlbcmFuZHJhbmdlKDIpXQorCitkZWYgcmFuZGZsb2F0KCk6CisgICAgcCA9IHJhbmRyYW5nZSgxLCAxMDApCisgICAgcyA9IG51bWVyaWNfdmFsdWUocCwgMzgzKQorICAgIHRyeToKKyAgICAgICAgZiA9IGZsb2F0KG51bWVyaWNfdmFsdWUocCwgMzgzKSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgZiA9IDAuMAorICAgIHJldHVybiBmCisKK2RlZiByYW5kY29tcGxleCgpOgorICAgIHJlYWwgPSByYW5kZmxvYXQoKQorICAgIGlmIHJhbmRyYW5nZSgxMDApID4gMzA6CisgICAgICAgIGltYWcgPSAwLjAKKyAgICBlbHNlOgorICAgICAgICBpbWFnID0gcmFuZGZsb2F0KCkKKyAgICByZXR1cm4gY29tcGxleChyZWFsLCBpbWFnKQorCitkZWYgcmFuZGZyYWN0aW9uKCk6CisgICAgbnVtID0gcmFuZGludCgpCisgICAgZGVub20gPSByYW5kaW50KCkKKyAgICBpZiBkZW5vbSA9PSAwOgorICAgICAgICBkZW5vbSA9IDEKKyAgICByZXR1cm4gRnJhY3Rpb24obnVtLCBkZW5vbSkKKworbnVtYmVyX2Z1bmNzID0gW3JhbmRpbnQsIHJhbmRmbG9hdCwgcmFuZGNvbXBsZXgsIHJhbmRmcmFjdGlvbl0KKworZGVmIHVuX3JhbmRvbV9taXhlZF9vcChpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCBmdW5jKCkKKyAgICAjIFRlc3QgZ2FyYmFnZSBpbnB1dAorICAgIGZvciB4IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgIHlpZWxkIHgKKworZGVmIGJpbl9yYW5kb21fbWl4ZWRfb3AocHJlYywgZW1heCwgZW1pbiwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMgaW4gbnVtYmVyX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYygpCisgICAgICAgICAgICB5aWVsZCBmdW5jKCksIHJhbmRkZWMocHJlYywgZW1heCkKKyAgICAgICAgZm9yIG51bWJlciBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICBmb3IgZGVjIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgICAgIHlpZWxkIGRlYyhwcmVjLCBlbWF4LCBlbWluKSwgbnVtYmVyKCkKKyAgICAjIFRlc3QgZ2FyYmFnZSBpbnB1dAorICAgIGZvciB4IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgIGZvciB5IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgICAgICB5aWVsZCB4LCB5CisKK2RlZiB0ZXJuX3JhbmRvbV9taXhlZF9vcChwcmVjLCBlbWF4LCBlbWluLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMgaW4gbnVtYmVyX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBlbWF4KSwgcmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYygpCisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKCksIGZ1bmMoKQorICAgICAgICAgICAgeWllbGQgZnVuYygpLCBmdW5jKCksIGZ1bmMoKQorICAgICMgVGVzdCBnYXJiYWdlIGlucHV0CisgICAgZm9yIHggaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgZm9yIHkgaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgICAgIGZvciB6IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgICAgICAgICAgeWllbGQgeCwgeSwgegorCitkZWYgYWxsX3VuYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgYSBpbiB1bl9jbG9zZV90b19wb3cxMChwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiB1bl9jbG9zZV9udW1iZXJzKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIHVuX2luY3JfZGlnaXRzX3R1cGxlKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIHVuX3JhbmRmbG9hdCgpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gdW5fcmFuZG9tX21peGVkX29wKGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiBsb2dpY2FsX3VuX2luY3JfZGlnaXRzKHByZWMsIGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICB5aWVsZCAocmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpLCkKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICB5aWVsZCAocmFuZHR1cGxlKHByZWMsIGV4cF9yYW5nZSksKQorCitkZWYgYWxsX2JpbmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgZm9yIGEsIGIgaW4gYmluX2Nsb3NlX3RvX3BvdzEwKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBhLCBiIGluIGJpbl9jbG9zZV9udW1iZXJzKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBhLCBiIGluIGJpbl9pbmNyX2RpZ2l0cyhwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBiaW5fcmFuZGZsb2F0KCk6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBiaW5fcmFuZG9tX21peGVkX29wKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBhLCBiIGluIGxvZ2ljYWxfYmluX2luY3JfZGlnaXRzKHByZWMsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGV4cF9yYW5nZSksIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKQorCitkZWYgYWxsX3Rlcm5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBhLCBiLCBjIGluIHRlcm5fY2xvc2VfbnVtYmVycyhwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIsIGMKKyAgICBmb3IgYSwgYiwgYyBpbiB0ZXJuX2luY3JfZGlnaXRzKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBhLCBiLCBjIGluIHRlcm5fcmFuZGZsb2F0KCk6CisgICAgICAgIHlpZWxkIGEsIGIsIGMKKyAgICBmb3IgYSwgYiwgYyBpbiB0ZXJuX3JhbmRvbV9taXhlZF9vcChwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIsIGMKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICBhID0gcmFuZGRlYyhwcmVjLCAyKmV4cF9yYW5nZSkKKyAgICAgICAgYiA9IHJhbmRkZWMocHJlYywgMipleHBfcmFuZ2UpCisgICAgICAgIGMgPSByYW5kZGVjKHByZWMsIDIqZXhwX3JhbmdlKQorICAgICAgICB5aWVsZCBhLCBiLCBjCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRmbG9hdC5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGZsb2F0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ODczMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRmbG9hdC5weQpAQCAtMCwwICsxLDI1MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIEFkYXB0ZWQgZnJvbSBQeXRob24ncyBMaWIvdGVzdC90ZXN0X3N0cnRvZC5weSAoYnkgTWFyayBEaWNraW5zb24pCisKKyMgTW9yZSB0ZXN0IGNhc2VzIGZvciBkZWNjaGVjay5weS4KKworaW1wb3J0IHJhbmRvbQorCitURVNUX1NJWkUgPSAyCisKKworZGVmIHRlc3Rfc2hvcnRfaGFsZndheV9jYXNlcygpOgorICAgICMgZXhhY3QgaGFsZndheSBjYXNlcyB3aXRoIGEgc21hbGwgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cworICAgIGZvciBrIGluIDAsIDUsIDEwLCAxNSwgMjA6CisgICAgICAgICMgdXBwZXIgPSBzbWFsbGVzdCBpbnRlZ2VyID49IDIqKjU0LzUqKmsKKyAgICAgICAgdXBwZXIgPSAtKC0yKio1NC8vNSoqaykKKyAgICAgICAgIyBsb3dlciA9IHNtYWxsZXN0IG9kZCBudW1iZXIgPj0gMioqNTMvNSoqaworICAgICAgICBsb3dlciA9IC0oLTIqKjUzLy81KiprKQorICAgICAgICBpZiBsb3dlciAlIDIgPT0gMDoKKyAgICAgICAgICAgIGxvd2VyICs9IDEKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAgKiBURVNUX1NJWkUpOgorICAgICAgICAgICAgIyBTZWxlY3QgYSByYW5kb20gb2RkIG4gaW4gWzIqKjUzLzUqKmssCisgICAgICAgICAgICAjIDIqKjU0LzUqKmspLiBUaGVuIG4gKiAxMCoqayBnaXZlcyBhIGhhbGZ3YXkgY2FzZQorICAgICAgICAgICAgIyB3aXRoIHNtYWxsIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMuCisgICAgICAgICAgICBuLCBlID0gcmFuZG9tLnJhbmRyYW5nZShsb3dlciwgdXBwZXIsIDIpLCBrCisKKyAgICAgICAgICAgICMgUmVtb3ZlIGFueSBhZGRpdGlvbmFsIHBvd2VycyBvZiA1LgorICAgICAgICAgICAgd2hpbGUgbiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICBuLCBlID0gbiAvLyA1LCBlICsgMQorICAgICAgICAgICAgYXNzZXJ0IG4gJSAxMCBpbiAoMSwgMywgNywgOSkKKworICAgICAgICAgICAgIyBUcnkgbnVtYmVycyBvZiB0aGUgZm9ybSBuICogMioqcDIgKiAxMCoqZSwgcDIgPj0gMCwKKyAgICAgICAgICAgICMgdW50aWwgbiAqIDIqKnAyIGhhcyBtb3JlIHRoYW4gMjAgc2lnbmlmaWNhbnQgZGlnaXRzLgorICAgICAgICAgICAgZGlnaXRzLCBleHBvbmVudCA9IG4sIGUKKyAgICAgICAgICAgIHdoaWxlIGRpZ2l0cyA8IDEwKioyMDoKKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICAgICAgIyBTYW1lIGFnYWluLCBidXQgd2l0aCBleHRyYSB0cmFpbGluZyB6ZXJvcy4KKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzICogMTAqKjQwLCBleHBvbmVudCAtIDQwKQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgICAgICBkaWdpdHMgKj0gMgorCisgICAgICAgICAgICAjIFRyeSBudW1iZXJzIG9mIHRoZSBmb3JtIG4gKiA1KipwMiAqIDEwKiooZSAtIHA1KSwgcDUKKyAgICAgICAgICAgICMgPj0gMCwgd2l0aCBuICogNSoqcDUgPCAxMCoqMjAuCisgICAgICAgICAgICBkaWdpdHMsIGV4cG9uZW50ID0gbiwgZQorICAgICAgICAgICAgd2hpbGUgZGlnaXRzIDwgMTAqKjIwOgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgICAgICAjIFNhbWUgYWdhaW4sIGJ1dCB3aXRoIGV4dHJhIHRyYWlsaW5nIHplcm9zLgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMgKiAxMCoqNDAsIGV4cG9uZW50IC0gNDApCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgICAgIGRpZ2l0cyAqPSA1CisgICAgICAgICAgICAgICAgZXhwb25lbnQgLT0gMQorCitkZWYgdGVzdF9oYWxmd2F5X2Nhc2VzKCk6CisgICAgIyB0ZXN0IGhhbGZ3YXkgY2FzZXMgZm9yIHRoZSByb3VuZC1oYWxmLXRvLWV2ZW4gcnVsZQorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBmb3IgaiBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgIyBiaXQgcGF0dGVybiBmb3IgYSByYW5kb20gZmluaXRlIHBvc2l0aXZlIChvciArMC4wKSBmbG9hdAorICAgICAgICAgICAgYml0cyA9IHJhbmRvbS5yYW5kcmFuZ2UoMjA0NyoyKio1MikKKworICAgICAgICAgICAgIyBjb252ZXJ0IGJpdCBwYXR0ZXJuIHRvIGEgbnVtYmVyIG9mIHRoZSBmb3JtIG0gKiAyKiplCisgICAgICAgICAgICBlLCBtID0gZGl2bW9kKGJpdHMsIDIqKjUyKQorICAgICAgICAgICAgaWYgZToKKyAgICAgICAgICAgICAgICBtLCBlID0gbSArIDIqKjUyLCBlIC0gMQorICAgICAgICAgICAgZSAtPSAxMDc0CisKKyAgICAgICAgICAgICMgYWRkIDAuNSB1bHBzCisgICAgICAgICAgICBtLCBlID0gMiptICsgMSwgZSAtIDEKKworICAgICAgICAgICAgIyBjb252ZXJ0IHRvIGEgZGVjaW1hbCBzdHJpbmcKKyAgICAgICAgICAgIGlmIGUgPj0gMDoKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBtIDw8IGUKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBtICogMioqZSA9IChtICogNSoqLWUpICogMTAqKmUKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBtICogNSoqLWUKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IGUKKyAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgeWllbGQgcworCitkZWYgdGVzdF9ib3VuZGFyaWVzKCk6CisgICAgIyBib3VuZGFyaWVzIGV4cHJlc3NlZCBhcyB0cmlwbGVzIChuLCBlLCB1KSwgd2hlcmUKKyAgICAjIG4qMTAqKmUgaXMgYW4gYXBwcm94aW1hdGlvbiB0byB0aGUgYm91bmRhcnkgdmFsdWUgYW5kCisgICAgIyB1KjEwKiplIGlzIDF1bHAKKyAgICBib3VuZGFyaWVzID0gWworICAgICAgICAoMTAwMDAwMDAwMDAwMDAwMDAwMDAsIC0xOSwgMTExMCksICAgIyBhIHBvd2VyIG9mIDIgYm91bmRhcnkgKDEuMCkKKyAgICAgICAgKDE3OTc2OTMxMzQ4NjIzMTU5MDc3LCAyODksIDE5OTUpLCAgICMgb3ZlcmZsb3cgYm91bmRhcnkgKDIuKioxMDI0KQorICAgICAgICAoMjIyNTA3Mzg1ODUwNzIwMTM4MzEsIC0zMjcsIDQ5NDEpLCAgIyBub3JtYWwvc3Vibm9ybWFsICgyLioqLTEwMjIpCisgICAgICAgICgwLCAtMzI3LCA0OTQxKSwgICAgICAgICAgICAgICAgICAgICAjIHplcm8KKyAgICAgICAgXQorICAgIGZvciBuLCBlLCB1IGluIGJvdW5kYXJpZXM6CisgICAgICAgIGZvciBqIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoVEVTVF9TSVpFKToKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBuICsgcmFuZG9tLnJhbmRyYW5nZSgtMyp1LCAzKnUpCisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBlCisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgbiAqPSAxMAorICAgICAgICAgICAgdSAqPSAxMAorICAgICAgICAgICAgZSAtPSAxCisKK2RlZiB0ZXN0X3VuZGVyZmxvd19ib3VuZGFyeSgpOgorICAgICMgdGVzdCB2YWx1ZXMgY2xvc2UgdG8gMioqLTEwNzUsIHRoZSB1bmRlcmZsb3cgYm91bmRhcnk7IHNpbWlsYXIKKyAgICAjIHRvIGJvdW5kYXJ5X3Rlc3RzLCBleGNlcHQgdGhhdCB0aGUgcmFuZG9tIGVycm9yIGRvZXNuJ3Qgc2NhbGUKKyAgICAjIHdpdGggbgorICAgIGZvciBleHBvbmVudCBpbiByYW5nZSgtNDAwLCAtMzIwKToKKyAgICAgICAgYmFzZSA9IDEwKiotZXhwb25lbnQgLy8gMioqMTA3NQorICAgICAgICBmb3IgaiBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgZGlnaXRzID0gYmFzZSArIHJhbmRvbS5yYW5kcmFuZ2UoLTEwMDAsIDEwMDApCisgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgIHlpZWxkIHMKKworZGVmIHRlc3RfYmlnY29tcCgpOgorICAgIGZvciBuZGlncyBpbiA1LCAxMCwgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDQwLCA0MSwgNTA6CisgICAgICAgIGRpZzEwID0gMTAqKm5kaWdzCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMCAqIFRFU1RfU0laRSk6CisgICAgICAgICAgICBkaWdpdHMgPSByYW5kb20ucmFuZHJhbmdlKGRpZzEwKQorICAgICAgICAgICAgZXhwb25lbnQgPSByYW5kb20ucmFuZHJhbmdlKC00MDAsIDQwMCkKKyAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgeWllbGQgcworCitkZWYgdGVzdF9wYXJzaW5nKCk6CisgICAgIyBtYWtlICcwJyBtb3JlIGxpa2VseSB0byBiZSBjaG9zZW4gdGhhbiBvdGhlciBkaWdpdHMKKyAgICBkaWdpdHMgPSAnMDAwMDAwMTIzNDU2Nzg5JworICAgIHNpZ25zID0gKCcrJywgJy0nLCAnJykKKworICAgICMgcHV0IHRvZ2V0aGVyIHJhbmRvbSBzaG9ydCB2YWxpZCBzdHJpbmdzCisgICAgIyBcZCpbLlxkKl0/ZQorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBmb3IgaiBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgcyA9IHJhbmRvbS5jaG9pY2Uoc2lnbnMpCisgICAgICAgICAgICBpbnRwYXJ0X2xlbiA9IHJhbmRvbS5yYW5kcmFuZ2UoNSkKKyAgICAgICAgICAgIHMgKz0gJycuam9pbihyYW5kb20uY2hvaWNlKGRpZ2l0cykgZm9yIF8gaW4gcmFuZ2UoaW50cGFydF9sZW4pKQorICAgICAgICAgICAgaWYgcmFuZG9tLmNob2ljZShbVHJ1ZSwgRmFsc2VdKToKKyAgICAgICAgICAgICAgICBzICs9ICcuJworICAgICAgICAgICAgICAgIGZyYWNwYXJ0X2xlbiA9IHJhbmRvbS5yYW5kcmFuZ2UoNSkKKyAgICAgICAgICAgICAgICBzICs9ICcnLmpvaW4ocmFuZG9tLmNob2ljZShkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGZyYWNwYXJ0X2xlbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZyYWNwYXJ0X2xlbiA9IDAKKyAgICAgICAgICAgIGlmIHJhbmRvbS5jaG9pY2UoW1RydWUsIEZhbHNlXSk6CisgICAgICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKFsnZScsICdFJ10pCisgICAgICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKHNpZ25zKQorICAgICAgICAgICAgICAgIGV4cG9uZW50X2xlbiA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgNCkKKyAgICAgICAgICAgICAgICBzICs9ICcnLmpvaW4ocmFuZG9tLmNob2ljZShkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGV4cG9uZW50X2xlbikpCisKKyAgICAgICAgICAgIGlmIGludHBhcnRfbGVuICsgZnJhY3BhcnRfbGVuOgorICAgICAgICAgICAgICAgIHlpZWxkIHMKKwordGVzdF9wYXJ0aWN1bGFyID0gWworICAgICAjIHNxdWFyZXMKKyAgICAnMS4wMDAwMDAwMDEwMDAwMDAwMDAyNScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAyNScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMjUnLAorICAgICcwLjk5OTk5OTk5OTAwMDAwMDAwMDI1JywKKyAgICAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMjUnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjUnLAorCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjUwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjQ5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk3OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKKworICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDI0OTk5OTk5OTk5OTk5OTk5ODAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDEnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDI1MDAwMDAwMTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzEnLAorCisgICAgIyB0b3VnaCBjYXNlcyBmb3IgbG4gZXRjLgorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAxJywKKyAgICAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk4OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OScKKyAgICBdCisKKworVEVTVENBU0VTID0gWworICAgICAgW3ggZm9yIHggaW4gdGVzdF9zaG9ydF9oYWxmd2F5X2Nhc2VzKCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF9oYWxmd2F5X2Nhc2VzKCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF9ib3VuZGFyaWVzKCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF91bmRlcmZsb3dfYm91bmRhcnkoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X2JpZ2NvbXAoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X3BhcnNpbmcoKV0sCisgICAgICB0ZXN0X3BhcnRpY3VsYXIKK10KKworZGVmIHVuX3JhbmRmbG9hdCgpOgorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBsID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVNbOjZdKQorICAgICAgICB5aWVsZCByYW5kb20uY2hvaWNlKGwpCisgICAgZm9yIHYgaW4gdGVzdF9wYXJ0aWN1bGFyOgorICAgICAgICB5aWVsZCB2CisKK2RlZiBiaW5fcmFuZGZsb2F0KCk6CisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGwxID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVMpCisgICAgICAgIGwyID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVMpCisgICAgICAgIHlpZWxkIHJhbmRvbS5jaG9pY2UobDEpLCByYW5kb20uY2hvaWNlKGwyKQorCitkZWYgdGVybl9yYW5kZmxvYXQoKToKKyAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgbDEgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgbDIgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgbDMgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgeWllbGQgcmFuZG9tLmNob2ljZShsMSksIHJhbmRvbS5jaG9pY2UobDIpLCByYW5kb20uY2hvaWNlKGwzKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwtbWVtb3J5ZGVidWdnZXIuc2ggYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC1tZW1vcnlkZWJ1Z2dlci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NGZmM2IzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwtbWVtb3J5ZGVidWdnZXIuc2gKQEAgLTAsMCArMSwxNzUgQEAKKyMhL2Jpbi9zaAorCisjCisjIFB1cnBvc2U6IHRlc3Qgd2l0aCBhbmQgd2l0aG91dCB0aHJlYWRzLCBhbGwgbWFjaGluZSBjb25maWd1cmF0aW9ucywgcHlkZWJ1ZywKKyMgICAgICAgICAgcmVmbGVha3MsIHJlbGVhc2UgYnVpbGQgYW5kIHJlbGVhc2UgYnVpbGQgd2l0aCB2YWxncmluZC4KKyMKKyMgU3lub3BzaXM6IC4vcnVuYWxsLW1lbW9yeWRlYnVnZ2VyLnNoIFstLWFsbC1jb25maWdzNjQgfCAtLWFsbC1jb25maWdzMzJdCisjCisjIFJlcXVpcmVtZW50czogdmFsZ3JpbmQKKyMKKworIyBTZXQgYWRkaXRpb25hbCBDRkxBR1MgZm9yIC4vY29uZmlndXJlCitBRERfQ0ZMQUdTPQorCisKK0NPTkZJR1NfNjQ9Ing2NCB1aW50MTI4IGFuc2k2NCB1bml2ZXJzYWwiCitDT05GSUdTXzMyPSJwcHJvIGFuc2kzMiBhbnNpLWxlZ2FjeSB1bml2ZXJzYWwiCisKK1ZBTEdSSU5EPSJ2YWxncmluZCAtLXRvb2w9bWVtY2hlY2sgLS1sZWFrLXJlc29sdXRpb249aGlnaCBcCisgICAgICAgICAgLS1kYi1hdHRhY2g9eWVzIC0tc3VwcHJlc3Npb25zPU1pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAiCisKKyMgR2V0IGFyZ3MKK2Nhc2UgJEAgaW4KKyAgICAgKi0tYWxsLWNvbmZpZ3M2NCopCisgICAgICAgICBDT05GSUdTPSRDT05GSUdTXzY0CisgICAgICAgICA7OworICAgICAqLS1hbGwtY29uZmlnczMyKikKKyAgICAgICAgIENPTkZJR1M9JENPTkZJR1NfMzIKKyAgICAgICAgIDs7CisgICAgICopCisgICAgICAgICBDT05GSUdTPSJhdXRvIgorICAgICAgICAgOzsKK2VzYWMKKworIyBnbWFrZSByZXF1aXJlZAorR01BS0U9YHdoaWNoIGdtYWtlYAoraWYgWyBYIiRHTUFLRSIgPSBYIiIgXTsgdGhlbgorICAgIEdNQUtFPW1ha2UKK2ZpCisKKyMgUHJldHR5IHByaW50IGNvbmZpZ3VyYXRpb25zCitwcmludF9jb25maWcgKCkKK3sKKyAgICBsZW49YGVjaG8gJEAgfCB3YyAtY2AKKyAgICBtYXJnaW49IiMlImBleHByIFwoIDc0IC0gJGxlbiBcKSAvIDJgInMiCisKKyAgICBlY2hvICIiCisgICAgZWNobyAiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCisgICAgcHJpbnRmICRtYXJnaW4gIiIKKyAgICBlY2hvICRACisgICAgZWNobyAiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCisgICAgZWNobyAiIgorfQorCisKK2NkIC4uCisKKyMgdGVzdF9kZWNpbWFsOiByZWZsZWFrLCByZWd1bGFyIGFuZCBWYWxncmluZCB0ZXN0cworZm9yIGFyZ3MgaW4gIi0td2l0aG91dC10aHJlYWRzIiAiIjsgZG8KKyAgICBmb3IgY29uZmlnIGluICRDT05GSUdTOyBkbworCisgICAgICAgIHVuc2V0IFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORQorICAgICAgICBsaWJtcGRlY19jb25maWc9JGNvbmZpZworICAgICAgICBpZiBbIFgiJGNvbmZpZyIgIT0gWCJhdXRvIiBdOyB0aGVuCisgICAgICAgICAgICBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkU9JGNvbmZpZworICAgICAgICAgICAgZXhwb3J0IFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORQorICAgICAgICBlbHNlCisgICAgICAgICAgICBsaWJtcGRlY19jb25maWc9IiIKKyAgICAgICAgZmkKKworICAgICAgICAjIyMjIyMjIyMjIyMgcmVmbGVhayB0ZXN0cyAjIyMjIyMjIyMjIworICAgICAgICBwcmludF9jb25maWcgInJlZmxlYWsgdGVzdHM6IGNvbmZpZz0kY29uZmlnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgY2QgLi4vLi4vCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGgtcHlkZWJ1ZyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSByZWZsZWFrIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIC1tIHRlc3QgLXVhbGwgLVIgMjoyIHRlc3RfZGVjaW1hbAorCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIHJlZ3VsYXIgdGVzdHMgIyMjIyMjIyMjIyMKKyAgICAgICAgcHJpbnRfY29uZmlnICJyZWd1bGFyIHRlc3RzOiBjb25maWc9JGNvbmZpZyIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSByZWd1bGFyIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCisKKworICAgICAgICAjIyMjIyMjIyMjIyB2YWxncmluZCB0ZXN0cyAjIyMjIyMjIyMjIworICAgICAgICB2YWxncmluZD0kVkFMR1JJTkQKKyAgICAgICAgY2FzZSAiJGNvbmZpZyIgaW4KKyAgICAgICAgICAgICMgVmFsZ3JpbmQgaGFzIG5vIHN1cHBvcnQgZm9yIDgwIGJpdCBsb25nIGRvdWJsZSBhcml0aG1ldGljLgorICAgICAgICAgICAgcHBybykgdmFsZ3JpbmQ9IDs7CisgICAgICAgICAgICBhdXRvKSBjYXNlIGB1bmFtZSAtbWAgaW4KKyAgICAgICAgICAgICAgICAgICAgICBpMzg2fGk0ODZ8aTU4NnxpNjg2KSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgZXNhYworCisgICAgICAgIHByaW50X2NvbmZpZyAidmFsZ3JpbmQgdGVzdHM6IGNvbmZpZz0kY29uZmlnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGhvdXQtcHltYWxsb2MgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT0gdmFsZ3JpbmQgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgJHZhbGdyaW5kIC4vcHl0aG9uIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCisKKyAgICAgICAgY2QgTW9kdWxlcy9fZGVjaW1hbAorICAgIGRvbmUKK2RvbmUKKworIyBkZWNjaGVjaworY2QgLi4vLi4vCitmb3IgY29uZmlnIGluICRDT05GSUdTOyBkbworICAgIGZvciBhcmdzIGluICItLXdpdGhvdXQtdGhyZWFkcyIgIiI7IGRvCisKKyAgICAgICAgdW5zZXQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGlmIFsgWCIkY29uZmlnIiAhPSBYImF1dG8iIF07IHRoZW4KKyAgICAgICAgICAgIFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORT0kY29uZmlnCisgICAgICAgICAgICBleHBvcnQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGZpCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIGRlYnVnICMjIyMjIyMjIyMjIworICAgICAgICBwcmludF9jb25maWcgImRlY2NoZWNrOiBjb25maWc9JGNvbmZpZyAtLXdpdGgtcHlkZWJ1ZyIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGgtcHlkZWJ1ZyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09IGRlYnVnID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIE1vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKworICAgICAgICAjIyMjIyMjIyMjIyByZWd1bGFyICMjIyMjIyMjIyMjCisgICAgICAgIHByaW50X2NvbmZpZyAiZGVjY2hlY2s6IGNvbmZpZz0kY29uZmlnICIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSByZWd1bGFyID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIE1vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKworICAgICAgICAjIyMjIyMjIyMjIyB2YWxncmluZCAjIyMjIyMjIyMjIworICAgICAgICB2YWxncmluZD0kVkFMR1JJTkQKKyAgICAgICAgY2FzZSAiJGNvbmZpZyIgaW4KKyAgICAgICAgICAgICMgVmFsZ3JpbmQgaGFzIG5vIHN1cHBvcnQgZm9yIDgwIGJpdCBsb25nIGRvdWJsZSBhcml0aG1ldGljLgorICAgICAgICAgICAgcHBybykgdmFsZ3JpbmQ9IDs7CisgICAgICAgICAgICBhdXRvKSBjYXNlIGB1bmFtZSAtbWAgaW4KKyAgICAgICAgICAgICAgICAgICAgICBpMzg2fGk0ODZ8aTU4NnxpNjg2KSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgZXNhYworCisgICAgICAgIHByaW50X2NvbmZpZyAidmFsZ3JpbmQgZGVjY2hlY2s6IGNvbmZpZz0kY29uZmlnICIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGhvdXQtcHltYWxsb2MgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT0gdmFsZ3JpbmQgPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAkdmFsZ3JpbmQgLi9weXRob24gTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorICAgIGRvbmUKK2RvbmUKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLmJhdCBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41YmM4NzJhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwuYmF0CkBAIC0wLDAgKzEsMTExIEBACitARUNITyBPRkYKKworcmVtIFRlc3QgYWxsIG1hY2hpbmUgY29uZmlndXJhdGlvbnMsIHB5ZGVidWcsIHJlZmxlYWtzLCByZWxlYXNlIGJ1aWxkLgorCitjZCAuLlwuLlwuLlwKKworCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyBQeXRob24KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIC90YXJnZXQ6Y2xlYW4gUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgL3RhcmdldDpjbGVhbiBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09eDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtPXg2NAorCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4NgorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtPVdpbjMyCittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtPVdpbjMyCitlY2hvLgorZWNoby4KKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZGVjaW1hbDogcGxhdGZvcm09eDY0CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworY2QgUENidWlsZFxhbWQ2NAorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVmbGVhayB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAtbSB0ZXN0IC11YWxsIC1SIDI6MiB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVndWxhciB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitjZCAuLgorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9kZWNpbWFsOiBwbGF0Zm9ybT14ODYKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVmbGVhayB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAtbSB0ZXN0IC11YWxsIC1SIDI6MiB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVndWxhciB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitjZCBhbWQ2NAorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgICBkZWNjaGVjazogcGxhdGZvcm09eDY0CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IGRlYnVnIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PSByZWxlYXNlIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCitjZCAuLgorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgICBkZWNjaGVjazogcGxhdGZvcm09eDg2CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSBkZWJ1ZyBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT0gcmVsZWFzZSBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworCitjZCAuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwppbmRleCBjMzZhZjVkLi4wYzhhYmNmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCisrKyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKIC8qIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvcHNmL2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKICNkZWZpbmUgVkVSU0lPTiAiMS4wLjYiCiAKQEAgLTU3LDkgKzU4LDYgQEAKIC8qIExlYXZlIGRlZmluZWQgdG8gaW5jbHVkZSB0aGUgZXhwYXQtYmFzZWQgWE1MUGFyc2VyIHR5cGUgKi8KICNkZWZpbmUgVVNFX0VYUEFUCiAKLS8qIERlZmluZSB0byBkbyBhbGwgZXhwYXQgY2FsbHMgdmlhIHB5ZXhwYXQncyBlbWJlZGRlZCBleHBhdCBsaWJyYXJ5ICovCi0vKiAjZGVmaW5lIFVTRV9QWUVYUEFUX0NBUEkgKi8KLQogLyogQW4gZWxlbWVudCBjYW4gaG9sZCB0aGlzIG1hbnkgY2hpbGRyZW4gd2l0aG91dCBleHRyYSBtZW1vcnkKICAgIGFsbG9jYXRpb25zLiAqLwogI2RlZmluZSBTVEFUSUNfQ0hJTERSRU4gNApAQCAtNzAsNyArNjgsNyBAQAogICAgaGVscHMgaWYgeW91IGhhdmUgbG90cyBvZiBsZWFmIG5vZGVzIHdpdGggYXR0cmlidXRlcykuICovCiAKIC8qIEFsc28gbm90ZSB0aGF0IHB5bWFsbG9jIGFsd2F5cyBhbGxvY2F0ZXMgYmxvY2tzIGluIG11bHRpcGxlcyBvZgotICAgZWlnaHQgYnl0ZXMuICBGb3IgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBjRWxlbWVudFRyZWUsIHRoaXMgbWVhbnMKKyAgIGVpZ2h0IGJ5dGVzLiAgRm9yIHRoZSBjdXJyZW50IEMgdmVyc2lvbiBvZiBFbGVtZW50VHJlZSwgdGhpcyBtZWFucwogICAgdGhhdCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHNob3VsZCBiZSBhbiBldmVuIG51bWJlciwgYXQgbGVhc3Qgb24KICAgIDMyLWJpdCBwbGF0Zm9ybXMuICovCiAKQEAgLTk0LDM5ICs5MiwxNyBAQAogI2RlZmluZSBMT0NBTCh0eXBlKSBzdGF0aWMgdHlwZQogI2VuZGlmCiAKLS8qIGNvbXBhdGliaWxpdHkgbWFjcm9zICovCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA2MDAwMCkKLSNkZWZpbmUgUHlfUkVGQ05UKG9iKSAoKChQeU9iamVjdCopKG9iKSktPm9iX3JlZmNudCkKLSNkZWZpbmUgUHlfVFlQRShvYikgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQotI2VuZGlmCi0KLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotdHlwZWRlZiBpbnQgUHlfc3NpemVfdDsKLSNkZWZpbmUgbGVuZnVuYyBpbnF1aXJ5Ci0jZW5kaWYKLQotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNDAwMDApCi0jZGVmaW5lIFB5RGljdF9DaGVja0V4YWN0IFB5RGljdF9DaGVjawotCi0jaWYgIWRlZmluZWQoUHlfUkVUVVJOX05PTkUpCi0jZGVmaW5lIFB5X1JFVFVSTl9OT05FIHJldHVybiBQeV9JTkNSRUYoUHlfTm9uZSksIFB5X05vbmUKLSNlbmRpZgotI2VuZGlmCi0KIC8qIG1hY3JvcyB1c2VkIHRvIHN0b3JlICdqb2luJyBmbGFncyBpbiBzdHJpbmcgb2JqZWN0IHBvaW50ZXJzLiAgbm90ZQogICAgdGhhdCBhbGwgdXNlIG9mIHRleHQgYW5kIHRhaWwgYXMgb2JqZWN0IHBvaW50ZXJzIG11c3QgYmUgd3JhcHBlZCBpbgogICAgSk9JTl9PQkouICBzZWUgY29tbWVudHMgaW4gdGhlIEVsZW1lbnRPYmplY3QgZGVmaW5pdGlvbiBmb3IgbW9yZQogICAgaW5mby4gKi8KICNkZWZpbmUgSk9JTl9HRVQocCkgKChQeV91aW50cHRyX3QpIChwKSAmIDEpCiAjZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgoUHlfdWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKLSNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgoUHlfdWludHB0cl90KSAocCkgJiB+MSkpCisjZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgfihQeV91aW50cHRyX3QpMSkpCiAKIC8qIGdsdWUgZnVuY3Rpb25zIChzZWUgdGhlIGluaXQgZnVuY3Rpb24gZm9yIGRldGFpbHMpICovCiBzdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqOwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmo7CiBzdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iajsKLXN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfaXRlcl9vYmo7Ci1zdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2l0ZXJ0ZXh0X29iajsKIHN0YXRpYyBQeU9iamVjdCogZWxlbWVudHBhdGhfb2JqOwogCiAvKiBoZWxwZXJzICovCkBAIC0xNDcsMTcgKzEyMywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7CisgICAgYXJncyA9IFB5VHVwbGVfUGFjaygyLCBvYmplY3QsIG1lbW8pOwogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9JTkNSRUYob2JqZWN0KTsgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QqKSBvYmplY3QpOwotICAgIFB5X0lOQ1JFRihtZW1vKTsgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIChQeU9iamVjdCopIG1lbW8pOwotCiAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9kZWVwY29weV9vYmosIGFyZ3MpOwotCiAgICAgUHlfREVDUkVGKGFyZ3MpOwotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTY1LDUzICsxMzUsMzAgQEAKIGxpc3Rfam9pbihQeU9iamVjdCogbGlzdCkKIHsKICAgICAvKiBqb2luIGxpc3QgZWxlbWVudHMgKGRlc3Ryb3lpbmcgdGhlIGxpc3QgaW4gdGhlIHByb2Nlc3MpICovCi0KICAgICBQeU9iamVjdCogam9pbmVyOwotICAgIFB5T2JqZWN0KiBmdW5jdGlvbjsKLSAgICBQeU9iamVjdCogYXJnczsKICAgICBQeU9iamVjdCogcmVzdWx0OwogCi0gICAgc3dpdGNoIChQeUxpc3RfR0VUX1NJWkUobGlzdCkpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygiIik7Ci0gICAgY2FzZSAxOgotICAgICAgICByZXN1bHQgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgMCk7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwotICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgLyogdHdvIG9yIG1vcmUgZWxlbWVudHM6IHNsaWNlIG91dCBhIHN1aXRhYmxlIHNlcGFyYXRvciBmcm9tIHRoZQotICAgICAgIGZpcnN0IG1lbWJlciwgYW5kIHVzZSB0aGF0IHRvIGpvaW4gdGhlIGVudGlyZSBsaXN0ICovCi0KLSAgICBqb2luZXIgPSBQeVNlcXVlbmNlX0dldFNsaWNlKFB5TGlzdF9HRVRfSVRFTShsaXN0LCAwKSwgMCwgMCk7CisgICAgam9pbmVyID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKICAgICBpZiAoIWpvaW5lcikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmdW5jdGlvbiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoam9pbmVyLCAiam9pbiIpOwotICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgUHlfREVDUkVGKGpvaW5lcik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBsaXN0KTsKLQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZnVuY3Rpb24sIGFyZ3MpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOyAvKiBhbHNvIHJlbW92ZXMgbGlzdCAqLwotICAgIFB5X0RFQ1JFRihmdW5jdGlvbik7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0pvaW4oam9pbmVyLCBsaXN0KTsKICAgICBQeV9ERUNSRUYoam9pbmVyKTsKLQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBJcyB0aGUgZ2l2ZW4gb2JqZWN0IGFuIGVtcHR5IGRpY3Rpb25hcnk/CisqLworc3RhdGljIGludAoraXNfZW1wdHlfZGljdChQeU9iamVjdCAqb2JqKQoreworICAgIHJldHVybiBQeURpY3RfQ2hlY2tFeGFjdChvYmopICYmIFB5RGljdF9TaXplKG9iaikgPT0gMDsKK30KKworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogdGhlIGVsZW1lbnQgdHlwZSAqLworLyogdGhlIEVsZW1lbnQgdHlwZSAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAKQEAgLTIyNiw3ICsxNzMsNyBAQAogICAgIFB5T2JqZWN0KiAqY2hpbGRyZW47CiAKICAgICBQeU9iamVjdCogX2NoaWxkcmVuW1NUQVRJQ19DSElMRFJFTl07Ci0gICAgCisKIH0gRWxlbWVudE9iamVjdEV4dHJhOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNDksNiArMTk2LDggQEAKIAogICAgIEVsZW1lbnRPYmplY3RFeHRyYSogZXh0cmE7CiAKKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7IC8qIEZvciB0cF93ZWFrbGlzdG9mZnNldCAqLworCiB9IEVsZW1lbnRPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlOwpAQCAtMjU2LDEwICsyMDUsMTAgQEAKICNkZWZpbmUgRWxlbWVudF9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJkVsZW1lbnRfVHlwZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIGVsZW1lbnQgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgKi8KKy8qIEVsZW1lbnQgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yICovCiAKIExPQ0FMKGludCkKLWVsZW1lbnRfbmV3X2V4dHJhKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhdHRyaWIpCitjcmVhdGVfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGF0dHJpYikKIHsKICAgICBzZWxmLT5leHRyYSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKSk7CiAgICAgaWYgKCFzZWxmLT5leHRyYSkKQEAgLTI3OSw0NyArMjI4LDQ4IEBACiB9CiAKIExPQ0FMKHZvaWQpCi1lbGVtZW50X2RlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKK2RlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKIHsKKyAgICBFbGVtZW50T2JqZWN0RXh0cmEgKm15ZXh0cmE7CiAgICAgaW50IGk7CiAKLSAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CisgICAgaWYgKCFzZWxmLT5leHRyYSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykKLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSk7CisgICAgLyogQXZvaWQgREVDUkVGcyBjYWxsaW5nIGludG8gdGhpcyBjb2RlIGFnYWluIChjeWNsZXMsIGV0Yy4pCisgICAgKi8KKyAgICBteWV4dHJhID0gc2VsZi0+ZXh0cmE7CisgICAgc2VsZi0+ZXh0cmEgPSBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQotICAgICAgICBQeU9iamVjdF9GcmVlKHNlbGYtPmV4dHJhLT5jaGlsZHJlbik7CisgICAgUHlfREVDUkVGKG15ZXh0cmEtPmF0dHJpYik7CiAKLSAgICBQeU9iamVjdF9GcmVlKHNlbGYtPmV4dHJhKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbXlleHRyYS0+bGVuZ3RoOyBpKyspCisgICAgICAgIFB5X0RFQ1JFRihteWV4dHJhLT5jaGlsZHJlbltpXSk7CisKKyAgICBpZiAobXlleHRyYS0+Y2hpbGRyZW4gIT0gbXlleHRyYS0+X2NoaWxkcmVuKQorICAgICAgICBQeU9iamVjdF9GcmVlKG15ZXh0cmEtPmNoaWxkcmVuKTsKKworICAgIFB5T2JqZWN0X0ZyZWUobXlleHRyYSk7CiB9CiAKKy8qIENvbnZlbmllbmNlIGludGVybmFsIGZ1bmN0aW9uIHRvIGNyZWF0ZSBuZXcgRWxlbWVudCBvYmplY3RzIHdpdGggdGhlIGdpdmVuCisgKiB0YWcgYW5kIGF0dHJpYnV0ZXMuCisqLwogTE9DQUwoUHlPYmplY3QqKQotZWxlbWVudF9uZXcoUHlPYmplY3QqIHRhZywgUHlPYmplY3QqIGF0dHJpYikKK2NyZWF0ZV9uZXdfZWxlbWVudChQeU9iamVjdCogdGFnLCBQeU9iamVjdCogYXR0cmliKQogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGY7CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KEVsZW1lbnRPYmplY3QsICZFbGVtZW50X1R5cGUpOworICAgIHNlbGYgPSBQeU9iamVjdF9HQ19OZXcoRWxlbWVudE9iamVjdCwgJkVsZW1lbnRfVHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiB1c2UgTm9uZSBmb3IgZW1wdHkgZGljdGlvbmFyaWVzICovCi0gICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGF0dHJpYikgJiYgIVB5RGljdF9TaXplKGF0dHJpYikpCi0gICAgICAgIGF0dHJpYiA9IFB5X05vbmU7Ci0KICAgICBzZWxmLT5leHRyYSA9IE5VTEw7CiAKLSAgICBpZiAoYXR0cmliICE9IFB5X05vbmUpIHsKLQotICAgICAgICBpZiAoZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgYXR0cmliKSA8IDApIHsKKyAgICBpZiAoYXR0cmliICE9IFB5X05vbmUgJiYgIWlzX2VtcHR5X2RpY3QoYXR0cmliKSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIGF0dHJpYikgPCAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotCi0gICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGggPSAwOwotICAgICAgICBzZWxmLT5leHRyYS0+YWxsb2NhdGVkID0gU1RBVElDX0NISUxEUkVOOwotICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuOwotCiAgICAgfQogCiAgICAgUHlfSU5DUkVGKHRhZyk7CkBAIC0zMzEsMTEgKzI4MSwxMjggQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgc2VsZi0+dGFpbCA9IFB5X05vbmU7CiAKLSAgICBBTExPQyhzaXplb2YoRWxlbWVudE9iamVjdCksICJjcmVhdGUgZWxlbWVudCIpOworICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKIAorICAgIEFMTE9DKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImNyZWF0ZSBlbGVtZW50Iik7CisgICAgUHlPYmplY3RfR0NfVHJhY2soc2VsZik7CiAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBFbGVtZW50T2JqZWN0ICplID0gKEVsZW1lbnRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGFnID0gUHlfTm9uZTsKKworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIGUtPnRleHQgPSBQeV9Ob25lOworCisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGFpbCA9IFB5X05vbmU7CisKKyAgICAgICAgZS0+ZXh0cmEgPSBOVUxMOworICAgICAgICBlLT53ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QgKillOworfQorCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGV4dHJhY3RpbmcgdGhlIGF0dHJpYiBkaWN0aW9uYXJ5IGZyb20gYSBrZXl3b3JkcyBkaWN0LgorICogVGhpcyBpcyByZXF1aXJlZCBieSBzb21lIGNvbnN0cnVjdG9ycy9mdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgdGhhdCBjYW4KKyAqIGVpdGhlciBhY2NlcHQgYXR0cmliIGFzIGEga2V5d29yZCBhcmd1bWVudCBvciBhbGwgYXR0cmlidXRlcyBzcGxhc2hlZCAKKyAqIGRpcmVjdGx5IGludG8gKmt3ZHMuCisgKiBJZiB0aGVyZSBpcyBubyAnYXR0cmliJyBrZXl3b3JkLCByZXR1cm4gYW4gZW1wdHkgZGljdC4KKyAqLworc3RhdGljIFB5T2JqZWN0KgorZ2V0X2F0dHJpYl9mcm9tX2tleXdvcmRzKFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICphdHRyaWJfc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImF0dHJpYiIpOworICAgIFB5T2JqZWN0ICphdHRyaWIgPSBQeURpY3RfR2V0SXRlbShrd2RzLCBhdHRyaWJfc3RyKTsKKworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgLyogSWYgYXR0cmliIHdhcyBmb3VuZCBpbiBrd2RzLCBjb3B5IGl0cyB2YWx1ZSBhbmQgcmVtb3ZlIGl0IGZyb20KKyAgICAgICAgICoga3dkcworICAgICAgICAgKi8KKyAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soYXR0cmliKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYl9zdHIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImF0dHJpYiBtdXN0IGJlIGRpY3QsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYXR0cmliKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOworICAgICAgICBQeURpY3RfRGVsSXRlbShrd2RzLCBhdHRyaWJfc3RyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7CisgICAgfQorCisgICAgUHlfREVDUkVGKGF0dHJpYl9zdHIpOworCisgICAgaWYgKGF0dHJpYikKKyAgICAgICAgUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3ZHMpOworICAgIHJldHVybiBhdHRyaWI7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICp0YWc7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBQeU9iamVjdCAqYXR0cmliID0gTlVMTDsKKyAgICBFbGVtZW50T2JqZWN0ICpzZWxmX2VsZW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyE6RWxlbWVudCIsICZ0YWcsICZQeURpY3RfVHlwZSwgJmF0dHJpYikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgLyogYXR0cmliIHBhc3NlZCBhcyBwb3NpdGlvbmFsIGFyZyAqLworICAgICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGt3ZHMpIHsKKyAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGF0dHJpYiwga3dkcykgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrd2RzKSB7CisgICAgICAgIC8qIGhhdmUga2V5d29yZHMgYXJncyAqLworICAgICAgICBhdHRyaWIgPSBnZXRfYXR0cmliX2Zyb21fa2V5d29yZHMoa3dkcyk7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHNlbGZfZWxlbSA9IChFbGVtZW50T2JqZWN0ICopc2VsZjsKKworICAgIGlmIChhdHRyaWIgIT0gTlVMTCAmJiAhaXNfZW1wdHlfZGljdChhdHRyaWIpKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZl9lbGVtLCBhdHRyaWIpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBXZSBvd24gYSByZWZlcmVuY2UgdG8gYXR0cmliIGhlcmUgYW5kIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZC4gKi8KKyAgICBQeV9YREVDUkVGKGF0dHJpYik7CisKKyAgICAvKiBSZXBsYWNlIHRoZSBvYmplY3RzIGFscmVhZHkgcG9pbnRlZCB0byBieSB0YWcsIHRleHQgYW5kIHRhaWwuICovCisgICAgdG1wID0gc2VsZl9lbGVtLT50YWc7CisgICAgUHlfSU5DUkVGKHRhZyk7CisgICAgc2VsZl9lbGVtLT50YWcgPSB0YWc7CisgICAgUHlfREVDUkVGKHRtcCk7CisKKyAgICB0bXAgPSBzZWxmX2VsZW0tPnRleHQ7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHNlbGZfZWxlbS0+dGV4dCA9IFB5X05vbmU7CisgICAgUHlfREVDUkVGKEpPSU5fT0JKKHRtcCkpOworCisgICAgdG1wID0gc2VsZl9lbGVtLT50YWlsOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBzZWxmX2VsZW0tPnRhaWwgPSBQeV9Ob25lOworICAgIFB5X0RFQ1JFRihKT0lOX09CSih0bXApKTsKKworICAgIHJldHVybiAwOworfQorCiBMT0NBTChpbnQpCiBlbGVtZW50X3Jlc2l6ZShFbGVtZW50T2JqZWN0KiBzZWxmLCBpbnQgZXh0cmEpCiB7CkBAIC0zNDYsNyArNDEzLDcgQEAKICAgICAgICBlbGVtZW50cy4gIHNldCBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBpZiBhbGxvY2F0aW9uIGZhaWxlZCAqLwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKIAogICAgIHNpemUgPSBzZWxmLT5leHRyYS0+bGVuZ3RoICsgZXh0cmE7CiAKQEAgLTM1NCwxNCArNDIxLDE0IEBACiAgICAgICAgIC8qIHVzZSBQeXRob24gMi40J3MgbGlzdCBncm93dGggc3RyYXRlZ3kgKi8KICAgICAgICAgc2l6ZSA9IChzaXplID4+IDMpICsgKHNpemUgPCA5ID8gMyA6IDYpICsgc2l6ZTsKICAgICAgICAgLyogQ292ZXJpdHkgQ0lEICMxODIgc2l6ZV9lcnJvcjogQWxsb2NhdGluZyAxIGJ5dGVzIHRvIHBvaW50ZXIgImNoaWxkcmVuIgotICAgICAgICAgKiB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiAKLSAgICAgICAgICogQWx0aG91Z2ggaXQncyBhIGZhbHNlIGFsYXJtIGFsd2F5cyBhc3N1bWUgYXQgbGVhc3Qgb25lIGNoaWxkIHRvIAorICAgICAgICAgKiB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLgorICAgICAgICAgKiBBbHRob3VnaCBpdCdzIGEgZmFsc2UgYWxhcm0gYWx3YXlzIGFzc3VtZSBhdCBsZWFzdCBvbmUgY2hpbGQgdG8KICAgICAgICAgICogYmUgc2FmZS4KICAgICAgICAgICovCiAgICAgICAgIHNpemUgPSBzaXplID8gc2l6ZSA6IDE7CiAgICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW4gIT0gc2VsZi0+ZXh0cmEtPl9jaGlsZHJlbikgewogICAgICAgICAgICAgLyogQ292ZXJpdHkgQ0lEICMxODIgc2l6ZV9lcnJvcjogQWxsb2NhdGluZyAxIGJ5dGVzIHRvIHBvaW50ZXIKLSAgICAgICAgICAgICAqICJjaGlsZHJlbiIsIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuIEFsdGhvdWdoIGl0J3MgYSAKKyAgICAgICAgICAgICAqICJjaGlsZHJlbiIsIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuIEFsdGhvdWdoIGl0J3MgYQogICAgICAgICAgICAgICogZmFsc2UgYWxhcm0gYWx3YXlzIGFzc3VtZSBhdCBsZWFzdCBvbmUgY2hpbGQgdG8gYmUgc2FmZS4KICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgY2hpbGRyZW4gPSBQeU9iamVjdF9SZWFsbG9jKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiwKQEAgLTQxMiwxMSArNDc5LDExIEBACiAgICAgUHlPYmplY3QqIHJlcyA9IHNlbGYtPmV4dHJhLT5hdHRyaWI7CiAKICAgICBpZiAocmVzID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIC8qIGNyZWF0ZSBtaXNzaW5nIGRpY3Rpb25hcnkgKi8KICAgICAgICAgcmVzID0gUHlEaWN0X05ldygpOwogICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHNlbGYtPmV4dHJhLT5hdHRyaWIgPSByZXM7CiAgICAgfQogCkBAIC00NjQsMzYgKzUzMSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCi17Ci0gICAgUHlPYmplY3QqIGVsZW07Ci0KLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBhdHRyaWIgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPITpFbGVtZW50IiwgJnRhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmYXR0cmliKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoYXR0cmliIHx8IGt3KSB7Ci0gICAgICAgIGF0dHJpYiA9IChhdHRyaWIpID8gUHlEaWN0X0NvcHkoYXR0cmliKSA6IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKCFhdHRyaWIpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGt3KQotICAgICAgICAgICAgUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3KTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIGF0dHJpYiA9IFB5X05vbmU7Ci0gICAgfQotCi0gICAgZWxlbSA9IGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKLQotICAgIFB5X0RFQ1JFRihhdHRyaWIpOwotCi0gICAgcmV0dXJuIGVsZW07Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXN1YmVsZW1lbnQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCitzdWJlbGVtZW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QqIGVsZW07CiAKQEAgLTUwNSwxOCArNTQzLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmF0dHJpYikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGF0dHJpYiB8fCBrdykgewotICAgICAgICBhdHRyaWIgPSAoYXR0cmliKSA/IFB5RGljdF9Db3B5KGF0dHJpYikgOiBQeURpY3RfTmV3KCk7CisgICAgaWYgKGF0dHJpYikgeworICAgICAgICAvKiBhdHRyaWIgcGFzc2VkIGFzIHBvc2l0aW9uYWwgYXJnICovCisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9Db3B5KGF0dHJpYik7CiAgICAgICAgIGlmICghYXR0cmliKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChrdykKLSAgICAgICAgICAgIFB5RGljdF9VcGRhdGUoYXR0cmliLCBrdyk7CisgICAgICAgIGlmIChrd2RzKSB7CisgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3ZHMpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrd2RzKSB7CisgICAgICAgIC8qIGhhdmUga2V5d29yZCBhcmdzICovCisgICAgICAgIGF0dHJpYiA9IGdldF9hdHRyaWJfZnJvbV9rZXl3b3Jkcyhrd2RzKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgeworICAgICAgICAvKiBubyBhdHRyaWIgYXJnLCBubyBrd2RzLCBzbyBubyBhdHRyaWJ1dGUgKi8KICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7CisgICAgZWxlbSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CiAKICAgICBQeV9ERUNSRUYoYXR0cmliKTsKIApAQCAtNTI4LDIwICs1NzYsNjUgQEAKICAgICByZXR1cm4gZWxlbTsKIH0KIAorc3RhdGljIGludAorZWxlbWVudF9nY190cmF2ZXJzZShFbGVtZW50T2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT50YWcpOworICAgIFB5X1ZJU0lUKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKKyAgICBQeV9WSVNJVChKT0lOX09CSihzZWxmLT50YWlsKSk7CisKKyAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIFB5X1ZJU0lUKHNlbGYtPmV4dHJhLT5hdHRyaWIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyArK2kpCisgICAgICAgICAgICBQeV9WSVNJVChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0pOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF9nY19jbGVhcihFbGVtZW50T2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPnRhZyk7CisKKyAgICAvKiBUaGUgZm9sbG93aW5nIGlzIGxpa2UgUHlfQ0xFQVIgZm9yIHNlbGYtPnRleHQgYW5kIHNlbGYtPnRhaWwsIGJ1dAorICAgICAqIHdyaXR0ZW4gZXhwbGljaXRpbHkgYmVjYXVzZSB0aGUgcmVhbCBwb2ludGVycyBoaWRlIGJlaGluZCBhY2Nlc3MKKyAgICAgKiBtYWNyb3MuCisgICAgKi8KKyAgICBpZiAoc2VsZi0+dGV4dCkgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gSk9JTl9PQkooc2VsZi0+dGV4dCk7CisgICAgICAgIHNlbGYtPnRleHQgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi0+dGFpbCkgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gSk9JTl9PQkooc2VsZi0+dGFpbCk7CisgICAgICAgIHNlbGYtPnRhaWwgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICAvKiBBZnRlciBkcm9wcGluZyBhbGwgcmVmZXJlbmNlcyBmcm9tIGV4dHJhLCBpdCdzIG5vIGxvbmdlciB2YWxpZCBhbnl3YXksCisgICAgICogc28gZnVsbHkgZGVhbGxvY2F0ZSBpdC4KKyAgICAqLworICAgIGRlYWxsb2NfZXh0cmEoc2VsZik7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkCiBlbGVtZW50X2RlYWxsb2MoRWxlbWVudE9iamVjdCogc2VsZikKIHsKLSAgICBpZiAoc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfZGVhbGxvY19leHRyYShzZWxmKTsKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOwogCi0gICAgLyogZGlzY2FyZCBhdHRyaWJ1dGVzICovCi0gICAgUHlfREVDUkVGKHNlbGYtPnRhZyk7Ci0gICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKLSAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQorICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKKworICAgIC8qIGVsZW1lbnRfZ2NfY2xlYXIgY2xlYXJzIGFsbCByZWZlcmVuY2VzIGFuZCBkZWFsbG9jYXRlcyBleHRyYQorICAgICovCisgICAgZWxlbWVudF9nY19jbGVhcihzZWxmKTsKIAogICAgIFJFTEVBU0Uoc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAiZGVzdHJveSBlbGVtZW50Iik7Ci0KLSAgICBQeU9iamVjdF9EZWwoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTU2MSwxNSArNjU0LDEyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfY2xlYXIoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2NsZWFybWV0aG9kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmNsZWFyIikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIGVsZW1lbnRfZGVhbGxvY19leHRyYShzZWxmKTsKLSAgICAgICAgc2VsZi0+ZXh0cmEgPSBOVUxMOwotICAgIH0KKyAgICBkZWFsbG9jX2V4dHJhKHNlbGYpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7CkBAIC01OTEsNyArNjgxLDcgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpfX2NvcHlfXyIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGVsZW1lbnRfbmV3KAorICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGNyZWF0ZV9uZXdfZWxlbWVudCgKICAgICAgICAgc2VsZi0+dGFnLCAoc2VsZi0+ZXh0cmEpID8gc2VsZi0+ZXh0cmEtPmF0dHJpYiA6IFB5X05vbmUKICAgICAgICAgKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC02MDYsNyArNjk2LDcgQEAKICAgICBQeV9JTkNSRUYoSk9JTl9PQkooZWxlbWVudC0+dGFpbCkpOwogCiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChlbGVtZW50X3Jlc2l6ZShlbGVtZW50LCBzZWxmLT5leHRyYS0+bGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjE4LDcgKzcwOCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBlbGVtZW50LT5leHRyYS0+bGVuZ3RoID0gc2VsZi0+ZXh0cmEtPmxlbmd0aDsKLSAgICAgICAgCisKICAgICB9CiAKICAgICByZXR1cm4gKFB5T2JqZWN0KikgZWxlbWVudDsKQEAgLTY1NCwxNCArNzQ0LDE0IEBACiAgICAgICAgIGF0dHJpYiA9IFB5X05vbmU7CiAgICAgfQogCi0gICAgZWxlbWVudCA9IChFbGVtZW50T2JqZWN0KikgZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOworICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CiAKICAgICBQeV9ERUNSRUYodGFnKTsKICAgICBQeV9ERUNSRUYoYXR0cmliKTsKIAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgCisKICAgICB0ZXh0ID0gZGVlcGNvcHkoSk9JTl9PQkooc2VsZi0+dGV4dCksIG1lbW8pOwogICAgIGlmICghdGV4dCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTY3NSw3ICs3NjUsNyBAQAogICAgIGVsZW1lbnQtPnRhaWwgPSBKT0lOX1NFVCh0YWlsLCBKT0lOX0dFVChzZWxmLT50YWlsKSk7CiAKICAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGVsZW1lbnRfcmVzaXplKGVsZW1lbnQsIHNlbGYtPmV4dHJhLT5sZW5ndGgpIDwgMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTY4OSwxMSArNzc5LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBlbGVtZW50LT5leHRyYS0+bGVuZ3RoID0gc2VsZi0+ZXh0cmEtPmxlbmd0aDsKLSAgICAgICAgCisKICAgICB9CiAKICAgICAvKiBhZGQgb2JqZWN0IHRvIG1lbW8gZGljdGlvbmFyeSAoc28gZGVlcGNvcHkgd29uJ3QgdmlzaXQgaXQgYWdhaW4pICovCi0gICAgaWQgPSBQeUxvbmdfRnJvbUxvbmcoKFB5X3VpbnRwdHJfdCkgc2VsZik7CisgICAgaWQgPSBQeUxvbmdfRnJvbVNzaXplX3QoKFB5X3VpbnRwdHJfdCkgc2VsZik7CiAgICAgaWYgKCFpZCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNzExLDYgKzgwMSwxOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3NpemVvZihQeU9iamVjdCogX3NlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEVsZW1lbnRPYmplY3QgKnNlbGYgPSAoRWxlbWVudE9iamVjdCopX3NlbGY7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBzaXplb2YoRWxlbWVudE9iamVjdCk7CisgICAgaWYgKHNlbGYtPmV4dHJhKSB7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKTsKKyAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQorICAgICAgICAgICAgcmVzdWx0ICs9IHNpemVvZihQeU9iamVjdCopICogc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCiBMT0NBTChpbnQpCiBjaGVja3BhdGgoUHlPYmplY3QqIHRhZykKIHsKQEAgLTcyMywxMyArODI2LDE2IEBACiAgICAgKGNoID09ICcvJyB8fCBjaCA9PSAnKicgfHwgY2ggPT0gJ1snIHx8IGNoID09ICdAJyB8fCBjaCA9PSAnLicpCiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRhZykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRhZyk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX1NJWkUodGFnKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocFtpXSA9PSAneycpCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGFnKTsKKyAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRhZyk7CisgICAgICAgIHVuc2lnbmVkIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQodGFnKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICBpZiAoY2ggPT0gJ3snKQogICAgICAgICAgICAgICAgIGNoZWNrID0gMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHBbaV0gPT0gJ30nKQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ30nKQogICAgICAgICAgICAgICAgIGNoZWNrID0gMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrICYmIFBBVEhDSEFSKHBbaV0pKQorICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sgJiYgUEFUSENIQVIoY2gpKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtNzcyLDYgKzg3OCwxNSBAQAogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOwogICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47IGkrKykgewogICAgICAgICBQeU9iamVjdCogZWxlbWVudCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpZiAoIVB5T2JqZWN0X0lzSW5zdGFuY2UoZWxlbWVudCwgKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gRWxlbWVudCwgbm90IFwiJS4yMDBzXCIiLAorICAgICAgICAgICAgICAgIFB5X1RZUEUoZWxlbWVudCktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoZWxlbWVudF9hZGRfc3ViZWxlbWVudChzZWxmLCBlbGVtZW50KSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03ODQsMjMgKzg5OSwyNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBpOwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86ZmluZCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgImZpbmQiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CisgICAgfQogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIAorCiAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaXRlbSA9IHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXTsKICAgICAgICAgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChpdGVtKSAmJgpAQCAtODE0LDE5ICs5MzMsMjIgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK2VsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBpOwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPTzpmaW5kdGV4dCIsICZ0YWcsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCisgICAgX1B5X0lERU5USUZJRVIoZmluZHRleHQpOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POmZpbmR0ZXh0Iiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICJmaW5kdGV4dCIsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kdGV4dCwgIk9PT08iLCBzZWxmLCB0YWcsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CkBAIC04NTEsMjAgKzk3MywyNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBpOwogICAgIFB5T2JqZWN0KiBvdXQ7Ci0KICAgICBQeU9iamVjdCogdGFnOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TzpmaW5kYWxsIiwgJnRhZywgJm5hbWVzcGFjZXMpKQorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmZpbmRhbGwiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZywgJm5hbWVzcGFjZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiZmluZGFsbCIsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGZpbmRhbGwpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZGFsbCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcwogICAgICAgICAgICAgKTsKKyAgICB9CiAKICAgICBvdXQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICghb3V0KQpAQCAtODg4LDE1ICsxMDE0LDE5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCogdGFnOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TzppdGVyZmluZCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBfUHlfSURFTlRJRklFUihpdGVyZmluZCk7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86aXRlcmZpbmQiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZywgJm5hbWVzcGFjZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICBlbGVtZW50cGF0aF9vYmosICJpdGVyZmluZCIsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9pdGVyZmluZCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcwogICAgICAgICApOwogfQogCkBAIC05NDksNjcgKzEwNzksMzIgQEAKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorCitzdGF0aWMgUHlPYmplY3QgKgorY3JlYXRlX2VsZW1lbnRpdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsIGludCBnZXR0ZXh0KTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgCiAgICAgUHlPYmplY3QqIHRhZyA9IFB5X05vbmU7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzppdGVyIiwgJnRhZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFlbGVtZW50dHJlZV9pdGVyX29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiaXRlciBoZWxwZXIgbm90IGZvdW5kIgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDIpOwotICAgIGlmICghYXJncykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9JTkNSRUYoc2VsZik7IFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgKFB5T2JqZWN0Kikgc2VsZik7Ci0gICAgUHlfSU5DUkVGKHRhZyk7ICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIChQeU9iamVjdCopIHRhZyk7Ci0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGVsZW1lbnR0cmVlX2l0ZXJfb2JqLCBhcmdzKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGNyZWF0ZV9lbGVtZW50aXRlcihzZWxmLCB0YWcsIDApOwogfQogCiAKIHN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfaXRlcnRleHQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7Ci0gICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjppdGVydGV4dCIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghZWxlbWVudHRyZWVfaXRlcnRleHRfb2JqKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICJpdGVydGV4dCBoZWxwZXIgbm90IGZvdW5kIgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgIGlmICghYXJncykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9JTkNSRUYoc2VsZik7IFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgKFB5T2JqZWN0Kikgc2VsZik7Ci0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGVsZW1lbnR0cmVlX2l0ZXJ0ZXh0X29iaiwgYXJncyk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjcmVhdGVfZWxlbWVudGl0ZXIoc2VsZiwgUHlfTm9uZSwgMSk7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9nZXRpdGVtKFB5T2JqZWN0KiBzZWxmXywgUHlfc3NpemVfdCBpbmRleCkKIHsKQEAgLTEwMzksNyArMTEzNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKIAogICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgaW5kZXggKz0gc2VsZi0+ZXh0cmEtPmxlbmd0aDsKQEAgLTExMTAsNyArMTIwNSw3IEBACiAgICAgaWYgKCFhdHRyaWIpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZWxlbSA9IGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKKyAgICBlbGVtID0gY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKIAogICAgIFB5X0RFQ1JFRihhdHRyaWIpOwogCkBAIC0xMTE4LDMxICsxMjEzLDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9yZWR1Y2UoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6X19yZWR1Y2VfXyIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIEhhY2sgYWxlcnQ6IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gd29yayBhcm91bmQgYSBfX2NvcHlfXwotICAgICAgIHByb2JsZW0gb24gY2VydGFpbiAyLjMgYW5kIDIuNCB2ZXJzaW9ucy4gIFRvIHNhdmUgdGltZSBhbmQKLSAgICAgICBzaW1wbGlmeSB0aGUgY29kZSwgd2UgY3JlYXRlIHRoZSBjb3B5IGluIGhlcmUsIGFuZCB1c2UgYSBkdW1teQotICAgICAgIGNvcHllbGVtZW50IGhlbHBlciB0byB0cmljayB0aGUgY29weSBtb2R1bGUgaW50byBkb2luZyB0aGUKLSAgICAgICByaWdodCB0aGluZy4gKi8KLQotICAgIGlmICghZWxlbWVudHRyZWVfY29weWVsZW1lbnRfb2JqKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICJjb3B5ZWxlbWVudCBoZWxwZXIgbm90IGZvdW5kIgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCi0gICAgICAgICJPKE4pIiwgZWxlbWVudHRyZWVfY29weWVsZW1lbnRfb2JqLCBlbGVtZW50X2NvcHkoc2VsZiwgYXJncykKLSAgICAgICAgKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9yZW1vdmUoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgaW50IGk7CkBAIC0xMTg5LDcgKzEyNTksMTAgQEAKIHN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfcmVwcihFbGVtZW50T2JqZWN0KiBzZWxmKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPEVsZW1lbnQgJVIgYXQgJXA+Iiwgc2VsZi0+dGFnLCBzZWxmKTsKKyAgICBpZiAoc2VsZi0+dGFnKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxFbGVtZW50ICVSIGF0ICVwPiIsIHNlbGYtPnRhZywgc2VsZik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxFbGVtZW50IGF0ICVwPiIsIHNlbGYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0xMjAzLDcgKzEyNzYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICBhdHRyaWIgPSBlbGVtZW50X2dldF9hdHRyaWIoc2VsZik7CiAgICAgaWYgKCFhdHRyaWIpCkBAIC0xMjUwLDEzICsxMzIzLDggQEAKIHsKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKIAotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDApCi0gICAgaWYgKFB5SW50X0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSkgewotICAgICAgICBsb25nIGkgPSBQeUludF9Bc0xvbmcoaXRlbSk7Ci0jZWxzZQogICAgIGlmIChQeUluZGV4X0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBQeUV4Y19JbmRleEVycm9yKTsKLSNlbmRpZgogCiAgICAgICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMwNywxMyArMTM3NSw4IEBACiB7CiAgICAgRWxlbWVudE9iamVjdCogc2VsZiA9IChFbGVtZW50T2JqZWN0Kikgc2VsZl87CiAKLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotICAgIGlmIChQeUludF9DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgbG9uZyBpID0gUHlJbnRfQXNMb25nKGl0ZW0pOwotI2Vsc2UKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfSW5kZXhFcnJvcik7Ci0jZW5kaWYKIAogICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xMzI5LDcgKzEzOTIsNyBAQAogICAgICAgICBQeU9iamVjdCogc2VxID0gTlVMTDsKIAogICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGl0ZW0sCiAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCwKQEAgLTEzMzcsOSArMTQwMCw3NCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgICAgICBuZXdsZW4gPSAwOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogRGVsZXRlIHNsaWNlICovCisgICAgICAgICAgICBzaXplX3QgY3VyOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBpZiAoc2xpY2VsZW4gPD0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgLyogU2luY2Ugd2UncmUgZGVsZXRpbmcsIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHJhbmdlIGRvZXNuJ3QgbWF0dGVyLAorICAgICAgICAgICAgICogc28gZm9yIHNpbXBsaWNpdHkgbWFrZSBpdCBhbHdheXMgYXNjZW5kaW5nLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChzdGVwIDwgMCkgeworICAgICAgICAgICAgICAgIHN0b3AgPSBzdGFydCArIDE7CisgICAgICAgICAgICAgICAgc3RhcnQgPSBzdG9wICsgc3RlcCAqIChzbGljZWxlbiAtIDEpIC0gMTsKKyAgICAgICAgICAgICAgICBzdGVwID0gLXN0ZXA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuIDw9IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKTsKKworICAgICAgICAgICAgLyogcmVjeWNsZSBpcyBhIGxpc3QgdGhhdCB3aWxsIGNvbnRhaW4gYWxsIHRoZSBjaGlsZHJlbgorICAgICAgICAgICAgICogc2NoZWR1bGVkIGZvciByZW1vdmFsLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICghKHJlY3ljbGUgPSBQeUxpc3RfTmV3KHNsaWNlbGVuKSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogVGhpcyBsb29wIHdhbGtzIG92ZXIgYWxsIHRoZSBjaGlsZHJlbiB0aGF0IGhhdmUgdG8gYmUgZGVsZXRlZCwKKyAgICAgICAgICAgICAqIHdpdGggY3VyIHBvaW50aW5nIGF0IHRoZW0uIG51bV9tb3ZlZCBpcyB0aGUgYW1vdW50IG9mIGNoaWxkcmVuCisgICAgICAgICAgICAgKiB1bnRpbCB0aGUgbmV4dCBkZWxldGVkIGNoaWxkIHRoYXQgaGF2ZSB0byBiZSAic2hpZnRlZCBkb3duIiB0bworICAgICAgICAgICAgICogb2NjdXB5IHRoZSBkZWxldGVkJ3MgcGxhY2VzLgorICAgICAgICAgICAgICogTm90ZSB0aGF0IGluIHRoZSBpdGggaXRlcmF0aW9uLCBzaGlmdGluZyBpcyBkb25lIGkraSBwbGFjZXMgZG93bgorICAgICAgICAgICAgICogYmVjYXVzZSBpIGNoaWxkcmVuIHdlcmUgYWxyZWFkeSByZW1vdmVkLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBjdXIgPCAoc2l6ZV90KXN0b3A7IGN1ciArPSBzdGVwLCArK2kpIHsKKyAgICAgICAgICAgICAgICAvKiBDb21wdXRlIGhvdyBtYW55IGNoaWxkcmVuIGhhdmUgdG8gYmUgbW92ZWQsIGNsaXBwaW5nIGF0IHRoZQorICAgICAgICAgICAgICAgICAqIGxpc3QgZW5kLgorICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBudW1fbW92ZWQgPSBzdGVwIC0gMTsKKyAgICAgICAgICAgICAgICBpZiAoY3VyICsgc3RlcCA+PSAoc2l6ZV90KXNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgbnVtX21vdmVkID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCAtIGN1ciAtIDE7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlY3ljbGUsIGksIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltjdXJdKTsKKworICAgICAgICAgICAgICAgIG1lbW1vdmUoCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbiArIGN1ciAtIGksCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbiArIGN1ciArIDEsCisgICAgICAgICAgICAgICAgICAgIG51bV9tb3ZlZCAqIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIExlZnRvdmVyICJ0YWlsIiBhZnRlciB0aGUgbGFzdCByZW1vdmVkIGNoaWxkICovCisgICAgICAgICAgICBjdXIgPSBzdGFydCArIChzaXplX3Qpc2xpY2VsZW4gKiBzdGVwOworICAgICAgICAgICAgaWYgKGN1ciA8IChzaXplX3Qpc2VsZi0+ZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgICAgIG1lbW1vdmUoCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbiArIGN1ciAtIHNsaWNlbGVuLAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIsCisgICAgICAgICAgICAgICAgICAgIChzZWxmLT5leHRyYS0+bGVuZ3RoIC0gY3VyKSAqIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGggLT0gc2xpY2VsZW47CisKKyAgICAgICAgICAgIC8qIERpc2NhcmQgdGhlIHJlY3ljbGUgbGlzdCB3aXRoIGFsbCB0aGUgZGVsZXRlZCBzdWItZWxlbWVudHMgKi8KKyAgICAgICAgICAgIFB5X1hERUNSRUYocmVjeWNsZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEEgbmV3IHNsaWNlIGlzIGFjdHVhbGx5IGJlaW5nIGFzc2lnbmVkICovCiAgICAgICAgICAgICBzZXEgPSBQeVNlcXVlbmNlX0Zhc3QodmFsdWUsICIiKTsKICAgICAgICAgICAgIGlmICghc2VxKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KApAQCAtMTM1NCwxOSArMTQ4MiwxMyBAQAogICAgICAgICBpZiAoc3RlcCAhPSAgMSAmJiBuZXdsZW4gIT0gc2xpY2VsZW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDApCi0gICAgICAgICAgICAgICAgImF0dGVtcHQgdG8gYXNzaWduIHNlcXVlbmNlIG9mIHNpemUgJWQgIgotICAgICAgICAgICAgICAgICJ0byBleHRlbmRlZCBzbGljZSBvZiBzaXplICVkIiwKLSNlbHNlCiAgICAgICAgICAgICAgICAgImF0dGVtcHQgdG8gYXNzaWduIHNlcXVlbmNlIG9mIHNpemUgJXpkICIKICAgICAgICAgICAgICAgICAidG8gZXh0ZW5kZWQgc2xpY2Ugb2Ygc2l6ZSAlemQiLAotI2VuZGlmCiAgICAgICAgICAgICAgICAgbmV3bGVuLCBzbGljZWxlbgogICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotCiAgICAgICAgIC8qIFJlc2l6ZSBiZWZvcmUgY3JlYXRpbmcgdGhlIHJlY3ljbGUgYmluLCB0byBwcmV2ZW50IHJlZmxlYWtzLiAqLwogICAgICAgICBpZiAobmV3bGVuID4gc2xpY2VsZW4pIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50X3Jlc2l6ZShzZWxmLCBuZXdsZW4gLSBzbGljZWxlbikgPCAwKSB7CkBAIC0xNDMxLDE0ICsxNTUzLDE0IEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiBlbGVtZW50X21ldGhvZHNbXSA9IHsKIAotICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY2xlYXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jbGVhcm1ldGhvZCwgTUVUSF9WQVJBUkdTfSwKIAogICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2dldCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InNldCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9zZXQsIE1FVEhfVkFSQVJHU30sCiAKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kYWxsLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAKICAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9hcHBlbmQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZXh0ZW5kLCBNRVRIX1ZBUkFSR1N9LApAQCAtMTQ0Nyw3ICsxNTY5LDcgQEAKIAogICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiaXRlcnRleHQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcnRleHQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyZmluZCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKIAogICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGNoaWxkcmVuIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2dldGNoaWxkcmVuLCBNRVRIX1ZBUkFSR1N9LApAQCAtMTQ1OSwxOCArMTU4MSw3IEBACiAKICAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NvcHksIE1FVEhfVkFSQVJHU30sCiAgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZGVlcGNvcHksIE1FVEhfVkFSQVJHU30sCi0KLSAgICAvKiBTb21lIDIuMyBhbmQgMi40IHZlcnNpb25zIGRvIG5vdCBoYW5kbGUgdGhlIF9fY29weV9fIG1ldGhvZCBvbgotICAgICAgIEMgb2JqZWN0cyBjb3JyZWN0bHksIHNvIHdlIGhhdmUgdG8gZmFrZSBpdCB1c2luZyBhIF9fcmVkdWNlX18tCi0gICAgICAgYmFzZWQgaGFjayAoc2VlIHRoZSBlbGVtZW50X3JlZHVjZSBpbXBsZW1lbnRhdGlvbiBhYm92ZSBmb3IKLSAgICAgICBkZXRhaWxzKS4gKi8KLQotICAgIC8qIFRoZSBiZWhhdmlvdXIgaGFzIGJlZW4gY2hhbmdlZCBpbiAyLjMuNSBhbmQgMi40LjEsIHNvIHdlJ3JlCi0gICAgICAgdXNpbmcgYSBydW50aW1lIHRlc3QgdG8gZmlndXJlIG91dCBpZiB3ZSBuZWVkIHRvIGZha2UgdGhpbmdzCi0gICAgICAgb3Igbm93IChzZWUgdGhlIGluaXQgY29kZSBiZWxvdykuICBUaGUgZm9sbG93aW5nIGVudHJ5IGlzCi0gICAgICAgZW5hYmxlZCBvbmx5IGlmIHRoZSBoYWNrIGlzIG5lZWRlZC4gKi8KLQotICAgIHsiIV9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfcmVkdWNlLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiX19zaXplb2ZfXyIsIGVsZW1lbnRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCiAKICAgICB7TlVMTCwgTlVMTH0KIH07CkBAIC0xNDgzLDcgKzE1OTQsNyBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7Ci0gICAgCisKICAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTUxMCw3ICsxNjIxLDcgQEAKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAgICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKICAgICB9CiAKQEAgLTE1MjEsMTYgKzE2MzIsMTUgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgaW50Ci1lbGVtZW50X3NldGF0dHIoRWxlbWVudE9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgUHlPYmplY3QqIHZhbHVlKQorc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF9zZXRhdHRybyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaiwgUHlPYmplY3QqIHZhbHVlKQogewotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBlbGVtZW50IGF0dHJpYnV0ZXMiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGNoYXIgKm5hbWUgPSAiIjsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQorICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKKworICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+dGFnKTsKQEAgLTE1NDYsMTYgKzE2NTYsMTYgQEAKICAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRhaWwpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7CiAgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogICAgICAgICBzZWxmLT5leHRyYS0+YXR0cmliID0gdmFsdWU7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5leHRyYS0+YXR0cmliKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgZWxlbWVudF9hc19zZXF1ZW5jZSA9IHsKQEAgLTE1NzgsNTYgKzE2ODgsMzMxIEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIkVsZW1lbnQiLCBzaXplb2YoRWxlbWVudE9iamVjdCksIDAsCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKWVsZW1lbnRfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsIC8qIHRwX3ByaW50ICovCi0gICAgMCwgLyogdHBfZ2V0YXR0ciAqLwotICAgIChzZXRhdHRyZnVuYyllbGVtZW50X3NldGF0dHIsIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYyllbGVtZW50X3JlcHIsIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAmZWxlbWVudF9hc19zZXF1ZW5jZSwgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAmZWxlbWVudF9hc19tYXBwaW5nLCAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgLyogdHBfaGFzaCAqLwotICAgIDAsIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qIHRwX2ZsYWdzICovCi0gICAgMCwgLyogdHBfZG9jICovCi0gICAgMCwgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAvKiB0cF9jbGVhciAqLwotICAgIDAsIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAvKiB0cF9pdGVyICovCi0gICAgMCwgLyogdHBfaXRlcm5leHQgKi8KLSAgICBlbGVtZW50X21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpZWxlbWVudF9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyllbGVtZW50X3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAmZWxlbWVudF9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZlbGVtZW50X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYyllbGVtZW50X3NldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyllbGVtZW50X2djX3RyYXZlcnNlLCAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSllbGVtZW50X2djX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoRWxlbWVudE9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBlbGVtZW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyllbGVtZW50X2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGVsZW1lbnRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEVsZW1lbnQgaXRlcmF0b3IgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRWxlbWVudEl0ZXJPYmplY3QgcmVwcmVzZW50cyB0aGUgaXRlcmF0aW9uIHN0YXRlIG92ZXIgYW4gWE1MIGVsZW1lbnQgaW4KKyAqIHByZS1vcmRlciB0cmF2ZXJzYWwuIFRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggc3ViLWVsZW1lbnQgc2hvdWxkIGJlIHJldHVybmVkCisgKiBuZXh0LCBhIHN0YWNrIG9mIHBhcmVudHMgaXMgbWFpbnRhaW5lZC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN0YWNrLWJhc2VkCisgKiBpdGVyYXRpdmUgcHJlLW9yZGVyIHRyYXZlcnNhbCBvZiBhIHRyZWUuCisgKiBUaGUgc3RhY2sgaXMgbWFuYWdlZCB1c2luZyBhIHNpbmdsZS1saW5rZWQgbGlzdCBzdGFydGluZyBhdCBwYXJlbnRfc3RhY2suCisgKiBFYWNoIHN0YWNrIG5vZGUgY29udGFpbnMgdGhlIHNhdmVkIHBhcmVudCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyCisgKiB0aGUgY3VycmVudCBvbmUgaXMgZXhoYXVzdGVkLCBhbmQgdGhlIG5leHQgY2hpbGQgdG8gZXhhbWluZSBpbiB0aGF0IHBhcmVudC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90IHsKKyAgICBFbGVtZW50T2JqZWN0ICpwYXJlbnQ7CisgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKKyAgICBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90ICpuZXh0OworfSBQYXJlbnRMb2NhdG9yOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFBhcmVudExvY2F0b3IgKnBhcmVudF9zdGFjazsKKyAgICBFbGVtZW50T2JqZWN0ICpyb290X2VsZW1lbnQ7CisgICAgUHlPYmplY3QgKnNvdWdodF90YWc7CisgICAgaW50IHJvb3RfZG9uZTsKKyAgICBpbnQgZ2V0dGV4dDsKK30gRWxlbWVudEl0ZXJPYmplY3Q7CisKKworc3RhdGljIHZvaWQKK2VsZW1lbnRpdGVyX2RlYWxsb2MoRWxlbWVudEl0ZXJPYmplY3QgKml0KQoreworICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOworICAgIHdoaWxlIChwKSB7CisgICAgICAgIFBhcmVudExvY2F0b3IgKnRlbXAgPSBwOworICAgICAgICBQeV9YREVDUkVGKHAtPnBhcmVudCk7CisgICAgICAgIHAgPSBwLT5uZXh0OworICAgICAgICBQeU9iamVjdF9GcmVlKHRlbXApOworICAgIH0KKworICAgIFB5X1hERUNSRUYoaXQtPnNvdWdodF90YWcpOworICAgIFB5X1hERUNSRUYoaXQtPnJvb3RfZWxlbWVudCk7CisKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKGl0KTsKKyAgICBQeU9iamVjdF9HQ19EZWwoaXQpOworfQorCitzdGF0aWMgaW50CitlbGVtZW50aXRlcl90cmF2ZXJzZShFbGVtZW50SXRlck9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOworICAgIHdoaWxlIChwKSB7CisgICAgICAgIFB5X1ZJU0lUKHAtPnBhcmVudCk7CisgICAgICAgIHAgPSBwLT5uZXh0OworICAgIH0KKworICAgIFB5X1ZJU0lUKGl0LT5yb290X2VsZW1lbnQpOworICAgIFB5X1ZJU0lUKGl0LT5zb3VnaHRfdGFnKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogSGVscGVyIGZ1bmN0aW9uIGZvciBlbGVtZW50aXRlcl9uZXh0LiBBZGQgYSBuZXcgcGFyZW50IHRvIHRoZSBwYXJlbnQgc3RhY2suCisgKi8KK3N0YXRpYyBQYXJlbnRMb2NhdG9yICoKK3BhcmVudF9zdGFja19wdXNoX25ldyhQYXJlbnRMb2NhdG9yICpzdGFjaywgRWxlbWVudE9iamVjdCAqcGFyZW50KQoreworICAgIFBhcmVudExvY2F0b3IgKm5ld19ub2RlID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSk7CisgICAgaWYgKG5ld19ub2RlKSB7CisgICAgICAgIG5ld19ub2RlLT5wYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgIFB5X0lOQ1JFRihwYXJlbnQpOworICAgICAgICBuZXdfbm9kZS0+Y2hpbGRfaW5kZXggPSAwOworICAgICAgICBuZXdfbm9kZS0+bmV4dCA9IHN0YWNrOworICAgIH0KKyAgICByZXR1cm4gbmV3X25vZGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50aXRlcl9uZXh0KEVsZW1lbnRJdGVyT2JqZWN0ICppdCkKK3sKKyAgICAvKiBTdWItZWxlbWVudCBpdGVyYXRvci4KKyAgICAgKiAKKyAgICAgKiBBIHNob3J0IG5vdGUgb24gZ2V0dGV4dDogdGhpcyBmdW5jdGlvbiBzZXJ2ZXMgYm90aCB0aGUgaXRlcigpIGFuZAorICAgICAqIGl0ZXJ0ZXh0KCkgbWV0aG9kcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLiBIb3dldmVyLCB0aGVyZSBhcmUgYSBmZXcKKyAgICAgKiBzbWFsbCBkaWZmZXJlbmNlcyBpbiB0aGUgd2F5IHRoZXNlIGl0ZXJhdGlvbnMgd29yay4gTmFtZWx5OgorICAgICAqICAgLSBpdGVydGV4dCgpIG9ubHkgeWllbGRzIHRleHQgZnJvbSBub2RlcyB0aGF0IGhhdmUgaXQsIGFuZCBjb250aW51ZXMKKyAgICAgKiAgICAgaXRlcmF0aW5nIHdoZW4gYSBub2RlIGRvZXNuJ3QgaGF2ZSB0ZXh0IChzbyBpdCBkb2Vzbid0IHJldHVybiBhbnkKKyAgICAgKiAgICAgbm9kZSBsaWtlIGl0ZXIoKSkKKyAgICAgKiAgIC0gaXRlcnRleHQoKSBhbHNvIGhhcyB0byBoYW5kbGUgdGFpbCwgYWZ0ZXIgZmluaXNoaW5nIHdpdGggYWxsIHRoZQorICAgICAqICAgICBjaGlsZHJlbiBvZiBhIG5vZGUuCisgICAgICovCisgICAgRWxlbWVudE9iamVjdCAqY3VyX3BhcmVudDsKKyAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLyogSGFuZGxlIHRoZSBjYXNlIHJlYWNoZWQgaW4gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGl0ZXJhdGlvbiwgd2hlcmUKKyAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gVGhlIHJvb3RfZG9uZSBmbGFnIGdpdmVzIHVzIGluZGljYXRpb24KKyAgICAgICAgICogd2hldGhlciB3ZSd2ZSBqdXN0IHN0YXJ0ZWQgaXRlcmF0aW5nIChzbyByb290X2RvbmUgaXMgMCksIGluIHdoaWNoCisgICAgICAgICAqIGNhc2UgdGhlIHJvb3QgaXMgcmV0dXJuZWQuIElmIHJvb3RfZG9uZSBpcyAxIGFuZCB3ZSdyZSBoZXJlLCB0aGUKKyAgICAgICAgICogaXRlcmF0b3IgaXMgZXhoYXVzdGVkLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+cm9vdF9kb25lKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnJvb3RfZWxlbWVudCk7CisgICAgICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGl0LT5yb290X2RvbmUgPSAxOworICAgICAgICAgICAgICAgIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lIHx8CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+cm9vdF9lbGVtZW50LT50YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IEpPSU5fT0JKKGl0LT5yb290X2VsZW1lbnQtPnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpdC0+cm9vdF9lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilpdC0+cm9vdF9lbGVtZW50OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogU2VlIGlmIHRoZXJlIGFyZSBjaGlsZHJlbiBsZWZ0IHRvIHRyYXZlcnNlIGluIHRoZSBjdXJyZW50IHBhcmVudC4gSWYKKyAgICAgICAgICogeWVzLCB2aXNpdCB0aGUgbmV4dCBjaGlsZC4gSWYgbm90LCBwb3AgdGhlIHN0YWNrIGFuZCB0cnkgYWdhaW4uCisgICAgICAgICAqLworICAgICAgICBjdXJfcGFyZW50ID0gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50OworICAgICAgICBjaGlsZF9pbmRleCA9IGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4OworICAgICAgICBpZiAoY3VyX3BhcmVudC0+ZXh0cmEgJiYgY2hpbGRfaW5kZXggPCBjdXJfcGFyZW50LT5leHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICBFbGVtZW50T2JqZWN0ICpjaGlsZCA9IChFbGVtZW50T2JqZWN0ICopCisgICAgICAgICAgICAgICAgY3VyX3BhcmVudC0+ZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKKyAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4Kys7CisgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkKTsKKyAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gSk9JTl9PQkooY2hpbGQtPnRleHQpOworICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9Jc1RydWUodGV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUgfHwKKyAgICAgICAgICAgICAgICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woY2hpbGQtPnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGNoaWxkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopY2hpbGQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdGFpbCA9IGl0LT5nZXR0ZXh0ID8gSk9JTl9PQkooY3VyX3BhcmVudC0+dGFpbCkgOiBQeV9Ob25lOyAgICAgICAgICAgIAorICAgICAgICAgICAgUGFyZW50TG9jYXRvciAqbmV4dCA9IGl0LT5wYXJlbnRfc3RhY2stPm5leHQ7CisgICAgICAgICAgICBQeV9YREVDUkVGKGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCk7CisgICAgICAgICAgICBQeU9iamVjdF9GcmVlKGl0LT5wYXJlbnRfc3RhY2spOworICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IG5leHQ7CisKKyAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50IGhlcmU7CisgICAgICAgICAgICAgKiB0aGlzIGlzIGJlY2F1c2UgaXRlcnRleHQoKSBpcyBzdXBwb3NlZCB0byBvbmx5IHJldHVybiAqaW5uZXIqCisgICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgJiYgUHlPYmplY3RfSXNUcnVlKHRhaWwpKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOworICAgICAgICAgICAgICAgIHJldHVybiB0YWlsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50SXRlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfZWxlbWVudHRyZWUuX2VsZW1lbnRfaXRlcmF0b3IiLCAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihFbGVtZW50SXRlck9iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcillbGVtZW50aXRlcl9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpZWxlbWVudGl0ZXJfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWVsZW1lbnRpdGVyX25leHQsICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCitjcmVhdGVfZWxlbWVudGl0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywgaW50IGdldHRleHQpCit7CisgICAgRWxlbWVudEl0ZXJPYmplY3QgKml0OworICAgIFB5T2JqZWN0ICpzdGFyID0gTlVMTDsKKworICAgIGl0ID0gUHlPYmplY3RfR0NfTmV3KEVsZW1lbnRJdGVyT2JqZWN0LCAmRWxlbWVudEl0ZXJfVHlwZSk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCEoaXQtPnBhcmVudF9zdGFjayA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpKSkgeworICAgICAgICBQeU9iamVjdF9HQ19EZWwoaXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgPSBOVUxMOworICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4ID0gMDsKKyAgICBpdC0+cGFyZW50X3N0YWNrLT5uZXh0ID0gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodGFnKSkKKyAgICAgICAgc3RhciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIqIik7CisgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayh0YWcpKQorICAgICAgICBzdGFyID0gUHlCeXRlc19Gcm9tU3RyaW5nKCIqIik7CisKKyAgICBpZiAoc3RhciAmJiBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wodGFnLCBzdGFyLCBQeV9FUSkgPT0gMSkKKyAgICAgICAgdGFnID0gUHlfTm9uZTsKKworICAgIFB5X1hERUNSRUYoc3Rhcik7CisgICAgaXQtPnNvdWdodF90YWcgPSB0YWc7CisgICAgaXQtPnJvb3RfZG9uZSA9IDA7CisgICAgaXQtPmdldHRleHQgPSBnZXR0ZXh0OworICAgIGl0LT5yb290X2VsZW1lbnQgPSBzZWxmOworCisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIFB5X0lOQ1JFRih0YWcpOworCisgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOworICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKK30KKworCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogLyogdGhlIHRyZWUgYnVpbGRlciB0eXBlICovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAKLSAgICBQeU9iamVjdCogcm9vdDsgLyogcm9vdCBub2RlIChmaXJzdCBjcmVhdGVkIG5vZGUpICovCisgICAgUHlPYmplY3QgKnJvb3Q7IC8qIHJvb3Qgbm9kZSAoZmlyc3QgY3JlYXRlZCBub2RlKSAqLwogCi0gICAgRWxlbWVudE9iamVjdCogdGhpczsgLyogY3VycmVudCBub2RlICovCi0gICAgRWxlbWVudE9iamVjdCogbGFzdDsgLyogbW9zdCByZWNlbnRseSBjcmVhdGVkIG5vZGUgKi8KKyAgICBQeU9iamVjdCAqdGhpczsgLyogY3VycmVudCBub2RlICovCisgICAgUHlPYmplY3QgKmxhc3Q7IC8qIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBub2RlICovCiAKLSAgICBQeU9iamVjdCogZGF0YTsgLyogZGF0YSBjb2xsZWN0b3IgKHN0cmluZyBvciBsaXN0KSwgb3IgTlVMTCAqLworICAgIFB5T2JqZWN0ICpkYXRhOyAvKiBkYXRhIGNvbGxlY3RvciAoc3RyaW5nIG9yIGxpc3QpLCBvciBOVUxMICovCiAKLSAgICBQeU9iamVjdCogc3RhY2s7IC8qIGVsZW1lbnQgc3RhY2sgKi8KLSAgICBQeV9zc2l6ZV90IGluZGV4OyAvKiBjdXJyZW50IHN0YWNrIHNpemUgKDA9ZW1wdHkpICovCisgICAgUHlPYmplY3QgKnN0YWNrOyAvKiBlbGVtZW50IHN0YWNrICovCisgICAgUHlfc3NpemVfdCBpbmRleDsgLyogY3VycmVudCBzdGFjayBzaXplICgwIG1lYW5zIGVtcHR5KSAqLworCisgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeTsKIAogICAgIC8qIGVsZW1lbnQgdHJhY2luZyAqLwotICAgIFB5T2JqZWN0KiBldmVudHM7IC8qIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMIGlmIG5vdCBjb2xsZWN0aW5nICovCi0gICAgUHlPYmplY3QqIHN0YXJ0X2V2ZW50X29iajsgLyogZXZlbnQgb2JqZWN0cyAoTlVMTCB0byBpZ25vcmUpICovCi0gICAgUHlPYmplY3QqIGVuZF9ldmVudF9vYmo7Ci0gICAgUHlPYmplY3QqIHN0YXJ0X25zX2V2ZW50X29iajsKLSAgICBQeU9iamVjdCogZW5kX25zX2V2ZW50X29iajsKLQorICAgIFB5T2JqZWN0ICpldmVudHM7IC8qIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMIGlmIG5vdCBjb2xsZWN0aW5nICovCisgICAgUHlPYmplY3QgKnN0YXJ0X2V2ZW50X29iajsgLyogZXZlbnQgb2JqZWN0cyAoTlVMTCB0byBpZ25vcmUpICovCisgICAgUHlPYmplY3QgKmVuZF9ldmVudF9vYmo7CisgICAgUHlPYmplY3QgKnN0YXJ0X25zX2V2ZW50X29iajsKKyAgICBQeU9iamVjdCAqZW5kX25zX2V2ZW50X29iajsKIH0gVHJlZUJ1aWxkZXJPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgVHJlZUJ1aWxkZXJfVHlwZTsKQEAgLTE2MzcsNzYgKzIwMjIsMTU4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgKi8KIAotTE9DQUwoUHlPYmplY3QqKQotdHJlZWJ1aWxkZXJfbmV3KHZvaWQpCitzdGF0aWMgUHlPYmplY3QgKgordHJlZWJ1aWxkZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmOworICAgIFRyZWVCdWlsZGVyT2JqZWN0ICp0ID0gKFRyZWVCdWlsZGVyT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHQgIT0gTlVMTCkgeworICAgICAgICB0LT5yb290ID0gTlVMTDsKIAotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoVHJlZUJ1aWxkZXJPYmplY3QsICZUcmVlQnVpbGRlcl9UeXBlKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICB0LT50aGlzID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICB0LT5sYXN0ID0gUHlfTm9uZTsKIAotICAgIHNlbGYtPnJvb3QgPSBOVUxMOworICAgICAgICB0LT5kYXRhID0gTlVMTDsKKyAgICAgICAgdC0+ZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKKyAgICAgICAgdC0+c3RhY2sgPSBQeUxpc3RfTmV3KDIwKTsKKyAgICAgICAgaWYgKCF0LT5zdGFjaykgeworICAgICAgICAgICAgUHlfREVDUkVGKHQtPnRoaXMpOworICAgICAgICAgICAgUHlfREVDUkVGKHQtPmxhc3QpOworICAgICAgICAgICAgUHlfREVDUkVGKChQeU9iamVjdCAqKSB0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHQtPmluZGV4ID0gMDsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICBzZWxmLT50aGlzID0gKEVsZW1lbnRPYmplY3QqKSBQeV9Ob25lOwotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHNlbGYtPmxhc3QgPSAoRWxlbWVudE9iamVjdCopIFB5X05vbmU7Ci0KLSAgICBzZWxmLT5kYXRhID0gTlVMTDsKLQotICAgIHNlbGYtPnN0YWNrID0gUHlMaXN0X05ldygyMCk7Ci0gICAgc2VsZi0+aW5kZXggPSAwOwotCi0gICAgc2VsZi0+ZXZlbnRzID0gTlVMTDsKLSAgICBzZWxmLT5zdGFydF9ldmVudF9vYmogPSBzZWxmLT5lbmRfZXZlbnRfb2JqID0gTlVMTDsKLSAgICBzZWxmLT5zdGFydF9uc19ldmVudF9vYmogPSBzZWxmLT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKLQotICAgIEFMTE9DKHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksICJjcmVhdGUgdHJlZWJ1aWxkZXIiKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOworICAgICAgICB0LT5ldmVudHMgPSBOVUxMOworICAgICAgICB0LT5zdGFydF9ldmVudF9vYmogPSB0LT5lbmRfZXZlbnRfb2JqID0gTlVMTDsKKyAgICAgICAgdC0+c3RhcnRfbnNfZXZlbnRfb2JqID0gdC0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QgKil0OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi10cmVlYnVpbGRlcihQeU9iamVjdCogc2VsZl8sIFB5T2JqZWN0KiBhcmdzKQorc3RhdGljIGludAordHJlZWJ1aWxkZXJfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOlRyZWVCdWlsZGVyIikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZWxlbWVudF9mYWN0b3J5IiwgMH07CisgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeSA9IE5VTEw7CisgICAgVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGZfdGIgPSAoVHJlZUJ1aWxkZXJPYmplY3QgKilzZWxmOworICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICByZXR1cm4gdHJlZWJ1aWxkZXJfbmV3KCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPOlRyZWVCdWlsZGVyIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudF9mYWN0b3J5KSB7CisgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50X2ZhY3RvcnkpOworICAgICAgICB0bXAgPSBzZWxmX3RiLT5lbGVtZW50X2ZhY3Rvcnk7CisgICAgICAgIHNlbGZfdGItPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKKyAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9nY190cmF2ZXJzZShUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+cm9vdCk7CisgICAgUHlfVklTSVQoc2VsZi0+dGhpcyk7CisgICAgUHlfVklTSVQoc2VsZi0+bGFzdCk7CisgICAgUHlfVklTSVQoc2VsZi0+ZGF0YSk7CisgICAgUHlfVklTSVQoc2VsZi0+c3RhY2spOworICAgIFB5X1ZJU0lUKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2djX2NsZWFyKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmVuZF9uc19ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHNlbGYtPnN0YXJ0X25zX2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZW5kX2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIoc2VsZi0+c3RhcnRfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUihzZWxmLT5ldmVudHMpOworICAgIFB5X0NMRUFSKHNlbGYtPnN0YWNrKTsKKyAgICBQeV9DTEVBUihzZWxmLT5kYXRhKTsKKyAgICBQeV9DTEVBUihzZWxmLT5sYXN0KTsKKyAgICBQeV9DTEVBUihzZWxmLT50aGlzKTsKKyAgICBQeV9DTEVBUihzZWxmLT5lbGVtZW50X2ZhY3RvcnkpOworICAgIFB5X0NMRUFSKHNlbGYtPnJvb3QpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZAotdHJlZWJ1aWxkZXJfZGVhbGxvYyhUcmVlQnVpbGRlck9iamVjdCogc2VsZikKK3RyZWVidWlsZGVyX2RlYWxsb2MoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5lbmRfbnNfZXZlbnRfb2JqKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnN0YXJ0X25zX2V2ZW50X29iaik7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5lbmRfZXZlbnRfb2JqKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnN0YXJ0X2V2ZW50X29iaik7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5ldmVudHMpOwotICAgIFB5X0RFQ1JFRihzZWxmLT5zdGFjayk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5kYXRhKTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPnRoaXMpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+cm9vdCk7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKKyAgICB0cmVlYnVpbGRlcl9nY19jbGVhcihzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQogCi0gICAgUkVMRUFTRShzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAiZGVzdHJveSB0cmVlYnVpbGRlciIpOworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIGhlbHBlcnMgZm9yIGhhbmRsaW5nIG9mIGFyYml0cmFyeSBlbGVtZW50LWxpa2Ugb2JqZWN0cyAqLwogCi0gICAgUHlPYmplY3RfRGVsKHNlbGYpOworc3RhdGljIGludAordHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGV4dF9vcl90YWlsKFB5T2JqZWN0ICplbGVtZW50LCBQeU9iamVjdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmRlc3QsIF9QeV9JZGVudGlmaWVyICpuYW1lKQoreworICAgIGlmIChFbGVtZW50X0NoZWNrRXhhY3QoZWxlbWVudCkpIHsKKyAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKCpkZXN0KSk7CisgICAgICAgICpkZXN0ID0gSk9JTl9TRVQoZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3QoZGF0YSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICpqb2luZWQgPSBsaXN0X2pvaW4oZGF0YSk7CisgICAgICAgIGludCByOworICAgICAgICBpZiAoam9pbmVkID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHIgPSBfUHlPYmplY3RfU2V0QXR0cklkKGVsZW1lbnQsIG5hbWUsIGpvaW5lZCk7CisgICAgICAgIFB5X0RFQ1JFRihqb2luZWQpOworICAgICAgICByZXR1cm4gcjsKKyAgICB9Cit9CisKKy8qIFRoZXNlIHR3byBmdW5jdGlvbnMgc3RlYWwgYSByZWZlcmVuY2UgdG8gZGF0YSAqLworc3RhdGljIGludAordHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGV4dChQeU9iamVjdCAqZWxlbWVudCwgUHlPYmplY3QgKmRhdGEpCit7CisgICAgX1B5X0lERU5USUZJRVIodGV4dCk7CisgICAgcmV0dXJuIHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHRfb3JfdGFpbCgKKyAgICAgICAgZWxlbWVudCwgZGF0YSwgJigoRWxlbWVudE9iamVjdCAqKSBlbGVtZW50KS0+dGV4dCwgJlB5SWRfdGV4dCk7Cit9CisKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX3NldF9lbGVtZW50X3RhaWwoUHlPYmplY3QgKmVsZW1lbnQsIFB5T2JqZWN0ICpkYXRhKQoreworICAgIF9QeV9JREVOVElGSUVSKHRhaWwpOworICAgIHJldHVybiB0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0X29yX3RhaWwoCisgICAgICAgIGVsZW1lbnQsIGRhdGEsICYoKEVsZW1lbnRPYmplY3QgKikgZWxlbWVudCktPnRhaWwsICZQeUlkX3RhaWwpOworfQorCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9hZGRfc3ViZWxlbWVudChQeU9iamVjdCAqZWxlbWVudCwgUHlPYmplY3QgKmNoaWxkKQoreworICAgIF9QeV9JREVOVElGSUVSKGFwcGVuZCk7CisgICAgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChlbGVtZW50KSkgeworICAgICAgICBFbGVtZW50T2JqZWN0ICplbGVtID0gKEVsZW1lbnRPYmplY3QgKikgZWxlbWVudDsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoZWxlbSwgY2hpbGQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChlbGVtZW50LCAmUHlJZF9hcHBlbmQsICJPIiwgY2hpbGQpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBoYW5kbGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCi10cmVlYnVpbGRlcl9oYW5kbGVfeG1sKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBzdGFuZGFsb25lKQotewotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1MT0NBTChQeU9iamVjdCopCiB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiB0YWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIGF0dHJpYikKIHsKQEAgLTE3MTUsMjcgKzIxODIsMjkgQEAKIAogICAgIGlmIChzZWxmLT5kYXRhKSB7CiAgICAgICAgIGlmIChzZWxmLT50aGlzID09IHNlbGYtPmxhc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT5sYXN0LT50ZXh0KSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0LT50ZXh0ID0gSk9JTl9TRVQoCi0gICAgICAgICAgICAgICAgc2VsZi0+ZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPmxhc3QtPnRhaWwpKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3QtPnRhaWwgPSBKT0lOX1NFVCgKLSAgICAgICAgICAgICAgICBzZWxmLT5kYXRhLCBQeUxpc3RfQ2hlY2tFeGFjdChzZWxmLT5kYXRhKQotICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAodHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGV4dChzZWxmLT5sYXN0LCBzZWxmLT5kYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90YWlsKHNlbGYtPmxhc3QsIHNlbGYtPmRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPmRhdGEgPSBOVUxMOwogICAgIH0KIAotICAgIG5vZGUgPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7Ci0gICAgaWYgKCFub2RlKQorICAgIGlmIChzZWxmLT5lbGVtZW50X2ZhY3RvcnkpIHsKKyAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKKyAgICB9IGVsc2UgeworICAgICAgICBub2RlID0gY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKKyAgICB9CisgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIHRoaXMgPSAoUHlPYmplY3QqKSBzZWxmLT50aGlzOworICAgIHRoaXMgPSBzZWxmLT50aGlzOwogCiAgICAgaWYgKHRoaXMgIT0gUHlfTm9uZSkgewotICAgICAgICBpZiAoZWxlbWVudF9hZGRfc3ViZWxlbWVudCgoRWxlbWVudE9iamVjdCopIHRoaXMsIG5vZGUpIDwgMCkKKyAgICAgICAgaWYgKHRyZWVidWlsZGVyX2FkZF9zdWJlbGVtZW50KHRoaXMsIG5vZGUpIDwgMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHNlbGYtPnJvb3QpIHsKQEAgLTE3NjEsMTkgKzIyMzAsMTcgQEAKIAogICAgIFB5X0RFQ1JFRih0aGlzKTsKICAgICBQeV9JTkNSRUYobm9kZSk7Ci0gICAgc2VsZi0+dGhpcyA9IChFbGVtZW50T2JqZWN0Kikgbm9kZTsKKyAgICBzZWxmLT50aGlzID0gbm9kZTsKIAogICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKICAgICBQeV9JTkNSRUYobm9kZSk7Ci0gICAgc2VsZi0+bGFzdCA9IChFbGVtZW50T2JqZWN0Kikgbm9kZTsKKyAgICBzZWxmLT5sYXN0ID0gbm9kZTsKIAogICAgIGlmIChzZWxmLT5zdGFydF9ldmVudF9vYmopIHsKICAgICAgICAgUHlPYmplY3QqIHJlczsKICAgICAgICAgUHlPYmplY3QqIGFjdGlvbiA9IHNlbGYtPnN0YXJ0X2V2ZW50X29iajsKLSAgICAgICAgcmVzID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIHJlcyA9IFB5VHVwbGVfUGFjaygyLCBhY3Rpb24sIG5vZGUpOwogICAgICAgICBpZiAocmVzKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoYWN0aW9uKTsgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDAsIChQeU9iamVjdCopIGFjdGlvbik7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobm9kZSk7ICAgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDEsIChQeU9iamVjdCopIG5vZGUpOwogICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChzZWxmLT5ldmVudHMsIHJlcyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgfSBlbHNlCkBAIC0xNzkxLDcgKzIyNTgsNyBAQAogdHJlZWJ1aWxkZXJfaGFuZGxlX2RhdGEoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBkYXRhKQogewogICAgIGlmICghc2VsZi0+ZGF0YSkgewotICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSAoRWxlbWVudE9iamVjdCopIFB5X05vbmUpIHsKKyAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogaWdub3JlIGNhbGxzIHRvIGRhdGEgYmVmb3JlIHRoZSBmaXJzdCBjYWxsIHRvIHN0YXJ0ICovCiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICAgICAgfQpAQCAtMTgwMSw2ICsyMjY4LDcgQEAKICAgICAgICAgLyogbW9yZSB0aGFuIG9uZSBpdGVtOyB1c2UgYSBsaXN0IHRvIGNvbGxlY3QgaXRlbXMgKi8KICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdChzZWxmLT5kYXRhKSAmJiBQeV9SRUZDTlQoc2VsZi0+ZGF0YSkgPT0gMSAmJgogICAgICAgICAgICAgUHlCeXRlc19DaGVja0V4YWN0KGRhdGEpICYmIFB5Qnl0ZXNfR0VUX1NJWkUoZGF0YSkgPT0gMSkgeworICAgICAgICAgICAgLyogWFhYIHRoaXMgY29kZSBwYXRoIHVudXNlZCBpbiBQeXRob24gMz8gKi8KICAgICAgICAgICAgIC8qIGV4cGF0IG9mdGVuIGdlbmVyYXRlcyBzaW5nbGUgY2hhcmFjdGVyIGRhdGEgc2VjdGlvbnM7IGhhbmRsZQogICAgICAgICAgICAgICAgdGhlIG1vc3QgY29tbW9uIGNhc2UgYnkgcmVzaXppbmcgdGhlIGV4aXN0aW5nIHN0cmluZy4uLiAqLwogICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRShzZWxmLT5kYXRhKTsKQEAgLTE4MzAsMTUgKzIyOTgsMTEgQEAKIAogICAgIGlmIChzZWxmLT5kYXRhKSB7CiAgICAgICAgIGlmIChzZWxmLT50aGlzID09IHNlbGYtPmxhc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT5sYXN0LT50ZXh0KSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0LT50ZXh0ID0gSk9JTl9TRVQoCi0gICAgICAgICAgICAgICAgc2VsZi0+ZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgaWYgKHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHQoc2VsZi0+bGFzdCwgc2VsZi0+ZGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+bGFzdC0+dGFpbCkpOwotICAgICAgICAgICAgc2VsZi0+bGFzdC0+dGFpbCA9IEpPSU5fU0VUKAotICAgICAgICAgICAgICAgIHNlbGYtPmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KHNlbGYtPmRhdGEpCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmICh0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90YWlsKHNlbGYtPmxhc3QsIHNlbGYtPmRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPmRhdGEgPSBOVUxMOwogICAgIH0KQEAgLTE4NTgsMTcgKzIzMjIsMTUgQEAKIAogICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKIAotICAgIHNlbGYtPmxhc3QgPSAoRWxlbWVudE9iamVjdCopIHNlbGYtPnRoaXM7Ci0gICAgc2VsZi0+dGhpcyA9IChFbGVtZW50T2JqZWN0KikgaXRlbTsKKyAgICBzZWxmLT5sYXN0ID0gc2VsZi0+dGhpczsKKyAgICBzZWxmLT50aGlzID0gaXRlbTsKIAogICAgIGlmIChzZWxmLT5lbmRfZXZlbnRfb2JqKSB7CiAgICAgICAgIFB5T2JqZWN0KiByZXM7CiAgICAgICAgIFB5T2JqZWN0KiBhY3Rpb24gPSBzZWxmLT5lbmRfZXZlbnRfb2JqOwogICAgICAgICBQeU9iamVjdCogbm9kZSA9IChQeU9iamVjdCopIHNlbGYtPmxhc3Q7Ci0gICAgICAgIHJlcyA9IFB5VHVwbGVfTmV3KDIpOworICAgICAgICByZXMgPSBQeVR1cGxlX1BhY2soMiwgYWN0aW9uLCBub2RlKTsKICAgICAgICAgaWYgKHJlcykgewotICAgICAgICAgICAgUHlfSU5DUkVGKGFjdGlvbik7IFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCAoUHlPYmplY3QqKSBhY3Rpb24pOwotICAgICAgICAgICAgUHlfSU5DUkVGKG5vZGUpOyAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAxLCAoUHlPYmplY3QqKSBub2RlKTsKICAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQoc2VsZi0+ZXZlbnRzLCByZXMpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTkxNCw4ICsyMzc2LDEyIEBACiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAxLCBwYXJjZWwpOwogICAgICAgICBQeUxpc3RfQXBwZW5kKHNlbGYtPmV2ZW50cywgcmVzKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgfSBlbHNlCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYoYWN0aW9uKTsKKyAgICAgICAgUHlfREVDUkVGKHBhcmNlbCk7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIEZJWE1FOiBwcm9wYWdhdGUgZXJyb3IgKi8KKyAgICB9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0xOTc3LDIyICsyNDQzLDEwIEBACiAgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJpYik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX3htbChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgUHlPYmplY3QqIGVuY29kaW5nOwotICAgIFB5T2JqZWN0KiBzdGFuZGFsb25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086eG1sIiwgJmVuY29kaW5nLCAmc3RhbmRhbG9uZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV94bWwoc2VsZiwgZW5jb2RpbmcsIHN0YW5kYWxvbmUpOwotfQotCiBzdGF0aWMgUHlNZXRob2REZWYgdHJlZWJ1aWxkZXJfbWV0aG9kc1tdID0gewogICAgIHsiZGF0YSIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfZGF0YSwgTUVUSF9WQVJBUkdTfSwKICAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9zdGFydCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImVuZCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfZW5kLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsieG1sIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl94bWwsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMjAwMSwzMSArMjQ1NSw0MiBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJUcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXRyZWVidWlsZGVyX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgLyogdHBfaGFzaCAqLwotICAgIDAsIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAvKiB0cF9zdHIgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgdHJlZWJ1aWxkZXJfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsIC8qIHRwX21lbWJlcnMgKi8KKyAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXRyZWVidWlsZGVyX2djX3RyYXZlcnNlLCAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KXRyZWVidWlsZGVyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHRyZWVidWlsZGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKXRyZWVidWlsZGVyX2luaXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgdHJlZWJ1aWxkZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQEAgLTIwMzQsNDAgKzI0OTksMzkgQEAKICNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKIAogI2luY2x1ZGUgImV4cGF0LmgiCi0KLSNpZiBkZWZpbmVkKFVTRV9QWUVYUEFUX0NBUEkpCiAjaW5jbHVkZSAicHlleHBhdC5oIgotc3RhdGljIHN0cnVjdCBQeUV4cGF0X0NBUEkqIGV4cGF0X2NhcGk7CitzdGF0aWMgc3RydWN0IFB5RXhwYXRfQ0FQSSAqZXhwYXRfY2FwaTsKICNkZWZpbmUgRVhQQVQoZnVuYykgKGV4cGF0X2NhcGktPmZ1bmMpCi0jZWxzZQotI2RlZmluZSBFWFBBVChmdW5jKSAoWE1MXyMjZnVuYykKLSNlbmRpZgorCitzdGF0aWMgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSBFeHBhdE1lbW9yeUhhbmRsZXIgPSB7CisgICAgUHlPYmplY3RfTWFsbG9jLCBQeU9iamVjdF9SZWFsbG9jLCBQeU9iamVjdF9GcmVlfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKIAogICAgIFhNTF9QYXJzZXIgcGFyc2VyOwogCi0gICAgUHlPYmplY3QqIHRhcmdldDsKLSAgICBQeU9iamVjdCogZW50aXR5OworICAgIFB5T2JqZWN0ICp0YXJnZXQ7CisgICAgUHlPYmplY3QgKmVudGl0eTsKIAotICAgIFB5T2JqZWN0KiBuYW1lczsKKyAgICBQeU9iamVjdCAqbmFtZXM7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX3htbDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3N0YXJ0OworICAgIFB5T2JqZWN0ICpoYW5kbGVfZGF0YTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2VuZDsKIAotICAgIFB5T2JqZWN0KiBoYW5kbGVfc3RhcnQ7Ci0gICAgUHlPYmplY3QqIGhhbmRsZV9kYXRhOwotICAgIFB5T2JqZWN0KiBoYW5kbGVfZW5kOworICAgIFB5T2JqZWN0ICpoYW5kbGVfY29tbWVudDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3BpOworICAgIFB5T2JqZWN0ICpoYW5kbGVfZG9jdHlwZTsKIAotICAgIFB5T2JqZWN0KiBoYW5kbGVfY29tbWVudDsKLSAgICBQeU9iamVjdCogaGFuZGxlX3BpOwotCi0gICAgUHlPYmplY3QqIGhhbmRsZV9jbG9zZTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2Nsb3NlOwogCiB9IFhNTFBhcnNlck9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZTsKIAorI2RlZmluZSBYTUxQYXJzZXJfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZYTUxQYXJzZXJfVHlwZSkKKwogLyogaGVscGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCkBAIC0yMDc2LDcgKzI1NDAsNyBAQAogICAgIC8qIGNvbnZlcnQgYSBVVEYtOCB0YWcvYXR0cmlidXRlIG5hbWUgZnJvbSB0aGUgZXhwYXQgcGFyc2VyCiAgICAgICAgdG8gYSB1bml2ZXJzYWwgbmFtZSBzdHJpbmcgKi8KIAotICAgIGludCBzaXplID0gc3RybGVuKHN0cmluZyk7CisgICAgUHlfc3NpemVfdCBzaXplID0gKFB5X3NzaXplX3QpIHN0cmxlbihzdHJpbmcpOwogICAgIFB5T2JqZWN0KiBrZXk7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogCkBAIC0yMDk1LDcgKzI1NTksNyBAQAogCiAgICAgICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgICAgIGNoYXIqIHA7Ci0gICAgICAgIGludCBpOworICAgICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICAgICAgLyogbG9vayBmb3IgbmFtZXNwYWNlIHNlcGFyYXRvciAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQpAQCAtMjExMyw3ICsyNTc3LDcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgdGFnID0ga2V5OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8qIGRlY29kZSB1bml2ZXJzYWwgbmFtZSAqLwogICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcodGFnKTsKICAgICAgICAgdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChwLCBzaXplLCAic3RyaWN0Iik7CkBAIC0yMTM1LDIwICsyNTk5LDM5IEBACiAgICAgcmV0dXJuIHZhbHVlOwogfQogCisvKiBTZXQgdGhlIFBhcnNlRXJyb3IgZXhjZXB0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCisgKiBJZiBtZXNzYWdlIGlzIG5vdCBOVUxMLCBpdCdzIHVzZWQgYXMgdGhlIGVycm9yIHN0cmluZy4gT3RoZXJ3aXNlLCB0aGUKKyAqIG1lc3NhZ2Ugc3RyaW5nIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgZ2l2ZW4gZXJyb3JfY29kZS4KKyovCiBzdGF0aWMgdm9pZAotZXhwYXRfc2V0X2Vycm9yKGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uKQorZXhwYXRfc2V0X2Vycm9yKGVudW0gWE1MX0Vycm9yIGVycm9yX2NvZGUsIGludCBsaW5lLCBpbnQgY29sdW1uLCBjaGFyICptZXNzYWdlKQogewotICAgIFB5T2JqZWN0ICplcnJvcjsKLSAgICBQeU9iamVjdCAqcG9zaXRpb247Ci0gICAgY2hhciBidWZmZXJbMjU2XTsKKyAgICBQeU9iamVjdCAqZXJybXNnLCAqZXJyb3IsICpwb3NpdGlvbiwgKmNvZGU7CiAKLSAgICBzcHJpbnRmKGJ1ZmZlciwgIiUuMTAwczogbGluZSAlZCwgY29sdW1uICVkIiwgbWVzc2FnZSwgbGluZSwgY29sdW1uKTsKKyAgICBlcnJtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXM6IGxpbmUgJWQsIGNvbHVtbiAlZCIsCisgICAgICAgICAgICAgICAgbWVzc2FnZSA/IG1lc3NhZ2UgOiBFWFBBVChFcnJvclN0cmluZykoZXJyb3JfY29kZSksCisgICAgICAgICAgICAgICAgbGluZSwgY29sdW1uKTsKKyAgICBpZiAoZXJybXNnID09IE5VTEwpCisgICAgICAgIHJldHVybjsKIAotICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqLCAicyIsIGJ1ZmZlcik7CisgICAgZXJyb3IgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmosICJPIiwgZXJybXNnKTsKKyAgICBQeV9ERUNSRUYoZXJybXNnKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICAvKiBhZGQgcG9zaXRpb24gYXR0cmlidXRlICovCisgICAgLyogQWRkIGNvZGUgYW5kIHBvc2l0aW9uIGF0dHJpYnV0ZXMgKi8KKyAgICBjb2RlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWVycm9yX2NvZGUpOworICAgIGlmICghY29kZSkgeworICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGVycm9yLCAiY29kZSIsIGNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CisgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBQeV9ERUNSRUYoY29kZSk7CisKICAgICBwb3NpdGlvbiA9IFB5X0J1aWxkVmFsdWUoIihpaSkiLCBsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKQEAgLTIyMDAsOSArMjY4MywxMCBAQAogICAgICAgICBjaGFyIG1lc3NhZ2VbMTI4XSA9ICJ1bmRlZmluZWQgZW50aXR5ICI7CiAgICAgICAgIHN0cm5jYXQobWVzc2FnZSwgZGF0YV9pbiwgZGF0YV9sZW4gPCAxMDA/ZGF0YV9sZW46MTAwKTsKICAgICAgICAgZXhwYXRfc2V0X2Vycm9yKAotICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgIFhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZLAogICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JMaW5lTnVtYmVyKShzZWxmLT5wYXJzZXIpLAotICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlcikKKyAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpLAorICAgICAgICAgICAgbWVzc2FnZQogICAgICAgICAgICAgKTsKICAgICB9CiAKQEAgLTIyNDcsMjEgKzI3MzEsMTggQEAKICAgICAgICAgICAgIGF0dHJpYl9pbiArPSAyOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOworICAgICAgICAvKiBQYXNzIGFuIGVtcHR5IGRpY3Rpb25hcnkgb24gKi8KKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKQorICAgIGlmIChUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKICAgICAgICAgLyogc2hvcnRjdXQgKi8KICAgICAgICAgcmVzID0gdHJlZWJ1aWxkZXJfaGFuZGxlX3N0YXJ0KChUcmVlQnVpbGRlck9iamVjdCopIHNlbGYtPnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZywgYXR0cmliKTsKKyAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX3N0YXJ0KSB7Ci0gICAgICAgIGlmIChhdHRyaWIgPT0gUHlfTm9uZSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7Ci0gICAgICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICBpZiAoIWF0dHJpYikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9zdGFydCwgIk9PIiwgdGFnLCBhdHRyaWIpOwogICAgIH0gZWxzZQogICAgICAgICByZXMgPSBOVUxMOwpAQCAtMjM3MSw2ICsyODUyLDc4IEBACiAgICAgfQogfQogCitzdGF0aWMgdm9pZCAKK2V4cGF0X3N0YXJ0X2RvY3R5cGVfaGFuZGxlcihYTUxQYXJzZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKmRvY3R5cGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqc3lzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKnB1YmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoYXNfaW50ZXJuYWxfc3Vic2V0KQoreworICAgIFB5T2JqZWN0ICpzZWxmX3B5b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICBQeU9iamVjdCAqZG9jdHlwZV9uYW1lX29iaiwgKnN5c2lkX29iaiwgKnB1YmlkX29iajsKKyAgICBQeU9iamVjdCAqcGFyc2VyX2RvY3R5cGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgZG9jdHlwZV9uYW1lX29iaiA9IG1ha2V1bml2ZXJzYWwoc2VsZiwgZG9jdHlwZV9uYW1lKTsKKyAgICBpZiAoIWRvY3R5cGVfbmFtZV9vYmopCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzeXNpZCkgeworICAgICAgICBzeXNpZF9vYmogPSBtYWtldW5pdmVyc2FsKHNlbGYsIHN5c2lkKTsKKyAgICAgICAgaWYgKCFzeXNpZF9vYmopIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkb2N0eXBlX25hbWVfb2JqKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgc3lzaWRfb2JqID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBpZiAocHViaWQpIHsKKyAgICAgICAgcHViaWRfb2JqID0gbWFrZXVuaXZlcnNhbChzZWxmLCBwdWJpZCk7CisgICAgICAgIGlmICghcHViaWRfb2JqKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZG9jdHlwZV9uYW1lX29iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3lzaWRfb2JqKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgcHViaWRfb2JqID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICAvKiBJZiB0aGUgdGFyZ2V0IGhhcyBhIGhhbmRsZXIgZm9yIGRvY3R5cGUsIGNhbGwgaXQuICovCisgICAgaWYgKHNlbGYtPmhhbmRsZV9kb2N0eXBlKSB7CisgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfZG9jdHlwZSwgIk9PTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N0eXBlX25hbWVfb2JqLCBwdWJpZF9vYmosIHN5c2lkX29iaik7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgfQorCisgICAgLyogTm93IHNlZSBpZiB0aGUgcGFyc2VyIGl0c2VsZiBoYXMgYSBkb2N0eXBlIG1ldGhvZC4gSWYgeWVzIGFuZCBpdCdzCisgICAgICogYSBzdWJjbGFzcywgY2FsbCBpdCBidXQgd2FybiBhYm91dCBkZXByZWNhdGlvbi4gSWYgaXQncyBub3QgYSBzdWJjbGFzcworICAgICAqIChpLmUuIHZhbmlsbGEgWE1MUGFyc2VyKSwgZG8gbm90aGluZy4KKyAgICAgKi8KKyAgICBwYXJzZXJfZG9jdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZl9weW9iaiwgImRvY3R5cGUiKTsKKyAgICBpZiAocGFyc2VyX2RvY3R5cGUpIHsKKyAgICAgICAgaWYgKCFYTUxQYXJzZXJfQ2hlY2tFeGFjdChzZWxmX3B5b2JqKSkgeworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgbWV0aG9kIG9mIFhNTFBhcnNlciBpcyBkZXByZWNhdGVkLiAgRGVmaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZG9jdHlwZSgpIG1ldGhvZCBvbiB0aGUgVHJlZUJ1aWxkZXIgdGFyZ2V0LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBjbGVhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihwYXJzZXJfZG9jdHlwZSwgIk9PTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdHlwZV9uYW1lX29iaiwgcHViaWRfb2JqLCBzeXNpZF9vYmopOworICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgfQorICAgIH0KKworY2xlYXI6CisgICAgUHlfWERFQ1JFRihwYXJzZXJfZG9jdHlwZSk7CisgICAgUHlfREVDUkVGKGRvY3R5cGVfbmFtZV9vYmopOworICAgIFB5X0RFQ1JFRihwdWJpZF9vYmopOworICAgIFB5X0RFQ1JFRihzeXNpZF9vYmopOworfQorCiBzdGF0aWMgdm9pZAogZXhwYXRfcGlfaGFuZGxlcihYTUxQYXJzZXJPYmplY3QqIHNlbGYsIGNvbnN0IFhNTF9DaGFyKiB0YXJnZXRfaW4sCiAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyKiBkYXRhX2luKQpAQCAtMjM5OSwyOSArMjk1MiwzMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FbmNvZGluZyAqaW5mbykKIHsKICAgICBQeU9iamVjdCogdTsKLSAgICBQeV9VTklDT0RFKiBwOwogICAgIHVuc2lnbmVkIGNoYXIgc1syNTZdOwogICAgIGludCBpOworICAgIHZvaWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKICAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKFhNTF9FbmNvZGluZykpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICBzW2ldID0gaTsKLSAgICAKKwogICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlKChjaGFyKikgcywgMjU2LCBuYW1lLCAicmVwbGFjZSIpOwogICAgIGlmICghdSkKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1KSkKKyAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHUpICE9IDI1NikgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KSAhPSAyNTYpIHsKICAgICAgICAgUHlfREVDUkVGKHUpOwogICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKICAgICB9CiAKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodSk7Ci0KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOwogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewotICAgICAgICBpZiAocFtpXSAhPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUikKLSAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IHBbaV07CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoICE9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKQorICAgICAgICAgICAgaW5mby0+bWFwW2ldID0gY2g7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IC0xOwogICAgIH0KQEAgLTI0MzIsMTQ1ICsyOTg5LDE1NyBAQAogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgKi8KIAotc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyKFB5T2JqZWN0KiBzZWxmXywgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKK3N0YXRpYyBQeU9iamVjdCAqCit4bWxwYXJzZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFhNTFBhcnNlck9iamVjdCogc2VsZjsKLSAgICAvKiBGSVhNRTogZG9lcyB0aGlzIG5lZWQgdG8gYmUgc3RhdGljPyAqLwotICAgIHN0YXRpYyBYTUxfTWVtb3J5X0hhbmRsaW5nX1N1aXRlIG1lbW9yeV9oYW5kbGVyOwotCi0gICAgUHlPYmplY3QqIHRhcmdldCA9IE5VTEw7Ci0gICAgY2hhciogZW5jb2RpbmcgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPejpYTUxQYXJzZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldCwgJmVuY29kaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSNpZiBkZWZpbmVkKFVTRV9QWUVYUEFUX0NBUEkpCi0gICAgaWYgKCFleHBhdF9jYXBpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwgImNhbm5vdCBsb2FkIGRpc3BhdGNoIHRhYmxlIGZyb20gcHlleHBhdCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIFhNTFBhcnNlck9iamVjdCAqc2VsZiA9IChYTUxQYXJzZXJPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZikgeworICAgICAgICBzZWxmLT5wYXJzZXIgPSBOVUxMOworICAgICAgICBzZWxmLT50YXJnZXQgPSBzZWxmLT5lbnRpdHkgPSBzZWxmLT5uYW1lcyA9IE5VTEw7CisgICAgICAgIHNlbGYtPmhhbmRsZV9zdGFydCA9IHNlbGYtPmhhbmRsZV9kYXRhID0gc2VsZi0+aGFuZGxlX2VuZCA9IE5VTEw7CisgICAgICAgIHNlbGYtPmhhbmRsZV9jb21tZW50ID0gc2VsZi0+aGFuZGxlX3BpID0gc2VsZi0+aGFuZGxlX2Nsb3NlID0gTlVMTDsKKyAgICAgICAgc2VsZi0+aGFuZGxlX2RvY3R5cGUgPSBOVUxMOwogICAgIH0KLSNlbmRpZgorICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworfQogCi0gICAgc2VsZiA9IFB5T2JqZWN0X05ldyhYTUxQYXJzZXJPYmplY3QsICZYTUxQYXJzZXJfVHlwZSk7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgaW50Cit4bWxwYXJzZXJfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFhNTFBhcnNlck9iamVjdCAqc2VsZl94cCA9IChYTUxQYXJzZXJPYmplY3QgKilzZWxmOworICAgIFB5T2JqZWN0ICp0YXJnZXQgPSBOVUxMLCAqaHRtbCA9IE5VTEw7CisgICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaHRtbCIsICJ0YXJnZXQiLCAiZW5jb2RpbmciLCAwfTsKIAotICAgIHNlbGYtPmVudGl0eSA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIXNlbGYtPmVudGl0eSkgewotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICAgCi0gICAgc2VsZi0+bmFtZXMgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFzZWxmLT5uYW1lcykgewotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+ZW50aXR5KTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PejpYTUxQYXJzZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpIHsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIG1lbW9yeV9oYW5kbGVyLm1hbGxvY19mY24gPSBQeU9iamVjdF9NYWxsb2M7Ci0gICAgbWVtb3J5X2hhbmRsZXIucmVhbGxvY19mY24gPSBQeU9iamVjdF9SZWFsbG9jOwotICAgIG1lbW9yeV9oYW5kbGVyLmZyZWVfZmNuID0gUHlPYmplY3RfRnJlZTsKKyAgICBzZWxmX3hwLT5lbnRpdHkgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKCFzZWxmX3hwLT5lbnRpdHkpCisgICAgICAgIHJldHVybiAtMTsKIAotICAgIHNlbGYtPnBhcnNlciA9IEVYUEFUKFBhcnNlckNyZWF0ZV9NTSkoZW5jb2RpbmcsICZtZW1vcnlfaGFuZGxlciwgIn0iKTsKLSAgICBpZiAoIXNlbGYtPnBhcnNlcikgewotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+bmFtZXMpOwotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+ZW50aXR5KTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOworICAgIHNlbGZfeHAtPm5hbWVzID0gUHlEaWN0X05ldygpOworICAgIGlmICghc2VsZl94cC0+bmFtZXMpIHsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHNlbGZfeHAtPnBhcnNlciA9IEVYUEFUKFBhcnNlckNyZWF0ZV9NTSkoZW5jb2RpbmcsICZFeHBhdE1lbW9yeUhhbmRsZXIsICJ9Iik7CisgICAgaWYgKCFzZWxmX3hwLT5wYXJzZXIpIHsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+bmFtZXMpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIC8qIHNldHVwIHRhcmdldCBoYW5kbGVycyAqLwotICAgIGlmICghdGFyZ2V0KSB7Ci0gICAgICAgIHRhcmdldCA9IHRyZWVidWlsZGVyX25ldygpOwotICAgICAgICBpZiAoIXRhcmdldCkgewotICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5uYW1lcyk7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+ZW50aXR5KTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfSBlbHNlCisgICAgaWYgKHRhcmdldCkgewogICAgICAgICBQeV9JTkNSRUYodGFyZ2V0KTsKLSAgICBzZWxmLT50YXJnZXQgPSB0YXJnZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGFyZ2V0ID0gdHJlZWJ1aWxkZXJfbmV3KCZUcmVlQnVpbGRlcl9UeXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5uYW1lcyk7CisgICAgICAgICAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmX3hwLT5wYXJzZXIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIHNlbGZfeHAtPnRhcmdldCA9IHRhcmdldDsKIAotICAgIHNlbGYtPmhhbmRsZV94bWwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInhtbCIpOwotICAgIHNlbGYtPmhhbmRsZV9zdGFydCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAic3RhcnQiKTsKLSAgICBzZWxmLT5oYW5kbGVfZGF0YSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZGF0YSIpOwotICAgIHNlbGYtPmhhbmRsZV9lbmQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImVuZCIpOwotICAgIHNlbGYtPmhhbmRsZV9jb21tZW50ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjb21tZW50Iik7Ci0gICAgc2VsZi0+aGFuZGxlX3BpID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJwaSIpOwotICAgIHNlbGYtPmhhbmRsZV9jbG9zZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY2xvc2UiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7CisgICAgc2VsZl94cC0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRvY3R5cGUiKTsKIAogICAgIFB5RXJyX0NsZWFyKCk7Ci0KKyAgICAKICAgICAvKiBjb25maWd1cmUgcGFyc2VyICovCi0gICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGYtPnBhcnNlciwgc2VsZik7CisgICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGZfeHAtPnBhcnNlciwgc2VsZl94cCk7CiAgICAgRVhQQVQoU2V0RWxlbWVudEhhbmRsZXIpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyKSBleHBhdF9zdGFydF9oYW5kbGVyLAogICAgICAgICAoWE1MX0VuZEVsZW1lbnRIYW5kbGVyKSBleHBhdF9lbmRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldERlZmF1bHRIYW5kbGVyRXhwYW5kKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfRGVmYXVsdEhhbmRsZXIpIGV4cGF0X2RlZmF1bHRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldENoYXJhY3RlckRhdGFIYW5kbGVyKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIpIGV4cGF0X2RhdGFfaGFuZGxlcgogICAgICAgICApOwotICAgIGlmIChzZWxmLT5oYW5kbGVfY29tbWVudCkKKyAgICBpZiAoc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQpCiAgICAgICAgIEVYUEFUKFNldENvbW1lbnRIYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfQ29tbWVudEhhbmRsZXIpIGV4cGF0X2NvbW1lbnRfaGFuZGxlcgogICAgICAgICAgICAgKTsKLSAgICBpZiAoc2VsZi0+aGFuZGxlX3BpKQorICAgIGlmIChzZWxmX3hwLT5oYW5kbGVfcGkpCiAgICAgICAgIEVYUEFUKFNldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIpKAotICAgICAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAgICAgKFhNTF9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSBleHBhdF9waV9oYW5kbGVyCiAgICAgICAgICAgICApOworICAgIEVYUEFUKFNldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSgKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICAoWE1MX1N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSBleHBhdF9zdGFydF9kb2N0eXBlX2hhbmRsZXIKKyAgICAgICAgKTsKICAgICBFWFBBVChTZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfVW5rbm93bkVuY29kaW5nSGFuZGxlcikgZXhwYXRfdW5rbm93bl9lbmNvZGluZ19oYW5kbGVyLCBOVUxMCiAgICAgICAgICk7CiAKLSAgICBBTExPQyhzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgImNyZWF0ZSBleHBhdHBhcnNlciIpOworICAgIHJldHVybiAwOworfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CitzdGF0aWMgaW50Cit4bWxwYXJzZXJfZ2NfdHJhdmVyc2UoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfY2xvc2UpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9waSk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2NvbW1lbnQpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9lbmQpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9kYXRhKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfc3RhcnQpOworCisgICAgUHlfVklTSVQoc2VsZi0+dGFyZ2V0KTsKKyAgICBQeV9WSVNJVChzZWxmLT5lbnRpdHkpOworICAgIFB5X1ZJU0lUKHNlbGYtPm5hbWVzKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit4bWxwYXJzZXJfZ2NfY2xlYXIoWE1MUGFyc2VyT2JqZWN0ICpzZWxmKQoreworICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGYtPnBhcnNlcik7CisKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfY2xvc2UpOworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9waSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX2NvbW1lbnQpOworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9lbmQpOworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9kYXRhKTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfc3RhcnQpOworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9kb2N0eXBlKTsKKworICAgIFB5X0NMRUFSKHNlbGYtPnRhcmdldCk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZW50aXR5KTsKKyAgICBQeV9DTEVBUihzZWxmLT5uYW1lcyk7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKIHhtbHBhcnNlcl9kZWFsbG9jKFhNTFBhcnNlck9iamVjdCogc2VsZikKIHsKLSAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmLT5wYXJzZXIpOwotCi0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfY2xvc2UpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX3BpKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9jb21tZW50KTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9lbmQpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2RhdGEpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX3N0YXJ0KTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV94bWwpOwotCi0gICAgUHlfREVDUkVGKHNlbGYtPnRhcmdldCk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPmVudGl0eSk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPm5hbWVzKTsKLQotICAgIFJFTEVBU0Uoc2l6ZW9mKFhNTFBhcnNlck9iamVjdCksICJkZXN0cm95IGV4cGF0cGFyc2VyIik7Ci0KLSAgICBQeU9iamVjdF9EZWwoc2VsZik7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKKyAgICB4bWxwYXJzZXJfZ2NfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIG1ldGhvZHMgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgKi8KLQogTE9DQUwoUHlPYmplY3QqKQogZXhwYXRfcGFyc2UoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBjaGFyKiBkYXRhLCBpbnQgZGF0YV9sZW4sIGludCBmaW5hbCkKIHsKQEAgLTI1ODMsOSArMzE1MiwxMCBAQAogCiAgICAgaWYgKCFvaykgewogICAgICAgICBleHBhdF9zZXRfZXJyb3IoCi0gICAgICAgICAgICBFWFBBVChFcnJvclN0cmluZykoRVhQQVQoR2V0RXJyb3JDb2RlKShzZWxmLT5wYXJzZXIpKSwKKyAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29kZSkoc2VsZi0+cGFyc2VyKSwKICAgICAgICAgICAgIEVYUEFUKEdldEVycm9yTGluZU51bWJlcikoc2VsZi0+cGFyc2VyKSwKLSAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpCisgICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvbHVtbk51bWJlcikoc2VsZi0+cGFyc2VyKSwKKyAgICAgICAgICAgIE5VTEwKICAgICAgICAgICAgICk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI2MzYsNiArMzIwNiw3IEBACiAKICAgICBQeU9iamVjdCogcmVhZGVyOwogICAgIFB5T2JqZWN0KiBidWZmZXI7CisgICAgUHlPYmplY3QqIHRlbXA7CiAgICAgUHlPYmplY3QqIHJlczsKIAogICAgIFB5T2JqZWN0KiBmaWxlb2JqOwpAQCAtMjY0NSw3ICszMjE2LDcgQEAKICAgICByZWFkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGVvYmosICJyZWFkIik7CiAgICAgaWYgKCFyZWFkZXIpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIAorCiAgICAgLyogcmVhZCBmcm9tIG9wZW4gZmlsZSBvYmplY3QgKi8KICAgICBmb3IgKDs7KSB7CiAKQEAgLTI2NTcsNyArMzIyOCwyMiBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChidWZmZXIpIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoYnVmZmVyKSA9PSAwKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChidWZmZXIpKSB7CisgICAgICAgICAgICAvKiBBIHVuaWNvZGUgb2JqZWN0IGlzIGVuY29kZWQgaW50byBieXRlcyB1c2luZyBVVEYtOCAqLworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShidWZmZXIpID09IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRlbXAgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKGJ1ZmZlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICAgICAgaWYgKCF0ZW1wKSB7CisgICAgICAgICAgICAgICAgLyogUHJvcGFnYXRlIGV4Y2VwdGlvbiBmcm9tIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcgKi8KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVhZGVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlciA9IHRlbXA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChidWZmZXIpIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoYnVmZmVyKSA9PSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNjg5LDcgKzMyNzUsMTMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX3NldGV2ZW50cyhYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreG1scGFyc2VyX2RvY3R5cGUoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgoreG1scGFyc2VyX3NldGV2ZW50cyhYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCiAKQEAgLTI3MDUsNyArMzI5Nyw3IEBACiAgICAgaWYgKCFUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImV2ZW50IGhhbmRsaW5nIG9ubHkgc3VwcG9ydGVkIGZvciBjRWxlbWVudFRyZWUuVHJlZWJ1aWxkZXIgIgorICAgICAgICAgICAgImV2ZW50IGhhbmRsaW5nIG9ubHkgc3VwcG9ydGVkIGZvciBFbGVtZW50VHJlZS5UcmVlQnVpbGRlciAiCiAgICAgICAgICAgICAidGFyZ2V0cyIKICAgICAgICAgICAgICk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjcxOCwxMCArMzMxMCwxMCBAQAogICAgIHRhcmdldC0+ZXZlbnRzID0gZXZlbnRzOwogCiAgICAgLyogY2xlYXIgb3V0IGV4aXN0aW5nIGV2ZW50cyAqLwotICAgIFB5X1hERUNSRUYodGFyZ2V0LT5zdGFydF9ldmVudF9vYmopOyB0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaiA9IE5VTEw7Ci0gICAgUHlfWERFQ1JFRih0YXJnZXQtPmVuZF9ldmVudF9vYmopOyB0YXJnZXQtPmVuZF9ldmVudF9vYmogPSBOVUxMOwotICAgIFB5X1hERUNSRUYodGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmopOyB0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaiA9IE5VTEw7Ci0gICAgUHlfWERFQ1JFRih0YXJnZXQtPmVuZF9uc19ldmVudF9vYmopOyB0YXJnZXQtPmVuZF9uc19ldmVudF9vYmogPSBOVUxMOworICAgIFB5X0NMRUFSKHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUih0YXJnZXQtPmVuZF9ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUih0YXJnZXQtPmVuZF9uc19ldmVudF9vYmopOwogCiAgICAgaWYgKGV2ZW50X3NldCA9PSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIGRlZmF1bHQgaXMgImVuZCIgb25seSAqLwpAQCAtMjc5MywxMCArMzM4NSwxMSBAQAogICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9wYXJzZSIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3BhcnNlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiX3NldGV2ZW50cyIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImRvY3R5cGUiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9kb2N0eXBlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKIAotc3RhdGljIFB5T2JqZWN0KiAgCitzdGF0aWMgUHlPYmplY3QqCiB4bWxwYXJzZXJfZ2V0YXR0cm8oWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaikKIHsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKSB7CkBAIC0yODI0LDMxICszNDE3LDQyIEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIlhNTFBhcnNlciIsIHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil4bWxwYXJzZXJfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsIC8qIHRwX3ByaW50ICovCi0gICAgMCwgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAvKiB0cF9oYXNoICovCi0gICAgMCwgLyogdHBfY2FsbCAqLwotICAgIDAsIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpeG1scGFyc2VyX2dldGF0dHJvLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgeG1scGFyc2VyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpeG1scGFyc2VyX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpeG1scGFyc2VyX2dldGF0dHJvLCAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl4bWxwYXJzZXJfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl4bWxwYXJzZXJfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB4bWxwYXJzZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyl4bWxwYXJzZXJfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHhtbHBhcnNlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKICNlbmRpZgpAQCAtMjg1NywxMyArMzQ2MSw3IEBACiAvKiBweXRob24gbW9kdWxlIGludGVyZmFjZSAqLwogCiBzdGF0aWMgUHlNZXRob2REZWYgX2Z1bmN0aW9uc1tdID0gewotICAgIHsiRWxlbWVudCIsIChQeUNGdW5jdGlvbikgZWxlbWVudCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiU3ViRWxlbWVudCIsIChQeUNGdW5jdGlvbikgc3ViZWxlbWVudCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiVHJlZUJ1aWxkZXIiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyLCBNRVRIX1ZBUkFSR1N9LAotI2lmIGRlZmluZWQoVVNFX0VYUEFUKQotICAgIHsiWE1MUGFyc2VyIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7IlhNTFRyZWVCdWlsZGVyIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSNlbmRpZgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjg4Myw5ICszNDgxLDcgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2VsZW1lbnR0cmVlKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QqIG07Ci0gICAgUHlPYmplY3QqIGc7Ci0gICAgY2hhciogYm9vdHN0cmFwOworICAgIFB5T2JqZWN0ICptLCAqdGVtcDsKIAogICAgIC8qIEluaXRpYWxpemUgb2JqZWN0IHR5cGVzICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmVHJlZUJ1aWxkZXJfVHlwZSkgPCAwKQpAQCAtMjkwMSwyMTIgKzM0OTcsMTUgQEAKICAgICBpZiAoIW0pCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogVGhlIGNvZGUgYmVsb3cgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIGdldHMgYWxyZWFkeSBhZGRlZAotICAgICAgIHRvIHN5cy5tb2R1bGVzLiAqLwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBfZWxlbWVudHRyZWVtb2R1bGUubV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIG0pOworICAgIGlmICghKHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImNvcHkiKSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgImRlZXBjb3B5Iik7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKIAotICAgIC8qIHB5dGhvbiBnbHVlIGNvZGUgKi8KLQotICAgIGcgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFnKQorICAgIGlmICghKGVsZW1lbnRwYXRoX29iaiA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgieG1sLmV0cmVlLkVsZW1lbnRQYXRoIikpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGcsICJfX2J1aWx0aW5zX18iLCBQeUV2YWxfR2V0QnVpbHRpbnMoKSk7Ci0KLSAgICBib290c3RyYXAgPSAoCi0KLSAgICAgICAgImZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHlcbiIKLQotICAgICAgICAidHJ5OlxuIgotICAgICAgICAiICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWVcbiIKLSAgICAgICAgImV4Y2VwdCBJbXBvcnRFcnJvcjpcbiIKLSAgICAgICAgIiAgaW1wb3J0IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJFVCA9IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJkZWwgRWxlbWVudFRyZWVcbiIKLQotICAgICAgICAiaW1wb3J0IF9lbGVtZW50dHJlZSBhcyBjRWxlbWVudFRyZWVcbiIKLQotICAgICAgICAidHJ5OlxuIiAvKiBjaGVjayBpZiBjb3B5IHdvcmtzIGFzIGlzICovCi0gICAgICAgICIgIGNvcHkoY0VsZW1lbnRUcmVlLkVsZW1lbnQoJ3gnKSlcbiIKLSAgICAgICAgImV4Y2VwdDpcbiIKLSAgICAgICAgIiAgZGVmIGNvcHllbGVtZW50KGVsZW0pOlxuIgotICAgICAgICAiICAgIHJldHVybiBlbGVtXG4iCi0KLSAgICAgICAgImNsYXNzIENvbW1lbnRQcm94eTpcbiIKLSAgICAgICAgIiBkZWYgX19jYWxsX18oc2VsZiwgdGV4dD1Ob25lKTpcbiIKLSAgICAgICAgIiAgZWxlbWVudCA9IGNFbGVtZW50VHJlZS5FbGVtZW50KEVULkNvbW1lbnQpXG4iCi0gICAgICAgICIgIGVsZW1lbnQudGV4dCA9IHRleHRcbiIKLSAgICAgICAgIiAgcmV0dXJuIGVsZW1lbnRcbiIKLSAgICAgICAgIiBkZWYgX19lcV9fKHNlbGYsIG90aGVyKTpcbiIKLSAgICAgICAgIiAgcmV0dXJuIEVULkNvbW1lbnQgPT0gb3RoZXJcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5Db21tZW50ID0gQ29tbWVudFByb3h5KClcbiIKLQotICAgICAgICAiY2xhc3MgRWxlbWVudFRyZWUoRVQuRWxlbWVudFRyZWUpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSwgcGFyc2VyPU5vbmUpOlxuIgotICAgICAgICAiICAgIGNsb3NlX3NvdXJjZSA9IEZhbHNlXG4iCi0gICAgICAgICIgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAncmVhZCcpOlxuIgotICAgICAgICAiICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICdyYicpXG4iCi0gICAgICAgICIgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlXG4iCi0gICAgICAgICIgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgaWYgcGFyc2VyIGlzIG5vdCBOb25lOlxuIgotICAgICAgICAiICAgICAgICB3aGlsZSAxOlxuIgotICAgICAgICAiICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCg2NTUzNilcbiIKLSAgICAgICAgIiAgICAgICAgICBpZiBub3QgZGF0YTpcbiIKLSAgICAgICAgIiAgICAgICAgICAgIGJyZWFrXG4iCi0gICAgICAgICIgICAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSlcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICBlbHNlOlxuIiAKLSAgICAgICAgIiAgICAgICAgcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcigpXG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuX3BhcnNlKHNvdXJjZSlcbiIKLSAgICAgICAgIiAgICAgIHJldHVybiBzZWxmLl9yb290XG4iCi0gICAgICAgICIgICAgZmluYWxseTpcbiIKLSAgICAgICAgIiAgICAgIGlmIGNsb3NlX3NvdXJjZTpcbiIKLSAgICAgICAgIiAgICAgICAgc291cmNlLmNsb3NlKClcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5FbGVtZW50VHJlZSA9IEVsZW1lbnRUcmVlXG4iCi0KLSAgICAgICAgImRlZiBpdGVyKG5vZGUsIHRhZz1Ob25lKTpcbiIgLyogaGVscGVyICovCi0gICAgICAgICIgIGlmIHRhZyA9PSAnKic6XG4iCi0gICAgICAgICIgICAgdGFnID0gTm9uZVxuIgotICAgICAgICAiICBpZiB0YWcgaXMgTm9uZSBvciBub2RlLnRhZyA9PSB0YWc6XG4iCi0gICAgICAgICIgICAgeWllbGQgbm9kZVxuIgotICAgICAgICAiICBmb3Igbm9kZSBpbiBub2RlOlxuIgotICAgICAgICAiICAgIGZvciBub2RlIGluIGl0ZXIobm9kZSwgdGFnKTpcbiIKLSAgICAgICAgIiAgICAgIHlpZWxkIG5vZGVcbiIKLQotICAgICAgICAiZGVmIGl0ZXJ0ZXh0KG5vZGUpOlxuIiAvKiBoZWxwZXIgKi8KLSAgICAgICAgIiAgaWYgbm9kZS50ZXh0OlxuIgotICAgICAgICAiICAgIHlpZWxkIG5vZGUudGV4dFxuIgotICAgICAgICAiICBmb3IgZSBpbiBub2RlOlxuIgotICAgICAgICAiICAgIGZvciBzIGluIGUuaXRlcnRleHQoKTpcbiIKLSAgICAgICAgIiAgICAgIHlpZWxkIHNcbiIKLSAgICAgICAgIiAgICBpZiBlLnRhaWw6XG4iCi0gICAgICAgICIgICAgICB5aWVsZCBlLnRhaWxcbiIKLQotICAgICAgICAiZGVmIHBhcnNlKHNvdXJjZSwgcGFyc2VyPU5vbmUpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgdHJlZSA9IEVsZW1lbnRUcmVlKClcbiIKLSAgICAgICAgIiAgdHJlZS5wYXJzZShzb3VyY2UsIHBhcnNlcilcbiIKLSAgICAgICAgIiAgcmV0dXJuIHRyZWVcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5wYXJzZSA9IHBhcnNlXG4iCi0KLSAgICAgICAgImNsYXNzIGl0ZXJwYXJzZTpcbiIKLSAgICAgICAgIiByb290ID0gTm9uZVxuIgotICAgICAgICAiIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBldmVudHM9Tm9uZSk6XG4iCi0gICAgICAgICIgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZVxuIgotICAgICAgICAiICBpZiBub3QgaGFzYXR0cihmaWxlLCAncmVhZCcpOlxuIgotICAgICAgICAiICAgIGZpbGUgPSBvcGVuKGZpbGUsICdyYicpXG4iCi0gICAgICAgICIgICAgc2VsZi5fY2xvc2VfZmlsZSA9IFRydWVcbiIKLSAgICAgICAgIiAgc2VsZi5fZmlsZSA9IGZpbGVcbiIKLSAgICAgICAgIiAgc2VsZi5fZXZlbnRzID0gW11cbiIKLSAgICAgICAgIiAgc2VsZi5faW5kZXggPSAwXG4iCi0gICAgICAgICIgIHNlbGYuX2Vycm9yID0gTm9uZVxuIgotICAgICAgICAiICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZVxuIgotICAgICAgICAiICBiID0gY0VsZW1lbnRUcmVlLlRyZWVCdWlsZGVyKClcbiIKLSAgICAgICAgIiAgc2VsZi5fcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcihiKVxuIgotICAgICAgICAiICBzZWxmLl9wYXJzZXIuX3NldGV2ZW50cyhzZWxmLl9ldmVudHMsIGV2ZW50cylcbiIKLSAgICAgICAgIiBkZWYgX19uZXh0X18oc2VsZik6XG4iCi0gICAgICAgICIgIHdoaWxlIDE6XG4iCi0gICAgICAgICIgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgaXRlbSA9IHNlbGYuX2V2ZW50c1tzZWxmLl9pbmRleF1cbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX2luZGV4ICs9IDFcbiIKLSAgICAgICAgIiAgICAgIHJldHVybiBpdGVtXG4iCi0gICAgICAgICIgICAgZXhjZXB0IEluZGV4RXJyb3I6XG4iCi0gICAgICAgICIgICAgICBwYXNzXG4iCi0gICAgICAgICIgICAgaWYgc2VsZi5fZXJyb3I6XG4iCi0gICAgICAgICIgICAgICBlID0gc2VsZi5fZXJyb3JcbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX2Vycm9yID0gTm9uZVxuIgotICAgICAgICAiICAgICAgcmFpc2UgZVxuIgotICAgICAgICAiICAgIGlmIHNlbGYuX3BhcnNlciBpcyBOb25lOlxuIgotICAgICAgICAiICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdFxuIgotICAgICAgICAiICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZTpcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uXG4iCi0gICAgICAgICIgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlclxuIgotICAgICAgICAiICAgIGRlbCBzZWxmLl9ldmVudHNbOl1cbiIKLSAgICAgICAgIiAgICBzZWxmLl9pbmRleCA9IDBcbiIKLSAgICAgICAgIiAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKDE2Mzg0KVxuIgotICAgICAgICAiICAgIGlmIGRhdGE6XG4iCi0gICAgICAgICIgICAgICB0cnk6XG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpXG4iCi0gICAgICAgICIgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOlxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9lcnJvciA9IGV4Y1xuIgotICAgICAgICAiICAgIGVsc2U6XG4iCi0gICAgICAgICIgICAgICBzZWxmLl9yb290ID0gc2VsZi5fcGFyc2VyLmNsb3NlKClcbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmVcbiIKLSAgICAgICAgIiBkZWYgX19pdGVyX18oc2VsZik6XG4iCi0gICAgICAgICIgIHJldHVybiBzZWxmXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuaXRlcnBhcnNlID0gaXRlcnBhcnNlXG4iCi0KLSAgICAgICAgImNsYXNzIFBJUHJveHk6XG4iCi0gICAgICAgICIgZGVmIF9fY2FsbF9fKHNlbGYsIHRhcmdldCwgdGV4dD1Ob25lKTpcbiIKLSAgICAgICAgIiAgZWxlbWVudCA9IGNFbGVtZW50VHJlZS5FbGVtZW50KEVULlBJKVxuIgotICAgICAgICAiICBlbGVtZW50LnRleHQgPSB0YXJnZXRcbiIKLSAgICAgICAgIiAgaWYgdGV4dDpcbiIKLSAgICAgICAgIiAgICBlbGVtZW50LnRleHQgPSBlbGVtZW50LnRleHQgKyAnICcgKyB0ZXh0XG4iCi0gICAgICAgICIgIHJldHVybiBlbGVtZW50XG4iCi0gICAgICAgICIgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6XG4iCi0gICAgICAgICIgIHJldHVybiBFVC5QSSA9PSBvdGhlclxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlBJID0gY0VsZW1lbnRUcmVlLlByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IFBJUHJveHkoKVxuIgotCi0gICAgICAgICJkZWYgWE1MKHRleHQpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcigpXG4iCi0gICAgICAgICIgIHBhcnNlci5mZWVkKHRleHQpXG4iCi0gICAgICAgICIgIHJldHVybiBwYXJzZXIuY2xvc2UoKVxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlhNTCA9IGNFbGVtZW50VHJlZS5mcm9tc3RyaW5nID0gWE1MXG4iCi0KLSAgICAgICAgImRlZiBYTUxJRCh0ZXh0KTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIHRyZWUgPSBYTUwodGV4dClcbiIKLSAgICAgICAgIiAgaWRzID0ge31cbiIKLSAgICAgICAgIiAgZm9yIGVsZW0gaW4gdHJlZS5pdGVyKCk6XG4iCi0gICAgICAgICIgICAgaWQgPSBlbGVtLmdldCgnaWQnKVxuIgotICAgICAgICAiICAgIGlmIGlkOlxuIgotICAgICAgICAiICAgICAgaWRzW2lkXSA9IGVsZW1cbiIKLSAgICAgICAgIiAgcmV0dXJuIHRyZWUsIGlkc1xuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlhNTElEID0gWE1MSURcbiIKLQotICAgICAgICAidHJ5OlxuIgotICAgICAgICAiIHJlZ2lzdGVyX25hbWVzcGFjZSA9IEVULnJlZ2lzdGVyX25hbWVzcGFjZVxuIgotICAgICAgICAiZXhjZXB0IEF0dHJpYnV0ZUVycm9yOlxuIgotICAgICAgICAiIGRlZiByZWdpc3Rlcl9uYW1lc3BhY2UocHJlZml4LCB1cmkpOlxuIgotICAgICAgICAiICBFVC5fbmFtZXNwYWNlX21hcFt1cmldID0gcHJlZml4XG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUucmVnaXN0ZXJfbmFtZXNwYWNlID0gcmVnaXN0ZXJfbmFtZXNwYWNlXG4iCi0KLSAgICAgICAgImNFbGVtZW50VHJlZS5kdW1wID0gRVQuZHVtcFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gRWxlbWVudFBhdGggPSBFVC5FbGVtZW50UGF0aFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLmlzZWxlbWVudCA9IEVULmlzZWxlbWVudFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlFOYW1lID0gRVQuUU5hbWVcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS50b3N0cmluZyA9IEVULnRvc3RyaW5nXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuZnJvbXN0cmluZ2xpc3QgPSBFVC5mcm9tc3RyaW5nbGlzdFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLnRvc3RyaW5nbGlzdCA9IEVULnRvc3RyaW5nbGlzdFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlZFUlNJT04gPSAnIiBWRVJTSU9OICInXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuX192ZXJzaW9uX18gPSAnIiBWRVJTSU9OICInXG4iCi0KLSAgICAgICApOwotCi0gICAgaWYgKCFQeVJ1bl9TdHJpbmcoYm9vdHN0cmFwLCBQeV9maWxlX2lucHV0LCBnLCBOVUxMKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBlbGVtZW50cGF0aF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiRWxlbWVudFBhdGgiKTsKLQotICAgIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJjb3B5ZWxlbWVudCIpOwotICAgIGlmIChlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmopIHsKLSAgICAgICAgLyogcmVkdWNlIGhhY2sgbmVlZGVkOyBlbmFibGUgcmVkdWNlIG1ldGhvZCAqLwotICAgICAgICBQeU1ldGhvZERlZiogbXA7Ci0gICAgICAgIGZvciAobXAgPSBlbGVtZW50X21ldGhvZHM7IG1wLT5tbF9uYW1lOyBtcCsrKQotICAgICAgICAgICAgaWYgKG1wLT5tbF9tZXRoID09IChQeUNGdW5jdGlvbikgZWxlbWVudF9yZWR1Y2UpIHsKLSAgICAgICAgICAgICAgICBtcC0+bWxfbmFtZSA9ICJfX3JlZHVjZV9fIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJkZWVwY29weSIpOwotICAgIGVsZW1lbnR0cmVlX2l0ZXJfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgIml0ZXIiKTsKLSAgICBlbGVtZW50dHJlZV9pdGVydGV4dF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiaXRlcnRleHQiKTsKLQotI2lmIGRlZmluZWQoVVNFX1BZRVhQQVRfQ0FQSSkKLSAgICAvKiBsaW5rIGFnYWluc3QgcHlleHBhdCwgaWYgcG9zc2libGUgKi8KKyAgICAvKiBsaW5rIGFnYWluc3QgcHlleHBhdCAqLwogICAgIGV4cGF0X2NhcGkgPSBQeUNhcHN1bGVfSW1wb3J0KFB5RXhwYXRfQ0FQU1VMRV9OQU1FLCAwKTsKICAgICBpZiAoZXhwYXRfY2FwaSkgewogICAgICAgICAvKiBjaGVjayB0aGF0IGl0J3MgdXNhYmxlICovCkBAIC0zMTIyLDEzICszNTIxLDIzIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2VuZGlmCiAKICAgICBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaiA9IFB5RXJyX05ld0V4Y2VwdGlvbigKLSAgICAgICAgImNFbGVtZW50VHJlZS5QYXJzZUVycm9yIiwgUHlFeGNfU3ludGF4RXJyb3IsIE5VTEwKKyAgICAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5QYXJzZUVycm9yIiwgUHlFeGNfU3ludGF4RXJyb3IsIE5VTEwKICAgICAgICAgKTsKICAgICBQeV9JTkNSRUYoZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmopOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUGFyc2VFcnJvciIsIGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqKTsKIAorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmRWxlbWVudF9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkVsZW1lbnQiLCAoUHlPYmplY3QgKikmRWxlbWVudF9UeXBlKTsKKworICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmVHJlZUJ1aWxkZXJfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJUcmVlQnVpbGRlciIsIChQeU9iamVjdCAqKSZUcmVlQnVpbGRlcl9UeXBlKTsKKworI2lmIGRlZmluZWQoVVNFX0VYUEFUKQorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmWE1MUGFyc2VyX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWE1MUGFyc2VyIiwgKFB5T2JqZWN0ICopJlhNTFBhcnNlcl9UeXBlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgYi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjViMjllMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpAQCAtMCwwICsxLDE0MiBAQAorLyogVGhpcyBpcyBidWlsdCBhcyBhIHN0YW5kLWFsb25lIGV4ZWN1dGFibGUgYnkgdGhlIE1ha2VmaWxlLCBhbmQgaGVscHMgdHVybgorICAgTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IGludG8gYSBmcm96ZW4gbW9kdWxlIGluIFB5dGhvbi9pbXBvcnRsaWIuaAorKi8KKworI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hcnNoYWwuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZm5kZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKworLyogVG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGZyb3plbi5vLCB3ZSBjcmVhdGUgb3VyIG93biBzdHJ1Y3R1cmUKKyAgIG9mIGZyb3plbiBtb2R1bGVzIGluc3RlYWQsIGxlZnQgZGVsaWJlcmF0ZWx5IGJsYW5rIHNvIGFzIHRvIGF2b2lkCisgICB1bmludGVudGlvbmFsIGltcG9ydCBvZiBhIHN0YWxlIHZlcnNpb24gb2YgX2Zyb3plbl9pbXBvcnRsaWIuICovCisKK3N0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworICAgIHswLCAwLCAwfSAvKiBzZW50aW5lbCAqLworfTsKKworI2lmbmRlZiBNU19XSU5ET1dTCisvKiBPbiBXaW5kb3dzLCB0aGlzIGxpbmtzIHdpdGggdGhlIHJlZ3VsYXIgcHl0aG9uWFkuZGxsLCBzbyB0aGlzIHZhcmlhYmxlIGNvbWVzCisgICBmcm9tIGZyb3plbi5vYmouIEluIHRoZSBNYWtlZmlsZSwgZnJvemVuLm8gaXMgbm90IGxpbmtlZCBpbnRvIHRoaXMgZXhlY3V0YWJsZSwKKyAgIHNvIHdlIGRlZmluZSB0aGUgdmFyaWFibGUgaGVyZS4gKi8KK3N0cnVjdCBfZnJvemVuICpQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOworI2VuZGlmCisKK2NvbnN0IGNoYXIgaGVhZGVyW10gPSAiLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovIjsKKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgY2hhciAqaW5wYXRoLCAqb3V0cGF0aDsKKyAgICBGSUxFICppbmZpbGUsICpvdXRmaWxlID0gTlVMTDsKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzaXplX3QgdGV4dF9zaXplLCBkYXRhX3NpemUsIG47CisgICAgY2hhciAqdGV4dDsKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIFB5T2JqZWN0ICpjb2RlLCAqbWFyc2hhbGxlZDsKKworICAgIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgPSBfUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKKworICAgIGlmIChhcmdjICE9IDMpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJuZWVkIHRvIHNwZWNpZnkgaW5wdXQgYW5kIG91dHB1dCBwYXRoc1xuIik7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICBpbnBhdGggPSBhcmd2WzFdOworICAgIG91dHBhdGggPSBhcmd2WzJdOworICAgIGluZmlsZSA9IGZvcGVuKGlucGF0aCwgInJiIik7CisgICAgaWYgKGluZmlsZSA9PSBOVUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IG9wZW4gJyVzJyBmb3IgcmVhZGluZ1xuIiwgaW5wYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChmc3RhdChmaWxlbm8oaW5maWxlKSwgJnN0KSkgeworICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3QgZnN0YXQgJyVzJ1xuIiwgaW5wYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHRleHRfc2l6ZSA9IHN0LnN0X3NpemU7CisgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKKyAgICBpZiAodGV4dCA9PSBOVUxMKSB7CisgICAgICAgIGZjbG9zZShpbmZpbGUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBhbGxvY2F0ZSAlbGQgYnl0ZXNcbiIsIChsb25nKSB0ZXh0X3NpemUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgbiA9IGZyZWFkKHRleHQsIDEsIHRleHRfc2l6ZSwgaW5maWxlKTsKKyAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpbmZpbGUgPSBOVUxMOworICAgIGlmIChuIDwgdGV4dF9zaXplKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmVhZCB0b28gc2hvcnQ6IGdvdCAlbGQgaW5zdGVhZCBvZiAlbGQgYnl0ZXNcbiIsCisgICAgICAgICAgICAgICAgKGxvbmcpIG4sIChsb25nKSB0ZXh0X3NpemUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgdGV4dFt0ZXh0X3NpemVdID0gJ1wwJzsKKworICAgIFB5X05vVXNlclNpdGVEaXJlY3RvcnkrKzsKKyAgICBQeV9Ob1NpdGVGbGFnKys7CisgICAgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKys7CisKKyAgICBQeV9TZXRQcm9ncmFtTmFtZShMIi4vX2ZyZWV6ZV9pbXBvcnRsaWIiKTsKKyAgICAvKiBEb24ndCBpbnN0YWxsIGltcG9ydGxpYiwgc2luY2UgaXQgY291bGQgZXhlY3V0ZSBvdXRkYXRlZCBieXRlY29kZS4gKi8KKyAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoMSwgMCk7CisKKyAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZ0V4RmxhZ3ModGV4dCwgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZmlsZV9pbnB1dCwgTlVMTCwgMCk7CisgICAgaWYgKGNvZGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBtYXJzaGFsbGVkID0gUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcoY29kZSwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKKyAgICBQeV9ERUNSRUYoY29kZSk7CisgICAgaWYgKG1hcnNoYWxsZWQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrRXhhY3QobWFyc2hhbGxlZCkpOworICAgIGRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBQeUJ5dGVzX0FTX1NUUklORyhtYXJzaGFsbGVkKTsKKyAgICBkYXRhX3NpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG1hcnNoYWxsZWQpOworCisgICAgLyogT3BlbiB0aGUgZmlsZSBpbiB0ZXh0IG1vZGUuIFRoZSBoZyBjaGVja291dCBzaG91bGQgYmUgdXNpbmcgdGhlIGVvbCBleHRlbnNpb24sCisgICAgICAgd2hpY2ggaW4gdHVybiBzaG91bGQgY2F1c2UgdGhlIEVPTCBzdHlsZSBtYXRjaCB0aGUgQyBsaWJyYXJ5J3MgdGV4dCBtb2RlICovCisgICAgb3V0ZmlsZSA9IGZvcGVuKG91dHBhdGgsICJ3Iik7CisgICAgaWYgKG91dGZpbGUgPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuICclcycgZm9yIHdyaXRpbmdcbiIsIG91dHBhdGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZnByaW50ZihvdXRmaWxlLCAiJXNcbiIsIGhlYWRlcik7CisgICAgZnByaW50ZihvdXRmaWxlLCAidW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKKyAgICBmb3IgKG4gPSAwOyBuIDwgZGF0YV9zaXplOyBuICs9IDE2KSB7CisgICAgICAgIHNpemVfdCBpLCBlbmQgPSBQeV9NSU4obiArIDE2LCBkYXRhX3NpemUpOworICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIgICAgIik7CisgICAgICAgIGZvciAoaSA9IG47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiJWQsIiwgKHVuc2lnbmVkIGludCkgZGF0YVtpXSk7CisgICAgICAgIH0KKyAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiXG4iKTsKKyAgICB9CisgICAgZnByaW50ZihvdXRmaWxlLCAifTtcbiIpOworCisgICAgUHlfREVDUkVGKG1hcnNoYWxsZWQpOworCisgICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoaW5maWxlKQorICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpZiAob3V0ZmlsZSkgeworICAgICAgICBpZiAoZmVycm9yKG91dGZpbGUpKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yIHdoZW4gd3JpdGluZyB0byAnJXMnXG4iLCBvdXRwYXRoKTsKKyAgICAgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoaW5maWxlKQorICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpZiAob3V0ZmlsZSkKKyAgICAgICAgZmNsb3NlKG91dGZpbGUpOworICAgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwppbmRleCBkOGEyODNiLi4zZmYwN2JjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwpAQCAtMTU1LDQ0ICsxNTUsOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJ0aWFsX2dldF9kaWN0KHBhcnRpYWxvYmplY3QgKnB0bykKLXsKLSAgICBpZiAocHRvLT5kaWN0ID09IE5VTEwpIHsKLSAgICAgICAgcHRvLT5kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAocHRvLT5kaWN0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHB0by0+ZGljdCk7Ci0gICAgcmV0dXJuIHB0by0+ZGljdDsKLX0KLQotc3RhdGljIGludAotcGFydGlhbF9zZXRfZGljdChwYXJ0aWFsb2JqZWN0ICpwdG8sIFB5T2JqZWN0ICp2YWx1ZSkKLXsKLSAgICBQeU9iamVjdCAqdG1wOwotCi0gICAgLyogSXQgaXMgaWxsZWdhbCB0byBkZWwgcC5fX2RpY3RfXyAqLwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYSBwYXJ0aWFsIG9iamVjdCdzIGRpY3Rpb25hcnkgbWF5IG5vdCBiZSBkZWxldGVkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogQ2FuIG9ubHkgc2V0IF9fZGljdF9fIHRvIGEgZGljdGlvbmFyeSAqLwotICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbHVlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInNldHRpbmcgcGFydGlhbCBvYmplY3QncyBkaWN0aW9uYXJ5IHRvIGEgbm9uLWRpY3QiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICB0bXAgPSBwdG8tPmRpY3Q7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBwdG8tPmRpY3QgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeUdldFNldERlZiBwYXJ0aWFsX2dldHNldGxpc3RbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilwYXJ0aWFsX2dldF9kaWN0LCAoc2V0dGVyKXBhcnRpYWxfc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMzMwLDYgKzI5NCwxNzYgQEAKIH07CiAKIAorLyogY21wX3RvX2tleSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmNtcDsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworfSBrZXlvYmplY3Q7CisKK3N0YXRpYyB2b2lkCitrZXlvYmplY3RfZGVhbGxvYyhrZXlvYmplY3QgKmtvKQoreworICAgIFB5X0RFQ1JFRihrby0+Y21wKTsKKyAgICBQeV9YREVDUkVGKGtvLT5vYmplY3QpOworICAgIFB5T2JqZWN0X0ZSRUUoa28pOworfQorCitzdGF0aWMgaW50CitrZXlvYmplY3RfdHJhdmVyc2Uoa2V5b2JqZWN0ICprbywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoa28tPmNtcCk7CisgICAgaWYgKGtvLT5vYmplY3QpCisgICAgICAgIFB5X1ZJU0lUKGtvLT5vYmplY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitrZXlvYmplY3RfY2xlYXIoa2V5b2JqZWN0ICprbykKK3sKKyAgICBQeV9DTEVBUihrby0+Y21wKTsKKyAgICBpZiAoa28tPm9iamVjdCkKKyAgICAgICAgUHlfQ0xFQVIoa28tPm9iamVjdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1lbWJlckRlZiBrZXlvYmplY3RfbWVtYmVyc1tdID0geworICAgIHsib2JqIiwgVF9PQkpFQ1QsCisgICAgIG9mZnNldG9mKGtleW9iamVjdCwgb2JqZWN0KSwgMCwKKyAgICAgUHlEb2NfU1RSKCJWYWx1ZSB3cmFwcGVkIGJ5IGEga2V5IGZ1bmN0aW9uLiIpfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfY2FsbChrZXlvYmplY3QgKmtvLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGtleW9iamVjdF90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImZ1bmN0b29scy5LZXlXcmFwcGVyIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihrZXlvYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWtleW9iamVjdF9kZWFsbG9jLCAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICh0ZXJuYXJ5ZnVuYylrZXlvYmplY3RfY2FsbCwgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWtleW9iamVjdF90cmF2ZXJzZSwgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWtleW9iamVjdF9jbGVhciwgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAga2V5b2JqZWN0X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBrZXlvYmplY3RfbWVtYmVycywgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X2NhbGwoa2V5b2JqZWN0ICprbywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAga2V5b2JqZWN0ICpyZXN1bHQ7CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJvYmoiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOksiLCBrd2FyZ3MsICZvYmplY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9OZXcoa2V5b2JqZWN0LCAma2V5b2JqZWN0X3R5cGUpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoa28tPmNtcCk7CisgICAgcmVzdWx0LT5jbXAgPSBrby0+Y21wOworICAgIFB5X0lOQ1JFRihvYmplY3QpOworICAgIHJlc3VsdC0+b2JqZWN0ID0gb2JqZWN0OworICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKmtvLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICp4OworICAgIFB5T2JqZWN0ICp5OworICAgIFB5T2JqZWN0ICpjb21wYXJlOworICAgIFB5T2JqZWN0ICphbnN3ZXI7CisgICAgc3RhdGljIFB5T2JqZWN0ICp6ZXJvOworCisgICAgaWYgKHplcm8gPT0gTlVMTCkgeworICAgICAgICB6ZXJvID0gUHlMb25nX0Zyb21Mb25nKDApOworICAgICAgICBpZiAoIXplcm8pCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlfVFlQRShvdGhlcikgIT0gJmtleW9iamVjdF90eXBlKXsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm90aGVyIGFyZ3VtZW50IG11c3QgYmUgSyBpbnN0YW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY29tcGFyZSA9ICgoa2V5b2JqZWN0ICopIGtvKS0+Y21wOworICAgIGFzc2VydChjb21wYXJlICE9IE5VTEwpOworICAgIHggPSAoKGtleW9iamVjdCAqKSBrbyktPm9iamVjdDsKKyAgICB5ID0gKChrZXlvYmplY3QgKikgb3RoZXIpLT5vYmplY3Q7CisgICAgaWYgKCF4IHx8ICF5KXsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAib2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENhbGwgdGhlIHVzZXIncyBjb21wYXJpc29uIGZ1bmN0aW9uIGFuZCB0cmFuc2xhdGUgdGhlIDMtd2F5CisgICAgICogcmVzdWx0IGludG8gdHJ1ZSBvciBmYWxzZSAob3IgZXJyb3IpLgorICAgICAqLworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoeCk7CisgICAgUHlfSU5DUkVGKHkpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgeCk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCB5KTsKKyAgICByZXMgPSBQeU9iamVjdF9DYWxsKGNvbXBhcmUsIGFyZ3MsIE5VTEwpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFuc3dlciA9IFB5T2JqZWN0X1JpY2hDb21wYXJlKHJlcywgemVybywgb3ApOworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiBhbnN3ZXI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdW5jdG9vbHNfY21wX3RvX2tleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpjbXA7CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJteWNtcCIsIE5VTEx9OworICAgIGtleW9iamVjdCAqb2JqZWN0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86Y21wX3RvX2tleSIsIGt3YXJncywgJmNtcCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9iamVjdCA9IFB5T2JqZWN0X05ldyhrZXlvYmplY3QsICZrZXlvYmplY3RfdHlwZSk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihjbXApOworICAgIG9iamVjdC0+Y21wID0gY21wOworICAgIG9iamVjdC0+b2JqZWN0ID0gTlVMTDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopb2JqZWN0OworfQorCitQeURvY19TVFJWQVIoZnVuY3Rvb2xzX2NtcF90b19rZXlfZG9jLAorIkNvbnZlcnQgYSBjbXA9IGZ1bmN0aW9uIGludG8gYSBrZXk9IGZ1bmN0aW9uLiIpOworCiAvKiByZWR1Y2UgKHVzZWQgdG8gYmUgYSBidWlsdGluKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQxMyw2ICs1NDcsOCBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKICAgICB7InJlZHVjZSIsICAgICAgICAgIGZ1bmN0b29sc19yZWR1Y2UsICAgICBNRVRIX1ZBUkFSR1MsIGZ1bmN0b29sc19yZWR1Y2VfZG9jfSwKKyAgICB7ImNtcF90b19rZXkiLCAgICAgIChQeUNGdW5jdGlvbilmdW5jdG9vbHNfY21wX3RvX2tleSwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZnVuY3Rvb2xzX2NtcF90b19rZXlfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2VzdGFsdC5jIGIvTW9kdWxlcy9fZ2VzdGFsdC5jCmluZGV4IGE0NTc4MGYuLmNkMzA2ODMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dlc3RhbHQuYworKysgYi9Nb2R1bGVzL19nZXN0YWx0LmMKQEAgLTMzLDcgKzMzLDcgQEAKIGNvbnZlcnRfdG9fT1NUeXBlKFB5T2JqZWN0ICp2LCBPU1R5cGUgKnByKQogewogICAgIHVpbnQzMl90IHRtcDsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSB8fCBQeVVuaWNvZGVfR2V0U2l6ZSh2KSAhPSA0KSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikgfHwgUHlVbmljb2RlX0dldExlbmd0aCh2KSAhPSA0KSB7CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIk9TVHlwZSBhcmcgbXVzdCBiZSBzdHJpbmcgb2YgNCBjaGFycyIpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggZGQ0MzE3Zi4uZDM3Njg5ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC0yMDEsMTMgKzIwMSwxMSBAQAogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yKGk9aj0wOyBpPGRpZ2VzdF9zaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CiAgICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGhleF9kaWdlc3QsIGRpZ2VzdF9zaXplICogMik7CiAgICAgUHlNZW1fRnJlZShoZXhfZGlnZXN0KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKaW5kZXggZTE4YWVjNi4uZDNhODdlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKQEAgLTEsOSArMSw5IEBACiAvKgogICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgSS9PIGxpYiBhcyBkZWZpbmVkIGJ5IFBFUCAzMTE2IC0gIk5ldyBJL08iCi0gICAgCisKICAgICBDbGFzc2VzIGRlZmluZWQgaGVyZTogVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEJsb2NraW5nSU9FcnJvci4KICAgICBGdW5jdGlvbnMgZGVmaW5lZCBoZXJlOiBvcGVuKCkuCi0gICAgCisKICAgICBNb3N0bHkgd3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYwogKi8KIApAQCAtMzYsNiArMzYsNyBAQAogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkMTsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFibGU7CitQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhbGw7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRpbnRvOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkbGluZTsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVzZXQ7CkBAIC05MCw5NCArOTEsMTEgQEAKIAwKIAogLyoKLSAqIEJsb2NraW5nSU9FcnJvciBleHRlbmRzIElPRXJyb3IKLSAqLwotCi1zdGF0aWMgaW50Ci1ibG9ja2luZ2lvZXJyb3JfaW5pdChQeUJsb2NraW5nSU9FcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmJhc2VhcmdzID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHdyaXR0ZW4gPSAwOwotCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotCi0gICAgc2VsZi0+d3JpdHRlbiA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOkJsb2NraW5nSU9FcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZteWVycm5vLCAmc3RyZXJyb3IsICZ3cml0dGVuKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgYmFzZWFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgbXllcnJubywgc3RyZXJyb3IpOwotICAgIGlmIChiYXNlYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgLyogVGhpcyB3aWxsIHRha2UgY2FyZSBvZiBpbml0aWFsaXppbmcgb2YgbXllcnJubyBhbmQgc3RyZXJyb3IgbWVtYmVycyAqLwotICAgIGlmICgoKFB5VHlwZU9iamVjdCAqKVB5RXhjX0lPRXJyb3IpLT50cF9pbml0KAotICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKXNlbGYsIGJhc2VhcmdzLCBrd2RzKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoYmFzZWFyZ3MpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihiYXNlYXJncyk7Ci0KLSAgICBzZWxmLT53cml0dGVuID0gd3JpdHRlbjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIFB5TWVtYmVyRGVmIGJsb2NraW5naW9lcnJvcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJjaGFyYWN0ZXJzX3dyaXR0ZW4iLCBUX1BZU1NJWkVULCBvZmZzZXRvZihQeUJsb2NraW5nSU9FcnJvck9iamVjdCwgd3JpdHRlbiksIDB9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjX0Jsb2NraW5nSU9FcnJvciA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiQmxvY2tpbmdJT0Vycm9yIiwgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIFB5RG9jX1NUUigiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIEkvTyB3b3VsZCBibG9jayAiCi0gICAgICAgICAgICAgICJvbiBhIG5vbi1ibG9ja2luZyBJL08gc3RyZWFtIiksIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBibG9ja2luZ2lvZXJyb3JfbWVtYmVycywgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYylibG9ja2luZ2lvZXJyb3JfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci1QeU9iamVjdCAqUHlFeGNfQmxvY2tpbmdJT0Vycm9yID0gKFB5T2JqZWN0ICopJl9QeUV4Y19CbG9ja2luZ0lPRXJyb3I7Ci0MCi0KLS8qCiAgKiBUaGUgbWFpbiBvcGVuKCkgZnVuY3Rpb24KICAqLwogUHlEb2NfU1RSVkFSKG9wZW5fZG9jLAogIm9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSxcbiIKLSIgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSkgLT4gZmlsZSBvYmplY3RcbiIKKyIgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpIC0+IGZpbGUgb2JqZWN0XG4iCiAiXG4iCiAiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS5cbiIKICJcbiIKQEAgLTE5MCwxOCArMTA4LDIwIEBACiAibW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGVcbiIKICJpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHRcbiIKICJtb2RlLiAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCi0iaXQgYWxyZWFkeSBleGlzdHMpLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLFxuIgotIm1lYW5zIHRoYXQgYWxsIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZVxuIgotImN1cnJlbnQgc2VlayBwb3NpdGlvbikuIEluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGVcbiIKLSJlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhd1xuIgotImJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlXG4iCi0ibW9kZXMgYXJlOlxuIgorIml0IGFscmVhZHkgZXhpc3RzKSwgJ3gnIGZvciBjcmVhdGluZyBhbmQgd3JpdGluZyB0byBhIG5ldyBmaWxlLCBhbmRcbiIKKyInYScgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlc1xuIgorImFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuXG4iCisiSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtXG4iCisiZGVwZW5kZW50OiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGlzIGNhbGxlZCB0byBnZXQgdGhlXG4iCisiY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeVxuIgorIm1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6XG4iCiAiXG4iCiAiPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgogIkNoYXJhY3RlciBNZWFuaW5nXG4iCiAiLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgogIidyJyAgICAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KVxuIgogIid3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0XG4iCisiJ3gnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nXG4iCiAiJ2EnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0c1xuIgogIidiJyAgICAgICBiaW5hcnkgbW9kZVxuIgogIid0JyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpXG4iCkBAIC0yMTIsNyArMTMyLDggQEAKICJcbiIKICJUaGUgZGVmYXVsdCBtb2RlIGlzICdydCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tXG4iCiAiYWNjZXNzLCB0aGUgbW9kZSAndytiJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlXG4iCi0iJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLlxuIgorIidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZFxuIgorInJhaXNlcyBhbiBgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy5cbiIKICJcbiIKICJQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsXG4iCiAiZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lc24ndC4gRmlsZXMgb3BlbmVkIGluXG4iCkBAIC0yNzIsNiArMTkzLDEyIEBACiAid2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzIGdpdmVuXG4iCiAiYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuXG4iCiAiXG4iCisiQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlXG4iCisidW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5XG4iCisiY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuXG4iCisiZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5XG4iCisic2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLlxuIgorIlxuIgogIm9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmRcbiIKICJ0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nXG4iCiAiYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoJ3cnLFxuIgpAQCAtMjkyLDI1ICsyMTksMjkgQEAKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwKLSAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VmZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpmaWxlOworICAgICAgICAgICAgICAgICAgICAgICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlLCAqb3BlbmVyID0gUHlfTm9uZTsKICAgICBjaGFyICptb2RlID0gInIiOwogICAgIGludCBidWZmZXJpbmcgPSAtMSwgY2xvc2VmZCA9IDE7CiAgICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMLCAqZXJyb3JzID0gTlVMTCwgKm5ld2xpbmUgPSBOVUxMOwogICAgIHVuc2lnbmVkIGk7CiAKLSAgICBpbnQgcmVhZGluZyA9IDAsIHdyaXRpbmcgPSAwLCBhcHBlbmRpbmcgPSAwLCB1cGRhdGluZyA9IDA7CisgICAgaW50IGNyZWF0aW5nID0gMCwgcmVhZGluZyA9IDAsIHdyaXRpbmcgPSAwLCBhcHBlbmRpbmcgPSAwLCB1cGRhdGluZyA9IDA7CiAgICAgaW50IHRleHQgPSAwLCBiaW5hcnkgPSAwLCB1bml2ZXJzYWwgPSAwOwogCi0gICAgY2hhciByYXdtb2RlWzVdLCAqbTsKKyAgICBjaGFyIHJhd21vZGVbNl0sICptOwogICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNhdHR5OwogCiAgICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyID0gTlVMTCwgKndyYXBwZXIgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppOm9wZW4iLCBrd2xpc3QsCisgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbm8pOworICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppTzpvcGVuIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMyNiw2ICsyNTcsOSBAQAogICAgICAgICBjaGFyIGMgPSBtb2RlW2ldOwogCiAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGNyZWF0aW5nID0gMTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgIHJlYWRpbmcgPSAxOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNjIsNiArMjk2LDcgQEAKICAgICB9CiAKICAgICBtID0gcmF3bW9kZTsKKyAgICBpZiAoY3JlYXRpbmcpICAqKG0rKykgPSAneCc7CiAgICAgaWYgKHJlYWRpbmcpICAgKihtKyspID0gJ3InOwogICAgIGlmICh3cml0aW5nKSAgICoobSsrKSA9ICd3JzsKICAgICBpZiAoYXBwZW5kaW5nKSAqKG0rKykgPSAnYSc7CkBAIC0zODQsOSArMzE5LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgeworICAgIGlmIChjcmVhdGluZyArIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQxMCw3ICszNDUsNyBAQAogCiAgICAgLyogQ3JlYXRlIHRoZSBSYXcgZmlsZSBzdHJlYW0gKi8KICAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGUsCi0JCQkJIk9zaSIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CiAgICAgaWYgKHJhdyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDIwLDcgKzM1NSw3IEBACiAKICAgICAvKiBidWZmZXJpbmcgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJhdywgImlzYXR0eSIsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgTlVMTCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlzYXR0eSA9IFB5TG9uZ19Bc0xvbmcocmVzKTsKQEAgLTQ0Miw3ICszNzcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKICAgICAgICAgICAgIGxvbmcgZmlsZW5vOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiZmlsZW5vIiwgTlVMTCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNDgwLDcgKzQxNSw3IEBACiAKICAgICAgICAgaWYgKHVwZGF0aW5nKQogICAgICAgICAgICAgQnVmZmVyZWRfY2xhc3MgPSAoUHlPYmplY3QgKikmUHlCdWZmZXJlZFJhbmRvbV9UeXBlOwotICAgICAgICBlbHNlIGlmICh3cml0aW5nIHx8IGFwcGVuZGluZykKKyAgICAgICAgZWxzZSBpZiAoY3JlYXRpbmcgfHwgd3JpdGluZyB8fCBhcHBlbmRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkV3JpdGVyX1R5cGU7CiAgICAgICAgIGVsc2UgaWYgKHJlYWRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkUmVhZGVyX1R5cGU7CkBAIC01MTMsNyArNDQ4LDcgQEAKICAgICBpZiAod3JhcHBlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcod3JhcHBlciwgIm1vZGUiLCBtb2Rlb2JqKSA8IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQod3JhcHBlciwgJlB5SWRfbW9kZSwgbW9kZW9iaikgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0RFQ1JFRihtb2Rlb2JqKTsKICAgICByZXR1cm4gd3JhcHBlcjsKQEAgLTU3Niw3ICs1MTEsNyBAQAogCiAKIC8qIEJhc2ljYWxseSB0aGUgIm4iIGZvcm1hdCBjb2RlIHdpdGggdGhlIGFiaWxpdHkgdG8gdHVybiBOb25lIGludG8gLTEuICovCi1pbnQgCitpbnQKIF9QeUlPX0NvbnZlcnRTc2l6ZV90KFB5T2JqZWN0ICpvYmosIHZvaWQgKnJlc3VsdCkgewogICAgIFB5X3NzaXplX3QgbGltaXQ7CiAgICAgaWYgKG9iaiA9PSBQeV9Ob25lKSB7CkBAIC02MDMsNyArNTM4LDYgQEAKICAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19NT0RfU1RBVEUobW9kKTsKICAgICBpZiAoIXN0YXRlLT5pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUHlfVklTSVQoc3RhdGUtPm9zX21vZHVsZSk7CiAgICAgaWYgKHN0YXRlLT5sb2NhbGVfbW9kdWxlICE9IE5VTEwpIHsKICAgICAgICAgUHlfVklTSVQoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIH0KQEAgLTYxNyw3ICs1NTEsNiBAQAogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX01PRF9TVEFURShtb2QpOwogICAgIGlmICghc3RhdGUtPmluaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQeV9DTEVBUihzdGF0ZS0+b3NfbW9kdWxlKTsKICAgICBpZiAoc3RhdGUtPmxvY2FsZV9tb2R1bGUgIT0gTlVMTCkKICAgICAgICAgUHlfQ0xFQVIoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIFB5X0NMRUFSKHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pOwpAQCAtNjYxLDExICs1OTQsNiBAQAogICAgIHN0YXRlID0gSU9fTU9EX1NUQVRFKG0pOwogICAgIHN0YXRlLT5pbml0aWFsaXplZCA9IDA7CiAKLSAgICAvKiBwdXQgb3MgaW4gdGhlIG1vZHVsZSBzdGF0ZSAqLwotICAgIHN0YXRlLT5vc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm9zIik7Ci0gICAgaWYgKHN0YXRlLT5vc19tb2R1bGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOwotCiAjZGVmaW5lIEFERF9UWVBFKHR5cGUsIG5hbWUpIFwKICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgXAogICAgICAgICBnb3RvIGZhaWw7IFwKQEAgLTY5MCw5ICs2MTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQmxvY2tpbmdJT0Vycm9yICovCi0gICAgX1B5RXhjX0Jsb2NraW5nSU9FcnJvci50cF9iYXNlID0gKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JT0Vycm9yOwotICAgIEFERF9UWVBFKCZfUHlFeGNfQmxvY2tpbmdJT0Vycm9yLCAiQmxvY2tpbmdJT0Vycm9yIik7CisgICAgLyogQmxvY2tpbmdJT0Vycm9yLCBmb3IgY29tcGF0aWJpbGl0eSAqLworICAgIFB5X0lOQ1JFRihQeUV4Y19CbG9ja2luZ0lPRXJyb3IpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJsb2NraW5nSU9FcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yKSA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIC8qIENvbmNyZXRlIGJhc2UgdHlwZXMgb2YgdGhlIElPIEFCQ3MuCiAgICAgICAgKHRoZSBBQkNzIHRoZW1zZWx2ZXMgYXJlIGRlY2xhcmVkIHRocm91Z2ggaW5oZXJpdGFuY2UgaW4gaW8ucHkpCkBAIC03NTgsNiArNjg4LDcgQEAKICAgICBBRERfSU5URVJORUQocmVhZCkKICAgICBBRERfSU5URVJORUQocmVhZDEpCiAgICAgQUREX0lOVEVSTkVEKHJlYWRhYmxlKQorICAgIEFERF9JTlRFUk5FRChyZWFkYWxsKQogICAgIEFERF9JTlRFUk5FRChyZWFkaW50bykKICAgICBBRERfSU5URVJORUQocmVhZGxpbmUpCiAgICAgQUREX0lOVEVSTkVEKHJlc2V0KQpAQCAtNzg4LDcgKzcxOSw2IEBACiAgICAgcmV0dXJuIG07CiAKICAgZmFpbDoKLSAgICBQeV9YREVDUkVGKHN0YXRlLT5vc19tb2R1bGUpOwogICAgIFB5X1hERUNSRUYoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbik7CiAgICAgUHlfREVDUkVGKG0pOwogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCBhYThiZmQ2Li4wZmU5MGEzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtNTAsMTIgKzUwLDEyIEBACiAgICBgKmNvbnN1bWVkYC4KICAgIElmIG5vdCBmb3VuZCwgcmV0dXJucyAtMSBhbmQgc2V0cyBgKmNvbnN1bWVkYCB0byB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAgIHdoaWNoIGNhbiBiZSBzYWZlbHkgcHV0IGFzaWRlIHVudGlsIGFub3RoZXIgc2VhcmNoLgotICAgCi0gICBOT1RFOiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgYGVuZGAgbXVzdCBwb2ludCB0byBhIE5VTCBjaGFyYWN0ZXIgKCdcMCcpLiAKKworICAgTk9URTogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGBlbmRgIG11c3QgcG9pbnQgdG8gYSBOVUwgY2hhcmFjdGVyICgnXDAnKS4KICAgIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHdpbGwgc2NhbiBmdXJ0aGVyIGFuZCByZXR1cm4gZ2FyYmFnZS4gKi8KIGV4dGVybiBQeV9zc2l6ZV90IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgUHlfVU5JQ09ERSAqc3RhcnQsIFB5X1VOSUNPREUgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOworICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CiAKIC8qIFJldHVybiAxIGlmIGFuIEVudmlyb25tZW50RXJyb3Igd2l0aCBlcnJubyA9PSBFSU5UUiBpcyBzZXQgKGFuZCB0aGVuCiAgICBjbGVhcnMgdGhlIGVycm9yIGluZGljYXRvciksIDAgb3RoZXJ3aXNlLgpAQCAtNjUsMTUgKzY1LDYgQEAKIAogI2RlZmluZSBERUZBVUxUX0JVRkZFUl9TSVpFICg4ICogMTAyNCkgIC8qIGJ5dGVzICovCiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeUV4Y2VwdGlvbl9IRUFECi0gICAgUHlPYmplY3QgKm15ZXJybm87Ci0gICAgUHlPYmplY3QgKnN0cmVycm9yOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsgLyogTm90IHVzZWQsIGJ1dCBwYXJ0IG9mIHRoZSBJT0Vycm9yIG9iamVjdCAqLwotICAgIFB5X3NzaXplX3Qgd3JpdHRlbjsKLX0gUHlCbG9ja2luZ0lPRXJyb3JPYmplY3Q7Ci1leHRlcm4gUHlPYmplY3QgKlB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKLQogLyoKICAqIE9mZnNldCB0eXBlIGZvciBwb3NpdGlvbmluZy4KICAqLwpAQCAtMTM4LDcgKzEyOSw2IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgaW5pdGlhbGl6ZWQ7Ci0gICAgUHlPYmplY3QgKm9zX21vZHVsZTsKICAgICBQeU9iamVjdCAqbG9jYWxlX21vZHVsZTsKIAogICAgIFB5T2JqZWN0ICp1bnN1cHBvcnRlZF9vcGVyYXRpb247CkBAIC0xNjAsNiArMTUwLDcgQEAKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWQ7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkMTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhYmxlOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFsbDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRpbnRvOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGxpbmU7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZXNldDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCBiYjc3YWNjLi4zMzQ3MzRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC0xLDkgKzEsOSBAQAogLyoKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZCBJL08gYXMgZGVmaW5lZCBieSBQRVAgMzExNiAtICJOZXcgSS9PIgotICAgIAorCiAgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IEJ1ZmZlcmVkSU9CYXNlLCBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIsCiAgICAgQnVmZmVyZWRSYW5kb20uCi0gICAgCisKICAgICBXcml0dGVuIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjIGFuZCBBbnRvaW5lIFBpdHJvdQogKi8KIApAQCAtMTMsNiArMTMsMjAgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKK19QeV9JREVOVElGSUVSKGlzYXR0eSk7CitfUHlfSURFTlRJRklFUihtb2RlKTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIocGVlayk7CitfUHlfSURFTlRJRklFUihyZWFkKTsKK19QeV9JREVOVElGSUVSKHJlYWQxKTsKK19QeV9JREVOVElGSUVSKHJlYWRhYmxlKTsKK19QeV9JREVOVElGSUVSKHJlYWRpbnRvKTsKK19QeV9JREVOVElGSUVSKHdyaXRhYmxlKTsKK19QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogLyoKICAqIEJ1ZmZlcmVkSU9CYXNlIGNsYXNzLCBpbmhlcml0cyBmcm9tIElPQmFzZS4KICAqLwpAQCAtMzgsMTIgKzUyLDEzIEBACiAgICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZCIsICJuIiwgYnVmLmxlbik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwgIm4iLCBidWYubGVuKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xOTgsNyArMjEzLDcgQEAKICAgICBpbnQgcmVhZGFibGU7CiAgICAgaW50IHdyaXRhYmxlOwogICAgIGludCBkZWFsbG9jYXRpbmc7Ci0gICAgCisKICAgICAvKiBUcnVlIGlmIHRoaXMgaXMgYSB2YW5pbGxhIEJ1ZmZlcmVkIG9iamVjdCAocmF0aGVyIHRoYW4gYSB1c2VyIGRlcml2ZWQKICAgICAgICBjbGFzcykgKmFuZCogdGhlIHJhdyBzdHJlYW0gaXMgYSB2YW5pbGxhIEZpbGVJTyBvYmplY3QuICovCiAgICAgaW50IGZhc3RfY2xvc2VkX2NoZWNrczsKQEAgLTIzNyw3ICsyNTIsNyBAQAogCiAvKgogICAgIEltcGxlbWVudGF0aW9uIG5vdGVzOgotICAgIAorCiAgICAgKiBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tIHRyeSB0byBzaGFyZSBtb3N0CiAgICAgICBtZXRob2RzICh0aGlzIGlzIGhlbHBlZCBieSB0aGUgbWVtYmVycyBgcmVhZGFibGVgIGFuZCBgd3JpdGFibGVgLCB3aGljaAogICAgICAgYXJlIGluaXRpYWxpemVkIGluIHRoZSByZXNwZWN0aXZlIGNvbnN0cnVjdG9ycykKQEAgLTI1NSw3ICsyNzAsNyBAQAogICAgIE5PVEU6IHdlIHNob3VsZCB0cnkgdG8gbWFpbnRhaW4gYmxvY2sgYWxpZ25tZW50IG9mIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlCiAgICAgcmF3IHN0cmVhbSAoYWNjb3JkaW5nIHRvIHRoZSBidWZmZXIgc2l6ZSksIGJ1dCBmb3Igbm93IGl0IGlzIG9ubHkgZG9uZQogICAgIGluIHJlYWQoKSBhbmQgZnJpZW5kcy4KLSAgICAKKwogKi8KIAogLyogVGhlc2UgbWFjcm9zIHByb3RlY3QgdGhlIGJ1ZmZlcmVkIG9iamVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgb3BlcmF0aW9ucy4gKi8KQEAgLTQyMSw3ICs0MzYsNyBAQAogewogICAgIGlmIChzZWxmLT5vayAmJiBzZWxmLT5yYXcpIHsKICAgICAgICAgUHlPYmplY3QgKnI7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPnJhdywgIl9kZWFsbG9jX3dhcm4iLCAiTyIsIHNvdXJjZSk7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnJhdywgJlB5SWRfX2RlYWxsb2Nfd2FybiwgIk8iLCBzb3VyY2UpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtNTU0LDE0ICs1NjksMTQgQEAKIGJ1ZmZlcmVkX25hbWVfZ2V0KGJ1ZmZlcmVkICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZi0+cmF3LCAibmFtZSIpOworICAgIHJldHVybiBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYtPnJhdywgJlB5SWRfbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZF9tb2RlX2dldChidWZmZXJlZCAqc2VsZiwgdm9pZCAqY29udGV4dCkKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPnJhdywgIm1vZGUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5yYXcsICZQeUlkX21vZGUpOwogfQogCiAvKiBMb3dlci1sZXZlbCBBUElzICovCkBAIC02MDAsMTQgKzYxNSwxNSBAQAogc3RhdGljIHZvaWQKIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoYnVmZmVyZWQgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0ICoKLV9idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90KTsKK19idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9hbGwoYnVmZmVyZWQgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2Zhc3QoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QpOwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2dlbmVyaWMoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QpOwotCitzdGF0aWMgUHlfc3NpemVfdAorX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKGJ1ZmZlcmVkICpzZWxmLCBjaGFyICpzdGFydCwgUHlfc3NpemVfdCBsZW4pOwogCiAvKgogICogSGVscGVycwpAQCAtNjMxLDE0ICs2NDcsMTQgQEAKIF9idWZmZXJlZF9jaGVja19ibG9ja2luZ19lcnJvcih2b2lkKQogewogICAgIFB5T2JqZWN0ICp0LCAqdiwgKnRiOwotICAgIFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0ICplcnI7CisgICAgUHlPU0Vycm9yT2JqZWN0ICplcnI7CiAKICAgICBQeUVycl9GZXRjaCgmdCwgJnYsICZ0Yik7CiAgICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHYsIFB5RXhjX0Jsb2NraW5nSU9FcnJvcikpIHsKICAgICAgICAgUHlFcnJfUmVzdG9yZSh0LCB2LCB0Yik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcnIgPSAoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QgKikgdjsKKyAgICBlcnIgPSAoUHlPU0Vycm9yT2JqZWN0ICopIHY7CiAgICAgLyogVE9ETzogc2FuaXR5IGNoZWNrIChlcnItPndyaXR0ZW4gPj0gMCkgKi8KICAgICBQeUVycl9SZXN0b3JlKHQsIHYsIHRiKTsKICAgICByZXR1cm4gJmVyci0+d3JpdHRlbjsKQEAgLTY1OCw3ICs2NzQsNyBAQAogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiUmF3IHN0cmVhbSByZXR1cm5lZCBpbnZhbGlkIHBvc2l0aW9uICUiIFBZX1BSSWRPRkYsCi0JCQkgKFBZX09GRl9UX0NPTVBBVCluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfT0ZGX1RfQ09NUEFUKW4pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNlbGYtPmFic19wb3MgPSBuOwpAQCAtNjkxLDcgKzcwNyw3IEBACiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJSYXcgc3RyZWFtIHJldHVybmVkIGludmFsaWQgcG9zaXRpb24gJSIgUFlfUFJJZE9GRiwKLQkJCSAoUFlfT0ZGX1RfQ09NUEFUKW4pOworICAgICAgICAgICAgICAgICAgICAgICAgIChQWV9PRkZfVF9DT01QQVQpbik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2VsZi0+YWJzX3BvcyA9IG47CkBAIC04MzIsNyArODQ4LDcgQEAKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICBQeV9DTEVBUihyZXMpOwogICAgIH0KLSAgICByZXMgPSBfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChzZWxmLCBuKTsKKyAgICByZXMgPSBfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChzZWxmKTsKIAogZW5kOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCkBAIC04OTYsNjEgKzkxMiwxMTIgQEAKICAgICBpZiAobiA9PSAwKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIAogICAgIC8qIFJldHVybiB1cCB0byBuIGJ5dGVzLiAgSWYgYXQgbGVhc3Qgb25lIGJ5dGUgaXMgYnVmZmVyZWQsIHdlCiAgICAgICAgb25seSByZXR1cm4gYnVmZmVyZWQgYnl0ZXMuICBPdGhlcndpc2UsIHdlIGRvIG9uZSByYXcgcmVhZC4gKi8KIAotICAgIC8qIFhYWDogdGhpcyBtaW1pY2tzIHRoZSBpby5weSBpbXBsZW1lbnRhdGlvbiBidXQgaXMgcHJvYmFibHkgd3JvbmcuCi0gICAgICAgSWYgd2UgbmVlZCB0byByZWFkIGZyb20gdGhlIHJhdyBzdHJlYW0sIHRoZW4gd2UgY291bGQgYWN0dWFsbHkgcmVhZAotICAgICAgIGFsbCBgbmAgYnl0ZXMgYXNrZWQgYnkgdGhlIGNhbGxlciAoYW5kIHBvc3NpYmx5IG1vcmUsIHNvIGFzIHRvIGZpbGwKLSAgICAgICBvdXIgYnVmZmVyIGZvciB0aGUgbmV4dCByZWFkcykuICovCi0KICAgICBoYXZlID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKICAgICBpZiAoaGF2ZSA+IDApIHsKLSAgICAgICAgaWYgKG4gPiBoYXZlKQotICAgICAgICAgICAgbiA9IGhhdmU7Ci0gICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBuOwotICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgbiA9IFB5X01JTihoYXZlLCBuKTsKKyAgICAgICAgcmVzID0gX2J1ZmZlcmVkcmVhZGVyX3JlYWRfZmFzdChzZWxmLCBuKTsKKyAgICAgICAgYXNzZXJ0KHJlcyAhPSBQeV9Ob25lKTsKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9Ci0KLSAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKLSAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlbmQ7CisgICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpIHsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIC8qIEZpbGwgdGhlIGJ1ZmZlciBmcm9tIHRoZSByYXcgc3RyZWFtLCBhbmQgY29weSBpdCB0byB0aGUgcmVzdWx0LiAqLwogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7Ci0gICAgciA9IF9idWZmZXJlZHJlYWRlcl9maWxsX2J1ZmZlcihzZWxmKTsKLSAgICBpZiAociA9PSAtMSkKLSAgICAgICAgZ290byBlbmQ7CisgICAgciA9IF9idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhyZXMpLCBuKTsKKyAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQorICAgIGlmIChyID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHIgPT0gLTIpCiAgICAgICAgIHIgPSAwOwogICAgIGlmIChuID4gcikKLSAgICAgICAgbiA9IHI7Ci0gICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIsIG4pOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0gICAgc2VsZi0+cG9zID0gbjsKLQotZW5kOgotICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRfcmVhZGludG8oYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIFB5X2J1ZmZlciBidWY7CisgICAgUHlfc3NpemVfdCBuLCB3cml0dGVuID0gMCwgcmVtYWluaW5nOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICAKLSAgICAvKiBUT0RPOiB1c2UgcmF3LnJlYWRpbnRvKCkgKG9yIGEgZGlyZWN0IGNvcHkgZnJvbSBvdXIgYnVmZmVyKSBpbnN0ZWFkISAqLwotICAgIHJldHVybiBidWZmZXJlZGlvYmFzZV9yZWFkaW50bygoUHlPYmplY3QgKilzZWxmLCBhcmdzKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKKyAgICBpZiAobiA+IDApIHsKKyAgICAgICAgaWYgKG4gPj0gYnVmLmxlbikgeworICAgICAgICAgICAgbWVtY3B5KGJ1Zi5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmLmxlbik7CisgICAgICAgICAgICBzZWxmLT5wb3MgKz0gYnVmLmxlbjsKKyAgICAgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdChidWYubGVuKTsKKyAgICAgICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworICAgICAgICB9CisgICAgICAgIG1lbWNweShidWYuYnVmLCBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIG4pOworICAgICAgICBzZWxmLT5wb3MgKz0gbjsKKyAgICAgICAgd3JpdHRlbiA9IG47CisgICAgfQorCisgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKKyAgICAgICAgZ290byBlbmRfdW5sb2NrZWQ7CisKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKKyAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgfQorCisgICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKKyAgICBzZWxmLT5wb3MgPSAwOworCisgICAgZm9yIChyZW1haW5pbmcgPSBidWYubGVuIC0gd3JpdHRlbjsKKyAgICAgICAgIHJlbWFpbmluZyA+IDA7CisgICAgICAgICB3cml0dGVuICs9IG4sIHJlbWFpbmluZyAtPSBuKSB7CisgICAgICAgIC8qIElmIHJlbWFpbmluZyBieXRlcyBpcyBsYXJnZXIgdGhhbiBpbnRlcm5hbCBidWZmZXIgc2l6ZSwgY29weQorICAgICAgICAgKiBkaXJlY3RseSBpbnRvIGNhbGxlcidzIGJ1ZmZlci4gKi8KKyAgICAgICAgaWYgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICBuID0gX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKHNlbGYsIChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbiA9IF9idWZmZXJlZHJlYWRlcl9maWxsX2J1ZmZlcihzZWxmKTsKKyAgICAgICAgICAgIGlmIChuID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChuID4gcmVtYWluaW5nKQorICAgICAgICAgICAgICAgICAgICBuID0gcmVtYWluaW5nOworICAgICAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKKyAgICAgICAgICAgICAgICBzZWxmLT5wb3MgKz0gbjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogc2hvcnQgY2lyY3VpdCAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChuID09IDAgfHwgKG4gPT0gLTIgJiYgd3JpdHRlbiA+IDApKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChuIDwgMCkgeworICAgICAgICAgICAgaWYgKG4gPT0gLTIpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgcmVzID0gUHlfTm9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICB9CisgICAgfQorICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh3cml0dGVuKTsKKworZW5kOgorICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpOworZW5kX3VubG9ja2VkOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExMDEsOSArMTE2OCwyMCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLCAmdGFyZ2V0b2JqLCAmd2hlbmNlKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHdoZW5jZSA8IDAgfHwgd2hlbmNlID4gMikgeworCisgICAgLyogRG8gc29tZSBlcnJvciBjaGVja2luZyBpbnN0ZWFkIG9mIHRydXN0aW5nIE9TICdzZWVrKCknCisgICAgKiogZXJyb3IgZGV0ZWN0aW9uLCBqdXN0IGluIGNhc2UuCisgICAgKi8KKyAgICBpZiAoKHdoZW5jZSA8IDAgfHwgd2hlbmNlID4yKQorI2lmZGVmIFNFRUtfSE9MRQorICAgICAgICAmJiAod2hlbmNlICE9IFNFRUtfSE9MRSkKKyNlbmRpZgorI2lmZGVmIFNFRUtfREFUQQorICAgICAgICAmJiAod2hlbmNlICE9IFNFRUtfREFUQSkKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAid2hlbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyLCBub3QgJWQiLCB3aGVuY2UpOworICAgICAgICAgICAgICAgICAgICAgIndoZW5jZSB2YWx1ZSAlZCB1bnN1cHBvcnRlZCIsIHdoZW5jZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTExNiw3ICsxMTk0LDExIEBACiAgICAgaWYgKHRhcmdldCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICh3aGVuY2UgIT0gMiAmJiBzZWxmLT5yZWFkYWJsZSkgeworICAgIC8qIFNFRUtfU0VUIGFuZCBTRUVLX0NVUiBhcmUgc3BlY2lhbCBiZWNhdXNlIHdlIGNvdWxkIHNlZWsgaW5zaWRlIHRoZQorICAgICAgIGJ1ZmZlci4gT3RoZXIgd2hlbmNlIHZhbHVlcyBtdXN0IGJlIG1hbmFnZWQgd2l0aG91dCB0aGlzIG9wdGltaXphdGlvbi4KKyAgICAgICBTb21lIE9wZXJhdGluZyBTeXN0ZW1zIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCisgICAgICAgU0VFS19IT0xFL1NFRUtfREFUQS4gKi8KKyAgICBpZiAoKCh3aGVuY2UgPT0gMCkgfHwgKHdoZW5jZSA9PSAxKSkgJiYgc2VsZi0+cmVhZGFibGUpIHsKICAgICAgICAgUHlfb2ZmX3QgY3VycmVudCwgYXZhaWw7CiAgICAgICAgIC8qIENoZWNrIGlmIHNlZWtpbmcgbGVhdmVzIHVzIGluc2lkZSB0aGUgY3VycmVudCBidWZmZXIsCiAgICAgICAgICAgIHNvIGFzIHRvIHJldHVybiBxdWlja2x5IGlmIHBvc3NpYmxlLiBBbHNvLCB3ZSBuZWVkbid0IHRha2UgdGhlCkBAIC0xMjQyLDcgKzEzMjQsNyBAQAogewogICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcmVzOwogCi0gICAgbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJuYW1lIik7CisgICAgbmFtZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX25hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTEzNjgsMzMgKzE0NTAsNjAgQEAKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2FsbChidWZmZXJlZCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGN1cnJlbnRfc2l6ZTsKLSAgICBQeU9iamVjdCAqcmVzLCAqZGF0YSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmNodW5rcyA9IFB5TGlzdF9OZXcoMCk7Ci0KLSAgICBpZiAoY2h1bmtzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMsICpkYXRhID0gTlVMTCwgKmNodW5rLCAqY2h1bmtzOwogCiAgICAgLyogRmlyc3QgY29weSB3aGF0IHdlIGhhdmUgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAqLwogICAgIGN1cnJlbnRfc2l6ZSA9IFB5X1NBRkVfRE9XTkNBU1QoUkVBREFIRUFEKHNlbGYpLCBQeV9vZmZfdCwgUHlfc3NpemVfdCk7CiAgICAgaWYgKGN1cnJlbnRfc2l6ZSkgewogICAgICAgICBkYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgY3VycmVudF9zaXplKTsKLSAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBzZWxmLT5wb3MgKz0gY3VycmVudF9zaXplOwogICAgIH0KICAgICAvKiBXZSdyZSBnb2luZyBwYXN0IHRoZSBidWZmZXIncyBib3VuZHMsIGZsdXNoIGl0ICovCiAgICAgaWYgKHNlbGYtPndyaXRhYmxlKSB7CiAgICAgICAgIHJlcyA9IGJ1ZmZlcmVkX2ZsdXNoX2FuZF9yZXdpbmRfdW5sb2NrZWQoc2VsZik7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIFB5X0NMRUFSKHJlcyk7CiAgICAgfQogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CisKKyAgICBpZiAoUHlPYmplY3RfSGFzQXR0cihzZWxmLT5yYXcsIF9QeUlPX3N0cl9yZWFkYWxsKSkgeworICAgICAgICBjaHVuayA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPnJhdywgX1B5SU9fc3RyX3JlYWRhbGwsIE5VTEwpOworICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoY2h1bmsgIT0gUHlfTm9uZSAmJiAhUHlCeXRlc19DaGVjayhjaHVuaykpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZGF0YSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmspOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlYWRhbGwoKSBzaG91bGQgcmV0dXJuIGJ5dGVzIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2h1bmsgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRfc2l6ZSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBjaHVuazsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVuayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY3VycmVudF9zaXplKSB7CisgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmZGF0YSwgY2h1bmspOworICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rKTsKKyAgICAgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gY2h1bms7CisgICAgfQorCisgICAgY2h1bmtzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoY2h1bmtzID09IE5VTEwpIHsKKyAgICAgICAgUHlfWERFQ1JFRihkYXRhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGNodW5rcywgZGF0YSkgPCAwKSB7CkBAIC0xNTU2LDcgKzE2NjUsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QgbikKK19idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgaGF2ZSwgcjsKIApAQCAtMTU5OCw2ICsxNzA3LDcgQEAKICAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcGVlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWQxLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZGludG8sIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkbGluZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2VlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdGVsbCwgTUVUSF9OT0FSR1N9LApAQCAtMTY2MywxNSArMTc3Myw2IEBACiAMCiAKIAotc3RhdGljIGludAotY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKHZvaWQpCi17Ci0gICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCiAvKgogICogY2xhc3MgQnVmZmVyZWRXcml0ZXIKICAqLwpAQCAtMTY4MCw3ICsxNzgxLDcgQEAKICAgICAiXG4iCiAgICAgIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgQnVmZmVyZWRXcml0ZXIgZm9yIHRoZSBnaXZlbiB3cml0ZWFibGUgcmF3XG4iCiAgICAgInN0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG9cbiIKLSAgICAiREVGQVVMVF9CVUZGRVJfU0laRS4gbWF4X2J1ZmZlcl9zaXplIGlzbid0IHVzZWQgYW55bW9yZS5cbiIKKyAgICAiREVGQVVMVF9CVUZGRVJfU0laRS5cbiIKICAgICApOwogCiBzdGF0aWMgdm9pZApAQCAtMTY5MywyMyArMTc5NCwxOCBAQAogc3RhdGljIGludAogYnVmZmVyZWR3cml0ZXJfaW5pdChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIC8qIFRPRE86IHByb3Blcmx5IGRlcHJlY2F0ZSBtYXhfYnVmZmVyX3NpemUgKi8KLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgIm1heF9idWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAgICAgUHlPYmplY3QgKnJhdzsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xubjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUsICZtYXhfYnVmZmVyX3NpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0yMDkxLDE2ICsyMTg3LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlYWRlciwgKndyaXRlcjsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG5uOkJ1ZmZlcmVkUldQYWlyIiwgJnJlYWRlciwgJndyaXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcl9zaXplLCAmbWF4X2J1ZmZlcl9zaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCdWZmZXJlZFJXUGFpciIsICZyZWFkZXIsICZ3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChtYXhfYnVmZmVyX3NpemUgIT0gLTIzNCAmJiAhY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKCkpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmVhZGVyLCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZSh3cml0ZXIsIFB5X1RydWUpID09IE5VTEwpCkBAIC0yMTQ4LDEzICsyMjQwLDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZm9yd2FyZF9jYWxsKGJ1ZmZlcmVkICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqYXJncykKK19mb3J3YXJkX2NhbGwoYnVmZmVyZWQgKnNlbGYsIF9QeV9JZGVudGlmaWVyICpuYW1lLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgbmFtZSk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsIG5hbWUpOwogICAgIFB5T2JqZWN0ICpyZXQ7CiAKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZS0+c3RyaW5nKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0yMTY2LDY2ICsyMjU4LDY2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInJlYWQiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWQsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcGVlayhyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInBlZWsiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3BlZWssIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZDEocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkMSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZDEsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZGludG8ocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkaW50byIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZGludG8sIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfd3JpdGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJ3cml0ZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfZmx1c2gocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJmbHVzaCIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfZmx1c2gsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZGFibGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkYWJsZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZGFibGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfd3JpdGFibGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJ3cml0YWJsZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGFibGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfY2xvc2UocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmV0ID0gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJjbG9zZSIsIGFyZ3MpOworICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfY2xvc2UsIGFyZ3MpOwogICAgIGlmIChyZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHJldCk7CiAKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJjbG9zZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfY2xvc2UsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfaXNhdHR5KHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAiaXNhdHR5IiwgYXJncyk7CisgICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAmUHlJZF9pc2F0dHksIGFyZ3MpOwogCiAgICAgaWYgKHJldCAhPSBQeV9GYWxzZSkgewogICAgICAgICAvKiBlaXRoZXIgVHJ1ZSBvciBleGNlcHRpb24gKi8KQEAgLTIyMzMsNyArMjMyNSw3IEBACiAgICAgfQogICAgIFB5X0RFQ1JFRihyZXQpOwogCi0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAiaXNhdHR5IiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9pc2F0dHksIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjMyNSwyOCArMjQxNywyNCBAQAogICAgICJcbiIKICAgICAiVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSByZWFkZXIgYW5kIHdyaXRlciBmb3IgYSBzZWVrYWJsZSBzdHJlYW0sXG4iCiAgICAgInJhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdFxuIgotICAgICJkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLiBtYXhfYnVmZmVyX3NpemUgaXNuJ3QgdXNlZCBhbnltb3JlLlxuIgorICAgICJkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLlxuIgogICAgICk7CiAKIHN0YXRpYyBpbnQKIGJ1ZmZlcmVkcmFuZG9tX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgIm1heF9idWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAgICAgUHlPYmplY3QgKnJhdzsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xubjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUsICZtYXhfYnVmZmVyX3NpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCmluZGV4IDQxNjQ1MzMuLjU0ODQwYmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYworKysgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKQEAgLTk2MiwxMyArOTYyLDExIEBACiBieXRlc2lvYnVmX2dldGJ1ZmZlcihieXRlc2lvYnVmICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogewogICAgIGludCByZXQ7Ci0gICAgdm9pZCAqcHRyOwogICAgIGJ5dGVzaW8gKmIgPSAoYnl0ZXNpbyAqKSBvYmotPnNvdXJjZTsKICAgICBpZiAodmlldyA9PSBOVUxMKSB7CiAgICAgICAgIGItPmV4cG9ydHMrKzsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHB0ciA9ICh2b2lkICopIG9iajsKICAgICByZXQgPSBQeUJ1ZmZlcl9GaWxsSW5mbyh2aWV3LCAoUHlPYmplY3QqKW9iaiwgYi0+YnVmLCBiLT5zdHJpbmdfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbGFncyk7CiAgICAgaWYgKHJldCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDYwNWFkNTEuLjZlMGJiZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC00Niw2ICs0Niw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIGludCBmZDsKKyAgICB1bnNpZ25lZCBpbnQgY3JlYXRlZCA6IDE7CiAgICAgdW5zaWduZWQgaW50IHJlYWRhYmxlIDogMTsKICAgICB1bnNpZ25lZCBpbnQgd3JpdGFibGUgOiAxOwogICAgIHNpZ25lZCBpbnQgc2Vla2FibGUgOiAyOyAvKiAtMSBtZWFucyB1bmtub3duICovCkBAIC0xMjIsNiArMTIzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWxlaW9fY2xvc2UoZmlsZWlvICpzZWxmKQogeworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKICAgICBpZiAoIXNlbGYtPmNsb3NlZmQpIHsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xMzcsOCArMTM5LDggQEAKICAgICBpZiAoZXJybm8gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsb3NlIiwgIk8iLCBzZWxmKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Nsb3NlLCAiTyIsIHNlbGYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTUxLDYgKzE1Myw3IEBACiAgICAgc2VsZiA9IChmaWxlaW8gKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgICAgICBzZWxmLT5jcmVhdGVkID0gMDsKICAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAwOwogICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CiAgICAgICAgIHNlbGYtPnNlZWthYmxlID0gLTE7CkBAIC0yMDQsOSArMjA3LDkgQEAKIGZpbGVpb19pbml0KFB5T2JqZWN0ICpvc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGZpbGVpbyAqc2VsZiA9IChmaWxlaW8gKikgb3NlbGY7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CiAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmosICpzdHJpbmdvYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqc3RyaW5nb2JqID0gTlVMTCwgKm9wZW5lciA9IFB5X05vbmU7CiAgICAgY2hhciAqbW9kZSA9ICJyIjsKICAgICBjaGFyICpzOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTIzMCw4ICsyMzMsOSBAQAogICAgICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaTpmaWxlaW8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2lPOmZpbGVpbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGVuZXIpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoUHlGbG9hdF9DaGVjayhuYW1lb2JqKSkgewpAQCAtMjU4LDkgKzI2MiwxMCBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgd2lkZW5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lb2JqKTsKLSAgICB9Ci0gICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCisgICAgICAgIHdpZGVuYW1lID0gUHlVbmljb2RlX0FzVW5pY29kZShuYW1lb2JqKTsKKyAgICAgICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlCiAjZW5kaWYKICAgICBpZiAoZmQgPCAwKQogICAgIHsKQEAgLTI3MywxNSArMjc4LDIzIEBACiAgICAgcyA9IG1vZGU7CiAgICAgd2hpbGUgKCpzKSB7CiAgICAgICAgIHN3aXRjaCAoKnMrKykgewotICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBpZiAocndhKSB7CiAgICAgICAgICAgICBiYWRfbW9kZToKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkL3dyaXRlL2FwcGVuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGUgYW5kIGF0IG1vc3Qgb25lIHBsdXMiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPmNyZWF0ZWQgPSAxOworICAgICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAxOworICAgICAgICAgICAgZmxhZ3MgfD0gT19FWENMIHwgT19DUkVBVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CiAgICAgICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAndyc6CkBAIC0zNDcsMjAgKzM2MCw0MCBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgZXJybm8gPSAwOworICAgICAgICBpZiAob3BlbmVyID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQotICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCisgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IG9wZW4obmFtZSwgZmxhZ3MsIDA2NjYpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmZG9iaiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZXIsICJPaSIsIG5hbWVvYmosIGZsYWdzKTsKKyAgICAgICAgICAgIGlmIChmZG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayhmZG9iaikpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZmRvYmopOworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgaW50ZWdlciBmcm9tIG9wZW5lciIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNlbGYtPmZkID0gUHlMb25nX0FzTG9uZyhmZG9iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZmRvYmopOworICAgICAgICAgICAgaWYgKHNlbGYtPmZkID09IC0xKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGZkX2lzX293biA9IDE7CiAgICAgICAgIGlmIChzZWxmLT5mZCA8IDApIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoVW5pY29kZUZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIHdpZGVuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwgbmFtZW9iaik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgbmFtZSk7CkBAIC01MjksMzYgKzU2Miw1MyBAQAogfQogCiBzdGF0aWMgc2l6ZV90Ci1uZXdfYnVmZmVyc2l6ZShmaWxlaW8gKnNlbGYsIHNpemVfdCBjdXJyZW50c2l6ZSkKLXsKK25ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplCiAjaWZkZWYgSEFWRV9GU1RBVAotICAgIG9mZl90IHBvcywgZW5kOwotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJnN0KSA9PSAwKSB7Ci0gICAgICAgIGVuZCA9IHN0LnN0X3NpemU7Ci0gICAgICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworICAgICAgICAgICAgICAgLCBQeV9vZmZfdCBwb3MsIFB5X29mZl90IGVuZAorI2VuZGlmCisgICAgICAgICAgICAgICApCit7CisgICAgc2l6ZV90IGFkZGVuZDsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgaWYgKGVuZCAhPSAoUHlfb2ZmX3QpLTEpIHsKICAgICAgICAgLyogRmlsZXMgY2xhaW1pbmcgYSBzaXplIHNtYWxsZXIgdGhhbiBTTUFMTENIVU5LIG1heQogICAgICAgICAgICBhY3R1YWxseSBiZSBzdHJlYW1pbmcgcHNldWRvLWZpbGVzLiBJbiB0aGlzIGNhc2UsIHdlCiAgICAgICAgICAgIGFwcGx5IHRoZSBtb3JlIGFnZ3Jlc3NpdmUgYWxnb3JpdGhtIGJlbG93LgogICAgICAgICAqLwogICAgICAgICBpZiAoZW5kID49IFNNQUxMQ0hVTksgJiYgZW5kID49IHBvcyAmJiBwb3MgPj0gMCkgewogICAgICAgICAgICAgLyogQWRkIDEgc28gaWYgdGhlIGZpbGUgd2VyZSB0byBncm93IHdlJ2Qgbm90aWNlLiAqLwotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRzaXplICsgZW5kIC0gcG9zICsgMTsKKyAgICAgICAgICAgIFB5X29mZl90IGJ1ZnNpemUgPSBjdXJyZW50c2l6ZSArIGVuZCAtIHBvcyArIDE7CisgICAgICAgICAgICBpZiAoYnVmc2l6ZSA8IFBZX1NTSVpFX1RfTUFYKQorICAgICAgICAgICAgICAgIHJldHVybiAoc2l6ZV90KWJ1ZnNpemU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFBZX1NTSVpFX1RfTUFYOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAotICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKLSAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLwotICAgIHJldHVybiBjdXJyZW50c2l6ZSArIChjdXJyZW50c2l6ZSA+PiAzKSArIDY7CisgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gIEZvciBiaWdnZXIgc2l6ZXMsIHVzZSBhCisgICAgICAgbGVzcy10aGFuLWRvdWJsZSBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIGlmIChjdXJyZW50c2l6ZSA+IDY1NTM2KQorICAgICAgICBhZGRlbmQgPSBjdXJyZW50c2l6ZSA+PiAzOworICAgIGVsc2UKKyAgICAgICAgYWRkZW5kID0gMjU2ICsgY3VycmVudHNpemU7CisgICAgaWYgKGFkZGVuZCA8IFNNQUxMQ0hVTkspCisgICAgICAgIC8qIEF2b2lkIHRpbnkgcmVhZCgpIGNhbGxzLiAqLworICAgICAgICBhZGRlbmQgPSBTTUFMTENIVU5LOworICAgIHJldHVybiBhZGRlbmQgKyBjdXJyZW50c2l6ZTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKIHsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgUHlfb2ZmX3QgcG9zLCBlbmQ7CisjZW5kaWYKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgdG90YWwgPSAwOwogICAgIGludCBuOworICAgIHNpemVfdCBuZXdzaXplOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKQEAgLTU2OSw4ICs2MTksMjMgQEAKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisjaWZkZWYgSEFWRV9GU1RBVAorI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBwb3MgPSBfbHNlZWtpNjQoc2VsZi0+ZmQsIDBMLCBTRUVLX0NVUik7CisjZWxzZQorICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworI2VuZGlmCisgICAgaWYgKGZzdGF0KHNlbGYtPmZkLCAmc3QpID09IDApCisgICAgICAgIGVuZCA9IHN0LnN0X3NpemU7CisgICAgZWxzZQorICAgICAgICBlbmQgPSAoUHlfb2ZmX3QpLTE7CisjZW5kaWYKICAgICB3aGlsZSAoMSkgewotICAgICAgICBzaXplX3QgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgICAgIG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCB0b3RhbCwgcG9zLCBlbmQpOworI2Vsc2UKKyAgICAgICAgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNlbmRpZgogICAgICAgICBpZiAobmV3c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIHx8IG5ld3NpemUgPD0gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgInVuYm91bmRlZCByZWFkIHJldHVybmVkIG1vcmUgYnl0ZXMgIgpAQCAtNjE2LDYgKzY4MSw5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB0b3RhbCArPSBuOworI2lmZGVmIEhBVkVfRlNUQVQKKyAgICAgICAgcG9zICs9IG47CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShyZXN1bHQpID4gdG90YWwpIHsKQEAgLTkyOSw2ICs5OTcsMTIgQEAKIHN0YXRpYyBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKKyAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgeworICAgICAgICBpZiAoc2VsZi0+cmVhZGFibGUpCisgICAgICAgICAgICByZXR1cm4gInhiKyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAieGIiOworICAgIH0KICAgICBpZiAoc2VsZi0+cmVhZGFibGUpIHsKICAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQogICAgICAgICAgICAgcmV0dXJuICJyYisiOwpAQCAtOTQyLDEyICsxMDE2LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmlsZWlvX3JlcHIoZmlsZWlvICpzZWxmKQogeworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcmVzOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLkZpbGVJTyBbY2xvc2VkXT4iKTsKIAotICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKSBzZWxmLCAibmFtZSIpOworICAgIG5hbWVvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKSBzZWxmLCAmUHlJZF9uYW1lKTsKICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC05ODcsMTMgKzEwNjIsMTkgQEAKIAogCiBQeURvY19TVFJWQVIoZmlsZWlvX2RvYywKLSJmaWxlKG5hbWU6IHN0clssIG1vZGU6IHN0cl0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCisiZmlsZShuYW1lOiBzdHJbLCBtb2RlOiBzdHJdWywgb3BlbmVyOiBOb25lXSkgLT4gZmlsZSBJTyBvYmplY3RcbiIKICJcbiIKLSJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JyBvciAnYScgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLFxuIgotIndyaXRpbmcgb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiIKLSJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW5cbiIKLSJvcGVuZWQgZm9yIHdyaXRpbmcuICBBZGQgYSAnKycgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzXG4iCi0icmVhZGluZyBhbmQgd3JpdGluZy4iKTsKKyJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JywgJ3gnIG9yICdhJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksXG4iCisid3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdFxuIgorImRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgorIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiBpdCBhbHJlYWR5XG4iCisiZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXNcbiIKKyJ3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLkFkZCBhICcrJyB0byB0aGUgbW9kZVxuIgorInRvIGFsbG93IHNpbXVsdGFuZW91cyByZWFkaW5nIGFuZCB3cml0aW5nLiBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnlcbiIKKyJwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGVcbiIKKyJvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nIG9wZW5lciB3aXRoICgqbmFtZSosICpmbGFncyopLlxuIgorIipvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lcipcbiIKKyJyZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLiIpOwogCiBQeURvY19TVFJWQVIocmVhZF9kb2MsCiAicmVhZChzaXplOiBpbnQpIC0+IGJ5dGVzLiAgcmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCBiYTg2MTQ2Li5iYWJiMDE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtNTksOCArNTksOSBAQAogICAgb2YgdGhlIElPQmFzZSBvYmplY3QgcmF0aGVyIHRoYW4gdGhlIHZpcnR1YWwgYGNsb3NlZGAgYXR0cmlidXRlIGFzIHJldHVybmVkCiAgICBieSB3aGF0ZXZlciBzdWJjbGFzcy4gKi8KIAorX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKICNkZWZpbmUgSVNfQ0xPU0VEKHNlbGYpIFwKLSAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiKQorICAgIF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfX19JT0Jhc2VfY2xvc2VkKQogCiAvKiBJbnRlcm5hbCBtZXRob2RzICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTcsNyArOTgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGlvYmFzZV90ZWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAic2VlayIsICJpaSIsIDAsIDEpOworICAgIF9QeV9JREVOVElGSUVSKHNlZWspOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfc2VlaywgImlpIiwgMCwgMSk7CiB9CiAKIFB5RG9jX1NUUlZBUihpb2Jhc2VfdHJ1bmNhdGVfZG9jLApAQCAtMTU2LDE5ICsxNTksNiBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoSVNfQ0xPU0VEKHNlbGYpKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9nZXRfZGljdChQeU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihzZWxmKTsKLSAgICBQeU9iamVjdCAqZGljdDsKLSAgICBhc3NlcnQoZGljdHB0cik7Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGRpY3QgPSAqZGljdHB0ciA9IFB5RGljdF9OZXcoKTsKLSAgICBQeV9YSU5DUkVGKGRpY3QpOwotICAgIHJldHVybiBkaWN0OwotfQotCiBQeU9iamVjdCAqCiBfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MCwxMiArMTgwLDEzIEBACiBpb2Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKIAogICAgIGlmIChJU19DTE9TRUQoc2VsZikpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCiAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZiwgX1B5SU9fc3RyX2ZsdXNoLCBOVUxMKTsKLSAgICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiLCBQeV9UcnVlKTsKKyAgICBfUHlPYmplY3RfU2V0QXR0cklkKHNlbGYsICZQeUlkX19fSU9CYXNlX2Nsb3NlZCwgUHlfVHJ1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQ2NCwxMiArNDU1LDE0IEBACiAgICAgaW50IGhhc19wZWVrID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKKyAgICBfUHlfSURFTlRJRklFUihwZWVrKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJwZWVrIikpCisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfcGVlaykpCiAgICAgICAgIGhhc19wZWVrID0gMTsKIAogICAgIGJ1ZmZlciA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwpAQCAtNDgxLDcgKzQ3NCw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpiOwogCiAgICAgICAgIGlmIChoYXNfcGVlaykgewotICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInBlZWsiLCAiaSIsIDEpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcGVlaywgImkiLCAxKTsKICAgICAgICAgICAgIGlmIChyZWFkYWhlYWQgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC01MjEsNyArNTE0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWFkYWhlYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgYiA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLCAibiIsIG5yZWFkYWhlYWQpOworICAgICAgICBiID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLCAibiIsIG5yZWFkYWhlYWQpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC02MTMsNyArNjA2LDkgQEAKICAgICAgICAgLyogWFhYIHNwZWNpYWwtY2FzaW5nIHRoaXMgbWFkZSBzZW5zZSBpbiB0aGUgUHl0aG9uIHZlcnNpb24gaW4gb3JkZXIKICAgICAgICAgICAgdG8gcmVtb3ZlIHRoZSBieXRlY29kZSBpbnRlcnByZXRhdGlvbiBvdmVyaGVhZCwgYnV0IGl0IGNvdWxkCiAgICAgICAgICAgIHByb2JhYmx5IGJlIHJlbW92ZWQgaGVyZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiZXh0ZW5kIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZXh0ZW5kKTsKKyAgICAgICAgUHlPYmplY3QgKnJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9leHRlbmQsICJPIiwgc2VsZik7CisKICAgICAgICAgaWYgKHJldCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzE2LDcgKzcxMSw3IEBACiB9OwogCiBzdGF0aWMgUHlHZXRTZXREZWYgaW9iYXNlX2dldHNldFtdID0gewotICAgIHsiX19kaWN0X18iLCAoZ2V0dGVyKWlvYmFzZV9nZXRfZGljdCwgTlVMTCwgTlVMTH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBOVUxMLCBOVUxMfSwKICAgICB7ImNsb3NlZCIsIChnZXR0ZXIpaW9iYXNlX2Nsb3NlZF9nZXQsIE5VTEwsIE5VTEx9LAogICAgIHtOVUxMfQogfTsKQEAgLTc5Myw4ICs3ODgsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZGFsbCIsIE5VTEwpOworICAgIGlmIChuIDwgMCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKKworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkYWxsLCBOVUxMKTsKKyAgICB9CiAKICAgICAvKiBUT0RPOiBhbGxvY2F0ZSBhIGJ5dGVzIG9iamVjdCBkaXJlY3RseSBpbnN0ZWFkIGFuZCBtYW51YWxseSBjb25zdHJ1Y3QKICAgICAgICBhIHdyaXRhYmxlIG1lbW9yeXZpZXcgcG9pbnRpbmcgdG8gaXQuICovCkBAIC04MzUsOCArODMzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeU9iamVjdCAqZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgICAgIFB5T2JqZWN0ICpkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCAxZjFmYTQwLi45ZDczODg0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTEsMTkgKzEsMzIgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImFjY3UuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAogLyogSW1wbGVtZW50YXRpb24gbm90ZTogdGhlIGJ1ZmZlciBpcyBhbHdheXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBsb25nZXIKICAgIHRoYW4gdGhlIGVuY2xvc2VkIHN0cmluZywgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiBfUHlJT19maW5kX2xpbmVfZW5kaW5nLgogKi8KIAorI2RlZmluZSBTVEFURV9SRUFMSVpFRCAxCisjZGVmaW5lIFNUQVRFX0FDQ1VNVUxBVElORyAyCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfVU5JQ09ERSAqYnVmOworICAgIFB5X1VDUzQgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IHBvczsKICAgICBQeV9zc2l6ZV90IHN0cmluZ19zaXplOwogICAgIHNpemVfdCBidWZfc2l6ZTsKIAorICAgIC8qIFRoZSBzdHJpbmdpbyBvYmplY3QgY2FuIGJlIGluIHR3byBzdGF0ZXM6IGFjY3VtdWxhdGluZyBvciByZWFsaXplZC4KKyAgICAgICBJbiBhY2N1bXVsYXRpbmcgc3RhdGUsIHRoZSBpbnRlcm5hbCBidWZmZXIgY29udGFpbnMgbm90aGluZyBhbmQKKyAgICAgICB0aGUgY29udGVudHMgYXJlIGdpdmVuIGJ5IHRoZSBlbWJlZGRlZCBfUHlBY2N1IHN0cnVjdHVyZS4KKyAgICAgICBJbiByZWFsaXplZCBzdGF0ZSwgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBtZWFuaW5nZnVsIGFuZCB0aGUKKyAgICAgICBfUHlBY2N1IGlzIGRlc3Ryb3llZC4KKyAgICAqLworICAgIGludCBzdGF0ZTsKKyAgICBfUHlBY2N1IGFjY3U7CisKICAgICBjaGFyIG9rOyAvKiBpbml0aWFsaXplZD8gKi8KICAgICBjaGFyIGNsb3NlZDsKICAgICBjaGFyIHJlYWR1bml2ZXJzYWw7CkBAIC0yMSw3ICszNCw3IEBACiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgUHlPYmplY3QgKnJlYWRubDsKICAgICBQeU9iamVjdCAqd3JpdGVubDsKLSAgICAKKwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gc3RyaW5naW87CkBAIC00MCw2ICs1MywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsgXAogICAgIH0KIAorI2RlZmluZSBFTlNVUkVfUkVBTElaRUQoc2VsZikgXAorICAgIGlmIChyZWFsaXplKHNlbGYpIDwgMCkgeyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCiBQeURvY19TVFJWQVIoc3RyaW5naW9fZG9jLAogICAgICJUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLlxuIgogICAgICJcbiIKQEAgLTU2LDcgKzc0LDcgQEAKICAgICAvKiBIZXJlLCB1bnNpZ25lZCB0eXBlcyBhcmUgdXNlZCB0byBhdm9pZCBkZWFsaW5nIHdpdGggc2lnbmVkIGludGVnZXIKICAgICAgICBvdmVyZmxvdywgd2hpY2ggaXMgdW5kZWZpbmVkIGluIEMuICovCiAgICAgc2l6ZV90IGFsbG9jID0gc2VsZi0+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+c3RhdGUgPSBTVEFURV9BQ0NVTVVMQVRJTkc7CiAgICAgfQogICAgIHNlbGYtPnBvcyA9IDA7CiAKQEAgLTc2MCwxMSArODcwLDIyIEBACiAgICAgICAgb25jZSBieSBfX2luaXRfXy4gU28gd2UgZG8gbm90IHRha2UgYW55IGNoYW5jZSBhbmQgcmVwbGFjZSBvYmplY3QncwogICAgICAgIGJ1ZmZlciBjb21wbGV0ZWx5LiAqLwogICAgIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBidWZzaXplKSA8IDApCisgICAgICAgIFB5T2JqZWN0ICppdGVtOworICAgICAgICBQeV9VQ1M0ICpidWY7CisgICAgICAgIFB5X3NzaXplX3QgYnVmc2l6ZTsKKworICAgICAgICBpdGVtID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCk7CisgICAgICAgIGJ1ZiA9IFB5VW5pY29kZV9Bc1VDUzRDb3B5KGl0ZW0pOworICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgYnVmc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworCisgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIGJ1ZnNpemUpIDwgMCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOwogICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IGJ1ZnNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDJmYmI4ZjMuLjk2NDM0YTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC0xMSw2ICsxMSwyNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGRlY29kZSk7CitfUHlfSURFTlRJRklFUihmaWxlbm8pOworX1B5X0lERU5USUZJRVIoZmx1c2gpOworX1B5X0lERU5USUZJRVIoZ2V0cHJlZmVycmVkZW5jb2RpbmcpOworX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKK19QeV9JREVOVElGSUVSKG1vZGUpOworX1B5X0lERU5USUZJRVIobmFtZSk7CitfUHlfSURFTlRJRklFUihyYXcpOworX1B5X0lERU5USUZJRVIocmVhZCk7CitfUHlfSURFTlRJRklFUihyZWFkMSk7CitfUHlfSURFTlRJRklFUihyZWFkYWJsZSk7CitfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKK19QeV9JREVOVElGSUVSKHJlc2V0KTsKK19QeV9JREVOVElGSUVSKHNlZWspOworX1B5X0lERU5USUZJRVIoc2Vla2FibGUpOworX1B5X0lERU5USUZJRVIoc2V0c3RhdGUpOworX1B5X0lERU5USUZJRVIodGVsbCk7CitfUHlfSURFTlRJRklFUih3cml0YWJsZSk7CisKIC8qIFRleHRJT0Jhc2UgKi8KIAogUHlEb2NfU1RSVkFSKHRleHRpb2Jhc2VfZG9jLApAQCAtMjc0LDE4ICsyOTUsMjYgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBvdXRwdXRfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgb3V0cHV0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CiAgICAgaWYgKHNlbGYtPnBlbmRpbmdjciAmJiAoZmluYWwgfHwgb3V0cHV0X2xlbiA+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+cmVhZAogICAgICAgIGlzIG5vdCBOVUxMLiAqLwogICAgIGlmIChzZWxmLT5yZWFkID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFVucGlja2xpbmdFcnJvciwgCisgICAgICAgIFB5RXJyX0Zvcm1hdChVbnBpY2tsaW5nRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiVW5waWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKSIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDc0LDcgKzU1MzUsNyBAQAogICAgICAgICBnbG9iYWwgPSBQeU9iamVjdF9HZXRBdHRyKG1vZHVsZSwgZ2xvYmFsX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kdWxlKTsKICAgICB9Ci0gICAgZWxzZSB7IAorICAgIGVsc2UgewogICAgICAgICBnbG9iYWwgPSBQeU9iamVjdF9HZXRBdHRyKG1vZHVsZSwgZ2xvYmFsX25hbWUpOwogICAgIH0KICAgICByZXR1cm4gZ2xvYmFsOwpAQCAtNTU4Miw2ICs1NjQzLDcgQEAKICAgICBQeU9iamVjdCAqZml4X2ltcG9ydHMgPSBQeV9UcnVlOwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfbG9hZCk7CiAKICAgICAvKiBYWFg6IFRoYXQgaXMgYW4gaG9ycmlibGUgZXJyb3IgbWVzc2FnZS4gQnV0LCBJIGRvbid0IGtub3cgaG93IHRvIGRvCiAgICAgICAgYmV0dGVyLi4uICovCkBAIC01NjE2LDkgKzU2NzgsOSBAQAogICAgIGlmIChzZWxmLT5maXhfaW1wb3J0cyA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgInBlcnNpc3RlbnRfbG9hZCIpKSB7Ci0gICAgICAgIHNlbGYtPnBlcnNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyc2lzdGVudF9sb2FkIik7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfcGVyc2lzdGVudF9sb2FkKSkgeworICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfcGVyc2lzdGVudF9sb2FkKTsKICAgICAgICAgaWYgKHNlbGYtPnBlcnNfZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTU2NTEsNyArNTcxMyw3IEBACiAgKiBpbnRlbnRpb25hbCwgYXMgdGhlc2Ugc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmxhY2stYm94IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAgKgogICogV2UgZG8sIGhvd2V2ZXIsIGhhdmUgdG8gaW1wbGVtZW50IHBpY2tsaW5nL3VucGlja2xpbmcgc3VwcG9ydCBiZWNhdXNlIG9mCi0gKiByZWFsLXdvcmxkIGNvZGUgbGlrZSBjdnMyc3ZuLiAKKyAqIHJlYWwtd29ybGQgY29kZSBsaWtlIGN2czJzdm4uCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwppbmRleCAxOWNhMzFmLi5iN2IxMjBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYworKysgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwpAQCAtNDcsNyArNDcsOSBAQAogX2VuYWJsZV9nYyhQeU9iamVjdCAqZ2NfbW9kdWxlKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJlbmFibGUiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihlbmFibGUpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2VuYWJsZSwgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTc4LDcgKzgwLDcgQEAKICAqIHRoYXQgcHJvcGVybHkgc3VwcG9ydHMgL2Rldi9mZC4KICAqLwogc3RhdGljIGludAotX2lzX2ZkZXNjZnNfbW91bnRlZF9vbl9kZXZfZmQoKQorX2lzX2ZkZXNjZnNfbW91bnRlZF9vbl9kZXZfZmQodm9pZCkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBkZXZfc3RhdDsKICAgICBzdHJ1Y3Qgc3RhdCBkZXZfZmRfc3RhdDsKQEAgLTUwNiw3ICs1MDgsNyBAQAogc3VicHJvY2Vzc19mb3JrX2V4ZWMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpnY19tb2R1bGUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGVjdXRhYmxlX2xpc3QsICpweV9jbG9zZV9mZHMsICpweV9mZHNfdG9fa2VlcDsKKyAgICBQeU9iamVjdCAqZXhlY3V0YWJsZV9saXN0LCAqcHlfZmRzX3RvX2tlZXA7CiAgICAgUHlPYmplY3QgKmVudl9saXN0LCAqcHJlZXhlY19mbjsKICAgICBQeU9iamVjdCAqcHJvY2Vzc19hcmdzLCAqY29udmVydGVkX2FyZ3MgPSBOVUxMLCAqZmFzdF9hcmdzID0gTlVMTDsKICAgICBQeU9iamVjdCAqcHJlZXhlY19mbl9hcmdzX3R1cGxlID0gTlVMTDsKQEAgLTUyMSwxNyArNTIzLDE0IEBACiAgICAgUHlfc3NpemVfdCBhcmdfbnVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKAotICAgICAgICAgICAgYXJncywgIk9PT09PT2lpaWlpaWlpaWlPOmZvcmtfZXhlYyIsCi0gICAgICAgICAgICAmcHJvY2Vzc19hcmdzLCAmZXhlY3V0YWJsZV9saXN0LCAmcHlfY2xvc2VfZmRzLCAmcHlfZmRzX3RvX2tlZXAsCisgICAgICAgICAgICBhcmdzLCAiT09wT09PaWlpaWlpaWlpaU86Zm9ya19leGVjIiwKKyAgICAgICAgICAgICZwcm9jZXNzX2FyZ3MsICZleGVjdXRhYmxlX2xpc3QsICZjbG9zZV9mZHMsICZweV9mZHNfdG9fa2VlcCwKICAgICAgICAgICAgICZjd2Rfb2JqLCAmZW52X2xpc3QsCiAgICAgICAgICAgICAmcDJjcmVhZCwgJnAyY3dyaXRlLCAmYzJwcmVhZCwgJmMycHdyaXRlLAogICAgICAgICAgICAgJmVycnJlYWQsICZlcnJ3cml0ZSwgJmVycnBpcGVfcmVhZCwgJmVycnBpcGVfd3JpdGUsCiAgICAgICAgICAgICAmcmVzdG9yZV9zaWduYWxzLCAmY2FsbF9zZXRzaWQsICZwcmVleGVjX2ZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjbG9zZV9mZHMgPSBQeU9iamVjdF9Jc1RydWUocHlfY2xvc2VfZmRzKTsKLSAgICBpZiAoY2xvc2VfZmRzIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGNsb3NlX2ZkcyAmJiBlcnJwaXBlX3dyaXRlIDwgMykgeyAgLyogcHJlY29uZGl0aW9uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXJycGlwZV93cml0ZSBtdXN0IGJlID49IDMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDgsMTAgKzU0NywxMyBAQAogICAgIC8qIFdlIG5lZWQgdG8gY2FsbCBnYy5kaXNhYmxlKCkgd2hlbiB3ZSdsbCBiZSBjYWxsaW5nIHByZWV4ZWNfZm4gKi8KICAgICBpZiAocHJlZXhlY19mbiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGlzZW5hYmxlZCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGRpc2FibGUpOworICAgICAgICAKICAgICAgICAgZ2NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJnYyIpOwogICAgICAgICBpZiAoZ2NfbW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJpc2VuYWJsZWQiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2lzZW5hYmxlZCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU2Miw3ICs1NjQsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGdjX21vZHVsZSwgImRpc2FibGUiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2Rpc2FibGUsIE5VTEwpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IGJjOWIwNGEuLjY1NDBhYjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICBQeU9iamVjdCAqbWFza2xvd2VyID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGhpcnR5dHdvID0gTlVMTDsKICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqa2V5ID0gTlVMTDsKKyAgICB1bnNpZ25lZCBsb25nICpuZXdfa2V5LCAqa2V5ID0gTlVMTDsKICAgICB1bnNpZ25lZCBsb25nIGtleW1heDsgICAgICAgICAgICAgICAvKiAjIG9mIGFsbG9jYXRlZCBzbG90cyBpbiBrZXkgKi8KICAgICB1bnNpZ25lZCBsb25nIGtleXVzZWQ7ICAgICAgICAgICAgICAvKiAjIG9mIHVzZWQgc2xvdHMgaW4ga2V5ICovCiAgICAgaW50IGVycjsKQEAgLTIyOCwxNiArMjI4LDE3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIC8qIElmIHRoZSBhcmcgaXMgYW4gaW50IG9yIGxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWU7IGVsc2UgdXNlCi0gICAgICogdGhlIGFic29sdXRlIHZhbHVlIG9mIGl0cyBoYXNoIGNvZGUuCisgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCisgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCisgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KICAgICAgKi8KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpCiAgICAgICAgIG4gPSBQeU51bWJlcl9BYnNvbHV0ZShhcmcpOwogICAgIGVsc2UgewotICAgICAgICBsb25nIGhhc2ggPSBQeU9iamVjdF9IYXNoKGFyZyk7CisgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChhcmcpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgbiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKWhhc2gpOworICAgICAgICBuID0gUHlMb25nX0Zyb21TaXplX3QoKHNpemVfdCloYXNoKTsKICAgICB9CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZ290byBEb25lOwpAQCAtMjgzLDE0ICsyODQsMTYgQEAKICAgICAgICAgbiA9IG5ld247CiAgICAgICAgIGlmIChrZXl1c2VkID49IGtleW1heCkgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiaWdnZXIgPSBrZXltYXggPDwgMTsKLSAgICAgICAgICAgIGlmICgoYmlnZ2VyID4+IDEpICE9IGtleW1heCkgeworICAgICAgICAgICAgaWYgKChiaWdnZXIgPj4gMSkgIT0ga2V5bWF4IHx8CisgICAgICAgICAgICAgICAgYmlnZ2VyID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoKmtleSkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGtleSA9ICh1bnNpZ25lZCBsb25nICopUHlNZW1fUmVhbGxvYyhrZXksCisgICAgICAgICAgICBuZXdfa2V5ID0gKHVuc2lnbmVkIGxvbmcgKilQeU1lbV9SZWFsbG9jKGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZ2dlciAqIHNpemVvZigqa2V5KSk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBpZiAobmV3X2tleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgICAgIGtleSA9IG5ld19rZXk7CiAgICAgICAgICAgICBrZXltYXggPSBiaWdnZXI7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGtleXVzZWQgPCBrZXltYXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwppbmRleCA3MzVhMjQyLi4zNjkzMzYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwpAQCAtMjE3LDggKzIxNyw2IEBACiAgICAgcHlzcWxpdGVfTm9kZSogcHRyOwogICAgIFB5T2JqZWN0KiBwcmV2a2V5OwogICAgIFB5T2JqZWN0KiBuZXh0a2V5OwotICAgIFB5T2JqZWN0KiBmbXRfYXJnczsKLSAgICBQeU9iamVjdCogdGVtcGxhdGU7CiAgICAgUHlPYmplY3QqIGRpc3BsYXlfc3RyOwogCiAgICAgcHRyID0gc2VsZi0+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+bG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7CiAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzgyMiw3ICszNzg1LDcgQEAKIAogI2RlZmluZSBTQ0FOX09GRih4KSBvZmZzZXRvZihTY2FubmVyT2JqZWN0LCB4KQogc3RhdGljIFB5TWVtYmVyRGVmIHNjYW5uZXJfbWVtYmVyc1tdID0gewotICAgIHsicGF0dGVybiIsCVRfT0JKRUNULAlTQ0FOX09GRihwYXR0ZXJuKSwJUkVBRE9OTFl9LAorICAgIHsicGF0dGVybiIsIFRfT0JKRUNULCBTQ0FOX09GRihwYXR0ZXJuKSwgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTM4MzEsMzUgKzM3OTQsMzUgQEAKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9TY2FubmVyIiwKICAgICBzaXplb2YoU2Nhbm5lck9iamVjdCksIDAsCiAgICAgKGRlc3RydWN0b3Ipc2Nhbm5lcl9kZWFsbG9jLC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkvKiB0cF9wcmludCAqLwotICAgIDAsCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLAkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCS8qIHRwX2NhbGwgKi8KLSAgICAwLAkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX3NldGF0dHJvICovCi0gICAgMCwJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJLyogdHBfZmxhZ3MgKi8KLSAgICAwLAkJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkJCS8qIHRwX2NsZWFyICovCi0gICAgMCwJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJCQkvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVybmV4dCAqLwotICAgIHNjYW5uZXJfbWV0aG9kcywJCS8qIHRwX21ldGhvZHMgKi8KLSAgICBzY2FubmVyX21lbWJlcnMsCQkvKiB0cF9tZW1iZXJzICovCi0gICAgMCwJCQkJLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgc2Nhbm5lcl9tZXRob2RzLCAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBzY2FubmVyX21lbWJlcnMsICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncykKK3BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQogewogICAgIC8qIGNyZWF0ZSBzZWFyY2ggc3RhdGUgb2JqZWN0ICovCiAKQEAgLTM4NjgsNyArMzgzMSw5IEBACiAgICAgUHlPYmplY3QqIHN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xubjpzY2FubmVyIiwgJnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKKyAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzb3VyY2UiLCAicG9zIiwgImVuZHBvcyIsIE5VTEwgfTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98bm46c2Nhbm5lciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGNyZWF0ZSBzY2FubmVyIG9iamVjdCAqLwpAQCAtMzg5NywxNSArMzg2MiwxNSBAQAogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBzcmVtb2R1bGUgPSB7Ci0JUHlNb2R1bGVEZWZfSEVBRF9JTklULAotCSJfIiBTUkVfTU9EVUxFLAotCU5VTEwsCi0JLTEsCi0JX2Z1bmN0aW9ucywKLQlOVUxMLAotCU5VTEwsCi0JTlVMTCwKLQlOVUxMCisgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAgICAgIl8iIFNSRV9NT0RVTEUsCisgICAgICAgIE5VTEwsCisgICAgICAgIC0xLAorICAgICAgICBfZnVuY3Rpb25zLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMCiB9OwogCiBQeU1PRElOSVRfRlVOQyBQeUluaXRfX3NyZSh2b2lkKQpAQCAtMzkyMSw3ICszODg2LDcgQEAKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnNyZW1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKLSAgICAJcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCiAgICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTUkVfTUFHSUMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCBlOWRlOGNhLi5hZDIyYzUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtMTgsMTYgKzE4LDIxIEBACiAKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhzYXZlKSBcCisgICAgZG8geyBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7IChzYXZlKSA9IFB5RXZhbF9TYXZlVGhyZWFkKCk7IH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhzYXZlKSBcCisgICAgZG8geyBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7IFB5RXZhbF9SZXN0b3JlVGhyZWFkKHNhdmUpOyB9IH0gd2hpbGUgKDApCiAjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMgeyBcCiAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpfc2F2ZSA9IE5VTEw7ICBcCi0gICAgICAgICAgICBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7X3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpO30KLSNkZWZpbmUgUHlTU0xfQkxPQ0tfVEhSRUFEUyAgICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7UHlFdmFsX1Jlc3RvcmVUaHJlYWQoX3NhdmUpfTsKLSNkZWZpbmUgUHlTU0xfVU5CTE9DS19USFJFQURTICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7X3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpfTsKLSNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7UHlFdmFsX1Jlc3RvcmVUaHJlYWQoX3NhdmUpO30gXAotICAgICAgICAgfQorICAgICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKF9zYXZlKTsKKyNkZWZpbmUgUHlTU0xfQkxPQ0tfVEhSRUFEUyAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX1VOQkxPQ0tfVEhSRUFEUyAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MoX3NhdmUpOyB9CiAKICNlbHNlICAgLyogbm8gV0lUSF9USFJFQUQgKi8KIAorI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1Moc2F2ZSkKKyNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhzYXZlKQogI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAjZGVmaW5lIFB5U1NMX0JMT0NLX1RIUkVBRFMKICNkZWZpbmUgUHlTU0xfVU5CTE9DS19USFJFQURTCkBAIC03MSw2ICs3NiwxNiBAQAogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEKIH07CiAKK3N0cnVjdCBweV9zc2xfZXJyb3JfY29kZSB7CisgICAgY29uc3QgY2hhciAqbW5lbW9uaWM7CisgICAgaW50IGxpYnJhcnksIHJlYXNvbjsKK307CisKK3N0cnVjdCBweV9zc2xfbGlicmFyeV9jb2RlIHsKKyAgICBjb25zdCBjaGFyICpsaWJyYXJ5OworICAgIGludCBjb2RlOworfTsKKwogLyogSW5jbHVkZSBzeW1ib2xzIGZyb20gX3NvY2tldCBtb2R1bGUgKi8KICNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIKIApAQCAtOTIsOCArMTA3LDIxIEBACiAjaW5jbHVkZSAib3BlbnNzbC9lcnIuaCIKICNpbmNsdWRlICJvcGVuc3NsL3JhbmQuaCIKIAorLyogSW5jbHVkZSBnZW5lcmF0ZWQgZGF0YSAoZXJyb3IgY29kZXMpICovCisjaW5jbHVkZSAiX3NzbF9kYXRhLmgiCisKIC8qIFNTTCBlcnJvciBvYmplY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqUHlTU0xFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMV2FudFJlYWRFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xTeXNjYWxsRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMRU9GRXJyb3JPYmplY3Q7CisKKy8qIEVycm9yIG1hcHBpbmdzICovCitzdGF0aWMgUHlPYmplY3QgKmVycl9jb2Rlc190b19uYW1lczsKK3N0YXRpYyBQeU9iamVjdCAqZXJyX25hbWVzX3RvX2NvZGVzOworc3RhdGljIFB5T2JqZWN0ICpsaWJfY29kZXNfdG9fbmFtZXM7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogCkBAIC0xMjQsOSArMTUyLDM1IEBACiAjIHVuZGVmIEhBVkVfU1NMX0NUWF9DTEVBUl9PUFRJT05TCiAjZW5kaWYKIAorLyogSW4gY2FzZSBvZiAndGxzLXVuaXF1ZScgaXQgd2lsbCBiZSAxMiBieXRlcyBmb3IgVExTLCAzNiBieXRlcyBmb3IKKyAqIG9sZGVyIFNTTCwgYnV0IGxldCdzIGJlIHNhZmUgKi8KKyNkZWZpbmUgUHlTU0xfQ0JfTUFYTEVOIDEyOAorCisvKiBTU0xfZ2V0X2ZpbmlzaGVkIGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS41ICovCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA1MDBmTAorIyBkZWZpbmUgSEFWRV9PUEVOU1NMX0ZJTklTSEVEIDEKKyNlbHNlCisjIGRlZmluZSBIQVZFX09QRU5TU0xfRklOSVNIRUQgMAorI2VuZGlmCisKKy8qIEVDREggc3VwcG9ydCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAwOTA4MDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0VDREgpCisjIGRlZmluZSBPUEVOU1NMX05PX0VDREgKKyNlbmRpZgorCisvKiBjb21wcmVzc2lvbiBzdXBwb3J0IGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQ09NUCkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ09NUAorI2VuZGlmCisKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBTU0xfQ1RYICpjdHg7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIGNoYXIgKm5wbl9wcm90b2NvbHM7CisgICAgaW50IG5wbl9wcm90b2NvbHNfbGVuOworI2VuZGlmCiB9IFB5U1NMQ29udGV4dDsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMTM1LDYgKzE4OSw3IEBACiAgICAgU1NMICpzc2w7CiAgICAgWDUwOSAqcGVlcl9jZXJ0OwogICAgIGludCBzaHV0ZG93bl9zZWVuX3plcm87CisgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZTsKIH0gUHlTU0xTb2NrZXQ7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CkBAIC0xNjUsMzYgKzIyMCwxNTIgQEAKICNkZWZpbmUgRVJSU1RSMSh4LHkseikgKHggIjoiIHkgIjogIiB6KQogI2RlZmluZSBFUlJTVFIoeCkgRVJSU1RSMSgiX3NzbC5jIiwgU1RSSU5HSUZZMihfX0xJTkVfXyksIHgpCiAKLS8qIFhYWCBJdCBtaWdodCBiZSBoZWxwZnVsIHRvIGF1Z21lbnQgdGhlIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkCi0gICBiZWxvdyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBTU0wgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZWQgdGhlIGVycm9yLgotICAgSSBleHBlY3QgaXQncyBvYnZpb3VzIG1vc3Qgb2YgdGhlIHRpbWUuCi0qLworCisvKgorICogU1NMIGVycm9ycy4KKyAqLworCitQeURvY19TVFJWQVIoU1NMRXJyb3JfZG9jLAorIkFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBTU0wgaW1wbGVtZW50YXRpb24uIik7CisKK1B5RG9jX1NUUlZBUihTU0xaZXJvUmV0dXJuRXJyb3JfZG9jLAorIlNTTC9UTFMgc2Vzc2lvbiBjbG9zZWQgY2xlYW5seS4iKTsKKworUHlEb2NfU1RSVkFSKFNTTFdhbnRSZWFkRXJyb3JfZG9jLAorIk5vbi1ibG9ja2luZyBTU0wgc29ja2V0IG5lZWRzIHRvIHJlYWQgbW9yZSBkYXRhXG4iCisiYmVmb3JlIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGNhbiBiZSBjb21wbGV0ZWQuIik7CisKK1B5RG9jX1NUUlZBUihTU0xXYW50V3JpdGVFcnJvcl9kb2MsCisiTm9uLWJsb2NraW5nIFNTTCBzb2NrZXQgbmVlZHMgdG8gd3JpdGUgbW9yZSBkYXRhXG4iCisiYmVmb3JlIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGNhbiBiZSBjb21wbGV0ZWQuIik7CisKK1B5RG9jX1NUUlZBUihTU0xTeXNjYWxsRXJyb3JfZG9jLAorIlN5c3RlbSBlcnJvciB3aGVuIGF0dGVtcHRpbmcgU1NMIG9wZXJhdGlvbi4iKTsKKworUHlEb2NfU1RSVkFSKFNTTEVPRkVycm9yX2RvYywKKyJTU0wvVExTIGNvbm5lY3Rpb24gdGVybWluYXRlZCBhYnJ1cHRseS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NTTEVycm9yX3N0cihQeU9TRXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPnN0cmVycm9yICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKHNlbGYtPnN0cmVycm9yKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZi0+c3RyZXJyb3IpOworICAgICAgICByZXR1cm4gc2VsZi0+c3RyZXJyb3I7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihzZWxmLT5hcmdzKTsKK30KKworc3RhdGljIFB5VHlwZV9TbG90IHNzbGVycm9yX3R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfYmFzZSwgTlVMTH0sICAvKiBGaWxsZWQgb3V0IGluIG1vZHVsZSBpbml0IGFzIGl0J3Mgbm90IGEgY29uc3RhbnQgKi8KKyAgICB7UHlfdHBfZG9jLCBTU0xFcnJvcl9kb2N9LAorICAgIHtQeV90cF9zdHIsIFNTTEVycm9yX3N0cn0sCisgICAgezAsIDB9LAorfTsKKworc3RhdGljIFB5VHlwZV9TcGVjIHNzbGVycm9yX3R5cGVfc3BlYyA9IHsKKyAgICAic3NsLlNTTEVycm9yIiwKKyAgICBzaXplb2YoUHlPU0Vycm9yT2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsCisgICAgc3NsZXJyb3JfdHlwZV9zbG90cworfTsKKworc3RhdGljIHZvaWQKK2ZpbGxfYW5kX3NldF9zc2xlcnJvcihQeU9iamVjdCAqdHlwZSwgaW50IHNzbF9lcnJubywgY29uc3QgY2hhciAqZXJyc3RyLAorICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIHVuc2lnbmVkIGxvbmcgZXJyY29kZSkKK3sKKyAgICBQeU9iamVjdCAqZXJyX3ZhbHVlID0gTlVMTCwgKnJlYXNvbl9vYmogPSBOVUxMLCAqbGliX29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmluaXRfdmFsdWUsICptc2csICprZXk7CisgICAgX1B5X0lERU5USUZJRVIocmVhc29uKTsKKyAgICBfUHlfSURFTlRJRklFUihsaWJyYXJ5KTsKKworICAgIGlmIChlcnJjb2RlICE9IDApIHsKKyAgICAgICAgaW50IGxpYiwgcmVhc29uOworCisgICAgICAgIGxpYiA9IEVSUl9HRVRfTElCKGVycmNvZGUpOworICAgICAgICByZWFzb24gPSBFUlJfR0VUX1JFQVNPTihlcnJjb2RlKTsKKyAgICAgICAga2V5ID0gUHlfQnVpbGRWYWx1ZSgiaWkiLCBsaWIsIHJlYXNvbik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmVhc29uX29iaiA9IFB5RGljdF9HZXRJdGVtKGVycl9jb2Rlc190b19uYW1lcywga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmIChyZWFzb25fb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFhYWCBpZiByZWFzb24gPCAxMDAsIGl0IG1pZ2h0IHJlZmxlY3QgYSBsaWJyYXJ5IG51bWJlciAoISEpICovCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhsaWIpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGxpYl9vYmogPSBQeURpY3RfR2V0SXRlbShsaWJfY29kZXNfdG9fbmFtZXMsIGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBpZiAobGliX29iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGlmIChlcnJzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGVycnN0ciA9IEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKGVycmNvZGUpOworICAgIH0KKyAgICBpZiAoZXJyc3RyID09IE5VTEwpCisgICAgICAgIGVycnN0ciA9ICJ1bmtub3duIGVycm9yIjsKKworICAgIGlmIChyZWFzb25fb2JqICYmIGxpYl9vYmopCisgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbJVM6ICVTXSAlcyAoX3NzbC5jOiVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9vYmosIHJlYXNvbl9vYmosIGVycnN0ciwgbGluZW5vKTsKKyAgICBlbHNlIGlmIChsaWJfb2JqKQorICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiWyVTXSAlcyAoX3NzbC5jOiVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9vYmosIGVycnN0ciwgbGluZW5vKTsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyAoX3NzbC5jOiVkKSIsIGVycnN0ciwgbGluZW5vKTsKKworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGluaXRfdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJpTiIsIHNzbF9lcnJubywgbXNnKTsKKyAgICBlcnJfdmFsdWUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHR5cGUsIGluaXRfdmFsdWUpOworICAgIFB5X0RFQ1JFRihpbml0X3ZhbHVlKTsKKyAgICBpZiAoZXJyX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAocmVhc29uX29iaiA9PSBOVUxMKQorICAgICAgICByZWFzb25fb2JqID0gUHlfTm9uZTsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChlcnJfdmFsdWUsICZQeUlkX3JlYXNvbiwgcmVhc29uX29iaikpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAobGliX29iaiA9PSBOVUxMKQorICAgICAgICBsaWJfb2JqID0gUHlfTm9uZTsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChlcnJfdmFsdWUsICZQeUlkX2xpYnJhcnksIGxpYl9vYmopKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIGVycl92YWx1ZSk7CitmYWlsOgorICAgIFB5X1hERUNSRUYoZXJyX3ZhbHVlKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIFB5U1NMX1NldEVycm9yKFB5U1NMU29ja2V0ICpvYmosIGludCByZXQsIGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIGNoYXIgYnVmWzIwNDhdOwotICAgIGNoYXIgKmVycnN0cjsKKyAgICBQeU9iamVjdCAqdHlwZSA9IFB5U1NMRXJyb3JPYmplY3Q7CisgICAgY2hhciAqZXJyc3RyID0gTlVMTDsKICAgICBpbnQgZXJyOwogICAgIGVudW0gcHlfc3NsX2Vycm9yIHAgPSBQWV9TU0xfRVJST1JfTk9ORTsKKyAgICB1bnNpZ25lZCBsb25nIGUgPSAwOwogCiAgICAgYXNzZXJ0KHJldCA8PSAwKTsKKyAgICBlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwogCiAgICAgaWYgKG9iai0+c3NsICE9IE5VTEwpIHsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihvYmotPnNzbCwgcmV0KTsKIAogICAgICAgICBzd2l0Y2ggKGVycikgewogICAgICAgICBjYXNlIFNTTF9FUlJPUl9aRVJPX1JFVFVSTjoKLSAgICAgICAgICAgIGVycnN0ciA9ICJUTFMvU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIjsKKyAgICAgICAgICAgIGVycnN0ciA9ICJUTFMvU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIChFT0YpIjsKKyAgICAgICAgICAgIHR5cGUgPSBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdDsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfWkVST19SRVRVUk47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgogICAgICAgICAgICAgZXJyc3RyID0gIlRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSAocmVhZCkiOworICAgICAgICAgICAgdHlwZSA9IFB5U1NMV2FudFJlYWRFcnJvck9iamVjdDsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfV0FOVF9SRUFEOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfV1JJVEU6CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1dBTlRfV1JJVEU7CisgICAgICAgICAgICB0eXBlID0gUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdDsKICAgICAgICAgICAgIGVycnN0ciA9ICJUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgKHdyaXRlKSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9YNTA5X0xPT0tVUDoKQEAgLTIwNyw4MCArMzc4LDY0IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlID0gRVJSX2dldF9lcnJvcigpOwogICAgICAgICAgICAgaWYgKGUgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5U29ja2V0U29ja09iamVjdCAqcwogICAgICAgICAgICAgICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qob2JqLT5Tb2NrZXQpOwogICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCB8fCAoKChQeU9iamVjdCAqKXMpID09IFB5X05vbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfRU9GOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gUHlTU0xFT0ZFcnJvck9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgZXJyc3RyID0gIkVPRiBvY2N1cnJlZCBpbiB2aW9sYXRpb24gb2YgcHJvdG9jb2wiOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHVuZGVybHlpbmcgQklPIHJlcG9ydGVkIGFuIEkvTyBlcnJvciAqLwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYocyk7CiAgICAgICAgICAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgICAgICAgICAgICAgICAgICB2ID0gcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB2OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvKiBwb3NzaWJsZT8gKi8KICAgICAgICAgICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9TWVNDQUxMOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gUHlTU0xTeXNjYWxsRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIGVycnN0ciA9ICJTb21lIEkvTyBlcnJvciBvY2N1cnJlZCI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1NZU0NBTEw7Ci0gICAgICAgICAgICAgICAgLyogWFhYIFByb3RlY3RlZCBieSBnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jayAqLwotICAgICAgICAgICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZSwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNTTF9FUlJPUl9TU0w6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZSA9IEVSUl9nZXRfZXJyb3IoKTsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfU1NMOwotICAgICAgICAgICAgaWYgKGUgIT0gMCkKLSAgICAgICAgICAgICAgICAvKiBYWFggUHJvdGVjdGVkIGJ5IGdsb2JhbCBpbnRlcnByZXRlciBsb2NrICovCi0gICAgICAgICAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhlLCBOVUxMKTsKLSAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgLyogcG9zc2libGU/ICovCisgICAgICAgICAgICBpZiAoZSA9PSAwKQorICAgICAgICAgICAgICAgIC8qIHBvc3NpYmxlPyAqLwogICAgICAgICAgICAgICAgIGVycnN0ciA9ICJBIGZhaWx1cmUgaW4gdGhlIFNTTCBsaWJyYXJ5IG9jY3VycmVkIjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX0lOVkFMSURfRVJST1JfQ09ERTsKICAgICAgICAgICAgIGVycnN0ciA9ICJJbnZhbGlkIGVycm9yIGNvZGUiOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhFUlJfcGVla19sYXN0X2Vycm9yKCksIE5VTEwpOwogICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfc3NsLmM6JWQ6ICVzIiwgbGluZW5vLCBlcnJzdHIpOworICAgIGZpbGxfYW5kX3NldF9zc2xlcnJvcih0eXBlLCBwLCBlcnJzdHIsIGxpbmVubywgZSk7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpcykiLCBwLCBidWYpOwotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5U1NMRXJyb3JPYmplY3QsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NldFNTTEVycm9yIChjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgewogCi0gICAgY2hhciBidWZbMjA0OF07Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBpZiAoZXJyc3RyID09IE5VTEwpIHsKKyAgICBpZiAoZXJyc3RyID09IE5VTEwpCiAgICAgICAgIGVycmNvZGUgPSBFUlJfcGVla19sYXN0X2Vycm9yKCk7Ci0gICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZXJyY29kZSwgTlVMTCk7Ci0gICAgfQotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIl9zc2wuYzolZDogJXMiLCBsaW5lbm8sIGVycnN0cik7CisgICAgZWxzZQorICAgICAgICBlcnJjb2RlID0gMDsKKyAgICBmaWxsX2FuZF9zZXRfc3NsZXJyb3IoUHlTU0xFcnJvck9iamVjdCwgZXJyY29kZSwgZXJyc3RyLCBsaW5lbm8sIGVycmNvZGUpOwogICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgZXJyY29kZSwgYnVmKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIFNTTCBvYmplY3RzCisgKi8KKwogc3RhdGljIFB5U1NMU29ja2V0ICoKIG5ld1B5U1NMU29ja2V0KFNTTF9DVFggKmN0eCwgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrLAogICAgICAgICAgICAgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZSwKQEAgLTMyOCw2ICs0ODMsNyBAQAogICAgICAgICBTU0xfc2V0X2FjY2VwdF9zdGF0ZShzZWxmLT5zc2wpOwogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCiAKKyAgICBzZWxmLT5zb2NrZXRfdHlwZSA9IHNvY2tldF90eXBlOwogICAgIHNlbGYtPlNvY2tldCA9IFB5V2Vha3JlZl9OZXdSZWYoKFB5T2JqZWN0ICopIHNvY2ssIE5VTEwpOwogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzU2LDcgKzUxMiw2IEBACiAKICAgICAvKiBBY3R1YWxseSBuZWdvdGlhdGUgU1NMIGNvbm5lY3Rpb24gKi8KICAgICAvKiBYWFggSWYgU1NMX2RvX2hhbmRzaGFrZSgpIHJldHVybnMgMCwgaXQncyBhbHNvIGEgZmFpbHVyZS4gKi8KLSAgICBzb2Nrc3RhdGUgPSAwOwogICAgIGRvIHsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICByZXQgPSBTU0xfZG9faGFuZHNoYWtlKHNlbGYtPnNzbCk7CkBAIC04ODIsMTkgKzEwMzcsMTUgQEAKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBpbnQgbGVuOwogICAgIGludCB2ZXJpZmljYXRpb247Ci0gICAgUHlPYmplY3QgKmJpbmFyeV9tb2RlID0gUHlfTm9uZTsKLSAgICBpbnQgYjsKKyAgICBpbnQgYmluYXJ5X21vZGUgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpwZWVyX2NlcnRpZmljYXRlIiwgJmJpbmFyeV9tb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOnBlZXJfY2VydGlmaWNhdGUiLCAmYmluYXJ5X21vZGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+cGVlcl9jZXJ0KQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAotICAgIGIgPSBQeU9iamVjdF9Jc1RydWUoYmluYXJ5X21vZGUpOwotICAgIGlmIChiIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGIpIHsKKyAgICBpZiAoYmluYXJ5X21vZGUpIHsKICAgICAgICAgLyogcmV0dXJuIGNlcnQgaW4gREVSLWVuY29kZWQgZm9ybWF0ICovCiAKICAgICAgICAgdW5zaWduZWQgY2hhciAqYnl0ZXNfYnVmID0gTlVMTDsKQEAgLTk4MCw2ICsxMTMxLDM5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECitzdGF0aWMgUHlPYmplY3QgKlB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbChQeVNTTFNvY2tldCAqc2VsZikgeworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dDsKKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworCisgICAgU1NMX2dldDBfbmV4dF9wcm90b19uZWdvdGlhdGVkKHNlbGYtPnNzbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQsICZvdXRsZW4pOworCisgICAgaWYgKG91dCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopIG91dCwgb3V0bGVuKTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NvbXByZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmKSB7CisjaWZkZWYgT1BFTlNTTF9OT19DT01QCisgICAgUHlfUkVUVVJOX05PTkU7CisjZWxzZQorICAgIGNvbnN0IENPTVBfTUVUSE9EICpjb21wX21ldGhvZDsKKyAgICBjb25zdCBjaGFyICpzaG9ydF9uYW1lOworCisgICAgaWYgKHNlbGYtPnNzbCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBjb21wX21ldGhvZCA9IFNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbihzZWxmLT5zc2wpOworICAgIGlmIChjb21wX21ldGhvZCA9PSBOVUxMIHx8IGNvbXBfbWV0aG9kLT50eXBlID09IE5JRF91bmRlZikKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgc2hvcnRfbmFtZSA9IE9CSl9uaWQyc24oY29tcF9tZXRob2QtPnR5cGUpOworICAgIGlmIChzaG9ydF9uYW1lID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHNob3J0X25hbWUpOworI2VuZGlmCit9CisKIHN0YXRpYyB2b2lkIFB5U1NMX2RlYWxsb2MoUHlTU0xTb2NrZXQgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPnBlZXJfY2VydCkgICAgICAgIC8qIFBvc3NpYmxlIG5vdCB0byBoYXZlIG9uZT8gKi8KQEAgLTExMDAsNyArMTI4NCw2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGRvIHsKLSAgICAgICAgZXJyID0gMDsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBsZW4gPSBTU0xfd3JpdGUoc2VsZi0+c3NsLCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGxlbik7CkBAIC0xMjM2LDcgKzE0MTksNiBAQAogICAgICAgICB9CiAgICAgfQogICAgIGRvIHsKLSAgICAgICAgZXJyID0gMDsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBjb3VudCA9IFNTTF9yZWFkKHNlbGYtPnNzbCwgbWVtLCBsZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgY291bnQpOwpAQCAtMTM4OCw2ICsxNTcwLDQxIEBACiBEb2VzIHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlIHdpdGggdGhlIHJlbW90ZSBlbmQsIGFuZCByZXR1cm5zXG5cCiB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiIpOwogCisjaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKyAgICBjaGFyIGJ1ZltQeVNTTF9DQl9NQVhMRU5dOworICAgIGludCBsZW47CisKKyAgICBpZiAoU1NMX3Nlc3Npb25fcmV1c2VkKHNlbGYtPnNzbCkgXiAhc2VsZi0+c29ja2V0X3R5cGUpIHsKKyAgICAgICAgLyogaWYgc2Vzc2lvbiBpcyByZXN1bWVkIFhPUiB3ZSBhcmUgdGhlIGNsaWVudCAqLworICAgICAgICBsZW4gPSBTU0xfZ2V0X2ZpbmlzaGVkKHNlbGYtPnNzbCwgYnVmLCBQeVNTTF9DQl9NQVhMRU4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogaWYgYSBuZXcgc2Vzc2lvbiBYT1Igd2UgYXJlIHRoZSBzZXJ2ZXIgKi8KKyAgICAgICAgbGVuID0gU1NMX2dldF9wZWVyX2ZpbmlzaGVkKHNlbGYtPnNzbCwgYnVmLCBQeVNTTF9DQl9NQVhMRU4pOworICAgIH0KKworICAgIC8qIEl0IGNhbm5vdCBiZSBuZWdhdGl2ZSBpbiBjdXJyZW50IE9wZW5TU0wgdmVyc2lvbiBhcyBvZiBKdWx5IDIwMTEgKi8KKyAgICBhc3NlcnQobGVuID49IDApOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXR2YWwgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZiwgbGVuKTsKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF90bHNfdW5pcXVlX2NiX2RvYywKKyJ0bHNfdW5pcXVlX2NiKCkgLT4gYnl0ZXNcblwKK1xuXAorUmV0dXJucyB0aGUgJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LlxuXAorXG5cCitJZiB0aGUgVExTIGhhbmRzaGFrZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBOb25lIGlzIHJldHVybmVkIik7CisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0xfRklOSVNIRUQgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIFB5U1NMTWV0aG9kc1tdID0gewogICAgIHsiZG9faGFuZHNoYWtlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTGRvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1N9LApAQCAtMTQwMCw4ICsxNjE3LDE2IEBACiAgICAgeyJwZWVyX2NlcnRpZmljYXRlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3BlZXJjZXJ0LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5U1NMX3BlZXJjZXJ0X2RvY30sCiAgICAgeyJjaXBoZXIiLCAoUHlDRnVuY3Rpb24pUHlTU0xfY2lwaGVyLCBNRVRIX05PQVJHU30sCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHsic2VsZWN0ZWRfbnBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbCwgTUVUSF9OT0FSR1N9LAorI2VuZGlmCisgICAgeyJjb21wcmVzc2lvbiIsIChQeUNGdW5jdGlvbilQeVNTTF9jb21wcmVzc2lvbiwgTUVUSF9OT0FSR1N9LAogICAgIHsic2h1dGRvd24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMc2h1dGRvd24sIE1FVEhfTk9BUkdTLAogICAgICBQeVNTTF9TU0xzaHV0ZG93bl9kb2N9LAorI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorICAgIHsidGxzX3VuaXF1ZV9jYiIsIChQeUNGdW5jdGlvbilQeVNTTF90bHNfdW5pcXVlX2NiLCBNRVRIX05PQVJHUywKKyAgICAgUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2N9LAorI2VuZGlmCiAgICAge05VTEwsIE5VTEx9CiB9OwogCkBAIC0xNDg4LDYgKzE3MTMsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgc2VsZi0+Y3R4ID0gY3R4OworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICBzZWxmLT5ucG5fcHJvdG9jb2xzID0gTlVMTDsKKyNlbmRpZgogICAgIC8qIERlZmF1bHRzICovCiAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KHNlbGYtPmN0eCwgU1NMX1ZFUklGWV9OT05FLCBOVUxMKTsKICAgICBTU0xfQ1RYX3NldF9vcHRpb25zKHNlbGYtPmN0eCwKQEAgLTE1MDUsNiArMTczMyw5IEBACiBjb250ZXh0X2RlYWxsb2MoUHlTU0xDb250ZXh0ICpzZWxmKQogewogICAgIFNTTF9DVFhfZnJlZShzZWxmLT5jdHgpOworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworI2VuZGlmCiAgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKIH0KIApAQCAtMTUyOSw2ICsxNzYwLDkxIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisvKiB0aGlzIGNhbGxiYWNrIGdldHMgcGFzc2VkIHRvIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZV9jYiAqLworc3RhdGljIGludAorX2FkdmVydGlzZU5QTl9jYihTU0wgKnMsIAorICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqZGF0YSwgdW5zaWduZWQgaW50ICpsZW4sIAorICAgICAgICAgICAgICAgICB2b2lkICphcmdzKQoreworICAgIFB5U1NMQ29udGV4dCAqc3NsX2N0eCA9IChQeVNTTENvbnRleHQgKikgYXJnczsKKworICAgIGlmIChzc2xfY3R4LT5ucG5fcHJvdG9jb2xzID09IE5VTEwpIHsKKyAgICAgICAgKmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKKyAgICAgICAgKmxlbiA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgKmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzOworICAgICAgICAqbGVuID0gc3NsX2N0eC0+bnBuX3Byb3RvY29sc19sZW47CisgICAgfQorCisgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworfQorLyogdGhpcyBjYWxsYmFjayBnZXRzIHBhc3NlZCB0byBTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbGVjdF9jYiAqLworc3RhdGljIGludAorX3NlbGVjdE5QTl9jYihTU0wgKnMsIAorICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlcnZlciwgdW5zaWduZWQgaW50IHNlcnZlcl9sZW4sCisgICAgICAgICAgICAgIHZvaWQgKmFyZ3MpCit7CisgICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOworCisgICAgdW5zaWduZWQgY2hhciAqY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICBpbnQgY2xpZW50X2xlbjsKKworICAgIGlmIChjbGllbnQgPT0gTlVMTCkgeworICAgICAgICBjbGllbnQgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKKyAgICAgICAgY2xpZW50X2xlbiA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2xpZW50X2xlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOworICAgIH0KKworICAgIFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIGNsaWVudF9sZW4pOworCisgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2V0X25wbl9wcm90b2NvbHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgUHlfYnVmZmVyIHByb3RvczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6c2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc2VsZi0+bnBuX3Byb3RvY29scyAhPSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisgICAgfQorCisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IFB5TWVtX01hbGxvYyhwcm90b3MubGVuKTsKKyAgICBpZiAoc2VsZi0+bnBuX3Byb3RvY29scyA9PSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKyAgICBtZW1jcHkoc2VsZi0+bnBuX3Byb3RvY29scywgcHJvdG9zLmJ1ZiwgcHJvdG9zLmxlbik7CisgICAgc2VsZi0+bnBuX3Byb3RvY29sc19sZW4gPSAoaW50KSBwcm90b3MubGVuOworCisgICAgLyogc2V0IGJvdGggc2VydmVyIGFuZCBjbGllbnQgY2FsbGJhY2tzLCBiZWNhdXNlIHRoZSBjb250ZXh0IGNhbgorICAgICAqIGJlIHVzZWQgdG8gY3JlYXRlIGJvdGggdHlwZXMgb2Ygc29ja2V0cyAqLworICAgIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2Ioc2VsZi0+Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FkdmVydGlzZU5QTl9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpOworICAgIFNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiKHNlbGYtPmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZWN0TlBOX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpOworCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKKyNlbHNlCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJUaGUgTlBOIGV4dGVuc2lvbiByZXF1aXJlcyBPcGVuU1NMIDEuMC4xIG9yIGxhdGVyLiIpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfdmVyaWZ5X21vZGUoUHlTU0xDb250ZXh0ICpzZWxmLCB2b2lkICpjKQogewpAQCAtMTU5NSwxOSArMTkxMSwxMTggQEAKICAgICByZXR1cm4gMDsKIH0KIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5VGhyZWFkU3RhdGUgKnRocmVhZF9zdGF0ZTsKKyAgICBQeU9iamVjdCAqY2FsbGFibGU7CisgICAgY2hhciAqcGFzc3dvcmQ7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCBlcnJvcjsKK30gX1B5U1NMUGFzc3dvcmRJbmZvOworCitzdGF0aWMgaW50CitfcHdpbmZvX3NldChfUHlTU0xQYXNzd29yZEluZm8gKnB3X2luZm8sIFB5T2JqZWN0KiBwYXNzd29yZCwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhZF90eXBlX2Vycm9yKQoreworICAgIC8qIFNldCB0aGUgcGFzc3dvcmQgYW5kIHNpemUgZmllbGRzIG9mIGEgX1B5U1NMUGFzc3dvcmRJbmZvIHN0cnVjdAorICAgICAgIGZyb20gYSB1bmljb2RlLCBieXRlcywgb3IgYnl0ZSBhcnJheSBvYmplY3QuCisgICAgICAgVGhlIHBhc3N3b3JkIGZpZWxkIHdpbGwgYmUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBtdXN0IGJlIGZyZWVkCisgICAgICAgYnkgdGhlIGNhbGxlciAqLworICAgIFB5T2JqZWN0ICpwYXNzd29yZF9ieXRlcyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZGF0YSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgcGFzc3dvcmRfYnl0ZXMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHBhc3N3b3JkLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFwYXNzd29yZF9ieXRlcykgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcocGFzc3dvcmRfYnl0ZXMpOworICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShwYXNzd29yZF9ieXRlcyk7CisgICAgfSBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcocGFzc3dvcmQpOworICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShwYXNzd29yZCk7CisgICAgfSBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgZGF0YSA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhwYXNzd29yZCk7CisgICAgICAgIHNpemUgPSBQeUJ5dGVBcnJheV9HRVRfU0laRShwYXNzd29yZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgYmFkX3R5cGVfZXJyb3IpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGZyZWUocHdfaW5mby0+cGFzc3dvcmQpOworICAgIHB3X2luZm8tPnBhc3N3b3JkID0gbWFsbG9jKHNpemUpOworICAgIGlmICghcHdfaW5mby0+cGFzc3dvcmQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBhbGxvY2F0ZSBwYXNzd29yZCBidWZmZXIiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgbWVtY3B5KHB3X2luZm8tPnBhc3N3b3JkLCBkYXRhLCBzaXplKTsKKyAgICBwd19pbmZvLT5zaXplID0gc2l6ZTsKKworICAgIFB5X1hERUNSRUYocGFzc3dvcmRfYnl0ZXMpOworICAgIHJldHVybiAxOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHBhc3N3b3JkX2J5dGVzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX3Bhc3N3b3JkX2NhbGxiYWNrKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGludCByd2ZsYWcsIHZvaWQgKnVzZXJkYXRhKQoreworICAgIF9QeVNTTFBhc3N3b3JkSW5mbyAqcHdfaW5mbyA9IChfUHlTU0xQYXNzd29yZEluZm8qKSB1c2VyZGF0YTsKKyAgICBQeU9iamVjdCAqZm5fcmV0ID0gTlVMTDsKKworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby0+dGhyZWFkX3N0YXRlKTsKKworICAgIGlmIChwd19pbmZvLT5jYWxsYWJsZSkgeworICAgICAgICBmbl9yZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHB3X2luZm8tPmNhbGxhYmxlLCBOVUxMKTsKKyAgICAgICAgaWYgKCFmbl9yZXQpIHsKKyAgICAgICAgICAgIC8qIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gbW92ZSBfY3R5cGVzX2FkZF90cmFjZWJhY2soKSBpbnRvIHRoZQorICAgICAgICAgICAgICAgY29yZSBweXRob24gQVBJLCBzbyB3ZSBjb3VsZCB1c2UgaXQgdG8gYWRkIGEgZnJhbWUgaGVyZSAqLworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghX3B3aW5mb19zZXQocHdfaW5mbywgZm5fcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBjYWxsYmFjayBtdXN0IHJldHVybiBhIHN0cmluZyIpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0NMRUFSKGZuX3JldCk7CisgICAgfQorCisgICAgaWYgKHB3X2luZm8tPnNpemUgPiBzaXplKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlZCBieXRlcyIsIHNpemUpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLT50aHJlYWRfc3RhdGUpOworICAgIG1lbWNweShidWYsIHB3X2luZm8tPnBhc3N3b3JkLCBwd19pbmZvLT5zaXplKTsKKyAgICByZXR1cm4gcHdfaW5mby0+c2l6ZTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihmbl9yZXQpOworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLT50aHJlYWRfc3RhdGUpOworICAgIHB3X2luZm8tPmVycm9yID0gMTsKKyAgICByZXR1cm4gLTE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBsb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTDsKKyAgICBjaGFyICprd2xpc3RbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZSwgKmtleWZpbGUgPSBOVUxMLCAqcGFzc3dvcmQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZV9ieXRlcyA9IE5VTEwsICprZXlmaWxlX2J5dGVzID0gTlVMTDsKKyAgICBwZW1fcGFzc3dvcmRfY2IgKm9yaWdfcGFzc3dkX2NiID0gc2VsZi0+Y3R4LT5kZWZhdWx0X3Bhc3N3ZF9jYWxsYmFjazsKKyAgICB2b2lkICpvcmlnX3Bhc3N3ZF91c2VyZGF0YSA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2tfdXNlcmRhdGE7CisgICAgX1B5U1NMUGFzc3dvcmRJbmZvIHB3X2luZm8gPSB7IE5VTEwsIE5VTEwsIE5VTEwsIDAsIDAgfTsKICAgICBpbnQgcjsKIAogICAgIGVycm5vID0gMDsKICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAotICAgICAgICAiT3xPOmxvYWRfY2VydF9jaGFpbiIsIGt3bGlzdCwKLSAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSkpCisgICAgICAgICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIGt3bGlzdCwKKyAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGtleWZpbGUgPT0gUHlfTm9uZSkKICAgICAgICAga2V5ZmlsZSA9IE5VTEw7CkBAIC0xNjIxLDEyICsyMDM2LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAia2V5ZmlsZSBzaG91bGQgYmUgYSB2YWxpZCBmaWxlc3lzdGVtIHBhdGgiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXNzd29yZCAmJiBwYXNzd29yZCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChQeUNhbGxhYmxlX0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICAgICAgcHdfaW5mby5jYWxsYWJsZSA9IHBhc3N3b3JkOworICAgICAgICB9IGVsc2UgaWYgKCFfcHdpbmZvX3NldCgmcHdfaW5mbywgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBzaG91bGQgYmUgYSBzdHJpbmcgb3IgY2FsbGFibGUiKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIF9wYXNzd29yZF9jYWxsYmFjayk7CisgICAgICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhKHNlbGYtPmN0eCwgJnB3X2luZm8pOworICAgIH0KKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlKHNlbGYtPmN0eCwKICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoY2VydGZpbGVfYnl0ZXMpKTsKLSAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIGlmIChyICE9IDEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgaWYgKHB3X2luZm8uZXJyb3IpIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgLyogdGhlIHBhc3N3b3JkIGNhbGxiYWNrIGhhcyBhbHJlYWR5IHNldCB0aGUgZXJyb3IgaW5mb3JtYXRpb24gKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlcnJubyAhPSAwKSB7CiAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgfQpAQCAtMTYzNSwzMyArMjA2NCw0MyBAQAogICAgICAgICB9CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoc2VsZi0+Y3R4LAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhrZXlmaWxlID8ga2V5ZmlsZV9ieXRlcyA6IGNlcnRmaWxlX2J5dGVzKSwKICAgICAgICAgU1NMX0ZJTEVUWVBFX1BFTSk7Ci0gICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9YREVDUkVGKGtleWZpbGVfYnl0ZXMpOwotICAgIFB5X1hERUNSRUYoY2VydGZpbGVfYnl0ZXMpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOworICAgIFB5X0NMRUFSKGtleWZpbGVfYnl0ZXMpOworICAgIFB5X0NMRUFSKGNlcnRmaWxlX2J5dGVzKTsKICAgICBpZiAociAhPSAxKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSAwKSB7CisgICAgICAgIGlmIChwd19pbmZvLmVycm9yKSB7CisgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgICAgIC8qIHRoZSBwYXNzd29yZCBjYWxsYmFjayBoYXMgYWxyZWFkeSBzZXQgdGhlIGVycm9yIGluZm9ybWF0aW9uICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXJybm8gIT0gMCkgewogICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CiAgICAgciA9IFNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXkoc2VsZi0+Y3R4KTsKLSAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIGlmIChyICE9IDEpIHsKICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX2NiKTsKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX3VzZXJkYXRhKTsKKyAgICBmcmVlKHB3X2luZm8ucGFzc3dvcmQpOwogICAgIFB5X1JFVFVSTl9OT05FOwogCiBlcnJvcjoKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX2NiKTsKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX3VzZXJkYXRhKTsKKyAgICBmcmVlKHB3X2luZm8ucGFzc3dvcmQpOwogICAgIFB5X1hERUNSRUYoa2V5ZmlsZV9ieXRlcyk7CiAgICAgUHlfWERFQ1JFRihjZXJ0ZmlsZV9ieXRlcyk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNzI0LDYgKzIxNjMsMzggQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xvYWRfZGhfcGFyYW1zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmZpbGVwYXRoKQoreworICAgIEZJTEUgKmY7CisgICAgREggKmRoOworCisgICAgZiA9IF9QeV9mb3BlbihmaWxlcGF0aCwgInJiIik7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgZmlsZXBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZXJybm8gPSAwOworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBkaCA9IFBFTV9yZWFkX0RIcGFyYW1zKGYsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGRoID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoU1NMX0NUWF9zZXRfdG1wX2RoKHNlbGYtPmN0eCwgZGgpID09IDApCisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgIERIX2ZyZWUoZGgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29udGV4dF93cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKQEAgLTE4MDgsNiArMjI3OSwzNSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorc3RhdGljIFB5T2JqZWN0ICoKK3NldF9lY2RoX2N1cnZlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVfYnl0ZXM7CisgICAgaW50IG5pZDsKKyAgICBFQ19LRVkgKmtleTsKKworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG5hbWUsICZuYW1lX2J5dGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobmFtZV9ieXRlcykpOworICAgIG5pZCA9IE9CSl9zbjJuaWQoUHlCeXRlc19BU19TVFJJTkcobmFtZV9ieXRlcykpOworICAgIFB5X0RFQ1JFRihuYW1lX2J5dGVzKTsKKyAgICBpZiAobmlkID09IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBlbGxpcHRpYyBjdXJ2ZSBuYW1lICVSIiwgbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrZXkgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUobmlkKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBTU0xfQ1RYX3NldF90bXBfZWNkaChzZWxmLT5jdHgsIGtleSk7CisgICAgRUNfS0VZX2ZyZWUoa2V5KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlHZXRTZXREZWYgY29udGV4dF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJvcHRpb25zIiwgKGdldHRlcikgZ2V0X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X29wdGlvbnMsIE5VTEx9LApAQCAtMTgyMSwxNCArMjMyMSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKICAgICB7InNldF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfY2lwaGVycywKICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7Il9zZXRfbnBuX3Byb3RvY29scyIsIChQeUNGdW5jdGlvbikgX3NldF9ucG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbikgbG9hZF9jZXJ0X2NoYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCisgICAgeyJsb2FkX2RoX3BhcmFtcyIsIChQeUNGdW5jdGlvbikgbG9hZF9kaF9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCiAgICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pIGxvYWRfdmVyaWZ5X2xvY2F0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAogICAgIHsic2Vzc2lvbl9zdGF0cyIsIChQeUNGdW5jdGlvbikgc2Vzc2lvbl9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiLCAoUHlDRnVuY3Rpb24pIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ0RICisgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbikgc2V0X2VjZGhfY3VydmUsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xODk5LDYgKzI0MDcsNjkgQEAKIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbiBzdHJpbmcuICBTZWUgUkZDIDE3NTAuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9SQU5EKGludCBsZW4sIGludCBwc2V1ZG8pCit7CisgICAgaW50IG9rOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGVycjsKKyAgICBjb25zdCBjaGFyICplcnJzdHI7CisgICAgUHlPYmplY3QgKnY7CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHBzZXVkbykgeworICAgICAgICBvayA9IFJBTkRfcHNldWRvX2J5dGVzKCh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIGxlbik7CisgICAgICAgIGlmIChvayA9PSAwIHx8IG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBieXRlcywgb2sgPT0gMSA/IFB5X1RydWUgOiBQeV9GYWxzZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBvayA9IFJBTkRfYnl0ZXMoKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbGVuKTsKKyAgICAgICAgaWYgKG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gYnl0ZXM7CisgICAgfQorICAgIFB5X0RFQ1JFRihieXRlcyk7CisKKyAgICBlcnIgPSBFUlJfZ2V0X2Vycm9yKCk7CisgICAgZXJyc3RyID0gRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoZXJyKTsKKyAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGtzKSIsIGVyciwgZXJyc3RyKTsKKyAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfYnl0ZXMiLCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYnl0ZXNfZG9jLAorIlJBTkRfYnl0ZXMobikgLT4gYnl0ZXNcblwKK1xuXAorR2VuZXJhdGUgbiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfcHNldWRvX2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlTU0xfUkFORChsZW4sIDEpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXNfZG9jLAorIlJBTkRfcHNldWRvX2J5dGVzKG4pIC0+IChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYylcblwKK1xuXAorR2VuZXJhdGUgbiBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiBpc19jcnlwdG9ncmFwaGljIGlzIFRydWUgaWYgdGhlIGJ5dGVzXAorZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBQeVNTTF9SQU5EX3N0YXR1cyhQeU9iamVjdCAqc2VsZikKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFJBTkRfc3RhdHVzKCkpOwpAQCAtMTk1MSw2ICsyNTIyLDEwIEBACiAjaWZkZWYgSEFWRV9PUEVOU1NMX1JBTkQKICAgICB7IlJBTkRfYWRkIiwgICAgICAgICAgICBQeVNTTF9SQU5EX2FkZCwgTUVUSF9WQVJBUkdTLAogICAgICBQeVNTTF9SQU5EX2FkZF9kb2N9LAorICAgIHsiUkFORF9ieXRlcyIsICAgICAgICAgIFB5U1NMX1JBTkRfYnl0ZXMsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlTU0xfUkFORF9ieXRlc19kb2N9LAorICAgIHsiUkFORF9wc2V1ZG9fYnl0ZXMiLCAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzX2RvY30sCiAgICAgeyJSQU5EX2VnZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9lZ2QsIE1FVEhfVkFSQVJHUywKICAgICAgUHlTU0xfUkFORF9lZ2RfZG9jfSwKICAgICB7IlJBTkRfc3RhdHVzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlTU0xfUkFORF9zdGF0dXMsIE1FVEhfTk9BUkdTLApAQCAtMjA3MSw2ICsyNjQ2LDggQEAKICAgICB1bnNpZ25lZCBsb25nIGxpYnZlcjsKICAgICB1bnNpZ25lZCBpbnQgbWFqb3IsIG1pbm9yLCBmaXgsIHBhdGNoLCBzdGF0dXM7CiAgICAgUHlTb2NrZXRNb2R1bGVfQVBJT2JqZWN0ICpzb2NrZXRfYXBpOworICAgIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSAqZXJyY29kZTsKKyAgICBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSAqbGliY29kZTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMQ29udGV4dF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjEwMCwxMiArMjY3NywzOCBAQAogICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CiAKICAgICAvKiBBZGQgc3ltYm9scyB0byBtb2R1bGUgZGljdCAqLwotICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInNzbC5TU0xFcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNvY2tldE1vZHVsZS5lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHNzbGVycm9yX3R5cGVfc2xvdHNbMF0ucGZ1bmMgPSBQeUV4Y19PU0Vycm9yOworICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeVR5cGVfRnJvbVNwZWMoJnNzbGVycm9yX3R5cGVfc3BlYyk7CiAgICAgaWYgKFB5U1NMRXJyb3JPYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDApCisKKyAgICBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMWmVyb1JldHVybkVycm9yIiwgU1NMWmVyb1JldHVybkVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xXYW50UmVhZEVycm9yIiwgU1NMV2FudFJlYWRFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTFdhbnRXcml0ZUVycm9yIiwgU1NMV2FudFdyaXRlRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMU3lzY2FsbEVycm9yIiwgU1NMU3lzY2FsbEVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xFT0ZFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMRU9GRXJyb3IiLCBTU0xFT0ZFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIGlmIChQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFJlYWRFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPT0gTlVMTAorICAgICAgICB8fCBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMRU9GRXJyb3JPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFplcm9SZXR1cm5FcnJvciIsIFB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50UmVhZEVycm9yIiwgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50V3JpdGVFcnJvciIsIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFN5c2NhbGxFcnJvciIsIFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFT0ZFcnJvciIsIFB5U1NMRU9GRXJyb3JPYmplY3QpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX1NTTENvbnRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xDb250ZXh0X1R5cGUpICE9IDApCkBAIC0yMTU4LDYgKzI3NjEsMTYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fU1NMdjIiLCBTU0xfT1BfTk9fU1NMdjIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19TU0x2MyIsIFNTTF9PUF9OT19TU0x2Myk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxIiwgU1NMX09QX05PX1RMU3YxKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0VDREhfVVNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UpOworI2VuZGlmCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX0NPTVBSRVNTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfTk9fQ09NUFJFU1NJT04pOworI2VuZGlmCiAKICNpZmRlZiBTU0xfQ1RSTF9TRVRfVExTRVhUX0hPU1ROQU1FCiAgICAgciA9IFB5X1RydWU7CkBAIC0yMTY3LDYgKzI3ODAsNzQgQEAKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfU05JIiwgcik7CiAKKyNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKKyAgICByID0gUHlfVHJ1ZTsKKyNlbHNlCisgICAgciA9IFB5X0ZhbHNlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1RMU19VTklRVUUiLCByKTsKKworI2lmZGVmIE9QRU5TU0xfTk9fRUNESAorICAgIHIgPSBQeV9GYWxzZTsKKyNlbHNlCisgICAgciA9IFB5X1RydWU7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfRUNESCIsIHIpOworCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfTlBOIiwgcik7CisKKyAgICAvKiBNYXBwaW5ncyBmb3IgZXJyb3IgY29kZXMgKi8KKyAgICBlcnJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgZXJyX25hbWVzX3RvX2NvZGVzID0gUHlEaWN0X05ldygpOworICAgIGlmIChlcnJfY29kZXNfdG9fbmFtZXMgPT0gTlVMTCB8fCBlcnJfbmFtZXNfdG9fY29kZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZXJyY29kZSA9IGVycm9yX2NvZGVzOworICAgIHdoaWxlIChlcnJjb2RlLT5tbmVtb25pYyAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAgbW5lbW8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJjb2RlLT5tbmVtb25pYyk7CisgICAgICAgIGtleSA9IFB5X0J1aWxkVmFsdWUoImlpIiwgZXJyY29kZS0+bGlicmFyeSwgZXJyY29kZS0+cmVhc29uKTsKKyAgICAgICAgaWYgKG1uZW1vID09IE5VTEwgfHwga2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9jb2Rlc190b19uYW1lcywga2V5LCBtbmVtbykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9uYW1lc190b19jb2RlcywgbW5lbW8sIGtleSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihtbmVtbyk7CisgICAgICAgIGVycmNvZGUrKzsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX2NvZGVzX3RvX25hbWVzIiwgZXJyX2NvZGVzX3RvX25hbWVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX25hbWVzX3RvX2NvZGVzIiwgZXJyX25hbWVzX3RvX2NvZGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsaWJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGxpYl9jb2Rlc190b19uYW1lcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaWJjb2RlID0gbGlicmFyeV9jb2RlczsKKyAgICB3aGlsZSAobGliY29kZS0+bGlicmFyeSAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKGxpYmNvZGUtPmNvZGUpOworICAgICAgICBtbmVtbyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGxpYmNvZGUtPmxpYnJhcnkpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwgfHwgbW5lbW8gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obGliX2NvZGVzX3RvX25hbWVzLCBrZXksIG1uZW1vKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG1uZW1vKTsKKyAgICAgICAgbGliY29kZSsrOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJsaWJfY29kZXNfdG9fbmFtZXMiLCBsaWJfY29kZXNfdG9fbmFtZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKICAgICAvKiBPcGVuU1NMIHZlcnNpb24gKi8KICAgICAvKiBTU0xlYXkoKSBnaXZlcyB1cyB0aGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBsaW5rZWQgYWdhaW5zdCwKICAgICAgICB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaGVhZGVycyB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsX2RhdGEuaCBiL01vZHVsZXMvX3NzbF9kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhOGQ3YgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NzbF9kYXRhLmgKQEAgLTAsMCArMSwxNjUzIEBACisvKiBGaWxlIGdlbmVyYXRlZCBieSBUb29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSAqLworLyogR2VuZXJhdGVkIG9uIDIwMTItMDUtMTZUMjM6NTY6NDAuOTgxMzgyICovCisKK3N0YXRpYyBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSBsaWJyYXJ5X2NvZGVzW10gPSB7CisgICAgeyJQRU0iLCBFUlJfTElCX1BFTX0sCisgICAgeyJTU0wiLCBFUlJfTElCX1NTTH0sCisgICAgeyJYNTA5IiwgRVJSX0xJQl9YNTA5fSwKKyAgICB7IE5VTEwgfQorfTsKKworc3RhdGljIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSBlcnJvcl9jb2Rlc1tdID0geworICAjaWZkZWYgUEVNX1JfQkFEX0JBU0U2NF9ERUNPREUKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9CQVNFNjRfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIDEwMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0RFQ1JZUFQKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0VORF9MSU5FCisgICAgeyJCQURfRU5EX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX0VORF9MSU5FfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9FTkRfTElORSIsIEVSUl9MSUJfUEVNLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9JVl9DSEFSUworICAgIHsiQkFEX0lWX0NIQVJTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9JVl9DSEFSU30sCisgICNlbHNlCisgICAgeyJCQURfSVZfQ0hBUlMiLCBFUlJfTElCX1BFTSwgMTAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfTUFHSUNfTlVNQkVSCisgICAgeyJCQURfTUFHSUNfTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9NQUdJQ19OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX01BR0lDX05VTUJFUiIsIEVSUl9MSUJfUEVNLCAxMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9QQVNTV09SRF9SRUFECisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfUEFTU1dPUkRfUkVBRH0sCisgICNlbHNlCisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUgorICAgIHsiQkFEX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUn0sCisgICNlbHNlCisgICAgeyJCQURfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1BFTSwgMTE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CSU9fV1JJVEVfRkFJTFVSRQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQklPX1dSSVRFX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgMTE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9DSVBIRVJfSVNfTlVMTAorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgUEVNX1JfQ0lQSEVSX0lTX05VTEx9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9FUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZCisgICAgeyJFUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0VSUk9SX0NPTlZFUlRJTkdfUFJJVkFURV9LRVl9LAorICAjZWxzZQorICAgIHsiRVJST1JfQ09OVkVSVElOR19QUklWQVRFX0tFWSIsIEVSUl9MSUJfUEVNLCAxMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QUklWQVRFX0tFWV9CTE9CCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9FWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCAxMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IKKyAgICB7IkVYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IiLCBFUlJfTElCX1BFTSwgUEVNX1JfRVhQRUNUSU5HX1BVQkxJQ19LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFVCTElDX0tFWV9CTE9CIiwgRVJSX0xJQl9QRU0sIDEyMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfSU5DT05TSVNURU5UX0hFQURFUgorICAgIHsiSU5DT05TSVNURU5UX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9JTkNPTlNJU1RFTlRfSEVBREVSfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9IRUFERVIiLCBFUlJfTElCX1BFTSwgMTIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX0hFQURFUl9QQVJTRV9FUlJPUgorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1J9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgMTIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX1RPT19TSE9SVAorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfREVLX0lORk8KKyAgICB7Ik5PVF9ERUtfSU5GTyIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfREVLX0lORk99LAorICAjZWxzZQorICAgIHsiTk9UX0RFS19JTkZPIiwgRVJSX0xJQl9QRU0sIDEwNX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfTk9UX0VOQ1JZUFRFRAorICAgIHsiTk9UX0VOQ1JZUFRFRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfRU5DUllQVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PVF9FTkNSWVBURUQiLCBFUlJfTElCX1BFTSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfUFJPQ19UWVBFCisgICAgeyJOT1RfUFJPQ19UWVBFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX05PVF9QUk9DX1RZUEV9LAorICAjZWxzZQorICAgIHsiTk9UX1BST0NfVFlQRSIsIEVSUl9MSUJfUEVNLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX05PX1NUQVJUX0xJTkUKKyAgICB7Ik5PX1NUQVJUX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfTk9fU1RBUlRfTElORX0sCisgICNlbHNlCisgICAgeyJOT19TVEFSVF9MSU5FIiwgRVJSX0xJQl9QRU0sIDEwOH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRAorICAgIHsiUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QUk9CTEVNU19HRVRUSU5HX1BBU1NXT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX0dFVFRJTkdfUEFTU1dPUkQiLCBFUlJfTElCX1BFTSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVUJMSUNfS0VZX05PX1JTQQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgUEVNX1JfUFVCTElDX0tFWV9OT19SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgMTEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVktfREFUQV9UT09fU0hPUlQKKyAgICB7IlBWS19EQVRBX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfREFUQV9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiUFZLX0RBVEFfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIDEyNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFZLX1RPT19TSE9SVAorICAgIHsiUFZLX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlBWS19UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9SRUFEX0tFWQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgUEVNX1JfUkVBRF9LRVl9LAorICAjZWxzZQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgMTExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9TSE9SVF9IRUFERVIKKyAgICB7IlNIT1JUX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9TSE9SVF9IRUFERVJ9LAorICAjZWxzZQorICAgIHsiU0hPUlRfSEVBREVSIiwgRVJSX0xJQl9QRU0sIDExMn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSCisgICAgeyJVTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfUEVNLCAxMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1VOU1VQUE9SVEVEX0VOQ1JZUFRJT04KKyAgICB7IlVOU1VQUE9SVEVEX0VOQ1JZUFRJT04iLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfRU5DUllQVElPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTkNSWVBUSU9OIiwgRVJSX0xJQl9QRU0sIDExNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfS0VZX0NPTVBPTkVOVFMKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1VOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFCisgICAgeyJBUFBfREFUQV9JTl9IQU5EU0hBS0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFfSwKKyAgI2Vsc2UKKyAgICB7IkFQUF9EQVRBX0lOX0hBTkRTSEFLRSIsIEVSUl9MSUJfU1NMLCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVAorICAgIHsiQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVH0sCisgICNlbHNlCisgICAgeyJBVFRFTVBUX1RPX1JFVVNFX1NFU1NJT05fSU5fRElGRkVSRU5UX0NPTlRFWFQiLCBFUlJfTElCX1NTTCwgMjcyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfQUxFUlRfUkVDT1JECisgICAgeyJCQURfQUxFUlRfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9BTEVSVF9SRUNPUkR9LAorICAjZWxzZQorICAgIHsiQkFEX0FMRVJUX1JFQ09SRCIsIEVSUl9MSUJfU1NMLCAxMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9BVVRIRU5USUNBVElPTl9UWVBFCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfQVVUSEVOVElDQVRJT05fVFlQRX0sCisgICNlbHNlCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9DSEFOR0VfQ0lQSEVSX1NQRUMKKyAgICB7IkJBRF9DSEFOR0VfQ0lQSEVSX1NQRUMiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIQU5HRV9DSVBIRVJfU1BFQ30sCisgICNlbHNlCisgICAgeyJCQURfQ0hBTkdFX0NJUEhFUl9TUEVDIiwgRVJSX0xJQl9TU0wsIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0NIRUNLU1VNCisgICAgeyJCQURfQ0hFQ0tTVU0iLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIRUNLU1VNfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9DSEVDS1NVTSIsIEVSUl9MSUJfU1NMLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EQVRBX1JFVFVSTkVEX0JZX0NBTExCQUNLCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCAxMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ERUNPTVBSRVNTSU9OCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREVDT01QUkVTU0lPTn0sCisgICNlbHNlCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESF9HX0xFTkdUSAorICAgIHsiQkFEX0RIX0dfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ESF9HX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfREhfR19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEgKKyAgICB7IkJBRF9ESF9QVUJfS0VZX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0RIX1BVQl9LRVlfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RIX1BfTEVOR1RICisgICAgeyJCQURfREhfUF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RIX1BfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ESF9QX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESUdFU1RfTEVOR1RICisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRElHRVNUX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRFNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ0NfQ0VSVAorICAgIHsiQkFEX0VDQ19DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0NfQ0VSVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNDX0NFUlQiLCBFUlJfTElCX1NTTCwgMzA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRUNEU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRUNEU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0RTQV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiQkFEX0VDRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAzMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ1BPSU5UCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRUNQT0lOVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCAzMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IQU5EU0hBS0VfTEVOR1RICisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEFORFNIQUtFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IRUxMT19SRVFVRVNUCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEVMTE9fUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9MRU5HVEgKKyAgICB7IkJBRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19ERUNPREUKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19MRU5HVEgKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMzM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01FU1NBR0VfVFlQRQorICAgIHsiQkFEX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfTUVTU0FHRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NRVNTQUdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUEFDS0VUX0xFTkdUSAorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1BBQ0tFVF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVIKKyAgICB7IkJBRF9QUk9UT0NPTF9WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX1BST1RPQ09MX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSAorICAgIHsiQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9QU0tfSURFTlRJVFlfSElOVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlQKKyAgICB7IkJBRF9SRVNQT05TRV9BUkdVTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlR9LAorICAjZWxzZQorICAgIHsiQkFEX1JFU1BPTlNFX0FSR1VNRU5UIiwgRVJSX0xJQl9TU0wsIDExN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9ERUNSWVBUCisgICAgeyJCQURfUlNBX0RFQ1JZUFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfREVDUllQVCIsIEVSUl9MSUJfU1NMLCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfRU5DUllQVAorICAgIHsiQkFEX1JTQV9FTkNSWVBUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRU5DUllQVH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX0VOQ1JZUFQiLCBFUlJfTElCX1NTTCwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX0VfTEVOR1RICisgICAgeyJCQURfUlNBX0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9FX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfTU9EVUxVU19MRU5HVEgKKyAgICB7IkJBRF9SU0FfTU9EVUxVU19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9NT0RVTFVTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX01PRFVMVVNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9TSUdOQVRVUkUKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDEyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NJR05BVFVSRQorICAgIHsiQkFEX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfU1NMX0ZJTEVUWVBFCisgICAgeyJCQURfU1NMX0ZJTEVUWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9TU0xfRklMRVRZUEV9LAorICAjZWxzZQorICAgIHsiQkFEX1NTTF9GSUxFVFlQRSIsIEVSUl9MSUJfU1NMLCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgKKyAgICB7IkJBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NTTF9TRVNTSU9OX0lEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfU1NMX1NFU1NJT05fSURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NUQVRFCisgICAgeyJCQURfU1RBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NUQVRFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TVEFURSIsIEVSUl9MSUJfU1NMLCAxMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9XUklURV9SRVRSWQorICAgIHsiQkFEX1dSSVRFX1JFVFJZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9XUklURV9SRVRSWX0sCisgICNlbHNlCisgICAgeyJCQURfV1JJVEVfUkVUUlkiLCBFUlJfTElCX1NTTCwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CSU9fTk9UX1NFVAorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQklPX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTI4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CTE9DS19DSVBIRVJfUEFEX0lTX1dST05HCisgICAgeyJCTE9DS19DSVBIRVJfUEFEX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCAxMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JOX0xJQgorICAgIHsiQk5fTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JOX0xJQn0sCisgICNlbHNlCisgICAgeyJCTl9MSUIiLCBFUlJfTElCX1NTTCwgMTMwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNBX0ROX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ0FfRE5fTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0FfRE5fVE9PX0xPTkcKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NBX0ROX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDEzMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZCisgICAgeyJDQ1NfUkVDRUlWRURfRUFSTFkiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZfSwKKyAgI2Vsc2UKKyAgICB7IkNDU19SRUNFSVZFRF9FQVJMWSIsIEVSUl9MSUJfU1NMLCAxMzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQKKyAgICB7IkNFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDEzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0VSVF9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NFUlRfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0hBTExFTkdFX0lTX0RJRkZFUkVOVAorICAgIHsiQ0hBTExFTkdFX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSEFMTEVOR0VfSVNfRElGRkVSRU5UfSwKKyAgI2Vsc2UKKyAgICB7IkNIQUxMRU5HRV9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTM2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgKKyAgICB7IkNJUEhFUl9DT0RFX1dST05HX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEzN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEUKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIDEzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUgorICAgIHsiQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfVEFCTEVfU1JDX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9UQUJMRV9TUkNfRVJST1IiLCBFUlJfTElCX1NTTCwgMTM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFQKKyAgICB7IkNMSUVOVEhFTExPX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFR9LAorICAjZWxzZQorICAgIHsiQ0xJRU5USEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIDIyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NFRF9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRElTQUJMRUQKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTSU9OX0RJU0FCTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIDM0M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRkFJTFVSRQorICAgIHsiQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgMTQxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0UKKyAgICB7IkNPTVBSRVNTSU9OX0lEX05PVF9XSVRISU5fUFJJVkFURV9SQU5HRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0V9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFIiwgRVJSX0xJQl9TU0wsIDMwN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUgorICAgIHsiQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0xJQlJBUllfRVJST1IiLCBFUlJfTElCX1NTTCwgMTQyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX1RZUEVfTk9UX1NFVAorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT09LSUVfTUlTTUFUQ0gKKyAgICB7IkNPT0tJRV9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT09LSUVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ09PS0lFX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDMwOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUQKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIDE0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRUQKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDE0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRURfT1JfQkFEX1JFQ09SRF9NQUMKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIDI4MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORworICAgIHsiREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9ESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HfSwKKyAgI2Vsc2UKKyAgICB7IkRIX1BVQkxJQ19WQUxVRV9MRU5HVEhfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgMTQ4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9ESUdFU1RfQ0hFQ0tfRkFJTEVECisgICAgeyJESUdFU1RfQ0hFQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RJR0VTVF9DSEVDS19GQUlMRUR9LAorICAjZWxzZQorICAgIHsiRElHRVNUX0NIRUNLX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxNDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RUTFNfTUVTU0FHRV9UT09fQklHCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9EVExTX01FU1NBR0VfVE9PX0JJR30sCisgICNlbHNlCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCAzMzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRAorICAgIHsiRFVQTElDQVRFX0NPTVBSRVNTSU9OX0lEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRH0sCisgICNlbHNlCisgICAgeyJEVVBMSUNBVEVfQ09NUFJFU1NJT05fSUQiLCBFUlJfTElCX1NTTCwgMzA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlQKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfS0VZX0FHUkVFTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlR9LAorICAjZWxzZQorICAgIHsiRUNDX0NFUlRfTk9UX0ZPUl9LRVlfQUdSRUVNRU5UIiwgRVJSX0xJQl9TU0wsIDMxN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HCisgICAgeyJFQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfU0lHTklORyIsIEVSUl9MSUJfU1NMLCAzMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfUlNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJFQ0NfQ0VSVF9TSE9VTERfSEFWRV9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfU0hBMV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUgorICAgIHsiRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0dST1VQX1RPT19MQVJHRV9GT1JfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IkVDR1JPVVBfVE9PX0xBUkdFX0ZPUl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMzEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FTkNSWVBURURfTEVOR1RIX1RPT19MT05HCisgICAgeyJFTkNSWVBURURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkKKyAgICB7IkVSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWX0sCisgICNlbHNlCisgICAgeyJFUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIDI4Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVhDRVNTSVZFX01FU1NBR0VfU0laRQorICAgIHsiRVhDRVNTSVZFX01FU1NBR0VfU0laRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWENFU1NJVkVfTUVTU0FHRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IkVYQ0VTU0lWRV9NRVNTQUdFX1NJWkUiLCBFUlJfTElCX1NTTCwgMTUyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0UKKyAgICB7IkVYVFJBX0RBVEFfSU5fTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiRVhUUkFfREFUQV9JTl9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfR09UX0FfRklOX0JFRk9SRV9BX0NDUworICAgIHsiR09UX0FfRklOX0JFRk9SRV9BX0NDUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9HT1RfQV9GSU5fQkVGT1JFX0FfQ0NTfSwKKyAgI2Vsc2UKKyAgICB7IkdPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MiLCBFUlJfTElCX1NTTCwgMTU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9IVFRQU19QUk9YWV9SRVFVRVNUCisgICAgeyJIVFRQU19QUk9YWV9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBTX1BST1hZX1JFUVVFU1R9LAorICAjZWxzZQorICAgIHsiSFRUUFNfUFJPWFlfUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0hUVFBfUkVRVUVTVAorICAgIHsiSFRUUF9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBfUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJIVFRQX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgMTU2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTExFR0FMX1BBRERJTkcKKyAgICB7IklMTEVHQUxfUEFERElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTExFR0FMX1BBRERJTkd9LAorICAjZWxzZQorICAgIHsiSUxMRUdBTF9QQURESU5HIiwgRVJSX0xJQl9TU0wsIDI4M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OCisgICAgeyJJTkNPTlNJU1RFTlRfQ09NUFJFU1NJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9DT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAzNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSAorICAgIHsiSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTU4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX0NPTU1BTkQKKyAgICB7IklOVkFMSURfQ09NTUFORCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX0NPTU1BTkR9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9DT01NQU5EIiwgRVJSX0xJQl9TU0wsIDI4MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0KKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIDM0MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9QVVJQT1NFCisgICAgeyJJTlZBTElEX1BVUlBPU0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9QVVJQT1NFfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfUFVSUE9TRSIsIEVSUl9MSUJfU1NMLCAyNzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1NUQVRVU19SRVNQT05TRX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAzMjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RICisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVFJVU1QKKyAgICB7IklOVkFMSURfVFJVU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9UUlVTVH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RSVVNUIiwgRVJSX0xJQl9TU0wsIDI3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS0VZX0FSR19UT09fTE9ORworICAgIHsiS0VZX0FSR19UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LRVlfQVJHX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9BUkdfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjg0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1CisgICAgeyJLUkI1IiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjV9LAorICAjZWxzZQorICAgIHsiS1JCNSIsIEVSUl9MSUJfU1NMLCAyODV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfQ19DQ19QUklOQworICAgIHsiS1JCNV9DX0NDX1BSSU5DIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19DQ19QUklOQ30sCisgICNlbHNlCisgICAgeyJLUkI1X0NfQ0NfUFJJTkMiLCBFUlJfTElCX1NTTCwgMjg2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X0NfR0VUX0NSRUQKKyAgICB7IktSQjVfQ19HRVRfQ1JFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfR0VUX0NSRUR9LAorICAjZWxzZQorICAgIHsiS1JCNV9DX0dFVF9DUkVEIiwgRVJSX0xJQl9TU0wsIDI4N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX0lOSVQKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19JTklUfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIDI4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX01LX1JFUQorICAgIHsiS1JCNV9DX01LX1JFUSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfTUtfUkVRfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19NS19SRVEiLCBFUlJfTElCX1NTTCwgMjg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfQkFEX1RJQ0tFVAorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0JBRF9USUNLRVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgMjkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfSU5JVAorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0lOSVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgMjkxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfUkRfUkVRCisgICAgeyJLUkI1X1NfUkRfUkVRIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19SRF9SRVF9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1JEX1JFUSIsIEVSUl9MSUJfU1NMLCAyOTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRAorICAgIHsiS1JCNV9TX1RLVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRH0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfVEtUX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgMjkzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX05ZVgorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX1RLVF9OWVZ9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgMjk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX1NLRVcKKyAgICB7IktSQjVfU19US1RfU0tFVyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfVEtUX1NLRVd9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9TS0VXIiwgRVJSX0xJQl9TU0wsIDI5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTEVOR1RIX01JU01BVENICisgICAgeyJMRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkxFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAxNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0xFTkdUSF9UT09fU0hPUlQKKyAgICB7IkxFTkdUSF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJMRU5HVEhfVE9PX1NIT1JUIiwgRVJSX0xJQl9TU0wsIDE2MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9CVUcKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0xJQlJBUllfQlVHfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIDI3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUworICAgIHsiTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9MSUJSQVJZX0hBU19OT19DSVBIRVJTfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfSEFTX05PX0NJUEhFUlMiLCBFUlJfTElCX1NTTCwgMTYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NRVNTQUdFX1RPT19MT05HCisgICAgeyJNRVNTQUdFX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01FU1NBR0VfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiTUVTU0FHRV9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyOTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfREhfRFNBX0NFUlQKKyAgICB7Ik1JU1NJTkdfREhfRFNBX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19ESF9EU0FfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0RIX0RTQV9DRVJUIiwgRVJSX0xJQl9TU0wsIDE2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9LRVkKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIDE2M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9SU0FfQ0VSVAorICAgIHsiTUlTU0lOR19ESF9SU0FfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RIX1JTQV9DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfUlNBX0NFUlQiLCBFUlJfTElCX1NTTCwgMTY0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfRFNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19EU0FfU0lHTklOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfRVhQT1JUX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTY2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfUlNBX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgMTY3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9DRVJUSUZJQ0FURQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTY4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfUlNBX0VOQ1JZUFRJTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfRU5DUllQVElOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUCisgICAgeyJNSVNTSU5HX1JTQV9TSUdOSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfUlNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTcxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9FQ0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19UTVBfRUNESF9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgMzExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCAxNzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9QS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfUEtFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCAxNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVkVSSUZZX01FU1NBR0UKKyAgICB7Ik1JU1NJTkdfVkVSSUZZX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19WRVJJRllfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1ZFUklGWV9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUCisgICAgeyJOT05fU1NMVjJfSU5JVElBTF9QQUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUfSwKKyAgI2Vsc2UKKyAgICB7Ik5PTl9TU0xWMl9JTklUSUFMX1BBQ0tFVCIsIEVSUl9MSUJfU1NMLCAxNzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVTX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURVNfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9BU1NJR05FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVQKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfU0VUIiwgRVJSX0xJQl9TU0wsIDE3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVECisgICAgeyJOT19DRVJUSUZJQ0FURV9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfQVZBSUxBQkxFCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX0FWQUlMQUJMRX0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxODF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfUEFTU0VECisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1BBU1NFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCAxODJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfU1BFQ0lGSUVECisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9MSVNUCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJfTElTVH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCAxODR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9NQVRDSAorICAgIHsiTk9fQ0lQSEVSX01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUl9NQVRDSH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTUFUQ0giLCBFUlJfTElCX1NTTCwgMTg1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0QKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX01FVEhPRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiTk9fQ0xJRU5UX0NFUlRfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIDMzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0xJRU5UX0NFUlRfUkVDRUlWRUQKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIDE4Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVECisgICAgeyJOT19DT01QUkVTU0lPTl9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NPTVBSRVNTSU9OX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUn0sCisgICNlbHNlCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCAzMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX01FVEhPRF9TUEVDSUZJRUQKKyAgICB7Ik5PX01FVEhPRF9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19NRVRIT0RfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIDE4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUFJJVkFURUtFWQorICAgIHsiTk9fUFJJVkFURUtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19QUklWQVRFS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1BSSVZBVEVLRVkiLCBFUlJfTElCX1NTTCwgMTg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRAorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUFJJVkFURV9LRVlfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUk9UT0NPTFNfQVZBSUxBQkxFCisgICAgeyJOT19QUk9UT0NPTFNfQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BST1RPQ09MU19BVkFJTEFCTEV9LAorICAjZWxzZQorICAgIHsiTk9fUFJPVE9DT0xTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxOTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1BVQkxJQ0tFWQorICAgIHsiTk9fUFVCTElDS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BVQkxJQ0tFWX0sCisgICNlbHNlCisgICAgeyJOT19QVUJMSUNLRVkiLCBFUlJfTElCX1NTTCwgMTkyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19SRU5FR09USUFUSU9OCisgICAgeyJOT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFTkVHT1RJQVRJT059LAorICAjZWxzZQorICAgIHsiTk9fUkVORUdPVElBVElPTiIsIEVSUl9MSUJfU1NMLCAzMzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVAorICAgIHsiTk9fUkVRVUlSRURfRElHRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVH0sCisgICNlbHNlCisgICAgeyJOT19SRVFVSVJFRF9ESUdFU1QiLCBFUlJfTElCX1NTTCwgMzI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19TSEFSRURfQ0lQSEVSCisgICAgeyJOT19TSEFSRURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1NIQVJFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiTk9fU0hBUkVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAxOTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDSworICAgIHsiTk9fVkVSSUZZX0NBTExCQUNLIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJOT19WRVJJRllfQ0FMTEJBQ0siLCBFUlJfTElCX1NTTCwgMTk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OVUxMX1NTTF9DVFgKKyAgICB7Ik5VTExfU1NMX0NUWCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9DVFh9LAorICAjZWxzZQorICAgIHsiTlVMTF9TU0xfQ1RYIiwgRVJSX0xJQl9TU0wsIDE5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTlVMTF9TU0xfTUVUSE9EX1BBU1NFRAorICAgIHsiTlVMTF9TU0xfTUVUSE9EX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9NRVRIT0RfUEFTU0VEfSwKKyAgI2Vsc2UKKyAgICB7Ik5VTExfU1NMX01FVEhPRF9QQVNTRUQiLCBFUlJfTElCX1NTTCwgMTk2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9PTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVECisgICAgeyJPTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09MRF9TRVNTSU9OX0NJUEhFUl9OT1RfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAxOTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX09MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQKKyAgICB7Ik9MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJPTERfU0VTU0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDM0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT05MWV9UTFNfQUxMT1dFRF9JTl9GSVBTX01PREUKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFfSwKKyAgI2Vsc2UKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIDI5N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORworICAgIHsiT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9PUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7Ik9QQVFVRV9QUkZfSU5QVVRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMzI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQUNLRVRfTEVOR1RIX1RPT19MT05HCisgICAgeyJQQUNLRVRfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBQ0tFVF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFDS0VUX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxOTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BBUlNFX1RMU0VYVAorICAgIHsiUEFSU0VfVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBUlNFX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJQQVJTRV9UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQVRIX1RPT19MT05HCisgICAgeyJQQVRIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0RJRF9OT1RfUkVUVVJOX0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTk5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SCisgICAgeyJQRUVSX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1J9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUiIsIEVSUl9MSUJfU1NMLCAyMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1JfQ0VSVElGSUNBVEUKKyAgICB7IlBFRVJfRVJST1JfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIwMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1JfTk9fQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMjAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX05PX0NJUEhFUgorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9OT19DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEUKKyAgICB7IlBFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEV9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURV9UWVBFIiwgRVJSX0xJQl9TU0wsIDIwNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJFX01BQ19MRU5HVEhfVE9PX0xPTkcKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BSRV9NQUNfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDIwNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TCisgICAgeyJQUk9CTEVNU19NQVBQSU5HX0NJUEhFUl9GVU5DVElPTlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX01BUFBJTkdfQ0lQSEVSX0ZVTkNUSU9OUyIsIEVSUl9MSUJfU1NMLCAyMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BST1RPQ09MX0lTX1NIVVRET1dOCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QUk9UT0NPTF9JU19TSFVURE9XTn0sCisgICNlbHNlCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCAyMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkQKKyAgICB7IlBTS19JREVOVElUWV9OT1RfRk9VTkQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORH0sCisgICNlbHNlCisgICAgeyJQU0tfSURFTlRJVFlfTk9UX0ZPVU5EIiwgRVJSX0xJQl9TU0wsIDIyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFNLX05PX0NMSUVOVF9DQgorICAgIHsiUFNLX05PX0NMSUVOVF9DQiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QU0tfTk9fQ0xJRU5UX0NCfSwKKyAgI2Vsc2UKKyAgICB7IlBTS19OT19DTElFTlRfQ0IiLCBFUlJfTElCX1NTTCwgMjI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCCisgICAgeyJQU0tfTk9fU0VSVkVSX0NCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BTS19OT19TRVJWRVJfQ0J9LAorICAjZWxzZQorICAgIHsiUFNLX05PX1NFUlZFUl9DQiIsIEVSUl9MSUJfU1NMLCAyMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9FTkNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0VOQ1JZUFRfRVJST1IiLCBFUlJfTElCX1NTTCwgMjA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0EKKyAgICB7IlBVQkxJQ19LRVlfSVNfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9JU19OT1RfUlNBIiwgRVJSX0xJQl9TU0wsIDIwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBCisgICAgeyJQVUJMSUNfS0VZX05PVF9SU0EiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCAyMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQURfQklPX05PVF9TRVQKKyAgICB7IlJFQURfQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVBRF9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJSRUFEX0JJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIDIxMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9USU1FT1VUX0VYUElSRUQKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQURfVElNRU9VVF9FWFBJUkVEfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIDMxMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9XUk9OR19QQUNLRVRfVFlQRQorICAgIHsiUkVBRF9XUk9OR19QQUNLRVRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUFEX1dST05HX1BBQ0tFVF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfV1JPTkdfUEFDS0VUX1RZUEUiLCBFUlJfTElCX1NTTCwgMjEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUNPUkRfTEVOR1RIX01JU01BVENICisgICAgeyJSRUNPUkRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQ09SRF9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiUkVDT1JEX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAyMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQ09SRF9UT09fTEFSR0UKKyAgICB7IlJFQ09SRF9UT09fTEFSR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVDT1JEX1RPT19MQVJHRX0sCisgICNlbHNlCisgICAgeyJSRUNPUkRfVE9PX0xBUkdFIiwgRVJSX0xJQl9TU0wsIDIxNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVDT1JEX1RPT19TTUFMTAorICAgIHsiUkVDT1JEX1RPT19TTUFMTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUNPUkRfVE9PX1NNQUxMfSwKKyAgI2Vsc2UKKyAgICB7IlJFQ09SRF9UT09fU01BTEwiLCBFUlJfTElCX1NTTCwgMjk4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkcKKyAgICB7IlJFTkVHT1RJQVRFX0VYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUkVORUdPVElBVEVfRVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9FTkNPRElOR19FUlIKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIDMzNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9NSVNNQVRDSAorICAgIHsiUkVORUdPVElBVElPTl9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFUSU9OX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMzM3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DSVBIRVJfTUlTU0lORworICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVRVUlSRURfQ0lQSEVSX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgMjE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkcKKyAgICB7IlJFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HIiwgRVJSX0xJQl9TU0wsIDM0Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9MRU5HVEhfTk9UX1pFUk8KKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIDIxNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPCisgICAgeyJSRVVTRV9DRVJUX1RZUEVfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfVFlQRV9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFVVNFX0NJUEhFUl9MSVNUX05PVF9aRVJPCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVST30sCisgICNlbHNlCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NDU1ZfUkVDRUlWRURfV0hFTl9SRU5FR09USUFUSU5HCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElOR30sCisgICNlbHNlCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCAzNDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVAorICAgIHsiU0VSVkVSSEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJTRVJWRVJIRUxMT19UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjc1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRAorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUR9LAorICAjZWxzZQorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TSE9SVF9SRUFECisgICAgeyJTSE9SVF9SRUFEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NIT1JUX1JFQUR9LAorICAjZWxzZQorICAgIHsiU0hPUlRfUkVBRCIsIEVSUl9MSUJfU1NMLCAyMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUKKyAgICB7IlNJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0lHTkFUVVJFX0ZPUl9OT05fU0lHTklOR19DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJTSUdOQVRVUkVfRk9SX05PTl9TSUdOSU5HX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIyMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRQorICAgIHsiU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyM19ET0lOR19TRVNTSU9OX0lEX1JFVVNFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDIzX0RPSU5HX1NFU1NJT05fSURfUkVVU0UiLCBFUlJfTElCX1NTTCwgMjIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDJfQ09OTkVDVElPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMMl9DT05ORUNUSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI5OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX0VDUE9JTlRGT1JNQVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfRUNQT0lOVEZPUk1BVCIsIEVSUl9MSUJfU1NMLCAzMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRX0sCisgICNlbHNlCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUUiLCBFUlJfTElCX1NTTCwgMzE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUVfVFlQRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEV9LAorICAjZWxzZQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgMzIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMwMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVAorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgMjIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX0JBRF9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQkFEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0JBRF9SRUNPUkRfTUFDCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQ30sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCAxMDIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX0VYUElSRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCAxMDQ1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1JFVk9LRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfUkVWT0tFRCIsIEVSUl9MSUJfU1NMLCAxMDQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOCisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV059LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfVU5LTk9XTiIsIEVSUl9MSUJfU1NMLCAxMDQ2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkUKKyAgICB7IlNTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfREVDT01QUkVTU0lPTl9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIDEwMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAxMDQwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUgorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVJ9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgMTA0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfTk9fQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRQorICAgIHsiU1NMVjNfQUxFUlRfVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgMTAxMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04KKyAgICB7IlNTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJTU0xfQ1RYX0hBU19OT19ERUZBVUxUX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDIyOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xfSEFORFNIQUtFX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAyMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSU30sCisgICNlbHNlCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCAyMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRAorICAgIHsiU1NMX1NFU1NJT05fSURfQ0FMTEJBQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DQUxMQkFDS19GQUlMRUQiLCBFUlJfTElCX1NTTCwgMzAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05GTElDVAorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfQ09ORkxJQ1R9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgMzAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NPTlRFWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0hBU19CQURfTEVOR1RICisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiU1NMX1NFU1NJT05fSURfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMjMxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVECisgICAgeyJUTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUR9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfQUNDRVNTX0RFTklFRCIsIEVSUl9MSUJfU1NMLCAxMDQ5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVECisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxMDIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDUllQVF9FUlJPUiIsIEVSUl9MSUJfU1NMLCAxMDUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT04KKyAgICB7IlRMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfRVhQT1JUX1JFU1RSSUNUSU9OIiwgRVJSX0xJQl9TU0wsIDEwNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWQorICAgIHsiVExTVjFfQUxFUlRfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9JTlNVRkZJQ0lFTlRfU0VDVVJJVFkiLCBFUlJfTElCX1NTTCwgMTA3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04KKyAgICB7IlRMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfTk9fUkVORUdPVElBVElPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIDExMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04KKyAgICB7IlRMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfUFJPVE9DT0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9QUk9UT0NPTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDEwNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPVworICAgIHsiVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPV30sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9SRUNPUkRfT1ZFUkZMT1ciLCBFUlJfTElCX1NTTCwgMTAyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVU5LTk9XTl9DQQorICAgIHsiVExTVjFfQUxFUlRfVU5LTk9XTl9DQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9VTktOT1dOX0NBfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VOS05PV05fQ0EiLCBFUlJfTElCX1NTTCwgMTA0OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVVNFUl9DQU5DRUxMRUQKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIDEwOTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCAxMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0V9LAorICAjZWxzZQorICAgIHsiVExTVjFfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAxMTEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUKKyAgICB7IlRMU1YxX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEV9LAorICAjZWxzZQorICAgIHsiVExTVjFfQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFIiwgRVJSX0xJQl9TU0wsIDExMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX1VOUkVDT0dOSVpFRF9OQU1FCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlJFQ09HTklaRURfTkFNRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCAxMTEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT04KKyAgICB7IlRMU1YxX1VOU1VQUE9SVEVEX0VYVEVOU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfVU5TVVBQT1JURURfRVhURU5TSU9OIiwgRVJSX0xJQl9TU0wsIDExMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUgorICAgIHsiVExTX0NMSUVOVF9DRVJUX1JFUV9XSVRIX0FOT05fQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJUTFNfQ0xJRU5UX0NFUlRfUkVRX1dJVEhfQU5PTl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjMyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1QKKyAgICB7IlRMU19JTlZBTElEX0VDUE9JTlRGT1JNQVRfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1R9LAorICAjZWxzZQorICAgIHsiVExTX0lOVkFMSURfRUNQT0lOVEZPUk1BVF9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVAorICAgIHsiVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUEVFUl9ESURfTk9UX1JFU1BPTkRfV0lUSF9DRVJUSUZJQ0FURV9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IlRMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1QiLCBFUlJfTElCX1NTTCwgMjMzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkcKKyAgICB7IlRMU19SU0FfRU5DUllQVEVEX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIDIzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUgorICAgIHsiVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UUklFRF9UT19VU0VfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlRSSUVEX1RPX1VTRV9VTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjM1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfREhfQ0VSVFN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9ESF9DRVJUUyIsIEVSUl9MSUJfU1NMLCAyMzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUUworICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9FQ0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0VDREhfQ0VSVFMiLCBFUlJfTElCX1NTTCwgMzEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19FWFRSQUNUX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0VYVFJBQ1RfUFVCTElDX0tFWSIsIEVSUl9MSUJfU1NMLCAyMzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMKKyAgICB7IlVOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfREhfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9ESF9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIDIzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTCisgICAgeyJVTkFCTEVfVE9fRklORF9FQ0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCAzMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSUworICAgIHsiVU5BQkxFX1RPX0ZJTkRfUFVCTElDX0tFWV9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9QVUJMSUNfS0VZX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgMjM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRklORF9TU0xfTUVUSE9ECisgICAgeyJVTkFCTEVfVE9fRklORF9TU0xfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1NTTF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfU1NMX01FVEhPRCIsIEVSUl9MSUJfU1NMLCAyNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDJfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FUworICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMM19TSEExX1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX1NIQTFfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgMjQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0UKKyAgICB7IlVORVhQRUNURURfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDI0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5FWFBFQ1RFRF9SRUNPUkQKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VORVhQRUNURURfUkVDT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIDI0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5JTklUSUFMSVpFRAorICAgIHsiVU5JTklUSUFMSVpFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTklOSVRJQUxJWkVEfSwKKyAgI2Vsc2UKKyAgICB7IlVOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEUKKyAgICB7IlVOS05PV05fQUxFUlRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9BTEVSVF9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFCisgICAgeyJVTktOT1dOX0NFUlRJRklDQVRFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1JFVFVSTkVECisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAyNDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1RZUEUKKyAgICB7IlVOS05PV05fQ0lQSEVSX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DSVBIRVJfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRQorICAgIHsiVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fS0VZX0VYQ0hBTkdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BLRVlfVFlQRQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9QS0VZX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BST1RPQ09MCisgICAgeyJVTktOT1dOX1BST1RPQ09MIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fUFJPVE9DT0x9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUKKyAgICB7IlVOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9SRU1PVEVfRVJST1JfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1JFTU9URV9FUlJPUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9TU0xfVkVSU0lPTgorICAgIHsiVU5LTk9XTl9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMjU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1NUQVRFCisgICAgeyJVTktOT1dOX1NUQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fU1RBVEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9TVEFURSIsIEVSUl9MSUJfU1NMLCAyNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRAorICAgIHsiVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRH0sCisgICNlbHNlCisgICAgeyJVTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05fRElTQUJMRUQiLCBFUlJfTElCX1NTTCwgMzM4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVIKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDI1Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNCisgICAgeyJVTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE0iLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NPTVBSRVNTSU9OX0FMR09SSVRITSIsIEVSUl9MSUJfU1NMLCAyNTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0RJR0VTVF9UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9ESUdFU1RfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCAzMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1BST1RPQ09MCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9QUk9UT0NPTH0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NTTF9WRVJTSU9OCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAyNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NUQVRVU19UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TVEFUVVNfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dSSVRFX0JJT19OT1RfU0VUCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUklURV9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCAyNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRAorICAgIHsiV1JPTkdfQ0lQSEVSX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJXUk9OR19DSVBIRVJfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMjYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEUKKyAgICB7IldST05HX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEV9LAorICAjZWxzZQorICAgIHsiV1JPTkdfTUVTU0FHRV9UWVBFIiwgRVJSX0xJQl9TU0wsIDI2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTCisgICAgeyJXUk9OR19OVU1CRVJfT0ZfS0VZX0JJVFMiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX05VTUJFUl9PRl9LRVlfQklUUyIsIEVSUl9MSUJfU1NMLCAyNjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX1NJR05BVFVSRV9MRU5HVEgKKyAgICB7IldST05HX1NJR05BVFVSRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJXUk9OR19TSUdOQVRVUkVfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI2NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX1NJWkUKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NJR05BVFVSRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIDI2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU1NMX1ZFUlNJT04KKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDI2Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfVkVSU0lPTl9OVU1CRVIKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1ZFUlNJT05fTlVNQkVSfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDI2N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9MSUIKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfTElCfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIDI2OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9WRVJJRklDQVRJT05fU0VUVVBfUFJPQkxFTVMKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIDI2OX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFCisgICAgeyJCQURfWDUwOV9GSUxFVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9YNTA5X0ZJTEVUWVBFIiwgRVJSX0xJQl9YNTA5LCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9CQVNFNjRfREVDT0RFX0VSUk9SCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQkFTRTY0X0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWQorICAgIHsiQ0FOVF9DSEVDS19ESF9LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJDQU5UX0NIRUNLX0RIX0tFWSIsIEVSUl9MSUJfWDUwOSwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUKKyAgICB7IkNFUlRfQUxSRUFEWV9JTl9IQVNIX1RBQkxFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEV9LAorICAjZWxzZQorICAgIHsiQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUiLCBFUlJfTElCX1g1MDksIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0VSUl9BU04xX0xJQgorICAgIHsiRVJSX0FTTjFfTElCIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfRVJSX0FTTjFfTElCfSwKKyAgI2Vsc2UKKyAgICB7IkVSUl9BU04xX0xJQiIsIEVSUl9MSUJfWDUwOSwgMTAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUlkKKyAgICB7IklOVkFMSURfRElSRUNUT1JZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUll9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9ESVJFQ1RPUlkiLCBFUlJfTElCX1g1MDksIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0lOVkFMSURfRklFTERfTkFNRQorICAgIHsiSU5WQUxJRF9GSUVMRF9OQU1FIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9GSUVMRF9OQU1FfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfRklFTERfTkFNRSIsIEVSUl9MSUJfWDUwOSwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9UUlVTVAorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0lOVkFMSURfVFJVU1R9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0gKKyAgICB7IktFWV9UWVBFX01JU01BVENIIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiS0VZX1RZUEVfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0tFWV9WQUxVRVNfTUlTTUFUQ0gKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIFg1MDlfUl9LRVlfVkFMVUVTX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfQ0VSVF9ESVIKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0NFUlRfRElSfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfREVGQVVMVFMKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0RFRkFVTFRTfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIDEwNH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVECisgICAgeyJNRVRIT0RfTk9UX1NVUFBPUlRFRCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik1FVEhPRF9OT1RfU1VQUE9SVEVEIiwgRVJSX0xJQl9YNTA5LCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9OT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfTk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWX0sCisgICNlbHNlCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9ERUNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1IKKyAgICB7IlBVQkxJQ19LRVlfRU5DT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9FTkNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1NIT1VMRF9SRVRSWQorICAgIHsiU0hPVUxEX1JFVFJZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfU0hPVUxEX1JFVFJZfSwKKyAgI2Vsc2UKKyAgICB7IlNIT1VMRF9SRVRSWSIsIEVSUl9MSUJfWDUwOSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTgorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOQUJMRV9UT19GSU5EX1BBUkFNRVRFUlNfSU5fQ0hBSU59LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgMTA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZIiwgRVJSX0xJQl9YNTA5LCAxMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX0tFWV9UWVBFCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9LRVlfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX05JRAorICAgIHsiVU5LTk9XTl9OSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX05JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX05JRCIsIEVSUl9MSUJfWDUwOSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5LTk9XTl9QVVJQT1NFX0lECisgICAgeyJVTktOT1dOX1BVUlBPU0VfSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX1BVUlBPU0VfSUR9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QVVJQT1NFX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX1RSVVNUX0lECisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9UUlVTVF9JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTlNVUFBPUlRFRF9BTEdPUklUSE0KKyAgICB7IlVOU1VQUE9SVEVEX0FMR09SSVRITSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOU1VQUE9SVEVEX0FMR09SSVRITX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9BTEdPUklUSE0iLCBFUlJfTElCX1g1MDksIDExMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFCisgICAgeyJXUk9OR19MT09LVVBfVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX0xPT0tVUF9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9XUk9OR19UWVBFCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfV1JPTkdfVFlQRX0sCisgICNlbHNlCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMjJ9LAorICAjZW5kaWYKKyAgICB7IE5VTEwgfQorfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0cnVjdC5jIGIvTW9kdWxlcy9fc3RydWN0LmMKaW5kZXggNTU4ZDI0Yi4uMGIyMGUyNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fc3RydWN0LmMKQEAgLTU4LDYgKzU4LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBmbG9hdCB4OyB9IHN0X2Zsb2F0OwogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7CiAKICNkZWZpbmUgU0hPUlRfQUxJR04gKHNpemVvZihzdF9zaG9ydCkgLSBzaXplb2Yoc2hvcnQpKQogI2RlZmluZSBJTlRfQUxJR04gKHNpemVvZihzdF9pbnQpIC0gc2l6ZW9mKGludCkpCkBAIC02NSw2ICs2Niw3IEBACiAjZGVmaW5lIEZMT0FUX0FMSUdOIChzaXplb2Yoc3RfZmxvYXQpIC0gc2l6ZW9mKGZsb2F0KSkKICNkZWZpbmUgRE9VQkxFX0FMSUdOIChzaXplb2Yoc3RfZG91YmxlKSAtIHNpemVvZihkb3VibGUpKQogI2RlZmluZSBWT0lEX1BfQUxJR04gKHNpemVvZihzdF92b2lkX3ApIC0gc2l6ZW9mKHZvaWQgKikpCisjZGVmaW5lIFNJWkVfVF9BTElHTiAoc2l6ZW9mKHN0X3NpemVfdCkgLSBzaXplb2Yoc2l6ZV90KSkKIAogLyogV2UgY2FuJ3Qgc3VwcG9ydCBxIGFuZCBRIGluIG5hdGl2ZSBtb2RlIHVubGVzcyB0aGUgY29tcGlsZXIgZG9lczsKICAgIGluIHN0ZCBtb2RlLCB0aGV5J3JlIDggYnl0ZXMgb24gYWxsIHBsYXRmb3Jtcy4gKi8KQEAgLTIxMyw2ICsyMTUsNTIgQEAKIAogI2VuZGlmCiAKKy8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zc2l6ZV90KFB5T2JqZWN0ICp2LCBQeV9zc2l6ZV90ICpwKQoreworICAgIFB5X3NzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKHggPT0gKFB5X3NzaXplX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgKnAgPSB4OworICAgIHJldHVybiAwOworfQorCisvKiBTYW1lLCBidXQgaGFuZGxpbmcgc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zaXplX3QoUHlPYmplY3QgKnYsIHNpemVfdCAqcCkKK3sKKyAgICBzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU2l6ZV90KHYpOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoeCA9PSAoc2l6ZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgICpwID0geDsKKyAgICByZXR1cm4gMDsKK30KKwogCiAjZGVmaW5lIFJBTkdFX0VSUk9SKHgsIGYsIGZsYWcsIG1hc2spIHJldHVybiBfcmFuZ2VfZXJyb3IoZiwgZmxhZykKIApAQCAtMzY5LDYgKzQxNywyMyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyh4KTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK251X3NzaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIFB5X3NzaXplX3QgeDsKKyAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitudV9zaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHNpemVfdCB4OworICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHgpOworfQorCisKIC8qIE5hdGl2ZSBtb2RlIGRvZXNuJ3Qgc3VwcG9ydCBxIG9yIFEgdW5sZXNzIHRoZSBwbGF0Zm9ybSBDIHN1cHBvcnRzCiAgICBsb25nIGxvbmcgKG9yLCBvbiBXaW5kb3dzLCBfX2ludDY0KS4gKi8KIApAQCAtNTU4LDYgKzYyMywyNiBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitucF9zc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgUHlfc3NpemVfdCB4OworICAgIGlmIChnZXRfc3NpemVfdCh2LCAmeCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbWVtY3B5KHAsIChjaGFyICopJngsIHNpemVvZiB4KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbnBfc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgc2l6ZV90IHg7CisgICAgaWYgKGdldF9zaXplX3QodiwgJngpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CisgICAgcmV0dXJuIDA7Cit9CisKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogCiBzdGF0aWMgaW50CkBAIC02NTEsNiArNzM2LDggQEAKICAgICB7J0knLCAgICAgICBzaXplb2YoaW50KSwgICAgSU5UX0FMSUdOLCAgICAgIG51X3VpbnQsICAgICAgICBucF91aW50fSwKICAgICB7J2wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X2xvbmcsICAgICAgICBucF9sb25nfSwKICAgICB7J0wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X3Vsb25nLCAgICAgICBucF91bG9uZ30sCisgICAgeyduJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zc2l6ZV90LCAgICAgbnBfc3NpemVfdH0sCisgICAgeydOJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zaXplX3QsICAgICAgbnBfc2l6ZV90fSwKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsncScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCiAgICAgeydRJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCkBAIC0xOTY0LDcgKzIwNTEsOCBAQAogICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGUuXG5cCiBTcGVjaWFsIGNhc2VzIChwcmVjZWRpbmcgZGVjaW1hbCBjb3VudCBpbmRpY2F0ZXMgbGVuZ3RoKTpcblwKICAgczpzdHJpbmcgKGFycmF5IG9mIGNoYXIpOyBwOiBwYXNjYWwgc3RyaW5nICh3aXRoIGNvdW50IGJ5dGUpLlxuXAotU3BlY2lhbCBjYXNlIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKK1NwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXAorICBuOnNzaXplX3Q7IE46c2l6ZV90O1xuXAogICBQOmFuIGludGVnZXIgdHlwZSB0aGF0IGlzIHdpZGUgZW5vdWdoIHRvIGhvbGQgYSBwb2ludGVyLlxuXAogU3BlY2lhbCBjYXNlIChub3QgaW4gbmF0aXZlIG1vZGUgdW5sZXNzICdsb25nIGxvbmcnIGluIHBsYXRmb3JtIEMpOlxuXAogICBxOmxvbmcgbG9uZzsgUTp1bnNpZ25lZCBsb25nIGxvbmdcblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTY2NjZlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC0wLDAgKzEsMjg3NSBAQAorLyogQyBFeHRlbnNpb24gbW9kdWxlIHRvIHRlc3QgYWxsIGFzcGVjdHMgb2YgUEVQLTMxMTguCisgICBXcml0dGVuIGJ5IFN0ZWZhbiBLcmFoLiAqLworCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKworLyogc3RydWN0IG1vZHVsZSAqLworUHlPYmplY3QgKnN0cnVjdG1vZHVsZSA9IE5VTEw7CitQeU9iamVjdCAqU3RydWN0ID0gTlVMTDsKK1B5T2JqZWN0ICpjYWxjc2l6ZSA9IE5VTEw7CisKKy8qIGNhY2hlIHNpbXBsZSBmb3JtYXQgc3RyaW5nICovCitzdGF0aWMgY29uc3QgY2hhciAqc2ltcGxlX2ZtdCA9ICJCIjsKK1B5T2JqZWN0ICpzaW1wbGVfZm9ybWF0ID0gTlVMTDsKKyNkZWZpbmUgU0lNUExFX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCB8fCBzdHJjbXAoZm10LCAiQiIpID09IDApCisjZGVmaW5lIEZJWF9GT1JNQVQoZm10KSAoZm10ID09IE5VTEwgPyAiQiIgOiBmbXQpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5EQXJyYXkgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IE5EQXJyYXlfVHlwZTsKKyNkZWZpbmUgTkRBcnJheV9DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmTkRBcnJheV9UeXBlKQorCisjZGVmaW5lIENIRUNLX0xJU1RfT1JfVFVQTEUodikgXAorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpICYmICFQeVR1cGxlX0NoZWNrKHYpKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICAgICAgICBcCisgICAgICAgICAgICAjdiAiIG11c3QgYmUgYSBsaXN0IG9yIGEgdHVwbGUiKTsgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisKKyNkZWZpbmUgUHlNZW1fWEZyZWUodikgXAorICAgIGRvIHsgaWYgKHYpIFB5TWVtX0ZyZWUodik7IH0gd2hpbGUgKDApCisKKy8qIE1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMuICovCisjZGVmaW5lIE5EX01BWF9ORElNICgyICogUHlCVUZfTUFYX05ESU0pCisKKy8qIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygc3Vib2Zmc2V0cyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLiAqLworI2RlZmluZSBIQVZFX1BUUihzdWJvZmZzZXRzKSAoc3Vib2Zmc2V0cyAmJiBzdWJvZmZzZXRzWzBdID49IDApCisvKiBBZGp1c3QgcHRyIGlmIHN1Ym9mZnNldHMgYXJlIHByZXNlbnQuICovCisjZGVmaW5lIEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKSBcCisgICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMpID8gKigoY2hhcioqKXB0cikgKyBzdWJvZmZzZXRzWzBdIDogcHRyKQorCisvKiBEZWZhdWx0OiBOdW1QeSBzdHlsZSAoc3RyaWRlcyksIHJlYWQtb25seSwgbm8gdmFyLWV4cG9ydCwgQy1zdHlsZSBsYXlvdXQgKi8KKyNkZWZpbmUgTkRfREVGQVVMVCAgICAgICAgICAweDAwMAorLyogVXNlciBjb25maWd1cmFibGUgZmxhZ3MgZm9yIHRoZSBuZGFycmF5ICovCisjZGVmaW5lIE5EX1ZBUkVYUE9SVCAgICAgICAgMHgwMDEgICAvKiBjaGFuZ2UgbGF5b3V0IHdoaWxlIGJ1ZmZlcnMgYXJlIGV4cG9ydGVkICovCisvKiBVc2VyIGNvbmZpZ3VyYWJsZSBmbGFncyBmb3IgZWFjaCBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9XUklUQUJMRSAgICAgICAgIDB4MDAyICAgLyogbWFyayBiYXNlIGJ1ZmZlciBhcyB3cml0YWJsZSAqLworI2RlZmluZSBORF9GT1JUUkFOICAgICAgICAgIDB4MDA0ICAgLyogRm9ydHJhbiBjb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBORF9TQ0FMQVIgICAgICAgICAgIDB4MDA4ICAgLyogc2NhbGFyOiBuZGltID0gMCAqLworI2RlZmluZSBORF9QSUwgICAgICAgICAgICAgIDB4MDEwICAgLyogY29udmVydCB0byBQSUwtc3R5bGUgYXJyYXkgKHN1Ym9mZnNldHMpICovCisjZGVmaW5lIE5EX1JFRElSRUNUICAgICAgICAgMHgwMjAgICAvKiByZWRpcmVjdCBidWZmZXIgcmVxdWVzdHMgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX0ZBSUwgICAgICAweDA0MCAgIC8qIHRyaWdnZXIgZ2V0YnVmZmVyIGZhaWx1cmUgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX1VOREVGSU5FRCAweDA4MCAgIC8qIHVuZGVmaW5lZCB2aWV3Lm9iaiAqLworLyogSW50ZXJuYWwgZmxhZ3MgZm9yIHRoZSBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9DICAgICAgICAgICAgICAgIDB4MTAwICAgLyogQyBjb250aWd1b3VzIGxheW91dCAoZGVmYXVsdCkgKi8KKyNkZWZpbmUgTkRfT1dOX0FSUkFZUyAgICAgICAweDIwMCAgIC8qIGNvbnN1bWVyIG93bnMgYXJyYXlzICovCisKKy8qIG5kYXJyYXkgcHJvcGVydGllcyAqLworI2RlZmluZSBORF9JU19DT05TVU1FUihuZCkgXAorICAgICgoKE5EQXJyYXlPYmplY3QgKiluZCktPmhlYWQgPT0gJigoTkRBcnJheU9iamVjdCAqKW5kKS0+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/IGRzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICB4c3B0ciwgc3N0cmlkZXMrMSwgc3N1Ym9mZnNldHMgPyBzc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgbWVtKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NtcF9zdHJ1Y3R1cmUoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoc3RyY21wKEZJWF9GT1JNQVQoZGVzdC0+Zm9ybWF0KSwgRklYX0ZPUk1BVChzcmMtPmZvcm1hdCkpICE9IDAgfHwKKyAgICAgICAgZGVzdC0+aXRlbXNpemUgIT0gc3JjLT5pdGVtc2l6ZSB8fAorICAgICAgICBkZXN0LT5uZGltICE9IHNyYy0+bmRpbSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZm9yIChpID0gMDsgaSA8IGRlc3QtPm5kaW07IGkrKykgeworICAgICAgICBpZiAoZGVzdC0+c2hhcGVbaV0gIT0gc3JjLT5zaGFwZVtpXSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGRlc3QtPnNoYXBlW2ldID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29weSBzcmMgdG8gZGVzdC4gQm90aCBidWZmZXJzIG11c3QgaGF2ZSB0aGUgc2FtZSBmb3JtYXQsIGl0ZW1zaXplLAorICAgbmRpbSBhbmQgc2hhcGUuIENvcHlpbmcgaXMgYXRvbWljLCB0aGUgZnVuY3Rpb24gbmV2ZXIgZmFpbHMgd2l0aAorICAgYSBwYXJ0aWFsIGNvcHkuICovCitzdGF0aWMgaW50Citjb3B5X2J1ZmZlcihQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNoYXIgKm1lbSA9IE5VTEw7CisKKyAgICBhc3NlcnQoZGVzdC0+bmRpbSA+IDApOworCisgICAgaWYgKGNtcF9zdHJ1Y3R1cmUoZGVzdCwgc3JjKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKGRlc3QtPnN1Ym9mZnNldHMgJiYgZGVzdC0+c3Vib2Zmc2V0c1tkZXN0LT5uZGltLTFdID49IDApIHx8CisgICAgICAgIChzcmMtPnN1Ym9mZnNldHMgJiYgc3JjLT5zdWJvZmZzZXRzW3NyYy0+bmRpbS0xXSA+PSAwKSB8fAorICAgICAgICBkZXN0LT5zdHJpZGVzW2Rlc3QtPm5kaW0tMV0gIT0gZGVzdC0+aXRlbXNpemUgfHwKKyAgICAgICAgc3JjLT5zdHJpZGVzW3NyYy0+bmRpbS0xXSAhPSBzcmMtPml0ZW1zaXplKSB7CisgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyhkZXN0LT5zaGFwZVtkZXN0LT5uZGltLTFdICogZGVzdC0+aXRlbXNpemUpOworICAgICAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb3B5X3JlYyhkZXN0LT5zaGFwZSwgZGVzdC0+bmRpbSwgZGVzdC0+aXRlbXNpemUsCisgICAgICAgICAgICAgZGVzdC0+YnVmLCBkZXN0LT5zdHJpZGVzLCBkZXN0LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIHNyYy0+YnVmLCBzcmMtPnN0cmlkZXMsIHNyYy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICBtZW0pOworCisgICAgUHlNZW1fWEZyZWUobWVtKTsKKyAgICByZXR1cm4gMDsKK30KKworCisvKiBVbnBhY2sgc2luZ2xlIGVsZW1lbnQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCit1bnBhY2tfc2luZ2xlKGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZm10LCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICp4LCAqdW5wYWNrX2Zyb20sICptdmlldzsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICBmbXQgPSAiQiI7CisgICAgICAgIGl0ZW1zaXplID0gMTsKKyAgICB9CisKKyAgICB1bnBhY2tfZnJvbSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAidW5wYWNrX2Zyb20iKTsKKyAgICBpZiAodW5wYWNrX2Zyb20gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KHB0ciwgaXRlbXNpemUsIFB5QlVGX1JFQUQpOworICAgIGlmIChtdmlldyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24odW5wYWNrX2Zyb20sICJzTyIsIGZtdCwgbXZpZXcpOworICAgIFB5X0RFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgUHlfREVDUkVGKG12aWV3KTsKKyAgICBpZiAoeCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHgpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VHVwbGVfR0VUX0lURU0oeCwgMCk7CisgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgIHJldHVybiB0bXA7CisgICAgfQorCisgICAgcmV0dXJuIHg7Cit9CisKKy8qIFVucGFjayBhIG11bHRpLWRpbWVuc2lvbmFsIG1hdHJpeCBpbnRvIGEgbmVzdGVkIGxpc3QuIFJldHVybiBhIHNjYWxhcgorICAgZm9yIG5kaW0gPSAwLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19yZWMoUHlPYmplY3QgKnVucGFja19mcm9tLCBjaGFyICpwdHIsIFB5T2JqZWN0ICptdmlldywgY2hhciAqaXRlbSwKKyAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIGNvbnN0IFB5X3NzaXplX3QgKnN0cmlkZXMsCisgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsIFB5X3NzaXplX3QgbmRpbSwgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqbHN0LCAqeDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobmRpbSA+PSAwKTsKKyAgICBhc3NlcnQoc2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0cmlkZXMgIT0gTlVMTCk7CisKKyAgICBpZiAobmRpbSA9PSAwKSB7CisgICAgICAgIG1lbWNweShpdGVtLCBwdHIsIGl0ZW1zaXplKTsKKyAgICAgICAgeCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3ModW5wYWNrX2Zyb20sIG12aWV3LCBOVUxMKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRSh4KSA9PSAxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlUdXBsZV9HRVRfSVRFTSh4LCAwKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICAgICAgcmV0dXJuIHRtcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBsc3QgPSBQeUxpc3RfTmV3KHNoYXBlWzBdKTsKKyAgICBpZiAobHN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwdHIrPXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICpuZXh0cHRyID0gQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpOworCisgICAgICAgIHggPSB1bnBhY2tfcmVjKHVucGFja19mcm9tLCBuZXh0cHRyLCBtdmlldywgaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUrMSwgc3RyaWRlcysxLCBzdWJvZmZzZXRzID8gc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgbmRpbS0xLCBpdGVtc2l6ZSk7CisgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBQeUxpc3RfU0VUX0lURU0obHN0LCBpLCB4KTsKKyAgICB9CisKKyAgICByZXR1cm4gbHN0OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2FzX2xpc3QoTkRBcnJheU9iamVjdCAqbmQpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiA9IE5VTEwsICp1bnBhY2tfZnJvbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxzdCA9IE5VTEwsICptdmlldyA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kLT5oZWFkLT5iYXNlOworICAgIFB5X3NzaXplX3QgKnNoYXBlID0gYmFzZS0+c2hhcGU7CisgICAgUHlfc3NpemVfdCAqc3RyaWRlcyA9IGJhc2UtPnN0cmlkZXM7CisgICAgUHlfc3NpemVfdCBzaW1wbGVfc2hhcGVbMV07CisgICAgUHlfc3NpemVfdCBzaW1wbGVfc3RyaWRlc1sxXTsKKyAgICBjaGFyICppdGVtID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIGNoYXIgKmZtdCA9IGJhc2UtPmZvcm1hdDsKKworICAgIGJhc2UgPSAmbmQtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheTogdG9saXN0KCkgZG9lcyBub3Qgc3VwcG9ydCBmb3JtYXQ9TlVMTCwgdXNlICIKKyAgICAgICAgICAgICJ0b2J5dGVzKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzaGFwZSA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydChORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSk7CisgICAgICAgIGFzc2VydChiYXNlLT5zdHJpZGVzID09IE5VTEwpOworICAgICAgICBhc3NlcnQoYmFzZS0+bmRpbSA8PSAxKTsKKyAgICAgICAgc2hhcGUgPSBzaW1wbGVfc2hhcGU7CisgICAgICAgIHNoYXBlWzBdID0gYmFzZS0+bGVuOworICAgICAgICBzdHJpZGVzID0gc2ltcGxlX3N0cmlkZXM7CisgICAgICAgIHN0cmlkZXNbMF0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydChORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSk7CisgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmQtPmhlYWQsIDApOworICAgICAgICBpZiAoc3RyaWRlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgUHlfREVDUkVGKGZvcm1hdCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHVucGFja19mcm9tID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3RvYmosICJ1bnBhY2tfZnJvbSIpOworICAgIGlmICh1bnBhY2tfZnJvbSA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGl0ZW0gPSBQeU1lbV9NYWxsb2MoYmFzZS0+aXRlbXNpemUpOworICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShpdGVtLCBiYXNlLT5pdGVtc2l6ZSwgUHlCVUZfV1JJVEUpOworICAgIGlmIChtdmlldyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGxzdCA9IHVucGFja19yZWModW5wYWNrX2Zyb20sIGJhc2UtPmJ1ZiwgbXZpZXcsIGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICBzaGFwZSwgc3RyaWRlcywgYmFzZS0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgIGJhc2UtPm5kaW0sIGJhc2UtPml0ZW1zaXplKTsKKworb3V0OgorICAgIFB5X1hERUNSRUYobXZpZXcpOworICAgIFB5TWVtX1hGcmVlKGl0ZW0pOworICAgIFB5X1hERUNSRUYodW5wYWNrX2Zyb20pOworICAgIFB5X1hERUNSRUYoc3RydWN0b2JqKTsKKyAgICBpZiAoc3RyaWRlcyAhPSBiYXNlLT5zdHJpZGVzICYmIHN0cmlkZXMgIT0gc2ltcGxlX3N0cmlkZXMpCisgICAgICAgIFB5TWVtX1hGcmVlKHN0cmlkZXMpOworCisgICAgcmV0dXJuIGxzdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemUgbmRidWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgICBTdGF0ZSBvZiBhIG5ldyBuZGJ1ZiBkdXJpbmcgaW5pdGlhbGl6YXRpb24uICdPSycgbWVhbnMgdGhhdCBpbml0aWFsaXphdGlvbgorICAgaXMgY29tcGxldGUuICdQVFInIG1lYW5zIHRoYXQgYSBwb2ludGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBidXQgdGhlCisgICBzdGF0ZSBvZiB0aGUgbWVtb3J5IGlzIHN0aWxsIHVuZGVmaW5lZCBhbmQgbmRidWYtPm9mZnNldCBpcyBkaXNyZWdhcmRlZC4KKworICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8ICAgICAgICAgICAgICAgICB8IG5kYnVmX25ldyB8IGluaXRfc2ltcGxlIHwgaW5pdF9zdHJ1Y3R1cmUgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IG5leHQgICAgICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IHByZXYgICAgICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGxlbiAgICAgICAgICAgICB8ICAgIE9LICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IG9mZnNldCAgICAgICAgICB8ICAgIE9LICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGRhdGEgICAgICAgICAgICB8ICAgIFBUUiAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGZsYWdzICAgICAgICAgICB8ICAgIHVzZXIgICB8ICAgIHVzZXIgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGV4cG9ydHMgICAgICAgICB8ICAgT0sgKDApICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2Uub2JqICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuYnVmICAgICAgICB8ICAgIFBUUiAgICB8ICAgICBQVFIgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UubGVuICAgICAgICB8IGxlbihkYXRhKSB8ICBsZW4oZGF0YSkgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuaXRlbXNpemUgICB8ICAgICAxICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UucmVhZG9ubHkgICB8ICAgICAwICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuZm9ybWF0ICAgICB8ICAgIE5VTEwgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfCAgCisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5uZGltICAgICAgIHwgICAgIDEgICAgIHwgICAgICAxICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zaGFwZSAgICAgIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zdHJpZGVzICAgIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zdWJvZmZzZXRzIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5pbnRlcm5hbCAgIHwgICAgT0sgICAgIHwgICAgT0sgICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisKKyovCisKK3N0YXRpYyBQeV9zc2l6ZV90CitnZXRfaXRlbXNpemUoUHlPYmplY3QgKmZvcm1hdCkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5X3NzaXplX3QgaXRlbXNpemU7CisKKyAgICB0bXAgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGNhbGNzaXplLCBmb3JtYXQsIE5VTEwpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGl0ZW1zaXplID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgcmV0dXJuIGl0ZW1zaXplOworfQorCitzdGF0aWMgY2hhciAqCitnZXRfZm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQpCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBjaGFyICpmbXQ7CisKKyAgICB0bXAgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhmb3JtYXQpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm10ID0gUHlNZW1fTWFsbG9jKFB5Qnl0ZXNfR0VUX1NJWkUodG1wKSsxKTsKKyAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzdHJjcHkoZm10LCBQeUJ5dGVzX0FTX1NUUklORyh0bXApKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKworICAgIHJldHVybiBmbXQ7Cit9CisKK3N0YXRpYyBpbnQKK2luaXRfc2ltcGxlKG5kYnVmX3QgKm5kYnVmLCBQeU9iamVjdCAqaXRlbXMsIFB5T2JqZWN0ICpmb3JtYXQsCisgICAgICAgICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICptdmlldzsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgaW50IHJldDsKKworICAgIG12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoYmFzZSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldCA9IHBhY2tfZnJvbV9saXN0KG12aWV3LCBpdGVtcywgZm9ybWF0LCBpdGVtc2l6ZSk7CisgICAgUHlfREVDUkVGKG12aWV3KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgYmFzZS0+cmVhZG9ubHkgPSAhKG5kYnVmLT5mbGFncyAmIE5EX1dSSVRBQkxFKTsKKyAgICBiYXNlLT5pdGVtc2l6ZSA9IGl0ZW1zaXplOworICAgIGJhc2UtPmZvcm1hdCA9IGdldF9mb3JtYXQoZm9ybWF0KTsKKyAgICBpZiAoYmFzZS0+Zm9ybWF0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlfc3NpemVfdCAqCitzZXFfYXNfc3NpemVfYXJyYXkoUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBsZW4sIGludCBpc19zaGFwZSkKK3sKKyAgICBQeV9zc2l6ZV90ICpkZXN0OworICAgIFB5X3NzaXplX3QgeCwgaTsKKworICAgIGRlc3QgPSBQeU1lbV9NYWxsb2MobGVuICogKHNpemVvZiAqZGVzdCkpOworICAgIGlmIChkZXN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImVsZW1lbnRzIG9mICVzIG11c3QgYmUgaW50ZWdlcnMiLAorICAgICAgICAgICAgICAgIGlzX3NoYXBlID8gInNoYXBlIiA6ICJzdHJpZGVzIik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNfc2hhcGUgJiYgeCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJlbGVtZW50cyBvZiBzaGFwZSBtdXN0IGJlIGludGVnZXJzID49IDAiKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBkZXN0W2ldID0geDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVzdDsKK30KKworc3RhdGljIFB5X3NzaXplX3QgKgorc3RyaWRlc19mcm9tX3NoYXBlKGNvbnN0IG5kYnVmX3QgKm5kYnVmLCBpbnQgZmxhZ3MpCit7CisgICAgY29uc3QgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIFB5X3NzaXplX3QgKnMsIGk7CisKKyAgICBzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzKSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBORF9GT1JUUkFOKSB7CisgICAgICAgIHNbMF0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICAgICAgZm9yIChpID0gMTsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgICAgIHNbaV0gPSBzW2ktMV0gKiBiYXNlLT5zaGFwZVtpLTFdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc1tiYXNlLT5uZGltLTFdID0gYmFzZS0+aXRlbXNpemU7CisgICAgICAgIGZvciAoaSA9IGJhc2UtPm5kaW0tMjsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgICBzW2ldID0gc1tpKzFdICogYmFzZS0+c2hhcGVbaSsxXTsKKyAgICB9CisKKyAgICByZXR1cm4gczsKK30KKworLyogQm91bmRzIGNoZWNrOgorCisgICAgIGxlbiA6PSBjb21wbGV0ZSBsZW5ndGggb2YgYWxsb2NhdGVkIG1lbW9yeQorICAgICBvZmZzZXQgOj0gc3RhcnQgb2YgdGhlIGFycmF5CisKKyAgICAgQSBzaW5nbGUgYXJyYXkgZWxlbWVudCBpcyBpbmRleGVkIGJ5OgorCisgICAgICAgaSA9IGluZGljZXNbMF0gKiBzdHJpZGVzWzBdICsgaW5kaWNlc1sxXSAqIHN0cmlkZXNbMV0gKyAuLi4KKworICAgICBpbWluIGlzIHJlYWNoZWQgd2hlbiBhbGwgaW5kaWNlc1tuXSBjb21iaW5lZCB3aXRoIHBvc2l0aXZlIHN0cmlkZXMgYXJlIDAKKyAgICAgYW5kIGFsbCBpbmRpY2VzIGNvbWJpbmVkIHdpdGggbmVnYXRpdmUgc3RyaWRlcyBhcmUgc2hhcGVbbl0tMSwgd2hpY2ggaXMKKyAgICAgdGhlIG1heGltdW0gaW5kZXggZm9yIHRoZSBudGggZGltZW5zaW9uLgorCisgICAgIGltYXggaXMgcmVhY2hlZCB3aGVuIGFsbCBpbmRpY2VzW25dIGNvbWJpbmVkIHdpdGggbmVnYXRpdmUgc3RyaWRlcyBhcmUgMAorICAgICBhbmQgYWxsIGluZGljZXMgY29tYmluZWQgd2l0aCBwb3NpdGl2ZSBzdHJpZGVzIGFyZSBzaGFwZVtuXS0xLgorKi8KK3N0YXRpYyBpbnQKK3ZlcmlmeV9zdHJ1Y3R1cmUoUHlfc3NpemVfdCBsZW4sIFB5X3NzaXplX3QgaXRlbXNpemUsIFB5X3NzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgY29uc3QgUHlfc3NpemVfdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZGltKQoreworICAgIFB5X3NzaXplX3QgaW1pbiwgaW1heDsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBhc3NlcnQobmRpbSA+PSAwKTsKKworICAgIGlmIChuZGltID09IDAgJiYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0K2l0ZW1zaXplID4gbGVuKSkKKyAgICAgICAgZ290byBpbnZhbGlkX2NvbWJpbmF0aW9uOworCisgICAgZm9yIChuID0gMDsgbiA8IG5kaW07IG4rKykKKyAgICAgICAgaWYgKHN0cmlkZXNbbl0gJSBpdGVtc2l6ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic3RyaWRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgaXRlbXNpemUiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgZm9yIChuID0gMDsgbiA8IG5kaW07IG4rKykKKyAgICAgICAgaWYgKHNoYXBlW25dID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgIGltaW4gPSBpbWF4ID0gMDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgbmRpbTsgbisrKQorICAgICAgICBpZiAoc3RyaWRlc1tuXSA8PSAwKQorICAgICAgICAgICAgaW1pbiArPSAoc2hhcGVbbl0tMSkgKiBzdHJpZGVzW25dOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbWF4ICs9IChzaGFwZVtuXS0xKSAqIHN0cmlkZXNbbl07CisKKyAgICBpZiAoaW1pbiArIG9mZnNldCA8IDAgfHwgaW1heCArIG9mZnNldCArIGl0ZW1zaXplID4gbGVuKQorICAgICAgICBnb3RvIGludmFsaWRfY29tYmluYXRpb247CisKKyAgICByZXR1cm4gMDsKKworCitpbnZhbGlkX2NvbWJpbmF0aW9uOgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAiaW52YWxpZCBjb21iaW5hdGlvbiBvZiBidWZmZXIsIHNoYXBlIGFuZCBzdHJpZGVzIik7CisgICAgcmV0dXJuIC0xOworfQorCisvKgorICAgQ29udmVydCBhIE51bVB5LXN0eWxlIGFycmF5IHRvIGFuIGFycmF5IHVzaW5nIHN1Ym9mZnNldHMgdG8gc3RyaWRlIGluCisgICB0aGUgZmlyc3QgZGltZW5zaW9uLiBSZXF1aXJlbWVudHM6IG5kaW0gPiAwLgorCisgICBDb250aWd1b3VzIGV4YW1wbGUKKyAgID09PT09PT09PT09PT09PT09PQorCisgICAgIElucHV0OgorICAgICAtLS0tLS0KKyAgICAgICBzaGFwZSAgICAgID0gezIsIDIsIDN9OworICAgICAgIHN0cmlkZXMgICAgPSB7NiwgMywgMX07CisgICAgICAgc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgZGF0YSAgICAgICA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworICAgICAgIGJ1ZiAgICAgICAgPSAmZGF0YVswXQorCisgICAgIE91dHB1dDoKKyAgICAgLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHtzaXplb2YoY2hhciAqKSwgMywgMX07CisgICAgICAgc3Vib2Zmc2V0cyA9IHswLCAtMSwgLTF9OworICAgICAgIGRhdGEgICAgICAgPSB7cDEsIHAyLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICBeICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICBgLS0tJy0tLScgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0nCisgICAgICAgYnVmICAgICAgICA9ICZkYXRhWzBdCisKKyAgICAgU28sIGluIHRoZSBleGFtcGxlIHRoZSBpbnB1dCByZXNlbWJsZXMgdGhlIHRocmVlLWRpbWVuc2lvbmFsIGFycmF5CisgICAgIGNoYXIgdlsyXVsyXVszXSwgd2hpbGUgdGhlIG91dHB1dCByZXNlbWJsZXMgYW4gYXJyYXkgb2YgdHdvIHBvaW50ZXJzCisgICAgIHRvIHR3by1kaW1lbnNpb25hbCBhcnJheXM6IGNoYXIgKCp2WzJdKVsyXVszXS4KKworCisgICBOb24tY29udGlndW91cyBleGFtcGxlOgorICAgPT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICBJbnB1dCAod2l0aCBvZmZzZXQgYW5kIG5lZ2F0aXZlIHN0cmlkZXMpOgorICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHstNiwgMywgLTF9OworICAgICAgIG9mZnNldCAgICAgPSA4CisgICAgICAgc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgZGF0YSAgICAgICA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworCisgICAgIE91dHB1dDoKKyAgICAgLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHstc2l6ZW9mKGNoYXIgKiksIDMsIC0xfTsKKyAgICAgICBzdWJvZmZzZXRzID0gezIsIC0xLCAtMX07CisgICAgICAgbmV3ZGF0YSAgICA9IHtwMSwgcDIsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgIF4gICAgIF4gICAgICAgICAgIF4gICAgIF4KKyAgICAgICAgICAgICAgICAgICAgIGAtLS0nLS0tJyAgICAgfCAgICAgICAgICAgfCAgICAgYC0gcDIrc3Vib2Zmc2V0c1swXQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBgLS0tLS0tLS0tLS18LS0tIHAxK3N1Ym9mZnNldHNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tJworICAgICAgIGJ1ZiAgICAgICAgPSAmbmV3ZGF0YVsxXSAgIyBzdHJpZGluZyBiYWNrd2FyZHMgb3ZlciB0aGUgcG9pbnRlcnMuCisKKyAgICAgc3Vib2Zmc2V0c1swXSBpcyB0aGUgc2FtZSBhcyB0aGUgb2Zmc2V0IHRoYXQgb25lIHdvdWxkIHNwZWNpZnkgaWYKKyAgICAgdGhlIHR3byB7MiwgM30gc3ViYXJyYXlzIHdlcmUgY3JlYXRlZCBkaXJlY3RseSwgaGVuY2UgdGhlIG5hbWUuCisqLworc3RhdGljIGludAoraW5pdF9zdWJvZmZzZXRzKG5kYnVmX3QgKm5kYnVmKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdGVwOworICAgIFB5X3NzaXplX3QgaW1pbiwgc3Vib2Zmc2V0MDsKKyAgICBQeV9zc2l6ZV90IGFkZHNpemU7CisgICAgUHlfc3NpemVfdCBuOworICAgIGNoYXIgKmRhdGE7CisKKyAgICBhc3NlcnQoYmFzZS0+bmRpbSA+IDApOworICAgIGFzc2VydChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwpOworCisgICAgLyogQWxsb2NhdGUgbmV3IGRhdGEgd2l0aCBhZGRpdGlvbmFsIHNwYWNlIGZvciBzaGFwZVswXSBwb2ludGVycy4gKi8KKyAgICBhZGRzaXplID0gYmFzZS0+c2hhcGVbMF0gKiAoc2l6ZW9mIChjaGFyICopKTsKKworICAgIC8qIEFsaWduIGFycmF5IHN0YXJ0IHRvIGEgbXVsdGlwbGUgb2YgOC4gKi8KKyAgICBhZGRzaXplID0gOCAqICgoYWRkc2l6ZSArIDcpIC8gOCk7CisKKyAgICBkYXRhID0gUHlNZW1fTWFsbG9jKG5kYnVmLT5sZW4gKyBhZGRzaXplKTsKKyAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtZW1jcHkoZGF0YSArIGFkZHNpemUsIG5kYnVmLT5kYXRhLCBuZGJ1Zi0+bGVuKTsKKworICAgIFB5TWVtX0ZyZWUobmRidWYtPmRhdGEpOworICAgIG5kYnVmLT5kYXRhID0gZGF0YTsKKyAgICBuZGJ1Zi0+bGVuICs9IGFkZHNpemU7CisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGE7CisKKyAgICAvKiBpbWluOiBtaW5pbXVtIGluZGV4IG9mIHRoZSBpbnB1dCBhcnJheSByZWxhdGl2ZSB0byBuZGJ1Zi0+b2Zmc2V0LgorICAgICAgIHN1Ym9mZnNldDA6IG9mZnNldCBmb3IgZWFjaCBzdWItYXJyYXkgb2YgdGhlIG91dHB1dC4gVGhpcyBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICBzYW1lIGFzIGNhbGN1bGF0aW5nIC1pbWluJyBmb3IgYSBzdWItYXJyYXkgb2YgbmRpbS0xLiAqLworICAgIGltaW4gPSBzdWJvZmZzZXQwID0gMDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgYmFzZS0+bmRpbTsgbisrKSB7CisgICAgICAgIGlmIChiYXNlLT5zaGFwZVtuXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChiYXNlLT5zdHJpZGVzW25dIDw9IDApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgeCA9IChiYXNlLT5zaGFwZVtuXS0xKSAqIGJhc2UtPnN0cmlkZXNbbl07CisgICAgICAgICAgICBpbWluICs9IHg7CisgICAgICAgICAgICBzdWJvZmZzZXQwICs9IChuID49IDEpID8gLXggOiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN1Yi1hcnJheXMuICovCisgICAgc3RhcnQgPSBhZGRzaXplICsgbmRidWYtPm9mZnNldCArIGltaW47CisgICAgc3RlcCA9IGJhc2UtPnN0cmlkZXNbMF0gPCAwID8gLWJhc2UtPnN0cmlkZXNbMF0gOiBiYXNlLT5zdHJpZGVzWzBdOworCisgICAgZm9yIChuID0gMDsgbiA8IGJhc2UtPnNoYXBlWzBdOyBuKyspCisgICAgICAgICgoY2hhciAqKiliYXNlLT5idWYpW25dID0gKGNoYXIgKiliYXNlLT5idWYgKyBzdGFydCArIG4qc3RlcDsKKworICAgIC8qIEluaXRpYWxpemUgc3Vib2Zmc2V0cy4gKi8KKyAgICBiYXNlLT5zdWJvZmZzZXRzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpiYXNlLT5zdWJvZmZzZXRzKSk7CisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGJhc2UtPnN1Ym9mZnNldHNbMF0gPSBzdWJvZmZzZXQwOworICAgIGZvciAobiA9IDE7IG4gPCBiYXNlLT5uZGltOyBuKyspCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbbl0gPSAtMTsKKworICAgIC8qIEFkanVzdCBzdHJpZGVzIGZvciB0aGUgZmlyc3QgKHplcm90aCkgZGltZW5zaW9uLiAqLworICAgIGlmIChiYXNlLT5zdHJpZGVzWzBdID49IDApIHsKKyAgICAgICAgYmFzZS0+c3RyaWRlc1swXSA9IHNpemVvZihjaGFyICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogU3RyaWRpbmcgYmFja3dhcmRzLiAqLworICAgICAgICBiYXNlLT5zdHJpZGVzWzBdID0gLShQeV9zc2l6ZV90KXNpemVvZihjaGFyICopOworICAgICAgICBpZiAoYmFzZS0+c2hhcGVbMF0gPiAwKQorICAgICAgICAgICAgYmFzZS0+YnVmID0gKGNoYXIgKiliYXNlLT5idWYgKyAoYmFzZS0+c2hhcGVbMF0tMSkgKiBzaXplb2YoY2hhciAqKTsKKyAgICB9CisKKyAgICBuZGJ1Zi0+ZmxhZ3MgJj0gfihORF9DfE5EX0ZPUlRSQU4pOworICAgIG5kYnVmLT5vZmZzZXQgPSAwOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9sZW4oUHlfYnVmZmVyICpiYXNlKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGJhc2UtPmxlbiA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgYmFzZS0+bGVuICo9IGJhc2UtPnNoYXBlW2ldOworICAgIGJhc2UtPmxlbiAqPSBiYXNlLT5pdGVtc2l6ZTsKK30KKworc3RhdGljIGludAoraW5pdF9zdHJ1Y3R1cmUobmRidWZfdCAqbmRidWYsIFB5T2JqZWN0ICpzaGFwZSwgUHlPYmplY3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5kaW0pCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworCisgICAgYmFzZS0+bmRpbSA9IChpbnQpbmRpbTsKKyAgICBpZiAobmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChuZGJ1Zi0+ZmxhZ3MgJiBORF9QSUwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kaW0gPSAwIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggTkRfUElMIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IChORF9TQ0FMQVJ8TkRfQ3xORF9GT1JUUkFOKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogc2hhcGUgKi8KKyAgICBiYXNlLT5zaGFwZSA9IHNlcV9hc19zc2l6ZV9hcnJheShzaGFwZSwgbmRpbSwgMSk7CisgICAgaWYgKGJhc2UtPnNoYXBlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHN0cmlkZXMgKi8KKyAgICBpZiAoc3RyaWRlcykgeworICAgICAgICBiYXNlLT5zdHJpZGVzID0gc2VxX2FzX3NzaXplX2FycmF5KHN0cmlkZXMsIG5kaW0sIDApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYmFzZS0+c3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGJ1ZiwgbmRidWYtPmZsYWdzKTsKKyAgICB9CisgICAgaWYgKGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh2ZXJpZnlfc3RydWN0dXJlKGJhc2UtPmxlbiwgYmFzZS0+aXRlbXNpemUsIG5kYnVmLT5vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS0+c2hhcGUsIGJhc2UtPnN0cmlkZXMsIG5kaW0pIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogYnVmICovCisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGEgKyBuZGJ1Zi0+b2Zmc2V0OworCisgICAgLyogbGVuICovCisgICAgaW5pdF9sZW4oYmFzZSk7CisKKyAgICAvKiBuZGJ1Zi0+ZmxhZ3MgKi8KKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKGJhc2UsICdDJykpCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9DOworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYmFzZSwgJ0YnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0ZPUlRSQU47CisKKworICAgIC8qIGNvbnZlcnQgbnVtcHkgYXJyYXkgdG8gc3Vib2Zmc2V0IHJlcHJlc2VudGF0aW9uICovCisgICAgaWYgKG5kYnVmLT5mbGFncyAmIE5EX1BJTCkgeworICAgICAgICAvKiBtb2RpZmllcyBiYXNlLT5idWYsIGJhc2UtPnN0cmlkZXMgYW5kIGJhc2UtPnN1Ym9mZnNldHMgKiovCisgICAgICAgIHJldHVybiBpbml0X3N1Ym9mZnNldHMobmRidWYpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgbmRidWZfdCAqCitpbml0X25kYnVmKFB5T2JqZWN0ICppdGVtcywgUHlPYmplY3QgKnNoYXBlLCBQeU9iamVjdCAqc3RyaWRlcywKKyAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQsIFB5T2JqZWN0ICpmb3JtYXQsIGludCBmbGFncykKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBQeV9zc2l6ZV90IG5kaW07CisgICAgUHlfc3NpemVfdCBuaXRlbXM7CisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsKKworICAgIC8qIG5kaW0gPSBsZW4oc2hhcGUpICovCisgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzaGFwZSkKKyAgICBuZGltID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNoYXBlKTsKKyAgICBpZiAobmRpbSA+IE5EX01BWF9ORElNKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm5kaW0gbXVzdCBub3QgZXhjZWVkICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBsZW4oc3RyaWRlcykgPSBsZW4oc2hhcGUpICovCisgICAgaWYgKHN0cmlkZXMpIHsKKyAgICAgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzdHJpZGVzKQorICAgICAgICBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHN0cmlkZXMpID09IDApCisgICAgICAgICAgICBzdHJpZGVzID0gTlVMTDsKKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBORF9GT1JUUkFOKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJORF9GT1JUUkFOIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggc3RyaWRlcyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHN0cmlkZXMpICE9IG5kaW0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJsZW4oc2hhcGUpICE9IGxlbihzdHJpZGVzKSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBpdGVtc2l6ZSAqLworICAgIGl0ZW1zaXplID0gZ2V0X2l0ZW1zaXplKGZvcm1hdCk7CisgICAgaWYgKGl0ZW1zaXplIDw9IDApIHsKKyAgICAgICAgaWYgKGl0ZW1zaXplID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpdGVtc2l6ZSBtdXN0IG5vdCBiZSB6ZXJvIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogY29udmVydCBzY2FsYXIgdG8gbGlzdCAqLworICAgIGlmIChuZGltID09IDApIHsKKyAgICAgICAgaXRlbXMgPSBQeV9CdWlsZFZhbHVlKCIoTykiLCBpdGVtcyk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBDSEVDS19MSVNUX09SX1RVUExFKGl0ZW1zKQorICAgICAgICBQeV9JTkNSRUYoaXRlbXMpOworICAgIH0KKworICAgIC8qIG51bWJlciBvZiBpdGVtcyAqLworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShpdGVtcyk7CisgICAgaWYgKG5pdGVtcyA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImluaXRpYWxpemVyIGxpc3Qgb3IgdHVwbGUgbXVzdCBub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWYgPSBuZGJ1Zl9uZXcobml0ZW1zLCBpdGVtc2l6ZSwgb2Zmc2V0LCBmbGFncyk7CisgICAgaWYgKG5kYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisKKyAgICBpZiAoaW5pdF9zaW1wbGUobmRidWYsIGl0ZW1zLCBmb3JtYXQsIGl0ZW1zaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKGluaXRfc3RydWN0dXJlKG5kYnVmLCBzaGFwZSwgc3RyaWRlcywgbmRpbSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICByZXR1cm4gbmRidWY7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgbmRidWZfZnJlZShuZGJ1Zik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIGluaXRpYWxpemUgYW5kIHB1c2ggYSBuZXcgYmFzZSBvbnRvIHRoZSBsaW5rZWQgbGlzdCAqLworc3RhdGljIGludAorbmRhcnJheV9wdXNoX2Jhc2UoTkRBcnJheU9iamVjdCAqbmQsIFB5T2JqZWN0ICppdGVtcywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzaGFwZSwgUHlPYmplY3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCwgUHlPYmplY3QgKmZvcm1hdCwgaW50IGZsYWdzKQoreworICAgIG5kYnVmX3QgKm5kYnVmOworCisgICAgbmRidWYgPSBpbml0X25kYnVmKGl0ZW1zLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0LCBmb3JtYXQsIGZsYWdzKTsKKyAgICBpZiAobmRidWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbmRidWZfcHVzaChuZCwgbmRidWYpOworICAgIHJldHVybiAwOworfQorCisjZGVmaW5lIFB5QlVGX1VOVVNFRCAweDEwMDAwCitzdGF0aWMgaW50CituZGFycmF5X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAgICJvYmoiLCAic2hhcGUiLCAic3RyaWRlcyIsICJvZmZzZXQiLCAiZm9ybWF0IiwgImZsYWdzIiwgImdldGJ1ZiIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsgIC8qIGluaXRpYWxpemVyOiBzY2FsYXIsIGxpc3QsIHR1cGxlIG9yIGJhc2Ugb2JqZWN0ICovCisgICAgUHlPYmplY3QgKnNoYXBlID0gTlVMTDsgICAvKiBzaXplIG9mIGVhY2ggZGltZW5zaW9uICovCisgICAgUHlPYmplY3QgKnN0cmlkZXMgPSBOVUxMOyAvKiBudW1iZXIgb2YgYnl0ZXMgdG8gdGhlIG5leHQgZWx0IGluIGVhY2ggZGltICovCisgICAgUHlfc3NpemVfdCBvZmZzZXQgPSAwOyAgICAgICAgICAgIC8qIGJ1ZmZlciBvZmZzZXQgKi8KKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gc2ltcGxlX2Zvcm1hdDsgLyogc3RydWN0IG1vZHVsZSBzcGVjaWZpZXI6ICJCIiAqLworICAgIGludCBmbGFncyA9IE5EX0RFRkFVTFQ7ICAgICAgICAgICAvKiBiYXNlIGJ1ZmZlciBhbmQgbmRhcnJheSBmbGFncyAqLworCisgICAgaW50IGdldGJ1ZiA9IFB5QlVGX1VOVVNFRDsgLyogcmUtZXhwb3J0ZXI6IGdldGJ1ZmZlciByZXF1ZXN0IGZsYWdzICovCisKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9Pbk9paSIsIGt3bGlzdCwKKyAgICAgICAgICAgICZ2LCAmc2hhcGUsICZzdHJpZGVzLCAmb2Zmc2V0LCAmZm9ybWF0LCAmZmxhZ3MsICZnZXRidWYpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBOREFycmF5T2JqZWN0IGlzIHJlLWV4cG9ydGVyICovCisgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHYpICYmIHNoYXBlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0cmlkZXMgfHwgb2Zmc2V0IHx8IGZvcm1hdCAhPSBzaW1wbGVfZm9ybWF0IHx8CisgICAgICAgICAgICAhKGZsYWdzID09IE5EX0RFRkFVTFQgfHwgZmxhZ3MgPT0gTkRfUkVESVJFQ1QpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgImNvbnN0cnVjdGlvbiBmcm9tIGV4cG9ydGVyIG9iamVjdCBvbmx5IHRha2VzICdvYmonLCAnZ2V0YnVmJyAiCisgICAgICAgICAgICAgICAiYW5kICdmbGFncycgYXJndW1lbnRzIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBnZXRidWYgPSAoZ2V0YnVmID09IFB5QlVGX1VOVVNFRCkgPyBQeUJVRl9GVUxMX1JPIDogZ2V0YnVmOworCisgICAgICAgIGlmIChuZGFycmF5X2luaXRfc3RhdGljYnVmKHYsIG5kLCBnZXRidWYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBpbml0X2ZsYWdzKG5kLT5oZWFkKTsKKyAgICAgICAgbmQtPmhlYWQtPmZsYWdzIHw9IGZsYWdzOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIE5EQXJyYXlPYmplY3QgaXMgdGhlIG9yaWdpbmFsIGJhc2Ugb2JqZWN0LiAqLworICAgIGlmIChnZXRidWYgIT0gUHlCVUZfVU5VU0VEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZ2V0YnVmIGFyZ3VtZW50IG9ubHkgdmFsaWQgZm9yIGNvbnN0cnVjdGlvbiBmcm9tIGV4cG9ydGVyICIKKyAgICAgICAgICAgICJvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc2hhcGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgInNoYXBlIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQgd2hlbiBjb25zdHJ1Y3RpbmcgZnJvbSAiCisgICAgICAgICAgICAibGlzdCwgdHVwbGUgb3Igc2NhbGFyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBORF9WQVJFWFBPUlQpIHsKKyAgICAgICAgbmQtPmZsYWdzIHw9IE5EX1ZBUkVYUE9SVDsKKyAgICAgICAgZmxhZ3MgJj0gfk5EX1ZBUkVYUE9SVDsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGFuZCBwdXNoIHRoZSBmaXJzdCBiYXNlIGJ1ZmZlciBvbnRvIHRoZSBsaW5rZWQgbGlzdC4gKi8KKyAgICByZXR1cm4gbmRhcnJheV9wdXNoX2Jhc2UobmQsIHYsIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpOworfQorCisvKiBQdXNoIGFuIGFkZGl0aW9uYWwgYmFzZSBvbnRvIHRoZSBsaW5rZWQgbGlzdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3B1c2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAgICJpdGVtcyIsICJzaGFwZSIsICJzdHJpZGVzIiwgIm9mZnNldCIsICJmb3JtYXQiLCAiZmxhZ3MiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqaXRlbXMgPSBOVUxMOyAgIC8qIGluaXRpYWxpemVyOiBzY2FsYXIsIGxpc3Qgb3IgdHVwbGUgKi8KKyAgICBQeU9iamVjdCAqc2hhcGUgPSBOVUxMOyAgIC8qIHNpemUgb2YgZWFjaCBkaW1lbnNpb24gKi8KKyAgICBQeU9iamVjdCAqc3RyaWRlcyA9IE5VTEw7IC8qIG51bWJlciBvZiBieXRlcyB0byB0aGUgbmV4dCBlbHQgaW4gZWFjaCBkaW0gKi8KKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gc2ltcGxlX2Zvcm1hdDsgIC8qIHN0cnVjdCBtb2R1bGUgc3BlY2lmaWVyOiAiQiIgKi8KKyAgICBQeV9zc2l6ZV90IG9mZnNldCA9IDA7ICAgICAgICAgICAgIC8qIGJ1ZmZlciBvZmZzZXQgKi8KKyAgICBpbnQgZmxhZ3MgPSBORF9ERUZBVUxUOyAgICAgICAgICAgIC8qIGJhc2UgYnVmZmVyIGZsYWdzICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT098T25PaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICZpdGVtcywgJnNoYXBlLCAmc3RyaWRlcywgJm9mZnNldCwgJmZvcm1hdCwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmxhZ3MgJiBORF9WQVJFWFBPUlQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiTkRfVkFSRVhQT1JUIGZsYWcgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgb2JqZWN0IGNyZWF0aW9uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoTkRfSVNfQ09OU1VNRVIobmQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJzdHJ1Y3R1cmUgb2YgcmUtZXhwb3J0aW5nIG9iamVjdCBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghKG5kLT5mbGFncyZORF9WQVJFWFBPUlQpICYmIG5kLT5oZWFkLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGNoYW5nZSBzdHJ1Y3R1cmU6ICV6ZCBleHBvcnRlZCBidWZmZXIlcyIsCisgICAgICAgICAgICBuZC0+aGVhZC0+ZXhwb3J0cywgbmQtPmhlYWQtPmV4cG9ydHM9PTEgPyAiIiA6ICJzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChuZGFycmF5X3B1c2hfYmFzZShuZCwgaXRlbXMsIHNoYXBlLCBzdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIFBvcCBhIGJhc2UgZnJvbSB0aGUgbGlua2VkIGxpc3QgKGlmIHBvc3NpYmxlKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3BvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGlmIChORF9JU19DT05TVU1FUihuZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInN0cnVjdHVyZSBvZiByZS1leHBvcnRpbmcgb2JqZWN0IGlzIGltbXV0YWJsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG5kLT5oZWFkLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGNoYW5nZSBzdHJ1Y3R1cmU6ICV6ZCBleHBvcnRlZCBidWZmZXIlcyIsCisgICAgICAgICAgICBuZC0+aGVhZC0+ZXhwb3J0cywgbmQtPmhlYWQtPmV4cG9ydHM9PTEgPyAiIiA6ICJzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobmQtPmhlYWQtPm5leHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibGlzdCBvbmx5IGhhcyBhIHNpbmdsZSBiYXNlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmX3BvcChuZCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorbmRhcnJheV9nZXRidWYoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWYgPSBzZWxmLT5oZWFkOworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpbnQgYmFzZWZsYWdzID0gbmRidWYtPmZsYWdzOworCisgICAgLyogcmVkaXJlY3QgbW9kZSAqLworICAgIGlmIChiYXNlLT5vYmogIT0gTlVMTCAmJiAoYmFzZWZsYWdzJk5EX1JFRElSRUNUKSkgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UtPm9iaiwgdmlldywgZmxhZ3MpOworICAgIH0KKworICAgIC8qIHN0YXJ0IHdpdGggY29tcGxldGUgaW5mb3JtYXRpb24gKi8KKyAgICAqdmlldyA9ICpiYXNlOworICAgIHZpZXctPm9iaiA9IE5VTEw7CisKKyAgICAvKiByZWNvbnN0cnVjdCBmb3JtYXQgKi8KKyAgICBpZiAodmlldy0+Zm9ybWF0ID09IE5VTEwpCisgICAgICAgIHZpZXctPmZvcm1hdCA9ICJCIjsKKworICAgIGlmIChiYXNlLT5uZGltICE9IDAgJiYKKyAgICAgICAgKChSRVFfU0hBUEUoZmxhZ3MpICYmIGJhc2UtPnNoYXBlID09IE5VTEwpIHx8CisgICAgICAgICAoUkVRX1NUUklERVMoZmxhZ3MpICYmIGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkpKSB7CisgICAgICAgIC8qIFRoZSBuZGFycmF5IGlzIGEgcmUtZXhwb3J0ZXIgdGhhdCBoYXMgYmVlbiBjcmVhdGVkIHdpdGhvdXQgZnVsbAorICAgICAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UgdGhlCisgICAgICAgICAgIG5kYXJyYXkgaXMgbm90IGEgUEVQLTMxMTggY29tcGxpYW50IGJ1ZmZlciBwcm92aWRlci4gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZm9ybWF0LCBzaGFwZSBvciBzdHJpZGVzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoYmFzZWZsYWdzICYgTkRfR0VUQlVGX0ZBSUwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIk5EX0dFVEJVRl9GQUlMOiBmb3JjZWQgdGVzdCBleGNlcHRpb24iKTsKKyAgICAgICAgaWYgKGJhc2VmbGFncyAmIE5EX0dFVEJVRl9VTkRFRklORUQpCisgICAgICAgICAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKikweDE7IC8qIHdyb25nIGJ1dCBwZXJtaXR0ZWQgaW4gPD0gMy4yICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUkVRX1dSSVRBQkxFKGZsYWdzKSAmJiBiYXNlLT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9GT1JNQVQoZmxhZ3MpKSB7CisgICAgICAgIC8qIE5VTEwgaW5kaWNhdGVzIHRoYXQgdGhlIGJ1ZmZlcidzIGRhdGEgdHlwZSBoYXMgYmVlbiBjYXN0IHRvICdCJy4KKyAgICAgICAgICAgdmlldy0+aXRlbXNpemUgaXMgdGhlIF9wcmV2aW91c18gaXRlbXNpemUuIElmIHNoYXBlIGlzIHByZXNlbnQsCisgICAgICAgICAgIHRoZSBlcXVhbGl0eSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIHN0aWxsIGhvbGRzIGF0IHRoaXMKKyAgICAgICAgICAgcG9pbnQuIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkCisgICAgICAgICAgIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUkVRX0NfQ09OVElHVU9VUyhmbGFncykgJiYgIU5EX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0ZfQ09OVElHVU9VUyhmbGFncykgJiYgIU5EX0ZPUlRSQU5fQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBGb3J0cmFuIGNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0FOWV9DT05USUdVT1VTKGZsYWdzKSAmJiAhTkRfQU5ZX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3QgY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0lORElSRUNUKGZsYWdzKSAmJiAoYmFzZWZsYWdzICYgTkRfUElMKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgd2l0aG91dCBzdWJvZmZzZXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfU1RSSURFUyhmbGFncykpIHsKKyAgICAgICAgaWYgKCFORF9DX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB2aWV3LT5zdHJpZGVzID0gTlVMTDsKKyAgICB9CisgICAgaWYgKCFSRVFfU0hBUEUoZmxhZ3MpKSB7CisgICAgICAgIC8qIFB5QlVGX1NJTVBMRSBvciBQeUJVRl9XUklUQUJMRTogYXQgdGhpcyBwb2ludCBidWYgaXMgQy1jb250aWd1b3VzLAorICAgICAgICAgICBzbyBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YS4gKi8KKyAgICAgICAgaWYgKHZpZXctPmZvcm1hdCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBQeUJVRl9TSU1QTEV8UHlCVUZfRk9STUFUIGFuZCBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQgZG8KKyAgICAgICAgICAgICAgIG5vdCBtYWtlIHNlbnNlLiAqLworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJuZGFycmF5OiBjYW5ub3QgY2FzdCB0byB1bnNpZ25lZCBieXRlcyBpZiB0aGUgZm9ybWF0IGZsYWcgIgorICAgICAgICAgICAgICAgICJpcyBwcmVzZW50Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBhbmQgY2FsY3NpemUoZm9ybWF0KSA9IGl0ZW1zaXplCisgICAgICAgICAgIGRvIF9ub3RfIGhvbGQgZnJvbSBoZXJlIG9uISAqLworICAgICAgICB2aWV3LT5uZGltID0gMTsKKyAgICAgICAgdmlldy0+c2hhcGUgPSBOVUxMOworICAgIH0KKworICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgc2VsZi0+aGVhZC0+ZXhwb3J0cysrOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK25kYXJyYXlfcmVsZWFzZWJ1ZihOREFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcpCit7CisgICAgaWYgKCFORF9JU19DT05TVU1FUihzZWxmKSkgeworICAgICAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHZpZXctPmludGVybmFsOworICAgICAgICBpZiAoLS1uZGJ1Zi0+ZXhwb3J0cyA9PSAwICYmIG5kYnVmICE9IHNlbGYtPmhlYWQpCisgICAgICAgICAgICBuZGJ1Zl9kZWxldGUoc2VsZiwgbmRidWYpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlCdWZmZXJQcm9jcyBuZGFycmF5X2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYyluZGFycmF5X2dldGJ1ZiwgICAgICAgIC8qIGJmX2dldGJ1ZmZlciAqLworICAgIChyZWxlYXNlYnVmZmVycHJvYyluZGFycmF5X3JlbGVhc2VidWYgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nL3NsaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBjaGFyICoKK3B0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqYmFzZSwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBjaGFyICpwdHI7CisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIGl0ZW1zIGluIHRoZSBmaXJzdCBkaW1lbnNpb24gKi8KKworICAgIGlmIChiYXNlLT5zaGFwZSkKKyAgICAgICAgbml0ZW1zID0gYmFzZS0+c2hhcGVbMF07CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChiYXNlLT5uZGltID09IDEgJiYgU0lNUExFX0ZPUk1BVChiYXNlLT5mb3JtYXQpKTsKKyAgICAgICAgbml0ZW1zID0gYmFzZS0+bGVuOworICAgIH0KKworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgaW5kZXggKz0gbml0ZW1zOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG5pdGVtcykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gKGNoYXIgKiliYXNlLT5idWY7CisKKyAgICBpZiAoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKQorICAgICAgICAgcHRyICs9IGJhc2UtPml0ZW1zaXplICogaW5kZXg7CisgICAgZWxzZQorICAgICAgICAgcHRyICs9IGJhc2UtPnN0cmlkZXNbMF0gKiBpbmRleDsKKworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCBiYXNlLT5zdWJvZmZzZXRzKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2l0ZW0oTkRBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGNoYXIgKnB0cjsKKworICAgIGlmIChiYXNlLT5uZGltID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgaW5kZXhpbmcgb2Ygc2NhbGFyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHB0ciA9IHB0cl9mcm9tX2luZGV4KGJhc2UsIGluZGV4KTsKKyAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJhc2UtPm5kaW0gPT0gMSkgeworICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZShwdHIsIGJhc2UtPmZvcm1hdCwgYmFzZS0+aXRlbXNpemUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgTkRBcnJheU9iamVjdCAqbmQ7CisgICAgICAgIFB5X2J1ZmZlciAqc3VidmlldzsKKworICAgICAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9uZXcoJk5EQXJyYXlfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmIChuZCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKG5kYXJyYXlfaW5pdF9zdGF0aWNidWYoKFB5T2JqZWN0ICopc2VsZiwgbmQsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgc3VidmlldyA9ICZuZC0+c3RhdGljYnVmLmJhc2U7CisKKyAgICAgICAgc3Vidmlldy0+YnVmID0gcHRyOworICAgICAgICBzdWJ2aWV3LT5sZW4gLz0gc3Vidmlldy0+c2hhcGVbMF07CisKKyAgICAgICAgc3Vidmlldy0+bmRpbS0tOworICAgICAgICBzdWJ2aWV3LT5zaGFwZSsrOworICAgICAgICBpZiAoc3Vidmlldy0+c3RyaWRlcykgc3Vidmlldy0+c3RyaWRlcysrOworICAgICAgICBpZiAoc3Vidmlldy0+c3Vib2Zmc2V0cykgc3Vidmlldy0+c3Vib2Zmc2V0cysrOworCisgICAgICAgIGluaXRfZmxhZ3MoJm5kLT5zdGF0aWNidWYpOworCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKKyAgICB9Cit9CisKKy8qCisgIEZvciBlYWNoIGRpbWVuc2lvbiwgd2UgZ2V0IHZhbGlkIChzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGgpIHF1YWRydXBsZXMKKyAgZnJvbSBQeVNsaWNlX0dldEluZGljZXNFeCgpLgorCisgIFNsaWNpbmcgTnVtUHkgYXJyYXlzCisgID09PT09PT09PT09PT09PT09PT09CisKKyAgICBBIHBvaW50ZXIgdG8gYW4gZWxlbWVudCBpbiBhIE51bVB5IGFycmF5IGlzIGRlZmluZWQgYnk6CisKKyAgICAgIHB0ciA9IChjaGFyICopYnVmICsgaW5kaWNlc1swXSAqIHN0cmlkZXNbMF0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gKworICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW25kaW0tMV0gKiBzdHJpZGVzW25kaW0tMV0KKworICAgIEFkanVzdCBidWY6CisgICAgLS0tLS0tLS0tLS0KKyAgICAgIEFkZGluZyBzdGFydFtuXSBmb3IgZWFjaCBkaW1lbnNpb24gZWZmZWN0aXZlbHkgYWRkcyB0aGUgY29uc3RhbnQ6CisKKyAgICAgICAgYyA9IHN0YXJ0WzBdICogc3RyaWRlc1swXSArIC4uLiArIHN0YXJ0W25kaW0tMV0gKiBzdHJpZGVzW25kaW0tMV0KKworICAgICAgVGhlcmVmb3JlIGluaXRfc2xpY2UoKSBhZGRzIGFsbCBzdGFydFtuXSBkaXJlY3RseSB0byBidWYuCisKKyAgICBBZGp1c3Qgc2hhcGU6CisgICAgLS0tLS0tLS0tLS0tLQorICAgICAgT2J2aW91c2x5IHNoYXBlW25dID0gc2xpY2VsZW5ndGhbbl0KKworICAgIEFkanVzdCBzdHJpZGVzOgorICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgSW4gdGhlIG9yaWdpbmFsIGFycmF5LCB0aGUgbmV4dCBlbGVtZW50IGluIGEgZGltZW5zaW9uIGlzIHJlYWNoZWQKKyAgICAgIGJ5IGFkZGluZyBzdHJpZGVzW25dIHRvIHRoZSBwb2ludGVyLiBJbiB0aGUgc2xpY2VkIGFycmF5LCBlbGVtZW50cworICAgICAgbWF5IGJlIHNraXBwZWQsIHNvIHRoZSBuZXh0IGVsZW1lbnQgaXMgcmVhY2hlZCBieSBhZGRpbmc6CisKKyAgICAgICAgc3RyaWRlc1tuXSAqIHN0ZXBbbl0KKworICBTbGljaW5nIFBJTCBhcnJheXMKKyAgPT09PT09PT09PT09PT09PT09CisKKyAgICBMYXlvdXQ6CisgICAgLS0tLS0tLQorICAgICAgSW4gdGhlIGZpcnN0ICh6ZXJvdGgpIGRpbWVuc2lvbiwgUElMIGFycmF5cyBoYXZlIGFuIGFycmF5IG9mIHBvaW50ZXJzCisgICAgICB0byBzdWItYXJyYXlzIG9mIG5kaW0tMS4gU3RyaWRpbmcgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiBpcyBkb25lIGJ5CisgICAgICBnZXR0aW5nIHRoZSBpbmRleCBvZiB0aGUgbnRoIHBvaW50ZXIsIGRlcmVmZXJlbmNlIGl0IGFuZCB0aGVuIGFkZCBhCisgICAgICBzdWJvZmZzZXQgdG8gaXQuIFRoZSBhcnJheXMgcG9pbnRlZCB0byBjYW4gYmVzdCBiZSBzZWVuIGEgcmVndWxhcgorICAgICAgTnVtUHkgYXJyYXlzLgorCisgICAgQWRqdXN0IGJ1ZjoKKyAgICAtLS0tLS0tLS0tLQorICAgICAgSW4gdGhlIG9yaWdpbmFsIGFycmF5LCBidWYgcG9pbnRzIHRvIGEgbG9jYXRpb24gKHVzdWFsbHkgdGhlIHN0YXJ0KQorICAgICAgaW4gdGhlIGFycmF5IG9mIHBvaW50ZXJzLiBGb3IgdGhlIHNsaWNlZCBhcnJheSwgc3RhcnRbMF0gY2FuIGJlCisgICAgICBhZGRlZCB0byBidWYgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGZvciBOdW1QeSBhcnJheXMuCisKKyAgICBBZGp1c3Qgc3Vib2Zmc2V0czoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIER1ZSB0byB0aGUgZGVyZWZlcmVuY2luZyBzdGVwIGluIHRoZSBhZGRyZXNzaW5nIHNjaGVtZSwgaXQgaXMgbm90CisgICAgICBwb3NzaWJsZSB0byBhZGp1c3QgYnVmIGZvciBoaWdoZXIgZGltZW5zaW9ucy4gUmVjYWxsIHRoYXQgdGhlCisgICAgICBzdWItYXJyYXlzIHBvaW50ZWQgdG8gYXJlIHJlZ3VsYXIgTnVtUHkgYXJyYXlzLCBzbyBmb3IgZWFjaCBvZgorICAgICAgdGhvc2UgYXJyYXlzIGFkZGluZyBzdGFydFtuXSBlZmZlY3RpdmVseSBhZGRzIHRoZSBjb25zdGFudDoKKworICAgICAgICBjID0gc3RhcnRbMV0gKiBzdHJpZGVzWzFdICsgLi4uICsgc3RhcnRbbmRpbS0xXSAqIHN0cmlkZXNbbmRpbS0xXQorCisgICAgICBUaGlzIGNvbnN0YW50IGlzIGFkZGVkIHRvIHN1Ym9mZnNldHNbMF0uIHN1Ym9mZnNldHNbMF0gaW4gdHVybiBpcworICAgICAgYWRkZWQgdG8gZWFjaCBwb2ludGVyIHJpZ2h0IGFmdGVyIGRlcmVmZXJlbmNpbmcuCisKKyAgICBBZGp1c3Qgc2hhcGUgYW5kIHN0cmlkZXM6CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgU2hhcGUgYW5kIHN0cmlkZXMgYXJlIG5vdCBpbmZsdWVuY2VkIGJ5IHRoZSBkZXJlZmVyZW5jaW5nIHN0ZXAsIHNvCisgICAgICB0aGV5IGFyZSBhZGp1c3RlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgZm9yIE51bVB5IGFycmF5cy4KKworICBNdWx0aXBsZSBsZXZlbHMgb2Ygc3Vib2Zmc2V0cworICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICBGb3IgYSBjb25zdHJ1Y3QgbGlrZSBhbiBhcnJheSBvZiBwb2ludGVycyB0byBhcnJheSBvZiBwb2ludGVycyB0bworICAgICAgc3ViLWFycmF5cyBvZiBuZGltLTI6CisKKyAgICAgICAgc3Vib2Zmc2V0c1swXSA9IHN0YXJ0WzFdICogc3RyaWRlc1sxXQorICAgICAgICBzdWJvZmZzZXRzWzFdID0gc3RhcnRbMl0gKiBzdHJpZGVzWzJdICsgLi4uCisqLworc3RhdGljIGludAoraW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7CisKKyAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBiYXNlLT5zaGFwZVtkaW1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCB8fCBkaW0gPT0gMCkgeworICAgIGFkanVzdF9idWY6CisgICAgICAgIGJhc2UtPmJ1ZiA9IChjaGFyICopYmFzZS0+YnVmICsgYmFzZS0+c3RyaWRlc1tkaW1dICogc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9zc2l6ZV90IG4gPSBkaW0tMTsKKyAgICAgICAgd2hpbGUgKG4gPj0gMCAmJiBiYXNlLT5zdWJvZmZzZXRzW25dIDwgMCkKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgZ290byBhZGp1c3RfYnVmOyAvKiBhbGwgc3Vib2Zmc2V0cyBhcmUgbmVnYXRpdmUgKi8KKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tuXSA9IGJhc2UtPnN1Ym9mZnNldHNbbl0gKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgYmFzZS0+c2hhcGVbZGltXSA9IHNsaWNlbGVuZ3RoOworICAgIGJhc2UtPnN0cmlkZXNbZGltXSA9IGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0ZXA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29weV9zdHJ1Y3R1cmUoUHlfYnVmZmVyICpiYXNlKQoreworICAgIFB5X3NzaXplX3QgKnNoYXBlID0gTlVMTCwgKnN0cmlkZXMgPSBOVUxMLCAqc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgc2hhcGUgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnNoYXBlKSk7CisgICAgc3RyaWRlcyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqc3RyaWRlcykpOworICAgIGlmIChzaGFwZSA9PSBOVUxMIHx8IHN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfbm9tZW07CisKKyAgICBzdWJvZmZzZXRzID0gTlVMTDsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cykgeworICAgICAgICBzdWJvZmZzZXRzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzdWJvZmZzZXRzKSk7CisgICAgICAgIGlmIChzdWJvZmZzZXRzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycl9ub21lbTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmFzZS0+bmRpbTsgaSsrKSB7CisgICAgICAgIHNoYXBlW2ldID0gYmFzZS0+c2hhcGVbaV07CisgICAgICAgIHN0cmlkZXNbaV0gPSBiYXNlLT5zdHJpZGVzW2ldOworICAgICAgICBpZiAoc3Vib2Zmc2V0cykKKyAgICAgICAgICAgIHN1Ym9mZnNldHNbaV0gPSBiYXNlLT5zdWJvZmZzZXRzW2ldOworICAgIH0KKworICAgIGJhc2UtPnNoYXBlID0gc2hhcGU7CisgICAgYmFzZS0+c3RyaWRlcyA9IHN0cmlkZXM7CisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IHN1Ym9mZnNldHM7CisKKyAgICByZXR1cm4gMDsKKworZXJyX25vbWVtOgorICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgUHlNZW1fWEZyZWUoc2hhcGUpOworICAgIFB5TWVtX1hGcmVlKHN0cmlkZXMpOworICAgIFB5TWVtX1hGcmVlKHN1Ym9mZnNldHMpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfc3Vic2NyaXB0KE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQ7CisgICAgbmRidWZfdCAqbmRidWY7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoYmFzZS0+bmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKGJhc2UtPmJ1ZiwgYmFzZS0+Zm9ybWF0LCBiYXNlLT5pdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoa2V5ID09IFB5X0VsbGlwc2lzKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIHNjYWxhciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChrZXkpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbmRhcnJheV9pdGVtKHNlbGYsIGluZGV4KTsKKyAgICB9CisKKyAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9uZXcoJk5EQXJyYXlfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKG5kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogbmV3IG5kYXJyYXkgaXMgYSBjb25zdW1lciAqLworICAgIGlmIChuZGFycmF5X2luaXRfc3RhdGljYnVmKChQeU9iamVjdCAqKXNlbGYsIG5kLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogY29weSBzaGFwZSwgc3RyaWRlcyBhbmQgc3Vib2Zmc2V0cyAqLworICAgIG5kYnVmID0gbmQtPmhlYWQ7CisgICAgYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpZiAoY29weV9zdHJ1Y3R1cmUoYmFzZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihuZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfT1dOX0FSUkFZUzsKKworICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgLyogb25lLWRpbWVuc2lvbmFsIHNsaWNlICovCisgICAgICAgIGlmIChpbml0X3NsaWNlKGJhc2UsIGtleSwgMCkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgfQorICAgIGVsc2UgaWYgUHlUdXBsZV9DaGVjayhrZXkpIHsKKyAgICAgICAgLyogbXVsdGktZGltZW5zaW9uYWwgc2xpY2UgKi8KKyAgICAgICAgUHlPYmplY3QgKnR1cGxlID0ga2V5OworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUodHVwbGUpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeVR1cGxlX0dFVF9JVEVNKHR1cGxlLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlTbGljZV9DaGVjayhrZXkpKQorICAgICAgICAgICAgICAgIGdvdG8gdHlwZV9lcnJvcjsKKyAgICAgICAgICAgIGlmIChpbml0X3NsaWNlKGJhc2UsIGtleSwgKGludClpKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGdvdG8gdHlwZV9lcnJvcjsKKyAgICB9CisKKyAgICBpbml0X2xlbihiYXNlKTsKKyAgICBpbml0X2ZsYWdzKG5kYnVmKTsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKKworCit0eXBlX2Vycm9yOgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICJjYW5ub3QgaW5kZXggbWVtb3J5IHVzaW5nIFwiJS4yMDBzXCIiLAorICAgICAgICBrZXktPm9iX3R5cGUtPnRwX25hbWUpOworZXJyX29jY3VycmVkOgorICAgIFB5X0RFQ1JFRihuZCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIGludAorbmRhcnJheV9hc3Nfc3Vic2NyaXB0KE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKyAgICBQeV9idWZmZXIgKmRlc3QgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICBQeV9idWZmZXIgc3JjOworICAgIGNoYXIgKnB0cjsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGludCByZXQgPSAtMTsKKworICAgIGlmIChkZXN0LT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibmRhcnJheSBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibmRhcnJheSBkYXRhIGNhbm5vdCBiZSBkZWxldGVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGRlc3QtPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoa2V5ID09IFB5X0VsbGlwc2lzIHx8CisgICAgICAgICAgICAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA9PSAwKSkgeworICAgICAgICAgICAgcHRyID0gKGNoYXIgKilkZXN0LT5idWY7CisgICAgICAgICAgICByZXR1cm4gcGFja19zaW5nbGUocHRyLCB2YWx1ZSwgZGVzdC0+Zm9ybWF0LCBkZXN0LT5pdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBpbmRleGluZyBvZiBzY2FsYXIiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGVzdC0+bmRpbSA9PSAxICYmIFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICAvKiBydmFsdWUgbXVzdCBiZSBhIHNpbmdsZSBpdGVtICovCisgICAgICAgIGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChrZXkpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwdHIgPSBwdHJfZnJvbV9pbmRleChkZXN0LCBpbmRleCk7CisgICAgICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBkZXN0LT5mb3JtYXQsIGRlc3QtPml0ZW1zaXplKTsKKyAgICB9CisKKyAgICAvKiBydmFsdWUgbXVzdCBiZSBhbiBleHBvcnRlciAqLworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodmFsdWUsICZzcmMsIFB5QlVGX0ZVTExfUk8pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKKyAgICBpZiAobmQgIT0gTlVMTCkgeworICAgICAgICBkZXN0ID0gJm5kLT5oZWFkLT5iYXNlOworICAgICAgICByZXQgPSBjb3B5X2J1ZmZlcihkZXN0LCAmc3JjKTsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzcmMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbGljZV9pbmRpY2VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0LCAqa2V5LCAqdG1wOworICAgIFB5X3NzaXplX3Qgc1s0XTsgLyogc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoICovCisgICAgUHlfc3NpemVfdCBpLCBsZW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9uIiwgJmtleSwgJmxlbikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlTbGljZV9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHNsaWNlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgbGVuLCAmc1swXSwgJnNbMV0sICZzWzJdLCAmc1szXSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5VHVwbGVfTmV3KDQpOworICAgIGlmIChyZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIHRtcCA9IFB5TG9uZ19Gcm9tU3NpemVfdChzW2ldKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXQsIGksIHRtcCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKHJldCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbmRhcnJheV9hc19tYXBwaW5nID0geworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCisgICAgKGJpbmFyeWZ1bmMpbmRhcnJheV9zdWJzY3JpcHQsICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KKyAgICAob2Jqb2JqYXJncHJvYyluZGFycmF5X2Fzc19zdWJzY3JpcHQgIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KK307CisKK3N0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBuZGFycmF5X2FzX3NlcXVlbmNlID0geworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLworICAgICAgICAoc3NpemVhcmdmdW5jKW5kYXJyYXlfaXRlbSwgICAgICAgLyogc3FfaXRlbSAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzc2l6ZV9hcnJheV9hc190dXBsZShQeV9zc2l6ZV90ICphcnJheSwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgUHlPYmplY3QgKnR1cGxlLCAqeDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoYXJyYXkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5VHVwbGVfTmV3KDApOworCisgICAgdHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOworICAgIGlmICh0dXBsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICB4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGFycmF5W2ldKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIGksIHgpOworICAgIH0KKworICAgIHJldHVybiB0dXBsZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X2ZsYWdzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5oZWFkLT5mbGFncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9vZmZzZXQoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuZGJ1Zi0+b2Zmc2V0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X29iaihOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworCisgICAgaWYgKGJhc2UtPm9iaiA9PSBOVUxMKSB7IAorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGJhc2UtPm9iaik7CisgICAgcmV0dXJuIGJhc2UtPm9iajsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X25ieXRlcyhOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYmFzZS0+bGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3JlYWRvbmx5KE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhiYXNlLT5yZWFkb25seSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9pdGVtc2l6ZShOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYmFzZS0+aXRlbXNpemUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfZm9ybWF0KE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgY2hhciAqZm10ID0gYmFzZS0+Zm9ybWF0ID8gYmFzZS0+Zm9ybWF0IDogIiI7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZtdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9uZGltKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3NoYXBlKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIHNzaXplX2FycmF5X2FzX3R1cGxlKGJhc2UtPnNoYXBlLCBiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3N0cmlkZXMoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gc3NpemVfYXJyYXlfYXNfdHVwbGUoYmFzZS0+c3RyaWRlcywgYmFzZS0+bmRpbSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9zdWJvZmZzZXRzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIHNzaXplX2FycmF5X2FzX3R1cGxlKGJhc2UtPnN1Ym9mZnNldHMsIGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9jX2NvbnRpZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGludCByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kLT5oZWFkLT5iYXNlLCAnQycpOworCisgICAgaWYgKHJldCAhPSBORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInJlc3VsdHMgZnJvbSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoKSBhbmQgZmxhZ3MgZGlmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2ZvcnRyYW5fY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdGJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0ZPUlRSQU5fQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAicmVzdWx0cyBmcm9tIFB5QnVmZmVyX0lzQ29udGlndW91cygpIGFuZCBmbGFncyBkaWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmV0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdBJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0FOWV9DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJyZXN1bHRzIGZyb20gUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgYW5kIGZsYWdzIGRpZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXQpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBuZGFycmF5X2dldHNldCBbXSA9Cit7CisgIC8qIG5kYnVmICovCisgIHsgImZsYWdzIiwgICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfZmxhZ3MsICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgIm9mZnNldCIsICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfb2Zmc2V0LCAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIC8qIG5kYnVmLmJhc2UgKi8KKyAgeyAib2JqIiwgICAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9vYmosICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAibmJ5dGVzIiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9uYnl0ZXMsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAicmVhZG9ubHkiLCAgICAgKGdldHRlciluZGFycmF5X2dldF9yZWFkb25seSwgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiaXRlbXNpemUiLCAgICAgKGdldHRlciluZGFycmF5X2dldF9pdGVtc2l6ZSwgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiZm9ybWF0IiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9mb3JtYXQsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAibmRpbSIsICAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9uZGltLCAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic2hhcGUiLCAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9zaGFwZSwgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic3RyaWRlcyIsICAgICAgKGdldHRlciluZGFycmF5X2dldF9zdHJpZGVzLCAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic3Vib2Zmc2V0cyIsICAgKGdldHRlciluZGFycmF5X2dldF9zdWJvZmZzZXRzLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiY19jb250aWd1b3VzIiwgKGdldHRlciluZGFycmF5X2NfY29udGlnLCAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiZl9jb250aWd1b3VzIiwgKGdldHRlciluZGFycmF5X2ZvcnRyYW5fY29udGlnLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiY29udGlndW91cyIsICAgKGdldHRlciluZGFycmF5X2NvbnRpZywgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAge05VTEx9Cit9OworCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV90b2xpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICByZXR1cm4gbmRhcnJheV9hc19saXN0KChOREFycmF5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3RvYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9ICgoTkRBcnJheU9iamVjdCAqKXNlbGYpLT5oZWFkOworICAgIFB5X2J1ZmZlciAqc3JjID0gJm5kYnVmLT5iYXNlOworICAgIFB5X2J1ZmZlciBkZXN0OworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworICAgIGNoYXIgKm1lbTsKKworICAgIGlmIChORF9DX0NPTlRJR1VPVVMobmRidWYtPmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3JjLT5idWYsIHNyYy0+bGVuKTsKKworICAgIGFzc2VydChzcmMtPnNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzcmMtPnN0cmlkZXMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNyYy0+bmRpbSA+IDApOworCisgICAgbWVtID0gUHlNZW1fTWFsbG9jKHNyYy0+bGVuKTsKKyAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVzdCA9ICpzcmM7CisgICAgZGVzdC5idWYgPSBtZW07CisgICAgZGVzdC5zdWJvZmZzZXRzID0gTlVMTDsKKyAgICBkZXN0LnN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRidWYsIDApOworICAgIGlmIChkZXN0LnN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisgICAgaWYgKGNvcHlfYnVmZmVyKCZkZXN0LCBzcmMpIDwgMCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG1lbSwgc3JjLT5sZW4pOworCitvdXQ6CisgICAgUHlNZW1fWEZyZWUoZGVzdC5zdHJpZGVzKTsKKyAgICBQeU1lbV9GcmVlKG1lbSk7CisgICAgcmV0dXJuIHJldDsKK30KKworLyogYWRkIHJlZHVuZGFudCAobmVnYXRpdmUpIHN1Ym9mZnNldHMgZm9yIHRlc3RpbmcgKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2FkZF9zdWJvZmZzZXRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kLT5oZWFkLT5iYXNlOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgYWRkIHN1Ym9mZnNldHMgdG8gUElMLXN0eWxlIGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBhZGQgc3Vib2Zmc2V0cyB0byBhcnJheSB3aXRob3V0IHN0cmlkZXMiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGJhc2UtPnN1Ym9mZnNldHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKmJhc2UtPnN1Ym9mZnNldHMpKTsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbaV0gPSAtMTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKiBUZXN0IFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IHJldHVybiBhIG1lbW9yeXZpZXcgZnJvbSBhIHN0YXRpYyBidWZmZXIuCisgICBPYnZpb3VzbHkgdGhpcyBpcyBmcmFnaWxlIGFuZCBvbmx5IG9uZSBzdWNoIHZpZXcgbWF5IGJlIGFjdGl2ZSBhdCBhbnkKKyAgIHRpbWUuIE5ldmVyIHVzZSBhbnl0aGluZyBsaWtlIHRoaXMgaW4gcmVhbCBjb2RlISAqLworc3RhdGljIGNoYXIgKmluZm9idWYgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIGNvbnN0IE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGNvbnN0IFB5X2J1ZmZlciAqdmlldyA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICBjb25zdCBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBzdGF0aWMgY2hhciBmb3JtYXRbTkRfTUFYX05ESU0rMV07CisgICAgc3RhdGljIFB5X3NzaXplX3Qgc2hhcGVbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9zc2l6ZV90IHN0cmlkZXNbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9zc2l6ZV90IHN1Ym9mZnNldHNbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9idWZmZXIgaW5mbzsKKyAgICBjaGFyICpwOworCisgICAgaWYgKCFORF9JU19DT05TVU1FUihuZCkpCisgICAgICAgIG5kYnVmID0gbmQtPmhlYWQ7IC8qIHNlbGYgaXMgbmRhcnJheS9vcmlnaW5hbCBleHBvcnRlciAqLworICAgIGVsc2UgaWYgKE5EQXJyYXlfQ2hlY2sodmlldy0+b2JqKSAmJiAhTkRfSVNfQ09OU1VNRVIodmlldy0+b2JqKSkKKyAgICAgICAgLyogc2VsZiBpcyBuZGFycmF5IGFuZCBjb25zdW1lciBmcm9tIG5kYXJyYXkvb3JpZ2luYWwgZXhwb3J0ZXIgKi8KKyAgICAgICAgbmRidWYgPSAoKE5EQXJyYXlPYmplY3QgKil2aWV3LT5vYmopLT5oZWFkOworICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAibWVtb3J5dmlld19mcm9tX2J1ZmZlcigpOiBuZGFycmF5IG11c3QgYmUgb3JpZ2luYWwgZXhwb3J0ZXIgb3IgIgorICAgICAgICAiY29uc3VtZXIgZnJvbSBuZGFycmF5L29yaWdpbmFsIGV4cG9ydGVyIik7CisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpbmZvID0gKnZpZXc7CisgICAgcCA9IFB5TWVtX1JlYWxsb2MoaW5mb2J1ZiwgbmRidWYtPmxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKGluZm9idWYpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBpbmZvYnVmID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbmZvYnVmID0gcDsKKyAgICB9CisgICAgLyogY29weSB0aGUgY29tcGxldGUgcmF3IGRhdGEgKi8KKyAgICBtZW1jcHkoaW5mb2J1ZiwgbmRidWYtPmRhdGEsIG5kYnVmLT5sZW4pOworICAgIGluZm8uYnVmID0gaW5mb2J1ZiArICgoY2hhciAqKXZpZXctPmJ1ZiAtIG5kYnVmLT5kYXRhKTsKKworICAgIGlmICh2aWV3LT5mb3JtYXQpIHsKKyAgICAgICAgaWYgKHN0cmxlbih2aWV3LT5mb3JtYXQpID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXI6IGZvcm1hdCBpcyBsaW1pdGVkIHRvICVkIGNoYXJhY3RlcnMiLAorICAgICAgICAgICAgICAgIE5EX01BWF9ORElNKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzdHJjcHkoZm9ybWF0LCB2aWV3LT5mb3JtYXQpOworICAgICAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gPiBORF9NQVhfTkRJTSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXI6IG5kaW0gaXMgbGltaXRlZCB0byAlZCIsIE5EX01BWF9ORElNKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodmlldy0+c2hhcGUpIHsKKyAgICAgICAgbWVtY3B5KHNoYXBlLCB2aWV3LT5zaGFwZSwgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc2hhcGUgPSBzaGFwZTsKKyAgICB9CisgICAgaWYgKHZpZXctPnN0cmlkZXMpIHsKKyAgICAgICAgbWVtY3B5KHN0cmlkZXMsIHZpZXctPnN0cmlkZXMsIHZpZXctPm5kaW0gKiBzaXplb2YoUHlfc3NpemVfdCkpOworICAgICAgICBpbmZvLnN0cmlkZXMgPSBzdHJpZGVzOworICAgIH0KKyAgICBpZiAodmlldy0+c3Vib2Zmc2V0cykgeworICAgICAgICBtZW1jcHkoc3Vib2Zmc2V0cywgdmlldy0+c3Vib2Zmc2V0cywgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc3Vib2Zmc2V0cyA9IHN1Ym9mZnNldHM7CisgICAgfQorCisgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCZpbmZvKTsKK30KKworLyogR2V0IGEgc2luZ2xlIGl0ZW0gZnJvbSBidWZvYmogYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBzZXEuCisgICBzZXEgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIGluZGljZXMuIFRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24KKyAgIGlzIHRvIGNoZWNrIG90aGVyIGZ1bmN0aW9ucyBhZ2FpbnN0IFB5QnVmZmVyX0dldFBvaW50ZXIoKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfcG9pbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEwsICpidWZvYmosICpzZXE7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgUHlfc3NpemVfdCBpbmRpY2VzW05EX01BWF9ORElNXTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgdm9pZCAqcHRyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZidWZvYmosICZzZXEpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoc2VxKTsKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJ1Zm9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmlldy5uZGltID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiZ2V0X3BvaW50ZXIoKTogbmRpbSA+ICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzZXEpICE9IHZpZXcubmRpbSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBsZW4oaW5kaWNlcykgIT0gbmRpbSIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgdmlldy5uZGltOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnggPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IFB5TG9uZ19Bc1NzaXplX3QoeCk7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHZpZXcuc2hhcGVbaV0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBpbnZhbGlkIGluZGV4ICV6ZCBhdCBwb3NpdGlvbiAlemQiLAorICAgICAgICAgICAgICAgIGluZGljZXNbaV0sIGkpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdHIgPSBQeUJ1ZmZlcl9HZXRQb2ludGVyKCZ2aWV3LCBpbmRpY2VzKTsKKyAgICByZXQgPSB1bnBhY2tfc2luZ2xlKHB0ciwgdmlldy5mb3JtYXQsIHZpZXcuaXRlbXNpemUpOworCitvdXQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9zaXplb2Zfdm9pZF9wKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChzaXplb2Yodm9pZCAqKSk7Cit9CisKK3N0YXRpYyBjaGFyCitnZXRfYXNjaWlfb3JkZXIoUHlPYmplY3QgKm9yZGVyKQoreworICAgIFB5T2JqZWN0ICphc2NpaV9vcmRlcjsKKyAgICBjaGFyIG9yZDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG9yZGVyKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm9yZGVyIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIENIQVJfTUFYOworICAgIH0KKworICAgIGFzY2lpX29yZGVyID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcob3JkZXIpOworICAgIGlmIChhc2NpaV9vcmRlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBDSEFSX01BWDsKKyAgICB9CisKKyAgICBvcmQgPSBQeUJ5dGVzX0FTX1NUUklORyhhc2NpaV9vcmRlcilbMF07CisgICAgUHlfREVDUkVGKGFzY2lpX29yZGVyKTsKKworICAgIGlmIChvcmQgIT0gJ0MnICYmIG9yZCAhPSAnRicgJiYgb3JkICE9ICdBJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIG9yZGVyLCBtdXN0IGJlIEMsIEYgb3IgQSIpOworICAgICAgICByZXR1cm4gQ0hBUl9NQVg7CisgICAgfQorCisgICAgcmV0dXJuIG9yZDsKK30KKworLyogR2V0IGEgY29udGlndW91cyBtZW1vcnl2aWV3LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jb250aWd1b3VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpidWZmZXJ0eXBlOworICAgIFB5T2JqZWN0ICpvcmRlcjsKKyAgICBsb25nIHR5cGU7CisgICAgY2hhciBvcmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTyIsICZvYmosICZidWZmZXJ0eXBlLCAmb3JkZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlMb25nX0NoZWNrKGJ1ZmZlcnR5cGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYnVmZmVydHlwZSBtdXN0IGJlIFB5QlVGX1JFQUQgb3IgUHlCVUZfV1JJVEUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHlwZSA9IFB5TG9uZ19Bc0xvbmcoYnVmZmVydHlwZSk7CisgICAgaWYgKHR5cGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHR5cGUgIT0gUHlCVUZfUkVBRCAmJiB0eXBlICE9IFB5QlVGX1dSSVRFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgYnVmZmVyIHR5cGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhvYmosIChpbnQpdHlwZSwgb3JkKTsKK30KKworLyogUHlCdWZmZXJfVG9Db250aWd1b3VzKCkgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitweV9idWZmZXJfdG9fY29udGlndW91cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqb3JkZXI7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgb3JkOworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PaSIsICZvYmosICZvcmRlciwgJmZsYWdzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIGZsYWdzKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyh2aWV3Lmxlbik7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoYnVmLCAmdmlldywgdmlldy5sZW4sIG9yZCkgPCAwKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCB2aWV3Lmxlbik7CisKK291dDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICBQeU1lbV9YRnJlZShidWYpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2ZtdGNtcChjb25zdCBjaGFyICpmbXQxLCBjb25zdCBjaGFyICpmbXQyKQoreworICAgIGlmIChmbXQxID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGZtdDIgPT0gTlVMTCB8fCBzdHJjbXAoZm10MiwgIkIiKSA9PSAwOworICAgIH0KKyAgICBpZiAoZm10MiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBmbXQxID09IE5VTEwgfHwgc3RyY21wKGZtdDEsICJCIikgPT0gMDsKKyAgICB9CisgICAgcmV0dXJuIHN0cmNtcChmbXQxLCBmbXQyKSA9PSAwOworfQorCitzdGF0aWMgaW50CithcnJheWNtcChjb25zdCBQeV9zc2l6ZV90ICphMSwgY29uc3QgUHlfc3NpemVfdCAqYTIsIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICAgUHlfc3NpemVfdCBuZGltKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChuZGltID09IDEgJiYgc2hhcGUgJiYgc2hhcGVbMF0gPT0gMSkgeworICAgICAgICAvKiBUaGlzIGlzIGZvciBjb21wYXJpbmcgc3RyaWRlczogRm9yIGV4YW1wbGUsIHRoZSBhcnJheQorICAgICAgICAgICBbMTc1XSwgc2hhcGU9WzFdLCBzdHJpZGVzPVstNV0gaXMgY29uc2lkZXJlZCBjb250aWd1b3VzLiAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChhMVtpXSAhPSBhMltpXSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQ29tcGFyZSB0d28gY29udGlndW91cyBidWZmZXJzIGZvciBwaHlzaWNhbCBlcXVhbGl0eS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjbXBfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYjEsICpiMjsgLyogYnVmZmVyIG9iamVjdHMgKi8KKyAgICBQeV9idWZmZXIgdjEsIHYyOworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgaW50IGVxdWFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmYjEsICZiMikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiMSwgJnYxLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjbXBfY29udGlnOiBmaXJzdCBhcmd1bWVudCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCisgICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYjIsICZ2MiwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY21wX2NvbnRpZzogc2Vjb25kIGFyZ3VtZW50IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKKyAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2MSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghKFB5QnVmZmVyX0lzQ29udGlndW91cygmdjEsICdDJykmJlB5QnVmZmVyX0lzQ29udGlndW91cygmdjIsICdDJykpICYmCisgICAgICAgICEoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MSwgJ0YnKSYmUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MiwgJ0YnKSkpIHsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgLyogcmVhZG9ubHkgbWF5IGRpZmZlciBpZiBjcmVhdGVkIGZyb20gbm9uLWNvbnRpZ3VvdXMgKi8KKyAgICBpZiAodjEubGVuICE9IHYyLmxlbiB8fAorICAgICAgICB2MS5pdGVtc2l6ZSAhPSB2Mi5pdGVtc2l6ZSB8fAorICAgICAgICB2MS5uZGltICE9IHYyLm5kaW0gfHwKKyAgICAgICAgIWZtdGNtcCh2MS5mb3JtYXQsIHYyLmZvcm1hdCkgfHwKKyAgICAgICAgISF2MS5zaGFwZSAhPSAhIXYyLnNoYXBlIHx8CisgICAgICAgICEhdjEuc3RyaWRlcyAhPSAhIXYyLnN0cmlkZXMgfHwKKyAgICAgICAgISF2MS5zdWJvZmZzZXRzICE9ICEhdjIuc3Vib2Zmc2V0cykgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoKHYxLnNoYXBlICYmICFhcnJheWNtcCh2MS5zaGFwZSwgdjIuc2hhcGUsIE5VTEwsIHYxLm5kaW0pKSB8fAorICAgICAgICAodjEuc3RyaWRlcyAmJiAhYXJyYXljbXAodjEuc3RyaWRlcywgdjIuc3RyaWRlcywgdjEuc2hhcGUsIHYxLm5kaW0pKSB8fAorICAgICAgICAodjEuc3Vib2Zmc2V0cyAmJiAhYXJyYXljbXAodjEuc3Vib2Zmc2V0cywgdjIuc3Vib2Zmc2V0cywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxLm5kaW0pKSkgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKChjaGFyICopdjEuYnVmLCAoY2hhciAqKXYyLmJ1ZiwgdjEubGVuKSAhPSAwKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIGVxdWFsID0gMTsKKworcmVzdWx0OgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYxKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Mik7CisKKyAgICByZXQgPSBlcXVhbCA/IFB5X1RydWUgOiBQeV9GYWxzZTsgCisgICAgUHlfSU5DUkVGKHJldCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2lzX2NvbnRpZ3VvdXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm9yZGVyOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIGNoYXIgb3JkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZvYmosICZvcmRlcikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJpc19jb250aWd1b3VzOiBvYmplY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7CisgICAgaWYgKG9yZCA9PSBDSEFSX01BWCkgeworICAgICAgICBnb3RvIHJlbGVhc2U7CisgICAgfQorCisgICAgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2aWV3LCBvcmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgIFB5X0lOQ1JFRihyZXQpOworCityZWxlYXNlOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeV9oYXNoX3QKK25kYXJyYXlfaGFzaChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBjb25zdCBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBjb25zdCBQeV9idWZmZXIgKnZpZXcgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKCF2aWV3LT5yZWFkb25seSkgeworICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgImNhbm5vdCBoYXNoIHdyaXRhYmxlIG5kYXJyYXkgb2JqZWN0Iik7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2aWV3LT5vYmogIT0gTlVMTCAmJiBQeU9iamVjdF9IYXNoKHZpZXctPm9iaikgPT0gLTEpIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBieXRlcyA9IG5kYXJyYXlfdG9ieXRlcyhzZWxmLCBOVUxMKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goYnl0ZXMpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIG5kYXJyYXlfbWV0aG9kcyBbXSA9Cit7CisgICAgeyAidG9saXN0IiwgbmRhcnJheV90b2xpc3QsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAidG9ieXRlcyIsIG5kYXJyYXlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJwdXNoIiwgKFB5Q0Z1bmN0aW9uKW5kYXJyYXlfcHVzaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIE5VTEwgfSwKKyAgICB7ICJwb3AiLCBuZGFycmF5X3BvcCwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJhZGRfc3Vib2Zmc2V0cyIsIG5kYXJyYXlfYWRkX3N1Ym9mZnNldHMsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAibWVtb3J5dmlld19mcm9tX2J1ZmZlciIsIG5kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlciwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgTkRBcnJheV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJuZGFycmF5IiwgICAgICAgICAgICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KKyAgICBzaXplb2YoTkRBcnJheU9iamVjdCksICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLworICAgIChkZXN0cnVjdG9yKW5kYXJyYXlfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZuZGFycmF5X2FzX3NlcXVlbmNlLCAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmbmRhcnJheV9hc19tYXBwaW5nLCAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAoaGFzaGZ1bmMpbmRhcnJheV9oYXNoLCAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgJm5kYXJyYXlfYXNfYnVmZmVyLCAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG5kYXJyYXlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG5kYXJyYXlfZ2V0c2V0LCAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG5kYXJyYXlfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBuZGFycmF5X25ldywgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY0FycmF5IE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFN0YXRpY0FycmF5X1R5cGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGxlZ2FjeV9tb2RlOyAvKiBpZiB0cnVlLCB1c2UgdGhlIHZpZXcub2JqPT1OVUxMIGhhY2sgKi8KK30gU3RhdGljQXJyYXlPYmplY3Q7CisKK3N0YXRpYyBjaGFyIHN0YXRpY19tZW1bMTJdID0gezAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTF9Oworc3RhdGljIFB5X3NzaXplX3Qgc3RhdGljX3NoYXBlWzFdID0gezEyfTsKK3N0YXRpYyBQeV9zc2l6ZV90IHN0YXRpY19zdHJpZGVzWzFdID0gezF9Oworc3RhdGljIFB5X2J1ZmZlciBzdGF0aWNfYnVmZmVyID0geworICAgIHN0YXRpY19tZW0sICAgICAvKiBidWYgKi8KKyAgICBOVUxMLCAgICAgICAgICAgLyogb2JqICovCisgICAgMTIsICAgICAgICAgICAgIC8qIGxlbiAqLworICAgIDEsICAgICAgICAgICAgICAvKiBpdGVtc2l6ZSAqLworICAgIDEsICAgICAgICAgICAgICAvKiByZWFkb25seSAqLworICAgIDEsICAgICAgICAgICAgICAvKiBuZGltICovCisgICAgIkIiLCAgICAgICAgICAgIC8qIGZvcm1hdCAqLworICAgIHN0YXRpY19zaGFwZSwgICAvKiBzaGFwZSAqLworICAgIHN0YXRpY19zdHJpZGVzLCAvKiBzdHJpZGVzICovCisgICAgTlVMTCwgICAgICAgICAgIC8qIHN1Ym9mZnNldHMgKi8KKyAgICBOVUxMICAgICAgICAgICAgLyogaW50ZXJuYWwgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitzdGF0aWNhcnJheV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5T2JqZWN0X05ldyhTdGF0aWNBcnJheU9iamVjdCwgJlN0YXRpY0FycmF5X1R5cGUpOworfQorCitzdGF0aWMgaW50CitzdGF0aWNhcnJheV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgU3RhdGljQXJyYXlPYmplY3QgKmEgPSAoU3RhdGljQXJyYXlPYmplY3QgKilzZWxmOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICAgImxlZ2FjeV9tb2RlIiwgTlVMTAorICAgIH07CisgICAgUHlPYmplY3QgKmxlZ2FjeV9tb2RlID0gUHlfRmFsc2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsICZsZWdhY3lfbW9kZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGEtPmxlZ2FjeV9tb2RlID0gKGxlZ2FjeV9tb2RlICE9IFB5X0ZhbHNlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3N0YXRpY2FycmF5X2RlYWxsb2MoU3RhdGljQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCisvKiBSZXR1cm4gYSBidWZmZXIgZm9yIGEgUHlCVUZfRlVMTF9STyByZXF1ZXN0LiBGbGFncyBhcmUgbm90IGNoZWNrZWQsCisgICB3aGljaCBtYWtlcyB0aGlzIG9iamVjdCBhIG5vbi1jb21wbGlhbnQgZXhwb3J0ZXIhICovCitzdGF0aWMgaW50CitzdGF0aWNhcnJheV9nZXRidWYoU3RhdGljQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQoreworICAgICp2aWV3ID0gc3RhdGljX2J1ZmZlcjsKKworICAgIGlmIChzZWxmLT5sZWdhY3lfbW9kZSkgeworICAgICAgICB2aWV3LT5vYmogPSBOVUxMOyAvKiBEb24ndCB1c2UgdGhpcyBpbiBuZXcgY29kZS4gKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlCdWZmZXJQcm9jcyBzdGF0aWNhcnJheV9hc19idWZmZXIgPSB7CisgICAgKGdldGJ1ZmZlcnByb2Mpc3RhdGljYXJyYXlfZ2V0YnVmLCAvKiBiZl9nZXRidWZmZXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU3RhdGljQXJyYXlfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAic3RhdGljYXJyYXkiLCAgICAgICAgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLworICAgIHNpemVvZihTdGF0aWNBcnJheU9iamVjdCksICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXRlbSBzaXplIGZvciB2YXJvYmplY3QgKi8KKyAgICAoZGVzdHJ1Y3RvcilzdGF0aWNhcnJheV9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgJnN0YXRpY2FycmF5X2FzX2J1ZmZlciwgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgc3RhdGljYXJyYXlfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgc3RhdGljYXJyYXlfbmV3LCAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgX3Rlc3RidWZmZXJfZnVuY3Rpb25zW10gPSB7CisgICAgeyJzbGljZV9pbmRpY2VzIiwgc2xpY2VfaW5kaWNlcywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImdldF9wb2ludGVyIiwgZ2V0X3BvaW50ZXIsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJnZXRfc2l6ZW9mX3ZvaWRfcCIsIChQeUNGdW5jdGlvbilnZXRfc2l6ZW9mX3ZvaWRfcCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsiZ2V0X2NvbnRpZ3VvdXMiLCBnZXRfY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7InB5X2J1ZmZlcl90b19jb250aWd1b3VzIiwgcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJpc19jb250aWd1b3VzIiwgaXNfY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImNtcF9jb250aWciLCBjbXBfY29udGlnLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfdGVzdGJ1ZmZlcm1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl90ZXN0YnVmZmVyIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIF90ZXN0YnVmZmVyX2Z1bmN0aW9ucywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RidWZmZXIodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl90ZXN0YnVmZmVybW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1RZUEUoJk5EQXJyYXlfVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgUHlfSU5DUkVGKCZOREFycmF5X1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmRhcnJheSIsIChQeU9iamVjdCAqKSZOREFycmF5X1R5cGUpOworCisgICAgUHlfVFlQRSgmU3RhdGljQXJyYXlfVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgUHlfSU5DUkVGKCZTdGF0aWNBcnJheV9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0YXRpY2FycmF5IiwgKFB5T2JqZWN0ICopJlN0YXRpY0FycmF5X1R5cGUpOworCisgICAgc3RydWN0bW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzdHJ1Y3QiKTsKKyAgICBpZiAoc3RydWN0bW9kdWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgU3RydWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJTdHJ1Y3QiKTsKKyAgICBjYWxjc2l6ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAiY2FsY3NpemUiKTsKKyAgICBpZiAoU3RydWN0ID09IE5VTEwgfHwgY2FsY3NpemUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzaW1wbGVfZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2ltcGxlX2ZtdCk7CisgICAgaWYgKHNpbXBsZV9mb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfTUFYX05ESU0iLCBORF9NQVhfTkRJTSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1ZBUkVYUE9SVCIsIE5EX1ZBUkVYUE9SVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1dSSVRBQkxFIiwgTkRfV1JJVEFCTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9GT1JUUkFOIiwgTkRfRk9SVFJBTik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1NDQUxBUiIsIE5EX1NDQUxBUik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1BJTCIsIE5EX1BJTCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX0dFVEJVRl9GQUlMIiwgTkRfR0VUQlVGX0ZBSUwpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9HRVRCVUZfVU5ERUZJTkVEIiwgTkRfR0VUQlVGX1VOREVGSU5FRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1JFRElSRUNUIiwgTkRfUkVESVJFQ1QpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NJTVBMRSIsIFB5QlVGX1NJTVBMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1dSSVRBQkxFIiwgUHlCVUZfV1JJVEFCTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GT1JNQVQiLCBQeUJVRl9GT1JNQVQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9ORCIsIFB5QlVGX05EKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU1RSSURFUyIsIFB5QlVGX1NUUklERVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9JTkRJUkVDVCIsIFB5QlVGX0lORElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ19DT05USUdVT1VTIiwgUHlCVUZfQ19DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRl9DT05USUdVT1VTIiwgUHlCVUZfRl9DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQU5ZX0NPTlRJR1VPVVMiLCBQeUJVRl9BTllfQ09OVElHVU9VUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZVTEwiLCBQeUJVRl9GVUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRlVMTF9STyIsIFB5QlVGX0ZVTExfUk8pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9SRUNPUkRTIiwgUHlCVUZfUkVDT1JEUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1JFQ09SRFNfUk8iLCBQeUJVRl9SRUNPUkRTX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU1RSSURFRCIsIFB5QlVGX1NUUklERUQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVEX1JPIiwgUHlCVUZfU1RSSURFRF9STyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0NPTlRJRyIsIFB5QlVGX0NPTlRJRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0NPTlRJR19STyIsIFB5QlVGX0NPTlRJR19STyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVBRCIsIFB5QlVGX1JFQUQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9XUklURSIsIFB5QlVGX1dSSVRFKTsKKworICAgIHJldHVybiBtOworfQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggOTRiNmU2Ny4uYWIxMWY1MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC0yMiwxNCArMjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhaXNlVGVzdEVycm9yKGNvbnN0IGNoYXIqIHRlc3RfbmFtZSwgY29uc3QgY2hhciogbXNnKQogewotICAgIGNoYXIgYnVmWzIwNDhdOwotCi0gICAgaWYgKHN0cmxlbih0ZXN0X25hbWUpICsgc3RybGVuKG1zZykgPiBzaXplb2YoYnVmKSAtIDUwKQotICAgICAgICBQeUVycl9TZXRTdHJpbmcoVGVzdEVycm9yLCAiaW50ZXJuYWwgZXJyb3IgbXNnIHRvbyBsYXJnZSIpOwotICAgIGVsc2UgewotICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlczogJXMiLCB0ZXN0X25hbWUsIG1zZyk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsIGJ1Zik7Ci0gICAgfQorICAgIFB5RXJyX0Zvcm1hdChUZXN0RXJyb3IsICIlczogJXMiLCB0ZXN0X25hbWUsIG1zZyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQzLDExICszNiw5IEBACiBzaXplb2ZfZXJyb3IoY29uc3QgY2hhciogZmF0bmFtZSwgY29uc3QgY2hhciogdHlwbmFtZSwKICAgICBpbnQgZXhwZWN0ZWQsIGludCBnb3QpCiB7Ci0gICAgY2hhciBidWZbMTAyNF07Ci0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAiJS4yMDBzICNkZWZpbmUgPT0gJWQgYnV0IHNpemVvZiglLjIwMHMpID09ICVkIiwKKyAgICBQeUVycl9Gb3JtYXQoVGVzdEVycm9yLAorICAgICAgICAiJXMgI2RlZmluZSA9PSAlZCBidXQgc2l6ZW9mKCVzKSA9PSAlZCIsCiAgICAgICAgIGZhdG5hbWUsIGV4cGVjdGVkLCB0eXBuYW1lLCBnb3QpOwotICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsIGJ1Zik7CiAgICAgcmV0dXJuIChQeU9iamVjdCopTlVMTDsKIH0KIApAQCAtMjg0LDk1ICsyNzUsNiBAQAogfQogCiAKLS8qIElzc3VlICM3Mzg1OiBDaGVjayB0aGF0IG1lbW9yeXZpZXcoKSBkb2VzIG5vdCBjcmFzaAotICogICB3aGVuIGJmX2dldGJ1ZmZlciByZXR1cm5zIGFuIGVycm9yCi0gKi8KLQotc3RhdGljIGludAotYnJva2VuX2J1ZmZlcl9nZXRidWZmZXIoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQotewotICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAidGVzdF9icm9rZW5fbWVtb3J5dmlldzogZXhwZWN0ZWQgZXJyb3IgaW4gYmZfZ2V0YnVmZmVyIik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgUHlCdWZmZXJQcm9jcyBtZW1vcnl2aWV3dGVzdGVyX2FzX2J1ZmZlciA9IHsKLSAgICAoZ2V0YnVmZmVycHJvYylicm9rZW5fYnVmZmVyX2dldGJ1ZmZlciwgICAgIC8qIGJmX2dldGJ1ZmZlciAqLwotICAgIDAsICAgICAgICAgIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgX01lbW9yeVZpZXdUZXN0ZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAibWVtb3J5dmlld3Rlc3RlciIsICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KLSAgICBzaXplb2YoUHlPYmplY3QpLCAgICAgICAgICAgLyogQmFzaWMgb2JqZWN0IHNpemUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXRlbSBzaXplIGZvciB2YXJvYmplY3QgKi8KLSAgICAoZGVzdHJ1Y3RvcilQeU9iamVjdF9EZWwsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgICZtZW1vcnl2aWV3dGVzdGVyX2FzX2J1ZmZlciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXRlc3RfYnJva2VuX21lbW9yeXZpZXcoUHlPYmplY3QqIHNlbGYpCi17Ci0gICAgUHlPYmplY3QgKm9iaiA9IFB5T2JqZWN0X05ldyhQeU9iamVjdCwgJl9NZW1vcnlWaWV3VGVzdGVyX1R5cGUpOwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICBpZiAob2JqID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAgICAgInRlc3RfYnJva2VuX21lbW9yeXZpZXc6IGZhaWxlZCB0byBjcmVhdGUgb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJlcyA9IFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHJlcyB8fCAhUHlFcnJfT2NjdXJyZWQoKSl7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFRlc3RFcnJvciwKLSAgICAgICAgICAgICJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3OiBtZW1vcnl2aWV3KCkgZGlkbid0IHJhaXNlIGFuIEV4Y2VwdGlvbiIpOwotICAgICAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeUVycl9DbGVhcigpOwotICAgIFB5X0RFQ1JFRihvYmopOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi0KIC8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZCAoI2lmZGVmIEhBVkVfTE9OR19MT05HKQogICAgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmdMb25nKCkuCiAKQEAgLTc3OCw2ICs2ODAsNjggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorLyogVGVzdCB0aGUgUHlMb25nX0Fze1NpemUsU3NpemV9X3QgQVBJLiBBdCBwcmVzZW50IHRoaXMganVzdCB0ZXN0cyB0aGF0CisgICBub24taW50ZWdlciBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBzaG91bGQgYmUgZXh0ZW5kZWQgdG8KKyAgIHRlc3Qgb3ZlcmZsb3cgaGFuZGxpbmcuCisgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfbG9uZ19hc19zaXplX3QoUHlPYmplY3QgKnNlbGYpCit7CisgICAgc2l6ZV90IG91dF91OworICAgIFB5X3NzaXplX3Qgb3V0X3M7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICBvdXRfdSA9IFB5TG9uZ19Bc1NpemVfdChQeV9Ob25lKTsKKyAgICBpZiAob3V0X3UgIT0gKHNpemVfdCktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTaXplX3QoTm9uZSkgZGlkbid0IGNvbXBsYWluIik7CisgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU2l6ZV90KE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIG91dF9zID0gUHlMb25nX0FzU3NpemVfdChQeV9Ob25lKTsKKyAgICBpZiAob3V0X3MgIT0gKFB5X3NzaXplX3QpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU3NpemVfdChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTc2l6ZV90KE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIC8qIFB5X0lOQ1JFRihQeV9Ob25lKSBvbWl0dGVkIC0gd2UgYWxyZWFkeSBoYXZlIGEgcmVmZXJlbmNlIHRvIGl0LiAqLworICAgIHJldHVybiBQeV9Ob25lOworfQorCisvKiBUZXN0IHRoZSBQeUxvbmdfQXNEb3VibGUgQVBJLiBBdCBwcmVzZW50IHRoaXMganVzdCB0ZXN0cyB0aGF0CisgICBub24taW50ZWdlciBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LgorICovCisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X2xvbmdfYXNfZG91YmxlKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGRvdWJsZSBvdXQ7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICBvdXQgPSBQeUxvbmdfQXNEb3VibGUoUHlfTm9uZSk7CisgICAgaWYgKG91dCAhPSAtMS4wIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19kb3VibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc0RvdWJsZShOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfZG91YmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNEb3VibGUoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgLyogUHlfSU5DUkVGKFB5X05vbmUpIG9taXR0ZWQgLSB3ZSBhbHJlYWR5IGhhdmUgYSByZWZlcmVuY2UgdG8gaXQuICovCisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKIC8qIFRlc3QgdGhlIEwgY29kZSBmb3IgUHlBcmdfUGFyc2VUdXBsZS4gIFRoaXMgc2hvdWxkIGRlbGl2ZXIgYSBQWV9MT05HX0xPTkcKICAgIGZvciBib3RoIGxvbmcgYW5kIGludCBhcmd1bWVudHMuICBUaGUgdGVzdCBtYXkgbGVhayBhIGxpdHRsZSBtZW1vcnkgaWYKICAgIGl0IGZhaWxzLgpAQCAtODM3LDcgKzgwMSw4IEBACiB9CiAKIC8qIHRlc3QgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICovCi1zdGF0aWMgUHlPYmplY3QgKmdldGFyZ3Nfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3Nfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJhcmcxIiwiYXJnMiIsImFyZzMiLCJhcmc0IiwiYXJnNSIsIE5VTEx9OwogICAgIHN0YXRpYyBjaGFyICpmbXQ9IihpaSlpfChpKGlpKSkoaWlpKWkiOwpAQCAtODUyLDYgKzgxNywyMSBAQAogICAgICAgICBpbnRfYXJnc1s1XSwgaW50X2FyZ3NbNl0sIGludF9hcmdzWzddLCBpbnRfYXJnc1s4XSwgaW50X2FyZ3NbOV0pOwogfQogCisvKiB0ZXN0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19rZXl3b3JkX29ubHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJyZXF1aXJlZCIsICJvcHRpb25hbCIsICJrZXl3b3JkX29ubHkiLCBOVUxMfTsKKyAgICBpbnQgcmVxdWlyZWQgPSAtMTsKKyAgICBpbnQgb3B0aW9uYWwgPSAtMTsKKyAgICBpbnQga2V5d29yZF9vbmx5ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpfGkkaSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXF1aXJlZCwgJm9wdGlvbmFsLCAma2V5d29yZF9vbmx5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZF9vbmx5KTsKK30KKwogLyogRnVuY3Rpb25zIHRvIGNhbGwgUHlBcmdfUGFyc2VUdXBsZSB3aXRoIGludGVnZXIgZm9ybWF0IGNvZGVzLAogICAgYW5kIHJldHVybiB0aGUgcmVzdWx0LgogKi8KQEAgLTkzNiw2ICs5MTYsMTUgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHZhbHVlKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicCIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOworfQorCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX0woUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTAxMiw2ICsxMDAxLDE1IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX2MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImMiLCAmYykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCZjLCAxKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgY2hhciAqc3RyOwpAQCAtMTE5Nyw1MSArMTE5NSw3MyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGVzdF9idWdfNzQxNChQeU9iamVjdCAqc2VsZikKK3BhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgLyogSXNzdWUgIzc0MTQ6IGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMsICdDJyBjb2RlIHdhc24ndCBiZWluZwotICAgICAgIHNraXBwZWQgcHJvcGVybHkgaW4gc2tpcGl0ZW0oKSAqLwotICAgIGludCBhID0gMCwgYiA9IDAsIHJlc3VsdDsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiYSIsICJiIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnR1cGxlID0gTlVMTCwgKmRpY3QgPSBOVUxMLCAqYl9zdHI7CisgICAgUHlPYmplY3QgKnN1Yl9hcmdzOworICAgIFB5T2JqZWN0ICpzdWJfa3dhcmdzOworICAgIGNoYXIgKnN1Yl9mb3JtYXQ7CisgICAgUHlPYmplY3QgKnN1Yl9rZXl3b3JkczsKIAotICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKHR1cGxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICBiX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJiIik7Ci0gICAgaWYgKGJfc3RyID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICByZXN1bHQgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiYiIsIGJfc3RyKTsKLSAgICBQeV9ERUNSRUYoYl9zdHIpOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIGNoYXIgKmtleXdvcmRzWzggKyAxXTsgLyogc3BhY2UgZm9yIE5VTEwgYXQgZW5kICovCisgICAgUHlPYmplY3QgKm87CisgICAgUHlPYmplY3QgKmNvbnZlcnRlZFs4XTsKIAotICAgIHJlc3VsdCA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcyh0dXBsZSwgZGljdCwgInxDQyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmEsICZiKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZ290byBmYWlsdXJlOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKLSAgICBpZiAoYSAhPSAwKQotICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfYnVnXzc0MTQiLAotICAgICAgICAgICAgIkMgZm9ybWF0IGNvZGUgbm90IHNraXBwZWQgcHJvcGVybHkiKTsKLSAgICBpZiAoYiAhPSAnYicpCi0gICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9idWdfNzQxNCIsCi0gICAgICAgICAgICAiQyBmb3JtYXQgY29kZSByZXR1cm5lZCB3cm9uZyB2YWx1ZSIpOworICAgIGRvdWJsZSBidWZmZXJzWzhdWzRdOyAvKiBkb3VibGUgZW5zdXJlcyBhbGlnbm1lbnQgd2hlcmUgbmVjZXNzYXJ5ICovCiAKLSAgICBQeV9ERUNSRUYoZGljdCk7Ci0gICAgUHlfREVDUkVGKHR1cGxlKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PeU86cGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIiwKKyAgICAgICAgJnN1Yl9hcmdzLCAmc3ViX2t3YXJncywKKyAgICAgICAgJnN1Yl9mb3JtYXQsICZzdWJfa2V5d29yZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICBmYWlsdXJlOgotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgUHlfWERFQ1JFRih0dXBsZSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCEoUHlMaXN0X0NoZWNrRXhhY3Qoc3ViX2tleXdvcmRzKSB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoc3ViX2tleXdvcmRzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiBzdWJfa2V5d29yZHMgbXVzdCBiZSBlaXRoZXIgbGlzdCBvciB0dXBsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoYnVmZmVycywgMCwgc2l6ZW9mKGJ1ZmZlcnMpKTsKKyAgICBtZW1zZXQoY29udmVydGVkLCAwLCBzaXplb2YoY29udmVydGVkKSk7CisgICAgbWVtc2V0KGtleXdvcmRzLCAwLCBzaXplb2Yoa2V5d29yZHMpKTsKKworICAgIHNpemUgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3ViX2tleXdvcmRzKTsKKyAgICBpZiAoc2l6ZSA+IDgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiB0b28gbWFueSBrZXl3b3JkcyBpbiBzdWJfa2V5d29yZHMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgbyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzdWJfa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAodm9pZCAqKShjb252ZXJ0ZWQgKyBpKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHM6IGNvdWxkIG5vdCBjb252ZXJ0IGtleXdvcmRzWyV6ZF0gdG8gbmFycm93IHN0cmluZyIsIGkpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGtleXdvcmRzW2ldID0gUHlCeXRlc19BU19TVFJJTkcoY29udmVydGVkW2ldKTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoc3ViX2FyZ3MsIHN1Yl9rd2FyZ3MsCisgICAgICAgIHN1Yl9mb3JtYXQsIGtleXdvcmRzLAorICAgICAgICBidWZmZXJzICsgMCwgYnVmZmVycyArIDEsIGJ1ZmZlcnMgKyAyLCBidWZmZXJzICsgMywKKyAgICAgICAgYnVmZmVycyArIDQsIGJ1ZmZlcnMgKyA1LCBidWZmZXJzICsgNiwgYnVmZmVycyArIDcpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgfQorCitleGl0OgorICAgIHNpemUgPSBzaXplb2YoY29udmVydGVkKSAvIHNpemVvZihjb252ZXJ0ZWRbMF0pOworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlfWERFQ1JFRihjb252ZXJ0ZWRbaV0pOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0KIHN0YXRpYyB2b2xhdGlsZSBpbnQgeDsKIAogLyogVGVzdCB0aGUgdSBhbmQgdSMgY29kZXMgZm9yIFB5QXJnX1BhcnNlVHVwbGUuIE1heSBsZWFrIG1lbW9yeSBpbiBjYXNlCkBAIC0xMjkzLDcgKzEzMTMsNyBAQAogdGVzdF9aX2NvZGUoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnR1cGxlLCAqb2JqOwotICAgIFB5X1VOSUNPREUgKnZhbHVlMSwgKnZhbHVlMjsKKyAgICBjb25zdCBQeV9VTklDT0RFICp2YWx1ZTEsICp2YWx1ZTI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldygyKTsKQEAgLTEzNDcsNiArMTM2Nyw3IEBACiAjaWYgZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgJiYgKFNJWkVPRl9XQ0hBUl9UID09IDQpCiAgICAgY29uc3Qgd2NoYXJfdCB3dGV4dFsyXSA9IHsod2NoYXJfdCkweDEwQUJDRHV9OwogICAgIHNpemVfdCB3dGV4dGxlbiA9IDE7CisgICAgY29uc3Qgd2NoYXJfdCBpbnZhbGlkWzFdID0geyh3Y2hhcl90KTB4MTEwMDAwdX07CiAjZWxzZQogICAgIGNvbnN0IHdjaGFyX3Qgd3RleHRbM10gPSB7KHdjaGFyX3QpMHhEQkVBdSwgKHdjaGFyX3QpMHhERkNEdX07CiAgICAgc2l6ZV90IHd0ZXh0bGVuID0gMjsKQEAgLTEzNjMsNyArMTM4NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUod2lkZSkgIT0gUHlVbmljb2RlX0dFVF9TSVpFKHV0ZjgpKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdpZGUpICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHV0ZjgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRih3aWRlKTsKICAgICAgICAgUHlfREVDUkVGKHV0ZjgpOwogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfd2lkZWNoYXIiLApAQCAtMTM4Miw2ICsxNDAzLDIzIEBACiAKICAgICBQeV9ERUNSRUYod2lkZSk7CiAgICAgUHlfREVDUkVGKHV0ZjgpOworCisjaWYgZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgJiYgKFNJWkVPRl9XQ0hBUl9UID09IDQpCisgICAgd2lkZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoaW52YWxpZCwgMSk7CisgICAgaWYgKHdpZGUgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF93aWRlY2hhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihMXCJcXFUwMDExMDAwMFwiLCAxKSBkaWRuJ3QgZmFpbCIpOworCisgICAgd2lkZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShpbnZhbGlkLCAxKTsKKyAgICBpZiAod2lkZSA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X3dpZGVjaGFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTFwiXFxVMDAxMTAwMDBcIiwgMSkgZGlkbid0IGZhaWwiKTsKKyNlbmRpZgorCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTE1NzYsNyArMTYxNCw3IEBACiAgICAgICAgICAgICAgey0weGZmZmZmZmZMLCAyOCwgLTF9fTsKICAgICBpbnQgaTsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodGVzdGNhc2VzKSAvIHNpemVvZihzdHJ1Y3QgdHJpcGxlKTsgKytpKSB7CisgICAgZm9yIChpID0gMDsgaSA8IFB5X0FSUkFZX0xFTkdUSCh0ZXN0Y2FzZXMpOyArK2kpIHsKICAgICAgICAgUHlPYmplY3QgKnBsb25nID0gUHlMb25nX0Zyb21Mb25nKHRlc3RjYXNlc1tpXS5pbnB1dCk7CiAgICAgICAgIHNpemVfdCBuYml0cyA9IF9QeUxvbmdfTnVtQml0cyhwbG9uZyk7CiAgICAgICAgIGludCBzaWduID0gX1B5TG9uZ19TaWduKHBsb25nKTsKQEAgLTE2MzIsNiArMTY3MCwyOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9zZXRfZXhjX2luZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvcmlnX2V4YzsKKyAgICBQeU9iamVjdCAqbmV3X3R5cGUsICpuZXdfdmFsdWUsICpuZXdfdGI7CisgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRiOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09POnRlc3Rfc2V0X2V4Y19pbmZvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld190eXBlLCAmbmV3X3ZhbHVlLCAmbmV3X3RiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeUVycl9HZXRFeGNJbmZvKCZ0eXBlLCAmdmFsdWUsICZ0Yik7CisKKyAgICBQeV9JTkNSRUYobmV3X3R5cGUpOworICAgIFB5X0lOQ1JFRihuZXdfdmFsdWUpOworICAgIFB5X0lOQ1JFRihuZXdfdGIpOworICAgIFB5RXJyX1NldEV4Y0luZm8obmV3X3R5cGUsIG5ld192YWx1ZSwgbmV3X3RiKTsKKworICAgIG9yaWdfZXhjID0gUHlUdXBsZV9QYWNrKDMsIHR5cGUgPyB0eXBlIDogUHlfTm9uZSwgdmFsdWUgPyB2YWx1ZSA6IFB5X05vbmUsIHRiID8gdGIgOiBQeV9Ob25lKTsKKyAgICBQeV9YREVDUkVGKHR5cGUpOworICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgIFB5X1hERUNSRUYodGIpOworICAgIHJldHVybiBvcmlnX2V4YzsKK30KIAogc3RhdGljIGludCB0ZXN0X3J1bl9jb3VudGVyID0gMDsKIApAQCAtMTc4NiwxMyArMTg0NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgY2hhciAqbXNnOwotICAgIHN0YXRpYyBjb25zdCBQeV9VTklDT0RFIG9uZVtdID0geycxJywgMH07CiAKICNkZWZpbmUgQ0hFQ0tfMV9GT1JNQVQoRk9STUFULCBUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KEZPUk1BVCwgKFRZUEUpMSk7ICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChQeV9VTklDT0RFX3N0cmNtcChQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLCBvbmUpKSB7ICAgICBcCisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHJlc3VsdCwgIjEiKSkgeyAgICAgXAogICAgICAgICBtc2cgPSBGT1JNQVQgIiBmYWlsZWQgYXQgMSI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGdvdG8gRmFpbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMjMxNyw2ICsyMzc3LDE0IEBACiAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwogCiAgICAgc3Vic3RhdGUgPSBQeV9OZXdJbnRlcnByZXRlcigpOworICAgIGlmIChzdWJzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIFNpbmNlIG5vIG5ldyB0aHJlYWQgc3RhdGUgd2FzIGNyZWF0ZWQsIHRoZXJlIGlzIG5vIGV4Y2VwdGlvbiB0bworICAgICAgICAgICBwcm9wYWdhdGU7IHJhaXNlIGEgZnJlc2ggb25lIGFmdGVyIHN3YXBwaW5nIGluIHRoZSBvbGQgdGhyZWFkCisgICAgICAgICAgIHN0YXRlLiAqLworICAgICAgICBQeVRocmVhZFN0YXRlX1N3YXAobWFpbnN0YXRlKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInN1Yi1pbnRlcnByZXRlciBjcmVhdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHIgPSBQeVJ1bl9TaW1wbGVTdHJpbmcoY29kZSk7CiAgICAgUHlfRW5kSW50ZXJwcmV0ZXIoc3Vic3RhdGUpOwogCkBAIC0yMzI1LDYgKzIzOTMsNDQgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHIpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVfdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB0aW1lX3Qgc2VjOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZzZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5TG9uZ19Gcm9tVGltZV90KHNlYyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB0aW1lX3Qgc2VjOworICAgIGxvbmcgdXNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1ldmFsIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbChvYmosICZzZWMsICZ1c2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgX1B5TG9uZ19Gcm9tVGltZV90KHNlYyksIHVzZWMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHRpbWVfdCBzZWM7CisgICAgbG9uZyBuc2VjOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMob2JqLCAmc2VjLCAmbnNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpLCBuc2VjKTsKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzMzQsMTQgKzI0NDAsMTUgQEAKICAgICB7InRlc3RfbGlzdF9hcGkiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbGlzdF9hcGksICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9kaWN0X2l0ZXJhdGlvbiIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9kaWN0X2l0ZXJhdGlvbixNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xhenlfaGFzaF9pbmhlcml0YW5jZSIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbGF6eV9oYXNoX2luaGVyaXRhbmNlLE1FVEhfTk9BUkdTfSwKLSAgICB7InRlc3RfYnJva2VuX21lbW9yeXZpZXciLCAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9icm9rZW5fbWVtb3J5dmlldyxNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfYXBpIiwgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfYXBpLCAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19hbmRfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FuZF9vdmVyZmxvdywKICAgICAgTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9sb25nX2FzX2RvdWJsZSIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FzX2RvdWJsZSxNRVRIX05PQVJHU30sCisgICAgeyJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfYXNfc2l6ZV90LE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19udW1iaXRzIiwgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19udW1iaXRzLCAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9rX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9rX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2VtcHR5X2FyZ3BhcnNlIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfZW1wdHlfYXJncGFyc2UsTUVUSF9OT0FSR1N9LAotICAgIHsidGVzdF9idWdfNzQxNCIsIChQeUNGdW5jdGlvbil0ZXN0X2J1Z183NDE0LCBNRVRIX05PQVJHU30sCisgICAgeyJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMiLCBwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ0ZXN0X251bGxfc3RyaW5ncyIsICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X251bGxfc3RyaW5ncywgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3Rfc3RyaW5nX2Zyb21fZm9ybWF0IiwgKFB5Q0Z1bmN0aW9uKXRlc3Rfc3RyaW5nX2Zyb21fZm9ybWF0LCBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3dpdGhfZG9jc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLApAQCAtMjM1Miw2ICsyNDU5LDggQEAKICAgICB7ImdldGFyZ3NfdHVwbGUiLCAgICAgICAgICAgZ2V0YXJnc190dXBsZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3Nfa2V5d29yZHMiLCAoUHlDRnVuY3Rpb24pZ2V0YXJnc19rZXl3b3JkcywKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImdldGFyZ3Nfa2V5d29yZF9vbmx5IiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZF9vbmx5LAorICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiZ2V0YXJnc19iIiwgICAgICAgICAgICAgICBnZXRhcmdzX2IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19CIiwgICAgICAgICAgICAgICBnZXRhcmdzX0IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19oIiwgICAgICAgICAgICAgICBnZXRhcmdzX2gsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjM2MSw2ICsyNDcwLDcgQEAKICAgICB7ImdldGFyZ3NfaSIsICAgICAgICAgICAgICAgZ2V0YXJnc19pLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfbCIsICAgICAgICAgICAgICAgZ2V0YXJnc19sLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfbiIsICAgICAgICAgICAgICAgZ2V0YXJnc19uLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImdldGFyZ3NfcCIsICAgICAgICAgICAgICAgZ2V0YXJnc19wLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsiZ2V0YXJnc19MIiwgICAgICAgICAgICAgICBnZXRhcmdzX0wsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19LIiwgICAgICAgICAgICAgICBnZXRhcmdzX0ssICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjM2OSw2ICsyNDc5LDcgQEAKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdywgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9MX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9MX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCiAjZW5kaWYKKyAgICB7ImdldGFyZ3NfYyIsICAgICAgICAgICAgICAgZ2V0YXJnc19jLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfcyIsICAgICAgICAgICAgICAgZ2V0YXJnc19zLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3Nfc19zdGFyIiwgICAgICAgICAgZ2V0YXJnc19zX3N0YXIsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3Nfc19oYXNoIiwgICAgICAgICAgZ2V0YXJnc19zX2hhc2gsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTI0MDQsNiArMjUxNSw3IEBACiAjZW5kaWYKICAgICB7InRyYWNlYmFja19wcmludCIsICAgICAgICAgdHJhY2ViYWNrX3ByaW50LCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImV4Y2VwdGlvbl9wcmludCIsICAgICAgICAgZXhjZXB0aW9uX3ByaW50LCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InNldF9leGNfaW5mbyIsICAgICAgICAgICAgdGVzdF9zZXRfZXhjX2luZm8sICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImFyZ3BhcnNpbmciLCAgICAgICAgICAgICAgYXJncGFyc2luZywgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImNvZGVfbmV3ZW1wdHkiLCAgICAgICAgICAgY29kZV9uZXdlbXB0eSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7Im1ha2VfZXhjZXB0aW9uX3dpdGhfZG9jIiwgKFB5Q0Z1bmN0aW9uKW1ha2VfZXhjZXB0aW9uX3dpdGhfZG9jLApAQCAtMjQxMiw2ICsyNTI0LDkgQEAKICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsiY3Jhc2hfbm9fY3VycmVudF90aHJlYWQiLCAoUHlDRnVuY3Rpb24pY3Jhc2hfbm9fY3VycmVudF90aHJlYWQsIE1FVEhfTk9BUkdTfSwKICAgICB7InJ1bl9pbl9zdWJpbnRlcnAiLCAgICAgICAgcnVuX2luX3N1YmludGVycCwgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZV90IiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwgIE1FVEhfVkFSQVJHU30sCisgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgIE1FVEhfVkFSQVJHU30sCisgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjIiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTI1OTQsNyArMjcwOSw2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfVFlQRSgmX0hhc2hJbmhlcml0YW5jZVRlc3Rlcl9UeXBlKT0mUHlUeXBlX1R5cGU7Ci0gICAgUHlfVFlQRSgmX01lbW9yeVZpZXdUZXN0ZXJfVHlwZSk9JlB5VHlwZV9UeXBlOwogCiAgICAgUHlfVFlQRSgmdGVzdF9zdHJ1Y3RtZW1iZXJzVHlwZSk9JlB5VHlwZV9UeXBlOwogICAgIFB5X0lOQ1JFRigmdGVzdF9zdHJ1Y3RtZW1iZXJzVHlwZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCmluZGV4IDVmNzZhN2IuLjYzZWZkYzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCkBAIC0yMyw2ICsyMyw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrX2xvY2s7CiAgICAgUHlPYmplY3QgKmluX3dlYWtyZWZsaXN0OworICAgIGNoYXIgbG9ja2VkOyAvKiBmb3Igc2FuaXR5IGNoZWNraW5nICovCiB9IGxvY2tvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCkBAIC0zMiw5ICszMyw4IEBACiAgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIHNlbGYpOwogICAgIGlmIChzZWxmLT5sb2NrX2xvY2sgIT0gTlVMTCkgewogICAgICAgICAvKiBVbmxvY2sgdGhlIGxvY2sgc28gaXQncyBzYWZlIHRvIGZyZWUgaXQgKi8KLSAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2tfbG9jaywgMCk7Ci0gICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOwotCisgICAgICAgIGlmIChzZWxmLT5sb2NrZWQpCisgICAgICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKICAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CiAgICAgfQogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKQEAgLTUzLDYgKzUzLDcgQEAKICAgICBfUHlUaW1lX3RpbWV2YWwgY3VydGltZTsKICAgICBfUHlUaW1lX3RpbWV2YWwgZW5kdGltZTsKIAorCiAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmVuZHRpbWUpOwogICAgICAgICBlbmR0aW1lLnR2X3NlYyArPSBtaWNyb3NlY29uZHMgLyAoMTAwMCAqIDEwMDApOwpAQCAtNjEsOSArNjIsMTMgQEAKIAogCiAgICAgZG8gewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgbWljcm9zZWNvbmRzLCAxKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgLyogZmlyc3QgYSBzaW1wbGUgbm9uLWJsb2NraW5nIHRyeSB3aXRob3V0IHJlbGVhc2luZyB0aGUgR0lMICovCisgICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgMCwgMCk7CisgICAgICAgIGlmIChyID09IFBZX0xPQ0tfRkFJTFVSRSAmJiBtaWNyb3NlY29uZHMgIT0gMCkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgciA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCBtaWNyb3NlY29uZHMsIDEpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSAKIAogICAgICAgICBpZiAociA9PSBQWV9MT0NLX0lOVFIpIHsKICAgICAgICAgICAgIC8qIFJ1biBzaWduYWwgaGFuZGxlcnMgaWYgd2Ugd2VyZSBpbnRlcnJ1cHRlZC4gIFByb3BhZ2F0ZQpAQCAtNzUsNyArODAsNyBAQAogCiAgICAgICAgICAgICAvKiBJZiB3ZSdyZSB1c2luZyBhIHRpbWVvdXQsIHJlY29tcHV0ZSB0aGUgdGltZW91dCBhZnRlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgKiBzaWduYWxzLCBzaW5jZSB0aG9zZSBjYW4gdGFrZSB0aW1lLiAgKi8KLSAgICAgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPj0gMCkgeworICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKICAgICAgICAgICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmY3VydGltZSk7CiAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gKChlbmR0aW1lLnR2X3NlYyAtIGN1cnRpbWUudHZfc2VjKSAqIDEwMDAwMDAgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kdGltZS50dl91c2VjIC0gY3VydGltZS50dl91c2VjKSk7CkBAIC0xMzQsNiArMTM5LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKHIgPT0gUFlfTE9DS19BQ1FVSVJFRCkKKyAgICAgICAgc2VsZi0+bG9ja2VkID0gMTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHIgPT0gUFlfTE9DS19BQ1FVSVJFRCk7CiB9CiAKQEAgLTE1MiwxMyArMTU5LDEzIEBACiBsb2NrX1B5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2Nrb2JqZWN0ICpzZWxmKQogewogICAgIC8qIFNhbml0eSBjaGVjazogdGhlIGxvY2sgbXVzdCBiZSBsb2NrZWQgKi8KLSAgICBpZiAoUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2tfbG9jaywgMCkpIHsKLSAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CisgICAgaWYgKCFzZWxmLT5sb2NrZWQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRocmVhZEVycm9yLCAicmVsZWFzZSB1bmxvY2tlZCBsb2NrIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOworICAgIHNlbGYtPmxvY2tlZCA9IDA7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtMTc0LDExICsxODEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGxvY2tfbG9ja2VkX2xvY2sobG9ja29iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2tfbG9jaywgMCkpIHsKLSAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7Ci0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMEwpOwotICAgIH0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDFMKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKXNlbGYtPmxvY2tlZCk7CiB9CiAKIFB5RG9jX1NUUlZBUihsb2NrZWRfZG9jLApAQCAtMzEyLDE0ICszMTUsNyBAQAogICAgICAgICBzZWxmLT5ybG9ja19jb3VudCA9IGNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICB9Ci0KLSAgICBpZiAoc2VsZi0+cmxvY2tfY291bnQgPiAwIHx8Ci0gICAgICAgICFQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+cmxvY2tfbG9jaywgMCkpIHsKLSAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA9PSAwKSB7Ci0gICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgICAgIH0KLSAgICAgICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+cmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKLSAgICB9CisgICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+cmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKICAgICBpZiAociA9PSBQWV9MT0NLX0FDUVVJUkVEKSB7CiAgICAgICAgIGFzc2VydChzZWxmLT5ybG9ja19jb3VudCA9PSAwKTsKICAgICAgICAgc2VsZi0+cmxvY2tfb3duZXIgPSB0aWQ7CkBAIC00MTMsNiArNDA5LDEyIEBACiAgICAgbG9uZyBvd25lcjsKICAgICB1bnNpZ25lZCBsb25nIGNvdW50OwogCisgICAgaWYgKHNlbGYtPnJsb2NrX2NvdW50ID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIG93bmVyID0gc2VsZi0+cmxvY2tfb3duZXI7CiAgICAgY291bnQgPSBzZWxmLT5ybG9ja19jb3VudDsKICAgICBzZWxmLT5ybG9ja19jb3VudCA9IDA7CkBAIC01NDEsNiArNTQzLDcgQEAKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzZWxmLT5sb2NrX2xvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgc2VsZi0+bG9ja2VkID0gMDsKICAgICBzZWxmLT5pbl93ZWFrcmVmbGlzdCA9IE5VTEw7CiAgICAgaWYgKHNlbGYtPmxvY2tfbG9jayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKQEAgLTEyMjUsMTEgKzEyMjgsOSBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgdGhyZWFkX21ldGhvZHNbXSA9IHsKICAgICB7InN0YXJ0X25ld190aHJlYWQiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9uZXdfZG9jfSwKKyAgICAgTUVUSF9WQVJBUkdTLCBzdGFydF9uZXdfZG9jfSwKICAgICB7InN0YXJ0X25ldyIsICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9uZXdfZG9jfSwKKyAgICAgTUVUSF9WQVJBUkdTLCBzdGFydF9uZXdfZG9jfSwKICAgICB7ImFsbG9jYXRlX2xvY2siLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9hbGxvY2F0ZV9sb2NrLAogICAgICBNRVRIX05PQVJHUywgYWxsb2NhdGVfZG9jfSwKICAgICB7ImFsbG9jYXRlIiwgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9hbGxvY2F0ZV9sb2NrLApAQCAtMTI0NSw4ICsxMjQ2LDcgQEAKICAgICB7Il9jb3VudCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9fY291bnQsCiAgICAgIE1FVEhfTk9BUkdTLCBfY291bnRfZG9jfSwKICAgICB7InN0YWNrX3NpemUiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9zdGFja19zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja19zaXplX2RvY30sCisgICAgIE1FVEhfVkFSQVJHUywgc3RhY2tfc2l6ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEzMTAsNyArMTMxMCw5IEBACiAKICAgICAvKiBBZGQgYSBzeW1ib2xpYyBjb25zdGFudCAqLwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIFRocmVhZEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfdGhyZWFkLmVycm9yIiwgTlVMTCwgTlVMTCk7CisgICAgVGhyZWFkRXJyb3IgPSBQeUV4Y19SdW50aW1lRXJyb3I7CisgICAgUHlfSU5DUkVGKFRocmVhZEVycm9yKTsKKwogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIFRocmVhZEVycm9yKTsKICAgICBMb2NrdHlwZS50cF9kb2MgPSBsb2NrX2RvYzsKICAgICBQeV9JTkNSRUYoJkxvY2t0eXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RpbWUuYyBiL01vZHVsZXMvX3RpbWUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjYzhlMS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL190aW1lLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAiX3RpbWUuaCIKLQotLyogRXhwb3NlZCBpbiB0aW1lZnVuY3MuaC4gKi8KLXRpbWVfdAotX1B5VGltZV9Eb3VibGVUb1RpbWV0KGRvdWJsZSB4KQotewotICAgIHRpbWVfdCByZXN1bHQ7Ci0gICAgZG91YmxlIGRpZmY7Ci0KLSAgICByZXN1bHQgPSAodGltZV90KXg7Ci0gICAgLyogSG93IG11Y2ggaW5mbyBkaWQgd2UgbG9zZT8gIHRpbWVfdCBtYXkgYmUgYW4gaW50ZWdyYWwgb3IKLSAgICAgKiBmbG9hdGluZyB0eXBlLCBhbmQgd2UgZG9uJ3Qga25vdyB3aGljaC4gIElmIGl0J3MgaW50ZWdyYWwsCi0gICAgICogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIEMgdHJ1bmNhdGVzLCByb3VuZHMsIHJldHVybnMgdGhlIGZsb29yLAotICAgICAqIGV0Yy4gIElmIHdlIGxvc3QgYSBzZWNvbmQgb3IgbW9yZSwgdGhlIEMgcm91bmRpbmcgaXMKLSAgICAgKiB1bnJlYXNvbmFibGUsIG9yIHRoZSBpbnB1dCBqdXN0IGRvZXNuJ3QgZml0IGluIGEgdGltZV90OwotICAgICAqIGNhbGwgaXQgYW4gZXJyb3IgcmVnYXJkbGVzcy4gIE5vdGUgdGhhdCB0aGUgb3JpZ2luYWwgY2FzdCB0bwotICAgICAqIHRpbWVfdCBjYW4gY2F1c2UgYSBDIGVycm9yIHRvbywgYnV0IG5vdGhpbmcgd2UgY2FuIGRvIHRvCi0gICAgICogd29yayBhcm91bmQgdGhhdC4KLSAgICAgKi8KLSAgICBkaWZmID0geCAtIChkb3VibGUpcmVzdWx0OwotICAgIGlmIChkaWZmIDw9IC0xLjAgfHwgZGlmZiA+PSAxLjApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Ci0gICAgICAgIHJlc3VsdCA9ICh0aW1lX3QpLTE7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aW1lLmggYi9Nb2R1bGVzL190aW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNjU5M2IuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fdGltZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0vKiBYWFg6IEl0IGlzIHByb2JhYmx5IGJlc3QgdG8gbW92ZSB0aW1lZnVuY3MuaCBjb250ZW50IGluIGhlcmUsIGFuZAotICAgcmVtb3ZlIGl0IGJ1dCB1c2VyIGNvZGUgbWF5IHJlbHkgb24gaXQuICovCi0jaW5jbHVkZSAidGltZWZ1bmNzLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggMjM5MDZkZS4uNzBmNDcwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtODAsMTggKzgwLDYgQEAKICNlcnJvciAiVGsgb2xkZXIgdGhhbiA4LjMuMSBub3Qgc3VwcG9ydGVkIgogI2VuZGlmCiAKLS8qIFVuaWNvZGUgY29udmVyc2lvbiBhc3N1bWVzIHRoYXQgVGNsX1VuaUNoYXIgaXMgdHdvIGJ5dGVzLgotICAgV2UgY2Fubm90IHRlc3QgdGhpcyBkaXJlY3RseSwgc28gd2UgdGVzdCBVVEYtOCBzaXplIGluc3RlYWQsCi0gICBleHBlY3RpbmcgdGhhdCBUQ0xfVVRGX01BWCBpcyBjaGFuZ2VkIGlmIFRjbCBldmVyIHN1cHBvcnRzCi0gICBlaXRoZXIgVVRGLTE2IG9yIFVDUy00LgotICAgUmVkaGF0IDggc2V0cyBUQ0xfVVRGX01BWCB0byA2LCBhbmQgdXNlcyB3Y2hhcl90IGZvcgotICAgVGNsX1VuaWNoYXIuIFRoaXMgaXMgYWxzbyBvayBhcyBsb25nIGFzIFB5dGhvbiB1c2VzIFVDUy00LAotICAgYXMgd2VsbC4KLSovCi0jaWYgVENMX1VURl9NQVggIT0gMyAmJiAhKGRlZmluZWQoUHlfVU5JQ09ERV9XSURFKSAmJiBUQ0xfVVRGX01BWD09NikKLSNlcnJvciAidW5zdXBwb3J0ZWQgVGNsIGNvbmZpZ3VyYXRpb24iCi0jZW5kaWYKLQogI2lmICEoZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pKQogI2RlZmluZSBIQVZFX0NSRUFURUZJTEVIQU5ETEVSCiAjZW5kaWYKQEAgLTk3NSw0MCArOTYzLDQ2IEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqaW5idWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSk7Ci0gICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh2YWx1ZSk7Ci0gICAgICAgIC8qIFRoaXMgI2lmZGVmIGFzc3VtZXMgdGhhdCBUY2wgdXNlcyBVQ1MtMi4KLSAgICAgICAgICAgU2VlIFRDTF9VVEZfTUFYIHRlc3QgYWJvdmUuICovCi0jaWYgZGVmaW5lZChQeV9VTklDT0RFX1dJREUpICYmIFRDTF9VVEZfTUFYID09IDMKKyAgICAgICAgdm9pZCAqaW5idWY7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICAgICAgaW50IGtpbmQ7CiAgICAgICAgIFRjbF9VbmlDaGFyICpvdXRidWYgPSBOVUxMOwogICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHNpemVfdCBhbGxvY3NpemUgPSAoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfVW5pQ2hhcik7Ci0gICAgICAgIGlmIChhbGxvY3NpemUgPj0gc2l6ZSkKLSAgICAgICAgICAgIG91dGJ1ZiA9IChUY2xfVW5pQ2hhciopY2thbGxvYyhhbGxvY3NpemUpOworICAgICAgICBzaXplX3QgYWxsb2NzaXplOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodmFsdWUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaW5idWYgPSBQeVVuaWNvZGVfREFUQSh2YWx1ZSk7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2YWx1ZSk7CisgICAgICAgIGFsbG9jc2l6ZSA9ICgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9VbmlDaGFyKTsKKyAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilja2FsbG9jKGFsbG9jc2l6ZSk7CiAgICAgICAgIC8qIEVsc2Ugb3ZlcmZsb3cgb2NjdXJyZWQsIGFuZCB3ZSB0YWtlIHRoZSBuZXh0IGV4aXQgKi8KICAgICAgICAgaWYgKCFvdXRidWYpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaW5idWZbaV0gPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluYnVmLCBpKTsKKyAgICAgICAgICAgIC8qIFdlIGNhbm5vdCB0ZXN0IGZvciBzaXplb2YoVGNsX1VuaUNoYXIpIGRpcmVjdGx5LAorICAgICAgICAgICAgICAgc28gd2UgdGVzdCBmb3IgVVRGLTggc2l6ZSBpbnN0ZWFkLiAqLworI2lmIFRDTF9VVEZfTUFYID09IDMKKyAgICAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgLyogVGNsIGRvZXNuJ3QgZG8gVVRGLTE2LCB5ZXQuICovCiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgVSsleCBpcyBhYm92ZSB0aGUgcmFuZ2UgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKFUrMDAwMC1VK0ZGRkYpIGFsbG93ZWQgYnkgVGNsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5idWZbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCk7CiAgICAgICAgICAgICAgICAgY2tmcmVlKEZSRUVDQVNUIG91dGJ1Zik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRidWZbaV0gPSBpbmJ1ZltpXTsKKyNlbmRpZgorICAgICAgICAgICAgb3V0YnVmW2ldID0gY2g7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gVGNsX05ld1VuaWNvZGVPYmoob3V0YnVmLCBzaXplKTsKICAgICAgICAgY2tmcmVlKEZSRUVDQVNUIG91dGJ1Zik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgICAgICByZXR1cm4gVGNsX05ld1VuaWNvZGVPYmooaW5idWYsIHNpemUpOwotI2VuZGlmCi0KICAgICB9CiAgICAgZWxzZSBpZihQeVRjbE9iamVjdF9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgVGNsX09iaiAqdiA9ICgoUHlUY2xPYmplY3QqKXZhbHVlKS0+dmFsdWU7CkBAIC0xMDkwLDI0ICsxMDg0LDE0IEBACiAgICAgfQogCiAgICAgaWYgKHZhbHVlLT50eXBlUHRyID09IGFwcC0+U3RyaW5nVHlwZSkgewotI2lmIGRlZmluZWQoUHlfVU5JQ09ERV9XSURFKSAmJiBUQ0xfVVRGX01BWD09MwotICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgVGNsX1VuaUNoYXIgKmlucHV0OwotICAgICAgICBQeV9VTklDT0RFICpvdXRwdXQ7Ci0KLSAgICAgICAgc2l6ZSA9IFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKTsKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpbnB1dCA9IFRjbF9HZXRVbmljb2RlKHZhbHVlKTsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAgICAgd2hpbGUgKHNpemUtLSkKLSAgICAgICAgICAgICpvdXRwdXQrKyA9ICppbnB1dCsrOwotICAgICAgICByZXR1cm4gcmVzdWx0OworI2lmIFRDTF9VVEZfTUFYPT0zCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0tJTkQsIFRjbF9HZXRVbmljb2RlKHZhbHVlKSwKKyAgICAgICAgICAgIFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKSk7CiAjZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFRjbF9HZXRVbmljb2RlKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSkpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YSgKKyAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ELCBUY2xfR2V0VW5pY29kZSh2YWx1ZSksCisgICAgICAgICAgICBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC0xMzU5LDYgKzEzNDMsMTEgQEAKICAgICBjaGFyICpjbWQ7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxjYWxsIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCiAgICAgY21kICA9IE1lcmdlKGFyZ3MpOwpAQCAtMTQwOCw2ICsxMzk3LDExIEBACiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IGVycjsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgImdsb2JhbGV2YWwgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgIHJldHVybiAwOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdsb2JhbGV2YWwiLCAmc2NyaXB0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE5NzAsOSArMTk2NCwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFRrYXBwX01lcmdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpzID0gTWVyZ2UoYXJncyk7CisgICAgY2hhciAqczsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgIm1lcmdlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHMgPSBNZXJnZShhcmdzKTsKKwogICAgIGlmIChzKSB7CiAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHMpOwogICAgICAgICBja2ZyZWUocyk7CkBAIC0yMDA3LDcgKzIwMDgsNyBAQAogUHl0aG9uQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogICAgIFB5dGhvbkNtZF9DbGllbnREYXRhICpkYXRhID0gKFB5dGhvbkNtZF9DbGllbnREYXRhICopY2xpZW50RGF0YTsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICphcmcsICpyZXM7CisgICAgUHlPYmplY3QgKmZ1bmMsICphcmcsICpyZXM7CiAgICAgaW50IGksIHJ2OwogICAgIFRjbF9PYmogKm9ial9yZXM7CiAKQEAgLTIwMTYsNyArMjAxNyw2IEBACiAgICAgLyogVEJEOiBubyBlcnJvciBjaGVja2luZyBoZXJlIHNpbmNlIHdlIGtub3csIHZpYSB0aGUKICAgICAgKiBUa2FwcF9DcmVhdGVDb21tYW5kKCkgdGhhdCB0aGUgY2xpZW50IGRhdGEgaXMgYSB0d28tdHVwbGUKICAgICAgKi8KLSAgICBzZWxmID0gZGF0YS0+c2VsZjsKICAgICBmdW5jID0gZGF0YS0+ZnVuYzsKIAogICAgIC8qIENyZWF0ZSBhcmd1bWVudCBsaXN0IChhcmd2MSwgLi4uLCBhcmd2TikgKi8KQEAgLTI0MTUsMTEgKzI0MTUsOSBAQAogVGt0dF9SZXByKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFRrdHRPYmplY3QgKnYgPSAoVGt0dE9iamVjdCAqKXNlbGY7Ci0gICAgY2hhciBidWZbMTAwXTsKLQotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIjx0a3RpbWVydG9rZW4gYXQgJXAlcz4iLCB2LAotICAgICAgICAgICAgICAgICAgICB2LT5mdW5jID09IE5VTEwgPyAiLCBoYW5kbGVyIGRlbGV0ZWQiIDogIiIpOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHRrdGltZXJ0b2tlbiBhdCAlcCVzPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmZ1bmMgPT0gTlVMTCA/ICIsIGhhbmRsZXIgZGVsZXRlZCIgOiAiIik7CiB9CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgVGt0dF9UeXBlID0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3dpbmFwaS5jIGIvTW9kdWxlcy9fd2luYXBpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3NDg5MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3dpbmFwaS5jCkBAIC0wLDAgKzEsMTMyOCBAQAorLyoKKyAqIFN1cHBvcnQgcm91dGluZXMgZnJvbSB0aGUgV2luZG93cyBBUEkKKyAqCisgKiBUaGlzIG1vZHVsZSB3YXMgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IG1lcmdpbmcgUEMvX3N1YnByb2Nlc3MuYyB3aXRoCisgKiBNb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvd2luMzJfZnVuY3Rpb25zLmMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IEZyZWRyaWsgTHVuZGggPGZyZWRyaWtAcHl0aG9ud2FyZS5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgU2VjcmV0IExhYnMgQUIsIGh0dHA6Ly93d3cucHl0aG9ud2FyZS5jb20KKyAqIENvcHlyaWdodCAoYykgMjAwNCBieSBQZXRlciBBc3RyYW5kIDxhc3RyYW5kQGx5c2F0b3IubGl1LnNlPgorICoKKyAqIEJ5IG9idGFpbmluZywgdXNpbmcsIGFuZC9vciBjb3B5aW5nIHRoaXMgc29mdHdhcmUgYW5kL29yIGl0cworICogYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLCB5b3UgYWdyZWUgdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLAorICogYW5kIHdpbGwgY29tcGx5IHdpdGggdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9uczoKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzCisgKiBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluCisgKiBhbGwgY29waWVzLCBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCisgKiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgdGhlCisgKiBhdXRob3JzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCisgKiBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKKyAqIHBlcm1pc3Npb24uCisgKgorICogVEhFIEFVVEhPUlMgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCisgKiBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUworICogT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKyAqIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorICoKKyAqLworCisvKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuICovCisvKiBTZWUgaHR0cDovL3d3dy5weXRob24ub3JnLzIuNC9saWNlbnNlIGZvciBsaWNlbnNpbmcgZGV0YWlscy4gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisjZGVmaW5lIFdJTkRPV1NfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgIndpbmRvd3MuaCIKKyNpbmNsdWRlIDxjcnRkYmcuaD4KKworI2lmIGRlZmluZWQoTVNfV0lOMzIpICYmICFkZWZpbmVkKE1TX1dJTjY0KQorI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBcCisgICAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpIGhhbmRsZSkKKyNkZWZpbmUgUFlOVU1fVE9fSEFORExFKG9iaikgKChIQU5ETEUpUHlMb25nX0FzVW5zaWduZWRMb25nKG9iaikpCisjZGVmaW5lIEZfUE9JTlRFUiAiayIKKyNkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkcKKyNlbHNlCisjZGVmaW5lIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpIFwKKyAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIGxvbmcgbG9uZykgaGFuZGxlKQorI2RlZmluZSBQWU5VTV9UT19IQU5ETEUob2JqKSAoKEhBTkRMRSlQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaikpCisjZGVmaW5lIEZfUE9JTlRFUiAiSyIKKyNkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkdMT05HCisjZW5kaWYKKworI2RlZmluZSBGX0hBTkRMRSBGX1BPSU5URVIKKyNkZWZpbmUgRl9EV09SRCAiayIKKyNkZWZpbmUgRl9CT09MICJpIgorI2RlZmluZSBGX1VJTlQgIkkiCisKKyNkZWZpbmUgVF9IQU5ETEUgVF9QT0lOVEVSCisKKy8qIEdyYWIgQ2FuY2VsSW9FeCBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCitzdGF0aWMgaW50IGhhc19DYW5jZWxJb0V4ID0gLTE7CitzdGF0aWMgQk9PTCAoQ0FMTEJBQ0sgKlB5X0NhbmNlbElvRXgpKEhBTkRMRSwgTFBPVkVSTEFQUEVEKTsKKworc3RhdGljIGludAorY2hlY2tfQ2FuY2VsSW9FeCgpCit7CisgICAgaWYgKGhhc19DYW5jZWxJb0V4ID09IC0xKQorICAgIHsKKyAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKKyAgICAgICAgKiAoRkFSUFJPQyAqKSAmUHlfQ2FuY2VsSW9FeCA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5jZWxJb0V4Iik7CisgICAgICAgIGhhc19DYW5jZWxJb0V4ID0gKFB5X0NhbmNlbElvRXggIT0gTlVMTCk7CisgICAgfQorICAgIHJldHVybiBoYXNfQ2FuY2VsSW9FeDsKK30KKworCisvKgorICogQSBQeXRob24gb2JqZWN0IHdyYXBwaW5nIGFuIE9WRVJMQVBQRUQgc3RydWN0dXJlIGFuZCBvdGhlciB1c2VmdWwgZGF0YQorICogZm9yIG92ZXJsYXBwZWQgSS9PCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBPVkVSTEFQUEVEIG92ZXJsYXBwZWQ7CisgICAgLyogRm9yIGNvbnZlbmllbmNlLCB3ZSBzdG9yZSB0aGUgZmlsZSBoYW5kbGUgdG9vICovCisgICAgSEFORExFIGhhbmRsZTsKKyAgICAvKiBXaGV0aGVyIHRoZXJlJ3MgSS9PIGluIGZsaWdodCAqLworICAgIGludCBwZW5kaW5nOworICAgIC8qIFdoZXRoZXIgSS9PIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgKi8KKyAgICBpbnQgY29tcGxldGVkOworICAgIC8qIEJ1ZmZlciB1c2VkIGZvciByZWFkaW5nIChvcHRpb25hbCkgKi8KKyAgICBQeU9iamVjdCAqcmVhZF9idWZmZXI7CisgICAgLyogQnVmZmVyIHVzZWQgZm9yIHdyaXRpbmcgKG9wdGlvbmFsKSAqLworICAgIFB5X2J1ZmZlciB3cml0ZV9idWZmZXI7Cit9IE92ZXJsYXBwZWRPYmplY3Q7CisKK3N0YXRpYyB2b2lkCitvdmVybGFwcGVkX2RlYWxsb2MoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK3sKKyAgICBEV09SRCBieXRlczsKKyAgICBpbnQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgaWYgKHNlbGYtPnBlbmRpbmcpIHsKKyAgICAgICAgLyogbWFrZSBpdCBhIHByb2dyYW1taW5nIGVycm9yIHRvIGRlYWxsb2NhdGUgd2hpbGUgb3BlcmF0aW9uCisgICAgICAgICAgIGlzIHBlbmRpbmcsIGV2ZW4gaWYgd2UgY2FuIHNhZmVseSBjYW5jZWwgaXQgKi8KKyAgICAgICAgaWYgKGNoZWNrX0NhbmNlbElvRXgoKSAmJgorICAgICAgICAgICAgICAgIFB5X0NhbmNlbElvRXgoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCkpCisgICAgICAgICAgICBHZXRPdmVybGFwcGVkUmVzdWx0KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQsICZieXRlcywgVFJVRSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbnMgc3RpbGwgaW4gZmxpZ2h0IHdoaWxlIGRlc3Ryb3lpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgIk92ZXJsYXBwZWQgb2JqZWN0LCB0aGUgcHJvY2VzcyBtYXkgY3Jhc2giKTsKKyAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKE5VTEwpOworICAgIH0KKyAgICBDbG9zZUhhbmRsZShzZWxmLT5vdmVybGFwcGVkLmhFdmVudCk7CisgICAgU2V0TGFzdEVycm9yKGVycik7CisgICAgaWYgKHNlbGYtPndyaXRlX2J1ZmZlci5vYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGYtPndyaXRlX2J1ZmZlcik7CisgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZF9idWZmZXIpOworICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK292ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqd2FpdG9iaikKK3sKKyAgICBpbnQgd2FpdDsKKyAgICBCT09MIHJlczsKKyAgICBEV09SRCB0cmFuc2ZlcnJlZCA9IDA7CisgICAgRFdPUkQgZXJyOworCisgICAgd2FpdCA9IFB5T2JqZWN0X0lzVHJ1ZSh3YWl0b2JqKTsKKyAgICBpZiAod2FpdCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBHZXRPdmVybGFwcGVkUmVzdWx0KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQsICZ0cmFuc2ZlcnJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQgIT0gMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGVyciA9IHJlcyA/IEVSUk9SX1NVQ0NFU1MgOiBHZXRMYXN0RXJyb3IoKTsKKyAgICBzd2l0Y2ggKGVycikgeworICAgICAgICBjYXNlIEVSUk9SX1NVQ0NFU1M6CisgICAgICAgIGNhc2UgRVJST1JfTU9SRV9EQVRBOgorICAgICAgICBjYXNlIEVSUk9SX09QRVJBVElPTl9BQk9SVEVEOgorICAgICAgICAgICAgc2VsZi0+Y29tcGxldGVkID0gMTsKKyAgICAgICAgICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVJST1JfSU9fSU5DT01QTEVURToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgZXJyKTsKKyAgICB9CisgICAgaWYgKHNlbGYtPmNvbXBsZXRlZCAmJiBzZWxmLT5yZWFkX2J1ZmZlciAhPSBOVUxMKSB7CisgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrRXhhY3Qoc2VsZi0+cmVhZF9idWZmZXIpKTsKKyAgICAgICAgaWYgKHRyYW5zZmVycmVkICE9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+cmVhZF9idWZmZXIpICYmCisgICAgICAgICAgICBfUHlCeXRlc19SZXNpemUoJnNlbGYtPnJlYWRfYnVmZmVyLCB0cmFuc2ZlcnJlZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIklJIiwgKHVuc2lnbmVkKSB0cmFuc2ZlcnJlZCwgKHVuc2lnbmVkKSBlcnIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb3ZlcmxhcHBlZF9nZXRidWZmZXIoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIGlmICghc2VsZi0+Y29tcGxldGVkKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGdldCByZWFkIGJ1ZmZlciBiZWZvcmUgR2V0T3ZlcmxhcHBlZFJlc3VsdCgpICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWxzIHRoZSBvcGVyYXRpb24gY29tcGxldGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXMgPSBzZWxmLT5yZWFkX2J1ZmZlciA/IHNlbGYtPnJlYWRfYnVmZmVyIDogUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb3ZlcmxhcHBlZF9jYW5jZWwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK3sKKyAgICBCT09MIHJlcyA9IFRSVUU7CisKKyAgICBpZiAoc2VsZi0+cGVuZGluZykgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjaGVja19DYW5jZWxJb0V4KCkpCisgICAgICAgICAgICByZXMgPSBQeV9DYW5jZWxJb0V4KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXMgPSBDYW5jZWxJbyhzZWxmLT5oYW5kbGUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIC8qIENhbmNlbElvRXggcmV0dXJucyBFUlJPUl9OT1RfRk9VTkQgaWYgdGhlIEkvTyBjb21wbGV0ZWQgaW4tYmV0d2VlbiAqLworICAgIGlmICghcmVzICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PVF9GT1VORCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgb3ZlcmxhcHBlZF9tZXRob2RzW10gPSB7CisgICAgeyJHZXRPdmVybGFwcGVkUmVzdWx0IiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9nZXRidWZmZXIsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9jYW5jZWwsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiBvdmVybGFwcGVkX21lbWJlcnNbXSA9IHsKKyAgICB7ImV2ZW50IiwgVF9IQU5ETEUsCisgICAgIG9mZnNldG9mKE92ZXJsYXBwZWRPYmplY3QsIG92ZXJsYXBwZWQpICsgb2Zmc2V0b2YoT1ZFUkxBUFBFRCwgaEV2ZW50KSwKKyAgICAgUkVBRE9OTFksICJvdmVybGFwcGVkIGV2ZW50IGhhbmRsZSJ9LAorICAgIHtOVUxMfQorfTsKKworUHlUeXBlT2JqZWN0IE92ZXJsYXBwZWRUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIC8qIHRwX25hbWUgICAgICAgICAgICovICJfd2luYXBpLk92ZXJsYXBwZWQiLAorICAgIC8qIHRwX2Jhc2ljc2l6ZSAgICAgICovIHNpemVvZihPdmVybGFwcGVkT2JqZWN0KSwKKyAgICAvKiB0cF9pdGVtc2l6ZSAgICAgICAqLyAwLAorICAgIC8qIHRwX2RlYWxsb2MgICAgICAgICovIChkZXN0cnVjdG9yKSBvdmVybGFwcGVkX2RlYWxsb2MsCisgICAgLyogdHBfcHJpbnQgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9nZXRhdHRyICAgICAgICAqLyAwLAorICAgIC8qIHRwX3NldGF0dHIgICAgICAgICovIDAsCisgICAgLyogdHBfcmVzZXJ2ZWQgICAgICAgKi8gMCwKKyAgICAvKiB0cF9yZXByICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2FzX251bWJlciAgICAgICovIDAsCisgICAgLyogdHBfYXNfc2VxdWVuY2UgICAgKi8gMCwKKyAgICAvKiB0cF9hc19tYXBwaW5nICAgICAqLyAwLAorICAgIC8qIHRwX2hhc2ggICAgICAgICAgICovIDAsCisgICAgLyogdHBfY2FsbCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9zdHIgICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2dldGF0dHJvICAgICAgICovIDAsCisgICAgLyogdHBfc2V0YXR0cm8gICAgICAgKi8gMCwKKyAgICAvKiB0cF9hc19idWZmZXIgICAgICAqLyAwLAorICAgIC8qIHRwX2ZsYWdzICAgICAgICAgICovIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICAvKiB0cF9kb2MgICAgICAgICAgICAqLyAiT1ZFUkxBUFBFRCBzdHJ1Y3R1cmUgd3JhcHBlciIsCisgICAgLyogdHBfdHJhdmVyc2UgICAgICAgKi8gMCwKKyAgICAvKiB0cF9jbGVhciAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICovIDAsCisgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8gMCwKKyAgICAvKiB0cF9pdGVyICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2l0ZXJuZXh0ICAgICAgICovIDAsCisgICAgLyogdHBfbWV0aG9kcyAgICAgICAgKi8gb3ZlcmxhcHBlZF9tZXRob2RzLAorICAgIC8qIHRwX21lbWJlcnMgICAgICAgICovIG92ZXJsYXBwZWRfbWVtYmVycywKKyAgICAvKiB0cF9nZXRzZXQgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICovIDAsCisgICAgLyogdHBfZGljdCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAqLyAwLAorICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICovIDAsCisgICAgLyogdHBfZGljdG9mZnNldCAgICAgKi8gMCwKKyAgICAvKiB0cF9pbml0ICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2FsbG9jICAgICAgICAgICovIDAsCisgICAgLyogdHBfbmV3ICAgICAgICAgICAgKi8gMCwKK307CisKK3N0YXRpYyBPdmVybGFwcGVkT2JqZWN0ICoKK25ld19vdmVybGFwcGVkKEhBTkRMRSBoYW5kbGUpCit7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqc2VsZjsKKworICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoT3ZlcmxhcHBlZE9iamVjdCwgJk92ZXJsYXBwZWRUeXBlKTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNlbGYtPmhhbmRsZSA9IGhhbmRsZTsKKyAgICBzZWxmLT5yZWFkX2J1ZmZlciA9IE5VTEw7CisgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgc2VsZi0+Y29tcGxldGVkID0gMDsKKyAgICBtZW1zZXQoJnNlbGYtPm92ZXJsYXBwZWQsIDAsIHNpemVvZihPVkVSTEFQUEVEKSk7CisgICAgbWVtc2V0KCZzZWxmLT53cml0ZV9idWZmZXIsIDAsIHNpemVvZihQeV9idWZmZXIpKTsKKyAgICAvKiBNYW51YWwgcmVzZXQsIGluaXRpYWxseSBub24tc2lnbmFsbGVkICovCisgICAgc2VsZi0+b3ZlcmxhcHBlZC5oRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiB3aW5kb3dzIEFQSSBmdW5jdGlvbnMgKi8KKworUHlEb2NfU1RSVkFSKENsb3NlSGFuZGxlX2RvYywKKyJDbG9zZUhhbmRsZShoYW5kbGUpIC0+IE5vbmVcblwKK1xuXAorQ2xvc2UgaGFuZGxlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0Nsb3NlSGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBIQU5ETEUgaE9iamVjdDsKKyAgICBCT09MIHN1Y2Nlc3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3VjY2VzcyA9IENsb3NlSGFuZGxlKGhPYmplY3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBIQU5ETEUgaE5hbWVkUGlwZTsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworICAgIEJPT0wgc3VjY2VzczsKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJ8IiBGX0JPT0wsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKKyAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhOYW1lZFBpcGUpOworICAgICAgICBpZiAoIW92ZXJsYXBwZWQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3VjY2VzcyA9IENvbm5lY3ROYW1lZFBpcGUoaE5hbWVkUGlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkID8gJm92ZXJsYXBwZWQtPm92ZXJsYXBwZWQgOiBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKG92ZXJsYXBwZWQpIHsKKyAgICAgICAgaW50IGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAvKiBPdmVybGFwcGVkIENvbm5lY3ROYW1lZFBpcGUgbmV2ZXIgcmV0dXJucyBhIHN1Y2Nlc3MgY29kZSAqLworICAgICAgICBhc3NlcnQoc3VjY2VzcyA9PSAwKTsKKyAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JT19QRU5ESU5HKQorICAgICAgICAgICAgb3ZlcmxhcHBlZC0+cGVuZGluZyA9IDE7CisgICAgICAgIGVsc2UgaWYgKGVyciA9PSBFUlJPUl9QSVBFX0NPTk5FQ1RFRCkKKyAgICAgICAgICAgIFNldEV2ZW50KG92ZXJsYXBwZWQtPm92ZXJsYXBwZWQuaEV2ZW50KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG92ZXJsYXBwZWQ7CisgICAgfQorICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgTFBDVFNUUiBscEZpbGVOYW1lOworICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKKyAgICBEV09SRCBkd1NoYXJlTW9kZTsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7CisgICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uOworICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzOworICAgIEhBTkRMRSBoVGVtcGxhdGVGaWxlOworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfSEFORExFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBGaWxlTmFtZSwgJmR3RGVzaXJlZEFjY2VzcywgJmR3U2hhcmVNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMsICZkd0NyZWF0aW9uRGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkd0ZsYWdzQW5kQXR0cmlidXRlcywgJmhUZW1wbGF0ZUZpbGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGxwRmlsZU5hbWUsIGR3RGVzaXJlZEFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLCBscFNlY3VyaXR5QXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCBoVGVtcGxhdGVGaWxlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBMUENUU1RSIGxwTmFtZTsKKyAgICBEV09SRCBkd09wZW5Nb2RlOworICAgIERXT1JEIGR3UGlwZU1vZGU7CisgICAgRFdPUkQgbk1heEluc3RhbmNlczsKKyAgICBEV09SRCBuT3V0QnVmZmVyU2l6ZTsKKyAgICBEV09SRCBuSW5CdWZmZXJTaXplOworICAgIERXT1JEIG5EZWZhdWx0VGltZU91dDsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCBGX0RXT1JEIEZfRFdPUkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfRFdPUkQgRl9QT0lOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBOYW1lLCAmZHdPcGVuTW9kZSwgJmR3UGlwZU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuTWF4SW5zdGFuY2VzLCAmbk91dEJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuSW5CdWZmZXJTaXplLCAmbkRlZmF1bHRUaW1lT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBoYW5kbGUgPSBDcmVhdGVOYW1lZFBpcGUobHBOYW1lLCBkd09wZW5Nb2RlLCBkd1BpcGVNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuTWF4SW5zdGFuY2VzLCBuT3V0QnVmZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkluQnVmZmVyU2l6ZSwgbkRlZmF1bHRUaW1lT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscFNlY3VyaXR5QXR0cmlidXRlcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworfQorCitQeURvY19TVFJWQVIoQ3JlYXRlUGlwZV9kb2MsCisiQ3JlYXRlUGlwZShwaXBlX2F0dHJzLCBzaXplKSAtPiAocmVhZF9oYW5kbGUsIHdyaXRlX2hhbmRsZSlcblwKK1xuXAorQ3JlYXRlIGFuIGFub255bW91cyBwaXBlLCBhbmQgcmV0dXJuIGhhbmRsZXMgdG8gdGhlIHJlYWQgYW5kXG5cCit3cml0ZSBlbmRzIG9mIHRoZSBwaXBlLlxuXAorXG5cCitwaXBlX2F0dHJzIGlzIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlUGlwZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgSEFORExFIHJlYWRfcGlwZTsKKyAgICBIQU5ETEUgd3JpdGVfcGlwZTsKKyAgICBCT09MIHJlc3VsdDsKKworICAgIFB5T2JqZWN0KiBwaXBlX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KKyAgICBEV09SRCBzaXplOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIgRl9EV09SRCAiOkNyZWF0ZVBpcGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpcGVfYXR0cmlidXRlcywgJnNpemUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBDcmVhdGVQaXBlKCZyZWFkX3BpcGUsICZ3cml0ZV9waXBlLCBOVUxMLCBzaXplKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCisgICAgICAgICJOTiIsIEhBTkRMRV9UT19QWU5VTShyZWFkX3BpcGUpLCBIQU5ETEVfVE9fUFlOVU0od3JpdGVfcGlwZSkpOworfQorCisvKiBoZWxwZXJzIGZvciBjcmVhdGVwcm9jZXNzICovCisKK3N0YXRpYyB1bnNpZ25lZCBsb25nCitnZXR1bG9uZyhQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQoreworICAgIFB5T2JqZWN0KiB2YWx1ZTsKKyAgICB1bnNpZ25lZCBsb25nIHJldDsKKworICAgIHZhbHVlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIG5hbWUpOworICAgIGlmICghIHZhbHVlKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIEZJWE1FOiBwcm9wYWdhdGUgZXJyb3I/ICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcodmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEhBTkRMRQorZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCit7CisgICAgUHlPYmplY3QqIHZhbHVlOworICAgIEhBTkRMRSByZXQ7CisKKyAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBuYW1lKTsKKyAgICBpZiAoISB2YWx1ZSkgeworICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yPyAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCisgICAgICAgIHJldCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICByZXQgPSBQWU5VTV9UT19IQU5ETEUodmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZ2V0ZW52aXJvbm1lbnQoUHlPYmplY3QqIGVudmlyb25tZW50KQoreworICAgIFB5X3NzaXplX3QgaSwgZW52c2l6ZSwgdG90YWxzaXplOworICAgIFB5X1VDUzQgKmJ1ZmZlciA9IE5VTEwsICpwLCAqZW5kOworICAgIFB5T2JqZWN0ICprZXlzLCAqdmFsdWVzLCAqcmVzOworCisgICAgLyogY29udmVydCBlbnZpcm9ubWVudCBkaWN0aW9uYXJ5IHRvIHdpbmRvd3MgZW52aXJvbWVudCBzdHJpbmcgKi8KKyAgICBpZiAoISBQeU1hcHBpbmdfQ2hlY2soZW52aXJvbm1lbnQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwgImVudmlyb25tZW50IG11c3QgYmUgZGljdGlvbmFyeSBvciBOb25lIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGVudnNpemUgPSBQeU1hcHBpbmdfTGVuZ3RoKGVudmlyb25tZW50KTsKKworICAgIGtleXMgPSBQeU1hcHBpbmdfS2V5cyhlbnZpcm9ubWVudCk7CisgICAgdmFsdWVzID0gUHlNYXBwaW5nX1ZhbHVlcyhlbnZpcm9ubWVudCk7CisgICAgaWYgKCFrZXlzIHx8ICF2YWx1ZXMpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB0b3RhbHNpemUgPSAxOyAvKiB0cmFpbGluZyBudWxsIGNoYXJhY3RlciAqLworICAgIGZvciAoaSA9IDA7IGkgPCBlbnZzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QqIGtleSA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKKyAgICAgICAgUHlPYmplY3QqIHZhbHVlID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlcywgaSk7CisKKyAgICAgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKGtleSkgfHwgISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudCBjYW4gb25seSBjb250YWluIHN0cmluZ3MiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgdG90YWxzaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGtleSkgKyAxOyAgICAvKiArMSBmb3IgJz0nICovCisgICAgICAgIHRvdGFsc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSkgKyAxOyAgLyogKzEgZm9yICdcMCcgKi8KKyAgICB9CisKKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2ModG90YWxzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICBpZiAoISBidWZmZXIpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcCA9IGJ1ZmZlcjsKKyAgICBlbmQgPSBidWZmZXIgKyB0b3RhbHNpemU7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZW52c2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0KiBrZXkgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7CisgICAgICAgIFB5T2JqZWN0KiB2YWx1ZSA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZXMsIGkpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQoa2V5LCBwLCBlbmQgLSBwLCAwKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoa2V5KTsKKyAgICAgICAgKnArKyA9ICc9JzsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KHZhbHVlLCBwLCBlbmQgLSBwLCAwKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpOworICAgICAgICAqcCsrID0gJ1wwJzsKKyAgICB9CisKKyAgICAvKiBhZGQgdHJhaWxpbmcgbnVsbCBieXRlICovCisgICAgKnArKyA9ICdcMCc7CisgICAgYXNzZXJ0KHAgPT0gZW5kKTsKKworICAgIFB5X1hERUNSRUYoa2V5cyk7CisgICAgUHlfWERFQ1JFRih2YWx1ZXMpOworCisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgYnVmZmVyLCBwIC0gYnVmZmVyKTsKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisgICAgcmV0dXJuIHJlczsKKworIGVycm9yOgorICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIFB5X1hERUNSRUYodmFsdWVzKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKENyZWF0ZVByb2Nlc3NfZG9jLAorIkNyZWF0ZVByb2Nlc3MoYXBwX25hbWUsIGNtZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsXG5cCisgICAgICAgICAgICAgICBpbmhlcml0LCBmbGFncywgZW52X21hcHBpbmcsIGN1cmRpcixcblwKKyAgICAgICAgICAgICAgIHN0YXJ0dXBfaW5mbykgLT4gKHByb2NfaGFuZGxlLCB0aHJlYWRfaGFuZGxlLFxuXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB0aWQpXG5cCitcblwKK0NyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuIFRoZSByZXR1cm5cblwKK3ZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuXAorcHJvY2VzcyBJRCwgYW5kIHRocmVhZCBJRC5cblwKK1xuXAorcHJvY19hdHRycyBhbmQgdGhyZWFkX2F0dHJzIGFyZSBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEJPT0wgcmVzdWx0OworICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcGk7CisgICAgU1RBUlRVUElORk9XIHNpOworICAgIFB5T2JqZWN0KiBlbnZpcm9ubWVudDsKKyAgICB3Y2hhcl90ICp3ZW52aXJvbm1lbnQ7CisKKyAgICB3Y2hhcl90KiBhcHBsaWNhdGlvbl9uYW1lOworICAgIHdjaGFyX3QqIGNvbW1hbmRfbGluZTsKKyAgICBQeU9iamVjdCogcHJvY2Vzc19hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCisgICAgUHlPYmplY3QqIHRocmVhZF9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCisgICAgQk9PTCBpbmhlcml0X2hhbmRsZXM7CisgICAgRFdPUkQgY3JlYXRpb25fZmxhZ3M7CisgICAgUHlPYmplY3QqIGVudl9tYXBwaW5nOworICAgIHdjaGFyX3QqIGN1cnJlbnRfZGlyZWN0b3J5OworICAgIFB5T2JqZWN0KiBzdGFydHVwX2luZm87CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PIiBGX0JPT0wgRl9EV09SRCAiT1pPOkNyZWF0ZVByb2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tbWFuZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3NfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJlYWRfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlYXRpb25fZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW52X21hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnR1cF9pbmZvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBaZXJvTWVtb3J5KCZzaSwgc2l6ZW9mKHNpKSk7CisgICAgc2kuY2IgPSBzaXplb2Yoc2kpOworCisgICAgLyogbm90ZTogd2Ugb25seSBzdXBwb3J0IGEgc21hbGwgc3Vic2V0IG9mIGFsbCBTSSBhdHRyaWJ1dGVzICovCisgICAgc2kuZHdGbGFncyA9IGdldHVsb25nKHN0YXJ0dXBfaW5mbywgImR3RmxhZ3MiKTsKKyAgICBzaS53U2hvd1dpbmRvdyA9IChXT1JEKWdldHVsb25nKHN0YXJ0dXBfaW5mbywgIndTaG93V2luZG93Iik7CisgICAgc2kuaFN0ZElucHV0ID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRJbnB1dCIpOworICAgIHNpLmhTdGRPdXRwdXQgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZE91dHB1dCIpOworICAgIHNpLmhTdGRFcnJvciA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkRXJyb3IiKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZW52X21hcHBpbmcgIT0gUHlfTm9uZSkgeworICAgICAgICBlbnZpcm9ubWVudCA9IGdldGVudmlyb25tZW50KGVudl9tYXBwaW5nKTsKKyAgICAgICAgaWYgKCEgZW52aXJvbm1lbnQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgd2Vudmlyb25tZW50ID0gUHlVbmljb2RlX0FzVW5pY29kZShlbnZpcm9ubWVudCk7CisgICAgICAgIGlmICh3ZW52aXJvbm1lbnQgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgUHlfWERFQ1JFRihlbnZpcm9ubWVudCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZW52aXJvbm1lbnQgPSBOVUxMOworICAgICAgICB3ZW52aXJvbm1lbnQgPSBOVUxMOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBDcmVhdGVQcm9jZXNzVyhhcHBsaWNhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0X2hhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbl9mbGFncyB8IENSRUFURV9VTklDT0RFX0VOVklST05NRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vudmlyb25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGkpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeV9YREVDUkVGKGVudmlyb25tZW50KTsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTmtrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfVE9fUFlOVU0ocGkuaFByb2Nlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9UT19QWU5VTShwaS5oVGhyZWFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1Byb2Nlc3NJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1RocmVhZElkKTsKK30KKworUHlEb2NfU1RSVkFSKER1cGxpY2F0ZUhhbmRsZV9kb2MsCisiRHVwbGljYXRlSGFuZGxlKHNvdXJjZV9wcm9jX2hhbmRsZSwgc291cmNlX2hhbmRsZSxcblwKKyAgICAgICAgICAgICAgICAgdGFyZ2V0X3Byb2NfaGFuZGxlLCB0YXJnZXRfaGFuZGxlLCBhY2Nlc3MsXG5cCisgICAgICAgICAgICAgICAgIGluaGVyaXRbLCBvcHRpb25zXSkgLT4gaGFuZGxlXG5cCitcblwKK1JldHVybiBhIGR1cGxpY2F0ZSBoYW5kbGUgb2JqZWN0LlxuXAorXG5cCitUaGUgZHVwbGljYXRlIGhhbmRsZSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIHRoZSBvcmlnaW5hbFxuXAoraGFuZGxlLiBUaGVyZWZvcmUsIGFueSBjaGFuZ2VzIHRvIHRoZSBvYmplY3QgYXJlIHJlZmxlY3RlZFxuXAordGhyb3VnaCBib3RoIGhhbmRsZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfRHVwbGljYXRlSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBIQU5ETEUgdGFyZ2V0X2hhbmRsZTsKKyAgICBCT09MIHJlc3VsdDsKKworICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGU7CisgICAgSEFORExFIHNvdXJjZV9oYW5kbGU7CisgICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZTsKKyAgICBEV09SRCBkZXNpcmVkX2FjY2VzczsKKyAgICBCT09MIGluaGVyaXRfaGFuZGxlOworICAgIERXT1JEIG9wdGlvbnMgPSAwOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgRl9IQU5ETEUgRl9IQU5ETEUgRl9EV09SRCBGX0JPT0wgRl9EV09SRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjpEdXBsaWNhdGVIYW5kbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gRHVwbGljYXRlSGFuZGxlKAorICAgICAgICBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgIHNvdXJjZV9oYW5kbGUsCisgICAgICAgIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgJnRhcmdldF9oYW5kbGUsCisgICAgICAgIGRlc2lyZWRfYWNjZXNzLAorICAgICAgICBpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgb3B0aW9ucworICAgICk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0odGFyZ2V0X2hhbmRsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfRXhpdFByb2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFVJTlQgdUV4aXRDb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfVUlOVCwgJnVFeGl0Q29kZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgI2lmIGRlZmluZWQoUHlfREVCVUcpCisgICAgICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTfFNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUfAorICAgICAgICAgICAgICAgICAgICAgU0VNX05PR1BGQVVMVEVSUk9SQk9YfFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOworICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0RFQlVHKTsKKyAgICAjZW5kaWYKKworICAgIEV4aXRQcm9jZXNzKHVFeGl0Q29kZSk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKEdldEN1cnJlbnRQcm9jZXNzX2RvYywKKyJHZXRDdXJyZW50UHJvY2VzcygpIC0+IGhhbmRsZVxuXAorXG5cCitSZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldEN1cnJlbnRQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0Q3VycmVudFByb2Nlc3MiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKEdldEN1cnJlbnRQcm9jZXNzKCkpOworfQorCitQeURvY19TVFJWQVIoR2V0RXhpdENvZGVQcm9jZXNzX2RvYywKKyJHZXRFeGl0Q29kZVByb2Nlc3MoaGFuZGxlKSAtPiBFeGl0IGNvZGVcblwKK1xuXAorUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldEV4aXRDb2RlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgRFdPUkQgZXhpdF9jb2RlOworICAgIEJPT0wgcmVzdWx0OworCisgICAgSEFORExFIHByb2Nlc3M7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBHZXRFeGl0Q29kZVByb2Nlc3MocHJvY2VzcywgJmV4aXRfY29kZSk7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZXhpdF9jb2RlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRMYXN0RXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfRFdPUkQsIEdldExhc3RFcnJvcigpKTsKK30KKworUHlEb2NfU1RSVkFSKEdldE1vZHVsZUZpbGVOYW1lX2RvYywKKyJHZXRNb2R1bGVGaWxlTmFtZShtb2R1bGUpIC0+IHBhdGhcblwKK1xuXAorUmV0dXJuIHRoZSBmdWxseS1xdWFsaWZpZWQgcGF0aCBmb3IgdGhlIGZpbGUgdGhhdCBjb250YWluc1xuXAordGhlIHNwZWNpZmllZCBtb2R1bGUuIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gbG9hZGVkIGJ5IHRoZVxuXAorY3VycmVudCBwcm9jZXNzLlxuXAorXG5cCitUaGUgbW9kdWxlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBoYW5kbGUgdG8gdGhlIGxvYWRlZCBtb2R1bGVcblwKK3dob3NlIHBhdGggaXMgYmVpbmcgcmVxdWVzdGVkLiBJZiB0aGlzIHBhcmFtZXRlciBpcyAwLCBcblwKK0dldE1vZHVsZUZpbGVOYW1lIHJldHJpZXZlcyB0aGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlXG5cCitvZiB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldE1vZHVsZUZpbGVOYW1lKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBCT09MIHJlc3VsdDsKKyAgICBITU9EVUxFIG1vZHVsZTsKKyAgICBXQ0hBUiBmaWxlbmFtZVtNQVhfUEFUSF07CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZHVsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gR2V0TW9kdWxlRmlsZU5hbWVXKG1vZHVsZSwgZmlsZW5hbWUsIE1BWF9QQVRIKTsKKyAgICBmaWxlbmFtZVtNQVhfUEFUSC0xXSA9ICdcMCc7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihmaWxlbmFtZSwgd2NzbGVuKGZpbGVuYW1lKSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRTdGRIYW5kbGVfZG9jLAorIkdldFN0ZEhhbmRsZShoYW5kbGUpIC0+IGludGVnZXJcblwKK1xuXAorUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlXG5cCisoU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIFNURF9FUlJPUl9IQU5ETEUpLlxuXAorVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldFN0ZEhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBEV09SRCBzdGRfaGFuZGxlOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEICI6R2V0U3RkSGFuZGxlIiwgJnN0ZF9oYW5kbGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBoYW5kbGUgPSBHZXRTdGRIYW5kbGUoc3RkX2hhbmRsZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICBpZiAoISBoYW5kbGUpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICB9CisKKyAgICAvKiBub3RlOiByZXR1cm5zIGludGVnZXIsIG5vdCBoYW5kbGUgb2JqZWN0ICovCisgICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpOworfQorCitQeURvY19TVFJWQVIoR2V0VmVyc2lvbl9kb2MsCisiR2V0VmVyc2lvbigpIC0+IHZlcnNpb25cblwKK1xuXAorUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldFZlcnNpb24oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpHZXRWZXJzaW9uIikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKEdldFZlcnNpb24oKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfT3BlblByb2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKKyAgICBCT09MIGJJbmhlcml0SGFuZGxlOworICAgIERXT1JEIGR3UHJvY2Vzc0lkOworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9EV09SRCBGX0JPT0wgRl9EV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3RGVzaXJlZEFjY2VzcywgJmJJbmhlcml0SGFuZGxlLCAmZHdQcm9jZXNzSWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGhhbmRsZSA9IE9wZW5Qcm9jZXNzKGR3RGVzaXJlZEFjY2VzcywgYkluaGVyaXRIYW5kbGUsIGR3UHJvY2Vzc0lkKTsKKyAgICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1BlZWtOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHNpemUgPSAwOworICAgIFB5T2JqZWN0ICpidWYgPSBOVUxMOworICAgIERXT1JEIG5yZWFkLCBuYXZhaWwsIG5sZWZ0OworICAgIEJPT0wgcmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJ8aTpQZWVrTmFtZWRQaXBlIiAsICZoYW5kbGUsICZzaXplKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBzaXplIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzaXplKSB7CisgICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgICAgIGlmICghYnVmKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmV0ID0gUGVla05hbWVkUGlwZShoYW5kbGUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZiksIHNpemUsICZucmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmF2YWlsLCAmbmxlZnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmLCBucmVhZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5paSIsIGJ1ZiwgbmF2YWlsLCBubGVmdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJldCA9IFBlZWtOYW1lZFBpcGUoaGFuZGxlLCBOVUxMLCAwLCBOVUxMLCAmbmF2YWlsLCAmbmxlZnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpaSIsIG5hdmFpbCwgbmxlZnQpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHNpemU7CisgICAgRFdPUkQgbnJlYWQ7CisgICAgUHlPYmplY3QgKmJ1ZjsKKyAgICBCT09MIHJldDsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworICAgIERXT1JEIGVycjsKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmICghYnVmKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKKyAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhhbmRsZSk7CisgICAgICAgIGlmICghb3ZlcmxhcHBlZCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAvKiBTdGVhbHMgcmVmZXJlbmNlIHRvIGJ1ZiAqLworICAgICAgICBvdmVybGFwcGVkLT5yZWFkX2J1ZmZlciA9IGJ1ZjsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gUmVhZEZpbGUoaGFuZGxlLCBQeUJ5dGVzX0FTX1NUUklORyhidWYpLCBzaXplLCAmbnJlYWQsCisgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGVyciA9IHJldCA/IDAgOiBHZXRMYXN0RXJyb3IoKTsKKworICAgIGlmIChvdmVybGFwcGVkKSB7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lPX1BFTkRJTkcpCisgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZC0+cGVuZGluZyA9IDE7CisgICAgICAgICAgICBlbHNlIGlmIChlcnIgIT0gRVJST1JfTU9SRV9EQVRBKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTkkiLCAoUHlPYmplY3QgKikgb3ZlcmxhcHBlZCwgZXJyKTsKKyAgICB9CisKKyAgICBpZiAoIXJldCAmJiBlcnIgIT0gRVJST1JfTU9SRV9EQVRBKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgfQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ1ZiwgbnJlYWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTkkiLCBidWYsIGVycik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEhBTkRMRSBoTmFtZWRQaXBlOworICAgIFB5T2JqZWN0ICpvQXJnc1szXTsKKyAgICBEV09SRCBkd0FyZ3NbM10sICpwQXJnc1szXSA9IHtOVUxMLCBOVUxMLCBOVUxMfTsKKyAgICBpbnQgaTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmhOYW1lZFBpcGUsICZvQXJnc1swXSwgJm9BcmdzWzFdLCAmb0FyZ3NbMl0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICBmb3IgKGkgPSAwIDsgaSA8IDMgOyBpKyspIHsKKyAgICAgICAgaWYgKG9BcmdzW2ldICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGR3QXJnc1tpXSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sob0FyZ3NbaV0pOworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBwQXJnc1tpXSA9ICZkd0FyZ3NbaV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIVNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKGhOYW1lZFBpcGUsIHBBcmdzWzBdLCBwQXJnc1sxXSwgcEFyZ3NbMl0pKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKFRlcm1pbmF0ZVByb2Nlc3NfZG9jLAorIlRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpIC0+IE5vbmVcblwKK1xuXAorVGVybWluYXRlIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBhbmQgYWxsIG9mIGl0cyB0aHJlYWRzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEJPT0wgcmVzdWx0OworCisgICAgSEFORExFIHByb2Nlc3M7CisgICAgVUlOVCBleGl0X2NvZGU7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSBGX1VJTlQgIjpUZXJtaW5hdGVQcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzLCAmZXhpdF9jb2RlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBUZXJtaW5hdGVQcm9jZXNzKHByb2Nlc3MsIGV4aXRfY29kZSk7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV2FpdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgTFBDVFNUUiBscE5hbWVkUGlwZU5hbWU7CisgICAgRFdPUkQgblRpbWVPdXQ7CisgICAgQk9PTCBzdWNjZXNzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JELCAmbHBOYW1lZFBpcGVOYW1lLCAmblRpbWVPdXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShscE5hbWVkUGlwZU5hbWUsIG5UaW1lT3V0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBEV09SRCByZXN1bHQ7CisgICAgUHlPYmplY3QgKmhhbmRsZV9zZXE7CisgICAgSEFORExFIGhhbmRsZXNbTUFYSU1VTV9XQUlUX09CSkVDVFNdOworICAgIEhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbmhhbmRsZXMsIGk7CisgICAgQk9PTCB3YWl0X2ZsYWc7CisgICAgRFdPUkQgbWlsbGlzZWNvbmRzID0gSU5GSU5JVEU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfQk9PTCAifCIgRl9EV09SRAorICAgICAgICAgICAgICAgICAgICAgICAgICAiOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKGhhbmRsZV9zZXEpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAic2VxdWVuY2UgdHlwZSBleHBlY3RlZCwgZ290ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShoYW5kbGVfc2VxKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuaGFuZGxlcyA9IFB5U2VxdWVuY2VfTGVuZ3RoKGhhbmRsZV9zZXEpOworICAgIGlmIChuaGFuZGxlcyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG5oYW5kbGVzIDwgMCB8fCBuaGFuZGxlcyA+PSBNQVhJTVVNX1dBSVRfT0JKRUNUUyAtIDEpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBhdCBtb3N0ICV6ZCBoYW5kbGVzLCBnb3QgYSBzZXF1ZW5jZSBvZiBsZW5ndGggJXpkIiwKKyAgICAgICAgICAgICAgICAgICAgIE1BWElNVU1fV0FJVF9PQkpFQ1RTIC0gMSwgbmhhbmRsZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG5oYW5kbGVzOyBpKyspIHsKKyAgICAgICAgSEFORExFIGg7CisgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGhhbmRsZV9zZXEsIGkpOworICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UodiwgRl9IQU5ETEUsICZoKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlc1tpXSA9IGg7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICB9CisgICAgLyogSWYgdGhpcyBpcyB0aGUgbWFpbiB0aHJlYWQgdGhlbiBtYWtlIHRoZSB3YWl0IGludGVycnVwdGlibGUKKyAgICAgICBieSBDdHJsLUMgdW5sZXNzIHdlIGFyZSB3YWl0aW5nIGZvciAqYWxsKiBoYW5kbGVzICovCisgICAgaWYgKCF3YWl0X2ZsYWcgJiYgX1B5T1NfSXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgc2lnaW50X2V2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgYXNzZXJ0KHNpZ2ludF9ldmVudCAhPSBOVUxMKTsKKyAgICAgICAgaGFuZGxlc1tuaGFuZGxlcysrXSA9IHNpZ2ludF9ldmVudDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHNpZ2ludF9ldmVudCAhPSBOVUxMKQorICAgICAgICBSZXNldEV2ZW50KHNpZ2ludF9ldmVudCk7CisgICAgcmVzdWx0ID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cygoRFdPUkQpIG5oYW5kbGVzLCBoYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9mbGFnLCBtaWxsaXNlY29uZHMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgZWxzZSBpZiAoc2lnaW50X2V2ZW50ICE9IE5VTEwgJiYgcmVzdWx0ID09IFdBSVRfT0JKRUNUXzAgKyBuaGFuZGxlcyAtIDEpIHsKKyAgICAgICAgZXJybm8gPSBFSU5UUjsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChpbnQpIHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvYywKKyJXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgdGltZW91dCkgLT4gcmVzdWx0XG5cCitcblwKK1dhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yXG5cCit0aGUgdGltZS1vdXQgaW50ZXJ2YWwgZWxhcHNlcy4gVGhlIHRpbWVvdXQgdmFsdWUgaXMgc3BlY2lmaWVkXG5cCitpbiBtaWxsaXNlY29uZHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgRFdPUkQgcmVzdWx0OworCisgICAgSEFORExFIGhhbmRsZTsKKyAgICBEV09SRCBtaWxsaXNlY29uZHM7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSBGX0RXT1JEICI6V2FpdEZvclNpbmdsZU9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbGxpc2Vjb25kcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCBtaWxsaXNlY29uZHMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV3JpdGVGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBQeV9idWZmZXIgX2J1ZiwgKmJ1ZjsKKyAgICBQeU9iamVjdCAqYnVmb2JqOworICAgIERXT1JEIHdyaXR0ZW47CisgICAgQk9PTCByZXQ7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKyAgICBEV09SRCBlcnI7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKworICAgIC8qIEZpcnN0IGdldCBoYW5kbGUgYW5kIHVzZV9vdmVybGFwcGVkIHRvIGtub3cgd2hpY2ggUHlfYnVmZmVyIHRvIHVzZSAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJmJ1Zm9iaiwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKKyAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhhbmRsZSk7CisgICAgICAgIGlmICghb3ZlcmxhcHBlZCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBidWYgPSAmb3ZlcmxhcHBlZC0+d3JpdGVfYnVmZmVyOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGJ1ZiA9ICZfYnVmOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShidWZvYmosICJ5KiIsIGJ1ZikpIHsKKyAgICAgICAgUHlfWERFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IFdyaXRlRmlsZShoYW5kbGUsIGJ1Zi0+YnVmLCBidWYtPmxlbiwgJndyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBlcnIgPSByZXQgPyAwIDogR2V0TGFzdEVycm9yKCk7CisKKyAgICBpZiAob3ZlcmxhcHBlZCkgeworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JT19QRU5ESU5HKQorICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQtPnBlbmRpbmcgPSAxOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTkkiLCAoUHlPYmplY3QgKikgb3ZlcmxhcHBlZCwgZXJyKTsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJ1Zik7CisgICAgaWYgKCFyZXQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiSUkiLCB3cml0dGVuLCBlcnIpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiB3aW5hcGlfZnVuY3Rpb25zW10gPSB7CisgICAgeyJDbG9zZUhhbmRsZSIsIHdpbmFwaV9DbG9zZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAorICAgICBDbG9zZUhhbmRsZV9kb2N9LAorICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgIiJ9LAorICAgIHsiQ3JlYXRlRmlsZSIsIHdpbmFwaV9DcmVhdGVGaWxlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IkNyZWF0ZU5hbWVkUGlwZSIsIHdpbmFwaV9DcmVhdGVOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiQ3JlYXRlUGlwZSIsIHdpbmFwaV9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgIENyZWF0ZVBpcGVfZG9jfSwKKyAgICB7IkNyZWF0ZVByb2Nlc3MiLCB3aW5hcGlfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBDcmVhdGVQcm9jZXNzX2RvY30sCisgICAgeyJEdXBsaWNhdGVIYW5kbGUiLCB3aW5hcGlfRHVwbGljYXRlSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCisgICAgIER1cGxpY2F0ZUhhbmRsZV9kb2N9LAorICAgIHsiRXhpdFByb2Nlc3MiLCB3aW5hcGlfRXhpdFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiR2V0Q3VycmVudFByb2Nlc3MiLCB3aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKKyAgICB7IkdldEV4aXRDb2RlUHJvY2VzcyIsIHdpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0RXhpdENvZGVQcm9jZXNzX2RvY30sCisgICAgeyJHZXRMYXN0RXJyb3IiLCB3aW5hcGlfR2V0TGFzdEVycm9yLCBNRVRIX05PQVJHUywKKyAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKKyAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldE1vZHVsZUZpbGVOYW1lX2RvY30sCisgICAgeyJHZXRTdGRIYW5kbGUiLCB3aW5hcGlfR2V0U3RkSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldFN0ZEhhbmRsZV9kb2N9LAorICAgIHsiR2V0VmVyc2lvbiIsIHdpbmFwaV9HZXRWZXJzaW9uLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldFZlcnNpb25fZG9jfSwKKyAgICB7Ik9wZW5Qcm9jZXNzIiwgd2luYXBpX09wZW5Qcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IlBlZWtOYW1lZFBpcGUiLCB3aW5hcGlfUGVla05hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfUmVhZEZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICIifSwKKyAgICB7IlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwgd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IlRlcm1pbmF0ZVByb2Nlc3MiLCB3aW5hcGlfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBUZXJtaW5hdGVQcm9jZXNzX2RvY30sCisgICAgeyJXYWl0TmFtZWRQaXBlIiwgd2luYXBpX1dhaXROYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiV2FpdEZvck11bHRpcGxlT2JqZWN0cyIsIHdpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCB3aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdCwgTUVUSF9WQVJBUkdTLAorICAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvY30sCisgICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgIiJ9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB3aW5hcGlfbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX3dpbmFwaSIsCisgICAgTlVMTCwKKyAgICAtMSwKKyAgICB3aW5hcGlfZnVuY3Rpb25zLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKyNkZWZpbmUgV0lOQVBJX0NPTlNUQU5UKGZtdCwgY29uKSBcCisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgI2NvbiwgUHlfQnVpbGRWYWx1ZShmbXQsIGNvbikpCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3dpbmFwaSh2b2lkKQoreworICAgIFB5T2JqZWN0ICpkOworICAgIFB5T2JqZWN0ICptOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmT3ZlcmxhcHBlZFR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZ3aW5hcGlfbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKKworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJPdmVybGFwcGVkIiwgKFB5T2JqZWN0ICopICZPdmVybGFwcGVkVHlwZSk7CisKKyAgICAvKiBjb25zdGFudHMgKi8KKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgQ1JFQVRFX05FV19DT05TT0xFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRFVQTElDQVRFX1NBTUVfQUNDRVNTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRFVQTElDQVRFX0NMT1NFX1NPVVJDRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0FMUkVBRFlfRVhJU1RTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfQlJPS0VOX1BJUEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9JT19QRU5ESU5HKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTU9SRV9EQVRBKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTkVUTkFNRV9ERUxFVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fU1lTVEVNX1JFU09VUkNFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX01PUkVfREFUQSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05FVE5BTUVfREVMRVRFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05PX0RBVEEpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfT1BFUkFUSU9OX0FCT1JURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0JVU1kpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0NPTk5FQ1RFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1NFTV9USU1FT1VUKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfR0VORVJJQ19SRUFEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9HRU5FUklDX1dSSVRFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19SRUFEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19XUklURSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIElORklOSVRFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgTk1QV0FJVF9XQUlUX0ZPUkVWRVIpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBPUEVOX0VYSVNUSU5HKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9BQ0NFU1NfRFVQTEVYKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9BQ0NFU1NfSU5CT1VORCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfUkVBRE1PREVfTUVTU0FHRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfVFlQRV9NRVNTQUdFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9VTkxJTUlURURfSU5TVEFOQ0VTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9XQUlUKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUFJPQ0VTU19BTExfQUNDRVNTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUFJPQ0VTU19EVVBfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1RBUlRGX1VTRVNIT1dXSU5ET1cpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVEFSVEZfVVNFU1RESEFORExFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNURF9JTlBVVF9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVERfT1VUUFVUX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNURF9FUlJPUl9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVElMTF9BQ1RJVkUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTV19ISURFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgV0FJVF9PQkpFQ1RfMCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFdBSVRfVElNRU9VVCk7CisKKyAgICBXSU5BUElfQ09OU1RBTlQoImkiLCBOVUxMKTsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IDJkNGVlNzIuLjNmNWFhOGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTIyLDcgKzIyLDcgQEAKICAqIGZ1bmN0aW9ucyBhcmVuJ3QgdmlzaWJsZSB5ZXQuCiAgKi8KIHN0cnVjdCBhcnJheWRlc2NyIHsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAgICAgaW50IGl0ZW1zaXplOwogICAgIFB5T2JqZWN0ICogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgaW50ICgqc2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOwpAQCAtMzU2LDYgKzM1Niw1OSBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKworc3RhdGljIFB5T2JqZWN0ICoKK3FfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7Cit9CisKK3N0YXRpYyBpbnQKK3Ffc2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCit7CisgICAgUFlfTE9OR19MT05HIHg7CisgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCAiTDthcnJheSBpdGVtIG11c3QgYmUgaW50ZWdlciIsICZ4KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChpID49IDApCisgICAgICAgICgoUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldID0geDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1FRX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygKKyAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworfQorCitzdGF0aWMgaW50CitRUV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKK3sKKyAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOworICAgICAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUFlfTE9OR19MT05HIHk7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeSkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmICh5IDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyBpcyBsZXNzIHRoYW4gbWluaW11bSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHggPSAodW5zaWduZWQgUFlfTE9OR19MT05HKXk7CisgICAgfQorCisgICAgaWYgKGkgPj0gMCkKKyAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBmX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCiB7CkBAIC00MDYsNiArNDU5LDEwIEBACiAgICAgeydJJywgc2l6ZW9mKGludCksIElJX2dldGl0ZW0sIElJX3NldGl0ZW0sICJJIiwgMSwgMH0sCiAgICAgeydsJywgc2l6ZW9mKGxvbmcpLCBsX2dldGl0ZW0sIGxfc2V0aXRlbSwgImwiLCAxLCAxfSwKICAgICB7J0wnLCBzaXplb2YobG9uZyksIExMX2dldGl0ZW0sIExMX3NldGl0ZW0sICJMIiwgMSwgMH0sCisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICB7J3EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgcV9nZXRpdGVtLCBxX3NldGl0ZW0sICJxIiwgMSwgMX0sCisgICAgeydRJywgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIFFRX2dldGl0ZW0sIFFRX3NldGl0ZW0sICJRIiwgMSwgMH0sCisjZW5kaWYKICAgICB7J2YnLCBzaXplb2YoZmxvYXQpLCBmX2dldGl0ZW0sIGZfc2V0aXRlbSwgImYiLCAwLCAwfSwKICAgICB7J2QnLCBzaXplb2YoZG91YmxlKSwgZF9nZXRpdGVtLCBkX3NldGl0ZW0sICJkIiwgMCwgMH0sCiAgICAgeydcMCcsIDAsIDAsIDAsIDAsIDAsIDB9IC8qIFNlbnRpbmVsICovCkBAIC00MjYsMTEgKzQ4MywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBuYnl0ZXMgPSBzaXplICogZGVzY3ItPml0ZW1zaXplOwogICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIGlmIChuYnl0ZXMgLyBkZXNjci0+aXRlbXNpemUgIT0gKHNpemVfdClzaXplKSB7CisgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIGRlc2NyLT5pdGVtc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CisgICAgbmJ5dGVzID0gc2l6ZSAqIGRlc2NyLT5pdGVtc2l6ZTsKICAgICBvcCA9IChhcnJheW9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUxNCwxMCArNTcxLDggQEAKICAgICBQeV9zc2l6ZV90IGksIGs7CiAgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghYXJyYXlfQ2hlY2sodikgfHwgIWFycmF5X0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFhcnJheV9DaGVjayh2KSB8fCAhYXJyYXlfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZhID0gKGFycmF5b2JqZWN0ICopdjsKICAgICB3YSA9IChhcnJheW9iamVjdCAqKXc7CkBAIC04NzYsNyArOTMxLDYgQEAKICAgICBpZiAoUHlfU0laRShzZWxmKSA+IDApIHsKICAgICAgICAgaWYgKG4gPCAwKQogICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgIGl0ZW1zID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgaWYgKChzZWxmLT5vYl9kZXNjci0+aXRlbXNpemUgIT0gMCkgJiYKICAgICAgICAgICAgIChQeV9TSVpFKHNlbGYpID4gUFlfU1NJWkVfVF9NQVggLyBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemUpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTExOTEsMTggKzEyNDUsMjMgQEAKICAgICBQeU9iamVjdCAqZiwgKmIsICpyZXM7CiAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSA9IHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKICAgICBQeV9zc2l6ZV90IG4sIG5ieXRlczsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKICAgICBpbnQgbm90X2Vub3VnaF9ieXRlczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLCAmZiwgJm4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG5ieXRlcyA9IG4gKiBpdGVtc2l6ZTsKLSAgICBpZiAobmJ5dGVzIDwgMCB8fCBuYnl0ZXMvaXRlbXNpemUgIT0gbikgeworICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobiA+IFBZX1NTSVpFX1RfTUFYIC8gaXRlbXNpemUpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG5ieXRlcyA9IG4gKiBpdGVtc2l6ZTsKIAotICAgIGIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJyZWFkIiwgIm4iLCBuYnl0ZXMpOworICAgIGIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3JlYWQsICJuIiwgbmJ5dGVzKTsKICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTI1OSwxMiArMTMxOCwxNCBAQAogICAgICAgICBjaGFyKiBwdHIgPSBzZWxmLT5vYl9pdGVtICsgaSpCTE9DS1NJWkU7CiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IEJMT0NLU0laRTsKICAgICAgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmVzOworICAgICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKICAgICAgICAgaWYgKGkqQkxPQ0tTSVpFICsgc2l6ZSA+IG5ieXRlcykKICAgICAgICAgICAgIHNpemUgPSBuYnl0ZXMgLSBpKkJMT0NLU0laRTsKICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHB0ciwgc2l6ZSk7CiAgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgIndyaXRlIiwgIk8iLCBieXRlcyk7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfd3JpdGUsICJPIiwgYnl0ZXMpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0NTYsNyArMTUxNyw3IEBACiB7CiAgICAgUHlfVU5JQ09ERSAqdXN0cjsKICAgICBQeV9zc2l6ZV90IG47Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmbikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ5MSw3ICsxNTUyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV90b3VuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogICAgIHR5cGVjb2RlID0gc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlOwogICAgIGlmICgodHlwZWNvZGUgIT0gJ3UnKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE2MDEsNyArMTY2Miw3IEBACiAgKiBiZSBmb3VuZC4KICAqLwogc3RhdGljIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZQotdHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKGludCB0eXBlY29kZSkKK3R5cGVjb2RlX3RvX21mb3JtYXRfY29kZShjaGFyIHR5cGVjb2RlKQogewogI2lmZGVmIFdPUkRTX0JJR0VORElBTgogICAgIGNvbnN0IGludCBpc19iaWdfZW5kaWFuID0gMTsKQEAgLTE2NzEsNiArMTczMiwxNiBAQAogICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKKyNpZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOgorICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGlzX3NpZ25lZCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1EnOgorICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGlzX3NpZ25lZCA9IDA7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFVOS05PV05fRk9STUFUOwogICAgIH0KQEAgLTE3MDEsNyArMTc3Miw3IEBACiAgKiBOVUxMIGlzIHJldHVybmVkIHRvIGluZGljYXRlIGEgZmFpbHVyZS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW1ha2VfYXJyYXkoUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsIFB5X1VOSUNPREUgdHlwZWNvZGUsIFB5T2JqZWN0ICppdGVtcykKK21ha2VfYXJyYXkoUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsIGNoYXIgdHlwZWNvZGUsIFB5T2JqZWN0ICppdGVtcykKIHsKICAgICBQeU9iamVjdCAqbmV3X2FyZ3M7CiAgICAgUHlPYmplY3QgKmFycmF5X29iajsKQEAgLTE3MTAsNyArMTc4MSw3IEBACiAgICAgYXNzZXJ0KGFycmF5dHlwZSAhPSBOVUxMKTsKICAgICBhc3NlcnQoaXRlbXMgIT0gTlVMTCk7CiAKLSAgICB0eXBlY29kZV9vYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnR5cGVjb2RlLCAxKTsKKyAgICB0eXBlY29kZV9vYmogPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwodHlwZWNvZGUpOwogICAgIGlmICh0eXBlY29kZV9vYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NDAsMTcgKzE4MTEsMTQgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKmNvbnZlcnRlZF9pdGVtczsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCB0eXBlY29kZV9pbnQ7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBpbnQgdHlwZWNvZGU7CiAgICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZTsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86YXJyYXkuX2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGVfaW50LCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQorICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHlwZWNvZGUgPSAoUHlfVU5JQ09ERSl0eXBlY29kZV9pbnQ7Ci0KICAgICBpZiAoIVB5VHlwZV9DaGVjayhhcnJheXR5cGUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAiZmlyc3QgYXJndW1lbnQgbXVzdCBhIHR5cGUgb2JqZWN0LCBub3QgJS4yMDBzIiwKQEAgLTE3NjQsNyArMTgzMiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBmb3IgKGRlc2NyID0gZGVzY3JpcHRvcnM7IGRlc2NyLT50eXBlY29kZSAhPSAnXDAnOyBkZXNjcisrKSB7Ci0gICAgICAgIGlmIChkZXNjci0+dHlwZWNvZGUgPT0gdHlwZWNvZGUpCisgICAgICAgIGlmICgoaW50KWRlc2NyLT50eXBlY29kZSA9PSB0eXBlY29kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoZGVzY3ItPnR5cGVjb2RlID09ICdcMCcpIHsKQEAgLTE3ODYsOSArMTg1NCw5IEBACiAgICAgfQogCiAgICAgLyogRmFzdCBwYXRoOiBObyBkZWNvZGluZyBoYXMgdG8gYmUgZG9uZS4gKi8KLSAgICBpZiAobWZvcm1hdF9jb2RlID09IHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSh0eXBlY29kZSkgfHwKKyAgICBpZiAobWZvcm1hdF9jb2RlID09IHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSgoY2hhcil0eXBlY29kZSkgfHwKICAgICAgICAgbWZvcm1hdF9jb2RlID09IFVOS05PV05fRk9STUFUKSB7Ci0gICAgICAgIHJldHVybiBtYWtlX2FycmF5KGFycmF5dHlwZSwgdHlwZWNvZGUsIGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfYXJyYXkoYXJyYXl0eXBlLCAoY2hhcil0eXBlY29kZSwgaXRlbXMpOwogICAgIH0KIAogICAgIC8qIFNsb3cgcGF0aDogRGVjb2RlIHRoZSBieXRlIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG1hY2hpbmUKQEAgLTE5MzQsNyArMjAwMiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJlc3VsdCA9IG1ha2VfYXJyYXkoYXJyYXl0eXBlLCB0eXBlY29kZSwgY29udmVydGVkX2l0ZW1zKTsKKyAgICByZXN1bHQgPSBtYWtlX2FycmF5KGFycmF5dHlwZSwgKGNoYXIpdHlwZWNvZGUsIGNvbnZlcnRlZF9pdGVtcyk7CiAgICAgUHlfREVDUkVGKGNvbnZlcnRlZF9pdGVtcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE5NDksMTQgKzIwMTcsMTYgQEAKICAgICBpbnQgbWZvcm1hdF9jb2RlOwogICAgIHN0YXRpYyBQeU9iamVjdCAqYXJyYXlfcmVjb25zdHJ1Y3RvciA9IE5VTEw7CiAgICAgbG9uZyBwcm90b2NvbDsKKyAgICBfUHlfSURFTlRJRklFUihfYXJyYXlfcmVjb25zdHJ1Y3Rvcik7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCiAgICAgaWYgKGFycmF5X3JlY29uc3RydWN0b3IgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYXJyYXlfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJhcnJheSIpOwogICAgICAgICBpZiAoYXJyYXlfbW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXJyYXlfcmVjb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoCisgICAgICAgIGFycmF5X3JlY29uc3RydWN0b3IgPSBfUHlPYmplY3RfR2V0QXR0cklkKAogICAgICAgICAgICAgYXJyYXlfbW9kdWxlLAotICAgICAgICAgICAgIl9hcnJheV9yZWNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAmUHlJZF9fYXJyYXlfcmVjb25zdHJ1Y3Rvcik7CiAgICAgICAgIFB5X0RFQ1JFRihhcnJheV9tb2R1bGUpOwogICAgICAgICBpZiAoYXJyYXlfcmVjb25zdHJ1Y3RvciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTcxLDcgKzIwNDEsNyBAQAogICAgIGlmIChwcm90b2NvbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKWFycmF5LCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilhcnJheSwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjAyMyw4ICsyMDkzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9nZXRfdHlwZWNvZGUoYXJyYXlvYmplY3QgKmEsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgUHlfVU5JQ09ERSB0YyA9IGEtPm9iX2Rlc2NyLT50eXBlY29kZTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZ0YywgMSk7CisgICAgY2hhciB0eXBlY29kZSA9IGEtPm9iX2Rlc2NyLT50eXBlY29kZTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHR5cGVjb2RlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwOTgsNyArMjE2OCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXJyYXlfcmVwcihhcnJheW9iamVjdCAqYSkKIHsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAgICAgUHlPYmplY3QgKnMsICp2ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjsKIApAQCAtMjEwNyw3ICsyMTc3LDcgQEAKICAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJhcnJheSgnJWMnKSIsIChpbnQpdHlwZWNvZGUpOwogICAgIH0KLSAgICBpZiAoKHR5cGVjb2RlID09ICd1JykpCisgICAgaWYgKHR5cGVjb2RlID09ICd1JykKICAgICAgICAgdiA9IGFycmF5X3RvdW5pY29kZShhLCBOVUxMKTsKICAgICBlbHNlCiAgICAgICAgIHYgPSBhcnJheV90b2xpc3QoYSwgTlVMTCk7CkBAIC0yMzAyLDcgKzIzNzIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyAoY3VyICsgMSkgKiBpdGVtc2l6ZSwKICAgICAgICAgICAgICAgICBsaW0gKiBpdGVtc2l6ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY3VyID0gc3RhcnQgKyBzbGljZWxlbmd0aCAqIHN0ZXA7CisgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbmd0aCAqIHN0ZXA7CiAgICAgICAgIGlmIChjdXIgPCAoc2l6ZV90KVB5X1NJWkUoc2VsZikpIHsKICAgICAgICAgICAgIG1lbW1vdmUoc2VsZi0+b2JfaXRlbSArIChjdXItc2xpY2VsZW5ndGgpICogaXRlbXNpemUsCiAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSArIGN1ciAqIGl0ZW1zaXplLApAQCAtMjQ4Niw3ICsyNTU2LDE3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoaW5pdGlhbCAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhpbml0aWFsKSkgIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShpbml0aWFsKTsKKyAgICAgICAgICAgICAgICBQeV9VTklDT0RFICp1c3RyOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbjsKKworICAgICAgICAgICAgICAgIHVzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGluaXRpYWwpOworICAgICAgICAgICAgICAgIGlmICh1c3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBuID0gUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUoaW5pdGlhbCk7CiAgICAgICAgICAgICAgICAgaWYgKG4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGFycmF5b2JqZWN0ICpzZWxmID0gKGFycmF5b2JqZWN0ICopYTsKICAgICAgICAgICAgICAgICAgICAgY2hhciAqaXRlbSA9IHNlbGYtPm9iX2l0ZW07CkBAIC0yNDk4LDcgKzI1NzgsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gPSBpdGVtOwogICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpID0gbiAvIHNpemVvZihQeV9VTklDT0RFKTsKLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGl0ZW0sIFB5VW5pY29kZV9BU19EQVRBKGluaXRpYWwpLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGl0ZW0sIHVzdHIsIG4pOwogICAgICAgICAgICAgICAgICAgICBzZWxmLT5hbGxvY2F0ZWQgPSBQeV9TSVpFKHNlbGYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI1MTksNyArMjU5OSwxMSBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICJiYWQgdHlwZWNvZGUgKG11c3QgYmUgYiwgQiwgdSwgaCwgSCwgaSwgSSwgbCwgTCwgcSwgUSwgZiBvciBkKSIpOworI2Vsc2UKICAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBmIG9yIGQpIik7CisjZW5kaWYKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjU0MiwxMiArMjYyNiwxOCBAQAogICAgICdJJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICAyIFxuXAogICAgICdsJyAgICAgICAgIHNpZ25lZCBpbnRlZ2VyICAgICA0IFxuXAogICAgICdMJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICA0IFxuXAorICAgICdxJyAgICAgICAgIHNpZ25lZCBpbnRlZ2VyICAgICA4IChzZWUgbm90ZSkgXG5cCisgICAgJ1EnICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDggKHNlZSBub3RlKSBcblwKICAgICAnZicgICAgICAgICBmbG9hdGluZyBwb2ludCAgICAgNCBcblwKICAgICAnZCcgICAgICAgICBmbG9hdGluZyBwb2ludCAgICAgOCBcblwKIFxuXAogTk9URTogVGhlICd1JyB0eXBlY29kZSBjb3JyZXNwb25kcyB0byBQeXRob24ncyB1bmljb2RlIGNoYXJhY3Rlci4gT24gXG5cCiBuYXJyb3cgYnVpbGRzIHRoaXMgaXMgMi1ieXRlcyBvbiB3aWRlIGJ1aWxkcyB0aGlzIGlzIDQtYnl0ZXMuXG5cCiBcblwKK05PVEU6IFRoZSAncScgYW5kICdRJyB0eXBlIGNvZGVzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGUgcGxhdGZvcm0gXG5cCitDIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgUHl0aG9uIHN1cHBvcnRzICdsb25nIGxvbmcnLCBvciwgb24gV2luZG93cywgXG5cCisnX19pbnQ2NCcuXG5cCitcblwKIFRoZSBjb25zdHJ1Y3RvciBpczpcblwKIFxuXAogYXJyYXkodHlwZWNvZGUgWywgaW5pdGlhbGl6ZXJdKSAtLSBjcmVhdGUgYSBuZXcgYXJyYXlcblwKQEAgLTI2OTIsNiArMjc4MiwzNCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlpdGVyX3JlZHVjZShhcnJheWl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPmFvLCBpdC0+aW5kZXgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlpdGVyX3NldHN0YXRlKGFycmF5aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBpdC0+aW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKK3N0YXRpYyBQeU1ldGhvZERlZiBhcnJheWl0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlBcnJheUl0ZXJfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiYXJyYXlpdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMjcyMSw3ICsyODM5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWFycmF5aXRlcl9uZXh0LCAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYXJyYXlpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KIH07CiAKIApAQCAtMjc1MSw5ICsyODY5LDkgQEAKIFB5SW5pdF9hcnJheSh2b2lkKQogewogICAgIFB5T2JqZWN0ICptOworICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcDsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZBcnJheXR5cGUpIDwgMCkKQEAgLTI3NzIsMTMgKzI4OTAsMTMgQEAKICAgICAgICAgc2l6ZSsrOwogICAgIH0KIAotICAgIHR5cGVjb2RlcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodHlwZWNvZGVzKTsKKyAgICBwID0gYnVmZmVyOwogICAgIGZvciAoZGVzY3IgPSBkZXNjcmlwdG9yczsgZGVzY3ItPnR5cGVjb2RlICE9ICdcMCc7IGRlc2NyKyspIHsKICAgICAgICAgKnArKyA9IChjaGFyKWRlc2NyLT50eXBlY29kZTsKICAgICB9CisgICAgdHlwZWNvZGVzID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGJ1ZmZlciwgcCAtIGJ1ZmZlciwgTlVMTCk7CiAKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR5cGVjb2RlcyIsIChQeU9iamVjdCAqKXR5cGVjb2Rlcyk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0eXBlY29kZXMiLCB0eXBlY29kZXMpOwogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKaW5kZXggMWVlN2VhZC4uZjY4ZDgwNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCkBAIC0yMTEsNiArMjExLDE0IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK3N0YXRpYyB2b2lkCithdGV4aXRfZnJlZShQeU9iamVjdCAqbSkKK3sKKyAgICBhdGV4aXRtb2R1bGVfc3RhdGUgKm1vZHN0YXRlOworICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShtKTsKKyAgICBQeU1lbV9GcmVlKG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzKTsKK30KKwogUHlEb2NfU1RSVkFSKGF0ZXhpdF91bnJlZ2lzdGVyX19kb2NfXywKICJ1bnJlZ2lzdGVyKGZ1bmMpIC0+IE5vbmVcblwKIFxuXApAQCAtMjc1LDcgKzI4Myw3IEBACiAJTlVMTCwKIAlOVUxMLAogCU5VTEwsCi0JTlVMTAorCShmcmVlZnVuYylhdGV4aXRfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXVkaW9vcC5jIGIvTW9kdWxlcy9hdWRpb29wLmMKaW5kZXggOWFiNDgzNC4uMmJjYTM5MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdWRpb29wLmMKKysrIGIvTW9kdWxlcy9hdWRpb29wLmMKQEAgLTUxMyw3ICs1MTMsNiBAQAogCiAgICAgYmVzdF9yZXN1bHQgPSByZXN1bHQ7CiAgICAgYmVzdF9qID0gMDsKLSAgICBqID0gMDsKIAogICAgIGZvciAoIGo9MTsgajw9bGVuMS1sZW4yOyBqKyspIHsKICAgICAgICAgYWpfbTEgPSAoZG91YmxlKWNwMVtqLTFdOwpAQCAtNTk5LDcgKzU5OCw2IEBACiAKICAgICBiZXN0X3Jlc3VsdCA9IHJlc3VsdDsKICAgICBiZXN0X2ogPSAwOwotICAgIGogPSAwOwogCiAgICAgZm9yICggaj0xOyBqPD1sZW4xLWxlbjI7IGorKykgewogICAgICAgICBhal9tMSA9IChkb3VibGUpY3AxW2otMV07CkBAIC0xMTEwLDggKzExMDgsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiIyBvZiBjaGFubmVscyBzaG91bGQgYmUgPj0gMSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnl0ZXNfcGVyX2ZyYW1lID0gc2l6ZSAqIG5jaGFubmVsczsKLSAgICBpZiAoYnl0ZXNfcGVyX2ZyYW1lIC8gbmNoYW5uZWxzICE9IHNpemUpIHsKKyAgICBpZiAoc2l6ZSA+IElOVF9NQVggLyBuY2hhbm5lbHMpIHsKICAgICAgICAgLyogVGhpcyBvdmVyZmxvdyB0ZXN0IGlzIHJpZ29yb3VzbHkgY29ycmVjdCBiZWNhdXNlCiAgICAgICAgICAgIGJvdGggbXVsdGlwbGljYW5kcyBhcmUgPj0gMS4gIFVzZSB0aGUgYXJndW1lbnQgbmFtZXMKICAgICAgICAgICAgZnJvbSB0aGUgZG9jcyBmb3IgdGhlIGVycm9yIG1zZy4gKi8KQEAgLTExMTksNiArMTExNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGggKiBuY2hhbm5lbHMgdG9vIGJpZyBmb3IgYSBDIGludCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYnl0ZXNfcGVyX2ZyYW1lID0gc2l6ZSAqIG5jaGFubmVsczsKICAgICBpZiAod2VpZ2h0QSA8IDEgfHwgd2VpZ2h0QiA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEF1ZGlvb3BFcnJvciwKICAgICAgICAgICAgICJ3ZWlnaHRBIHNob3VsZCBiZSA+PSAxLCB3ZWlnaHRCIHNob3VsZCBiZSA+PSAwIik7CkBAIC0xNDMzLDcgKzE0MzEsNiBAQAogICAgIGlmICggc3RhdGUgPT0gUHlfTm9uZSApIHsKICAgICAgICAgLyogRmlyc3QgdGltZSwgaXQgc2VlbXMuIFNldCBkZWZhdWx0cyAqLwogICAgICAgICB2YWxwcmVkID0gMDsKLSAgICAgICAgc3RlcCA9IDc7CiAgICAgICAgIGluZGV4ID0gMDsKICAgICB9IGVsc2UgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgImlpIiwgJnZhbHByZWQsICZpbmRleCkgKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE1MzQsNyArMTUzMSw2IEBACiAgICAgaWYgKCBzdGF0ZSA9PSBQeV9Ob25lICkgewogICAgICAgICAvKiBGaXJzdCB0aW1lLCBpdCBzZWVtcy4gU2V0IGRlZmF1bHRzICovCiAgICAgICAgIHZhbHByZWQgPSAwOwotICAgICAgICBzdGVwID0gNzsKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0gZWxzZSBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiaWkiLCAmdmFscHJlZCwgJmluZGV4KSApCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IDE5NjgxYjQuLmFkNWUxYjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTE4Myw2ICsxODMsNDQgQEAKICAgICAweDZlMTcsIDB4N2UzNiwgMHg0ZTU1LCAweDVlNzQsIDB4MmU5MywgMHgzZWIyLCAweDBlZDEsIDB4MWVmMCwKIH07CiAKK3N0YXRpYyBpbnQKK2FzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICpidWYpCit7CisgICAgaWYgKGFyZyA9PSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGFyZykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgc2hvdWxkIGNvbnRhaW4gb25seSBBU0NJSSBjaGFyYWN0ZXJzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoYXJnKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgIGJ1Zi0+YnVmID0gKHZvaWQgKikgUHlVbmljb2RlXzFCWVRFX0RBVEEoYXJnKTsKKyAgICAgICAgYnVmLT5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhcmcpOworICAgICAgICBidWYtPm9iaiA9IE5VTEw7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYnl0ZXMsIGJ1ZmZlciBvciBBU0NJSSBzdHJpbmcsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJVIiLCBQeV9UWVBFKGFyZykpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYnVmLCAnQycpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgY29udGlndW91cyBidWZmZXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJVIiLCBQeV9UWVBFKGFyZykpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJ1Zik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CisKKwogUHlEb2NfU1RSVkFSKGRvY19hMmJfdXUsICIoYXNjaWkpIC0+IGJpbi4gRGVjb2RlIGEgbGluZSBvZiB1dWVuY29kZWQgZGF0YSIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk2LDcgKzIzNCw3IEBACiAgICAgUHlPYmplY3QgKnJ2OwogICAgIFB5X3NzaXplX3QgYXNjaWlfbGVuLCBiaW5fbGVuOwogCi0gICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6YTJiX3V1IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXNjaWkpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNjaWlfZGF0YSA9IHBhc2NpaS5idWY7CiAgICAgYXNjaWlfbGVuID0gcGFzY2lpLmxlbjsKQEAgLTM3MCw3ICs0MDgsNyBAQAogICAgIFB5X3NzaXplX3QgYXNjaWlfbGVuLCBiaW5fbGVuOwogICAgIGludCBxdWFkX3BvcyA9IDA7CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfYmFzZTY0IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl9iYXNlNjQiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFzY2lpKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzY2lpX2RhdGEgPSBwYXNjaWkuYnVmOwogICAgIGFzY2lpX2xlbiA9IHBhc2NpaS5sZW47CkBAIC01NDYsNyArNTg0LDcgQEAKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgZG9uZSA9IDA7CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfaHF4IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl9ocXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFzY2lpKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzY2lpX2RhdGEgPSBwYXNjaWkuYnVmOwogICAgIGxlbiA9IHBhc2NpaS5sZW47CkBAIC0xMDc4LDEzICsxMTE2LDExIEBACiAKICAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLwogICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChhcmdidWZbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgcmV0YnVmW2orK10gPSBjOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICByZXRidWZbaisrXSA9IGM7CisgICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYXJnKTsKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTEyMSw3ICsxMTU3LDcgQEAKICAgICBjaGFyKiByZXRidWY7CiAgICAgUHlfc3NpemVfdCBpLCBqOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfaGV4IiwgJnBhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXJnYnVmID0gcGFyZy5idWY7CiAgICAgYXJnbGVuID0gcGFyZy5sZW47CkBAIC0xMTk5LDggKzEyMzUsOCBAQAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZGF0YSIsICJoZWFkZXIiLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGkiLCBrd2xpc3QsICZwZGF0YSwKLSAgICAgICAgICAmaGVhZGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpOmEyYl9xcCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGRhdGEsICZoZWFkZXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBkYXRhID0gcGRhdGEuYnVmOwogICAgIGRhdGFsZW4gPSBwZGF0YS5sZW47CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9iejJtb2R1bGUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc5NTk2NS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL2J6Mm1vZHVsZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjE5MyArMCwwIEBACi0vKgotCi1weXRob24tYnoyIC0gcHl0aG9uIGJ6MiBsaWJyYXJ5IGludGVyZmFjZQotCi1Db3B5cmlnaHQgKGMpIDIwMDIgIEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+Ci1Db3B5cmlnaHQgKGMpIDIwMDIgIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzIFJlc2VydmVkCi0KLSovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGJ6bGliLmg+Ci0jaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0jZW5kaWYKLQotc3RhdGljIGNoYXIgX19hdXRob3JfX1tdID0KLSJUaGUgYnoyIHB5dGhvbiBtb2R1bGUgd2FzIHdyaXR0ZW4gYnk6XG5cCi1cblwKLSAgICBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPlxuXAotIjsKLQotLyogT3VyIHZlcnkgb3duIG9mZl90LWxpa2UgdHlwZSwgNjQtYml0IGlmIHBvc3NpYmxlICovCi0vKiBjb3BpZWQgZnJvbSBPYmplY3RzL2ZpbGVvYmplY3QuYyAqLwotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi10eXBlZGVmIG9mZl90IFB5X29mZl90OwotI2VsaWYgU0laRU9GX09GRl9UID49IDgKLXR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7Ci0jZWxpZiBTSVpFT0ZfRlBPU19UID49IDgKLXR5cGVkZWYgZnBvc190IFB5X29mZl90OwotI2Vsc2UKLSNlcnJvciAiTGFyZ2UgZmlsZSBzdXBwb3J0LCBidXQgbmVpdGhlciBvZmZfdCBub3IgZnBvc190IGlzIGxhcmdlIGVub3VnaC4iCi0jZW5kaWYKLQotI2RlZmluZSBCVUYodikgUHlCeXRlc19BU19TVFJJTkcodikKLQotI2RlZmluZSBNT0RFX0NMT1NFRCAgIDAKLSNkZWZpbmUgTU9ERV9SRUFEICAgICAxCi0jZGVmaW5lIE1PREVfUkVBRF9FT0YgMgotI2RlZmluZSBNT0RFX1dSSVRFICAgIDMKLQotCi0jaWZuZGVmIEJaX0NPTkZJR19FUlJPUgotCi0jZGVmaW5lIEJaMl9ielJlYWQgYnpSZWFkCi0jZGVmaW5lIEJaMl9ielJlYWRPcGVuIGJ6UmVhZE9wZW4KLSNkZWZpbmUgQloyX2J6UmVhZENsb3NlIGJ6UmVhZENsb3NlCi0jZGVmaW5lIEJaMl9ieldyaXRlIGJ6V3JpdGUKLSNkZWZpbmUgQloyX2J6V3JpdGVPcGVuIGJ6V3JpdGVPcGVuCi0jZGVmaW5lIEJaMl9ieldyaXRlQ2xvc2UgYnpXcml0ZUNsb3NlCi0jZGVmaW5lIEJaMl9iekNvbXByZXNzIGJ6Q29tcHJlc3MKLSNkZWZpbmUgQloyX2J6Q29tcHJlc3NJbml0IGJ6Q29tcHJlc3NJbml0Ci0jZGVmaW5lIEJaMl9iekNvbXByZXNzRW5kIGJ6Q29tcHJlc3NFbmQKLSNkZWZpbmUgQloyX2J6RGVjb21wcmVzcyBiekRlY29tcHJlc3MKLSNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0luaXQgYnpEZWNvbXByZXNzSW5pdAotI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzRW5kIGJ6RGVjb21wcmVzc0VuZAotCi0jZW5kaWYgLyogISBCWl9DT05GSUdfRVJST1IgKi8KLQotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCi0gICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2sob2JqLT5sb2NrLCAwKSkgeyBcCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgXAotICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sob2JqLT5sb2NrLCAxKTsgXAotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCi0gICAgfSB9IHdoaWxlKDApCi0jZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhvYmotPmxvY2spCi0jZWxzZQotI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKQotI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQotI2VuZGlmCi0KLSNkZWZpbmUgTUlOKFgsIFkpICgoKFgpIDwgKFkpKSA/IChYKSA6IChZKSkKLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTdHJ1Y3R1cmUgZGVmaW5pdGlvbnMuICovCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgRklMRSAqcmF3ZnA7Ci0KLSAgICBjaGFyKiBmX2J1ZjsgICAgICAgICAgICAgICAgLyogQWxsb2NhdGVkIHJlYWRhaGVhZCBidWZmZXIgKi8KLSAgICBjaGFyKiBmX2J1ZmVuZDsgICAgICAgICAgICAgLyogUG9pbnRzIGFmdGVyIGxhc3Qgb2NjdXBpZWQgcG9zaXRpb24gKi8KLSAgICBjaGFyKiBmX2J1ZnB0cjsgICAgICAgICAgICAgLyogQ3VycmVudCBidWZmZXIgcG9zaXRpb24gKi8KLQotICAgIEJaRklMRSAqZnA7Ci0gICAgaW50IG1vZGU7Ci0gICAgUHlfb2ZmX3QgcG9zOwotICAgIFB5X29mZl90IHNpemU7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKLSNlbmRpZgotfSBCWjJGaWxlT2JqZWN0OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIGJ6X3N0cmVhbSBienM7Ci0gICAgaW50IHJ1bm5pbmc7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKLSNlbmRpZgotfSBCWjJDb21wT2JqZWN0OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIGJ6X3N0cmVhbSBienM7Ci0gICAgaW50IHJ1bm5pbmc7Ci0gICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7Ci0jZW5kaWYKLX0gQloyRGVjb21wT2JqZWN0OwotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFV0aWxpdHkgZnVuY3Rpb25zLiAqLwotCi0vKiBSZWZ1c2UgcmVndWxhciBJL08gaWYgdGhlcmUncyBkYXRhIGluIHRoZSBpdGVyYXRpb24tYnVmZmVyLgotICogTWl4aW5nIHRoZW0gd291bGQgY2F1c2UgZGF0YSB0byBhcnJpdmUgb3V0IG9mIG9yZGVyLCBhcyB0aGUgcmVhZCoKLSAqIG1ldGhvZHMgZG9uJ3QgdXNlIHRoZSBpdGVyYXRpb24gYnVmZmVyLiAqLwotc3RhdGljIGludAotY2hlY2tfaXRlcmJ1ZmZlcmVkKEJaMkZpbGVPYmplY3QgKmYpCi17Ci0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwgJiYKLSAgICAgICAgKGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHIpID4gMCAmJgotICAgICAgICBmLT5mX2J1ZlswXSAhPSAnXDAnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgIk1peGluZyBpdGVyYXRpb24gYW5kIHJlYWQgbWV0aG9kcyB3b3VsZCBsb3NlIGRhdGEiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotVXRpbF9DYXRjaEJaMkVycm9yKGludCBiemVycm9yKQotewotICAgIGludCByZXQgPSAwOwotICAgIHN3aXRjaChiemVycm9yKSB7Ci0gICAgICAgIGNhc2UgQlpfT0s6Ci0gICAgICAgIGNhc2UgQlpfU1RSRUFNX0VORDoKLSAgICAgICAgICAgIGJyZWFrOwotCi0jaWZkZWYgQlpfQ09ORklHX0VSUk9SCi0gICAgICAgIGNhc2UgQlpfQ09ORklHX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgYnoyIGxpYnJhcnkgd2FzIG5vdCBjb21waWxlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcnJlY3RseSIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgY2FzZSBCWl9QQVJBTV9FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgYnoyIGxpYnJhcnkgaGFzIHJlY2VpdmVkIHdyb25nICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfTUVNX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1I6Ci0gICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUl9NQUdJQzoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiaW52YWxpZCBkYXRhIHN0cmVhbSIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfSU9fRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgInVua25vd24gSU8gZXJyb3IiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX1VORVhQRUNURURfRU9GOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZ2ljYWwgZW5kLW9mLXN0cmVhbSB3YXMgZGV0ZWN0ZWQiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX1NFUVVFTkNFX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3Jvbmcgc2VxdWVuY2Ugb2YgYnoyIGxpYnJhcnkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kcyB1c2VkIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19Ci0KLSNpZiBCVUZTSVogPCA4MTkyCi0jZGVmaW5lIFNNQUxMQ0hVTksgODE5MgotI2Vsc2UKLSNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKLSNlbmRpZgotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOm5ld19idWZmZXJzaXplKCkuICovCi1zdGF0aWMgc2l6ZV90Ci1VdGlsX05ld0J1ZmZlclNpemUoc2l6ZV90IGN1cnJlbnRzaXplKQotewotICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKLSAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCi0gICAgICAgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KLSAgICByZXR1cm4gY3VycmVudHNpemUgKyAoY3VycmVudHNpemUgPj4gMykgKyA2OwotfQotCi1zdGF0aWMgaW50Ci1VdGlsX0dyb3dCdWZmZXIoUHlPYmplY3QgKipidWYpCi17Ci0gICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOwotICAgIHNpemVfdCBuZXdfc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShzaXplKTsKLSAgICBpZiAobmV3X3NpemUgPiBzaXplKSB7Ci0gICAgICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBuZXdfc2l6ZSk7Ci0gICAgfSBlbHNlIHsgIC8qIG92ZXJmbG93ICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBidWZmZXIgLSBvdXRwdXQgdG9vIGxhcmdlIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6Z2V0X2xpbmUoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1VdGlsX0dldExpbmUoQloyRmlsZU9iamVjdCAqZiwgaW50IG4pCi17Ci0gICAgY2hhciBjOwotICAgIGNoYXIgKmJ1ZiwgKmVuZDsKLSAgICBzaXplX3QgdG90YWxfdl9zaXplOyAgICAgICAgLyogdG90YWwgIyBvZiBzbG90cyBpbiBidWZmZXIgKi8KLSAgICBzaXplX3QgdXNlZF92X3NpemU7ICAgICAgICAgLyogIyB1c2VkIHNsb3RzIGluIGJ1ZmZlciAqLwotICAgIHNpemVfdCBpbmNyZW1lbnQ7ICAgICAgIC8qIGFtb3VudCB0byBpbmNyZW1lbnQgdGhlIGJ1ZmZlciAqLwotICAgIFB5T2JqZWN0ICp2OwotICAgIGludCBiemVycm9yOwotICAgIGludCBieXRlc19yZWFkOwotCi0gICAgdG90YWxfdl9zaXplID0gbiA+IDAgPyBuIDogMTAwOwotICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgdG90YWxfdl9zaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGJ1ZiA9IEJVRih2KTsKLSAgICBlbmQgPSBidWYgKyB0b3RhbF92X3NpemU7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZG8gewotICAgICAgICAgICAgYnl0ZXNfcmVhZCA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIGYtPmZwLCAmYywgMSk7Ci0gICAgICAgICAgICBmLT5wb3MrKzsKLSAgICAgICAgICAgIGlmIChieXRlc19yZWFkID09IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqYnVmKysgPSBjOwotICAgICAgICB9IHdoaWxlIChiemVycm9yID09IEJaX09LICYmIGMgIT0gJ1xuJyAmJiBidWYgIT0gZW5kKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgZi0+c2l6ZSA9IGYtPnBvczsKLSAgICAgICAgICAgIGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMgPT0gJ1xuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvKiBNdXN0IGJlIGJlY2F1c2UgYnVmID09IGVuZCAqLwotICAgICAgICBpZiAobiA+IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdXNlZF92X3NpemUgPSB0b3RhbF92X3NpemU7Ci0gICAgICAgIGluY3JlbWVudCA9IHRvdGFsX3Zfc2l6ZSA+PiAyOyAvKiBtaWxkIGV4cG9uZW50aWFsIGdyb3d0aCAqLwotICAgICAgICB0b3RhbF92X3NpemUgKz0gaW5jcmVtZW50OwotICAgICAgICBpZiAodG90YWxfdl9zaXplID4gSU5UX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgImxpbmUgaXMgbG9uZ2VyIHRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ2LCB0b3RhbF92X3NpemUpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmID0gQlVGKHYpICsgdXNlZF92X3NpemU7Ci0gICAgICAgIGVuZCA9IEJVRih2KSArIHRvdGFsX3Zfc2l6ZTsKLSAgICB9Ci0KLSAgICB1c2VkX3Zfc2l6ZSA9IGJ1ZiAtIEJVRih2KTsKLSAgICBpZiAodXNlZF92X3NpemUgIT0gdG90YWxfdl9zaXplKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIHVzZWRfdl9zaXplKSA8IDApIHsKLSAgICAgICAgICAgIHYgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB2OwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmRyb3BfcmVhZGFoZWFkKCkuICovCi1zdGF0aWMgdm9pZAotVXRpbF9Ecm9wUmVhZEFoZWFkKEJaMkZpbGVPYmplY3QgKmYpCi17Ci0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZShmLT5mX2J1Zik7Ci0gICAgICAgIGYtPmZfYnVmID0gTlVMTDsKLSAgICB9Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6cmVhZGFoZWFkKCkuICovCi1zdGF0aWMgaW50Ci1VdGlsX1JlYWRBaGVhZChCWjJGaWxlT2JqZWN0ICpmLCBpbnQgYnVmc2l6ZSkKLXsKLSAgICBpbnQgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgaWYoKGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHIpID49IDEpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgIH0KLSAgICBpZiAoZi0+bW9kZSA9PSBNT0RFX1JFQURfRU9GKSB7Ci0gICAgICAgIGYtPmZfYnVmcHRyID0gZi0+Zl9idWY7Ci0gICAgICAgIGYtPmZfYnVmZW5kID0gZi0+Zl9idWY7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoKGYtPmZfYnVmID0gUHlNZW1fTWFsbG9jKGJ1ZnNpemUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGNodW5rc2l6ZSA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIGYtPmZwLCBmLT5mX2J1ZiwgYnVmc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgZi0+c2l6ZSA9IGYtPnBvczsKLSAgICAgICAgZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGYtPmZfYnVmcHRyID0gZi0+Zl9idWY7Ci0gICAgZi0+Zl9idWZlbmQgPSBmLT5mX2J1ZiArIGNodW5rc2l6ZTsKLSAgICByZXR1cm4gMDsKLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzCi0gKiBmaWxlb2JqZWN0LmM6cmVhZGFoZWFkX2dldF9saW5lX3NraXAoKS4gKi8KLXN0YXRpYyBQeUJ5dGVzT2JqZWN0ICoKLVV0aWxfUmVhZEFoZWFkR2V0TGluZVNraXAoQloyRmlsZU9iamVjdCAqZiwgaW50IHNraXAsIGludCBidWZzaXplKQotewotICAgIFB5Qnl0ZXNPYmplY3QqIHM7Ci0gICAgY2hhciAqYnVmcHRyOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgbGVuOwotCi0gICAgaWYgKGYtPmZfYnVmID09IE5VTEwpCi0gICAgICAgIGlmIChVdGlsX1JlYWRBaGVhZChmLCBidWZzaXplKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGxlbiA9IGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHI7Ci0gICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2tpcCk7Ci0gICAgYnVmcHRyID0gbWVtY2hyKGYtPmZfYnVmcHRyLCAnXG4nLCBsZW4pOwotICAgIGlmIChidWZwdHIgIT0gTlVMTCkgewotICAgICAgICBidWZwdHIrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ291bnQgdGhlICdcbicgKi8KLSAgICAgICAgbGVuID0gYnVmcHRyIC0gZi0+Zl9idWZwdHI7Ci0gICAgICAgIHMgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBza2lwK2xlbik7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKHMpK3NraXAsIGYtPmZfYnVmcHRyLCBsZW4pOwotICAgICAgICBmLT5mX2J1ZnB0ciA9IGJ1ZnB0cjsKLSAgICAgICAgaWYgKGJ1ZnB0ciA9PSBmLT5mX2J1ZmVuZCkKLSAgICAgICAgICAgIFV0aWxfRHJvcFJlYWRBaGVhZChmKTsKLSAgICB9IGVsc2UgewotICAgICAgICBidWZwdHIgPSBmLT5mX2J1ZnB0cjsKLSAgICAgICAgYnVmID0gZi0+Zl9idWY7Ci0gICAgICAgIGYtPmZfYnVmID0gTlVMTDsgICAgICAgICAgICAgICAgLyogRm9yY2UgbmV3IHJlYWRhaGVhZCBidWZmZXIgKi8KLSAgICAgICAgcyA9IFV0aWxfUmVhZEFoZWFkR2V0TGluZVNraXAoZiwgc2tpcCtsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUgKyAoYnVmc2l6ZT4+MikpOwotICAgICAgICBpZiAocyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocykrc2tpcCwgYnVmcHRyLCBsZW4pOwotICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7Ci0gICAgfQotICAgIHJldHVybiBzOwotfQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1ldGhvZHMgb2YgQloyRmlsZS4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfcmVhZF9fZG9jX18sCi0icmVhZChbc2l6ZV0pIC0+IHN0cmluZ1xuXAotXG5cCi1SZWFkIGF0IG1vc3Qgc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHJldHVybmVkIGFzIGEgc3RyaW5nLiBJZiB0aGUgc2l6ZVxuXAotYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfcmVhZCgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfcmVhZChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBsb25nIGJ5dGVzcmVxdWVzdGVkID0gLTE7Ci0gICAgc2l6ZV90IGJ5dGVzcmVhZCwgYnVmZmVyc2l6ZSwgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bDpyZWFkIiwgJmJ5dGVzcmVxdWVzdGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3IgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIC8qIHJlZnVzZSB0byBtaXggd2l0aCBmLm5leHQoKSAqLwotICAgIGlmIChjaGVja19pdGVyYnVmZmVyZWQoc2VsZikpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGlmIChieXRlc3JlcXVlc3RlZCA8IDApCi0gICAgICAgIGJ1ZmZlcnNpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoKHNpemVfdCkwKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1ZmZlcnNpemUgPSBieXRlc3JlcXVlc3RlZDsKLSAgICBpZiAoYnVmZmVyc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVxdWVzdGVkIG51bWJlciBvZiBieXRlcyBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibW9yZSB0aGFuIGEgUHl0aG9uIHN0cmluZyBjYW4gaG9sZCIpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBidWZmZXJzaXplKTsKLSAgICBpZiAocmV0ID09IE5VTEwgfHwgYnVmZmVyc2l6ZSA9PSAwKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgYnl0ZXNyZWFkID0gMDsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUYocmV0KStieXRlc3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc2l6ZS1ieXRlc3JlYWQpOwotICAgICAgICBzZWxmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBieXRlc3JlYWQgKz0gY2h1bmtzaXplOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgIHJldCA9IE5VTEw7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzcmVxdWVzdGVkIDwgMCkgewotICAgICAgICAgICAgYnVmZmVyc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShidWZmZXJzaXplKTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnVmZmVyc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoYnl0ZXNyZWFkICE9IGJ1ZmZlcnNpemUpIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBieXRlc3JlYWQpIDwgMCkgewotICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotY2xlYW51cDoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfcmVhZGxpbmVfX2RvY19fLAotInJlYWRsaW5lKFtzaXplXSkgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybiB0aGUgbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgc3RyaW5nLCByZXRhaW5pbmcgbmV3bGluZS5cblwKLUEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgd2lsbCBsaW1pdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG9cblwKLXJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4gUmV0dXJuIGFuIGVtcHR5XG5cCi1zdHJpbmcgYXQgRU9GLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3JlYWRsaW5lKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGludCBzaXplaGludCA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpyZWFkbGluZSIsICZzaXplaGludCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHJlYWRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICAvKiByZWZ1c2UgdG8gbWl4IHdpdGggZi5uZXh0KCkgKi8KLSAgICBpZiAoY2hlY2tfaXRlcmJ1ZmZlcmVkKHNlbGYpKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBpZiAoc2l6ZWhpbnQgPT0gMCkKLSAgICAgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgZWxzZQotICAgICAgICByZXQgPSBVdGlsX0dldExpbmUoc2VsZiwgKHNpemVoaW50IDwgMCkgPyAwIDogc2l6ZWhpbnQpOwotCi1jbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9yZWFkbGluZXNfX2RvY19fLAotInJlYWRsaW5lcyhbc2l6ZV0pIC0+IGxpc3RcblwKLVxuXAotQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgbGluZXMgcmVhZC5cblwKLVRoZSBvcHRpb25hbCBzaXplIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4gYXBwcm94aW1hdGUgYm91bmQgb24gdGhlXG5cCi10b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9yZWFkbGluZXMoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3JlYWRsaW5lcyhCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBsb25nIHNpemVoaW50ID0gMDsKLSAgICBQeU9iamVjdCAqbGlzdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxpbmU7Ci0gICAgY2hhciBzbWFsbF9idWZmZXJbU01BTExDSFVOS107Ci0gICAgY2hhciAqYnVmZmVyID0gc21hbGxfYnVmZmVyOwotICAgIHNpemVfdCBidWZmZXJzaXplID0gU01BTExDSFVOSzsKLSAgICBQeU9iamVjdCAqYmlnX2J1ZmZlciA9IE5VTEw7Ci0gICAgc2l6ZV90IG5maWxsZWQgPSAwOwotICAgIHNpemVfdCBucmVhZDsKLSAgICBzaXplX3QgdG90YWxyZWFkID0gMDsKLSAgICBjaGFyICpwLCAqcSwgKmVuZDsKLSAgICBpbnQgZXJyOwotICAgIGludCBzaG9ydHJlYWQgPSAwOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bDpyZWFkbGluZXMiLCAmc2l6ZWhpbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgLyogcmVmdXNlIHRvIG1peCB3aXRoIGYubmV4dCgpICovCi0gICAgaWYgKGNoZWNrX2l0ZXJidWZmZXJlZChzZWxmKSkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIG5yZWFkID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIrbmZpbGxlZCwgYnVmZmVyc2l6ZS1uZmlsbGVkKTsKLSAgICAgICAgc2VsZi0+cG9zICs9IG5yZWFkOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBpZiAobnJlYWQgPT0gMCkgewotICAgICAgICAgICAgICAgIHNpemVoaW50ID0gMDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNob3J0cmVhZCA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgIGVycm9yOgotICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgdG90YWxyZWFkICs9IG5yZWFkOwotICAgICAgICBwID0gbWVtY2hyKGJ1ZmZlcituZmlsbGVkLCAnXG4nLCBucmVhZCk7Ci0gICAgICAgIGlmICghc2hvcnRyZWFkICYmIHAgPT0gTlVMTCkgewotICAgICAgICAgICAgLyogTmVlZCBhIGxhcmdlciBidWZmZXIgdG8gZml0IHRoaXMgbGluZSAqLwotICAgICAgICAgICAgbmZpbGxlZCArPSBucmVhZDsKLSAgICAgICAgICAgIGJ1ZmZlcnNpemUgKj0gMjsKLSAgICAgICAgICAgIGlmIChidWZmZXJzaXplID4gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICJsaW5lIGlzIGxvbmdlciB0aGFuIGEgUHl0aG9uIHN0cmluZyBjYW4gaG9sZCIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYmlnX2J1ZmZlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgLyogQ3JlYXRlIHRoZSBiaWcgYnVmZmVyICovCi0gICAgICAgICAgICAgICAgYmlnX2J1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgICAgIE5VTEwsIGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgICAgIGlmIChiaWdfYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19BU19TVFJJTkcoYmlnX2J1ZmZlcik7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc21hbGxfYnVmZmVyLCBuZmlsbGVkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIEdyb3cgdGhlIGJpZyBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZiaWdfYnVmZmVyLCBidWZmZXJzaXplKSA8IDApewotICAgICAgICAgICAgICAgICAgICBiaWdfYnVmZmVyID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19BU19TVFJJTkcoYmlnX2J1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBlbmQgPSBidWZmZXIrbmZpbGxlZCtucmVhZDsKLSAgICAgICAgcSA9IGJ1ZmZlcjsKLSAgICAgICAgd2hpbGUgKHAgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogUHJvY2VzcyBjb21wbGV0ZSBsaW5lcyAqLwotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocSwgcC1xKTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGVyciA9IFB5TGlzdF9BcHBlbmQobGlzdCwgbGluZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgICAgICBpZiAoZXJyICE9IDApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIHEgPSBwOwotICAgICAgICAgICAgcCA9IG1lbWNocihxLCAnXG4nLCBlbmQtcSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogTW92ZSB0aGUgcmVtYWluaW5nIGluY29tcGxldGUgbGluZSB0byB0aGUgc3RhcnQgKi8KLSAgICAgICAgbmZpbGxlZCA9IGVuZC1xOwotICAgICAgICBtZW1tb3ZlKGJ1ZmZlciwgcSwgbmZpbGxlZCk7Ci0gICAgICAgIGlmIChzaXplaGludCA+IDApCi0gICAgICAgICAgICBpZiAodG90YWxyZWFkID49IChzaXplX3Qpc2l6ZWhpbnQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChzaG9ydHJlYWQpIHsKLSAgICAgICAgICAgIHNpemVoaW50ID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuZmlsbGVkICE9IDApIHsKLSAgICAgICAgLyogUGFydGlhbCBsYXN0IGxpbmUgKi8KLSAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLCBuZmlsbGVkKTsKLSAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChzaXplaGludCA+IDApIHsKLSAgICAgICAgICAgIC8qIE5lZWQgdG8gY29tcGxldGUgdGhlIGxhc3QgbGluZSAqLwotICAgICAgICAgICAgUHlPYmplY3QgKnJlc3QgPSBVdGlsX0dldExpbmUoc2VsZiwgMCk7Ci0gICAgICAgICAgICBpZiAocmVzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmbGluZSwgcmVzdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdCk7Ci0gICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChsaXN0LCBsaW5lKTsKLSAgICAgICAgUHlfREVDUkVGKGxpbmUpOwotICAgICAgICBpZiAoZXJyICE9IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICBjbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBpZiAoYmlnX2J1ZmZlcikgewotICAgICAgICBQeV9ERUNSRUYoYmlnX2J1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiBsaXN0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV93cml0ZV9fZG9jX18sCi0id3JpdGUoZGF0YSkgLT4gTm9uZVxuXAotXG5cCi1Xcml0ZSB0aGUgJ2RhdGEnIHN0cmluZyB0byBmaWxlLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywgY2xvc2UoKSBtYXlcblwKLWJlIG5lZWRlZCBiZWZvcmUgdGhlIGZpbGUgb24gZGlzayByZWZsZWN0cyB0aGUgZGF0YSB3cml0dGVuLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV93cml0ZSgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfd3JpdGUoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlIiwgJnBidWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSBwYnVmLmJ1ZjsKLSAgICBsZW4gPSBwYnVmLmxlbjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3Igd3JpdGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBCWjJfYnpXcml0ZSAoJmJ6ZXJyb3IsIHNlbGYtPmZwLCBidWYsIGxlbik7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLWNsZWFudXA6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3dyaXRlbGluZXNfX2RvY19fLAotIndyaXRlbGluZXMoc2VxdWVuY2Vfb2Zfc3RyaW5ncykgLT4gTm9uZVxuXAotXG5cCi1Xcml0ZSB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB0byB0aGUgZmlsZS4gTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3RcblwKLWFkZGVkLiBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIHN0cmluZ3MuIFRoaXMgaXNcblwKLWVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvciBlYWNoIHN0cmluZy5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfd3JpdGVsaW5lcygpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfd3JpdGVsaW5lcyhCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VxKQotewotI2RlZmluZSBDSFVOS1NJWkUgMTAwMAotICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxpbmU7Ci0gICAgaW50IGksIGosIGluZGV4LCBsZW4sIGlzbGlzdDsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHdyaXRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgaXNsaXN0ID0gUHlMaXN0X0NoZWNrKHNlcSk7Ci0gICAgaWYgICghaXNsaXN0KSB7Ci0gICAgICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKHNlcSk7Ci0gICAgICAgIGlmIChpdGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIndyaXRlbGluZXMoKSByZXF1aXJlcyBhbiBpdGVyYWJsZSBhcmd1bWVudCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBsaXN0ID0gUHlMaXN0X05ldyhDSFVOS1NJWkUpOwotICAgICAgICBpZiAobGlzdCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICAvKiBTdHJhdGVneTogc2x1cnAgQ0hVTktTSVpFIGxpbmVzIGludG8gYSBwcml2YXRlIGxpc3QsCi0gICAgICAgY2hlY2tpbmcgdGhhdCB0aGV5IGFyZSBhbGwgc3RyaW5ncywgdGhlbiB3cml0ZSB0aGF0IGxpc3QKLSAgICAgICB3aXRob3V0IGhvbGRpbmcgdGhlIGludGVycHJldGVyIGxvY2ssIHRoZW4gY29tZSBiYWNrIGZvciBtb3JlLiAqLwotICAgIGZvciAoaW5kZXggPSAwOyA7IGluZGV4ICs9IENIVU5LU0laRSkgewotICAgICAgICBpZiAoaXNsaXN0KSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IFB5TGlzdF9HZXRTbGljZShzZXEsIGluZGV4LCBpbmRleCtDSFVOS1NJWkUpOwotICAgICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaiA9IFB5TGlzdF9HRVRfU0laRShsaXN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBDSFVOS1NJWkU7IGorKykgewotICAgICAgICAgICAgICAgIGxpbmUgPSBQeUl0ZXJfTmV4dChpdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5TGlzdF9TZXRJdGVtKGxpc3QsIGosIGxpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChqID09IDApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvKiBDaGVjayB0aGF0IGFsbCBlbnRyaWVzIGFyZSBpbmRlZWQgYnl0ZSBzdHJpbmdzLiBJZiBub3QsCi0gICAgICAgICAgIGFwcGx5IHRoZSBzYW1lIHJ1bGVzIGFzIGZvciBmaWxlLndyaXRlKCkgYW5kCi0gICAgICAgICAgIGNvbnZlcnQgdGhlIHJldHMgdG8gc3RyaW5ncy4gVGhpcyBpcyBzbG93LCBidXQKLSAgICAgICAgICAgc2VlbXMgdG8gYmUgdGhlIG9ubHkgd2F5IHNpbmNlIGFsbCBjb252ZXJzaW9uIEFQSXMKLSAgICAgICAgICAgY291bGQgcG90ZW50aWFsbHkgZXhlY3V0ZSBQeXRob24gY29kZS4gKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGo7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgaSk7Ci0gICAgICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpidWZmZXI7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcih2LCAmYnVmZmVyLCAmbGVuKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlbGluZXMoKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSBzZXF1ZW5jZSBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgb2JqZWN0cyIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIGxpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2luY2Ugd2UgYXJlIHJlbGVhc2luZyB0aGUgZ2xvYmFsIGxvY2ssIHRoZQotICAgICAgICAgICBmb2xsb3dpbmcgY29kZSBtYXkgKm5vdCogZXhlY3V0ZSBQeXRob24gY29kZS4gKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgajsgaSsrKSB7Ci0gICAgICAgICAgICBsaW5lID0gUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpOwotICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShsaW5lKTsKLSAgICAgICAgICAgIEJaMl9ieldyaXRlICgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcobGluZSksIGxlbik7Ci0gICAgICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChqIDwgQ0hVTktTSVpFKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLSAgZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5X1hERUNSRUYobGlzdCk7Ci0gICAgUHlfWERFQ1JFRihpdGVyKTsKLSAgICByZXR1cm4gcmV0OwotI3VuZGVmIENIVU5LU0laRQotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9zZWVrX19kb2NfXywKLSJzZWVrKG9mZnNldCBbLCB3aGVuY2VdKSAtPiBOb25lXG5cCi1cblwKLU1vdmUgdG8gbmV3IGZpbGUgcG9zaXRpb24uIEFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuIE9wdGlvbmFsXG5cCi1hcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8gMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0XG5cCi1zaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlcyBhcmUgMSAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLFxuXAotcG9zaXRpdmUgb3IgbmVnYXRpdmUpLCBhbmQgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseVxuXAotbmVnYXRpdmUsIGFsdGhvdWdoIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS5cblwKLVxuXAotTm90ZSB0aGF0IHNlZWtpbmcgb2YgYnoyIGZpbGVzIGlzIGVtdWxhdGVkLCBhbmQgZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzXG5cCi10aGUgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9zZWVrKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCB3aGVyZSA9IDA7Ci0gICAgUHlPYmplY3QgKm9mZm9iajsKLSAgICBQeV9vZmZfdCBvZmZzZXQ7Ci0gICAgY2hhciBzbWFsbF9idWZmZXJbU01BTExDSFVOS107Ci0gICAgY2hhciAqYnVmZmVyID0gc21hbGxfYnVmZmVyOwotICAgIHNpemVfdCBidWZmZXJzaXplID0gU01BTExDSFVOSzsKLSAgICBQeV9vZmZfdCBieXRlc3JlYWQgPSAwOwotICAgIHNpemVfdCByZWFkc2l6ZTsKLSAgICBpbnQgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZvZmZvYmosICZ3aGVyZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgb2Zmc2V0ID0gUHlMb25nX0FzTG9uZyhvZmZvYmopOwotI2Vsc2UKLSAgICBvZmZzZXQgPSBQeUxvbmdfQ2hlY2sob2Zmb2JqKSA/Ci0gICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nKG9mZm9iaikgOiBQeUxvbmdfQXNMb25nKG9mZm9iaik7Ci0jZW5kaWYKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgVXRpbF9Ecm9wUmVhZEFoZWFkKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWVrIHdvcmtzIG9ubHkgd2hpbGUgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIGlmICh3aGVyZSA9PSAyKSB7Ci0gICAgICAgIGlmIChzZWxmLT5zaXplID09IC0xKSB7Ci0gICAgICAgICAgICBhc3NlcnQoc2VsZi0+bW9kZSAhPSBNT0RFX1JFQURfRU9GKTsKLSAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsIGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgICAgIHNlbGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICAgICAgICAgIGJ5dGVzcmVhZCArPSBjaHVua3NpemU7Ci0gICAgICAgICAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgYnl0ZXNyZWFkID0gMDsKLSAgICAgICAgfQotICAgICAgICBvZmZzZXQgPSBzZWxmLT5zaXplICsgb2Zmc2V0OwotICAgIH0gZWxzZSBpZiAod2hlcmUgPT0gMSkgewotICAgICAgICBvZmZzZXQgPSBzZWxmLT5wb3MgKyBvZmZzZXQ7Ci0gICAgfQotCi0gICAgLyogQmVmb3JlIGdldHRpbmcgaGVyZSwgb2Zmc2V0IG11c3QgYmUgdGhlIGFic29sdXRlIHBvc2l0aW9uIHRoZSBmaWxlCi0gICAgICogcG9pbnRlciBzaG91bGQgYmUgc2V0IHRvLiAqLwotCi0gICAgaWYgKG9mZnNldCA+PSBzZWxmLT5wb3MpIHsKLSAgICAgICAgLyogd2UgY2FuIG1vdmUgZm9yd2FyZCAqLwotICAgICAgICBvZmZzZXQgLT0gc2VsZi0+cG9zOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIHdlIGNhbm5vdCBtb3ZlIGJhY2ssIHNvIHJld2luZCB0aGUgc3RyZWFtICovCi0gICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIHJld2luZChzZWxmLT5yYXdmcCk7Ci0gICAgICAgIHNlbGYtPnBvcyA9IDA7Ci0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6UmVhZE9wZW4oJmJ6ZXJyb3IsIHNlbGYtPnJhd2ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwsIDApOwotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIHNlbGYtPm1vZGUgPSBNT0RFX1JFQUQ7Ci0gICAgfQotCi0gICAgaWYgKG9mZnNldCA8PSAwIHx8IHNlbGYtPm1vZGUgPT0gTU9ERV9SRUFEX0VPRikKLSAgICAgICAgZ290byBleGl0OwotCi0gICAgLyogQmVmb3JlIGdldHRpbmcgaGVyZSwgb2Zmc2V0IG11c3QgYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgICAgKiB0byB3YWxrIGZvcndhcmQuICovCi0gICAgZm9yICg7OykgewotICAgICAgICBpZiAob2Zmc2V0LWJ5dGVzcmVhZCA+IGJ1ZmZlcnNpemUpCi0gICAgICAgICAgICByZWFkc2l6ZSA9IGJ1ZmZlcnNpemU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8qIG9mZnNldCBtaWdodCBiZSB3aWRlciB0aGF0IHJlYWRzaXplLCBidXQgdGhlIHJlc3VsdAotICAgICAgICAgICAgICogb2YgdGhlIHN1YnRyYWN0aW9uIGlzIGJvdW5kIGJ5IGJ1ZmZlcnNpemUgKHNlZSB0aGUKLSAgICAgICAgICAgICAqIGNvbmRpdGlvbiBhYm92ZSkuIGJ1ZmZlcnNpemUgaXMgODE5Mi4gKi8KLSAgICAgICAgICAgIHJlYWRzaXplID0gKHNpemVfdCkob2Zmc2V0LWJ5dGVzcmVhZCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsIGJ1ZmZlciwgcmVhZHNpemUpOwotICAgICAgICBzZWxmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBieXRlc3JlYWQgKz0gY2h1bmtzaXplOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzcmVhZCA9PSBvZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLWV4aXQ6Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLWNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3RlbGxfX2RvY19fLAotInRlbGwoKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIgKG1heSBiZSBhIGxvbmcgaW50ZWdlcikuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfdGVsbChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLQotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgcmV0ID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnBvcyk7Ci0jZWxzZQotICAgIHJldCA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoc2VsZi0+cG9zKTsKLSNlbmRpZgotCi1jbGVhbnVwOgotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX2Nsb3NlX19kb2NfXywKLSJjbG9zZSgpIC0+IE5vbmUgb3IgKHBlcmhhcHMpIGFuIGludGVnZXJcblwKLVxuXAotQ2xvc2UgdGhlIGZpbGUuIFNldHMgZGF0YSBhdHRyaWJ1dGUgLmNsb3NlZCB0byB0cnVlLiBBIGNsb3NlZCBmaWxlXG5cCi1jYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gY2xvc2UoKSBtYXkgYmUgY2FsbGVkIG1vcmVcblwKLXRoYW4gb25jZSB3aXRob3V0IGVycm9yLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2Nsb3NlKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgaW50IGJ6ZXJyb3IgPSBCWl9PSzsKLQotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIH0KLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9XUklURToKLSAgICAgICAgICAgIEJaMl9ieldyaXRlQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBzZWxmLT5tb2RlID0gTU9ERV9DTE9TRUQ7Ci0gICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBzZWxmLT5yYXdmcCA9IE5VTEw7Ci0gICAgaWYgKGJ6ZXJyb3IgPT0gQlpfT0spIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXQgPSBQeV9Ob25lOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgIH0KLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9lbnRlcl9kb2MsCi0iX19lbnRlcl9fKCkgLT4gc2VsZi4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZW50ZXIoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9leGl0X2RvYywKLSJfX2V4aXRfXygqZXhjaW5mbykgLT4gTm9uZS4gIENsb3NlcyB0aGUgZmlsZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZXhpdChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKikgc2VsZiwgImNsb3NlIiwgTlVMTCk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIC8qIElmIGVycm9yIG9jY3VycmVkLCBwYXNzIHRocm91Z2ggKi8KLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfREVDUkVGKHJldCk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLQotc3RhdGljIFB5T2JqZWN0ICpCWjJGaWxlX2dldGl0ZXIoQloyRmlsZU9iamVjdCAqc2VsZik7Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBCWjJGaWxlX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfcmVhZF9fZG9jX199LAotICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3JlYWRsaW5lX19kb2NfX30sCi0gICAgeyJyZWFkbGluZXMiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9yZWFkbGluZXNfX2RvY19ffSwKLSAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfd3JpdGUsIE1FVEhfVkFSQVJHUywgQloyRmlsZV93cml0ZV9fZG9jX199LAotICAgIHsid3JpdGVsaW5lcyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3dyaXRlbGluZXMsIE1FVEhfTywgQloyRmlsZV93cml0ZWxpbmVzX19kb2NfX30sCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfc2VlaywgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3NlZWtfX2RvY19ffSwKLSAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV90ZWxsLCBNRVRIX05PQVJHUywgQloyRmlsZV90ZWxsX19kb2NfX30sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilCWjJGaWxlX2Nsb3NlLCBNRVRIX05PQVJHUywgQloyRmlsZV9jbG9zZV9fZG9jX199LAotICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfZW50ZXIsIE1FVEhfTk9BUkdTLCBCWjJGaWxlX2VudGVyX2RvY30sCi0gICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX2V4aXQsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9leGl0X2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBHZXR0ZXJzIGFuZCBzZXR0ZXJzIG9mIEJaMkZpbGUuICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2dldF9jbG9zZWQoQloyRmlsZU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpOwotfQotCi1zdGF0aWMgUHlHZXRTZXREZWYgQloyRmlsZV9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpQloyRmlsZV9nZXRfY2xvc2VkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAiVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjbG9zZWQifSwKLSAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFNsb3QgZGVmaW5pdGlvbnMgZm9yIEJaMkZpbGVfVHlwZS4gKi8KLQotc3RhdGljIGludAotQloyRmlsZV9pbml0KEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZW5hbWUiLCAibW9kZSIsICJidWZmZXJpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCIsIDB9OwotICAgIFB5T2JqZWN0ICpuYW1lX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBjaGFyICptb2RlID0gInIiOwotICAgIGludCBidWZmZXJpbmcgPSAtMTsKLSAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgaW50IG1vZGVfY2hhciA9IDA7Ci0KLSAgICBzZWxmLT5zaXplID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxzaWk6QloyRmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kZSwgJmJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG5hbWVfb2JqKTsKLSAgICBpZiAoY29tcHJlc3NsZXZlbCA8IDEgfHwgY29tcHJlc3NsZXZlbCA+IDkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOwotICAgICAgICBQeV9ERUNSRUYobmFtZV9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgZm9yICg7OykgewotICAgICAgICBpbnQgZXJyb3IgPSAwOwotICAgICAgICBzd2l0Y2ggKCptb2RlKSB7Ci0gICAgICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgIGNhc2UgJ3cnOgotICAgICAgICAgICAgICAgIGlmIChtb2RlX2NoYXIpCi0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gMTsKLSAgICAgICAgICAgICAgICBtb2RlX2NoYXIgPSAqbW9kZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAnYic6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbW9kZSBjaGFyICVjIiwgKm1vZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVfb2JqKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBtb2RlKys7Ci0gICAgICAgIGlmICgqbW9kZSA9PSAnXDAnKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKG1vZGVfY2hhciA9PSAwKSB7Ci0gICAgICAgIG1vZGVfY2hhciA9ICdyJzsKLSAgICB9Ci0KLSAgICBtb2RlID0gKG1vZGVfY2hhciA9PSAncicpID8gInJiIiA6ICJ3YiI7Ci0KLSAgICBzZWxmLT5yYXdmcCA9IGZvcGVuKG5hbWUsIG1vZGUpOwotICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgaWYgKHNlbGYtPnJhd2ZwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIFhYWCBJZ25vcmUgYnVmZmVyaW5nICovCi0KLSAgICAvKiBGcm9tIG5vdyBvbiwgd2UgaGF2ZSBzdHVmZiB0byBkZWFsbG9jLCBzbyBqdW1wIHRvIGVycm9yIGxhYmVsCi0gICAgICogaW5zdGVhZCBvZiByZXR1cm5pbmcgKi8KLQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICBpZiAoIXNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAidW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtb2RlX2NoYXIgPT0gJ3InKQotICAgICAgICBzZWxmLT5mcCA9IEJaMl9ielJlYWRPcGVuKCZiemVycm9yLCBzZWxmLT5yYXdmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBOVUxMLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6V3JpdGVPcGVuKCZiemVycm9yLCBzZWxmLT5yYXdmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NsZXZlbCwgMCwgMCk7Ci0KLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgc2VsZi0+bW9kZSA9IChtb2RlX2NoYXIgPT0gJ3InKSA/IE1PREVfUkVBRCA6IE1PREVfV1JJVEU7Ci0KLSAgICByZXR1cm4gMDsKLQotZXJyb3I6Ci0gICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBzZWxmLT5yYXdmcCA9IE5VTEw7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkZpbGVfZGVhbGxvYyhCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGludCBiemVycm9yOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spCi0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSNlbmRpZgotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgQloyX2J6UmVhZENsb3NlKCZiemVycm9yLCBzZWxmLT5mcCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgQloyX2J6V3JpdGVDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFV0aWxfRHJvcFJlYWRBaGVhZChzZWxmKTsKLSAgICBpZiAoc2VsZi0+cmF3ZnAgIT0gTlVMTCkKLSAgICAgICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfZ2V0aXRlcigpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZ2V0aXRlcihCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKXNlbGYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfaXRlcm5leHQoKS4gKi8KLSNkZWZpbmUgUkVBREFIRUFEX0JVRlNJWkUgODE5Mgotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfaXRlcm5leHQoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBQeUJ5dGVzT2JqZWN0KiByZXQ7Ci0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0ID0gVXRpbF9SZWFkQWhlYWRHZXRMaW5lU2tpcChzZWxmLCAwLCBSRUFEQUhFQURfQlVGU0laRSk7Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIGlmIChyZXQgPT0gTlVMTCB8fCBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgPT0gMCkgewotICAgICAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmV0OwotfQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEJaMkZpbGVfVHlwZSBkZWZpbml0aW9uLiAqLwotCi1QeURvY19WQVIoQloyRmlsZV9fZG9jX18pID0KLVB5RG9jX1NUUigKLSJCWjJGaWxlKG5hbWUgWywgbW9kZT0ncicsIGJ1ZmZlcmluZz0wLCBjb21wcmVzc2xldmVsPTldKSAtPiBmaWxlIG9iamVjdFxuXAotXG5cCi1PcGVuIGEgYnoyIGZpbGUuIFRoZSBtb2RlIGNhbiBiZSAncicgb3IgJ3cnLCBmb3IgcmVhZGluZyAoZGVmYXVsdCkgb3JcblwKLXdyaXRpbmcuIFdoZW4gb3BlbmVkIGZvciB3cml0aW5nLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndFxuXAotZXhpc3QsIGFuZCB0cnVuY2F0ZWQgb3RoZXJ3aXNlLiBJZiB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IGlzIGdpdmVuLCAwIG1lYW5zXG5cCi11bmJ1ZmZlcmVkLCBhbmQgbGFyZ2VyIG51bWJlcnMgc3BlY2lmeSB0aGUgYnVmZmVyIHNpemUuIElmIGNvbXByZXNzbGV2ZWxcblwKLWlzIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLURhdGEgcmVhZCBpcyBhbHdheXMgcmV0dXJuZWQgaW4gYnl0ZXM7IGRhdGEgd3JpdHRlbiBvdWdodCB0byBiZSBieXRlcy5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkZpbGVfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkZpbGUiLCAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyRmlsZU9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJGaWxlX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwvKnRwX2dldGF0dHJvKi8KLSAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIEJaMkZpbGVfX2RvY19fLCAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAoZ2V0aXRlcmZ1bmMpQloyRmlsZV9nZXRpdGVyLCAvKnRwX2l0ZXIqLwotICAgIChpdGVybmV4dGZ1bmMpQloyRmlsZV9pdGVybmV4dCwgLyp0cF9pdGVybmV4dCovCi0gICAgQloyRmlsZV9tZXRob2RzLCAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KLSAgICBCWjJGaWxlX2dldHNldCwgICAgICAgICAvKnRwX2dldHNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpQloyRmlsZV9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1ldGhvZHMgb2YgQloyQ29tcC4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkNvbXBfY29tcHJlc3NfX2RvY19fLAotImNvbXByZXNzKGRhdGEpIC0+IHN0cmluZ1xuXAotXG5cCi1Qcm92aWRlIG1vcmUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rcyBvZlxuXAotY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBXaGVuIHlvdSd2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YVxuXAotdG8gY29tcHJlc3MsIGNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcyxcblwKLWFuZCByZXR1cm4gd2hhdCBpcyBsZWZ0IGluIHRoZSBpbnRlcm5hbCBidWZmZXJzLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJDb21wX2NvbXByZXNzKEJaMkNvbXBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBzaXplX3QgaW5wdXRfbGVmdDsKLSAgICBzaXplX3Qgb3V0cHV0X3NpemUgPSAwOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJnNlbGYtPmJ6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6Y29tcHJlc3MiLCAmcGRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChwZGF0YS5sZW4gPT0gMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKCFzZWxmLT5ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRoaXMgb2JqZWN0IHdhcyBhbHJlYWR5IGZsdXNoZWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOwotICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgYnpzLT5uZXh0X2luID0gcGRhdGEuYnVmOwotICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4ocGRhdGEubGVuLCBVSU5UX01BWCk7Ci0gICAgaW5wdXRfbGVmdCA9IHBkYXRhLmxlbiAtIGJ6cy0+YXZhaWxfaW47Ci0KLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBCWl9SVU4pOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfUlVOX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX2luID09IDApIHsKLSAgICAgICAgICAgIGlmIChpbnB1dF9sZWZ0ID09IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vIG1vcmUgaW5wdXQgZGF0YSAqLwotICAgICAgICAgICAgYnpzLT5hdmFpbF9pbiA9IE1JTihpbnB1dF9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgICAgICBpbnB1dF9sZWZ0IC09IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgb3V0cHV0X3NpemUpIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJDb21wX2ZsdXNoX19kb2NfXywKLSJmbHVzaCgpIC0+IHN0cmluZ1xuXAotXG5cCi1GaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy5cblwKLVlvdSBtdXN0IG5vdCB1c2UgdGhlIGNvbXByZXNzb3Igb2JqZWN0IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkNvbXBfZmx1c2goQloyQ29tcE9iamVjdCAqc2VsZikKLXsKLSAgICBzaXplX3Qgb3V0cHV0X3NpemUgPSAwOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJnNlbGYtPmJ6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBpZiAoIXNlbGYtPnJ1bm5pbmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJvYmplY3Qgd2FzIGFscmVhZHkgZmx1c2hlZCIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBzZWxmLT5ydW5uaW5nID0gMDsKLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBCWl9GSU5JU0gpOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9GSU5JU0hfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChvdXRwdXRfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkpCi0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgb3V0cHV0X3NpemUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkNvbXBfbWV0aG9kc1tdID0gewotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyQ29tcF9jb21wcmVzcywgTUVUSF9WQVJBUkdTLAotICAgICBCWjJDb21wX2NvbXByZXNzX19kb2NfX30sCi0gICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilCWjJDb21wX2ZsdXNoLCBNRVRIX05PQVJHUywKLSAgICAgQloyQ29tcF9mbHVzaF9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU2xvdCBkZWZpbml0aW9ucyBmb3IgQloyQ29tcF9UeXBlLiAqLwotCi1zdGF0aWMgaW50Ci1CWjJDb21wX2luaXQoQloyQ29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OwotICAgIGludCBiemVycm9yOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29tcHJlc3NsZXZlbCIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwotICAgIGlmICghc2VsZi0+bG9jaykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJ1bmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgbWVtc2V0KCZzZWxmLT5ienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLSAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KCZzZWxmLT5ienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBzZWxmLT5ydW5uaW5nID0gMTsKLQotICAgIHJldHVybiAwOwotZXJyb3I6Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkNvbXBfZGVhbGxvYyhCWjJDb21wT2JqZWN0ICpzZWxmKQotewotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spCi0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSNlbmRpZgotICAgIEJaMl9iekNvbXByZXNzRW5kKCZzZWxmLT5ienMpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBCWjJDb21wX1R5cGUgZGVmaW5pdGlvbi4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkNvbXBfX2RvY19fLAotIkJaMkNvbXByZXNzb3IoW2NvbXByZXNzbGV2ZWw9OV0pIC0+IGNvbXByZXNzb3Igb2JqZWN0XG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gY29tcHJlc3NcblwKLWRhdGEgc2VxdWVudGlhbGx5LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlXG5cCi1jb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuIFRoZSBjb21wcmVzc2xldmVsIHBhcmFtZXRlciwgaWYgZ2l2ZW4sXG5cCi1tdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkNvbXBfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkNvbXByZXNzb3IiLCAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyQ29tcE9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJDb21wX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwvKnRwX2dldGF0dHJvKi8KLSAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIEJaMkNvbXBfX2RvY19fLCAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIEJaMkNvbXBfbWV0aG9kcywgICAgICAgIC8qdHBfbWV0aG9kcyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpQloyQ29tcF9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1lbWJlcnMgb2YgQloyRGVjb21wLiAqLwotCi0jdW5kZWYgT0ZGCi0jZGVmaW5lIE9GRih4KSBvZmZzZXRvZihCWjJEZWNvbXBPYmplY3QsIHgpCi0KLXN0YXRpYyBQeU1lbWJlckRlZiBCWjJEZWNvbXBfbWVtYmVyc1tdID0gewotICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVCwgT0ZGKHVudXNlZF9kYXRhKSwgUkVBRE9OTFl9LAotICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWV0aG9kcyBvZiBCWjJEZWNvbXAuICovCi0KLVB5RG9jX1NUUlZBUihCWjJEZWNvbXBfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcyhkYXRhKSAtPiBzdHJpbmdcblwKLVxuXAotUHJvdmlkZSBtb3JlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rc1xuXAotb2YgZGVjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIElmIHlvdSB0cnkgdG8gZGVjb21wcmVzcyBkYXRhXG5cCi1hZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyBmb3VuZCwgRU9GRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmIGFueSBkYXRhXG5cCi13YXMgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0sIGl0J2xsIGJlIGlnbm9yZWQgYW5kIHNhdmVkIGluXG5cCi11bnVzZWRfZGF0YSBhdHRyaWJ1dGUuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkRlY29tcF9kZWNvbXByZXNzKEJaMkRlY29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIHNpemVfdCBpbnB1dF9sZWZ0OwotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmc2VsZi0+YnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJnBkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKCFzZWxmLT5ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgImVuZCBvZiBzdHJlYW0gd2FzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxyZWFkeSBmb3VuZCIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBienMtPm5leHRfaW4gPSBwZGF0YS5idWY7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IE1JTihwZGF0YS5sZW4sIFVJTlRfTUFYKTsKLSAgICBpbnB1dF9sZWZ0ID0gcGRhdGEubGVuIC0gYnpzLT5hdmFpbF9pbjsKLQotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqc2F2ZWRfbmV4dF9vdXQ7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBzYXZlZF9uZXh0X291dCA9IGJ6cy0+bmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKGJ6cyk7Ci0gICAgICAgIG91dHB1dF9zaXplICs9IGJ6cy0+bmV4dF9vdXQgLSBzYXZlZF9uZXh0X291dDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5ydW5uaW5nID0gMDsKLSAgICAgICAgICAgIGlucHV0X2xlZnQgKz0gYnpzLT5hdmFpbF9pbjsKLSAgICAgICAgICAgIGlmIChpbnB1dF9sZWZ0ICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwotICAgICAgICAgICAgICAgIHNlbGYtPnVudXNlZF9kYXRhID0KLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShienMtPm5leHRfaW4sIGlucHV0X2xlZnQpOwotICAgICAgICAgICAgICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGlucHV0X2xlZnQgPT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsgLyogbm8gbW9yZSBpbnB1dCBkYXRhICovCi0gICAgICAgICAgICBienMtPmF2YWlsX2luID0gTUlOKGlucHV0X2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgICAgIGlucHV0X2xlZnQgLT0gYnpzLT5hdmFpbF9pbjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChVdGlsX0dyb3dCdWZmZXIoJnJldCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob3V0cHV0X3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXQpKQotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIG91dHB1dF9zaXplKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gcmV0OwotCi1lcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkRlY29tcF9tZXRob2RzW10gPSB7Ci0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkRlY29tcF9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIEJaMkRlY29tcF9kZWNvbXByZXNzX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTbG90IGRlZmluaXRpb25zIGZvciBCWjJEZWNvbXBfVHlwZS4gKi8KLQotc3RhdGljIGludAotQloyRGVjb21wX2luaXQoQloyRGVjb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkJaMkRlY29tcHJlc3NvciIpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7Ci0gICAgaWYgKCFzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgInVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIGlmICghc2VsZi0+dW51c2VkX2RhdGEpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBtZW1zZXQoJnNlbGYtPmJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCAwLCAwKTsKLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgc2VsZi0+cnVubmluZyA9IDE7Ci0KLSAgICByZXR1cm4gMDsKLQotZXJyb3I6Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyB2b2lkCi1CWjJEZWNvbXBfZGVhbGxvYyhCWjJEZWNvbXBPYmplY3QgKnNlbGYpCi17Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotI2VuZGlmCi0gICAgUHlfWERFQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7Ci0gICAgQloyX2J6RGVjb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogQloyRGVjb21wX1R5cGUgZGVmaW5pdGlvbi4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkRlY29tcF9fZG9jX18sCi0iQloyRGVjb21wcmVzc29yKCkgLT4gZGVjb21wcmVzc29yIG9iamVjdFxuXAotXG5cCi1DcmVhdGUgYSBuZXcgZGVjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gZGVjb21wcmVzc1xuXAotZGF0YSBzZXF1ZW50aWFsbHkuIElmIHlvdSB3YW50IHRvIGRlY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZVxuXAotZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG5cCi0iKTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBCWjJEZWNvbXBfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkRlY29tcHJlc3NvciIsICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyRGVjb21wT2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJEZWNvbXBfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLC8qdHBfZ2V0YXR0cm8qLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCi0gICAgQloyRGVjb21wX19kb2NfXywgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgQloyRGVjb21wX21ldGhvZHMsICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICBCWjJEZWNvbXBfbWVtYmVycywgICAgICAvKnRwX21lbWJlcnMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylCWjJEZWNvbXBfaW5pdCwgLyp0cF9pbml0Ki8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAvKnRwX2FsbG9jKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAvKnRwX25ldyovCi0gICAgUHlPYmplY3RfRnJlZSwgICAgICAgICAgLyp0cF9mcmVlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNb2R1bGUgZnVuY3Rpb25zLiAqLwotCi1QeURvY19TVFJWQVIoYnoyX2NvbXByZXNzX19kb2NfXywKLSJjb21wcmVzcyhkYXRhIFssIGNvbXByZXNzbGV2ZWw9OV0pIC0+IHN0cmluZ1xuXAotXG5cCi1Db21wcmVzcyBkYXRhIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSxcblwKLXVzZSBhbiBpbnN0YW5jZSBvZiBCWjJDb21wcmVzc29yIGluc3RlYWQuIFRoZSBjb21wcmVzc2xldmVsIHBhcmFtZXRlciwgaWZcblwKLWdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotYnoyX2NvbXByZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgY29tcHJlc3NsZXZlbD05OwotICAgIGludCBhY3Rpb247Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIHNpemVfdCBpbnB1dF9sZWZ0OwotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtIF9ienM7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmX2J6czsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImRhdGEiLCAiY29tcHJlc3NsZXZlbCIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmcGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXByZXNzbGV2ZWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAoIXJldCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIG1lbXNldChienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IHBkYXRhLmJ1ZjsKLSAgICBienMtPmF2YWlsX2luID0gTUlOKHBkYXRhLmxlbiwgVUlOVF9NQVgpOwotICAgIGlucHV0X2xlZnQgPSBwZGF0YS5sZW4gLSBienMtPmF2YWlsX2luOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpOwotCi0gICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzSW5pdChienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYWN0aW9uID0gQlpfUlVOOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBjaGFyICpzYXZlZF9uZXh0X291dDsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHNhdmVkX25leHRfb3V0ID0gYnpzLT5uZXh0X291dDsKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzKGJ6cywgYWN0aW9uKTsKLSAgICAgICAgb3V0cHV0X3NpemUgKz0gYnpzLT5uZXh0X291dCAtIHNhdmVkX25leHRfb3V0OwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfUlVOX09LICYmIGJ6ZXJyb3IgIT0gQlpfRklOSVNIX09LKSB7Ci0gICAgICAgICAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYWN0aW9uID09IEJaX1JVTiAmJiBienMtPmF2YWlsX2luID09IDApIHsKLSAgICAgICAgICAgIGlmIChpbnB1dF9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBhY3Rpb24gPSBCWl9GSU5JU0g7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4oaW5wdXRfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICAgICAgICAgIGlucHV0X2xlZnQgLT0gYnpzLT5hdmFpbF9pbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChVdGlsX0dyb3dCdWZmZXIoJnJldCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIG91dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG91dHB1dF9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSkKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIG91dHB1dF9zaXplKTsgIC8qIFNldHMgcmV0IHRvIE5VTEwgb24gZmFpbHVyZS4gKi8KLQotICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihiejJfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcyhkYXRhKSAtPiBkZWNvbXByZXNzZWQgZGF0YVxuXAotXG5cCi1EZWNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QuIElmIHlvdSB3YW50IHRvIGRlY29tcHJlc3MgZGF0YSBzZXF1ZW50aWFsbHksXG5cCi11c2UgYW4gaW5zdGFuY2Ugb2YgQloyRGVjb21wcmVzc29yIGluc3RlYWQuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWJ6Ml9kZWNvbXByZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgc2l6ZV90IGlucHV0X2xlZnQ7Ci0gICAgc2l6ZV90IG91dHB1dF9zaXplID0gMDsKLSAgICBQeU9iamVjdCAqcmV0OwotICAgIGJ6X3N0cmVhbSBfYnpzOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJl9ienM7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmRlY29tcHJlc3MiLCAmcGRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChwZGF0YS5sZW4gPT0gMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOwotICAgIGlmICghcmV0KSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgbWVtc2V0KGJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotCi0gICAgYnpzLT5uZXh0X2luID0gcGRhdGEuYnVmOwotICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4ocGRhdGEubGVuLCBVSU5UX01BWCk7Ci0gICAgaW5wdXRfbGVmdCA9IHBkYXRhLmxlbiAtIGJ6cy0+YXZhaWxfaW47Ci0KLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCk7Ci0KLSAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzc0luaXQoYnpzLCAwLCAwKTsKLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqc2F2ZWRfbmV4dF9vdXQ7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBzYXZlZF9uZXh0X291dCA9IGJ6cy0+bmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKGJ6cyk7Ci0gICAgICAgIG91dHB1dF9zaXplICs9IGJ6cy0+bmV4dF9vdXQgLSBzYXZlZF9uZXh0X291dDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX2luID09IDApIHsKLSAgICAgICAgICAgIGlmIChpbnB1dF9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZG4ndCBmaW5kIGVuZCBvZiBzdHJlYW0iKTsKLSAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPmF2YWlsX2luID0gTUlOKGlucHV0X2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgICAgIGlucHV0X2xlZnQgLT0gYnpzLT5hdmFpbF9pbjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChVdGlsX0dyb3dCdWZmZXIoJnJldCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob3V0cHV0X3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXQpKQotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJldCwgb3V0cHV0X3NpemUpOyAgLyogU2V0cyByZXQgdG8gTlVMTCBvbiBmYWlsdXJlLiAqLwotCi0gICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgYnoyX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKSBiejJfY29tcHJlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBiejJfY29tcHJlc3NfX2RvY19ffSwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pIGJ6Ml9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGJ6Ml9kZWNvbXByZXNzX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogSW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uICovCi0KLVB5RG9jX1NUUlZBUihiejJfX2RvY19fLAotIlRoZSBweXRob24gYnoyIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvclxuXAotdGhlIGJ6MiBjb21wcmVzc2lvbiBsaWJyYXJ5LiBJdCBpbXBsZW1lbnRzIGEgY29tcGxldGUgZmlsZVxuXAotaW50ZXJmYWNlLCBvbmUgc2hvdCAoZGUpY29tcHJlc3Npb24gZnVuY3Rpb25zLCBhbmQgdHlwZXMgZm9yXG5cCi1zZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbi5cblwKLSIpOwotCi0KLXN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgYnoybW9kdWxlID0gewotICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAiYnoyIiwKLSAgICBiejJfX2RvY19fLAotICAgIC0xLAotICAgIGJ6Ml9tZXRob2RzLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKLX07Ci0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfYnoyKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJGaWxlX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyQ29tcF9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkRlY29tcF9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmYnoybW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX19hdXRob3JfXyIsIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9fYXV0aG9yX18pKTsKLQotICAgIFB5X0lOQ1JFRigmQloyRmlsZV9UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkZpbGUiLCAoUHlPYmplY3QgKikmQloyRmlsZV9UeXBlKTsKLQotICAgIFB5X0lOQ1JFRigmQloyQ29tcF9UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkNvbXByZXNzb3IiLCAoUHlPYmplY3QgKikmQloyQ29tcF9UeXBlKTsKLQotICAgIFB5X0lOQ1JFRigmQloyRGVjb21wX1R5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyRGVjb21wcmVzc29yIiwgKFB5T2JqZWN0ICopJkJaMkRlY29tcF9UeXBlKTsKLSAgICByZXR1cm4gbTsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYwppbmRleCBhYjRlNjU5Li45ZTllOTZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgIFRSWU1BUF9ERUMoZ2IyMzEyLCAqKm91dGJ1ZiwgYyBeIDB4ODAsIElOMiBeIDB4ODApIHsKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKIAogICAgICAgICBHQktfREVDT0RFKGMsIElOMiwgKipvdXRidWYpCi0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgyLCAxKQogICAgIH0KQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICAgICAgYzMgPSBJTjM7CiAgICAgICAgICAgICBjNCA9IElONDsKICAgICAgICAgICAgIGlmIChjIDwgMHg4MSB8fCBjMyA8IDB4ODEgfHwgYzQgPCAweDMwIHx8IGM0ID4gMHgzOSkKLSAgICAgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIGMgLT0gMHg4MTsgIGMyIC09IDB4MzA7CiAgICAgICAgICAgICBjMyAtPSAweDgxOyBjNCAtPSAweDMwOwogCkBAIC0yOTIsMTIgKzI5MiwxMiBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAKICAgICAgICAgR0JLX0RFQ09ERShjLCBjMiwgKipvdXRidWYpCiAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhnYjE4MDMwZXh0LCAqKm91dGJ1ZiwgYywgYzIpOwotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CkBAIC00MDAsNyArNDAwLDcgQEAKICAgICAgICAgICAgIGVsc2UgaWYgKGMyID09ICdcbicpCiAgICAgICAgICAgICAgICAgOyAvKiBsaW5lLWNvbnRpbnVhdGlvbiAqLwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgTkVYVCgyLCAwKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC00MTksNyArNDE5LDcgQEAKICAgICAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYwppbmRleCA1NThhNDJmLi5kM2FkMDRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5jCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgICAgICAgY2FzZSAweDg4NjQ6IFdSSVRFMigweDAwY2EsIDB4MDMwYyk7IGJyZWFrOwogICAgICAgICBjYXNlIDB4ODhhMzogV1JJVEUyKDB4MDBlYSwgMHgwMzA0KTsgYnJlYWs7CiAgICAgICAgIGNhc2UgMHg4OGE1OiBXUklURTIoMHgwMGVhLCAweDAzMGMpOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogcmV0dXJuIDI7CisgICAgICAgIGRlZmF1bHQ6IHJldHVybiAxOwogICAgICAgICB9CiAKICAgICAgICAgTkVYVCgyLCAyKSAvKiBhbGwgZGVjb2RlZCBjb2RlcG9pbnRzIGFyZSBwYWlycywgYWJvdmUuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCmluZGV4IDI1YzFhMzYuLmNiYzE1NDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCkBAIC0xMjMsNyArMTIzLDcgQEAKIAogQ09ERUNfSU5JVChpc28yMDIyKQogewotICAgIGNvbnN0IHN0cnVjdCBpc28yMDIyX2Rlc2lnbmF0aW9uICpkZXNpZyA9IENPTkZJR19ERVNJR05BVElPTlM7CisgICAgY29uc3Qgc3RydWN0IGlzbzIwMjJfZGVzaWduYXRpb24gKmRlc2lnOwogICAgIGZvciAoZGVzaWcgPSBDT05GSUdfREVTSUdOQVRJT05TOyBkZXNpZy0+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+CiAjZW5kaWYKICNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQogI2luY2x1ZGUgImV4cGF0X2V4dGVybmFsLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ4bWx0b2suaCIKQEAgLTI5NSw3ICsyOTcsOSBAQAogI2VuZGlmCiAKICNkZWZpbmUgUFJFRklYKGlkZW50KSBub3JtYWxfICMjIGlkZW50CisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC02OTIsNyArNjk2LDkgQEAKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVIoZW5jLCBwLCBuKSAoMCkKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkgTElUVExFMl9JU19OTVNUUlRfQ0hBUl9NSU5CUEMoZW5jLCBwKQogCisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC04MzEsNyArODM3LDkgQEAKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVIoZW5jLCBwLCBuKSAoMCkKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkgQklHMl9JU19OTVNUUlRfQ0hBUl9NSU5CUEMoZW5jLCBwKQogCisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC0xMzM3LDcgKzEzNDUsNyBAQAogRU5DT0RJTkcgKgogWG1sSW5pdFVua25vd25FbmNvZGluZyh2b2lkICptZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgIENPTlZFUlRFUiBjb252ZXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgQ09OVkVSVEVSIGNvbnZlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJEYXRhKQogewogICBpbnQgaTsKQEAgLTE2MTAsNyArMTYxOCw5IEBACiAKICNkZWZpbmUgTlMoeCkgeAogI2RlZmluZSBucyh4KSB4CisjZGVmaW5lIFhNTF9UT0tfTlNfQwogI2luY2x1ZGUgInhtbHRva19ucy5jIgorI3VuZGVmIFhNTF9UT0tfTlNfQwogI3VuZGVmIE5TCiAjdW5kZWYgbnMKIApAQCAtMTYxOSw3ICsxNjI5LDkgQEAKICNkZWZpbmUgTlMoeCkgeCAjIyBOUwogI2RlZmluZSBucyh4KSB4ICMjIF9ucwogCisjZGVmaW5lIFhNTF9UT0tfTlNfQwogI2luY2x1ZGUgInhtbHRva19ucy5jIgorI3VuZGVmIFhNTF9UT0tfTlNfQwogCiAjdW5kZWYgTlMKICN1bmRlZiBucwpAQCAtMTYyNyw3ICsxNjM5LDcgQEAKIEVOQ09ESU5HICoKIFhtbEluaXRVbmtub3duRW5jb2RpbmdOUyh2b2lkICptZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBDT05WRVJURVIgY29udmVydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVkVSVEVSIGNvbnZlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpCiB7CiAgIEVOQ09ESU5HICplbmMgPSBYbWxJbml0VW5rbm93bkVuY29kaW5nKG1lbSwgdGFibGUsIGNvbnZlcnQsIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYwppbmRleCBmNzkzYTZiLi45YzI4OTViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19pbXBsLmMKKysrIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfaW1wbC5jCkBAIC0yLDYgKzIsOSBAQAogICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KICovCiAKKy8qIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCEgKi8KKyNpZmRlZiBYTUxfVE9LX0lNUExfQworCiAjaWZuZGVmIElTX0lOVkFMSURfQ0hBUgogI2RlZmluZSBJU19JTlZBTElEX0NIQVIoZW5jLCBwdHIsIG4pICgwKQogI2VuZGlmCkBAIC04ODIsNyArODg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7CiAgIGlmIChwdHIgPT0gZW5kKQotICAgIHJldHVybiAtWE1MX1RPS19QRVJDRU5UOworICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CiAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICBDSEVDS19OTVNUUlRfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgY2FzZSBCVF9TOiBjYXNlIEJUX0xGOiBjYXNlIEJUX0NSOiBjYXNlIEJUX1BFUkNOVDoKQEAgLTE3NzcsMyArMTc4MCw0IEBACiAjdW5kZWYgQ0hFQ0tfTk1TVFJUX0NBU0UKICN1bmRlZiBDSEVDS19OTVNUUlRfQ0FTRVMKIAorI2VuZGlmIC8qIFhNTF9UT0tfSU1QTF9DICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfbnMuYwppbmRleCBkMmY4OTM4Li5jM2I4OGZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX25zLmMKQEAgLTEsMyArMSwxMCBAQAorLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAorICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKyovCisKKy8qIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCEgKi8KKyNpZmRlZiBYTUxfVE9LX05TX0MKKwogY29uc3QgRU5DT0RJTkcgKgogTlMoWG1sR2V0VXRmOEludGVybmFsRW5jb2RpbmcpKHZvaWQpCiB7CkBAIC0xMDQsMyArMTExLDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhbG9uZSk7CiB9CisKKyNlbmRpZiAvKiBYTUxfVE9LX05TX0MgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMzYzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC0wLDAgKzEsMTE1MiBAQAorI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8b2JqZWN0Lmg+CisjaW5jbHVkZSA8ZnJhbWVvYmplY3QuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKy8qIEFsbG9jYXRlIGF0IG1heGltdW0gMTAwIE1CIG9mIHRoZSBzdGFjayB0byByYWlzZSB0aGUgc3RhY2sgb3ZlcmZsb3cgKi8KKyNkZWZpbmUgU1RBQ0tfT1ZFUkZMT1dfTUFYX1NJWkUgKDEwMCoxMDI0KjEwMjQpCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorIyAgZGVmaW5lIEZBVUxUSEFORExFUl9MQVRFUgorI2VuZGlmCisKKyNpZm5kZWYgTVNfV0lORE9XUworICAgLyogcmVnaXN0ZXIoKSBpcyB1c2VsZXNzIG9uIFdpbmRvd3MsIGJlY2F1c2Ugb25seSBTSUdTRUdWLCBTSUdBQlJUIGFuZAorICAgICAgU0lHSUxMIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBwcm9jZXNzLCBhbmQgdGhlc2Ugc2lnbmFscyBjYW4gb25seSBiZSB1c2VkCisgICAgICB3aXRoIGVuYWJsZSgpLCBub3QgdXNpbmcgcmVnaXN0ZXIoKSAqLworIyAgZGVmaW5lIEZBVUxUSEFORExFUl9VU0VSCisjZW5kaWYKKworI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorCisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KK3R5cGVkZWYgc3RydWN0IHNpZ2FjdGlvbiBfUHlfc2lnaGFuZGxlcl90OworI2Vsc2UKK3R5cGVkZWYgUHlPU19zaWdoYW5kbGVyX3QgX1B5X3NpZ2hhbmRsZXJfdDsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IHNpZ251bTsKKyAgICBpbnQgZW5hYmxlZDsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgaW50IGFsbF90aHJlYWRzOworfSBmYXVsdF9oYW5kbGVyX3Q7CisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IGZhdGFsX2Vycm9yID0gezAsIE5VTEwsIC0xLCAwfTsKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorc3RhdGljIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgaW50IGZkOworICAgIFBZX1RJTUVPVVRfVCB0aW1lb3V0X3VzOyAgIC8qIHRpbWVvdXQgaW4gbWljcm9zZWNvbmRzICovCisgICAgaW50IHJlcGVhdDsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBpbnQgZXhpdDsKKyAgICBjaGFyICpoZWFkZXI7CisgICAgc2l6ZV90IGhlYWRlcl9sZW47CisgICAgLyogVGhlIG1haW4gdGhyZWFkIGFsd2F5cyBob2xkcyB0aGlzIGxvY2suIEl0IGlzIG9ubHkgcmVsZWFzZWQgd2hlbgorICAgICAgIGZhdWx0aGFuZGxlcl90aHJlYWQoKSBpcyBpbnRlcnJ1cHRlZCBiZWZvcmUgdGhpcyB0aHJlYWQgZXhpdHMsIG9yIGF0CisgICAgICAgUHl0aG9uIGV4aXQuICovCisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGNhbmNlbF9ldmVudDsKKyAgICAvKiByZWxlYXNlZCBieSBjaGlsZCB0aHJlYWQgd2hlbiBqb2luZWQgKi8KKyAgICBQeVRocmVhZF90eXBlX2xvY2sgcnVubmluZzsKK30gdGhyZWFkOworI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgaW50IGNoYWluOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IHVzZXJfc2lnbmFsX3Q7CisKK3N0YXRpYyB1c2VyX3NpZ25hbF90ICp1c2VyX3NpZ25hbHM7CisKKy8qIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGNvbWUgZnJvbSBQeXRob246IE1vZHVsZXMvc2lnbmFsbW9kdWxlLmMgKi8KKyNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKKyNkZWZpbmUgTlNJRyAxMgorI2VuZGlmCisjaWZuZGVmIE5TSUcKKyMgaWYgZGVmaW5lZChfTlNJRykKKyMgIGRlZmluZSBOU0lHIF9OU0lHICAgICAgICAgICAgLyogRm9yIEJTRC9TeXNWICovCisjIGVsaWYgZGVmaW5lZChfU0lHTUFYKQorIyAgZGVmaW5lIE5TSUcgKF9TSUdNQVggKyAxKSAgICAvKiBGb3IgUU5YICovCisjIGVsaWYgZGVmaW5lZChTSUdNQVgpCisjICBkZWZpbmUgTlNJRyAoU0lHTUFYICsgMSkgICAgIC8qIEZvciBkamdwcCAqLworIyBlbHNlCisjICBkZWZpbmUgTlNJRyA2NCAgICAgICAgICAgICAgIC8qIFVzZSBhIHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZSAqLworIyBlbmRpZgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIGZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pOworI2VuZGlmIC8qIEZBVUxUSEFORExFUl9VU0VSICovCisKKworc3RhdGljIGZhdWx0X2hhbmRsZXJfdCBmYXVsdGhhbmRsZXJfaGFuZGxlcnNbXSA9IHsKKyNpZmRlZiBTSUdCVVMKKyAgICB7U0lHQlVTLCAwLCAiQnVzIGVycm9yIiwgfSwKKyNlbmRpZgorI2lmZGVmIFNJR0lMTAorICAgIHtTSUdJTEwsIDAsICJJbGxlZ2FsIGluc3RydWN0aW9uIiwgfSwKKyNlbmRpZgorICAgIHtTSUdGUEUsIDAsICJGbG9hdGluZyBwb2ludCBleGNlcHRpb24iLCB9LAorICAgIHtTSUdBQlJULCAwLCAiQWJvcnRlZCIsIH0sCisgICAgLyogZGVmaW5lIFNJR1NFR1YgYXQgdGhlIGVuZCB0byBtYWtlIGl0IHRoZSBkZWZhdWx0IGNob2ljZSBpZiBzZWFyY2hpbmcgdGhlCisgICAgICAgaGFuZGxlciBmYWlscyBpbiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSAqLworICAgIHtTSUdTRUdWLCAwLCAiU2VnbWVudGF0aW9uIGZhdWx0IiwgfQorfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKKyAgICBQeV9BUlJBWV9MRU5HVEgoZmF1bHRoYW5kbGVyX2hhbmRsZXJzKTsKKworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKK3N0YXRpYyBzdGFja190IHN0YWNrOworI2VuZGlmCisKKworLyogR2V0IHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgYSBmaWxlIGJ5IGNhbGxpbmcgaXRzIGZpbGVubygpIG1ldGhvZCBhbmQgdGhlbgorICAgY2FsbCBpdHMgZmx1c2goKSBtZXRob2QuCisKKyAgIElmIGZpbGUgaXMgTlVMTCBvciBQeV9Ob25lLCB1c2Ugc3lzLnN0ZGVyciBhcyB0aGUgbmV3IGZpbGUuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbmV3IGZpbGUgYW5kIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaW50byAqcF9mZC4KKyAgIE9uIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKmZpbGUsIGludCAqcF9mZCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CisgICAgX1B5X0lERU5USUZJRVIoZmx1c2gpOworICAgIGxvbmcgZmRfbG9uZzsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgeworICAgICAgICBmaWxlID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKKyAgICAgICAgaWYgKGZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLnN0ZGVyciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgIiIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmZCA9IC0xOworICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgeworICAgICAgICBmZF9sb25nID0gUHlMb25nX0FzTG9uZyhyZXN1bHQpOworICAgICAgICBpZiAoMCA8PSBmZF9sb25nICYmIGZkX2xvbmcgPCBJTlRfTUFYKQorICAgICAgICAgICAgZmQgPSAoaW50KWZkX2xvbmc7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworCisgICAgaWYgKGZkID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5maWxlbm8oKSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgZWxzZSB7CisgICAgICAgIC8qIGlnbm9yZSBmbHVzaCgpIGVycm9yICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgICpwX2ZkID0gZmQ7CisgICAgcmV0dXJuIGZpbGU7Cit9CisKKy8qIEdldCB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkOiBvbmx5IGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB0aGUgY3VycmVudAorICAgdGhyZWFkIGhvbGRzIHRoZSBHSUwuIFJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KK3N0YXRpYyBQeVRocmVhZFN0YXRlKgorZ2V0X3RocmVhZF9zdGF0ZSh2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiB0c3RhdGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19weShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAiYWxsX3RocmVhZHMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CisgICAgaW50IGFsbF90aHJlYWRzID0gMTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgY29uc3QgY2hhciAqZXJybXNnOworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgInxPaTpkdW1wX3RyYWNlYmFjayIsIGt3bGlzdCwKKyAgICAgICAgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChhbGxfdGhyZWFkcykgeworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKKy8qIEhhbmRsZXIgZm9yIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgc2lnbmFscy4KKworICAgRGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gdHJhY2ViYWNrLCByZXN0b3JlIHRoZSBwcmV2aW91cyBoYW5kbGVyIGFuZCBjYWxsCisgICB0aGUgcHJldmlvdXMgaGFuZGxlci4KKworICAgT24gV2luZG93cywgZG9uJ3QgZXhwbGljaXRseSBjYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyLCBiZWNhdXNlIHRoZSBXaW5kb3dzCisgICBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkIChmb3IgYW4gdW5rbm93biByZWFzb24pLiBUaGUgZXhlY3V0aW9uIG9mCisgICB0aGUgcHJvZ3JhbSBjb250aW51ZXMgYXQgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgZXhpdCwgYnV0IHRoZSBzYW1lCisgICBpbnN0cnVjdGlvbiB3aWxsIHJhaXNlIHRoZSBzYW1lIGZhdWx0IChzaWduYWwpLCBhbmQgc28gdGhlIHByZXZpb3VzIGhhbmRsZXIKKyAgIHdpbGwgYmUgY2FsbGVkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbC1zYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbC1zYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcihpbnQgc2lnbnVtKQoreworICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CisKKyAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgIGlmIChoYW5kbGVyLT5zaWdudW0gPT0gc2lnbnVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChoYW5kbGVyID09IE5VTEwpIHsKKyAgICAgICAgLyogZmF1bHRoYW5kbGVyX25zaWduYWxzID09IDAgKHVubGlrZWx5KSAqLworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogcmVzdG9yZSB0aGUgcHJldmlvdXMgaGFuZGxlciAqLworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgKHZvaWQpc2lnbmFsKHNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOworI2VuZGlmCisgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisKKyAgICBQVVRTKGZkLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKKyAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKKyAgICBQVVRTKGZkLCAiXG5cbiIpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzIGFuZAorICAgICAgIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZSBQeXRob24KKyAgICAgICB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorCisgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlCisgICAgICAgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUKKyAgICAgICB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCisgICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAoZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgZmF0YWxfZXJyb3IuaW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKKyAgICB9CisKKyAgICBlcnJubyA9IHNhdmVfZXJybm87CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChzaWdudW0gPT0gU0lHU0VHVikgeworICAgICAgICAvKiBkb24ndCBleHBsaWNpdGx5IGNhbGwgdGhlIHByZXZpb3VzIGhhbmRsZXIgZm9yIFNJR1NFR1YgaW4gdGhpcyBzaWduYWwKKyAgICAgICAgICAgaGFuZGxlciwgYmVjYXVzZSB0aGUgV2luZG93cyBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkICovCisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICAvKiBjYWxsIHRoZSBwcmV2aW91cyBzaWduYWwgaGFuZGxlcjogaXQgaXMgY2FsbGVkIGltbWVkaWF0bHkgaWYgd2UgdXNlCisgICAgICAgc2lnYWN0aW9uKCkgdGhhbmtzIHRvIFNBX05PREVGRVIgZmxhZywgb3RoZXJ3aXNlIGl0IGlzIGRlZmVycmVkICovCisgICAgcmFpc2Uoc2lnbnVtKTsKK30KKworLyogSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgZmF0YWwgc2lnbmFscywgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkuICovCisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJhbGxfdGhyZWFkcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKyAgICBpbnQgYWxsX3RocmVhZHMgPSAxOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworI2VuZGlmCisgICAgaW50IGVycjsKKyAgICBpbnQgZmQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAifE9pOmVuYWJsZSIsIGt3bGlzdCwgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1hERUNSRUYoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgUHlfSU5DUkVGKGZpbGUpOworICAgIGZhdGFsX2Vycm9yLmZpbGUgPSBmaWxlOworICAgIGZhdGFsX2Vycm9yLmZkID0gZmQ7CisgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKKyAgICBmYXRhbF9lcnJvci5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKworICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgeworICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKKworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7CisgICAgICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgICAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCisgICAgICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICAgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKKyNlbHNlCisgICAgICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOworICAgICAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOworI2VuZGlmCisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlKHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOworCisgICAgaWYgKGZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICAgICAgaWYgKCFoYW5kbGVyLT5lbmFibGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgICAgICAodm9pZClzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOworI2Vsc2UKKyAgICAgICAgICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9DTEVBUihmYXRhbF9lcnJvci5maWxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2Rpc2FibGVfcHkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKCFmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CisgICAgICAgIHJldHVybiBQeV9GYWxzZTsKKyAgICB9CisgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGUoKTsKKyAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CisgICAgcmV0dXJuIFB5X1RydWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9pc19lbmFibGVkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoZmF0YWxfZXJyb3IuZW5hYmxlZCk7Cit9CisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl90aHJlYWQodm9pZCAqdW51c2VkKQoreworICAgIFB5TG9ja1N0YXR1cyBzdDsKKyAgICBjb25zdCBjaGFyKiBlcnJtc2c7CisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudDsKKyAgICBpbnQgb2s7CisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQorICAgIHNpZ3NldF90IHNldDsKKworICAgIC8qIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgc2lnbmFsICovCisgICAgc2lnZmlsbHNldCgmc2V0KTsKKyAgICBwdGhyZWFkX3NpZ21hc2soU0lHX1NFVE1BU0ssICZzZXQsIE5VTEwpOworI2VuZGlmCisKKyAgICBkbyB7CisgICAgICAgIHN0ID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKHRocmVhZC5jYW5jZWxfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC50aW1lb3V0X3VzLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKKyAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIFRpbWVvdXQgPT4gZHVtcCB0cmFjZWJhY2sgKi8KKyAgICAgICAgYXNzZXJ0KHN0ID09IFBZX0xPQ0tfRkFJTFVSRSk7CisKKyAgICAgICAgLyogZ2V0IHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgR0lMLCBOVUxMIGlmIG5vIHRocmVhZCBob2xkIHRoZSBHSUwgKi8KKyAgICAgICAgY3VycmVudCA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKworICAgICAgICB3cml0ZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIHRocmVhZC5oZWFkZXJfbGVuKTsKKworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKKyAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOworCisgICAgICAgIGlmICh0aHJlYWQuZXhpdCkKKyAgICAgICAgICAgIF9leGl0KDEpOworICAgIH0gd2hpbGUgKG9rICYmIHRocmVhZC5yZXBlYXQpOworCisgICAgLyogVGhlIG9ubHkgd2F5IG91dCAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7Cit9CisKK3N0YXRpYyB2b2lkCitjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIodm9pZCkKK3sKKyAgICAvKiBOb3RpZnkgY2FuY2VsbGF0aW9uICovCisgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQpOworCisgICAgLyogV2FpdCBmb3IgdGhyZWFkIHRvIGpvaW4gKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sodGhyZWFkLnJ1bm5pbmcsIDEpOworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7CisKKyAgICAvKiBUaGUgbWFpbiB0aHJlYWQgc2hvdWxkIGFsd2F5cyBob2xkIHRoZSBjYW5jZWxfZXZlbnQgbG9jayAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50LCAxKTsKKworICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKKyAgICBpZiAodGhyZWFkLmhlYWRlcikgeworICAgICAgICBmcmVlKHRocmVhZC5oZWFkZXIpOworICAgICAgICB0aHJlYWQuaGVhZGVyID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBjaGFyKgorZm9ybWF0X3RpbWVvdXQoZG91YmxlIHRpbWVvdXQpCit7CisgICAgdW5zaWduZWQgbG9uZyB1cywgc2VjLCBtaW4sIGhvdXI7CisgICAgZG91YmxlIGludHBhcnQsIGZyYWNwYXJ0OworICAgIGNoYXIgYnVmZmVyWzEwMF07CisKKyAgICBmcmFjcGFydCA9IG1vZGYodGltZW91dCwgJmludHBhcnQpOworICAgIHNlYyA9ICh1bnNpZ25lZCBsb25nKWludHBhcnQ7CisgICAgdXMgPSAodW5zaWduZWQgbG9uZykoZnJhY3BhcnQgKiAxZTYpOworICAgIG1pbiA9IHNlYyAvIDYwOworICAgIHNlYyAlPSA2MDsKKyAgICBob3VyID0gbWluIC8gNjA7CisgICAgbWluICU9IDYwOworCisgICAgaWYgKHVzICE9IDApCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1LiUwNmx1KSFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWluLCBzZWMsIHVzKTsKKyAgICBlbHNlCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1KSFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWluLCBzZWMpOworCisgICAgcmV0dXJuIHN0cmR1cChidWZmZXIpOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2tfbGF0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidGltZW91dCIsICJyZXBlYXQiLCAiZmlsZSIsICJleGl0IiwgTlVMTH07CisgICAgZG91YmxlIHRpbWVvdXQ7CisgICAgUFlfVElNRU9VVF9UIHRpbWVvdXRfdXM7CisgICAgaW50IHJlcGVhdCA9IDA7CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgZXhpdCA9IDA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGNoYXIgKmhlYWRlcjsKKyAgICBzaXplX3QgaGVhZGVyX2xlbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgImR8aU9pOmR1bXBfdHJhY2ViYWNrX2xhdGVyIiwga3dsaXN0LAorICAgICAgICAmdGltZW91dCwgJnJlcGVhdCwgJmZpbGUsICZleGl0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCh0aW1lb3V0ICogMWU2KSA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdGltZW91dF91cyA9IChQWV9USU1FT1VUX1QpKHRpbWVvdXQgKiAxZTYpOworICAgIGlmICh0aW1lb3V0X3VzIDw9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGZvcm1hdCB0aGUgdGltZW91dCAqLworICAgIGhlYWRlciA9IGZvcm1hdF90aW1lb3V0KHRpbWVvdXQpOworICAgIGlmIChoZWFkZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgaGVhZGVyX2xlbiA9IHN0cmxlbihoZWFkZXIpOworCisgICAgLyogQ2FuY2VsIHByZXZpb3VzIHRocmVhZCwgaWYgcnVubmluZyAqLworICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOworCisgICAgUHlfWERFQ1JFRih0aHJlYWQuZmlsZSk7CisgICAgUHlfSU5DUkVGKGZpbGUpOworICAgIHRocmVhZC5maWxlID0gZmlsZTsKKyAgICB0aHJlYWQuZmQgPSBmZDsKKyAgICB0aHJlYWQudGltZW91dF91cyA9IHRpbWVvdXRfdXM7CisgICAgdGhyZWFkLnJlcGVhdCA9IHJlcGVhdDsKKyAgICB0aHJlYWQuaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisgICAgdGhyZWFkLmV4aXQgPSBleGl0OworICAgIHRocmVhZC5oZWFkZXIgPSBoZWFkZXI7CisgICAgdGhyZWFkLmhlYWRlcl9sZW4gPSBoZWFkZXJfbGVuOworCisgICAgLyogQXJtIHRoZXNlIGxvY2tzIHRvIHNlcnZlIGFzIGV2ZW50cyB3aGVuIHJlbGVhc2VkICovCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5ydW5uaW5nLCAxKTsKKworICAgIGlmIChQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKGZhdWx0aGFuZGxlcl90aHJlYWQsIE5VTEwpID09IC0xKSB7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7CisgICAgICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKKyAgICAgICAgZnJlZShoZWFkZXIpOworICAgICAgICB0aHJlYWQuaGVhZGVyID0gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gc3RhcnQgd2F0Y2hkb2cgdGhyZWFkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyX3B5KFB5T2JqZWN0ICpzZWxmKQoreworICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmICAvKiBGQVVMVEhBTkRMRVJfTEFURVIgKi8KKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCitzdGF0aWMgaW50CitmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoaW50IHNpZ251bSwgaW50IGNoYWluLCBfUHlfc2lnaGFuZGxlcl90ICpwX3ByZXZpb3VzKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfdXNlcjsKKyAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgIC8qIGlmIHRoZSBzaWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgdGhlIGtlcm5lbCBpcyBleGVjdXRpbmcgYSBzeXN0ZW0KKyAgICAgICBjYWxsLCB0cnkgdG8gcmVzdGFydCB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiBpbnRlcnJ1cHRpbmcgaXQgYW5kCisgICAgICAgcmV0dXJuIEVJTlRSLiAqLworICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CisgICAgaWYgKGNoYWluKSB7CisgICAgICAgIC8qIGRvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbiBpdHMKKyAgICAgICAgICAgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7CisgICAgfQorI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCisgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNpZ2FjdGlvbihzaWdudW0sICZhY3Rpb24sIHBfcHJldmlvdXMpOworI2Vsc2UKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIHByZXZpb3VzID0gc2lnbmFsKHNpZ251bSwgZmF1bHRoYW5kbGVyX3VzZXIpOworICAgIGlmIChwX3ByZXZpb3VzICE9IE5VTEwpCisgICAgICAgICpwX3ByZXZpb3VzID0gcHJldmlvdXM7CisgICAgcmV0dXJuIChwcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorfQorCisvKiBIYW5kbGVyIG9mIHVzZXIgc2lnbmFscyAoZS5nLiBTSUdVU1IxKS4KKworICAgRHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgaWYKKyAgIHRocmVhZC5hbGxfdGhyZWFkcyBpcyB0cnVlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbCBzYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pCit7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYKKyAgICAgICB0aGUgdGhyZWFkIGRvZXNuJ3QgaG9sZCB0aGUgR0lMLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKQorICAgICAgIGluc3RlYWQ6IGNhbGwgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAodXNlci0+YWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh1c2VyLT5mZCwgdXNlci0+aW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayh1c2VyLT5mZCwgdHN0YXRlKTsKKyAgICB9CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICBpZiAodXNlci0+Y2hhaW4pIHsKKyAgICAgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJnVzZXItPnByZXZpb3VzLCBOVUxMKTsKKyAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworCisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHJhaXNlKHNpZ251bSk7CisKKyAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAodm9pZClmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCB1c2VyLT5jaGFpbiwgTlVMTCk7CisgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKyAgICB9CisjZWxzZQorICAgIGlmICh1c2VyLT5jaGFpbikgeworICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHVzZXItPnByZXZpb3VzKHNpZ251bSk7CisgICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX3NpZ251bShpbnQgc2lnbnVtKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICBpZiAoZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldLnNpZ251bSA9PSBzaWdudW0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCAlaSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZW5hYmxlKCkgaW5zdGVhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbnVtKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzaWdudW0gPCAxIHx8IE5TSUcgPD0gc2lnbnVtKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfcmVnaXN0ZXJfcHkoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaWdudW0iLCAiZmlsZSIsICJhbGxfdGhyZWFkcyIsICJjaGFpbiIsIE5VTEx9OworICAgIGludCBzaWdudW07CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBhbGxfdGhyZWFkcyA9IDE7CisgICAgaW50IGNoYWluID0gMDsKKyAgICBpbnQgZmQ7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAiaXxPaWk6cmVnaXN0ZXIiLCBrd2xpc3QsCisgICAgICAgICZzaWdudW0sICZmaWxlLCAmYWxsX3RocmVhZHMsICZjaGFpbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKSB7CisgICAgICAgIHVzZXJfc2lnbmFscyA9IGNhbGxvYyhOU0lHLCBzaXplb2YodXNlcl9zaWduYWxfdCkpOworICAgICAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgdXNlciA9ICZ1c2VyX3NpZ25hbHNbc2lnbnVtXTsKKworICAgIGlmICghdXNlci0+ZW5hYmxlZCkgeworICAgICAgICBlcnIgPSBmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCBjaGFpbiwgJnByZXZpb3VzKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKHVzZXItPmZpbGUpOworICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICB1c2VyLT5maWxlID0gZmlsZTsKKyAgICB1c2VyLT5mZCA9IGZkOworICAgIHVzZXItPmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CisgICAgdXNlci0+Y2hhaW4gPSBjaGFpbjsKKyAgICB1c2VyLT5wcmV2aW91cyA9IHByZXZpb3VzOworICAgIHVzZXItPmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIHVzZXItPmVuYWJsZWQgPSAxOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKHVzZXJfc2lnbmFsX3QgKnVzZXIsIGludCBzaWdudW0pCit7CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICB1c2VyLT5lbmFibGVkID0gMDsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZ1c2VyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChzaWdudW0sIHVzZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgIFB5X0NMRUFSKHVzZXItPmZpbGUpOworICAgIHVzZXItPmZkID0gLTE7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyX3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgc2lnbnVtOworICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7CisgICAgaW50IGNoYW5nZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp1bnJlZ2lzdGVyIiwgJnNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgY2hhbmdlID0gZmF1bHRoYW5kbGVyX3VucmVnaXN0ZXIodXNlciwgc2lnbnVtKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGNoYW5nZSk7Cit9CisjZW5kaWYgICAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLworCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfcmVhZF9udWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB2b2xhdGlsZSBpbnQgKng7CisgICAgdm9sYXRpbGUgaW50IHk7CisgICAgaW50IHJlbGVhc2VfZ2lsID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9yZWFkX251bGwiLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHggPSBOVUxMOworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHkgPSAqeDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UKKyAgICAgICAgeSA9ICp4OworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeSk7CisKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdzZWd2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgLyogRm9yIFNJR1NFR1YsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpIHJlc3RvcmVzIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyIGFuZCB0aGVuIGdpdmVzIGJhY2sgdGhlIGV4ZWN1dGlvbiBmbG93IHRvIHRoZSBwcm9ncmFtICh3aXRob3V0CisgICAgICAgZXhwbGljaXRseSBjYWxsaW5nIHRoZSBwcmV2aW91cyBlcnJvciBoYW5kbGVyKS4gSW4gYSBub3JtYWwgY2FzZSwgdGhlCisgICAgICAgU0lHU0VHViB3YXMgcmFpc2VkIGJ5IHRoZSBrZXJuZWwgYmVjYXVzZSBvZiBhIGZhdWx0LCBhbmQgc28gaWYgdGhlCisgICAgICAgcHJvZ3JhbSByZXRyaWVzIHRvIGV4ZWN1dGUgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24sIHRoZSBmYXVsdCB3aWxsIGJlCisgICAgICAgcmFpc2VkIGFnYWluLgorCisgICAgICAgSGVyZSB0aGUgZmF1bHQgaXMgc2ltdWxhdGVkIGJ5IGEgZmFrZSBTSUdTRUdWIHNpZ25hbCByYWlzZWQgYnkgdGhlCisgICAgICAgYXBwbGljYXRpb24uIFdlIGhhdmUgdG8gcmFpc2UgU0lHU0VHViBhdCBsZWFzZSB0d2ljZTogb25jZSBmb3IKKyAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSwgYW5kIG9uZSBtb3JlIHRpbWUgZm9yIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyLiAqLworICAgIHdoaWxlKDEpCisgICAgICAgIHJhaXNlKFNJR1NFR1YpOworI2Vsc2UKKyAgICByYWlzZShTSUdTRUdWKTsKKyNlbmRpZgorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3NpZ2ZwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogRG8gYW4gaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvOiByYWlzZSBhIFNJR0ZQRSBvbiBJbnRlbCBDUFUsIGJ1dCBub3Qgb24KKyAgICAgICBQb3dlclBDLiBVc2Ugdm9sYXRpbGUgdG8gZGlzYWJsZSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9ucy4gKi8KKyAgICB2b2xhdGlsZSBpbnQgeCA9IDEsIHkgPSAwLCB6OworICAgIHogPSB4IC8geTsKKyAgICAvKiBJZiB0aGUgZGl2aXNpb24gYnkgemVybyBkaWRuJ3QgcmFpc2UgYSBTSUdGUEUgKGUuZy4gb24gUG93ZXJQQyksCisgICAgICAgcmFpc2UgaXQgbWFudWFsbHkuICovCisgICAgcmFpc2UoU0lHRlBFKTsKKyAgICAvKiBUaGlzIGxpbmUgaXMgbmV2ZXIgcmVhY2hlZCwgYnV0IHdlIHByZXRlbmQgdG8gbWFrZSBzb21ldGhpbmcgd2l0aCB6CisgICAgICAgdG8gc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh6KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdhYnJ0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8qIFZpc3VhbCBTdHVkaW86IGNvbmZpZ3VyZSBhYm9ydCgpIHRvIG5vdCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugbm9yCisgICAgICAgb3BlbiBhIHBvcHVwIGFza2luZyB0byByZXBvcnQgdGhlIGZhdWx0LiAqLworICAgIF9zZXRfYWJvcnRfYmVoYXZpb3IoMCwgX1dSSVRFX0FCT1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsKKyNlbmRpZgorICAgIGFib3J0KCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpZmRlZiBTSUdCVVMKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnYnVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdCVVMpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKyNpZmRlZiBTSUdJTEwKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdJTEwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKm1lc3NhZ2U7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5OmZhdGFsX2Vycm9yIiwgJm1lc3NhZ2UpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorc3RhdGljIHZvaWQqCitzdGFja19vdmVyZmxvdyh2b2lkICptaW5fc3AsIHZvaWQgKm1heF9zcCwgc2l6ZV90ICpkZXB0aCkKK3sKKyAgICAvKiBhbGxvY2F0ZSA0MDk2IGJ5dGVzIG9uIHRoZSBzdGFjayBhdCBlYWNoIGNhbGwgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKKyAgICB2b2lkICpzcCA9ICZidWZmZXI7CisgICAgKmRlcHRoICs9IDE7CisgICAgaWYgKHNwIDwgbWluX3NwIHx8IG1heF9zcCA8IHNwKQorICAgICAgICByZXR1cm4gc3A7CisgICAgYnVmZmVyWzBdID0gMTsKKyAgICBidWZmZXJbNDA5NV0gPSAwOworICAgIHJldHVybiBzdGFja19vdmVyZmxvdyhtaW5fc3AsIG1heF9zcCwgZGVwdGgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQoreworICAgIHNpemVfdCBkZXB0aCwgc2l6ZTsKKyAgICBjaGFyICpzcCA9IChjaGFyICopJmRlcHRoLCAqc3RvcDsKKworICAgIGRlcHRoID0gMDsKKyAgICBzdG9wID0gc3RhY2tfb3ZlcmZsb3coc3AgLSBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3AgKyBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlcHRoKTsKKyAgICBpZiAoc3AgPCBzdG9wKQorICAgICAgICBzaXplID0gc3RvcCAtIHNwOworICAgIGVsc2UKKyAgICAgICAgc2l6ZSA9IHNwIC0gc3RvcDsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAidW5hYmxlIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3cgKGFsbG9jYXRlZCAlenUgYnl0ZXMgIgorICAgICAgICAib24gdGhlIHN0YWNrLCAlenUgcmVjdXJzaXZlIGNhbGxzKSIsCisgICAgICAgIHNpemUsIGRlcHRoKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl90cmF2ZXJzZShQeU9iamVjdCAqbW9kdWxlLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHVuc2lnbmVkIGludCBzaWdudW07CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIFB5X1ZJU0lUKHRocmVhZC5maWxlKTsKKyNlbmRpZgorI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgaWYgKHVzZXJfc2lnbmFscyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoc2lnbnVtPTA7IHNpZ251bSA8IE5TSUc7IHNpZ251bSsrKQorICAgICAgICAgICAgUHlfVklTSVQodXNlcl9zaWduYWxzW3NpZ251bV0uZmlsZSk7CisgICAgfQorI2VuZGlmCisgICAgUHlfVklTSVQoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAorImZhdWx0aGFuZGxlciBtb2R1bGUuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiZW5hYmxlIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoImVuYWJsZShmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiZGlzYWJsZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZGlzYWJsZV9weSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiZGlzYWJsZSgpOiBkaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiaXNfZW5hYmxlZCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfaXNfZW5hYmxlZCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiaXNfZW5hYmxlZCgpLT5ib29sOiBjaGVjayBpZiB0aGUgaGFuZGxlciBpcyBlbmFibGVkIil9LAorICAgIHsiZHVtcF90cmFjZWJhY2siLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrX3B5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgIgorICAgICAgICAgICAgICAgImlmIGFsbF90aHJlYWRzIGlzIFRydWUsIGludG8gZmlsZSIpfSwKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKyAgICB7ImR1bXBfdHJhY2ViYWNrX2xhdGVyIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19sYXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigiZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnJuLCBleGl0PUZhbHNlKTpcbiIKKyAgICAgICAgICAgICAgICJkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW4gdGltZW91dCBzZWNvbmRzLFxuIgorICAgICAgICAgICAgICAgIm9yIGVhY2ggdGltZW91dCBzZWNvbmRzIGlmIHJlcGVhdCBpcyBUcnVlLiBJZiBleGl0IGlzIFRydWUsICIKKyAgICAgICAgICAgICAgICJjYWxsIF9leGl0KDEpIHdoaWNoIGlzIG5vdCBzYWZlLiIpfSwKKyAgICB7ImNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyX3B5LCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKTpcbmNhbmNlbCB0aGUgcHJldmlvdXMgY2FsbCAiCisgICAgICAgICAgICAgICAidG8gZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4iKX0sCisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgeyJyZWdpc3RlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfcmVnaXN0ZXJfcHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoInJlZ2lzdGVyKHNpZ251bSwgZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlLCBjaGFpbj1GYWxzZSk6ICIKKyAgICAgICAgICAgICAgICJyZWdpc3RlciBhbiBoYW5kbGVyIGZvciB0aGUgc2lnbmFsICdzaWdudW0nOiBkdW1wIHRoZSAiCisgICAgICAgICAgICAgICAidHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgaWYgIgorICAgICAgICAgICAgICAgImFsbF90aHJlYWRzIGlzIFRydWUsIGludG8gZmlsZSIpfSwKKyAgICB7InVucmVnaXN0ZXIiLAorICAgICBmYXVsdGhhbmRsZXJfdW5yZWdpc3Rlcl9weSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigidW5yZWdpc3RlcihzaWdudW0pOiB1bnJlZ2lzdGVyIHRoZSBoYW5kbGVyIG9mIHRoZSBzaWduYWwgIgorICAgICAgICAgICAgICAgICInc2lnbnVtJyByZWdpc3RlcmVkIGJ5IHJlZ2lzdGVyKCkiKX0sCisjZW5kaWYKKworICAgIHsiX3JlYWRfbnVsbCIsIGZhdWx0aGFuZGxlcl9yZWFkX251bGwsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfcmVhZF9udWxsKHJlbGVhc2VfZ2lsPUZhbHNlKTogcmVhZCBmcm9tIE5VTEwsIHJhaXNlICIKKyAgICAgICAgICAgICAgICJhIFNJR1NFR1Ygb3IgU0lHQlVTIHNpZ25hbCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIil9LAorICAgIHsiX3NpZ3NlZ3YiLCBmYXVsdGhhbmRsZXJfc2lnc2VndiwgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdzZWd2KCk6IHJhaXNlIGEgU0lHU0VHViBzaWduYWwiKX0sCisgICAgeyJfc2lnYWJydCIsIGZhdWx0aGFuZGxlcl9zaWdhYnJ0LCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX3NpZ2FicnQoKTogcmFpc2UgYSBTSUdBQlJUIHNpZ25hbCIpfSwKKyAgICB7Il9zaWdmcGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3NpZ2ZwZSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwiKX0sCisjaWZkZWYgU0lHQlVTCisgICAgeyJfc2lnYnVzIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdidXMsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdidXMoKTogcmFpc2UgYSBTSUdCVVMgc2lnbmFsIil9LAorI2VuZGlmCisjaWZkZWYgU0lHSUxMCisgICAgeyJfc2lnaWxsIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdpbGwsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdpbGwoKTogcmFpc2UgYSBTSUdJTEwgc2lnbmFsIil9LAorI2VuZGlmCisgICAgeyJfZmF0YWxfZXJyb3IiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHksIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfZmF0YWxfZXJyb3IobWVzc2FnZSk6IGNhbGwgUHlfRmF0YWxFcnJvcihtZXNzYWdlKSIpfSwKKyNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisgICAgeyJfc3RhY2tfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93LCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc3RhY2tfb3ZlcmZsb3coKTogcmVjdXJzaXZlIGNhbGwgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdyIpfSwKKyNlbmRpZgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgbW9kdWxlX2RlZiA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgImZhdWx0aGFuZGxlciIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLCAvKiBub24tbmVnYXRpdmUgc2l6ZSB0byBiZSBhYmxlIHRvIHVubG9hZCB0aGUgbW9kdWxlICovCisgICAgbW9kdWxlX21ldGhvZHMsCisgICAgTlVMTCwKKyAgICBmYXVsdGhhbmRsZXJfdHJhdmVyc2UsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X2ZhdWx0aGFuZGxlcih2b2lkKQoreworICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZV9kZWYpOworfQorCisvKiBDYWxsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBpZiB0aGUgUFlUSE9ORkFVTFRIQU5ETEVSIGVudmlyb25tZW50IHZhcmlhYmxlCisgICBpcyBkZWZpbmVkLCBvciBpZiBzeXMuX3hvcHRpb25zIGhhcyBhICdmYXVsdGhhbmRsZXInIGtleS4gKi8KKworc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2Vudl9vcHRpb25zKHZvaWQpCit7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqa2V5LCAqbW9kdWxlLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKGVuYWJsZSk7CisKKyAgICBpZiAoIVB5X0dFVEVOVigiUFlUSE9ORkFVTFRIQU5ETEVSIikpIHsKKyAgICAgICAgaW50IGhhc19rZXk7CisKKyAgICAgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgICAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZmF1bHRoYW5kbGVyIik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBoYXNfa2V5ID0gUHlEaWN0X0NvbnRhaW5zKHhvcHRpb25zLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKCFoYXNfa2V5KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmYXVsdGhhbmRsZXIiKTsKKyAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCAiIik7CisgICAgUHlfREVDUkVGKG1vZHVsZSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBfUHlGYXVsdGhhbmRsZXJfSW5pdCh2b2lkKQoreworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpbnQgZXJyOworCisgICAgLyogVHJ5IHRvIGFsbG9jYXRlIGFuIGFsdGVybmF0ZSBzdGFjayBmb3IgZmF1bHRoYW5kbGVyKCkgc2lnbmFsIGhhbmRsZXIgdG8KKyAgICAgKiBiZSBhYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgc3RhY2ssIGV2ZW4gb24gYSBzdGFjayBvdmVyZmxvdy4gSWYgaXQKKyAgICAgKiBmYWlscywgaWdub3JlIHRoZSBlcnJvci4gKi8KKyAgICBzdGFjay5zc19mbGFncyA9IDA7CisgICAgc3RhY2suc3Nfc2l6ZSA9IFNJR1NUS1NaOworICAgIHN0YWNrLnNzX3NwID0gUHlNZW1fTWFsbG9jKHN0YWNrLnNzX3NpemUpOworICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgIGVyciA9IHNpZ2FsdHN0YWNrKCZzdGFjaywgTlVMTCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2suc3Nfc3ApOworICAgICAgICAgICAgc3RhY2suc3Nfc3AgPSBOVUxMOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisjaWZkZWYgRkFVTFRIQU5ETEVSX0xBVEVSCisgICAgdGhyZWFkLmZpbGUgPSBOVUxMOworICAgIHRocmVhZC5jYW5jZWxfZXZlbnQgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgdGhyZWFkLnJ1bm5pbmcgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKCF0aHJlYWQuY2FuY2VsX2V2ZW50IHx8ICF0aHJlYWQucnVubmluZykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhbGxvY2F0ZSBsb2NrcyBmb3IgZmF1bHRoYW5kbGVyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQsIDEpOworI2VuZGlmCisKKyAgICByZXR1cm4gZmF1bHRoYW5kbGVyX2Vudl9vcHRpb25zKCk7Cit9CisKK3ZvaWQgX1B5RmF1bHRoYW5kbGVyX0Zpbmkodm9pZCkKK3sKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHVuc2lnbmVkIGludCBzaWdudW07CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIC8qIGxhdGVyICovCisgICAgaWYgKHRocmVhZC5jYW5jZWxfZXZlbnQpIHsKKyAgICAgICAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCk7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQpOworICAgICAgICB0aHJlYWQuY2FuY2VsX2V2ZW50ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKHRocmVhZC5ydW5uaW5nKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayh0aHJlYWQucnVubmluZyk7CisgICAgICAgIHRocmVhZC5ydW5uaW5nID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgLyogdXNlciAqLworICAgIGlmICh1c2VyX3NpZ25hbHMgIT0gTlVMTCkgeworICAgICAgICBmb3IgKHNpZ251bT0wOyBzaWdudW0gPCBOU0lHOyBzaWdudW0rKykKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKCZ1c2VyX3NpZ25hbHNbc2lnbnVtXSwgc2lnbnVtKTsKKyAgICAgICAgZnJlZSh1c2VyX3NpZ25hbHMpOworICAgICAgICB1c2VyX3NpZ25hbHMgPSBOVUxMOworICAgIH0KKyNlbmRpZgorCisgICAgLyogZmF0YWwgKi8KKyAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZSgpOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrLnNzX3NwKTsKKyAgICAgICAgc3RhY2suc3Nfc3AgPSBOVUxMOworICAgIH0KKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mY250bG1vZHVsZS5jIGIvTW9kdWxlcy9mY250bG1vZHVsZS5jCmluZGV4IGJmYzU5ODUuLjZiN2UzZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmNudGxtb2R1bGUuYworKysgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKQEAgLTU0MCwxMCArNTQwLDEzIEBACiAgICAgaWYgKGlucyhkLCAiRl9TSExDSyIsIChsb25nKUZfU0hMQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKIAotLyogT1MgWCAoYW5kIG1heWJlIG90aGVycykgbGV0IHlvdSB0ZWxsIHRoZSBzdG9yYWdlIGRldmljZSB0byBmbHVzaCB0byBwaHlzaWNhbCBtZWRpYSAqLworLyogT1MgWCBzcGVjaWZpY3MgKi8KICNpZmRlZiBGX0ZVTExGU1lOQwogICAgIGlmIChpbnMoZCwgIkZfRlVMTEZTWU5DIiwgKGxvbmcpRl9GVUxMRlNZTkMpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBGX05PQ0FDSEUKKyAgICBpZiAoaW5zKGQsICJGX05PQ0FDSEUiLCAobG9uZylGX05PQ0FDSEUpKSByZXR1cm4gLTE7CisjZW5kaWYKIAogLyogRm9yIEZfe0dFVHxTRVR9RkwgKi8KICNpZmRlZiBGRF9DTE9FWEVDCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jIGIvTW9kdWxlcy9mcGVjdGxtb2R1bGUuYwppbmRleCAxYmI1MWNmLi42YWYyZjgyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZnBlY3RsbW9kdWxlLmMKQEAgLTE3NCwxNyArMTc0LDYgQEAKICAgICBmcF9lbmFibGUoVFJQX0lOVkFMSUQgfCBUUlBfRElWX0JZX1pFUk8gfCBUUlBfT1ZFUkZMT1cpOwogICAgIFB5T1Nfc2V0c2lnKFNJR0ZQRSwgaGFuZGxlcik7CiAKLS8qLS0gREVDIEFMUEhBIE9TRiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0jZWxpZiBkZWZpbmVkKF9fYWxwaGEpICYmIGRlZmluZWQoX19vc2ZfXykKLSAgICAvKiBSZWZlcmVuY2VzOiAgIGV4Y2VwdGlvbl9pbnRybywgaWVlZSBtYW4gcGFnZXMgKi8KLSAgICAvKiBjYyAtYyAtSS91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUgZnBlY3RsbW9kdWxlLmMgKi8KLSAgICAvKiBsZCAtc2hhcmVkIC1vIGZwZWN0bG1vZHVsZS5zbyBmcGVjdGxtb2R1bGUubyAqLwotI2luY2x1ZGUgPG1hY2hpbmUvZnB1Lmg+Ci0gICAgdW5zaWduZWQgbG9uZyBmcF9jb250cm9sID0KLSAgICBJRUVFX1RSQVBfRU5BQkxFX0lOViB8IElFRUVfVFJBUF9FTkFCTEVfRFpFIHwgSUVFRV9UUkFQX0VOQUJMRV9PVkY7Ci0gICAgaWVlZV9zZXRfZnBfY29udHJvbChmcF9jb250cm9sKTsKLSAgICBQeU9TX3NldHNpZyhTSUdGUEUsIGhhbmRsZXIpOwotCiAvKi0tIERFQyBBTFBIQSBMSU5VWCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2VsaWYgZGVmaW5lZChfX2FscGhhKSAmJiBkZWZpbmVkKGxpbnV4KQogI2luY2x1ZGUgPGFzbS9mcHUuaD4KZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQgYi9Nb2R1bGVzL2djX3dlYWtyZWYudHh0CmluZGV4IGQ3YmU2YzMuLjJmMTg0MDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQKKysrIGIvTW9kdWxlcy9nY193ZWFrcmVmLnR4dApAQCAtMTUsOCArMTUsOCBAQAogaGlzdG9yaWNhbGx5IGNvbW1vbiBidWcpLCB0cF9jbGVhciBlbXB0aWVzIGFuIGluc3RhbmNlJ3MgX19kaWN0X18sIGFuZAogImltcG9zc2libGUiIEF0dHJpYnV0ZUVycm9ycyByZXN1bHQuICBBdCB3b3JzdCwgdHBfY2xlYXIgbGVhdmVzIGJlaGluZCBhbgogaW5zYW5lIG9iamVjdCBhdCB0aGUgQyBsZXZlbCwgYW5kIHNlZ2ZhdWx0cyByZXN1bHQgKGhpc3RvcmljYWxseSwgbW9zdAotb2Z0ZW4gYnkgc2V0dGluZyBhIG5ldy1zdHlsZSBjbGFzcydzIG1ybyBwb2ludGVyIHRvIE5VTEwsIGFmdGVyIHdoaWNoCi1hdHRyaWJ1dGUgbG9va3VwcyBwZXJmb3JtZWQgYnkgdGhlIGNsYXNzIGNhbiBzZWdmYXVsdCkuCitvZnRlbiBieSBzZXR0aW5nIGEgY2xhc3MncyBtcm8gcG9pbnRlciB0byBOVUxMLCBhZnRlciB3aGljaCBhdHRyaWJ1dGUKK2xvb2t1cHMgcGVyZm9ybWVkIGJ5IHRoZSBjbGFzcyBjYW4gc2VnZmF1bHQpLgogCiBPVE9ILCBpdCdzIE9LIHRvIHJ1biBQeXRob24tbGV2ZWwgY29kZSB0aGF0IGNhbid0IGFjY2VzcyB1bnJlYWNoYWJsZQogb2JqZWN0cywgYW5kIHNvbWV0aW1lcyB0aGF0J3MgbmVjZXNzYXJ5LiAgVGhlIGNoaWVmIGV4YW1wbGUgaXMgdGhlIGNhbGxiYWNrCkBAIC0xMTksNyArMTE5LDcgQEAKIGl0IHRvb2sgcXVpdGUgYSB3aGlsZSB0byBkcmVhbSB1cCBmYWlsaW5nIHRlc3QgY2FzZXMuICBab3BlMyBzYXcgc2VnZmF1bHRzCiBkdXJpbmcgc2h1dGRvd24sIGR1cmluZyB0aGUgc2Vjb25kIGNhbGwgb2YgZ2MgaW4gUHlfRmluYWxpemUsIGFmdGVyIG1vc3QKIG1vZHVsZXMgaGFkIGJlZW4gdG9ybiBkb3duLiAgVGhhdCBjcmVhdGVzIG1hbnkgdHJhc2ggY3ljbGVzIChlc3AuIHRob3NlCi1pbnZvbHZpbmcgbmV3LXN0eWxlIGNsYXNzZXMpLCBtYWtpbmcgdGhlIHByb2JsZW0gbXVjaCBtb3JlIGxpa2VseS4gIE9uY2UgeW91CitpbnZvbHZpbmcgY2xhc3NlcyksIG1ha2luZyB0aGUgcHJvYmxlbSBtdWNoIG1vcmUgbGlrZWx5LiAgT25jZSB5b3UKIGtub3cgd2hhdCdzIHJlcXVpcmVkIHRvIHByb3Zva2UgdGhlIHByb2JsZW0sIHRob3VnaCwgaXQncyBlYXN5IHRvIGNyZWF0ZQogdGVzdHMgdGhhdCBzZWdmYXVsdCBiZWZvcmUgc2h1dGRvd24uCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCA4YzUyNGY4Li5mNzgyZGQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC02NSwxNyArNjUsMTcgQEAKIC8qIFB5dGhvbiBzdHJpbmcgdG8gdXNlIGlmIHVuaGFuZGxlZCBleGNlcHRpb24gb2NjdXJzICovCiBzdGF0aWMgUHlPYmplY3QgKmdjX3N0ciA9IE5VTEw7CiAKLS8qIFB5dGhvbiBzdHJpbmcgdXNlZCB0byBsb29rIGZvciBfX2RlbF9fIGF0dHJpYnV0ZS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqZGVsc3RyID0gTlVMTDsKKy8qIGEgbGlzdCBvZiBjYWxsYmFja3MgdG8gYmUgaW52b2tlZCB3aGVuIGNvbGxlY3Rpb24gaXMgcGVyZm9ybWVkICovCitzdGF0aWMgUHlPYmplY3QgKmNhbGxiYWNrcyA9IE5VTEw7CiAKLS8qIFRoaXMgaXMgdGhlIG51bWJlciBvZiBvYmplY3RzIHdobyBzdXJ2aXZlZCB0aGUgbGFzdCBmdWxsIGNvbGxlY3Rpb24uIEl0CisvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHN1cnZpdmVkIHRoZSBsYXN0IGZ1bGwgY29sbGVjdGlvbi4gSXQKICAgIGFwcHJveGltYXRlcyB0aGUgbnVtYmVyIG9mIGxvbmcgbGl2ZWQgb2JqZWN0cyB0cmFja2VkIGJ5IHRoZSBHQy4KIAogICAgKGJ5ICJmdWxsIGNvbGxlY3Rpb24iLCB3ZSBtZWFuIGEgY29sbGVjdGlvbiBvZiB0aGUgb2xkZXN0IGdlbmVyYXRpb24pLgogKi8KIHN0YXRpYyBQeV9zc2l6ZV90IGxvbmdfbGl2ZWRfdG90YWwgPSAwOwogCi0vKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB3aG8gc3Vydml2ZWQgYWxsICJub24tZnVsbCIgY29sbGVjdGlvbnMsCisvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHN1cnZpdmVkIGFsbCAibm9uLWZ1bGwiIGNvbGxlY3Rpb25zLAogICAgYW5kIGFyZSBhd2FpdGluZyB0byB1bmRlcmdvIGEgZnVsbCBjb2xsZWN0aW9uIGZvciB0aGUgZmlyc3QgdGltZS4KIAogKi8KQEAgLTczMSw4ICs3MzEsOCBAQAogc3RhdGljIHZvaWQKIGRlYnVnX2N5Y2xlKGNoYXIgKm1zZywgUHlPYmplY3QgKm9wKQogewotICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogJS4xMDBzIDwlLjEwMHMgJXA+XG4iLAotICAgICAgICAgICAgICAgICAgICAgIG1zZywgUHlfVFlQRShvcCktPnRwX25hbWUsIG9wKTsKKyAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImdjOiAlcyA8JXMgJXA+XG4iLAorICAgICAgICAgICAgICAgICAgICAgICBtc2csIFB5X1RZUEUob3ApLT50cF9uYW1lLCBvcCk7CiB9CiAKIC8qIEhhbmRsZSB1bmNvbGxlY3RhYmxlIGdhcmJhZ2UgKGN5Y2xlcyB3aXRoIGZpbmFsaXplcnMsIGFuZCBzdHVmZiByZWFjaGFibGUKQEAgLTgxMyw2ICs4MTMsOSBAQAogICAgICh2b2lkKVB5VHVwbGVfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlGbG9hdF9DbGVhckZyZWVMaXN0KCk7CisgICAgKHZvaWQpUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAogc3RhdGljIGRvdWJsZQpAQCAtODIwLDcgKzgyMyw5IEBACiB7CiAgICAgZG91YmxlIHJlc3VsdCA9IDA7CiAgICAgaWYgKHRtb2QgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodG1vZCwgInRpbWUiLCBOVUxMKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CisKKyAgICAgICAgUHlPYmplY3QgKmYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRtb2QsICZQeUlkX3RpbWUsIE5VTEwpOwogICAgICAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CkBAIC04MzYsNyArODQxLDcgQEAKIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCiAgKiBjb2xsZWN0aW9uIHByb2Nlc3Mgd29ya3MuICovCiBzdGF0aWMgUHlfc3NpemVfdAotY29sbGVjdChpbnQgZ2VuZXJhdGlvbikKK2NvbGxlY3QoaW50IGdlbmVyYXRpb24sIFB5X3NzaXplX3QgKm5fY29sbGVjdGVkLCBQeV9zc2l6ZV90ICpuX3VuY29sbGVjdGFibGUpCiB7CiAgICAgaW50IGk7CiAgICAgUHlfc3NpemVfdCBtID0gMDsgLyogIyBvYmplY3RzIGNvbGxlY3RlZCAqLwpAQCAtODQ4LDEyICs4NTMsNiBAQAogICAgIFB5R0NfSGVhZCAqZ2M7CiAgICAgZG91YmxlIHQxID0gMC4wOwogCi0gICAgaWYgKGRlbHN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGRlbHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2RlbF9fIik7Ci0gICAgICAgIGlmIChkZWxzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdjIGNvdWxkbid0IGFsbG9jYXRlIFwiX19kZWxfX1wiIik7Ci0gICAgfQotCiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiBjb2xsZWN0aW5nIGdlbmVyYXRpb24gJWQuLi5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb24pOwpAQCAtOTkzLDkgKzk5Miw2NCBAQAogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZ2Nfc3RyKTsKICAgICAgICAgUHlfRmF0YWxFcnJvcigidW5leHBlY3RlZCBleGNlcHRpb24gZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiIpOwogICAgIH0KKworICAgIGlmIChuX2NvbGxlY3RlZCkKKyAgICAgICAgKm5fY29sbGVjdGVkID0gbTsKKyAgICBpZiAobl91bmNvbGxlY3RhYmxlKQorICAgICAgICAqbl91bmNvbGxlY3RhYmxlID0gbjsKICAgICByZXR1cm4gbittOwogfQogCisvKiBJbnZva2UgcHJvZ3Jlc3MgY2FsbGJhY2tzIHRvIG5vdGlmeSBjbGllbnRzIHRoYXQgZ2FyYmFnZSBjb2xsZWN0aW9uCisgKiBpcyBzdGFydGluZyBvciBzdG9wcGluZworICovCitzdGF0aWMgdm9pZAoraW52b2tlX2djX2NhbGxiYWNrKGNvbnN0IGNoYXIgKnBoYXNlLCBpbnQgZ2VuZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlY3RlZCwgUHlfc3NpemVfdCB1bmNvbGxlY3RhYmxlKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqaW5mbyA9IE5VTEw7CisKKyAgICAvKiB3ZSBtYXkgZ2V0IGNhbGxlZCB2ZXJ5IGVhcmx5ICovCisgICAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgLyogVGhlIGxvY2FsIHZhcmlhYmxlIGNhbm5vdCBiZSByZWJvdW5kLCBjaGVjayBpdCBmb3Igc2FuaXR5ICovCisgICAgYXNzZXJ0KGNhbGxiYWNrcyAhPSBOVUxMICYmIFB5TGlzdF9DaGVja0V4YWN0KGNhbGxiYWNrcykpOworICAgIGlmIChQeUxpc3RfR0VUX1NJWkUoY2FsbGJhY2tzKSAhPSAwKSB7CisgICAgICAgIGluZm8gPSBQeV9CdWlsZFZhbHVlKCJ7c2lzbnNufSIsCisgICAgICAgICAgICAiZ2VuZXJhdGlvbiIsIGdlbmVyYXRpb24sCisgICAgICAgICAgICAiY29sbGVjdGVkIiwgY29sbGVjdGVkLAorICAgICAgICAgICAgInVuY29sbGVjdGFibGUiLCB1bmNvbGxlY3RhYmxlKTsKKyAgICAgICAgaWYgKGluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKE5VTEwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoaT0wOyBpPFB5TGlzdF9HRVRfU0laRShjYWxsYmFja3MpOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnIsICpjYiA9IFB5TGlzdF9HRVRfSVRFTShjYWxsYmFja3MsIGkpOworICAgICAgICBQeV9JTkNSRUYoY2IpOyAvKiBtYWtlIHN1cmUgY2IgZG9lc24ndCBnbyBhd2F5ICovCisgICAgICAgIHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2IsICJzTyIsIHBoYXNlLCBpbmZvKTsKKyAgICAgICAgUHlfWERFQ1JFRihyKTsKKyAgICAgICAgaWYgKHIgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShjYik7CisgICAgICAgIFB5X0RFQ1JFRihjYik7CisgICAgfQorICAgIFB5X1hERUNSRUYoaW5mbyk7Cit9CisKKy8qIFBlcmZvcm0gZ2FyYmFnZSBjb2xsZWN0aW9uIG9mIGEgZ2VuZXJhdGlvbiBhbmQgaW52b2tlCisgKiBwcm9ncmVzcyBjYWxsYmFja3MuCisgKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citjb2xsZWN0X3dpdGhfY2FsbGJhY2soaW50IGdlbmVyYXRpb24pCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQsIGNvbGxlY3RlZCwgdW5jb2xsZWN0YWJsZTsKKyAgICBpbnZva2VfZ2NfY2FsbGJhY2soInN0YXJ0IiwgZ2VuZXJhdGlvbiwgMCwgMCk7CisgICAgcmVzdWx0ID0gY29sbGVjdChnZW5lcmF0aW9uLCAmY29sbGVjdGVkLCAmdW5jb2xsZWN0YWJsZSk7CisgICAgaW52b2tlX2djX2NhbGxiYWNrKCJzdG9wIiwgZ2VuZXJhdGlvbiwgY29sbGVjdGVkLCB1bmNvbGxlY3RhYmxlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlfc3NpemVfdAogY29sbGVjdF9nZW5lcmF0aW9ucyh2b2lkKQogewpAQCAtMTAxNCw3ICsxMDY4LDcgQEAKICAgICAgICAgICAgIGlmIChpID09IE5VTV9HRU5FUkFUSU9OUyAtIDEKICAgICAgICAgICAgICAgICAmJiBsb25nX2xpdmVkX3BlbmRpbmcgPCBsb25nX2xpdmVkX3RvdGFsIC8gNCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG4gPSBjb2xsZWN0KGkpOworICAgICAgICAgICAgbiA9IGNvbGxlY3Rfd2l0aF9jYWxsYmFjayhpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA4NSw3ICsxMTM5LDcgQEAKICAgICAgICAgbiA9IDA7IC8qIGFscmVhZHkgY29sbGVjdGluZywgZG9uJ3QgZG8gYW55dGhpbmcgKi8KICAgICBlbHNlIHsKICAgICAgICAgY29sbGVjdGluZyA9IDE7Ci0gICAgICAgIG4gPSBjb2xsZWN0KGdlbmFyZyk7CisgICAgICAgIG4gPSBjb2xsZWN0X3dpdGhfY2FsbGJhY2soZ2VuYXJnKTsKICAgICAgICAgY29sbGVjdGluZyA9IDA7CiAgICAgfQogCkBAIC0xMzc4LDYgKzE0MzIsMTUgQEAKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJnYXJiYWdlIiwgZ2FyYmFnZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChjYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBjYWxsYmFja3MgPSBQeUxpc3RfTmV3KDApOworICAgICAgICBpZiAoY2FsbGJhY2tzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKGNhbGxiYWNrcyk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiY2FsbGJhY2tzIiwgY2FsbGJhY2tzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogSW1wb3J0aW5nIGNhbid0IGJlIGRvbmUgaW4gY29sbGVjdCgpIGJlY2F1c2UgY29sbGVjdCgpCiAgICAgICogY2FuIGJlIGNhbGxlZCB2aWEgUHlHQ19Db2xsZWN0KCkgaW4gUHlfRmluYWxpemUoKS4KICAgICAgKiBUaGlzIHdvdWxkbid0IGJlIGEgcHJvYmxlbSwgZXhjZXB0IHRoYXQgPGluaXRpYWxpemVkPiBpcwpAQCAtMTQxMCw3ICsxNDczLDcgQEAKICAgICAgICAgbiA9IDA7IC8qIGFscmVhZHkgY29sbGVjdGluZywgZG9uJ3QgZG8gYW55dGhpbmcgKi8KICAgICBlbHNlIHsKICAgICAgICAgY29sbGVjdGluZyA9IDE7Ci0gICAgICAgIG4gPSBjb2xsZWN0KE5VTV9HRU5FUkFUSU9OUyAtIDEpOworICAgICAgICBuID0gY29sbGVjdF93aXRoX2NhbGxiYWNrKE5VTV9HRU5FUkFUSU9OUyAtIDEpOwogICAgICAgICBjb2xsZWN0aW5nID0gMDsKICAgICB9CiAKQEAgLTE0NDcsNiArMTUxMCw3IEBACiAgICAgICAgICAgICBQeV9YREVDUkVGKGJ5dGVzKTsKICAgICAgICAgfQogICAgIH0KKyAgICBQeV9DTEVBUihjYWxsYmFja3MpOwogfQogCiAvKiBmb3IgZGVidWdnaW5nICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jIGIvTW9kdWxlcy9nZXRidWlsZGluZm8uYwppbmRleCA3MDY5YjZlLi4wOTcxYTY0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCisrKyBiL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKQEAgLTIwLDE0ICsyMCw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0vKiBvbiB1bml4LCBTVk5WRVJTSU9OIGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotICogb24gV2luZG93cywgdGhlIHN0cmluZyBpcyBpbnRlcnBvbGF0ZWQgdXNpbmcKLSAqIHN1YndjcmV2LmV4ZQotICovCi0jaWZuZGVmIFNWTlZFUlNJT04KLSNkZWZpbmUgU1ZOVkVSU0lPTiAiJFdDUkFOR0UkJFdDTU9EUz9NOiQiCi0jZW5kaWYKLQogLyogWFhYIE9ubHkgdW5peCBidWlsZCBwcm9jZXNzIGhhcyBiZWVuIHRlc3RlZCAqLwogI2lmbmRlZiBIR1ZFUlNJT04KICNkZWZpbmUgSEdWRVJTSU9OICIiCkBAIC01NywxNiArNDksNiBAQAogfQogCiBjb25zdCBjaGFyICoKLV9QeV9zdm52ZXJzaW9uKHZvaWQpCi17Ci0gICAgLyogdGhlIGZvbGxvd2luZyBzdHJpbmcgY2FuIGJlIG1vZGlmaWVkIGJ5IHN1YndjcmV2LmV4ZSAqLwotICAgIHN0YXRpYyBjb25zdCBjaGFyIHN2bnZlcnNpb25bXSA9IFNWTlZFUlNJT047Ci0gICAgaWYgKHN2bnZlcnNpb25bMF0gIT0gJyQnKQotICAgICAgICByZXR1cm4gc3ZudmVyc2lvbjsgLyogaXQgd2FzIGludGVycG9sYXRlZCwgb3IgcGFzc2VkIG9uIGNvbW1hbmQgbGluZSAqLwotICAgIHJldHVybiAiVW52ZXJzaW9uZWQgZGlyZWN0b3J5IjsKLX0KLQotY29uc3QgY2hhciAqCiBfUHlfaGd2ZXJzaW9uKHZvaWQpCiB7CiAgICAgcmV0dXJuIEhHVkVSU0lPTjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggYjdmOTU3My4uYjk4YzUyMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTI2MCw2ICsyNjAsNTkgQEAKICAgICB3Y3NjcHkocGF0aCwgYnVmZmVyKTsKIH0KIAorLyogc2VhcmNoIGZvciBhIHByZWZpeCB2YWx1ZSBpbiBhbiBlbnZpcm9ubWVudCBmaWxlLiBJZiBmb3VuZCwgY29weSBpdAorICAgdG8gdGhlIHByb3ZpZGVkIGJ1ZmZlciwgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgbm8gbW9yZSB0aGFuIE1BWFBBVEhMRU4KKyAgIGJ5dGVzIGxvbmcuCisqLworCitzdGF0aWMgaW50CitmaW5kX2Vudl9jb25maWdfdmFsdWUoRklMRSAqIGVudl9maWxlLCBjb25zdCB3Y2hhcl90ICoga2V5LCB3Y2hhcl90ICogdmFsdWUpCit7CisgICAgaW50IHJlc3VsdCA9IDA7IC8qIG1lYW5pbmcgbm90IGZvdW5kICovCisgICAgY2hhciBidWZmZXJbTUFYUEFUSExFTioyKzFdOyAgLyogYWxsb3cgZXh0cmEgZm9yIGtleSwgJz0nLCBldGMuICovCisKKyAgICBmc2VlayhlbnZfZmlsZSwgMCwgU0VFS19TRVQpOworICAgIHdoaWxlICghZmVvZihlbnZfZmlsZSkpIHsKKyAgICAgICAgY2hhciAqIHAgPSBmZ2V0cyhidWZmZXIsIE1BWFBBVEhMRU4qMiwgZW52X2ZpbGUpOworICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKjIrMV07CisgICAgICAgIFB5T2JqZWN0ICogZGVjb2RlZDsKKyAgICAgICAgaW50IG47CisKKyAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuID0gc3RybGVuKHApOworICAgICAgICBpZiAocFtuIC0gMV0gIT0gJ1xuJykgeworICAgICAgICAgICAgLyogbGluZSBoYXMgb3ZlcmZsb3dlZCAtIGJhaWwgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChwWzBdID09ICcjJykgICAgLyogQ29tbWVudCAtIHNraXAgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjgoYnVmZmVyLCBuLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIGlmIChkZWNvZGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgazsKKyAgICAgICAgICAgIHdjaGFyX3QgKiBzdGF0ZTsKKyAgICAgICAgICAgIGsgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhcihkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGJ1ZmZlciwgTUFYUEFUSExFTiAqIDIpOworICAgICAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOworICAgICAgICAgICAgaWYgKGsgPj0gMCkgeworICAgICAgICAgICAgICAgIHdjaGFyX3QgKiB0b2sgPSB3Y3N0b2sodG1wYnVmZmVyLCBMIiBcdFxyXG4iLCAmc3RhdGUpOworICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIiBcdCIsICZzdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBMIj0iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiXHJcbiIsICZzdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NuY3B5KHZhbHVlLCB0b2ssIE1BWFBBVEhMRU4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogLyogc2VhcmNoX2Zvcl9wcmVmaXggcmVxdWlyZXMgdGhhdCBhcmd2MF9wYXRoIGJlIG5vIG1vcmUgdGhhbiBNQVhQQVRITEVOCiAgICBieXRlcyBsb25nLgogKi8KQEAgLTQwNiw3ICs0NTksNyBAQAogICAgIHN0YXRpYyB3Y2hhcl90IGRlbGltaXRlclsyXSA9IHtERUxJTSwgJ1wwJ307CiAgICAgc3RhdGljIHdjaGFyX3Qgc2VwYXJhdG9yWzJdID0ge1NFUCwgJ1wwJ307CiAgICAgY2hhciAqX3J0cHlwYXRoID0gUHlfR0VURU5WKCJQWVRIT05QQVRIIik7IC8qIFhYWCB1c2Ugd2lkZSB2ZXJzaW9uIG9uIFdpbmRvd3MgKi8KLSAgICB3Y2hhcl90IHJ0cHlwYXRoW01BWFBBVEhMRU4rMV07CisgICAgd2NoYXJfdCAqcnRweXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7CiAgICAgY2hhciAqX3BhdGggPSBnZXRlbnYoIlBBVEgiKTsKICAgICB3Y2hhcl90ICpwYXRoX2J1ZmZlciA9IE5VTEw7CkBAIC00MjEsNiArNDc0LDcgQEAKICAgICB3Y2hhcl90ICpkZWZwYXRoOwogI2lmZGVmIFdJVEhfTkVYVF9GUkFNRVdPUksKICAgICBOU01vZHVsZSBweXRob25Nb2R1bGU7CisgICAgY29uc3QgY2hhciogICAgbW9kUGF0aDsKICNlbmRpZgogI2lmZGVmIF9fQVBQTEVfXwogI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gTUFDX09TX1hfVkVSU0lPTl8xMF80CkBAIC01MTUsOCArNTY5LDggQEAKICAgICAqLwogICAgIHB5dGhvbk1vZHVsZSA9IE5TTW9kdWxlRm9yU3ltYm9sKE5TTG9va3VwQW5kQmluZFN5bWJvbCgiX1B5X0luaXRpYWxpemUiKSk7CiAgICAgLyogVXNlIGR5bGliIGZ1bmN0aW9ucyB0byBmaW5kIG91dCB3aGVyZSB0aGUgZnJhbWV3b3JrIHdhcyBsb2FkZWQgZnJvbSAqLwotICAgIGJ1ZiA9ICh3Y2hhcl90ICopTlNMaWJyYXJ5TmFtZUZvck1vZHVsZShweXRob25Nb2R1bGUpOwotICAgIGlmIChidWYgIT0gTlVMTCkgeworICAgIG1vZFBhdGggPSBOU0xpYnJhcnlOYW1lRm9yTW9kdWxlKHB5dGhvbk1vZHVsZSk7CisgICAgaWYgKG1vZFBhdGggIT0gTlVMTCkgewogICAgICAgICAvKiBXZSdyZSBpbiBhIGZyYW1ld29yay4gKi8KICAgICAgICAgLyogU2VlIGlmIHdlIG1pZ2h0IGJlIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuIFRoZSBmcmFtZXdvcmsgaW4gdGhlCiAgICAgICAgICoqIGJ1aWxkIGRpcmVjdG9yeSBpcyBpbmNvbXBsZXRlLCBpdCBvbmx5IGhhcyB0aGUgLmR5bGliIGFuZCBhIGZldwpAQCAtNTI1LDcgKzU3OSwxMiBAQAogICAgICAgICAqKiBiZSBydW5uaW5nIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LCBzbyB3ZSB1c2UgdGhlCiAgICAgICAgICoqIGJ1aWxkLWRpcmVjdG9yeS1zcGVjaWZpYyBsb2dpYyB0byBmaW5kIExpYiBhbmQgc3VjaC4KICAgICAgICAgKi8KLSAgICAgICAgd2NzbmNweShhcmd2MF9wYXRoLCBidWYsIE1BWFBBVEhMRU4pOworICAgICAgICB3Y2hhcl90KiB3YnVmID0gX1B5X2NoYXIyd2NoYXIobW9kUGF0aCwgTlVMTCk7CisgICAgICAgIGlmICh3YnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBkZWNvZGUgZnJhbWV3b3JrIGxvY2F0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIHdidWYsIE1BWFBBVEhMRU4pOwogICAgICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CiAgICAgICAgIGpvaW5wYXRoKGFyZ3YwX3BhdGgsIGxpYl9weXRob24pOwogICAgICAgICBqb2lucGF0aChhcmd2MF9wYXRoLCBMQU5ETUFSSyk7CkBAIC01MzYsOCArNTk1LDkgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIFVzZSB0aGUgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkgYXMgdGhlIHByb2dwYXRoICovCi0gICAgICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIGJ1ZiwgTUFYUEFUSExFTik7CisgICAgICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIHdidWYsIE1BWFBBVEhMRU4pOwogICAgICAgICB9CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CiAgICAgfQogI2VuZGlmCiAKQEAgLTU2NSw2ICs2MjUsNDAgQEAKICAgICAgICBNQVhQQVRITEVOIGJ5dGVzIGxvbmcuCiAgICAgKi8KIAorICAgIC8qIFNlYXJjaCBmb3IgYW4gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBmaWxlLCBmaXJzdCBpbiB0aGUKKyAgICAgICBleGVjdXRhYmxlJ3MgZGlyZWN0b3J5IGFuZCB0aGVuIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgIElmIGZvdW5kLCBvcGVuIGl0IGZvciB1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHByZWZpeGVzLgorICAgICovCisKKyAgICB7CisgICAgICAgIHdjaGFyX3QgdG1wYnVmZmVyW01BWFBBVEhMRU4rMV07CisgICAgICAgIHdjaGFyX3QgKmVudl9jZmcgPSBMInB5dmVudi5jZmciOworICAgICAgICBGSUxFICogZW52X2ZpbGUgPSBOVUxMOworCisgICAgICAgIHdjc2NweSh0bXBidWZmZXIsIGFyZ3YwX3BhdGgpOworCisgICAgICAgIGpvaW5wYXRoKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7CisgICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKKyAgICAgICAgICAgIGpvaW5wYXRoKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCisgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHRtcGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmY2xvc2UoZW52X2ZpbGUpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBOVUxMOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCEocGZvdW5kID0gc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgaG9tZSwgX3ByZWZpeCkpKSB7CiAgICAgICAgIGlmICghUHlfRnJvemVuRmxhZykKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLApAQCAtNjA2LDEyICs3MDAsMTIgQEAKICAgICBidWZzeiA9IDA7CiAKICAgICBpZiAoX3J0cHlwYXRoKSB7Ci0gICAgICAgIHNpemVfdCBzID0gbWJzdG93Y3MocnRweXBhdGgsIF9ydHB5cGF0aCwgc2l6ZW9mKHJ0cHlwYXRoKS9zaXplb2Yod2NoYXJfdCkpOwotICAgICAgICBpZiAocyA9PSAoc2l6ZV90KS0xIHx8IHMgPj1zaXplb2YocnRweXBhdGgpKQotICAgICAgICAgICAgLyogWFhYIGRlYWwgd2l0aCBlcnJvcnMgbW9yZSBncmFjZWZ1bGx5ICovCisgICAgICAgIHNpemVfdCBydHB5cGF0aF9sZW47CisgICAgICAgIHJ0cHlwYXRoID0gX1B5X2NoYXIyd2NoYXIoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKKyAgICAgICAgaWYgKHJ0cHlwYXRoICE9IE5VTEwpCisgICAgICAgICAgICBidWZzeiArPSBydHB5cGF0aF9sZW4gKyAxOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBfcnRweXBhdGggPSBOVUxMOwotICAgICAgICBpZiAoX3J0cHlwYXRoKQotICAgICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKHJ0cHlwYXRoKSArIDE7CiAgICAgfQogCiAgICAgZGVmcGF0aCA9IF9weXRob25wYXRoOwpAQCAtNjQ1LDcgKzczOSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBSdW4tdGltZSB2YWx1ZSBvZiAkUFlUSE9OUEFUSCBnb2VzIGZpcnN0ICovCi0gICAgICAgIGlmIChfcnRweXBhdGgpIHsKKyAgICAgICAgaWYgKHJ0cHlwYXRoKSB7CiAgICAgICAgICAgICB3Y3NjcHkoYnVmLCBydHB5cGF0aCk7CiAgICAgICAgICAgICB3Y3NjYXQoYnVmLCBkZWxpbWl0ZXIpOwogICAgICAgICB9CkBAIC03MTksNiArODEzLDggQEAKICAgICBQeU1lbV9GcmVlKF9weXRob25wYXRoKTsKICAgICBQeU1lbV9GcmVlKF9wcmVmaXgpOwogICAgIFB5TWVtX0ZyZWUoX2V4ZWNfcHJlZml4KTsKKyAgICBpZiAocnRweXBhdGggIT0gTlVMTCkKKyAgICAgICAgUHlNZW1fRnJlZShydHB5cGF0aCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKaW5kZXggNzdlNzZmZS4uOTExNWI2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCkBAIC0xMzQsNiArMTM0LDUzIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitncm91cGJ5X3JlZHVjZShncm91cGJ5b2JqZWN0ICpseikKK3sKKyAgICAvKiByZWR1Y2UgYXMgYSAnbmV3JyBjYWxsIHdpdGggYW4gb3B0aW9uYWwgJ3NldHN0YXRlJyBpZiBncm91cGJ5CisgICAgICogaGFzIHN0YXJ0ZWQKKyAgICAgKi8KKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgaWYgKGx6LT50Z3RrZXkgJiYgbHotPmN1cnJrZXkgJiYgbHotPmN1cnJ2YWx1ZSkKKyAgICAgICAgdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJPKE9PKShPT08pIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICBsei0+aXQsIGx6LT5rZXlmdW5jLCBsei0+Y3VycmtleSwgbHotPmN1cnJ2YWx1ZSwgbHotPnRndGtleSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICBsei0+aXQsIGx6LT5rZXlmdW5jKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JvdXBieV9zZXRzdGF0ZShncm91cGJ5b2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpjdXJya2V5LCAqY3VycnZhbHVlLCAqdGd0a2V5OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9PTyIsICZjdXJya2V5LCAmY3VycnZhbHVlLCAmdGd0a2V5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQ0xFQVIobHotPmN1cnJrZXkpOworICAgIGx6LT5jdXJya2V5ID0gY3VycmtleTsKKyAgICBQeV9JTkNSRUYobHotPmN1cnJrZXkpOworICAgIFB5X0NMRUFSKGx6LT5jdXJydmFsdWUpOworICAgIGx6LT5jdXJydmFsdWUgPSBjdXJydmFsdWU7CisgICAgUHlfSU5DUkVGKGx6LT5jdXJydmFsdWUpOworICAgIFB5X0NMRUFSKGx6LT50Z3RrZXkpOworICAgIGx6LT50Z3RrZXkgPSB0Z3RrZXk7CisgICAgUHlfSU5DUkVGKGx6LT50Z3RrZXkpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgZ3JvdXBieV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZ3JvdXBieV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWdyb3VwYnlfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihncm91cGJ5X2RvYywKICJncm91cGJ5KGl0ZXJhYmxlWywga2V5ZnVuY10pIC0+IGNyZWF0ZSBhbiBpdGVyYXRvciB3aGljaCByZXR1cm5zXG5cCiAoa2V5LCBzdWItaXRlcmF0b3IpIGdyb3VwZWQgYnkgZWFjaCB2YWx1ZSBvZiBrZXkodmFsdWUpLlxuIik7CkBAIC0xNjgsNyArMjE1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWdyb3VwYnlfbmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBncm91cGJ5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTE5NCw2ICsyNDEsMTcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgX2dyb3VwZXJfdHlwZTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK19ncm91cGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqcGFyZW50LCAqdGd0a2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIU8iLCAmZ3JvdXBieV90eXBlLCAmcGFyZW50LCAmdGd0a2V5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gX2dyb3VwZXJfY3JlYXRlKChncm91cGJ5b2JqZWN0KikgcGFyZW50LCB0Z3RrZXkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogX2dyb3VwZXJfY3JlYXRlKGdyb3VwYnlvYmplY3QgKnBhcmVudCwgUHlPYmplY3QgKnRndGtleSkKIHsKICAgICBfZ3JvdXBlcm9iamVjdCAqaWdvOwpAQCAtMjY5LDYgKzMyNywyMCBAQAogICAgIHJldHVybiByOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX2dyb3VwZXJfcmVkdWNlKF9ncm91cGVyb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgIGx6LT5wYXJlbnQsIGx6LT50Z3RrZXkpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgX2dyb3VwZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKV9ncm91cGVyX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgX2dyb3VwZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaXRlcnRvb2xzLl9ncm91cGVyIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yOTgsNyArMzcwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKV9ncm91cGVyX25leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBfZ3JvdXBlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTMwOCw3ICszODAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBfZ3JvdXBlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCkBAIC0zNDQsNyArNDE2LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdGVlZGF0YW9iamVjdF9uZXcoUHlPYmplY3QgKml0KQordGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbChQeU9iamVjdCAqaXQpCiB7CiAgICAgdGVlZGF0YW9iamVjdCAqdGRvOwogCkBAIC0zNjQsNyArNDM2LDcgQEAKIHRlZWRhdGFvYmplY3RfanVtcGxpbmsodGVlZGF0YW9iamVjdCAqdGRvKQogewogICAgIGlmICh0ZG8tPm5leHRsaW5rID09IE5VTEwpCi0gICAgICAgIHRkby0+bmV4dGxpbmsgPSB0ZWVkYXRhb2JqZWN0X25ldyh0ZG8tPml0KTsKKyAgICAgICAgdGRvLT5uZXh0bGluayA9IHRlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwodGRvLT5pdCk7CiAgICAgUHlfWElOQ1JFRih0ZG8tPm5leHRsaW5rKTsKICAgICByZXR1cm4gdGRvLT5uZXh0bGluazsKIH0KQEAgLTQyMCwxMSArNDkyLDgxIEBACiAgICAgUHlPYmplY3RfR0NfRGVsKHRkbyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVkYXRhb2JqZWN0X3JlZHVjZSh0ZWVkYXRhb2JqZWN0ICp0ZG8pCit7CisgICAgaW50IGk7CisgICAgLyogY3JlYXRlIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgYWxyZWFkeSBpdGVyYXRlZCB2YWx1ZXMgKi8KKyAgICBQeU9iamVjdCAqdmFsdWVzID0gUHlMaXN0X05ldyh0ZG8tPm51bXJlYWQpOworICAgIGlmICghdmFsdWVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MCA7IGk8dGRvLT5udW1yZWFkIDsgaSsrKSB7CisgICAgICAgIFB5X0lOQ1JFRih0ZG8tPnZhbHVlc1tpXSk7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh2YWx1ZXMsIGksIHRkby0+dmFsdWVzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT05PKSIsIFB5X1RZUEUodGRvKSwgdGRvLT5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGRvLT5uZXh0bGluayA/IHRkby0+bmV4dGxpbmsgOiBQeV9Ob25lKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVkYXRhb2JqZWN0X3R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVkYXRhb2JqZWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgdGVlZGF0YW9iamVjdCAqdGRvOworICAgIFB5T2JqZWN0ICppdCwgKnZhbHVlcywgKm5leHQ7CisgICAgUHlfc3NpemVfdCBpLCBsZW47CisKKyAgICBhc3NlcnQodHlwZSA9PSAmdGVlZGF0YW9iamVjdF90eXBlKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIU8iLCAmaXQsICZQeUxpc3RfVHlwZSwgJnZhbHVlcywgJm5leHQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRkbyA9ICh0ZWVkYXRhb2JqZWN0ICopdGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbChpdCk7CisgICAgaWYgKCF0ZG8pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHZhbHVlcyk7CisgICAgaWYgKGxlbiA+IExJTktDRUxMUykKKyAgICAgICAgZ290byBlcnI7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgdGRvLT52YWx1ZXNbaV0gPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKHRkby0+dmFsdWVzW2ldKTsKKyAgICB9CisgICAgLyogbGVuIDw9IExJTktDRUxMUyA8IElOVF9NQVggKi8KKyAgICB0ZG8tPm51bXJlYWQgPSBQeV9TQUZFX0RPV05DQVNUKGxlbiwgUHlfc3NpemVfdCwgaW50KTsKKworICAgIGlmIChsZW4gPT0gTElOS0NFTExTKSB7CisgICAgICAgIGlmIChuZXh0ICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGlmIChQeV9UWVBFKG5leHQpICE9ICZ0ZWVkYXRhb2JqZWN0X3R5cGUpCisgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBhc3NlcnQodGRvLT5uZXh0bGluayA9PSBOVUxMKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihuZXh0KTsKKyAgICAgICAgICAgIHRkby0+bmV4dGxpbmsgPSBuZXh0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG5leHQgIT0gUHlfTm9uZSkKKyAgICAgICAgICAgIGdvdG8gZXJyOyAvKiBzaG91bGRuJ3QgaGF2ZSBhIG5leHQgaWYgd2UgYXJlIG5vdCBmdWxsICovCisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKXRkbzsKKworZXJyOgorICAgIFB5X1hERUNSRUYodGRvKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgYXJndW1lbnRzIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0ZWVkYXRhb2JqZWN0X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVkYXRhb2JqZWN0X3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIodGVlZGF0YW9iamVjdF9kb2MsICJEYXRhIGNvbnRhaW5lciBjb21tb24gdG8gbXVsdGlwbGUgdGVlIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKSAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCi0gICAgIml0ZXJ0b29scy50ZWVfZGF0YW9iamVjdCIsICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIml0ZXJ0b29scy5fdGVlX2RhdGFvYmplY3QiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHRlZWRhdGFvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtNDUxLDcgKzU5Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB0ZWVkYXRhb2JqZWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtNDYxLDcgKzYwMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgdGVlZGF0YW9iamVjdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKQEAgLTUyOCw3ICs2NzAsNyBAQAogICAgIHRvID0gUHlPYmplY3RfR0NfTmV3KHRlZW9iamVjdCwgJnRlZV90eXBlKTsKICAgICBpZiAodG8gPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIHRvLT5kYXRhb2JqID0gKHRlZWRhdGFvYmplY3QgKil0ZWVkYXRhb2JqZWN0X25ldyhpdCk7CisgICAgdG8tPmRhdGFvYmogPSAodGVlZGF0YW9iamVjdCAqKXRlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwoaXQpOwogICAgIGlmICghdG8tPmRhdGFvYmopIHsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKHRvKTsKICAgICAgICAgdG8gPSBOVUxMOwpAQCAtNTQ4LDcgKzY5MCw3IEBACiB7CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGVlIiwgMSwgMSwgJml0ZXJhYmxlKSkKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJfdGVlIiwgMSwgMSwgJml0ZXJhYmxlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHRlZV9mcm9taXRlcmFibGUoaXRlcmFibGUpOwogfQpAQCAtNTcwLDE3ICs3MTIsNDMgQEAKICAgICBQeU9iamVjdF9HQ19EZWwodG8pOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVlX3JlZHVjZSh0ZWVvYmplY3QgKnRvKQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpKShPaSkiLCBQeV9UWVBFKHRvKSwgdG8tPmRhdGFvYmosIHRvLT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVfc2V0c3RhdGUodGVlb2JqZWN0ICp0bywgUHlPYmplY3QgKnN0YXRlKQoreworICAgIHRlZWRhdGFvYmplY3QgKnRkbzsKKyAgICBpbnQgaW5kZXg7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiTyFpIiwgJnRlZWRhdGFvYmplY3RfdHlwZSwgJnRkbywgJmluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IExJTktDRUxMUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfQ0xFQVIodG8tPmRhdGFvYmopOworICAgIHRvLT5kYXRhb2JqID0gdGRvOworICAgIFB5X0lOQ1JFRih0by0+ZGF0YW9iaik7CisgICAgdG8tPmluZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIFB5RG9jX1NUUlZBUih0ZWVvYmplY3RfZG9jLAogIkl0ZXJhdG9yIHdyYXBwZWQgdG8gbWFrZSBpdCBjb3B5YWJsZSIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgdGVlX21ldGhvZHNbXSA9IHsKICAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbil0ZWVfY29weSwgIE1FVEhfTk9BUkdTLCB0ZWVjb3B5X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGVlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGVlX3NldHN0YXRlLCAgICBNRVRIX08sIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIml0ZXJ0b29scy50ZWUiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMuX3RlZSIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YodGVlb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTYyNiw2ICs3OTQsNyBAQAogewogICAgIFB5X3NzaXplX3QgaSwgbj0yOwogICAgIFB5T2JqZWN0ICppdCwgKml0ZXJhYmxlLCAqY29weWFibGUsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX19jb3B5X18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfG4iLCAmaXRlcmFibGUsICZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NDMsNyArODEyLDcgQEAKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoaXQsICJfX2NvcHlfXyIpKSB7CisgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKGl0LCAmUHlJZF9fX2NvcHlfXykpIHsKICAgICAgICAgY29weWFibGUgPSB0ZWVfZnJvbWl0ZXJhYmxlKGl0KTsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgaWYgKGNvcHlhYmxlID09IE5VTEwpIHsKQEAgLTY1NCw3ICs4MjMsOCBAQAogICAgICAgICBjb3B5YWJsZSA9IGl0OwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBjb3B5YWJsZSk7CiAgICAgZm9yIChpPTEgOyBpPG4gOyBpKyspIHsKLSAgICAgICAgY29weWFibGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNvcHlhYmxlLCAiX19jb3B5X18iLCBOVUxMKTsKKworICAgICAgICBjb3B5YWJsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoY29weWFibGUsICZQeUlkX19fY29weV9fLCBOVUxMKTsKICAgICAgICAgaWYgKGNvcHlhYmxlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NjksNiArOTM5LDM4IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY3ljbGVfcmVkdWNlKGN5Y2xlb2JqZWN0ICpseikKK3sKKyAgICAvKiBDcmVhdGUgYSBuZXcgY3ljbGUgd2l0aCB0aGUgaXRlcmF0b3IgdHVwbGUsIHRoZW4gc2V0CisgICAgICogdGhlIHNhdmVkIHN0YXRlIG9uIGl0LgorICAgICAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pKE9pKSIsIFB5X1RZUEUobHopLCAKKyAgICAgICAgbHotPml0LCBsei0+c2F2ZWQsIGx6LT5maXJzdHBhc3MpOworICAgIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK2N5Y2xlX3NldHN0YXRlKGN5Y2xlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpzYXZlZD1OVUxMOworICAgIGludCBmaXJzdHBhc3M7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT2kiLCAmc2F2ZWQsICZmaXJzdHBhc3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9DTEVBUihsei0+c2F2ZWQpOworICAgIGx6LT5zYXZlZCA9IHNhdmVkOworICAgIFB5X1hJTkNSRUYobHotPnNhdmVkKTsKKyAgICBsei0+Zmlyc3RwYXNzID0gZmlyc3RwYXNzICE9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjeWNsZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY3ljbGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljeWNsZV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGN5Y2xlX2RvYywKICJjeWNsZShpdGVyYWJsZSkgLS0+IGN5Y2xlIG9iamVjdFxuXAogXG5cCkBAIC04MDUsNyArMTAwNyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljeWNsZV9uZXh0LCAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY3ljbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC05MTMsNiArMTExNSwzMSBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2Ryb3B3aGlsZV9yZWR1Y2UoZHJvcHdoaWxlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0YXJ0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Ryb3B3aGlsZV9zZXRzdGF0ZShkcm9wd2hpbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgaW50IHN0YXJ0ID0gUHlPYmplY3RfSXNUcnVlKHN0YXRlKTsKKyAgICBpZiAoc3RhcnQgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsei0+c3RhcnQgPSBzdGFydDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGRyb3B3aGlsZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZHJvcHdoaWxlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pZHJvcHdoaWxlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZHJvcHdoaWxlX2RvYywKICJkcm9wd2hpbGUocHJlZGljYXRlLCBpdGVyYWJsZSkgLS0+IGRyb3B3aGlsZSBvYmplY3RcblwKIFxuXApAQCAtOTQ5LDcgKzExNzYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZHJvcHdoaWxlX25leHQsICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGRyb3B3aGlsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTEwNDUsNyArMTI3Miw3IEBACiAgICAgfQogICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKGdvb2QpOwogICAgIFB5X0RFQ1JFRihnb29kKTsKLSAgICBpZiAob2sgPiAwKQorICAgIGlmIChvayA9PSAxKQogICAgICAgICByZXR1cm4gaXRlbTsKICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgaWYgKG9rID09IDApCkBAIC0xMDUzLDYgKzEyODAsMzAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rha2V3aGlsZV9yZWR1Y2UodGFrZXdoaWxlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0b3ApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGFrZXdoaWxlX3JlZHVjZV9zZXRzdGF0ZSh0YWtld2hpbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgaW50IHN0b3AgPSBQeU9iamVjdF9Jc1RydWUoc3RhdGUpOworICAgIGlmIChzdG9wIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbHotPnN0b3AgPSBzdG9wOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgdGFrZXdoaWxlX3JlZHVjZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGFrZXdoaWxlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGFrZXdoaWxlX3JlZHVjZV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKIFB5RG9jX1NUUlZBUih0YWtld2hpbGVfZG9jLAogInRha2V3aGlsZShwcmVkaWNhdGUsIGl0ZXJhYmxlKSAtLT4gdGFrZXdoaWxlIG9iamVjdFxuXAogXG5cCkBAIC0xMDg5LDcgKzEzNDAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpdGFrZXdoaWxlX25leHQsICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHRha2V3aGlsZV9yZWR1Y2VfbWV0aG9kcywgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTI0NSw2ICsxNDk2LDQ0IEBACiAgICAgcmV0dXJuIGl0ZW07CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitpc2xpY2VfcmVkdWNlKGlzbGljZW9iamVjdCAqbHopCit7CisgICAgLyogV2hlbiB1bnBpY2tsZWQsIGdlbmVyYXRlIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGJvdW5kcywKKyAgICAgKiB0aGVuICdzZXRzdGF0ZScgd2l0aCB0aGUgbmV4dCBhbmQgY291bnQKKyAgICAgKi8KKyAgICBQeU9iamVjdCAqc3RvcDsKKyAgICBpZiAobHotPnN0b3AgPT0gLTEpIHsKKyAgICAgICAgc3RvcCA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihzdG9wKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdG9wID0gUHlMb25nX0Zyb21Tc2l6ZV90KGx6LT5zdG9wKTsKKyAgICAgICAgaWYgKHN0b3AgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbk5uKW4iLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgbHotPml0LCBsei0+bmV4dCwgc3RvcCwgbHotPnN0ZXAsCisgICAgICAgIGx6LT5jbnQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraXNsaWNlX3NldHN0YXRlKGlzbGljZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGNudCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChjbnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbHotPmNudCA9IGNudDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGlzbGljZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24paXNsaWNlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24paXNsaWNlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoaXNsaWNlX2RvYywKICJpc2xpY2UoaXRlcmFibGUsIFtzdGFydCxdIHN0b3AgWywgc3RlcF0pIC0tPiBpc2xpY2Ugb2JqZWN0XG5cCiBcblwKQEAgLTEyODUsNyArMTU3NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylpc2xpY2VfbmV4dCwgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgaXNsaWNlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xMzgwLDYgKzE2NjksMTkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorc3Rhcm1hcF9yZWR1Y2Uoc3Rhcm1hcG9iamVjdCAqbHopCit7CisgICAgLyogSnVzdCBwaWNrbGUgdGhlIGl0ZXJhdG9yICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgc3Rhcm1hcF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pc3Rhcm1hcF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHN0YXJtYXBfZG9jLAogInN0YXJtYXAoZnVuY3Rpb24sIHNlcXVlbmNlKSAtLT4gc3Rhcm1hcCBvYmplY3RcblwKIFxuXApAQCAtMTQxNiw3ICsxNzE4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXN0YXJtYXBfbmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBzdGFybWFwX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTE1MzUsNiArMTgzNyw0MSBAQAogICAgIHJldHVybiBjaGFpbl9uZXh0KGx6KTsgICAgICAgICAgICAgICAgICAgICAgLyogcmVjdXJzZSBhbmQgdXNlIG5leHQgYWN0aXZlICovCiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjaGFpbl9yZWR1Y2UoY2hhaW5vYmplY3QgKmx6KQoreworICAgIGlmIChsei0+c291cmNlKSB7CisgICAgICAgIC8qIHdlIGNhbid0IHBpY2tsZSBmdW5jdGlvbiBvYmplY3RzIChpdGVydG9vbHMuZnJvbV9pdGVyYWJsZSkgc28KKyAgICAgICAgICogd2UgbXVzdCB1c2Ugc2V0c3RhdGUgdG8gcmVwbGFjZSB0aGUgaXRlcmFibGUuICBPbmUgZGF5IHdlCisgICAgICAgICAqIHdpbGwgZml4IHBpY2tsaW5nIG9mIGZ1bmN0aW9ucworICAgICAgICAgKi8KKyAgICAgICAgaWYgKGx6LT5hY3RpdmUpIHsKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCkoT08pIiwgUHlfVFlQRShseiksIGx6LT5zb3VyY2UsIGx6LT5hY3RpdmUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKShPKSIsIFB5X1RZUEUobHopLCBsei0+c291cmNlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCkiLCBQeV9UWVBFKGx6KSk7IC8qIGV4aGF1c3RlZCAqLworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NoYWluX3NldHN0YXRlKGNoYWlub2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpzb3VyY2UsICphY3RpdmU9TlVMTDsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT3xPIiwgJnNvdXJjZSwgJmFjdGl2ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7CisgICAgbHotPnNvdXJjZSA9IHNvdXJjZTsKKyAgICBQeV9JTkNSRUYobHotPnNvdXJjZSk7CisgICAgUHlfQ0xFQVIobHotPmFjdGl2ZSk7CisgICAgbHotPmFjdGl2ZSA9IGFjdGl2ZTsKKyAgICBQeV9YSU5DUkVGKGx6LT5hY3RpdmUpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiBQeURvY19TVFJWQVIoY2hhaW5fZG9jLAogImNoYWluKCppdGVyYWJsZXMpIC0tPiBjaGFpbiBvYmplY3RcblwKIFxuXApAQCAtMTU1MSw2ICsxODg4LDEwIEBACiBzdGF0aWMgUHlNZXRob2REZWYgY2hhaW5fbWV0aG9kc1tdID0gewogICAgIHsiZnJvbV9pdGVyYWJsZSIsIChQeUNGdW5jdGlvbikgY2hhaW5fbmV3X2Zyb21faXRlcmFibGUsICAgICAgICAgICAgTUVUSF9PIHwgTUVUSF9DTEFTUywKICAgICAgICAgY2hhaW5fZnJvbV9pdGVyYWJsZV9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNoYWluX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY2hhaW5fc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE3OTEsNiArMjEzMiw4MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcHJvZHVjdF9yZWR1Y2UocHJvZHVjdG9iamVjdCAqbHopCit7CisgICAgaWYgKGx6LT5zdG9wcGVkKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpKSIsIFB5X1RZUEUobHopKTsKKyAgICB9IGVsc2UgaWYgKGx6LT5yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT08iLCBQeV9UWVBFKGx6KSwgbHotPnBvb2xzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlczsKKyAgICAgICAgUHlfc3NpemVfdCBuLCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIHVzZSB0aGVtIGZvciBzZXRzdGF0ZSwgYW5kCisgICAgICAgICAqIGFkZGl0aW9uYWxseSBpbmRpY2F0ZSB0aGF0IHRoZSBpdGVyYXRvciBoYXMgc3RhcnRlZAorICAgICAgICAgKi8KKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2xzKTsKKyAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZvciAoaT0wOyBpPG47IGkrKyl7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW5kaWNlcywgaSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPT04iLCBQeV9UWVBFKGx6KSwgbHotPnBvb2xzLCBpbmRpY2VzKTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwcm9kdWN0X3NldHN0YXRlKHByb2R1Y3RvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG4sIGk7CisKKyAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbHMpOworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspCisgICAgeworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KKyAgICAgICAgLyogY2xhbXAgdGhlIGluZGV4ICovCisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gbi0xKQorICAgICAgICAgICAgaW5kZXggPSBuLTE7CisgICAgICAgIGx6LT5pbmRpY2VzW2ldID0gaW5kZXg7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPG47IGkrKykgeworICAgICAgICBQeU9iamVjdCAqcG9vbCA9IFB5VHVwbGVfR0VUX0lURU0obHotPnBvb2xzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBQeVR1cGxlX0dFVF9JVEVNKHBvb2wsIGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorICAgIFB5X0NMRUFSKGx6LT5yZXN1bHQpOworICAgIGx6LT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBwcm9kdWN0X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilwcm9kdWN0X3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pcHJvZHVjdF9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHByb2R1Y3RfZG9jLAogInByb2R1Y3QoKml0ZXJhYmxlcykgLS0+IHByb2R1Y3Qgb2JqZWN0XG5cCiBcblwKQEAgLTE4MzUsNyArMjI1Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylwcm9kdWN0X25leHQsICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgcHJvZHVjdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yMDIyLDYgKzI0NDAsODYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NvbWJpbmF0aW9uc19yZWR1Y2UoY29tYmluYXRpb25zb2JqZWN0ICpseikKK3sKKyAgICBpZiAobHotPnJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIpOworICAgIH0gZWxzZSBpZiAobHotPnN0b3BwZWQpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCluKSIsIFB5X1RZUEUobHopLCBsei0+cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmluZGljZXM7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiB3ZSBtdXN0IHBpY2tsZSB0aGUgaW5kaWNlcyBhbmQgdXNlIHRoZW0gZm9yIHNldHN0YXRlICovCisgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgICAgIGlmICghaW5kaWNlcykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW5kaWNlcywgaSwgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pTiIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIsIGluZGljZXMpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbWJpbmF0aW9uc19zZXRzdGF0ZShjb21iaW5hdGlvbnNvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhdGUpIHx8IFB5VHVwbGVfR0VUX1NJWkUoc3RhdGUpICE9IGx6LT5yKQorICAgIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlfc3NpemVfdCBtYXg7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIG1heCA9IGkgKyBuIC0gbHotPnI7CisgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAoYmV3YXJlIG9mIG5lZ2F0aXZlIG1heCkgKi8KKyAgICAgICAgaWYgKGluZGV4ID4gbWF4KQorICAgICAgICAgICAgaW5kZXggPSBtYXg7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGx6LT5pbmRpY2VzW2ldID0gaW5kZXg7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobHotPnIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0obHotPnBvb2wsIGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorCisgICAgUHlfQ0xFQVIobHotPnJlc3VsdCk7CisgICAgbHotPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGNvbWJpbmF0aW9uc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY29tYmluYXRpb25zX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY29tYmluYXRpb25zX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY29tYmluYXRpb25zX2RvYywKICJjb21iaW5hdGlvbnMoaXRlcmFibGUsIHIpIC0tPiBjb21iaW5hdGlvbnMgb2JqZWN0XG5cCiBcblwKQEAgLTIwMzAsMTEgKzI1MjgsMTEgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjb21iaW5hdGlvbnNfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyIsICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGNvbWJpbmF0aW9uc29iamVjdCksICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpY29tYmluYXRpb25zX2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpY29tYmluYXRpb25zX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTIwNTEsMTQgKzI1NDksMTQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgY29tYmluYXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvbWJpbmF0aW9uc190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgY29tYmluYXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyljb21iaW5hdGlvbnNfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgKGl0ZXJuZXh0ZnVuYyljb21iaW5hdGlvbnNfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAoaXRlcm5leHRmdW5jKWNvbWJpbmF0aW9uc19uZXh0LCAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGNvbWJpbmF0aW9uc19tZXRob2RzLCAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjA2OCw3ICsyNTY2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgY29tYmluYXRpb25zX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBjb21iaW5hdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCkBAIC0yMjY3LDYgKzI3NjUsODIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2N3cl9yZWR1Y2UoY3dyb2JqZWN0ICpseikKK3sKKyAgICBpZiAobHotPnJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIpOworICAgIH0gZWxzZSBpZiAobHotPnN0b3BwZWQpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCluKSIsIFB5X1RZUEUobHopLCBsei0+cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmluZGljZXM7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiB3ZSBtdXN0IHBpY2tsZSB0aGUgaW5kaWNlcyBhbmQgdXNlIHRoZW0gZm9yIHNldHN0YXRlICovCisgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgICAgIGlmICghaW5kaWNlcykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW5kaWNlcywgaSwgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pTiIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIsIGluZGljZXMpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N3cl9zZXRzdGF0ZShjd3JvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG4sIGk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhdGUpIHx8IFB5VHVwbGVfR0VUX1NJWkUoc3RhdGUpICE9IGx6LT5yKQorICAgIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKKyAgICB7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgbHotPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobHotPnIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0obHotPnBvb2wsIGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorICAgIFB5X0NMRUFSKGx6LT5yZXN1bHQpOworICAgIGx6LT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjd3JfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWN3cl9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWN3cl9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGN3cl9kb2MsCiAiY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoaXRlcmFibGUsIHIpIC0tPiBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCBvYmplY3RcblwKIFxuXApAQCAtMjI3NiwxMSArMjg1MCwxMSBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGN3cl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQiLCAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoY3dyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAiaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50IiwgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihjd3JvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpY3dyX2RlYWxsb2MsICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKWN3cl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMjI5MiwxOSArMjg2NiwxOSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKLSAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIGN3cl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyljd3JfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBjd3JfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyljd3JfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIChpdGVybmV4dGZ1bmMpY3dyX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWN3cl9uZXh0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjd3JfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yMzE0LDggKzI4ODgsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBjd3JfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBjd3JfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIApAQCAtMjUzOSw2ICszMTEzLDExNSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcGVybXV0YXRpb25zX3JlZHVjZShwZXJtdXRhdGlvbnNvYmplY3QgKnBvKQoreworICAgIGlmIChwby0+cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShwbyksIHBvLT5wb29sLCBwby0+cik7CisgICAgfSBlbHNlIGlmIChwby0+c3RvcHBlZCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pIiwgUHlfVFlQRShwbyksIHBvLT5yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlcz1OVUxMLCAqY3ljbGVzPU5VTEw7CisgICAgICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgICAgICAvKiB3ZSBtdXN0IHBpY2tsZSB0aGUgaW5kaWNlcyBhbmQgY3ljbGVzIGFuZCB1c2UgdGhlbSBmb3Igc2V0c3RhdGUgKi8KKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUocG8tPnBvb2wpOworICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobik7CisgICAgICAgIGlmIChpbmRpY2VzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChwby0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjeWNsZXMgPSBQeVR1cGxlX05ldyhwby0+cik7CisgICAgICAgIGlmIChjeWNsZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QocG8tPmN5Y2xlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjeWNsZXMsIGksIGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikoTk4pIiwgUHlfVFlQRShwbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvLT5wb29sLCBwby0+ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgY3ljbGVzKTsKKyAgICBlcnI6CisgICAgICAgIFB5X1hERUNSRUYoaW5kaWNlcyk7CisgICAgICAgIFB5X1hERUNSRUYoY3ljbGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorcGVybXV0YXRpb25zX3NldHN0YXRlKHBlcm11dGF0aW9uc29iamVjdCAqcG8sIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqaW5kaWNlcywgKmN5Y2xlcywgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG4sIGk7CisgICAgCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiTyFPISIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlUdXBsZV9UeXBlLCAmY3ljbGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuID0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCk7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoaW5kaWNlcykgIT0gbiB8fAorICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGN5Y2xlcykgIT0gcG8tPnIpCisgICAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpPG47IGkrKykKKyAgICB7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oaW5kaWNlcywgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAqLworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4tMSkKKyAgICAgICAgICAgIGluZGV4ID0gbi0xOworICAgICAgICBwby0+aW5kaWNlc1tpXSA9IGluZGV4OworICAgIH0KKworICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCisgICAgeworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGN5Y2xlcywgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIGlmIChpbmRleCA8IDEpCisgICAgICAgICAgICBpbmRleCA9IDE7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gbi1pKQorICAgICAgICAgICAgaW5kZXggPSBuLWk7CisgICAgICAgIHBvLT5jeWNsZXNbaV0gPSBpbmRleDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcocG8tPnIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0ocG8tPnBvb2wsIHBvLT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorICAgIFB5X0NMRUFSKHBvLT5yZXN1bHQpOworICAgIHBvLT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBwZXJtdWF0aW9uc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pcGVybXV0YXRpb25zX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pcGVybXV0YXRpb25zX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIocGVybXV0YXRpb25zX2RvYywKICJwZXJtdXRhdGlvbnMoaXRlcmFibGVbLCByXSkgLS0+IHBlcm11dGF0aW9ucyBvYmplY3RcblwKIFxuXApAQCAtMjU3NSw3ICszMjU4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXBlcm11dGF0aW9uc19uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHBlcm11YXRpb25zX21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjU5NSw2ICszMjc4LDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKnRvdGFsOwogICAgIFB5T2JqZWN0ICppdDsKKyAgICBQeU9iamVjdCAqYmlub3A7CiB9IGFjY3VtdWxhdGVvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgYWNjdW11bGF0ZV90eXBlOwpAQCAtMjYwMiwxMiArMzI4NiwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFjY3VtdWxhdGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsiaXRlcmFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Iml0ZXJhYmxlIiwgImZ1bmMiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqaXRlcmFibGU7CiAgICAgUHlPYmplY3QgKml0OworICAgIFB5T2JqZWN0ICpiaW5vcCA9IFB5X05vbmU7CiAgICAgYWNjdW11bGF0ZW9iamVjdCAqbHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzphY2N1bXVsYXRlIiwga3dhcmdzLCAmaXRlcmFibGUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86YWNjdW11bGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLCAmaXRlcmFibGUsICZiaW5vcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogR2V0IGl0ZXJhdG9yLiAqLwpAQCAtMjYyMiw2ICszMzA4LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChiaW5vcCAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5X1hJTkNSRUYoYmlub3ApOworICAgICAgICBsei0+Ymlub3AgPSBiaW5vcDsKKyAgICB9CiAgICAgbHotPnRvdGFsID0gTlVMTDsKICAgICBsei0+aXQgPSBpdDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbHo7CkBAIC0yNjMxLDYgKzMzMjEsNyBAQAogYWNjdW11bGF0ZV9kZWFsbG9jKGFjY3VtdWxhdGVvYmplY3QgKmx6KQogewogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobHopOworICAgIFB5X1hERUNSRUYobHotPmJpbm9wKTsKICAgICBQeV9YREVDUkVGKGx6LT50b3RhbCk7CiAgICAgUHlfWERFQ1JFRihsei0+aXQpOwogICAgIFB5X1RZUEUobHopLT50cF9mcmVlKGx6KTsKQEAgLTI2MzksNiArMzMzMCw3IEBACiBzdGF0aWMgaW50CiBhY2N1bXVsYXRlX3RyYXZlcnNlKGFjY3VtdWxhdGVvYmplY3QgKmx6LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKKyAgICBQeV9WSVNJVChsei0+Ymlub3ApOwogICAgIFB5X1ZJU0lUKGx6LT5pdCk7CiAgICAgUHlfVklTSVQobHotPnRvdGFsKTsKICAgICByZXR1cm4gMDsKQEAgLTI2NTgsOCArMzM1MCwxMSBAQAogICAgICAgICBsei0+dG90YWwgPSB2YWw7CiAgICAgICAgIHJldHVybiBsei0+dG90YWw7CiAgICAgfQotICAgCi0gICAgbmV3dG90YWwgPSBQeU51bWJlcl9BZGQobHotPnRvdGFsLCB2YWwpOworCisgICAgaWYgKGx6LT5iaW5vcCA9PSBOVUxMKSAKKyAgICAgICAgbmV3dG90YWwgPSBQeU51bWJlcl9BZGQobHotPnRvdGFsLCB2YWwpOworICAgIGVsc2UKKyAgICAgICAgbmV3dG90YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5iaW5vcCwgbHotPnRvdGFsLCB2YWwsIE5VTEwpOwogICAgIFB5X0RFQ1JFRih2YWwpOwogICAgIGlmIChuZXd0b3RhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI2NzIsMTAgKzMzNjcsMzUgQEAKICAgICByZXR1cm4gbmV3dG90YWw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCithY2N1bXVsYXRlX3JlZHVjZShhY2N1bXVsYXRlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylPIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPml0LCBsei0+Ymlub3A/bHotPmJpbm9wOlB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPnRvdGFsP2x6LT50b3RhbDpQeV9Ob25lKTsKKyB9CisKK3N0YXRpYyBQeU9iamVjdCAqCithY2N1bXVsYXRlX3NldHN0YXRlKGFjY3VtdWxhdGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfQ0xFQVIobHotPnRvdGFsKTsKKyAgICBsei0+dG90YWwgPSBzdGF0ZTsKKyAgICBQeV9JTkNSRUYobHotPnRvdGFsKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGFjY3VtdWxhdGVfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFjY3VtdWxhdGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilhY2N1bXVsYXRlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoYWNjdW11bGF0ZV9kb2MsCi0iYWNjdW11bGF0ZShpdGVyYWJsZSkgLS0+IGFjY3VtdWxhdGUgb2JqZWN0XG5cCisiYWNjdW11bGF0ZShpdGVyYWJsZVssIGZ1bmNdKSAtLT4gYWNjdW11bGF0ZSBvYmplY3RcblwKIFxuXAotUmV0dXJuIHNlcmllcyBvZiBhY2N1bXVsYXRlZCBzdW1zLiIpOworUmV0dXJuIHNlcmllcyBvZiBhY2N1bXVsYXRlZCBzdW1zIChvciBvdGhlciBiaW5hcnkgZnVuY3Rpb24gcmVzdWx0cykuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgYWNjdW11bGF0ZV90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQpAQCAtMjcwNyw3ICszNDI3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWFjY3VtdWxhdGVfbmV4dCwgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBhY2N1bXVsYXRlX21ldGhvZHMsICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTI4MTksMTEgKzM1MzksMjQgQEAKICAgICAgICAgaWYgKG9rID09IDEpCiAgICAgICAgICAgICByZXR1cm4gZGF0dW07CiAgICAgICAgIFB5X0RFQ1JFRihkYXR1bSk7Ci0gICAgICAgIGlmIChvayA9PSAtMSkKKyAgICAgICAgaWYgKG9rIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NvbXByZXNzX3JlZHVjZShjb21wcmVzc29iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCisgICAgICAgIGx6LT5kYXRhLCBsei0+c2VsZWN0b3JzKTsKKyAgICB9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjb21wcmVzc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY29tcHJlc3NfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihjb21wcmVzc19kb2MsCiAiY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKSAtLT4gaXRlcmF0b3Igb3ZlciBzZWxlY3RlZCBkYXRhXG5cCiBcblwKQEAgLTI4NjEsNyArMzU5NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljb21wcmVzc19uZXh0LCAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjb21wcmVzc19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjk3MCw2ICszNzAzLDE5IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZmlsdGVyZmFsc2VfcmVkdWNlKGZpbHRlcmZhbHNlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCk7CisgICAgfQorCitzdGF0aWMgUHlNZXRob2REZWYgZmlsdGVyZmFsc2VfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWZpbHRlcmZhbHNlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZmlsdGVyZmFsc2VfZG9jLAogImZpbHRlcmZhbHNlKGZ1bmN0aW9uIG9yIE5vbmUsIHNlcXVlbmNlKSAtLT4gZmlsdGVyZmFsc2Ugb2JqZWN0XG5cCiBcblwKQEAgLTMwMDYsNyArMzc1Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylmaWx0ZXJmYWxzZV9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZmlsdGVyZmFsc2VfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0zMjAwLDExICszOTQ2LDkgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhuKSIsIFB5X1RZUEUobHopLCBsei0+Y250KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvdW50X3JlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOwotCiBzdGF0aWMgUHlNZXRob2REZWYgY291bnRfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNvdW50X3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKLSAgICAgY291bnRfcmVkdWNlX2RvY30sCisgICAgIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzM0NSw4ICs0MDg5LDIxIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3JlcGVhdF9yZWR1Y2UocmVwZWF0b2JqZWN0ICpybykKK3sKKyAgICAvKiB1bnBpY2tsZSB0aGlzIHNvIHRoYXQgYSBuZXcgcmVwZWF0IGl0ZXJhdG9yIGlzIGNvbnN0cnVjdGVkIHdpdGggYW4KKyAgICAgKiBvYmplY3QsIHRoZW4gY2FsbCBfX3NldHN0YXRlX18gb24gaXQgdG8gc2V0IGNudAorICAgICAqLworICAgIGlmIChyby0+Y250ID49IDApCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUocm8pLCByby0+ZWxlbWVudCwgcm8tPmNudCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKSIsIFB5X1RZUEUocm8pLCByby0+ZWxlbWVudCk7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiByZXBlYXRfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXJlcGVhdF9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXJlcGVhdF9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzU3Miw2ICs0MzI5LDQ5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3ppcF9sb25nZXN0X3JlZHVjZSh6aXBsb25nZXN0b2JqZWN0ICpseikKK3sKKyAgICAKKyAgICAvKiBDcmVhdGUgYSBuZXcgdHVwbGUgd2l0aCBlbXB0eSBzZXF1ZW5jZXMgd2hlcmUgYXBwcm9wcmlhdGUgdG8gcGlja2xlLgorICAgICAqIFRoZW4gdXNlIHNldHN0YXRlIHRvIHNldCB0aGUgZmlsbHZhbHVlCisgICAgICovCisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdHR1cGxlKSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8UHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSk7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbSA9IFB5VHVwbGVfR0VUX0lURU0obHotPml0dHVwbGUsIGkpOworICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpLCBlbGVtKTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9OTyIsIFB5X1RZUEUobHopLCBhcmdzLCBsei0+ZmlsbHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3ppcF9sb25nZXN0X3NldHN0YXRlKHppcGxvbmdlc3RvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfQ0xFQVIobHotPmZpbGx2YWx1ZSk7CisgICAgbHotPmZpbGx2YWx1ZSA9IHN0YXRlOworICAgIFB5X0lOQ1JFRihsei0+ZmlsbHZhbHVlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHppcF9sb25nZXN0X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil6aXBfbG9uZ2VzdF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXppcF9sb25nZXN0X3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoemlwX2xvbmdlc3RfZG9jLAogInppcF9sb25nZXN0KGl0ZXIxIFssaXRlcjIgWy4uLl1dLCBbZmlsbHZhbHVlPU5vbmVdKSAtLT4gemlwX2xvbmdlc3Qgb2JqZWN0XG5cCiBcblwKQEAgLTM2MTMsNyArNDQxMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl6aXBfbG9uZ2VzdF9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgemlwX2xvbmdlc3RfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0zNjM4LDcgKzQ0MzgsNyBAQAogcmVwZWF0KGVsZW0gWyxuXSkgLS0+IGVsZW0sIGVsZW0sIGVsZW0sIC4uLiBlbmRsZXNzbHkgb3IgdXAgdG8gbiB0aW1lc1xuXAogXG5cCiBJdGVyYXRvcnMgdGVybWluYXRpbmcgb24gdGhlIHNob3J0ZXN0IGlucHV0IHNlcXVlbmNlOlxuXAotYWNjdW11bGF0ZShwLCBzdGFydD0wKSAtLT4gcDAsIHAwK3AxLCBwMCtwMStwMlxuXAorYWNjdW11bGF0ZShwWywgZnVuY10pIC0tPiBwMCwgcDArcDEsIHAwK3AxK3AyXG5cCiBjaGFpbihwLCBxLCAuLi4pIC0tPiBwMCwgcDEsIC4uLiBwbGFzdCwgcTAsIHExLCAuLi4gXG5cCiBjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpIC0tPiAoZFswXSBpZiBzWzBdKSwgKGRbMV0gaWYgc1sxXSksIC4uLlxuXAogZHJvcHdoaWxlKHByZWQsIHNlcSkgLS0+IHNlcVtuXSwgc2VxW24rMV0sIHN0YXJ0aW5nIHdoZW4gcHJlZCBmYWlsc1xuXApAQCAtMzcwMSw2ICs0NTAxLDkgQEAKICAgICAgICAgJnByb2R1Y3RfdHlwZSwKICAgICAgICAgJnJlcGVhdF90eXBlLAogICAgICAgICAmZ3JvdXBieV90eXBlLAorICAgICAgICAmX2dyb3VwZXJfdHlwZSwKKyAgICAgICAgJnRlZV90eXBlLAorICAgICAgICAmdGVlZGF0YW9iamVjdF90eXBlLAogICAgICAgICBOVUxMCiAgICAgfTsKIApAQCAtMzcxOCwxMSArNDUyMSw1IEBACiAgICAgICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCBuYW1lKzEsIChQeU9iamVjdCAqKXR5cGVsaXN0W2ldKTsKICAgICB9CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZ0ZWVkYXRhb2JqZWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmdGVlX3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmX2dyb3VwZXJfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKaW5kZXggNWQxZDg5Ni4uYTE2Y2U2NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYWluLmMKKysrIGIvTW9kdWxlcy9tYWluLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBfX1ZNUworI2Vycm9yICJQRVAgMTE6IFZNUyBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCiAjaW5jbHVkZSA8dW5peGxpYi5oPgogI2VuZGlmCiAKQEAgLTcyLDkgKzczLDYgQEAKIC1PICAgICA6IG9wdGltaXplIGdlbmVyYXRlZCBieXRlY29kZSBzbGlnaHRseTsgYWxzbyBQWVRIT05PUFRJTUlaRT14XG5cCiAtT08gICAgOiByZW1vdmUgZG9jLXN0cmluZ3MgaW4gYWRkaXRpb24gdG8gdGhlIC1PIG9wdGltaXphdGlvbnNcblwKIC1xICAgICA6IGRvbid0IHByaW50IHZlcnNpb24gYW5kIGNvcHlyaWdodCBtZXNzYWdlcyBvbiBpbnRlcmFjdGl2ZSBzdGFydHVwXG5cCi0tUiAgICAgOiB1c2UgYSBwc2V1ZG8tcmFuZG9tIHNhbHQgdG8gbWFrZSBoYXNoKCkgdmFsdWVzIG9mIHZhcmlvdXMgdHlwZXMgYmVcblwKLSAgICAgICAgIHVucHJlZGljdGFibGUgYmV0d2VlbiBzZXBhcmF0ZSBpbnZvY2F0aW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIsIGFzXG5cCi0gICAgICAgICBhIGRlZmVuY2UgYWdhaW5zdCBkZW5pYWwtb2Ytc2VydmljZSBhdHRhY2tzXG5cCiAtcyAgICAgOiBkb24ndCBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSB0byBzeXMucGF0aDsgYWxzbyBQWVRIT05OT1VTRVJTSVRFXG5cCiAtUyAgICAgOiBkb24ndCBpbXBseSAnaW1wb3J0IHNpdGUnIG9uIGluaXRpYWxpemF0aW9uXG5cCiAiOwpAQCAtMTAyLDEzICsxMDAsMTQgQEAKICJQWVRIT05IT01FICAgOiBhbHRlcm5hdGUgPHByZWZpeD4gZGlyZWN0b3J5IChvciA8cHJlZml4PiVjPGV4ZWNfcHJlZml4PikuXG4iCiAiICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoIHVzZXMgJXMuXG4iCiAiUFlUSE9OQ0FTRU9LIDogaWdub3JlIGNhc2UgaW4gJ2ltcG9ydCcgc3RhdGVtZW50cyAoV2luZG93cykuXG4iCi0iUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cblwKKyJQWVRIT05JT0VOQ09ESU5HOiBFbmNvZGluZ1s6ZXJyb3JzXSB1c2VkIGZvciBzdGRpbi9zdGRvdXQvc3RkZXJyLlxuIgorIlBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuXG5cCiAiOwogc3RhdGljIGNoYXIgKnVzYWdlXzYgPSAiXAotUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCB0aGUgZWZmZWN0IGlzIHRoZSBzYW1lXG5cCi0gICBhcyBzcGVjaWZ5aW5nIHRoZSAtUiBvcHRpb246IGEgcmFuZG9tIHZhbHVlIGlzIHVzZWQgdG8gc2VlZCB0aGUgaGFzaGVzIG9mXG5cCi0gICBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRvIGFuIGludGVnZXJcblwKLSAgIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XSB0byBnZXQgaGFzaCB2YWx1ZXMgd2l0aCBhIHByZWRpY3RhYmxlIHNlZWQuXG5cCitQWVRIT05IQVNIU0VFRDogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gJ3JhbmRvbScsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWRcblwKKyAgIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmVcblwKKyAgIHNldCB0byBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XSB0byBnZXQgaGFzaCB2YWx1ZXMgd2l0aCBhXG5cCisgICBwcmVkaWN0YWJsZSBzZWVkLlxuXAogIjsKIAogc3RhdGljIGludApAQCAtMjI1LDcgKzIyNCw3IEBACiAgICAgaWYgKGltcG9ydGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoaW1wb3J0ZXItPm9iX3R5cGUgPT0gJlB5TnVsbEltcG9ydGVyX1R5cGUpIHsKKyAgICBpZiAoaW1wb3J0ZXIgPT0gUHlfTm9uZSkgewogICAgICAgICBQeV9ERUNSRUYoYXJndjApOwogICAgICAgICBQeV9ERUNSRUYoaW1wb3J0ZXIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0zNDUsMjEgKzM0NCwxMyBAQAogICAgICAgICAgICAgICAgbm90IGludGVycHJldGVyIG9wdGlvbnMuICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgY2FzZSAnRSc6CisgICAgICAgIGlmIChjID09ICdFJykgewogICAgICAgICAgICAgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKys7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnUic6Ci0gICAgICAgICAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcrKzsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIFRoZSB2YXJpYWJsZSBpcyBvbmx5IHRlc3RlZCBmb3IgZXhpc3RlbmNlIGhlcmU7IF9QeVJhbmRvbV9Jbml0IHdpbGwKLSAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KLSAgICBpZiAoIVB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyAmJgotICAgICAgICAocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKLSAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMTsKIAorICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIAogICAgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMoKTsKQEAgLTQ2Niw3ICs0NTcsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnUic6Ci0gICAgICAgICAgICAvKiBBbHJlYWR5IGhhbmRsZWQgYWJvdmUgKi8KKyAgICAgICAgICAgIC8qIElnbm9yZWQgKi8KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFRoaXMgc3BhY2UgcmVzZXJ2ZWQgZm9yIG90aGVyIG9wdGlvbnMgKi8KQEAgLTUzMywxNiArNTI0LDEzIEBACiAgICAgICAgICAgICAvKiBVc2UgdXRmLTggb24gTWFjIE9TIFggKi8KICAgICAgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwKTsKICNlbHNlCi0gICAgICAgICAgICB3Y2hhcl90ICp3Y2hhcjsKLSAgICAgICAgICAgIHNpemVfdCBsZW47Ci0gICAgICAgICAgICB3Y2hhciA9IF9QeV9jaGFyMndjaGFyKHAsICZsZW4pOwotICAgICAgICAgICAgaWYgKHdjaGFyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3Y2hhciwgbGVuKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOworICAgICAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocCwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUodW5pY29kZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgICAgIH0KQEAgLTYxNyw3ICs2MDUsNiBAQAogICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9ORVhFQ1VUQUJMRSIpKSAmJiAqcCAhPSAnXDAnKSB7CiAgICAgICAgIHdjaGFyX3QqIGJ1ZmZlcjsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihwKSArIDE7Ci0gICAgICAgIHNpemVfdCByOwogCiAgICAgICAgIGJ1ZmZlciA9IG1hbGxvYyhsZW4gKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKQEAgLTYyNSwxMSArNjEyLDMzIEBACiAgICAgICAgICAgICAgICAibm90IGVub3VnaCBtZW1vcnkgdG8gY29weSBQWVRIT05FWEVDVVRBQkxFIik7CiAgICAgICAgIH0KIAotICAgICAgICByID0gbWJzdG93Y3MoYnVmZmVyLCBwLCBsZW4pOworICAgICAgICBtYnN0b3djcyhidWZmZXIsIHAsIGxlbik7CiAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGJ1ZmZlcik7CiAgICAgICAgIC8qIGJ1ZmZlciBpcyBub3cgaGFuZGVkIG9mZiAtIGRvIG5vdCBmcmVlICovCiAgICAgfSBlbHNlIHsKKyNpZmRlZiBXSVRIX05FWFRfRlJBTUVXT1JLCisgICAgICAgIGNoYXIqIHB5dmVudl9sYXVuY2hlciA9IGdldGVudigiX19QWVZFTlZfTEFVTkNIRVJfXyIpOworCisgICAgICAgIGlmIChweXZlbnZfbGF1bmNoZXIgJiYgKnB5dmVudl9sYXVuY2hlcikgeworICAgICAgICAgICAgLyogVXNlZCBieSBNYWMvVG9vbHMvcHl0aG9udy5jIHRvIGZvcndhcmQKKyAgICAgICAgICAgICAqIHRoZSBhcmd2MCBvZiB0aGUgc3R1YiBleGVjdXRhYmxlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihweXZlbnZfbGF1bmNoZXIsIE5VTEwpOworCisgICAgICAgICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBfX1BZVkVOVl9MQVVOQ0hFUl9fIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZSh3YnVmKTsKKworICAgICAgICAgICAgLyogRG9uJ3QgZnJlZSB3YnVmLCB0aGUgYXJndW1lbnQgdG8gUHlfU2V0UHJvZ3JhbU5hbWUKKyAgICAgICAgICAgICAqIG11c3QgcmVtYWluIHZhbGlkIHVudGlsIHRoZSBQeV9GaW5hbGl6ZSBpcyBjYWxsZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOworICAgICAgICB9CisjZWxzZQogICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKKyNlbmRpZgogICAgIH0KICNlbHNlCiAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IDE0MmVjYTQuLjNmYTUyZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC01NSwxMSArNTUsNiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgIl9tYXRoLmgiCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoaXMgYXZhaWxhYmxlIHdpdGggWE9QRU5fU09VUkNFX0VYVEVOREVEIGRlZmluZWQgKi8KLWV4dGVybiBkb3VibGUgY29weXNpZ24oZG91YmxlLCBkb3VibGUpOwotI2VuZGlmCi0KIC8qCiAgICBzaW4ocGkqeCksIGdpdmluZyBhY2N1cmF0ZSByZXN1bHRzIGZvciBhbGwgZmluaXRlIHggKGVzcGVjaWFsbHkgeAogICAgaW50ZWdyYWwgb3IgY2xvc2UgdG8gYW4gaW50ZWdlcikuICBUaGlzIGlzIGhlcmUgZm9yIHVzZSBpbiB0aGUKQEAgLTI0NCw3ICsyMzksOCBAQAogICAgIH0KICAgICBpZiAoeCA9PSAwLjApIHsKICAgICAgICAgZXJybm8gPSBFRE9NOwotICAgICAgICByZXR1cm4gMS4wL3g7IC8qIHRnYW1tYSgrLTAuMCkgPSArLWluZiwgZGl2aWRlLWJ5LXplcm8gKi8KKyAgICAgICAgLyogdGdhbW1hKCstMC4wKSA9ICstaW5mLCBkaXZpZGUtYnktemVybyAqLworICAgICAgICByZXR1cm4gY29weXNpZ24oUHlfSFVHRV9WQUwsIHgpOwogICAgIH0KIAogICAgIC8qIGludGVnZXIgYXJndW1lbnRzICovCkBAIC01ODIsNiArNTc4LDYxIEBACiAgICAgfQogfQogCisvKgorICAgbG9nMjogbG9nIHRvIGJhc2UgMi4KKworICAgVXNlcyBhbiBhbGdvcml0aG0gdGhhdCBzaG91bGQ6CisKKyAgICAgKGEpIHByb2R1Y2UgZXhhY3QgcmVzdWx0cyBmb3IgcG93ZXJzIG9mIDIsIGFuZAorICAgICAoYikgZ2l2ZSBhIG1vbm90b25pYyBsb2cyIChmb3IgcG9zaXRpdmUgZmluaXRlIGZsb2F0cyksCisgICAgICAgICBhc3N1bWluZyB0aGF0IHRoZSBzeXN0ZW0gbG9nIGlzIG1vbm90b25pYy4KKyovCisKK3N0YXRpYyBkb3VibGUKK21fbG9nMihkb3VibGUgeCkKK3sKKyAgICBpZiAoIVB5X0lTX0ZJTklURSh4KSkgeworICAgICAgICBpZiAoUHlfSVNfTkFOKHgpKQorICAgICAgICAgICAgcmV0dXJuIHg7IC8qIGxvZzIobmFuKSA9IG5hbiAqLworICAgICAgICBlbHNlIGlmICh4ID4gMC4wKQorICAgICAgICAgICAgcmV0dXJuIHg7IC8qIGxvZzIoK2luZikgPSAraW5mICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXJybm8gPSBFRE9NOworICAgICAgICAgICAgcmV0dXJuIFB5X05BTjsgLyogbG9nMigtaW5mKSA9IG5hbiwgaW52YWxpZC1vcGVyYXRpb24gKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh4ID4gMC4wKSB7CisjaWZkZWYgSEFWRV9MT0cyCisgICAgICAgIHJldHVybiBsb2cyKHgpOworI2Vsc2UKKyAgICAgICAgZG91YmxlIG07CisgICAgICAgIGludCBlOworICAgICAgICBtID0gZnJleHAoeCwgJmUpOworICAgICAgICAvKiBXZSB3YW50IGxvZzIobSAqIDIqKmUpID09IGxvZyhtKSAvIGxvZygyKSArIGUuICBDYXJlIGlzIG5lZWRlZCB3aGVuCisgICAgICAgICAqIHggaXMganVzdCBncmVhdGVyIHRoYW4gMS4wOiBpbiB0aGF0IGNhc2UgZSBpcyAxLCBsb2cobSkgaXMgbmVnYXRpdmUsCisgICAgICAgICAqIGFuZCB3ZSBnZXQgc2lnbmlmaWNhbnQgY2FuY2VsbGF0aW9uIGVycm9yIGZyb20gdGhlIGFkZGl0aW9uIG9mCisgICAgICAgICAqIGxvZyhtKSAvIGxvZygyKSB0byBlLiAgVGhlIHNsaWdodCByZXdyaXRlIG9mIHRoZSBleHByZXNzaW9uIGJlbG93CisgICAgICAgICAqIGF2b2lkcyB0aGlzIHByb2JsZW0uCisgICAgICAgICAqLworICAgICAgICBpZiAoeCA+PSAxLjApIHsKKyAgICAgICAgICAgIHJldHVybiBsb2coMi4wICogbSkgLyBsb2coMi4wKSArIChlIC0gMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbG9nKG0pIC8gbG9nKDIuMCkgKyBlOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoeCA9PSAwLjApIHsKKyAgICAgICAgZXJybm8gPSBFRE9NOworICAgICAgICByZXR1cm4gLVB5X0hVR0VfVkFMOyAvKiBsb2cyKDApID0gLWluZiwgZGl2aWRlLWJ5LXplcm8gKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgcmV0dXJuIFB5X05BTjsgLyogbG9nMigtaW5mKSA9IG5hbiwgaW52YWxpZC1vcGVyYXRpb24gKi8KKyAgICB9Cit9CisKIHN0YXRpYyBkb3VibGUKIG1fbG9nMTAoZG91YmxlIHgpCiB7CkBAIC04MzYsMTAgKzg4NywxMCBAQAogICAgICAgImF0YW5oKHgpXG5cblJldHVybiB0aGUgaHlwZXJib2xpYyBhcmMgdGFuZ2VudCAobWVhc3VyZWQgaW4gcmFkaWFucykgb2YgeC4iKQogCiBzdGF0aWMgUHlPYmplY3QgKiBtYXRoX2NlaWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpudW1iZXIpIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNlaWxfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2NlaWxfXyk7CiAgICAgUHlPYmplY3QgKm1ldGhvZCwgKnJlc3VsdDsKIAotICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fY2VpbF9fIiwgJmNlaWxfc3RyKTsKKyAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICZQeUlkX19fY2VpbF9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTg3NCwxMCArOTI1LDEwIEBACiAgICAgICAiZmFicyh4KVxuXG5SZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBmbG9hdCB4LiIpCiAKIHN0YXRpYyBQeU9iamVjdCAqIG1hdGhfZmxvb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpudW1iZXIpIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZsb29yX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19mbG9vcl9fKTsKICAgICBQeU9iamVjdCAqbWV0aG9kLCAqcmVzdWx0OwogCi0gICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAiX19mbG9vcl9fIiwgJmZsb29yX3N0cik7CisgICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX2Zsb29yX18pOwogICAgIGlmIChtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM4Myw3ICsxNDM0LDcgQEAKICAgICB9CiAKICAgICAvKiB1c2UgbG9va3VwIHRhYmxlIGlmIHggaXMgc21hbGwgKi8KLSAgICBpZiAoeCA8IChsb25nKShzaXplb2YoU21hbGxGYWN0b3JpYWxzKS9zaXplb2YoU21hbGxGYWN0b3JpYWxzWzBdKSkpCisgICAgaWYgKHggPCAobG9uZylQeV9BUlJBWV9MRU5HVEgoU21hbGxGYWN0b3JpYWxzKSkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKFNtYWxsRmFjdG9yaWFsc1t4XSk7CiAKICAgICAvKiBlbHNlIGV4cHJlc3MgaW4gdGhlIGZvcm0gb2RkX3BhcnQgKiAyKip0d29fdmFsdWF0aW9uLCBhbmQgY29tcHV0ZSBhcwpAQCAtMTQxMCw3ICsxNDYxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYXRoX3RydW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqdHJ1bmNfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX3RydW5jX18pOwogICAgIFB5T2JqZWN0ICp0cnVuYywgKnJlc3VsdDsKIAogICAgIGlmIChQeV9UWVBFKG51bWJlciktPnRwX2RpY3QgPT0gTlVMTCkgewpAQCAtMTQxOCw3ICsxNDY5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHRydW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAiX190cnVuY19fIiwgJnRydW5jX3N0cik7CisgICAgdHJ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTE2MjcsNiArMTY3OCwxNSBAQAogSWYgdGhlIGJhc2Ugbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gKGJhc2UgZSkgb2YgeC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK21hdGhfbG9nMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICByZXR1cm4gbG9naGVscGVyKGFyZywgbV9sb2cyLCAibG9nMiIpOworfQorCitQeURvY19TVFJWQVIobWF0aF9sb2cyX2RvYywKKyJsb2cyKHgpXG5cblJldHVybiB0aGUgYmFzZSAyIGxvZ2FyaXRobSBvZiB4LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgogbWF0aF9sb2cxMChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICByZXR1cm4gbG9naGVscGVyKGFyZywgbV9sb2cxMCwgImxvZzEwIik7CkBAIC0xODk4LDYgKzE5NTgsNyBAQAogICAgIHsibG9nIiwgICAgICAgICAgICAgbWF0aF9sb2csICAgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX2xvZ19kb2N9LAogICAgIHsibG9nMXAiLCAgICAgICAgICAgbWF0aF9sb2cxcCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2xvZzFwX2RvY30sCiAgICAgeyJsb2cxMCIsICAgICAgICAgICBtYXRoX2xvZzEwLCAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbG9nMTBfZG9jfSwKKyAgICB7ImxvZzIiLCAgICAgICAgICAgIG1hdGhfbG9nMiwgICAgICBNRVRIX08sICAgICAgICAgbWF0aF9sb2cyX2RvY30sCiAgICAgeyJtb2RmIiwgICAgICAgICAgICBtYXRoX21vZGYsICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbW9kZl9kb2N9LAogICAgIHsicG93IiwgICAgICAgICAgICAgbWF0aF9wb3csICAgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX3Bvd19kb2N9LAogICAgIHsicmFkaWFucyIsICAgICAgICAgbWF0aF9yYWRpYW5zLCAgIE1FVEhfTywgICAgICAgICBtYXRoX3JhZGlhbnNfZG9jfSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWQ1bW9kdWxlLmMgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCmluZGV4IDIwODkzMGQuLmUyNjgxYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWQ1bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwpAQCAtMjEwLDcgKzIxMCw4IEBACiAgICBJbml0aWFsaXplIHRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gc2hhMSAgIFRoZSBoYXNoIHN0YXRlIHlvdSB3aXNoIHRvIGluaXRpYWxpemUKICovCi12b2lkIG1kNV9pbml0KHN0cnVjdCBtZDVfc3RhdGUgKm1kNSkKK3N0YXRpYyB2b2lkCittZDVfaW5pdChzdHJ1Y3QgbWQ1X3N0YXRlICptZDUpCiB7CiAgICAgYXNzZXJ0KG1kNSAhPSBOVUxMKTsKICAgICBtZDUtPnN0YXRlWzBdID0gMHg2NzQ1MjMwMVVMOwpAQCAtMjI3LDggKzIyOCw4IEBACiAgICBAcGFyYW0gaW4gICAgIFRoZSBkYXRhIHRvIGhhc2gKICAgIEBwYXJhbSBpbmxlbiAgVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSAob2N0ZXRzKQogKi8KLXZvaWQgbWQ1X3Byb2Nlc3Moc3RydWN0IG1kNV9zdGF0ZSAqbWQ1LAotICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQorc3RhdGljIHZvaWQKK21kNV9wcm9jZXNzKHN0cnVjdCBtZDVfc3RhdGUgKm1kNSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIFB5X3NzaXplX3QgaW5sZW4pCiB7CiAgICAgUHlfc3NpemVfdCBuOwogCkBAIC0yNDMsNyArMjQ0LDcgQEAKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gTUQ1X0JMT0NLU0laRTsKICAgICAgICAgICAgaW5sZW4gICAgICAgICAgLT0gTUQ1X0JMT0NLU0laRTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKE1ENV9CTE9DS1NJWkUgLSBtZDUtPmN1cmxlbikpOworICAgICAgICAgICBuID0gTUlOKGlubGVuLCAoUHlfc3NpemVfdCkoTUQ1X0JMT0NLU0laRSAtIG1kNS0+Y3VybGVuKSk7CiAgICAgICAgICAgIG1lbWNweShtZDUtPmJ1ZiArIG1kNS0+Y3VybGVuLCBpbiwgKHNpemVfdCluKTsKICAgICAgICAgICAgbWQ1LT5jdXJsZW4gICAgKz0gbjsKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gbjsKQEAgLTI2Miw3ICsyNjMsOCBAQAogICAgQHBhcmFtIHNoYTEgIFRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gb3V0IFtvdXRdIFRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgaGFzaCAoMTYgYnl0ZXMpCiAqLwotdm9pZCBtZDVfZG9uZShzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsIHVuc2lnbmVkIGNoYXIgKm91dCkKK3N0YXRpYyB2b2lkCittZDVfZG9uZShzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsIHVuc2lnbmVkIGNoYXIgKm91dCkKIHsKICAgICBpbnQgaTsKIApAQCAtMzc2LDcgKzM3OCw3IEBACiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbTUQ1X0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBtZDVfc3RhdGUgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtMzg0LDI1ICszODYsMjAgQEAKICAgICBtZDVfZG9uZSgmdGVtcCwgZGlnZXN0KTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgTUQ1X0RJR0VTVFNJWkUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KE1ENV9ESUdFU1RTSVpFICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8TUQ1X0RJR0VTVFNJWkU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvbW1hcG1vZHVsZS5jIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKaW5kZXggMzNjMTQzZS4uZDY1MGVhZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKQEAgLTc4LDggKzc4LDYgQEAKICMgIGRlZmluZSBNQVBfQU5PTllNT1VTIE1BUF9BTk9OCiAjZW5kaWYKIAotc3RhdGljIFB5T2JqZWN0ICptbWFwX21vZHVsZV9lcnJvcjsKLQogdHlwZWRlZiBlbnVtCiB7CiAgICAgQUNDRVNTX0RFRkFVTFQsCkBAIC0yNDAsMTUgKzIzOCwzNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIEJhc2ljYWxseSB0aGUgIm4iIGZvcm1hdCBjb2RlIHdpdGggdGhlIGFiaWxpdHkgdG8gdHVybiBOb25lIGludG8gLTEuICovCitzdGF0aWMgaW50CittbWFwX2NvbnZlcnRfc3NpemVfdChQeU9iamVjdCAqb2JqLCB2b2lkICpyZXN1bHQpIHsKKyAgICBQeV9zc2l6ZV90IGxpbWl0OworICAgIGlmIChvYmogPT0gUHlfTm9uZSkgeworICAgICAgICBsaW1pdCA9IC0xOworICAgIH0KKyAgICBlbHNlIGlmIChQeU51bWJlcl9DaGVjayhvYmopKSB7CisgICAgICAgIGxpbWl0ID0gUHlOdW1iZXJfQXNTc2l6ZV90KG9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChsaW1pdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQsIGdvdCAnJS4yMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKigoUHlfc3NpemVfdCAqKXJlc3VsdCkgPSBsaW1pdDsKKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIG1tYXBfcmVhZF9tZXRob2QobW1hcF9vYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgbnVtX2J5dGVzLCBuOworICAgIFB5X3NzaXplX3QgbnVtX2J5dGVzID0gLTEsIG47CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIENIRUNLX1ZBTElEKE5VTEwpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjpyZWFkIiwgJm51bV9ieXRlcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsIG1tYXBfY29udmVydF9zc2l6ZV90LCAmbnVtX2J5dGVzKSkKICAgICAgICAgcmV0dXJuKE5VTEwpOwogCiAgICAgLyogc2lsZW50bHkgJ2FkanVzdCcgb3V0LW9mLXJhbmdlIHJlcXVlc3RzICovCkBAIC00MzcsNyArNDU3LDcgQEAKICAgICB7CiAgICAgICAgIHN0cnVjdCBzdGF0IGJ1ZjsKICAgICAgICAgaWYgKC0xID09IGZzdGF0KHNlbGYtPmZkLCAmYnVmKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVApAQCAtNTI3LDcgKzU0Nyw3IEBACiAgICAgICAgIHZvaWQgKm5ld21hcDsKIAogICAgICAgICBpZiAoZnRydW5jYXRlKHNlbGYtPmZkLCBzZWxmLT5vZmZzZXQgKyBuZXdfc2l6ZSkgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCkBAIC01NDIsNyArNTYyLDcgQEAKICNlbmRpZgogICAgICAgICBpZiAobmV3bWFwID09ICh2b2lkICopLTEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5kYXRhID0gbmV3bWFwOwpAQCAtNTgzLDcgKzYwMyw3IEBACiAgICAgLyogWFhYIHNlbWFudGljcyBvZiByZXR1cm4gdmFsdWU/ICovCiAgICAgLyogWFhYIGZsYWdzIGZvciBtc3luYz8gKi8KICAgICBpZiAoLTEgPT0gbXN5bmMoc2VsZi0+ZGF0YSArIG9mZnNldCwgc2l6ZSwgTVNfU1lOQykpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKQEAgLTY0NSw5ICs2NjUsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICAvKiBib3VuZHMgY2hlY2sgdGhlIHZhbHVlcyAqLwotICAgICAgICBpZiAoY250IDwgMCB8fCAoY250ICsgZGVzdCkgPCBjbnQgfHwgKGNudCArIHNyYykgPCBjbnQgfHwKLSAgICAgICAgICAgc3JjIDwgMCB8fCBzcmMgPiBzZWxmLT5zaXplIHx8IChzcmMgKyBjbnQpID4gc2VsZi0+c2l6ZSB8fAotICAgICAgICAgICBkZXN0IDwgMCB8fCBkZXN0ID4gc2VsZi0+c2l6ZSB8fCAoZGVzdCArIGNudCkgPiBzZWxmLT5zaXplKSB7CisgICAgICAgIGlmICgoY250ICsgZGVzdCkgPCBjbnQgfHwgKGNudCArIHNyYykgPCBjbnQgfHwKKyAgICAgICAgICAgc3JjID4gc2VsZi0+c2l6ZSB8fCAoc3JjICsgY250KSA+IHNlbGYtPnNpemUgfHwKKyAgICAgICAgICAgZGVzdCA+IHNlbGYtPnNpemUgfHwgKGRlc3QgKyBjbnQpID4gc2VsZi0+c2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgInNvdXJjZSwgZGVzdGluYXRpb24sIG9yIGNvdW50IG91dCBvZiByYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02ODAsNyArNzAwLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtbWFwX19leGl0X19tZXRob2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJjbG9zZSIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX2Nsb3NlLCBOVUxMKTsKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtbWFwX29iamVjdF9tZXRob2RzW10gPSB7CkBAIC05MzcsMTMgKzk1OSwxMyBAQAogfQogCiBzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgbW1hcF9hc19zZXF1ZW5jZSA9IHsKLSAgICAobGVuZnVuYyltbWFwX2xlbmd0aCwgICAgICAgICAgICAgICAgICAgICAgLypzcV9sZW5ndGgqLwotICAgIChiaW5hcnlmdW5jKW1tYXBfY29uY2F0LCAgICAgICAgICAgICAgICAgICAvKnNxX2NvbmNhdCovCi0gICAgKHNzaXplYXJnZnVuYyltbWFwX3JlcGVhdCwgICAgICAgICAgICAgICAgIC8qc3FfcmVwZWF0Ki8KLSAgICAoc3NpemVhcmdmdW5jKW1tYXBfaXRlbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNxX2l0ZW0qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3Ffc2xpY2UqLwotICAgIChzc2l6ZW9iamFyZ3Byb2MpbW1hcF9hc3NfaXRlbSwgICAgICAgICAgICAvKnNxX2Fzc19pdGVtKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNxX2Fzc19zbGljZSovCisgICAgKGxlbmZ1bmMpbW1hcF9sZW5ndGgsICAgICAgICAgICAgLypzcV9sZW5ndGgqLworICAgIChiaW5hcnlmdW5jKW1tYXBfY29uY2F0LCAgICAgICAgIC8qc3FfY29uY2F0Ki8KKyAgICAoc3NpemVhcmdmdW5jKW1tYXBfcmVwZWF0LCAgICAgICAvKnNxX3JlcGVhdCovCisgICAgKHNzaXplYXJnZnVuYyltbWFwX2l0ZW0sICAgICAgICAgLypzcV9pdGVtKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNxX3NsaWNlKi8KKyAgICAoc3NpemVvYmphcmdwcm9jKW1tYXBfYXNzX2l0ZW0sICAvKnNxX2Fzc19pdGVtKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNxX2Fzc19zbGljZSovCiB9OwogCiBzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtbWFwX2FzX21hcHBpbmcgPSB7CkBAIC0xMDA1LDcgKzEwMjcsNyBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KICAgICAmbW1hcF9hc19idWZmZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qdHBfZmxhZ3MqLwogICAgIG1tYXBfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0xMDIxLDEwICsxMDQzLDEwIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIG5ld19tbWFwX29iamVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIApAQCAtMTA3NSw4ICsxMDk3LDggQEAKICAgICBpbnQgZGV2emVybyA9IC0xOwogICAgIGludCBhY2Nlc3MgPSAoaW50KUFDQ0VTU19ERUZBVUxUOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmaWxlbm8iLCAibGVuZ3RoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZ3MiLCAicHJvdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyIsICJvZmZzZXQiLCBOVUxMfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZ3MiLCAicHJvdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyIsICJvZmZzZXQiLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlPfGlpaSIgX1B5X1BBUlNFX09GRl9ULCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmQsICZtYXBfc2l6ZV9vYmosICZmbGFncywgJnByb3QsCkBAIC0xMTg2LDcgKzEyMDgsNyBAQAogICAgICAgICBmZCA9IGRldnplcm8gPSBvcGVuKCIvZGV2L3plcm8iLCBPX1JEV1IpOwogICAgICAgICBpZiAoZGV2emVybyA9PSAtMSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG1fb2JqKTsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMTk0LDcgKzEyMTYsNyBAQAogICAgICAgICBtX29iai0+ZmQgPSBkdXAoZmQpOwogICAgICAgICBpZiAobV9vYmotPmZkID09IC0xKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobV9vYmopOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIxMCw3ICsxMjMyLDcgQEAKICAgICBpZiAobV9vYmotPmRhdGEgPT0gKGNoYXIgKiktMSkgewogICAgICAgICBtX29iai0+ZGF0YSA9IE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihtX29iaik7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG1fb2JqLT5hY2Nlc3MgPSAoYWNjZXNzX21vZGUpYWNjZXNzOwpAQCAtMTI0Myw4ICsxMjY1LDggQEAKICAgICBpbnQgYWNjZXNzID0gKGFjY2Vzc19tb2RlKUFDQ0VTU19ERUZBVUxUOwogICAgIERXT1JEIGZsUHJvdGVjdCwgZHdEZXNpcmVkQWNjZXNzOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyAiZmlsZW5vIiwgImxlbmd0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YWduYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyIsICJvZmZzZXQiLCBOVUxMIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YWduYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyIsICJvZmZzZXQiLCBOVUxMIH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpT3x6aUwiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsZW5vLCAmbWFwX3NpemVfb2JqLApAQCAtMTI5MSwxMiArMTMxMywxMiBAQAogICAgIGlmIChmaWxlbm8gIT0gLTEgJiYgZmlsZW5vICE9IDApIHsKICAgICAgICAgLyogRW5zdXJlIHRoYXQgZmlsZW5vIGlzIHdpdGhpbiB0aGUgQ1JUJ3MgdmFsaWQgcmFuZ2UgKi8KICAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmaWxlbm8pID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBmaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKTsKICAgICAgICAgaWYgKGZoPT0oSEFORExFKS0xKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgLyogV2luOXggYXBwZWFycyB0byBuZWVkIHVzIHNlZWtlZCB0byB6ZXJvICovCkBAIC0xNDU2LDExICsxNDc4LDcgQEAKICAgICBkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtb2R1bGUpOwogICAgIGlmICghZGljdCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbW1hcF9tb2R1bGVfZXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oIm1tYXAuZXJyb3IiLAotICAgICAgICBQeUV4Y19FbnZpcm9ubWVudEVycm9yICwgTlVMTCk7Ci0gICAgaWYgKG1tYXBfbW9kdWxlX2Vycm9yID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJlcnJvciIsIG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiZXJyb3IiLCBQeUV4Y19PU0Vycm9yKTsKICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAibW1hcCIsIChQeU9iamVjdCopICZtbWFwX29iamVjdF90eXBlKTsKICNpZmRlZiBQUk9UX0VYRUMKICAgICBzZXRpbnQoZGljdCwgIlBST1RfRVhFQyIsIFBST1RfRVhFQyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL25pc21vZHVsZS5jIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwppbmRleCBhODFjYThjLi4wYWY0OTVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL25pc21vZHVsZS5jCisrKyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKQEAgLTQxMSw3ICs0MTEsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKG1hcHMgPSBtYXBzOyBtYXBzOyBtYXBzID0gbWFwcy0+bmV4dCkgeworICAgIGZvciAoOyBtYXBzOyBtYXBzID0gbWFwcy0+bmV4dCkgewogICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobWFwcy0+bWFwKTsKICAgICAgICAgaWYgKCFzdHIgfHwgUHlMaXN0X0FwcGVuZChsaXN0LCBzdHIpIDwgMCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vcGVyYXRvci5jIGIvTW9kdWxlcy9vcGVyYXRvci5jCmluZGV4IDg2NmVjM2EuLjEyZmRhZDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvb3BlcmF0b3IuYworKysgYi9Nb2R1bGVzL29wZXJhdG9yLmMKQEAgLTE1OSw2ICsxNTksMTQzIEBACiAjdW5kZWYgc3BhbTIKICN1bmRlZiBzcGFtMW8KICN1bmRlZiBzcGFtMW8KKworLyogY29tcGFyZV9kaWdlc3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIHRpbWluZyBzYWZlIGNvbXBhcmUKKyAqCisgKiBSZXR1cm5zIDEgb2YgdGhlIHN0cmluZ3MgYXJlIGVxdWFsLgorICogSW4gY2FzZSBvZiBsZW4oYSkgIT0gbGVuKGIpIHRoZSBmdW5jdGlvbiB0cmllcyB0byBrZWVwIHRoZSB0aW1pbmcKKyAqIGRlcGVuZGVudCBvbiB0aGUgbGVuZ3RoIG9mIGIuIENQVSBjYWNoZSBsb2NhbGx5IG1heSBzdGlsbCBhbHRlciB0aW1pbmcKKyAqIGEgYml0LgorICovCitzdGF0aWMgaW50CitfdHNjbXAoY29uc3QgdW5zaWduZWQgY2hhciAqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqYiwKKyAgICAgICAgUHlfc3NpemVfdCBsZW5fYSwgUHlfc3NpemVfdCBsZW5fYikKK3sKKyAgICAvKiBUaGUgdm9sYXRpbGUgdHlwZSBkZWNsYXJhdGlvbnMgbWFrZSBzdXJlIHRoYXQgdGhlIGNvbXBpbGVyIGhhcyBubworICAgICAqIGNoYW5jZSB0byBvcHRpbWl6ZSBhbmQgZm9sZCB0aGUgY29kZSBpbiBhbnkgd2F5IHRoYXQgbWF5IGNoYW5nZQorICAgICAqIHRoZSB0aW1pbmcuCisgICAgICovCisgICAgdm9sYXRpbGUgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgdm9sYXRpbGUgY29uc3QgdW5zaWduZWQgY2hhciAqbGVmdDsKKyAgICB2b2xhdGlsZSBjb25zdCB1bnNpZ25lZCBjaGFyICpyaWdodDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgdW5zaWduZWQgY2hhciByZXN1bHQ7CisKKyAgICAvKiBsb29wIGNvdW50IGRlcGVuZHMgb24gbGVuZ3RoIG9mIGIgKi8KKyAgICBsZW5ndGggPSBsZW5fYjsKKyAgICBsZWZ0ID0gTlVMTDsKKyAgICByaWdodCA9IGI7CisKKyAgICAvKiBkb24ndCB1c2UgZWxzZSBoZXJlIHRvIGtlZXAgdGhlIGFtb3VudCBvZiBDUFUgaW5zdHJ1Y3Rpb25zIGNvbnN0YW50LAorICAgICAqIHZvbGF0aWxlIGZvcmNlcyByZS1ldmFsdWF0aW9uCisgICAgICogICovCisgICAgaWYgKGxlbl9hID09IGxlbmd0aCkgeworICAgICAgICBsZWZ0ID0gKigodm9sYXRpbGUgY29uc3QgdW5zaWduZWQgY2hhcioqKSZhKTsKKyAgICAgICAgcmVzdWx0ID0gMDsKKyAgICB9CisgICAgaWYgKGxlbl9hICE9IGxlbmd0aCkgeworICAgICAgICBsZWZ0ID0gYjsKKyAgICAgICAgcmVzdWx0ID0gMTsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHJlc3VsdCB8PSAqbGVmdCsrIF4gKnJpZ2h0Kys7CisgICAgfQorCisgICAgcmV0dXJuIChyZXN1bHQgPT0gMCk7Cit9CisKK1B5RG9jX1NUUlZBUihjb21wYXJlX2RpZ2VzdF9fZG9jX18sCisiY29tcGFyZV9kaWdlc3QoYSwgYikgLT4gYm9vbFxuIgorIlxuIgorIlJldHVybiAnYSA9PSBiJy4gIFRoaXMgZnVuY3Rpb24gdXNlcyBhbiBhcHByb2FjaCBkZXNpZ25lZCB0byBwcmV2ZW50XG4iCisidGltaW5nIGFuYWx5c2lzLCBtYWtpbmcgaXQgYXBwcm9wcmlhdGUgZm9yIGNyeXB0b2dyYXBoeS5cbiIKKyJhIGFuZCBiIG11c3QgYm90aCBiZSBvZiB0aGUgc2FtZSB0eXBlOiBlaXRoZXIgc3RyIChBU0NJSSBvbmx5KSxcbiIKKyJvciBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBidWZmZXIgcHJvdG9jb2wgKGUuZy4gYnl0ZXMpLlxuIgorIlxuIgorIk5vdGU6IElmIGEgYW5kIGIgYXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCBvciBpZiBhbiBlcnJvciBvY2N1cnMsXG4iCisiYSB0aW1pbmcgYXR0YWNrIGNvdWxkIHRoZW9yZXRpY2FsbHkgcmV2ZWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuIgorInR5cGVzIGFuZCBsZW5ndGhzIG9mIGEgYW5kIGItLWJ1dCBub3QgdGhlaXIgdmFsdWVzLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK2NvbXBhcmVfZGlnZXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYSwgKmI7CisgICAgaW50IHJjOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpjb21wYXJlX2RpZ2VzdCIsICZhLCAmYikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogQVNDSUkgdW5pY29kZSBzdHJpbmcgKi8KKyAgICBpZihQeVVuaWNvZGVfQ2hlY2soYSkgJiYgUHlVbmljb2RlX0NoZWNrKGIpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYSkgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKGIpID09IC0xKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShhKSB8fCAhUHlVbmljb2RlX0lTX0FTQ0lJKGIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wYXJpbmcgc3RyaW5ncyB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHN1cHBvcnRlZCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByYyA9IF90c2NtcChQeVVuaWNvZGVfREFUQShhKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoYiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChiKSk7CisgICAgfQorICAgIC8qIGZhbGxiYWNrIHRvIGJ1ZmZlciBpbnRlcmZhY2UgZm9yIGJ5dGVzLCBieXRlc2FycmF5IGFuZCBvdGhlciAqLworICAgIGVsc2UgeworICAgICAgICBQeV9idWZmZXIgdmlld19hOworICAgICAgICBQeV9idWZmZXIgdmlld19iOworCisgICAgICAgIGlmICgoUHlPYmplY3RfQ2hlY2tCdWZmZXIoYSkgPT0gMCkgJiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoYikgPT0gMCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZXMocykgb3IgY29tYmluYXRpb24gb2YgdHlwZXM6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgYW5kICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGEpLT50cF9uYW1lLCBQeV9UWVBFKGIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhLCAmdmlld19hLCBQeUJVRl9TSU1QTEUpID09IC0xKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlld19hLm5kaW0gPiAxKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1ZmZlciBtdXN0IGJlIHNpbmdsZSBkaW1lbnNpb24iKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYiwgJnZpZXdfYiwgUHlCVUZfU0lNUExFKSA9PSAtMSkgeworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19hKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICh2aWV3X2IubmRpbSA+IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVmZmVyIG11c3QgYmUgc2luZ2xlIGRpbWVuc2lvbiIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19hKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gX3RzY21wKChjb25zdCB1bnNpZ25lZCBjaGFyKil2aWV3X2EuYnVmLAorICAgICAgICAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciopdmlld19iLmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgdmlld19hLmxlbiwKKyAgICAgICAgICAgICAgICAgICAgdmlld19iLmxlbik7CisKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19hKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19iKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJjKTsKK30KKworLyogb3BlcmF0b3IgbWV0aG9kcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiAjZGVmaW5lIHNwYW0xKE9QLERPQykgeyNPUCwgT1AsIE1FVEhfVkFSQVJHUywgUHlEb2NfU1RSKERPQyl9LAogI2RlZmluZSBzcGFtMihPUCxBTFRPUCxET0MpIHsjT1AsIG9wXyMjT1AsIE1FVEhfVkFSQVJHUywgUHlEb2NfU1RSKERPQyl9LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7I0FMVE9QLCBvcF8jI09QLCBNRVRIX1ZBUkFSR1MsIFB5RG9jX1NUUihET0MpfSwKQEAgLTIyNyw2ICszNjQsOCBAQAogc3BhbTIoZ3QsX19ndF9fLCAiZ3QoYSwgYikgLS0gU2FtZSBhcyBhPmIuIikKIHNwYW0yKGdlLF9fZ2VfXywgImdlKGEsIGIpIC0tIFNhbWUgYXMgYT49Yi4iKQogCisgICAgeyJfY29tcGFyZV9kaWdlc3QiLCAoUHlDRnVuY3Rpb24pY29tcGFyZV9kaWdlc3QsIE1FVEhfVkFSQVJHUywKKyAgICAgY29tcGFyZV9kaWdlc3RfX2RvY19ffSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogCiB9OwpAQCAtNDAyLDcgKzU0MSw4IEBACiAgICAgZm9yIChpZHggPSAwOyBpZHggPCBuYXR0cnM7ICsraWR4KSB7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpZHgpOwogICAgICAgICBQeV9zc2l6ZV90IGl0ZW1fbGVuOwotICAgICAgICBQeV9VTklDT0RFICppdGVtX2J1ZmZlcjsKKyAgICAgICAgdm9pZCAqZGF0YTsKKyAgICAgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAgICAgICAgIGludCBkb3RfY291bnQ7CiAKICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKQEAgLTQxMSwxMyArNTUxLDE4IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpdGVtX2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRShpdGVtKTsKLSAgICAgICAgaXRlbV9idWZmZXIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpdGVtKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpdGVtKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaXRlbV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGl0ZW0pOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaXRlbSk7CiAKICAgICAgICAgLyogY2hlY2sgd2hldGhlcmUgdGhlIHN0cmluZyBpcyBkb3R0ZWQgKi8KICAgICAgICAgZG90X2NvdW50ID0gMDsKICAgICAgICAgZm9yIChjaGFyX2lkeCA9IDA7IGNoYXJfaWR4IDwgaXRlbV9sZW47ICsrY2hhcl9pZHgpIHsKLSAgICAgICAgICAgIGlmIChpdGVtX2J1ZmZlcltjaGFyX2lkeF0gPT0gKFB5X1VOSUNPREUpJy4nKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNoYXJfaWR4KSA9PSAnLicpCiAgICAgICAgICAgICAgICAgKytkb3RfY291bnQ7CiAgICAgICAgIH0KIApAQCAtNDM4LDEyICs1ODMsMTIgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZm9yICg7IGRvdF9jb3VudCA+IDA7IC0tZG90X2NvdW50KSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGl0ZW1fYnVmZmVyW3VuaWJ1ZmZfdGlsbF0gIT0gKFB5X1VOSUNPREUpJy4nKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHVuaWJ1ZmZfdGlsbCkgIT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgICsrdW5pYnVmZl90aWxsOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhdHRyX2NoYWluX2l0ZW0gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fYnVmZmVyICsgdW5pYnVmZl9mcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlidWZmX3RpbGwgLSB1bmlidWZmX2Zyb20pOworICAgICAgICAgICAgICAgIGF0dHJfY2hhaW5faXRlbSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pYnVmZl9mcm9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlidWZmX3RpbGwpOwogICAgICAgICAgICAgICAgIGlmIChhdHRyX2NoYWluX2l0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cl9jaGFpbik7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKQEAgLTQ1Niw5ICs2MDEsOCBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKiBub3cgYWRkIHRoZSBsYXN0IGRvdGxlc3MgbmFtZSAqLwotICAgICAgICAgICAgYXR0cl9jaGFpbl9pdGVtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fYnVmZmVyICsgdW5pYnVmZl9mcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1fbGVuIC0gdW5pYnVmZl9mcm9tKTsKKyAgICAgICAgICAgIGF0dHJfY2hhaW5faXRlbSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pYnVmZl9mcm9tLCBpdGVtX2xlbik7CiAgICAgICAgICAgICBpZiAoYXR0cl9jaGFpbl9pdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cl9jaGFpbik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCmluZGV4IGIzOGNlNTIuLmExN2E2NDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYworKysgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKQEAgLTIxNCw2ICsyMTQsMjEgQEAKICAqIEhlbHBlciBmdW5jdGlvbnMKICAqLwogCisvKiBDaGVjayBpZiBhIGdpdmVuIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCAoaS5lLiBoYXNuJ3QgYmVlbiBjbG9zZWQpLgorICogSWYgdHJ1ZSwgcmV0dXJuIDEuIE90aGVyd2lzZSwgcmFpc2UgVmFsdWVFcnJvciBhbmQgcmV0dXJuIDAuCisgKi8KK3N0YXRpYyBpbnQgX2lzX2ZkX3ZhbGlkKGludCBmZCkKK3sKKyAgICAvKiB0aGUgRkQgaXMgc2V0IHRvIC0xIGluIG9zc19jbG9zZSgpL29zc19taXhlcl9jbG9zZSgpICovCisgICAgaWYgKGZkID49IDApIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiT3BlcmF0aW9uIG9uIGNsb3NlZCBPU1MgZGV2aWNlLiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIC8qIF9kb19pb2N0bF8xKCkgaXMgYSBwcml2YXRlIGhlbHBlciBmdW5jdGlvbiB1c2VkIGZvciB0aGUgT1NTIGlvY3RscyAtLQogICAgU05EQ1RMX0RTUF97U0VURk1ULENIQU5ORUxTLFNQRUVEfSAtLSB0aGF0IHRoYXQgYXJlIGNhbGxlZCBmcm9tIEMKICAgIGxpa2UgdGhpczoKQEAgLTMwMSw2ICszMTYsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19ub25ibG9jayhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogSG1tbTogaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgcG9zc2libGUgdG8gcmV0dXJuIHRvIGJsb2NraW5nCiAgICAgICAgbW9kZSBvbmNlIHdlJ3JlIGluIG5vbi1ibG9ja2luZyBtb2RlISAqLwogICAgIGlmIChpb2N0bChzZWxmLT5mZCwgU05EQ1RMX0RTUF9OT05CTE9DSywgTlVMTCkgPT0gLTEpCkBAIC0zMTIsNiArMzMwLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfc2V0Zm10KG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xKHNlbGYtPmZkLCBhcmdzLCAic2V0Zm10IiwgU05EQ1RMX0RTUF9TRVRGTVQpOwogfQogCkBAIC0zMTksNiArMzQwLDEwIEBACiBvc3NfZ2V0Zm10cyhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKICAgICBpbnQgbWFzazsKKworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoaW9jdGwoc2VsZi0+ZmQsIFNORENUTF9EU1BfR0VURk1UUywgJm1hc2spID09IC0xKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWFzayk7CkBAIC0zMjcsMzAgKzM1Miw0NSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19jaGFubmVscyhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMShzZWxmLT5mZCwgYXJncywgImNoYW5uZWxzIiwgU05EQ1RMX0RTUF9DSEFOTkVMUyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfc3BlZWQob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzEoc2VsZi0+ZmQsIGFyZ3MsICJzcGVlZCIsIFNORENUTF9EU1BfU1BFRUQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3N5bmMob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzAoc2VsZi0+ZmQsIGFyZ3MsICJzeW5jIiwgU05EQ1RMX0RTUF9TWU5DKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19yZXNldChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMChzZWxmLT5mZCwgYXJncywgInJlc2V0IiwgU05EQ1RMX0RTUF9SRVNFVCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfcG9zdChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMChzZWxmLT5mZCwgYXJncywgInBvc3QiLCBTTkRDVExfRFNQX1BPU1QpOwogfQogCkBAIC0zNjUsNiArNDA1LDkgQEAKICAgICBjaGFyICpjcDsKICAgICBQeU9iamVjdCAqcnY7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJ2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKQEAgLTM5Miw2ICs0MzUsOSBAQAogICAgIGNoYXIgKmNwOwogICAgIGludCBydiwgc2l6ZTsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOndyaXRlIiwgJmNwLCAmc2l6ZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDIzLDYgKzQ2OSw5IEBACiAgICAgICAgbW9kZSwgdGhlIGJlaGF2aW91ciBvZiB3cml0ZSgpIGFuZCB3cml0ZWFsbCgpIGZyb20gUHl0aG9uIGlzCiAgICAgICAgaW5kaXN0aW5ndWlzaGFibGUuICovCiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDgyLDEwICs1MzEsMTIgQEAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICogCitzdGF0aWMgUHlPYmplY3QgKgogb3NzX2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7Ci0gICAgUHlPYmplY3QgKnJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgImNsb3NlIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgUHlPYmplY3QgKnJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgIGlmICghcmV0KQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYocmV0KTsKQEAgLTQ5NSw2ICs1NDYsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19maWxlbm8ob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmQpOwogfQogCkBAIC01MDksNiArNTYzLDkgQEAKICAgICBpbnQgZm10LCBjaGFubmVscywgcmF0ZTsKICAgICBQeU9iamVjdCAqIHJ2OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIHR1cGxlIChmbXQsIGNoYW5uZWxzLCByYXRlKSAqLwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpfGk6c2V0cGFyYW1ldGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3YW50ZWRfZm10LCAmd2FudGVkX2NoYW5uZWxzLCAmd2FudGVkX3JhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpY3QpKQpAQCAtNTk5LDYgKzY1Niw5IEBACiAgICAgYXVkaW9fYnVmX2luZm8gYWk7CiAgICAgaW50IG5jaGFubmVscz0wLCBzc2l6ZT0wOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChfc3NpemUoc2VsZiwgJm5jaGFubmVscywgJnNzaXplKSA8IDAgfHwgIW5jaGFubmVscyB8fCAhc3NpemUpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYxOCw2ICs2NzgsOSBAQAogICAgIGF1ZGlvX2J1Zl9pbmZvIGFpOwogICAgIGludCBuY2hhbm5lbHM9MCwgc3NpemU9MDsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoX3NzaXplKHNlbGYsICZuY2hhbm5lbHMsICZzc2l6ZSkgPCAwIHx8ICFuY2hhbm5lbHMgfHwgIXNzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MzgsNiArNzAxLDkgQEAKICAgICBhdWRpb19idWZfaW5mbyBhaTsKICAgICBpbnQgbmNoYW5uZWxzPTAsIHNzaXplPTA7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKF9zc2l6ZShzZWxmLCAmbmNoYW5uZWxzLCAmc3NpemUpIDwgMCB8fCAhbmNoYW5uZWxzIHx8ICFzc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjU1LDYgKzcyMSw5IEBACiAgICAgY291bnRfaW5mbyBpbmZvOwogICAgIGludCByZXE7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHNlbGYtPm1vZGUgPT0gT19SRE9OTFkpCiAgICAgICAgIHJlcSA9IFNORENUTF9EU1BfR0VUSVBUUjsKICAgICBlbHNlCkBAIC02ODUsNiArNzU0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfbWl4ZXJfZmlsZW5vKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkKTsKIH0KIApAQCAtNjkzLDYgKzc2NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX2NvbnRyb2xzKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAiY29udHJvbHMiLAogICAgICAgICBTT1VORF9NSVhFUl9SRUFEX0RFVk1BU0spOwogfQpAQCAtNzAwLDYgKzc3NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX3N0ZXJlb2NvbnRyb2xzKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAic3RlcmVvY29udHJvbHMiLAogICAgICAgICBTT1VORF9NSVhFUl9SRUFEX1NURVJFT0RFVlMpOwogfQpAQCAtNzA3LDYgKzc4NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX3JlY2NvbnRyb2xzKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAicmVjY29udHJvbHMiLAogICAgICAgICBTT1VORF9NSVhFUl9SRUFEX1JFQ01BU0spOwogfQpAQCAtNzE2LDYgKzc5Nyw5IEBACiB7CiAgICAgaW50IGNoYW5uZWwsIHZvbHVtZTsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBDYW4ndCB1c2UgX2RvX2lvY3RsXzEgYmVjYXVzZSBvZiBlbmNvZGVkIGFyZyB0aGluZ3kuICovCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldCIsICZjaGFubmVsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03MzYsNiArODIwLDkgQEAKIHsKICAgICBpbnQgY2hhbm5lbCwgdm9sdW1lLCBsZWZ0Vm9sLCByaWdodFZvbDsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBDYW4ndCB1c2UgX2RvX2lvY3RsXzEgYmVjYXVzZSBvZiBlbmNvZGVkIGFyZyB0aGluZ3kuICovCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpKGlpKTpzZXQiLCAmY2hhbm5lbCwgJmxlZnRWb2wsICZyaWdodFZvbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzYxLDYgKzg0OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX2dldF9yZWNzcmMob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzFfaW50ZXJuYWwoc2VsZi0+ZmQsIGFyZ3MsICJnZXRfcmVjc3JjIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9SRUNTUkMpOwogfQpAQCAtNzY4LDYgKzg1OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX3NldF9yZWNzcmMob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzEoc2VsZi0+ZmQsIGFyZ3MsICJzZXRfcmVjc3JjIiwKICAgICAgICAgU09VTkRfTUlYRVJfV1JJVEVfUkVDU1JDKTsKIH0KQEAgLTk3MSw4ICsxMDY0LDggQEAKICAgICBpbnQgbnVtX2NvbnRyb2xzOwogICAgIGludCBpOwogCi0gICAgbnVtX2NvbnRyb2xzID0gc2l6ZW9mKGNvbnRyb2xfbGFiZWxzKSAvIHNpemVvZihjb250cm9sX2xhYmVsc1swXSk7Ci0gICAgYXNzZXJ0KG51bV9jb250cm9scyA9PSBzaXplb2YoY29udHJvbF9uYW1lcykgLyBzaXplb2YoY29udHJvbF9uYW1lc1swXSkpOworICAgIG51bV9jb250cm9scyA9IFB5X0FSUkFZX0xFTkdUSChjb250cm9sX2xhYmVscyk7CisgICAgYXNzZXJ0KG51bV9jb250cm9scyA9PSBQeV9BUlJBWV9MRU5HVEgoY29udHJvbF9uYW1lcykpOwogCiAgICAgbGFiZWxzID0gUHlMaXN0X05ldyhudW1fY29udHJvbHMpOwogICAgIG5hbWVzID0gUHlMaXN0X05ldyhudW1fY29udHJvbHMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggYjg3MzJkYy4uYjQ2MDJmNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC0zMDAsMjUgKzMwMCwyNSBAQAogCiAgICAgLyogQ29udmVydCByZXR1cm4gdmFsdWUgdG8gYSBCb29sZWFuICovCiAgICAgc3dpdGNoIChvcCkgewotICAgIGNhc2UgUHlfRVE6CisgICAgICBjYXNlIFB5X0VROgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA9PSAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9ORToKKyAgICAgIGNhc2UgUHlfTkU6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0ICE9IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X0xFOgorICAgICAgY2FzZSBQeV9MRToKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPD0gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfR0U6CisgICAgICBjYXNlIFB5X0dFOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA+PSAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9MVDoKKyAgICAgIGNhc2UgUHlfTFQ6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0IDwgMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfR1Q6CisgICAgICBjYXNlIFB5X0dUOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA+IDApOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgorICAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzgyLDQwICszODIsMjggQEAKIHN0YXRpYyBQeU9iamVjdCoKIHBhcnNlcl9zdDJ0dXBsZShQeVNUX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbGluZV9vcHRpb24gPSAwOwotICAgIFB5T2JqZWN0ICpjb2xfb3B0aW9uID0gMDsKKyAgICBpbnQgbGluZV9pbmZvID0gMDsKKyAgICBpbnQgY29sX2luZm8gPSAwOwogICAgIFB5T2JqZWN0ICpyZXMgPSAwOwogICAgIGludCBvazsKIAogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzdCIsICJsaW5lX2luZm8iLCAiY29sX2luZm8iLCBOVUxMfTsKIAogICAgIGlmIChzZWxmID09IE5VTEwgfHwgUHlNb2R1bGVfQ2hlY2soc2VsZikpIHsKLSAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIXxPTzpzdDJ0dXBsZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlTVF9UeXBlLCAmc2VsZiwgJmxpbmVfb3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8cHA6c3QydHVwbGUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xfaW5mbyk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T086dG90dXBsZSIsICZrZXl3b3Jkc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVfb3B0aW9uLCAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHBwOnRvdHVwbGUiLCAma2V5d29yZHNbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX2luZm8sICZjb2xfaW5mbyk7CiAgICAgaWYgKG9rICE9IDApIHsKLSAgICAgICAgaW50IGxpbmVubyA9IDA7Ci0gICAgICAgIGludCBjb2xfb2Zmc2V0ID0gMDsKLSAgICAgICAgaWYgKGxpbmVfb3B0aW9uICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGxpbmVubyA9IFB5T2JqZWN0X0lzVHJ1ZShsaW5lX29wdGlvbik7Ci0gICAgICAgICAgICBpZiAobGluZW5vIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29sX29wdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjb2xfb2Zmc2V0ID0gUHlPYmplY3RfSXNUcnVlKGNvbF9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGNvbF9vZmZzZXQgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIC8qCiAgICAgICAgICAqICBDb252ZXJ0IFNUIGludG8gYSB0dXBsZSByZXByZXNlbnRhdGlvbi4gIFVzZSBHdWlkbydzIGZ1bmN0aW9uLAogICAgICAgICAgKiAgc2luY2UgaXQncyBrbm93biB0byB3b3JrIGFscmVhZHkuCiAgICAgICAgICAqLwogICAgICAgICByZXMgPSBub2RlMnR1cGxlKCgoUHlTVF9PYmplY3QqKXNlbGYpLT5zdF9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfTmV3LCBQeVR1cGxlX1NldEl0ZW0sIGxpbmVubywgY29sX29mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9OZXcsIFB5VHVwbGVfU2V0SXRlbSwgbGluZV9pbmZvLCBjb2xfaW5mbyk7CiAgICAgfQogICAgIHJldHVybiAocmVzKTsKIH0KQEAgLTQzMCwzOSArNDE4LDI3IEBACiBzdGF0aWMgUHlPYmplY3QqCiBwYXJzZXJfc3QybGlzdChQeVNUX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbGluZV9vcHRpb24gPSAwOwotICAgIFB5T2JqZWN0ICpjb2xfb3B0aW9uID0gMDsKKyAgICBpbnQgbGluZV9pbmZvID0gMDsKKyAgICBpbnQgY29sX2luZm8gPSAwOwogICAgIFB5T2JqZWN0ICpyZXMgPSAwOwogICAgIGludCBvazsKIAogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzdCIsICJsaW5lX2luZm8iLCAiY29sX2luZm8iLCBOVUxMfTsKIAogICAgIGlmIChzZWxmID09IE5VTEwgfHwgUHlNb2R1bGVfQ2hlY2soc2VsZikpCi0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8T086c3QybGlzdCIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlTVF9UeXBlLCAmc2VsZiwgJmxpbmVfb3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8cHA6c3QybGlzdCIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlTVF9UeXBlLCAmc2VsZiwgJmxpbmVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbF9pbmZvKTsKICAgICBlbHNlCi0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9POnRvbGlzdCIsICZrZXl3b3Jkc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVfb3B0aW9uLCAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHBwOnRvbGlzdCIsICZrZXl3b3Jkc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVfaW5mbywgJmNvbF9pbmZvKTsKICAgICBpZiAob2spIHsKLSAgICAgICAgaW50IGxpbmVubyA9IDA7Ci0gICAgICAgIGludCBjb2xfb2Zmc2V0ID0gMDsKLSAgICAgICAgaWYgKGxpbmVfb3B0aW9uICE9IDApIHsKLSAgICAgICAgICAgIGxpbmVubyA9IFB5T2JqZWN0X0lzVHJ1ZShsaW5lX29wdGlvbik7Ci0gICAgICAgICAgICBpZiAobGluZW5vIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29sX29wdGlvbiAhPSAwKSB7Ci0gICAgICAgICAgICBjb2xfb2Zmc2V0ID0gUHlPYmplY3RfSXNUcnVlKGNvbF9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGNvbF9vZmZzZXQgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIC8qCiAgICAgICAgICAqICBDb252ZXJ0IFNUIGludG8gYSB0dXBsZSByZXByZXNlbnRhdGlvbi4gIFVzZSBHdWlkbydzIGZ1bmN0aW9uLAogICAgICAgICAgKiAgc2luY2UgaXQncyBrbm93biB0byB3b3JrIGFscmVhZHkuCiAgICAgICAgICAqLwogICAgICAgICByZXMgPSBub2RlMnR1cGxlKHNlbGYtPnN0X25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X05ldywgUHlMaXN0X1NldEl0ZW0sIGxpbmVubywgY29sX29mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X05ldywgUHlMaXN0X1NldEl0ZW0sIGxpbmVfaW5mbywgY29sX2luZm8pOwogICAgIH0KICAgICByZXR1cm4gKHJlcyk7CiB9CkBAIC02MDAsOCArNTc2LDEwIEBACiAgICAgICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgICAgICgoUHlTVF9PYmplY3QgKilyZXMpLT5zdF9mbGFncy5jZl9mbGFncyA9IGZsYWdzICYgUHlDRl9NQVNLOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeVBhcnNlcl9TZXRFcnJvcigmZXJyKTsKKyAgICAgICAgfQorICAgICAgICBQeVBhcnNlcl9DbGVhckVycm9yKCZlcnIpOwogICAgIH0KICAgICByZXR1cm4gKHJlcyk7CiB9CkBAIC05OTUsNiArOTczLDcgQEAKIFZBTElEQVRFUih0ZXN0bGlzdF9jb21wKTsgICAgICAgVkFMSURBVEVSKHlpZWxkX2V4cHIpOwogVkFMSURBVEVSKG9yX3Rlc3QpOwogVkFMSURBVEVSKHRlc3Rfbm9jb25kKTsgICAgICAgICBWQUxJREFURVIobGFtYmRlZl9ub2NvbmQpOworVkFMSURBVEVSKHlpZWxkX2FyZyk7CiAKICN1bmRlZiBWQUxJREFURVIKIApAQCAtMTY1NSwyMiArMTYzNCw0OSBAQAogfQogCiAKLS8qIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3Rlc3RsaXN0XQorLyogeWllbGRfZXhwcjogJ3lpZWxkJyBbeWllbGRfYXJnXQogICovCiBzdGF0aWMgaW50CiB2YWxpZGF0ZV95aWVsZF9leHByKG5vZGUgKnRyZWUpCiB7CiAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX2V4cHIpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInlpZWxkIikpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAxKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7CisgICAgaWYgKG5jaCA8IDEgfHwgbmNoID4gMikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9leHByKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAieWllbGQiKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG5jaCA9PSAyKSB7CisgICAgICAgIGlmICghdmFsaWRhdGVfeWllbGRfYXJnKENISUxEKHRyZWUsIDEpKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKIH0KIAorLyogeWllbGRfYXJnOiAnZnJvbScgdGVzdCB8IHRlc3RsaXN0CisgKi8KK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3lpZWxkX2FyZyhub2RlICp0cmVlKQoreworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9hcmcpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzd2l0Y2ggKG5jaCkgeworICAgICAgY2FzZSAxOgorICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZnJvbSIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CiAKIC8qIHlpZWxkX3N0bXQ6IHlpZWxkX2V4cHIKICAqLwpAQCAtMjE2NSwxNiArMjE3MSwxNiBAQAogICAgICAgICAgKi8KICAgICAgICAgdHJlZSA9IENISUxEKHRyZWUsIDApOwogICAgICAgICBzd2l0Y2ggKFRZUEUodHJlZSkpIHsKLSAgICAgICAgICAgIGNhc2UgTEVTUzoKLSAgICAgICAgICAgIGNhc2UgR1JFQVRFUjoKLSAgICAgICAgICAgIGNhc2UgRVFFUVVBTDoKLSAgICAgICAgICAgIGNhc2UgRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIExFU1NFUVVBTDoKLSAgICAgICAgICAgIGNhc2UgR1JFQVRFUkVRVUFMOgotICAgICAgICAgICAgY2FzZSBOT1RFUVVBTDoKKyAgICAgICAgICBjYXNlIExFU1M6CisgICAgICAgICAgY2FzZSBHUkVBVEVSOgorICAgICAgICAgIGNhc2UgRVFFUVVBTDoKKyAgICAgICAgICBjYXNlIEVRVUFMOgorICAgICAgICAgIGNhc2UgTEVTU0VRVUFMOgorICAgICAgICAgIGNhc2UgR1JFQVRFUkVRVUFMOgorICAgICAgICAgIGNhc2UgTk9URVFVQUw6CiAgICAgICAgICAgICAgIHJlcyA9IDE7CiAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBOQU1FOgorICAgICAgICAgIGNhc2UgTkFNRToKICAgICAgICAgICAgICAgcmVzID0gKChzdHJjbXAoU1RSKHRyZWUpLCAiaW4iKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgfHwgKHN0cmNtcChTVFIodHJlZSksICJpcyIpID09IDApKTsKICAgICAgICAgICAgICAgaWYgKCFyZXMpIHsKQEAgLTI3MTksOSArMjcyNSw5IEBACiB7CiAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKICAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFyZ3VtZW50KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotCisgICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpKTsKKyAgICBpZiAocmVzKSAKKyAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7CiAgICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQogICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSk7CiAgICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpCkBAIC0zMzU2LDEwICszMzYyLDEzIEBACiAgICAgY29weXJlZyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soImNvcHlyZWciKTsKICAgICBpZiAoY29weXJlZyAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpmdW5jLCAqcGlja2xlcjsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocGlja2xlKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc2VxdWVuY2Uyc3QpOworICAgICAgICBfUHlfSURFTlRJRklFUihfcGlja2xlcik7CiAKLSAgICAgICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY29weXJlZywgInBpY2tsZSIpOwotICAgICAgICBwaWNrbGVfY29uc3RydWN0b3IgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZHVsZSwgInNlcXVlbmNlMnN0Iik7Ci0gICAgICAgIHBpY2tsZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZHVsZSwgIl9waWNrbGVyIik7CisgICAgICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvcHlyZWcsICZQeUlkX3BpY2tsZSk7CisgICAgICAgIHBpY2tsZV9jb25zdHJ1Y3RvciA9IF9QeU9iamVjdF9HZXRBdHRySWQobW9kdWxlLCAmUHlJZF9zZXF1ZW5jZTJzdCk7CisgICAgICAgIHBpY2tsZXIgPSBfUHlPYmplY3RfR2V0QXR0cklkKG1vZHVsZSwgJlB5SWRfX3BpY2tsZXIpOwogICAgICAgICBQeV9YSU5DUkVGKHBpY2tsZV9jb25zdHJ1Y3Rvcik7CiAgICAgICAgIGlmICgoZnVuYyAhPSBOVUxMKSAmJiAocGlja2xlX2NvbnN0cnVjdG9yICE9IE5VTEwpCiAgICAgICAgICAgICAmJiAocGlja2xlciAhPSBOVUxMKSkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCmluZGV4IDlmNTc2NzMuLmQ0OTgyZjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAogI2lmIGRlZmluZWQoX19WTVMpCisjICAgIGVycm9yICJQRVAgMTE6IFZNUyBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCiAjICAgIGluY2x1ZGUgPHVuaXhpby5oPgogI2VuZGlmIC8qIGRlZmluZWQoX19WTVMpICovCiAKQEAgLTQzLDYgKzQ0LDcgQEAKIAogCiAjaWYgZGVmaW5lZChQWU9TX09TMikKKyNlcnJvciAiUEVQIDExOiBPUy8yIGlzIG5vdyB1bnN1cHBvcnRlZCwgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNCIKICNkZWZpbmUgIElOQ0xfRE9TCiAjZGVmaW5lICBJTkNMX0RPU0VSUk9SUwogI2RlZmluZSAgSU5DTF9ET1NQUk9DRVNTCkBAIC01Nyw2ICs1OSwxMCBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NZU19VSU9fSAorI2luY2x1ZGUgPHN5cy91aW8uaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmIC8qIEhBVkVfU1lTX1RZUEVTX0ggKi8KQEAgLTkzLDYgKzk5LDQ4IEBACiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TWVNfU0VOREZJTEVfSAorI2luY2x1ZGUgPHN5cy9zZW5kZmlsZS5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX0gKKyNpbmNsdWRlIDxzY2hlZC5oPgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChDUFVfQUxMT0MpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSkKKyN1bmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TWVNfWEFUVFJfSCkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisjZGVmaW5lIFVTRV9YQVRUUlMKKyNlbmRpZgorCisjaWZkZWYgVVNFX1hBVFRSUworI2luY2x1ZGUgPHN5cy94YXR0ci5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRExGQ05fSAorI2luY2x1ZGUgPGRsZmNuLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyMgIGRlZmluZSBURVJNU0laRV9VU0VfQ09OSU8KKyNlbGlmIGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkKKyMgIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgorIyAgaWYgZGVmaW5lZChIQVZFX1RFUk1JT1NfSCkKKyMgICAgaW5jbHVkZSA8dGVybWlvcy5oPgorIyAgZW5kaWYKKyMgIGlmIGRlZmluZWQoVElPQ0dXSU5TWikKKyMgICAgZGVmaW5lIFRFUk1TSVpFX1VTRV9JT0NUTAorIyAgZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisKIC8qIFZhcmlvdXMgY29tcGlsZXJzIGhhdmUgb25seSBjZXJ0YWluIHBvc2l4IGZ1bmN0aW9ucyAqLwogLyogWFhYIEdvc2ggSSB3aXNoIHRoZXNlIHdlcmUgYWxsIG1vdmVkIGludG8gcHljb25maWcuaCAqLwogI2lmIGRlZmluZWQoUFlDQ19WQUNQUCkgJiYgZGVmaW5lZChQWU9TX09TMikKQEAgLTE1NSw2ICsyMDMsOSBAQAogI2VuZGlmICAvKiAhIF9fV0FUQ09NQ19fIHx8IF9fUU5YX18gKi8KICNlbmRpZiAvKiAhIF9fSUJNQ19fICovCiAKKworCisKICNpZm5kZWYgX01TQ19WRVIKIAogI2lmIGRlZmluZWQoX19zZ2kpJiZfQ09NUElMRVJfVkVSU0lPTj49NzAwCkBAIC0zMjgsMTAgKzM3OSwxMiBAQAogI3VuZGVmIFNUUlVDVF9TVEFUCiAjaWYgZGVmaW5lZChNU19XSU42NCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQogIyAgICAgICBkZWZpbmUgU1RBVCB3aW4zMl9zdGF0CisjICAgICAgIGRlZmluZSBMU1RBVCB3aW4zMl9sc3RhdAogIyAgICAgICBkZWZpbmUgRlNUQVQgd2luMzJfZnN0YXQKICMgICAgICAgZGVmaW5lIFNUUlVDVF9TVEFUIHN0cnVjdCB3aW4zMl9zdGF0CiAjZWxzZQogIyAgICAgICBkZWZpbmUgU1RBVCBzdGF0CisjICAgICAgIGRlZmluZSBMU1RBVCBsc3RhdAogIyAgICAgICBkZWZpbmUgRlNUQVQgZnN0YXQKICMgICAgICAgZGVmaW5lIFNUUlVDVF9TVEFUIHN0cnVjdCBzdGF0CiAjZW5kaWYKQEAgLTM0Nyw2ICs0MDAsNDAyIEBACiAjZW5kaWYKICNlbmRpZgogCisKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgaW50Cit3aW4zMl93YXJuX2J5dGVzX2FwaSgpCit7CisgICAgcmV0dXJuIFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICJUaGUgV2luZG93cyBieXRlcyBBUEkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgIgorICAgICAgICAidXNlIFVuaWNvZGUgZmlsZW5hbWVzIGluc3RlYWQiLAorICAgICAgICAxKTsKK30KKyNlbmRpZgorCisKKyNpZmRlZiBBVF9GRENXRAorLyoKKyAqIFdoeSB0aGUgKGludCkgY2FzdD8gIFNvbGFyaXMgMTAgZGVmaW5lcyBBVF9GRENXRCBhcyAweGZmZDE5NTUzICgtMzA0MTk2NSk7CisgKiB3aXRob3V0IHRoZSBpbnQgY2FzdCwgdGhlIHZhbHVlIGdldHMgaW50ZXJwcmV0ZWQgYXMgdWludCAoNDI5MTkyNTMzMSksCisgKiB3aGljaCBkb2Vzbid0IHBsYXkgbmljZWx5IHdpdGggYWxsIHRoZSBpbml0aWFsaXplciBsaW5lcyBpbiB0aGlzIGZpbGUgdGhhdAorICogbG9vayBsaWtlIHRoaXM6CisgKiAgICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAqLworI2RlZmluZSBERUZBVUxUX0RJUl9GRCAoaW50KUFUX0ZEQ1dECisjZWxzZQorI2RlZmluZSBERUZBVUxUX0RJUl9GRCAoLTEwMCkKKyNlbmRpZgorCitzdGF0aWMgaW50CitfZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCBpbnQgKnAsIGludCBkZWZhdWx0X3ZhbHVlKSB7CisgICAgbG9uZyBsb25nX3ZhbHVlOworICAgIGlmIChvID09IFB5X05vbmUpIHsKKyAgICAgICAgKnAgPSBkZWZhdWx0X3ZhbHVlOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sobykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQiICk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBsb25nX3ZhbHVlID0gUHlMb25nX0FzTG9uZyhvKTsKKyAgICBpZiAobG9uZ192YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobG9uZ192YWx1ZSA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmVkIGludGVnZXIgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChsb25nX3ZhbHVlIDwgSU5UX01JTikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaWduZWQgaW50ZWdlciBpcyBsZXNzIHRoYW4gbWluaW11bSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKnAgPSAoaW50KWxvbmdfdmFsdWU7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2Rpcl9mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApIHsKKyAgICByZXR1cm4gX2ZkX2NvbnZlcnRlcihvLCAoaW50ICopcCwgREVGQVVMVF9ESVJfRkQpOworfQorCisKKworLyoKKyAqIEEgUHlBcmdfUGFyc2VUdXBsZSAiY29udmVydGVyIiBmdW5jdGlvbgorICogdGhhdCBoYW5kbGVzIGZpbGVzeXN0ZW0gcGF0aHMgaW4gdGhlIG1hbm5lcgorICogcHJlZmVycmVkIGJ5IHRoZSBvcyBtb2R1bGUuCisgKgorICogcGF0aF9jb252ZXJ0ZXIgYWNjZXB0cyAoVW5pY29kZSkgc3RyaW5ncyBhbmQgdGhlaXIKKyAqIHN1YmNsYXNzZXMsIGFuZCBieXRlcyBhbmQgdGhlaXIgc3ViY2xhc3Nlcy4gIFdoYXQKKyAqIGl0IGRvZXMgd2l0aCB0aGUgYXJndW1lbnQgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm06CisgKgorICogICAqIE9uIFdpbmRvd3MsIGlmIHdlIGdldCBhIChVbmljb2RlKSBzdHJpbmcgd2UKKyAqICAgICBleHRyYWN0IHRoZSB3Y2hhcl90ICogYW5kIHJldHVybiBpdDsgaWYgd2UgZ2V0CisgKiAgICAgYnl0ZXMgd2UgZXh0cmFjdCB0aGUgY2hhciAqIGFuZCByZXR1cm4gdGhhdC4KKyAqCisgKiAgICogT24gYWxsIG90aGVyIHBsYXRmb3Jtcywgc3RyaW5ncyBhcmUgZW5jb2RlZAorICogICAgIHRvIGJ5dGVzIHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgdGhlbiB3ZQorICogICAgIGV4dHJhY3QgdGhlIGNoYXIgKiBmcm9tIHRoZSBieXRlcyBvYmplY3QgYW5kCisgKiAgICAgcmV0dXJuIHRoYXQuCisgKgorICogcGF0aF9jb252ZXJ0ZXIgYWxzbyBvcHRpb25hbGx5IGFjY2VwdHMgc2lnbmVkCisgKiBpbnRlZ2VycyAocmVwcmVzZW50aW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9ycykgaW5zdGVhZAorICogb2YgcGF0aCBzdHJpbmdzLgorICoKKyAqIElucHV0IGZpZWxkczoKKyAqICAgcGF0aC5udWxsYWJsZQorICogICAgIElmIG5vbnplcm8sIHRoZSBwYXRoIGlzIHBlcm1pdHRlZCB0byBiZSBOb25lLgorICogICBwYXRoLmFsbG93X2ZkCisgKiAgICAgSWYgbm9uemVybywgdGhlIHBhdGggaXMgcGVybWl0dGVkIHRvIGJlIGEgZmlsZSBoYW5kbGUKKyAqICAgICAoYSBzaWduZWQgaW50KSBpbnN0ZWFkIG9mIGEgc3RyaW5nLgorICogICBwYXRoLmZ1bmN0aW9uX25hbWUKKyAqICAgICBJZiBub24tTlVMTCwgcGF0aF9jb252ZXJ0ZXIgd2lsbCB1c2UgdGhhdCBhcyB0aGUgbmFtZQorICogICAgIG9mIHRoZSBmdW5jdGlvbiBpbiBlcnJvciBtZXNzYWdlcy4KKyAqICAgICAoSWYgcGF0aC5hcmd1bWVudF9uYW1lIGlzIE5VTEwgaXQgb21pdHMgdGhlIGZ1bmN0aW9uIG5hbWUuKQorICogICBwYXRoLmFyZ3VtZW50X25hbWUKKyAqICAgICBJZiBub24tTlVMTCwgcGF0aF9jb252ZXJ0ZXIgd2lsbCB1c2UgdGhhdCBhcyB0aGUgbmFtZQorICogICAgIG9mIHRoZSBwYXJhbWV0ZXIgaW4gZXJyb3IgbWVzc2FnZXMuCisgKiAgICAgKElmIHBhdGguYXJndW1lbnRfbmFtZSBpcyBOVUxMIGl0IHVzZXMgInBhdGgiLikKKyAqCisgKiBPdXRwdXQgZmllbGRzOgorICogICBwYXRoLndpZGUKKyAqICAgICBQb2ludHMgdG8gdGhlIHBhdGggaWYgaXQgd2FzIGV4cHJlc3NlZCBhcyBVbmljb2RlCisgKiAgICAgYW5kIHdhcyBub3QgZW5jb2RlZC4gIChPbmx5IHVzZWQgb24gV2luZG93cy4pCisgKiAgIHBhdGgubmFycm93CisgKiAgICAgUG9pbnRzIHRvIHRoZSBwYXRoIGlmIGl0IHdhcyBleHByZXNzZWQgYXMgYnl0ZXMsCisgKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLgorICogICBwYXRoLmZkCisgKiAgICAgQ29udGFpbnMgYSBmaWxlIGRlc2NyaXB0b3IgaWYgcGF0aC5hY2NlcHRfZmQgd2FzIHRydWUKKyAqICAgICBhbmQgdGhlIGNhbGxlciBwcm92aWRlZCBhIHNpZ25lZCBpbnRlZ2VyIGluc3RlYWQgb2YgYW55CisgKiAgICAgc29ydCBvZiBzdHJpbmcuCisgKgorICogICAgIFdBUk5JTkc6IGlmIHlvdXIgInBhdGgiIHBhcmFtZXRlciBpcyBvcHRpb25hbCwgYW5kIGlzCisgKiAgICAgdW5zcGVjaWZpZWQsIHBhdGhfY29udmVydGVyIHdpbGwgbmV2ZXIgZ2V0IGNhbGxlZC4KKyAqICAgICBTbyBpZiB5b3Ugc2V0IGFsbG93X2ZkLCB5b3UgKk1VU1QqIGluaXRpYWxpemUgcGF0aC5mZCA9IC0xCisgKiAgICAgeW91cnNlbGYhCisgKiAgIHBhdGgubGVuZ3RoCisgKiAgICAgVGhlIGxlbmd0aCBvZiB0aGUgcGF0aCBpbiBjaGFyYWN0ZXJzLCBpZiBzcGVjaWZpZWQgYXMKKyAqICAgICBhIHN0cmluZy4KKyAqICAgcGF0aC5vYmplY3QKKyAqICAgICBUaGUgb3JpZ2luYWwgb2JqZWN0IHBhc3NlZCBpbi4KKyAqICAgcGF0aC5jbGVhbnVwCisgKiAgICAgRm9yIGludGVybmFsIHVzZSBvbmx5LiAgTWF5IHBvaW50IHRvIGEgdGVtcG9yYXJ5IG9iamVjdC4KKyAqICAgICAoUGF5IG5vIGF0dGVudGlvbiB0byB0aGUgbWFuIGJlaGluZCB0aGUgY3VydGFpbi4pCisgKgorICogICBBdCBtb3N0IG9uZSBvZiBwYXRoLndpZGUgb3IgcGF0aC5uYXJyb3cgd2lsbCBiZSBub24tTlVMTC4KKyAqICAgSWYgcGF0aCB3YXMgTm9uZSBhbmQgcGF0aC5udWxsYWJsZSB3YXMgc2V0LAorICogICAgIG9yIGlmIHBhdGggd2FzIGFuIGludGVnZXIgYW5kIHBhdGguYWxsb3dfZmQgd2FzIHNldCwKKyAqICAgICBib3RoIHBhdGgud2lkZSBhbmQgcGF0aC5uYXJyb3cgd2lsbCBiZSBOVUxMCisgKiAgICAgYW5kIHBhdGgubGVuZ3RoIHdpbGwgYmUgMC4KKyAqCisgKiAgIHBhdGhfY29udmVydGVyIHRha2VzIGNhcmUgdG8gbm90IHdyaXRlIHRvIHRoZSBwYXRoX3QKKyAqICAgdW5sZXNzIGl0J3Mgc3VjY2Vzc2Z1bC4gIEhvd2V2ZXIgaXQgbXVzdCByZXNldCB0aGUKKyAqICAgImNsZWFudXAiIGZpZWxkIGVhY2ggdGltZSBpdCdzIGNhbGxlZC4KKyAqCisgKiBVc2UgYXMgZm9sbG93czoKKyAqICAgICAgcGF0aF90IHBhdGg7CisgKiAgICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAqICAgICAgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyYiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpOworICogICAgICAvLyAuLi4gdXNlIHZhbHVlcyBmcm9tIHBhdGggLi4uCisgKiAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgKgorICogKE5vdGUgdGhhdCBpZiBQeUFyZ19QYXJzZSBmYWlscyB5b3UgZG9uJ3QgbmVlZCB0byBjYWxsCisgKiBwYXRoX2NsZWFudXAoKS4gIEhvd2V2ZXIgaXQgaXMgc2FmZSB0byBkbyBzby4pCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjaGFyICpmdW5jdGlvbl9uYW1lOworICAgIGNoYXIgKmFyZ3VtZW50X25hbWU7CisgICAgaW50IG51bGxhYmxlOworICAgIGludCBhbGxvd19mZDsKKyAgICB3Y2hhcl90ICp3aWRlOworICAgIGNoYXIgKm5hcnJvdzsKKyAgICBpbnQgZmQ7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeU9iamVjdCAqY2xlYW51cDsKK30gcGF0aF90OworCitzdGF0aWMgdm9pZAorcGF0aF9jbGVhbnVwKHBhdGhfdCAqcGF0aCkgeworICAgIGlmIChwYXRoLT5jbGVhbnVwKSB7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoLT5jbGVhbnVwKTsKKyAgICAgICAgcGF0aC0+Y2xlYW51cCA9IE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgaW50CitwYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkgeworICAgIHBhdGhfdCAqcGF0aCA9IChwYXRoX3QgKilwOworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgY2hhciAqbmFycm93OworCisjZGVmaW5lIEZPUk1BVF9FWENFUFRJT04oZXhjLCBmbXQpIFwKKyAgICBQeUVycl9Gb3JtYXQoZXhjLCAiJXMlcyIgZm10LCBcCisgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsIFwKKyAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/ICI6ICIgICAgICAgICAgICAgICAgOiAiIiwgXAorICAgICAgICBwYXRoLT5hcmd1bWVudF9uYW1lID8gcGF0aC0+YXJndW1lbnRfbmFtZSA6ICJwYXRoIikKKworICAgIC8qIFB5X0NMRUFOVVBfU1VQUE9SVEVEIHN1cHBvcnQgKi8KKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHBhdGhfY2xlYW51cChwYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogZW5zdXJlIGl0J3MgYWx3YXlzIHNhZmUgdG8gY2FsbCBwYXRoX2NsZWFudXAoKSAqLworICAgIHBhdGgtPmNsZWFudXAgPSBOVUxMOworCisgICAgaWYgKG8gPT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIXBhdGgtPm51bGxhYmxlKSB7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNwZWNpZnkgTm9uZSBmb3IgJXMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOworICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworICAgICAgICBwYXRoLT5sZW5ndGggPSAwOworICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICBwYXRoLT5mZCA9IC0xOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21PYmplY3Qobyk7CisgICAgaWYgKHVuaWNvZGUpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHdjaGFyX3QgKndpZGU7CisgICAgICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKKyAgICAgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmljb2RlKTsKKyAgICAgICAgaWYgKCF3aWRlKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGgtPndpZGUgPSB3aWRlOworICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworICAgICAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CisgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgIHBhdGgtPmZkID0gLTE7CisgICAgICAgIHBhdGgtPmNsZWFudXAgPSB1bmljb2RlOworICAgICAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisjZWxzZQorICAgICAgICBpbnQgY29udmVydGVkID0gUHlVbmljb2RlX0ZTQ29udmVydGVyKHVuaWNvZGUsICZieXRlcyk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWQpCisgICAgICAgICAgICBieXRlcyA9IE5VTEw7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KG8pOworICAgICAgICBpZiAoIWJ5dGVzKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgaWYgKHBhdGgtPmFsbG93X2ZkKSB7CisgICAgICAgICAgICAgICAgaW50IGZkOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogbm90ZTogX2ZkX2NvbnZlcnRlciBhbHdheXMgcGVybWl0cyBOb25lLgorICAgICAgICAgICAgICAgICAqIGJ1dCB3ZSd2ZSBhbHJlYWR5IGRvbmUgb3VyIE5vbmUgY2hlY2suCisgICAgICAgICAgICAgICAgICogc28gbyBjYW5ub3QgYmUgTm9uZSBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBfZmRfY29udmVydGVyKG8sICZmZCwgLTEpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPmZkID0gZmQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFieXRlcykgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwgImlsbGVnYWwgdHlwZSBmb3IgJXMgcGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIGxlbmd0aCA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAobGVuZ3RoID4gTUFYX1BBVEgpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICBuYXJyb3cgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisgICAgaWYgKGxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIGluICVzIik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHBhdGgtPndpZGUgPSBOVUxMOworICAgIHBhdGgtPm5hcnJvdyA9IG5hcnJvdzsKKyAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CisgICAgcGF0aC0+b2JqZWN0ID0gbzsKKyAgICBwYXRoLT5mZCA9IC0xOworICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CisKK3N0YXRpYyB2b2lkCithcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihjaGFyICpmdW5jdGlvbl9uYW1lLCBjaGFyICphcmd1bWVudF9uYW1lKSB7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICIlcyVzJXMgdW5hdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIsCisgICAgICAgIChmdW5jdGlvbl9uYW1lICE9IE5VTEwpID8gZnVuY3Rpb25fbmFtZSA6ICIiLAorICAgICAgICAoZnVuY3Rpb25fbmFtZSAhPSBOVUxMKSA/ICI6ICI6ICIiLAorICAgICAgICBhcmd1bWVudF9uYW1lKTsKK30KKworc3RhdGljIGludAorZGlyX2ZkX3VuYXZhaWxhYmxlKFB5T2JqZWN0ICpvLCB2b2lkICpwKSB7CisgICAgaW50ICpkaXJfZmQgPSAoaW50ICopcDsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gX2ZkX2NvbnZlcnRlcihvLCBkaXJfZmQsIERFRkFVTFRfRElSX0ZEKTsKKyAgICBpZiAoIXJldHVybl92YWx1ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCpkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJldHVybiAxOworICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKE5VTEwsICJkaXJfZmQiKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZmRfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCkgeworICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAiZmQiKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CisgICAgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAiZm9sbG93X3N5bWxpbmtzIik7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3BhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkgeworICAgIGlmICghcGF0aC0+bmFycm93ICYmICFwYXRoLT53aWRlICYmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGRpcl9mZCB3aXRob3V0IG1hdGNoaW5nIHBhdGgiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsIGludCBmZCkgeworICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoZmQgIT0gLTEpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGJvdGggZGlyX2ZkIGFuZCBmZCIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKKyAgICBpZiAoKGZkID4gMCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBBIGhlbHBlciB1c2VkIGJ5IGEgbnVtYmVyIG9mIFBPU0lYLW9ubHkgZnVuY3Rpb25zICovCisjaWZuZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBpbnQKK19wYXJzZV9vZmZfdChQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQoreworI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCisgICAgKigob2ZmX3QqKWFkZHIpID0gUHlMb25nX0FzTG9uZyhhcmcpOworI2Vsc2UKKyAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOworI2VuZGlmCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKICNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAKIC8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKICAqIHZhbGlkIGFuZCB0aHJvdyBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCkBAIC00OTgsNiArOTQ3LDcgQEAKIAogICAgIHJldHVybiBUUlVFOwogfQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiBSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBPU0lYIGVudmlyb25tZW50IHRhYmxlICovCkBAIC02NTMsNyArMTEwMyw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcl91bmljb2RlKGNoYXIqIGZ1bmN0aW9uLCBQeV9VTklDT0RFKiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yX3VuaWNvZGUoY2hhciogZnVuY3Rpb24sIHdjaGFyX3QqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCAtIHNlZSB3aW4zMl9lcnJvciBmb3IgY29tbWVudHMgb24gJ2Z1bmN0aW9uJyAqLwogICAgIGVycm5vID0gR2V0TGFzdEVycm9yKCk7CkBAIC02NjMsMjUgKzExMTMsNDggQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycm5vKTsKIH0KIAotc3RhdGljIGludAotY29udmVydF90b191bmljb2RlKFB5T2JqZWN0ICoqcGFyYW0pCitzdGF0aWMgUHlPYmplY3QgKgord2luMzJfZXJyb3Jfb2JqZWN0KGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCiB7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KCpwYXJhbSkpCi0gICAgICAgIFB5X0lOQ1JFRigqcGFyYW0pOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjaygqcGFyYW0pKQotICAgICAgICAvKiBGb3IgYSBVbmljb2RlIHN1YnR5cGUgdGhhdCdzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LAotICAgICAgICAgICByZXR1cm4gYSB0cnVlIFVuaWNvZGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0YS4gKi8KLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKCpwYXJhbSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKnBhcmFtKSk7CisgICAgLyogWFhYIC0gc2VlIHdpbjMyX2Vycm9yIGZvciBjb21tZW50cyBvbiAnZnVuY3Rpb24nICovCisgICAgZXJybm8gPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBpZiAoZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICAgICAgICAgICAgICBlcnJubywKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KCpwYXJhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0Iik7Ci0gICAgcmV0dXJuICgqcGFyYW0pICE9IE5VTEw7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnJubyk7CiB9CiAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKKy8qCisgKiBTb21lIGZ1bmN0aW9ucyByZXR1cm4gV2luMzIgZXJyb3JzLCBvdGhlcnMgb25seSBldmVyIHVzZSBwb3NpeF9lcnJvcgorICogKHRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhjZXB0aW9ucykKKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK3BhdGhfcG9zaXhfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoKQoreworICAgIGlmIChwYXRoLT5uYXJyb3cpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgtPm5hcnJvdyk7CisgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgtPm5hcnJvdykKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKGZ1bmN0aW9uX25hbWUsIHBhdGgtPm5hcnJvdyk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKGZ1bmN0aW9uX25hbWUsIHBhdGgtPndpZGUpOworICAgIHJldHVybiB3aW4zMl9lcnJvcihmdW5jdGlvbl9uYW1lLCBOVUxMKTsKKyNlbHNlCisgICAgcmV0dXJuIHBhdGhfcG9zaXhfZXJyb3IoZnVuY3Rpb25fbmFtZSwgcGF0aCk7CisjZW5kaWYKK30KKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICBIZWxwZXIgRnVuY3Rpb24gdG8gVHJpbSBhbmQgRm9ybWF0IE9TLzIgTWVzc2FnZXMKQEAgLTgwMCwzMiArMTI3Myw2IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF8yc3RyKFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICBjaGFyICpmb3JtYXQsCi0gICAgICAgICAgIGludCAoKmZ1bmMpKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSkKLXsKLSAgICBQeU9iamVjdCAqb3BhdGgxID0gTlVMTCwgKm9wYXRoMiA9IE5VTEw7Ci0gICAgY2hhciAqcGF0aDEsICpwYXRoMjsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgyKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcGF0aDEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMSk7Ci0gICAgcGF0aDIgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMik7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9ICgqZnVuYykocGF0aDEsIHBhdGgyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aDEpOwotICAgIFB5X0RFQ1JFRihvcGF0aDIpOwotICAgIGlmIChyZXMgIT0gMCkKLSAgICAgICAgLyogWFhYIGhvdyB0byByZXBvcnQgYm90aCBwYXRoMSBhbmQgcGF0aDI/Pz8gKi8KLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIFB5T2JqZWN0KgpAQCAtODM0LDIyICsxMjgxLDI4IEBACiAgICAgICAgICAgIGNoYXIqIHdmb3JtYXQsIEJPT0wgKF9fc3RkY2FsbCAqZnVuY1cpKExQV1NUUikpCiB7CiAgICAgUHlPYmplY3QgKnVuaTsKLSAgICBjaGFyICphbnNpOworICAgIGNvbnN0IGNoYXIgKmFuc2k7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCisgICAgeworICAgICAgICB3Y2hhcl90ICp3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gZnVuY1coUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY1cod3N0cik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoZnVuYywgUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoZnVuYywgdW5pKTsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CisgICAgUHlFcnJfQ2xlYXIoKTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsICZhbnNpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBmdW5jQShhbnNpKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMTA2NCwxOCArMTUxNywxOSBAQAogCiAvKiBHcmFiIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCiBzdGF0aWMgaW50IGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgPSAwOwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSkoSEFORExFLCBMUFNUUiwgRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKShIQU5ETEUsIExQV1NUUiwgRFdPUkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgaW50CiBjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBKShIQU5ETEUsIExQU1RSLCBEV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKKwogICAgIC8qIG9ubHkgcmVjaGVjayAqLwogICAgIGlmICghaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSkKICAgICB7Ci0gICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKKyAgICAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgICAgICooRkFSUFJPQyopJlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSIpOwogICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLApAQCAtMTM4Miw3ICsxODM2LDEwIEBACiAgICAgSEFORExFIGg7CiAgICAgaW50IHR5cGU7CiAKLSAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmlsZV9udW1iZXIpKQorICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgZWxzZQorICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CiAKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xNDI2LDcgKzE4ODMsNyBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKLSJzdGF0X3Jlc3VsdDogUmVzdWx0IGZyb20gc3RhdCBvciBsc3RhdC5cblxuXAorInN0YXRfcmVzdWx0OiBSZXN1bHQgZnJvbSBzdGF0LCBmc3RhdCwgb3IgbHN0YXQuXG5cblwKIFRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAogICAobW9kZSwgaW5vLCBkZXYsIG5saW5rLCB1aWQsIGdpZCwgc2l6ZSwgYXRpbWUsIG10aW1lLCBjdGltZSlcblwKIG9yIHZpYSB0aGUgYXR0cmlidXRlcyBzdF9tb2RlLCBzdF9pbm8sIHN0X2Rldiwgc3RfbmxpbmssIHN0X3VpZCwgYW5kIHNvIG9uLlxuXApAQCAtMTQ1MSw2ICsxOTA4LDkgQEAKICAgICB7InN0X2F0aW1lIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyJ9LAogICAgIHsic3RfbXRpbWUiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIn0sCiAgICAgeyJzdF9jdGltZSIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UifSwKKyAgICB7InN0X2F0aW1lX25zIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyBpbiBuYW5vc2Vjb25kcyJ9LAorICAgIHsic3RfbXRpbWVfbnMiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIGluIG5hbm9zZWNvbmRzIn0sCisgICAgeyJzdF9jdGltZV9ucyIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UgaW4gbmFub3NlY29uZHMifSwKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKICAgICB7InN0X2Jsa3NpemUiLCAiYmxvY2tzaXplIGZvciBmaWxlc3lzdGVtIEkvTyJ9LAogI2VuZGlmCkBAIC0xNDczLDkgKzE5MzMsOSBAQAogfTsKIAogI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQotI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxMworI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxNgogI2Vsc2UKLSNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTIKKyNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTUKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MKQEAgLTE1NDQsOSArMjAwNCwzOSBAQAogICAgIDEwCiB9OwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHdhaXRpZF9yZXN1bHRfX2RvY19fLAorIndhaXRpZF9yZXN1bHQ6IFJlc3VsdCBmcm9tIHdhaXRpZC5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgIChzaV9waWQsIHNpX3VpZCwgc2lfc2lnbm8sIHNpX3N0YXR1cywgc2lfY29kZSksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc2lfcGlkLCBzaV91aWQsIGFuZCBzbyBvbi5cblwKK1xuXAorU2VlIG9zLndhaXRpZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgd2FpdGlkX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InNpX3BpZCIsICB9LAorICAgIHsic2lfdWlkIiwgfSwKKyAgICB7InNpX3NpZ25vIiwgfSwKKyAgICB7InNpX3N0YXR1cyIsICB9LAorICAgIHsic2lfY29kZSIsIH0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHdhaXRpZF9yZXN1bHRfZGVzYyA9IHsKKyAgICAid2FpdGlkX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB3YWl0aWRfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgd2FpdGlkX3Jlc3VsdF9maWVsZHMsCisgICAgNQorfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgV2FpdGlkUmVzdWx0VHlwZTsKKyNlbmRpZgorCiBzdGF0aWMgaW50IGluaXRpYWxpemVkOwogc3RhdGljIFB5VHlwZU9iamVjdCBTdGF0UmVzdWx0VHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgU3RhdFZGU1Jlc3VsdFR5cGU7CisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorc3RhdGljIFB5VHlwZU9iamVjdCBTY2hlZFBhcmFtVHlwZTsKKyNlbmRpZgogc3RhdGljIG5ld2Z1bmMgc3RydWN0c2VxX25ldzsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1ODksNiArMjA3OSwxMCBAQAogICAgIGludCBuZXd2YWwgPSAtMTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnN0YXRfZmxvYXRfdGltZXMiLCAmbmV3dmFsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAic3RhdF9mbG9hdF90aW1lcygpIGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuZXd2YWwgPT0gLTEpCiAgICAgICAgIC8qIFJldHVybiBvbGQgdmFsdWUgKi8KICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhfc3RhdF9mbG9hdF90aW1lcyk7CkBAIC0xNTk3LDI1ICsyMDkxLDUwIEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqYmlsbGlvbiA9IE5VTEw7CisKIHN0YXRpYyB2b2lkCiBmaWxsX3RpbWUoUHlPYmplY3QgKnYsIGludCBpbmRleCwgdGltZV90IHNlYywgdW5zaWduZWQgbG9uZyBuc2VjKQogewotICAgIFB5T2JqZWN0ICpmdmFsLCppdmFsOwotI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORwotICAgIGl2YWwgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VjKTsKLSNlbHNlCi0gICAgaXZhbCA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWMpOwotI2VuZGlmCi0gICAgaWYgKCFpdmFsKQotICAgICAgICByZXR1cm47CisgICAgUHlPYmplY3QgKnMgPSBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKTsKKyAgICBQeU9iamVjdCAqbnNfZnJhY3Rpb25hbCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG5zZWMpOworICAgIFB5T2JqZWN0ICpzX2luX25zID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbnNfdG90YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbG9hdF9zID0gTlVMTDsKKworICAgIGlmICghKHMgJiYgbnNfZnJhY3Rpb25hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIHNfaW5fbnMgPSBQeU51bWJlcl9NdWx0aXBseShzLCBiaWxsaW9uKTsKKyAgICBpZiAoIXNfaW5fbnMpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIG5zX3RvdGFsID0gUHlOdW1iZXJfQWRkKHNfaW5fbnMsIG5zX2ZyYWN0aW9uYWwpOworICAgIGlmICghbnNfdG90YWwpCisgICAgICAgIGdvdG8gZXhpdDsKKwogICAgIGlmIChfc3RhdF9mbG9hdF90aW1lcykgewotICAgICAgICBmdmFsID0gUHlGbG9hdF9Gcm9tRG91YmxlKHNlYyArIDFlLTkqbnNlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnZhbCA9IGl2YWw7Ci0gICAgICAgIFB5X0lOQ1JFRihmdmFsKTsKKyAgICAgICAgZmxvYXRfcyA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWMgKyAxZS05Km5zZWMpOworICAgICAgICBpZiAoIWZsb2F0X3MpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgsIGl2YWwpOwotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgrMywgZnZhbCk7CisgICAgZWxzZSB7CisgICAgICAgIGZsb2F0X3MgPSBzOworICAgICAgICBQeV9JTkNSRUYoZmxvYXRfcyk7CisgICAgfQorCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCwgcyk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCszLCBmbG9hdF9zKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIGluZGV4KzYsIG5zX3RvdGFsKTsKKyAgICBzID0gTlVMTDsKKyAgICBmbG9hdF9zID0gTlVMTDsKKyAgICBuc190b3RhbCA9IE5VTEw7CitleGl0OgorICAgIFB5X1hERUNSRUYocyk7CisgICAgUHlfWERFQ1JFRihuc19mcmFjdGlvbmFsKTsKKyAgICBQeV9YREVDUkVGKHNfaW5fbnMpOworICAgIFB5X1hERUNSRUYobnNfdG90YWwpOworICAgIFB5X1hERUNSRUYoZmxvYXRfcyk7CiB9CiAKIC8qIHBhY2sgYSBzeXN0ZW0gc3RhdCBDIHN0cnVjdHVyZSBpbnRvIHRoZSBQeXRob24gc3RhdCB0dXBsZQpAQCAtMTcxOCwxMjYgKzIyMzcsMjM4IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kb19zdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LAotI2lmZGVmIF9fVk1TCi0gICAgICAgICAgICAgIGludCAoKnN0YXRmdW5jKShjb25zdCBjaGFyICosIFNUUlVDVF9TVEFUICosIC4uLiksCi0jZWxzZQotICAgICAgICAgICAgICBpbnQgKCpzdGF0ZnVuYykoY29uc3QgY2hhciAqLCBTVFJVQ1RfU1RBVCAqKSwKLSNlbmRpZgotICAgICAgICAgICAgICBjaGFyICp3Zm9ybWF0LAotICAgICAgICAgICAgICBpbnQgKCp3c3RhdGZ1bmMpKGNvbnN0IFB5X1VOSUNPREUgKiwgU1RSVUNUX1NUQVQgKikpCi17Ci0gICAgU1RSVUNUX1NUQVQgc3Q7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnBvKSkgewotICAgICAgICBQeV9VTklDT0RFICp3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHBvKTsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSByZXN1bHQgT0sgd2l0aG91dAotICAgICAgICAgICAgICAgdGhyZWFkIGxvY2sgYXMgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIHJlcyA9IHdzdGF0ZnVuYyh3cGF0aCwgJnN0KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAocmVzICE9IDApCi0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgic3RhdCIsIHdwYXRoKTsKLSAgICAgICAgcmV0dXJuIF9weXN0YXRfZnJvbXN0cnVjdHN0YXQoJnN0KTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0jZW5kaWYKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSAoKnN0YXRmdW5jKShwYXRoLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzICE9IDApIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2Vycm9yKCJzdGF0IiwgcGF0aCk7Ci0jZWxzZQotICAgICAgICByZXN1bHQgPSBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOwotI2VuZGlmCi0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwotCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBQT1NJWCBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9hY2Nlc3NfX2RvY19fLAotImFjY2VzcyhwYXRoLCBtb2RlKSAtPiBUcnVlIGlmIGdyYW50ZWQsIEZhbHNlIG90aGVyd2lzZVxuXG5cCi1Vc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgTm90ZSB0aGF0IG1vc3RcblwKLW9wZXJhdGlvbnMgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkLCB0aGVyZWZvcmUgdGhpcyByb3V0aW5lIGNhblxuXAotYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyIGhhcyB0aGVcblwKLXNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgRl9PSyB0byB0ZXN0XG5cCi1leGlzdGVuY2UsIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9hY2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZG9fc3RhdChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsCisgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgaW50IHJlc3VsdDsKKworI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfRlNUQVRBVCkgJiYgIWRlZmluZWQoSEFWRV9MU1RBVCkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChmdW5jdGlvbl9uYW1lLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKHBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKCJzdGF0IiwgcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInN0YXQiLCBkaXJfZmQsIHBhdGgtPmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInN0YXQiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBGU1RBVChwYXRoLT5mZCwgJnN0KTsKKyAgICBlbHNlCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLT53aWRlKSB7CisgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLT53aWRlLCAmc3QpOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfTFNUQVQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLT5uYXJyb3csICZzdCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGZzdGF0YXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csICZzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCJzdGF0IiwgcGF0aCk7CisKKyAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc3RhdF9fZG9jX18sCisic3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpIC0+IHN0YXQgcmVzdWx0XG5cblwKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIGEgc3RyaW5nIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorICBkaXJfZmQgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsgaWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nXG5cCisgIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJnA6c3RhdCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2RvX3N0YXQoInN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2xzdGF0X19kb2NfXywKKyJsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gc3RhdCByZXN1bHRcblxuXAorTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAorRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAwOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0Iiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX0ZTVEFUQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZG9fc3RhdCgic3RhdCIsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfYWNjZXNzX19kb2NfXywKKyJhY2Nlc3MocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGVmZmVjdGl2ZV9pZHM9RmFsc2UsXAorIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgUmV0dXJucyBUcnVlIGlmIGdyYW50ZWQsXG5cCitGYWxzZSBvdGhlcndpc2UuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBlZmZlY3RpdmVfaWRzIGlzIFRydWUsIGFjY2VzcyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZlxuXAorICB0aGUgcmVhbCB1aWQvZ2lkLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGFjY2VzcyB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWRcblwKKyAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAorICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorXG5cCitOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcblwKKyAgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyXG5cCisgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC5cblwKK1RoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSBGX09LIHRvIHRlc3QgZXhpc3RlbmNlLCBvciB0aGUgaW5jbHVzaXZlLU9SXG5cCisgIG9mIFJfT0ssIFdfT0ssIGFuZCBYX09LLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfYWNjZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZWZmZWN0aXZlX2lkcyA9IDA7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaTphY2Nlc3MiLCAmcG8sICZtb2RlKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIC8qIFB5VW5pY29kZV9BU19VTklDT0RFIE9LIHdpdGhvdXQgdGhyZWFkIGxvY2sgYXMKLSAgICAgICAgICAgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZ290byBmaW5pc2g7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmFjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci1maW5pc2g6Ci0gICAgaWYgKGF0dHIgPT0gMHhGRkZGRkZGRikKLSAgICAgICAgLyogRmlsZSBkb2VzIG5vdCBleGlzdCwgb3IgY2Fubm90IHJlYWQgYXR0cmlidXRlcyAqLwotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwotICAgIC8qIEFjY2VzcyBpcyBwb3NzaWJsZSBpZiBlaXRoZXIgd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsIG9yCi0gICAgICAgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LCBvciBpZiBpdCdzIGEgZGlyZWN0b3J5LCBhcyB0aGVyZSBhcmUKLSAgICAgICBubyByZWFkLW9ubHkgZGlyZWN0b3JpZXMgb24gV2luZG93cy4gKi8KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCEobW9kZSAmIDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSk7CiAjZWxzZQotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6YWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBhY2Nlc3MocGF0aCwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzID09IDApOworICAgIGludCByZXN1bHQ7CiAjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcHA6YWNjZXNzIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKKyNlbmRpZgorICAgICAgICAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZuZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImFjY2VzcyIsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGlmIChlZmZlY3RpdmVfaWRzKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJhY2Nlc3MiLCAiZWZmZWN0aXZlX2lkcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLndpZGUgIT0gTlVMTCkKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIC8qCisgICAgICogQWNjZXNzIGlzIHBvc3NpYmxlIGlmCisgICAgICogICAqIHdlIGRpZG4ndCBnZXQgYSAtMSwgYW5kCisgICAgICogICAgICogd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsCisgICAgICogICAgICogb3IgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LAorICAgICAqICAgICAqIG9yIGl0J3MgYSBkaXJlY3RvcnkuCisgICAgICogKERpcmVjdG9yaWVzIGNhbm5vdCBiZSByZWFkLW9ubHkgb24gV2luZG93cy4pCisgICAgKi8KKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgIChhdHRyICE9IDB4RkZGRkZGRkYpICYmCisgICAgICAgICAgICAoIShtb2RlICYgMikgfHwKKyAgICAgICAgICAgICEoYXR0ciAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSB8fAorICAgICAgICAgICAgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSk7CisjZWxzZQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CisgICAgICAgIGVmZmVjdGl2ZV9pZHMgfHwKKyAgICAgICAgIWZvbGxvd19zeW1saW5rcykgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworICAgICAgICBpZiAoIWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZsYWdzIHw9IEFUX1NZTUxJTktfTk9GT0xMT1c7CisgICAgICAgIGlmIChlZmZlY3RpdmVfaWRzKQorICAgICAgICAgICAgZmxhZ3MgfD0gQVRfRUFDQ0VTUzsKKyAgICAgICAgcmVzdWx0ID0gZmFjY2Vzc2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGZsYWdzKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGFjY2VzcyhwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoIXJlc3VsdCk7CisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAorZXhpdDoKKyNlbmRpZgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmbmRlZiBGX09LCkBAIC0xOTA4LDI3ICsyNTM5LDY2IEBACiAKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGRpcl9fZG9jX18sCiAiY2hkaXIocGF0aClcblxuXAotQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC4iKTsKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHdpbjMyXzFzdHIoYXJncywgImNoZGlyIiwgInk6Y2hkaXIiLCB3aW4zMl9jaGRpciwgIlU6Y2hkaXIiLCB3aW4zMl93Y2hkaXIpOwotI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6Y2hkaXIiLCBfY2hkaXIyKTsKLSNlbGlmIGRlZmluZWQoX19WTVMpCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOmNoZGlyIiwgKGludCAoKikoY29uc3QgY2hhciAqKSljaGRpcik7Ci0jZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpjaGRpciIsIGNoZGlyKTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKICNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfd2NoZGlyKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLworI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKKyAgICByZXN1bHQgPSBfY2hkaXIyKHBhdGgubmFycm93KTsKKyNlbHNlCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNoZGlyKHBhdGguZmQpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaGRpcihwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJjaGRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmZGVmIEhBVkVfRkNIRElSCiBQeURvY19TVFJWQVIocG9zaXhfZmNoZGlyX19kb2NfXywKLSJmY2hkaXIoZmlsZGVzKVxuXG5cCi1DaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLiAgZmlsZGVzIG11c3QgYmVcblwKLW9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4iKTsKKyJmY2hkaXIoZmQpXG5cblwKK0NoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuICBmZCBtdXN0IGJlXG5cCitvcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuICBFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZjaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQpAQCAtMTkzOSw4NyArMjYwOSwxNTUgQEAKIAogCiBQeURvY19TVFJWQVIocG9zaXhfY2htb2RfX2RvY19fLAotImNobW9kKHBhdGgsIG1vZGUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4iKTsKKyJjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaG1vZCB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuXAorICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoID0gTlVMTDsKLSAgICBjaGFyICpwYXRoID0gTlVMTDsKLSAgICBpbnQgaTsKLSAgICBpbnQgcmVzOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaXw6Y2htb2QiLCAmcG8sICZpKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgaWYgKGF0dHIgIT0gMHhGRkZGRkZGRikgewotICAgICAgICAgICAgaWYgKGkgJiBfU19JV1JJVEUpCi0gICAgICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXR0ciB8PSBGSUxFX0FUVFJJQlVURV9SRUFET05MWTsKLSAgICAgICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzVyhQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIGF0dHIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoImNobW9kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgIGludCBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9IDA7CisjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnA6Y2htb2QiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmbW9kZSwKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmICEoZGVmaW5lZChIQVZFX0ZDSE1PREFUKSB8fCBkZWZpbmVkKEhBVkVfTENITU9EKSkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBpZiAoYXR0ciAhPSAweEZGRkZGRkZGKSB7Ci0gICAgICAgIGlmIChpICYgX1NfSVdSSVRFKQorICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3cpOworICAgIGlmIChhdHRyID09IDB4RkZGRkZGRkYpCisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtb2RlICYgX1NfSVdSSVRFKQogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLCBhdHRyKTsKKyAgICAgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUsIGF0dHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3csIGF0dHIpOworICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJjaG1vZCIsIHBhdGgub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGguZmQsIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfTENITU9ECisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gbGNobW9kKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogZmNobW9kYXQoKSBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IEFUX1NZTUxJTktfTk9GT0xMT1chCisgICAgICAgICAqIFRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSBzaG93cyBob3cgdG8gdXNlIGl0LAorICAgICAgICAgKiBhbmQgdGhlbiBzYXlzIGl0IGlzbid0IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICogKHRydWUgb24gbGludXggd2l0aCBnbGliYyAyLjE1LCBhbmQgb3BlbmluZGlhbmEgMy54KQorICAgICAgICAgKgorICAgICAgICAgKiBPbmNlIGl0IGlzIHN1cHBvcnRlZCwgb3MuY2htb2Qgd2lsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAqIHN1cHBvcnQgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3M9RmFsc2UuICAoSG9wZWZ1bGx5LikKKyAgICAgICAgICogVW50aWwgdGhlbiwgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgZXhjZXB0aW9uIHdlIHJhaXNlLgorICAgICAgICAgKi8KKyAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOworICAgICAgICAvKgorICAgICAgICAgKiBCdXQgd2FpdCEgIFdlIGNhbid0IHRocm93IHRoZSBleGNlcHRpb24gd2l0aG91dCBhbGxvd2luZyB0aHJlYWRzLAorICAgICAgICAgKiBhbmQgd2UgY2FuJ3QgZG8gdGhhdCBpbiB0aGlzIG5lc3RlZCBzY29wZS4gIChNYWNybyB0cmlja2VyeSwgc2lnaC4pCisgICAgICAgICAqLworICAgICAgICBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgKChlcnJubyA9PSBFTk9UU1VQKSB8fCAoZXJybm8gPT0gRU9QTk9UU1VQUCkpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIWZvbGxvd19zeW1saW5rczsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXMgPSAwOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgd2luMzJfZXJyb3IoImNobW9kIiwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLSNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2htb2QocGF0aCwgaSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKICNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGlmIChmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCkgeworICAgICAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgICAgICBkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG1vZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigiY2htb2QiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKwogI2lmZGVmIEhBVkVfRkNITU9ECiBQeURvY19TVFJWQVIocG9zaXhfZmNobW9kX19kb2NfXywKICJmY2htb2QoZmQsIG1vZGUpXG5cblwKIENoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGVcblwKLWRlc2NyaXB0b3IgZmQuIik7CitkZXNjcmlwdG9yIGZkLiAgRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjA0MCw3ICsyNzc4LDggQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9sY2htb2RfX2RvY19fLAogImxjaG1vZChwYXRoLCBtb2RlKVxuXG5cCiBDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuIElmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzXG5cCi1hZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiIpOworYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC5cblwKK0VxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2xjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMDY2LDI4ICsyODA1LDU2IEBACiAKICNpZmRlZiBIQVZFX0NIRkxBR1MKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGZsYWdzX19kb2NfXywKLSJjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCi1TZXQgZmlsZSBmbGFncy4iKTsKKyJjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorU2V0IGZpbGUgZmxhZ3MuXG5cCitcblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuXAorICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cblwKK2ZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuXAordW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaGZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJms6Y2hmbGFncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmZmxhZ3MpKQorICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8JGk6Y2hmbGFncyIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmbmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNoZmxhZ3MiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBjaGZsYWdzKHBhdGgsIGZsYWdzKTsKKyNpZmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGNoZmxhZ3MocGF0aC5uYXJyb3csIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoImNoZmxhZ3MiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCiAKQEAgLTIwOTUsNyArMjg2Miw4IEBACiBQeURvY19TVFJWQVIocG9zaXhfbGNoZmxhZ3NfX2RvY19fLAogImxjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCiBTZXQgZmlsZSBmbGFncy5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiIpOworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCitFcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMTQzLDYgKzI5MTEsMjEgQEAKIH0KICNlbmRpZiAvKiBIQVZFX0ZTWU5DICovCiAKKyNpZmRlZiBIQVZFX1NZTkMKK1B5RG9jX1NUUlZBUihwb3NpeF9zeW5jX19kb2NfXywKKyJzeW5jKClcblxuXAorRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3luYygpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfRkRBVEFTWU5DCiAKICNpZmRlZiBfX2hwdXgKQEAgLTIxNjQsMjkgKzI5NDcsMTA1IEBACiAKICNpZmRlZiBIQVZFX0NIT1dOCiBQeURvY19TVFJWQVIocG9zaXhfY2hvd25fX2RvY19fLAotImNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiIpOworImNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIGxvbmcgdWlkLCBnaWQ7Ci0gICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mbGw6Y2hvd24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVpZCwgJmdpZCkpCisgICAgcGF0aF90IHBhdGg7CisgICAgbG9uZyB1aWRfbCwgZ2lkX2w7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmxsfCRPJnA6Y2hvd24iLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVpZF9sLCAmZ2lkX2wsCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisKKyNpZiAhKGRlZmluZWQoSEFWRV9MQ0hPV04pIHx8IGRlZmluZWQoSEFWRV9GQ0hPV05BVCkpCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisgICAgaWYgKGRpcl9mZF9hbmRfZmRfaW52YWxpZCgiY2hvd24iLCBkaXJfZmQsIHBhdGguZmQpIHx8CisgICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2hvd24iLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICAvKgorICAgICAqIFRoaXMgaXMgZm9yIE1hYyBPUyBYIDEwLjMsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBsY2hvd24uCisgICAgICogKEJ1dCB3ZSBzdGlsbCBoYXZlIGFuIGxjaG93biBzeW1ib2wgYmVjYXVzZSBvZiB3ZWFrLWxpbmtpbmcuKQorICAgICAqIEl0IGRvZXNuJ3QgaGF2ZSBmY2hvd25hdCBlaXRoZXIuICBTbyB0aGVyZSdzIG5vIHBvc3NpYmlsaXR5CisgICAgICogb2YgYSBncmFjZWZ1bCBmYWlsb3Zlci4KKyAgICAgKi8KKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChsY2hvd24gPT0gTlVMTCkpIHsKKyAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2hvd24iLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2hvd24ocGF0aCwgKHVpZF90KSB1aWQsIChnaWRfdCkgZ2lkKTsKKyAgICB1aWQgPSAodWlkX3QpdWlkX2w7CisgICAgZ2lkID0gKHVpZF90KWdpZF9sOworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bihwYXRoLmZkLCB1aWQsIGdpZCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9MQ0hPV04KKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSBsY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0ZDSE9XTkFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmVzdWx0ID0gZmNob3duYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgdWlkLCBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoImNob3duIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KIApAQCAtMjE5NCw3ICszMDUzLDcgQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9mY2hvd25fX2RvY19fLAogImZjaG93bihmZCwgdWlkLCBnaWQpXG5cblwKIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvclxuXAotZmQgdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuIik7CitmZCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC4gIEVxdWl2YWxlbnQgdG8gb3MuY2hvd24oZmQsIHVpZCwgZ2lkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZjaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjE3LDcgKzMwNzYsOCBAQAogUHlEb2NfU1RSVkFSKHBvc2l4X2xjaG93bl9fZG9jX18sCiAibGNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCiBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuXAotVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuIik7CitUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKK0VxdWl2YWxlbnQgdG8gb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjI3OSw2ICszMTM5LDkgQEAKICAgICAgICAgaWYgKHdidWYyICE9IHdidWYpIGZyZWUod2J1ZjIpOwogICAgICAgICByZXR1cm4gcmVzb2JqOwogICAgIH0KKworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjMxNiwxNTAgKzMxNzksMjI2IEBACiB9CiAjZW5kaWYKIAorI2lmICgoIWRlZmluZWQoSEFWRV9MSU5LKSkgJiYgZGVmaW5lZChNU19XSU5ET1dTKSkKKyNkZWZpbmUgSEFWRV9MSU5LIDEKKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSU5LCiBQeURvY19TVFJWQVIocG9zaXhfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS4iKTsKKyJsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuXG5cCitcblwKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcblwKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG5cCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiBzcmMgaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBsaW5rIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcblwKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG5cCitzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91clxuXAorICBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAorICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICByZXR1cm4gcG9zaXhfMnN0cihhcmdzLCAiTyZPJjpsaW5rIiwgbGluayk7Ci19Ci0jZW5kaWYgLyogSEFWRV9MSU5LICovCi0KKyAgICBwYXRoX3Qgc3JjLCBkc3Q7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogI2lmZGVmIE1TX1dJTkRPV1MKLVB5RG9jX1NUUlZBUih3aW4zMl9saW5rX19kb2NfXywKLSJsaW5rKHNyYywgZHN0KVxuXG5cCi1DcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLiIpOworICAgIEJPT0wgcmVzdWx0OworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb3NyYywgKm9kc3Q7Ci0gICAgY2hhciAqc3JjLCAqZHN0OwotICAgIEJPT0wgcnNsdDsKLQotICAgIFB5VW5pY29kZU9iamVjdCAqdXNyYywgKnVkc3Q7Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOmxpbmsiLCAmdXNyYywgJnVkc3QpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcnNsdCA9IENyZWF0ZUhhcmRMaW5rVyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1ZHN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1c3JjKSwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKHJzbHQgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigibGluayIsIE5VTEwpOwotCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIH0KLQotICAgIC8qIE5hcnJvdyBzdHJpbmdzIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpsaW5rIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3NyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2RzdCkpCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8TyZPJnA6bGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsCisgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzcmMgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zcmMpOwotICAgIGRzdCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2RzdCk7CisjaWZuZGVmIEhBVkVfTElOS0FUCisgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkpIHsKKyAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoImxpbmsiLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCiAKKyAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcnNsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QsIHNyYywgTlVMTCk7CisgICAgaWYgKHNyYy53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua1coZHN0LndpZGUsIHNyYy53aWRlLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfREVDUkVGKG9zcmMpOwotICAgIFB5X0RFQ1JFRihvZHN0KTsKLSAgICBpZiAocnNsdCA9PSAwKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImxpbmsiLCBOVUxMKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoImxpbmsiLCBkc3Qub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbHNlCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfTElOS0FUCisgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgKCFmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXN1bHQgPSBsaW5rYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywKKyAgICAgICAgICAgIGRzdF9kaXJfZmQsIGRzdC5uYXJyb3csCisgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyBBVF9TWU1MSU5LX0ZPTExPVyA6IDApOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoImxpbmsiLCAmZHN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZgorCiAKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3RkaXJfX2RvY19fLAotImxpc3RkaXIoW3BhdGhdKSAtPiBsaXN0X29mX3N0cmluZ3NcblxuXAotUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5LlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBkaXJlY3RvcnkgdG8gbGlzdCAoZGVmYXVsdDogJy4nKVxuXAotXG5cCisibGlzdGRpcihwYXRoPScuJykgLT4gbGlzdF9vZl9maWxlbmFtZXNcblxuXAorUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWxcblwKLWVudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOworZW50cmllcyAnLicgYW5kICcuLicgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuXG5cCitcblwKK3BhdGggY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyIG9yIGJ5dGVzLiAgSWYgcGF0aCBpcyBieXRlcyxcblwKKyAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgYnl0ZXM7IGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzXG5cCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3I7XG5cCisgIHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfbGlzdGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgcGF0aF90IHBhdGg7CisgICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgaW50IGZkID0gLTE7CisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKKyAgICBQeU9iamVjdCAqdjsKKyAgICBIQU5ETEUgaEZpbmRGaWxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgQk9PTCByZXN1bHQ7CisgICAgV0lOMzJfRklORF9EQVRBIEZpbGVEYXRhOworICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsgLyogT3ZlcmFsbG9jYXRlIGZvciBcXCouKlwwICovCisgICAgY2hhciAqYnVmcHRyID0gbmFtZWJ1ZjsKKyAgICAvKiBvbmx5IGNsYWltIHRvIGhhdmUgc3BhY2UgZm9yIE1BWF9QQVRIICovCisgICAgUHlfc3NpemVfdCBsZW4gPSBzaXplb2YobmFtZWJ1ZiktNTsKKyAgICBQeU9iamVjdCAqcG8gPSBOVUxMOworICAgIHdjaGFyX3QgKnduYW1lYnVmID0gTlVMTDsKKyNlbGlmIGRlZmluZWQoUFlPU19PUzIpCisjaWZuZGVmIE1BWF9QQVRICisjZGVmaW5lIE1BWF9QQVRIICAgIENDSE1BWFBBVEgKKyNlbmRpZgorICAgIGNoYXIgKnB0OworICAgIFB5T2JqZWN0ICp2OworICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsKKyAgICBIRElSICBoZGlyID0gMTsKKyAgICBVTE9ORyBzcmNoY250ID0gMTsKKyAgICBGSUxFRklOREJVRjMgICBlcDsKKyAgICBBUElSRVQgcmM7CisjZWxzZQorICAgIFB5T2JqZWN0ICp2OworICAgIERJUiAqZGlycCA9IE5VTEw7CisgICAgc3RydWN0IGRpcmVudCAqZXA7CisgICAgaW50IHJldHVybl9zdHI7IC8qIGlmIGZhbHNlLCByZXR1cm4gYnl0ZXMgKi8KKyNlbmRpZgorCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGgubnVsbGFibGUgPSAxOworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgcGF0aC5mZCA9IC0xOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogWFhYIFNob3VsZCByZWRvIHRoaXMgcHV0dGluZyB0aGUgKG5vdyBmb3VyKSB2ZXJzaW9ucyBvZiBvcGVuZGlyCiAgICAgICAgaW4gc2VwYXJhdGUgZmlsZXMgaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBhbGwgaGVyZS4uLiAqLwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoSEFWRV9PUEVORElSKQotCi0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIEhBTkRMRSBoRmluZEZpbGU7Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgV0lOMzJfRklORF9EQVRBIEZpbGVEYXRhOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLwotICAgIGNoYXIgKmJ1ZnB0ciA9IG5hbWVidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzaXplb2YobmFtZWJ1ZiktNTsgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLwotCi0gICAgUHlPYmplY3QgKnBvID0gTlVMTDsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifFU6bGlzdGRpciIsICZwbykpIHsKKyAgICBpZiAoIXBhdGgubmFycm93KSB7CiAgICAgICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOwotICAgICAgICBQeV9VTklDT0RFICp3bmFtZWJ1ZiwgKnBvX3djaGFyczsKKyAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOwogCi0gICAgICAgIGlmIChwbyA9PSBOVUxMKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgaWYgKCFwYXRoLndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLwogICAgICAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKICAgICAgICAgICAgIGxlbiA9IDE7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb193Y2hhcnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7Ci0gICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocG8pOworICAgICAgICAgICAgcG9fd2NoYXJzID0gcGF0aC53aWRlOworICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgud2lkZSk7CiAgICAgICAgIH0KLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIGZvciBcXCouKlwwICovCisgICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwogICAgICAgICB3bmFtZWJ1ZiA9IG1hbGxvYygobGVuICsgNSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoIXduYW1lYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgd2NzY3B5KHduYW1lYnVmLCBwb193Y2hhcnMpOwogICAgICAgICBpZiAobGVuID4gMCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07CisgICAgICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKICAgICAgICAgICAgIGlmICh3Y2ggIT0gTCcvJyAmJiB3Y2ggIT0gTCdcXCcgJiYgd2NoICE9IEwnOicpCiAgICAgICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gTCdcXCc7CiAgICAgICAgICAgICB3Y3NjcHkod25hbWVidWYgKyBsZW4sIEwiKi4qIik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKChkID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgewotICAgICAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgewotICAgICAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgICAgIHJldHVybiBkOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZEZpcnN0RmlsZVciLCB3bmFtZWJ1Zik7Ci0gICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwogICAgICAgICAgICAgaWYgKHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4iKSAhPSAwICYmCiAgICAgICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh3RmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4od0ZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdGaWxlRGF0YS5jRmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNDcwLDM4ICszNDA5LDE2IEBACiAgICAgICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgICAgICBpdCBnb3QgdG8gdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5LiAqLwogICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICB3aW4zMl9lcnJvcl91bmljb2RlKCJGaW5kTmV4dEZpbGVXIiwgd25hbWVidWYpOwotICAgICAgICAgICAgICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgICAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZE5leHRGaWxlVyIsIHduYW1lYnVmKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUgKHJlc3VsdCA9PSBUUlVFKTsKIAotICAgICAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmRDbG9zZSIsIHduYW1lYnVmKTsKLSAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgIHJldHVybiBkOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpsaXN0ZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlCeXRlc19HRVRfU0laRShvcGF0aCkrMSA+IE1BWF9QQVRIKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RyY3B5KG5hbWVidWYsIFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpKTsKLSAgICBsZW4gPSBQeU9iamVjdF9TaXplKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLm5hcnJvdyk7CisgICAgbGVuID0gcGF0aC5sZW5ndGg7CiAgICAgaWYgKGxlbiA+IDApIHsKICAgICAgICAgY2hhciBjaCA9IG5hbWVidWZbbGVuLTFdOwogICAgICAgICBpZiAoY2ggIT0gU0VQICYmIGNoICE9IEFMVFNFUCAmJiBjaCAhPSAnOicpCkBAIC0yNTA5LDcgKzM0MjYsNyBAQAogICAgICAgICBzdHJjcHkobmFtZWJ1ZiArIGxlbiwgIiouKiIpOwogICAgIH0KIAotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yNTE4LDkgKzM0MzUsMTAgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIGludCBlcnJvciA9IEdldExhc3RFcnJvcigpOwogICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkZpbmRGaXJzdEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3IoIkZpbmRGaXJzdEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICBkbyB7CiAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwpAQCAtMjUyOCwxNCArMzQ0NiwxNCBAQAogICAgICAgICAgICAgc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4uIikgIT0gMCkgewogICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhGaWxlRGF0YS5jRmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB2KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNTQ2LDQ2ICszNDY0LDMzIEBACiAgICAgICAgIC8qIEZpbmROZXh0RmlsZSBzZXRzIGVycm9yIHRvIEVSUk9SX05PX01PUkVfRklMRVMgaWYKICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewotICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgd2luMzJfZXJyb3IoIkZpbmROZXh0RmlsZSIsIG5hbWVidWYpOwotICAgICAgICAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGxpc3QgPSB3aW4zMl9lcnJvcigiRmluZE5leHRGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7CiAKLSAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkZpbmRDbG9zZSIsIG5hbWVidWYpOworZXhpdDoKKyAgICBpZiAoaEZpbmRGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIGlmIChGaW5kQ2xvc2UoaEZpbmRGaWxlKSA9PSBGQUxTRSkgeworICAgICAgICAgICAgaWYgKGxpc3QgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJGaW5kQ2xvc2UiLCBwYXRoLm9iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKHduYW1lYnVmKQorICAgICAgICBmcmVlKHduYW1lYnVmKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCi0gICAgcmV0dXJuIGQ7CisgICAgcmV0dXJuIGxpc3Q7CiAKICNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0KLSNpZm5kZWYgTUFYX1BBVEgKLSNkZWZpbmUgTUFYX1BBVEggICAgQ0NITUFYUEFUSAotI2VuZGlmCi0gICAgUHlPYmplY3QgKm9uYW1lOwotICAgIGNoYXIgKm5hbWUsICpwdDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqZCwgKnY7Ci0gICAgY2hhciBuYW1lYnVmW01BWF9QQVRIKzVdOwotICAgIEhESVIgIGhkaXIgPSAxOwotICAgIFVMT05HIHNyY2hjbnQgPSAxOwotICAgIEZJTEVGSU5EQlVGMyAgIGVwOwotICAgIEFQSVJFVCByYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bGlzdGRpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9uYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcob25hbWUpOwotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob25hbWUpOwotICAgIGlmIChsZW4gPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgUHlfREVDUkVGKG9uYW1lKTsKKyAgICBpZiAocGF0aC5sZW5ndGggPj0gTUFYX1BBVEgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBuYW1lKTsKKyAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOwogICAgIGZvciAocHQgPSBuYW1lYnVmOyAqcHQ7IHB0KyspCiAgICAgICAgIGlmICgqcHQgPT0gQUxUU0VQKQogICAgICAgICAgICAgKnB0ID0gU0VQOwpAQCAtMjU5Myw5ICszNDk4LDggQEAKICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSBTRVA7CiAgICAgc3RyY3B5KG5hbWVidWYgKyBsZW4sICIqLioiKTsKIAotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCiAgICAgcmMgPSBEb3NGaW5kRmlyc3QobmFtZWJ1ZiwgICAgICAgICAvKiBXaWxkY2FyZCBQYXR0ZXJuIHRvIE1hdGNoICovCkBAIC0yNjA3LDcgKzM1MTEsOSBAQAogCiAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7CiAgICAgICAgIGVycm5vID0gRU5PRU5UOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob25hbWUpOworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIGxpc3QgPSBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgubmFycm93KTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAogICAgIGlmIChzcmNoY250ID4gMCkgeyAvKiBJZiBEaXJlY3RvcnkgaXMgTk9UIFRvdGFsbHkgRW1wdHksICovCkBAIC0yNjIzLDU1ICszNTI5LDcwIEBACiAKICAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcobmFtZWJ1Zik7CiAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGQsIHYpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgfSB3aGlsZSAoRG9zRmluZE5leHQoaGRpciwgJmVwLCBzaXplb2YoZXApLCAmc3JjaGNudCkgPT0gTk9fRVJST1IgJiYgc3JjaGNudCA+IDApOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgcmV0dXJuIGQ7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gbGlzdDsKICNlbHNlCi0gICAgUHlPYmplY3QgKm9uYW1lOwotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIERJUiAqZGlycDsKLSAgICBzdHJ1Y3QgZGlyZW50ICplcDsKLSAgICBpbnQgYXJnX2lzX3VuaWNvZGUgPSAxOwogCiAgICAgZXJybm8gPSAwOwotICAgIC8qIHYgaXMgbmV2ZXIgcmVhZCwgc28gaXQgZG9lcyBub3QgbmVlZCB0byBiZSBpbml0aWFsaXplZCB5ZXQuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8VTpsaXN0ZGlyIiwgJnYpKSB7Ci0gICAgICAgIGFyZ19pc191bmljb2RlID0gMDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgb25hbWUgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmxpc3RkaXIiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvbmFtZSA9PSBOVUxMKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KLSAgICAgICAgb25hbWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoIi4iKTsKLSAgICB9Ci0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcob25hbWUpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBkaXJwID0gb3BlbmRpcihuYW1lKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChkaXJwID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKLSAgICB9Ci0gICAgaWYgKChkID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgaWYgKHBhdGguZmQgIT0gLTEpIHsKKyAgICAgICAgLyogY2xvc2VkaXIoKSBjbG9zZXMgdGhlIEZELCBzbyB3ZSBkdXBsaWNhdGUgaXQgKi8KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjbG9zZWRpcihkaXJwKTsKKyAgICAgICAgZmQgPSBkdXAocGF0aC5mZCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmIChmZCA9PSAtMSkgeworICAgICAgICAgICAgbGlzdCA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5fc3RyID0gMTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcnAgPSBmZG9wZW5kaXIoZmQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgIGlmIChwYXRoLm5hcnJvdykgeworICAgICAgICAgICAgbmFtZSA9IHBhdGgubmFycm93OworICAgICAgICAgICAgLyogb25seSByZXR1cm4gYnl0ZXMgaWYgdGhleSBzcGVjaWZpZWQgYSBieXRlcyBvYmplY3QgKi8KKyAgICAgICAgICAgIHJldHVybl9zdHIgPSAhKFB5Qnl0ZXNfQ2hlY2socGF0aC5vYmplY3QpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG5hbWUgPSAiLiI7CisgICAgICAgICAgICByZXR1cm5fc3RyID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZGlycCA9IG9wZW5kaXIobmFtZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgaWYgKGRpcnAgPT0gTlVMTCkgeworICAgICAgICBsaXN0ID0gcGF0aF9lcnJvcigibGlzdGRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgZm9yICg7OykgewogICAgICAgICBlcnJubyA9IDA7CkBAIC0yNjgyLDM4ICszNjAzLDQzIEBACiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gMCkgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgY2xvc2VkaXIoZGlycCk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+ZF9uYW1lWzBdID09ICcuJyAmJgogICAgICAgICAgICAgKE5BTUxFTihlcCkgPT0gMSB8fAogICAgICAgICAgICAgIChlcC0+ZF9uYW1lWzFdID09ICcuJyAmJiBOQU1MRU4oZXApID09IDIpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXJnX2lzX3VuaWNvZGUpCisgICAgICAgIGlmIChyZXR1cm5fc3RyKQogICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGVwLT5kX25hbWUsIE5BTUxFTihlcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShlcC0+ZF9uYW1lLCBOQU1MRU4oZXApKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfQ0xFQVIoZCk7CisgICAgICAgICAgICBQeV9DTEVBUihsaXN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGQsIHYpICE9IDApIHsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfQ0xFQVIoZCk7CisgICAgICAgICAgICBQeV9DTEVBUihsaXN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGNsb3NlZGlyKGRpcnApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9uYW1lKTsKIAotICAgIHJldHVybiBkOworZXhpdDoKKyAgICBpZiAoZGlycCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGZkID4gLTEpCisgICAgICAgICAgICByZXdpbmRkaXIoZGlycCk7CisgICAgICAgIGNsb3NlZGlyKGRpcnApOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gbGlzdDsKIAogI2VuZGlmIC8qIHdoaWNoIE9TICovCiB9ICAvKiBlbmQgb2YgcG9zaXhfbGlzdGRpciAqLwpAQCAtMjcyMywzMSArMzY0OSwzNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X19nZXRmdWxscGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgY2hhciBvdXRidWZbTUFYX1BBVEgqMl07CiAgICAgY2hhciAqdGVtcDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZ1bGxwYXRobmFtZSIsICZwbykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7Ci0gICAgICAgIFB5X1VOSUNPREUgd291dGJ1ZltNQVhfUEFUSCoyXSwgKndvdXRidWZwID0gd291dGJ1ZjsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3RlbXA7CisgICAgUHlPYmplY3QgKnBvOworCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmdWxscGF0aG5hbWUiLCAmcG8pKQorICAgIHsKKyAgICAgICAgd2NoYXJfdCAqd3BhdGg7CisgICAgICAgIHdjaGFyX3Qgd291dGJ1ZltNQVhfUEFUSCoyXSwgKndvdXRidWZwID0gd291dGJ1ZjsKKyAgICAgICAgd2NoYXJfdCAqd3RlbXA7CiAgICAgICAgIERXT1JEIHJlc3VsdDsKICAgICAgICAgUHlPYmplY3QgKnY7CisKKyAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yod291dGJ1Zikvc2l6ZW9mKHdvdXRidWZbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwotICAgICAgICBpZiAocmVzdWx0ID4gc2l6ZW9mKHdvdXRidWYpL3NpemVvZih3b3V0YnVmWzBdKSkgewotICAgICAgICAgICAgd291dGJ1ZnAgPSBtYWxsb2MocmVzdWx0ICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgaWYgKHJlc3VsdCA+IFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSkgeworICAgICAgICAgICAgd291dGJ1ZnAgPSBtYWxsb2MocmVzdWx0ICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgICAgIGlmICghd291dGJ1ZnApCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHdwYXRoLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZ1bGxQYXRoTmFtZVciLCB3cGF0aCk7CisgICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcG8pOwogICAgICAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKICAgICAgICAgICAgIGZyZWUod291dGJ1ZnApOwogICAgICAgICByZXR1cm4gdjsKQEAgLTI3NTYsMTggKzM2ODYsMTYgQEAKICAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KICAgICBQeUVycl9DbGVhcigpOwogCi0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJ5Ol9nZXRmdWxscGF0aG5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKCFHZXRGdWxsUGF0aE5hbWUocGF0aCwgc2l6ZW9mKG91dGJ1Zikvc2l6ZW9mKG91dGJ1ZlswXSksCisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgsIFB5X0FSUkFZX0xFTkdUSChvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7CiAgICAgICAgIHdpbjMyX2Vycm9yKCJHZXRGdWxsUGF0aE5hbWUiLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhQeVR1cGxlX0dldEl0ZW0oYXJncywgMCkpKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlKG91dGJ1Ziwgc3RybGVuKG91dGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsIE5VTEwpOwpAQCAtMjc4NSwxMiArMzcxMywxNCBAQAogICAgIGludCBidWZfc2l6ZTsKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKICAgICB3Y2hhcl90ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1fDpfZ2V0ZmluYWxwYXRobmFtZSIsICZwYXRoKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcG8pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOworICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYoIWNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSgpKSB7CiAgICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLCByZXR1cm4gYQpAQCAtMjgwOSwxOCArMzczOSwxNSBAQAogICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKICAgICAgICAgTlVMTCk7CiAKLSAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZ2V0IGEgaGFuZGxlIHRvIGZpbGUuIik7Ci0gICAgfQorICAgIGlmKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDcmVhdGVGaWxlVyIsIHBvKTsKIAogICAgIC8qIFdlIGhhdmUgYSBnb29kIGhhbmRsZSB0byB0aGUgdGFyZ2V0LCB1c2UgaXQgdG8gZGV0ZXJtaW5lIHRoZQogICAgICAgIHRhcmdldCBwYXRoIG5hbWUuICovCiAgICAgYnVmX3NpemUgPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCAwLCAwLCBWT0xVTUVfTkFNRV9OVCk7CiAKICAgICBpZighYnVmX3NpemUpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcG8pOwogCiAgICAgdGFyZ2V0X3BhdGggPSAod2NoYXJfdCAqKW1hbGxvYygoYnVmX3NpemUrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZighdGFyZ2V0X3BhdGgpCkBAIC0yODI5LDEzICszNzU2LDEzIEBACiAgICAgcmVzdWx0X2xlbmd0aCA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaEZpbGUsIHRhcmdldF9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOwogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBvKTsKIAogICAgIGlmKCFDbG9zZUhhbmRsZShoRmlsZSkpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ2xvc2VIYW5kbGUiLCBwbyk7CiAKICAgICB0YXJnZXRfcGF0aFtyZXN1bHRfbGVuZ3RoXSA9IDA7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKICAgICBmcmVlKHRhcmdldF9wYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC0yODcyLDEzICszNzk5LDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfX2lzZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CisgICAgUHlPYmplY3QgKnBvOwogICAgIERXT1JEIGF0dHJpYnV0ZXM7CiAKICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2lzZGlyIiwgJnBvKSkgewotICAgICAgICBQeV9VTklDT0RFICp3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHBvKTsKKyAgICAgICAgd2NoYXJfdCAqd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHdwYXRoKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCkBAIC0yODg5LDExICszODE3LDEwIEBACiAgICAgICAgYXJlIGFsc28gdmFsaWQuICovCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6X2lzZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieTpfaXNkaXIiLCAmcGF0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgpOwogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CkBAIC0yOTA3LDY5ICszODM0LDcyIEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfbWtkaXJfX2RvY19fLAotIm1rZGlyKHBhdGggWywgbW9kZT0wNzc3XSlcblxuXAotQ3JlYXRlIGEgZGlyZWN0b3J5LiIpOworIm1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBkaXJlY3RvcnkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG5cCitcblwKK1RoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X21rZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBtb2RlID0gMDc3NzsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcmVzdWx0OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwKKyNpZmRlZiBIQVZFX01LRElSQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxpOm1rZGlyIiwgJnBvLCAmbW9kZSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICByZXMgPSBDcmVhdGVEaXJlY3RvcnlXKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIm1rZGlyIiwgUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgcmVzID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLCBOVUxMKTsKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgud2lkZSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlBKHBhdGgubmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yKCJta2RpciIsIHBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jZWxzZQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgIHJlcyA9IG1rZGlyKHBhdGgpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgibWtkaXIiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAjZWxzZQotICAgIHJlcyA9IG1rZGlyKHBhdGgsIG1vZGUpOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZiBIQVZFX01LRElSQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSBta2RpcmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmICggZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChQWUNDX1ZBQ1BQKSApICYmICFkZWZpbmVkKF9fUU5YX18pCisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93KTsKKyNlbHNlCisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93LCBtb2RlKTsKICNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigibWtkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAjZW5kaWYKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAKQEAgLTMwMTUsNzkgKzM5NDUsMjIwIEBACiB9CiAjZW5kaWYgLyogSEFWRV9OSUNFICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAotInJlbmFtZShvbGQsIG5ldylcblxuXAotUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnkuIik7CisKKyNpZmRlZiBIQVZFX0dFVFBSSU9SSVRZCitQeURvY19TVFJWQVIocG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19fLAorImdldHByaW9yaXR5KHdoaWNoLCB3aG8pIC0+IGN1cnJlbnRfcHJpb3JpdHlcblxuXAorR2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9nZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpvMSwgKm8yOwotICAgIGNoYXIgKnAxLCAqcDI7Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpyZW5hbWUiLCAmbzEsICZvMikpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJm8xKSkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoIWNvbnZlcnRfdG9fdW5pY29kZSgmbzIpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvMSk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBNb3ZlRmlsZVcoUHlVbmljb2RlX0FzVW5pY29kZShvMSksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUobzIpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvMSk7Ci0gICAgUHlfREVDUkVGKG8yKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJyZW5hbWUiLCBOVUxMKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci1lcnJvcjoKLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3M6cmVuYW1lIiwgJnAxLCAmcDIpKQorICAgIGludCB3aGljaCwgd2hvLCByZXR2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJndoaWNoLCAmd2hvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlc3VsdCA9IE1vdmVGaWxlQShwMSwgcDIpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigicmVuYW1lIiwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGVycm5vID0gMDsKKyAgICByZXR2YWwgPSBnZXRwcmlvcml0eSh3aGljaCwgd2hvKTsKKyAgICBpZiAoZXJybm8gIT0gMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylyZXR2YWwpOworfQorI2VuZGlmIC8qIEhBVkVfR0VUUFJJT1JJVFkgKi8KKworCisjaWZkZWYgSEFWRV9TRVRQUklPUklUWQorUHlEb2NfU1RSVkFSKHBvc2l4X3NldHByaW9yaXR5X19kb2NfXywKKyJzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKSAtPiBOb25lXG5cblwKK1NldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHdoaWNoLCB3aG8sIHByaW8sIHJldHZhbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpIiwgJndoaWNoLCAmd2hvLCAmcHJpbykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHZhbCA9IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pOworICAgIGlmIChyZXR2YWwgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfU0VUUFJJT1JJVFkgKi8KKworCitzdGF0aWMgUHlPYmplY3QgKgoraW50ZXJuYWxfcmVuYW1lKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLCBpbnQgaXNfcmVwbGFjZSkKK3sKKyAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIHBhdGhfdCBzcmM7CisgICAgcGF0aF90IGRzdDsKKyAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBmb3JtYXRbMjRdOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworCisjaWZkZWYgTVNfV0lORE9XUworICAgIEJPT0wgcmVzdWx0OworICAgIGludCBmbGFncyA9IGlzX3JlcGxhY2UgPyBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HIDogMDsKICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4XzJzdHIoYXJncywgIk8mTyY6cmVuYW1lIiwgcmVuYW1lKTsKKyAgICBpbnQgcmVzdWx0OwogI2VuZGlmCisKKyAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOworICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgc3RyY3B5KGZvcm1hdCwgIk8mTyZ8JE8mTyY6Iik7CisgICAgc3RyY2F0KGZvcm1hdCwgZnVuY3Rpb25fbmFtZSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmb3JtYXQsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZGlyX2ZkX3NwZWNpZmllZCA9IChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCk7CisjaWZuZGVmIEhBVkVfUkVOQU1FQVQKKyAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkgeworICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIiwgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChzcmMud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLndpZGUsIGRzdC53aWRlLCBmbGFncyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMubmFycm93LCBkc3QubmFycm93LCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdChmdW5jdGlvbl9uYW1lLCBkc3Qub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2Vsc2UKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9SRU5BTUVBVAorICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQorICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMubmFycm93LCBkc3RfZGlyX2ZkLCBkc3QubmFycm93KTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoZnVuY3Rpb25fbmFtZSwgJmRzdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKK1B5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAorInJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG5cblwKK1JlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoYXJncywga3dhcmdzLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3JlcGxhY2VfX2RvY19fLAorInJlcGxhY2Uoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMSk7Cit9CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9ybWRpcl9fZG9jX18sCi0icm1kaXIocGF0aClcblxuXAotUmVtb3ZlIGEgZGlyZWN0b3J5LiIpOworInJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBkaXJlY3RvcnkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ybWRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ybWRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJybWRpciIsICJ5OnJtZGlyIiwgUmVtb3ZlRGlyZWN0b3J5QSwgIlU6cm1kaXIiLCBSZW1vdmVEaXJlY3RvcnlXKTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpybWRpciIsIHJtZGlyKTsKKyAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAogI2VuZGlmCi19CisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotCi1QeURvY19TVFJWQVIocG9zaXhfc3RhdF9fZG9jX18sCi0ic3RhdChwYXRoKSAtPiBzdGF0IHJlc3VsdFxuXG5cCi1QZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoteworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOnN0YXQiLCBTVEFULCAiVTpzdGF0Iiwgd2luMzJfc3RhdF93KTsKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlBKHBhdGgubmFycm93KTsKKyAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLwogI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfZG9fc3RhdChzZWxmLCBhcmdzLCAiTyY6c3RhdCIsIFNUQVQsIE5VTEwsIE5VTEwpOworI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCBBVF9SRU1PVkVESVIpOworICAgIGVsc2UKICNlbmRpZgorICAgICAgICByZXN1bHQgPSBybWRpcihwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJybWRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogCkBAIC0zMTc5LDE2MyArNDI1MCw0NjggQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5RG9jX1NUUlZBUihwb3NpeF91bmxpbmtfX2RvY19fLAotInVubGluayhwYXRoKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZShwYXRoKSkuIik7CisidW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZV9fZG9jX18sCi0icmVtb3ZlKHBhdGgpXG5cblwKLVJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKHBhdGgpKS4iKTsKKyJyZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK1JlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdW5saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3VubGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJyZW1vdmUiLCAieTpyZW1vdmUiLCBEZWxldGVGaWxlQSwKLSAgICAgICAgICAgICAgICAgICAgICAiVTpyZW1vdmUiLCBQeV9EZWxldGVGaWxlVyk7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnVubGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOnJlbW92ZSIsIHVubGluayk7CisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgorICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIHJlc3VsdCA9IFB5X0RlbGV0ZUZpbGVXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyNlbHNlCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIDApOworICAgIGVsc2UKKyNlbmRpZiAvKiBIQVZFX1VOTElOS0FUICovCisgICAgICAgIHJlc3VsdCA9IHVubGluayhwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJ1bmxpbmsiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIAotI2lmZGVmIEhBVkVfVU5BTUUKIFB5RG9jX1NUUlZBUihwb3NpeF91bmFtZV9fZG9jX18sCi0idW5hbWUoKSAtPiAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpXG5cblwKLVJldHVybiBhIHR1cGxlIGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisidW5hbWUoKSAtPiB1bmFtZV9yZXN1bHRcblxuXAorUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuXAorVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuXAorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpIik7CiAKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHVuYW1lX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InN5c25hbWUiLCAgICAib3BlcmF0aW5nIHN5c3RlbSBuYW1lIn0sCisgICAgeyJub2RlbmFtZSIsICAgIm5hbWUgb2YgbWFjaGluZSBvbiBuZXR3b3JrIChpbXBsZW1lbnRhdGlvbi1kZWZpbmVkKSJ9LAorICAgIHsicmVsZWFzZSIsICAgICJvcGVyYXRpbmcgc3lzdGVtIHJlbGVhc2UifSwKKyAgICB7InZlcnNpb24iLCAgICAib3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uIn0sCisgICAgeyJtYWNoaW5lIiwgICAgImhhcmR3YXJlIGlkZW50aWZpZXIifSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUih1bmFtZV9yZXN1bHRfX2RvY19fLAorInVuYW1lX3Jlc3VsdDogUmVzdWx0IGZyb20gb3MudW5hbWUoKS5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIGFuZCBtYWNoaW5lLlxuXAorXG5cCitTZWUgb3MudW5hbWUgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgdW5hbWVfcmVzdWx0X2Rlc2MgPSB7CisgICAgInVuYW1lX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB1bmFtZV9yZXN1bHRfX2RvY19fLCAvKiBkb2MgKi8KKyAgICB1bmFtZV9yZXN1bHRfZmllbGRzLAorICAgIDUKK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgVW5hbWVSZXN1bHRUeXBlOworCisKKyNpZmRlZiBIQVZFX1VOQU1FCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfdW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CiAgICAgc3RydWN0IHV0c25hbWUgdTsKICAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSB1bmFtZSgmdSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihzc3NzcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUuc3lzbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1Lm5vZGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUucmVsZWFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS5tYWNoaW5lKTsKKworICAgIHZhbHVlID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlVuYW1lUmVzdWx0VHlwZSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisjZGVmaW5lIFNFVChpLCBmaWVsZCkgXAorICAgIHsgXAorICAgIFB5T2JqZWN0ICpvID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGZpZWxkLCBzdHJsZW4oZmllbGQpLCBOVUxMKTsgXAorICAgIGlmICghbykgeyBcCisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9IFwKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHZhbHVlLCBpLCBvKTsgXAorICAgIH0gXAorCisgICAgU0VUKDAsIHUuc3lzbmFtZSk7CisgICAgU0VUKDEsIHUubm9kZW5hbWUpOworICAgIFNFVCgyLCB1LnJlbGVhc2UpOworICAgIFNFVCgzLCB1LnZlcnNpb24pOworICAgIFNFVCg0LCB1Lm1hY2hpbmUpOworCisjdW5kZWYgU0VUCisKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9VTkFNRSAqLwogCi1zdGF0aWMgaW50Ci1leHRyYWN0X3RpbWUoUHlPYmplY3QgKnQsIHRpbWVfdCogc2VjLCBsb25nKiB1c2VjKQotewotICAgIHRpbWVfdCBpbnR2YWw7Ci0gICAgaWYgKFB5RmxvYXRfQ2hlY2sodCkpIHsKLSAgICAgICAgZG91YmxlIHR2YWwgPSBQeUZsb2F0X0FzRG91YmxlKHQpOwotICAgICAgICBQeU9iamVjdCAqaW50b2JqID0gUHlOdW1iZXJfTG9uZyh0KTsKLSAgICAgICAgaWYgKCFpbnRvYmopCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgICAgIGludHZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKGludG9iaik7Ci0jZWxzZQotICAgICAgICBpbnR2YWwgPSBQeUxvbmdfQXNMb25nKGludG9iaik7Ci0jZW5kaWYKLSAgICAgICAgUHlfREVDUkVGKGludG9iaik7Ci0gICAgICAgIGlmIChpbnR2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKnNlYyA9IGludHZhbDsKLSAgICAgICAgKnVzZWMgPSAobG9uZykoKHR2YWwgLSBpbnR2YWwpICogMWU2KTsgLyogY2FuJ3QgZXhjZWVkIDEwMDAwMDAgKi8KLSAgICAgICAgaWYgKCp1c2VjIDwgMCkKLSAgICAgICAgICAgIC8qIElmIHJvdW5kaW5nIGdhdmUgdXMgYSBuZWdhdGl2ZSBudW1iZXIsCi0gICAgICAgICAgICAgICB0cnVuY2F0ZS4gICovCi0gICAgICAgICAgICAqdXNlYyA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKLSAgICBpbnR2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh0KTsKLSNlbHNlCi0gICAgaW50dmFsID0gUHlMb25nX0FzTG9uZyh0KTsKLSNlbmRpZgotICAgIGlmIChpbnR2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICpzZWMgPSBpbnR2YWw7Ci0gICAgKnVzZWMgPSAwOwotICAgIHJldHVybiAwOwotfQogCiBQeURvY19TVFJWQVIocG9zaXhfdXRpbWVfX2RvY19fLAotInV0aW1lKHBhdGgsIChhdGltZSwgbXRpbWUpKVxuXAotdXRpbWUocGF0aCwgTm9uZSlcblxuXAotU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgdGhlIGZpbGUgdG8gdGhlIGdpdmVuIHZhbHVlcy4gIElmIHRoZVxuXAotc2Vjb25kIGZvcm0gaXMgdXNlZCwgc2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIHRvIHRoZSBjdXJyZW50IHRpbWUuIik7CisidXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKiwgbnM9Tm9uZSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXAorU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAorXG5cCitJZiB0aW1lcyBpcyBub3QgTm9uZSwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpO1xuXAorICAgIGF0aW1lIGFuZCBtdGltZSBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGZsb2F0IHNlY29uZHMgc2luY2UgdGhlIGVwb2NoLlxuXAorSWYgbnMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTtcblwKKyAgICBhdGltZV9ucyBhbmQgbXRpbWVfbnMgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBpbnRlZ2VyIG5hbm9zZWNvbmRzXG5cCisgICAgc2luY2UgdGhlIGVwb2NoLlxuXAorSWYgYm90aCB0aW1lcyBhbmQgbnMgYXJlIE5vbmUsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS5cblwKK1NwZWNpZnlpbmcgdHVwbGVzIGZvciBib3RoIHRpbWVzIGFuZCBucyBpcyBhbiBlcnJvci5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aFxuXAorICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqYXJnOwotICAgIFB5VW5pY29kZU9iamVjdCAqb2J3cGF0aDsKLSAgICB3Y2hhcl90ICp3cGF0aCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm9hcGF0aDsKLSAgICBjaGFyICphcGF0aDsKLSAgICBIQU5ETEUgaEZpbGU7Ci0gICAgdGltZV90IGF0aW1lc2VjLCBtdGltZXNlYzsKLSAgICBsb25nIGF1c2VjLCBtdXNlYzsKLSAgICBGSUxFVElNRSBhdGltZSwgbXRpbWU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Cit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50ICAgIG5vdzsKKyAgICB0aW1lX3QgYXRpbWVfczsKKyAgICBsb25nICAgYXRpbWVfbnM7CisgICAgdGltZV90IG10aW1lX3M7CisgICAgbG9uZyAgIG10aW1lX25zOworfSB1dGltZV90OwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPfDp1dGltZSIsICZvYndwYXRoLCAmYXJnKSkgewotICAgICAgICB3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9id3BhdGgpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcod3BhdGgsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInV0aW1lIiwgd3BhdGgpOwotICAgIH0gZWxzZQotICAgICAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgICAgICBQeUVycl9DbGVhcigpOworLyoKKyAqIHRoZXNlIG1hY3JvcyBhc3N1bWUgdGhhdCAidXRpbWUiIGlzIGEgcG9pbnRlciB0byBhIHV0aW1lX3QKKyAqIHRoZXkgYWxzbyBpbnRlbnRpb25hbGx5IGxlYWsgdGhlIGRlY2xhcmF0aW9uIG9mIGEgcG9pbnRlciBuYW1lZCAidGltZSIKKyAqLworI2RlZmluZSBVVElNRV9UT19USU1FU1BFQyBcCisgICAgc3RydWN0IHRpbWVzcGVjIHRzWzJdOyBcCisgICAgc3RydWN0IHRpbWVzcGVjICp0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0c1swXS50dl9zZWMgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0c1swXS50dl9uc2VjID0gdXRpbWUtPmF0aW1lX25zOyBcCisgICAgICAgIHRzWzFdLnR2X3NlYyA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHRzWzFdLnR2X25zZWMgPSB1dGltZS0+bXRpbWVfbnM7IFwKKyAgICAgICAgdGltZSA9IHRzOyBcCisgICAgfSBcCiAKLSAgICBpZiAoIXdwYXRoKSB7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOnV0aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9hcGF0aCwgJmFyZykpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9hcGF0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShhcGF0aCwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIGFwYXRoKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYXBhdGgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG9hcGF0aCk7CisjZGVmaW5lIFVUSU1FX1RPX1RJTUVWQUwgXAorICAgIHN0cnVjdCB0aW1ldmFsIHR2WzJdOyBcCisgICAgc3RydWN0IHRpbWV2YWwgKnRpbWU7IFwKKyAgICBpZiAodXRpbWUtPm5vdykgXAorICAgICAgICB0aW1lID0gTlVMTDsgXAorICAgIGVsc2UgeyBcCisgICAgICAgIHR2WzBdLnR2X3NlYyA9IHV0aW1lLT5hdGltZV9zOyBcCisgICAgICAgIHR2WzBdLnR2X3VzZWMgPSB1dGltZS0+YXRpbWVfbnMgLyAxMDAwOyBcCisgICAgICAgIHR2WzFdLnR2X3NlYyA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHR2WzFdLnR2X3VzZWMgPSB1dGltZS0+bXRpbWVfbnMgLyAxMDAwOyBcCisgICAgICAgIHRpbWUgPSB0djsgXAorICAgIH0gXAorCisjZGVmaW5lIFVUSU1FX1RPX1VUSU1CVUYgXAorICAgIHN0cnVjdCB1dGltYnVmIHVbMl07IFwKKyAgICBzdHJ1Y3QgdXRpbWJ1ZiAqdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdS5hY3RpbWUgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB1Lm1vZHRpbWUgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0aW1lID0gdTsgXAogICAgIH0KIAotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgeworI2RlZmluZSBVVElNRV9UT19USU1FX1QgXAorICAgIHRpbWVfdCB0aW1ldFsyXTsgXAorICAgIHN0cnVjdCB0aW1ldCB0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0aW1ldFswXSA9IHV0aW1lLT5hdGltZV9zOyBcCisgICAgICAgIHRpbWV0WzFdID0gdXRpbWUtPm10aW1lX3M7IFwKKyAgICAgICAgdGltZSA9ICZ0aW1ldDsgXAorICAgIH0gXAorCisKKyNkZWZpbmUgVVRJTUVfSEFWRV9ESVJfRkQgKGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpKQorCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKworc3RhdGljIGludAordXRpbWVfZGlyX2ZkKHV0aW1lX3QgKnV0aW1lLCBpbnQgZGlyX2ZkLCBjaGFyICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKQoreworI2lmZGVmIEhBVkVfVVRJTUVOU0FUCisgICAgaW50IGZsYWdzID0gZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1c7CisgICAgVVRJTUVfVE9fVElNRVNQRUM7CisgICAgcmV0dXJuIHV0aW1lbnNhdChkaXJfZmQsIHBhdGgsIHRpbWUsIGZsYWdzKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICAvKgorICAgICAqIGZvbGxvd19zeW1saW5rcyB3aWxsIG5ldmVyIGJlIGZhbHNlIGhlcmU7CisgICAgICogd2Ugb25seSBhbGxvdyAhZm9sbG93X3N5bWxpbmtzIGFuZCBkaXJfZmQgdG9nZXRoZXIKKyAgICAgKiBpZiB3ZSBoYXZlIHV0aW1lbnNhdCgpCisgICAgICovCisgICAgYXNzZXJ0KGZvbGxvd19zeW1saW5rcyk7CisgICAgcmV0dXJuIGZ1dGltZXNhdChkaXJfZmQsIHBhdGgsIHRpbWUpOworI2VuZGlmCit9CisKKyNlbmRpZgorCisjZGVmaW5lIFVUSU1FX0hBVkVfRkQgKGRlZmluZWQoSEFWRV9GVVRJTUVTKSB8fCBkZWZpbmVkKEhBVkVfRlVUSU1FTlMpKQorCisjaWYgVVRJTUVfSEFWRV9GRAorCitzdGF0aWMgaW50Cit1dGltZV9mZCh1dGltZV90ICp1dGltZSwgaW50IGZkKQoreworI2lmZGVmIEhBVkVfRlVUSU1FTlMKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gZnV0aW1lbnMoZmQsIHRpbWUpOworI2Vsc2UKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiBmdXRpbWVzKGZkLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworCisjZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAorICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQorCisjaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworCitzdGF0aWMgaW50Cit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dGltZSwgY2hhciAqcGF0aCkKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoREVGQVVMVF9ESVJfRkQsIHBhdGgsIHRpbWUsIEFUX1NZTUxJTktfTk9GT0xMT1cpOworI2Vsc2UKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiBsdXRpbWVzKHBhdGgsIHRpbWUpOworI2VuZGlmCit9CisKKyNlbmRpZgorCisjaWZuZGVmIE1TX1dJTkRPV1MKKworc3RhdGljIGludAordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dGltZSwgY2hhciAqcGF0aCkKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoREVGQVVMVF9ESVJfRkQsIHBhdGgsIHRpbWUsIDApOworI2VsaWYgZGVmaW5lZChIQVZFX1VUSU1FUykKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiB1dGltZXMocGF0aCwgdGltZSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfVVRJTUVfSCkKKyAgICBVVElNRV9UT19VVElNQlVGOworICAgIHJldHVybiB1dGltZShwYXRoLCB0aW1lKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRV9UOworICAgIHJldHVybiB1dGltZShwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworc3RhdGljIGludAorc3BsaXRfcHlfbG9uZ190b19zX2FuZF9ucyhQeU9iamVjdCAqcHlfbG9uZywgdGltZV90ICpzLCBsb25nICpucykKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBQeU9iamVjdCAqZGl2bW9kOworICAgIGRpdm1vZCA9IFB5TnVtYmVyX0Rpdm1vZChweV9sb25nLCBiaWxsaW9uKTsKKyAgICBpZiAoIWRpdm1vZCkKKyAgICAgICAgZ290byBleGl0OworICAgICpzID0gX1B5TG9uZ19Bc1RpbWVfdChQeVR1cGxlX0dFVF9JVEVNKGRpdm1vZCwgMCkpOworICAgIGlmICgoKnMgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAqbnMgPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oZGl2bW9kLCAxKSk7CisgICAgaWYgKCgqbnMgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIHJlc3VsdCA9IDE7CitleGl0OgorICAgIFB5X1hERUNSRUYoZGl2bW9kKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgdXRpbWVfdCB1dGltZTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBIQU5ETEUgaEZpbGU7CisgICAgRklMRVRJTUUgYXRpbWUsIG10aW1lOworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCisKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZiBVVElNRV9IQVZFX0ZECisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICAgICAiTyZ8TyRPTyZwOnV0aW1lIiwga2V5d29yZHMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAmdGltZXMsICZucywKKyNpZiBVVElNRV9IQVZFX0RJUl9GRAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKKyNlbHNlCisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHRpbWVzICYmICh0aW1lcyAhPSBQeV9Ob25lKSAmJiBucykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogeW91IG1heSBzcGVjaWZ5IGVpdGhlciAndGltZXMnIgorICAgICAgICAgICAgICAgICAgICAgIiBvciAnbnMnIGJ1dCBub3QgYm90aCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgaWYgKHRpbWVzICYmICh0aW1lcyAhPSBQeV9Ob25lKSkgeworICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdCh0aW1lcykgfHwgKFB5VHVwbGVfU2l6ZSh0aW1lcykgIT0gMikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInV0aW1lOiAndGltZXMnIG11c3QgYmUgZWl0aGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgYSB0dXBsZSBvZiB0d28gaW50cyBvciBOb25lIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdXRpbWUubm93ID0gMDsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUuYXRpbWVfcywgJnV0aW1lLmF0aW1lX25zKSA9PSAtMSB8fAorICAgICAgICAgICAgX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5VHVwbGVfR0VUX0lURU0odGltZXMsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5tdGltZV9zLCAmdXRpbWUubXRpbWVfbnMpID09IC0xKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobnMpIHsKKyAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3QobnMpIHx8IChQeVR1cGxlX1NpemUobnMpICE9IDIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogJ25zJyBtdXN0IGJlIGEgdHVwbGUgb2YgdHdvIGludHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICB1dGltZS5ub3cgPSAwOworICAgICAgICBpZiAoIXNwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlUdXBsZV9HRVRfSVRFTShucywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5hdGltZV9zLCAmdXRpbWUuYXRpbWVfbnMpIHx8CisgICAgICAgICAgICAhc3BsaXRfcHlfbG9uZ190b19zX2FuZF9ucyhQeVR1cGxlX0dFVF9JVEVNKG5zLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5tdGltZV9zLCAmdXRpbWUubXRpbWVfbnMpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHRpbWVzIGFuZCBucyBhcmUgYm90aCBOb25lL3Vuc3BlY2lmaWVkLiB1c2UgIm5vdyIuICovCisgICAgICAgIHV0aW1lLm5vdyA9IDE7CisgICAgfQorCisjaWYgIVVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgidXRpbWUiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKworICAgIGlmIChwYXRoX2FuZF9kaXJfZmRfaW52YWxpZCgidXRpbWUiLCAmcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInV0aW1lIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInV0aW1lIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisjaWYgIWRlZmluZWQoSEFWRV9VVElNRU5TQVQpCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyAiCisgICAgICAgICAgICAgICAgICAgICAidG9nZXRoZXIgb24gdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgubmFycm93LCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJ1dGltZSIsIHBhdGgub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGlmICh1dGltZS5ub3cpIHsKICAgICAgICAgU1lTVEVNVElNRSBub3c7CiAgICAgICAgIEdldFN5c3RlbVRpbWUoJm5vdyk7CiAgICAgICAgIGlmICghU3lzdGVtVGltZVRvRmlsZVRpbWUoJm5vdywgJm10aW1lKSB8fAogICAgICAgICAgICAgIVN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3csICZhdGltZSkpIHsKICAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIE5VTEwpOwotICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZykgfHwgUHlUdXBsZV9TaXplKGFyZykgIT0gMikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInV0aW1lKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICZhdGltZXNlYywgJmF1c2VjKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRShhdGltZXNlYywgMTAwMCphdXNlYywgJmF0aW1lKTsKLSAgICAgICAgaWYgKGV4dHJhY3RfdGltZShQeVR1cGxlX0dFVF9JVEVNKGFyZywgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJm10aW1lc2VjLCAmbXVzZWMpID09IC0xKQotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKG10aW1lc2VjLCAxMDAwKm11c2VjLCAmbXRpbWUpOworICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLmF0aW1lX3MsIHV0aW1lLmF0aW1lX25zLCAmYXRpbWUpOworICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLm10aW1lX3MsIHV0aW1lLm10aW1lX25zLCAmbXRpbWUpOwogICAgIH0KICAgICBpZiAoIVNldEZpbGVUaW1lKGhGaWxlLCBOVUxMLCAmYXRpbWUsICZtdGltZSkpIHsKICAgICAgICAgLyogQXZvaWQgcHV0dGluZyB0aGUgZmlsZSBuYW1lIGludG8gdGhlIGVycm9yIGhlcmUsCkBAIC0zMzQzLDkzICs0NzE5LDUyIEBACiAgICAgICAgICAgIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBmaWxlLCB3aGVuIGl0IGFsc28KICAgICAgICAgICAgY291bGQgYmUgdGhlIHRpbWUgc3RhbXAgdGhhdCBnaXZlcyBhIHByb2JsZW0uICovCiAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIE5VTEwpOwotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJlc3VsdCA9IFB5X05vbmU7Ci1kb25lOgotICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLyogTVNfV0lORE9XUyAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIHRpbWVfdCBhdGltZSwgbXRpbWU7Ci0gICAgbG9uZyBhdXNlYywgbXVzZWM7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCogYXJnOworI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgubmFycm93KTsKKyAgICBlbHNlCisjZW5kaWYKIAotI2lmIGRlZmluZWQoSEFWRV9VVElNRVMpCi0gICAgc3RydWN0IHRpbWV2YWwgYnVmWzJdOwotI2RlZmluZSBBVElNRSBidWZbMF0udHZfc2VjCi0jZGVmaW5lIE1USU1FIGJ1ZlsxXS50dl9zZWMKLSNlbGlmIGRlZmluZWQoSEFWRV9VVElNRV9IKQotLyogWFhYIHNob3VsZCBkZWZpbmUgc3RydWN0IHV0aW1idWYgaW5zdGVhZCwgYWJvdmUgKi8KLSAgICBzdHJ1Y3QgdXRpbWJ1ZiBidWY7Ci0jZGVmaW5lIEFUSU1FIGJ1Zi5hY3RpbWUKLSNkZWZpbmUgTVRJTUUgYnVmLm1vZHRpbWUKLSNkZWZpbmUgVVRJTUVfQVJHICZidWYKLSNlbHNlIC8qIEhBVkVfVVRJTUVTICovCi0gICAgdGltZV90IGJ1ZlsyXTsKLSNkZWZpbmUgQVRJTUUgYnVmWzBdCi0jZGVmaW5lIE1USU1FIGJ1ZlsxXQotI2RlZmluZSBVVElNRV9BUkcgYnVmCi0jZW5kaWYgLyogSEFWRV9VVElNRVMgKi8KKyNpZiBVVElNRV9IQVZFX0RJUl9GRAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoIWZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJlc3VsdCA9IHV0aW1lX2Rpcl9mZCgmdXRpbWUsIGRpcl9mZCwgcGF0aC5uYXJyb3csIGZvbGxvd19zeW1saW5rcyk7CisgICAgZWxzZQorI2VuZGlmCiAKKyNpZiBVVElNRV9IQVZFX0ZECisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IHV0aW1lX2ZkKCZ1dGltZSwgcGF0aC5mZCk7CisgICAgZWxzZQorI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzp1dGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICAvKiBvcHRpb25hbCB0aW1lIHZhbHVlcyBub3QgZ2l2ZW4gKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSB1dGltZShwYXRoLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSB1dGltZV9kZWZhdWx0KCZ1dGltZSwgcGF0aC5uYXJyb3cpOworCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIC8qIHNlZSBwcmV2aW91cyBjb21tZW50IGFib3V0IG5vdCBwdXR0aW5nIGZpbGVuYW1lIGluIGVycm9yIGhlcmUgKi8KKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpIHx8IFB5VHVwbGVfU2l6ZShhcmcpICE9IDIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZSgpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKSIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICZhdGltZSwgJmF1c2VjKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZtdGltZSwgJm11c2VjKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIEFUSU1FID0gYXRpbWU7Ci0gICAgICAgIE1USU1FID0gbXRpbWU7Ci0jaWZkZWYgSEFWRV9VVElNRVMKLSAgICAgICAgYnVmWzBdLnR2X3VzZWMgPSBhdXNlYzsKLSAgICAgICAgYnVmWzFdLnR2X3VzZWMgPSBtdXNlYzsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSB1dGltZXMocGF0aCwgYnVmKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbHNlCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWUocGF0aCwgVVRJTUVfQVJHKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbmRpZiAvKiBIQVZFX1VUSU1FUyAqLwotICAgIH0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLSN1bmRlZiBVVElNRV9BUkcKLSN1bmRlZiBBVElNRQotI3VuZGVmIE1USU1FCisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCi19CiAKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoaEZpbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKKyNlbmRpZgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CiAKIC8qIFByb2Nlc3Mgb3BlcmF0aW9ucyAqLwogCkBAIC0zNDc0LDc5ICs0ODA5LDcgQEAKIH0KICNlbmRpZgogCi0KLSNpZmRlZiBIQVZFX0VYRUNWCi1QeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAotImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKLUV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndjsKLSAgICBjaGFyICoqYXJndmxpc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmdjOwotICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwotCi0gICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKLSAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlUdXBsZV9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChhcmdjIDwgMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOwotICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cCgoKmdldGl0ZW0pKGFyZ3YsIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3ZsaXN0W2ldKSkgewotICAgICAgICAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGkpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3YoKSBhcmcgMiBtdXN0IGNvbnRhaW4gb25seSBzdHJpbmdzIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgfQotICAgIH0KLSAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7Ci0KLSAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7Ci0KLSAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KLQotICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotfQotCisjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkIChIQVZFX0ZFWEVDVkUpCiBzdGF0aWMgY2hhcioqCiBwYXJzZV9lbnZsaXN0KFB5T2JqZWN0KiBlbnYsIFB5X3NzaXplX3QgKmVudmNfcHRyKQogewpAQCAtMzYyOCw4NyArNDg5MSwxNjIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIGNoYXIqKgorcGFyc2VfYXJnbGlzdChQeU9iamVjdCogYXJndiwgUHlfc3NpemVfdCAqYXJnYykKK3sKKyAgICBpbnQgaTsKKyAgICBjaGFyICoqYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCAqYXJnYysxKTsKKyAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8ICphcmdjOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QqIGl0ZW0gPSBQeVNlcXVlbmNlX0lURU0oYXJndiwgaSk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChpdGVtLCAmYXJndmxpc3RbaV0pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIH0KKyAgICBhcmd2bGlzdFsqYXJnY10gPSBOVUxMOworICAgIHJldHVybiBhcmd2bGlzdDsKK2ZhaWw6CisgICAgKmFyZ2MgPSBpOworICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfRVhFQ1YKK1B5RG9jX1NUUlZBUihwb3NpeF9leGVjdl9fZG9jX18sCisiZXhlY3YocGF0aCwgYXJncylcblxuXAorRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCitcblwKKyAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAorICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZXhlY3YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvcGF0aDsKKyAgICBjaGFyICpwYXRoOworICAgIFB5T2JqZWN0ICphcmd2OworICAgIGNoYXIgKiphcmd2bGlzdDsKKyAgICBQeV9zc2l6ZV90IGFyZ2M7CisKKyAgICAvKiBleGVjdiBoYXMgdHdvIGFyZ3VtZW50czogKHBhdGgsIGFyZ3YpLCB3aGVyZQorICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzpleGVjdiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBpZiAoIVB5TGlzdF9DaGVjayhhcmd2KSAmJiAhUHlUdXBsZV9DaGVjayhhcmd2KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFyZ2MgPSBQeVNlcXVlbmNlX1NpemUoYXJndik7CisgICAgaWYgKGFyZ2MgPCAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXhlY3YoKSBhcmcgMiBtdXN0IG5vdCBiZSBlbXB0eSIpOworICAgICAgICBQeV9ERUNSRUYob3BhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOworICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGV4ZWN2KHBhdGgsIGFyZ3ZsaXN0KTsKKworICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLworCisgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOworICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Cit9CisKIFB5RG9jX1NUUlZBUihwb3NpeF9leGVjdmVfX2RvY19fLAogImV4ZWN2ZShwYXRoLCBhcmdzLCBlbnYpXG5cblwKIEV4ZWN1dGUgYSBwYXRoIHdpdGggYXJndW1lbnRzIGFuZCBlbnZpcm9ubWVudCwgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKIFxuXAogICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCiAgICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MiKTsKKyAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3NcblwKK1xuXAorT24gc29tZSBwbGF0Zm9ybXMsIHlvdSBtYXkgc3BlY2lmeSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgcGF0aDtcblwKKyAgZXhlY3ZlIHdpbGwgZXhlY3V0ZSB0aGUgcHJvZ3JhbSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG9wZW4gdG8uXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBQeU9iamVjdCAqYXJndiwgKmVudjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgY2hhciAqKmFyZ3ZsaXN0ID0gTlVMTDsKICAgICBjaGFyICoqZW52bGlzdDsKLSAgICBQeV9zc2l6ZV90IGksIGFyZ2MsIGVudmM7Ci0gICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7Ci0gICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKKyAgICBQeV9zc2l6ZV90IGFyZ2MsIGVudmM7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnZpcm9ubWVudCIsIE5VTEx9OwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MgYW5kIGVudiBpcyBhIGRpY3Rpb25hcnkKICAgICAgICBsaWtlIHBvc2l4LmVudmlyb24uICovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mT086ZXhlY3ZlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2LCAmZW52KSkKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GRVhFQ1ZFCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk9POmV4ZWN2ZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2LCAmZW52CisgICAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKLSAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeVR1cGxlX1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeVR1cGxlX0dldEl0ZW07Ci0gICAgfQotICAgIGVsc2UgeworCisgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmUoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwotICAgICAgICBnb3RvIGZhaWxfMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmU6IGFyZ3YgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KKyAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOwogICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGVudikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmUoKSBhcmcgMyBtdXN0IGJlIGEgbWFwcGluZyBvYmplY3QiKTsKLSAgICAgICAgZ290byBmYWlsXzA7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBlbnZpcm9ubWVudCBtdXN0IGJlIGEgbWFwcGluZyBvYmplY3QiKTsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KIAotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKKyAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZmFpbF8wOworICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgaWYgKCFmc2NvbnZlcnRfc3RyZHVwKCgqZ2V0aXRlbSkoYXJndiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndmxpc3RbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBsYXN0YXJnID0gaTsKLSAgICAgICAgICAgIGdvdG8gZmFpbF8xOwotICAgICAgICB9Ci0gICAgfQotICAgIGxhc3RhcmcgPSBhcmdjOwotICAgIGFyZ3ZsaXN0W2FyZ2NdID0gTlVMTDsKIAogICAgIGVudmxpc3QgPSBwYXJzZV9lbnZsaXN0KGVudiwgJmVudmMpOwogICAgIGlmIChlbnZsaXN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbF8xOworICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBleGVjdmUocGF0aCwgYXJndmxpc3QsIGVudmxpc3QpOworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgIGZleGVjdmUocGF0aC5mZCwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBleGVjdmUocGF0aC5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCi0gICAgKHZvaWQpIHBvc2l4X2Vycm9yKCk7CisgICAgcGF0aF9wb3NpeF9lcnJvcigiZXhlY3ZlIiwgJnBhdGgpOwogCiAgICAgd2hpbGUgKC0tZW52YyA+PSAwKQogICAgICAgICBQeU1lbV9ERUwoZW52bGlzdFtlbnZjXSk7CiAgICAgUHlNZW1fREVMKGVudmxpc3QpOwotICBmYWlsXzE6Ci0gICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGxhc3RhcmcpOwotICBmYWlsXzA6Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgZmFpbDoKKyAgICBpZiAoYXJndmxpc3QpCisgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIHJldHVybiBOVUxMOwogfQogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KQEAgLTQxNTMsNiArNTQ5MSw0MDUgQEAKIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisKKyNpZmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KVxuXG5cCitHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgKnBvbGljeSouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9saWN5LCBtYXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsICZwb2xpY3kpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYXggPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSk7CisgICAgaWYgKG1heCA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWF4KTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KVxuXG5cCitHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgKnBvbGljeSouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9saWN5LCBtaW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsICZwb2xpY3kpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtaW4gPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CisgICAgaWYgKG1pbiA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWluKTsKK30KKworI2VuZGlmIC8qIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCAqLworCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX18sCisic2NoZWRfZ2V0c2NoZWR1bGVyKHBpZClcblxuXAorR2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBhIFBJRCBvZiAqcGlkKi5cblwKK1Bhc3NpbmcgYSBQSUQgb2YgMCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX2dldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwb2xpY3kgPSBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKTsKKyAgICBpZiAocG9saWN5IDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhwb2xpY3kpOworfQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkKKworc3RhdGljIFB5T2JqZWN0ICoKK3NjaGVkX3BhcmFtX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXMsICpwcmlvcml0eTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwga3dsaXN0LCAmcHJpb3JpdHkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldyh0eXBlKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKHByaW9yaXR5KTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgcHJpb3JpdHkpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5RG9jX1NUUlZBUihzY2hlZF9wYXJhbV9fZG9jX18sCisic2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpOiBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLlxuXG5cCitDdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHkiKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgc2NoZWRfcGFyYW1fZmllbGRzW10gPSB7CisgICAgeyJzY2hlZF9wcmlvcml0eSIsICJ0aGUgc2NoZWR1bGluZyBwcmlvcml0eSJ9LAorICAgIHswfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBzY2hlZF9wYXJhbV9kZXNjID0geworICAgICJzY2hlZF9wYXJhbSIsIC8qIG5hbWUgKi8KKyAgICBzY2hlZF9wYXJhbV9fZG9jX18sIC8qIGRvYyAqLworICAgIHNjaGVkX3BhcmFtX2ZpZWxkcywKKyAgICAxCit9OworCitzdGF0aWMgaW50Citjb252ZXJ0X3NjaGVkX3BhcmFtKFB5T2JqZWN0ICpwYXJhbSwgc3RydWN0IHNjaGVkX3BhcmFtICpyZXMpCit7CisgICAgbG9uZyBwcmlvcml0eTsKKworICAgIGlmIChQeV9UWVBFKHBhcmFtKSAhPSAmU2NoZWRQYXJhbVR5cGUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm11c3QgaGF2ZSBhIHNjaGVkX3BhcmFtIG9iamVjdCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcHJpb3JpdHkgPSBQeUxvbmdfQXNMb25nKFB5U3RydWN0U2VxdWVuY2VfR0VUX0lURU0ocGFyYW0sIDApKTsKKyAgICBpZiAocHJpb3JpdHkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHByaW9yaXR5ID4gSU5UX01BWCB8fCBwcmlvcml0eSA8IElOVF9NSU4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzY2hlZF9wcmlvcml0eSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJlcy0+c2NoZWRfcHJpb3JpdHkgPSBQeV9TQUZFX0RPV05DQVNUKHByaW9yaXR5LCBsb25nLCBpbnQpOworICAgIHJldHVybiAxOworfQorCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pXG5cblwKK1NldCB0aGUgc2NoZWR1bGluZyBwb2xpY3ksICpwb2xpY3kqLCBmb3IgKnBpZCouXG5cCitJZiAqcGlkKiBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuXG5cCisqcGFyYW0qIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBwaWRfdCBwaWQ7CisgICAgaW50IHBvbGljeTsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZwb2xpY3ksICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qCisgICAgKiogc2NoZWRfc2V0c2NoZWR1bGVyKCkgcmV0dXJucyAwIGluIExpbnV4LCBidXQgdGhlIHByZXZpb3VzCisgICAgKiogc2NoZWR1bGluZyBwb2xpY3kgdW5kZXIgU29sYXJpcy9JbGx1bW9zLCBhbmQgb3RoZXJzLgorICAgICoqIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCBpbiBhbGwgT3BlcmF0aW5nIFN5c3RlbXMuCisgICAgKi8KKyAgICBpZiAoc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCAmcGFyYW0pID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRwYXJhbV9fZG9jX18sCisic2NoZWRfZ2V0cGFyYW0ocGlkKSAtPiBzY2hlZF9wYXJhbVxuXG5cCitSZXR1cm5zIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCAqcGlkKiBhcyBhbiBpbnN0YW5jZSBvZiB0aGVcblwKK3NjaGVkX3BhcmFtIGNsYXNzLiBBIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKyAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9nZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTY2hlZFBhcmFtVHlwZSk7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHByaW9yaXR5ID0gUHlMb25nX0Zyb21Mb25nKHBhcmFtLnNjaGVkX3ByaW9yaXR5KTsKKyAgICBpZiAoIXByaW9yaXR5KSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0cGFyYW1fX2RvY19fLAorInNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pXG5cblwKK1NldCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIGEgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi5cblwKK0EgUElEIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3NldHBhcmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBwaWRfdCBwaWQ7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwgJmNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9zZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19fLAorInNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWQpIC0+IGZsb2F0XG5cblwKK1JldHVybiB0aGUgcm91bmQtcm9iaW4gcXVhbnR1bSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogaW4gc2Vjb25kcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCB0aW1lc3BlYyBpbnRlcnZhbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCAmaW50ZXJ2YWwpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpaW50ZXJ2YWwudHZfc2VjICsgMWUtOSppbnRlcnZhbC50dl9uc2VjKTsKK30KKworI2VuZGlmCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF95aWVsZF9fZG9jX18sCisic2NoZWRfeWllbGQoKVxuXG5cCitWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF95aWVsZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBpZiAoc2NoZWRfeWllbGQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisKKy8qIFRoZSBtaW5pbXVtIG51bWJlciBvZiBDUFVzIGFsbG9jYXRlZCBpbiBhIGNwdV9zZXRfdCAqLworc3RhdGljIGNvbnN0IGludCBOQ1BVU19TVEFSVCA9IHNpemVvZih1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUOworCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX3NldGFmZmluaXR5KHBpZCwgY3B1X3NldClcblxuXAorU2V0IHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiB0byAqY3B1X3NldCouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9zZXRhZmZpbml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBuY3B1czsKKyAgICBzaXplX3Qgc2V0c2l6ZTsKKyAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVyYWJsZSwgKml0ZXJhdG9yID0gTlVMTCwgKml0ZW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZpdGVyYWJsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOworICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CisgICAgbWFzayA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgaWYgKG1hc2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBDUFVfWkVST19TKHNldHNpemUsIG1hc2spOworCisgICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXRlcmF0b3IpKSkgeworICAgICAgICBsb25nIGNwdTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gaXRlcmF0b3Igb2YgaW50cywgIgorICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBpdGVyYXRvciB5aWVsZGVkICVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaXRlbSkpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBjcHUgPSBQeUxvbmdfQXNMb25nKGl0ZW0pOworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIGlmIChjcHUgPCAwKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBDUFUgbnVtYmVyIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChjcHUgPiBJTlRfTUFYIC0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJDUFUgbnVtYmVyIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3B1ID49IG5jcHVzKSB7CisgICAgICAgICAgICAvKiBHcm93IENQVSBtYXNrIHRvIGZpdCB0aGUgQ1BVIG51bWJlciAqLworICAgICAgICAgICAgaW50IG5ld25jcHVzID0gbmNwdXM7CisgICAgICAgICAgICBjcHVfc2V0X3QgKm5ld21hc2s7CisgICAgICAgICAgICBzaXplX3QgbmV3c2V0c2l6ZTsKKyAgICAgICAgICAgIHdoaWxlIChuZXduY3B1cyA8PSBjcHUpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3bmNwdXMgPiBJTlRfTUFYIC8gMikKKyAgICAgICAgICAgICAgICAgICAgbmV3bmNwdXMgPSBjcHUgKyAxOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3bmNwdXMgPSBuZXduY3B1cyAqIDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdtYXNrID0gQ1BVX0FMTE9DKG5ld25jcHVzKTsKKyAgICAgICAgICAgIGlmIChuZXdtYXNrID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmV3bmNwdXMpOworICAgICAgICAgICAgQ1BVX1pFUk9fUyhuZXdzZXRzaXplLCBuZXdtYXNrKTsKKyAgICAgICAgICAgIG1lbWNweShuZXdtYXNrLCBtYXNrLCBzZXRzaXplKTsKKyAgICAgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgICAgICAgICAgc2V0c2l6ZSA9IG5ld3NldHNpemU7CisgICAgICAgICAgICBtYXNrID0gbmV3bWFzazsKKyAgICAgICAgICAgIG5jcHVzID0gbmV3bmNwdXM7CisgICAgICAgIH0KKyAgICAgICAgQ1BVX1NFVF9TKGNwdSwgc2V0c2l6ZSwgbWFzayk7CisgICAgfQorICAgIFB5X0NMRUFSKGl0ZXJhdG9yKTsKKworICAgIGlmIChzY2hlZF9zZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIENQVV9GUkVFKG1hc2spOworICAgIFB5X1JFVFVSTl9OT05FOworCitlcnJvcjoKKyAgICBpZiAobWFzaykKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgUHlfWERFQ1JFRihpdGVyYXRvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX18sCisic2NoZWRfZ2V0YWZmaW5pdHkocGlkLCBuY3B1cykgLT4gY3B1X3NldFxuXG5cCitSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLlxuXAorVGhlIHJldHVybmVkIGNwdV9zZXQgd2lsbCBiZSBvZiBzaXplICpuY3B1cyouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRhZmZpbml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBjcHUsIG5jcHVzLCBjb3VudDsKKyAgICBzaXplX3Qgc2V0c2l6ZTsKKyAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5jcHVzID0gTkNQVVNfU1RBUlQ7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgc2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5jcHVzKTsKKyAgICAgICAgbWFzayA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgICAgIGlmIChtYXNrID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgaWYgKHNjaGVkX2dldGFmZmluaXR5KHBpZCwgc2V0c2l6ZSwgbWFzaykgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlZBTCkKKyAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICBpZiAobmNwdXMgPiBJTlRfTUFYIC8gMikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJjb3VsZCBub3QgYWxsb2NhdGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIGxhcmdlIGVub3VnaCBDUFUgc2V0Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBuY3B1cyA9IG5jcHVzICogMjsKKyAgICB9CisKKyAgICByZXMgPSBQeVNldF9OZXcoTlVMTCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGZvciAoY3B1ID0gMCwgY291bnQgPSBDUFVfQ09VTlRfUyhzZXRzaXplLCBtYXNrKTsgY291bnQ7IGNwdSsrKSB7CisgICAgICAgIGlmIChDUFVfSVNTRVRfUyhjcHUsIHNldHNpemUsIG1hc2spKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqY3B1X251bSA9IFB5TG9uZ19Gcm9tTG9uZyhjcHUpOworICAgICAgICAgICAgLS1jb3VudDsKKyAgICAgICAgICAgIGlmIChjcHVfbnVtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChQeVNldF9BZGQocmVzLCBjcHVfbnVtKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjcHVfbnVtKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGNwdV9udW0pOworICAgICAgICB9CisgICAgfQorICAgIENQVV9GUkVFKG1hc2spOworICAgIHJldHVybiByZXM7CisKK2Vycm9yOgorICAgIGlmIChtYXNrKQorICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBQeV9YREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZICovCisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0ggKi8KKwogLyogQUlYIHVzZXMgL2Rldi9wdGMgYnV0IGlzIG90aGVyd2lzZSB0aGUgc2FtZSBhcyAvZGV2L3B0bXggKi8KIC8qIElSSVggaGFzIGJvdGggL2Rldi9wdGMgYW5kIC9kZXYvcHRteCwgdXNlIHB0bXggKi8KICNpZiBkZWZpbmVkKEhBVkVfREVWX1BUQykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRNWCkKQEAgLTQyNzksNiArNjAxNiw3IEBACiB9CiAjZW5kaWYKIAorCiAjaWZkZWYgSEFWRV9HRVRFR0lECiBQeURvY19TVFJWQVIocG9zaXhfZ2V0ZWdpZF9fZG9jX18sCiAiZ2V0ZWdpZCgpIC0+IGVnaWRcblxuXApAQCAtNDMyOCw2ICs2MDY2LDcwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBpZCgpKTsKIH0KIAorI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCitQeURvY19TVFJWQVIocG9zaXhfZ2V0Z3JvdXBsaXN0X19kb2NfXywKKyJnZXRncm91cGxpc3QodXNlciwgZ3JvdXApIC0+IGxpc3Qgb2YgZ3JvdXBzIHRvIHdoaWNoIGEgdXNlciBiZWxvbmdzXG5cblwKK1JldHVybnMgYSBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25ncy5cblxuXAorICAgIHVzZXI6IHVzZXJuYW1lIHRvIGxvb2t1cFxuXAorICAgIGdyb3VwOiBiYXNlIGdyb3VwIGlkIG9mIHRoZSB1c2VyIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9nZXRncm91cGxpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworI2lmZGVmIE5HUk9VUFNfTUFYCisjZGVmaW5lIE1BWF9HUk9VUFMgTkdST1VQU19NQVgKKyNlbHNlCisgICAgLyogZGVmaW5lZCB0byBiZSAxNiBvbiBTb2xhcmlzNywgc28gdGhpcyBzaG91bGQgYmUgYSBzbWFsbCBudW1iZXIgKi8KKyNkZWZpbmUgTUFYX0dST1VQUyA2NAorI2VuZGlmCisKKyAgICBjb25zdCBjaGFyICp1c2VyOworICAgIGludCBpLCBuZ3JvdXBzOworICAgIFB5T2JqZWN0ICpsaXN0OworI2lmZGVmIF9fQVBQTEVfXworICAgIGludCAqZ3JvdXBzLCBiYXNlZ2lkOworI2Vsc2UKKyAgICBnaWRfdCAqZ3JvdXBzLCBiYXNlZ2lkOworI2VuZGlmCisgICAgbmdyb3VwcyA9IE1BWF9HUk9VUFM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnVzZXIsICZiYXNlZ2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICBncm91cHMgPSBQeU1lbV9NYWxsb2Mobmdyb3VwcyAqIHNpemVvZihpbnQpKTsKKyNlbHNlCisgICAgZ3JvdXBzID0gUHlNZW1fTWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKKyNlbmRpZgorICAgIGlmIChncm91cHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBpZiAoZ2V0Z3JvdXBsaXN0KHVzZXIsIGJhc2VnaWQsIGdyb3VwcywgJm5ncm91cHMpID09IC0xKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldyhuZ3JvdXBzKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmdyb3VwczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpZ3JvdXBzW2ldKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgbyk7CisgICAgfQorCisgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisKKyAgICByZXR1cm4gbGlzdDsKK30KKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cHNfX2RvY19fLApAQCAtNDU2NSw3ICs2MzY3LDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgd2NoYXJfdCB1c2VyX25hbWVbVU5MRU4gKyAxXTsKLSAgICBEV09SRCBudW1fY2hhcnMgPSBzaXplb2YodXNlcl9uYW1lKS9zaXplb2YodXNlcl9uYW1lWzBdKTsKKyAgICBEV09SRCBudW1fY2hhcnMgPSBQeV9BUlJBWV9MRU5HVEgodXNlcl9uYW1lKTsKIAogICAgIGlmIChHZXRVc2VyTmFtZVcodXNlcl9uYW1lLCAmbnVtX2NoYXJzKSkgewogICAgICAgICAvKiBudW1fY2hhcnMgaXMgdGhlIG51bWJlciBvZiB1bmljb2RlIGNoYXJzIHBsdXMgbnVsbCB0ZXJtaW5hdG9yICovCkBAIC00OTY1LDYgKzY3NjcsNyBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpzdHJ1Y3RfcnVzYWdlOworICAgIF9QeV9JREVOVElGSUVSKHN0cnVjdF9ydXNhZ2UpOwogCiAgICAgaWYgKHBpZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC00OTczLDcgKzY3NzYsNyBAQAogICAgICAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInJlc291cmNlIik7CiAgICAgICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RydWN0X3J1c2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobSwgInN0cnVjdF9ydXNhZ2UiKTsKKyAgICAgICAgc3RydWN0X3J1c2FnZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobSwgJlB5SWRfc3RydWN0X3J1c2FnZSk7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgaWYgKHN0cnVjdF9ydXNhZ2UgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTA2OSw2ICs2ODcyLDU1IEBACiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRpZF9fZG9jX18sCisid2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpIC0+IHdhaXRpZF9yZXN1bHRcblxuXAorV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLlxuXG5cCitpZHR5cGUgY2FuIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG5cCitpZCBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLlxuXAorb3B0aW9ucyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRFxuXAorb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuXAorUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmVcblwKK25vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF93YWl0aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaWR0eXBlX3QgaWR0eXBlOworICAgIGlkX3QgaWQ7CisgICAgaW50IG9wdGlvbnMsIHJlczsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgc2kuc2lfcGlkID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgaWYgKHNpLnNpX3BpZCA9PSAwKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIHJlc3VsdCA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZXYWl0aWRSZXN1bHRUeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgUHlMb25nX0Zyb21QaWQoc2kuc2lfcGlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDEsIFB5TG9uZ19Gcm9tUGlkKHNpLnNpX3VpZCkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAyLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLnNpX3NpZ25vKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAzLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLnNpX3N0YXR1cykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9jb2RlKSkpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKICNpZmRlZiBIQVZFX1dBSVRQSUQKIFB5RG9jX1NUUlZBUihwb3NpeF93YWl0cGlkX19kb2NfXywKICJ3YWl0cGlkKHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzKVxuXG5cCkBAIC01MTQyLDEwNiArNjk5NCwyMjYgQEAKICNlbmRpZgogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9sc3RhdF9fZG9jX18sCi0ibHN0YXQocGF0aCkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KHBhdGgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSNpZmRlZiBIQVZFX0xTVEFUCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0IiwgbHN0YXQsIE5VTEwsIE5VTEwpOwotI2Vsc2UgLyogIUhBVkVfTFNUQVQgKi8KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0Iiwgd2luMzJfbHN0YXQsICJVOmxzdGF0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB3aW4zMl9sc3RhdF93KTsKLSNlbHNlCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0IiwgU1RBVCwgTlVMTCwgTlVMTCk7CisjaWYgZGVmaW5lZChIQVZFX1JFQURMSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCitQeURvY19TVFJWQVIocmVhZGxpbmtfX2RvY19fLAorInJlYWRsaW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKSAtPiBwYXRoXG5cblwKK1JldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogI2VuZGlmCi0jZW5kaWYgLyogIUhBVkVfTFNUQVQgKi8KLX0KLQogCiAjaWZkZWYgSEFWRV9SRUFETElOSwotUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWRsaW5rX19kb2NfXywKLSJyZWFkbGluayhwYXRoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0KiB2OwotICAgIGNoYXIgYnVmW01BWFBBVEhMRU5dOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIGludCBuOwotICAgIGludCBhcmdfaXNfdW5pY29kZSA9IDA7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU5dOworICAgIHNzaXplX3QgbGVuZ3RoOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpyZWFkbGluayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIHYgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYXJncywgMCk7Ci0gICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIGFyZ19pc191bmljb2RlID0gMTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHYpOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSByZWFkbGluayhwYXRoLCBidWYsIChpbnQpIHNpemVvZiBidWYpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBpZiAoYXJnX2lzX3VuaWNvZGUpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWYsIG4pOworI2lmZGVmIEhBVkVfUkVBRExJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIGxlbmd0aCA9IHJlYWRsaW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIG4pOworI2VuZGlmCisgICAgICAgIGxlbmd0aCA9IHJlYWRsaW5rKHBhdGgubmFycm93LCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9wb3NpeF9lcnJvcigicmVhZGxpbmsiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgub2JqZWN0KSkKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsIGxlbmd0aCk7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KKworCiAjZW5kaWYgLyogSEFWRV9SRUFETElOSyAqLwogCiAKLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBIQVZFX1NZTUxJTksKIFB5RG9jX1NUUlZBUihwb3NpeF9zeW1saW5rX19kb2NfXywKLSJzeW1saW5rKHNyYywgZHN0KVxuXG5cCi1DcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuIik7Cisic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK0NyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblxuXAordGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcblwKKyAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuXAorICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKVxuXAorICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCisvKiBHcmFiIENyZWF0ZVN5bWJvbGljTGlua1cgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLworc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykoTFBXU1RSLCBMUFdTVFIsIERXT1JEKSA9IE5VTEw7CitzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKShMUFNUUiwgTFBTVFIsIERXT1JEKSA9IE5VTEw7CitzdGF0aWMgaW50CitjaGVja19DcmVhdGVTeW1ib2xpY0xpbmsoKQoreworICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgLyogb25seSByZWNoZWNrICovCisgICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CisgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKKyAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOworICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKK30KKworI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3N5bWxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIHJldHVybiBwb3NpeF8yc3RyKGFyZ3MsICJPJk8mOnN5bWxpbmsiLCBzeW1saW5rKTsKKyAgICBwYXRoX3Qgc3JjOworICAgIHBhdGhfdCBkc3Q7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2ZkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgRFdPUkQgcmVzdWx0OworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCisKKyAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOworICAgIHNyYy5hcmd1bWVudF9uYW1lID0gInNyYyI7CisgICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKKyAgICBkc3QuYXJndW1lbnRfbmFtZSA9ICJkc3QiOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rIGZ1bmN0aW9ucyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIGlmICghd2luMzJfY2FuX3N5bWxpbmspIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzeW1ib2xpYyBsaW5rIHByaXZpbGVnZSBub3QgaGVsZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisjZW5kaWYKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8aSRPJjpzeW1saW5rIiwKKyAgICAgICAgICAgIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKKyAgICAgICAgICAgICZ0YXJnZXRfaXNfZGlyZWN0b3J5LAorI2lmZGVmIEhBVkVfU1lNTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic3ltbGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7CisgICAgICAgIHJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChkc3Qud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3Qud2lkZSwgc3JjLndpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKGRzdC5uYXJyb3csIHNyYy5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgic3ltbGluayIsIHNyYy5vYmplY3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjZWxzZQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmIEhBVkVfU1lNTElOS0FUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gc3ltbGlua2F0KHNyYy5uYXJyb3csIGRpcl9mZCwgZHN0Lm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHN5bWxpbmsoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigic3ltbGluayIsICZkc3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBnb3RvIGV4aXQ7IC8qIHNpbGVuY2UgInVudXNlZCBsYWJlbCIgd2FybmluZyAqLworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CisKICNlbmRpZiAvKiBIQVZFX1NZTUxJTksgKi8KIAorCiAjaWYgIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogCi1QeURvY19TVFJWQVIod2luX3JlYWRsaW5rX19kb2NfXywKLSJyZWFkbGluayhwYXRoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiIpOwotCi0vKiBXaW5kb3dzIHJlYWRsaW5rIGltcGxlbWVudGF0aW9uICovCiBzdGF0aWMgUHlPYmplY3QgKgotd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgd2NoYXJfdCAqcGF0aDsKICAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOwogICAgIERXT1JEIGlvX3Jlc3VsdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKKyAgICAgICAgaW50IGRpcl9mZDsKICAgICBIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGU7CiAKICAgICBjaGFyIHRhcmdldF9idWZmZXJbTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOwogICAgIFJFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKICAgICB3Y2hhcl90ICpwcmludF9uYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAidTpyZWFkbGluayIsCi0gICAgICAgICAgICAgICAgICAmcGF0aCkpCisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEZpcnN0IGdldCBhIGhhbmRsZSB0byB0aGUgcmVwYXJzZSBwb2ludCAqLwpAQCAtNTI1Nyw5ICs3MjI5LDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlcGFyc2VfcG9pbnRfaGFuZGxlPT1JTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJyZWFkbGluayIsIHBhdGgpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgLyogTmV3IGNhbGwgRGV2aWNlSW9Db250cm9sIHRvIHJlYWQgdGhlIHJlcGFyc2UgcG9pbnQgKi8KQEAgLTUyNzUsOSArNzI0NSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChpb19yZXN1bHQ9PTApCi0gICAgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgicmVhZGxpbmsiLCBwYXRoKTsKLSAgICB9CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOwogCiAgICAgaWYgKHJkYi0+UmVwYXJzZVRhZyAhPSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKQogICAgIHsKQEAgLTUyOTUsODAgKzcyNjMsNzYgQEAKIAogI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKLS8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgaW50IGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXID0gMDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQV1NUUiwgTFBXU1RSLCBEV09SRCk7Ci1zdGF0aWMgaW50Ci1jaGVja19DcmVhdGVTeW1ib2xpY0xpbmtXKCkKLXsKLSAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOwotICAgIC8qIG9ubHkgcmVjaGVjayAqLwotICAgIGlmIChoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVykKLSAgICAgICAgcmV0dXJuIGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXOwotICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rVyIpOwotICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKQotICAgICAgICBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IDE7Ci0gICAgcmV0dXJuIGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXOwotfQorc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdGltZXNfcmVzdWx0X2ZpZWxkc1tdID0geworICAgIHsidXNlciIsICAgICJ1c2VyIHRpbWUifSwKKyAgICB7InN5c3RlbSIsICAgInN5c3RlbSB0aW1lIn0sCisgICAgeyJjaGlsZHJlbl91c2VyIiwgICAgInVzZXIgdGltZSBvZiBjaGlsZHJlbiJ9LAorICAgIHsiY2hpbGRyZW5fc3lzdGVtIiwgICAgInN5c3RlbSB0aW1lIG9mIGNoaWxkcmVuIn0sCisgICAgeyJlbGFwc2VkIiwgICAgImVsYXBzZWQgdGltZSBzaW5jZSBhbiBhcmJpdHJhcnkgcG9pbnQgaW4gdGhlIHBhc3QifSwKKyAgICB7TlVMTH0KK307CiAKLVB5RG9jX1NUUlZBUih3aW5fc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSlcblxuXAotQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LlxuXAotdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBpZiB0aGUgdGFyZ2V0IGlzIHRvIGJlIGludGVycHJldGVkIGFzXG5cCi1hIGRpcmVjdG9yeS5cblwKLVRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhXG5cCi1Ob3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4iKTsKK1B5RG9jX1NUUlZBUih0aW1lc19yZXN1bHRfX2RvY19fLAorInRpbWVzX3Jlc3VsdDogUmVzdWx0IGZyb20gb3MudGltZXMoKS5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgICh1c2VyLCBzeXN0ZW0sIGNoaWxkcmVuX3VzZXIsIGNoaWxkcmVuX3N5c3RlbSwgZWxhcHNlZCksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgdXNlciwgc3lzdGVtLCBjaGlsZHJlbl91c2VyLCBjaGlsZHJlbl9zeXN0ZW0sXG5cCithbmQgZWxhcHNlZC5cblwKK1xuXAorU2VlIG9zLnRpbWVzIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luX3N5bWxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic3JjIiwgImRlc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpzcmMsICpkZXN0OwotICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKLSAgICBEV09SRCByZXM7CitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHRpbWVzX3Jlc3VsdF9kZXNjID0geworICAgICJ0aW1lc19yZXN1bHQiLCAvKiBuYW1lICovCisgICAgdGltZXNfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgdGltZXNfcmVzdWx0X2ZpZWxkcywKKyAgICA1Cit9OwogCi0gICAgaWYgKCFjaGVja19DcmVhdGVTeW1ib2xpY0xpbmtXKCkpCi0gICAgewotICAgICAgICAvKiByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yICovCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLSAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIG5vdCBmb3VuZCIpOwotICAgIH0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xpOnN5bWxpbmsiLAotICAgICAgICBrd2xpc3QsICZzcmMsICZkZXN0LCAmdGFyZ2V0X2lzX2RpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5VHlwZU9iamVjdCBUaW1lc1Jlc3VsdFR5cGU7CiAKLSAgICBpZiAod2luMzJfY2FuX3N5bWxpbmsgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19PU0Vycm9yLCAic3ltYm9saWMgbGluayBwcml2aWxlZ2Ugbm90IGhlbGQiKTsKLQotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZzcmMpKSB7IHJldHVybiBOVUxMOyB9Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJmRlc3QpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzcmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVygKLSAgICAgICAgUHlVbmljb2RlX0FzVW5pY29kZShkZXN0KSwKLSAgICAgICAgUHlVbmljb2RlX0FzVW5pY29kZShzcmMpLAotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihzcmMpOwotICAgIFB5X0RFQ1JFRihkZXN0KTsKLSAgICBpZiAoIXJlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJzeW1saW5rIiwgUHlVbmljb2RlX0FzVW5pY29kZShzcmMpKTsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKyNpZmRlZiBNU19XSU5ET1dTCisjZGVmaW5lIEhBVkVfVElNRVMgIC8qIG1hbmRhdG9yeSwgZm9yIHRoZSBtZXRob2QgdGFibGUgKi8KKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9USU1FUworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbGRfdGltZXNfcmVzdWx0KGRvdWJsZSB1c2VyLCBkb3VibGUgc3lzdGVtLAorICAgIGRvdWJsZSBjaGlsZHJlbl91c2VyLCBkb3VibGUgY2hpbGRyZW5fc3lzdGVtLAorICAgIGRvdWJsZSBlbGFwc2VkKQoreworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZUaW1lc1Jlc3VsdFR5cGUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBTRVQoaSwgZmllbGQpIFwKKyAgICB7IFwKKyAgICBQeU9iamVjdCAqbyA9IFB5RmxvYXRfRnJvbURvdWJsZShmaWVsZCk7IFwKKyAgICBpZiAoIW8pIHsgXAorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2YWx1ZSwgaSwgbyk7IFwKKyAgICB9IFwKKworICAgIFNFVCgwLCB1c2VyKTsKKyAgICBTRVQoMSwgc3lzdGVtKTsKKyAgICBTRVQoMiwgY2hpbGRyZW5fdXNlcik7CisgICAgU0VUKDMsIGNoaWxkcmVuX3N5c3RlbSk7CisgICAgU0VUKDQsIGVsYXBzZWQpOworCisjdW5kZWYgU0VUCisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCisidGltZXMoKSAtPiB0aW1lc19yZXN1bHRcblxuXAorUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzXG5cCit0aW1lcy4gIFRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG5cCisgICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpIik7CisKICNpZiBkZWZpbmVkKFBZQ0NfVkFDUFApICYmIGRlZmluZWQoUFlPU19PUzIpCiBzdGF0aWMgbG9uZwogc3lzdGVtX3VwdGltZSh2b2lkKQpAQCAtNTM4NiwzOCArNzM1MCwxNCBAQAogcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CiAgICAgLyogQ3VycmVudGx5IE9ubHkgVXB0aW1lIGlzIFByb3ZpZGVkIC0tIE90aGVycyBMYXRlciAqLwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJkZGRkZCIsCisgICAgcmV0dXJuIGJ1aWxkX3RpbWVzX3Jlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfdXRpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfc3RpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfY3V0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX2NzdGltZSAvIEhaICovLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpc3lzdGVtX3VwdGltZSgpIC8gMTAwMCk7CiB9Ci0jZWxzZSAvKiBub3QgT1MyICovCi0jZGVmaW5lIE5FRURfVElDS1NfUEVSX1NFQ09ORAotc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOwotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIHN0cnVjdCB0bXMgdDsKLSAgICBjbG9ja190IGM7Ci0gICAgZXJybm8gPSAwOwotICAgIGMgPSB0aW1lcygmdCk7Ci0gICAgaWYgKGMgPT0gKGNsb2NrX3QpIC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZGRkZGQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2NzdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSljIC8gdGlja3NfcGVyX3NlY29uZCk7Ci19Ci0jZW5kaWYgLyogbm90IE9TMiAqLwotI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KLQotCi0jaWZkZWYgTVNfV0lORE9XUwotI2RlZmluZSBIQVZFX1RJTUVTICAgICAgLyogc28gdGhlIG1ldGhvZCB0YWJsZSB3aWxsIHBpY2sgaXQgdXAgKi8KKyNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKQEAgLTU0MzAsOCArNzM3MCw3IEBACiAgICAgICAgMWU3IGlzIG9uZSBzZWNvbmQgaW4gc3VjaCB1bml0czsgMWUtNyB0aGUgaW52ZXJzZS4KICAgICAgICA0MjkuNDk2NzI5NiBpcyAyKiozMiAvIDFlNyBvciAyKiozMiAqIDFlLTcuCiAgICAgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgImRkZGRkIiwKKyAgICByZXR1cm4gYnVpbGRfdGltZXNfcmVzdWx0KAogICAgICAgICAoZG91YmxlKSh1c2VyLmR3SGlnaERhdGVUaW1lKjQyOS40OTY3Mjk2ICsKICAgICAgICAgICAgICAgICAgdXNlci5kd0xvd0RhdGVUaW1lKjFlLTcpLAogICAgICAgICAoZG91YmxlKShrZXJuZWwuZHdIaWdoRGF0ZVRpbWUqNDI5LjQ5NjcyOTYgKwpAQCAtNTQ0MCwxNCArNzM3OSwyOSBAQAogICAgICAgICAoZG91YmxlKTAsCiAgICAgICAgIChkb3VibGUpMCk7CiB9Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotCi0jaWZkZWYgSEFWRV9USU1FUwotUHlEb2NfU1RSVkFSKHBvc2l4X3RpbWVzX19kb2NfXywKLSJ0aW1lcygpIC0+ICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpXG5cblwKLVJldHVybiBhIHR1cGxlIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzIHRpbWVzLiIpOworI2Vsc2UgLyogTmVpdGhlciBXaW5kb3dzIG5vciBPUy8yICovCisjZGVmaW5lIE5FRURfVElDS1NfUEVSX1NFQ09ORAorc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIHN0cnVjdCB0bXMgdDsKKyAgICBjbG9ja190IGM7CisgICAgZXJybm8gPSAwOworICAgIGMgPSB0aW1lcygmdCk7CisgICAgaWYgKGMgPT0gKGNsb2NrX3QpIC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gYnVpbGRfdGltZXNfcmVzdWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2NzdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSljIC8gdGlja3NfcGVyX3NlY29uZCk7Cit9CiAjZW5kaWYKIAorI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRTSUQKIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRzaWRfX2RvY19fLApAQCAtNTU0Niw0OSArNzUwMCw2OCBAQAogLyogRnVuY3Rpb25zIGFjdGluZyBvbiBmaWxlIGRlc2NyaXB0b3JzICovCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9vcGVuX19kb2NfXywKLSJvcGVuKGZpbGVuYW1lLCBmbGFnIFssIG1vZGU9MDc3N10pIC0+IGZkXG5cblwKLU9wZW4gYSBmaWxlIChmb3IgbG93IGxldmVsIElPKS4iKTsKKyJvcGVuKHBhdGgsIGZsYWdzLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorT3BlbiBhIGZpbGUgZm9yIGxvdyBsZXZlbCBJTy4gIFJldHVybnMgYSBmaWxlIGhhbmRsZSAoaW50ZWdlcikuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9vcGVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X29wZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvZmlsZTsKLSAgICBjaGFyICpmaWxlOwotICAgIGludCBmbGFnOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBmbGFnczsKICAgICBpbnQgbW9kZSA9IDA3Nzc7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmZDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVpfGk6b3BlbiIsICZwbywgJmZsYWcsICZtb2RlKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIC8qIFB5VW5pY29kZV9BU19VTklDT0RFIE9LIHdpdGhvdXQgdGhyZWFkCi0gICAgICAgICAgIGxvY2sgYXMgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIGZkID0gX3dvcGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSwgZmxhZywgbW9kZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChmZCA8IDApCi0gICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJmZsYWdzLCAmbW9kZSwKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8aTpvcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFnLCAmbW9kZSkpCisgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZmQgPSBvcGVuKGZpbGUsIGZsYWcsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9maWxlKTsKLSAgICBQeV9ERUNSRUYob2ZpbGUpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwotfQogCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBmZCA9IF93b3BlbihwYXRoLndpZGUsIGZsYWdzLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIGZkID0gb3BlbmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgZmQgPSBvcGVuKHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChmZCA9PSAtMSkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgLyogZm9yY2UgdXNlIG9mIHBvc2l4X2Vycm9yIGhlcmUgZm9yIGV4YWN0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCisgICAgICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigib3BlbiIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQogCiBQeURvY19TVFJWQVIocG9zaXhfY2xvc2VfX2RvY19fLAogImNsb3NlKGZkKVxuXG5cCkBAIC01NjQzLDkgKzc2MTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBmZCA9IGR1cChmZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWZkKTsKQEAgLTU2NjQsMTUgKzc2MzUsNDIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFfUHlWZXJpZnlfZmRfZHVwMihmZCwgZmQyKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IGR1cDIoZmQsIGZkMik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisjaWZkZWYgSEFWRV9MT0NLRgorUHlEb2NfU1RSVkFSKHBvc2l4X2xvY2tmX19kb2NfXywKKyJsb2NrZihmZCwgY21kLCBsZW4pXG5cblwKK0FwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cblwKK2ZkIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorY21kIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgLSBvbmUgb2YgRl9MT0NLLCBGX1RMT0NLLCBGX1VMT0NLIG9yXG5cCitGX1RFU1QuXG5cCitsZW4gc3BlY2lmaWVzIHRoZSBzZWN0aW9uIG9mIHRoZSBmaWxlIHRvIGxvY2suIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9sb2NrZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBjbWQsIHJlczsKKyAgICBvZmZfdCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKKyAgICAgICAgICAgICZmZCwgJmNtZCwgX3BhcnNlX29mZl90LCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gbG9ja2YoZmQsIGNtZCwgbGVuKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogCiBQeURvY19TVFJWQVIocG9zaXhfbHNlZWtfX2RvY19fLAogImxzZWVrKGZkLCBwb3MsIGhvdykgLT4gbmV3cG9zXG5cblwKQEAgLTU3MDMsOCArNzcwMSw3IEBACiAjaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKICAgICBwb3MgPSBQeUxvbmdfQXNMb25nKHBvc29iaik7CiAjZWxzZQotICAgIHBvcyA9IFB5TG9uZ19DaGVjayhwb3NvYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKSA6IFB5TG9uZ19Bc0xvbmcocG9zb2JqKTsKKyAgICBwb3MgPSBQeUxvbmdfQXNMb25nTG9uZyhwb3NvYmopOwogI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTc2NCw2ICs3NzYxLDE0MCBAQAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKKyNpZiAoZGVmaW5lZChIQVZFX1NFTkRGSUxFKSAmJiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCisgICAgfHwgZGVmaW5lZChfX0FQUExFX18pKSkgfHwgZGVmaW5lZChIQVZFX1JFQURWKSB8fCBkZWZpbmVkKEhBVkVfV1JJVEVWKQorc3RhdGljIFB5X3NzaXplX3QKK2lvdl9zZXR1cChzdHJ1Y3QgaW92ZWMgKippb3YsIFB5X2J1ZmZlciAqKmJ1ZiwgUHlPYmplY3QgKnNlcSwgaW50IGNudCwgaW50IHR5cGUpCit7CisgICAgaW50IGksIGo7CisgICAgUHlfc3NpemVfdCBibGVuLCB0b3RhbCA9IDA7CisKKyAgICAqaW92ID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgY250KTsKKyAgICBpZiAoKmlvdiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiB0b3RhbDsKKyAgICB9CisKKyAgICAqYnVmID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgY250KTsKKyAgICBpZiAoKmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0RlbCgqaW92KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIHRvdGFsOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShzZXEsIGkpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGl0ZW0sICYoKmJ1ZilbaV0sIHR5cGUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAoKmlvdilbaV0uaW92X2Jhc2UgPSAoKmJ1ZilbaV0uYnVmOworICAgICAgICBibGVuID0gKCpidWYpW2ldLmxlbjsKKyAgICAgICAgKCppb3YpW2ldLmlvdl9sZW4gPSBibGVuOworICAgICAgICB0b3RhbCArPSBibGVuOworICAgIH0KKyAgICByZXR1cm4gdG90YWw7CisKK2ZhaWw6CisgICAgUHlNZW1fRGVsKCppb3YpOworICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmKCpidWYpW2pdKTsKKyAgICB9CisgICAgUHlNZW1fRGVsKCpidWYpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW92X2NsZWFudXAoc3RydWN0IGlvdmVjICppb3YsIFB5X2J1ZmZlciAqYnVmLCBpbnQgY250KQoreworICAgIGludCBpOworICAgIFB5TWVtX0RlbChpb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZbaV0pOworICAgIH0KKyAgICBQeU1lbV9EZWwoYnVmKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRUFEVgorUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWR2X19kb2NfXywKKyJyZWFkdihmZCwgYnVmZmVycykgLT4gYnl0ZXNyZWFkXG5cblwKK1JlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuIGJ1ZmZlcnNcblwKK2lzIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiB3cml0YWJsZSBidWZmZXJzLlxuXAorUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZWFkdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBjbnQ7CisgICAgUHlfc3NpemVfdCBuOworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgc3RydWN0IGlvdmVjICppb3Y7CisgICAgUHlfYnVmZmVyICpidWY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwgJmZkLCAmc2VxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJyZWFkdigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKHNlcSk7CisKKyAgICBpZiAoIWlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfV1JJVEFCTEUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gcmVhZHYoZmQsIGlvdiwgY250KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaW92X2NsZWFudXAoaW92LCBidWYsIGNudCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QUkVBRAorUHlEb2NfU1RSVkFSKHBvc2l4X3ByZWFkX19kb2NfXywKKyJwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KSAtPiBzdHJpbmdcblxuXAorUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgYXQgYSBwb3NpdGlvbiBvZiBvZmZzZXQuIEl0IHdpbGwgcmVhZCB1cFxuXAordG8gYnVmZmVyc2l6ZSBudW1iZXIgb2YgYnl0ZXMuIFRoZSBmaWxlIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3ByZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIHNpemU7CisgICAgb2ZmX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqYnVmZmVyOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsICZmZCwgJnNpemUsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHNpemUpOworICAgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG4gPSBwcmVhZChmZCwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgc2l6ZSwgb2Zmc2V0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGlmIChuICE9IHNpemUpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCBuKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorI2VuZGlmCiAKIFB5RG9jX1NUUlZBUihwb3NpeF93cml0ZV9fZG9jX18sCiAid3JpdGUoZmQsIHN0cmluZykgLT4gYnl0ZXN3cml0dGVuXG5cblwKQEAgLTU3OTgsMTAgKzc5MjksMTQ5IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKIH0KIAorI2lmZGVmIEhBVkVfU0VOREZJTEUKK1B5RG9jX1NUUlZBUihwb3NpeF9zZW5kZmlsZV9fZG9jX18sCisic2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMpIC0+IGJ5dGVzd3JpdHRlblxuXAorc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9Tm9uZSwgdHJhaWxlcnM9Tm9uZSwgZmxhZ3M9MClcblwKKyAgICAgICAgICAgIC0+IGJ5dGVzd3JpdHRlblxuXAorQ29weSBuYnl0ZXMgYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgaW4gdG8gZmlsZSBkZXNjcmlwdG9yIG91dC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NlbmRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK3sKKyAgICBpbnQgaW4sIG91dDsKKyAgICBQeV9zc2l6ZV90IHJldDsKKyAgICBvZmZfdCBvZmZzZXQ7CisKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmbmRlZiBfX0FQUExFX18KKyAgICBQeV9zc2l6ZV90IGxlbjsKKyNlbmRpZgorICAgIFB5T2JqZWN0ICpoZWFkZXJzID0gTlVMTCwgKnRyYWlsZXJzID0gTlVMTDsKKyAgICBQeV9idWZmZXIgKmhidWYsICp0YnVmOworICAgIG9mZl90IHNieXRlczsKKyAgICBzdHJ1Y3Qgc2ZfaGR0ciBzZjsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHNmLmhlYWRlcnMgPSBOVUxMOworICAgIHNmLnRyYWlsZXJzID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsib3V0IiwgImluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mZnNldCIsICJjb3VudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIiwgInRyYWlsZXJzIiwgImZsYWdzIiwgTlVMTH07CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mTyZ8T09pOnNlbmRmaWxlIiwKKyAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZzYnl0ZXMsCisjZWxzZQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpTyZufE9PaTpzZW5kZmlsZSIsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgJmxlbiwKKyNlbmRpZgorICAgICAgICAgICAgICAgICZoZWFkZXJzLCAmdHJhaWxlcnMsICZmbGFncykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaGVhZGVycyAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhoZWFkZXJzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAic2VuZGZpbGUoKSBoZWFkZXJzIG11c3QgYmUgYSBzZXF1ZW5jZSBvciBOb25lIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7IC8qIEF2b2lkIHVuaW5pdGlhbGl6ZWQgd2FybmluZyAqLworICAgICAgICAgICAgc2YuaGRyX2NudCA9IFB5U2VxdWVuY2VfU2l6ZShoZWFkZXJzKTsKKyAgICAgICAgICAgIGlmIChzZi5oZHJfY250ID4gMCAmJgorICAgICAgICAgICAgICAgICEoaSA9IGlvdl9zZXR1cCgmKHNmLmhlYWRlcnMpLCAmaGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycywgc2YuaGRyX2NudCwgUHlCVUZfU0lNUExFKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgICAgICBzYnl0ZXMgKz0gaTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorICAgIGlmICh0cmFpbGVycyAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayh0cmFpbGVycykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInNlbmRmaWxlKCkgdHJhaWxlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9yIE5vbmUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsgLyogQXZvaWQgdW5pbml0aWFsaXplZCB3YXJuaW5nICovCisgICAgICAgICAgICBzZi50cmxfY250ID0gUHlTZXF1ZW5jZV9TaXplKHRyYWlsZXJzKTsKKyAgICAgICAgICAgIGlmIChzZi50cmxfY250ID4gMCAmJgorICAgICAgICAgICAgICAgICEoaSA9IGlvdl9zZXR1cCgmKHNmLnRyYWlsZXJzKSwgJnRidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzLCBzZi50cmxfY250LCBQeUJVRl9TSU1QTEUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBfX0FQUExFX18KKyAgICAgICAgICAgIHNieXRlcyArPSBpOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgX19BUFBMRV9fCisgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKKyNlbHNlCisgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCBsZW4sICZzZiwgJnNieXRlcywgZmxhZ3MpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChzZi5oZWFkZXJzICE9IE5VTEwpCisgICAgICAgIGlvdl9jbGVhbnVwKHNmLmhlYWRlcnMsIGhidWYsIHNmLmhkcl9jbnQpOworICAgIGlmIChzZi50cmFpbGVycyAhPSBOVUxMKQorICAgICAgICBpb3ZfY2xlYW51cChzZi50cmFpbGVycywgdGJ1Ziwgc2YudHJsX2NudCk7CisKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBpZiAoKGVycm5vID09IEVBR0FJTikgfHwgKGVycm5vID09IEVCVVNZKSkgeworICAgICAgICAgICAgaWYgKHNieXRlcyAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gc29tZSBkYXRhIGhhcyBiZWVuIHNlbnQKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBubyBkYXRhIGhhcyBiZWVuIHNlbnQ7IHVwcGVyIGFwcGxpY2F0aW9uIGlzIHN1cHBvc2VkCisgICAgICAgICAgICAgICAgLy8gdG8gcmV0cnkgb24gRUFHQUlOIG9yIEVCVVNZCisgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGdvdG8gZG9uZTsKKworZG9uZToKKyAgICAjaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImwiLCBzYnl0ZXMpOworICAgICNlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJMIiwgc2J5dGVzKTsKKyAgICAjZW5kaWYKKworI2Vsc2UKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpvZmZvYmo7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7Im91dCIsICJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZmZzZXQiLCAiY291bnQiLCBOVUxMfTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU9uOnNlbmRmaWxlIiwKKyAgICAgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sICZvZmZvYmosICZjb3VudCkpCisgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIGxpbnV4CisgICAgaWYgKG9mZm9iaiA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgTlVMTCwgY291bnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibiIsIHJldCk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKCFfcGFyc2Vfb2ZmX3Qob2Zmb2JqLCAmb2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sICZvZmZzZXQsIGNvdW50KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibiIsIHJldCk7CisjZW5kaWYKK30KKyNlbmRpZgogCiBQeURvY19TVFJWQVIocG9zaXhfZnN0YXRfX2RvY19fLAogImZzdGF0KGZkKSAtPiBzdGF0IHJlc3VsdFxuXG5cCi1MaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKK0xpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorRXF1aXZhbGVudCB0byBzdGF0KGZkPWZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTU4MTUsOCArODA4NSw2IEBACiAgICAgLyogb24gT3BlblZNUyB3ZSBtdXN0IGVuc3VyZSB0aGF0IGFsbCBieXRlcyBhcmUgd3JpdHRlbiB0byB0aGUgZmlsZSAqLwogICAgIGZzeW5jKGZkKTsKICNlbmRpZgotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IEZTVEFUKGZkLCAmc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC01ODU5LDkgKzgxMjcsNyBAQAogICAgIEhGSUxFIHJlYWQsIHdyaXRlOwogICAgIEFQSVJFVCByYzsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IERvc0NyZWF0ZVBpcGUoICZyZWFkLCAmd3JpdGUsIDQwOTYpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gb3MyX2Vycm9yKHJjKTsKIApAQCAtNTg3MCw5ICs4MTM2LDcgQEAKICNpZiAhZGVmaW5lZChNU19XSU5ET1dTKQogICAgIGludCBmZHNbMl07CiAgICAgaW50IHJlczsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gcGlwZShmZHMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyAhPSAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKGlpKSIsIGZkc1swXSwgZmRzWzFdKTsKQEAgLTU4ODAsOSArODE0NCw3IEBACiAgICAgSEFORExFIHJlYWQsIHdyaXRlOwogICAgIGludCByZWFkX2ZkLCB3cml0ZV9mZDsKICAgICBCT09MIG9rOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBvayA9IENyZWF0ZVBpcGUoJnJlYWQsICZ3cml0ZSwgTlVMTCwgMCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkNyZWF0ZVBpcGUiLCBOVUxMKTsKICAgICByZWFkX2ZkID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdClyZWFkLCAwKTsKQEAgLTU4OTMsNjYgKzgxNTUsMjE0IEBACiB9CiAjZW5kaWYgIC8qIEhBVkVfUElQRSAqLwogCi0KLSNpZmRlZiBIQVZFX01LRklGTwotUHlEb2NfU1RSVkFSKHBvc2l4X21rZmlmb19fZG9jX18sCi0ibWtmaWZvKGZpbGVuYW1lIFssIG1vZGU9MDY2Nl0pXG5cblwKLUNyZWF0ZSBhIEZJRk8gKGEgUE9TSVggbmFtZWQgcGlwZSkuIik7CisjaWZkZWYgSEFWRV9QSVBFMgorUHlEb2NfU1RSVkFSKHBvc2l4X3BpcGUyX19kb2NfXywKKyJwaXBlMihmbGFncykgLT4gKHJlYWRfZW5kLCB3cml0ZV9lbmQpXG5cblwKK0NyZWF0ZSBhIHBpcGUgd2l0aCBmbGFncyBzZXQgYXRvbWljYWxseS5cblwKK2ZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6XG5cCitPX05PTkJMT0NLLCBPX0NMT0VYRUMuXG5cCisiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZmlmbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9waXBlMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqZmlsZW5hbWU7Ci0gICAgaW50IG1vZGUgPSAwNjY2OworICAgIGludCBmbGFnczsKKyAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZmlmbyIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kZSkpCisKKyAgICBmbGFncyA9IFB5TG9uZ19Bc0xvbmcoYXJnKTsKKyAgICBpZiAoZmxhZ3MgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZmlsZW5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IG1rZmlmbyhmaWxlbmFtZSwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIGlmIChyZXMgPCAwKQorCisgICAgcmVzID0gcGlwZTIoZmRzLCBmbGFncyk7CisgICAgaWYgKHJlcyAhPSAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihpaSkiLCBmZHNbMF0sIGZkc1sxXSk7Cit9CisjZW5kaWYgLyogSEFWRV9QSVBFMiAqLworCisjaWZkZWYgSEFWRV9XUklURVYKK1B5RG9jX1NUUlZBUihwb3NpeF93cml0ZXZfX2RvY19fLAorIndyaXRldihmZCwgYnVmZmVycykgLT4gYnl0ZXN3cml0dGVuXG5cblwKK1dyaXRlIHRoZSBjb250ZW50cyBvZiBidWZmZXJzIHRvIGEgZmlsZSBkZXNjcmlwdG9yLCB3aGVyZSBidWZmZXJzIGlzIGFuXG5cCithcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy5cblwKK1JldHVybnMgdGhlIHRvdGFsIGJ5dGVzIHdyaXR0ZW4uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF93cml0ZXYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgY250OworICAgIFB5X3NzaXplX3QgcmVzOworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgc3RydWN0IGlvdmVjICppb3Y7CisgICAgUHlfYnVmZmVyICpidWY7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzp3cml0ZXYiLCAmZmQsICZzZXEpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIndyaXRldigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKHNlcSk7CisKKyAgICBpZiAoIWlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfU0lNUExFKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gd3JpdGV2KGZkLCBpb3YsIGNudCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9QV1JJVEUKK1B5RG9jX1NUUlZBUihwb3NpeF9wd3JpdGVfX2RvY19fLAorInB3cml0ZShmZCwgc3RyaW5nLCBvZmZzZXQpIC0+IGJ5dGVzd3JpdHRlblxuXG5cCitXcml0ZSBzdHJpbmcgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIGZkLCBmcm9tIG9mZnNldCwgbGVhdmluZyB0aGUgZmlsZVxuXAorb2Zmc2V0IHVuY2hhbmdlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3B3cml0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIHBidWY7CisgICAgaW50IGZkOworICAgIG9mZl90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsICZmZCwgJnBidWYsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHNpemUgPSBwd3JpdGUoZmQsIHBidWYuYnVmLCAoc2l6ZV90KXBidWYubGVuLCBvZmZzZXQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRklGTworUHlEb2NfU1RSVkFSKHBvc2l4X21rZmlmb19fZG9jX18sCisibWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBGSUZPIChhIFBPU0lYIG5hbWVkIHBpcGUpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbWtmaWZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgbW9kZSA9IDA2NjY7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZtb2RlLAorI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IG1rZmlmb2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBta2ZpZm8ocGF0aC5uYXJyb3csIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQogUHlEb2NfU1RSVkFSKHBvc2l4X21rbm9kX19kb2NfXywKLSJta25vZChmaWxlbmFtZSBbLCBtb2RlPTA2MDAsIGRldmljZV0pXG5cblwKKyJta25vZChmaWxlbmFtZSwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKVxuXG5cCiBDcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSlcblwKIG5hbWVkIGZpbGVuYW1lLiBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZVxuXAogdHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZlxuXAogU19JRlJFRywgU19JRkNIUiwgU19JRkJMSywgYW5kIFNfSUZJRk8uIEZvciBTX0lGQ0hSIGFuZCBTX0lGQkxLLFxuXAogZGV2aWNlIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmdcblwKLW9zLm1ha2VkZXYoKSksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLiIpOworb3MubWFrZWRldigpKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqZmlsZW5hbWU7Ci0gICAgaW50IG1vZGUgPSAwNjAwOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlID0gMDY2NjsKICAgICBpbnQgZGV2aWNlID0gMDsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aWk6bWtub2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZGUsICZkZXZpY2UpKQorICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGlpJE8mOm1rbm9kIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJm1vZGUsICZkZXZpY2UsCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGVuYW1lID0gUHlCeXRlc19BU19TVFJJTkcob3BhdGgpOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IG1rbm9kKGZpbGVuYW1lLCBtb2RlLCBkZXZpY2UpOworI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IG1rbm9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbWtub2QocGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYKIApAQCAtNjAwOSwxOCArODQxOSw4IEBACiAgICAgaW50IGZkOwogICAgIG9mZl90IGxlbmd0aDsKICAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpsZW5vYmo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmZ0cnVuY2F0ZSIsICZmZCwgJmxlbm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICBsZW5ndGggPSBQeUxvbmdfQXNMb25nKGxlbm9iaik7Ci0jZWxzZQotICAgIGxlbmd0aCA9IFB5TG9uZ19DaGVjayhsZW5vYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcobGVub2JqKSA6IFB5TG9uZ19Bc0xvbmcobGVub2JqKTsKLSNlbmRpZgotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsICZmZCwgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC02MDMzLDYgKzg0MzMsMTA5IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfVFJVTkNBVEUKK1B5RG9jX1NUUlZBUihwb3NpeF90cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUocGF0aCwgbGVuZ3RoKVxuXG5cCitUcnVuY2F0ZSB0aGUgZmlsZSBnaXZlbiBieSBwYXRoIHRvIGxlbmd0aCBieXRlcy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdHJ1bmNhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIG9mZl90IGxlbmd0aDsKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJzZV9vZmZfdCwgJmxlbmd0aCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlcyA9IGZ0cnVuY2F0ZShwYXRoLmZkLCBsZW5ndGgpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXMgPSB0cnVuY2F0ZShwYXRoLm5hcnJvdywgbGVuZ3RoKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXN1bHQgPSBwYXRoX3Bvc2l4X2Vycm9yKCJ0cnVuY2F0ZSIsICZwYXRoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICByZXN1bHQgPSBQeV9Ob25lOworICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCitQeURvY19TVFJWQVIocG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfXywKKyJwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKVxuXG5cCitFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkIGZvciB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmRcblwKK3N0YXJ0aW5nIGZyb20gb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wb3NpeF9mYWxsb2NhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIG9mZl90IGxlbiwgb2Zmc2V0OworICAgIGludCByZXMsIGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAorICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgIGVycm5vID0gcmVzOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorUHlEb2NfU1RSVkFSKHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19fLAorInBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpXG5cblwKK0Fubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmdcblwKK3RoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLlxuXAorVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0XG5cCitvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy5cblwKK2FkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCxcblwKK1BPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQgb3JcblwKK1BPU0lYX0ZBRFZfRE9OVE5FRUQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wb3NpeF9mYWR2aXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvZmZfdCBsZW4sIG9mZnNldDsKKyAgICBpbnQgcmVzLCBmZCwgYWR2aWNlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCisgICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuLCAmYWR2aWNlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgZXJybm8gPSByZXM7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9QVVRFTlYKIFB5RG9jX1NUUlZBUihwb3NpeF9wdXRlbnZfX2RvY19fLAogInB1dGVudihrZXksIHZhbHVlKVxuXG5cCkBAIC02MDQ1LDIzICs4NTQ4LDQwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfcHV0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBQeU9iamVjdCAqbmV3c3RyID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgd2NoYXJfdCAqczEsICpzMjsKKyAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwogICAgIHdjaGFyX3QgKm5ld2VudjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVVU6cHV0ZW52IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9zMSwgJm9zMikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3c3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwgb3MxLCBvczIpOworICAgIGlmIChuZXdzdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoX01BWF9FTlYgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuZXdzdHIpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBsb25nZXIgdGhhbiAldSBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgIF9NQVhfRU5WKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBuZXdlbnYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKG5ld3N0cik7CisgICAgaWYgKG5ld2VudiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChfd3B1dGVudihuZXdlbnYpKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogI2Vsc2UKICAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwogICAgIGNoYXIgKnMxLCAqczI7CiAgICAgY2hhciAqbmV3ZW52OwotI2VuZGlmCi0gICAgUHlPYmplY3QgKm5ld3N0ciA9IE5VTEw7Ci0gICAgc2l6ZV90IGxlbjsKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInV1OnB1dGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzMSwgJnMyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZWxzZQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiTyZPJjpwdXRlbnYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEsCkBAIC02MDY5LDU4ICs4NTg5LDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHMxID0gUHlCeXRlc19Bc1N0cmluZyhvczEpOwogICAgIHMyID0gUHlCeXRlc19Bc1N0cmluZyhvczIpOwotI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIGlmIChzdHJpY21wKHMxLCAiQkVHSU5MSUJQQVRIIikgPT0gMCkgewotICAgICAgICBBUElSRVQgcmM7Ci0KLSAgICAgICAgcmMgPSBEb3NTZXRFeHRMSUJQQVRIKHMyLCBCRUdJTl9MSUJQQVRIKTsKLSAgICAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICBvczJfZXJyb3IocmMpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotCi0gICAgfSBlbHNlIGlmIChzdHJpY21wKHMxLCAiRU5ETElCUEFUSCIpID09IDApIHsKLSAgICAgICAgQVBJUkVUIHJjOwotCi0gICAgICAgIHJjID0gRG9zU2V0RXh0TElCUEFUSChzMiwgRU5EX0xJQlBBVEgpOwotICAgICAgICBpZiAocmMgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIG9zMl9lcnJvcihyYyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNlbmRpZgotICAgIC8qIFhYWCBUaGlzIGNhbiBsZWFrIG1lbW9yeSAtLSBub3QgZWFzeSB0byBmaXggOi0oICovCi0gICAgLyogbGVuIGluY2x1ZGVzIHNwYWNlIGZvciBhIHRyYWlsaW5nIFwwOyB0aGUgc2l6ZSBhcmcgdG8KLSAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplIGRvZXMgbm90IGNvdW50IHRoYXQgKi8KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgbGVuID0gd2NzbGVuKHMxKSArIHdjc2xlbihzMikgKyAyOwotICAgIGlmIChfTUFYX0VOViA8IChsZW4gLSAxKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbG9uZ2VyIHRoYW4gJXUgY2hhcmFjdGVycyIsCi0gICAgICAgICAgICAgICAgICAgICBfTUFYX0VOVik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIG5ld3N0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAoaW50KWxlbiAtIDEpOwotI2Vsc2UKLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9zMSkgKyBQeUJ5dGVzX0dFVF9TSVpFKG9zMikgKyAyOwotICAgIG5ld3N0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgKGludClsZW4gLSAxKTsKLSNlbmRpZgorICAgIG5ld3N0ciA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBzMSwgczIpOwogICAgIGlmIChuZXdzdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgbmV3ZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZShuZXdzdHIpOwotICAgIF9zbndwcmludGYobmV3ZW52LCBsZW4sIEwiJXM9JXMiLCBzMSwgczIpOwotICAgIGlmIChfd3B1dGVudihuZXdlbnYpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2Vsc2UKKwogICAgIG5ld2VudiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld3N0cik7Ci0gICAgUHlPU19zbnByaW50ZihuZXdlbnYsIGxlbiwgIiVzPSVzIiwgczEsIHMyKTsKICAgICBpZiAocHV0ZW52KG5ld2VudikpIHsKICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTYxMzEsMTMgKzg2MDcsNyBAQAogICAgICAqIHRoaXMgd2lsbCBjYXVzZSBwcmV2aW91cyB2YWx1ZSB0byBiZSBjb2xsZWN0ZWQuICBUaGlzIGhhcyB0bwogICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCBwdXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlIG9sZCB2YWx1ZQogICAgICAqIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uICovCi0gICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgIG9zMSwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICBuZXdzdHIpKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBvczEsIG5ld3N0cikpIHsKICAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQpAQCAtNjE0NSwxMCArODYxNSw2IEBACiAgICAgICAgIFB5X0RFQ1JFRihuZXdzdHIpOwogICAgIH0KIAotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgfQotI2VuZGlmCi0KICNpZm5kZWYgTVNfV0lORE9XUwogICAgIFB5X0RFQ1JFRihvczEpOwogICAgIFB5X0RFQ1JFRihvczIpOwpAQCAtNjE3MywyMyArODYzOSwyMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3Vuc2V0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3MxOwotICAgIGNoYXIgKnMxOworICAgIFB5T2JqZWN0ICpuYW1lOwogI2lmbmRlZiBIQVZFX0JST0tFTl9VTlNFVEVOVgogICAgIGludCBlcnI7CiAjZW5kaWYKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6dW5zZXRlbnYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEpKQorCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzMSA9IFB5Qnl0ZXNfQXNTdHJpbmcob3MxKTsKIAogI2lmZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCi0gICAgdW5zZXRlbnYoczEpOworICAgIHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICNlbHNlCi0gICAgZXJyID0gdW5zZXRlbnYoczEpOworICAgIGVyciA9IHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvczEpOworICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KICNlbmRpZgpAQCAtNjE5OSwxMiArODY2NCwxMSBAQAogICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCB1bnNldGVudigpIGNhbGwgYmVjYXVzZSB0aGUKICAgICAgKiBvbGQgdmFsdWUgd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4KICAgICAgKi8KLSAgICBpZiAoUHlEaWN0X0RlbEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG9zMSkpIHsKKyAgICBpZiAoUHlEaWN0X0RlbEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG5hbWUpKSB7CiAgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KLQotICAgIFB5X0RFQ1JFRihvczEpOworICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiB1bnNldGVudiAqLwpAQCAtNjIyNiw3ICs4NjkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJlcnJvcigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1lc3NhZ2UpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKG1lc3NhZ2UsICJzdXJyb2dhdGVlc2NhcGUiKTsKIH0KIAogCkBAIC02NDMyLDcgKzg4OTYsOCBAQAogCiBQeURvY19TVFJWQVIocG9zaXhfZnN0YXR2ZnNfX2RvY19fLAogImZzdGF0dmZzKGZkKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC4iKTsKK1BlcmZvcm0gYW4gZnN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZkLlxuXAorRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZzdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTY0NTcsMjcgKzg5MjIsODcgQEAKICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgogCiBQeURvY19TVFJWQVIocG9zaXhfc3RhdHZmc19fZG9jX18sCi0ic3RhdHZmcyhwYXRoKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4iKTsKKyJzdGF0dmZzKHBhdGgpXG5cblwKK1BlcmZvcm0gYSBzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3N0YXR2ZnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIGNoYXIgKnBhdGg7Ci0gICAgaW50IHJlczsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnN0YXR2ZnMiLCAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBzdGF0dmZzKHBhdGgsICZzdCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOwogCi0gICAgcmV0dXJuIF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZTVEFUVkZTCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0ZTVEFUVkZTCisgICAgaWYgKHBhdGguZmQgIT0gLTEpIHsKKyNpZmRlZiBfX0FQUExFX18KKyAgICAgICAgLyogaGFuZGxlIHdlYWstbGlua2luZyBvbiBNYWMgT1MgWCAxMC4zICovCisgICAgICAgIGlmIChmc3RhdHZmcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBmZF9zcGVjaWZpZWQoInN0YXR2ZnMiLCBwYXRoLmZkKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGZzdGF0dmZzKHBhdGguZmQsICZzdCk7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBzdGF0dmZzKHBhdGgubmFycm93LCAmc3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoInN0YXR2ZnMiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9TVEFUVkZTICovCiAKKyNpZmRlZiBNU19XSU5ET1dTCitQeURvY19TVFJWQVIod2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX18sCisiX2dldGRpc2t1c2FnZShwYXRoKSAtPiAodG90YWwsIGZyZWUpXG5cblwKK1JldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbjMyX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEJPT0wgcmV0dmFsOworICAgIFVMQVJHRV9JTlRFR0VSIF8sIHRvdGFsLCBmcmVlOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1IiwgJnBhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXR2YWwgPSBHZXREaXNrRnJlZVNwYWNlRXhXKHBhdGgsICZfLCAmdG90YWwsICZmcmVlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXR2YWwgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihMTCkiLCB0b3RhbC5RdWFkUGFydCwgZnJlZS5RdWFkUGFydCk7Cit9CisjZW5kaWYKKworCiAvKiBUaGlzIGlzIHVzZWQgZm9yIGZwYXRoY29uZigpLCBwYXRoY29uZigpLCBjb25mc3RyKCkgYW5kIHN5c2NvbmYoKS4KICAqIEl0IG1hcHMgc3RyaW5ncyByZXByZXNlbnRpbmcgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBuYW1lcyB0bwogICogaW50ZWdlciB2YWx1ZXMsIGFsbG93aW5nIHRob3NlIGZ1bmN0aW9ucyB0byBiZSBjYWxsZWQgd2l0aCB0aGUKQEAgLTY2NjQsMzEgKzkxODksNDUgQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9wYXRoY29uZl9fZG9jX18sCiAicGF0aGNvbmYocGF0aCwgbmFtZSkgLT4gaW50ZWdlclxuXG5cCiBSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IHBhdGguXG5cCi1JZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLiIpOworSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogeworICAgIHBhdGhfdCBwYXRoOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCBuYW1lOwotICAgIGNoYXIgKnBhdGg7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJjpwYXRoY29uZiIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgbG9uZyBsaW1pdDsKIAogICAgIGVycm5vID0gMDsKLSAgICBsaW1pdCA9IHBhdGhjb25mKHBhdGgsIG5hbWUpOworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIGxpbWl0ID0gZnBhdGhjb25mKHBhdGguZmQsIG5hbWUpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBsaW1pdCA9IHBhdGhjb25mKHBhdGgubmFycm93LCBuYW1lKTsKICAgICBpZiAobGltaXQgPT0gLTEgJiYgZXJybm8gIT0gMCkgewogICAgICAgICBpZiAoZXJybm8gPT0gRUlOVkFMKQogICAgICAgICAgICAgLyogY291bGQgYmUgYSBwYXRoIG9yIG5hbWUgcHJvYmxlbSAqLwogICAgICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHBhdGhfcG9zaXhfZXJyb3IoInBhdGhjb25mIiwgJnBhdGgpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhsaW1pdCk7CiAgICAgfQorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNzU0MCw5ICsxMDA3OSwxMCBAQAogICAgIFB5T2JqZWN0ICpvZmlsZXBhdGg7CiAgICAgY2hhciAqZmlsZXBhdGg7CiAgICAgY2hhciAqb3BlcmF0aW9uID0gTlVMTDsKKyAgICB3Y2hhcl90ICp3cGF0aCwgKndvcGVyYXRpb247CiAgICAgSElOU1RBTkNFIHJjOwogCi0gICAgUHlPYmplY3QgKnVuaXBhdGgsICp3b3BlcmF0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxzOnN0YXJ0ZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmlwYXRoLCAmb3BlcmF0aW9uKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNzU1MCwyNiArMTAwOTAsMzUgQEAKICAgICB9CiAKICAgICBpZiAob3BlcmF0aW9uKSB7Ci0gICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkob3BlcmF0aW9uLAorICAgICAgICB1b3BlcmF0aW9uID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKG9wZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4ob3BlcmF0aW9uKSwgTlVMTCk7Ci0gICAgICAgIGlmICghd29wZXJhdGlvbikgeworICAgICAgICBpZiAoIXVvcGVyYXRpb24pIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBvcGVyYXRpb24gPSBOVUxMOwogICAgICAgICAgICAgZ290byBub3JtYWw7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pcGF0aCk7CisgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgIGdvdG8gbm9ybWFsOworICAgIGlmICh1b3BlcmF0aW9uKSB7CisgICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVvcGVyYXRpb24pOworICAgICAgICBpZiAod29wZXJhdGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBub3JtYWw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBTaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24gPyBQeVVuaWNvZGVfQVNfVU5JQ09ERSh3b3BlcmF0aW9uKSA6IDAsCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaXBhdGgpLAotICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKKyAgICByYyA9IFNoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiwgd3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBQeV9YREVDUkVGKHdvcGVyYXRpb24pOworICAgIFB5X1hERUNSRUYodW9wZXJhdGlvbik7CiAgICAgaWYgKHJjIDw9IChISU5TVEFOQ0UpMzIpIHsKLSAgICAgICAgUHlPYmplY3QgKmVycnZhbCA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoInN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaXBhdGgpKTsKLSAgICAgICAgcmV0dXJuIGVycnZhbDsKKyAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJzdGFydGZpbGUiLCB1bmlwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTc1NzksNiArMTAxMjgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2ZpbGVwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BlcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKG9maWxlcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBmaWxlcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2ZpbGVwYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmMgPSBTaGVsbEV4ZWN1dGUoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aCwKQEAgLTc2MjMsNjIgKzEwMTc2LDExIEBACiBkZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBmZDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgIWlzYXR0eShmZCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKE1TX1dJTjY0KQotICAgIGlmIChmZCA9PSAwKSB7Ci0gICAgICAgIGNoYXIgYnVmWzEwMF07Ci0gICAgICAgIHNwcmludGYoYnVmLCAiY3AlZCIsIEdldENvbnNvbGVDUCgpKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgfQotICAgIGlmIChmZCA9PSAxIHx8IGZkID09IDIpIHsKLSAgICAgICAgY2hhciBidWZbMTAwXTsKLSAgICAgICAgc3ByaW50ZihidWYsICJjcCVkIiwgR2V0Q29uc29sZU91dHB1dENQKCkpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKLSAgICB9Ci0jZWxpZiBkZWZpbmVkKENPREVTRVQpCi0gICAgewotICAgICAgICBjaGFyICpjb2Rlc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7Ci0gICAgICAgIGlmIChjb2Rlc2V0ICE9IE5VTEwgJiYgY29kZXNldFswXSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNvZGVzZXQpOwotICAgIH0KLSNlbmRpZgotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3VyYW5kb21fX2RvY19fLAotInVyYW5kb20obikgLT4gc3RyXG5cblwKLVJldHVybiBuIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91cmFuZG9tKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgcmV0OwotCi0gICAgIC8qIFJlYWQgYXJndW1lbnRzICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnVyYW5kb20iLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSk7Ci0gICAgaWYgKHJldCA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeV9kZXZpY2VfZW5jb2RpbmcoZmQpOwogfQogCiAjaWZkZWYgSEFWRV9TRVRSRVNVSUQKQEAgLTc3NTcsMjEgKzEwMjU5LDQ2OCBAQAogfQogI2VuZGlmCiAKKyNpZmRlZiBVU0VfWEFUVFJTCisKK1B5RG9jX1NUUlZBUihwb3NpeF9nZXR4YXR0cl9fZG9jX18sCisiZ2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkgLT4gdmFsdWVcblxuXAorUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBnZXR4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZ2V0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIHBhdGhfdCBhdHRyaWJ1dGU7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEw7CisgICAgaW50IGk7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAorICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJnZXR4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CisgICAgICAgIHZvaWQgKnB0cjsKKyAgICAgICAgc3NpemVfdCByZXN1bHQ7CisgICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OworICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOworICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICBwYXRoX2Vycm9yKCJnZXR4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlcik7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICAgICAgaWYgKHBhdGguZmQgPj0gMCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZnZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgcmVzdWx0ID0gZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBsZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgICAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImdldHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBidWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgLyogQ2FuIG9ubHkgc2hyaW5rLiAqLworICAgICAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZidWZmZXIsIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zZXR4YXR0cl9fZG9jX18sCisic2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1NldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2V0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIHBhdGhfdCBhdHRyaWJ1dGU7CisgICAgUHlfYnVmZmVyIHZhbHVlOworICAgIGludCBmbGFncyA9IDA7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAidmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOworICAgIG1lbXNldCgmdmFsdWUsIDAsIHNpemVvZih2YWx1ZSkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLAorICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKKyAgICAgICAgJnZhbHVlLCAmZmxhZ3MsCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInNldHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmc2V0eGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSBzZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBsc2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJzZXR4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZXhhdHRyX19kb2NfXywKKyJyZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitSZW1vdmUgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuXAorcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHJlbW92ZXhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3JlbW92ZXhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBwYXRoX3QgYXR0cmlidXRlOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpyZW1vdmV4YXR0ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInJlbW92ZXhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmcmVtb3ZleGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSByZW1vdmV4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBscmVtb3ZleGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJyZW1vdmV4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfbGlzdHhhdHRyX19kb2NfXywKKyJsaXN0eGF0dHIocGF0aD0nLicsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitSZXR1cm4gYSBsaXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2lmIHBhdGggaXMgTm9uZSwgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9saXN0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBjaGFyICpidWZmZXIgPSBOVUxMOworICAgIGNoYXIgKm5hbWU7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgcGF0aC5mZCA9IC0xOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJiRwOmxpc3R4YXR0ciIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImxpc3R4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIG5hbWUgPSBwYXRoLm5hcnJvdyA/IHBhdGgubmFycm93IDogIi4iOworICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CisgICAgICAgIGNoYXIgKnN0YXJ0LCAqdHJhY2UsICplbmQ7CisgICAgICAgIHNzaXplX3QgbGVuZ3RoOworICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsgMjU2LCBYQVRUUl9MSVNUX01BWCwgMCB9OworICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOworICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICAvKiBFUkFOR0UgKi8KKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImxpc3R4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlciA9IFB5TWVtX01BTExPQyhidWZmZXJfc2l6ZSk7CisgICAgICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgICAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICAgICAgbGVuZ3RoID0gZmxpc3R4YXR0cihwYXRoLmZkLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgbGVuZ3RoID0gbGlzdHhhdHRyKG5hbWUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsZW5ndGggPSBsbGlzdHhhdHRyKG5hbWUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgICAgICBpZiAobGVuZ3RoIDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImxpc3R4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIGVuZCA9IGJ1ZmZlciArIGxlbmd0aDsKKyAgICAgICAgZm9yICh0cmFjZSA9IHN0YXJ0ID0gYnVmZmVyOyB0cmFjZSAhPSBlbmQ7IHRyYWNlKyspIHsKKyAgICAgICAgICAgIGlmICghKnRyYWNlKSB7CisgICAgICAgICAgICAgICAgaW50IGVycm9yOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyaWJ1dGUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UgLSBzdGFydCk7CisgICAgICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXJyb3IgPSBQeUxpc3RfQXBwZW5kKHJlc3VsdCwgYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhcnQgPSB0cmFjZSArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBicmVhazsKKyAgICB9CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgUHlNZW1fRlJFRShidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvKiBVU0VfWEFUVFJTICovCisKKworUHlEb2NfU1RSVkFSKHBvc2l4X3VyYW5kb21fX2RvY19fLAorInVyYW5kb20obikgLT4gc3RyXG5cblwKK1JldHVybiBuIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF91cmFuZG9tKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpbnQgcmV0OworCisgICAgIC8qIFJlYWQgYXJndW1lbnRzICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnVyYW5kb20iLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSk7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFRlcm1pbmFsIHNpemUgcXVlcnlpbmcgKi8KKworc3RhdGljIFB5VHlwZU9iamVjdCBUZXJtaW5hbFNpemVUeXBlOworCitQeURvY19TVFJWQVIoVGVybWluYWxTaXplX2RvY3N0cmluZywKKyAgICAiQSB0dXBsZSBvZiAoY29sdW1ucywgbGluZXMpIGZvciBob2xkaW5nIHRlcm1pbmFsIHdpbmRvdyBzaXplIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIFRlcm1pbmFsU2l6ZV9maWVsZHNbXSA9IHsKKyAgICB7ImNvbHVtbnMiLCAid2lkdGggb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzIn0sCisgICAgeyJsaW5lcyIsICJoZWlnaHQgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzIn0sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIFRlcm1pbmFsU2l6ZV9kZXNjID0geworICAgICJvcy50ZXJtaW5hbF9zaXplIiwKKyAgICBUZXJtaW5hbFNpemVfZG9jc3RyaW5nLAorICAgIFRlcm1pbmFsU2l6ZV9maWVsZHMsCisgICAgMiwKK307CisKKyNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCitQeURvY19TVFJWQVIodGVybXNpemVfX2RvY19fLAorICAgICJSZXR1cm4gdGhlIHNpemUgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBhcyAoY29sdW1ucywgbGluZXMpLlxuIiAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJUaGUgb3B0aW9uYWwgYXJndW1lbnQgZmQgKGRlZmF1bHQgc3RhbmRhcmQgb3V0cHV0KSBzcGVjaWZpZXNcbiIgICAgICAgXAorICAgICJ3aGljaCBmaWxlIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHF1ZXJpZWQuXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJJZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdCBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbCwgYW4gT1NFcnJvclxuIiAgXAorICAgICJpcyB0aHJvd24uXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJUaGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBkZWZpbmVkIGlmIGFuIGltcGxlbWVudGF0aW9uIGlzXG4iICAgICAgICAgXAorICAgICJhdmFpbGFibGUgZm9yIHRoaXMgc3lzdGVtLlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUgaXMgdGhlIGhpZ2gtbGV2ZWwgZnVuY3Rpb24gd2hpY2ggc2hvdWxkIFxuIiAgXAorICAgICJub3JtYWxseSBiZSB1c2VkLCBvcy5nZXRfdGVybWluYWxfc2l6ZSBpcyB0aGUgbG93LWxldmVsIGltcGxlbWVudGF0aW9uLiIpOworCitzdGF0aWMgUHlPYmplY3QqCitnZXRfdGVybWluYWxfc2l6ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNvbHVtbnMsIGxpbmVzOworICAgIFB5T2JqZWN0ICp0ZXJtc2l6ZTsKKworICAgIGludCBmZCA9IGZpbGVubyhzdGRvdXQpOworICAgIC8qIFVuZGVyIHNvbWUgY29uZGl0aW9ucyBzdGRvdXQgbWF5IG5vdCBiZSBjb25uZWN0ZWQgYW5kCisgICAgICogZmlsZW5vKHN0ZG91dCkgbWF5IHBvaW50IHRvIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLiBGb3IgZXhhbXBsZQorICAgICAqIEdVSSBhcHBzIGRvbid0IGhhdmUgdmFsaWQgc3RhbmRhcmQgc3RyZWFtcyBieSBkZWZhdWx0LgorICAgICAqCisgICAgICogSWYgdGhpcyBoYXBwZW5zLCBhbmQgdGhlIG9wdGlvbmFsIGZkIGFyZ3VtZW50IGlzIG5vdCBwcmVzZW50LAorICAgICAqIHRoZSBpb2N0bCBiZWxvdyB3aWxsIGZhaWwgcmV0dXJuaW5nIEVCQURGLiBUaGlzIGlzIHdoYXQgd2Ugd2FudC4KKyAgICAgKi8KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGkiLCAmZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2lmZGVmIFRFUk1TSVpFX1VTRV9JT0NUTAorICAgIHsKKyAgICAgICAgc3RydWN0IHdpbnNpemUgdzsKKyAgICAgICAgaWYgKGlvY3RsKGZkLCBUSU9DR1dJTlNaLCAmdykpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBjb2x1bW5zID0gdy53c19jb2w7CisgICAgICAgIGxpbmVzID0gdy53c19yb3c7CisgICAgfQorI2VuZGlmIC8qIFRFUk1TSVpFX1VTRV9JT0NUTCAqLworCisjaWZkZWYgVEVSTVNJWkVfVVNFX0NPTklPCisgICAgeworICAgICAgICBEV09SRCBuaGFuZGxlOworICAgICAgICBIQU5ETEUgaGFuZGxlOworICAgICAgICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBjc2JpOworICAgICAgICBzd2l0Y2ggKGZkKSB7CisgICAgICAgIGNhc2UgMDogbmhhbmRsZSA9IFNURF9JTlBVVF9IQU5ETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOiBuaGFuZGxlID0gU1REX09VVFBVVF9IQU5ETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOiBuaGFuZGxlID0gU1REX0VSUk9SX0hBTkRMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiYmFkIGZpbGUgZGVzY3JpcHRvciIpOworICAgICAgICB9CisgICAgICAgIGhhbmRsZSA9IEdldFN0ZEhhbmRsZShuaGFuZGxlKTsKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19PU0Vycm9yLCAiaGFuZGxlIGNhbm5vdCBiZSByZXRyaWV2ZWQiKTsKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgICAgICBpZiAoIUdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvKGhhbmRsZSwgJmNzYmkpKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgICAgIGNvbHVtbnMgPSBjc2JpLnNyV2luZG93LlJpZ2h0IC0gY3NiaS5zcldpbmRvdy5MZWZ0ICsgMTsKKyAgICAgICAgbGluZXMgPSBjc2JpLnNyV2luZG93LkJvdHRvbSAtIGNzYmkuc3JXaW5kb3cuVG9wICsgMTsKKyAgICB9CisjZW5kaWYgLyogVEVSTVNJWkVfVVNFX0NPTklPICovCisKKyAgICB0ZXJtc2l6ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZUZXJtaW5hbFNpemVUeXBlKTsKKyAgICBpZiAodGVybXNpemUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0ZXJtc2l6ZSwgMCwgUHlMb25nX0Zyb21Mb25nKGNvbHVtbnMpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRlcm1zaXplLCAxLCBQeUxvbmdfRnJvbUxvbmcobGluZXMpKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYodGVybXNpemUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHRlcm1zaXplOworfQorI2VuZGlmIC8qIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkgKi8KKworCiBzdGF0aWMgUHlNZXRob2REZWYgcG9zaXhfbWV0aG9kc1tdID0gewotICAgIHsiYWNjZXNzIiwgICAgICAgICAgcG9zaXhfYWNjZXNzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2FjY2Vzc19fZG9jX199LAorICAgIHsiYWNjZXNzIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9hY2Nlc3NfX2RvY19ffSwKICNpZmRlZiBIQVZFX1RUWU5BTUUKICAgICB7InR0eW5hbWUiLCAgICAgICAgIHBvc2l4X3R0eW5hbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfdHR5bmFtZV9fZG9jX199LAogI2VuZGlmCi0gICAgeyJjaGRpciIsICAgICAgICAgICBwb3NpeF9jaGRpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaGRpcl9fZG9jX199LAorICAgIHsiY2hkaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NoZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NoZGlyX19kb2NfX30sCiAjaWZkZWYgSEFWRV9DSEZMQUdTCi0gICAgeyJjaGZsYWdzIiwgICAgICAgICBwb3NpeF9jaGZsYWdzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NoZmxhZ3NfX2RvY19ffSwKKyAgICB7ImNoZmxhZ3MiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NoZmxhZ3NfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0NIRkxBR1MgKi8KLSAgICB7ImNobW9kIiwgICAgICAgICAgIHBvc2l4X2NobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NobW9kX19kb2NfX30sCisgICAgeyJjaG1vZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2htb2QsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2htb2RfX2RvY19ffSwKICNpZmRlZiBIQVZFX0ZDSE1PRAogICAgIHsiZmNobW9kIiwgICAgICAgICAgcG9zaXhfZmNobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZjaG1vZF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfRkNITU9EICovCiAjaWZkZWYgSEFWRV9DSE9XTgotICAgIHsiY2hvd24iLCAgICAgICAgICAgcG9zaXhfY2hvd24sIE1FVEhfVkFSQVJHUywgcG9zaXhfY2hvd25fX2RvY19ffSwKKyAgICB7ImNob3duIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG93biwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG93bl9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KICNpZmRlZiBIQVZFX0xDSE1PRAogICAgIHsibGNobW9kIiwgICAgICAgICAgcG9zaXhfbGNobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaG1vZF9fZG9jX199LApAQCAtNzc5NywzMiArMTA3NDYsNTcgQEAKICAgICB7ImdldGN3ZGIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9nZXRjd2RfYnl0ZXMsCiAgICAgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGN3ZGJfX2RvY19ffSwKICNlbmRpZgotI2lmZGVmIEhBVkVfTElOSwotICAgIHsibGluayIsICAgICAgICAgICAgcG9zaXhfbGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9saW5rX19kb2NfX30sCisjaWYgZGVmaW5lZChIQVZFX0xJTkspIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICB7ImxpbmsiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xpbmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0xJTksgKi8KLSAgICB7Imxpc3RkaXIiLCAgICAgICAgIHBvc2l4X2xpc3RkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfbGlzdGRpcl9fZG9jX199LAotICAgIHsibHN0YXQiLCAgICAgICAgICAgcG9zaXhfbHN0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfbHN0YXRfX2RvY19ffSwKLSAgICB7Im1rZGlyIiwgICAgICAgICAgIHBvc2l4X21rZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21rZGlyX19kb2NfX30sCisgICAgeyJsaXN0ZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGlzdGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saXN0ZGlyX19kb2NfX30sCisgICAgeyJsc3RhdCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbHN0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbHN0YXRfX2RvY19ffSwKKyAgICB7Im1rZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2Rpcl9fZG9jX199LAogI2lmZGVmIEhBVkVfTklDRQogICAgIHsibmljZSIsICAgICAgICAgICAgcG9zaXhfbmljZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9uaWNlX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9OSUNFICovCisjaWZkZWYgSEFWRV9HRVRQUklPUklUWQorICAgIHsiZ2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19ffSwKKyNlbmRpZiAvKiBIQVZFX0dFVFBSSU9SSVRZICovCisjaWZkZWYgSEFWRV9TRVRQUklPUklUWQorICAgIHsic2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfc2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cHJpb3JpdHlfX2RvY19ffSwKKyNlbmRpZiAvKiBIQVZFX1NFVFBSSU9SSVRZICovCiAjaWZkZWYgSEFWRV9SRUFETElOSwotICAgIHsicmVhZGxpbmsiLCAgICAgICAgcG9zaXhfcmVhZGxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZGxpbmtfX2RvY19ffSwKKyAgICB7InJlYWRsaW5rIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZWFkbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkbGlua19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KICNpZiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJyZWFkbGluayIsICAgICAgICB3aW5fcmVhZGxpbmssIE1FVEhfVkFSQVJHUywgd2luX3JlYWRsaW5rX19kb2NfX30sCisgICAgeyJyZWFkbGluayIsICAgICAgICAoUHlDRnVuY3Rpb24pd2luX3JlYWRsaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5rX19kb2NfX30sCiAjZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwotICAgIHsicmVuYW1lIiwgICAgICAgICAgcG9zaXhfcmVuYW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlbmFtZV9fZG9jX199LAotICAgIHsicm1kaXIiLCAgICAgICAgICAgcG9zaXhfcm1kaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfcm1kaXJfX2RvY19ffSwKLSAgICB7InN0YXQiLCAgICAgICAgICAgIHBvc2l4X3N0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3RhdF9fZG9jX199LAorICAgIHsicmVuYW1lIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZW5hbWVfX2RvY19ffSwKKyAgICB7InJlcGxhY2UiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZXBsYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlcGxhY2VfX2RvY19ffSwKKyAgICB7InJtZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ybWRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ybWRpcl9fZG9jX199LAorICAgIHsic3RhdCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3RhdF9fZG9jX199LAogICAgIHsic3RhdF9mbG9hdF90aW1lcyIsIHN0YXRfZmxvYXRfdGltZXMsIE1FVEhfVkFSQVJHUywgc3RhdF9mbG9hdF90aW1lc19fZG9jX199LAotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsic3ltbGluayIsICAgICAgICAgcG9zaXhfc3ltbGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeW1saW5rX19kb2NfX30sCisjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspCisgICAgeyJzeW1saW5rIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3ltbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zeW1saW5rX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pd2luX3N5bWxpbmssIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHdpbl9zeW1saW5rX19kb2NfX30sCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KICNpZmRlZiBIQVZFX1NZU1RFTQogICAgIHsic3lzdGVtIiwgICAgICAgICAgcG9zaXhfc3lzdGVtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N5c3RlbV9fZG9jX199LAogI2VuZGlmCkBAIC03ODMwLDE2ICsxMDgwNCwyMyBAQAogI2lmZGVmIEhBVkVfVU5BTUUKICAgICB7InVuYW1lIiwgICAgICAgICAgIHBvc2l4X3VuYW1lLCBNRVRIX05PQVJHUywgcG9zaXhfdW5hbWVfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1VOQU1FICovCi0gICAgeyJ1bmxpbmsiLCAgICAgICAgICBwb3NpeF91bmxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfdW5saW5rX19kb2NfX30sCi0gICAgeyJyZW1vdmUiLCAgICAgICAgICBwb3NpeF91bmxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVtb3ZlX19kb2NfX30sCi0gICAgeyJ1dGltZSIsICAgICAgICAgICBwb3NpeF91dGltZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF91dGltZV9fZG9jX199LAorICAgIHsidW5saW5rIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3VubGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF91bmxpbmtfX2RvY19ffSwKKyAgICB7InJlbW92ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZlX19kb2NfX30sCisgICAgeyJ1dGltZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBwb3NpeF91dGltZV9fZG9jX199LAogI2lmZGVmIEhBVkVfVElNRVMKICAgICB7InRpbWVzIiwgICAgICAgICAgIHBvc2l4X3RpbWVzLCBNRVRIX05PQVJHUywgcG9zaXhfdGltZXNfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1RJTUVTICovCiAgICAgeyJfZXhpdCIsICAgICAgICAgICBwb3NpeF9fZXhpdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9fZXhpdF9fZG9jX199LAogI2lmZGVmIEhBVkVfRVhFQ1YKICAgICB7ImV4ZWN2IiwgICAgICAgICAgIHBvc2l4X2V4ZWN2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2V4ZWN2X19kb2NfX30sCi0gICAgeyJleGVjdmUiLCAgICAgICAgICBwb3NpeF9leGVjdmUsIE1FVEhfVkFSQVJHUywgcG9zaXhfZXhlY3ZlX19kb2NfX30sCisgICAgeyJleGVjdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZXhlY3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2V4ZWN2ZV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KICNpZmRlZiBIQVZFX1NQQVdOVgogICAgIHsic3Bhd252IiwgICAgICAgICAgcG9zaXhfc3Bhd252LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NwYXdudl9fZG9jX199LApAQCAtNzg1NSw2ICsxMDgzNiwzMiBAQAogI2lmZGVmIEhBVkVfRk9SSwogICAgIHsiZm9yayIsICAgICAgICAgICAgcG9zaXhfZm9yaywgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0ZPUksgKi8KKyNpZmRlZiBIQVZFX1NDSEVEX0gKKyNpZmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKyAgICB7InNjaGVkX2dldHBhcmFtIiwgcG9zaXhfc2NoZWRfZ2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisgICAgeyJzY2hlZF9nZXRzY2hlZHVsZXIiLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorICAgIHsic2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorICAgIHsic2NoZWRfc2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9zZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRwYXJhbV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKyAgICB7InNjaGVkX3NldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19ffSwKKyNlbmRpZgorICAgIHsic2NoZWRfeWllbGQiLCAgICAgcG9zaXhfc2NoZWRfeWllbGQsIE1FVEhfTk9BUkdTLCBwb3NpeF9zY2hlZF95aWVsZF9fZG9jX199LAorI2lmZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKyAgICB7InNjaGVkX3NldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19ffSwKKyAgICB7InNjaGVkX2dldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19ffSwKKyNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU0NIRURfSCAqLwogI2lmIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKQogICAgIHsib3BlbnB0eSIsICAgICAgICAgcG9zaXhfb3BlbnB0eSwgTUVUSF9OT0FSR1MsIHBvc2l4X29wZW5wdHlfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX09QRU5QVFkgfHwgSEFWRV9fR0VUUFRZIHx8IEhBVkVfREVWX1BUTVggKi8KQEAgLTc4NzAsNiArMTA4NzcsOSBAQAogI2lmZGVmIEhBVkVfR0VUR0lECiAgICAgeyJnZXRnaWQiLCAgICAgICAgICBwb3NpeF9nZXRnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRnaWRfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0dFVEdJRCAqLworI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCisgICAgeyJnZXRncm91cGxpc3QiLCAgICBwb3NpeF9nZXRncm91cGxpc3QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0Z3JvdXBsaXN0X19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX0dFVEdST1VQUwogICAgIHsiZ2V0Z3JvdXBzIiwgICAgICAgcG9zaXhfZ2V0Z3JvdXBzLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z3JvdXBzX19kb2NfX30sCiAjZW5kaWYKQEAgLTc4OTgsNyArMTA5MDgsNiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB7InN0YXJ0ZmlsZSIsICAgICAgIHdpbjMyX3N0YXJ0ZmlsZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9zdGFydGZpbGVfX2RvY19ffSwKICAgICB7ImtpbGwiLCAgICB3aW4zMl9raWxsLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX2tpbGxfX2RvY19ffSwKLSAgICB7ImxpbmsiLCAgICB3aW4zMl9saW5rLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX2xpbmtfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfU0VUVUlECiAgICAgeyJzZXR1aWQiLCAgICAgICAgICBwb3NpeF9zZXR1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0dWlkX19kb2NfX30sCkBAIC03OTM5LDYgKzEwOTQ4LDkgQEAKICNpZmRlZiBIQVZFX1dBSVQ0CiAgICAgeyJ3YWl0NCIsICAgICAgICAgICBwb3NpeF93YWl0NCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0NF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfV0FJVDQgKi8KKyNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCisgICAgeyJ3YWl0aWQiLCAgICAgICAgICBwb3NpeF93YWl0aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdGlkX19kb2NfX30sCisjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfV0FJVFBJRCkgfHwgZGVmaW5lZChIQVZFX0NXQUlUKQogICAgIHsid2FpdHBpZCIsICAgICAgICAgcG9zaXhfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0cGlkX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9XQUlUUElEICovCkBAIC03OTU3LDI1ICsxMDk2OSw1MyBAQAogI2lmZGVmIEhBVkVfVENTRVRQR1JQCiAgICAgeyJ0Y3NldHBncnAiLCAgICAgICBwb3NpeF90Y3NldHBncnAsIE1FVEhfVkFSQVJHUywgcG9zaXhfdGNzZXRwZ3JwX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9UQ1NFVFBHUlAgKi8KLSAgICB7Im9wZW4iLCAgICAgICAgICAgIHBvc2l4X29wZW4sIE1FVEhfVkFSQVJHUywgcG9zaXhfb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X29wZW4sXAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X29wZW5fX2RvY19ffSwKICAgICB7ImNsb3NlIiwgICAgICAgICAgIHBvc2l4X2Nsb3NlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlX19kb2NfX30sCiAgICAgeyJjbG9zZXJhbmdlIiwgICAgICBwb3NpeF9jbG9zZXJhbmdlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlcmFuZ2VfX2RvY19ffSwKICAgICB7ImRldmljZV9lbmNvZGluZyIsIGRldmljZV9lbmNvZGluZywgTUVUSF9WQVJBUkdTLCBkZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKICAgICB7ImR1cCIsICAgICAgICAgICAgIHBvc2l4X2R1cCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9kdXBfX2RvY19ffSwKICAgICB7ImR1cDIiLCAgICAgICAgICAgIHBvc2l4X2R1cDIsIE1FVEhfVkFSQVJHUywgcG9zaXhfZHVwMl9fZG9jX199LAorI2lmZGVmIEhBVkVfTE9DS0YKKyAgICB7ImxvY2tmIiwgICAgICAgICAgIHBvc2l4X2xvY2tmLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xvY2tmX19kb2NfX30sCisjZW5kaWYKICAgICB7ImxzZWVrIiwgICAgICAgICAgIHBvc2l4X2xzZWVrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xzZWVrX19kb2NfX30sCiAgICAgeyJyZWFkIiwgICAgICAgICAgICBwb3NpeF9yZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWRfX2RvY19ffSwKKyNpZmRlZiBIQVZFX1JFQURWCisgICAgeyJyZWFkdiIsICAgICAgICAgICBwb3NpeF9yZWFkdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkdl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QUkVBRAorICAgIHsicHJlYWQiLCAgICAgICAgICAgcG9zaXhfcHJlYWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHJlYWRfX2RvY19ffSwKKyNlbmRpZgogICAgIHsid3JpdGUiLCAgICAgICAgICAgcG9zaXhfd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfd3JpdGVfX2RvY19ffSwKKyNpZmRlZiBIQVZFX1dSSVRFVgorICAgIHsid3JpdGV2IiwgICAgICAgICAgcG9zaXhfd3JpdGV2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRldl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QV1JJVEUKKyAgICB7InB3cml0ZSIsICAgICAgICAgIHBvc2l4X3B3cml0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wd3JpdGVfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0VOREZJTEUKKyAgICB7InNlbmRmaWxlIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zZW5kZmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zZW5kZmlsZV9fZG9jX199LAorI2VuZGlmCiAgICAgeyJmc3RhdCIsICAgICAgICAgICBwb3NpeF9mc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdF9fZG9jX199LAogICAgIHsiaXNhdHR5IiwgICAgICAgICAgcG9zaXhfaXNhdHR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2lzYXR0eV9fZG9jX199LAogI2lmZGVmIEhBVkVfUElQRQogICAgIHsicGlwZSIsICAgICAgICAgICAgcG9zaXhfcGlwZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3BpcGVfX2RvY19ffSwKICNlbmRpZgorI2lmZGVmIEhBVkVfUElQRTIKKyAgICB7InBpcGUyIiwgICAgICAgICAgIHBvc2l4X3BpcGUyLCBNRVRIX08sIHBvc2l4X3BpcGUyX19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX01LRklGTwotICAgIHsibWtmaWZvIiwgICAgICAgICAgcG9zaXhfbWtmaWZvLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21rZmlmb19fZG9jX199LAorICAgIHsibWtmaWZvIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rZmlmbywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2ZpZm9fX2RvY19ffSwKICNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCi0gICAgeyJta25vZCIsICAgICAgICAgICBwb3NpeF9ta25vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9ta25vZF9fZG9jX199LAorICAgIHsibWtub2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rbm9kLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rbm9kX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX0RFVklDRV9NQUNST1MKICAgICB7Im1ham9yIiwgICAgICAgICAgIHBvc2l4X21ham9yLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21ham9yX19kb2NfX30sCkBAIC03OTg1LDYgKzExMDI1LDE3IEBACiAjaWZkZWYgSEFWRV9GVFJVTkNBVEUKICAgICB7ImZ0cnVuY2F0ZSIsICAgICAgIHBvc2l4X2Z0cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mdHJ1bmNhdGVfX2RvY19ffSwKICNlbmRpZgorI2lmZGVmIEhBVkVfVFJVTkNBVEUKKyAgICB7InRydW5jYXRlIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF90cnVuY2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF90cnVuY2F0ZV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QT1NJWF9GQUxMT0NBVEUKKyAgICB7InBvc2l4X2ZhbGxvY2F0ZSIsIHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGVfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorICAgIHsicG9zaXhfZmFkdmlzZSIsICAgcG9zaXhfcG9zaXhfZmFkdmlzZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX1BVVEVOVgogICAgIHsicHV0ZW52IiwgICAgICAgICAgcG9zaXhfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3B1dGVudl9fZG9jX199LAogI2VuZGlmCkBAIC03OTk4LDYgKzExMDQ5LDkgQEAKICNpZmRlZiBIQVZFX0ZTWU5DCiAgICAgeyJmc3luYyIsICAgICAgIHBvc2l4X2ZzeW5jLCBNRVRIX08sIHBvc2l4X2ZzeW5jX19kb2NfX30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NZTkMKKyAgICB7InN5bmMiLCAgICAgICAgcG9zaXhfc3luYywgTUVUSF9OT0FSR1MsIHBvc2l4X3N5bmNfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfRkRBVEFTWU5DCiAgICAgeyJmZGF0YXN5bmMiLCAgIHBvc2l4X2ZkYXRhc3luYywgIE1FVEhfTywgcG9zaXhfZmRhdGFzeW5jX19kb2NfX30sCiAjZW5kaWYKQEAgLTgwMzEsNyArMTEwODUsOSBAQAogICAgIHsiZnN0YXR2ZnMiLCAgICAgICAgcG9zaXhfZnN0YXR2ZnMsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXR2ZnNfX2RvY19ffSwKICNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkKLSAgICB7InN0YXR2ZnMiLCAgICAgICAgIHBvc2l4X3N0YXR2ZnMsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3RhdHZmc19fZG9jX199LAorICAgIHsic3RhdHZmcyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N0YXR2ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3RhdHZmc19fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9DT05GU1RSCiAgICAgeyJjb25mc3RyIiwgICAgICAgICBwb3NpeF9jb25mc3RyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NvbmZzdHJfX2RvY19ffSwKQEAgLTgwNDMsNyArMTEwOTksOSBAQAogICAgIHsiZnBhdGhjb25mIiwgICAgICAgcG9zaXhfZnBhdGhjb25mLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZwYXRoY29uZl9fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9QQVRIQ09ORgotICAgIHsicGF0aGNvbmYiLCAgICAgICAgcG9zaXhfcGF0aGNvbmYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcGF0aGNvbmZfX2RvY19ffSwKKyAgICB7InBhdGhjb25mIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9wYXRoY29uZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9wYXRoY29uZl9fZG9jX199LAogI2VuZGlmCiAgICAgeyJhYm9ydCIsICAgICAgICAgICBwb3NpeF9hYm9ydCwgTUVUSF9OT0FSR1MsIHBvc2l4X2Fib3J0X19kb2NfX30sCiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtODA1MSw2ICsxMTEwOSw3IEBACiAgICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsICAgICAgIHBvc2l4X19nZXRmaW5hbHBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHsiX2dldGZpbGVpbmZvcm1hdGlvbiIsICAgICBwb3NpeF9fZ2V0ZmlsZWluZm9ybWF0aW9uLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHsiX2lzZGlyIiwgICAgICAgICAgICAgICAgICBwb3NpeF9faXNkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2lzZGlyX19kb2NfX30sCisgICAgeyJfZ2V0ZGlza3VzYWdlIiwgICAgICAgICAgIHdpbjMyX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHUywgd2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9HRVRMT0FEQVZHCiAgICAgeyJnZXRsb2FkYXZnIiwgICAgICBwb3NpeF9nZXRsb2FkYXZnLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0bG9hZGF2Z19fZG9jX199LApAQCAtODA2OCw2ICsxMTEyNywyNCBAQAogI2lmZGVmIEhBVkVfR0VUUkVTR0lECiAgICAgeyJnZXRyZXNnaWQiLCAgICAgICBwb3NpeF9nZXRyZXNnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRyZXNnaWRfX2RvY19ffSwKICNlbmRpZgorCisjaWZkZWYgVVNFX1hBVFRSUworICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfc2V0eGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X3NldHhhdHRyX19kb2NfX30sCisgICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9nZXR4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfZ2V0eGF0dHJfX2RvY19ffSwKKyAgICB7InJlbW92ZXhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX199LAorICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3R4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdHhhdHRyX19kb2NfX30sCisjZW5kaWYKKyNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCisgICAgeyJnZXRfdGVybWluYWxfc2l6ZSIsIGdldF90ZXJtaW5hbF9zaXplLCBNRVRIX1ZBUkFSR1MsIHRlcm1zaXplX19kb2NfX30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTgyMzUsNiArMTEzMTIsOSBAQAogI2lmZGVmIE9fVEVYVAogICAgIGlmIChpbnMoZCwgIk9fVEVYVCIsIChsb25nKU9fVEVYVCkpIHJldHVybiAtMTsKICNlbmRpZgorI2lmZGVmIE9fWEFUVFIKKyAgICBpZiAoaW5zKGQsICJPX1hBVFRSIiwgKGxvbmcpT19YQVRUUikpIHJldHVybiAtMTsKKyNlbmRpZgogI2lmZGVmIE9fTEFSR0VGSUxFCiAgICAgaWYgKGlucyhkLCAiT19MQVJHRUZJTEUiLCAobG9uZylPX0xBUkdFRklMRSkpIHJldHVybiAtMTsKICNlbmRpZgpAQCAtODI0NCw2ICsxMTMyNCwzOCBAQAogI2lmZGVmIE9fRVhMT0NLCiAgICAgaWYgKGlucyhkLCAiT19FWExPQ0siLCAobG9uZylPX0VYTE9DSykpIHJldHVybiAtMTsKICNlbmRpZgorI2lmZGVmIE9fRVhFQworICAgIGlmIChpbnMoZCwgIk9fRVhFQyIsIChsb25nKU9fRVhFQykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fU0VBUkNICisgICAgaWYgKGlucyhkLCAiT19TRUFSQ0giLCAobG9uZylPX1NFQVJDSCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fVFRZX0lOSVQKKyAgICBpZiAoaW5zKGQsICJPX1RUWV9JTklUIiwgKGxvbmcpT19UVFlfSU5JVCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBSSU9fUFJPQ0VTUworICAgIGlmIChpbnMoZCwgIlBSSU9fUFJPQ0VTUyIsIChsb25nKVBSSU9fUFJPQ0VTUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBSSU9fUEdSUAorICAgIGlmIChpbnMoZCwgIlBSSU9fUEdSUCIsIChsb25nKVBSSU9fUEdSUCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBSSU9fVVNFUgorICAgIGlmIChpbnMoZCwgIlBSSU9fVVNFUiIsIChsb25nKVBSSU9fVVNFUikpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fQ0xPRVhFQworICAgIGlmIChpbnMoZCwgIk9fQ0xPRVhFQyIsIChsb25nKU9fQ0xPRVhFQykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fQUNDTU9ERQorICAgIGlmIChpbnMoZCwgIk9fQUNDTU9ERSIsIChsb25nKU9fQUNDTU9ERSkpIHJldHVybiAtMTsKKyNlbmRpZgorCisKKyNpZmRlZiBTRUVLX0hPTEUKKyAgICBpZiAoaW5zKGQsICJTRUVLX0hPTEUiLCAobG9uZylTRUVLX0hPTEUpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTRUVLX0RBVEEKKyAgICBpZiAoaW5zKGQsICJTRUVLX0RBVEEiLCAobG9uZylTRUVLX0RBVEEpKSByZXR1cm4gLTE7CisjZW5kaWYKIAogLyogTVMgV2luZG93cyAqLwogI2lmZGVmIE9fTk9JTkhFUklUCkBAIC04Mjg2LDYgKzExMzk4LDEwIEBACiAgICAgLyogRG8gbm90IGZvbGxvdyBsaW5rcy4gICAgICAqLwogICAgIGlmIChpbnMoZCwgIk9fTk9GT0xMT1ciLCAobG9uZylPX05PRk9MTE9XKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZkZWYgT19OT0xJTktTCisgICAgLyogRmFpbHMgaWYgbGluayBjb3VudCBvZiB0aGUgbmFtZWQgZmlsZSBpcyBncmVhdGVyIHRoYW4gMSAqLworICAgIGlmIChpbnMoZCwgIk9fTk9MSU5LUyIsIChsb25nKU9fTk9MSU5LUykpIHJldHVybiAtMTsKKyNlbmRpZgogI2lmZGVmIE9fTk9BVElNRQogICAgIC8qIERvIG5vdCB1cGRhdGUgdGhlIGFjY2VzcyB0aW1lLiAqLwogICAgIGlmIChpbnMoZCwgIk9fTk9BVElNRSIsIChsb25nKU9fTk9BVElNRSkpIHJldHVybiAtMTsKQEAgLTgzNTIsNiArMTE0NjgsNzkgQEAKICAgICBpZiAoaW5zKGQsICJTVF9OT1NVSUQiLCAobG9uZylTVF9OT1NVSUQpKSByZXR1cm4gLTE7CiAjZW5kaWYgLyogU1RfTk9TVUlEICovCiAKKyAgICAvKiBGcmVlQlNEIHNlbmRmaWxlKCkgY29uc3RhbnRzICovCisjaWZkZWYgU0ZfTk9ESVNLSU8KKyAgICBpZiAoaW5zKGQsICJTRl9OT0RJU0tJTyIsIChsb25nKVNGX05PRElTS0lPKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0ZfTU5PV0FJVAorICAgIGlmIChpbnMoZCwgIlNGX01OT1dBSVQiLCAobG9uZylTRl9NTk9XQUlUKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0ZfU1lOQworICAgIGlmIChpbnMoZCwgIlNGX1NZTkMiLCAobG9uZylTRl9TWU5DKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyAgICAvKiBjb25zdGFudHMgZm9yIHBvc2l4X2ZhZHZpc2UgKi8KKyNpZmRlZiBQT1NJWF9GQURWX05PUk1BTAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfTk9STUFMIiwgKGxvbmcpUE9TSVhfRkFEVl9OT1JNQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX1NFUVVFTlRJQUwKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX1NFUVVFTlRJQUwiLCAobG9uZylQT1NJWF9GQURWX1NFUVVFTlRJQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX1JBTkRPTQorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfUkFORE9NIiwgKGxvbmcpUE9TSVhfRkFEVl9SQU5ET00pKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX05PUkVVU0UKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX05PUkVVU0UiLCAobG9uZylQT1NJWF9GQURWX05PUkVVU0UpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX1dJTExORUVECisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9XSUxMTkVFRCIsIChsb25nKVBPU0lYX0ZBRFZfV0lMTE5FRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX0RPTlRORUVECisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9ET05UTkVFRCIsIChsb25nKVBPU0lYX0ZBRFZfRE9OVE5FRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKworICAgIC8qIGNvbnN0YW50cyBmb3Igd2FpdGlkICovCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoSEFWRV9XQUlUSUQpCisgICAgaWYgKGlucyhkLCAiUF9QSUQiLCAobG9uZylQX1BJRCkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJQX1BHSUQiLCAobG9uZylQX1BHSUQpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiUF9BTEwiLCAobG9uZylQX0FMTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFdFWElURUQKKyAgICBpZiAoaW5zKGQsICJXRVhJVEVEIiwgKGxvbmcpV0VYSVRFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFdOT1dBSVQKKyAgICBpZiAoaW5zKGQsICJXTk9XQUlUIiwgKGxvbmcpV05PV0FJVCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFdTVE9QUEVECisgICAgaWYgKGlucyhkLCAiV1NUT1BQRUQiLCAobG9uZylXU1RPUFBFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9FWElURUQKKyAgICBpZiAoaW5zKGQsICJDTERfRVhJVEVEIiwgKGxvbmcpQ0xEX0VYSVRFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9EVU1QRUQKKyAgICBpZiAoaW5zKGQsICJDTERfRFVNUEVEIiwgKGxvbmcpQ0xEX0RVTVBFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9UUkFQUEVECisgICAgaWYgKGlucyhkLCAiQ0xEX1RSQVBQRUQiLCAobG9uZylDTERfVFJBUFBFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9DT05USU5VRUQKKyAgICBpZiAoaW5zKGQsICJDTERfQ09OVElOVUVEIiwgKGxvbmcpQ0xEX0NPTlRJTlVFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorCisgICAgLyogY29uc3RhbnRzIGZvciBsb2NrZiAqLworI2lmZGVmIEZfTE9DSworICAgIGlmIChpbnMoZCwgIkZfTE9DSyIsIChsb25nKUZfTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIEZfVExPQ0sKKyAgICBpZiAoaW5zKGQsICJGX1RMT0NLIiwgKGxvbmcpRl9UTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIEZfVUxPQ0sKKyAgICBpZiAoaW5zKGQsICJGX1VMT0NLIiwgKGxvbmcpRl9VTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIEZfVEVTVAorICAgIGlmIChpbnMoZCwgIkZfVEVTVCIsIChsb25nKUZfVEVTVCkpIHJldHVybiAtMTsKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TUEFXTlYKICNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKQogICAgIGlmIChpbnMoZCwgIlBfV0FJVCIsIChsb25nKVBfV0FJVCkpIHJldHVybiAtMTsKQEAgLTgzODMsNiArMTE1NzIsNjQgQEAKICNlbmRpZgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NDSEVEX0gKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9PVEhFUiIsIChsb25nKVNDSEVEX09USEVSKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlNDSEVEX0ZJRk8iLCAobG9uZylTQ0hFRF9GSUZPKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlNDSEVEX1JSIiwgKGxvbmcpU0NIRURfUlIpKSByZXR1cm4gLTE7CisjaWZkZWYgU0NIRURfU1BPUkFESUMKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9TUE9SQURJQyIsIChsb25nKVNDSEVEX1NQT1JBRElDKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9CQVRDSAorICAgIGlmIChpbnMoZCwgIlNDSEVEX0JBVENIIiwgKGxvbmcpU0NIRURfQkFUQ0gpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9JRExFCisgICAgaWYgKGlucyhkLCAiU0NIRURfSURMRSIsIChsb25nKVNDSEVEX0lETEUpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9SRVNFVF9PTl9GT1JLCisgICAgaWYgKGlucyhkLCAiU0NIRURfUkVTRVRfT05fRk9SSyIsIChsb25nKVNDSEVEX1JFU0VUX09OX0ZPUkspKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9TWVMKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9TWVMiLCAobG9uZylTQ0hFRF9TWVMpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9JQQorICAgIGlmIChpbnMoZCwgIlNDSEVEX0lBIiwgKGxvbmcpU0NIRURfSUEpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9GU1MKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9GU1MiLCAobG9uZylTQ0hFRF9GU1MpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9GWAorICAgIGlmIChpbnMoZCwgIlNDSEVEX0ZYIiwgKGxvbmcpU0NIRURfRlNTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIFVTRV9YQVRUUlMKKyAgICBpZiAoaW5zKGQsICJYQVRUUl9DUkVBVEUiLCAobG9uZylYQVRUUl9DUkVBVEUpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiWEFUVFJfUkVQTEFDRSIsIChsb25nKVhBVFRSX1JFUExBQ0UpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiWEFUVFJfU0laRV9NQVgiLCAobG9uZylYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKKyNlbmRpZgorCisjaWZkZWYgUlRMRF9MQVpZCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTEFaWSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTk9XCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTk9XKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9HTE9CQUwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9HTE9CQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX0xPQ0FMCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTE9DQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX05PREVMRVRFCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTk9ERUxFVEUpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX05PTE9BRAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX05PTE9BRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfREVFUEJJTkQKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9ERUVQQklORCkpIHJldHVybiAtMTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChQWU9TX09TMikKICAgICBpZiAoaW5zZXJ0dmFsdWVzKGQpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTg0MTYsMTAgKzExNjYzLDEzOCBAQAogfTsKIAogCitzdGF0aWMgY2hhciAqaGF2ZV9mdW5jdGlvbnNbXSA9IHsKKworI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgIkhBVkVfRkFDQ0VTU0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICAiSEFWRV9GQ0hESVIiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgICJIQVZFX0ZDSE1PRCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNITU9EQVQKKyAgICAiSEFWRV9GQ0hNT0RBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgIkhBVkVfRkNIT1dOIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRVhFQ1ZFCisgICAgIkhBVkVfRkVYRUNWRSIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgIkhBVkVfRkRPUEVORElSIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GUEFUSENPTkYKKyAgICAiSEFWRV9GUEFUSENPTkYiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZTVEFUQVQKKyAgICAiSEFWRV9GU1RBVEFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgICJIQVZFX0ZTVEFUVkZTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKyAgICAiSEFWRV9GVFJVTkNBVEUiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZVVElNRU5TCisgICAgIkhBVkVfRlVUSU1FTlMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZVVElNRVMKKyAgICAiSEFWRV9GVVRJTUVTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVVRJTUVTQVQKKyAgICAiSEFWRV9GVVRJTUVTQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJTktBVAorICAgICJIQVZFX0xJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTENIRkxBR1MKKyAgICAiSEFWRV9MQ0hGTEFHUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTENITU9ECisgICAgIkhBVkVfTENITU9EIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MQ0hPV04KKyAgICAiSEFWRV9MQ0hPV04iLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xTVEFUCisgICAgIkhBVkVfTFNUQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xVVElNRVMKKyAgICAiSEFWRV9MVVRJTUVTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0RJUkFUCisgICAgIkhBVkVfTUtESVJBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAiSEFWRV9NS0ZJRk9BVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgICJIQVZFX01LTk9EQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgICJIQVZFX09QRU5BVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfUkVBRExJTktBVAorICAgICJIQVZFX1JFQURMSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1JFTkFNRUFUCisgICAgIkhBVkVfUkVOQU1FQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZTUxJTktBVAorICAgICJIQVZFX1NZTUxJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICAiSEFWRV9VTkxJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfVVRJTUVOU0FUCisgICAgIkhBVkVfVVRJTUVOU0FUIiwKKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgICJNU19XSU5ET1dTIiwKKyNlbmRpZgorCisgICAgTlVMTAorfTsKKworCiBQeU1PRElOSVRfRlVOQwogSU5JVEZVTkModm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSwgKnY7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgY2hhciAqKnRyYWNlOwogCiAjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICB3aW4zMl9jYW5fc3ltbGluayA9IGVuYWJsZV9zeW1saW5rKCk7CkBAIC04NDUxLDYgKzExODI2LDExIEBACiAjZW5kaWYKIAogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCisgICAgICAgIHdhaXRpZF9yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLndhaXRpZF9yZXN1bHQiOworICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZXYWl0aWRSZXN1bHRUeXBlLCAmd2FpdGlkX3Jlc3VsdF9kZXNjKTsKKyNlbmRpZgorCiAgICAgICAgIHN0YXRfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zdGF0X3Jlc3VsdCI7CiAgICAgICAgIHN0YXRfcmVzdWx0X2Rlc2MuZmllbGRzWzddLm5hbWUgPSBQeVN0cnVjdFNlcXVlbmNlX1VubmFtZWRGaWVsZDsKICAgICAgICAgc3RhdF9yZXN1bHRfZGVzYy5maWVsZHNbOF0ubmFtZSA9IFB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkOwpAQCAtODQ3MCwxMyArMTE4NTAsMzggQEAKICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IDYwOyAvKiBtYWdpYyBmYWxsYmFjayB2YWx1ZTsgbWF5IGJlIGJvZ3VzICovCiAjICBlbmRpZgogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpCisgICAgICAgIHNjaGVkX3BhcmFtX2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zY2hlZF9wYXJhbSI7CisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlNjaGVkUGFyYW1UeXBlLCAmc2NoZWRfcGFyYW1fZGVzYyk7CisgICAgICAgIFNjaGVkUGFyYW1UeXBlLnRwX25ldyA9IHNjaGVkX3BhcmFtX25ldzsKKyNlbmRpZgorCisgICAgICAgIC8qIGluaXRpYWxpemUgVGVybWluYWxTaXplX2luZm8gKi8KKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVGVybWluYWxTaXplVHlwZSwgJlRlcm1pbmFsU2l6ZV9kZXNjKTsKICAgICB9CisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmV2FpdGlkUmVzdWx0VHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ3YWl0aWRfcmVzdWx0IiwgKFB5T2JqZWN0KikgJldhaXRpZFJlc3VsdFR5cGUpOworI2VuZGlmCiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZTdGF0UmVzdWx0VHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdGF0X3Jlc3VsdCIsIChQeU9iamVjdCopICZTdGF0UmVzdWx0VHlwZSk7CiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZTdGF0VkZTUmVzdWx0VHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdGF0dmZzX3Jlc3VsdCIsCiAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopICZTdGF0VkZTUmVzdWx0VHlwZSk7Ci0gICAgaW5pdGlhbGl6ZWQgPSAxOworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorICAgIFB5X0lOQ1JFRigmU2NoZWRQYXJhbVR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic2NoZWRfcGFyYW0iLCAoUHlPYmplY3QgKikmU2NoZWRQYXJhbVR5cGUpOworI2VuZGlmCisKKyAgICB0aW1lc19yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLnRpbWVzX3Jlc3VsdCI7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVGltZXNSZXN1bHRUeXBlLCAmdGltZXNfcmVzdWx0X2Rlc2MpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGltZXNfcmVzdWx0IiwgKFB5T2JqZWN0ICopJlRpbWVzUmVzdWx0VHlwZSk7CisKKyAgICB1bmFtZV9yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLnVuYW1lX3Jlc3VsdCI7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVW5hbWVSZXN1bHRUeXBlLCAmdW5hbWVfcmVzdWx0X2Rlc2MpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidW5hbWVfcmVzdWx0IiwgKFB5T2JqZWN0ICopJlVuYW1lUmVzdWx0VHlwZSk7CiAKICNpZmRlZiBfX0FQUExFX18KICAgICAvKgpAQCAtODQ4Niw3ICsxMTg5MSw3IEBACiAgICAgICogY3VycmVudGx5IGFjdGl2ZSBwbGF0Zm9ybS4KICAgICAgKgogICAgICAqIFRoaXMgYmxvY2sgYWxsb3cgb25lIHRvIHVzZSBhIHB5dGhvbiBiaW5hcnkgdGhhdCB3YXMgYnVpbGQgb24KLSAgICAgKiBPU1ggMTAuNCBvbiBPU1ggMTAuMywgd2l0aG91dCBsb29zaW5nIGFjY2VzcyB0byBuZXcgQVBJcyBvbgorICAgICAqIE9TWCAxMC40IG9uIE9TWCAxMC4zLCB3aXRob3V0IGxvc2luZyBhY2Nlc3MgdG8gbmV3IEFQSXMgb24KICAgICAgKiBPU1ggMTAuNC4KICAgICAgKi8KICNpZmRlZiBIQVZFX0ZTVEFUVkZTCkBAIC04NTE1LDYgKzExOTIwLDQzIEBACiAKIAogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLworCisgICAgUHlfSU5DUkVGKCZUZXJtaW5hbFNpemVUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRlcm1pbmFsX3NpemUiLCAoUHlPYmplY3QqKSAmVGVybWluYWxTaXplVHlwZSk7CisKKyAgICBiaWxsaW9uID0gUHlMb25nX0Zyb21Mb25nKDEwMDAwMDAwMDApOworICAgIGlmICghYmlsbGlvbikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBzdXBwcmVzcyAiZnVuY3Rpb24gbm90IHVzZWQiIHdhcm5pbmdzICovCisgICAgeworICAgIGludCBpZ25vcmVkOworICAgIGZkX3NwZWNpZmllZCgiIiwgLTEpOworICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoIiIsIDEpOworICAgIGRpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNobW9kIiwgREVGQVVMVF9ESVJfRkQsIDEpOworICAgIGRpcl9mZF9jb252ZXJ0ZXIoUHlfTm9uZSwgJmlnbm9yZWQpOworICAgIGRpcl9mZF91bmF2YWlsYWJsZShQeV9Ob25lLCAmaWdub3JlZCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBwcm92aWRlIGxpc3Qgb2YgbG9jYWxseSBhdmFpbGFibGUgZnVuY3Rpb25zCisgICAgICogc28gb3MucHkgY2FuIHBvcHVsYXRlIHN1cHBvcnRfKiBsaXN0cworICAgICAqLworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yICh0cmFjZSA9IGhhdmVfZnVuY3Rpb25zOyAqdHJhY2U7IHRyYWNlKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkoKnRyYWNlLCBzdHJsZW4oKnRyYWNlKSwgTlVMTCk7CisgICAgICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgfQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2hhdmVfZnVuY3Rpb25zIiwgbGlzdCk7CisKKyAgICBpbml0aWFsaXplZCA9IDE7CisKICAgICByZXR1cm4gbTsKIAogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCA0Yjk2ODdhLi4zZjU5ZjBmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtMTAwLDE2ICsxMDAsMTcgQEAKIHNldF9lcnJvcih4bWxwYXJzZW9iamVjdCAqc2VsZiwgZW51bSBYTUxfRXJyb3IgY29kZSkKIHsKICAgICBQeU9iamVjdCAqZXJyOwotICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICBYTUxfUGFyc2VyIHBhcnNlciA9IHNlbGYtPml0c2VsZjsKICAgICBpbnQgbGluZW5vID0gWE1MX0dldEVycm9yTGluZU51bWJlcihwYXJzZXIpOwogICAgIGludCBjb2x1bW4gPSBYTUxfR2V0RXJyb3JDb2x1bW5OdW1iZXIocGFyc2VyKTsKIAotICAgIC8qIFRoZXJlIGlzIG5vIHJpc2sgb2Ygb3ZlcmZsb3dpbmcgdGhpcyBidWZmZXIsIHNpbmNlCi0gICAgICAgZXZlbiBmb3IgNjQtYml0IGludGVnZXJzLCB0aGVyZSBpcyBzdWZmaWNpZW50IHNwYWNlLiAqLwotICAgIHNwcmludGYoYnVmZmVyLCAiJS4yMDBzOiBsaW5lICVpLCBjb2x1bW4gJWkiLAotICAgICAgICAgICAgWE1MX0Vycm9yU3RyaW5nKGNvZGUpLCBsaW5lbm8sIGNvbHVtbik7Ci0gICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEVycm9yT2JqZWN0LCAicyIsIGJ1ZmZlcik7CisgICAgYnVmZmVyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVpLCBjb2x1bW4gJWkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FcnJvclN0cmluZyhjb2RlKSwgbGluZW5vLCBjb2x1bW4pOworICAgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEVycm9yT2JqZWN0LCAiTyIsIGJ1ZmZlcik7CisgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgaWYgKCAgZXJyICE9IE5VTEwKICAgICAgICAgICAmJiBzZXRfZXJyb3JfYXR0cihlcnIsICJjb2RlIiwgY29kZSkKICAgICAgICAgICAmJiBzZXRfZXJyb3JfYXR0cihlcnIsICJvZmZzZXQiLCBjb2x1bW4pCkBAIC04NDIsOSArODQzLDkgQEAKIHsKICAgICBpbnQgcnYgPSAxOwogICAgIFB5T2JqZWN0ICpyZWFkbWV0aG9kID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAotCi0gICAgcmVhZG1ldGhvZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZiwgInJlYWQiKTsKKyAgICByZWFkbWV0aG9kID0gX1B5T2JqZWN0X0dldEF0dHJJZChmLCAmUHlJZF9yZWFkKTsKICAgICBpZiAocmVhZG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBoYXZlICdyZWFkJyBhdHRyaWJ1dGUiKTsKQEAgLTEwMzIsMTYgKzEwMzMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB4bWxwYXJzZV9Vc2VGb3JlaWduRFREKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqZmxhZ29iaiA9IE5VTEw7CiAgICAgaW50IGZsYWcgPSAxOwogICAgIGVudW0gWE1MX0Vycm9yIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86VXNlRm9yZWlnbkRURCIsICZmbGFnb2JqKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOlVzZUZvcmVpZ25EVEQiLCAmZmxhZykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChmbGFnb2JqICE9IE5VTEwpIHsKLSAgICAgICAgZmxhZyA9IFB5T2JqZWN0X0lzVHJ1ZShmbGFnb2JqKTsKLSAgICAgICAgaWYgKGZsYWcgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIHJjID0gWE1MX1VzZUZvcmVpZ25EVEQoc2VsZi0+aXRzZWxmLCBmbGFnID8gWE1MX1RSVUUgOiBYTUxfRkFMU0UpOwogICAgIGlmIChyYyAhPSBYTUxfRVJST1JfTk9ORSkgewogICAgICAgICByZXR1cm4gc2V0X2Vycm9yKHNlbGYsIHJjKTsKQEAgLTExMDQsMTcgKzEwOTksMjIgQEAKICAgICBQeVVuaWNvZGVPYmplY3QgKl91X3N0cmluZyA9IE5VTEw7CiAgICAgaW50IHJlc3VsdCA9IDA7CiAgICAgaW50IGk7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIC8qIFllcywgc3VwcG9ydHMgb25seSA4Yml0IGVuY29kaW5ncyAqLwogICAgIF91X3N0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKikKICAgICAgICAgUHlVbmljb2RlX0RlY29kZSh0ZW1wbGF0ZV9idWZmZXIsIDI1NiwgbmFtZSwgInJlcGxhY2UiKTsKIAotICAgIGlmIChfdV9zdHJpbmcgPT0gTlVMTCkKKyAgICBpZiAoX3Vfc3RyaW5nID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKF91X3N0cmluZykgPT0gLTEpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoX3Vfc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoX3Vfc3RyaW5nKTsKKwogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAvKiBTdHVwaWQgdG8gYWNjZXNzIGRpcmVjdGx5LCBidXQgZmFzdCAqLwotICAgICAgICBQeV9VTklDT0RFIGMgPSBfdV9zdHJpbmctPnN0cltpXTsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGlmIChjID09IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKQogICAgICAgICAgICAgaW5mby0+bWFwW2ldID0gLTE7CiAgICAgICAgIGVsc2UKQEAgLTEyMzgsMTEgKzEyMzgsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB4bWxwYXJzZV9nZXRhdHRybyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmopCiB7Ci0gICAgUHlfVU5JQ09ERSAqbmFtZTsKKyAgICBQeV9VQ1M0IGZpcnN0X2NoYXI7CiAgICAgaW50IGhhbmRsZXJudW0gPSAtMTsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQogICAgICAgICBnb3RvIGdlbmVyaWM7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBoYW5kbGVybnVtID0gaGFuZGxlcm5hbWUyaW50KG5hbWVvYmopOwogCkBAIC0xMjU0LDggKzEyNTYsOCBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIG5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lb2JqKTsKLSAgICBpZiAobmFtZVswXSA9PSAnRScpIHsKKyAgICBmaXJzdF9jaGFyID0gUHlVbmljb2RlX1JFQURfQ0hBUihuYW1lb2JqLCAwKTsKKyAgICBpZiAoZmlyc3RfY2hhciA9PSAnRScpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWVvYmosICJFcnJvckNvZGUiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0RXJyb3JDb2RlKHNlbGYtPml0c2VsZikpOwpAQCAtMTI2OSw3ICsxMjcxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0dldEVycm9yQnl0ZUluZGV4KHNlbGYtPml0c2VsZikpOwogICAgIH0KLSAgICBpZiAobmFtZVswXSA9PSAnQycpIHsKKyAgICBpZiAoZmlyc3RfY2hhciA9PSAnQycpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWVvYmosICJDdXJyZW50TGluZU51bWJlciIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRDdXJyZW50TGluZU51bWJlcihzZWxmLT5pdHNlbGYpKTsKQEAgLTEyODAsNyArMTI4Miw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRDdXJyZW50Qnl0ZUluZGV4KHNlbGYtPml0c2VsZikpOwogICAgIH0KLSAgICBpZiAobmFtZVswXSA9PSAnYicpIHsKKyAgICBpZiAoZmlyc3RfY2hhciA9PSAnYicpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWVvYmosICJidWZmZXJfc2l6ZSIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBzZWxmLT5idWZmZXJfc2l6ZSk7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiYnVmZmVyX3RleHQiKSA9PSAwKQpAQCAtMTY3NCw3ICsxNjc2LDYgQEAKICAgICBQeU9iamVjdCAqZXJyb3JzX21vZHVsZTsKICAgICBQeU9iamVjdCAqbW9kZWxtb2RfbmFtZTsKICAgICBQeU9iamVjdCAqbW9kZWxfbW9kdWxlOwotICAgIFB5T2JqZWN0ICp2ZXJzaW9uOwogICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKICAgICBQeU9iamVjdCAqdG1wbnVtLCAqdG1wc3RyOwogICAgIFB5T2JqZWN0ICpjb2Rlc19kaWN0OwpAQCAtMTcxMSwxMCArMTcxMiw2IEBACiAgICAgUHlfSU5DUkVGKCZYbWxwYXJzZXR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWE1MUGFyc2VyVHlwZSIsIChQeU9iamVjdCAqKSAmWG1scGFyc2V0eXBlKTsKIAotICAgIHZlcnNpb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQWV9WRVJTSU9OKTsKLSAgICBpZiAoIXZlcnNpb24pCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX192ZXJzaW9uX18iLCB2ZXJzaW9uKTsKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiRVhQQVRfVkVSU0lPTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgWE1MX0V4cGF0VmVyc2lvbigpKTsKICAgICB7CkBAIC0xOTA3LDYgKzE5MDQsNyBAQAogICAgIGNhcGkuU2V0UHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IFhNTF9TZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyOwogICAgIGNhcGkuU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlciA9IFhNTF9TZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyOwogICAgIGNhcGkuU2V0VXNlckRhdGEgPSBYTUxfU2V0VXNlckRhdGE7CisgICAgY2FwaS5TZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlciA9IFhNTF9TZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlcjsKIAogICAgIC8qIGV4cG9ydCB1c2luZyBjYXBzdWxlICovCiAgICAgY2FwaV9vYmplY3QgPSBQeUNhcHN1bGVfTmV3KCZjYXBpLCBQeUV4cGF0X0NBUFNVTEVfTkFNRSwgTlVMTCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B5dGhvbi5jIGIvTW9kdWxlcy9weXRob24uYwppbmRleCBjZjkzODNmLi5jNzBiZjM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5dGhvbi5jCisrKyBiL01vZHVsZXMvcHl0aG9uLmMKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAgICAgYXJndl9jb3B5W2ldID0gX1B5X2NoYXIyd2NoYXIoYXJndltpXSwgTlVMTCk7CiAjZW5kaWYKICAgICAgICAgaWYgKCFhcmd2X2NvcHlbaV0pIHsKKyAgICAgICAgICAgIGZyZWUob2xkbG9jKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAjJWlcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDRkNTRkYWQuLmE3MTA2NTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTIzNSwxMCArMjM1LDkgQEAKICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICJzZXRfJS41MHMoZnVuYyk6IGFyZ3VtZW50IG5vdCBjYWxsYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZnVuY25hbWUpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBidWYpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInNldF8lLjUwcyhmdW5jKTogYXJndW1lbnQgbm90IGNhbGxhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtODkyLDcgKzg5MSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIF9fQVBQTEVfXwotICAgIC8qIHRoZSBsaWJlZGl0IHJlYWRsaW5lIGVtdWxhdGlvbiByZXNldHMga2V5IGJpbmRpbmdzIGV0YyAKKyAgICAvKiB0aGUgbGliZWRpdCByZWFkbGluZSBlbXVsYXRpb24gcmVzZXRzIGtleSBiaW5kaW5ncyBldGMKICAgICAgKiB3aGVuIGNhbGxpbmcgcmxfaW5pdGlhbGl6ZS4gIFNvIGNhbGwgaXQgdXBmcm9udAogICAgICAqLwogICAgIGlmICh1c2luZ19saWJlZGl0X2VtdWxhdGlvbikKQEAgLTkzMiwxMSArOTMxLDExIEBACiAgICAgICovCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgaWYgKHVzaW5nX2xpYmVkaXRfZW11bGF0aW9uKQotCXJsX3JlYWRfaW5pdF9maWxlKE5VTEwpOworICAgICAgICBybF9yZWFkX2luaXRfZmlsZShOVUxMKTsKICAgICBlbHNlCiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAgICAgICAgIHJsX2luaXRpYWxpemUoKTsKLSAgICAKKwogICAgIFJFU1RPUkVfTE9DQUxFKHNhdmVkX2xvY2FsZSkKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZXNvdXJjZS5jIGIvTW9kdWxlcy9yZXNvdXJjZS5jCmluZGV4IDE4NzVlNDguLjFhZWQ0OTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVzb3VyY2UuYworKysgYi9Nb2R1bGVzL3Jlc291cmNlLmMKQEAgLTE4LDggKzE4LDYgQEAKIAogI2RlZmluZSBkb3VibGV0aW1lKFRWKSAoKGRvdWJsZSkoVFYpLnR2X3NlYyArIChUVikudHZfdXNlYyAqIDAuMDAwMDAxKQogCi1zdGF0aWMgUHlPYmplY3QgKlJlc291cmNlRXJyb3I7Ci0KIFB5RG9jX1NUUlZBUihzdHJ1Y3RfcnVzYWdlX19kb2NfXywKICJzdHJ1Y3RfcnVzYWdlOiBSZXN1bHQgZnJvbSBnZXRydXNhZ2UuXG5cbiIKICJUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2ZcbiIKQEAgLTczLDcgKzcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB3aG8gcGFyYW1ldGVyIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUmVzb3VyY2VFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMjUsNyArMTIzLDcgQEAKICAgICB9CiAKICAgICBpZiAoZ2V0cmxpbWl0KHJlc291cmNlLCAmcmwpID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhSZXNvdXJjZUVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE4Myw3ICsxODEsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGxvd2VkIHRvIHJhaXNlIG1heGltdW0gbGltaXQiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFJlc291cmNlRXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMjQ2LDEyICsyNDQsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCi0gICAgaWYgKFJlc291cmNlRXJyb3IgPT0gTlVMTCkgewotICAgICAgICBSZXNvdXJjZUVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJyZXNvdXJjZS5lcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihSZXNvdXJjZUVycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUmVzb3VyY2VFcnJvcik7CisgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBQeUV4Y19PU0Vycm9yKTsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RSVXNhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfcnVzYWdlX2Rlc2MpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggOThiMzEwOC4uN2NlYzQ5YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC03LDYgKzcsMTQgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxzdHJ1Y3RtZW1iZXIuaD4KIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPHN5cy9kZXZwb2xsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2VuZGlmCisKICNpZmRlZiBfX0FQUExFX18KICAgICAvKiBQZXJmb3JtIHJ1bnRpbWUgdGVzdGluZyBmb3IgYSBicm9rZW4gcG9sbCBvbiBPU1ggdG8gbWFrZSBpdCBlYXNpZXIKICAgICAgKiB0byB1c2UgdGhlIHNhbWUgYmluYXJ5IG9uIG11bHRpcGxlIHJlbGVhc2VzIG9mIHRoZSBPUy4KQEAgLTU0LDggKzYyLDYgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotc3RhdGljIFB5T2JqZWN0ICpTZWxlY3RFcnJvcjsKLQogLyogbGlzdCBvZiBQeXRob24gb2JqZWN0cyBhbmQgdGhlaXIgZmlsZSBkZXNjcmlwdG9yICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3QgKm9iajsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvd25lZCByZWZlcmVuY2UgKi8KQEAgLTIwMCw5ICsyMDYsNyBAQAogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp0b3V0ID0gUHlfTm9uZTsKICAgICBmZF9zZXQgaWZkc2V0LCBvZmRzZXQsIGVmZHNldDsKLSAgICBkb3VibGUgdGltZW91dDsKICAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKLSAgICBsb25nIHNlY29uZHM7CiAgICAgaW50IGltYXgsIG9tYXgsIGVtYXgsIG1heDsKICAgICBpbnQgbjsKIApAQCAtMjE5LDE4ICsyMjMsMzEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZSh0b3V0KTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHRpbWVfdCBzZWM7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbCh0b3V0LCAmc2VjLCAmdHYudHZfdXNlYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKHRpbWVvdXQgPiAoZG91YmxlKUxPTkdfTUFYKSB7CisgICAgICAgIGFzc2VydChzaXplb2YodHYudHZfc2VjKSA9PSBzaXplb2YobG9uZykpOworI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORworICAgICAgICBpZiAoc2VjID4gTE9OR19NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHBlcmlvZCB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgc2Vjb25kcyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHRpbWVvdXQgPSB0aW1lb3V0IC0gKGRvdWJsZSlzZWNvbmRzOwotICAgICAgICB0di50dl9zZWMgPSBzZWNvbmRzOwotICAgICAgICB0di50dl91c2VjID0gKGxvbmcpKHRpbWVvdXQgKiAxRTYpOworI2VuZGlmCisgICAgICAgIHR2LnR2X3NlYyA9IChsb25nKXNlYzsKKyNlbHNlCisgICAgICAgIC8qIDY0LWJpdCBPUyBYIGhhcyBzdHJ1Y3QgdGltZXZhbC50dl91c2VjIGFzIGFuIGludCAoYW5kIHRodXMgc3RpbGwgNAorICAgICAgICAgICBieXRlcyBhcyByZXF1aXJlZCksIGJ1dCBubyBsb25nZXIgZGVmaW5lZCBieSBhIGxvbmcuICovCisgICAgICAgIGxvbmcgdHZfdXNlYzsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRvdXQsICZ0di50dl9zZWMsICZ0dl91c2VjKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB0di50dl91c2VjID0gdHZfdXNlYzsKKyNlbmRpZgorICAgICAgICBpZiAodHYudHZfc2VjIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQogCkBAIC0yNjksMTEgKzI4NiwxMSBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChuID09IFNPQ0tFVF9FUlJPUikgewotICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihTZWxlY3RFcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgfQogI2Vsc2UKICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFNlbGVjdEVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIH0KICNlbmRpZgogICAgIGVsc2UgewpAQCAtNDIwLDcgKzQzNyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfR2V0SXRlbShzZWxmLT5kaWN0LCBrZXkpID09IE5VTEwpIHsKICAgICAgICAgZXJybm8gPSBFTk9FTlQ7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTIwLDcgKzUzNyw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFNlbGVjdEVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTY0Niw2ICs2NjMsMzM5IEBACiAgICAgcG9sbF9tZXRob2RzLCAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCiB9OwogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBmZF9kZXZwb2xsOworICAgIGludCBtYXhfbl9mZHM7CisgICAgaW50IG5fZmRzOworICAgIHN0cnVjdCBwb2xsZmQgKmZkczsKK30gZGV2cG9sbE9iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBkZXZwb2xsX1R5cGU7CisKK3N0YXRpYyBpbnQgZGV2cG9sbF9mbHVzaChkZXZwb2xsT2JqZWN0ICpzZWxmKQoreworICAgIGludCBzaXplLCBuOworCisgICAgaWYgKCFzZWxmLT5uX2ZkcykgcmV0dXJuIDA7CisKKyAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBwb2xsZmQpKnNlbGYtPm5fZmRzOworICAgIHNlbGYtPm5fZmRzID0gMDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gd3JpdGUoc2VsZi0+ZmRfZGV2cG9sbCwgc2VsZi0+ZmRzLCBzaXplKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKG4gPT0gLTEgKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobiA8IHNpemUpIHsKKyAgICAgICAgLyoKKyAgICAgICAgKiogRGF0YSB3cml0ZWQgdG8gL2Rldi9wb2xsIGlzIGEgYmluYXJ5IGRhdGEgc3RydWN0dXJlLiBJdCBpcyBub3QKKyAgICAgICAgKiogY2xlYXIgd2hhdCB0byBkbyBpZiBhIHBhcnRpYWwgd3JpdGUgb2NjdXJyZWQuIEZvciBub3csIHJhaXNlCisgICAgICAgICoqIGFuIGV4Y2VwdGlvbiBhbmQgc2VlIGlmIHdlIGFjdHVhbGx5IGZvdW5kIHRoaXMgcHJvYmxlbSBpbgorICAgICAgICAqKiB0aGUgd2lsZC4KKyAgICAgICAgKiogU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU2Mzk3LgorICAgICAgICAqLworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwgImZhaWxlZCB0byB3cml0ZSBhbGwgcG9sbGZkcy4gIgorICAgICAgICAgICAgICAgICJQbGVhc2UsIHJlcG9ydCBhdCBodHRwOi8vYnVncy5weXRob24ub3JnLy4gIgorICAgICAgICAgICAgICAgICJEYXRhIHRvIHJlcG9ydDogU2l6ZSB0cmllZDogJWQsIGFjdHVhbCBzaXplIHdyaXR0ZW46ICVkLiIsCisgICAgICAgICAgICAgICAgc2l6ZSwgbik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpbnRlcm5hbF9kZXZwb2xsX3JlZ2lzdGVyKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgcmVtb3ZlKQoreworICAgIFB5T2JqZWN0ICpvOworICAgIGludCBmZCwgZXZlbnRzID0gUE9MTElOIHwgUE9MTFBSSSB8IFBPTExPVVQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpyZWdpc3RlciIsICZvLCAmZXZlbnRzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3Iobyk7CisgICAgaWYgKGZkID09IC0xKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChyZW1vdmUpIHsKKyAgICAgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgICAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmV2ZW50cyA9IFBPTExSRU1PVkU7CisKKyAgICAgICAgaWYgKCsrc2VsZi0+bl9mZHMgPT0gc2VsZi0+bWF4X25fZmRzKSB7CisgICAgICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZmQgPSBmZDsKKyAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmV2ZW50cyA9IGV2ZW50czsKKworICAgIGlmICgrK3NlbGYtPm5fZmRzID09IHNlbGYtPm1heF9uX2ZkcykgeworICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZGV2cG9sbF9yZWdpc3Rlcl9kb2MsCisicmVnaXN0ZXIoZmQgWywgZXZlbnRtYXNrXSApIC0+IE5vbmVcblxuXAorUmVnaXN0ZXIgYSBmaWxlIGRlc2NyaXB0b3Igd2l0aCB0aGUgcG9sbGluZyBvYmplY3QuXG5cCitmZCAtLSBlaXRoZXIgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IHdpdGggYSBmaWxlbm8oKSBtZXRob2QgcmV0dXJuaW5nIGFuXG5cCisgICAgICBpbnQuXG5cCitldmVudHMgLS0gYW4gb3B0aW9uYWwgYml0bWFzayBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIGV2ZW50cyB0byBjaGVjayBmb3IiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfcmVnaXN0ZXIoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIGludGVybmFsX2RldnBvbGxfcmVnaXN0ZXIoc2VsZiwgYXJncywgMCk7Cit9CisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX21vZGlmeV9kb2MsCisibW9kaWZ5KGZkWywgZXZlbnRtYXNrXSkgLT4gTm9uZVxuXG5cCitNb2RpZnkgYSBwb3NzaWJsZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZmlsZSBkZXNjcmlwdG9yLlxuXAorZmQgLS0gZWl0aGVyIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCB3aXRoIGEgZmlsZW5vKCkgbWV0aG9kIHJldHVybmluZyBhblxuXAorICAgICAgaW50LlxuXAorZXZlbnRzIC0tIGFuIG9wdGlvbmFsIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgdG8gY2hlY2sgZm9yIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXZwb2xsX21vZGlmeShkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfZGV2cG9sbF9yZWdpc3RlcihzZWxmLCBhcmdzLCAxKTsKK30KKworCitQeURvY19TVFJWQVIoZGV2cG9sbF91bnJlZ2lzdGVyX2RvYywKKyJ1bnJlZ2lzdGVyKGZkKSAtPiBOb25lXG5cblwKK1JlbW92ZSBhIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0cmFja2VkIGJ5IHRoZSBwb2xsaW5nIG9iamVjdC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfdW5yZWdpc3RlcihkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbykKK3sKKyAgICBpbnQgZmQ7CisKKyAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoIG8gKTsKKyAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZXZlbnRzID0gUE9MTFJFTU9WRTsKKworICAgIGlmICgrK3NlbGYtPm5fZmRzID09IHNlbGYtPm1heF9uX2ZkcykgeworICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZGV2cG9sbF9wb2xsX2RvYywKKyJwb2xsKCBbdGltZW91dF0gKSAtPiBsaXN0IG9mIChmZCwgZXZlbnQpIDItdHVwbGVzXG5cblwKK1BvbGxzIHRoZSBzZXQgb2YgcmVnaXN0ZXJlZCBmaWxlIGRlc2NyaXB0b3JzLCByZXR1cm5pbmcgYSBsaXN0IGNvbnRhaW5pbmcgXG5cCithbnkgZGVzY3JpcHRvcnMgdGhhdCBoYXZlIGV2ZW50cyBvciBlcnJvcnMgdG8gcmVwb3J0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF9wb2xsKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHN0cnVjdCBkdnBvbGwgZHZwOworICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0b3V0ID0gTlVMTDsKKyAgICBpbnQgcG9sbF9yZXN1bHQsIGk7CisgICAgbG9uZyB0aW1lb3V0OworICAgIFB5T2JqZWN0ICp2YWx1ZSwgKm51bTEsICpudW0yOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9sbCIsIDAsIDEsICZ0b3V0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDaGVjayB2YWx1ZXMgZm9yIHRpbWVvdXQgKi8KKyAgICBpZiAodG91dCA9PSBOVUxMIHx8IHRvdXQgPT0gUHlfTm9uZSkKKyAgICAgICAgdGltZW91dCA9IC0xOworICAgIGVsc2UgaWYgKCFQeU51bWJlcl9DaGVjayh0b3V0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0b3V0ID0gUHlOdW1iZXJfTG9uZyh0b3V0KTsKKyAgICAgICAgaWYgKCF0b3V0KQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHRpbWVvdXQgPSBQeUxvbmdfQXNMb25nKHRvdXQpOworICAgICAgICBQeV9ERUNSRUYodG91dCk7CisgICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoKHRpbWVvdXQgPCAtMSkgfHwgKHRpbWVvdXQgPiBJTlRfTUFYKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBkdnAuZHBfZmRzID0gc2VsZi0+ZmRzOworICAgIGR2cC5kcF9uZmRzID0gc2VsZi0+bWF4X25fZmRzOworICAgIGR2cC5kcF90aW1lb3V0ID0gdGltZW91dDsKKworICAgIC8qIGNhbGwgZGV2cG9sbCgpICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHBvbGxfcmVzdWx0ID0gaW9jdGwoc2VsZi0+ZmRfZGV2cG9sbCwgRFBfUE9MTCwgJmR2cCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBidWlsZCB0aGUgcmVzdWx0IGxpc3QgKi8KKworICAgIHJlc3VsdF9saXN0ID0gUHlMaXN0X05ldyhwb2xsX3Jlc3VsdCk7CisgICAgaWYgKCFyZXN1bHRfbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwb2xsX3Jlc3VsdDsgaSsrKSB7CisgICAgICAgICAgICBudW0xID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5mZCk7CisgICAgICAgICAgICBudW0yID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5yZXZlbnRzKTsKKyAgICAgICAgICAgIGlmICgobnVtMSA9PSBOVUxMKSB8fCAobnVtMiA9PSBOVUxMKSkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihudW0yKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX1BhY2soMiwgbnVtMSwgbnVtMik7CisgICAgICAgICAgICBQeV9ERUNSRUYobnVtMSk7CisgICAgICAgICAgICBQeV9ERUNSRUYobnVtMik7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKChQeUxpc3RfU2V0SXRlbShyZXN1bHRfbGlzdCwgaSwgdmFsdWUpKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHRfbGlzdDsKKworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYocmVzdWx0X2xpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgZGV2cG9sbF9tZXRob2RzW10gPSB7CisgICAgeyJyZWdpc3RlciIsICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9yZWdpc3RlciwKKyAgICAgTUVUSF9WQVJBUkdTLCAgZGV2cG9sbF9yZWdpc3Rlcl9kb2N9LAorICAgIHsibW9kaWZ5IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfbW9kaWZ5LAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX21vZGlmeV9kb2N9LAorICAgIHsidW5yZWdpc3RlciIsICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfdW5yZWdpc3RlciwKKyAgICAgTUVUSF9PLCAgICAgICAgZGV2cG9sbF91bnJlZ2lzdGVyX2RvY30sCisgICAgeyJwb2xsIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9wb2xsLAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX3BvbGxfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIGRldnBvbGxPYmplY3QgKgorbmV3RGV2UG9sbE9iamVjdCh2b2lkKQoreworICAgIGRldnBvbGxPYmplY3QgKnNlbGY7CisgICAgaW50IGZkX2RldnBvbGwsIGxpbWl0X3Jlc3VsdDsKKyAgICBzdHJ1Y3QgcG9sbGZkICpmZHM7CisgICAgc3RydWN0IHJsaW1pdCBsaW1pdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAvKgorICAgICoqIElmIHdlIHRyeSB0byBwcm9jZXNzIG1vcmUgdGhhdCBnZXRybGltaXQoKQorICAgICoqIGZkcywgdGhlIGtlcm5lbCB3aWxsIGdpdmUgYW4gZXJyb3IsIHNvCisgICAgKiogd2Ugc2V0IHRoZSBsaW1pdCBoZXJlLiBJdCBpcyBhIGR5bmFtaWMKKyAgICAqKiB2YWx1ZSwgYmVjYXVzZSB3ZSBjYW4gY2hhbmdlIHJsaW1pdCgpIGFueXRpbWUuCisgICAgKi8KKyAgICBsaW1pdF9yZXN1bHQgPSBnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJmxpbWl0KTsKKyAgICBpZiAobGltaXRfcmVzdWx0ICE9IC0xKQorICAgICAgICBmZF9kZXZwb2xsID0gb3BlbigiL2Rldi9wb2xsIiwgT19SRFdSKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGxpbWl0X3Jlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoZmRfZGV2cG9sbCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgIi9kZXYvcG9sbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmZHMgPSBQeU1lbV9ORVcoc3RydWN0IHBvbGxmZCwgbGltaXQucmxpbV9jdXIpOworICAgIGlmIChmZHMgPT0gTlVMTCkgeworICAgICAgICBjbG9zZShmZF9kZXZwb2xsKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhkZXZwb2xsT2JqZWN0LCAmZGV2cG9sbF9UeXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGNsb3NlKGZkX2RldnBvbGwpOworICAgICAgICBQeU1lbV9ERUwoZmRzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmZkX2RldnBvbGwgPSBmZF9kZXZwb2xsOworICAgIHNlbGYtPm1heF9uX2ZkcyA9IGxpbWl0LnJsaW1fY3VyOworICAgIHNlbGYtPm5fZmRzID0gMDsKKyAgICBzZWxmLT5mZHMgPSBmZHM7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIHZvaWQKK2RldnBvbGxfZGVhbGxvYyhkZXZwb2xsT2JqZWN0ICpzZWxmKQoreworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBjbG9zZShzZWxmLT5mZF9kZXZwb2xsKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fREVMKHNlbGYtPmZkcyk7CisKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgZGV2cG9sbF9UeXBlID0geworICAgIC8qIFRoZSBvYl90eXBlIGZpZWxkIG11c3QgYmUgaW5pdGlhbGl6ZWQgaW4gdGhlIG1vZHVsZSBpbml0IGZ1bmN0aW9uCisgICAgICogdG8gYmUgcG9ydGFibGUgdG8gV2luZG93cyB3aXRob3V0IHVzaW5nIEMrKy4gKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAic2VsZWN0LmRldnBvbGwiLCAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoZGV2cG9sbE9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZGV2cG9sbF9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICBkZXZwb2xsX21ldGhvZHMsICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KK307CisjZW5kaWYgIC8qIEhBVkVfU1lTX0RFVlBPTExfSCAqLworCisKKwogUHlEb2NfU1RSVkFSKHBvbGxfZG9jLAogIlJldHVybnMgYSBwb2xsaW5nIG9iamVjdCwgd2hpY2ggc3VwcG9ydHMgcmVnaXN0ZXJpbmcgYW5kXG5cCiB1bnJlZ2lzdGVyaW5nIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCB0aGVuIHBvbGxpbmcgdGhlbSBmb3IgSS9PIGV2ZW50cy4iKTsKQEAgLTY1Niw2ICsxMDA2LDE5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld1BvbGxPYmplY3QoKTsKIH0KIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorUHlEb2NfU1RSVkFSKGRldnBvbGxfZG9jLAorIlJldHVybnMgYSBwb2xsaW5nIG9iamVjdCwgd2hpY2ggc3VwcG9ydHMgcmVnaXN0ZXJpbmcgYW5kXG5cCit1bnJlZ2lzdGVyaW5nIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCB0aGVuIHBvbGxpbmcgdGhlbSBmb3IgSS9PIGV2ZW50cy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NlbGVjdF9kZXZwb2xsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdEZXZQb2xsT2JqZWN0KCk7Cit9CisjZW5kaWYKKworCiAjaWZkZWYgX19BUFBMRV9fCiAvKgogICogT24gc29tZSBzeXN0ZW1zIHBvbGwoKSBzZXRzIGVycm5vIG9uIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4gV2UgdGVzdApAQCAtNzMxLDIwICsxMDk0LDEwIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdQeUVwb2xsX09iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBzaXplaGludCwgU09DS0VUIGZkKQorbmV3UHlFcG9sbF9PYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgc2l6ZWhpbnQsIGludCBmbGFncywgU09DS0VUIGZkKQogewogICAgIHB5RXBvbGxfT2JqZWN0ICpzZWxmOwogCi0gICAgaWYgKHNpemVoaW50ID09IC0xKSB7Ci0gICAgICAgIHNpemVoaW50ID0gRkRfU0VUU0laRS0xOwotICAgIH0KLSAgICBlbHNlIGlmIChzaXplaGludCA8IDEpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAic2l6ZWhpbnQgbXVzdCBiZSBncmVhdGVyIHplcm8sIGdvdCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICBzaXplaGludCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CiAgICAgc2VsZiA9IChweUVwb2xsX09iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQpAQCAtNzUyLDYgKzExMDUsMTEgQEAKIAogICAgIGlmIChmZCA9PSAtMSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9FUE9MTF9DUkVBVEUxCisgICAgICAgIGlmIChmbGFncykKKyAgICAgICAgICAgIHNlbGYtPmVwZmQgPSBlcG9sbF9jcmVhdGUxKGZsYWdzKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgIHNlbGYtPmVwZmQgPSBlcG9sbF9jcmVhdGUoc2l6ZWhpbnQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0KQEAgLTc2MCw3ICsxMTE4LDcgQEAKICAgICB9CiAgICAgaWYgKHNlbGYtPmVwZmQgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKQEAgLTc3MCwxNCArMTEyOCwxOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXBvbGxfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGludCBzaXplaGludCA9IC0xOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2l6ZWhpbnQiLCBOVUxMfTsKKyAgICBpbnQgZmxhZ3MgPSAwLCBzaXplaGludCA9IEZEX1NFVFNJWkUgLSAxOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2l6ZWhpbnQiLCAiZmxhZ3MiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aTplcG9sbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZWhpbnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aWk6ZXBvbGwiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemVoaW50LCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2l6ZWhpbnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2l6ZWhpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KHR5cGUsIHNpemVoaW50LCAtMSk7CisgICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KHR5cGUsIHNpemVoaW50LCBmbGFncywgLTEpOwogfQogCiAKQEAgLTc5Myw3ICsxMTU1LDcgQEAKIHsKICAgICBlcnJubyA9IHB5ZXBvbGxfaW50ZXJuYWxfY2xvc2Uoc2VsZik7CiAgICAgaWYgKGVycm5vIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtODM1LDcgKzExOTcsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpmcm9tZmQiLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBuZXdQeUVwb2xsX09iamVjdCgoUHlUeXBlT2JqZWN0KiljbHMsIC0xLCBmZCk7CisgICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KChQeVR5cGVPYmplY3QqKWNscywgRkRfU0VUU0laRSAtIDEsIDAsIGZkKTsKIH0KIAogUHlEb2NfU1RSVkFSKHB5ZXBvbGxfZnJvbWZkX2RvYywKQEAgLTg4Niw3ICsxMjQ4LDcgQEAKICAgICB9CiAKICAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtOTEwLDcgKzEyNzIsNyBAQAogUHlEb2NfU1RSVkFSKHB5ZXBvbGxfcmVnaXN0ZXJfZG9jLAogInJlZ2lzdGVyKGZkWywgZXZlbnRtYXNrXSkgLT4gTm9uZVxuXAogXG5cCi1SZWdpc3RlcnMgYSBuZXcgZmQgb3IgcmFpc2VzIGFuIElPRXJyb3IgaWYgdGhlIGZkIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5cblwKK1JlZ2lzdGVycyBhIG5ldyBmZCBvciByYWlzZXMgYW4gT1NFcnJvciBpZiB0aGUgZmQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuXAogZmQgaXMgdGhlIHRhcmdldCBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIG9wZXJhdGlvbi5cblwKIGV2ZW50cyBpcyBhIGJpdCBzZXQgY29tcG9zZWQgb2YgdGhlIHZhcmlvdXMgRVBPTEwgY29uc3RhbnRzOyB0aGUgZGVmYXVsdFxuXAogaXMgRVBPTExfSU4gfCBFUE9MTF9PVVQgfCBFUE9MTF9QUkkuXG5cCkBAIC0xMDA5LDcgKzEzNzEsNyBAQAogICAgIG5mZHMgPSBlcG9sbF93YWl0KHNlbGYtPmVwZmQsIGV2cywgbWF4ZXZlbnRzLCB0aW1lb3V0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChuZmRzIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKQEAgLTEwNjQsNyArMTQyNiw3IEBACiB9OwogCiBQeURvY19TVFJWQVIocHllcG9sbF9kb2MsCi0ic2VsZWN0LmVwb2xsKFtzaXplaGludD0tMV0pXG5cCisic2VsZWN0LmVwb2xsKHNpemVoaW50PS0xLCBmbGFncz0wKVxuXAogXG5cCiBSZXR1cm5zIGFuIGVwb2xsaW5nIG9iamVjdFxuXAogXG5cCkBAIC0xNDAwLDcgKzE3NjIsNyBAQAogICAgIH0KICAgICBpZiAoc2VsZi0+a3FmZCA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwpAQCAtMTQzMiw3ICsxNzk0LDcgQEAKIHsKICAgICBlcnJubyA9IGtxdWV1ZV9xdWV1ZV9pbnRlcm5hbF9jbG9zZShzZWxmKTsKICAgICBpZiAoZXJybm8gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xNDk1LDcgKzE4NTcsNyBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIHN0cnVjdCBrZXZlbnQgKmV2bCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqY2hsID0gTlVMTDsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dHNwZWM7CisgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CiAgICAgc3RydWN0IHRpbWVzcGVjICpwdGltZW91dHNwZWM7CiAKICAgICBpZiAoc2VsZi0+a3FmZCA8IDApCkBAIC0xNTE1LDI4ICsxODc3LDE2IEBACiAgICAgICAgIHB0aW1lb3V0c3BlYyA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5TnVtYmVyX0NoZWNrKG90aW1lb3V0KSkgewotICAgICAgICBkb3VibGUgdGltZW91dDsKLSAgICAgICAgbG9uZyBzZWNvbmRzOworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0LnR2X3NlYywgJnRpbWVvdXQudHZfbnNlYykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZShvdGltZW91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKHRpbWVvdXQgPiAoZG91YmxlKUxPTkdfTUFYKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBwZXJpb2QgdG9vIGxvbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICBpZiAodGltZW91dC50dl9zZWMgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIHBvc2l0aXZlIG9yIE5vbmUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KLSAgICAgICAgc2Vjb25kcyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHRpbWVvdXQgPSB0aW1lb3V0IC0gKGRvdWJsZSlzZWNvbmRzOwotICAgICAgICB0aW1lb3V0c3BlYy50dl9zZWMgPSBzZWNvbmRzOwotICAgICAgICB0aW1lb3V0c3BlYy50dl9uc2VjID0gKGxvbmcpKHRpbWVvdXQgKiAxRTkpOwotICAgICAgICBwdGltZW91dHNwZWMgPSAmdGltZW91dHNwZWM7CisgICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0OwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTE3MTMsNiArMjA2MywxMSBAQAogfTsKIAogI2VuZGlmIC8qIEhBVkVfS1FVRVVFICovCisKKworCisKKwogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAKIFB5RG9jX1NUUlZBUihzZWxlY3RfZG9jLApAQCAtMTc0NCw2ICsyMDk5LDkgQEAKICNpZmRlZiBIQVZFX1BPTEwKICAgICB7InBvbGwiLCAgICAgICAgICAgIHNlbGVjdF9wb2xsLCAgICBNRVRIX05PQVJHUywgICAgcG9sbF9kb2N9LAogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLworI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorICAgIHsiZGV2cG9sbCIsICAgICAgICAgc2VsZWN0X2RldnBvbGwsIE1FVEhfTk9BUkdTLCAgICBkZXZwb2xsX2RvY30sCisjZW5kaWYKICAgICB7MCwgICAgICAgICAwfSwgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNzY2LDYgKzIxMjQsOSBAQAogICAgIE5VTEwKIH07CiAKKworCisKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfc2VsZWN0KHZvaWQpCiB7CkBAIC0xNzc0LDkgKzIxMzUsOCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgU2VsZWN0RXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNlbGVjdC5lcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIFB5X0lOQ1JFRihTZWxlY3RFcnJvcik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFNlbGVjdEVycm9yKTsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogCiAjaWZkZWYgUElQRV9CVUYKICNpZmRlZiBIQVZFX0JST0tFTl9QSVBFX0JVRgpAQCAtMTgyMyw2ICsyMTgzLDExIEBACiAgICAgfQogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLwogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICisgICAgaWYgKFB5VHlwZV9SZWFkeSgmZGV2cG9sbF9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKICNpZmRlZiBIQVZFX0VQT0xMCiAgICAgUHlfVFlQRSgmcHlFcG9sbF9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZweUVwb2xsX1R5cGUpIDwgMCkKQEAgLTE4NDcsNiArMjIxMiwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTFdSTk9STSIsIEVQT0xMV1JOT1JNKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExXUkJBTkQiLCBFUE9MTFdSQkFORCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMTVNHIiwgRVBPTExNU0cpOworCisjaWZkZWYgRVBPTExfQ0xPRVhFQworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9DTE9FWEVDIiwgRVBPTExfQ0xPRVhFQyk7CisjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0VQT0xMICovCiAKICNpZmRlZiBIQVZFX0tRVUVVRQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGExbW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwppbmRleCBiMjViZDQ0Li5hNzMzYzRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwpAQCAtMTg0LDcgKzE4NCw4IEBACiAgICBJbml0aWFsaXplIHRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gc2hhMSAgIFRoZSBoYXNoIHN0YXRlIHlvdSB3aXNoIHRvIGluaXRpYWxpemUKICovCi12b2lkIHNoYTFfaW5pdChzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSkKK3N0YXRpYyB2b2lkCitzaGExX2luaXQoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEpCiB7CiAgICBhc3NlcnQoc2hhMSAhPSBOVUxMKTsKICAgIHNoYTEtPnN0YXRlWzBdID0gMHg2NzQ1MjMwMVVMOwpAQCAtMjAyLDcgKzIwMyw4IEBACiAgICBAcGFyYW0gaW4gICAgIFRoZSBkYXRhIHRvIGhhc2gKICAgIEBwYXJhbSBpbmxlbiAgVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSAob2N0ZXRzKQogKi8KLXZvaWQgc2hhMV9wcm9jZXNzKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLAorc3RhdGljIHZvaWQKK3NoYTFfcHJvY2VzcyhzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQogewogICAgIFB5X3NzaXplX3QgbjsKQEAgLTIxOCw3ICsyMjAsNyBAQAogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBTSEExX0JMT0NLU0laRTsKICAgICAgICAgICAgaW5sZW4gICAgICAgICAgLT0gU0hBMV9CTE9DS1NJWkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChTSEExX0JMT0NLU0laRSAtIHNoYTEtPmN1cmxlbikpOworICAgICAgICAgICBuID0gTUlOKGlubGVuLCAoUHlfc3NpemVfdCkoU0hBMV9CTE9DS1NJWkUgLSBzaGExLT5jdXJsZW4pKTsKICAgICAgICAgICAgbWVtY3B5KHNoYTEtPmJ1ZiArIHNoYTEtPmN1cmxlbiwgaW4sIChzaXplX3Qpbik7CiAgICAgICAgICAgIHNoYTEtPmN1cmxlbiAgICs9IG47CiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IG47CkBAIC0yMzcsNyArMjM5LDggQEAKICAgIEBwYXJhbSBzaGExICBUaGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIG91dCBbb3V0XSBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGhhc2ggKDIwIGJ5dGVzKQogKi8KLXZvaWQgc2hhMV9kb25lKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLCB1bnNpZ25lZCBjaGFyICpvdXQpCitzdGF0aWMgdm9pZAorc2hhMV9kb25lKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLCB1bnNpZ25lZCBjaGFyICpvdXQpCiB7CiAgICAgaW50IGk7CiAKQEAgLTM1Miw3ICszNTUsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTFfRElHRVNUU0laRV07CiAgICAgc3RydWN0IHNoYTFfc3RhdGUgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtMzYwLDI1ICszNjMsMjAgQEAKICAgICBzaGExX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNIQTFfRElHRVNUU0laRSAqIDIpOworICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoU0hBMV9ESUdFU1RTSVpFICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8U0hBMV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwppbmRleCA4NjE3MjEwLi43NmQ5MWFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKQEAgLTQ0NSw3ICs0NDUsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtNDUzLDI1ICs0NTMsMjAgQEAKICAgICBzaGFfZmluYWwoZGlnZXN0LCAmdGVtcCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGYtPmRpZ2VzdHNpemUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxzZWxmLT5kaWdlc3RzaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwppbmRleCAwZmFhZjVjLi44OGY4YTY0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKQEAgLTUxMSw3ICs1MTEsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtNTE5LDI1ICs1MTksMjAgQEAKICAgICBzaGE1MTJfZmluYWwoZGlnZXN0LCAmdGVtcCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGYtPmRpZ2VzdHNpemUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvciAoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKaW5kZXggMzJjZDhiYi4uMmViN2YyOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCkBAIC0yMiw2ICsyMiwxNCBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NJR01BU0spICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSykKKyMgIGRlZmluZSBQWVBUSFJFQURfU0lHTUFTSworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKQorIyAgaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKICNpZm5kZWYgU0lHX0VSUgogI2RlZmluZSBTSUdfRVJSICgoUHlPU19zaWdoYW5kbGVyX3QpKC0xKSkKICNlbmRpZgpAQCAtMTAxLDYgKzEwOSwxMCBAQAogCiBzdGF0aWMgUHlPU19zaWdoYW5kbGVyX3Qgb2xkX3NpZ2ludGhhbmRsZXIgPSBTSUdfREZMOwogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIEhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOworI2VuZGlmCisKICNpZmRlZiBIQVZFX0dFVElUSU1FUgogc3RhdGljIFB5T2JqZWN0ICpJdGltZXJFcnJvcjsKIApAQCAtMTY4LDE1ICsxODAsMTkgQEAKIHN0YXRpYyB2b2lkCiB0cmlwX3NpZ25hbChpbnQgc2lnX251bSkKIHsKKyAgICB1bnNpZ25lZCBjaGFyIGJ5dGU7CisKICAgICBIYW5kbGVyc1tzaWdfbnVtXS50cmlwcGVkID0gMTsKKyAgICBpZiAod2FrZXVwX2ZkICE9IC0xKSB7CisgICAgICAgIGJ5dGUgPSAodW5zaWduZWQgY2hhcilzaWdfbnVtOworICAgICAgICB3cml0ZSh3YWtldXBfZmQsICZieXRlLCAxKTsKKyAgICB9CiAgICAgaWYgKGlzX3RyaXBwZWQpCiAgICAgICAgIHJldHVybjsKICAgICAvKiBTZXQgaXNfdHJpcHBlZCBhZnRlciBzZXR0aW5nIC50cmlwcGVkLCBhcyBpdCBnZXRzCiAgICAgICAgY2xlYXJlZCBpbiBQeUVycl9DaGVja1NpZ25hbHMoKSBiZWZvcmUgLnRyaXBwZWQuICovCiAgICAgaXNfdHJpcHBlZCA9IDE7CiAgICAgUHlfQWRkUGVuZGluZ0NhbGwoY2hlY2tzaWduYWxzX3dpdGhhcmcsIE5VTEwpOwotICAgIGlmICh3YWtldXBfZmQgIT0gLTEpCi0gICAgICAgIHdyaXRlKHdha2V1cF9mZCwgIlwwIiwgMSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMTcsNiArMjMzLDExIEBACiAgICAgLyogSXNzdWUgIzEwMzExOiBhc3luY2hyb25vdXNseSBleGVjdXRpbmcgc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBub3QKICAgICAgICBtdXRhdGUgZXJybm8gdW5kZXIgdGhlIGZlZXQgb2YgdW5zdXNwZWN0aW5nIEMgY29kZS4gKi8KICAgICBlcnJubyA9IHNhdmVfZXJybm87CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHNpZ19udW0gPT0gU0lHSU5UKQorICAgICAgICBTZXRFdmVudChzaWdpbnRfZXZlbnQpOworI2VuZGlmCiB9CiAKIApAQCAtMzEzLDcgKzMzNCw3IEBACiAgICAgZWxzZQogICAgICAgICBmdW5jID0gc2lnbmFsX2hhbmRsZXI7CiAgICAgaWYgKFB5T1Nfc2V0c2lnKHNpZ19udW0sIGZ1bmMpID09IFNJR19FUlIpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG9sZF9oYW5kbGVyID0gSGFuZGxlcnNbc2lnX251bV0uZnVuYzsKQEAgLTM4Miw3ICs0MDMsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKHNpZ2ludGVycnVwdChzaWdfbnVtLCBmbGFnKTwwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNDk1LDYgKzUxNiwzNDEgQEAKIFJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuIik7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spIHx8IGRlZmluZWQoSEFWRV9TSUdXQUlUKSB8fCBcCisgICAgICAgIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKKy8qIENvbnZlcnQgYW4gaXRlcmFibGUgdG8gYSBzaWdzZXQuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByZXR1cm4gLTEgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KKworc3RhdGljIGludAoraXRlcmFibGVfdG9fc2lnc2V0KFB5T2JqZWN0ICppdGVyYWJsZSwgc2lnc2V0X3QgKm1hc2spCit7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5T2JqZWN0ICppdGVyYXRvciwgKml0ZW07CisgICAgbG9uZyBzaWdudW07CisgICAgaW50IGVycjsKKworICAgIHNpZ2VtcHR5c2V0KG1hc2spOworCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHdoaWxlICgxKQorICAgIHsKKyAgICAgICAgaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ251bSA9IFB5TG9uZ19Bc0xvbmcoaXRlbSk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaWYgKHNpZ251bSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKDAgPCBzaWdudW0gJiYgc2lnbnVtIDwgTlNJRykKKyAgICAgICAgICAgIGVyciA9IHNpZ2FkZHNldChtYXNrLCAoaW50KXNpZ251bSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVyciA9IDE7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgbnVtYmVyICVsZCBvdXQgb2YgcmFuZ2UiLCBzaWdudW0pOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQgPSAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSB8fCBkZWZpbmVkKEhBVkVfU0lHUEVORElORykKK3N0YXRpYyBQeU9iamVjdCoKK3NpZ3NldF90b19zZXQoc2lnc2V0X3QgbWFzaykKK3sKKyAgICBQeU9iamVjdCAqc2lnbnVtLCAqcmVzdWx0OworICAgIGludCBzaWc7CisKKyAgICByZXN1bHQgPSBQeVNldF9OZXcoMCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoc2lnID0gMTsgc2lnIDwgTlNJRzsgc2lnKyspIHsKKyAgICAgICAgaWYgKHNpZ2lzbWVtYmVyKCZtYXNrLCBzaWcpICE9IDEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgaXQgaXMgYSBtZW1iZXIgYnkgYWRkaW5nIHRoZSBzaWduYWwgdG8KKyAgICAgICAgICAgdGhlIHJlc3VsdCBsaXN0LiAgSWdub3JlIHRoZSBvdGhlciBjYXNlcyBiZWNhdXNlIHRoZXkgbWVhbiB0aGUKKyAgICAgICAgICAgc2lnbmFsIGlzbid0IGEgbWVtYmVyIG9mIHRoZSBtYXNrIG9yIHRoZSBzaWduYWwgd2FzIGludmFsaWQsCisgICAgICAgICAgIGFuZCBhbiBpbnZhbGlkIHNpZ25hbCBtdXN0IGhhdmUgYmVlbiBvdXIgZmF1bHQgaW4gY29uc3RydWN0aW5nCisgICAgICAgICAgIHRoZSBsb29wIGJvdW5kYXJpZXMuICovCisgICAgICAgIHNpZ251bSA9IFB5TG9uZ19Gcm9tTG9uZyhzaWcpOworICAgICAgICBpZiAoc2lnbnVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5U2V0X0FkZChyZXN1bHQsIHNpZ251bSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzaWdudW0pOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoc2lnbnVtKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9zaWdtYXNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgaG93OworICAgIFB5T2JqZWN0ICpzaWduYWxzOworICAgIHNpZ3NldF90IG1hc2ssIHByZXZpb3VzOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnB0aHJlYWRfc2lnbWFzayIsICZob3csICZzaWduYWxzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZtYXNrKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlcnIgPSBwdGhyZWFkX3NpZ21hc2soaG93LCAmbWFzaywgJnByZXZpb3VzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogaWYgc2lnbmFscyB3YXMgdW5ibG9ja2VkLCBzaWduYWwgaGFuZGxlcnMgaGF2ZSBiZWVuIGNhbGxlZCAqLworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gc2lnc2V0X3RvX3NldChwcmV2aW91cyk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvYywKKyJwdGhyZWFkX3NpZ21hc2soaG93LCBtYXNrKSAtPiBvbGQgbWFza1xuXAorXG5cCitGZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sgKi8KKworCisjaWZkZWYgSEFWRV9TSUdQRU5ESU5HCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3BlbmRpbmcoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaW50IGVycjsKKyAgICBzaWdzZXRfdCBtYXNrOworICAgIGVyciA9IHNpZ3BlbmRpbmcoJm1hc2spOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgcmV0dXJuIHNpZ3NldF90b19zZXQobWFzayk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lncGVuZGluZ19kb2MsCisic2lncGVuZGluZygpIC0+IGxpc3RcblwKK1xuXAorRXhhbWluZSBwZW5kaW5nIHNpZ25hbHMuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdQRU5ESU5HICovCisKKworI2lmZGVmIEhBVkVfU0lHV0FJVAorc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc2lnbmFsczsKKyAgICBzaWdzZXRfdCBzZXQ7CisgICAgaW50IGVyciwgc2lnbnVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnNpZ3dhaXQiLCAmc2lnbmFscykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgZXJyID0gc2lnd2FpdCgmc2V0LCAmc2lnbnVtKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIpIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzaWdudW0pOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRfZG9jLAorInNpZ3dhaXQoc2lnc2V0KSAtPiBzaWdudW1cblwKK1xuXAorV2FpdCBhIHNpZ25hbC4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBzdHJ1Y3Rfc2lnaW5mb19maWVsZHNbXSA9IHsKKyAgICB7InNpX3NpZ25vIiwgICAgICAgICJzaWduYWwgbnVtYmVyIn0sCisgICAgeyJzaV9jb2RlIiwgICAgICAgICAic2lnbmFsIGNvZGUifSwKKyAgICB7InNpX2Vycm5vIiwgICAgICAgICJlcnJubyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzaWduYWwifSwKKyAgICB7InNpX3BpZCIsICAgICAgICAgICJzZW5kaW5nIHByb2Nlc3MgSUQifSwKKyAgICB7InNpX3VpZCIsICAgICAgICAgICJyZWFsIHVzZXIgSUQgb2Ygc2VuZGluZyBwcm9jZXNzIn0sCisgICAgeyJzaV9zdGF0dXMiLCAgICAgICAiZXhpdCB2YWx1ZSBvciBzaWduYWwifSwKKyAgICB7InNpX2JhbmQiLCAgICAgICAgICJiYW5kIGV2ZW50IGZvciBTSUdQT0xMIn0sCisgICAgezB9Cit9OworCitQeURvY19TVFJWQVIoc3RydWN0X3NpZ2luZm9fX2RvY19fLAorInN0cnVjdF9zaWdpbmZvOiBSZXN1bHQgZnJvbSBzaWd3YWl0aW5mbyBvciBzaWd0aW1lZHdhaXQuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorKHNpX3NpZ25vLCBzaV9jb2RlLCBzaV9lcnJubywgc2lfcGlkLCBzaV91aWQsIHNpX3N0YXR1cywgc2lfYmFuZCksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc2lfc2lnbm8sIHNpX2NvZGUsIGFuZCBzbyBvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBzdHJ1Y3Rfc2lnaW5mb19kZXNjID0geworICAgICJzaWduYWwuc3RydWN0X3NpZ2luZm8iLCAgICAgICAgICAgLyogbmFtZSAqLworICAgIHN0cnVjdF9zaWdpbmZvX19kb2NfXywgICAgICAgLyogZG9jICovCisgICAgc3RydWN0X3NpZ2luZm9fZmllbGRzLCAgICAgICAvKiBmaWVsZHMgKi8KKyAgICA3ICAgICAgICAgIC8qIG5faW5fc2VxdWVuY2UgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU2lnaW5mb1R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmaWxsX3NpZ2luZm8oc2lnaW5mb190ICpzaSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlNpZ2luZm9UeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfc2lnbm8pKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDEsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX2NvZGUpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDIsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX2Vycm5vKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAzLCBQeUxvbmdfRnJvbVBpZChzaS0+c2lfcGlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDQsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX3VpZCkpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfc3RhdHVzKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCA2LCBQeUxvbmdfRnJvbUxvbmcoc2ktPnNpX2JhbmQpKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd3YWl0aW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnNpZ25hbHM7CisgICAgc2lnc2V0X3Qgc2V0OworICAgIHNpZ2luZm9fdCBzaTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnNpZ3dhaXRpbmZvIiwgJnNpZ25hbHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGVyciA9IHNpZ3dhaXRpbmZvKCZzZXQsICZzaSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyID09IC0xKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworCisgICAgcmV0dXJuIGZpbGxfc2lnaW5mbygmc2kpOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRpbmZvX2RvYywKKyJzaWd3YWl0aW5mbyhzaWdzZXQpIC0+IHN0cnVjdF9zaWdpbmZvXG5cCitcblwKK1dhaXQgc3luY2hyb25vdXNseSBmb3IgYSBzaWduYWwgdW50aWwgb25lIG9mIHRoZSBzaWduYWxzIGluICpzaWdzZXQqIGlzXG5cCitkZWxpdmVyZWQuXG5cCitSZXR1cm5zIGEgc3RydWN0X3NpZ2luZm8gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsLiIpOworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHV0FJVElORk8gKi8KKworI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3RpbWVkd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnNpZ25hbHMsICp0aW1lb3V0OworICAgIHN0cnVjdCB0aW1lc3BlYyBidWY7CisgICAgc2lnc2V0X3Qgc2V0OworICAgIHNpZ2luZm9fdCBzaTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpzaWd0aW1lZHdhaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmc2lnbmFscywgJnRpbWVvdXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWModGltZW91dCwgJmJ1Zi50dl9zZWMsICZidWYudHZfbnNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJ1Zi50dl9zZWMgPCAwIHx8IGJ1Zi50dl9uc2VjIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgZXJyID0gc2lndGltZWR3YWl0KCZzZXQsICZzaSwgJmJ1Zik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyID09IC0xKSB7CisgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsbF9zaWdpbmZvKCZzaSk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lndGltZWR3YWl0X2RvYywKKyJzaWd0aW1lZHdhaXQoc2lnc2V0LCAodGltZW91dF9zZWMsIHRpbWVvdXRfbnNlYykpIC0+IHN0cnVjdF9zaWdpbmZvXG5cCitcblwKK0xpa2Ugc2lnd2FpdGluZm8oKSwgYnV0IHdpdGggYSB0aW1lb3V0IHNwZWNpZmllZCBhcyBhIHR1cGxlIG9mIChzZWNvbmRzLFxuXAorbmFub3NlY29uZHMpLiIpOworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUICovCisKKworI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfa2lsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgbG9uZyB0aWQ7CisgICAgaW50IHNpZ251bTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJsaTpwdGhyZWFkX2tpbGwiLCAmdGlkLCAmc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlcnIgPSBwdGhyZWFkX2tpbGwoKHB0aHJlYWRfdCl0aWQsIHNpZ251bSk7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHRoZSBzaWduYWwgbWF5IGhhdmUgYmVlbiBzZW5kIHRvIHRoZSBjdXJyZW50IHRocmVhZCAqLworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX2tpbGxfZG9jLAorInB0aHJlYWRfa2lsbCh0aHJlYWRfaWQsIHNpZ251bSlcblwKK1xuXAorU2VuZCBhIHNpZ25hbCB0byBhIHRocmVhZC4iKTsKKyNlbmRpZiAgIC8qICNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAqLworCisKIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlICovCiBzdGF0aWMgUHlNZXRob2REZWYgc2lnbmFsX21ldGhvZHNbXSA9IHsKQEAgLTUxNSwxMCArODcxLDM0IEBACiAjZW5kaWYKICNpZmRlZiBIQVZFX1BBVVNFCiAgICAgeyJwYXVzZSIsICAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfcGF1c2UsCi0gICAgIE1FVEhfTk9BUkdTLHBhdXNlX2RvY30sCisgICAgIE1FVEhfTk9BUkdTLCBwYXVzZV9kb2N9LAogI2VuZGlmCiAgICAgeyJkZWZhdWx0X2ludF9oYW5kbGVyIiwgc2lnbmFsX2RlZmF1bHRfaW50X2hhbmRsZXIsCiAgICAgIE1FVEhfVkFSQVJHUywgZGVmYXVsdF9pbnRfaGFuZGxlcl9kb2N9LAorI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpCisgICAgeyJwdGhyZWFkX2tpbGwiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfcHRocmVhZF9raWxsLAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9wdGhyZWFkX2tpbGxfZG9jfSwKKyNlbmRpZgorI2lmZGVmIFBZUFRIUkVBRF9TSUdNQVNLCisgICAgeyJwdGhyZWFkX3NpZ21hc2siLCAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfcHRocmVhZF9zaWdtYXNrLAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHUEVORElORworICAgIHsic2lncGVuZGluZyIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3BlbmRpbmcsCisgICAgIE1FVEhfTk9BUkdTLCBzaWduYWxfc2lncGVuZGluZ19kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdXQUlUCisgICAgeyJzaWd3YWl0IiwgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdCwKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnd2FpdF9kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTworICAgIHsic2lnd2FpdGluZm8iLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXRpbmZvLAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd3YWl0aW5mb19kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQKKyAgICB7InNpZ3RpbWVkd2FpdCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd0aW1lZHdhaXQsCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3RpbWVkd2FpdF9kb2N9LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNTg3LDYgKzk2NywxNSBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorICAgIGlmICghaW5pdGlhbGl6ZWQpCisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlNpZ2luZm9UeXBlLCAmc3RydWN0X3NpZ2luZm9fZGVzYyk7CisKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlNpZ2luZm9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0cnVjdF9zaWdpbmZvIiwgKFB5T2JqZWN0KikgJlNpZ2luZm9UeXBlKTsKKyAgICBpbml0aWFsaXplZCA9IDE7CisjZW5kaWYKKwogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAKQEAgLTYwMyw2ICs5OTIsMTkgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIFB5X0RFQ1JFRih4KTsKIAorI2lmZGVmIFNJR19CTE9DSworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdfQkxPQ0spKQorICAgICAgICAgZ290byBmaW5hbGx5OworI2VuZGlmCisjaWZkZWYgU0lHX1VOQkxPQ0sKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHX1VOQkxPQ0spKQorICAgICAgICAgZ290byBmaW5hbGx5OworI2VuZGlmCisjaWZkZWYgU0lHX1NFVE1BU0sKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHX1NFVE1BU0spKQorICAgICAgICAgZ290byBmaW5hbGx5OworI2VuZGlmCisKICAgICB4ID0gSW50SGFuZGxlciA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJkZWZhdWx0X2ludF9oYW5kbGVyIik7CiAgICAgaWYgKCF4KQogICAgICAgICBnb3RvIGZpbmFsbHk7CkBAIC04NTUsNiArMTI1NywxMSBAQAogICAgIFB5X0RFQ1JFRih4KTsKICNlbmRpZgogCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIENyZWF0ZSBtYW51YWwtcmVzZXQgZXZlbnQsIGluaXRpYWxseSB1bnNldCAqLworICAgIHNpZ2ludF9ldmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBGQUxTRSk7CisjZW5kaWYKKwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgbSA9IE5VTEw7CkBAIC0xMDAxLDMgKzE0MDgsMjUgQEAKICAgICBfUHlJbXBvcnRfUmVJbml0TG9jaygpOwogI2VuZGlmCiB9CisKK2ludAorX1B5T1NfSXNNYWluVGhyZWFkKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICByZXR1cm4gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpID09IG1haW5fdGhyZWFkOworI2Vsc2UKKyAgICByZXR1cm4gMTsKKyNlbmRpZgorfQorCisjaWZkZWYgTVNfV0lORE9XUwordm9pZCAqX1B5T1NfU2lnaW50RXZlbnQodm9pZCkKK3sKKyAgICAvKiBSZXR1cm5zIGEgbWFudWFsLXJlc2V0IGV2ZW50IHdoaWNoIGdldHMgdHJpcHBlZCB3aGVuZXZlcgorICAgICAgIFNJR0lOVCBpcyByZWNlaXZlZC4KKworICAgICAgIFB5dGhvbi5oIGRvZXMgbm90IGluY2x1ZGUgd2luZG93cy5oIHNvIHdlIGRvIGNhbm5vdCB1c2UgSEFORExFCisgICAgICAgYXMgdGhlIHJldHVybiB0eXBlIG9mIHRoaXMgZnVuY3Rpb24uICBXZSB1c2Ugdm9pZCogaW5zdGVhZC4gKi8KKyAgICByZXR1cm4gc2lnaW50X2V2ZW50OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCA0Zjg5NmZkLi5kOGM4MWZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTQyLDYgKzQyLDkgQEAKIC0gc29ja2V0LmluZXRfbnRvYShwYWNrZWQgSVApIC0+IElQIGFkZHJlc3Mgc3RyaW5nCiAtIHNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpIC0+IE5vbmUgfCBmbG9hdAogLSBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoTm9uZSB8IGZsb2F0KQorLSBzb2NrZXQuaWZfbmFtZWluZGV4KCkgLT4gbGlzdCBvZiB0dXBsZXMgKGlmX2luZGV4LCBpZl9uYW1lKQorLSBzb2NrZXQuaWZfbmFtZXRvaW5kZXgobmFtZSkgLT4gY29ycmVzcG9uZGluZyBpbnRlcmZhY2UgaW5kZXgKKy0gc29ja2V0LmlmX2luZGV4dG9uYW1lKGluZGV4KSAtPiBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBuYW1lCiAtIGFuIEludGVybmV0IHNvY2tldCBhZGRyZXNzIGlzIGEgcGFpciAoaG9zdG5hbWUsIHBvcnQpCiAgIHdoZXJlIGhvc3RuYW1lIGNhbiBiZSBhbnl0aGluZyByZWNvZ25pemVkIGJ5IGdldGhvc3RieW5hbWUoKQogICAoaW5jbHVkaW5nIHRoZSBkZC5kZC5kZC5kZCBub3RhdGlvbikgYW5kIHBvcnQgaXMgaW4gaG9zdCBieXRlIG9yZGVyCkBAIC0xMzMsNiArMTM2LDkgQEAKIHNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKIHNldHRpbWVvdXQoTm9uZSB8IGZsb2F0KSAtLSBzZXQgb3IgY2xlYXIgdGhlIHRpbWVvdXRcblwKIHNodXRkb3duKGhvdykgLS0gc2h1dCBkb3duIHRyYWZmaWMgaW4gb25lIG9yIGJvdGggZGlyZWN0aW9uc1xuXAoraWZfbmFtZWluZGV4KCkgLS0gcmV0dXJuIGFsbCBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lc1xuXAoraWZfbmFtZXRvaW5kZXgobmFtZSkgLS0gcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBpbmRleFxuXAoraWZfaW5kZXh0b25hbWUoaW5kZXgpIC0tIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UgbmFtZVxuXAogXG5cCiAgWypdIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyEiKTsKIApAQCAtMTUwLDEyICsxNTYsMTYgQEAKICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcKICNlbmRpZgogCisjaWYgZGVmaW5lZChfX09wZW5CU0RfXykKKyMgaW5jbHVkZSA8c3lzL3Vpby5oPgorI2VuZGlmCisKICNpZm5kZWYgV0lUSF9USFJFQUQKICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKLSMgaWYgZGVmaW5lZChfQUlYKSB8fCBkZWZpbmVkKF9fb3NmX18pCisjIGlmIGRlZmluZWQoX0FJWCkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyBlbGlmIGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoX19zZ2kpCiAjICBkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcKQEAgLTIwOCw2ICsyMTgsMTEgQEAKICMgIGluY2x1ZGUgPGlvY3RsLmg+CiAjZW5kaWYKIAorI2lmZGVmIF9fQVBQTEVfXworIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorCisKICNpZiBkZWZpbmVkKFBZT1NfT1MyKQogIyBkZWZpbmUgIElOQ0xfRE9TCiAjIGRlZmluZSAgSU5DTF9ET1NFUlJPUlMKQEAgLTI1MCw2ICsyNjUsMTQgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorCiAvKiBHZW5lcmljIHNvY2tldCBvYmplY3QgZGVmaW5pdGlvbnMgYW5kIGluY2x1ZGVzICovCiAjZGVmaW5lIFB5U29ja2V0X0JVSUxESU5HX1NPQ0tFVAogI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIgpAQCAtMjYwLDYgKzI4Myw3IEBACiAKIC8qIE5vbi1NUyBXSU5ET1dTIGluY2x1ZGVzICovCiAjIGluY2x1ZGUgPG5ldGRiLmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgogCiAvKiBIZWFkZXJzIG5lZWRlZCBmb3IgaW5ldF9udG9hKCkgYW5kIGluZXRfYWRkcigpICovCiAjIGlmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19WQUNQUCkKQEAgLTM1Nyw3ICszODEsNyBAQAogICAgICAgICByZXR1cm4gSU5WQUxJRF9TT0NLRVQ7CiAKICAgICByZXR1cm4gV1NBU29ja2V0KEZST01fUFJPVE9DT0xfSU5GTywgRlJPTV9QUk9UT0NPTF9JTkZPLAotICAgICAgICAgICAgICAgICAgICAgRlJPTV9QUk9UT0NPTF9JTkZPLCAmaW5mbywgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICBGUk9NX1BST1RPQ09MX0lORk8sICZpbmZvLCAwLCBXU0FfRkxBR19PVkVSTEFQUEVEKTsKIH0KICNkZWZpbmUgU09DS0VUQ0xPU0UgY2xvc2Vzb2NrZXQKICNlbHNlCkBAIC0zNjYsNiArMzkwLDcgQEAKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lOMzIKKyN1bmRlZiBFQUZOT1NVUFBPUlQKICNkZWZpbmUgRUFGTk9TVVBQT1JUIFdTQUVBRk5PU1VQUE9SVAogI2RlZmluZSBzbnByaW50ZiBfc25wcmludGYKICNlbmRpZgpAQCAtNDE3LDcgKzQ0Miw4IEBACiAjZGVmaW5lIFNFR01FTlRfU0laRSAoMzIgKiAxMDI0IC0xKQogI2VuZGlmCiAKLSNkZWZpbmUgU0FTMlNBKHgpICAgICAgICgoc3RydWN0IHNvY2thZGRyICopKHgpKQorLyogQ29udmVydCAic29ja19hZGRyX3QgKiIgdG8gInN0cnVjdCBzb2NrYWRkciAqIi4gKi8KKyNkZWZpbmUgU0FTMlNBKHgpICAgICAgICgmKCh4KS0+c2EpKQogCiAvKgogICogQ29uc3RhbnRzIGZvciBnZXRuYW1laW5mbygpCkBAIC00MzgsNyArNDY0LDYgQEAKIAogLyogR2xvYmFsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIGV4Y2VwdGlvbiB0eXBlIGZvciBlcnJvcnMgZGV0ZWN0ZWQKICAgIGJ5IHRoaXMgbW9kdWxlIChidXQgbm90IGFyZ3VtZW50IHR5cGUgb3IgbWVtb3J5IGVycm9ycywgZXRjLikuICovCi1zdGF0aWMgUHlPYmplY3QgKnNvY2tldF9lcnJvcjsKIHN0YXRpYyBQeU9iamVjdCAqc29ja2V0X2hlcnJvcjsKIHN0YXRpYyBQeU9iamVjdCAqc29ja2V0X2dhaWVycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfdGltZW91dDsKQEAgLTQ1NSw2ICs0ODAsMTcgQEAKICNpbmNsdWRlIDxzeXMvcG9sbC5oPgogI2VuZGlmCiAKKy8qIExhcmdlc3QgdmFsdWUgdG8gdHJ5IHRvIHN0b3JlIGluIGEgc29ja2xlbl90ICh1c2VkIHdoZW4gaGFuZGxpbmcKKyAgIGFuY2lsbGFyeSBkYXRhKS4gIFBPU0lYIHJlcXVpcmVzIHNvY2tsZW5fdCB0byBob2xkIGF0IGxlYXN0CisgICAoMioqMzEpLTEgYW5kIHJlY29tbWVuZHMgYWdhaW5zdCBzdG9yaW5nIGxhcmdlciB2YWx1ZXMsIGJ1dAorICAgc29ja2xlbl90IHdhcyBvcmlnaW5hbGx5IGludCBpbiB0aGUgQlNEIGludGVyZmFjZSwgc28gdG8gYmUgb24gdGhlCisgICBzYWZlIHNpZGUgd2UgdXNlIHRoZSBzbWFsbGVyIG9mICgyKiozMSktMSBhbmQgSU5UX01BWC4gKi8KKyNpZiBJTlRfTUFYID4gMHg3ZmZmZmZmZgorI2RlZmluZSBTT0NLTEVOX1RfTElNSVQgMHg3ZmZmZmZmZgorI2Vsc2UKKyNkZWZpbmUgU09DS0xFTl9UX0xJTUlUIElOVF9NQVgKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9QT0xMCiAvKiBJbnN0ZWFkIG9mIHNlbGVjdCgpLCB3ZSdsbCB1c2UgcG9sbCgpIHNpbmNlIHBvbGwoKSB3b3JrcyBvbiBhbnkgZmQuICovCiAjZGVmaW5lIElTX1NFTEVDVEFCTEUocykgMQpAQCAtNDY4LDcgKzUwNCw3IEBACiBzdGF0aWMgUHlPYmplY3QqCiBzZWxlY3RfZXJyb3Iodm9pZCkKIHsKLSAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAidW5hYmxlIHRvIHNlbGVjdCBvbiBzb2NrZXQiKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVuYWJsZSB0byBzZWxlY3Qgb24gc29ja2V0Iik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQ5NSw3ICs1MzEsNyBAQAogICAgICAgIHJlY29nbml6ZXMgdGhlIGVycm9yIGNvZGVzIHVzZWQgYnkgYm90aCBHZXRMYXN0RXJyb3IoKSBhbmQKICAgICAgICBXU0FHZXRMYXN0RXJyb3IgKi8KICAgICBpZiAoZXJyX25vKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoc29ja2V0X2Vycm9yLCBlcnJfbm8pOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgZXJyX25vKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChQWU9TX09TMikgJiYgIWRlZmluZWQoUFlDQ19HQ0MpCkBAIC01MjYsNyArNTYyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgbXllcnJvcmNvZGUsIG91dGJ1Zik7CiAgICAgICAgICAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KHNvY2tldF9lcnJvciwgdik7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX09TRXJyb3IsIHYpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTM0LDcgKzU3MCw3IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKHNvY2tldF9lcnJvcik7CisgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKIH0KIAogCkBAIC04NTMsMTMgKzg4OSwxMyBAQAogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBmcmVlYWRkcmluZm8ocmVzKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzLT5haV9uZXh0KSB7CiAgICAgICAgICAgICBmcmVlYWRkcmluZm8ocmVzKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAid2lsZGNhcmQgcmVzb2x2ZWQgdG8gbXVsdGlwbGUgYWRkcmVzcyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC04NzIsNyArOTA4LDcgQEAKICAgICBpZiAobmFtZVswXSA9PSAnPCcgJiYgc3RyY21wKG5hbWUsICI8YnJvYWRjYXN0PiIpID09IDApIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICpzaW47CiAgICAgICAgIGlmIChhZiAhPSBBRl9JTkVUICYmIGFmICE9IEFGX1VOU1BFQykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJhZGRyZXNzIGZhbWlseSBtaXNtYXRjaGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTkzMCw3ICs5NjYsNyBAQAogICAgICAgICByZXR1cm4gMTY7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KQEAgLTk3OSw3ICsxMDE1LDcgQEAKICAgICAgICAgYmRhZGRyLT5iWzVdID0gYjU7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJiYWQgYmx1ZXRvb3RoIGFkZHJlc3MiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJiYWQgYmx1ZXRvb3RoIGFkZHJlc3MiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KQEAgLTEwNDQsNyArMTA4MCw3IEBACiAjZW5kaWYgLyogbGludXggKi8KICAgICAgICAgewogICAgICAgICAgICAgLyogcmVndWxhciBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYS0+c3VuX3BhdGgpOworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYS0+c3VuX3BhdGgpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmIC8qIEFGX1VOSVggKi8KQEAgLTExOTAsNiArMTIyNiw0MiBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuICphID0gKHN0cnVjdCBzb2NrYWRkcl9jYW4gKilhZGRyOworICAgICAgICBjaGFyICppZm5hbWUgPSAiIjsKKyAgICAgICAgc3RydWN0IGlmcmVxIGlmcjsKKyAgICAgICAgLyogbmVlZCB0byBsb29rIHVwIGludGVyZmFjZSBuYW1lIGdpdmVuIGluZGV4ICovCisgICAgICAgIGlmIChhLT5jYW5faWZpbmRleCkgeworICAgICAgICAgICAgaWZyLmlmcl9pZmluZGV4ID0gYS0+Y2FuX2lmaW5kZXg7CisgICAgICAgICAgICBpZiAoaW9jdGwoc29ja2ZkLCBTSU9DR0lGTkFNRSwgJmlmcikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZm5hbWUgPSBpZnIuaWZyX25hbWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyZoIiwgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEtPmNhbl9mYW1pbHkpOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgUEZfU1lTVEVNCisgICAgY2FzZSBQRl9TWVNURU06CisgICAgICAgIHN3aXRjaChwcm90bykgeworI2lmZGVmIFNZU1BST1RPX0NPTlRST0wKKyAgICAgICAgY2FzZSBTWVNQUk9UT19DT05UUk9MOgorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY3RsICphID0gKHN0cnVjdCBzb2NrYWRkcl9jdGwgKilhZGRyOworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihJSSkiLCBhLT5zY19pZCwgYS0+c2NfdW5pdCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYWRkcmVzcyB0eXBlIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIAogICAgIGRlZmF1bHQ6CkBAIC0xMjIxLDE3ICsxMjkzLDI3IEBACiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl91biogYWRkcjsKICAgICAgICAgY2hhciAqcGF0aDsKICAgICAgICAgaW50IGxlbjsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAicyMiLCAmcGF0aCwgJmxlbikpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaW50IHJldHZhbCA9IDA7CisKKyAgICAgICAgLyogUEVQIDM4My4gIE5vdCB1c2luZyBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIgc2luY2Ugd2UgbmVlZCB0bworICAgICAgICAgICBhbGxvdyBlbWJlZGRlZCBudWxscyBvbiBMaW51eC4gKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmdzKSkgeworICAgICAgICAgICAgaWYgKChhcmdzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmdzKSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgInkjIiwgJnBhdGgsICZsZW4pKQorICAgICAgICAgICAgZ290byB1bml4X291dDsKIAogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl91biopYWRkcl9yZXQ7CiAjaWZkZWYgbGludXgKICAgICAgICAgaWYgKGxlbiA+IDAgJiYgcGF0aFswXSA9PSAwKSB7CiAgICAgICAgICAgICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgZXh0ZW5zaW9uICovCiAgICAgICAgICAgICBpZiAobGVuID4gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtMTIzOSw5ICsxMzIxLDkgQEAKICAgICAgICAgewogICAgICAgICAgICAgLyogcmVndWxhciBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCiAgICAgICAgICAgICBpZiAobGVuID49IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9VTklYIHBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWRkci0+c3VuX3BhdGhbbGVuXSA9IDA7CiAgICAgICAgIH0KQEAgLTEyNTIsNyArMTMzNCwxMCBAQAogI2Vsc2UKICAgICAgICAgKmxlbl9yZXQgPSBsZW4gKyBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dmFsID0gMTsKKyAgICB1bml4X291dDoKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gcmV0dmFsOwogICAgIH0KICNlbmRpZiAvKiBBRl9VTklYICovCiAKQEAgLTEyODAsNiArMTM2NSwxMSBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfUkRTCisgICAgY2FzZSBBRl9SRFM6CisgICAgICAgIC8qIFJEUyBzb2NrZXRzIHVzZSBzb2NrYWRkcl9pbjogZmFsbC10aHJvdWdoICovCisjZW5kaWYKKwogICAgIGNhc2UgQUZfSU5FVDoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiogYWRkcjsKQEAgLTEzNzYsNyArMTQ2Niw3IEBACiAgICAgICAgICAgICBfQlRfTDJfTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwogICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaSIsICZzdHJhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfQlRfTDJfTUVNQihhZGRyLCBwc20pKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTM5NSw3ICsxNDg1LDcgQEAKICAgICAgICAgICAgIF9CVF9SQ19NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnN0cmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9CVF9SQ19NRU1CKGFkZHIsIGNoYW5uZWwpKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQxMyw3ICsxNTAzLDcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoc3RyYWRkciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDIyLDcgKzE1MTIsNyBAQAogI2Vsc2UKICAgICAgICAgICAgIF9CVF9IQ0lfTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwogICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJl9CVF9IQ0lfTUVNQihhZGRyLCBkZXYpKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQzOSw3ICsxNTI5LDcgQEAKICAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3NjbyAqKWFkZHJfcmV0OwogICAgICAgICAgICAgX0JUX1NDT19NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soYXJncykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTE0NTIsNyArMTU0Miw3IEBACiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCIpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogdW5rbm93biBCbHVldG9vdGggcHJvdG9jb2wiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMTU2NCwxMCArMTY1NCwxMTYgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX0NBTgorICAgIGNhc2UgQUZfQ0FOOgorICAgICAgICBzd2l0Y2ggKHMtPnNvY2tfcHJvdG8pIHsKKyAgICAgICAgY2FzZSBDQU5fUkFXOgorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuICphZGRyOworICAgICAgICAgICAgUHlPYmplY3QgKmludGVyZmFjZU5hbWU7CisgICAgICAgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfY2FuICopYWRkcl9yZXQ7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50ZXJmYWNlTmFtZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoaW50ZXJmYWNlTmFtZSk7CisKKyAgICAgICAgICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICAgICAgICAgIGlmci5pZnJfaWZpbmRleCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxlbiA8IHNpemVvZihpZnIuaWZyX25hbWUpKSB7CisgICAgICAgICAgICAgICAgc3RybmNweShpZnIuaWZyX25hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGludGVyZmFjZU5hbWUpLCBzaXplb2YoaWZyLmlmcl9uYW1lKSk7CisgICAgICAgICAgICAgICAgaWZyLmlmcl9uYW1lWyhzaXplb2YoaWZyLmlmcl9uYW1lKSktMV0gPSAnXDAnOworICAgICAgICAgICAgICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBTSU9DR0lGSU5ERVgsICZpZnIpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfQ0FOIGludGVyZmFjZSBuYW1lIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRyLT5jYW5fZmFtaWx5ID0gQUZfQ0FOOworICAgICAgICAgICAgYWRkci0+Y2FuX2lmaW5kZXggPSBpZnIuaWZyX2lmaW5kZXg7CisKKyAgICAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCphZGRyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja2FkZHJhcmc6IHVuc3VwcG9ydGVkIENBTiBwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgCisjaWZkZWYgUEZfU1lTVEVNCisgICAgY2FzZSBQRl9TWVNURU06CisgICAgICAgIHN3aXRjaCAocy0+c29ja19wcm90bykgeworI2lmZGVmIFNZU1BST1RPX0NPTlRST0wKKyAgICAgICAgY2FzZSBTWVNQUk9UT19DT05UUk9MOgorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY3RsICphZGRyOworICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9jdGwgKilhZGRyX3JldDsKKyAgICAgICAgICAgIGFkZHItPnNjX2ZhbWlseSA9IEFGX1NZU1RFTTsKKyAgICAgICAgICAgIGFkZHItPnNzX3N5c2FkZHIgPSBBRl9TWVNfQ09OVFJPTDsgCisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJncykpIHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY3RsX2luZm8gaW5mbzsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqY3RsX25hbWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJPJiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmN0bF9uYW1lKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShjdGxfbmFtZSkgPiBzaXplb2YoaW5mby5jdGxfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlkZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdGxfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdHJuY3B5KGluZm8uY3RsX25hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGN0bF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbmZvLmN0bF9uYW1lKSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN0bF9uYW1lKTsKKworICAgICAgICAgICAgICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBDVExJT0NHSU5GTywgJmluZm8pKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGZpbmQga2VybmVsIGNvbnRyb2wgd2l0aCBwcm92aWRlZCBuYW1lIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhZGRyLT5zY19pZCA9IGluZm8uY3RsX2lkOworICAgICAgICAgICAgICAgIGFkZHItPnNjX3VuaXQgPSAwOworICAgICAgICAgICAgfSBlbHNlIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSUkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGFkZHItPnNjX2lkKSwgJihhZGRyLT5zY191bml0KSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHN0ciBvciB0dXBsZSBvZiB0d28gaW50cyIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCphZGRyKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2NrYWRkcmFyZzogdW5zdXBwb3J0ZWQgUEZfU1lTVEVNIHByb3RvY29sIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogYmFkIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiBiYWQgZmFtaWx5Iik7CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgfQpAQCAtMTU5OCw2ICsxNzk0LDExIEBACiAgICAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9SRFMKKyAgICBjYXNlIEFGX1JEUzoKKyAgICAgICAgLyogUkRTIHNvY2tldHMgdXNlIHNvY2thZGRyX2luOiBmYWxsLXRocm91Z2ggKi8KKyNlbmRpZgorCiAgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbik7CkBAIC0xNjMzLDcgKzE4MzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDE7CiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmxlbjogIgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIEJUIHByb3RvY29sIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtMTY1NywxNiArMTg1OCwxNTEgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX0NBTgorICAgIGNhc2UgQUZfQ0FOOgorICAgIHsKKyAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9jYW4pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIAorI2lmZGVmIFBGX1NZU1RFTQorICAgIGNhc2UgUEZfU1lTVEVNOgorICAgICAgICBzd2l0Y2gocy0+c29ja19wcm90bykgeworI2lmZGVmIFNZU1BST1RPX0NPTlRST0wKKyAgICAgICAgY2FzZSBTWVNQUk9UT19DT05UUk9MOgorICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9jdGwpOworICAgICAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJsZW46ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBQRl9TWVNURU0gcHJvdG9jb2wiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRybGVuOiBiYWQgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJsZW46IGJhZCBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB9CiB9CiAKIAorLyogU3VwcG9ydCBmdW5jdGlvbnMgZm9yIHRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcy4KKyAgIEN1cnJlbnRseSwgdGhlc2UgbWV0aG9kcyBhcmUgb25seSBjb21waWxlZCBpZiB0aGUgUkZDIDIyOTIvMzU0MgorICAgQ01TR19MRU4oKSBtYWNybyBpcyBhdmFpbGFibGUuICBPbGRlciBzeXN0ZW1zIHNlZW0gdG8gaGF2ZSB1c2VkCisgICBzaXplb2Yoc3RydWN0IGNtc2doZHIpICsgKGxlbmd0aCkgd2hlcmUgQ01TR19MRU4oKSBpcyB1c2VkIG5vdywgc28KKyAgIGl0IG1heSBiZSBwb3NzaWJsZSB0byBkZWZpbmUgQ01TR19MRU4oKSB0aGF0IHdheSBpZiBpdCdzIG5vdAorICAgcHJvdmlkZWQuICBTb21lIGFyY2hpdGVjdHVyZXMgbWlnaHQgbmVlZCBleHRyYSBwYWRkaW5nIGFmdGVyIHRoZQorICAgY21zZ2hkciwgaG93ZXZlciwgYW5kIENNU0dfTEVOKCkgd291bGQgaGF2ZSB0byB0YWtlIGFjY291bnQgb2YKKyAgIHRoaXMuICovCisjaWZkZWYgQ01TR19MRU4KKy8qIElmIGxlbmd0aCBpcyBpbiByYW5nZSwgc2V0ICpyZXN1bHQgdG8gQ01TR19MRU4obGVuZ3RoKSBhbmQgcmV0dXJuCisgICB0cnVlOyBvdGhlcndpc2UsIHJldHVybiBmYWxzZS4gKi8KK3N0YXRpYyBpbnQKK2dldF9DTVNHX0xFTihzaXplX3QgbGVuZ3RoLCBzaXplX3QgKnJlc3VsdCkKK3sKKyAgICBzaXplX3QgdG1wOworCisgICAgaWYgKGxlbmd0aCA+IChTT0NLTEVOX1RfTElNSVQgLSBDTVNHX0xFTigwKSkpCisgICAgICAgIHJldHVybiAwOworICAgIHRtcCA9IENNU0dfTEVOKGxlbmd0aCk7CisgICAgaWYgKHRtcCA+IFNPQ0tMRU5fVF9MSU1JVCB8fCB0bXAgPCBsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworICAgICpyZXN1bHQgPSB0bXA7CisgICAgcmV0dXJuIDE7Cit9CisKKyNpZmRlZiBDTVNHX1NQQUNFCisvKiBJZiBsZW5ndGggaXMgaW4gcmFuZ2UsIHNldCAqcmVzdWx0IHRvIENNU0dfU1BBQ0UobGVuZ3RoKSBhbmQgcmV0dXJuCisgICB0cnVlOyBvdGhlcndpc2UsIHJldHVybiBmYWxzZS4gKi8KK3N0YXRpYyBpbnQKK2dldF9DTVNHX1NQQUNFKHNpemVfdCBsZW5ndGgsIHNpemVfdCAqcmVzdWx0KQoreworICAgIHNpemVfdCB0bXA7CisKKyAgICAvKiBVc2UgQ01TR19TUEFDRSgxKSBoZXJlIGluIG9yZGVyIHRvIHRha2UgYWNjb3VudCBvZiB0aGUgcGFkZGluZworICAgICAgIG5lY2Vzc2FyeSBiZWZvcmUgKmFuZCogYWZ0ZXIgdGhlIGRhdGEuICovCisgICAgaWYgKGxlbmd0aCA+IChTT0NLTEVOX1RfTElNSVQgLSBDTVNHX1NQQUNFKDEpKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdG1wID0gQ01TR19TUEFDRShsZW5ndGgpOworICAgIGlmICh0bXAgPiBTT0NLTEVOX1RfTElNSVQgfHwgdG1wIDwgbGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKyAgICAqcmVzdWx0ID0gdG1wOworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKKy8qIFJldHVybiB0cnVlIGlmZiBtc2ctPm1zZ19jb250cm9sbGVuIGlzIHZhbGlkLCBjbXNnaCBpcyBhIHZhbGlkCisgICBwb2ludGVyIGluIG1zZy0+bXNnX2NvbnRyb2wgd2l0aCBhdCBsZWFzdCAic3BhY2UiIGJ5dGVzIGFmdGVyIGl0LAorICAgYW5kIGl0cyBjbXNnX2xlbiBtZW1iZXIgaW5zaWRlIHRoZSBidWZmZXIuICovCitzdGF0aWMgaW50CitjbXNnX21pbl9zcGFjZShzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBjbXNnaGRyICpjbXNnaCwgc2l6ZV90IHNwYWNlKQoreworICAgIHNpemVfdCBjbXNnX29mZnNldDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNtc2dfbGVuX2VuZCA9IChvZmZzZXRvZihzdHJ1Y3QgY21zZ2hkciwgY21zZ19sZW4pICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY21zZ2gtPmNtc2dfbGVuKSk7CisKKyAgICAvKiBOb3RlIHRoYXQgUE9TSVggYWxsb3dzIG1zZ19jb250cm9sbGVuIHRvIGJlIG9mIHNpZ25lZCB0eXBlLiAqLworICAgIGlmIChjbXNnaCA9PSBOVUxMIHx8IG1zZy0+bXNnX2NvbnRyb2wgPT0gTlVMTCB8fCBtc2ctPm1zZ19jb250cm9sbGVuIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHNwYWNlIDwgY21zZ19sZW5fZW5kKQorICAgICAgICBzcGFjZSA9IGNtc2dfbGVuX2VuZDsKKyAgICBjbXNnX29mZnNldCA9IChjaGFyICopY21zZ2ggLSAoY2hhciAqKW1zZy0+bXNnX2NvbnRyb2w7CisgICAgcmV0dXJuIChjbXNnX29mZnNldCA8PSAoc2l6ZV90KS0xIC0gc3BhY2UgJiYKKyAgICAgICAgICAgIGNtc2dfb2Zmc2V0ICsgc3BhY2UgPD0gbXNnLT5tc2dfY29udHJvbGxlbik7Cit9CisKKy8qIElmIHBvaW50ZXIgQ01TR19EQVRBKGNtc2doKSBpcyBpbiBidWZmZXIgbXNnLT5tc2dfY29udHJvbCwgc2V0CisgICAqc3BhY2UgdG8gbnVtYmVyIG9mIGJ5dGVzIGZvbGxvd2luZyBpdCBpbiB0aGUgYnVmZmVyIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAgQXNzdW1lcyBjbXNnaCwgbXNnLT5tc2dfY29udHJvbCBhbmQKKyAgIG1zZy0+bXNnX2NvbnRyb2xsZW4gYXJlIHZhbGlkLiAqLworc3RhdGljIGludAorZ2V0X2Ntc2dfZGF0YV9zcGFjZShzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBjbXNnaGRyICpjbXNnaCwgc2l6ZV90ICpzcGFjZSkKK3sKKyAgICBzaXplX3QgZGF0YV9vZmZzZXQ7CisgICAgY2hhciAqZGF0YV9wdHI7CisKKyAgICBpZiAoKGRhdGFfcHRyID0gKGNoYXIgKilDTVNHX0RBVEEoY21zZ2gpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKyAgICBkYXRhX29mZnNldCA9IGRhdGFfcHRyIC0gKGNoYXIgKiltc2ctPm1zZ19jb250cm9sOworICAgIGlmIChkYXRhX29mZnNldCA+IG1zZy0+bXNnX2NvbnRyb2xsZW4pCisgICAgICAgIHJldHVybiAwOworICAgICpzcGFjZSA9IG1zZy0+bXNnX2NvbnRyb2xsZW4gLSBkYXRhX29mZnNldDsKKyAgICByZXR1cm4gMTsKK30KKworLyogSWYgY21zZ2ggaXMgaW52YWxpZCBvciBub3QgY29udGFpbmVkIGluIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieQorICAgbXNnLT5tc2dfY29udHJvbCwgcmV0dXJuIC0xLiAgSWYgY21zZ2ggaXMgdmFsaWQgYW5kIGl0cyBhc3NvY2lhdGVkCisgICBkYXRhIGlzIGVudGlyZWx5IGNvbnRhaW5lZCBpbiB0aGUgYnVmZmVyLCBzZXQgKmRhdGFfbGVuIHRvIHRoZQorICAgbGVuZ3RoIG9mIHRoZSBhc3NvY2lhdGVkIGRhdGEgYW5kIHJldHVybiAwLiAgSWYgb25seSBwYXJ0IG9mIHRoZQorICAgYXNzb2NpYXRlZCBkYXRhIGlzIGNvbnRhaW5lZCBpbiB0aGUgYnVmZmVyIGJ1dCBjbXNnaCBpcyBvdGhlcndpc2UKKyAgIHZhbGlkLCBzZXQgKmRhdGFfbGVuIHRvIHRoZSBsZW5ndGggY29udGFpbmVkIGluIHRoZSBidWZmZXIgYW5kCisgICByZXR1cm4gMS4gKi8KK3N0YXRpYyBpbnQKK2dldF9jbXNnX2RhdGFfbGVuKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3QgKmRhdGFfbGVuKQoreworICAgIHNpemVfdCBzcGFjZSwgY21zZ19kYXRhX2xlbjsKKworICAgIGlmICghY21zZ19taW5fc3BhY2UobXNnLCBjbXNnaCwgQ01TR19MRU4oMCkpIHx8CisgICAgICAgIGNtc2doLT5jbXNnX2xlbiA8IENNU0dfTEVOKDApKQorICAgICAgICByZXR1cm4gLTE7CisgICAgY21zZ19kYXRhX2xlbiA9IGNtc2doLT5jbXNnX2xlbiAtIENNU0dfTEVOKDApOworICAgIGlmICghZ2V0X2Ntc2dfZGF0YV9zcGFjZShtc2csIGNtc2doLCAmc3BhY2UpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHNwYWNlID49IGNtc2dfZGF0YV9sZW4pIHsKKyAgICAgICAgKmRhdGFfbGVuID0gY21zZ19kYXRhX2xlbjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICpkYXRhX2xlbiA9IHNwYWNlOworICAgIHJldHVybiAxOworfQorI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKKwogLyogcy5fYWNjZXB0KCkgLT4gKGZkLCBhZGRyZXNzKSAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTg4OSw3ICsyMjI1LDcgQEAKICNlbHNlCiAgICAgaWYgKGJ1ZmxlbiA8PSAwIHx8IGJ1ZmxlbiA+IDEwMjQpIHsKICNlbmRpZgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2Nrb3B0IGJ1ZmxlbiBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjYyMCw2ICsyOTU2LDMzMSBAQAogTGlrZSByZWN2X2ludG8oYnVmZmVyWywgbmJ5dGVzWywgZmxhZ3NdXSkgYnV0IGFsc28gcmV0dXJuIHRoZSBzZW5kZXIncyBhZGRyZXNzIGluZm8uIik7CiAKIAorLyogVGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzIHJlcXVpcmUgYSB3b3JraW5nCisgICBDTVNHX0xFTigpLiAgU2VlIHRoZSBjb21tZW50IG5lYXIgZ2V0X0NNU0dfTEVOKCkuICovCisjaWZkZWYgQ01TR19MRU4KKy8qCisgKiBDYWxsIHJlY3Ztc2coKSB3aXRoIHRoZSBzdXBwbGllZCBpb3ZlYyBzdHJ1Y3R1cmVzLCBmbGFncywgYW5kCisgKiBhbmNpbGxhcnkgZGF0YSBidWZmZXIgc2l6ZSAoY29udHJvbGxlbikuICBSZXR1cm5zIHRoZSB0dXBsZSByZXR1cm4KKyAqIHZhbHVlIGZvciByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCksIHdpdGggdGhlIGZpcnN0IGl0ZW0gcHJvdmlkZWQKKyAqIGJ5IHRoZSBzdXBwbGllZCBtYWtldmFsKCkgZnVuY3Rpb24uICBtYWtldmFsKCkgd2lsbCBiZSBjYWxsZWQgd2l0aAorICogdGhlIGxlbmd0aCByZWFkIGFuZCBtYWtldmFsX2RhdGEgYXMgYXJndW1lbnRzLCBhbmQgbXVzdCByZXR1cm4gYQorICogbmV3IHJlZmVyZW5jZSAod2hpY2ggd2lsbCBiZSBkZWNyZWZlZCBpZiB0aGVyZSBpcyBhIHN1YnNlcXVlbnQKKyAqIGVycm9yKS4gIE9uIGVycm9yLCBjbG9zZXMgYW55IGZpbGUgZGVzY3JpcHRvcnMgcmVjZWl2ZWQgdmlhCisgKiBTQ01fUklHSFRTLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnX2d1dHMoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmxlbiwKKyAgICAgICAgICAgICAgICAgIGludCBmbGFncywgUHlfc3NpemVfdCBjb250cm9sbGVuLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKigqbWFrZXZhbCkoc3NpemVfdCwgdm9pZCAqKSwgdm9pZCAqbWFrZXZhbF9kYXRhKQoreworICAgIHNzaXplX3QgYnl0ZXNfcmVjZWl2ZWQgPSAtMTsKKyAgICBpbnQgdGltZW91dDsKKyAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOworICAgIHNvY2tsZW5fdCBhZGRyYnVmbGVuOworICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIFB5T2JqZWN0ICpjbXNnX2xpc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2g7CisgICAgc2l6ZV90IGNtc2dkYXRhbGVuID0gMDsKKyAgICBpbnQgY21zZ19zdGF0dXM7CisKKyAgICAvKiBYWFg6IFBPU0lYIHNheXMgdGhhdCBtc2dfbmFtZSBhbmQgbXNnX25hbWVsZW4gInNoYWxsIGJlCisgICAgICAgaWdub3JlZCIgd2hlbiB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZCAoTGludXggZmlsbHMgdGhlbSBpbgorICAgICAgIGFueXdheSBmb3IgQUZfVU5JWCBzb2NrZXRzIGF0IGxlYXN0KS4gIE5vcm1hbGx5IG1zZ19uYW1lbGVuCisgICAgICAgc2VlbXMgdG8gYmUgc2V0IHRvIDAgaWYgdGhlcmUncyBubyBhZGRyZXNzLCBidXQgdHJ5IHRvCisgICAgICAgaW5pdGlhbGl6ZSBtc2dfbmFtZSB0byBzb21ldGhpbmcgdGhhdCB3b24ndCBiZSBtaXN0YWtlbiBmb3IgYQorICAgICAgIHJlYWwgYWRkcmVzcyBpZiB0aGF0IGRvZXNuJ3QgaGFwcGVuLiAqLworICAgIGlmICghZ2V0c29ja2FkZHJsZW4ocywgJmFkZHJidWZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtZW1zZXQoJmFkZHJidWYsIDAsIGFkZHJidWZsZW4pOworICAgIFNBUzJTQSgmYWRkcmJ1ZiktPnNhX2ZhbWlseSA9IEFGX1VOU1BFQzsKKworICAgIGlmIChjb250cm9sbGVuIDwgMCB8fCBjb250cm9sbGVuID4gU09DS0xFTl9UX0xJTUlUKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYW5jaWxsYXJ5IGRhdGEgYnVmZmVyIGxlbmd0aCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGNvbnRyb2xsZW4gPiAwICYmIChjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIC8qIE1ha2UgdGhlIHN5c3RlbSBjYWxsLiAqLworICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkgeworICAgICAgICBzZWxlY3RfZXJyb3IoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBtc2cubXNnX25hbWUgPSBTQVMyU0EoJmFkZHJidWYpOworICAgIG1zZy5tc2dfbmFtZWxlbiA9IGFkZHJidWZsZW47CisgICAgbXNnLm1zZ19pb3YgPSBpb3Y7CisgICAgbXNnLm1zZ19pb3ZsZW4gPSBpb3ZsZW47CisgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKKyAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOworICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOworICAgIGlmICghdGltZW91dCkKKyAgICAgICAgYnl0ZXNfcmVjZWl2ZWQgPSByZWN2bXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAodGltZW91dCA9PSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIEVORF9TRUxFQ1RfTE9PUChzKQorCisgICAgaWYgKGJ5dGVzX3JlY2VpdmVkIDwgMCkgeworICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIC8qIE1ha2UgbGlzdCBvZiAobGV2ZWwsIHR5cGUsIGRhdGEpIHR1cGxlcyBmcm9tIGNvbnRyb2wgbWVzc2FnZXMuICovCisgICAgaWYgKChjbXNnX2xpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKyAgICAvKiBDaGVjayBmb3IgZW1wdHkgYW5jaWxsYXJ5IGRhdGEgYXMgb2xkIENNU0dfRklSU1RIRFIoKQorICAgICAgIGltcGxlbWVudGF0aW9ucyBkaWRuJ3QgZG8gc28uICovCisgICAgZm9yIChjbXNnaCA9ICgobXNnLm1zZ19jb250cm9sbGVuID4gMCkgPyBDTVNHX0ZJUlNUSERSKCZtc2cpIDogTlVMTCk7CisgICAgICAgICBjbXNnaCAhPSBOVUxMOyBjbXNnaCA9IENNU0dfTlhUSERSKCZtc2csIGNtc2doKSkgeworICAgICAgICBQeU9iamVjdCAqYnl0ZXMsICp0dXBsZTsKKyAgICAgICAgaW50IHRtcDsKKworICAgICAgICBjbXNnX3N0YXR1cyA9IGdldF9jbXNnX2RhdGFfbGVuKCZtc2csIGNtc2doLCAmY21zZ2RhdGFsZW4pOworICAgICAgICBpZiAoY21zZ19zdGF0dXMgIT0gMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19SdW50aW1lV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY2VpdmVkIG1hbGZvcm1lZCBvciBpbXByb3Blcmx5LXRydW5jYXRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmNpbGxhcnkgZGF0YSIsIDEpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgICAgICB9CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNtc2dkYXRhbGVuID4gUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiY29udHJvbCBtZXNzYWdlIHRvbyBsb25nIik7CisgICAgICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKUNNU0dfREFUQShjbXNnaCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNnZGF0YWxlbik7CisgICAgICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlOIiwgKGludCljbXNnaC0+Y21zZ19sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpY21zZ2gtPmNtc2dfdHlwZSwgYnl0ZXMpOworICAgICAgICBpZiAodHVwbGUgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgICAgICB0bXAgPSBQeUxpc3RfQXBwZW5kKGNtc2dfbGlzdCwgdHVwbGUpOworICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICBpZiAodG1wICE9IDApCisgICAgICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKworICAgICAgICBpZiAoY21zZ19zdGF0dXMgIT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHZhbCA9IFB5X0J1aWxkVmFsdWUoIk5PaU4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCptYWtldmFsKShieXRlc19yZWNlaXZlZCwgbWFrZXZhbF9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc2dfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbXNnLm1zZ19mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vzb2NrYWRkcihzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobXNnLm1zZ19uYW1lbGVuID4gYWRkcmJ1ZmxlbikgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyYnVmbGVuIDogbXNnLm1zZ19uYW1lbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zb2NrX3Byb3RvKSk7CisgICAgaWYgKHJldHZhbCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKworZmluYWxseToKKyAgICBQeV9YREVDUkVGKGNtc2dfbGlzdCk7CisgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKKyAgICByZXR1cm4gcmV0dmFsOworCitlcnJfY2xvc2VmZHM6CisjaWZkZWYgU0NNX1JJR0hUUworICAgIC8qIENsb3NlIGFsbCBkZXNjcmlwdG9ycyBjb21pbmcgZnJvbSBTQ01fUklHSFRTLCBzbyB0aGV5IGRvbid0IGxlYWsuICovCisgICAgZm9yIChjbXNnaCA9ICgobXNnLm1zZ19jb250cm9sbGVuID4gMCkgPyBDTVNHX0ZJUlNUSERSKCZtc2cpIDogTlVMTCk7CisgICAgICAgICBjbXNnaCAhPSBOVUxMOyBjbXNnaCA9IENNU0dfTlhUSERSKCZtc2csIGNtc2doKSkgeworICAgICAgICBjbXNnX3N0YXR1cyA9IGdldF9jbXNnX2RhdGFfbGVuKCZtc2csIGNtc2doLCAmY21zZ2RhdGFsZW4pOworICAgICAgICBpZiAoY21zZ19zdGF0dXMgPCAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjbXNnaC0+Y21zZ19sZXZlbCA9PSBTT0xfU09DS0VUICYmCisgICAgICAgICAgICBjbXNnaC0+Y21zZ190eXBlID09IFNDTV9SSUdIVFMpIHsKKyAgICAgICAgICAgIHNpemVfdCBudW1mZHM7CisgICAgICAgICAgICBpbnQgKmZkcDsKKworICAgICAgICAgICAgbnVtZmRzID0gY21zZ2RhdGFsZW4gLyBzaXplb2YoaW50KTsKKyAgICAgICAgICAgIGZkcCA9IChpbnQgKilDTVNHX0RBVEEoY21zZ2gpOworICAgICAgICAgICAgd2hpbGUgKG51bWZkcy0tID4gMCkKKyAgICAgICAgICAgICAgICBjbG9zZSgqZmRwKyspOworICAgICAgICB9CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmIC8qIFNDTV9SSUdIVFMgKi8KKyAgICBnb3RvIGZpbmFsbHk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK21ha2V2YWxfcmVjdm1zZyhzc2l6ZV90IHJlY2VpdmVkLCB2b2lkICpkYXRhKQoreworICAgIFB5T2JqZWN0ICoqYnVmID0gZGF0YTsKKworICAgIGlmIChyZWNlaXZlZCA8IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1ZikpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIHJlY2VpdmVkKTsKKyAgICBQeV9YSU5DUkVGKCpidWYpOworICAgIHJldHVybiAqYnVmOworfQorCisvKiBzLnJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSBtZXRob2QgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tfcmVjdm1zZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgYnVmc2l6ZSwgYW5jYnVmc2l6ZSA9IDA7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92OworICAgIFB5T2JqZWN0ICpidWYgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxuaTpyZWN2bXNnIiwgJmJ1ZnNpemUsICZhbmNidWZzaXplLCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChidWZzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGJ1ZmZlciBzaXplIGluIHJlY3Ztc2coKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKChidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZnNpemUpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpb3YuaW92X2Jhc2UgPSBQeUJ5dGVzX0FTX1NUUklORyhidWYpOworICAgIGlvdi5pb3ZfbGVuID0gYnVmc2l6ZTsKKworICAgIC8qIE5vdGUgdGhhdCB3ZSdyZSBwYXNzaW5nIGEgcG9pbnRlciB0byAqb3VyIHBvaW50ZXIqIHRvIHRoZSBieXRlcworICAgICAgIG9iamVjdCBoZXJlICgmYnVmKTsgbWFrZXZhbF9yZWN2bXNnKCkgbWF5IGluY3JlZiB0aGUgb2JqZWN0LCBvcgorICAgICAgIGRlYWxsb2NhdGUgaXQgYW5kIHNldCBvdXIgcG9pbnRlciB0byBOVUxMLiAqLworICAgIHJldHZhbCA9IHNvY2tfcmVjdm1zZ19ndXRzKHMsICZpb3YsIDEsIGZsYWdzLCBhbmNidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWtldmFsX3JlY3Ztc2csICZidWYpOworICAgIFB5X1hERUNSRUYoYnVmKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIocmVjdm1zZ19kb2MsCisicmVjdm1zZyhidWZzaXplWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIC0+IChkYXRhLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpXG5cCitcblwKK1JlY2VpdmUgbm9ybWFsIGRhdGEgKHVwIHRvIGJ1ZnNpemUgYnl0ZXMpIGFuZCBhbmNpbGxhcnkgZGF0YSBmcm9tIHRoZVxuXAorc29ja2V0LiAgVGhlIGFuY2J1ZnNpemUgYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGVcblwKK2ludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cyB0byAwLFxuXAorbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZSBidWZmZXJcblwKK3NpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZyBDTVNHX1NQQUNFKCkgb3JcblwKK0NNU0dfTEVOKCksIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0IGludG8gdGhlIGJ1ZmZlciBtaWdodCBiZVxuXAordHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSBmbGFncyBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlXG5cCitzYW1lIG1lYW5pbmcgYXMgZm9yIHJlY3YoKS5cblwKK1xuXAorVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IChkYXRhLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpLlxuXAorVGhlIGRhdGEgaXRlbSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBub24tYW5jaWxsYXJ5IGRhdGFcblwKK3JlY2VpdmVkLiAgVGhlIGFuY2RhdGEgaXRlbSBpcyBhIGxpc3Qgb2YgemVybyBvciBtb3JlIHR1cGxlc1xuXAorKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhKSByZXByZXNlbnRpbmcgdGhlIGFuY2lsbGFyeSBkYXRhXG5cCisoY29udHJvbCBtZXNzYWdlcykgcmVjZWl2ZWQ6IGNtc2dfbGV2ZWwgYW5kIGNtc2dfdHlwZSBhcmUgaW50ZWdlcnNcblwKK3NwZWNpZnlpbmcgdGhlIHByb3RvY29sIGxldmVsIGFuZCBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSxcblwKK2FuZCBjbXNnX2RhdGEgaXMgYSBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgYXNzb2NpYXRlZCBkYXRhLiAgVGhlXG5cCittc2dfZmxhZ3MgaXRlbSBpcyB0aGUgYml0d2lzZSBPUiBvZiB2YXJpb3VzIGZsYWdzIGluZGljYXRpbmdcblwKK2NvbmRpdGlvbnMgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2U7IHNlZSB5b3VyIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvclxuXAorZGV0YWlscy4gIElmIHRoZSByZWNlaXZpbmcgc29ja2V0IGlzIHVuY29ubmVjdGVkLCBhZGRyZXNzIGlzIHRoZVxuXAorYWRkcmVzcyBvZiB0aGUgc2VuZGluZyBzb2NrZXQsIGlmIGF2YWlsYWJsZTsgb3RoZXJ3aXNlLCBpdHMgdmFsdWUgaXNcblwKK3Vuc3BlY2lmaWVkLlxuXAorXG5cCitJZiByZWN2bXNnKCkgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhZnRlciB0aGUgc3lzdGVtIGNhbGwgcmV0dXJucywgaXRcblwKK3dpbGwgZmlyc3QgYXR0ZW1wdCB0byBjbG9zZSBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEgdGhlXG5cCitTQ01fUklHSFRTIG1lY2hhbmlzbS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZXZhbF9yZWN2bXNnX2ludG8oc3NpemVfdCByZWNlaXZlZCwgdm9pZCAqZGF0YSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlY2VpdmVkKTsKK30KKworLyogcy5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSBtZXRob2QgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tfcmVjdm1zZ19pbnRvKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBhbmNidWZzaXplID0gMDsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpLCBuaXRlbXMsIG5idWZzID0gMDsKKyAgICBQeV9idWZmZXIgKmJ1ZnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpidWZmZXJzX2FyZywgKmZhc3QsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfG5pOnJlY3Ztc2dfaW50byIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZmZXJzX2FyZywgJmFuY2J1ZnNpemUsICZmbGFncykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKChmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGJ1ZmZlcnNfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmYXN0KTsKKyAgICBpZiAobml0ZW1zID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInJlY3Ztc2dfaW50bygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggaXRlbSwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmIChuaXRlbXMgPiAwICYmICgoaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5pdGVtcykpID09IE5VTEwgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuaXRlbXMpKSA9PSBOVUxMKSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGZvciAoOyBuYnVmcyA8IG5pdGVtczsgbmJ1ZnMrKykgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShmYXN0LCBuYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIncqO3JlY3Ztc2dfaW50bygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHNpbmdsZS1zZWdtZW50IHJlYWQtd3JpdGUgYnVmZmVycyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZnNbbmJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuYnVmc10uaW92X2Jhc2UgPSBidWZzW25idWZzXS5idWY7CisgICAgICAgIGlvdnNbbmJ1ZnNdLmlvdl9sZW4gPSBidWZzW25idWZzXS5sZW47CisgICAgfQorCisgICAgcmV0dmFsID0gc29ja19yZWN2bXNnX2d1dHMocywgaW92cywgbml0ZW1zLCBmbGFncywgYW5jYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFrZXZhbF9yZWN2bXNnX2ludG8sIE5VTEwpOworZmluYWxseToKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmJ1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmc1tpXSk7CisgICAgUHlNZW1fRnJlZShidWZzKTsKKyAgICBQeU1lbV9GcmVlKGlvdnMpOworICAgIFB5X0RFQ1JFRihmYXN0KTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIocmVjdm1zZ19pbnRvX2RvYywKKyJyZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSAtPiAobmJ5dGVzLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpXG5cCitcblwKK1JlY2VpdmUgbm9ybWFsIGRhdGEgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlIHNvY2tldCwgc2NhdHRlcmluZyB0aGVcblwKK25vbi1hbmNpbGxhcnkgZGF0YSBpbnRvIGEgc2VyaWVzIG9mIGJ1ZmZlcnMuICBUaGUgYnVmZmVycyBhcmd1bWVudFxuXAorbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBvYmplY3RzIHRoYXQgZXhwb3J0IHdyaXRhYmxlIGJ1ZmZlcnNcblwKKyhlLmcuIGJ5dGVhcnJheSBvYmplY3RzKTsgdGhlc2Ugd2lsbCBiZSBmaWxsZWQgd2l0aCBzdWNjZXNzaXZlIGNodW5rc1xuXAorb2YgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YSB1bnRpbCBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbiBvciB0aGVyZSBhcmVcblwKK25vIG1vcmUgYnVmZmVycy4gIFRoZSBhbmNidWZzaXplIGFyZ3VtZW50IHNldHMgdGhlIHNpemUgaW4gYnl0ZXMgb2ZcblwKK3RoZSBpbnRlcm5hbCBidWZmZXIgdXNlZCB0byByZWNlaXZlIHRoZSBhbmNpbGxhcnkgZGF0YTsgaXQgZGVmYXVsdHMgdG9cblwKKzAsIG1lYW5pbmcgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSB3aWxsIGJlIHJlY2VpdmVkLiAgQXBwcm9wcmlhdGVcblwKK2J1ZmZlciBzaXplcyBmb3IgYW5jaWxsYXJ5IGRhdGEgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcgQ01TR19TUEFDRSgpXG5cCitvciBDTVNHX0xFTigpLCBhbmQgaXRlbXMgd2hpY2ggZG8gbm90IGZpdCBpbnRvIHRoZSBidWZmZXIgbWlnaHQgYmVcblwKK3RydW5jYXRlZCBvciBkaXNjYXJkZWQuICBUaGUgZmxhZ3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZVxuXAorc2FtZSBtZWFuaW5nIGFzIGZvciByZWN2KCkuXG5cCitcblwKK1RoZSByZXR1cm4gdmFsdWUgaXMgYSA0LXR1cGxlOiAobmJ5dGVzLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpLlxuXAorVGhlIG5ieXRlcyBpdGVtIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeSBkYXRhXG5cCit3cml0dGVuIGludG8gdGhlIGJ1ZmZlcnMuICBUaGUgYW5jZGF0YSBpdGVtIGlzIGEgbGlzdCBvZiB6ZXJvIG9yIG1vcmVcblwKK3R1cGxlcyAoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpIHJlcHJlc2VudGluZyB0aGUgYW5jaWxsYXJ5XG5cCitkYXRhIChjb250cm9sIG1lc3NhZ2VzKSByZWNlaXZlZDogY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZVxuXAoraW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGVcblwKK3Jlc3BlY3RpdmVseSwgYW5kIGNtc2dfZGF0YSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkXG5cCitkYXRhLiAgVGhlIG1zZ19mbGFncyBpdGVtIGlzIHRoZSBiaXR3aXNlIE9SIG9mIHZhcmlvdXMgZmxhZ3NcblwKK2luZGljYXRpbmcgY29uZGl0aW9ucyBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZTsgc2VlIHlvdXIgc3lzdGVtXG5cCitkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiAgSWYgdGhlIHJlY2VpdmluZyBzb2NrZXQgaXMgdW5jb25uZWN0ZWQsXG5cCithZGRyZXNzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsXG5cCitpdHMgdmFsdWUgaXMgdW5zcGVjaWZpZWQuXG5cCitcblwKK0lmIHJlY3Ztc2dfaW50bygpIHJhaXNlcyBhbiBleGNlcHRpb24gYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsIHJldHVybnMsXG5cCitpdCB3aWxsIGZpcnN0IGF0dGVtcHQgdG8gY2xvc2UgYW55IGZpbGUgZGVzY3JpcHRvcnMgcmVjZWl2ZWQgdmlhIHRoZVxuXAorU0NNX1JJR0hUUyBtZWNoYW5pc20uIik7CisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKworCiAvKiBzLnNlbmQoZGF0YSBbLGZsYWdzXSkgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNzcxLDYgKzM0MzIsNyBAQAogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZHRvKCkgdGFrZXMgMiBvciAzIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdsZW4pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4MTQsNiArMzQ3NiwyMzQgQEAKIEZvciBJUCBzb2NrZXRzLCB0aGUgYWRkcmVzcyBpcyBhIHBhaXIgKGhvc3RhZGRyLCBwb3J0KS4iKTsKIAogCisvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKKyAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyogcy5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSBtZXRob2QgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tfc2VuZG1zZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgaSwgbmRhdGFwYXJ0cywgbmRhdGFidWZzID0gMCwgbmNtc2dzLCBuY21zZ2J1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CisgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKKyAgICBzdHJ1Y3QgY21zZ2luZm8geworICAgICAgICBpbnQgbGV2ZWw7CisgICAgICAgIGludCB0eXBlOworICAgICAgICBQeV9idWZmZXIgZGF0YTsKKyAgICB9ICpjbXNncyA9IE5VTEw7CisgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CisgICAgc2l6ZV90IGNvbnRyb2xsZW4sIGNvbnRyb2xsZW5fbGFzdDsKKyAgICBzc2l6ZV90IGJ5dGVzX3NlbnQgPSAtMTsKKyAgICBpbnQgYWRkcmxlbiwgdGltZW91dCwgZmxhZ3MgPSAwOworICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwgKmRhdGFfZmFzdCA9IE5VTEwsCisgICAgICAgICpjbXNnX2Zhc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPaU86c2VuZG1zZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUGFyc2UgZGVzdGluYXRpb24gYWRkcmVzcy4gKi8KKyAgICBpZiAoYWRkcl9hcmcgIT0gTlVMTCAmJiBhZGRyX2FyZyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghZ2V0c29ja2FkZHJhcmcocywgYWRkcl9hcmcsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgbXNnLm1zZ19uYW1lID0gJmFkZHJidWY7CisgICAgICAgIG1zZy5tc2dfbmFtZWxlbiA9IGFkZHJsZW47CisgICAgfQorCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBpZiAoKGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7CisgICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBtc2cubXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7CisgICAgaWYgKG5kYXRhcGFydHMgPiAwICYmCisgICAgICAgICgobXNnLm1zZ19pb3YgPSBpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbmRhdGFwYXJ0cykpID09IE5VTEwgfHwKKyAgICAgICAgIChkYXRhYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5kYXRhcGFydHMpKSA9PSBOVUxMKSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJidWZmZXItY29tcGF0aWJsZSBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJ1ZnNbbmRhdGFidWZzXSkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfYmFzZSA9IGRhdGFidWZzW25kYXRhYnVmc10uYnVmOworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2xlbiA9IGRhdGFidWZzW25kYXRhYnVmc10ubGVuOworICAgIH0KKworICAgIGlmIChjbXNnX2FyZyA9PSBOVUxMKQorICAgICAgICBuY21zZ3MgPSAwOworICAgIGVsc2UgeworICAgICAgICBpZiAoKGNtc2dfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChjbXNnX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAyIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgbmNtc2dzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGNtc2dfZmFzdCk7CisgICAgfQorCisjaWZuZGVmIENNU0dfU1BBQ0UKKyAgICBpZiAobmNtc2dzID4gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kaW5nIG11bHRpcGxlIGNvbnRyb2wgbWVzc2FnZXMgaXMgbm90IHN1cHBvcnRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAib24gdGhpcyBzeXN0ZW0iKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyNlbmRpZgorICAgIC8qIFNhdmUgbGV2ZWwsIHR5cGUgYW5kIFB5X2J1ZmZlciBmb3IgZWFjaCBjb250cm9sIG1lc3NhZ2UsCisgICAgICAgYW5kIGNhbGN1bGF0ZSB0b3RhbCBzaXplLiAqLworICAgIGlmIChuY21zZ3MgPiAwICYmIChjbXNncyA9IFB5TWVtX05ldyhzdHJ1Y3QgY21zZ2luZm8sIG5jbXNncykpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBjb250cm9sbGVuID0gY29udHJvbGxlbl9sYXN0ID0gMDsKKyAgICB3aGlsZSAobmNtc2didWZzIDwgbmNtc2dzKSB7CisgICAgICAgIHNpemVfdCBidWZzaXplLCBzcGFjZTsKKworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShjbXNnX2Zhc3QsIG5jbXNnYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIihpaXkqKTpbc2VuZG1zZygpIGFuY2lsbGFyeSBkYXRhIGl0ZW1zXSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc2dzW25jbXNnYnVmc10ubGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc2dzW25jbXNnYnVmc10udHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS5kYXRhKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgYnVmc2l6ZSA9IGNtc2dzW25jbXNnYnVmcysrXS5kYXRhLmxlbjsKKworI2lmZGVmIENNU0dfU1BBQ0UKKyAgICAgICAgaWYgKCFnZXRfQ01TR19TUEFDRShidWZzaXplLCAmc3BhY2UpKSB7CisjZWxzZQorICAgICAgICBpZiAoIWdldF9DTVNHX0xFTihidWZzaXplLCAmc3BhY2UpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiYW5jaWxsYXJ5IGRhdGEgaXRlbSB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBjb250cm9sbGVuICs9IHNwYWNlOworICAgICAgICBpZiAoY29udHJvbGxlbiA+IFNPQ0tMRU5fVF9MSU1JVCB8fCBjb250cm9sbGVuIDwgY29udHJvbGxlbl9sYXN0KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInRvbyBtdWNoIGFuY2lsbGFyeSBkYXRhIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgY29udHJvbGxlbl9sYXN0ID0gY29udHJvbGxlbjsKKyAgICB9CisKKyAgICAvKiBDb25zdHJ1Y3QgYW5jaWxsYXJ5IGRhdGEgYmxvY2sgZnJvbSBjb250cm9sIG1lc3NhZ2UgaW5mby4gKi8KKyAgICBpZiAobmNtc2didWZzID4gMCkgeworICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2ggPSBOVUxMOworCisgICAgICAgIGlmICgobXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZiA9CisgICAgICAgICAgICAgUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisKKyAgICAgICAgLyogTmVlZCB0byB6ZXJvIG91dCB0aGUgYnVmZmVyIGFzIGEgd29ya2Fyb3VuZCBmb3IgZ2xpYmMncworICAgICAgICAgICBDTVNHX05YVEhEUigpIGltcGxlbWVudGF0aW9uLiAgQWZ0ZXIgZ2V0dGluZyB0aGUgcG9pbnRlciB0bworICAgICAgICAgICB0aGUgbmV4dCBoZWFkZXIsIGl0IGNoZWNrcyBpdHMgKHVuaW5pdGlhbGl6ZWQpIGNtc2dfbGVuCisgICAgICAgICAgIG1lbWJlciB0byBzZWUgaWYgdGhlICJtZXNzYWdlIiBmaXRzIGluIHRoZSBidWZmZXIsIGFuZAorICAgICAgICAgICByZXR1cm5zIE5VTEwgaWYgaXQgZG9lc24ndC4gIFplcm8tZmlsbGluZyB0aGUgYnVmZmVyCisgICAgICAgICAgIGVuc3VyZXMgdGhhdCB0aGF0IGRvZXNuJ3QgaGFwcGVuLiAqLworICAgICAgICBtZW1zZXQoY29udHJvbGJ1ZiwgMCwgY29udHJvbGxlbik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5jbXNnYnVmczsgaSsrKSB7CisgICAgICAgICAgICBzaXplX3QgbXNnX2xlbiwgZGF0YV9sZW4gPSBjbXNnc1tpXS5kYXRhLmxlbjsKKyAgICAgICAgICAgIGludCBlbm91Z2hfc3BhY2UgPSAwOworCisgICAgICAgICAgICBjbXNnaCA9IChpID09IDApID8gQ01TR19GSVJTVEhEUigmbXNnKSA6IENNU0dfTlhUSERSKCZtc2csIGNtc2doKTsKKyAgICAgICAgICAgIGlmIChjbXNnaCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSAlcygpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gMCkgPyAiQ01TR19GSVJTVEhEUiIgOiAiQ01TR19OWFRIRFIiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWdldF9DTVNHX0xFTihkYXRhX2xlbiwgJm1zZ19sZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZW0gc2l6ZSBvdXQgb2YgcmFuZ2UgZm9yIENNU0dfTEVOKCkiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY21zZ19taW5fc3BhY2UoJm1zZywgY21zZ2gsIG1zZ19sZW4pKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNwYWNlOworCisgICAgICAgICAgICAgICAgY21zZ2gtPmNtc2dfbGVuID0gbXNnX2xlbjsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0X2Ntc2dfZGF0YV9zcGFjZSgmbXNnLCBjbXNnaCwgJnNwYWNlKSkKKyAgICAgICAgICAgICAgICAgICAgZW5vdWdoX3NwYWNlID0gKHNwYWNlID49IGRhdGFfbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZW5vdWdoX3NwYWNlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuY2lsbGFyeSBkYXRhIGRvZXMgbm90IGZpdCBpbiBjYWxjdWxhdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwYWNlIik7CisgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY21zZ2gtPmNtc2dfbGV2ZWwgPSBjbXNnc1tpXS5sZXZlbDsKKyAgICAgICAgICAgIGNtc2doLT5jbXNnX3R5cGUgPSBjbXNnc1tpXS50eXBlOworICAgICAgICAgICAgbWVtY3B5KENNU0dfREFUQShjbXNnaCksIGNtc2dzW2ldLmRhdGEuYnVmLCBkYXRhX2xlbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBNYWtlIHRoZSBzeXN0ZW0gY2FsbC4gKi8KKyAgICBpZiAoIUlTX1NFTEVDVEFCTEUocykpIHsKKyAgICAgICAgc2VsZWN0X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAxLCBpbnRlcnZhbCk7CisgICAgaWYgKCF0aW1lb3V0KQorICAgICAgICBieXRlc19zZW50ID0gc2VuZG1zZyhzLT5zb2NrX2ZkLCAmbXNnLCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisgICAgaWYgKHRpbWVvdXQgPT0gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBFTkRfU0VMRUNUX0xPT1AocykKKworICAgIGlmIChieXRlc19zZW50IDwgMCkgeworICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoYnl0ZXNfc2VudCk7CisKK2ZpbmFsbHk6CisgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmNtc2didWZzOyBpKyspCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmNtc2dzW2ldLmRhdGEpOworICAgIFB5TWVtX0ZyZWUoY21zZ3MpOworICAgIFB5X1hERUNSRUYoY21zZ19mYXN0KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGFidWZzW2ldKTsKKyAgICBQeU1lbV9GcmVlKGRhdGFidWZzKTsKKyAgICBQeU1lbV9GcmVlKGlvdnMpOworICAgIFB5X1hERUNSRUYoZGF0YV9mYXN0KTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoc2VuZG1zZ19kb2MsCisic2VuZG1zZyhidWZmZXJzWywgYW5jZGF0YVssIGZsYWdzWywgYWRkcmVzc11dXSkgLT4gY291bnRcblwKK1xuXAorU2VuZCBub3JtYWwgYW5kIGFuY2lsbGFyeSBkYXRhIHRvIHRoZSBzb2NrZXQsIGdhdGhlcmluZyB0aGVcblwKK25vbi1hbmNpbGxhcnkgZGF0YSBmcm9tIGEgc2VyaWVzIG9mIGJ1ZmZlcnMgYW5kIGNvbmNhdGVuYXRpbmcgaXQgaW50b1xuXAorYSBzaW5nbGUgbWVzc2FnZS4gIFRoZSBidWZmZXJzIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbm9uLWFuY2lsbGFyeVxuXAorZGF0YSBhcyBhbiBpdGVyYWJsZSBvZiBidWZmZXItY29tcGF0aWJsZSBvYmplY3RzIChlLmcuIGJ5dGVzIG9iamVjdHMpLlxuXAorVGhlIGFuY2RhdGEgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBhbmNpbGxhcnkgZGF0YSAoY29udHJvbCBtZXNzYWdlcylcblwKK2FzIGFuIGl0ZXJhYmxlIG9mIHplcm8gb3IgbW9yZSB0dXBsZXMgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSxcblwKK2Ntc2dfZGF0YSksIHdoZXJlIGNtc2dfbGV2ZWwgYW5kIGNtc2dfdHlwZSBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGVcblwKK3Byb3RvY29sIGxldmVsIGFuZCBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kIGNtc2dfZGF0YVxuXAoraXMgYSBidWZmZXItY29tcGF0aWJsZSBvYmplY3QgaG9sZGluZyB0aGUgYXNzb2NpYXRlZCBkYXRhLiAgVGhlIGZsYWdzXG5cCithcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3Igc2VuZCgpLiAgSWZcblwKK2FkZHJlc3MgaXMgc3VwcGxpZWQgYW5kIG5vdCBOb25lLCBpdCBzZXRzIGEgZGVzdGluYXRpb24gYWRkcmVzcyBmb3JcblwKK3RoZSBtZXNzYWdlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIG5vbi1hbmNpbGxhcnlcblwKK2RhdGEgc2VudC4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLworCisKIC8qIHMuc2h1dGRvd24oaG93KSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI4ODIsNiArMzc3MiwzNCBAQAogQ29udHJvbCB0aGUgc29ja2V0IHdpdGggV1NBSW9jdGwgc3lzY2FsbC4gQ3VycmVudGx5IHN1cHBvcnRlZCAnY21kJyB2YWx1ZXMgYXJlXG5cCiBTSU9fUkNWQUxMOiAgJ29wdGlvbicgbXVzdCBiZSBvbmUgb2YgdGhlIHNvY2tldC5SQ1ZBTExfKiBjb25zdGFudHMuXG5cCiBTSU9fS0VFUEFMSVZFX1ZBTFM6ICAnb3B0aW9uJyBpcyBhIHR1cGxlIG9mIChvbm9mZiwgdGltZW91dCwgaW50ZXJ2YWwpLiIpOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCitzdGF0aWMgUHlPYmplY3QqCitzb2NrX3NoYXJlKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBXU0FQUk9UT0NPTF9JTkZPIGluZm87CisgICAgRFdPUkQgcHJvY2Vzc0lkOworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJnLCAiSSIsICZwcm9jZXNzSWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBXU0FEdXBsaWNhdGVTb2NrZXQocy0+c29ja19mZCwgcHJvY2Vzc0lkLCAmaW5mbyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzdWx0ID09IFNPQ0tFVF9FUlJPUikKKyAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKikmaW5mbywgc2l6ZW9mKGluZm8pKTsKK30KK1B5RG9jX1NUUlZBUihzb2NrX3NoYXJlX2RvYywKKyJzaGFyZShwcm9jZXNzX2lkKSAtPiBieXRlc1xuXAorXG5cCitTaGFyZSB0aGUgc29ja2V0IHdpdGggYW5vdGhlciBwcm9jZXNzLiAgVGhlIHRhcmdldCBwcm9jZXNzIGlkXG5cCittdXN0IGJlIHByb3ZpZGVkIGFuZCB0aGUgcmVzdWx0aW5nIGJ5dGVzIG9iamVjdCBwYXNzZWQgdG8gdGhlIHRhcmdldFxuXAorcHJvY2Vzcy4gIFRoZXJlIHRoZSBzaGFyZWQgc29ja2V0IGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgY2FsbGluZ1xuXAorc29ja2V0LmZyb21zaGFyZSgpLiIpOworCiAKICNlbmRpZgogCkBAIC0yOTE0LDYgKzM4MzIsMTAgQEAKICAgICB7ImlvY3RsIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfaW9jdGwsIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBzb2NrX2lvY3RsX2RvY30sCiAjZW5kaWYKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgeyJzaGFyZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2hhcmUsIE1FVEhfVkFSQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICBzb2NrX3NoYXJlX2RvY30sCisjZW5kaWYKICAgICB7Imxpc3RlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfbGlzdGVuLCBNRVRIX08sCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuX2RvY30sCiAgICAgeyJyZWN2IiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3JlY3YsIE1FVEhfVkFSQVJHUywKQEAgLTI5NDAsNiArMzg2MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgIHNldHNvY2tvcHRfZG9jfSwKICAgICB7InNodXRkb3duIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2h1dGRvd24sIE1FVEhfTywKICAgICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl9kb2N9LAorI2lmZGVmIENNU0dfTEVOCisgICAgeyJyZWN2bXNnIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3JlY3Ztc2csIE1FVEhfVkFSQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICByZWN2bXNnX2RvY30sCisgICAgeyJyZWN2bXNnX2ludG8iLCAgICAgIChQeUNGdW5jdGlvbilzb2NrX3JlY3Ztc2dfaW50bywgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHJlY3Ztc2dfaW50b19kb2MsfSwKKyAgICB7InNlbmRtc2ciLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2VuZG1zZywgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHNlbmRtc2dfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTMwMzMsMTMgKzM5NjMsNDAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGZkb2JqICE9IE5VTEwgJiYgZmRvYmogIT0gUHlfTm9uZSkgewotICAgICAgICBmZCA9IFB5TG9uZ19Bc1NvY2tldF90KGZkb2JqKTsKLSAgICAgICAgaWYgKGZkID09IChTT0NLRVRfVCkoLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChmZCA9PSBJTlZBTElEX1NPQ0tFVCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBpbnZhbGlkIHNvY2tldCB2YWx1ZSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgLyogcmVjcmVhdGUgYSBzb2NrZXQgdGhhdCB3YXMgZHVwbGljYXRlZCAqLworICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhmZG9iaikpIHsKKyAgICAgICAgICAgIFdTQVBST1RPQ09MX0lORk8gaW5mbzsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGZkb2JqKSAhPSBzaXplb2YoaW5mbykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgInNvY2tldCBkZXNjcmlwdG9yIHN0cmluZyBoYXMgd3Jvbmcgc2l6ZSwgIgorICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlICV6dSBieXRlcy4iLCBzaXplb2YoaW5mbykpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweSgmaW5mbywgUHlCeXRlc19BU19TVFJJTkcoZmRvYmopLCBzaXplb2YoaW5mbykpOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgZmQgPSBXU0FTb2NrZXQoRlJPTV9QUk9UT0NPTF9JTkZPLCBGUk9NX1BST1RPQ09MX0lORk8sCisgICAgICAgICAgICAgICAgICAgICBGUk9NX1BST1RPQ09MX0lORk8sICZpbmZvLCAwLCBXU0FfRkxBR19PVkVSTEFQUEVEKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBpZiAoZmQgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgICAgICAgICBzZXRfZXJyb3IoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmYW1pbHkgPSBpbmZvLmlBZGRyZXNzRmFtaWx5OworICAgICAgICAgICAgdHlwZSA9IGluZm8uaVNvY2tldFR5cGU7CisgICAgICAgICAgICBwcm90byA9IGluZm8uaVByb3RvY29sOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBmZCA9IFB5TG9uZ19Bc1NvY2tldF90KGZkb2JqKTsKKyAgICAgICAgICAgIGlmIChmZCA9PSAoU09DS0VUX1QpKC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChmZCA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGludmFsaWQgc29ja2V0IHZhbHVlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewpAQCAtMzExNSwyNSArNDA3MiwzNSBAQAogICAgICAgIHZlcnNpb24gb2YgdGhlIGhvc3RuYW1lLCB3aGVyZWFzIHdlIG5lZWQgYSBVbmljb2RlIHN0cmluZy4KICAgICAgICBPdGhlcndpc2UsIGdldGhvc3RuYW1lIGFwcGFyZW50bHkgYWxzbyByZXR1cm5zIHRoZSBETlMgbmFtZS4gKi8KICAgICB3Y2hhcl90IGJ1ZltNQVhfQ09NUFVURVJOQU1FX0xFTkdUSCArIDFdOwotICAgIERXT1JEIHNpemUgPSBzaXplb2YoYnVmKSAvIHNpemVvZih3Y2hhcl90KTsKKyAgICBEV09SRCBzaXplID0gUHlfQVJSQVlfTEVOR1RIKGJ1Zik7CisgICAgd2NoYXJfdCAqbmFtZTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGlmICghR2V0Q29tcHV0ZXJOYW1lRXhXKENvbXB1dGVyTmFtZVBoeXNpY2FsRG5zSG9zdG5hbWUsIGJ1ZiwgJnNpemUpKSB7Ci0gICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9NT1JFX0RBVEEpIHsKLSAgICAgICAgICAgIC8qIE1TRE4gc2F5cyB0aGlzIG1heSBvY2N1ciAiYmVjYXVzZSBETlMgYWxsb3dzIGxvbmdlciBuYW1lcyAqLwotICAgICAgICAgICAgaWYgKHNpemUgPT0gMCkgLyogWFhYOiBJJ20gbm90IHN1cmUgaG93IHRvIGhhbmRsZSB0aGlzICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplIC0gMSk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemUpKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfV2luZG93c0Vycm9yLCBHZXRMYXN0RXJyb3IoKSk7CisKKyAgICBpZiAoR2V0Q29tcHV0ZXJOYW1lRXhXKENvbXB1dGVyTmFtZVBoeXNpY2FsRG5zSG9zdG5hbWUsIGJ1ZiwgJnNpemUpKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihidWYsIHNpemUpOworCisgICAgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX01PUkVfREFUQSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CisKKyAgICAvKiBNU0ROIHNheXMgRVJST1JfTU9SRV9EQVRBIG1heSBvY2N1ciBiZWNhdXNlIEROUyBhbGxvd3MgbG9uZ2VyCisgICAgICAgbmFtZXMgKi8KKyAgICBuYW1lID0gUHlNZW1fTWFsbG9jKHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZSkpCisgICAgeworICAgICAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYnVmLCBzaXplKTsgICAgICAgICAgICAKKworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIobmFtZSwgc2l6ZSk7CisgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBjaGFyIGJ1ZlsxMDI0XTsKICAgICBpbnQgcmVzOwpAQCAtMzE1Miw2ICs0MTE5LDM3IEBACiBcblwKIFJldHVybiB0aGUgY3VycmVudCBob3N0IG5hbWUuIik7CiAKKyNpZmRlZiBIQVZFX1NFVEhPU1ROQU1FCitQeURvY19TVFJWQVIoc2V0aG9zdG5hbWVfZG9jLAorInNldGhvc3RuYW1lKG5hbWUpXG5cblwKK1NldHMgdGhlIGhvc3RuYW1lIHRvIG5hbWUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfc2V0aG9zdG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpobm9iajsKKyAgICBQeV9idWZmZXIgYnVmOworICAgIGludCByZXMsIGZsYWcgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJTOnNldGhvc3RuYW1lIiwgJmhub2JqKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnNldGhvc3RuYW1lIiwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZobm9iaikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZmxhZyA9IDE7CisgICAgfQorICAgIHJlcyA9IFB5T2JqZWN0X0dldEJ1ZmZlcihobm9iaiwgJmJ1ZiwgUHlCVUZfU0lNUExFKTsKKyAgICBpZiAoIXJlcykgeworICAgICAgICByZXMgPSBzZXRob3N0bmFtZShidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisgICAgaWYgKGZsYWcpCisgICAgICAgIFB5X0RFQ1JFRihobm9iaik7CisgICAgaWYgKHJlcykKKyAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCiAKIC8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gZ2V0aG9zdGJ5bmFtZShuYW1lKS4gKi8KIApAQCAtMzE5OCw5ICs0MTk2LDggQEAKIAogICAgIGlmIChoLT5oX2FkZHJ0eXBlICE9IGFmKSB7CiAgICAgICAgIC8qIExldCdzIGdldCByZWFsIGVycm9yIG1lc3NhZ2UgdG8gcmV0dXJuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0cmVycm9yKEVBRk5PU1VQUE9SVCkpOwotCisgICAgICAgIGVycm5vID0gRUFGTk9TVVBQT1JUOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzI4Myw3ICs0MjgwLDcgQEAKICNlbmRpZgogCiAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgIC8qIGNhbid0IGhhcHBlbiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTMzMTUsMTEgKzQzMTIsNyBAQAogewogICAgIGNoYXIgKm5hbWU7CiAgICAgc3RydWN0IGhvc3RlbnQgKmg7Ci0jaWZkZWYgRU5BQkxFX0lQVjYKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyOwotI2Vsc2UKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKLSNlbmRpZgorICAgIHNvY2tfYWRkcl90IGFkZHI7CiAgICAgc3RydWN0IHNvY2thZGRyICpzYTsKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKICNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgpAQCAtMzMzMSwxOSArNDMyNCwxOSBAQAogICAgIGludCBidWZfbGVuID0gKHNpemVvZiBidWYpIC0gMTsKICAgICBpbnQgZXJybm9wOwogI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRykgfHwgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRykKKyNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldDpnZXRob3N0YnluYW1lX2V4IiwgImlkbmEiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRpcGFkZHIobmFtZSwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkciksIEFGX0lORVQpIDwgMCkKKyAgICBpZiAoc2V0aXBhZGRyKG5hbWUsIFNBUzJTQSgmYWRkciksIHNpemVvZihhZGRyKSwgQUZfSU5FVCkgPCAwKQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCiAjaWYgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQotICAgIHJlc3VsdCA9IGdldGhvc3RieW5hbWVfcihuYW1lLCAmaHBfYWxsb2NhdGVkLCBidWYsIGJ1Zl9sZW4sCisgICAgZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmgsICZlcnJub3ApOwogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRykKICAgICBoID0gZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwgJmVycm5vcCk7CkBAIC0zMzYzLDggKzQzNTYsOCBAQAogICAgICAgIGFkZHIuc3NfZmFtaWx5LgogICAgICAgIFRoZXJlZm9yZSwgd2UgY2FzdCB0aGUgc29ja2FkZHJfc3RvcmFnZSBpbnRvIHNvY2thZGRyIHRvCiAgICAgICAgYWNjZXNzIHNhX2ZhbWlseS4gKi8KLSAgICBzYSA9IChzdHJ1Y3Qgc29ja2FkZHIqKSZhZGRyOwotICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpLAorICAgIHNhID0gU0FTMlNBKCZhZGRyKTsKKyAgICByZXQgPSBnZXRob3N0X2NvbW1vbihoLCBTQVMyU0EoJmFkZHIpLCBzaXplb2YoYWRkciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2EtPnNhX2ZhbWlseSk7CiAjaWZkZWYgVVNFX0dFVEhPU1RCWU5BTUVfTE9DSwogICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhuZXRkYl9sb2NrKTsKQEAgLTMzODcsMTIgKzQzODAsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9nZXRob3N0YnlhZGRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSNpZmRlZiBFTkFCTEVfSVBWNgotICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGFkZHI7Ci0jZWxzZQotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwotI2VuZGlmCi0gICAgc3RydWN0IHNvY2thZGRyICpzYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcjsKKyAgICBzb2NrX2FkZHJfdCBhZGRyOworICAgIHN0cnVjdCBzb2NrYWRkciAqc2EgPSBTQVMyU0EoJmFkZHIpOwogICAgIGNoYXIgKmlwX251bTsKICAgICBzdHJ1Y3QgaG9zdGVudCAqaDsKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKQEAgLTM0MDksNyArNDM5OCw3IEBACiAgICAgaW50IGJ1Zl9sZW4gPSAoc2l6ZW9mIGJ1ZikgLSAxOwogICAgIGludCBlcnJub3A7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHKSB8fCBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQorI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCkBAIC0zNDI0LDcgKzQ0MTMsNyBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgYWYgPSBzYS0+c2FfZmFtaWx5OwogICAgIGFwID0gTlVMTDsKLSAgICBhbCA9IDA7CisgICAgLyogYWwgPSAwOyAqLwogICAgIHN3aXRjaCAoYWYpIHsKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgICAgIGFwID0gKGNoYXIgKikmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYSktPnNpbl9hZGRyOwpAQCAtMzQzNywxMyArNDQyNiwxMyBAQAogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCiAjaWYgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQotICAgIHJlc3VsdCA9IGdldGhvc3RieWFkZHJfcihhcCwgYWwsIGFmLAorICAgIGdldGhvc3RieWFkZHJfcihhcCwgYWwsIGFmLAogICAgICAgICAmaHBfYWxsb2NhdGVkLCBidWYsIGJ1Zl9sZW4sCiAgICAgICAgICZoLCAmZXJybm9wKTsKICNlbGlmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcpCkBAIC0zNDYxLDcgKzQ0NTAsNyBAQAogICAgIGggPSBnZXRob3N0YnlhZGRyKGFwLCBhbCwgYWYpOwogI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBnZXRob3N0X2NvbW1vbihoLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSwgYWYpOworICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIFNBUzJTQSgmYWRkciksIHNpemVvZihhZGRyKSwgYWYpOwogI2lmZGVmIFVTRV9HRVRIT1NUQllOQU1FX0xPQ0sKICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sobmV0ZGJfbG9jayk7CiAjZW5kaWYKQEAgLTM0OTMsNyArNDQ4Miw3IEBACiAgICAgc3AgPSBnZXRzZXJ2YnluYW1lKG5hbWUsIHByb3RvKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJzZXJ2aWNlL3Byb3RvIG5vdCBmb3VuZCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlcnZpY2UvcHJvdG8gbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBudG9ocyhzcC0+c19wb3J0KSk7CkBAIC0zNTMwLDcgKzQ1MTksNyBAQAogICAgIHNwID0gZ2V0c2VydmJ5cG9ydChodG9ucygoc2hvcnQpcG9ydCksIHByb3RvKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJwb3J0L3Byb3RvIG5vdCBmb3VuZCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInBvcnQvcHJvdG8gbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3AtPnNfbmFtZSk7CkBAIC0zNTU5LDcgKzQ1NDgsNyBAQAogICAgIHNwID0gZ2V0cHJvdG9ieW5hbWUobmFtZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoc3AgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAicHJvdG9jb2wgbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicHJvdG9jb2wgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBzcC0+cF9wcm90byk7CkBAIC0zODE0LDcgKzQ4MDMsNyBAQAogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKSgmYnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihidWYpKTsKIAotICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIElQIGFkZHJlc3Mgc3RyaW5nIHBhc3NlZCB0byBpbmV0X2F0b24iKTsKICAgICByZXR1cm4gTlVMTDsKIApAQCAtMzgzNSw3ICs0ODI0LDcgQEAKICAgICAgICAgcGFja2VkX2FkZHIgPSBpbmV0X2FkZHIoaXBfYWRkcik7CiAKICAgICAgICAgaWYgKHBhY2tlZF9hZGRyID09IElOQUREUl9OT05FKSB7ICAgICAgICAgICAgICAgLyogaW52YWxpZCBhZGRyZXNzICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgImlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfYXRvbiIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTM4NjcsNyArNDg1Niw3IEBACiAgICAgfQogCiAgICAgaWYgKGFkZHJfbGVuICE9IHNpemVvZihwYWNrZWRfYWRkcikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAicGFja2VkIElQIHdyb25nIGxlbmd0aCBmb3IgaW5ldF9udG9hIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTM5MDIsNyArNDg5MSw3IEBACiAKICNpZiAhZGVmaW5lZChFTkFCTEVfSVBWNikgJiYgZGVmaW5lZChBRl9JTkVUNikKICAgICBpZihhZiA9PSBBRl9JTkVUNikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgQUZfSU5FVDYsIElQdjYgaXMgZGlzYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzkxMCwxMCArNDg5OSwxMCBAQAogCiAgICAgcmV0dmFsID0gaW5ldF9wdG9uKGFmLCBpcCwgcGFja2VkKTsKICAgICBpZiAocmV0dmFsIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgaWYgKHJldHZhbCA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgImlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfcHRvbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgaWYgKGFmID09IEFGX0lORVQpIHsKQEAgLTM5MjUsNyArNDkxNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogfQpAQCAtMzk3Nyw3ICs0OTY2LDcgQEAKIAogICAgIHJldHZhbCA9IGluZXRfbnRvcChhZiwgcGFja2VkLCBpcCwgc2l6ZW9mKGlwKSk7CiAgICAgaWYgKCFyZXR2YWwpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKHNvY2tldF9lcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHJldHZhbCk7CkBAIC0zOTk2LDcgKzQ5ODUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9nZXRhZGRyaW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7Ci0gICAgc3RhdGljIGNoYXIqIGt3bmFtZXNbXSA9IHsiaG9zdCIsICJwb3J0IiwgImZhbWlseSIsICJ0eXBlIiwgInByb3RvIiwgCisgICAgc3RhdGljIGNoYXIqIGt3bmFtZXNbXSA9IHsiaG9zdCIsICJwb3J0IiwgImZhbWlseSIsICJ0eXBlIiwgInByb3RvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsIDB9OwogICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKICAgICBzdHJ1Y3QgYWRkcmluZm8gKnJlczAgPSBOVUxMOwpAQCAtNDAxMSw3ICs1MDAwLDcgQEAKIAogICAgIGZhbWlseSA9IHNvY2t0eXBlID0gcHJvdG9jb2wgPSBmbGFncyA9IDA7CiAgICAgZmFtaWx5ID0gQUZfVU5TUEVDOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfGlpaWk6Z2V0YWRkcmluZm8iLCAKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xpaWlpOmdldGFkZHJpbmZvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAga3duYW1lcywgJmhvYmosICZwb2JqLCAmZmFtaWx5LCAmc29ja3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm90b2NvbCwgJmZsYWdzKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQwMTksNyArNTAwOCw5IEBACiAgICAgaWYgKGhvYmogPT0gUHlfTm9uZSkgewogICAgICAgICBocHRyID0gTlVMTDsKICAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhob2JqKSkgewotICAgICAgICBpZG5hID0gUHlPYmplY3RfQ2FsbE1ldGhvZChob2JqLCAiZW5jb2RlIiwgInMiLCAiaWRuYSIpOworICAgICAgICBfUHlfSURFTlRJRklFUihlbmNvZGUpOworCisgICAgICAgIGlkbmEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGhvYmosICZQeUlkX2VuY29kZSwgInMiLCAiaWRuYSIpOwogICAgICAgICBpZiAoIWlkbmEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soaWRuYSkpOwpAQCAtNDA0Niw3ICs1MDM3LDcgQEAKICAgICB9IGVsc2UgaWYgKHBvYmogPT0gUHlfTm9uZSkgewogICAgICAgICBwcHRyID0gKGNoYXIgKilOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJJbnQgb3IgU3RyaW5nIGV4cGVjdGVkIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiSW50IG9yIFN0cmluZyBleHBlY3RlZCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CkBAIC00MTQ5LDcgKzUxNDAsNyBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogICAgIGlmIChyZXMtPmFpX25leHQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAic29ja2FkZHIgcmVzb2x2ZWQgdG8gbXVsdGlwbGUgYWRkcmVzc2VzIik7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CkBAIC00MTU3LDcgKzUxNDgsNyBAQAogICAgIGNhc2UgQUZfSU5FVDoKICAgICAgICAgewogICAgICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShzYSkgIT0gMikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJJUHY0IHNvY2thZGRyIG11c3QgYmUgMiB0dXBsZSIpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CkBAIC00MjQ0LDYgKzUyMzUsMTYzIEBACiBBIHZhbHVlIG9mIE5vbmUgaW5kaWNhdGVzIHRoYXQgbmV3IHNvY2tldCBvYmplY3RzIGhhdmUgbm8gdGltZW91dC5cblwKIFdoZW4gdGhlIHNvY2tldCBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIHRoZSBkZWZhdWx0IGlzIE5vbmUuIik7CiAKKyNpZmRlZiBIQVZFX0lGX05BTUVJTkRFWAorLyogUHl0aG9uIEFQSSBmb3IgZ2V0dGluZyBpbnRlcmZhY2UgaW5kaWNlcyBhbmQgbmFtZXMgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9uYW1laW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgaW50IGk7CisgICAgc3RydWN0IGlmX25hbWVpbmRleCAqbmk7CisKKyAgICBuaSA9IGlmX25hbWVpbmRleCgpOworICAgIGlmIChuaSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkgeworICAgICAgICBpZl9mcmVlbmFtZWluZGV4KG5pKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgbmlbaV0uaWZfaW5kZXggIT0gMCAmJiBpIDwgSU5UX01BWDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpuaV90dXBsZSA9IFB5X0J1aWxkVmFsdWUoIklPJiIsCisgICAgICAgICAgICAgICAgbmlbaV0uaWZfaW5kZXgsIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQsIG5pW2ldLmlmX25hbWUpOworCisgICAgICAgIGlmIChuaV90dXBsZSA9PSBOVUxMIHx8IFB5TGlzdF9BcHBlbmQobGlzdCwgbmlfdHVwbGUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKG5pX3R1cGxlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG5pX3R1cGxlKTsKKyAgICB9CisKKyAgICBpZl9mcmVlbmFtZWluZGV4KG5pKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKworUHlEb2NfU1RSVkFSKGlmX25hbWVpbmRleF9kb2MsCisiaWZfbmFtZWluZGV4KClcblwKK1xuXAorUmV0dXJucyBhIGxpc3Qgb2YgbmV0d29yayBpbnRlcmZhY2UgaW5mb3JtYXRpb24gKGluZGV4LCBuYW1lKSB0dXBsZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfaWZfbmFtZXRvaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvbmFtZTsKKyAgICB1bnNpZ25lZCBsb25nIGluZGV4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjppZl9uYW1ldG9pbmRleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9uYW1lKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpbmRleCA9IGlmX25hbWV0b2luZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKG9uYW1lKSk7CisgICAgUHlfREVDUkVGKG9uYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICAvKiBpZl9uYW1ldG9pbmRleCgpIGRvZXNuJ3Qgc2V0IGVycm5vICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAibm8gaW50ZXJmYWNlIHdpdGggdGhpcyBuYW1lIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhpbmRleCk7Cit9CisKK1B5RG9jX1NUUlZBUihpZl9uYW1ldG9pbmRleF9kb2MsCisiaWZfbmFtZXRvaW5kZXgoaWZfbmFtZSlcblwKK1xuXAorUmV0dXJucyB0aGUgaW50ZXJmYWNlIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVyZmFjZSBuYW1lIGlmX25hbWUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfaWZfaW5kZXh0b25hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKKyAgICBjaGFyIG5hbWVbSUZfTkFNRVNJWkUgKyAxXTsKKworICAgIGluZGV4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKGFyZyk7CisgICAgaWYgKGluZGV4ID09ICh1bnNpZ25lZCBsb25nKSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaWZfaW5kZXh0b25hbWUoaW5kZXgsIG5hbWUpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChuYW1lKTsKK30KKworUHlEb2NfU1RSVkFSKGlmX2luZGV4dG9uYW1lX2RvYywKKyJpZl9pbmRleHRvbmFtZShpZl9pbmRleClcblwKK1xuXAorUmV0dXJucyB0aGUgaW50ZXJmYWNlIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJmYWNlIGluZGV4IGlmX2luZGV4LiIpOworCisjZW5kaWYgIC8qIEhBVkVfSUZfTkFNRUlOREVYICovCisKKworI2lmZGVmIENNU0dfTEVOCisvKiBQeXRob24gaW50ZXJmYWNlIHRvIENNU0dfTEVOKGxlbmd0aCkuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfQ01TR19MRU4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46Q01TR19MRU4iLCAmbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGxlbmd0aCA8IDAgfHwgIWdldF9DTVNHX0xFTihsZW5ndGgsICZyZXN1bHQpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLCAiQ01TR19MRU4oKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVIoQ01TR19MRU5fZG9jLAorIkNNU0dfTEVOKGxlbmd0aCkgLT4gY29udHJvbCBtZXNzYWdlIGxlbmd0aFxuXAorXG5cCitSZXR1cm4gdGhlIHRvdGFsIGxlbmd0aCwgd2l0aG91dCB0cmFpbGluZyBwYWRkaW5nLCBvZiBhbiBhbmNpbGxhcnlcblwKK2RhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4gbGVuZ3RoLiAgVGhpcyB2YWx1ZSBjYW5cblwKK29mdGVuIGJlIHVzZWQgYXMgdGhlIGJ1ZmZlciBzaXplIGZvciByZWN2bXNnKCkgdG8gcmVjZWl2ZSBhIHNpbmdsZVxuXAoraXRlbSBvZiBhbmNpbGxhcnkgZGF0YSwgYnV0IFJGQyAzNTQyIHJlcXVpcmVzIHBvcnRhYmxlIGFwcGxpY2F0aW9ucyB0b1xuXAordXNlIENNU0dfU1BBQ0UoKSBhbmQgdGh1cyBpbmNsdWRlIHNwYWNlIGZvciBwYWRkaW5nLCBldmVuIHdoZW4gdGhlXG5cCitpdGVtIHdpbGwgYmUgdGhlIGxhc3QgaW4gdGhlIGJ1ZmZlci4gIFJhaXNlcyBPdmVyZmxvd0Vycm9yIGlmIGxlbmd0aFxuXAoraXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgcmFuZ2Ugb2YgdmFsdWVzLiIpOworCisKKyNpZmRlZiBDTVNHX1NQQUNFCisvKiBQeXRob24gaW50ZXJmYWNlIHRvIENNU0dfU1BBQ0UobGVuZ3RoKS4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9DTVNHX1NQQUNFKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICBzaXplX3QgcmVzdWx0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOkNNU0dfU1BBQ0UiLCAmbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGxlbmd0aCA8IDAgfHwgIWdldF9DTVNHX1NQQUNFKGxlbmd0aCwgJnJlc3VsdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ01TR19TUEFDRSgpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihDTVNHX1NQQUNFX2RvYywKKyJDTVNHX1NQQUNFKGxlbmd0aCkgLT4gYnVmZmVyIHNpemVcblwKK1xuXAorUmV0dXJuIHRoZSBidWZmZXIgc2l6ZSBuZWVkZWQgZm9yIHJlY3Ztc2coKSB0byByZWNlaXZlIGFuIGFuY2lsbGFyeVxuXAorZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiBsZW5ndGgsIGFsb25nIHdpdGggYW55XG5cCit0cmFpbGluZyBwYWRkaW5nLiAgVGhlIGJ1ZmZlciBzcGFjZSBuZWVkZWQgdG8gcmVjZWl2ZSBtdWx0aXBsZSBpdGVtc1xuXAoraXMgdGhlIHN1bSBvZiB0aGUgQ01TR19TUEFDRSgpIHZhbHVlcyBmb3IgdGhlaXIgYXNzb2NpYXRlZCBkYXRhXG5cCitsZW5ndGhzLiAgUmFpc2VzIE92ZXJmbG93RXJyb3IgaWYgbGVuZ3RoIGlzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlXG5cCityYW5nZSBvZiB2YWx1ZXMuIik7CisjZW5kaWYgICAgLyogQ01TR19TUEFDRSAqLworI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICovCiAKQEAgLTQyNTYsNiArNTQwNCwxMCBAQAogICAgICBNRVRIX1ZBUkFSR1MsIGdldGhvc3RieWFkZHJfZG9jfSwKICAgICB7ImdldGhvc3RuYW1lIiwgICAgICAgICAgICAgc29ja2V0X2dldGhvc3RuYW1lLAogICAgICBNRVRIX05PQVJHUywgIGdldGhvc3RuYW1lX2RvY30sCisjaWZkZWYgSEFWRV9TRVRIT1NUTkFNRQorICAgIHsic2V0aG9zdG5hbWUiLCAgICAgICAgICAgICBzb2NrZXRfc2V0aG9zdG5hbWUsCisgICAgIE1FVEhfVkFSQVJHUywgIHNldGhvc3RuYW1lX2RvY30sCisjZW5kaWYKICAgICB7ImdldHNlcnZieW5hbWUiLCAgICAgICAgICAgc29ja2V0X2dldHNlcnZieW5hbWUsCiAgICAgIE1FVEhfVkFSQVJHUywgZ2V0c2VydmJ5bmFtZV9kb2N9LAogICAgIHsiZ2V0c2VydmJ5cG9ydCIsICAgICAgICAgICBzb2NrZXRfZ2V0c2VydmJ5cG9ydCwKQEAgLTQyOTYsNiArNTQ0OCwyMiBAQAogICAgICBNRVRIX05PQVJHUywgZ2V0ZGVmYXVsdHRpbWVvdXRfZG9jfSwKICAgICB7InNldGRlZmF1bHR0aW1lb3V0IiwgICAgICAgc29ja2V0X3NldGRlZmF1bHR0aW1lb3V0LAogICAgICBNRVRIX08sIHNldGRlZmF1bHR0aW1lb3V0X2RvY30sCisjaWZkZWYgSEFWRV9JRl9OQU1FSU5ERVgKKyAgICB7ImlmX25hbWVpbmRleCIsIHNvY2tldF9pZl9uYW1laW5kZXgsCisgICAgIE1FVEhfTk9BUkdTLCBpZl9uYW1laW5kZXhfZG9jfSwKKyAgICB7ImlmX25hbWV0b2luZGV4Iiwgc29ja2V0X2lmX25hbWV0b2luZGV4LAorICAgICBNRVRIX1ZBUkFSR1MsIGlmX25hbWV0b2luZGV4X2RvY30sCisgICAgeyJpZl9pbmRleHRvbmFtZSIsIHNvY2tldF9pZl9pbmRleHRvbmFtZSwKKyAgICAgTUVUSF9PLCBpZl9pbmRleHRvbmFtZV9kb2N9LAorI2VuZGlmCisjaWZkZWYgQ01TR19MRU4KKyAgICB7IkNNU0dfTEVOIiwgICAgICAgICAgICAgICAgc29ja2V0X0NNU0dfTEVOLAorICAgICBNRVRIX1ZBUkFSR1MsIENNU0dfTEVOX2RvY30sCisjaWZkZWYgQ01TR19TUEFDRQorICAgIHsiQ01TR19TUEFDRSIsICAgICAgICAgICAgICBzb2NrZXRfQ01TR19TUEFDRSwKKyAgICAgTUVUSF9WQVJBUkdTLCBDTVNHX1NQQUNFX2RvY30sCisjZW5kaWYKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC00NDI4LDI3ICs1NTk2LDI0IEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzb2NrZXRfZXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNvY2tldC5lcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0lPRXJyb3IsIE5VTEwpOwotICAgIGlmIChzb2NrZXRfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlTb2NrZXRNb2R1bGVBUEkuZXJyb3IgPSBzb2NrZXRfZXJyb3I7Ci0gICAgUHlfSU5DUkVGKHNvY2tldF9lcnJvcik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIHNvY2tldF9lcnJvcik7CisgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOworICAgIFB5U29ja2V0TW9kdWxlQVBJLmVycm9yID0gUHlFeGNfT1NFcnJvcjsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogICAgIHNvY2tldF9oZXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNvY2tldC5oZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0X2Vycm9yLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX09TRXJyb3IsIE5VTEwpOwogICAgIGlmIChzb2NrZXRfaGVycm9yID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzb2NrZXRfaGVycm9yKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImhlcnJvciIsIHNvY2tldF9oZXJyb3IpOwotICAgIHNvY2tldF9nYWllcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmdhaWVycm9yIiwgc29ja2V0X2Vycm9yLAorICAgIHNvY2tldF9nYWllcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmdhaWVycm9yIiwgUHlFeGNfT1NFcnJvciwKICAgICAgICAgTlVMTCk7CiAgICAgaWYgKHNvY2tldF9nYWllcnJvciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc29ja2V0X2dhaWVycm9yKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImdhaWVycm9yIiwgc29ja2V0X2dhaWVycm9yKTsKICAgICBzb2NrZXRfdGltZW91dCA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LnRpbWVvdXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF9lcnJvciwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgTlVMTCk7CiAgICAgaWYgKHNvY2tldF90aW1lb3V0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5U29ja2V0TW9kdWxlQVBJLnRpbWVvdXRfZXJyb3IgPSBzb2NrZXRfdGltZW91dDsKQEAgLTQ2MzQsNiArNTc5OSwzMSBAQAogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJCREFERFJfTE9DQUwiLCAiMDA6MDA6MDA6RkY6RkY6RkYiKTsKICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgLyogQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQ0FOIiwgQUZfQ0FOKTsKKyNlbmRpZgorI2lmZGVmIFBGX0NBTgorICAgIC8qIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrICovCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBGX0NBTiIsIFBGX0NBTik7CisjZW5kaWYKKworLyogUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAqLworI2lmZGVmIEFGX1JEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9SRFMiLCBBRl9SRFMpOworI2VuZGlmCisjaWZkZWYgUEZfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBGX1JEUyIsIFBGX1JEUyk7CisjZW5kaWYKKworLyogS2VybmVsIGV2ZW50IG1lc3NhZ2VzICovCisjaWZkZWYgUEZfU1lTVEVNCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBGX1NZU1RFTSIsIFBGX1NZU1RFTSk7CisjZW5kaWYKKyNpZmRlZiBBRl9TWVNURU0KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfU1lTVEVNIiwgQUZfU1lTVEVNKTsKKyNlbmRpZgorCiAjaWZkZWYgQUZfUEFDS0VUCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfUEFDS0VUKTsKICNlbmRpZgpAQCAtNDc4Myw2ICs1OTczLDE4IEBACiAjaWZkZWYgIFNPX1NFVEZJQgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19TRVRGSUIiLCBTT19TRVRGSUIpOwogI2VuZGlmCisjaWZkZWYgIFNPX1BBU1NDUkVECisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1BBU1NDUkVEIiwgU09fUEFTU0NSRUQpOworI2VuZGlmCisjaWZkZWYgIFNPX1BFRVJDUkVECisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1BFRVJDUkVEIiwgU09fUEVFUkNSRUQpOworI2VuZGlmCisjaWZkZWYgIExPQ0FMX1BFRVJDUkVECisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPQ0FMX1BFRVJDUkVEIiwgTE9DQUxfUEVFUkNSRUQpOworI2VuZGlmCisjaWZkZWYgIFNPX0JJTkRUT0RFVklDRQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0JJTkRUT0RFVklDRSk7CisjZW5kaWYKIAogICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGZvciAibGlzdGVuIiAqLwogI2lmZGVmICBTT01BWENPTk4KQEAgLTQ3OTEsNiArNTk5MywxNyBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT01BWENPTk4iLCA1KTsgLyogQ29tbW9uIHZhbHVlICovCiAjZW5kaWYKIAorICAgIC8qIEFuY2lsbGlhcnkgbWVzc2FnZSB0eXBlcyAqLworI2lmZGVmICBTQ01fUklHSFRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNDTV9SSUdIVFMiLCBTQ01fUklHSFRTKTsKKyNlbmRpZgorI2lmZGVmICBTQ01fQ1JFREVOVElBTFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX0NSRURFTlRJQUxTIiwgU0NNX0NSRURFTlRJQUxTKTsKKyNlbmRpZgorI2lmZGVmICBTQ01fQ1JFRFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX0NSRURTIiwgU0NNX0NSRURTKTsKKyNlbmRpZgorCiAgICAgLyogRmxhZ3MgZm9yIHNlbmQsIHJlY3YgKi8KICNpZmRlZiAgTVNHX09PQgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfT09CIiwgTVNHX09PQik7CkBAIC00ODIyLDYgKzYwMzUsMzMgQEAKICNpZmRlZiAgTVNHX0VUQUcKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VUQUciLCBNU0dfRVRBRyk7CiAjZW5kaWYKKyNpZmRlZiAgTVNHX05PU0lHTkFMCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19OT1NJR05BTCIsIE1TR19OT1NJR05BTCk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX05PVElGSUNBVElPTgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTk9USUZJQ0FUSU9OIiwgTVNHX05PVElGSUNBVElPTik7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0NNU0dfQ0xPRVhFQworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfQ01TR19DTE9FWEVDIiwgTVNHX0NNU0dfQ0xPRVhFQyk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0VSUlFVRVVFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19FUlJRVUVVRSIsIE1TR19FUlJRVUVVRSk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0NPTkZJUk0KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0NPTkZJUk0iLCBNU0dfQ09ORklSTSk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX01PUkUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX01PUkUiLCBNU0dfTU9SRSk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0VPRgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRU9GIiwgTVNHX0VPRik7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0JDQVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19CQ0FTVCIsIE1TR19CQ0FTVCk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX01DQVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19NQ0FTVCIsIE1TR19NQ0FTVCk7CisjZW5kaWYKIAogICAgIC8qIFByb3RvY29sIGxldmVsIGFuZCBudW1iZXJzLCB1c2FibGUgZm9yIFtnc11ldHNvY2tvcHQgKi8KICNpZmRlZiAgU09MX1NPQ0tFVApAQCAtNDg1Nyw2ICs2MDk3LDQ5IEBACiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfVURQIiwgMTcpOwogI2VuZGlmCisjaWZkZWYgU09MX0NBTl9CQVNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9DQU5fQkFTRSIsIFNPTF9DQU5fQkFTRSk7CisjZW5kaWYKKyNpZmRlZiBTT0xfQ0FOX1JBVworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfQ0FOX1JBVyIsIFNPTF9DQU5fUkFXKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBVyIsIENBTl9SQVcpOworI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fSAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRUZGX0ZMQUciLCBDQU5fRUZGX0ZMQUcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUlRSX0ZMQUciLCBDQU5fUlRSX0ZMQUcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRVJSX0ZMQUciLCBDQU5fRVJSX0ZMQUcpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9TRkZfTUFTSyIsIENBTl9TRkZfTUFTSyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FRkZfTUFTSyIsIENBTl9FRkZfTUFTSyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FUlJfTUFTSyIsIENBTl9FUlJfTUFTSyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfSAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0ZJTFRFUiIsIENBTl9SQVdfRklMVEVSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19FUlJfRklMVEVSIiwgQ0FOX1JBV19FUlJfRklMVEVSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19MT09QQkFDSyIsIENBTl9SQVdfTE9PUEJBQ0spOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX1JFQ1ZfT1dOX01TR1MiLCBDQU5fUkFXX1JFQ1ZfT1dOX01TR1MpOworI2VuZGlmCisjaWZkZWYgU09MX1JEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfUkRTIiwgU09MX1JEUyk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ0FOQ0VMX1NFTlRfVE8KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NBTkNFTF9TRU5UX1RPIiwgUkRTX0NBTkNFTF9TRU5UX1RPKTsKKyNlbmRpZgorI2lmZGVmIFJEU19HRVRfTVIKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0dFVF9NUiIsIFJEU19HRVRfTVIpOworI2VuZGlmCisjaWZkZWYgUkRTX0ZSRUVfTVIKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0ZSRUVfTVIiLCBSRFNfRlJFRV9NUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkVDVkVSUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkVDVkVSUiIsIFJEU19SRUNWRVJSKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DT05HX01PTklUT1IKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NPTkdfTU9OSVRPUiIsIFJEU19DT05HX01PTklUT1IpOworI2VuZGlmCisjaWZkZWYgUkRTX0dFVF9NUl9GT1JfREVTVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfR0VUX01SX0ZPUl9ERVNUIiwgUkRTX0dFVF9NUl9GT1JfREVTVCk7CisjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19JUAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0lQIiwgSVBQUk9UT19JUCk7CiAjZWxzZQpAQCAtNDk2MSw2ICs2MjQ0LDkgQEAKICNpZmRlZiAgSVBQUk9UT19WUlJQCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fVlJSUCIsIElQUFJPVE9fVlJSUCk7CiAjZW5kaWYKKyNpZmRlZiAgSVBQUk9UT19TQ1RQCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fU0NUUCIsIElQUFJPVE9fU0NUUCk7CisjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19CSVAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19CSVAiLCBJUFBST1RPX0JJUCk7CiAjZW5kaWYKQEAgLTQ5NzQsNiArNjI2MCwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX01BWCIsIElQUFJPVE9fTUFYKTsKICNlbmRpZgogCisjaWZkZWYgIFNZU1BST1RPX0NPTlRST0wKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1lTUFJPVE9fQ09OVFJPTCIsIFNZU1BST1RPX0NPTlRST0wpOworI2VuZGlmCisKICAgICAvKiBTb21lIHBvcnQgY29uZmlndXJhdGlvbiAqLwogI2lmZGVmICBJUFBPUlRfUkVTRVJWRUQKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQT1JUX1JFU0VSVkVEIiwgSVBQT1JUX1JFU0VSVkVEKTsKQEAgLTUwNzYsNiArNjM2Niw5IEBACiAjaWZkZWYgIElQX01BWF9NRU1CRVJTSElQUwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9NQVhfTUVNQkVSU0hJUFMiLCBJUF9NQVhfTUVNQkVSU0hJUFMpOwogI2VuZGlmCisjaWZkZWYgIElQX1RSQU5TUEFSRU5UCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX1RSQU5TUEFSRU5UIiwgSVBfVFJBTlNQQVJFTlQpOworI2VuZGlmCiAKICAgICAvKiBJUHY2IFtnc11ldHNvY2tvcHQgb3B0aW9ucywgZGVmaW5lZCBpbiBSRkMyNTUzICovCiAjaWZkZWYgIElQVjZfSk9JTl9HUk9VUApAQCAtNTIwNiw2ICs2NDk5LDQ0IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQWF9UWVBFIiwgSVBYX1RZUEUpOwogI2VuZGlmCiAKKy8qIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKi8KKyNpZmRlZiBSRFNfQ01TR19SRE1BX0FSR1MKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9BUkdTIiwgUkRTX0NNU0dfUkRNQV9BUkdTKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfREVTVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX0RFU1QiLCBSRFNfQ01TR19SRE1BX0RFU1QpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9NQVAKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9NQVAiLCBSRFNfQ01TR19SRE1BX01BUCk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ01TR19SRE1BX1NUQVRVUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX1NUQVRVUyIsIFJEU19DTVNHX1JETUFfU1RBVFVTKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfVVBEQVRFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfVVBEQVRFIiwgUkRTX0NNU0dfUkRNQV9VUERBVEUpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfUkVBRFdSSVRFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX1JFQURXUklURSIsIFJEU19SRE1BX1JFQURXUklURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9GRU5DRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9GRU5DRSIsIFJEU19SRE1BX0ZFTkNFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0lOVkFMSURBVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfSU5WQUxJREFURSIsIFJEU19SRE1BX0lOVkFMSURBVEUpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfVVNFX09OQ0UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfVVNFX09OQ0UiLCBSRFNfUkRNQV9VU0VfT05DRSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9ET05UV0FJVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9ET05UV0FJVCIsIFJEU19SRE1BX0RPTlRXQUlUKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX05PVElGWV9NRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9OT1RJRllfTUUiLCBSRFNfUkRNQV9OT1RJRllfTUUpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfU0lMRU5UCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX1NJTEVOVCIsIFJEU19SRE1BX1NJTEVOVCk7CisjZW5kaWYKKwogICAgIC8qIGdldHthZGRyLG5hbWV9aW5mbyBwYXJhbWV0ZXJzICovCiAjaWZkZWYgRUFJX0FERFJGQU1JTFkKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX0FERFJGQU1JTFkiLCBFQUlfQUREUkZBTUlMWSk7CkBAIC01MzMyLDcgKzY2NjMsNyBAQAogICAgICAgICBEV09SRCBjb2Rlc1tdID0ge1NJT19SQ1ZBTEwsIFNJT19LRUVQQUxJVkVfVkFMU307CiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIn07CiAgICAgICAgIGludCBpOwotICAgICAgICBmb3IoaSA9IDA7IGk8c2l6ZW9mKGNvZGVzKS9zaXplb2YoKmNvZGVzKTsgKytpKSB7CisgICAgICAgIGZvcihpID0gMDsgaTxQeV9BUlJBWV9MRU5HVEgoY29kZXMpOyArK2kpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXA7CiAgICAgICAgICAgICB0bXAgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhjb2Rlc1tpXSk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaAppbmRleCBmMDY0Nzk1Li4wNDM1ODc4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKQEAgLTU5LDkgKzU5LDEyIEBACiAjaW5jbHVkZSA8Ymx1ZXRvb3RoLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyMgaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9ICiAjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgotIyBpbmNsdWRlIDxuZXQvaWYuaD4KICMgaW5jbHVkZSA8bmV0cGFja2V0L3BhY2tldC5oPgogI2VuZGlmCiAKQEAgLTY5LDYgKzcyLDIxIEBACiAjIGluY2x1ZGUgPGxpbnV4L3RpcGMuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fSAorI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfSAorI2luY2x1ZGUgPGxpbnV4L2Nhbi9yYXcuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWVNfU1lTX0RPTUFJTl9ICisjaW5jbHVkZSA8c3lzL3N5c19kb21haW4uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX0tFUk5fQ09OVFJPTF9ICisjaW5jbHVkZSA8c3lzL2tlcm5fY29udHJvbC5oPgorI2VuZGlmCisKICNpZm5kZWYgUHlfX1NPQ0tFVF9ICiAjZGVmaW5lIFB5X19TT0NLRVRfSAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0xMDQsNiArMTIyLDcgQEAKIC8qIFNvY2tldCBhZGRyZXNzICovCiB0eXBlZGVmIHVuaW9uIHNvY2tfYWRkciB7CiAgICAgc3RydWN0IHNvY2thZGRyX2luIGluOworICAgIHN0cnVjdCBzb2NrYWRkciBzYTsKICNpZmRlZiBBRl9VTklYCiAgICAgc3RydWN0IHNvY2thZGRyX3VuIHVuOwogI2VuZGlmCkBAIC0xMjMsNiArMTQyLDEyIEBACiAjaWZkZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKICAgICBzdHJ1Y3Qgc29ja2FkZHJfbGwgbGw7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisgICAgc3RydWN0IHNvY2thZGRyX2NhbiBjYW47CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19LRVJOX0NPTlRST0xfSAorICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgY3RsOworI2VuZGlmCiB9IHNvY2tfYWRkcl90OwogCiAvKiBUaGUgb2JqZWN0IGhvbGRpbmcgYSBzb2NrZXQuICBJdCBob2xkcyBzb21lIGV4dHJhIGluZm9ybWF0aW9uLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmUuaCBiL01vZHVsZXMvc3JlLmgKaW5kZXggYWVjOWI1NC4uMDBiNTJhYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmUuaAorKysgYi9Nb2R1bGVzL3NyZS5oCkBAIC0xNCwxMiArMTQsOCBAQAogI2luY2x1ZGUgInNyZV9jb25zdGFudHMuaCIKIAogLyogc2l6ZSBvZiBhIGNvZGUgd29yZCAobXVzdCBiZSB1bnNpZ25lZCBzaG9ydCBvciBsYXJnZXIsIGFuZAotICAgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBQeV9VTklDT0RFIGNoYXJhY3RlcikgKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKKyAgIGxhcmdlIGVub3VnaCB0byBob2xkIGEgVUNTNCBjaGFyYWN0ZXIpICovCiAjZGVmaW5lIFNSRV9DT0RFIFB5X1VDUzQKLSNlbHNlCi0jZGVmaW5lIFNSRV9DT0RFIHVuc2lnbmVkIHNob3J0Ci0jZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X1ZBUl9IRUFECkBAIC0zMCw3ICsyNiw4IEBACiAgICAgUHlPYmplY3QqIHBhdHRlcm47IC8qIHBhdHRlcm4gc291cmNlIChvciBOb25lKSAqLwogICAgIGludCBmbGFnczsgLyogZmxhZ3MgdXNlZCB3aGVuIGNvbXBpbGluZyBwYXR0ZXJuIHNvdXJjZSAqLwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KLQlpbnQgY2hhcnNpemU7IC8qIHBhdHRlcm4gY2hhcnNpemUgKG9yIC0xKSAqLworICAgIGludCBsb2dpY2FsX2NoYXJzaXplOyAvKiBwYXR0ZXJuIGNoYXJzaXplIChvciAtMSkgKi8KKyAgICBpbnQgY2hhcnNpemU7CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgLyogcGF0dGVybiBjb2RlICovCiAgICAgUHlfc3NpemVfdCBjb2Rlc2l6ZTsKQEAgLTcyLDYgKzY5LDcgQEAKICAgICBQeU9iamVjdCogc3RyaW5nOwogICAgIFB5X3NzaXplX3QgcG9zLCBlbmRwb3M7CiAgICAgLyogY2hhcmFjdGVyIHNpemUgKi8KKyAgICBpbnQgbG9naWNhbF9jaGFyc2l6ZTsgLyoga2luZCBvZiB0aGluZzogMSAtIGJ5dGVzLCAyLzQgLSB1bmljb2RlICovCiAgICAgaW50IGNoYXJzaXplOwogICAgIC8qIHJlZ2lzdGVycyAqLwogICAgIFB5X3NzaXplX3QgbGFzdGluZGV4OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYyBiL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKaW5kZXggNWI4Njk2My4uOGI4NzdjZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCkBAIC03MCw3ICs3MCw3IEBACiAKICAgICBQeV9zc2l6ZV90IGFyZ3ZfbGVuLCBzY3JpcHRsZW47CiAgICAgUHlPYmplY3QgKnNjcmlwdG9iajsKLSAgICBQeV9VTklDT0RFICphdHNsYXNoLCAqYXRzdGFydDsKKyAgICBQeV9zc2l6ZV90IHNsYXNoOwogICAgIFB5T2JqZWN0ICphcmd2ID0gUHlTeXNfR2V0T2JqZWN0KCJhcmd2Iik7CiAKICAgICBpZiAoYXJndiA9PSBOVUxMKSB7CkBAIC05MCwxNiArOTAsMTYgQEAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzY3JpcHRvYmopKSB7CiAgICAgICAgIHJldHVybihOVUxMKTsKICAgICB9Ci0gICAgc2NyaXB0bGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNjcmlwdG9iaik7CisgICAgc2NyaXB0bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2NyaXB0b2JqKTsKICAgICBpZiAoc2NyaXB0bGVuID09IDApIHsKICAgICAgICAgcmV0dXJuKE5VTEwpOwogICAgIH0KIAotICAgIGF0c3RhcnQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzY3JpcHRvYmopOwotICAgIGF0c2xhc2ggPSBQeV9VTklDT0RFX3N0cnJjaHIoYXRzdGFydCwgU0VQKTsKLSAgICBpZiAoYXRzbGFzaCkgewotICAgICAgICByZXR1cm4oUHlVbmljb2RlX0Zyb21Vbmljb2RlKGF0c2xhc2ggKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdGxlbiAtIChhdHNsYXNoIC0gYXRzdGFydCkgLSAxKSk7CisgICAgc2xhc2ggPSBQeVVuaWNvZGVfRmluZENoYXIoc2NyaXB0b2JqLCBTRVAsIDAsIHNjcmlwdGxlbiwgLTEpOworICAgIGlmIChzbGFzaCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNsYXNoICE9IC0xKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNjcmlwdG9iaiwgc2xhc2gsIHNjcmlwdGxlbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlfSU5DUkVGKHNjcmlwdG9iaik7CiAgICAgICAgIHJldHVybihzY3JpcHRvYmopOwpAQCAtMjkxLDYgKzI5MSw5IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19QSUQiLCAgICAgICAgIExPR19QSUQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQ09OUyIsICAgICAgICBMT0dfQ09OUyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19OREVMQVkiLCAgTE9HX05ERUxBWSk7CisjaWZkZWYgTE9HX09ERUxBWQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfT0RFTEFZIiwgIExPR19PREVMQVkpOworI2VuZGlmCiAjaWZkZWYgTE9HX05PV0FJVAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTk9XQUlUIiwgIExPR19OT1dBSVQpOwogI2VuZGlmCkBAIC0zMzEsNSArMzM0LDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19DUk9OIiwgICAgICAgIExPR19DUk9OKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX1VVQ1AiLCAgICAgICAgTE9HX1VVQ1ApOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTkVXUyIsICAgICAgICBMT0dfTkVXUyk7CisKKyNpZmRlZiBMT0dfQVVUSFBSSVYKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0FVVEhQUklWIiwgICAgTE9HX0FVVEhQUklWKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Rlcm1pb3MuYyBiL01vZHVsZXMvdGVybWlvcy5jCmluZGV4IGVkZWI2ZjUuLmI3OGQzM2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGVybWlvcy5jCisrKyBiL01vZHVsZXMvdGVybWlvcy5jCkBAIC05LDExICs5LDYgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8dGVybWlvcy5oPgotI2lmZGVmIF9fb3NmX18KLS8qIE9uIE9TRiwgc3lzL2lvY3RsLmggcmVxdWlyZXMgdGhhdCBzdHJ1Y3QgdGVybWlvIGFscmVhZHkgYmUgZGVmaW5lZCwKLSAqIHNvIHRoaXMgbmVlZHMgdG8gYmUgaW5jbHVkZWQgZmlyc3Qgb24gdGhhdCBwbGF0Zm9ybS4gKi8KLSNpbmNsdWRlIDx0ZXJtaW8uaD4KLSNlbmRpZgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogCiAvKiBIUC1VWCByZXF1aXJlcyB0aGF0IHRoaXMgYmUgaW5jbHVkZWQgdG8gcGljayB1cCBNRENELCBNQ1RTLCBNRFNSLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy90ZXN0Y2FwaV9sb25nLmggYi9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaAppbmRleCBmYTk0ZmQ2Li42YmRkYWQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaAorKysgYi9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaApAQCAtMzMsOCArMzMsNyBAQAogICAgICAgICAgICAgdW5zaWduZWQgVFlQRU5BTUUgdWluLCB1b3V0OwogCiAgICAgICAgICAgICAvKiBGb3IgMCwgMSwgMiB1c2UgYmFzZTsgZm9yIDMsIDQsIDUgdXNlIC1iYXNlICovCi0gICAgICAgICAgICB1aW4gPSBqIDwgMyA/IGJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDogKHVuc2lnbmVkIFRZUEVOQU1FKSgtKFRZUEVOQU1FKWJhc2UpOworICAgICAgICAgICAgdWluID0gaiA8IDMgPyBiYXNlIDogMFUgLSBiYXNlOwogCiAgICAgICAgICAgICAvKiBGb3IgMCAmIDMsIHN1YnRyYWN0IDEuCiAgICAgICAgICAgICAgKiBGb3IgMSAmIDQsIGxlYXZlIGFsb25lLgpAQCAtMTc3LDYgKzE3NiwzMiBAQAogICAgICAgICBQeV9ERUNSRUYob25lKTsKICAgICB9CiAKKyAgICAvKiBUZXN0IEZfUFlfVE9fe1MsVX0gb24gbm9uLXB5bG9uZyBpbnB1dC4gVGhpcyBzaG91bGQgcmFpc2UgYSBUeXBlRXJyb3IuICovCisgICAgeworICAgICAgICBUWVBFTkFNRSBvdXQ7CisgICAgICAgIHVuc2lnbmVkIFRZUEVOQU1FIHVvdXQ7CisKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCisgICAgICAgIG91dCA9IEZfUFlfVE9fUyhQeV9Ob25lKTsKKyAgICAgICAgaWYgKG91dCAhPSAoVFlQRU5BTUUpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICB1b3V0ID0gRl9QWV9UT19VKFB5X05vbmUpOworICAgICAgICBpZiAodW91dCAhPSAodW5zaWduZWQgVFlQRU5BTUUpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBQeV9ERUNSRUYoUHlfTm9uZSk7CisgICAgfQorCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwppbmRleCA2MjZkYjNlLi4xNjE0MDdkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwpAQCAtMSwxMyArMSwyMCBAQAogLyogVGltZSBtb2R1bGUgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIl90aW1lLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCisjaWZkZWYgSEFWRV9TWVNfVElNRVNfSAorI2luY2x1ZGUgPHN5cy90aW1lcy5oPgorI2VuZGlmCisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JFU09VUkNFX0gpCisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisjZW5kaWYKIAogI2lmZGVmIFFVSUNLV0lOCiAjaW5jbHVkZSA8aW8uaD4KQEAgLTIxLDE5ICsyOCw2IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiAKLS8qIGhlbHBlciB0byBhbGxvdyB1cyB0byBpbnRlcnJ1cHQgc2xlZXAoKSBvbiBXaW5kb3dzKi8KLXN0YXRpYyBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gTlVMTDsKLXN0YXRpYyBCT09MIFdJTkFQSSBQeUN0cmxIYW5kbGVyKERXT1JEIGR3Q3RybFR5cGUpCi17Ci0gICAgU2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKLSAgICAvKiBhbGxvdyBvdGhlciBkZWZhdWx0IGhhbmRsZXJzIHRvIGJlIGNhbGxlZC4KLSAgICAgICBEZWZhdWx0IFB5dGhvbiBoYW5kbGVyIHdpbGwgc2V0dXAgdGhlCi0gICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgZXhjZXB0aW9uLgotICAgICovCi0gICAgcmV0dXJuIEZBTFNFOwotfQotc3RhdGljIGxvbmcgbWFpbl90aHJlYWQ7Ci0KICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKIC8qIFRoZXNlIG92ZXJyaWRlcyBub3QgbmVlZGVkIGZvciBXaW4zMiAqLwogI2RlZmluZSB0aW1lem9uZSBfdGltZXpvbmUKQEAgLTQzLDExICszNyw2IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogI2VuZGlmIC8qICFfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLS8qIFdpbjMyIGhhcyBiZXR0ZXIgY2xvY2sgcmVwbGFjZW1lbnQ7IHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGJlbG93LiAqLwotI3VuZGVmIEhBVkVfQ0xPQ0sKLSNlbmRpZiAvKiBNU19XSU5ET1dTICYmICFkZWZpbmVkKF9fQk9STEFORENfXykgKi8KLQogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAjZGVmaW5lIElOQ0xfRE9TCiAjZGVmaW5lIElOQ0xfRVJST1JTCkBAIC01OCwyMyArNDcsMjIgQEAKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgorI2VuZGlmCisKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgaW50IGZsb2F0c2xlZXAoZG91YmxlKTsKLXN0YXRpYyBkb3VibGUgZmxvYXR0aW1lKHZvaWQpOworc3RhdGljIFB5T2JqZWN0KiBmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbyk7CiAKLS8qIEZvciBZMksgY2hlY2sgKi8KLXN0YXRpYyBQeU9iamVjdCAqbW9kZGljdDsKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV90aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIGRvdWJsZSBzZWNzOwotICAgIHNlY3MgPSBmbG9hdHRpbWUoKTsKLSAgICBpZiAoc2VjcyA9PSAwLjApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNzKTsKKyAgICByZXR1cm4gZmxvYXR0aW1lKE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIodGltZV9kb2MsCkBAIC04Myw3ICs3MSw3IEBACiBSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC5cblwKIEZyYWN0aW9ucyBvZiBhIHNlY29uZCBtYXkgYmUgcHJlc2VudCBpZiB0aGUgc3lzdGVtIGNsb2NrIHByb3ZpZGVzIHRoZW0uIik7CiAKLSNpZmRlZiBIQVZFX0NMT0NLCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLKQogCiAjaWZuZGVmIENMT0NLU19QRVJfU0VDCiAjaWZkZWYgQ0xLX1RDSwpAQCAtOTQsNDIgKzgyLDgyIEBACiAjZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfY2xvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitmbG9hdGNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvIENMT0NLU19QRVJfU0VDKTsKKyAgICBjbG9ja190IHZhbHVlOworICAgIHZhbHVlID0gY2xvY2soKTsKKyAgICBpZiAodmFsdWUgPT0gKGNsb2NrX3QpLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAidGhlIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSAiCisgICAgICAgICAgICAgICAgIm9yIGl0cyB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wIC8gKGRvdWJsZSlDTE9DS1NfUEVSX1NFQzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSl2YWx1ZSAvIENMT0NLU19QRVJfU0VDKTsKIH0KICNlbmRpZiAvKiBIQVZFX0NMT0NLICovCiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLS8qIER1ZSB0byBNYXJrIEhhbW1vbmQgYW5kIFRpbSBQZXRlcnMgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2Nsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorI2RlZmluZSBXSU4zMl9QRVJGX0NPVU5URVIKKy8qIFdpbjMyIGhhcyBiZXR0ZXIgY2xvY2sgcmVwbGFjZW1lbnQ7IHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uLCBkdWUgdG8gTWFyaworICAgSGFtbW9uZCBhbmQgVGltIFBldGVycyAqLworc3RhdGljIGludAord2luX3BlcmZfY291bnRlcihfUHlfY2xvY2tfaW5mb190ICppbmZvLCBQeU9iamVjdCAqKnJlc3VsdCkKIHsKLSAgICBzdGF0aWMgTEFSR0VfSU5URUdFUiBjdHJTdGFydDsKLSAgICBzdGF0aWMgZG91YmxlIGRpdmlzb3IgPSAwLjA7CisgICAgc3RhdGljIExPTkdMT05HIGNwdV9mcmVxdWVuY3kgPSAwOworICAgIHN0YXRpYyBMT05HTE9ORyBjdHJTdGFydDsKICAgICBMQVJHRV9JTlRFR0VSIG5vdzsKICAgICBkb3VibGUgZGlmZjsKIAotICAgIGlmIChkaXZpc29yID09IDAuMCkgeworICAgIGlmIChjcHVfZnJlcXVlbmN5ID09IDApIHsKICAgICAgICAgTEFSR0VfSU5URUdFUiBmcmVxOwotICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY3RyU3RhcnQpOworICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKKyAgICAgICAgY3RyU3RhcnQgPSBub3cuUXVhZFBhcnQ7CiAgICAgICAgIGlmICghUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcSkgfHwgZnJlcS5RdWFkUGFydCA9PSAwKSB7CiAgICAgICAgICAgICAvKiBVbmxpa2VseSB0byBoYXBwZW4gLSB0aGlzIHdvcmtzIG9uIGFsbCBpbnRlbAogICAgICAgICAgICAgICAgbWFjaGluZXMgYXQgbGVhc3QhICBSZXZlcnQgdG8gY2xvY2soKSAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT0NLU19QRVJfU0VDKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGRpdmlzb3IgPSAoZG91YmxlKWZyZXEuUXVhZFBhcnQ7CisgICAgICAgIGNwdV9mcmVxdWVuY3kgPSBmcmVxLlF1YWRQYXJ0OwogICAgIH0KICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKLSAgICBkaWZmID0gKGRvdWJsZSkobm93LlF1YWRQYXJ0IC0gY3RyU3RhcnQuUXVhZFBhcnQpOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIGRpdmlzb3IpOworICAgIGRpZmYgPSAoZG91YmxlKShub3cuUXVhZFBhcnQgLSBjdHJTdGFydCk7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjAgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3k7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICAqcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKGRpZmYgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3kpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChIQVZFX0NMT0NLKQorI2RlZmluZSBQWUNMT0NLCitzdGF0aWMgUHlPYmplY3QqCitweWNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCisgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAod2luX3BlcmZfY291bnRlcihpbmZvLCAmcmVzKSA9PSAwKQorICAgICAgICByZXR1cm4gcmVzOworI2VuZGlmCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CiB9CiAKLSNkZWZpbmUgSEFWRV9DTE9DSyAvKiBTbyBpdCBnZXRzIGluY2x1ZGVkIGluIHRoZSBtZXRob2RzICovCi0jZW5kaWYgLyogTVNfV0lORE9XUyAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICovCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9jbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHljbG9jayhOVUxMKTsKK30KIAotI2lmZGVmIEhBVkVfQ0xPQ0sKIFB5RG9jX1NUUlZBUihjbG9ja19kb2MsCiAiY2xvY2soKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXApAQCAtMTM4LDEyICsxNjYsOTMgQEAKIHJlY29yZHMuIik7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfZ2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXR0aW1lIiwgJmNsa19pZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gY2xvY2tfZ2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKKyAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXR0aW1lX2RvYywKKyJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCitcblwKK1JldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfc2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNsa19pZDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjbG9ja19zZXR0aW1lIiwgJmNsa19pZCwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvYmosICZ0cC50dl9zZWMsICZ0cC50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19zZXR0aW1lKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGNsb2NrX3NldHRpbWVfZG9jLAorImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAorXG5cCitTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2Nsb2NrX2dldHJlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXRyZXMiLCAmY2xrX2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19nZXRyZXMoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CisgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXRyZXNfZG9jLAorImNsb2NrX2dldHJlcyhjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAorXG5cCitSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGRvdWJsZSBzZWNzOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDpzbGVlcCIsICZzZWNzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNlY3MgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNsZWVwIGxlbmd0aCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKGZsb2F0c2xlZXAoc2VjcykgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMTY2LDYgKzI3NSwxMCBAQAogICAgIHsidG1fd2RheSIsICJkYXkgb2Ygd2VlaywgcmFuZ2UgWzAsIDZdLCBNb25kYXkgaXMgMCJ9LAogICAgIHsidG1feWRheSIsICJkYXkgb2YgeWVhciwgcmFuZ2UgWzEsIDM2Nl0ifSwKICAgICB7InRtX2lzZHN0IiwgIjEgaWYgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0LCAwIGlmIG5vdCwgYW5kIC0xIGlmIHVua25vd24ifSwKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgeyJ0bV96b25lIiwgImFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lIn0sCisgICAgeyJ0bV9nbXRvZmYiLCAib2Zmc2V0IGZyb20gVVRDIGluIHNlY29uZHMifSwKKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgezB9CiB9OwogCkBAIC0xODUsNiArMjk4LDcgQEAKIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFN0cnVjdFRpbWVUeXBlOwogCisKIHN0YXRpYyBQeU9iamVjdCAqCiB0bXRvdHVwbGUoc3RydWN0IHRtICpwKQogewpAQCAtMjAzLDYgKzMxNywxMSBAQAogICAgIFNFVCg2LCAocC0+dG1fd2RheSArIDYpICUgNyk7IC8qIFdhbnQgTW9uZGF5ID09IDAgKi8KICAgICBTRVQoNywgcC0+dG1feWRheSArIDEpOyAgICAgICAgLyogV2FudCBKYW51YXJ5LCAxID09IDEgKi8KICAgICBTRVQoOCwgcC0+dG1faXNkc3QpOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCisgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocC0+dG1fem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKKyAgICBTRVQoMTAsIHAtPnRtX2dtdG9mZik7CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI3VuZGVmIFNFVAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X1hERUNSRUYodik7CkBAIC0yMTIsNTUgKzMzMSw0OSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdGltZV9jb252ZXJ0KGRvdWJsZSB3aGVuLCBzdHJ1Y3QgdG0gKiAoKmZ1bmN0aW9uKShjb25zdCB0aW1lX3QgKikpCi17Ci0gICAgc3RydWN0IHRtICpwOwotICAgIHRpbWVfdCB3aGVudCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh3aGVuKTsKLQotICAgIGlmICh3aGVudCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGVycm5vID0gMDsKLSAgICBwID0gZnVuY3Rpb24oJndoZW50KTsKLSAgICBpZiAocCA9PSBOVUxMKSB7Ci0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRtdG90dXBsZShwKTsKLX0KLQogLyogUGFyc2UgYXJnIHR1cGxlIHRoYXQgY2FuIGNvbnRhaW4gYW4gb3B0aW9uYWwgZmxvYXQtb3ItTm9uZSB2YWx1ZTsKICAgIGZvcm1hdCBuZWVkcyB0byBiZSAifE86bmFtZSIuCiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX2RvdWJsZV9hcmdzKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIGRvdWJsZSAqcHdoZW4pCitwYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQogewogICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CisgICAgdGltZV90IHdoZW50OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIGZvcm1hdCwgJm90KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgKnB3aGVuID0gZmxvYXR0aW1lKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRvdWJsZSB3aGVuID0gUHlGbG9hdF9Bc0RvdWJsZShvdCk7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpwd2hlbiA9IHdoZW47CisgICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkgeworICAgICAgICB3aGVudCA9IHRpbWUoTlVMTCk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqcHdoZW4gPSB3aGVudDsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfZ210aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBkb3VibGUgd2hlbjsKLSAgICBpZiAoIXBhcnNlX3RpbWVfZG91YmxlX2FyZ3MoYXJncywgInxPOmdtdGltZSIsICZ3aGVuKSkKKyAgICB0aW1lX3Qgd2hlbjsKKyAgICBzdHJ1Y3QgdG0gYnVmLCAqbG9jYWw7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgZ210aW1lKTsKKworICAgIGVycm5vID0gMDsKKyAgICBsb2NhbCA9IGdtdGltZSgmd2hlbik7CisgICAgaWYgKGxvY2FsID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKyAgICBidWYgPSAqbG9jYWw7CisgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCkBAIC0yNjgsMTUgKzM4MSw0MiBAQAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXAogXG5cCiBDb252ZXJ0IHNlY29uZHMgc2luY2UgdGhlIEVwb2NoIHRvIGEgdGltZSB0dXBsZSBleHByZXNzaW5nIFVUQyAoYS5rLmEuXG5cCi1HTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuIik7CitHTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuXG5cCitcblwKK0lmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdG1fZ210b2ZmIGFuZCB0bV96b25lLCB0aGV5IGFyZSBhdmFpbGFibGUgYXNcblwKK2F0dHJpYnV0ZXMgb25seS4iKTsKKworc3RhdGljIGludAorcHlsb2NhbHRpbWUodGltZV90ICp0aW1lcCwgc3RydWN0IHRtICpyZXN1bHQpCit7CisgICAgc3RydWN0IHRtICpsb2NhbDsKKworICAgIGFzc2VydCAodGltZXAgIT0gTlVMTCk7CisgICAgbG9jYWwgPSBsb2NhbHRpbWUodGltZXApOworICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7CisgICAgICAgIC8qIHVuY29udmVydGlibGUgdGltZSAqLworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAqcmVzdWx0ID0gKmxvY2FsOworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9sb2NhbHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB3aGVuOwotICAgIGlmICghcGFyc2VfdGltZV9kb3VibGVfYXJncyhhcmdzLCAifE86bG9jYWx0aW1lIiwgJndoZW4pKQorICAgIHRpbWVfdCB3aGVuOworICAgIHN0cnVjdCB0bSBidWY7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgbG9jYWx0aW1lKTsKKyAgICBpZiAocHlsb2NhbHRpbWUoJndoZW4sICZidWYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIobG9jYWx0aW1lX2RvYywKQEAgLTMwNyw1MyArNDQ3LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZwLT50bV9ob3VyLCAmcC0+dG1fbWluLCAmcC0+dG1fc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmcC0+dG1fd2RheSwgJnAtPnRtX3lkYXksICZwLT50bV9pc2RzdCkpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgLyogSWYgeWVhciBpcyBzcGVjaWZpZWQgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMsIGl0cyBpbnRlcnByZXRhdGlvbgotICAgICAqIGRlcGVuZHMgb24gdGhlIGFjY2VwdDJkeWVhciB2YWx1ZS4KLSAgICAgKgotICAgICAqIElmIGFjY2VwdDJkeWVhciBpcyB0cnVlIChkZWZhdWx0KSwgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGlzCi0gICAgICogaW52b2tlZCBhcyBmb2xsb3dzOgotICAgICAqCi0gICAgICogICAtIGZvciAyLWRpZ2l0IHllYXIsIGNlbnR1cnkgaXMgZ3Vlc3NlZCBhY2NvcmRpbmcgdG8gUE9TSVggcnVsZXMgZm9yCi0gICAgICogICAgICAleSBzdHJwdGltZSBmb3JtYXQ6IDIxc3QgY2VudHVyeSBmb3IgeSA8IDY5LCAyMHRoIGNlbnR1cnkKLSAgICAgKiAgICAgIG90aGVyd2lzZS4gIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBpc3N1ZWQgd2hlbiBjZW50dXJ5Ci0gICAgICogICAgICBpbmZvcm1hdGlvbiBpcyBndWVzc2VkIGluIHRoaXMgd2F5LgotICAgICAqCi0gICAgICogICAtIGZvciAzLWRpZ2l0IG9yIG5lZ2F0aXZlIHllYXIsIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgotICAgICAqCi0gICAgICogSWYgYWNjZXB0MmR5ZWFyIGlzIGZhbHNlIChzZXQgYnkgdGhlIHByb2dyYW0gb3IgYXMgYSByZXN1bHQgb2YgYQotICAgICAqIG5vbi1lbXB0eSB2YWx1ZSBhc3NpZ25lZCB0byBQWVRIT05ZMksgZW52aXJvbm1lbnQgdmFyaWFibGUpIGFsbCB5ZWFyCi0gICAgICogdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBnaXZlbi4KLSAgICAgKi8KLSAgICBpZiAoeSA8IDEwMDApIHsKLSAgICAgICAgUHlPYmplY3QgKmFjY2VwdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZGRpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0MmR5ZWFyIik7Ci0gICAgICAgIGlmIChhY2NlcHQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IGFjY2VwdHZhbCA9ICBQeU9iamVjdF9Jc1RydWUoYWNjZXB0KTsKLSAgICAgICAgICAgIGlmIChhY2NlcHR2YWwgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBpZiAoYWNjZXB0dmFsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKDAgPD0geSAmJiB5IDwgNjkpCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMjAwMDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICg2OSA8PSB5ICYmIHkgPCAxMDApCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMTkwMDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWVhciBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNlbnR1cnkgaW5mbyBndWVzc2VkIGZvciBhIDItZGlnaXQgeWVhci4iLCAxKSAhPSAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgcC0+dG1feWVhciA9IHkgLSAxOTAwOwogICAgIHAtPnRtX21vbi0tOwogICAgIHAtPnRtX3dkYXkgPSAocC0+dG1fd2RheSArIDEpICUgNzsKICAgICBwLT50bV95ZGF5LS07CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIGlmIChQeV9UWVBFKGFyZ3MpID09ICZTdHJ1Y3RUaW1lVHlwZSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgOSk7CisgICAgICAgIHAtPnRtX3pvbmUgPSBpdGVtID09IFB5X05vbmUgPyBOVUxMIDogX1B5VW5pY29kZV9Bc1N0cmluZyhpdGVtKTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMTApOworICAgICAgICBwLT50bV9nbXRvZmYgPSBpdGVtID09IFB5X05vbmUgPyAwIDogUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHJldHVybiAxOwogfQogCkBAIC00NzAsNyArNTc4LDggQEAKIAogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ5OCw3ICs2MDcsNyBAQAogICAgIGZtdCA9IGZvcm1hdDsKICNlbHNlCiAgICAgLyogQ29udmVydCB0aGUgdW5pY29kZSBzdHJpbmcgdG8gYW4gYXNjaWkgb25lICovCi0gICAgZm9ybWF0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChmb3JtYXRfYXJnKTsKKyAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKGZvcm1hdF9hcmcsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7CkBAIC01NDksNyArNjU4LDggQEAKICNpZmRlZiBIQVZFX1dDU0ZUSU1FCiAgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKG91dGJ1ZiwgYnVmbGVuKTsKICNlbHNlCi0gICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShvdXRidWYsIGJ1Zmxlbik7CisgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShvdXRidWYsIGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbmRpZgogICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODcsMTEgKzY5NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpzdHJwdGltZV9tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJfc3RycHRpbWUiKTsKICAgICBQeU9iamVjdCAqc3RycHRpbWVfcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9zdHJwdGltZV90aW1lKTsKIAogICAgIGlmICghc3RycHRpbWVfbW9kdWxlKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJwdGltZV9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cnB0aW1lX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9zdHJwdGltZV90aW1lIiwgIk8iLCBhcmdzKTsKKyAgICBzdHJwdGltZV9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cnB0aW1lX21vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19zdHJwdGltZV90aW1lLCAiTyIsIGFyZ3MpOwogICAgIFB5X0RFQ1JFRihzdHJwdGltZV9tb2R1bGUpOwogICAgIHJldHVybiBzdHJwdGltZV9yZXN1bHQ7CiB9CkBAIC02MDgsMzEgKzcxOSwyMCBAQAogewogICAgIC8qIEluc3BpcmVkIGJ5IE9wZW4gR3JvdXAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBhdAogICAgICAqIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL2FzY3RpbWUuaHRtbCAqLwotICAgIHN0YXRpYyBjaGFyIHdkYXlfbmFtZVs3XVszXSA9IHsKKyAgICBzdGF0aWMgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CiAgICAgICAgICJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiCiAgICAgfTsKLSAgICBzdGF0aWMgY2hhciBtb25fbmFtZVsxMl1bM10gPSB7CisgICAgc3RhdGljIGNoYXIgbW9uX25hbWVbMTJdWzRdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKLSAgICBjaGFyIGJ1ZlsyMF07IC8qICdTdW4gU2VwIDE2IDAxOjAzOjUyXDAnICovCi0gICAgaW50IG47Ci0KLSAgICBuID0gUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJS4zcyAlLjNzJTNkICUuMmQ6JS4yZDolLjJkIiwKLSAgICAgICAgICAgICAgICAgICAgICB3ZGF5X25hbWVbdGltZXB0ci0+dG1fd2RheV0sCi0gICAgICAgICAgICAgICAgICAgICAgbW9uX25hbWVbdGltZXB0ci0+dG1fbW9uXSwKLSAgICAgICAgICAgICAgICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWVwdHItPnRtX21pbiwgdGltZXB0ci0+dG1fc2VjKTsKLSAgICAvKiBYWFg6IHNpbmNlIHRoZSBmaWVsZHMgdXNlZCBieSBzbnByaW50ZiBhYm92ZSBhcmUgdmFsaWRhdGVkIGluIGNoZWNrdG0sCi0gICAgICogdGhlIGZvbGxvd2luZyBjb25kaXRpb24gc2hvdWxkIG5ldmVyIHRyaWdnZXIuIFdlIGtlZXAgdGhlIGNoZWNrIGJlY2F1c2UKLSAgICAgKiBoaXN0b3JpY2FsbHkgZml4ZWQgc2l6ZSBidWZmZXIgdXNlZCBpbiBhc2N0aW1lIHdhcyB0aGUgc291cmNlIG9mCi0gICAgICogY3Jhc2hlcy4gKi8KLSAgICBpZiAobiArIDEgIT0gc2l6ZW9mKGJ1ZikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmNvbnZlcnRpYmxlIHRpbWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyAlZCIsIGJ1ZiwgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiVzICVzJTNkICUuMmQ6JS4yZDolLjJkICVkIiwKKyAgICAgICAgd2RheV9uYW1lW3RpbWVwdHItPnRtX3dkYXldLAorICAgICAgICBtb25fbmFtZVt0aW1lcHRyLT50bV9tb25dLAorICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAorICAgICAgICB0aW1lcHRyLT50bV9taW4sIHRpbWVwdHItPnRtX3NlYywKKyAgICAgICAgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjQ1LDcgKzc0NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CkBAIC02NjEsMjggKzc2MywxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY3RpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CiAgICAgdGltZV90IHR0OwotICAgIHN0cnVjdCB0bSAqdGltZXB0cjsKLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImN0aW1lIiwgMCwgMSwgJm90KSkKKyAgICBzdHJ1Y3QgdG0gYnVmOworICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmN0aW1lIiwgJnR0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgdHQgPSB0aW1lKE5VTEwpOwotICAgIGVsc2UgewotICAgICAgICBkb3VibGUgZHQgPSBQeUZsb2F0X0FzRG91YmxlKG90KTsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQoZHQpOwotICAgICAgICBpZiAodHQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHRpbWVwdHIgPSBsb2NhbHRpbWUoJnR0KTsKLSAgICBpZiAodGltZXB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5jb252ZXJ0aWJsZSB0aW1lIik7CisgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gX2FzY3RpbWUodGltZXB0cik7CisgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIoY3RpbWVfZG9jLApAQCAtNzE1LDcgKzgwMiwxMCBAQAogUHlEb2NfU1RSVkFSKG1rdGltZV9kb2MsCiAibWt0aW1lKHR1cGxlKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAotQ29udmVydCBhIHRpbWUgdHVwbGUgaW4gbG9jYWwgdGltZSB0byBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC4iKTsKK0NvbnZlcnQgYSB0aW1lIHR1cGxlIGluIGxvY2FsIHRpbWUgdG8gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guXG5cCitOb3RlIHRoYXQgbWt0aW1lKGdtdGltZSgwKSkgd2lsbCBub3QgZ2VuZXJhbGx5IHJldHVybiB6ZXJvIGZvciBtb3N0XG5cCit0aW1lIHpvbmVzOyBpbnN0ZWFkIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGVpdGhlciBiZSBlcXVhbCB0byB0aGF0XG5cCitvZiB0aGUgdGltZXpvbmUgb3IgYWx0em9uZSBhdHRyaWJ1dGVzIG9uIHRoZSB0aW1lIG1vZHVsZS4iKTsKICNlbmRpZiAvKiBIQVZFX01LVElNRSAqLwogCiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCkBAIC03NTUsNiArODQ1LDQwMiBAQAogc2hvdWxkIG5vdCBiZSByZWxpZWQgb24uIik7CiAjZW5kaWYgLyogSEFWRV9XT1JLSU5HX1RaU0VUICovCiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCisgICAgfHwgKGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSBcCisgICAgICAgICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkpCisjZGVmaW5lIFBZTU9OT1RPTklDCisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCitzdGF0aWMgUHlPYmplY3QqCitweW1vbm90b25pYyhfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBzdGF0aWMgVUxPTkdMT05HICgqR2V0VGlja0NvdW50NjQpICh2b2lkKSA9IE5VTEw7CisgICAgc3RhdGljIFVMT05HTE9ORyAoQ0FMTEJBQ0sgKlB5X0dldFRpY2tDb3VudDY0KSh2b2lkKTsKKyAgICBzdGF0aWMgaW50IGhhc19nZXRpY2tjb3VudDY0ID0gLTE7CisgICAgZG91YmxlIHJlc3VsdDsKKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCA9PSAtMSkgeworICAgICAgICAvKiBHZXRUaWNrQ291bnQ2NCgpIHdhcyBhZGRlZCB0byBXaW5kb3dzIFZpc3RhICovCisgICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikgeworICAgICAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKKyAgICAgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOworICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0VGlja0NvdW50NjQgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRUaWNrQ291bnQ2NCIpOworICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAoUHlfR2V0VGlja0NvdW50NjQgIT0gTlVMTCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAwOworICAgIH0KKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCkgeworICAgICAgICBVTE9OR0xPTkcgdGlja3M7CisgICAgICAgIHRpY2tzID0gUHlfR2V0VGlja0NvdW50NjQoKTsKKyAgICAgICAgcmVzdWx0ID0gKGRvdWJsZSl0aWNrcyAqIDFlLTM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGF0aWMgRFdPUkQgbGFzdF90aWNrcyA9IDA7CisgICAgICAgIHN0YXRpYyBEV09SRCBuX292ZXJmbG93ID0gMDsKKyAgICAgICAgRFdPUkQgdGlja3M7CisKKyAgICAgICAgdGlja3MgPSBHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgaWYgKHRpY2tzIDwgbGFzdF90aWNrcykKKyAgICAgICAgICAgIG5fb3ZlcmZsb3crKzsKKyAgICAgICAgbGFzdF90aWNrcyA9IHRpY2tzOworCisgICAgICAgIHJlc3VsdCA9IGxkZXhwKG5fb3ZlcmZsb3csIDMyKTsKKyAgICAgICAgcmVzdWx0ICs9IHRpY2tzOworICAgICAgICByZXN1bHQgKj0gMWUtMzsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworICAgICAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpCisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50KCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyZXN1bHQpOworCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKKyAgICB1aW50NjRfdCB0aW1lOworICAgIGRvdWJsZSBzZWNzOworCisgICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90CisgICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLworICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKKyAgICB9CisKKyAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgc2VjcyA9IChkb3VibGUpdGltZSAqIHRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY3MpOworCisjZWxpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKQorICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7CisjZWxzZQorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKKyNlbmRpZgorCisgICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHApICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhjbGtfaWQsICZyZXMpID09IDApCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX21vbm90b25pYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHltb25vdG9uaWMoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihtb25vdG9uaWNfZG9jLAorIm1vbm90b25pYygpIC0+IGZsb2F0XG5cCitcblwKK01vbm90b25pYyBjbG9jaywgY2Fubm90IGdvIGJhY2t3YXJkLiIpOworI2VuZGlmICAgLyogUFlNT05PVE9OSUMgKi8KKworc3RhdGljIFB5T2JqZWN0KgorcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoUFlNT05PVE9OSUMpCisgICAgUHlPYmplY3QgKnJlczsKKyNlbmRpZgorI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKQorICAgIHN0YXRpYyBpbnQgdXNlX3BlcmZfY291bnRlciA9IDE7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIHN0YXRpYyBpbnQgdXNlX21vbm90b25pYyA9IDE7CisjZW5kaWYKKworI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgorICAgIGlmICh1c2VfcGVyZl9jb3VudGVyKSB7CisgICAgICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB1c2VfcGVyZl9jb3VudGVyID0gMDsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCisgICAgaWYgKHVzZV9tb25vdG9uaWMpIHsKKyAgICAgICAgcmVzID0gcHltb25vdG9uaWMoaW5mbyk7CisgICAgICAgIGlmIChyZXMgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIHVzZV9tb25vdG9uaWMgPSAwOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0dGltZShpbmZvKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcGVyZl9jb3VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBwZXJmX2NvdW50ZXIoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwZXJmX2NvdW50ZXJfZG9jLAorInBlcmZfY291bnRlcigpIC0+IGZsb2F0XG5cCitcblwKK1BlcmZvcm1hbmNlIGNvdW50ZXIgZm9yIGJlbmNobWFya2luZy4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcHlfcHJvY2Vzc190aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIEhBTkRMRSBwcm9jZXNzOworICAgIEZJTEVUSU1FIGNyZWF0aW9uX3RpbWUsIGV4aXRfdGltZSwga2VybmVsX3RpbWUsIHVzZXJfdGltZTsKKyAgICBVTEFSR0VfSU5URUdFUiBsYXJnZTsKKyAgICBkb3VibGUgdG90YWw7CisgICAgQk9PTCBvazsKKworICAgIHByb2Nlc3MgPSBHZXRDdXJyZW50UHJvY2VzcygpOworICAgIG9rID0gR2V0UHJvY2Vzc1RpbWVzKHByb2Nlc3MsICZjcmVhdGlvbl90aW1lLCAmZXhpdF90aW1lLCAma2VybmVsX3RpbWUsICZ1c2VyX3RpbWUpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIGxhcmdlLnUuTG93UGFydCA9IGtlcm5lbF90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IGtlcm5lbF90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsID0gKGRvdWJsZSlsYXJnZS5RdWFkUGFydDsKKyAgICBsYXJnZS51Lkxvd1BhcnQgPSB1c2VyX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gdXNlcl90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsICs9IChkb3VibGUpbGFyZ2UuUXVhZFBhcnQ7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0UHJvY2Vzc1RpbWVzKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodG90YWwgKiAxZS03KTsKKyNlbHNlCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JFU09VUkNFX0gpCisgICAgc3RydWN0IHJ1c2FnZSBydTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfVElNRVMKKyAgICBzdHJ1Y3QgdG1zIHQ7CisgICAgc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgXAorICAgICYmIChkZWZpbmVkKENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCkgfHwgZGVmaW5lZChDTE9DS19QUk9GKSkKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisjaWZkZWYgQ0xPQ0tfUFJPRgorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19QUk9GOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPRikiOworI2Vsc2UKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKSI7CisjZW5kaWYKKworICAgIGlmIChjbG9ja19nZXR0aW1lKGNsa19pZCwgJnRwKSA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworICAgIH0KKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NZU19SRVNPVVJDRV9IKQorICAgIGlmIChnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZydSkgPT0gMCkgeworICAgICAgICBkb3VibGUgdG90YWw7CisgICAgICAgIHRvdGFsID0gcnUucnVfdXRpbWUudHZfc2VjICsgcnUucnVfdXRpbWUudHZfdXNlYyAqIDFlLTY7CisgICAgICAgIHRvdGFsICs9IHJ1LnJ1X3N0aW1lLnR2X3NlYyArIHJ1LnJ1X3N0aW1lLnR2X3VzZWMgKiAxZS02OworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0cnVzYWdlKFJVU0FHRV9TRUxGKSI7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfVElNRVMKKyAgICBpZiAodGltZXMoJnQpICE9IChjbG9ja190KS0xKSB7CisgICAgICAgIGRvdWJsZSB0b3RhbDsKKworICAgICAgICBpZiAodGlja3NfcGVyX3NlY29uZCA9PSAtMSkgeworI2lmIGRlZmluZWQoSEFWRV9TWVNDT05GKSAmJiBkZWZpbmVkKF9TQ19DTEtfVENLKQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworICAgICAgICAgICAgaWYgKHRpY2tzX3Blcl9zZWNvbmQgPCAxKQorICAgICAgICAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKKyNlbGlmIGRlZmluZWQoSFopCisgICAgICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gSFo7CisjZWxzZQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IDYwOyAvKiBtYWdpYyBmYWxsYmFjayB2YWx1ZTsgbWF5IGJlIGJvZ3VzICovCisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aWNrc19wZXJfc2Vjb25kICE9IC0xKSB7CisgICAgICAgICAgICB0b3RhbCA9IChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kOworICAgICAgICAgICAgdG90YWwgKz0gKGRvdWJsZSl0LnRtc19zdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gInRpbWVzKCkiOworICAgICAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMCAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcHJvY2Vzc190aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBweV9wcm9jZXNzX3RpbWUoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwcm9jZXNzX3RpbWVfZG9jLAorInByb2Nlc3NfdGltZSgpIC0+IGZsb2F0XG5cCitcblwKK1Byb2Nlc3MgdGltZSBmb3IgcHJvZmlsaW5nOiBzdW0gb2YgdGhlIGtlcm5lbCBhbmQgdXNlci1zcGFjZSBDUFUgdGltZS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9nZXRfY2xvY2tfaW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqbmFtZTsKKyAgICBfUHlfY2xvY2tfaW5mb190IGluZm87CisgICAgUHlPYmplY3QgKm9iaiA9IE5VTEwsICpkaWN0LCAqbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0X2Nsb2NrX2luZm8iLCAmbmFtZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgUHlfREVCVUcKKyAgICBpbmZvLmltcGxlbWVudGF0aW9uID0gTlVMTDsKKyAgICBpbmZvLm1vbm90b25pYyA9IC0xOworICAgIGluZm8uYWRqdXN0YWJsZSA9IC0xOworICAgIGluZm8ucmVzb2x1dGlvbiA9IC0xLjA7CisjZWxzZQorICAgIGluZm8uaW1wbGVtZW50YXRpb24gPSAiIjsKKyAgICBpbmZvLm1vbm90b25pYyA9IDA7CisgICAgaW5mby5hZGp1c3RhYmxlID0gMDsKKyAgICBpbmZvLnJlc29sdXRpb24gPSAxLjA7CisjZW5kaWYKKworICAgIGlmIChzdHJjbXAobmFtZSwgInRpbWUiKSA9PSAwKQorICAgICAgICBvYmogPSBmbG9hdHRpbWUoJmluZm8pOworI2lmZGVmIFBZQ0xPQ0sKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgImNsb2NrIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHljbG9jaygmaW5mbyk7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibW9ub3RvbmljIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHltb25vdG9uaWMoJmluZm8pOworI2VuZGlmCisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJwZXJmX2NvdW50ZXIiKSA9PSAwKQorICAgICAgICBvYmogPSBwZXJmX2NvdW50ZXIoJmluZm8pOworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicHJvY2Vzc190aW1lIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHlfcHJvY2Vzc190aW1lKCZpbmZvKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmtub3duIGNsb2NrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0RFQ1JFRihvYmopOworCisgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFzc2VydChpbmZvLmltcGxlbWVudGF0aW9uICE9IE5VTEwpOworICAgIG9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGluZm8uaW1wbGVtZW50YXRpb24pOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImltcGxlbWVudGF0aW9uIiwgb2JqKSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihvYmopOworCisgICAgYXNzZXJ0KGluZm8ubW9ub3RvbmljICE9IC0xKTsKKyAgICBvYmogPSBQeUJvb2xfRnJvbUxvbmcoaW5mby5tb25vdG9uaWMpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIm1vbm90b25pYyIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIGFzc2VydChpbmZvLmFkanVzdGFibGUgIT0gLTEpOworICAgIG9iaiA9IFB5Qm9vbF9Gcm9tTG9uZyhpbmZvLmFkanVzdGFibGUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImFkanVzdGFibGUiLCBvYmopID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKG9iaik7CisKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uID4gMC4wKTsKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uIDw9IDEuMCk7CisgICAgb2JqID0gUHlGbG9hdF9Gcm9tRG91YmxlKGluZm8ucmVzb2x1dGlvbik7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAicmVzb2x1dGlvbiIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhkaWN0KTsKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIG5zOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgUHlfWERFQ1JFRihvYmopOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoZ2V0X2Nsb2NrX2luZm9fZG9jLAorImdldF9jbG9ja19pbmZvKG5hbWU6IHN0cikgLT4gZGljdFxuXAorXG5cCitHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmllZCBjbG9jay4iKTsKKwogc3RhdGljIHZvaWQKIFB5SW5pdF90aW1lem9uZShQeU9iamVjdCAqbSkgewogICAgIC8qIFRoaXMgY29kZSBtb3ZlZCBmcm9tIFB5SW5pdF90aW1lIHdob2xlc2FsZSB0byBhbGxvdyBjYWxsaW5nIGl0IGZyb20KQEAgLTc5MSw4ICsxMjc3LDggQEAKICNlbmRpZiAvKiBQWU9TX09TMiAqLwogI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImRheWxpZ2h0IiwgZGF5bGlnaHQpOwotICAgIG90ejAgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSh0em5hbWVbMF0sIHN0cmxlbih0em5hbWVbMF0pKTsKLSAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUodHpuYW1lWzFdLCBzdHJsZW4odHpuYW1lWzFdKSk7CisgICAgb3R6MCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzBdLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgb3R6MSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzFdLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0em5hbWUiLCBQeV9CdWlsZFZhbHVlKCIoTk4pIiwgb3R6MCwgb3R6MSkpOwogI2Vsc2UgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KICNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCkBAIC04NDMsMTQgKzEzMjksMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHp6KSIsIF90em5hbWVbMF0sIF90em5hbWVbMV0pKTsKICNlbmRpZiAvKiBfX0NZR1dJTl9fICovCiAjZW5kaWYgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KKworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKKyNpZmRlZiBDTE9DS19NT05PVE9OSUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOworI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiB9CiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRpbWVfbWV0aG9kc1tdID0gewogICAgIHsidGltZSIsICAgICAgICAgICAgdGltZV90aW1lLCBNRVRIX05PQVJHUywgdGltZV9kb2N9LAotI2lmZGVmIEhBVkVfQ0xPQ0sKKyNpZmRlZiBQWUNMT0NLCiAgICAgeyJjbG9jayIsICAgICAgICAgICB0aW1lX2Nsb2NrLCBNRVRIX05PQVJHUywgY2xvY2tfZG9jfSwKICNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIHsiY2xvY2tfZ2V0dGltZSIsICAgdGltZV9jbG9ja19nZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHRpbWVfZG9jfSwKKyAgICB7ImNsb2NrX3NldHRpbWUiLCAgIHRpbWVfY2xvY2tfc2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19zZXR0aW1lX2RvY30sCisgICAgeyJjbG9ja19nZXRyZXMiLCAgICB0aW1lX2Nsb2NrX2dldHJlcywgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXRyZXNfZG9jfSwKKyNlbmRpZgogICAgIHsic2xlZXAiLCAgICAgICAgICAgdGltZV9zbGVlcCwgTUVUSF9WQVJBUkdTLCBzbGVlcF9kb2N9LAogICAgIHsiZ210aW1lIiwgICAgICAgICAgdGltZV9nbXRpbWUsIE1FVEhfVkFSQVJHUywgZ210aW1lX2RvY30sCiAgICAgeyJsb2NhbHRpbWUiLCAgICAgICB0aW1lX2xvY2FsdGltZSwgTUVUSF9WQVJBUkdTLCBsb2NhbHRpbWVfZG9jfSwKQEAgLTg2Niw2ICsxMzc2LDEyIEBACiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCiAgICAgeyJ0enNldCIsICAgICAgICAgICB0aW1lX3R6c2V0LCBNRVRIX05PQVJHUywgdHpzZXRfZG9jfSwKICNlbmRpZgorI2lmZGVmIFBZTU9OT1RPTklDCisgICAgeyJtb25vdG9uaWMiLCAgICAgICB0aW1lX21vbm90b25pYywgTUVUSF9OT0FSR1MsIG1vbm90b25pY19kb2N9LAorI2VuZGlmCisgICAgeyJwcm9jZXNzX3RpbWUiLCAgICB0aW1lX3Byb2Nlc3NfdGltZSwgTUVUSF9OT0FSR1MsIHByb2Nlc3NfdGltZV9kb2N9LAorICAgIHsicGVyZl9jb3VudGVyIiwgICAgdGltZV9wZXJmX2NvdW50ZXIsIE1FVEhfTk9BUkdTLCBwZXJmX2NvdW50ZXJfZG9jfSwKKyAgICB7ImdldF9jbG9ja19pbmZvIiwgIHRpbWVfZ2V0X2Nsb2NrX2luZm8sIE1FVEhfVkFSQVJHUywgZ2V0X2Nsb2NrX2luZm9fZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtODgxLDcgKzEzOTcsNyBAQAogXG5cCiBUaGUgb3RoZXIgcmVwcmVzZW50YXRpb24gaXMgYSB0dXBsZSBvZiA5IGludGVnZXJzIGdpdmluZyBsb2NhbCB0aW1lLlxuXAogVGhlIHR1cGxlIGl0ZW1zIGFyZTpcblwKLSAgeWVhciAoZm91ciBkaWdpdHMsIGUuZy4gMTk5OClcblwKKyAgeWVhciAoaW5jbHVkaW5nIGNlbnR1cnksIGUuZy4gMTk5OClcblwKICAgbW9udGggKDEtMTIpXG5cCiAgIGRheSAoMS0zMSlcblwKICAgaG91cnMgKDAtMjMpXG5cCkBAIC05MzMsNDYgKzE0NDksNjUgQEAKIFB5SW5pdF90aW1lKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgY2hhciAqcDsKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZ0aW1lbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEFjY2VwdCAyLWRpZ2l0IGRhdGVzIHVubGVzcyBQWVRIT05ZMksgaXMgc2V0IGFuZCBub24tZW1wdHkgKi8KLSAgICBwID0gUHlfR0VURU5WKCJQWVRIT05ZMksiKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiYWNjZXB0MmR5ZWFyIiwgKGxvbmcpICghcCB8fCAhKnApKTsKLSAgICAvKiBTcXVpcnJlbCBhd2F5IHRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGZvciB0aGUgeTJrIGNoZWNrICovCi0gICAgbW9kZGljdCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgUHlfSU5DUkVGKG1vZGRpY3QpOwotCiAgICAgLyogU2V0LCBvciByZXNldCwgbW9kdWxlIHZhcmlhYmxlcyBsaWtlIHRpbWUudGltZXpvbmUgKi8KICAgICBQeUluaXRfdGltZXpvbmUobSk7CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogSGVscGVyIHRvIGFsbG93IGludGVycnVwdHMgZm9yIFdpbmRvd3MuCi0gICAgICAgSWYgQ3RybCtDIGV2ZW50IGRlbGl2ZXJlZCB3aGlsZSBub3Qgc2xlZXBpbmcKLSAgICAgICBpdCB3aWxsIGJlIGlnbm9yZWQuCi0gICAgKi8KLSAgICBtYWluX3RocmVhZCA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKLSAgICBoSW50ZXJydXB0RXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7Ci0gICAgU2V0Q29uc29sZUN0cmxIYW5kbGVyKCBQeUN0cmxIYW5kbGVyLCBUUlVFKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RUaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKKyAgICAgICAgaWYgKCFHZXRWZXJzaW9uRXgoKE9TVkVSU0lPTklORk8qKSZ3aW52ZXIpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RUaW1lVHlwZSk7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgMTEpOworI2Vsc2UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDkpOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdHJ1Y3RfdGltZSIsIChQeU9iamVjdCopICZTdHJ1Y3RUaW1lVHlwZSk7CiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgIHJldHVybiBtOwogfQogCi1zdGF0aWMgZG91YmxlCi1mbG9hdHRpbWUodm9pZCkKK3N0YXRpYyBQeU9iamVjdCoKK2Zsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewogICAgIF9QeVRpbWVfdGltZXZhbCB0OwotICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZ0KTsKLSAgICByZXR1cm4gKGRvdWJsZSl0LnR2X3NlYyArIHQudHZfdXNlYyowLjAwMDAwMTsKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisgICAgaW50IHJldDsKKworICAgIC8qIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgZG9lcyBub3QgdXNlIGNsb2NrX2dldHRpbWUoKQorICAgICAgIGJlY2F1c2UgaXQgd291bGQgcmVxdWlyZSB0byBsaW5rIFB5dGhvbiB0byB0aGUgcnQgKHJlYWwtdGltZSkKKyAgICAgICBsaWJyYXJ5LCBhdCBsZWFzdCBvbiBMaW51eCAqLworICAgIHJldCA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cCk7CisgICAgaWYgKHJldCA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkiOworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgICAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhDTE9DS19SRUFMVElNRSwgJnJlcykgPT0gMCkKKyAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKKyAgICB9CisjZW5kaWYKKyAgICBfUHlUaW1lX2dldHRpbWVvZmRheV9pbmZvKCZ0LCBpbmZvKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpdC50dl9zZWMgKyB0LnR2X3VzZWMgKiAxZS02KTsKIH0KIAogCkBAIC05ODcsMjMgKzE1MjIsMjggQEAKICNpZiBkZWZpbmVkKEhBVkVfU0VMRUNUKSAmJiAhZGVmaW5lZChfX0VNWF9fKQogICAgIHN0cnVjdCB0aW1ldmFsIHQ7CiAgICAgZG91YmxlIGZyYWM7CisgICAgaW50IGVycjsKKwogICAgIGZyYWMgPSBmbW9kKHNlY3MsIDEuMCk7CiAgICAgc2VjcyA9IGZsb29yKHNlY3MpOwogICAgIHQudHZfc2VjID0gKGxvbmcpc2VjczsKICAgICB0LnR2X3VzZWMgPSAobG9uZykoZnJhYyoxMDAwMDAwLjApOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoc2VsZWN0KDAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsICZ0KSAhPSAwKSB7CisgICAgZXJyID0gc2VsZWN0KDAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsICZ0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIgIT0gMCkgewogI2lmZGVmIEVJTlRSCi0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotI2Vsc2UKLSAgICAgICAgaWYgKDEpIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUworICAgICAgICB7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICNlbGlmIGRlZmluZWQoX19XQVRDT01DX18pICYmICFkZWZpbmVkKF9fUU5YX18pCiAgICAgLyogWFhYIENhbid0IGludGVycnVwdCB0aGlzIHNsZWVwICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMTAyNCwxOCArMTU2NCwxNCBAQAogICAgICAgICAgKiBieSBHdWlkbywgb25seSB0aGUgbWFpbiB0aHJlYWQgY2FuIGJlIGludGVycnVwdGVkLgogICAgICAgICAgKi8KICAgICAgICAgdWxfbWlsbGlzID0gKHVuc2lnbmVkIGxvbmcpbWlsbGlzZWNzOwotICAgICAgICBpZiAodWxfbWlsbGlzID09IDAgfHwKLSAgICAgICAgICAgIG1haW5fdGhyZWFkICE9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkKKyAgICAgICAgaWYgKHVsX21pbGxpcyA9PSAwIHx8ICFfUHlPU19Jc01haW5UaHJlYWQoKSkKICAgICAgICAgICAgIFNsZWVwKHVsX21pbGxpcyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgRFdPUkQgcmM7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKICAgICAgICAgICAgIHJjID0gV2FpdEZvclNpbmdsZU9iamVjdChoSW50ZXJydXB0RXZlbnQsIHVsX21pbGxpcyk7CiAgICAgICAgICAgICBpZiAocmMgPT0gV0FJVF9PQkpFQ1RfMCkgewotICAgICAgICAgICAgICAgIC8qIFlpZWxkIHRvIG1ha2Ugc3VyZSByZWFsIFB5dGhvbiBzaWduYWwKLSAgICAgICAgICAgICAgICAgKiBoYW5kbGVyIGNhbGxlZC4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBTbGVlcCgxKTsKICAgICAgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCiAgICAgICAgICAgICAgICAgZXJybm8gPSBFSU5UUjsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RrYXBwaW5pdC5jIGIvTW9kdWxlcy90a2FwcGluaXQuYwppbmRleCBjMWY5N2IwLi4yZWQ4NTk0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RrYXBwaW5pdC5jCisrKyBiL01vZHVsZXMvdGthcHBpbml0LmMKQEAgLTI2LDcgKzI2LDkgQEAKIGludAogVGNsX0FwcEluaXQoVGNsX0ludGVycCAqaW50ZXJwKQogeworI2lmZGVmIFdJVEhfTU9SRUJVVFRPTlMKICAgICBUa19XaW5kb3cgbWFpbl93aW5kb3c7CisjZW5kaWYKICAgICBjb25zdCBjaGFyICpfdGtpbnRlcl9za2lwX3RrX2luaXQ7CiAjaWZkZWYgVEtJTlRFUl9QUk9URUNUX0xPQURUSwogICAgIGNvbnN0IGNoYXIgKl90a2ludGVyX3RrX2ZhaWxlZDsKQEAgLTExMSw3ICsxMTMsMTEgQEAKICAgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKICAgICB9CiAKKyNpZmRlZiBXSVRIX01PUkVCVVRUT05TCiAgICAgbWFpbl93aW5kb3cgPSBUa19NYWluV2luZG93KGludGVycCk7CisjZWxzZQorICAgIFRrX01haW5XaW5kb3coaW50ZXJwKTsKKyNlbmRpZgogCiAjaWZkZWYgVEtfQVFVQQogICAgIFRrTWFjT1NYSW5pdEFwcGxlRXZlbnRzKGludGVycCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKaW5kZXggNTNlNDhkZi4uZDMzOWY1OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YS5jCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwpAQCAtOTMsMTYgKzkzLDEzIEBACiAKIHN0YXRpYyBQeV9VQ1M0IGdldHVjaGFyKFB5VW5pY29kZU9iamVjdCAqb2JqKQogewotICAgIFB5X1VOSUNPREUgKnYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopOwotCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShvYmopID09IDEpCi0gICAgICAgIHJldHVybiAqdjsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZWxzZSBpZiAoKFB5VW5pY29kZV9HRVRfU0laRShvYmopID09IDIpICYmCi0gICAgICAgICAgICAgKDB4RDgwMCA8PSB2WzBdICYmIHZbMF0gPD0gMHhEQkZGKSAmJgotICAgICAgICAgICAgICgweERDMDAgPD0gdlsxXSAmJiB2WzFdIDw9IDB4REZGRikpCi0gICAgICAgIHJldHVybiAoKCh2WzBdICYgMHgzRkYpPDwxMCkgfCAodlsxXSAmIDB4M0ZGKSkgKyAweDEwMDAwOwotI2VuZGlmCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikgPT0gMSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCisgICAgICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7CisgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJuZWVkIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyIGFzIHBhcmFtZXRlciIpOwogICAgIHJldHVybiAoUHlfVUNTNCktMTsKQEAgLTQ0Myw3ICs0NDAsNyBAQAogICAgICAgIGZyb20gVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHksIGl0IHNob3VsZCBub3QgYmUgcG9zc2libGUKICAgICAgICB0byBvdmVyZmxvdyBkZWNvbXBfcHJlZml4LiAqLwogICAgIHByZWZpeF9pbmRleCA9IGRlY29tcF9kYXRhW2luZGV4XSAmIDI1NTsKLSAgICBhc3NlcnQocHJlZml4X2luZGV4IDwgKHNpemVvZihkZWNvbXBfcHJlZml4KS9zaXplb2YoKmRlY29tcF9wcmVmaXgpKSk7CisgICAgYXNzZXJ0KHByZWZpeF9pbmRleCA8IFB5X0FSUkFZX0xFTkdUSChkZWNvbXBfcHJlZml4KSk7CiAKICAgICAvKiBjb3B5IHByZWZpeCAqLwogICAgIGkgPSBzdHJsZW4oZGVjb21wX3ByZWZpeFtwcmVmaXhfaW5kZXhdKTsKQEAgLTQ5OCwzNiArNDk1LDQ3IEBACiBuZmRfbmZrZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgaykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKmksICplbmQsICpvOworICAgIFB5X1VDUzQgKm91dHB1dDsKKyAgICBQeV9zc2l6ZV90IGksIG8sIG9zaXplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgLyogTG9uZ2VzdCBkZWNvbXBvc2l0aW9uIGluIFVuaWNvZGUgMy4yOiBVK0ZERkEgKi8KLSAgICBQeV9VTklDT0RFIHN0YWNrWzIwXTsKKyAgICBQeV9VQ1M0IHN0YWNrWzIwXTsKICAgICBQeV9zc2l6ZV90IHNwYWNlLCBpc2l6ZTsKICAgICBpbnQgaW5kZXgsIHByZWZpeCwgY291bnQsIHN0YWNrcHRyOwogICAgIHVuc2lnbmVkIGNoYXIgcHJldiwgY3VyOwogCiAgICAgc3RhY2twdHIgPSAwOwotICAgIGlzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKGlucHV0KTsKKyAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKICAgICAvKiBPdmVyYWxsb2NhdGUgYXRtb3N0IDEwIGNoYXJhY3RlcnMuICovCiAgICAgc3BhY2UgPSAoaXNpemUgPiAxMCA/IDEwIDogaXNpemUpICsgaXNpemU7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNwYWNlKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBvc2l6ZSA9IHNwYWNlOworICAgIG91dHB1dCA9IFB5TWVtX01hbGxvYyhzcGFjZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgaWYgKCFvdXRwdXQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlucHV0KTsKLSAgICBlbmQgPSBpICsgaXNpemU7Ci0gICAgbyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7CisgICAgfQorICAgIGkgPSBvID0gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShpbnB1dCk7CiAKLSAgICB3aGlsZSAoaSA8IGVuZCkgewotICAgICAgICBzdGFja1tzdGFja3B0cisrXSA9ICppKys7CisgICAgd2hpbGUgKGkgPCBpc2l6ZSkgeworICAgICAgICBzdGFja1tzdGFja3B0cisrXSA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrKyk7CiAgICAgICAgIHdoaWxlKHN0YWNrcHRyKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNvZGUgPSBzdGFja1stLXN0YWNrcHRyXTsKKyAgICAgICAgICAgIFB5X1VDUzQgY29kZSA9IHN0YWNrWy0tc3RhY2twdHJdOwogICAgICAgICAgICAgLyogSGFuZ3VsIERlY29tcG9zaXRpb24gYWRkcyB0aHJlZSBjaGFyYWN0ZXJzIGluCiAgICAgICAgICAgICAgICBhIHNpbmdsZSBzdGVwLCBzbyB3ZSBuZWVkIGF0bGVhc3QgdGhhdCBtdWNoIHJvb20uICovCiAgICAgICAgICAgICBpZiAoc3BhY2UgPCAzKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCkgKyAxMDsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0ICpuZXdfb3V0cHV0OworICAgICAgICAgICAgICAgIG9zaXplICs9IDEwOwogICAgICAgICAgICAgICAgIHNwYWNlICs9IDEwOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIG5ld3NpemUpID09IC0xKQorICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBQeU1lbV9SZWFsbG9jKG91dHB1dCwgb3NpemUqc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3X291dHB1dCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgbyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkgKyBuZXdzaXplIC0gc3BhY2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dHB1dCA9IG5ld19vdXRwdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBIYW5ndWwgRGVjb21wb3NpdGlvbi4gKi8KICAgICAgICAgICAgIGlmIChTQmFzZSA8PSBjb2RlICYmIGNvZGUgPCAoU0Jhc2UrU0NvdW50KSkgewpAQCAtNTM1LDExICs1NDMsMTEgQEAKICAgICAgICAgICAgICAgICBpbnQgTCA9IExCYXNlICsgU0luZGV4IC8gTkNvdW50OwogICAgICAgICAgICAgICAgIGludCBWID0gVkJhc2UgKyAoU0luZGV4ICUgTkNvdW50KSAvIFRDb3VudDsKICAgICAgICAgICAgICAgICBpbnQgVCA9IFRCYXNlICsgU0luZGV4ICUgVENvdW50OwotICAgICAgICAgICAgICAgICpvKysgPSBMOwotICAgICAgICAgICAgICAgICpvKysgPSBWOworICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gTDsKKyAgICAgICAgICAgICAgICBvdXRwdXRbbysrXSA9IFY7CiAgICAgICAgICAgICAgICAgc3BhY2UgLT0gMjsKICAgICAgICAgICAgICAgICBpZiAoVCAhPSBUQmFzZSkgewotICAgICAgICAgICAgICAgICAgICAqbysrID0gVDsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBUOwogICAgICAgICAgICAgICAgICAgICBzcGFjZSAtLTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC01NTksNyArNTY3LDcgQEAKICAgICAgICAgICAgIC8qIENvcHkgY2hhcmFjdGVyIGlmIGl0IGlzIG5vdCBkZWNvbXBvc2FibGUsIG9yIGhhcyBhCiAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24sIGJ1dCB3ZSBkbyBORkQuICovCiAgICAgICAgICAgICBpZiAoIWNvdW50IHx8IChwcmVmaXggJiYgIWspKSB7Ci0gICAgICAgICAgICAgICAgKm8rKyA9IGNvZGU7CisgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBjb2RlOwogICAgICAgICAgICAgICAgIHNwYWNlLS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC01NzIsMTUgKzU4MCwyMCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogRHJvcCBvdmVyYWxsb2NhdGlvbi4gQ2Fubm90IGZhaWwuICovCi0gICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KSAtIHNwYWNlKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBvKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIHJlc3VsdCBpcyBndWFyYW50ZWVkIHRvIGJlIHJlYWR5LCBhcyBpdCBpcyBjb21wYWN0LiAqLworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXN1bHQpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpOwogCiAgICAgLyogU29ydCBjYW5vbmljYWxseS4gKi8KLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICBwcmV2ID0gX2dldHJlY29yZF9leCgqaSktPmNvbWJpbmluZzsKLSAgICBlbmQgPSBpICsgUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7Ci0gICAgZm9yIChpKys7IGkgPCBlbmQ7IGkrKykgewotICAgICAgICBjdXIgPSBfZ2V0cmVjb3JkX2V4KCppKS0+Y29tYmluaW5nOworICAgIGkgPSAwOworICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOworICAgIGZvciAoaSsrOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsgaSsrKSB7CisgICAgICAgIGN1ciA9IF9nZXRyZWNvcmRfZXgoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpLT5jb21iaW5pbmc7CiAgICAgICAgIGlmIChwcmV2ID09IDAgfHwgY3VyID09IDAgfHwgcHJldiA8PSBjdXIpIHsKICAgICAgICAgICAgIHByZXYgPSBjdXI7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU4OCwzMSArNjAxLDMyIEBACiAgICAgICAgIC8qIE5vbi1jYW5vbmljYWwgb3JkZXIuIE5lZWQgdG8gc3dpdGNoICppIHdpdGggcHJldmlvdXMuICovCiAgICAgICAgIG8gPSBpIC0gMTsKICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgdG1wID0gb1sxXTsKLSAgICAgICAgICAgIG9bMV0gPSBvWzBdOwotICAgICAgICAgICAgb1swXSA9IHRtcDsKKyAgICAgICAgICAgIFB5X1VDUzQgdG1wID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbysxKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbykpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIG8sIHRtcCk7CiAgICAgICAgICAgICBvLS07Ci0gICAgICAgICAgICBpZiAobyA8IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkpCisgICAgICAgICAgICBpZiAobyA8IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leCgqbyktPmNvbWJpbmluZzsKKyAgICAgICAgICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8pKS0+Y29tYmluaW5nOwogICAgICAgICAgICAgaWYgKHByZXYgPT0gMCB8fCBwcmV2IDw9IGN1cikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leCgqaSktPmNvbWJpbmluZzsKKyAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpLT5jb21iaW5pbmc7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBpbnQKLWZpbmRfbmZjX2luZGV4KFB5T2JqZWN0ICpzZWxmLCBzdHJ1Y3QgcmVpbmRleCogbmZjLCBQeV9VTklDT0RFIGNvZGUpCitmaW5kX25mY19pbmRleChQeU9iamVjdCAqc2VsZiwgc3RydWN0IHJlaW5kZXgqIG5mYywgUHlfVUNTNCBjb2RlKQogewotICAgIGludCBpbmRleDsKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXg7CiAgICAgZm9yIChpbmRleCA9IDA7IG5mY1tpbmRleF0uc3RhcnQ7IGluZGV4KyspIHsKLSAgICAgICAgaW50IHN0YXJ0ID0gbmZjW2luZGV4XS5zdGFydDsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0ID0gbmZjW2luZGV4XS5zdGFydDsKICAgICAgICAgaWYgKGNvZGUgPCBzdGFydCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKGNvZGUgPD0gc3RhcnQgKyBuZmNbaW5kZXhdLmNvdW50KSB7Ci0gICAgICAgICAgICBpbnQgZGVsdGEgPSBjb2RlIC0gc3RhcnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVsdGEgPSBjb2RlIC0gc3RhcnQ7CiAgICAgICAgICAgICByZXR1cm4gbmZjW2luZGV4XS5pbmRleCArIGRlbHRhOwogICAgICAgICB9CiAgICAgfQpAQCAtNjIzLDI3ICs2MzcsMzYgQEAKIG5mY19uZmtjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaW5wdXQsIGludCBrKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfVU5JQ09ERSAqaSwgKmkxLCAqbywgKmVuZDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgKm91dHB1dDsKKyAgICBQeV9zc2l6ZV90IGksIGkxLCBvLCBsZW47CiAgICAgaW50IGYsbCxpbmRleCxpbmRleDEsY29tYjsKLSAgICBQeV9VTklDT0RFIGNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqc2tpcHBlZFsyMF07CisgICAgUHlfVUNTNCBjb2RlOworICAgIFB5X3NzaXplX3Qgc2tpcHBlZFsyMF07CiAgICAgaW50IGNza2lwcGVkID0gMDsKIAogICAgIHJlc3VsdCA9IG5mZF9uZmtkKHNlbGYsIGlucHV0LCBrKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogcmVzdWx0IHdpbGwgYmUgInJlYWR5Ii4gKi8KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzdWx0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOwogCi0gICAgLyogV2UgYXJlIGdvaW5nIHRvIG1vZGlmeSByZXN1bHQgaW4tcGxhY2UuCi0gICAgICAgSWYgbmZkX25ma2QgaXMgY2hhbmdlZCB0byBzb21ldGltZXMgcmV0dXJuIHRoZSBpbnB1dCwKLSAgICAgICB0aGlzIGNvZGUgbmVlZHMgdG8gYmUgcmV2aWV3ZWQuICovCi0gICAgYXNzZXJ0KHJlc3VsdCAhPSBpbnB1dCk7Ci0KLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICBlbmQgPSBpICsgUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7Ci0gICAgbyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7CisgICAgLyogV2UgYWxsb2NhdGUgYSBidWZmZXIgZm9yIHRoZSBvdXRwdXQuCisgICAgICAgSWYgd2UgZmluZCB0aGF0IHdlIG1hZGUgbm8gY2hhbmdlcywgd2Ugc3RpbGwgcmV0dXJuCisgICAgICAgdGhlIE5GRCByZXN1bHQuICovCisgICAgb3V0cHV0ID0gUHlNZW1fTWFsbG9jKGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgaWYgKCFvdXRwdXQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpID0gbyA9IDA7CiAKICAgYWdhaW46Ci0gICAgd2hpbGUgKGkgPCBlbmQpIHsKKyAgICB3aGlsZSAoaSA8IGxlbikgewogICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgY3NraXBwZWQ7IGluZGV4KyspIHsKICAgICAgICAgICBpZiAoc2tpcHBlZFtpbmRleF0gPT0gaSkgewogICAgICAgICAgICAgICAvKiAqaSBjaGFyYWN0ZXIgaXMgc2tpcHBlZC4KQEAgLTY1NiwzMyArNjc5LDQxIEBACiAgICAgICB9CiAgICAgICAvKiBIYW5ndWwgQ29tcG9zaXRpb24uIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIDxMVixUPgogICAgICAgICAgcGFpcnMsIHNpbmNlIHdlIGFsd2F5cyBoYXZlIGRlY29tcG9zZWQgZGF0YS4gKi8KLSAgICAgIGlmIChMQmFzZSA8PSAqaSAmJiAqaSA8IChMQmFzZStMQ291bnQpICYmCi0gICAgICAgICAgaSArIDEgPCBlbmQgJiYKLSAgICAgICAgICBWQmFzZSA8PSBpWzFdICYmIGlbMV0gPD0gKFZCYXNlK1ZDb3VudCkpIHsKKyAgICAgIGNvZGUgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgIGlmIChMQmFzZSA8PSBjb2RlICYmIGNvZGUgPCAoTEJhc2UrTENvdW50KSAmJgorICAgICAgICAgIGkgKyAxIDwgbGVuICYmCisgICAgICAgICAgVkJhc2UgPD0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSAmJgorICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgPD0gKFZCYXNlK1ZDb3VudCkpIHsKICAgICAgICAgICBpbnQgTEluZGV4LCBWSW5kZXg7Ci0gICAgICAgICAgTEluZGV4ID0gaVswXSAtIExCYXNlOwotICAgICAgICAgIFZJbmRleCA9IGlbMV0gLSBWQmFzZTsKKyAgICAgICAgICBMSW5kZXggPSBjb2RlIC0gTEJhc2U7CisgICAgICAgICAgVkluZGV4ID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSAtIFZCYXNlOwogICAgICAgICAgIGNvZGUgPSBTQmFzZSArIChMSW5kZXgqVkNvdW50K1ZJbmRleCkqVENvdW50OwogICAgICAgICAgIGkrPTI7Ci0gICAgICAgICAgaWYgKGkgPCBlbmQgJiYKLSAgICAgICAgICAgICAgVEJhc2UgPD0gKmkgJiYgKmkgPD0gKFRCYXNlK1RDb3VudCkpIHsKLSAgICAgICAgICAgICAgY29kZSArPSAqaS1UQmFzZTsKKyAgICAgICAgICBpZiAoaSA8IGxlbiAmJgorICAgICAgICAgICAgICBUQmFzZSA8PSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSAmJgorICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA8PSAoVEJhc2UrVENvdW50KSkgeworICAgICAgICAgICAgICBjb2RlICs9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLVRCYXNlOwogICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgfQotICAgICAgICAgICpvKysgPSBjb2RlOworICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgIH0KIAotICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgKmkpOworICAgICAgLyogY29kZSBpcyBzdGlsbCBpbnB1dFtpXSBoZXJlICovCisgICAgICBmID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2ZpcnN0LCBjb2RlKTsKICAgICAgIGlmIChmID09IC0xKSB7Ci0gICAgICAgICAgKm8rKyA9ICppKys7CisgICAgICAgICAgb3V0cHV0W28rK10gPSBjb2RlOworICAgICAgICAgIGkrKzsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgIH0KICAgICAgIC8qIEZpbmQgbmV4dCB1bmJsb2NrZWQgY2hhcmFjdGVyLiAqLwogICAgICAgaTEgPSBpKzE7CiAgICAgICBjb21iID0gMDsKLSAgICAgIHdoaWxlIChpMSA8IGVuZCkgewotICAgICAgICAgIGludCBjb21iMSA9IF9nZXRyZWNvcmRfZXgoKmkxKS0+Y29tYmluaW5nOworICAgICAgLyogb3V0cHV0IGJhc2UgY2hhcmFjdGVyIGZvciBub3c7IG1pZ2h0IGJlIHVwZGF0ZWQgbGF0ZXIuICovCisgICAgICBvdXRwdXRbb10gPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgIHdoaWxlIChpMSA8IGxlbikgeworICAgICAgICAgIFB5X1VDUzQgY29kZTEgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpMSk7CisgICAgICAgICAgaW50IGNvbWIxID0gX2dldHJlY29yZF9leChjb2RlMSktPmNvbWJpbmluZzsKICAgICAgICAgICBpZiAoY29tYikgewogICAgICAgICAgICAgICBpZiAoY29tYjEgPT0gMCkKICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjkyLDggKzcyMyw4IEBACiAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KLSAgICAgICAgICBsID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2xhc3QsICppMSk7Ci0gICAgICAgICAgLyogKmkxIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoICppLiBJZiAqaTEKKyAgICAgICAgICBsID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2xhc3QsIGNvZGUxKTsKKyAgICAgICAgICAvKiBpMSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBpLiBJZiBpMQogICAgICAgICAgICAgIGlzIGEgc3RhcnRlciwgd2UgZG9uJ3QgbmVlZCB0byBsb29rIGZ1cnRoZXIuCiAgICAgICAgICAgICAgT3RoZXJ3aXNlLCByZWNvcmQgdGhlIGNvbWJpbmluZyBjbGFzcy4gKi8KICAgICAgICAgICBpZiAobCA9PSAtMSkgewpAQCAtNzEyLDE5ICs3NDMsMjggQEAKICAgICAgICAgICAgICAgZ290byBub3RfY29tYmluYWJsZTsKIAogICAgICAgICAgIC8qIFJlcGxhY2UgdGhlIG9yaWdpbmFsIGNoYXJhY3Rlci4gKi8KLSAgICAgICAgICAqaSA9IGNvZGU7CisgICAgICAgICAgb3V0cHV0W29dID0gY29kZTsKICAgICAgICAgICAvKiBNYXJrIHRoZSBzZWNvbmQgY2hhcmFjdGVyIHVudXNlZC4gKi8KICAgICAgICAgICBhc3NlcnQoY3NraXBwZWQgPCAyMCk7CiAgICAgICAgICAgc2tpcHBlZFtjc2tpcHBlZCsrXSA9IGkxOwogICAgICAgICAgIGkxKys7Ci0gICAgICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgKmkpOworICAgICAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsIG91dHB1dFtvXSk7CiAgICAgICAgICAgaWYgKGYgPT0gLTEpCiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgKm8rKyA9ICppKys7CisgICAgICAvKiBPdXRwdXQgY2hhcmFjdGVyIHdhcyBhbHJlYWR5IHdyaXR0ZW4uCisgICAgICAgICBKdXN0IGFkdmFuY2UgdGhlIGluZGljZXMuICovCisgICAgICBvKys7IGkrKzsKICAgICB9Ci0gICAgaWYgKG8gIT0gZW5kKQotICAgICAgICBQeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIG8gLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpKTsKKyAgICBpZiAobyA9PSBsZW4pIHsKKyAgICAgICAgLyogTm8gY2hhbmdlcy4gUmV0dXJuIG9yaWdpbmFsIHN0cmluZy4gKi8KKyAgICAgICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBvKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzMyLDcgKzc3Miw5IEBACiBzdGF0aWMgaW50CiBpc19ub3JtYWxpemVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaW5wdXQsIGludCBuZmMsIGludCBrKQogewotICAgIFB5X1VOSUNPREUgKmksICplbmQ7CisgICAgUHlfc3NpemVfdCBpLCBsZW47CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBjaGFyIHByZXZfY29tYmluaW5nID0gMCwgcXVpY2tjaGVja19tYXNrOwogCiAgICAgLyogQW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgaXMgcmVxdWVzdGVkLCBxdWlja2NoZWNrcyBtdXN0IGJlCkBAIC03NDQsMTAgKzc4NiwxMyBAQAogICAgICAgIGFzIGRlc2NyaWJlZCBpbiBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjE1LyNBbm5leDguICovCiAgICAgcXVpY2tjaGVja19tYXNrID0gMyA8PCAoKG5mYyA/IDQgOiAwKSArIChrID8gMiA6IDApKTsKIAotICAgIGkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpbnB1dCk7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShpbnB1dCk7Ci0gICAgd2hpbGUgKGkgPCBlbmQpIHsKLSAgICAgICAgY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCAqcmVjb3JkID0gX2dldHJlY29yZF9leCgqaSsrKTsKKyAgICBpID0gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShpbnB1dCk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOworICAgIHdoaWxlIChpIDwgbGVuKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKyspOworICAgICAgICBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkICpyZWNvcmQgPSBfZ2V0cmVjb3JkX2V4KGNoKTsKICAgICAgICAgdW5zaWduZWQgY2hhciBjb21iaW5pbmcgPSByZWNvcmQtPmNvbWJpbmluZzsKICAgICAgICAgdW5zaWduZWQgY2hhciBxdWlja2NoZWNrID0gcmVjb3JkLT5ub3JtYWxpemF0aW9uX3F1aWNrX2NoZWNrOwogCkBAIC03NzYsNyArODIxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm0sICZQeVVuaWNvZGVfVHlwZSwgJmlucHV0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoaW5wdXQpID09IDApIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpID09IDApIHsKICAgICAgICAgLyogU3BlY2lhbCBjYXNlIGVtcHR5IGlucHV0IHN0cmluZ3MsIHNpbmNlIHJlc2l6aW5nCiAgICAgICAgICAgIHRoZW0gIGxhdGVyIHdvdWxkIGNhdXNlIGludGVybmFsIGVycm9ycy4gKi8KICAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKQEAgLTg3NiwxNSArOTI0LDI1IEBACiB7CiAgICAgcmV0dXJuCiAgICAgICAgICgweDM0MDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4NERCNSkgICB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBBICovCi0gICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZDQikgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCisgICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZDQykgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCiAgICAgICAgICgweDIwMDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJBNkQ2KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBCICovCiAgICAgICAgICgweDJBNzAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCNzM0KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBDICovCiAgICAgICAgICgweDJCNzQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCODFEKTsgICAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBEICovCiB9CiAKKy8qIG1hY3JvcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZ2l2ZW4gY29kZXBvaW50IGlzIGluIHRoZSBQVUEgcmFuZ2UgdGhhdAorICogd2UgYXJlIHVzaW5nIHRvIHN0b3JlIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcyAqLworI2RlZmluZSBJU19BTElBUyhjcCkgKChjcCA+PSBhbGlhc2VzX3N0YXJ0KSAmJiAoY3AgPCBhbGlhc2VzX2VuZCkpCisjZGVmaW5lIElTX05BTUVEX1NFUShjcCkgKChjcCA+PSBuYW1lZF9zZXF1ZW5jZXNfc3RhcnQpICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwIDwgbmFtZWRfc2VxdWVuY2VzX2VuZCkpCisKIHN0YXRpYyBpbnQKLV9nZXR1Y25hbWUoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuKQorX2dldHVjbmFtZShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4sCisgICAgICAgICAgIGludCB3aXRoX2FsaWFzX2FuZF9zZXEpCiB7CisgICAgLyogRmluZCB0aGUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvZGVwb2ludC4KKyAgICAgKiBJZiB3aXRoX2FsaWFzX2FuZF9zZXEgaXMgMSwgY2hlY2sgZm9yIG5hbWVzIGluIHRoZSBQcml2YXRlIFVzZSBBcmVhIDE1CisgICAgICogdGhhdCB3ZSBhcmUgdXNpbmcgZm9yIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4gKi8KICAgICBpbnQgb2Zmc2V0OwogICAgIGludCBpOwogICAgIGludCB3b3JkOwpAQCAtODkzLDggKzk1MSwxNiBAQAogICAgIGlmIChjb2RlID49IDB4MTEwMDAwKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIC8qIFhYWCBzaG91bGQgd2UganVzdCBza2lwIGFsbCB0aGUgY29kZXBvaW50cyBpbiB0aGUgUFVBcyBoZXJlPyAqLworICAgIGlmICghd2l0aF9hbGlhc19hbmRfc2VxICYmIChJU19BTElBUyhjb2RlKSB8fCBJU19OQU1FRF9TRVEoY29kZSkpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewotICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjb2RlKTsKKyAgICAgICAgLyogaW4gMy4yLjAgdGhlcmUgYXJlIG5vIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcyAqLworICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQ7CisgICAgICAgIGlmIChJU19BTElBUyhjb2RlKSB8fCBJU19OQU1FRF9TRVEoY29kZSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgY29kZSk7CiAgICAgICAgIGlmIChvbGQtPmNhdGVnb3J5X2NoYW5nZWQgPT0gMCkgewogICAgICAgICAgICAgLyogdW5hc3NpZ25lZCAqLwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC05NzgsNyArMTA0NCw3IEBACiAgICAgLyogY2hlY2sgaWYgY29kZSBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gbmFtZSAqLwogICAgIGludCBpOwogICAgIGNoYXIgYnVmZmVyW05BTUVfTUFYTEVOXTsKLSAgICBpZiAoIV9nZXR1Y25hbWUoc2VsZiwgY29kZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpCisgICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGNvZGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIDEpKQogICAgICAgICByZXR1cm4gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZWxlbjsgaSsrKSB7CiAgICAgICAgIGlmIChQeV9UT1VQUEVSKFB5X0NIQVJNQVNLKG5hbWVbaV0pKSAhPSBidWZmZXJbaV0pCkBAIC05OTQsNyArMTA2MCw3IEBACiAgICAgKmxlbiA9IC0xOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07Ci0gICAgICAgIGxlbjEgPSBzdHJsZW4ocyk7CisgICAgICAgIGxlbjEgPSBQeV9TQUZFX0RPV05DQVNUKHN0cmxlbihzKSwgc2l6ZV90LCBpbnQpOwogICAgICAgICBpZiAobGVuMSA8PSAqbGVuKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChzdHJuY21wKHN0ciwgcywgbGVuMSkgPT0gMCkgewpAQCAtMTAwOCw4ICsxMDc0LDI4IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9nZXRjb2RlKFB5T2JqZWN0KiBzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSkKK19jaGVja19hbGlhc19hbmRfc2VxKHVuc2lnbmVkIGludCBjcCwgUHlfVUNTNCogY29kZSwgaW50IHdpdGhfbmFtZWRfc2VxKQogeworICAgIC8qIGNoZWNrIGlmIG5hbWVkIHNlcXVlbmNlcyBhcmUgYWxsb3dlZCAqLworICAgIGlmICghd2l0aF9uYW1lZF9zZXEgJiYgSVNfTkFNRURfU0VRKGNwKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLyogaWYgdGhlIGNvZGVwb2ludCBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQgd2UgdXNlIGZvciBhbGlhc2VzLAorICAgICAqIGNvbnZlcnQgaXQgdG8gb2J0YWluIHRoZSByaWdodCBjb2RlcG9pbnQgKi8KKyAgICBpZiAoSVNfQUxJQVMoY3ApKQorICAgICAgICAqY29kZSA9IG5hbWVfYWxpYXNlc1tjcC1hbGlhc2VzX3N0YXJ0XTsKKyAgICBlbHNlCisgICAgICAgICpjb2RlID0gY3A7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK19nZXRjb2RlKFB5T2JqZWN0KiBzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSwKKyAgICAgICAgIGludCB3aXRoX25hbWVkX3NlcSkKK3sKKyAgICAvKiBSZXR1cm4gdGhlIGNvZGVwb2ludCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG5hbWUuCisgICAgICogTmFtZWQgYWxpYXNlcyBhcmUgcmVzb2x2ZWQgdG9vICh1bmxlc3Mgc2VsZiAhPSBOVUxMIChpLmUuIHdlIGFyZSB1c2luZworICAgICAqIDMuMi4wKSkuICBJZiB3aXRoX25hbWVkX3NlcSBpcyAxLCByZXR1cm5zIHRoZSBQVUEgY29kZXBvaW50IHRoYXQgd2UgYXJlCisgICAgICogdXNpbmcgZm9yIHRoZSBuYW1lZCBzZXF1ZW5jZSwgYW5kIHRoZSBjYWxsZXIgbXVzdCB0aGVuIGNvbnZlcnQgaXQuICovCiAgICAgdW5zaWduZWQgaW50IGgsIHY7CiAgICAgdW5zaWduZWQgaW50IG1hc2sgPSBjb2RlX3NpemUtMTsKICAgICB1bnNpZ25lZCBpbnQgaSwgaW5jcjsKQEAgLTEwNjUsMTAgKzExNTEsOCBAQAogICAgIHYgPSBjb2RlX2hhc2hbaV07CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoX2NtcG5hbWUoc2VsZiwgdiwgbmFtZSwgbmFtZWxlbikpIHsKLSAgICAgICAgKmNvZGUgPSB2OwotICAgICAgICByZXR1cm4gMTsKLSAgICB9CisgICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKQorICAgICAgICByZXR1cm4gX2NoZWNrX2FsaWFzX2FuZF9zZXEodiwgY29kZSwgd2l0aF9uYW1lZF9zZXEpOwogICAgIGluY3IgPSAoaCBeIChoID4+IDMpKSAmIG1hc2s7CiAgICAgaWYgKCFpbmNyKQogICAgICAgICBpbmNyID0gbWFzazsKQEAgLTEwNzcsMTAgKzExNjEsOCBAQAogICAgICAgICB2ID0gY29kZV9oYXNoW2ldOwogICAgICAgICBpZiAoIXYpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKSB7Ci0gICAgICAgICAgICAqY29kZSA9IHY7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoX2NtcG5hbWUoc2VsZiwgdiwgbmFtZSwgbmFtZWxlbikpCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX2FsaWFzX2FuZF9zZXEodiwgY29kZSwgd2l0aF9uYW1lZF9zZXEpOwogICAgICAgICBpbmNyID0gaW5jciA8PCAxOwogICAgICAgICBpZiAoaW5jciA+IG1hc2spCiAgICAgICAgICAgICBpbmNyID0gaW5jciBeIGNvZGVfcG9seTsKQEAgLTExMTgsNyArMTIwMCw3IEBACiAgICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGMsIG5hbWUsIHNpemVvZihuYW1lKSkpIHsKKyAgICBpZiAoIV9nZXR1Y25hbWUoc2VsZiwgYywgbmFtZSwgc2l6ZW9mKG5hbWUpLCAwKSkgewogICAgICAgICBpZiAoZGVmb2JqID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm8gc3VjaCBuYW1lIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNDMsMjggKzEyMjUsMjYgQEAKIHVuaWNvZGVkYXRhX2xvb2t1cChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgUHlfVUNTNCBjb2RlOwotICAgIFB5X1VOSUNPREUgc3RyWzJdOwogCiAgICAgY2hhciogbmFtZTsKICAgICBpbnQgbmFtZWxlbjsKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXg7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVsZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgbmFtZWxlbiwgJmNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgInVuZGVmaW5lZCBjaGFyYWN0ZXIgbmFtZSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgbmFtZWxlbiwgJmNvZGUsIDEpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgInVuZGVmaW5lZCBjaGFyYWN0ZXIgbmFtZSAnJXMnIiwgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpZiAoY29kZSA+PSAweDEwMDAwKSB7Ci0gICAgICAgIHN0clswXSA9IDB4ZDgwMCArICgoY29kZSAtIDB4MTAwMDApID4+IDEwKTsKLSAgICAgICAgc3RyWzFdID0gMHhkYzAwICsgKChjb2RlIC0gMHgxMDAwMCkgJiAweDNmZik7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3RyLCAyKTsKKyAgICAvKiBjaGVjayBpZiBjb2RlIGlzIGluIHRoZSBQVUEgcmFuZ2UgdGhhdCB3ZSB1c2UgZm9yIG5hbWVkIHNlcXVlbmNlcworICAgICAgIGFuZCBjb252ZXJ0IGl0ICovCisgICAgaWYgKElTX05BTUVEX1NFUShjb2RlKSkgeworICAgICAgICBpbmRleCA9IGNvZGUtbmFtZWRfc2VxdWVuY2VzX3N0YXJ0OworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfMkJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWRfc2VxdWVuY2VzW2luZGV4XS5zZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkX3NlcXVlbmNlc1tpbmRleF0uc2VxbGVuKTsKICAgICB9Ci0jZW5kaWYKLSAgICBzdHJbMF0gPSAoUHlfVU5JQ09ERSkgY29kZTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0ciwgMSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjb2RlKTsKIH0KIAogLyogWFhYIEFkZCBkb2Mgc3RyaW5ncy4gKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaCBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAppbmRleCA4ZTJlNzI0Li41ZDVkY2E4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCkBAIC0xLDYgKzEsNiBAQAogLyogdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgMy4yICovCiAKLSNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI2LjAuMCIKKyNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI2LjEuMCIKIC8qIGEgbGlzdCBvZiB1bmlxdWUgZGF0YWJhc2UgcmVjb3JkcyAqLwogY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCBfUHlVbmljb2RlX0RhdGFiYXNlX1JlY29yZHNbXSA9IHsKICAgICB7MCwgMCwgMCwgMCwgMCwgMH0sCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgICB7MjYsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjgsIDAsIDExLCAwLCA0LCAwfSwKICAgICB7MzAsIDAsIDE5LCAwLCAzLCAwfSwKLSAgICB7MzAsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjksIDAsIDE5LCAwLCA0LCAxMzZ9LAogICAgIHszMCwgMCwgMTksIDAsIDUsIDB9LAotICAgIHsyLCAwLCAxLCAwLCA0LCAxMzZ9LAorICAgIHsxOSwgMCwgMSwgMCwgNCwgMTM2fSwKICAgICB7MjQsIDAsIDE5LCAxLCA1LCAwfSwKICAgICB7MTQsIDAsIDE1LCAwLCA0LCAwfSwKKyAgICB7MzAsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjksIDAsIDE5LCAwLCAzLCAxMzZ9LAogICAgIHszMCwgMCwgMTEsIDAsIDQsIDB9LAogICAgIHsyNywgMCwgMTEsIDAsIDQsIDB9LApAQCAtNDksNiArNDksNyBAQAogICAgIHsyLCAwLCAxLCAwLCA1LCAxMH0sCiAgICAgezEsIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxLCAwLCAxLCAwLCA0LCAxMzZ9LAorICAgIHsyLCAwLCAxLCAwLCA0LCAxMzZ9LAogICAgIHsyLCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MTksIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxLCAwLCAxLCAwLCA1LCAxMzZ9LApAQCAtODcsNiArODgsNyBAQAogICAgIHs2LCAwLCAxNCwgMCwgNSwgMH0sCiAgICAgezI2LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MjEsIDAsIDE5LCAwLCA1LCAwfSwKKyAgICB7MjgsIDAsIDExLCAwLCA1LCAwfSwKICAgICB7NCwgMjIwLCAxNCwgMCwgNSwgMH0sCiAgICAgezQsIDIyMiwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMjgsIDE0LCAwLCA1LCAwfSwKQEAgLTEzNCw2ICsxMzYsNyBAQAogICAgIHsxOSwgMCwgNSwgMCwgNSwgMTM2fSwKICAgICB7NywgMCwgOSwgMCwgNSwgMH0sCiAgICAgezMwLCAwLCA1LCAwLCA1LCAwfSwKKyAgICB7MTQsIDAsIDUsIDAsIDUsIDB9LAogICAgIHs0LCAzNiwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAwLCAxNCwgMCwgNSwgMH0sCiAgICAgezcsIDAsIDQsIDAsIDUsIDB9LApAQCAtMTQ4LDcgKzE1MSw2IEBACiAgICAgezQsIDcsIDE0LCAwLCA1LCAwfSwKICAgICB7NSwgMCwgMSwgMCwgNSwgODB9LAogICAgIHs1LCAwLCAxLCAwLCA1LCAxMH0sCi0gICAgezI4LCAwLCAxMSwgMCwgNSwgMH0sCiAgICAgezksIDAsIDEsIDAsIDUsIDB9LAogICAgIHs0LCAwLCAxNCwgMCwgNSwgODB9LAogICAgIHs0LCAwLCAxNCwgMCwgNSwgMTB9LApAQCAtMTc1LDcgKzE3Nyw2IEBACiAgICAgezE5LCAwLCAxLCAwLCA1LCA4MH0sCiAgICAgezEwLCAwLCAxOCwgMCwgNSwgMH0sCiAgICAgezgsIDAsIDEsIDAsIDUsIDB9LAotICAgIHsxNCwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezUsIDksIDEsIDAsIDUsIDB9LAogICAgIHs0LCAxLCAxNCwgMCwgNSwgMH0sCiAgICAgezQsIDIzNCwgMTQsIDAsIDUsIDB9LApAQCAtMTkwLDYgKzE5MSw3IEBACiAgICAgezEwLCAwLCAxOCwgMCwgNSwgMTcwfSwKICAgICB7MTAsIDAsIDE4LCAwLCA1LCAxMzZ9LAogICAgIHsxNCwgMCwgMTUsIDAsIDUsIDB9LAorICAgIHsxNCwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezE0LCAwLCA0LCAwLCA1LCAwfSwKICAgICB7MjEsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjEsIDAsIDE5LCAwLCA1LCAxMzZ9LApAQCAtMjU2LDcgKzI1OCw3IEBACiAgICAgezQsIDIyOCwgMTQsIDAsIDIsIDB9LAogICAgIHs0LCAyMzIsIDE0LCAwLCAyLCAwfSwKICAgICB7NCwgMjIyLCAxNCwgMCwgMiwgMH0sCi0gICAgezQsIDIyNCwgMTQsIDAsIDIsIDB9LAorICAgIHs1LCAyMjQsIDEsIDAsIDIsIDB9LAogICAgIHs4LCAwLCAxLCAwLCAyLCAxMzZ9LAogICAgIHsxOSwgMCwgMSwgMCwgMiwgMTB9LAogICAgIHs0LCA4LCAxNCwgMCwgMiwgODB9LApAQCAtMjY2LDcgKzI2OCw3IEBACiAgICAgezMwLCAwLCAxLCAwLCAyLCAwfSwKICAgICB7OSwgMCwgMSwgMCwgMiwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDIsIDEzNn0sCi0gICAgezMwLCAwLCAxLCAwLCA0LCAwfSwKKyAgICB7OSwgMCwgMSwgMCwgNCwgMH0sCiAgICAgezksIDAsIDE5LCAwLCAyLCAxMzZ9LAogICAgIHsyOSwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezE1LCAwLCAxLCAwLCA1LCAwfSwKQEAgLTMyNSwxMSArMzI3LDEyIEBACiAgICAgezI3LCAwLCAxLCAwLCA1LCAxMzZ9LAogICAgIHs3LCAwLCA5LCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTM2fSwKKyAgICB7MzAsIDAsIDEsIDAsIDQsIDB9LAogfTsKIAogLyogUmVpbmRleGluZyBvZiBORkMgZmlyc3QgY2hhcmFjdGVycy4gKi8KLSNkZWZpbmUgVE9UQUxfRklSU1QgMzcwCi0jZGVmaW5lIFRPVEFMX0xBU1QgNTUKKyNkZWZpbmUgVE9UQUxfRklSU1QgMzcyCisjZGVmaW5lIFRPVEFMX0xBU1QgNTYKIHN0cnVjdCByZWluZGV4e2ludCBzdGFydDtzaG9ydCBjb3VudCxpbmRleDt9Owogc3RhdGljIHN0cnVjdCByZWluZGV4IG5mY19maXJzdFtdID0gewogICB7IDYwLCAyLCAwfSwKQEAgLTUzOCw2ICs1NDEsNyBAQAogICB7IDY5Nzg1LCAwLCAzNjd9LAogICB7IDY5Nzg3LCAwLCAzNjh9LAogICB7IDY5Nzk3LCAwLCAzNjl9LAorICB7IDY5OTM3LCAxLCAzNzB9LAogICB7MCwwLDB9CiB9OwogCkBAIC01NzQsNiArNTc4LDcgQEAKICAgeyA2OTY1LCAwLCA1MX0sCiAgIHsgMTI0NDEsIDEsIDUyfSwKICAgeyA2OTgxOCwgMCwgNTR9LAorICB7IDY5OTI3LCAwLCA1NX0sCiAgIHswLDAsMH0KIH07CiAKQEAgLTY3MSw1MTUgKzY3Niw1MTUgQEAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAKICAgICAzOSwgNDAsIDQxLCA0MSwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCAKICAgICA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAKLSAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCAxNywgODQsIDg1LCA4NiwgODcsIDg4LCAKLSAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMSwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDIsIAotICAgIDEwMywgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwNCwgNDEsIDQxLCAxMDUsIDEwNiwgMTA3LCAKLSAgICAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTgsIDExOSwgCi0gICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAotICAgIDExOSwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCAKKyAgICA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDIsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAzLCAxMDQsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDUsIDQxLCA0MSwgMTA2LCAxMDcsIAorICAgIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAKICAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMSwgMTIxLCAxMjIsIDEyMywgMTI0LCAKLSAgICAxMjUsIDEyNiwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDE3LCAxMzcsIAotICAgIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTQyLCAxNywgMTQzLCAxNywgMTQ0LCAxNywgCi0gICAgMTQ1LCAxNywgMTQ2LCAxNywgMTcsIDE3LCAxNDcsIDE3LCAxNywgMTcsIDE0OCwgMTQ5LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNTAsIDE3LCAxNTEsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNTIsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA0MSwgNDEsIDQxLCA0MSwgMTUzLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTU0LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA3OCwgCi0gICAgMTU1LCAxNTYsIDE1NywgMTU4LCAxNywgMTU5LCAxNywgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAKLSAgICAxNywgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxODIsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxODMsIDEwMCwgMTg0LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTIxLCAKLSAgICAxMjEsIDEyMSwgMTIxLCAxODUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE4NiwgMTcsIDE4NywgCi0gICAgMTg4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxODksIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTg5LCAKKyAgICAxMjAsIDEyMCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMiwgMTIyLCAxMjMsIDEyNCwgCisgICAgMTI1LCAxMjYsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDg0LCAKKyAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTQzLCA4NCwgMTQ0LCAxNDUsIDE0NiwgCisgICAgODQsIDE0NywgODQsIDE0OCwgODQsIDg0LCA4NCwgMTQ5LCA4NCwgODQsIDg0LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE1NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU1LCA4NCwgMTU2LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU3LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDE1OCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgMTU5LCAxNjAsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTYxLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA3OCwgMTYyLCAxNjMsIDE2NCwgMTY1LCA4NCwgMTY2LCA4NCwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgCisgICAgMTczLCAxNzQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTc1LCAxNzYsIDg0LCA4NCwgMTc3LCAxNzgsIDE3OSwgCisgICAgMTgwLCAxODEsIDg0LCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE5MSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE5MiwgCisgICAgMTAxLCAxOTMsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCAxMjIsIDEyMiwgMTIyLCAxMjIsIDE5NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgMTk1LCA4NCwgMTk2LCAxOTcsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDE5OCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxOTgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTE5MSwxNDAxICsxMTk2LDE0NjQgQEAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKICAgICAyMCwgMjAsIDksIDE2LCAxMCwgMTYsIDEsIDEsIDEsIDEsIDEsIDEsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIxLCAyMiwgOCwgOCwgMjMsIDgsIDI0LCAKLSAgICAyNSwgMjYsIDI3LCAyOCwgMjksIDE2LCAzMCwgMjUsIDMxLCAzMiwgMzMsIDM0LCAzNCwgMjYsIDM1LCAyNSwgMjIsIDI2LCAKLSAgICAzNCwgMjgsIDM2LCAzNywgMzcsIDM3LCAyMiwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzksIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAyMiwgMjUsIDI2LCAyNywgMjgsIDE2LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNCwgMjUsIDM1LCAyMiwgMjIsIDI1LCAKKyAgICAzNCwgMjcsIDM2LCAzNywgMzcsIDM3LCAyMiwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzksIDM4LCAzOCwgMzgsIDM4LCAKICAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MCwgMzksIDM4LCAzOCwgMzgsIDM4LCAKICAgICAzOCwgMzksIDQxLCA0MiwgNDIsIDQzLCA0MywgNDMsIDQzLCA0MSwgNDMsIDQyLCA0MiwgNDIsIDQzLCA0MiwgNDIsIDQzLCAKICAgICA0MywgNDEsIDQzLCA0MiwgNDIsIDQzLCA0MywgNDMsIDQwLCA0MSwgNDIsIDQyLCA0MywgNDIsIDQzLCA0MSwgNDMsIDM4LCAKICAgICA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDEsIDM4LCAKICAgICA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MSwgNDUsIDI4LCAzOCwgNDMsIDM4LCAKLSAgICA0MywgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ1LCAyOCwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQyLCAKLSAgICAyOCwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MSwgNDUsIDQ2LCAzOCwgNDMsIDM4LCAKKyAgICA0MywgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ1LCA0NiwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQyLCAKKyAgICA0NiwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzNSwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ0LCA0NCwgNDYsIDQ2LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCAzOCwgNDMsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCAzOCwgNDMsIDQ0LCA0NCwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ2LCA0NywgNDQsIDQ2LCA0NiwgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDksIDM1LCAKLSAgICA0OCwgNDksIDM1LCA0OCwgNDksIDM1LCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAKLSAgICAzOCwgNDIsIDM4LCA0MiwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0OCwgNDksIDM1LCAzOCwgNDMsIDQ0LCA0NCwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICAzNSwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NCwgNDcsIDQ0LCAzOCwgNDMsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCAzOCwgNDMsIDQ0LCA0NCwgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ3LCA0OCwgNDQsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OSwgNTAsIDM1LCAKKyAgICA0OSwgNTAsIDM1LCA0OSwgNTAsIDM1LCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAKKyAgICAzOCwgNDIsIDM4LCA0MiwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0OSwgNTAsIDM1LCAzOCwgNDMsIDQ0LCA0NCwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCA0MSwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDEsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDcsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUxLCA1MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUzLCAKLSAgICA1MywgNTQsIDUzLCA1MSwgNTUsIDUxLCA1NSwgNTUsIDU1LCA1MSwgNTUsIDUxLCA1MSwgNTYsIDUyLCA1MywgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCAyNiwgMjYsIDI2LCAyNiwgNTcsIDI2LCA1MywgNTQsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUxLCA1MywgNTIsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTgsIDU4LCA1OCwgNTgsIDU4LCA1OSwgNTgsIDU4LCA1OCwgNTgsIDU4LCAKLSAgICA1OCwgNTgsIDU5LCA1OSwgNTgsIDU5LCA1OCwgNTksIDU4LCA1OCwgNjAsIDYxLCA2MSwgNjEsIDYxLCA2MCwgNjIsIDYxLCAKLSAgICA2MSwgNjEsIDYxLCA2MSwgNjMsIDYzLCA2NCwgNjQsIDY0LCA2NCwgNjUsIDY1LCA2MSwgNjEsIDYxLCA2MSwgNjQsIDY0LCAKLSAgICA2MSwgNjQsIDY0LCA2MSwgNjEsIDY2LCA2NiwgNjYsIDY2LCA2NywgNjEsIDYxLCA2MSwgNjEsIDU5LCA1OSwgNTksIDY4LCAKLSAgICA2OCwgNTgsIDY4LCA2OCwgNjksIDU5LCA2MSwgNjEsIDYxLCA1OSwgNTksIDU5LCA2MSwgNjEsIDcwLCA1OSwgNTksIDU5LCAKLSAgICA2MSwgNjEsIDYxLCA2MSwgNTksIDYwLCA2MSwgNjEsIDU5LCA3MSwgNzIsIDcyLCA3MSwgNzIsIDcyLCA3MSwgNTksIDU5LCAKLSAgICA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDQ0LCA0NiwgNDQsIDQ2LCA3MywgNTMsIDQ0LCAKLSAgICA0NiwgMCwgMCwgNTAsIDQ2LCA0NiwgNDYsIDc0LCAwLCAwLCAwLCAwLCAwLCA1NywgNzUsIDM4LCA3NCwgMzgsIDM4LCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MiwgNTIsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1NCwgCisgICAgNTQsIDU1LCA1NCwgNTIsIDU2LCA1MiwgNTYsIDU2LCA1NiwgNTIsIDU2LCA1MiwgNTIsIDU3LCA1MywgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgMjUsIDI1LCAyNSwgMjUsIDU4LCAyNSwgNTQsIDU1LCA1MSwgNTEsIDUxLCA1MSwgNTEsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTQsIDUzLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU5LCA1OSwgNTksIDU5LCA1OSwgNjAsIDU5LCA1OSwgNTksIDU5LCA1OSwgCisgICAgNTksIDU5LCA2MCwgNjAsIDU5LCA2MCwgNTksIDYwLCA1OSwgNTksIDYxLCA2MiwgNjIsIDYyLCA2MiwgNjEsIDYzLCA2MiwgCisgICAgNjIsIDYyLCA2MiwgNjIsIDY0LCA2NCwgNjUsIDY1LCA2NSwgNjUsIDY2LCA2NiwgNjIsIDYyLCA2MiwgNjIsIDY1LCA2NSwgCisgICAgNjIsIDY1LCA2NSwgNjIsIDYyLCA2NywgNjcsIDY3LCA2NywgNjgsIDYyLCA2MiwgNjIsIDYyLCA2MCwgNjAsIDYwLCA2OSwgCisgICAgNjksIDU5LCA2OSwgNjksIDcwLCA2MCwgNjIsIDYyLCA2MiwgNjAsIDYwLCA2MCwgNjIsIDYyLCA3MSwgNjAsIDYwLCA2MCwgCisgICAgNjIsIDYyLCA2MiwgNjIsIDYwLCA2MSwgNjIsIDYyLCA2MCwgNzIsIDczLCA3MywgNzIsIDczLCA3MywgNzIsIDYwLCA2MCwgCisgICAgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA0NCwgNDcsIDQ0LCA0NywgNzQsIDU0LCA0NCwgCisgICAgNDcsIDAsIDAsIDUxLCA0NywgNDcsIDQ3LCA3NSwgMCwgMCwgMCwgMCwgMCwgNTgsIDc2LCAzOCwgNzUsIDM4LCAzOCwgMzgsIAogICAgIDAsIDM4LCAwLCAzOCwgMzgsIDQzLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCAzOSwgMzksIDAsIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCAKICAgICA0MywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAKLSAgICA0NiwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQzLCA0MywgNDMsIDQzLCA0MywgNDQsIDM1LCAzNSwgNDgsIDc2LCAKLSAgICA3NiwgMzUsIDM1LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMzUsIDM1LCAzNSwgNDYsIDQ4LCAzNSwgNzcsIDQ0LCAKLSAgICA0NiwgNDgsIDQ0LCA0NiwgNDYsIDQ0LCA0NCwgNDQsIDM4LCA3OCwgNDQsIDM4LCA0NCwgNDQsIDQ0LCAzOCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDM4LCAzOCwgMzgsIDQ0LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCA3OCwgMzksIDM5LCAKKyAgICA0NywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQzLCA0MywgNDMsIDQzLCA0MywgNDQsIDM1LCAzNSwgNDksIDc3LCAKKyAgICA3NywgMzUsIDM1LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMzUsIDM1LCAzNSwgNDcsIDQ5LCAzNSwgNzgsIDQ0LCAKKyAgICA0NywgNDksIDQ0LCA0NywgNDcsIDQ0LCA0NCwgNDQsIDM4LCA3OSwgNDQsIDM4LCA0NCwgNDQsIDQ0LCAzOCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDM4LCAzOCwgMzgsIDQ0LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCA3OSwgMzksIDM5LCAKICAgICAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAKICAgICAzOSwgMzksIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQyLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAKICAgICA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDMsIDQyLCAKLSAgICA0NiwgNDMsIDQ2LCA0NiwgNDYsIDQzLCA0NiwgNDYsIDQ2LCA0NiwgNDMsIDQzLCA0MywgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICAzOCwgNDMsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA3OSwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MSwgODEsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCAzOCwgNDMsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCAKLSAgICAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgCisgICAgNDcsIDQzLCA0NywgNDcsIDQ3LCA0MywgNDcsIDQ3LCA0NywgNDcsIDQzLCA0MywgNDMsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgODAsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODIsIDgyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNTIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMzUsIAotICAgIDAsIDgyLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgODQsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDgwLCA4MCwgODUsIDg0LCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4MCwgODAsIDg0LCA4MCwgODAsIDg1LCAKLSAgICA4NiwgODAsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIAotICAgIDEwMiwgMTAzLCAxMDQsIDEwMiwgODAsIDg0LCAxMDIsIDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDIsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2LCAxMDYsIDEwNiwgCi0gICAgMTA2LCAwLCAwLCA3NywgNzcsIDEwNywgMTA4LCAxMDgsIDEwOSwgMTEwLCAxMTEsIDI3LCAyNywgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCAxMTIsIDExMywgMTE0LCAxMTEsIDAsIDAsIDExMSwgMTExLCAxMTUsIDExNSwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE3LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExOCwgMTE5LCAxMjAsIAotICAgIDExMiwgMTEzLCAxMTQsIDEyMSwgMTIyLCAxMjMsIDEyMywgMTI0LCA4NCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIAotICAgIDgwLCA4NCwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMDgsIDEyNiwgMTI2LCAKLSAgICAxMTEsIDExNSwgMTE1LCAxMjcsIDExNSwgMTE1LCAxMTUsIDExNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE2LCAKLSAgICAxMTUsIDExNiwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTYsIDExMSwgMTE1LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTA2LCAyNywgCi0gICAgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgMTE3LCAxMTcsIDgwLCA4MCwgMjcsIDg0LCA4MCwgODAsIDg0LCAxMTUsIDExNSwgCi0gICAgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMTUsIDExNSwgMTE1LCAxMzAsIAotICAgIDEzMCwgMTE1LCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAKLSAgICAxMTEsIDExMSwgMCwgMTA2LCAxMTUsIDEzMSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgODAsIDg0LCA4MCwgODAsIDg0LCA4MCwgODAsIDg0LCA4NCwgCi0gICAgODQsIDgwLCA4NCwgODQsIDgwLCA4NCwgODAsIDgwLCA4MCwgODQsIDgwLCA4NCwgODAsIDg0LCA4MCwgODQsIDgwLCA4MCwgCi0gICAgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgMTM0LCAxMzQsIDI3LCAxMzUsIDEzNSwgMTM1LCAxMzQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgODAsIDgwLCA4MCwgODAsIDEzNCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM0LCA4MCwgODAsIDgwLCAxMzQsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCA4NCwgODQsIDg0LCAKLSAgICAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDUzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDEzMiwgMTM2LCAxMzgsIDQ3LCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzksIDEzNiwgMTM2LCA0NywgODAsIDg0LCA4MCwgODAsIAotICAgIDEzMiwgMTMyLCAxMzIsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCA0NywgNDcsIDEzMiwgMTMyLCAKLSAgICA4MiwgODIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgODIsIDUyLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMTMyLCAxMzYsIDEzNiwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIDQ3LCAKLSAgICAxNDMsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDAsIDEzNiwgMTM2LCAwLCAwLCAxNDQsIDE0NCwgMTM5LCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAxNDAsIDE0MCwgMCwgMTQwLCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgCi0gICAgMTQ1LCAxNDUsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDc5LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMTQwLCAwLCA0NywgMTQwLCAwLCA0NywgNDcsIDAsIDAsIAotICAgIDE0MiwgMCwgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTM5LCAwLCAwLCAwLCAxMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MCwgMTQwLCAxNDAsIDQ3LCAwLCAxNDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTMyLCAKLSAgICAxMzIsIDQ3LCA0NywgNDcsIDEzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCAKLSAgICA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDEzMiwgMTMyLCAxMzYsIDAsIDEzNiwgCi0gICAgMTM2LCAxMzksIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDE0NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MiwgNDcsIDE0MywgCi0gICAgMTMyLCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMCwgMTM2LCAxNDQsIDAsIDAsIDE0NCwgMTQ0LCAxMzksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NywgMTQzLCAwLCAwLCAwLCAwLCAxNDAsIDE0MCwgMCwgNDcsIDQ3LCA0NywgMTMyLCAKLSAgICAxMzIsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNzksIDQ3LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDQ3LCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDEzNywgNDcsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDAsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAxNDMsIDEzNiwgMTMyLCAKLSAgICAxMzYsIDEzNiwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCAwLCAwLCA0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0NiwgMTQ2LCAxNDYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDE0NSwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAwLCAxMzIsIDEzMiwgMTQ4LCAwLCAxMzIsIDEzMiwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0OSwgMTUwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCA3OSwgMCwgMCwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIDQ3LCAxMzYsIDE1MiwgMTQ0LCAxMzYsIAotICAgIDE0MywgMTM2LCAxMzYsIDAsIDE1MiwgMTQ0LCAxNDQsIDAsIDE0NCwgMTQ0LCAxMzIsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTQzLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgMTQzLCAxMzYsIDEzNiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAwLCAxMzYsIDEzNiwgMTM2LCAwLCAxNDQsIDE0NCwgMTQ0LCAxMzksIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgCi0gICAgNzksIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDE1MywgMCwgMCwgMCwgMCwgMTQzLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMCwgMTMyLCAwLCAxMzYsIDEzNiwgMTQ0LCAxMzYsIDE0NCwgMTQ0LCAxNDQsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCAxNTQsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTU1LCAxNTUsIDEzOSwgMCwgMCwgMCwgMCwgMTQ1LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA1MiwgMTMyLCAxNTYsIDE1NiwgMTU2LCAxNTYsIDEzMiwgMTMyLCAxMzIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAzNSwgCisgICAgMCwgODMsIDg0LCAwLCAwLCAwLCAwLCA4NSwgMCwgODYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODcsIDg2LCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg3LCAKKyAgICA4OCwgODEsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIAorICAgIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA0LCA4MSwgODYsIDEwNCwgOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwNywgMTA3LCAxMDcsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMCwgNzgsIDc4LCAxMDksIDExMCwgMTEwLCAxMTEsIDExMiwgMTEzLCAyNiwgMjYsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTE0LCAxMTUsIDExNiwgMTEzLCAwLCAwLCAxMTMsIDExMywgMTE3LCAxMTcsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExOSwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMjAsIAorICAgIDEyMSwgMTIyLCAxMTQsIDExNSwgMTE2LCAxMjMsIDEyNCwgMTI1LCAxMjUsIDEyNiwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODYsIDgxLCA4MSwgODYsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTEwLCAKKyAgICAxMjgsIDEyOCwgMTEzLCAxMTcsIDExNywgMTI5LCAxMTcsIDExNywgMTE3LCAxMTcsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExOCwgMTE3LCAxMTgsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE4LCAxMTMsIDExNywgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDEwOCwgMjYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDExOSwgMTE5LCA4MSwgODEsIDI2LCA4NiwgODEsIDgxLCA4NiwgCisgICAgMTE3LCAxMTcsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTE3LCAxMTcsIAorICAgIDExNywgMTMyLCAxMzIsIDExNywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDEzMywgMTE3LCAxMzQsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCAKKyAgICA4NiwgODYsIDg2LCA4MSwgODYsIDg2LCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgODEsIDg2LCAKKyAgICA4MSwgODEsIDAsIDAsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEzNywgMTM3LCAyNiwgMTM4LCAxMzgsIDEzOCwgMTM3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIAorICAgIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAKKyAgICAxMDQsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODYsIDg2LCA4NiwgCisgICAgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDAsIDQ3LCAwLCAwLCA0NywgNDcsIDAsIDQ3LCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgNDcsIAotICAgIDAsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgNDcsIDE1NCwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNTcsIAotICAgIDE1NywgMCwgMTMyLCAxMzIsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDUyLCAwLCAxNTgsIDE1OCwgMTU4LCAKLSAgICAxNTgsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIAotICAgIDAsIDE1NCwgMTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNzksIDc5LCA3OSwgODIsIDgyLCA4MiwgODIsIAotICAgIDgyLCA4MiwgODIsIDgyLCAxNTksIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDc5LCA3OSwgNzksIDc5LCA3OSwgODQsIDg0LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgNzksIDg0LCA3OSwgODQsIDc5LCAKLSAgICAxNjAsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTM2LCAxMzYsIDQ3LCA0NywgNDcsIDE0MCwgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MCwgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjUsIDE2NSwgMTY3LCAxNjUsIDE2NywgMTY0LCAxNjQsIAotICAgIDE2NCwgMTY0LCAxMzIsIDEzNiwgMTY0LCAxNjUsIDgwLCA4MCwgMTM5LCA4MiwgODAsIDgwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTY1LCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDg0LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCAwLCA3OSwgNzksIDgyLCA4MiwgODIsIDgyLCA4MiwgNzksIDc5LCA3OSwgNzksIDgyLCAKLSAgICA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIAotICAgIDEzNiwgMTMyLCAxNDcsIDEzMiwgMTMyLCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNDIsIDEzNiwgMTM5LCAKLSAgICAxMzksIDEzNiwgMTM2LCAxMzIsIDEzMiwgNDcsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIDEzMiwgMTMyLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgNDcsIDEzNiwgMTM2LCAxMzYsIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgODQsIDQ3LCAxMzYsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTM2LCAxMzYsIDEzNiwgMTMyLCA3OSwgNzksIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTcsIDAsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgCisgICAgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCAxMjAsIDEyMSwgMTIyLCA4MSwgODEsIDgxLCAKKyAgICA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCA4MSwgODEsIDgxLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAKKyAgICAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxNDIsIDEzOSwgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDE0MywgMTQzLCAKKyAgICAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAxMzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDEzNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAKKyAgICAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAKKyAgICAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAKKyAgICAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCisgICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAwLCAKKyAgICAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIDE0NywgCisgICAgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAxMzksIDAsIAorICAgIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMTU1LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAxNDcsIAorICAgIDEzOSwgMTQ3LCAxNDcsIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTcsIAorICAgIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIDE1OCwgCisgICAgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1OSwgMTU5LCAwLCAxMzUsIDEzNSwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNTMsIDAsIDE2MCwgMTYwLCAxNjAsIDE2MCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTU2LCAxNTYsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE2NSwgCisgICAgMTY2LCAxNjcsIDE2OCwgMTY3LCAxNjcsIDE2OSwgMTY3LCAxNjksIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTM1LCAxMzksIAorICAgIDE2NiwgMTY3LCA4MSwgODEsIDE0MiwgODMsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTQ5LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgMTQyLCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDUwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCA0NywgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIAotICAgIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OSwgMTY5LCAxNjksIDE2OSwgCi0gICAgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIAotICAgIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDAsIDgwLCA4MCwgODAsIDc5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA4MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTYxLCAKLSAgICAxNjIsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA4MiwgODIsIDE3MSwgMTcxLCAxNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMTMyLCAxMzIsIDEzOSwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ3LCA0NywgNDcsIDAsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcyLCAxNzIsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM5LCAKLSAgICAxMzIsIDgyLCA4MiwgODIsIDUyLCA4MiwgODIsIDgyLCAxNDUsIDQ3LCA4MCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDgzLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzMiwgMTMyLCAxMzIsIDE3MCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA4NiwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgMTM2LCAxMzYsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDg1LCA4MCwgODQsIDAsIDAsIDAsIDAsIDI3LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzYsIDEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDYsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgwLCA4NCwgMTM2LCAxMzYsIDEzNiwgMCwgMCwgODIsIDgyLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgCi0gICAgMTMyLCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMTM5LCAxMzYsIDEzMiwgMTM2LCAxMzYsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4NCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAKLSAgICA1MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIAorICAgIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAxMzUsIDgzLCA4MywgCisgICAgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTcyLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDg4LCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgODcsIDgxLCA4NiwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCisgICAgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDg2LCAxMzksIDEzOSwgMTM5LCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxNDIsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDg2LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgNDcsIDEzNywgNDcsIDEzNywgNDcsIDEzNywgNDcsIDEzNywgNDcsIDEzNywgNDcsIDQ3LCA0NywgMTM3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDIsIDE0MywgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE0NCwgMTMyLCAxNDQsIDEzNiwgMTM2LCAxNDQsIDE0NCwgMTMyLCAxNDQsIAotICAgIDE3MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA4MCwgODQsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCAwLCAwLCAwLCAxMzIsIDEzMiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxNzMsIDAsIAotICAgIDAsIDAsIDQ3LCA0NywgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDE0MCwgNDgsIAorICAgIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDE0NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0NywgMTM1LCAxNDcsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxNDcsIDE3NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgODYsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxNzQsIDE0MiwgMTM5LCAxMzksIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDE3NCwgMTc0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxNDUsIDAsIDAsIDAsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MywgMTc1LCA4NiwgODYsIDg2LCA4NiwgODYsIAorICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDgxLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMTQyLCAxMzYsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgCi0gICAgMTM2LCAxMzIsIDE0MiwgMCwgMCwgMCwgODIsIDgyLCA4MiwgODIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MiwgMTc0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDgwLCA4MCwgODQsIDg0LCA4NCwgODQsIDgwLCAxMzYsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgNDcsIDQ3LCA0NywgNDcsIDg0LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDUwLCA1MCwgNTAsIDUyLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA4MCwgCi0gICAgODAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCA4MCwgMTc1LCAxNzYsIDg0LCAxNzcsIDgwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzYsIDE3NywgODYsIDE3OCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3OSwgODYsIAorICAgIDgxLCA4NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODAsIDQ3LCA0NywgNDQsIDQ3LCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgCisgICAgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MSwgNDMsIDE4MSwgNDMsIDE4MSwgNDMsIDE4MSwgNDMsIDE4MSwgCisgICAgNDMsIDE4MSwgNDMsIDE4MSwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODIsIDE4MiwgMTgyLCAKKyAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODIsIDE4MiwgMTgyLCAKKyAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODIsIDE4MiwgMTgyLCAKKyAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MywgCisgICAgMTgyLCA1OCwgMTgxLCA1OCwgNTgsIDc2LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODMsIDM4LCAxODMsIDE4MiwgCisgICAgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgxLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MywgMCwgNzYsIDc2LCAKKyAgICA3NiwgNDMsIDQzLCA0MywgMTgxLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgzLCAzOCwgNzYsIDE4NCwgMTg0LCAKKyAgICAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODMsIDM4LCAxODMsIDE4MiwgMTg0LCA1OCwgMCwgMTg1LCAxODUsIAorICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4OCwgMTg5LCAKKyAgICAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgCisgICAgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAKKyAgICAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgCisgICAgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDIxMCwgNTEsIDAsIDAsIDM0LCAyMTAsIDIxMCwgMjEwLCAyMTAsIDIxMCwgCisgICAgMjExLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjEwLCAzNCwgMzQsIDM0LCAzNCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAKKyAgICAyMTAsIDIxMSwgMjExLCAyMTIsIDIxMywgMjE0LCAwLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgMCwgMCwgMCwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAyMTYsIDIxNywgODUsIDg1LCAKKyAgICAyMywgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc1LCAxNzUsIDgxLCA4MSwgCisgICAgODEsIDgxLCAxNzUsIDE3NSwgMTc1LCA4MSwgODEsIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc1LCAxNzUsIAorICAgIDgxLCA4NiwgODEsIDE3NSwgMTc1LCA4NiwgODYsIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIxOCwgMjE4LCA0OSwgMjE5LCAyNiwgMjE5LCAyMTgsIDQ5LCAyNiwgMjE5LCAzNSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0NiwgMjYsIDQ5LCAyMTksIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgCisgICAgMjYsIDIxOCwgMjE5LCAyMTksIDI2LCA0OSwgMjYsIDIyMCwgMjYsIDQ5LCAyNiwgMTgzLCAyMjAsIDQ5LCA0OSwgMjIxLCAKKyAgICAzNSwgNDksIDQ5LCA0NCwgNDksIDM1LCAxNTYsIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjE4LCAzNSwgMzUsIDQ5LCA0OSwgCisgICAgMjIyLCA3OCwgNzgsIDc4LCA3OCwgNDksIDM1LCAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjMsIAorICAgIDIyMywgMjIzLCAzNywgMzcsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDM3LCAzNywgMzcsIDM3LCAyMjMsIDIyNCwgCisgICAgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNSwgMjI1LCAyMjUsIAorICAgIDIyNSwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDIyNSwgMjI1LCAKKyAgICAyMjUsIDIyNSwgMjI1LCAxNzMsIDE3MywgMTczLCA0NCwgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMjYsIDIyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjcsIDIyNiwgMjI2LCAyNiwgMjYsIDQwLCAyNiwgNDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgMjI4LCAyMjksIDIyOSwgMjMwLCA3OCwgNzgsIDQwLCAyMjksIDIzMCwgCisgICAgMjI4LCAyMjksIDIzMCwgMjI4LCA3OCwgNDAsIDc4LCAyMjksIDIzMSwgMjMyLCA3OCwgMjI5LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDIyOSwgMjI4LCAyMjgsIDIyOSwgNDAsIDIyOSwgMjI5LCAyMjgsIDIyOCwgNDAsIDIzMCwgNDAsIDIzMCwgNDAsIDQwLCA0MCwgCisgICAgNDAsIDIyOSwgMjMzLCAyMjIsIDIyOSwgMjIyLCAyMjIsIDIyOCwgMjI4LCAyMjgsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjI4LCAKKyAgICA3OCwgMjI4LCAyMjksIDIyOSwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMjgsIDIyOCwgMjMwLCAyMjgsIDIyOCwgMjMwLCAyMjksIAorICAgIDIzMCwgMjI4LCAyMjgsIDIyOSwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjksIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjM0LCA0MCwgMjMwLCA3OCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjgsIAorICAgIDIyOCwgMjI5LCAyMjksIDc4LCAyMjYsIDIzNCwgMjM0LCAyMzAsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMjgsIDIyOCwgCisgICAgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMjksIDIyOSwgMjMwLCAyMzAsIAorICAgIDIyOSwgMjI5LCAyMzAsIDIzMCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgCisgICAgNDAsIDc4LCA3OCwgMjI4LCA0MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDQwLCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjksIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjMwLCAKKyAgICAyMzAsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMzAsIDIzMCwgNzgsIDc4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyOCwgMjI4LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM1LCAyMzYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTc4LCA4NCwgODAsIDg0LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE3OSwgNDYsIAotICAgIDQ2LCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAKLSAgICAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgwLCA0MywgMTgwLCA0MywgMTgwLCA0MywgMTgwLCAKLSAgICA0MywgMTgwLCA0MywgMTgwLCA0MywgMTgwLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MSwgCi0gICAgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MSwgCi0gICAgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MSwgCi0gICAgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAKLSAgICAzOCwgMTgyLCAxODEsIDU3LCAxODAsIDU3LCA1NywgNzUsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4MiwgMzgsIAotICAgIDE4MiwgMTgxLCA3NSwgNzUsIDc1LCA0MywgNDMsIDQzLCAxODAsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgyLCAwLCAKLSAgICA3NSwgNzUsIDc1LCA0MywgNDMsIDQzLCAxODAsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODIsIDM4LCA3NSwgCi0gICAgMTgzLCAxODMsIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4MiwgMzgsIDE4MiwgMTgxLCAxODMsIDU3LCAwLCAKLSAgICAxODQsIDE4NCwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTcyLCAxODcsIDE4OCwgMTg5LCA4MywgMTg4LCAxODgsIDE4OCwgMjIsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTEsIAotICAgIDE5MiwgMTkzLCAxOTQsIDIyLCAyMiwgMjIsIDEzNSwgMTk1LCAxOTUsIDE5NSwgMjIsIDE5NiwgMTk3LCAxOTgsIDE5OSwgCi0gICAgMjAwLCAyMDEsIDIwMiwgMjEsIDIwMywgMTA4LCAyMDMsIDIwNCwgMjA1LCAyMiwgMTkwLCAxOTAsIDEzNSwgMjksIDM2LCAKLSAgICAyMiwgMTkwLCAxMzUsIDE5NSwgMjA2LCAyMDYsIDEzNSwgMTM1LCAxMzUsIDIwNywgMTYxLCAxNjIsIDE5MCwgMTkwLCAxOTAsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA3NywgMTM1LCAyMDYsIDEzNSwgMTM1LCAxOTAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTg1LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMjA4LCA1MCwgMCwgMCwgMzQsIDIwOCwgMjA4LCAyMDgsIDIwOCwgCi0gICAgMjA4LCAyMDksIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMDgsIDM0LCAzNCwgMzQsIDM0LCAyMDgsIDIwOCwgMjA4LCAKLSAgICAyMDgsIDIwOCwgMjA5LCAyMDksIDIxMCwgMjExLCAyMTIsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjE0LCAKLSAgICAyMTUsIDE0NSwgMTQ1LCAyMywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MCwgODAsIDE3NCwgMTc0LCA4MCwgODAsIDgwLCA4MCwgMTc0LCAxNzQsIDE3NCwgODAsIDgwLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODAsIDgxLCA4MSwgODEsIDE3NCwgMTc0LCA4MCwgODQsIDgwLCAxNzQsIDE3NCwgODQsIDg0LCA4NCwgODQsIDgwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTYsIDIxNiwgNDgsIDIxNywgMjcsIDIxNywgCi0gICAgMjE2LCA0OCwgMjcsIDIxNywgMzUsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgMjgsIDI3LCA0OCwgMjE3LCAKLSAgICAyNywgNzcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMjcsIDI3LCAyMTYsIDIxNywgMjE3LCAyNywgNDgsIDI3LCAyMTgsIDI3LCAKLSAgICA0OCwgMjcsIDE4MiwgMjE4LCA0OCwgNDgsIDIxOSwgMzUsIDQ4LCA0OCwgNDQsIDQ4LCAzNSwgMTU0LCAxNTQsIDE1NCwgCi0gICAgMTU0LCAzNSwgMjcsIDIxNiwgMzUsIDM1LCA0OCwgNDgsIDIyMCwgNzcsIDc3LCA3NywgNzcsIDQ4LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMjcsIDc3LCAyNywgMjcsIDQ2LCA3OSwgMjIxLCAyMjEsIDIyMSwgMzcsIDM3LCAyMjEsIDIyMSwgMjIxLCAyMjEsIAotICAgIDIyMSwgMjIxLCAzNywgMzcsIDM3LCAzNywgMjIxLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgCi0gICAgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIAotICAgIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMTcxLCAxNzEsIDE3MSwgNDQsIDQ2LCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDM3LCAwLCAwLCAwLCAwLCAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjI0LCAyMjQsIDI3LCAyNywgMjcsIDI3LCA3NywgMjcsIDI3LCA3NywgMjcsIDI3LCA3NywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDIyNCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjI1LCAKLSAgICAyMjQsIDIyNCwgMjcsIDI3LCA0MCwgMjcsIDQwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNDAsIDIyNiwgMjI3LCAKLSAgICAyMjcsIDIyOCwgNzcsIDc3LCA0MCwgMjI3LCAyMjgsIDIyNiwgMjI3LCAyMjgsIDIyNiwgNzcsIDQwLCA3NywgMjI3LCAyMjksIAotICAgIDIzMCwgNzcsIDIyNywgMjI2LCA3NywgNzcsIDc3LCAyMjcsIDIyNiwgMjI2LCAyMjcsIDQwLCAyMjcsIDIyNywgMjI2LCAKLSAgICAyMjYsIDQwLCAyMjgsIDQwLCAyMjgsIDQwLCA0MCwgNDAsIDQwLCAyMjcsIDIzMSwgMjIwLCAyMjcsIDIyMCwgMjIwLCAyMjYsIAotICAgIDIyNiwgMjI2LCA0MCwgNDAsIDQwLCA0MCwgNzcsIDIyNiwgNzcsIDIyNiwgMjI3LCAyMjcsIDIyNiwgMjI2LCAyMjYsIDIyOCwgCi0gICAgMjI2LCAyMjYsIDIyOCwgMjI2LCAyMjYsIDIyOCwgMjI3LCAyMjgsIDIyNiwgMjI2LCAyMjcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjI3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIzMiwgNDAsIAotICAgIDIyOCwgNzcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI2LCAyMjYsIDIyNywgMjI3LCA3NywgMjI0LCAyMzIsIDIzMiwgMjI4LCAKLSAgICAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjgsIDIyOCwgMjI3LCAyMjcsIDIyOCwgMjI4LCAyMjcsIDIyNywgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDQwLCA3NywgNzcsIDIyNiwgNDAsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCA0MCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNiwgMjI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyMjYsIDIyNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIzMywgMjM0LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDI3LCA3NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjYsIDc4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAKICAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKLSAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjIxLCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgCi0gICAgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI1LCA0MCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNSwgNDAsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI1LCAKLSAgICAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI1LCAKLSAgICAyNywgNDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAxNjEsIDE2MiwgCi0gICAgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMjM2LCAyMzYsIAotICAgIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMjYsIDc3LCA3NywgMjI2LCAyMjYsIDE2MSwgMTYyLCA3NywgMjI2LCAKLSAgICAyMjYsIDc3LCAwLCAyMjYsIDAsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgOSwgMTAsIDksIDEwLCA5LCAKLSAgICAxMCwgOSwgMTAsIDE2MSwgMTYyLCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDE2MSwgMTYyLCA5LCAxMCwgMTYxLCAxNjIsIDE2MSwgCi0gICAgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIAotICAgIDE2MiwgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMTYxLCAxNjIsIDE2MSwgMTYyLCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgNzcsIDc3LCAxNjEsIDE2MiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDIyMCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDIyNiwgNzcsIDIyNiwgCi0gICAgNzcsIDc3LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCAyMjYsIDc3LCA3NywgMjI2LCAyMjAsIDIxMCwgMjEwLCA3NywgNzcsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCAyMzcsIDc3LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDc3LCAyMjYsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCA3NywgNzcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDI3LCAyNywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAwLCA0NCwgNDYsIAotICAgIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ0LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ2LCA0NCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMzUsIDUwLCA0NCwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNDQsIDQ2LCA0NCwgNDYsIDgwLCA4MCwgODAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTUxLCAxMzUsIDEzNSwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjIzLCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCisgICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAorICAgIDIzOCwgMjM4LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAorICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDE2MywgMTY0LCA3OCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgMTM1LCAxMzUsIDI5LCAzNiwgMjksIDM2LCAxMzUsIDEzNSwgMTM1LCAyOSwgMzYsIDEzNSwgMjksIAotICAgIDM2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MywgMTM1LCAxMzUsIDgzLCAxMzUsIAotICAgIDI5LCAzNiwgMTM1LCAxMzUsIDI5LCAzNiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOSwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAwLCAwLCAwLCAwLCAyNDAsIDI0MSwgMjQxLCAyNDEsIAotICAgIDIzOCwgMjQyLCAxNjgsIDI0MywgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAKLSAgICAyMzgsIDIzOCwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OCwgCi0gICAgMjM4LCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDksIDI1MCwgMjUxLCAyNTIsIAotICAgIDI1MywgMjUzLCAyNDYsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyMzksIDIzOCwgMjU0LCAyNTQsIDI1NCwgMjQyLCAKLSAgICAxNjgsIDI0MSwgMjM4LCAyNywgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgCi0gICAgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMjU1LCAxNjgsIAotICAgIDI1NSwgMTY4LCAyNTUsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAKLSAgICAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDI1NSwgMTY4LCAxNjgsIDAsIDAsIDI1NiwgMjU2LCAyNTcsIDI1NywgMjQyLCAyNTgsIDI1OSwgCi0gICAgMjQ2LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjU1LCAxNjgsIAotICAgIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIAotICAgIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMjU1LCAxNjgsIDE2OCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNDEsIDI0MiwgMjQyLCAyNTgsIDI1OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMCwgMjYwLCAyNjAsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyMzksIDIzOSwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjM5LCAyNjQsIDI2NCwgCi0gICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDIzOSwgCi0gICAgMjM5LCAyMzksIDI2MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjQsIDI2NCwgMjY0LCAyNjQsIAotICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIDIzOSwgMjM5LCAyMzksIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyMzksIDIzOSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAyNDIsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAwLCAwLCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCAxMzUsIDEzNSwgCi0gICAgMTM1LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NywgODAsIDgxLCA4MSwgODEsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCAxMzUsIDUxLCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCA4MCwgODAsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA1MCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA1MSwgMjY1LCAyNjUsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICAwLCA0NCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDEzMiwgNDcsIDQ3LCA0NywgMTM5LCA0NywgNDcsIDQ3LCA0NywgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgMTM2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgNzksIDc5LCAxNDUsIDIxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM2LCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDgyLCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDg0LCA4NCwgODQsIDgyLCAKLSAgICA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTM2LCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MiwgMTM2LCAxMzYsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTczLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgNTIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMTMyLCAxMzYsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgCi0gICAgMCwgODIsIDgyLCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA1MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNzksIDc5LCA3OSwgNDcsIDEzNiwgMCwgMCwgMCwgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODAsIDQ3LCA4MCwgODAsIDg0LCA0NywgCi0gICAgNDcsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MCwgODAsIDQ3LCA4MCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNTIsIDgyLCA4MiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAxNjMsIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjI4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjIsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDc4LCAyMjgsIDc4LCA3OCwgMjI4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgCisgICAgMjIyLCAyMTIsIDIxMiwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjM5LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgNzgsIDIyOCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzIsIAotICAgIDEzNiwgMTM2LCA4MiwgMTM2LCAxMzksIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNjgsIDE2OCwgMjY4LCAxNjgsIDI2OCwgMTY4LCAxNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTY4LCAyNjgsIDE2OCwgMjY4LCAxNjgsIAotICAgIDE2OCwgMjY4LCAyNjgsIDE2OCwgMTY4LCAxNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNzAsIDI2OSwgCi0gICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjA5LCAyNjksIDI2OSwgMjY5LCAyNjksIAotICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAwLCAyNjksIDAsIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjcxLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDE5MywgMjczLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDI3NCwgMjcsIDAsIDAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKLSAgICAyNzUsIDI3NiwgMjc3LCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDI3OCwgMjc4LCAyNzksIDI3OSwgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIAotICAgIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNDEsIDI0MSwgMjc2LCAKLSAgICAyNzcsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc5LCAyNzksIDI3OSwgMjgwLCAyNzUsIDI4MCwgMCwgMjc1LCAyODAsIDI3NSwgCi0gICAgMjc1LCAyNzgsIDI4MSwgMjgyLCAyODEsIDI4MiwgMjgxLCAyODIsIDI4MywgMjc1LCAyNzUsIDI4NCwgMjg1LCAyODYsIAotICAgIDI4NiwgMjg3LCAwLCAyNzUsIDI4OCwgMjgzLCAyNzUsIDAsIDAsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDExNSwgMTI4LCAwLCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAwLCAxODYsIDAsIDI4OSwgMjg5LCAyOTAsIAotICAgIDI5MSwgMjkwLCAyODksIDI4OSwgMjkyLCAyOTMsIDI4OSwgMjk0LCAyOTUsIDI5NiwgMjk1LCAyOTUsIDI5NywgMjk3LCAKLSAgICAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk1LCAyODksIDI5OCwgMjk5LCAyOTgsIDI4OSwgCi0gICAgMjg5LCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIAotICAgIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMjkyLCAKLSAgICAyODksIDI5MywgMzAxLCAzMDIsIDMwMSwgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCi0gICAgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDI5MiwgMjk5LCAyOTMsIDI5OSwgMjkyLCAyOTMsIDMwNCwgMzA1LCAzMDYsIDMwNCwgMzA0LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwOCwgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA4LCAzMDgsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgMCwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgCi0gICAgMzA3LCAzMDcsIDMwNywgMCwgMCwgMCwgMjkxLCAyOTEsIDI5OSwgMzAxLCAzMDksIDI5MSwgMjkxLCAwLCAzMTAsIDMxMSwgCi0gICAgMzExLCAzMTEsIDMxMSwgMzEwLCAzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMiwgMzEyLCAzMTIsIDI3LCAKLSAgICAyNSwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCA4MiwgMTM1LCA3OSwgMCwgMCwgMCwgMCwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAxNTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDg0LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzEsIDAsIDAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMzgsIDEzOCwgMjgsIDM2LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIDI4LCAzNiwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDEzOCwgODQsIDEzOCwgMjgsIDM2LCAxMzgsIAorICAgIDEzOCwgMjgsIDM2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDUyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCA4NCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgODIsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIAotICAgIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDEsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMCwgMCwgMCwgMCwgMjQyLCAyNDMsIDI0MywgMjQzLCAKKyAgICAyNDAsIDI0NCwgMTcwLCAyNDUsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgCisgICAgMjQwLCAyNDAsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTAsIAorICAgIDI0MCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjUxLCAyNTIsIDI1MywgMjU0LCAKKyAgICAyNTUsIDI1NSwgMjQ4LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQxLCAyNDAsIDI1NiwgMjU2LCAyNTYsIDI0NCwgCisgICAgMTcwLCAyNDMsIDI0MCwgMjYsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIAorICAgIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDI1NywgMTcwLCAKKyAgICAyNTcsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgCisgICAgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAyNTcsIDE3MCwgMTcwLCAwLCAwLCAyNTgsIDI1OCwgMjU5LCAyNTksIDI0NCwgMjYwLCAyNjEsIAorICAgIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI1NywgMTcwLCAKKyAgICAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAKKyAgICAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI1NywgMTcwLCAxNzAsIDI1NywgMjU3LCAyNTcsIDI1NywgMjQzLCAyNDQsIDI0NCwgMjYwLCAyNjEsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDI2MiwgMjYyLCAyNjMsIDI2MywgCisgICAgMjYzLCAyNjMsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjQxLCAyNDEsIDAsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAorICAgIDI2MywgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI0MSwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNjIsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjQxLCAyNDEsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDQsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIAorICAgIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgCisgICAgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MiwgMjY3LCAyNjcsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIDg1LCAyMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgODMsIDgzLCA4MywgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgCisgICAgODYsIDg2LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAorICAgIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NCwgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIAorICAgIDQ4LCAxMzksIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCAKKyAgICA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgODEsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgCisgICAgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMTcwLCAxNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMTcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAxNzAsIDI3MCwgMjcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzEsIDI3MiwgMjcxLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyMTEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMCwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDAsIDI3MSwgMCwgMjcxLCAyNzEsIAorICAgIDAsIDI3MSwgMjcxLCAwLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzMsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTk1LCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMjc2LCAyNiwgMCwgMCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc4LCAyNzksIAorICAgIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3NywgMjgwLCAyODAsIDI4MSwgMjgxLCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgCisgICAgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI0MywgMjQzLCAyNzgsIDI3OSwgMjc3LCAyNzcsIAorICAgIDI3NywgMjc3LCAyODEsIDI4MSwgMjgxLCAyODIsIDI3NywgMjgyLCAwLCAyNzcsIDI4MiwgMjc3LCAyNzcsIDI4MCwgMjgzLCAKKyAgICAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjg1LCAyNzcsIDI3NywgMjg2LCAyODcsIDI4OCwgMjg4LCAyODksIDAsIDI3NywgCisgICAgMjkwLCAyODUsIDI3NywgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTE3LCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDE4NywgMCwgMjkxLCAyOTEsIDI5MiwgMjkzLCAyOTIsIDI5MSwgCisgICAgMjkxLCAyOTQsIDI5NSwgMjkxLCAyOTYsIDI5NywgMjk4LCAyOTcsIDI5NywgMjk5LCAyOTksIDI5OSwgMjk5LCAyOTksIAorICAgIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk5LCAyOTcsIDI5MSwgMzAwLCAzMDEsIDMwMCwgMjkxLCAyOTEsIDMwMiwgMzAyLCAKKyAgICAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgCisgICAgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAyOTQsIDI5MSwgMjk1LCAzMDMsIAorICAgIDMwNCwgMzAzLCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAKKyAgICAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgCisgICAgMjk0LCAzMDEsIDI5NSwgMzAxLCAyOTQsIDI5NSwgMzA2LCAzMDcsIDMwOCwgMzA2LCAzMDYsIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzEwLCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMTAsIDMxMCwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAwLCAwLCAwLCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAwLCAwLCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAwLCAwLCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAwLCAwLCAzMDksIDMwOSwgMzA5LCAKKyAgICAwLCAwLCAwLCAyOTMsIDI5MywgMzAxLCAzMDMsIDMxMSwgMjkzLCAyOTMsIDAsIDMxMiwgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTIsIDMxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMjYsIDMwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAwLCAwLCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAxMDUsIDEwNSwgMCwgMCwgMCwgMTA1LCAwLCAwLCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMTAyLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKLSAgICAzMTQsIDMxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAxMzUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTMyLCAxMzIsIDEzMiwgMCwgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzMiwgODQsIDEzMiwgODAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMTA1LCAxMDUsIDEwNSwgMCwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgODAsIDE3NCwgCi0gICAgODQsIDAsIDAsIDAsIDAsIDEzOSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAzMTQsIDMxNCwgMTAyLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCi0gICAgMzE0LCAzMTQsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAotICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKLSAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAwLCAxMzYsIDEzMiwgCi0gICAgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzksIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNywgNDcsIAotICAgIDEzNywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzksIDEzOCwgODIsIDgyLCAKLSAgICAxNzIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAotICAgIDMxNiwgMzE2LCAzMTcsIDMxNywgMTc0LCAxNzQsIDE3NCwgNzksIDc5LCA3OSwgMzE4LCAzMTcsIDMxNywgMzE3LCAzMTcsIAotICAgIDMxNywgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgNzksIDc5LCA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4NCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgODAsIDgwLCA4MCwgODAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDgwLCA4MCwgODAsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCisgICAgMzE2LCAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNSwgODYsIDEzNSwgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NSwgCisgICAgODYsIDAsIDAsIDAsIDAsIDE0MiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAzMTYsIDMxNiwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCisgICAgMzE2LCAzMTYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIAorICAgIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAKKyAgICAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAwLCAxMzksIDEzNSwgCisgICAgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDMxOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDIyMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDMxOSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDIyMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDIsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIAorICAgIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxNDIsIDE0MSwgODMsIDgzLCAKKyAgICAxODgsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDMxOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCAzNSwgMCwgMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAzMjEsIDAsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDIzNSwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDksIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM5LCAxMzUsIDE1MCwgMTUwLCAxMzUsIDEzNSwgMTM1LCAxNDIsIDE0MiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAyNjIsIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTc0LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAorICAgIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTksIDMxOSwgCisgICAgMTc1LCAxNzUsIDE3NSwgODAsIDgwLCA4MCwgMzIwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIAorICAgIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTgsIDMxOCwgCisgICAgMzE4LCAzMTgsIDMxOCwgMzE4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCAKKyAgICA4MSwgODEsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKKyAgICA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDAsIAorICAgIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgCisgICAgMCwgMTMwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAwLCAwLCAwLCAwLCAwLCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAzMjMsIDAsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMjE4LCAyMTgsIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAyMzcsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAwLCAyNywgMCwgMjcsIDAsIDI3LCAKLSAgICAwLCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDAsIAotICAgIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAKLSAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCisgICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAKKyAgICAwLCAKIH07CiAKIC8qIGRlY29tcG9zaXRpb24gZGF0YSAqLwpAQCAtMzA3MiwzMjEgKzMxNDAsMzIyIEBACiAgICAgNTAsIDQ5LCAyNjA4NSwgNzcwLCA1MCwgNTAsIDI2MDg1LCA3NzAsIDUwLCA1MSwgMjYwODUsIDc3MCwgNTAsIDUyLCAKICAgICAyNjA4NSwgNzcwLCA1MCwgNTMsIDI2MDg1LCA3NzAsIDUwLCA1NCwgMjYwODUsIDc3MCwgNTAsIDU1LCAyNjA4NSwgNzcwLCAKICAgICA1MCwgNTYsIDI2MDg1LCA3NzAsIDUwLCA1NywgMjYwODUsIDc3MCwgNTEsIDQ4LCAyNjA4NSwgNzcwLCA1MSwgNDksIAotICAgIDI2MDg1LCA3NzgsIDEwMywgOTcsIDEwOCwgMjU5LCA0Mjg2MywgMjU2LCAzNTkxMiwgMjU2LCAyNjM1NiwgMjU2LCAzNjU1NCwgCi0gICAgMjU2LCAzNjA0MCwgMjU2LCAyODM2OSwgMjU2LCAyMDAxOCwgMjU2LCAyMTQ3NywgMjU2LCA0MDg2MCwgMjU2LCA0MDg2MCwgCi0gICAgMjU2LCAyMjg2NSwgMjU2LCAzNzMyOSwgMjU2LCAyMTg5NSwgMjU2LCAyMjg1NiwgMjU2LCAyNTA3OCwgMjU2LCAzMDMxMywgCi0gICAgMjU2LCAzMjY0NSwgMjU2LCAzNDM2NywgMjU2LCAzNDc0NiwgMjU2LCAzNTA2NCwgMjU2LCAzNzAwNywgMjU2LCAyNzEzOCwgCi0gICAgMjU2LCAyNzkzMSwgMjU2LCAyODg4OSwgMjU2LCAyOTY2MiwgMjU2LCAzMzg1MywgMjU2LCAzNzIyNiwgMjU2LCAzOTQwOSwgCi0gICAgMjU2LCAyMDA5OCwgMjU2LCAyMTM2NSwgMjU2LCAyNzM5NiwgMjU2LCAyOTIxMSwgMjU2LCAzNDM0OSwgMjU2LCA0MDQ3OCwgCi0gICAgMjU2LCAyMzg4OCwgMjU2LCAyODY1MSwgMjU2LCAzNDI1MywgMjU2LCAzNTE3MiwgMjU2LCAyNTI4OSwgMjU2LCAzMzI0MCwgCi0gICAgMjU2LCAzNDg0NywgMjU2LCAyNDI2NiwgMjU2LCAyNjM5MSwgMjU2LCAyODAxMCwgMjU2LCAyOTQzNiwgMjU2LCAzNzA3MCwgCi0gICAgMjU2LCAyMDM1OCwgMjU2LCAyMDkxOSwgMjU2LCAyMTIxNCwgMjU2LCAyNTc5NiwgMjU2LCAyNzM0NywgMjU2LCAyOTIwMCwgCi0gICAgMjU2LCAzMDQzOSwgMjU2LCAzMjc2OSwgMjU2LCAzNDMxMCwgMjU2LCAzNDM5NiwgMjU2LCAzNjMzNSwgMjU2LCAzODcwNiwgCi0gICAgMjU2LCAzOTc5MSwgMjU2LCA0MDQ0MiwgMjU2LCAzMDg2MCwgMjU2LCAzMTEwMywgMjU2LCAzMjE2MCwgMjU2LCAzMzczNywgCi0gICAgMjU2LCAzNzYzNiwgMjU2LCA0MDU3NSwgMjU2LCAzNTU0MiwgMjU2LCAyMjc1MSwgMjU2LCAyNDMyNCwgMjU2LCAzMTg0MCwgCi0gICAgMjU2LCAzMjg5NCwgMjU2LCAyOTI4MiwgMjU2LCAzMDkyMiwgMjU2LCAzNjAzNCwgMjU2LCAzODY0NywgMjU2LCAyMjc0NCwgCi0gICAgMjU2LCAyMzY1MCwgMjU2LCAyNzE1NSwgMjU2LCAyODEyMiwgMjU2LCAyODQzMSwgMjU2LCAzMjA0NywgMjU2LCAzMjMxMSwgCi0gICAgMjU2LCAzODQ3NSwgMjU2LCAyMTIwMiwgMjU2LCAzMjkwNywgMjU2LCAyMDk1NiwgMjU2LCAyMDk0MCwgMjU2LCAzMTI2MCwgCi0gICAgMjU2LCAzMjE5MCwgMjU2LCAzMzc3NywgMjU2LCAzODUxNywgMjU2LCAzNTcxMiwgMjU2LCAyNTI5NSwgMjU2LCAyNzEzOCwgCi0gICAgMjU2LCAzNTU4MiwgMjU2LCAyMDAyNSwgMjU2LCAyMzUyNywgMjU2LCAyNDU5NCwgMjU2LCAyOTU3NSwgMjU2LCAzMDA2NCwgCi0gICAgMjU2LCAyMTI3MSwgMjU2LCAzMDk3MSwgMjU2LCAyMDQxNSwgMjU2LCAyNDQ4OSwgMjU2LCAxOTk4MSwgMjU2LCAyNzg1MiwgCi0gICAgMjU2LCAyNTk3NiwgMjU2LCAzMjAzNCwgMjU2LCAyMTQ0MywgMjU2LCAyMjYyMiwgMjU2LCAzMDQ2NSwgMjU2LCAzMzg2NSwgCi0gICAgMjU2LCAzNTQ5OCwgMjU2LCAyNzU3OCwgMjU2LCAzNjc4NCwgMjU2LCAyNzc4NCwgMjU2LCAyNTM0MiwgMjU2LCAzMzUwOSwgCi0gICAgMjU2LCAyNTUwNCwgMjU2LCAzMDA1MywgMjU2LCAyMDE0MiwgMjU2LCAyMDg0MSwgMjU2LCAyMDkzNywgMjU2LCAyNjc1MywgCi0gICAgMjU2LCAzMTk3NSwgMjU2LCAzMzM5MSwgMjU2LCAzNTUzOCwgMjU2LCAzNzMyNywgMjU2LCAyMTIzNywgMjU2LCAyMTU3MCwgCi0gICAgMjU2LCAyMjg5OSwgMjU2LCAyNDMwMCwgMjU2LCAyNjA1MywgMjU2LCAyODY3MCwgMjU2LCAzMTAxOCwgMjU2LCAzODMxNywgCi0gICAgMjU2LCAzOTUzMCwgMjU2LCA0MDU5OSwgMjU2LCA0MDY1NCwgMjU2LCAyMTE0NywgMjU2LCAyNjMxMCwgMjU2LCAyNzUxMSwgCi0gICAgMjU2LCAzNjcwNiwgMjU2LCAyNDE4MCwgMjU2LCAyNDk3NiwgMjU2LCAyNTA4OCwgMjU2LCAyNTc1NCwgMjU2LCAyODQ1MSwgCi0gICAgMjU2LCAyOTAwMSwgMjU2LCAyOTgzMywgMjU2LCAzMTE3OCwgMjU2LCAzMjI0NCwgMjU2LCAzMjg3OSwgMjU2LCAzNjY0NiwgCi0gICAgMjU2LCAzNDAzMCwgMjU2LCAzNjg5OSwgMjU2LCAzNzcwNiwgMjU2LCAyMTAxNSwgMjU2LCAyMTE1NSwgMjU2LCAyMTY5MywgCi0gICAgMjU2LCAyODg3MiwgMjU2LCAzNTAxMCwgMjU2LCAzNTQ5OCwgMjU2LCAyNDI2NSwgMjU2LCAyNDU2NSwgMjU2LCAyNTQ2NywgCi0gICAgMjU2LCAyNzU2NiwgMjU2LCAzMTgwNiwgMjU2LCAyOTU1NywgMjU2LCAyMDE5NiwgMjU2LCAyMjI2NSwgMjU2LCAyMzUyNywgCi0gICAgMjU2LCAyMzk5NCwgMjU2LCAyNDYwNCwgMjU2LCAyOTYxOCwgMjU2LCAyOTgwMSwgMjU2LCAzMjY2NiwgMjU2LCAzMjgzOCwgCi0gICAgMjU2LCAzNzQyOCwgMjU2LCAzODY0NiwgMjU2LCAzODcyOCwgMjU2LCAzODkzNiwgMjU2LCAyMDM2MywgMjU2LCAzMTE1MCwgCi0gICAgMjU2LCAzNzMwMCwgMjU2LCAzODU4NCwgMjU2LCAyNDgwMSwgMjU2LCAyMDEwMiwgMjU2LCAyMDY5OCwgMjU2LCAyMzUzNCwgCi0gICAgMjU2LCAyMzYxNSwgMjU2LCAyNjAwOSwgMjU2LCAyNzEzOCwgMjU2LCAyOTEzNCwgMjU2LCAzMDI3NCwgMjU2LCAzNDA0NCwgCi0gICAgMjU2LCAzNjk4OCwgMjU2LCA0MDg0NSwgMjU2LCAyNjI0OCwgMjU2LCAzODQ0NiwgMjU2LCAyMTEyOSwgMjU2LCAyNjQ5MSwgCi0gICAgMjU2LCAyNjYxMSwgMjU2LCAyNzk2OSwgMjU2LCAyODMxNiwgMjU2LCAyOTcwNSwgMjU2LCAzMDA0MSwgMjU2LCAzMDgyNywgCi0gICAgMjU2LCAzMjAxNiwgMjU2LCAzOTAwNiwgMjU2LCAyMDg0NSwgMjU2LCAyNTEzNCwgMjU2LCAzODUyMCwgMjU2LCAyMDUyMywgCi0gICAgMjU2LCAyMzgzMywgMjU2LCAyODEzOCwgMjU2LCAzNjY1MCwgMjU2LCAyNDQ1OSwgMjU2LCAyNDkwMCwgMjU2LCAyNjY0NywgCi0gICAgMjU2LCAyOTU3NSwgMjU2LCAzODUzNCwgMjU2LCAyMTAzMywgMjU2LCAyMTUxOSwgMjU2LCAyMzY1MywgMjU2LCAyNjEzMSwgCi0gICAgMjU2LCAyNjQ0NiwgMjU2LCAyNjc5MiwgMjU2LCAyNzg3NywgMjU2LCAyOTcwMiwgMjU2LCAzMDE3OCwgMjU2LCAzMjYzMywgCi0gICAgMjU2LCAzNTAyMywgMjU2LCAzNTA0MSwgMjU2LCAzNzMyNCwgMjU2LCAzODYyNiwgMjU2LCAyMTMxMSwgMjU2LCAyODM0NiwgCi0gICAgMjU2LCAyMTUzMywgMjU2LCAyOTEzNiwgMjU2LCAyOTg0OCwgMjU2LCAzNDI5OCwgMjU2LCAzODU2MywgMjU2LCA0MDAyMywgCi0gICAgMjU2LCA0MDYwNywgMjU2LCAyNjUxOSwgMjU2LCAyODEwNywgMjU2LCAzMzI1NiwgMjU2LCAzMTQzNSwgMjU2LCAzMTUyMCwgCi0gICAgMjU2LCAzMTg5MCwgMjU2LCAyOTM3NiwgMjU2LCAyODgyNSwgMjU2LCAzNTY3MiwgMjU2LCAyMDE2MCwgMjU2LCAzMzU5MCwgCi0gICAgMjU2LCAyMTA1MCwgMjU2LCAyMDk5OSwgMjU2LCAyNDIzMCwgMjU2LCAyNTI5OSwgMjU2LCAzMTk1OCwgMjU2LCAyMzQyOSwgCi0gICAgMjU2LCAyNzkzNCwgMjU2LCAyNjI5MiwgMjU2LCAzNjY2NywgMjU2LCAzNDg5MiwgMjU2LCAzODQ3NywgMjU2LCAzNTIxMSwgCi0gICAgMjU2LCAyNDI3NSwgMjU2LCAyMDgwMCwgMjU2LCAyMTk1MiwgMjU2LCAyMjYxOCwgMjU2LCAyNjIyOCwgMjU2LCAyMDk1OCwgCi0gICAgMjU2LCAyOTQ4MiwgMjU2LCAzMDQxMCwgMjU2LCAzMTAzNiwgMjU2LCAzMTA3MCwgMjU2LCAzMTA3NywgMjU2LCAzMTExOSwgCi0gICAgMjU2LCAzODc0MiwgMjU2LCAzMTkzNCwgMjU2LCAzMjcwMSwgMjU2LCAzNDMyMiwgMjU2LCAzNTU3NiwgMjU2LCAzNjkyMCwgCi0gICAgMjU2LCAzNzExNywgMjU2LCAzOTE1MSwgMjU2LCAzOTE2NCwgMjU2LCAzOTIwOCwgMjU2LCA0MDM3MiwgMjU2LCAyMDM5OCwgCi0gICAgMjU2LCAyMDcxMSwgMjU2LCAyMDgxMywgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTMyOSwgMjU2LCAyMTkxNywgCi0gICAgMjU2LCAyMjAyMiwgMjU2LCAyMjEyMCwgMjU2LCAyMjU5MiwgMjU2LCAyMjY5NiwgMjU2LCAyMzY1MiwgMjU2LCAyMzY2MiwgCi0gICAgMjU2LCAyNDcyNCwgMjU2LCAyNDkzNiwgMjU2LCAyNDk3NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTkzNSwgMjU2LCAyNjA4MiwgCi0gICAgMjU2LCAyNjI1NywgMjU2LCAyNjc1NywgMjU2LCAyODAyMywgMjU2LCAyODE4NiwgMjU2LCAyODQ1MCwgMjU2LCAyOTAzOCwgCi0gICAgMjU2LCAyOTIyNywgMjU2LCAyOTczMCwgMjU2LCAzMDg2NSwgMjU2LCAzMTAzOCwgMjU2LCAzMTA0OSwgMjU2LCAzMTA0OCwgCi0gICAgMjU2LCAzMTA1NiwgMjU2LCAzMTA2MiwgMjU2LCAzMTA2OSwgMjU2LCAzMTExNywgMjU2LCAzMTExOCwgMjU2LCAzMTI5NiwgCi0gICAgMjU2LCAzMTM2MSwgMjU2LCAzMTY4MCwgMjU2LCAzMjI0NCwgMjU2LCAzMjI2NSwgMjU2LCAzMjMyMSwgMjU2LCAzMjYyNiwgCi0gICAgMjU2LCAzMjc3MywgMjU2LCAzMzI2MSwgMjU2LCAzMzQwMSwgMjU2LCAzMzQwMSwgMjU2LCAzMzg3OSwgMjU2LCAzNTA4OCwgCi0gICAgMjU2LCAzNTIyMiwgMjU2LCAzNTU4NSwgMjU2LCAzNTY0MSwgMjU2LCAzNjA1MSwgMjU2LCAzNjEwNCwgMjU2LCAzNjc5MCwgCi0gICAgMjU2LCAzNjkyMCwgMjU2LCAzODYyNywgMjU2LCAzODkxMSwgMjU2LCAzODk3MSwgMjU2LCAyNDY5MywgMjU2LCAxNDgyMDYsIAotICAgIDI1NiwgMzMzMDQsIDI1NiwgMjAwMDYsIDI1NiwgMjA5MTcsIDI1NiwgMjA4NDAsIDI1NiwgMjAzNTIsIDI1NiwgMjA4MDUsIAotICAgIDI1NiwgMjA4NjQsIDI1NiwgMjExOTEsIDI1NiwgMjEyNDIsIDI1NiwgMjE5MTcsIDI1NiwgMjE4NDUsIDI1NiwgMjE5MTMsIAotICAgIDI1NiwgMjE5ODYsIDI1NiwgMjI2MTgsIDI1NiwgMjI3MDcsIDI1NiwgMjI4NTIsIDI1NiwgMjI4NjgsIDI1NiwgMjMxMzgsIAotICAgIDI1NiwgMjMzMzYsIDI1NiwgMjQyNzQsIDI1NiwgMjQyODEsIDI1NiwgMjQ0MjUsIDI1NiwgMjQ0OTMsIDI1NiwgMjQ3OTIsIAotICAgIDI1NiwgMjQ5MTAsIDI1NiwgMjQ4NDAsIDI1NiwgMjQ5NzQsIDI1NiwgMjQ5MjgsIDI1NiwgMjUwNzQsIDI1NiwgMjUxNDAsIAotICAgIDI1NiwgMjU1NDAsIDI1NiwgMjU2MjgsIDI1NiwgMjU2ODIsIDI1NiwgMjU5NDIsIDI1NiwgMjYyMjgsIDI1NiwgMjYzOTEsIAotICAgIDI1NiwgMjYzOTUsIDI1NiwgMjY0NTQsIDI1NiwgMjc1MTMsIDI1NiwgMjc1NzgsIDI1NiwgMjc5NjksIDI1NiwgMjgzNzksIAotICAgIDI1NiwgMjgzNjMsIDI1NiwgMjg0NTAsIDI1NiwgMjg3MDIsIDI1NiwgMjkwMzgsIDI1NiwgMzA2MzEsIDI1NiwgMjkyMzcsIAotICAgIDI1NiwgMjkzNTksIDI1NiwgMjk0ODIsIDI1NiwgMjk4MDksIDI1NiwgMjk5NTgsIDI1NiwgMzAwMTEsIDI1NiwgMzAyMzcsIAotICAgIDI1NiwgMzAyMzksIDI1NiwgMzA0MTAsIDI1NiwgMzA0MjcsIDI1NiwgMzA0NTIsIDI1NiwgMzA1MzgsIDI1NiwgMzA1MjgsIAotICAgIDI1NiwgMzA5MjQsIDI1NiwgMzE0MDksIDI1NiwgMzE2ODAsIDI1NiwgMzE4NjcsIDI1NiwgMzIwOTEsIDI1NiwgMzIyNDQsIAotICAgIDI1NiwgMzI1NzQsIDI1NiwgMzI3NzMsIDI1NiwgMzM2MTgsIDI1NiwgMzM3NzUsIDI1NiwgMzQ2ODEsIDI1NiwgMzUxMzcsIAotICAgIDI1NiwgMzUyMDYsIDI1NiwgMzUyMjIsIDI1NiwgMzU1MTksIDI1NiwgMzU1NzYsIDI1NiwgMzU1MzEsIDI1NiwgMzU1ODUsIAotICAgIDI1NiwgMzU1ODIsIDI1NiwgMzU1NjUsIDI1NiwgMzU2NDEsIDI1NiwgMzU3MjIsIDI1NiwgMzYxMDQsIDI1NiwgMzY2NjQsIAotICAgIDI1NiwgMzY5NzgsIDI1NiwgMzcyNzMsIDI1NiwgMzc0OTQsIDI1NiwgMzg1MjQsIDI1NiwgMzg2MjcsIDI1NiwgMzg3NDIsIAotICAgIDI1NiwgMzg4NzUsIDI1NiwgMzg5MTEsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NzEsIDI1NiwgMzk2OTgsIDI1NiwgNDA4NjAsIAotICAgIDI1NiwgMTQxMzg2LCAyNTYsIDE0MTM4MCwgMjU2LCAxNDQzNDEsIDI1NiwgMTUyNjEsIDI1NiwgMTY0MDgsIDI1NiwgCi0gICAgMTY0NDEsIDI1NiwgMTUyMTM3LCAyNTYsIDE1NDgzMiwgMjU2LCAxNjM1MzksIDI1NiwgNDA3NzEsIDI1NiwgNDA4NDYsIAotICAgIDUxNCwgMTAyLCAxMDIsIDUxNCwgMTAyLCAxMDUsIDUxNCwgMTAyLCAxMDgsIDc3MCwgMTAyLCAxMDIsIDEwNSwgNzcwLCAKLSAgICAxMDIsIDEwMiwgMTA4LCA1MTQsIDM4MywgMTE2LCA1MTQsIDExNSwgMTE2LCA1MTQsIDEzOTYsIDEzOTgsIDUxNCwgMTM5NiwgCi0gICAgMTM4MSwgNTE0LCAxMzk2LCAxMzg3LCA1MTQsIDE0MDYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4OSwgNTEyLCAxNDk3LCAxNDYwLCAKLSAgICA1MTIsIDE1MjIsIDE0NjMsIDI2MiwgMTUwNiwgMjYyLCAxNDg4LCAyNjIsIDE0OTEsIDI2MiwgMTQ5MiwgMjYyLCAxNDk5LCAKLSAgICAyNjIsIDE1MDAsIDI2MiwgMTUwMSwgMjYyLCAxNTEyLCAyNjIsIDE1MTQsIDI2MiwgNDMsIDUxMiwgMTUxMywgMTQ3MywgCi0gICAgNTEyLCAxNTEzLCAxNDc0LCA1MTIsIDY0MzI5LCAxNDczLCA1MTIsIDY0MzI5LCAxNDc0LCA1MTIsIDE0ODgsIDE0NjMsIAotICAgIDUxMiwgMTQ4OCwgMTQ2NCwgNTEyLCAxNDg4LCAxNDY4LCA1MTIsIDE0ODksIDE0NjgsIDUxMiwgMTQ5MCwgMTQ2OCwgNTEyLCAKLSAgICAxNDkxLCAxNDY4LCA1MTIsIDE0OTIsIDE0NjgsIDUxMiwgMTQ5MywgMTQ2OCwgNTEyLCAxNDk0LCAxNDY4LCA1MTIsIDE0OTYsIAotICAgIDE0NjgsIDUxMiwgMTQ5NywgMTQ2OCwgNTEyLCAxNDk4LCAxNDY4LCA1MTIsIDE0OTksIDE0NjgsIDUxMiwgMTUwMCwgMTQ2OCwgCi0gICAgNTEyLCAxNTAyLCAxNDY4LCA1MTIsIDE1MDQsIDE0NjgsIDUxMiwgMTUwNSwgMTQ2OCwgNTEyLCAxNTA3LCAxNDY4LCA1MTIsIAotICAgIDE1MDgsIDE0NjgsIDUxMiwgMTUxMCwgMTQ2OCwgNTEyLCAxNTExLCAxNDY4LCA1MTIsIDE1MTIsIDE0NjgsIDUxMiwgMTUxMywgCi0gICAgMTQ2OCwgNTEyLCAxNTE0LCAxNDY4LCA1MTIsIDE0OTMsIDE0NjUsIDUxMiwgMTQ4OSwgMTQ3MSwgNTEyLCAxNDk5LCAxNDcxLCAKLSAgICA1MTIsIDE1MDgsIDE0NzEsIDUxNCwgMTQ4OCwgMTUwMCwgMjY3LCAxNjQ5LCAyNjgsIDE2NDksIDI2NywgMTY1OSwgMjY4LCAKLSAgICAxNjU5LCAyNjksIDE2NTksIDI3MCwgMTY1OSwgMjY3LCAxNjYyLCAyNjgsIDE2NjIsIDI2OSwgMTY2MiwgMjcwLCAxNjYyLCAKLSAgICAyNjcsIDE2NjQsIDI2OCwgMTY2NCwgMjY5LCAxNjY0LCAyNzAsIDE2NjQsIDI2NywgMTY1OCwgMjY4LCAxNjU4LCAyNjksIAotICAgIDE2NTgsIDI3MCwgMTY1OCwgMjY3LCAxNjYzLCAyNjgsIDE2NjMsIDI2OSwgMTY2MywgMjcwLCAxNjYzLCAyNjcsIDE2NTcsIAotICAgIDI2OCwgMTY1NywgMjY5LCAxNjU3LCAyNzAsIDE2NTcsIDI2NywgMTcwMCwgMjY4LCAxNzAwLCAyNjksIDE3MDAsIDI3MCwgCi0gICAgMTcwMCwgMjY3LCAxNzAyLCAyNjgsIDE3MDIsIDI2OSwgMTcwMiwgMjcwLCAxNzAyLCAyNjcsIDE2NjgsIDI2OCwgMTY2OCwgCi0gICAgMjY5LCAxNjY4LCAyNzAsIDE2NjgsIDI2NywgMTY2NywgMjY4LCAxNjY3LCAyNjksIDE2NjcsIDI3MCwgMTY2NywgMjY3LCAKLSAgICAxNjcwLCAyNjgsIDE2NzAsIDI2OSwgMTY3MCwgMjcwLCAxNjcwLCAyNjcsIDE2NzEsIDI2OCwgMTY3MSwgMjY5LCAxNjcxLCAKLSAgICAyNzAsIDE2NzEsIDI2NywgMTY3NywgMjY4LCAxNjc3LCAyNjcsIDE2NzYsIDI2OCwgMTY3NiwgMjY3LCAxNjc4LCAyNjgsIAotICAgIDE2NzgsIDI2NywgMTY3MiwgMjY4LCAxNjcyLCAyNjcsIDE2ODgsIDI2OCwgMTY4OCwgMjY3LCAxNjgxLCAyNjgsIDE2ODEsIAotICAgIDI2NywgMTcwNSwgMjY4LCAxNzA1LCAyNjksIDE3MDUsIDI3MCwgMTcwNSwgMjY3LCAxNzExLCAyNjgsIDE3MTEsIDI2OSwgCi0gICAgMTcxMSwgMjcwLCAxNzExLCAyNjcsIDE3MTUsIDI2OCwgMTcxNSwgMjY5LCAxNzE1LCAyNzAsIDE3MTUsIDI2NywgMTcxMywgCi0gICAgMjY4LCAxNzEzLCAyNjksIDE3MTMsIDI3MCwgMTcxMywgMjY3LCAxNzIyLCAyNjgsIDE3MjIsIDI2NywgMTcyMywgMjY4LCAKLSAgICAxNzIzLCAyNjksIDE3MjMsIDI3MCwgMTcyMywgMjY3LCAxNzI4LCAyNjgsIDE3MjgsIDI2NywgMTcyOSwgMjY4LCAxNzI5LCAKLSAgICAyNjksIDE3MjksIDI3MCwgMTcyOSwgMjY3LCAxNzI2LCAyNjgsIDE3MjYsIDI2OSwgMTcyNiwgMjcwLCAxNzI2LCAyNjcsIAotICAgIDE3NDYsIDI2OCwgMTc0NiwgMjY3LCAxNzQ3LCAyNjgsIDE3NDcsIDI2NywgMTcwOSwgMjY4LCAxNzA5LCAyNjksIDE3MDksIAotICAgIDI3MCwgMTcwOSwgMjY3LCAxNzM1LCAyNjgsIDE3MzUsIDI2NywgMTczNCwgMjY4LCAxNzM0LCAyNjcsIDE3MzYsIDI2OCwgCi0gICAgMTczNiwgMjY3LCAxNjU1LCAyNjcsIDE3MzksIDI2OCwgMTczOSwgMjY3LCAxNzMzLCAyNjgsIDE3MzMsIDI2NywgMTczNywgCi0gICAgMjY4LCAxNzM3LCAyNjcsIDE3NDQsIDI2OCwgMTc0NCwgMjY5LCAxNzQ0LCAyNzAsIDE3NDQsIDI2OSwgMTYwOSwgMjcwLCAKLSAgICAxNjA5LCA1MjMsIDE1NzQsIDE1NzUsIDUyNCwgMTU3NCwgMTU3NSwgNTIzLCAxNTc0LCAxNzQ5LCA1MjQsIDE1NzQsIDE3NDksIAotICAgIDUyMywgMTU3NCwgMTYwOCwgNTI0LCAxNTc0LCAxNjA4LCA1MjMsIDE1NzQsIDE3MzUsIDUyNCwgMTU3NCwgMTczNSwgNTIzLCAKLSAgICAxNTc0LCAxNzM0LCA1MjQsIDE1NzQsIDE3MzQsIDUyMywgMTU3NCwgMTczNiwgNTI0LCAxNTc0LCAxNzM2LCA1MjMsIDE1NzQsIAotICAgIDE3NDQsIDUyNCwgMTU3NCwgMTc0NCwgNTI1LCAxNTc0LCAxNzQ0LCA1MjMsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYwOSwgCi0gICAgNTI1LCAxNTc0LCAxNjA5LCAyNjcsIDE3NDAsIDI2OCwgMTc0MCwgMjY5LCAxNzQwLCAyNzAsIDE3NDAsIDUyMywgMTU3NCwgCi0gICAgMTU4MCwgNTIzLCAxNTc0LCAxNTgxLCA1MjMsIDE1NzQsIDE2MDUsIDUyMywgMTU3NCwgMTYwOSwgNTIzLCAxNTc0LCAxNjEwLCAKLSAgICA1MjMsIDE1NzYsIDE1ODAsIDUyMywgMTU3NiwgMTU4MSwgNTIzLCAxNTc2LCAxNTgyLCA1MjMsIDE1NzYsIDE2MDUsIDUyMywgCi0gICAgMTU3NiwgMTYwOSwgNTIzLCAxNTc2LCAxNjEwLCA1MjMsIDE1NzgsIDE1ODAsIDUyMywgMTU3OCwgMTU4MSwgNTIzLCAxNTc4LCAKLSAgICAxNTgyLCA1MjMsIDE1NzgsIDE2MDUsIDUyMywgMTU3OCwgMTYwOSwgNTIzLCAxNTc4LCAxNjEwLCA1MjMsIDE1NzksIDE1ODAsIAotICAgIDUyMywgMTU3OSwgMTYwNSwgNTIzLCAxNTc5LCAxNjA5LCA1MjMsIDE1NzksIDE2MTAsIDUyMywgMTU4MCwgMTU4MSwgNTIzLCAKLSAgICAxNTgwLCAxNjA1LCA1MjMsIDE1ODEsIDE1ODAsIDUyMywgMTU4MSwgMTYwNSwgNTIzLCAxNTgyLCAxNTgwLCA1MjMsIDE1ODIsIAotICAgIDE1ODEsIDUyMywgMTU4MiwgMTYwNSwgNTIzLCAxNTg3LCAxNTgwLCA1MjMsIDE1ODcsIDE1ODEsIDUyMywgMTU4NywgMTU4MiwgCi0gICAgNTIzLCAxNTg3LCAxNjA1LCA1MjMsIDE1ODksIDE1ODEsIDUyMywgMTU4OSwgMTYwNSwgNTIzLCAxNTkwLCAxNTgwLCA1MjMsIAotICAgIDE1OTAsIDE1ODEsIDUyMywgMTU5MCwgMTU4MiwgNTIzLCAxNTkwLCAxNjA1LCA1MjMsIDE1OTEsIDE1ODEsIDUyMywgMTU5MSwgCi0gICAgMTYwNSwgNTIzLCAxNTkyLCAxNjA1LCA1MjMsIDE1OTMsIDE1ODAsIDUyMywgMTU5MywgMTYwNSwgNTIzLCAxNTk0LCAxNTgwLCAKLSAgICA1MjMsIDE1OTQsIDE2MDUsIDUyMywgMTYwMSwgMTU4MCwgNTIzLCAxNjAxLCAxNTgxLCA1MjMsIDE2MDEsIDE1ODIsIDUyMywgCi0gICAgMTYwMSwgMTYwNSwgNTIzLCAxNjAxLCAxNjA5LCA1MjMsIDE2MDEsIDE2MTAsIDUyMywgMTYwMiwgMTU4MSwgNTIzLCAxNjAyLCAKLSAgICAxNjA1LCA1MjMsIDE2MDIsIDE2MDksIDUyMywgMTYwMiwgMTYxMCwgNTIzLCAxNjAzLCAxNTc1LCA1MjMsIDE2MDMsIDE1ODAsIAotICAgIDUyMywgMTYwMywgMTU4MSwgNTIzLCAxNjAzLCAxNTgyLCA1MjMsIDE2MDMsIDE2MDQsIDUyMywgMTYwMywgMTYwNSwgNTIzLCAKLSAgICAxNjAzLCAxNjA5LCA1MjMsIDE2MDMsIDE2MTAsIDUyMywgMTYwNCwgMTU4MCwgNTIzLCAxNjA0LCAxNTgxLCA1MjMsIDE2MDQsIAotICAgIDE1ODIsIDUyMywgMTYwNCwgMTYwNSwgNTIzLCAxNjA0LCAxNjA5LCA1MjMsIDE2MDQsIDE2MTAsIDUyMywgMTYwNSwgMTU4MCwgCi0gICAgNTIzLCAxNjA1LCAxNTgxLCA1MjMsIDE2MDUsIDE1ODIsIDUyMywgMTYwNSwgMTYwNSwgNTIzLCAxNjA1LCAxNjA5LCA1MjMsIAotICAgIDE2MDUsIDE2MTAsIDUyMywgMTYwNiwgMTU4MCwgNTIzLCAxNjA2LCAxNTgxLCA1MjMsIDE2MDYsIDE1ODIsIDUyMywgMTYwNiwgCi0gICAgMTYwNSwgNTIzLCAxNjA2LCAxNjA5LCA1MjMsIDE2MDYsIDE2MTAsIDUyMywgMTYwNywgMTU4MCwgNTIzLCAxNjA3LCAxNjA1LCAKLSAgICA1MjMsIDE2MDcsIDE2MDksIDUyMywgMTYwNywgMTYxMCwgNTIzLCAxNjEwLCAxNTgwLCA1MjMsIDE2MTAsIDE1ODEsIDUyMywgCi0gICAgMTYxMCwgMTU4MiwgNTIzLCAxNjEwLCAxNjA1LCA1MjMsIDE2MTAsIDE2MDksIDUyMywgMTYxMCwgMTYxMCwgNTIzLCAxNTg0LCAKLSAgICAxNjQ4LCA1MjMsIDE1ODUsIDE2NDgsIDUyMywgMTYwOSwgMTY0OCwgNzc5LCAzMiwgMTYxMiwgMTYxNywgNzc5LCAzMiwgCi0gICAgMTYxMywgMTYxNywgNzc5LCAzMiwgMTYxNCwgMTYxNywgNzc5LCAzMiwgMTYxNSwgMTYxNywgNzc5LCAzMiwgMTYxNiwgCi0gICAgMTYxNywgNzc5LCAzMiwgMTYxNywgMTY0OCwgNTI0LCAxNTc0LCAxNTg1LCA1MjQsIDE1NzQsIDE1ODYsIDUyNCwgMTU3NCwgCi0gICAgMTYwNSwgNTI0LCAxNTc0LCAxNjA2LCA1MjQsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYxMCwgNTI0LCAxNTc2LCAxNTg1LCAKLSAgICA1MjQsIDE1NzYsIDE1ODYsIDUyNCwgMTU3NiwgMTYwNSwgNTI0LCAxNTc2LCAxNjA2LCA1MjQsIDE1NzYsIDE2MDksIDUyNCwgCi0gICAgMTU3NiwgMTYxMCwgNTI0LCAxNTc4LCAxNTg1LCA1MjQsIDE1NzgsIDE1ODYsIDUyNCwgMTU3OCwgMTYwNSwgNTI0LCAxNTc4LCAKLSAgICAxNjA2LCA1MjQsIDE1NzgsIDE2MDksIDUyNCwgMTU3OCwgMTYxMCwgNTI0LCAxNTc5LCAxNTg1LCA1MjQsIDE1NzksIDE1ODYsIAotICAgIDUyNCwgMTU3OSwgMTYwNSwgNTI0LCAxNTc5LCAxNjA2LCA1MjQsIDE1NzksIDE2MDksIDUyNCwgMTU3OSwgMTYxMCwgNTI0LCAKLSAgICAxNjAxLCAxNjA5LCA1MjQsIDE2MDEsIDE2MTAsIDUyNCwgMTYwMiwgMTYwOSwgNTI0LCAxNjAyLCAxNjEwLCA1MjQsIDE2MDMsIAotICAgIDE1NzUsIDUyNCwgMTYwMywgMTYwNCwgNTI0LCAxNjAzLCAxNjA1LCA1MjQsIDE2MDMsIDE2MDksIDUyNCwgMTYwMywgMTYxMCwgCi0gICAgNTI0LCAxNjA0LCAxNjA1LCA1MjQsIDE2MDQsIDE2MDksIDUyNCwgMTYwNCwgMTYxMCwgNTI0LCAxNjA1LCAxNTc1LCA1MjQsIAotICAgIDE2MDUsIDE2MDUsIDUyNCwgMTYwNiwgMTU4NSwgNTI0LCAxNjA2LCAxNTg2LCA1MjQsIDE2MDYsIDE2MDUsIDUyNCwgMTYwNiwgCi0gICAgMTYwNiwgNTI0LCAxNjA2LCAxNjA5LCA1MjQsIDE2MDYsIDE2MTAsIDUyNCwgMTYwOSwgMTY0OCwgNTI0LCAxNjEwLCAxNTg1LCAKLSAgICA1MjQsIDE2MTAsIDE1ODYsIDUyNCwgMTYxMCwgMTYwNSwgNTI0LCAxNjEwLCAxNjA2LCA1MjQsIDE2MTAsIDE2MDksIDUyNCwgCi0gICAgMTYxMCwgMTYxMCwgNTI1LCAxNTc0LCAxNTgwLCA1MjUsIDE1NzQsIDE1ODEsIDUyNSwgMTU3NCwgMTU4MiwgNTI1LCAxNTc0LCAKLSAgICAxNjA1LCA1MjUsIDE1NzQsIDE2MDcsIDUyNSwgMTU3NiwgMTU4MCwgNTI1LCAxNTc2LCAxNTgxLCA1MjUsIDE1NzYsIDE1ODIsIAotICAgIDUyNSwgMTU3NiwgMTYwNSwgNTI1LCAxNTc2LCAxNjA3LCA1MjUsIDE1NzgsIDE1ODAsIDUyNSwgMTU3OCwgMTU4MSwgNTI1LCAKLSAgICAxNTc4LCAxNTgyLCA1MjUsIDE1NzgsIDE2MDUsIDUyNSwgMTU3OCwgMTYwNywgNTI1LCAxNTc5LCAxNjA1LCA1MjUsIDE1ODAsIAotICAgIDE1ODEsIDUyNSwgMTU4MCwgMTYwNSwgNTI1LCAxNTgxLCAxNTgwLCA1MjUsIDE1ODEsIDE2MDUsIDUyNSwgMTU4MiwgMTU4MCwgCi0gICAgNTI1LCAxNTgyLCAxNjA1LCA1MjUsIDE1ODcsIDE1ODAsIDUyNSwgMTU4NywgMTU4MSwgNTI1LCAxNTg3LCAxNTgyLCA1MjUsIAotICAgIDE1ODcsIDE2MDUsIDUyNSwgMTU4OSwgMTU4MSwgNTI1LCAxNTg5LCAxNTgyLCA1MjUsIDE1ODksIDE2MDUsIDUyNSwgMTU5MCwgCi0gICAgMTU4MCwgNTI1LCAxNTkwLCAxNTgxLCA1MjUsIDE1OTAsIDE1ODIsIDUyNSwgMTU5MCwgMTYwNSwgNTI1LCAxNTkxLCAxNTgxLCAKLSAgICA1MjUsIDE1OTIsIDE2MDUsIDUyNSwgMTU5MywgMTU4MCwgNTI1LCAxNTkzLCAxNjA1LCA1MjUsIDE1OTQsIDE1ODAsIDUyNSwgCi0gICAgMTU5NCwgMTYwNSwgNTI1LCAxNjAxLCAxNTgwLCA1MjUsIDE2MDEsIDE1ODEsIDUyNSwgMTYwMSwgMTU4MiwgNTI1LCAxNjAxLCAKLSAgICAxNjA1LCA1MjUsIDE2MDIsIDE1ODEsIDUyNSwgMTYwMiwgMTYwNSwgNTI1LCAxNjAzLCAxNTgwLCA1MjUsIDE2MDMsIDE1ODEsIAotICAgIDUyNSwgMTYwMywgMTU4MiwgNTI1LCAxNjAzLCAxNjA0LCA1MjUsIDE2MDMsIDE2MDUsIDUyNSwgMTYwNCwgMTU4MCwgNTI1LCAKLSAgICAxNjA0LCAxNTgxLCA1MjUsIDE2MDQsIDE1ODIsIDUyNSwgMTYwNCwgMTYwNSwgNTI1LCAxNjA0LCAxNjA3LCA1MjUsIDE2MDUsIAotICAgIDE1ODAsIDUyNSwgMTYwNSwgMTU4MSwgNTI1LCAxNjA1LCAxNTgyLCA1MjUsIDE2MDUsIDE2MDUsIDUyNSwgMTYwNiwgMTU4MCwgCi0gICAgNTI1LCAxNjA2LCAxNTgxLCA1MjUsIDE2MDYsIDE1ODIsIDUyNSwgMTYwNiwgMTYwNSwgNTI1LCAxNjA2LCAxNjA3LCA1MjUsIAotICAgIDE2MDcsIDE1ODAsIDUyNSwgMTYwNywgMTYwNSwgNTI1LCAxNjA3LCAxNjQ4LCA1MjUsIDE2MTAsIDE1ODAsIDUyNSwgMTYxMCwgCi0gICAgMTU4MSwgNTI1LCAxNjEwLCAxNTgyLCA1MjUsIDE2MTAsIDE2MDUsIDUyNSwgMTYxMCwgMTYwNywgNTI2LCAxNTc0LCAxNjA1LCAKLSAgICA1MjYsIDE1NzQsIDE2MDcsIDUyNiwgMTU3NiwgMTYwNSwgNTI2LCAxNTc2LCAxNjA3LCA1MjYsIDE1NzgsIDE2MDUsIDUyNiwgCi0gICAgMTU3OCwgMTYwNywgNTI2LCAxNTc5LCAxNjA1LCA1MjYsIDE1NzksIDE2MDcsIDUyNiwgMTU4NywgMTYwNSwgNTI2LCAxNTg3LCAKLSAgICAxNjA3LCA1MjYsIDE1ODgsIDE2MDUsIDUyNiwgMTU4OCwgMTYwNywgNTI2LCAxNjAzLCAxNjA0LCA1MjYsIDE2MDMsIDE2MDUsIAotICAgIDUyNiwgMTYwNCwgMTYwNSwgNTI2LCAxNjA2LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDcsIDUyNiwgMTYxMCwgMTYwNSwgNTI2LCAKLSAgICAxNjEwLCAxNjA3LCA3ODIsIDE2MDAsIDE2MTQsIDE2MTcsIDc4MiwgMTYwMCwgMTYxNSwgMTYxNywgNzgyLCAxNjAwLCAKLSAgICAxNjE2LCAxNjE3LCA1MjMsIDE1OTEsIDE2MDksIDUyMywgMTU5MSwgMTYxMCwgNTIzLCAxNTkzLCAxNjA5LCA1MjMsIDE1OTMsIAotICAgIDE2MTAsIDUyMywgMTU5NCwgMTYwOSwgNTIzLCAxNTk0LCAxNjEwLCA1MjMsIDE1ODcsIDE2MDksIDUyMywgMTU4NywgMTYxMCwgCi0gICAgNTIzLCAxNTg4LCAxNjA5LCA1MjMsIDE1ODgsIDE2MTAsIDUyMywgMTU4MSwgMTYwOSwgNTIzLCAxNTgxLCAxNjEwLCA1MjMsIAotICAgIDE1ODAsIDE2MDksIDUyMywgMTU4MCwgMTYxMCwgNTIzLCAxNTgyLCAxNjA5LCA1MjMsIDE1ODIsIDE2MTAsIDUyMywgMTU4OSwgCi0gICAgMTYwOSwgNTIzLCAxNTg5LCAxNjEwLCA1MjMsIDE1OTAsIDE2MDksIDUyMywgMTU5MCwgMTYxMCwgNTIzLCAxNTg4LCAxNTgwLCAKLSAgICA1MjMsIDE1ODgsIDE1ODEsIDUyMywgMTU4OCwgMTU4MiwgNTIzLCAxNTg4LCAxNjA1LCA1MjMsIDE1ODgsIDE1ODUsIDUyMywgCi0gICAgMTU4NywgMTU4NSwgNTIzLCAxNTg5LCAxNTg1LCA1MjMsIDE1OTAsIDE1ODUsIDUyNCwgMTU5MSwgMTYwOSwgNTI0LCAxNTkxLCAKLSAgICAxNjEwLCA1MjQsIDE1OTMsIDE2MDksIDUyNCwgMTU5MywgMTYxMCwgNTI0LCAxNTk0LCAxNjA5LCA1MjQsIDE1OTQsIDE2MTAsIAotICAgIDUyNCwgMTU4NywgMTYwOSwgNTI0LCAxNTg3LCAxNjEwLCA1MjQsIDE1ODgsIDE2MDksIDUyNCwgMTU4OCwgMTYxMCwgNTI0LCAKLSAgICAxNTgxLCAxNjA5LCA1MjQsIDE1ODEsIDE2MTAsIDUyNCwgMTU4MCwgMTYwOSwgNTI0LCAxNTgwLCAxNjEwLCA1MjQsIDE1ODIsIAotICAgIDE2MDksIDUyNCwgMTU4MiwgMTYxMCwgNTI0LCAxNTg5LCAxNjA5LCA1MjQsIDE1ODksIDE2MTAsIDUyNCwgMTU5MCwgMTYwOSwgCi0gICAgNTI0LCAxNTkwLCAxNjEwLCA1MjQsIDE1ODgsIDE1ODAsIDUyNCwgMTU4OCwgMTU4MSwgNTI0LCAxNTg4LCAxNTgyLCA1MjQsIAotICAgIDE1ODgsIDE2MDUsIDUyNCwgMTU4OCwgMTU4NSwgNTI0LCAxNTg3LCAxNTg1LCA1MjQsIDE1ODksIDE1ODUsIDUyNCwgMTU5MCwgCi0gICAgMTU4NSwgNTI1LCAxNTg4LCAxNTgwLCA1MjUsIDE1ODgsIDE1ODEsIDUyNSwgMTU4OCwgMTU4MiwgNTI1LCAxNTg4LCAxNjA1LCAKLSAgICA1MjUsIDE1ODcsIDE2MDcsIDUyNSwgMTU4OCwgMTYwNywgNTI1LCAxNTkxLCAxNjA1LCA1MjYsIDE1ODcsIDE1ODAsIDUyNiwgCi0gICAgMTU4NywgMTU4MSwgNTI2LCAxNTg3LCAxNTgyLCA1MjYsIDE1ODgsIDE1ODAsIDUyNiwgMTU4OCwgMTU4MSwgNTI2LCAxNTg4LCAKLSAgICAxNTgyLCA1MjYsIDE1OTEsIDE2MDUsIDUyNiwgMTU5MiwgMTYwNSwgNTI0LCAxNTc1LCAxNjExLCA1MjMsIDE1NzUsIDE2MTEsIAotICAgIDc4MSwgMTU3OCwgMTU4MCwgMTYwNSwgNzgwLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgCi0gICAgMTU3OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTc4LCAxNTgyLCAxNjA1LCA3ODEsIDE1NzgsIDE2MDUsIDE1ODAsIDc4MSwgCi0gICAgMTU3OCwgMTYwNSwgMTU4MSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MSwgCi0gICAgMTU4MCwgMTYwNSwgMTU4MSwgNzgwLCAxNTgxLCAxNjA1LCAxNjEwLCA3ODAsIDE1ODEsIDE2MDUsIDE2MDksIDc4MSwgCi0gICAgMTU4NywgMTU4MSwgMTU4MCwgNzgxLCAxNTg3LCAxNTgwLCAxNTgxLCA3ODAsIDE1ODcsIDE1ODAsIDE2MDksIDc4MCwgCi0gICAgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODAsIDc4MCwgCi0gICAgMTU4NywgMTYwNSwgMTYwNSwgNzgxLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODAsIDE1ODksIDE1ODEsIDE1ODEsIDc4MSwgCi0gICAgMTU4OSwgMTU4MSwgMTU4MSwgNzgwLCAxNTg5LCAxNjA1LCAxNjA1LCA3ODAsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MSwgCi0gICAgMTU4OCwgMTU4MSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgwLCAxNjEwLCA3ODAsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MSwgCi0gICAgMTU4OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTU5MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODEsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MCwgCi0gICAgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTU5MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MSwgCi0gICAgMTU5MywgMTYwNSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA5LCA3ODAsIDE1OTQsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTU5NCwgMTYwNSwgMTYxMCwgNzgwLCAxNTk0LCAxNjA1LCAxNjA5LCA3ODAsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MSwgCi0gICAgMTYwMSwgMTU4MiwgMTYwNSwgNzgwLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODAsIDE2MDIsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjEwLCA3ODAsIDE2MDQsIDE1ODEsIDE2MDksIDc4MSwgCi0gICAgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MSwgCi0gICAgMTYwNCwgMTU4MiwgMTYwNSwgNzgwLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgCi0gICAgMTYwNSwgMTU4MSwgMTU4MCwgNzgxLCAxNjA1LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDUsIDE1ODEsIDE2MTAsIDc4MSwgCi0gICAgMTYwNSwgMTU4MCwgMTU4MSwgNzgxLCAxNjA1LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODIsIDE1ODAsIDc4MSwgCi0gICAgMTYwNSwgMTU4MiwgMTYwNSwgNzgxLCAxNjA1LCAxNTgwLCAxNTgyLCA3ODEsIDE2MDcsIDE2MDUsIDE1ODAsIDc4MSwgCi0gICAgMTYwNywgMTYwNSwgMTYwNSwgNzgxLCAxNjA2LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDYsIDE1ODEsIDE2MDksIDc4MCwgCi0gICAgMTYwNiwgMTU4MCwgMTYwNSwgNzgxLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDksIDc4MCwgCi0gICAgMTYwNiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNjA1LCAxNjA5LCA3ODAsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MSwgCi0gICAgMTYxMCwgMTYwNSwgMTYwNSwgNzgwLCAxNTc2LCAxNTgyLCAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MTAsIDc4MCwgCi0gICAgMTU3OCwgMTU4MCwgMTYwOSwgNzgwLCAxNTc4LCAxNTgyLCAxNjEwLCA3ODAsIDE1NzgsIDE1ODIsIDE2MDksIDc4MCwgCi0gICAgMTU3OCwgMTYwNSwgMTYxMCwgNzgwLCAxNTc4LCAxNjA1LCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MTAsIDc4MCwgCi0gICAgMTU4MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjA5LCA3ODAsIDE1ODcsIDE1ODIsIDE2MDksIDc4MCwgCi0gICAgMTU4OSwgMTU4MSwgMTYxMCwgNzgwLCAxNTg4LCAxNTgxLCAxNjEwLCA3ODAsIDE1OTAsIDE1ODEsIDE2MTAsIDc4MCwgCi0gICAgMTYwNCwgMTU4MCwgMTYxMCwgNzgwLCAxNjA0LCAxNjA1LCAxNjEwLCA3ODAsIDE2MTAsIDE1ODEsIDE2MTAsIDc4MCwgCi0gICAgMTYxMCwgMTU4MCwgMTYxMCwgNzgwLCAxNjEwLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDUsIDE2MDUsIDE2MTAsIDc4MCwgCi0gICAgMTYwMiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNTgxLCAxNjEwLCA3ODEsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MSwgCi0gICAgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDMsIDE2MDUsIDE2MTAsIDc4MSwgCi0gICAgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNjA1LCAxNTgyLCAxNjEwLCA3ODEsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgCi0gICAgMTYwMywgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgCi0gICAgMTU4MCwgMTU4MSwgMTYxMCwgNzgwLCAxNTgxLCAxNTgwLCAxNjEwLCA3ODAsIDE2MDUsIDE1ODAsIDE2MTAsIDc4MCwgCi0gICAgMTYwMSwgMTYwNSwgMTYxMCwgNzgwLCAxNTc2LCAxNTgxLCAxNjEwLCA3ODEsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MSwgCi0gICAgMTU5MywgMTU4MCwgMTYwNSwgNzgxLCAxNTg5LCAxNjA1LCAxNjA1LCA3ODAsIDE1ODcsIDE1ODIsIDE2MTAsIDc4MCwgCi0gICAgMTYwNiwgMTU4MCwgMTYxMCwgNzc5LCAxNTg5LCAxNjA0LCAxNzQ2LCA3NzksIDE2MDIsIDE2MDQsIDE3NDYsIDEwMzUsIAotICAgIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDEwMzUsIDE1NzUsIDE2MDMsIDE1NzYsIDE1ODUsIDEwMzUsIDE2MDUsIDE1ODEsIAotICAgIDE2MDUsIDE1ODMsIDEwMzUsIDE1ODksIDE2MDQsIDE1OTMsIDE2MDUsIDEwMzUsIDE1ODUsIDE1ODcsIDE2MDgsIDE2MDQsIAotICAgIDEwMzUsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDEwMzUsIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDc3OSwgMTU4OSwgCi0gICAgMTYwNCwgMTYwOSwgNDYxOSwgMTU4OSwgMTYwNCwgMTYwOSwgMzIsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDMyLCAxNTkzLCAKLSAgICAxNjA0LCAxNjEwLCAxNjA3LCAzMiwgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgMjA1OSwgMTU4MCwgMTYwNCwgMzIsIDE1ODAsIAotICAgIDE2MDQsIDE1NzUsIDE2MDQsIDE2MDcsIDEwMzUsIDE1ODUsIDE3NDAsIDE1NzUsIDE2MDQsIDI2NSwgNDQsIDI2NSwgCi0gICAgMTIyODksIDI2NSwgMTIyOTAsIDI2NSwgNTgsIDI2NSwgNTksIDI2NSwgMzMsIDI2NSwgNjMsIDI2NSwgMTIzMTAsIDI2NSwgCi0gICAgMTIzMTEsIDI2NSwgODIzMCwgMjY1LCA4MjI5LCAyNjUsIDgyMTIsIDI2NSwgODIxMSwgMjY1LCA5NSwgMjY1LCA5NSwgMjY1LCAKLSAgICA0MCwgMjY1LCA0MSwgMjY1LCAxMjMsIDI2NSwgMTI1LCAyNjUsIDEyMzA4LCAyNjUsIDEyMzA5LCAyNjUsIDEyMzA0LCAyNjUsIAotICAgIDEyMzA1LCAyNjUsIDEyMjk4LCAyNjUsIDEyMjk5LCAyNjUsIDEyMjk2LCAyNjUsIDEyMjk3LCAyNjUsIDEyMzAwLCAyNjUsIAotICAgIDEyMzAxLCAyNjUsIDEyMzAyLCAyNjUsIDEyMzAzLCAyNjUsIDkxLCAyNjUsIDkzLCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgCi0gICAgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgOTUsIDI1OCwgOTUsIDI1OCwgOTUsIDI3MSwgNDQsIDI3MSwgMTIyODksIAotICAgIDI3MSwgNDYsIDI3MSwgNTksIDI3MSwgNTgsIDI3MSwgNjMsIDI3MSwgMzMsIDI3MSwgODIxMiwgMjcxLCA0MCwgMjcxLCA0MSwgCi0gICAgMjcxLCAxMjMsIDI3MSwgMTI1LCAyNzEsIDEyMzA4LCAyNzEsIDEyMzA5LCAyNzEsIDM1LCAyNzEsIDM4LCAyNzEsIDQyLCAKLSAgICAyNzEsIDQzLCAyNzEsIDQ1LCAyNzEsIDYwLCAyNzEsIDYyLCAyNzEsIDYxLCAyNzEsIDkyLCAyNzEsIDM2LCAyNzEsIDM3LCAKLSAgICAyNzEsIDY0LCA1MjMsIDMyLCAxNjExLCA1MjYsIDE2MDAsIDE2MTEsIDUyMywgMzIsIDE2MTIsIDUyMywgMzIsIDE2MTMsIAotICAgIDUyMywgMzIsIDE2MTQsIDUyNiwgMTYwMCwgMTYxNCwgNTIzLCAzMiwgMTYxNSwgNTI2LCAxNjAwLCAxNjE1LCA1MjMsIDMyLCAKLSAgICAxNjE2LCA1MjYsIDE2MDAsIDE2MTYsIDUyMywgMzIsIDE2MTcsIDUyNiwgMTYwMCwgMTYxNywgNTIzLCAzMiwgMTYxOCwgCi0gICAgNTI2LCAxNjAwLCAxNjE4LCAyNjcsIDE1NjksIDI2NywgMTU3MCwgMjY4LCAxNTcwLCAyNjcsIDE1NzEsIDI2OCwgMTU3MSwgCi0gICAgMjY3LCAxNTcyLCAyNjgsIDE1NzIsIDI2NywgMTU3MywgMjY4LCAxNTczLCAyNjcsIDE1NzQsIDI2OCwgMTU3NCwgMjY5LCAKLSAgICAxNTc0LCAyNzAsIDE1NzQsIDI2NywgMTU3NSwgMjY4LCAxNTc1LCAyNjcsIDE1NzYsIDI2OCwgMTU3NiwgMjY5LCAxNTc2LCAKLSAgICAyNzAsIDE1NzYsIDI2NywgMTU3NywgMjY4LCAxNTc3LCAyNjcsIDE1NzgsIDI2OCwgMTU3OCwgMjY5LCAxNTc4LCAyNzAsIAotICAgIDE1NzgsIDI2NywgMTU3OSwgMjY4LCAxNTc5LCAyNjksIDE1NzksIDI3MCwgMTU3OSwgMjY3LCAxNTgwLCAyNjgsIDE1ODAsIAotICAgIDI2OSwgMTU4MCwgMjcwLCAxNTgwLCAyNjcsIDE1ODEsIDI2OCwgMTU4MSwgMjY5LCAxNTgxLCAyNzAsIDE1ODEsIDI2NywgCi0gICAgMTU4MiwgMjY4LCAxNTgyLCAyNjksIDE1ODIsIDI3MCwgMTU4MiwgMjY3LCAxNTgzLCAyNjgsIDE1ODMsIDI2NywgMTU4NCwgCi0gICAgMjY4LCAxNTg0LCAyNjcsIDE1ODUsIDI2OCwgMTU4NSwgMjY3LCAxNTg2LCAyNjgsIDE1ODYsIDI2NywgMTU4NywgMjY4LCAKLSAgICAxNTg3LCAyNjksIDE1ODcsIDI3MCwgMTU4NywgMjY3LCAxNTg4LCAyNjgsIDE1ODgsIDI2OSwgMTU4OCwgMjcwLCAxNTg4LCAKLSAgICAyNjcsIDE1ODksIDI2OCwgMTU4OSwgMjY5LCAxNTg5LCAyNzAsIDE1ODksIDI2NywgMTU5MCwgMjY4LCAxNTkwLCAyNjksIAotICAgIDE1OTAsIDI3MCwgMTU5MCwgMjY3LCAxNTkxLCAyNjgsIDE1OTEsIDI2OSwgMTU5MSwgMjcwLCAxNTkxLCAyNjcsIDE1OTIsIAotICAgIDI2OCwgMTU5MiwgMjY5LCAxNTkyLCAyNzAsIDE1OTIsIDI2NywgMTU5MywgMjY4LCAxNTkzLCAyNjksIDE1OTMsIDI3MCwgCi0gICAgMTU5MywgMjY3LCAxNTk0LCAyNjgsIDE1OTQsIDI2OSwgMTU5NCwgMjcwLCAxNTk0LCAyNjcsIDE2MDEsIDI2OCwgMTYwMSwgCi0gICAgMjY5LCAxNjAxLCAyNzAsIDE2MDEsIDI2NywgMTYwMiwgMjY4LCAxNjAyLCAyNjksIDE2MDIsIDI3MCwgMTYwMiwgMjY3LCAKLSAgICAxNjAzLCAyNjgsIDE2MDMsIDI2OSwgMTYwMywgMjcwLCAxNjAzLCAyNjcsIDE2MDQsIDI2OCwgMTYwNCwgMjY5LCAxNjA0LCAKLSAgICAyNzAsIDE2MDQsIDI2NywgMTYwNSwgMjY4LCAxNjA1LCAyNjksIDE2MDUsIDI3MCwgMTYwNSwgMjY3LCAxNjA2LCAyNjgsIAotICAgIDE2MDYsIDI2OSwgMTYwNiwgMjcwLCAxNjA2LCAyNjcsIDE2MDcsIDI2OCwgMTYwNywgMjY5LCAxNjA3LCAyNzAsIDE2MDcsIAotICAgIDI2NywgMTYwOCwgMjY4LCAxNjA4LCAyNjcsIDE2MDksIDI2OCwgMTYwOSwgMjY3LCAxNjEwLCAyNjgsIDE2MTAsIDI2OSwgCi0gICAgMTYxMCwgMjcwLCAxNjEwLCA1MjMsIDE2MDQsIDE1NzAsIDUyNCwgMTYwNCwgMTU3MCwgNTIzLCAxNjA0LCAxNTcxLCA1MjQsIAotICAgIDE2MDQsIDE1NzEsIDUyMywgMTYwNCwgMTU3MywgNTI0LCAxNjA0LCAxNTczLCA1MjMsIDE2MDQsIDE1NzUsIDUyNCwgMTYwNCwgCi0gICAgMTU3NSwgMjY0LCAzMywgMjY0LCAzNCwgMjY0LCAzNSwgMjY0LCAzNiwgMjY0LCAzNywgMjY0LCAzOCwgMjY0LCAzOSwgMjY0LCAKLSAgICA0MCwgMjY0LCA0MSwgMjY0LCA0MiwgMjY0LCA0MywgMjY0LCA0NCwgMjY0LCA0NSwgMjY0LCA0NiwgMjY0LCA0NywgMjY0LCAKLSAgICA0OCwgMjY0LCA0OSwgMjY0LCA1MCwgMjY0LCA1MSwgMjY0LCA1MiwgMjY0LCA1MywgMjY0LCA1NCwgMjY0LCA1NSwgMjY0LCAKLSAgICA1NiwgMjY0LCA1NywgMjY0LCA1OCwgMjY0LCA1OSwgMjY0LCA2MCwgMjY0LCA2MSwgMjY0LCA2MiwgMjY0LCA2MywgMjY0LCAKLSAgICA2NCwgMjY0LCA2NSwgMjY0LCA2NiwgMjY0LCA2NywgMjY0LCA2OCwgMjY0LCA2OSwgMjY0LCA3MCwgMjY0LCA3MSwgMjY0LCAKLSAgICA3MiwgMjY0LCA3MywgMjY0LCA3NCwgMjY0LCA3NSwgMjY0LCA3NiwgMjY0LCA3NywgMjY0LCA3OCwgMjY0LCA3OSwgMjY0LCAKLSAgICA4MCwgMjY0LCA4MSwgMjY0LCA4MiwgMjY0LCA4MywgMjY0LCA4NCwgMjY0LCA4NSwgMjY0LCA4NiwgMjY0LCA4NywgMjY0LCAKLSAgICA4OCwgMjY0LCA4OSwgMjY0LCA5MCwgMjY0LCA5MSwgMjY0LCA5MiwgMjY0LCA5MywgMjY0LCA5NCwgMjY0LCA5NSwgMjY0LCAKLSAgICA5NiwgMjY0LCA5NywgMjY0LCA5OCwgMjY0LCA5OSwgMjY0LCAxMDAsIDI2NCwgMTAxLCAyNjQsIDEwMiwgMjY0LCAxMDMsIAotICAgIDI2NCwgMTA0LCAyNjQsIDEwNSwgMjY0LCAxMDYsIDI2NCwgMTA3LCAyNjQsIDEwOCwgMjY0LCAxMDksIDI2NCwgMTEwLCAKLSAgICAyNjQsIDExMSwgMjY0LCAxMTIsIDI2NCwgMTEzLCAyNjQsIDExNCwgMjY0LCAxMTUsIDI2NCwgMTE2LCAyNjQsIDExNywgCi0gICAgMjY0LCAxMTgsIDI2NCwgMTE5LCAyNjQsIDEyMCwgMjY0LCAxMjEsIDI2NCwgMTIyLCAyNjQsIDEyMywgMjY0LCAxMjQsIAotICAgIDI2NCwgMTI1LCAyNjQsIDEyNiwgMjY0LCAxMDYyOSwgMjY0LCAxMDYzMCwgMjcyLCAxMjI5MCwgMjcyLCAxMjMwMCwgMjcyLCAKLSAgICAxMjMwMSwgMjcyLCAxMjI4OSwgMjcyLCAxMjUzOSwgMjcyLCAxMjUzMCwgMjcyLCAxMjQ0OSwgMjcyLCAxMjQ1MSwgMjcyLCAKLSAgICAxMjQ1MywgMjcyLCAxMjQ1NSwgMjcyLCAxMjQ1NywgMjcyLCAxMjUxNSwgMjcyLCAxMjUxNywgMjcyLCAxMjUxOSwgMjcyLCAKLSAgICAxMjQ4MywgMjcyLCAxMjU0MCwgMjcyLCAxMjQ1MCwgMjcyLCAxMjQ1MiwgMjcyLCAxMjQ1NCwgMjcyLCAxMjQ1NiwgMjcyLCAKLSAgICAxMjQ1OCwgMjcyLCAxMjQ1OSwgMjcyLCAxMjQ2MSwgMjcyLCAxMjQ2MywgMjcyLCAxMjQ2NSwgMjcyLCAxMjQ2NywgMjcyLCAKLSAgICAxMjQ2OSwgMjcyLCAxMjQ3MSwgMjcyLCAxMjQ3MywgMjcyLCAxMjQ3NSwgMjcyLCAxMjQ3NywgMjcyLCAxMjQ3OSwgMjcyLCAKLSAgICAxMjQ4MSwgMjcyLCAxMjQ4NCwgMjcyLCAxMjQ4NiwgMjcyLCAxMjQ4OCwgMjcyLCAxMjQ5MCwgMjcyLCAxMjQ5MSwgMjcyLCAKLSAgICAxMjQ5MiwgMjcyLCAxMjQ5MywgMjcyLCAxMjQ5NCwgMjcyLCAxMjQ5NSwgMjcyLCAxMjQ5OCwgMjcyLCAxMjUwMSwgMjcyLCAKLSAgICAxMjUwNCwgMjcyLCAxMjUwNywgMjcyLCAxMjUxMCwgMjcyLCAxMjUxMSwgMjcyLCAxMjUxMiwgMjcyLCAxMjUxMywgMjcyLCAKLSAgICAxMjUxNCwgMjcyLCAxMjUxNiwgMjcyLCAxMjUxOCwgMjcyLCAxMjUyMCwgMjcyLCAxMjUyMSwgMjcyLCAxMjUyMiwgMjcyLCAKLSAgICAxMjUyMywgMjcyLCAxMjUyNCwgMjcyLCAxMjUyNSwgMjcyLCAxMjUyNywgMjcyLCAxMjUzMSwgMjcyLCAxMjQ0MSwgMjcyLCAKLSAgICAxMjQ0MiwgMjcyLCAxMjY0NCwgMjcyLCAxMjU5MywgMjcyLCAxMjU5NCwgMjcyLCAxMjU5NSwgMjcyLCAxMjU5NiwgMjcyLCAKLSAgICAxMjU5NywgMjcyLCAxMjU5OCwgMjcyLCAxMjU5OSwgMjcyLCAxMjYwMCwgMjcyLCAxMjYwMSwgMjcyLCAxMjYwMiwgMjcyLCAKLSAgICAxMjYwMywgMjcyLCAxMjYwNCwgMjcyLCAxMjYwNSwgMjcyLCAxMjYwNiwgMjcyLCAxMjYwNywgMjcyLCAxMjYwOCwgMjcyLCAKLSAgICAxMjYwOSwgMjcyLCAxMjYxMCwgMjcyLCAxMjYxMSwgMjcyLCAxMjYxMiwgMjcyLCAxMjYxMywgMjcyLCAxMjYxNCwgMjcyLCAKLSAgICAxMjYxNSwgMjcyLCAxMjYxNiwgMjcyLCAxMjYxNywgMjcyLCAxMjYxOCwgMjcyLCAxMjYxOSwgMjcyLCAxMjYyMCwgMjcyLCAKLSAgICAxMjYyMSwgMjcyLCAxMjYyMiwgMjcyLCAxMjYyMywgMjcyLCAxMjYyNCwgMjcyLCAxMjYyNSwgMjcyLCAxMjYyNiwgMjcyLCAKLSAgICAxMjYyNywgMjcyLCAxMjYyOCwgMjcyLCAxMjYyOSwgMjcyLCAxMjYzMCwgMjcyLCAxMjYzMSwgMjcyLCAxMjYzMiwgMjcyLCAKLSAgICAxMjYzMywgMjcyLCAxMjYzNCwgMjcyLCAxMjYzNSwgMjcyLCAxMjYzNiwgMjcyLCAxMjYzNywgMjcyLCAxMjYzOCwgMjcyLCAKLSAgICAxMjYzOSwgMjcyLCAxMjY0MCwgMjcyLCAxMjY0MSwgMjcyLCAxMjY0MiwgMjcyLCAxMjY0MywgMjY0LCAxNjIsIDI2NCwgCi0gICAgMTYzLCAyNjQsIDE3MiwgMjY0LCAxNzUsIDI2NCwgMTY2LCAyNjQsIDE2NSwgMjY0LCA4MzYxLCAyNzIsIDk0NzQsIDI3MiwgCi0gICAgODU5MiwgMjcyLCA4NTkzLCAyNzIsIDg1OTQsIDI3MiwgODU5NSwgMjcyLCA5NjMyLCAyNzIsIDk2NzUsIDUxMiwgNjk3ODUsIAotICAgIDY5ODE4LCA1MTIsIDY5Nzg3LCA2OTgxOCwgNTEyLCA2OTc5NywgNjk4MTgsIDUxMiwgMTE5MTI3LCAxMTkxNDEsIDUxMiwgCi0gICAgMTE5MTI4LCAxMTkxNDEsIDUxMiwgMTE5MTM1LCAxMTkxNTAsIDUxMiwgMTE5MTM1LCAxMTkxNTEsIDUxMiwgMTE5MTM1LCAKLSAgICAxMTkxNTIsIDUxMiwgMTE5MTM1LCAxMTkxNTMsIDUxMiwgMTE5MTM1LCAxMTkxNTQsIDUxMiwgMTE5MjI1LCAxMTkxNDEsIAotICAgIDUxMiwgMTE5MjI2LCAxMTkxNDEsIDUxMiwgMTE5MjI3LCAxMTkxNTAsIDUxMiwgMTE5MjI4LCAxMTkxNTAsIDUxMiwgCi0gICAgMTE5MjI3LCAxMTkxNTEsIDUxMiwgMTE5MjI4LCAxMTkxNTEsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIAotICAgIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIAotICAgIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIAotICAgIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIAotICAgIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgCi0gICAgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIAotICAgIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAKLSAgICAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgCi0gICAgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgCi0gICAgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgCi0gICAgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgCi0gICAgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIAorICAgIDI2MDg1LCA3NzgsIDEwMywgOTcsIDEwOCwgMjU5LCA0Mjg2MywgMjU5LCAyOTQsIDI1OSwgMzM5LCAyNTYsIDM1OTEyLCAKKyAgICAyNTYsIDI2MzU2LCAyNTYsIDM2NTU0LCAyNTYsIDM2MDQwLCAyNTYsIDI4MzY5LCAyNTYsIDIwMDE4LCAyNTYsIDIxNDc3LCAKKyAgICAyNTYsIDQwODYwLCAyNTYsIDQwODYwLCAyNTYsIDIyODY1LCAyNTYsIDM3MzI5LCAyNTYsIDIxODk1LCAyNTYsIDIyODU2LCAKKyAgICAyNTYsIDI1MDc4LCAyNTYsIDMwMzEzLCAyNTYsIDMyNjQ1LCAyNTYsIDM0MzY3LCAyNTYsIDM0NzQ2LCAyNTYsIDM1MDY0LCAKKyAgICAyNTYsIDM3MDA3LCAyNTYsIDI3MTM4LCAyNTYsIDI3OTMxLCAyNTYsIDI4ODg5LCAyNTYsIDI5NjYyLCAyNTYsIDMzODUzLCAKKyAgICAyNTYsIDM3MjI2LCAyNTYsIDM5NDA5LCAyNTYsIDIwMDk4LCAyNTYsIDIxMzY1LCAyNTYsIDI3Mzk2LCAyNTYsIDI5MjExLCAKKyAgICAyNTYsIDM0MzQ5LCAyNTYsIDQwNDc4LCAyNTYsIDIzODg4LCAyNTYsIDI4NjUxLCAyNTYsIDM0MjUzLCAyNTYsIDM1MTcyLCAKKyAgICAyNTYsIDI1Mjg5LCAyNTYsIDMzMjQwLCAyNTYsIDM0ODQ3LCAyNTYsIDI0MjY2LCAyNTYsIDI2MzkxLCAyNTYsIDI4MDEwLCAKKyAgICAyNTYsIDI5NDM2LCAyNTYsIDM3MDcwLCAyNTYsIDIwMzU4LCAyNTYsIDIwOTE5LCAyNTYsIDIxMjE0LCAyNTYsIDI1Nzk2LCAKKyAgICAyNTYsIDI3MzQ3LCAyNTYsIDI5MjAwLCAyNTYsIDMwNDM5LCAyNTYsIDMyNzY5LCAyNTYsIDM0MzEwLCAyNTYsIDM0Mzk2LCAKKyAgICAyNTYsIDM2MzM1LCAyNTYsIDM4NzA2LCAyNTYsIDM5NzkxLCAyNTYsIDQwNDQyLCAyNTYsIDMwODYwLCAyNTYsIDMxMTAzLCAKKyAgICAyNTYsIDMyMTYwLCAyNTYsIDMzNzM3LCAyNTYsIDM3NjM2LCAyNTYsIDQwNTc1LCAyNTYsIDM1NTQyLCAyNTYsIDIyNzUxLCAKKyAgICAyNTYsIDI0MzI0LCAyNTYsIDMxODQwLCAyNTYsIDMyODk0LCAyNTYsIDI5MjgyLCAyNTYsIDMwOTIyLCAyNTYsIDM2MDM0LCAKKyAgICAyNTYsIDM4NjQ3LCAyNTYsIDIyNzQ0LCAyNTYsIDIzNjUwLCAyNTYsIDI3MTU1LCAyNTYsIDI4MTIyLCAyNTYsIDI4NDMxLCAKKyAgICAyNTYsIDMyMDQ3LCAyNTYsIDMyMzExLCAyNTYsIDM4NDc1LCAyNTYsIDIxMjAyLCAyNTYsIDMyOTA3LCAyNTYsIDIwOTU2LCAKKyAgICAyNTYsIDIwOTQwLCAyNTYsIDMxMjYwLCAyNTYsIDMyMTkwLCAyNTYsIDMzNzc3LCAyNTYsIDM4NTE3LCAyNTYsIDM1NzEyLCAKKyAgICAyNTYsIDI1Mjk1LCAyNTYsIDI3MTM4LCAyNTYsIDM1NTgyLCAyNTYsIDIwMDI1LCAyNTYsIDIzNTI3LCAyNTYsIDI0NTk0LCAKKyAgICAyNTYsIDI5NTc1LCAyNTYsIDMwMDY0LCAyNTYsIDIxMjcxLCAyNTYsIDMwOTcxLCAyNTYsIDIwNDE1LCAyNTYsIDI0NDg5LCAKKyAgICAyNTYsIDE5OTgxLCAyNTYsIDI3ODUyLCAyNTYsIDI1OTc2LCAyNTYsIDMyMDM0LCAyNTYsIDIxNDQzLCAyNTYsIDIyNjIyLCAKKyAgICAyNTYsIDMwNDY1LCAyNTYsIDMzODY1LCAyNTYsIDM1NDk4LCAyNTYsIDI3NTc4LCAyNTYsIDM2Nzg0LCAyNTYsIDI3Nzg0LCAKKyAgICAyNTYsIDI1MzQyLCAyNTYsIDMzNTA5LCAyNTYsIDI1NTA0LCAyNTYsIDMwMDUzLCAyNTYsIDIwMTQyLCAyNTYsIDIwODQxLCAKKyAgICAyNTYsIDIwOTM3LCAyNTYsIDI2NzUzLCAyNTYsIDMxOTc1LCAyNTYsIDMzMzkxLCAyNTYsIDM1NTM4LCAyNTYsIDM3MzI3LCAKKyAgICAyNTYsIDIxMjM3LCAyNTYsIDIxNTcwLCAyNTYsIDIyODk5LCAyNTYsIDI0MzAwLCAyNTYsIDI2MDUzLCAyNTYsIDI4NjcwLCAKKyAgICAyNTYsIDMxMDE4LCAyNTYsIDM4MzE3LCAyNTYsIDM5NTMwLCAyNTYsIDQwNTk5LCAyNTYsIDQwNjU0LCAyNTYsIDIxMTQ3LCAKKyAgICAyNTYsIDI2MzEwLCAyNTYsIDI3NTExLCAyNTYsIDM2NzA2LCAyNTYsIDI0MTgwLCAyNTYsIDI0OTc2LCAyNTYsIDI1MDg4LCAKKyAgICAyNTYsIDI1NzU0LCAyNTYsIDI4NDUxLCAyNTYsIDI5MDAxLCAyNTYsIDI5ODMzLCAyNTYsIDMxMTc4LCAyNTYsIDMyMjQ0LCAKKyAgICAyNTYsIDMyODc5LCAyNTYsIDM2NjQ2LCAyNTYsIDM0MDMwLCAyNTYsIDM2ODk5LCAyNTYsIDM3NzA2LCAyNTYsIDIxMDE1LCAKKyAgICAyNTYsIDIxMTU1LCAyNTYsIDIxNjkzLCAyNTYsIDI4ODcyLCAyNTYsIDM1MDEwLCAyNTYsIDM1NDk4LCAyNTYsIDI0MjY1LCAKKyAgICAyNTYsIDI0NTY1LCAyNTYsIDI1NDY3LCAyNTYsIDI3NTY2LCAyNTYsIDMxODA2LCAyNTYsIDI5NTU3LCAyNTYsIDIwMTk2LCAKKyAgICAyNTYsIDIyMjY1LCAyNTYsIDIzNTI3LCAyNTYsIDIzOTk0LCAyNTYsIDI0NjA0LCAyNTYsIDI5NjE4LCAyNTYsIDI5ODAxLCAKKyAgICAyNTYsIDMyNjY2LCAyNTYsIDMyODM4LCAyNTYsIDM3NDI4LCAyNTYsIDM4NjQ2LCAyNTYsIDM4NzI4LCAyNTYsIDM4OTM2LCAKKyAgICAyNTYsIDIwMzYzLCAyNTYsIDMxMTUwLCAyNTYsIDM3MzAwLCAyNTYsIDM4NTg0LCAyNTYsIDI0ODAxLCAyNTYsIDIwMTAyLCAKKyAgICAyNTYsIDIwNjk4LCAyNTYsIDIzNTM0LCAyNTYsIDIzNjE1LCAyNTYsIDI2MDA5LCAyNTYsIDI3MTM4LCAyNTYsIDI5MTM0LCAKKyAgICAyNTYsIDMwMjc0LCAyNTYsIDM0MDQ0LCAyNTYsIDM2OTg4LCAyNTYsIDQwODQ1LCAyNTYsIDI2MjQ4LCAyNTYsIDM4NDQ2LCAKKyAgICAyNTYsIDIxMTI5LCAyNTYsIDI2NDkxLCAyNTYsIDI2NjExLCAyNTYsIDI3OTY5LCAyNTYsIDI4MzE2LCAyNTYsIDI5NzA1LCAKKyAgICAyNTYsIDMwMDQxLCAyNTYsIDMwODI3LCAyNTYsIDMyMDE2LCAyNTYsIDM5MDA2LCAyNTYsIDIwODQ1LCAyNTYsIDI1MTM0LCAKKyAgICAyNTYsIDM4NTIwLCAyNTYsIDIwNTIzLCAyNTYsIDIzODMzLCAyNTYsIDI4MTM4LCAyNTYsIDM2NjUwLCAyNTYsIDI0NDU5LCAKKyAgICAyNTYsIDI0OTAwLCAyNTYsIDI2NjQ3LCAyNTYsIDI5NTc1LCAyNTYsIDM4NTM0LCAyNTYsIDIxMDMzLCAyNTYsIDIxNTE5LCAKKyAgICAyNTYsIDIzNjUzLCAyNTYsIDI2MTMxLCAyNTYsIDI2NDQ2LCAyNTYsIDI2NzkyLCAyNTYsIDI3ODc3LCAyNTYsIDI5NzAyLCAKKyAgICAyNTYsIDMwMTc4LCAyNTYsIDMyNjMzLCAyNTYsIDM1MDIzLCAyNTYsIDM1MDQxLCAyNTYsIDM3MzI0LCAyNTYsIDM4NjI2LCAKKyAgICAyNTYsIDIxMzExLCAyNTYsIDI4MzQ2LCAyNTYsIDIxNTMzLCAyNTYsIDI5MTM2LCAyNTYsIDI5ODQ4LCAyNTYsIDM0Mjk4LCAKKyAgICAyNTYsIDM4NTYzLCAyNTYsIDQwMDIzLCAyNTYsIDQwNjA3LCAyNTYsIDI2NTE5LCAyNTYsIDI4MTA3LCAyNTYsIDMzMjU2LCAKKyAgICAyNTYsIDMxNDM1LCAyNTYsIDMxNTIwLCAyNTYsIDMxODkwLCAyNTYsIDI5Mzc2LCAyNTYsIDI4ODI1LCAyNTYsIDM1NjcyLCAKKyAgICAyNTYsIDIwMTYwLCAyNTYsIDMzNTkwLCAyNTYsIDIxMDUwLCAyNTYsIDIwOTk5LCAyNTYsIDI0MjMwLCAyNTYsIDI1Mjk5LCAKKyAgICAyNTYsIDMxOTU4LCAyNTYsIDIzNDI5LCAyNTYsIDI3OTM0LCAyNTYsIDI2MjkyLCAyNTYsIDM2NjY3LCAyNTYsIDM0ODkyLCAKKyAgICAyNTYsIDM4NDc3LCAyNTYsIDM1MjExLCAyNTYsIDI0Mjc1LCAyNTYsIDIwODAwLCAyNTYsIDIxOTUyLCAyNTYsIDIyNjE4LCAKKyAgICAyNTYsIDI2MjI4LCAyNTYsIDIwOTU4LCAyNTYsIDI5NDgyLCAyNTYsIDMwNDEwLCAyNTYsIDMxMDM2LCAyNTYsIDMxMDcwLCAKKyAgICAyNTYsIDMxMDc3LCAyNTYsIDMxMTE5LCAyNTYsIDM4NzQyLCAyNTYsIDMxOTM0LCAyNTYsIDMyNzAxLCAyNTYsIDM0MzIyLCAKKyAgICAyNTYsIDM1NTc2LCAyNTYsIDM2OTIwLCAyNTYsIDM3MTE3LCAyNTYsIDM5MTUxLCAyNTYsIDM5MTY0LCAyNTYsIDM5MjA4LCAKKyAgICAyNTYsIDQwMzcyLCAyNTYsIDM3MDg2LCAyNTYsIDM4NTgzLCAyNTYsIDIwMzk4LCAyNTYsIDIwNzExLCAyNTYsIDIwODEzLCAKKyAgICAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMzI5LCAyNTYsIDIxOTE3LCAyNTYsIDIyMDIyLCAyNTYsIDIyMTIwLCAKKyAgICAyNTYsIDIyNTkyLCAyNTYsIDIyNjk2LCAyNTYsIDIzNjUyLCAyNTYsIDIzNjYyLCAyNTYsIDI0NzI0LCAyNTYsIDI0OTM2LCAKKyAgICAyNTYsIDI0OTc0LCAyNTYsIDI1MDc0LCAyNTYsIDI1OTM1LCAyNTYsIDI2MDgyLCAyNTYsIDI2MjU3LCAyNTYsIDI2NzU3LCAKKyAgICAyNTYsIDI4MDIzLCAyNTYsIDI4MTg2LCAyNTYsIDI4NDUwLCAyNTYsIDI5MDM4LCAyNTYsIDI5MjI3LCAyNTYsIDI5NzMwLCAKKyAgICAyNTYsIDMwODY1LCAyNTYsIDMxMDM4LCAyNTYsIDMxMDQ5LCAyNTYsIDMxMDQ4LCAyNTYsIDMxMDU2LCAyNTYsIDMxMDYyLCAKKyAgICAyNTYsIDMxMDY5LCAyNTYsIDMxMTE3LCAyNTYsIDMxMTE4LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzYxLCAyNTYsIDMxNjgwLCAKKyAgICAyNTYsIDMyMjQ0LCAyNTYsIDMyMjY1LCAyNTYsIDMyMzIxLCAyNTYsIDMyNjI2LCAyNTYsIDMyNzczLCAyNTYsIDMzMjYxLCAKKyAgICAyNTYsIDMzNDAxLCAyNTYsIDMzNDAxLCAyNTYsIDMzODc5LCAyNTYsIDM1MDg4LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTg1LCAKKyAgICAyNTYsIDM1NjQxLCAyNTYsIDM2MDUxLCAyNTYsIDM2MTA0LCAyNTYsIDM2NzkwLCAyNTYsIDM2OTIwLCAyNTYsIDM4NjI3LCAKKyAgICAyNTYsIDM4OTExLCAyNTYsIDM4OTcxLCAyNTYsIDI0NjkzLCAyNTYsIDE0ODIwNiwgMjU2LCAzMzMwNCwgMjU2LCAyMDAwNiwgCisgICAgMjU2LCAyMDkxNywgMjU2LCAyMDg0MCwgMjU2LCAyMDM1MiwgMjU2LCAyMDgwNSwgMjU2LCAyMDg2NCwgMjU2LCAyMTE5MSwgCisgICAgMjU2LCAyMTI0MiwgMjU2LCAyMTkxNywgMjU2LCAyMTg0NSwgMjU2LCAyMTkxMywgMjU2LCAyMTk4NiwgMjU2LCAyMjYxOCwgCisgICAgMjU2LCAyMjcwNywgMjU2LCAyMjg1MiwgMjU2LCAyMjg2OCwgMjU2LCAyMzEzOCwgMjU2LCAyMzMzNiwgMjU2LCAyNDI3NCwgCisgICAgMjU2LCAyNDI4MSwgMjU2LCAyNDQyNSwgMjU2LCAyNDQ5MywgMjU2LCAyNDc5MiwgMjU2LCAyNDkxMCwgMjU2LCAyNDg0MCwgCisgICAgMjU2LCAyNDk3NCwgMjU2LCAyNDkyOCwgMjU2LCAyNTA3NCwgMjU2LCAyNTE0MCwgMjU2LCAyNTU0MCwgMjU2LCAyNTYyOCwgCisgICAgMjU2LCAyNTY4MiwgMjU2LCAyNTk0MiwgMjU2LCAyNjIyOCwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQ1NCwgCisgICAgMjU2LCAyNzUxMywgMjU2LCAyNzU3OCwgMjU2LCAyNzk2OSwgMjU2LCAyODM3OSwgMjU2LCAyODM2MywgMjU2LCAyODQ1MCwgCisgICAgMjU2LCAyODcwMiwgMjU2LCAyOTAzOCwgMjU2LCAzMDYzMSwgMjU2LCAyOTIzNywgMjU2LCAyOTM1OSwgMjU2LCAyOTQ4MiwgCisgICAgMjU2LCAyOTgwOSwgMjU2LCAyOTk1OCwgMjU2LCAzMDAxMSwgMjU2LCAzMDIzNywgMjU2LCAzMDIzOSwgMjU2LCAzMDQxMCwgCisgICAgMjU2LCAzMDQyNywgMjU2LCAzMDQ1MiwgMjU2LCAzMDUzOCwgMjU2LCAzMDUyOCwgMjU2LCAzMDkyNCwgMjU2LCAzMTQwOSwgCisgICAgMjU2LCAzMTY4MCwgMjU2LCAzMTg2NywgMjU2LCAzMjA5MSwgMjU2LCAzMjI0NCwgMjU2LCAzMjU3NCwgMjU2LCAzMjc3MywgCisgICAgMjU2LCAzMzYxOCwgMjU2LCAzMzc3NSwgMjU2LCAzNDY4MSwgMjU2LCAzNTEzNywgMjU2LCAzNTIwNiwgMjU2LCAzNTIyMiwgCisgICAgMjU2LCAzNTUxOSwgMjU2LCAzNTU3NiwgMjU2LCAzNTUzMSwgMjU2LCAzNTU4NSwgMjU2LCAzNTU4MiwgMjU2LCAzNTU2NSwgCisgICAgMjU2LCAzNTY0MSwgMjU2LCAzNTcyMiwgMjU2LCAzNjEwNCwgMjU2LCAzNjY2NCwgMjU2LCAzNjk3OCwgMjU2LCAzNzI3MywgCisgICAgMjU2LCAzNzQ5NCwgMjU2LCAzODUyNCwgMjU2LCAzODYyNywgMjU2LCAzODc0MiwgMjU2LCAzODg3NSwgMjU2LCAzODkxMSwgCisgICAgMjU2LCAzODkyMywgMjU2LCAzODk3MSwgMjU2LCAzOTY5OCwgMjU2LCA0MDg2MCwgMjU2LCAxNDEzODYsIDI1NiwgMTQxMzgwLCAKKyAgICAyNTYsIDE0NDM0MSwgMjU2LCAxNTI2MSwgMjU2LCAxNjQwOCwgMjU2LCAxNjQ0MSwgMjU2LCAxNTIxMzcsIDI1NiwgCisgICAgMTU0ODMyLCAyNTYsIDE2MzUzOSwgMjU2LCA0MDc3MSwgMjU2LCA0MDg0NiwgNTE0LCAxMDIsIDEwMiwgNTE0LCAxMDIsIAorICAgIDEwNSwgNTE0LCAxMDIsIDEwOCwgNzcwLCAxMDIsIDEwMiwgMTA1LCA3NzAsIDEwMiwgMTAyLCAxMDgsIDUxNCwgMzgzLCAKKyAgICAxMTYsIDUxNCwgMTE1LCAxMTYsIDUxNCwgMTM5NiwgMTM5OCwgNTE0LCAxMzk2LCAxMzgxLCA1MTQsIDEzOTYsIDEzODcsIAorICAgIDUxNCwgMTQwNiwgMTM5OCwgNTE0LCAxMzk2LCAxMzg5LCA1MTIsIDE0OTcsIDE0NjAsIDUxMiwgMTUyMiwgMTQ2MywgMjYyLCAKKyAgICAxNTA2LCAyNjIsIDE0ODgsIDI2MiwgMTQ5MSwgMjYyLCAxNDkyLCAyNjIsIDE0OTksIDI2MiwgMTUwMCwgMjYyLCAxNTAxLCAKKyAgICAyNjIsIDE1MTIsIDI2MiwgMTUxNCwgMjYyLCA0MywgNTEyLCAxNTEzLCAxNDczLCA1MTIsIDE1MTMsIDE0NzQsIDUxMiwgCisgICAgNjQzMjksIDE0NzMsIDUxMiwgNjQzMjksIDE0NzQsIDUxMiwgMTQ4OCwgMTQ2MywgNTEyLCAxNDg4LCAxNDY0LCA1MTIsIAorICAgIDE0ODgsIDE0NjgsIDUxMiwgMTQ4OSwgMTQ2OCwgNTEyLCAxNDkwLCAxNDY4LCA1MTIsIDE0OTEsIDE0NjgsIDUxMiwgMTQ5MiwgCisgICAgMTQ2OCwgNTEyLCAxNDkzLCAxNDY4LCA1MTIsIDE0OTQsIDE0NjgsIDUxMiwgMTQ5NiwgMTQ2OCwgNTEyLCAxNDk3LCAxNDY4LCAKKyAgICA1MTIsIDE0OTgsIDE0NjgsIDUxMiwgMTQ5OSwgMTQ2OCwgNTEyLCAxNTAwLCAxNDY4LCA1MTIsIDE1MDIsIDE0NjgsIDUxMiwgCisgICAgMTUwNCwgMTQ2OCwgNTEyLCAxNTA1LCAxNDY4LCA1MTIsIDE1MDcsIDE0NjgsIDUxMiwgMTUwOCwgMTQ2OCwgNTEyLCAxNTEwLCAKKyAgICAxNDY4LCA1MTIsIDE1MTEsIDE0NjgsIDUxMiwgMTUxMiwgMTQ2OCwgNTEyLCAxNTEzLCAxNDY4LCA1MTIsIDE1MTQsIDE0NjgsIAorICAgIDUxMiwgMTQ5MywgMTQ2NSwgNTEyLCAxNDg5LCAxNDcxLCA1MTIsIDE0OTksIDE0NzEsIDUxMiwgMTUwOCwgMTQ3MSwgNTE0LCAKKyAgICAxNDg4LCAxNTAwLCAyNjcsIDE2NDksIDI2OCwgMTY0OSwgMjY3LCAxNjU5LCAyNjgsIDE2NTksIDI2OSwgMTY1OSwgMjcwLCAKKyAgICAxNjU5LCAyNjcsIDE2NjIsIDI2OCwgMTY2MiwgMjY5LCAxNjYyLCAyNzAsIDE2NjIsIDI2NywgMTY2NCwgMjY4LCAxNjY0LCAKKyAgICAyNjksIDE2NjQsIDI3MCwgMTY2NCwgMjY3LCAxNjU4LCAyNjgsIDE2NTgsIDI2OSwgMTY1OCwgMjcwLCAxNjU4LCAyNjcsIAorICAgIDE2NjMsIDI2OCwgMTY2MywgMjY5LCAxNjYzLCAyNzAsIDE2NjMsIDI2NywgMTY1NywgMjY4LCAxNjU3LCAyNjksIDE2NTcsIAorICAgIDI3MCwgMTY1NywgMjY3LCAxNzAwLCAyNjgsIDE3MDAsIDI2OSwgMTcwMCwgMjcwLCAxNzAwLCAyNjcsIDE3MDIsIDI2OCwgCisgICAgMTcwMiwgMjY5LCAxNzAyLCAyNzAsIDE3MDIsIDI2NywgMTY2OCwgMjY4LCAxNjY4LCAyNjksIDE2NjgsIDI3MCwgMTY2OCwgCisgICAgMjY3LCAxNjY3LCAyNjgsIDE2NjcsIDI2OSwgMTY2NywgMjcwLCAxNjY3LCAyNjcsIDE2NzAsIDI2OCwgMTY3MCwgMjY5LCAKKyAgICAxNjcwLCAyNzAsIDE2NzAsIDI2NywgMTY3MSwgMjY4LCAxNjcxLCAyNjksIDE2NzEsIDI3MCwgMTY3MSwgMjY3LCAxNjc3LCAKKyAgICAyNjgsIDE2NzcsIDI2NywgMTY3NiwgMjY4LCAxNjc2LCAyNjcsIDE2NzgsIDI2OCwgMTY3OCwgMjY3LCAxNjcyLCAyNjgsIAorICAgIDE2NzIsIDI2NywgMTY4OCwgMjY4LCAxNjg4LCAyNjcsIDE2ODEsIDI2OCwgMTY4MSwgMjY3LCAxNzA1LCAyNjgsIDE3MDUsIAorICAgIDI2OSwgMTcwNSwgMjcwLCAxNzA1LCAyNjcsIDE3MTEsIDI2OCwgMTcxMSwgMjY5LCAxNzExLCAyNzAsIDE3MTEsIDI2NywgCisgICAgMTcxNSwgMjY4LCAxNzE1LCAyNjksIDE3MTUsIDI3MCwgMTcxNSwgMjY3LCAxNzEzLCAyNjgsIDE3MTMsIDI2OSwgMTcxMywgCisgICAgMjcwLCAxNzEzLCAyNjcsIDE3MjIsIDI2OCwgMTcyMiwgMjY3LCAxNzIzLCAyNjgsIDE3MjMsIDI2OSwgMTcyMywgMjcwLCAKKyAgICAxNzIzLCAyNjcsIDE3MjgsIDI2OCwgMTcyOCwgMjY3LCAxNzI5LCAyNjgsIDE3MjksIDI2OSwgMTcyOSwgMjcwLCAxNzI5LCAKKyAgICAyNjcsIDE3MjYsIDI2OCwgMTcyNiwgMjY5LCAxNzI2LCAyNzAsIDE3MjYsIDI2NywgMTc0NiwgMjY4LCAxNzQ2LCAyNjcsIAorICAgIDE3NDcsIDI2OCwgMTc0NywgMjY3LCAxNzA5LCAyNjgsIDE3MDksIDI2OSwgMTcwOSwgMjcwLCAxNzA5LCAyNjcsIDE3MzUsIAorICAgIDI2OCwgMTczNSwgMjY3LCAxNzM0LCAyNjgsIDE3MzQsIDI2NywgMTczNiwgMjY4LCAxNzM2LCAyNjcsIDE2NTUsIDI2NywgCisgICAgMTczOSwgMjY4LCAxNzM5LCAyNjcsIDE3MzMsIDI2OCwgMTczMywgMjY3LCAxNzM3LCAyNjgsIDE3MzcsIDI2NywgMTc0NCwgCisgICAgMjY4LCAxNzQ0LCAyNjksIDE3NDQsIDI3MCwgMTc0NCwgMjY5LCAxNjA5LCAyNzAsIDE2MDksIDUyMywgMTU3NCwgMTU3NSwgCisgICAgNTI0LCAxNTc0LCAxNTc1LCA1MjMsIDE1NzQsIDE3NDksIDUyNCwgMTU3NCwgMTc0OSwgNTIzLCAxNTc0LCAxNjA4LCA1MjQsIAorICAgIDE1NzQsIDE2MDgsIDUyMywgMTU3NCwgMTczNSwgNTI0LCAxNTc0LCAxNzM1LCA1MjMsIDE1NzQsIDE3MzQsIDUyNCwgMTU3NCwgCisgICAgMTczNCwgNTIzLCAxNTc0LCAxNzM2LCA1MjQsIDE1NzQsIDE3MzYsIDUyMywgMTU3NCwgMTc0NCwgNTI0LCAxNTc0LCAxNzQ0LCAKKyAgICA1MjUsIDE1NzQsIDE3NDQsIDUyMywgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjA5LCA1MjUsIDE1NzQsIDE2MDksIDI2NywgCisgICAgMTc0MCwgMjY4LCAxNzQwLCAyNjksIDE3NDAsIDI3MCwgMTc0MCwgNTIzLCAxNTc0LCAxNTgwLCA1MjMsIDE1NzQsIDE1ODEsIAorICAgIDUyMywgMTU3NCwgMTYwNSwgNTIzLCAxNTc0LCAxNjA5LCA1MjMsIDE1NzQsIDE2MTAsIDUyMywgMTU3NiwgMTU4MCwgNTIzLCAKKyAgICAxNTc2LCAxNTgxLCA1MjMsIDE1NzYsIDE1ODIsIDUyMywgMTU3NiwgMTYwNSwgNTIzLCAxNTc2LCAxNjA5LCA1MjMsIDE1NzYsIAorICAgIDE2MTAsIDUyMywgMTU3OCwgMTU4MCwgNTIzLCAxNTc4LCAxNTgxLCA1MjMsIDE1NzgsIDE1ODIsIDUyMywgMTU3OCwgMTYwNSwgCisgICAgNTIzLCAxNTc4LCAxNjA5LCA1MjMsIDE1NzgsIDE2MTAsIDUyMywgMTU3OSwgMTU4MCwgNTIzLCAxNTc5LCAxNjA1LCA1MjMsIAorICAgIDE1NzksIDE2MDksIDUyMywgMTU3OSwgMTYxMCwgNTIzLCAxNTgwLCAxNTgxLCA1MjMsIDE1ODAsIDE2MDUsIDUyMywgMTU4MSwgCisgICAgMTU4MCwgNTIzLCAxNTgxLCAxNjA1LCA1MjMsIDE1ODIsIDE1ODAsIDUyMywgMTU4MiwgMTU4MSwgNTIzLCAxNTgyLCAxNjA1LCAKKyAgICA1MjMsIDE1ODcsIDE1ODAsIDUyMywgMTU4NywgMTU4MSwgNTIzLCAxNTg3LCAxNTgyLCA1MjMsIDE1ODcsIDE2MDUsIDUyMywgCisgICAgMTU4OSwgMTU4MSwgNTIzLCAxNTg5LCAxNjA1LCA1MjMsIDE1OTAsIDE1ODAsIDUyMywgMTU5MCwgMTU4MSwgNTIzLCAxNTkwLCAKKyAgICAxNTgyLCA1MjMsIDE1OTAsIDE2MDUsIDUyMywgMTU5MSwgMTU4MSwgNTIzLCAxNTkxLCAxNjA1LCA1MjMsIDE1OTIsIDE2MDUsIAorICAgIDUyMywgMTU5MywgMTU4MCwgNTIzLCAxNTkzLCAxNjA1LCA1MjMsIDE1OTQsIDE1ODAsIDUyMywgMTU5NCwgMTYwNSwgNTIzLCAKKyAgICAxNjAxLCAxNTgwLCA1MjMsIDE2MDEsIDE1ODEsIDUyMywgMTYwMSwgMTU4MiwgNTIzLCAxNjAxLCAxNjA1LCA1MjMsIDE2MDEsIAorICAgIDE2MDksIDUyMywgMTYwMSwgMTYxMCwgNTIzLCAxNjAyLCAxNTgxLCA1MjMsIDE2MDIsIDE2MDUsIDUyMywgMTYwMiwgMTYwOSwgCisgICAgNTIzLCAxNjAyLCAxNjEwLCA1MjMsIDE2MDMsIDE1NzUsIDUyMywgMTYwMywgMTU4MCwgNTIzLCAxNjAzLCAxNTgxLCA1MjMsIAorICAgIDE2MDMsIDE1ODIsIDUyMywgMTYwMywgMTYwNCwgNTIzLCAxNjAzLCAxNjA1LCA1MjMsIDE2MDMsIDE2MDksIDUyMywgMTYwMywgCisgICAgMTYxMCwgNTIzLCAxNjA0LCAxNTgwLCA1MjMsIDE2MDQsIDE1ODEsIDUyMywgMTYwNCwgMTU4MiwgNTIzLCAxNjA0LCAxNjA1LCAKKyAgICA1MjMsIDE2MDQsIDE2MDksIDUyMywgMTYwNCwgMTYxMCwgNTIzLCAxNjA1LCAxNTgwLCA1MjMsIDE2MDUsIDE1ODEsIDUyMywgCisgICAgMTYwNSwgMTU4MiwgNTIzLCAxNjA1LCAxNjA1LCA1MjMsIDE2MDUsIDE2MDksIDUyMywgMTYwNSwgMTYxMCwgNTIzLCAxNjA2LCAKKyAgICAxNTgwLCA1MjMsIDE2MDYsIDE1ODEsIDUyMywgMTYwNiwgMTU4MiwgNTIzLCAxNjA2LCAxNjA1LCA1MjMsIDE2MDYsIDE2MDksIAorICAgIDUyMywgMTYwNiwgMTYxMCwgNTIzLCAxNjA3LCAxNTgwLCA1MjMsIDE2MDcsIDE2MDUsIDUyMywgMTYwNywgMTYwOSwgNTIzLCAKKyAgICAxNjA3LCAxNjEwLCA1MjMsIDE2MTAsIDE1ODAsIDUyMywgMTYxMCwgMTU4MSwgNTIzLCAxNjEwLCAxNTgyLCA1MjMsIDE2MTAsIAorICAgIDE2MDUsIDUyMywgMTYxMCwgMTYwOSwgNTIzLCAxNjEwLCAxNjEwLCA1MjMsIDE1ODQsIDE2NDgsIDUyMywgMTU4NSwgMTY0OCwgCisgICAgNTIzLCAxNjA5LCAxNjQ4LCA3NzksIDMyLCAxNjEyLCAxNjE3LCA3NzksIDMyLCAxNjEzLCAxNjE3LCA3NzksIDMyLCAxNjE0LCAKKyAgICAxNjE3LCA3NzksIDMyLCAxNjE1LCAxNjE3LCA3NzksIDMyLCAxNjE2LCAxNjE3LCA3NzksIDMyLCAxNjE3LCAxNjQ4LCA1MjQsIAorICAgIDE1NzQsIDE1ODUsIDUyNCwgMTU3NCwgMTU4NiwgNTI0LCAxNTc0LCAxNjA1LCA1MjQsIDE1NzQsIDE2MDYsIDUyNCwgMTU3NCwgCisgICAgMTYwOSwgNTI0LCAxNTc0LCAxNjEwLCA1MjQsIDE1NzYsIDE1ODUsIDUyNCwgMTU3NiwgMTU4NiwgNTI0LCAxNTc2LCAxNjA1LCAKKyAgICA1MjQsIDE1NzYsIDE2MDYsIDUyNCwgMTU3NiwgMTYwOSwgNTI0LCAxNTc2LCAxNjEwLCA1MjQsIDE1NzgsIDE1ODUsIDUyNCwgCisgICAgMTU3OCwgMTU4NiwgNTI0LCAxNTc4LCAxNjA1LCA1MjQsIDE1NzgsIDE2MDYsIDUyNCwgMTU3OCwgMTYwOSwgNTI0LCAxNTc4LCAKKyAgICAxNjEwLCA1MjQsIDE1NzksIDE1ODUsIDUyNCwgMTU3OSwgMTU4NiwgNTI0LCAxNTc5LCAxNjA1LCA1MjQsIDE1NzksIDE2MDYsIAorICAgIDUyNCwgMTU3OSwgMTYwOSwgNTI0LCAxNTc5LCAxNjEwLCA1MjQsIDE2MDEsIDE2MDksIDUyNCwgMTYwMSwgMTYxMCwgNTI0LCAKKyAgICAxNjAyLCAxNjA5LCA1MjQsIDE2MDIsIDE2MTAsIDUyNCwgMTYwMywgMTU3NSwgNTI0LCAxNjAzLCAxNjA0LCA1MjQsIDE2MDMsIAorICAgIDE2MDUsIDUyNCwgMTYwMywgMTYwOSwgNTI0LCAxNjAzLCAxNjEwLCA1MjQsIDE2MDQsIDE2MDUsIDUyNCwgMTYwNCwgMTYwOSwgCisgICAgNTI0LCAxNjA0LCAxNjEwLCA1MjQsIDE2MDUsIDE1NzUsIDUyNCwgMTYwNSwgMTYwNSwgNTI0LCAxNjA2LCAxNTg1LCA1MjQsIAorICAgIDE2MDYsIDE1ODYsIDUyNCwgMTYwNiwgMTYwNSwgNTI0LCAxNjA2LCAxNjA2LCA1MjQsIDE2MDYsIDE2MDksIDUyNCwgMTYwNiwgCisgICAgMTYxMCwgNTI0LCAxNjA5LCAxNjQ4LCA1MjQsIDE2MTAsIDE1ODUsIDUyNCwgMTYxMCwgMTU4NiwgNTI0LCAxNjEwLCAxNjA1LCAKKyAgICA1MjQsIDE2MTAsIDE2MDYsIDUyNCwgMTYxMCwgMTYwOSwgNTI0LCAxNjEwLCAxNjEwLCA1MjUsIDE1NzQsIDE1ODAsIDUyNSwgCisgICAgMTU3NCwgMTU4MSwgNTI1LCAxNTc0LCAxNTgyLCA1MjUsIDE1NzQsIDE2MDUsIDUyNSwgMTU3NCwgMTYwNywgNTI1LCAxNTc2LCAKKyAgICAxNTgwLCA1MjUsIDE1NzYsIDE1ODEsIDUyNSwgMTU3NiwgMTU4MiwgNTI1LCAxNTc2LCAxNjA1LCA1MjUsIDE1NzYsIDE2MDcsIAorICAgIDUyNSwgMTU3OCwgMTU4MCwgNTI1LCAxNTc4LCAxNTgxLCA1MjUsIDE1NzgsIDE1ODIsIDUyNSwgMTU3OCwgMTYwNSwgNTI1LCAKKyAgICAxNTc4LCAxNjA3LCA1MjUsIDE1NzksIDE2MDUsIDUyNSwgMTU4MCwgMTU4MSwgNTI1LCAxNTgwLCAxNjA1LCA1MjUsIDE1ODEsIAorICAgIDE1ODAsIDUyNSwgMTU4MSwgMTYwNSwgNTI1LCAxNTgyLCAxNTgwLCA1MjUsIDE1ODIsIDE2MDUsIDUyNSwgMTU4NywgMTU4MCwgCisgICAgNTI1LCAxNTg3LCAxNTgxLCA1MjUsIDE1ODcsIDE1ODIsIDUyNSwgMTU4NywgMTYwNSwgNTI1LCAxNTg5LCAxNTgxLCA1MjUsIAorICAgIDE1ODksIDE1ODIsIDUyNSwgMTU4OSwgMTYwNSwgNTI1LCAxNTkwLCAxNTgwLCA1MjUsIDE1OTAsIDE1ODEsIDUyNSwgMTU5MCwgCisgICAgMTU4MiwgNTI1LCAxNTkwLCAxNjA1LCA1MjUsIDE1OTEsIDE1ODEsIDUyNSwgMTU5MiwgMTYwNSwgNTI1LCAxNTkzLCAxNTgwLCAKKyAgICA1MjUsIDE1OTMsIDE2MDUsIDUyNSwgMTU5NCwgMTU4MCwgNTI1LCAxNTk0LCAxNjA1LCA1MjUsIDE2MDEsIDE1ODAsIDUyNSwgCisgICAgMTYwMSwgMTU4MSwgNTI1LCAxNjAxLCAxNTgyLCA1MjUsIDE2MDEsIDE2MDUsIDUyNSwgMTYwMiwgMTU4MSwgNTI1LCAxNjAyLCAKKyAgICAxNjA1LCA1MjUsIDE2MDMsIDE1ODAsIDUyNSwgMTYwMywgMTU4MSwgNTI1LCAxNjAzLCAxNTgyLCA1MjUsIDE2MDMsIDE2MDQsIAorICAgIDUyNSwgMTYwMywgMTYwNSwgNTI1LCAxNjA0LCAxNTgwLCA1MjUsIDE2MDQsIDE1ODEsIDUyNSwgMTYwNCwgMTU4MiwgNTI1LCAKKyAgICAxNjA0LCAxNjA1LCA1MjUsIDE2MDQsIDE2MDcsIDUyNSwgMTYwNSwgMTU4MCwgNTI1LCAxNjA1LCAxNTgxLCA1MjUsIDE2MDUsIAorICAgIDE1ODIsIDUyNSwgMTYwNSwgMTYwNSwgNTI1LCAxNjA2LCAxNTgwLCA1MjUsIDE2MDYsIDE1ODEsIDUyNSwgMTYwNiwgMTU4MiwgCisgICAgNTI1LCAxNjA2LCAxNjA1LCA1MjUsIDE2MDYsIDE2MDcsIDUyNSwgMTYwNywgMTU4MCwgNTI1LCAxNjA3LCAxNjA1LCA1MjUsIAorICAgIDE2MDcsIDE2NDgsIDUyNSwgMTYxMCwgMTU4MCwgNTI1LCAxNjEwLCAxNTgxLCA1MjUsIDE2MTAsIDE1ODIsIDUyNSwgMTYxMCwgCisgICAgMTYwNSwgNTI1LCAxNjEwLCAxNjA3LCA1MjYsIDE1NzQsIDE2MDUsIDUyNiwgMTU3NCwgMTYwNywgNTI2LCAxNTc2LCAxNjA1LCAKKyAgICA1MjYsIDE1NzYsIDE2MDcsIDUyNiwgMTU3OCwgMTYwNSwgNTI2LCAxNTc4LCAxNjA3LCA1MjYsIDE1NzksIDE2MDUsIDUyNiwgCisgICAgMTU3OSwgMTYwNywgNTI2LCAxNTg3LCAxNjA1LCA1MjYsIDE1ODcsIDE2MDcsIDUyNiwgMTU4OCwgMTYwNSwgNTI2LCAxNTg4LCAKKyAgICAxNjA3LCA1MjYsIDE2MDMsIDE2MDQsIDUyNiwgMTYwMywgMTYwNSwgNTI2LCAxNjA0LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDUsIAorICAgIDUyNiwgMTYwNiwgMTYwNywgNTI2LCAxNjEwLCAxNjA1LCA1MjYsIDE2MTAsIDE2MDcsIDc4MiwgMTYwMCwgMTYxNCwgMTYxNywgCisgICAgNzgyLCAxNjAwLCAxNjE1LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTYsIDE2MTcsIDUyMywgMTU5MSwgMTYwOSwgNTIzLCAxNTkxLCAKKyAgICAxNjEwLCA1MjMsIDE1OTMsIDE2MDksIDUyMywgMTU5MywgMTYxMCwgNTIzLCAxNTk0LCAxNjA5LCA1MjMsIDE1OTQsIDE2MTAsIAorICAgIDUyMywgMTU4NywgMTYwOSwgNTIzLCAxNTg3LCAxNjEwLCA1MjMsIDE1ODgsIDE2MDksIDUyMywgMTU4OCwgMTYxMCwgNTIzLCAKKyAgICAxNTgxLCAxNjA5LCA1MjMsIDE1ODEsIDE2MTAsIDUyMywgMTU4MCwgMTYwOSwgNTIzLCAxNTgwLCAxNjEwLCA1MjMsIDE1ODIsIAorICAgIDE2MDksIDUyMywgMTU4MiwgMTYxMCwgNTIzLCAxNTg5LCAxNjA5LCA1MjMsIDE1ODksIDE2MTAsIDUyMywgMTU5MCwgMTYwOSwgCisgICAgNTIzLCAxNTkwLCAxNjEwLCA1MjMsIDE1ODgsIDE1ODAsIDUyMywgMTU4OCwgMTU4MSwgNTIzLCAxNTg4LCAxNTgyLCA1MjMsIAorICAgIDE1ODgsIDE2MDUsIDUyMywgMTU4OCwgMTU4NSwgNTIzLCAxNTg3LCAxNTg1LCA1MjMsIDE1ODksIDE1ODUsIDUyMywgMTU5MCwgCisgICAgMTU4NSwgNTI0LCAxNTkxLCAxNjA5LCA1MjQsIDE1OTEsIDE2MTAsIDUyNCwgMTU5MywgMTYwOSwgNTI0LCAxNTkzLCAxNjEwLCAKKyAgICA1MjQsIDE1OTQsIDE2MDksIDUyNCwgMTU5NCwgMTYxMCwgNTI0LCAxNTg3LCAxNjA5LCA1MjQsIDE1ODcsIDE2MTAsIDUyNCwgCisgICAgMTU4OCwgMTYwOSwgNTI0LCAxNTg4LCAxNjEwLCA1MjQsIDE1ODEsIDE2MDksIDUyNCwgMTU4MSwgMTYxMCwgNTI0LCAxNTgwLCAKKyAgICAxNjA5LCA1MjQsIDE1ODAsIDE2MTAsIDUyNCwgMTU4MiwgMTYwOSwgNTI0LCAxNTgyLCAxNjEwLCA1MjQsIDE1ODksIDE2MDksIAorICAgIDUyNCwgMTU4OSwgMTYxMCwgNTI0LCAxNTkwLCAxNjA5LCA1MjQsIDE1OTAsIDE2MTAsIDUyNCwgMTU4OCwgMTU4MCwgNTI0LCAKKyAgICAxNTg4LCAxNTgxLCA1MjQsIDE1ODgsIDE1ODIsIDUyNCwgMTU4OCwgMTYwNSwgNTI0LCAxNTg4LCAxNTg1LCA1MjQsIDE1ODcsIAorICAgIDE1ODUsIDUyNCwgMTU4OSwgMTU4NSwgNTI0LCAxNTkwLCAxNTg1LCA1MjUsIDE1ODgsIDE1ODAsIDUyNSwgMTU4OCwgMTU4MSwgCisgICAgNTI1LCAxNTg4LCAxNTgyLCA1MjUsIDE1ODgsIDE2MDUsIDUyNSwgMTU4NywgMTYwNywgNTI1LCAxNTg4LCAxNjA3LCA1MjUsIAorICAgIDE1OTEsIDE2MDUsIDUyNiwgMTU4NywgMTU4MCwgNTI2LCAxNTg3LCAxNTgxLCA1MjYsIDE1ODcsIDE1ODIsIDUyNiwgMTU4OCwgCisgICAgMTU4MCwgNTI2LCAxNTg4LCAxNTgxLCA1MjYsIDE1ODgsIDE1ODIsIDUyNiwgMTU5MSwgMTYwNSwgNTI2LCAxNTkyLCAxNjA1LCAKKyAgICA1MjQsIDE1NzUsIDE2MTEsIDUyMywgMTU3NSwgMTYxMSwgNzgxLCAxNTc4LCAxNTgwLCAxNjA1LCA3ODAsIDE1NzgsIDE1ODEsIAorICAgIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNjA1LCA3ODEsIDE1NzgsIDE1ODIsIAorICAgIDE2MDUsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MCwgNzgxLCAxNTc4LCAxNjA1LCAxNTgxLCA3ODEsIDE1NzgsIDE2MDUsIAorICAgIDE1ODIsIDc4MCwgMTU4MCwgMTYwNSwgMTU4MSwgNzgxLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODAsIDE1ODEsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTU4MSwgMTYwNSwgMTYwOSwgNzgxLCAxNTg3LCAxNTgxLCAxNTgwLCA3ODEsIDE1ODcsIDE1ODAsIAorICAgIDE1ODEsIDc4MCwgMTU4NywgMTU4MCwgMTYwOSwgNzgwLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIAorICAgIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MCwgNzgwLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODcsIDE2MDUsIAorICAgIDE2MDUsIDc4MCwgMTU4OSwgMTU4MSwgMTU4MSwgNzgxLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODAsIDE1ODksIDE2MDUsIAorICAgIDE2MDUsIDc4MCwgMTU4OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODAsIDE1ODgsIDE1ODAsIAorICAgIDE2MTAsIDc4MCwgMTU4OCwgMTYwNSwgMTU4MiwgNzgxLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODgsIDE2MDUsIAorICAgIDE2MDUsIDc4MSwgMTU4OCwgMTYwNSwgMTYwNSwgNzgwLCAxNTkwLCAxNTgxLCAxNjA5LCA3ODAsIDE1OTAsIDE1ODIsIAorICAgIDE2MDUsIDc4MSwgMTU5MCwgMTU4MiwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIAorICAgIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNjEwLCA3ODAsIDE1OTMsIDE1ODAsIAorICAgIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTU5NCwgMTYwNSwgMTYwNSwgNzgwLCAxNTk0LCAxNjA1LCAxNjEwLCA3ODAsIDE1OTQsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTYwMSwgMTU4MiwgMTYwNSwgNzgxLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODAsIDE2MDIsIDE2MDUsIAorICAgIDE1ODEsIDc4MCwgMTYwMiwgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIAorICAgIDE2MTAsIDc4MCwgMTYwNCwgMTU4MSwgMTYwOSwgNzgxLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODAsIAorICAgIDE1ODAsIDc4MCwgMTYwNCwgMTU4MiwgMTYwNSwgNzgxLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODAsIDE2MDQsIDE2MDUsIAorICAgIDE1ODEsIDc4MSwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA1LCAxNTgxLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODEsIAorICAgIDE2MDUsIDc4MCwgMTYwNSwgMTU4MSwgMTYxMCwgNzgxLCAxNjA1LCAxNTgwLCAxNTgxLCA3ODEsIDE2MDUsIDE1ODAsIAorICAgIDE2MDUsIDc4MSwgMTYwNSwgMTU4MiwgMTU4MCwgNzgxLCAxNjA1LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODAsIAorICAgIDE1ODIsIDc4MSwgMTYwNywgMTYwNSwgMTU4MCwgNzgxLCAxNjA3LCAxNjA1LCAxNjA1LCA3ODEsIDE2MDYsIDE1ODEsIAorICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MSwgMTYwOSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDYsIDE1ODAsIAorICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTYwOSwgNzgwLCAxNjA2LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTYxMCwgMTYwNSwgMTYwNSwgNzgxLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODAsIDE1NzYsIDE1ODIsIAorICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjA5LCA3ODAsIDE1NzgsIDE1ODIsIAorICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MiwgMTYwOSwgNzgwLCAxNTc4LCAxNjA1LCAxNjEwLCA3ODAsIDE1NzgsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYxMCwgNzgwLCAxNTgwLCAxNTgxLCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTU4NywgMTU4MiwgMTYwOSwgNzgwLCAxNTg5LCAxNTgxLCAxNjEwLCA3ODAsIDE1ODgsIDE1ODEsIAorICAgIDE2MTAsIDc4MCwgMTU5MCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDQsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTYxMCwgMTU4MSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgwLCAxNjEwLCA3ODAsIDE2MTAsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTYwNSwgMTYwNSwgMTYxMCwgNzgwLCAxNjAyLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE1ODEsIAorICAgIDE2MTAsIDc4MSwgMTYwMiwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTYwMywgMTYwNSwgMTYxMCwgNzgxLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE2MDUsIDE1ODIsIAorICAgIDE2MTAsIDc4MSwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODAsIAorICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNTgwLCAxNTgxLCAxNjEwLCA3ODAsIDE1ODEsIDE1ODAsIAorICAgIDE2MTAsIDc4MCwgMTYwNSwgMTU4MCwgMTYxMCwgNzgwLCAxNjAxLCAxNjA1LCAxNjEwLCA3ODAsIDE1NzYsIDE1ODEsIAorICAgIDE2MTAsIDc4MSwgMTYwMywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODEsIDE1ODksIDE2MDUsIAorICAgIDE2MDUsIDc4MCwgMTU4NywgMTU4MiwgMTYxMCwgNzgwLCAxNjA2LCAxNTgwLCAxNjEwLCA3NzksIDE1ODksIDE2MDQsIAorICAgIDE3NDYsIDc3OSwgMTYwMiwgMTYwNCwgMTc0NiwgMTAzNSwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMTAzNSwgMTU3NSwgCisgICAgMTYwMywgMTU3NiwgMTU4NSwgMTAzNSwgMTYwNSwgMTU4MSwgMTYwNSwgMTU4MywgMTAzNSwgMTU4OSwgMTYwNCwgMTU5MywgCisgICAgMTYwNSwgMTAzNSwgMTU4NSwgMTU4NywgMTYwOCwgMTYwNCwgMTAzNSwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMTAzNSwgCisgICAgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgNzc5LCAxNTg5LCAxNjA0LCAxNjA5LCA0NjE5LCAxNTg5LCAxNjA0LCAxNjA5LCAKKyAgICAzMiwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMzIsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDMyLCAxNjA4LCAxNTg3LCAKKyAgICAxNjA0LCAxNjA1LCAyMDU5LCAxNTgwLCAxNjA0LCAzMiwgMTU4MCwgMTYwNCwgMTU3NSwgMTYwNCwgMTYwNywgMTAzNSwgCisgICAgMTU4NSwgMTc0MCwgMTU3NSwgMTYwNCwgMjY1LCA0NCwgMjY1LCAxMjI4OSwgMjY1LCAxMjI5MCwgMjY1LCA1OCwgMjY1LCAKKyAgICA1OSwgMjY1LCAzMywgMjY1LCA2MywgMjY1LCAxMjMxMCwgMjY1LCAxMjMxMSwgMjY1LCA4MjMwLCAyNjUsIDgyMjksIDI2NSwgCisgICAgODIxMiwgMjY1LCA4MjExLCAyNjUsIDk1LCAyNjUsIDk1LCAyNjUsIDQwLCAyNjUsIDQxLCAyNjUsIDEyMywgMjY1LCAxMjUsIAorICAgIDI2NSwgMTIzMDgsIDI2NSwgMTIzMDksIDI2NSwgMTIzMDQsIDI2NSwgMTIzMDUsIDI2NSwgMTIyOTgsIDI2NSwgMTIyOTksIAorICAgIDI2NSwgMTIyOTYsIDI2NSwgMTIyOTcsIDI2NSwgMTIzMDAsIDI2NSwgMTIzMDEsIDI2NSwgMTIzMDIsIDI2NSwgMTIzMDMsIAorICAgIDI2NSwgOTEsIDI2NSwgOTMsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA5NSwgCisgICAgMjU4LCA5NSwgMjU4LCA5NSwgMjcxLCA0NCwgMjcxLCAxMjI4OSwgMjcxLCA0NiwgMjcxLCA1OSwgMjcxLCA1OCwgMjcxLCAKKyAgICA2MywgMjcxLCAzMywgMjcxLCA4MjEyLCAyNzEsIDQwLCAyNzEsIDQxLCAyNzEsIDEyMywgMjcxLCAxMjUsIDI3MSwgMTIzMDgsIAorICAgIDI3MSwgMTIzMDksIDI3MSwgMzUsIDI3MSwgMzgsIDI3MSwgNDIsIDI3MSwgNDMsIDI3MSwgNDUsIDI3MSwgNjAsIDI3MSwgCisgICAgNjIsIDI3MSwgNjEsIDI3MSwgOTIsIDI3MSwgMzYsIDI3MSwgMzcsIDI3MSwgNjQsIDUyMywgMzIsIDE2MTEsIDUyNiwgCisgICAgMTYwMCwgMTYxMSwgNTIzLCAzMiwgMTYxMiwgNTIzLCAzMiwgMTYxMywgNTIzLCAzMiwgMTYxNCwgNTI2LCAxNjAwLCAxNjE0LCAKKyAgICA1MjMsIDMyLCAxNjE1LCA1MjYsIDE2MDAsIDE2MTUsIDUyMywgMzIsIDE2MTYsIDUyNiwgMTYwMCwgMTYxNiwgNTIzLCAzMiwgCisgICAgMTYxNywgNTI2LCAxNjAwLCAxNjE3LCA1MjMsIDMyLCAxNjE4LCA1MjYsIDE2MDAsIDE2MTgsIDI2NywgMTU2OSwgMjY3LCAKKyAgICAxNTcwLCAyNjgsIDE1NzAsIDI2NywgMTU3MSwgMjY4LCAxNTcxLCAyNjcsIDE1NzIsIDI2OCwgMTU3MiwgMjY3LCAxNTczLCAKKyAgICAyNjgsIDE1NzMsIDI2NywgMTU3NCwgMjY4LCAxNTc0LCAyNjksIDE1NzQsIDI3MCwgMTU3NCwgMjY3LCAxNTc1LCAyNjgsIAorICAgIDE1NzUsIDI2NywgMTU3NiwgMjY4LCAxNTc2LCAyNjksIDE1NzYsIDI3MCwgMTU3NiwgMjY3LCAxNTc3LCAyNjgsIDE1NzcsIAorICAgIDI2NywgMTU3OCwgMjY4LCAxNTc4LCAyNjksIDE1NzgsIDI3MCwgMTU3OCwgMjY3LCAxNTc5LCAyNjgsIDE1NzksIDI2OSwgCisgICAgMTU3OSwgMjcwLCAxNTc5LCAyNjcsIDE1ODAsIDI2OCwgMTU4MCwgMjY5LCAxNTgwLCAyNzAsIDE1ODAsIDI2NywgMTU4MSwgCisgICAgMjY4LCAxNTgxLCAyNjksIDE1ODEsIDI3MCwgMTU4MSwgMjY3LCAxNTgyLCAyNjgsIDE1ODIsIDI2OSwgMTU4MiwgMjcwLCAKKyAgICAxNTgyLCAyNjcsIDE1ODMsIDI2OCwgMTU4MywgMjY3LCAxNTg0LCAyNjgsIDE1ODQsIDI2NywgMTU4NSwgMjY4LCAxNTg1LCAKKyAgICAyNjcsIDE1ODYsIDI2OCwgMTU4NiwgMjY3LCAxNTg3LCAyNjgsIDE1ODcsIDI2OSwgMTU4NywgMjcwLCAxNTg3LCAyNjcsIAorICAgIDE1ODgsIDI2OCwgMTU4OCwgMjY5LCAxNTg4LCAyNzAsIDE1ODgsIDI2NywgMTU4OSwgMjY4LCAxNTg5LCAyNjksIDE1ODksIAorICAgIDI3MCwgMTU4OSwgMjY3LCAxNTkwLCAyNjgsIDE1OTAsIDI2OSwgMTU5MCwgMjcwLCAxNTkwLCAyNjcsIDE1OTEsIDI2OCwgCisgICAgMTU5MSwgMjY5LCAxNTkxLCAyNzAsIDE1OTEsIDI2NywgMTU5MiwgMjY4LCAxNTkyLCAyNjksIDE1OTIsIDI3MCwgMTU5MiwgCisgICAgMjY3LCAxNTkzLCAyNjgsIDE1OTMsIDI2OSwgMTU5MywgMjcwLCAxNTkzLCAyNjcsIDE1OTQsIDI2OCwgMTU5NCwgMjY5LCAKKyAgICAxNTk0LCAyNzAsIDE1OTQsIDI2NywgMTYwMSwgMjY4LCAxNjAxLCAyNjksIDE2MDEsIDI3MCwgMTYwMSwgMjY3LCAxNjAyLCAKKyAgICAyNjgsIDE2MDIsIDI2OSwgMTYwMiwgMjcwLCAxNjAyLCAyNjcsIDE2MDMsIDI2OCwgMTYwMywgMjY5LCAxNjAzLCAyNzAsIAorICAgIDE2MDMsIDI2NywgMTYwNCwgMjY4LCAxNjA0LCAyNjksIDE2MDQsIDI3MCwgMTYwNCwgMjY3LCAxNjA1LCAyNjgsIDE2MDUsIAorICAgIDI2OSwgMTYwNSwgMjcwLCAxNjA1LCAyNjcsIDE2MDYsIDI2OCwgMTYwNiwgMjY5LCAxNjA2LCAyNzAsIDE2MDYsIDI2NywgCisgICAgMTYwNywgMjY4LCAxNjA3LCAyNjksIDE2MDcsIDI3MCwgMTYwNywgMjY3LCAxNjA4LCAyNjgsIDE2MDgsIDI2NywgMTYwOSwgCisgICAgMjY4LCAxNjA5LCAyNjcsIDE2MTAsIDI2OCwgMTYxMCwgMjY5LCAxNjEwLCAyNzAsIDE2MTAsIDUyMywgMTYwNCwgMTU3MCwgCisgICAgNTI0LCAxNjA0LCAxNTcwLCA1MjMsIDE2MDQsIDE1NzEsIDUyNCwgMTYwNCwgMTU3MSwgNTIzLCAxNjA0LCAxNTczLCA1MjQsIAorICAgIDE2MDQsIDE1NzMsIDUyMywgMTYwNCwgMTU3NSwgNTI0LCAxNjA0LCAxNTc1LCAyNjQsIDMzLCAyNjQsIDM0LCAyNjQsIDM1LCAKKyAgICAyNjQsIDM2LCAyNjQsIDM3LCAyNjQsIDM4LCAyNjQsIDM5LCAyNjQsIDQwLCAyNjQsIDQxLCAyNjQsIDQyLCAyNjQsIDQzLCAKKyAgICAyNjQsIDQ0LCAyNjQsIDQ1LCAyNjQsIDQ2LCAyNjQsIDQ3LCAyNjQsIDQ4LCAyNjQsIDQ5LCAyNjQsIDUwLCAyNjQsIDUxLCAKKyAgICAyNjQsIDUyLCAyNjQsIDUzLCAyNjQsIDU0LCAyNjQsIDU1LCAyNjQsIDU2LCAyNjQsIDU3LCAyNjQsIDU4LCAyNjQsIDU5LCAKKyAgICAyNjQsIDYwLCAyNjQsIDYxLCAyNjQsIDYyLCAyNjQsIDYzLCAyNjQsIDY0LCAyNjQsIDY1LCAyNjQsIDY2LCAyNjQsIDY3LCAKKyAgICAyNjQsIDY4LCAyNjQsIDY5LCAyNjQsIDcwLCAyNjQsIDcxLCAyNjQsIDcyLCAyNjQsIDczLCAyNjQsIDc0LCAyNjQsIDc1LCAKKyAgICAyNjQsIDc2LCAyNjQsIDc3LCAyNjQsIDc4LCAyNjQsIDc5LCAyNjQsIDgwLCAyNjQsIDgxLCAyNjQsIDgyLCAyNjQsIDgzLCAKKyAgICAyNjQsIDg0LCAyNjQsIDg1LCAyNjQsIDg2LCAyNjQsIDg3LCAyNjQsIDg4LCAyNjQsIDg5LCAyNjQsIDkwLCAyNjQsIDkxLCAKKyAgICAyNjQsIDkyLCAyNjQsIDkzLCAyNjQsIDk0LCAyNjQsIDk1LCAyNjQsIDk2LCAyNjQsIDk3LCAyNjQsIDk4LCAyNjQsIDk5LCAKKyAgICAyNjQsIDEwMCwgMjY0LCAxMDEsIDI2NCwgMTAyLCAyNjQsIDEwMywgMjY0LCAxMDQsIDI2NCwgMTA1LCAyNjQsIDEwNiwgCisgICAgMjY0LCAxMDcsIDI2NCwgMTA4LCAyNjQsIDEwOSwgMjY0LCAxMTAsIDI2NCwgMTExLCAyNjQsIDExMiwgMjY0LCAxMTMsIAorICAgIDI2NCwgMTE0LCAyNjQsIDExNSwgMjY0LCAxMTYsIDI2NCwgMTE3LCAyNjQsIDExOCwgMjY0LCAxMTksIDI2NCwgMTIwLCAKKyAgICAyNjQsIDEyMSwgMjY0LCAxMjIsIDI2NCwgMTIzLCAyNjQsIDEyNCwgMjY0LCAxMjUsIDI2NCwgMTI2LCAyNjQsIDEwNjI5LCAKKyAgICAyNjQsIDEwNjMwLCAyNzIsIDEyMjkwLCAyNzIsIDEyMzAwLCAyNzIsIDEyMzAxLCAyNzIsIDEyMjg5LCAyNzIsIDEyNTM5LCAKKyAgICAyNzIsIDEyNTMwLCAyNzIsIDEyNDQ5LCAyNzIsIDEyNDUxLCAyNzIsIDEyNDUzLCAyNzIsIDEyNDU1LCAyNzIsIDEyNDU3LCAKKyAgICAyNzIsIDEyNTE1LCAyNzIsIDEyNTE3LCAyNzIsIDEyNTE5LCAyNzIsIDEyNDgzLCAyNzIsIDEyNTQwLCAyNzIsIDEyNDUwLCAKKyAgICAyNzIsIDEyNDUyLCAyNzIsIDEyNDU0LCAyNzIsIDEyNDU2LCAyNzIsIDEyNDU4LCAyNzIsIDEyNDU5LCAyNzIsIDEyNDYxLCAKKyAgICAyNzIsIDEyNDYzLCAyNzIsIDEyNDY1LCAyNzIsIDEyNDY3LCAyNzIsIDEyNDY5LCAyNzIsIDEyNDcxLCAyNzIsIDEyNDczLCAKKyAgICAyNzIsIDEyNDc1LCAyNzIsIDEyNDc3LCAyNzIsIDEyNDc5LCAyNzIsIDEyNDgxLCAyNzIsIDEyNDg0LCAyNzIsIDEyNDg2LCAKKyAgICAyNzIsIDEyNDg4LCAyNzIsIDEyNDkwLCAyNzIsIDEyNDkxLCAyNzIsIDEyNDkyLCAyNzIsIDEyNDkzLCAyNzIsIDEyNDk0LCAKKyAgICAyNzIsIDEyNDk1LCAyNzIsIDEyNDk4LCAyNzIsIDEyNTAxLCAyNzIsIDEyNTA0LCAyNzIsIDEyNTA3LCAyNzIsIDEyNTEwLCAKKyAgICAyNzIsIDEyNTExLCAyNzIsIDEyNTEyLCAyNzIsIDEyNTEzLCAyNzIsIDEyNTE0LCAyNzIsIDEyNTE2LCAyNzIsIDEyNTE4LCAKKyAgICAyNzIsIDEyNTIwLCAyNzIsIDEyNTIxLCAyNzIsIDEyNTIyLCAyNzIsIDEyNTIzLCAyNzIsIDEyNTI0LCAyNzIsIDEyNTI1LCAKKyAgICAyNzIsIDEyNTI3LCAyNzIsIDEyNTMxLCAyNzIsIDEyNDQxLCAyNzIsIDEyNDQyLCAyNzIsIDEyNjQ0LCAyNzIsIDEyNTkzLCAKKyAgICAyNzIsIDEyNTk0LCAyNzIsIDEyNTk1LCAyNzIsIDEyNTk2LCAyNzIsIDEyNTk3LCAyNzIsIDEyNTk4LCAyNzIsIDEyNTk5LCAKKyAgICAyNzIsIDEyNjAwLCAyNzIsIDEyNjAxLCAyNzIsIDEyNjAyLCAyNzIsIDEyNjAzLCAyNzIsIDEyNjA0LCAyNzIsIDEyNjA1LCAKKyAgICAyNzIsIDEyNjA2LCAyNzIsIDEyNjA3LCAyNzIsIDEyNjA4LCAyNzIsIDEyNjA5LCAyNzIsIDEyNjEwLCAyNzIsIDEyNjExLCAKKyAgICAyNzIsIDEyNjEyLCAyNzIsIDEyNjEzLCAyNzIsIDEyNjE0LCAyNzIsIDEyNjE1LCAyNzIsIDEyNjE2LCAyNzIsIDEyNjE3LCAKKyAgICAyNzIsIDEyNjE4LCAyNzIsIDEyNjE5LCAyNzIsIDEyNjIwLCAyNzIsIDEyNjIxLCAyNzIsIDEyNjIyLCAyNzIsIDEyNjIzLCAKKyAgICAyNzIsIDEyNjI0LCAyNzIsIDEyNjI1LCAyNzIsIDEyNjI2LCAyNzIsIDEyNjI3LCAyNzIsIDEyNjI4LCAyNzIsIDEyNjI5LCAKKyAgICAyNzIsIDEyNjMwLCAyNzIsIDEyNjMxLCAyNzIsIDEyNjMyLCAyNzIsIDEyNjMzLCAyNzIsIDEyNjM0LCAyNzIsIDEyNjM1LCAKKyAgICAyNzIsIDEyNjM2LCAyNzIsIDEyNjM3LCAyNzIsIDEyNjM4LCAyNzIsIDEyNjM5LCAyNzIsIDEyNjQwLCAyNzIsIDEyNjQxLCAKKyAgICAyNzIsIDEyNjQyLCAyNzIsIDEyNjQzLCAyNjQsIDE2MiwgMjY0LCAxNjMsIDI2NCwgMTcyLCAyNjQsIDE3NSwgMjY0LCAxNjYsIAorICAgIDI2NCwgMTY1LCAyNjQsIDgzNjEsIDI3MiwgOTQ3NCwgMjcyLCA4NTkyLCAyNzIsIDg1OTMsIDI3MiwgODU5NCwgMjcyLCAKKyAgICA4NTk1LCAyNzIsIDk2MzIsIDI3MiwgOTY3NSwgNTEyLCA2OTc4NSwgNjk4MTgsIDUxMiwgNjk3ODcsIDY5ODE4LCA1MTIsIAorICAgIDY5Nzk3LCA2OTgxOCwgNTEyLCA2OTkzNywgNjk5MjcsIDUxMiwgNjk5MzgsIDY5OTI3LCA1MTIsIDExOTEyNywgMTE5MTQxLCAKKyAgICA1MTIsIDExOTEyOCwgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIAorICAgIDExOTEzNSwgMTE5MTUyLCA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgCisgICAgMTE5MTQxLCA1MTIsIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCAKKyAgICA1MTIsIDExOTIyNywgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIAorICAgIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIAorICAgIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIAorICAgIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIAorICAgIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAKKyAgICAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgCisgICAgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIAorICAgIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgCisgICAgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgCisgICAgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgCisgICAgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgCisgICAgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAKICAgICAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgCiAgICAgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIAogICAgIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAKQEAgLTM1MTAsMjAgKzM1NzksNDIgQEAKICAgICA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCAKICAgICA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCAKICAgICA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCAKLSAgICA1NiwgMjYyLCA1NywgNTE0LCA0OCwgNDYsIDUxNCwgNDgsIDQ0LCA1MTQsIDQ5LCA0NCwgNTE0LCA1MCwgNDQsIDUxNCwgNTEsIAotICAgIDQ0LCA1MTQsIDUyLCA0NCwgNTE0LCA1MywgNDQsIDUxNCwgNTQsIDQ0LCA1MTQsIDU1LCA0NCwgNTE0LCA1NiwgNDQsIDUxNCwgCi0gICAgNTcsIDQ0LCA3NzAsIDQwLCA2NSwgNDEsIDc3MCwgNDAsIDY2LCA0MSwgNzcwLCA0MCwgNjcsIDQxLCA3NzAsIDQwLCA2OCwgCi0gICAgNDEsIDc3MCwgNDAsIDY5LCA0MSwgNzcwLCA0MCwgNzAsIDQxLCA3NzAsIDQwLCA3MSwgNDEsIDc3MCwgNDAsIDcyLCA0MSwgCi0gICAgNzcwLCA0MCwgNzMsIDQxLCA3NzAsIDQwLCA3NCwgNDEsIDc3MCwgNDAsIDc1LCA0MSwgNzcwLCA0MCwgNzYsIDQxLCA3NzAsIAotICAgIDQwLCA3NywgNDEsIDc3MCwgNDAsIDc4LCA0MSwgNzcwLCA0MCwgNzksIDQxLCA3NzAsIDQwLCA4MCwgNDEsIDc3MCwgNDAsIAotICAgIDgxLCA0MSwgNzcwLCA0MCwgODIsIDQxLCA3NzAsIDQwLCA4MywgNDEsIDc3MCwgNDAsIDg0LCA0MSwgNzcwLCA0MCwgODUsIAotICAgIDQxLCA3NzAsIDQwLCA4NiwgNDEsIDc3MCwgNDAsIDg3LCA0MSwgNzcwLCA0MCwgODgsIDQxLCA3NzAsIDQwLCA4OSwgNDEsIAotICAgIDc3MCwgNDAsIDkwLCA0MSwgNzcwLCAxMjMwOCwgODMsIDEyMzA5LCAyNjMsIDY3LCAyNjMsIDgyLCA1MTksIDY3LCA2OCwgCi0gICAgNTE5LCA4NywgOTAsIDI2NiwgNjUsIDI2NiwgNjYsIDI2NiwgNjcsIDI2NiwgNjgsIDI2NiwgNjksIDI2NiwgNzAsIDI2NiwgCi0gICAgNzEsIDI2NiwgNzIsIDI2NiwgNzMsIDI2NiwgNzQsIDI2NiwgNzUsIDI2NiwgNzYsIDI2NiwgNzcsIDI2NiwgNzgsIDI2NiwgCi0gICAgNzksIDI2NiwgODAsIDI2NiwgODEsIDI2NiwgODIsIDI2NiwgODMsIDI2NiwgODQsIDI2NiwgODUsIDI2NiwgODYsIDI2NiwgCi0gICAgODcsIDI2NiwgODgsIDI2NiwgODksIDI2NiwgOTAsIDUyMiwgNzIsIDg2LCA1MjIsIDc3LCA4NiwgNTIyLCA4MywgNjgsIAotICAgIDUyMiwgODMsIDgzLCA3NzgsIDgwLCA4MCwgODYsIDUyMiwgODcsIDY3LCA1MjIsIDY4LCA3NCwgNTIyLCAxMjQxMSwgCisgICAgNTYsIDI2MiwgNTcsIDI2MiwgMTU3NSwgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIAorICAgIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIAorICAgIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgCisgICAgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgCisgICAgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNzIyLCAyNjIsIDE2OTcsIDI2MiwgMTY0NywgMjYyLCAKKyAgICAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAKKyAgICAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIAorICAgIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAorICAgIDI2MiwgMTU4MCwgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgCisgICAgMTU5MywgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgCisgICAgMjYyLCAxNzIyLCAyNjIsIDE2NDcsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAKKyAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKKyAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIAorICAgIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNjk3LCAyNjIsIDE1NzUsIAorICAgIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwNywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgCisgICAgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgCisgICAgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAKKyAgICAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAKKyAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAxNTgxLCAyNjIsIAorICAgIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIAorICAgIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgCisgICAgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDUxNCwgNDgsIDQ2LCAKKyAgICA1MTQsIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIAorICAgIDQ0LCA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCAKKyAgICA3NzAsIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgCisgICAgNDAsIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgCisgICAgNzQsIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgCisgICAgNDEsIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgCisgICAgNzcwLCA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIAorICAgIDQwLCA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgCisgICAgMTIzMDgsIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAKKyAgICAyNjYsIDY2LCAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAKKyAgICAyNjYsIDc0LCAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAKKyAgICAyNjYsIDgyLCAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAKKyAgICAyNjYsIDkwLCA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIAorICAgIDg2LCA1MjIsIDg3LCA2NywgNTE1LCA3NywgNjcsIDUxNSwgNzcsIDY4LCA1MjIsIDY4LCA3NCwgNTIyLCAxMjQxMSwgCiAgICAgMTIzNjMsIDUyMiwgMTI0NjcsIDEyNDY3LCAyNjYsIDEyNDY5LCAyNjYsIDI1MTYzLCAyNjYsIDIzMzgzLCAyNjYsIDIxNDUyLCAKICAgICAyNjYsIDEyNDg3LCAyNjYsIDIwMTA4LCAyNjYsIDIyODEwLCAyNjYsIDM1Mjk5LCAyNjYsIDIyODI1LCAyNjYsIDIwMTMyLCAKICAgICAyNjYsIDI2MTQ0LCAyNjYsIDI4OTYxLCAyNjYsIDI2MDA5LCAyNjYsIDIxMDY5LCAyNjYsIDI0NDYwLCAyNjYsIDIwODc3LCAKQEAgLTM2NDMsNyArMzczNCw3IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgCi0gICAgNDEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQyLCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA0MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDIsIDQzLCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKQEAgLTM2NTEsOSArMzc0Miw5IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDMsIDcsIDcsIDQ0LCA0NSwgCi0gICAgNDYsIDQ3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA0OCwgNDksIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQ0LCA3LCA3LCA0NSwgCisgICAgNDYsIDQ3LCA0OCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgNywgNywgNDksIDcsIDcsIDUwLCA1MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCkBAIC0zNjY0LDcgKzM3NTUsNyBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDUwLCA1MSwgNTIsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDcsIDcsIDcsIDUyLCA1MywgNTQsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIApAQCAtMzgxMyw3ICszOTA0LDcgQEAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBkZWNvbXBfaW5kZXgyW10gPSB7CkBAIC00MjgyLDM1NiArNDM3MywxNjMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NjQ4LCA2NjUwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjUyLCA2NjU0LCA2NjU2LCA2NjU4LCA2NjYwLCA2NjYyLCA2NjY0LCAKKyAgICA2NjY2LCA2NjY4LCA2NjcwLCA2NjcyLCA2Njc0LCA2Njc2LCA2Njc4LCA2NjgwLCA2NjgyLCA2Njg0LCA2Njg2LCA2Njg4LCAKKyAgICA2NjkwLCA2NjkyLCA2Njk0LCA2Njk2LCA2Njk4LCA2NzAwLCA2NzAyLCA2NzA0LCA2NzA2LCA2NzA4LCA2NzEwLCA2NzEyLCAKKyAgICA2NzE0LCA2NzE2LCA2NzE4LCA2NzIwLCA2NzIyLCA2NzI0LCA2NzI2LCA2NzI4LCA2NzMwLCA2NzMyLCA2NzM0LCA2NzM2LCAKKyAgICA2NzM4LCA2NzQwLCA2NzQyLCA2NzQ0LCA2NzQ2LCA2NzQ4LCA2NzUwLCA2NzUyLCA2NzU0LCA2NzU2LCA2NzU4LCA2NzYwLCAKKyAgICA2NzYyLCA2NzY0LCA2NzY2LCA2NzY4LCA2NzcwLCA2NzcyLCA2Nzc0LCA2Nzc2LCA2Nzc4LCA2NzgwLCA2NzgyLCA2Nzg0LCAKKyAgICA2Nzg2LCA2Nzg4LCA2NzkwLCA2NzkyLCA2Nzk0LCA2Nzk2LCA2Nzk4LCA2ODAwLCA2ODAyLCA2ODA0LCA2ODA2LCA2ODA4LCAKKyAgICA2ODEwLCA2ODEyLCA2ODE0LCA2ODE2LCA2ODE4LCA2ODIwLCA2ODIyLCA2ODI0LCA2ODI2LCA2ODI4LCA2ODMwLCA2ODMyLCAKKyAgICA2ODM0LCA2ODM2LCA2ODM4LCA2ODQwLCA2ODQyLCA2ODQ0LCA2ODQ2LCA2ODQ4LCA2ODUwLCA2ODUyLCA2ODU0LCA2ODU2LCAKKyAgICA2ODU4LCA2ODYwLCA2ODYyLCA2ODY0LCA2ODY2LCA2ODY4LCA2ODcwLCA2ODcyLCA2ODc0LCA2ODc2LCA2ODc4LCA2ODgwLCAKKyAgICA2ODgyLCA2ODg0LCA2ODg2LCA2ODg4LCA2ODkwLCA2ODkyLCA2ODk0LCA2ODk2LCA2ODk4LCA2OTAwLCA2OTAyLCA2OTA0LCAKKyAgICA2OTA2LCA2OTA4LCA2OTEwLCA2OTEyLCA2OTE0LCA2OTE2LCA2OTE4LCA2OTIwLCA2OTIyLCA2OTI0LCA2OTI2LCA2OTI4LCAKKyAgICA2OTMwLCA2OTMyLCA2OTM0LCA2OTM2LCA2OTM4LCA2OTQwLCA2OTQyLCA2OTQ0LCA2OTQ2LCA2OTQ4LCA2OTUwLCA2OTUyLCAKKyAgICA2OTU0LCA2OTU2LCA2OTU4LCA2OTYwLCA2OTYyLCA2OTY0LCA2OTY2LCA2OTY4LCA2OTcwLCA2OTcyLCA2OTc0LCA2OTc2LCAKKyAgICA2OTc4LCA2OTgwLCA2OTgyLCA2OTg0LCA2OTg2LCA2OTg4LCA2OTkwLCA2OTkyLCA2OTk0LCA2OTk2LCA2OTk4LCA3MDAwLCAKKyAgICA3MDAyLCA3MDA0LCA3MDA2LCA3MDA4LCA3MDEwLCA3MDEyLCA3MDE0LCA3MDE2LCA3MDE4LCA3MDIwLCA3MDIyLCA3MDI0LCAKKyAgICA3MDI2LCA3MDI4LCA3MDMwLCA3MDMyLCA3MDM0LCA3MDM2LCA3MDM4LCA3MDQwLCA3MDQyLCA3MDQ0LCA3MDQ2LCA3MDQ4LCAKKyAgICA3MDUwLCA3MDUyLCA3MDU0LCA3MDU2LCA3MDU4LCA3MDYwLCA3MDYyLCA3MDY0LCA3MDY2LCA3MDY4LCA3MDcwLCA3MDcyLCAKKyAgICA3MDc0LCA3MDc2LCA3MDc4LCA3MDgwLCA3MDgyLCA3MDg0LCA3MDg2LCA3MDg4LCA3MDkwLCA3MDkyLCA3MDk0LCA3MDk2LCAKKyAgICA3MDk4LCA3MTAwLCA3MTAyLCA3MTA0LCA3MTA2LCA3MTA4LCA3MTEwLCA3MTEyLCA3MTE0LCA3MTE2LCA3MTE4LCA3MTIwLCAKKyAgICA3MTIyLCA3MTI0LCA3MTI2LCA3MTI4LCA3MTMwLCA3MTMyLCA3MTM0LCA3MTM2LCA3MTM4LCA3MTQwLCA3MTQyLCA3MTQ0LCAKKyAgICA3MTQ2LCA3MTQ4LCA3MTUwLCA3MTUyLCA3MTU0LCA3MTU2LCA3MTU4LCA3MTYwLCA3MTYyLCA3MTY0LCA3MTY2LCA3MTY4LCAKKyAgICA3MTcwLCA3MTcyLCA3MTc0LCA3MTc2LCA3MTc4LCA3MTgwLCA3MTgyLCA3MTg0LCA3MTg2LCA3MTg4LCA3MTkwLCAwLCAwLCAKKyAgICA3MTkyLCAwLCA3MTk0LCAwLCAwLCA3MTk2LCA3MTk4LCA3MjAwLCA3MjAyLCA3MjA0LCA3MjA2LCA3MjA4LCA3MjEwLCAKKyAgICA3MjEyLCA3MjE0LCAwLCA3MjE2LCAwLCA3MjE4LCAwLCAwLCA3MjIwLCA3MjIyLCAwLCAwLCAwLCA3MjI0LCA3MjI2LCAKKyAgICA3MjI4LCA3MjMwLCA3MjMyLCA3MjM0LCA3MjM2LCA3MjM4LCA3MjQwLCA3MjQyLCA3MjQ0LCA3MjQ2LCA3MjQ4LCA3MjUwLCAKKyAgICA3MjUyLCA3MjU0LCA3MjU2LCA3MjU4LCA3MjYwLCA3MjYyLCA3MjY0LCA3MjY2LCA3MjY4LCA3MjcwLCA3MjcyLCA3Mjc0LCAKKyAgICA3Mjc2LCA3Mjc4LCA3MjgwLCA3MjgyLCA3Mjg0LCA3Mjg2LCA3Mjg4LCA3MjkwLCA3MjkyLCA3Mjk0LCA3Mjk2LCA3Mjk4LCAKKyAgICA3MzAwLCA3MzAyLCA3MzA0LCA3MzA2LCA3MzA4LCA3MzEwLCA3MzEyLCA3MzE0LCA3MzE2LCA3MzE4LCA3MzIwLCA3MzIyLCAKKyAgICA3MzI0LCA3MzI2LCA3MzI4LCA3MzMwLCA3MzMyLCA3MzM0LCA3MzM2LCA3MzM4LCA3MzQwLCA3MzQyLCA3MzQ0LCA3MzQ2LCAKKyAgICA3MzQ4LCA3MzUwLCA3MzUyLCA3MzU0LCA3MzU2LCA3MzU4LCAwLCAwLCA3MzYwLCA3MzYyLCA3MzY0LCA3MzY2LCA3MzY4LCAKKyAgICA3MzcwLCA3MzcyLCA3Mzc0LCA3Mzc2LCA3Mzc4LCA3MzgwLCA3MzgyLCA3Mzg0LCA3Mzg2LCA3Mzg4LCA3MzkwLCA3MzkyLCAKKyAgICA3Mzk0LCA3Mzk2LCA3Mzk4LCA3NDAwLCA3NDAyLCA3NDA0LCA3NDA2LCA3NDA4LCA3NDEwLCA3NDEyLCA3NDE0LCA3NDE2LCAKKyAgICA3NDE4LCA3NDIwLCA3NDIyLCA3NDI0LCA3NDI2LCA3NDI4LCA3NDMwLCA3NDMyLCA3NDM0LCA3NDM2LCA3NDM4LCA3NDQwLCAKKyAgICA3NDQyLCA3NDQ0LCA3NDQ2LCA3NDQ4LCA3NDUwLCA3NDUyLCA3NDU0LCA3NDU2LCA3NDU4LCA3NDYwLCA3NDYyLCA3NDY0LCAKKyAgICA3NDY2LCA3NDY4LCA3NDcwLCA3NDcyLCA3NDc0LCA3NDc2LCA3NDc4LCA3NDgwLCA3NDgyLCA3NDg0LCA3NDg2LCA3NDg4LCAKKyAgICA3NDkwLCA3NDkyLCA3NDk0LCA3NDk2LCA3NDk4LCA3NTAwLCA3NTAyLCA3NTA0LCA3NTA2LCA3NTA4LCA3NTEwLCA3NTEyLCAKKyAgICA3NTE0LCA3NTE2LCA3NTE4LCA3NTIwLCA3NTIyLCA3NTI0LCA3NTI2LCA3NTI4LCA3NTMwLCA3NTMyLCA3NTM0LCA3NTM2LCAKKyAgICA3NTM4LCA3NTQwLCA3NTQyLCA3NTQ0LCA3NTQ2LCA3NTQ4LCA3NTUwLCA3NTUyLCA3NTU0LCA3NTU2LCA3NTU4LCA3NTYwLCAKKyAgICA3NTYyLCA3NTY0LCA3NTY2LCA3NTY4LCA3NTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjQ4LCA2NjUwLCA2NjUyLCA2NjU0LCA2NjU2LCA2NjU4LCA2NjYwLCA2NjYyLCAKLSAgICA2NjY0LCA2NjY2LCA2NjY4LCA2NjcwLCA2NjcyLCA2Njc0LCA2Njc2LCA2Njc4LCA2NjgwLCA2NjgyLCA2Njg0LCA2Njg2LCAKLSAgICA2Njg4LCA2NjkwLCA2NjkyLCA2Njk0LCA2Njk2LCA2Njk4LCA2NzAwLCA2NzAyLCA2NzA0LCA2NzA2LCA2NzA4LCA2NzEwLCAKLSAgICA2NzEyLCA2NzE0LCA2NzE2LCA2NzE4LCA2NzIwLCA2NzIyLCA2NzI0LCA2NzI2LCA2NzI4LCA2NzMwLCA2NzMyLCA2NzM0LCAKLSAgICA2NzM2LCA2NzM4LCA2NzQwLCA2NzQyLCA2NzQ0LCA2NzQ2LCA2NzQ4LCA2NzUwLCA2NzUyLCA2NzU0LCA2NzU2LCA2NzU4LCAKLSAgICA2NzYwLCA2NzYyLCA2NzY0LCA2NzY2LCA2NzY4LCA2NzcwLCA2NzcyLCA2Nzc0LCA2Nzc2LCA2Nzc4LCA2NzgwLCA2NzgyLCAKLSAgICA2Nzg0LCA2Nzg2LCA2Nzg4LCA2NzkwLCA2NzkyLCA2Nzk0LCA2Nzk2LCA2Nzk4LCA2ODAwLCA2ODAyLCA2ODA0LCA2ODA2LCAKLSAgICA2ODA4LCA2ODEwLCA2ODEyLCA2ODE0LCA2ODE2LCA2ODE4LCA2ODIwLCA2ODIyLCA2ODI0LCA2ODI2LCA2ODI4LCA2ODMwLCAKLSAgICA2ODMyLCA2ODM0LCA2ODM2LCA2ODM4LCA2ODQwLCA2ODQyLCA2ODQ0LCA2ODQ2LCA2ODQ4LCA2ODUwLCA2ODUyLCA2ODU0LCAKLSAgICA2ODU2LCA2ODU4LCA2ODYwLCA2ODYyLCA2ODY0LCA2ODY2LCA2ODY4LCA2ODcwLCA2ODcyLCA2ODc0LCA2ODc2LCA2ODc4LCAKLSAgICA2ODgwLCA2ODgyLCA2ODg0LCA2ODg2LCA2ODg4LCA2ODkwLCA2ODkyLCA2ODk0LCA2ODk2LCA2ODk4LCA2OTAwLCA2OTAyLCAKLSAgICA2OTA0LCA2OTA2LCA2OTA4LCA2OTEwLCA2OTEyLCA2OTE0LCA2OTE2LCA2OTE4LCA2OTIwLCA2OTIyLCA2OTI0LCA2OTI2LCAKLSAgICA2OTI4LCA2OTMwLCA2OTMyLCA2OTM0LCA2OTM2LCA2OTM4LCA2OTQwLCA2OTQyLCA2OTQ0LCA2OTQ2LCA2OTQ4LCA2OTUwLCAKLSAgICA2OTUyLCA2OTU0LCA2OTU2LCA2OTU4LCA2OTYwLCA2OTYyLCA2OTY0LCA2OTY2LCA2OTY4LCA2OTcwLCA2OTcyLCA2OTc0LCAKLSAgICA2OTc2LCA2OTc4LCA2OTgwLCA2OTgyLCA2OTg0LCA2OTg2LCA2OTg4LCA2OTkwLCA2OTkyLCA2OTk0LCA2OTk2LCA2OTk4LCAKLSAgICA3MDAwLCA3MDAyLCA3MDA0LCA3MDA2LCA3MDA4LCA3MDEwLCA3MDEyLCA3MDE0LCA3MDE2LCA3MDE4LCA3MDIwLCA3MDIyLCAKLSAgICA3MDI0LCA3MDI2LCA3MDI4LCA3MDMwLCA3MDMyLCA3MDM0LCA3MDM2LCA3MDM4LCA3MDQwLCA3MDQyLCA3MDQ0LCA3MDQ2LCAKLSAgICA3MDQ4LCA3MDUwLCA3MDUyLCA3MDU0LCA3MDU2LCA3MDU4LCA3MDYwLCA3MDYyLCA3MDY0LCA3MDY2LCA3MDY4LCA3MDcwLCAKLSAgICA3MDcyLCA3MDc0LCA3MDc2LCA3MDc4LCA3MDgwLCA3MDgyLCA3MDg0LCA3MDg2LCA3MDg4LCA3MDkwLCA3MDkyLCA3MDk0LCAKLSAgICA3MDk2LCA3MDk4LCA3MTAwLCA3MTAyLCA3MTA0LCA3MTA2LCA3MTA4LCA3MTEwLCA3MTEyLCA3MTE0LCA3MTE2LCA3MTE4LCAKLSAgICA3MTIwLCA3MTIyLCA3MTI0LCA3MTI2LCA3MTI4LCA3MTMwLCA3MTMyLCA3MTM0LCA3MTM2LCA3MTM4LCA3MTQwLCA3MTQyLCAKLSAgICA3MTQ0LCA3MTQ2LCA3MTQ4LCA3MTUwLCA3MTUyLCA3MTU0LCA3MTU2LCA3MTU4LCA3MTYwLCA3MTYyLCA3MTY0LCA3MTY2LCAKLSAgICA3MTY4LCA3MTcwLCA3MTcyLCA3MTc0LCA3MTc2LCA3MTc4LCA3MTgwLCA3MTgyLCA3MTg0LCA3MTg2LCAwLCAwLCA3MTg4LCAKLSAgICAwLCA3MTkwLCAwLCAwLCA3MTkyLCA3MTk0LCA3MTk2LCA3MTk4LCA3MjAwLCA3MjAyLCA3MjA0LCA3MjA2LCA3MjA4LCAKLSAgICA3MjEwLCAwLCA3MjEyLCAwLCA3MjE0LCAwLCAwLCA3MjE2LCA3MjE4LCAwLCAwLCAwLCA3MjIwLCA3MjIyLCA3MjI0LCAKLSAgICA3MjI2LCAwLCAwLCA3MjI4LCA3MjMwLCA3MjMyLCA3MjM0LCA3MjM2LCA3MjM4LCA3MjQwLCA3MjQyLCA3MjQ0LCA3MjQ2LCAKLSAgICA3MjQ4LCA3MjUwLCA3MjUyLCA3MjU0LCA3MjU2LCA3MjU4LCA3MjYwLCA3MjYyLCA3MjY0LCA3MjY2LCA3MjY4LCA3MjcwLCAKLSAgICA3MjcyLCA3Mjc0LCA3Mjc2LCA3Mjc4LCA3MjgwLCA3MjgyLCA3Mjg0LCA3Mjg2LCA3Mjg4LCA3MjkwLCA3MjkyLCA3Mjk0LCAKLSAgICA3Mjk2LCA3Mjk4LCA3MzAwLCA3MzAyLCA3MzA0LCA3MzA2LCA3MzA4LCA3MzEwLCA3MzEyLCA3MzE0LCA3MzE2LCA3MzE4LCAKLSAgICA3MzIwLCA3MzIyLCA3MzI0LCA3MzI2LCA3MzI4LCA3MzMwLCA3MzMyLCA3MzM0LCA3MzM2LCA3MzM4LCA3MzQwLCA3MzQyLCAKLSAgICA3MzQ0LCA3MzQ2LCA3MzQ4LCA3MzUwLCAwLCAwLCA3MzUyLCA3MzU0LCA3MzU2LCA3MzU4LCA3MzYwLCA3MzYyLCA3MzY0LCAKLSAgICA3MzY2LCA3MzY4LCA3MzcwLCA3MzcyLCA3Mzc0LCA3Mzc2LCA3Mzc4LCA3MzgwLCA3MzgyLCA3Mzg0LCA3Mzg2LCA3Mzg4LCAKLSAgICA3MzkwLCA3MzkyLCA3Mzk0LCA3Mzk2LCA3Mzk4LCA3NDAwLCA3NDAyLCA3NDA0LCA3NDA2LCA3NDA4LCA3NDEwLCA3NDEyLCAKLSAgICA3NDE0LCA3NDE2LCA3NDE4LCA3NDIwLCA3NDIyLCA3NDI0LCA3NDI2LCA3NDI4LCA3NDMwLCA3NDMyLCA3NDM0LCA3NDM2LCAKLSAgICA3NDM4LCA3NDQwLCA3NDQyLCA3NDQ0LCA3NDQ2LCA3NDQ4LCA3NDUwLCA3NDUyLCA3NDU0LCA3NDU2LCA3NDU4LCA3NDYwLCAKLSAgICA3NDYyLCA3NDY0LCA3NDY2LCA3NDY4LCA3NDcwLCA3NDcyLCA3NDc0LCA3NDc2LCA3NDc4LCA3NDgwLCA3NDgyLCA3NDg0LCAKLSAgICA3NDg2LCA3NDg4LCA3NDkwLCA3NDkyLCA3NDk0LCA3NDk2LCA3NDk4LCA3NTAwLCA3NTAyLCA3NTA0LCA3NTA2LCA3NTA4LCAKLSAgICA3NTEwLCA3NTEyLCA3NTE0LCA3NTE2LCA3NTE4LCA3NTIwLCA3NTIyLCA3NTI0LCA3NTI2LCA3NTI4LCA3NTMwLCA3NTMyLCAKLSAgICA3NTM0LCA3NTM2LCA3NTM4LCA3NTQwLCA3NTQyLCA3NTQ0LCA3NTQ2LCA3NTQ4LCA3NTUwLCA3NTUyLCA3NTU0LCA3NTU2LCAKLSAgICA3NTU4LCA3NTYwLCA3NTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTY0LCA3NTY3LCAKLSAgICA3NTcwLCA3NTczLCA3NTc3LCA3NTgxLCA3NTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTg3LCAKLSAgICA3NTkwLCA3NTkzLCA3NTk2LCA3NTk5LCAwLCAwLCAwLCAwLCAwLCA3NjAyLCAwLCA3NjA1LCA3NjA4LCA3NjEwLCA3NjEyLCAKLSAgICA3NjE0LCA3NjE2LCA3NjE4LCA3NjIwLCA3NjIyLCA3NjI0LCA3NjI2LCA3NjI4LCA3NjMxLCA3NjM0LCA3NjM3LCA3NjQwLCAKLSAgICA3NjQzLCA3NjQ2LCA3NjQ5LCA3NjUyLCA3NjU1LCA3NjU4LCA3NjYxLCA3NjY0LCAwLCA3NjY3LCA3NjcwLCA3NjczLCAKLSAgICA3Njc2LCA3Njc5LCAwLCA3NjgyLCAwLCA3Njg1LCA3Njg4LCAwLCA3NjkxLCA3Njk0LCAwLCA3Njk3LCA3NzAwLCA3NzAzLCAKLSAgICA3NzA2LCA3NzA5LCA3NzEyLCA3NzE1LCA3NzE4LCA3NzIxLCA3NzI0LCA3NzI3LCA3NzI5LCA3NzMxLCA3NzMzLCA3NzM1LCAKLSAgICA3NzM3LCA3NzM5LCA3NzQxLCA3NzQzLCA3NzQ1LCA3NzQ3LCA3NzQ5LCA3NzUxLCA3NzUzLCA3NzU1LCA3NzU3LCA3NzU5LCAKLSAgICA3NzYxLCA3NzYzLCA3NzY1LCA3NzY3LCA3NzY5LCA3NzcxLCA3NzczLCA3Nzc1LCA3Nzc3LCA3Nzc5LCA3NzgxLCA3NzgzLCAKLSAgICA3Nzg1LCA3Nzg3LCA3Nzg5LCA3NzkxLCA3NzkzLCA3Nzk1LCA3Nzk3LCA3Nzk5LCA3ODAxLCA3ODAzLCA3ODA1LCA3ODA3LCAKLSAgICA3ODA5LCA3ODExLCA3ODEzLCA3ODE1LCA3ODE3LCA3ODE5LCA3ODIxLCA3ODIzLCA3ODI1LCA3ODI3LCA3ODI5LCA3ODMxLCAKLSAgICA3ODMzLCA3ODM1LCA3ODM3LCA3ODM5LCA3ODQxLCA3ODQzLCA3ODQ1LCA3ODQ3LCA3ODQ5LCA3ODUxLCA3ODUzLCA3ODU1LCAKLSAgICA3ODU3LCA3ODU5LCA3ODYxLCA3ODYzLCA3ODY1LCA3ODY3LCA3ODY5LCA3ODcxLCA3ODczLCA3ODc1LCA3ODc3LCA3ODc5LCAKLSAgICA3ODgxLCA3ODgzLCA3ODg1LCA3ODg3LCA3ODg5LCA3ODkxLCA3ODkzLCA3ODk1LCA3ODk3LCA3ODk5LCA3OTAxLCA3OTAzLCAKLSAgICA3OTA1LCA3OTA3LCA3OTA5LCA3OTExLCA3OTEzLCA3OTE1LCA3OTE3LCA3OTE5LCA3OTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NTcyLCA3NTc1LCA3NTc4LCA3NTgxLCA3NTg1LCA3NTg5LCA3NTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3NTk1LCA3NTk4LCA3NjAxLCA3NjA0LCA3NjA3LCAwLCAwLCAwLCAwLCAwLCA3NjEwLCAwLCA3NjEzLCA3NjE2LCAKKyAgICA3NjE4LCA3NjIwLCA3NjIyLCA3NjI0LCA3NjI2LCA3NjI4LCA3NjMwLCA3NjMyLCA3NjM0LCA3NjM2LCA3NjM5LCA3NjQyLCAKKyAgICA3NjQ1LCA3NjQ4LCA3NjUxLCA3NjU0LCA3NjU3LCA3NjYwLCA3NjYzLCA3NjY2LCA3NjY5LCA3NjcyLCAwLCA3Njc1LCAKKyAgICA3Njc4LCA3NjgxLCA3Njg0LCA3Njg3LCAwLCA3NjkwLCAwLCA3NjkzLCA3Njk2LCAwLCA3Njk5LCA3NzAyLCAwLCA3NzA1LCAKKyAgICA3NzA4LCA3NzExLCA3NzE0LCA3NzE3LCA3NzIwLCA3NzIzLCA3NzI2LCA3NzI5LCA3NzMyLCA3NzM1LCA3NzM3LCA3NzM5LCAKKyAgICA3NzQxLCA3NzQzLCA3NzQ1LCA3NzQ3LCA3NzQ5LCA3NzUxLCA3NzUzLCA3NzU1LCA3NzU3LCA3NzU5LCA3NzYxLCA3NzYzLCAKKyAgICA3NzY1LCA3NzY3LCA3NzY5LCA3NzcxLCA3NzczLCA3Nzc1LCA3Nzc3LCA3Nzc5LCA3NzgxLCA3NzgzLCA3Nzg1LCA3Nzg3LCAKKyAgICA3Nzg5LCA3NzkxLCA3NzkzLCA3Nzk1LCA3Nzk3LCA3Nzk5LCA3ODAxLCA3ODAzLCA3ODA1LCA3ODA3LCA3ODA5LCA3ODExLCAKKyAgICA3ODEzLCA3ODE1LCA3ODE3LCA3ODE5LCA3ODIxLCA3ODIzLCA3ODI1LCA3ODI3LCA3ODI5LCA3ODMxLCA3ODMzLCA3ODM1LCAKKyAgICA3ODM3LCA3ODM5LCA3ODQxLCA3ODQzLCA3ODQ1LCA3ODQ3LCA3ODQ5LCA3ODUxLCA3ODUzLCA3ODU1LCA3ODU3LCA3ODU5LCAKKyAgICA3ODYxLCA3ODYzLCA3ODY1LCA3ODY3LCA3ODY5LCA3ODcxLCA3ODczLCA3ODc1LCA3ODc3LCA3ODc5LCA3ODgxLCA3ODgzLCAKKyAgICA3ODg1LCA3ODg3LCA3ODg5LCA3ODkxLCA3ODkzLCA3ODk1LCA3ODk3LCA3ODk5LCA3OTAxLCA3OTAzLCA3OTA1LCA3OTA3LCAKKyAgICA3OTA5LCA3OTExLCA3OTEzLCA3OTE1LCA3OTE3LCA3OTE5LCA3OTIxLCA3OTIzLCA3OTI1LCA3OTI3LCA3OTI5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3OTIzLCA3OTI1LCA3OTI3LCA3OTI5LCA3OTMxLCA3OTMzLCA3OTM1LCA3OTM3LCA3OTM5LCA3OTQxLCAKLSAgICA3OTQzLCA3OTQ1LCA3OTQ3LCA3OTQ5LCA3OTUxLCA3OTUzLCA3OTU1LCA3OTU3LCA3OTU5LCA3OTYxLCA3OTYzLCA3OTY1LCAKLSAgICA3OTY3LCA3OTY5LCA3OTcyLCA3OTc1LCA3OTc4LCA3OTgxLCA3OTg0LCA3OTg3LCA3OTkwLCA3OTkzLCA3OTk2LCA3OTk5LCAKLSAgICA4MDAyLCA4MDA1LCA4MDA4LCA4MDExLCA4MDE0LCA4MDE3LCA4MDIwLCA4MDIzLCA4MDI1LCA4MDI3LCA4MDI5LCA4MDMxLCAKLSAgICA4MDM0LCA4MDM3LCA4MDQwLCA4MDQzLCA4MDQ2LCA4MDQ5LCA4MDUyLCA4MDU1LCA4MDU4LCA4MDYxLCA4MDY0LCA4MDY3LCAKLSAgICA4MDcwLCA4MDczLCA4MDc2LCA4MDc5LCA4MDgyLCA4MDg1LCA4MDg4LCA4MDkxLCA4MDk0LCA4MDk3LCA4MTAwLCA4MTAzLCAKLSAgICA4MTA2LCA4MTA5LCA4MTEyLCA4MTE1LCA4MTE4LCA4MTIxLCA4MTI0LCA4MTI3LCA4MTMwLCA4MTMzLCA4MTM2LCA4MTM5LCAKLSAgICA4MTQyLCA4MTQ1LCA4MTQ4LCA4MTUxLCA4MTU0LCA4MTU3LCA4MTYwLCA4MTYzLCA4MTY2LCA4MTY5LCA4MTcyLCA4MTc1LCAKLSAgICA4MTc4LCA4MTgxLCA4MTg0LCA4MTg3LCA4MTkwLCA4MTkzLCA4MTk2LCA4MTk5LCA4MjAyLCA4MjA1LCA4MjA4LCA4MjExLCAKLSAgICA4MjE0LCA4MjE3LCA4MjIwLCA4MjIzLCA4MjI2LCA4MjI5LCA4MjMyLCA4MjM1LCA4MjM4LCA4MjQxLCA4MjQ0LCA4MjQ3LCAKLSAgICA4MjUwLCA4MjUzLCA4MjU2LCA4MjU5LCA4MjYyLCA4MjY1LCA4MjY4LCA4MjcxLCA4Mjc0LCA4Mjc3LCA4MjgwLCA4MjgzLCAKLSAgICA4Mjg2LCA4Mjg5LCA4MjkyLCA4Mjk1LCA4Mjk4LCA4MzAxLCA4MzA0LCA4MzA3LCA4MzEwLCA4MzEzLCA4MzE3LCA4MzIxLCAKLSAgICA4MzI1LCA4MzI5LCA4MzMzLCA4MzM3LCA4MzQwLCA4MzQzLCA4MzQ2LCA4MzQ5LCA4MzUyLCA4MzU1LCA4MzU4LCA4MzYxLCAKLSAgICA4MzY0LCA4MzY3LCA4MzcwLCA4MzczLCA4Mzc2LCA4Mzc5LCA4MzgyLCA4Mzg1LCA4Mzg4LCA4MzkxLCA4Mzk0LCA4Mzk3LCAKLSAgICA4NDAwLCA4NDAzLCA4NDA2LCA4NDA5LCA4NDEyLCA4NDE1LCA4NDE4LCA4NDIxLCA4NDI0LCA4NDI3LCA4NDMwLCA4NDMzLCAKLSAgICA4NDM2LCA4NDM5LCA4NDQyLCA4NDQ1LCA4NDQ4LCA4NDUxLCA4NDU0LCA4NDU3LCA4NDYwLCA4NDYzLCA4NDY2LCA4NDY5LCAKLSAgICA4NDcyLCA4NDc1LCA4NDc4LCA4NDgxLCA4NDg0LCA4NDg3LCA4NDkwLCA4NDkzLCA4NDk2LCA4NDk5LCA4NTAyLCA4NTA1LCAKLSAgICA4NTA4LCA4NTExLCA4NTE0LCA4NTE3LCA4NTIwLCA4NTIzLCA4NTI2LCA4NTI5LCA4NTMyLCA4NTM1LCA4NTM4LCA4NTQxLCAKLSAgICA4NTQ0LCA4NTQ3LCA4NTUwLCA4NTUzLCA4NTU2LCA4NTU5LCA4NTYyLCA4NTY1LCA4NTY4LCA4NTcxLCA4NTc0LCA4NTc3LCAKLSAgICA4NTgwLCA4NTgzLCA4NTg2LCA4NTg5LCA4NTkyLCA4NTk1LCA4NTk4LCA4NjAxLCA4NjA0LCA4NjA3LCA4NjEwLCA4NjEzLCAKLSAgICA4NjE2LCA4NjE5LCA4NjIyLCA4NjI1LCA4NjI4LCA4NjMxLCA4NjM0LCA4NjM3LCA4NjQwLCA4NjQzLCA4NjQ2LCA4NjQ5LCAKLSAgICA4NjUyLCA4NjU1LCA4NjU4LCA4NjYxLCA4NjY0LCA4NjY3LCA4NjcwLCA4NjczLCA4Njc2LCA4Njc5LCA4NjgyLCA4Njg1LCAKLSAgICA4Njg4LCA4NjkxLCA4Njk0LCA4Njk3LCA4NzAwLCA4NzAzLCA4NzA2LCA4NzA5LCA4NzEyLCA4NzE1LCA4NzE4LCA4NzIxLCAKLSAgICA4NzI0LCA4NzI3LCA4NzMwLCA4NzMzLCA4NzM2LCA4NzM5LCA4NzQyLCA4NzQ1LCA4NzQ4LCA4NzUxLCA4NzU0LCA4NzU3LCAKLSAgICA4NzYwLCA4NzYzLCA4NzY3LCA4NzcxLCA4Nzc1LCA4Nzc4LCA4NzgxLCA4Nzg0LCA4Nzg3LCA4NzkwLCA4NzkzLCA4Nzk2LCAKLSAgICA4Nzk5LCA4ODAyLCA4ODA1LCA4ODA4LCA4ODExLCA4ODE0LCA4ODE3LCA4ODIwLCA4ODIzLCA4ODI2LCA4ODI5LCA4ODMyLCAKLSAgICA4ODM1LCA4ODM4LCA4ODQxLCA4ODQ0LCA4ODQ3LCA4ODUwLCA4ODUzLCA4ODU2LCA4ODU5LCA4ODYyLCA4ODY1LCA4ODY4LCAKLSAgICA4ODcxLCA4ODc0LCA4ODc3LCA4ODgwLCA4ODgzLCA4ODg2LCA4ODg5LCA4ODkyLCA4ODk1LCA4ODk4LCA4OTAxLCA4OTA0LCAKLSAgICA4OTA3LCA4OTEwLCA4OTEzLCA4OTE2LCA4OTE5LCA4OTIyLCA4OTI1LCA4OTI4LCA4OTMxLCA4OTM0LCA4OTM3LCA4OTQwLCAKLSAgICA4OTQzLCA4OTQ2LCA4OTQ5LCA4OTUyLCA4OTU1LCA4OTU4LCA4OTYxLCA4OTY0LCA4OTY3LCA4OTcwLCA4OTczLCA4OTc2LCAKLSAgICA4OTc5LCA4OTgyLCA4OTg1LCA4OTg4LCA4OTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4OTk0LCA4OTk4LCA5MDAyLCA5MDA2LCA5MDEwLCA5MDE0LCA5MDE4LCA5MDIyLCA5MDI2LCA5MDMwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTMxLCA3OTMzLCA3OTM1LCA3OTM3LCA3OTM5LCA3OTQxLCA3OTQzLCA3OTQ1LCAKKyAgICA3OTQ3LCA3OTQ5LCA3OTUxLCA3OTUzLCA3OTU1LCA3OTU3LCA3OTU5LCA3OTYxLCA3OTYzLCA3OTY1LCA3OTY3LCA3OTY5LCAKKyAgICA3OTcxLCA3OTczLCA3OTc1LCA3OTc3LCA3OTgwLCA3OTgzLCA3OTg2LCA3OTg5LCA3OTkyLCA3OTk1LCA3OTk4LCA4MDAxLCAKKyAgICA4MDA0LCA4MDA3LCA4MDEwLCA4MDEzLCA4MDE2LCA4MDE5LCA4MDIyLCA4MDI1LCA4MDI4LCA4MDMxLCA4MDMzLCA4MDM1LCAKKyAgICA4MDM3LCA4MDM5LCA4MDQyLCA4MDQ1LCA4MDQ4LCA4MDUxLCA4MDU0LCA4MDU3LCA4MDYwLCA4MDYzLCA4MDY2LCA4MDY5LCAKKyAgICA4MDcyLCA4MDc1LCA4MDc4LCA4MDgxLCA4MDg0LCA4MDg3LCA4MDkwLCA4MDkzLCA4MDk2LCA4MDk5LCA4MTAyLCA4MTA1LCAKKyAgICA4MTA4LCA4MTExLCA4MTE0LCA4MTE3LCA4MTIwLCA4MTIzLCA4MTI2LCA4MTI5LCA4MTMyLCA4MTM1LCA4MTM4LCA4MTQxLCAKKyAgICA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTUzLCA4MTU2LCA4MTU5LCA4MTYyLCA4MTY1LCA4MTY4LCA4MTcxLCA4MTc0LCA4MTc3LCAKKyAgICA4MTgwLCA4MTgzLCA4MTg2LCA4MTg5LCA4MTkyLCA4MTk1LCA4MTk4LCA4MjAxLCA4MjA0LCA4MjA3LCA4MjEwLCA4MjEzLCAKKyAgICA4MjE2LCA4MjE5LCA4MjIyLCA4MjI1LCA4MjI4LCA4MjMxLCA4MjM0LCA4MjM3LCA4MjQwLCA4MjQzLCA4MjQ2LCA4MjQ5LCAKKyAgICA4MjUyLCA4MjU1LCA4MjU4LCA4MjYxLCA4MjY0LCA4MjY3LCA4MjcwLCA4MjczLCA4Mjc2LCA4Mjc5LCA4MjgyLCA4Mjg1LCAKKyAgICA4Mjg4LCA4MjkxLCA4Mjk0LCA4Mjk3LCA4MzAwLCA4MzAzLCA4MzA2LCA4MzA5LCA4MzEyLCA4MzE1LCA4MzE4LCA4MzIxLCAKKyAgICA4MzI1LCA4MzI5LCA4MzMzLCA4MzM3LCA4MzQxLCA4MzQ1LCA4MzQ4LCA4MzUxLCA4MzU0LCA4MzU3LCA4MzYwLCA4MzYzLCAKKyAgICA4MzY2LCA4MzY5LCA4MzcyLCA4Mzc1LCA4Mzc4LCA4MzgxLCA4Mzg0LCA4Mzg3LCA4MzkwLCA4MzkzLCA4Mzk2LCA4Mzk5LCAKKyAgICA4NDAyLCA4NDA1LCA4NDA4LCA4NDExLCA4NDE0LCA4NDE3LCA4NDIwLCA4NDIzLCA4NDI2LCA4NDI5LCA4NDMyLCA4NDM1LCAKKyAgICA4NDM4LCA4NDQxLCA4NDQ0LCA4NDQ3LCA4NDUwLCA4NDUzLCA4NDU2LCA4NDU5LCA4NDYyLCA4NDY1LCA4NDY4LCA4NDcxLCAKKyAgICA4NDc0LCA4NDc3LCA4NDgwLCA4NDgzLCA4NDg2LCA4NDg5LCA4NDkyLCA4NDk1LCA4NDk4LCA4NTAxLCA4NTA0LCA4NTA3LCAKKyAgICA4NTEwLCA4NTEzLCA4NTE2LCA4NTE5LCA4NTIyLCA4NTI1LCA4NTI4LCA4NTMxLCA4NTM0LCA4NTM3LCA4NTQwLCA4NTQzLCAKKyAgICA4NTQ2LCA4NTQ5LCA4NTUyLCA4NTU1LCA4NTU4LCA4NTYxLCA4NTY0LCA4NTY3LCA4NTcwLCA4NTczLCA4NTc2LCA4NTc5LCAKKyAgICA4NTgyLCA4NTg1LCA4NTg4LCA4NTkxLCA4NTk0LCA4NTk3LCA4NjAwLCA4NjAzLCA4NjA2LCA4NjA5LCA4NjEyLCA4NjE1LCAKKyAgICA4NjE4LCA4NjIxLCA4NjI0LCA4NjI3LCA4NjMwLCA4NjMzLCA4NjM2LCA4NjM5LCA4NjQyLCA4NjQ1LCA4NjQ4LCA4NjUxLCAKKyAgICA4NjU0LCA4NjU3LCA4NjYwLCA4NjYzLCA4NjY2LCA4NjY5LCA4NjcyLCA4Njc1LCA4Njc4LCA4NjgxLCA4Njg0LCA4Njg3LCAKKyAgICA4NjkwLCA4NjkzLCA4Njk2LCA4Njk5LCA4NzAyLCA4NzA1LCA4NzA4LCA4NzExLCA4NzE0LCA4NzE3LCA4NzIwLCA4NzIzLCAKKyAgICA4NzI2LCA4NzI5LCA4NzMyLCA4NzM1LCA4NzM4LCA4NzQxLCA4NzQ0LCA4NzQ3LCA4NzUwLCA4NzUzLCA4NzU2LCA4NzU5LCAKKyAgICA4NzYyLCA4NzY1LCA4NzY4LCA4NzcxLCA4Nzc1LCA4Nzc5LCA4NzgzLCA4Nzg2LCA4Nzg5LCA4NzkyLCA4Nzk1LCA4Nzk4LCAKKyAgICA4ODAxLCA4ODA0LCA4ODA3LCA4ODEwLCA4ODEzLCA4ODE2LCA4ODE5LCA4ODIyLCA4ODI1LCA4ODI4LCA4ODMxLCA4ODM0LCAKKyAgICA4ODM3LCA4ODQwLCA4ODQzLCA4ODQ2LCA4ODQ5LCA4ODUyLCA4ODU1LCA4ODU4LCA4ODYxLCA4ODY0LCA4ODY3LCA4ODcwLCAKKyAgICA4ODczLCA4ODc2LCA4ODc5LCA4ODgyLCA4ODg1LCA4ODg4LCA4ODkxLCA4ODk0LCA4ODk3LCA4OTAwLCA4OTAzLCA4OTA2LCAKKyAgICA4OTA5LCA4OTEyLCA4OTE1LCA4OTE4LCA4OTIxLCA4OTI0LCA4OTI3LCA4OTMwLCA4OTMzLCA4OTM2LCA4OTM5LCA4OTQyLCAKKyAgICA4OTQ1LCA4OTQ4LCA4OTUxLCA4OTU0LCA4OTU3LCA4OTYwLCA4OTYzLCA4OTY2LCA4OTY5LCA4OTcyLCA4OTc1LCA4OTc4LCAKKyAgICA4OTgxLCA4OTg0LCA4OTg3LCA4OTkwLCA4OTkzLCA4OTk2LCA4OTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDAyLCA5MDA2LCA5MDEwLCA5MDE0LCA5MDE4LCA5MDIyLCA5MDI2LCA5MDMwLCAKICAgICA5MDM0LCA5MDM4LCA5MDQyLCA5MDQ2LCA5MDUwLCA5MDU0LCA5MDU4LCA5MDYyLCA5MDY2LCA5MDcwLCA5MDc0LCA5MDc4LCAKICAgICA5MDgyLCA5MDg2LCA5MDkwLCA5MDk0LCA5MDk4LCA5MTAyLCA5MTA2LCA5MTEwLCA5MTE0LCA5MTE4LCA5MTIyLCA5MTI2LCAKICAgICA5MTMwLCA5MTM0LCA5MTM4LCA5MTQyLCA5MTQ2LCA5MTUwLCA5MTU0LCA5MTU4LCA5MTYyLCA5MTY2LCA5MTcwLCA5MTc0LCAKICAgICA5MTc4LCA5MTgyLCA5MTg2LCA5MTkwLCA5MTk0LCA5MTk4LCA5MjAyLCA5MjA2LCA5MjEwLCA5MjE0LCA5MjE4LCA5MjIyLCAKLSAgICA5MjI2LCA5MjMwLCA5MjM0LCA5MjM4LCA5MjQyLCA5MjQ2LCAwLCAwLCA5MjUwLCA5MjU0LCA5MjU4LCA5MjYyLCA5MjY2LCAKKyAgICA5MjI2LCA5MjMwLCA5MjM0LCA5MjM4LCA5MjQyLCA5MjQ2LCA5MjUwLCA5MjU0LCAwLCAwLCA5MjU4LCA5MjYyLCA5MjY2LCAKICAgICA5MjcwLCA5Mjc0LCA5Mjc4LCA5MjgyLCA5Mjg2LCA5MjkwLCA5Mjk0LCA5Mjk4LCA5MzAyLCA5MzA2LCA5MzEwLCA5MzE0LCAKICAgICA5MzE4LCA5MzIyLCA5MzI2LCA5MzMwLCA5MzM0LCA5MzM4LCA5MzQyLCA5MzQ2LCA5MzUwLCA5MzU0LCA5MzU4LCA5MzYyLCAKICAgICA5MzY2LCA5MzcwLCA5Mzc0LCA5Mzc4LCA5MzgyLCA5Mzg2LCA5MzkwLCA5Mzk0LCA5Mzk4LCA5NDAyLCA5NDA2LCA5NDEwLCAKICAgICA5NDE0LCA5NDE4LCA5NDIyLCA5NDI2LCA5NDMwLCA5NDM0LCA5NDM4LCA5NDQyLCA5NDQ2LCA5NDUwLCA5NDU0LCA5NDU4LCAKLSAgICA5NDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDY2LCA5NDcwLCA5NDc0LCAKLSAgICA5NDc5LCA5NDg0LCA5NDg5LCA5NDk0LCA5NDk5LCA5NTA0LCA5NTA5LCA5NTEzLCA5NTMyLCA5NTQxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTQ2LCA5NTQ4LCA5NTUwLCA5NTUyLCAKLSAgICA5NTU0LCA5NTU2LCA5NTU4LCA5NTYwLCA5NTYyLCA5NTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTY2LCA5NTY4LCA5NTcwLCA5NTcyLCA5NTc0LCA5NTc2LCA5NTc4LCAKLSAgICA5NTgwLCA5NTgyLCA5NTg0LCA5NTg2LCA5NTg4LCA5NTkwLCA5NTkyLCA5NTk0LCA5NTk2LCA5NTk4LCA5NjAwLCA5NjAyLCAKLSAgICA5NjA0LCA5NjA2LCAwLCAwLCA5NjA4LCA5NjEwLCA5NjEyLCA5NjE0LCA5NjE2LCA5NjE4LCA5NjIwLCA5NjIyLCA5NjI0LCAKLSAgICA5NjI2LCA5NjI4LCA5NjMwLCAwLCA5NjMyLCA5NjM0LCA5NjM2LCA5NjM4LCA5NjQwLCA5NjQyLCA5NjQ0LCA5NjQ2LCAKLSAgICA5NjQ4LCA5NjUwLCA5NjUyLCA5NjU0LCA5NjU2LCA5NjU4LCA5NjYwLCA5NjYyLCA5NjY0LCA5NjY2LCA5NjY4LCAwLCAKLSAgICA5NjcwLCA5NjcyLCA5Njc0LCA5Njc2LCAwLCAwLCAwLCAwLCA5Njc4LCA5NjgxLCA5Njg0LCAwLCA5Njg3LCAwLCA5NjkwLCAKLSAgICA5NjkzLCA5Njk2LCA5Njk5LCA5NzAyLCA5NzA1LCA5NzA4LCA5NzExLCA5NzE0LCA5NzE3LCA5NzIwLCA5NzIyLCA5NzI0LCAKLSAgICA5NzI2LCA5NzI4LCA5NzMwLCA5NzMyLCA5NzM0LCA5NzM2LCA5NzM4LCA5NzQwLCA5NzQyLCA5NzQ0LCA5NzQ2LCA5NzQ4LCAKLSAgICA5NzUwLCA5NzUyLCA5NzU0LCA5NzU2LCA5NzU4LCA5NzYwLCA5NzYyLCA5NzY0LCA5NzY2LCA5NzY4LCA5NzcwLCA5NzcyLCAKLSAgICA5Nzc0LCA5Nzc2LCA5Nzc4LCA5NzgwLCA5NzgyLCA5Nzg0LCA5Nzg2LCA5Nzg4LCA5NzkwLCA5NzkyLCA5Nzk0LCA5Nzk2LCAKLSAgICA5Nzk4LCA5ODAwLCA5ODAyLCA5ODA0LCA5ODA2LCA5ODA4LCA5ODEwLCA5ODEyLCA5ODE0LCA5ODE2LCA5ODE4LCA5ODIwLCAKLSAgICA5ODIyLCA5ODI0LCA5ODI2LCA5ODI4LCA5ODMwLCA5ODMyLCA5ODM0LCA5ODM2LCA5ODM4LCA5ODQwLCA5ODQyLCA5ODQ0LCAKLSAgICA5ODQ2LCA5ODQ4LCA5ODUwLCA5ODUyLCA5ODU0LCA5ODU2LCA5ODU4LCA5ODYwLCA5ODYyLCA5ODY0LCA5ODY2LCA5ODY4LCAKLSAgICA5ODcwLCA5ODcyLCA5ODc0LCA5ODc2LCA5ODc4LCA5ODgwLCA5ODgyLCA5ODg0LCA5ODg2LCA5ODg4LCA5ODkwLCA5ODkyLCAKLSAgICA5ODk0LCA5ODk2LCA5ODk4LCA5OTAwLCA5OTAyLCA5OTA0LCA5OTA2LCA5OTA4LCA5OTEwLCA5OTEyLCA5OTE0LCA5OTE2LCAKLSAgICA5OTE4LCA5OTIwLCA5OTIyLCA5OTI0LCA5OTI2LCA5OTI4LCA5OTMwLCA5OTMyLCA5OTM0LCA5OTM2LCA5OTM4LCA5OTQwLCAKLSAgICA5OTQyLCA5OTQ0LCA5OTQ2LCA5OTQ4LCA5OTUwLCA5OTUyLCA5OTU0LCA5OTU3LCA5OTYwLCA5OTYzLCA5OTY2LCA5OTY5LCAKLSAgICA5OTcyLCA5OTc1LCAwLCAwLCAwLCAwLCA5OTc4LCA5OTgwLCA5OTgyLCA5OTg0LCA5OTg2LCA5OTg4LCA5OTkwLCA5OTkyLCAKLSAgICA5OTk0LCA5OTk2LCA5OTk4LCAxMDAwMCwgMTAwMDIsIDEwMDA0LCAxMDAwNiwgMTAwMDgsIDEwMDEwLCAxMDAxMiwgMTAwMTQsIAotICAgIDEwMDE2LCAxMDAxOCwgMTAwMjAsIDEwMDIyLCAxMDAyNCwgMTAwMjYsIDEwMDI4LCAxMDAzMCwgMTAwMzIsIDEwMDM0LCAKLSAgICAxMDAzNiwgMTAwMzgsIDEwMDQwLCAxMDA0MiwgMTAwNDQsIDEwMDQ2LCAxMDA0OCwgMTAwNTAsIDEwMDUyLCAxMDA1NCwgCi0gICAgMTAwNTYsIDEwMDU4LCAxMDA2MCwgMTAwNjIsIDEwMDY0LCAxMDA2NiwgMTAwNjgsIDEwMDcwLCAxMDA3MiwgMTAwNzQsIAotICAgIDEwMDc2LCAxMDA3OCwgMTAwODAsIDEwMDgyLCAxMDA4NCwgMTAwODYsIDEwMDg4LCAxMDA5MCwgMTAwOTIsIDEwMDk0LCAKLSAgICAxMDA5NiwgMTAwOTgsIDEwMTAwLCAxMDEwMiwgMTAxMDQsIDEwMTA2LCAxMDEwOCwgMTAxMTAsIDEwMTEyLCAxMDExNCwgCi0gICAgMTAxMTYsIDEwMTE4LCAxMDEyMCwgMTAxMjIsIDEwMTI0LCAxMDEyNiwgMTAxMjgsIDEwMTMwLCAxMDEzMiwgMTAxMzQsIAotICAgIDEwMTM2LCAxMDEzOCwgMTAxNDAsIDEwMTQyLCAxMDE0NCwgMTAxNDYsIDEwMTQ4LCAxMDE1MCwgMTAxNTIsIDEwMTU0LCAKLSAgICAxMDE1NiwgMTAxNTgsIDEwMTYwLCAxMDE2MiwgMTAxNjQsIDEwMTY2LCAxMDE2OCwgMTAxNzAsIDEwMTcyLCAxMDE3NCwgCi0gICAgMTAxNzYsIDEwMTc4LCAxMDE4MCwgMTAxODIsIDEwMTg0LCAxMDE4NiwgMTAxODgsIDEwMTkwLCAxMDE5MiwgMTAxOTQsIAotICAgIDEwMTk2LCAxMDE5OCwgMTAyMDAsIDEwMjAyLCAxMDIwNCwgMTAyMDYsIDEwMjA4LCAxMDIxMCwgMTAyMTIsIDEwMjE0LCAKLSAgICAxMDIxNiwgMTAyMTgsIDEwMjIwLCAxMDIyMiwgMTAyMjQsIDEwMjI2LCAxMDIyOCwgMTAyMzAsIDEwMjMyLCAxMDIzNCwgCi0gICAgMTAyMzYsIDEwMjM4LCAxMDI0MCwgMTAyNDIsIDEwMjQ0LCAxMDI0NiwgMTAyNDgsIDEwMjUwLCAxMDI1MiwgMTAyNTQsIAotICAgIDEwMjU2LCAxMDI1OCwgMTAyNjAsIDEwMjYyLCAxMDI2NCwgMTAyNjYsIDEwMjY4LCAxMDI3MCwgMTAyNzIsIDEwMjc0LCAKLSAgICAxMDI3NiwgMTAyNzgsIDEwMjgwLCAxMDI4MiwgMTAyODQsIDEwMjg2LCAxMDI4OCwgMTAyOTAsIDEwMjkyLCAxMDI5NCwgCi0gICAgMTAyOTYsIDEwMjk4LCAxMDMwMCwgMTAzMDIsIDEwMzA0LCAxMDMwNiwgMTAzMDgsIDEwMzEwLCAxMDMxMiwgMTAzMTQsIAotICAgIDEwMzE2LCAxMDMxOCwgMTAzMjAsIDEwMzIyLCAxMDMyNCwgMTAzMjYsIDEwMzI4LCAxMDMzMCwgMTAzMzIsIDEwMzM0LCAKLSAgICAxMDMzNiwgMTAzMzgsIDEwMzQwLCAxMDM0MiwgMTAzNDQsIDEwMzQ2LCAxMDM0OCwgMTAzNTAsIDEwMzUyLCAxMDM1NCwgCi0gICAgMTAzNTYsIDAsIDAsIDAsIDEwMzU4LCAxMDM2MCwgMTAzNjIsIDEwMzY0LCAxMDM2NiwgMTAzNjgsIDAsIDAsIDEwMzcwLCAKLSAgICAxMDM3MiwgMTAzNzQsIDEwMzc2LCAxMDM3OCwgMTAzODAsIDAsIDAsIDEwMzgyLCAxMDM4NCwgMTAzODYsIDEwMzg4LCAKLSAgICAxMDM5MCwgMTAzOTIsIDAsIDAsIDEwMzk0LCAxMDM5NiwgMTAzOTgsIDAsIDAsIDAsIDEwNDAwLCAxMDQwMiwgMTA0MDQsIAotICAgIDEwNDA2LCAxMDQwOCwgMTA0MTAsIDEwNDEyLCAwLCAxMDQxNCwgMTA0MTYsIDEwNDE4LCAxMDQyMCwgMTA0MjIsIDEwNDI0LCAKLSAgICAxMDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTQ2MiwgOTQ2NiwgOTQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ3NCwgCisgICAgOTQ3OCwgOTQ4MiwgOTQ4NywgOTQ5MiwgOTQ5NywgOTUwMiwgOTUwNywgOTUxMiwgOTUxNywgOTUyMSwgOTU0MCwgOTU0OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU1NCwgOTU1NiwgCisgICAgOTU1OCwgOTU2MCwgOTU2MiwgOTU2NCwgOTU2NiwgOTU2OCwgOTU3MCwgOTU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NCwgOTU3NiwgOTU3OCwgOTU4MCwgOTU4MiwgCisgICAgOTU4NCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgOTU5OCwgOTYwMCwgOTYwMiwgOTYwNCwgOTYwNiwgCisgICAgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgMCwgMCwgOTYxNiwgOTYxOCwgOTYyMCwgOTYyMiwgOTYyNCwgOTYyNiwgOTYyOCwgCisgICAgOTYzMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgMCwgOTY0MCwgOTY0MiwgOTY0NCwgOTY0NiwgOTY0OCwgOTY1MCwgCisgICAgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgOTY2NiwgOTY2OCwgOTY3MCwgOTY3MiwgOTY3NCwgCisgICAgOTY3NiwgMCwgOTY3OCwgOTY4MCwgOTY4MiwgOTY4NCwgMCwgMCwgMCwgMCwgOTY4NiwgOTY4OSwgOTY5MiwgMCwgOTY5NSwgCisgICAgMCwgOTY5OCwgOTcwMSwgOTcwNCwgOTcwNywgOTcxMCwgOTcxMywgOTcxNiwgOTcxOSwgOTcyMiwgOTcyNSwgOTcyOCwgCisgICAgOTczMCwgOTczMiwgOTczNCwgOTczNiwgOTczOCwgOTc0MCwgOTc0MiwgOTc0NCwgOTc0NiwgOTc0OCwgOTc1MCwgOTc1MiwgCisgICAgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgOTc2OCwgOTc3MCwgOTc3MiwgOTc3NCwgOTc3NiwgCisgICAgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgOTc5MiwgOTc5NCwgOTc5NiwgOTc5OCwgOTgwMCwgCisgICAgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgOTgxNiwgOTgxOCwgOTgyMCwgOTgyMiwgOTgyNCwgCisgICAgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgOTg0MCwgOTg0MiwgOTg0NCwgOTg0NiwgOTg0OCwgCisgICAgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgOTg2NCwgOTg2NiwgOTg2OCwgOTg3MCwgOTg3MiwgCisgICAgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgOTg4OCwgOTg5MCwgOTg5MiwgOTg5NCwgOTg5NiwgCisgICAgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgOTkxMiwgOTkxNCwgOTkxNiwgOTkxOCwgOTkyMCwgCisgICAgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgOTkzNiwgOTkzOCwgOTk0MCwgOTk0MiwgOTk0NCwgCisgICAgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NiwgOTk1OCwgOTk2MCwgOTk2MiwgOTk2NSwgOTk2OCwgOTk3MSwgCisgICAgOTk3NCwgOTk3NywgOTk4MCwgOTk4MywgMCwgMCwgMCwgMCwgOTk4NiwgOTk4OCwgOTk5MCwgOTk5MiwgOTk5NCwgOTk5NiwgCisgICAgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAxMDAxMCwgMTAwMTIsIDEwMDE0LCAxMDAxNiwgCisgICAgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgMTAwMzAsIDEwMDMyLCAxMDAzNCwgMTAwMzYsIAorICAgIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIDEwMDUwLCAxMDA1MiwgMTAwNTQsIDEwMDU2LCAKKyAgICAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAxMDA3MCwgMTAwNzIsIDEwMDc0LCAxMDA3NiwgCisgICAgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgMTAwOTAsIDEwMDkyLCAxMDA5NCwgMTAwOTYsIAorICAgIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIDEwMTEwLCAxMDExMiwgMTAxMTQsIDEwMTE2LCAKKyAgICAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAxMDEzMCwgMTAxMzIsIDEwMTM0LCAxMDEzNiwgCisgICAgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgMTAxNTAsIDEwMTUyLCAxMDE1NCwgMTAxNTYsIAorICAgIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIDEwMTcwLCAxMDE3MiwgMTAxNzQsIDEwMTc2LCAKKyAgICAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAxMDE5MCwgMTAxOTIsIDEwMTk0LCAxMDE5NiwgCisgICAgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgMTAyMTAsIDEwMjEyLCAxMDIxNCwgMTAyMTYsIAorICAgIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIDEwMjMwLCAxMDIzMiwgMTAyMzQsIDEwMjM2LCAKKyAgICAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAxMDI1MCwgMTAyNTIsIDEwMjU0LCAxMDI1NiwgCisgICAgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgMTAyNzAsIDEwMjcyLCAxMDI3NCwgMTAyNzYsIAorICAgIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIDEwMjkwLCAxMDI5MiwgMTAyOTQsIDEwMjk2LCAKKyAgICAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAxMDMxMCwgMTAzMTIsIDEwMzE0LCAxMDMxNiwgCisgICAgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgMTAzMzAsIDEwMzMyLCAxMDMzNCwgMTAzMzYsIAorICAgIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIDEwMzUwLCAxMDM1MiwgMTAzNTQsIDEwMzU2LCAKKyAgICAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMCwgMCwgMCwgMTAzNjYsIDEwMzY4LCAxMDM3MCwgMTAzNzIsIDEwMzc0LCAKKyAgICAxMDM3NiwgMCwgMCwgMTAzNzgsIDEwMzgwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAxMDM4OCwgMCwgMCwgMTAzOTAsIAorICAgIDEwMzkyLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAxMDQwMCwgMCwgMCwgMTA0MDIsIDEwNDA0LCAxMDQwNiwgMCwgMCwgMCwgCisgICAgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMTA0MjAsIDAsIDEwNDIyLCAxMDQyNCwgMTA0MjYsIAorICAgIDEwNDI4LCAxMDQzMCwgMTA0MzIsIDEwNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDQyOCwgMCwgMTA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQzNiwgMCwgMTA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQzNywgMTA0NDAsIDEwNDQzLCAxMDQ0NiwgMTA0NDksIAotICAgIDEwNDUyLCAxMDQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTgsIDEwNDYxLCAKLSAgICAxMDQ2NCwgMTA0NjcsIDEwNDcwLCAxMDQ3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0NzYsIDEwNDc4LCAxMDQ4MCwgMTA0ODIsIDEwNDg0LCAxMDQ4NiwgMTA0ODgsIDEwNDkwLCAxMDQ5MiwgMTA0OTQsIAotICAgIDEwNDk2LCAxMDQ5OCwgMTA1MDAsIDEwNTAyLCAxMDUwNCwgMTA1MDYsIDEwNTA4LCAxMDUxMCwgMTA1MTIsIDEwNTE0LCAKLSAgICAxMDUxNiwgMTA1MTgsIDEwNTIwLCAxMDUyMiwgMTA1MjQsIDEwNTI2LCAxMDUyOCwgMTA1MzAsIDEwNTMyLCAxMDUzNCwgCi0gICAgMTA1MzYsIDEwNTM4LCAxMDU0MCwgMTA1NDIsIDEwNTQ0LCAxMDU0NiwgMTA1NDgsIDEwNTUwLCAxMDU1MiwgMTA1NTQsIAotICAgIDEwNTU2LCAxMDU1OCwgMTA1NjAsIDEwNTYyLCAxMDU2NCwgMTA1NjYsIDEwNTY4LCAxMDU3MCwgMTA1NzIsIDEwNTc0LCAKLSAgICAxMDU3NiwgMTA1NzgsIDEwNTgwLCAxMDU4MiwgMTA1ODQsIDEwNTg2LCAxMDU4OCwgMTA1OTAsIDEwNTkyLCAxMDU5NCwgCi0gICAgMTA1OTYsIDEwNTk4LCAxMDYwMCwgMTA2MDIsIDEwNjA0LCAxMDYwNiwgMTA2MDgsIDEwNjEwLCAxMDYxMiwgMTA2MTQsIAotICAgIDEwNjE2LCAxMDYxOCwgMTA2MjAsIDEwNjIyLCAxMDYyNCwgMTA2MjYsIDEwNjI4LCAxMDYzMCwgMTA2MzIsIDEwNjM0LCAKLSAgICAxMDYzNiwgMTA2MzgsIDEwNjQwLCAxMDY0MiwgMTA2NDQsIDAsIDEwNjQ2LCAxMDY0OCwgMTA2NTAsIDEwNjUyLCAxMDY1NCwgCi0gICAgMTA2NTYsIDEwNjU4LCAxMDY2MCwgMTA2NjIsIDEwNjY0LCAxMDY2NiwgMTA2NjgsIDEwNjcwLCAxMDY3MiwgMTA2NzQsIAotICAgIDEwNjc2LCAxMDY3OCwgMTA2ODAsIDEwNjgyLCAxMDY4NCwgMTA2ODYsIDEwNjg4LCAxMDY5MCwgMTA2OTIsIDEwNjk0LCAKLSAgICAxMDY5NiwgMTA2OTgsIDEwNzAwLCAxMDcwMiwgMTA3MDQsIDEwNzA2LCAxMDcwOCwgMTA3MTAsIDEwNzEyLCAxMDcxNCwgCi0gICAgMTA3MTYsIDEwNzE4LCAxMDcyMCwgMTA3MjIsIDEwNzI0LCAxMDcyNiwgMTA3MjgsIDEwNzMwLCAxMDczMiwgMTA3MzQsIAotICAgIDEwNzM2LCAxMDczOCwgMTA3NDAsIDEwNzQyLCAxMDc0NCwgMTA3NDYsIDEwNzQ4LCAxMDc1MCwgMTA3NTIsIDEwNzU0LCAKLSAgICAxMDc1NiwgMTA3NTgsIDEwNzYwLCAxMDc2MiwgMTA3NjQsIDEwNzY2LCAxMDc2OCwgMTA3NzAsIDEwNzcyLCAxMDc3NCwgCi0gICAgMTA3NzYsIDEwNzc4LCAxMDc4MCwgMTA3ODIsIDEwNzg0LCAxMDc4NiwgMCwgMTA3ODgsIDEwNzkwLCAwLCAwLCAxMDc5MiwgCi0gICAgMCwgMCwgMTA3OTQsIDEwNzk2LCAwLCAwLCAxMDc5OCwgMTA4MDAsIDEwODAyLCAxMDgwNCwgMCwgMTA4MDYsIDEwODA4LCAKLSAgICAxMDgxMCwgMTA4MTIsIDEwODE0LCAxMDgxNiwgMTA4MTgsIDEwODIwLCAxMDgyMiwgMTA4MjQsIDEwODI2LCAxMDgyOCwgMCwgCi0gICAgMTA4MzAsIDAsIDEwODMyLCAxMDgzNCwgMTA4MzYsIDEwODM4LCAxMDg0MCwgMTA4NDIsIDEwODQ0LCAwLCAxMDg0NiwgCi0gICAgMTA4NDgsIDEwODUwLCAxMDg1MiwgMTA4NTQsIDEwODU2LCAxMDg1OCwgMTA4NjAsIDEwODYyLCAxMDg2NCwgMTA4NjYsIAotICAgIDEwODY4LCAxMDg3MCwgMTA4NzIsIDEwODc0LCAxMDg3NiwgMTA4NzgsIDEwODgwLCAxMDg4MiwgMTA4ODQsIDEwODg2LCAKLSAgICAxMDg4OCwgMTA4OTAsIDEwODkyLCAxMDg5NCwgMTA4OTYsIDEwODk4LCAxMDkwMCwgMTA5MDIsIDEwOTA0LCAxMDkwNiwgCi0gICAgMTA5MDgsIDEwOTEwLCAxMDkxMiwgMTA5MTQsIDEwOTE2LCAxMDkxOCwgMTA5MjAsIDEwOTIyLCAxMDkyNCwgMTA5MjYsIAotICAgIDEwOTI4LCAxMDkzMCwgMTA5MzIsIDEwOTM0LCAxMDkzNiwgMTA5MzgsIDEwOTQwLCAxMDk0MiwgMTA5NDQsIDEwOTQ2LCAKLSAgICAxMDk0OCwgMTA5NTAsIDEwOTUyLCAxMDk1NCwgMTA5NTYsIDEwOTU4LCAxMDk2MCwgMTA5NjIsIDEwOTY0LCAxMDk2NiwgCi0gICAgMTA5NjgsIDEwOTcwLCAxMDk3MiwgMTA5NzQsIDAsIDEwOTc2LCAxMDk3OCwgMTA5ODAsIDEwOTgyLCAwLCAwLCAxMDk4NCwgCi0gICAgMTA5ODYsIDEwOTg4LCAxMDk5MCwgMTA5OTIsIDEwOTk0LCAxMDk5NiwgMTA5OTgsIDAsIDExMDAwLCAxMTAwMiwgMTEwMDQsIAotICAgIDExMDA2LCAxMTAwOCwgMTEwMTAsIDExMDEyLCAwLCAxMTAxNCwgMTEwMTYsIDExMDE4LCAxMTAyMCwgMTEwMjIsIDExMDI0LCAKLSAgICAxMTAyNiwgMTEwMjgsIDExMDMwLCAxMTAzMiwgMTEwMzQsIDExMDM2LCAxMTAzOCwgMTEwNDAsIDExMDQyLCAxMTA0NCwgCi0gICAgMTEwNDYsIDExMDQ4LCAxMTA1MCwgMTEwNTIsIDExMDU0LCAxMTA1NiwgMTEwNTgsIDExMDYwLCAxMTA2MiwgMTEwNjQsIAotICAgIDExMDY2LCAxMTA2OCwgMCwgMTEwNzAsIDExMDcyLCAxMTA3NCwgMTEwNzYsIDAsIDExMDc4LCAxMTA4MCwgMTEwODIsIAotICAgIDExMDg0LCAxMTA4NiwgMCwgMTEwODgsIDAsIDAsIDAsIDExMDkwLCAxMTA5MiwgMTEwOTQsIDExMDk2LCAxMTA5OCwgCi0gICAgMTExMDAsIDExMTAyLCAwLCAxMTEwNCwgMTExMDYsIDExMTA4LCAxMTExMCwgMTExMTIsIDExMTE0LCAxMTExNiwgMTExMTgsIAotICAgIDExMTIwLCAxMTEyMiwgMTExMjQsIDExMTI2LCAxMTEyOCwgMTExMzAsIDExMTMyLCAxMTEzNCwgMTExMzYsIDExMTM4LCAKLSAgICAxMTE0MCwgMTExNDIsIDExMTQ0LCAxMTE0NiwgMTExNDgsIDExMTUwLCAxMTE1MiwgMTExNTQsIDExMTU2LCAxMTE1OCwgCi0gICAgMTExNjAsIDExMTYyLCAxMTE2NCwgMTExNjYsIDExMTY4LCAxMTE3MCwgMTExNzIsIDExMTc0LCAxMTE3NiwgMTExNzgsIAotICAgIDExMTgwLCAxMTE4MiwgMTExODQsIDExMTg2LCAxMTE4OCwgMTExOTAsIDExMTkyLCAxMTE5NCwgMTExOTYsIDExMTk4LCAKLSAgICAxMTIwMCwgMTEyMDIsIDExMjA0LCAxMTIwNiwgMTEyMDgsIDExMjEwLCAxMTIxMiwgMTEyMTQsIDExMjE2LCAxMTIxOCwgCi0gICAgMTEyMjAsIDExMjIyLCAxMTIyNCwgMTEyMjYsIDExMjI4LCAxMTIzMCwgMTEyMzIsIDExMjM0LCAxMTIzNiwgMTEyMzgsIAotICAgIDExMjQwLCAxMTI0MiwgMTEyNDQsIDExMjQ2LCAxMTI0OCwgMTEyNTAsIDExMjUyLCAxMTI1NCwgMTEyNTYsIDExMjU4LCAKLSAgICAxMTI2MCwgMTEyNjIsIDExMjY0LCAxMTI2NiwgMTEyNjgsIDExMjcwLCAxMTI3MiwgMTEyNzQsIDExMjc2LCAxMTI3OCwgCi0gICAgMTEyODAsIDExMjgyLCAxMTI4NCwgMTEyODYsIDExMjg4LCAxMTI5MCwgMTEyOTIsIDExMjk0LCAxMTI5NiwgMTEyOTgsIAotICAgIDExMzAwLCAxMTMwMiwgMTEzMDQsIDExMzA2LCAxMTMwOCwgMTEzMTAsIDExMzEyLCAxMTMxNCwgMTEzMTYsIDExMzE4LCAKLSAgICAxMTMyMCwgMTEzMjIsIDExMzI0LCAxMTMyNiwgMTEzMjgsIDExMzMwLCAxMTMzMiwgMTEzMzQsIDExMzM2LCAxMTMzOCwgCi0gICAgMTEzNDAsIDExMzQyLCAxMTM0NCwgMTEzNDYsIDExMzQ4LCAxMTM1MCwgMTEzNTIsIDExMzU0LCAxMTM1NiwgMTEzNTgsIAotICAgIDExMzYwLCAxMTM2MiwgMTEzNjQsIDExMzY2LCAxMTM2OCwgMTEzNzAsIDExMzcyLCAxMTM3NCwgMTEzNzYsIDExMzc4LCAKLSAgICAxMTM4MCwgMTEzODIsIDExMzg0LCAxMTM4NiwgMTEzODgsIDExMzkwLCAxMTM5MiwgMTEzOTQsIDExMzk2LCAxMTM5OCwgCi0gICAgMTE0MDAsIDExNDAyLCAxMTQwNCwgMTE0MDYsIDExNDA4LCAxMTQxMCwgMTE0MTIsIDExNDE0LCAxMTQxNiwgMTE0MTgsIAotICAgIDExNDIwLCAxMTQyMiwgMTE0MjQsIDExNDI2LCAxMTQyOCwgMTE0MzAsIDExNDMyLCAxMTQzNCwgMTE0MzYsIDExNDM4LCAKLSAgICAxMTQ0MCwgMTE0NDIsIDExNDQ0LCAxMTQ0NiwgMTE0NDgsIDExNDUwLCAxMTQ1MiwgMTE0NTQsIDExNDU2LCAxMTQ1OCwgCi0gICAgMTE0NjAsIDExNDYyLCAxMTQ2NCwgMTE0NjYsIDExNDY4LCAxMTQ3MCwgMTE0NzIsIDExNDc0LCAxMTQ3NiwgMTE0NzgsIAotICAgIDExNDgwLCAxMTQ4MiwgMTE0ODQsIDExNDg2LCAxMTQ4OCwgMTE0OTAsIDExNDkyLCAxMTQ5NCwgMTE0OTYsIDExNDk4LCAKLSAgICAxMTUwMCwgMTE1MDIsIDExNTA0LCAxMTUwNiwgMTE1MDgsIDExNTEwLCAxMTUxMiwgMTE1MTQsIDExNTE2LCAxMTUxOCwgCi0gICAgMTE1MjAsIDExNTIyLCAxMTUyNCwgMTE1MjYsIDExNTI4LCAxMTUzMCwgMTE1MzIsIDExNTM0LCAxMTUzNiwgMTE1MzgsIAotICAgIDExNTQwLCAxMTU0MiwgMTE1NDQsIDExNTQ2LCAxMTU0OCwgMTE1NTAsIDExNTUyLCAxMTU1NCwgMTE1NTYsIDExNTU4LCAKLSAgICAxMTU2MCwgMTE1NjIsIDExNTY0LCAxMTU2NiwgMTE1NjgsIDExNTcwLCAxMTU3MiwgMTE1NzQsIDExNTc2LCAxMTU3OCwgCi0gICAgMTE1ODAsIDExNTgyLCAxMTU4NCwgMTE1ODYsIDExNTg4LCAxMTU5MCwgMTE1OTIsIDExNTk0LCAxMTU5NiwgMTE1OTgsIAotICAgIDExNjAwLCAxMTYwMiwgMTE2MDQsIDExNjA2LCAxMTYwOCwgMTE2MTAsIDExNjEyLCAxMTYxNCwgMTE2MTYsIDExNjE4LCAKLSAgICAxMTYyMCwgMTE2MjIsIDExNjI0LCAxMTYyNiwgMTE2MjgsIDExNjMwLCAxMTYzMiwgMTE2MzQsIDExNjM2LCAxMTYzOCwgCi0gICAgMTE2NDAsIDExNjQyLCAxMTY0NCwgMTE2NDYsIDExNjQ4LCAxMTY1MCwgMTE2NTIsIDExNjU0LCAxMTY1NiwgMTE2NTgsIAotICAgIDExNjYwLCAxMTY2MiwgMTE2NjQsIDExNjY2LCAxMTY2OCwgMTE2NzAsIDExNjcyLCAxMTY3NCwgMTE2NzYsIDExNjc4LCAKLSAgICAxMTY4MCwgMTE2ODIsIDExNjg0LCAxMTY4NiwgMTE2ODgsIDExNjkwLCAxMTY5MiwgMTE2OTQsIDExNjk2LCAxMTY5OCwgCi0gICAgMTE3MDAsIDExNzAyLCAxMTcwNCwgMTE3MDYsIDExNzA4LCAxMTcxMCwgMTE3MTIsIDExNzE0LCAxMTcxNiwgMTE3MTgsIAotICAgIDExNzIwLCAxMTcyMiwgMTE3MjQsIDExNzI2LCAxMTcyOCwgMTE3MzAsIDExNzMyLCAxMTczNCwgMTE3MzYsIDExNzM4LCAKLSAgICAxMTc0MCwgMTE3NDIsIDExNzQ0LCAxMTc0NiwgMTE3NDgsIDExNzUwLCAxMTc1MiwgMTE3NTQsIDExNzU2LCAxMTc1OCwgCi0gICAgMTE3NjAsIDExNzYyLCAxMTc2NCwgMTE3NjYsIDExNzY4LCAxMTc3MCwgMTE3NzIsIDExNzc0LCAxMTc3NiwgMTE3NzgsIAotICAgIDExNzgwLCAxMTc4MiwgMCwgMCwgMTE3ODQsIDExNzg2LCAxMTc4OCwgMTE3OTAsIDExNzkyLCAxMTc5NCwgMTE3OTYsIAotICAgIDExNzk4LCAxMTgwMCwgMTE4MDIsIDExODA0LCAxMTgwNiwgMTE4MDgsIDExODEwLCAxMTgxMiwgMTE4MTQsIDExODE2LCAKLSAgICAxMTgxOCwgMTE4MjAsIDExODIyLCAxMTgyNCwgMTE4MjYsIDExODI4LCAxMTgzMCwgMTE4MzIsIDExODM0LCAxMTgzNiwgCi0gICAgMTE4MzgsIDExODQwLCAxMTg0MiwgMTE4NDQsIDExODQ2LCAxMTg0OCwgMTE4NTAsIDExODUyLCAxMTg1NCwgMTE4NTYsIAotICAgIDExODU4LCAxMTg2MCwgMTE4NjIsIDExODY0LCAxMTg2NiwgMTE4NjgsIDExODcwLCAxMTg3MiwgMTE4NzQsIDExODc2LCAKLSAgICAxMTg3OCwgMTE4ODAsIDExODgyLCAxMTg4NCwgMTE4ODYsIDExODg4LCAxMTg5MCwgMTE4OTIsIDExODk0LCAxMTg5NiwgCi0gICAgMTE4OTgsIDExOTAwLCAxMTkwMiwgMTE5MDQsIDExOTA2LCAxMTkwOCwgMTE5MTAsIDExOTEyLCAxMTkxNCwgMTE5MTYsIAotICAgIDExOTE4LCAxMTkyMCwgMTE5MjIsIDExOTI0LCAxMTkyNiwgMTE5MjgsIDExOTMwLCAxMTkzMiwgMTE5MzQsIDExOTM2LCAKLSAgICAxMTkzOCwgMTE5NDAsIDExOTQyLCAxMTk0NCwgMTE5NDYsIDExOTQ4LCAxMTk1MCwgMTE5NTIsIDExOTU0LCAxMTk1NiwgCi0gICAgMTE5NTgsIDExOTYwLCAxMTk2MiwgMTE5NjQsIDExOTY2LCAxMTk2OCwgMTE5NzAsIDExOTcyLCAxMTk3NCwgMTE5NzYsIAotICAgIDExOTc4LCAxMTk4MCwgMTE5ODIsIDExOTg0LCAxMTk4NiwgMTE5ODgsIDExOTkwLCAxMTk5MiwgMTE5OTQsIDExOTk2LCAKLSAgICAxMTk5OCwgMTIwMDAsIDEyMDAyLCAxMjAwNCwgMTIwMDYsIDEyMDA4LCAxMjAxMCwgMTIwMTIsIDEyMDE0LCAxMjAxNiwgCi0gICAgMTIwMTgsIDEyMDIwLCAxMjAyMiwgMTIwMjQsIDEyMDI2LCAxMjAyOCwgMTIwMzAsIDEyMDMyLCAxMjAzNCwgMTIwMzYsIAotICAgIDEyMDM4LCAxMjA0MCwgMTIwNDIsIDEyMDQ0LCAxMjA0NiwgMTIwNDgsIDEyMDUwLCAxMjA1MiwgMTIwNTQsIDEyMDU2LCAKLSAgICAxMjA1OCwgMTIwNjAsIDEyMDYyLCAxMjA2NCwgMTIwNjYsIDEyMDY4LCAxMjA3MCwgMTIwNzIsIDEyMDc0LCAxMjA3NiwgCi0gICAgMTIwNzgsIDEyMDgwLCAxMjA4MiwgMTIwODQsIDEyMDg2LCAxMjA4OCwgMTIwOTAsIDEyMDkyLCAxMjA5NCwgMTIwOTYsIAotICAgIDEyMDk4LCAxMjEwMCwgMTIxMDIsIDEyMTA0LCAxMjEwNiwgMTIxMDgsIDEyMTEwLCAxMjExMiwgMTIxMTQsIDEyMTE2LCAKLSAgICAxMjExOCwgMTIxMjAsIDEyMTIyLCAxMjEyNCwgMTIxMjYsIDEyMTI4LCAxMjEzMCwgMTIxMzIsIDEyMTM0LCAxMjEzNiwgCi0gICAgMTIxMzgsIDEyMTQwLCAxMjE0MiwgMTIxNDQsIDEyMTQ2LCAxMjE0OCwgMTIxNTAsIDEyMTUyLCAxMjE1NCwgMTIxNTYsIAotICAgIDEyMTU4LCAxMjE2MCwgMTIxNjIsIDEyMTY0LCAxMjE2NiwgMTIxNjgsIDEyMTcwLCAxMjE3MiwgMTIxNzQsIDEyMTc2LCAKLSAgICAxMjE3OCwgMTIxODAsIDEyMTgyLCAxMjE4NCwgMTIxODYsIDEyMTg4LCAxMjE5MCwgMTIxOTIsIDEyMTk0LCAxMjE5NiwgCi0gICAgMTIxOTgsIDEyMjAwLCAxMjIwMiwgMTIyMDQsIDEyMjA2LCAxMjIwOCwgMTIyMTAsIDEyMjEyLCAxMjIxNCwgMTIyMTYsIAotICAgIDEyMjE4LCAxMjIyMCwgMTIyMjIsIDEyMjI0LCAxMjIyNiwgMTIyMjgsIDEyMjMwLCAxMjIzMiwgMTIyMzQsIDEyMjM2LCAKLSAgICAxMjIzOCwgMTIyNDAsIDEyMjQyLCAxMjI0NCwgMTIyNDYsIDEyMjQ4LCAxMjI1MCwgMTIyNTIsIDEyMjU0LCAxMjI1NiwgCi0gICAgMTIyNTgsIDEyMjYwLCAxMjI2MiwgMTIyNjQsIDEyMjY2LCAxMjI2OCwgMTIyNzAsIDEyMjcyLCAxMjI3NCwgMTIyNzYsIAotICAgIDEyMjc4LCAxMjI4MCwgMTIyODIsIDEyMjg0LCAxMjI4NiwgMTIyODgsIDEyMjkwLCAxMjI5MiwgMTIyOTQsIDEyMjk2LCAKLSAgICAxMjI5OCwgMTIzMDAsIDEyMzAyLCAxMjMwNCwgMTIzMDYsIDEyMzA4LCAxMjMxMCwgMTIzMTIsIDEyMzE0LCAxMjMxNiwgCi0gICAgMTIzMTgsIDEyMzIwLCAxMjMyMiwgMTIzMjQsIDEyMzI2LCAxMjMyOCwgMTIzMzAsIDEyMzMyLCAxMjMzNCwgMTIzMzYsIAotICAgIDEyMzM4LCAxMjM0MCwgMTIzNDIsIDEyMzQ0LCAxMjM0NiwgMTIzNDgsIDEyMzUwLCAxMjM1MiwgMTIzNTQsIDEyMzU2LCAKLSAgICAxMjM1OCwgMTIzNjAsIDEyMzYyLCAxMjM2NCwgMTIzNjYsIDAsIDAsIDEyMzY4LCAxMjM3MCwgMTIzNzIsIDEyMzc0LCAKLSAgICAxMjM3NiwgMTIzNzgsIDEyMzgwLCAxMjM4MiwgMTIzODQsIDEyMzg2LCAxMjM4OCwgMTIzOTAsIDEyMzkyLCAxMjM5NCwgCi0gICAgMTIzOTYsIDEyMzk4LCAxMjQwMCwgMTI0MDIsIDEyNDA0LCAxMjQwNiwgMTI0MDgsIDEyNDEwLCAxMjQxMiwgMTI0MTQsIAotICAgIDEyNDE2LCAxMjQxOCwgMTI0MjAsIDEyNDIyLCAxMjQyNCwgMTI0MjYsIDEyNDI4LCAxMjQzMCwgMTI0MzIsIDEyNDM0LCAKLSAgICAxMjQzNiwgMTI0MzgsIDEyNDQwLCAxMjQ0MiwgMTI0NDQsIDEyNDQ2LCAxMjQ0OCwgMTI0NTAsIDEyNDUyLCAxMjQ1NCwgCi0gICAgMTI0NTYsIDEyNDU4LCAxMjQ2MCwgMTI0NjIsIDEyNDY0LCAxMjQ2NiwgMTI0NjgsIDEyNDcxLCAxMjQ3NCwgMTI0NzcsIAotICAgIDEyNDgwLCAxMjQ4MywgMTI0ODYsIDEyNDg5LCAxMjQ5MiwgMTI0OTUsIDEyNDk4LCAwLCAwLCAwLCAwLCAwLCAxMjUwMSwgCi0gICAgMTI1MDUsIDEyNTA5LCAxMjUxMywgMTI1MTcsIDEyNTIxLCAxMjUyNSwgMTI1MjksIDEyNTMzLCAxMjUzNywgMTI1NDEsIAotICAgIDEyNTQ1LCAxMjU0OSwgMTI1NTMsIDEyNTU3LCAxMjU2MSwgMTI1NjUsIDEyNTY5LCAxMjU3MywgMTI1NzcsIDEyNTgxLCAKLSAgICAxMjU4NSwgMTI1ODksIDEyNTkzLCAxMjU5NywgMTI2MDEsIDEyNjA1LCAxMjYwOSwgMTI2MTEsIDEyNjEzLCAxMjYxNiwgMCwgCi0gICAgMTI2MTksIDEyNjIxLCAxMjYyMywgMTI2MjUsIDEyNjI3LCAxMjYyOSwgMTI2MzEsIDEyNjMzLCAxMjYzNSwgMTI2MzcsIAotICAgIDEyNjM5LCAxMjY0MSwgMTI2NDMsIDEyNjQ1LCAxMjY0NywgMTI2NDksIDEyNjUxLCAxMjY1MywgMTI2NTUsIDEyNjU3LCAKLSAgICAxMjY1OSwgMTI2NjEsIDEyNjYzLCAxMjY2NSwgMTI2NjcsIDEyNjY5LCAxMjY3MSwgMTI2NzQsIDEyNjc3LCAxMjY4MCwgCi0gICAgMTI2ODMsIDEyNjg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY5MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2OTMsIDEyNjk2LCAxMjY5OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MDEsIDEyNzAzLCAxMjcwNSwgMTI3MDcsIDEyNzA5LCAxMjcxMSwgCi0gICAgMTI3MTMsIDEyNzE1LCAxMjcxNywgMTI3MTksIDEyNzIxLCAxMjcyMywgMTI3MjUsIDEyNzI3LCAxMjcyOSwgMTI3MzEsIAotICAgIDEyNzMzLCAxMjczNSwgMTI3MzcsIDEyNzM5LCAxMjc0MSwgMTI3NDMsIDEyNzQ1LCAxMjc0NywgMTI3NDksIDEyNzUxLCAKLSAgICAxMjc1MywgMTI3NTUsIDEyNzU3LCAxMjc1OSwgMTI3NjEsIDEyNzYzLCAxMjc2NSwgMTI3NjcsIDEyNzY5LCAxMjc3MSwgCi0gICAgMTI3NzMsIDEyNzc1LCAxMjc3NywgMTI3NzksIDEyNzgxLCAxMjc4MywgMTI3ODUsIDAsIDAsIDAsIDAsIDAsIDEyNzg3LCAKLSAgICAxMjc5MSwgMTI3OTUsIDEyNzk5LCAxMjgwMywgMTI4MDcsIDEyODExLCAxMjgxNSwgMTI4MTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyODIzLCAxMjgyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MjcsIDEyODI5LCAxMjgzMSwgMTI4MzMsIDEyODM1LCAKLSAgICAxMjgzNywgMTI4MzksIDEyODQxLCAxMjg0MywgMTI4NDUsIDEyODQ3LCAxMjg0OSwgMTI4NTEsIDEyODUzLCAxMjg1NSwgCi0gICAgMTI4NTcsIDEyODU5LCAxMjg2MSwgMTI4NjMsIDEyODY1LCAxMjg2NywgMTI4NjksIDEyODcxLCAxMjg3MywgMTI4NzUsIAotICAgIDEyODc3LCAxMjg3OSwgMTI4ODEsIDEyODgzLCAxMjg4NSwgMTI4ODcsIDEyODg5LCAxMjg5MSwgMTI4OTMsIDEyODk1LCAKLSAgICAxMjg5NywgMTI4OTksIDEyOTAxLCAxMjkwMywgMTI5MDUsIDEyOTA3LCAxMjkwOSwgMTI5MTEsIDEyOTEzLCAxMjkxNSwgCi0gICAgMTI5MTcsIDEyOTE5LCAxMjkyMSwgMTI5MjMsIDEyOTI1LCAxMjkyNywgMTI5MjksIDEyOTMxLCAxMjkzMywgMTI5MzUsIAotICAgIDEyOTM3LCAxMjkzOSwgMTI5NDEsIDEyOTQzLCAxMjk0NSwgMTI5NDcsIDEyOTQ5LCAxMjk1MSwgMTI5NTMsIDEyOTU1LCAKLSAgICAxMjk1NywgMTI5NTksIDEyOTYxLCAxMjk2MywgMTI5NjUsIDEyOTY3LCAxMjk2OSwgMTI5NzEsIDEyOTczLCAxMjk3NSwgCi0gICAgMTI5NzcsIDEyOTc5LCAxMjk4MSwgMTI5ODMsIDEyOTg1LCAxMjk4NywgMTI5ODksIDEyOTkxLCAxMjk5MywgMTI5OTUsIAotICAgIDEyOTk3LCAxMjk5OSwgMTMwMDEsIDEzMDAzLCAxMzAwNSwgMTMwMDcsIDEzMDA5LCAxMzAxMSwgMTMwMTMsIDEzMDE1LCAKLSAgICAxMzAxNywgMTMwMTksIDEzMDIxLCAxMzAyMywgMTMwMjUsIDEzMDI3LCAxMzAyOSwgMTMwMzEsIDEzMDMzLCAxMzAzNSwgCi0gICAgMTMwMzcsIDEzMDM5LCAxMzA0MSwgMTMwNDMsIDEzMDQ1LCAxMzA0NywgMTMwNDksIDEzMDUxLCAxMzA1MywgMTMwNTUsIAotICAgIDEzMDU3LCAxMzA1OSwgMTMwNjEsIDEzMDYzLCAxMzA2NSwgMTMwNjcsIDEzMDY5LCAxMzA3MSwgMTMwNzMsIDEzMDc1LCAKLSAgICAxMzA3NywgMTMwNzksIDEzMDgxLCAxMzA4MywgMTMwODUsIDEzMDg3LCAxMzA4OSwgMTMwOTEsIDEzMDkzLCAxMzA5NSwgCi0gICAgMTMwOTcsIDEzMDk5LCAxMzEwMSwgMTMxMDMsIDEzMTA1LCAxMzEwNywgMTMxMDksIDEzMTExLCAxMzExMywgMTMxMTUsIAotICAgIDEzMTE3LCAxMzExOSwgMTMxMjEsIDEzMTIzLCAxMzEyNSwgMTMxMjcsIDEzMTI5LCAxMzEzMSwgMTMxMzMsIDEzMTM1LCAKLSAgICAxMzEzNywgMTMxMzksIDEzMTQxLCAxMzE0MywgMTMxNDUsIDEzMTQ3LCAxMzE0OSwgMTMxNTEsIDEzMTUzLCAxMzE1NSwgCi0gICAgMTMxNTcsIDEzMTU5LCAxMzE2MSwgMTMxNjMsIDEzMTY1LCAxMzE2NywgMTMxNjksIDEzMTcxLCAxMzE3MywgMTMxNzUsIAotICAgIDEzMTc3LCAxMzE3OSwgMTMxODEsIDEzMTgzLCAxMzE4NSwgMTMxODcsIDEzMTg5LCAxMzE5MSwgMTMxOTMsIDEzMTk1LCAKLSAgICAxMzE5NywgMTMxOTksIDEzMjAxLCAxMzIwMywgMTMyMDUsIDEzMjA3LCAxMzIwOSwgMTMyMTEsIDEzMjEzLCAxMzIxNSwgCi0gICAgMTMyMTcsIDEzMjE5LCAxMzIyMSwgMTMyMjMsIDEzMjI1LCAxMzIyNywgMTMyMjksIDEzMjMxLCAxMzIzMywgMTMyMzUsIAotICAgIDEzMjM3LCAxMzIzOSwgMTMyNDEsIDEzMjQzLCAxMzI0NSwgMTMyNDcsIDEzMjQ5LCAxMzI1MSwgMTMyNTMsIDEzMjU1LCAKLSAgICAxMzI1NywgMTMyNTksIDEzMjYxLCAxMzI2MywgMTMyNjUsIDEzMjY3LCAxMzI2OSwgMTMyNzEsIDEzMjczLCAxMzI3NSwgCi0gICAgMTMyNzcsIDEzMjc5LCAxMzI4MSwgMTMyODMsIDEzMjg1LCAxMzI4NywgMTMyODksIDEzMjkxLCAxMzI5MywgMTMyOTUsIAotICAgIDEzMjk3LCAxMzI5OSwgMTMzMDEsIDEzMzAzLCAxMzMwNSwgMTMzMDcsIDEzMzA5LCAxMzMxMSwgMTMzMTMsIDEzMzE1LCAKLSAgICAxMzMxNywgMTMzMTksIDEzMzIxLCAxMzMyMywgMTMzMjUsIDEzMzI3LCAxMzMyOSwgMTMzMzEsIDEzMzMzLCAxMzMzNSwgCi0gICAgMTMzMzcsIDEzMzM5LCAxMzM0MSwgMTMzNDMsIDEzMzQ1LCAxMzM0NywgMTMzNDksIDEzMzUxLCAxMzM1MywgMTMzNTUsIAotICAgIDEzMzU3LCAxMzM1OSwgMTMzNjEsIDEzMzYzLCAxMzM2NSwgMTMzNjcsIDEzMzY5LCAxMzM3MSwgMTMzNzMsIDEzMzc1LCAKLSAgICAxMzM3NywgMTMzNzksIDEzMzgxLCAxMzM4MywgMTMzODUsIDEzMzg3LCAxMzM4OSwgMTMzOTEsIDEzMzkzLCAxMzM5NSwgCi0gICAgMTMzOTcsIDEzMzk5LCAxMzQwMSwgMTM0MDMsIDEzNDA1LCAxMzQwNywgMTM0MDksIDEzNDExLCAxMzQxMywgMTM0MTUsIAotICAgIDEzNDE3LCAxMzQxOSwgMTM0MjEsIDEzNDIzLCAxMzQyNSwgMTM0MjcsIDEzNDI5LCAxMzQzMSwgMTM0MzMsIDEzNDM1LCAKLSAgICAxMzQzNywgMTM0MzksIDEzNDQxLCAxMzQ0MywgMTM0NDUsIDEzNDQ3LCAxMzQ0OSwgMTM0NTEsIDEzNDUzLCAxMzQ1NSwgCi0gICAgMTM0NTcsIDEzNDU5LCAxMzQ2MSwgMTM0NjMsIDEzNDY1LCAxMzQ2NywgMTM0NjksIDEzNDcxLCAxMzQ3MywgMTM0NzUsIAotICAgIDEzNDc3LCAxMzQ3OSwgMTM0ODEsIDEzNDgzLCAxMzQ4NSwgMTM0ODcsIDEzNDg5LCAxMzQ5MSwgMTM0OTMsIDEzNDk1LCAKLSAgICAxMzQ5NywgMTM0OTksIDEzNTAxLCAxMzUwMywgMTM1MDUsIDEzNTA3LCAxMzUwOSwgMTM1MTEsIDEzNTEzLCAxMzUxNSwgCi0gICAgMTM1MTcsIDEzNTE5LCAxMzUyMSwgMTM1MjMsIDEzNTI1LCAxMzUyNywgMTM1MjksIDEzNTMxLCAxMzUzMywgMTM1MzUsIAotICAgIDEzNTM3LCAxMzUzOSwgMTM1NDEsIDEzNTQzLCAxMzU0NSwgMTM1NDcsIDEzNTQ5LCAxMzU1MSwgMTM1NTMsIDEzNTU1LCAKLSAgICAxMzU1NywgMTM1NTksIDEzNTYxLCAxMzU2MywgMTM1NjUsIDEzNTY3LCAxMzU2OSwgMTM1NzEsIDEzNTczLCAxMzU3NSwgCi0gICAgMTM1NzcsIDEzNTc5LCAxMzU4MSwgMTM1ODMsIDEzNTg1LCAxMzU4NywgMTM1ODksIDEzNTkxLCAxMzU5MywgMTM1OTUsIAotICAgIDEzNTk3LCAxMzU5OSwgMTM2MDEsIDEzNjAzLCAxMzYwNSwgMTM2MDcsIDEzNjA5LCAxMzYxMSwgMTM2MTMsIDEzNjE1LCAKLSAgICAxMzYxNywgMTM2MTksIDEzNjIxLCAxMzYyMywgMTM2MjUsIDEzNjI3LCAxMzYyOSwgMTM2MzEsIDEzNjMzLCAxMzYzNSwgCi0gICAgMTM2MzcsIDEzNjM5LCAxMzY0MSwgMTM2NDMsIDEzNjQ1LCAxMzY0NywgMTM2NDksIDEzNjUxLCAxMzY1MywgMTM2NTUsIAotICAgIDEzNjU3LCAxMzY1OSwgMTM2NjEsIDEzNjYzLCAxMzY2NSwgMTM2NjcsIDEzNjY5LCAxMzY3MSwgMTM2NzMsIDEzNjc1LCAKLSAgICAxMzY3NywgMTM2NzksIDEzNjgxLCAxMzY4MywgMTM2ODUsIDEzNjg3LCAxMzY4OSwgMTM2OTEsIDEzNjkzLCAxMzY5NSwgCi0gICAgMTM2OTcsIDEzNjk5LCAxMzcwMSwgMTM3MDMsIDEzNzA1LCAxMzcwNywgMTM3MDksIDEzNzExLCAxMzcxMywgMTM3MTUsIAotICAgIDEzNzE3LCAxMzcxOSwgMTM3MjEsIDEzNzIzLCAxMzcyNSwgMTM3MjcsIDEzNzI5LCAxMzczMSwgMTM3MzMsIDEzNzM1LCAKLSAgICAxMzczNywgMTM3MzksIDEzNzQxLCAxMzc0MywgMTM3NDUsIDEzNzQ3LCAxMzc0OSwgMTM3NTEsIDEzNzUzLCAxMzc1NSwgCi0gICAgMTM3NTcsIDEzNzU5LCAxMzc2MSwgMTM3NjMsIDEzNzY1LCAxMzc2NywgMTM3NjksIDEzNzcxLCAxMzc3MywgMTM3NzUsIAotICAgIDEzNzc3LCAxMzc3OSwgMTM3ODEsIDEzNzgzLCAxMzc4NSwgMTM3ODcsIDEzNzg5LCAxMzc5MSwgMTM3OTMsIDEzNzk1LCAKLSAgICAxMzc5NywgMTM3OTksIDEzODAxLCAxMzgwMywgMTM4MDUsIDEzODA3LCAxMzgwOSwgMTM4MTEsIDEzODEzLCAxMzgxNSwgCi0gICAgMTM4MTcsIDEzODE5LCAxMzgyMSwgMTM4MjMsIDEzODI1LCAxMzgyNywgMTM4MjksIDEzODMxLCAxMzgzMywgMTM4MzUsIAotICAgIDEzODM3LCAxMzgzOSwgMTM4NDEsIDEzODQzLCAxMzg0NSwgMTM4NDcsIDEzODQ5LCAxMzg1MSwgMTM4NTMsIDEzODU1LCAKLSAgICAxMzg1NywgMTM4NTksIDEzODYxLCAxMzg2MywgMTM4NjUsIDEzODY3LCAxMzg2OSwgMTM4NzEsIDEzODczLCAxMzg3NSwgCi0gICAgMTM4NzcsIDEzODc5LCAxMzg4MSwgMTM4ODMsIDEzODg1LCAxMzg4NywgMTM4ODksIDEzODkxLCAxMzg5MywgMTM4OTUsIAotICAgIDEzODk3LCAxMzg5OSwgMTM5MDEsIDEzOTAzLCAxMzkwNSwgMTM5MDcsIDEzOTA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0NSwgMTA0NDgsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNDY0MSw0MDIgKzQ1MzksNjIzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTEsIDEwNDU0LCAxMDQ1NywgMTA0NjAsIDEwNDYzLCAKKyAgICAxMDQ2NiwgMTA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDcyLCAxMDQ3NSwgCisgICAgMTA0NzgsIDEwNDgxLCAxMDQ4NCwgMTA0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNDkwLCAxMDQ5MiwgMTA0OTQsIDEwNDk2LCAxMDQ5OCwgMTA1MDAsIDEwNTAyLCAxMDUwNCwgMTA1MDYsIDEwNTA4LCAKKyAgICAxMDUxMCwgMTA1MTIsIDEwNTE0LCAxMDUxNiwgMTA1MTgsIDEwNTIwLCAxMDUyMiwgMTA1MjQsIDEwNTI2LCAxMDUyOCwgCisgICAgMTA1MzAsIDEwNTMyLCAxMDUzNCwgMTA1MzYsIDEwNTM4LCAxMDU0MCwgMTA1NDIsIDEwNTQ0LCAxMDU0NiwgMTA1NDgsIAorICAgIDEwNTUwLCAxMDU1MiwgMTA1NTQsIDEwNTU2LCAxMDU1OCwgMTA1NjAsIDEwNTYyLCAxMDU2NCwgMTA1NjYsIDEwNTY4LCAKKyAgICAxMDU3MCwgMTA1NzIsIDEwNTc0LCAxMDU3NiwgMTA1NzgsIDEwNTgwLCAxMDU4MiwgMTA1ODQsIDEwNTg2LCAxMDU4OCwgCisgICAgMTA1OTAsIDEwNTkyLCAxMDU5NCwgMTA1OTYsIDEwNTk4LCAxMDYwMCwgMTA2MDIsIDEwNjA0LCAxMDYwNiwgMTA2MDgsIAorICAgIDEwNjEwLCAxMDYxMiwgMTA2MTQsIDEwNjE2LCAxMDYxOCwgMTA2MjAsIDEwNjIyLCAxMDYyNCwgMTA2MjYsIDEwNjI4LCAKKyAgICAxMDYzMCwgMTA2MzIsIDEwNjM0LCAxMDYzNiwgMTA2MzgsIDEwNjQwLCAxMDY0MiwgMTA2NDQsIDEwNjQ2LCAxMDY0OCwgCisgICAgMTA2NTAsIDEwNjUyLCAxMDY1NCwgMTA2NTYsIDEwNjU4LCAwLCAxMDY2MCwgMTA2NjIsIDEwNjY0LCAxMDY2NiwgMTA2NjgsIAorICAgIDEwNjcwLCAxMDY3MiwgMTA2NzQsIDEwNjc2LCAxMDY3OCwgMTA2ODAsIDEwNjgyLCAxMDY4NCwgMTA2ODYsIDEwNjg4LCAKKyAgICAxMDY5MCwgMTA2OTIsIDEwNjk0LCAxMDY5NiwgMTA2OTgsIDEwNzAwLCAxMDcwMiwgMTA3MDQsIDEwNzA2LCAxMDcwOCwgCisgICAgMTA3MTAsIDEwNzEyLCAxMDcxNCwgMTA3MTYsIDEwNzE4LCAxMDcyMCwgMTA3MjIsIDEwNzI0LCAxMDcyNiwgMTA3MjgsIAorICAgIDEwNzMwLCAxMDczMiwgMTA3MzQsIDEwNzM2LCAxMDczOCwgMTA3NDAsIDEwNzQyLCAxMDc0NCwgMTA3NDYsIDEwNzQ4LCAKKyAgICAxMDc1MCwgMTA3NTIsIDEwNzU0LCAxMDc1NiwgMTA3NTgsIDEwNzYwLCAxMDc2MiwgMTA3NjQsIDEwNzY2LCAxMDc2OCwgCisgICAgMTA3NzAsIDEwNzcyLCAxMDc3NCwgMTA3NzYsIDEwNzc4LCAxMDc4MCwgMTA3ODIsIDEwNzg0LCAxMDc4NiwgMTA3ODgsIAorICAgIDEwNzkwLCAxMDc5MiwgMTA3OTQsIDEwNzk2LCAxMDc5OCwgMTA4MDAsIDAsIDEwODAyLCAxMDgwNCwgMCwgMCwgMTA4MDYsIAorICAgIDAsIDAsIDEwODA4LCAxMDgxMCwgMCwgMCwgMTA4MTIsIDEwODE0LCAxMDgxNiwgMTA4MTgsIDAsIDEwODIwLCAxMDgyMiwgCisgICAgMTA4MjQsIDEwODI2LCAxMDgyOCwgMTA4MzAsIDEwODMyLCAxMDgzNCwgMTA4MzYsIDEwODM4LCAxMDg0MCwgMTA4NDIsIDAsIAorICAgIDEwODQ0LCAwLCAxMDg0NiwgMTA4NDgsIDEwODUwLCAxMDg1MiwgMTA4NTQsIDEwODU2LCAxMDg1OCwgMCwgMTA4NjAsIAorICAgIDEwODYyLCAxMDg2NCwgMTA4NjYsIDEwODY4LCAxMDg3MCwgMTA4NzIsIDEwODc0LCAxMDg3NiwgMTA4NzgsIDEwODgwLCAKKyAgICAxMDg4MiwgMTA4ODQsIDEwODg2LCAxMDg4OCwgMTA4OTAsIDEwODkyLCAxMDg5NCwgMTA4OTYsIDEwODk4LCAxMDkwMCwgCisgICAgMTA5MDIsIDEwOTA0LCAxMDkwNiwgMTA5MDgsIDEwOTEwLCAxMDkxMiwgMTA5MTQsIDEwOTE2LCAxMDkxOCwgMTA5MjAsIAorICAgIDEwOTIyLCAxMDkyNCwgMTA5MjYsIDEwOTI4LCAxMDkzMCwgMTA5MzIsIDEwOTM0LCAxMDkzNiwgMTA5MzgsIDEwOTQwLCAKKyAgICAxMDk0MiwgMTA5NDQsIDEwOTQ2LCAxMDk0OCwgMTA5NTAsIDEwOTUyLCAxMDk1NCwgMTA5NTYsIDEwOTU4LCAxMDk2MCwgCisgICAgMTA5NjIsIDEwOTY0LCAxMDk2NiwgMTA5NjgsIDEwOTcwLCAxMDk3MiwgMTA5NzQsIDEwOTc2LCAxMDk3OCwgMTA5ODAsIAorICAgIDEwOTgyLCAxMDk4NCwgMTA5ODYsIDEwOTg4LCAwLCAxMDk5MCwgMTA5OTIsIDEwOTk0LCAxMDk5NiwgMCwgMCwgMTA5OTgsIAorICAgIDExMDAwLCAxMTAwMiwgMTEwMDQsIDExMDA2LCAxMTAwOCwgMTEwMTAsIDExMDEyLCAwLCAxMTAxNCwgMTEwMTYsIDExMDE4LCAKKyAgICAxMTAyMCwgMTEwMjIsIDExMDI0LCAxMTAyNiwgMCwgMTEwMjgsIDExMDMwLCAxMTAzMiwgMTEwMzQsIDExMDM2LCAxMTAzOCwgCisgICAgMTEwNDAsIDExMDQyLCAxMTA0NCwgMTEwNDYsIDExMDQ4LCAxMTA1MCwgMTEwNTIsIDExMDU0LCAxMTA1NiwgMTEwNTgsIAorICAgIDExMDYwLCAxMTA2MiwgMTEwNjQsIDExMDY2LCAxMTA2OCwgMTEwNzAsIDExMDcyLCAxMTA3NCwgMTEwNzYsIDExMDc4LCAKKyAgICAxMTA4MCwgMTEwODIsIDAsIDExMDg0LCAxMTA4NiwgMTEwODgsIDExMDkwLCAwLCAxMTA5MiwgMTEwOTQsIDExMDk2LCAKKyAgICAxMTA5OCwgMTExMDAsIDAsIDExMTAyLCAwLCAwLCAwLCAxMTEwNCwgMTExMDYsIDExMTA4LCAxMTExMCwgMTExMTIsIAorICAgIDExMTE0LCAxMTExNiwgMCwgMTExMTgsIDExMTIwLCAxMTEyMiwgMTExMjQsIDExMTI2LCAxMTEyOCwgMTExMzAsIDExMTMyLCAKKyAgICAxMTEzNCwgMTExMzYsIDExMTM4LCAxMTE0MCwgMTExNDIsIDExMTQ0LCAxMTE0NiwgMTExNDgsIDExMTUwLCAxMTE1MiwgCisgICAgMTExNTQsIDExMTU2LCAxMTE1OCwgMTExNjAsIDExMTYyLCAxMTE2NCwgMTExNjYsIDExMTY4LCAxMTE3MCwgMTExNzIsIAorICAgIDExMTc0LCAxMTE3NiwgMTExNzgsIDExMTgwLCAxMTE4MiwgMTExODQsIDExMTg2LCAxMTE4OCwgMTExOTAsIDExMTkyLCAKKyAgICAxMTE5NCwgMTExOTYsIDExMTk4LCAxMTIwMCwgMTEyMDIsIDExMjA0LCAxMTIwNiwgMTEyMDgsIDExMjEwLCAxMTIxMiwgCisgICAgMTEyMTQsIDExMjE2LCAxMTIxOCwgMTEyMjAsIDExMjIyLCAxMTIyNCwgMTEyMjYsIDExMjI4LCAxMTIzMCwgMTEyMzIsIAorICAgIDExMjM0LCAxMTIzNiwgMTEyMzgsIDExMjQwLCAxMTI0MiwgMTEyNDQsIDExMjQ2LCAxMTI0OCwgMTEyNTAsIDExMjUyLCAKKyAgICAxMTI1NCwgMTEyNTYsIDExMjU4LCAxMTI2MCwgMTEyNjIsIDExMjY0LCAxMTI2NiwgMTEyNjgsIDExMjcwLCAxMTI3MiwgCisgICAgMTEyNzQsIDExMjc2LCAxMTI3OCwgMTEyODAsIDExMjgyLCAxMTI4NCwgMTEyODYsIDExMjg4LCAxMTI5MCwgMTEyOTIsIAorICAgIDExMjk0LCAxMTI5NiwgMTEyOTgsIDExMzAwLCAxMTMwMiwgMTEzMDQsIDExMzA2LCAxMTMwOCwgMTEzMTAsIDExMzEyLCAKKyAgICAxMTMxNCwgMTEzMTYsIDExMzE4LCAxMTMyMCwgMTEzMjIsIDExMzI0LCAxMTMyNiwgMTEzMjgsIDExMzMwLCAxMTMzMiwgCisgICAgMTEzMzQsIDExMzM2LCAxMTMzOCwgMTEzNDAsIDExMzQyLCAxMTM0NCwgMTEzNDYsIDExMzQ4LCAxMTM1MCwgMTEzNTIsIAorICAgIDExMzU0LCAxMTM1NiwgMTEzNTgsIDExMzYwLCAxMTM2MiwgMTEzNjQsIDExMzY2LCAxMTM2OCwgMTEzNzAsIDExMzcyLCAKKyAgICAxMTM3NCwgMTEzNzYsIDExMzc4LCAxMTM4MCwgMTEzODIsIDExMzg0LCAxMTM4NiwgMTEzODgsIDExMzkwLCAxMTM5MiwgCisgICAgMTEzOTQsIDExMzk2LCAxMTM5OCwgMTE0MDAsIDExNDAyLCAxMTQwNCwgMTE0MDYsIDExNDA4LCAxMTQxMCwgMTE0MTIsIAorICAgIDExNDE0LCAxMTQxNiwgMTE0MTgsIDExNDIwLCAxMTQyMiwgMTE0MjQsIDExNDI2LCAxMTQyOCwgMTE0MzAsIDExNDMyLCAKKyAgICAxMTQzNCwgMTE0MzYsIDExNDM4LCAxMTQ0MCwgMTE0NDIsIDExNDQ0LCAxMTQ0NiwgMTE0NDgsIDExNDUwLCAxMTQ1MiwgCisgICAgMTE0NTQsIDExNDU2LCAxMTQ1OCwgMTE0NjAsIDExNDYyLCAxMTQ2NCwgMTE0NjYsIDExNDY4LCAxMTQ3MCwgMTE0NzIsIAorICAgIDExNDc0LCAxMTQ3NiwgMTE0NzgsIDExNDgwLCAxMTQ4MiwgMTE0ODQsIDExNDg2LCAxMTQ4OCwgMTE0OTAsIDExNDkyLCAKKyAgICAxMTQ5NCwgMTE0OTYsIDExNDk4LCAxMTUwMCwgMTE1MDIsIDExNTA0LCAxMTUwNiwgMTE1MDgsIDExNTEwLCAxMTUxMiwgCisgICAgMTE1MTQsIDExNTE2LCAxMTUxOCwgMTE1MjAsIDExNTIyLCAxMTUyNCwgMTE1MjYsIDExNTI4LCAxMTUzMCwgMTE1MzIsIAorICAgIDExNTM0LCAxMTUzNiwgMTE1MzgsIDExNTQwLCAxMTU0MiwgMTE1NDQsIDExNTQ2LCAxMTU0OCwgMTE1NTAsIDExNTUyLCAKKyAgICAxMTU1NCwgMTE1NTYsIDExNTU4LCAxMTU2MCwgMTE1NjIsIDExNTY0LCAxMTU2NiwgMTE1NjgsIDExNTcwLCAxMTU3MiwgCisgICAgMTE1NzQsIDExNTc2LCAxMTU3OCwgMTE1ODAsIDExNTgyLCAxMTU4NCwgMTE1ODYsIDExNTg4LCAxMTU5MCwgMTE1OTIsIAorICAgIDExNTk0LCAxMTU5NiwgMTE1OTgsIDExNjAwLCAxMTYwMiwgMTE2MDQsIDExNjA2LCAxMTYwOCwgMTE2MTAsIDExNjEyLCAKKyAgICAxMTYxNCwgMTE2MTYsIDExNjE4LCAxMTYyMCwgMTE2MjIsIDExNjI0LCAxMTYyNiwgMTE2MjgsIDExNjMwLCAxMTYzMiwgCisgICAgMTE2MzQsIDExNjM2LCAxMTYzOCwgMTE2NDAsIDExNjQyLCAxMTY0NCwgMTE2NDYsIDExNjQ4LCAxMTY1MCwgMTE2NTIsIAorICAgIDExNjU0LCAxMTY1NiwgMTE2NTgsIDExNjYwLCAxMTY2MiwgMTE2NjQsIDExNjY2LCAxMTY2OCwgMTE2NzAsIDExNjcyLCAKKyAgICAxMTY3NCwgMTE2NzYsIDExNjc4LCAxMTY4MCwgMTE2ODIsIDExNjg0LCAxMTY4NiwgMTE2ODgsIDExNjkwLCAxMTY5MiwgCisgICAgMTE2OTQsIDExNjk2LCAxMTY5OCwgMTE3MDAsIDExNzAyLCAxMTcwNCwgMTE3MDYsIDExNzA4LCAxMTcxMCwgMTE3MTIsIAorICAgIDExNzE0LCAxMTcxNiwgMTE3MTgsIDExNzIwLCAxMTcyMiwgMTE3MjQsIDExNzI2LCAxMTcyOCwgMTE3MzAsIDExNzMyLCAKKyAgICAxMTczNCwgMTE3MzYsIDExNzM4LCAxMTc0MCwgMTE3NDIsIDExNzQ0LCAxMTc0NiwgMTE3NDgsIDExNzUwLCAxMTc1MiwgCisgICAgMTE3NTQsIDExNzU2LCAxMTc1OCwgMTE3NjAsIDExNzYyLCAxMTc2NCwgMTE3NjYsIDExNzY4LCAxMTc3MCwgMTE3NzIsIAorICAgIDExNzc0LCAxMTc3NiwgMTE3NzgsIDExNzgwLCAxMTc4MiwgMTE3ODQsIDExNzg2LCAxMTc4OCwgMTE3OTAsIDExNzkyLCAKKyAgICAxMTc5NCwgMTE3OTYsIDAsIDAsIDExNzk4LCAxMTgwMCwgMTE4MDIsIDExODA0LCAxMTgwNiwgMTE4MDgsIDExODEwLCAKKyAgICAxMTgxMiwgMTE4MTQsIDExODE2LCAxMTgxOCwgMTE4MjAsIDExODIyLCAxMTgyNCwgMTE4MjYsIDExODI4LCAxMTgzMCwgCisgICAgMTE4MzIsIDExODM0LCAxMTgzNiwgMTE4MzgsIDExODQwLCAxMTg0MiwgMTE4NDQsIDExODQ2LCAxMTg0OCwgMTE4NTAsIAorICAgIDExODUyLCAxMTg1NCwgMTE4NTYsIDExODU4LCAxMTg2MCwgMTE4NjIsIDExODY0LCAxMTg2NiwgMTE4NjgsIDExODcwLCAKKyAgICAxMTg3MiwgMTE4NzQsIDExODc2LCAxMTg3OCwgMTE4ODAsIDExODgyLCAxMTg4NCwgMTE4ODYsIDExODg4LCAxMTg5MCwgCisgICAgMTE4OTIsIDExODk0LCAxMTg5NiwgMTE4OTgsIDExOTAwLCAxMTkwMiwgMTE5MDQsIDExOTA2LCAxMTkwOCwgMTE5MTAsIAorICAgIDExOTEyLCAxMTkxNCwgMTE5MTYsIDExOTE4LCAxMTkyMCwgMTE5MjIsIDExOTI0LCAxMTkyNiwgMTE5MjgsIDExOTMwLCAKKyAgICAxMTkzMiwgMTE5MzQsIDExOTM2LCAxMTkzOCwgMTE5NDAsIDExOTQyLCAxMTk0NCwgMTE5NDYsIDExOTQ4LCAxMTk1MCwgCisgICAgMTE5NTIsIDExOTU0LCAxMTk1NiwgMTE5NTgsIDExOTYwLCAxMTk2MiwgMTE5NjQsIDExOTY2LCAxMTk2OCwgMTE5NzAsIAorICAgIDExOTcyLCAxMTk3NCwgMTE5NzYsIDExOTc4LCAxMTk4MCwgMTE5ODIsIDExOTg0LCAxMTk4NiwgMTE5ODgsIDExOTkwLCAKKyAgICAxMTk5MiwgMTE5OTQsIDExOTk2LCAxMTk5OCwgMTIwMDAsIDEyMDAyLCAxMjAwNCwgMTIwMDYsIDEyMDA4LCAxMjAxMCwgCisgICAgMTIwMTIsIDEyMDE0LCAxMjAxNiwgMTIwMTgsIDEyMDIwLCAxMjAyMiwgMTIwMjQsIDEyMDI2LCAxMjAyOCwgMTIwMzAsIAorICAgIDEyMDMyLCAxMjAzNCwgMTIwMzYsIDEyMDM4LCAxMjA0MCwgMTIwNDIsIDEyMDQ0LCAxMjA0NiwgMTIwNDgsIDEyMDUwLCAKKyAgICAxMjA1MiwgMTIwNTQsIDEyMDU2LCAxMjA1OCwgMTIwNjAsIDEyMDYyLCAxMjA2NCwgMTIwNjYsIDEyMDY4LCAxMjA3MCwgCisgICAgMTIwNzIsIDEyMDc0LCAxMjA3NiwgMTIwNzgsIDEyMDgwLCAxMjA4MiwgMTIwODQsIDEyMDg2LCAxMjA4OCwgMTIwOTAsIAorICAgIDEyMDkyLCAxMjA5NCwgMTIwOTYsIDEyMDk4LCAxMjEwMCwgMTIxMDIsIDEyMTA0LCAxMjEwNiwgMTIxMDgsIDEyMTEwLCAKKyAgICAxMjExMiwgMTIxMTQsIDEyMTE2LCAxMjExOCwgMTIxMjAsIDEyMTIyLCAxMjEyNCwgMTIxMjYsIDEyMTI4LCAxMjEzMCwgCisgICAgMTIxMzIsIDEyMTM0LCAxMjEzNiwgMTIxMzgsIDEyMTQwLCAxMjE0MiwgMTIxNDQsIDEyMTQ2LCAxMjE0OCwgMTIxNTAsIAorICAgIDEyMTUyLCAxMjE1NCwgMTIxNTYsIDEyMTU4LCAxMjE2MCwgMTIxNjIsIDEyMTY0LCAxMjE2NiwgMTIxNjgsIDEyMTcwLCAKKyAgICAxMjE3MiwgMTIxNzQsIDEyMTc2LCAxMjE3OCwgMTIxODAsIDEyMTgyLCAxMjE4NCwgMTIxODYsIDEyMTg4LCAxMjE5MCwgCisgICAgMTIxOTIsIDEyMTk0LCAxMjE5NiwgMTIxOTgsIDEyMjAwLCAxMjIwMiwgMTIyMDQsIDEyMjA2LCAxMjIwOCwgMTIyMTAsIAorICAgIDEyMjEyLCAxMjIxNCwgMTIyMTYsIDEyMjE4LCAxMjIyMCwgMTIyMjIsIDEyMjI0LCAxMjIyNiwgMTIyMjgsIDEyMjMwLCAKKyAgICAxMjIzMiwgMTIyMzQsIDEyMjM2LCAxMjIzOCwgMTIyNDAsIDEyMjQyLCAxMjI0NCwgMTIyNDYsIDEyMjQ4LCAxMjI1MCwgCisgICAgMTIyNTIsIDEyMjU0LCAxMjI1NiwgMTIyNTgsIDEyMjYwLCAxMjI2MiwgMTIyNjQsIDEyMjY2LCAxMjI2OCwgMTIyNzAsIAorICAgIDEyMjcyLCAxMjI3NCwgMTIyNzYsIDEyMjc4LCAxMjI4MCwgMTIyODIsIDEyMjg0LCAxMjI4NiwgMTIyODgsIDEyMjkwLCAKKyAgICAxMjI5MiwgMTIyOTQsIDEyMjk2LCAxMjI5OCwgMTIzMDAsIDEyMzAyLCAxMjMwNCwgMTIzMDYsIDEyMzA4LCAxMjMxMCwgCisgICAgMTIzMTIsIDEyMzE0LCAxMjMxNiwgMTIzMTgsIDEyMzIwLCAxMjMyMiwgMTIzMjQsIDEyMzI2LCAxMjMyOCwgMTIzMzAsIAorICAgIDEyMzMyLCAxMjMzNCwgMTIzMzYsIDEyMzM4LCAxMjM0MCwgMTIzNDIsIDEyMzQ0LCAxMjM0NiwgMTIzNDgsIDEyMzUwLCAKKyAgICAxMjM1MiwgMTIzNTQsIDEyMzU2LCAxMjM1OCwgMTIzNjAsIDEyMzYyLCAxMjM2NCwgMTIzNjYsIDEyMzY4LCAxMjM3MCwgCisgICAgMTIzNzIsIDEyMzc0LCAxMjM3NiwgMTIzNzgsIDEyMzgwLCAwLCAwLCAxMjM4MiwgMTIzODQsIDEyMzg2LCAxMjM4OCwgCisgICAgMTIzOTAsIDEyMzkyLCAxMjM5NCwgMTIzOTYsIDEyMzk4LCAxMjQwMCwgMTI0MDIsIDEyNDA0LCAxMjQwNiwgMTI0MDgsIAorICAgIDEyNDEwLCAxMjQxMiwgMTI0MTQsIDEyNDE2LCAxMjQxOCwgMTI0MjAsIDEyNDIyLCAxMjQyNCwgMTI0MjYsIDEyNDI4LCAKKyAgICAxMjQzMCwgMTI0MzIsIDEyNDM0LCAxMjQzNiwgMTI0MzgsIDEyNDQwLCAxMjQ0MiwgMTI0NDQsIDEyNDQ2LCAxMjQ0OCwgCisgICAgMTI0NTAsIDEyNDUyLCAxMjQ1NCwgMTI0NTYsIDEyNDU4LCAxMjQ2MCwgMTI0NjIsIDEyNDY0LCAxMjQ2NiwgMTI0NjgsIAorICAgIDEyNDcwLCAxMjQ3MiwgMTI0NzQsIDEyNDc2LCAxMjQ3OCwgMTI0ODAsIDEyNDgyLCAxMjQ4NCwgMTI0ODYsIDEyNDg4LCAwLCAKKyAgICAxMjQ5MCwgMTI0OTIsIDEyNDk0LCAxMjQ5NiwgMTI0OTgsIDEyNTAwLCAxMjUwMiwgMTI1MDQsIDEyNTA2LCAxMjUwOCwgCisgICAgMTI1MTAsIDEyNTEyLCAxMjUxNCwgMTI1MTYsIDEyNTE4LCAxMjUyMCwgMTI1MjIsIDEyNTI0LCAxMjUyNiwgMTI1MjgsIAorICAgIDEyNTMwLCAxMjUzMiwgMTI1MzQsIDEyNTM2LCAxMjUzOCwgMTI1NDAsIDEyNTQyLCAwLCAxMjU0NCwgMTI1NDYsIDAsIAorICAgIDEyNTQ4LCAwLCAwLCAxMjU1MCwgMCwgMTI1NTIsIDEyNTU0LCAxMjU1NiwgMTI1NTgsIDEyNTYwLCAxMjU2MiwgMTI1NjQsIAorICAgIDEyNTY2LCAxMjU2OCwgMTI1NzAsIDAsIDEyNTcyLCAxMjU3NCwgMTI1NzYsIDEyNTc4LCAwLCAxMjU4MCwgMCwgMTI1ODIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTg0LCAwLCAwLCAwLCAwLCAxMjU4NiwgMCwgMTI1ODgsIDAsIDEyNTkwLCAwLCAxMjU5MiwgCisgICAgMTI1OTQsIDEyNTk2LCAwLCAxMjU5OCwgMTI2MDAsIDAsIDEyNjAyLCAwLCAwLCAxMjYwNCwgMCwgMTI2MDYsIDAsIDEyNjA4LCAKKyAgICAwLCAxMjYxMCwgMCwgMTI2MTIsIDAsIDEyNjE0LCAxMjYxNiwgMCwgMTI2MTgsIDAsIDAsIDEyNjIwLCAxMjYyMiwgMTI2MjQsIAorICAgIDEyNjI2LCAwLCAxMjYyOCwgMTI2MzAsIDEyNjMyLCAxMjYzNCwgMTI2MzYsIDEyNjM4LCAxMjY0MCwgMCwgMTI2NDIsIAorICAgIDEyNjQ0LCAxMjY0NiwgMTI2NDgsIDAsIDEyNjUwLCAxMjY1MiwgMTI2NTQsIDEyNjU2LCAwLCAxMjY1OCwgMCwgMTI2NjAsIAorICAgIDEyNjYyLCAxMjY2NCwgMTI2NjYsIDEyNjY4LCAxMjY3MCwgMTI2NzIsIDEyNjc0LCAxMjY3NiwgMTI2NzgsIDAsIDEyNjgwLCAKKyAgICAxMjY4MiwgMTI2ODQsIDEyNjg2LCAxMjY4OCwgMTI2OTAsIDEyNjkyLCAxMjY5NCwgMTI2OTYsIDEyNjk4LCAxMjcwMCwgCisgICAgMTI3MDIsIDEyNzA0LCAxMjcwNiwgMTI3MDgsIDEyNzEwLCAxMjcxMiwgMCwgMCwgMCwgMCwgMCwgMTI3MTQsIDEyNzE2LCAKKyAgICAxMjcxOCwgMCwgMTI3MjAsIDEyNzIyLCAxMjcyNCwgMTI3MjYsIDEyNzI4LCAwLCAxMjczMCwgMTI3MzIsIDEyNzM0LCAKKyAgICAxMjczNiwgMTI3MzgsIDEyNzQwLCAxMjc0MiwgMTI3NDQsIDEyNzQ2LCAxMjc0OCwgMTI3NTAsIDEyNzUyLCAxMjc1NCwgCisgICAgMTI3NTYsIDEyNzU4LCAxMjc2MCwgMTI3NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyNzY0LCAxMjc2NywgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgyLCAxMjc4NSwgCisgICAgMTI3ODgsIDEyNzkxLCAxMjc5NCwgMCwgMCwgMCwgMCwgMCwgMTI3OTcsIDEyODAxLCAxMjgwNSwgMTI4MDksIDEyODEzLCAKKyAgICAxMjgxNywgMTI4MjEsIDEyODI1LCAxMjgyOSwgMTI4MzMsIDEyODM3LCAxMjg0MSwgMTI4NDUsIDEyODQ5LCAxMjg1MywgCisgICAgMTI4NTcsIDEyODYxLCAxMjg2NSwgMTI4NjksIDEyODczLCAxMjg3NywgMTI4ODEsIDEyODg1LCAxMjg4OSwgMTI4OTMsIAorICAgIDEyODk3LCAxMjkwMSwgMTI5MDUsIDEyOTA3LCAxMjkwOSwgMTI5MTIsIDAsIDEyOTE1LCAxMjkxNywgMTI5MTksIDEyOTIxLCAKKyAgICAxMjkyMywgMTI5MjUsIDEyOTI3LCAxMjkyOSwgMTI5MzEsIDEyOTMzLCAxMjkzNSwgMTI5MzcsIDEyOTM5LCAxMjk0MSwgCisgICAgMTI5NDMsIDEyOTQ1LCAxMjk0NywgMTI5NDksIDEyOTUxLCAxMjk1MywgMTI5NTUsIDEyOTU3LCAxMjk1OSwgMTI5NjEsIAorICAgIDEyOTYzLCAxMjk2NSwgMTI5NjcsIDEyOTcwLCAxMjk3MywgMTI5NzYsIDEyOTc5LCAxMjk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5ODYsIDEyOTg5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTI5OTUsIDEyOTk4LCAxMzAwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTMwMDMsIDEzMDA1LCAxMzAwNywgMTMwMDksIDEzMDExLCAxMzAxMywgMTMwMTUsIDEzMDE3LCAxMzAxOSwgMTMwMjEsIAorICAgIDEzMDIzLCAxMzAyNSwgMTMwMjcsIDEzMDI5LCAxMzAzMSwgMTMwMzMsIDEzMDM1LCAxMzAzNywgMTMwMzksIDEzMDQxLCAKKyAgICAxMzA0MywgMTMwNDUsIDEzMDQ3LCAxMzA0OSwgMTMwNTEsIDEzMDUzLCAxMzA1NSwgMTMwNTcsIDEzMDU5LCAxMzA2MSwgCisgICAgMTMwNjMsIDEzMDY1LCAxMzA2NywgMTMwNjksIDEzMDcxLCAxMzA3MywgMTMwNzUsIDEzMDc3LCAxMzA3OSwgMTMwODEsIAorICAgIDEzMDgzLCAxMzA4NSwgMTMwODcsIDAsIDAsIDAsIDAsIDAsIDEzMDg5LCAxMzA5MywgMTMwOTcsIDEzMTAxLCAxMzEwNSwgCisgICAgMTMxMDksIDEzMTEzLCAxMzExNywgMTMxMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTI1LCAxMzEyNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTMxMjksIDEzMTMxLCAxMzEzMywgMTMxMzUsIDEzMTM3LCAxMzEzOSwgMTMxNDEsIDEzMTQzLCAxMzE0NSwgCisgICAgMTMxNDcsIDEzMTQ5LCAxMzE1MSwgMTMxNTMsIDEzMTU1LCAxMzE1NywgMTMxNTksIDEzMTYxLCAxMzE2MywgMTMxNjUsIAorICAgIDEzMTY3LCAxMzE2OSwgMTMxNzEsIDEzMTczLCAxMzE3NSwgMTMxNzcsIDEzMTc5LCAxMzE4MSwgMTMxODMsIDEzMTg1LCAKKyAgICAxMzE4NywgMTMxODksIDEzMTkxLCAxMzE5MywgMTMxOTUsIDEzMTk3LCAxMzE5OSwgMTMyMDEsIDEzMjAzLCAxMzIwNSwgCisgICAgMTMyMDcsIDEzMjA5LCAxMzIxMSwgMTMyMTMsIDEzMjE1LCAxMzIxNywgMTMyMTksIDEzMjIxLCAxMzIyMywgMTMyMjUsIAorICAgIDEzMjI3LCAxMzIyOSwgMTMyMzEsIDEzMjMzLCAxMzIzNSwgMTMyMzcsIDEzMjM5LCAxMzI0MSwgMTMyNDMsIDEzMjQ1LCAKKyAgICAxMzI0NywgMTMyNDksIDEzMjUxLCAxMzI1MywgMTMyNTUsIDEzMjU3LCAxMzI1OSwgMTMyNjEsIDEzMjYzLCAxMzI2NSwgCisgICAgMTMyNjcsIDEzMjY5LCAxMzI3MSwgMTMyNzMsIDEzMjc1LCAxMzI3NywgMTMyNzksIDEzMjgxLCAxMzI4MywgMTMyODUsIAorICAgIDEzMjg3LCAxMzI4OSwgMTMyOTEsIDEzMjkzLCAxMzI5NSwgMTMyOTcsIDEzMjk5LCAxMzMwMSwgMTMzMDMsIDEzMzA1LCAKKyAgICAxMzMwNywgMTMzMDksIDEzMzExLCAxMzMxMywgMTMzMTUsIDEzMzE3LCAxMzMxOSwgMTMzMjEsIDEzMzIzLCAxMzMyNSwgCisgICAgMTMzMjcsIDEzMzI5LCAxMzMzMSwgMTMzMzMsIDEzMzM1LCAxMzMzNywgMTMzMzksIDEzMzQxLCAxMzM0MywgMTMzNDUsIAorICAgIDEzMzQ3LCAxMzM0OSwgMTMzNTEsIDEzMzUzLCAxMzM1NSwgMTMzNTcsIDEzMzU5LCAxMzM2MSwgMTMzNjMsIDEzMzY1LCAKKyAgICAxMzM2NywgMTMzNjksIDEzMzcxLCAxMzM3MywgMTMzNzUsIDEzMzc3LCAxMzM3OSwgMTMzODEsIDEzMzgzLCAxMzM4NSwgCisgICAgMTMzODcsIDEzMzg5LCAxMzM5MSwgMTMzOTMsIDEzMzk1LCAxMzM5NywgMTMzOTksIDEzNDAxLCAxMzQwMywgMTM0MDUsIAorICAgIDEzNDA3LCAxMzQwOSwgMTM0MTEsIDEzNDEzLCAxMzQxNSwgMTM0MTcsIDEzNDE5LCAxMzQyMSwgMTM0MjMsIDEzNDI1LCAKKyAgICAxMzQyNywgMTM0MjksIDEzNDMxLCAxMzQzMywgMTM0MzUsIDEzNDM3LCAxMzQzOSwgMTM0NDEsIDEzNDQzLCAxMzQ0NSwgCisgICAgMTM0NDcsIDEzNDQ5LCAxMzQ1MSwgMTM0NTMsIDEzNDU1LCAxMzQ1NywgMTM0NTksIDEzNDYxLCAxMzQ2MywgMTM0NjUsIAorICAgIDEzNDY3LCAxMzQ2OSwgMTM0NzEsIDEzNDczLCAxMzQ3NSwgMTM0NzcsIDEzNDc5LCAxMzQ4MSwgMTM0ODMsIDEzNDg1LCAKKyAgICAxMzQ4NywgMTM0ODksIDEzNDkxLCAxMzQ5MywgMTM0OTUsIDEzNDk3LCAxMzQ5OSwgMTM1MDEsIDEzNTAzLCAxMzUwNSwgCisgICAgMTM1MDcsIDEzNTA5LCAxMzUxMSwgMTM1MTMsIDEzNTE1LCAxMzUxNywgMTM1MTksIDEzNTIxLCAxMzUyMywgMTM1MjUsIAorICAgIDEzNTI3LCAxMzUyOSwgMTM1MzEsIDEzNTMzLCAxMzUzNSwgMTM1MzcsIDEzNTM5LCAxMzU0MSwgMTM1NDMsIDEzNTQ1LCAKKyAgICAxMzU0NywgMTM1NDksIDEzNTUxLCAxMzU1MywgMTM1NTUsIDEzNTU3LCAxMzU1OSwgMTM1NjEsIDEzNTYzLCAxMzU2NSwgCisgICAgMTM1NjcsIDEzNTY5LCAxMzU3MSwgMTM1NzMsIDEzNTc1LCAxMzU3NywgMTM1NzksIDEzNTgxLCAxMzU4MywgMTM1ODUsIAorICAgIDEzNTg3LCAxMzU4OSwgMTM1OTEsIDEzNTkzLCAxMzU5NSwgMTM1OTcsIDEzNTk5LCAxMzYwMSwgMTM2MDMsIDEzNjA1LCAKKyAgICAxMzYwNywgMTM2MDksIDEzNjExLCAxMzYxMywgMTM2MTUsIDEzNjE3LCAxMzYxOSwgMTM2MjEsIDEzNjIzLCAxMzYyNSwgCisgICAgMTM2MjcsIDEzNjI5LCAxMzYzMSwgMTM2MzMsIDEzNjM1LCAxMzYzNywgMTM2MzksIDEzNjQxLCAxMzY0MywgMTM2NDUsIAorICAgIDEzNjQ3LCAxMzY0OSwgMTM2NTEsIDEzNjUzLCAxMzY1NSwgMTM2NTcsIDEzNjU5LCAxMzY2MSwgMTM2NjMsIDEzNjY1LCAKKyAgICAxMzY2NywgMTM2NjksIDEzNjcxLCAxMzY3MywgMTM2NzUsIDEzNjc3LCAxMzY3OSwgMTM2ODEsIDEzNjgzLCAxMzY4NSwgCisgICAgMTM2ODcsIDEzNjg5LCAxMzY5MSwgMTM2OTMsIDEzNjk1LCAxMzY5NywgMTM2OTksIDEzNzAxLCAxMzcwMywgMTM3MDUsIAorICAgIDEzNzA3LCAxMzcwOSwgMTM3MTEsIDEzNzEzLCAxMzcxNSwgMTM3MTcsIDEzNzE5LCAxMzcyMSwgMTM3MjMsIDEzNzI1LCAKKyAgICAxMzcyNywgMTM3MjksIDEzNzMxLCAxMzczMywgMTM3MzUsIDEzNzM3LCAxMzczOSwgMTM3NDEsIDEzNzQzLCAxMzc0NSwgCisgICAgMTM3NDcsIDEzNzQ5LCAxMzc1MSwgMTM3NTMsIDEzNzU1LCAxMzc1NywgMTM3NTksIDEzNzYxLCAxMzc2MywgMTM3NjUsIAorICAgIDEzNzY3LCAxMzc2OSwgMTM3NzEsIDEzNzczLCAxMzc3NSwgMTM3NzcsIDEzNzc5LCAxMzc4MSwgMTM3ODMsIDEzNzg1LCAKKyAgICAxMzc4NywgMTM3ODksIDEzNzkxLCAxMzc5MywgMTM3OTUsIDEzNzk3LCAxMzc5OSwgMTM4MDEsIDEzODAzLCAxMzgwNSwgCisgICAgMTM4MDcsIDEzODA5LCAxMzgxMSwgMTM4MTMsIDEzODE1LCAxMzgxNywgMTM4MTksIDEzODIxLCAxMzgyMywgMTM4MjUsIAorICAgIDEzODI3LCAxMzgyOSwgMTM4MzEsIDEzODMzLCAxMzgzNSwgMTM4MzcsIDEzODM5LCAxMzg0MSwgMTM4NDMsIDEzODQ1LCAKKyAgICAxMzg0NywgMTM4NDksIDEzODUxLCAxMzg1MywgMTM4NTUsIDEzODU3LCAxMzg1OSwgMTM4NjEsIDEzODYzLCAxMzg2NSwgCisgICAgMTM4NjcsIDEzODY5LCAxMzg3MSwgMTM4NzMsIDEzODc1LCAxMzg3NywgMTM4NzksIDEzODgxLCAxMzg4MywgMTM4ODUsIAorICAgIDEzODg3LCAxMzg4OSwgMTM4OTEsIDEzODkzLCAxMzg5NSwgMTM4OTcsIDEzODk5LCAxMzkwMSwgMTM5MDMsIDEzOTA1LCAKKyAgICAxMzkwNywgMTM5MDksIDEzOTExLCAxMzkxMywgMTM5MTUsIDEzOTE3LCAxMzkxOSwgMTM5MjEsIDEzOTIzLCAxMzkyNSwgCisgICAgMTM5MjcsIDEzOTI5LCAxMzkzMSwgMTM5MzMsIDEzOTM1LCAxMzkzNywgMTM5MzksIDEzOTQxLCAxMzk0MywgMTM5NDUsIAorICAgIDEzOTQ3LCAxMzk0OSwgMTM5NTEsIDEzOTUzLCAxMzk1NSwgMTM5NTcsIDEzOTU5LCAxMzk2MSwgMTM5NjMsIDEzOTY1LCAKKyAgICAxMzk2NywgMTM5NjksIDEzOTcxLCAxMzk3MywgMTM5NzUsIDEzOTc3LCAxMzk3OSwgMTM5ODEsIDEzOTgzLCAxMzk4NSwgCisgICAgMTM5ODcsIDEzOTg5LCAxMzk5MSwgMTM5OTMsIDEzOTk1LCAxMzk5NywgMTM5OTksIDE0MDAxLCAxNDAwMywgMTQwMDUsIAorICAgIDE0MDA3LCAxNDAwOSwgMTQwMTEsIDE0MDEzLCAxNDAxNSwgMTQwMTcsIDE0MDE5LCAxNDAyMSwgMTQwMjMsIDE0MDI1LCAKKyAgICAxNDAyNywgMTQwMjksIDE0MDMxLCAxNDAzMywgMTQwMzUsIDE0MDM3LCAxNDAzOSwgMTQwNDEsIDE0MDQzLCAxNDA0NSwgCisgICAgMTQwNDcsIDE0MDQ5LCAxNDA1MSwgMTQwNTMsIDE0MDU1LCAxNDA1NywgMTQwNTksIDE0MDYxLCAxNDA2MywgMTQwNjUsIAorICAgIDE0MDY3LCAxNDA2OSwgMTQwNzEsIDE0MDczLCAxNDA3NSwgMTQwNzcsIDE0MDc5LCAxNDA4MSwgMTQwODMsIDE0MDg1LCAKKyAgICAxNDA4NywgMTQwODksIDE0MDkxLCAxNDA5MywgMTQwOTUsIDE0MDk3LCAxNDA5OSwgMTQxMDEsIDE0MTAzLCAxNDEwNSwgCisgICAgMTQxMDcsIDE0MTA5LCAxNDExMSwgMTQxMTMsIDE0MTE1LCAxNDExNywgMTQxMTksIDE0MTIxLCAxNDEyMywgMTQxMjUsIAorICAgIDE0MTI3LCAxNDEyOSwgMTQxMzEsIDE0MTMzLCAxNDEzNSwgMTQxMzcsIDE0MTM5LCAxNDE0MSwgMTQxNDMsIDE0MTQ1LCAKKyAgICAxNDE0NywgMTQxNDksIDE0MTUxLCAxNDE1MywgMTQxNTUsIDE0MTU3LCAxNDE1OSwgMTQxNjEsIDE0MTYzLCAxNDE2NSwgCisgICAgMTQxNjcsIDE0MTY5LCAxNDE3MSwgMTQxNzMsIDE0MTc1LCAxNDE3NywgMTQxNzksIDE0MTgxLCAxNDE4MywgMTQxODUsIAorICAgIDE0MTg3LCAxNDE4OSwgMTQxOTEsIDE0MTkzLCAxNDE5NSwgMTQxOTcsIDE0MTk5LCAxNDIwMSwgMTQyMDMsIDE0MjA1LCAKKyAgICAxNDIwNywgMTQyMDksIDE0MjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIE5GQyBwYWlycyAqLwogI2RlZmluZSBDT01QX1NISUZUIDIKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBjb21wX2luZGV4W10gPSB7CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgNCwgNSwgNiwgNywgOCwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAsIDExLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIDE0LCAKLSAgICAxNSwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDMyLCAzMywgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIAotICAgIDUwLCAwLCA1MSwgNTIsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgNTUsIDU2LCA1NywgNTgsIDU5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MCwgNjEsIDAsIDAsIDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MywgNjQsIDY1LCAwLCAKLSAgICA2NiwgNjcsIDY4LCAwLCAwLCAwLCAwLCAwLCAwLCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzYsIDAsIDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzksIDAsIDgwLCA4MSwgODIsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NCwgODUsIDg2LCAwLCA4NywgODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDg5LCA5MCwgMCwgOTEsIDkyLCA5MywgMCwgMCwgMCwgMCwgMCwgMCwgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDEsIDAsIDAsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzLCAKLSAgICAxMDQsIDAsIDAsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDcsIDEwOCwgMTA5LCAwLCAxMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMSwgMTEyLCAKLSAgICAwLCAxMTMsIDExNCwgMCwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjIsIDAsIDAsIDEyMywgMCwgMTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUsIAotICAgIDEyNiwgMTI3LCAxMjgsIDAsIDEyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAwLCAxMzEsIDEzMiwgMTMzLCAKLSAgICAxMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDAsIAotICAgIDE0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MiwgCi0gICAgMCwgMTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQsIDAsIDAsIDE2NSwgMTY2LCAxNjcsIDAsIDE2OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTY5LCAwLCAwLCAxNzAsIDE3MSwgMTcyLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3NCwgMTc1LCAwLCAwLCAxNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NywgMTc4LCAxNzksIDE4MCwgMCwgMTgxLCAKLSAgICAxODIsIDE4MywgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDAsIDE4OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTkwLCAxOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5MiwgMTkzLCAxOTQsIAotICAgIDE5NSwgMTk2LCAxOTcsIDE5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTk5LCAyMDAsIDIwMSwgMCwgMjAyLCAyMDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE3LCAwLCAwLCAwLCAKLSAgICAyMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMCwgMjIzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNSwgMjI2LCAyMjcsIDAsIAotICAgIDIyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI5LCAyMzAsIDIzMSwgMCwgMjMyLCAwLCAyMzMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDIzNCwgMjM1LCAwLCAwLCAwLCAwLCAwLCAyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNywgMjM4LCAyMzksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDUsIDI0NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNDgsIDI0OSwgMjUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTEsIDI1MiwgMjUzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU2LCAyNTcsIDAsIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjU5LCAyNjAsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNjYsIDI2NywgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMjcxLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3MywgMjc0LCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzgsIDI3OSwgCi0gICAgMCwgMjgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIDI4MiwgMjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyODQsIDI4NSwgMjg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OCwgMjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxLCAzMDIsIDMwMywgMCwgMCwgMzA0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzMDUsIDMwNiwgMzA3LCAwLCAzMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOSwgCi0gICAgMzEwLCAzMTEsIDAsIDMxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEzLCAwLCAzMTQsIDAsIDMxNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjYsIDMyNywgMCwgMzI4LCAzMjksIDAsIDAsIDMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMxLCAwLCAKLSAgICAwLCAzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMywgMzM0LCAwLCAwLCAzMzUsIDAsIDAsIDAsIDMzNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzM3LCAzMzgsIDMzOSwgMCwgMzQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDEsIDAsIDAsIAotICAgIDM0MiwgMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM0NSwgMzQ2LCAzNDcsIDAsIDM0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ5LCAwLCAwLCAwLCAKLSAgICAzNTAsIDAsIDAsIDM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDM1NCwgMzU1LCAzNTYsIDAsIDM1NywgMCwgCi0gICAgMCwgMzU4LCAzNTksIDAsIDAsIDAsIDAsIDAsIDM2MCwgMCwgMCwgMCwgMzYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNjIsIDAsIDAsIDM2MywgMzY0LCAwLCAwLCAzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NiwgMzY3LCAwLCAzNjgsIDAsIDAsIAotICAgIDAsIDM2OSwgMCwgMCwgMCwgMCwgMCwgMzcwLCAzNzEsIDAsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzQsIDM3NSwgMzc2LCAzNzcsIDM3OCwgMCwgMCwgCi0gICAgMzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAzODAsIDAsIDAsIDM4MSwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAzODMsIAotICAgIDM4NCwgMCwgMCwgMCwgMCwgMCwgMzg1LCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg4LCAwLCAwLCAwLCAwLCAwLCAwLCAzODksIDM5MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzOTIsIDM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzOTUsIDM5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM5OSwgNDAwLCA0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDQsIAotICAgIDQwNSwgNDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAsIDQxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTMsIDQxNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNywgNDE4LCA0MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjIsIDQyMywgNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NTUsIDQ1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0LCA1LCA2LCA3LCA4LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMCwgMCwgMTEsIDAsIDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMywgCisgICAgMTQsIDE1LCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE4LCAwLCAxOSwgMjAsIDIxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzIsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNCwgMzUsIDM2LCAwLCAzNywgMzgsIDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MCwgNDEsIDQyLCA0MywgNDQsIAorICAgIDQ1LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCAwLCA0OSwgMCwgNTAsIDUxLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDU0LCAwLCA1NSwgNTYsIDU3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OCwgNTksIDAsIDAsIDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MSwgNjIsIAorICAgIDYzLCAwLCA2NCwgNjUsIDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3MywgNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1LCA3NiwgNzcsIAorICAgIDc4LCA3OSwgODAsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODMsIDg0LCAwLCA4NSwgODYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDg3LCA4OCwgMCwgODksIDkwLCA5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIsIDkzLCA5NCwgCisgICAgOTUsIDk2LCA5NywgOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAxMDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwMSwgMTAyLCAwLCAwLCAxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDYsIDEwNywgMCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDksIDExMCwgMTExLCAwLCAxMTIsIDAsIDExMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0LCAxMTUsIDExNiwgCisgICAgMTE3LCAxMTgsIDExOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxMjEsIDAsIDEyMiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTIzLCAxMjQsIDEyNSwgMCwgMCwgMTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcsIAorICAgIDEyOCwgMCwgMTI5LCAxMzAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCisgICAgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MCwgMTQxLCAxNDIsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDUsIDE0NiwgMCwgMTQ3LCAKKyAgICAxNDgsIDE0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNTcsIDAsIDE1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5LCAwLCAxNjAsIAorICAgIDAsIDE2MSwgMTYyLCAxNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NCwgMCwgMTY1LCAwLCAxNjYsIDE2NywgMTY4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNjksIDE3MCwgMCwgMCwgMTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzIsIAorICAgIDE3MywgMTc0LCAwLCAxNzUsIDE3NiwgMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgCisgICAgMTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODQsIDE4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTMsIDE5NCwgMTk1LCAKKyAgICAwLCAxOTYsIDE5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTk4LCAxOTksIDAsIDIwMCwgMjAxLCAyMDIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjEwLCAwLCAwLCAwLCAyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxMiwgMjEzLCAyMTQsIDAsIDIxNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTcsIAorICAgIDIxOCwgMjE5LCAwLCAyMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMSwgMjIyLCAyMjMsIDAsIDIyNCwgMCwgCisgICAgMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjI4LCAwLCAyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzIsIDIzMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMzUsIDAsIDIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDAsIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjQwLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NSwgCisgICAgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDcsIDAsIDI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MSwgMjUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NCwgMCwgMjU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NywgMCwgCisgICAgMjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTksIDI2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2NiwgMCwgMjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDAsIDI2OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyODMsIDAsIDI4NCwgMCwgMjg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODYsIDAsIDI4NywgMCwgCisgICAgMjg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODksIDAsIDI5MCwgMCwgMjkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyOTIsIDAsIDI5MywgMCwgMjk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNSwgMzA2LCAwLCAzMDcsIAorICAgIDAsIDAsIDAsIDMwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA5LCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDMxMSwgMCwgMCwgMzEyLCAwLCAwLCAwLCAzMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE1LCAwLCAzMTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMCwgMzIxLCAwLCAzMjIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMywgMCwgMCwgMzI0LCAwLCAwLCAwLCAzMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMjgsIDMyOSwgMCwgMzMwLCAwLCAwLCAwLCAzMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMiwgMCwgMCwgCisgICAgMzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzQsIDAsIDAsIDMzNSwgMCwgMCwgMCwgMzM2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzMzcsIDMzOCwgMCwgMzM5LCAwLCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MSwgMCwgMCwgCisgICAgMzQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM0NCwgMzQ1LCAwLCAzNDYsIDAsIDAsIDAsIDM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMzQ4LCAwLCAwLCAzNDksIAorICAgIDAsIDAsIDAsIDM1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM1MywgMCwgMCwgMCwgMCwgMCwgMCwgMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NiwgMzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjEsIDM2MiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NSwgMzY2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY5LCAzNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNzYsIDM3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4MCwgCisgICAgMzgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDM4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg0LCAzODUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2LCAzOTcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0MDksIDQxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDExLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE0LCA0MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQxOSwgNDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzMsIDAsIAorICAgIDAsIDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MCwgNDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NDIsIDQ0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDUwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ1OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDQ2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjksIDAsIAotICAgIDQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgNDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDUsIAotICAgIDUwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUxOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNywgMCwgMCwgMCwgMCwgMCwgMCwgNTI4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MjksIDAsIDAsIDAsIDAsIDAsIDAsIDUzMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MzIsIDUzMywgMCwgMCwgMCwgMCwgMCwgNTM0LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUzNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzOSwgNTQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTQzLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NSwgMCwgMCwgMCwgMCwgMCwgNTQ2LCAKLSAgICA1NDcsIDAsIDAsIDAsIDAsIDAsIDU0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NTAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1MSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTU4LCAwLCAwLCAwLCAwLCAwLCA1NTksIDAsIDAsIDAsIDAsIDAsIDAsIDU2MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU3MiwgMCwgMCwgMCwgMCwgMCwgNTczLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTc2LCAwLCAwLCAwLCAwLCAwLCA1NzcsIDU3OCwgMCwgMCwgMCwgMCwgMCwgNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ3NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDg0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ5NSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ5OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgMCwgNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUxMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMiwgMCwgMCwgMCwgMCwgMCwgMCwgNTIzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTM4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODEsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA2MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA2MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgNjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA2MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM5LCA2NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDY1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjYwLCA2NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjYzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY2NSwgNjY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDY2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjMzLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29tcF9kYXRhW10gPSB7Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgMCwgODgwMCwgMCwgMCwgODgxNSwgMCwgMCwgMCwgMTkyLCAxOTMsIAotICAgIDE5NCwgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgCi0gICAgMCwgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAyNjIsIAotICAgIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDE5OSwgMCwgMCwgMCwgNzY5MCwgMCwgMCwgMCwgMCwgCi0gICAgMjcwLCAwLCAwLCAwLCAwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAwLCAwLCAwLCAKLSAgICAyMDAsIDIwMSwgMjAyLCA3ODY4LCAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIDAsIDAsIAotICAgIDAsIDc4NjQsIDAsIDAsIDAsIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCAwLCA3NzEwLCAwLCA1MDAsIDI4NCwgMCwgCi0gICAgNzcxMiwgMjg2LCAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMjkwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDc3MTQsIAotICAgIDc3MTgsIDAsIDAsIDAsIDU0MiwgMCwgMCwgMCwgMCwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgNzcyMiwgMCwgMCwgCi0gICAgMjA0LCAyMDUsIDIwNiwgMjk2LCAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIDQ2MywgNTIwLCA1MjIsIDAsIDAsIAotICAgIDAsIDc4ODIsIDAsIDAsIDAsIDAsIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMCwgMzA4LCAwLCA3NzI4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0ODgsIDAsIDc3MzAsIDAsIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgNzczMiwgMCwgMCwgMCwgMCwgMCwgMzEzLCAwLCAKLSAgICAzMTcsIDAsIDAsIDAsIDAsIDAsIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNzc0MiwgMCwgMCwgMCwgMCwgNzc0NCwgMCwgMCwgNzc0NiwgMCwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgCi0gICAgMCwgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDAsIDAsIDAsIAotICAgIDIxMCwgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIAotICAgIDAsIDQxNiwgNzg4NCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCA3NzY0LCA3NzY2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNDAsIDAsIDAsIDAsIDAsIDc3NjgsIDM0NCwgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgMCwgMCwgCi0gICAgMCwgMCwgNzc3NCwgMCwgMzQ2LCAzNDgsIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgCi0gICAgNTM2LCAzNTAsIDAsIDAsIDAsIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIAotICAgIDc3OTIsIDAsIDAsIDc3OTAsIDAsIDAsIDAsIDAsIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgCi0gICAgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCAKLSAgICA3Nzk2LCA3ODA0LCAwLCAwLCAwLCAwLCAwLCA3ODA2LCAwLCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIDc4MTIsIAotICAgIDAsIDc4MTYsIDAsIDAsIDAsIDc4MTgsIDc4MjAsIDAsIDAsIDAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIAotICAgIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgNzkyNCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAzNzksIDM4MSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNzgyNiwgMCwgMCwgMCwgMCwgNzgyOCwgMjI0LCAyMjUsIDIyNiwgMjI3LCAyNTcsIDI1OSwgNTUxLCAKLSAgICAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgNzY4MSwgMCwgMCwgMjYxLCAwLCAKLSAgICAwLCA3NjgzLCAwLCAwLCA3Njg1LCAwLCAwLCAwLCAwLCA3Njg3LCAwLCAwLCAwLCAwLCAwLCAyNjMsIDI2NSwgMCwgMCwgMCwgCi0gICAgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDAsIDAsIDAsIDAsIDIzMSwgMCwgMCwgMCwgNzY5MSwgMjcxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCA3Njk1LCAyMzIsIDIzMywgMjM0LCA3ODY5LCAyNzUsIAotICAgIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCA1MTksIDAsIDAsIDAsIDc4NjUsIDAsIDAsIDAsIDU1MywgCi0gICAgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCAwLCA3NzExLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDI4NSwgMCwgNzcxMywgMjg3LCAKLSAgICAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMjkxLCAwLCAwLCAwLCAyOTMsIDAsIDAsIDAsIDc3MTUsIAotICAgIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgNzcyMywgMCwgCi0gICAgNzgzMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIDUyMSwgNTIzLCAwLCAKLSAgICAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDAsIDMwOSwgMCwgMCwgMCwgMCwgNDk2LCAKLSAgICAwLCAwLCAwLCAwLCA3NzI5LCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgNzczMywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzE0LCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgMCwgNzc0MSwgMCwgMCwgCi0gICAgNzczOSwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgMCwgMCwgMCwgMCwgNTA1LCAzMjQsIDAsIAotICAgIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIDAsIDAsIAotICAgIDc3NTMsIDAsIDAsIDAsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIAotICAgIDQ2NiwgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgNDkxLCAwLCAwLCAwLCAwLCAwLCA3NzY1LCAwLCAwLCAwLCAwLCAKLSAgICA3NzY3LCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIAotICAgIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIAotICAgIDM1MywgMCwgNzc3OSwgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDAsIDAsIDAsIDI0OSwgMjUwLCAKLSAgICAyNTEsIDM2MSwgMzYzLCAzNjUsIDAsIDI1MiwgNzkxMSwgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgCi0gICAgNzkwOSwgNzc5NSwgMCwgMCwgMCwgMzcxLCA3Nzk5LCAwLCA3Nzk3LCAwLCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3ODA5LCA3ODExLCAzNzMsIDAsIDAsIDAsIDc4MTUsIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIAotICAgIDAsIDAsIDc4MTksIDc4MjEsIDAsIDAsIDAsIDc5MjMsIDI1MywgMzc1LCA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgCi0gICAgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMCwgMzc4LCA3ODI1LCAwLCAwLCAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgCi0gICAgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgMCwgMCwgMCwgMCwgODE3MywgOTAxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTI5LCAwLCAKLSAgICAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCAwLCAwLCAwLCAwLCA3ODQ4LCAwLCAwLCA0NzgsIDAsIDAsIDAsIDUwNiwgMCwgMCwgCi0gICAgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDAsIDc2ODgsIDAsIDc4NzIsIDc4NzAsIDAsIDc4NzYsIDAsIDAsIDAsIDAsIDc4NzQsIAotICAgIDAsIDAsIDAsIDc3MjYsIDAsIDAsIDAsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIDAsIDAsIDAsIDAsIDc4OTIsIDAsIAotICAgIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCA1MTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDQ3MywgMCwgMCwgMCwgNzg0NywgNzg0NSwgMCwgNzg1MSwgMCwgMCwgCi0gICAgMCwgMCwgNzg0OSwgMCwgMCwgNDc5LCAwLCAwLCAwLCA1MDcsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAwLCA3Njg5LCAKLSAgICAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCAwLCAwLCAwLCAwLCA3ODc1LCAwLCAwLCAwLCA3NzI3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3ODkxLCA3ODg5LCAwLCA3ODk1LCAwLCAwLCAwLCAwLCA3ODkzLCAwLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIDAsIAotICAgIDc3NTksIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAKLSAgICAwLCA0NzQsIDAsIDAsIDAsIDc4NTYsIDc4NTQsIDAsIDc4NjAsIDAsIDAsIDAsIDAsIDc4NTgsIDAsIDAsIDc4NTcsIDc4NTUsIAotICAgIDAsIDc4NjEsIDAsIDAsIDAsIDAsIDc4NTksIDAsIDAsIDc3MDAsIDc3MDIsIDAsIDAsIDAsIDAsIDAsIDc3MDEsIDc3MDMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc3NjAsIDc3NjIsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDAsIDc3ODAsIDAsIDAsIDc3ODEsIDAsIAotICAgIDAsIDc3ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDc3ODMsIDAsIDc4MDAsIDAsIDAsIDc4MDEsIDAsIDAsIDAsIDAsIDc4MDIsIAotICAgIDAsIDAsIDc4MDMsIDAsIDAsIDAsIDAsIDAsIDc4MzUsIDAsIDAsIDAsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIDAsIDAsIAotICAgIDAsIDAsIDc5MDIsIDc5MDYsIDAsIDAsIDAsIDAsIDAsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDAsIDAsIDAsIDAsIDc5MDMsIAotICAgIDAsIDAsIDAsIDAsIDc5MDcsIDAsIDc5MTQsIDc5MTIsIDAsIDc5MTgsIDAsIDAsIDAsIDAsIDc5MTYsIDAsIDAsIDAsIDAsIAotICAgIDc5MjAsIDAsIDc5MTUsIDc5MTMsIDAsIDc5MTksIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDAsIDQ5NCwgMCwgCi0gICAgMCwgMCwgNDkyLCAwLCAwLCA0OTMsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCA3NzA4LCAwLCAKLSAgICAwLCA3NzA5LCAwLCA1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgNDk1LCAwLCAwLCAwLCA4MTIyLCA5MDIsIDAsIDAsIAotICAgIDgxMjEsIDgxMjAsIDAsIDAsIDAsIDAsIDc5NDQsIDc5NDUsIDAsIDAsIDAsIDAsIDAsIDgxMjQsIDAsIDgxMzYsIDkwNCwgMCwgCi0gICAgMCwgMCwgMCwgNzk2MCwgNzk2MSwgMCwgMCwgMCwgODEzOCwgOTA1LCAwLCAwLCAwLCAwLCA3OTc2LCA3OTc3LCAwLCA4MTQwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIDgxNTIsIDAsIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgMCwgCi0gICAgMCwgMCwgODE4NCwgOTA4LCAwLCAwLCAwLCAwLCA4MDA4LCA4MDA5LCAwLCAwLCAwLCAwLCAwLCAwLCA4MTcyLCAwLCAwLCAwLCAKLSAgICA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgMCwgMCwgMCwgODE4NiwgOTExLCAKLSAgICA4MDQwLCA4MDQxLCAwLCAwLCAwLCAwLCAwLCA4MTg4LCAwLCAwLCA4MTE2LCAwLCAwLCA4MTMyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDAsIDAsIDAsIDAsIDc5MzYsIDc5MzcsIDAsIDAsIDAsIDAsIDgxMTgsIAotICAgIDgxMTUsIDAsIDAsIDAsIDAsIDAsIDgwNTAsIDk0MSwgNzk1MiwgNzk1MywgMCwgMCwgMCwgODA1MiwgOTQyLCAwLCAwLCAwLCAKLSAgICAwLCA3OTY4LCA3OTY5LCAwLCAwLCAwLCAwLCA4MTM0LCA4MTMxLCAwLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIAotICAgIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgODE1MCwgMCwgMCwgMCwgMCwgMCwgMCwgODA1NiwgOTcyLCAwLCAwLCAwLCAwLCAKLSAgICA4MDAwLCA4MDAxLCAwLCA4MTY0LCA4MTY1LCAwLCAwLCAwLCA4MDU4LCA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgODAxNiwgODAxNywgMCwgMCwgMCwgMCwgODE2NiwgMCwgMCwgODA2MCwgOTc0LCAwLCAwLCAwLCAKLSAgICAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCAwLCAwLCAwLCA4MTQ2LCA5MTIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgxNTEsIDAsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgODE4MCwgMCwgMCwgOTc5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5ODAsIDAsIDAsIDEwMzEsIDAsIDAsIDAsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDAsIDAsIDAsIDEwMjcsIDAsIDEwMjQsIAotICAgIDAsIDAsIDAsIDAsIDEyMzgsIDAsIDEwMjUsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDEyNDYsIDAsIDAsIDAsIDEwMzcsIDAsIAotICAgIDAsIDAsIDEyNTAsIDEwNDksIDAsIDEyNTIsIDAsIDAsIDAsIDAsIDEwMzYsIDAsIDAsIDAsIDAsIDEyNTQsIDAsIDAsIDAsIAotICAgIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIDEyNjYsIDAsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzIsIAotICAgIDAsIDAsIDEyNjAsIDAsIDAsIDAsIDAsIDEyMzMsIDAsIDEyMzUsIDAsIDAsIDAsIDAsIDExMDcsIDAsIDExMDQsIDAsIDAsIAotICAgIDAsIDAsIDEyMzksIDAsIDExMDUsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIDEyNDcsIDAsIDAsIDAsIDExMTcsIDAsIDAsIDAsIAotICAgIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDAsIDAsIDAsIDExMTYsIDAsIDAsIDAsIDAsIDEyNTUsIDAsIDAsIDAsIDEyNjMsIAotICAgIDExMTgsIDAsIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzMsIDAsIDAsIAotICAgIDEyNjEsIDAsIDAsIDExMTEsIDAsIDAsIDAsIDExNDIsIDAsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDAsIDEyNDIsIDAsIDAsIAotICAgIDEyNDMsIDAsIDAsIDEyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTksIDAsIDE1NzAsIDE1NzEsIDE1NzMsIDAsIDE1NzIsIAotICAgIDAsIDAsIDE1NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MzAsIDAsIDAsIDE3NDcsIDAsIDAsIDE3MjgsIDAsIDAsIDAsIDAsIAotICAgIDIzNDUsIDAsIDAsIDIzNTMsIDAsIDAsIDIzNTYsIDAsIDAsIDAsIDI1MDcsIDI1MDgsIDAsIDAsIDAsIDI4OTEsIDI4ODgsIAotICAgIDI4OTIsIDI5NjQsIDAsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIDMwMTksIDAsIDAsIDAsIDAsIDMxNDQsIDAsIDAsIAotICAgIDAsIDAsIDMyNjQsIDAsIDMyNzQsIDMyNzEsIDMyNzIsIDAsIDMyNzUsIDAsIDAsIDAsIDAsIDM0MDIsIDM0MDQsIDAsIAotICAgIDM0MDMsIDAsIDAsIDAsIDAsIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDAsIDM1NDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDQxMzQsIDAsIDAsIDAsIDY5MTgsIDAsIDAsIDY5MjAsIDAsIDAsIDY5MjIsIDAsIDAsIDY5MjQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDY5MjYsIDAsIDAsIDY5MzAsIDAsIDAsIDY5NzEsIDAsIDAsIDY5NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDY5NzYsIDAsIAotICAgIDAsIDY5NzcsIDAsIDAsIDY5NzksIDAsIDAsIDAsIDc3MzYsIDAsIDAsIDc3MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NzIsIAotICAgIDAsIDAsIDc3NzMsIDAsIDAsIDAsIDAsIDc3ODQsIDAsIDAsIDc3ODUsIDAsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIAotICAgIDAsIDc4NTMsIDAsIDAsIDc4NjMsIDAsIDAsIDAsIDc4NzgsIDAsIDAsIDc4NzksIDAsIDAsIDc4OTYsIDAsIDAsIDc4OTcsIAotICAgIDAsIDAsIDAsIDAsIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDAsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIAotICAgIDgwNjUsIDAsIDAsIDgwNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNjcsIDAsIDAsIDgwNjgsIDAsIDAsIDgwNjksIDAsIDAsIAotICAgIDgwNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNzEsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDAsIDc5NDcsIAotICAgIDc5NDksIDAsIDAsIDc5NTEsIDgwNzMsIDAsIDAsIDgwNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNzUsIDAsIDAsIDgwNzYsIAotICAgIDAsIDAsIDgwNzcsIDAsIDAsIDgwNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNzksIDAsIDc5NTQsIDc5NTYsIDAsIDc5NTUsIAotICAgIDc5NTcsIDAsIDAsIDAsIDAsIDAsIDc5NjIsIDc5NjQsIDAsIDAsIDAsIDAsIDAsIDc5NjMsIDc5NjUsIDAsIDc5NzAsIAotICAgIDc5NzIsIDAsIDAsIDc5NzQsIDgwODAsIDAsIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDgwODIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgwODMsIDAsIDAsIDgwODQsIDAsIDAsIDgwODUsIDAsIDAsIDgwODYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDgwODcsIDAsIDc5NzgsIDc5ODAsIDAsIDAsIDc5ODIsIDgwODgsIDAsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIAotICAgIDgwODksIDAsIDAsIDgwOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwOTEsIDAsIDAsIDgwOTIsIDAsIDAsIDgwOTMsIDAsIDAsIAotICAgIDgwOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDgwOTUsIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDAsIDc5ODcsIAotICAgIDc5ODksIDAsIDAsIDc5OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDc5OTQsIDc5OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDc5OTgsIAotICAgIDAsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIDAsIDAsIDgwMDIsIDgwMDQsIDAsIDgwMDMsIDgwMDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgwMTAsIDgwMTIsIDAsIDAsIDAsIDAsIDAsIDgwMTEsIDgwMTMsIDAsIDgwMTgsIDgwMjAsIDAsIDAsIDgwMjIsIAotICAgIDAsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjcsIDgwMjksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgwMzEsIDAsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIDgwMzUsIDgwMzcsIDAsIDAsIAotICAgIDgwMzksIDgwOTcsIDAsIDAsIDgwOTgsIDAsIDAsIDgwOTksIDAsIDAsIDAsIDAsIDAsIDAsIDgxMDAsIDAsIDAsIDgxMDEsIAotICAgIDAsIDAsIDgxMDIsIDAsIDAsIDgxMDMsIDAsIDAsIDAsIDAsIDAsIDgwNDIsIDgwNDQsIDAsIDAsIDgwNDYsIDgxMDQsIDAsIAotICAgIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDAsIDgxMDYsIDAsIDAsIDgxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgxMDgsIDAsIDAsIDgxMDksIDAsIDAsIDgxMTAsIDAsIDAsIDgxMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDgxMTQsIDAsIDAsIAotICAgIDgxMzAsIDAsIDAsIDgxNzgsIDAsIDAsIDgxMTksIDAsIDAsIDAsIDAsIDAsIDgxNDEsIDgxNDIsIDAsIDAsIDgxNDMsIDAsIAotICAgIDAsIDAsIDgxMzUsIDAsIDAsIDgxODMsIDAsIDAsIDAsIDAsIDAsIDgxNTcsIDgxNTgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgxNTksIDAsIDg2MDIsIDAsIDAsIDg2MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MjIsIDAsIDAsIDg2NTMsIDAsIDAsIAotICAgIDg2NTUsIDAsIDAsIDg2NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDg3MDgsIDAsIDAsIDg3MTMsIDAsIDAsIDg3MTYsIDAsIDAsIAotICAgIDg3NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NDIsIDAsIDAsIDg3NjksIDAsIDAsIDg3NzIsIDAsIDAsIDg3NzUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg3NzcsIDAsIDAsIDg4MTMsIDAsIDAsIDg4MDIsIDAsIDAsIDg4MTYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDg4MTcsIDAsIDAsIDg4MjAsIDAsIDAsIDg4MjEsIDAsIDAsIDg4MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MjUsIDAsIDAsIAotICAgIDg4MzIsIDAsIDAsIDg4MzMsIDAsIDAsIDg5MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDg5MjksIDAsIDAsIDg4MzYsIDAsIDAsIAotICAgIDg4MzcsIDAsIDAsIDg4NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NDEsIDAsIDAsIDg5MzAsIDAsIDAsIDg5MzEsIDAsIDAsIAotICAgIDg4NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzcsIDAsIDAsIDg4NzgsIDAsIDAsIDg4NzksIDAsIDAsIDg5MzgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg5MzksIDAsIDAsIDg5NDAsIDAsIDAsIDg5NDEsIDAsIDAsIDAsIDEyNDM2LCAwLCAwLCAxMjM2NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTIzNjYsIDAsIDAsIDEyMzY4LCAwLCAwLCAxMjM3MCwgMCwgMCwgMTIzNzIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEyMzc0LCAwLCAwLCAxMjM3NiwgMCwgMCwgMTIzNzgsIDAsIDAsIDEyMzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjM4MiwgMCwgMCwgMTIzODQsIDAsIDAsIDEyMzg2LCAwLCAwLCAxMjM4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzOTEsIDAsIAotICAgIDAsIDEyMzkzLCAwLCAwLCAxMjQwMCwgMTI0MDEsIDAsIDEyNDAzLCAxMjQwNCwgMCwgMCwgMCwgMCwgMCwgMTI0MDYsIAotICAgIDEyNDA3LCAwLCAwLCAwLCAwLCAwLCAxMjQwOSwgMTI0MTAsIDAsIDEyNDEyLCAxMjQxMywgMCwgMTI0NDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEyNTMyLCAwLCAwLCAxMjQ2MCwgMCwgMCwgMTI0NjIsIDAsIDAsIDEyNDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjQ2NiwgMCwgMCwgMTI0NjgsIDAsIDAsIDEyNDcwLCAwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0NzQsIDAsIAotICAgIDAsIDEyNDc2LCAwLCAwLCAxMjQ3OCwgMCwgMCwgMTI0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDgyLCAwLCAwLCAxMjQ4NSwgCi0gICAgMCwgMCwgMTI0ODcsIDAsIDAsIDEyNDg5LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNDk5LCAxMjUwMCwgMCwgMTI1MDIsIDEyNTAzLCAwLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDAsIDAsIDAsIDEyNTA4LCAKLSAgICAxMjUwOSwgMCwgMCwgMCwgMCwgMCwgMTI1MzUsIDAsIDAsIDEyNTM2LCAwLCAwLCAxMjUzNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI1MzgsIDAsIDAsIDEyNTQyLCAwLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgNjk3ODgsIDAsIDAsIDY5ODAzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODE0LCAwLCAwLCAwLCA4ODAwLCAwLCAwLCAwLCA4ODE1LCAxOTIsIDE5MywgMTk0LCAKKyAgICAxOTUsIDI1NiwgMjU4LCA1NTAsIDE5NiwgNzg0MiwgMTk3LCAwLCA0NjEsIDUxMiwgNTE0LCAwLCAwLCAwLCA3ODQwLCAwLCAKKyAgICA3NjgwLCAwLCAwLCAyNjAsIDAsIDAsIDAsIDc2ODIsIDAsIDAsIDc2ODQsIDAsIDAsIDAsIDAsIDc2ODYsIDAsIDAsIDI2MiwgCisgICAgMjY0LCAwLCAwLCAwLCAyNjYsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMTk5LCAwLCAwLCAwLCAwLCA3NjkwLCAwLCAwLCAwLCAwLCAKKyAgICAyNzAsIDAsIDc2OTIsIDAsIDAsIDAsIDc2OTYsIDAsIDc2OTgsIDAsIDAsIDc2OTQsIDAsIDIwMCwgMjAxLCAyMDIsIDc4NjgsIAorICAgIDI3NCwgMjc2LCAyNzgsIDIwMywgNzg2NiwgMCwgMCwgMjgyLCA1MTYsIDUxOCwgMCwgMCwgMCwgNzg2NCwgMCwgMCwgMCwgCisgICAgNTUyLCAyODAsIDc3MDQsIDAsIDc3MDYsIDAsIDAsIDAsIDAsIDc3MTAsIDAsIDAsIDUwMCwgMjg0LCAwLCA3NzEyLCAyODYsIAorICAgIDI4OCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAyOTAsIDAsIDAsIDAsIDAsIDI5MiwgMCwgMCwgMCwgNzcxNCwgNzcxOCwgMCwgMCwgCisgICAgMCwgNTQyLCAwLCA3NzE2LCAwLCAwLCAwLCA3NzIwLCAwLCAwLCA3NzIyLCAwLCAwLCAwLCAyMDQsIDIwNSwgMjA2LCAyOTYsIAorICAgIDI5OCwgMzAwLCAzMDQsIDIwNywgNzg4MCwgMCwgMCwgNDYzLCA1MjAsIDUyMiwgMCwgMCwgMCwgNzg4MiwgMCwgMCwgMCwgMCwgCisgICAgMzAyLCAwLCAwLCA3NzI0LCAwLCAwLCAwLCAwLCAzMDgsIDAsIDAsIDc3MjgsIDAsIDAsIDAsIDAsIDAsIDQ4OCwgMCwgCisgICAgNzczMCwgMCwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCA3NzMyLCAwLCAwLCAzMTMsIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgCisgICAgNzczNCwgMCwgMCwgMCwgMzE1LCAwLCA3NzQwLCAwLCAwLCA3NzM4LCAwLCAwLCA3NzQyLCAwLCAwLCAwLCAwLCA3NzQ0LCAwLCAKKyAgICAwLCA3NzQ2LCAwLCAwLCA1MDQsIDMyMywgMCwgMjA5LCAwLCAwLCA3NzQ4LCAwLCAwLCAwLCAwLCAzMjcsIDAsIDc3NTAsIDAsIAorICAgIDAsIDAsIDMyNSwgMCwgNzc1NCwgMCwgMCwgNzc1MiwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAzMzIsIDMzNCwgNTU4LCAKKyAgICAyMTQsIDc4ODYsIDAsIDMzNiwgNDY1LCA1MjQsIDUyNiwgMCwgMCwgNDE2LCA3ODg0LCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIAorICAgIDc3NjQsIDAsIDAsIDAsIDAsIDc3NjYsIDAsIDAsIDM0MCwgMCwgMCwgMCwgMCwgNzc2OCwgMCwgMCwgMCwgMCwgMzQ0LCAKKyAgICA1MjgsIDUzMCwgMCwgMCwgMCwgNzc3MCwgMCwgMCwgMCwgMzQyLCAwLCAwLCAwLCAwLCA3Nzc0LCAwLCAwLCAzNDYsIDM0OCwgCisgICAgMCwgMCwgMCwgNzc3NiwgMCwgMCwgMCwgMCwgMzUyLCAwLCA3Nzc4LCAwLCAwLCA1MzYsIDM1MCwgMCwgMCwgMCwgMCwgCisgICAgNzc4NiwgMCwgMCwgMCwgMCwgMzU2LCAwLCA3Nzg4LCAwLCAwLCA1MzgsIDM1NCwgMCwgNzc5MiwgMCwgMCwgNzc5MCwgMCwgCisgICAgMjE3LCAyMTgsIDIxOSwgMzYwLCAzNjIsIDM2NCwgMCwgMjIwLCA3OTEwLCAzNjYsIDM2OCwgNDY3LCA1MzIsIDUzNCwgMCwgCisgICAgMCwgNDMxLCA3OTA4LCA3Nzk0LCAwLCAwLCAwLCAzNzAsIDc3OTgsIDAsIDc3OTYsIDAsIDAsIDAsIDAsIDAsIDc4MDQsIDAsIAorICAgIDc4MDYsIDAsIDAsIDc4MDgsIDc4MTAsIDM3MiwgMCwgMCwgMCwgNzgxNCwgNzgxMiwgMCwgNzgxNiwgMCwgMCwgMCwgMCwgCisgICAgNzgxOCwgNzgyMCwgNzkyMiwgMjIxLCAzNzQsIDc5MjgsIDU2MiwgMCwgNzgyMiwgMzc2LCA3OTI2LCAwLCAwLCAwLCAwLCAKKyAgICA3OTI0LCAwLCAwLCAwLCAzNzcsIDc4MjQsIDAsIDAsIDAsIDM3OSwgMCwgMCwgMCwgMCwgMzgxLCAwLCA3ODI2LCAwLCAwLCAKKyAgICAwLCAwLCA3ODI4LCAwLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDI1NywgMjU5LCA1NTEsIDIyOCwgNzg0MywgMjI5LCAwLCA0NjIsIAorICAgIDUxMywgNTE1LCAwLCAwLCAwLCA3ODQxLCAwLCA3NjgxLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDc2ODMsIDAsIDAsIDc2ODUsIAorICAgIDAsIDAsIDAsIDAsIDc2ODcsIDAsIDAsIDI2MywgMjY1LCAwLCAwLCAwLCAyNjcsIDAsIDAsIDAsIDAsIDI2OSwgMCwgMjMxLCAKKyAgICAwLCAwLCAwLCAwLCA3NjkxLCAwLCAwLCAwLCAwLCAyNzEsIDAsIDc2OTMsIDAsIDAsIDAsIDc2OTcsIDAsIDc2OTksIDAsIDAsIAorICAgIDc2OTUsIDAsIDIzMiwgMjMzLCAyMzQsIDc4NjksIDI3NSwgMjc3LCAyNzksIDIzNSwgNzg2NywgMCwgMCwgMjgzLCA1MTcsIAorICAgIDUxOSwgMCwgMCwgMCwgNzg2NSwgMCwgMCwgMCwgNTUzLCAyODEsIDc3MDUsIDAsIDc3MDcsIDAsIDAsIDAsIDAsIDc3MTEsIAorICAgIDAsIDAsIDUwMSwgMjg1LCAwLCA3NzEzLCAyODcsIDI4OSwgMCwgMCwgMCwgMCwgNDg3LCAwLCAyOTEsIDAsIDAsIDAsIDAsIAorICAgIDI5MywgMCwgMCwgMCwgNzcxNSwgNzcxOSwgMCwgMCwgMCwgNTQzLCAwLCA3NzE3LCAwLCAwLCAwLCA3NzIxLCAwLCAwLCAKKyAgICA3NzIzLCAwLCA3ODMwLCAwLCAyMzYsIDIzNywgMjM4LCAyOTcsIDI5OSwgMzAxLCAwLCAyMzksIDc4ODEsIDAsIDAsIDQ2NCwgCisgICAgNTIxLCA1MjMsIDAsIDAsIDAsIDc4ODMsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgNzcyNSwgMCwgMCwgMCwgMCwgMzA5LCAwLCAKKyAgICAwLCAwLCAwLCA0OTYsIDAsIDc3MjksIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgNzczMSwgMCwgMCwgMCwgMzExLCAwLCAwLCAKKyAgICAwLCAwLCA3NzMzLCAwLCAwLCAzMTQsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMCwgNzczNSwgMCwgMCwgMCwgMzE2LCAwLCAKKyAgICA3NzQxLCAwLCAwLCA3NzM5LCAwLCAwLCA3NzQzLCAwLCAwLCAwLCAwLCA3NzQ1LCAwLCAwLCA3NzQ3LCAwLCAwLCA1MDUsIAorICAgIDMyNCwgMCwgMjQxLCAwLCAwLCA3NzQ5LCAwLCAwLCAwLCAwLCAzMjgsIDAsIDc3NTEsIDAsIDAsIDAsIDMyNiwgMCwgNzc1NSwgCisgICAgMCwgMCwgNzc1MywgMCwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAzMzMsIDMzNSwgNTU5LCAyNDYsIDc4ODcsIDAsIDMzNywgNDY2LCAKKyAgICA1MjUsIDUyNywgMCwgMCwgNDE3LCA3ODg1LCAwLCAwLCAwLCAwLCA0OTEsIDAsIDAsIDc3NjUsIDAsIDAsIDAsIDAsIDc3NjcsIAorICAgIDAsIDAsIDM0MSwgMCwgMCwgMCwgMCwgNzc2OSwgMCwgMCwgMCwgMCwgMzQ1LCA1MjksIDUzMSwgMCwgMCwgMCwgNzc3MSwgMCwgCisgICAgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCA3Nzc1LCAwLCAwLCAzNDcsIDM0OSwgMCwgMCwgMCwgNzc3NywgMCwgMCwgMCwgMCwgCisgICAgMzUzLCAwLCA3Nzc5LCAwLCAwLCA1MzcsIDM1MSwgMCwgMCwgMCwgMCwgNzc4NywgNzgzMSwgMCwgMCwgMCwgMzU3LCAwLCAKKyAgICA3Nzg5LCAwLCAwLCA1MzksIDM1NSwgMCwgNzc5MywgMCwgMCwgNzc5MSwgMCwgMjQ5LCAyNTAsIDI1MSwgMzYxLCAzNjMsIAorICAgIDM2NSwgMCwgMjUyLCA3OTExLCAzNjcsIDM2OSwgNDY4LCA1MzMsIDUzNSwgMCwgMCwgNDMyLCA3OTA5LCA3Nzk1LCAwLCAwLCAKKyAgICAwLCAzNzEsIDc3OTksIDAsIDc3OTcsIDAsIDAsIDAsIDAsIDAsIDc4MDUsIDAsIDc4MDcsIDAsIDAsIDc4MDksIDc4MTEsIAorICAgIDM3MywgMCwgMCwgMCwgNzgxNSwgNzgxMywgMCwgNzgzMiwgMCwgMCwgMCwgNzgxNywgMCwgMCwgMCwgMCwgNzgxOSwgNzgyMSwgCisgICAgNzkyMywgMjUzLCAzNzUsIDc5MjksIDU2MywgMCwgNzgyMywgMjU1LCA3OTI3LCA3ODMzLCAwLCAwLCAwLCA3OTI1LCAwLCAwLCAKKyAgICAwLCAzNzgsIDc4MjUsIDAsIDAsIDAsIDM4MCwgMCwgMCwgMCwgMCwgMzgyLCAwLCA3ODI3LCAwLCAwLCAwLCAwLCA3ODI5LCAKKyAgICAwLCA4MTczLCA5MDEsIDAsIDAsIDgxMjksIDAsIDAsIDAsIDc4NDYsIDc4NDQsIDAsIDc4NTAsIDc4NDgsIDAsIDAsIDAsIAorICAgIDQ3OCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCA1MDgsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgNzY4OCwgMCwgMCwgCisgICAgNzg3MiwgNzg3MCwgMCwgNzg3NiwgNzg3NCwgMCwgMCwgMCwgMCwgNzcyNiwgMCwgMCwgNzg5MCwgNzg4OCwgMCwgNzg5NCwgCisgICAgNzg5MiwgMCwgMCwgMCwgMCwgNzc1NiwgMCwgMCwgNTU2LCAwLCAwLCA3NzU4LCA1NTQsIDAsIDAsIDAsIDAsIDUxMCwgMCwgCisgICAgMCwgNDc1LCA0NzEsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCA3ODQ3LCA3ODQ1LCAwLCA3ODUxLCA3ODQ5LCAKKyAgICAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIDAsIDUwNywgMCwgMCwgMCwgNTA5LCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDc2ODksIAorICAgIDAsIDAsIDc4NzMsIDc4NzEsIDAsIDc4NzcsIDc4NzUsIDAsIDAsIDAsIDAsIDc3MjcsIDAsIDAsIDc4OTEsIDc4ODksIDAsIAorICAgIDc4OTUsIDc4OTMsIDAsIDAsIDAsIDAsIDc3NTcsIDAsIDAsIDU1NywgMCwgMCwgNzc1OSwgNTU1LCAwLCAwLCAwLCAwLCAKKyAgICA1MTEsIDAsIDAsIDQ3NiwgNDcyLCAwLCAwLCA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NCwgNzg1NiwgNzg1NCwgMCwgCisgICAgNzg2MCwgNzg1OCwgMCwgMCwgMCwgNzg1NywgNzg1NSwgMCwgNzg2MSwgNzg1OSwgMCwgMCwgMCwgNzcwMCwgNzcwMiwgMCwgCisgICAgMCwgNzcwMSwgNzcwMywgMCwgMCwgNzc2MCwgNzc2MiwgMCwgMCwgNzc2MSwgNzc2MywgMCwgMCwgMCwgMCwgNzc4MCwgMCwgCisgICAgMCwgMCwgNzc4MSwgMCwgMCwgMCwgNzc4MiwgMCwgMCwgMCwgNzc4MywgMCwgMCwgNzgwMCwgMCwgMCwgMCwgNzgwMSwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzgwMiwgMCwgMCwgMCwgNzgwMywgMCwgMCwgNzgzNSwgMCwgNzkwMCwgNzg5OCwgMCwgNzkwNCwgCisgICAgNzkwMiwgMCwgMCwgMCwgMCwgNzkwNiwgMCwgMCwgNzkwMSwgNzg5OSwgMCwgNzkwNSwgNzkwMywgMCwgMCwgMCwgMCwgCisgICAgNzkwNywgMCwgMCwgNzkxNCwgNzkxMiwgMCwgNzkxOCwgNzkxNiwgMCwgMCwgMCwgMCwgNzkyMCwgMCwgMCwgNzkxNSwgCisgICAgNzkxMywgMCwgNzkxOSwgNzkxNywgMCwgMCwgMCwgMCwgNzkyMSwgMCwgMCwgMCwgMCwgMCwgNDk0LCA0OTIsIDAsIDAsIDAsIAorICAgIDQ5MywgMCwgMCwgMCwgNDgwLCAwLCAwLCAwLCA0ODEsIDAsIDAsIDAsIDAsIDc3MDgsIDAsIDAsIDAsIDc3MDksIDAsIDAsIAorICAgIDU2MCwgMCwgMCwgMCwgNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTUsIDgxMjIsIDkwMiwgMCwgMCwgODEyMSwgODEyMCwgMCwgCisgICAgMCwgMCwgMCwgNzk0NCwgNzk0NSwgMCwgODEyNCwgMCwgMCwgODEzNiwgOTA0LCAwLCAwLCAwLCAwLCA3OTYwLCA3OTYxLCAKKyAgICA4MTM4LCA5MDUsIDAsIDAsIDAsIDAsIDc5NzYsIDc5NzcsIDAsIDgxNDAsIDAsIDAsIDgxNTQsIDkwNiwgMCwgMCwgODE1MywgCisgICAgODE1MiwgMCwgOTM4LCAwLCAwLCA3OTkyLCA3OTkzLCA4MTg0LCA5MDgsIDAsIDAsIDAsIDAsIDgwMDgsIDgwMDksIDAsIDAsIAorICAgIDAsIDgxNzIsIDgxNzAsIDkxMCwgMCwgMCwgODE2OSwgODE2OCwgMCwgOTM5LCAwLCAwLCAwLCA4MDI1LCA4MTg2LCA5MTEsIAorICAgIDAsIDAsIDAsIDAsIDgwNDAsIDgwNDEsIDAsIDgxODgsIDAsIDAsIDAsIDgxMTYsIDAsIDAsIDAsIDgxMzIsIDAsIDAsIAorICAgIDgwNDgsIDk0MCwgMCwgMCwgODExMywgODExMiwgMCwgMCwgMCwgMCwgNzkzNiwgNzkzNywgODExOCwgODExNSwgMCwgMCwgCisgICAgODA1MCwgOTQxLCAwLCAwLCAwLCAwLCA3OTUyLCA3OTUzLCA4MDUyLCA5NDIsIDAsIDAsIDAsIDAsIDc5NjgsIDc5NjksIAorICAgIDgxMzQsIDgxMzEsIDAsIDAsIDgwNTQsIDk0MywgMCwgMCwgODE0NSwgODE0NCwgMCwgOTcwLCAwLCAwLCA3OTg0LCA3OTg1LCAKKyAgICA4MTUwLCAwLCAwLCAwLCA4MDU2LCA5NzIsIDAsIDAsIDAsIDAsIDgwMDAsIDgwMDEsIDAsIDAsIDgxNjQsIDgxNjUsIDgwNTgsIAorICAgIDk3MywgMCwgMCwgODE2MSwgODE2MCwgMCwgOTcxLCAwLCAwLCA4MDE2LCA4MDE3LCA4MTY2LCAwLCAwLCAwLCA4MDYwLCAKKyAgICA5NzQsIDAsIDAsIDAsIDAsIDgwMzIsIDgwMzMsIDgxODIsIDgxNzksIDAsIDAsIDgxNDYsIDkxMiwgMCwgMCwgODE1MSwgMCwgCisgICAgMCwgMCwgODE2MiwgOTQ0LCAwLCAwLCA4MTY3LCAwLCAwLCAwLCAwLCA4MTgwLCAwLCAwLCAwLCA5NzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDk4MCwgMCwgMCwgMCwgMTAzMSwgMCwgMTIzMiwgMCwgMTIzNCwgMCwgMTAyNywgMCwgMCwgMTAyNCwgMCwgMCwgMCwgMCwgCisgICAgMTIzOCwgMCwgMTAyNSwgMCwgMTIxNywgMCwgMTI0NCwgMCwgMCwgMCwgMTI0NiwgMTAzNywgMCwgMCwgMCwgMTI1MCwgCisgICAgMTA0OSwgMCwgMTI1MiwgMCwgMTAzNiwgMCwgMCwgMCwgMCwgMCwgMTI1NCwgMTI2MiwgMTAzOCwgMCwgMTI2NCwgMCwgMCwgCisgICAgMTI2NiwgMCwgMCwgMCwgMCwgMTI2OCwgMCwgMCwgMCwgMTI3MiwgMCwgMCwgMCwgMTI2MCwgMCwgMTIzMywgMCwgMTIzNSwgCisgICAgMCwgMTEwNywgMCwgMCwgMTEwNCwgMCwgMCwgMCwgMCwgMTIzOSwgMCwgMTEwNSwgMCwgMTIxOCwgMCwgMTI0NSwgMCwgMCwgCisgICAgMCwgMTI0NywgMTExNywgMCwgMCwgMCwgMTI1MSwgMTA4MSwgMCwgMTI1MywgMCwgMTExNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI1NSwgMTI2MywgMTExOCwgMCwgMTI2NSwgMCwgMCwgMTI2NywgMCwgMCwgMCwgMCwgMTI2OSwgMCwgMCwgMCwgMTI3MywgCisgICAgMCwgMCwgMCwgMTI2MSwgMCwgMCwgMCwgMTExMSwgMTE0MiwgMCwgMCwgMCwgMTE0MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI0MiwgMCwgMCwgMCwgMTI0MywgMCwgMCwgMCwgMTI1OCwgMCwgMCwgMCwgMTI1OSwgMCwgMCwgMTU3MCwgMTU3MSwgCisgICAgMTU3MywgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MiwgMCwgMCwgMCwgMTU3NCwgMCwgMCwgMCwgMTczMCwgMCwgMCwgMCwgCisgICAgMTc0NywgMCwgMCwgMCwgMTcyOCwgMCwgMjM0NSwgMCwgMCwgMCwgMjM1MywgMCwgMCwgMCwgMjM1NiwgMCwgMCwgMCwgMCwgCisgICAgMjUwNywgMjUwOCwgMjg5MSwgMjg4OCwgMjg5MiwgMCwgMjk2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxOCwgMzAyMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzAxOSwgMCwgMzE0NCwgMCwgMCwgMCwgMCwgMCwgMzI2NCwgMCwgMCwgMzI3NCwgMzI3MSwgCisgICAgMzI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3NSwgMCwgMzQwMiwgMzQwNCwgMCwgMCwgMzQwMywgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU0NiwgMzU0OCwgMzU1MCwgMCwgMCwgMCwgMCwgMCwgMzU0OSwgMCwgMCwgNDEzNCwgMCwgMCwgMCwgMCwgNjkxOCwgMCwgCisgICAgMCwgMCwgNjkyMCwgMCwgMCwgMCwgNjkyMiwgMCwgMCwgMCwgNjkyNCwgMCwgMCwgMCwgNjkyNiwgMCwgMCwgMCwgNjkzMCwgCisgICAgMCwgMCwgMCwgNjk3MSwgMCwgMCwgMCwgNjk3MywgMCwgMCwgMCwgNjk3NiwgMCwgMCwgMCwgNjk3NywgMCwgMCwgMCwgCisgICAgNjk3OSwgNzczNiwgMCwgMCwgMCwgNzczNywgMCwgMCwgMCwgNzc3MiwgMCwgMCwgMCwgNzc3MywgMCwgMCwgMCwgMCwgMCwgCisgICAgNzc4NCwgMCwgMCwgMCwgNzc4NSwgMCwgMCwgMCwgNzg1MiwgMCwgMCwgNzg2MiwgMCwgMCwgMCwgMCwgNzg1MywgMCwgMCwgCisgICAgNzg2MywgMCwgMCwgMCwgMCwgNzg3OCwgMCwgMCwgMCwgNzg3OSwgMCwgMCwgMCwgNzg5NiwgMCwgMCwgMCwgNzg5NywgMCwgCisgICAgNzkzOCwgNzk0MCwgMCwgMCwgNzk0MiwgODA2NCwgMCwgMCwgNzkzOSwgNzk0MSwgMCwgMCwgNzk0MywgODA2NSwgMCwgMCwgCisgICAgMCwgODA2NiwgMCwgMCwgMCwgODA2NywgMCwgMCwgMCwgODA2OCwgMCwgMCwgMCwgODA2OSwgMCwgMCwgMCwgODA3MCwgMCwgCisgICAgMCwgMCwgODA3MSwgMCwgMCwgNzk0NiwgNzk0OCwgMCwgMCwgNzk1MCwgODA3MiwgMCwgMCwgNzk0NywgNzk0OSwgMCwgMCwgCisgICAgNzk1MSwgODA3MywgMCwgMCwgMCwgODA3NCwgMCwgMCwgMCwgODA3NSwgMCwgMCwgMCwgODA3NiwgMCwgMCwgMCwgODA3NywgCisgICAgMCwgMCwgMCwgODA3OCwgMCwgMCwgMCwgODA3OSwgMCwgMCwgNzk1NCwgNzk1NiwgMCwgMCwgNzk1NSwgNzk1NywgMCwgMCwgCisgICAgNzk2MiwgNzk2NCwgMCwgMCwgNzk2MywgNzk2NSwgMCwgMCwgNzk3MCwgNzk3MiwgMCwgMCwgNzk3NCwgODA4MCwgMCwgMCwgCisgICAgNzk3MSwgNzk3MywgMCwgMCwgNzk3NSwgODA4MSwgMCwgMCwgMCwgODA4MiwgMCwgMCwgMCwgODA4MywgMCwgMCwgMCwgCisgICAgODA4NCwgMCwgMCwgMCwgODA4NSwgMCwgMCwgMCwgODA4NiwgMCwgMCwgMCwgODA4NywgMCwgMCwgNzk3OCwgNzk4MCwgMCwgCisgICAgMCwgNzk4MiwgODA4OCwgMCwgMCwgNzk3OSwgNzk4MSwgMCwgMCwgNzk4MywgODA4OSwgMCwgMCwgMCwgODA5MCwgMCwgMCwgCisgICAgMCwgODA5MSwgMCwgMCwgMCwgODA5MiwgMCwgMCwgMCwgODA5MywgMCwgMCwgMCwgODA5NCwgMCwgMCwgMCwgODA5NSwgMCwgCisgICAgMCwgNzk4NiwgNzk4OCwgMCwgMCwgNzk5MCwgMCwgMCwgMCwgNzk4NywgNzk4OSwgMCwgMCwgNzk5MSwgMCwgMCwgMCwgCisgICAgNzk5NCwgNzk5NiwgMCwgMCwgNzk5OCwgMCwgMCwgMCwgNzk5NSwgNzk5NywgMCwgMCwgNzk5OSwgMCwgMCwgMCwgODAwMiwgCisgICAgODAwNCwgMCwgMCwgODAwMywgODAwNSwgMCwgMCwgODAxMCwgODAxMiwgMCwgMCwgODAxMSwgODAxMywgMCwgMCwgODAxOCwgCisgICAgODAyMCwgMCwgMCwgODAyMiwgMCwgMCwgMCwgODAxOSwgODAyMSwgMCwgMCwgODAyMywgMCwgMCwgMCwgODAyNywgODAyOSwgCisgICAgMCwgMCwgODAzMSwgMCwgMCwgMCwgODAzNCwgODAzNiwgMCwgMCwgODAzOCwgODA5NiwgMCwgMCwgODAzNSwgODAzNywgMCwgCisgICAgMCwgODAzOSwgODA5NywgMCwgMCwgMCwgODA5OCwgMCwgMCwgMCwgODA5OSwgMCwgMCwgMCwgODEwMCwgMCwgMCwgMCwgCisgICAgODEwMSwgMCwgMCwgMCwgODEwMiwgMCwgMCwgMCwgODEwMywgMCwgMCwgODA0MiwgODA0NCwgMCwgMCwgODA0NiwgODEwNCwgCisgICAgMCwgMCwgODA0MywgODA0NSwgMCwgMCwgODA0NywgODEwNSwgMCwgMCwgMCwgODEwNiwgMCwgMCwgMCwgODEwNywgMCwgMCwgCisgICAgMCwgODEwOCwgMCwgMCwgMCwgODEwOSwgMCwgMCwgMCwgODExMCwgMCwgMCwgMCwgODExMSwgMCwgMCwgMCwgODExNCwgMCwgCisgICAgMCwgMCwgODEzMCwgMCwgMCwgMCwgODE3OCwgMCwgMCwgMCwgODExOSwgMCwgMCwgODE0MSwgODE0MiwgMCwgMCwgODE0MywgCisgICAgMCwgMCwgMCwgMCwgODEzNSwgMCwgMCwgMCwgODE4MywgMCwgMCwgODE1NywgODE1OCwgMCwgMCwgODE1OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODYwMiwgMCwgMCwgMCwgODYwMywgMCwgMCwgMCwgODYyMiwgMCwgMCwgMCwgODY1MywgMCwgMCwgMCwgCisgICAgODY1NSwgMCwgMCwgMCwgODY1NCwgMCwgMCwgMCwgODcwOCwgMCwgMCwgMCwgODcxMywgMCwgMCwgMCwgODcxNiwgMCwgMCwgCisgICAgMCwgODc0MCwgMCwgMCwgMCwgODc0MiwgMCwgMCwgMCwgODc2OSwgMCwgMCwgMCwgODc3MiwgMCwgMCwgMCwgODc3NSwgMCwgCisgICAgMCwgMCwgODc3NywgMCwgMCwgMCwgODgxMywgMCwgMCwgMCwgODgwMiwgMCwgMCwgMCwgODgxNiwgMCwgMCwgMCwgODgxNywgCisgICAgMCwgMCwgMCwgODgyMCwgMCwgMCwgMCwgODgyMSwgMCwgMCwgMCwgODgyNCwgMCwgMCwgMCwgODgyNSwgMCwgMCwgMCwgCisgICAgODgzMiwgMCwgMCwgMCwgODgzMywgMCwgMCwgMCwgODkyOCwgMCwgMCwgMCwgODkyOSwgMCwgMCwgMCwgODgzNiwgMCwgMCwgCisgICAgMCwgODgzNywgMCwgMCwgMCwgODg0MCwgMCwgMCwgMCwgODg0MSwgMCwgMCwgMCwgODkzMCwgMCwgMCwgMCwgODkzMSwgMCwgCisgICAgMCwgMCwgODg3NiwgMCwgMCwgMCwgODg3NywgMCwgMCwgMCwgODg3OCwgMCwgMCwgMCwgODg3OSwgMCwgMCwgMCwgODkzOCwgCisgICAgMCwgMCwgMCwgODkzOSwgMCwgMCwgMCwgODk0MCwgMCwgMCwgMCwgODk0MSwgMTI0MzYsIDAsIDAsIDAsIDEyMzY0LCAwLCAwLCAKKyAgICAwLCAxMjM2NiwgMCwgMCwgMCwgMTIzNjgsIDAsIDAsIDAsIDEyMzcwLCAwLCAwLCAwLCAxMjM3MiwgMCwgMCwgMCwgMTIzNzQsIAorICAgIDAsIDAsIDAsIDEyMzc2LCAwLCAwLCAwLCAxMjM3OCwgMCwgMCwgMCwgMTIzODAsIDAsIDAsIDAsIDEyMzgyLCAwLCAwLCAwLCAKKyAgICAxMjM4NCwgMCwgMCwgMCwgMTIzODYsIDAsIDAsIDAsIDEyMzg5LCAwLCAwLCAwLCAxMjM5MSwgMCwgMCwgMCwgMTIzOTMsIDAsIAorICAgIDAsIDAsIDEyNDAwLCAxMjQwMSwgMCwgMCwgMTI0MDMsIDEyNDA0LCAwLCAwLCAxMjQwNiwgMTI0MDcsIDAsIDAsIDEyNDA5LCAKKyAgICAxMjQxMCwgMCwgMCwgMTI0MTIsIDEyNDEzLCAwLCAwLCAxMjQ0NiwgMCwgMCwgMCwgMTI1MzIsIDAsIDAsIDAsIDEyNDYwLCAKKyAgICAwLCAwLCAwLCAxMjQ2MiwgMCwgMCwgMCwgMTI0NjQsIDAsIDAsIDAsIDEyNDY2LCAwLCAwLCAwLCAxMjQ2OCwgMCwgMCwgMCwgCisgICAgMTI0NzAsIDAsIDAsIDAsIDEyNDcyLCAwLCAwLCAwLCAxMjQ3NCwgMCwgMCwgMCwgMTI0NzYsIDAsIDAsIDAsIDEyNDc4LCAwLCAKKyAgICAwLCAwLCAxMjQ4MCwgMCwgMCwgMCwgMTI0ODIsIDAsIDAsIDAsIDEyNDg1LCAwLCAwLCAwLCAxMjQ4NywgMCwgMCwgMCwgCisgICAgMTI0ODksIDAsIDAsIDAsIDEyNDk2LCAxMjQ5NywgMCwgMCwgMTI0OTksIDEyNTAwLCAwLCAwLCAxMjUwMiwgMTI1MDMsIDAsIAorICAgIDAsIDEyNTA1LCAxMjUwNiwgMCwgMCwgMTI1MDgsIDEyNTA5LCAwLCAwLCAxMjUzNSwgMCwgMCwgMCwgMTI1MzYsIDAsIDAsIAorICAgIDAsIDEyNTM3LCAwLCAwLCAwLCAxMjUzOCwgMCwgMCwgMCwgMTI1NDIsIDAsIDAsIDAsIDAsIDAsIDY5Nzg2LCAwLCAwLCAwLCAKKyAgICA2OTc4OCwgMCwgMCwgMCwgNjk4MDMsIDAsIDAsIDAsIDAsIDY5OTM0LCAwLCAwLCAwLCA2OTkzNSwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCBjaGFuZ2VfcmVjb3Jkc18zXzJfMFtdID0gewogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCiAJeyAxMSwgMjU1LCAyNTUsIDI1NSwgMCB9LAogCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMzAsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCiAJeyAxOSwgMjEsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMiwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMywgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMSwgMjU1LCAwIH0sCiAJeyAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI5LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDAgfSwKIAl7IDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKQEAgLTUwNTgsNyArNTE3Nyw3IEBACiAJeyAyNTUsIDcsIDcsIDI1NSwgMCB9LAogCXsgMjU1LCA3LCA4LCAyNTUsIDAgfSwKIAl7IDI1NSwgNywgOSwgMjU1LCAwIH0sCi0JeyAyNTUsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCA1LCAyNTUsIDI1NSwgMCB9LAogCXsgMTUsIDE0LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDE4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCkBAIC01MDcwLDEyICs1MTg5LDEyIEBACiAJeyAyNTUsIDI1NSwgNywgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgOCwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgOSwgMjU1LCAwIH0sCi0JeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAogCXsgMTksIDMwLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyMiwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjMsIDI1NSwgMjU1LCAwIH0sCiAJeyA5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNCwgNCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjAsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCiAJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCkBAIC01MDg0LDc0ICs1MjAzLDc0IEBACiAJeyAxLCAyNTUsIDI1NSwgMCwgMCB9LAogfTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfaW5kZXhbXSA9IHsKLSAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDIsIDE1LCAxNiwgMTcsIAotICAgIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDIsIDIsIDIsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAKLSAgICAzNCwgMiwgMiwgMiwgMzUsIDM2LCAyLCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCAKLSAgICA0OSwgMiwgNTAsIDIsIDIsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMiwgMiwgNTYsIDU3LCA1OCwgMiwgMiwgNTksIDYwLCA2MSwgCi0gICAgNjIsIDYzLCA2MywgMiwgMiwgMiwgMiwgNjQsIDIsIDY1LCA2NiwgNjcsIDY4LCA2OSwgMiwgMiwgMiwgMiwgNzAsIDcxLCAKLSAgICA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgMiwgMiwgMiwgMiwgMiwgMiwgNzksIDIsIDIsIDIsIDIsIDIsIDgwLCAyLCAKKyAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAKKyAgICAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyLCAyLCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIAorICAgIDM2LCAyLCAyLCAyLCAzNywgMzgsIDIsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIAorICAgIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCAyLCA1OCwgNTksIDYwLCAyLCAyLCA2MSwgNjIsIDYzLCAKKyAgICA2NCwgNjUsIDY1LCAyLCAyLCAyLCAyLCA2NiwgMiwgNjcsIDY4LCA2OSwgNzAsIDcxLCAyLCAyLCAyLCA3MiwgNzMsIDc0LCAKKyAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgMiwgMiwgMiwgMiwgMiwgMiwgODIsIDIsIDIsIDIsIDIsIDIsIDgzLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MSwgMiwgODIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDgzLCAKLSAgICA4NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCA4NywgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgCisgICAgODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OSwgOTAsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODksIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCA0OCwgNDgsIAotICAgIDk0LCA5NSwgNDgsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTA1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDUwLCA1MCwgCisgICAgOTcsIDk4LCA1MCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAyLCAyLCAyLCAxMTIsIDExMywgMiwgMTE0LCAxMTUsIAotICAgIDExNiwgMTE3LCAxMTgsIDExOSwgMiwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDIsIDIsIDIsIDIsIDIsIDIsIDEyNSwgMiwgCi0gICAgMTI2LCAyLCAxMjcsIDIsIDEyOCwgMiwgMTI5LCAyLCAyLCAyLCAxMzAsIDIsIDIsIDIsIDEzMSwgMTMyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzMsIDIsIDEzNCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxMzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEwOCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMiwgMiwgMiwgMTE1LCAxMTYsIDIsIDExNywgMTE4LCAKKyAgICAxMTksIDEyMCwgMTIxLCAxMjIsIDIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjgsIDIsIAorICAgIDEyOSwgMTMwLCAxMzEsIDIsIDEzMiwgMiwgMTMzLCAyLCAyLCAyLCAxMzQsIDIsIDIsIDIsIDEzNSwgMTM2LCAxMzcsIDEzOCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNDAsIDIsIDE0MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCAxNDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDE0NCwgMTQ1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMzcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE0NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMTM4LCAyLCAxMzksIDIsIDE0MCwgMiwgMiwgMTQxLCAyLCAyLCAyLCAxNDIsIDE0MywgMTQ0LCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDUsIAotICAgIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMiwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxMzksIDE1NywgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTU4LCAxNTksIDkwLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA3OSwgMTYwLCAyLCAxNjEsIDE2MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ3LCAyLCAxNDgsIDIsIDE0OSwgMiwgMiwgMTUwLCAyLCAyLCAyLCAxNTEsIDE1MiwgCisgICAgMTUzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNTQsIDE1NSwgCisgICAgMiwgMiwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDIsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTQ4LCAKKyAgICAxNjgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2OSwgMTcwLCA5MywgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODIsIDE3MSwgMiwgMTcyLCAxNzMsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2MywgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMTY0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NCwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzYsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2NiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMTc3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2NywgNDgsIDE2OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzgsIDUwLCAxNzksIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2MywgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTc0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTUzODYsNyArNTUwNSw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDE2OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDE4MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01NDUwLDcgKzU1NjksNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9kYXRhW10gPSB7CkBAIC01NDYwLDggKzU1NzksOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIAorICAgIDAsIDAsIDQsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDYsIDcsIDAsIDAsIDMsIDAsIDAsIDgsIDQsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDQsIDUsIDAsIDAsIDAsIDAsIDAsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNTQ3MCw4NDggKzU1OTAsOTA2IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDEwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDEwLCAwLCA5LCA5LCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA5LCAwLCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyLCAxMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUsIDE2LCAxNywgMTgsIDE5LCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAKLSAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMiwgMjMsIAorICAgIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDgsIDAsIAotICAgIDAsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDEsIDEsIDAsIDAsIDAsIDgsIDM1LCA2LCA0LCA1LCAzNiwgMzcsIDM4LCAzOSwgCi0gICAgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCA0LCAwLCAwLCAzNywgMzgsIDM5LCA0MCwgCisgICAgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCA0LCAzNiwgOCwgNiwgNywgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDUsIDQ2LCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIAorICAgIDQ2LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDAsIDcsIDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAxOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDEsIDEsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzLCAxMywgMTMsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIAotICAgIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAKKyAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDAsIDcsIDAsIDcsIDAsIDcsIDAsIDcsIAotICAgIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgCisgICAgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MzE5LDI1ICs2NDk3LDI1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MzQ2LDI0ICs2NTI0LDI0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkKiBnZXRfY2hhbmdlXzNfMl8wKFB5X1VDUzQgbikKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaCBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAppbmRleCA4ODMwNTYwLi4zODM4ODgyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCkBAIC00LDMzNyArNCw0MjggQEAKIAogLyogbGV4aWNvbiAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIgbGV4aWNvbltdID0gewotICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4NywgNzMsIDg0LCAyMDAsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDgzLCA4OSwgCi0gICAgNzYsIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDgzLCA3MywgNzEsIDIwNiwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgMjA2LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgNjUsIAotICAgIDIwNiwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgCi0gICAgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NywgNjUsIDg0LCA3MiwgNjksIAotICAgIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDgzLCA4OSwgCi0gICAgNzcsIDY2LCA3OSwgMjA0LCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCAKLSAgICA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjgsIDczLCA3MSwgNzMsIAotICAgIDIxMiwgNjYsIDc5LCA3NiwgMTk2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNjUsIDc4LCAxOTYsIDcxLCA4MiwgNjksIAotICAgIDY5LCAyMDMsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgCi0gICAgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgODQsIDczLCA3NywgNjksIDIxMSwgODYsIDc5LCA4NywgNjksIAotICAgIDIwNCwgNzAsIDc5LCAyMTAsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgCisgICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzYsIAorICAgIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgODMsIDczLCA3MSwgMjA2LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAorICAgIDc2LCA2NSwgODQsIDczLCAyMDYsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgNzcsIAorICAgIDY1LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIDY1LCAKKyAgICAyMDYsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIAorICAgIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCAyMDQsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIDgzLCAKKyAgICA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2OCwgNzMsIDcxLCA3MywgCisgICAgMjEyLCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgODYsIDc5LCA4NywgCisgICAgNjksIDIwNCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIDE5NywgNzcsIDg1LCAKKyAgICA4MywgNzMsIDY3LCA2NSwgMjA0LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCA4NCwgNzMsIDc3LCA2OSwgCisgICAgMjExLCA3MCwgNzksIDIxMCwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAKICAgICAxOTUsIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgCi0gICAgMTk4LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA4NCwgNjUsIDIwMSwgODYsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDgzLCA4MSwgODUsIDY1LCA4MiwgMTk3LCAKLSAgICA3NiwgNjksIDcwLCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIAotICAgIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDIwNiwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjYsIDg5LCA5MCwgCi0gICAgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA2NiwgNzksIDg2LCAKLSAgICA2OSwgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDgzLCA3MywgNzEsIAotICAgIDc4LCAxMjgsIDE5NCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAxOTMsIAotICAgIDc1LCA2NSwgNzgsIDcxLCA4OCwgMjAxLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDIxMCwgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgMjA2LCA2NSwgMTI4LCA2OCwgNzksIDIxMiwgNzcsIDY5LCA2OSwgCi0gICAgMjA1LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDc5LCAxOTgsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgCi0gICAgODcsIDcyLCA3MywgODQsIDE5NywgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDg1LCAxMjgsIDczLCA3OCwgNzMsIDg0LCAKLSAgICA3MywgNjUsIDIwNCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDEyOCwgODksIDY5LCAyMDAsIDc5LCAKLSAgICAxMjgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCAKLSAgICA3OSwgODAsIDg0LCA3MywgMTk1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIAotICAgIDczLCA2NSwgMjA2LCA2OCwgNjksIDg2LCA2NSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAyMDEsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICAyMDMsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzYsIDE5NywgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNSwgCi0gICAgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgODMsIDgxLCAKLSAgICA4NSwgNjUsIDgyLCA2OSwgMTk2LCA2NiwgNzksIDIxNiwgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDgwLCA3NiwgODUsIAotICAgIDIxMSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgCisgICAgMTk4LCA4NCwgNjUsIDc3LCA3MywgMjA0LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDY2LCAKKyAgICA3MywgNzgsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgODYsIDY1LCAyMDEsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgMTk3LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDg2LCA2NSwgODIsIAorICAgIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgCisgICAgODIsIDIwNiwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCAKKyAgICA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIAorICAgIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA3NSwgNjUsIDg0LCA2NSwgCisgICAgNzUsIDY1LCA3OCwgMTkzLCAxOTQsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgCisgICAgNjUsIDc4LCA3MSwgODgsIDIwMSwgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDg0LCA3MywgNjYsIDY5LCAKKyAgICA4NCwgNjUsIDIwNiwgNzksIDE5OCwgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA3NywgNjksIDY5LCAyMDUsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgNzUsIDcyLCA3NywgNjksIAorICAgIDIxMCwgODUsIDEyOCwgODcsIDcyLCA3MywgODQsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA3MywgMTI4LCAKKyAgICA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgNzksIDEyOCwgNjUsIDY2LCA3OSwgODYsIDE5NywgNzcsIDY1LCA4MiwgNzUsIAorICAgIDEyOCwgODksIDY5LCAyMDAsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA4MCwgNzIsIAorICAgIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIDczLCA2NSwgMjA2LCA2OCwgNjksIDg2LCA2NSwgCisgICAgNzgsIDY1LCA3MSwgNjUsIDgyLCAyMDEsIDY2LCA3NiwgNjUsIDY3LCAyMDMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIAorICAgIDg0LCA3MiwgNjUsIDIwNSwgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgCisgICAgNjksIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA2NiwgNzksIDIxNiwgNzIsIDY5LCA2NiwgODIsIDY5LCAKKyAgICAyMTUsIDc3LCA3MywgNjUsIDIwNywgODAsIDc2LCA4NSwgMjExLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAyMDYsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAKICAgICAyMTEsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCA4NCwgCi0gICAgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCAKLSAgICA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIAotICAgIDQ1LCAxOTYsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjUsIDc2LCA2OSwgMTk4LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA4NCwgNzksIDEyOCwgCi0gICAgODQsIDg3LCA3OSwgMTI4LCA3OSwgODYsIDY5LCAyMTAsIDIxMywgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDgzLCA2NywgCi0gICAgODIsIDczLCA4MCwgMjEyLCA4NSwgMjA4LCA3NiwgNzksIDIxNSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDIwNywgNjgsIAotICAgIDc5LCA4NywgMjA2LCA3MCwgODUsIDc2LCA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNzIsIDY1LCAyMDAsIDc5LCA3OCwgCi0gICAgMTk3LCA2OSwgODEsIDg1LCA2NSwgMjA0LCA3MiwgNzMsIDcxLCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAKLSAgICAxMjgsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA3MywgMTk1LCAKLSAgICA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCA4MCwgNzIsIAotICAgIDY1LCA4MywgNjksIDQ1LCAxOTUsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDgyLCA2OSwgCi0gICAgMTk3LCA2NiwgNjUsIDgyLCAxMjgsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MSwgNzYsIDY1LCAKLSAgICA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA3NywgNjksIAotICAgIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIDcxLCAyMTMsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIDIwMSwgCi0gICAgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2OSwgNjksIAotICAgIDIwNSwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNzksIDgyLCA3MywgODksIDE5MywgODcsIDY5LCA4MywgCi0gICAgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDcyLCA2NSwgNzYsIDE5OCwgNzcsIDY1LCA4MiwgMjAzLCA4MCwgNzIsIDY1LCAKLSAgICA4MywgNjksIDQ1LCAxOTMsIDg0LCA3MiwgNjUsIDIwMSwgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjksIAotICAgIDIxNSwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgNzIsIDY1LCAxMjgsIDg0LCA3OSwgNzgsIDE5NywgODYsIAotICAgIDc5LCA2NywgNjUsIDc2LCA3MywgMTk1LCA2NywgNzIsIDY1LCAyMDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDcxLCA4NSwgCi0gICAgNzQsIDY1LCA4MiwgNjUsIDg0LCAyMDEsIDc2LCA4NSwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDg1LCAKLSAgICA3OCwgNzMsIDE5NSwgODMsIDY1LCA4NSwgODIsIDY1LCA4MywgNzIsIDg0LCA4MiwgMTkzLCA4NCwgNjksIDg0LCA4MiwgNjUsIAotICAgIDcxLCA4MiwgNjUsIDIwNSwgNjgsIDY5LCA4MywgNjksIDgyLCA2OSwgMjEyLCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAKLSAgICAxOTMsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA2OCwgNzksIDg0LCAyMTEsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA2NSwgCi0gICAgNzcsIDczLCAyMDQsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA3NSwgNjUsIDEyOCwgCi0gICAgNzYsIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc2LCA3OSwgNzgsIDE5OSwgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDg5LCAKLSAgICA2NSwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCA4MiwgODUsIDY3LCAyMDMsIDc3LCA2NSwgCi0gICAgMTI4LCA4MywgNzMsIDg4LCAxMjgsIDg2LCA3MywgNjksIDIxMiwgNzIsIDY1LCA3NywgOTAsIDE5MywgODAsIDY1LCAxMjgsIAotICAgIDY1LCA4MCwgMjA0LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA4MywgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgMjA0LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjYsIAotICAgIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgODIsIDY1LCAxMjgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDgyLCAxOTQsIAotICAgIDY4LCA2NSwgODMsIDczLCAxOTMsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NywgCi0gICAgNjUsIDc1LCA4MywgODUsIDgyLCAxOTMsIDg0LCAyMDcsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAKLSAgICAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCAKLSAgICA5MCwgOTAsIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIAotICAgIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIDEyOCwgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgCi0gICAgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgOTAsIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCAKLSAgICA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCA4MCwgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIAotICAgIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCA5MCwgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIAotICAgIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIDEyOCwgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgCi0gICAgNjUsIDgyLCA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCAKLSAgICA4NSwgNjYsIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgODIsIDY1LCAxMjgsIDkwLCAKLSAgICA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCAKLSAgICA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCA5MCwgNzQsIDY5LCAxMjgsIDkwLCAKLSAgICA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIDc4LCA3OSwgODIsIDEyOCwgOTAsIAotICAgIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIDkwLCA3MywgCi0gICAgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCA5MCwgNzIsIAotICAgIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4OSwgCi0gICAgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgMTI4LCA5MCwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgNzIsIDg1LCAKLSAgICA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIDg1LCAxMjgsIAotICAgIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIDkwLCA3MiwgCi0gICAgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgNjksIDEyOCwgOTAsIDcyLCAKLSAgICA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCA4MCwgMTI4LCAKLSAgICA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCAKLSAgICA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIAotICAgIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIAotICAgIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIAotICAgIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAKLSAgICAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCAKLSAgICA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIAotICAgIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIDkwLCA2NSwgCi0gICAgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIDY1LCA3MiwgCi0gICAgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCi0gICAgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgCi0gICAgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIAotICAgIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIAotICAgIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIAotICAgIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIAotICAgIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIAotICAgIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIAotICAgIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NCwgMTI4LCA4OSwgCi0gICAgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCA4OSwgODUsIDgyLCA4OCwgMTI4LCA4OSwgODUsIDgyLCAxMjgsIDg5LCA4NSwgCi0gICAgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCA4NSwgODAsIDEyOCwgODksIDg1LCA3OSwgODgsIDEyOCwgODksIDg1LCA3OSwgCi0gICAgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIDEyOCwgODksIDg1LCA3OSwgNzcsIDEyOCwgODksIDg1LCA3OSwgMTI4LCA4OSwgCi0gICAgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIDEyOCwgODksIDg1LCA2OSwgODEsIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgCi0gICAgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIDY4LCAyMDAsIDg5LCA4NSwgNjUsIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCAKLSAgICA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIAotICAgIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCi0gICAgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAKLSAgICAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCAKLSAgICA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIAotICAgIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAKLSAgICAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCA4OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIAotICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgCi0gICAgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgCi0gICAgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAKLSAgICAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCAKLSAgICA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIAotICAgIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgCi0gICAgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgCi0gICAgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgCi0gICAgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgCi0gICAgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgCi0gICAgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCAKLSAgICA3MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIAotICAgIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIAotICAgIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCAKLSAgICA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgCi0gICAgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCAKLSAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgCi0gICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCAKLSAgICA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCAKLSAgICA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIAotICAgIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIAotICAgIDkwLCAxMjgsIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgCi0gICAgMTI4LCA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAxMjgsIDg5LCA2NSwgCi0gICAgODQsIDcyLCAxMjgsIDg5LCA2NSwgODQsIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODksIDY1LCA4MywgMTI4LCA4OSwgNjUsIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCA2NSwgMjEwLCA4OSwgCi0gICAgNjUsIDgxLCAxMjgsIDg5LCA2NSwgODAsIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCA3OCwgMTk5LCA4OSwgCi0gICAgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIDc1LCA2NSwgNzgsIAotICAgIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIAotICAgIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgODksIDY1LCA3NCwgCi0gICAgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCAKLSAgICA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIAotICAgIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIAotICAgIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAKLSAgICAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCAKLSAgICA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDY1LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgMTI4LCA4OSwgNjUsIAotICAgIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgNDgsIDQ4LCA1NSwgCi0gICAgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCA1MiwgMTI4LCA4OSwgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODksIDQ4LCAKLSAgICA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIDg5LCA4NSwgMTI4LCAKLSAgICA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIDg5LCA4MCwgMTI4LCAKLSAgICA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCAKLSAgICA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCAKLSAgICA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCAKLSAgICA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIDg1LCA3OSwgMTI4LCAKLSAgICA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgMTI4LCA4OCwgNzksIAotICAgIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgNjUsIAotICAgIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgMjA2LCAKLSAgICA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgNjksIAotICAgIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIDgzLCA4NCwgNjksIAotICAgIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCAKLSAgICA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgODYsIDEyOCwgCi0gICAgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAKLSAgICAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCAKLSAgICA3NiwgMjEzLCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIAotICAgIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODQsIAotICAgIDczLCA3OCwgMTk5LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgCi0gICAgODIsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIAotICAgIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIAotICAgIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIAotICAgIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgCi0gICAgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAKLSAgICAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCAKLSAgICA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA4NywgNzMsIDc4LCA3NCwgNjUsIAotICAgIDEyOCwgODcsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIAotICAgIDczLCA3OCwgNjgsIDg1LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCA3OCwgCi0gICAgMTI4LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIDczLCAKLSAgICA2OCwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIAotICAgIDg3LCA2NSwgNjUsIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgCi0gICAgNzIsIDczLCA4NCwgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIAotICAgIDY5LCAxMjgsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgCi0gICAgMjEwLCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAKLSAgICAxMjgsIDg3LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA4NywgNjksIDgzLCA4NCwgNjksIDgyLCAyMDYsIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIAotICAgIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIAotICAgIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDg3LCA2OSwgNjgsIDcxLCA2OSwgCi0gICAgNDUsIDg0LCA2NSwgNzMsIDc2LCA2OSwgMTk2LCA4NywgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjksIDY1LCAKLSAgICA4MiwgMjE3LCA4NywgNjksIDY1LCA4MCwgNzksIDc4LCAxMjgsIDg3LCA2NywgMTI4LCA4NywgNjYsIDEyOCwgODcsIDY1LCAKLSAgICA4OSwgMTI4LCA4NywgNjUsIDIxNywgODcsIDY1LCA4OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODgsIDEyOCwgODcsIDY1LCAKLSAgICA4NywgNDUsIDY1LCA4OSwgNzMsIDc4LCA0NSwgODIsIDY5LCA4MywgNzIsIDEyOCwgODcsIDY1LCA4NywgMTI4LCA4NywgNjUsIAotICAgIDIxNSwgODcsIDY1LCA4NiwgMjE3LCA4NywgNjUsIDg2LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4NiwgNjksIDgzLCAxMjgsIAotICAgIDg3LCA2NSwgODYsIDY5LCAxMjgsIDg3LCA2NSwgODYsIDE5NywgODcsIDY1LCA4NSwgMTI4LCA4NywgNjUsIDg0LCA4NCwgCi0gICAgNzksIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCA3NywgNjksIDc2LCA3OSwgNzgsIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCAKLSAgICAxMjgsIDg3LCA2NSwgODQsIDY5LCAyMTAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4NywgNjUsIDg0LCAxMjgsIDg3LCAKLSAgICA2NSwgODMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgODMsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIAotICAgIDY1LCA4MywgNzYsIDY1LCAxMjgsIDg3LCA2NSwgODMsIDc2LCAxOTMsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgCi0gICAgMTI4LCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgMjA1LCA4NywgNjUsIDgyLCA3OCwgNzMsIDc4LCAxOTksIDg3LCAKLSAgICA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgCi0gICAgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCAKLSAgICA3NiwgMTI4LCA4NywgNjUsIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCA4NywgNjUsIAotICAgIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgCi0gICAgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAKLSAgICAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCAKLSAgICA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIAotICAgIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgCi0gICAgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAKLSAgICAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIAotICAgIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIAotICAgIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgCi0gICAgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDY1LCAKLSAgICAxMjgsIDg2LCA4NSwgODgsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAKLSAgICAxMjgsIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCAKLSAgICA4MywgMTI4LCA4NiwgODIsIDY1LCA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgODgsIDEyOCwgODYsIDc5LCA4NywgNjksIAotICAgIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAxMjgsIDg2LCA3OSwgODUsIDEyOCwgCi0gICAgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCA4NiwgCi0gICAgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCAKLSAgICA3OSwgMTI4LCA4NiwgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgNzYsIDY5LCA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgCi0gICAgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg4LCAKLSAgICAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIAotICAgIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCA3MywgCi0gICAgODQsIDEyOCwgODYsIDczLCA4MywgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAKLSAgICA2NSwgODksIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIAotICAgIDE5MywgODYsIDczLCA4MiwgNzMsIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCA4MiwgCi0gICAgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIDc5LCAKLSAgICA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgNjksIAotICAgIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgCi0gICAgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIDY1LCAKLSAgICA3MSwgNjksIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgODYsIDczLCA2OSwgODcsIDczLCA3OCwgMTk5LCA4NiwgNzMsIAotICAgIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCA4NCwgMTI4LCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgCi0gICAgNzMsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCAKKyAgICAyMDAsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDIxMywgODQsIDg3LCAKKyAgICA3OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAorICAgIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNzMsIDE5NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzksIDEyOCwgNjUsIDc2LCA2OSwgMTk4LCA4NCwgODcsIDIwNywgCisgICAgNzIsIDY5LCA2NSwgODYsIDIxNywgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDc5LCA4NiwgNjksIAorICAgIDIxMCwgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4NSwgMjA4LCA3NiwgNzksIAorICAgIDIxNSwgNzIsIDY1LCAyMDAsIDc5LCA3OCwgMTk3LCA2OCwgNzksIDg3LCAyMDYsIDcyLCA3MywgNzEsIDIwMCwgNzAsIDg1LCAKKyAgICA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIAorICAgIDY1LCAyMDQsIDg0LCA2NSwgMTk5LCA2NiwgNjUsIDgyLCAxMjgsIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3OCwgODUsIAorICAgIDc3LCA2OSwgODIsIDczLCAxOTUsIDcwLCA4MiwgNjUsIDc1LCA4NCwgODUsIDIxMCwgODQsIDcyLCA4MiwgNjksIDE5NywgCisgICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAyMTAsIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCAKKyAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDg0LCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIAorICAgIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzIsIDczLCA4MiwgCisgICAgNjUsIDcxLCA2NSwgNzgsIDE5MywgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCAKKyAgICA3OCwgMTk5LCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIAorICAgIDIwMSwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCA3MSwgMjEzLCA4NiwgNzksIDY3LCA2NSwgCisgICAgNzYsIDczLCAxOTUsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDc0LCA2OSwgNjksIDIwNSwgNzgsIDY5LCAKKyAgICA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIAorICAgIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NywgCisgICAgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzAsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDY1LCAxMjgsIDcyLCAKKyAgICA2NSwgNzYsIDE5OCwgNzcsIDY1LCA4MiwgMjAzLCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc4LCA2OSwgMjE1LCAKKyAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTMsIDg0LCA3MiwgNjUsIDIwMSwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIAorICAgIDE5NywgNjgsIDc5LCA4NCwgMjExLCA3MSwgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA2NywgNzIsIDY1LCAyMDUsIAorICAgIDc2LCA4NSwgMTk3LCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIDE5MywgCisgICAgNzUsIDY1LCAxMjgsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIAorICAgIDE5MywgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgCisgICAgODQsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDc3LCA2NSwgMTI4LCAKKyAgICA3NywgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjksIDY5LCA4NCwgNjksIDIwMSwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDgwLCA2NSwgMTI4LCA4OSwgNjUsIAorICAgIDEyOCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODMsIDczLCA4OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIAorICAgIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc4LCA2NSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgNzYsIDc5LCA3OCwgCisgICAgMTk5LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODUsIDgyLCA3NSwgNzMsIDE5NSwgNzIsIDY1LCA3NywgOTAsIDE5MywgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3OSwgODAsIDY5LCAyMDYsIDgyLCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDg2LCA3MywgNjksIDIxMiwgNzYsIAorICAgIDY1LCAyMDcsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgCisgICAgMTI4LCA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgCisgICAgOTAsIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCAKKyAgICA4MiwgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCAKKyAgICA5MCwgOTAsIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIAorICAgIDc5LCAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIAorICAgIDkwLCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCAKKyAgICA2OSwgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCAKKyAgICA5MCwgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIAorICAgIDY1LCAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgCisgICAgMTI4LCA5MCwgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCA2NSwgODIsIDY1LCAKKyAgICA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCA2NiwgODUsIAorICAgIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCA4MywgNzIsIDY1LCAxMjgsIDkwLCA4MiwgNjUsIAorICAgIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCA3OSwgMTI4LCA5MCwgNzksIAorICAgIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAxOTMsIDkwLCA3NCwgNjksIAorICAgIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCA3MywgNzgsIDc5LCA4MiwgCisgICAgMTI4LCA5MCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgCisgICAgOTAsIDczLCA2OCwgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIAorICAgIDkwLCA3MiwgODksIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgCisgICAgNzIsIDg5LCA4MiwgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAKKyAgICAxMjgsIDkwLCA3MiwgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCAKKyAgICA3MiwgODUsIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDg1LCA3OSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgCisgICAgODUsIDEyOCwgOTAsIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgCisgICAgOTAsIDcyLCA3OSwgNzksIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCA2OSwgMTI4LCAKKyAgICA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIAorICAgIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIAorICAgIDkwLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgCisgICAgMTI4LCA5MCwgNjksIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgCisgICAgNzgsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCAKKyAgICA2OSwgNTAsIDEyOCwgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCAKKyAgICA2NSwgODksIDczLCAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA5MCwgNjUsIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCA3NywgODgsIDEyOCwgCisgICAgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgNzMsIDIwNiwgOTAsIDY1LCA3MywgMTI4LCA5MCwgCisgICAgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIDkwLCA2NSwgNjksIDcwLCAxMjgsIDkwLCA0OCwgCisgICAgNDksIDU0LCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgOTAsIDQ4LCA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgCisgICAgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIAorICAgIDQ4LCA0OCwgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCAKKyAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIAorICAgIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgCisgICAgNjcsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgCisgICAgMTI4LCA4OSwgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgCisgICAgMTI4LCA4OSwgODksIDY1LCA2NSwgMTI4LCA4OSwgODksIDY1LCAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgCisgICAgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgNzMsIDczLCAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgCisgICAgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgODcsIDY1LCAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIAorICAgIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgODUsIDg1LCA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCAKKyAgICA4NSwgMTI4LCA4OSwgODUsIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgCisgICAgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgCisgICAgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAKKyAgICAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCAKKyAgICA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgCisgICAgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAKKyAgICAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgCisgICAgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCAKKyAgICA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIAorICAgIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgCisgICAgODgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCAKKyAgICA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIAorICAgIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCAKKyAgICA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCAKKyAgICA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgCisgICAgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgCisgICAgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCAKKyAgICA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCAKKyAgICA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCAKKyAgICA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIAorICAgIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgNzMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgCisgICAgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgCisgICAgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCAKKyAgICA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgCisgICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAorICAgIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAKKyAgICAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCAKKyAgICA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIAorICAgIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgCisgICAgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAKKyAgICAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzIsIAorICAgIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIAorICAgIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg1LCAxMjgsIAorICAgIDg5LCA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAxMjgsIDg5LCA2NSwgODQsIDcyLCAxMjgsIDg5LCA2NSwgCisgICAgODQsIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA4MywgMTI4LCA4OSwgCisgICAgNjUsIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCA2NSwgMjEwLCA4OSwgNjUsIDgxLCAxMjgsIDg5LCA2NSwgCisgICAgODAsIDEyOCwgODksIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCAKKyAgICA3OCwgMTk5LCA4OSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIAorICAgIDc1LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgCisgICAgMTI4LCA4OSwgNjUsIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgCisgICAgODksIDY1LCA3NCwgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzMsIAorICAgIDEyOCwgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIAorICAgIDcxLCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzIsIDEyOCwgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIAorICAgIDg5LCA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgCisgICAgODksIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCAKKyAgICA2NywgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIDEyOCwgODksIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIAorICAgIDEyOCwgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIDY1LCA2NSwgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgCisgICAgMTI4LCA4OSwgNjUsIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA4OSwgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIAorICAgIDEyOCwgODksIDQ4LCA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIAorICAgIDg5LCA4NSwgMTI4LCA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIAorICAgIDg5LCA4MCwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIAorICAgIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIAorICAgIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIAorICAgIDg3LCA2NSwgMTI4LCA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIAorICAgIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgCisgICAgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIAorICAgIDg4LCA3OSwgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIAorICAgIDgyLCA3OSwgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIAorICAgIDg4LCA3MywgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIAorICAgIDgzLCA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIAorICAgIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAKKyAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCAKKyAgICA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCAKKyAgICA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCAKKyAgICA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIAorICAgIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIAorICAgIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIAorICAgIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgCisgICAgMjAwLCA4NywgODIsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgCisgICAgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAKKyAgICAxMjgsIDg3LCA3OSwgODIsIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIAorICAgIDgyLCAxOTYsIDg3LCA3OSwgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIAorICAgIDc5LCA3OSwgNjgsIDgzLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAKKyAgICAxMjgsIDg3LCA3OSwgMjA2LCA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCAKKyAgICA3NywgNjUsIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIAorICAgIDc2LCA3OSwgODMsIDc5LCAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIAorICAgIDg3LCA3MywgODQsIDcyLCA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDc4LCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCAKKyAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIAorICAgIDY4LCA4NSwgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgNzgsIDEyOCwgODcsIAorICAgIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgNjgsIDY5LCA0NSwgCisgICAgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCAKKyAgICA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIAorICAgIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgCisgICAgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCAKKyAgICA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIAorICAgIDY1LCA3NiwgNjksIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIDEyOCwgODcsIAorICAgIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgCisgICAgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgCisgICAgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NSwgODIsIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgCisgICAgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgODcsIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAKKyAgICAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAKKyAgICAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCAKKyAgICA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIAorICAgIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgCisgICAgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCAKKyAgICA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDc2LCA2NSwgMTI4LCA4NywgNjUsIDgzLCA3NiwgCisgICAgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIAorICAgIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAKKyAgICAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCAKKyAgICA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgCisgICAgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCAKKyAgICA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIAorICAgIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCA0OCwgNDksIDU0LCAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1MiwgMTI4LCA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgCisgICAgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCA0OCwgNDgsIDU0LCAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCAKKyAgICA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCAKKyAgICA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODUsIDEyOCwgCisgICAgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIDg2LCA4NSwgODAsIDEyOCwgCisgICAgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgODMsIDEyOCwgODYsIDg0LCAKKyAgICAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgNTcsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAxMjgsIDg2LCA4MywgNTcsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNTcsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIDEyOCwgODYsIDgzLCA1NiwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIDgzLCA1NiwgNTIsIDEyOCwgCisgICAgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgNDksIDEyOCwgODYsIDgzLCAKKyAgICA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgODMsIDU1LCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCA1MywgMTI4LCA4NiwgODMsIAorICAgIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCA4NiwgODMsIDU1LCA0OSwgCisgICAgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIDg2LCA4MywgNTQsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgNTQsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTcsIAorICAgIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCA1MywgNTQsIDEyOCwgODYsIAorICAgIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MywgCisgICAgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MywgMTI4LCA4NiwgCisgICAgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUyLCAKKyAgICA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUyLCA1MSwgMTI4LCAKKyAgICA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCA0OCwgMTI4LCA4NiwgODMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTEsIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIDUyLCAxMjgsIDg2LCA4MywgCisgICAgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTEsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTYsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTYsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTAsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKKyAgICA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUwLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTUsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTIsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDksIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NywgCisgICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKKyAgICA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ5LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTcsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTQsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTEsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDgsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTcsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTQsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTEsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgCisgICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCAKKyAgICA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTYsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTAsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU0LCAKKyAgICA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUwLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTUsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTIsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDksIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NywgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUyLCAKKyAgICA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTcsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTQsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTEsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDgsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NiwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUwLCAKKyAgICA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTYsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTMsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTAsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgCisgICAgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAKKyAgICAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgCisgICAgODYsIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNjcsIDY1LCAKKyAgICA3OCwgNzksIDEyOCwgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIAorICAgIDczLCA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgCisgICAgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCAKKyAgICA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIAorICAgIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgCisgICAgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCAKKyAgICA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIAorICAgIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgCisgICAgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCAKKyAgICA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIAorICAgIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgCisgICAgNjksIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCAKKyAgICA2NSwgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgODYsIDczLCA2OSwgODcsIAorICAgIDczLCA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCA4NCwgMTI4LCA4NiwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDc0LCA0NSwgNTAsIDEyOCwgODYsIDczLCAKKyAgICA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODYsIAogICAgIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIDczLCA2NywgODQsIDc5LCA4MiwgMjE3LCA4NiwgCi0gICAgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDczLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCAKLSAgICA4NywgMTI4LCA4NiwgNjksIDIxNSwgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCAKLSAgICA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIAotICAgIDEyOCwgODYsIDY5LCA4MywgODMsIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA3NiwgODksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKLSAgICA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKLSAgICA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCAKLSAgICA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKLSAgICA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCAKLSAgICA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCAxMjgsIDg2LCA2OSwgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCAKLSAgICA4NiwgNjksIDgyLCA3MSwgNjksIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIAotICAgIDgwLCAxMjgsIDg2LCA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgCi0gICAgNzYsIDY5LCAxMjgsIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIAotICAgIDg2LCA2OSwgNjgsIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODQsIDcyLCA4OSwgCi0gICAgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCA2NSwgODIsIAotICAgIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgCi0gICAgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAKLSAgICAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIAotICAgIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgCi0gICAgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCAKKyAgICA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzMsIDEyOCwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAorICAgIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIAorICAgIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCisgICAgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCisgICAgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCisgICAgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCisgICAgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgCisgICAgODMsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgCisgICAgNjksIDcyLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAKKyAgICAxMjgsIDg2LCA2OSwgMTk3LCA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCAKKyAgICA4NiwgNjUsIDg1LCAxMjgsIDg2LCA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIAorICAgIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgCisgICAgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIDY1LCAKKyAgICAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgNjksIAorICAgIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCA3OCwgCisgICAgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCAKKyAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA3MywgCisgICAgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgCiAgICAgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCAKICAgICA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIAogICAgIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIApAQCAtMzY1LDE1ICs0NTYsMTYgQEAKICAgICA4NSwgODUsIDg1LCA1MCwgMTI4LCA4NSwgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIAogICAgIDgzLCA4NSwgNTEsIDEyOCwgODUsIDgzLCA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgCiAgICAgODUsIDc3LCA4OCwgMTI4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCAKLSAgICA4NSwgODMsIDcyLCAxMjgsIDg1LCA4MywgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDEyOCwgODUsIDgyLCAKLSAgICA4NSwgMjE4LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NSwgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIAotICAgIDE5MywgODUsIDgyLCA4NSwgMTI4LCA4NSwgODIsIDIxMywgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODUsIDgyLCA3MywgNTEsIDEyOCwgODUsIDgyLCA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIAotICAgIDg1LCA4MiwgNjUsIDEyOCwgODUsIDgyLCA1MiwgMTI4LCA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIAotICAgIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDg1LCA4MCwgODcsIDY1LCA4MiwgCi0gICAgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCAKLSAgICA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIAotICAgIDcyLCAyMTIsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgCisgICAgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgCisgICAgODUsIDgzLCA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgCisgICAgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCAKKyAgICA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCAKKyAgICA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIAorICAgIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIAorICAgIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKKyAgICAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgODMsIAorICAgIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCA3MiwgCisgICAgMjEyLCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIAogICAgIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODUsIDc5LCA3OCwgMTI4LCA4NSwgCiAgICAgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDc1LCA3OCwgNzksIDg3LCAKICAgICA3OCwgMTI4LCA4NSwgNzgsIDczLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIApAQCAtMzg4LDEwMCArNDgwLDEwNCBAQAogICAgIDEyOCwgODUsIDc1LCA4NSwgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgCiAgICAgODIsIDY1LCAxMjgsIDg1LCA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCAKICAgICA3OCwgNzgsIDEyOCwgODUsIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAotICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA2OSwgMTI4LCA4NSwgNjksIDY1LCAxMjgsIDg1LCA2OCwgODUsIDcxLCAxMjgsIAotICAgIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIDg1LCA2OCwgNjUsIDY1LCA4NCwgCi0gICAgMTI4LCA4NSwgNjgsIDEyOCwgODUsIDE5NiwgODUsIDY3LCAxMjgsIDg1LCA2NiwgODUsIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDg1LCA2NiwgNzIsIDY1LCA4OSwgNjUsIDg0LCAyMDcsIDg1LCA2NiwgNjUsIDY4LCA2NSwgNzcsIDY1LCAxMjgsIDg1LCA2NiwgCi0gICAgMTI4LCA4NSwgNjUsIDg0LCA3MiwgMTI4LCA4NSwgNjUsIDEyOCwgODUsIDE3OCwgODUsIDQ4LCA1MiwgNTAsIDEyOCwgODUsIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgODUsIDQ4LCA1MiwgNDgsIDEyOCwgODUsIDQ4LCA1MSwgNTcsIDEyOCwgODUsIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgODUsIDQ4LCA1MSwgNTUsIDEyOCwgODUsIDQ4LCA1MSwgNTQsIDEyOCwgODUsIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgODUsIDQ4LCA1MSwgNTIsIDEyOCwgODUsIDQ4LCA1MSwgNTEsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg1LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDg1LCA0OCwgNTEsIDQ5LCAxMjgsIDg1LCA0OCwgNTEsIDQ4LCAxMjgsIDg1LCA0OCwgNTAsIAotICAgIDU3LCA2NSwgMTI4LCA4NSwgNDgsIDUwLCA1NywgMTI4LCA4NSwgNDgsIDUwLCA1NiwgMTI4LCA4NSwgNDgsIDUwLCA1NSwgCi0gICAgMTI4LCA4NSwgNDgsIDUwLCA1NCwgMTI4LCA4NSwgNDgsIDUwLCA1MywgMTI4LCA4NSwgNDgsIDUwLCA1MiwgMTI4LCA4NSwgCi0gICAgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODUsIDQ4LCA1MCwgNTEsIDEyOCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgODUsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgODUsIDQ4LCA1MCwgNDgsIDEyOCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgODUsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgODUsIDQ4LCA0OSwgNTUsIDEyOCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgODUsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgODUsIDQ4LCA0OSwgNTEsIDEyOCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgODUsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgODUsIDQ4LCA0OCwgNTcsIDEyOCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgODUsIDQ4LCA0OCwgNTUsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA4NSwgNDgsIAotICAgIDQ4LCA1MSwgMTI4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgNDUsIDczLCA0NSwgCi0gICAgNzMsIDEyOCwgODUsIDQ1LCA2OSwgNzksIDQ1LCA2OSwgODUsIDEyOCwgODQsIDkwLCA4NSwgMTI4LCA4NCwgOTAsIDc5LCAKLSAgICA2NSwgMTI4LCA4NCwgOTAsIDc5LCAxMjgsIDg0LCA5MCwgNzMsIDIxMCwgODQsIDkwLCA3MywgMTI4LCA4NCwgOTAsIDY5LCAKLSAgICA2OSwgMTI4LCA4NCwgOTAsIDY5LCAxMjgsIDg0LCA5MCwgNjUsIDY1LCAxMjgsIDg0LCA5MCwgNjUsIDEyOCwgODQsIDkwLCAKLSAgICAxMjgsIDg0LCA4OSwgMjEwLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MywgODQsIDg5LCA4MCwgNjksIDQ1LCAxODIsIDg0LCAKLSAgICA4OSwgODAsIDY5LCA0NSwgMTgxLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzksIAotICAgIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3NywgODQsIDg5LCA4MCwgMTk3LCA4NCwgCi0gICAgODksIDc5LCAxMjgsIDg0LCA4OSwgNzMsIDEyOCwgODQsIDg5LCA2OSwgMTI4LCA4NCwgODksIDY1LCAxMjgsIDg0LCA4NywgCi0gICAgNzksIDc5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA4NywgNjUsIDIxNywgODQsIDg3LCA3OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDg3LCA3OSwgNDUsIDcyLCA2OSwgNjUsIAotICAgIDY4LCA2OSwgMTk2LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDczLCAxMjgsIDg0LCA4NywgCi0gICAgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgNzksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAKLSAgICA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgCi0gICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKLSAgICA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAKLSAgICA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgCi0gICAgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCAKLSAgICA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIAotICAgIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgCi0gICAgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgCi0gICAgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAxMjgsIDg0LCAKLSAgICA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIAotICAgIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIAotICAgIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgCi0gICAgODQsIDczLCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCAKLSAgICA4MiwgNjYsIDY1LCA3OCwgMTI4LCA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgODQsIDg1LCA3OSwgODQsIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIAotICAgIDc4LCA3OCwgODksIDEyOCwgODQsIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAKLSAgICAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIAotICAgIDg0LCA3MywgODMsIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgCi0gICAgNTAsIDEyOCwgODQsIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIDgwLCAKLSAgICAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCAKLSAgICA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgCisgICAgODUsIDY5LCA4OSwgMTI4LCA4NSwgNjksIDczLCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgCisgICAgNjgsIDg1LCA3MSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCAKKyAgICA4NSwgNjgsIDY1LCA2NSwgODQsIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCAKKyAgICA3MCwgNzMsIDc2LCA3MywgMTI4LCA4NSwgNjYsIDcyLCA2NSwgODksIDY1LCA4NCwgMjA3LCA4NSwgNjYsIDY1LCA2OCwgNjUsIAorICAgIDc3LCA2NSwgMTI4LCA4NSwgNjYsIDEyOCwgODUsIDY1LCA4NCwgNzIsIDEyOCwgODUsIDY1LCA3OCwgNzEsIDEyOCwgODUsIAorICAgIDY1LCAxMjgsIDg1LCAxNzgsIDg1LCA0OCwgNTIsIDUwLCAxMjgsIDg1LCA0OCwgNTIsIDQ5LCAxMjgsIDg1LCA0OCwgNTIsIAorICAgIDQ4LCAxMjgsIDg1LCA0OCwgNTEsIDU3LCAxMjgsIDg1LCA0OCwgNTEsIDU2LCAxMjgsIDg1LCA0OCwgNTEsIDU1LCAxMjgsIAorICAgIDg1LCA0OCwgNTEsIDU0LCAxMjgsIDg1LCA0OCwgNTEsIDUzLCAxMjgsIDg1LCA0OCwgNTEsIDUyLCAxMjgsIDg1LCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDg1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgMTI4LCA4NSwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA4NSwgNDgsIDUxLCA0OCwgMTI4LCA4NSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIAorICAgIDEyOCwgODUsIDQ4LCA1MCwgNTYsIDEyOCwgODUsIDQ4LCA1MCwgNTUsIDEyOCwgODUsIDQ4LCA1MCwgNTQsIDEyOCwgODUsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgODUsIDQ4LCA1MCwgNTIsIDEyOCwgODUsIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg1LCA0OCwgCisgICAgNTAsIDUxLCAxMjgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDg1LCA0OCwgNTAsIDQ4LCAKKyAgICAxMjgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDg1LCA0OCwgNDksIDU2LCAxMjgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDg1LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDg1LCA0OCwgNDksIAorICAgIDUxLCAxMjgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDg1LCA0OCwgNDksIDQ5LCAxMjgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIAorICAgIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIDg1LCA0OCwgCisgICAgNDgsIDU0LCA2NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgODUsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgODUsIDQ4LCA0OCwgNTEsIDEyOCwgODUsIDQ4LCA0OCwgNTAsIAorICAgIDEyOCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDQ1LCA3MywgNDUsIDczLCAxMjgsIDg1LCA0NSwgNjksIDc5LCA0NSwgCisgICAgNjksIDg1LCAxMjgsIDg1LCA0NSwgNjYsIDgyLCA3NCwgNzEsIDg1LCAxMjgsIDg0LCA5MCwgODUsIDEyOCwgODQsIDkwLCAKKyAgICA3OSwgNjUsIDEyOCwgODQsIDkwLCA3OSwgMTI4LCA4NCwgOTAsIDczLCAyMTAsIDg0LCA5MCwgNzMsIDEyOCwgODQsIDkwLCAKKyAgICA2OSwgNjksIDEyOCwgODQsIDkwLCA2OSwgMTI4LCA4NCwgOTAsIDY1LCA2NSwgMTI4LCA4NCwgOTAsIDY1LCAxMjgsIDg0LCAKKyAgICA5MCwgMTI4LCA4NCwgODksIDIxMCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODMsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgyLCAKKyAgICA4NCwgODksIDgwLCA2OSwgNDUsIDE4MSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODAsIDg0LCA4OSwgODAsIDY5LCA0NSwgCisgICAgMTc5LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3OCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzcsIDg0LCA4OSwgODAsIDE5NywgCisgICAgODQsIDg5LCA3OSwgMTI4LCA4NCwgODksIDczLCAxMjgsIDg0LCA4OSwgNjksIDEyOCwgODQsIDg5LCA2NSwgMTI4LCA4NCwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgODcsIDY1LCAyMTcsIDg0LCA4NywgNzksIDQ1LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA4NywgNzksIDQ1LCA3MiwgNjksIAorICAgIDY1LCA2OCwgNjksIDE5NiwgODQsIDg3LCA3OSwgNDUsIDY5LCAyMDUsIDg0LCA4NywgNzMsIDgzLCA4NCwgNjksIDE5NiwgCisgICAgODQsIDg3LCA3MywgNzMsIDEyOCwgODQsIDg3LCA3MywgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDg3LCAKKyAgICA3OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA4MywgNzMsIDg4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCAKKyAgICA2OSwgNzgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIAorICAgIDg0LCA4OSwgNDUsIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCAKKyAgICA4MiwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIAorICAgIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjAwLCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCAKKyAgICA3MSwgNzIsIDg0LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIAorICAgIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCAKKyAgICA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCAxOTcsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgODQsIDg3LCA2NSwgMTI4LCA4NCwgODYsIDgyLCA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgCisgICAgNjgsIDg1LCAyMTAsIDg0LCA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgCisgICAgODQsIDg1LCA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCAKKyAgICA4NCwgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIAorICAgIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDY2LCA2NSwgNzgsIAorICAgIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgNzksIAorICAgIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAxMjgsIAorICAgIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAKKyAgICAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAxMjgsIAorICAgIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCA4NSwgCisgICAgNzEsIDE3OCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgODUsIDY1LCAKKyAgICA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCAKKyAgICA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIAogICAgIDEyOCwgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIDEyOCwgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIAogICAgIDg0LCA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgCi0gICAgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgCi0gICAgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCA4NCwgODMsIAotICAgIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIAotICAgIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgCi0gICAgNzksIDIwMywgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCAKLSAgICA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIAotICAgIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY1LCA2OCwgCi0gICAgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCAKLSAgICA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIAotICAgIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA2OSwgCi0gICAgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCAKLSAgICA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCi0gICAgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIAotICAgIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAKLSAgICA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgCi0gICAgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIAotICAgIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA4MCwgNzksIDY4LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCAKLSAgICA3MywgODAsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNzMsIDczLCA4MywgNjUsIDgwLCAxMjgsIAotICAgIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgMjA1LCA4NCwgCi0gICAgODIsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIAotICAgIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3NiwgNzMsIDY1LCA4NCwgMTk3LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCAyMTIsIDg0LCA4MiwgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgCi0gICAgNDUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDcyLCA2OSwgNjUsIAotICAgIDY4LCA2OSwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgCi0gICAgNzYsIDE5NywgODQsIDgyLCA3MywgNjUsIDEyOCwgODQsIDgyLCA3MywgMTI4LCA4NCwgODIsIDY5LCA4MywgNzMsIDc2LCAKLSAgICA3NiwgNzksIDEyOCwgODQsIDgyLCA2OSwgNzgsIDY4LCAxMjgsIDg0LCA4MiwgNjksIDc4LCAxOTYsIDg0LCA4MiwgNjksIAotICAgIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTEsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MCwgMTI4LCA4NCwgCi0gICAgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4MiwgNjksIAotICAgIDE5NywgODQsIDgyLCA2OSwgNjUsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA4MiwgNjUsIDg5LCAxMjgsIDg0LCA4MiwgCi0gICAgNjUsIDgwLCA2OSwgOTAsIDczLCA4NSwgNzcsIDEyOCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4NiwgNjksIDgyLCA4MywgNjUsIAotICAgIDIwNCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3OCwgCisgICAgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzMsIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgCisgICAgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCAKKyAgICA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIAorICAgIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgCisgICAgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCAKKyAgICA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIAorICAgIDg0LCA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgCisgICAgMTI4LCA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgCisgICAgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIDY1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCAKKyAgICA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIAorICAgIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgCisgICAgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCAKKyAgICA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIAorICAgIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCAKKyAgICA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIAorICAgIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgCisgICAgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCAKKyAgICA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCisgICAgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCAKKyAgICA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIAorICAgIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIDczLCAKKyAgICA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgODQsIAorICAgIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIDc5LCAKKyAgICA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzksIDY4LCAxMjgsIAorICAgIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDc5LCAKKyAgICAyMDYsIDg0LCA4MiwgNzMsIDczLCA4MywgNjUsIDgwLCAxMjgsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAorICAgIDIxMSwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3NiwgNzMsIAorICAgIDY1LCA4NCwgMTk3LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCAKKyAgICAyMTIsIDg0LCA4MiwgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIAorICAgIDY1LCAyMTAsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIAorICAgIDcxLCA3NiwgNjksIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDE5NywgODQsIDgyLCA3MywgNjUsIDEyOCwgCisgICAgODQsIDgyLCA3MywgMTI4LCA4NCwgODIsIDY5LCA4MywgNzMsIDc2LCA3NiwgNzksIDEyOCwgODQsIDgyLCA2OSwgNzgsIDY4LCAKKyAgICAxMjgsIDg0LCA4MiwgNjksIDc4LCAxOTYsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTEsIDEyOCwgODQsIAorICAgIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MCwgMTI4LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDQ5LCAKKyAgICAxMjgsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4MiwgNjksIDE5NywgODQsIDgyLCA2OSwgNjUsIDY4LCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDg0LCA4MiwgNjUsIDg5LCAxMjgsIDg0LCA4MiwgNjUsIDgwLCA2OSwgOTAsIDczLCA4NSwgNzcsIDEyOCwgCisgICAgODQsIDgyLCA2NSwgNzgsIDgzLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4MCwgNzksIAorICAgIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgMjEyLCA4NCwgODIsIDY1LCA3OCwgCiAgICAgODMsIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCA4MywgODMsIAogICAgIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3NywgODcsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA3NywgMTI4LCA4NCwgCiAgICAgODIsIDY1LCAyMDUsIDg0LCA4MiwgNjUsIDczLCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3MywgMjA2LCA4NCwgODIsIDY1LCAKQEAgLTQ5MywxNiArNTg5LDE3IEBACiAgICAgNzksIDgyLCA2NywgODUsIDc2LCA4NSwgMjExLCA4NCwgNzksIDgyLCA2NywgNzIsIDEyOCwgODQsIDc5LCA4MSwgMTI4LCAKICAgICA4NCwgNzksIDgwLCA2NiwgNjUsIDgyLCAxMjgsIDg0LCA3OSwgODAsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIAogICAgIDg0LCA3OSwgODAsIDEyOCwgODQsIDc5LCAyMDgsIDg0LCA3OSwgNzksIDg0LCA3MiwgMTI4LCA4NCwgNzksIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAKLSAgICAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIAotICAgIDU0LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTMsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MiwgMTI4LCA4NCwgCi0gICAgNzksIDc4LCA2OSwgNDUsIDUxLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzksIDc4LCA2NSwgMjA0LCA4NCwgNzksIDc3LCA4MCwgNzMsIAotICAgIDEyOCwgODQsIDc5LCA3NywgNjUsIDg0LCA3OSwgMTI4LCA4NCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgCi0gICAgNzUsIDg5LCAyMDcsIDg0LCA3OSwgNzMsIDc2LCA2OSwgODQsIDEyOCwgODQsIDc5LCA3MSwgNjksIDg0LCA3MiwgNjksIDgyLCAKLSAgICAxMjgsIDg0LCA3OSwgNjgsIDIwNywgODQsIDc5LCA2NSwgNzgsIDY4LCA2NSwgNzUsIDcyLCA3MywgNjUsIDg0LCAxMjgsIAotICAgIDg0LCA3OSwgNjUsIDEyOCwgODQsIDc4LCAxMjgsIDg0LCA3NiwgODYsIDEyOCwgODQsIDc2LCA4NSwgMTI4LCA4NCwgNzYsIAotICAgIDc5LCAxMjgsIDg0LCA3NiwgNzMsIDEyOCwgODQsIDc2LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDg1LCAxMjgsIAorICAgIDEyOCwgODQsIDc5LCA3OCwgNzksIDgzLCAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgNjksIDEyOCwgODQsIDc5LCA3OCwgCisgICAgNzEsIDg1LCAxOTcsIDg0LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTYsIDEyOCwgODQsIDc5LCAKKyAgICA3OCwgNjksIDQ1LCA1NSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU0LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTMsIAorICAgIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MiwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUxLCAxMjgsIDg0LCA3OSwgCisgICAgNzgsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgMTI4LCAKKyAgICA4NCwgNzksIDc4LCA2NSwgMjA0LCA4NCwgNzksIDc3LCA4MCwgNzMsIDEyOCwgODQsIDc5LCA3NywgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA4NCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzUsIDg5LCAyMDcsIDg0LCA3OSwgNzMsIDc2LCAKKyAgICA2OSwgODQsIDEyOCwgODQsIDc5LCA3MSwgNjksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDg0LCA3OSwgNjgsIDIwNywgODQsIAorICAgIDc5LCA2NSwgNzgsIDY4LCA2NSwgNzUsIDcyLCA3MywgNjUsIDg0LCAxMjgsIDg0LCA3OSwgNjUsIDEyOCwgODQsIDc4LCAKKyAgICAxMjgsIDg0LCA3NiwgODYsIDEyOCwgODQsIDc2LCA4NSwgMTI4LCA4NCwgNzYsIDc5LCAxMjgsIDg0LCA3NiwgNzMsIDEyOCwgCisgICAgODQsIDc2LCA3MiwgODksIDY1LCAxMjgsIDg0LCA3NiwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA4NSwgMTI4LCAKICAgICA4NCwgNzYsIDcyLCA3OSwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzMsIDEyOCwgODQsIAogICAgIDc2LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY1LCAxMjgsIDg0LCA3NiwgCiAgICAgNjksIDY5LCAxMjgsIDg0LCA3NiwgNjUsIDEyOCwgODQsIDc0LCA2OSwgMTI4LCA4NCwgNzMsIDg4LCAxMjgsIDg0LCA3MywgCkBAIC01MTMsMTIxICs2MTAsMTIzIEBACiAgICAgODQsIDczLCA4MCwgNjksIDcyLCA2NSwgMTI4LCA4NCwgNzMsIDgwLCAxMjgsIDg0LCA3MywgMjA4LCA4NCwgNzMsIDc4LCAKICAgICA4OSwgMTI4LCA4NCwgNzMsIDc4LCAyMTcsIDg0LCA3MywgNzgsIDc4LCA2OSwgMTI4LCA4NCwgNzMsIDc4LCA2NywgODQsIAogICAgIDg1LCA4MiwgNjksIDEyOCwgODQsIDczLCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDczLCA3NywgNjksIDgzLCAKLSAgICAxMjgsIDg0LCA3MywgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIDY5LCAxMjgsIDg0LCA3MywgNzYsIDY4LCA2OSwgMTI4LCAKLSAgICA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCi0gICAgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCAKLSAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgCi0gICAgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgCi0gICAgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIAotICAgIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDIxMiwgODQsIDczLCA3MywgMTI4LCA4NCwgNzMsIDcxLCA3MiwgCi0gICAgODQsIDc2LCA4OSwgNDUsIDY3LCA3NiwgNzksIDgzLCA2OSwgMTk2LCA4NCwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNzMsIDcxLCAKLSAgICA2OSwgODIsIDEyOCwgODQsIDczLCA3MSwgNjksIDIxMCwgODQsIDczLCA3MCwgNzMsIDc4LCA2NSwgNzEsIDIwMCwgODQsIAotICAgIDczLCA2OSwgODgsIDEyOCwgODQsIDczLCA2OSwgODAsIDEyOCwgODQsIDczLCAxOTcsIDg0LCA3MywgNjcsIDc1LCA2OSwgCi0gICAgODQsIDEyOCwgODQsIDczLCA2NywgNzUsIDEyOCwgODQsIDczLCA2NywgMjAzLCA4NCwgNzMsIDY1LCA4MiwgNjUsIDEyOCwgCi0gICAgODQsIDcyLCA5MCwgMTI4LCA4NCwgNzIsIDg5LCA3OSwgNzksIDIwNSwgODQsIDcyLCA4NywgNzksIDc5LCAxMjgsIDg0LCAKLSAgICA3MiwgODcsIDc5LCAxMjgsIDg0LCA3MiwgODcsIDczLCA3MywgMTI4LCA4NCwgNzIsIDg3LCA3MywgMTI4LCA4NCwgNzIsIAotICAgIDg3LCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDg0LCA3MiwgODcsIDY1LCAxMjgsIDg0LCA3MiwgCi0gICAgODUsIDgyLCAyMTEsIDg0LCA3MiwgODUsIDgyLCA3MywgODMsIDY1LCAyMTgsIDg0LCA3MiwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODMsIDg0LCA3OSwgODIsIDc3LCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgCi0gICAgNjksIDgyLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDIxMCwgODQsIDcyLCA4NSwgNzcsIDY2LCAyMTEsIDg0LCAKLSAgICA3MiwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDg0LCA3MiwgODIsIAotICAgIDc5LCA4NSwgNzEsIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgCi0gICAgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIAotICAgIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgCi0gICAgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCAKLSAgICA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIAotICAgIDg1LCAxMjgsIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgCi0gICAgNzEsIDEyOCwgODQsIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA3MywgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIAotICAgIDE5NiwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAKLSAgICAyMTcsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgCi0gICAgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCAKLSAgICA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgMjA2LCA4NCwgNzIsIDczLCA3MywgMTI4LCAKLSAgICA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDY5LCA4OSwgCi0gICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIAotICAgIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAKLSAgICAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIAotICAgIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgCi0gICAgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCAKLSAgICA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDE5NywgODQsIDcyLCAKLSAgICA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NiwgCi0gICAgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAKLSAgICAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIAotICAgIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAxMjgsIDg0LCA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgCi0gICAgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIAotICAgIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAKLSAgICAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIAotICAgIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgCi0gICAgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCAKLSAgICA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIAotICAgIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgCi0gICAgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCAKLSAgICA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIAotICAgIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIAotICAgIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCAKLSAgICA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIAotICAgIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKLSAgICA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIAotICAgIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgMTI4LCA4NCwgCi0gICAgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY5LCAKLSAgICA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIAotICAgIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgODQsIDY5LCAKLSAgICA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA0NSwgCi0gICAgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgNjcsIDcyLCAKLSAgICA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgCi0gICAgMTI4LCA4NCwgNjcsIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIAotICAgIDg0LCA2NSwgODgsIDczLCAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgCi0gICAgMjEyLCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCAKLSAgICA3MywgMTI4LCA4NCwgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCAKLSAgICA2NSwgODUsIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIAotICAgIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgCi0gICAgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NCwgNjUsIDgyLCAKLSAgICA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDg0LCA2NSwgODAsIAotICAgIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgMTk2LCA4NCwgNjUsIAotICAgIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIDY2LCA2NSwgCi0gICAgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzcsIDEyOCwgCi0gICAgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDg0LCAKLSAgICA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIDc2LCA2OSwgNzgsIAotICAgIDIxMiwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgCi0gICAgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCAKLSAgICA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIAotICAgIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgCi0gICAgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzUsIDEyOCwgCi0gICAgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCAKLSAgICA4MywgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIDY1LCA2NiwgMTI4LCA4NCwgNjUsIDE5NCwgODQsIDY1LCAKLSAgICA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCA2NSwgNzcsIDEyOCwgODQsIAotICAgIDY1LCA2NSwgNzYsIDg1LCA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIDY1LCA3MCwgMTI4LCA4NCwgCi0gICAgNjUsIDUwLCAxMjgsIDg0LCA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIDQ4LCAKLSAgICA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIAotICAgIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA0OSwgCi0gICAgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCA4NCwgCi0gICAgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCA0OSwgCi0gICAgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIDEyOCwgCi0gICAgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCA0OCwgCi0gICAgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAKLSAgICA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgMTI4LCAKLSAgICA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAxMjgsIAotICAgIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAxMjgsIAotICAgIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCA2NSwgCi0gICAgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4OSwgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgCi0gICAgODIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCAKLSAgICA4NSwgODcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIAotICAgIDc3LCA3OSwgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgCi0gICAgNzEsIDc3LCAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDg5LCAKKyAgICAxMjgsIDg0LCA3MywgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIDY5LCAxMjgsIDg0LCA3MywgNzYsIDY4LCAxOTcsIDg0LCAKKyAgICA3MywgNzYsIDEyOCwgODQsIDczLCAyMDQsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAorICAgIDg0LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4NCwgNzMsIAorICAgIDc1LCA2OSwgODUsIDg0LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCAKKyAgICA2OSwgODUsIDg0LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgCisgICAgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgMjEyLCA4NCwgNzMsIDcxLCA3MiwgODQsIDc2LCA4OSwgNDUsIDY3LCA3NiwgNzksIDgzLCA2OSwgMTk2LCA4NCwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA4NCwgNzMsIDcxLCA2OSwgODIsIDEyOCwgODQsIDczLCA3MSwgNjksIDIxMCwgODQsIDczLCA3MCwgCisgICAgNzMsIDc4LCA2NSwgNzEsIDIwMCwgODQsIDczLCA2OSwgODgsIDEyOCwgODQsIDczLCA2OSwgODAsIDEyOCwgODQsIDczLCAKKyAgICAxOTcsIDg0LCA3MywgNjcsIDc1LCA2OSwgODQsIDEyOCwgODQsIDczLCA2NywgNzUsIDEyOCwgODQsIDczLCA2NywgMjAzLCAKKyAgICA4NCwgNzMsIDY1LCA4MiwgNjUsIDEyOCwgODQsIDcyLCA5MCwgMTI4LCA4NCwgNzIsIDg5LCA3OSwgNzksIDIwNSwgODQsIAorICAgIDcyLCA4NywgNzksIDc5LCAxMjgsIDg0LCA3MiwgODcsIDc5LCAxMjgsIDg0LCA3MiwgODcsIDczLCA3MywgMTI4LCA4NCwgCisgICAgNzIsIDg3LCA3MywgMTI4LCA4NCwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDg0LCAKKyAgICA3MiwgODcsIDY1LCAxMjgsIDg0LCA3MiwgODUsIDgyLCAyMTEsIDg0LCA3MiwgODUsIDgyLCA3MywgODMsIDY1LCAyMTgsIAorICAgIDg0LCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODMsIDg0LCA3OSwgODIsIDc3LCAKKyAgICAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDIxMCwgODQsIAorICAgIDcyLCA4NSwgNzcsIDY2LCAyMTEsIDg0LCA3MiwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDg0LCA3MiwgODIsIDc5LCA4NSwgCisgICAgNzEsIDcyLCAxMjgsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCAKKyAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODQsIAorICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2OSwgMjA1LCA4NCwgCisgICAgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKKyAgICA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIAorICAgIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgCisgICAgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCAKKyAgICA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgODQsIAorICAgIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIAorICAgIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgCisgICAgODIsIDE5NiwgODQsIDcyLCA3MywgMjA2LCA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgCisgICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAKKyAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIAorICAgIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgCisgICAgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCAKKyAgICA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIAorICAgIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgCisgICAgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDE5NywgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCAKKyAgICA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIAorICAgIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIAorICAgIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgCisgICAgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAxMjgsIDg0LCAKKyAgICA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIAorICAgIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgCisgICAgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCAKKyAgICA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgCisgICAgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCAKKyAgICA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIAorICAgIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCisgICAgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCAKKyAgICA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIAorICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgCisgICAgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAorICAgIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIAorICAgIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgCisgICAgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCAKKyAgICA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIAorICAgIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3NiwgCisgICAgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIAorICAgIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKKyAgICA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIAorICAgIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCAKKyAgICA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgCisgICAgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgCisgICAgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgCisgICAgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCAKKyAgICA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIAorICAgIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgCisgICAgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAKKyAgICAxMjgsIDg0LCA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIAorICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgCisgICAgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAKKyAgICAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIAorICAgIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIAorICAgIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgCisgICAgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDEyOCwgCisgICAgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCAKKyAgICA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCAKKyAgICA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIAorICAgIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgCisgICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCAKKyAgICA2NiwgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCAKKyAgICA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIAorICAgIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgCisgICAgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIDUwLCAxMjgsIDg0LCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgCisgICAgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgCisgICAgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIAorICAgIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIAorICAgIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgCisgICAgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIAorICAgIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgCisgICAgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgCisgICAgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgCisgICAgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgCisgICAgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAKKyAgICA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIDc4LCA3MSwgNjksIAorICAgIDEyOCwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgODMsIAorICAgIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCA4OSwgCisgICAgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDE5MywgODMsIDg5LCAKKyAgICA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgCiAgICAgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgODMsIAogICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NiwgCiAgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU0LCAKQEAgLTY1NCwyMjMgKzc1MywyMjggQEAKICAgICA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIAogICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ5LCAKICAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDY1LCAxMjgsIDgzLCA4OSwgMTI4LCA4MywgODcsIAotICAgIDkwLCAxMjgsIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgCi0gICAgODIsIDY4LCAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgCi0gICAgODMsIDg3LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCAKLSAgICA4NywgNzMsIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIAotICAgIDEyOCwgODMsIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIAotICAgIDgzLCA4NywgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAKLSAgICAxMjgsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCAKLSAgICA4NSwgODQsIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIAotICAgIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA4NSwgCi0gICAgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgNzAsIDY1LCAKLSAgICA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgODIsIAotICAgIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIDczLCA3OCwgCi0gICAgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCAKLSAgICA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIAotICAgIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgMTk2LCA4MywgCi0gICAgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCA4NSwgODAsIAotICAgIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCA4MywgODUsIAotICAgIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgCi0gICAgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgCi0gICAgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgCi0gICAgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCAKLSAgICA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIAotICAgIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgCi0gICAgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCAKLSAgICA4MywgODUsIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIAotICAgIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgCi0gICAgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCAKLSAgICA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCAKLSAgICA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIAotICAgIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCAKLSAgICA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgCi0gICAgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgCi0gICAgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIAotICAgIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKLSAgICAyMDgsIDgzLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIAotICAgIDEyOCwgODMsIDg1LCA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgODksIAotICAgIDEyOCwgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAotICAgIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgODMsIAotICAgIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIDg5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCA4MywgCi0gICAgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIAotICAgIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIAotICAgIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIAotICAgIDEyOCwgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIAotICAgIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIDIwNCwgCi0gICAgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCAKLSAgICA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4NCwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIAotICAgIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4NSwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCAyMTEsIDgzLCAKLSAgICA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgODQsIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgCi0gICAgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgCi0gICAgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgCi0gICAgNjUsIDcwLCA3MCwgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgCi0gICAgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgCi0gICAgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCAKLSAgICA4OCwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCAKLSAgICA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIAotICAgIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgCi0gICAgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgCi0gICAgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCAKLSAgICA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCAKLSAgICA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIAotICAgIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCAKLSAgICA4NSwgNzcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAKLSAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCAKLSAgICA2NSwgNjksIDY1LCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNjUsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCAKLSAgICA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIAotICAgIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2NSwgMjEyLCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCA4MywgMTI4LCA4MywgCi0gICAgODEsIDg1LCA2NSwgODIsIDY5LCA2OCwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxMjgsIDgzLCA4MCwgODcsIDY1LCAKLSAgICAxMjgsIDgzLCA4MCwgODUsIDc4LCA3MSwgMjExLCA4MywgODAsIDgyLCA3OSwgODUsIDg0LCAxMjgsIDgzLCA4MCwgODIsIAotICAgIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgzLCA4MCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDgwLCA4MiwgNjksIDY3LCA3MiwgCi0gICAgNzEsIDY5LCA4MywgNjUsIDc4LCAxOTksIDgzLCA4MCwgNzksIDg1LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzksIDg0LCAKLSAgICAxMjgsIDgzLCA4MCwgNzksIDc5LCA3OCwgMTI4LCA4MywgODAsIDc2LCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgODMsIAotICAgIDgwLCA3NiwgNjUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzMsIDgyLCA3MywgODQsIDg1LCAyMTEsIDgzLCA4MCwgCi0gICAgNzMsIDgyLCA3MywgODQsIDEyOCwgODMsIDgwLCA3MywgODIsIDczLCAyMTIsIDgzLCA4MCwgNzMsIDgyLCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgNzYsIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCAyMDQsIDgzLCA4MCwgNzMsIAotICAgIDY4LCA2OSwgODIsIDIxNywgODMsIDgwLCA3MywgNjcsIDY5LCAxMjgsIDgzLCA4MCwgNzIsIDY5LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA4MywgODAsIDY5LCA4MywgNzcsIDczLCA3NiwgMjA3LCA4MywgODAsIDY5LCA2OSwgNjgsIDY2LCA3OSwgNjUsIDg0LCAKLSAgICAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgNzIsIDEyOCwgODMsIDgwLCA2OSwgNjksIDY3LCAyMDAsIDgzLCA4MCwgNjksIAotICAgIDY3LCA3MywgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNjksIDY1LCA4MiwgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgCi0gICAgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCAyMTAsIDgzLCA4MCwgNjksIDY1LCA3NSwgNDUsIDc4LCA3OSwgNDUsIDY5LCAKLSAgICA4NiwgNzMsIDIwNCwgODMsIDgwLCA2NSwgODQsIDcyLCA3MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA3MywgNzgsIAotICAgIDE5OSwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MiwgCi0gICAgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgMTI4LCA4MywgODAsIDY1LCA3MSwgNzIsIDY5LCA4NCwgODQsIDczLCAKLSAgICAxMjgsIDgzLCA4MCwgNjUsIDY4LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgNjgsIDE5NywgODMsIDgwLCA2NSwgNjcsIAotICAgIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA2NywgMTk3LCA4MywgODAsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgNzksIAotICAgIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA4MywgCi0gICAgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIDc5LCAKLSAgICA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgODMsIAotICAgIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCA4MSwgCi0gICAgMTI4LCA4MywgNzksIDc5LCAyMDYsIDgzLCA3OSwgNzksIDEyOCwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCA4MywgCi0gICAgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDEyOCwgODMsIDc5LCA3NiwgNzMsIDY4LCAKLSAgICA4NSwgODMsIDEyOCwgODMsIDc5LCA3NiwgNzMsIDY4LCA4NSwgMjExLCA4MywgNzksIDcxLCA2OCwgNzMsIDY1LCAyMDYsIAotICAgIDgzLCA3OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OSwgNDUsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCAKLSAgICA3OSwgNzAsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzksIDcwLCAyMTIsIDgzLCA3OSwgMTk4LCA4MywgNzksIAotICAgIDY3LCA3MywgNjksIDg0LCA4OSwgMTI4LCA4MywgNzksIDY3LCA2NywgNjksIDIxMCwgODMsIDc5LCA2NSwgODAsIDEyOCwgCi0gICAgODMsIDc5LCA2NSwgMTI4LCA4MywgMjA3LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCAKLSAgICA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIAotICAgIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAxMjgsIDgzLCA3OCwgNzksIDg1LCA4NCwgCi0gICAgMTI4LCA4MywgNzgsIDc5LCA4NSwgMjEyLCA4MywgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgCi0gICAgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgODMsIDc3LCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA3NywgNjUsIDgzLCAKLSAgICAyMDAsIDgzLCA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIDc2LCAxMjgsIDgzLCA3NiwgODUsIAotICAgIDgyLCAxMjgsIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgNzYsIDc5LCA4NiwgCi0gICAgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNzksIDgwLCAKLSAgICA2OSwgMTI4LCA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCA4MywgCi0gICAgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDY1LCA4NiwgNzksIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCAKLSAgICA4NiwgNjksIDEyOCwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIAotICAgIDc4LCA4NCwgNjksIDE5NiwgODMsIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgCi0gICAgNzYsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCAKLSAgICA3OCwgMTI4LCA4MywgNzUsIDczLCA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCAKLSAgICA4MywgNzUsIDY1LCA4NCwgNjksIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgNjksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIDczLCA4OCwgCi0gICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIAotICAgIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCAKLSAgICAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgNzEsIAotICAgIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDczLCAKLSAgICA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIAotICAgIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCAKLSAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCA3MywgCi0gICAgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA3MywgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAKLSAgICAxOTcsIDgzLCA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIAotICAgIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCAKLSAgICAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgODUsIAotICAgIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCA3NSwgCi0gICAgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDY5LCAKLSAgICAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAxMjgsIAotICAgIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCA3MywgCi0gICAgMTI4LCA4MywgNzMsIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAKLSAgICAxOTMsIDgzLCA3MywgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCAKLSAgICA3MSwgMTI4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIAotICAgIDY3LCA3NSwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAKLSAgICAxOTcsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIDgzLCA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCAKLSAgICA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIDEyOCwgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDg3LCAKLSAgICA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIAotICAgIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgCi0gICAgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCAKLSAgICA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIAotICAgIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgCi0gICAgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCAKLSAgICA3MywgNzcsIDgwLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIDgzLCA3MiwgNzksIAotICAgIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgNzIsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCA4MywgNzIsIDc5LCAKLSAgICA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIDEyOCwgODMsIAotICAgIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAKLSAgICA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4NCwgODksIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgCi0gICAgNzEsIDQ1LCA4MywgNzksIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OSwgODMsIAotICAgIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OCwgNjUsIDg1LCAxOTYsIDgzLCA3MiwgCi0gICAgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIAotICAgIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCAKLSAgICA4NCwgODcsIDczLCA3MSwgNDUsIDY2LCA3NCwgNjUsIDgyLCA3NSwgNjUsIDIwNiwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgCi0gICAgODQsIDg3LCA3MywgNzEsIDQ1LCA2NSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIAotICAgIDIxMiwgODMsIDcyLCA3OSwgODEsIDEyOCwgODMsIDcyLCA3OSwgMjA5LCA4MywgNzIsIDc5LCA4MCwgMTI4LCA4MywgNzIsIAotICAgIDc5LCA3OSwgODQsIDczLCA3OCwgMTk5LCA4MywgNzIsIDc5LCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgNzksIDEyOCwgCi0gICAgODMsIDcyLCA3OSwgNzEsIDIwMSwgODMsIDcyLCA3OSwgMTk5LCA4MywgNzIsIDc5LCA2OSwgMTI4LCA4MywgNzIsIDc5LCAKLSAgICAxOTcsIDgzLCA3MiwgNzksIDY1LCAxMjgsIDgzLCA3MiwgNzksIDEyOCwgODMsIDcyLCA3MywgODksIDg5LCA2NSwgNjUsIAotICAgIDc2LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCAxOTMsIDgzLCA3MiwgCi0gICAgNzMsIDgyLCAyMTIsIDgzLCA3MiwgNzMsIDgyLCA2NSwgNjksIDEyOCwgODMsIDcyLCA3MywgODIsIDEyOCwgODMsIDcyLCAKLSAgICA3MywgMjEwLCA4MywgNzIsIDczLCA4MSwgMTI4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA4MywgNzIsIDczLCA3OCwgODQsIAotICAgIDIwNywgODMsIDcyLCA3MywgNzgsIDczLCA3MSwgMTI4LCA4MywgNzIsIDczLCA3OCwgNjgsIDE5MywgODMsIDcyLCA3MywgCi0gICAgNzgsIDEyOCwgODMsIDcyLCA3MywgMjA2LCA4MywgNzIsIDczLCA3NywgNjUsIDEyOCwgODMsIDcyLCA3MywgNzcsIDE5MywgCi0gICAgODMsIDcyLCA3MywgNzcsIDEyOCwgODMsIDcyLCA3MywgMjA1LCA4MywgNzIsIDczLCA3MywgNzgsIDEyOCwgODMsIDcyLCAKLSAgICA3MywgNzMsIDEyOCwgODMsIDcyLCA3MywgNzAsIDIxMiwgODMsIDcyLCA3MywgNjksIDc2LCA2OCwgMTI4LCA4MywgNzIsIAotICAgIDczLCA2OCwgMTI4LCA4MywgNzIsIDczLCAxOTYsIDgzLCA3MiwgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNzIsIDE5MywgODMsIAotICAgIDcyLCA2OSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODYsIDY1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA4MywgCi0gICAgNzIsIDY5LCA4NSwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCA4NCwgODUsIDEyOCwgODMsIDcyLCAKLSAgICA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDY5LCA4NCwgCisgICAgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIDgzLCA4NywgCisgICAgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAxMjgsIDgzLCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCA3MywgNzcsIAorICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIDg3LCAKKyAgICA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgNjUsIAorICAgIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCA4MywgCisgICAgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIDgzLCAKKyAgICA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgODQsIAorICAgIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAKKyAgICA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgCisgICAgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCAKKyAgICA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIAorICAgIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCAKKyAgICA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgCisgICAgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgCisgICAgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCAKKyAgICA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIAorICAgIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCAKKyAgICAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgCisgICAgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAKKyAgICA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCAKKyAgICA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDcyLCA4NSwgODIsIAorICAgIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAorICAgIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgODUsIDY3LCA2NywgCisgICAgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIAorICAgIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgCisgICAgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCAKKyAgICA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIAorICAgIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgCisgICAgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCAKKyAgICA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAorICAgIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgCisgICAgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCAKKyAgICAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAKKyAgICAxMjgsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIAorICAgIDc5LCA3NSwgNjksIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDU3LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTUsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDUxLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIAorICAgIDc1LCA2OSwgNDUsIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIAorICAgIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIAorICAgIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDEyOCwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCA4MywgODQsIDgyLCA2NSwgNzMsIAorICAgIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgCisgICAgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCAKKyAgICA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAxMjgsIDgzLCA4NCwgNzksIAorICAgIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIAorICAgIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIAorICAgIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgCisgICAgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3NywgMTI4LCAKKyAgICA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIAorICAgIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgCisgICAgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCAKKyAgICA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgCisgICAgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCAKKyAgICA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIAorICAgIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgCisgICAgMTI4LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAxMjgsIDgzLCAKKyAgICA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIAorICAgIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCA4MywgODQsIDUwLCAxMjgsIDgzLCA4MywgODksIDg4LCAKKyAgICAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODMsIDg5LCA4MiwgMTI4LCAKKyAgICA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIDgzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4MywgODUsIAorICAgIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIAorICAgIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAxMjgsIDgzLCA4MywgNzksIDc5LCAxMjgsIDgzLCA4MywgCisgICAgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgODMsIDgzLCA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgCisgICAgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCA3MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIAorICAgIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDg1LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgCisgICAgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCAKKyAgICA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgCisgICAgNjUsIDEyOCwgODMsIDgzLCA2NSwgNzMsIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgCisgICAgODMsIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCAKKyAgICA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIAorICAgIDgxLCA4NSwgNjUsIDgyLCA2OSwgODMsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgCisgICAgNjUsIDgyLCA2OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIDgwLCAKKyAgICA4MiwgNzksIDg1LCA4NCwgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NywgNzIsIDcxLCA2OSwgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NSwgCisgICAgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NCwgMTI4LCA4MywgODAsIDc5LCA3OSwgNzgsIDEyOCwgODMsIDgwLCAKKyAgICA3NiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzYsIDY1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MywgODAsIAorICAgIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgCisgICAgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCAKKyAgICA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCA2OCwgNjksIDgyLCAyMTcsIDgzLCA4MCwgNzMsIDY3LCA2OSwgCisgICAgMTI4LCA4MywgODAsIDcyLCA2OSwgODIsIDczLCA2NywgNjUsIDIwNCwgODMsIDgwLCA2OSwgODMsIDc3LCA3MywgNzYsIAorICAgIDIwNywgODMsIDgwLCA2OSwgNjksIDY4LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDcyLCAKKyAgICAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgMjAwLCA4MywgODAsIDY5LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA4MywgODAsIAorICAgIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgCisgICAgMjEwLCA4MywgODAsIDY5LCA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCAKKyAgICA3MiwgNzMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIAorICAgIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgCisgICAgNjksIDEyOCwgODMsIDgwLCA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAKKyAgICAxMjgsIDgzLCA4MCwgNjUsIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIAorICAgIDE5NywgODMsIDgwLCA2NSwgMTI4LCA4MywgNzksIDg5LCAxMjgsIDgzLCA3OSwgODcsIDczLCA3NiwgMjA3LCA4MywgNzksIAorICAgIDg3LCAxMjgsIDgzLCA3OSwgODUsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDgzLCA3OSwgODUsIDg0LCA3MiwgNDUsIDgzLCA3NiwgCisgICAgNjUsIDg2LCA2OSwgMjE3LCA4MywgNzksIDg1LCA4NCwgMjAwLCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgzLCAKKyAgICA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgNzksIDg1LCA3OCwgMTk2LCA4MywgNzksIDg1LCA3OCwgNjUsIDgwLCAxMjgsIAorICAgIDgzLCA3OSwgODUsIDEyOCwgODMsIDc5LCA4MywgMTI4LCA4MywgNzksIDgyLCAxOTMsIDgzLCA3OSwgODEsIDEyOCwgODMsIAorICAgIDc5LCA3OSwgMjA2LCA4MywgNzksIDc4LCA3NCwgNjUsIDc3LCAxMjgsIDgzLCA3OSwgNzgsIDcxLCAxMjgsIDgzLCA3OSwgCisgICAgNzgsIDEyOCwgODMsIDc5LCA3NywgODAsIDY5LCA3OCwgMTk5LCA4MywgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCAKKyAgICA2OCwgODUsIDgzLCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDIxMSwgODMsIDc5LCA3MiwgMTI4LCA4MywgNzksIAorICAgIDcxLCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OSwgNDUsIDcwLCA4NSwgNzgsIDY3LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzksIDcwLCAyMTIsIAorICAgIDgzLCA3OSwgMTk4LCA4MywgNzksIDY3LCA3MywgNjksIDg0LCA4OSwgMTI4LCA4MywgNzksIDY3LCA2NywgNjksIDIxMCwgCisgICAgODMsIDc5LCA2NSwgODAsIDEyOCwgODMsIDc5LCA2NSwgMTI4LCA4MywgMjA3LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAKKyAgICA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgNjksIAorICAgIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKKyAgICAxMjgsIDgzLCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MywgNzgsIDc5LCA4NSwgMjEyLCA4MywgNzgsIDY1LCAyMDgsIDgzLCAKKyAgICA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIAorICAgIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgODMsIDc3LCA2OSwgNjUsIDgyLCAKKyAgICAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgCisgICAgMjE1LCA4MywgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAKKyAgICAxOTksIDgzLCA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgCisgICAgNjksIDY5LCA4MCwgMjE3LCA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDY1LCA4NiwgNzksIDc4LCAKKyAgICA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgNjUsIAorICAgIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCA4NywgCisgICAgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIDgyLCAKKyAgICA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIDgzLCAKKyAgICA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgNjksIAorICAgIDEyOCwgODMsIDczLCA4OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgCisgICAgMTI4LCA4MywgNzMsIDg4LCA4NCwgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKKyAgICA3MiwgMjExLCA4MywgNzMsIDg4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIAorICAgIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgCisgICAgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCAKKyAgICA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCAKKyAgICA3MywgNzgsIDE5NywgODMsIDczLCAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCAKKyAgICA3MywgODIsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgCisgICAgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIAorICAgIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgODMsIDczLCA3OSwgODMsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIAorICAgIDY5LCA4NSwgNzcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCAKKyAgICA2OSwgODUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIAorICAgIDgzLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTEsIAorICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIDE5NywgODMsIAorICAgIDczLCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAKKyAgICAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDIxMCwgODMsIAorICAgIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgNzgsIDcxLCA4NSwgMjA2LCA4MywgCisgICAgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCA3MywgNzYsIDc1LCAxMjgsIDgzLCAKKyAgICA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgNjksIDEyOCwgODMsIAorICAgIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgNTEsIDEyOCwgODMsIDczLCA3NSwgCisgICAgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgNzMsIDcxLCA3OCwgODMsIDEyOCwgCisgICAgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCA3MywgNzEsIDY5LCAyMDQsIDgzLCAKKyAgICA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCAKKyAgICA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIAorICAgIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAKKyAgICAxMjgsIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIAorICAgIDEyOCwgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIAorICAgIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA4NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIDEyOCwgODMsIDcyLCAKKyAgICA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA3MiwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgNzIsIDg1LCA3MCwgCisgICAgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCAKKyAgICA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIAorICAgIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIAorICAgIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAKKyAgICAxMjgsIDgzLCA3MiwgODIsIDczLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIAorICAgIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgCisgICAgODMsIDcyLCA3OSwgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIAorICAgIDY5LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODQsIDg5LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIAorICAgIDg0LCA4NywgNzMsIDcxLCA0NSwgODMsIDc5LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCAKKyAgICA0NSwgNzksIDgzLCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzgsIDY1LCA4NSwgCisgICAgMTk2LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgODMsIDcyLCAKKyAgICA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgODMsIDcyLCA3OSwgCisgICAgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA2NiwgNzQsIDY1LCA4MiwgNzUsIDY1LCAyMDYsIDgzLCA3MiwgNzksIAorICAgIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNjUsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDgyLCAyMTIsIDgzLCA3MiwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNzksIDIwOSwgODMsIDcyLCA3OSwgODAsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgNzksIDg0LCA3MywgNzgsIDE5OSwgODMsIDcyLCA3OSwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDc5LCAKKyAgICAxMjgsIDgzLCA3MiwgNzksIDcxLCAyMDEsIDgzLCA3MiwgNzksIDE5OSwgODMsIDcyLCA3OSwgNjksIDEyOCwgODMsIDcyLCAKKyAgICA3OSwgMTk3LCA4MywgNzIsIDc5LCA2NSwgMTI4LCA4MywgNzIsIDc5LCAxMjgsIDgzLCA3MiwgNzMsIDg5LCA4OSwgNjUsIAorICAgIDY1LCA3NiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgMTkzLCA4MywgCisgICAgNzIsIDczLCA4MiwgMjEyLCA4MywgNzIsIDczLCA4MiwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNzMsIDgyLCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDIxMCwgODMsIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgODAsIDEyOCwgODMsIDcyLCA3MywgNzgsIAorICAgIDg0LCAyMDcsIDgzLCA3MiwgNzMsIDc4LCA3MywgNzEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgCisgICAgNzMsIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDc3LCAKKyAgICAxOTMsIDgzLCA3MiwgNzMsIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIDc4LCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgODMsIAorICAgIDcyLCA3MywgNjgsIDEyOCwgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDcyLCAxOTMsIAorICAgIDgzLCA3MiwgNjksIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA2OSwgODUsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIDg1LCAxMjgsIDgzLCAKKyAgICA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDcyLCA2OSwgODQsIAogICAgIDEyOCwgODMsIDcyLCA2OSwgMjEyLCA4MywgNzIsIDY5LCA4MywgNzIsIDc2LCA2NSwgNzcsIDEyOCwgODMsIDcyLCA2OSwgCiAgICAgODMsIDcyLCA3MywgNzEsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgMTk5LCA4MywgNzIsIDY5LCA4MywgNzIsIDUwLCAKICAgICAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgMTI4LCA4MywgNzIsIDY5LCA4MSwgNjksIDIwNCwgODMsIDcyLCA2OSwgODAsIApAQCAtODgwLDM3NiArOTg0LDM4NCBAQAogICAgIDEyOCwgODMsIDcyLCA2OSwgNjksIDIwNiwgODMsIDcyLCA2OSwgNjksIDEyOCwgODMsIDcyLCA2OSwgNDUsIDcxLCA3OSwgCiAgICAgNjUsIDg0LCAxMjgsIDgzLCA3MiwgMTk3LCA4MywgNzIsIDY3LCA3MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODksIDEyOCwgCiAgICAgODMsIDcyLCA2NSwgODgsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MywgNzIsIDY1LCAKLSAgICA4NiwgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NCwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgNTAsIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgODAsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA3NywgODIsIDc5LCA2NywgNzUsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDg0LCA3MywgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgNTQsIDEyOCwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgCi0gICAgNzksIDIxMCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg4LCA4NCwgCi0gICAgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIAotICAgIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgCi0gICAgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCAKLSAgICA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIAotICAgIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgCi0gICAgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIAotICAgIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgCi0gICAgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIAotICAgIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgCi0gICAgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIAotICAgIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIDc3LCA4NSwgCi0gICAgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgMTI4LCAKLSAgICA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIDIxMiwgODMsIAotICAgIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgNzMsIDc4LCAKLSAgICA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCA3MywgNjcsIAotICAgIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIDc3LCA3MywgCi0gICAgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCAKLSAgICA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIDc5LCA3MywgCi0gICAgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAotICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIAotICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgCi0gICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAotICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3MywgODMsIAotICAgIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgCi0gICAgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCAKLSAgICA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIAotICAgIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCAKLSAgICA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIAotICAgIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIDY1LCA3NiwgCi0gICAgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgMTI4LCA4MywgCi0gICAgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCA3OSwgNzYsIDc2LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjcsIAotICAgIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA2NywgNzksIDgyLCA4MCwgCi0gICAgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAKLSAgICAxMjgsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIAotICAgIDY5LCA2OCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAKLSAgICAyMDQsIDgzLCA2NywgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIAotICAgIDY5LCA4MCwgODQsIDY5LCAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgCi0gICAgNzgsIDY4LCA3MywgNjcsIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCAKLSAgICA4MywgNjYsIDg1LCAxOTQsIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDEyOCwgODMsIDY1LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCAKLSAgICA4MywgNjUsIDg3LCAxMjgsIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA3MywgNzYsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgCi0gICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIAotICAgIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgCi0gICAgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgCi0gICAgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCAKLSAgICA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIAotICAgIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAKLSAgICAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCAKLSAgICA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIDEyOCwgODMsIDY1LCA3NywgNzUsIAotICAgIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCAyMDAsIDgzLCA2NSwgCi0gICAgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIDIwNiwgODMsIDY1LCA3NywgMTI4LCAKLSAgICA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIAotICAgIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAKLSAgICAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIAotICAgIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA3OSwgODQsIDEyOCwgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgCi0gICAgNjksIDEyOCwgODMsIDY1LCA3NSwgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCAKLSAgICA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgCi0gICAgMTI4LCA4MywgNjUsIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIAotICAgIDEyOCwgODMsIDY1LCA3MSwgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNjgsIAotICAgIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIAotICAgIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgCi0gICAgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAKLSAgICAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgCi0gICAgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCAKLSAgICA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIAotICAgIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgCi0gICAgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgCi0gICAgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgCi0gICAgODIsIDg5LCA2NSwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCAKLSAgICA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCAKLSAgICA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgCi0gICAgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgCi0gICAgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIAotICAgIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIAotICAgIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgCi0gICAgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCA3MSwgNjYsIAotICAgIDIxNywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCA4NCwgNjUsIAotICAgIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4NCwgCi0gICAgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgODAsIDEyOCwgCi0gICAgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIAotICAgIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgNzksIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIAotICAgIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgODIsIDgyLCA2OSwgCi0gICAgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCA2OSwgMjAwLCA4MiwgCi0gICAgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCA4MiwgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCAKLSAgICA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgCi0gICAgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCAKLSAgICA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIAotICAgIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgNzksIDc5LCAxMjgsIDgyLCA3OSwgNzcsIDY1LCAyMDYsIAotICAgIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgCi0gICAgNjksIDg0LCAxMjgsIDgyLCA3OSwgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgCi0gICAgODIsIDc5LCA2NSwgODMsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCAKLSAgICA3OCwgODksIDczLCA3OCwgMTk5LCA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIAotICAgIDc4LCA2NSwgMjA1LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIAotICAgIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIAotICAgIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgMTI4LCA4MiwgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIAotICAgIDc4LCA3MCwgNzksIDgyLCA5MCwgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgCi0gICAgNjUsIDEyOCwgODIsIDczLCA3NSwgODIsIDczLCA3NSwgMTI4LCA4MiwgNzMsIDczLCAxMjgsIDgyLCA3MywgNzEsIDg2LCAKLSAgICA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAKLSAgICAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIAotICAgIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAKLSAgICAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAKLSAgICAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIAotICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCAKLSAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAotICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgCi0gICAgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAotICAgIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgCi0gICAgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCAKLSAgICA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIAotICAgIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIAotICAgIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgCi0gICAgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAKLSAgICAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgODQsIAotICAgIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCA3OSwgCi0gICAgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCAKLSAgICA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgODQsIAotICAgIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgCi0gICAgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIDg0LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIAotICAgIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCA3OCwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIDY5LCAKLSAgICA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIAotICAgIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIAotICAgIDY5LCA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgCi0gICAgNzYsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIAotICAgIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgCi0gICAgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCAKLSAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIAotICAgIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgCi0gICAgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCAKKyAgICA4NiwgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NSwgMTI4LCA4MywgNzIsIAorICAgIDY1LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIDcyLCA2NSwgCisgICAgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICA4MiwgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCAKKyAgICA3NywgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzUsIDg0LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgCisgICAgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCA2NywgMTI4LCA4MywgNzEsIAorICAgIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIDcxLCAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIAorICAgIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAKKyAgICA3OCwgODQsIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIAorICAgIDY5LCA3OCwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgCisgICAgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgMjA2LCA4MywgNjksIDg1LCA4OCwgMTI4LCAKKyAgICA4MywgNjksIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCA4MywgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA2OSwgODQsIAorICAgIDcwLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIDY5LCA4MiwgODQsIDczLCA4NSwgMjExLCA4MywgNjksIDgzLCA4MSwgCisgICAgODUsIDczLCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA4NCwgNjksIDEyOCwgODMsIDY5LCA4MywgNjUsIDc3LCAxOTcsIDgzLCAKKyAgICA2OSwgODIsIDg2LCA3MywgNjcsIDE5NywgODMsIDY5LCA4MiwgNzMsIDcwLCA4MywgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIAorICAgIDIxMSwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgCisgICAgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCAKKyAgICA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIDczLCAxMjgsIDgzLCA2OSwgNzcsIAorICAgIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAxMjgsIDgzLCA2OSwgNzcsIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIDc3LCA3MywgODMsIDc5LCA3MCwgCisgICAgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA3NywgNzMsIDc3LCAKKyAgICA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIDY3LCAyMTIsIDgzLCA2OSwgNzcsIAorICAgIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCAyMDYsIDgzLCA2OSwgCisgICAgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIAorICAgIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIDY5LCA3NywgNzMsIDQ1LCA4NiwgCisgICAgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTYsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCisgICAgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgCisgICAgMTkzLCA4MywgNjksIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgCisgICAgODMsIDY5LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA2OSwgNjksIAorICAgIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA2NywgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNjksIDY3LCA4MiwgNjksIDg0LCAKKyAgICAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIAorICAgIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgCisgICAgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCAKKyAgICA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgCisgICAgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCAKKyAgICA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIAorICAgIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgMTI4LCA4MywgCisgICAgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCA2OSwgNjgsIDY5LCAKKyAgICA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgMjA0LCA4MywgNjcsIAorICAgIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCA2OSwgODAsIDg0LCA2OSwgCisgICAgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCAKKyAgICA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDY2LCA4NSwgMTk0LCAKKyAgICA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA2NSwgCisgICAgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NywgMTI4LCAKKyAgICA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgODQsIAorICAgIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIDEyOCwgODMsIDY1LCA4NCwgCisgICAgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAxOTcsIDgzLCA2NSwgODQsIDY3LCAKKyAgICA3MiwgNjksIDc2LCAxMjgsIDgzLCA2NSwgODQsIDY1LCA3OCwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIAorICAgIDgzLCA2NSwgODMsIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgCisgICAgODIsIDEyOCwgODMsIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCAKKyAgICA3MSwgMTkzLCA4MywgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgCisgICAgMTI4LCA4MywgNjUsIDc4LCA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCAKKyAgICA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIAorICAgIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgCisgICAgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCAKKyAgICA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIAorICAgIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgCisgICAgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCAKKyAgICA4MywgNjUsIDc2LCA4NCwgMTI4LCA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIAorICAgIDc5LCAyMTMsIDgzLCA2NSwgNzYsIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIAorICAgIDgzLCA2NSwgNzYsIDQ1LCA2NSwgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgCisgICAgNjUsIDc1LCA3OSwgODQsIDEyOCwgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCA3NSwgMTk3LCAKKyAgICA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MywgNjUsIAorICAgIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAxMjgsIDgzLCA2NSwgCisgICAgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDcxLCAKKyAgICAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCAKKyAgICA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIAorICAgIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgCisgICAgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCA0NSwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCAKKyAgICA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIAorICAgIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIAorICAgIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgCisgICAgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAKKyAgICAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCAKKyAgICA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgCisgICAgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgCisgICAgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCAKKyAgICA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgCisgICAgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgCisgICAgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCAKKyAgICA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCAKKyAgICA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIAorICAgIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIAorICAgIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODUsIDEyOCwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgCisgICAgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgCisgICAgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIAorICAgIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIAorICAgIDgyLCA4NSwgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgCisgICAgMTI4LCA4MiwgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAKKyAgICAxMjgsIDgyLCA4NSwgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgMTI4LCA4MiwgODUsIAorICAgIDcxLCA2NiwgMjE3LCA4MiwgODUsIDE5NCwgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIAorICAgIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgCisgICAgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCAKKyAgICA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA3OSwgCisgICAgODgsIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgCisgICAgODIsIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAKKyAgICAxMjgsIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCAKKyAgICA4MiwgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCAKKyAgICA4MiwgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgODIsIAorICAgIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgCisgICAgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIAorICAgIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgCisgICAgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCAKKyAgICA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIAorICAgIDc5LCA3NywgNjUsIDIwNiwgODIsIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIDc5LCA3MiwgCisgICAgNzMsIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCAKKyAgICA2NywgMjAzLCA4MiwgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCA4MywgODQsIAorICAgIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIDc4LCAxOTksIAorICAgIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIDgyLCA3NywgCisgICAgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNjksIDEyOCwgODIsIDc0LCA2OSwgCisgICAgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgCisgICAgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIAorICAgIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIAorICAgIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzAsIDc5LCA4MiwgOTAsIDY1LCA3OCwgCisgICAgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIDY1LCAxMjgsIDgyLCA3MywgNzUsIDgyLCAKKyAgICA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIAorICAgIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgNzIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgCisgICAgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCAKKyAgICA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIAorICAgIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDgzLCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIAorICAgIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgCisgICAgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIAorICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIAorICAgIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgCisgICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCAKKyAgICA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCAKKyAgICA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIAorICAgIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIDY5LCA3NiwgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgNjksIDEyOCwgCisgICAgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCAKKyAgICA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIDcyLCAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcxLCAKKyAgICA4OSwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIAorICAgIDY5LCA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIAorICAgIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgCisgICAgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIAorICAgIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgCisgICAgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIAorICAgIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCAKKyAgICA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIAorICAgIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCAKKyAgICA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgCisgICAgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCAKKyAgICA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIAorICAgIDEyOCwgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODIsIDY5LCA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIAorICAgIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgCisgICAgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCAKKyAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIAorICAgIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDIxMSwgODIsIDY5LCA3MSwgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgCisgICAgNjksIDcxLCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDcxLCA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCAKKyAgICA3MywgNjUsIDEyOCwgODIsIDY5LCA3MCwgNzksIDgyLCA3NywgNjksIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIAogICAgIDY3LCAxOTcsIDgyLCA2OSwgNjgsIDg1LCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgCiAgICAgNjcsIDg5LCA2NywgNzYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCAKICAgICA4NCwgNzMsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCkBAIC0xMjY1LDU2ICsxMzc3LDU3IEBACiAgICAgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgODMsIDc5LCA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIAogICAgIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgCiAgICAgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgCi0gICAgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgMTI4LCA4MiwgNjUsIAotICAgIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAyMTcsIDgyLCA2NSwgNzMsIDc2LCAKLSAgICAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCA4MiwgNjUsIDczLCAxMjgsIDgyLCAKLSAgICA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzAsIDY5LCAxMjgsIDgyLCA2NSwgNjksIAotICAgIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgCi0gICAgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIAotICAgIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgCi0gICAgNzMsIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAKLSAgICAxMjgsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAKLSAgICAxMjgsIDgyLCA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCAKLSAgICA0OCwgNTAsIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIAotICAgIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIAotICAgIDgyLCA0OCwgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgCi0gICAgNDgsIDQ5LCA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCAKLSAgICA1MSwgMTI4LCA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIAotICAgIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIAotICAgIDQ4LCA0OCwgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCAKLSAgICA1MSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIAotICAgIDEyOCwgODIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIAotICAgIDg0LCAxMjgsIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIAotICAgIDc5LCAxMjgsIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIAotICAgIDY1LCA2NSwgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIAotICAgIDY5LCAxMjgsIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIAotICAgIDg4LCAxMjgsIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIAotICAgIDg0LCAxMjgsIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODEsIDg1LCA4MiwgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAKLSAgICAxOTcsIDgxLCA4NSwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIAotICAgIDc5LCA4MCwgMTI4LCA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgCi0gICAgODMsIDgzLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIAotICAgIDE5MywgODEsIDg1LCA3MywgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgCi0gICAgMjExLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCi0gICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAotICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCAKLSAgICA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIAotICAgIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgCi0gICAgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIAotICAgIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIAotICAgIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAKLSAgICAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCAKLSAgICA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCAKLSAgICA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIAotICAgIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIAorICAgIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgCisgICAgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCAKKyAgICA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIAorICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgCisgICAgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIAorICAgIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIAorICAgIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgCisgICAgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgCisgICAgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NiwgNjYsIDczLCA4NCwgMTI4LCAKKyAgICA4MiwgNjUsIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCA4MiwgNjUsIAorICAgIDUxLCAxMjgsIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIDEyOCwgODIsIAorICAgIDQ4LCA1MCwgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIDQ4LCA1MCwgCisgICAgNTMsIDEyOCwgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgNTAsIDEyOCwgCisgICAgODIsIDQ4LCA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgODIsIDQ4LCAKKyAgICA0OSwgNTYsIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDgyLCA0OCwgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4MiwgCisgICAgNDgsIDQ5LCA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA4MiwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDgyLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgMTI4LCA4MiwgCisgICAgNDUsIDY3LCA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgODQsIDEyOCwgCisgICAgODEsIDg5LCA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgNzksIDEyOCwgCisgICAgODEsIDg5LCA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgNjUsIDY1LCAKKyAgICAxMjgsIDgxLCA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgODEsIDg3LCA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgODgsIDEyOCwgCisgICAgODEsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgODQsIDEyOCwgCisgICAgODEsIDg1LCA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCA4MSwgODUsIDgyLCAKKyAgICAxMjgsIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIDE5NywgODEsIDg1LCAKKyAgICA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgNzksIDgwLCAxMjgsIAorICAgIDgxLCA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCA4MywgODMsIDY5LCA3OCwgCisgICAgNjcsIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgMTkzLCA4MSwgODUsIDczLCAKKyAgICA3OCwgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDgxLCA4NSwgNzMsIAorICAgIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCA4MSwgODUsIDczLCAxMjgsIDgxLCA4NSwgNzAsIDEyOCwgODEsIAorICAgIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDY5LCAKKyAgICAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCA4MSwgODUsIDY1LCA4NCwgNjksIAorICAgIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MSwgODUsIDY1LCA4MiwgCisgICAgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCAKKyAgICAyMTAsIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgODUsIDgwLCA3NiwgCisgICAgMTk3LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIAorICAgIDIxMiwgODEsIDg1LCA2NSwgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCAKKyAgICA4MSwgMjA4LCA4MSwgNzksIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCAKKyAgICA4MCwgNjUsIDEyOCwgODEsIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAKKyAgICAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgCisgICAgMTI4LCA4MSwgNzMsIDg0LCA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgCisgICAgNzMsIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgCisgICAgODEsIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCAKKyAgICA4MSwgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDEyOCwgODEsIDcyLCA3MywgMTI4LCA4MSwgNzIsIDY5LCA2OSwgMTI4LCAKKyAgICA4MSwgNzIsIDY5LCAxMjgsIDgxLCA3MiwgNjUsIDY1LCAxMjgsIDgxLCA3MiwgNjUsIDEyOCwgODEsIDcxLCA2NSwgMTI4LCAKICAgICA4MSwgNjksIDg0LCA2NSwgNzgsIDY1LCAxMjgsIDgxLCA2OSwgNjksIDEyOCwgODEsIDY5LCAxMjgsIDgxLCA2NSwgODUsIAogICAgIDEyOCwgODEsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIAogICAgIDgxLCA2NSwgODEsIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCA4MywgMTI4LCA4MSwgCkBAIC0xMzI4LDI5NyArMTQ0MSwzMDcgQEAKICAgICA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCAKICAgICA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCAKICAgICA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCAKLSAgICA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAxMjgsIDgwLCA4NSwgCi0gICAgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3NSwgNjUsIAotICAgIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgODUsIDgyLCA4MywgCi0gICAgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCAKLSAgICA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCAKLSAgICA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIAotICAgIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCAKLSAgICA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCAKLSAgICA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCAxMjgsIDgwLCAKLSAgICA4NCwgNzIsIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCAKLSAgICA4MywgODQsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIAotICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIAotICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgCi0gICAgNzksIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgODIsIDc5LCA4MCwgNzksIAotICAgIDgyLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgODAsIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgODAsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDgwLCAKLSAgICA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCA3MSwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzYsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgCi0gICAgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNzAsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDIxMiwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIAotICAgIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgNjcsIAotICAgIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgCi0gICAgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA4MCwgODIsIDY5LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCAKLSAgICA2OSwgNzAsIDY1LCA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODAsIAotICAgIDgyLCA2OSwgNjcsIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCA4MywgMTI4LCA4MCwgCi0gICAgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTk2LCA4MCwgODIsIDY5LCAKLSAgICA2NywgNjksIDY4LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIAotICAgIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgCi0gICAgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCAKLSAgICA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgODIsIDY1LCA3NywgNDUsIAotICAgIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCA2NSwgNzcsIDEyOCwgCi0gICAgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAxMjgsIDgwLCA4MCwgCi0gICAgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCA4MiwgMjExLCA4MCwgCi0gICAgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIDc5LCA4NywgNjgsIDY5LCAKLSAgICA4MiwgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAyMTcsIDgwLCA3OSwgODUsIAotICAgIDY3LCA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgCi0gICAgODAsIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4MCwgNzksIDgzLCAKLSAgICA4NCwgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCA4MywgODQsIDEyOCwgODAsIAotICAgIDc5LCA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNzksIDgyLCA4MiwgCi0gICAgNjksIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgMjExLCA4MCwgNzksIDgwLCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIDY4LCA3NiwgNjksIAotICAgIDEyOCwgODAsIDc5LCA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIDgwLCA3OSwgNzYsIAotICAgIDczLCA4MywgNzIsIDEyOCwgODAsIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgCi0gICAgNjksIDEyOCwgODAsIDc5LCA3NiwgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCAKLSAgICA3NSwgNzksIDc0LCA3MywgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgCi0gICAgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDgwLCAKLSAgICA3OSwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgNzksIDczLCA3OCwgMjEyLCA4MCwgNzksIDY5LCA4NCwgODIsIDIxNywgODAsIAotICAgIDc5LCA2OSwgODQsIDczLCAxOTUsIDgwLCA3OSwgNjgsIDY1LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgNjUsIDEyOCwgCi0gICAgODAsIDc5LCAxMjgsIDgwLCAyMDcsIDgwLCA3OCwgNjksIDg1LCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MCwgNzYsIDg1LCAKLSAgICA4NCwgNzksIDEyOCwgODAsIDc2LCA4NSwgODMsIDQ1LCA3NywgNzMsIDc4LCA4NSwgMjExLCA4MCwgNzYsIDg1LCA4MywgCi0gICAgMTI4LCA4MCwgNzYsIDg1LCA4MiwgNjUsIDc2LCAxMjgsIDgwLCA3NiwgODUsIDc3LCA2OSwgMTk2LCA4MCwgNzYsIDg1LCAKLSAgICA3NywgMTI4LCA4MCwgNzYsIDg1LCA3NSwgMTI4LCA4MCwgNzYsIDg1LCA3MSwgMTI4LCA4MCwgNzYsIDc5LCA4NywgMTI4LCAKLSAgICA4MCwgNzYsIDc5LCA4MCwgNzIsIDg1LCAxMjgsIDgwLCA3NiwgNjksIDg0LCA3MiwgODIsIDc5LCA3OCwgMTI4LCA4MCwgNzYsIAotICAgIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCA3NiwgNjUsIDgzLCA4NCwgNzMsIDY3LCA4MywgMTI4LCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgNjksIDEyOCwgODAsIDc2LCA2NSwgNzgsIDE5NywgODAsIDc2LCA2NSwgNzgsIDY3LCAyMDMsIDgwLCA3NiwgNjUsIDc1LCAKLSAgICAxMjgsIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3MiwgNzksIDc2LCA2OCwgNjksIAotICAgIDIxMCwgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNzMsIDY3LCA2NSwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIDg4LCAxMjgsIDgwLCA3MywgODcsIDgyLCAKLSAgICAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIAotICAgIDgyLCAyMDMsIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCA3NiwgMTI4LCA4MCwgNzMsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA3MiwgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIDgwLCA3MywgODIsIDczLCA3MSwgMTI4LCAKLSAgICA4MCwgNzMsIDgyLCA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA4MCwgNzMsIDgwLCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA4MCwgNzMsIDgwLCA2NSwgCi0gICAgNjksIDc3LCA2NiwgNjUsIDEyOCwgODAsIDczLCA4MCwgMTI4LCA4MCwgNzMsIDc4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCAKLSAgICA4MCwgNzMsIDc4LCA2OSwgNjUsIDgwLCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA3MywgNzgsIDE5NywgODAsIDczLCA3OCwgNjUsIAotICAgIDgyLCA2NiwgNzksIDgyLCA2NSwgODMsIDEyOCwgODAsIDczLCA3NiwgNzYsIDEyOCwgODAsIDczLCA3NiwgMTk3LCA4MCwgCi0gICAgNzMsIDc2LCA2NywgODIsIDc5LCAyMTUsIDgwLCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODAsIDczLCA3NSwgNzksIAotICAgIDEyOCwgODAsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDE5OSwgODAsIDczLCA2OSwgODgsIDEyOCwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MCwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3NSwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCAyMDgsIAotICAgIDgwLCA3MywgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDgwLCAxMjgsIDgwLCA3MywgNjksIDY5LCA4NCwgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA2OSwgODEsIDEyOCwgODAsIDczLCA2OSwgNjcsIDY5LCAxMjgsIDgwLCA3MywgNjksIDEyOCwgODAsIDczLCAKLSAgICA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgODUsIDg0LCA3OSwgODIsIAotICAgIDg1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA3NywgMTkzLCA4MCwgNzMsIDY1LCA3OCwgNzksIDEyOCwgODAsIDIwMSwgODAsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgODAsIDcyLCA4NSwgODQsIDcyLCA2NSwgNzksIDEyOCwgODAsIDcyLCA4NSwgMjEwLCA4MCwgCi0gICAgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDcyLCA4MiwgNjUsIDgzLCA2OSwgMTI4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDgzLCAKLSAgICAxMjgsIDgwLCA3MiwgNzksIDY5LCA3OCwgNzMsIDY3LCA3MywgNjUsIDIwNiwgODAsIDcyLCA3OSwgNjUsIDEyOCwgODAsIAotICAgIDcyLCA3OSwgMTI4LCA4MCwgNzIsIDIwNywgODAsIDcyLCA3OCwgNjUsIDY5LCAyMDMsIDgwLCA3MiwgNzMsIDc4LCA4NCwgCi0gICAgNzIsIDg1LCAxMjgsIDgwLCA3MiwgNzMsIDc2LCA3OSwgODMsIDc5LCA4MCwgNzIsIDY5LCA4MiwgMjExLCA4MCwgNzIsIDczLCAKLSAgICA3NiwgNzMsIDgwLCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODQsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKLSAgICA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDgwLCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAyMDAsIDgwLCAKLSAgICA3MiwgNzMsIDEyOCwgODAsIDcyLCAyMDEsIDgwLCA3MiwgNjksIDY5LCAxMjgsIDgwLCA3MiwgNjksIDEyOCwgODAsIDcyLCAKLSAgICA2NSwgODMsIDY5LCA0NSwgMTk4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTQsIDgwLCA3MiwgNjUsIDgyLCA4OSwgNzgsIAotICAgIDcxLCA2OSwgNjUsIDIwNCwgODAsIDcyLCA2NSwgODIsIDEyOCwgODAsIDcyLCA2NSwgNzgsIDEyOCwgODAsIDcyLCA2NSwgCi0gICAgNzcsIDEyOCwgODAsIDcyLCA2NSwgNzMsIDgzLCA4NCwgNzksIDIxMSwgODAsIDcyLCA2NSwgNzEsIDgzLCA0NSwgODAsIAotICAgIDE5MywgODAsIDcyLCA2NSwgNjUsIDgyLCA3NSwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgCi0gICAgNjUsIDEyOCwgODAsIDcxLCAxMjgsIDgwLCA3MCwgMTI4LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA4MCwgNjksIDg1LCA4NCwgCi0gICAgNjUsIDY5LCAxMjgsIDgwLCA2OSwgODUsIDg0LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDc5LCA3NSwgNzksIDg1LCAKLSAgICA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzMsIDEyOCwgODAsIDY5LCA4NCwgNjUsIAotICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDc2LCA3NiwgNjksIDE5NiwgODAsIDY5LCA4MywgNzksIDEyOCwgCi0gICAgODAsIDY5LCA4MywgMjA3LCA4MCwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODAsIDY5LCA4MywgNjksIDg0LCAxOTMsIDgwLCAKLSAgICA2OSwgMjExLCA4MCwgNjksIDgyLCA4NCwgNzIsIDIwNywgODAsIDY5LCA4MiwgODMsIDgwLCA2OSwgNjcsIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDEyOCwgCi0gICAgODAsIDY5LCA4MiwgODMsIDc5LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA3MywgNjUsIDIwNiwgODAsIDY5LCA4MiwgODMsIDY5LCAKLSAgICA4NiwgNjksIDgyLCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgCi0gICAgODIsIDEyOCwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MCwgNjksIDgyLCAKLSAgICA3NywgNjUsIDc4LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDczLCAxMjgsIAotICAgIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgODIsIDc3LCAKLSAgICA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIAotICAgIDg0LCA2NSwgMTI4LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgCi0gICAgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDY5LCA4NCwgMTI4LCAKLSAgICA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCA3OSwgODAsIDc2LCA2OSwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDgyLCAKLSAgICA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDczLCAKLSAgICA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgCi0gICAgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKLSAgICAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIAotICAgIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgCi0gICAgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIAotICAgIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MCwgCi0gICAgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgCi0gICAgNjUsIDkwLCA2OSwgODIsIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCAKLSAgICA2NSwgMjE1LCA4MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgNzgsIAotICAgIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgMjAwLCA4MCwgCi0gICAgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgODAsIDY1LCAKLSAgICA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIAotICAgIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCAKLSAgICA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgNzksIDg1LCAKLSAgICA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgCi0gICAgMTI4LCA4MCwgNjUsIDgzLCA2OSwgODEsIDEyOCwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDg0LCAKLSAgICAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIDY1LCA4MiwgNzMsIAotICAgIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgNzcsIDY5LCA3OCwgNzksIDIwNiwgCi0gICAgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIDgwLCA2NSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgNzcsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAKLSAgICAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIAotICAgIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgCi0gICAgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgCi0gICAgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCAKLSAgICA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCAKLSAgICA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIAotICAgIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgCi0gICAgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIAotICAgIDcxLCA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCAKLSAgICA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIAotICAgIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgCi0gICAgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIAotICAgIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgCi0gICAgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAKLSAgICA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIAotICAgIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgCi0gICAgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIAotICAgIDIwMSwgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIAotICAgIDY1LCA2OCwgMTkzLCA4MCwgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgCi0gICAgNjcsIDc1LCA2NSwgNzEsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCAKLSAgICA4NCwgNzksIDEyOCwgODAsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIAotICAgIDY1LCA3MywgMTI4LCA4MCwgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgCi0gICAgODAsIDUwLCAxMjgsIDgwLCA0OCwgNDksIDQ5LCAxMjgsIDgwLCA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAKLSAgICAxMjgsIDgwLCA0OCwgNDgsIDU2LCAxMjgsIDgwLCA0OCwgNDgsIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDgwLCA0OCwgNDgsIDUyLCAxMjgsIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIAotICAgIDQ4LCA1MSwgMTI4LCA4MCwgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzksIDg5LCA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNzksIDg4LCA3MywgNjUsIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIAotICAgIDg4LCA2OSwgNzMsIDE5MywgNzksIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgCi0gICAgNzksIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCAKLSAgICA4OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIAotICAgIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgCi0gICAgODYsIDEyOCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgCi0gICAgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgCi0gICAgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCAKLSAgICA4NCwgNzIsIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIAotICAgIDc5LCA3OCwgNjUsIDIwNCwgNzksIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAKLSAgICAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgCi0gICAgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCAKLSAgICA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgCi0gICAgMjA0LCA3OSwgODIsIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCAKLSAgICA3MywgNzksIDIwNiwgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgCi0gICAgODMsIDczLCA3OCwgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCAKLSAgICA4NSwgODMsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIAotICAgIDc5LCAyMTAsIDc5LCA4MCwgNjksIDc4LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCA4MCwgMTI4LCA3OSwgCi0gICAgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIAotICAgIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCAKLSAgICA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgNzksIDgwLCA2OSwgMjA2LCA3OSwgNzksIDkwLCA2OSwgMTI4LCA3OSwgNzksIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIDg1LCAxMjgsIDc5LCA3OSwgCi0gICAgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNzgsIDg1LCAxMjgsIDc5LCAKLSAgICA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIDgyLCAxMjgsIDc5LCA3OCwgNjksIAotICAgIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgNzksIDc4LCA2OSwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzksIDc4LCA2NywgNzksIDc3LCAKLSAgICA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIAotICAgIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgCi0gICAgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCAKLSAgICA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCAKLSAgICA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgCi0gICAgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgCi0gICAgMjA1LCA3OSwgNzIsIDEyOCwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCA3NSwgMTI4LCA3OSwgCi0gICAgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgODIsIAotICAgIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgNzksIDcwLCA3MCwgCi0gICAgMTI4LCA3OSwgNjksIDc1LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgMTk2LCA3OSwgNjcsIDg0LCA3OSwgCi0gICAgODAsIDg1LCA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIDIxMCwgNzksIDY3LCAKLSAgICA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgODMsIAotICAgIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgMjExLCA3OSwgNjYsIDc5LCAKLSAgICAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCA4MSwgODUsIDE5NywgNzksIAotICAgIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIDY2LCA2OSwgNzYsIDc5LCA4MywgCi0gICAgMTI4LCA3OSwgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIDc5LCA2NSwgNjYsIDc5LCA2NSwgCi0gICAgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY2LCAKLSAgICAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCA3OSwgNDgsIDUyLCA1NywgMTI4LCAKLSAgICA3OSwgNDgsIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIDUyLCA1NCwgMTI4LCA3OSwgNDgsIAotICAgIDUyLCA1MywgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgMTI4LCA3OSwgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA3OSwgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgNDgsIDUxLCA1NywgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjgsIDEyOCwgNzksIDQ4LCAKLSAgICA1MSwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgNTIsIDEyOCwgNzksIDQ4LCA1MSwgCi0gICAgNTEsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAKLSAgICAxMjgsIDc5LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCA3OSwgNDgsIDUwLCA1NywgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIDQ4LCA1MCwgNTUsIDEyOCwgNzksIAotICAgIDQ4LCA1MCwgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCAxMjgsIDc5LCA0OCwgCi0gICAgNTAsIDUyLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCA1MSwgMTI4LCA3OSwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNDgsIAotICAgIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIDc5LCA0OCwgNDksIDU2LCAxMjgsIAotICAgIDc5LCA0OCwgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgNDksIDUzLCAxMjgsIDc5LCA0OCwgCi0gICAgNDksIDUyLCAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAxMjgsIDc5LCA0OCwgNDksIDQ5LCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIAotICAgIDY1LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIDc5LCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDc5LCA0OCwgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjksIDEyOCwgCi0gICAgNzksIDQ4LCA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjYsIAotICAgIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDEyOCwgNzksIDQ1LCAKLSAgICA4OSwgNjksIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIDEyOCwgNzgsIDkwLCA4OSwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODksIDgyLCAxMjgsIAotICAgIDc4LCA5MCwgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAxMjgsIDc4LCA5MCwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCA3OCwgOTAsIDg1LCAyMDYsIDc4LCAKLSAgICA5MCwgODUsIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgODgsIAotICAgIDEyOCwgNzgsIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDg4LCAxMjgsIAotICAgIDc4LCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgOTAsIDczLCAxMjgsIDc4LCA5MCwgCi0gICAgNjksIDg4LCAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAxMjgsIDc4LCA5MCwgNjUsIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCA5MCwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA5MCwgNjUsIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCA4OSwgODUsIDg4LCAxMjgsIDc4LCAKKyAgICA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIAorICAgIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgCisgICAgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCAKKyAgICA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIAorICAgIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgCisgICAgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIAorICAgIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgCisgICAgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCAKKyAgICA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCAKKyAgICA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCisgICAgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIAorICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIAorICAgIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgCisgICAgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIAorICAgIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgCisgICAgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCAKKyAgICA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIAorICAgIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgCisgICAgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIAorICAgIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgCisgICAgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIAorICAgIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgCisgICAgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCAKKyAgICA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgCisgICAgODMsIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCAKKyAgICA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCAKKyAgICA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIAorICAgIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgCisgICAgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCAKKyAgICA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIAorICAgIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgCisgICAgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAKKyAgICA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIAorICAgIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA4MiwgCisgICAgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIDY1LCAxMjgsIAorICAgIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIDc5LCA4NywgCisgICAgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCA2NywgCisgICAgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCAKKyAgICA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgODQsIAorICAgIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCA3OSwgCisgICAgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCAKKyAgICA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIAorICAgIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIAorICAgIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgCisgICAgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3MywgODMsIDcyLCAxMjgsIDgwLCAKKyAgICA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzYsIAorICAgIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgNzMsIDEyOCwgCisgICAgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAKKyAgICA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA4MCwgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIAorICAgIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIDgyLCAyMTcsIDgwLCA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgCisgICAgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDY1LCAxMjgsIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgCisgICAgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODAsIDc2LCA4NSwgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDgzLCAKKyAgICA0NSwgNzcsIDczLCA3OCwgODUsIDIxMSwgODAsIDc2LCA4NSwgODMsIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgCisgICAgMTI4LCA4MCwgNzYsIDg1LCA3NywgNjksIDE5NiwgODAsIDc2LCA4NSwgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgCisgICAgODAsIDc2LCA4NSwgNzEsIDEyOCwgODAsIDc2LCA4NSwgMTI4LCA4MCwgNzYsIDc5LCA4NywgMTI4LCA4MCwgNzYsIDc5LCAKKyAgICA4MCwgNzIsIDg1LCAxMjgsIDgwLCA3NiwgNjksIDg0LCA3MiwgODIsIDc5LCA3OCwgMTI4LCA4MCwgNzYsIDY4LCAxMjgsIAorICAgIDgwLCA3NiwgNjUsIDg5LCA3MywgNzgsIDE5OSwgODAsIDc2LCA2NSwgODMsIDg0LCA3MywgNjcsIDgzLCAxMjgsIDgwLCA3NiwgCisgICAgNjUsIDc4LCA2OSwgMTI4LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MCwgNzYsIDY1LCA3OCwgNjcsIDIwMywgODAsIDc2LCAKKyAgICA2NSwgNzUsIDEyOCwgODAsIDc2LCA2NSwgNzEsIDczLCA3OSwgMjExLCA4MCwgNzYsIDY1LCA2NywgNjksIDcyLCA3OSwgNzYsIAorICAgIDY4LCA2OSwgMjEwLCA4MCwgNzYsIDY1LCA2NywgMTk3LCA4MCwgNzYsIDY1LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA3MywgCisgICAgNjcsIDY1LCA4NCwgNzksIDEyOCwgODAsIDczLCA5MCwgOTAsIDY1LCAxMjgsIDgwLCA3MywgODgsIDEyOCwgODAsIDczLCAKKyAgICA4NywgODIsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIDgyLCA3NSwgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIAorICAgIDcwLCA3OSwgODIsIDIwMywgODAsIDczLCA4NCwgMTI4LCA4MCwgNzMsIDgzLCA4NCwgNzksIDc2LCAxMjgsIDgwLCA3MywgCisgICAgODMsIDY5LCA3NiwgNjksIDcyLCAxMjgsIDgwLCA3MywgODMsIDY3LCA2OSwgODMsIDEyOCwgODAsIDczLCA4MiwgNzMsIDcxLCAKKyAgICAxMjgsIDgwLCA3MywgODIsIDczLCAxOTksIDgwLCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDgwLCA3MywgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgCisgICAgODAsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAKKyAgICAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIAorICAgIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAKKyAgICAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIAorICAgIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIAorICAgIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgCisgICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIAorICAgIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgCisgICAgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAKKyAgICAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCAKKyAgICA4MCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjcsIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIAorICAgIDc5LCA4MiwgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIDc3LCAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgCisgICAgMjAxLCA4MCwgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIDg1LCA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAKKyAgICAyMTAsIDgwLCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNzIsIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIAorICAgIDc4LCA2OSwgODMsIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCA3MywgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgCisgICAgMTI4LCA4MCwgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCA4MCwgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgCisgICAgNzgsIDg0LCA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIDc5LCA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCAKKyAgICA3MiwgNzMsIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgCisgICAgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIAorICAgIDgzLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgCisgICAgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIAorICAgIDIwMCwgODAsIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgODAsIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCAKKyAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODIsIAorICAgIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA4MCwgNzIsIDY1LCA4MiwgMTI4LCA4MCwgNzIsIDY1LCA3OCwgMTI4LCA4MCwgCisgICAgNzIsIDY1LCA3NywgMTI4LCA4MCwgNzIsIDY1LCA3MywgODMsIDg0LCA3OSwgMjExLCA4MCwgNzIsIDY1LCA3MSwgODMsIDQ1LCAKKyAgICA4MCwgMTkzLCA4MCwgNzIsIDY1LCA2NSwgODIsIDc1LCA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgNjUsIDEyOCwgODAsIAorICAgIDcyLCA2NSwgMTI4LCA4MCwgNzEsIDEyOCwgODAsIDcwLCAxMjgsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDgwLCA2OSwgODUsIAorICAgIDg0LCA2NSwgNjksIDEyOCwgODAsIDY5LCA4NSwgODQsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzksIDc1LCA3OSwgCisgICAgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3MywgMTI4LCA4MCwgNjksIDg0LCAKKyAgICA2NSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgNzYsIDc2LCA2OSwgMTk2LCA4MCwgNjksIDgzLCA3OSwgCisgICAgMTI4LCA4MCwgNjksIDgzLCAyMDcsIDgwLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA4MCwgNjksIDgzLCA2OSwgODQsIDE5MywgCisgICAgODAsIDY5LCAyMTEsIDgwLCA2OSwgODIsIDg0LCA3MiwgMjA3LCA4MCwgNjksIDgyLCA4MywgODAsIDY5LCA2NywgODQsIDczLCAKKyAgICA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgCisgICAgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDIwNiwgODAsIDY5LCA4MiwgODMsIDczLCA2NSwgMjA2LCA4MCwgNjksIDgyLCAKKyAgICA4MywgNjksIDg2LCA2OSwgODIsIDczLCA3OCwgMTk5LCA4MCwgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgCisgICAgNzYsIDY1LCA4MiwgMTI4LCA4MCwgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgwLCAKKyAgICA2OSwgODIsIDc3LCA3MywgODQsIDg0LCA2OSwgMTk2LCA4MCwgNjksIDgyLCA3NywgNjUsIDc4LCA2OSwgNzgsIDIxMiwgODAsIAorICAgIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCAKKyAgICA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgODIsIDc3LCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCA4MCwgNjksIDgyLCA3MCwgCisgICAgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCAKKyAgICA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIAorICAgIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgCisgICAgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCAKKyAgICA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIAorICAgIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgCisgICAgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIAorICAgIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgCisgICAgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgCisgICAgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIAorICAgIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgCisgICAgNjcsIDE5NywgODAsIDY4LCA3MCwgMTI4LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCA2NSwgOTAsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIDY1LCAyMTUsIDgwLCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg1LCAxMjgsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIAorICAgIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIDIwMCwgCisgICAgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIDgwLCAKKyAgICA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIAorICAgIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCAKKyAgICA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIDc5LCAKKyAgICA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgCisgICAgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCAKKyAgICA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgCisgICAgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCAKKyAgICA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIAorICAgIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIAorICAgIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgCisgICAgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgCisgICAgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCAKKyAgICA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAKKyAgICAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIAorICAgIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCA4MCwgCisgICAgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIDEyOCwgCisgICAgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAxMjgsIDgwLCAKKyAgICA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAxMjgsIDgwLCAKKyAgICA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIDY4LCAxMjgsIAorICAgIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzksIDc2LCAKKyAgICA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNjUsIAorICAgIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA2NSwgCisgICAgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAxMjgsIDgwLCAKKyAgICA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIDgwLCA2NSwgNzgsIAorICAgIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgODUsIDc4LCA3MSwgCisgICAgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCA3NywgODMsIDcyLCAKKyAgICA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA3MywgNzgsIAorICAgIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA3OCwgCisgICAgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2NSwgNjksIDcyLCAKKyAgICAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgNzYsIDIwNSwgODAsIDY1LCA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzYsIDY1LCA4MywgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAxOTksIDgwLCAKKyAgICA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgCisgICAgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgNzUsIDgwLCAKKyAgICA2NSwgMjAzLCA4MCwgNjUsIDczLCA4OSwgNjUsIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA4NCwgNzIsIAorICAgIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDczLCA4MiwgNjksIDE5NiwgODAsIDY1LCA3MywgMTI4LCA4MCwgNjUsIDcyLCA3NiwgCisgICAgNjUsIDg2LCAyMDEsIDgwLCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgCisgICAgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA2NSwgODQsIDg1LCAxMjgsIDgwLCA2NSwgNjUsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgNjUsIDczLCAxMjgsIDgwLCAKKyAgICA2NSwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgODAsIDY1LCA2NSwgMTI4LCA4MCwgNTAsIDEyOCwgODAsIAorICAgIDQ4LCA0OSwgNDksIDEyOCwgODAsIDQ4LCA0OSwgNDgsIDEyOCwgODAsIDQ4LCA0OCwgNTcsIDEyOCwgODAsIDQ4LCA0OCwgCisgICAgNTYsIDEyOCwgODAsIDQ4LCA0OCwgNTUsIDEyOCwgODAsIDQ4LCA0OCwgNTQsIDEyOCwgODAsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgODAsIDQ4LCA0OCwgNTIsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDUxLCAxMjgsIDgwLCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgODksIAorICAgIDgyLCA2NSwgNzgsIDczLCA4MywgNzcsIDE5MywgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgODgsIDczLCA2NSwgCisgICAgMTI4LCA3OSwgODgsIDczLCAxOTMsIDc5LCA4OCwgNjksIDczLCA2NSwgMjAxLCA3OSwgODgsIDY5LCA3MywgMTkzLCA3OSwgCisgICAgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgNzgsIDE5OSwgNzksIDg2LCAKKyAgICA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAxMjgsIDc5LCA4NiwgNjksIAorICAgIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgCisgICAgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NiwgMTI4LCA3OSwgODUsIDg0LCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgCisgICAgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCAKKyAgICA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIDg0LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgMTI4LCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCA3OSwgCisgICAgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCAKKyAgICA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIAorICAgIDgyLCA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgCisgICAgNzgsIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCAKKyAgICA2OCwgNjksIDIxMCwgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIAorICAgIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgCisgICAgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCAKKyAgICA4MCwgNzksIDgzLCA3MywgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIAorICAgIDY3LCA3MiwgODUsIDgzLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgCisgICAgNjUsIDg0LCA3OSwgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCAKKyAgICA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIAorICAgIDczLCA3OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgCisgICAgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgNzksIAorICAgIDkwLCA2OSwgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgCisgICAgNzcsIDg1LCAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKKyAgICA3OSwgNzgsIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIAorICAgIDgyLCAxMjgsIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgCisgICAgNzksIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIAorICAgIDE5NywgNzksIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIDc3LCA3MywgCisgICAgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCAKKyAgICA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIAorICAgIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgCisgICAgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgCisgICAgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCAKKyAgICA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIAorICAgIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgCisgICAgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCAKKyAgICA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCAKKyAgICA3OSwgNjgsIDE5NiwgNzksIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIAorICAgIDEyOCwgNzksIDY3LCA4NCwgNjksIDIxMiwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIAorICAgIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIAorICAgIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgCisgICAgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIDY2LCAxMjgsIDc5LCAKKyAgICA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIAorICAgIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCA1MiwgNTYsIDEyOCwgCisgICAgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIDEyOCwgNzksIDQ4LCAKKyAgICA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIDQ4LCA1MiwgNDksIAorICAgIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgNTYsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NywgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OSwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIDU0LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzksIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgNzksIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAKKyAgICA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIDQ5LCA1NSwgMTI4LCAKKyAgICA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIAorICAgIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgCisgICAgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCAKKyAgICA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OCwgCisgICAgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAKKyAgICA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgNTAsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAxMjgsIDc5LCA0NSwgCisgICAgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCA5MCwgODksIDg0LCAKKyAgICAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIDg5LCA4MCwgMTI4LCAKKyAgICA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgOTAsIAorICAgIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAxMjgsIDc4LCA5MCwgCisgICAgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDg0LCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIAorICAgIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgOTAsIDY1LCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAxMjgsIDc4LCA5MCwgCisgICAgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCA4NSwgMTI4LCA3OCwgCiAgICAgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg5LCAKICAgICA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIAogICAgIDEyOCwgNzgsIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIAogICAgIDg5LCA3OSwgNzksIDEyOCwgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgODksIDc0LCA2NSwgCiAgICAgMTI4LCA3OCwgODksIDczLCA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAyMTIsIDc4LCA4OSwgCiAgICAgNzMsIDIxMSwgNzgsIDg5LCA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCA3OCwgNDUsIDY4LCAKLSAgICA3OSwgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIAotICAgIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIAotICAgIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIAotICAgIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgCi0gICAgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgCi0gICAgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCAKLSAgICA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCAKLSAgICA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIAotICAgIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgCi0gICAgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCAKLSAgICA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIAotICAgIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIAorICAgIDc5LCAxMjgsIDc4LCA4OSwgNzMsIDczLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIDEyOCwgCisgICAgNzgsIDg5LCAyMDEsIDc4LCA4OSwgNzIsIDY1LCAxMjgsIDc4LCA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIDIxMiwgCisgICAgNzgsIDg5LCA2OSwgNzIsIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAKKyAgICAxMjgsIDc4LCA4OSwgMTk2LCA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCAKKyAgICA3MywgMTI4LCA3OCwgODksIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIAorICAgIDY1LCA2NSwgMTI4LCA3OCwgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIAorICAgIDc4LCA4NywgNzMsIDEyOCwgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIAorICAgIDc4LCA4NywgMTI4LCA3OCwgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIAorICAgIDg1LCAxMjgsIDc4LCA4NSwgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIAorICAgIDc4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3OCwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgCisgICAgODUsIDc4LCA4NSwgMjE4LCA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCAKKyAgICA4NSwgNzgsIDY1LCA4NiwgNzMsIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIAorICAgIDgyLCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAKKyAgICAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIAorICAgIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCA4NSwgNzYsIDEyOCwgNzgsIAogICAgIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgODUsIDY5LCAxMjgsIDc4LCA4NSwgCiAgICAgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKICAgICA1MCwgNTAsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIApAQCAtMTY1OSw0NzAgKzE3ODIsNDkzIEBACiAgICAgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDc4LCAKICAgICA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgMjA0LCA3OCwgNzksIAogICAgIDc1LCA3MiwgODUsIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAxMjgsIDc4LCA3OSwgNjUsIDEyOCwgNzgsIDc5LCA0NSwgCi0gICAgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAKKyAgICA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzksIAorICAgIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCAxMjgsIAorICAgIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3MywgNzMsIDEyOCwgCisgICAgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAxMjgsIDc4LCAKKyAgICA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDY1LCAxMjgsIAorICAgIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgNzgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgCiAgICAgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDczLCA3MywgMTI4LCA3OCwgNzgsIDcxLCAKICAgICA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgMTI4LCAKLSAgICA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgCi0gICAgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgCi0gICAgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIAotICAgIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNzgsIAotICAgIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4OSwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgCi0gICAgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODksIDgyLCAxMjgsIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCAKLSAgICA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIAotICAgIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCA3OCwgNzQsIDg1LCA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgCi0gICAgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIDc0LCA4NSwgNjksIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCAKLSAgICA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgNzksIDg4LCAxMjgsIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCAKLSAgICA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAxMjgsIDc4LCA3NCwgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIAotICAgIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCA3MywgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIAotICAgIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDEyOCwgNzgsIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIAotICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIDY5LCAxMjgsIDc4LCA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgCi0gICAgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgNzYsIDczLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCAKLSAgICA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzQsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIAotICAgIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgCi0gICAgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAKLSAgICA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIAotICAgIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAKLSAgICAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzcsIAotICAgIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgCi0gICAgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDczLCAxMjgsIDc4LCA3MywgNzIsIDgzLCAKLSAgICA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCA3OCwgNzMsIAotICAgIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgCi0gICAgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAxMjgsIDc4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgCi0gICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzMsIAotICAgIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCi0gICAgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgNzMsIDY2LCAKLSAgICAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgNzIsIDc0LCAKLSAgICA2NSwgMTI4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCAKLSAgICA2OSwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgODUsIAotICAgIDc5LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAxMjgsIDc4LCA3MSwgNzksIDIxMywgNzgsIDcxLCA3OSwgODQsIDEyOCwgCi0gICAgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3OSwgODAsIDEyOCwgNzgsIDcxLCA3OSwgNzgsIDEyOCwgNzgsIDcxLCAKLSAgICA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDcyLCAxMjgsIDc4LCA3MSwgNzksIDY5LCAyMDAsIDc4LCA3MSwgMjA3LCAKLSAgICA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzUsIAotICAgIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgCi0gICAgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAxOTcsIDc4LCA3MSwgNzUsIDczLCAKLSAgICA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3OCwgCi0gICAgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKLSAgICA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgNjUsIDc3LCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgMTI4LCA3OCwgNzEsIAotICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MSwgNzMsIDY5LCAxMjgsIDc4LCA3MSwgCi0gICAgNzEsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKLSAgICA4MCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIAotICAgIDcxLCA4NSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIAotICAgIDE5NywgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgMjA2LCA3OCwgNzEsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgCi0gICAgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAxMjgsIDc4LCAKLSAgICA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCA2NSwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIAotICAgIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA2NSwgNzMsIDEyOCwgNzgsIAotICAgIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgMjEyLCA3OCwgNjksIAotICAgIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgNjksIDEyOCwgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIDc4LCAKLSAgICA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODAsIAotICAgIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIAotICAgIDc4LCAxMjgsIDc4LCA2OSwgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzgsIDY5LCA3MSwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAKLSAgICAxMjgsIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgCi0gICAgMTI4LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgCi0gICAgNzgsIDY4LCA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAKLSAgICAxMjgsIDc4LCA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCAKLSAgICA2OCwgNzksIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIAotICAgIDY4LCA3MywgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgCi0gICAgODAsIDEyOCwgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCAKLSAgICA2NSwgMTI4LCA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAKLSAgICAxMjgsIDc4LCA2OCwgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgODgsIDEyOCwgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIAotICAgIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgCi0gICAgMTI4LCA3OCwgNjgsIDY1LCAxOTMsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIDc4LCA2NiwgCi0gICAgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgNjYsIDg5LCAKLSAgICAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCA2NiwgNzksIAotICAgIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIDEyOCwgNzgsIAotICAgIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIDY2LCA3MywgCi0gICAgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgNjYsIDczLCAKLSAgICAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIAotICAgIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgCi0gICAgODUsIDY4LCA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIAotICAgIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgCi0gICAgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAKLSAgICAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIAotICAgIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgCi0gICAgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgCi0gICAgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAKLSAgICAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAKLSAgICAxMjgsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDc1LCA4MywgNzMsIAotICAgIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIDY1LCAxMjgsIDc4LCA2NSwgCi0gICAgMTkzLCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgCi0gICAgNTIsIDQ4LCAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAKLSAgICA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIAotICAgIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIAotICAgIDc4LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgCi0gICAgNDgsIDUxLCA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCAKLSAgICA1NiwgMTI4LCA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIAotICAgIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCAKLSAgICA1NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA3OCwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA3OCwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCAKLSAgICA3NywgODksIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIAotICAgIDg5LCA2NSwgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCAKLSAgICA4NywgNzksIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCAKLSAgICA3NywgODcsIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAKLSAgICAyMTUsIDc3LCA4NiwgNzksIDgwLCAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIAotICAgIDcxLCA2NSwgNzcsIDEyOCwgNzcsIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIAotICAgIDczLCA3NSwgNjUsIDg0LCA3OSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgCi0gICAgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCAKLSAgICA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIAotICAgIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgCi0gICAgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCAKLSAgICA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIAotICAgIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIAotICAgIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgCi0gICAgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCAKLSAgICA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCAKLSAgICA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIAotICAgIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgCi0gICAgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCAKLSAgICA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAKLSAgICAyMDAsIDc3LCA4NSwgNjcsIDY1LCA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIAotICAgIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgCi0gICAgMTk3LCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg1LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODQsIDIwMCwgCi0gICAgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAKLSAgICA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIAotICAgIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgCi0gICAgMTk2LCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCAKLSAgICA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIAotICAgIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAKLSAgICAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgCi0gICAgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCAKLSAgICA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIAotICAgIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgCi0gICAgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgCi0gICAgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCAKLSAgICA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgCi0gICAgMjE3LCA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCAKLSAgICA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgMTI4LCA3NywgNzksIDY4LCA2OSwgCi0gICAgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgMjA3LCA3NywgNzgsIDg5LCA2NSwgCi0gICAgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIAotICAgIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIAotICAgIDczLCAyMTIsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAKLSAgICAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCAKLSAgICA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIAotICAgIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgCi0gICAgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCAKLSAgICA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIAotICAgIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgCi0gICAgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIAotICAgIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIAotICAgIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCAKLSAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgCi0gICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIAotICAgIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAKLSAgICAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAotICAgIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgCi0gICAgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCAKLSAgICA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIAotICAgIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDcyLCA5MCwgMTI4LCA3NywgCi0gICAgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgMTI4LCAKLSAgICA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgNzEsIAotICAgIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAxMjgsIAotICAgIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCA2OSwgCi0gICAgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCA3NywgCi0gICAgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgCi0gICAgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCAKLSAgICA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIAotICAgIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIAotICAgIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCAKLSAgICA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIAotICAgIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIAotICAgIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCAKLSAgICA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIAotICAgIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgCi0gICAgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCAKLSAgICA3NywgNjksIDgzLCA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIAotICAgIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgCi0gICAgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCAKLSAgICA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIAotICAgIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgCi0gICAgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCAKLSAgICA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIAotICAgIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgCi0gICAgNjksIDY5LCA4NCwgNjksIDIwMSwgNzcsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCAKLSAgICA2OSwgNjksIDc3LCAxMjgsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAotICAgIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgCi0gICAgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCAKLSAgICA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgNjUsIAotICAgIDIwNiwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIAotICAgIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAKLSAgICAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCAKLSAgICA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIAotICAgIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCAKLSAgICA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIAotICAgIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAKLSAgICAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgCi0gICAgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCA2NiwgMTI4LCA3NywgMTk0LCA3NywgNjUsIDg5LCA2OSwgCi0gICAgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCAKLSAgICA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCA3NywgNjUsIAotICAgIDg0LCA4MiwgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIDY1LCA4NCwgCi0gICAgMTI4LCA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgODMsIDgzLCAKLSAgICA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCA3NywgNjUsIAotICAgIDgzLCA3MiwgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIDY3LCA4NSwgCi0gICAgNzYsIDczLCA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NSwgNzUsIDg1LCAxMjgsIDc3LCAKLSAgICA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgODIsIAotICAgIDgyLCA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MiwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTAsIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIAotICAgIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgCi0gICAgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCA2NSwgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCAKLSAgICA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCA3NywgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4OSwgNzksIAotICAgIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMjE4LCA3NywgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCAKLSAgICA2NSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIAotICAgIDIxMywgNzcsIDY1LCA3OCwgNjUsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDc3LCA2NSwgNzYsIDg0LCA2OSwgODMsIDE5NywgCi0gICAgNzcsIDY1LCA3NiwgNjksIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzcsIDY1LCA3NiwgMTk3LCAKLSAgICA3NywgNjUsIDc2LCA2NSwgNzUsIDc5LCAyMDYsIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIDY1LCAxMjgsIDc3LCA2NSwgNzMsIAotICAgIDkwLCA2OSwgMTI4LCA3NywgNjUsIDczLCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgNzcsIDY1LCA3MywgODQsIDY1LCA3MywgCi0gICAgNzUsIDcyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA4MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDg1LCA2NSwgNzgsIAotICAgIDEyOCwgNzcsIDY1LCA3MywgNzcsIDY1LCA3NiwgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzMsIDc2LCA2NiwgNzksIDIxNiwgCi0gICAgNzcsIDY1LCA3MywgNzUsIDg1LCA4MiwgNzksIDEyOCwgNzcsIDY1LCA3MywgNjgsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDcyLCAKLSAgICA3NCwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzIsIDcyLCA2NSwgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDgyLCA2NSwgNzgsIAotICAgIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgNjUsIDc1LCA3MiwgMTI4LCA3NywgNjUsIDcyLCA2NSwgNjUsIDgwLCA4MiwgCi0gICAgNjUsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDcyLCAxMjgsIDc3LCA2NSwgNzEsIDc4LCA3MywgNzAsIDg5LCA3MywgNzgsIAotICAgIDE5OSwgNzcsIDY1LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2NSwgNjksIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY1LCA2OSwgCi0gICAgNzgsIDc0LCA2OSwgODQsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCAKLSAgICA3NSwgODAsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc3LCA2NiwgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA2NiwgNjUsIDEyOCwgNzcsIDY1LCA2OSwgCi0gICAgNzcsIDEyOCwgNzcsIDY1LCA2OSwgNzYsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NSwgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA3NywgNjUsIDY4LCA4OSwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgODUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAyMDAsIAotICAgIDc3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgMTkzLCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgCi0gICAgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA4NiwgNjksIAotICAgIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgCi0gICAgNzksIDc4LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgMjA2LCA3NywgNjUsIDY3LCA3MiwgNzMsIDc4LCA2OSwgMTI4LCAKLSAgICA3NywgNjUsIDY1LCA3MywgMTI4LCA3NywgNjUsIDY1LCAxMjgsIDc3LCA2NSwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNzcsIDQ4LCA1MiwgNTEsIDEyOCwgNzcsIDQ4LCA1MiwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNDksIDEyOCwgNzcsIAotICAgIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNTIsIDQ4LCAxMjgsIDc3LCA0OCwgNTEsIDU3LCAxMjgsIDc3LCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDc3LCA0OCwgNTEsIDU1LCAxMjgsIDc3LCA0OCwgNTEsIDU0LCAxMjgsIDc3LCA0OCwgNTEsIDUzLCAKLSAgICAxMjgsIDc3LCA0OCwgNTEsIDUyLCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjUsIAotICAgIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDEyOCwgNzcsIDQ4LCA1MSwgNTAsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIAotICAgIDc3LCA0OCwgNTEsIDQ5LCAxMjgsIDc3LCA0OCwgNTEsIDQ4LCAxMjgsIDc3LCA0OCwgNTAsIDU3LCAxMjgsIDc3LCA0OCwgCi0gICAgNTAsIDU2LCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1NiwgMTI4LCA3NywgNDgsIDUwLCA1NSwgMTI4LCA3NywgNDgsIDUwLCAKLSAgICA1NCwgMTI4LCA3NywgNDgsIDUwLCA1MywgMTI4LCA3NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIAotICAgIDEyOCwgNzcsIDQ4LCA1MCwgNTEsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDc3LCA0OCwgNTAsIDQ5LCAxMjgsIDc3LCA0OCwgNTAsIDQ4LCAxMjgsIDc3LCA0OCwgNDksIDU3LCAxMjgsIDc3LCA0OCwgCi0gICAgNDksIDU2LCAxMjgsIDc3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1NCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTQsIDEyOCwgNzcsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDUzLCAxMjgsIDc3LCA0OCwgNDksIDUyLCAxMjgsIDc3LCA0OCwgNDksIDUxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MiwgCi0gICAgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcwLCAxMjgsIDc3LCA0OCwgNDksIDUwLCAKLSAgICA2OSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjgsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY3LCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDUwLCA2NiwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDEyOCwgNzcsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgNDgsIDU3LCAKLSAgICAxMjgsIDc3LCA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCA0OCwgNDgsIDU0LCAxMjgsIDc3LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA3NywgNDgsIAotICAgIDQ4LCA1MSwgMTI4LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgCi0gICAgNDksIDY1LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCAxMjgsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgCi0gICAgMTI4LCA3NiwgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgCi0gICAgMTI4LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgCi0gICAgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgCi0gICAgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIAotICAgIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIAotICAgIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAKLSAgICAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA4NSwgNTEsIDEyOCwgNzYsIDg1LCAKLSAgICA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIAotICAgIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgCi0gICAgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIDEyOCwgCi0gICAgNzYsIDc5LCA4NSwgNjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgMjE3LCAKLSAgICA3NiwgNzksIDg0LCA4NSwgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIAotICAgIDc5LCA4MiwgODIsIDY1LCA3MywgNzgsIDY5LCAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgCi0gICAgNzksIDc5LCA4NCwgMTI4LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA3NiwgNzksIDc5LCAKLSAgICAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3NiwgNzksIDc4LCA3MSwgNjUsIAotICAgIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgCi0gICAgODksIDgyLCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCAKLSAgICA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgCi0gICAgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIAotICAgIDc3LCAxMjgsIDc2LCA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgCi0gICAgNzYsIDEyOCwgNzYsIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgNzYsIDc5LCA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgMjAzLCA3NiwgCi0gICAgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDc5LCAKLSAgICA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIDc3LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIDc2LCA3NCwgODUsIDY4LCAKLSAgICA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCAKLSAgICA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIAotICAgIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAxMjgsIDc2LCA3MywgODMsIDIxMywgNzYsIAotICAgIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgCi0gICAgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCAKLSAgICA3MywgNzgsIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIAotICAgIDc2LCA3MywgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgCi0gICAgNDUsIDUxLCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCAKLSAgICA3NiwgNzMsIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgCi0gICAgMjEzLCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDc2LCA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCAKLSAgICA3NiwgNzMsIDc2LCA3MywgODQsIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MywgMTI4LCA3NiwgNzMsIAotICAgIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAKLSAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIAotICAgIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgMTI4LCAKLSAgICA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCA2NSwgNjUsIAotICAgIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCA4NiwgNjksIAotICAgIDIwNCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDg1LCA2NSwgCi0gICAgNjksIDc3LCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIAotICAgIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgCi0gICAgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCAxMjgsIDc2LCAKLSAgICA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIAotICAgIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgCi0gICAgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCAKLSAgICA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIAotICAgIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgCi0gICAgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCA3MCwgODQsIAotICAgIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAKLSAgICAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIAotICAgIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCAKLSAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgCi0gICAgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCAKLSAgICA2OSwgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIAotICAgIDc2LCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgCi0gICAgNzYsIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIAotICAgIDE5NiwgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCAKLSAgICA2NSwgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIAotICAgIDg3LCAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIAotICAgIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgCi0gICAgODIsIDY1LCAyMDQsIDc2LCA2NSwgODQsIDE5NywgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCAKLSAgICA2OSwgNjUsIDIwNCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIAotICAgIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCAxMjgsIAotICAgIDc2LCA2NSwgMjA3LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgCi0gICAgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCAKLSAgICA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCAKLSAgICA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIAotICAgIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgCi0gICAgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIAotICAgIDc4LCAxMjgsIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgCisgICAgNzgsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDksIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgCisgICAgNDgsIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDgsIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAKKyAgICAyMDcsIDc4LCA3NSwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIAorICAgIDc0LCA4OSwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgCisgICAgODksIDgyLCAxMjgsIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCAKKyAgICA3OCwgNzQsIDg1LCA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIAorICAgIDc0LCA4NSwgNjksIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgCisgICAgNzksIDg4LCAxMjgsIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAKKyAgICAxMjgsIDc4LCA3NCwgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDEyOCwgNzgsIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgCisgICAgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCAKKyAgICA3NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIAorICAgIDY5LCAxMjgsIDc4LCA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgCisgICAgNzYsIDczLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAKKyAgICAxMjgsIDc4LCA3MywgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIAorICAgIDcxLCA4NSwgMTI4LCA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgCisgICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCAKKyAgICA2OCwgNjUsIDE3OCwgNzgsIDczLCA3NywgMTI4LCA3OCwgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgNzMsIAorICAgIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCA3MywgCisgICAgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCAKKyAgICA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIAorICAgIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIAorICAgIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCAKKyAgICA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgCisgICAgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgCisgICAgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIDEyOCwgCisgICAgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCAKKyAgICA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgCisgICAgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgCisgICAgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAKKyAgICAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCAKKyAgICA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKKyAgICA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCisgICAgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIDcxLCAKKyAgICA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIAorICAgIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCAKKyAgICA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIAorICAgIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAKKyAgICA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIAorICAgIDIwNiwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIAorICAgIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgCisgICAgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCAKKyAgICA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIAorICAgIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgCisgICAgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA2NSwgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgCisgICAgNjUsIDczLCAxMjgsIDc4LCA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgCisgICAgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCAKKyAgICA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDEyOCwgNzgsIAorICAgIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDEyOCwgCisgICAgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCAKKyAgICA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIAorICAgIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCA3OCwgMTI4LCA3OCwgNjksIDc2LCAxMjgsIAorICAgIDc4LCA2OSwgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY5LCA3MSwgCisgICAgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgMTI4LCA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCAKKyAgICA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzgsIAorICAgIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIDc4LCA2OCwgODUsIDgwLCAxMjgsIDc4LCA2OCwgCisgICAgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgMTI4LCA3OCwgNjgsIDc5LCA4NCwgMTI4LCA3OCwgCisgICAgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3OCwgNjgsIDc5LCAKKyAgICA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCA2OCwgNzMsIDg4LCAxMjgsIDc4LCA2OCwgNzMsIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIDgwLCAxMjgsIDc4LCA2OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgNjUsIDEyOCwgNzgsIDY4LCA3MywgNjUsIDgxLCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODQsIAorICAgIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA3OCwgCisgICAgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgNjUsIDg4LCAxMjgsIDc4LCA2OCwgNjUsIDg0LCAKKyAgICAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCA3OCwgNzEsIAorICAgIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY4LCA2NSwgMTkzLCA3OCwgCisgICAgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIAorICAgIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgCisgICAgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgCisgICAgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCAKKyAgICA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCAKKyAgICA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIAorICAgIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgCisgICAgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDY4LCAKKyAgICA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIAorICAgIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgCisgICAgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDc4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgODEsIDEyOCwgNzgsIAorICAgIDY1LCA3OSwgMjExLCA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OCwgNzEsIDc3LCA3OSwgCisgICAgNzgsIDg0LCA3MiwgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA3NywgNjksIDEyOCwgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgNjUsIDc3LCAxMjgsIDc4LCAKKyAgICA2NSwgNzUsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIDcxLCA4MiwgMjAxLCAKKyAgICA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgMTkzLCA3OCwgNjUsIAorICAgIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3NSwgODMsIDczLCA3NSwgODksIDY1LCAKKyAgICA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCAKKyAgICA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIAorICAgIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIAorICAgIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgCisgICAgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIAorICAgIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgCisgICAgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAKKyAgICAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIAorICAgIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgCisgICAgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAKKyAgICAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgCisgICAgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgCisgICAgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIAorICAgIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgCisgICAgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgCisgICAgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIAorICAgIDE5MywgNzcsIDg1LCA4NSwgMTI4LCA3NywgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIAorICAgIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAKKyAgICAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIAorICAgIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgCisgICAgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgCisgICAgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCAKKyAgICA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIAorICAgIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgCisgICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgCisgICAgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAKKyAgICAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgNzcsIAorICAgIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIAorICAgIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgCisgICAgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCAKKyAgICA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCAKKyAgICA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg1LCA4NCwgNzIsIAorICAgIDEyOCwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIAorICAgIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAKKyAgICAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIAorICAgIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc3LCA3OSwgCisgICAgODQsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCAKKyAgICA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKKyAgICA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIAorICAgIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgCisgICAgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCAKKyAgICA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIAorICAgIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCAKKyAgICA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIAorICAgIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgCisgICAgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgMjE3LCA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAKKyAgICAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgNzcsIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIAorICAgIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCisgICAgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgCisgICAgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgCisgICAgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgCisgICAgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgCisgICAgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAKKyAgICAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIAorICAgIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAKKyAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIAorICAgIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA3NywgCisgICAgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgCisgICAgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDczLCA3NSwgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCAKKyAgICA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIAorICAgIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIAorICAgIDg1LCAyMDUsIDc3LCA3MywgNjksIDgwLCAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIAorICAgIDczLCA2OCwgNzYsIDczLCA3OCwgMTk3LCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgCisgICAgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCA4MiwgNzksIDgzLCA2NywgNzksIDgwLCAKKyAgICA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgCisgICAgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgMTI4LCA3NywgNzIsIDEyOCwgNzcsIAorICAgIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDg4LCAxMjgsIDc3LCA3MSwgCisgICAgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgNzEsIDc5LCA4OCwgMTI4LCAKKyAgICA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAxMjgsIDc3LCA3MSwgMjA3LCAKKyAgICA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCA2OSwgODgsIDEyOCwgNzcsIAorICAgIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgCisgICAgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIAorICAgIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDgxLCAKKyAgICAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIDcxLCA2NSwgODQsIAorICAgIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIDcwLCA3OSwgNzgsIAorICAgIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgODEsIDEyOCwgNzcsIAorICAgIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODEsIDEyOCwgCisgICAgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIDkwLCA5MCwgNzksIAorICAgIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIAorICAgIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDY5LCA4NCwgCisgICAgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCA3MywgNjUsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgCisgICAgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgODQsIDY1LCAKKyAgICA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3NywgNjksIAorICAgIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAxOTcsIDc3LCA2OSwgODMsIDc5LCAKKyAgICAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCA2OSwgODIsIDc5LCA3MywgODQsIAorICAgIDczLCAxOTUsIDc3LCA2OSwgODIsIDc1LCA3MiwgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgCisgICAgODIsIDczLCA2OCwgNzMsIDY1LCA3OCwgODMsIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAKKyAgICAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIAorICAgIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIDc4LCAxMjgsIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgCisgICAgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCAKKyAgICA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIDQ1LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgNjgsIDczLCAxOTUsIDc3LCA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgCisgICAgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDg0LCA3OSwgNzgsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCAKKyAgICA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIDcxLCA2NSwgNzYsIDczLCAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIAorICAgIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgCisgICAgMTI4LCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCAKKyAgICA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgCisgICAgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCAKKyAgICA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIDcyLCA2NSwgMjA2LCA3NywgMTk1LCA3NywgCisgICAgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCAKKyAgICA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIAorICAgIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgCisgICAgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCAKKyAgICA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIAorICAgIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgCisgICAgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgCisgICAgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCAKKyAgICA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAKKyAgICAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIDY2LCAxMjgsIDc3LCAxOTQsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNjUsIDg4LCAxMjgsIDc3LCAKKyAgICA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCA4NCwgODIsIDczLCA4OCwgCisgICAgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIDEyOCwgNzcsIDY1LCAKKyAgICA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgNjUsIDcxLCA2OSwgCisgICAgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDcwLCAKKyAgICA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIDc2LCA3MywgNzgsIAorICAgIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgCisgICAgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCAKKyAgICA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgCisgICAgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCAKKyAgICA2NSwgODQsIDc5LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgCisgICAgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCAKKyAgICA4NCwgNjUsIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIAorICAgIDY1LCA3MCwgMTI4LCA3NywgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgCisgICAgMTI4LCA3NywgNjUsIDIwOCwgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4MywgODksIDc5LCA3OCwgMTI4LCA3NywgCisgICAgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCA3NiwgNzMsIAorICAgIDc4LCAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAyMTMsIDc3LCA2NSwgCisgICAgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgNzYsIDY5LCAKKyAgICA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgNzYsIDE5NywgNzcsIDY1LCA3NiwgNjUsIAorICAgIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCAKKyAgICAxOTMsIDc3LCA2NSwgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDczLCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgNzcsIAorICAgIDY1LCA3MywgODQsIDY1LCA3MywgNzUsIDcyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA4MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgCisgICAgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDY1LCA3NiwgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzMsIDc2LCAKKyAgICA2NiwgNzksIDIxNiwgNzcsIDY1LCA3MywgNzUsIDg1LCA4MiwgNzksIDEyOCwgNzcsIDY1LCA3MywgNjgsIDY5LCA3OCwgCisgICAgMTI4LCA3NywgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzIsIDc0LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3MiwgNzIsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA2NSwgNzUsIAorICAgIDcyLCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDc3LCA2NSwgNzIsIDEyOCwgCisgICAgNzcsIDY1LCA3MSwgNzgsIDczLCA3MCwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY1LCAKKyAgICA2OSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgNzQsIDY5LCA4NCwgMTI4LCA3NywgNjUsIDY5LCA3NywgODYsIAorICAgIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDc1LCA4MCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3MSwgCisgICAgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCAKKyAgICA2OSwgNzcsIDY2LCA2NSwgMTI4LCA3NywgNjUsIDY5LCA3NywgMTI4LCA3NywgNjUsIDY5LCA3NiwgNjksIDY5LCAxMjgsIAorICAgIDc3LCA2NSwgNjksIDc1LCA2OSwgODUsIDgwLCAxMjgsIDc3LCA2NSwgNjgsIDg5LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA4NSwgCisgICAgMTI4LCA3NywgNjUsIDY4LCA2OCwgNjUsIDIwMCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCAKKyAgICAxOTMsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIAorICAgIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjUsIDY3LCAKKyAgICA4NSwgODQsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCAyMDYsIAorICAgIDc3LCA2NSwgNjcsIDcyLCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2NSwgNjUsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDc3LCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDc3LCA2NSwgNjUsIDEyOCwgNzcsIDY1LCA1MCwgMTI4LCA3NywgNDgsIDUyLCA1MiwgMTI4LCA3NywgCisgICAgNDgsIDUyLCA1MSwgMTI4LCA3NywgNDgsIDUyLCA1MCwgMTI4LCA3NywgNDgsIDUyLCA0OSwgMTI4LCA3NywgNDgsIDUyLCAKKyAgICA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA1MiwgNDgsIDEyOCwgNzcsIDQ4LCA1MSwgNTcsIDEyOCwgNzcsIDQ4LCA1MSwgNTYsIAorICAgIDEyOCwgNzcsIDQ4LCA1MSwgNTUsIDEyOCwgNzcsIDQ4LCA1MSwgNTQsIDEyOCwgNzcsIDQ4LCA1MSwgNTMsIDEyOCwgNzcsIAorICAgIDQ4LCA1MSwgNTIsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY2LCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3NywgCisgICAgNDgsIDUxLCA1MSwgMTI4LCA3NywgNDgsIDUxLCA1MCwgMTI4LCA3NywgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MSwgNDksIDEyOCwgNzcsIDQ4LCA1MSwgNDgsIDEyOCwgNzcsIDQ4LCA1MCwgNTcsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIAorICAgIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAxMjgsIDc3LCA0OCwgNTAsIDU1LCAxMjgsIDc3LCA0OCwgNTAsIDU0LCAxMjgsIAorICAgIDc3LCA0OCwgNTAsIDUzLCAxMjgsIDc3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MiwgMTI4LCA3NywgCisgICAgNDgsIDUwLCA1MSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MCwgNDksIDEyOCwgNzcsIDQ4LCA1MCwgNDgsIDEyOCwgNzcsIDQ4LCA0OSwgNTcsIDEyOCwgNzcsIDQ4LCA0OSwgNTYsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCA2NSwgCisgICAgMTI4LCA3NywgNDgsIDQ5LCA1NCwgMTI4LCA3NywgNDgsIDQ5LCA1MywgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNzcsIDQ4LCA0OSwgNTIsIDEyOCwgNzcsIDQ4LCA0OSwgNTEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcyLCAxMjgsIDc3LCAKKyAgICA0OCwgNDksIDUwLCA3MSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzAsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY5LCAxMjgsIAorICAgIDc3LCA0OCwgNDksIDUwLCA2OCwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjcsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY2LCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgMTI4LCA3NywgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDEyOCwgNzcsIDQ4LCA0OCwgNTcsIDEyOCwgNzcsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzcsIDQ4LCA0OCwgNTUsIDEyOCwgNzcsIDQ4LCA0OCwgNTQsIDEyOCwgNzcsIDQ4LCA0OCwgCisgICAgNTMsIDEyOCwgNzcsIDQ4LCA0OCwgNTIsIDEyOCwgNzcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDc3LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc3LCA0OCwgNDgsIDUwLCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDEyOCwgNzYsIDIxOCwgNzYsIDg5LCA4OSwgMTI4LCA3NiwgODksIDg4LCAxMjgsIDc2LCAKKyAgICA4OSwgODQsIDEyOCwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzYsIDg5LCA4MiwgMTI4LCA3NiwgODksIDgwLCAxMjgsIDc2LCAKKyAgICA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgODksIDY3LCA3MywgNjUsIDIwNiwgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIAorICAgIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgNzYsIDg3LCA3MywgNzMsIDEyOCwgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIAorICAgIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAxMjgsIDc2LCA4NywgNjUsIDEyOCwgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIAorICAgIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIAorICAgIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgCisgICAgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAKKyAgICAxMjgsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIAorICAgIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIAorICAgIDc2LCA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIAorICAgIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDE5NywgCisgICAgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDc2LCAKKyAgICA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIDc2LCA3OSwgODUsIAorICAgIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgNzYsIDc5LCA4NCwgCisgICAgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCAKKyAgICA2NSwgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIAorICAgIDEyOCwgNzYsIDc5LCA3OSwgODAsIDY5LCAxOTYsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIAorICAgIDc5LCA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgCisgICAgNzcsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCAKKyAgICA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCisgICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIAorICAgIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCAKKyAgICA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgCisgICAgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCAKKyAgICA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIAorICAgIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgCisgICAgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCAKKyAgICA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgCisgICAgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIDcxLCA0NSwgODMsIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCAKKyAgICA2NywgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgCisgICAgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgCisgICAgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgCisgICAgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCAKKyAgICA3MywgODQsIDEyOCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCAKKyAgICA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgODAsIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDc4LCA3NSwgNzMsIAorICAgIDc4LCAxOTksIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgCisgICAgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCAKKyAgICA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgCisgICAgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCAKKyAgICA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIAorICAgIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCAKKyAgICA4NCwgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgCisgICAgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCAKKyAgICA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCA4MiwgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIAorICAgIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgMTI4LCA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAKKyAgICAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCA2NSwgNjUsIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAKKyAgICAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIDEyOCwgNzYsIAorICAgIDY5LCAyMTMsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDc4LCAKKyAgICAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCAxMjgsIDc2LCA2OSwgNzksIAorICAgIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgCisgICAgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIAorICAgIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCisgICAgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAKKyAgICA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgMTI4LCAKKyAgICA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCAKKyAgICA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIAorICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgCisgICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIAorICAgIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgCisgICAgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIAorICAgIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCA2OSwgCisgICAgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIDc2LCAKKyAgICA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgNzYsIAorICAgIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgCisgICAgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCA2NSwgCisgICAgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIDg3LCAKKyAgICAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIDc2LCAKKyAgICA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIAorICAgIDY1LCAyMDQsIDc2LCA2NSwgODQsIDE5NywgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgCisgICAgNjUsIDIwNCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIDgyLCAKKyAgICA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCAxMjgsIDc2LCAKKyAgICA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAxOTcsIDc2LCA2NSwgNzgsIAorICAgIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgMTI4LCA3NiwgCisgICAgNjUsIDc3LCA2OSwgMTk2LCA3NiwgNjUsIDc3LCA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIDc2LCA2NSwgNzcsIDY4LCAKKyAgICA2NSwgMTI4LCA3NiwgNjUsIDc3LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgNzYsIDY1LCA3NywgNjUsIAorICAgIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc2LCAxMjgsIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCA3NSwgNzIsIDY1LCA3OCwgCisgICAgNzEsIDg5LCA2NSwgNzksIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCAKKyAgICAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIAogICAgIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIAogICAgIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgCiAgICAgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgCiAgICAgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCAKLSAgICA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NiwgNjUsIAotICAgIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCA4NSwgMTI4LCA3NiwgCi0gICAgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCAKLSAgICA0OCwgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgCi0gICAgMTk2LCA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgCi0gICAgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCAKLSAgICA2NSwgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIDc1LCA4OCwgODcsIAotICAgIDczLCAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgCi0gICAgNzMsIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgCi0gICAgODgsIDY1LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCAKLSAgICA3OSwgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCAKLSAgICA4NywgNjksIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIAotICAgIDEyOCwgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgCi0gICAgMTI4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDc5LCAxMjgsIDc1LCAKLSAgICA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIDc1LCA4NSwgODIsIDEyOCwgNzUsIAotICAgIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIDg1LCA3OSwgODAsIDEyOCwgNzUsIAotICAgIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIDc1LCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgNzYsIDEyOCwgNzUsIDg1LCAKLSAgICAyMDQsIDc1LCA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgCi0gICAgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIDc1LCA4MywgCi0gICAgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCAKLSAgICA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgCi0gICAgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCAKLSAgICA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIAotICAgIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAKLSAgICAxMjgsIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCA4MiwgNzksIAotICAgIDc4LCA3MywgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIDE5NSwgCi0gICAgNzUsIDc5LCA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODAsIAotICAgIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAxMjgsIDc1LCA3OSwgCi0gICAgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAKLSAgICAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIAotICAgIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCA2NiwgMjEzLCA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIAotICAgIDc1LCA3OSwgMjAzLCA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIAotICAgIDcyLCA3OSwgNzcsIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCA3OSwgCi0gICAgNjUsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCAKLSAgICA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCAKLSAgICA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIAotICAgIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIAotICAgIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIAotICAgIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIAotICAgIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAKLSAgICA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgCi0gICAgNzMsIDc4LCAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCAKLSAgICA1MywgMTI4LCA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIAotICAgIDc2LCAxMjgsIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgCi0gICAgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCAKLSAgICA3MywgODIsIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIAotICAgIDgwLCAxMjgsIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgCi0gICAgNjksIDgyLCA3MSwgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCAKLSAgICA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCAKLSAgICA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCAKLSAgICA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgODUsIAotICAgIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgCi0gICAgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCAKLSAgICA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIAotICAgIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCA2OSwgCi0gICAgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCAKLSAgICA3MiwgNjUsIDgyLCAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgNzIsIAotICAgIDY1LCA3OCwgNjgsIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCA3MiwgCi0gICAgNjUsIDc1LCA2NSwgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIAorICAgIDczLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgCisgICAgNjYsIDY1LCA4NCwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAxMjgsIDc2LCAKKyAgICA2NSwgNjUsIDc3LCA4NSwgMTI4LCA3NiwgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCA3NiwgNDgsIAorICAgIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgCisgICAgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIAorICAgIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIAorICAgIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCA2NSwgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgCisgICAgODksIDY1LCAxMjgsIDc1LCA4OCwgODcsIDczLCAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCAKKyAgICA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCAKKyAgICA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgNzMsIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCAKKyAgICA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgODgsIDY1LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAxMjgsIAorICAgIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgCisgICAgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgCisgICAgODgsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIDEyOCwgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCAKKyAgICA3MywgODIsIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIAorICAgIDc1LCA4NSwgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIAorICAgIDc1LCA4NSwgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgCisgICAgNzYsIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgCisgICAgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIAorICAgIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgNzksIDEyOCwgNzUsIDgzLCA4MywgCisgICAgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCA4MywgODMsIDczLCAxMjgsIDc1LCA4MywgODMsIDY5LCAKKyAgICA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIAorICAgIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIDgzLCAxMjgsIAorICAgIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgCisgICAgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIAorICAgIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCAKKyAgICA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgCisgICAgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgCisgICAgODUsIDg1LCAxMjgsIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIAorICAgIDE5NSwgNzUsIDc5LCA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODAsIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAxMjgsIDc1LCAKKyAgICA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIAorICAgIDc3LCAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgCisgICAgNjYsIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCA2NiwgMjEzLCA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCAKKyAgICAxMjgsIDc1LCA3OSwgMjAzLCA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgCisgICAgNzEsIDcyLCA3OSwgNzcsIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCAKKyAgICA3OSwgNjUsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIAorICAgIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIAorICAgIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAKKyAgICAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgCisgICAgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgCisgICAgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgCisgICAgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCAKKyAgICA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIAorICAgIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCAKKyAgICA4MywgNzMsIDc4LCAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIAorICAgIDc3LCA1MywgMTI4LCA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgCisgICAgNjUsIDc2LCAxMjgsIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCAKKyAgICA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIAorICAgIDc1LCA3MywgODIsIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgCisgICAgNzMsIDgwLCAxMjgsIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCAKKyAgICA2OCwgNjksIDgyLCA3MSwgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIAorICAgIDczLCA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgNjksIDgwLCAxMjgsIAorICAgIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIAorICAgIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgCisgICAgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAKKyAgICAxMjgsIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCAKKyAgICA3MiwgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIAorICAgIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIDczLCA3OCwgODksIDY1LCAxMjgsIAorICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgCisgICAgNzIsIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIAorICAgIDc1LCA3MiwgNjUsIDgyLCAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgCisgICAgNzIsIDY1LCA3OCwgNjgsIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCAKKyAgICA3MiwgNjUsIDc1LCA2NSwgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIAogICAgIDEyOCwgNzUsIDcyLCA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIAogICAgIDY1LCA4MCwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIDY4LCAKICAgICAxMjgsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIApAQCAtMjE0MSw3MSArMjI4Nyw3NCBAQAogICAgIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgCiAgICAgNzUsIDY2LCAxMjgsIDc1LCA2NSwgOTAsIDY1LCA3NSwgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKICAgICA3NSwgNjUsIDg5LCA2NSwgMjAwLCA3NSwgNjUsIDg4LCAxMjgsIDc1LCA2NSwgODcsIDczLCAxMjgsIDc1LCA2NSwgODYsIAotICAgIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NCwgCi0gICAgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIAotICAgIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCA2NSwgODYsIDE5MywgCi0gICAgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzUsIAotICAgIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAyMDYsIDc1LCA2NSwgCi0gICAgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIDc2LCAxMjgsIDc1LCAKLSAgICA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIAotICAgIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgCi0gICAgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIAotICAgIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIAotICAgIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCAKLSAgICA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIAotICAgIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgCi0gICAgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIDc4LCAKLSAgICA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIAotICAgIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIAotICAgIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4MiwgCi0gICAgNzMsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgCi0gICAgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgCi0gICAgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgCi0gICAgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgCi0gICAgNjUsIDcwLCA4NSwgMTI4LCA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCAKLSAgICA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCA4OSwgMTI4LCA3NCwgCi0gICAgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIDcxLCA2OSwgMTI4LCAKLSAgICA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgODksIDc5LCA4NSwgCi0gICAgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIDc4LCA3MSwgCi0gICAgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAKLSAgICAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgCi0gICAgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIDg0LCAKLSAgICAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCA3MywgCi0gICAgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCA3NiwgCi0gICAgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzQsIDczLCA2NSwgMTI4LCAKLSAgICA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIAotICAgIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCA3NiwgCi0gICAgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIDEyOCwgCi0gICAgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIDY5LCAKLSAgICA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAotICAgIDc0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgCi0gICAgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCAKLSAgICA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgCi0gICAgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCAKLSAgICA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCAyMDIsIAotICAgIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgCi0gICAgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIDczLCA4NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCAKLSAgICA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIAotICAgIDEyOCwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgCi0gICAgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIAotICAgIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgCi0gICAgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIAotICAgIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgCi0gICAgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCAKLSAgICA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIAotICAgIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAKLSAgICAxOTcsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIAorICAgIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NSwgCisgICAgMTI4LCA3NSwgNjUsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCA3NSwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA2NSwgODQsIAorICAgIDY1LCA4NiwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCAKKyAgICA3OCwgMTkzLCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIAorICAgIDIwNiwgNzUsIDY1LCA4MywgODIsIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIDc1LCA2NSwgCisgICAgNzYsIDEyOCwgNzUsIDY1LCA4MywgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAyMDEsIDc1LCAKKyAgICA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgMTI4LCA3NSwgNjUsIAorICAgIDgyLCAyMDcsIDc1LCA2NSwgODIsIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA2NSwgCisgICAgODIsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzUsIAorICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDY1LCAKKyAgICAxMjgsIDc1LCA2NSwgODAsIDgwLCAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIDcyLCAxMjgsIDc1LCAKKyAgICA2NSwgODAsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIAorICAgIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgCisgICAgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAKKyAgICAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCAKKyAgICA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIAorICAgIDIwMSwgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIAorICAgIDEyOCwgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIAorICAgIDY4LCAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIAorICAgIDY2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3NSwgNjUsIDY1LCA3MCwgCisgICAgMTI4LCA3NSwgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA3NSwgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAKKyAgICAxMjgsIDc0LCA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIAorICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgCisgICAgMTI4LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgCisgICAgODUsIDc2LCA4OSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCAKKyAgICA4NSwgNjgsIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIAorICAgIDc0LCA3OSwgODksIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgCisgICAgMjEyLCA3NCwgNzksIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgCisgICAgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCAKKyAgICA4OSwgODgsIDEyOCwgNzQsIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCAKKyAgICA3NCwgNzQsIDg1LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIAorICAgIDc0LCA4NSwgODIsIDEyOCwgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgCisgICAgODUsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAKKyAgICAxMjgsIDc0LCA3NCwgNzksIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCAKKyAgICA3MywgODgsIDEyOCwgNzQsIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgCisgICAgNjksIDEyOCwgNzQsIDc0LCA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgCisgICAgNjUsIDEyOCwgNzQsIDczLCA3NiwgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCAKKyAgICA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIAorICAgIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIAorICAgIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgCisgICAgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAKKyAgICAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCAKKyAgICA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIAorICAgIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgCisgICAgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIAorICAgIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgCisgICAgNjUsIDczLCAxMjgsIDc0LCA2NSwgNzIsIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCAKKyAgICA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIAorICAgIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDIwMiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgCisgICAgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAKKyAgICAxOTMsIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIAorICAgIDEyOCwgNzMsIDg1LCAxMjgsIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIAorICAgIDg0LCA2OSwgNzcsIDEyOCwgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA3OCwgMTI4LCA3MywgCisgICAgODMsIDc5LCAyMDYsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgNzUsIDczLCAKKyAgICAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIDY3LCA3OSwgCisgICAgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgNzksIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCAKKyAgICA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIAorICAgIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgCisgICAgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDY4LCAxMjgsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAKKyAgICAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIDE5NywgNzMsIDc4LCA4NCwgODIsIDc5LCA2OCwgODUsIDY3LCA2OSwgODIsIAorICAgIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgCiAgICAgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCAKICAgICA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgCiAgICAgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDczLCA3OCwgODQsIDY5LCAKQEAgLTIyMzQsMTIyNiArMjM4MywxMjMzIEBACiAgICAgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA3MywgNzgsIDQ1LCAKICAgICA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIAogICAgIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgCi0gICAgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzMsIDgzLCA2OSwgNzksIDIxMSwgNzMsIDc3LCAKLSAgICA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIDc4LCAxMjgsIDczLCA3NywgNzMsIDIwNiwgNzMsIDc3LCA3MywgNzAsIAotICAgIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA2NSwgMTI4LCA3MywgCi0gICAgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNjgsIDczLCA2NSwgODIsIDcxLCA3OSwgNzgsIAotICAgIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgNzMsIDc2LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgCi0gICAgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODQsIAotICAgIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTEsIDEyOCwgCi0gICAgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDIxMywgNzMsIDc2LCA1MCwgMTI4LCAKLSAgICA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDE5MywgNzMsIDc0LCAxMjgsIDczLCA3MywgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIDEyOCwgNzMsIDcxLCAyMDEsIDczLCA3MSwgNzEsIDg3LCA4MywgCi0gICAgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDczLCA2OSwgODUsIAotICAgIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDczLCA2OSwgCi0gICAgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgCi0gICAgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDczLCA2OSwgODUsIAotICAgIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDczLCA2OSwgCi0gICAgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAxMjgsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDczLCA2OCwgNzMsIDIwNSwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIAotICAgIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIAotICAgIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIAotICAgIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIAotICAgIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIAotICAgIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIAotICAgIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIAotICAgIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIAotICAgIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCi0gICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCi0gICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCi0gICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDcyLCA3OSwgCi0gICAgODUsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIAotICAgIDEyOCwgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgCi0gICAgNDUsIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgCi0gICAgNDksIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCAKLSAgICA0OCwgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIAotICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDczLCA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgCi0gICAgODksIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCAKLSAgICA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIAotICAgIDg5LCA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgCi0gICAgMTI4LCA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCAKLSAgICA0NSwgNjUsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIAotICAgIDgwLCAxMjgsIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIAotICAgIDg0LCAxMjgsIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgCi0gICAgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgCi0gICAgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg4LCA4NywgNzEsIAotICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgCi0gICAgNzIsIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCAKLSAgICA4NCwgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIAotICAgIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIAotICAgIDcyLCA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgCi0gICAgODgsIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgCi0gICAgODcsIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIDg1LCA4MiwgNjUsIDc4LCAKKyAgICA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIAorICAgIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIAorICAgIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCAKKyAgICA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIAorICAgIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCAKKyAgICA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIAorICAgIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgCisgICAgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCAKKyAgICA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIAorICAgIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDcyLCA3OSwgODUsIDEyOCwgNzMsIAorICAgIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgCisgICAgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIDg5LCA4MiwgMTI4LCAKKyAgICA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIAorICAgIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIAorICAgIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3MywgCisgICAgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDEyOCwgNzMsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIDg1LCAxMjgsIDczLCA0NSwgCisgICAgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgMTI4LCA3MywgNDUsIAorICAgIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCA3MywgNDUsIDY2LCA2OSwgCisgICAgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIDEyOCwgNzIsIDkwLCAKKyAgICA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIDcyLCA5MCwgOTAsIAorICAgIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIDcyLCA5MCwgNzEsIAorICAgIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCAKKyAgICA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgCisgICAgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg4LCA4NywgNzEsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA4NSwgNzksIAorICAgIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA3OSwgODAsIDEyOCwgNzIsIAorICAgIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgMTI4LCA3MiwgODgsIDczLCA4MCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCA4OCwgNjksIDg4LCAxMjgsIDcyLCAKKyAgICA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIDEyOCwgNzIsIDg4LCA2NSwgODQsIAorICAgIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIDg1LCAxMjgsIDcyLCA4NywgNjUsIAorICAgIDczLCA4MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODIsIDY1LCA3OCwgCiAgICAgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMTI4LCA3MiwgODUsIDc4LCAKICAgICA2OCwgODIsIDY5LCAxOTYsIDcyLCA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIAogICAgIDY1LCAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA2NiwgCiAgICAgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCAKLSAgICA3OSwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIAotICAgIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgCi0gICAgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCAKLSAgICA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIAotICAgIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgCi0gICAgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIAotICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCAKLSAgICA3OCwgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIAotICAgIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCAKLSAgICA3MiwgNzksIDczLCAxMjgsIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgCi0gICAgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIAotICAgIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIAotICAgIDcyLCA3OCwgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgCi0gICAgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAKLSAgICAxMjgsIDcyLCA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIAotICAgIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgMTI4LCA3MiwgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgCi0gICAgNzcsIDc5LCAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIAotICAgIDEyOCwgNzIsIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIAotICAgIDg0LCAxMjgsIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIAotICAgIDc2LCA4OSwgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgCi0gICAgODksIDgwLCAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgCi0gICAgNzIsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIAotICAgIDcyLCA3NiwgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgMTI4LCA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCAKLSAgICA3NiwgNjUsIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIAotICAgIDEyOCwgNzIsIDc1LCAxMjgsIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIAotICAgIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgCi0gICAgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIAotICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgMTI4LCA3MiwgNzMsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIAotICAgIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAxMjgsIDcyLCA3MywgNjYsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCAKLSAgICA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAotICAgIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgCi0gICAgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCAKLSAgICA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIDY1LCA2OSwgODUsIDIwNSwgNzIsIAotICAgIDY5LCA3OCwgNzEsIDEyOCwgNzIsIDY5LCA3OCwgMTk5LCA3MiwgNjksIDc3LCA4MCwgMTI4LCA3MiwgNjksIDc2LCA3NywgCi0gICAgNjksIDg0LCAxMjgsIDcyLCA2OSwgNzYsIDc3LCA2OSwgMjEyLCA3MiwgNjksIDc2LCAyMDUsIDcyLCA2OSwgNzYsIDczLCAKLSAgICA2NywgNzksIDgwLCA4NCwgNjksIDgyLCAxMjgsIDcyLCA2OSwgNzUsIDg1LCA4NCwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIAotICAgIDY5LCA3MywgODMsIDY5LCA3MywgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgCi0gICAgNzYsIDIxNywgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIDY5LCAKLSAgICA2NSwgODIsIDg0LCA4MywgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzIsIAotICAgIDY5LCA2NSwgODIsIDg0LCAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCA0NSwgCi0gICAgNjksIDg2LCA3MywgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgODMsIDg0LCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgNjksIAotICAgIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgCi0gICAgNjYsIDY1LCA4MywgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCAKLSAgICA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIAotICAgIDcyLCA2NSwgODQsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAKLSAgICAxOTgsIDcyLCA2NSwgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIAotICAgIDgwLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgCi0gICAgNzMsIDY3LCAxMjgsIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCAKLSAgICA4MywgMTI4LCA3MiwgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIAotICAgIDIwNywgNzIsIDY1LCA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCAyMTEsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgCi0gICAgNDUsIDY1LCA3NSwgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAKLSAgICAyMTAsIDcyLCA2NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAotICAgIDY2LCA4NSwgODIsIDcxLCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAKLSAgICAxMjgsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIDY4LCAxMjgsIDcyLCA2NSwgNzYsIAotICAgIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgCi0gICAgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgCi0gICAgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCAKLSAgICA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCAKLSAgICA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIAotICAgIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgCi0gICAgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCAKLSAgICA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCAKLSAgICA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCAKLSAgICA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCAKLSAgICA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIAotICAgIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIAotICAgIDc2LCAxMjgsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIDcxLCA4NSwgNjksIDcyLCAxMjgsIAotICAgIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgCi0gICAgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCAKLSAgICA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgCi0gICAgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAKLSAgICAyMDYsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIAotICAgIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAKLSAgICA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgCi0gICAgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCAKLSAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgCi0gICAgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCAKLSAgICA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIAotICAgIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjcsIDY5LCAKLSAgICAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIAotICAgIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAKLSAgICAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIAotICAgIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgCi0gICAgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCA3MSwgCi0gICAgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIDcxLCAKLSAgICA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCA4NCwgCi0gICAgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIDcxLCAKLSAgICA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAxMjgsIAotICAgIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAxMjgsIAotICAgIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIDY1LCAKLSAgICAxMjgsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIDUxLCAxMjgsIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCAKLSAgICA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIDgwLCAxMjgsIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCAKLSAgICA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgNjksIDIwNCwgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIAotICAgIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgCi0gICAgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgCi0gICAgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIAotICAgIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIAotICAgIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgCi0gICAgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCAKLSAgICA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIAotICAgIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAxMjgsIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIAotICAgIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAKLSAgICAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIAotICAgIDc4LCA4NSwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgCi0gICAgNjgsIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIAotICAgIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIAotICAgIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgCi0gICAgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIAotICAgIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgCi0gICAgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAKLSAgICAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCAKLSAgICA3MSwgNjUsIDg0LCAxMjgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIDcxLCA2OSwgODQsIDE5MywgNzEsIDY5LCA4MywgODQsIAotICAgIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDc4LCAKLSAgICAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDcxLCA2OSwgODIsIAotICAgIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIDcxLCA2OSwgODIsIDY5LCA4MywgCi0gICAgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAKLSAgICA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzgsIDg0LCA3NiwgCi0gICAgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIDc1LCAyMDEsIDcxLCAKLSAgICA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgNjksIDc3LCA3MywgNzgsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCA2OSwgCi0gICAgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCA3MSwgCi0gICAgNjksIDY1LCAyMTAsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgCi0gICAgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCAKLSAgICA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIAotICAgIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAKLSAgICAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIDY1LCA4NSwgNzgsIAotICAgIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzEsIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgMTI4LCA3MSwgCi0gICAgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDUxLCAKLSAgICAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIDY1LCAxMjgsIDcxLCAKLSAgICA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgNTAsIDEyOCwgNzEsIAotICAgIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAxMjgsIDcxLCA2NSwgCi0gICAgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCA3NywgNjUsIDc4LCAKLSAgICAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIDcxLCAxMjgsIDcxLCAKLSAgICA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIAotICAgIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIAotICAgIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIAotICAgIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgCi0gICAgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgCi0gICAgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIAotICAgIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIAotICAgIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgCi0gICAgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIAotICAgIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIAotICAgIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgCi0gICAgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCAKLSAgICA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIAotICAgIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgCi0gICAgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgCi0gICAgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIDcwLCA4NSwgODQsIDEyOCwgCi0gICAgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgMTI4LCA3MCwgODUsIDgwLCAKLSAgICAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIDcwLCA4NSwgNzQsIDczLCAKLSAgICAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgMTI4LCA3MCwgODQsIDcyLCAKLSAgICA3OSwgODIsIDE5MywgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIAotICAgIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgCi0gICAgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIAotICAgIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgODUsIDEyOCwgNzAsIAotICAgIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIDY5LCA3OCwgNjcsIAotICAgIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIAotICAgIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgCi0gICAgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCAKLSAgICA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzksIAotICAgIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MywgODQsIDgyLCAKLSAgICA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIDc5LCA4NSwgODIsIAotICAgIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAKLSAgICAxMjgsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIAorICAgIDc5LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIAorICAgIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIAorICAgIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAKKyAgICAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCAKKyAgICA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIAorICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAorICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKKyAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCisgICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIAorICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKKyAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIAorICAgIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgCisgICAgNjksIDE5NiwgNzIsIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgNzgsIDY5LCAyMTcsIDcyLCAKKyAgICA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgCisgICAgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCAKKyAgICA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgNzIsIDc5LCA3MywgMTI4LCAKKyAgICA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIDg0LCAxMjgsIDcyLCA3OCwgCisgICAgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDgwLCAKKyAgICAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDc4LCA3MywgNjksIAorICAgIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCA2OSwgODgsIDEyOCwgNzIsIAorICAgIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCA3MiwgNzgsIDY1LCA4NCwgCisgICAgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAxMjgsIDcyLCA3NywgCisgICAgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCA3MiwgNzcsIDg5LCAKKyAgICAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzIsIAorICAgIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgNzIsIDc3LCA3OSwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA3OSwgMTI4LCA3MiwgCisgICAgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCA3MiwgNzcsIDczLCAKKyAgICA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIDcyLCA3NywgNzMsIAorICAgIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgMTI4LCA3MiwgNzcsIAorICAgIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgODksIDg0LCAxMjgsIAorICAgIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCA4MCwgMTI4LCA3MiwgCisgICAgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgODUsIDEyOCwgNzIsIAorICAgIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgNzYsIDczLCA4OCwgCisgICAgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODgsIDEyOCwgCisgICAgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIDEyOCwgNzIsIDc2LCAKKyAgICA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIDY1LCA4OCwgMTI4LCAKKyAgICA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAxMjgsIDcyLCA3NSwgMTI4LCAKKyAgICA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCA3MiwgNzMsIDgyLCA3MywgODEsIAorICAgIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgCisgICAgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3MiwgNjksIDY5LCA3NiwgNjksIAorICAgIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgNjksIDg1LCAyMDAsIDcyLCAKKyAgICA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAxMjgsIDcyLCA3MywgNjgsIAorICAgIDczLCA3OCwgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIDEyOCwgNzIsIDczLCA2NiwgCisgICAgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCA3MiwgODUsIDEyOCwgNzIsIDcyLCAKKyAgICA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDcyLCAKKyAgICA3MSwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgCisgICAgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3MiwgNjksIDgyLCA4NSwgODQsIDg1LCAxMjgsIDcyLCAKKyAgICA2OSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDc3LCA3MywgODQsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNzMsIAorICAgIDc5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA2OSwgODMsIDEyOCwgNzIsIDY5LCA4MiwgNjksIDEyOCwgCisgICAgNzIsIDY5LCA4MiwgNjYsIDEyOCwgNzIsIDY5LCA4MiwgNjUsIDY5LCA4NSwgMjA1LCA3MiwgNjksIDc4LCA3MSwgMTI4LCAKKyAgICA3MiwgNjksIDc4LCAxOTksIDcyLCA2OSwgNzcsIDgwLCAxMjgsIDcyLCA2OSwgNzYsIDc3LCA2OSwgODQsIDEyOCwgNzIsIAorICAgIDY5LCA3NiwgNzcsIDY5LCAyMTIsIDcyLCA2OSwgNzYsIDIwNSwgNzIsIDY5LCA3NiwgNzMsIDY3LCA3OSwgODAsIDg0LCA2OSwgCisgICAgODIsIDEyOCwgNzIsIDY5LCA3NSwgODUsIDg0LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjksIDczLCA4MywgNjksIDczLCAKKyAgICAxMjgsIDcyLCA2OSwgNjUsIDg2LCA4OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDc4LCA3NiwgMjE3LCA3MiwgNjksIAorICAgIDY1LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgMjA2LCA3MiwgNjksIDY1LCA4MiwgODQsIDgzLCAKKyAgICAxMjgsIDcyLCA2OSwgNjUsIDgyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA3MiwgNjksIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNzIsIDY5LCA2NSwgODIsIDIxMiwgNzIsIDY5LCA2NSwgODIsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAKKyAgICAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIAorICAgIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAKKyAgICAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODYsIDY5LCAxMjgsIDcyLCA2NSwgODUsIAorICAgIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgNzIsIDY1LCA4NCwgCisgICAgNjksIDEyOCwgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIDE5OCwgNzIsIDY1LCAKKyAgICA4MywgNjksIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgNzgsIAorICAgIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNjcsIDEyOCwgCisgICAgNzIsIDY1LCA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcyLCAKKyAgICA2NSwgODIsIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgMjA3LCA3MiwgNjUsIAorICAgIDc4LCA3MSwgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgCisgICAgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNjYsIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCA2NSwgODQsIAorICAgIDEyOCwgNzIsIDY1LCA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgCisgICAgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCAKKyAgICA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIAorICAgIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgCisgICAgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCAKKyAgICA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA2NSwgNzEsIDc2LCA2NSwgCisgICAgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA3MiwgNjUsIDcwLCAKKyAgICA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjUsIAorICAgIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU2LCAxMjgsIAorICAgIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgMTI4LCA3MiwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzEsIDg5LCA4NSwgMTI4LCAKKyAgICA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgNzEsIDg5LCA3MCwgMjEzLCAKKyAgICA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCA2NSwgMTI4LCA3MSwgODksIAorICAgIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDg3LCA2OSwgNjksIAorICAgIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAxMjgsIDcxLCA4NiwgMTI4LCAKKyAgICA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA2NSwgNzcsIAorICAgIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCA4NSwgCisgICAgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgCisgICAgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgCisgICAgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgCisgICAgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgCisgICAgMjEwLCA3MSwgODMsIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgCisgICAgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCAKKyAgICA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDczLCA3NywgNjUsIAorICAgIDY3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY5LCAKKyAgICAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIAorICAgIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgCisgICAgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCAKKyAgICA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIAorICAgIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCAKKyAgICA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIAorICAgIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgCisgICAgMTI4LCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCAKKyAgICA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIAorICAgIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgCisgICAgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCAKKyAgICA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIAorICAgIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIAorICAgIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCA3MSwgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgCisgICAgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIDcxLCA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgCisgICAgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCAKKyAgICA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIAorICAgIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgCisgICAgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgCisgICAgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAKKyAgICAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIAorICAgIDUxLCAxMjgsIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIAorICAgIDgwLCAxMjgsIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgCisgICAgNjksIDIwNCwgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgMTI4LCA3MSwgCisgICAgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCA2NSwgMTI4LCAKKyAgICA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAxMjgsIDcxLCAKKyAgICA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIDEyOCwgNzEsIAorICAgIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIDcyLCA3MywgCisgICAgMTI4LCA3MSwgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAKKyAgICAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIAorICAgIDcyLCA2OSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAKKyAgICAxMjgsIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCAKKyAgICA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIAorICAgIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgCisgICAgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIAorICAgIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgCisgICAgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgCisgICAgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCAKKyAgICA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIAorICAgIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNzEsIDY1LCA2NSwgMTI4LCA3MSwgNjksIDg0LCAxOTMsIAorICAgIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgCisgICAgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgMTI4LCAKKyAgICA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCA3MSwgNjksIAorICAgIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgNjksIDc4LCAKKyAgICA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCA3NSwgCisgICAgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIDY5LCAKKyAgICA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgCisgICAgMTI4LCA3MSwgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgCisgICAgODIsIDEyOCwgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgCisgICAgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIAorICAgIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgCisgICAgODQsIDg0LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCAKKyAgICA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgCisgICAgNjUsIDc4LCAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIAorICAgIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgCisgICAgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCAKKyAgICA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIAorICAgIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgCisgICAgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgCisgICAgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCAKKyAgICA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIAorICAgIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgCisgICAgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgCisgICAgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgCisgICAgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIAorICAgIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgCisgICAgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIAorICAgIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIAorICAgIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgCisgICAgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAKKyAgICA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgCisgICAgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAKKyAgICAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCAKKyAgICA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCA4MywgNTEsIAorICAgIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIAorICAgIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIAorICAgIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCAKKyAgICA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCAKKyAgICA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgMTI4LCA3MCwgODQsIDcyLCA3OSwgODIsIDE5MywgNzAsIDgyLCA3OSwgODcsIAorICAgIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgCisgICAgMTI4LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCAKKyAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIAorICAgIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgODUsIDEyOCwgNzAsIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgCisgICAgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCAKKyAgICA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIDY5LCA3OCwgNjcsIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIAorICAgIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCAKKyAgICA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIAorICAgIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgCisgICAgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIAogICAgIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgCiAgICAgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NSwgNjksIDE5NiwgNzAsIDc5LCAKICAgICA4MiwgNjcsIDY5LCA4MywgMTI4LCA3MCwgNzksIDgyLCA2NywgNjksIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIApAQCAtMzQ2MiwzODQgKzM2MTgsMzg5IEBACiAgICAgMTI4LCA3MCwgNzksIDc5LCA4NCwgMTI4LCA3MCwgNzksIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgCiAgICAgNzgsIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCAKICAgICA3OSwgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIAotICAgIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3NywgMTI4LCA3MCwgNzYsIDg5LCAxMjgsIAotICAgIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgCi0gICAgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIAotICAgIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgCi0gICAgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCAKLSAgICA4MiwgMTI4LCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNjksIAotICAgIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgCi0gICAgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCAKLSAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIDcwLCA3NiwgNjUsIAotICAgIDcxLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgCi0gICAgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCAKLSAgICA0NSwgNDksIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCAKLSAgICA3NiwgMTI4LCA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIAotICAgIDczLCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCAKLSAgICA3OCwgMTk3LCA3MCwgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDY1LCAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCAKLSAgICA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIDE5OSwgNzAsIAotICAgIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAyMDMsIDcwLCA3MywgCi0gICAgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIDIwMCwgNzAsIDczLCAKLSAgICA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDc1LCA4MywgCi0gICAgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCA3MCwgNzMsIDgyLCAKLSAgICAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIAotICAgIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA2NSwgCi0gICAgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCAKLSAgICAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCA3MCwgNzMsIDczLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgMTk3LCA3MCwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAyMTcsIDcwLCAKLSAgICA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIAotICAgIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDcwLCA3MiwgCi0gICAgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCA4NSwgODgsIDEyOCwgCi0gICAgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIDg2LCA2NSwgNzYsIAotICAgIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgNjksIDgyLCA3NywgCi0gICAgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIDIwMCwgNzAsIDY5LCAKLSAgICA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgNzgsIDE5NywgNzAsIAotICAgIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgCi0gICAgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgCi0gICAgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAKLSAgICAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIAotICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAKLSAgICAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgCi0gICAgNjksIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCAKLSAgICA4NCwgNzIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIAotICAgIDcyLCA2NSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAyMDEsIAotICAgIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgCi0gICAgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCAKLSAgICA2NSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIAotICAgIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgCi0gICAgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCAKLSAgICA2NywgODMsIDczLCA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIAotICAgIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgCi0gICAgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCAKLSAgICA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIAotICAgIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgCi0gICAgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAKLSAgICAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCAKLSAgICA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIAotICAgIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgCi0gICAgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAKLSAgICAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCAKLSAgICA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIAotICAgIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgCi0gICAgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAKLSAgICAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIAotICAgIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgCi0gICAgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgCi0gICAgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIAotICAgIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCAKLSAgICA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCAKLSAgICA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCAKLSAgICA4NCwgODIsIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIAotICAgIDY1LCA0NSwgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgCi0gICAgODQsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIAotICAgIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIAotICAgIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIAotICAgIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgCi0gICAgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAKLSAgICAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIAotICAgIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCAKLSAgICA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgCi0gICAgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgCi0gICAgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCAKLSAgICA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgCi0gICAgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgODksIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAKLSAgICAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIAotICAgIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgCi0gICAgMTc4LCA2OSwgODMsIDcyLCA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDQ1LCAKLSAgICA4NCwgNjksIDEyOCwgNjksIDgyLCA4MiwgNzksIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCA4MiwgODIsIAotICAgIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAxMjgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIAotICAgIDgxLCA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCA4NSwgCi0gICAgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIDg1LCAKLSAgICA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgODAsIDY5LCAKLSAgICA3OCwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgNzksIAotICAgIDc2LCA3MiwgODgsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgCisgICAgNzYsIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAxMjgsIDcwLCA3NiwgCisgICAgODksIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg1LCA4NCwgNjksIAorICAgIDEyOCwgNzAsIDc2LCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcwLCA3NiwgCisgICAgNzksIDg3LCA2OSwgMjEwLCA3MCwgNzYsIDc5LCA4NSwgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIAorICAgIDc2LCA3OSwgNzksIDgyLCAxMjgsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgCisgICAgNzAsIDc2LCA2OSwgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCA4OCwgNjksIDE5NiwgNzAsIDc2LCA2OSwgODUsIDgyLCAKKyAgICA0NSwgNjgsIDY5LCA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCA3OCwgNjksIDE5NiwgNzAsIAorICAgIDc2LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIDcwLCA3NiwgNjUsIDIxMiwgCisgICAgNzAsIDc2LCA2NSwgNzEsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCAKKyAgICA1MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDQ1LCA0OSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgCisgICAgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIDcwLCA3MywgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCAKKyAgICA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIAorICAgIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3MywgODYsIDE5NywgNzAsIDczLCA4NCwgNjUsIDEyOCwgNzAsIDczLCA4NCwgCisgICAgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgODQsIDEyOCwgNzAsIDczLCA4MywgNzIsIDczLCAKKyAgICA3OCwgMTk5LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAorICAgIDIwMywgNzAsIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgCisgICAgMjAwLCA3MCwgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCAKKyAgICA4MiwgNzUsIDgzLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIAorICAgIDcwLCA3MywgODIsIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgCisgICAgNzEsIDY5LCA4MiwgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCAKKyAgICA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIAorICAgIDc2LCA3NiwgNjksIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIAorICAgIDcwLCA3MywgNzMsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCisgICAgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAKKyAgICAxOTcsIDcwLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIAorICAgIDIxNywgNzAsIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgCisgICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIAorICAgIDEyOCwgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCA3MCwgNjksIAorICAgIDg1LCA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIDg0LCA3MywgCisgICAgODYsIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAyMTEsIDcwLCAKKyAgICA2OSwgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIDY5LCA3OSwgCisgICAgMjAwLCA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgNzgsIDczLCAKKyAgICA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCA3MCwgNjksIAorICAgIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIDIxMywgCisgICAgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIDY4LCAKKyAgICAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIAorICAgIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgCisgICAgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCA3MCwgNjksIDY1LCA4MiwgMTI4LCAKKyAgICA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgNzAsIAorICAgIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgCisgICAgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDg0LCAKKyAgICA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDE5MywgNzAsIAorICAgIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgMjAxLCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgNzAsIAorICAgIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIDEyOCwgCisgICAgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDcwLCA2NSwgNzYsIDc2LCAKKyAgICA2OSwgMjA2LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIAorICAgIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgCisgICAgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCAKKyAgICA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCAKKyAgICA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAKKyAgICAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIAorICAgIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgCisgICAgNjksIDg5LCA2NiwgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCAKKyAgICA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCA4NCwgCisgICAgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIDg4LCAKKyAgICA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIAorICAgIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCAKKyAgICA3OCwgMjEyLCA2OSwgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCAKKyAgICA4OCwgNzMsIDgzLCA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAorICAgIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIAorICAgIDEyOCwgNjksIDg4LCA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgCisgICAgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgODUsIDgyLCAKKyAgICA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgCisgICAgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgODIsIAorICAgIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgNjksIAorICAgIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCA2OSwgCisgICAgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIDY5LCAKKyAgICA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgODksIAorICAgIDEyOCwgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIDEyOCwgNjksIDgzLCA4NCwgCisgICAgNzMsIDc3LCA2NSwgODQsIDY5LCA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjksIDgzLCAKKyAgICA3MiwgNjksIDUxLCAxMjgsIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCAxNzgsIDY5LCA4MywgNzIsIAorICAgIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgCisgICAgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgyLCA4MiwgNzksIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAKKyAgICAxOTYsIDY5LCA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAxMjgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCAKKyAgICA2NSwgODMsIDE5NywgNjksIDgxLCA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNjgsIAorICAgIDEyOCwgNjksIDgxLCA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgCisgICAgMTI4LCA2OSwgODEsIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCAKKyAgICA3NiwgNzksIDc4LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIAorICAgIDY5LCA4MCwgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCAKKyAgICA2NSwgMjA2LCA2OSwgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIAorICAgIDc3LCA2NSwgMTI4LCA2OSwgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIAorICAgIDY5LCA3OSwgNzYsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgCiAgICAgNzksIDgwLCA2OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCAKICAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIAogICAgIDQ1LCA0OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgCiAgICAgNzIsIDg1LCA4MywgNzMsIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIAogICAgIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgCi0gICAgODQsIDY5LCAyMTAsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCAKLSAgICA3OCwgMTI4LCA2OSwgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc4LCA3MSwgNzMsIAotICAgIDc4LCA2OSwgMTI4LCA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCA3OCwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA2OSwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIDg1LCA4MiwgMTI4LCAKLSAgICA2OSwgNzgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgCi0gICAgODIsIDY5LCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCAKLSAgICA3OCwgNjUsIDgyLCA4OCwgNzMsIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIAotICAgIDgwLCA4NCwgMjE3LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgCi0gICAgMjExLCA2OSwgNzcsIDY2LCA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIDc3LCAKLSAgICAxMjgsIDY5LCA3NywgNjYsIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgNjYsIAotICAgIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgCi0gICAgODMsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCAKLSAgICA3NiwgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgCi0gICAgNzgsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAyMDYsIDY5LCA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCAKLSAgICA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDE5NSwgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgCi0gICAgODQsIDgyLCA2OSwgODAsIDg0LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCAKLSAgICA4NCwgNzMsIDc1LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NCwgNjksIDY3LCAyMTIsIAotICAgIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIxNywgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDY5LCA2OSwgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCi0gICAgNjksIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKLSAgICA2NSwgMjA0LCA2OSwgNzEsIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIAotICAgIDY1LCAxMjgsIDY5LCA2OSwgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIAotICAgIDY4LCAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgCi0gICAgNjksIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCAKLSAgICA2OSwgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIAotICAgIDc3LCA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgCi0gICAgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCAKLSAgICA0OCwgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIAotICAgIDUyLCA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgCi0gICAgMTI4LCA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgCi0gICAgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIAotICAgIDEyOCwgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIAotICAgIDY5LCA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgCi0gICAgNDksIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCAKLSAgICA0OSwgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIAotICAgIDEyOCwgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2OSwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIAotICAgIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIAotICAgIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgCi0gICAgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgCi0gICAgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIAotICAgIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIAotICAgIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgCi0gICAgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCAKLSAgICA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIAotICAgIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgCi0gICAgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgCi0gICAgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgCi0gICAgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgCi0gICAgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgCi0gICAgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIAotICAgIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAKLSAgICAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCAKLSAgICA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgCi0gICAgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIDcxLCA3OSwgMjA2LCA2OCwgODIsIDY1LCAKLSAgICA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgODMsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIAotICAgIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgCi0gICAgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgMjExLCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCAKLSAgICA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIAotICAgIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgNjgsIDc5LCA4NSwgCi0gICAgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA2OCwgNzksIDg1LCAKLSAgICA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIDY4LCA3OSwgODQsIDg0LCAKLSAgICA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAotICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTAsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUwLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCi0gICAgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MCwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCi0gICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAKLSAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAotICAgIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgCi0gICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgCi0gICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgCi0gICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCAKLSAgICA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAotICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NSwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDEyOCwgNjgsIDc5LCA4NCwgODMsIDEyOCwgNjgsIDc5LCA4NCwgNzYsIAotICAgIDY5LCA4MywgMjExLCA2OCwgNzksIDgyLCA4NSwgMTI4LCA2OCwgNzksIDc5LCA4MiwgMTI4LCA2OCwgNzksIDc5LCA3OCwgCi0gICAgNzEsIDEyOCwgNjgsIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3NywgNjUsIDczLCAyMDYsIDY4LCA3OSwgNzYsIDgwLCAKLSAgICA3MiwgNzMsIDc4LCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA4MywgMTI4LCA2OCwgNzksIDc2LCA3NiwgNjUsIDIxMCwgNjgsIAotICAgIDc5LCA3NiwgNzMsIDg1LCA3NywgMTI4LCA2OCwgNzksIDc1LCA3NywgNjUsIDczLCAxMjgsIDY4LCA3OSwgNzMsIDg0LCAKLSAgICAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIDc5LCA2OCwgNjksIDc1LCAKLSAgICA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIAotICAgIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgNjgsIDc5LCA2NSwgCi0gICAgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgMTI4LCA2OCwgNzYsIAotICAgIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIAotICAgIDEyOCwgNjgsIDc1LCA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIAotICAgIDY4LCA3NCwgNjksIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDc0LCAxMjgsIAotICAgIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTI4LCA2OCwgCi0gICAgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIDEyOCwgNjgsIDczLCAKLSAgICA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgODQsIAotICAgIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDY4LCA3MywgCi0gICAgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgMTI4LCAKLSAgICA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA3NSwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA2NywgNzksIDc4LCA4NCwgCi0gICAgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgNjUsIDgwLCA4MCwgNzksIDczLCAKLSAgICA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3MywgODIsIDcxLCAxOTMsIAotICAgIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDY4LCA3MywgODAsIDg0LCA2OSwgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIAotICAgIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY4LCA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgCi0gICAgNzMsIDc4LCA3MSwgNjYsIDY1LCAyMTIsIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgCi0gICAgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgCi0gICAgNzcsIDczLCA2OCwgNzMsIDE5MywgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCAKLSAgICA3NywgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIAotICAgIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgCi0gICAgNjUsIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAKLSAgICAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgMjA2LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCA3MywgNzAsIDg0LCAKLSAgICA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIAotICAgIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCA3MywgNjksIDgzLCAKLSAgICAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIDczLCA3MCwgNzAsIAotICAgIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgCi0gICAgNjYsIDEyOCwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAKLSAgICAyMDEsIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCAKLSAgICA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIAotICAgIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgCi0gICAgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgNzYsIDEyOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCAKLSAgICA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCAKLSAgICA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCAKLSAgICA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIAotICAgIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgCi0gICAgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCAKLSAgICA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIAotICAgIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIAorICAgIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDgxLCAxMjgsIDY5LCA3OCwgCisgICAgNzksIDIxMSwgNjksIDc4LCA3OCwgMTI4LCA2OSwgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIAorICAgIDY1LCA4NiwgNzksIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgCisgICAgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgMTk5LCAKKyAgICA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCA3OSwgNzgsIAorICAgIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgMTk1LCA2OSwgCisgICAgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDY2LCA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCAKKyAgICA2OSwgNzcsIDY2LCA3NiwgNjksIDc3LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgCisgICAgNzgsIDg0LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDc2LCA4NCwgMTI4LCAKKyAgICA2OSwgNzYsIDc2LCA3MywgODAsIDg0LCA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIAorICAgIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgCisgICAgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCAKKyAgICA2OSwgODYsIDY5LCAyMDYsIDY5LCA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIAorICAgIDc4LCAyMTIsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgCisgICAgNzMsIDE5NSwgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIDgyLCA2OSwgODAsIDg0LCAKKyAgICA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgNzMsIDc1LCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NCwgNjksIDY3LCAyMTIsIDY5LCA3MywgODMsIDEyOCwgNjksIAorICAgIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIxNywgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgCisgICAgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAxMjgsIDY5LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgMjA2LCA2OSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNjksIDEyOCwgNjksIDcyLCA4NywgCisgICAgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDczLCAKKyAgICA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgNzUsIAorICAgIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCisgICAgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIAorICAgIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgCisgICAgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCAKKyAgICA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIAorICAgIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgCisgICAgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCAKKyAgICA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIAorICAgIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIAorICAgIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgCisgICAgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIAorICAgIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIAorICAgIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCAKKyAgICA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIAorICAgIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIDY4LCA5MCwgNzksIDEyOCwgNjgsIAorICAgIDkwLCA3NCwgNjksIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDY1LCA2NSwgMTI4LCA2OCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgMjE4LCA2OCwgODksIDc5LCAxMjgsIAorICAgIDY4LCA4OSwgMjA3LCA2OCwgODksIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4NywgNzksIDEyOCwgNjgsIAorICAgIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgCisgICAgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAKKyAgICAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgCisgICAgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgCisgICAgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDY2LCA1MCwgMTI4LCA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgCisgICAgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgCisgICAgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKKyAgICA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDY4LCA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIAorICAgIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgODYsIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgCisgICAgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCAKKyAgICA4MiwgNjUsIDc3LCAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIAorICAgIDY1LCA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgCisgICAgNjUsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIAorICAgIDE5MywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgCisgICAgNjgsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCAKKyAgICA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgCisgICAgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAorICAgIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIAorICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIAorICAgIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAorICAgIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAorICAgIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAorICAgIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCisgICAgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCisgICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCAKKyAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgCisgICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKKyAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIAorICAgIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIAorICAgIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAorICAgIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUwLCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUwLCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCAxMjgsIDY4LCA3OSwgODQsIDc2LCA2OSwgODMsIDIxMSwgNjgsIDc5LCA4MiwgODUsIDEyOCwgNjgsIDc5LCA3OSwgCisgICAgODIsIDEyOCwgNjgsIDc5LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCAKKyAgICA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIAorICAgIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgCisgICAgMTI4LCA2OCwgNzksIDczLCA4NCwgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIAorICAgIDY4LCA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgCisgICAgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIAorICAgIDY5LCAxOTcsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCAKKyAgICA3NiwgODUsIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCAKKyAgICA2OCwgNzYsIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCAKKyAgICA2OCwgNzUsIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIAorICAgIDc0LCA2OSwgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgCisgICAgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCAKKyAgICA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIDczLCA4NiwgNzMsIAorICAgIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgODQsIDg0LCAKKyAgICAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIAorICAgIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgCisgICAgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCAKKyAgICA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgNjgsIDczLCA4MywgNzMsIAorICAgIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgCisgICAgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIDc5LCA3MywgNzgsIDg0LCAKKyAgICA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgMTkzLCA2OCwgNzMsIAorICAgIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgCisgICAgNzMsIDgwLCA4NCwgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCAKKyAgICA3OCwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIAorICAgIDY2LCA2NSwgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgCisgICAgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgCisgICAgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIAorICAgIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgCisgICAgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIAorICAgIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgCisgICAgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCAKKyAgICA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIAorICAgIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgCisgICAgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCAKKyAgICA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgCisgICAgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCAKKyAgICA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCAKKyAgICA3MywgNjUsIDg0LCA3OSwgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIAorICAgIDY1LCA4MywgODQsIDc5LCA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgCisgICAgNzcsIDc5LCA3OCwgNjgsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCAKKyAgICA2OSwgMjEwLCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIAorICAgIDczLCA3NSwgMTkzLCA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgCisgICAgNjUsIDc2LCAxMjgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCAKKyAgICA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIAorICAgIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgCisgICAgNzksIDEyOCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgCisgICAgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCAKKyAgICA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIAorICAgIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgCisgICAgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCAKICAgICA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjExLCA2OCwgNjksIAogICAgIDg4LCA3MywgNjUsIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCA3NiwgNzksIDgwLCA3NywgCiAgICAgNjksIDc4LCA4NCwgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgMjAzLCA2OCwgNjksIDgzLCAKQEAgLTM4NzksMTYxICs0MDQwLDE2NCBAQAogICAgIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAKICAgICAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCAKICAgICA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIAotICAgIDE5NCwgNjgsIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NiwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgNjUsIDg0LCAxOTcsIDY4LCAKLSAgICA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MiwgNjksIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIAotICAgIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgCi0gICAgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCAKLSAgICA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIAotICAgIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCA2OCwgNjUsIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgCi0gICAgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCAKLSAgICA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgNjksIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIAotICAgIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAxMjgsIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgCi0gICAgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCAKLSAgICA3NywgODAsIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIAotICAgIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAKLSAgICAxOTMsIDY4LCA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNjUsIAotICAgIDc2LCA2OSwgODQsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDIxMiwgNjgsIDY1LCA3NiwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgCi0gICAgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAyMDAsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMTI4LCAKLSAgICA2OCwgNjUsIDczLCA4MiwgMTI4LCA2OCwgNjUsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIAotICAgIDgzLCA3MiwgNDUsIDUwLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgCi0gICAgODMsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgNzEsIDY5LCA4MywgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIAotICAgIDcxLCA2NSwgMjE4LCA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgCi0gICAgODMsIDg1LCAxMjgsIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCAKLSAgICA0OCwgNTQsIDU1LCA3MSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDU1LCA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1MywgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIAotICAgIDU0LCA1MCwgMTI4LCA2OCwgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgCi0gICAgMTI4LCA2OCwgNDgsIDUzLCA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA1MywgMTI4LCA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNTEsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDgsIDcxLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNDgsIDY4LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgCi0gICAgNTIsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCAKLSAgICA1NCwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNjgsIDQ4LCA1MiwgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIAotICAgIDQ4LCA1MiwgNDgsIDEyOCwgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTEsIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCAKLSAgICA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA2OCwgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MCwgNTEsIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjgsIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjgsIDQ4LCA0OSwgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgNjgsIDQ4LCA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDY4LCA0OCwgNDgsIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDY3LCA4OSwgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIAotICAgIDgyLCA2OSwgNzgsIDY1LCA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgCi0gICAgNjcsIDg5LCA4MCwgNjksIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCAKLSAgICA4MiwgNzMsIDY3LCA3MywgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIAotICAgIDEyOCwgNjcsIDg5LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIAotICAgIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgCi0gICAgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAKLSAgICAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIAotICAgIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIDgyLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgCi0gICAgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCAKLSAgICA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgMTI4LCAKLSAgICA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCAKLSAgICA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIAotICAgIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDEyOCwgNjcsIDgyLCA4OSwgCi0gICAgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCAKLSAgICA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIAotICAgIDY2LCA3NiwgNjksIDQ1LCA1MywgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgCi0gICAgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIAotICAgIDQ1LCA1MCwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAKLSAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCAKLSAgICA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIAotICAgIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgCi0gICAgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCAKLSAgICA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCAKLSAgICA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIAotICAgIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIAotICAgIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgCi0gICAgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIAotICAgIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgCi0gICAgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCAKLSAgICA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCAKLSAgICA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgwLCA4OSwgODIsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgCi0gICAgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCAKLSAgICA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIAotICAgIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgCi0gICAgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIAotICAgIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgCi0gICAgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNjksIAotICAgIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIAotICAgIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgCi0gICAgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIAotICAgIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgCi0gICAgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgNjksIDY3LCAKLSAgICA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIAotICAgIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIDIxMiwgNjcsIDc5LCAKLSAgICA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA3OSwgCi0gICAgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCAKLSAgICA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIAotICAgIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgCi0gICAgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgCi0gICAgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCAKLSAgICA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIAotICAgIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgCi0gICAgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAKLSAgICAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIAotICAgIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzksIDEyOCwgNjcsIAotICAgIDc3LCAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIAotICAgIDY3LCA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgCi0gICAgODUsIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCAKLSAgICA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIAotICAgIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgCi0gICAgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKLSAgICA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIAotICAgIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgCi0gICAgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCAKLSAgICA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIAotICAgIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgCi0gICAgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODcsIDEyOCwgNjcsIDc2LCAKLSAgICA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgMjEwLCA2NywgNzYsIDY1LCA3OCwgCi0gICAgMTI4LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCA4NiwgCi0gICAgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAKLSAgICAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCA4OCwgCi0gICAgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIAotICAgIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgCi0gICAgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIDY3LCA3MywgNjksIDg1LCAKLSAgICA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIAotICAgIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCA2OSwgODAsIDEyOCwgNjcsIAotICAgIDczLCA2OSwgMTI4LCA2NywgNzMsIDEyOCwgNjcsIDcyLCA4OSwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODQsIDEyOCwgNjcsIAotICAgIDcyLCA4OSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODksIDgyLCAxMjgsIDY3LCA3MiwgODksIDgwLCAxMjgsIDY3LCA3MiwgCi0gICAgODUsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgNjcsIDcyLCAxMjgsIDY3LCAKLSAgICA3MiwgODUsIDgyLCAxMjgsIDY3LCA3MiwgODUsIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4OCwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA3OSwgODQsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCAxMjgsIDY3LCA3MiwgCi0gICAgODUsIDc2LCA2NSwgMTI4LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA3MiwgODIsIDg5LCA4MywgNjUsIDc4LCA4NCwgNzIsIDY5LCAKLSAgICA3NywgODUsIDc3LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIAotICAgIDc4LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3NywgMTkzLCA2NywgNzIsIDgyLCA3OSwgMTkzLCA2NywgNzIsIDgyLCA3MywgCi0gICAgODYsIDczLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgODQsIDc3LCA2NSwgODMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCAKLSAgICA4NCwgNzcsIDY1LCAyMTEsIDY3LCA3MiwgNzksIDg4LCAxMjgsIDY3LCA3MiwgNzksIDg0LCAxMjgsIDY3LCA3MiwgNzksIAotICAgIDgyLCA2OSwgODYsIDc3LCAxOTMsIDY3LCA3MiwgNzksIDgwLCAxMjgsIDY3LCA3MiwgNzksIDc1LCA2OSwgMTI4LCA2NywgCi0gICAgNzIsIDc5LCA2OSwgMTI4LCA2NywgNzIsIDc5LCA2NywgNzksIDc2LCA2NSwgODQsIDE5NywgNjcsIDcyLCA3OSwgNjUsIAorICAgIDY3LCA4MywgMTI4LCA2OCwgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIAorICAgIDQ5LCAxMjgsIDY4LCAxOTQsIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIAorICAgIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgCisgICAgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIAorICAgIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCAKKyAgICA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIAorICAgIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAKKyAgICAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCAKKyAgICA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAorICAgIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCAKKyAgICA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgCisgICAgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCAKKyAgICA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCAKKyAgICA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIAorICAgIDY1LCA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAKKyAgICAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIAorICAgIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgCisgICAgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCA4MywgODUsIDEyOCwgCisgICAgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIAorICAgIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIDEyOCwgNjgsIDQ4LCA1NCwgCisgICAgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIDY4LCA0OCwgNTQsIDUzLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgNTQsIDUwLCAxMjgsIDY4LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAxMjgsIDY4LCA0OCwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCA0OCwgNTMsIDUzLCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIDUzLCA1MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgNDksIDEyOCwgNjgsIDQ4LCAKKyAgICA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDY1LCAxMjgsIAorICAgIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2OCwgCisgICAgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgMTI4LCA2OCwgNDgsIDUyLCAKKyAgICA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgNTAsIDU3LCAxMjgsIDY4LCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCA2OCwgNDgsIDUwLCA1MSwgCisgICAgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIDUwLCA0OCwgMTI4LCA2OCwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgMTI4LCA2OCwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCA0OCwgMTI4LCA2OCwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDEyOCwgNjgsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDg5LCAKKyAgICA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgODIsIDY5LCA3OCwgNjUsIAorICAgIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCA2NywgODksIDgwLCA2OSwgCisgICAgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIDgyLCA3MywgNjcsIDczLCAKKyAgICA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODksIAorICAgIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIAorICAgIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgCisgICAgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCAKKyAgICA2OCwgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIAorICAgIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgCisgICAgODMsIDczLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIAorICAgIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgMTI4LCA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgCisgICAgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgCisgICAgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCAKKyAgICA3NiwgMjA3LCA2NywgODUsIDEyOCwgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCAKKyAgICA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUzLCAKKyAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIAorICAgIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCA4MiwgCisgICAgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIAorICAgIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgCisgICAgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCAKKyAgICA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIAorICAgIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgCisgICAgNjksIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAKKyAgICAyMTIsIDY3LCA4MiwgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIAorICAgIDY5LCA2NSwgNzcsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgCisgICAgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgCisgICAgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCAKKyAgICA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIAorICAgIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgCisgICAgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAKKyAgICAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIAorICAgIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAorICAgIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgCisgICAgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCAKKyAgICA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgCisgICAgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCAKKyAgICA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIAorICAgIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgCisgICAgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAorICAgIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgCisgICAgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIAorICAgIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgCisgICAgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIAorICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgCisgICAgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAKKyAgICA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgCisgICAgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCAKKyAgICA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIAorICAgIDc2LCA4NSwgNzcsIDc4LCAxMjgsIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgCisgICAgNzksIDIwNiwgNjcsIDc5LCA3NiwgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNjksIDc4LCA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCAKKyAgICA2NywgNzksIDY3LCA3NSwgODQsIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDY1LCAxMjgsIDY3LCA3OSwgMTI4LCA2NywgNzcsIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCAKKyAgICA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIAorICAgIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgCisgICAgNzksIDg1LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCAKKyAgICA2NywgNzYsIDc5LCA4NCwgNzIsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIAorICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgCisgICAgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCAKKyAgICA3MywgODMsIDEyOCwgNjcsIDc2LCA3MywgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgCisgICAgODMsIDEyOCwgNjcsIDc2LCA3MywgNzAsIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCAKKyAgICA3MCwgNDUsIDUwLCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIAorICAgIDc2LCA2OSwgMTk4LCA2NywgNzYsIDY5LCA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgCisgICAgNzYsIDY1LCA4NywgMTI4LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAKKyAgICAyMTAsIDY3LCA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCAKKyAgICA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIAorICAgIDgwLCAxOTcsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgCisgICAgNzcsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIAorICAgIDczLCA4MiwgNjcsIDc2LCA2OSwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgCisgICAgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgCisgICAgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIAorICAgIDczLCA2OSwgODUsIDY3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA2NywgNzMsIDY5LCA4NSwgMTk1LCA2NywgNzMsIDY5LCA4NCwgMTI4LCA2NywgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA2NywgNzMsIDY5LCAxMjgsIDY3LCA3MiwgODksIDg4LCAxMjgsIDY3LCA3MiwgODksIDg0LCAxMjgsIAorICAgIDY3LCA3MiwgODksIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgMTI4LCA2NywgNzIsIDg5LCA4MCwgMTI4LCA2NywgCisgICAgNzIsIDg1LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDY3LCA3MiwgMTI4LCAKKyAgICA2NywgNzIsIDg1LCA4MiwgMTI4LCA2NywgNzIsIDg1LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODgsIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgNzksIDg0LCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgMTI4LCA2NywgCisgICAgNzIsIDg1LCA3NiwgNjUsIDEyOCwgNjcsIDcyLCA4NSwgMTI4LCA2NywgNzIsIDgyLCA4OSwgODMsIDY1LCA3OCwgODQsIDcyLCAKKyAgICA2OSwgNzcsIDg1LCA3NywgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIAorICAgIDc5LCA3OCwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzcsIDE5MywgNjcsIDcyLCA4MiwgNzksIDE5MywgNjcsIDcyLCA4MiwgCisgICAgNzMsIDg2LCA3MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIDg0LCA3NywgNjUsIDgzLCAxMjgsIDY3LCA3MiwgODIsIDczLCAKKyAgICA4MywgODQsIDc3LCA2NSwgMjExLCA2NywgNzIsIDc5LCA4OCwgMTI4LCA2NywgNzIsIDc5LCA4NCwgMTI4LCA2NywgNzIsIAorICAgIDc5LCA4MiwgNjksIDg2LCA3NywgMTkzLCA2NywgNzIsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDc5LCA3NSwgNjksIDEyOCwgCisgICAgNjcsIDcyLCA3OSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjcsIDc5LCA3NiwgNjUsIDg0LCAxOTcsIDY3LCA3MiwgNzksIDY1LCAKICAgICAxMjgsIDY3LCA3MiwgMjA3LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIAogICAgIDczLCA3OSwgODMsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCAKICAgICA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIApAQCAtNDA1MSw5MDc1ICs0MjE1LDk2MDggQEAKICAgICAyMTEsIDY3LCA3MiwgNjksIDgyLCA4MiwgMjE3LCA2NywgNzIsIDY5LCA4MiwgODIsIDczLCA2OSwgODMsIDEyOCwgNjcsIAogICAgIDcyLCA2OSwgODEsIDg1LCA2OSwgODIsIDY5LCAxOTYsIDY3LCA3MiwgNjksIDgwLCAxMjgsIDY3LCA3MiwgNjksIDIwNiwgCiAgICAgNjcsIDcyLCA2OSwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCAKLSAgICA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgCi0gICAgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgCi0gICAgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIAotICAgIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgCi0gICAgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCAKLSAgICA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIAotICAgIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgCi0gICAgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIDY3LCAKLSAgICA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCAKLSAgICA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIAotICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCA2NywgCi0gICAgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIDY5LCAKLSAgICA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIAotICAgIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCA2NywgCi0gICAgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIDY5LCAKLSAgICA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgMTI4LCAKLSAgICA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIDY3LCAKLSAgICA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCisgICAgNzIsIDY5LCA3MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjcsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCAKKyAgICA2NywgNzIsIDY1LCA4OCwgMTI4LCA2NywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIAorICAgIDg0LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgCisgICAgNjcsIDcyLCA2NSwgODIsIDIxMiwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCAKKyAgICA3OSwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIAorICAgIDY3LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzUsIDc5LCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3MywgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgCisgICAgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCAKKyAgICA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIAorICAgIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgCisgICAgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIAorICAgIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCAKKyAgICA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIAorICAgIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCA2NywgCisgICAgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCAxMjgsIDY3LCAKKyAgICA2OSwgNzYsIDgzLCA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNjksIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDY5LCAKKyAgICA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAxOTMsIAorICAgIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCA2NywgCisgICAgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIDc5LCAKKyAgICAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKKyAgICA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgNjcsIAorICAgIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDEyOCwgCisgICAgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjksIDY5LCAKICAgICAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgMTI4LCAKLSAgICA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgCi0gICAgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCAKLSAgICA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCA2NSwgCi0gICAgMTI4LCA2NywgNjUsIDg0LCAxMjgsIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgCi0gICAgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgMTI4LCA2NywgNjUsIDgyLCAyMTEsIDY3LCAKLSAgICA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIAotICAgIDgyLCAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgCi0gICAgNjUsIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCAKLSAgICA4MiwgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIAotICAgIDgzLCAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIAotICAgIDIxMCwgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgCi0gICAgODIsIDczLCA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAKLSAgICA3NiwgMTI4LCA2NywgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgCi0gICAgMTk5LCA2NywgNjUsIDc4LCA2OCwgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCAxOTMsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIAotICAgIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgCi0gICAgNjUsIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgODIsIDY1LCAxMjgsIAotICAgIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA2OSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgCi0gICAgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCAKLSAgICA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIAotICAgIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAKLSAgICAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgCi0gICAgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAKLSAgICAyMDEsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgNzgsIDQ1LCA4NSwgNzUsIDgyLCA2NSwgCi0gICAgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAxMjgsIDY2LCA4NywgNjksIDY5LCAKLSAgICAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCA3NywgNzMsIDgzLCA3MiwgMTI4LCAKLSAgICA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIAotICAgIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDIxMSwgNjYsIDg1LCA4MiwgCi0gICAgMjEzLCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgODAsIDIxNywgCi0gICAgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCA4MywgNjksIDg5LCAKLSAgICA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDY2LCA4NSwgNzYsIAotICAgIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgODUsIDc1LCA4OSwgCi0gICAgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NiwgODUsIAotICAgIDcxLCAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCA3NiwgNjksIDEyOCwgCi0gICAgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIDY2LCAKLSAgICA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA2NiwgODIsIDg1LCA4MywgMjAwLCA2NiwgODIsIAotICAgIDc5LCA3OCwgOTAsIDY5LCAxMjgsIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCA2NSwgMTk2LCA2NiwgCi0gICAgODIsIDczLCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDY2LCAKLSAgICA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAxOTcsIDY2LCA4MiwgNzMsIAotICAgIDY4LCAxOTcsIDY2LCA4MiwgNzMsIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIDgzLCAxMjgsIDY2LCA4MiwgCi0gICAgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDE5NywgNjYsIDgyLCAKLSAgICA2OSwgNjUsIDg0LCAyMDAsIDY2LCA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgNjYsIAotICAgIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAKLSAgICAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAyMDAsIDY2LCA4MiwgNjUsIAotICAgIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCA2OSwgMTk2LCA2NiwgODIsIDY1LCA2NywgCi0gICAgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgODEsIDEyOCwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgCi0gICAgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCAKLSAgICA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAxMjgsIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCA3OSwgODQsIAotICAgIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAKLSAgICAxOTcsIDY2LCA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIAotICAgIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgCi0gICAgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCAKLSAgICA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgCi0gICAgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIDc3LCAKLSAgICA2NiwgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCAKLSAgICA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCAKLSAgICA2NiwgNzYsIDc5LCA4NywgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIAotICAgIDc2LCA3OSwgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgCi0gICAgNzYsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCAKLSAgICA2NiwgNzYsIDY1LCA2OCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIAotICAgIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCAKLSAgICA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIAotICAgIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAKLSAgICAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIAotICAgIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgCi0gICAgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCAKLSAgICA3MywgODIsIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIAotICAgIDg1LCA3NiwgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgCi0gICAgNjYsIDczLCA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCAKLSAgICA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIAotICAgIDY2LCA3MywgMTk5LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgCi0gICAgNzMsIDY3LCA4OSwgNjcsIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCA4MywgMTI4LCAKLSAgICA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIDY2LCA3MywgNjYsIAotICAgIDc2LCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgNzIsIDg1LCAxMjgsIAotICAgIDY2LCA3MiwgNzksIDc5LCAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgNzIsIDY5LCA4NCwgCi0gICAgNzIsIDEyOCwgNjYsIDcyLCA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCA4NCwgODQsIDczLCAKLSAgICA4MCwgODIsIDc5LCA3NiwgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgODksIAotICAgIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgNjksIDg0LCAKLSAgICA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgNjksIDgzLCAKLSAgICA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAyMTAsIAotICAgIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgCi0gICAgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAKLSAgICAyMDYsIDY2LCA2OSwgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIDIxMiwgNjYsIDY5LCA3NiwgNzksIDIxNSwgNjYsIDY5LCAKLSAgICA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIAotICAgIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgCi0gICAgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgCi0gICAgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIAotICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgCi0gICAgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCAKLSAgICA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2NywgNjUsIAotICAgIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIAotICAgIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgCi0gICAgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIAotICAgIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgCi0gICAgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCAKLSAgICA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgCi0gICAgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCAKLSAgICA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIAotICAgIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCA2NSwgMTI4LCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAKLSAgICAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIAotICAgIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgCi0gICAgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIAotICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgCi0gICAgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCAKLSAgICA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIAotICAgIDY2LCA2NSwgMjEwLCA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAKLSAgICAxOTcsIDY2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIAotICAgIDY2LCA3OSwgNzksIDgzLCAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCAKLSAgICA3NSwgNjksIDE5NiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIAotICAgIDY2LCA2NSwgNzYsIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzMsIDc3LCA2NSwgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCAKLSAgICA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIAotICAgIDE5NywgNjYsIDY1LCA3MSwgNjUsIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIAotICAgIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIDY2LCA2NSwgNjgsIDEyOCwgNjYsIDY1LCA2NywgCi0gICAgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgNjUsIDY3LCAKLSAgICA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCA2NiwgNjUsIAotICAgIDY3LCA3NSwgNzIsIDY1LCA3OCwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgCi0gICAgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgCi0gICAgNjYsIDY1LCA2NSwgODIsIDY5LCA4MiwgODUsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgNTcsIAotICAgIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgNjYsIAotICAgIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCA1MCwgCi0gICAgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCA2NiwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIDUzLCAKLSAgICAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIDE3NiwgCi0gICAgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIDUxLCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIDUwLCAKLSAgICA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgMTgxLCAKLSAgICA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgNDksIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCA1MCwgCi0gICAgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIDU3LCAKLSAgICAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIDY2LCAKLSAgICA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgNDgsIAotICAgIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgNjYsIAotICAgIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCA1NiwgCi0gICAgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIDEyOCwgCi0gICAgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIDY2LCAKLSAgICA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgNTQsIAotICAgIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAxMjgsIAotICAgIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCA1NCwgCi0gICAgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCA0OSwgCi0gICAgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIDEyOCwgCi0gICAgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIDQ5LCAKLSAgICA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIDY2LCAKLSAgICA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIDY2LCAKLSAgICA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIDY2LCAKLSAgICA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIDQ5LCAKLSAgICA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIDQ5LCAKLSAgICA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgNTUsIAotICAgIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgNjYsIAotICAgIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAxODAsIAotICAgIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgNjYsIAotICAgIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAxODEsIAotICAgIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCA1NiwgCi0gICAgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCA1NSwgCi0gICAgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAxNzgsIAotICAgIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgNjYsIAotICAgIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgNjYsIAotICAgIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgNjYsIAotICAgIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjYsIAotICAgIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgNDgsIAotICAgIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgNDgsIAotICAgIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgNDgsIAotICAgIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgNTEsIAotICAgIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgNTIsIAotICAgIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgMTc2LCAKLSAgICA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIDY2LCAKLSAgICA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY2LCAKLSAgICA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgMTI4LCAKLSAgICA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIDY2LCAKLSAgICA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIDQ4LCAKLSAgICA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIDY2LCAKLSAgICA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgMTgyLCAKLSAgICA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgNDgsIAotICAgIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgNjYsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzcsIAotICAgIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2OSwgMjEwLCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIAotICAgIDY1LCA4OCwgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgCi0gICAgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIAotICAgIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgCi0gICAgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAotICAgIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgCi0gICAgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCAKLSAgICA2NSwgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIAotICAgIDcyLCA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgCi0gICAgNjUsIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCAKLSAgICA4MiwgMTkzLCA2NSwgODMsIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIAotICAgIDg0LCA4MiwgNzksIDc4LCA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCAKLSAgICA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIAotICAgIDgyLCA3MywgODMsIDc3LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgCi0gICAgODIsIDczLCA4MywgNzUsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCAKLSAgICA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIAotICAgIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgCi0gICAgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCAKLSAgICA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCA4MywgMTI4LCA2NSwgODMsIDcyLCA1NywgCi0gICAgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCAKLSAgICA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIAotICAgIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgCi0gICAgODIsIDg0LCA2NSwgNjYsIDE5NywgNjUsIDgyLCA4MywgNjksIDc5LCA4MywgMTI4LCA2NSwgODIsIDgzLCA2OSwgNzksIAotICAgIDIxMSwgNjUsIDgyLCA4MywgNjksIDc4LCA3MywgNjcsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCA4MywgMTI4LCA2NSwgCi0gICAgODIsIDgyLCA3OSwgODcsIDIxMSwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA2NSwgODIsIDgyLCAKLSAgICA3OSwgODcsIDcyLCA2OSwgNjUsIDE5NiwgNjUsIDgyLCA4MiwgNzksIDg3LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjUsIAotICAgIDgyLCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgODksIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgCi0gICAgNzMsIDY1LCA4NCwgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCA3OCwgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIAotICAgIDE5MywgNjUsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIDcwLCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgCi0gICAgNzksIDg1LCA3OCwgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgODIsIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCAKLSAgICA4MiwgMjA1LCA2NSwgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCA3NSwgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgCi0gICAgODIsIDY1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCAKLSAgICA2NSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgCi0gICAgNjksIDg0LCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCAKLSAgICA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCA2NSwgODIsIDY1LCA3NywgNjUsIAotICAgIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgODUsIDEyOCwgCi0gICAgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDc5LCAxMjgsIDY1LCAKLSAgICA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAxMjgsIDY1LCA4MiwgNjUsIAotICAgIDY4LCAxMjgsIDY1LCA4MiwgNjUsIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIDczLCA3OCwgNjgsIDczLCAKLSAgICAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIAotICAgIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAKLSAgICAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIAotICAgIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCAKLSAgICA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIAotICAgIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDgzLCAKLSAgICAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgODAsIAotICAgIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4MywgCi0gICAgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIwMSwgNjUsIDgwLCAKLSAgICA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAxOTMsIDY1LCA4MCwgNzYsIAotICAgIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgCi0gICAgMjA3LCA2NSwgODAsIDY1LCA4MiwgODQsIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzgsIDg1LCAKLSAgICA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIAotICAgIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgCi0gICAgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgCi0gICAgNzMsIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCAKLSAgICA3NywgNzksIDc4LCA3MywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgCi0gICAgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgODQsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgCi0gICAgODcsIDczLCA4MywgNjksIDQ1LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIAotICAgIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgCi0gICAgNjksIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIAotICAgIDc4LCAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzIsIDg1LCAKLSAgICAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIAotICAgIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgCi0gICAgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCAKLSAgICA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgCi0gICAgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAKLSAgICAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIAotICAgIDc3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgCi0gICAgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzcsIDY2LCA4NSwgNzYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NywgNjYsIAotICAgIDE5MywgNjUsIDc3LCA2NSwgODIsIDEyOCwgNjUsIDc3LCA2NSwgMjEwLCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgCi0gICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIDEyOCwgNjUsIDc2LCA4NiwgNjksIDc5LCAKLSAgICA3NiwgNjUsIDIxMCwgNjUsIDc2LCA4NSwgNzcsIDEyOCwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgODYsIAotICAgIDE5NywgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgCi0gICAgNjUsIDg0LCAxOTcsIDY1LCA3NiwgODQsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDcyLCA2NSwgMTI4LCA2NSwgNzYsIDgwLCAKLSAgICA3MiwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIAotICAgIDY1LCA2NSwgNzgsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDEyOCwgNjUsIDc2LCA3NywgNzksIDgzLCAyMTIsIDY1LCA3NiwgCi0gICAgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCAKLSAgICA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIAotICAgIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgCi0gICAgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCAKLSAgICA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIAotICAgIDY2LCA3MywgNjcsIDEyOCwgNjUsIDc2LCA2OSwgNzAsIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCA2OSwgMTI4LCA2NSwgCi0gICAgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCA2NSwgODAsIDcyLCAxMjgsIDY1LCAKLSAgICA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIDY5LCA4MywgNjksIDc2LCA4MywgCi0gICAgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgNzMsIDc3LCA3MywgMTk1LCAKLSAgICA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCA2NSwgODIsIDE5MywgNjUsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgMjAzLCA2NSwgNzMsIDg0LCA3OSwgCi0gICAgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCAKLSAgICA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIAotICAgIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAKLSAgICAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCAKLSAgICA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgCi0gICAgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCAKLSAgICA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgCi0gICAgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCAKLSAgICA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIAotICAgIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIAotICAgIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAKLSAgICAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgCi0gICAgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIAotICAgIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgCi0gICAgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAotICAgIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgCi0gICAgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCAKLSAgICA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIAotICAgIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgCi0gICAgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIAotICAgIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgCi0gICAgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIAotICAgIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgCi0gICAgMTc4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgCi0gICAgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgCi0gICAgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MywgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NCwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKLSAgICA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OCwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgCi0gICAgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIAotICAgIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCAKLSAgICA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIAotICAgIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIAotICAgIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCAKLSAgICA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIAotICAgIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgCi0gICAgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAKLSAgICAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIAotICAgIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDEyOCwgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgCisgICAgMTI4LCA2NywgNjcsIDY1LCAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDY3LCA2NSwgODgsIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA2NywgNjUsIDg1LCA3NiwgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODUsIAorICAgIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIDY3LCA2NSwgMjEyLCA2NywgNjUsIAorICAgIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgCisgICAgMTI4LCA2NywgNjUsIDgyLCAyMTEsIDY3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCA2NSwgODIsIDgwLCAKKyAgICA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIDY5LCAyMDQsIAorICAgIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgMjAzLCA2NywgCisgICAgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAyMTIsIDY3LCAKKyAgICA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA2NSwgODIsIAorICAgIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCA4MCwgODQsIAorICAgIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIDgwLCA3OSwgCisgICAgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgMTk5LCA2NywgNjUsIDc4LCA2OCwgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAKKyAgICAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCAxOTMsIDY3LCA2NSwgNzgsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgCisgICAgNzgsIDY3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCAKKyAgICA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgNjUsIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgCisgICAgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIAorICAgIDEyOCwgNjcsIDY1LCA3NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIAorICAgIDcyLCAxMjgsIDY3LCA2NSwgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgCisgICAgMTI4LCA2NywgNjUsIDY4LCAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCAKKyAgICA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIDEyOCwgNjcsIAorICAgIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIDY3LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAxMjgsIDY3LCAKKyAgICA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCA0OCwgNDksIAorICAgIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgMTI4LCA2NywgCisgICAgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCA2NywgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIDQ1LCA1MSwgCisgICAgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgMjAxLCA2NiwgCisgICAgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgNzgsIDQ1LCA4NSwgNzUsIAorICAgIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAxMjgsIDY2LCA4NywgCisgICAgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCA3NywgNzMsIDgzLCAKKyAgICA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCAKKyAgICA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDIxMSwgNjYsIAorICAgIDg1LCA4MiwgMjEzLCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgCisgICAgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCAKKyAgICA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgCisgICAgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCAKKyAgICA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgCisgICAgMTk3LCA2NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKKyAgICA3NiwgNjksIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIAorICAgIDY1LCAxNzMsIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA2NiwgODIsIDg1LCA4MywgCisgICAgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCAKKyAgICA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIAorICAgIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAKKyAgICAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIAorICAgIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgCisgICAgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCAKKyAgICA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIAorICAgIDY3LCA3MiwgNzMsIDc4LCAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKKyAgICAyMDAsIDY2LCA4MiwgNjUsIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCA2OSwgCisgICAgMTk2LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgODEsIDEyOCwgCisgICAgNjYsIDgwLCA3MiwgMTI4LCA2NiwgNzksIDg5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgNjYsIDc5LCAKKyAgICA4NywgODQsIDczLCAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAxMjgsIAorICAgIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgODQsIDEyOCwgCisgICAgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgODIsIDIxNywgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDc2LCA3MywgNzEsIAorICAgIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzksIDIwNSwgCisgICAgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIDE5NywgNjYsIDc5LCA4NCwgMjAwLCAKKyAgICA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUxLCAxMjgsIDY2LCA3OSwgODIsIAorICAgIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCA2NiwgNzksIDgwLCA3OSwgNzcsIDc5LCA3MCwgCisgICAgMjA3LCA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIDEyOCwgNjYsIDc5LCA3OSwgNzcsIDY5LCAKKyAgICA4MiwgNjUsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIAorICAgIDc1LCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCA3OSwgNzgsIDY5LCAxMjgsIDY2LCA3OSwgCisgICAgNzcsIDY2LCAxMjgsIDY2LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA3NiwgODQsIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgCisgICAgNzksIDcyLCA2NSwgNzMsIDgyLCA3MywgMTk1LCA2NiwgNzksIDY4LCA4OSwgMTI4LCA2NiwgNzksIDY1LCA4MiwgMTI4LCAKKyAgICA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIAorICAgIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIDY2LCA3NiwgNzksIDc5LCA2OCwgCisgICAgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgNjYsIDc2LCA2OSwgNzgsIDY4LCAKKyAgICA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIAorICAgIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIAorICAgIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCA4NCwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCAKKyAgICA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgCisgICAgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA2OCwgMTI4LCAKKyAgICA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIAorICAgIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgNzgsIDY1LCA4MiwgCisgICAgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAKKyAgICAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCAKKyAgICA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIAorICAgIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgCisgICAgODMsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCAKKyAgICA2NiwgNzMsIDY2LCA3NiwgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIAorICAgIDcyLCA4NSwgMTI4LCA2NiwgNzIsIDc5LCA3OSwgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIAorICAgIDcyLCA2OSwgODQsIDcyLCAxMjgsIDY2LCA3MiwgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgCisgICAgODQsIDg0LCA3MywgODAsIDgyLCA3OSwgNzYsIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgNjUsIAorICAgIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIDg5LCA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIAorICAgIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgCisgICAgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCAKKyAgICA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIAorICAgIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIAorICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAKKyAgICAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCAKKyAgICA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3NiwgMTI4LCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIAorICAgIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgCisgICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCAKKyAgICA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAorICAgIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgCisgICAgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAKKyAgICAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIAorICAgIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgCisgICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgCisgICAgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCAKKyAgICA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgCisgICAgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgCisgICAgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIAorICAgIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgCisgICAgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgCisgICAgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCAKKyAgICA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIAorICAgIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgCisgICAgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCAKKyAgICA2NSwgMTI4LCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIAorICAgIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgCisgICAgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCAKKyAgICA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgCisgICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCAKKyAgICA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAorICAgIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgMTk0LCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgNjYsIDY1LCAyMTAsIAorICAgIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIDE5NywgNjYsIDY1LCA3OCwgCisgICAgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIDc4LCA2NSwgNzgsIDY1LCAKKyAgICAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgODMsIAorICAgIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAxMjgsIDY2LCA2NSwgCisgICAgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKKyAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIDY1LCA3NiwgCisgICAgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgNzcsIDY1LCAKKyAgICA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIAorICAgIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA3MSwgCisgICAgNjUsIDcxLCAxOTcsIDY2LCA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgCisgICAgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAxMjgsIDY2LCAKKyAgICA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIAorICAgIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgCisgICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAxOTYsIDY2LCAKKyAgICA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA2NSwgNjcsIAorICAgIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgNjksIDgyLCA4NSwgCisgICAgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCA1NywgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCA2NiwgNTAsIDUzLCAKKyAgICA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIDUwLCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIDY2LCA1MCwgNTIsIAorICAgIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgNTMsIDEyOCwgNjYsIAorICAgIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgMTc2LCA2NiwgNTAsIAorICAgIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgNTAsIDUwLCA1NiwgCisgICAgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAxODEsIDY2LCA1MCwgCisgICAgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCA0OSwgNTcsIDEyOCwgCisgICAgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIDEyOCwgNjYsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIDUwLCA0OSwgNTAsIAorICAgIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgNTcsIDEyOCwgNjYsIAorICAgIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgNjYsIDUwLCA0OCwgCisgICAgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCA0OCwgNTAsIDEyOCwgCisgICAgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCA2NiwgNDksIDU3LCAKKyAgICA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIDU2LCA1MiwgMTI4LCAKKyAgICA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgMTI4LCA2NiwgNDksIAorICAgIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgNDksIDU1LCA1NSwgCisgICAgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgNjYsIDQ5LCA1NSwgCisgICAgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIDU0LCAxNzgsIDY2LCAKKyAgICA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIDQ5LCA1MywgNTYsIAorICAgIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgMTI4LCA2NiwgNDksIAorICAgIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgNDksIDUzLCAxNzcsIAorICAgIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgNjYsIDQ5LCA1MiwgCisgICAgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgNjYsIDQ5LCA1MSwgCisgICAgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgNjYsIDQ5LCA1MCwgCisgICAgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgNDksIDUwLCAxNzgsIAorICAgIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgNDksIDQ4LCA1NywgCisgICAgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCA1NSwgMjA1LCA2NiwgCisgICAgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCA2NiwgNDksIDQ4LCAKKyAgICA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIDE4MCwgNjYsIDQ5LCAKKyAgICA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCA2NiwgNDgsIDU2LCAKKyAgICA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIDE4MSwgNjYsIDQ4LCAKKyAgICA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIDU2LCAxNzYsIDY2LCAKKyAgICA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIDU1LCAxODIsIDY2LCAKKyAgICA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIDE3OCwgNjYsIDQ4LCAKKyAgICA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCA2NiwgNDgsIDU0LCAKKyAgICAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCA2NiwgNDgsIDU0LCAKKyAgICA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCA2NiwgNDgsIDUzLCAKKyAgICAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NiwgNDgsIDUzLCAKKyAgICAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCA0OCwgNTMsIDE3NywgCisgICAgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCA0OCwgNTIsIDU1LCAKKyAgICAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCA0OCwgNTIsIDE3OSwgCisgICAgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCA1MSwgMTg1LCA2NiwgCisgICAgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCA1MiwgMTI4LCA2NiwgCisgICAgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAxNzYsIDY2LCA0OCwgCisgICAgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgNjYsIDQ4LCA1MCwgCisgICAgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjYsIDQ4LCA1MCwgCisgICAgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAxMjgsIDY2LCA0OCwgCisgICAgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgNjYsIDQ4LCA0OSwgCisgICAgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgNDgsIDQ4LCA1NywgCisgICAgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgNjYsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAxODIsIDY2LCA0OCwgCisgICAgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCA2NiwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIDE3NywgNjUsIDkwLCAKKyAgICA4NSwgMTI4LCA2NSwgODksIDY5LCAyMTAsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCAKKyAgICA2OSwgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCA2OSwgODIsIAorICAgIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgMTI4LCA2NSwgCisgICAgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDg1LCAKKyAgICA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODUsIAorICAgIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCA2NSwgODUsIDgyLCA3MywgCisgICAgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIAorICAgIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIDUwLCAxMjgsIDY1LCA4NSwgCisgICAgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAxMjgsIDY1LCA4NSwgNzEsIDg1LCAKKyAgICA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4NSwgNjksIAorICAgIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgODQsIDg0LCA3MywgMTk1LCA2NSwgCisgICAgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIAorICAgIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAKKyAgICAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIAorICAgIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgCisgICAgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIAorICAgIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgCisgICAgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIAorICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgCisgICAgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCAKKyAgICA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgCisgICAgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCAKKyAgICA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIAorICAgIDgzLCAxMjgsIDY1LCA4MywgNzIsIDU3LCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIDUwLCAxMjgsIDY1LCAKKyAgICA4MiwgODUsIDcyLCA4NSwgNjUsIDEyOCwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAorICAgIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAKKyAgICAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIAorICAgIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgCisgICAgNjUsIDY4LCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgMTk2LCA2NSwgODIsIDgyLCA3OSwgODcsIDQ1LCAKKyAgICA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgODIsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY1LCA4MiwgODIsIDY1LCA4OSwgCisgICAgMTI4LCA2NSwgODIsIDgwLCA2OSwgNzEsIDcxLCA3MywgNjUsIDg0LCAyMDcsIDY1LCA4MiwgNzksIDg1LCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDY1LCA4MiwgNzksIDg1LCA4MiwgMTkzLCA2NSwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODAsIDgyLCA3OSwgNzAsIAorICAgIDczLCA3NiwgNjksIDEyOCwgNjUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDY1LCA4MiwgNzcsIDg5LCAxMjgsIDY1LCA4MiwgCisgICAgNzcsIDc5LCA4NSwgODIsIDEyOCwgNjUsIDgyLCAyMDUsIDY1LCA4MiwgNzYsIDY1LCA4NSwgMTk5LCA2NSwgODIsIDc1LCAKKyAgICA4NCwgNzMsIDc1LCAyMDcsIDY1LCA4MiwgNzUsIDY1LCA2NiwgMTI4LCA2NSwgODIsIDc1LCA2NSwgNjUsIDc4LCA4NSwgCisgICAgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgNjUsIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIAorICAgIDE5MywgNjUsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY1LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA2NSwgCisgICAgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDcxLCA3MywgMTI4LCAKKyAgICA2NSwgODIsIDY5LCA4MCwgNjUsIDEyOCwgNjUsIDgyLCA2OSwgNjUsIDEyOCwgNjUsIDgyLCA2OCwgNzIsIDY1LCA4NiwgNzMsIAorICAgIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA2NywgCisgICAgNzIsIDY1LCA3MywgNzksIDIwNiwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgMTk1LCA2NSwgODIsIDY3LCAyMDAsIDY1LCAKKyAgICA4MiwgNjcsIDEyOCwgNjUsIDgyLCAxOTUsIDY1LCA4MiwgNjUsIDc3LCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjksIAorICAgIDY1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA4NSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA3MywgCisgICAgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgNzksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIAorICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjUsIDEyOCwgNjUsIDgyLCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA2NSwgCisgICAgMTk2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY3LCA0NSwgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCAKKyAgICA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIAorICAgIDY5LCA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgCisgICAgODIsIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCAKKyAgICA3NiwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIAorICAgIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAKKyAgICAyMTEsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgCisgICAgODQsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCAKKyAgICA4NCwgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIAorICAgIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKKyAgICA3OSwgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIAorICAgIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIAorICAgIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgCisgICAgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAKKyAgICAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgCisgICAgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAorICAgIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgCisgICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIAorICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgCisgICAgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCAKKyAgICA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIAorICAgIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKKyAgICA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCAxOTMsIAorICAgIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCA4MywgODUsIDIxOCwgCisgICAgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIDIwNywgNjUsIDc4LCAKKyAgICA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3OCwgNzgsIAorICAgIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIDEyOCwgNjUsIDc4LCA3MiwgCisgICAgODUsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDY5LCAKKyAgICAxOTYsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCAKKyAgICA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIAorICAgIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgCisgICAgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCAKKyAgICA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzcsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NywgNjYsIDE5MywgNjUsIDc3LCA2NSwgODIsIDEyOCwgNjUsIDc3LCA2NSwgCisgICAgMjEwLCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc3LCA2NSwgNzYsIDcxLCAKKyAgICA2NSwgNzcsIDEyOCwgNjUsIDc2LCA4NiwgNjksIDc5LCA3NiwgNjUsIDIxMCwgNjUsIDc2LCA4NSwgNzcsIDEyOCwgNjUsIAorICAgIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgODYsIDE5NywgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDY1LCA3NiwgODQsIDY1LCAxMjgsIAorICAgIDY1LCA3NiwgODAsIDcyLCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgCisgICAgNzgsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA2NSwgNzgsIDE5MywgNjUsIDc2LCA4MCwgNjUsIAorICAgIDEyOCwgNjUsIDc2LCA3NywgNzksIDgzLCAyMTIsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgCisgICAgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCAKKyAgICA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIAorICAgIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgCisgICAgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgCisgICAgNzYsIDY5LCA4MiwgODQsIDEyOCwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAKKyAgICAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIDc2LCA2NSwgODksIAorICAgIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDQ1LCA3NiwgCisgICAgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIDc1LCA2NSwgNjYsIAorICAgIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgNjUsIDc1LCA2NiwgCisgICAgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCA3MywgODksIDY1LCAKKyAgICA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIDIwNiwgNjUsIAorICAgIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgCisgICAgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCAKKyAgICA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgCisgICAgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgCisgICAgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAKKyAgICAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIAorICAgIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2OSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCAKKyAgICA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIAorICAgIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgCisgICAgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAKKyAgICAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIAorICAgIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgCisgICAgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCAKKyAgICA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIAorICAgIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgCisgICAgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIAorICAgIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgCisgICAgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCAKKyAgICA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgCisgICAgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCAKKyAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIAorICAgIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgCisgICAgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIAorICAgIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgCisgICAgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCAKKyAgICA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjUsIAorICAgIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgNjYsIAorICAgIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OSwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUyLCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDksIAorICAgIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MywgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIAorICAgIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgCisgICAgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgCisgICAgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIAorICAgIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIAorICAgIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCA1MiwgCisgICAgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAKKyAgICA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIAorICAgIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgCisgICAgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAKKyAgICAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIAorICAgIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgCisgICAgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgCisgICAgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIAorICAgIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBsZXhpY29uX29mZnNldFtdID0gewotICAgIDAsIDAsIDYsIDEwLCAxNSwgMjMsIDI3LCAzNCwgMzksIDQxLCA0NCwgNTIsIDYyLCA2OCwgODEsIDkzLCAxMDIsIDEwOCwgCi0gICAgMTEzLCAxMjEsIDEzMCwgMTM1LCAxNDAsIDE0NCwgMTUwLCAxNTMsIDE1OCwgMTY2LCAxNzMsIDE4MSwgMTg2LCAxOTEsIAotICAgIDE5NCwgMjAwLCAyMDgsIDIxNSwgMjI1LCAyMzIsIDI0MSwgMjQ0LCAyNDcsIDI1MiwgMjU4LCAyNjIsIDI3MSwgMjc4LCAKLSAgICAyODUsIDI5MCwgMjk5LCAzMDcsIDMxMywgMzE5LCAzMjUsIDE0MSwgMzMwLCAzMzEsIDMzNywgMzQ1LCAzNTEsIDM1NywgCi0gICAgMzY1LCAzNzIsIDM3NCwgMzc3LCAzODEsIDM4OCwgMzkwLCAzOTcsIDQwMiwgNDA4LCA0MTAsIDQxNywgNDI1LCA0MjcsIAotICAgIDMxMSwgNDMwLCA0MzIsIDQzNywgNDQyLCA0NDcsIDQ1MywgNDYwLCA0NjksIDQ3OSwgNDg0LCA0ODksIDQ5MywgNTA2LCAKLSAgICA1MTMsIDUxNywgNTI2LCA1MzMsIDU0MCwgNTQzLCA1NDksIDU1MywgNTYzLCA1NzEsIDU3OSwgNTg4LCA1OTYsIDYwNCwgCi0gICAgNjA5LCA2MTcsIDYyNCwgNjM0LCA2NDUsIDY0OSwgNjU0LCA2NTcsIDY2MSwgNjY1LCA2NjYsIDY3MiwgNjc4LCA2ODAsIAotICAgIDY4MywgNjg3LCAzNDQsIDY5MCwgNjk0LCA3MDMsIDcwNiwgNzA5LCA3MTQsIDcxOCwgNzI2LCA3MjksIDczNSwgNzQyLCAKLSAgICA3NDksIDc1OCwgNzY1LCA3NzQsIDc3OSwgNzgzLCA3OTIsIDgwMiwgODExLCA4MTcsIDgyMywgODMwLCA4MzgsIDg0NiwgCi0gICAgODU1LCA4NjMsIDg2NywgODc1LCA4ODAsIDc4MSwgNTExLCA4ODksIDg5MywgODk3LCA5MDQsIDkwOCwgOTE1LCA2ODksIAotICAgIDkxOCwgOTI2LCA5MjksIDkzMywgOTQwLCA5NDQsIDk0OSwgOTU3LCA5NjAsIDE5MiwgOTY2LCA5NzEsIDk4MSwgOTkwLCAKLSAgICA5OTcsIDEwMDQsIDEwMTIsIDEwMjAsIDEwMjYsIDEwMzAsIDEwMzUsIDEwNDAsIDEwNDYsIDEwNTEsIDEwNTQsIDExMSwgCi0gICAgMTA2MCwgMTA2NCwgMTA3MCwgMTA3MywgMTA4NiwgMTA4OSwgMTA5MywgMjIsIDEwOTcsIDExMDIsIDExMDUsIDExMDgsIAotICAgIDExMTQsIDExMjQsIDExMjYsIDExMzIsIDExNDIsIDExNDcsIDExNTYsIDExNjQsIDMyOCwgMTE2NywgMTE3MCwgMTE3NCwgCi0gICAgMTE3OSwgMTE4NSwgMTE5MCwgMTE5NywgMTE5OSwgMTIwNCwgMTIwOSwgMTIxNSwgMTIyMCwgMTIyNSwgMTIyOSwgMTIzNCwgCi0gICAgMTI0MCwgMTI0NSwgMTI1MCwgMTI1NCwgMTI1OSwgMTI2NCwgMTI2OCwgMTI3MywgMTI3OCwgMTI4MywgMTI4OSwgMTI5NSwgCi0gICAgMTMwMSwgMTMwNiwgMTMxMCwgMTMxNSwgMTMyMCwgMTMyNSwgMTMyOSwgMTMzNCwgMTMzOSwgMTM0NCwgMTM0OSwgMTIwMCwgCi0gICAgMTIwNSwgMTIxMCwgMTIxNiwgMTIyMSwgMTM1MywgMTIyNiwgMTM1OSwgMTM2OCwgMTIzMCwgMTM3MiwgMTIzNSwgMTI0MSwgCi0gICAgMTI0NiwgMTM3NiwgMTM4MSwgMTM4NiwgMTM5MCwgMTM5NCwgMTQwMCwgMTQwNCwgMTI1MSwgMTQwNywgMTQxMSwgMTI1NSwgCi0gICAgMTQxNywgMTI2MCwgMTQyMSwgMTQyNSwgMTI2NSwgMTQyOSwgMTQzNCwgMTQzOCwgMTQ0MSwgMTQ0NSwgMTI2OSwgMTI3NCwgCi0gICAgMTQ1MCwgMTI3OSwgMTQ1NiwgMTQ2MiwgMTQ2OCwgMTQ3NCwgMTI4NCwgMTI5NiwgMTMwMiwgMTQ3OCwgMTQ4MiwgMTQ4NiwgCi0gICAgMTQ4OSwgMTMwNywgMTQ5MywgMTQ5NSwgMTUwMCwgMTUwNSwgMTUxMSwgMTUxNiwgMTUyMSwgMTUyNSwgMTUzMCwgMTUzNSwgCi0gICAgMTU0MCwgMTU0NSwgMTU1MSwgMTU1NiwgMTU2MSwgMTU2NywgMTU3MywgMTU3OCwgMTU4MiwgMTU4NywgMTU5MiwgMTU5NywgCi0gICAgMTYwMiwgMTYwNiwgMTYxNCwgMTYxOCwgMTYyMywgMTYyOCwgMTYzMywgMTYzOCwgMTY0MiwgMTY0NSwgMTY1MCwgMTY1NSwgCi0gICAgMTY2MCwgMTY2NSwgMTY3MSwgMTY3NiwgMTY4MCwgMTMxMSwgMTY4MywgMTY4OCwgMTY5MywgMTMxNiwgMTY5NywgMTcwMSwgCi0gICAgMTcwOCwgMTMyMSwgMTcxNSwgMTMyNiwgMTcxOSwgMTcyMSwgMTcyNiwgMTczMiwgMTMzMCwgMTczNywgMTc0NiwgMTMzNSwgCi0gICAgMTc1MSwgMTc1NywgMTM0MCwgMTc2MiwgMTc2NywgMTc3MCwgMTc3NSwgMTc3OSwgMTc4MywgMTc4NywgMTc5MCwgMTc5NCwgCi0gICAgMTM0NSwgMTM1MCwgMTEwMCwgMTc5OSwgMTgwNSwgMTgxMSwgMTgxNywgMTgyMywgMTgyOSwgMTgzNSwgMTg0MSwgMTg0NywgCi0gICAgMTg1MiwgMTg1OCwgMTg2NCwgMTg3MCwgMTg3NiwgMTg4MiwgMTg4OCwgMTg5NCwgMTkwMCwgMTkwNiwgMTkxMSwgMTkxNiwgCi0gICAgMTkyMSwgMTkyNiwgMTkzMSwgMTkzNiwgMTk0MSwgMTk0NiwgMTk1MSwgMTk1NiwgMTk2MiwgMTk2NywgMTk3MywgMTk3OCwgCi0gICAgMTk4NCwgMTk5MCwgMTk5NSwgMjAwMSwgMjAwNywgMjAxMywgMjAxOSwgMjAyNCwgMjAyOSwgMjAzMSwgMjAzMiwgMjAzNiwgCi0gICAgMjA0MCwgMjA0NSwgMjA0OSwgMjA1MywgMjA1NywgMjA2MSwgMjA2NCwgMjA2OSwgMjA3MywgMjA3OCwgMjA4MiwgMjA4NiwgCi0gICAgMjA5MSwgMjA5NSwgMjA5OCwgMjEwMiwgMjEwOCwgMjEyMiwgMjEyNiwgMjEzMCwgMjEzMywgMjEzOCwgMjE0MiwgMjE0NiwgCi0gICAgMjE0OSwgMjE1MywgMjE1OCwgMjE2MywgMjE2OCwgMjE3MywgMjE3NywgMjE4MSwgMjE4NSwgMjE5MCwgMjE5NCwgMjE5OSwgCi0gICAgMjIwMywgMjIwOCwgMjIxNCwgMjIyMSwgMjIyNywgMjIzMiwgMjIzNywgMjI0MiwgMjI0OCwgMjI1MywgMjI1OSwgMjI2NCwgCi0gICAgMjI2NywgMTIxNywgMjI2OSwgMjI3NiwgMjI4NCwgMjI5NCwgMjMwMywgMjMxNywgMjMyMSwgMjMyNSwgMjMzOCwgMjM0NiwgCi0gICAgMjM1MCwgMjM1NSwgMjM1OSwgMjM2MiwgMjM2NiwgMjM3MCwgMjM3NSwgMjM4MCwgMjM4NSwgMjM4OSwgMjM5MiwgMjM5NiwgCi0gICAgMjQwMywgMjQxMCwgMjQxNiwgMjQyMSwgMjQyNiwgMjQzMiwgMjQzOCwgMjQ0MywgMjQ0NiwgMTcyMywgMjQ0OCwgMjQ1NCwgCi0gICAgMjQ1OCwgMjQ2MywgMjQ2NywgMjQ3MSwgMTcyOCwgMTczNCwgMjQ3NiwgMjQ4MCwgMjQ4MywgMjQ4OCwgMjQ5MywgMjQ5OCwgCi0gICAgMjUwMywgMjUwNywgMjUxNCwgMjUxOSwgMjUyMiwgMjUyOSwgMjUzNSwgMjUzOSwgMjU0MywgMjU0NywgMjU1MiwgMjU1OSwgCi0gICAgMjU2NCwgMjU2OSwgMjU3NiwgMjU4MiwgMjU4OCwgMjU5NCwgMjYwOCwgMjYyNSwgMjY0MCwgMjY1NSwgMjY2NCwgMjY2OSwgCi0gICAgMjY3MywgMjY3OCwgMjY4MywgMjY4NywgMjY5OSwgMjcwNiwgMjcxMiwgMjIxNywgMjcxOCwgMjcyNSwgMjczMSwgMjczNSwgCi0gICAgMjczOCwgMjc0NSwgMjc1MSwgMjc1NSwgMjc1OSwgMjc2MywgMjA1NCwgMjc2NywgMjc3MiwgMjc3NywgMjc4MSwgMjc4OSwgCi0gICAgMjc5MywgMjc5NywgMjgwMSwgMjgwNiwgMjgxMSwgMjgxNiwgMjgyMCwgMjgyNSwgMjgzMCwgMjgzNCwgMjgzOSwgMjg0MywgCi0gICAgMjg0NiwgMjg1MCwgMjg1NCwgMjg1OSwgMjg2MywgMjg2NywgMjg3MywgMjg4MiwgMjg4NiwgMjg5MCwgMjg5NiwgMjkwMSwgCi0gICAgMjkwOCwgMjkxMiwgMjkyMiwgMjkyNiwgMjkzMSwgMjkzNSwgMjk0MCwgMjk0NiwgMjk1MSwgMjk1NSwgMjk1OSwgMjk2MywgCi0gICAgMjQwNiwgMjk3MSwgMjk3NiwgMjk4MiwgMjk4NywgMjk5MSwgMjk5NiwgMzAwMSwgMzAwNSwgMzAxMSwgMzAxNiwgMzAyMiwgCi0gICAgMzAyNiwgMzAzMiwgMzAzNywgMzA0MiwgMzA0NywgMzA1MiwgMzA1NywgMzA2MiwgMzA2NywgMzA3MiwgMzA3NywgMzA4MywgCi0gICAgMzA4OCwgMTIyNywgODAsIDMwOTQsIDMwOTgsIDMxMDIsIDMxMDYsIDMxMTEsIDMxMTUsIDMxMTksIDMxMjMsIDMxMjcsIAotICAgIDMxMzIsIDMxMzYsIDMxNDEsIDMxNDUsIDMxNDgsIDMxNTIsIDMxNTcsIDMxNjEsIDMxNjYsIDMxNzAsIDMxNzQsIDMxNzgsIAotICAgIDMxODMsIDMxODcsIDMxOTAsIDMyMDMsIDMyMDcsIDMyMTEsIDMyMTUsIDMyMTksIDMyMjMsIDMyMjYsIDMyMzAsIDMyMzQsIAotICAgIDMyMzksIDMyNDMsIDMyNDgsIDMyNTMsIDMyNTgsIDMyNjIsIDMyNjUsIDMyNjgsIDMyNzQsIDMyNzgsIDMyODIsIDMyODUsIAotICAgIDMyODksIDMyOTMsIDMyOTYsIDMzMDIsIDMzMDcsIDMzMTIsIDMzMTgsIDMzMjMsIDMzMjgsIDMzMzQsIDMzNDAsIDMzNDUsIAotICAgIDMzNTAsIDMzNTUsIDEwOTEsIDU0MiwgMzM2MCwgMzM2MywgMzM2OCwgMzM3MiwgMzM3NSwgMzM3OSwgMzM4NCwgMzM4OSwgCi0gICAgMzM5MywgMzM5OCwgMzQwMiwgMzQwNywgMzQxMSwgMzQxNSwgMzQyMSwgMzQyNywgMzQzMCwgMzQzMywgMzQzOSwgMzQ0NiwgCi0gICAgMzQ1MywgMzQ1OSwgMzQ2NiwgMzQ3MSwgMzQ3NSwgMzQ4MiwgMzQ4NywgMzQ5MSwgMzUwMSwgMzUwNSwgMzUwOSwgMzUxNCwgCi0gICAgMzUxOSwgMzUyOSwgMjA2NSwgMzUzNCwgMzUzOCwgMzU0MSwgMzU0NywgMzU1MiwgMzU1OCwgMzU2NCwgMzU2OSwgMzU3NiwgCi0gICAgMzU4MCwgMzU4NCwgNjU4LCA2ODgsIDM1ODgsIDM1OTUsIDM2MDIsIDM2MDksIDM2MTUsIDM2MjEsIDM2MjYsIDM2MzAsIAotICAgIDM2MzYsIDM2NDEsIDM2NDUsIDIwNzQsIDM2NDksIDM2NTcsIDU4MywgMzY2MywgMzY3NCwgMzY3OCwgMzY4OCwgMjA3OSwgCi0gICAgMzY5NCwgMzY5OSwgMzcxNCwgMzcyMCwgMzcyNywgMzczNywgMzc0MywgMzc0OCwgMzc1NCwgMzc2MCwgMzc2MywgMzc2NywgCi0gICAgMzc3MiwgMzc3OSwgMzc4NCwgMzc4OCwgMzc5MiwgMzc5NiwgMzgwMCwgMzgwNSwgMzgxMSwgMzE1MywgMzgxNiwgMzgyOCwgCi0gICAgMzgzNiwgMzg0MSwgMTUyNywgMzg0OCwgMzg1MSwgMzg1NCwgMzg1OCwgMzg2MSwgMzg2NywgMzg3MSwgMzg4NSwgMzg4OSwgCi0gICAgMzg5MiwgMzg5NiwgMzkwMiwgMzkwOCwgMzkxMywgMzkxNywgMzkyMSwgMzkyNywgMzkzOCwgMzk0NCwgMzk0OSwgMzk1NSwgCi0gICAgMzk1OSwgMzk2NywgMzk3NywgMzk4MywgMzk4OCwgMzk5NywgNDAwNSwgNDAxMiwgNDAxNiwgNDAyMiwgNDAzMSwgNDA0MCwgCi0gICAgNDA0NCwgNDA0OSwgNDA1NCwgNDA1OCwgNDA2NiwgNDA3MCwgNDA3NSwgNDA3OSwgMjA4NywgMTM2OSwgNDA4NSwgNDA5MCwgCi0gICAgNDA5NiwgNDEwMSwgNDEwNiwgNDExMSwgNDExNiwgNDEyMSwgNDEyNiwgNDEzMiwgNDEzNywgNDE0MywgNDE0OCwgNDE1MywgCi0gICAgNDE1OCwgNDE2NCwgNDE2OSwgNDE3NCwgNDE3OSwgNDE4NCwgNDE5MCwgNDE5NSwgNDIwMSwgNDIwNiwgNDIxMSwgNDIxNiwgCi0gICAgNDIyMSwgNDIyNiwgNDIzMSwgNDIzNywgNDI0MiwgNDI0NywgMzM1LCA0MzYsIDQyNTIsIDQyNTgsIDQyNjIsIDQyNjYsIAotICAgIDQyNzEsIDQyNzUsIDQyNzksIDQyODIsIDQyODYsIDQyOTAsIDQyOTQsIDQyOTksIDQzMDMsIDQzMDcsIDQzMTMsIDQwODIsIAotICAgIDQzMTgsIDQzMjEsIDQzMjgsIDQzMzIsIDQzNDUsIDQzNDksIDQzNTMsIDQzNTcsIDQzNjEsIDQzNjUsIDQzNjksIDQzNzUsIAotICAgIDQzODIsIDQzOTAsIDQzOTQsIDQ0MDIsIDQ0MTEsIDQ0MTcsIDQ0MjksIDQ0MzQsIDQ0MzcsIDQ0NDEsIDQ0NTEsIDQ0NTksIAotICAgIDQ0NjcsIDQ0NzMsIDQ0NzcsIDQ0ODcsIDQ0OTcsIDQ1MDUsIDQ1MTIsIDQ1MTksIDQ1MjUsIDQ1MzEsIDQ1MzgsIDQ1NDIsIAotICAgIDQ1NDksIDQ1NTksIDQ1NjksIDQ1NzcsIDQ1ODQsIDQ1ODksIDQ1OTMsIDQ2MDEsIDQ2MDYsIDQ2MTMsIDQ2MjEsIDQ2MjYsIAotICAgIDQ2MzEsIDQ2MzUsIDQ2NDksIDQ2NTQsIDQ2NTksIDQ2NjYsIDQ2NzUsIDQ2NzgsIDQ2ODIsIDQ2ODYsIDQ2ODksIDQ2OTQsIAotICAgIDQ2OTksIDQ3MDgsIDQ3MTQsIDQ3MjAsIDQ3MjYsIDQ3MzAsIDQ3NDEsIDQ3NTEsIDQ3NjYsIDQ3ODEsIDQ3OTYsIDQ4MTEsIAotICAgIDQ4MjYsIDQ4NDEsIDQ4NTYsIDQ4NzEsIDQ4ODYsIDQ5MDEsIDQ5MTYsIDQ5MzEsIDQ5NDYsIDQ5NjEsIDQ5NzYsIDQ5OTEsIAotICAgIDUwMDYsIDUwMjEsIDUwMzYsIDUwNTEsIDUwNjYsIDUwODEsIDUwOTYsIDUxMTEsIDUxMjYsIDUxNDEsIDUxNTYsIDUxNzEsIAotICAgIDUxODYsIDUyMDEsIDUyMTYsIDUyMzEsIDUyNDYsIDUyNjEsIDUyNzYsIDUyOTEsIDUzMDYsIDUzMjEsIDUzMzYsIDUzNTEsIAotICAgIDUzNjYsIDUzODEsIDUzOTYsIDU0MTEsIDU0MjYsIDU0NDEsIDU0NTYsIDU0NzEsIDU0ODYsIDU0OTUsIDU1MDQsIDU1MDksIAotICAgIDU1MTUsIDU1MjUsIDU1MjksIDU1MzQsIDU1MzksIDU1NDcsIDU1NTEsIDU1NTQsIDU1NTgsIDI5MTcsIDU1NjEsIDU1NjYsIAotICAgIDMxMCwgNDQ1LCA1NTcyLCA1NTgwLCA1NTg0LCA1NTg4LCA1NTkxLCA1NTk3LCA1NjAxLCA1NjA5LCA1NjE1LCA1NjIwLCAKLSAgICA1NjI3LCA1NjM0LCA1NjQwLCA1NjQ1LCA1NjUyLCA1NjU4LCA1NjY2LCA1NjcwLCA1Njc1LCA1Njg3LCA1Njk4LCA1NzA1LCAKLSAgICA1NzExLCAzMTc1LCA1NzE1LCA1NzIxLCA1NzI2LCA1NzMxLCA1NzM2LCA1NzQyLCA1NzQ3LCA1NzUyLCA1NzU3LCA1NzYyLCAKLSAgICA1NzY4LCA1NzczLCA1Nzc4LCA1Nzg0LCA1Nzg5LCA1Nzk1LCA1ODAwLCA1ODA2LCA1ODExLCA1ODE3LCA1ODIyLCA1ODI3LCAKLSAgICA1ODMyLCA1ODM3LCA1ODQyLCA1ODQ4LCA1ODUzLCA1ODU4LCA1ODYzLCA1ODY5LCA1ODc1LCA1ODgxLCA1ODg3LCA1ODkzLCAKLSAgICA1ODk5LCA1OTA1LCA1OTExLCA1OTE3LCA1OTIzLCA1OTI5LCA1OTM1LCA1OTQwLCA1OTQ1LCA1OTUwLCA1OTU1LCA1OTYwLCAKLSAgICA1OTY1LCA1OTcwLCA1OTc1LCA1OTgxLCA1OTg3LCA1OTkyLCA1OTk4LCA2MDA0LCA2MDEwLCA2MDE1LCA2MDIwLCA2MDI1LCAKLSAgICA2MDMwLCA2MDM2LCA2MDQyLCA2MDQ3LCA2MDUyLCA2MDU3LCA2MDYyLCA2MDY3LCA2MDczLCA2MDc4LCA2MDg0LCA2MDkwLCAKLSAgICA2MDk2LCA2MTAyLCA2MTA4LCA2MTE0LCA2MTIwLCA2MTI2LCA2MTMyLCAyMDk2LCA1NTkwLCA2MTM3LCA2MTQxLCA2MTQ1LCAKLSAgICA2MTQ4LCA2MTU1LCA2MTU4LCA2MTY2LCA2MTcxLCA2MTc2LCA2MTY3LCA2MTgxLCA2MTY4LCA2MTg1LCA2MTkxLCA2MTk3LCAKLSAgICA2MjAyLCA2MjA3LCA2MjE0LCA2MjIyLCA2MjI3LCA2MjMxLCA2MjM0LCA2MjM4LCAyMTI3LCA1NTEsIDYyNDIsIDYyNDYsIAotICAgIDYyNTEsIDYyNTcsIDYyNjIsIDYyNjYsIDYyNjksIDYyNzMsIDYyNzksIDYyODQsIDYyODgsIDYyOTUsIDYyOTksIDYzMDMsIAotICAgIDYzMDcsIDk0NiwgNzQ3LCA2MzEwLCA2MzE4LCA2MzI1LCA2MzMyLCA2MzM4LCA2MzQ1LCA2MzUzLCA2MzYwLCA2MzY3LCAKLSAgICA2MzcyLCA2Mzg0LCAxMjQ3LCAxMzc3LCAxMzgyLCA2Mzk1LCAxMzg3LCA2Mzk5LCA2NDAzLCA2NDEyLCA2NDIwLCA2NDI5LCAKLSAgICA2NDM1LCA2NDQwLCA2NDQ0LCA2NDUwLCA2NDU1LCA2NDYyLCA2NDY2LCA2NDc1LCA2NDg0LCA2NDkzLCA2NTAyLCA2NTA3LCAKLSAgICA2NTEyLCA2NTI0LCA2NTI5LCA2NTM3LCAyMTc4LCA2NTQxLCA2NTQzLCA2NTQ4LCA2NTUyLCA2NTYxLCA2NTY5LCAxMzkxLCAKLSAgICAxMzMsIDM0MDMsIDM0MDgsIDY1NzUsIDY1NzksIDY1ODgsIDY1OTQsIDY1OTksIDY2MDIsIDY2MTEsIDI2NTIsIDY2MTcsIAotICAgIDY2MjUsIDY2MjksIDY2MzMsIDIxOTEsIDY2MzcsIDY2NDIsIDY2NDksIDY2NTUsIDY2NjEsIDY2NjQsIDY2NjYsIDY2NjksIAotICAgIDY2NzcsIDY2ODUsIDY2OTMsIDY2OTYsIDY3MDEsIDYxNzgsIDY3MDQsIDY3MDYsIDY3MTEsIDY3MTYsIDY3MjEsIDY3MjYsIAotICAgIDY3MzEsIDY3MzYsIDY3NDEsIDY3NDYsIDY3NTEsIDY3NTYsIDY3NjIsIDY3NjcsIDY3NzIsIDY3NzcsIDY3ODMsIDY3ODgsIAotICAgIDY3OTMsIDY3OTgsIDY4MDMsIDY4MDgsIDY4MTMsIDY4MTksIDY4MjQsIDY4MjksIDY4MzQsIDY4MzksIDY4NDQsIDY4NDksIAotICAgIDY4NTQsIDY4NTksIDY4NjQsIDY4NjksIDY4NzQsIDY4NzksIDY4ODQsIDY4ODksIDY4OTQsIDY4OTksIDY5MDQsIDY5MTAsIAotICAgIDY5MTYsIDY5MjEsIDY5MjYsIDY5MzEsIDY5MzYsIDY5NDEsIDIyMTUsIDIyMjIsIDIyMjgsIDY5NDYsIDY5NTIsIDIyNTQsIAotICAgIDIyNjAsIDY5NjAsIDY5NjQsIDY5NjksIDY5NzMsIDY5NzcsIDY5ODEsIDY5ODYsIDY5OTAsIDY5OTUsIDY5OTksIDcwMDIsIAotICAgIDcwMDUsIDcwMTEsIDcwMTcsIDcwMjMsIDcwMjksIDcwMzUsIDcwNDEsIDcwNDcsIDcwNTEsIDcwNTUsIDcwNTksIDcwNjMsIAotICAgIDcwNjcsIDcwNzIsIDcwNzksIDcwOTAsIDcwOTgsIDcxMDgsIDcxMTUsIDcxMjAsIDcxMjQsIDcxMzUsIDcxNDgsIDcxNTksIAotICAgIDcxNzIsIDcxODMsIDcxOTUsIDcyMDcsIDcyMTksIDcyMzIsIDcyNDUsIDcyNTIsIDcyNTgsIDcyNzIsIDcyNzksIDcyODUsIAotICAgIDcyODksIDcyOTQsIDcyOTgsIDczMDUsIDczMTMsIDczMTcsIDczMjMsIDczMjksIDczMzksIDczNDMsIDczNDgsIDczNTMsIAotICAgIDczNjAsIDczNjYsIDczNzYsIDYzNDAsIDczODIsIDczODYsIDczOTMsIDc0NiwgNzM5NywgNzQwMSwgNzQwNiwgNzQxMSwgCi0gICAgNzQxNiwgNzQyMCwgNzQyNiwgNzQzNCwgNzQ0MCwgNzQ0NCwgNzQ1MCwgNzQ2MCwgNzQ2NCwgNzQ3MCwgNzQ3NSwgNzQ3OSwgCi0gICAgNzQ4NSwgNzQ5MSwgMjExOSwgNzQ5NiwgNzQ5OCwgNzUwNiwgNzUxNSwgNzUxOSwgNzUyNSwgNzUzMCwgNzUzNSwgNzU0MCwgCi0gICAgNzU0NSwgNzU1MSwgNzU1NiwgMzkyMywgNzU2MSwgNzU2NSwgNzU3MSwgNzU3NiwgNzU4MiwgNzU4NywgNzU5MiwgNzU5OCwgCi0gICAgNzYwMywgNzUyMCwgNzYwOSwgNzYxMywgNzYyMCwgNzYyNiwgNzYzMSwgNzYzNSwgNDY0NSwgNzY0MCwgNzY0OSwgNjY0NSwgCi0gICAgNjY1MiwgNzY1NCwgMjgwMywgNzY1OCwgNzY2MywgNzY2OCwgNzUzMSwgNzY3MiwgNzUzNiwgNzU0MSwgNzY3NywgNzY4NCwgCi0gICAgNzY5MSwgNzY5NywgNzcwMywgNzcwOSwgNzcxNCwgNzcxOSwgNzcyNCwgNzU0NiwgNzU1MiwgNzczMCwgNzczNiwgNzc0MSwgCi0gICAgNzc0OSwgNzU1NywgNzc1NCwgMTAyOCwgNzc1NywgNzc2NSwgNzc3MSwgNzc3NywgNzc4NiwgNzc5NCwgNzc5OSwgNzgwNSwgCi0gICAgNzgxMywgNzgyMCwgNzgzNSwgNzg1MiwgNzg3MSwgNzg4MCwgNzg4OCwgNzkwMywgNzkxNCwgNzkyNCwgNzkzNCwgNzk0MiwgCi0gICAgNzk0OCwgNzk2MCwgNzk2OSwgNzk3NywgNzk4NCwgNzk5MSwgNzk5NywgODAwMiwgODAxMCwgODAyMCwgODAyNywgODAzNywgCi0gICAgODA0NywgODA1NywgODA2NSwgODA3MiwgODA4MSwgODA5MSwgODEwNSwgODEyMCwgODEyOSwgODEzNywgODE0MiwgODE0NiwgCi0gICAgODE1NSwgODE2MSwgODE2NiwgODE3NiwgODE4NiwgODE5NiwgODIwMSwgODIwNSwgODIxNCwgODIxOSwgODIyOSwgODI0MCwgCi0gICAgODI1MywgODI2NiwgODI3OCwgODI4NiwgODI5MSwgODI5NSwgODMwMSwgODMwNiwgODMxNCwgODMyMiwgODMyOSwgODMzNCwgCi0gICAgODM0MiwgODM0OCwgODM1MSwgODM1NSwgODM2MSwgODM2OSwgODM3NCwgODM3OCwgODM4NiwgODM5NSwgODQwMywgODQwOSwgCi0gICAgODQxMywgODQyMCwgODQzMSwgODQzNSwgODQzOCwgODQ0NCwgODQ0OSwgODQ1MywgODQ1OSwgODQ2NiwgODQ3MiwgODQ3NywgCi0gICAgODQ4NCwgODQ5MSwgODQ5OCwgODUwNSwgODUxMiwgODUxOSwgODUyNCwgNzg0OCwgODUyOSwgODUzNSwgODU0MiwgODU0OSwgCi0gICAgODU1NCwgODU2MSwgODU3MCwgODU3NCwgODU4NiwgODU5MCwgODU5MywgODU5NywgODYwMSwgODYwNSwgODYwOSwgODYxNSwgCi0gICAgODYyMCwgODYyNiwgODYzMSwgODYzNiwgODY0MiwgODY0NywgODY1MiwgNzM1NiwgODY1NywgODY2MSwgODY2NSwgODY2OSwgCi0gICAgODY3NCwgODY3OSwgODY4NywgODY5MywgODY5NywgODcwMSwgODcwOCwgODcxMywgODcyMSwgODcyNiwgODczMCwgODczMywgCi0gICAgODczOSwgODc0NiwgODc1MCwgODc1MywgODc1OCwgODc2MiwgMzk2MiwgODc2OCwgODc3NywgMzYsIDg3ODUsIDg3OTEsIAotICAgIDg3OTYsIDczNzEsIDg4MDEsIDg4MDcsIDg4MTIsIDg4MTYsIDg4MTksIDg4MzQsIDg4NTMsIDg4NjUsIDg4NzgsIDg4OTEsIAotICAgIDg5MDQsIDg5MTgsIDg5MzEsIDg5NDYsIDg5NTMsIDg5NTksIDg5NjMsIDg5NzcsIDg5ODIsIDg5ODgsIDg5OTMsIDkwMDEsIAotICAgIDkwMDYsIDY0NzEsIDkwMTEsIDkwMTQsIDkwMjEsIDkwMjYsIDkwMzAsIDI4MDgsIDk1NSwgOTAzNiwgOTA0MCwgOTA0NiwgCi0gICAgOTA1MiwgOTA1NywgOTA2MywgOTA2OCwgNzU2NiwgOTA3NCwgOTA4MCwgOTA4NSwgOTA5MCwgOTA5OCwgOTEwNCwgOTExNywgCi0gICAgOTEyNSwgOTEzMiwgNzU3MiwgOTEzOCwgOTE0NiwgOTE1NCwgOTE2MSwgOTE3NCwgOTE4NiwgOTE5NiwgOTIwMywgOTIxMCwgCi0gICAgOTIxOSwgOTIyOCwgOTIzNiwgOTI0MywgOTI0OCwgOTI1NCwgNzU3NywgOTI1OSwgOTI2NSwgNzU4MywgOTI3MCwgOTI3MywgCi0gICAgOTI4MCwgOTI4NiwgOTI5OSwgNzA4MywgOTMxMCwgOTMxNiwgOTMyNSwgOTMzMywgOTM0MCwgOTM0NiwgOTM1MiwgOTM1NywgCi0gICAgOTM2MSwgOTM2NiwgODgyNiwgOTM3MiwgNzU4OCwgOTM3OSwgOTM4NCwgOTM5MSwgOTM5NywgOTQwMywgOTQwOCwgOTQxNiwgCi0gICAgOTQyNCwgOTQzMSwgOTQzNSwgOTQ0OSwgOTQ1OSwgOTQ2NCwgOTQ2OCwgOTQ3OSwgOTQ4NSwgOTQ5MCwgOTQ5NSwgNzU5MywgCi0gICAgNzU5OSwgOTQ5OSwgOTUwMiwgOTUwNywgOTUxOSwgOTUyNiwgOTUzMSwgOTUzNSwgOTU0MCwgOTU0NCwgOTU1MSwgOTU1NywgCi0gICAgNzYwNCwgNzUyMSwgOTU2NCwgMjgxMywgOCwgOTU3MSwgOTU3NiwgOTU4MCwgOTU4NiwgOTU5NCwgOTYwNCwgOTYwOSwgCi0gICAgOTYxNCwgOTYyMSwgOTYyOCwgOTYzMiwgOTY0MywgOTY1MywgOTY2MiwgOTY3NCwgOTY3OSwgOTY4MywgOTY5MSwgOTcwNSwgCi0gICAgOTcwOSwgOTcxMiwgOTcyMCwgOTcyNywgOTczNSwgOTczOSwgOTc1MCwgOTc1NCwgOTc2MSwgOTc2NiwgOTc3MCwgOTc3NiwgCi0gICAgOTc4MSwgOTc4NSwgOTc5MSwgOTc5NiwgOTgwNywgOTgxMSwgOTgxNCwgOTgyMCwgOTgyNSwgOTgzMSwgOTgzNywgOTg0NCwgCi0gICAgOTg1NSwgOTg2NSwgOTg3NSwgOTg4NCwgOTg5MSwgNzYxNCwgNzYyMSwgNzYyNywgNzYzMiwgOTg5NywgOTkwMywgNzYzNiwgCi0gICAgOTkwOSwgOTkxMiwgOTkxOSwgOTkyNCwgOTkzOSwgOTk1NSwgOTk3MCwgOTk3OCwgOTk4NCwgMTA0MywgNDAwLCA5OTg5LCAKLSAgICA5OTk3LCAxMDAwNCwgMTAwMTAsIDEwMDE1LCAxMDAyMCwgNzY0MSwgMTAwMjIsIDEwMDI2LCAxMDAzMSwgMTAwMzUsIAotICAgIDEwMDQ1LCAxMDA1MCwgMTAwNTQsIDEwMDYzLCAxMDA2NywgMTAwNzAsIDEwMDc3LCAxMDA4MSwgMTAwODQsIDEwMDkyLCAKLSAgICAxMDA5OSwgMTAxMDcsIDEwMTExLCAxMDExOCwgMTAxMjcsIDEwMTMwLCAxMDEzNCwgMTAxMzgsIDEwMTQ0LCAxMDE0OCwgCi0gICAgMTAxNTIsIDEwMTU2LCAxMDE2MiwgMTAxNzIsIDEwMTc2LCAxMDE4NCwgMTAxODgsIDEwMTk1LCAxMDE5OSwgMTAyMDQsIAotICAgIDEwMjA4LCAxMDIxNSwgMTAyMjEsIDEwMjI5LCAxMDIzNSwgMTAyNDUsIDEwMjUwLCAxMDI1NSwgMTAyNTksIDEwMjY3LCAKLSAgICAzODIyLCAxMDI3NSwgMTAyODAsIDEwMjg0LCAxMDI4OCwgMTAyOTEsIDEwMjk5LCAxMDMwNiwgMTAzMTAsIDQ0NjksIAotICAgIDEwMzE0LCAxMDMxOSwgMTAzMjMsIDEwMzM0LCAxMDMzOSwgMTAzNDUsIDEwMzQ5LCAxMDM1MiwgMTAzNjAsIDEwMzY1LCAKLSAgICAxMDM3MCwgMTAzNzcsIDEwMzgyLCA3NjUwLCAxMDM4NywgMTAzOTEsIDE2ODUsIDQ2MTksIDEwMzk4LCAxMDQwMywgMTA0MDgsIAotICAgIDEwNDEzLCAxMDQxOSwgMTA0MjQsIDEwNDMwLCAxMDQzNSwgMTA0NDAsIDEwNDQ1LCAxMDQ1MCwgMTA0NTUsIDEwNDYwLCAKLSAgICAxMDQ2NSwgMTA0NzAsIDEwNDc1LCAxMDQ4MCwgMTA0ODUsIDEwNDkwLCAxMDQ5NSwgMTA1MDAsIDEwNTA1LCAxMDUxMCwgCi0gICAgMTA1MTYsIDEwNTIxLCAxMDUyNiwgMTA1MzEsIDEwNTM2LCAxMDU0MSwgMTA1NDcsIDEwNTUyLCAxMDU1NywgMTA1NjMsIAotICAgIDEwNTY4LCAxMDU3NCwgMTA1NzksIDEwNTg1LCAxMDU5MCwgMTA1OTUsIDEwNjAwLCAxMDYwNSwgMTA2MTEsIDEwNjE2LCAKLSAgICAxMDYyMSwgMTA2MjYsIDcyNCwgMTM5LCAxMDYzNCwgMTA2MzgsIDEwNjQzLCAxMDY0OCwgMTA2NTIsIDEwNjU2LCAxMDY2MCwgCi0gICAgMTA2NjUsIDEwNjY5LCAxMDY3NCwgMTA2NzgsIDEwNjgxLCAxMDY4NSwgMTA2ODksIDEwNjk0LCAxMDcwNCwgMTA3MTAsIAotICAgIDEwNzE4LCAxMDcyMiwgMTA3MjYsIDEwNzMzLCAxMDc0MSwgMTA3NTAsIDEwNzYxLCAxMDc2OCwgMTA3NzUsIDEwNzg0LCAKLSAgICAxMDc5MywgMTA4MDEsIDEwODEwLCAxMDgxOSwgMTA4MjgsIDEwODM3LCAxMDg0NywgMTA4NTcsIDEwODY3LCAxMDg3NywgCi0gICAgMTA4ODcsIDEwODk2LCAxMDkwNiwgMTA5MTYsIDEwOTI2LCAxMDkzNiwgMTA5NDYsIDEwOTU2LCAxMDk2NiwgMTA5NzUsIAotICAgIDEwOTg1LCAxMDk5NSwgMTEwMDUsIDExMDE1LCAxMTAyNSwgMTEwMzUsIDExMDQ0LCAxMTA1NCwgMTEwNjQsIDExMDc0LCAKLSAgICAxMTA4NCwgMTEwOTQsIDExMTA0LCAxMTExNCwgMTExMjQsIDExMTM0LCAxMTE0MywgMTExNTMsIDExMTYzLCAxMTE3MywgCi0gICAgMTExODMsIDExMTkzLCAxMTIwMywgMTEyMTMsIDExMjIzLCAxMTIzMywgMTEyNDMsIDExMjUyLCAxMTI1OCwgMTEyNjIsIAotICAgIDExMjY1LCAxMTI2OSwgMTEyNzQsIDExMjgxLCAxMTI4NywgMTEyOTIsIDExMjk2LCAxMTMwMSwgMTEzMTAsIDExMzE4LCAKLSAgICAxMTMyMywgMTEzMjcsIDExMzMxLCAxMTMzNywgMTEzNDIsIDExMzQ4LCA3NjU5LCAxMTM1MywgMTEzNTgsIDExMzY3LCAKLSAgICA3NjY0LCAxMTM3MiwgMTEzNzUsIDExMzgxLCAxMTM4OSwgNzY2OSwgMTEzOTYsIDExNDAwLCAxMTQwNCwgMTE0MDgsIAotICAgIDExNDE4LCAxMTQyNCwgMTE0MjksIDExNDM4LCAxMTQ0NiwgMTE0NTMsIDExNDYwLCAxMTQ2NSwgMTE0NzIsIDExNDc3LCAKLSAgICAxMTQ4MSwgMTE0ODQsIDExNDk1LCAxMTUwNSwgMTE1MTQsIDExNTIyLCAxMTUzMywgMTE1NDUsIDExNTU1LCAxMTU2MCwgCi0gICAgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzgsIDExNTg0LCAxMTU5MiwgMTE1OTksIDExNjEwLCAxMTYxNSwgMTE2MjUsIAotICAgIDExNjM0LCAxMTYzOCwgMTE2NDEsIDExNjQ4LCAxMTY1OCwgMTE2NjcsIDExNjc0LCAxMTY3OCwgMTE2ODUsIDExNjkxLCAKLSAgICAxMTY5NiwgMTE3MDEsIDExNzA1LCAxMTcxNCwgMTE3MTksIDExNzI1LCAxMTcyOSwgMTE3MzQsIDExNzM4LCAxMTc0NywgCi0gICAgMTE3NTUsIDExNzYzLCAxMTc3MCwgMTE3NzgsIDExNzkwLCAxMTgwMSwgMTE4MTEsIDExODE4LCAxMTgyNCwgMTE4MzMsIAotICAgIDExODQ0LCAxMTg1MywgMTE4NjUsIDExODc3LCAxMTg4OSwgMTE4OTksIDExOTA4LCAxMTkxNywgMTE5MjUsIDExOTMyLCAKLSAgICAxMTk0MSwgMTE5NDksIDExOTU1LCAxMTk2MSwgMTE5NjYsIDYxOTksIDExOTcwLCAxMTk3MiwgMTE5NzcsIDExOTgzLCAKLSAgICAxMTk5MiwgMTIwMDAsIDEyMDA3LCAxMjAxNiwgMTIwMjUsIDEyMDM0LCAxMjA0MywgMTIwNTIsIDEyMDYxLCAxMjA3MCwgCi0gICAgMTIwNzksIDEyMDg5LCAxMjA5OSwgMTIxMDgsIDEyMTE0LCAxMjEyMSwgMTIxMzUsIDEyMTQyLCAxMjE1MCwgMTIxNTksIAotICAgIDEyMTY1LCAxMjE3NCwgMTIxODMsIDEyMTk0LCAxMjIwNCwgMTIyMTIsIDEyMjE5LCAxMjIyNywgMTIyMzYsIDEyMjQ5LCAKLSAgICAxMjI1NywgMTIyNjQsIDEyMjc3LCAxMjI4MywgMTIyODksIDEyMjk5LCAxMjMwOCwgMTIzMTcsIDEyMzIyLCAxMjMyNiwgCi0gICAgMTIzMzIsIDEyMzM4LCAxMjM0NSwgNzM3MCwgMTIzNTAsIDEyMzU1LCAxMjM2MiwgMTIzNjcsIDEyMzcyLCAxMjM3NiwgCi0gICAgMTIzODQsIDEyMzkwLCAxMjM5NSwgMTI0MDMsIDEyNDExLCAxMjQxOCwgMTI0MjYsIDEyNDMyLCAxMjQ0MCwgMTI0NDgsIAotICAgIDEyNDUzLCAxMjQ1OSwgMTI0NjYsIDEyNDcyLCAxMjQ3NywgMTI0ODEsIDEyNDkyLCAxMjUwMCwgMTI1MDYsIDEyNTExLCAKLSAgICAxMjUyMCwgMTI1MjYsIDEyNTMxLCAxMjU0MCwgMTI1NTQsIDM3ODEsIDEyNTU4LCAxMjU2MywgMTI1NjgsIDEyNTc0LCAKLSAgICAxMjU3OSwgMTI1ODQsIDEyNTg4LCAxMjU5MywgMTI1OTgsIDYxOTgsIDEyNjAzLCAxMjYwOCwgMTI2MTMsIDEyNjE4LCAKLSAgICAxMjYyMiwgMTI2MjcsIDEyNjMyLCAxMjYzNywgMTI2NDMsIDEyNjQ5LCAxMjY1NCwgMTI2NTgsIDEyNjYzLCAxMjY2OCwgCi0gICAgMTI2NzMsIDc2NzMsIDEyNjc4LCAxMjY4MywgMTI2ODgsIDEyNjkzLCAxMjcxMCwgMTI3MjgsIDEyNzQwLCAxMjc1MywgCi0gICAgMTI3NzAsIDEyNzg2LCAxMjgwMywgMTI4MTMsIDEyODMyLCAxMjg0MywgMTI4NTQsIDEyODY1LCAxMjg3NiwgMTI4ODgsIAotICAgIDEyODk5LCAxMjkxMCwgMTI5MjcsIDEyOTM4LCAxMjk0OSwgMTI5NTQsIDIzMzUsIDEyOTU4LCAxMjk2MSwgMTI5NjcsIAotICAgIDEyOTc1LCAxMjk4MywgMTI5ODgsIDEyOTk2LCAxMzAwNCwgMTMwMTEsIDEzMDE2LCAxMzAyMiwgMTMwMjksIDEzMDM3LCAKLSAgICAxMzA0NCwgMTMwNTYsIDEzMDY0LCAxMzA2OSwgOTkzMywgMTMwNzUsIDEzMDg0LCAxMzA5MywgMTMxMDEsIDEzMTA4LCAKLSAgICAxMzExNCwgMTMxMjIsIDEzMTI5LCAxMzEzNSwgMTMxNDIsIDEzMTQ4LCAxMzE1NywgMTMxNjUsIDEzMTc1LCAxMzE4MiwgCi0gICAgMTMxODgsIDEzMTk2LCAxMzIwMiwgMTMyMTAsIDEzMjE3LCAxMzIzMCwgMTMyMzcsIDEzMjQ2LCAxMzI1NSwgMTMyNjQsIAotICAgIDEzMjcyLCAxMzI4MiwgMTMyODksIDEzMjk0LCAzNDk1LCAxMzMwMSwgMTMzMDYsIDEzMzA5LCAxMjYwNCwgMTMzMTMsIAotICAgIDEzMzE5LCAxMzMyMywgMTMzMzEsIDEzMzQzLCAxMzM0OCwgMTMzNTUsIDEzMzYxLCAxMzM2NiwgMTMzNzMsIDEyNjA5LCAKLSAgICAxMzM3NywgMTMzODEsIDEyNjE0LCAxMzM4NSwgMTMzODksIDEzMzkzLCAxMzQwMCwgMTM0MDUsIDEzNDA5LCAxMzQxMywgCi0gICAgMTM0MjEsIDEzNDI4LCAxMzQzNSwgMTM0NTIsIDEzNDYxLCAxMzQ2NSwgMTM0NjgsIDEzNDc2LCAxMzQ4MiwgMTM0ODcsIAotICAgIDM1NzMsIDEzNDkxLCAxMzQ5MywgMTM1MDEsIDEzNTA4LCAxMzUxOCwgMTM1MzAsIDEzNTM1LCAxMzU0MSwgMTM1NDYsIAotICAgIDEzNTUwLCAxMzU1NiwgMTM1NjEsIDEzNTY3LCAxMzU3MCwgMTM1NzcsIDEzNTg1LCAxMzU5MiwgMTM1OTgsIDEzNjA0LCAKLSAgICAxMzYwOSwgMTM2MTYsIDEzNjIyLCAxMzYyNywgMTM2MzQsIDEzNjM4LCAxMzY0NCwgMTM2NDgsIDEzNjU1LCAxMzY2MSwgCi0gICAgMTM2NjcsIDEzNjc1LCAxMzY4MSwgMTM2ODYsIDEzNjkyLCAxMzcwMCwgMTM3MDgsIDEzNzE0LCAxMzcyMCwgMTM3MjUsIAotICAgIDEzNzMyLCAxMzczNywgMTM3NDEsIDEzNzQ3LCAxMzc1MiwgMTM3NTksIDEzNzY0LCAxMzc3MCwgMTM3NzMsIDEzNzc5LCAKLSAgICAxMzc4NSwgMTM3ODgsIDEzNzkyLCAxMzgwNCwgMTM4MTAsIDEzODE1LCAxMzgyMiwgMTM4MjgsIDEzODM0LCAxMzg0NSwgCi0gICAgMTM4NTUsIDEzODY0LCAxMzg3MiwgMTM4NzksIDEzODkwLCAxMzkwMCwgMTM5MTAsIDEzOTE4LCAxMzkyMSwgMTI2MjgsIAotICAgIDEzOTI2LCAxMzkzMSwgMTI2MzMsIDEyNzU4LCAxMzkzOSwgMTM5NTIsIDEzOTY3LCAxMzk3OCwgMTI3NzUsIDEzOTk2LCAKLSAgICAxNDAwOSwgMTQwMjIsIDE0MDMzLCA4ODQxLCAxNDA0NCwgMTQwNTcsIDE0MDc2LCAxNDA4NywgMTQwOTgsIDE0MTA5LCAKLSAgICAyNjAzLCAxNDEyMiwgMTQxMjYsIDE0MTM0LCAxNDE0NSwgMTQxNTIsIDE0MTU4LCAxNDE2NiwgMTQxNzAsIDE0MTc2LCAKLSAgICAxNDE3OSwgMTQxODksIDE0MTk3LCAxNDIwNCwgMTQyMTIsIDE0MjIyLCAxNDIyNywgMTQyMzQsIDE0MjM5LCAxNDI0NiwgCi0gICAgMTQyNTcsIDE0MjY3LCAxNDI3MywgMTQyNzgsIDE0MjgzLCAxNDI4NywgMTQyOTEsIDE0Mjk3LCAxNDMwMywgMTQzMDgsIAotICAgIDE0MzEzLCAxNDMxOCwgMTQzMjIsIDEyNjM4LCAxMjY0NCwgMTQzMjYsIDEyNjUwLCAxNDMzMSwgMTQzMzksIDE0MzQ4LCAKLSAgICAxNDM1NSwgNzU0MiwgMTQzNTksIDE0MzYxLCAxNDM2NiwgMTQzNzEsIDE0Mzc3LCAxNDM4MiwgMTQzODcsIDE0MzkyLCAKLSAgICAxNDM5NywgMTQ0MDEsIDE0NDA3LCAxNDQxMywgMTQ0MTgsIDE0NDI0LCAxNDQyOSwgMTQ0MzQsIDE0NDQwLCAxNDQ0NSwgCi0gICAgMTQ0NTAsIDE0NDU1LCAxNDQ2MSwgMTQ0NjYsIDE0NDcxLCAxNDQ3NywgMTQ0ODMsIDE0NDg4LCAxNDQ5MywgMTQ1MDAsIAotICAgIDE0NTA2LCAxNDUxNywgMTQ1MjQsIDE0NTI5LCAxNDUzMywgMTQ1MzcsIDE0NTQwLCAxNDU0OCwgMTQ1NTMsIDE0NTYwLCAKLSAgICAxNDU2NywgMTQ1NzIsIDE0NTc3LCAxNDU4NCwgMTQ1OTQsIDE0NTk5LCAxNDYwNiwgMTQ2MTIsIDE0NjIyLCAxNDYzMiwgCi0gICAgMTQ2NDYsIDE0NjYwLCAxNDY3NCwgMTQ2ODgsIDE0NzAzLCAxNDcxOCwgMTQ3MzUsIDE0NzUzLCAxNDc2NiwgMTQ3NzIsIAotICAgIDE0Nzc3LCAxNDc4MiwgMTQ3ODYsIDE0NzkxLCAxNDc5OSwgMTQ4MDUsIDE0ODEwLCAxNDgxNSwgMTQ4MTksIDE0ODI0LCAKLSAgICAxNDgyOCwgMTQ4MzMsIDE0ODM3LCAxNDg0OCwgMTQ4NTQsIDE0ODU5LCAxNDg2NCwgMTQ4NzEsIDE0ODc2LCAxNDg4MCwgCi0gICAgMTQ4ODUsIDE0ODkwLCAxNDg5NiwgMTQ5MDMsIDE0OTA5LCAxNDkxNCwgMTQ5MTgsIDE0OTI0LCAxNDkyOSwgMTQ5MzQsIAotICAgIDE0OTM4LCAxNDk0NCwgMTQ5NDksIDE0OTU0LCAxNDk2MSwgMTQ5NjYsIDExNDIwLCAxNDk3MCwgMTQ5NzUsIDE0OTc5LCAKLSAgICAxNDk4NCwgMTQ5OTAsIDE0OTk2LCAxNTAwMywgMTUwMTMsIDE1MDIxLCAxNTAyOCwgMTUwMzMsIDE1MDM3LCAxNTA0NiwgCi0gICAgMTUwNTQsIDE1MDYxLCAxNTA2OCwgMTUwNzQsIDE1MDgwLCAxNTA4NSwgMTUwOTAsIDE1MDk2LCAxNTEwMSwgMTUxMDcsIAotICAgIDE1MTEyLCAxNTExOCwgMTUxMjQsIDE1MTMxLCAxNTEzNywgMTUxNDIsIDE1MTQ3LCA3NzE1LCAxNTE1NiwgMTUxNTksIAotICAgIDE1MTY1LCAxNTE3MCwgMTUxNzUsIDE1MTg1LCAxNTE5MiwgMTUxOTgsIDE1MjAzLCAxNTIwOSwgMTUyMTQsIDE1MjIwLCAKLSAgICAxNTIyNSwgMTUyMzEsIDE1MjM3LCAxNTI0MiwgMTUyNTAsIDE1MjU3LCAxNTI2MiwgMTUyNjcsIDE1MjczLCAxNTI3OCwgCi0gICAgMTUyODIsIDE1MjkxLCAxNTMwMiwgMTUzMDksIDE1MzE3LCAxNTMyMywgMTUzMzAsIDE1MzM2LCAxNTM0MSwgMTUzNDUsIAotICAgIDE1MzUxLCAxNTM1NiwgMTUzNjEsIDE1MzY2LCA3NzIwLCA2MjIzLCAyODI3LCAxNTM3MCwgMTUzNzQsIDE1Mzc4LCAxNTM4MiwgCi0gICAgMTUzODYsIDE1Mzg5LCAxNTM5NiwgMTU0MDQsIDEyNjY0LCAxNTQxMSwgMTU0MjEsIDE1NDI5LCAxNTQzNiwgMTU0NDQsIAotICAgIDE1NDU0LCAxNTQ2MywgMTU0NzYsIDE1NDgxLCAxNTQ4NiwgMTU0OTQsIDE1NTAxLCAxMTUxMCwgMTE1MTksIDE1NTA4LCAKLSAgICAxNTUxOCwgMTU1MzMsIDE1NTM5LCAxNTU0NiwgMTU1NTMsIDE1NTU5LCAxNTU2OSwgMTU1NzksIDEyNjY5LCAxNTU4OCwgCi0gICAgMTU1OTQsIDE1NjAwLCAxNTYwOCwgMTU2MTYsIDE1NjIxLCAxNTYzMCwgMTU2MzgsIDE1NjUwLCAxNTY2MCwgMTU2NzAsIAotICAgIDE1NjgwLCAxNTY4OSwgMTU3MDEsIDE1NzExLCAxNTcyMSwgMTU3MzIsIDE1NzM3LCAxNTc0OSwgMTU3NjEsIDE1NzczLCAKLSAgICAxNTc4NSwgMTU3OTcsIDE1ODA5LCAxNTgyMSwgMTU4MzMsIDE1ODQ1LCAxNTg1NywgMTU4NjgsIDE1ODgwLCAxNTg5MiwgCi0gICAgMTU5MDQsIDE1OTE2LCAxNTkyOCwgMTU5NDAsIDE1OTUyLCAxNTk2NCwgMTU5NzYsIDE1OTg4LCAxNTk5OSwgMTYwMTEsIAotICAgIDE2MDIzLCAxNjAzNSwgMTYwNDcsIDE2MDU5LCAxNjA3MSwgMTYwODMsIDE2MDk1LCAxNjEwNywgMTYxMTksIDE2MTMwLCAKLSAgICAxNjE0MiwgMTYxNTQsIDE2MTY2LCAxNjE3OCwgMTYxOTAsIDE2MjAyLCAxNjIxNCwgMTYyMjYsIDE2MjM4LCAxNjI1MCwgCi0gICAgMTYyNjEsIDE2MjczLCAxNjI4NSwgMTYyOTcsIDE2MzA5LCAxNjMyMSwgMTYzMzMsIDE2MzQ1LCAxNjM1NywgMTYzNjksIAotICAgIDE2MzgxLCAxNjM5MiwgMTY0MDQsIDE2NDE2LCAxNjQyOCwgMTY0NDAsIDE2NDUyLCAxNjQ2NCwgMTY0NzYsIDE2NDg4LCAKLSAgICAxNjUwMCwgMTY1MTIsIDE2NTIzLCAxNjUzNSwgMTY1NDcsIDE2NTU5LCAxNjU3MSwgMTY1ODMsIDE2NTk1LCAxNjYwNywgCi0gICAgMTY2MTksIDE2NjMxLCAxNjY0MywgMTY2NTQsIDE2NjY2LCAxNjY3OCwgMTY2OTAsIDE2NzAyLCAxNjcxNSwgMTY3MjgsIAotICAgIDE2NzQxLCAxNjc1NCwgMTY3NjcsIDE2NzgwLCAxNjc5MywgMTY4MDUsIDE2ODE4LCAxNjgzMSwgMTY4NDQsIDE2ODU3LCAKLSAgICAxNjg3MCwgMTY4ODMsIDE2ODk2LCAxNjkwOSwgMTY5MjIsIDE2OTM1LCAxNjk0NywgMTY5NjAsIDE2OTczLCAxNjk4NiwgCi0gICAgMTY5OTksIDE3MDEyLCAxNzAyNSwgMTcwMzgsIDE3MDUxLCAxNzA2NCwgMTcwNzcsIDE3MDg5LCAxNzEwMiwgMTcxMTUsIAotICAgIDE3MTI4LCAxNzE0MSwgMTcxNTQsIDE3MTY3LCAxNzE4MCwgMTcxOTMsIDE3MjA2LCAxNzIxOSwgMTcyMzEsIDE3MjQ0LCAKLSAgICAxNzI1NywgMTcyNzAsIDE3MjgzLCAxNzI5NiwgMTczMDksIDE3MzIyLCAxNzMzNSwgMTczNDgsIDE3MzYxLCAxNzM3MywgCi0gICAgMTczODYsIDE3Mzk5LCAxNzQxMiwgMTc0MjUsIDE3NDM4LCAxNzQ1MSwgMTc0NjQsIDE3NDc3LCAxNzQ5MCwgMTc1MDMsIAotICAgIDE3NTE1LCAxNzUyNiwgMTc1MzksIDE3NTUyLCAxNzU2NSwgMTc1NzgsIDE3NTkxLCAxNzYwNCwgMTc2MTcsIDE3NjMwLCAKLSAgICAxNzY0MywgMTc2NTYsIDE3NjY4LCAxNzY4MSwgMTc2OTQsIDE3NzA3LCAxNzcyMCwgMTc3MzMsIDE3NzQ2LCAxNzc1OSwgCi0gICAgMTc3NzIsIDE3Nzg1LCAxNzc5OCwgMTc4MTAsIDE3ODIzLCAxNzgzNiwgMTc4NDksIDE3ODYyLCAxNzg3NSwgMTc4ODgsIAotICAgIDE3OTAxLCAxNzkxNCwgMTc5MjcsIDE3OTQwLCAxNzk1MiwgMTc5NjUsIDE3OTc4LCAxNzk5MSwgMTgwMDQsIDE4MDE3LCAKLSAgICAxODAzMCwgMTgwNDMsIDE4MDU2LCAxODA2OSwgMTgwODIsIDE4MDk0LCAxODEwNywgMTgxMjAsIDE4MTMzLCAxODE0NiwgCi0gICAgMTgxNTksIDE4MTcyLCAxODE4NSwgMTgxOTgsIDE4MjExLCAxODIyNCwgMTgyMzYsIDE4MjQ5LCAxODI2MiwgMTgyNzUsIAotICAgIDE4Mjg4LCAxODMwMSwgMTgzMTQsIDE4MzI3LCAxODM0MCwgMTgzNTMsIDE4MzY2LCAxODM3OCwgMTgzOTEsIDE4NDA0LCAKLSAgICAxODQxNywgMTg0MzAsIDE4NDQzLCAxODQ1NiwgMTg0NjksIDE4NDgyLCAxODQ5NSwgMTg1MDgsIDE4NTIwLCAxODUzMywgCi0gICAgMTg1NDYsIDE4NTU5LCAxODU3MiwgMTg1ODUsIDE4NTk4LCAxODYxMSwgMTg2MjQsIDE4NjM3LCAxODY1MCwgMTg2NjIsIAotICAgIDE4Njc1LCAxODY4OCwgMTg3MDEsIDE4NzE0LCAxODcyNywgMTg3NDAsIDE4NzUzLCAxODc2NiwgMTg3NzksIDE4NzkyLCAKLSAgICAxODgwNCwgMTg4MTcsIDE4ODMwLCAxODg0MywgMTg4NTYsIDE4ODY5LCAxODg4MiwgMTg4OTUsIDE4OTA4LCAxODkyMSwgCi0gICAgMTg5MzQsIDE4OTQ2LCAxODk1NywgMTg5NjUsIDE4OTcyLCAxODk3OCwgMTg5ODIsIDE4OTg4LCAxODk5NCwgMTkwMDIsIAotICAgIDE5MDA4LCAxOTAxMywgMTkwMTcsIDE5MDI2LCA3NTQ3LCAxOTAzNywgMTkwNDQsIDE5MDUyLCAxOTA1OSwgMTkwNjYsIAotICAgIDkyOTMsIDE5MDczLCAxOTA4MiwgMTkwODcsIDE5MDkyLCA2MjM5LCAxOTA5OSwgMTkxMDQsIDE5MTA3LCAxOTExMiwgCi0gICAgMTkxMjAsIDE5MTI3LCAxOTEzNCwgMTkxNDEsIDE5MTQ3LCAxOTE1NiwgMTkxNjUsIDE5MTcxLCAxOTE4MCwgMTkxODYsIAotICAgIDE5MTkxLCAxOTIwMSwgMTkyMDgsIDE5MjE0LCAxOTIyMiwgMTkyMjgsIDE5MjM1LCAxOTI0NSwgMTkyNTQsIDE5MjU4LCAKLSAgICAxOTI2NSwgMTkyNjksIDE5Mjc0LCAxOTI4MCwgMTkyODgsIDE5MjkyLCAxOTMwMiwgMTI2NzksIDE5MzExLCAxOTMxNywgCi0gICAgMTkzMjEsIDE5MzMwLCAxOTMzNiwgMTkzNDMsIDE5MzU0LCAxOTM2MiwgMTkzNzEsIDczMzUsIDE5Mzc5LCAxOTM4NCwgCi0gICAgMTkzOTAsIDE5Mzk1LCAxOTM5OSwgMTk0MDMsIDE5NDA3LCA4MDA2LCAxOTQxMiwgMTk0MjAsIDE5NDI3LCAxOTQzNiwgCi0gICAgMTk0NDMsIDE5NDUwLCA5MjIzLCAxOTQ1NywgMTk0NjMsIDE5NDY3LCAxOTQ3MywgMTk0NzksIDE5NDg3LCAxOTQ5MywgCi0gICAgMTk1MDAsIDE5NTA2LCAxOTUxMiwgMTk1MjEsIDE5NTI1LCAxOTUzMywgMTk1NDIsIDE5NTQ5LCAxOTU1NCwgMTk1NTgsIAotICAgIDE5NTY5LCAxOTU3NCwgMTk1NzksIDE5NTg0LCAxOTU5NywgNjQyNiwgMTk2MDEsIDE5NjA3LCAxOTYxNSwgMTk2MTksIAotICAgIDE5NjI2LCAxOTYzNSwgMTk2NDAsIDE5NjQ4LCAxOTY2MCwgMTk2NjUsIDE5NjY5LCAxOTY3MiwgMTk2NzgsIDE5Njg0LCAKLSAgICAxOTY4OSwgMTk2OTMsIDE5Njk2LCAxOTcwNywgMTk3MTIsIDc3NTAsIDE5NzE5LCA3NTU4LCA3NzU1LCAxOTcyNCwgMTk3MjksIAotICAgIDE5NzM0LCAxOTczOSwgMTk3NDQsIDE5NzQ5LCAxOTc1NCwgMTk3NTksIDE5NzY0LCAxOTc2OSwgMTk3NzQsIDE5Nzc5LCAKLSAgICAxOTc4NSwgMTk3OTAsIDE5Nzk1LCAxOTgwMCwgMTk4MDUsIDE5ODEwLCAxOTgxNSwgMTk4MjAsIDE5ODI1LCAxOTgzMCwgCi0gICAgMTk4MzYsIDE5ODQyLCAxOTg0NywgMTk4NTIsIDE5ODU3LCAxOTg2MiwgMTk4NjcsIDE5ODcyLCAxOTg3NywgMTk4ODIsIAotICAgIDE5ODg3LCAxOTg5MywgMTk4OTgsIDE5OTAzLCAxOTkwOCwgMTk5MTQsIDE5OTIwLCAxOTkyNSwgMTk5MzAsIDE5OTM1LCAKLSAgICAxOTk0MCwgMTk5NDUsIDE5OTUwLCAxOTk1NSwgMTk5NjAsIDE5OTY2LCAxOTk3MSwgMTk5NzYsIDE5OTgxLCAxOTk4NiwgCi0gICAgMTk5OTIsIDE5OTk3LCAyMDAwMiwgMjAwMDYsIDEyOSwgMjAwMTQsIDIwMDE4LCAyMDAyMiwgMjAwMjYsIDIwMDMxLCAKLSAgICAyMDAzNSwgMjAwMzksIDEwNzgxLCAyMDA0MywgMjAwNDgsIDIwMDUyLCAyMDA1NywgMjAwNjEsIDIwMDY2LCAyMDA3MCwgCi0gICAgMjAwNzYsIDIwMDgxLCAyMDA4NSwgMjAwODksIDIwMDk3LCAyMDEwMSwgMjAxMDYsIDIwMTExLCAyMDExNSwgMjAxMjEsIAotICAgIDIwMTI2LCAyMDEzMCwgMjAxMzUsIDIwMTQwLCAyMDE0NCwgMjAxNTEsIDIwMTU4LCAyMDE2NSwgMjAxNjksIDIwMTczLCAKLSAgICAyMDE3OCwgMjAxODIsIDIwMTg1LCAyMDE5MSwgMjAyMDQsIDIwMjA5LCAyMDIxOCwgMjAyMjMsIDc3OTUsIDIwMjI4LCAKLSAgICAyMDIzMSwgMjY2NiwgMjY3MSwgMjAyMzUsIDIwMjQxLCAyMDI0NywgMjAyNTIsIDIwMjU3LCAyMDI2MiwgMjAyNjgsIAotICAgIDIwMjczLCAxMjE5MCwgMjAyNzgsIDIwMjgzLCAyMDI4OCwgMjAyOTQsIDIwMjk5LCAyMDMwNCwgMjAzMTAsIDIwMzE1LCAKLSAgICAyMDMxOSwgMjAzMjQsIDIwMzI5LCAyMDMzNCwgMjAzMzgsIDIwMzQzLCAyMDM0OCwgMjAzNTMsIDIwMzU4LCAyMDM2MiwgCi0gICAgMjAzNjYsIDIwMzcxLCAyODM2LCAyMDMyMCwgMjAzNzUsIDIwMzgzLCAyMDM5MCwgODEwMCwgMjA0MDIsIDIwNDEwLCAKLSAgICAyMDMyNSwgMjA0MTcsIDIwNDIyLCAyMDQzMCwgMjAzMzAsIDIwNDM1LCAyMDQ0MCwgMjA0NDgsIDIwNDUzLCAyMDQ1OCwgCi0gICAgMjA0NjIsIDIwNDY3LCAyMDQ3MSwgMjA0NzcsIDIwNDgwLCAyMDQ4NywgMjA0OTEsIDIwNDk1LCAyMDUwMSwgMjA1MDgsIAotICAgIDIwNTEzLCA3MzYyLCAxNjkwLCAxNjk1LCAyMDUxNywgMjA1MjMsIDIwNTI5LCAyMDUzNCwgMjA1MzgsIDIwNTQyLCAyMDU0NiwgCi0gICAgMjA1NDksIDIwNTU1LCAyMDU2MiwgMjA1NzAsIDIwNTc2LCAyMDU4MiwgMjA1ODcsIDIwNTkyLCAyMDU5NiwgMTMwMzksIAotICAgIDEzODk2LCAyMDYwMSwgMjA2MTMsIDIwNjE2LCAyMDYyMywgMjA2MzAsIDIwNjM0LCAyMDY0MiwgMjA2NTMsIDIwNjYyLCAKLSAgICAyMDY3NSwgMjA2ODUsIDIwNjk5LCAyMDcxMSwgMjA3MjUsIDIwNzM3LCAyMDc0NywgMjA3NTksIDIwNzY1LCAyMDc4MCwgCi0gICAgMjA4MDQsIDIwODIyLCAyMDg0MSwgMjA4NTQsIDIwODY4LCAyMDg4NiwgMjA5MDIsIDIwOTE5LCAyMDkzNywgMjA5NDgsIAotICAgIDIwOTY3LCAyMDk4NCwgMjEwMDQsIDIxMDIyLCAyMTAzNCwgMjEwNDgsIDIxMDYyLCAyMTA3NCwgMjEwOTEsIDIxMTEwLCAKLSAgICAyMTEyOCwgMjExNDAsIDIxMTU4LCAyMTE3NywgMTI4MTgsIDIxMTkwLCAyMTIxMCwgMjEyMjIsIDg4NzIsIDIxMjM0LCAKLSAgICAyMTIzOSwgMjEyNDQsIDIxMjQ5LCAyMTI1NSwgMjEyNjAsIDIxMjY0LCAyMTI3MSwgMjM1MiwgMjEyNzUsIDIxMjgxLCAKLSAgICAyMTI4NSwgMjEyODgsIDIxMjkyLCAyMTMwMCwgMjEzMDYsIDIwMzM5LCAyMTMxMCwgMjEzMTksIDIxMzMwLCAyMTMzNiwgCi0gICAgMjEzNDIsIDIxMzUxLCAyMTM1OSwgMjEzNjYsIDIxMzcxLCAyMTM3OCwgMjEzODQsIDIxMzkzLCAyMTQwMSwgMjE0MDgsIAotICAgIDIxNDE4LCAyMTQyNywgMjE0MzcsIDIxNDQyLCAyMTQ1MSwgMjE0NjAsIDIxNDcxLCAyMTQ4MiwgMzg4MCwgMjE0OTIsIAotICAgIDIxNDk2LCAyMTUwNiwgMjE1MTQsIDIxNTI0LCAyMTUzNSwgMjE1NDAsIDIxNTQ4LCAyMTU1NSwgMjE1NjEsIDIxNTY2LCAKLSAgICAyMDM0OSwgMjE1NzAsIDIxNTc5LCAyMTU4MywgMjE1ODYsIDIxNTkxLCAyMTU5OCwgMjE2MDcsIDIxNjE1LCAyMTYyMywgCi0gICAgMjE2MzMsIDIxNjQyLCAyMTY0OCwgMjE2NTQsIDIwMzU0LCAyMDM1OSwgMjE2NTgsIDIxNjY4LCAyMTY3OCwgMjE2ODgsIAotICAgIDIxNjk2LCAyMTcwMywgMjE3MTMsIDIxNzIxLCAyMTcyOSwgMjE3MzUsIDk2MiwgMjE3NDQsIDEzMDAwLCA1MzcsIDIxNzU4LCAKLSAgICAyMTc2NywgMjE3NzUsIDIxNzg2LCAyMTc5NywgMjE4MDcsIDIxODE2LCAyMTgyOCwgMjE4MzcsIDIxODQ2LCAyMTg1MiwgCi0gICAgMjE4NjEsIDIxODcwLCAyMTg4MCwgMjE4ODgsIDIxODk2LCA3NzI3LCAyMTkwMiwgMjE5MDUsIDIxOTA5LCAyMTkxNCwgCi0gICAgMjE5MTksIDgyMTUsIDIwMzY3LCAyMTkyNywgMjE5MzMsIDIxOTM5LCAyMTk0NCwgMjE5NDksIDIxOTUzLCAyMTk2MSwgCi0gICAgMjE5NjcsIDIxOTczLCAyMTk3NywgMzQ2NywgMjE5ODUsIDIxOTkwLCAyMTk5NSwgMjE5OTksIDIyMDAzLCA4Mjg3LCAKLSAgICAyMjAxMCwgMjIwMTgsIDIyMDI1LCAyMjAzMSwgODI5NiwgODMwMiwgMjIwMzksIDIyMDQ3LCAyMjA1NCwgMjIwNTksIAotICAgIDIyMDY0LCAyMjA3MCwgMjIwNzQsIDIyMDg1LCAyMjA5MCwgMjU1NSwgMjIwOTUsIDIyMTA2LCAyMjExMiwgMjIxMTcsIAotICAgIDIyMTIxLCAyMjEyNSwgMjIxMjgsIDIyMTM1LCAyMjE0MiwgMjIxNDksIDIyMTU1LCAyMjE1OSwgMjIxNjQsIDIyMTY4LCAKLSAgICAyMjE3MiwgOTc5LCAyMjE3NiwgMjIxODEsIDIyMTg2LCAyMjE5MSwgMjIxOTYsIDIyMjAxLCAyMjIwNiwgMjIyMTEsIAotICAgIDIyMjE2LCAyMjIyMSwgMjIyMjYsIDIyMjMxLCAyMjIzNiwgMjIyNDEsIDIyMjQ3LCAyMjI1MiwgMjIyNTcsIDIyMjYyLCAKLSAgICAyMjI2NywgMjIyNzIsIDIyMjc3LCAyMjI4MywgMjIyODgsIDIyMjkzLCAyMjI5OCwgMjIzMDMsIDIyMzA4LCAyMjMxMywgCi0gICAgMjIzMTgsIDIyMzI0LCAyMjMzMCwgMjIzMzUsIDIyMzQxLCAyMjM0NiwgMjIzNTEsIDUsIDIyMzU3LCAyMjM2MSwgMjIzNjUsIAotICAgIDIyMzY5LCAyMjM3NCwgMjIzNzgsIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk1LCAyMjM5OSwgMjI0MDQsIDIyNDA4LCAKLSAgICAyMjQxMSwgMjI0MTUsIDIyNDIwLCAyMjQyNCwgMjI0MjksIDIyNDMzLCAyMjQzNywgMjI0NDEsIDIyNDQ2LCAyMjQ1MCwgCi0gICAgMjI0NTQsIDIyNDY0LCAyMjQ2OSwgMjI0NzMsIDIyNDc3LCAyMjQ4MiwgMjI0ODcsIDIyNDk2LCAyMjUwMSwgMjI1MDYsIAotICAgIDIyNTEwLCAyMjUxNCwgMjI1MjcsIDIyNTM5LCAyMjU0OCwgMjI1NTcsIDIyNTYzLCAyMjU2OCwgMjI1NzIsIDIyNTc2LCAKLSAgICAyMjU4NiwgMjI1OTUsIDIyNjAzLCAyMjYwOSwgMjI2MTQsIDIyNjE4LCAyMjYyNSwgMjI2MzUsIDIyNjQ0LCAyMjY1MiwgCi0gICAgMjI2NjAsIDIyNjY3LCAyMjY3NSwgMjI2ODQsIDIyNjkzLCAyMjcwMSwgMjI3MDYsIDIyNzEwLCAyMjcxNCwgMjI3MTcsIAotICAgIDIyNzE5LCAyMjcyMywgMjI3MjcsIDIyNzMyLCAyMjczNywgMjI3NDEsIDIyNzQ1LCAyMjc0OCwgMjI3NTIsIDIyNzU1LCAKLSAgICAyMjc1OSwgMjI3NjIsIDIyNzY1LCAyMjc2OSwgMjI3NzUsIDIyNzc5LCAyMjc4MywgMjI3ODcsIDIyNzkyLCAyMjc5NywgCi0gICAgMjI4MDIsIDIyODA2LCAyMjgwOSwgMjI4MTQsIDIyODIwLCAyMjgyNSwgMjI4MzEsIDIyODM2LCAyMjg0MCwgMjI4NDQsIAotICAgIDIyODQ4LCAyMjg1MywgMjI4NTcsIDIyODYyLCAyMjg2NiwgMjI4NzMsIDIyODc3LCAyMjg4MCwgMjI4ODQsIDIyODkwLCAKLSAgICAyMjg5NiwgMjI5MDAsIDIyOTA0LCAyMjkwOSwgMjI5MTYsIDIyOTIyLCAyMjkyNiwgMjI5MzUsIDIyOTM5LCAyMjk0MywgCi0gICAgMjI5NDYsIDIyOTUyLCAyMjk1NywgMjI5NjMsIDE0NTIsIDE3NTQsIDIyOTY4LCAyMjk3MywgMjI5NzgsIDIyOTgzLCAKLSAgICAyMjk4OCwgMjI5OTMsIDIyOTk4LCAyMTA2LCAyMTQ4LCAyMzAwMywgMjMwMDYsIDIzMDEwLCAyMzAxNCwgMjMwMTksIAotICAgIDIzMDIzLCAyMzAyNywgMjMwMzAsIDIzMDM1LCAyMzA0MCwgMjMwNDQsIDIzMDQ3LCAyMzA1MiwgMjMwNTYsIDIzMDYxLCAKLSAgICAyMzA2NSwgMTMwMTIsIDIzMDcwLCAyMzA3MywgMjMwNzYsIDIzMDgwLCAyMzA4NSwgMjMwOTgsIDIzMTAyLCAyMzEwNSwgCi0gICAgMjMxMTMsIDIzMTIyLCAyMzEyOSwgMjMxMzQsIDIzMTQwLCAyMzE0NiwgMjMxNTMsIDIzMTYwLCAyMzE2NCwgMjMxNjgsIAotICAgIDIzMTcyLCAyMzE3NywgMjMxODIsIDIzMTg2LCAyMzE5NCwgMjMxOTksIDIzMjExLCAyMzIyMiwgMjMyMjcsIDIzMjMxLCAKLSAgICAyMzIzNSwgMjMyNDEsIDIzMjQ2LCAyMzI1MSwgMjMyNTUsIDIzMjU4LCAyMzI2NCwgNjM0NiwgMjI3MCwgMjMyNjgsIAotICAgIDIzMjczLCAyMzI4OSwgNzg0MiwgMjMzMDksIDIzMzE4LCAyMzMzNCwgMjMzMzgsIDIzMzQxLCAyMzM0NywgMjMzNTcsIAotICAgIDIzMzYzLCAyMzM3OCwgMjMzOTAsIDIzNDAxLCAyMzQwOSwgMjM0MTgsIDIzNDI0LCAyMzQzMywgMjM0NDMsIDIzNDU0LCAKLSAgICAyMzQ2NSwgMjM0NzQsIDIzNDgzLCAyMzQ5MSwgMjM0OTgsIDIzNTA2LCAyMzUxOSwgMjM1MjYsIDIzNTMyLCAyMzUzNywgCi0gICAgMjM1NDYsIDIzNTUyLCAyMzU1NywgMjM1NjUsIDIxNTE2LCAyMzU3NywgMjM1ODksIDIzNjAzLCAyMzYxMSwgMjM2MTgsIAotICAgIDIzNjMwLCAyMzYzOSwgMjM2NDgsIDIzNjU2LCAyMzY2NCwgMjM2NzIsIDIzNjc5LCAyMzY4OCwgMjM2OTYsIDIzNzA2LCAKLSAgICAyMzcxNSwgMjM3MjUsIDIzNzM0LCAyMzc0MywgMjM3NTEsIDIzNzU2LCAyMzc2MCwgMjM3NjMsIDIzNzY3LCAyMzc3MSwgCi0gICAgMjM3NzUsIDIzNzc5LCAyMzc4MywgMjM3ODksIDIzNzk1LCAyMzgwMywgMTMwNTcsIDIzODEwLCAyMzgxNSwgMjM4MjIsIAotICAgIDIzODI4LCAyMzgzNSwgMTMwNjUsIDIzODQyLCAyMzg0NSwgMjM4NTcsIDIzODY1LCAyMzg3MSwgMjM4NzYsIDIzODgwLCAKLSAgICA4MjQ1LCAyMzg5MSwgMjM5MDEsIDIzOTEwLCAyMzkxNywgMjM5MjEsIDEzMDcwLCAyMzkyNCwgMjM5MzEsIDIzOTM1LCAKLSAgICAyMzk0MSwgMjM5NDQsIDIzOTUxLCAyMzk1NywgMjM5NjEsIDIzOTY2LCAyMzk3MCwgMjM5NzksIDIzOTg2LCAyMzk5MiwgCi0gICAgNjM4NywgMjM5OTksIDI0MDA3LCAyNDAxNCwgMjQwMjAsIDI0MDI1LCAyNDAzMSwgMjQwMzcsIDI0MDQ1LCAyNDA0OSwgCi0gICAgMjQwNTIsIDI0MDU0LCAyMzc2OCwgMjQwNjMsIDI0MDY5LCAyNDA3OSwgMjQwODQsIDI0MDkxLCAyNDA5NywgMjQxMDIsIAotICAgIDI0MTA3LCAyNDExMiwgMjQxMTcsIDI0MTI0LCAyNDEzMywgMjQxNDAsIDI0MTQ5LCAyNDE1NSwgMjQxNjAsIDI0MTY2LCAKLSAgICAyNDE3MSwgMjQxNzgsIDI0MTg5LCAyNDE5NCwgMjQxOTgsIDI0MjA4LCAyNDIxNCwgMjQyMTgsIDI0MjIzLCAyNDIzMywgCi0gICAgMjQyNDIsIDI0MjQ2LCAyNDI1MywgMjQyNjEsIDI0MjY4LCAyNDI3NCwgMjQyNzksIDI0Mjg3LCAyNDI5NCwgMjQzMDYsIAotICAgIDI0MzE1LCAyNDMxOSwgMTEzNjIsIDI0MzI3LCAyNDMzNywgMjQzNDEsIDIzMTA5LCAyNDM1MiwgMjQzNTcsIDI0MzYxLCAKLSAgICAyNDM2OCwgMjQzNzUsIDIwMTE3LCAyMzY5MywgMjQzODAsIDI0Mzg0LCAyNDM4NywgMjA5NTQsIDI0MzkyLCAyNDQwNiwgCi0gICAgMjQ0MjIsIDI0NDQwLCAyNDQ1OSwgMjQ0NzYsIDI0NDk0LCAyMDk3MywgMjQ1MTEsIDI0NTMxLCAyMDk5MCwgMjQ1NDMsIAotICAgIDI0NTU1LCAxMzk4MywgMjQ1NjcsIDIxMDEwLCAyNDU4MSwgMjQ1OTMsIDg4ODUsIDI0NjA3LCAyNDYxMiwgMjQ2MTcsIAotICAgIDI0NjIyLCAyNDYyOCwgMjQ2MzQsIDI0NjQwLCAyNDY0NCwgMjQ2NTEsIDI0NjU2LCAyNDY2NiwgMjQ2NzIsIDg1MzIsIAotICAgIDI0Njc4LCAyNDY4MCwgMjQ2ODUsIDI0NjkzLCAyNDY5NywgMjQxMjAsIDI0NzAzLCAyNDcxMCwgOTg2OSwgOTg3OSwgCi0gICAgMjQ3MTcsIDI0NzI3LCAyNDczMiwgMjQ3MzYsIDI0NzM5LCAyNDc0NSwgMjQ3NTMsIDI0NzY1LCAyNDc3NSwgMjQ3OTEsIAotICAgIDI0ODA0LCAyNDgxOCwgMTQwMDEsIDI0ODMyLCAyNDgzOSwgMjQ4NDMsIDI0ODQ2LCAyNDg1MSwgMjQ4NTUsIDI0ODYyLCAKLSAgICAyNDg2OSwgMjQ4NzksIDI0ODg0LCAyNDg4OSwgMjQ4OTQsIDI0OTAyLCAyNDkxMCwgMjQ5MTksIDI0OTI0LCA3OTM5LCAKLSAgICAyNDkyOCwgMjQ5MzEsIDI0OTM0LCAyNDkzOSwgMjQ5NDYsIDI0OTUxLCAyNDk2NywgMjQ5NzUsIDI0OTgzLCA3NzkwLCAKLSAgICAyNDk5MSwgMjQ5OTYsIDI1MDAwLCAyNTAwNiwgMjUwMTIsIDI1MDE1LCAyNTAyMSwgMjUwMzMsIDI1MDQxLCAyNTA0OCwgCi0gICAgMjUwNTQsIDI1MDYxLCAyNTA3MiwgMjUwODYsIDI1MDk5LCAyNTEwOCwgMjUxMjAsIDI1MTMxLCAyNTE0MSwgMjUxNTAsIAotICAgIDI1MTU5LCAyNTE2NywgMjUxNzgsIDYzNjksIDI1MTg1LCAyNTE5MSwgMjUxOTYsIDI1MjAyLCAyNTIwOSwgMjUyMTksIAotICAgIDI1MjI5LCAyNTIzOCwgMjUyNDQsIDI1MjUxLCAyNTI1NiwgMjUyNjMsIDI1MjcxLCAyNTI3OSwgMjUyOTEsIDQ3MDQsIAotICAgIDI1Mjk4LCAyNTMwNywgMjUzMTUsIDI1MzIxLCAyNTMyNywgMjUzMzIsIDI1MzM2LCAyNTMzOSwgMjUzNDUsIDI1MzUyLCAKLSAgICAyNTM1NywgMjUzNjIsIDI1MzY2LCAyNTM3OCwgMjUzODksIDI1Mzk4LCAyNTQwNiwgMTMxOTcsIDI1NDExLCAyNTQxNywgCi0gICAgMjU0MjMsIDk4NjIsIDcwNDksIDI1NDI4LCAyNTQzMSwgMjU0MzQsIDI1NDQwLCAyNTQ0OCwgMjU0NTYsIDI1NDYwLCAKLSAgICAyNTQ2NCwgMjU0NjksIDI1NDcyLCAyNTQ4MSwgMjU0ODksIDI1NTAwLCAyNTUwNCwgMjU1MTAsIDI1NTE2LCAyNTUyMCwgCi0gICAgMjU1MjYsIDI1NTM0LCAyNTU1NiwgMjU1ODAsIDI1NTg3LCAyNTU5NCwgMjU2MDAsIDI1NjA2LCAyNTYxMSwgMjU2MjIsIAotICAgIDI1NjQwLCAyNTY0NywgMjU2NTUsIDI1NjU5LCAyNTY2OCwgMjU2ODEsIDI1Njg5LCAyNTcwMSwgMjU3MTIsIDI1NzIyLCAKLSAgICAyNTczNiwgMjU3NDUsIDI1NzUzLCAyNTc2NSwgNzg1OSwgMjU3NzYsIDI1Nzg3LCAyNTc5OSwgMjU4MDksIDI1ODE4LCAKLSAgICAyNTgyMywgMjU4MjcsIDI1ODM1LCAyNTg0NSwgMjU4NTAsIDI1ODU0LCAyNTg1NywgMjU4NjAsIDI1ODY4LCAyNTg3NiwgCi0gICAgMjU4ODUsIDI1ODk1LCAyNTkwNCwgMjU5MTAsIDI1OTI0LCAyNjE3LCAyNTk0NiwgMjU5NTcsIDI1OTY2LCAyNTk3NiwgCi0gICAgMjU5ODgsIDI1OTk3LCAyNjAwNywgMjYwMTUsIDI2MDIzLCAyNjAzMiwgMjYwMzcsIDI2MDQ4LCAyNjA1MywgMjYwNjQsIAotICAgIDI2MDY4LCAyNjA3OCwgMjYwODcsIDI2MDk1LCAyNjEwNSwgMjYxMTUsIDI2MTIzLCAyNjEzMiwgMjYxMzksIDI2MTQ3LCAKLSAgICAyNjE1NCwgMjYxNjMsIDI2MTY3LCAyNjE3NSwgMjYxODIsIDI2MTkwLCAyNjE5NywgMjYyMDgsIDI2MjIzLCAyNjIzMCwgCi0gICAgMjYyMzYsIDI2MjQ2LCAyNjI1NSwgMjYyNjEsIDI2MjY4LCAxMjMxMiwgMjYyNzQsIDI2Mjc4LCAyNjI4MywgMjYyODcsIAotICAgIDI2MjkxLCAyNjI5OSwgMjYzMDcsIDI2MzEzLCAyNjMyMiwgMjYzMjksIDI2MzM0LCAyNjMzOSwgMjYzNDksIDIxNTY4LCAKLSAgICAyNjM1MywgMjYzNTYsIDI2MzYxLCAyNjM2NiwgMjYzNzEsIDI2Mzc2LCAyNjM4MSwgMjYzODYsIDI2MzkxLCAyNjM5NiwgCi0gICAgMjY0MDIsIDI2NDA3LCAyNjQxMiwgMjY0MTgsIDEyMjMsIDY3OSwgMjY0MjMsIDI2NDMyLCAyMzE4LCAyNjQzOSwgMjY0NDQsIAotICAgIDI2NDQ4LCAyNjQ1NCwgMTI1NiwgNTQxLCAzMzQsIDI2NDU5LCAyNjQ2OCwgMjY0NzYsIDI2NDg1LCAyNjQ5MywgMjY1MDQsIAotICAgIDI2NTEzLCAyNjUyMSwgMjY1MjUsIDI2NTI4LCAyNjUzNiwgMjY1NDQsIDI2NTQ5LCAxMzAyNSwgMjY1NTUsIDI2NTYxLCAKLSAgICAyNjU2NywgNDM1MCwgMjY1NzIsIDI2NTc2LCAyNjU4MiwgMjY1ODYsIDI2NTkzLCAxNDE4LCAyNjU5OSwgNzk0NiwgMjY2MDYsIAotICAgIDI2NjE2LCAyNjYyNCwgMjY2MzAsIDI2NjM5LCAyNjY0NywgMjY2NTMsIDI2NjYxLCAyNjY2OCwgOTQ1NSwgMjY2NzQsIAotICAgIDI2NjgxLCAyNjY4OCwgMTQ1OSwgMjEwNSwgMjY2OTQsIDI2NzAwLCAyNjcwNywgMjY3MTgsIDI2NzI5LCAyNjczNywgCi0gICAgMjY3NDQsIDI2NzU0LCAyNjc2MywgMjY3NzEsIDI2Nzc4LCAyNjc4NSwgMjY3OTgsIDI2ODA5LCAyNjgyOCwgMTI2MSwgCi0gICAgMjY4MzIsIDI2ODM3LCAyNjg0NSwgMzUxMCwgMjY4NDksIDI2ODU0LCAyNjg1OCwgMTQyMiwgMjI3NDYsIDI2ODY4LCAKLSAgICAyNjg3MiwgMjY4NzcsIDI2ODgxLCAzNDM1LCAyNjg4NywgMjY4OTUsIDI2OTAyLCAyNjkxMywgMjY5MjEsIDI2OTI5LCAKLSAgICAzNTExLCAyNjksIDI2OTM0LCAyNjk0MiwgMjY5NTAsIDI2OTU3LCAyNjk2MywgMjY5NjgsIDIxNzAsIDI2OTc1LCAyNjk4MSwgCi0gICAgMjM5NjIsIDI0MTg0LCAyNjk4NywgMTA2LCAyNjk5MSwgMjY5OTUsIDI3MDAxLCA2MDYsIDc2OTUsIDI3MDA2LCAyNzAxMywgCi0gICAgMjcwMTksIDIyODEsIDI3MDIzLCAyNzAyNywgMjcwMzAsIDI3MDMzLCAyNzAzOCwgMjcwNDUsIDI3MDUxLCAyNzA1NiwgCi0gICAgMjcwNjQsIDI3MDcxLCAyNzA3NywgMjA0NTUsIDI3MDgxLCAzNTgxLCAxNDgyNiwgMjcwODUsIDI3MDkwLCAyNzA5MywgCi0gICAgMjcxMDEsIDI3MTA5LCAyNzExMiwgMjcxMTksIDI3MTI5LCAyNzE0MSwgMjcxNDYsIDI3MTUwLCAyNzE1OCwgMjcxNjUsIAotICAgIDI3MTcxLCAyNzE3OCwgMjcxODUsIDI3MTg4LCAyNzE5MiwgMjcxOTYsIDE0MjYsIDI3MjA2LCAyNzIwOCwgMjcyMTMsIAotICAgIDI3MjE5LCAyNzIyNSwgMjcyMzAsIDI3MjM1LCAyNzI0MCwgMjcyNDUsIDI3MjUwLCAyNzI1NSwgMjcyNjAsIDI3MjY1LCAKLSAgICAyNzI3MCwgMjcyNzUsIDI3MjgwLCAyNzI4NSwgMjcyOTAsIDI3Mjk1LCAyNzMwMSwgMjczMDcsIDI3MzEzLCAyNzMxOSwgCi0gICAgMjczMjQsIDI3MzI5LCAyNzMzNCwgMjczNDAsIDI3MzQ1LCAyNzM1MCwgMjczNTUsIDI3MzYxLCAyNzM2NiwgMjczNzIsIAotICAgIDI3Mzc3LCAyNzM4MiwgMjczODcsIDI3MzkyLCAyNzM5OCwgMjc0MDMsIDI3NDA5LCAyNzQxNCwgMjc0MTksIDI3NDI0LCAKLSAgICAyNzQyOSwgMjc0MzUsIDI3NDQwLCAyNzQ0NiwgMjc0NTEsIDI3NDU2LCAyNzQ2MSwgMjc0NjYsIDI3NDcxLCAyNzQ3NiwgCi0gICAgMjc0ODEsIDI3NDg2LCAyNzQ5MSwgMjc0OTcsIDI3NTAzLCAyNzUwOSwgMjc1MTQsIDI3NTE5LCAyNzUyNCwgMjc1MjksIAotICAgIDI3NTM1LCAyNzU0MSwgMjc1NDcsIDI3NTUzLCAyNzU1OSwgMjc1NjUsIDI3NTcwLCAyNzU3NiwgMjc1ODEsIDI3NTg2LCAKLSAgICAyNzU5MSwgMjc1OTYsIDI3NjAyLCAyMzk3LCAyNzYwNywgMjQwNCwgMjQxMSwgMjcwOCwgMjc2MTIsIDI0MTcsIDI0MjcsIAotICAgIDI3NjE4LCAyNzYyMiwgMjc2MjcsIDI3NjMyLCAyNzYzOCwgMjc2NDMsIDI3NjQ4LCAyNzY1MiwgMjc2NTcsIDI3NjYzLCAKLSAgICAyNzY2OCwgMjc2NzMsIDI3Njc4LCAyNzY4NCwgMjc2ODksIDI3NjkzLCAyNzY5NywgMjc3MDIsIDI3NzA3LCAyNzcxMiwgCi0gICAgMjc3MTcsIDI3NzIyLCAyNzcyOCwgMjc3MzQsIDI3NzM5LCAyNzc0MywgMjc3NDgsIDI3NzU0LCAyNzc1OCwgMjc3NjMsIAotICAgIDI3NzY4LCAyNzc3MywgMjc3NzgsIDI3NzgyLCAyNzc4NSwgMjc3OTAsIDI3Nzk1LCAyNzgwMCwgMjc4MDUsIDI3ODExLCAKLSAgICAyNzgxNywgMjc4MjIsIDI3ODI3LCAyNzgzMSwgMjc4MzYsIDI3ODQxLCAyNzg0NiwgMjc4NTEsIDI3ODU2LCAyNzg2MCwgCi0gICAgMjc4NjUsIDI3ODcwLCAyNzg3NSwgMjc4NzksIDI3ODgzLCAyNzg4NywgMjc4OTIsIDI3OTAwLCAyNzkwNiwgMjc5MTIsIAotICAgIDI3OTE4LCAyNzkyMywgMjc5MjcsIDI3OTMwLCAyNzkzNSwgMjc5MzksIDI3OTQ0LCAyNzk0OCwgMjc5NTMsIDI3OTU3LCAKLSAgICAyNzk2MCwgMTU0ODksIDI3OTY1LCAyNzk3MywgMTk0MzksIDI2NjAzLCAyNzk3OCwgMjc5ODMsIDI3OTg3LCAyNzk5MiwgCi0gICAgMjc5OTYsIDI4MDAwLCAyODAwNSwgMjgwMDksIDI4MDEyLCAyODAxNSwgMjgwMTksIDI4MDI0LCAyODAzMiwgMjgwMzYsIAotICAgIDI4MDM5LCAyODA0NCwgMjgwNDgsIDI4MDUyLCAyODA1NywgMjgwNjIsIDI4MDY2LCAyODA3MiwgMjgwNzcsIDI4MDgyLCAKLSAgICAyODA4OSwgMjgwOTYsIDI4MTAwLCAyODEwMywgMjgxMDksIDI4MTE4LCAyODEyNSwgMjgxMzMsIDI4MTQwLCAyODE0NCwgCi0gICAgMjgxNDksIDI4MTUzLCAyODE1OSwgMjgxNjUsIDI4MTY5LCAyODE3NSwgMjgxODAsIDI4MTg1LCAyODE5MiwgMjgxOTgsIAotICAgIDI4MjA0LCAyODIxMCwgMjgyMTYsIDI4MjIzLCAyODIyOSwgMjgyMzUsIDI4MjQxLCAyODI0NywgMjgyNTMsIDI4MjU5LCAKLSAgICAyODI2NSwgMjgyNzIsIDI4Mjc4LCAyODI4NSwgMjgyOTEsIDI4Mjk3LCAyODMwMywgMjgzMDksIDI4MzE1LCAyODMyMSwgCi0gICAgMjgzMjcsIDI4MzMzLCAyODMzOSwgOTc2MywgMjgzNDUsIDI4MzUwLCAyODM1NSwgMjgzNTgsIDI4MzY2LCAyODM3MSwgCi0gICAgMjgzODAsIDI4Mzg2LCAyODM5MSwgMjgzOTYsIDI4NDAxLCAyODQwNSwgMjg0MTAsIDI4NDE1LCAyODQyMCwgMjg0MjUsIAotICAgIDI4NDMwLCAyODQzNywgMjg0NDQsIDI4NDUwLCAyODQ1NiwgMjg0NjEsIDE0NTEwLCAyODQ2OCwgMjg0NzQsIDI4NDgxLCAKLSAgICAyODQ4NywgMjg0OTMsIDI4NDk4LCAyODUwNiwgMjg1MTEsIDE0Mjk0LCAyODUxNSwgMjg1MjAsIDI4NTI1LCAyODUzMSwgCi0gICAgMjg1MzYsIDI4NTQxLCAyODU0NSwgMjg1NTAsIDI4NTU1LCAyODU2MSwgMjg1NjYsIDI4NTcxLCAyODU3NSwgMjg1ODAsIAotICAgIDI4NTg1LCAyODU4OSwgMjg1OTQsIDI4NTk5LCAyODYwNCwgMjg2MDgsIDI4NjEzLCAyODYxOCwgMjg2MjMsIDI4NjI3LCAKLSAgICAyODYzMSwgMTM1MzEsIDI4NjM1LCAyODY0NCwgMjg2NTAsIDI4NjU2LCAyODY2NSwgMjg2NzMsIDI4NjgyLCAyODY5MCwgCi0gICAgMjg2OTUsIDI4Njk5LCAyODcwNiwgMjg3MTIsIDI4NzE2LCAyODcxOSwgMjg3MjQsIDI4NzMzLCAyODc0MSwgMjg3NDYsIAotICAgIDE0NTgsIDI4NzUyLCAyODc1NSwgMjg3NTksIDIwNTI0LCAyMDUzMCwgMjg3NjUsIDI4NzY5LCAyODc4MCwgMjg3OTEsIAotICAgIDI4ODAyLCAyODgxNCwgMjg4MjEsIDI4ODI4LCAyODgzMywgMjg4MzcsIDQzODcsIDczMywgMTk0MzgsIDI4ODQ1LCAyODg0OSwgCi0gICAgMjg4NTQsIDI4ODYwLCAyODg2NSwgMjg4NzEsIDI4ODc2LCAyODg4MiwgMjg4ODcsIDg3NjQsIDI3ODUsIDMzNjUsIDI4ODkxLCAKLSAgICAyODg5NCwgMjg5MDAsIDI4OTA2LCAyODkxMiwgMjg5MTksIDI4OTI1LCAyODkzMSwgMjg5MzcsIDI4OTQzLCAyODk0OSwgCi0gICAgMjg5NTUsIDI4OTYxLCAyODk2NywgMjg5NzMsIDI4OTc5LCAyODk4NSwgMjg5OTEsIDI4OTk4LCAyOTAwNCwgMjkwMTAsIAotICAgIDI5MDE2LCAyOTAyMiwgMjkwMjgsIDI5MDMzLCAyOTAzNiwgMjkwNDMsIDI5MDUxLCAyOTA1NiwgMjkwNjEsIDI5MDY3LCAKLSAgICAyOTA3MiwgMjkwNzcsIDI5MDgxLCAyOTA4NiwgMjkwOTIsIDI5MDk3LCAyOTEwMywgMjkxMDgsIDI5MTE0LCAyOTExOSwgCi0gICAgMjkxMjUsIDI5MTMxLCAyOTEzNSwgMjkxNDAsIDI5MTQ1LCAyOTE1MCwgMjkxNTUsIDI5MTU5LCAyOTE2NCwgMjkxNjksIAotICAgIDI5MTc0LCAyOTE4MCwgMjkxODYsIDI5MTkyLCAyOTE5OCwgMjkyMDMsIDI5MjA3LCAyOTIxMCwgMjkyMTYsIDI5MjIyLCAKLSAgICAyOTIzMSwgMjkyMzksIDI5MjQ2LCAyOTI1MSwgMjkyNTUsIDI5MjU5LCAyOTI2NCwgMTMzOTUsIDI5MjY5LCAyOTI3NywgCi0gICAgMjkyODMsIDM2MTEsIDI5Mjg4LCAyOTI5MSwgMjkyOTUsIDY0MzYsIDI5MzAxLCAyOTMwNywgMjkzMTQsIDY0NDUsIDI5MzE4LCAKLSAgICAyOTMyNCwgMjkzMzEsIDI5MzM3LCAyOTM0NiwgMjkzNTQsIDI5MzY2LCAyOTM3MCwgMjkzNzcsIDI5MzgzLCAyOTM4NywgCi0gICAgMjkzOTAsIDI5Mzk5LCAyOTQwNywgMjk0MTIsIDI5NDE2LCAyOTQyNiwgMjk0MzYsIDI5NDQ2LCAyOTQ1MiwgMjk0NTcsIAotICAgIDI5NDY3LCAyOTQ3MiwgMjk0ODUsIDI5NDk5LCAyOTUxMCwgMjk1MjIsIDI5NTM0LCAyOTU0OCwgMjk1NjEsIDI5NTczLCAKLSAgICAyOTU4NSwgMTI4NTksIDI5NTk5LCAyOTYwNCwgMjk2MDksIDI5NjEzLCAyOTYxNywgMjk2MjEsIDE3NDMsIDI1MTI5LCAKLSAgICAyOTYyNSwgMjk2MzAsIDI5NjM1LCAyOTYzOSwgMjk2NDIsIDI5NjQ3LCAyOTY1MiwgMjk2NTgsIDI5NjY0LCA4NDYxLCAKLSAgICAyOTY2OSwgMjk2NzYsIDEzOTM1LCAyOTY4MiwgMjk2ODcsIDI5NjkyLCAyOTY5NiwgMjk3MDEsIDI5NzA2LCAyODg1NSwgCi0gICAgMjk3MTEsIDI5NzE2LCAyOTcyMSwgMjk3MjcsIDI4ODYxLCAyOTczMiwgMjk3MzUsIDI5NzQyLCAyOTc1MCwgMjk3NTYsIAotICAgIDI5NzYyLCAyOTc2OCwgMjk3NzksIDI5Nzg0LCAyOTc5MSwgMjk3OTgsIDI5ODA1LCAyOTgxMywgMjk4MjIsIDI5ODMxLCAKLSAgICAyOTgzNywgMjk4NDMsIDI5ODUxLCAyODg2NiwgMjk4NTYsIDI5ODYyLCAyOTg2OCwgMjg4NzIsIDI5ODczLCAyOTg4MSwgCi0gICAgMjk4ODksIDI5ODk1LCAyOTkwMiwgMjk5MDgsIDI5OTE1LCAyOTkyMiwgMjk5MjgsIDI5OTM2LCAyOTk0NiwgMjk5NTMsIAotICAgIDI5OTU4LCAyOTk2NCwgMjk5NjksIDI5OTc0LCAyOTk4MSwgMjk5OTAsIDI5OTk4LCAzMDAwMywgMzAwMDksIDMwMDE2LCAKLSAgICAzMDAyNCwgMzAwMzAsIDMwMDM1LCAzMDA0MSwgMzAwNTAsIDI1ODkwLCAzMDA1NywgMzAwNjEsIDMwMDY2LCAzMDA3NSwgCi0gICAgMzAwODAsIDMwMDg1LCAxMDcxNCwgMzAwOTMsIDMwMDk4LCAzMDEwMywgMzAxMDcsIDMwMTEyLCAzMDExNywgMzAxMjQsIAotICAgIDMwMTI5LCAzMDEzNCwgMjg4NzcsIDI4ODgzLCAzMDE0MCwgMjQ3MywgMjM5LCAzMDE0MywgMzAxNDYsIDMwMTUwLCAzMDE1NCwgCi0gICAgMzAxNjQsIDMwMTcyLCAzMDE3NiwgMzAxODMsIDMwMTkwLCAzMDE5NCwgMzAxOTcsIDMwMjAzLCAzMDIxMSwgMzAyMTksIAotICAgIDMwMjIzLCAzMDIyNywgMzAyMzAsIDMwMjM3LCAzMDI0MSwgMzAyNDgsIDMwMjU2LCAzMDI2MywgMzAyNjcsIDMwMjc1LCAKLSAgICA2ODQsIDI5NywgMzAyODcsIDMwMjkyLCAzMDI5NywgMzAzMDMsIDMwMzA4LCAzMDMxMywgMzYzMiwgMzAzMTgsIDMwMzIxLCAKLSAgICAzMDMyNiwgMzAzMzEsIDMwMzM2LCAzMDM0MSwgMzAzNDYsIDMwMzUzLCAyMDYwOSwgMzAzNTgsIDMwMzYzLCAzMDM2OCwgCi0gICAgMzAzNzMsIDMwMzc4LCAzMDM4NCwgMzAzODksIDMwMzk1LCAyOTAzOSwgMzA0MDEsIDMwNDA2LCAzMDQxMiwgMzA0MTgsIAotICAgIDMwNDI4LCAzMDQzMywgMzA0MzgsIDMwNDQyLCAzMDQ0NywgMzA0NTIsIDMwNDU3LCAzMDQ2MiwgMzA0NzUsIDMwNDgwLCAKLSAgICAyMDQwNiwgMTQ5MDYsIDM2MzgsIDMwNDg0LCAzMDQ4OSwgMzA0OTQsIDMwNTAwLCAzMDUwNSwgMzA1MTAsIDMwNTE0LCAKLSAgICAzMDUxOSwgMzA1MjQsIDMwNTMwLCAzMDUzNSwgMzA1NDAsIDMwNTQ0LCAzMDU0OSwgMzA1NTQsIDMwNTU5LCAzMDU2MywgCi0gICAgMzA1NjgsIDMwNTczLCAzMDU3OCwgMzA1ODQsIDMwNTkwLCAzMDU5NSwgMzA1OTksIDMwNjA0LCAzMDYwOSwgMzA2MTQsIAotICAgIDMwNjE4LCAzMDYyNiwgMzA2MzAsIDMwNjM2LCAzMDY0MCwgMzA2NDcsIDE0Njk5LCAzMDY1MywgMzA2NjAsIDMwNjY4LCAKLSAgICAzMDY3NSwgMzA2ODEsIDMwNjkzLCAzMDY5OSwgMzA3MDMsIDI3MjcsIDMwNzA3LCAzMDcxMSwgMzAyMzIsIDMwNzIwLCAKLSAgICAzMDczMSwgMzA3MzYsIDMwNzQxLCAzMDc0NiwgMzA3NTAsIDMwNzU1LCAyMDUzNSwgMzA3NTksIDMwNzY0LCAxOTQ1OSwgCi0gICAgMzA3NjgsIDMwNzczLCAzMDc3OSwgMzA3ODQsIDMwNzg4LCAzMDc5MiwgMzA3OTUsIDMwNzk5LCAzMDgwNSwgMzA4MTYsIAotICAgIDMwODI4LCAzMDgzMywgMzA4MzcsIDMwODQwLCAzNDMsIDMwODQ0LCAzMDg0OSwgMzA4NTQsIDMwODU5LCAzMDg2NCwgCi0gICAgMzA4NjksIDMwODc1LCAzMDg4MCwgMzA4ODUsIDMwODkxLCAzMDg5NiwgMzA5MDIsIDMwOTA3LCAzMDkxMywgMzA5MTgsIAotICAgIDMwOTIzLCAzMDkyOCwgMzA5MzMsIDMwOTM4LCAzMDk0MywgMzA5NDgsIDMwOTUzLCAzMDk1OSwgMzA5NjQsIDMwOTY5LCAKLSAgICAzMDk3NCwgMzA5NzksIDMwOTg0LCAzMDk4OSwgMzA5OTQsIDMxMDAwLCAzMTAwNiwgMzEwMTEsIDMxMDE2LCAzMTAyMSwgCi0gICAgMzEwMjYsIDMxMDMxLCAzMTAzNiwgMzEwNDEsIDMxMDQ2LCAzMTA1MSwgMzEwNTYsIDMxMDYxLCAzMTA2NiwgMzEwNzEsIAotICAgIDMxMDc2LCAzMTA4MSwgMzEwODYsIDMxMDkxLCAzMTA5NiwgMzExMDIsIDI2LCAzMTEwNywgMzExMTEsIDMxMTE1LCAzMTEyMywgCi0gICAgMzExMjcsIDMxMTMxLCAzMTEzNCwgMzExMzcsIDMxMTM5LCAzMTE0NCwgMzExNDgsIDMxMTUzLCAzMTE1NywgMzExNjIsIAotICAgIDMxMTY2LCAzMTE3MSwgMzExNzUsIDMxMTc4LCAzMTE4MCwgMzExODUsIDMxMTg5LCAzMTIwMCwgMzEyMDMsIDMxMjA1LCAKLSAgICAzMTIwOSwgMzEyMjEsIDMxMjMwLCAzMTIzNCwgMzEyNDAsIDMxMjQ1LCAzMTI1NCwgMzEyNjAsIDMxMjY1LCAzMTI3MCwgCi0gICAgMzEyNzQsIDMxMjc5LCAzMTI4NiwgMzEyOTEsIDMxMjk3LCAzMTMwMiwgMzEzMDYsIDMxMzEzLCAyMzcwMSwgMjM3MTEsIAotICAgIDMxMzE3LCAzMTMyMiwgMzEzMjcsIDMxMzMyLCAzMTMzOSwgMzEzNDMsIDMxMzUwLCA2NTQ0LCAzMTM1NiwgMzEzNjUsIAotICAgIDMxMzczLCAzMTM4OCwgMzE0MDIsIDMxNDEwLCAzMTQyMSwgMzE0MzAsIDMxNDM1LCA1NjgxLCAzMTQ0NSwgMzE0NTAsIAotICAgIDMxNDU1LCAzMTQ1OSwgMzE0NjIsIDMxNDY2LCAzMTQ3MSwgMzE0NzUsIDMxNDgyLCAzMTQ4NywgMzE0OTIsIDczMjAsIAotICAgIDMxNTAyLCAzMTUwNCwgMzE1MDcsIDMxNTExLCAzMTUxNywgMzE1MjEsIDMxNTI2LCAzMTUzMSwgMzE1MzcsIDMxNTQyLCAKLSAgICAzMTU0OCwgMzE1NTMsIDMxNTYzLCAzMTU3MiwgMzE1ODAsIDMxNTg1LCAzMTU5MSwgMzE1OTYsIDMxNjAzLCAzMTYwNywgCi0gICAgMzE2MTUsIDMxNjIyLCAzMTYzNSwgMzE2NDMsIDMxNjQ3LCAzMTY1NywgMzE2NjIsIDMxNjY2LCAzMTY3NCwgMzE2ODIsIAotICAgIDMxNjg2LCAzMTY5NSwgMzE3MDEsIDMxNzA2LCAzMTcxNCwgMzE3MjQsIDMxNzMzLCAzMTc0MiwgMzE3NTEsIDMxNzYyLCAKLSAgICAzMTc3MCwgMzE3ODEsIDMxNzkwLCAzMTc5NywgMzE4MDMsIDMxODA4LCAzMTgxOSwgMzE4MjQsIDMxODI4LCAzMTgzMSwgCi0gICAgMzE4MzUsIDMxODQzLCAzMTg0OSwgMzE4NTcsIDMxODY0LCAzMTg3MCwgMzE4NzUsIDMxODgxLCAyMzcyLCAzMTg4NSwgCi0gICAgMzE4ODcsIDMxODkyLCAzMTg5NywgMzE5MDAsIDMxOTAyLCAzMTkwNiwgMzE5MDksIDMxOTE2LCAzMTkyMCwgMzE5MjQsIAotICAgIDMxOTI3LCAzMTkzMywgMzE5NDMsIDMxOTQ4LCAzMTk1NCwgMzE5NTgsIDMxOTYzLCAzMTk3NiwgMjQwNzQsIDMxOTgyLCAKLSAgICAzMTk5MSwgMTU2NTQsIDMxOTk4LCAzMjAwNywgMjk0MzIsIDMyMDE1LCAzMjAyMCwgMzIwMjQsIDMyMDMyLCAzMjAzOSwgCi0gICAgMzIwNDQsIDMyMDQ4LCAzMjA1MywgMzIwNTcsIDMyMDY1LCAzMjA3MSwgMzIwNzcsIDMyMDgyLCAzMjA4NiwgMzIwODksIAotICAgIDMyMDk0LCAzMjEwNywgMzIxMjMsIDIxMDgwLCAzMjE0MCwgMzIxNTIsIDMyMTY5LCAzMjE4MSwgMzIxOTUsIDIxMDk3LCAKLSAgICAyMTExNiwgMzIyMDcsIDMyMjE5LCAyNjM0LCAzMjIzMywgMzIyMzgsIDMyMjQzLCAzMjI0OCwgMzIyNTIsIDMyMjU5LCAKLSAgICAzMjI3MSwgMzIyNzcsIDMyMjgwLCAzMjI5MSwgMzIzMDIsIDI5ODQ4LCA2NzAsIDMyMzA3LCAzMjMxMSwgMzIzMTQsIAotICAgIDMyMzE5LCAzMjMyNCwgMzIzMzAsIDMyMzM1LCAzMjM0MCwgMzIzNDYsIDMyMzUyLCAzMjM1NywgMzIzNjEsIDMyMzY2LCAKLSAgICAzMjM3MSwgMzIzNzYsIDMyMzgwLCAzMjM4MywgMzIzODksIDMyMzk0LCAzMjM5OSwgMzI0MDQsIDMyNDA4LCAzMjQxMywgCi0gICAgMzI0MTksIDMyNDI3LCAyNDI5OSwgMzI0MzIsIDMyNDM3LCAzMjQ0NCwgMzI0NTAsIDMyNDU2LCAzMjQ2MSwgMzI0NjksIAotICAgIDIwNjE4LCAzMjQ3NiwgMzI0ODEsIDMyNDg2LCAzMjQ5MSwgMzI0OTUsIDMyNDk4LCAzMjUwMywgMzI1MDcsIDMyNTExLCAKLSAgICAzMjUxOCwgMzI1MjQsIDMyNTMwLCAzMjUzNiwgMzI1NDMsIDMyNTQ4LCAzMjU1NCwgMzE2NzcsIDMyNTU4LCAzMjU2MiwgCi0gICAgMzI1NjcsIDMyNTgwLCAzMjU4NSwgMzI1OTEsIDMyNTk5LCAzMjYwNiwgMzI2MTQsIDMyNjI0LCAzMjYzMCwgMzI2MzYsIAotICAgIDMyNjQyLCAzMjY0NiwgMzI2NTUsIDMyNjYwLCAzMjY2NSwgODc4NywgMzI2NzAsIDMyNjc3LCAzMjY4MywgMzI2OTMsIAotICAgIDMyNjk4LCAzMjcwNCwgMzI3MTIsIDM1NDMsIDMyNzE5LCAzMjcyNiwgMzU0OSwgMzI3MzAsIDMyNzM1LCAzMjc0NiwgCi0gICAgMzI3NTMsIDMyNzU5LCAzMjc2OCwgMzI3NzIsIDM5MzIsIDMyNzc1LCAzMjc4MiwgMzI3ODgsIDMyNzk0LCAzMjgwMiwgCi0gICAgMzI4MTIsIDI2OTU4LCAzMjgxOSwgMzI4MjcsIDMyODMzLCAzMjgzOCwgMzI4NDQsIDMyODQ5LCAzMjg1NSwgMzI4NTksIAotICAgIDMyODY2LCAzMjg3MiwgMzI4ODEsIDI0MDk0LCAzMjg4OCwgMzI4OTMsIDMyODk3LCAzMjkwNSwgMzI5MTMsIDc5NzQsIAotICAgIDQzNzMsIDMyOTIwLCAzMjkyNCwgMzI5MjgsIDMyOTMzLCAzMjkzOSwgMzI5NDQsIDMyOTQ5LCAzMjk1NiwgMzAzNDksIAotICAgIDMyOTYyLCAzMjk2NywgMzI5NzEsIDMyOTc2LCAzMjk4MCwgMzI5ODksIDMyOTkzLCAzMjk5OSwgMzMwMDYsIDMzMDEyLCAKLSAgICAzMzAxOSwgMzMwMjQsIDMzMDMzLCAzMzAzOCwgMzMwNDIsIDMzMDQ3LCAzMzA1NCwgMzMwNjIsIDMzMDcwLCAzMzA3NSwgCi0gICAgMTk1MDgsIDMzMDc5LCAzMzA4MiwgMzMwODYsIDMzMDkwLCAzMzA5NCwgMzMwOTcsIDMzMDk5LCAzMzEwNCwgMzMxMTIsIAotICAgIDMzMTE2LCAzMzEyMywgMzMxMjcsIDMzMTM1LCAzMzE0MiwgMzMxNTIsIDMzMTU2LCAzMzE2MCwgMzMxNjgsIDMzMTc2LCAKLSAgICAzMzE4MiwgMzMxODcsIDMzMTk2LCAxMTY2OSwgMzMyMDIsIDMzMjExLCAzMzIxNiwgMzMyMjMsIDMzMjMxLCAzMzIzOSwgCi0gICAgMzMyNDcsIDMzMjU0LCAzMzI2MSwgMzMyNjgsIDMzMjc1LCAzMzI4MiwgMzMyODcsIDMzMjkzLCAzMzMxMCwgMzMzMTgsIAotICAgIDMzMzI4LCAzMzMzNiwgMzMzNDMsIDM4NSwgMzMzNDcsIDMzMzUzLCAzMzM1NywgMzMzNjIsIDMxNDI2LCAzMzM2OCwgCi0gICAgMzMzNzEsIDMzMzc1LCAzMzM4MywgMzU1NCwgMzMzOTEsIDMzMzk3LCAzMzQwMywgMzM0MTIsIDMzNDIyLCAzMzQyOSwgCi0gICAgMzM0MzUsIDM1NjAsIDM1NjYsIDMzNDQ0LCAzMzQ1MSwgMzM0NTksIDMzNDY0LCAzMzQ2OCwgMzM0NzUsIDMzNDgzLCAKLSAgICAzMzQ4OSwgMzM0OTgsIDMzNTA4LCAzMzUxNCwgMzM1MjIsIDMzNTMxLCAzMzUzOCwgMzM1NDYsIDIwMTc1LCAzMzU1MywgCi0gICAgMzM1NjAsIDMzNTY2LCAzMzU3NiwgMzM1ODUsIDMzNTk2LCAzMzYwMCwgMzM2MTAsIDMzNjE2LCAzMzYyMywgMzM2MzEsIAotICAgIDMzNjQwLCAzMzY0OSwgMzM2NTksIDMzNjcwLCAzMzY3NywgMzM2ODIsIDMzNjg5LCAyOTY3LCAzMzY5NywgMzM3MDMsIAotICAgIDMzNzA4LCAzMzcxNCwgMzM3MjAsIDMzNzI1LCAzMzczOCwgMzM3NTEsIDMzNzY0LCAzMzc3MSwgMzM3NzcsIDMzNzg1LCAKLSAgICAzMzc5MCwgMzM3OTQsIDE0MzIsIDMzNzk4LCAzMzgwMywgMzM4MDgsIDMzODEzLCAzMzgxOCwgMzM4MjQsIDMzODI5LCAKLSAgICAzMzgzNCwgMzM4MzksIDMzODQ0LCAzMzg0OSwgMzM4NTQsIDMzODU5LCAzMzg2NSwgMzM4NzEsIDMzODc2LCAzMzg4MSwgCi0gICAgMzM4ODcsIDMzODkyLCAzMzg5NywgMzM5MDIsIDMzOTA4LCAzMzkxMywgMzM5MTgsIDMzOTIzLCAzMzkyOCwgMzM5MzQsIAotICAgIDMzOTM5LCAzMzk0NCwgMzM5NTAsIDMzOTU1LCAzMzk2MCwgMzM5NjUsIDMzOTcwLCAzMzk3NSwgMzM5ODEsIDMzOTg2LCAKLSAgICAzMzk5MiwgMzM5OTcsIDM0MDAzLCAzNDAwOCwgMzQwMTMsIDM0MDE4LCAzNDAyNCwgMzQwMzAsIDM0MDM2LCAzNDA0MiwgCi0gICAgMzQwNDgsIDM0MDU0LCAzNDA2MCwgMzQwNjYsIDM0MDcxLCAzNDA3NiwgMzQwODIsIDM0MDg3LCAzNDA5MiwgMzQwOTcsIAotICAgIDM0MTAyLCAzNDEwNywgMzQxMTIsIDM0MTE3LCAzNDEyMywgMzQxMjgsIDM0MTMzLCAzNDEzOSwgMzQxNDUsIDEwMSwgCi0gICAgMzQxNTAsIDM0MTUyLCAzNDE1NiwgMzQxNjAsIDM0MTY0LCAzNDE2OSwgMzQxNzMsIDc4OTUsIDM0MTc3LCAzNDE4MywgCi0gICAgNDczOCwgMzQxODksIDM0MTkyLCAzNDE5NywgMzQyMDEsIDM0MjA2LCAzNDIxMCwgMzQyMTQsIDM0MjE5LCA4NTk0LCAKLSAgICAzNDIyMywgMzQyMjcsIDM0MjMxLCAxMzYyMywgMzQyMzYsIDM0MjQwLCAzNDI0NSwgMzQyNTAsIDM0MjU1LCAzNDI1OSwgCi0gICAgMzQyNjYsIDI0MDk4LCAzNDI3MiwgMzQyNzUsIDM0Mjc5LCAzNDI4NCwgMzQyOTAsIDM0Mjk0LCAzNDMwMiwgMzQzMDgsIAotICAgIDM0MzEzLCAzNDMxNywgMzQzMjMsIDM0MzI3LCAzNDMzMSwgMzQwNCwgMzQwOSwgMjcxNDQsIDM0MzM0LCAzNDM0MiwgCi0gICAgMzQzNDksIDM0MzUzLCAzNDM2MCwgMzQzNjUsIDMzMywgMzQzNzAsIDM0Mzc0LCAzNDM4MCwgMzQzOTIsIDM0Mzk4LCAKLSAgICAzNDQwNCwgMzQ0MDgsIDM0NDE0LCAzNDQyMywgMzQ0MjcsIDM0NDMxLCAzNDQzNiwgMzQ0NDEsIDM0NDQ2LCAzNDQ1MCwgCi0gICAgMzQ0NTQsIDM0NDYxLCAzNDQ2NywgMzQ0NzIsIDM0NDg3LCAzNDUwMiwgMzQ1MTcsIDM0NTMzLCAzNDU1MSwgODU0NCwgCi0gICAgMzQ1NjUsIDM0NTcyLCAzNDU3NiwgMzQ1NzksIDM0NTg4LCAzNDU5MywgMzQ1OTcsIDM0NjA1LCAzMTYyOCwgMzQ2MTMsIAotICAgIDM0NjE3LCAzNDYyNywgMjcxMTQsIDM0NjM4LCAzNDY0MiwgMzQ2NTEsIDM0NjU5LCA4MTUyLCAxMzE2MywgMzQ2NjMsIAotICAgIDM0NjY2LCAzNDY2OSwgNjU1NywgMzgwMiwgMzQ2NzQsIDM0NjgyLCAzNDY4NiwgMzQ2ODksIDM0NjkzLCAzNDY5OCwgCi0gICAgMzQ3MDMsIDM0NzA5LCAzNDcxNSwgMzQ3MjAsIDM0NzI0LCAyMzk0NiwgMzQ3MjgsIDM0NzMyLCAzNDczOCwgMzQ3NDIsIAotICAgIDc0NDYsIDM0NzUxLCAzNDc1OCwgMzQ3NjIsIDEwMjEwLCAzNDc2OSwgMzQ3NzUsIDM0NzgwLCAzNDc4NywgMzQ3OTQsIAotICAgIDM0ODAxLCAyNjQ4MCwgNjQ4MCwgMzQ4MDgsIDM0ODE1LCAzNDgyMiwgMzQ4MjgsIDM0ODMzLCAzNDg0MCwgMzQ4NTEsIAotICAgIDM0ODU3LCAzNDg2MiwgMzQ4NjcsIDM0ODc0LCAzNDg3OCwgMzQ4ODIsIDM0ODkyLCAzNDkwMywgMzQ5MDksIDM0OTE0LCAKLSAgICAzNDkxOSwgMzQ5MjQsIDM0OTI5LCAzNDkzNCwgMzQ5MzgsIDM0OTQyLCAzNDk0OCwgMzQ5NTYsIDIyNzMsIDgyOCwgODYxNiwgCi0gICAgODYyMSwgODYyNywgMzQ5NjUsIDg2MzIsIDg2MzcsIDg2NDMsIDM0OTcwLCAzNDk4MCwgMzQ5ODQsIDg2NDgsIDM0OTg5LCAKLSAgICAzNDk5MiwgMzQ5OTcsIDM1MDAxLCAzNTAwNiwgMzUwMTEsIDM1MDE4LCAzNTAyNSwgMzUwMzMsIDg1NTcsIDM1MDQwLCAKLSAgICAzNTA0MywgMzUwNDksIDM1MDU5LCA0NDA3LCAzNTA2OCwgMzUwNzIsIDM1MDgwLCAzNTA4NCwgMzUwOTQsIDM1MTAwLCAKLSAgICAzNTExMSwgMzUxMTcsIDM1MTIzLCAzNTEyOCwgMzUxMzQsIDM1MTQwLCAzNTE0NiwgMzUxNTEsIDM1MTU0LCAzNTE2MSwgCi0gICAgMzUxNjcsIDM1MTcyLCAzNTE3OSwgMzUxODYsIDM1MTkwLCAzNTIwMCwgMzUyMTMsIDM1MjIyLCAzNTIzMSwgMzUyNDIsIAotICAgIDM1MjU1LCAzNTI2NiwgMzUyNzUsIDM1Mjg2LCAzNTI5MSwgMzUzMDAsIDM1MzA1LCA4NjUzLCAzNTMxMSwgMzUzMTgsIAotICAgIDM1MzI2LCAzNTMzMSwgMzUzMzUsIDM1MzQyLCAzNTM0OSwgMzc1NywgMjEsIDM1MzUzLCAzNTM1OCwgMTQ5NTgsIDM1MzYyLCAKLSAgICAzNTM2NSwgMzUzNjgsIDI2MDAxLCAzNTM3MiwgMjY0ODksIDM1MzgwLCAzNTM4NCwgMzUzODgsIDM1MzkxLCAzNTM5NywgCi0gICAgMzU0MDMsIDM1NDExLCAzNTQxNywgMzU0MjQsIDI1OTkzLCAzNTQyOCwgMjYxNzgsIDM1NDMyLCAzNTQ0MSwgMzU0NDcsIAotICAgIDM1NDUzLCAzNTQ1OCwgMzU0NjIsIDM1NDY4LCAzNTQ3MiwgMzU0NzUsIDM1NDgzLCAzNTQ5MSwgMjQxNTYsIDM1NDk3LCAKLSAgICAzNTUwNCwgMzU1MTAsIDM1NTE1LCAzNTUyMCwgMzU1MjQsIDM1NTMwLCAzNTUzNSwgMzU1NDEsIDM5NzMsIDc1NSwgMzU1NDgsIAotICAgIDM1NTUyLCAzNTU1NSwgMTM1MTMsIDM1NTY3LCAzMzUyNywgMzU1NzgsIDM1NTgxLCAzNTU4OCwgMzU1OTQsIDM1NTk4LCAKLSAgICAzNTYwNCwgMzU2MDksIDM1NjE1LCAzNTYyMCwgMzU2MjUsIDM1NjI5LCAzNTYzMywgMzU2MzgsIDM1NjQzLCAzNTY1MywgCi0gICAgMzU2NTksIDM1NjcyLCAzNTY3OCwgMzU2ODUsIDM1NjkwLCAzNTY5NiwgMzU3MDEsIDE0ODQ0LCAxNDM1LCAxMDAyLCAKLSAgICAyODk3NCwgMjg5ODAsIDM1NzA2LCAyODk4NiwgMjg5OTksIDI5MDA1LCAyOTAxMSwgMzU3MTIsIDI5MDE3LCAyOTAyMywgCi0gICAgMzU3MTgsIDM1NzI0LCAxNCwgMzU3MzIsIDM1NzM5LCAzNTc0MywgMzU3NDcsIDM1NzU1LCAyOTczNywgMzU3NTksIDM1NzYzLCAKLSAgICAzNTc3MCwgMzU3NzUsIDM1Nzc5LCAzNTc4NCwgMzU3OTAsIDM1Nzk1LCAzNTgwMSwgMzU4MDYsIDM1ODEwLCAzNTgxNCwgCi0gICAgMzU4MTgsIDM1ODIzLCAzNTgyNywgMzU4MzIsIDM1ODM2LCAzNTg0MywgMzU4NDgsIDM1ODUyLCAzNTg1NywgMzU4NjEsIAotICAgIDM1ODY2LCAzNTg3MCwgMzU4NzUsIDM1ODgxLCAxMzczMywgMTM3MzgsIDM1ODg2LCAzNTg5MCwgMzU4OTMsIDM1ODk3LCAKLSAgICAzNTkwMiwgMzU5MDYsIDM1OTEyLCAzNTkxOSwgMzU5MjQsIDM1OTM0LCAzNTkzOSwgMzU5NDcsIDM1OTUxLCAzNTk1NCwgCi0gICAgMjk3NTIsIDM1OTU4LCA0MDI2LCAzNTk2MywgMzU5NjgsIDM1OTcyLCAzNTk3NywgMzU5ODEsIDM1OTg2LCAxMTY4NywgCi0gICAgMzU5OTcsIDM2MDAxLCAzNjAwNCwgMzYwMDksIDM2MDEzLCAzNjAxNywgMzYwMjAsIDM2MDI0LCA2NTc2LCAxMTcwMywgCi0gICAgMzYwMjcsIDM2MDMwLCAzNjAzNSwgMzYwMzksIDM2MDQ4LCAzNjA2NCwgMzYwODAsIDM2MDkwLCAyNTkwMCwgMzYwOTcsIAotICAgIDM2MTAxLCAzNjEwNiwgMzYxMTEsIDM2MTE1LCAzNjExOSwgMzM2NDQsIDM2MTI1LCAzNjEzMCwgMzYxMzQsIDM2MTQxLCAKLSAgICAzNjE0NiwgMzYxNTAsIDM2MTU0LCAyNDk1OCwgMzYxNjAsIDE5NjAzLCAzNjE2NSwgMzYxNzIsIDM2MTgwLCAzNjE4NiwgCi0gICAgMzYxOTMsIDM2MjAxLCAzNjIwNywgMzYyMTEsIDM2MjE3LCAzNjIyNSwgMzYyMjksIDM2MjM4LCA3ODc2LCAzNjI0NiwgCi0gICAgMzYyNTAsIDM2MjU4LCAzNjI2NSwgMzYyNzAsIDM2Mjc1LCAzNjI3OSwgMzYyODIsIDM2Mjg2LCAzNjI4OSwgMzYyOTMsIAotICAgIDM2MzAwLCAzNjMwNSwgMzYzMTEsIDI0Mzc3LCAyOTAzNCwgMzYzMTUsIDM2MzIyLCAzNjMyOCwgMzYzMzQsIDM2MzM5LCAKLSAgICAzNjM0MiwgMzYzNDQsIDM2MzUxLCAzNjM1OCwgMzYzNjQsIDM2MzY4LCAzNjM3MSwgMzYzNzUsIDM2Mzc5LCAzNjM4MywgCi0gICAgMzYzODgsIDM2MzkyLCAzNjM5NiwgMzYzOTksIDM2NDAzLCAzNjQxNywgMjExNDYsIDM2NDM2LCAzNjQ0OSwgMzY0NjIsIAotICAgIDM2NDc1LCAyMTE2NCwgMzY0OTAsIDg4NDYsIDM2NTA1LCAzNjUxMSwgMzY1MTUsIDM2NTE5LCAzNjUyNiwgMzY1MzEsIAotICAgIDM2NTM1LCAzNjU0MiwgMzY1NDgsIDM2NTUzLCAzNjU1OSwgMzY1NjksIDM2NTgxLCAzNjU5MiwgMzY1OTcsIDM2NjA0LCAKLSAgICAzNjYwOCwgMzY2MTIsIDM2NjE1LCAxNDEyOSwgMzYwNSwgMzY2MjMsIDEzNzYwLCAzNjYzNiwgMzY2NDMsIDM2NjQ3LCAKLSAgICAzNjY1MSwgMzY2NTYsIDM2NjYxLCAzNjY2NywgMzY2NzEsIDM2Njc1LCAzNjY3OCwgNjE4OCwgMTM3NzEsIDM2NjgzLCAKLSAgICAzNjY4NywgMzY2OTMsIDM2NzAyLCAzNjcwNywgMzM1MDQsIDM2NzEzLCAzNjcxOCwgMzY3MjIsIDM2NzI3LCAzNjczNCwgCi0gICAgMzY3MzgsIDM2NzQxLCAxMjgyNCwgMzY3NDYsIDM2NzUzLCAxMDA5LCAzNjc1NywgMzY3NjIsIDM2NzY3LCAzNjc3MywgCi0gICAgMzY3NzgsIDM2NzgzLCAzNjc4NywgMzY3OTcsIDM2ODAyLCAzNjgwOCwgMzY4MTMsIDM2ODE5LCAzNjgyNCwgMzY4MzAsIAotICAgIDM2ODQwLCAzNjg0NSwgMzY4NTAsIDM2ODU0LCA1NjgzLCA1Njk1LCAzNjg1OSwgMzY4NjIsIDM2ODY5LCAzNjg3NSwgCi0gICAgMzE3OTMsIDMxODAwLCAzNjg4NCwgMzY4ODgsIDI5ODAwLCAzNjg5NiwgMzY5MDcsIDM2OTE1LCAzMzY5MiwgMzY5MjIsIAotICAgIDM2OTI3LCAzNjkzMiwgMzY5NDMsIDM2OTUwLCAzNjk2MSwgMjk4MjQsIDE5NjA5LCAzNjk2OSwgNzIyLCAzNjk3NCwgCi0gICAgMzY5ODAsIDI1OTg0LCAzNjk4NiwgMzY5OTEsIDM3MDAxLCAzNzAxMCwgMzcwMTcsIDM3MDIzLCAzNzAyNywgMzcwMzAsIAotICAgIDM3MDM3LCAzNzA0MywgMzcwNTAsIDM3MDU2LCAzNzA2NiwgMzcwNzQsIDM3MDgwLCAzNzA4NiwgMzcwOTEsIDM3MDk1LCAKLSAgICAzNzEwMiwgMzcxMDgsIDM3MTE1LCAzNjM4NCwgNTMwLCAxMjExMiwgMzcxMjEsIDM3MTI2LCAzNzEyOSwgMzcxMzUsIAotICAgIDM3MTQzLCAxMzY0LCAzNzE0OCwgMzcxNTIsIDM3MTU3LCAzNzE2NCwgMzcxNzAsIDM3MTc0LCAzNzE3OSwgMzcxODgsIAotICAgIDM3MTk1LCAzNzIwNSwgMzcyMTEsIDI2MDE5LCAzNzIyOCwgMzcyMzcsIDM3MjQ1LCAzNzI1MSwgMzcyNTYsIDM3MjYzLCAKLSAgICAzNzI2OSwgMzcyNzcsIDM3Mjg2LCAzNzI5NCwgMzcyOTgsIDM3MzAzLCAzNzMxMSwgMjk4MzMsIDM3MzE3LCAzNzMzNiwgCi0gICAgMTQwNjIsIDM3MzUwLCAzNzM2NiwgMzczODAsIDM3Mzg2LCAzNzM5MSwgMzczOTYsIDM3NDAxLCAzNzQwNywgMjk4MzksIAotICAgIDM3NDEyLCAzNzQxOSwgMzc0MjQsIDM3NDI4LCAzNDEsIDI4NzgsIDM3NDM1LCAzNzQ0MCwgMzc0NDUsIDI1Mjc1LCAzNzI2NiwgCi0gICAgMzc0NDksIDM3NDU0LCAzNzQ2MiwgMzc0NjYsIDM3NDY5LCAzNzQ3NSwgMzc0NzksIDI2MDc0LCAzNzQ4MiwgMzc0ODcsIAotICAgIDM3NDkxLCAzNzQ5NCwgMzc0OTksIDM3NTAzLCAzNzUwOCwgMzc1MTMsIDM3NTE3LCAzNzUyMiwgMzc1MjYsIDM3NTMwLCAKLSAgICAxOTM0NiwgMTkzNTcsIDM3NTM0LCAzNzUzOSwgMzc1NDUsIDI0OTE1LCAzNzU1MCwgMzc1NTQsIDE5NDI1LCAxNDI4MCwgCi0gICAgMzc1NTcsIDM3NTYyLCAzNzU2NywgMzc1NzIsIDM3NTc3LCAzNzU4MiwgMzc1ODcsIDM3NTkyLCA0NDAsIDQzLCAyOTA1MiwgCi0gICAgMjkwNTcsIDI5MDYyLCAyOTA2OCwgMjkwNzMsIDI5MDc4LCAzNzU5NywgMjkwODIsIDM3NjAxLCAzNzYwNSwgMjkwODcsIAotICAgIDI5MDkzLCAzNzYwOSwgMjkxMDQsIDI5MTA5LCAzNzYxNywgMzc2MjIsIDI5MTE1LCAzNzYyNywgMzc2MzIsIDM3NjM3LCAKLSAgICAzNzY0MiwgMzc2NDgsIDM3NjU0LCAzNzY2MCwgMjkxMzIsIDM3NjczLCAzNzY3OSwgMjkxMzYsIDM3NjgzLCAyOTE0MSwgCi0gICAgMzc2ODgsIDI5MTQ2LCAyOTE1MSwgMzc2OTEsIDM3Njk2LCAzNzcwMCwgMjg3OTUsIDM3NzA2LCAxMTkxMSwgMzc3MTMsIAotICAgIDM3NzE4LCAyOTE1NiwgMzc3MjIsIDM3NzI3LCAzNzczMiwgMzc3MzcsIDM3NzQxLCAzNzc0NiwgMzc3NTEsIDM3NzU3LCAKLSAgICAzNzc2MiwgMzc3NjcsIDM3NzczLCAzNzc3OSwgMzc3ODQsIDM3Nzg4LCAzNzc5MywgMzc3OTgsIDM3ODAzLCAzNzgwNywgCi0gICAgMzc4MTIsIDM3ODE3LCAzNzgyMiwgMzc4MjgsIDM3ODM0LCAzNzg0MCwgMzc4NDUsIDM3ODQ5LCAzNzg1NCwgMzc4NTgsIAotICAgIDI5MTYwLCAyOTE2NSwgMjkxNzAsIDM3ODYyLCAzNzg2NiwgMjkxNzUsIDI5MTgxLCAyOTE4NywgMjkxOTksIDM3ODc4LCAKLSAgICAyMzk4MywgMzc4ODIsIDM3ODg2LCAzNzg5MSwgMzc4OTYsIDM3OTAxLCAzNzkwNSwgMzc5MDksIDM3OTE5LCAzNzkyNCwgCi0gICAgMzc5MjksIDM3OTMzLCAzNzkzNywgMzc5NDAsIDM3OTQ4LCAyOTI0NywgMzc5NTMsIDE0NDIsIDM3OTU5LCAzNzk2NywgCi0gICAgMzc5NzYsIDM3OTgwLCAzNzk4OCwgMzc5OTQsIDM4MDAyLCAzODAxOCwgMzgwMjMsIDM4MDM4LCAyOTI4NCwgMTcxMiwgCi0gICAgMTAzNzUsIDM4MDQyLCAyOTI0LCAzODA1NCwgMzgwNTUsIDM4MDYzLCAzODA3MCwgMzgwNzUsIDM4MDgyLCAzODA4NywgCi0gICAgNzc0NiwgMTA5MCwgODY3NSwgMzgwOTQsIDM4MDk5LCAzODEwMiwgMzgxMDUsIDM4MTE0LCAxMjc1LCAzODExOSwgMzY1MzIsIAotICAgIDM4MTI2LCAzODEzMSwgMjA1ODMsIDI1MTEsIDM4MTM1LCA5MDk0LCAzODE0NSwgMzgxNTEsIDIyOTEsIDIzMDEsIDM4MTYwLCAKLSAgICAzODE2OSwgMzgxNzksIDM4MTkwLCAzMjM1LCAzMTk0NCwgODcyNywgMzczNSwgMTQ4ODIsIDEyODAsIDM4MTk1LCAzODIwMywgCi0gICAgMzgyMTAsIDM4MjE1LCAzODIxOSwgMzgyMjMsIDIxOTMwLCA4NzU0LCAzODIzMSwgMzgyNDAsIDM4MjQ5LCAzODI1NywgCi0gICAgMzgyNjQsIDM4MjY5LCAzODI4MiwgMzgyOTUsIDM4MzA3LCAzODMxOSwgMzgzMzEsIDM4MzQ0LCAzODM1NSwgMzgzNjYsIAotICAgIDM4Mzc2LCAzODM4NCwgMzgzOTIsIDM4NDA0LCAzODQxNiwgMzg0MjcsIDM4NDM2LCAzODQ0NCwgMzg0NTEsIDM4NDYzLCAKLSAgICAzODQ3MCwgMzg0NzksIDM4NDg2LCAzODQ5OSwgMzg1MDQsIDM4NTE0LCAzODUxOSwgMzg1MjUsIDM4NTMwLCAzNDc1OSwgCi0gICAgMzg1MzQsIDM4NTQxLCAzODU0NSwgMzg1NTIsIDM4NTYwLCAyNDcyLCAzODU2NywgMzg1NzgsIDM4NTg4LCAzODU5NywgCi0gICAgMzg2MDUsIDM4NjE1LCAzODYyMywgMzg2MzMsIDM4NjQyLCAzODY0NywgMzg2NTMsIDM4NjU5LCAzODY3MCwgMzg2ODAsIAotICAgIDM4Njg5LCAzODY5OCwgMzg3MDgsIDM4NzE2LCAzODcyNSwgMzg3MzAsIDM4NzM1LCAzODc0MCwgMTY2OCwgMzcsIDM4NzQ4LCAKLSAgICAzODc1NiwgMzg3NjcsIDM4Nzc4LCAxNDU2MywgMzg3ODgsIDM4Nzk1LCAzODgwMSwgMzg4MDYsIDM4ODEwLCAzODgyMSwgCi0gICAgMzg4MzEsIDM4ODQwLCAzODg1MSwgMTQ5MzEsIDE0OTM2LCAzODg1NiwgMzg4NjUsIDM4ODcwLCAzODg4MCwgMzg4ODUsIAotICAgIDM4ODkzLCAzODkwMSwgMzg5MDgsIDM4OTE0LCA1NTM2LCAxMDM4LCAzODkxOCwgMzg5MjQsIDM4OTI5LCAzODkzMiwgMjA3NSwgCi0gICAgMzY2NDgsIDM4OTQwLCAzODk0NCwgMzg5NDcsIDE0NzUsIDM4OTUzLCAxMjI2MSwgMTI4NSwgMzg5NTgsIDM4OTcxLCAKLSAgICAzODk4NSwgMjU5NywgMzkwMDMsIDM5MDE1LCAzOTAyNywgMjYxMSwgMjYyOCwgMzkwNDEsIDM5MDU0LCAyNjQzLCAzOTA2OCwgCi0gICAgMzkwODAsIDI2NTgsIDM5MDk0LCAxMjkxLCAxMjk3LCAxMzAzLCA5MDEyLCAzOTA5OSwgMzkxMDQsIDM5MTA5LCAzOTExMywgCi0gICAgMzkxMjgsIDM5MTQzLCAzOTE1OCwgMzkxNzMsIDM5MTg4LCAzOTIwMywgMzkyMTgsIDM5MjMzLCAzOTI0OCwgMzkyNjMsIAotICAgIDM5Mjc4LCAzOTI5MywgMzkzMDgsIDM5MzIzLCAzOTMzOCwgMzkzNTMsIDM5MzY4LCAzOTM4MywgMzkzOTgsIDM5NDEzLCAKLSAgICAzOTQyOCwgMzk0NDMsIDM5NDU4LCAzOTQ3MywgMzk0ODgsIDM5NTAzLCAzOTUxOCwgMzk1MzMsIDM5NTQ4LCAzOTU2MywgCi0gICAgMzk1NzgsIDM5NTkzLCAzOTYwOCwgMzk2MjMsIDM5NjM4LCAzOTY1MywgMzk2NjgsIDM5NjgzLCAzOTY5OCwgMzk3MTMsIAotICAgIDM5NzI4LCAzOTc0MywgMzk3NTgsIDM5NzczLCAzOTc4OCwgMzk4MDMsIDM5ODE4LCAzOTgzMywgMzk4NDgsIDM5ODYzLCAKLSAgICAzOTg3OCwgMzk4OTMsIDM5OTA4LCAzOTkyMywgMzk5MzgsIDM5OTUzLCAzOTk2OCwgMzk5ODMsIDM5OTk4LCA0MDAxMywgCi0gICAgNDAwMjgsIDQwMDQzLCA0MDA1OCwgNDAwNzMsIDQwMDg4LCA0MDEwMywgNDAxMTgsIDQwMTMzLCA0MDE0OCwgNDAxNjMsIAotICAgIDQwMTc4LCA0MDE5MywgNDAyMDgsIDQwMjIzLCA0MDIzOCwgNDAyNTMsIDQwMjY4LCA0MDI4MywgNDAyOTgsIDQwMzEzLCAKLSAgICA0MDMyOCwgNDAzNDMsIDQwMzU4LCA0MDM3MywgNDAzODgsIDQwNDAzLCA0MDQxOCwgNDA0MzMsIDQwNDQ4LCA0MDQ2MywgCi0gICAgNDA0NzgsIDQwNDkzLCA0MDUwOCwgNDA1MjMsIDQwNTM4LCA0MDU1MywgNDA1NjgsIDQwNTgzLCA0MDU5OCwgNDA2MTMsIAotICAgIDQwNjI4LCA0MDY0MywgNDA2NTgsIDQwNjczLCA0MDY4OCwgNDA3MDMsIDQwNzE4LCA0MDczMywgNDA3NDgsIDQwNzYzLCAKLSAgICA0MDc3OCwgNDA3OTMsIDQwODA4LCA0MDgyMywgNDA4MzgsIDQwODUzLCA0MDg2OCwgNDA4ODMsIDQwODk4LCA0MDkxMywgCi0gICAgNDA5MjgsIDQwOTQzLCA0MDk1OCwgNDA5NzMsIDQwOTg4LCA0MTAwMywgNDEwMTgsIDQxMDMzLCA0MTA0OCwgNDEwNjMsIAotICAgIDQxMDc4LCA0MTA5MywgNDExMDgsIDQxMTIzLCA0MTEzOCwgNDExNTMsIDQxMTY4LCA0MTE4MywgNDExOTgsIDQxMjEzLCAKLSAgICA0MTIyOCwgNDEyNDMsIDQxMjU4LCA0MTI3MywgNDEyODgsIDQxMzAzLCA0MTMxOCwgNDEzMzMsIDQxMzQ4LCA0MTM2MywgCi0gICAgNDEzNzgsIDQxMzkzLCA0MTQwOCwgNDE0MjMsIDQxNDM4LCA0MTQ1MywgNDE0NjgsIDQxNDgzLCA0MTQ5OCwgNDE1MTMsIAotICAgIDQxNTI4LCA0MTU0MywgNDE1NTgsIDQxNTczLCA0MTU4OCwgNDE2MDMsIDQxNjE4LCA0MTYzMywgNDE2NDgsIDQxNjYzLCAKLSAgICA0MTY3OCwgNDE2OTMsIDQxNzA4LCA0MTcyMywgNDE3MzgsIDQxNzUzLCA0MTc2OCwgNDE3ODMsIDQxNzk4LCA0MTgxMywgCi0gICAgNDE4MjgsIDQxODQzLCA0MTg1OCwgNDE4NzMsIDQxODg4LCA0MTkwMywgNDE5MTgsIDQxOTMzLCA0MTk0OCwgNDE5NjMsIAotICAgIDQxOTc4LCA0MTk5MywgNDIwMDgsIDQyMDIzLCA0MjAzOCwgNDIwNTMsIDQyMDY4LCA0MjA4MywgNDIwOTgsIDQyMTEzLCAKLSAgICA0MjEyOCwgNDIxNDMsIDQyMTU4LCA0MjE3MywgNDIxODgsIDQyMjAzLCA0MjIxOCwgNDIyMzMsIDQyMjQ4LCA0MjI2MywgCi0gICAgNDIyNzgsIDQyMjkzLCA0MjMwOCwgNDIzMjMsIDQyMzM4LCA0MjM1MywgNDIzNjgsIDQyMzgzLCA0MjM5OCwgNDI0MTMsIAotICAgIDQyNDI4LCA0MjQ0MywgNDI0NTgsIDQyNDczLCA0MjQ4OCwgNDI1MDMsIDQyNTE4LCA0MjUzMywgNDI1NDgsIDQyNTYzLCAKLSAgICA0MjU3OCwgNDI1OTMsIDQyNjA4LCA0MjYyMywgNDI2MzgsIDQyNjUzLCA0MjY2OCwgNDI2ODMsIDQyNjk4LCA0MjcxMywgCi0gICAgNDI3MjgsIDQyNzQzLCA0Mjc1OCwgNDI3NzMsIDQyNzg4LCA0MjgwMywgNDI4MTgsIDQyODMzLCA0Mjg0OCwgNDI4NjMsIAotICAgIDQyODc4LCA0Mjg5MywgNDI5MDgsIDQyOTIzLCA0MjkzOCwgNDI5NTMsIDQyOTY4LCA0Mjk4MywgNDI5OTgsIDQzMDEzLCAKLSAgICA0MzAyOCwgNDMwNDMsIDQzMDU4LCA0MzA3MywgNDMwODgsIDQzMTAzLCA0MzExOCwgNDMxMzMsIDQzMTQ4LCA0MzE2MywgCi0gICAgNDMxNzgsIDQzMTkzLCA0MzIwOCwgNDMyMjMsIDQzMjM4LCA0MzI1MywgNDMyNjgsIDQzMjgzLCA0MzI5OCwgNDMzMTMsIAotICAgIDQzMzI4LCA0MzM0MywgNDMzNTgsIDQzMzczLCA0MzM4OCwgNDM0MDMsIDQzNDE4LCA0MzQzMywgNDM0NDgsIDQzNDYzLCAKLSAgICA0MzQ3OCwgNDM0OTMsIDQzNTA4LCA0MzUyMywgNDM1MzgsIDQzNTUzLCA0MzU2OCwgNDM1ODMsIDQzNTk4LCA0MzYxMywgCi0gICAgNDM2MjgsIDQzNjQzLCA0MzY1OCwgNDM2NzMsIDQzNjg4LCA0MzcwMywgNDM3MTgsIDQzNzMzLCA0Mzc0OCwgNDM3NjMsIAotICAgIDQzNzc4LCA0Mzc5MywgNDM4MDgsIDQzODIzLCA0MzgzOCwgNDM4NTMsIDQzODY4LCA0Mzg4MywgNDM4OTgsIDQzOTEzLCAKLSAgICA0MzkyOCwgNDM5NDMsIDQzOTU4LCA0Mzk3MywgNDM5ODgsIDQ0MDAzLCA0NDAxOCwgNDQwMzMsIDQ0MDQ4LCA0NDA2MywgCi0gICAgNDQwNzgsIDQ0MDkzLCA0NDEwOCwgNDQxMjMsIDQ0MTM4LCA0NDE1MywgNDQxNjgsIDQ0MTgzLCA0NDE5OCwgNDQyMTMsIAotICAgIDQ0MjI4LCA0NDI0MywgNDQyNTgsIDQ0MjczLCA0NDI4OCwgNDQzMDMsIDQ0MzE4LCA0NDMzMywgNDQzNDgsIDQ0MzYzLCAKLSAgICA0NDM3OCwgNDQzOTMsIDQ0NDA4LCA0NDQyMywgNDQ0MzgsIDQ0NDUzLCA0NDQ2OCwgNDQ0ODMsIDQ0NDk4LCA0NDUxMywgCi0gICAgNDQ1MjgsIDQ0NTQzLCA0NDU1OCwgNDQ1NzMsIDQ0NTg4LCA0NDYwMywgNDQ2MTgsIDQ0NjMzLCA0NDY0OCwgNDQ2NjMsIAotICAgIDQ0Njc4LCA0NDY5MywgNDQ3MDgsIDQ0NzIzLCA0NDczOCwgNDQ3NTMsIDQ0NzY4LCA0NDc4MywgNDQ3OTgsIDQ0ODEzLCAKLSAgICA0NDgyOCwgNDQ4NDMsIDQ0ODU4LCA0NDg3MywgNDQ4ODgsIDQ0OTAzLCA0NDkxOCwgNDQ5MzMsIDQ0OTQ4LCA0NDk2MywgCi0gICAgNDQ5NzgsIDQ0OTkzLCA0NTAwOCwgNDUwMjMsIDQ1MDM4LCA0NTA1MywgNDUwNjgsIDQ1MDgzLCA0NTA5OCwgNDUxMTMsIAotICAgIDQ1MTI4LCA0NTE0MywgNDUxNTgsIDQ1MTczLCA0NTE4OCwgNDUyMDMsIDQ1MjE4LCA0NTIzMywgNDUyNDgsIDQ1MjYzLCAKLSAgICA0NTI3OCwgNDUyOTMsIDQ1MzA4LCA0NTMyMywgNDUzMzgsIDQ1MzUzLCA0NTM2OCwgNDUzODMsIDQ1Mzk4LCA0NTQxMywgCi0gICAgNDU0MjgsIDQ1NDQzLCA0NTQ1OCwgNDU0NzMsIDQ1NDg4LCA0NTUwMywgNDU1MTgsIDQ1NTMzLCA0NTU0OCwgNDU1NjMsIAotICAgIDQ1NTc4LCA0NTU5MywgNDU2MDgsIDQ1NjIzLCA0NTYzOCwgNDU2NTMsIDQ1NjY4LCA0NTY4MywgNDU2OTgsIDQ1NzEzLCAKLSAgICA0NTcyOCwgNDU3NDMsIDQ1NzU4LCA0NTc3MywgNDU3ODgsIDQ1ODAzLCA0NTgxOCwgNDU4MzMsIDQ1ODQ4LCA0NTg2MywgCi0gICAgNDU4NzgsIDQ1ODkzLCA0NTkwOCwgNDU5MjMsIDQ1OTM4LCA0NTk1MywgNDU5NjgsIDQ1OTgzLCA0NTk5OCwgNDYwMTMsIAotICAgIDQ2MDI4LCA0NjA0MywgNDYwNTgsIDQ2MDczLCA0NjA4OCwgNDYxMDMsIDQ2MTE4LCA0NjEzMywgNDYxNDgsIDQ2MTYzLCAKLSAgICA0NjE3OCwgNDYxOTMsIDQ2MjA4LCA0NjIyMywgNDYyMzgsIDQ2MjUzLCA0NjI2OCwgNDYyODMsIDQ2Mjk4LCA0NjMxMywgCi0gICAgNDYzMjgsIDQ2MzQzLCA0NjM1OCwgNDYzNzMsIDQ2Mzg4LCA0NjQwMywgNDY0MTgsIDQ2NDMzLCA0NjQ0OCwgNDY0NjMsIAotICAgIDQ2NDc4LCA0NjQ5MywgNDY1MDgsIDQ2NTIzLCA0NjUzOCwgNDY1NTMsIDQ2NTY4LCA0NjU4MywgNDY1OTgsIDQ2NjEzLCAKLSAgICA0NjYyOCwgNDY2NDMsIDQ2NjU4LCA0NjY3MywgNDY2ODgsIDQ2NzAzLCA0NjcxOCwgNDY3MzMsIDQ2NzQ4LCA0Njc2MywgCi0gICAgNDY3NzgsIDQ2NzkzLCA0NjgwOCwgNDY4MjMsIDQ2ODM4LCA0Njg1MywgNDY4NjgsIDQ2ODgzLCA0Njg5OSwgNDY5MTUsIAotICAgIDQ2OTMxLCA0Njk0NywgNDY5NjMsIDQ2OTc5LCA0Njk5NSwgNDcwMTEsIDQ3MDI3LCA0NzA0MywgNDcwNTksIDQ3MDc1LCAKLSAgICA0NzA5MSwgNDcxMDcsIDQ3MTIzLCA0NzEzOSwgNDcxNTUsIDQ3MTcxLCA0NzE4NywgNDcyMDMsIDQ3MjE5LCA0NzIzNSwgCi0gICAgNDcyNTEsIDQ3MjY3LCA0NzI4MywgNDcyOTksIDQ3MzE1LCA0NzMzMSwgNDczNDcsIDQ3MzYzLCA0NzM3OSwgNDczOTUsIAotICAgIDQ3NDExLCA0NzQyNywgNDc0NDMsIDQ3NDU5LCA0NzQ3NSwgNDc0OTEsIDQ3NTA3LCA0NzUyMywgNDc1MzksIDQ3NTU1LCAKLSAgICA0NzU3MSwgNDc1ODcsIDQ3NjAzLCA0NzYxOSwgNDc2MzUsIDQ3NjUxLCA0NzY2NywgNDc2ODMsIDQ3Njk5LCA0NzcxNSwgCi0gICAgNDc3MzEsIDQ3NzQ3LCA0Nzc2MywgNDc3NzksIDQ3Nzk1LCA0NzgxMSwgNDc4MjcsIDQ3ODQzLCA0Nzg1OSwgNDc4NzUsIAotICAgIDQ3ODkxLCA0NzkwNywgNDc5MjMsIDQ3OTM5LCA0Nzk1NSwgNDc5NzEsIDQ3OTg3LCA0ODAwMywgNDgwMTksIDQ4MDM1LCAKLSAgICA0ODA1MSwgNDgwNjcsIDQ4MDgzLCA0ODA5OSwgNDgxMTUsIDQ4MTMxLCA0ODE0NywgNDgxNjMsIDQ4MTc5LCA0ODE5NSwgCi0gICAgNDgyMTEsIDQ4MjI3LCA0ODI0MywgNDgyNTksIDQ4Mjc1LCA0ODI5MSwgNDgzMDcsIDQ4MzIzLCA0ODMzOSwgNDgzNTUsIAotICAgIDQ4MzcxLCA0ODM4NywgNDg0MDMsIDQ4NDE5LCA0ODQzNSwgNDg0NTEsIDQ4NDY3LCA0ODQ4MywgNDg0OTksIDQ4NTE1LCAKLSAgICA0ODUzMSwgNDg1NDcsIDQ4NTYzLCA0ODU3OSwgNDg1OTUsIDQ4NjExLCA0ODYyNywgNDg2NDMsIDQ4NjU5LCA0ODY3NSwgCi0gICAgNDg2OTEsIDQ4NzA3LCA0ODcyMywgNDg3MzksIDQ4NzU1LCA0ODc3MSwgNDg3ODcsIDQ4ODAzLCA0ODgxOSwgNDg4MzUsIAotICAgIDQ4ODUxLCA0ODg2NywgNDg4ODMsIDQ4ODk5LCA0ODkxNSwgNDg5MzEsIDQ4OTQ3LCA0ODk2MywgNDg5NzksIDQ4OTk1LCAKLSAgICA0OTAxMSwgNDkwMjcsIDQ5MDQzLCA0OTA1OSwgNDkwNzUsIDQ5MDkxLCA0OTEwNywgNDkxMjMsIDQ5MTM5LCA0OTE1NSwgCi0gICAgNDkxNzEsIDQ5MTg3LCA0OTIwMywgNDkyMTksIDQ5MjM1LCA0OTI1MSwgNDkyNjcsIDQ5MjgzLCA0OTI5OSwgNDkzMTUsIAotICAgIDQ5MzMxLCA0OTM0NywgNDkzNjMsIDQ5Mzc5LCA0OTM5NSwgNDk0MTEsIDQ5NDI3LCA0OTQ0MywgNDk0NTksIDQ5NDc1LCAKLSAgICA0OTQ5MSwgNDk1MDcsIDQ5NTIzLCA0OTUzOSwgNDk1NTUsIDQ5NTcxLCA0OTU4NywgNDk2MDMsIDQ5NjE5LCA0OTYzNSwgCi0gICAgNDk2NTEsIDQ5NjY3LCA0OTY4MywgNDk2OTksIDQ5NzE1LCA0OTczMSwgNDk3NDcsIDQ5NzYzLCA0OTc3OSwgNDk3OTUsIAotICAgIDQ5ODExLCA0OTgyNywgNDk4NDMsIDQ5ODU5LCA0OTg3NSwgNDk4OTEsIDQ5OTA3LCA0OTkyMywgNDk5MzksIDQ5OTU1LCAKLSAgICA0OTk3MSwgNDk5ODcsIDUwMDAzLCA1MDAxOSwgNTAwMzUsIDUwMDUxLCA1MDA2NywgNTAwODMsIDUwMDk5LCA1MDExNSwgCi0gICAgNTAxMzEsIDUwMTQ3LCA1MDE2MywgNTAxNzksIDUwMTk1LCA1MDIxMSwgNTAyMjcsIDUwMjQzLCA1MDI1OSwgNTAyNzUsIAotICAgIDUwMjkxLCA1MDMwNywgNTAzMjMsIDUwMzM5LCA1MDM1NSwgNTAzNzEsIDUwMzg3LCA1MDQwMywgNTA0MTksIDUwNDM1LCAKLSAgICA1MDQ1MSwgNTA0NjcsIDUwNDgzLCA1MDQ5OSwgNTA1MTUsIDUwNTMxLCA1MDU0NywgNTA1NjMsIDUwNTc5LCA1MDU5NSwgCi0gICAgNTA2MTEsIDUwNjI3LCA1MDY0MywgNTA2NTksIDUwNjc1LCA1MDY5MSwgNTA3MDcsIDUwNzIzLCA1MDczOSwgNTA3NTUsIAotICAgIDUwNzcxLCA1MDc4NywgNTA4MDMsIDUwODE5LCA1MDgzNSwgNTA4NTEsIDUwODY3LCA1MDg4MywgNTA4OTksIDUwOTE1LCAKLSAgICA1MDkzMSwgNTA5NDcsIDUwOTYzLCA1MDk3OSwgNTA5OTUsIDUxMDExLCA1MTAyNywgNTEwNDMsIDUxMDU5LCA1MTA3NSwgCi0gICAgNTEwOTEsIDUxMTA3LCA1MTEyMywgNTExMzksIDUxMTU1LCA1MTE3MSwgNTExODcsIDUxMjAzLCA1MTIxOSwgNTEyMzUsIAotICAgIDUxMjUxLCA1MTI2NywgNTEyODMsIDUxMjk5LCA1MTMxNSwgNTEzMzEsIDUxMzQ3LCA1MTM2MywgNTEzNzksIDUxMzk1LCAKLSAgICA1MTQxMSwgNTE0MjcsIDUxNDQzLCA1MTQ1OSwgNTE0NzUsIDUxNDkxLCA1MTUwNywgNTE1MjMsIDUxNTM5LCA1MTU1NSwgCi0gICAgNTE1NzEsIDUxNTg3LCA1MTYwMywgNTE2MTksIDUxNjM1LCA1MTY1MSwgNTE2NjcsIDUxNjgzLCA1MTY5OSwgNTE3MTUsIAotICAgIDUxNzMxLCA1MTc0NywgNTE3NjMsIDUxNzc5LCA1MTc5NSwgNTE4MTEsIDUxODI3LCA1MTg0MywgNTE4NTksIDUxODc1LCAKLSAgICA1MTg5MSwgNTE5MDcsIDUxOTIzLCA1MTkzOSwgNTE5NTUsIDUxOTcxLCA1MTk4NywgNTIwMDMsIDUyMDE5LCA1MjAzNSwgCi0gICAgNTIwNTEsIDUyMDY3LCA1MjA4MywgNTIwOTksIDUyMTE1LCA1MjEzMSwgNTIxNDcsIDUyMTYzLCA1MjE3OSwgNTIxOTUsIAotICAgIDUyMjExLCA1MjIyNywgNTIyNDMsIDUyMjU5LCA1MjI3NSwgNTIyOTEsIDUyMzA3LCA1MjMyMywgNTIzMzksIDUyMzU1LCAKLSAgICA1MjM3MSwgNTIzODcsIDUyNDAzLCA1MjQxOSwgNTI0MzUsIDUyNDUxLCA1MjQ2NywgNTI0ODMsIDUyNDk5LCA1MjUxNSwgCi0gICAgNTI1MzEsIDUyNTQ3LCA1MjU2MywgNTI1NzksIDUyNTk1LCA1MjYxMSwgNTI2MjcsIDUyNjQzLCA1MjY1OSwgNTI2NzUsIAotICAgIDUyNjkxLCA1MjcwNywgNTI3MjMsIDUyNzM5LCA1Mjc1NSwgNTI3NzEsIDUyNzg3LCA1MjgwMywgNTI4MTksIDUyODM1LCAKLSAgICA1Mjg1MSwgNTI4NjcsIDUyODgzLCA1Mjg5OSwgNTI5MTUsIDUyOTMxLCA1Mjk0NywgNTI5NjMsIDUyOTc5LCA1Mjk5NSwgCi0gICAgNTMwMTEsIDUzMDI3LCA1MzA0MywgNTMwNTksIDUzMDc1LCA1MzA5MSwgNTMxMDcsIDUzMTIzLCA1MzEzOSwgNTMxNTUsIAotICAgIDUzMTcxLCA1MzE4NywgNTMyMDMsIDUzMjE5LCA1MzIzNSwgNTMyNTEsIDUzMjY3LCA1MzI4MywgNTMyOTksIDUzMzE1LCAKLSAgICA1MzMzMSwgNTMzNDcsIDUzMzYzLCA1MzM3OSwgNTMzOTUsIDUzNDExLCA1MzQyNywgNTM0NDMsIDUzNDU5LCA1MzQ3NSwgCi0gICAgNTM0OTEsIDUzNTA3LCA1MzUyMywgNTM1MzksIDUzNTU1LCA1MzU3MSwgNTM1ODcsIDUzNjAzLCA1MzYxOSwgNTM2MzUsIAotICAgIDUzNjUxLCA1MzY2NywgNTM2ODMsIDUzNjk5LCA1MzcxNSwgNTM3MzEsIDUzNzQ3LCA1Mzc2MywgNTM3NzksIDUzNzk1LCAKLSAgICA1MzgxMSwgNTM4MjcsIDUzODQzLCA1Mzg1OSwgNTM4NzUsIDUzODkxLCA1MzkwNywgNTM5MjMsIDUzOTM5LCA1Mzk1NSwgCi0gICAgNTM5NzEsIDUzOTg3LCA1NDAwMywgNTQwMTksIDU0MDM1LCA1NDA1MSwgNTQwNjcsIDU0MDgzLCA1NDA5OSwgNTQxMTUsIAotICAgIDU0MTMxLCA1NDE0NywgNTQxNjMsIDU0MTc5LCA1NDE5NSwgNTQyMTEsIDU0MjI3LCA1NDI0MywgNTQyNTksIDU0Mjc1LCAKLSAgICA1NDI5MSwgNTQzMDcsIDU0MzIzLCA1NDMzOSwgNTQzNTUsIDU0MzcxLCA1NDM4NywgNTQ0MDMsIDU0NDE5LCA1NDQzNSwgCi0gICAgNTQ0NTEsIDU0NDY3LCA1NDQ4MywgNTQ0OTksIDU0NTE1LCA1NDUzMSwgNTQ1NDcsIDU0NTYzLCA1NDU3OSwgNTQ1OTUsIAotICAgIDU0NjExLCA1NDYyNywgNTQ2NDMsIDU0NjU5LCA1NDY3NSwgNTQ2OTEsIDU0NzA3LCA1NDcyMywgNTQ3MzksIDU0NzU1LCAKLSAgICA1NDc3MSwgNTQ3ODcsIDU0ODAzLCA1NDgxOSwgNTQ4MzUsIDU0ODUxLCA1NDg2NywgNTQ4ODMsIDU0ODk5LCA1NDkxNSwgCi0gICAgNTQ5MzEsIDU0OTQ3LCA1NDk2MywgNTQ5NzksIDU0OTk1LCA1NTAxMSwgNTUwMjcsIDU1MDQzLCA1NTA1OSwgNTUwNzUsIAotICAgIDU1MDkxLCA1NTEwNywgNTUxMjMsIDU1MTM5LCA1NTE1NSwgNTUxNzEsIDU1MTg3LCA1NTIwMywgNTUyMTksIDU1MjM1LCAKLSAgICA1NTI1MSwgNTUyNjcsIDU1MjgzLCA1NTI5OSwgNTUzMTUsIDU1MzMxLCA1NTM0NywgNTUzNjMsIDU1Mzc5LCA1NTM5NSwgCi0gICAgNTU0MTEsIDU1NDI3LCA1NTQ0MywgNTU0NTksIDU1NDc1LCA1NTQ5MSwgNTU1MDcsIDU1NTIzLCA1NTUzOSwgNTU1NTUsIAotICAgIDU1NTcwLCAxNDk2MywgNTU1NzksIDU1NTg1LCA1NTU5MSwgNTU2MDEsIDU1NjA5LCAxMzE0NCwgMTM2ODMsIDgzMTksIAotICAgIDU1NjIyLCAxNDgzLCA1NTYzMCwgMjUzODUsIDU2MzcsIDU1NjM2LCA1NTY0MSwgNTU2NDYsIDU1NjUxLCA1NTY1NiwgCi0gICAgNTU2NjIsIDU1NjY3LCA1NTY3MywgNTU2NzgsIDU1Njg0LCA1NTY4OSwgNTU2OTQsIDU1Njk5LCA1NTcwNCwgNTU3MTAsIAotICAgIDU1NzE1LCA1NTcyMCwgNTU3MjUsIDU1NzMwLCA1NTczNSwgNTU3NDAsIDU1NzQ1LCA1NTc1MSwgNTU3NTYsIDU1NzYyLCAKLSAgICA1NTc2OSwgMjUxNSwgNTU3NzQsIDU1NzgwLCA2OTQ4LCA1NTc4NCwgNTU3ODksIDU1Nzk2LCA1NTgwNCwgNDAsIDU1ODA4LCAKLSAgICA1NTgxNCwgNTU4MTksIDU1ODI0LCA1NTgyOCwgNTU4MzMsIDU1ODM3LCA1NTg0MSwgOTAzNywgNTU4NDUsIDU1ODU1LCAKLSAgICA1NTg2OCwgNTU4NzksIDU1ODkyLCA1NTg5OSwgNTU5MDUsIDU1OTEwLCA1NTkxNiwgNTU5MjIsIDU1OTI4LCA1NTkzMywgCi0gICAgNTU5MzgsIDU1OTQzLCA1NTk0OCwgNTU5NTIsIDU1OTU3LCA1NTk2MiwgNTU5NjcsIDU1OTczLCA1NTk3OSwgNTU5ODUsIAotICAgIDU1OTkwLCA1NTk5NCwgNTU5OTksIDU2MDA0LCA1NjAwOCwgNTYwMTMsIDU2MDE4LCA1NjAyMywgNTYwMjcsIDkwNTMsIAotICAgIDkwNjQsIDkwNjksIDE1MjYsIDU2MDMxLCAxNTMxLCA1NjAzNywgNTYwNDAsIDE1NjIsIDU2MDQ2LCAxNTY4LCAxNTc0LCAKLSAgICA5MDk5LCA1NjA1MSwgNTYwNTksIDU2MDY2LCA1NjA3MCwgNTYwNzYsIDU2MDgxLCAyODgyNCwgNTYwODYsIDU2MDkzLCAKLSAgICA1NjA5OCwgNTYxMDIsIDU2MTA2LCAxNTc5LCAxNDUzOCwgMTQ1NDksIDU2MTE1LCA1NjEyMiwgNTYxMjcsIDU2MTMxLCAKLSAgICAxNDU2OCwgMTU4MywgMzQ4OTcsIDU2MTM0LCA1NjEzOSwgNTYxNDksIDU2MTU4LCA1NjE2MywgNTYxNjcsIDU2MTczLCAKLSAgICAxNTg4LCAzNjcxOSwgNTYxNzgsIDU2MTg3LCA1NjE5MywgNTYxOTgsIDkyNDksIDkyNTUsIDU2MjA0LCA1NjIxNiwgNTYyMzMsIAotICAgIDU2MjUwLCA1NjI2NywgNTYyODQsIDU2MzAxLCA1NjMxOCwgNTYzMzUsIDU2MzUyLCA1NjM2OSwgNTYzODYsIDU2NDAzLCAKLSAgICA1NjQyMCwgNTY0MzcsIDU2NDU0LCA1NjQ3MSwgNTY0ODgsIDU2NTA1LCA1NjUyMiwgNTY1MzksIDU2NTU2LCA1NjU3MywgCi0gICAgNTY1OTAsIDU2NjA3LCA1NjYyNCwgNTY2NDEsIDU2NjU4LCA1NjY3NSwgNTY2OTIsIDU2NzA5LCA1NjcyNiwgNTY3NDMsIAotICAgIDU2NzYwLCA1Njc3NywgNTY3OTQsIDU2ODExLCA1NjgyOCwgNTY4NDUsIDU2ODYyLCA1Njg3OSwgNTY4OTYsIDU2OTEzLCAKLSAgICA1NjkzMCwgNTY5NDcsIDU2OTY0LCA1Njk4MSwgNTY5OTgsIDU3MDE1LCA1NzAzMiwgNTcwNDksIDU3MDYwLCA1NzA2NSwgCi0gICAgMTU5MywgNTcwNjksIDU3MDc1LCA1NzA4MCwgNzY5MywgMTU5OCwgNTcwODUsIDU3MDk0LCAyNTY2NCwgNTcwOTksIDU3MTEwLCAKLSAgICA1NzEyMCwgNTcxMjUsIDU3MTMyLCA1NzEzOCwgNTcxNDMsIDU3MTQ4LCAxNDgyMCwgNTcxNTIsIDkyNjYsIDE2MDMsIDkyNzEsIAotICAgIDU3MTU4LCA1NzE2MywgNTcxNjksIDU3MTc0LCA1NzE3OSwgNTcxODQsIDU3MTg5LCA1NzE5NCwgNTcxOTksIDU3MjA0LCAKLSAgICA1NzIxMCwgNTcyMTYsIDU3MjIyLCA1NzIyNywgNTcyMzEsIDU3MjM2LCA1NzI0MSwgNTcyNDUsIDU3MjUwLCA1NzI1NSwgCi0gICAgNTcyNjAsIDU3MjY0LCA1NzI2OSwgNTcyNzUsIDU3MjgwLCA1NzI4NSwgNTcyODksIDU3Mjk0LCA1NzI5OSwgNTczMDUsIAotICAgIDU3MzEwLCA1NzMxNSwgNTczMjEsIDU3MzI3LCA1NzMzMiwgNTczMzYsIDU3MzQxLCA1NzM0NiwgNTczNTEsIDU3MzU1LCAKLSAgICA1NzM2MCwgNTczNjUsIDU3MzcwLCA1NzM3NiwgNTczODIsIDU3Mzg3LCA1NzM5MSwgNTczOTUsIDU3NDAwLCA1NzQwNSwgCi0gICAgNTc0MTAsIDI3MDI0LCA1NzQxNCwgNTc0MTksIDU3NDI0LCA1NzQzMCwgNTc0MzUsIDU3NDQwLCA1NzQ0NCwgNTc0NDksIAotICAgIDU3NDU0LCA1NzQ2MCwgNTc0NjUsIDU3NDcwLCA1NzQ3NiwgNTc0ODIsIDU3NDg3LCA1NzQ5MSwgNTc0OTYsIDU3NTAxLCAKLSAgICA1NzUwNSwgNTc1MTAsIDU3NTE1LCA1NzUyMCwgNTc1MjYsIDU3NTMyLCA1NzUzNywgNTc1NDEsIDU3NTQ2LCA1NzU1MSwgCi0gICAgNTc1NTUsIDU3NTYwLCA1NzU2NSwgNTc1NzAsIDU3NTc0LCA1NzU3NywgMjkzOTUsIDU3NTgyLCA1NzU5MCwgMTQ4ODYsIAotICAgIDE0OTEwLCA5MzYyLCA1NzU5NiwgNTc2MDYsIDU3NjIxLCA5MzY3LCA1NzYzMiwgNTc2MzcsIDU3NjQ4LCA1NzY2MCwgCi0gICAgNTc2NzIsIDU3Njg0LCAyNjQ5LCA1NzY5NiwgNTc3MDEsIDU3NzA1LCA1NzcxMSwgNTc3MTcsIDU3NzIyLCAxNjE1LCAxMDEwLCAKLSAgICA1NzczMSwgNTc3MzYsIDM2NzU4LCA1Nzc0MCwgNTc3NDQsIDU3NzQ5LCA1Nzc1MywgMTQ5NzEsIDU3NzU4LCA1Nzc2MSwgCi0gICAgNTc3NjksIDU3Nzc3LCAxNjE5LCA5MzkyLCA5Mzk4LCAxNjI0LCA1Nzc4NSwgNTc3OTIsIDU3Nzk3LCA1NzgwNiwgNTc4MTYsIAotICAgIDU3ODIzLCA1NzgyOCwgMTYyOSwgNTc4MzUsIDU3ODQwLCAxNTA4NiwgNTc4NDQsIDU3ODQ5LCA1Nzg1NiwgNTc4NjIsIAotICAgIDU3ODY2LCA1Nzg3NywgNTc4ODcsIDE1MTA4LCA3NjE2LCA3NjIzLCAxNjM0LCA1Nzg5NCwgNTc5MDAsIDU3OTA4LCA1NzkxNSwgCi0gICAgNTc5MjEsIDU3OTI4LCA1Nzk0MCwgNTc5NDYsIDU3OTUxLCA1Nzk2MywgNTc5NzQsIDU3OTgzLCA1Nzk5MywgMzY2OCwgCi0gICAgMjg2NjAsIDI4NjY5LCAxNTE0OCwgMTYzOSwgMTY0MywgNTgwMDEsIDU4MDEyLCA1ODAxNywgMTY0NiwgNTgwMjUsIDU4MDMwLCAKLSAgICA1ODA0MiwgNTgwNDgsIDU4MDUzLCA1ODA2MSwgMTY1MSwgNTgwNjYsIDU4MDcxLCA1ODA3OSwgNTgwODcsIDU4MDk0LCAKLSAgICA1ODEwMywgNTgxMTEsIDU4MTIwLCAxNjU2LCA1ODEyNCwgMTY2MSwgNTgxMjksIDU4MTM2LCAxNTI2OCwgNTgxNDQsIAotICAgIDU4MTUwLCA1ODE1NSwgNTgxNjMsIDU4MTcwLCA1ODE3OCwgMjA2NTgsIDU4MTgzLCA5NTI3LCA1ODE5MiwgNTgxOTgsIAotICAgIDU4MjA1LCA1ODIxMiwgNTgyMTgsIDU4MjI4LCA1ODIzNCwgNTgyMzksIDU4MjQ0LCA1ODI1MiwgOTUzNiwgOTU0MSwgCi0gICAgNTgyNjAsIDU4MjY2LCA1ODI3NCwgMzczMywgMzY4NDYsIDU4Mjc5LCA1ODI4NSwgNTgyOTAsIDU4Mjk4LCA1ODMwNSwgCi0gICAgMTAzNTYsIDU4MzEwLCA1ODMxNiwgMTY3MiwgNTgzMjEsIDU4MzI0LCAxMDU4LCA1ODMzMCwgNTgzMzUsIDU4MzQwLCAKLSAgICA1ODM0NiwgNTgzNTEsIDU4MzU2LCA1ODM2MSwgNTgzNjYsIDU4MzcxLCA1ODM3NiwgMTY4MSwgOSwgNTgzODIsIDU4Mzg2LCAKLSAgICA1ODM5MSwgNTgzOTUsIDU4Mzk5LCA1ODQwMywgMjk2NDMsIDU4NDA4LCA1ODQxMywgNTg0MTgsIDU4NDIyLCA1ODQyNSwgCi0gICAgNTg0MjksIDU4NDMzLCA1ODQzOCwgNTg0NDIsIDU4NDQ3LCA1ODQ1MSwgMzIzMTUsIDMyMzIwLCAzMjMyNSwgNTg0NTQsIAotICAgIDU4NDYxLCA1ODQ2NywgMzY1ODUsIDU4NDc3LCAzMjMzMSwgMjk4OTEsIDI5NjUzLCAyOTY1OSwgMzIzNDcsIDI5NjY1LCAKLSAgICA1ODQ4MiwgNTg0ODcsIDI5OTI0LCA1ODQ5MSwgNTg0OTQsIDU4NDk4LCA1ODUwNSwgNTg1MDgsIDU4NTEzLCA1ODUxNywgCi0gICAgNTg1MjEsIDU4NTI0LCA1ODUzNCwgNTg1NDYsIDU4NTUzLCAzMTI4MiwgNTg1NTYsIDEzOTM2LCA4MjEsIDU4NTU5LCAKLSAgICA1ODU2MywgNTg1NjgsIDU4NTcyLCA1ODU3NSwgMTE5NDQsIDU4NTgyLCA1ODU4OSwgNTg2MDIsIDU4NjEwLCA1ODYxOSwgCi0gICAgNTg2MjQsIDU4NjM0LCA1ODY0NywgNTg2NTksIDU4NjY2LCA1ODY3MSwgNTg2ODAsIDU4NjkzLCAzMzczMiwgNTg3MTEsIAotICAgIDU4NzE2LCA1ODcyMywgNTg3MjksIDU4NzM0LCA1ODc0MiwgNTg3NDksIDI1MjI0LCA2MTMsIDU4NzU1LCA1ODc2MSwgCi0gICAgNTg3NzEsIDU4Nzc3LCA1ODc4MiwgMjk2ODMsIDQ0ODEsIDI5Njk3LCA1ODc4NiwgNTg3OTYsIDU4ODAxLCA1ODgxMSwgCi0gICAgNTg4MjYsIDU4ODMyLCA1ODgzOCwgMjk3MDcsIDU4ODQzLCAyODg1NiwgNTg4NDcsIDU4ODUyLCA1ODg1NywgNTg4NjEsIAotICAgIDU4ODY2LCAxNTE1MSwgNTg4NzMsIDU4ODc4LCA1ODg4MiwgNDUyMiwgMjk3MzMsIDU4ODg2LCA1ODg5MiwgMzI3LCA1ODkwMiwgCi0gICAgNTg5MDksIDU4OTE2LCA1ODkyMSwgNTg5MzAsIDU2MTQzLCA1ODkzNiwgNTg5NDQsIDU4OTQ4LCA1ODk1MiwgNTg5NTYsIAotICAgIDU4OTYwLCA1ODk2NSwgNTg5NjksIDU4OTc1LCA1ODk4MywgNTg5ODgsIDU4OTkzLCA1ODk5NywgNTkwMDIsIDU5MDA2LCAKLSAgICA1OTAxMCwgNTkwMTYsIDU5MDIyLCA1OTAyNywgNTkwMzEsIDI5ODU3LCA1OTAzNiwgMjk4NjMsIDI5ODY5LCA1OTA0MSwgCi0gICAgNTkwNDcsIDU5MDU0LCA1OTA1OSwgNTkwNjMsIDI4ODczLCAxNDgxMywgNTkwNjYsIDU5MDcwLCA1OTA3NSwgNTkwODIsIAotICAgIDU5MDg4LCA1OTA5MiwgNTkwOTcsIDM2Mjk1LCA1OTEwMywgNTkxMDcsIDU5MTExLCA1OTExNiwgNTkxMjIsIDU5MTI4LCAKLSAgICA1OTE0MCwgNTkxNDksIDU5MTU5LCA1OTE2NSwgNTkxNzIsIDU5MTc3LCA1OTE4MiwgNTkxODYsIDU5MTg5LCA1OTE5NSwgCi0gICAgNTkyMDIsIDU5MjA3LCA1OTIxMiwgNTkyMTksIDU5MjI2LCA1OTIzMiwgNTkyMzcsIDU5MjQyLCA1OTI1MCwgNTkyNTUsIAotICAgIDIzNzcsIDU5MjU5LCA1OTI2NCwgNTkyNzAsIDU5Mjc1LCA1OTI4MSwgNTkyODYsIDU5MjkxLCA1OTI5NiwgNTkzMDIsIAotICAgIDI5ODkwLCA1OTMwNywgNTkzMTMsIDU5MzE5LCA1OTMyNSwgMjk5NTQsIDU5MzMwLCA1OTMzNSwgNTkzNDAsIDI5OTY1LCAKLSAgICA1OTM0NSwgNTkzNTAsIDU5MzU1LCA1OTM2MSwgNTkzNjcsIDI5OTcwLCA1OTM3MiwgNTkzNzcsIDU5MzgyLCAzMDAyNSwgCi0gICAgMzAwMzEsIDU5Mzg3LCA1OTM5MiwgMzAwMzYsIDU5Mzk3LCAyNTg5MSwgMzAwNTgsIDMwMDYyLCA1OTQwMiwgNTkzNzgsIAotICAgIDU5NDA2LCA1OTQxNCwgNTk0MjAsIDU5NDI4LCA1OTQzNSwgNTk0NDEsIDU5NDUxLCA1OTQ1NywgNTk0NjQsIDg5ODQsIAotICAgIDMwMDc2LCA1OTQ3MCwgNTk0ODMsIDU5NDkyLCA1OTQ5OCwgNTk1MDcsIDU5NTEzLCAyMTU3NSwgNTk1MjAsIDU5NTI3LCAKLSAgICA1OTUzNywgMzAwMjYsIDU5NTQwLCA1OTU0NywgNTk1NTIsIDU5NTU2LCA1OTU2MCwgNTk1NjUsIDQ1OTgsIDU5NTY5LCAKLSAgICA1OTU3NCwgNTk1NzksIDMyNDA5LCAzMjQxNCwgNTk1ODMsIDMyNDI4LCA1OTU4OCwgMzI0MzMsIDU5NTkzLCA1OTU5OSwgCi0gICAgMzI0NDUsIDMyNDUxLCAzMjQ1NywgNTk2MDQsIDU5NjEwLCAyMDYxOSwgNTk2MjEsIDU5NjI0LCA1OTYzNiwgNTk2NDQsIAotICAgIDMwMDk0LCA1OTY0OCwgNTk2NTcsIDU5NjY3LCA1OTY3NiwgMzAwOTksIDU5NjgxLCA1OTY4OCwgNTk2OTcsIDU5NzAzLCAKLSAgICA1OTcxMSwgNTk3MTgsIDQ1NzMsIDQzMTAsIDU5NzIzLCAzMDAzNywgNTk3MjksIDU5NzMyLCA1OTczOCwgNTk3NDUsIAotICAgIDU5NzUwLCA1OTc1NSwgMjE1MDIsIDU5NzU5LCA1OTc2NSwgNTk3NzEsIDU5Nzc2LCA1OTc4MSwgNTk3ODUsIDU5NzkxLCAKLSAgICA1OTc5NywgMzExOTYsIDgyNiwgMzM0MDYsIDM0MzA0LCAzNDMxMCwgNTk4MDIsIDU5ODA2LCA1OTgxMCwgNTk4MTMsIAotICAgIDU5ODI2LCA1OTgzMiwgNTk4MzYsIDU5ODM5LCA1OTg0NCwgMzE0OTUsIDU5ODQ4LCAyODg3OCwgMTk0NDYsIDU5ODU0LCAKLSAgICA0NTAyLCA0NTEwLCA3NDcyLCA1OTg1NywgNTk4NjIsIDU5ODY3LCA1OTg3MiwgNTk4NzcsIDU5ODgyLCA1OTg4NywgNTk4OTIsIAotICAgIDU5ODk3LCA1OTkwMiwgNTk5MDgsIDU5OTEzLCA1OTkxOCwgNTk5MjQsIDU5OTI5LCA1OTkzNCwgNTk5MzksIDU5OTQ0LCAKLSAgICA1OTk0OSwgNTk5NTQsIDU5OTYwLCA1OTk2NSwgNTk5NzEsIDU5OTc2LCA1OTk4MSwgNTk5ODYsIDU5OTkxLCA1OTk5NiwgCi0gICAgNjAwMDEsIDYwMDA2LCA2MDAxMSwgNjAwMTYsIDYwMDIxLCA2MDAyNywgNjAwMzIsIDYwMDM3LCA2MDA0MiwgNjAwNDcsIAotICAgIDYwMDUyLCA2MDA1NywgNjAwNjMsIDYwMDY4LCA2MDA3MywgNjAwNzgsIDYwMDgzLCA2MDA4OCwgNjAwOTMsIDYwMDk4LCAKLSAgICA2MDEwMywgNjAxMDgsIDYwMTE0LCA2MDExOSwgNjAxMjQsIDYwMTI5LCA2MDEzNCwgNjAxNDAsIDYwMTQ2LCA2MDE1MSwgCi0gICAgNjAxNTcsIDYwMTYyLCA2MDE2NywgNjAxNzIsIDYwMTc3LCA2MDE4MiwgMTQ3NiwgMjQwLCA2MDE4NywgNjAxOTEsIDYwMTk1LCAKLSAgICA2MDE5OSwgMjMxNTcsIDYwMjAzLCA2MDIwNywgNjAyMTIsIDYwMjE2LCA2MDIyMSwgNjAyMjUsIDYwMjI5LCA2MDIzMywgCi0gICAgNjAyMzgsIDYwMjQyLCAxMTY4MSwgNjAyNDcsIDYwMjUxLCA2MDI1OCwgMTM0NDQsIDYwMjY3LCA2MDI3NiwgNjAyODAsIAotICAgIDYwMjg1LCA2MDI5MCwgNjAyOTQsIDIyOTYwLCAyOTU3LCA2MDI5OCwgNjAzMDQsIDYwMzEzLCA2MDMyMSwgNjAzMjcsIAotICAgIDYwMzM5LCA2MDM1MSwgNjAzNTUsIDYwMzYwLCA2MDM2NCwgNjAzNzAsIDYwMzc2LCA2MDM4MSwgNjAzOTEsIDYwNDAxLCAKLSAgICA2MDQwNywgNjA0MTIsIDYwNDE2LCA2MDQyMSwgNjA0MjcsIDYwNDM2LCA2MDQ0NSwgNjA0NTMsIDEzNzk4LCA2MDQ1NywgCi0gICAgNjA0NjYsIDYwNDc0LCA2MDQ4NiwgNjA0OTcsIDYwNTA4LCA2MDUxNywgNjA1MjEsIDYwNTMwLCA2MDU0MCwgNjA1NDYsIAotICAgIDYwNTUxLCA2MDU1NywgNjA1NjIsIDk4LCAyODc3MiwgNjA1NzMsIDI0MjI4LCAyNDIzOCwgNjA1NzksIDYwNTg2LCA2MDU5MiwgCi0gICAgNjA1OTYsIDYwNjA2LCA2MDYxNywgNjA2MjUsIDYwNjM0LCA2MDYzOSwgNjA2NDQsIDYwNjQ4LCAxNTUwNCwgNjA2NTYsIAotICAgIDYwNjYwLCA2MDY2NiwgNjA2NzYsIDYwNjgzLCA2MDY4OSwgMzI1MDgsIDExNjIsIDYwNjk1LCA2MDY5OCwgNjA3MDIsIAotICAgIDYwNzEyLCA2MDcxOCwgNjA3MjUsIDExNjE4LCA2MDczMiwgNjA3MzgsIDYwNzQ3LCA2MDc1NiwgNjA3NjIsIDYwNzY4LCAKLSAgICA2MDc3NCwgNjA3NzksIDYwNzg2LCA2MDc5MywgNjA3OTksIDYwODEyLCA2MDgyMSwgNjA4MzAsIDYwODM1LCA2MDgzOSwgCi0gICAgNjA4NDUsIDYwODUyLCA2MDg1OSwgNjA4NjYsIDYwODczLCA2MDg4MCwgNjA4ODUsIDYwODg5LCA2MDg5MywgNjA4OTYsIAotICAgIDYwOTA2LCA2MDkxMCwgNjA5MjIsIDYwOTMxLCA2MDkzNSwgNjA5NDAsIDYwOTQ0LCA2MDk1MCwgNjA5NTUsIDYwOTYyLCAKLSAgICA2MDk3MSwgNjA5NzksIDYwOTg3LCA2MDk5MiwgNjA5OTYsIDYxMDAxLCA2MTAwNiwgNjEwMTYsIDYxMDI0LCA2MTAyOSwgCi0gICAgNjEwMzMsIDYxMDM3LCA2MTA0MywgNjEwNTUsIDYxMDYzLCA2MTA3MywgNjEwODAsIDYxMDg2LCA2MTA5MSwgNjEwOTUsIAotICAgIDYxMDk5LCA2MTEwMywgNjExMTIsIDYxMTIxLCA2MTEzMCwgNjExMzYsIDYxMTQyLCA2MTE0OCwgNjExNTMsIDYxMTYwLCAKLSAgICA2MTE2NiwgNjExNzQsIDYxMTgxLCAxMDc3MiwgNjExODcsIDYxMTkzLCA2MTE5NywgMTI1MjMsIDYxMjAxLCA2MTIwNiwgCi0gICAgNjEyMTYsIDYxMjI1LCA2MTIzMSwgNjEyMzcsIDYxMjQ1LCA2MTI1MiwgNjEyNTYsIDYxMjYwLCA2MTI2NiwgNjEyNzQsIAotICAgIDYxMjgxLCA2MTI4NywgNjEyOTgsIDYxMzAyLCA2MTMwNiwgNjEzMTAsIDYxMzEzLCA2MTMxOSwgNjEzMjQsIDYxMzI4LCAKLSAgICA2MTMzMiwgNjEzNDEsIDYxMzQ5LCA2MTM1NiwgNjEzNjIsIDYxMzY5LCAyMjA4NywgMzYzMzcsIDYxMzc0LCA2MTM4MiwgCi0gICAgNjEzODYsIDYxMzg5LCA2MTM5NywgNjE0MDQsIDYxNDEwLCA2MTQxOSwgNjE0MjcsIDYxNDMzLCA2MTQzOCwgNjE0NDIsIAotICAgIDYxNDQ3LCA2MTQ1MSwgNjE0NTUsIDYxNDYwLCA2MTQ2OSwgNjE0NzMsIDYxNDgwLCA2MTQ4NywgNjE0OTMsIDYxNTAxLCAKLSAgICA2MTUwNywgNjE1MTgsIDYxNTI2LCA2MTUzMiwgMjA3NTMsIDYxNTQxLCA2MTU0OCwgNjE1NTUsIDYxNTYyLCA2MTU2OSwgCi0gICAgNjE1NzYsIDM5Mjg4LCAxMTQ1NiwgNjE1ODMsIDYxNTkwLCA2MTU5NSwgMzI1NDQsIDM3NDg0LCA2MTYwMSwgNjE2MDYsIAotICAgIDYxNjExLCA2MTYxNywgNjE2MjMsIDYxNjI5LCA2MTYzNCwgNjE2MzksIDYxNjQ0LCA2MTY0OSwgNjE2NTUsIDYxNjYwLCAKLSAgICA2MTY2NiwgNjE2NzEsIDYxNjc3LCA2MTY4MiwgNjE2ODcsIDYxNjkyLCA2MTY5NywgNjE3MDIsIDYxNzA3LCA2MTcxMiwgCi0gICAgNjE3MTgsIDYxNzIzLCA2MTcyOSwgNjE3MzQsIDYxNzM5LCA2MTc0NCwgNjE3NDksIDYxNzU0LCA2MTc1OSwgNjE3NjUsIAotICAgIDYxNzcwLCA2MTc3NSwgNjE3ODAsIDYxNzg1LCA2MTc5MCwgNjE3OTUsIDYxODAwLCA2MTgwNSwgNjE4MTAsIDYxODE1LCAKLSAgICA2MTgyMSwgNjE4MjYsIDYxODMxLCA2MTgzNiwgNjE4NDEsIDYxODQ2LCA2MTg1MSwgNjE4NTYsIDYxODYxLCA2MTg2NywgCi0gICAgNjE4NzIsIDYxODc3LCA2MTg4MiwgNjE4ODcsIDYxODkyLCA2MTg5NywgNjE5MDIsIDYxOTA3LCA2MTkxMiwgNjE5MTcsIAotICAgIDYxOTIyLCA2MTkyNywgNjE5MzMsIDE3OTcsIDIyNCwgMzQ5OTMsIDYxOTM4LCA2MTk0MSwgNjE5NDYsIDYxOTUwLCA2MTk1MywgCi0gICAgNjE5NTgsIDYwOTgzLCA2MTk2OSwgNjE5NzksIDYxOTg2LCA2MjAwMiwgNjIwMTEsIDYyMDIxLCA2MjAzMSwgNjIwMzksIAotICAgIDYyMDQ3LCA2MjA1MSwgNjIwNTQsIDYyMDYxLCA2MjA2NywgNjIwNzgsIDYyMDkwLCA2MjEwMSwgNjIxMTAsIDYyMTE3LCAKLSAgICAxMjg2LCAyMTM5MSwgNjIxMjcsIDI1NDQsIDYyMTMxLCA2MjE0MCwgMTEyNywgMTU0NzcsIDM1NjIyLCA2MjE0OCwgNjIxNTYsIAotICAgIDYyMTcwLCA2MjE4MywgNjIxODcsIDYyMTkyLCA2MjE5NywgNjIyMDIsIDYyMjA4LCA2MjIxNCwgNjIyMTksIDY5NTcsIAotICAgIDYyMjI0LCA2MjIzMiwgOTM5MywgNjIyMzcsIDYyMjQzLCAxNjg0LCA5NDA1LCA3MjMsIDYyMjUyLCA2MjI2MSwgNjIyNzEsIAotICAgIDI0OTkyLCA2MjI4MCwgNjIyODYsIDE1MDYzLCA2MjI5MiwgNjIyOTYsIDM4ODEsIDk3MzYsIDYyMzAyLCA1ODAwNywgCi0gICAgNjIzMDksIDM5MDUsIDE4NCwgMTI0NDQsIDYyMzE1LCA2MjMyNywgNjIzMzEsIDYyMzM3LCAyNTY4NCwgNjIzNDEsIDk3MjQsIAotICAgIDI2ODQsIDQsIDYyMzQ2LCA2MjM1NiwgNjIzNjIsIDYyMzczLCA2MjM4MCwgNjIzODYsIDYyMzkyLCA2MjQwMCwgNjI0MDcsIAotICAgIDYyNDEzLCA2MjQyMywgNjI0MzMsIDYyNDQzLCAxMjk4LCA2MjQ1MiwgNjI0NTgsIDI3MDcsIDI3MTMsIDY5NTQsIDIyMTgsIAotICAgIDYyNDYyLCA2MjQ2NiwgNjI0NzUsIDYyNDgzLCA2MjQ5NCwgNjI1MDIsIDYyNTEwLCA2MjUxNiwgNjI1MjEsIDYyNTMyLCAKLSAgICA2MjU0MywgNjI1NTEsIDYyNTU3LCA4MDYxLCA2MjU2MiwgNjI1NzAsIDYyNTc0LCA2MjU3OCwgNjI1OTAsIDI2MDYwLCAKLSAgICA2MjU5NywgNjI2MDcsIDYyNjEzLCA2MjYxOSwgODE2MywgNjI2MjksIDYyNjQwLCA2MjY1MCwgNjI2NTksIDYyNjYzLCAKLSAgICA2MjY3MCwgMTEyOSwgMjUzNywgNjI2ODAsIDYyNjg1LCA2MjY5MywgNjI3MDEsIDYyNzEyLCA2MjcxOSwgNjI3MzMsIAotICAgIDEyMzY5LCAzNzksIDYyNzQzLCA2Mjc0NywgNjI3NTYsIDYyNzY0LCA2Mjc3MCwgNjI3ODQsIDYyNzkxLCA2Mjc5NywgCi0gICAgNjI4MDYsIDYyODEzLCA2MjgyMywgNjI4MzEsIDM3NDAsIDE4OSwgNjI4MzksIDYyODUwLCA2Mjg1NCwgNjI4NjYsIDI1ODgyLCAKLSAgICAxNTYsIDYyODcyLCA2Mjg3NywgNjI4ODEsIDYyODg4LCA2Mjg5NCwgNjI5MDIsIDYyOTA5LCA3MjI2LCA2MjkxNiwgNjI5MjUsIAotICAgIDYyOTMzLCAzODA2LCA2Mjk0NiwgMTUxMDksIDYyOTUwLCAyNzUyLCA0MjgsIDYyOTU1LCA2Mjk2OCwgNjI5NzMsIDE3OTYsIAotICAgIDY0NywgNjI5NzcsIDM4MTIsIDYyOTg1LCA2Mjk5MSwgOTYzLCA2MzAwMSwgNjMwMTAsIDYzMDE1LCAxMzE3OCwgMTMxODUsIAotICAgIDQyNjIwLCA2MzAxOSwgMzc1MCwgMTEzNTAsIDYzMDI3LCA2MzAzNCwgMjE2MTgsIDYzMDM4LCA2MzA0NSwgNjMwNTEsIAotICAgIDYzMDU2LCA2MzA2MSwgMTMxOTgsIDM1NCwgNjMwNjYsIDYzMDc4LCA2MzA4NCwgNjMwOTIsIDI3NjQsIDE3MTYsIDYzMTAwLCAKLSAgICA2MzEwMiwgNjMxMDcsIDYzMTEyLCA2MzExNywgNjMxMjMsIDYzMTI4LCA2MzEzMywgNjMxMzgsIDYzMTQzLCA2MzE0OCwgCi0gICAgNjMxNTMsIDYzMTU5LCA2MzE2NCwgNjMxNjksIDYzMTc0LCA2MzE3OSwgNjMxODQsIDYzMTg5LCA2MzE5NCwgNjMxOTksIAotICAgIDYzMjA1LCA2MzIxMCwgNjMyMTUsIDYzMjIwLCA2MzIyNiwgNjMyMzEsIDYzMjM3LCA2MzI0MiwgNjMyNDcsIDYzMjUyLCAKLSAgICA2MzI1NywgNjMyNjIsIDYzMjY3LCA2MzI3MiwgNjMyNzgsIDYzMjgzLCA2MzI4OSwgNjMyOTQsIDYzMjk5LCA2MzMwNCwgCi0gICAgNjMzMDksIDYzMzE0LCA2MzMxOSwgNjMzMjQsIDYzMzI5LCA2MzMzNSwgNjMzNDAsIDYzMzQ1LCA2MzM0OSwgNjMzNTMsIAotICAgIDYzMzU4LCA2MzM2MiwgNjMzNjcsIDYzMzcyLCA2MzM3OCwgNjMzODMsIDYzMzg3LCA2MzM5MiwgNjMzOTYsIDYzMzk5LCAKLSAgICA2MzQwMSwgNjM0MDUsIDYzNDA4LCA2MzQxMywgNjM0MTcsIDYzNDIxLCA2MzQyNSwgNjM0MjksIDYzNDM4LCA2MzQ0MiwgCi0gICAgMzAyODgsIDYzNDQ1LCAzMDI5MywgNjM0NTIsIDYzNDU3LCAzMDI5OCwgNjM0NjYsIDYzNDc1LCAzMDMwNCwgNjM0ODAsIAotICAgIDMwMzA5LCA2MzQ4OSwgNjM0OTQsIDk5MTQsIDYzNDk4LCA2MzUwMywgNjM1MDgsIDMwMzE0LCA2MzUxMiwgMzc2NTAsIAotICAgIDYzNTE2LCA2MzUxOSwgNjM1MjMsIDY2MzgsIDYzNTI5LCA2MzUzNCwgNjM1MzgsIDM2MzMsIDMwMzE5LCA2MzU0MSwgCi0gICAgNjM1NDUsIDYzNTQ4LCA2MzU1MywgNjM1NTcsIDYzNTYzLCA2MzU3MSwgNjM1ODQsIDYzNTkzLCA2MzU5OSwgNjM2MDQsIAotICAgIDYzNjEwLCA2MzYxNCwgNjM2MjAsIDYzNjI4LCA2MzYzMywgNjM2NDAsIDYzNjQ2LCA2MzY1NCwgNjM2NjMsIDYzNjcxLCAKLSAgICAzMDMyMiwgNjM2NzgsIDYzNjg4LCA2MzY5NywgNjM3MTAsIDYzNzE1LCA2MzcyMCwgNjM3MjksIDYzNzM1LCA2Mzc0MiwgCi0gICAgNjM3NTMsIDYzNzY1LCA2Mzc3MiwgNjM3ODEsIDYzNzkwLCA2Mzc5OSwgNjM4MDYsIDYzODEyLCA2MzgxOSwgNjM4MjcsIAotICAgIDYzODM0LCA2Mzg0MiwgNjM4NTEsIDYzODU5LCA2Mzg2NiwgNjM4NzQsIDYzODgzLCA2Mzg5MSwgNjM5MDAsIDYzOTEwLCAKLSAgICA2MzkxOSwgNjM5MjcsIDYzOTM0LCA2Mzk0MiwgNjM5NTEsIDYzOTU5LCA2Mzk2OCwgNjM5NzgsIDYzOTg3LCA2Mzk5NSwgCi0gICAgNjQwMDQsIDY0MDE0LCA2NDAyMywgNjQwMzMsIDY0MDQ0LCA2NDA1NCwgNjQwNjMsIDY0MDcxLCA2NDA3OCwgNjQwODYsIAotICAgIDY0MDk1LCA2NDEwMywgNjQxMTIsIDY0MTIyLCA2NDEzMSwgNjQxMzksIDY0MTQ4LCA2NDE1OCwgNjQxNjcsIDY0MTc3LCAKLSAgICA2NDE4OCwgNjQxOTgsIDY0MjA3LCA2NDIxNSwgNjQyMjQsIDY0MjM0LCA2NDI0MywgNjQyNTMsIDY0MjY0LCA2NDI3NCwgCi0gICAgNjQyODMsIDY0MjkzLCA2NDMwNCwgNjQzMTQsIDY0MzI1LCA2NDMzNywgNjQzNDgsIDY0MzU4LCA2NDM2NywgNjQzNzUsIAotICAgIDY0MzgyLCA2NDM5MCwgNjQzOTksIDY0NDA3LCA2NDQxNiwgNjQ0MjYsIDY0NDM1LCA2NDQ0MywgNjQ0NTIsIDY0NDYyLCAKLSAgICA2NDQ3MSwgNjQ0ODEsIDY0NDkyLCA2NDUwMiwgNjQ1MTEsIDY0NTE5LCA2NDUyOCwgNjQ1MzgsIDY0NTQ3LCA2NDU1NywgCi0gICAgNjQ1NjgsIDY0NTc4LCA2NDU4NywgNjQ1OTcsIDY0NjA4LCA2NDYxOCwgNjQ2MjksIDY0NjQxLCA2NDY1MiwgNjQ2NjIsIAotICAgIDY0NjcxLCA2NDY3OSwgNjQ2ODgsIDY0Njk4LCA2NDcwNywgNjQ3MTcsIDY0NzI4LCA2NDczOCwgNjQ3NDcsIDY0NzU3LCAKLSAgICA2NDc2OCwgNjQ3NzgsIDY0Nzg5LCA2NDgwMSwgNjQ4MTIsIDY0ODIyLCA2NDgzMSwgNjQ4NDEsIDY0ODUyLCA2NDg2MiwgCi0gICAgNjQ4NzMsIDY0ODg1LCA2NDg5NiwgNjQ5MDYsIDY0OTE3LCA2NDkyOSwgNjQ5NDAsIDY0OTUyLCA2NDk2NSwgNjQ5NzcsIAotICAgIDY0OTg4LCA2NDk5OCwgNjUwMDcsIDY1MDE1LCA2NTAyMiwgNjUwMzAsIDY1MDM5LCA2NTA0NywgNjUwNTYsIDY1MDY2LCAKLSAgICA2NTA3NSwgNjUwODMsIDY1MDkyLCA2NTEwMiwgNjUxMTEsIDY1MTIxLCA2NTEzMiwgNjUxNDIsIDY1MTUxLCA2NTE1OSwgCi0gICAgNjUxNjgsIDY1MTc4LCA2NTE4NywgNjUxOTcsIDY1MjA4LCA2NTIxOCwgNjUyMjcsIDY1MjM3LCA2NTI0OCwgNjUyNTgsIAotICAgIDY1MjY5LCA2NTI4MSwgNjUyOTIsIDY1MzAyLCA2NTMxMSwgNjUzMTksIDY1MzI4LCA2NTMzOCwgNjUzNDcsIDY1MzU3LCAKLSAgICA2NTM2OCwgNjUzNzgsIDY1Mzg3LCA2NTM5NywgNjU0MDgsIDY1NDE4LCA2NTQyOSwgNjU0NDEsIDY1NDUyLCA2NTQ2MiwgCi0gICAgNjU0NzEsIDY1NDgxLCA2NTQ5MiwgNjU1MDIsIDY1NTEzLCA2NTUyNSwgNjU1MzYsIDY1NTQ2LCA2NTU1NywgNjU1NjksIAotICAgIDY1NTgwLCA2NTU5MiwgNjU2MDUsIDY1NjE3LCA2NTYyOCwgNjU2MzgsIDY1NjQ3LCA2NTY1NSwgNjU2NjQsIDY1Njc0LCAKLSAgICA2NTY4MywgNjU2OTMsIDY1NzA0LCA2NTcxNCwgNjU3MjMsIDY1NzMzLCA2NTc0NCwgNjU3NTQsIDY1NzY1LCA2NTc3NywgCi0gICAgNjU3ODgsIDY1Nzk4LCA2NTgwNywgNjU4MTcsIDY1ODI4LCA2NTgzOCwgNjU4NDksIDY1ODYxLCA2NTg3MiwgNjU4ODIsIAotICAgIDY1ODkzLCA2NTkwNSwgNjU5MTYsIDY1OTI4LCA2NTk0MSwgNjU5NTMsIDY1OTY0LCA2NTk3NCwgNjU5ODMsIDY1OTkzLCAKLSAgICA2NjAwNCwgNjYwMTQsIDY2MDI1LCA2NjAzNywgNjYwNDgsIDY2MDU4LCA2NjA2OSwgNjYwODEsIDY2MDkyLCA2NjEwNCwgCi0gICAgNjYxMTcsIDY2MTI5LCA2NjE0MCwgNjYxNTAsIDY2MTYxLCA2NjE3MywgNjYxODQsIDY2MTk2LCA2NjIwOSwgNjYyMjEsIAotICAgIDY2MjMyLCA2NjI0NCwgNjYyNTcsIDY2MjY5LCA2NjI4MiwgNjYyOTYsIDY2MzA5LCA2NjMyMSwgNjYzMzIsIDY2MzQyLCAKLSAgICA2NjM1MSwgNjYzNTksIDY2MzY2LCA2NjM3MSwgNjQ4OSwgNjYzNzgsIDMwMzMyLCA2NjM4MywgNjYzODgsIDMwMzM3LCAKLSAgICA2NjM5NCwgMTkxMDAsIDMwMzQyLCA2NjM5OSwgNjY0MDUsIDY2NDEzLCA2NjQxOSwgNjY0MjUsIDY2NDMyLCA2NjQzOSwgCi0gICAgNjY0NDQsIDY2NDQ4LCA2NjQ1MSwgNjY0NTUsIDY2NDY0LCA2NjQ3MCwgNjY0ODIsIDY2NDkzLCA2NjQ5NywgMzAxOSwgCi0gICAgNjQ2NCwgNjY1MDIsIDY2NTA1LCA2NjUwNywgNjY1MTEsIDY2NTE1LCA2NjUxOSwgMjM5MjcsIDY2NTI0LCA2NjUyOCwgCi0gICAgNjY1MzEsIDY2NTM2LCA2NjU0MCwgNjY1NDcsIDY2NTUzLCA2NjU1NywgNjY1NjEsIDY2NTY0LCAzMDM1OSwgNjY1NjksIAotICAgIDY2NTc2LCA2NjU4NSwgNjY1OTMsIDY2NjA0LCA2NjYxMiwgNjY2MjAsIDY2NjI3LCA2NjYzNCwgNjY2NDAsIDY2NjUxLCAKLSAgICAzMDM2NCwgNjY2NTYsIDY2NjY3LCA2NjY3OSwgNjY2ODcsIDY2Njk4LCA2NjcwNywgNjY3MTgsIDY2NzIzLCA2NjczMSwgCi0gICAgMjUxMCwgNjY3MzYsIDMyMDAyLCA2Njc0OSwgNjY3NTMsIDY2NzY1LCA2Njc3MywgNjY3NzgsIDY2Nzg2LCAxNTY2NCwgCi0gICAgNjY3OTcsIDY2ODAzLCA2NjgxMCwgNjY4MTgsIDY2ODI0LCAzMDM3NCwgNjY4MjksIDM4MzEsIDU1NjA1LCA2NjgzNiwgCi0gICAgNjY4MzksIDY2ODQ3LCA2Njg2MCwgNjY4NzMsIDY2ODg2LCA2Njg5OSwgNjY5MDYsIDY2OTE3LCA2NjkyNiwgMzkxMDUsIAotICAgIDM5MTEwLCA2NjkzMSwgNjY5MzUsIDY2OTQzLCA2Njk1MCwgNjY5NTksIDY2OTY3LCA2Njk3MywgNjY5ODIsIDY2OTkwLCAKLSAgICA2Njk5OCwgNjcwMDIsIDY3MDExLCA2NzAyMCwgNjcwMzAsIDY3MDQzLCA2NzA1NiwgNjcwNjYsIDMwMzc5LCA2NzA3MiwgCi0gICAgNjcwNzksIDY3MDg1LCAzMDM4NSwgNjcwOTAsIDY3MDkzLCA2NzA5NywgNjcxMDUsIDY3MTE0LCAzODg0MywgNjcxMjIsIAotICAgIDY3MTMxLCA2NzEzOSwgNjcxNDYsIDY3MTU0LCA2NzE2NCwgNjcxNzMsIDY3MTgyLCA2NzE5MSwgNjcxOTksIDY3MjEwLCAKLSAgICA2NzIyMCwgNzczMywgMTk3MTUsIDY3MjI5LCA2NzIzNCwgNjcyMzksIDY3MjQzLCA2NzI0NywgNjcyNTIsIDY3MjU4LCAKLSAgICA2NzI2MywgNjcyNjgsIDY3Mjc0LCA2NzI3OSwgNjcyODQsIDE5NjgwLCA2NzI4OSwgNjcyOTYsIDY3MzA0LCA2NzMxMiwgCi0gICAgNjczMTcsIDY3MzI0LCA2NzMzMSwgNjczMzUsIDY3MzM5LCA2NzM0NywgNjczNTUsIDMwNDAyLCA2NzM2MSwgNjczNjcsIAotICAgIDY3Mzc5LCA2NzM4NSwgNjczODksIDY3Mzk2LCA2NzQwMSwgNjc0MTIsIDY3NDIyLCA2NzQzMiwgNjc0NDQsIDY3NDUwLCAKLSAgICA2NzQ2MCwgNjc0NzAsIDMwNDI5LCA2NzQ3OSwgNjc0ODgsIDY3NDk0LCA2NzUwNiwgNjc1MTcsIDY3NTI0LCA2NzUyOSwgCi0gICAgNjc1MzMsIDY3NTQxLCA2NzU0NywgNjc1NTIsIDY3NTU3LCA2NzU2NCwgNjc1NzIsIDY3NTg0LCA2NzU5NCwgNjc2MDMsIAotICAgIDY3NjEyLCA2NzYxOSwgMzE4NjYsIDIxOTA2LCA2NzYyNSwgNjc2MzAsIDY3NjM0LCA2NzYzOCwgNjc2NDMsIDY3NjQ5LCAKLSAgICA2NzY2MCwgNjc2NzMsIDY3Njc4LCA2NzY4NSwgMzA0MzQsIDY3NjkwLCA2NzcwMiwgNjc3MTEsIDY3NzIxLCA2NzczMiwgCi0gICAgNjc3NDUsIDY3NzUyLCA2Nzc2MSwgNjc3NzAsIDY3Nzc4LCA2Nzc4MywgNjc3ODksIDE0NjUsIDY3Nzk0LCA2Nzc5OSwgCi0gICAgNjc4MDQsIDY3ODA5LCA2NzgxNSwgNjc4MjAsIDY3ODI1LCA2NzgzMSwgNjc4MzcsIDY3ODQyLCA2Nzg0NiwgNjc4NTEsIAotICAgIDY3ODU2LCA2Nzg2MSwgNTYxMTEsIDY3ODY2LCA2Nzg3MSwgNjc4NzYsIDY3ODgxLCA2Nzg4NywgNjc4OTMsIDY3ODk4LCAKLSAgICA2NzkwMiwgNjc5MDcsIDY3OTEyLCA2NzkxNywgNjc5MjMsIDY3OTI4LCA2NzkzNCwgNjc5MzksIDY3OTQ0LCA2Nzk0OSwgCi0gICAgNjc5NTQsIDY3OTU4LCA2Nzk2NCwgNjc5NjksIDY3OTc4LCA2Nzk4MywgNjc5ODgsIDY3OTkzLCA2Nzk5OCwgNjgwMDIsIAotICAgIDY4MDA5LCA2ODAxNSwgMTUzMjYsIDE1MzMzLCA0Mjg3NSwgNjgwMjAsIDY3OTcwLCA2ODAyMiwgNjgwMzIsIDMwNDQzLCAKLSAgICA2ODAzNSwgNjgwNDQsIDY4MDUwLCA0NjE3LCAzMDQ0OCwgNjgwNTQsIDY4MDYwLCA2ODA2NiwgNjgwNzEsIDY4MDc1LCAKLSAgICA2ODA4MiwgNjgwODcsIDY4MDk3LCA2ODEwNiwgNjgxMTAsIDY4MTE2LCA2ODEyMiwgNjgxMjgsIDY4MTMyLCA2ODE0MCwgCi0gICAgNjgxNDcsIDY4MTU1LCA2ODE2MywgMzA0NTMsIDY4MTcwLCA2ODE3MywgNjgxODAsIDY4MTg2LCA2ODE5MSwgNjgxOTUsIAotICAgIDY4MjAxLCA2ODIwOCwgNjgyMTMsIDY4MjE3LCA2ODIyNiwgNjgyMzQsIDY4MjQwLCA2ODI0NSwgMzA0NTgsIDY4MjUyLCAKLSAgICA2ODI1OSwgNjgyNjUsIDY4MjcwLCA2ODI3NiwgNjgyODMsIDY4Mjg5LCAxOTQ1MywgMjU0MDgsIDY4Mjk1LCA2ODMwMCwgCi0gICAgNjgzMDYsIDY4MzE4LCA2ODAwMywgNjgwMTAsIDY4MzI4LCA2ODMzMywgNjgzNDAsIDY4MzQ3LCA2ODM1MywgNjgzNjQsIAotICAgIDY4MzY5LCA3NTAyLCA2ODM3NywgNjgzODAsIDY4Mzg2LCA2ODM5MCwgNjgzOTQsIDY4Mzk3LCA2ODQwMywgMzAyMDcsIAotICAgIDQ2NTYsIDkxMywgMTE3MzEsIDY4NDEwLCA2ODQxNiwgNjg0MjIsIDY4NDI4LCA2ODQzNCwgNjg0NDAsIDY4NDQ2LCA2ODQ1MiwgCi0gICAgNjg0NTgsIDY4NDYzLCA2ODQ2OCwgNjg0NzMsIDY4NDc4LCA2ODQ4MywgNjg0ODgsIDY4NDkzLCA2ODQ5OCwgNjg1MDMsIAotICAgIDY4NTA4LCA2ODUxMywgNjg1MTgsIDY4NTIzLCA2ODUyOSwgNjg1MzQsIDY4NTM5LCA2ODU0NSwgNjg1NTAsIDY4NTU1LCAKLSAgICA2ODU2MSwgNjg1NjcsIDY4NTczLCA2ODU3OSwgNjg1ODUsIDY4NTkxLCA2ODU5NywgNjg2MDMsIDY4NjA5LCA2ODYxNCwgCi0gICAgNjg2MTksIDY4NjI1LCA2ODYzMCwgNjg2MzUsIDY4NjQxLCA2ODY0NiwgNjg2NTEsIDY4NjU2LCA2ODY2MSwgNjg2NjYsIAotICAgIDY4NjcxLCA2ODY3NiwgNjg2ODEsIDY4Njg2LCA2ODY5MSwgNjg2OTYsIDY4NzAxLCA2ODcwNywgNjg3MTIsIDY4NzE3LCAKLSAgICA2ODcyMiwgNjg3MjgsIDY4NzMzLCA2ODczOCwgNjg3NDMsIDY4NzQ4LCA2ODc1NCwgNjg3NTksIDY4NzY0LCA2ODc2OSwgCi0gICAgNjg3NzQsIDY4Nzc5LCA2ODc4NCwgNjg3ODksIDY4Nzk0LCA2ODc5OSwgNjg4MDQsIDY4ODA5LCA2ODgxNCwgNjg4MTksIAotICAgIDY4ODI0LCA2ODgyOSwgNjg4MzQsIDY4ODM5LCA2ODg0NCwgNjg4NDksIDY4ODU1LCA2ODg2MCwgNjg4NjUsIDY4ODcwLCAKLSAgICA2ODg3NSwgNjg4ODAsIDY4ODg1LCA2ODg5MCwgMTgyNywgMTQzLCA2ODg5NSwgNjg4OTksIDY4OTAzLCA2ODkwOCwgNjg5MTYsIAotICAgIDY4OTIwLCA2ODkyNywgNjg5MzUsIDY4OTM5LCA2ODk1MiwgNjg5NjAsIDY4OTY0LCA2ODk2NywgNjg5NzIsIDY4OTc2LCAKLSAgICA2ODk4MSwgNjg5ODUsIDY4OTkzLCA2ODk5NywgMTkxMDgsIDY5MDAyLCA1ODI3MCwgNjkwMDYsIDY5MDA5LCA2OTAxNywgCi0gICAgNjkwMjUsIDY5MDMzLCA2OTAzOCwgNjkwNDUsIDY5MDUxLCA2OTA1NywgNjkwNjIsIDY5MDY3LCA2OTA3NSwgNjIxNzUsIAotICAgIDY5MDgyLCA2OTA4NywgNjkwOTIsIDY5MDk2LCA5OTgxLCA2OTEwMCwgNjkxMDUsIDY5MTEwLCA2OTExNCwgNjkxMTcsIAotICAgIDY5MTIzLCA2OTEyNywgNjkxMzcsIDY5MTQ2LCA2OTE0OSwgNjkxNTYsIDY5MTY5LCA2OTE3NSwgNjkxODMsIDY5MTk0LCAKLSAgICA2OTIwNSwgNjkyMTYsIDY5MjI3LCA2OTIzNiwgNjkyNDIsIDY5MjUxLCA2OTI1OSwgNjkyNjksIDY5MjgyLCA2OTI4OSwgCi0gICAgNjkzMDAsIDY5MzA2LCA2OTMxMSwgNjkzMTYsIDY5MzIyLCA2OTMyOCwgNjkzMzgsIDY5MzQ3LCA2NzY5MiwgNjkzNTUsIAotICAgIDY5MzYxLCA2OTM2OSwgNjkzNzUsIDY5MzgzLCA2OTM4NywgNjkzOTEsIDY5Mzk0LCA2OTQwMCwgNjk0MDYsIDY5NDE0LCAKLSAgICA2OTQyNiwgNjk0MzgsIDY5NDQ1LCA2OTQ0OSwgNjk0NjAsIDY5NDY4LCA2OTQ3NSwgNjk0ODcsIDY5NDk1LCA2OTUwMywgCi0gICAgNjk1MTAsIDY5NTE2LCA2OTUyNiwgNjk1MzUsIDY5NTQwLCA2OTU1MCwgNjk1NTksIDM4MTg0LCA2OTU2NiwgNjk1NzAsIAotICAgIDY5NTc1LCA2OTU4MywgNjk1OTAsIDY5NTk2LCA2OTYwMCwgNjk2MTAsIDY5NjIxLCA2OTYyOSwgNjk2MzYsIDY5NjQ4LCAKLSAgICA2OTY2MCwgNjk2NjksIDY2NzM5LCA2OTY3NiwgNjk2ODcsIDY5NzAxLCA2OTcwOSwgNjk3MTksIDY5NzI2LCA2OTczNCwgCi0gICAgNjk3NDYsIDY5NzU1LCA2OTc2MywgNjk3NzMsIDY5NzgyLCA2OTc5MywgNjk4MDUsIDY5ODE0LCA2OTgyNCwgNjk4MzEsIAotICAgIDY5ODQwLCA2OTg1NSwgNjk4NjUsIDY5ODc0LCA2OTg4MiwgNjk4OTUsIDY5OTEwLCA2OTkxNCwgNjk5MjMsIDY5OTM1LCAKLSAgICA2OTk0NiwgNjk5NTcsIDY5OTY4LCA2OTk3OCwgNjk5ODksIDY5OTk3LCA3MDAwMywgNzAwMTMsIDcwMDE5LCAyNjkyMywgCi0gICAgNzAwMjQsIDcwMDMwLCA3MDAzNSwgNzAwNDIsIDgwNzUsIDE1Njg0LCA3MDA0OCwgNzAwNTcsIDcwMDYyLCA3MDA2NiwgCi0gICAgNzAwNzMsIDcwMDc5LCA3MDA4NCwgNzAwOTIsIDcwMTAwLCA3MDEwNCwgNzAxMDcsIDcwMTEwLCA3MDExMiwgNzAxMTksIAotICAgIDcwMTI1LCA3MDEzNiwgNzAxNDEsIDcwMTQ1LCA3MDE1MiwgNzAxNTgsIDcwMTYzLCA3MDE3MSwgNjI2NDIsIDYyNjUyLCAKLSAgICA3MDE3NywgNzAxODQsIDcwMTk0LCA4OTcxLCA3MDIwMSwgNzAyMDYsIDI3MTEzLCA3MDIxNSwgNzAyMjAsIDcwMjI3LCAKLSAgICA3MDIzNywgNzAyNDUsIDcwMjUzLCA3MDI2MiwgNzAyNjgsIDcwMjc0LCA3MDI4MSwgNzAyODgsIDcwMjkzLCA3MDI5NywgCi0gICAgNzAzMDUsIDcwMzEwLCA3MDMxNSwgNzAzMjMsIDcwMzMwLCA3MDMzNSwgNzAzNDEsIDcwMzQ0LCA3MDM0OCwgNzAzNTcsIAotICAgIDY4OTQ3LCA3MDM2NiwgNzAzNzAsIDcwMzc2LCA3MDM4NywgNzAzOTcsIDE1NjkzLCA3MDQwOCwgNzA0MTYsIDE1NzA1LCAKLSAgICA3MDQyMywgNzA0MjcsIDcwNDM2LCAyNTI5NCwgNzA0NDMsIDcwNDQ3LCA3MDQ1MiwgNzA0NjksIDcwNDgxLCA4OTI1LCAKLSAgICA3MDQ5MywgNzA0OTgsIDcwNTAzLCA3MDUwOCwgNzA1MTIsIDcwNTE1LCA3MDUyMCwgNzA1MjUsIDcwNTMxLCA3MDUzNiwgCi0gICAgNDMyNCwgMTkxODEsIDcwNTQxLCA3MDU0NiwgNzA1NTIsIDcwNTU5LCA3MDU2NCwgNzA1NjksIDcwNTc1LCA3MDU4MSwgCi0gICAgNzA1ODcsIDcwNTkyLCA3MDU5OCwgNzA2MDIsIDcwNjE2LCA3MDYyNCwgNzA2MzIsIDcwNjM4LCA3MDY0MywgNzA2NTAsIAotICAgIDcwNjYwLCA3MDY2OSwgNzA2NzQsIDcwNjc5LCA3MDY4NywgNzA2OTIsIDcwNjk4LCA3MDcwMywgNzA3MTIsIDU3MTU0LCAKLSAgICA3MDcxNywgNzA3MjAsIDcwNzM4LCA3MDc1NywgNzA3NzAsIDcwNzg0LCA3MDgwMCwgNzA4MDcsIDcwODE0LCA3MDgyMCwgCi0gICAgNzA4MjcsIDcwODMyLCA3MDgzOCwgNzA4NDQsIDcwODUyLCA3MDg1OCwgNzA4NjMsIDcwODY4LCA3MDg4NCwgODkzOCwgCi0gICAgNzA4OTgsIDcwOTA1LCA3MDkxMywgNzA5MTksIDcwOTIzLCA3MDkyNiwgNzA5MzEsIDcwOTM2LCA3MDk0MywgNzA5NDgsIAotICAgIDcwOTU3LCA3MDk2MiwgNzA5NjgsIDcwOTc3LCA3MDk4NiwgNzA5OTEsIDcwOTk1LCA3MTAwMywgMTAwMDUsIDcxMDEyLCAKLSAgICA3MTAyMCwgNzEwMjUsIDcxMDMxLCAxMDAxNiwgNzEwMzYsIDcxMDM5LCA3MTA0NCwgNzEwNTQsIDcxMDYzLCA3MTA2OCwgCi0gICAgNzEwNzQsIDcxMDc5LCA3MTA4NywgNzEwOTQsIDcxMTA1LCA3MTExNSwgNzExMjAsIDYyMTAzLCA3MTEyNSwgNzExMzEsIAotICAgIDcxMTM2LCA3MTE0MywgNzExNTIsIDcxMTYwLCA3MTE2NiwgNzExNzMsIDcxMTc5LCA3MTE4MywgMTUxNjEsIDI5OTMsIAotICAgIDcxMTg4LCA3MTE5MiwgNzExOTgsIDcxMjA3LCA3MTIxMywgNzEyMjAsIDcxMjI0LCA3MTI0NSwgNzEyNjcsIDcxMjgzLCAKLSAgICA3MTMwMCwgNzEzMTksIDcxMzI4LCA3MTMzOCwgNzEzNDUsIDcxMzUyLCAyNTE4MSwgNzEzNTgsIDcxMzYyLCA3MTM3MCwgCi0gICAgNzEzODIsIDcxMzg4LCA3MTM5NiwgNzE0MDAsIDcxNDA4LCA3MTQxNSwgNzE0MTksIDcxNDI1LCA3MTQzMSwgNzE0MzYsIAotICAgIDM0OTgsIDM5MzA1LCA3MTQ0MiwgNzE0NDYsIDcxNDUwLCA3MTQ1NCwgNzE0NTksIDcxNDY0LCA3MTQ2OSwgNzE0NzUsIAotICAgIDcxNDgxLCA3MTQ4NywgNzE0OTQsIDcxNTAwLCA3MTUwNywgNzE1MTMsIDcxNTE5LCA3MTUyNCwgNzE1MzAsIDcxNTM1LCAKLSAgICA3MTU0MCwgNzE1NDQsIDcxNTQ5LCAzOTMyMCwgNzE1NTMsIDcxNTU4LCA3MTU2NiwgNzE1NzAsIDcxNTc1LCA3MTU4MiwgCi0gICAgNzE1OTEsIDcxNTk3LCA3MTYwNCwgNzE2MDgsIDcxNjExLCA3MTYxOCwgNzE2MjcsIDcxNjMyLCA3MTYzNiwgNzE2NDQsIAotICAgIDcxNjUzLCA3MTY1NywgNzE2NjUsIDcxNjcxLCA3MTY3NiwgNzE2ODEsIDcxNjg3LCA3MTY5MywgNzE2OTgsIDcxNzAyLCAKLSAgICA3MTcwOCwgNzE3MTMsIDcxNzE3LCA3MTcyMSwgNzE3MjQsIDcxNzI5LCA3MTczNywgNzE3NDcsIDcxNzUyLCAzNjg2NSwgCi0gICAgNzE3NjAsIDcxNzcyLCA3MTc3NiwgNzE3ODIsIDcxNzk0LCA3MTgwNSwgNzE4MTIsIDcxODE4LCA3MTgyNSwgNzE4MzcsIAotICAgIDcxODQ0LCA3MTg1MCwgMTkyNTUsIDcxODU0LCA3MTg2MCwgNzE4NjcsIDcxODczLCA3MTg3OSwgNzE4ODQsIDcxODg5LCAKLSAgICA3MTg5NCwgNzE5MDMsIDU0OTEsIDcxOTA4LCAxNDYyNywgNzE5MTQsIDcxOTE4LCA3MTkyNiwgNzE5MzUsIDcxOTM5LCAKLSAgICA3MTk0NiwgNzE5NTUsIDcxOTY4LCA3MTk3NCwgNzE1NDUsIDI3OTYyLCA3MTk3OSwgNzE5ODEsIDcxOTg2LCA3MTk5MSwgCi0gICAgNzE5OTYsIDcyMDAxLCA3MjAwNiwgNzIwMTEsIDcyMDE2LCA3MjAyMSwgNzIwMjYsIDcyMDMxLCA3MjAzNiwgNzIwNDEsIAotICAgIDcyMDQ2LCA3MjA1MSwgNzIwNTcsIDcyMDYyLCA3MjA2NywgNzIwNzIsIDcyMDc3LCA3MjA4MiwgNzIwODcsIDcyMDkyLCAKLSAgICA3MjA5NywgNzIxMDMsIDcyMTA5LCA3MjExNSwgNzIxMjAsIDcyMTI1LCA3MjEzNywgNzIxNDIsIDE4MzMsIDY3LCA3MjE0NywgCi0gICAgNzIxNTIsIDMwNDg1LCAzMDQ5MCwgMzA0OTUsIDMwNTAxLCAzMDUwNiwgNzIxNTYsIDMwNTExLCAyMDIyNiwgNzIxNzgsIAotICAgIDcyMTgyLCA3MjE4NiwgNzIxOTEsIDcyMTk1LCAzMDUxNSwgNzIxOTksIDcyMjA3LCAzMDUyMCwgNzIyMTQsIDcyMjE3LCAKLSAgICA3MjIyMiwgNzIyMjYsIDc5MTAsIDcyMjM1LCAzMDUyNSwgMjAwOTIsIDcyMjM4LCA3MjI0MiwgMTM5NiwgNzIyNDcsIAotICAgIDMwNTM2LCA3MjI1MCwgNzIyNTUsIDIzNzIwLCAyMzczMCwgMzI5NDAsIDcyMjYwLCA3MjI2NSwgNzIyNzAsIDcyMjc1LCAKLSAgICA3MjI4MSwgNzIyODYsIDcyMjk1LCA3MjMwMCwgNzIzMDcsIDcyMzEzLCA3MjMxOCwgNzIzMjMsIDcyMzI4LCA3MjMzOCwgCi0gICAgNzIzNDcsIDcyMzUyLCA3MjM2MCwgNzIzNjQsIDcyMzcyLCAzMDM1MCwgMTE4OCwgNzIzNzksIDcyMzg1LCA3MjM5MCwgCi0gICAgNzIzOTUsIDcyNDAwLCA3MjQwNiwgNzI0MTEsIDcyNDE4LCA3MjQyNCwgNzI0MjksIDcyNDM3LCA3MjQ0NywgNzI0NTcsIAotICAgIDcyNDYzLCA3MjQ2OCwgNzI0NzQsIDE1NzE1LCA3MjQ4MSwgMzM3NDUsIDcyNDk0LCA3MjQ5OSwgNzI1MDUsIDcyNTE4LCAKLSAgICA3MjUyNCwgNzI1MjgsIDcyNTM3LCA3MjU0NCwgNzI1NTAsIDcyNTU4LCA3MjU2NywgNzI1NzQsIDcyNTgwLCA3MjU4MywgCi0gICAgMjM4NjEsIDcyNTg3LCA3MjU5NCwgNzI2MDAsIDcyNjA4LCA3MjYxMywgMjIwMzUsIDcyNjE5LCA3MjYyMiwgNzI2MzAsIAotICAgIDcyNjM4LCA3MjY1MiwgNzI2NTksIDcyNjY1LCA3MjY3MiwgNzI2NzgsIDMwNTUwLCA3MjY4MiwgNzI2ODksIDcyNjk3LCAKLSAgICA3MjcwNSwgMzA1NTUsIDcyNzExLCA3MjcxNywgNzI3MjIsIDcyNzMyLCA3MjczOCwgNzI3NDcsIDI4Njc3LCAzMjQxNSwgCi0gICAgNzI3NTUsIDcyNzYwLCA3Mjc2NSwgNzI3NzAsIDcyNzc0LCAxMzE3MCwgMzY4NzgsIDcyNzc5LCA3Mjc4NCwgMzA1NjAsIAotICAgIDU5NTU0LCA3Mjc4OCwgNzI3OTMsIDcyNzk3LCA3MjgwNiwgNzI4MTQsIDcyODIwLCA3MjgyNSwgNzI4MzEsIDcyODM4LCAKLSAgICA3Mjg0NCwgNzI4NDksIDcyODU0LCA3Mjg2MywgNzI4NzUsIDcyODkwLCAzMDgwMSwgNzI4OTYsIDE0NzQ2LCAzMDU2NCwgCi0gICAgNzI5MDAsIDcyOTA3LCAyMjE0NSwgNzI5MTMsIDcyOTIwLCA3MjkyOSwgNzI5MzYsIDcyOTQ1LCA3Mjk1MSwgNzI5NTYsIAotICAgIDcyOTY0LCA3Mjk3MCwgMzA1NzQsIDcyOTc1LCA3Mjk4NCwgNzE4MDAsIDcyOTkzLCA3MzAwMCwgNzMwMDYsIDczMDEyLCAKLSAgICA3MzAyMiwgNzMwMzAsIDczMDM3LCA3MzA0MSwgMzA1NzksIDczMDQ0LCAzMDU4NSwgMzA1OTEsIDczMDQ5LCA3MzA1NywgCi0gICAgNzMwNjcsIDczMDc2LCA3MzA4NCwgNzMwOTEsIDczMTAxLCAzMDU5NiwgNzMxMDUsIDczMTA3LCA3MzExMSwgNzMxMTYsIAotICAgIDczMTIwLCA3MzEyNCwgNzMxMzAsIDczMTM1LCA3MzEzOSwgNzMxNTAsIDczMTU1LCAyOTk4LCA3MzE1OSwgNzMxNjYsIAotICAgIDczMTcwLCA3MzE3OSwgNzMxODcsIDczMTk0LCA3MzE5OSwgNzMyMDQsIDU5NjAwLCA3MzIwOCwgNzMyMTEsIDczMjE3LCAKLSAgICA3MzIyNSwgNzMyMzEsIDczMjM1LCA3MzI0MCwgNzMyNDcsIDczMjUyLCA3MzI1OCwgMzI0NDYsIDczMjYzLCA3MzI2NiwgCi0gICAgNzMyNzEsIDczMjc1LCA3MzI4MCwgNzMyODUsIDczMjg5LCA3MzI5NywgMjM3MzksIDIzNzQ4LCA3MzMwMywgNzMzMDksIAotICAgIDczMzE1LCA3MzMyMCwgNzMzMjQsIDczMzI3LCA3MzMzNywgNzMzNDYsIDczMzUxLCA3MzM1NywgNzMzNjQsIDczMzcwLCAKLSAgICA3MzM3NCwgNzMzODIsIDczMzg3LCAzMjQ1MiwgNzMzOTEsIDczMzk5LCA3MzQwNSwgNzM0MTIsIDczNDE3LCA3MzQyMSwgCi0gICAgNzM0MjYsIDU1NzkxLCAzMjQ1OCwgNzM0MzIsIDczNDM3LCA3MzQ0MSwgNzM0NDYsIDczNDUxLCA3MzQ1NiwgNzM0NjAsIAotICAgIDczNDY1LCA3MzQ3MCwgNzM0NzYsIDczNDgxLCA3MzQ4NiwgNzM0OTIsIDczNDk4LCA3MzUwMywgNzM1MDcsIDczNTEyLCAKLSAgICA3MzUxNywgNzM1MjIsIDczNTI2LCAyMjE0NCwgNzM1MzEsIDczNTM2LCA3MzU0MiwgNzM1NDgsIDczNTU0LCA3MzU1OSwgCi0gICAgNzM1NjMsIDczNTY4LCA3MzU3MywgNzM1NzgsIDczNTgyLCA3MzU4NywgNzM1OTIsIDczNTk3LCA3MzYwMiwgNzM2MDYsIAotICAgIDMwNjAwLCA3MzYxNCwgNzM2MTgsIDczNjI2LCA3MzYzNCwgNzM2NDUsIDczNjUwLCA3MzY1NCwgMjA0OTcsIDczNjU5LCAKLSAgICA3MzY2NSwgNzM2NzUsIDczNjgyLCA3MzY4NywgNzM2OTYsIDczNzAxLCA3MzcwNSwgNzM3MTAsIDczNzE4LCA3MzcyNiwgCi0gICAgNzM3MzMsIDYyMzIxLCA3MzczOSwgNzM3NDcsIDczNzU0LCA3Mzc2NSwgNzM3NzEsIDczNzc3LCAzMDYxMCwgNzM3ODAsIAotICAgIDczNzg3LCA3Mzc5NSwgNzM4MDAsIDM3MDY5LCA3MzgwNCwgNzM4MDksIDczODE2LCA3MzgyMSwgNzM4OSwgNzM4MjUsIAotICAgIDczODMzLCA3Mzg0MCwgNzM4NDcsIDczODUzLCA3Mzg2NywgNjA2MjksIDczODc1LCA3Mzg4MSwgNzM4ODUsIDczODg4LCAKLSAgICA3Mzg5NiwgNzM5MDMsIDczOTA4LCA3MzkyMSwgNzM5MjgsIDczOTM1LCA3Mzk0MCwgNTgxNzQsIDczOTQ1LCA3Mzk0OCwgCi0gICAgNzM5NTUsIDczOTYxLCA3Mzk2NSwgNzM5NzMsIDczOTgzLCA3Mzk5MywgNzQwMDIsIDc0MDEwLCA3NDAyMSwgNzQwMjYsIAotICAgIDc0MDMwLCA3NDAzNSwgNzQwMzksIDMzMDcxLCAxOTUwOSwgMzMwODAsIDc0MDQ3LCA3NDA1MiwgNzQwNTcsIDc0MDYyLCAKLSAgICA3NDA2NywgNzQwNzIsIDc0MDc3LCA3NDA4MSwgNzQwODYsIDc0MDkxLCA3NDA5NiwgNzQxMDEsIDc0MTA2LCA3NDExMSwgCi0gICAgNzQxMTUsIDc0MTIwLCA3NDEyNSwgNzQxMjksIDc0MTMzLCA3NDEzNywgNzQxNDEsIDc0MTQ2LCA3NDE1MSwgNzQxNTUsIAotICAgIDc0MTYwLCA3NDE2NCwgNzQxNjgsIDc0MTczLCA3NDE3OCwgNzQxODMsIDc0MTg4LCA3NDE5MiwgNzQxOTcsIDc0MjAyLCAKLSAgICA3NDIwNiwgNzQyMTEsIDc0MjE2LCA3NDIyMSwgNzQyMjYsIDc0MjMxLCA3NDIzNiwgNzQyNDEsIDc0MjQ2LCA3NDI1MSwgCi0gICAgNzQyNTYsIDc0MjYxLCA3NDI2NiwgNzQyNzEsIDc0Mjc2LCA3NDI4MSwgNzQyODYsIDc0MjkxLCA3NDI5NiwgNzQzMDEsIAotICAgIDc0MzA2LCA3NDMxMCwgNzQzMTUsIDc0MzIwLCA3NDMyNSwgNzQzMzAsIDc0MzM1LCA3NDM0MCwgNzQzNDUsIDc0MzUwLCAKLSAgICA3NDM1NSwgNzQzNjAsIDc0MzY1LCA3NDM2OSwgNzQzNzQsIDc0Mzc4LCA3NDM4MywgNzQzODgsIDc0MzkzLCA3NDM5OCwgCi0gICAgNzQ0MDMsIDc0NDA4LCA3NDQxMywgNzQ0MTgsIDc0NDIzLCA3NDQyNywgNzQ0MzEsIDc0NDM2LCA3NDQ0MSwgNzQ0NDUsIAotICAgIDc0NDUwLCA3NDQ1NSwgNzQ0NTksIDc0NDY0LCA3NDQ2OSwgNzQ0NzQsIDc0NDc5LCA3NDQ4MywgNzQ0ODgsIDc0NDkzLCAKLSAgICA3NDQ5NywgNzQ1MDIsIDc0NTA2LCA3NDUxMCwgNzQ1MTQsIDc0NTE4LCA3NDUyMywgNzQ1MjcsIDc0NTMxLCA3NDUzNSwgCi0gICAgNzQ1MzksIDc0NTQzLCA3NDU0NywgNzQ1NTEsIDc0NTU1LCA3NDU1OSwgNzQ1NjQsIDc0NTY5LCA3NDU3NCwgNzQ1NzksIAotICAgIDc0NTg0LCA3NDU4OSwgNzQ1OTQsIDc0NTk5LCA3NDYwNCwgNzQ2MDksIDc0NjEzLCA3NDYxNywgNzQ2MjEsIDc0NjI1LCAKLSAgICA3NDYyOSwgNzQ2MzMsIDc0NjM4LCA3NDY0MiwgNzQ2NDcsIDc0NjUxLCA3NDY1NiwgNzQ2NjEsIDc0NjY1LCA3NDY2OSwgCi0gICAgNzQ2NzQsIDc0Njc4LCA3NDY4MiwgNzQ2ODYsIDc0NjkwLCA3NDY5NCwgNzQ2OTgsIDc0NzAyLCA3NDcwNiwgNzQ3MTAsIAotICAgIDc0NzE0LCA3NDcxOCwgNzQ3MjIsIDc0NzI2LCA3NDczMCwgNzQ3MzUsIDc0NzQwLCA3NDc0NCwgNzQ3NDgsIDc0NzUyLCAKLSAgICA3NDc1NiwgNzQ3NjAsIDc0NzY0LCA3NDc2OSwgNzQ3NzMsIDc0Nzc3LCA3NDc4MSwgNzQ3ODUsIDc0Nzg5LCA3NDc5MywgCi0gICAgNzQ3OTgsIDc0ODAyLCA3NDgwNywgNzQ4MTEsIDc0ODE1LCA3NDgxOSwgNzQ4MjMsIDc0ODI3LCA3NDgzMSwgNzQ4MzUsIAotICAgIDc0ODM5LCA3NDg0MywgNzQ4NDcsIDc0ODUxLCA3NDg1NiwgNzQ4NjAsIDc0ODY0LCA3NDg2OCwgNzQ4NzIsIDc0ODc2LCAKLSAgICA3NDg4MCwgNzQ4ODQsIDc0ODg4LCA3NDg5MiwgNzQ4OTYsIDc0OTAwLCA3NDkwNSwgNzQ5MDksIDc0OTEzLCA3NDkxOCwgCi0gICAgNzQ5MjMsIDc0OTI3LCA3NDkzMSwgNzQ5MzUsIDc0OTM5LCA3NDk0MywgNzQ5NDcsIDc0OTUxLCA3NDk1NSwgNzQ5NjAsIAotICAgIDc0OTY0LCA3NDk2OSwgNzQ5NzMsIDc0OTc4LCA3NDk4MiwgNzQ5ODcsIDc0OTkxLCA3NDk5NywgNzUwMDIsIDc1MDA2LCAKLSAgICA3NTAxMSwgNzUwMTUsIDc1MDIwLCA3NTAyNCwgNzUwMjksIDc1MDMzLCA3NTAzOCwgMTQ4NCwgNzUwNDIsIDI3NzgsIDE3MjIsIAotICAgIDE3MjcsIDc1MDQ2LCA3NTA1MCwgMjc4MiwgNzUwNTQsIDEzNjUsIDc1MDU5LCAxMzMxLCA3NTA2MywgMjc5NCwgNzUwNjcsIAotICAgIDc1MDc0LCA3NTA4MSwgNzUwOTUsIDI3OTgsIDU1ODksIDc1MTA0LCA3NTExMiwgNzUxMTksIDc1MTMwLCA3NTEzOSwgCi0gICAgNzUxNDYsIDc1MTU4LCA3NTE3MSwgNzUxODQsIDc1MTk1LCA3NTIwMCwgNzUyMDcsIDc1MjE5LCA3NTIyMywgMzkxOCwgCi0gICAgMTAwODIsIDc1MjMzLCA3NTIzOCwgNzUyNDcsIDc1MjU3LCAyODAyLCA3NTI2MiwgNzUyNjYsIDc1MjcxLCA3NTI3OCwgCi0gICAgNzUyODQsIDc1MjkyLCA3NTMwNCwgMTMzNiwgMTEzNTEsIDc1MzE0LCA3NTMxOCwgNzUzMjQsIDc1MzM4LCA3NTM1MCwgCi0gICAgNzUzNjIsIDc1MzcyLCA3NTM4MSwgNzUzOTAsIDc1Mzk5LCA3NTQwNywgNzU0MTgsIDc1NDI2LCAzOTY4LCA3NTQzNiwgCi0gICAgNzU0NDUsIDc1NDUxLCA3NTQ2NiwgNzU0NzMsIDc1NDc5LCAzMzE5NywgNzU0ODQsIDI4MjYsIDExMzU1LCA3NTQ4OCwgCi0gICAgNzU0OTUsIDczMzQsIDc1NTA0LCAyODMxLCAzMDEwNSwgNzU1MTAsIDU3OTIzLCA3NTUxNywgNzU1MjMsIDc1NTM0LCAKLSAgICA3NTU0MCwgNzU1NDcsIDc1NTUzLCA3NTU2MSwgNzU1NjgsIDc1NTc0LCA3NTU4NCwgNzU1OTMsIDc1NjA0LCA3NTYxMSwgCi0gICAgNzU2MTcsIDc1NjI3LCA3NTYzNSwgNzU2NDEsIDc1NjU2LCA3NTY2MiwgNzU2NjcsIDc1Njc0LCA3NTY3NywgNzU2ODMsIAotICAgIDc1NjkwLCA3NTY5NiwgNzU3MDQsIDc1NzEzLCA3NTcyMSwgNzU3MjcsIDc1NzM2LCAzODg0NSwgNzU3NTAsIDc1NzU1LCAKLSAgICAxMzAwNywgNzU3NjEsIDc1Nzc0LCA3NTc4MywgNzU3OTEsIDc1Nzk4LCA3NTgwMiwgNzU4MDYsIDc1ODA5LCA3NTgxNiwgCi0gICAgNzU4MjMsIDc1ODMxLCA3NTgzOSwgNzU4NDgsIDc1ODU2LCAxMjk0MywgNzU4NjQsIDc1ODY5LCA3NTg3MywgNzU4ODUsIAotICAgIDc1ODkyLCA3NTkwMSwgNzgwLCA3NTkxMSwgNzU5MjAsIDc1OTMxLCAyODQ3LCA3NTkzNSwgNzU5MzksIDc1OTQ1LCA3NTk1OCwgCi0gICAgNzU5NzAsIDc1OTgwLCA3NTk4OSwgMjQzMzEsIDc2MDAxLCA3NjAwOSwgNzYwMTgsIDc2MDI5LCA3NjA0MCwgNzYwNTAsIAotICAgIDc2MDYwLCA3NjA2OSwgNzYwNzcsIDk2NTcsIDc2MDg0LCA3NjA4OCwgNzYwOTMsIDc2MDk4LCA3NjEwNCwgMTM0MSwgCi0gICAgMTAxNTMsIDc2MTExLCA3NjEyMiwgNzYxMzEsIDc2MTM5LCA3NjE0OCwgNzYxNTYsIDc2MTcyLCA3NjE4MywgNzYxOTIsIAotICAgIDc2MjAwLCA3NjIxMiwgNzYyMjMsIDc2MjM5LCA3NjI0OSwgNzYyNzAsIDc2MjgzLCA3NjI5MSwgNzYyOTgsIDEzMTE4LCAKLSAgICA3NjMxMSwgNzYzMTYsIDc2MzIyLCA0Mzg2LCA3NjMyOCwgNzYzMzEsIDc2MzM4LCA3NjM0OCwgNjYwNywgNzYzNTUsIAotICAgIDc2MzYwLCA3NjM2NSwgNzYzNzMsIDc2MzgxLCA4MTIzLCA4MTMyLCA3NjM4NiwgNzYzOTcsIDc2NDAyLCA3NjQwOCwgMjg1NSwgCi0gICAgMjg2MCwgNzY0MTQsIDkyMjQsIDc2NDIwLCA3NjQyNywgNzY0MzQsIDc2NDQ3LCAyMjA1LCA1MCwgNzY0NTIsIDc2NDU3LCAKLSAgICA3NjQ2NywgNzY0NzMsIDc2NDgyLCA3NjQ5MCwgNzY1MDAsIDc2NTA0LCA3NjUwOSwgNzY1MTMsIDc2NTI1LCAyODgzLCAKLSAgICA3NjUzMywgNzY1NDEsIDc2NTQ2LCA3NjU1NywgNzY1NjgsIDc2NTc3LCA3NjU4MiwgNzY1ODgsIDc2NTkzLCA3NjYwMywgCi0gICAgNzY2MTMsIDc2NjE4LCA3NjYyNCwgNzY2MjksIDc2NjM4LCAxOTU2MiwgNzY2NDIsIDQwNDUsIDEyLCA3NjY0NywgNzY2NTYsIAotICAgIDc2NjYzLCA3NjY3MCwgNzY2NzYsIDc2NjgyLCA4MjcsIDc2Njg3LCA3NjY5MiwgNTgyNDAsIDc2Njk3LCA3NjcwMiwgCi0gICAgNzY3MDgsIDc2NzE2LCA3NjcyMSwgNzY3MjgsIDc2NzM0LCA3NjczOSwgMzU1NzMsIDM4NzQzLCA3Njc0NSwgMjg4NywgMzIsIAotICAgIDc2NzU1LCA3Njc2OCwgNzY3NzMsIDc2NzgxLCA3Njc4NiwgNzY3OTIsIDI5MDksIDI2MjM0LCA3Njc5NywgNzY4MDUsIAotICAgIDc2ODEyLCA3NjgxNywgNTYwMzMsIDU5MjIxLCA3NjgyNiwgMTY2NywgMTc3NiwgNzY4MzEsIDc2ODM2LCA3Njg0MywgMTc4MCwgCi0gICAgMjQyLCA3Njg1MCwgNzY4NTYsIDc2ODYxLCA3Njg2OCwgMTc4NCwgNzY4NzMsIDc2ODc5LCA3Njg4NCwgNzY4OTYsIDQ1OTcsIAotICAgIDc2OTA2LCAxNzkxLCA3NjkxMiwgNzY5MTcsIDc2OTI0LCA3NjkzMSwgNzY5NDYsIDc2OTUzLCA3Njk2NCwgNzY5NzIsIAotICAgIDI1NzIsIDc2OTc2LCA3Njk4OCwgNzY5OTMsIDc2OTk3LCA3NzAwMywgMjYwNTksIDIyMTAsIDc3MDA3LCA3NzAxOCwgCi0gICAgNzcwMjIsIDc3MDI2LCA3NzAzMiwgNzcwMzYsIDc3MDQ1LCA3NzA0OSwgNzcwNjAsIDc3MDY0LCAyMjU2LCAyOTk0NCwgCi0gICAgNzcwNjgsIDc3MDc4LCAzMDE4LCA3NzM4LCA3NzA4NiwgNzcwOTEsIDc3MDk1LCA3NzEwNCwgNzcxMTEsIDc3MTE3LCAyOTg4LCAKLSAgICAxNTM0MywgNzcxMjEsIDc3MTM0LCA3NzE1MiwgNzcxNTcsIDc3MTY1LCA3NzE3MywgNzcxODMsIDExNDU3LCA3NzE5NSwgCi0gICAgNzcyMDgsIDc3MjE1LCA3NzIyMiwgNzcyMzgsIDc3MjQ1LCA3NzI1MSwgMTAyNCwgNzcyNTgsIDc3MjY1LCA3NzI3NSwgCi0gICAgNzcyODQsIDc3Mjk2LCAzOTcwOSwgNzczMDQsIDMwMDIsIDEwMzUwLCA3NzMwNywgNzczMTUsIDc3MzE5LCAzMDA2LCAKLSAgICA3NzMyMywgMTkzNTgsIDEwMzY2LCAzNjg0LCA3NzMyNywgMzAxMiwgNzczMzEsIDc3MzQxLCA3NzM0NywgNzczNTMsIAotICAgIDc3MzU5LCA3NzM2NSwgNzczNzEsIDc3Mzc3LCA3NzM4MywgNzczODksIDc3Mzk1LCA3NzQwMSwgNzc0MDcsIDc3NDEzLCAKLSAgICA3NzQxOSwgNzc0MjUsIDc3NDMxLCA3NzQzNywgNzc0NDMsIDc3NDQ5LCA3NzQ1NSwgNzc0NjEsIDc3NDY3LCA3NzQ3MywgCi0gICAgNzc0NzksIDc3NDg1LCA3NzQ5MSwgNzc0OTgsIDc3NTA1LCA3NzUxMSwgNzc1MTcsIDc3NTIzLCA3NzUyOSwgNzc1MzUsIAotICAgIDc3NTQxLCAxMzQ2LCAxNDI3MCwgMTAzODgsIDc3NTQ3LCA3NzU1MiwgNzc1NTcsIDc3NTYyLCA3NzU2NywgNzc1NzIsIAotICAgIDc3NTc3LCA3NzU4MiwgNzc1ODcsIDc3NTkyLCA3NzU5NywgNzc2MDIsIDc3NjA3LCA3NzYxMiwgNzc2MTcsIDc3NjIyLCAKLSAgICA3NzYyNywgNzc2MzIsIDc3NjM3LCA3NzY0MiwgNzc2NDcsIDc3NjUyLCA3NzY1NywgNzc2NjIsIDc3NjY3LCA3NzY3MiwgCi0gICAgNzc2NzgsIDc3NjgzLCA3NzY4OCwgNzc2OTQsIDc3Njk5LCA3NzcwNSwgNzc3MTAsIDc3NzE1LCA3NzcyMSwgNzc3MjYsIAotICAgIDc3NzMxLCA3NzczNiwgNzc3NDEsIDc3NzQ2LCA3Nzc1MSwgNzc3NTYsIDc3NzYxLCA3NzM0MiwgNzczNDgsIDc3MzU0LCAKLSAgICA3NzM2MCwgNzczNjYsIDc3MzcyLCA3NzM3OCwgNzczODQsIDc3MzkwLCA3NzM5NiwgNzc0MDIsIDc3NDA4LCA3NzQxNCwgCi0gICAgNzc0MjAsIDc3NDI2LCA3Nzc2NywgNzc0MzIsIDc3NDM4LCA3NzQ0NCwgNzc3NzMsIDc3NDUwLCA3NzQ1NiwgNzc0NjIsIAotICAgIDc3NDY4LCA3NzQ3NCwgNzc0ODAsIDc3NDg2LCA3NzUwNiwgNzc3NzksIDc3Nzg1LCA3NzUxMiwgNzc3OTEsIDc3NTE4LCAKLSAgICA3NzUyNCwgNzc1MzAsIDc3NTM2LCA3NzU0MiwgMzAzMywgMzAzOCwgNzc3OTcsIDc3ODAyLCA3NzgwNSwgNzc4MTEsIAotICAgIDc3ODE3LCA3NzgyNCwgNzc4MjksIDc3ODM0LCAyMjYxLCAKKyAgICAwLCAwLCA2LCAxMCwgMTgsIDIzLCAyNywgMzQsIDM5LCA0MSwgNDQsIDUwLCA2MiwgNzAsIDgwLCA5MywgMTAyLCAxMDgsIAorICAgIDExMywgMTIxLCAxMzAsIDEzNSwgMTQwLCAxNDMsIDE0NywgMTUzLCAxNTgsIDE2MywgMTcxLCAxNzgsIDE4NiwgMTkxLCAKKyAgICAxOTQsIDIwMCwgMjA4LCAyMTUsIDIyNSwgMjMwLCAyMzcsIDI0NiwgMjQ5LCAyNTQsIDI1NywgMjYzLCAyNjcsIDI3MiwgCisgICAgMjgxLCAyODgsIDI5NSwgMzAxLCAzMTAsIDMxNSwgMzIxLCAzMjcsIDMzNSwgMTQ0LCAzNDEsIDM0OSwgMzUwLCAzNTgsIAorICAgIDM2MSwgMzY3LCAzNjksIDM3NSwgMzgyLCAzODQsIDM5MSwgMzk1LCA0MDMsIDQxMCwgNDE1LCA0MTcsIDQyMiwgNDI5LCAKKyAgICA0MzEsIDI5OSwgNDM3LCA0MzksIDQ0NCwgNDQ5LCA0NTIsIDQ1NywgNDYzLCA0NzAsIDQ3OSwgNDg5LCA0OTQsIDQ5OCwgCisgICAgNTA1LCA1MTgsIDUyMiwgNTMxLCA1MzgsIDU0NSwgNTQ4LCA1NTQsIDU1OCwgNTYyLCA1NzIsIDU4MCwgNTg4LCA1OTYsIAorICAgIDYwNSwgNjEzLCA2MTgsIDYxOSwgNjIzLCA2MzEsIDYzOCwgNjQ4LCA2NTksIDY2MywgNjY2LCA2NzAsIDY3MywgMzQ4LCAKKyAgICA2NzgsIDY4NywgNjkxLCA2OTcsIDcwMywgNzA1LCA3MDgsIDcxMSwgNzE0LCA3MTgsIDcyMiwgNzMxLCA3MzksIDc0NCwgCisgICAgNzQ3LCA3NTEsIDc1NywgNzY0LCA3NzEsIDc3NiwgNzg1LCA3OTQsIDgwMSwgODA1LCA4MTgsIDgyNywgODM1LCA4NDEsIAorICAgIDU1NywgODUwLCA4NjAsIDg2NywgODczLCA4NzksIDg4NiwgODk0LCA4OTgsIDc0OSwgOTA2LCA5MTUsIDUwMywgOTIzLCAKKyAgICA5MjgsIDkzNCwgMTcsIDk0MywgOTQ4LCA5NTEsIDk1NSwgOTU5LCA5NjYsIDk2OSwgOTc2LCA5ODAsIDk4OCwgOTkyLCAKKyAgICAxMDAwLCAxMDA0LCAxMDA3LCAxMDE0LCAxMDIxLCAxOTIsIDEwMjQsIDEwMjksIDEwMzksIDEwNDgsIDEwNTUsIDEwNjEsIAorICAgIDEwNjksIDEwNzIsIDEwNzcsIDEwODMsIDEwOTEsIDEwOTcsIDExMDIsIDExMDUsIDExMDgsIDExMSwgMTExMywgMTExNywgCisgICAgMTEyMywgMTEyOSwgMTEzMiwgMTEzOCwgMTE0MiwgMTE0NywgMTE1MywgMTE1OCwgMTE2OCwgMTE3MiwgMTE3NSwgMTE3OCwgCisgICAgMTE4NywgMTE5MSwgMTE5NCwgMTE5OSwgMTIwNCwgMTIxMCwgMTIxNSwgMTIyMCwgMTIyNSwgMTIyOSwgMTIzNCwgMTI0MCwgCisgICAgMTI0NSwgMTI1MCwgMTI1NCwgMTI2MCwgMTI2NSwgMTI3MCwgMTI3NSwgMTI3OSwgMTI4NCwgMTI4OSwgMTI5NCwgMTMwMCwgCisgICAgMTMwNiwgMTMxMiwgMTMxNywgMTMyMSwgMTMyNiwgMTMzMSwgMTMzNiwgMTM0MCwgMTM0NSwgMTM1MCwgMTM1NSwgMTM2MCwgCisgICAgMTE5NSwgMTIwMCwgMTIwNSwgMTIxMSwgMTIxNiwgMTM2NCwgMTIyNiwgMTM3MCwgMTM3NSwgMTM4MCwgMTM4NywgMTM5MSwgCisgICAgMTQwMCwgMTIzMCwgMTQwNCwgMTIzNSwgMTI0MSwgMTI0NiwgMTQwOCwgMTQxMywgMTQxOCwgMTQyMiwgMTQyNiwgMTQzMiwgCisgICAgMTQzNiwgMTI1MSwgMTQzOSwgMTI2MSwgMTQ0NCwgMTQ0OCwgMTI2NiwgMTQ1NCwgMTI3MSwgMTQ1OCwgMTQ2MiwgMTI3NiwgCisgICAgMTQ2NiwgMTQ3MSwgMTQ3NSwgMTQ3OCwgMTQ4MiwgMTI4MCwgMTI4NSwgMTQ4NywgMTI5MCwgMTQ5MywgMTQ5OSwgMTUwNSwgCisgICAgMTUxMSwgMTI5NSwgMTMwNywgMTMxMywgMTUxNSwgMTUxOSwgMTUyMywgMTUyNiwgMTMxOCwgMTUzMCwgMTUzMiwgMTUzNywgCisgICAgMTU0MiwgMTU0OCwgMTU1MywgMTU1OCwgMTU2MiwgMTU2NywgMTU3MiwgMTU3NywgMTU4MiwgMTU4OCwgMTU5MywgMTU5OCwgCisgICAgMTYwNCwgMTYxMCwgMTYxNSwgMTYxOSwgMTYyNCwgMTYyOSwgMTYzNCwgMTYzOSwgMTY0MywgMTY1MSwgMTY1NSwgMTY2MCwgCisgICAgMTY2NSwgMTY3MCwgMTY3NSwgMTY3OSwgMTY4MiwgMTY4NywgMTY5MiwgMTY5NywgMTcwMiwgMTcwOCwgMTcxMywgMTcxNywgCisgICAgMTMyMiwgMTcyMCwgMTcyNSwgMTczMCwgMTMyNywgMTczNCwgMTczOCwgMTc0NSwgMTMzMiwgMTc1MiwgMTMzNywgMTc1NiwgCisgICAgMTc1OCwgMTc2MywgMTc2OSwgMTM0MSwgMTc3NCwgMTc4MywgMTM0NiwgMTc4OCwgMTc5NCwgMTM1MSwgMTc5OSwgMTgwNCwgCisgICAgMTgwNywgMTgxMiwgMTgxNiwgMTgyMCwgMTgyNCwgMTgyNywgMTgzMSwgMTM1NiwgMTM2MSwgMTE1NiwgMTgzNiwgMTg0MiwgCisgICAgMTg0OCwgMTg1NCwgMTg2MCwgMTg2NiwgMTg3MiwgMTg3OCwgMTg4NCwgMTg4OSwgMTg5NSwgMTkwMSwgMTkwNywgMTkxMywgCisgICAgMTkxOSwgMTkyNSwgMTkzMSwgMTkzNywgMTk0MywgMTk0OCwgMTk1MywgMTk1OCwgMTk2MywgMTk2OCwgMTk3MywgMTk3OCwgCisgICAgMTk4MywgMTk4OCwgMTk5MywgMTk5OSwgMjAwNCwgMjAxMCwgMjAxNSwgMjAyMSwgMjAyNywgMjAzMiwgMjAzOCwgMjA0NCwgCisgICAgMjA1MCwgMjA1NiwgMjA2MSwgMjA2NiwgMjA2OCwgMjA2OSwgMjA3MywgMjA3NywgMjA4MiwgMjA4NiwgMjA5MCwgMjA5NCwgCisgICAgMjA5OSwgMjEwMywgMjEwNiwgMjExMSwgMjExNSwgMjEyMCwgMjEyNCwgMjEyOCwgMjEzMywgMjEzNywgMjE0MCwgMjE0NCwgCisgICAgMjE1MCwgMjE2NCwgMjE2OCwgMjE3MiwgMjE3NiwgMjE3OSwgMjE4NCwgMjE4OCwgMjE5MiwgMjE5NSwgMjE5OSwgMjIwNCwgCisgICAgMjIwOSwgMjIxNCwgMjIxOSwgMjIyMywgMjIyNywgMjIzMSwgMjIzNiwgMjI0MCwgMjI0NSwgMjI0OSwgMjI1NCwgMjI2MCwgCisgICAgMjI2NywgMjI3MywgMjI3OCwgMjI4MywgMjI4OCwgMjI5NCwgMjI5OSwgMjMwNSwgMjMxMCwgMjMxMywgMTIxMiwgMjMxNSwgCisgICAgMjMyMiwgMjMzMCwgMjM0MCwgMjM0OSwgMjM2MywgMjM2NywgMjM3MSwgMjM4NCwgMjM5MiwgMjM5NiwgMjQwMSwgMjQwNSwgCisgICAgMjQwOCwgMjQxMiwgMjQxNiwgMjQyMSwgMjQyNiwgMjQzMSwgMjQzNSwgMjQzOCwgMjQ0MiwgMjQ0OSwgMjQ1NiwgMjQ2MiwgCisgICAgMjQ2NywgMjQ3MiwgMjQ3OCwgMjQ4NCwgMjQ4OSwgMjQ5MiwgMTc2MCwgMjQ5NCwgMjUwMCwgMjUwNCwgMjUwOSwgMjUxMywgCisgICAgMjUxNywgMTc2NSwgMTc3MSwgMjUyMiwgMjUyNiwgMjUyOSwgMjUzNCwgMjUzOSwgMjU0NCwgMjU0OSwgMjU1MywgMjU2MCwgCisgICAgMjU2NSwgMjU2OCwgMjU3NSwgMjU4MSwgMjU4NSwgMjU4OSwgMjU5MywgMjU5OCwgMjYwNSwgMjYxMCwgMjYxNSwgMjYyMiwgCisgICAgMjYyOCwgMjYzNCwgMjY0MCwgMjY1NCwgMjY3MSwgMjY4NiwgMjcwMSwgMjcxMCwgMjcxNSwgMjcxOSwgMjcyNCwgMjcyOSwgCisgICAgMjczMywgMjc0NSwgMjc1MiwgMjc1OCwgMjI2MywgMjc2NCwgMjc3MSwgMjc3NywgMjc4MSwgMjc4NCwgMjc5MSwgMjc5NywgCisgICAgMjgwMSwgMjgwNSwgMjgwOSwgMjA5MSwgMjgxMywgMjgxOCwgMjgyMywgMjgyNywgMjgzNSwgMjgzOSwgMjg0MywgMjg0NywgCisgICAgMjg1MSwgMjg1NiwgMjg2MSwgMjg2NiwgMjg3MCwgMjg3NSwgMjg4MCwgMjg4NCwgMjg4OSwgMjg5MywgMjg5NiwgMjkwMCwgCisgICAgMjkwNCwgMjkxMiwgMjkxNywgMjkyMSwgMjkyNSwgMjkzMSwgMjk0MCwgMjk0NCwgMjk0OCwgMjk1NCwgMjk1OSwgMjk2NiwgCisgICAgMjk3MCwgMjk4MCwgMjk4NCwgMjk4OCwgMjk5MywgMjk5NywgMzAwMiwgMzAwOCwgMzAxMywgMzAxNywgMzAyMSwgMzAyNSwgCisgICAgMjQ1MiwgMzAzMywgMzAzOCwgMzA0NCwgMzA0OSwgMzA1MywgMzA1OCwgMzA2MywgMzA2NywgMzA3MywgMzA3OCwgMjA5NSwgCisgICAgMzA4NCwgMzA5MCwgMzA5NSwgMzEwMCwgMzEwNSwgMzExMCwgMzExNSwgMzEyMCwgMzEyNSwgMzEzMCwgMzEzNSwgMzE0MSwgCisgICAgMzE0NiwgMTIyNywgOTIsIDMxNTIsIDMxNTYsIDMxNjAsIDMxNjQsIDMxNjksIDMxNzMsIDMxNzcsIDMxODEsIDMxODUsIAorICAgIDMxOTAsIDMxOTQsIDMxOTksIDMyMDMsIDMyMDYsIDMyMTAsIDMyMTUsIDMyMTksIDMyMjQsIDMyMjgsIDMyMzIsIDMyMzYsIAorICAgIDMyNDEsIDMyNDUsIDMyNDgsIDMyNjEsIDMyNjUsIDMyNjksIDMyNzMsIDMyNzcsIDMyODEsIDMyODQsIDMyODgsIDMyOTIsIAorICAgIDMyOTcsIDMzMDEsIDMzMDYsIDMzMTEsIDMzMTYsIDMzMjAsIDMzMjMsIDMzMjYsIDMzMzIsIDMzMzYsIDMzNDAsIDMzNDMsIAorICAgIDMzNDcsIDMzNTEsIDMzNTQsIDMzNjAsIDMzNjUsIDMzNzAsIDMzNzYsIDMzODEsIDMzODYsIDMzOTIsIDMzOTgsIDM0MDMsIAorICAgIDM0MDgsIDM0MTMsIDExMTUsIDU0NywgMzQxOCwgMzQyMSwgMzQyNiwgMzQzMCwgMzQzMywgMzQzNywgMzQ0MiwgMzQ0NywgCisgICAgMzQ1MSwgMzQ1NiwgMzQ2MCwgMzQ2NSwgMzQ2OSwgMzQ3MywgMzQ3OSwgMzQ4NSwgMzQ4OCwgMzQ5MSwgMzQ5NywgMzUwNCwgCisgICAgMzUxMSwgMzUxNywgMzUyNCwgMzUyOSwgMzUzMywgMzU0MCwgMzU0NywgMzU1MiwgMzU1NiwgMzU2NiwgMzU3MCwgMzU3NCwgCisgICAgMzU3OSwgMzU4NCwgMzU5NCwgMjEwNywgMzU5OSwgMzYwMywgMzYwNiwgMzYxMiwgMzYxNywgMzYyMywgMzYyOSwgMzYzNCwgCisgICAgMzY0MSwgMzY0NSwgMzY0OSwgNjIwLCA2NzEsIDEzODgsIDM2NTMsIDM2NjAsIDM2NjcsIDM2NzQsIDM2ODEsIDM2ODcsIAorICAgIDM2OTMsIDM2OTgsIDM3MDIsIDM3MDgsIDM3MTMsIDM3MTcsIDIxMTYsIDM3MjEsIDM3MjksIDYwMCwgMzczNSwgMzc0NiwgCisgICAgMzc1MCwgMzc2MCwgMjEyMSwgMzc2NiwgMzc3MSwgMzc4NiwgMzc5MiwgMzc5OSwgMzgwOSwgMzgxNSwgMzgyMCwgMzgyNiwgCisgICAgMzgzMiwgMzgzNSwgMzgzOSwgMzg0NCwgMzg1MSwgMzg1NiwgMzg2MCwgMzg2NCwgMzg2OCwgMzg3MiwgMzg3NywgMzg4MywgCisgICAgMzg5NCwgMzIxMSwgMzg5OSwgMzkxMSwgMzkxOSwgMzkyNCwgMTU2NCwgMzkzMSwgMzkzNCwgMzkzNywgMzk0MSwgMzk0NCwgCisgICAgMzk1MCwgMzk1NCwgMzk2OCwgMzk3MiwgMzk3NSwgMzk3OSwgMzk4NSwgMzk5MSwgMzk5NiwgNDAwMCwgNDAwNCwgNDAxMCwgCisgICAgNDAyMSwgNDAyNywgNDAzMiwgNDAzOCwgNDA0MiwgNDA1MCwgNDA2MCwgNDA2NiwgNDA3MSwgNDA4MCwgNDA4OCwgNDA5NSwgCisgICAgNDA5OSwgNDEwNSwgNDExNCwgNDEyMywgNDEyNywgNDEzMiwgNDEzNywgNDE0MSwgNDE0OSwgNDE1MywgNDE1OCwgNDE2MiwgCisgICAgMjEyOSwgMTQwMSwgNDE2OCwgNDE3MywgNDE3OSwgNDE4NCwgNDE4OSwgNDE5NCwgNDE5OSwgNDIwNCwgNDIwOSwgNDIxNSwgCisgICAgNDIyMCwgNDIyNiwgNDIzMSwgNDIzNiwgNDI0MSwgNDI0NywgNDI1MiwgNDI1NywgNDI2MiwgNDI2NywgNDI3MywgNDI3OCwgCisgICAgNDI4NCwgNDI4OSwgNDI5NCwgNDI5OSwgNDMwNCwgNDMwOSwgNDMxNCwgNDMyMCwgNDMyNSwgNDMzMCwgMzE5LCA0NTYsIAorICAgIDQzMzUsIDQzNDEsIDQzNDUsIDQzNDksIDQzNTQsIDQzNTgsIDQzNjIsIDQzNjUsIDQzNjksIDQzNzMsIDQzNzcsIDQzODEsIAorICAgIDQzODYsIDQzOTAsIDQzOTQsIDQ0MDAsIDQxNjUsIDQ0MDUsIDQ0MDksIDQ0MTIsIDQ0MTcsIDQ0MjIsIDQ0MjcsIDQ0MzIsIAorICAgIDQ0MzcsIDQ0NDIsIDQ0NDcsIDQ0NTIsIDQ0NTcsIDQ0NjIsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODYsIDQ0OTEsIAorICAgIDQ0OTYsIDQ1MDEsIDQ1MDYsIDQ1MTEsIDQ1MTYsIDQ1MjAsIDQ1MjUsIDQ1MzAsIDQ1MzUsIDQ1NDAsIDQ1NDUsIDQ1NTAsIAorICAgIDQ1NTUsIDQ1NjAsIDQ1NjUsIDQ1NzAsIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODksIDQ1OTQsIDQ1OTksIDQ2MDQsIDQ2MDksIAorICAgIDQ2MTQsIDQ2MTksIDQ2MjQsIDQ2MjgsIDQ2MzMsIDQ2MzgsIDQ2NDMsIDQ2NDgsIDQ2NTMsIDQ2NTgsIDQ2NjMsIDQ2NjgsIAorICAgIDQ2NzMsIDQ2NzgsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTcsIDQ3MDIsIDQ3MDcsIDQ3MTIsIDQ3MTcsIDQ3MjIsIDQ3MjcsIAorICAgIDQ3MzIsIDQ3MzYsIDQ3NDEsIDQ3NDYsIDQ3NTEsIDQ3NTYsIDQ3NjEsIDQ3NjYsIDQ3NzEsIDQ3NzYsIDQ3ODEsIDQ3ODYsIAorICAgIDQ3OTAsIDQ3OTUsIDQ4MDAsIDQ4MDUsIDQ4MTAsIDQ4MTYsIDQ4MjIsIDQ4MjgsIDQ4MzQsIDQ4NDAsIDQ4NDYsIDQ4NTIsIAorICAgIDQ4NTcsIDQ4NjMsIDQ4NjksIDQ4NzUsIDQ4ODEsIDQ4ODcsIDQ4OTMsIDQ4OTksIDQ5MDUsIDQ5MTEsIDQ5MTcsIDQ5MjIsIAorICAgIDQ5MjgsIDQ5MzQsIDQ5NDAsIDQ5NDYsIDQ5NTIsIDQ5NTgsIDQ5NjQsIDQ5NzAsIDQ5NzYsIDQ5ODIsIDQ5ODcsIDQ5OTMsIAorICAgIDQ5OTksIDUwMDUsIDUwMTEsIDUwMTcsIDUwMjMsIDUwMjksIDUwMzUsIDUwNDEsIDUwNDcsIDUwNTIsIDUwNTgsIDUwNjQsIAorICAgIDUwNzAsIDUwNzYsIDUwODIsIDUwODgsIDUwOTQsIDUxMDAsIDUxMDYsIDUxMTIsIDUxMTcsIDUxMjMsIDUxMjksIDUxMzUsIAorICAgIDUxNDEsIDUxNDcsIDUxNTMsIDUxNTksIDUxNjUsIDUxNzEsIDUxNzcsIDUxODIsIDUxODYsIDUxOTIsIDUxOTgsIDUyMDQsIAorICAgIDUyMTAsIDUyMTYsIDUyMjIsIDUyMjgsIDUyMzQsIDUyNDAsIDUyNDYsIDUyNTEsIDUyNTcsIDUyNjMsIDUyNjksIDUyNzUsIAorICAgIDUyODEsIDUyODcsIDUyOTMsIDUyOTksIDUzMDUsIDUzMTEsIDUzMTYsIDUzMjIsIDUzMjgsIDUzMzQsIDUzNDAsIDUzNDYsIAorICAgIDUzNTIsIDUzNTgsIDUzNjQsIDUzNzAsIDUzNzYsIDUzODEsIDUzODcsIDUzOTMsIDUzOTksIDU0MDUsIDU0MTEsIDU0MTcsIAorICAgIDU0MjMsIDU0MjksIDU0MzUsIDU0NDEsIDU0NDYsIDU0NTIsIDU0NTgsIDU0NjQsIDU0NzAsIDU0NzYsIDU0ODIsIDU0ODgsIAorICAgIDU0OTQsIDU1MDAsIDU1MDYsIDU1MTEsIDU1MTcsIDU1MjMsIDU1MjksIDU1MzUsIDU1NDEsIDU1NDcsIDU1NTMsIDU1NTksIAorICAgIDU1NjUsIDU1NzEsIDU1NzYsIDU1ODIsIDU1ODgsIDU1OTQsIDU2MDAsIDU2MDYsIDU2MTIsIDU2MTgsIDU2MjQsIDU2MzAsIAorICAgIDU2MzYsIDU2NDEsIDU2NDcsIDU2NTMsIDU2NTksIDU2NjUsIDU2NzEsIDU2NzcsIDU2ODMsIDU2ODksIDU2OTUsIDU3MDEsIAorICAgIDU3MDYsIDU3MTIsIDU3MTgsIDU3MjQsIDU3MzAsIDU3MzYsIDU3NDIsIDU3NDgsIDU3NTQsIDU3NjAsIDU3NjYsIDU3NzEsIAorICAgIDU3NzcsIDU3ODMsIDU3ODksIDU3OTUsIDU4MDEsIDU4MDcsIDU4MTMsIDU4MTksIDU4MjUsIDU4MzEsIDU4MzYsIDU4NDAsIAorICAgIDU4NDMsIDU4NTAsIDU4NTQsIDU4NjcsIDU4NzEsIDU4NzUsIDU4NzksIDU4ODMsIDU4ODcsIDU4OTEsIDU4OTcsIDU5MDQsIAorICAgIDU5MTIsIDU5MTYsIDU5MjQsIDU5MzMsIDU5MzksIDU5NTEsIDU5NTYsIDU5NTksIDU5NjMsIDU5NzMsIDU5ODEsIDU5ODksIAorICAgIDU5OTUsIDU5OTksIDYwMDksIDYwMTksIDYwMjcsIDYwMzQsIDYwNDEsIDYwNDcsIDYwNTMsIDYwNjAsIDYwNjQsIDYwNzEsIAorICAgIDYwODEsIDYwOTEsIDYwOTksIDYxMDYsIDYxMTEsIDYxMTUsIDYxMjMsIDYxMjcsIDYxMzIsIDYxMzksIDYxNDcsIDYxNTIsIAorICAgIDYxNTcsIDYxNjEsIDYxNjgsIDYxNzMsIDYxODcsIDYxOTIsIDYxOTcsIDYyMDQsIDYyMTMsIDYyMTYsIDYyMjAsIDYyMjQsIAorICAgIDYyMjgsIDYyMzEsIDYyMzYsIDYyNDEsIDYyNTAsIDYyNTYsIDYyNjIsIDYyNjgsIDYyNzIsIDYyODMsIDYyOTMsIDYzMDgsIAorICAgIDYzMjMsIDYzMzgsIDYzNTMsIDYzNjgsIDYzODMsIDYzOTgsIDY0MTMsIDY0MjgsIDY0NDMsIDY0NTgsIDY0NzMsIDY0ODgsIAorICAgIDY1MDMsIDY1MTgsIDY1MzMsIDY1NDgsIDY1NjMsIDY1NzgsIDY1OTMsIDY2MDgsIDY2MjMsIDY2MzgsIDY2NTMsIDY2NjgsIAorICAgIDY2ODMsIDY2OTgsIDY3MTMsIDY3MjgsIDY3NDMsIDY3NTgsIDY3NzMsIDY3ODgsIDY4MDMsIDY4MTgsIDY4MzMsIDY4NDgsIAorICAgIDY4NjMsIDY4NzgsIDY4OTMsIDY5MDgsIDY5MjMsIDY5MzgsIDY5NTMsIDY5NjgsIDY5ODMsIDY5OTgsIDcwMTMsIDcwMjgsIAorICAgIDcwMzcsIDcwNDYsIDcwNTEsIDcwNTcsIDcwNjcsIDcwNzEsIDcwNzYsIDcwODEsIDcwODksIDcwOTMsIDcwOTYsIDcxMDAsIAorICAgIDI5NzUsIDcxMDMsIDcxMDgsIDI5OCwgNDQyLCA3MTE0LCA3MTIyLCA3MTI2LCA3MTMwLCA3MTMzLCA3MTM3LCA3MTQzLCAKKyAgICA3MTQ3LCA3MTU1LCA3MTYxLCA3MTY2LCA3MTczLCA3MTgwLCA3MTg2LCA3MTkxLCA3MTk4LCA3MjA0LCA3MjEyLCA3MjE2LCAKKyAgICA3MjIxLCA3MjMzLCA3MjQ0LCA3MjUxLCA3MjU1LCA3MjU5LCA3MjY1LCAzMjMzLCA3MjY5LCA3Mjc1LCA3MjgwLCA3Mjg1LCAKKyAgICA3MjkwLCA3Mjk2LCA3MzAxLCA3MzA2LCA3MzExLCA3MzE2LCA3MzIyLCA3MzI3LCA3MzMyLCA3MzM4LCA3MzQzLCA3MzQ5LCAKKyAgICA3MzU0LCA3MzYwLCA3MzY1LCA3MzcxLCA3Mzc2LCA3MzgxLCA3Mzg2LCA3MzkxLCA3Mzk2LCA3NDAyLCA3NDA3LCA3NDEyLCAKKyAgICA3NDE3LCA3NDIzLCA3NDI5LCA3NDM1LCA3NDQxLCA3NDQ3LCA3NDUzLCA3NDU5LCA3NDY1LCA3NDcxLCA3NDc3LCA3NDgzLCAKKyAgICA3NDg5LCA3NDk0LCA3NDk5LCA3NTA0LCA3NTA5LCA3NTE0LCA3NTE5LCA3NTI0LCA3NTI5LCA3NTM1LCA3NTQxLCA3NTQ2LCAKKyAgICA3NTUyLCA3NTU4LCA3NTY0LCA3NTY5LCA3NTc0LCA3NTc5LCA3NTg0LCA3NTkwLCA3NTk2LCA3NjAxLCA3NjA2LCA3NjExLCAKKyAgICA3NjE2LCA3NjIxLCA3NjI3LCA3NjMyLCA3NjM4LCA3NjQ0LCA3NjUwLCA3NjU2LCA3NjYyLCA3NjY4LCA3Njc0LCA3NjgwLCAKKyAgICA3Njg2LCAyMTM4LCA3MTMyLCA3NjkxLCA3Njk1LCA3Njk5LCA3NzAyLCA3NzA5LCA3NzEyLCA3NzIwLCA3NzI1LCA3NzMwLCAKKyAgICA3NzIxLCA3NzM1LCAyMTY1LCA3NzM5LCA3NzQ1LCA3NzUxLCA3NzU2LCA3NzYxLCA3NzY4LCA3Nzc2LCA3NzgxLCA3Nzg1LCAKKyAgICA3Nzg4LCA3NzkyLCA3Nzk4LCA3ODA0LCA3ODA4LCAyMTczLCA1NjAsIDc4MTEsIDc4MTUsIDc4MjAsIDc4MjYsIDc4MzEsIAorICAgIDc4MzUsIDc4MzgsIDc4NDIsIDc4NDgsIDc4NTMsIDc4NTcsIDc4NjQsIDc4NjgsIDc4NzIsIDc4NzYsIDk0NSwgNzY5LCAKKyAgICA3ODc5LCA3ODg3LCA3ODk0LCA3OTAxLCA3OTA3LCA3OTE0LCA3OTIyLCA3OTI5LCA3OTM2LCA3OTQxLCA3OTUzLCAxMjQ3LCAKKyAgICAxNDA5LCAxNDE0LCA3OTY0LCAxNDE5LCA3OTY4LCA3OTcyLCA3OTgxLCA3OTg5LCA3OTk4LCA4MDA0LCA4MDA5LCA4MDEzLCAKKyAgICA4MDE5LCA4MDI0LCAyNzA2LCA4MDMxLCA4MDM1LCA4MDQ0LCA4MDUzLCA4MDYyLCA4MDcxLCA4MDc2LCA4MDgxLCA4MDkzLCAKKyAgICA4MDk4LCA4MTA2LCAyMjI0LCA4MTEwLCA4MTEyLCA4MTE3LCA4MTIxLCA4MTMwLCA4MTM4LCAxNDIzLCAxMzMsIDM0NjEsIAorICAgIDM0NjYsIDgxNDQsIDgxNDgsIDgxNTcsIDgxNjMsIDgxNjgsIDgxNzEsIDgxODAsIDI2OTgsIDgxODYsIDgxOTQsIDgxOTgsIAorICAgIDgyMDIsIDgyMDYsIDIyMzcsIDgyMTAsIDgyMTUsIDgyMjIsIDgyMjgsIDgyMzQsIDgyMzcsIDgyMzksIDgyNDIsIDgyNTAsIAorICAgIDgyNTgsIDgyNjYsIDgyNjksIDgyNzQsIDIyNTAsIDgyNzksIDc3MzIsIDgyODIsIDgyODQsIDgyODksIDgyOTQsIDgyOTksIAorICAgIDgzMDQsIDgzMDksIDgzMTQsIDgzMTksIDgzMjQsIDgzMjksIDgzMzQsIDgzNDAsIDgzNDUsIDgzNTAsIDgzNTUsIDgzNjEsIAorICAgIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTEsIDgzOTcsIDg0MDIsIDg0MDcsIDg0MTIsIDg0MTcsIDg0MjIsIAorICAgIDg0MjcsIDg0MzIsIDg0MzcsIDg0NDIsIDg0NDcsIDg0NTIsIDg0NTcsIDg0NjIsIDg0NjcsIDg0NzIsIDg0NzcsIDg0ODIsIAorICAgIDg0ODgsIDg0OTQsIDg0OTksIDg1MDQsIDg1MDksIDg1MTQsIDg1MTksIDIyNjEsIDIyNjgsIDIyNzQsIDg1MjQsIDg1MzAsIAorICAgIDg1MzgsIDIzMDAsIDIzMDYsIDg1NDYsIDg1NTAsIDg1NTUsIDg1NTksIDg1NjMsIDg1NjcsIDg1NzIsIDg1NzYsIDg1ODEsIAorICAgIDg1ODUsIDg1ODgsIDg1OTEsIDg1OTcsIDg2MDMsIDg2MDksIDg2MTUsIDg2MjEsIDg2MjcsIDg2MzMsIDg2MzcsIDg2NDEsIAorICAgIDg2NDUsIDg2NDksIDg2NTMsIDg2NTgsIDg2NjUsIDg2NzYsIDg2ODQsIDg2OTQsIDg3MDAsIDg3MDcsIDg3MTIsIDg3MTYsIAorICAgIDg3MjcsIDg3NDAsIDg3NTEsIDg3NjQsIDg3NzUsIDg3ODcsIDg3OTksIDg4MTEsIDg4MjQsIDg4MzcsIDg4NDQsIDg4NTAsIAorICAgIDg4NjQsIDg4NzEsIDg4NzcsIDg4ODEsIDg4ODYsIDg4OTAsIDg4OTcsIDg5MDUsIDg5MDksIDg5MTUsIDg5MTksIDg5MjUsIAorICAgIDg5MzUsIDg5MzksIDg5NDQsIDg5NDksIDg5NTYsIDg5NjIsIDg5NzIsIDc5MDksIDg5NzgsIDg5ODIsIDg5ODksIDc2OCwgCisgICAgODk5MywgODk5NywgOTAwMiwgOTAwNywgOTAxMiwgOTAxNiwgOTAyMiwgOTAzMCwgOTAzNiwgOTA0MCwgOTA0NiwgOTA1NiwgCisgICAgOTA2MCwgOTA2NiwgOTA3MSwgOTA3NSwgOTA4MSwgOTA4NywgMjE2MSwgOTA5MiwgOTA5NCwgOTA5OSwgOTEwNywgOTExNiwgCisgICAgOTEyMCwgOTEyNiwgOTEzMSwgOTEzNiwgOTE0MSwgOTE0NiwgOTE1MiwgOTE1NywgOTE2MiwgNDAwNiwgOTE2NywgOTE3MiwgCisgICAgOTE3NiwgOTE4MiwgOTE4NywgOTE5MywgOTE5OCwgOTIwMywgOTIwOSwgOTIxNCwgOTEyMSwgOTIyMCwgOTIyNCwgOTIzMSwgCisgICAgOTIzNywgOTI0MiwgOTI0NiwgNjE4MywgOTI1MSwgOTI2MCwgOTI2NSwgOTI3MCwgODIxOCwgODIyNSwgOTI3NSwgMjg1MywgCisgICAgOTI3OSwgOTI4NCwgOTI4OSwgOTEzMiwgOTI5MywgOTI5OCwgOTEzNywgOTE0MiwgOTMwMywgOTMxMCwgOTMxNywgOTMyMywgCisgICAgOTMyOSwgOTMzNSwgOTM0MCwgOTM0NSwgOTM1MCwgOTE0NywgOTE1MywgOTM1NiwgOTM2MiwgOTM2NywgOTM3NSwgOTE1OCwgCisgICAgOTM4MCwgOTkwLCA5MzgzLCA5MzkxLCA5Mzk3LCA5NDAzLCA5NDEyLCA5NDIwLCA5NDI1LCA5NDMxLCA5NDM5LCA5NDQ2LCAKKyAgICA5NDYxLCA5NDc4LCA5NDk3LCA5NTA2LCA5NTE0LCA5NTI5LCA5NTQwLCA5NTUwLCA5NTYwLCA5NTY4LCA5NTc0LCA5NTg2LCAKKyAgICA5NTk1LCA5NjAzLCA5NjEwLCA5NjE3LCA5NjIzLCA5NjI4LCA5NjM2LCA5NjQ2LCA5NjUzLCA5NjYzLCA5NjczLCA5NjgzLCAKKyAgICA5NjkxLCA5Njk4LCA5NzA3LCA5NzE3LCA5NzMxLCA5NzQ2LCA5NzU1LCA5NzYzLCA5NzY4LCA5NzcyLCA5NzgxLCA5Nzg3LCAKKyAgICA5NzkyLCA5ODAyLCA5ODEyLCA5ODIyLCA5ODI3LCA5ODMxLCA5ODQwLCA5ODQ1LCA5ODU1LCA5ODY2LCA5ODc5LCA5ODg3LCAKKyAgICA5OTAwLCA5OTEyLCA5OTIwLCA5OTI1LCA5OTI5LCA5OTM1LCA5OTQwLCA5OTQ4LCA5OTU2LCA5OTYzLCA5OTY4LCA5OTc2LCAKKyAgICA5OTgyLCA5OTg1LCA5OTg5LCA5OTk1LCAxMDAwMywgMTAwMDgsIDEwMDEyLCAxMDAyMCwgMTAwMjksIDEwMDM3LCAxMDA0MywgCisgICAgMTAwNDcsIDEwMDU0LCAxMDA2NSwgMTAwNjksIDEwMDcyLCAxMDA3OCwgOTE2MywgMTAwODMsIDEwMDg5LCAxMDA5NiwgCisgICAgMTAxMDIsIDEwMTA3LCAxMDExNCwgMTAxMjEsIDEwMTI4LCAxMDEzNSwgMTAxNDIsIDEwMTQ5LCAxMDE1NiwgMTAxNjMsIAorICAgIDEwMTY4LCA5NDc0LCAxMDE3MywgMTAxNzksIDEwMTg2LCAxMDE5MywgMTAxOTgsIDEwMjA1LCAxMDIxNCwgMTAyMTgsIAorICAgIDEwMjMwLCA4MjU2LCAxMDIzNCwgMTAyMzcsIDEwMjQxLCAxMDI0NSwgMTAyNDksIDEwMjUzLCAxMDI1OSwgMTAyNjUsIAorICAgIDEwMjcwLCAxMDI3NiwgMTAyODEsIDEwMjg2LCAxMDI5MiwgMTAyOTcsIDEwMzAyLCA4OTUyLCAxMDMwNywgMTAzMTEsIAorICAgIDEwMzE1LCAxMDMxOSwgMTAzMjQsIDEwMzI5LCAxMDMzNywgMTAzNDMsIDEwMzQ3LCAxMDM1MSwgMTAzNTgsIDEwMzYzLCAKKyAgICAxMDM3MSwgMTAzNzYsIDEwMzgwLCAxMDM4MywgMTAzODksIDEwMzk2LCAxMDQwMCwgMTA0MDMsIDEwNDA4LCAxMDQxMiwgCisgICAgNDA0NSwgMTA0MTgsIDEwNDI3LCAzNiwgMTA0MzUsIDEwNDQxLCAxMDQ0NiwgODk2NywgMTA0NTEsIDEwNDU2LCAxMDQ2MCwgCisgICAgMTA0NjMsIDEwNDc4LCAxMDQ5NywgMTA1MDksIDEwNTIyLCAxMDUzNSwgMTA1NDgsIDEwNTYyLCAxMDU3NSwgMTA1OTAsIAorICAgIDEwNTk3LCA5MTY4LCAxMDYwMywgMTA2MTcsIDEwNjIyLCAxMDYyOCwgMTA2MzMsIDEwNjQxLCAxMDY0NiwgODA0MCwgCisgICAgMTA2NTEsIDEwNjU0LCAxMDY2MSwgMTA2NjYsIDEwNjcwLCAyODU4LCA5OTgsIDEwNjc2LCAxMDY4MCwgMTA2ODYsIDEwNjkyLCAKKyAgICAxMDY5NywgMTA3MDMsIDEwNzA4LCA5MTc3LCAxMDcxNCwgMTA3MjAsIDEwNzI1LCAxMDczMCwgMTA3MzgsIDEwNzQ0LCAKKyAgICAxMDc1NywgMTA3NjUsIDEwNzcyLCA5MTgzLCAxMDc3OCwgMTA3ODYsIDEwNzk0LCAxMDgwMSwgMTA4MTQsIDEwODI2LCAKKyAgICAxMDgzNiwgMTA4NDQsIDEwODUxLCAxMDg1OCwgMTA4NjcsIDEwODc2LCAxMDg4NCwgMTA4OTEsIDEwODk2LCAxMDkwMiwgCisgICAgOTE4OCwgMTA5MDcsIDEwOTEzLCA5MTk0LCAxMDkxOCwgMTA5MjEsIDEwOTI4LCAxMDkzNCwgMTA5NDcsIDg2NjksIDEwOTU4LCAKKyAgICAxMDk2NCwgMTA5NzMsIDEwOTgxLCAxMDk4OCwgMTA5OTQsIDExMDAwLCAxMTAwNSwgMTEwMDksIDExMDE0LCAxMDQ3MCwgCisgICAgMTEwMjAsIDkxOTksIDExMDI3LCAxMTAzMiwgMTEwMzksIDExMDQ1LCAxMTA1MSwgMTEwNTYsIDExMDY0LCAxMTA3MiwgCisgICAgMTEwNzksIDExMDgzLCAxMTA5NywgMTExMDcsIDExMTEyLCAxMTExNiwgMTExMjcsIDExMTMzLCAxMTEzOCwgMTExNDMsIAorICAgIDkyMDQsIDkyMTAsIDExMTQ3LCAxMTE1MCwgMTExNTUsIDExMTY3LCAxMTE3NCwgMTExNzksIDExMTgzLCAxMTE4OCwgCisgICAgMTExOTIsIDExMTk5LCAxMTIwNSwgOTIxNSwgOTEyMiwgMTEyMTIsIDI4NjMsIDgsIDExMjE5LCAxMTIyNCwgMTEyMjgsIAorICAgIDExMjM0LCAxMTI0MiwgMTEyNTIsIDExMjU3LCAxMTI2MiwgMTEyNjksIDExMjc2LCAxMTI4MCwgMTEyOTEsIDExMzAxLCAKKyAgICAxMTMxMCwgMTEzMjIsIDExMzI3LCAxMTMzMSwgMTEzMzksIDExMzUzLCAxMTM1NywgMTEzNjAsIDExMzY4LCAxMTM3NSwgCisgICAgMTEzODMsIDExMzg3LCAxMTM5OCwgMTE0MDIsIDExNDA5LCAxMTQxNCwgMTE0MTgsIDExNDI0LCAxMTQyOSwgMTE0MzMsIAorICAgIDExNDM5LCAxMTQ0NCwgMTE0NTUsIDExNDU5LCAxMTQ2MiwgMTE0NjgsIDExNDczLCAxMTQ3OSwgMTE0ODUsIDExNDkyLCAKKyAgICAxMTUwMywgMTE1MTMsIDExNTIzLCAxMTUzMiwgMTE1MzksIDExNTQ4LCA5MjI1LCA5MjMyLCA5MjM4LCA5MjQzLCAxMTU1NCwgCisgICAgMTE1NjAsIDkyNDcsIDExNTY2LCAxMTU2OSwgMTE1NzYsIDExNTgxLCAxMTU5NiwgMTE2MTIsIDExNjI3LCAxMTYzNSwgCisgICAgMTE2NDEsIDExNjQ2LCA4MzgsIDQyMCwgMTE2NTEsIDExNjU5LCAxMTY2NiwgMTE2NzIsIDExNjc3LCAxMTY4MiwgOTI1MiwgCisgICAgMTE2ODQsIDExNjg4LCAxMTY5MywgMTE2OTcsIDExNzA3LCAxMTcxMiwgMTE3MTYsIDExNzI1LCAxMTcyOSwgMTE3MzIsIAorICAgIDkyNjEsIDExNzM5LCAxMTc0MiwgMTE3NTAsIDExNzU3LCAxMTc2NSwgMTE3NjksIDExNzc2LCAxMTc4NSwgMTE3ODgsIAorICAgIDExNzkyLCAxMTc5NiwgMTE4MDIsIDExODA2LCAxMTgxMCwgMTE4MTQsIDExODIwLCAxMTgzMCwgMTE4MzQsIDExODQyLCAKKyAgICAxMTg0NiwgMTE4NTMsIDExODU3LCAxMTg2MiwgMTE4NjYsIDExODczLCAxMTg3OSwgMTE4ODcsIDExODkzLCAxMTg5OCwgCisgICAgMTE5MDgsIDExOTEzLCAxMTkxOCwgMTE5MjIsIDExOTMwLCAzOTA1LCAxMTkzOCwgMTE5NDMsIDkyNjYsIDExOTQ3LCAKKyAgICAxMTk1MSwgMTE5NTQsIDExOTYyLCAxMTk2OSwgMTE5NzMsIDU5OTEsIDExOTc3LCAxMTk4MiwgMTE5ODYsIDExOTk3LCAKKyAgICAxMjAwNywgMTIwMTIsIDEyMDE4LCAxMjAyMiwgMTIwMjUsIDEyMDMzLCAxMjAzOCwgMTIwNDMsIDEyMDUwLCAxMjA1NSwgCisgICAgOTI3MSwgMTIwNjAsIDEyMDY0LCAxMjA3MSwgMTcyMiwgNjE0NSwgMTIwNzYsIDEyMDgxLCAxMjA4NiwgMTIwOTEsIDEyMDk3LCAKKyAgICAxMjEwMiwgMTIxMDgsIDEyMTEzLCAxMjExOCwgMTIxMjMsIDEyMTI4LCAxMjEzMywgMTIxMzgsIDEyMTQzLCAxMjE0OCwgCisgICAgMTIxNTMsIDEyMTU4LCAxMjE2MywgMTIxNjgsIDEyMTczLCAxMjE3OCwgMTIxODMsIDEyMTg4LCAxMjE5NCwgMTIxOTksIAorICAgIDEyMjA0LCAxMjIwOSwgMTIyMTQsIDEyMjE5LCAxMjIyNSwgMTIyMzAsIDEyMjM1LCAxMjI0MSwgMTIyNDYsIDEyMjUyLCAKKyAgICAxMjI1NywgMTIyNjMsIDEyMjY4LCAxMjI3MywgMTIyNzgsIDEyMjgzLCAxMjI4OSwgMTIyOTQsIDEyMjk5LCAxMjMwNCwgCisgICAgNzM3LCAxMzksIDEyMzEyLCAxMjMxNiwgMTIzMjEsIDEyMzI2LCAxMjMzMCwgMTIzMzQsIDEyMzM4LCAxMjM0MywgMTIzNDcsIAorICAgIDEyMzUyLCAxMjM1NiwgMTIzNTksIDEyMzYzLCAxMjM2NywgMTIzNzMsIDEyMzc4LCAxMjM4OCwgMTIzOTQsIDEyNDAyLCAKKyAgICAxMjQwNiwgMTI0MTAsIDEyNDE3LCAxMjQyNSwgMTI0MzQsIDEyNDQ1LCAxMjQ1MiwgMTI0NTksIDEyNDYzLCAxMjQ3MiwgCisgICAgMTI0ODEsIDEyNDg5LCAxMjQ5OCwgMTI1MDcsIDEyNTE2LCAxMjUyNSwgMTI1MzUsIDEyNTQ1LCAxMjU1NSwgMTI1NjUsIAorICAgIDEyNTc1LCAxMjU4NCwgMTI1OTQsIDEyNjA0LCAxMjYxNCwgMTI2MjQsIDEyNjM0LCAxMjY0NCwgMTI2NTQsIDEyNjYzLCAKKyAgICAxMjY3MywgMTI2ODMsIDEyNjkzLCAxMjcwMywgMTI3MTMsIDEyNzIzLCAxMjczMiwgMTI3NDIsIDEyNzUyLCAxMjc2MiwgCisgICAgMTI3NzIsIDEyNzgyLCAxMjc5MiwgMTI4MDIsIDEyODEyLCAxMjgyMiwgMTI4MzEsIDEyODQxLCAxMjg1MSwgMTI4NjEsIAorICAgIDEyODcxLCAxMjg4MSwgMTI4OTEsIDEyOTAxLCAxMjkxMSwgMTI5MjEsIDEyOTMxLCAxMjk0MCwgMTI1NiwgMTI5NDYsIAorICAgIDEyOTQ5LCAxMjk1MywgMTI5NTgsIDEyOTY1LCAxMjk3MSwgMTI5NzYsIDEyOTgwLCAxMjk4NSwgMTI5OTQsIDEzMDAyLCAKKyAgICAxMzAwNywgMTMwMTEsIDEzMDE1LCAxMzAyMSwgMTMwMjYsIDEzMDMyLCA5MjgwLCAxMzAzNywgMTMwNDIsIDEzMDUxLCAKKyAgICA5Mjg1LCAxMzA1NiwgMTMwNTksIDEzMDY1LCAxMzA3MywgOTI5MCwgMTMwODAsIDEzMDg0LCAxMzA4OCwgMTMwOTIsIAorICAgIDEzMTAyLCAxMzEwOCwgMTMxMTQsIDEzMTE5LCAxMzEyOCwgMTMxMzYsIDEzMTQzLCAxMzE1MCwgMTMxNTUsIDEzMTYyLCAKKyAgICAxMzE2NywgMTMxNzEsIDEzMTc0LCAxMzE4NSwgMTMxOTUsIDEzMjA0LCAxMzIxMiwgMTMyMjMsIDEzMjM1LCAxMzI0NSwgCisgICAgMTMyNTAsIDEzMjU0LCAxMzI1OSwgMTMyNjQsIDEzMjY4LCAxMzI3NCwgMTMyODIsIDEzMjg5LCAxMzMwMCwgMTMzMDUsIAorICAgIDEzMzE1LCAxMzMxOSwgMTMzMjIsIDEzMzI5LCAxMzMzOSwgMTMzNDgsIDEzMzU1LCAxMzM1OSwgMTMzNjYsIDEzMzcyLCAKKyAgICAxMzM3NywgMTMzODIsIDEzMzg2LCAxMzM5NSwgMTM0MDAsIDEzNDA2LCAxMzQxMCwgMTM0MTUsIDEzNDE5LCAxMzQyOCwgCisgICAgMTM0MzYsIDEzNDQ0LCAxMzQ1MSwgMTM0NTksIDEzNDcxLCAxMzQ4MiwgMTM0OTIsIDEzNDk5LCAxMzUwNSwgMTM1MTQsIAorICAgIDEzNTI1LCAxMzUzNCwgMTM1NDYsIDEzNTU4LCAxMzU3MCwgMTM1ODAsIDEzNTg5LCAxMzU5OCwgMTM2MDYsIDEzNjEzLCAKKyAgICAxMzYyMiwgMTM2MzAsIDEzNjM0LCAxMzY0MCwgMTM2NDYsIDEzNjUxLCA3NzUzLCAxMzY1NSwgMTM2NTcsIDEzNjYxLCAKKyAgICAxMzY2NiwgMTM2NzIsIDEzNjgxLCAxMzY4NSwgMTM2OTMsIDEzNzAwLCAxMzcwOSwgMTM3MTgsIDEzNzI3LCAxMzczNiwgCisgICAgMTM3NDUsIDEzNzU0LCAxMzc2MywgMTM3NzIsIDEzNzgyLCAxMzc5MiwgMTM4MDEsIDEzODA3LCAxMzgxNCwgMTM4MjEsIAorICAgIDEzODI3LCAxMzg0MSwgMTM4NDgsIDEzODU2LCAxMzg2NSwgMTM4NzEsIDEzODgwLCAxMzg4OSwgMTM5MDAsIDEzOTEwLCAKKyAgICAxMzkxOCwgMTM5MjUsIDEzOTMzLCAxMzk0MiwgMTM5NTUsIDEzOTYzLCAxMzk3MCwgMTM5ODMsIDEzOTg5LCAxMzk5NSwgCisgICAgMTQwMDUsIDE0MDE0LCAxNDAyMywgMTQwMjgsIDE0MDMyLCAxNDAzOCwgMTQwNDQsIDE0MDUxLCA4OTY2LCAxNDA1NiwgCisgICAgMTQwNjEsIDE0MDY4LCAxNDA3MywgMTIzNjksIDE0MDc4LCAxNDA4NiwgMTQwOTIsIDE0MDk3LCAxNDEwNSwgMTQxMTMsIAorICAgIDE0MTIwLCAxNDEyOCwgMTQxMzQsIDE0MTQyLCAxNDE1MCwgMTQxNTYsIDE0MTYxLCAxNDE2NywgMTQxNzQsIDE0MTgwLCAKKyAgICAxNDE4NSwgMTQxODksIDE0MjAwLCAxNDIwOCwgMTQyMTQsIDE0MjE5LCAxNDIyOCwgMTQyMzQsIDE0MjM5LCAxNDI0OCwgCisgICAgMTQyNjIsIDM4NTMsIDE0MjY2LCAxNDI3MSwgMTQyNzYsIDE0MjgyLCAxNDI4NywgMTQyOTIsIDE0Mjk2LCAxNDMwMSwgCisgICAgMTQzMDYsIDE0MzExLCA3NzUyLCAxNDMxNiwgMTQzMjEsIDE0MzI2LCAxNDMzMSwgMTQzMzYsIDE0MzQwLCAxNDM0NSwgCisgICAgMTQzNTAsIDE0MzU1LCAxNDM2MCwgMTQzNjYsIDE0MzcyLCAxNDM3NywgMTQzODEsIDE0Mzg2LCAxNDM5MSwgMTQzOTYsIAorICAgIDkyOTQsIDE0NDAxLCAxNDQwNiwgMTQ0MTEsIDE0NDE2LCAxNDQyMSwgMTQ0MzgsIDE0NDU2LCAxNDQ2OCwgMTQ0ODEsIAorICAgIDE0NDk4LCAxNDUxNCwgMTQ1MzEsIDE0NTQxLCAxNDU2MCwgMTQ1NzEsIDE0NTgyLCAxNDU5MywgMTQ2MDQsIDE0NjE2LCAKKyAgICAxNDYyNywgMTQ2MzgsIDE0NjU1LCAxNDY2NiwgMTQ2NzcsIDE0NjgyLCA5Mjk5LCAxNDY4NywgMTQ2OTEsIDIzODEsIAorICAgIDE0Njk1LCAxNDY5OCwgMTQ3MDQsIDE0NzEyLCAxNDcyMCwgMTQ3MjUsIDE0NzMzLCAxNDc0MSwgMTQ3NDgsIDE0NzUzLCAKKyAgICAxNDc1OSwgMTQ3NjYsIDE0Nzc0LCAxNDc4MSwgMTQ3OTMsIDE0ODAxLCAxNDgwNiwgMTE1OTAsIDE0ODEyLCAxNDgyMSwgCisgICAgMTQ4MzAsIDE0ODM4LCAxNDg0NSwgMTQ4NTEsIDE0ODU5LCAxNDg2NiwgMTQ4NzIsIDE0ODc5LCAxNDg4NSwgMTQ4OTQsIAorICAgIDE0OTAyLCAxNDkxMiwgMTQ5MTksIDE0OTI1LCAxNDkzMywgMTQ5MzksIDE0OTQ3LCAxNDk1NCwgMTQ5NjcsIDE0OTc0LCAKKyAgICAxNDk4MywgMTQ5OTIsIDE1MDAxLCAxNTAwOSwgMTUwMTksIDE1MDI2LCAxNTAzMSwgMzU2MCwgMTUwMzgsIDE1MDQzLCAKKyAgICAxMzcyLCAxNTA0NywgMTQzMTcsIDE1MDUxLCAxNTA1NywgMTUwNjEsIDE1MDY5LCAxNTA4MSwgMTUwODYsIDE1MDkzLCAKKyAgICAxNTA5OSwgMTUxMDQsIDE1MTExLCAxNDMyMiwgMTUxMTUsIDE1MTE5LCAxNTEyMywgMTQzMjcsIDE1MTI3LCAxNDMzMiwgCisgICAgMTUxMzEsIDE1MTM4LCAxNTE0MywgMTUxNDcsIDE1MTU0LCAxNTE1OCwgMTUxNjYsIDE1MTczLCAxNTE3NywgMTUxODQsIAorICAgIDE1MjAxLCAxNTIxMCwgMTUyMTQsIDE1MjE3LCAxNTIyNSwgMTUyMzEsIDE1MjM2LCAzNjM4LCAxNTI0MCwgMTUyNDIsIAorICAgIDE1MjUwLCAxNTI1NywgMTUyNjcsIDE1Mjc5LCAxNTI4NCwgMTUyOTAsIDE1Mjk1LCAxNTI5OSwgMTUzMDUsIDE1MzEwLCAKKyAgICAxNTMxNiwgMTUzMTksIDE1MzI2LCAxNTMzNCwgMTUzNDEsIDE1MzQ3LCAxNTM1MywgMTUzNTgsIDE1MzY1LCAxNTM3MSwgCisgICAgMTUzNzYsIDE1MzgzLCAxNTM4NywgMTUzOTMsIDE1Mzk3LCAxNTQwNCwgMTU0MTAsIDE1NDE2LCAxNTQyNCwgMTU0MzAsIAorICAgIDE1NDM1LCAxNTQ0MSwgMTU0NDksIDE1NDU3LCAxNTQ2MywgMTU0NjksIDE1NDc0LCAxNTQ4MSwgMTU0ODYsIDE1NDkwLCAKKyAgICAxNTQ5NiwgMTU1MDEsIDE1NTA4LCAxNTUxMywgMTU1MTksIDE1NTIyLCAxNTUyOCwgMTU1MzQsIDE1NTM3LCAxNTU0MSwgCisgICAgMTU1NTMsIDE1NTU5LCAxNTU2NCwgMTU1NzEsIDE1NTc3LCAxNTU4MywgMTU1OTQsIDE1NjA0LCAxNTYxMywgMTU2MjEsIAorICAgIDE1NjI4LCAxNTYzOSwgMTU2NDksIDE1NjU5LCAxNTY2NywgMTU2NzAsIDE0MzQ2LCAxNTY3NSwgMTU2ODAsIDE0MzUxLCAKKyAgICAxNDQ4NiwgMTU2ODgsIDE1NzAxLCAxNTcxNiwgMTU3MjcsIDE0NTAzLCAxNTc0NSwgMTU3NTgsIDE1NzcxLCAxNTc4MiwgCisgICAgMTA0ODUsIDE1NzkzLCAxNTgwNiwgMTU4MjUsIDE1ODM2LCAxNTg0NywgMTU4NTgsIDI2NDksIDE1ODcxLCAxNTg3NSwgCisgICAgMTU4ODMsIDE1ODk4LCAxNTkxMywgMTU5MjQsIDE1OTMxLCAxNTkzNywgMTU5NDUsIDE1OTQ5LCAxNTk1NSwgMTU5NTgsIAorICAgIDE1OTY4LCAxNTk3NiwgMTU5ODMsIDE1OTkxLCAxNjAwMSwgMTYwMDYsIDE2MDEzLCAxNjAxOCwgMTYwMjUsIDE2MDM2LCAKKyAgICAxNjA0NiwgMTYwNTIsIDE2MDU3LCAxNjA2MiwgMTQzNTYsIDE2MDY2LCAxNjA3MiwgMTYwNzgsIDE2MDgzLCAxNjA4OCwgCisgICAgMTYwOTMsIDE2MDk3LCAxNDM2MSwgMTQzNjcsIDE2MTAxLCAxNDM3MywgMTYxMDYsIDE2MTE0LCAxNjEyMywgMTYxMzAsIAorICAgIDkxNDMsIDE2MTM0LCAxNjEzNiwgMTYxNDEsIDE2MTQ2LCAxNjE1MiwgMTYxNTcsIDE2MTYyLCAxNjE2NywgMTYxNzIsIAorICAgIDE2MTc2LCAxNjE4MiwgMTYxODgsIDE2MTkzLCAxNjE5OSwgMTYyMDQsIDE2MjA5LCAxNjIxNSwgMTYyMjAsIDE2MjI1LCAKKyAgICAxNjIzMCwgMTYyMzUsIDE2MjQxLCAxNjI0NiwgMTYyNTEsIDE2MjU3LCAxNjI2MywgMTYyNjgsIDE2MjczLCAxNjI4MCwgCisgICAgMTYyODYsIDE2Mjk3LCAxNjMwNCwgMTYzMDksIDE2MzEzLCAxNjMxNywgMTYzMjAsIDE2MzI4LCAxNjMzMywgMTYzNDAsIAorICAgIDE2MzQ3LCAxNjM1MywgMTYzNTgsIDE2MzYzLCAxNjM3MCwgMTYzODAsIDE2Mzg1LCAxNjM5MiwgMTYzOTgsIDE2NDA4LCAKKyAgICAxNjQxOCwgMTY0MzIsIDE2NDQ2LCAxNjQ2MCwgMTY0NzQsIDE2NDg5LCAxNjUwNCwgMTY1MjEsIDE2NTM5LCAxNjU1MiwgCisgICAgMTY1NTgsIDE2NTYzLCAxNjU2OCwgMTY1NzIsIDE2NTc3LCAxNjU4NSwgMTY1OTEsIDE2NTk2LCAxNjYwMSwgMTY2MDUsIAorICAgIDE2NjEwLCAxNjYxNCwgMTY2MTksIDE2NjIzLCAxNjYzNCwgMTY2NDAsIDE2NjQ1LCAxNjY1MCwgMTY2NTcsIDE2NjYyLCAKKyAgICAxNjY2NiwgMTY2NzEsIDE2Njc2LCAxNjY4MiwgMTY2ODksIDE2Njk1LCAxNjcwMCwgMTY3MDQsIDE2NzEwLCAxNjcxNSwgCisgICAgMTY3MjAsIDE2NzI0LCAxNjczMCwgMTY3MzUsIDE2NzQwLCAxNjc0NywgMTY3NTIsIDEzMTA0LCAxNjc1NiwgMTY3NjEsIAorICAgIDE2NzY1LCAxNjc3MCwgMTY3NzYsIDE2NzgyLCAxNjc4OSwgMTY3OTksIDE2ODA3LCAxNjgxNCwgMTY4MTksIDE2ODIzLCAKKyAgICAxNjgzMiwgMTY4NDAsIDE2ODQ3LCAxNjg1NCwgMTY4NjAsIDE2ODY2LCAxNjg3MSwgMTY4NzYsIDE2ODgyLCAxNjg4NywgCisgICAgMTY4OTMsIDE2ODk4LCAxNjkwNCwgMTY5MTAsIDE2OTE3LCAxNjkyMywgMTY5MjgsIDE2OTMzLCA5MzQxLCAxNjk0MiwgCisgICAgMTY5NDUsIDE2OTUxLCAxNjk1NiwgMTY5NjEsIDE2OTcxLCAxNjk3OCwgMTY5ODQsIDE2OTg5LCAxNjk5NCwgMTcwMDAsIAorICAgIDE3MDA1LCAxNzAxMSwgMTcwMTYsIDE3MDIyLCAxNzAyOCwgMTcwMzMsIDE3MDQxLCAxNzA0OCwgMTcwNTMsIDE3MDU4LCAKKyAgICAxNzA2NCwgMTcwNjksIDE3MDczLCAxNzA4MiwgMTcwOTMsIDE3MTAwLCAxNzEwNSwgMTcxMTMsIDE3MTE5LCAxNzEyNiwgCisgICAgMTcxMzIsIDE3MTM3LCAxNzE0MSwgMTcxNDcsIDE3MTUyLCAxNzE1NywgMTcxNjIsIDE0NDAsIDc3NzcsIDI4NzcsIDE3MTY2LCAKKyAgICAxNzE3MCwgMTcxNzQsIDE3MTc4LCAxNzE4MiwgMTcxODYsIDE3MTg5LCAxNzE5NiwgMTcyMDQsIDE0Mzg3LCAxNzIxMSwgCisgICAgMTcyMjEsIDE3MjI5LCAxNzIzNiwgMTcyNDQsIDE3MjU0LCAxNzI2MywgMTcyNzYsIDE3MjgxLCAxNzI4NiwgMTcyOTQsIAorICAgIDE3MzAxLCAxMzIwMCwgMTMyMDksIDE3MzA4LCAxNzMxOCwgMTczMzMsIDE3MzM5LCAxNzM0NiwgMTczNTMsIDE3MzU5LCAKKyAgICAxNzM2NywgMTczNzcsIDE3Mzg3LCAxNDM5MiwgMTczOTYsIDE3NDAyLCAxNzQwOCwgMTc0MTYsIDE3NDI0LCAxNzQyOSwgCisgICAgMTc0MzgsIDE3NDQ2LCAxNzQ1OCwgMTc0NjgsIDE3NDc4LCAxNzQ4OCwgMTc0OTcsIDE3NTA5LCAxNzUxOSwgMTc1MjksIAorICAgIDE3NTQwLCAxNzU0NSwgMTc1NTcsIDE3NTY5LCAxNzU4MSwgMTc1OTMsIDE3NjA1LCAxNzYxNywgMTc2MjksIDE3NjQxLCAKKyAgICAxNzY1MywgMTc2NjUsIDE3Njc2LCAxNzY4OCwgMTc3MDAsIDE3NzEyLCAxNzcyNCwgMTc3MzYsIDE3NzQ4LCAxNzc2MCwgCisgICAgMTc3NzIsIDE3Nzg0LCAxNzc5NiwgMTc4MDcsIDE3ODE5LCAxNzgzMSwgMTc4NDMsIDE3ODU1LCAxNzg2NywgMTc4NzksIAorICAgIDE3ODkxLCAxNzkwMywgMTc5MTUsIDE3OTI3LCAxNzkzOCwgMTc5NTAsIDE3OTYyLCAxNzk3NCwgMTc5ODYsIDE3OTk4LCAKKyAgICAxODAxMCwgMTgwMjIsIDE4MDM0LCAxODA0NiwgMTgwNTgsIDE4MDY5LCAxODA4MSwgMTgwOTMsIDE4MTA1LCAxODExNywgCisgICAgMTgxMjksIDE4MTQxLCAxODE1MywgMTgxNjUsIDE4MTc3LCAxODE4OSwgMTgyMDAsIDE4MjEyLCAxODIyNCwgMTgyMzYsIAorICAgIDE4MjQ4LCAxODI2MCwgMTgyNzIsIDE4Mjg0LCAxODI5NiwgMTgzMDgsIDE4MzIwLCAxODMzMSwgMTgzNDMsIDE4MzU1LCAKKyAgICAxODM2NywgMTgzNzksIDE4MzkxLCAxODQwMywgMTg0MTUsIDE4NDI3LCAxODQzOSwgMTg0NTEsIDE4NDYyLCAxODQ3NCwgCisgICAgMTg0ODYsIDE4NDk4LCAxODUxMCwgMTg1MjMsIDE4NTM2LCAxODU0OSwgMTg1NjIsIDE4NTc1LCAxODU4OCwgMTg2MDEsIAorICAgIDE4NjEzLCAxODYyNiwgMTg2MzksIDE4NjUyLCAxODY2NSwgMTg2NzgsIDE4NjkxLCAxODcwNCwgMTg3MTcsIDE4NzMwLCAKKyAgICAxODc0MywgMTg3NTUsIDE4NzY4LCAxODc4MSwgMTg3OTQsIDE4ODA3LCAxODgyMCwgMTg4MzMsIDE4ODQ2LCAxODg1OSwgCisgICAgMTg4NzIsIDE4ODg1LCAxODg5NywgMTg5MTAsIDE4OTIzLCAxODkzNiwgMTg5NDksIDE4OTYyLCAxODk3NSwgMTg5ODgsIAorICAgIDE5MDAxLCAxOTAxNCwgMTkwMjcsIDE5MDM5LCAxOTA1MiwgMTkwNjUsIDE5MDc4LCAxOTA5MSwgMTkxMDQsIDE5MTE3LCAKKyAgICAxOTEzMCwgMTkxNDMsIDE5MTU2LCAxOTE2OSwgMTkxODEsIDE5MTk0LCAxOTIwNywgMTkyMjAsIDE5MjMzLCAxOTI0NiwgCisgICAgMTkyNTksIDE5MjcyLCAxOTI4NSwgMTkyOTgsIDE5MzExLCAxOTMyMywgMTkzMzQsIDE5MzQ3LCAxOTM2MCwgMTkzNzMsIAorICAgIDE5Mzg2LCAxOTM5OSwgMTk0MTIsIDE5NDI1LCAxOTQzOCwgMTk0NTEsIDE5NDY0LCAxOTQ3NiwgMTk0ODksIDE5NTAyLCAKKyAgICAxOTUxNSwgMTk1MjgsIDE5NTQxLCAxOTU1NCwgMTk1NjcsIDE5NTgwLCAxOTU5MywgMTk2MDYsIDE5NjE4LCAxOTYzMSwgCisgICAgMTk2NDQsIDE5NjU3LCAxOTY3MCwgMTk2ODMsIDE5Njk2LCAxOTcwOSwgMTk3MjIsIDE5NzM1LCAxOTc0OCwgMTk3NjAsIAorICAgIDE5NzczLCAxOTc4NiwgMTk3OTksIDE5ODEyLCAxOTgyNSwgMTk4MzgsIDE5ODUxLCAxOTg2NCwgMTk4NzcsIDE5ODkwLCAKKyAgICAxOTkwMiwgMTk5MTUsIDE5OTI4LCAxOTk0MSwgMTk5NTQsIDE5OTY3LCAxOTk4MCwgMTk5OTMsIDIwMDA2LCAyMDAxOSwgCisgICAgMjAwMzIsIDIwMDQ0LCAyMDA1NywgMjAwNzAsIDIwMDgzLCAyMDA5NiwgMjAxMDksIDIwMTIyLCAyMDEzNSwgMjAxNDgsIAorICAgIDIwMTYxLCAyMDE3NCwgMjAxODYsIDIwMTk5LCAyMDIxMiwgMjAyMjUsIDIwMjM4LCAyMDI1MSwgMjAyNjQsIDIwMjc3LCAKKyAgICAyMDI5MCwgMjAzMDMsIDIwMzE2LCAyMDMyOCwgMjAzNDEsIDIwMzU0LCAyMDM2NywgMjAzODAsIDIwMzkzLCAyMDQwNiwgCisgICAgMjA0MTksIDIwNDMyLCAyMDQ0NSwgMjA0NTgsIDIwNDcwLCAyMDQ4MywgMjA0OTYsIDIwNTA5LCAyMDUyMiwgMjA1MzUsIAorICAgIDIwNTQ4LCAyMDU2MSwgMjA1NzQsIDIwNTg3LCAyMDYwMCwgMjA2MTIsIDIwNjI1LCAyMDYzOCwgMjA2NTEsIDIwNjY0LCAKKyAgICAyMDY3NywgMjA2OTAsIDIwNzAzLCAyMDcxNiwgMjA3MjksIDIwNzQyLCAyMDc1NCwgMjA3NjUsIDIwNzczLCAyMDc4MSwgCisgICAgMjA3ODgsIDIwNzk0LCAyMDc5OCwgMjA4MDQsIDIwODEwLCAyMDgxOCwgMjA4MjQsIDIwODI5LCAyMDgzMywgMjA4NDIsIAorICAgIDkxNDgsIDIwODUzLCAyMDg2MCwgMjA4NjgsIDIwODc1LCAyMDg4MiwgMTA5NDEsIDIwODg5LCAyMDg5OCwgMjA5MDMsIAorICAgIDIwOTA4LCA3ODA1LCAyMDkxNSwgMjA5MjAsIDIwOTIzLCAyMDkyOCwgMjA5MzYsIDIwOTQzLCAyMDk1MCwgMjA5NTcsIAorICAgIDIwOTYzLCAyMDk3MiwgMjA5ODEsIDIwOTg3LCAyMDk5NiwgMjEwMDAsIDIxMDA2LCAyMTAxMSwgMjEwMjEsIDIxMDI4LCAKKyAgICAyMTAzNCwgMjEwNDIsIDIxMDQ4LCAyMTA1NSwgMjEwNjUsIDIxMDc0LCAyMTA3OCwgMjEwODUsIDIxMDg5LCAyMTA5NCwgCisgICAgMjExMDAsIDIxMTA4LCAyMTExMiwgMjExMjIsIDE0NDAyLCAyMTEzMSwgMjExMzcsIDIxMTQxLCAyMTE1MCwgMTQ0MDcsIAorICAgIDIxMTU2LCAyMTE2MywgMjExNzQsIDIxMTgyLCAyMTE5MSwgMjExOTksIDg5MzEsIDIxMjA3LCAyMTIxMiwgMjEyMTgsIAorICAgIDIxMjIzLCAyMTIyNywgMjEyMzEsIDIxMjM1LCA5NjMyLCAyMTI0MCwgMjEyNDgsIDIxMjU1LCAyMTI2NCwgMjEyNzEsIAorICAgIDIxMjc4LCAxMDg3MSwgMjEyODUsIDIxMjkxLCAyMTI5NSwgMjEzMDEsIDIxMzA4LCAyMTMxNCwgMjEzMjIsIDIxMzI4LCAKKyAgICAyMTMzNSwgMjEzNDEsIDIxMzQ3LCAyMTM1NiwgMjEzNjAsIDIxMzY4LCAyMTM3NywgMjEzODQsIDIxMzg5LCAyMTM5MywgCisgICAgMjE0MDQsIDIxNDA5LCAyMTQxNCwgMjE0MTksIDIxNDMyLCA3OTk1LCAyMTQzNiwgMjE0NDIsIDIxNDUwLCAyMTQ1NCwgCisgICAgMjE0NjEsIDIxNDcwLCAyMTQ3NSwgMTQ2NzgsIDIxNDgzLCAyMTQ4NywgMjE0OTksIDIxNTA0LCAyMTUwOCwgMjE1MTEsIAorICAgIDIxNTE3LCAyMTUyMywgMjE1MjgsIDIxNTMyLCAyMTUzNSwgMjE1NDYsIDIxNTUxLCA5Mzc2LCAyMTU1OCwgMjE1NjMsIAorICAgIDkzODEsIDIxNTY4LCAyMTU3MywgMjE1NzgsIDIxNTgzLCAyMTU4OCwgMjE1OTMsIDIxNTk4LCAyMTYwMywgMjE2MDgsIAorICAgIDIxNjEzLCAyMTYxOCwgMjE2MjMsIDIxNjI5LCAyMTYzNCwgMjE2MzksIDIxNjQ0LCAyMTY0OSwgMjE2NTQsIDIxNjU5LCAKKyAgICAyMTY2NCwgMjE2NjksIDIxNjc0LCAyMTY4MCwgMjE2ODYsIDIxNjkxLCAyMTY5NiwgMjE3MDEsIDIxNzA2LCAyMTcxMSwgCisgICAgMjE3MTYsIDIxNzIxLCAyMTcyNiwgMjE3MzEsIDIxNzM3LCAyMTc0MiwgMjE3NDcsIDIxNzUyLCAyMTc1OCwgMjE3NjQsIAorICAgIDIxNzY5LCAyMTc3NCwgMjE3NzksIDIxNzg0LCAyMTc4OSwgMjE3OTQsIDIxNzk5LCAyMTgwNCwgMjE4MTAsIDIxODE1LCAKKyAgICAyMTgyMCwgMjE4MjUsIDIxODMwLCAyMTgzNiwgMjE4NDEsIDIxODQ2LCAyMTg1MCwgMTM2OCwgMTI5LCAyMTg1OCwgMjE4NjIsIAorICAgIDIxODY2LCAyMTg3MCwgMjE4NzUsIDIxODc5LCAxMzExMCwgMTI0NjksIDIxODgzLCAyMTg4OCwgMjE4OTIsIDIxODk3LCAKKyAgICAyMTkwMSwgMjE5MDYsIDIxOTEwLCAyMTkxNiwgMjE5MjEsIDIxOTI1LCAyMTkyOSwgMjE5MzcsIDIxOTQxLCAyMTk0NSwgCisgICAgMjE5NTAsIDIxOTU1LCAyMTk1OSwgMjE5NjUsIDIxOTcwLCAyMTk3NCwgMjE5NzksIDIxOTg0LCAyMTk4OCwgMjE5OTUsIAorICAgIDIyMDAyLCAyMjAwOSwgMjIwMTMsIDIyMDE3LCAyMjAyMiwgMjIwMjYsIDIyMDI5LCAyMjAzNSwgMjIwNDgsIDIyMDUzLCAKKyAgICAyMjA2MiwgMjIwNjcsIDk0MjEsIDIyMDcyLCAyMjA3NSwgMjcxMiwgMjcxNywgMjIwNzksIDIyMDg1LCAyMjA5MSwgNzIwOSwgCisgICAgMjIwOTYsIDIyMTAxLCAyMjEwNiwgMjIxMTIsIDIyMTE3LCAxMzg5NiwgMjIxMjIsIDIyMTI3LCAyMjEzMiwgMjIxMzcsIAorICAgIDIyMTQzLCAyMjE0OCwgMjIxNTMsIDIyMTU5LCAyMjE2NCwgMjIxNjgsIDIyMTczLCAyMjE3OCwgMjIxODMsIDIyMTg4LCAKKyAgICAyMjE5MiwgMjIxOTcsIDIyMjAxLCAyMjIwNiwgMjIyMTEsIDIyMjE2LCAyMjIyMSwgMjIyMjUsIDIyMjMwLCAyMjIzNCwgCisgICAgMjIyMzksIDIyMjQ0LCAyMjI0OSwgMjIyNTQsIDI4ODYsIDIyMTY5LCAyMjI1OCwgMjIyNjYsIDIyMjczLCA5NzI2LCAKKyAgICAyMjI4NSwgMjIyOTMsIDIyMTc0LCAyMjMwMCwgMjIzMDUsIDIyMzEzLCAyMjE3OSwgMjIzMTgsIDIyMzIzLCAyMjMzMSwgCisgICAgMjIzMzYsIDIyMTg0LCAyMjM0MSwgMjIzNDYsIDIyMzUwLCAyMjM1NiwgMjIzNjQsIDIyMzY3LCAyMjM3NCwgMjIzNzgsIAorICAgIDIyMzgyLCAyMjM4OCwgMjIzOTUsIDIyNDAwLCA4OTU4LCAxNzI3LCAxNzMyLCAyMjQwNCwgMjI0MTAsIDIyNDE2LCAyMjQyMSwgCisgICAgMjI0MjUsIDIyNDI5LCAyMjQzMywgMjI0MzcsIDIyNDQxLCAyMjQ0NSwgMjI0NDksIDIyNDUyLCAyMjQ1OCwgMjI0NjUsIAorICAgIDIyNDczLCAyMjQ3OSwgMjI0ODUsIDIyNDkwLCAyMjQ5NSwgMjI0OTksIDEzODE2LCAxMzgyMywgMjI1MDQsIDIyNTE2LCAKKyAgICAyMjUxOSwgMjI1MjYsIDE2MzQ5LCAyMjUzMywgMjI1NDEsIDIyNTUyLCAyMjU2MSwgMjI1NzQsIDIyNTg0LCAyMjU5OCwgCisgICAgMjI2MTAsIDIyNjI0LCAyMjYzNiwgMjI2NDYsIDIyNjU4LCAyMjY2NCwgMjI2NzksIDIyNzAzLCAyMjcyMSwgMjI3NDAsIAorICAgIDIyNzUzLCAyMjc2NywgMjI3ODUsIDIyODAxLCAyMjgxOCwgMjI4MzYsIDIyODQ3LCAyMjg2NiwgMjI4ODMsIDIyOTAzLCAKKyAgICAyMjkyMSwgMjI5MzMsIDIyOTQ3LCAyMjk2MSwgMjI5NzMsIDIyOTkwLCAyMzAwOSwgMjMwMjcsIDIzMDM5LCAyMzA1NywgCisgICAgMjMwNzYsIDE0NTQ2LCAyMzA4OSwgMjMxMDksIDIzMTIxLCAxMDUxNiwgMjMxMzMsIDIzMTM4LCAyMzE0MywgMjMxNDgsIAorICAgIDIzMTU0LCAyMzE1OSwgMjMxNjMsIDIzMTcwLCAyMzk4LCAyMzE3NCwgMjMxODAsIDIzMTg0LCAyMzE4NywgMjMxOTEsIAorICAgIDIzMTk5LCAyMzIwNSwgMjIyMDIsIDIzMjA5LCAyMzIxOCwgMjMyMjksIDIzMjM1LCAyMzI0MSwgMjMyNTAsIDIzMjU4LCAKKyAgICAyMzI2NSwgMjMyNzAsIDIzMjc0LCAyMzI4MSwgMjMyODcsIDIzMjk2LCAyMzMwNCwgMjMzMTEsIDIzMzIxLCAyMzMzMCwgCisgICAgMjMzNDAsIDIzMzQ1LCAyMzM1NCwgMjMzNjMsIDIzMzc0LCAyMzM4NSwgMzk2MywgMjMzOTUsIDIzMzk5LCAyMzQwOSwgCisgICAgMjM0MTcsIDIzNDI3LCAyMzQzOCwgMjM0NDMsIDIzNDUzLCAyMzQ2MSwgMjM0NjgsIDIzNDc0LCAyMzQ4MSwgMjM0ODYsIAorICAgIDIyMjEyLCAyMzQ5MCwgMjM0OTksIDIzNTAzLCAyMzUwNiwgMjM1MTEsIDIzNTE4LCAyMzUyNywgMjM1MzUsIDIzNTQzLCAKKyAgICAyMzU1MywgMjM1NjIsIDIzNTY4LCAyMzU3NCwgMjIyMTcsIDIyMjIyLCAyMzU3OCwgMjM1ODgsIDIzNTk4LCAyMzYwOCwgCisgICAgMjM2MTYsIDIzNjIzLCAyMzYzMywgMjM2NDEsIDIzNjQ5LCAyMzY1NSwgMjM2NjMsIDkzMCwgMjM2NzIsIDE0NzM3LCA1NDIsIAorICAgIDIzNjg2LCAyMzY5NSwgMjM3MDMsIDIzNzE0LCAyMzcyNSwgMjM3MzUsIDIzNzQ0LCAyMzc1NiwgMjM3NjUsIDIzNzc0LCAKKyAgICAyMzc4MCwgMjM3ODksIDIzNzk4LCAyMzgwOCwgMjM4MTYsIDIzODI0LCA5MzUzLCAyMzgzMCwgMjM4MzMsIDIzODM3LCAKKyAgICAyMzg0MiwgMjM4NDcsIDk4NDEsIDIyMjM1LCAyMjI0MCwgMjM4NTUsIDIzODYxLCAyMzg2NywgMjM4NzIsIDIzODc3LCAKKyAgICAyMzg4MSwgMjM4ODksIDIzODk1LCAyMzkwMSwgMjM5MDUsIDM1MjUsIDIzOTEzLCAyMzkxOCwgMjM5MjMsIDIzOTI3LCAKKyAgICAyMzkzMSwgOTkyMSwgMjM5MzgsIDIzOTQ2LCAyMzk2MCwgMjM5NjcsIDIzOTczLCA5OTMwLCA5OTM2LCAyMzk4MSwgMjM5ODksIAorICAgIDIzOTk2LCAyNDAwMSwgMjQwMDYsIDIyMjQ1LCAyNDAxMiwgMjQwMjMsIDI0MDI3LCAyNDAzMiwgMjYwMSwgMjQwMzcsIAorICAgIDI0MDQ4LCAyNDA1NCwgMjQwNTksIDI0MDYzLCAyNDA2NywgMjQwNzAsIDI0MDc3LCAyNDA4NCwgMjQwOTEsIDI0MDk3LCAKKyAgICAyNDEwMSwgMjIyNTAsIDI0MTA2LCAyNDExMCwgMjQxMTQsIDEwMzcsIDI0MTE5LCAyNDEyNCwgMjQxMjksIDI0MTM0LCAKKyAgICAyNDEzOSwgMjQxNDQsIDI0MTQ5LCAyNDE1NCwgMjQxNTksIDI0MTY0LCAyNDE2OSwgMjQxNzQsIDI0MTc5LCAyNDE4NCwgCisgICAgMjQxOTAsIDI0MTk1LCAyNDIwMCwgMjQyMDUsIDI0MjEwLCAyNDIxNSwgMjQyMjAsIDI0MjI2LCAyNDIzMSwgMjQyMzYsIAorICAgIDI0MjQxLCAyNDI0NiwgMjQyNTEsIDI0MjU2LCAyNDI2MSwgMjQyNjcsIDI0MjczLCAyNDI3OCwgMjQyODQsIDI0Mjg5LCAKKyAgICAyNDI5NCwgNSwgMjQzMDAsIDI0MzA0LCAyNDMwOCwgMjQzMTIsIDI0MzE3LCAyNDMyMSwgMjQzMjUsIDI0MzI5LCAyNDMzMywgCisgICAgMjQzMzgsIDI0MzQyLCAyNDM0NywgMjQzNTEsIDI0MzU0LCAyNDM1OCwgMjQzNjMsIDI0MzY3LCAyNDM3MiwgMjQzNzYsIAorICAgIDI0MzgwLCAyNDM4NCwgMjQzODksIDI0MzkzLCAyNDM5NywgMjQ0MDcsIDI0NDEyLCAyNDQxNiwgMjQ0MjAsIDI0NDI1LCAKKyAgICAyNDQzMCwgMjQ0MzksIDI0NDQ0LCAyNDQ0OSwgMjQ0NTMsIDI0NDU3LCAyNDQ3MCwgMjQ0ODIsIDI0NDkxLCAyNDUwMCwgCisgICAgMjQ1MDYsIDI0NTExLCAyNDUxNSwgMjQ1MTksIDI0NTI5LCAyNDUzOCwgMjQ1NDYsIDI0NTUyLCAyNDU1NywgMjQ1NjEsIAorICAgIDI0NTY4LCAyNDU3OCwgMjQ1ODcsIDI0NTk1LCAyNDYwMywgMjQ2MTAsIDI0NjE4LCAyNDYyNywgMjQ2MzYsIDI0NjQ0LCAKKyAgICAyNDY0OSwgMjQ2NTMsIDI0NjU3LCAyNDY2MCwgMjQ2NjIsIDI0NjY2LCAyNDY3MCwgMjQ2NzUsIDI0NjgwLCAyNDY4NCwgCisgICAgMjQ2ODgsIDI0NjkxLCAyNDY5NSwgMjQ2OTgsIDI0NzAyLCAyNDcwNSwgMjQ3MDgsIDI0NzEyLCAyNDcxOCwgMjQ3MjIsIAorICAgIDI0NzI2LCAyNDczMCwgMjQ3MzUsIDI0NzQwLCAyNDc0NSwgMjQ3NDksIDI0NzUyLCAyNDc1NywgMjQ3NjMsIDI0NzY4LCAKKyAgICAyNDc3NCwgMjQ3NzksIDI0NzgzLCAyNDc4NywgMjQ3OTEsIDI0Nzk2LCAyNDgwMCwgMjQ4MDUsIDI0ODA5LCAyNDgxMywgCisgICAgMjQ4MjAsIDI0ODI0LCAyNDgyNywgMjQ4MzEsIDI0ODM3LCAyNDg0MywgMjQ4NDcsIDI0ODUxLCAyNDg1NiwgMjQ4NjMsIAorICAgIDI0ODY5LCAyNDg3MywgMjQ4ODIsIDI0ODg2LCAyNDg5MCwgMjQ4OTMsIDI0ODk5LCAyNDkwNCwgMjQ5MTAsIDE0ODksIAorICAgIDE3OTEsIDI0OTE1LCAyNDkyMCwgMjQ5MjUsIDI0OTMwLCAyNDkzNSwgMjQ5NDAsIDI0OTQ1LCAyMTQ4LCAyMTk0LCAyNDk1MCwgCisgICAgMjQ5NTMsIDI0OTU3LCAyNDk2MSwgMjQ5NjYsIDI0OTcwLCAyNDk3NCwgMjQ5NzcsIDI0OTgyLCAyNDk4NywgMjQ5OTEsIAorICAgIDI0OTk0LCAyNDk5OSwgMjUwMDMsIDI1MDA4LCAyNTAxMiwgMTQ3NDksIDI1MDE3LCAyNTAyMCwgMjUwMjMsIDI1MDI3LCAKKyAgICAyNTAzMiwgMjUwMzYsIDI1MDQ5LCAyNTA1MywgMjUwNTYsIDI1MDY0LCAyNTA3MywgMjUwODAsIDI1MDg1LCAyNTA5MSwgCisgICAgMjUwOTcsIDI1MTA1LCAyNTExMiwgMjUxMTksIDI1MTIzLCAyNTEyNywgMjUxMzEsIDI1MTM2LCAyNTE0MSwgMjUxNDUsIAorICAgIDI1MTUzLCAyNTE1OCwgMjUxNzAsIDI1MTgxLCAyNTE4NiwgMjUxOTAsIDI1MTk0LCAyNTIwMCwgMjUyMDUsIDI1MjEwLCAKKyAgICAyNTIxNCwgMjUyMTgsIDI1MjIxLCAyNTIyNywgNzkxNSwgMjMxNiwgMjUyMzEsIDI1MjM2LCAyNTI1MiwgOTQ2OCwgMjUyNzIsIAorICAgIDI1MjgxLCAyNTI5NywgMjUzMDEsIDI1MzA0LCAyNTMxMCwgMjUzMjAsIDI1MzI2LCAyNTMzNSwgMjUzNTAsIDI1MzYyLCAKKyAgICAyNTM3MywgMjUzODEsIDI1MzkwLCAyNTM5NiwgMjU0MDUsIDI1NDE1LCAyNTQyNiwgMjU0MzcsIDI1NDQ2LCAyNTQ1MywgCisgICAgMjU0NjIsIDI1NDcwLCAyNTQ3NywgMjU0ODUsIDI1NDkyLCAyNTQ5OSwgMjU1MTIsIDI1NTE5LCAyNTUyNSwgMjU1MzAsIAorICAgIDI1NTM5LCAyNTU0NSwgMjU1NTAsIDI1NTU4LCAyNTU2NSwgMjM0MTksIDI1NTc3LCAyNTU4OSwgMjU2MDMsIDI1NjExLCAKKyAgICAyNTYxOCwgMjU2MzAsIDI1NjM5LCAyNTY0OCwgMjU2NTYsIDI1NjY0LCAyNTY3MiwgMjU2NzksIDI1Njg4LCAyNTY5NiwgCisgICAgMjU3MDYsIDI1NzE1LCAyNTcyNSwgMjU3MzQsIDI1NzQzLCAyNTc1MSwgMjU3NTYsIDI1NzYwLCAyNTc2MywgMjU3NjcsIAorICAgIDI1NzcxLCAyNTc3NSwgMjU3NzksIDI1NzgzLCAyNTc4OSwgMjU3OTUsIDI1ODAzLCAxNDc5NCwgMjU4MTAsIDI1ODE1LCAKKyAgICAyNTgyMiwgMjU4MjgsIDI1ODM1LCAxNDgwMiwgMjU4NDIsIDI1ODQ1LCAyNTg1NywgMjU4NjUsIDI1ODcxLCAyNTg3NiwgCisgICAgMjU4ODAsIDk4NzEsIDI1ODkxLCAyNTkwMSwgMjU5MTAsIDI1OTE3LCAyNTkyMSwgMTQ4MDcsIDI1OTI0LCAyNTkzMSwgCisgICAgMjU5MzUsIDI1OTQxLCAyNTk0NCwgMjU5NTEsIDI1OTU3LCAyNTk2NCwgMjU5NzAsIDI1OTc0LCAyNTk3OSwgMjU5ODMsIAorICAgIDI1OTkyLCAyNTk5OSwgMjYwMDUsIDc5NTYsIDI2MDEyLCAyNjAyMCwgMjYwMjcsIDI2MDMzLCAyNjAzOCwgMjYwNDQsIAorICAgIDI2MDUwLCAyNjA1OCwgMjYwNjIsIDI2MDY1LCAyNjA2NywgMjU3NjgsIDI2MDc2LCAyNjA4MiwgMjYwOTIsIDI2MDk3LCAKKyAgICAyNjEwNCwgMjYxMTAsIDI2MTE1LCAyNjEyMCwgMjYxMjUsIDI2MTI5LCAyNjEzNCwgMjYxNDEsIDI2MTUwLCAyNjE1NCwgCisgICAgMjYxNjEsIDI2MTcwLCAyNjE3NiwgMjYxODEsIDI2MTg3LCAyNjE5MiwgMjYxOTksIDI2MjEwLCAyNjIxNSwgMjYyMTksIAorICAgIDI2MjI5LCAyNjIzNSwgMjYyMzksIDI2MjQ0LCAyNjI1NCwgMjYyNjMsIDI2MjY3LCAyNjI3NCwgMjYyODIsIDI2Mjg5LCAKKyAgICAyNjI5NSwgMjYzMDAsIDI2MzA4LCAyNjMxNSwgMjYzMjcsIDI2MzM2LCAyNjM0MCwgMTMwNDYsIDI2MzQ4LCAyNjM1OCwgCisgICAgMjYzNjIsIDI1MDYwLCAyNjM3MywgMjYzNzgsIDI2MzgyLCAyNjM4OSwgMjYzOTYsIDIxOTYxLCAyNTY5MywgMjY0MDEsIAorICAgIDI2NDA1LCAyNjQwOCwgMjI4NTMsIDI2NDEzLCAyNjQyNywgMjY0NDMsIDI2NDYxLCAyNjQ4MCwgMjY0OTcsIDI2NTE1LCAKKyAgICAyMjg3MiwgMjY1MzIsIDI2NTUyLCAyMjg4OSwgMjY1NjQsIDI2NTc2LCAxNTczMiwgMjY1ODgsIDIyOTA5LCAyNjYwMiwgCisgICAgMjY2MTQsIDEwNTI5LCAyNjYyOCwgMjY2MzMsIDI2NjM4LCAyNjY0MywgMjY2NDksIDI2NjU1LCAyNjY2MSwgMjY2NjUsIAorICAgIDI2NjcyLCAyNjY3NywgMjY2ODcsIDI2NjkzLCAxMDE3NiwgMjY2OTksIDI2NzAxLCAyNjcwNiwgMjY3MTQsIDI2NzE4LCAKKyAgICAyNjEzNywgMjY3MjQsIDI2NzMxLCAxMTUxNywgMTE1MjcsIDI2NzM4LCAyNjc0OCwgMjY3NTMsIDI2NzU3LCAyNjc2MCwgCisgICAgMjY3NjYsIDI2Nzc0LCAyNjc4NiwgMjY3OTYsIDI2ODEyLCAyNjgyNSwgMjY4MzksIDE1NzUwLCAyNjg1MywgMjY4NjAsIAorICAgIDI2ODY0LCAyNjg2NywgMjY4NzIsIDI2ODc2LCAyNjg4MywgMjY4OTAsIDI2OTAwLCAyNjkwNSwgMjY5MTAsIDI2OTE1LCAKKyAgICAyNjkyMywgMjY5MzEsIDI2OTQwLCAyNjk0NSwgOTU2NSwgMjY5NDksIDI2OTUyLCAyNjk1NSwgMjY5NjAsIDI2OTY3LCAKKyAgICAyNjk3MiwgMjY5ODgsIDI2OTk2LCAyNzAwNCwgOTQxNiwgMjcwMTIsIDI3MDE3LCAyNzAyMSwgMjcwMjcsIDI3MDMzLCAKKyAgICAyNzAzNiwgMjcwNDIsIDI3MDU0LCAyNzA2MiwgMjcwNjksIDI3MDc1LCAyNzA4MiwgMjcwOTMsIDI3MTA3LCAyNzEyMCwgCisgICAgMjcxMjksIDI3MTM4LCAyNzE1MCwgMjcxNjEsIDI3MTcxLCAyNzE4MCwgMjcxODksIDI3MTk3LCAyNzIwOCwgNzkzOCwgCisgICAgMjcyMTUsIDI3MjIxLCAyNzIyNiwgMjcyMzIsIDI3MjM5LCAyNzI0OSwgMjcyNTksIDI3MjY4LCAyNzI3NCwgMjcyODEsIAorICAgIDI3Mjg2LCAyNzI5MywgMjczMDEsIDI3MzA5LCAyNzMyMSwgNjI0NiwgMjczMjgsIDI3MzM3LCAyNzM0NSwgMjczNTEsIAorICAgIDI3MzU3LCAyNzM2MiwgMjczNjYsIDI3MzY5LCAyNzM3NSwgMjczODIsIDI3Mzg3LCAyNzM5MiwgMjczOTYsIDI3NDA4LCAKKyAgICAyNzQxOSwgMjc0MjgsIDI3NDM2LCAxNDkzNCwgMjc0NDEsIDI3NDQ3LCAyNzQ1MywgMTE1MTAsIDg2MzUsIDI3NDU4LCAKKyAgICAyNzQ2MiwgMjc0NjUsIDI3NDY4LCAyNzQ3NCwgMjc0ODIsIDI3NDkwLCAyNzQ5NCwgMjc0OTgsIDI3NTAzLCAyNzUwNiwgCisgICAgMjc1MTUsIDI3NTE5LCAyNzUyNywgMjc1MzgsIDI3NTQyLCAyNzU0OCwgMjc1NTQsIDI3NTU4LCAyNzU2NCwgMjc1NzIsIAorICAgIDI3NTk0LCAyNzYxOCwgMjc2MjUsIDI3NjMyLCAyNzYzOCwgMjc2NDYsIDI3NjUyLCAyNzY1NywgMjc2NjgsIDI3Njg2LCAKKyAgICAyNzY5MywgMjc3MDEsIDI3NzA1LCAyNzcxNCwgMjc3MjcsIDI3NzM1LCAyNzc0NywgMjc3NTgsIDI3NzY4LCAyNzc4MiwgCisgICAgMjc3OTEsIDI3Nzk5LCAyNzgxMSwgOTQ4NSwgMjc4MjIsIDI3ODMzLCAyNzg0NSwgMjc4NTUsIDI3ODY0LCAyNzg2OSwgCisgICAgMjc4NzMsIDI3ODgxLCAyNzg5MSwgMjc4OTYsIDI3OTAwLCAyNzkwMywgMjc5MDYsIDI3OTE0LCAyNzkyMiwgMjc5MzEsIAorICAgIDI3OTQxLCAyNzk1MCwgMjc5NTYsIDI3OTcwLCAyNjYzLCAyNzk5MiwgMjgwMDMsIDI4MDEyLCAyODAyMiwgMjgwMzQsIAorICAgIDI4MDQzLCAyODA1MiwgMjgwNjIsIDI4MDcwLCAyODA3OCwgMjgwODcsIDI4MDkyLCAyODEwMywgMjgxMDgsIDI4MTE5LCAKKyAgICAyODEyMywgMjgxMzMsIDI4MTQyLCAyODE1MCwgMjgxNjAsIDI4MTcwLCAyODE3OCwgMjgxODcsIDI4MTk0LCAyODIwMiwgCisgICAgMjgyMDksIDI4MjE4LCAyODIyMiwgMjgyMzAsIDI4MjM3LCAyODI0NSwgMjgyNTIsIDI4MjYzLCAyODI3OCwgMjgyODUsIAorICAgIDI4MjkxLCAyODMwMSwgMjgzMTAsIDI4MzE2LCAyODMyMCwgMjgzMjcsIDI4MzMxLCAxNDAxOCwgMjgzMzcsIDI4MzQxLCAKKyAgICAyODM0NiwgMjgzNTMsIDI4MzU3LCAyODM2MSwgMjgzNjksIDI4Mzc3LCAyODM4MywgMjgzOTIsIDI4Mzk5LCAyODQwNCwgCisgICAgMjg0MDksIDI4NDE5LCAyMzQ4OCwgMjg0MjMsIDI4NDI2LCAyODQzMSwgMjg0MzYsIDI4NDQxLCAyODQ0NiwgMjg0NTEsIAorICAgIDI4NDU2LCAyODQ2MSwgMjg0NjYsIDI4NDcyLCAyODQ3NywgMjg0ODIsIDI4NDg4LCAxMjE4LCA3MDQsIDI4NDkzLCAyODUwMiwgCisgICAgMjM2NCwgMjg1MDksIDI4NTE0LCAyODUxOCwgMjg1MjQsIDEyNjcsIDU0NiwgMzE4LCAyODUyOSwgMjg1MzgsIDI4NTQ2LCAKKyAgICAyODU1NSwgMjg1NjMsIDI4NTc0LCAyODU4MywgMjg1OTEsIDI4NTk1LCAyODU5OCwgMjg2MDYsIDI4NjE0LCAyODYxOSwgCisgICAgMTQ3NjIsIDI4NjI1LCAyODYzMSwgMjg2MzcsIDU4NzIsIDI4NjQyLCAyODY0NiwgMjg2NTIsIDI4NjU2LCAyODY2MywgCisgICAgMTQ1NSwgMjg2NjksIDI4Njc2LCA5NTcyLCAyODY4MCwgMjg2OTAsIDI4Njk4LCAyODcwNCwgMjg3MTMsIDI4NzIxLCAKKyAgICAyODcyNywgMjg3MzUsIDI4NzQyLCAxMTEwMywgMjg3NDgsIDI4NzU1LCAyODc2MCwgMjg3NjcsIDE0OTYsIDIxNDcsIAorICAgIDI4NzczLCAyODc3OSwgMjg3ODYsIDI4Nzk3LCAyODgwOCwgMjg4MTYsIDI4ODIzLCAyODgzMywgMjg4NDIsIDI4ODUwLCAKKyAgICAyODg1OSwgMjg4NjYsIDI4ODczLCAyODg4NiwgMjg4OTcsIDEyNzIsIDI4OTE2LCAyODkyMSwgMjg5MjksIDM1NzUsIAorICAgIDI4OTMzLCAyODkzOCwgMjg5NDIsIDE0NTksIDI0Njg5LCAyODk1MiwgMjg5NTYsIDI4OTYxLCAyODk2NSwgMzQ5MywgCisgICAgMjg5NzEsIDI4OTc5LCAyODk4NiwgMjg5OTcsIDI5MDA1LCAyOTAxMywgMzU3NiwgMjc5LCAyOTAxOCwgMjkwMjYsIDI5MDM0LCAKKyAgICAyOTA0MSwgMjkwNDcsIDI5MDUyLCAyMjE2LCAyOTA1OSwgMjkwNjUsIDI1OTc1LCAyNjIwNSwgMjkwNzEsIDEwNiwgMjkwNzUsIAorICAgIDI5MDc5LCAyOTA4NSwgNjE1LCA5MzIxLCAyOTA5MCwgMjkwOTcsIDI5MTAzLCAyMzI3LCAyOTEwNywgMjkxMTEsIDE1MTc0LCAKKyAgICAyOTExNCwgMjkxMTksIDI5MTI2LCAyOTEzMiwgMjkxMzcsIDI5MTQ1LCAyOTE1MiwgMjkxNTgsIDIyMzM4LCAyOTE2MiwgCisgICAgMjkxNjYsIDM2NDYsIDE2NjEyLCAyOTE3MCwgMjkxNzUsIDI5MTc4LCAyOTE4NiwgMjkxOTQsIDI5MTk5LCAyOTIwMiwgCisgICAgMjkyMDksIDI5MjE5LCAyOTIzMSwgMjkyMzYsIDI5MjQwLCAyOTI0OCwgMjkyNTUsIDI5MjYxLCAyOTI2OCwgMjkyNzUsIAorICAgIDI5Mjc4LCAyOTI4MiwgMjkyODYsIDE0NjMsIDI5Mjk2LCAyOTI5OCwgMjkzMDMsIDI5MzA5LCAyOTMxNSwgMjkzMjAsIAorICAgIDI5MzI1LCAyOTMzMCwgMjkzMzUsIDI5MzQwLCAyOTM0NSwgMjkzNTAsIDI5MzU1LCAyOTM2MCwgMjkzNjUsIDI5MzcwLCAKKyAgICAyOTM3NSwgMjkzODAsIDI5Mzg1LCAyOTM5MSwgMjkzOTcsIDI5NDAzLCAyOTQwOSwgMjk0MTQsIDI5NDE5LCAyOTQyNCwgCisgICAgMjk0MzAsIDI5NDM1LCAyOTQ0MCwgMjk0NDUsIDI5NDUxLCAyOTQ1NiwgMjk0NjIsIDI5NDY3LCAyOTQ3MiwgMjk0NzcsIAorICAgIDI5NDgyLCAyOTQ4OCwgMjk0OTMsIDI5NDk5LCAyOTUwNCwgMjk1MDksIDI5NTE0LCAyOTUxOSwgMjk1MjUsIDI5NTMwLCAKKyAgICAyOTUzNiwgMjk1NDEsIDI5NTQ2LCAyOTU1MSwgMjk1NTYsIDI5NTYxLCAyOTU2NiwgMjk1NzEsIDI5NTc2LCAyOTU4MSwgCisgICAgMjk1ODcsIDI5NTkzLCAyOTU5OSwgMjk2MDQsIDI5NjA5LCAyOTYxNCwgMjk2MTksIDI5NjI1LCAyOTYzMSwgMjk2MzcsIAorICAgIDI5NjQzLCAyOTY0OSwgMjk2NTUsIDI5NjYwLCAyOTY2NiwgMjk2NzEsIDI5Njc2LCAyOTY4MSwgMjk2ODYsIDI5NjkyLCAKKyAgICAyNDQzLCAyOTY5NywgMjQ1MCwgMjQ1NywgMjc1NCwgMjk3MDIsIDI0NjMsIDI0NzMsIDI5NzA4LCAyOTcxMiwgMjk3MTcsIAorICAgIDI5NzIyLCAyOTcyOCwgMjk3MzMsIDI5NzM4LCAyOTc0MiwgMjk3NDcsIDI5NzUzLCAyOTc1OCwgMjk3NjMsIDI5NzY4LCAKKyAgICAyOTc3NCwgMjk3NzksIDI5NzgzLCAyOTc4NywgMjk3OTIsIDI5Nzk3LCAyOTgwMiwgMjk4MDcsIDI5ODEyLCAyOTgxOCwgCisgICAgMjk4MjQsIDI5ODI5LCAyOTgzMywgMjk4MzgsIDI5ODQ0LCAyOTg0OCwgMjk4NTMsIDI5ODU4LCAyOTg2MywgMjk4NjgsIAorICAgIDI5ODcyLCAyOTg3NSwgMjk4ODAsIDI5ODg1LCAyOTg5MCwgMjk4OTUsIDI5OTAwLCAyOTkwNiwgMjk5MTIsIDI5OTE3LCAKKyAgICAyOTkyMiwgMjk5MjYsIDI5OTMxLCAyOTkzNiwgMjk5NDEsIDI5OTQ2LCAyOTk1MSwgMjk5NTUsIDI5OTYwLCAyOTk2NSwgCisgICAgMjk5NzAsIDI5OTc0LCAyOTk3OCwgMjk5ODIsIDI5OTg3LCAyOTk5NSwgMzAwMDAsIDMwMDA2LCAzMDAxMiwgMzAwMTgsIAorICAgIDMwMDIzLCAzMDAyNywgMzAwMzAsIDMwMDM1LCAzMDA0MCwgMzAwNDQsIDMwMDQ5LCAzMDA1MywgMzAwNTgsIDMwMDYyLCAKKyAgICAzMDA2NSwgMzAwNzAsIDE3Mjg5LCAzMDA3NSwgMzAwODAsIDMwMDg1LCAzMDA5MywgMjEyNjcsIDI4NjczLCA5MDE5LCAKKyAgICAzMDA5OCwgMzAxMDMsIDMwMTA3LCAzMDExMiwgMzAxMTYsIDMwMTIwLCAzMDEyNSwgMzAxMjksIDMwMTMyLCAzMDEzNSwgCisgICAgMzAxMzksIDMwMTQ0LCAzMDE0OCwgMzAxNTYsIDMwMTYwLCAzMDE2MywgMzAxNjgsIDMwMTcyLCAzMDE3NiwgMzAxODEsIAorICAgIDMwMTg2LCAzMDE5MCwgMzAxOTYsIDMwMjAxLCAzMDIwNiwgMzAyMTMsIDMwMjIwLCAzMDIyNCwgMzAyMjcsIDMwMjMzLCAKKyAgICAzMDI0MiwgMzAyNDksIDMwMjU3LCAzMDI2NCwgMzAyNjgsIDMwMjczLCAzMDI3NywgMzAyODEsIDMwMjg3LCAzMDI5MywgCisgICAgMzAyOTcsIDMwMzAzLCAzMDMwOCwgMzAzMTMsIDMwMzIwLCAzMDMyNiwgMzAzMzIsIDMwMzM4LCAzMDM0NCwgMzAzNTEsIAorICAgIDMwMzU3LCAzMDM2MywgMzAzNjksIDMwMzc1LCAzMDM4MSwgMzAzODcsIDMwMzkzLCAzMDQwMCwgMzA0MDYsIDMwNDEzLCAKKyAgICAzMDQxOSwgMzA0MjUsIDMwNDMxLCAzMDQzNywgMzA0NDMsIDMwNDQ5LCAzMDQ1NSwgMzA0NjEsIDMwNDY3LCAxMTQxMSwgCisgICAgMzA0NzMsIDMwNDc4LCAzMDQ4MywgMzA0ODYsIDMwNDk0LCAzMDQ5OSwgMzA1MDgsIDMwNTE0LCAzMDUxOSwgMzA1MjQsIAorICAgIDMwNTI5LCAzMDUzMywgMzA1MzgsIDMwNTQzLCAzMDU0OCwgMzA1NTMsIDMwNTU4LCAzMDU2NSwgMzA1NzIsIDMwNTc4LCAKKyAgICAzMDU4NCwgMzA1ODksIDE2MjkwLCAzMDU5NiwgMzA2MDIsIDMwNjA5LCAzMDYxNSwgMzA2MjEsIDMwNjI2LCAzMDYzNCwgCisgICAgMzA2MzksIDE2MDY5LCAzMDY0MywgMzA2NDgsIDMwNjUzLCAzMDY1OSwgMzA2NjQsIDMwNjY5LCAzMDY3MywgMzA2NzgsIAorICAgIDMwNjgzLCAzMDY4OSwgMzA2OTQsIDMwNjk5LCAzMDcwMywgMzA3MDgsIDMwNzEzLCAzMDcxNywgMzA3MjIsIDMwNzI3LCAKKyAgICAzMDczMiwgMzA3MzYsIDMwNzQxLCAzMDc0NiwgMzA3NTEsIDMwNzU1LCAzMDc1OSwgMTUyODAsIDMwNzYzLCAzMDc3MiwgCisgICAgMzA3NzgsIDMwNzg0LCAzMDc5MywgMzA4MDEsIDMwODEwLCAzMDgxOCwgMzA4MjMsIDMwODI3LCAzMDgzNCwgMzA4NDAsIAorICAgIDMwODQ0LCAzMDg0NywgMzA4NTIsIDMwODYxLCAzMDg2OSwgMzA4NzQsIDE0OTUsIDMwODgwLCAzMDg4MywgMzA4ODcsIAorICAgIDIyNDExLCAyMjQxNywgMzA4OTMsIDMwODk3LCAzMDkwOCwgMzA5MTksIDMwOTMwLCAzMDk0MiwgMzA5NDksIDMwOTU2LCAKKyAgICAzMDk2MSwgMzA5NjUsIDU5MDksIDc1NSwgMjEyNjYsIDMwOTczLCAzMDk3OCwgMzA5ODIsIDMwOTg3LCAzMDk5MSwgMzA5OTcsIAorICAgIDMxMDAyLCAzMTAwOCwgMzEwMTMsIDMxMDE5LCAzMTAyNCwgMzEwMzAsIDMxMDM1LCAzMTA0MSwgMzEwNDcsIDMxMDUzLCAKKyAgICAzMTA1OCwgMzEwMTQsIDMxMDIwLCAzMTA2MiwgMzEwNjcsIDMxMDczLCAzMTA3OCwgMzEwODQsIDMxMDg5LCAzMTA5NSwgCisgICAgMzExMDAsIDMxMDI1LCAxMDQxNCwgMzExMDQsIDMxMDM2LCAzMTA0MiwgMzEwNDgsIDI4MzEsIDM0MjMsIDMxMTEwLCAKKyAgICAzMTExMywgMzExMTksIDMxMTI1LCAzMTEzMSwgMzExMzgsIDMxMTQ0LCAzMTE1MCwgMzExNTYsIDMxMTYyLCAzMTE2OCwgCisgICAgMzExNzQsIDMxMTgwLCAzMTE4NiwgMzExOTIsIDMxMTk4LCAzMTIwNCwgMzEyMTAsIDMxMjE3LCAzMTIyMywgMzEyMjksIAorICAgIDMxMjM1LCAzMTI0MSwgMzEyNDcsIDMxMjUwLCAzMTI1NSwgMzEyNTgsIDMxMjY1LCAzMTI3MywgMzEyNzgsIDMxMjgzLCAKKyAgICAzMTI4OSwgMzEyOTQsIDMxMjk5LCAzMTMwMywgMzEzMDgsIDMxMzE0LCAzMTMxOSwgMzEzMjUsIDMxMzMwLCAzMTMzNiwgCisgICAgMzEzNDEsIDMxMzQ3LCAzMTM1MywgMzEzNTcsIDMxMzYyLCAzMTM2NywgMzEzNzIsIDMxMzc3LCAzMTM4MSwgMzEzODYsIAorICAgIDMxMzkxLCAzMTM5NiwgMzE0MDIsIDMxNDA4LCAzMTQxNCwgMzE0MjAsIDMxNDI1LCAzMTQyOSwgMzE0MzIsIDMxNDM4LCAKKyAgICAzMTQ0NCwgMzE0NTMsIDMxNDYxLCAzMTQ2OCwgMzE0NzMsIDMxNDc3LCAzMTQ4MSwgMzE0ODYsIDE1MTMzLCAzMTQ5MSwgCisgICAgMzE0OTksIDMxNTA1LCAzNjgzLCAxMzc3LCAzMTUxMCwgMzE1MTQsIDgwMDUsIDMxNTIwLCAzMTUyNiwgMzE1MzMsIDgwMTQsIAorICAgIDMxNTM3LCAzMTU0MywgMzE1NTAsIDMxNTU2LCAzMTU2NSwgMzE1NzMsIDMxNTg1LCAzMTU4OSwgMzE1OTYsIDMxNjAyLCAKKyAgICAzMTYwNiwgMzE2MDksIDMxNjE4LCAzMTYyNiwgMzEwMTUsIDMxNjMxLCAzMTY0MSwgMzE2NTEsIDMxNjYxLCAzMTY2NywgCisgICAgMzE2NzIsIDMxNjgyLCAzMTY4NywgMzE3MDAsIDMxNzE0LCAzMTcyNSwgMzE3MzcsIDMxNzQ5LCAzMTc2MywgMzE3NzYsIAorICAgIDMxNzg4LCAzMTgwMCwgMTQ1ODcsIDMxODE0LCAzMTgxOSwgMzE4MjQsIDMxODI4LCAzMTgzMiwgMzE4MzYsIDE3ODAsIAorICAgIDI3MTU5LCAzMTg0MCwgMzE4NDUsIDMxMDYzLCAzMTg1MCwgMzE4NTMsIDMxODU4LCAzMTg2MywgMzE4NjgsIDMxODc0LCAKKyAgICAzMTg4MCwgMTAwOTEsIDMxODg1LCAzMTg5MiwgMTU2ODQsIDMxODk4LCAzMTkwMywgMzE5MDgsIDMxOTEyLCAzMTkxNywgCisgICAgMzE5MjIsIDMxMDY4LCAzMTkyNywgMzE5MzIsIDMxOTM3LCAzMTk0MywgMzEwNzQsIDMxOTQ4LCAzMTk1MSwgMzE5NTgsIAorICAgIDMxOTY2LCAzMTk3MiwgMzE5NzgsIDMxOTg0LCAzMTk5NSwgMzIwMDAsIDMyMDA3LCAzMjAxNCwgMzIwMjEsIDMyMDI5LCAKKyAgICAzMjAzOCwgMzIwNDcsIDMyMDUzLCAzMjA1OSwgMzIwNjcsIDMxMDc5LCAzMjA3MiwgMzIwNzgsIDMyMDg0LCAzMTA4NSwgCisgICAgMzIwODksIDMyMDk0LCAzMjEwMiwgMzIxMTAsIDMyMTE2LCAzMjEyMywgMzIxMjksIDMyMTM2LCAzMjE0MywgMzIxNDksIAorICAgIDMyMTU3LCAzMjE2NywgMzIxNzQsIDMyMTc5LCAzMjE4NSwgMzIxOTAsIDMyMTk1LCAzMjIwMiwgMzIyMTEsIDMyMjE5LCAKKyAgICAzMjIyNCwgMzIyMzAsIDMyMjM3LCAzMjI0NSwgMzIyNTEsIDMyMjU2LCAzMjI2MiwgMzIyNzEsIDI3OTM2LCAzMjI3OCwgCisgICAgMzIyODIsIDMyMjg3LCAzMjI5NiwgMzIzMDEsIDMyMzA2LCAzMjMxMSwgMTIzOTgsIDMyMzE5LCAzMjMyNCwgMzIzMjksIAorICAgIDMyMzM0LCAzMjMzOCwgMzIzNDMsIDMyMzQ4LCAzMjM1NSwgMzIzNjAsIDMyMzY1LCAzMjM3MCwgMzEwOTAsIDIxMjAzLCAKKyAgICAzMjM3NiwgMjUxOSwgMjQ0LCAzMjM3OSwgMzIzODIsIDMyMzg2LCAzMjM5MCwgMzI0MDAsIDMyNDA4LCAzMjQxMiwgMzI0MTksIAorICAgIDMyNDI2LCAzMjQzMCwgMzI0MzMsIDMyNDM5LCAzMjQ0NywgMzI0NTUsIDMyNDU5LCAzMjQ2MywgMzI0NjYsIDMyNDczLCAKKyAgICAzMjQ3NywgMzI0ODEsIDMyNDg4LCAzMjQ5NiwgMzEwMjYsIDMyNTAzLCAzMjUxMSwgMTAxNTEsIDY2MCwgMzA4LCAzMjUyMywgCisgICAgMzI1MjgsIDMyNTMzLCAzMjUzOSwgMzI1NDQsIDMyNTQ5LCAzNzA0LCAzMjU1NCwgMzI1NTcsIDMyNTYyLCAzMjU2NywgCisgICAgMzI1NzIsIDMyNTc3LCAzMjU4MiwgMzI1ODksIDIyNTEyLCAzMjU5NCwgMzI1OTksIDMyNjA0LCAzMjYwOSwgMzI2MTQsIAorICAgIDMyNjIwLCAzMjYyNSwgMzI2MzEsIDMxMjYxLCAzMjYzNywgMzI2NDIsIDMyNjQ4LCAzMjY1NCwgMzI2NjQsIDMyNjY5LCAKKyAgICAzMjY3NCwgMzI2NzgsIDMyNjgzLCAzMjY4OCwgMzI2OTMsIDMyNjk4LCAzMjcxMSwgMzI3MTYsIDIyMjg5LCAxNjY5MiwgCisgICAgMzcxMCwgMzI3MjAsIDMyNzI1LCAzMjczMCwgMzI3MzYsIDMyNzQxLCAzMjc0NiwgMzI3NTAsIDMyNzU1LCAzMjc2MCwgCisgICAgMzI3NjYsIDMyNzcxLCAzMjc3NiwgMTM4MiwgMzI3ODAsIDMyNzg1LCAzMjc5MCwgMzI3OTUsIDMyNzk5LCAzMjgwNCwgCisgICAgMzI4MDksIDMyODE0LCAzMjgyMCwgMzI4MjYsIDMyODMxLCAzMjgzNSwgMzI4MzksIDMyODQ0LCAzMjg0OSwgMzI4NTQsIAorICAgIDMyODU4LCAzMjg2NiwgMzI4NzAsIDMyODc2LCAzMjg4MCwgMzI4ODcsIDE2NDg1LCAzMTAzNywgMzI4OTMsIDMyOTAwLCAKKyAgICAzMjkwOCwgMzI5MTUsIDMyOTIxLCAzMjkzNCwgMzI5NDYsIDMyOTUyLCAzMjk1NiwgMjc3MywgMzI5NjAsIDMyOTY0LCAKKyAgICAzMjQ2OCwgMzI5NzMsIDMyOTg0LCAzMjk4OSwgMzI5OTQsIDMyOTk5LCAzMzAwMywgMzMwMDgsIDIyNDIyLCAzMzAxMiwgCisgICAgMzMwMTYsIDMzMDIxLCAzMTA0MywgMjEyODcsIDMzMDI1LCAzMzAzMCwgMzMwMzYsIDMzMDQxLCAzMzA0NSwgMzMwNDksIAorICAgIDMzMDUyLCAzMzA1NiwgMzMwNjIsIDMzMDczLCAzMzA4NSwgMzEwNDksIDMzMDkwLCAzMzA5MywgMzMwOTcsIDM0NywgCisgICAgMzMxMDIsIDMzMTA3LCAzMzExMiwgMzMxMTcsIDMzMTIyLCAzMzEyNywgMzMxMzMsIDMzMTM4LCAzMzE0MywgMzMxNDksIAorICAgIDMzMTU0LCAzMzE2MCwgMzMxNjUsIDMzMTcxLCAzMzE3NiwgMzMxODEsIDMzMTg2LCAzMzE5MSwgMzMxOTYsIDMzMjAxLCAKKyAgICAzMzIwNiwgMzMyMTEsIDMzMjE3LCAzMzIyMiwgMzMyMjcsIDMzMjMyLCAzMzIzNywgMzMyNDIsIDMzMjQ3LCAzMzI1MiwgCisgICAgMzMyNTgsIDMzMjY0LCAzMzI2OSwgMzMyNzQsIDMzMjc5LCAzMzI4NCwgMzMyODksIDMzMjk0LCAzMzI5OSwgMzMzMDQsIAorICAgIDMzMzA5LCAzMzMxNCwgMzMzMTksIDMzMzI0LCAzMzMyOSwgMzMzMzQsIDMzMzM5LCAzMzM0NCwgMzMzNDksIDMzMzU0LCAKKyAgICAzMzM2MCwgMzEzLCAyNiwgMzMzNjUsIDMzMzY5LCAzMzM3MywgMzMzODEsIDMzMzg1LCAzMzM4OSwgMzMzOTIsIDMzMzk1LCAKKyAgICAzMzM5NywgMzM0MDIsIDMzNDA2LCAzMzQxMSwgMzM0MTUsIDMzNDIwLCAzMzQyNCwgMzM0MjksIDMzNDMzLCAzMzQzNiwgCisgICAgMzM0MzgsIDMzNDQyLCAzMzQ0NywgMzM0NTEsIDMzNDYyLCAzMzQ2NSwgMzM0NjcsIDMzNDcxLCAzMzQ4MywgMzM0OTIsIAorICAgIDMzNDk2LCAzMzUwMCwgMzM1MDYsIDMzNTExLCAzMzUyMCwgMzM1MjYsIDMzNTMxLCAzMzUzNiwgMzM1NDAsIDMzNTQ1LCAKKyAgICAzMzU1MiwgMzM1NTcsIDMzNTYzLCAzMzU2OCwgMzM1NzIsIDMzNTc5LCAyNTcwMSwgMjU3MTEsIDMzNTgzLCAzMzU4OCwgCisgICAgMzM1OTMsIDMzNTk4LCAzMzYwNSwgMzM2MDksIDMzNjE2LCA4MTEzLCAzMzYyMiwgMzM2MzEsIDMzNjM5LCAzMzY1NCwgCisgICAgMzM2NjgsIDMzNjc2LCAzMzY4NywgMzM2OTYsIDMzNzAxLCA3MjI3LCAzMzcxMSwgMzM3MTYsIDMzNzIxLCAzMzcyNSwgCisgICAgMzM3MjgsIDMzNzMyLCAzMzczNywgMzM3NDEsIDMzNzQ4LCAzMzc1MywgMzM3NTgsIDg5MTIsIDMzNzY4LCAzMzc3MCwgCisgICAgMzM3NzMsIDMzNzc3LCAzMzc4MywgMzM3ODcsIDMzNzkyLCAzMzc5NywgMzM4MDMsIDMzODA4LCAzMzgxNCwgMzM4MTksIAorICAgIDMzODI5LCAzMzgzOCwgMzM4NDYsIDMzODUxLCAzMzg1NywgMzM4NjIsIDMzODY5LCAzMzg3MywgMzM4ODEsIDMzODg4LCAKKyAgICAzMzkwMSwgMzM5MDksIDMzOTEzLCAzMzkyMywgMzM5MjgsIDMzOTMyLCAzMzk0MCwgMzM5NDgsIDMzOTUyLCAzMzk2MSwgCisgICAgMzM5NjcsIDMzOTcyLCAzMzk4MCwgMzM5OTAsIDMzOTk5LCAzNDAwOCwgMzQwMTcsIDM0MDI4LCAzNDAzNiwgMzQwNDcsIAorICAgIDM0MDU2LCAzNDA2MywgMzQwNjksIDM0MDc0LCAzNDA4NSwgMzQwOTAsIDM0MDk0LCAzNDA5NywgMzQxMDEsIDM0MTA5LCAKKyAgICAzNDExNSwgMzQxMjMsIDM0MTMwLCAzNDEzNiwgMzQxNDEsIDM0MTQ3LCAyNDE4LCAzNDE1MSwgMzQxNTMsIDM0MTU4LCAKKyAgICAzNDE2MywgMzQxNjgsIDM0MTcxLCAzNDE3MywgMzQxNzcsIDM0MTgwLCAzNDE4NywgMzQxOTEsIDk4ODQsIDM0MTk1LCAKKyAgICAzNDIwMSwgMzQyMTEsIDM0MjE2LCAzNDIyMiwgMzQyMjYsIDM0MjMxLCAzNDI0NCwgMjYwODcsIDM0MjUwLCAzNDI1OSwgCisgICAgMTc0NjIsIDM0MjY2LCAzNDI3NSwgMzE2NDcsIDM0MjgzLCAzNDI4OCwgMzQyOTIsIDM0MzAwLCAzNDMwNywgMzQzMTIsIAorICAgIDM0MzE2LCAzNDMyMSwgMzQzMjUsIDM0MzMzLCAzNDMzOSwgMzQzNDUsIDM0MzUwLCAzNDM1NCwgMzQzNTcsIDM0MzYyLCAKKyAgICAzNDM3NSwgMzQzOTEsIDIyOTc5LCAzNDQwOCwgMzQ0MjAsIDM0NDM3LCAzNDQ0OSwgMzQ0NjMsIDIyOTk2LCAyMzAxNSwgCisgICAgMzQ0NzUsIDM0NDg3LCAyNjgwLCAzNDUwMSwgMzQ1MDYsIDM0NTExLCAzNDUxNiwgMzQ1MjAsIDM0NTI3LCAzNDUzOSwgCisgICAgMzQ1NDUsIDM0NTQ4LCAzNDU1OSwgMzQ1NzAsIDM0NTc1LCAzMjA2NCwgNjk1LCAzNDU3OSwgMzQ1ODMsIDM0NTg3LCAKKyAgICAzNDU5MCwgMzQ1OTUsIDM0NjAwLCAzNDYwNiwgMzQ2MTEsIDM0NjE2LCAzNDYyMiwgMzQ2MjgsIDM0NjMzLCAzNDYzNywgCisgICAgMzQ2NDIsIDM0NjQ3LCAzNDY1MiwgMzQ2NTYsIDM0NjU5LCAzNDY2NSwgMzQ2NzAsIDM0Njc1LCAzNDY4MCwgMzQ2ODQsIAorICAgIDM0Njg5LCAzNDY5NSwgMzQ3MDMsIDI2MzIwLCAzNDcwOCwgMzQ3MTMsIDM0NzIwLCAzNDcyNiwgMzQ3MzIsIDM0NzM3LCAKKyAgICAzNDc0NSwgMjI1MjEsIDM0NzUyLCAzNDc1NywgMzQ3NjIsIDM0NzY3LCAzNDc3MSwgMzQ3NzQsIDM0Nzc5LCAzNDc4MywgCisgICAgMzQ3ODcsIDM0Nzk0LCAzNDgwMCwgMzQ4MDYsIDM0ODEyLCAzNDgxOSwgMzQ4MjQsIDM0ODMwLCAzMzk0MywgMzQ4MzQsIAorICAgIDM0ODM4LCAzNDg0MywgMzQ4NTYsIDM0ODYxLCAzNDg2NywgMzQ4NzUsIDM0ODgyLCAzNDg5MCwgMzQ5MDAsIDM0OTA2LCAKKyAgICAzNDkxMiwgMzQ5MTgsIDM0OTIyLCAzNDkzMSwgMzQ5MzksIDM0OTQ2LCAzNDk1MSwgMzQ5NTYsIDEwNDM3LCAzNDk2MSwgCisgICAgMzQ5NjksIDM0OTc2LCAzNDk4MiwgMzQ5OTIsIDM0OTk3LCAzNTAwMywgMzUwMTEsIDM2MDgsIDM1MDE4LCAzNTAyNSwgCisgICAgMzYxNCwgMzUwMjksIDM1MDM0LCAzNTA0NSwgMzUwNTIsIDM1MDU4LCAzNTA2NywgMzUwNzEsIDQwMTUsIDM1MDc0LCAKKyAgICAzNTA4MSwgMzUwODcsIDM1MDkzLCAzNTEwMSwgMzUxMTEsIDI5MDQyLCAzNTExOCwgMzUxMjYsIDM1MTMxLCAzNTEzNywgCisgICAgMzUxNDIsIDI1OTQ3LCAzNTE0OCwgMzUxNTUsIDM1MTYxLCAzNTE3MCwgMjM2NjAsIDM1MTc3LCAzNTE4MiwgMzUxODYsIAorICAgIDM1MTk0LCAzNTIwMiwgOTYwMCwgNTg5NSwgMzUyMDksIDM1MjEzLCAzNTIxNSwgMzUyMTksIDM1MjI0LCAzNTIyNiwgCisgICAgMzUyMzIsIDM1MjM3LCAzNTI0MiwgMzUyNDksIDMyNTg1LCAzNTI1NSwgMzUyNjAsIDM1MjY0LCAzNTI2OSwgMzUyNzMsIAorICAgIDM1MjgyLCAzNTI4NiwgMzUyOTIsIDM1Mjk5LCAzNTMwNSwgMzUzMTIsIDM1MzE3LCAzNTMyNiwgMzUzMzEsIDM1MzM1LCAKKyAgICAzNTM0MCwgMzUzNDcsIDM1MzU1LCAzNTM2MywgMzUzNjgsIDIxMzQzLCAzNTM3MiwgMzUzNzUsIDM1Mzc5LCAzNTM4MywgCisgICAgMzUzODcsIDM1MzkwLCAzNTM5MiwgMzU0MDAsIDM1NDA0LCAzNTQxMSwgMzU0MTUsIDM1NDE5LCAzNTQyNywgMzU0MzQsIAorICAgIDM1NDQ0LCAzNTQ0OCwgMzU0NTIsIDM1NDYwLCAzNTQ2OCwgMzU0NzQsIDM1NDc5LCAzNTQ4OCwgMTMzNTAsIDM1NDk0LCAKKyAgICAzNTUwMywgMzU1MDgsIDM1NTE1LCAzNTUyMywgMzU1MzEsIDM1NTM5LCAzNTU0NiwgMzU1NTMsIDM1NTYwLCAzNTU2NywgCisgICAgMzU1NzQsIDM1NTc5LCAzNTU4NSwgMzU2MDIsIDM1NjEwLCAzNTYyMCwgMzU2MjgsIDM1NjM1LCA0MDcsIDM1NjM5LCAKKyAgICAzNTY0NSwgMzU2NDksIDM1NjU0LCAzMzY5MiwgMzU2NjAsIDM1NjYzLCAzNTY2NywgMzU2NzUsIDM2MTksIDM1NjgzLCAKKyAgICAzNTY4OSwgMzU2OTUsIDM1NzA0LCAzNTcxNCwgMzU3MjEsIDM1NzI3LCAzNjI1LCAzNjMxLCAzNTczNiwgMzU3NDMsIAorICAgIDM1NzUxLCAzNTc1NiwgMzU3NjAsIDM1NzY3LCAzNTc3NSwgMzU3ODIsIDM1Nzg4LCAzNTc5NywgMzU4MDcsIDM1ODEzLCAKKyAgICAzNTgyMSwgMzU4MzAsIDM1ODM3LCAzNTg0NSwgMzU4NTIsIDIyMDE5LCAzNTg1NiwgMzU4NjMsIDM1ODY5LCAzNTg3OSwgCisgICAgMzU4ODgsIDM1ODk5LCAzNTkwMywgMzU5MTMsIDM1OTE5LCAzNTkyNiwgMzU5MzQsIDM1OTQzLCAzNTk1MiwgMzU5NjIsIAorICAgIDM1OTczLCAzNTk4MCwgMzU5ODUsIDM1OTkyLCAzMDI5LCAzNjAwMCwgMzYwMDYsIDM2MDExLCAzNjAxNywgMzYwMjMsIAorICAgIDM2MDI4LCAzNjA0MSwgMzYwNTQsIDM2MDY3LCAzNjA3NCwgMzYwODAsIDM2MDg4LCAzNjA5NiwgMzYxMDEsIDM2MTA1LCAKKyAgICAxNDY5LCAzNjEwOSwgMzYxMTQsIDM2MTE5LCAzNjEyNCwgMzYxMjksIDM2MTM1LCAzNjE0MCwgMzYxNDUsIDM2MTUwLCAKKyAgICAzNjE1NSwgMzYxNjAsIDM2MTY1LCAzNjE3MCwgMzYxNzYsIDM2MTgyLCAzNjE4NywgMzYxOTIsIDM2MTk4LCAzNjIwMywgCisgICAgMzYyMDgsIDM2MjEzLCAzNjIxOSwgMzYyMjQsIDM2MjI5LCAzNjIzNCwgMzYyMzksIDM2MjQ1LCAzNjI1MCwgMzYyNTUsIAorICAgIDM2MjYxLCAzNjI2NiwgMzYyNzEsIDM2Mjc2LCAzNjI4MSwgMzYyODYsIDM2MjkyLCAzNjI5NywgMzYzMDMsIDM2MzA4LCAKKyAgICAzNjMxNCwgMzYzMTksIDM2MzI0LCAzNjMyOSwgMzYzMzUsIDM2MzQxLCAzNjM0NywgMzYzNTMsIDM2MzU5LCAzNjM2NSwgCisgICAgMzYzNzEsIDM2Mzc3LCAzNjM4MiwgMzYzODcsIDM2MzkzLCAzNjM5OCwgMzY0MDMsIDM2NDA4LCAzNjQxMywgMzY0MTgsIAorICAgIDM2NDIzLCAzNjQyOCwgMzY0MzQsIDM2NDM5LCAzNjQ0NCwgMzY0NTAsIDM2NDU2LCAxMDEsIDM2NDYxLCAzNjQ2MywgCisgICAgMzY0NjcsIDM2NDcxLCAzNjQ3NSwgMzY0ODAsIDM2NDg0LCA5NTIxLCAzNjQ4OCwgMzY0OTQsIDE3NDEsIDYyODAsIDM2NTAwLCAKKyAgICAzNjUwMywgMzY1MDgsIDM2NTEyLCAzNjUxNywgMzY1MjEsIDM2NTI1LCAzNjUzMCwgMTAyMzgsIDM2NTM0LCAzNjUzOCwgCisgICAgMzY1NDIsIDM2NTQ2LCAxNTM3MiwgMzY1NTEsIDM2NTU1LCAzNjU2MCwgMzY1NjUsIDM2NTcwLCAzNjU3NCwgMzY1ODEsIAorICAgIDI2MTExLCAzNjU4NywgMzY1OTAsIDM2NTk0LCAzNjU5OSwgMzY2MDUsIDM2NjA5LCAzNjYxNywgMzY2MjMsIDM2NjI4LCAKKyAgICAzNjYzMiwgMzY2MzgsIDM2NjQyLCAzNjY0NiwgMzQ2MiwgMzQ2NywgMjkyMzQsIDM2NjQ5LCAzNjY1MywgMzY2NTcsIAorICAgIDM2NjYxLCAzNjY2OSwgMzY2NzYsIDM2NjgwLCAzNjY4NywgMzY2OTIsIDMxNywgMzY2OTcsIDM2NzAxLCAzNjcwNywgCisgICAgMzY3MTksIDM2NzI1LCAzNjczMSwgMzY3MzUsIDM2NzQxLCAzNjc1MCwgMzY3NTQsIDM2NzU4LCAzNjc2MywgMzY3NjksIAorICAgIDM2Nzc0LCAzNjc3OCwgMzY3ODMsIDM2Nzg3LCAzNjc5MSwgMzY3OTgsIDM2ODA0LCAzNjgwOSwgMzY4MjQsIDM2ODM5LCAKKyAgICAzNjg1NCwgMzY4NzAsIDM2ODg4LCAxMDE4OCwgMzY5MDIsIDM2OTA5LCAzNjkxMywgMzY5MTYsIDM2OTI1LCAzNjkzMCwgCisgICAgMzY5MzQsIDM2OTQyLCAzMzg5NCwgMzY5NTAsIDM2OTU0LCAzNjk2NCwgMzY5NzUsIDI5MjA0LCAzNjk4OCwgMzY5OTIsIAorICAgIDM3MDAxLCAzNzAwOSwgOTc3OCwgMTQ5MDAsIDM3MDEzLCAyMjQzNCwgMzcwMTYsIDMwMTUyLCAzNzAyMSwgOTc3NywgCisgICAgMzcwMjYsIDM3MDMyLCAzNzAzNywgMzcwNDMsIDM3MDQ4LCAzNzA1NCwgMzcwNTksIDM3MDY1LCAzNzA3MCwgMzcwNzYsIAorICAgIDM3MDgyLCAzNzA4OCwgMzcwOTMsIDM3MDQ5LCAzNzA1NSwgMzcwNjAsIDM3MDY2LCAzNzA3MSwgMzcwNzcsIDM3MDgzLCAKKyAgICA4MTI2LCAzODc0LCAzNzA5NywgMzcxMDUsIDM3MTA5LCAzNzExMiwgMzcxMTYsIDM3MTIxLCAzNzEyNiwgMzcxMzIsIAorICAgIDM3MTM4LCAzNzE0MywgMzcxNDcsIDI1OTU5LCAzNzE1MSwgMzcxNTUsIDM3MTYxLCAzNzE2NSwgOTA0MiwgMzcxNzQsIAorICAgIDM3MTgxLCAzNzE4NSwgMTE4NjgsIDM3MTkyLCAzNzE5OCwgMzcyMDMsIDM3MjEwLCAzNzIxNywgMzcyMjQsIDI4NTUwLCAKKyAgICA4MDQ5LCAzNzIzMSwgMzcyMzgsIDM3MjQ1LCAzNzI1MSwgMzcyNTYsIDM3MjYzLCAzNzI3NCwgMzcyODAsIDM3Mjg1LCAKKyAgICAzNzI5MCwgMzcyOTUsIDM3MzAyLCAzNzA1MCwgMzczMDYsIDM3MzE2LCAzNzMyNywgMzczMzMsIDM3MzM4LCAzNzM0MywgCisgICAgMzczNDgsIDM3MzUzLCAzNzM1OCwgMzczNjIsIDM3MzY2LCAzNzM3MiwgMzczODAsIDIzMTksIDg2NSwgMTAyNTQsIDEwMjY2LCAKKyAgICAxMDI3MSwgMTAyNzcsIDM3Mzg5LCAxMDI4MiwgMTAyODcsIDEwMjkzLCAzNzM5NCwgMzc0MDQsIDM3NDA4LCAxMDI5OCwgCisgICAgMzc0MTMsIDE2ODkwLCAzNzQxNiwgMzc0MjEsIDM3NDI1LCAzNzQzMCwgMzc0MzUsIDM3NDQyLCAzNzQ0OSwgMzc0NTMsIAorICAgIDM3NDU2LCAzNzQ2NCwgMTAyMDEsIDM3NDcxLCAzNzQ3NCwgMzc0ODAsIDM3NDkwLCA1OTI5LCAzNzQ5OSwgMzc1MDMsIAorICAgIDM3NTExLCAzNzUxNSwgMzc1MjUsIDM3NTMxLCAzNzU0MiwgMzc1NDgsIDM3NTU0LCAzNzU1OSwgMzc1NjUsIDM3NTcxLCAKKyAgICAzNzU3NywgMzc1ODIsIDM3NTg1LCAzNzU5MiwgMzc1OTgsIDM3NjAzLCAzNzYxMCwgMzc2MTcsIDM3NjIxLCAzNzYzMSwgCisgICAgMzc2NDQsIDM3NjUzLCAzNzY2MiwgMzc2NzMsIDM3Njg2LCAzNzY5NywgMzc3MDYsIDM3NzE3LCAzNzcyMiwgMzc3MzEsIAorICAgIDM3NzM2LCAxMDMwMywgMzc3NDIsIDM3NzQ5LCAzNzc1NywgMzc3NjIsIDM3NzY2LCAzNzc3MywgMzc3ODAsIDM4MjksIDE2LCAKKyAgICAzNzc4NCwgMzc3ODksIDE2NzQ0LCAzNzc5MywgMzc3OTYsIDM3Nzk5LCAyODA1NiwgMzc4MDMsIDI4NTU5LCAzNzgxMSwgCisgICAgMzc4MTUsIDM3ODE5LCAzNzgyMiwgMzc4MjgsIDM3MDcyLCAzNzgzNCwgMzc4NDIsIDM3ODQ4LCAzNzg1NSwgMjgwMzksIAorICAgIDM3ODU5LCAyODIzMywgMzc4NjMsIDM3ODcyLCAzNzg3OCwgMzc4ODQsIDM3ODg5LCAzNzg5MywgMzc4OTksIDM3OTAzLCAKKyAgICAzNzkxMSwgMzc5MTksIDI2MTc3LCAzNzkyNSwgMzc5MzIsIDM3OTM4LCAzNzk0MywgMzc5NDgsIDM3OTUyLCAzNzk1OCwgCisgICAgMzc5NjMsIDM3OTY5LCA0MDU2LCA3OTEsIDM3OTc2LCAzNzk4MCwgMzc5ODMsIDE1MjYyLCAzNzk5NSwgMzU4MjYsIDM4MDA2LCAKKyAgICAzODAwOSwgMzgwMTYsIDM4MDIwLCAzODAyNiwgMzgwMzAsIDM4MDM2LCAzODA0MSwgMzgwNDcsIDM4MDUyLCAzODA1NywgCisgICAgMzgwNjEsIDM4MDY1LCAzODA3MCwgMzgwNzUsIDM4MDg1LCAzODA5MSwgMzgxMDQsIDM4MTEwLCAzODExNiwgMzgxMjMsIAorICAgIDM4MTI4LCAzODEzNCwgMzgxMzksIDE2NjMwLCAxNDcyLCAxMDE5LCAzMTE5MywgMzExOTksIDM4MTQ0LCAzMTIwNSwgCisgICAgMzEyMTgsIDMxMjI0LCAzMTIzMCwgMzgxNTAsIDMxMjM2LCAzMTI0MiwgMzgxNTYsIDM4MTYyLCAyMiwgMzgxNzAsIDM4MTc3LCAKKyAgICAzODE4MSwgMzgxODUsIDM4MTkzLCAzMTk1MywgMzgxOTcsIDM4MjAxLCAzODIwOCwgMzgyMTMsIDM4MjE3LCAzODIyMiwgCisgICAgMzgyMjgsIDM4MjMzLCAzODIzOSwgMzgyNDQsIDM4MjQ4LCAzODI1MiwgMzgyNTYsIDM4MjYxLCAzODI2NSwgMzgyNzAsIAorICAgIDM4Mjc0LCAzODI4MSwgMzgyODYsIDM4MjkwLCAzODI5NSwgMzgyOTksIDM4MzA0LCAzODMwOCwgMzgzMTMsIDM4MzE5LCAKKyAgICAxNTQ4MiwgMTU0ODcsIDM4MzI0LCAzODMyOCwgMzgzMzEsIDM4MzM1LCAyMTE3MCwgMzgzNDAsIDM4MzQ0LCAzODM1MCwgCisgICAgMzgzNTcsIDM4MzYyLCAzODM3MiwgMzgzNzcsIDM4Mzg1LCAzODM4OSwgMzgzOTIsIDMxOTY4LCAzODM5NiwgNDEwOSwgCisgICAgMzg0MDEsIDM4NDA2LCAzODQxMCwgMzg0MTUsIDM4NDE5LCAzODQyNCwgMTMzNjgsIDM4NDM1LCAzODQzOSwgMzg0NDIsIAorICAgIDM4NDQ3LCAzODQ1MSwgMzg0NTUsIDM4NDU4LCAzODQ2MiwgODE0NSwgMTMzODQsIDM4NDY1LCAzODQ2OCwgMzg0NzQsIAorICAgIDM4NDc5LCAzODQ4NSwgMzg0OTAsIDM4NDk2LCAzODUwMSwgMzg1MDcsIDM4NTEyLCAzODUxOCwgMzg1MjQsIDM4NTMwLCAKKyAgICAzODUzNSwgMzg1MzksIDM4NTQzLCAzODU1MiwgMzg1NjgsIDM4NTg0LCAzODU5NCwgMjc5NDYsIDM4NjAxLCAzODYwNSwgCisgICAgMzg2MTAsIDM4NjE1LCAzODYxOSwgMzg2MjMsIDM1OTQ3LCAzODYyOSwgMzg2MzQsIDM4NjM4LCAzODY0NSwgMzg2NTAsIAorICAgIDM4NjU0LCAzODY1OCwgMjY5NzksIDM4NjY0LCAyMTQzOCwgMzg2NjksIDM4Njc2LCAzODY4NCwgMzg2OTAsIDM4Njk3LCAKKyAgICAzODcwNSwgMzg3MTEsIDM4NzE1LCAzODcyMSwgMzg3MjksIDM4NzMzLCAzODc0MiwgOTUwMiwgMzg3NTAsIDM4NzU0LCAKKyAgICAzODc2MiwgMzg3NjksIDM4Nzc0LCAzODc3OSwgMzg3ODMsIDM4Nzg2LCAzODc5MCwgMzg3OTMsIDM4Nzk3LCAzODgwNCwgCisgICAgMzg4MDksIDM4ODE1LCAyNjM5OCwgMzEyNTYsIDM4ODE5LCAzODgyNiwgMzg4MzIsIDM4ODM4LCAzODg0MywgMzg4NDYsIAorICAgIDM4ODQ4LCAzODg1NSwgMzg4NjIsIDM4ODY4LCAzODg3MiwgMzg4NzUsIDM4ODc5LCAzODg4MywgMzg4ODcsIDM4ODkyLCAKKyAgICAzODg5NiwgMzg5MDAsIDM4OTAzLCAzODkwNywgMzg5MjEsIDIzMDQ1LCAzODk0MCwgMzg5NTMsIDM4OTY2LCAzODk3OSwgCisgICAgMjMwNjMsIDM4OTk0LCAxMDQ5MCwgMzkwMDksIDM5MDE1LCAzOTAxOSwgMzkwMjMsIDM5MDMwLCAzOTAzNSwgMzkwMzksIAorICAgIDM5MDQ2LCAzOTA1MiwgMzkwNTcsIDM5MDYzLCAzOTA3MywgMzkwODUsIDM5MDk2LCAzOTEwMSwgMzkxMDgsIDM5MTEyLCAKKyAgICAzOTExNiwgMzkxMTksIDE1ODc4LCAzNjc3LCAzOTEyNywgMTU1MDksIDM5MTQwLCAzOTE0NywgMzkxNTEsIDM5MTU1LCAKKyAgICAzOTE2MCwgMzkxNjUsIDM5MTcxLCAzOTE3NSwgMzkxNzksIDM5MTgyLCA3NzQyLCAxNTUyMCwgMzkxODcsIDM5MTkxLCAKKyAgICAzOTE5NywgMzkyMDYsIDM5MjExLCAzOTIxOCwgMzU4MDMsIDM5MjI0LCAzOTIyOSwgMzkyMzMsIDM5MjM4LCAzOTI0NSwgCisgICAgMzkyNDksIDM5MjUyLCAzOTI1NiwgMzkyNjEsIDE0NTUyLCAzOTI2OCwgMzkyNzUsIDEwNjYsIDM5Mjc5LCAzOTI4NCwgCisgICAgMzkyODksIDM5Mjk1LCAzOTMwMCwgMzkzMDUsIDM5MzA5LCAzOTMxOSwgMzkzMjQsIDM5MzMwLCAzOTMzNSwgMzkzNDEsIAorICAgIDM5MzQ2LCAzOTM1MiwgMzkzNjIsIDM5MzY3LCAzOTM3MiwgMzkzNzYsIDcyMjksIDcyNDEsIDM5MzgxLCAzOTM4NCwgCisgICAgMzkzOTEsIDM5Mzk3LCAzNDA1OSwgMzQwNjYsIDM5NDA2LCAzOTQxMCwgMzIwMTYsIDM5NDE4LCAzOTQyOSwgMzk0MzcsIAorICAgIDM1OTk1LCAzOTQ0NCwgMzk0NDksIDM5NDU0LCAzOTQ2NSwgMzk0NzIsIDM5NDgzLCAzMjA0MCwgMjE0NDQsIDM5NDkxLCAKKyAgICA3MzUsIDM5NDk2LCAzOTUwMiwgMjgwMzAsIDM5NTA4LCAzOTUxMywgMzk1MjMsIDM5NTMyLCAzOTUzOSwgMzk1NDUsIAorICAgIDM5NTQ5LCAzOTU1MiwgMzk1NTksIDM5NTY1LCAzOTU3MiwgMzk1NzgsIDM5NTg4LCAzOTU5NiwgMzk2MDIsIDM5NjA4LCAKKyAgICAzOTYxMywgMzk2MTcsIDM5NjI0LCAzOTYzMCwgMzk2MzcsIDM4ODg4LCA1MzUsIDEzODA1LCAzOTY0MywgMzk2NDgsIAorICAgIDM5NjUxLCAzOTY1NywgMzk2NjUsIDEzOTYsIDM5NjcwLCAzOTY3NCwgMzk2NzksIDM5Njg2LCAzOTY5MiwgMzk2OTYsIAorICAgIDM5NzAwLCAzOTcwNSwgMzk3MTQsIDM5NzIxLCAzOTczMSwgMzk3MzcsIDI4MDc0LCAzOTc1NCwgMzk3NjMsIDM5NzcxLCAKKyAgICAzOTc3NywgMzk3ODIsIDM5Nzg5LCAzOTc5NSwgMzk4MDMsIDM5ODEyLCAzOTgyMCwgMzk4MjQsIDM5ODI5LCAzOTgzNywgCisgICAgMzIwNDksIDM5ODQzLCAzOTg2MiwgMTU4MTEsIDM5ODc2LCAzOTg5MiwgMzk5MDYsIDM5OTEyLCAzOTkxNywgMzk5MjIsIAorICAgIDM5OTI3LCAzOTkzMywgMzIwNTUsIDM5OTM4LCAzOTk0NSwgMzk5NTAsIDM5OTU0LCAzNDUsIDI5MzYsIDM5OTYxLCAzOTk2NiwgCisgICAgMzk5NzEsIDI3MzA1LCAzOTc5MiwgMzk5NzUsIDM5OTgwLCAzOTk4OCwgMzk5OTIsIDM5OTk1LCA0MDAwMSwgNDAwMDcsIAorICAgIDQwMDExLCAyODEyOSwgNDAwMTQsIDQwMDE5LCA0MDAyMywgNDAwMjYsIDQwMDMxLCA0MDAzNSwgNDAwNDAsIDQwMDQ1LCAKKyAgICA0MDA0OSwgNDAwNTQsIDQwMDU4LCA0MDA2MiwgMjExNjYsIDIxMTc3LCA0MDA2NiwgNDAwNzEsIDQwMDc3LCAyNjkzNiwgCisgICAgNDAwODIsIDQwMDg2LCAyMTI1MywgMTYwNTksIDQwMDg5LCA0MDA5NCwgNDAwOTksIDQwMTA0LCA0MDEwOSwgNDAxMTQsIAorICAgIDQwMTE5LCA0MDEyNCwgNDQ3LCA0MywgMzEyNzQsIDMxMjc5LCAzMTI4NCwgMzEyOTAsIDMxMjk1LCAzMTMwMCwgNDAxMjksIAorICAgIDMxMzA0LCA0MDEzMywgNDAxMzcsIDQwMTQxLCAzMTMwOSwgMzEzMTUsIDQwMTU1LCAzMTMyNiwgMzEzMzEsIDQwMTYzLCAKKyAgICA0MDE2OCwgMzEzMzcsIDQwMTczLCA0MDE3OCwgNDAxODMsIDQwMTg4LCA0MDE5NCwgNDAyMDAsIDQwMjA2LCAzMTM1NCwgCisgICAgNDAyMTksIDQwMjI1LCAzMTM1OCwgNDAyMjksIDMxMzYzLCA0MDIzNCwgMzEzNjgsIDMxMzczLCA0MDIzNywgNDAyNDIsIAorICAgIDQwMjQ2LCAzMDkyMywgNDAyNTIsIDEzNTkyLCA0MDI1OSwgNDAyNjQsIDMxMzc4LCA0MDI2OCwgNDAyNzMsIDQwMjc4LCAKKyAgICA0MDI4MywgNDAyODcsIDQwMjkyLCA0MDI5NywgNDAzMDMsIDQwMzA4LCA0MDMxMywgNDAzMTksIDQwMzI1LCA0MDMzMCwgCisgICAgNDAzMzQsIDQwMzM5LCA0MDM0NCwgNDAzNDksIDQwMzUzLCA0MDM1OCwgNDAzNjMsIDQwMzY4LCA0MDM3NCwgNDAzODAsIAorICAgIDQwMzg2LCA0MDM5MSwgNDAzOTUsIDQwNDAwLCA0MDQwNCwgMzEzODIsIDMxMzg3LCAzMTM5MiwgNDA0MDgsIDQwNDEyLCAKKyAgICA0MDQxNiwgMzEzOTcsIDMxNDAzLCAzMTQwOSwgMzE0MjEsIDQwNDI4LCAyNTk5NiwgNDA0MzIsIDQwNDM2LCA0MDQ0MSwgCisgICAgNDA0NDYsIDQwNDUxLCA0MDQ1NiwgNDA0NjAsIDQwNDY0LCA0MDQ3NCwgNDA0NzksIDQwNDg0LCA0MDQ4OCwgNDA0OTIsIAorICAgIDQwNDk1LCA0MDUwMywgMzE0NjksIDQwNTA4LCAxNDc5LCA0MDUxNCwgNDA1MjIsIDQwNTMxLCA0MDUzNSwgNDA1MzksIAorICAgIDQwNTQ3LCA0MDU1MywgNDA1NjEsIDQwNTc3LCA0MDU4MSwgNDA1ODUsIDQwNTkwLCA0MDYwNSwgMzE1MDYsIDE3NDksIAorICAgIDEyMDQ4LCA0MDYwOSwgMTM3OCwgNDA2MjEsIDQwNjIyLCA0MDYzMCwgNDA2MzcsIDQwNjQyLCA0MDY0OSwgNDA2NTQsIAorICAgIDkzNzIsIDExMTQsIDEwMzI1LCA0MDY2MSwgNDA2NjYsIDQwNjY5LCA0MDY3MiwgNDA2ODEsIDEyODYsIDQwNjg2LCAzOTAzNiwgCisgICAgNDA2OTMsIDQwNjk4LCAyMjQ4NiwgMjU1NywgNDA3MDIsIDEwNzM0LCA0MDcxMiwgNDA3MTgsIDIzMzcsIDIzNDcsIDQwNzI3LCAKKyAgICA0MDczNiwgNDA3NDYsIDQwNzU3LCAzMjkzLCAzNDIxMiwgMTAzNzcsIDM4MDcsIDE2NjY4LCAxMjkxLCA0MDc2MiwgNDA3NzAsIAorICAgIDQwNzc3LCA0MDc4MiwgNDA3ODYsIDQwNzkwLCAyMzg1OCwgMTA0MDQsIDQwNzk4LCA0MDgwNywgNDA4MTYsIDQwODI0LCAKKyAgICA0MDgzMSwgNDA4NDIsIDQwODQ3LCA0MDg2MCwgNDA4NzMsIDQwODg1LCA0MDg5NywgNDA5MDksIDQwOTIyLCA0MDkzMywgCisgICAgNDA5NDQsIDQwOTU0LCA0MDk2MiwgNDA5NzAsIDQwOTgyLCA0MDk5NCwgNDEwMDUsIDQxMDE0LCA0MTAyMiwgNDEwMjksIAorICAgIDQxMDQxLCA0MTA0OCwgNDEwNTcsIDQxMDY0LCA0MTA3NywgNDEwODIsIDQxMDkyLCA0MTA5NywgNDExMDMsIDQxMTA4LCAKKyAgICAzNzE4MiwgNDExMTIsIDQxMTE5LCA0MTEyMywgNDExMzAsIDQxMTM4LCAyNTE4LCA0MTE0NSwgNDExNTYsIDQxMTY2LCAKKyAgICA0MTE3NSwgNDExODMsIDQxMTkzLCA0MTIwMSwgNDEyMTEsIDQxMjIwLCA0MTIyNSwgNDEyMzEsIDQxMjM3LCAzNzA5LCAKKyAgICA0MTI0OCwgNDEyNTgsIDQxMjY3LCA0MTI3NiwgNDEyODYsIDQxMjk0LCA0MTMwMywgNDEzMDgsIDQxMzEzLCA0MTMxOCwgCisgICAgMTcwNSwgMzcsIDQxMzI2LCA0MTMzNCwgNDEzNDUsIDQxMzU2LCAxNjM0MywgNDEzNjYsIDQxMzcwLCA0MTM3NywgNDEzODMsIAorICAgIDQxMzg4LCA0MTM5MiwgNDE0MDMsIDQxNDEzLCA0MTQyMiwgNDE0MzMsIDE2NzE3LCAxNjcyMiwgNDE0MzgsIDQxNDQ3LCAKKyAgICA0MTQ1MiwgNDE0NjIsIDQxNDY3LCA0MTQ3NSwgNDE0ODMsIDQxNDkwLCA0MTQ5NiwgNzA3OCwgMjI4LCA0MTUwMCwgNDE1MDYsIAorICAgIDQxNTExLCA0MTUxNCwgMjExNywgMzkxNTIsIDQxNTIyLCA0MTUyNiwgNDE1MjksIDE1MTIsIDQxNTM1LCAxMzk2NywgMTI5NiwgCisgICAgNDE1NDAsIDQxNTUzLCA0MTU2NywgMjY0MywgNDE1ODUsIDQxNTk3LCA0MTYwOSwgMjY1NywgMjY3NCwgNDE2MjMsIDQxNjM2LCAKKyAgICAyNjg5LCA0MTY1MCwgNDE2NjIsIDI3MDQsIDQxNjc2LCAxMzAyLCAxMzA4LCAxMzE0LCAxMDY1MiwgNDE2ODEsIDQxNjg2LCAKKyAgICA0MTY5MSwgNDE2OTUsIDQxNzEwLCA0MTcyNSwgNDE3NDAsIDQxNzU1LCA0MTc3MCwgNDE3ODUsIDQxODAwLCA0MTgxNSwgCisgICAgNDE4MzAsIDQxODQ1LCA0MTg2MCwgNDE4NzUsIDQxODkwLCA0MTkwNSwgNDE5MjAsIDQxOTM1LCA0MTk1MCwgNDE5NjUsIAorICAgIDQxOTgwLCA0MTk5NSwgNDIwMTAsIDQyMDI1LCA0MjA0MCwgNDIwNTUsIDQyMDcwLCA0MjA4NSwgNDIxMDAsIDQyMTE1LCAKKyAgICA0MjEzMCwgNDIxNDUsIDQyMTYwLCA0MjE3NSwgNDIxOTAsIDQyMjA1LCA0MjIyMCwgNDIyMzUsIDQyMjUwLCA0MjI2NSwgCisgICAgNDIyODAsIDQyMjk1LCA0MjMxMCwgNDIzMjUsIDQyMzQwLCA0MjM1NSwgNDIzNzAsIDQyMzg1LCA0MjQwMCwgNDI0MTUsIAorICAgIDQyNDMwLCA0MjQ0NSwgNDI0NjAsIDQyNDc1LCA0MjQ5MCwgNDI1MDUsIDQyNTIwLCA0MjUzNSwgNDI1NTAsIDQyNTY1LCAKKyAgICA0MjU4MCwgNDI1OTUsIDQyNjEwLCA0MjYyNSwgNDI2NDAsIDQyNjU1LCA0MjY3MCwgNDI2ODUsIDQyNzAwLCA0MjcxNSwgCisgICAgNDI3MzAsIDQyNzQ1LCA0Mjc2MCwgNDI3NzUsIDQyNzkwLCA0MjgwNSwgNDI4MjAsIDQyODM1LCA0Mjg1MCwgNDI4NjUsIAorICAgIDQyODgwLCA0Mjg5NSwgNDI5MTAsIDQyOTI1LCA0Mjk0MCwgNDI5NTUsIDQyOTcwLCA0Mjk4NSwgNDMwMDAsIDQzMDE1LCAKKyAgICA0MzAzMCwgNDMwNDUsIDQzMDYwLCA0MzA3NSwgNDMwOTAsIDQzMTA1LCA0MzEyMCwgNDMxMzUsIDQzMTUwLCA0MzE2NSwgCisgICAgNDMxODAsIDQzMTk1LCA0MzIxMCwgNDMyMjUsIDQzMjQwLCA0MzI1NSwgNDMyNzAsIDQzMjg1LCA0MzMwMCwgNDMzMTUsIAorICAgIDQzMzMwLCA0MzM0NSwgNDMzNjAsIDQzMzc1LCA0MzM5MCwgNDM0MDUsIDQzNDIwLCA0MzQzNSwgNDM0NTAsIDQzNDY1LCAKKyAgICA0MzQ4MCwgNDM0OTUsIDQzNTEwLCA0MzUyNSwgNDM1NDAsIDQzNTU1LCA0MzU3MCwgNDM1ODUsIDQzNjAwLCA0MzYxNSwgCisgICAgNDM2MzAsIDQzNjQ1LCA0MzY2MCwgNDM2NzUsIDQzNjkwLCA0MzcwNSwgNDM3MjAsIDQzNzM1LCA0Mzc1MCwgNDM3NjUsIAorICAgIDQzNzgwLCA0Mzc5NSwgNDM4MTAsIDQzODI1LCA0Mzg0MCwgNDM4NTUsIDQzODcwLCA0Mzg4NSwgNDM5MDAsIDQzOTE1LCAKKyAgICA0MzkzMCwgNDM5NDUsIDQzOTYwLCA0Mzk3NSwgNDM5OTAsIDQ0MDA1LCA0NDAyMCwgNDQwMzUsIDQ0MDUwLCA0NDA2NSwgCisgICAgNDQwODAsIDQ0MDk1LCA0NDExMCwgNDQxMjUsIDQ0MTQwLCA0NDE1NSwgNDQxNzAsIDQ0MTg1LCA0NDIwMCwgNDQyMTUsIAorICAgIDQ0MjMwLCA0NDI0NSwgNDQyNjAsIDQ0Mjc1LCA0NDI5MCwgNDQzMDUsIDQ0MzIwLCA0NDMzNSwgNDQzNTAsIDQ0MzY1LCAKKyAgICA0NDM4MCwgNDQzOTUsIDQ0NDEwLCA0NDQyNSwgNDQ0NDAsIDQ0NDU1LCA0NDQ3MCwgNDQ0ODUsIDQ0NTAwLCA0NDUxNSwgCisgICAgNDQ1MzAsIDQ0NTQ1LCA0NDU2MCwgNDQ1NzUsIDQ0NTkwLCA0NDYwNSwgNDQ2MjAsIDQ0NjM1LCA0NDY1MCwgNDQ2NjUsIAorICAgIDQ0NjgwLCA0NDY5NSwgNDQ3MTAsIDQ0NzI1LCA0NDc0MCwgNDQ3NTUsIDQ0NzcwLCA0NDc4NSwgNDQ4MDAsIDQ0ODE1LCAKKyAgICA0NDgzMCwgNDQ4NDUsIDQ0ODYwLCA0NDg3NSwgNDQ4OTAsIDQ0OTA1LCA0NDkyMCwgNDQ5MzUsIDQ0OTUwLCA0NDk2NSwgCisgICAgNDQ5ODAsIDQ0OTk1LCA0NTAxMCwgNDUwMjUsIDQ1MDQwLCA0NTA1NSwgNDUwNzAsIDQ1MDg1LCA0NTEwMCwgNDUxMTUsIAorICAgIDQ1MTMwLCA0NTE0NSwgNDUxNjAsIDQ1MTc1LCA0NTE5MCwgNDUyMDUsIDQ1MjIwLCA0NTIzNSwgNDUyNTAsIDQ1MjY1LCAKKyAgICA0NTI4MCwgNDUyOTUsIDQ1MzEwLCA0NTMyNSwgNDUzNDAsIDQ1MzU1LCA0NTM3MCwgNDUzODUsIDQ1NDAwLCA0NTQxNSwgCisgICAgNDU0MzAsIDQ1NDQ1LCA0NTQ2MCwgNDU0NzUsIDQ1NDkwLCA0NTUwNSwgNDU1MjAsIDQ1NTM1LCA0NTU1MCwgNDU1NjUsIAorICAgIDQ1NTgwLCA0NTU5NSwgNDU2MTAsIDQ1NjI1LCA0NTY0MCwgNDU2NTUsIDQ1NjcwLCA0NTY4NSwgNDU3MDAsIDQ1NzE1LCAKKyAgICA0NTczMCwgNDU3NDUsIDQ1NzYwLCA0NTc3NSwgNDU3OTAsIDQ1ODA1LCA0NTgyMCwgNDU4MzUsIDQ1ODUwLCA0NTg2NSwgCisgICAgNDU4ODAsIDQ1ODk1LCA0NTkxMCwgNDU5MjUsIDQ1OTQwLCA0NTk1NSwgNDU5NzAsIDQ1OTg1LCA0NjAwMCwgNDYwMTUsIAorICAgIDQ2MDMwLCA0NjA0NSwgNDYwNjAsIDQ2MDc1LCA0NjA5MCwgNDYxMDUsIDQ2MTIwLCA0NjEzNSwgNDYxNTAsIDQ2MTY1LCAKKyAgICA0NjE4MCwgNDYxOTUsIDQ2MjEwLCA0NjIyNSwgNDYyNDAsIDQ2MjU1LCA0NjI3MCwgNDYyODUsIDQ2MzAwLCA0NjMxNSwgCisgICAgNDYzMzAsIDQ2MzQ1LCA0NjM2MCwgNDYzNzUsIDQ2MzkwLCA0NjQwNSwgNDY0MjAsIDQ2NDM1LCA0NjQ1MCwgNDY0NjUsIAorICAgIDQ2NDgwLCA0NjQ5NSwgNDY1MTAsIDQ2NTI1LCA0NjU0MCwgNDY1NTUsIDQ2NTcwLCA0NjU4NSwgNDY2MDAsIDQ2NjE1LCAKKyAgICA0NjYzMCwgNDY2NDUsIDQ2NjYwLCA0NjY3NSwgNDY2OTAsIDQ2NzA1LCA0NjcyMCwgNDY3MzUsIDQ2NzUwLCA0Njc2NSwgCisgICAgNDY3ODAsIDQ2Nzk1LCA0NjgxMCwgNDY4MjUsIDQ2ODQwLCA0Njg1NSwgNDY4NzAsIDQ2ODg1LCA0NjkwMCwgNDY5MTUsIAorICAgIDQ2OTMwLCA0Njk0NSwgNDY5NjAsIDQ2OTc1LCA0Njk5MCwgNDcwMDUsIDQ3MDIwLCA0NzAzNSwgNDcwNTAsIDQ3MDY1LCAKKyAgICA0NzA4MCwgNDcwOTUsIDQ3MTEwLCA0NzEyNSwgNDcxNDAsIDQ3MTU1LCA0NzE3MCwgNDcxODUsIDQ3MjAwLCA0NzIxNSwgCisgICAgNDcyMzAsIDQ3MjQ1LCA0NzI2MCwgNDcyNzUsIDQ3MjkwLCA0NzMwNSwgNDczMjAsIDQ3MzM1LCA0NzM1MCwgNDczNjUsIAorICAgIDQ3MzgwLCA0NzM5NSwgNDc0MTAsIDQ3NDI1LCA0NzQ0MCwgNDc0NTUsIDQ3NDcwLCA0NzQ4NSwgNDc1MDAsIDQ3NTE1LCAKKyAgICA0NzUzMCwgNDc1NDUsIDQ3NTYwLCA0NzU3NSwgNDc1OTAsIDQ3NjA1LCA0NzYyMCwgNDc2MzUsIDQ3NjUwLCA0NzY2NSwgCisgICAgNDc2ODAsIDQ3Njk1LCA0NzcxMCwgNDc3MjUsIDQ3NzQwLCA0Nzc1NSwgNDc3NzAsIDQ3Nzg1LCA0NzgwMCwgNDc4MTUsIAorICAgIDQ3ODMwLCA0Nzg0NSwgNDc4NjAsIDQ3ODc1LCA0Nzg5MCwgNDc5MDUsIDQ3OTIwLCA0NzkzNSwgNDc5NTAsIDQ3OTY1LCAKKyAgICA0Nzk4MCwgNDc5OTUsIDQ4MDEwLCA0ODAyNSwgNDgwNDAsIDQ4MDU1LCA0ODA3MCwgNDgwODUsIDQ4MTAwLCA0ODExNSwgCisgICAgNDgxMzAsIDQ4MTQ1LCA0ODE2MCwgNDgxNzUsIDQ4MTkwLCA0ODIwNSwgNDgyMjAsIDQ4MjM1LCA0ODI1MCwgNDgyNjUsIAorICAgIDQ4MjgwLCA0ODI5NSwgNDgzMTAsIDQ4MzI1LCA0ODM0MCwgNDgzNTUsIDQ4MzcwLCA0ODM4NSwgNDg0MDAsIDQ4NDE1LCAKKyAgICA0ODQzMCwgNDg0NDUsIDQ4NDYwLCA0ODQ3NSwgNDg0OTAsIDQ4NTA1LCA0ODUyMCwgNDg1MzUsIDQ4NTUwLCA0ODU2NSwgCisgICAgNDg1ODAsIDQ4NTk1LCA0ODYxMCwgNDg2MjUsIDQ4NjQwLCA0ODY1NSwgNDg2NzAsIDQ4Njg1LCA0ODcwMCwgNDg3MTUsIAorICAgIDQ4NzMwLCA0ODc0NSwgNDg3NjAsIDQ4Nzc1LCA0ODc5MCwgNDg4MDUsIDQ4ODIwLCA0ODgzNSwgNDg4NTAsIDQ4ODY1LCAKKyAgICA0ODg4MCwgNDg4OTUsIDQ4OTEwLCA0ODkyNSwgNDg5NDAsIDQ4OTU1LCA0ODk3MCwgNDg5ODUsIDQ5MDAwLCA0OTAxNSwgCisgICAgNDkwMzAsIDQ5MDQ1LCA0OTA2MCwgNDkwNzUsIDQ5MDkwLCA0OTEwNSwgNDkxMjAsIDQ5MTM1LCA0OTE1MCwgNDkxNjUsIAorICAgIDQ5MTgwLCA0OTE5NSwgNDkyMTAsIDQ5MjI1LCA0OTI0MCwgNDkyNTUsIDQ5MjcwLCA0OTI4NSwgNDkzMDAsIDQ5MzE1LCAKKyAgICA0OTMzMCwgNDkzNDUsIDQ5MzYwLCA0OTM3NSwgNDkzOTAsIDQ5NDA1LCA0OTQyMCwgNDk0MzUsIDQ5NDUwLCA0OTQ2NSwgCisgICAgNDk0ODAsIDQ5NDk1LCA0OTUxMSwgNDk1MjcsIDQ5NTQzLCA0OTU1OSwgNDk1NzUsIDQ5NTkxLCA0OTYwNywgNDk2MjMsIAorICAgIDQ5NjM5LCA0OTY1NSwgNDk2NzEsIDQ5Njg3LCA0OTcwMywgNDk3MTksIDQ5NzM1LCA0OTc1MSwgNDk3NjcsIDQ5NzgzLCAKKyAgICA0OTc5OSwgNDk4MTUsIDQ5ODMxLCA0OTg0NywgNDk4NjMsIDQ5ODc5LCA0OTg5NSwgNDk5MTEsIDQ5OTI3LCA0OTk0MywgCisgICAgNDk5NTksIDQ5OTc1LCA0OTk5MSwgNTAwMDcsIDUwMDIzLCA1MDAzOSwgNTAwNTUsIDUwMDcxLCA1MDA4NywgNTAxMDMsIAorICAgIDUwMTE5LCA1MDEzNSwgNTAxNTEsIDUwMTY3LCA1MDE4MywgNTAxOTksIDUwMjE1LCA1MDIzMSwgNTAyNDcsIDUwMjYzLCAKKyAgICA1MDI3OSwgNTAyOTUsIDUwMzExLCA1MDMyNywgNTAzNDMsIDUwMzU5LCA1MDM3NSwgNTAzOTEsIDUwNDA3LCA1MDQyMywgCisgICAgNTA0MzksIDUwNDU1LCA1MDQ3MSwgNTA0ODcsIDUwNTAzLCA1MDUxOSwgNTA1MzUsIDUwNTUxLCA1MDU2NywgNTA1ODMsIAorICAgIDUwNTk5LCA1MDYxNSwgNTA2MzEsIDUwNjQ3LCA1MDY2MywgNTA2NzksIDUwNjk1LCA1MDcxMSwgNTA3MjcsIDUwNzQzLCAKKyAgICA1MDc1OSwgNTA3NzUsIDUwNzkxLCA1MDgwNywgNTA4MjMsIDUwODM5LCA1MDg1NSwgNTA4NzEsIDUwODg3LCA1MDkwMywgCisgICAgNTA5MTksIDUwOTM1LCA1MDk1MSwgNTA5NjcsIDUwOTgzLCA1MDk5OSwgNTEwMTUsIDUxMDMxLCA1MTA0NywgNTEwNjMsIAorICAgIDUxMDc5LCA1MTA5NSwgNTExMTEsIDUxMTI3LCA1MTE0MywgNTExNTksIDUxMTc1LCA1MTE5MSwgNTEyMDcsIDUxMjIzLCAKKyAgICA1MTIzOSwgNTEyNTUsIDUxMjcxLCA1MTI4NywgNTEzMDMsIDUxMzE5LCA1MTMzNSwgNTEzNTEsIDUxMzY3LCA1MTM4MywgCisgICAgNTEzOTksIDUxNDE1LCA1MTQzMSwgNTE0NDcsIDUxNDYzLCA1MTQ3OSwgNTE0OTUsIDUxNTExLCA1MTUyNywgNTE1NDMsIAorICAgIDUxNTU5LCA1MTU3NSwgNTE1OTEsIDUxNjA3LCA1MTYyMywgNTE2MzksIDUxNjU1LCA1MTY3MSwgNTE2ODcsIDUxNzAzLCAKKyAgICA1MTcxOSwgNTE3MzUsIDUxNzUxLCA1MTc2NywgNTE3ODMsIDUxNzk5LCA1MTgxNSwgNTE4MzEsIDUxODQ3LCA1MTg2MywgCisgICAgNTE4NzksIDUxODk1LCA1MTkxMSwgNTE5MjcsIDUxOTQzLCA1MTk1OSwgNTE5NzUsIDUxOTkxLCA1MjAwNywgNTIwMjMsIAorICAgIDUyMDM5LCA1MjA1NSwgNTIwNzEsIDUyMDg3LCA1MjEwMywgNTIxMTksIDUyMTM1LCA1MjE1MSwgNTIxNjcsIDUyMTgzLCAKKyAgICA1MjE5OSwgNTIyMTUsIDUyMjMxLCA1MjI0NywgNTIyNjMsIDUyMjc5LCA1MjI5NSwgNTIzMTEsIDUyMzI3LCA1MjM0MywgCisgICAgNTIzNTksIDUyMzc1LCA1MjM5MSwgNTI0MDcsIDUyNDIzLCA1MjQzOSwgNTI0NTUsIDUyNDcxLCA1MjQ4NywgNTI1MDMsIAorICAgIDUyNTE5LCA1MjUzNSwgNTI1NTEsIDUyNTY3LCA1MjU4MywgNTI1OTksIDUyNjE1LCA1MjYzMSwgNTI2NDcsIDUyNjYzLCAKKyAgICA1MjY3OSwgNTI2OTUsIDUyNzExLCA1MjcyNywgNTI3NDMsIDUyNzU5LCA1Mjc3NSwgNTI3OTEsIDUyODA3LCA1MjgyMywgCisgICAgNTI4MzksIDUyODU1LCA1Mjg3MSwgNTI4ODcsIDUyOTAzLCA1MjkxOSwgNTI5MzUsIDUyOTUxLCA1Mjk2NywgNTI5ODMsIAorICAgIDUyOTk5LCA1MzAxNSwgNTMwMzEsIDUzMDQ3LCA1MzA2MywgNTMwNzksIDUzMDk1LCA1MzExMSwgNTMxMjcsIDUzMTQzLCAKKyAgICA1MzE1OSwgNTMxNzUsIDUzMTkxLCA1MzIwNywgNTMyMjMsIDUzMjM5LCA1MzI1NSwgNTMyNzEsIDUzMjg3LCA1MzMwMywgCisgICAgNTMzMTksIDUzMzM1LCA1MzM1MSwgNTMzNjcsIDUzMzgzLCA1MzM5OSwgNTM0MTUsIDUzNDMxLCA1MzQ0NywgNTM0NjMsIAorICAgIDUzNDc5LCA1MzQ5NSwgNTM1MTEsIDUzNTI3LCA1MzU0MywgNTM1NTksIDUzNTc1LCA1MzU5MSwgNTM2MDcsIDUzNjIzLCAKKyAgICA1MzYzOSwgNTM2NTUsIDUzNjcxLCA1MzY4NywgNTM3MDMsIDUzNzE5LCA1MzczNSwgNTM3NTEsIDUzNzY3LCA1Mzc4MywgCisgICAgNTM3OTksIDUzODE1LCA1MzgzMSwgNTM4NDcsIDUzODYzLCA1Mzg3OSwgNTM4OTUsIDUzOTExLCA1MzkyNywgNTM5NDMsIAorICAgIDUzOTU5LCA1Mzk3NSwgNTM5OTEsIDU0MDA3LCA1NDAyMywgNTQwMzksIDU0MDU1LCA1NDA3MSwgNTQwODcsIDU0MTAzLCAKKyAgICA1NDExOSwgNTQxMzUsIDU0MTUxLCA1NDE2NywgNTQxODMsIDU0MTk5LCA1NDIxNSwgNTQyMzEsIDU0MjQ3LCA1NDI2MywgCisgICAgNTQyNzksIDU0Mjk1LCA1NDMxMSwgNTQzMjcsIDU0MzQzLCA1NDM1OSwgNTQzNzUsIDU0MzkxLCA1NDQwNywgNTQ0MjMsIAorICAgIDU0NDM5LCA1NDQ1NSwgNTQ0NzEsIDU0NDg3LCA1NDUwMywgNTQ1MTksIDU0NTM1LCA1NDU1MSwgNTQ1NjcsIDU0NTgzLCAKKyAgICA1NDU5OSwgNTQ2MTUsIDU0NjMxLCA1NDY0NywgNTQ2NjMsIDU0Njc5LCA1NDY5NSwgNTQ3MTEsIDU0NzI3LCA1NDc0MywgCisgICAgNTQ3NTksIDU0Nzc1LCA1NDc5MSwgNTQ4MDcsIDU0ODIzLCA1NDgzOSwgNTQ4NTUsIDU0ODcxLCA1NDg4NywgNTQ5MDMsIAorICAgIDU0OTE5LCA1NDkzNSwgNTQ5NTEsIDU0OTY3LCA1NDk4MywgNTQ5OTksIDU1MDE1LCA1NTAzMSwgNTUwNDcsIDU1MDYzLCAKKyAgICA1NTA3OSwgNTUwOTUsIDU1MTExLCA1NTEyNywgNTUxNDMsIDU1MTU5LCA1NTE3NSwgNTUxOTEsIDU1MjA3LCA1NTIyMywgCisgICAgNTUyMzksIDU1MjU1LCA1NTI3MSwgNTUyODcsIDU1MzAzLCA1NTMxOSwgNTUzMzUsIDU1MzUxLCA1NTM2NywgNTUzODMsIAorICAgIDU1Mzk5LCA1NTQxNSwgNTU0MzEsIDU1NDQ3LCA1NTQ2MywgNTU0NzksIDU1NDk1LCA1NTUxMSwgNTU1MjcsIDU1NTQzLCAKKyAgICA1NTU1OSwgNTU1NzUsIDU1NTkxLCA1NTYwNywgNTU2MjMsIDU1NjM5LCA1NTY1NSwgNTU2NzEsIDU1Njg3LCA1NTcwMywgCisgICAgNTU3MTksIDU1NzM1LCA1NTc1MSwgNTU3NjcsIDU1NzgzLCA1NTc5OSwgNTU4MTUsIDU1ODMxLCA1NTg0NywgNTU4NjMsIAorICAgIDU1ODc5LCA1NTg5NSwgNTU5MTEsIDU1OTI3LCA1NTk0MywgNTU5NTksIDU1OTc1LCA1NTk5MSwgNTYwMDcsIDU2MDIzLCAKKyAgICA1NjAzOSwgNTYwNTUsIDU2MDcxLCA1NjA4NywgNTYxMDMsIDU2MTE5LCA1NjEzNSwgNTYxNTEsIDU2MTY3LCA1NjE4MywgCisgICAgNTYxOTksIDU2MjE1LCA1NjIzMSwgNTYyNDcsIDU2MjYzLCA1NjI3OSwgNTYyOTUsIDU2MzExLCA1NjMyNywgNTYzNDMsIAorICAgIDU2MzU5LCA1NjM3NSwgNTYzOTEsIDU2NDA3LCA1NjQyMywgNTY0MzksIDU2NDU1LCA1NjQ3MSwgNTY0ODcsIDU2NTAzLCAKKyAgICA1NjUxOSwgNTY1MzUsIDU2NTUxLCA1NjU2NywgNTY1ODMsIDU2NTk5LCA1NjYxNSwgNTY2MzEsIDU2NjQ3LCA1NjY2MywgCisgICAgNTY2NzksIDU2Njk1LCA1NjcxMSwgNTY3MjcsIDU2NzQzLCA1Njc1OSwgNTY3NzUsIDU2NzkxLCA1NjgwNywgNTY4MjMsIAorICAgIDU2ODM5LCA1Njg1NSwgNTY4NzEsIDU2ODg3LCA1NjkwMywgNTY5MTksIDU2OTM1LCA1Njk1MSwgNTY5NjcsIDU2OTgzLCAKKyAgICA1Njk5OSwgNTcwMTUsIDU3MDMxLCA1NzA0NywgNTcwNjMsIDU3MDc5LCA1NzA5NSwgNTcxMTEsIDU3MTI3LCA1NzE0MywgCisgICAgNTcxNTksIDU3MTc1LCA1NzE5MSwgNTcyMDcsIDU3MjIzLCA1NzIzOSwgNTcyNTUsIDU3MjcxLCA1NzI4NywgNTczMDMsIAorICAgIDU3MzE5LCA1NzMzNSwgNTczNTEsIDU3MzY3LCA1NzM4MywgNTczOTksIDU3NDE1LCA1NzQzMSwgNTc0NDcsIDU3NDYzLCAKKyAgICA1NzQ3OSwgNTc0OTUsIDU3NTExLCA1NzUyNywgNTc1NDMsIDU3NTU5LCA1NzU3NSwgNTc1OTEsIDU3NjA3LCA1NzYyMywgCisgICAgNTc2MzksIDU3NjU1LCA1NzY3MSwgNTc2ODcsIDU3NzAzLCA1NzcxOSwgNTc3MzUsIDU3NzUxLCA1Nzc2NywgNTc3ODMsIAorICAgIDU3Nzk5LCA1NzgxNSwgNTc4MzEsIDU3ODQ3LCA1Nzg2MywgNTc4NzksIDU3ODk1LCA1NzkxMSwgNTc5MjcsIDU3OTQzLCAKKyAgICA1Nzk1OSwgNTc5NzUsIDU3OTkxLCA1ODAwNywgNTgwMjMsIDU4MDM5LCA1ODA1NSwgNTgwNzEsIDU4MDg3LCA1ODEwMywgCisgICAgNTgxMTksIDU4MTM1LCA1ODE1MSwgNTgxNjcsIDU4MTgyLCAxNjc0OSwgNTgxOTEsIDU4MTk3LCA1ODIwMywgNTgyMTMsIAorICAgIDU4MjIxLCAxNDg4MSwgMTU0MzIsIDk5NTMsIDU4MjM0LCAxNTIwLCA1ODI0MiwgMzc2MSwgMjc0MTUsIDcxODMsIDU4MjQ4LCAKKyAgICA1ODI1MywgNTgyNTgsIDU4MjYzLCA1ODI2OCwgNTgyNzQsIDU4Mjc5LCA1ODI4NSwgNTgyOTAsIDU4Mjk2LCA1ODMwMSwgCisgICAgNTgzMDYsIDU4MzExLCA1ODMxNiwgNTgzMjIsIDU4MzI3LCA1ODMzMiwgNTgzMzcsIDU4MzQyLCA1ODM0NywgNTgzNTIsIAorICAgIDU4MzU3LCA1ODM2MywgNTgzNjgsIDU4Mzc0LCA1ODM4MSwgMjU2MSwgNTgzODYsIDU4MzkyLCA4NTI2LCA1ODM5NiwgCisgICAgNTg0MDEsIDU4NDA4LCA1ODQxNiwgNDAsIDU4NDIwLCA1ODQyNiwgNTg0MzEsIDU4NDM2LCA1ODQ0MCwgNTg0NDUsIDU4NDQ5LCAKKyAgICA1ODQ1MywgMTA2NzcsIDU4NDU3LCA1ODQ2NywgNTg0ODAsIDU4NDkxLCA1ODUwNCwgNTg1MTEsIDU4NTE3LCA1ODUyMiwgCisgICAgNTg1MjgsIDU4NTM0LCA1ODU0MCwgNTg1NDUsIDU4NTUwLCA1ODU1NSwgNTg1NjAsIDU4NTY0LCA1ODU2OSwgNTg1NzQsIAorICAgIDU4NTc5LCA1ODU4NSwgNTg1OTEsIDU4NTk3LCA1ODYwMiwgNTg2MDYsIDU4NjExLCA1ODYxNiwgNTg2MjAsIDU4NjI1LCAKKyAgICA1ODYzMCwgNTg2MzUsIDU4NjM5LCAxMDY5MywgMTA3MDQsIDEwNzA5LCAxNTYzLCA1ODY0MywgMTU2OCwgNTg2NDksIAorICAgIDE2MjI2LCA1ODY1MiwgNTg2NTgsIDE1OTksIDU4NjY0LCAxNjA1LCAxNjExLCAxMDczOSwgNTg2NjksIDU4Njc3LCA1ODY4NCwgCisgICAgNTg2ODgsIDU4Njk0LCA1ODY5OSwgMzA5NTIsIDU4NzA0LCA1ODcxMSwgNTg3MTYsIDU4NzIwLCA1ODcyNCwgMTYxNiwgCisgICAgMTYzMTgsIDU4NzMzLCA1ODczNywgMTYzMjksIDExMjAsIDU4NzQxLCA1ODc0OCwgNTg3NTMsIDU4NzU3LCAxNjM1NCwgCisgICAgMTYyMCwgMzczMjEsIDU4NzYwLCA1ODc2NSwgNTg3NzUsIDU4Nzg0LCA1ODc4OSwgNTg3OTMsIDU4Nzk5LCAxNjI1LCAKKyAgICAzOTIzMCwgNTg4MDQsIDU4ODEzLCA1ODgxOSwgNTg4MjQsIDEwODk3LCAxMDkwMywgNTg4MzAsIDU4ODQyLCA1ODg1OSwgCisgICAgNTg4NzYsIDU4ODkzLCA1ODkxMCwgNTg5MjcsIDU4OTQ0LCA1ODk2MSwgNTg5NzgsIDU4OTk1LCA1OTAxMiwgNTkwMjksIAorICAgIDU5MDQ2LCA1OTA2MywgNTkwODAsIDU5MDk3LCA1OTExNCwgNTkxMzEsIDU5MTQ4LCA1OTE2NSwgNTkxODIsIDU5MTk5LCAKKyAgICA1OTIxNiwgNTkyMzMsIDU5MjUwLCA1OTI2NywgNTkyODQsIDU5MzAxLCA1OTMxOCwgNTkzMzUsIDU5MzUyLCA1OTM2OSwgCisgICAgNTkzODYsIDU5NDAzLCA1OTQyMCwgNTk0MzcsIDU5NDU0LCA1OTQ3MSwgNTk0ODgsIDU5NTA1LCA1OTUyMiwgNTk1MzksIAorICAgIDU5NTU2LCA1OTU3MywgNTk1OTAsIDU5NjA3LCA1OTYyNCwgNTk2NDEsIDU5NjU4LCA1OTY3NSwgNTk2ODYsIDU5NjkxLCAKKyAgICAxNjMwLCA1OTY5NSwgNTk3MDEsIDU5NzA2LCA1OTcxMSwgOTMxOSwgMTYzNSwgNTk3MTcsIDU5NzI2LCAyNzcxMCwgNTk3MzEsIAorICAgIDU5NzQyLCA1OTc1MiwgNTk3NTcsIDU5NzY0LCA1OTc3MCwgNTk3NzUsIDU5NzgwLCAxNjYwNiwgNTk3ODQsIDEwOTE0LCAKKyAgICAxNjQwLCAxMDkxOSwgNTk3OTAsIDU5Nzk1LCA1OTgwMSwgNTk4MDYsIDU5ODExLCA1OTgxNiwgNTk4MjEsIDU5ODI2LCAKKyAgICA1OTgzMSwgNTk4MzYsIDU5ODQyLCA1OTg0OCwgNTk4NTQsIDU5ODU5LCA1OTg2MywgNTk4NjgsIDU5ODczLCA1OTg3NywgCisgICAgNTk4ODIsIDU5ODg3LCA1OTg5MiwgNTk4OTYsIDU5OTAxLCA1OTkwNywgNTk5MTIsIDU5OTE3LCA1OTkyMSwgNTk5MjYsIAorICAgIDU5OTMxLCA1OTkzNywgNTk5NDIsIDU5OTQ3LCA1OTk1MywgNTk5NTksIDU5OTY0LCA1OTk2OCwgNTk5NzMsIDU5OTc4LCAKKyAgICA1OTk4MywgNTk5ODcsIDU5OTkyLCA1OTk5NywgNjAwMDIsIDYwMDA4LCA2MDAxNCwgNjAwMTksIDYwMDIzLCA2MDAyNywgCisgICAgNjAwMzIsIDYwMDM3LCA2MDA0MiwgMjkxMDgsIDYwMDQ2LCA2MDA1MSwgNjAwNTYsIDYwMDYyLCA2MDA2NywgNjAwNzIsIAorICAgIDYwMDc2LCA2MDA4MSwgNjAwODYsIDYwMDkyLCA2MDA5NywgNjAxMDIsIDYwMTA4LCA2MDExNCwgNjAxMTksIDYwMTIzLCAKKyAgICA2MDEyOCwgNjAxMzMsIDYwMTM3LCA2MDE0MiwgNjAxNDcsIDYwMTUyLCA2MDE1OCwgNjAxNjQsIDYwMTY5LCA2MDE3MywgCisgICAgNjAxNzgsIDYwMTgzLCA2MDE4NywgNjAxOTIsIDYwMTk3LCA2MDIwMiwgNjAyMDYsIDYwMjA5LCAzMTYxNCwgNjAyMTQsIAorICAgIDYwMjIyLCAxNjY3MiwgMzY2MywgMTEwMTAsIDYwMjI4LCA2MDIzOCwgNjAyNTMsIDExMDE1LCA2MDI2NCwgNjAyNjksIAorICAgIDYwMjgwLCA2MDI5MiwgNjAzMDQsIDYwMzE2LCAyNjk1LCA2MDMyOCwgNjAzMzMsIDYwMzQ1LCA2MDM0OSwgNjAzNTUsIAorICAgIDYwMzYxLCA2MDM2NiwgMTY1MiwgMTA2NywgNjAzNzUsIDYwMzgwLCAzOTI4MCwgNjAzODQsIDYwMzg4LCA2MDM5MywgCisgICAgNjAzOTcsIDE2NzU3LCA2MDQwMiwgNjA0MDUsIDYwNDEzLCA2MDQyMSwgMTY1NiwgMTEwNDAsIDExMDQ2LCAxNjYxLCAKKyAgICA2MDQyOSwgNjA0MzYsIDYwNDQxLCA2MDQ1MCwgNjA0NjAsIDYwNDY3LCA2MDQ3MiwgNjA0NzcsIDE2NjYsIDYwNDg0LCAKKyAgICA2MDQ4OSwgMTY4NzIsIDYwNDkzLCA2MDQ5OCwgNjA1MDUsIDYwNTExLCA2MDUxNSwgNjA1MjYsIDYwNTM2LCAxNjg5NCwgCisgICAgOTIyNywgOTIzNCwgMTY3MSwgNjA1NDMsIDYwNTQ5LCA2MDU1NywgNjA1NjQsIDYwNTcwLCA2MDU3NywgNjA1ODksIDYwNTk1LCAKKyAgICA2MDYwMCwgNjA2MTIsIDYwNjIzLCA2MDYzMiwgNjA2NDIsIDM3NDAsIDMwNzg4LCAzMDc5NywgMTY5MzQsIDE2NzYsIDE2ODAsIAorICAgIDYwNjUwLCA2MDY2MSwgNjA2NjYsIDE2ODMsIDYwNjc0LCA2MDY3OSwgMTY5ODUsIDYwNjkxLCA2MDY5NywgNjA3MDIsIAorICAgIDYwNzEwLCAxNjg4LCA2MDcxNSwgNjA3MjAsIDYwNzI4LCA2MDczNiwgNjA3NDMsIDYwNzUyLCA2MDc2MCwgNjA3NjksIAorICAgIDE2OTMsIDYwNzczLCAxNjk4LCA2MDc3OCwgNjA3ODUsIDE3MDU5LCA2MDc5MywgNjA3OTksIDYwODA0LCA2MDgxMiwgCisgICAgNjA4MTksIDYwODI3LCAyMjU1NywgNjA4MzIsIDExMTc1LCA2MDg0MSwgNjA4NDcsIDYwODU0LCA2MDg2MSwgNjA4NjcsIAorICAgIDYwODc3LCA2MDg4MywgNjA4ODgsIDYwODk5LCA2MDkwNCwgNjA5MTIsIDExMTg0LCAxMTE4OSwgNjA5MjAsIDYwOTI2LCAKKyAgICA2MDkzNCwgMzgwNSwgMTcxMDEsIDM5MzY4LCA2MDkzOSwgNjA5NDUsIDYwOTUwLCA2MDk1OCwgNjA5NjUsIDEyMDI5LCAKKyAgICA2MDk3MCwgNjA5NzYsIDE3MDksIDYwOTgxLCA2MDk4NCwgMTEyNywgNjA5OTAsIDYwOTk1LCA2MTAwMCwgNjEwMDYsIAorICAgIDYxMDExLCA2MTAxNiwgNjEwMjEsIDYxMDI2LCA2MTAzMSwgNjEwMzYsIDE3MTgsIDksIDYxMDQyLCA2MTA0NiwgNjEwNTEsIAorICAgIDYxMDU1LCA2MTA1OSwgNjEwNjMsIDMxODU0LCA2MTA2OCwgNjEwNzMsIDYxMDc4LCA2MTA4MiwgNjEwODUsIDYxMDg5LCAKKyAgICA2MTA5MywgNjEwOTgsIDYxMTAyLCA2MTEwNywgNjExMTEsIDM0NTkxLCAzNDU5NiwgMzQ2MDEsIDYxMTE0LCA2MTEyMSwgCisgICAgNjExMjcsIDM5MDg5LCA2MTEzNywgMzQ2MDcsIDMyMTEyLCAzMTg2OSwgMzE4NzUsIDM0NjIzLCAzMTg4MSwgNjExNDIsIAorICAgIDYxMTQ3LCAzMjE0NSwgNjExNTEsIDYxMTU0LCA2MTE1OCwgNjExNjUsIDYxMTY4LCA2MTE3MywgNjExNzcsIDYxMTgxLCAKKyAgICA2MTE4NCwgNjExOTQsIDYxMjA2LCA2MTIxMywgNjEyMTksIDYxMjI2LCAzMzU0OCwgNjEyMjksIDg1NDMsIDg3NywgNjEyMzIsIAorICAgIDYxMjM2LCA2MTI0MSwgMzY5MCwgNjEyNDUsIDYxMjQ4LCAxMzYyNSwgNjEyNTUsIDYxMjYyLCA2MTI3NSwgNjEyODMsIAorICAgIDYxMjkyLCA2MTMwMSwgNjEzMDYsIDYxMzE2LCA2MTMyOSwgNjEzNDEsIDYxMzQ4LCA2MTM1MywgNjEzNjIsIDYxMzc1LCAKKyAgICAzNjAzNSwgNjEzOTMsIDYxMzk4LCA2MTQwNSwgNjE0MTEsIDY1MiwgNjE0MTYsIDYxNDI0LCA2MTQzMSwgMjcyNTQsIDYyNywgCisgICAgNjE0MzcsIDYxNDQzLCA2MTQ1MywgNjE0NTksIDYxNDY0LCAzMTg5OSwgNjAwMywgMzE5MTMsIDYxNDY4LCA2MTQ3OCwgCisgICAgNjE0ODMsIDYxNDkzLCA2MTUwOCwgNjE1MTQsIDYxNTIwLCAzMTkyMywgNjE1MjUsIDMxMDY5LCA2MTUyOSwgNjE1MzQsIAorICAgIDYxNTM5LCA2MTU0MywgNjE1NDgsIDE2OTM3LCA2MTU1NSwgNjE1NjAsIDYxNTY0LCA2MDQ0LCAzMTk0OSwgNjE1NjgsIAorICAgIDYxNTc0LCAzMTIsIDYxNTg0LCA2MTU5MSwgNjE1OTgsIDYxNjAzLCA2MTYxMiwgNTg3NjksIDYxNjE4LCA2MTYyNiwgCisgICAgNjE2MzAsIDYxNjM0LCA2MTYzOCwgNjE2NDIsIDYxNjQ3LCA2MTY1MSwgNjE2NTcsIDYxNjY1LCA2MTY3MCwgNjE2NzUsIAorICAgIDYxNjc5LCA2MTY4NCwgNjE2ODgsIDYxNjkyLCA2MTY5OCwgNjE3MDQsIDYxNzA5LCA2MTcxMywgMzIwNzMsIDYxNzE4LCAKKyAgICAzMjA3OSwgMzIwODUsIDYxNzIzLCA2MTcyOSwgNjE3MzYsIDYxNzQxLCA2MTc0NSwgMzEwODYsIDE2NTk5LCA2MTc0OCwgCisgICAgNjE3NTIsIDYxNzU3LCA2MTc2NCwgNjE3NzAsIDYxNzc0LCA2MTc3OSwgMzg3OTksIDYxNzg1LCA2MTc4OSwgNjE3OTMsIAorICAgIDYxNzk4LCA2MTgwNCwgNjE4MTAsIDYxODIyLCA2MTgzMSwgNjE4NDEsIDYxODQ3LCA2MTg1NCwgNjE4NTksIDYxODY0LCAKKyAgICA2MTg2OCwgNjE4NzEsIDYxODc3LCA2MTg4NCwgNjE4ODksIDYxODk0LCA2MTkwMSwgNjE5MDgsIDYxOTE0LCA2MTkxOSwgCisgICAgNjE5MjQsIDYxOTMyLCAzMjA5MCwgMjQyMywgNjE5MzcsIDYxOTQyLCA2MTk0OCwgNjE5NTMsIDYxOTU5LCA2MTk2NCwgCisgICAgNjE5NjksIDYxOTc0LCA2MTk4MCwgMzIxMTEsIDYxOTg1LCA2MTk5MSwgNjE5OTcsIDYyMDAzLCAzMjE3NSwgNjIwMDgsIAorICAgIDYyMDEzLCA2MjAxOCwgMzIxODYsIDYyMDIzLCA2MjAyOCwgNjIwMzMsIDYyMDM5LCA2MjA0NSwgMzIxOTEsIDYyMDUwLCAKKyAgICA2MjA1NSwgNjIwNjAsIDMyMjQ2LCAzMjI1MiwgNjIwNjUsIDYyMDcwLCAzMjI1NywgNjIwNzUsIDI3OTM3LCAzMjI3OSwgCisgICAgMzIyODMsIDYyMDgwLCA2MjA1NiwgNjIwODQsIDYyMDkyLCA2MjA5OCwgNjIxMDYsIDYyMTEzLCA2MjExOSwgNjIxMjksIAorICAgIDYyMTM1LCA2MjE0MiwgMTA2MjQsIDMyMjk3LCA2MjE0OCwgNjIxNjEsIDYyMTcwLCA2MjE3NiwgNjIxODUsIDYyMTkxLCAKKyAgICAyMzQ5NSwgNjIxOTgsIDYyMjA1LCA2MjIxNSwgMzIyNDcsIDYyMjE4LCA2MjIyNSwgNjIyMzAsIDYyMjM0LCA2MjIzOCwgCisgICAgNjIyNDMsIDYxMjAsIDYyMjQ3LCA2MjI1MiwgNjIyNTcsIDM0Njg1LCAzNDY5MCwgNjIyNjEsIDM0NzA0LCA2MjI2NiwgCisgICAgMzQ3MDksIDYyMjcxLCA2MjI3NywgMzQ3MjEsIDM0NzI3LCAzNDczMywgNjIyODIsIDYyMjg4LCAyMjUyMiwgNjIyOTksIAorICAgIDYyMzAyLCA2MjMxNCwgNjIzMjIsIDMyMzIwLCA2MjMyNiwgNjIzMzUsIDYyMzQ1LCA2MjM1NCwgMzIzMzAsIDYyMzU5LCAKKyAgICA2MjM2NiwgNjIzNzUsIDYyMzgxLCA2MjM4OSwgNjIzOTYsIDYwOTUsIDQzOTcsIDYyNDAxLCAzMjI1OCwgNjI0MDcsIAorICAgIDYyNDEwLCA2MjQxNiwgNjI0MjMsIDYyNDI4LCA2MjQzMywgMjM0MDUsIDYyNDM3LCA2MjQ0MywgNjI0NDksIDYyNDU0LCAKKyAgICA2MjQ1OSwgNjI0NjMsIDYyNDY5LCA2MjQ3NSwgMzM0NTgsIDg2MywgMzU2OTgsIDM2NjE5LCAzNjYyNSwgMzIzNjYsIAorICAgIDYyNDgwLCA2MjQ4NCwgNjI0ODgsIDYyNDkxLCA2MjUwNCwgNjI1MTAsIDYyNTE0LCA2MjUxNywgNjI1MjIsIDMzNzYxLCAKKyAgICA2MjUyNiwgMzEwOTEsIDIxMjc0LCA2MjUzMiwgNjAyNCwgNjAzMiwgOTA2OCwgNjI1MzUsIDYyNTQwLCA2MjU0NSwgNjI1NTAsIAorICAgIDYyNTU1LCA2MjU2MCwgNjI1NjUsIDYyNTcwLCA2MjU3NSwgNjI1ODAsIDYyNTg2LCA2MjU5MSwgNjI1OTYsIDYyNjAyLCAKKyAgICA2MjYwNywgNjI2MTIsIDYyNjE3LCA2MjYyMiwgNjI2MjcsIDYyNjMyLCA2MjYzOCwgNjI2NDMsIDYyNjQ5LCA2MjY1NCwgCisgICAgNjI2NTksIDYyNjY0LCA2MjY2OSwgNjI2NzQsIDYyNjc5LCA2MjY4NCwgNjI2ODksIDYyNjk0LCA2MjY5OSwgNjI3MDUsIAorICAgIDYyNzEwLCA2MjcxNSwgNjI3MjAsIDYyNzI1LCA2MjczMCwgNjI3MzUsIDYyNzQxLCA2Mjc0NiwgNjI3NTEsIDYyNzU2LCAKKyAgICA2Mjc2MSwgNjI3NjYsIDYyNzcxLCA2Mjc3NiwgNjI3ODEsIDYyNzg2LCA2Mjc5MiwgNjI3OTcsIDYyODAyLCA2MjgwNywgCisgICAgNjI4MTIsIDYyODE4LCA2MjgyNCwgNjI4MjksIDYyODM1LCA2Mjg0MCwgNjI4NDUsIDYyODUwLCA2Mjg1NSwgNjI4NjAsIAorICAgIDE1MTMsIDI0NSwgNjI4NjUsIDYyODY5LCA2Mjg3MywgNjI4NzcsIDI1MTE2LCA2Mjg4MSwgNjI4ODUsIDYyODkwLCA2Mjg5NCwgCisgICAgNjI4OTksIDYyOTAzLCA2MjkwOCwgNjI5MTMsIDYyOTE4LCA2MjkyMiwgNjI5MjYsIDYyOTMxLCA2MjkzNSwgMTMzNjIsIAorICAgIDYyOTQwLCA2Mjk0NCwgNjI5NTEsIDYyOTYxLCAxNTE5MywgNjI5NzAsIDYyOTc5LCA2Mjk4MywgNjI5ODgsIDYyOTkzLCAKKyAgICA2Mjk5NywgMjQ5MDcsIDMwMTksIDYzMDAxLCAxNzM1MCwgNjMwMDcsIDYzMDE2LCA2MzAyNCwgNjMwMzAsIDYzMDQyLCAKKyAgICA2MzA1NCwgNjMwNTgsIDYzMDYzLCA2MzA2NywgNjMwNzMsIDYzMDc5LCA2MzA4NCwgNjMwOTQsIDYzMTA0LCA2MzExMCwgCisgICAgNjMxMTUsIDYzMTE5LCA2MzEyNCwgNjMxMzAsIDYzMTM5LCA2MzE0OCwgNjMxNTYsIDE1NTQ3LCA2MzE2MCwgNjMxNjksIAorICAgIDYzMTc3LCA2MzE4OSwgNjMyMDAsIDYzMjExLCA2MzIyMCwgNjMyMjQsIDYzMjMzLCA2MzI0MywgNjMyNTEsIDYzMjU3LCAKKyAgICA2MzI2MiwgNjMyNjgsIDYzMjczLCA5OCwgMzA5MDAsIDYzMjg0LCAyNjI0OSwgMjYyNTksIDYzMjkwLCA2MzI5NywgNjMzMDMsIAorICAgIDYzMzA3LCA2MzMxNywgNjMzMjgsIDYzMzM2LCA2MzM0NSwgNjMzNTAsIDYzMzU1LCA2MzM1OSwgMTczMDQsIDYzMzY3LCAKKyAgICA2MzM3MSwgNjMzNzcsIDYzMzg3LCA2MzM5NCwgNjM0MDAsIDM0Nzg0LCA2MzQwNiwgNjM0MDgsIDYzNDExLCA2MzQxNSwgCisgICAgNjM0MjUsIDYzNDMxLCA2MzQzOCwgMTMzMDgsIDYzNDQ1LCA2MzQ1MSwgNjM0NjAsIDYzNDY5LCA2MzQ3NSwgNjM0ODEsIAorICAgIDYzNDg3LCA2MzQ5MiwgNjM0OTksIDYzNTA2LCA2MzUxMiwgNjM1MjUsIDYzNTM0LCA2MzU0MywgNjM1NDgsIDYzNTUyLCAKKyAgICA2MzU1OCwgNjM1NjUsIDYzNTcyLCA2MzU3OSwgNjM1ODYsIDYzNTkzLCA2MzU5OCwgNjM2MDIsIDYzNjA2LCA2MzYwOSwgCisgICAgNjM2MTksIDYzNjIzLCA2MzYzNSwgNjM2NDQsIDYzNjQ4LCA2MzY1MywgNjM2NTcsIDYzNjYzLCA2MzY2OCwgNjM2NzUsIAorICAgIDYzNjg0LCA2MzY5MiwgNjM3MDAsIDYzNzA1LCA2MzcwOSwgNjM3MTQsIDYzNzE5LCA2MzcyOSwgNjM3MzcsIDYzNzQyLCAKKyAgICA2Mzc0NiwgNjM3NTAsIDYzNzU2LCA2Mzc2OCwgNjM3NzYsIDYzNzg2LCA2Mzc5MywgNjM3OTksIDYzODA0LCA2MzgwOCwgCisgICAgNjM4MTIsIDYzODE2LCA2MzgyNSwgNjM4MzQsIDYzODQzLCA2Mzg0OSwgNjM4NTUsIDYzODYxLCA2Mzg2NiwgNjM4NzMsIAorICAgIDYzODc5LCA2Mzg4NywgNjM4OTQsIDEyNDU2LCA2MzkwMCwgNjM5MDYsIDYzOTEwLCAxNDIzMSwgNjM5MTQsIDYzOTE5LCAKKyAgICA2MzkyOSwgNjM5MzgsIDYzOTQ0LCA2Mzk1MCwgNjM5NTgsIDYzOTY1LCA2Mzk2OSwgNjM5NzMsIDYzOTc5LCA2Mzk4NywgCisgICAgNjM5OTQsIDY0MDAwLCA2NDAxMSwgNjQwMTUsIDY0MDE5LCA2NDAyMywgNjQwMjYsIDY0MDMyLCA2NDAzNywgNjQwNDEsIAorICAgIDY0MDQ1LCA2NDA1NCwgNjQwNjIsIDY0MDY5LCA2NDA3NSwgNjQwODIsIDI0MDI5LCAzODg0MSwgNjQwODcsIDY0MDk1LCAKKyAgICA2NDA5OSwgNjQxMDMsIDY0MTA2LCA2NDExNCwgNjQxMjEsIDY0MTI3LCA2NDEzNiwgNjQxNDQsIDY0MTUwLCA2NDE1NSwgCisgICAgNjQxNTksIDY0MTY0LCA2NDE2OCwgNjQxNzIsIDY0MTc3LCA2NDE4NiwgNjQxOTAsIDY0MTk3LCA2NDIwNCwgNjQyMTAsIAorICAgIDY0MjE4LCA2NDIyNCwgNjQyMzUsIDY0MjQzLCA2NDI0OSwgMjI2NTIsIDY0MjU4LCA2NDI2NSwgNjQyNzIsIDY0Mjc5LCAKKyAgICA2NDI4NiwgNjQyOTMsIDQxODcwLCAxMzE0NiwgNjQzMDAsIDY0MzA3LCA2NDMxMiwgMzQ4MjAsIDYyMTcsIDY0MzE4LCAKKyAgICA2NDMyMywgNjQzMjgsIDY0MzM0LCA2NDM0MCwgNjQzNDYsIDY0MzUxLCA2NDM1NiwgNjQzNjEsIDY0MzY2LCA2NDM3MiwgCisgICAgNjQzNzcsIDY0MzgzLCA2NDM4OCwgNjQzOTQsIDY0Mzk5LCA2NDQwNCwgNjQ0MDksIDY0NDE0LCA2NDQxOSwgNjQ0MjQsIAorICAgIDY0NDI5LCA2NDQzNSwgNjQ0NDAsIDY0NDQ2LCA2NDQ1MSwgNjQ0NTYsIDY0NDYxLCA2NDQ2NiwgNjQ0NzEsIDY0NDc2LCAKKyAgICA2NDQ4MiwgNjQ0ODcsIDY0NDkyLCA2NDQ5NywgNjQ1MDIsIDY0NTA3LCA2NDUxMiwgNjQ1MTcsIDY0NTIyLCA2NDUyNywgCisgICAgNjQ1MzIsIDY0NTM4LCA2NDU0MywgNjQ1NDgsIDY0NTUzLCA2NDU1OCwgNjQ1NjMsIDY0NTY4LCA2NDU3MywgNjQ1NzgsIAorICAgIDY0NTg0LCA2NDU4OSwgNjQ1OTQsIDY0NTk5LCA2NDYwNCwgNjQ2MDksIDY0NjE0LCA2NDYxOSwgNjQ2MjQsIDY0NjI5LCAKKyAgICA2NDYzNCwgNjQ2MzksIDY0NjQ0LCA2NDY1MCwgMTgzNCwgMjI0LCAzNzQxNywgNjQ2NTUsIDY0NjU4LCA2NDY2MywgNjQ2NjcsIAorICAgIDY0NjcwLCA2NDY3NSwgNjM2OTYsIDY0Njg2LCA2NDY5NiwgNjQ3MDMsIDY0NzE5LCA2NDcyOCwgNjQ3MzgsIDY0NzQ4LCAKKyAgICA2NDc1NiwgNjQ3NzAsIDY0Nzc4LCA2NDc4MiwgNjQ3ODUsIDY0NzkyLCA2NDc5OCwgNjQ4MDksIDY0ODIxLCA2NDgzMiwgCisgICAgNjQ4NDEsIDY0ODQ4LCAxMjk3LCAyMzI5NCwgNjQ4NTgsIDI1OTAsIDY0ODYyLCA2NDg3MSwgMTEzMywgMTcyNzcsIDM4MDU0LCAKKyAgICA2NDg3OSwgNjQ4ODcsIDY0OTAxLCA2NDkxNCwgNjQ5MTgsIDY0OTIzLCA2NDkyOCwgNjQ5MzMsIDY0OTM5LCA2NDk0NSwgCisgICAgNjQ5NTAsIDg1MzUsIDY0OTU1LCA2NDk1OSwgNjQ5NjcsIDExMDQxLCA2NDk3MiwgNjQ5NzgsIDY0OTg3LCAxNzIxLCAKKyAgICAxMTA1MywgNzM2LCA2NDk5MSwgNjUwMDAsIDY1MDEwLCAyNzAxMywgNjUwMTksIDY1MDI1LCAxNjg0OSwgNjUwMzEsIAorICAgIDY1MDM1LCAzOTY0LCAxMTM4NCwgNjUwNDEsIDY1MDQ4LCA2MDY1NiwgNjUwNTIsIDY1MDU2LCAzOTg4LCAxODksIDE0MTQ2LCAKKyAgICA2NTA2MiwgNjUwNzQsIDY1MDc4LCA2NTA4NCwgMjc3MzAsIDY1MDg4LCAxMTM3MiwgMjczMCwgNCwgNjUwOTMsIDY1MTAzLCAKKyAgICA2NTEwOSwgNjUxMjAsIDY1MTI3LCA2NTEzMywgNjUxMzksIDY1MTQ3LCA2NTE1NCwgNjUxNjAsIDY1MTcwLCA2NTE4MCwgCisgICAgNjUxOTAsIDIzNDgyLCAxMzA5LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCA2NTIxMywgNjUyMTcsIDI3NTMsIDI3NTksIDg1MzIsIAorICAgIDIyNjQsIDY1MjIxLCA2NTIyNSwgNjUyMzQsIDY1MjQyLCA2NTI1MywgNjUyNjEsIDY1MjY5LCA2NTI3NSwgNjUyODAsIAorICAgIDY1MjkxLCA2NTMwMiwgNjUzMTAsIDY1MzE2LCA5Njg3LCA2NTMyMSwgNjUzMjksIDY1MzMzLCA2NTMzNywgNjUzNDEsIAorICAgIDY1MzUzLCAyODExNSwgNjUzNjAsIDY1MzcwLCA2NTM3NiwgNjUzODIsIDk3ODksIDY1MzkyLCA2NTQwMywgNjU0MTMsIAorICAgIDY1NDIyLCA2NTQyNiwgNjU0MzMsIDExMzUsIDExNzAsIDY1NDQzLCA2NTQ0OCwgNjU0NTYsIDY1NDY0LCA2NTQ3NSwgCisgICAgNjU0ODIsIDY1NDk2LCAxNDA3NSwgMzkzLCA2NTUwNiwgNjU1MTAsIDY1NTE4LCA2NTUyNywgNjU1MzUsIDY1NTQxLCAKKyAgICA2NTU1NSwgNjU1NjIsIDY1NTY4LCA2NTU3NywgNjU1ODQsIDY1NTk0LCA2NTYwMiwgMzgxMiwgMTU2LCA2NTYxMCwgNjU2MjEsIAorICAgIDY1NjI1LCA2NTYzNywgMjc5MjgsIDE2MSwgNjU2NDMsIDY1NjQ4LCA2NTY1MiwgNjU2NTksIDY1NjY1LCA2NTY3MywgCisgICAgNjU2ODAsIDg4MTgsIDY1Njg3LCA2NTY5NiwgNjU3MDQsIDM4NzgsIDY1NzE3LCA4MTk5LCA2NTcyMSwgMjc5OCwgNDUwLCAKKyAgICA2NTcyNiwgNjU3MzksIDY1NzQ0LCAxODMzLCA2NjgsIDY1NzQ4LCAzODk1LCA2NTc1NiwgNjU3NjIsIDY1NzY2LCA5MzEsIAorICAgIDY1Nzc2LCA2NTc4NSwgNjU3OTAsIDE0OTE1LCAxNDkyMiwgNDUyMzIsIDY1Nzk0LCAzODIyLCAxMzAzNCwgNjU4MDIsIAorICAgIDY1ODA5LCAyMzUzOCwgNjU4MTMsIDY1ODIwLCA2NTgyNiwgNjU4MzEsIDY1ODM2LCAxNDkzNSwgMzcyLCA2NTg0MSwgCisgICAgNjU4NTMsIDY1ODU5LCA2NTg2NywgMjgxMCwgMTc1MywgNjU4NzUsIDY1ODc3LCA2NTg4MiwgNjU4ODcsIDY1ODkyLCAKKyAgICA2NTg5OCwgNjU5MDMsIDY1OTA4LCA2NTkxMywgNjU5MTgsIDY1OTIzLCA2NTkyOCwgNjU5MzQsIDY1OTM5LCA2NTk0NCwgCisgICAgNjU5NDksIDY1OTU0LCA2NTk1OSwgNjU5NjQsIDY1OTY5LCA2NTk3NCwgNjU5ODAsIDY1OTg1LCA2NTk5MCwgNjU5OTUsIAorICAgIDY2MDAxLCA2NjAwNiwgNjYwMTIsIDY2MDE3LCA2NjAyMiwgNjYwMjcsIDY2MDMyLCA2NjAzNywgNjYwNDIsIDY2MDQ3LCAKKyAgICA2NjA1MywgNjYwNTgsIDY2MDY0LCA2NjA2OSwgNjYwNzQsIDY2MDc5LCA2NjA4NCwgNjYwODksIDY2MDk0LCA2NjA5OSwgCisgICAgNjYxMDQsIDY2MTEwLCA2NjExNSwgNjYxMjAsIDY2MTI1LCA2NjEyOSwgNjYxMzMsIDY2MTM4LCA2NjE0MiwgNjYxNDcsIAorICAgIDY2MTUyLCA2NjE1OCwgNjYxNjMsIDY2MTY3LCA2NjE3MiwgNjYxNzYsIDY2MTc5LCA2NjE4MSwgNjYxODUsIDY2MTg4LCAKKyAgICA2NjE5MywgNjYxOTcsIDY2MjAxLCA2NjIwNSwgNjYyMDksIDY2MjE4LCA2NjIyMiwgMzI1MjQsIDY2MjI1LCAzMjUyOSwgCisgICAgNjYyMzIsIDY2MjM3LCAzMjUzNCwgNjYyNDYsIDY2MjU1LCAzMjU0MCwgNjYyNjAsIDMyNTQ1LCA2NjI2OSwgNjYyNzQsIAorICAgIDExNTcxLCA2NjI3OCwgNjYyODMsIDY2Mjg4LCAzMjU1MCwgNjYyOTIsIDQwMTk2LCA2NjI5NiwgNjYyOTksIDY2MzAzLCAKKyAgICA4MjExLCA2NjMwOSwgNjYzMTQsIDY2MzE4LCAzNzA1LCAzMjU1NSwgNjYzMjEsIDY2MzI1LCA2NjMyOCwgNjYzMzMsIAorICAgIDY2MzM3LCA2NjM0MywgNjYzNTEsIDY2MzY0LCA2NjM3MywgNjYzNzksIDY2Mzg0LCA2NjM5MCwgNjYzOTQsIDY2NDAwLCAKKyAgICA2NjQwOCwgNjY0MTMsIDY2NDE3LCA2NjQyNCwgNjY0MzAsIDY2NDM4LCA2NjQ0NywgNjY0NTUsIDMyNTU4LCA2NjQ2MiwgCisgICAgNjY0NzIsIDY2NDgxLCA2NjQ5NCwgNjY0OTksIDY2NTA0LCA2NjUxMywgNjY1MTksIDY2NTI2LCA2NjUzNywgNjY1NDksIAorICAgIDY2NTU2LCA2NjU2NSwgNjY1NzQsIDY2NTgzLCA2NjU5MCwgNjY1OTYsIDY2NjAzLCA2NjYxMSwgNjY2MTgsIDY2NjI2LCAKKyAgICA2NjYzNSwgNjY2NDMsIDY2NjUwLCA2NjY1OCwgNjY2NjcsIDY2Njc1LCA2NjY4NCwgNjY2OTQsIDY2NzAzLCA2NjcxMSwgCisgICAgNjY3MTgsIDY2NzI2LCA2NjczNSwgNjY3NDMsIDY2NzUyLCA2Njc2MiwgNjY3NzEsIDY2Nzc5LCA2Njc4OCwgNjY3OTgsIAorICAgIDY2ODA3LCA2NjgxNywgNjY4MjgsIDY2ODM4LCA2Njg0NywgNjY4NTUsIDY2ODYyLCA2Njg3MCwgNjY4NzksIDY2ODg3LCAKKyAgICA2Njg5NiwgNjY5MDYsIDY2OTE1LCA2NjkyMywgNjY5MzIsIDY2OTQyLCA2Njk1MSwgNjY5NjEsIDY2OTcyLCA2Njk4MiwgCisgICAgNjY5OTEsIDY2OTk5LCA2NzAwOCwgNjcwMTgsIDY3MDI3LCA2NzAzNywgNjcwNDgsIDY3MDU4LCA2NzA2NywgNjcwNzcsIAorICAgIDY3MDg4LCA2NzA5OCwgNjcxMDksIDY3MTIxLCA2NzEzMiwgNjcxNDIsIDY3MTUxLCA2NzE1OSwgNjcxNjYsIDY3MTc0LCAKKyAgICA2NzE4MywgNjcxOTEsIDY3MjAwLCA2NzIxMCwgNjcyMTksIDY3MjI3LCA2NzIzNiwgNjcyNDYsIDY3MjU1LCA2NzI2NSwgCisgICAgNjcyNzYsIDY3Mjg2LCA2NzI5NSwgNjczMDMsIDY3MzEyLCA2NzMyMiwgNjczMzEsIDY3MzQxLCA2NzM1MiwgNjczNjIsIAorICAgIDY3MzcxLCA2NzM4MSwgNjczOTIsIDY3NDAyLCA2NzQxMywgNjc0MjUsIDY3NDM2LCA2NzQ0NiwgNjc0NTUsIDY3NDYzLCAKKyAgICA2NzQ3MiwgNjc0ODIsIDY3NDkxLCA2NzUwMSwgNjc1MTIsIDY3NTIyLCA2NzUzMSwgNjc1NDEsIDY3NTUyLCA2NzU2MiwgCisgICAgNjc1NzMsIDY3NTg1LCA2NzU5NiwgNjc2MDYsIDY3NjE1LCA2NzYyNSwgNjc2MzYsIDY3NjQ2LCA2NzY1NywgNjc2NjksIAorICAgIDY3NjgwLCA2NzY5MCwgNjc3MDEsIDY3NzEzLCA2NzcyNCwgNjc3MzYsIDY3NzQ5LCA2Nzc2MSwgNjc3NzIsIDY3NzgyLCAKKyAgICA2Nzc5MSwgNjc3OTksIDY3ODA2LCA2NzgxNCwgNjc4MjMsIDY3ODMxLCA2Nzg0MCwgNjc4NTAsIDY3ODU5LCA2Nzg2NywgCisgICAgNjc4NzYsIDY3ODg2LCA2Nzg5NSwgNjc5MDUsIDY3OTE2LCA2NzkyNiwgNjc5MzUsIDY3OTQzLCA2Nzk1MiwgNjc5NjIsIAorICAgIDY3OTcxLCA2Nzk4MSwgNjc5OTIsIDY4MDAyLCA2ODAxMSwgNjgwMjEsIDY4MDMyLCA2ODA0MiwgNjgwNTMsIDY4MDY1LCAKKyAgICA2ODA3NiwgNjgwODYsIDY4MDk1LCA2ODEwMywgNjgxMTIsIDY4MTIyLCA2ODEzMSwgNjgxNDEsIDY4MTUyLCA2ODE2MiwgCisgICAgNjgxNzEsIDY4MTgxLCA2ODE5MiwgNjgyMDIsIDY4MjEzLCA2ODIyNSwgNjgyMzYsIDY4MjQ2LCA2ODI1NSwgNjgyNjUsIAorICAgIDY4Mjc2LCA2ODI4NiwgNjgyOTcsIDY4MzA5LCA2ODMyMCwgNjgzMzAsIDY4MzQxLCA2ODM1MywgNjgzNjQsIDY4Mzc2LCAKKyAgICA2ODM4OSwgNjg0MDEsIDY4NDEyLCA2ODQyMiwgNjg0MzEsIDY4NDM5LCA2ODQ0OCwgNjg0NTgsIDY4NDY3LCA2ODQ3NywgCisgICAgNjg0ODgsIDY4NDk4LCA2ODUwNywgNjg1MTcsIDY4NTI4LCA2ODUzOCwgNjg1NDksIDY4NTYxLCA2ODU3MiwgNjg1ODIsIAorICAgIDY4NTkxLCA2ODYwMSwgNjg2MTIsIDY4NjIyLCA2ODYzMywgNjg2NDUsIDY4NjU2LCA2ODY2NiwgNjg2NzcsIDY4Njg5LCAKKyAgICA2ODcwMCwgNjg3MTIsIDY4NzI1LCA2ODczNywgNjg3NDgsIDY4NzU4LCA2ODc2NywgNjg3NzcsIDY4Nzg4LCA2ODc5OCwgCisgICAgNjg4MDksIDY4ODIxLCA2ODgzMiwgNjg4NDIsIDY4ODUzLCA2ODg2NSwgNjg4NzYsIDY4ODg4LCA2ODkwMSwgNjg5MTMsIAorICAgIDY4OTI0LCA2ODkzNCwgNjg5NDUsIDY4OTU3LCA2ODk2OCwgNjg5ODAsIDY4OTkzLCA2OTAwNSwgNjkwMTYsIDY5MDI4LCAKKyAgICA2OTA0MSwgNjkwNTMsIDY5MDY2LCA2OTA4MCwgNjkwOTMsIDY5MTA1LCA2OTExNiwgNjkxMjYsIDY5MTM1LCA2OTE0MywgCisgICAgNjkxNTAsIDY5MTU1LCA4MDU4LCA2OTE2MiwgMzI1NjgsIDY5MTY3LCA2OTE3MiwgMzI1NzMsIDY5MTc4LCAyMDkxNiwgCisgICAgMzI1NzgsIDY5MTgzLCA2OTE4OSwgNjkxOTcsIDY5MjAzLCA2OTIwOSwgNjkyMTYsIDY5MjIzLCA2OTIyOCwgNjkyMzIsIAorICAgIDY5MjM1LCA2OTIzOSwgNjkyNDgsIDY5MjU0LCA2OTI2NiwgNjkyNzcsIDY5MjgxLCAzMDgxLCA4MDMzLCA2OTI4NiwgCisgICAgNjkyODksIDY5MjkxLCA2OTI5NSwgNjkyOTksIDY5MzAzLCA2OTMwOSwgNjkzMTQsIDI1OTI3LCA2OTMxOSwgNjkzMjMsIAorICAgIDY5MzI2LCA2OTMzMSwgNjkzMzUsIDY5MzQyLCA2OTM0OCwgNjkzNTIsIDYxNzAsIDY5MzU2LCAzMjU5NSwgNjkzNjEsIAorICAgIDY5MzY4LCA2OTM3NywgNjkzODUsIDY5Mzk2LCA2OTQwNCwgNjk0MTIsIDY5NDE5LCA2OTQyNiwgNjk0MzIsIDY5NDQzLCAKKyAgICAzMjYwMCwgNjk0NDgsIDY5NDU5LCA2OTQ3MSwgNjk0NzksIDY5NDkwLCA2OTQ5OSwgNjk1MTAsIDY5NTE1LCA2OTUyMywgCisgICAgMjU1NiwgNjk1MjgsIDM0MjcwLCA2OTU0MSwgNjk1NDUsIDY5NTU3LCA2OTU2NSwgNjk1NzAsIDY5NTc4LCAxNzQ3MiwgCisgICAgNjk1ODksIDY5NTk1LCA2OTYwMiwgNjk2MTAsIDY5NjE2LCAzMjYxMCwgNjk2MjEsIDM5MTQsIDU4MjE3LCA2OTYyOCwgCisgICAgNjk2MzEsIDY5NjM5LCA2OTY1MiwgNjk2NjUsIDY5Njc4LCA2OTY5MSwgNjk2OTgsIDY5NzA5LCA2OTcxOCwgNDE2ODcsIAorICAgIDQxNjkyLCA2OTcyMywgNjk3MjcsIDY5NzM1LCA2OTc0MiwgNjk3NTEsIDY5NzU5LCA2OTc2NSwgNjk3NzQsIDY5NzgyLCAKKyAgICA2OTc5MCwgNjk3OTQsIDY5ODAzLCA2OTgxMiwgNjk4MjIsIDY5ODM1LCA2OTg0OCwgNjk4NTgsIDMyNjE1LCA2OTg2NCwgCisgICAgNjk4NzEsIDY5ODc3LCAzMjYyMSwgNjk4ODIsIDY5ODg1LCA2OTg4OSwgNjk4OTcsIDY5OTA2LCA0MTQyNSwgNjk5MTQsIAorICAgIDY5OTIzLCA2OTkzMSwgNjk5MzgsIDY5OTQ2LCA2OTk1NiwgNjk5NjUsIDY5OTc0LCA2OTk4MywgNjk5OTEsIDcwMDAyLCAKKyAgICA3MDAxMiwgOTM1OSwgMjE1NTQsIDcwMDIxLCA3MDAyNiwgNzAwMzEsIDcwMDM1LCA3MDAzOSwgNzAwNDQsIDcwMDUwLCAKKyAgICA3MDA1NSwgNzAwNjAsIDcwMDY2LCA3MDA3MSwgNzAwNzYsIDIxNTE5LCA3MDA4MSwgNzAwODgsIDcwMDk2LCA3MDEwNCwgCisgICAgNzAxMDksIDcwMTE2LCA3MDEyMywgNzAxMjgsIDcwMTMyLCA3MDEzNiwgNzAxNDQsIDcwMTUyLCAzMjYzOCwgNzAxNTgsIAorICAgIDcwMTY0LCA3MDE3NiwgNzAxODIsIDcwMTg2LCA3MDE5MywgNzAxOTgsIDcwMjA5LCA3MDIxOSwgNzAyMjksIDcwMjQxLCAKKyAgICA3MDI0NywgNzAyNTcsIDcwMjY3LCAzMjY2NSwgNzAyNzYsIDcwMjg1LCA3MDI5MSwgNzAzMDMsIDcwMzE0LCA3MDMyMSwgCisgICAgNzAzMjYsIDcwMzMwLCA3MDMzOCwgNzAzNDQsIDcwMzQ5LCA3MDM1NCwgNzAzNjEsIDcwMzY5LCA3MDM4MSwgNzAzOTEsIAorICAgIDcwNDAwLCA3MDQwOSwgNzA0MTYsIDM0MTMyLCAyMzgzNCwgNzA0MjIsIDcwNDI3LCA3MDQzMSwgNzA0MzUsIDcwNDQwLCAKKyAgICA3MDQ0NiwgNzA0NTcsIDcwNDcwLCA3MDQ3NSwgNzA0ODIsIDMyNjcwLCA3MDQ4NywgNzA0OTksIDcwNTA4LCA3MDUxOCwgCisgICAgNzA1MjksIDcwNTQyLCA3MDU0OSwgNzA1NTgsIDcwNTY3LCA3MDU3NSwgNzA1ODAsIDcwNTg2LCAxMDU4LCA3MDU5MSwgCisgICAgNzA1OTYsIDcwNjAxLCA3MDYwNiwgNzA2MTIsIDcwNjE3LCA3MDYyMiwgNzA2MjgsIDcwNjM0LCA3MDYzOSwgNzA2NDMsIAorICAgIDcwNjQ4LCA3MDY1MywgNzA2NTgsIDU4NzI5LCA3MDY2MywgNzA2NjgsIDcwNjczLCA3MDY3OCwgNzA2ODQsIDcwNjkwLCAKKyAgICA3MDY5NSwgNzA2OTksIDcwNzA0LCA3MDcwOSwgNzA3MTQsIDcwNzIwLCA3MDcyNSwgNzA3MzEsIDcwNzM2LCA3MDc0MSwgCisgICAgNzA3NDYsIDcwNzUxLCA3MDc1NSwgNzA3NjEsIDcwNzY2LCA3MDc3NSwgNzA3ODAsIDcwNzg1LCA3MDc5MCwgNzA3OTUsIAorICAgIDcwNzk5LCA3MDgwNiwgNzA4MTIsIDE3MTIyLCAxNzEyOSwgNzA4MTcsIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCAKKyAgICA0NTQ4NywgNzA4MzcsIDcwNzY3LCA3MDgzOSwgNzA4NDksIDMyNjc5LCA3MDg1MiwgNzA4NjEsIDcwODY3LCA2MTQzLCAKKyAgICAzMjY4NCwgNzA4NzEsIDcwODc3LCA3MDg4MiwgNzA4ODgsIDcwODkzLCA3MDg5NywgNzA5MDQsIDcwOTA5LCA3MDkxOSwgCisgICAgNzA5MjgsIDcwOTMyLCA3MDkzOCwgNzA5NDQsIDcwOTUwLCA3MDk1NCwgNzA5NjIsIDcwOTY5LCA3MDk3NywgNzA5ODUsIAorICAgIDMyNjg5LCA3MDk5MiwgNzA5OTUsIDcxMDAyLCA3MTAwOCwgNzEwMTMsIDcxMDE3LCA3MTAyMywgNzEwMzAsIDcxMDM1LCAKKyAgICA3MTAzOSwgNzEwNDgsIDcxMDU2LCA3MTA2MiwgNzEwNjcsIDMyNjk0LCA3MTA3NCwgNzEwODEsIDcxMDg3LCA3MTA5MiwgCisgICAgNzEwOTgsIDcxMTA1LCA3MTExMSwgMjEyODEsIDI3NDM4LCA3MTExNywgNzExMjIsIDcxMTI4LCA3MTE0MCwgNzA4MDAsIAorICAgIDcwODA3LCAyMTQ1NywgNzExNTAsIDcxMTU1LCA3MTE2MiwgNzExNjgsIDcxMTc1LCA3MTE4MSwgNzExOTIsIDcxMTk3LCAKKyAgICA5MTAzLCA3MTIwNSwgNzEyMDgsIDcxMjE0LCA3MTIxOCwgNzEyMjIsIDcxMjI1LCA3MTIzMSwgMzI0NDMsIDYxOTQsIDk2NCwgCisgICAgMTM0MTIsIDcxMjM4LCA3MTI0NCwgNzEyNTAsIDcxMjU2LCA3MTI2MiwgNzEyNjgsIDcxMjc0LCA3MTI4MCwgNzEyODYsIAorICAgIDcxMjkxLCA3MTI5NiwgNzEzMDEsIDcxMzA2LCA3MTMxMSwgNzEzMTYsIDcxMzIxLCA3MTMyNiwgNzEzMzEsIDcxMzM2LCAKKyAgICA3MTM0MSwgNzEzNDYsIDcxMzUxLCA3MTM1NywgNzEzNjIsIDcxMzY3LCA3MTM3MywgNzEzNzgsIDcxMzgzLCA3MTM4OSwgCisgICAgNzEzOTUsIDcxNDAxLCA3MTQwNywgNzE0MTMsIDcxNDE5LCA3MTQyNSwgNzE0MzEsIDcxNDM3LCA3MTQ0MiwgNzE0NDcsIAorICAgIDcxNDUzLCA3MTQ1OCwgNzE0NjMsIDcxNDY5LCA3MTQ3NCwgNzE0NzksIDcxNDg0LCA3MTQ4OSwgNzE0OTQsIDcxNDk5LCAKKyAgICA3MTUwNCwgNzE1MDksIDcxNTE0LCA3MTUxOSwgNzE1MjQsIDcxNTI5LCA3MTUzNSwgNzE1NDAsIDcxNTQ1LCA3MTU1MCwgCisgICAgNzE1NTYsIDcxNTYxLCA3MTU2NiwgNzE1NzEsIDcxNTc2LCA3MTU4MiwgNzE1ODcsIDcxNTkyLCA3MTU5NywgNzE2MDIsIAorICAgIDcxNjA3LCA3MTYxMiwgNzE2MTcsIDcxNjIyLCA3MTYyNywgNzE2MzIsIDcxNjM3LCA3MTY0MiwgNzE2NDcsIDcxNjUyLCAKKyAgICA3MTY1NywgNzE2NjIsIDcxNjY3LCA3MTY3MiwgNzE2NzcsIDcxNjgzLCA3MTY4OCwgNzE2OTMsIDcxNjk4LCA3MTcwMywgCisgICAgNzE3MDgsIDcxNzEzLCA3MTcxOCwgMTg2NCwgMTQyLCA3MTcyMywgNzE3MjcsIDcxNzMxLCA3MTczNiwgNzE3NDQsIDcxNzQ4LCAKKyAgICA3MTc1NSwgNzE3NjMsIDcxNzY3LCA3MTc4MCwgNzE3ODgsIDcxNzkyLCA3MTc5NSwgNzE4MDAsIDcxODA0LCA3MTgwOSwgCisgICAgNzE4MTMsIDcxODIxLCA3MTgyNSwgMjA5MjQsIDcxODMwLCA3MTgzNCwgNjA5MzAsIDcxODM4LCA3MTg0MSwgNzE4NDksIAorICAgIDcxODU3LCA3MTg2NSwgNzE4NzAsIDcxODc3LCA3MTg4MywgNzE4ODksIDcxODk0LCA3MTkwMSwgNzE5MDYsIDcxOTE0LCAKKyAgICA2NDkwNiwgNzE5MjEsIDcxOTI2LCA3MTkzMSwgNzE5MzUsIDExNjM4LCA3MTkzOSwgNzE5NDQsIDcxOTQ5LCA3MTk1MywgCisgICAgNzE5NTYsIDcxOTYyLCA3MTk2NiwgNzE5NzYsIDcxOTg1LCA3MTk4OCwgNzE5OTIsIDcxOTk5LCA3MjAxMiwgNzIwMTgsIAorICAgIDcyMDI2LCA3MjAzNywgNzIwNDgsIDcyMDU5LCA3MjA3MCwgNzIwNzksIDcyMDg1LCA3MjA5NCwgNzIxMDIsIDcyMTEyLCAKKyAgICA3MjEyNSwgNzIxMzIsIDcyMTQzLCA3MjE0OSwgNzIxNTQsIDcyMTU5LCA3MjE2NSwgNzIxNzEsIDcyMTgxLCA3MjE5MCwgCisgICAgNzA0ODksIDcyMTk4LCA3MjIwNCwgNzIyMTIsIDcyMjE4LCA3MjIyNiwgNzIyMjksIDcyMjMzLCA3MjIzNywgNzIyNDAsIAorICAgIDcyMjQ2LCA3MjI1MiwgNzIyNjAsIDcyMjcyLCA3MjI4NCwgNzIyOTEsIDcyMjk1LCA3MjMwNiwgNzIzMTQsIDcyMzIxLCAKKyAgICA3MjMzMywgNzIzNDEsIDcyMzQ5LCA3MjM1NiwgNzIzNjIsIDcyMzcyLCA3MjM4MSwgNzIzODYsIDcyMzk2LCA3MjQwNSwgCisgICAgNDA3NTEsIDcyNDEyLCA3MjQxNiwgNzI0MjEsIDcyNDI5LCA3MjQzNiwgNzI0NDIsIDcyNDQ2LCA3MjQ1NiwgNzI0NjcsIAorICAgIDcyNDc1LCA3MjQ4MiwgNzI0OTQsIDcyNTA2LCA3MjUxNSwgNjk1MzEsIDcyNTIyLCA3MjUzMywgNzI1NDcsIDcyNTU1LCAKKyAgICA3MjU2NSwgNzI1NzIsIDcyNTgwLCA3MjU5MiwgNzI2MDEsIDcyNjA5LCA3MjYxOSwgNzI2MzAsIDcyNjQyLCA3MjY1MSwgCisgICAgNzI2NjEsIDcyNjY4LCA3MjY3NywgNzI2OTIsIDcyNzAwLCA3MjcxMCwgNzI3MTksIDcyNzI3LCA3Mjc0MCwgNzI3NTUsIAorICAgIDcyNzU5LCA3Mjc2OCwgNzI3ODAsIDcyNzkxLCA3MjgwMiwgNzI4MTMsIDcyODIzLCA3MjgzNCwgNzI4NDIsIDcyODQ4LCAKKyAgICA3Mjg1OCwgNzI4NjYsIDcyODcyLCAyOTAwNywgNzI4NzcsIDcyODgzLCA3Mjg4OCwgNzI4OTUsIDk3MDEsIDE3NDkyLCAKKyAgICA3MjkwMSwgNzI5MTAsIDcyOTE1LCA3MjkxOSwgNzI5MjYsIDcyOTMyLCA3MjkzNywgNzI5NDIsIDcyOTUwLCA3Mjk1OCwgCisgICAgNzI5NjIsIDcyOTY1LCA3Mjk2OCwgNzI5NzAsIDcyOTc3LCA3Mjk4MywgNzI5OTQsIDcyOTk5LCA3MzAwMywgNzMwMTAsIAorICAgIDczMDE2LCA3MzAyMSwgNzMwMjksIDY1NDA1LCA2NTQxNSwgNzMwMzUsIDczMDQyLCA3MzA1MiwgMTA2MTEsIDczMDU5LCAKKyAgICA3MzA2NCwgMjkyMDMsIDczMDczLCA3MzA3OCwgNzMwODUsIDczMDk1LCA3MzEwMywgNzMxMTEsIDczMTIwLCA3MzEyNiwgCisgICAgNzMxMzIsIDczMTM5LCA3MzE0NiwgNzMxNTEsIDczMTU1LCA3MzE2MywgNzMxNjgsIDczMTczLCA3MzE4MSwgNzMxODgsIAorICAgIDczMTkzLCA3MzE5OSwgNzMyMDIsIDczMjA2LCA3MzIxNSwgNzE3NzUsIDczMjI0LCA3MzIyOCwgNzMyMzQsIDczMjQ1LCAKKyAgICA3MzI1NSwgMTc1MDEsIDczMjY2LCA3MzI3NCwgMTc1MTMsIDczMjgxLCA3MzI4NSwgNzMyOTQsIDI3MzI0LCA3MzMwMSwgCisgICAgNzMzMDUsIDczMzEwLCA3MzMyNywgNzMzMzksIDEwNTY5LCA3MzM1MSwgNzMzNTYsIDczMzYxLCA3MzM2NiwgMjA5OTcsIAorICAgIDczMzcwLCA3MzM3NSwgNzMzODAsIDczMzg2LCA3MzM5MSwgNTg0NiwgMjEwMDEsIDczMzk2LCA3MzQwMSwgNzM0MDcsIAorICAgIDczNDE0LCA3MzQxOSwgNzM0MjQsIDczNDMwLCA3MzQzNiwgNzM0NDIsIDczNDQ3LCA3MzQ1MywgNzM0NTcsIDczNDcxLCAKKyAgICA3MzQ3OSwgNzM0ODcsIDczNDkzLCA3MzQ5OCwgNzM1MDUsIDczNTE1LCA3MzUyNCwgNzM1MjksIDczNTM0LCA3MzU0MiwgCisgICAgNzM1NDcsIDczNTUzLCA3MzU1OCwgNzM1NjcsIDU5Nzg2LCA3MzU3MiwgNzM1NzUsIDczNTkzLCA3MzYxMiwgNzM2MjUsIAorICAgIDczNjM5LCA3MzY1NSwgNzM2NjIsIDczNjY5LCA3MzY3NSwgNzM2ODIsIDczNjg3LCA3MzY5MywgNzM2OTksIDczNzA3LCAKKyAgICA3MzcxMywgNzM3MTgsIDczNzIzLCA3MzczOSwgMTA1ODIsIDczNzUzLCA3Mzc2MCwgNzM3NjgsIDczNzc0LCA3Mzc3OCwgCisgICAgNzM3ODEsIDczNzg2LCA3Mzc5MSwgNzM3OTgsIDczODAzLCA3MzgxMiwgNzM4MTcsIDczODIzLCA3MzgzMiwgNzM4NDEsIAorICAgIDczODQ2LCA3Mzg1MCwgNzM4NTgsIDczODY3LCAxMTY2NywgNzM4NzYsIDczODg0LCA3Mzg4OSwgNzM4OTUsIDExNjc4LCAKKyAgICA3MzkwMCwgNzM5MDMsIDczOTA4LCA3MzkxOCwgNzM5MjcsIDczOTMyLCA3MzkzOCwgNzM5NDMsIDczOTUxLCA3Mzk1OCwgCisgICAgNzM5NjksIDczOTc5LCA3Mzk4NCwgNjQ4MzQsIDczOTg5LCA3Mzk5NSwgNzQwMDAsIDc0MDA3LCA3NDAxNiwgNzQwMjQsIAorICAgIDc0MDMwLCA3NDAzNiwgNzQwNDMsIDc0MDQ5LCA3NDA1MywgMTY5NDcsIDMwNTUsIDc0MDU4LCA3NDA2MiwgNzQwNjYsIAorICAgIDc0MDcyLCA3NDA4MSwgNzQwODcsIDc0MDk0LCA3NDA5OCwgNzQxMTksIDc0MTQxLCA3NDE1NywgNzQxNzQsIDc0MTkzLCAKKyAgICA3NDIwMiwgNzQyMTIsIDc0MjE5LCA3NDIyNiwgMjcyMTEsIDc0MjMyLCA3NDIzNiwgNzQyNDQsIDc0MjU2LCA3NDI2MiwgCisgICAgNzQyNzAsIDc0Mjc0LCA3NDI4MiwgNzQyODksIDc0MjkzLCA3NDI5OSwgNzQzMDUsIDc0MzEwLCAzNTYzLCA0MTg4NywgCisgICAgNzQzMTYsIDc0MzIwLCA3NDMyNCwgNzQzMjgsIDc0MzMzLCA3NDMzOCwgNzQzNDMsIDc0MzQ5LCA3NDM1NSwgNzQzNjEsIAorICAgIDc0MzY4LCA3NDM3NCwgNzQzODEsIDc0Mzg3LCA3NDM5MywgNzQzOTgsIDc0NDA0LCA3NDQwOSwgNzQ0MTMsIDc0NDE4LCAKKyAgICA3NDQyMiwgNzQ0MjcsIDQxOTAyLCA3NDQzMSwgNzQ0MzYsIDc0NDQ0LCA3NDQ0OCwgNzQ0NTMsIDc0NDYwLCA3NDQ2OSwgCisgICAgNzQ0NzUsIDc0NDc5LCA3NDQ4NiwgNzQ0OTAsIDc0NDkzLCA3NDUwMCwgNzQ1MDksIDc0NTE0LCA3NDUxOCwgNzQ1MjYsIAorICAgIDc0NTM1LCA3NDUzOSwgNzQ1NDcsIDc0NTUzLCA3NDU1OCwgNzQ1NjMsIDc0NTY5LCA3NDU3NSwgNzQ1ODAsIDc0NTg0LCAKKyAgICA3NDU5MCwgNzQ1OTUsIDc0NTk5LCA3NDYwMywgNzQ2MDYsIDc0NjExLCA3NDYxOSwgNzQ2MjksIDc0NjM0LCAzOTM4NywgCisgICAgNzQ2NDIsIDc0NjU0LCA3NDY1OCwgNzQ2NjQsIDc0Njc2LCA3NDY4NywgNzQ2OTQsIDc0NzAwLCA3NDcwNywgNzQ3MTksIAorICAgIDc0NzI2LCA3NDczMiwgMjEwNzUsIDc0NzM2LCA3NDc0MiwgNzQ3NDksIDc0NzU1LCA3NDc2MSwgNzQ3NjYsIDc0NzcxLCAKKyAgICA3NDc3NiwgNzQ3ODUsIDcwMzMsIDc0NzkwLCAxNjQxMywgNzQ3OTYsIDc0ODAwLCA3NDgwNCwgNzQ4MDgsIDc0ODE2LCAKKyAgICA3NDgyNSwgNzQ4MjksIDc0ODM2LCA3NDg0NSwgNzQ4NTgsIDc0ODY0LCA3NDQyMywgMzAwNjcsIDc0ODY5LCA3NDg3MSwgCisgICAgNzQ4NzYsIDc0ODgxLCA3NDg4NiwgNzQ4OTEsIDc0ODk2LCA3NDkwMSwgNzQ5MDYsIDc0OTExLCA3NDkxNiwgNzQ5MjEsIAorICAgIDc0OTI2LCA3NDkzMSwgNzQ5MzYsIDc0OTQxLCA3NDk0NywgNzQ5NTIsIDc0OTU3LCA3NDk2MiwgNzQ5NjcsIDc0OTcyLCAKKyAgICA3NDk3NywgNzQ5ODIsIDc0OTg3LCA3NDk5MywgNzQ5OTksIDc1MDA1LCA3NTAxMCwgNzUwMTUsIDc1MDI3LCA3NTAzMiwgCisgICAgMTg3MCwgNDksIDc1MDM3LCA3NTA0MiwgMzI3MjEsIDc1MDQ2LCAzMjcyNiwgMzI3MzEsIDMyNzM3LCAzMjc0MiwgNzUwNTAsIAorICAgIDMyNzQ3LCAyMjA3MCwgNzUwNzIsIDc1MDc2LCA3NTA4MCwgNzUwODUsIDc1MDg5LCAzMjc1MSwgNzUwOTMsIDc1MTAxLCAKKyAgICAzMjc1NiwgNzUxMDgsIDc1MTExLCA3NTExNiwgNzUxMjAsIDk1MzYsIDc1MTI5LCAzMjc2MSwgMjE5MzIsIDc1MTMyLCAKKyAgICA3NTEzNiwgMTQyOCwgNzUxNDEsIDMyNzcyLCA3NTE0NCwgNzUxNDksIDI1NzIwLCAyNTczMCwgMzUyMzMsIDc1MTU0LCAKKyAgICA3NTE1OSwgNzUxNjQsIDc1MTY5LCA3NTE3NSwgNzUxODAsIDc1MTg5LCA3NTE5NCwgNzUyMDEsIDc1MjA3LCA3NTIxMiwgCisgICAgNzUyMTcsIDc1MjIyLCA3NTIzMiwgNzUyNDEsIDc1MjQ2LCA3NTI1NCwgNzUyNTgsIDc1MjY2LCAzMjU4NiwgMzcyODgsIAorICAgIDc1MjczLCA3NTI3OSwgNzUyODQsIDc1Mjg5LCAxMjAwOSwgNzUyOTQsIDc1MzAwLCA3NTMwNSwgNzUzMTIsIDc1MzE4LCAKKyAgICA3NTMyMywgNzUzMzEsIDc1MzQxLCA3NTM1MSwgNzUzNTcsIDc1MzYyLCA3NTM2OCwgMTc1MjMsIDc1Mzc1LCAzNjA0OCwgCisgICAgNzUzODgsIDc1MzkzLCA3NTM5OSwgMzA5NjgsIDc1NDEyLCA3NTQxOCwgNzU0MjIsIDc1NDMxLCA3NTQzOCwgNzU0NDQsIAorICAgIDc1NDUyLCA3NTQ2MSwgNzU0NjgsIDc1NDc0LCA3NTQ3NywgNzU0ODEsIDI1ODYxLCA3NTQ4NSwgNzU0OTIsIDc1NDk4LCAKKyAgICA3NTUwNiwgNzU1MTEsIDIzOTc3LCA3NTUxNywgNzU1MjAsIDc1NTI4LCA3NTUzNiwgNzU1NTAsIDc1NTU3LCA3NTU2MywgCisgICAgNzU1NzAsIDc1NTc2LCAzMjc4NiwgNzU1ODAsIDc1NTg3LCA3NTU5NSwgNzU2MDMsIDc1NjA5LCAzMjc5MSwgNzU2MTcsIAorICAgIDc1NjIzLCA3NTYyOCwgNzU2MzgsIDc1NjQ0LCA3NTY1MywgMzA4MDUsIDM0NjkxLCA3NTY2MSwgNzU2NjYsIDc1NjcxLCAKKyAgICA3NTY3NSwgNzU2ODAsIDc1Njg0LCA3NTY5MiwgMTQ5MDcsIDM5NDAwLCA3NTY5NywgNzU3MDIsIDMyNzk2LCA2MjIzMiwgCisgICAgNzU3MDYsIDc1NzExLCA3NTcxNSwgNzU3MjQsIDc1NzMyLCA3NTczOCwgNzU3NDMsIDc1NzQ5LCA3NTc1NiwgNzU3NjIsIAorICAgIDc1NzY3LCA3NTc3MiwgNzU3ODEsIDc1NzkzLCA3NTgwOCwgMzMwNTgsIDc1ODE0LCAxNjUzMiwgMzI4MDAsIDc1ODE4LCAKKyAgICA3NTgyNSwgMjQwODcsIDc1ODMxLCA3NTgzOCwgNzU4NDcsIDc1ODU0LCA3NTg2MywgNzU4NjksIDc1ODc0LCA3NTg4MiwgCisgICAgNzU4ODgsIDMyODEwLCA3NTg5MywgNzU5MDIsIDc0NjgyLCA3NTkxMSwgNzU5MTgsIDc1OTI0LCA3NTkzMCwgNzU5NDAsIAorICAgIDc1OTQ4LCA3NTk1NSwgNzU5NTksIDMyODE1LCA3NTk2MiwgMzI4MjEsIDMyODI3LCA3NTk2NywgNzU5NzUsIDc1OTgzLCAKKyAgICA3NTk5MywgNzYwMDIsIDc2MDEwLCA3NjAxNywgNzYwMjcsIDMyODMyLCA3NjAzMSwgNzYwMzMsIDc2MDM3LCA3NjA0MiwgCisgICAgNzYwNDYsIDc2MDUwLCA3NjA1NiwgNzYwNjEsIDc2MDY1LCA3NjA3NiwgNzYwODEsIDc2MDg2LCAzMDYwLCA3NjA5MCwgCisgICAgNzYwOTcsIDc2MTAxLCA3NjExMCwgNzYxMTgsIDc2MTI1LCA3NjEzMCwgNzYxMzUsIDYyMjc4LCA3NjEzOSwgNzYxNDIsIAorICAgIDc2MTQ4LCA3NjE1NiwgNzYxNjIsIDc2MTY2LCA3NjE3MSwgNzYxNzgsIDc2MTgzLCA3NjE4OSwgMzQ3MjIsIDc2MTk0LCAKKyAgICA3NjE5NywgNzYyMDIsIDc2MjA2LCA3NjIxMSwgNzYyMTYsIDc2MjIwLCA3NjIyOCwgNzYyMzIsIDI1NzM5LCAyNTc0OCwgCisgICAgNzYyMzgsIDc2MjQ0LCA3NjI1MCwgNzYyNTUsIDc2MjU5LCA3NjI2MiwgNzYyNzIsIDc2MjgxLCA3NjI4NiwgNzYyOTIsIAorICAgIDc2Mjk5LCA3NjMwNSwgNzYzMDksIDc2MzE3LCA3NjMyMiwgMzQ3MjgsIDc2MzI2LCA3NjMzNCwgNzYzNDAsIDc2MzQ3LCAKKyAgICA3NjM1MiwgNzYzNTYsIDc2MzYxLCA1ODQwMywgMzQ3MzQsIDc2MzY3LCA3NjM3MiwgNzYzNzYsIDc2MzgxLCA3NjM4NiwgCisgICAgNzYzOTEsIDc2Mzk1LCA3NjQwMCwgNzY0MDUsIDc2NDExLCA3NjQxNiwgNzY0MjEsIDc2NDI3LCA3NjQzMywgNzY0MzgsIAorICAgIDc2NDQyLCA3NjQ0NywgNzY0NTIsIDc2NDU3LCA3NjQ2MSwgMjQwODYsIDc2NDY2LCA3NjQ3MSwgNzY0NzcsIDc2NDgzLCAKKyAgICA3NjQ4OSwgNzY0OTQsIDc2NDk4LCA3NjUwMywgNzY1MDgsIDc2NTEzLCA3NjUxNywgNzY1MjIsIDc2NTI3LCA3NjUzMiwgCisgICAgNzY1MzcsIDc2NTQxLCAzMjg0MCwgNzY1NDksIDc2NTUzLCA3NjU2MSwgNzY1NjksIDc2NTgwLCA3NjU4NSwgNzY1ODksIAorICAgIDIyMzg0LCA3NjU5NCwgNzY2MDAsIDc2NjEwLCA3NjYxNywgNzY2MjIsIDc2NjMxLCA3NjYzNiwgNzY2NDAsIDc2NjQ1LCAKKyAgICA3NjY1MywgNzY2NjEsIDc2NjY4LCA2NTA2OCwgNzY2NzQsIDc2NjgyLCA3NjY4OSwgNzY3MDAsIDc2NzA2LCA3NjcxMCwgCisgICAgNzY3MTYsIDMyODUwLCA3NjcxOSwgNzY3MjYsIDc2NzM0LCA3NjczOSwgMzk1OTEsIDc2NzQzLCA3Njc0OCwgNzY3NTUsIAorICAgIDc2NzYwLCA4OTg1LCA3Njc2NCwgNzY3NzIsIDc2Nzc5LCA3Njc4NiwgNzY3OTIsIDc2ODA2LCA2MzM0MCwgNzY4MTQsIAorICAgIDc2ODIwLCA3NjgyNCwgNzY4MjcsIDc2ODM1LCA3Njg0MiwgNzY4NDcsIDc2ODYwLCA3Njg2NywgNzY4NzEsIDc2ODc4LCAKKyAgICA3Njg4MywgNjA4MjMsIDc2ODg4LCA3Njg5MSwgNzY4OTgsIDc2OTA0LCA3NjkwOCwgNzY5MTYsIDc2OTI1LCA3NjkzNSwgCisgICAgNzY5NDUsIDc2OTU0LCA3Njk2MiwgNzY5NzMsIDc2OTc4LCA3Njk4MiwgNzY5ODcsIDc2OTkxLCAzNTM2NCwgNzY5OTksIAorICAgIDIxMzQ0LCAzNTM3MywgNzcwMDQsIDc3MDA5LCA3NzAxNCwgNzcwMTksIDc3MDI0LCA3NzAyOSwgNzcwMzQsIDc3MDM4LCAKKyAgICA3NzA0MywgNzcwNDgsIDc3MDUzLCA3NzA1OCwgNzcwNjMsIDc3MDY4LCA3NzA3MiwgNzcwNzcsIDc3MDgyLCA3NzA4NiwgCisgICAgNzcwOTAsIDc3MDk0LCA3NzA5OCwgNzcxMDMsIDc3MTA4LCA3NzExMiwgNzcxMTcsIDc3MTIxLCA3NzEyNSwgNzcxMzAsIAorICAgIDc3MTM1LCA3NzE0MCwgNzcxNDUsIDc3MTQ5LCA3NzE1NCwgNzcxNTksIDc3MTYzLCA3NzE2OCwgNzcxNzMsIDc3MTc4LCAKKyAgICA3NzE4MywgNzcxODgsIDc3MTkzLCA3NzE5OCwgNzcyMDMsIDc3MjA4LCA3NzIxMywgNzcyMTgsIDc3MjIzLCA3NzIyOCwgCisgICAgNzcyMzMsIDc3MjM4LCA3NzI0MywgNzcyNDgsIDc3MjUzLCA3NzI1OCwgNzcyNjMsIDc3MjY3LCA3NzI3MiwgNzcyNzcsIAorICAgIDc3MjgyLCA3NzI4NywgNzcyOTIsIDc3Mjk3LCA3NzMwMiwgNzczMDcsIDc3MzEyLCA3NzMxNywgNzczMjIsIDc3MzI2LCAKKyAgICA3NzMzMSwgNzczMzUsIDc3MzQwLCA3NzM0NSwgNzczNTAsIDc3MzU1LCA3NzM2MCwgNzczNjUsIDc3MzcwLCA3NzM3NSwgCisgICAgNzczODAsIDc3Mzg0LCA3NzM4OCwgNzczOTMsIDc3Mzk4LCA3NzQwMiwgNzc0MDcsIDc3NDEyLCA3NzQxNiwgNzc0MjEsIAorICAgIDc3NDI2LCA3NzQzMSwgNzc0MzYsIDc3NDQwLCA3NzQ0NSwgNzc0NTAsIDc3NDU0LCA3NzQ1OSwgNzc0NjMsIDc3NDY3LCAKKyAgICA3NzQ3MSwgNzc0NzUsIDc3NDgwLCA3NzQ4NCwgNzc0ODgsIDc3NDkyLCA3NzQ5NiwgNzc1MDAsIDc3NTA0LCA3NzUwOCwgCisgICAgNzc1MTIsIDc3NTE2LCA3NzUyMSwgNzc1MjYsIDc3NTMxLCA3NzUzNiwgNzc1NDEsIDc3NTQ2LCA3NzU1MSwgNzc1NTYsIAorICAgIDc3NTYxLCA3NzU2NiwgNzc1NzAsIDc3NTc0LCA3NzU3OCwgNzc1ODIsIDc3NTg2LCA3NzU5MCwgNzc1OTUsIDc3NTk5LCAKKyAgICA3NzYwNCwgNzc2MDgsIDc3NjEzLCA3NzYxOCwgNzc2MjIsIDc3NjI2LCA3NzYzMSwgNzc2MzUsIDc3NjM5LCA3NzY0MywgCisgICAgNzc2NDcsIDc3NjUxLCA3NzY1NSwgNzc2NTksIDc3NjYzLCA3NzY2NywgNzc2NzEsIDc3Njc1LCA3NzY3OSwgNzc2ODMsIAorICAgIDc3Njg3LCA3NzY5MiwgNzc2OTcsIDc3NzAxLCA3NzcwNSwgNzc3MDksIDc3NzEzLCA3NzcxNywgNzc3MjEsIDc3NzI2LCAKKyAgICA3NzczMCwgNzc3MzQsIDc3NzM4LCA3Nzc0MiwgNzc3NDYsIDc3NzUwLCA3Nzc1NSwgNzc3NTksIDc3NzY0LCA3Nzc2OCwgCisgICAgNzc3NzIsIDc3Nzc2LCA3Nzc4MCwgNzc3ODQsIDc3Nzg4LCA3Nzc5MiwgNzc3OTYsIDc3ODAwLCA3NzgwNCwgNzc4MDgsIAorICAgIDc3ODEzLCA3NzgxNywgNzc4MjEsIDc3ODI1LCA3NzgyOSwgNzc4MzMsIDc3ODM3LCA3Nzg0MSwgNzc4NDUsIDc3ODQ5LCAKKyAgICA3Nzg1MywgNzc4NTcsIDc3ODYyLCA3Nzg2NiwgNzc4NzAsIDc3ODc1LCA3Nzg4MCwgNzc4ODQsIDc3ODg4LCA3Nzg5MiwgCisgICAgNzc4OTYsIDc3OTAwLCA3NzkwNCwgNzc5MDgsIDc3OTEyLCA3NzkxNywgNzc5MjEsIDc3OTI2LCA3NzkzMCwgNzc5MzUsIAorICAgIDc3OTM5LCA3Nzk0NCwgNzc5NDgsIDc3OTU0LCA3Nzk1OSwgNzc5NjMsIDc3OTY4LCA3Nzk3MiwgNzc5NzcsIDc3OTgxLCAKKyAgICA3Nzk4NiwgNzc5OTAsIDc3OTk1LCAxNTIxLCA3Nzk5OSwgMjgyNCwgMTc1OSwgMTc2NCwgNzgwMDMsIDc4MDA3LCAyODI4LCAKKyAgICA3ODAxMSwgMTM5NywgNzgwMTYsIDEzNDIsIDc4MDIwLCAyODQwLCA3ODAyNCwgNzgwMzEsIDc4MDM4LCA3ODA1MiwgMjg0NCwgCisgICAgNzEzMSwgNzgwNjEsIDc4MDY5LCA3ODA3NiwgNzgwODcsIDc4MDk2LCA3ODEwMywgNzgxMTUsIDc4MTI4LCA3ODE0MSwgCisgICAgNzgxNTIsIDc4MTU3LCA3ODE2NCwgNzgxNzYsIDc4MTgwLCAyODQ4LCAxMTc0MCwgNzgxOTAsIDc4MTk1LCA3ODIwNCwgCisgICAgNzgyMTQsIDI4NTIsIDc4MjE5LCA3ODIyMywgNzgyMjgsIDc4MjM1LCA3ODI0MSwgNzgyNDksIDc4MjYxLCAxMzQ3LCAKKyAgICAxMzAzNSwgNzgyNzEsIDc4Mjc1LCA3ODI4MSwgNzgyOTUsIDc4MzA3LCA3ODMxOSwgNzgzMjksIDc4MzM4LCA3ODM0NywgCisgICAgNzgzNTYsIDc4MzY0LCA3ODM3NSwgNzgzODMsIDQwNTEsIDc4MzkzLCA3ODQwNCwgNzg0MTMsIDc4NDE5LCA3ODQzNCwgCisgICAgNzg0NDEsIDc4NDQ3LCAzNTQ4OSwgNzg0NTIsIDI4NzYsIDEzMDM5LCA3ODQ1NiwgNzg0NjMsIDg5MzAsIDc4NDcyLCAyODgxLCAKKyAgICAzMjMzNiwgNzg0NzgsIDYwNTcyLCA3ODQ4NSwgNzg0OTEsIDc4NTAyLCA3ODUwOCwgNzg1MTUsIDc4NTIxLCA3ODUyOSwgCisgICAgNzg1MzYsIDc4NTQyLCA3ODU1MiwgNzg1NjEsIDc4NTcyLCA3ODU3OSwgNzg1ODUsIDc4NTk1LCA3ODYwMywgNzg2MDksIAorICAgIDc4NjI0LCA3ODYzMCwgNzg2MzUsIDc4NjQyLCA3ODY0NSwgNzg2NTEsIDc4NjU4LCA3ODY2NCwgNzg2NzIsIDc4NjgxLCAKKyAgICA3ODY4OSwgNzg2OTUsIDc4NzA0LCA0MTQyNywgNzg3MTgsIDc4NzIzLCA3ODcyOSwgMTQ3NDQsIDc4NzM0LCA3ODc0NywgCisgICAgNzg3NTYsIDc4NzY0LCA3ODc3MSwgNzg3NzUsIDc4Nzc5LCA3ODc4MiwgNzg3ODksIDc4Nzk2LCA3ODgwNCwgNzg4MTIsIAorICAgIDc4ODIxLCA3ODgyOSwgMTQ2NzEsIDc4ODM3LCA3ODg0MiwgNzg4NDYsIDc4ODU4LCA3ODg2NSwgNzg4NzQsIDc0OCwgCisgICAgNzg4ODQsIDc4ODkzLCA3ODkwNCwgMjg5NywgNzg5MDgsIDc4OTEyLCA3ODkxOCwgNzg5MzEsIDc4OTQzLCA3ODk1MywgCisgICAgNzg5NjIsIDc4OTc0LCAyNjM1MiwgNzg5ODUsIDc4OTkzLCA3OTAwMiwgNzkwMTMsIDc5MDI0LCA3OTAzNCwgNzkwNDQsIAorICAgIDc5MDUzLCA3OTA2MSwgMTEzMDUsIDc5MDY4LCA3OTA3MiwgNzkwNzUsIDc5MDgwLCA3OTA4NSwgNzkwODksIDc5MDk1LCAKKyAgICAxMzUyLCAxMTgxMSwgNzkxMDIsIDc5MTEzLCA3OTEyMiwgNzkxMzAsIDc5MTM5LCA3OTE0NywgNzkxNjMsIDc5MTc0LCAKKyAgICA3OTE4MywgNzkxOTEsIDc5MjAzLCA3OTIxNCwgNzkyMzAsIDc5MjQwLCA3OTI2MSwgNzkyNzQsIDc5MjgyLCA3OTI4OSwgCisgICAgMTQ4NTUsIDc5MzAyLCA3OTMwNywgNzkzMTMsIDU5MDgsIDc5MzE5LCA3OTMyMiwgNzkzMjksIDc5MzM5LCA4MTc2LCAKKyAgICA3OTM0NiwgNzkzNTEsIDc5MzU2LCA3OTM2MSwgNzkzNjksIDc5Mzc4LCA3OTM4NiwgOTc0OSwgOTc1OCwgNzkzOTEsIAorICAgIDc5NDAyLCA3OTQwNywgNzk0MTMsIDI5MTMsIDI5MTgsIDc5NDE5LCAxMDg3MiwgNzk0MjUsIDc5NDMyLCA3OTQzOSwgCisgICAgNzk0NTIsIDIyNTEsIDY4LCA3OTQ1NywgNzk0NjIsIDc5NDcyLCA3OTQ3OCwgNzk0ODcsIDc5NDk1LCA3OTUwNSwgNzk1MDksIAorICAgIDc5NTE0LCA3OTUxOCwgNzk1MzAsIDI5NDEsIDc5NTM4LCA3OTU0NiwgNzk1NTEsIDc5NTYyLCA3OTU3MywgNzk1ODIsIAorICAgIDc5NTg3LCA3OTU5MywgNzk1OTgsIDc5NjA4LCA3OTYxOCwgNzk2MjMsIDc5NjI5LCA3OTYzNCwgNzk2NDMsIDIxMzk3LCAKKyAgICA3OTY0NywgNDEyOCwgMjAsIDc5NjUyLCA3OTY2MSwgNzk2NjgsIDc5Njc1LCA3OTY4MSwgNzk2ODcsIDg2NCwgNzk2OTIsIAorICAgIDc5Njk3LCA2MDkwMCwgNzk3MDIsIDc5NzA3LCA3OTcxMywgNzk3MTksIDc5NzI3LCA3OTczMiwgNzk3MzksIDc5NzQ1LCAKKyAgICA3OTc1MCwgMzgwMDEsIDQxMzIxLCA3OTc1NiwgMjk0NSwgMzIsIDc5NzY2LCA3OTc3OSwgNzk3ODQsIDc5NzkyLCA3OTc5NywgCisgICAgNzk4MDMsIDI5NjcsIDI4Mjg5LCA3OTgwOCwgNzk4MTYsIDc5ODIzLCA3OTgyOCwgNTg2NDUsIDYxOTAzLCA3OTgzNywgCisgICAgNzk4NDEsIDE3MDQsIDE4MTMsIDc5ODQ2LCA3OTg1MSwgNzk4NTgsIDE4MTcsIDI0NywgNzk4NjUsIDc5ODcxLCAyOTg5LCAKKyAgICA3OTg3NiwgNzk4ODEsIDc5ODg4LCAxODIxLCA3OTg5MywgNzk4OTksIDc5OTA0LCA3OTkxNiwgNjExOSwgNzk5MjYsIDE4MjgsIAorICAgIDc5OTMyLCA3OTkzNywgNzk5NDQsIDc5OTUxLCA3OTk2NiwgNzk5NzMsIDc5OTg0LCA3OTk5MiwgMjYxOCwgNzk5OTYsIAorICAgIDgwMDA4LCA4MDAxMywgODAwMTcsIDgwMDIzLCAyODExNCwgMjI1NiwgODAwMjcsIDgwMDM4LCA4MDA0MiwgODAwNDYsIAorICAgIDgwMDUyLCA4MDA1NiwgODAwNjUsIDgwMDY5LCA4MDA4MCwgODAwODQsIDIzMDIsIDMyMTY1LCA4MDA4OCwgODAwOTgsIAorICAgIDMwODAsIDkzNjQsIDgwMTA2LCA4MDExMSwgODAxMTUsIDgwMTI0LCA4MDEzMSwgODAxMzcsIDMwNTAsIDE3MTM5LCA4MDE0MSwgCisgICAgODAxNTQsIDgwMTcyLCA4MDE3NywgODAxODUsIDgwMTkzLCA4MDIwMywgOTk3OCwgMTMxNDcsIDgwMjE1LCA4MDIyOCwgCisgICAgODAyMzUsIDgwMjQyLCA4MDI1OCwgODAyNjUsIDgwMjcxLCAxMDk1LCA4MDI3OCwgODAyODUsIDgwMjk1LCA4MDMwNCwgCisgICAgODAzMTYsIDQyMjkxLCA4MDMyNCwgMzA2NCwgMTIwMjMsIDgwMzI3LCA4MDMzNSwgODAzMzksIDc4MjMxLCAzMDY4LCAKKyAgICA4MDM0MywgMjExNzgsIDEyMDM5LCAzNzU2LCA4MDM0NywgMzA3NCwgODAzNTEsIDgwMzYxLCA4MDM2NywgODAzNzMsIAorICAgIDgwMzc5LCA4MDM4NSwgODAzOTEsIDgwMzk3LCA4MDQwMywgODA0MDksIDgwNDE1LCA4MDQyMSwgODA0MjcsIDgwNDMzLCAKKyAgICA4MDQzOSwgODA0NDUsIDgwNDUxLCA4MDQ1NywgODA0NjMsIDgwNDY5LCA4MDQ3NSwgODA0ODEsIDgwNDg3LCA4MDQ5MywgCisgICAgODA0OTksIDgwNTA1LCA4MDUxMSwgODA1MTgsIDgwNTI1LCA4MDUzMSwgODA1MzcsIDgwNTQzLCA4MDU0OSwgODA1NTUsIAorICAgIDgwNTYxLCAxMzU3LCAxNjA0OSwgMTIwNjEsIDgwNTY3LCA4MDU3MiwgODA1NzcsIDgwNTgyLCA4MDU4NywgODA1OTIsIAorICAgIDgwNTk3LCA4MDYwMiwgODA2MDcsIDgwNjEyLCA4MDYxNywgODA2MjIsIDgwNjI3LCA4MDYzMiwgODA2MzcsIDgwNjQyLCAKKyAgICA4MDY0NywgODA2NTIsIDgwNjU3LCA4MDY2MiwgODA2NjcsIDgwNjcyLCA4MDY3NywgODA2ODIsIDgwNjg3LCA4MDY5MiwgCisgICAgODA2OTgsIDgwNzAzLCA4MDcwOCwgODA3MTQsIDgwNzE5LCA4MDcyNSwgODA3MzAsIDgwNzM1LCA4MDc0MSwgODA3NDYsIAorICAgIDgwNzUxLCA4MDc1NiwgODA3NjEsIDgwNzY2LCA4MDc3MSwgODA3NzYsIDgwNzgxLCA4MDM2MiwgODAzNjgsIDgwMzc0LCAKKyAgICA4MDM4MCwgODAzODYsIDgwMzkyLCA4MDM5OCwgODA0MDQsIDgwNDEwLCA4MDQxNiwgODA0MjIsIDgwNDI4LCA4MDQzNCwgCisgICAgODA0NDAsIDgwNDQ2LCA4MDc4NywgODA0NTIsIDgwNDU4LCA4MDQ2NCwgODA3OTMsIDgwNDcwLCA4MDQ3NiwgODA0ODIsIAorICAgIDgwNDg4LCA4MDQ5NCwgODA1MDAsIDgwNTA2LCA4MDUyNiwgODA3OTksIDgwODA1LCA4MDUzMiwgODA4MTEsIDgwNTM4LCAKKyAgICA4MDU0NCwgODA1NTAsIDgwNTU2LCA4MDU2MiwgMzA5MSwgMzA5NiwgODA4MTcsIDgwODIyLCA4MDgyNSwgODA4MzEsIAorICAgIDgwODM3LCA4MDg0NCwgODA4NDksIDgwODU0LCAyMzA3LCAKIH07CiAKIC8qIGNvZGUtPm5hbWUgcGhyYXNlYm9vayAqLwogI2RlZmluZSBwaHJhc2Vib29rX3NoaWZ0IDcKLSNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMTEKKyNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMDkKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tbXSA9IHsKLSAgICAwLCAyMTksIDIwNiwgMjQ0LCAyNTQsIDc3LCAyMjQsIDE0MywgNzcsIDUwLCA1MiwgMjQ3LCA4NiwgNTIsIDIyNiwgNTcsIAotICAgIDUyLCAyNTQsIDM1LCAyNTMsIDIyNiwgNDIsIDIyNiwgMTMxLCA0NiwgMjI2LCAxMzEsIDI1MywgMTMyLCA5NCwgNTIsIDI0OSwgCi0gICAgMTU3LCAyNDAsIDE1OSwgMjQzLCAyMDAsIDIxOSwgNjksIDIxOSwgMjMxLCAyMSwgMjEyLCA3OSwgMjEsIDExNiwgMjEsIAotICAgIDEwOSwgMjEsIDE2NiwgMjEsIDE2MywgMjEsIDE4MCwgMjEsIDE4OSwgMjEsIDE5OCwgMjEsIDE5NSwgMjEsIDIwMCwgMjQ5LCAKLSAgICAxNjQsIDIyMSwgNzAsIDIzMywgMzksIDUyLCAyNDUsIDYxLCA1MiwgMjQyLCAxMDcsIDUyLCAyMjQsIDE1OCwgNzcsIDI0OSwgCi0gICAgMTU2LCAyNTMsIDEyMiwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgNzQsIDcsIDYsIDEsIDI1MCwgMjUyLCA3LCA2LCAxLCAKLSAgICAyNDksIDMsIDcsIDYsIDEsIDc0LCA3LCA2LCAxLCAyNDQsIDIzMCwgNywgNiwgMSwgMjQzLCAxNzcsIDcsIDYsIDEsIDI0MiwgCi0gICAgNDEsIDcsIDYsIDEsIDcyLCA3LCA2LCAxLCAyMzUsIDE0MiwgNywgNiwgMSwgMjM1LCAyNywgNywgNiwgMSwgMTUwLCA3LCA2LCAKLSAgICAxLCAxODMsIDcsIDYsIDEsIDIwNCwgNywgNiwgMSwgNzUsIDcsIDYsIDEsIDIyNiwgMjI5LCA3LCA2LCAxLCAyMjQsIDI0MCwgCi0gICAgNywgNiwgMSwgMTQ5LCA3LCA2LCAxLCAxOTcsIDcsIDYsIDEsIDIxOCwgOTksIDcsIDYsIDEsIDY5LCA3LCA2LCAxLCAyMTUsIAotICAgIDc5LCA3LCA2LCAxLCAyMTQsIDgyLCA3LCA2LCAxLCAyMTMsIDE2NiwgNywgNiwgMSwgMjEzLCAxMDUsIDcsIDYsIDEsIDIxMiwgCi0gICAgMTUyLCA0MiwgNDEsIDEyNSwgMjIzLCAyMDMsIDIxOSwgMjMxLCA0NiwgNDEsIDEyNSwgMjQ5LCAyMjQsIDI1NCwgMTc0LCAKLSAgICAxMTUsIDIzMiwgMjQyLCAyNDIsIDExNCwgMjU0LCAxNzQsIDcsIDMsIDEsIDYxLCA3LCAzLCAxLCAyNTMsIDc0LCA3LCAzLCAKLSAgICAxLCAyNTAsIDI1MiwgNywgMywgMSwgMjQ5LCAzLCA3LCAzLCAxLCA3NCwgNywgMywgMSwgMjQ0LCAyMzAsIDcsIDMsIDEsIAotICAgIDI0MywgMTc3LCA3LCAzLCAxLCAyNDIsIDQxLCA3LCAzLCAxLCA3MiwgNywgMywgMSwgMjM1LCAxNDIsIDcsIDMsIDEsIDIzNSwgCi0gICAgMjcsIDcsIDMsIDEsIDE1MCwgNywgMywgMSwgMTgzLCA3LCAzLCAxLCAyMDQsIDcsIDMsIDEsIDc1LCA3LCAzLCAxLCAyMjYsIAotICAgIDIyOSwgNywgMywgMSwgMjI0LCAyNDAsIDcsIDMsIDEsIDE0OSwgNywgMywgMSwgMTk3LCA3LCAzLCAxLCAyMTgsIDk5LCA3LCAKLSAgICAzLCAxLCA2OSwgNywgMywgMSwgMjE1LCA3OSwgNywgMywgMSwgMjE0LCA4MiwgNywgMywgMSwgMjEzLCAxNjYsIDcsIDMsIDEsIAotICAgIDIxMywgMTA1LCA3LCAzLCAxLCAyMTIsIDE1MiwgNDIsIDI0OSwgNDAsIDEyNSwgNzEsIDIzMiwgMjQyLCA0NiwgMjQ5LCA0MCwgCi0gICAgMTI1LCAyMTcsIDQyLCAyMjgsIDE4NCwgMjE5LCAyMDYsIDIzNSwgMTkxLCAyNDQsIDI1NCwgNzcsIDI1MCwgMTEwLCA1MiwgCi0gICAgMjI1LCAxMDgsIDUyLCAyNDksIDM5LCA1MiwgMjEzLCAzMSwgNTIsIDI1MSwgNjMsIDEzNCwgMjIyLCA5MiwgNTIsIDI0NywgCi0gICAgMjA5LCAyNDksIDEwMiwgNTIsIDI0NCwgMTA1LCAyMjcsIDIxLCAyMzUsIDIzNSwgMjMzLCA2NiwgNTEsIDI1NCwgMTksIAotICAgIDIyNCwgMTQzLCA3NywgMjI4LCAxNjMsIDUyLCAyMTksIDIzNiwgMjQwLCAxNjAsIDIyMywgMjUyLCA1MiwgMjMyLCAzNywgCi0gICAgMjQ4LCAyMiwgNTIsIDIyNSwgMTU1LCA1MiwgMjE4LCAyMjMsIDEwOSwgMjE4LCAyMjMsIDE2NiwgMjU0LCAxNjQsIDI1NCwgCi0gICAgMTc0LCAyMzEsIDQxLCA1MiwgMjI1LCAyMDAsIDUyLCAyMzEsIDM3LCAyNDcsIDc0LCAyNTAsIDExNywgMjE4LCAyMjMsIAotICAgIDExNiwgMjMxLCAyMTEsIDIyNywgMjEsIDIzNSwgMjM1LCAyMjMsIDE0NCwgNTEsIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgCi0gICAgMjE0LCA5NywgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgMjE0LCAKLSAgICA5NywgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDIzNSwgMTkxLCAyMjQsIDE1OCwgNzcsIDcsIDYsIDEsIDExOCwgMiwgCi0gICAgMjQyLCAxMTMsIDcsIDYsIDEsIDExOCwgMiwgMTc5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAxMTgsIAotICAgIDIsIDIxNywgNDIsIDcsIDYsIDEsIDExOCwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDExOCwgMiwgMjIzLCAxMzEsIDQ5LCA3LCAKLSAgICA2LCAxLCAyNTQsIDE0OCwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAxOTEsIDIsIDI0MiwgCi0gICAgMTEzLCA3LCA2LCAxLCAxOTEsIDIsIDE3OSwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyMywgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyNDcsIDIwOSwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMTc5LCA3LCAKLSAgICA2LCAxLCAyNDAsIDE0NiwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgCi0gICAgMjQ1LCAyNSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDIsIDExMywgNywgNiwgCi0gICAgMSwgMTU3LCAyLCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDE1NywgMiwgMjE3LCA0MiwgNywgCi0gICAgNiwgMSwgMTU3LCAyLCAyNDcsIDIwOSwgMjMwLCAxNTQsIDUyLCA3LCA2LCAxLCAxNTcsIDIsIDkwLCA3LCA2LCAxLCAxMTEsIAotICAgIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTEsIDIsIDE3OSwgNywgNiwgMSwgMTExLCAyLCAyNDksIDIyMywgNywgNiwgMSwgCi0gICAgMTExLCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDE3OSwgNywgNiwgMSwgMjE3LCAxMDQsIDcsIDMsIDEsIAotICAgIDIyMCwgMjU1LCAxOTcsIDcsIDMsIDEsIDExOCwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgMTc5LCA3LCAzLCAxLCAKLSAgICAxMTgsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAxMTgsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDExOCwgMiwgMjQ3LCAyMDksIDcsIAotICAgIDMsIDEsIDExOCwgMiwgMjIzLCAxMzEsIDQ5LCA3LCAzLCAxLCAyNTQsIDE0OCwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDI1MCwgCi0gICAgMTE3LCA3LCAzLCAxLCAxOTEsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxOTEsIDIsIDE3OSwgNywgMywgMSwgMTkxLCAyLCAKLSAgICAyNDksIDIyMywgNywgMywgMSwgMTkxLCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0MiwgMTEzLCA3LCAKLSAgICAzLCAxLCAyNDAsIDE0NiwgMiwgMTc5LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjQ1LCAyNSwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjE3LCA0MiwgNywgMywgCi0gICAgMSwgMTU3LCAyLCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAyMjMsIDcsIAotICAgIDMsIDEsIDE1NywgMiwgMjE3LCA0MiwgNywgMywgMSwgMTU3LCAyLCAyNDcsIDIwOSwgMjQ3LCAxMjEsIDUyLCA3LCAzLCAxLCAKLSAgICAxNTcsIDIsIDkwLCA3LCAzLCAxLCAxMTEsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDE3OSwgNywgMywgMSwgCi0gICAgMTExLCAyLCAyNDksIDIyMywgNywgMywgMSwgMTExLCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDE3OSwgCi0gICAgNywgMywgMSwgMjE3LCAxMDQsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMTE4LCAyLCAyMzIsIAotICAgIDM3LCA3LCAzLCAxLCAxMTgsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDExOCwgMiwgMjUxLCA3NCwgNywgMywgMSwgMTE4LCAyLCAKLSAgICAyNTEsIDc0LCA3LCA2LCAxLCAxMTgsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDExOCwgMiwgMjI3LCA5MCwgNywgNiwgMSwgCi0gICAgMjUwLCAyNTMsIDIsIDE3OSwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDE3OSwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDI0OSwgCi0gICAgMjIzLCA3LCAzLCAxLCAyNTAsIDI1MywgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCA2MiwgNDksIDcsIDMsIAotICAgIDEsIDI1MCwgMjUzLCAyLCA2MiwgNDksIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjUwLCAKLSAgICAyNTMsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDksIDQsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDksIDQsIDIsIDI1MCwgCi0gICAgMTY2LCA3LCA2LCAxLCAyNDksIDQsIDIsIDkwLCA3LCAzLCAxLCAyNDksIDQsIDIsIDkwLCA3LCA2LCAxLCAxOTEsIDIsIAotICAgIDIzMiwgMzcsIDcsIDMsIDEsIDE5MSwgMiwgMjMyLCAzNywgNywgNiwgMSwgMTkxLCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAKLSAgICAxOTEsIDIsIDI1MSwgNzQsIDcsIDYsIDEsIDE5MSwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAxOTEsIDIsIDYyLCA0OSwgNywgNiwgCi0gICAgMSwgMTkxLCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAxOTEsIDIsIDIyNywgOTAsIDcsIDYsIDEsIDE5MSwgMiwgMjUwLCAxNjYsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyNDksIDIyMywgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjUxLCA3NCwgNywgMywgMSwgMjQzLCAxNzgsIDIsIAotICAgIDI1MSwgNzQsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCA2MiwgNDksIDcsIDMsIDEsIDI0MywgMTc4LCAyLCA2MiwgNDksIDcsIAotICAgIDYsIDEsIDI0MywgMTc4LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjQzLCAxNzgsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAKLSAgICAyNDIsIDQyLCAyLCAyNDksIDIyMywgNywgMywgMSwgMjQyLCA0MiwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIAotICAgIDkwLCA3LCAzLCAxLCAyNDIsIDQyLCAyLCA5MCwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjMyLCAzNywgNywgMywgMSwgMjQwLCAxNDYsIDIsIAotICAgIDIzMiwgMzcsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjUxLCA3NCwgNywgCi0gICAgNiwgMSwgMjQwLCAxNDYsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAyNDAsIAotICAgIDE0NiwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDcsIDczLCA3MiwgNywgNiwgMjYsIDIzNiwgMjYsIDcsIDMsIDI2LCAyMzYsIAotICAgIDI2LCA3LCA2LCAxLCAyMzUsIDE0MywgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIzNSwgMTQzLCAyLCAyNDksIDIyMywgNywgNiwgCi0gICAgMSwgMjM1LCAyOCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzMsIAotICAgIDI0OCwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDE3OSwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDE3OSwgNywgNiwgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAKLSAgICAyNTAsIDE2NiwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgMjMxLCAzNywgCi0gICAgMjQ3LCA3NCwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIDI0NywgNzQsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDkwLCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAxNzksIDcsIDMsIDEsIDIzMCwgOTgsIAotICAgIDIsIDE3OSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTE3LCA3LCAKLSAgICA2LCAxLCAyMzAsIDk4LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMCwgCi0gICAgOTgsIDIyNSwgODQsIDI1MSwgNywgMjUzLCAyMjYsIDcsIDYsIDEsIDI0NSwgOTYsIDcsIDMsIDEsIDI0NSwgOTYsIDcsIDYsIAotICAgIDEsIDE1NywgMiwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAxNTcsIDIsIDI1MSwgNzQsIAotICAgIDcsIDMsIDEsIDE1NywgMiwgMjUxLCA3NCwgNywgNiwgMSwgMTU3LCAyLCA1MSwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDUxLCAKLSAgICAxNzksIDcsIDYsIDI2LCAyMjcsIDk5LCA3LCAzLCAyNiwgMjI3LCA5OSwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDE3OSwgNywgCi0gICAgMywgMSwgMjI0LCAxMTMsIDIsIDE3OSwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMjQsIAotICAgIDExMywgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjI0LCAxMTMsIDIsIAotICAgIDI1MCwgMTY2LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDE3OSwgNywgMywgMSwgMjIzLCA0LCAyLCAxNzksIDcsIDYsIDEsIDIyMywgCi0gICAgNCwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIyMywgNCwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjUwLCAKLSAgICAxMTcsIDcsIDMsIDEsIDIyMywgNCwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIAotICAgIDIyMywgNCwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjE4LCAxMDAsIAotICAgIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDkwLCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgOTAsIDcsIDYsIDEsIDExMSwgMiwgCi0gICAgMjE3LCA0MiwgNywgMywgMSwgMTExLCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxMTEsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjMyLCAzNywgNywgNiwgMSwgMTExLCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAxMTEsIDIsIDI1MSwgNzQsIDcsIAotICAgIDYsIDEsIDExMSwgMiwgMjIzLCAxMzEsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDIyMywgMTMxLCA0OSwgNywgNiwgMSwgMTExLCAKLSAgICAyLCA1MSwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDUxLCAxNzksIDcsIDYsIDEsIDExMSwgMiwgMjI3LCA5MCwgNywgMywgMSwgCi0gICAgMTExLCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAyMTQsIDgzLCAyLCAyNDksIDIyMywgNywgMywgMSwgMjE0LCA4MywgMiwgMjQ5LCAKLSAgICAyMjMsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyNDksIDIyMywgNywgMywgMSwgMjEzLCAxMDYsIDIsIDI0OSwgMjIzLCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAxNzksIDcsIDMsIDEsIDIxMiwgCi0gICAgMTUzLCAyLCAxNzksIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCA2MiwgNDksIAotICAgIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAKLSAgICAxODQsIDE5NywgNywgMywgMSwgNTQsIDIsIDkwLCA3LCA2LCAxLCA1NCwgMiwgMTAxLCA3LCA2LCAxLCA1NCwgMiwgMjE2LCAKLSAgICAyMjQsIDcsIDMsIDEsIDU0LCAyLCAyMTYsIDIyNCwgNywgNiwgMSwgMTYwLCAxODksIDcsIDMsIDEsIDE2MCwgMTg5LCA3LCAKLSAgICA2LCAxLCAyMjcsIDQwLCA3NSwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDEwMSwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDEwMSwgCi0gICAgNywgNiwgMSwgMjU0LCAxMjQsIDI0OSwgMywgNywgNiwgMSwgMjQ5LCA0LCAyLCAxMDEsIDcsIDYsIDEsIDI0OSwgNCwgMiwgCi0gICAgMjE2LCAyMjQsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjE2LCAyMjQsIDcsIDMsIDEsIDIxNiwgNTgsIDI0OCwgNSwgNywgNiwgCi0gICAgMSwgMjIzLCAyMDIsIDc0LCA3LCA2LCAxLCAyMjIsIDExMywgNywgNiwgMSwgMjI3LCA0MCwgNzQsIDcsIDYsIDEsIDI0NCwgCi0gICAgMjMxLCAyLCAxMDEsIDcsIDMsIDEsIDI0NCwgMjMxLCAyLCAxMDEsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAxMDEsIDcsIDYsIAotICAgIDEsIDI0MywgODMsIDcsIDMsIDEsIDI0MCwgMTkzLCA3LCA2LCAxLCAyMzUsIDE4MywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIAotICAgIDkwLCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAxMDEsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDEwMSwgNywgMywgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDEzNCwgNywgMywgMSwgMjMzLCAxMjQsIDIsIDkwLCA3LCA2LCAxLCAyMTYsIDU4LCAxODMsIDcsIDYsIDEsIAotICAgIDIzMCwgOTgsIDIsIDQyLCAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDE4NCwgNDYsIDIzMywgNjAsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDAsIDIzNSwgNywgMywgMSwgMTU3LCAyLCAyNDAsIAotICAgIDIzNSwgNywgNiwgMSwgMjI3LCA4NSwgNywgMywgMSwgMjI3LCA4NSwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDEwMSwgNywgMywgCi0gICAgMSwgMjI2LCAyMzAsIDIsIDEwMSwgNywgMSwgMjEyLCAyMDUsIDcsIDYsIDEsIDE2MCwgMTA5LCA3LCAzLCAxLCAxNjAsIAotICAgIDEwOSwgNywgNiwgMSwgMjQ1LCA0MCwgNywgMSwgMjIzLCAyMDIsIDI0NSwgNDEsIDIzMiwgMTc3LCA3LCAzLCAxLCAyMTgsIAotICAgIDEwMCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDEwMSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIAotICAgIDEwMSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDYsIDEsIDExMSwgMiwgMjQwLCAyMzUsIDcsIAotICAgIDMsIDEsIDExMSwgMiwgMjQwLCAyMzUsIDcsIDYsIDEsIDIxNSwgMTI4LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAxMDEsIDcsIAotICAgIDYsIDEsIDIxMywgMTA2LCAyLCAxMDEsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAxMDEsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDkwLCA3LCA2LCAxLCAyNDQsIDIzMiwgNywgNiwgMSwgMjQ0LCAyMzMsIDIyMywgCi0gICAgMjAxLCA3LCAzLCAxLCAyNDQsIDIzMywgMjIzLCAyMDEsIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyMTgsIDI3LCA3LCAxLCAKLSAgICAxMTcsIDIsIDkwLCA3LCA2LCAxLCAxNjAsIDE4MCwgNywgMywgMSwgMTYwLCAxODAsIDcsIDEsIDIzNSwgMTkxLCAyNDIsIAotICAgIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDEsIDIxMywgMTY5LCA3LCAxLCAyNDcsIDI1NCwgMjQ5LCAyMDQsIDcsIDEsIDIzMywgCi0gICAgMTAwLCAyNDksIDIwNCwgNywgMSwgMjU0LCA0NiwgMjQ5LCAyMDQsIDcsIDEsIDIyMywgMjA3LCAyNDksIDIwNCwgNywgNiwgCi0gICAgMSwgMjQ1LCAyNTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDksIDQsIDIsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNTAsIAotICAgIDE2NiwgNywgMywgMSwgMjQ1LCAyNTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyMzIsIDIxNywgNywgNiwgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMzIsIDIxNywgNywgNiwgMSwgMjI5LCAxNywgNywgNiwgMSwgCi0gICAgMjMwLCA5OCwgMiwgMywgMSwgMjM1LCAxNDIsIDcsIDMsIDEsIDIyOSwgMTcsIDcsIDYsIDEsIDExOCwgMiwgMjUwLCAxNjYsIAotICAgIDcsIDMsIDEsIDExOCwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQwLCAKLSAgICAxNDYsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAxNTcsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAxNTcsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCA2LCAxLCAxMTEsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAxMTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAxNzksIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAxNzksIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyNTAsIDE2NiwgNywgMywgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDI1MCwgMTY2LCAKLSAgICA3LCA2LCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAKLSAgICAyNDIsIDExMywgNywgMywgMSwgMjE2LCA1OCwgNzQsIDcsIDYsIDEsIDExOCwgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCAKLSAgICA3LCAzLCAxLCAxMTgsIDIsIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMTE4LCAyLCA2MiwgNzgsIDI0LCAyMzIsIAotICAgIDM3LCA3LCAzLCAxLCAxMTgsIDIsIDYyLCA3OCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDI1NCwgMTQ5LCAyLCAyMzIsIDM3LCAKLSAgICA3LCAzLCAxLCAyNTQsIDE0OSwgMiwgMjMyLCAzNywgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDkwLCA3LCAzLCAxLCAyNDMsIAotICAgIDE3OCwgMiwgOTAsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDI1MCwgCi0gICAgMTY2LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjUwLCAxNjYsIDcsIDYsIAotICAgIDEsIDE1NywgMiwgMjI3LCA5MCwgNywgMywgMSwgMTU3LCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAxNTcsIDIsIDIyNywgOTEsIAotICAgIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDIyNywgOTEsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyNDQsIDIzMywgMiwgCi0gICAgMjUwLCAxNjYsIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjM1LCAxNDMsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCA2LCAxLCAyNDUsIDI1MCwgNywgNiwgMSwgMjQ5LCA0LCAyLCAzLCAxLCAyMTIsIDE1MiwgNywgMywgMSwgMjQ1LCAyNTAsIAotICAgIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAxNzksIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAxNzksIDcsIDYsIDEsIDI0MCwgMTkxLCAKLSAgICA3LCA2LCAxLCAyMTMsIDE2OSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIAotICAgIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA3OCwgMjQsIDE3OSwgNywgMywgMSwgMTE4LCAyLCAyMjMsIAotICAgIDEzMSwgNzgsIDI0LCAxNzksIDcsIDYsIDEsIDI1NCwgMTQ5LCAyLCAxNzksIDcsIDMsIDEsIDI1NCwgMTQ5LCAyLCAxNzksIAotICAgIDcsIDYsIDEsIDE1NywgMiwgMjE5LCA0NSwgMjQsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyMTksIDQ1LCAyNCwgMTc5LCA3LCAKLSAgICA2LCAxLCAxMTgsIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTE4LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDExOCwgCi0gICAgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDExOCwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDE5MSwgCi0gICAgMiwgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAxOTEsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMTkxLCAyLCAyMzUsIAotICAgIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMTkxLCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIAotICAgIDUxLCAyNDIsIDExMywgNywgMywgMSwgMjQwLCAxNDYsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIAotICAgIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAxNTcsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAyLCAyMzUsIAotICAgIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMTU3LCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIAotICAgIDUxLCAyNDIsIDExMywgNywgMywgMSwgMjI0LCAxMTMsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMjI0LCAxMTMsIDIsIAotICAgIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMTExLCAyLCAyMzUsIAotICAgIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMTExLCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMjIzLCA0LCAyLCAKLSAgICAyNDksIDE1OCwgNTUsIDcsIDMsIDEsIDIyMywgNCwgMiwgMjQ5LCAxNTgsIDU1LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgCi0gICAgMjQ5LCAxNTgsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ5LCAxNTgsIDU1LCA3LCA2LCAxLCAyMTIsIDIyMiwgNywgCi0gICAgMywgMSwgMjEyLCAyMjIsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMTg0LCA0NiwgMjMzLCA2MCwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDksIDQxLCAKLSAgICA3LCA2LCAxLCAyMjcsIDIsIDcsIDMsIDEsIDIyNywgMiwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDEwMSwgNywgMywgMSwgCi0gICAgMjEyLCAxNTMsIDIsIDEwMSwgNywgNiwgMSwgMTE4LCAyLCA2MiwgNDksIDcsIDMsIDEsIDExOCwgMiwgNjIsIDQ5LCA3LCA2LCAKLSAgICAxLCAxOTEsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAxOTEsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAxNTcsIDIsIDI0NywgCi0gICAgMjEwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjE3LCA0MywgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjE3LCA0MywgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIAotICAgIDE1NywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAxNTcsIDIsIDYyLCA0OSwgNywgNiwgMSwgMTU3LCAyLCA2MiwgNzgsIDI0LCAKLSAgICAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDYyLCA3OCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyMzIsIAotICAgIDM3LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjMyLCAzNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI0OSwgNDEsIDcsIDMsIAotICAgIDEsIDIzMCwgOTgsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDcsIDczLCAKLSAgICAyMzUsIDE0MiwgNywgMywgMSwgMjQ4LCA4OSwgMjQ3LCAxNzIsIDcsIDMsIDEsIDIyNCwgMTc2LCAyNDcsIDE3MiwgNywgNiwgCi0gICAgMSwgMTE4LCAyLCA5MCwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDkwLCA3LCAzLCAxLCAyNTAsIDI1MywgMiwgOTAsIDcsIDYsIAotICAgIDEsIDIzMywgMTcxLCAyLCAxMzQsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIyMywgNCwgCi0gICAgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNywgNiwgMSwgCi0gICAgMjQyLCAxNTYsIDIxOSwgNjksIDcsIDMsIDEsIDI0MiwgMTU2LCAyMTksIDY5LCA3LCA2LCAxLCA1NCwgMiwgOTAsIDcsIDYsIAotICAgIDEsIDExMSwgMTM0LCA3LCA2LCAxLCAyMTYsIDU4LCAyMTUsIDc5LCA3LCA2LCAxLCAxOTEsIDIsIDkwLCA3LCAzLCAxLCAKLSAgICAxOTEsIDIsIDkwLCA3LCA2LCAxLCAyMzUsIDE0MywgMiwgOTAsIDcsIDMsIDEsIDIzNSwgMTQzLCAyLCA5MCwgNywgNiwgMSwgCi0gICAgMywgMjI0LCAyNDEsIDIsIDI0MSwgMzgsIDIxOCwgMjcsIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAyNDEsIDM4LCAyMTgsIDI3LCAKLSAgICA3LCA2LCAxLCAyMjQsIDExMywgMiwgOTAsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA5MCwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIAotICAgIDkwLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgOTAsIDcsIDMsIDEsIDIxNiwgNTgsIDYxLCA3LCAzLCAxLCAyNTQsIDUyLCA3LCAKLSAgICAzLCAxLCAyMTYsIDU4LCAyNTQsIDUyLCA3LCAzLCAxLCA1NCwgMiwgMTAxLCA3LCAzLCAxLCAyMjcsIDQwLCA3NSwgNywgMywgCi0gICAgMSwgMjUwLCAyNTMsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjE4LCAyNywgNywgMywgMSwgMjQ5LCA0LCAyLCAKLSAgICAxMDEsIDcsIDMsIDEsIDIyMywgMjAyLCA3NCwgNywgMywgMSwgMjIyLCAxMTMsIDcsIDMsIDEsIDIyMiwgMTE0LCAyLCAxMDEsIAotICAgIDcsIDMsIDEsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAyMjMsIDIwMiwgMjI3LCA0MCwgNzQsIDcsIDMsIDEsIDIyMywgMjAyLCAKLSAgICAyMjcsIDQwLCAxOTEsIDIsIDEwMSwgNywgMywgMSwgMjQ5LCAxOTMsIDIyMywgMjAyLCAyMjcsIDQwLCA3NCwgNywgMywgMSwgCi0gICAgMjQ3LCA3MywgMjM1LCAxNDMsIDIsIDkwLCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMTAxLCA3LCAzLCAxLCAxMTMsIDI0MywgCi0gICAgMTc3LCA3LCAxLCAzLCA2LCAyNDMsIDE3NywgNywgMywgMSwgMjQzLCA4MywgNywgMywgMSwgMjI0LCA0MywgMjQwLCAyMzUsIAotICAgIDcsIDMsIDEsIDIxNiwgNTgsIDI0MiwgNDEsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDEwMSwgNywgMywgMSwgMjQxLCAxOTIsIAotICAgIDIsIDEwMSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDE4MywgNywgMSwgMywgNiwgNzIsIDcsIAotICAgIDMsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjUxLCAyMTgsIDcsIAotICAgIDMsIDEsIDIzMywgMTcxLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMzMsIDI3LCA3LCAzLCAxLCAyMTYsIDU4LCAKLSAgICAxODMsIDcsIDMsIDEsIDIxNiwgNTgsIDIzMiwgMTEwLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCAKLSAgICAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDQyLCAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIyMywgMjA3LCAxMDEsIDcsIAotICAgIDEsIDMsIDYsIDIwNCwgNywgMywgMSwgMjUyLCA1NCwgNzUsIDcsIDEsIDMsIDYsIDIyNywgOTksIDcsIDMsIDEsIDI0OSwgCi0gICAgMTkzLCAyMjcsIDY3LCA3LCAzLCAxLCAyMjYsIDksIDcsIDMsIDEsIDIxNiwgNTgsIDE0OSwgNywgMywgMSwgMjE2LCA1OCwgCi0gICAgMjI0LCAxMTMsIDIsIDE4NCwgMjMzLCA2MCwgNywgMywgMSwgMjE2LCA1OCwgMjI0LCAxMTMsIDIsIDEwMSwgNywgMywgMSwgCi0gICAgMjI0LCAxMTMsIDIsIDE4NCwgMjMzLCA2MCwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIDIyNCwgCi0gICAgMTEzLCAyLCAyNDQsIDU2LCA3LCAzLCAxLCAyMjMsIDIwMiwgMjI0LCAxMTMsIDIsIDI0NCwgNTYsIDcsIDEsIDMsIDYsIAotICAgIDE0OSwgNywgMSwgMywgNiwgMjM1LCAxOTEsIDE0OSwgNywgMywgMSwgMjIzLCA0LCAyLCAxMDEsIDcsIDMsIDEsIDI0NSwgCi0gICAgNDAsIDcsIDMsIDEsIDI0NywgNzMsIDIzNSwgMTQzLCAyLCAyMTksIDQ1LCAyNCwgMTAxLCA3LCAzLCAxLCAyMTksIDE2MywgCi0gICAgMjIzLCAyMDIsIDI0NSwgNDAsIDcsIDMsIDEsIDI0NSwgNDEsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDIxNiwgNTgsIDIxOCwgCi0gICAgOTksIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAxMTEsIDEzNCwgNywgMywgMSwgMjE1LCAKLSAgICAxMjgsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDEwMSwgNywgMywgMSwgMjE2LCA1OCwgMjE1LCA3OSwgNywgMywgMSwgMjE2LCAKLSAgICA1OCwgMjE0LCA4MiwgNywgMywgMSwgMjE2LCA1OCwgMjEzLCAxMDUsIDcsIDEsIDMsIDYsIDIxMywgMTA1LCA3LCAzLCAxLCAKLSAgICAyMTIsIDE1MywgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0NCwgCi0gICAgMjMyLCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjQ5LCA0MSwgNywgMSwgMjQyLCAxNTYsIDIxOSwgNjksIDcsIDEsIDIyNiwgCi0gICAgMTUsIDIxNCwgMTE2LCAyNDMsIDIxOSwgNywgMSwgMjM1LCAxOTEsIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAxLCAyMTksIDUwLCAKLSAgICAyNTAsIDI1MiwgNywgMSwgMjUxLCAxNjksIDI0OSwgMjA0LCA3LCAxLCAzLCA2LCAyNTMsIDc0LCA3LCAzLCAxLCAyNDksIAotICAgIDE5MywgMjI3LCA0MCwgNzQsIDcsIDEsIDMsIDYsIDI0MywgMTc4LCAyLCAxMDEsIDcsIDEsIDMsIDYsIDI0MiwgNDEsIDcsIAotICAgIDMsIDEsIDIzNSwgMTQzLCAyLCAyNDksIDY3LCA3LCAzLCAxLCAyMTYsIDU4LCAyMzUsIDI3LCA3LCAxLCAzLCA2LCAxNTAsIAotICAgIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAxMDEsIDcsIDEsIDI0MiwgMTU2LCAyMTksIDcwLCAyLCA5MCwgNywgMSwgMjIzLCAKLSAgICAyMDIsIDI0MiwgMTU2LCAyMTksIDcwLCAyLCA5MCwgNywgMywgMSwgMjQ1LCAyNTEsIDI0NywgMTcyLCA3LCAzLCAxLCAyNDcsIAotICAgIDIzMywgMjQ3LCAxNzIsIDcsIDMsIDEsIDI0NSwgMjUxLCAyNDcsIDE3MywgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjE2LCAKLSAgICAxNDMsIDI0NywgMTcyLCA3LCAzLCAxLCAyMTcsIDE4OCwgMjQ3LCAxNzIsIDcsIDMsIDEsIDIxNywgMjM2LCAyNDcsIDE3MywgCi0gICAgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjQ0LCAxMDMsIDI0NywgMTcyLCA3LCAzLCAxLCAyMzIsIDE1OCwgMjQ3LCAxNzIsIDcsIAotICAgIDMsIDEsIDIzMiwgMTExLCAyNDcsIDE3MiwgNywgMSwgMjUxLCAxNjksIDIyNiwgNTYsIDcsIDEsIDI1MSwgMTc3LCAyMjYsIAotICAgIDU2LCA3LCAzLCAxLCAyMTYsIDU4LCAyNDIsIDQyLCAyLCAyNDQsIDU2LCA3LCAzLCAxLCAyMTYsIDU4LCAyNDIsIDQyLCAyLCAKLSAgICAyNDQsIDU3LCAyNCwgMjE4LCAyNywgNTksIDEsIDMsIDI0MiwgNDEsIDU5LCAxLCAzLCAyNDIsIDQyLCAyLCAxMDEsIDU5LCAKLSAgICAxLCAzLCAyMzUsIDE0MiwgNTksIDEsIDMsIDE0OSwgNTksIDEsIDMsIDIxNiwgNTgsIDE0OSwgNTksIDEsIDMsIDIxNiwgNTgsIAotICAgIDIyNCwgMTEzLCAyLCAxMDEsIDU5LCAxLCAzLCA2LCAyMzUsIDE5MSwgMTQ5LCA1OSwgMSwgMywgMjE0LCA4MiwgNTksIDEsIAotICAgIDMsIDIxMywgMTA1LCA1OSwgMSwgMjI1LCA3MSwgNTksIDEsIDUxLCAyMjUsIDcxLCA1OSwgMSwgMjE2LCA1OCwgMjQ5LCAKLSAgICAxNTcsIDU5LCAxLCAyNTMsIDIyNiwgNTksIDEsIDIyMywgMjAyLCAyNDksIDE1NywgNTksIDEsIDQ2LCAxNTEsIDIyMywgCi0gICAgMTMwLCA1OSwgMSwgNDIsIDE1MSwgMjIzLCAxMzAsIDU5LCAxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNTksIDEsIDIyMywgMjAyLCAKLSAgICAyNDIsIDE1NiwgMjE5LCA2OSwgNTksIDEsIDQyLCAyNTMsIDE2NCwgNTksIDEsIDQ2LCAyNTMsIDE2NCwgNTksIDEsIDExNCwgCi0gICAgMjUzLCAxNjQsIDU5LCAxLCAxMTksIDI1MywgMTY0LCA1OSwgMSwgMjQ5LCAyMjQsIDI1NCwgMTc0LCAyNTAsIDE2NiwgNTksIAotICAgIDEsIDcxLCAyMzIsIDI0MiwgNTksIDEsIDIzMiwgMzcsIDU5LCAxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAyNDIsIAotICAgIDExNCwgMjU0LCAxNzQsIDU5LCAxLCAxMTUsIDcxLCAyMzIsIDI0MiwgNTksIDEsIDExNSwgMjMyLCAzNywgNTksIDEsIDExNSwgCi0gICAgMjQyLCAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMTE1LCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAyMTYsIDE4MCwgMjQ5LCAKLSAgICAxNjQsIDU5LCAxLCAxNTEsIDIxNiwgMTgwLCAyNDksIDE2NCwgNTksIDEsIDI1MCwgMTA3LCA0NiwgMTUxLCAyMjMsIDEzMCwgCi0gICAgNTksIDEsIDI1MCwgMTA3LCA0MiwgMTUxLCAyMjMsIDEzMCwgNTksIDEsIDExNCwgMjE4LCAzNiwgNTksIDEsIDExOSwgMjE4LCAKLSAgICAzNiwgNTksIDEsIDk0LCA1MiwgNTksIDEsIDIzMCwgMjUxLCA1MiwgMjUxLCA3NCwgNjIsIDQ5LCAyMjMsIDEzMSwgNDksIAotICAgIDIyNywgOTAsIDMsIDIxNywgNDIsIDUxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAyMjMsIDE4OSwgMTAxLCA1OSwgMSwgCi0gICAgMjQ5LCA3MSwgMjU0LCAxNzQsIDU5LCAxLCAzLCAyNDMsIDgzLCA1OSwgMSwgMywgMTUwLCA1OSwgMSwgMywgMTk3LCA1OSwgCi0gICAgMSwgMywgMjEzLCAxNjYsIDU5LCAxLCAzLCAyMjMsIDIwMiwgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCAyNDQsIDI0NCwgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCAxMjQsIDE2MCwgMTM0LCA1OSwgMSwgMjMxLCAzOCwgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDE2MCwgMTM0LCA1OSwgMSwgMjEyLCAyNDUsIDI0NywgMjUxLCAxNjAsIDc3LCAKLSAgICA1OSwgMSwgMjEzLCA1OSwgMjQ3LCAyNTEsIDE2MCwgNzcsIDU5LCAxLCAyMTQsIDExNCwgNTksIDEsIDIxNSwgMTU2LCA1OSwgCi0gICAgMSwgNTEsIDI1MywgMjI2LCA1OSwgMSwgMTE1LCAxMTksIDI1MywgMTY0LCA1OSwgMSwgMTE1LCAxMTQsIDI1MywgMTY0LCAKLSAgICA1OSwgMSwgMTE1LCA0MiwgMjUzLCAxNjQsIDU5LCAxLCAxMTUsIDQ2LCAyNTMsIDE2NCwgNTksIDEsIDExNSwgMjIzLCAxMzAsIAotICAgIDU5LCAxLCAyMzEsIDM3LCAyNDIsIDExNCwgMjU0LCAxNzQsIDU5LCAxLCAyMzEsIDM3LCA1MSwgMjQyLCAxMTQsIDI1NCwgCi0gICAgMTc0LCA1OSwgMSwgMjMxLCAzNywgNTEsIDI1NCwgMTY0LCAyNTQsIDE3NCwgNTksIDEsIDExNSwgMjE3LCA0MiwgNTksIDEsIAotICAgIDIyNCwgNDgsIDI0OSwgMTY0LCA1OSwgMSwgMjUxLCAyMzQsIDEyNCwgMjE2LCAyNDEsIDU5LCAxLCAyNDUsIDEwMSwgMTI0LCAKLSAgICAyMTYsIDI0MSwgNTksIDEsIDI1MSwgMjM0LCAxMTUsIDIxNiwgMjQxLCA1OSwgMSwgMjQ1LCAxMDEsIDExNSwgMjE2LCAyNDEsIAotICAgIDU5LCAxLCAyMjAsIDIzNCwgNTksIDEsIDIyNywgNDAsIDIyMCwgMjM0LCA1OSwgMSwgMTE1LCA0MiwgNjgsIDM3LCAyNDIsIAotICAgIDExNCwgMjU0LCAxNzQsIDM3LCAyNTQsIDE2NCwgMjU0LCAxNzQsIDM3LCAyNDksIDIyNCwgMjU0LCAxNzQsIDM3LCAyMTcsIAotICAgIDQyLCAzNywgMjMyLCAzNywgMzcsIDIyNiwgMjQzLCAzNywgMjUxLCA3NCwgMzcsIDYyLCA0OSwgMzcsIDI0NywgMjA5LCAzNywgCi0gICAgMjQxLCAzOCwgNDksIDM3LCAyMjMsIDEzMSwgNDksIDM3LCA1MSwgMjU0LCAxNjQsIDI1NCwgMTc0LCAzNywgMjUwLCAxNjYsIAotICAgIDM3LCA3MSwgMjMyLCAyNDMsIDQ5LCAzNywgNTEsIDcxLCAyMzIsIDI0MywgNDksIDM3LCA1MSwgMjQyLCAxMTQsIDI1NCwgCi0gICAgMTc0LCAzNywgMjUwLCAxODcsIDM3LCAyMzUsIDE5MSwgMjUxLCA3NCwgMzcsIDIxNiwgNTgsIDI0OSwgMTU4LCA0OSwgMzcsIAotICAgIDI0OSwgMTU4LCA0OSwgMzcsIDIyMywgMjAyLCAyNDksIDE1OCwgNDksIDM3LCAyNDksIDE1OCwgNzgsIDIyMywgMTQ4LCAzNywgCi0gICAgMjQyLCAxMTQsIDI1NCwgMTc1LCA1NSwgMzcsIDI1NCwgMTY0LCAyNTQsIDE3NSwgNTUsIDM3LCA0MiwgMjE4LCAzNywgNTUsIAotICAgIDM3LCA0NiwgMjE4LCAzNywgNTUsIDM3LCA0MiwgMjU0LCAxOSwgNDksIDM3LCAyNDAsIDIzNSwgMzcsIDQyLCAxNTEsIDIyMywgCi0gICAgMTMxLCA1NSwgMzcsIDExNCwgMjE4LCAzNywgNTUsIDM3LCAxMTksIDIxOCwgMzcsIDU1LCAzNywgOTQsIDUsIDU1LCAzNywgCi0gICAgMjMwLCAyNTEsIDUsIDU1LCAzNywgMjI2LCAxOTEsIDI0MSwgMzgsIDU1LCAzNywgMjIzLCAyMDcsIDI0MSwgMzgsIDU1LCAKLSAgICAzNywgNjIsIDU1LCAzNywgMjQ3LCAyMTAsIDU1LCAzNywgMjIzLCAxMzEsIDU1LCAzNywgMjQ5LCAxNTgsIDU1LCAzNywgCi0gICAgMjUwLCAxMTcsIDM3LCAyMjcsIDkwLCAzNywgNzEsIDIzMiwgMjQzLCA1NSwgMzcsIDI1MSwgNjgsIDU1LCAzNywgMjM1LCAKLSAgICAxOTEsIDUxLCAyNTMsIDE5NCwgNTUsIDM3LCAyNTAsIDE2NywgNTUsIDM3LCAyNDksIDIyNCwgMjU0LCAxNzUsIDU1LCAzNywgCi0gICAgMjUxLCA3NSwgNTUsIDM3LCAyMzUsIDE5MSwgMjUxLCA3NSwgNTUsIDM3LCAyMTcsIDQzLCA1NSwgMzcsIDIzMiwgMzgsIDU1LCAKLSAgICAzNywgMTE1LCAyMzIsIDI0MiwgMzcsIDUxLCAxMTUsIDIzMiwgMjQyLCAzNywgMjE3LCA0MywgMjI2LCAyNDQsIDM3LCAyMjAsIAotICAgIDE3NSwgMjE5LCA0NSwgMjI2LCAyNDQsIDM3LCAxODQsIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMjIwLCAxNzUsIDIxOSwgCi0gICAgMjMyLCAyMjYsIDI0NCwgMzcsIDE4NCwgMjE5LCAyMzIsIDIyNiwgMjQ0LCAzNywgNDYsIDE1MSwgMjIzLCAxMzEsIDU1LCAKLSAgICAzNywgMjM1LCAxOTEsIDI1MSwgNjgsIDU1LCAzNywgNDEsIDU1LCAzNywgMjIyLCA5OSwgNTUsIDM3LCAyMTMsIDE2NywgNDksIAotICAgIDM3LCA3MSwgMjE3LCA0MiwgMzcsIDUxLCAyMjYsIDI0MywgMzcsIDI0MiwgMTE0LCAxNjAsIDc3LCAzNywgMjU0LCAxNjQsIAotICAgIDE2MCwgNzcsIDM3LCAyNSwgMjI2LCA1MCwgMzcsIDI1LCAyMzQsIDExLCAzNywgMjUsIDI0NywgMjA0LCAyMTYsIDIzMSwgCi0gICAgMzcsIDI1LCAyMTIsIDIxMCwgMzcsIDI1MSwgNjgsIDQ5LCAzNywgMjQ1LCA2MSwgNSwgNTUsIDM3LCA1MSwgNzEsIDIzMiwgCi0gICAgMjQzLCA1NSwgMzcsIDQyLCAyNTQsIDE5LCA1NSwgMzcsIDIyOCwgMTYzLCAyMTcsIDQzLCA0OSwgMzcsIDI0MSwgNDQsIDQ5LCAKLSAgICAzNywgMjU0LCA1NywgMTIzLCAyMTEsIDIxMSwgNDksIDM3LCA0MiwgNDYsIDc2LCA1NSwgMzcsIDIxNSwgMTI0LCA3NiwgNTUsIAotICAgIDM3LCAyNDIsIDExOCwgMjM1LCA2NiwgMzcsIDQ2LCAyNTMsIDE2NSwgNDksIDM3LCA0MiwgMTUxLCAyMjMsIDEzMSwgNDksIAotICAgIDM3LCAyNDQsIDEwMCwgMzcsIDIxMywgMTY3LCA1NSwgMzcsIDQyLCAyNTMsIDE2NSwgNTUsIDM3LCA0NiwgMjUzLCAxNjUsIAotICAgIDU1LCAzNywgNDYsIDI1MywgMTY1LCAyNCwgMTE0LCAyNTMsIDE2NSwgNTUsIDM3LCA0NiwgMTUxLCAyMjMsIDEzMSwgNDksIAotICAgIDM3LCA2MiwgNzgsIDIyMywgMTQ4LCAzNywgMjUzLCAxMzMsIDU1LCAzNywgNTEsIDIyMywgMTMxLCA1NSwgMzcsIDIxMiwgCi0gICAgMjgsIDQ5LCAzNywgNTEsIDI1MSwgNzUsIDU1LCAzNywgNTEsIDI1MSwgNzQsIDM3LCA1MSwgMjMyLCAzNywgMzcsIDUxLCAKLSAgICAyMzIsIDM4LCA1NSwgMzcsIDUxLCAyMTcsIDQyLCAzNywgNTEsIDIzNSwgMTkxLCAyNTEsIDc0LCAzNywgNTEsIDk1LCA3NiwgCi0gICAgNTUsIDM3LCA3LCAzLCAxLCA2MSwgMzcsIDcsIDMsIDEsIDc0LCAzNywgNywgMywgMSwgNzIsIDM3LCA3LCAzLCAxLCA3NSwgCi0gICAgMzcsIDcsIDMsIDEsIDY5LCAzNywgNywgMywgMSwgMjUwLCAyNTIsIDM3LCA3LCAzLCAxLCAyNDksIDMsIDM3LCA3LCAzLCAxLCAKLSAgICAyNDIsIDQxLCAzNywgNywgMywgMSwgMTgzLCAzNywgNywgMywgMSwgMTQ5LCAzNywgNywgMywgMSwgMjE4LCA5OSwgMzcsIDcsIAotICAgIDMsIDEsIDIxNSwgNzksIDM3LCA3LCAzLCAxLCAyMTMsIDE2NiwgMjUsIDYsIDEsIDI0MSwgMTgxLCAyNSwgMywgMSwgMjQxLCAKLSAgICAxODEsIDI1LCA2LCAxLCAyNTMsIDE5MywgMjIyLCAxNjEsIDI1LCAzLCAxLCAyNTMsIDE5MywgMjIyLCAxNjEsIDI1LCAyMjgsIAotICAgIDU0LCA1MiwgMjUsIDIzMiwgMTYzLCAyMjgsIDU0LCA1MiwgMjUsIDYsIDEsIDIyNiwgMTc4LCAyNDcsIDE3OSwgMjUsIDMsIAotICAgIDEsIDIyNiwgMTc4LCAyNDcsIDE3OSwgMjUsIDIxMiwgMjEwLCAyNSwgMywgMjIzLCAyMDIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgCi0gICAgODcsIDI1LCAzLCAyNDYsIDcyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgMywgMjIzLCAyMDIsIDI0NiwgNzIsIAotICAgIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDI1LCAyMjQsIDE1OCwgNzcsIDI1LCAyMTYsIDIzMSwgMjUsIDI0NywgMjA0LCAKLSAgICAyMTYsIDIzMSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNiwgMjMxLCAyNSwgMjU0LCA4LCAyMTcsIDIxMSwgMjUsIDYsIDEsIAotICAgIDI0NSwgNjQsIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyMzUsIDE4NCwgCi0gICAgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMTYsIDIzMSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMTYsIAotICAgIDIzMSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgCi0gICAgMjE2LCAyMzEsIDI1LCA2LCAxLCAyNTQsIDUyLCAyNSwgNiwgMSwgMjUxLCAyMDMsIDI1LCA2LCAxLCAyNDMsIDgzLCAyNSwgCi0gICAgNiwgMSwgMjQ4LCA1LCAyNSwgNiwgMSwgMjQ1LCA2MywgMjUsIDYsIDEsIDIxMiwgNzgsIDI1LCA2LCAxLCAyNDUsIDI4LCAKLSAgICAyNSwgNiwgMSwgMjE3LCAxMzIsIDI1LCA2LCAxLCAyMzUsIDE4MywgMjUsIDYsIDEsIDIzNCwgMjI3LCAyNSwgNiwgMSwgCi0gICAgMjMzLCAxMjIsIDI1LCA2LCAxLCAyMzAsIDE3MiwgMjUsIDYsIDEsIDIyOCwgOTIsIDI1LCA2LCAxLCAyMTMsIDE0NSwgMjUsIAotICAgIDYsIDEsIDIyNywgNjUsIDI1LCA2LCAxLCAyMjUsIDI0MCwgMjUsIDYsIDEsIDIyMywgMTkwLCAyNSwgNiwgMSwgMjIwLCAKLSAgICAxMDMsIDI1LCA2LCAxLCAyMTcsIDI0OCwgMjUsIDYsIDEsIDIxNSwgMTI4LCAyNSwgNiwgMSwgMjI2LCA5LCAyNSwgNiwgMSwgCi0gICAgMjUwLCA0NywgMjUsIDYsIDEsIDIyNSwgNDYsIDI1LCA2LCAxLCAyMjcsIDY3LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIAotICAgIDI0NywgMjAzLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDI0NywgMjAzLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIxNiwgMjMxLCAyNSwgCi0gICAgMywgMSwgMjM1LCAxODQsIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjE2LCAKLSAgICAyMzEsIDI1LCAzLCAxLCAyNTQsIDUyLCAyNSwgMywgMSwgMjUxLCAyMDMsIDI1LCAzLCAxLCAyNDMsIDgzLCAyNSwgMywgMSwgCi0gICAgMjQ4LCA1LCAyNSwgMywgMSwgMjQ1LCA2MywgMjUsIDMsIDEsIDIxMiwgNzgsIDI1LCAzLCAxLCAyNDUsIDI4LCAyNSwgMywgCi0gICAgMSwgMjE3LCAxMzIsIDI1LCAzLCAxLCAyMzUsIDE4MywgMjUsIDMsIDEsIDIzNCwgMjI3LCAyNSwgMywgMSwgMjMzLCAxMjIsIAotICAgIDI1LCAzLCAxLCAyMzAsIDE3MiwgMjUsIDMsIDEsIDIyOCwgOTIsIDI1LCAzLCAxLCAyMTMsIDE0NSwgMjUsIDMsIDEsIDIyNywgCi0gICAgNjUsIDI1LCAzLCAxLCAyMjUsIDI0MCwgMjUsIDMsIDEsIDIyMywgMTkwLCAyNSwgMywgMSwgNDAsIDIyMCwgMTAzLCAyNSwgCi0gICAgMywgMSwgMjIwLCAxMDMsIDI1LCAzLCAxLCAyMTcsIDI0OCwgMjUsIDMsIDEsIDIxNSwgMTI4LCAyNSwgMywgMSwgMjI2LCA5LCAKLSAgICAyNSwgMywgMSwgMjUwLCA0NywgMjUsIDMsIDEsIDIyNSwgNDYsIDI1LCAzLCAxLCAyMjcsIDY3LCAyNSwgMywgMSwgMjM1LCAKLSAgICAxODQsIDIsIDI0NywgMjAzLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjAzLCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgCi0gICAgMjE2LCAyMzEsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjE2LCAyMzEsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMTYsIAotICAgIDIzMSwgMjUsIDYsIDIzNCwgMjUxLCA4NywgMjUsIDI1MSwgMjA0LCA4NywgMjUsIDIxNywgMTMzLCA4NywgMjUsIDIxNSwgCi0gICAgMTI5LCAyLCAyNDEsIDM4LCA4NywgMjUsIDIxNSwgMTI5LCAyLCAyNTQsIDE2NCwgMjQsIDI0MSwgMzgsIDg3LCAyNSwgMjE1LCAKLSAgICAxMjksIDIsIDI0NywgMjEwLCAyNCwgMjQxLCAzOCwgODcsIDI1LCAyMjYsIDEwLCA4NywgMjUsIDIyNSwgMjQxLCA4NywgMjUsIAotICAgIDIzNCwgMjUxLCA4NywgMjUsIDEsIDI1MywgMTkzLCAyMzQsIDE1LCAyNSwgMywgMSwgMjUzLCAxOTMsIDIzNCwgMTUsIDI1LCAKLSAgICAxLCAyMTksIDc3LCAyNSwgMywgMSwgMjE5LCA3NywgMjUsIDEsIDI0NywgMTc5LCAyNSwgMywgMSwgMjQ3LCAxNzksIDI1LCAKLSAgICAxLCAyMzQsIDE1LCAyNSwgMywgMSwgMjM0LCAxNSwgMjUsIDEsIDIyMiwgMTYxLCAyNSwgMywgMSwgMjIyLCAxNjEsIDc5LCAKLSAgICA2LCAxLCAyMjAsIDIzNSwgNzksIDMsIDEsIDIyMCwgMjM1LCA3OSwgNiwgMSwgMjQ0LCAxMDksIDc5LCAzLCAxLCAyNDQsIAotICAgIDEwOSwgNzksIDYsIDEsIDIzNCwgMTIzLCA3OSwgMywgMSwgMjM0LCAxMjMsIDc5LCA2LCAxLCAyNDEsIDMyLCA3OSwgMywgMSwgCi0gICAgMjQxLCAzMiwgNzksIDYsIDEsIDI0MywgNzgsIDc5LCAzLCAxLCAyNDMsIDc4LCA3OSwgNiwgMSwgMjIwLCAyMDIsIDc5LCAzLCAKLSAgICAxLCAyMjAsIDIwMiwgNzksIDYsIDEsIDI0OCwgMjAsIDc5LCAzLCAxLCAyNDgsIDIwLCAyNSwgMjM0LCAyMjgsIDg3LCAyNSwgCi0gICAgMjIzLCAxOTEsIDg3LCAyNSwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDEsIDIxMiwgMjE1LCAyNSwgNiwgMjE3LCAKLSAgICAxMzMsIDg3LCAyNSwgMjMyLCAxNDEsIDI0NSwgNjQsIDg3LCAyNSwgMjIzLCAyMDIsIDIzMiwgMTQxLCAyNDUsIDY0LCA4NywgCi0gICAgMjUsIDYsIDEsIDIyMCwgMTg3LCAyNSwgMywgMSwgMjIwLCAxODcsIDI1LCA2LCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAKLSAgICAyNSwgNiwgMSwgMjIyLCAxNTksIDI1LCAzLCAxLCAyMjIsIDE1OSwgMjUsIDIyMywgMTkxLCAyLCAyMTksIDQ1LCA4NywgMjUsIAotICAgIDYsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgNiwgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCAKLSAgICA4NywgMjUsIDYsIDIyMywgMjAyLCAyNDYsIDcyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAzMywgNiwgMSwgMjM2LCA1NiwgCi0gICAgMiwgMjQyLCAxMTMsIDMzLCA2LCAxLCAyMzUsIDE4NywgMzMsIDYsIDEsIDI0NywgMTE0LCAzMywgNiwgMSwgMjQyLCAxNjMsIAotICAgIDMzLCA2LCAxLCAyMTUsIDE3MiwgMjM2LCA1NSwgMzMsIDYsIDEsIDI0NSwgMjQ3LCAzMywgNiwgMSwgMjUxLCA1LCA3MiwgCi0gICAgMzMsIDYsIDEsIDIxMiwgMjU1LCAzMywgNiwgMSwgMjM1LCAxMjcsIDMzLCA2LCAxLCAyMzIsIDIxNiwgMzMsIDYsIDEsIAotICAgIDIyOSwgOSwgMzMsIDYsIDEsIDIxNiwgMTMyLCAzMywgNiwgMSwgMjM0LCA1NywgMzMsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyNDIsIDExMywgMzMsIDYsIDEsIDIyMCwgMTc1LCA2OSwgMzMsIDYsIDEsIDI0NSwgMjQzLCAzMywgNiwgMSwgNjEsIDMzLCAKLSAgICA2LCAxLCAyNTEsIDI1MSwgMzMsIDYsIDEsIDIxNCwgMjMyLCAzMywgNiwgMSwgMjQyLCAyMTIsIDMzLCA2LCAxLCAyNDgsIAotICAgIDQxLCAzMywgNiwgMSwgMjM2LCA1NSwgMzMsIDYsIDEsIDIxMiwgNjcsIDMzLCA2LCAxLCAyMTIsIDg3LCAzMywgNiwgMSwgCi0gICAgNzIsIDMzLCA2LCAxLCAyMjAsIDE3NSwgNzIsIDMzLCA2LCAxLCAxODEsIDMzLCA2LCAxLCAyNDUsIDEzMSwgMzMsIDYsIDEsIAotICAgIDI0NSwgMTE3LCAzMywgNiwgMSwgMjQ1LCAxMDgsIDMzLCA2LCAxLCA3NSwgMzMsIDYsIDEsIDIyNiwgOTYsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDU1LCAzMywgNiwgMSwgMjQ1LCA0NSwgMzMsIDYsIDEsIDIxNywgMjI5LCAzMywgNiwgMSwgNjksIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE1OSwgMzMsIDYsIDEsIDE1OSwgMzMsIDYsIDEsIDIxNiwgMTM2LCAzMywgNiwgMSwgMjUwLCA2NywgMzMsIDYsIDEsIAotICAgIDIyMSwgMjQsIDMzLCA2LCAxLCAyMjAsIDI0NSwgMzMsIDYsIDEsIDI0MSwgMjQyLCA1MiwgMzMsIDYsIDEsIDIxMywgMTgsIAotICAgIDMzLCA2LCAxLCAyMTksIDIzNiwgNTIsIDMzLCA2LCAxLCA3NCwgMzMsIDYsIDEsIDIxMiwgMjAzLCAzMywgNiwgMSwgMTg2LCAKLSAgICAzMywgMywgMSwgNjEsIDMzLCAzLCAxLCAyNTEsIDI1MSwgMzMsIDMsIDEsIDIxNCwgMjMyLCAzMywgMywgMSwgMjQyLCAyMTIsIAotICAgIDMzLCAzLCAxLCAyNDgsIDQxLCAzMywgMywgMSwgMjM2LCA1NSwgMzMsIDMsIDEsIDIxMiwgNjcsIDMzLCAzLCAxLCAyMTIsIAotICAgIDg3LCAzMywgMywgMSwgNzIsIDMzLCAzLCAxLCAyMjAsIDE3NSwgNzIsIDMzLCAzLCAxLCAxODEsIDMzLCAzLCAxLCAyNDUsIAotICAgIDEzMSwgMzMsIDMsIDEsIDI0NSwgMTE3LCAzMywgMywgMSwgMjQ1LCAxMDgsIDMzLCAzLCAxLCA3NSwgMzMsIDMsIDEsIDIyNiwgCi0gICAgOTYsIDMzLCAzLCAxLCAyNDUsIDU1LCAzMywgMywgMSwgMjQ1LCA0NSwgMzMsIDMsIDEsIDIxNywgMjI5LCAzMywgMywgMSwgCi0gICAgNjksIDMzLCAzLCAxLCAyNDUsIDE1OSwgMzMsIDMsIDEsIDE1OSwgMzMsIDMsIDEsIDIxNiwgMTM2LCAzMywgMywgMSwgMjUwLCAKLSAgICA2NywgMzMsIDMsIDEsIDIyMSwgMjQsIDMzLCAzLCAxLCAyMjAsIDI0NSwgMzMsIDMsIDEsIDI0MSwgMjQyLCA1MiwgMzMsIDMsIAotICAgIDEsIDIxMywgMTgsIDMzLCAzLCAxLCAyMTksIDIzNiwgNTIsIDMzLCAzLCAxLCA3NCwgMzMsIDMsIDEsIDIxMiwgMjAzLCAzMywgCi0gICAgMywgMSwgMTg2LCAzMywgMywgMSwgMjM2LCA1NiwgMiwgMjQyLCAxMTMsIDMzLCAzLCAxLCAyMzUsIDE4NywgMzMsIDMsIDEsIAotICAgIDI0NywgMTE0LCAzMywgMywgMSwgMjQyLCAxNjMsIDMzLCAzLCAxLCAyMTUsIDE3MiwgMjM2LCA1NSwgMzMsIDMsIDEsIDI0NSwgCi0gICAgMjQ3LCAzMywgMywgMSwgMjUxLCA1LCA3MiwgMzMsIDMsIDEsIDIxMiwgMjU1LCAzMywgMywgMSwgMjM1LCAxMjcsIDMzLCAzLCAKLSAgICAxLCAyMzIsIDIxNiwgMzMsIDMsIDEsIDIyOSwgOSwgMzMsIDMsIDEsIDIxNiwgMTMyLCAzMywgMywgMSwgMjM0LCA1NywgMzMsIAotICAgIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgMzMsIDMsIDEsIDIyMCwgMTc1LCA2OSwgMzMsIDMsIDEsIDI0NSwgMjQzLCAKLSAgICAzMywgNiwgMSwgMjI3LCA2NywgMzMsIDMsIDEsIDIyNywgNjcsIDMzLCA2LCAxLCAyMTMsIDQ5LCAzMywgMywgMSwgMjEzLCAKLSAgICA0OSwgMzMsIDYsIDEsIDIzNSwgMTgxLCA3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCA3NCwgMzMsIDYsIDEsIDIzMiwgMjIxLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyMzIsIDIyMSwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgMjMyLCAyMjEsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjUxLCAxNzIsIAotICAgIDIxMiwgMTc0LCAzMywgMywgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjM1LCAxODEsIDI1MSwgMTcyLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzMsIDI0MiwgMzMsIAotICAgIDMsIDEsIDIzMywgMjQyLCAzMywgNiwgMSwgMjI1LCA0NiwgMzMsIDMsIDEsIDIyNSwgNDYsIDMzLCA2LCAxLCAyNDQsIDUxLCAKLSAgICAzMywgMywgMSwgMjQ0LCA1MSwgMzMsIDYsIDEsIDIzNSwgMTQ0LCAzMywgMywgMSwgMjM1LCAxNDQsIDMzLCA2LCAxLCAyMzUsIAotICAgIDE0NSwgMiwgNTEsIDI0MiwgMTE0LCAyNTQsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTQ1LCAyLCA1MSwgMjQyLCAxMTQsIDI1NCwgCi0gICAgMTc0LCAzMywgNiwgMSwgMjE1LCAxNzUsIDMzLCAzLCAxLCAyMTUsIDE3NSwgMzMsIDYsIDEsIDIyMywgODcsIDIyNywgNjcsIAotICAgIDMzLCAzLCAxLCAyMjMsIDg3LCAyMjcsIDY3LCAzMywgNiwgMSwgMjI3LCA2OCwgMiwgMjE3LCAxOCwgMzMsIDMsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIxNywgMTgsIDMzLCA2LCAxLCAyMjcsIDgsIDMzLCAzLCAxLCAyMjcsIDgsIDMzLCA2LCAxLCAyMzQsIDE1LCAKLSAgICAzMywgMywgMSwgMjM0LCAxNSwgMzMsIDIxNywgOTksIDUyLCAzNywgMzMsIDIxNywgMTgsIDM3LCAzMywgMjI2LCAxOTIsIAotICAgIDM3LCAzMywgMjA3LCAyMjUsIDE1MiwgMzcsIDMzLCAyMjUsIDQwLCAyMjUsIDE1MiwgMzcsIDMzLCAyMjUsIDEzNywgMzcsIAotICAgIDMzLCAyNDAsIDIwMSwgMjE3LCA5OSwgNTIsIDM3LCAzMywgMjMxLCA0LCA1MiwgMzMsIDYsIDEsIDIyMCwgMTc1LCAyNDAsIAotICAgIDE0NiwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDIyMCwgMTc1LCAyNDAsIDE0NiwgMiwgMjE4LCAyNywgMzMsIDYsIDEsIDIyMSwgCi0gICAgNjYsIDUyLCAzMywgMywgMSwgMjIxLCA2NiwgNTIsIDMzLCA2LCAxLCAyNDUsIDU2LCAyLCAyMTcsIDY4LCAzMywgMywgMSwgCi0gICAgMjQ1LCA1NiwgMiwgMjE3LCA2OCwgMzMsIDYsIDEsIDI0MiwgMjEzLCAyLCAyMTUsIDEyNywgMzMsIDMsIDEsIDI0MiwgMjEzLCAKLSAgICAyLCAyMTUsIDEyNywgMzMsIDYsIDEsIDI0MiwgMjEzLCAyLCA5MCwgMzMsIDMsIDEsIDI0MiwgMjEzLCAyLCA5MCwgMzMsIDYsIAotICAgIDEsIDI0MiwgMjEzLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgCi0gICAgMSwgMjEyLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMTIsIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIxMiwgCi0gICAgODgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjEyLCA4OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMzUsIDE3LCAyLCAKLSAgICAyNDcsIDI0NiwgMzMsIDMsIDEsIDIzNSwgMTcsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjM1LCAxNywgMiwgNzEsIDkwLCAKLSAgICAzMywgMywgMSwgMjM1LCAxNywgMiwgNzEsIDkwLCAzMywgNiwgMSwgMjM1LCAxNywgMiwgOTAsIDMzLCAzLCAxLCAyMzUsIAotICAgIDE3LCAyLCA5MCwgMzMsIDYsIDEsIDI1MiwgNDQsIDE4MSwgMzMsIDMsIDEsIDI1MiwgNDQsIDE4MSwgMzMsIDYsIDEsIDI0NSwgCi0gICAgMTA5LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDI2LCAyNDUsIDEwOSwgCi0gICAgMjQyLCAyMTIsIDMzLCAzLCAyNiwgMjQ1LCAxMDksIDI0MiwgMjEyLCAzMywgNiwgMSwgMjI2LCA5NywgMiwgMjMxLCAzNywgCi0gICAgMTAxLCAzMywgMywgMSwgMjI2LCA5NywgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjU0LCAxODAsIDE1OSwgMzMsIDMsIAotICAgIDEsIDI1NCwgMTgwLCAxNTksIDMzLCA2LCAxLCAyNDUsIDQ2LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDI0NSwgNDYsIDIsIAotICAgIDI0NywgMjQ2LCAzMywgNiwgMSwgMjE3LCAyMzAsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjE3LCAyMzAsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgNiwgMSwgMjE5LCA2MSwgNjksIDMzLCAzLCAxLCAyMTksIDYxLCA2OSwgMzMsIDYsIDEsIDIxOSwgNjEsIAotICAgIDExMSwgMiwgOTAsIDMzLCAzLCAxLCAyMTksIDYxLCAxMTEsIDIsIDkwLCAzMywgNiwgMSwgMjQyLCAzMCwgMiwgMjQ3LCAKLSAgICAyNDYsIDMzLCAzLCAxLCAyNDIsIDMwLCAyLCAyNDcsIDI0NiwgMzMsIDYsIDI2LCAyMTcsIDIzMCwgMjE2LCAxMzYsIDMzLCAKLSAgICAzLCAyNiwgMjE3LCAyMzAsIDIxNiwgMTM2LCAzMywgNiwgMSwgMjUwLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNTAsIAotICAgIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDI1MCwgNjgsIDIsIDcxLCA5MCwgMzMsIDMsIDEsIDI1MCwgNjgsIDIsIDcxLCAKLSAgICA5MCwgMzMsIDYsIDEsIDIyMCwgMjEzLCAzMywgMywgMSwgMjIwLCAyMTMsIDMzLCA2LCAxLCAyNTQsIDE4MCwgMjUwLCA2NywgCi0gICAgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNTAsIDY3LCAzMywgNiwgMSwgMjU0LCAxODAsIDI1MCwgNjgsIDIsIDI0NywgMjQ2LCAKLSAgICAzMywgMywgMSwgMjU0LCAxODAsIDI1MCwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMSwgMjI2LCAxODUsIDMzLCA2LCAxLCAyMTIsIAotICAgIDY4LCAyLCAyNTEsIDc0LCAzMywgMywgMSwgMjEyLCA2OCwgMiwgMjUxLCA3NCwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDEwMSwgCi0gICAgMzMsIDMsIDEsIDIzNSwgMTcsIDIsIDEwMSwgMzMsIDYsIDEsIDI0NSwgMTMyLCAyLCAyMTgsIDI3LCAzMywgMywgMSwgMjQ1LCAKLSAgICAxMzIsIDIsIDIxOCwgMjcsIDMzLCA2LCAxLCAyNDUsIDEwOSwgMiwgMTAxLCAzMywgMywgMSwgMjQ1LCAxMDksIDIsIDEwMSwgCi0gICAgMzMsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTgsIDI3LCAzMywgMywgMSwgMjQ1LCAxMDksIDIsIDIxOCwgMjcsIDMzLCA2LCAxLCAKLSAgICAyMzQsIDEzMywgMjUwLCA2NywgMzMsIDMsIDEsIDIzNCwgMTMzLCAyNTAsIDY3LCAzMywgNiwgMSwgMjQ1LCAxMTgsIDIsIAotICAgIDIxOCwgMjcsIDMzLCAzLCAxLCAyNDUsIDExOCwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDIyNiwgMTg1LCAzMywgNiwgMSwgCi0gICAgMTE4LCAyLCAyNTEsIDc0LCAzMywgMywgMSwgMTE4LCAyLCAyNTEsIDc0LCAzMywgNiwgMSwgMTE4LCAyLCAyNDcsIDIwOSwgCi0gICAgMzMsIDMsIDEsIDExOCwgMiwgMjQ3LCAyMDksIDMzLCA2LCAyNiwgMTE4LCAyMzYsIDU1LCAzMywgMywgMjYsIDExOCwgMjM2LCAKLSAgICA1NSwgMzMsIDYsIDEsIDIzNiwgNTYsIDIsIDI1MSwgNzQsIDMzLCAzLCAxLCAyMzYsIDU2LCAyLCAyNTEsIDc0LCAzMywgNiwgCi0gICAgMSwgMjIyLCAxMTMsIDMzLCAzLCAxLCAyMjIsIDExMywgMzMsIDYsIDEsIDIyMiwgMTE0LCAyLCAyNDcsIDIwOSwgMzMsIDMsIAotICAgIDEsIDIyMiwgMTE0LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDIxMiwgNjgsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjEyLCAKLSAgICA2OCwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAyMTIsIDg4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDIxMiwgODgsIDIsIAotICAgIDI0NywgMjA5LCAzMywgNiwgMSwgMjU0LCAxODAsIDI0NSwgMjQ3LCAzMywgMywgMSwgMjU0LCAxODAsIDI0NSwgMjQ3LCAzMywgCi0gICAgNiwgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDMzLCAzLCAxLCAyNDAsIDE0NiwgMiwgMjMyLCAzNywgMzMsIDYsIDEsIAotICAgIDI0MCwgMTQ2LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDE1NywgMiwgCi0gICAgMjQ3LCAyMDksIDMzLCAzLCAxLCAxNTcsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMjUyLCA1NCwgNzUsIDMzLCAzLCAxLCAKLSAgICAyNTIsIDU0LCA3NSwgMzMsIDYsIDEsIDI1MiwgNTQsIDE1NywgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyNTIsIDU0LCAxNTcsIAotICAgIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMTkxLCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDMzLCAKLSAgICA2LCAxLCAxMTEsIDIsIDIzMiwgMzcsIDMzLCAzLCAxLCAxMTEsIDIsIDIzMiwgMzcsIDMzLCA2LCAxLCAxMTEsIDIsIDI0NywgCi0gICAgMjA5LCAzMywgMywgMSwgMTExLCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDExMSwgMiwgNTEsIDE3OSwgMzMsIDMsIDEsIAotICAgIDExMSwgMiwgNTEsIDE3OSwgMzMsIDYsIDEsIDI1MCwgNjgsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjUwLCA2OCwgMiwgCi0gICAgMjQ3LCAyMDksIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgMjQ3LCAKLSAgICAyNDYsIDMzLCA2LCAxLCAyMTMsIDE5LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDIxMywgMTksIDIsIDI0NywgMjA5LCAzMywgCi0gICAgNiwgMSwgMjQyLCAyMTMsIDIsIDIxOSwgNDUsIDI0LCAxMDEsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgMjE5LCA0NSwgMjQsIAotICAgIDEwMSwgMzMsIDYsIDEsIDI0MiwgMzAsIDIsIDEwMSwgMzMsIDMsIDEsIDI0MiwgMzAsIDIsIDEwMSwgMzMsIDYsIDEsIDI0MiwgCi0gICAgMzAsIDIsIDkwLCAzMywgMywgMSwgMjQyLCAzMCwgMiwgOTAsIDMzLCA2LCAxLCAyMzQsIDIzLCAyNDgsIDQxLCAzMywgMywgCi0gICAgMSwgMjM0LCAyMywgMjQ4LCA0MSwgMzMsIDYsIDEsIDIzNCwgMjMsIDI0NywgMTE0LCAzMywgMywgMSwgMjM0LCAyMywgMjQ3LCAKLSAgICAxMTQsIDMzLCA2LCAxLCAyMzQsIDIzLCAyMTIsIDIwLCAzMywgMywgMSwgMjM0LCAyMywgMjEyLCAyMCwgMzMsIDYsIDEsIAotICAgIDIzNCwgMjMsIDI0NSwgMjQxLCAzMywgMywgMSwgMjM0LCAyMywgMjQ1LCAyNDEsIDMzLCA2LCAxLCAyMzQsIDIzLCAyMzIsIAotICAgIDIxNiwgMzMsIDMsIDEsIDIzNCwgMjMsIDIzMiwgMjE2LCAzMywgNiwgMSwgMjM0LCAyMywgMjI5LCA5LCAzMywgMywgMSwgCi0gICAgMjM0LCAyMywgMjI5LCA5LCAzMywgNiwgMSwgMjM0LCAyMywgMjIwLCAzNywgMzMsIDMsIDEsIDIzNCwgMjMsIDIyMCwgMzcsIAotICAgIDMzLCA2LCAxLCAyMzQsIDIzLCAyMTcsIDEzLCAzMywgMywgMSwgMjM0LCAyMywgMjE3LCAxMywgMzMsIDYsIDEsIDIyMywgCi0gICAgMjAyLCAyMTIsIDg3LCAzMywgMywgMSwgMjIzLCAyMDIsIDIxMiwgODcsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgMTAxLCAKLSAgICAzMywgMywgMSwgMjQ1LCAxMzIsIDIsIDEwMSwgMzMsIDYsIDEsIDIzMywgMjUsIDMzLCAzLCAxLCAyMzMsIDI1LCAzMywgNiwgCi0gICAgMSwgMjIzLCAxOTIsIDMzLCAzLCAxLCAyMjMsIDE5MiwgMzMsIDYsIDEsIDIxMywgODAsIDMzLCAzLCAxLCAyMTMsIDgwLCAKLSAgICAzMywgNiwgMSwgMjI0LCAyMzIsIDMzLCAzLCAxLCAyMjQsIDIzMiwgMzMsIDYsIDEsIDIxNCwgNiwgMzMsIDMsIDEsIDIxNCwgCi0gICAgNiwgMzMsIDYsIDEsIDI1NCwgNzUsIDE4MSwgMzMsIDMsIDEsIDI1NCwgNzUsIDE4MSwgMzMsIDYsIDEsIDI0NSwgMTMyLCAyLCAKLSAgICAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyNDUsIDEzMiwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjQ1LCAxMDksIDIsIAotICAgIDIzMSwgMzcsIDEwMSwgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAyMzEsIDM3LCAxMDEsIDMzLCA2LCAxLCAyMjYsIDk3LCAyLCAKLSAgICAyNDcsIDI0NiwgMzMsIDMsIDEsIDIyNiwgOTcsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjIwLCAyMTQsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgMywgMSwgMjIwLCAyMTQsIDIsIDI0NywgMjQ2LCAxNDEsIDYsIDEsIDI1MywgODAsIDE0MSwgNiwgMSwgMjUxLCAKLSAgICAyMTYsIDE0MSwgNiwgMSwgMjQyLCAxNzksIDE0MSwgNiwgMSwgMjQ4LCAxNjQsIDE0MSwgNiwgMSwgMjQ1LCAxNjksIDE0MSwgCi0gICAgNiwgMSwgMjEyLCAxMDksIDE0MSwgNiwgMSwgMjQ1LCAxNTQsIDE0MSwgNiwgMSwgMjQ1LCAzMCwgMTQxLCA2LCAxLCAxMDgsIAotICAgIDE0MSwgNiwgMSwgMjEyLCA2NywgMTQxLCA2LCAxLCAyMzUsIDIyNCwgMTQxLCA2LCAxLCAyMzIsIDIxOSwgMTQxLCA2LCAxLCAKLSAgICAyMTMsIDE0OCwgMTQxLCA2LCAxLCAyNTAsIDIxOSwgMTQxLCA2LCAxLCAyMzQsIDE3MSwgMTQxLCA2LCAxLCAyNDEsIDU0LCAKLSAgICAxNDEsIDYsIDEsIDIzNSwgMTM5LCAxNDEsIDYsIDEsIDI0MiwgMjIyLCAxNDEsIDYsIDEsIDI1MCwgNjIsIDE0MSwgNiwgMSwgCi0gICAgMjMxLCAxMjIsIDE0MSwgNiwgMSwgMjEyLCAyNTUsIDE0MSwgNiwgMSwgMjI4LCAxNTAsIDE0MSwgNiwgMSwgMjIxLCAyNCwgCi0gICAgMTQxLCA2LCAxLCAyMTQsIDExOSwgMTQxLCA2LCAxLCAyNTAsIDkyLCAxNDEsIDYsIDEsIDIyNiwgODAsIDE0MSwgNiwgMSwgCi0gICAgMjM1LCAxMTIsIDE0MSwgNiwgMSwgMjAzLCAxNDEsIDYsIDEsIDIyMiwgODAsIDE0MSwgNiwgMSwgMjE0LCAxNTYsIDE0MSwgCi0gICAgNiwgMSwgMjE3LCAxNSwgMTQxLCA2LCAxLCAyMjMsIDI0NSwgMTQxLCA2LCAxLCAyNDksIDE3NSwgMTQxLCA2LCAxLCAyMTIsIAotICAgIDI0MCwgMTQxLCA2LCAxLCAyMjUsIDE3OCwgMTQxLCA2LCAxLCAyMzQsIDE4MiwgMTQxLCA2LCAxLCAyMjcsIDg4LCAxNDEsIAotICAgIDYsIDEsIDI0NCwgMTExLCAxNDEsIDU5LCAxLCA0MiwgMTUxLCAyMjMsIDEzMCwgMTQxLCAyNTMsIDIyNiwgMTQxLCAyNDUsIAotICAgIDExMiwgNzcsIDE0MSwgMjQ0LCAyNTQsIDc3LCAxNDEsIDI0OSwgMTU3LCAxNDEsIDIyNCwgMTU4LCA3NywgMTQxLCAyNTQsIAotICAgIDE4MSwgNzcsIDE0MSwgMywgMSwgMjUzLCA4MCwgMTQxLCAzLCAxLCAyNTEsIDIxNiwgMTQxLCAzLCAxLCAyNDIsIDE3OSwgCi0gICAgMTQxLCAzLCAxLCAyNDgsIDE2NCwgMTQxLCAzLCAxLCAyNDUsIDE2OSwgMTQxLCAzLCAxLCAyMTIsIDEwOSwgMTQxLCAzLCAxLCAKLSAgICAyNDUsIDE1NCwgMTQxLCAzLCAxLCAyNDUsIDMwLCAxNDEsIDMsIDEsIDEwOCwgMTQxLCAzLCAxLCAyMTIsIDY3LCAxNDEsIDMsIAotICAgIDEsIDIzNSwgMjI0LCAxNDEsIDMsIDEsIDIzMiwgMjE5LCAxNDEsIDMsIDEsIDIxMywgMTQ4LCAxNDEsIDMsIDEsIDI1MCwgCi0gICAgMjE5LCAxNDEsIDMsIDEsIDIzNCwgMTcxLCAxNDEsIDMsIDEsIDI0MSwgNTQsIDE0MSwgMywgMSwgMjM1LCAxMzksIDE0MSwgCi0gICAgMywgMSwgMjQyLCAyMjIsIDE0MSwgMywgMSwgMjUwLCA2MiwgMTQxLCAzLCAxLCAyMzEsIDEyMiwgMTQxLCAzLCAxLCAyMTIsIAotICAgIDI1NSwgMTQxLCAzLCAxLCAyMjgsIDE1MCwgMTQxLCAzLCAxLCAyMjEsIDI0LCAxNDEsIDMsIDEsIDIxNCwgMTE5LCAxNDEsIAotICAgIDMsIDEsIDI1MCwgOTIsIDE0MSwgMywgMSwgMjI2LCA4MCwgMTQxLCAzLCAxLCAyMzUsIDExMiwgMTQxLCAzLCAxLCAyMDMsIAotICAgIDE0MSwgMywgMSwgMjIyLCA4MCwgMTQxLCAzLCAxLCAyMTQsIDE1NiwgMTQxLCAzLCAxLCAyMTcsIDE1LCAxNDEsIDMsIDEsIAotICAgIDIyMywgMjQ1LCAxNDEsIDMsIDEsIDI0OSwgMTc1LCAxNDEsIDMsIDEsIDIxMiwgMjQwLCAxNDEsIDMsIDEsIDIyNSwgMTc4LCAKLSAgICAxNDEsIDMsIDEsIDIzNCwgMTgyLCAxNDEsIDMsIDEsIDIyNywgODgsIDE0MSwgMywgMSwgMjQ0LCAxMTEsIDE0MSwgMywgMjYsIAotICAgIDI0NSwgMTcwLCAyMTIsIDI0MCwgMTQxLCAyNDMsIDIwMCwgMjE5LCA2OSwgMTQxLCAyNDAsIDE2MCwgOTMsIDI1NCwgMTc1LCAKLSAgICAyNDUsIDIzLCA5MywgMjU0LCAxNzUsIDIyMiwgODEsIDkzLCAyNTQsIDE3NSwgMjIxLCAxMSwgOTMsIDI1NCwgMTc1LCAyMTIsIAotICAgIDk3LCAyMjQsIDIxNSwgOTMsIDI1NCwgMTc1LCAyMTIsIDk3LCAyNDMsIDEwMCwgOTMsIDI1NCwgMTc1LCAyMTcsIDI4LCA5MywgCi0gICAgMjU0LCAxNzUsIDIyMywgMjAwLCA5MywgMjU0LCAxNzUsIDIxMiwgOTYsIDkzLCAyNTQsIDE3NSwgMjI2LCAxMTgsIDkzLCAKLSAgICAyNTQsIDE3NSwgMjEzLCAxMSwgOTMsIDI1NCwgMTc1LCAyMTcsIDE2NywgOTMsIDI1NCwgMTc1LCAyNDMsIDE3LCA5MywgCi0gICAgMjU0LCAxNzUsIDI0MywgMTgsIDIzMCwgMTM5LCA5MywgMjU0LCAxNzUsIDI0MywgMTUsIDkzLCAyNTQsIDE3NSwgMjI0LCAKLSAgICAyMTYsIDIyNiwgMTQ0LCA5MywgMjU0LCAxNzUsIDIxNywgMjA2LCAyNDMsIDMyLCA5MywgMjU0LCAxNzUsIDIyNiwgMTAwLCAKLSAgICA5MywgMjU0LCAxNzUsIDI1MywgMTE2LCAyNDIsIDIyLCA5MywgMjU0LCAxNzUsIDIzMCwgMTQ5LCA5MywgMjU0LCAxNzUsIAotICAgIDIzMiwgMTMsIDkzLCAyNTQsIDE3NSwgMjMxLCAxMTMsIDkzLCAyNTQsIDE3NSwgMjMxLCAxMTQsIDIzNCwgMTgzLCA5MywgCi0gICAgMjU0LCAxNzUsIDI0OCwgMTA4LCA5MywgMjU0LCAxNzUsIDIyNCwgMjI3LCA5MywgMjU0LCAxNzUsIDIxNywgMjA2LCAyMjQsIAotICAgIDIxMSwgOTMsIDI1NCwgMTc1LCAyMTMsIDIxLCAyNTEsIDIxNywgMjEyLCAyMjEsIDkzLCAyNTQsIDE3NSwgMjI3LCA3MywgCi0gICAgOTMsIDI1NCwgMTc1LCAyMzYsIDE0LCA5MywgMjU0LCAxNzUsIDI0OCwgMjEsIDkzLCAyNTQsIDE3NSwgMjEyLCAyNiwgOTMsIAotICAgIDE1MiwgMjMxLCAyMDYsIDI0OSwgMjI4LCA5MywgMjI1LCAxNDUsIDIyMCwgMjE2LCA5MywgMjI1LCAxNDUsIDI0MSwgMjMzLCAKLSAgICAyMjIsIDgxLCA5MywgMjI1LCAxNDUsIDI0MSwgMjMzLCAyMjYsIDExMiwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgMjI0LCAKLSAgICAyMjAsIDkzLCAyMjUsIDE0NSwgMjQxLCAxNDQsIDkzLCAyMjUsIDE0NSwgMjE2LCAxMzQsIDkzLCAyMjUsIDE0NSwgMjIyLCAKLSAgICA4MSwgOTMsIDIyNSwgMTQ1LCAyMjYsIDExMiwgOTMsIDIyNSwgMTQ1LCAyMjQsIDIyMCwgOTMsIDIyNSwgMTQ1LCAyNDEsIAotICAgIDQ3LCA5MywgMjI1LCAxNDUsIDI0MSwgNDgsIDI0MSwgMjM1LCAzMSwgMjE0LCAyMzYsIDkzLCAyMjUsIDE0NSwgMjI0LCAKLSAgICAxNjIsIDkzLCAyMjUsIDE0NSwgMjQ4LCAxNTEsIDE2NywgMjMxLCAyMzQsIDkzLCAyMjUsIDE0NSwgMjMxLCAxMDUsIDkzLCAKLSAgICAyMjUsIDI3LCAyMzEsIDIzMSwgOTMsIDIyNSwgMTQ1LCAyMjQsIDU5LCA5MywgMjI1LCAyNywgMjI2LCAxMjAsIDkzLCAyMjUsIAotICAgIDE0NSwgMjIwLCAyMDEsIDI0NywgNzQsIDkzLCAyMjUsIDE0NSwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDIyNSwgMjcsIDIxOSwgCi0gICAgMjM3LCAyMjYsIDExNCwgOTMsIDE1MiwgMjE1LCAxMzEsIDI0NywgNzQsIDkzLCAxNTIsIDIzMiwgMTYzLCAyNDcsIDc0LCAKLSAgICA5MywgMjI1LCAyNywgMjI4LCA1MSwgMjQyLCAyMSwgOTMsIDIyNSwgMTQ1LCAyMjQsIDIyMSwgMjI0LCAyMTUsIDkzLCAxLCAKLSAgICAyNTQsIDc4LCA5MywgMSwgMjUxLCAyMDUsIDkzLCAxLCAyNDIsIDE3NywgOTMsIDEsIDI0OCwgMTM0LCA5MywgMSwgMjQxLCAKLSAgICAyMjIsIDkzLCAxLCAyMTQsIDIzNiwgOTMsIDEsIDIxMiwgOTAsIDkzLCAxLCAyNDEsIDE4MiwgOTMsIDEsIDIxNywgMTgzLCAKLSAgICA5MywgMSwgMjEyLCAyMjQsIDkzLCAxLCA0MCwgMjM0LCAyNTQsIDkzLCAxLCAyMzQsIDI1NCwgOTMsIDEsIDIzMywgMTE4LCAKLSAgICA5MywgMSwgNDAsIDIzMSwgMTI5LCA5MywgMSwgMjMxLCAxMjksIDkzLCAxLCA0MCwgMjI4LCA1MCwgOTMsIDEsIDIyOCwgNTAsIAotICAgIDkzLCAxLCAyMjIsIDE2NCwgOTMsIDEsIDI1MywgNzgsIDkzLCAxLCA0MCwgMjI2LCA5NiwgOTMsIDEsIDIyNiwgOTYsIDkzLCAKLSAgICAxLCA0MCwgMjE2LCAxMzcsIDkzLCAxLCAyMTYsIDEzNywgOTMsIDEsIDIyNCwgMTg0LCA5MywgMSwgMjIzLCAyMTksIDkzLCAKLSAgICAxLCAyMjAsIDIwMCwgOTMsIDEsIDIxNywgMjQ1LCA5MywgMjYsIDIxMiwgMjUzLCA1MSwgMjE0LCAyMzYsIDkzLCAyNiwgCi0gICAgMjEyLCAyNTMsIDIxNCwgMjM3LCAyMTIsIDIyNCwgOTMsIDI2LCAyMTIsIDI1MywgNTEsIDIxMiwgMjI0LCA5MywgMjI1LCAKLSAgICAyNywgMjQzLCAxNywgOTMsIDIyNSwgMjcsIDI0MywgMTUsIDEyLCA1MCwgNTIsIDEyLCA1LCAyMjIsIDE1OCwgMTIsIDI0MywgCi0gICAgMjU1LCAyMzEsIDIxNywgMTIsIDUsIDIyMiwgMTkyLCAyNTMsIDIwNywgMjQ5LCA1MCwgMjIzLCA5NSwgMjUzLCAyMDcsIAotICAgIDI0MywgMjMwLCAyMjMsIDk1LCAxMiwgMjI0LCAyNywgMjUzLCAyMDcsIDIyNiwgNTgsIDIzMSwgNiwgNTIsIDI1MywgMjA3LCAKLSAgICAyMjYsIDU4LCAyMTcsIDIwMSwgMjE3LCAxMDEsIDUyLCAyNTQsIDEyNiwgNTIsIDEyLCAyNDksIDE1NywgMTIsIDI0OCwgOTYsIAotICAgIDIyMSwgNTcsIDEyLCAyMjUsIDE0NywgMjE0LCAyMTgsIDUyLCAxMiwgNSwgMjMwLCAyNDMsIDEyLCA1LCAyMjIsIDE3NCwgCi0gICAgMjU0LCA4MCwgMjE0LCAyOSwgMTIsIDUsIDI1NCwgODAsIDI1MywgMTM3LCAxMiwgNSwgMjI0LCA1OCwgMjU0LCA3OSwgMTIsIAotICAgIDUsIDIyNCwgNjUsIDI1NCwgNjEsIDI1NCwgMTQsIDEyLCA1LCAyMTgsIDIwLCAxMiwgMywgMTI0LCAyMTgsIDI5LCAxMiwgMywgCi0gICAgMTI0LCAyNiwgMTA2LCAyLCAyMzMsIDEyNywgMiwgMjEzLCAzNCwgMTIsIDMsIDEyNCwgMjEyLCAxMDEsIDEyLCAzLCAyNDQsIAotICAgIDEzMywgMTIsIDMsIDI0OCwgMTI5LCAxMiwgMywgMjM0LCAyMTAsIDEyLCAyMjEsIDcwLCAxMiwgMjE2LCAxNjksIDYyLCAKLSAgICAyMjUsIDI3LCA3NywgMTIsIDIyNCwgMTU4LCA3NywgMTIsIDEsIDIzNCwgMjE0LCAyMTMsIDM0LCAxMiwgMSwgMjQyLCAyLCAKLSAgICAxMiwgMSwgMTA2LCAyLCAyMzIsIDMzLCA0OSwgMTIsIDEsIDEwNiwgMiwgMTkyLCA0OSwgMTIsIDEsIDIxNCwgMTUsIDIsIAotICAgIDE5MiwgNDksIDEyLCAxLCAxMDYsIDIsIDE5MiwgNTUsIDEyLCAxLCA3MywgMiwgMTkyLCA0OSwgMTIsIDEsIDI1NCwgNzgsIAotICAgIDEyLCAxLCAyNTEsIDIzMCwgMTIsIDEsIDIxNywgMjE2LCAyMzEsIDIyNywgMTIsIDEsIDIxNywgMjE1LCAxMiwgMSwgMjE3LCAKLSAgICAxNDUsIDEyLCAxLCAyMzUsIDEyNCwgMTIsIDEsIDI0MiwgMTgsIDEyLCAxLCAyMzQsIDEzNSwgMTIsIDEsIDI0OCwgMTQwLCAKLSAgICAxMiwgMSwgMjE3LCAxNTUsIDEyLCAxLCAyMjMsIDI0NSwgMTIsIDEsIDIxMiwgMTAxLCAxMiwgMSwgMjIyLCA4NSwgMTIsIDEsIAotICAgIDIyMCwgMjM5LCAxMiwgMSwgMjIyLCAxOTUsIDEyLCAxLCAyNDgsIDE1OSwgMTIsIDEsIDIxOCwgMjksIDEyLCAxLCAyMTIsIAotICAgIDEwNCwgMTIsIDEsIDI1NCwgMTAzLCAxMiwgMSwgMjQyLCAyMjAsIDEyLCAxLCAyMzQsIDE4MSwgMiwgMTE3LCAxNzYsIDQ5LCAKLSAgICAxMiwgMSwgMjM0LCAxODEsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIDI0NCwgMTM2LCA3MywgMiwgMjM1LCAxOTEsIDIxNSwgCi0gICAgNzksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDI0NCwgMTM2LCA3MywgMiwgMTMzLCAKLSAgICAxNzYsIDQ5LCAxMiwgMjE3LCAyNTAsIDEyLCAxLCAyNDQsIDExMSwgMTIsIDEsIDIyNCwgMjI1LCAxMiwgMSwgMjM0LCAyNTQsIAotICAgIDEyLCAxLCAyMzMsIDEyNiwgMTIsIDEsIDIzMSwgMTQzLCAxMiwgMSwgMjI4LCAxNzMsIDEyLCAxLCAyNDEsIDIwMiwgMTIsIAotICAgIDEsIDIxNCwgMTQsIDEyLCAxLCAxMDYsIDIzMSwgMjU1LCAxMiwgMSwgMjEzLCAzNCwgMTIsIDI0NCwgMTMxLCAxMiwgMjQ4LCAKLSAgICAxMjcsIDEyLCAyMzQsIDIwOCwgMTIsIDI0NCwgMTMzLCAxMiwgMjQ4LCAxMjksIDEyLCAyMzQsIDIxMCwgMTIsIDIyMSwgMTUsIAotICAgIDEyLCAyMTgsIDI0NiwgMTIsIDIzMiwgMzEsIDQ5LCAxMiwgMTkyLCA0OSwgMTIsIDE5MiwgNTUsIDEyLCAyMTksIDEwLCAKLSAgICAyNTQsIDc4LCAxMiwgMjM1LCAxOTEsIDI0OCwgMTI5LCAxMiwgMTUyLCAyMjgsIDE3NCwgMjQyLCAxOTQsIDEyLCAyMTEsIAotICAgIDI1MCwgMTIsIDMwLCA1LCAzLCAyMTUsIDgwLCA0OSwgMTIsIDMwLCA1LCAyMzUsIDE5MSwgMywgMjE1LCA4MCwgNDksIDEyLCAKLSAgICAzMCwgNSwgNjIsIDU1LCAxMiwgMjIzLCAyMDIsIDI0OCwgMTI5LCAxMiwgMjQ0LCAxMzQsIDIsIDExNywgMjQ3LCA3MiwgMTIsIAotICAgIDIxNCwgMTYsIDE5MiwgNTUsIDI1MywgMjA3LCAyMSwgMjEyLCA3OSwgMjUzLCAyMDcsIDIxLCAxMTYsIDI1MywgMjA3LCAyMSwgCi0gICAgMTA5LCAyNTMsIDIwNywgMjEsIDE2NiwgMjUzLCAyMDcsIDIxLCAxNjMsIDI1MywgMjA3LCAyMSwgMTgwLCAyNTMsIDIwNywgCi0gICAgMjEsIDE4OSwgMjUzLCAyMDcsIDIxLCAxOTgsIDI1MywgMjA3LCAyMSwgMTk1LCAyNTMsIDIwNywgMjEsIDIwMCwgMTIsIAotICAgIDIyNiwgNTcsIDUyLCAxMiwgMjQ4LCAzNCwgMjIxLCA1NywgMTIsIDIxNywgOTksIDIyMSwgNTcsIDEyLCAyNDQsIDUwLCAKLSAgICAyMjUsIDE0MywgMjE5LCA5NSwgMTIsIDEsIDI0NywgNzMsIDI1MSwgMjMwLCAxMiwgMSwgMjQ3LCA3MywgMjI0LCAyMjUsIAotICAgIDEyLCAxLCAyMTgsIDIyMywgMjU0LCA3OCwgMTIsIDEsIDEwNiwgMjE0LCAzMCwgMTIsIDEsIDEwNiwgMiwgMjE0LCAxNiwgCi0gICAgMTkyLCA0OSwgMTIsIDEsIDEwNiwgMiwgMjE0LCAxNiwgMTkyLCA1NSwgMTIsIDEsIDEyNCwgMjQyLCAyLCAxMiwgMSwgMTI0LCAKLSAgICAxOTIsIDI1NCwgNzgsIDEyLCAxLCAxMjQsIDE5MiwgMjE0LCAxNCwgMTIsIDEsIDExMSwgMiwgMTkyLCA0OSwgMTIsIDEsIAotICAgIDEyNCwgMTkyLCAyMTMsIDM0LCAxMiwgMSwgMjE2LCAxMDksIDEyLCAxLCAyMTYsIDEwNywgMTIsIDEsIDI1MSwgMjQwLCAxMiwgCi0gICAgMSwgMjE3LCAyMTYsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjE3LCAyMTYsIDIsIDEzMywgMTc2LCA3OCwgMjQ2LCA1NywgMTIsIAotICAgIDEsIDIyNiwgODAsIDEyLCAxLCAyMTcsIDIxMywgMTIsIDEsIDI1MSwgMjI4LCAxMiwgMSwgMTIxLCAyLCAxOTIsIDQ5LCAxMiwgCi0gICAgMSwgMTIxLCAyLCAxMTcsIDE3NiwgNzEsIDQ5LCAxMiwgMSwgMjI4LCAxNCwgMTIsIDEsIDI0NSwgMjU0LCAxMiwgMSwgMTIxLCAKLSAgICAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMTcsIDIzMywgMTIsIDEsIDIxNywgMjMxLCAxMiwgMSwgMjQ4LCA4MSwgMTIsIDEsIAotICAgIDI0OCwgMTQxLCAyLCAyMjMsIDEzMCwgMTIsIDEsIDI0OCwgMTQxLCAyLCA2MiwgNTUsIDEyLCAxLCAyNDgsIDE0MSwgMiwgCi0gICAgNjIsIDI1MSwgMjIwLCAyNCwgMywgMjE4LCAyOSwgMTIsIDEsIDI0OCwgMTQ2LCAxMiwgMSwgMjQ4LCA4MywgMTIsIDEsIAotICAgIDI0NiwgMjUsIDEyLCAxLCAyNDgsIDE0MSwgMiwgMTMzLCAxNzYsIDc4LCAyNDYsIDU3LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIAotICAgIDI0MywgMjM3LCAxNzYsIDQ5LCAxMiwgMSwgMjIzLCA3NywgMTIsIDEsIDIyMywgMjQ2LCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgCi0gICAgMjIzLCAyNDYsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjIzLCAyNDYsIDIsIDYyLCA1NSwgMTIsIDEsIDIyMywgMjQ2LCAyLCAzLCAKLSAgICAyMTUsIDgwLCA1NSwgMTIsIDEsIDIyMywgMjQ2LCAyLCA2MiwgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDEyLCAxLCAyMjMsIAotICAgIDI0NiwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjM1LCAxMjEsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMjQzLCAyMzcsIDE3NiwgCi0gICAgNDksIDEyLCAxLCAyMjIsIDg2LCAyLCA2MiwgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDEyLCAxLCAyMjIsIDg2LCAyLCAxMzMsIAotICAgIDE3NiwgNTUsIDEyLCAxLCAyMjIsIDg2LCAyLCAxMzMsIDE3NiwgMjUxLCAyMjAsIDI0LCAxMzMsIDE3NiwgNDksIDEyLCAxLCAKLSAgICAyMjIsIDE5NiwgMiwgMTE3LCAxNzYsIDU1LCAxMiwgMSwgMjIyLCAxOTYsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIxOCwgCi0gICAgMzAsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI1NCwgMTA0LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyNDcsIDczLCAKLSAgICAyNDQsIDExMSwgMTIsIDEsIDI0NCwgMTEyLCAyLCA2MiwgMjMwLCAxNzksIDU1LCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDYyLCAKLSAgICA1NSwgMTIsIDEsIDIxNCwgMjI1LCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIDIyNiwgNzgsIAotICAgIDEyLCAxLCAyMjQsIDIyNiwgMiwgNjIsIDQ5LCAxMiwgMSwgMjI0LCAyMjYsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIzNCwgCi0gICAgMTgwLCAxMiwgMSwgMjE4LCAxOTUsIDIzNCwgMjU0LCAxMiwgMSwgMjM0LCAyNTUsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjM0LCAKLSAgICAyNTUsIDIsIDYyLCA0OSwgMTIsIDEsIDIyOSwgMTYxLCAxMiwgMSwgMjM0LCAyNTUsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIAotICAgIDI0MywgOTcsIDEyLCAxLCAyNDMsIDk4LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIyOSwgODgsIDEyLCAxLCAyNDMsIDk4LCAyLCAKLSAgICAxMTcsIDE3NiwgNTUsIDEyLCAxLCAyNDIsIDgyLCAxMiwgMSwgMjQzLCA5OCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgCi0gICAgMjMzLCAxMjcsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAyMzMsIDEyNywgMiwgNjIsIDQ5LCAxMiwgMSwgMjMzLCAxMjcsIDIsIAotICAgIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIzMywgMTI3LCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyMjgsIDE3NCwgMiwgNjIsIAotICAgIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDI0MiwgMTk0LCAxMiwgMSwgMjIzLCAxMTUsIDEyLCAxLCAyMjgsIDE3NCwgMiwgMjIzLCAKLSAgICAxMzAsIDEyLCAxLCAyMjgsIDE3NCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjQxLCAyMDMsIDI0NywgOTUsIDEyLCAxLCAKLSAgICAyMTcsIDIzNCwgMiwgNjIsIDQ5LCAxMiwgMSwgMjQxLCAyMDMsIDIsIDczLCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyNDIsIAotICAgIDE0NywgMTIsIDEsIDI0MSwgMjAzLCAyNDIsIDE0OCwgMiwgMTkyLCA0OSwgMTIsIDEsIDIxNywgMjE2LCAyMzEsIDIyOCwgCi0gICAgMjQyLCAxNDcsIDEyLCAxLCAyMTQsIDE1LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIzNCwgODIsIDIyNywgOTksIDEyLCAxLCAKLSAgICAyMjcsIDk5LCAxMiwgMSwgNjksIDEyLCAxLCAyMTIsIDIwMywgMTIsIDEsIDIzNCwgODIsIDIxMiwgMjAzLCAxMiwgMSwgCi0gICAgMjE0LCAxNSwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjE0LCAyMzIsIDEyLCAxLCAyNDQsIDEzNiwgMjEzLCAzNCwgMTIsIAotICAgIDEsIDczLCAyLCAyMTgsIDI3LCAxMiwgMSwgNzMsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAyMTQsIDE1LCAyLCA2MiwgNDksIAotICAgIDEyLCAxLCA3NCwgMTIsIDEsIDczLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCA3MywgMjUyLCA1MiwgMTIsIDEsIDczLCAKLSAgICAyNTIsIDUzLCAyLCAxOTIsIDQ5LCAxMiwgMjQzLCAyMDAsIDIxOSwgNjksIDEyLCAxLCAyNTQsIDE0OCwgMTIsIDMsIDEyNCwgCi0gICAgMjYsIDIyMiwgMTk2LCAyLCAyMzMsIDEyNywgMiwgMTA2LCAyMzEsIDI1NSwgMTIsIDMsIDEyNCwgMjYsIDIyNCwgMjI2LCAyLCAKLSAgICAyMzMsIDEyNywgMiwgMTA2LCAyMzEsIDI1NSwgMTIsIDMsIDEyNCwgNjMsIDcwLCAxNywgMTIsIDMsIDEyNCwgMjMzLCAxMjcsIAotICAgIDI1NCwgNzgsIDEyLCAzLCAxMjQsIDIzNSwgMTI0LCAxMiwgMywgMTI0LCAxMzMsIDI0NywgNzIsIDEyLCAzLCAxMjQsIDIyMiwgCi0gICAgODUsIDEyLCAyNDUsIDEwMSwgNjUsIDI1MywgODIsIDEyLCAyMTksIDkxLCA2NSwgMjIzLCA0OSwgMjQ1LCAxMzIsIDI0MSwgCi0gICAgMTQxLCAxMiwgMywgMTI0LCAyMjMsIDg1LCAyMTIsIDc5LCAxMiwgMywgMTI0LCAyMTUsIDEzMCwgMjI0LCA4LCAyMTIsIDc5LCAKLSAgICAxMiwgMywgMTI0LCAyNDcsIDczLCAyNDEsIDIyMCwgNjUsIDIzNCwgMTM1LCAxMiwgMywgMTI0LCA2MywgNDgsIDE3LCAxMiwgCi0gICAgMywgMTE1LCAyMjIsIDg1LCAxMiwgMywgMTI0LCAyMzIsIDMyLCAxMiwgMywgMjE0LCAxNCwgMTIsIDMsIDIxMywgMzQsIDEyLCAKLSAgICAzLCAxMjQsIDIxMywgMzQsIDEyLCAzLCAxMjQsIDIyOCwgMTczLCAxMiwgMjI1LCAxNzMsIDY1LCAyMjIsIDE4NCwgMTIsIAotICAgIDI0NSwgMTEwLCAyNTAsIDEwOSwgMTE1LCAyMTksIDY5LCAxMiwgMjQ1LCAxMTAsIDI1MCwgMTA5LCAxMjQsIDIxOSwgNjksIAotICAgIDEyLCAyMjMsIDg1LCAxMjQsIDIxOSwgNzAsIDIsIDI0NCwgNzMsIDI1MCwgMTA4LCAxMiwgMywgMTE1LCAyMzEsIDE0MywgCi0gICAgMTIsIDEsIDI0OCwgMTQxLCAyLCAyMzUsIDE5MSwgMjE1LCA3OSwgMTIsIDEsIDIyMywgMjQ2LCAyLCAyMzUsIDE5MSwgMjE1LCAKLSAgICA3OSwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMjEyLCA3OSwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTE2LCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAxMDksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDE2NiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAKLSAgICAyMSwgMTYzLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxODAsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDE4OSwgMjQ0LCAKLSAgICAyNDYsIDI1MywgMjA3LCAyMSwgMTk4LCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxOTUsIDI0NCwgMjQ2LCAyNTMsIDIwNywgCi0gICAgMjEsIDIwMCwgMTIsIDEsIDIyMCwgMjQwLCAyLCA2MiwgNTUsIDEyLCAxLCAyNDgsIDE2MCwgMiwgNjIsIDU1LCAxMiwgMSwgCi0gICAgMjQyLCAyMjEsIDIsIDYyLCA1NSwgMTIsIDUsIDIyMCwgODQsIDI1NCwgMzUsIDEyLCA1LCAyMjAsIDg0LCAyMjUsIDExNSwgCi0gICAgMjMxLCAxMjIsIDEyLCAxLCAyNDEsIDIwMywgMiwgMjM1LCAxOTEsIDIxNSwgNzksIDE3NSwgMjQ1LCAxMDEsIDY1LCAyMjYsIAotICAgIDE0MiwgMTc1LCAyMTgsIDIxOSwgMjQzLCAyMDAsIDIxOSwgNjksIDE3NSwgMjE5LCAxMiwgMjQzLCAyMDAsIDIxOSwgNjksIAotICAgIDE3NSwgMjE4LCAyMTksIDI0OSwgMTY0LCAxNzUsIDIxOSwgMTIsIDI0OSwgMTY0LCAxNzUsIDE5OSwgMjQ5LCAxNjQsIDE3NSwgCi0gICAgMjQ5LCAxNjUsIDIyMCwgMzQsIDIzMywgNzAsIDE3NSwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIyMywgMTQ4LCAxNzUsIDIxOCwgCi0gICAgMjE5LCAyNDksIDE2NSwgMjIwLCAzNCwgMjMzLCA3MCwgMTc1LCAyMTksIDEyLCAyNDksIDE2NSwgMjIwLCAzNCwgMjIzLCAKLSAgICAxNDgsIDE3NSwgMjQ5LCAxMTksIDE3NSwgMjQxLCAyNDAsIDIyNywgMTE0LCAxNzUsIDI0MSwgMjQwLCAyMzEsIDEwMywgCi0gICAgMTc1LCAyNDEsIDI0MCwgMjUzLCAxMzQsIDE3NSwgMjU0LCAxODEsIDc3LCAxNzUsIDEsIDI1NCwgODIsIDE3NSwgMSwgMjE4LCAKLSAgICAyMjMsIDI1NCwgODIsIDE3NSwgMSwgMjUxLCAyMDIsIDE3NSwgMSwgMjQzLCA4OSwgMTc1LCAxLCAyNDMsIDkwLCAyNDMsIAotICAgIDY3LCAxNzUsIDEsIDI0OCwgMTM3LCAxNzUsIDEsIDI0NywgNzMsIDI0OCwgMTM4LCAyMjMsIDEyNiwgMTc1LCAxLCAyNDEsIAotICAgIDIyMiwgMTc1LCAxLCAyMTQsIDE0LCAxNzUsIDEsIDIxMiwgMTAxLCAxNzUsIDEsIDI0MSwgMTgwLCAxNzUsIDEsIDIxNywgCi0gICAgMTc5LCAxNzUsIDEsIDIxNywgMTgwLCAyNDMsIDY3LCAxNzUsIDEsIDIxMiwgMTkwLCAxNzUsIDEsIDIxMiwgMTkxLCAyNDEsIAotICAgIDIyMiwgMTc1LCAxLCAyMzQsIDIzMCwgMTc1LCAxLCAyMzMsIDEyNSwgMTc1LCAxLCAyMzEsIDMsIDE3NSwgMSwgMjI4LCA1MCwgCi0gICAgMTc1LCAxLCAyMjEsIDYzLCAxNzUsIDEsIDQwLCAyMjEsIDYzLCAxNzUsIDEsIDc0LCAxNzUsIDEsIDIyNiwgOTYsIDE3NSwgCi0gICAgMSwgMjIzLCAyMDIsIDIyNiwgOTYsIDE3NSwgMSwgMjIyLCAxOTMsIDE3NSwgMSwgMjI0LCAyMTksIDE3NSwgMSwgMjIzLCAKLSAgICAxMjYsIDE3NSwgMSwgMjIwLCAyMDAsIDE3NSwgMSwgMjE3LCAyNDMsIDE3NSwgMSwgMjI2LCA0NSwgMjUxLCAxOTAsIDE3NSwgCi0gICAgMSwgMjI2LCA0NSwgMjQyLCAyMTgsIDE3NSwgMSwgMjI2LCA0NSwgMjQ3LCAyMjgsIDE3NSwgMjI1LCAzNiwgNDksIDE3NSwgCi0gICAgMjI1LCAzNiwgNTUsIDE3NSwgMjI1LCAzNiwgMjQ2LCA3MSwgMTc1LCAyMTIsIDEwLCA0OSwgMTc1LCAyMTIsIDEwLCA1NSwgCi0gICAgMTc1LCAyMTIsIDEwLCAyNDYsIDcxLCAxNzUsIDIyNCwgMjQsIDQ5LCAxNzUsIDIyNCwgMjQsIDU1LCAxNzUsIDI0NiwgNzIsIAotICAgIDIxMiwgMTcsIDI0MSwgMzEsIDE3NSwgMjQ2LCA3MiwgMjEyLCAxNywgMjU0LCAxNSwgMTc1LCAyNDEsIDIyNSwgNDksIDE3NSwgCi0gICAgMjQxLCAyMjUsIDU1LCAxNzUsIDI0MSwgMjI0LCAyNDYsIDcxLCAxNzUsIDI0NSwgNDMsIDQ5LCAxNzUsIDI0NSwgNDMsIDU1LCAKLSAgICAxNzUsIDIyMywgMTksIDE3NSwgMjQ0LCAxMDUsIDI0NywgNzQsIDE3NSwgMjI0LCAxMzcsIDE3NSwgMjIzLCA0NSwgMTc1LCAKLSAgICAxMTcsIDcxLCAxNzYsIDQ5LCAxNzUsIDExNywgNzEsIDE3NiwgNTUsIDE3NSwgMTMzLCAxNzYsIDQ5LCAxNzUsIDEzMywgCi0gICAgMTc2LCA1NSwgMTc1LCAyMjcsIDExMiwgMjMyLCAyNDMsIDQ5LCAxNzUsIDIyNywgMTEyLCAyMzIsIDI0MywgNTUsIDE3NSwgCi0gICAgMjMwLCAxMjYsIDE3NSwgMjUyLCA1MSwgMTc1LCAxLCAyMTksIDIzMywgMjEyLCA3MywgMTc1LCAxLCAyMTksIDIzMywgMjM0LCAKLSAgICAxMjgsIDE3NSwgMSwgMjE5LCAyMzMsIDI0NCwgMTIzLCAxMiwgMSwgMjUxLCAyMzEsIDIsIDEzMywgMTc2LCAyNDAsIDIzNywgCi0gICAgNTUsIDEyLCAxLCAyNTEsIDIzMSwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjUxLCAyMzEsIAotICAgIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjE1LCAxMjQsIDU1LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDEzMywgMTc2LCAyMjUsIAotICAgIDE0MSwgMjE1LCAxMjQsIDI1MSwgMjIwLCAyNCwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDExNywgMTc2LCAKLSAgICAyNTEsIDIyMCwgMjQsIDYyLCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAyMzUsIDE5MSwgMywgMjE1LCA4MCwgNTUsIDEyLCAKLSAgICAxLCAyNTEsIDIzMSwgMiwgMywgMjE1LCA3OSwgMTIsIDEsIDEyMSwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMTIxLCAyLCAKLSAgICAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDI0OCwgMTQxLCAyLCAxMTcsIDE3NiwgMjE0LCAxNjYsIAotICAgIDI1MSwgMjIwLCAyNCwgMywgMjE4LCAyOSwgMTIsIDEsIDI0OCwgMTQxLCAyLCAyMzUsIDE5MSwgMywgMjE1LCA4MCwgNTUsIAotICAgIDEyLCAxLCAyMjMsIDI0NiwgMiwgOTAsIDEyLCAxLCAyMjIsIDg2LCAyLCAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDEsIDI1NCwgCi0gICAgMTA0LCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCAKLSAgICA0OSwgMTIsIDEsIDI1NCwgMTA0LCAyLCAxMTcsIDE3NiwgMjE0LCAxNjYsIDQ5LCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDExNywgCi0gICAgMTc2LCA1NSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIAotICAgIDIzNCwgMTgxLCAyLCA2MiwgNDksIDEyLCAxLCAyMzQsIDE4MSwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjM0LCAxODEsIAotICAgIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjE1LCAxMjQsIDU1LCAxMiwgMSwgNjMsIDIsIDYyLCA0OSwgMTIsIDEsIDYzLCAyLCAKLSAgICA2MiwgNTUsIDEyLCAxLCAyMjgsIDE3NCwgMiwgMTE3LCAxNzYsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDMsIDIxOCwgMjksIAotICAgIDEyLCAxLCAyMjgsIDE3NCwgMiwgMywgMjE1LCA3OSwgMTIsIDEsIDIzMywgMTI3LCAyLCAxMzQsIDEyLCAxLCAyMjMsIDI0NiwgCi0gICAgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIDEsIDIyMywgMjQ2LCAyLCAxOTIsIDQ5LCAxMiwgMSwgMjIyLCA4NiwgCi0gICAgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIDEsIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDU1LCAxMiwgMSwgCi0gICAgMTIxLCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgMjQsIDExNywgMjQ3LCA3MiwgMTIsIDEsIDIyMiwgODYsIDIsIDMsIDEyLCAxLCAKLSAgICAyMTgsIDMwLCAyNCwgMTE3LCAyNDcsIDcyLCAxMiwgMSwgMjIzLCAyNDYsIDIsIDMsIDEyLCAxLCAyMTgsIDMwLCAyNCwgCi0gICAgMTE3LCAyNDcsIDcyLCAxMiwgMSwgMTIxLCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgNDksIDEyLCAxLCAxMDYsIDIsIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDExNywgNDksIDEyLCAxLCAxMDYsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgCi0gICAgNDksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDExNywgNDksIDEyLCAxLCAyNDQsIAotICAgIDEzNiwgNzMsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgNDksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDI0MywgMjM3LCA1NSwgMTIsIDEsIDIxNCwgMTUsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgCi0gICAgMjEsIDExNywgNDksIDEyLCAxLCAyMTQsIDE1LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIDQ5LCAxMiwgMSwgCi0gICAgNzMsIDI1MiwgNTMsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDExNywgNDksIDEyLCAxLCA3MywgMjUyLCA1MywgMiwgCi0gICAgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTMzLCA0OSwgMTIsIDEsIDEyMSwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgCi0gICAgMjQzLCAyMzcsIDU1LCAxMiwgMSwgMjIyLCA4NiwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMjQzLCAyMzcsIDQ5LCAKLSAgICAxMiwgMSwgMjIyLCA4NiwgMiwgMjM1LCAxOTEsIDIxNSwgNzksIDEyLCAxLCAyMzQsIDI1NSwgMiwgMTE3LCAxNzYsIDQ5LCAKLSAgICAyMTcsIDE1OCwgMSwgMjQyLCAyNywgMjE3LCAxNTgsIDEsIDIyMCwgMjQ4LCAyMTcsIDE1OCwgMSwgMjI4LCAxNzIsIDIxNywgCi0gICAgMTU4LCAxLCAyMjQsIDc0LCAyMTcsIDE1OCwgMSwgMjUyLCAxMDYsIDIxNywgMTU4LCAxLCAyMzMsIDIyLCAyMTcsIDE1OCwgCi0gICAgMSwgMjM1LCAxMiwgMjE3LCAxNTgsIDEsIDI1NCwgNjgsIDIxNywgMTU4LCAxLCAyMTQsIDI1NSwgMjE3LCAxNTgsIDEsIAotICAgIDIzMSwgMTQyLCAyMTcsIDE1OCwgMSwgMjQ0LCAxNjIsIDIxNywgMTU4LCAxLCAyNDcsIDIzMSwgMjE3LCAxNTgsIDEsIDIxNywgCi0gICAgMTYwLCAyMTcsIDE1OCwgMSwgMjMzLCAxNTMsIDIxNywgMTU4LCAxLCAyNDMsIDEwNiwgMjE3LCAxNTgsIDEsIDI0MiwgMTUzLCAKLSAgICAyMTcsIDE1OCwgMSwgMjIyLCA4NCwgMjE3LCAxNTgsIDEsIDI0OCwgOTQsIDIxNywgMTU4LCAxLCAyMTIsIDkzLCAyMTcsIAotICAgIDE1OCwgMSwgMjE3LCAyNDQsIDIxNywgMTU4LCAxLCAyMTMsIDkxLCAyMTcsIDE1OCwgMSwgMjI2LCAxMDcsIDIxNywgMTU4LCAKLSAgICAxLCAyMzUsIDEyOSwgMjE3LCAxNTgsIDEsIDI1MCwgNzAsIDIxNywgMTU4LCAxLCAyMTYsIDExNCwgMjE3LCAxNTgsIDEsIAotICAgIDI0MSwgMTczLCAyMTcsIDE1OCwgMSwgMjM0LCAxMzcsIDIxNywgMTU4LCAxLCAyMTcsIDE1OSwgMjE3LCAxNTgsIDEsIDIxMiwgCi0gICAgMTA4LCAyMTcsIDE1OCwgMSwgMjIwLCAyMzgsIDIxNywgMTU4LCAxLCAyMjIsIDE5OSwgMjE3LCAxNTgsIDEsIDI0OCwgMTYyLCAKLSAgICAyMTcsIDE1OCwgMSwgMTA4LCAyMTcsIDE1OCwgMSwgMjEyLCAxNiwgMjE3LCAxNTgsIDEsIDI1NCwgMTAxLCAyMTcsIDE1OCwgCi0gICAgMSwgMjQyLCAyMTksIDIxNywgMTU4LCAxLCAyMjQsIDIyOSwgMjE3LCAxNTgsIDEsIDIxNCwgNDcsIDIxNywgMTU4LCAyNTQsIAotICAgIDE4MiwgMjE3LCAxNTgsIDI1NCwgMTk3LCAyMTcsIDE1OCwgMjQwLCAxMDcsIDIxNywgMTU4LCAyNDUsIDE2NCwgMjE3LCAKLSAgICAxNTgsIDIxNSwgMTkxLCAyMTcsIDE1OCwgMjI3LCA0OCwgMjE3LCAxNTgsIDI0NSwgMTcyLCAyMTcsIDE1OCwgMjQ0LCAyNDAsIAotICAgIDIxNywgMTU4LCAyMjcsIDExMSwgMjE3LCAxNTgsIDIyNywgMTE5LCAyMTcsIDE1OCwgMjE4LCAyNDYsIDIxNywgMTU4LCAxLCAKLSAgICAyMzAsIDQzLCAyMjgsIDIyNCwgMjEsIDIxMiwgNzksIDIyOCwgMjI0LCAyMSwgMTE2LCAyMjgsIDIyNCwgMjEsIDEwOSwgCi0gICAgMjI4LCAyMjQsIDIxLCAxNjYsIDIyOCwgMjI0LCAyMSwgMTYzLCAyMjgsIDIyNCwgMjEsIDE4MCwgMjI4LCAyMjQsIDIxLCAKLSAgICAxODksIDIyOCwgMjI0LCAyMSwgMTk4LCAyMjgsIDIyNCwgMjEsIDE5NSwgMjI4LCAyMjQsIDIxLCAyMDAsIDIyOCwgMjI0LCAKLSAgICAxLCA2MSwgMjI4LCAyMjQsIDEsIDI0NSwgMTY1LCAyMjgsIDIyNCwgMSwgNzIsIDIyOCwgMjI0LCAxLCA3NCwgMjI4LCAyMjQsIAotICAgIDEsIDY5LCAyMjgsIDIyNCwgMSwgMjI3LCA0OSwgMjI4LCAyMjQsIDEsIDc1LCAyMjgsIDIyNCwgMSwgMjQ4LCAxNTIsIDIyOCwgCi0gICAgMjI0LCAxLCAyMDQsIDIyOCwgMjI0LCAxLCAyNTIsIDEwNywgMjI4LCAyMjQsIDEsIDE5MywgMjI4LCAyMjQsIDEsIDIxOCwgCi0gICAgNTIsIDIyOCwgMjI0LCAxLCAyMzUsIDEzOSwgMjI4LCAyMjQsIDEsIDI1MCwgOTIsIDIyOCwgMjI0LCAxLCAyNDgsIDE2NCwgCi0gICAgMjI4LCAyMjQsIDEsIDIwMywgMjI4LCAyMjQsIDEsIDIyMywgODEsIDIyOCwgMjI0LCAxLCAyMjIsIDIwMiwgMjI4LCAyMjQsIAotICAgIDEsIDI0MywgNTUsIDIyOCwgMjI0LCAxLCAyNDQsIDE2NCwgMjI4LCAyMjQsIDEsIDE4MSwgMjI4LCAyMjQsIDEsIDIzMywgCi0gICAgMTU3LCAyMjgsIDIyNCwgMSwgMjMwLCA0NiwgMjEzLCAyMTAsIDIyOCwgMjI0LCAxLCAxODgsIDIyOCwgMjI0LCAxLCAyMjgsIAotICAgIDIzLCAyMjgsIDIyNCwgMSwgMjA1LCAyMjgsIDIyNCwgMSwgMTU5LCAyMjgsIDIyNCwgMSwgMjE0LCA0OSwgMjI4LCAyMjQsIAotICAgIDEsIDE4NiwgMjI4LCAyMjQsIDEsIDIyOCwgMjQsIDIxMywgMjEwLCAyMjgsIDIyNCwgMSwgMjM1LCA2NCwgMjM1LCAxMzksIAotICAgIDIyOCwgMjI0LCAxLCAyMzUsIDY0LCAyNTAsIDkyLCAyMjgsIDIyNCwgMSwgMjM1LCA2NCwgMjAzLCAyMjgsIDIyNCwgMzcsIAotICAgIDIyMCwgMTc1LCAxMjQsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDIyMCwgMTc1LCAxMTUsIDIxNiwgMjQxLCAyMjgsIDIyNCwgCi0gICAgMzcsIDIyMCwgMTc1LCAyMjMsIDEyNSwgMjE2LCAyNDEsIDIyOCwgMjI0LCAzNywgMTg0LCAyNDcsIDI0NSwgMjE2LCAyNDEsIAotICAgIDIyOCwgMjI0LCAzNywgMTg0LCAxMjQsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDE4NCwgMTE1LCAyMTYsIDI0MSwgMjI4LCAKLSAgICAyMjQsIDM3LCAxODQsIDIyMywgMTI1LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAyMzAsIDEzLCA3NywgMjI4LCAyMjQsIAotICAgIDM3LCA1MSwgNjIsIDQ5LCAyMjgsIDIyNCwgMTI0LCAxNjAsIDI1MywgMjI2LCAyMjgsIDIyNCwgMTE1LCAxNjAsIDI1MywgCi0gICAgMjI2LCAyMjgsIDIyNCwgMTYsIDIyNywgNTAsIDI0OCwgMSwgMjI4LCAyMjQsIDE2LCAyNDMsIDU0LCAyMjgsIDIyNCwgMjQ5LCAKLSAgICAxNTcsIDIyOCwgMjI0LCAyNDQsIDI1NCwgNzcsIDIyOCwgMjI0LCAyMzMsIDEzMiwgMjIyLCAxNjcsIDEsIDI1NCwgODQsIAotICAgIDIyMiwgMTY3LCAxLCAyNTEsIDE1MSwgMjIyLCAxNjcsIDEsIDI0MywgODgsIDIyMiwgMTY3LCAxLCAyNDgsIDEzOSwgMjIyLCAKLSAgICAxNjcsIDEsIDIzNSwgMTUwLCAyMjIsIDE2NywgMSwgMjUyLCAxMDYsIDIyMiwgMTY3LCAxLCAyMTIsIDgyLCAyMjIsIDE2NywgCi0gICAgMSwgMjM1LCAxNTgsIDIyMiwgMTY3LCAxLCAyMTcsIDIwLCAyMjIsIDE2NywgMSwgMjEyLCAxNzMsIDIyMiwgMTY3LCAxLCAKLSAgICAyMzUsIDEzLCAyMjIsIDE2NywgMSwgMjMzLCAxNTAsIDIyMiwgMTY3LCAxLCAyMzEsIDMsIDIyMiwgMTY3LCAxLCAyMjgsIAotICAgIDUwLCAyMjIsIDE2NywgMSwgMjIwLCA4MiwgMjIyLCAxNjcsIDEsIDIzNSwgMjUxLCAyMjIsIDE2NywgMSwgMjQ0LCA5MCwgCi0gICAgMjIyLCAxNjcsIDEsIDIxNiwgMTM5LCAyMjIsIDE2NywgMSwgMjI0LCAxNTUsIDIyMiwgMTY3LCAxLCAyMjMsIDEyNiwgMjIyLCAKLSAgICAxNjcsIDEsIDIyMSwgOCwgMjIyLCAxNjcsIDEsIDIxOCwgNDgsIDIyMiwgMTY3LCAxNTIsIDIzNSwgMjUxLCAyMjIsIDE2NywgCi0gICAgMTUyLCAyMzUsIDI1MCwgMjIyLCAxNjcsIDE1MiwgMjI3LCAxMDcsIDIyMiwgMTY3LCAxNTIsIDI0OCwgMTUwLCAyMjIsIAotICAgIDE2NywgNTksIDEsIDI0NSwgNjgsIDIxMiwgMTczLCAyMjIsIDE2NywgMTUyLCAyNDUsIDY4LCAyMTIsIDE3MywgMjIyLCAKLSAgICAxNjcsIDMwLCA1LCAxODQsIDc0LCAyMjIsIDE2NywgMzAsIDUsIDc0LCAyMjIsIDE2NywgMzAsIDUsIDIyNiwgMjQyLCAyNTQsIAotICAgIDIzMiwgMjIyLCAxNjcsIDMwLCA1LCAxODQsIDI1NCwgMjMyLCAyMjIsIDE2NywgMzAsIDUsIDI1NCwgMjMyLCAyMjIsIDE2NywgCi0gICAgMzAsIDUsIDIyNiwgMjQyLCA2MSwgMjIyLCAxNjcsIDMwLCA1LCAxODQsIDYxLCAyMjIsIDE2NywgMzAsIDUsIDYxLCAyMjIsIAotICAgIDE2NywgNTksIDEsIDIyMCwgMTc1LCA2MSwgMjIyLCAxNjcsIDMwLCA1LCAyMjAsIDE3NSwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgCi0gICAgMTg0LCA2OSwgMjIyLCAxNjcsIDMwLCA1LCA2OSwgMjIyLCAxNjcsIDU5LCAxLCA3MiwgMjIyLCAxNjcsIDMwLCA1LCAxODQsIAotICAgIDcyLCAyMjIsIDE2NywgMzAsIDUsIDcyLCAyMjIsIDE2NywgMzAsIDUsIDc1LCAyMjIsIDE2NywgMzAsIDUsIDIxOCwgMjQ2LCAKLSAgICAyMjIsIDE2NywgMTUyLCAyMjksIDE3NCwgMjIyLCAxNjcsIDIyNSwgMjcsIDIyOSwgMTc0LCAyMjIsIDE2NywgMjI1LCAyNywgCi0gICAgMjU0LCAxMjMsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTQsIDIzLCAyMjIsIDE2NywgMjI1LCAyNywgMjUyLCAzNCwgMjIyLCAKLSAgICAxNjcsIDIyNSwgMjcsIDI1MywgMTE3LCAyMjIsIDE2NywgMjI1LCAyNywgMjIwLCAxODgsIDIyMiwgMTY3LCAyNTQsIDE4MSwgCi0gICAgNzcsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMzEsIDEzMiwgMjI0LCAxOTAsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMTIsIDI0LCAKLSAgICAyMjIsIDE2NywgMjI1LCAyNywgMjI0LCAxOTAsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMTIsIDEwNywgMjIyLCAxNjcsIDIyNSwgCi0gICAgMjcsIDIxNiwgNTQsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTMsIDE4MCwgMjIyLCAxNjcsIDIyNSwgMjcsIDIxOSwgMjM3LCAKLSAgICAyMzEsIDIwOCwgMjIyLCAxNjcsIDIyNSwgMjcsIDI1NCwgMTEsIDIzMSwgMjQ1LCAxLCAyNDIsIDcsIDIzMSwgMjQ1LCAxLCAKLSAgICAyNTQsIDE4NSwgMjMxLCAyNDUsIDEsIDI1NCwgMTIxLCAyMzEsIDI0NSwgMSwgMjU0LCAxNjAsIDIzMSwgMjQ1LCAxLCAyNTQsIAotICAgIDExNCwgMjMxLCAyNDUsIDEsIDIxNSwgOTgsIDIzMSwgMjQ1LCAxLCAyNTMsIDc2LCAyMzEsIDI0NSwgMSwgMjM1LCAxNTgsIAotICAgIDIzMSwgMjQ1LCAxLCAyNTMsIDExNCwgMjMxLCAyNDUsIDEsIDI1NCwgODksIDIzMSwgMjQ1LCAxLCAyNTQsIDk0LCAyMzEsIAotICAgIDI0NSwgMSwgMjU0LCA4NiwgMjMxLCAyNDUsIDEsIDI1NCwgNDUsIDIzMSwgMjQ1LCAxLCAyNTQsIDMyLCAyMzEsIDI0NSwgMSwgCi0gICAgMjUzLCAxNTIsIDIzMSwgMjQ1LCAxLCAyMzUsIDI1MSwgMjMxLCAyNDUsIDEsIDI1MywgMjM5LCAyMzEsIDI0NSwgMSwgMjUzLCAKLSAgICAxMjQsIDIzMSwgMjQ1LCAxLCAyNTMsIDIxNSwgMjMxLCAyNDUsIDEsIDI1MywgMjExLCAyMzEsIDI0NSwgMSwgMjUzLCAxNDYsIAotICAgIDIzMSwgMjQ1LCAxLCAyNTMsIDEyMiwgMjMxLCAyNDUsIDEsIDI0NiwgMTAsIDIzMSwgMjQ1LCAxLCAyMzUsIDYsIDIzMSwgCi0gICAgMjQ1LCAxLCAyNTQsIDEwMywgMjMxLCAyNDUsIDI1NCwgMTI3LCA3NywgMjMxLCAyNDUsIDIxNCwgMTE3LCA3NywgMjMxLCAKLSAgICAyNDUsIDI0MywgMjksIDc3LCAyMzEsIDI0NSwgMjI1LCAyNiwgODIsIDUsIDIzNSwgMTkxLCAyNTAsIDE4NywgODIsIDUsIAotICAgIDI1MCwgMTg3LCA4MiwgNSwgMjUzLCAyNDIsIDgyLCA1LCAyMTQsIDEyOCwgODIsIDEsIDIyMCwgMTc1LCA2MSwgODIsIDEsIAotICAgIDYxLCA4MiwgMSwgMjU0LCAyMzIsIDgyLCAxLCA3MiwgODIsIDEsIDIzNiwgMjgsIDgyLCAxLCA2OSwgODIsIDEsIDIxNSwgCi0gICAgOTIsIDgyLCAxLCAxNjEsIDE0OSwgODIsIDEsIDE2MSwgMTUwLCA4MiwgMSwgMjUwLCAxOTAsIDc0LCA4MiwgMSwgMjIwLCAKLSAgICAxNzUsIDc0LCA4MiwgMSwgNzQsIDgyLCAxLCAyNTQsIDEwOCwgODIsIDEsIDI1MCwgMTkwLCA3NSwgODIsIDEsIDIyMCwgCi0gICAgMTc1LCA3NSwgODIsIDEsIDc1LCA4MiwgMSwgMjUzLCAxMDgsIDgyLCAxLCAxODEsIDgyLCAxLCAyMzQsIDEzOCwgODIsIDEsIAotICAgIDI0MywgMTEwLCA4MiwgMSwgMjQyLCAyMjUsIDgyLCAxLCAyMjksIDE1OSwgODIsIDEsIDI1MCwgMjE5LCA4MiwgMSwgMjUwLCAKLSAgICA5MiwgODIsIDEsIDIzNSwgMTM5LCA4MiwgMSwgMjM1LCAxMTUsIDgyLCAxLCAyMjgsIDIzLCA4MiwgMSwgMjE2LCAxMTUsIAotICAgIDgyLCAxLCAyMTYsIDEwNSwgODIsIDEsIDI0OCwgODYsIDgyLCAxLCAyNDgsIDcwLCA4MiwgMSwgMjI4LCAxOTgsIDgyLCAxLCAKLSAgICAyMTgsIDUyLCA4MiwgMSwgMjE3LCAxNjEsIDgyLCAxLCAyNDgsIDE2NCwgODIsIDEsIDI0NywgMjMyLCA4MiwgMSwgMjA1LCAKLSAgICA4MiwgMSwgMjI4LCAxODksIDgyLCAxLCAxOTMsIDgyLCAxLCAyMjYsIDIzLCA4MiwgMSwgMjUyLCAxMDcsIDgyLCAxLCAyNTEsIAotICAgIDE5NSwgODIsIDEsIDE4OCwgODIsIDEsIDE4NiwgODIsIDEsIDIwMywgODIsIDEsIDIyMywgODEsIDgyLCAxLCAyMzMsIDE1NywgCi0gICAgODIsIDEsIDIzMiwgMjEzLCA4MiwgMSwgMjMyLCAyMTIsIDgyLCAxLCAyMTUsIDEsIDgyLCAxLCAyMjEsIDI0LCA4MiwgMSwgCi0gICAgMjE5LCAxNTcsIDgyLCAxLCAyMjIsIDIwMiwgODIsIDEsIDE1OSwgODIsIDMwLCA1LCAyMjcsIDk5LCA4MiwgMzAsIDUsIAotICAgIDIyNywgNDcsIDgyLCA1LCAyMjgsIDYwLCA4MiwgNSwgMjUzLCA5MSwgODIsIDMwLCA1LCAyNTQsIDIzMiwgODIsIDMwLCA1LCAKLSAgICA3MiwgODIsIDMwLCA1LCAyMzYsIDI4LCA4MiwgMzAsIDUsIDY5LCA4MiwgMzAsIDUsIDIxNSwgOTIsIDgyLCAzMCwgNSwgCi0gICAgMTYxLCAxNDksIDgyLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCA4MiwgMzAsIDUsIDI1MCwgMTkwLCA3NCwgODIsIDMwLCA1LCAKLSAgICAyMjAsIDE3NSwgNzQsIDgyLCAzMCwgNSwgNzQsIDgyLCAzMCwgNSwgMjU0LCAxMDgsIDgyLCAzMCwgNSwgMjUwLCAxOTAsIAotICAgIDc1LCA4MiwgMzAsIDUsIDIyMCwgMTc1LCA3NSwgODIsIDMwLCA1LCA3NSwgODIsIDMwLCA1LCAyNTMsIDEwOCwgODIsIDUsIAotICAgIDIxNCwgMTMzLCA4MiwgMzAsIDUsIDIyNSwgNjYsIDc0LCA4MiwgMzAsIDUsIDI1MywgODcsIDgyLCAyMjcsIDcwLCA4MiwgCi0gICAgMjE5LCA1MSwgNSwgMjE1LCAxODUsIDgyLCAyMTksIDUxLCA1LCAyNTMsIDI0NCwgODIsIDI0MiwgMTE0LCAyNTQsIDE3NCwgCi0gICAgODIsIDI1NCwgMTY0LCAyNTQsIDE3NCwgODIsIDMwLCA1LCAyNTAsIDE5MCwgMTg0LCA3NCwgODIsIDMwLCA1LCAyMTUsIAotICAgIDE4MywgODIsIDMwLCA1LCAyMTUsIDkxLCA4MiwgMSwgMjI0LCAyMzIsIDgyLCAxLCAyMzQsIDEyMSwgODIsIDEsIDI0MiwgCi0gICAgMjAyLCA4MiwgMSwgMjEyLCAxMDksIDgyLCAxLCAyNDgsIDc1LCA4MiwgMSwgMjIzLCAxOTIsIDgyLCAxLCAyNDQsIDE2NCwgCi0gICAgODIsIDEsIDIxMiwgMTYwLCA4MiwgMSwgMTYxLCAyMjMsIDgyLCA4MiwgMSwgMTYxLCAyMzIsIDIxNCwgODIsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgODIsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCA4MiwgMjQ4LCAxMjMsIDgyLCA1MSwgMjQ4LCAxMjMsIDgyLCAKLSAgICAyMSwgMjEyLCA3OSwgODIsIDIxLCAxMTYsIDgyLCAyMSwgMTA5LCA4MiwgMjEsIDE2NiwgODIsIDIxLCAxNjMsIDgyLCAyMSwgCi0gICAgMTgwLCA4MiwgMjEsIDE4OSwgODIsIDIxLCAxOTgsIDgyLCAyMSwgMTk1LCA4MiwgMjEsIDIwMCwgODIsIDI1NCwgMTgxLCAKLSAgICA1MiwgODIsIDUsIDEyNCwgMjE5LCAyMDUsIDI0NywgNzQsIDgyLCAxLCAyNTAsIDE5MCwgNjEsIDgyLCAxLCAyMjcsIDk5LCAKLSAgICA4MiwgMSwgMjI3LCA0NywgODIsIDEsIDI1MywgODcsIDgyLCAxLCAyMTUsIDE4MywgODIsIDEsIDIxNSwgOTEsIDgyLCAxLCAKLSAgICAyMTIsIDc1LCA4MiwgMSwgMTA3LCAxODYsIDgyLCAxLCAyNDMsIDUsIDgyLCAxLCAyMzUsIDk5LCA4MiwgMSwgMjQyLCAxNTYsIAotICAgIDIxOSwgNjksIDgyLCAxLCAyNDgsIDc2LCA4MiwgMSwgMjUyLCAzMSwgMTQwLCA1LCAyNTAsIDE4NywgMTQwLCA1LCAyNTMsIAotICAgIDI0MiwgMTQwLCA1LCAyMTQsIDEyOCwgMTQwLCAxLCA2MSwgMTQwLCAxLCAyNTQsIDIzMiwgMTQwLCAxLCA3MiwgMTQwLCAxLCAKLSAgICAyMzYsIDI4LCAxNDAsIDEsIDY5LCAxNDAsIDEsIDIxNSwgOTIsIDE0MCwgMSwgMTYxLCAxNDksIDE0MCwgMSwgMTYxLCAxNTAsIAotICAgIDE0MCwgMSwgNzQsIDE0MCwgMSwgMjU0LCAxMDgsIDE0MCwgMSwgNzUsIDE0MCwgMSwgMjUzLCAxMDgsIDE0MCwgMSwgMTgxLCAKLSAgICAxNDAsIDEsIDIzNCwgMTM4LCAxNDAsIDEsIDI0MywgMTEwLCAxNDAsIDEsIDI0MiwgMjI1LCAxNDAsIDEsIDIyOSwgMTU5LCAKLSAgICAxNDAsIDEsIDI1MCwgMjE5LCAxNDAsIDEsIDI1MCwgOTIsIDE0MCwgMSwgMjM1LCAxMzksIDE0MCwgMSwgMjM1LCAxMTUsIAotICAgIDE0MCwgMSwgMjI4LCAyMywgMTQwLCAxLCAyMTYsIDExNSwgMTQwLCAxLCAyMTYsIDEwNSwgMTQwLCAxLCAyNDgsIDg2LCAKLSAgICAxNDAsIDEsIDI0OCwgNzAsIDE0MCwgMSwgMjI4LCAxOTgsIDE0MCwgMSwgMjE4LCA1MiwgMTQwLCAxLCAyMTcsIDE2MSwgCi0gICAgMTQwLCAxLCAyNDgsIDE2NCwgMTQwLCAxLCAyNDcsIDIzMiwgMTQwLCAxLCAyMDUsIDE0MCwgMSwgMTkzLCAxNDAsIDEsIAotICAgIDIyNiwgMjMsIDE0MCwgMSwgMjUyLCAxMDcsIDE0MCwgMSwgMjUxLCAxOTUsIDE0MCwgMSwgMTg4LCAxNDAsIDEsIDE4NiwgCi0gICAgMTQwLCAxLCAyMDMsIDE0MCwgMSwgMjMzLCAxNTcsIDE0MCwgMSwgMjIxLCAyNCwgMTQwLCAxLCAyMTksIDE1NywgMTQwLCAxLCAKLSAgICAyMjIsIDIwMiwgMTQwLCAxLCAxNTksIDE0MCwgNSwgMjI4LCA2MCwgMTQwLCA1LCAyNTMsIDkxLCAxNDAsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMTQwLCAzMCwgNSwgNzIsIDE0MCwgMzAsIDUsIDIzNiwgMjgsIDE0MCwgMzAsIDUsIDY5LCAxNDAsIDMwLCA1LCAKLSAgICAyMTUsIDkyLCAxNDAsIDMwLCA1LCAxNjEsIDE0OSwgMTQwLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNDAsIDMwLCA1LCA3NCwgCi0gICAgMTQwLCAzMCwgNSwgMjU0LCAxMDgsIDE0MCwgMzAsIDUsIDc1LCAxNDAsIDMwLCA1LCAyNTMsIDEwOCwgMTQwLCA1LCAyMTQsIAotICAgIDEzMywgMTQwLCAxLCAyMzQsIDEzMCwgMjE4LCA1MiwgMTQwLCAyNTMsIDEwOSwgMjMzLCA0NywgNzcsIDE0MCwgMSwgMjIzLCAKLSAgICA4MSwgMTQwLCAxLCAyMjMsIDE5MiwgMTQwLCAxLCAyMTIsIDE2MCwgMTQwLCAxLCAxNjEsIDIyMywgODIsIDE0MCwgMSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgMTQwLCAzMCwgNSwgMTYxLCAxNTAsIDE0MCwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDE0MCwgMjEsIAotICAgIDIxMiwgNzksIDE0MCwgMjEsIDExNiwgMTQwLCAyMSwgMTA5LCAxNDAsIDIxLCAxNjYsIDE0MCwgMjEsIDE2MywgMTQwLCAyMSwgCi0gICAgMTgwLCAxNDAsIDIxLCAxODksIDE0MCwgMjEsIDE5OCwgMTQwLCAyMSwgMTk1LCAxNDAsIDIxLCAyMDAsIDE0MCwgMSwgMjI0LCAKLSAgICA3NywgMiwgMjMxLCAzNywgMjQ3LCAyMDYsIDE0MCwgMSwgMjI0LCA3NywgMiwgMjMyLCAxNjMsIDI0NywgMjA2LCAxNDAsIAotICAgIDIyMywgMjksIDc3LCAxNDAsIDIyMywgMjksIDUyLCAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDExNiwgMTQwLCAyNDksIDM5LCAKLSAgICAyMjgsIDUzLCAxMDksIDE0MCwgMjQ5LCAzOSwgMjI4LCA1MywgMTY2LCAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDE2MywgCi0gICAgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxMjIsIDIzMywgNDAsIDIxNywgMTU0LCAyMTcsIDE0OSwgMjQ3LCAyNTUsIDE0MCwgCi0gICAgMjQ5LCAzOSwgMjQ4LCAwLCAyMjAsIDQ3LCAxNDAsIDIzNSwgMTU5LCAxNDAsIDI0MywgNzksIDc3LCAxNzMsIDUsIDI1NCwgCi0gICAgMTU5LCAyNTEsIDE2NiwgMTczLCA1LCAyNTEsIDE2NiwgMTczLCA1LCAyMTQsIDEyOCwgMTczLCAxLCA2MSwgMTczLCAxLCAKLSAgICAyNTQsIDIzMiwgMTczLCAxLCA3MiwgMTczLCAxLCAyMzYsIDI4LCAxNzMsIDEsIDY5LCAxNzMsIDEsIDIxNSwgOTIsIDE3MywgCi0gICAgMSwgMjQ1LCAxNjUsIDE3MywgMSwgMjU0LCAxMDgsIDE3MywgMSwgMjI3LCA0OSwgMTczLCAxLCAyNTMsIDEwOCwgMTczLCAxLCAKLSAgICAxODEsIDE3MywgMSwgMjM0LCAxMzgsIDE3MywgMSwgMjQzLCAxMTAsIDE3MywgMSwgMjQyLCAyMjUsIDE3MywgMSwgMjI5LCAKLSAgICAxNTksIDE3MywgMSwgMjUwLCAyMTksIDE3MywgMSwgMjUwLCA5MiwgMTczLCAxLCAyMzUsIDEzOSwgMTczLCAxLCAyMzUsIAotICAgIDExNSwgMTczLCAxLCAyMjgsIDIzLCAxNzMsIDEsIDIxNiwgMTE1LCAxNzMsIDEsIDIxNiwgMTA1LCAxNzMsIDEsIDI0OCwgCi0gICAgODYsIDE3MywgMSwgMjQ4LCA3MCwgMTczLCAxLCAyMjgsIDE5OCwgMTczLCAxLCAyMTgsIDUyLCAxNzMsIDEsIDIxNywgMTYxLCAKLSAgICAxNzMsIDEsIDI0OCwgMTY0LCAxNzMsIDEsIDI0NywgMjMyLCAxNzMsIDEsIDIwNSwgMTczLCAxLCAxOTMsIDE3MywgMSwgCi0gICAgMjI2LCAyMywgMTczLCAxLCAyNTIsIDEwNywgMTczLCAxLCAyNTEsIDE5NSwgMTczLCAxLCAxODgsIDE3MywgMSwgMTg2LCAKLSAgICAxNzMsIDEsIDIwMywgMTczLCAxLCAyMzMsIDE1NywgMTczLCAxLCAyMzIsIDIxMywgMTczLCAxLCAyMTUsIDEsIDE3MywgMSwgCi0gICAgMjIxLCAyNCwgMTczLCAxLCAyMjIsIDIwMiwgMTczLCAxLCAxNTksIDE3MywgNSwgMjI4LCA2MCwgMTczLCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDE3MywgMzAsIDUsIDcyLCAxNzMsIDMwLCA1LCAyMzYsIDI4LCAxNzMsIDMwLCA1LCA2OSwgMTczLCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMTczLCAzMCwgNSwgMjQ1LCAxNjUsIDE3MywgMzAsIDUsIDI1NCwgMTA4LCAxNzMsIDMwLCA1LCAyMjcsIDQ5LCAKLSAgICAxNzMsIDMwLCA1LCAyNTMsIDEwOCwgMTczLCA1LCAyMTQsIDEzMywgMTczLCA1LCAyMTUsIDE4NywgMTczLCAxLCAyMzQsIAotICAgIDEyMSwgMTczLCAxLCAyNDIsIDIwMiwgMTczLCAxLCAyMTIsIDEwOSwgMTczLCAxLCAyMjMsIDgxLCAxNzMsIDEsIDI0NCwgCi0gICAgMTY0LCAxNzMsIDIxLCAyMTIsIDc5LCAxNzMsIDIxLCAxMTYsIDE3MywgMjEsIDEwOSwgMTczLCAyMSwgMTY2LCAxNzMsIDIxLCAKLSAgICAxNjMsIDE3MywgMjEsIDE4MCwgMTczLCAyMSwgMTg5LCAxNzMsIDIxLCAxOTgsIDE3MywgMjEsIDE5NSwgMTczLCAyMSwgCi0gICAgMjAwLCAxNzMsIDIxNywgMjcsIDE3MywgMjU0LCAxNTgsIDE3MywgMjM1LCAxNzYsIDE3MywgMjE1LCAxMTcsIDE3MywgMjQ1LCAKLSAgICAxMzgsIDIyNywgNTQsIDE3MywgNSwgMjEzLCA2NywgMTY0LCA1LCAyNTAsIDE4NywgMTY0LCA1LCAyNTMsIDI0MiwgMTY0LCAKLSAgICA1LCAyMTQsIDEyOCwgMTY0LCAxLCA2MSwgMTY0LCAxLCAyNTQsIDIzMiwgMTY0LCAxLCA3MiwgMTY0LCAxLCAyMzYsIDI4LCAKLSAgICAxNjQsIDEsIDY5LCAxNjQsIDEsIDIxNSwgOTIsIDE2NCwgMSwgMTYxLCAxNDksIDE2NCwgMSwgMTYxLCAxNTAsIDE2NCwgMzAsIAotICAgIDI1MCwgMTkwLCA3NCwgMTY0LCAxLCA3NCwgMTY0LCAxLCAyNTQsIDEwOCwgMTY0LCAzMCwgMjUwLCAxOTAsIDc1LCAxNjQsIAotICAgIDEsIDc1LCAxNjQsIDEsIDI1MywgMTA4LCAxNjQsIDEsIDE4MSwgMTY0LCAxLCAyMzQsIDEzOCwgMTY0LCAxLCAyNDMsIDExMCwgCi0gICAgMTY0LCAxLCAyNDIsIDIyNSwgMTY0LCAxLCAyMjksIDE1OSwgMTY0LCAxLCAyNTAsIDIxOSwgMTY0LCAxLCAyNTAsIDkyLCAKLSAgICAxNjQsIDEsIDIzNSwgMTM5LCAxNjQsIDEsIDIzNSwgMTE1LCAxNjQsIDEsIDIyOCwgMjMsIDE2NCwgMSwgMjE2LCAxMTUsIAotICAgIDE2NCwgMSwgMjE2LCAxMDUsIDE2NCwgMSwgMjQ4LCA4NiwgMTY0LCAxLCAyNDgsIDcwLCAxNjQsIDEsIDIyOCwgMTk4LCAKLSAgICAxNjQsIDEsIDIxOCwgNTIsIDE2NCwgMSwgMjE3LCAxNjEsIDE2NCwgMSwgMjQ4LCAxNjQsIDE2NCwgMSwgMjQ3LCAyMzIsIAotICAgIDE2NCwgMSwgMjA1LCAxNjQsIDEsIDE5MywgMTY0LCAxLCAyMjYsIDIzLCAxNjQsIDEsIDI1MiwgMTA3LCAxNjQsIDEsIDI1MSwgCi0gICAgMTk1LCAxNjQsIDEsIDE4OCwgMTY0LCAxLCAxODYsIDE2NCwgMSwgMjAzLCAxNjQsIDEsIDIzMywgMTU3LCAxNjQsIDEsIAotICAgIDIzMiwgMjEzLCAxNjQsIDEsIDIxNSwgMSwgMTY0LCAxLCAyMjEsIDI0LCAxNjQsIDEsIDIxOSwgMTU3LCAxNjQsIDEsIDIyMiwgCi0gICAgMjAyLCAxNjQsIDEsIDE1OSwgMTY0LCA1LCAyMjgsIDYwLCAxNjQsIDUsIDI1MywgOTEsIDE2NCwgMzAsIDUsIDI1NCwgMjMyLCAKLSAgICAxNjQsIDMwLCA1LCA3MiwgMTY0LCAzMCwgNSwgMjM2LCAyOCwgMTY0LCAzMCwgNSwgNjksIDE2NCwgMzAsIDUsIDIxNSwgOTIsIAotICAgIDE2NCwgMzAsIDUsIDE2MSwgMTQ5LCAxNjQsIDMwLCA1LCAxNjEsIDIyMywgODIsIDE2NCwgMzAsIDUsIDI1MCwgMTkwLCA3NCwgCi0gICAgMTY0LCAzMCwgNSwgNzQsIDE2NCwgMzAsIDUsIDI1NCwgMTA4LCAxNjQsIDMwLCA1LCAyNTAsIDE5MCwgNzUsIDE2NCwgMzAsIAotICAgIDUsIDc1LCAxNjQsIDMwLCA1LCAyNTMsIDEwOCwgMTY0LCA1LCAyMTQsIDEzMywgMTY0LCAyMjcsIDcwLCAxNjQsIDEsIDE2MSwgCi0gICAgMjIzLCA4MiwgMTY0LCAxLCAxNjEsIDIzMiwgMjE0LCAxNjQsIDMwLCA1LCAxNjEsIDE1MCwgMTY0LCAzMCwgNSwgMTYxLCAKLSAgICAyMzIsIDIxNCwgMTY0LCAyMSwgMjEyLCA3OSwgMTY0LCAyMSwgMTE2LCAxNjQsIDIxLCAxMDksIDE2NCwgMjEsIDE2NiwgCi0gICAgMTY0LCAyMSwgMTYzLCAxNjQsIDIxLCAxODAsIDE2NCwgMjEsIDE4OSwgMTY0LCAyMSwgMTk4LCAxNjQsIDIxLCAxOTUsIAotICAgIDE2NCwgMjEsIDIwMCwgMTY0LCAyMjMsIDI5LCA1MiwgMTQ3LCA1LCAyNTAsIDE4NywgMTQ3LCA1LCAyNTMsIDI0MiwgMTQ3LCAKLSAgICA1LCAyMTQsIDEyOCwgMTQ3LCAxLCA2MSwgMTQ3LCAxLCAyNTQsIDIzMiwgMTQ3LCAxLCA3MiwgMTQ3LCAxLCAyMzYsIDI4LCAKLSAgICAxNDcsIDEsIDY5LCAxNDcsIDEsIDIxNSwgOTIsIDE0NywgMSwgMTYxLCAxNDksIDE0NywgMSwgMTYxLCAxNTAsIDE0NywgMSwgCi0gICAgNzQsIDE0NywgMSwgMjU0LCAxMDgsIDE0NywgMSwgNzUsIDE0NywgMSwgMjUzLCAxMDgsIDE0NywgMSwgMTgxLCAxNDcsIDEsIAotICAgIDIzNCwgMTM4LCAxNDcsIDEsIDI0MywgMTEwLCAxNDcsIDEsIDI0MiwgMjI1LCAxNDcsIDEsIDIyOSwgMTU5LCAxNDcsIDEsIAotICAgIDI1MCwgMjE5LCAxNDcsIDEsIDI1MCwgOTIsIDE0NywgMSwgMjM1LCAxMzksIDE0NywgMSwgMjM1LCAxMTUsIDE0NywgMSwgCi0gICAgMjI4LCAyMywgMTQ3LCAxLCAyMTYsIDExNSwgMTQ3LCAxLCAyMTYsIDEwNSwgMTQ3LCAxLCAyNDgsIDg2LCAxNDcsIDEsIAotICAgIDI0OCwgNzAsIDE0NywgMSwgMjI4LCAxOTgsIDE0NywgMSwgMjE4LCA1MiwgMTQ3LCAxLCAyMTcsIDE2MSwgMTQ3LCAxLCAKLSAgICAyNDgsIDE2NCwgMTQ3LCAxLCAyNDcsIDIzMiwgMTQ3LCAxLCAyMDUsIDE0NywgMSwgMTkzLCAxNDcsIDEsIDIyNiwgMjMsIAotICAgIDE0NywgMSwgMjUyLCAxMDcsIDE0NywgMSwgMjUxLCAxOTUsIDE0NywgMSwgMTg4LCAxNDcsIDEsIDE4NiwgMTQ3LCAxLCAKLSAgICAyMDMsIDE0NywgMSwgMjMzLCAxNTcsIDE0NywgMSwgMjMyLCAyMTMsIDE0NywgMSwgMjE1LCAxLCAxNDcsIDEsIDIyMSwgMjQsIAotICAgIDE0NywgMSwgMjE5LCAxNTcsIDE0NywgMSwgMjIyLCAyMDIsIDE0NywgMSwgMTU5LCAxNDcsIDUsIDIyOCwgNjAsIDE0NywgNSwgCi0gICAgMjUzLCA5MSwgMTQ3LCAzMCwgNSwgMjU0LCAyMzIsIDE0NywgMzAsIDUsIDcyLCAxNDcsIDMwLCA1LCAyMzYsIDI4LCAxNDcsIAotICAgIDMwLCA1LCA2OSwgMTQ3LCAzMCwgNSwgMjE1LCA5MiwgMTQ3LCAzMCwgNSwgMTYxLCAxNDksIDE0NywgMzAsIDUsIDE2MSwgCi0gICAgMjIzLCA4MiwgMTQ3LCAzMCwgNSwgNzQsIDE0NywgMzAsIDUsIDI1NCwgMTA4LCAxNDcsIDMwLCA1LCA3NSwgMTQ3LCAzMCwgCi0gICAgNSwgMjUzLCAxMDgsIDE0NywgNSwgMjE0LCAxMzMsIDE0NywgMjU0LCAxMDksIDIzMywgNDcsIDc3LCAxNDcsIDI1MywgMTA5LCAKLSAgICAyMzMsIDQ3LCA3NywgMTQ3LCAxLCAyMjMsIDgxLCAxNDcsIDEsIDIyMywgMTkyLCAxNDcsIDEsIDIxMiwgMTYwLCAxNDcsIDEsIAotICAgIDE2MSwgMjIzLCA4MiwgMTQ3LCAxLCAxNjEsIDIzMiwgMjE0LCAxNDcsIDMwLCA1LCAxNjEsIDE1MCwgMTQ3LCAzMCwgNSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgMTQ3LCAyMSwgMjEyLCA3OSwgMTQ3LCAyMSwgMTE2LCAxNDcsIDIxLCAxMDksIDE0NywgMjEsIAotICAgIDE2NiwgMTQ3LCAyMSwgMTYzLCAxNDcsIDIxLCAxODAsIDE0NywgMjEsIDE4OSwgMTQ3LCAyMSwgMTk4LCAxNDcsIDIxLCAKLSAgICAxOTUsIDE0NywgMjEsIDIwMCwgMTQ3LCAyMzUsIDE1OSwgMTQ3LCAxLCAyMTQsIDQ5LCAxNDcsIDI0MywgMjI4LCAxMjIsIAotICAgIDIyNCwgMTY2LCAxNDcsIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgMTQ3LCAyNDMsIDIyOCwgMTMzLCAyMjQsIDE2NCwgMTQ3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyMjAsIDQ1LCAxNDcsIDI0MywgMjI4LCAxMjIsIDI0NSwgMTQ1LCAxNDcsIDI0MywgMjI4LCAxMzMsIAotICAgIDIyMCwgNDQsIDE3OCwgNSwgMjUzLCAyNDIsIDE3OCwgNSwgMjE0LCAxMjgsIDE3OCwgMSwgNjEsIDE3OCwgMSwgMjU0LCAKLSAgICAyMzIsIDE3OCwgMSwgNzIsIDE3OCwgMSwgMjM2LCAyOCwgMTc4LCAxLCA2OSwgMTc4LCAxLCAyMTUsIDkyLCAxNzgsIDEsIAotICAgIDc0LCAxNzgsIDEsIDI0NSwgMTY1LCAxNzgsIDEsIDI1NCwgMTA4LCAxNzgsIDEsIDc1LCAxNzgsIDEsIDIyNywgNDksIDE3OCwgCi0gICAgMSwgMjUzLCAxMDgsIDE3OCwgMSwgMTgxLCAxNzgsIDEsIDIyOSwgMTU5LCAxNzgsIDEsIDI1MCwgMjE5LCAxNzgsIDEsIAotICAgIDIzNSwgMTM5LCAxNzgsIDEsIDIyOCwgMjMsIDE3OCwgMSwgMjE2LCAxMTUsIDE3OCwgMSwgMjI4LCAxOTgsIDE3OCwgMSwgCi0gICAgMjE4LCA1MiwgMTc4LCAxLCAyMDUsIDE3OCwgMSwgMjI4LCAxODksIDE3OCwgMSwgMTkzLCAxNzgsIDEsIDE4OCwgMTc4LCAxLCAKLSAgICAxODYsIDE3OCwgMSwgMjAzLCAxNzgsIDEsIDIyMywgODEsIDE3OCwgMSwgMjMzLCAxNTcsIDE3OCwgMSwgMjMyLCAyMTMsIAotICAgIDE3OCwgMSwgMjMyLCAyMTIsIDE3OCwgMSwgMjE1LCAxLCAxNzgsIDEsIDIyMSwgMjQsIDE3OCwgMSwgMjE5LCAxNTcsIDE3OCwgCi0gICAgMSwgMjIyLCAyMDIsIDE3OCwgMSwgMTU5LCAxNzgsIDMwLCA1LCAyNTQsIDIzMiwgMTc4LCAzMCwgNSwgNzIsIDE3OCwgMzAsIAotICAgIDUsIDIzNiwgMjgsIDE3OCwgMzAsIDUsIDY5LCAxNzgsIDMwLCA1LCAyMTUsIDkyLCAxNzgsIDMwLCA1LCA3NCwgMTc4LCAzMCwgCi0gICAgNSwgMjQ1LCAxNjUsIDE3OCwgMzAsIDUsIDI1NCwgMTA4LCAxNzgsIDMwLCA1LCA3NSwgMTc4LCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTc4LCAzMCwgNSwgMjUzLCAxMDgsIDE3OCwgNSwgMjE0LCAxMzMsIDE3OCwgMjI3LCA3MCwgMTc4LCAyNTMsIDEwOSwgMjMzLCAKLSAgICA0NywgNzcsIDE3OCwgMjEsIDIxMiwgNzksIDE3OCwgMjEsIDExNiwgMTc4LCAyMSwgMTA5LCAxNzgsIDIxLCAxNjYsIDE3OCwgCi0gICAgMjEsIDE2MywgMTc4LCAyMSwgMTgwLCAxNzgsIDIxLCAxODksIDE3OCwgMjEsIDE5OCwgMTc4LCAyMSwgMTk1LCAxNzgsIDIxLCAKLSAgICAyMDAsIDE3OCwgNTAsIDIxNywgMjAwLCAxNzgsIDUwLCAxMjIsIDI0MCwgMjAwLCAxNzgsIDUwLCAxMjIsIDIxNywgMTAwLCAKLSAgICAxNzgsIDI0OCwgOTIsIDUyLCAxNzgsIDIzMCwgMjA1LCA1MiwgMTc4LCAyMTMsIDM2LCA1MiwgMTc4LCAyNDgsIDM4LCA1MiwgCi0gICAgMTc4LCAyNDksIDc5LCA1MiwgMTc4LCAyNTMsIDE1MywgNzgsIDUyLCAxNzgsIDIyMywgMjksIDUyLCAxNzgsIDUwLCA1MiwgCi0gICAgMTM5LCA1LCAyNTAsIDE4NywgMTM5LCA1LCAyNTMsIDI0MiwgMTM5LCA1LCAyMTQsIDEyOCwgMTM5LCAxLCA2MSwgMTM5LCAxLCAKLSAgICAyNTQsIDIzMiwgMTM5LCAxLCA3MiwgMTM5LCAxLCAyMzYsIDI4LCAxMzksIDEsIDY5LCAxMzksIDEsIDIxNSwgOTIsIDEzOSwgCi0gICAgMSwgMTYxLCAxNDksIDEzOSwgMSwgMTYxLCAxNTAsIDEzOSwgMSwgNzQsIDEzOSwgMSwgMjQ1LCAxNjUsIDEzOSwgMSwgMjU0LCAKLSAgICAxMDgsIDEzOSwgMSwgNzUsIDEzOSwgMSwgMjI3LCA0OSwgMTM5LCAxLCAyNTMsIDEwOCwgMTM5LCAxLCAxODEsIDEzOSwgMSwgCi0gICAgMjM0LCAxMzgsIDEzOSwgMSwgMjQzLCAxMTAsIDEzOSwgMSwgMjQyLCAyMjUsIDEzOSwgMSwgMjI5LCAxNTksIDEzOSwgMSwgCi0gICAgMjUwLCAyMTksIDEzOSwgMSwgMjUwLCA5MiwgMTM5LCAxLCAyMzUsIDEzOSwgMTM5LCAxLCAyMzUsIDExNSwgMTM5LCAxLCAKLSAgICAyMjgsIDIzLCAxMzksIDEsIDIxNiwgMTE1LCAxMzksIDEsIDIxNiwgMTA1LCAxMzksIDEsIDI0OCwgODYsIDEzOSwgMSwgCi0gICAgMjQ4LCA3MCwgMTM5LCAxLCAyMjgsIDE5OCwgMTM5LCAxLCAyMTgsIDUyLCAxMzksIDEsIDIxNywgMTYxLCAxMzksIDEsIAotICAgIDI0OCwgMTY0LCAxMzksIDEsIDI0NywgMjMyLCAxMzksIDEsIDIwNSwgMTM5LCAxLCAxOTMsIDEzOSwgMSwgMjI2LCAyMywgCi0gICAgMTM5LCAxLCAyNTIsIDEwNywgMTM5LCAxLCAyNTEsIDE5NSwgMTM5LCAxLCAxODgsIDEzOSwgMSwgMTg2LCAxMzksIDEsIAotICAgIDIwMywgMTM5LCAxLCAyMjMsIDgxLCAxMzksIDEsIDIzMywgMTU3LCAxMzksIDEsIDIzMiwgMjEzLCAxMzksIDEsIDIxNSwgMSwgCi0gICAgMTM5LCAxLCAyMjEsIDI0LCAxMzksIDEsIDIxOSwgMTU3LCAxMzksIDEsIDIyMiwgMjAyLCAxMzksIDEsIDE1OSwgMTM5LCA1LCAKLSAgICAyNTMsIDkxLCAxMzksIDMwLCA1LCAyNTQsIDIzMiwgMTM5LCAzMCwgNSwgNzIsIDEzOSwgMzAsIDUsIDIzNiwgMjgsIDEzOSwgCi0gICAgMzAsIDUsIDY5LCAxMzksIDMwLCA1LCAyMTUsIDkyLCAxMzksIDMwLCA1LCAxNjEsIDE0OSwgMTM5LCAzMCwgNSwgMTYxLCAKLSAgICAyMjMsIDgyLCAxMzksIDMwLCA1LCA3NCwgMTM5LCAzMCwgNSwgMjQ1LCAxNjUsIDEzOSwgMzAsIDUsIDI1NCwgMTA4LCAxMzksIAotICAgIDMwLCA1LCA3NSwgMTM5LCAzMCwgNSwgMjI3LCA0OSwgMTM5LCAzMCwgNSwgMjUzLCAxMDgsIDEzOSwgNSwgMjE0LCAxMzMsIAotICAgIDEzOSwgMjMzLCA0NywgNzcsIDEzOSwgMjU0LCAxMDksIDIzMywgNDcsIDc3LCAxMzksIDEsIDIxNiwgMTQxLCAxMzksIDEsIAotICAgIDI0NSwgMjQ5LCAxMzksIDEsIDE2MSwgMjIzLCA4MiwgMTM5LCAxLCAxNjEsIDIzMiwgMjE0LCAxMzksIDMwLCA1LCAxNjEsIAotICAgIDE1MCwgMTM5LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTM5LCAyMSwgMjEyLCA3OSwgMTM5LCAyMSwgMTE2LCAxMzksIDIxLCAKLSAgICAxMDksIDEzOSwgMjEsIDE2NiwgMTM5LCAyMSwgMTYzLCAxMzksIDIxLCAxODAsIDEzOSwgMjEsIDE4OSwgMTM5LCAyMSwgCi0gICAgMTk4LCAxMzksIDIxLCAxOTUsIDEzOSwgMjEsIDIwMCwgMTM5LCAyNDMsIDIyOCwgMjEsIDIxMiwgODAsIDMxLCAyMjcsIAotICAgIDEwMiwgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMjIsIDMxLCAyMjcsIDEwMiwgMjI1LCAxMDMsIAotICAgIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMTcsIDMxLCAyMjcsIDEwMiwgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgCi0gICAgMjQzLCAyMjgsIDIxLCAxMzMsIDMxLCAyMjcsIDEwMiwgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAKLSAgICAxMjIsIDMxLCAyNDUsIDksIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTE3LCAzMSwgMjQ1LCA5LCAKLSAgICAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIDEzMywgMzEsIDI0NSwgOSwgMjI1LCAxMDMsIDY1LCAxNjMsIAotICAgIDEzOSwgNSwgMjE2LCA0OSwgMTU1LCA1LCAyNTMsIDI0MiwgMTU1LCA1LCAyMTQsIDEyOCwgMTU1LCAxLCA2MSwgMTU1LCAxLCAKLSAgICAyNTQsIDIzMiwgMTU1LCAxLCA3MiwgMTU1LCAxLCAyMzYsIDI4LCAxNTUsIDEsIDY5LCAxNTUsIDEsIDIxNSwgOTIsIDE1NSwgCi0gICAgMSwgMTYxLCAxNDksIDE1NSwgMSwgMTYxLCAxNTAsIDE1NSwgMSwgNzQsIDE1NSwgMSwgMjQ1LCAxNjUsIDE1NSwgMSwgMjU0LCAKLSAgICAxMDgsIDE1NSwgMSwgNzUsIDE1NSwgMSwgMjI3LCA0OSwgMTU1LCAxLCAyNTMsIDEwOCwgMTU1LCAxLCAxODEsIDE1NSwgMSwgCi0gICAgMjM0LCAxMzgsIDE1NSwgMSwgMjQzLCAxMTAsIDE1NSwgMSwgMjQyLCAyMjUsIDE1NSwgMSwgMjI5LCAxNTksIDE1NSwgMSwgCi0gICAgMjUwLCAyMTksIDE1NSwgMSwgMjUwLCA5MiwgMTU1LCAxLCAyMzUsIDEzOSwgMTU1LCAxLCAyMzUsIDExNSwgMTU1LCAxLCAKLSAgICAyMjgsIDIzLCAxNTUsIDEsIDIxNiwgMTE1LCAxNTUsIDEsIDIxNiwgMTA1LCAxNTUsIDEsIDI0OCwgODYsIDE1NSwgMSwgCi0gICAgMjQ4LCA3MCwgMTU1LCAxLCAyMjgsIDE5OCwgMTU1LCAxLCAyMTgsIDUyLCAxNTUsIDEsIDIxNywgMTYxLCAxNTUsIDEsIAotICAgIDI0OCwgMTY0LCAxNTUsIDEsIDI0NywgMjMyLCAxNTUsIDEsIDIwNSwgMTU1LCAxLCAxOTMsIDE1NSwgMSwgMjI2LCAyMywgCi0gICAgMTU1LCAxLCAyNTIsIDEwNywgMTU1LCAxLCAyNTEsIDE5NSwgMTU1LCAxLCAxODgsIDE1NSwgMSwgMTg2LCAxNTUsIDEsIAotICAgIDIwMywgMTU1LCAxLCAyMjMsIDgxLCAxNTUsIDEsIDIzMywgMTU3LCAxNTUsIDEsIDIzMiwgMjEzLCAxNTUsIDEsIDIxNSwgMSwgCi0gICAgMTU1LCAxLCAyMjEsIDI0LCAxNTUsIDEsIDIxOSwgMTU3LCAxNTUsIDEsIDIyMiwgMjAyLCAxNTUsIDEsIDE1OSwgMTU1LCA1LCAKLSAgICAyMjgsIDYwLCAxNTUsIDUsIDI1MywgOTEsIDE1NSwgMzAsIDUsIDI1NCwgMjMyLCAxNTUsIDMwLCA1LCA3MiwgMTU1LCAzMCwgCi0gICAgNSwgMjM2LCAyOCwgMTU1LCAzMCwgNSwgNjksIDE1NSwgMzAsIDUsIDIxNSwgOTIsIDE1NSwgMzAsIDUsIDE2MSwgMTQ5LCAKLSAgICAxNTUsIDMwLCA1LCAxNjEsIDIyMywgODIsIDE1NSwgMzAsIDUsIDc0LCAxNTUsIDMwLCA1LCAyNDUsIDE2NSwgMTU1LCAzMCwgCi0gICAgNSwgMjU0LCAxMDgsIDE1NSwgMzAsIDUsIDc1LCAxNTUsIDMwLCA1LCAyMjcsIDQ5LCAxNTUsIDMwLCA1LCAyNTMsIDEwOCwgCi0gICAgMTU1LCA1LCAyMTQsIDEzMywgMTU1LCAyMzMsIDQ3LCA3NywgMTU1LCAyNTQsIDEwOSwgMjMzLCA0NywgNzcsIDE1NSwgMSwgCi0gICAgMjQ0LCAxNjQsIDE1NSwgMSwgMTYxLCAyMjMsIDgyLCAxNTUsIDEsIDE2MSwgMjMyLCAyMTQsIDE1NSwgMzAsIDUsIDE2MSwgCi0gICAgMTUwLCAxNTUsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxNTUsIDIxLCAyMTIsIDc5LCAxNTUsIDIxLCAxMTYsIDE1NSwgMjEsIAotICAgIDEwOSwgMTU1LCAyMSwgMTY2LCAxNTUsIDIxLCAxNjMsIDE1NSwgMjEsIDE4MCwgMTU1LCAyMSwgMTg5LCAxNTUsIDIxLCAKLSAgICAxOTgsIDE1NSwgMjEsIDE5NSwgMTU1LCAyMSwgMjAwLCAxNTUsIDUsIDIzNSwgMTA0LCAxNTUsIDUsIDIxNSwgMTMyLCAxMzAsIAotICAgIDUsIDI1MywgMjQyLCAxMzAsIDUsIDIxNCwgMTI4LCAxMzAsIDEsIDYxLCAxMzAsIDEsIDI1NCwgMjMyLCAxMzAsIDEsIDcyLCAKLSAgICAxMzAsIDEsIDIzNiwgMjgsIDEzMCwgMSwgNjksIDEzMCwgMSwgMjE1LCA5MiwgMTMwLCAxLCAxNjEsIDE0OSwgMTMwLCAxLCAKLSAgICAxNjEsIDE1MCwgMTMwLCAxLCA3NCwgMTMwLCAxLCAyNDUsIDE2NSwgMTMwLCAxLCAyNTQsIDEwOCwgMTMwLCAxLCA3NSwgCi0gICAgMTMwLCAxLCAyMjcsIDQ5LCAxMzAsIDEsIDI1MywgMTA4LCAxMzAsIDEsIDE4MSwgMTMwLCAxLCAyMzQsIDEzOCwgMTMwLCAxLCAKLSAgICAyNDMsIDExMCwgMTMwLCAxLCAyNDIsIDIyNSwgMTMwLCAxLCAyMjksIDE1OSwgMTMwLCAxLCAyNTAsIDIxOSwgMTMwLCAxLCAKLSAgICAyNTAsIDkyLCAxMzAsIDEsIDIzNSwgMTM5LCAxMzAsIDEsIDIzNSwgMTE1LCAxMzAsIDEsIDIyOCwgMjMsIDEzMCwgMSwgCi0gICAgMjE2LCAxMTUsIDEzMCwgMSwgMjE2LCAxMDUsIDEzMCwgMSwgMjQ4LCA4NiwgMTMwLCAxLCAyNDgsIDcwLCAxMzAsIDEsIAotICAgIDIyOCwgMTk4LCAxMzAsIDEsIDIxOCwgNTIsIDEzMCwgMSwgMjE3LCAxNjEsIDEzMCwgMSwgMjQ4LCAxNjQsIDEzMCwgMSwgCi0gICAgMjQ3LCAyMzIsIDEzMCwgMSwgMjA1LCAxMzAsIDEsIDIyOCwgMTg5LCAxMzAsIDEsIDE5MywgMTMwLCAxLCAyMjYsIDIzLCAKLSAgICAxMzAsIDEsIDI1MiwgMTA3LCAxMzAsIDEsIDI1MSwgMTk1LCAxMzAsIDEsIDE4OCwgMTMwLCAxLCAxODYsIDEzMCwgMSwgCi0gICAgMjAzLCAxMzAsIDEsIDIyMywgODEsIDEzMCwgMSwgMjMzLCAxNTcsIDEzMCwgMSwgMjMyLCAyMTMsIDEzMCwgMSwgMjMyLCAKLSAgICAyMTIsIDEzMCwgMSwgMjE1LCAxLCAxMzAsIDEsIDIyMSwgMjQsIDEzMCwgMSwgMjE5LCAxNTcsIDEzMCwgMSwgMjIyLCAyMDIsIAotICAgIDEzMCwgMSwgMTU5LCAxMzAsIDEsIDIxNiwgODgsIDEzMCwgNSwgMjUzLCA5MSwgMTMwLCAzMCwgNSwgMjU0LCAyMzIsIDEzMCwgCi0gICAgMzAsIDUsIDcyLCAxMzAsIDMwLCA1LCAyMzYsIDI4LCAxMzAsIDMwLCA1LCA2OSwgMTMwLCAzMCwgNSwgMjE1LCA5MiwgMTMwLCAKLSAgICAzMCwgNSwgMTYxLCAxNDksIDEzMCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTMwLCAzMCwgNSwgNzQsIDEzMCwgMzAsIDUsIAotICAgIDI0NSwgMTY1LCAxMzAsIDMwLCA1LCAyNTQsIDEwOCwgMTMwLCAzMCwgNSwgNzUsIDEzMCwgMzAsIDUsIDIyNywgNDksIDEzMCwgCi0gICAgMzAsIDUsIDI1MywgMTA4LCAxMzAsIDUsIDIxNCwgMTMzLCAxMzAsIDEsIDYyLCAyMjMsIDIyNSwgMTMwLCAyNTMsIDEwOSwgCi0gICAgMjMzLCA0NywgNzcsIDEzMCwgMSwgMTYxLCAyMjMsIDgyLCAxMzAsIDEsIDE2MSwgMjMyLCAyMTQsIDEzMCwgMzAsIDUsIAotICAgIDE2MSwgMTUwLCAxMzAsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxMzAsIDIxLCAyMTIsIDc5LCAxMzAsIDIxLCAxMTYsIDEzMCwgCi0gICAgMjEsIDEwOSwgMTMwLCAyMSwgMTY2LCAxMzAsIDIxLCAxNjMsIDEzMCwgMjEsIDE4MCwgMTMwLCAyMSwgMTg5LCAxMzAsIDIxLCAKLSAgICAxOTgsIDEzMCwgMjEsIDE5NSwgMTMwLCAyMSwgMjAwLCAxMzAsIDUwLCAyMTcsIDIwMCwgMTMwLCA1MCwgMTIyLCAyNDAsIAotICAgIDIwMCwgMTMwLCA1MCwgMTIyLCAyMTcsIDEwMCwgMTMwLCAyNDMsIDIyOCwgMTIyLCAyMjQsIDE2NiwgMTMwLCAyNDMsIDIyOCwgCi0gICAgMTIyLCAyNDIsIDksIDEzMCwgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDEzMCwgMjQ4LCA5NiwgNzcsIDEzMCwgMSwgMjUwLCAKLSAgICAzNiwgMjI4LCAxOTksIDEzMCwgMSwgMjUwLCAzNiwgMjA0LCAxMzAsIDEsIDI1MCwgMzYsIDIyMywgODIsIDEzMCwgMSwgCi0gICAgMjUwLCAzNiwgMTUwLCAxMzAsIDEsIDI1MCwgMzYsIDIzMiwgMjE0LCAxMzAsIDEsIDI1MCwgMzYsIDIzNSwgMjcsIDE3MiwgCi0gICAgNSwgMjUzLCAyNDEsIDE3MiwgNSwgMjE0LCAxMjcsIDE3MiwgMSwgMjUzLCA4MSwgMTcyLCAxLCAyNTQsIDE4NywgMTcyLCAxLCAKLSAgICAyNTQsIDEyOCwgMTcyLCAxLCAyNTQsIDE0MywgMTcyLCAxLCAyMzUsIDE0OSwgMTcyLCAxLCAyMzYsIDI3LCAxNzIsIDEsIAotICAgIDIxNSwgODQsIDE3MiwgMSwgMjE1LCA4NiwgMTcyLCAxLCAyMzUsIDE3MSwgMTcyLCAxLCAyMzUsIDE3MiwgMTcyLCAxLCAKLSAgICAyMzYsIDEzLCAxNzIsIDEsIDIzNiwgMTUsIDE3MiwgMSwgMjQ0LCAyNDEsIDE3MiwgMSwgMjQ1LCAxNjEsIDE3MiwgMSwgCi0gICAgMjU0LCA5NiwgMTcyLCAxLCAyMjYsIDIzMiwgMTcyLCAxLCAyMjcsIDQzLCAxNzIsIDEsIDI1MywgOTQsIDE3MiwgMSwgMjU0LCAKLSAgICA1NSwgMjM0LCAxOTMsIDE3MiwgMSwgMjMyLCAxNCwgMjM0LCAxOTMsIDE3MiwgMSwgMjU0LCA1NSwgMjQzLCA1OCwgMTcyLCAKLSAgICAxLCAyMzIsIDE0LCAyNDMsIDU4LCAxNzIsIDEsIDIzNCwgMjM0LCAyMzAsIDQwLCAxNzIsIDEsIDIyMiwgMTUyLCAyNDMsIAotICAgIDU4LCAxNzIsIDEsIDI1NCwgNTUsIDI1MCwgMTQ5LCAxNzIsIDEsIDIzMiwgMTQsIDI1MCwgMTQ5LCAxNzIsIDEsIDI1NCwgCi0gICAgNTUsIDIzNSwgMTI4LCAxNzIsIDEsIDIzMiwgMTQsIDIzNSwgMTI4LCAxNzIsIDEsIDIxOCwgNDYsIDIzMCwgNDAsIDE3MiwgCi0gICAgMSwgMjE4LCA0NiwgMjIyLCAxNTEsIDIzMCwgNDEsIDE3MiwgMSwgMjIyLCAxNTIsIDIzNSwgMTI4LCAxNzIsIDEsIDI1NCwgCi0gICAgNTUsIDIxNiwgMTEzLCAxNzIsIDEsIDIzMiwgMTQsIDIxNiwgMTEzLCAxNzIsIDEsIDI1NCwgNTUsIDI0OCwgNzcsIDE3MiwgCi0gICAgMSwgMjMyLCAxNCwgMjQ4LCA3NywgMTcyLCAxLCAyMzAsIDEyNCwgMjMwLCAyLCAxNzIsIDEsIDIyMiwgMTUyLCAyNDgsIDc3LCAKLSAgICAxNzIsIDEsIDI1NCwgNTUsIDIxNywgMjM3LCAxNzIsIDEsIDIzMiwgMTQsIDIxNywgMjM3LCAxNzIsIDEsIDI1NCwgNTUsIAotICAgIDI0OCwgOTAsIDE3MiwgMSwgMjMyLCAxNCwgMjQ4LCA5MCwgMTcyLCAxLCAyNDgsIDExOSwgMjMwLCAyLCAxNzIsIDEsIDIyMiwgCi0gICAgMTUyLCAyNDgsIDkwLCAxNzIsIDEsIDI1NCwgNTUsIDIyNiwgMTAyLCAxNzIsIDEsIDIzMiwgMTQsIDIyNiwgMTAyLCAxNzIsIAotICAgIDEsIDI1NCwgNTUsIDI1MiwgMzIsIDE3MiwgMSwgMjMyLCAxNCwgMjUyLCAzMiwgMTcyLCAxLCAyMzEsIDE5NSwgMTcyLCAxLCAKLSAgICAyNTQsIDQwLCAyNTIsIDMyLCAxNzIsIDEsIDIxMywgNDIsIDE3MiwgMSwgMjI0LCAyNiwgMTcyLCAxLCAyNDgsIDExOSwgCi0gICAgMjMzLCA5MSwgMTcyLCAxLCAyMTQsIDIzNCwgMTcyLCAxLCAyMTgsIDQ2LCAyMjIsIDEyOCwgMTcyLCAxLCAyMzAsIDEyNCwgCi0gICAgMjIyLCAxMjgsIDE3MiwgMSwgMjQ4LCAxMTksIDIyMiwgMTI4LCAxNzIsIDEsIDI0MSwgMjI2LCAxNzIsIDEsIDIzMCwgMTI0LCAKLSAgICAyMzMsIDkxLCAxNzIsIDEsIDI0NCwgMTI1LCAxNzIsIDUsIDI1NCwgODUsIDE3MiwgMzAsIDUsIDI1NCwgMTM4LCAxNzIsIAotICAgIDMwLCA1LCAyMzQsIDE2MSwgMjU0LCAxNDUsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyNTQsIDE0NSwgMTcyLCAzMCwgNSwgCi0gICAgMjM0LCAxNjEsIDIzNSwgMTY4LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjM1LCAxNjgsIDE3MiwgMzAsIDUsIDIzNCwgMTYxLCAKLSAgICAyMjYsIDIxMiwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIyNiwgMjEyLCAxNzIsIDMwLCA1LCAyNDMsIDk5LCAxNzIsIDMwLCAKLSAgICA1LCAyMzQsIDI0LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjM0LCAyNCwgMTcyLCAzMCwgNSwgMjM0LCAyNiwgMjQ4LCAxOCwgCi0gICAgMTcyLCAzMCwgNSwgMjM0LCAyNSwgMjQyLCAyOCwgMjU0LCAxMzgsIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIAotICAgIDI0NywgMTgwLCAyNTQsIDEzOCwgMTcyLCAzMCwgNSwgMjM0LCAyNSwgMjQyLCAyOCwgMjQzLCA1NywgMTcyLCAzMCwgNSwgCi0gICAgMjQzLCA1NywgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDI0MywgOTksIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyNDMsIDU3LCAKLSAgICAxNzIsIDIyNSwgMjcsIDIzMywgMjI4LCAxNTQsIDEzNywgMjM0LCAzOCwgMjM0LCAyNTAsIDE1NCwgMTM3LCAyMzQsIDExNCwgCi0gICAgMjM0LCAxMzQsIDE1NCwgMTM3LCAyMzQsIDExNCwgMjM0LCAxMDcsIDE1NCwgMTM3LCAyMzQsIDExNCwgMjM0LCAxMDQsIAotICAgIDE1NCwgMTM3LCAyMzQsIDExNCwgMjM0LCAxMTEsIDE1NCwgMTM3LCAyMzQsIDExNCwgMjI0LCA0NiwgMTU0LCAxMzcsIDIyOSwgCi0gICAgOTEsIDIyOSwgNzgsIDE1NCwgMTM3LCAyNTAsIDI0LCAyNTAsIDgzLCAxNTQsIDEzNywgMjUwLCAyNCwgMjUwLCAzMiwgMTU0LCAKLSAgICAxMzcsIDI1MCwgMjQsIDI1MCwgODIsIDE1NCwgMTM3LCAyMTksIDI0MywgMjE5LCAyNDIsIDE1NCwgMTM3LCAyNTAsIDI0LCAKLSAgICAyNTAsIDIwLCAxNTQsIDEzNywgMjEyLCAyMzYsIDIxMiwgMjQzLCAxNTQsIDEzNywgMjQ3LCAxMDAsIDI1MCwgODksIDE1NCwgCi0gICAgMTM3LCAyMTEsIDIxMSwgMjI2LCAxMTEsIDE1NCwgMTM3LCAyMTcsIDExMCwgMjE3LCAxNTMsIDE1NCwgMTM3LCAyMTcsIAotICAgIDExMCwgMjMwLCAyMSwgMTU0LCAxMzcsIDIxNywgMTEwLCAyMjUsIDI0MywgMTU0LCAxMzcsIDIyOCwgMTg2LCAyMjksIDE4MCwgCi0gICAgMTU0LCAxMzcsIDI0NywgMTAwLCAyNDgsIDE5LCAxNTQsIDEzNywgMjExLCAyMTEsIDIxOCwgNiwgMTU0LCAxMzcsIDIxNywgCi0gICAgMTEwLCAyMTcsIDg1LCAxNTQsIDEzNywgMjE3LCAxMTAsIDIxNywgMTU3LCAxNTQsIDEzNywgMjE3LCAxMTAsIDIxNywgMTA3LCAKLSAgICAxNTQsIDEzNywgMjI4LCAxODYsIDIyOCwgOTIsIDE1NCwgMTM3LCAyNTEsIDEyOSwgMjUyLCA4MywgMTU0LCAxMzcsIDIyNSwgCi0gICAgMTUxLCAyMjUsIDE3NCwgMTU0LCAxMzcsIDIyNSwgMjU0LCAyMjUsIDI0NSwgMTU0LCAxMzcsIDI0NCwgMTMsIDI0NCwgMTY0LCAKLSAgICAxNTQsIDEzNywgMjI1LCAyNTQsIDIyNiwgMTcsIDE1NCwgMTM3LCAyNDQsIDEzLCAyNDQsIDE0MSwgMTU0LCAxMzcsIDIyNSwgCi0gICAgMjU0LCAyMjIsIDE2MiwgMTU0LCAxMzcsIDIzMCwgMjMyLCAxODgsIDE1NCwgMTM3LCAyMTIsIDIzNiwgMjEzLCA2OCwgMTU0LCAKLSAgICAxMzcsIDIyMywgMTEzLCAyMjMsIDUwLCAxNTQsIDEzNywgMjIzLCA1MSwgMTU0LCAxMzcsIDIzMiwgMjA5LCAyMzIsIDIzNSwgCi0gICAgMTU0LCAxMzcsIDIzMiwgMTU2LCAxNTQsIDEzNywgMjEzLCAyMTUsIDIxNCwgNDUsIDE1NCwgMTM3LCAyMTksIDI0MywgMjIyLCAKLSAgICAxNzcsIDE1NCwgMTM3LCAyMTksIDI0MywgMjIzLCAyNSwgMTU0LCAxMzcsIDIxOSwgMjQzLCAyMTksIDI2LCAxNTQsIDEzNywgCi0gICAgMjQxLCA1NSwgMjQxLCAxNDUsIDE1NCwgMTM3LCAyMzIsIDIwOSwgMjUwLCA1LCAxNTQsIDEzNywgMTU3LCAyNTQsIDI0LCAKLSAgICAxNTQsIDEzNywgMjQxLCA1NSwgMjI4LCAxODEsIDE1NCwgMTM3LCAyMjYsIDE5NSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCA2MSwgCi0gICAgMTU0LCAxMzcsIDIzMiwgOSwgMjQyLCAwLCAxNTQsIDEzNywgMjIyLCAxNDYsIDI1NCwgMjMyLCAxNTQsIDEzNywgMjIyLCAKLSAgICAxNDYsIDI1NCwgNDUsIDE1NCwgMTM3LCAyMjIsIDE0NiwgNzIsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjM2LCAyOCwgMTU0LCAKLSAgICAxMzcsIDIyMiwgMTQ2LCAyMTUsIDE4MywgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyMTUsIDE4MSwgMTU0LCAxMzcsIDIyMiwgCi0gICAgMTQ2LCA2OSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyMTUsIDkyLCAxNTQsIDEzNywgMjI2LCAwLCAxNTQsIDI0OSwgMzksIDE2LCAKLSAgICAyNTIsIDg0LCAxNTQsIDEzNywgMjIyLCAxNDYsIDc0LCAxNTQsIDEzNywgMjIyLCAxNDYsIDI1NCwgMTQ4LCAxNTQsIDEzNywgCi0gICAgMjIyLCAxNDYsIDc1LCAxNTQsIDEzNywgMjIyLCAxNDYsIDI1NCwgMTA5LCAyMzIsIDQsIDE1NCwgMTM3LCAyMjIsIDE0NiwgCi0gICAgMjU0LCAxMDksIDIzMiwgNSwgMTU0LCAxMzcsIDIzMywgMTMwLCAxNTQsIDEzNywgMjMyLCAxLCAxNTQsIDEzNywgMjMyLCAyLCAKLSAgICAxNTQsIDEzNywgMjMyLCA5LCAyNDUsIDEzNywgMTU0LCAxMzcsIDIzMiwgOSwgMjE3LCAxMDksIDE1NCwgMTM3LCAyMzIsIDksIAotICAgIDIxNiwgMTg2LCAxNTQsIDEzNywgMjMyLCA5LCAyNTAsIDcxLCAxNTQsIDEzNywgMjE3LCAxNTEsIDE1NCwgMTM3LCAyMjksIAotICAgIDM2LCAxNTQsIDEzNywgMjEzLCA2MiwgMTU0LCAxMzcsIDI0NCwgNCwgMTU0LCAyMSwgMjEyLCA3OSwgMTU0LCAyMSwgMTE2LCAKLSAgICAxNTQsIDIxLCAxMDksIDE1NCwgMjEsIDE2NiwgMTU0LCAyMSwgMTYzLCAxNTQsIDIxLCAxODAsIDE1NCwgMjEsIDE4OSwgCi0gICAgMTU0LCAyMSwgMTk4LCAxNTQsIDIxLCAxOTUsIDE1NCwgMjEsIDIwMCwgMTU0LCAxMzcsIDI1NCwgMjAsIDE1NCwgMTM3LCAKLSAgICAyMzQsIDExMiwgMjMzLCAxMTIsIDEsIDIzNCwgMzcsIDIzMywgMTEyLCAxLCAyMzQsIDExNCwgMjE4LCAyMzUsIDIzMywgCi0gICAgMTEyLCAxLCAyMzQsIDExNCwgMjE4LCAxMywgMjMzLCAxMTIsIDEsIDIyOSwgOTAsIDIzMywgMTEyLCAxLCAyNDksIDE3NSwgCi0gICAgMjMzLCAxMTIsIDEsIDIxOSwgMjQzLCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjI3LCAyNTMsIDIzMywgMTEyLCAxLCAyNDcsIAotICAgIDk5LCAyMzMsIDExMiwgMSwgMTA4LCAyMzMsIDExMiwgMSwgMjE3LCAxMTAsIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgMjE3LCAKLSAgICAxMTAsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyMjgsIDE4NSwgMjMzLCAxMTIsIDEsIDI1MSwgMTI4LCAyMzMsIDExMiwgMSwgCi0gICAgMjI1LCAxNTAsIDIzMywgMTEyLCAxLCAyMjUsIDI1NCwgMjE4LCAyMzUsIDIzMywgMTEyLCAxLCAyNDQsIDEzLCAyMTgsIDEzLCAKLSAgICAyMzMsIDExMiwgMSwgMjI1LCAyNTQsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyNDQsIDEzLCAyMTgsIDIzNSwgMjMzLCAxMTIsIAotICAgIDEsIDIzMCwgMjMxLCAyMzMsIDExMiwgMSwgMjEyLCAyMzUsIDIzMywgMTEyLCAxLCAyMzIsIDIwOSwgMjMyLCAyMzUsIDIzMywgCi0gICAgMTEyLCAxLCAyMzIsIDIwOSwgMjMyLCAxNzYsIDIzMywgMTEyLCAxLCAyMTMsIDIxNCwgMjMzLCAxMTIsIDEsIDIxOSwgMjQzLCAKLSAgICAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDI0MSwgNTUsIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgNzUsIDIzMywgMTEyLCAxLCAKLSAgICAyNDEsIDU1LCAyMTgsIDEzLCAyMzMsIDExMiwgMjQ1LCAxMjAsIDIzMywgMTEyLCAzMCwgNSwgNjEsIDIzMywgMTEyLCAzMCwgCi0gICAgNSwgMjMyLCA5LCAyMzQsIDIzOSwgMjMzLCAxMTIsIDMwLCA1LCAyNTQsIDIzMiwgMjMzLCAxMTIsIDMwLCA1LCAyNTQsIDQ1LCAKLSAgICAyMzMsIDExMiwgMzAsIDUsIDcyLCAyMzMsIDExMiwgMzAsIDUsIDIzNiwgMjgsIDIzMywgMTEyLCAzMCwgNSwgMjEzLCAxMDUsIAotICAgIDIzMywgMTEyLCAzMCwgNSwgMjEyLCAxNjEsIDIzMywgMTEyLCAzMCwgNSwgNjksIDIzMywgMTEyLCAzMCwgNSwgMjE1LCA5MiwgCi0gICAgMjMzLCAxMTIsIDMwLCA1LCAyMzIsIDksIDIzNCwgMjIsIDIzMywgMTEyLCAyMjEsIDY1LCA1LCAyMzIsIDIwOCwgMjMzLCAKLSAgICAxMTIsIDIyMSwgNjUsIDUsIDIyNywgMjUzLCAyMzMsIDExMiwgMzAsIDUsIDc0LCAyMzMsIDExMiwgMzAsIDUsIDI0NSwgCi0gICAgMTUyLCAyMzMsIDExMiwgMzAsIDUsIDc1LCAyMzMsIDExMiwgMzAsIDUsIDI1MywgODMsIDIzMywgMTEyLCAzMCwgNSwgMjU0LCAKLSAgICAxMDgsIDIzMywgMTEyLCAyMzQsIDM4LCAyMzMsIDE1NywgMjMzLCAxMTIsIDE2MCwgMjMyLCA5LCAyNDUsIDEzNywgMjMzLCAKLSAgICAxMTIsIDE2MCwgMjMyLCA5LCAyMTcsIDEwOSwgMjMzLCAxMTIsIDE2MCwgMjMyLCA5LCAyMTcsIDcxLCAyMzMsIDExMiwgCi0gICAgMTYwLCAyMzIsIDksIDI1MCwgMTU1LCAyMzMsIDExMiwgMjUwLCAxOTIsIDc3LCAyMzMsIDExMiwgMjI5LCA0NSwgMjMzLCAKLSAgICAxMTIsIDIxLCAyMTIsIDc5LCAyMzMsIDExMiwgMjEsIDExNiwgMjMzLCAxMTIsIDIxLCAxMDksIDIzMywgMTEyLCAyMSwgCi0gICAgMTY2LCAyMzMsIDExMiwgMjEsIDE2MywgMjMzLCAxMTIsIDIxLCAxODAsIDIzMywgMTEyLCAyMSwgMTg5LCAyMzMsIDExMiwgCi0gICAgMjEsIDE5OCwgMjMzLCAxMTIsIDIxLCAxOTUsIDIzMywgMTEyLCAyMSwgMjAwLCAyMzMsIDExMiwgMjQxLCA1NSwgMjI4LCAKLSAgICAxODUsIDIzMywgMTEyLCAyNDEsIDU1LCAyMzAsIDIzMSwgNjAsIDQsIDIyNywgNzAsIDYwLCAxNTIsIDI0MiwgOTQsIDIxMiwgCi0gICAgMjQ3LCAyMzEsIDU5LCAyMTYsIDE0NywgNjEsIDYwLCAxNTIsIDI0MiwgOTQsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyNTUsIDYyLCAKLSAgICAyMjMsIDExNywgMjUxLCAyNTMsIDE4OCwgNjAsIDE1MiwgMjQyLCA5NCwgMjEyLCAyNDcsIDIzMSwgNTksIDI1NSwgNjIsIAotICAgIDI0MiwgOTQsIDIxNiwgMTMxLCAxODgsIDYwLCAxNTIsIDcwLCAyMTIsIDI0NywgMjMxLCA1OSwgMjMxLCAxNTgsIDE4OCwgCi0gICAgNjAsIDE1MiwgMjQ5LCAxODksIDIxMiwgMjQ3LCAyMzEsIDU5LCAyMjEsIDMwLCAxODgsIDYwLCAxNTIsIDI1MCwgMTcxLCAKLSAgICAyMTIsIDI0NywgMjMxLCA1OSwgMjI1LCAyNDQsIDIyMSwgMTgsIDE4OCwgNjAsIDE1MiwgMjEyLCAyNDcsIDIzMSwgNTksIAotICAgIDIxNiwgMTMxLCAyMjEsIDE4LCAxODgsIDYwLCAxNTIsIDIyMiwgMTI2LCAyMjEsIDE3LCA2MCwgMTUyLCAyNTEsIDU3LCAKLSAgICAyMTIsIDI0NywgMjMxLCA1OCwgNjAsIDE1MiwgMjUxLCAxNDYsIDIyMCwgMTgzLCAyMTIsIDI0NywgMjMxLCA1OCwgNjAsIAotICAgIDE1MiwgMjM1LCAxOTQsIDIxNiwgMTMwLCA2MCwgMTUyLCAyNDgsIDEyLCAyMTYsIDEzMSwgMjUxLCA1NiwgNjAsIDE1MiwgCi0gICAgMjIxLCAxNywgNjAsIDE1MiwgMjI4LCAyLCAyMjEsIDE3LCA2MCwgMTUyLCAyMTYsIDEzMSwgMjIxLCAxNywgNjAsIDE1MiwgCi0gICAgMjI4LCAyLCAyMTYsIDEzMSwgMjIxLCAxNywgNjAsIDE1MiwgMjIzLCAxMzMsIDI1MCwgNTksIDIxOSwgMTY4LCAyMjEsIDE3LCAKLSAgICA2MCwgMTUyLCAyMjMsIDE5NSwgMjQyLCAxMjIsIDIyMSwgMTcsIDYwLCAxNTIsIDI1MCwgMTcxLCAyNTUsIDY2LCAyMjMsIAotICAgIDU1LCAyMzEsIDE1NywgMTg0LCAyNTAsIDE5NSwgNjAsIDE1MiwgMjQyLCA5NCwgMjE2LCAxMzAsIDYwLCAyMzIsIDE5NywgNSwgCi0gICAgMjUwLCA5MCwgMjIzLCA1NCwgNjAsIDIzMiwgMTk3LCA1LCAyMzMsIDIzLCAyMjMsIDU0LCA2MCwgMjUzLCAxMjgsIDUsIAotICAgIDIyMSwgMjcsIDI0MywgNDEsIDI1NSwgNjcsIDIyMywgNTQsIDYwLCAyNTMsIDEyOCwgNSwgMjU1LCA2NCwgMTkzLCA2MCwgCi0gICAgMjUzLCAxMjgsIDUsIDIyMiwgMTAxLCAyMTYsIDEyNiwgNjAsIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDMsIDQwLCA2MCwgCi0gICAgNSwgMjI0LCAyMywgMjQ3LCAxMTEsIDI0MiwgMTUyLCA2MCwgNSwgMjI0LCAyMywgMjQ3LCAxMTEsIDI0MiwgOTUsIDYwLCA1LCAKLSAgICAyMjQsIDIzLCAyMzAsIDM3LCAyNDMsIDQwLCA2MCwgNSwgMjI0LCAyMywgMjMwLCAzNywgMjQyLCAxNTIsIDYwLCA1LCAyMjQsIAotICAgIDIzLCAyNDcsIDExMSwgMjI0LCAyMywgMjMwLCAzNiwgNjAsIDIxLCAyMTIsIDc5LCA2MCwgMjEsIDExNiwgNjAsIDIxLCAKLSAgICAxMDksIDYwLCAyMSwgMTY2LCA2MCwgMjEsIDE2MywgNjAsIDIxLCAxODAsIDYwLCAyMSwgMTg5LCA2MCwgMjEsIDE5OCwgNjAsIAotICAgIDIxLCAxOTUsIDYwLCAyMSwgMjAwLCA2MCwgMjEsIDE1MSwgMTE2LCA2MCwgMjEsIDE1MSwgMTA5LCA2MCwgMjEsIDE1MSwgCi0gICAgMTY2LCA2MCwgMjEsIDE1MSwgMTYzLCA2MCwgMjEsIDE1MSwgMTgwLCA2MCwgMjEsIDE1MSwgMTg5LCA2MCwgMjEsIDE1MSwgCi0gICAgMTk4LCA2MCwgMjEsIDE1MSwgMTk1LCA2MCwgMjEsIDE1MSwgMjAwLCA2MCwgMjEsIDE1MSwgMjEyLCA3OSwgNjAsIDE1MiwgCi0gICAgMjUxLCA1OSwgMjIzLCA1NCwgNjAsIDE1MiwgMjI5LCAxNTEsIDI1MCwgMjU0LCAyMjgsIDExLCAyMTIsIDE4LCA2MCwgMTUyLCAKLSAgICAyNTAsIDE3MSwgMjU1LCA2NiwgMjIzLCA1NSwgMjUwLCAyNTUsIDIzMSwgMTUsIDI1MCwgMTk1LCA2MCwgMTUyLCAyMjksIAotICAgIDE1MSwgMjUwLCAyNTQsIDIyMSwgMjgsIDIyMywgNTQsIDYwLCAxNTIsIDI1MCwgNjgsIDIzMSwgNTgsIDYwLCAxNTIsIDIxNiwgCi0gICAgMTQyLCAyNTUsIDYzLCA2MCwgMTUyLCAyNDIsIDgxLCAyMjMsIDU1LCAyNDIsIDQ0LCA2MCwgMTUyLCAyNDIsIDgxLCAyMjMsIAotICAgIDU1LCAyNDIsIDUwLCA2MCwgMTUyLCAyNTQsIDI1LCAyMzQsIDEyOSwgMjQyLCA0NCwgNjAsIDE1MiwgMjU0LCAyNSwgMjM0LCAKLSAgICAxMjksIDI0MiwgNTAsIDYwLCA1LCAyMTMsIDU1LCAyMTYsIDEyOSwgNjAsIDUsIDIzMSwgMjMwLCAyMTYsIDEyOSwgNjAsIDEsIAotICAgIDE4MSwgNjAsIDEsIDIzNCwgMTM4LCA2MCwgMSwgMjQzLCAxMTAsIDYwLCAxLCAyNDIsIDIyNSwgNjAsIDEsIDIyOSwgMTU5LCAKLSAgICA2MCwgMSwgMjUwLCAyMTksIDYwLCAxLCAyNTAsIDkyLCA2MCwgMSwgMjM1LCAxMzksIDYwLCAxLCAyMjgsIDIzLCA2MCwgMSwgCi0gICAgMjE2LCAxMTUsIDYwLCAxLCAyMTYsIDEwNSwgNjAsIDEsIDI0OCwgODYsIDYwLCAxLCAyNDgsIDcwLCA2MCwgMSwgMjI4LCAKLSAgICAxOTgsIDYwLCAxLCAyMTgsIDUyLCA2MCwgMSwgMjE3LCAxNjEsIDYwLCAxLCAyNDgsIDE2NCwgNjAsIDEsIDI0NywgMjMyLCAKLSAgICA2MCwgMSwgMjA1LCA2MCwgMSwgMTkzLCA2MCwgMSwgMjI2LCAyMywgNjAsIDEsIDI1MiwgMTA3LCA2MCwgMSwgMjUxLCAxOTUsIAotICAgIDYwLCAxLCAxODgsIDYwLCAxLCAyMTYsIDE0MSwgNjAsIDEsIDIxNiwgMTMzLCA2MCwgMSwgMjQ1LCAyNDksIDYwLCAxLCAKLSAgICAyNDUsIDI0NCwgNjAsIDEsIDIxNCwgNDksIDYwLCAxLCAyMTIsIDc1LCA2MCwgMSwgMjEyLCAxMDksIDYwLCAxLCAyNTUsIAotICAgIDY5LCA2MCwgMSwgMTg2LCA2MCwgMSwgMjAzLCA2MCwgMSwgMjMzLCAxNTcsIDYwLCAxLCAyMjEsIDI0LCA2MCwgMSwgMjE5LCAKLSAgICAxNTcsIDYwLCAxLCAyMjIsIDIwMiwgNjAsIDEsIDE1OSwgNjAsIDEsIDYxLCA2MCwgMSwgMjMzLCAyNDEsIDYwLCAxLCAyNDQsIAotICAgIDQ2LCAyMDMsIDYwLCAxLCAyMzQsIDU1LCA2MCwgMSwgMjIzLCA4MSwgNjAsIDMwLCA1LCAyNTQsIDIzMiwgNjAsIDMwLCA1LCAKLSAgICA3MiwgNjAsIDMwLCA1LCAyMzYsIDI4LCA2MCwgMzAsIDUsIDY5LCA2MCwgMzAsIDUsIDIxNSwgOTIsIDYwLCAzMCwgNSwgCi0gICAgMTYxLCAxNDksIDYwLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCA2MCwgMzAsIDUsIDE2MSwgMTUwLCA2MCwgMzAsIDUsIDE2MSwgCi0gICAgMjMyLCAyMTQsIDYwLCAzMCwgNSwgNzQsIDYwLCAzMCwgNSwgMjQ1LCAxNjUsIDYwLCAzMCwgNSwgNzUsIDYwLCAzMCwgNSwgCi0gICAgMjI3LCA0OSwgNjAsIDUsIDIyMywgMTE4LCAyMTksIDI4LCAyMjksIDE2MCwgMjIzLCAxMTIsIDYwLCA1LCAyMjMsIDExNywgCi0gICAgMjUxLCAyNTIsIDYwLCAzMCwgNSwgMjIzLCAyMDIsIDcyLCA2MCwgMzAsIDUsIDIyMywgMjAyLCAyMzYsIDI4LCA2MCwgNSwgCi0gICAgMjI4LCAxMSwgMjEyLCAxOSwgMjMwLCA0NCwgMjQ4LCAxNjQsIDYwLCA1LCAyMTksIDI1NSwgMjMzLCA4NCwgNjAsIDE1MiwgCi0gICAgMjQyLCAxMSwgNjAsIDE1MiwgMjI2LCAxODQsIDYwLCA1LCAyMzMsIDg3LCAyMjMsIDU0LCA2MCwgNSwgMjEzLCA1OSwgMjIzLCAKLSAgICA1NCwgNjAsIDUsIDIzMywgODgsIDIxNiwgMTQyLCAyNTAsIDE5NSwgNjAsIDUsIDIzMSwgMTU5LCAyNTAsIDE5NSwgNjAsIDUsIAotICAgIDI0MiwgOTcsIDI1MCwgMTk2LCAyMjMsIDE5MywgNjAsIDUsIDI0MiwgOTcsIDIzMSwgMTUwLCAyMjMsIDE5MywgNjAsIDUsIAotICAgIDIzNSwgMTkxLCAyMzEsIDE1OSwgMjUwLCAxOTUsIDYwLCAyMTksIDE4LCA1LCAyMzMsIDg4LCAyMTYsIDE0MiwgMjUwLCAKLSAgICAxOTUsIDYwLCAyMTksIDE4LCA1LCAyMzEsIDE1OSwgMjUwLCAxOTUsIDYwLCAyMTksIDE4LCA1LCAyMzUsIDE5MSwgMjMxLCAKLSAgICAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgMSwgMTgxLCA2MCwgMjE5LCAxOCwgMSwgMjM0LCAxMzgsIDYwLCAyMTksIAotICAgIDE4LCAxLCAyNDMsIDExMCwgNjAsIDIxOSwgMTgsIDEsIDI0MiwgMjI1LCA2MCwgMjE5LCAxOCwgMSwgMjI5LCAxNTksIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyNTAsIDIxOSwgNjAsIDIxOSwgMTgsIDEsIDI1MCwgOTIsIDYwLCAyMTksIDE4LCAxLCAyMzUsIDEzOSwgCi0gICAgNjAsIDIxOSwgMTgsIDEsIDIyOCwgMjMsIDYwLCAyMTksIDE4LCAxLCAyMTYsIDExNSwgNjAsIDIxOSwgMTgsIDEsIDIxNiwgCi0gICAgMTA1LCA2MCwgMjE5LCAxOCwgMSwgMjQ4LCA4NiwgNjAsIDIxOSwgMTgsIDEsIDI0OCwgNzAsIDYwLCAyMTksIDE4LCAxLCAKLSAgICAyMjgsIDE5OCwgNjAsIDIxOSwgMTgsIDEsIDIxOCwgNTIsIDYwLCAyMTksIDE4LCAxLCAyMTcsIDE2MSwgNjAsIDIxOSwgMTgsIAotICAgIDEsIDI0OCwgMTY0LCA2MCwgMjE5LCAxOCwgMSwgMjQ3LCAyMzIsIDYwLCAyMTksIDE4LCAxLCAyMDUsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAxOTMsIDYwLCAyMTksIDE4LCAxLCAyMjYsIDIzLCA2MCwgMjE5LCAxOCwgMSwgMjUyLCAxMDcsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAyNTEsIDE5NSwgNjAsIDIxOSwgMTgsIDEsIDE4OCwgNjAsIDIxOSwgMTgsIDEsIDIxNiwgMTQxLCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMjE2LCAxMzMsIDYwLCAyMTksIDE4LCAxLCAyNDUsIDI0OSwgNjAsIDIxOSwgMTgsIDEsIDI0NSwgMjQ0LCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjE0LCA0OSwgNjAsIDIxOSwgMTgsIDEsIDIxMiwgNzUsIDYwLCAyMTksIDE4LCAxLCAyMTIsIDEwOSwgNjAsIAotICAgIDIxOSwgMTgsIDEsIDI1NSwgNjksIDYwLCAyMTksIDE4LCAxLCAxODYsIDYwLCAyMTksIDE4LCAxLCAyMDMsIDYwLCAyMTksIAotICAgIDE4LCAxLCAyMzMsIDE1NywgNjAsIDIxOSwgMTgsIDEsIDIyMSwgMjQsIDYwLCAyMTksIDE4LCAxLCAyMTksIDE1NywgNjAsIAotICAgIDIxOSwgMTgsIDEsIDIyMiwgMjAyLCA2MCwgMjE5LCAxOCwgMSwgMTU5LCA2MCwgMjE5LCAxOCwgMSwgNjEsIDYwLCAyMTksIAotICAgIDE4LCAxLCAyMzMsIDI0MSwgNjAsIDIxOSwgMTgsIDEsIDI0NCwgNDYsIDIxNCwgNDksIDYwLCAyMTksIDE4LCAxLCAyNDQsIAotICAgIDQ2LCAxODYsIDYwLCAyMTksIDE4LCAxLCAyNDQsIDQ2LCAyMDMsIDYwLCAyMzMsIDIzOSwgMjIzLCA1MiwgMjM0LCAxMzgsIAotICAgIDYwLCAyMzMsIDIzOSwgMjIzLCA1MiwgMjM0LCAxMzksIDI1MCwgMjU1LCAyMzEsIDE1LCAyNTAsIDE5NSwgNjAsIDI1MCwgCi0gICAgMTg0LCA1LCAxMDcsIDI1MSwgMjQ2LCA2MCwgMjUwLCAxODQsIDUsIDE3NywgMjUxLCAyNDYsIDYwLCAyNTAsIDE4NCwgNSwgCi0gICAgMjUwLCAxODUsIDIxNywgMjI4LCA2MCwgMjUwLCAxODQsIDUsIDIyMiwgMTI1LCAyNTUsIDY4LCA2MCwgMTYsIDI0NiwgNDYsIAotICAgIDI1MSwgNTQsIDYwLCAxNiwgMjI0LCAyMiwgMjIzLCAxMTksIDYwLCAxNiwgMjI2LCAyMDIsIDI0MywgMzksIDYwLCAxNiwgCi0gICAgMjI0LCAyMiwgMjIzLCAxMjAsIDIyMywgMTk1LCAyNDIsIDEyMSwgNjAsIDE2LCAyMjUsIDI0NCwgMTkzLCA2MCwgMTYsIAotICAgIDIyOCwgMTcwLCAyNTEsIDU0LCA2MCwgMTYsIDIyOCwgMTcwLCAyNTEsIDU1LCAyMjgsIDIsIDI1NSwgNjUsIDYwLCAxNiwgCi0gICAgMjI4LCAxNzAsIDI1MSwgNTUsIDI0MiwgOTYsIDI1NSwgNjUsIDYwLCAxNiwgMjI4LCAxNzAsIDI1MSwgNTUsIDI1MCwgMjU1LCAKLSAgICAyNTUsIDY1LCA2MCwgNSwgMjI0LCAyMywgMjMwLCAzNywgMjI0LCAyMywgMjQ3LCAxMTAsIDYwLCA1LCAyMjQsIDIzLCAyMzAsIAotICAgIDM3LCAyNDIsIDk1LCA2MCwgMTUyLCAyNTEsIDU4LCAyMjAsIDE4MywgMjQyLCAxOTEsIDIzMSwgNTksIDIyMywgMTk0LCA2MCwgCi0gICAgMTUyLCAyMzAsIDIzMywgMjEyLCAyNDcsIDI0MiwgMTkxLCAyMzEsIDU5LCAyMjMsIDE5NCwgNjAsIDE1MiwgMjI4LCAyLCAKLSAgICAyMTYsIDEzMCwgNjAsIDE1MiwgNzAsIDI1MSwgNzksIDIyMywgMTE0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjMxLCAxNTgsIAotICAgIDE4OCwgNjAsIDE1MiwgMjQ5LCAxODksIDI1MSwgNzksIDIyMywgMTE0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjIxLCAzMCwgCi0gICAgMTg4LCAyMjMsIDE0NywgMjE4LCAyMDAsIDUyLCAyMzMsIDY5LCAyMTgsIDIwMCwgNTIsIDIyMywgMTQ3LCAyMTgsIDIwMCwgCi0gICAgNSwgMiwgMjQ3LCA3MiwgMjMzLCA2OSwgMjE4LCAyMDAsIDUsIDIsIDI0NywgNzIsIDYwLCAxNTIsIDIzMywgNzksIDIzMSwgCi0gICAgMTYwLCAyMjMsIDU0LCA2MCwgMTUyLCAyMTYsIDIwNywgMjMxLCAxNjAsIDIyMywgNTQsIDY0LCAxLCAxODEsIDY0LCAxLCAKLSAgICAyMzQsIDEzOCwgNjQsIDEsIDI0MywgMTEwLCA2NCwgMSwgMjQyLCAyMjUsIDY0LCAxLCAyMjksIDE1OSwgNjQsIDEsIDI1MCwgCi0gICAgMjE5LCA2NCwgMSwgMjUwLCA5MiwgNjQsIDEsIDIzNSwgMTM5LCA2NCwgMSwgMjM1LCAxMTUsIDY0LCAxLCAyMjgsIDIzLCAKLSAgICA2NCwgMSwgMjI4LCAxODcsIDY0LCAxLCAyMTYsIDExNSwgNjQsIDEsIDIxNiwgMTA1LCA2NCwgMSwgMjQ4LCA4NiwgNjQsIDEsIAotICAgIDI0OCwgNzAsIDY0LCAxLCAyMjgsIDE5OCwgNjQsIDEsIDIxOCwgNTIsIDY0LCAxLCAyMTcsIDE2MSwgNjQsIDEsIDI0OCwgCi0gICAgMTY0LCA2NCwgMSwgMjQ3LCAyMzIsIDY0LCAxLCAyMDUsIDY0LCAxLCAxOTMsIDY0LCAxLCAyMjYsIDIzLCA2NCwgMSwgMjUyLCAKLSAgICAxMDcsIDY0LCAxLCAyNTEsIDE5NSwgNjQsIDEsIDE4OCwgNjQsIDEsIDE4NiwgNjQsIDEsIDIwMywgNjQsIDEsIDIzMywgCi0gICAgMTU3LCA2NCwgMSwgMjE0LCA0OSwgNjQsIDEsIDIyMiwgMjAyLCA2NCwgMSwgMTU5LCA2NCwgMSwgMjMyLCAyMTMsIDY0LCAxLCAKLSAgICA2MSwgNjQsIDEsIDIyMSwgOSwgNjEsIDY0LCAxLCA3MiwgNjQsIDEsIDIzNiwgMjgsIDY0LCAxLCA2OSwgNjQsIDEsIDIxNSwgCi0gICAgOTIsIDY0LCAxLCA3NCwgNjQsIDEsIDIzMCwgMjIxLCA3NCwgNjQsIDEsIDc1LCA2NCwgMSwgMjUzLCAxMDgsIDY0LCAzMCwgCi0gICAgNSwgMjE4LCAxNSwgMjU0LCAyMzIsIDY0LCAzMCwgNSwgMjU0LCAyMzIsIDY0LCAzMCwgNSwgNzIsIDY0LCAzMCwgNSwgMjM2LCAKLSAgICAyOCwgNjQsIDMwLCA1LCA2OSwgNjQsIDMwLCA1LCAyMTUsIDkyLCA2NCwgMzAsIDUsIDc0LCA2NCwgMzAsIDUsIDI1NCwgCi0gICAgMTA4LCA2NCwgMzAsIDUsIDIzMCwgMjIxLCAyMzYsIDI4LCA2NCwgMzAsIDUsIDIzMCwgMjIxLCA3NSwgNjQsIDMwLCA1LCAKLSAgICAxOTEsIDQ5LCA2NCwgNSwgMjUzLCAyNDIsIDY0LCA1LCA2MiwgNTUsIDY0LCA1LCAyMTQsIDEyOCwgNjQsIDUsIDIxNCwgCi0gICAgMTMzLCA2NCwgNSwgMjUzLCAxNTAsIDY0LCAyNDksIDEzMywgNSwgMTM4LCAxODYsIDY0LCAyNDksIDEzMywgNSwgMTM4LCAKLSAgICAyMDMsIDY0LCAyNDksIDEzMywgNSwgMTM4LCAyMTQsIDQ5LCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMTU5LCA2NCwgMSwgCi0gICAgMjQyLCAxMDksIDIyMiwgMjAyLCA2NCwgMjEsIDIxMiwgNzksIDY0LCAyMSwgMTE2LCA2NCwgMjEsIDEwOSwgNjQsIDIxLCAKLSAgICAxNjYsIDY0LCAyMSwgMTYzLCA2NCwgMjEsIDE4MCwgNjQsIDIxLCAxODksIDY0LCAyMSwgMTk4LCA2NCwgMjEsIDE5NSwgNjQsIAotICAgIDIxLCAyMDAsIDY0LCA1LCAyMzIsIDIyMSwgMjIyLCA5MSwgNjQsIDUsIDIyMiwgOTEsIDY0LCAxNiwgMjMyLCAyMDUsIDY0LCAKLSAgICAxNiwgMjQ5LCAxNTIsIDY0LCAxNiwgMjU0LCAxMjUsIDY0LCAxNiwgMjQzLCAyNCwgNjQsIDEsIDIyMSwgMjQsIDY0LCAxLCAKLSAgICAyMTksIDE1NywgNjQsIDEsIDE2MSwgMTQ5LCA2NCwgMSwgMTYxLCAyMjMsIDgyLCA2NCwgMSwgMTYxLCAxNTAsIDY0LCAxLCAKLSAgICAxNjEsIDIzMiwgMjE0LCA2NCwgMzAsIDUsIDE2MSwgMTQ5LCA2NCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgNjQsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgNjQsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCA2NCwgMSwgMjMwLCAyMjEsIDIyOSwgMTU5LCA2NCwgMSwgCi0gICAgMjMwLCAyMjEsIDIzNSwgMTE1LCA2NCwgMSwgMjMwLCAyMjEsIDI1MiwgMzEsIDY0LCAxLCAyMzAsIDIyMSwgMjUyLCAyNiwgCi0gICAgNjQsIDI0OSwgMTMzLCA1LCAyMzAsIDIyMSwgMTM4LCAyMDUsIDY0LCAyNDksIDEzMywgNSwgMjMwLCAyMjEsIDEzOCwgMTg4LCAKLSAgICA2NCwgMjQ5LCAxMzMsIDUsIDIzMCwgMjIxLCAxMzgsIDIzMywgMTU3LCA2NCwgMSwgMjIxLCAyOSwgMjM0LCAyMTgsIDIyMSwgCi0gICAgMjQsIDY0LCAzMCwgNSwgMjIxLCAyOSwgMjM0LCAyMTgsIDI0NSwgMjIsIDY0LCAxNjAsIDE1MiwgMjIxLCAyOSwgMjM0LCAKLSAgICAyMTgsIDI0MSwgMjMwLCA2NCwgMTYwLCAxNTIsIDIyMSwgMjksIDIzNCwgMjE4LCAyMzQsIDE4OSwgMjI1LCAyNTMsIDY0LCAKLSAgICAxLCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTcsIDE2MSwgNjQsIDEsIDIxMywgMjQ4LCAyMjQsIDI1MiwgCi0gICAgMjM0LCAyMTgsIDIyNSwgMiwgNjQsIDMwLCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyNDUsIDIyLCA2NCwgCi0gICAgMzAsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIxNSwgMTgzLCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAKLSAgICAyMzQsIDIxOCwgMjE2LCAyNDAsIDY0LCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTYsIDIzOSwgNjQsIDUsIAotICAgIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIxNiwgMjM4LCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIAotICAgIDIxOCwgMjE2LCAyMzcsIDY0LCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTYsIDIzNiwgNjQsIDEsIDI0NSwgCi0gICAgMTc1LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIyOCwgMTk4LCA2NCwgMSwgMjQ1LCAxNzUsIDIyNCwgMjUyLCAyMzQsIDIxOCwgCi0gICAgMjEyLCAxNjgsIDY0LCAxLCAyNDUsIDE3NSwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyNDIsIDE5MywgNjQsIDMwLCA1LCAyNDMsIAotICAgIDM1LCAyMzQsIDIxOCwgNzIsIDY0LCAzMCwgNSwgMjM0LCAxOTQsIDIyNywgOTksIDY0LCAzMCwgNSwgMjM0LCAxOTQsIDY5LCAKLSAgICA2NCwgMzAsIDUsIDIzNCwgMTk0LCAyNDUsIDE2NSwgNjQsIDEsIDIyMSwgOSwgMTgxLCA2NCwgMSwgMjIxLCA5LCAyMzQsIAotICAgIDEzOCwgNjQsIDEsIDIyMSwgOSwgMjQzLCAxMTAsIDY0LCAxLCAyMjEsIDksIDI1MCwgMjE5LCA2NCwgMSwgMjIxLCA5LCAKLSAgICAyMTIsIDEwOSwgNjQsIDEsIDIyMSwgOSwgMjI4LCAyMywgNjQsIDEsIDIyMSwgOSwgMjQ4LCAxNjQsIDY0LCAxLCAyMjEsIDksIAotICAgIDIwNSwgNjQsIDEsIDIyMSwgOSwgMjI2LCAyMywgNjQsIDEsIDIyMSwgOSwgMjQ0LCAxNjQsIDY0LCAxLCAyMjEsIDksIDI1MiwgCi0gICAgMTA3LCA2NCwgMSwgMjIxLCA5LCAyMTcsIDE2MSwgNjQsIDEsIDIyMSwgOSwgMTU5LCA2NCwgMjQ5LCAxMzMsIDUsIDIyMSwgCi0gICAgOSwgMTM4LCAyMTQsIDQ5LCA2NCwgMzAsIDUsIDIyMSwgOSwgMjU0LCAyMzIsIDY0LCAzMCwgNSwgMjIxLCA5LCA3NCwgNjQsIAotICAgIDMwLCA1LCAyMjEsIDksIDE5MSwgNDksIDY0LCAzMCwgNSwgMjIxLCA5LCA0MCwgMjEzLCAxMDUsIDY0LCA1LCAyMjEsIDksIAotICAgIDIxNiwgMjM5LCA2NCwgNSwgMjIxLCA5LCAyMTYsIDIzOCwgNjQsIDUsIDIyMSwgOSwgMjE2LCAyMzYsIDY0LCA1LCAyMjEsIAotICAgIDksIDIxNiwgMjM1LCA2NCwgNSwgMjIxLCA5LCAyNDksIDkxLCAyMTYsIDIzOSwgNjQsIDUsIDIyMSwgOSwgMjQ5LCA5MSwgCi0gICAgMjE2LCAyMzgsIDY0LCA1LCAyMjEsIDksIDI0OSwgOTEsIDI0NSwgMTExLCAyMTYsIDI0MSwgNjQsIDEsIDIyMywgMzksIAotICAgIDIyNiwgMTkwLCAyNDQsIDE2NCwgNjQsIDUsIDIyMywgMzksIDIyNiwgMTkwLCAyMTYsIDIzNiwgNjQsIDIyMSwgOSwgMjEsIAotICAgIDIxMiwgNzksIDY0LCAyMjEsIDksIDIxLCAxMTYsIDY0LCAyMjEsIDksIDIxLCAxMDksIDY0LCAyMjEsIDksIDIxLCAxNjYsIAotICAgIDY0LCAyMjEsIDksIDIxLCAxNjMsIDY0LCAyMjEsIDksIDIxLCAxODAsIDY0LCAyMjEsIDksIDIxLCAxODksIDY0LCAyMjEsIAotICAgIDksIDIxLCAxOTgsIDY0LCAyMjEsIDksIDIxLCAxOTUsIDY0LCAyMjEsIDksIDIxLCAyMDAsIDY0LCA1LCAyMzQsIDEzMiwgCi0gICAgMjE2LCAyNDAsIDY0LCA1LCAyMzQsIDEzMiwgMjE2LCAyMzgsIDY0LCAzMCwgNSwgMjU0LCA5OCwgNjEsIDY0LCAzMCwgNSwgCi0gICAgMjU0LCA5OCwgMjU0LCAxMDgsIDY0LCAxNiwgMjIxLCA5LCAxMTYsIDY0LCAxNiwgMjIxLCA5LCAyNDQsIDI1MywgMTAwLCA2LCAKLSAgICAxLCAyNTQsIDMyLCAxMDAsIDYsIDEsIDI1MiwgNzEsIDEwMCwgNiwgMSwgMjQzLCA4MiwgMTAwLCA2LCAxLCAyNDcsIDgyLCAKLSAgICAxMDAsIDYsIDEsIDI0NSwgMTA4LCAxMDAsIDYsIDEsIDIxNCwgMTQxLCAxMDAsIDYsIDEsIDIxMiwgODIsIDEwMCwgNiwgMSwgCi0gICAgMjE4LCAxMSwgMTAwLCA2LCAxLCAyMzUsIDI1MSwgMTAwLCA2LCAxLCAyMzQsIDIzOSwgMTAwLCA2LCAxLCAyMzMsIDEwNCwgCi0gICAgMTAwLCA2LCAxLCAyMzEsIDI0OCwgMTAwLCA2LCAxLCAyMzAsIDE1LCAxMDAsIDYsIDEsIDIyNywgNjIsIDEwMCwgNiwgMSwgCi0gICAgMjI2LCAxNDUsIDEwMCwgNiwgMSwgMjEyLCA3MSwgMTAwLCA2LCAxLCAyMjQsIDYxLCAxMDAsIDYsIDEsIDIyMiwgMTU5LCAKLSAgICAxMDAsIDYsIDEsIDIxOCwgMSwgMTAwLCA2LCAxLCAyMTUsIDE2MCwgMTAwLCA2LCAxLCAyMjYsIDE2LCAxMDAsIDYsIDEsIAotICAgIDIzNCwgMTI3LCAxMDAsIDYsIDEsIDI0MiwgMjE3LCAxMDAsIDYsIDEsIDIyNCwgMjE3LCAxMDAsIDYsIDEsIDIyMCwgMjAwLCAKLSAgICAxMDAsIDYsIDEsIDI1MCwgMzQsIDEwMCwgNiwgMSwgMjUwLCAxOTUsIDEwMCwgNiwgMSwgMjM1LCAxMDMsIDEwMCwgNiwgMSwgCi0gICAgMjQ5LCAyMzMsIDEwMCwgNiwgMSwgMjUwLCA3OSwgMTAwLCA2LCAxLCAyMTMsIDE1MSwgMTAwLCA2LCAxLCAyMzUsIDExMywgCi0gICAgMTAwLCA2LCAxLCAyNDIsIDI0LCAxMDAsIDYsIDEsIDI0MSwgMjIyLCAxMDAsIDYsIDEsIDI0MSwgMTYwLCAxMDAsIDYsIDEsIAotICAgIDIxNCwgNiwgMTAwLCA2LCAxLCAyNDEsIDI0MywgMTAwLCA2LCAxLCAyNDEsIDUxLCAxMDAsIDEsIDI1NCwgMzIsIDEwMCwgMSwgCi0gICAgMjUyLCA3MSwgMTAwLCAxLCAyNDMsIDgyLCAxMDAsIDEsIDI0NywgODIsIDEwMCwgMSwgMjQ1LCAxMDgsIDEwMCwgMSwgMjE0LCAKLSAgICAxNDEsIDEwMCwgMSwgMjEyLCA4MiwgMTAwLCAxLCAyMTgsIDExLCAxMDAsIDEsIDIzNSwgMjUxLCAxMDAsIDEsIDIzNCwgCi0gICAgMjM5LCAxMDAsIDEsIDIzMywgMTA0LCAxMDAsIDEsIDIzMSwgMjQ4LCAxMDAsIDEsIDIzMCwgMTUsIDEwMCwgMSwgMjI3LCAKLSAgICA2MiwgMTAwLCAxLCAyMjYsIDE0NSwgMTAwLCAxLCAyMTIsIDcxLCAxMDAsIDEsIDIyNCwgNjEsIDEwMCwgMSwgMjIyLCAxNTksIAotICAgIDEwMCwgMSwgMjE4LCAxLCAxMDAsIDEsIDIxNSwgMTYwLCAxMDAsIDEsIDIyNiwgMTYsIDEwMCwgMSwgMjM0LCAxMjcsIDEwMCwgCi0gICAgMSwgMjQyLCAyMTcsIDEwMCwgMSwgMjI0LCAyMTcsIDEwMCwgMSwgMjIwLCAyMDAsIDEwMCwgMSwgMjUwLCAzNCwgMTAwLCAxLCAKLSAgICAyNTAsIDE5NSwgMTAwLCAxLCAyMzUsIDEwMywgMTAwLCAxLCAyNDksIDIzMywgMTAwLCAxLCAyNTAsIDc5LCAxMDAsIDEsIAotICAgIDIxMywgMTUxLCAxMDAsIDEsIDIzNSwgMTEzLCAxMDAsIDEsIDI0MiwgMjQsIDEwMCwgMSwgMjQxLCAyMjIsIDEwMCwgMSwgCi0gICAgMjQxLCAxNjAsIDEwMCwgMSwgMjE0LCA2LCAxMDAsIDEsIDI0MSwgMjQzLCAxMDAsIDEsIDI0MSwgNTEsIDEwMCwgMSwgMjQ0LCAKLSAgICA5MCwgMTAwLCAxLCAyMTIsIDIzNywgMTAwLCAxLCAyNDUsIDEyMiwgMTAwLCAxLCAyMTYsIDU4LCAyNDMsIDgyLCAxMDAsIDEsIAotICAgIDI1NCwgMTAzLCAxMDAsIDIyNiwgMTQzLCAyMjEsIDU3LCA1OSwgMSwgMTAwLCAyMzAsIDE1LCAyMywgOTcsIDIzNCwgNjcsIAotICAgIDIzLCA5NywgMjE5LCAxNTAsIDIzLCA5NywgMjI5LCA1NywgMjMsIDk3LCAyMTcsIDU1LCAyMywgOTcsIDIxOSwgMTM5LCAyMywgCi0gICAgOTcsIDIyMywgMTc5LCAyMywgOTcsIDIzMSwgMzAsIDIzLCA5NywgMjI1LCAyMjcsIDIzLCA5NywgMjE5LCAxNDcsIDIzLCAKLSAgICA5NywgMjIwLCA3NiwgMjMsIDk3LCAyMTksIDE0NCwgMjMsIDk3LCAyMzYsIDUxLCAyMywgOTcsIDI0OSwgMjM5LCAyMywgOTcsIAotICAgIDIxOSwgMTU0LCAyMywgOTcsIDI1MCwgNDMsIDIzLCA5NywgMjM0LCAxMTYsIDIzLCA5NywgMjE3LCAxMjYsIDIzLCA5NywgCi0gICAgMjI2LCA3LCAyMywgOTcsIDI0MSwgMTU4LCAyMywgOTcsIDIyOSwgNTMsIDIzLCA5NywgMjE5LCAxNDgsIDIzLCA5NywgMjI5LCAKLSAgICA0NywgMjMsIDk3LCAyMjksIDUxLCAyMywgOTcsIDIxNywgNTIsIDIzLCA5NywgMjIzLCAxNjcsIDIzLCA5NywgMjE5LCAxNDYsIAotICAgIDIzLCA5NywgMjIzLCAxNzcsIDIzLCA5NywgMjM0LCAyMjMsIDIzLCA5NywgMjMxLCAyMywgMjMsIDk3LCAyMzQsIDIyNiwgCi0gICAgMjMsIDk3LCAyMjUsIDIyMiwgMjMsIDk3LCAyMjUsIDIyMCwgMjMsIDk3LCAyMjUsIDIwOCwgMjMsIDk3LCAyMjUsIDIxNiwgCi0gICAgMjMsIDk3LCAyMjUsIDIxNCwgMjMsIDk3LCAyMjUsIDIxMSwgMjMsIDk3LCAyMjUsIDIxMywgMjMsIDk3LCAyMjUsIDIxMCwgCi0gICAgMjMsIDk3LCAyMjUsIDIxNSwgMjMsIDk3LCAyMjUsIDIyNSwgMjMsIDk3LCAyMjUsIDIyNiwgMjMsIDk3LCAyMjUsIDIwOSwgCi0gICAgMjMsIDk3LCAyMjUsIDIxOSwgMjMsIDk3LCAyMzQsIDIyNCwgMjMsIDk3LCAyMzQsIDIyMiwgMjMsIDk3LCAyMjAsIDY5LCAKLSAgICAyMywgOTcsIDIyMCwgNjcsIDIzLCA5NywgMjIwLCA1OSwgMjMsIDk3LCAyMjAsIDYyLCAyMywgOTcsIDIyMCwgNjgsIDIzLCAKLSAgICA5NywgMjIwLCA2NCwgMjMsIDk3LCAyMjAsIDYzLCAyMywgOTcsIDIyMCwgNjEsIDIzLCA5NywgMjIwLCA3MiwgMjMsIDk3LCAKLSAgICAyMjAsIDc0LCAyMywgOTcsIDIyMCwgNzUsIDIzLCA5NywgMjIwLCA3MCwgMjMsIDk3LCAyMjAsIDYwLCAyMywgOTcsIDIyMCwgCi0gICAgNjUsIDIzLCA5NywgMjIwLCA3MywgMjMsIDk3LCAyNTAsIDI3LCAyMywgOTcsIDI1MCwgMjUsIDIzLCA5NywgMjUwLCAxMDIsIAotICAgIDIzLCA5NywgMjUwLCAxMDAsIDIzLCA5NywgMjI2LCAxNjAsIDIzLCA5NywgMjM2LCA0NiwgMjMsIDk3LCAyMzYsIDM3LCAyMywgCi0gICAgOTcsIDIzNiwgNDUsIDIzLCA5NywgMjM2LCA0MiwgMjMsIDk3LCAyMzYsIDQwLCAyMywgOTcsIDIzNiwgNDQsIDIzLCA5NywgCi0gICAgMjE5LCAxNTEsIDIzLCA5NywgMjM2LCA0OSwgMjMsIDk3LCAyMzYsIDUwLCAyMywgOTcsIDIzNiwgMzgsIDIzLCA5NywgMjM2LCAKLSAgICA0MywgMjMsIDk3LCAyMTMsIDE3LCAyMywgOTcsIDI0OSwgMjM4LCAyMywgOTcsIDI1MCwgMjgsIDIzLCA5NywgMjUwLCAyNiwgCi0gICAgMjMsIDk3LCAyNTAsIDEwMywgMjMsIDk3LCAyNTAsIDEwMSwgMjMsIDk3LCAyNTAsIDQxLCAyMywgOTcsIDI1MCwgNDIsIDIzLCAKLSAgICA5NywgMjUwLCAyOSwgMjMsIDk3LCAyNTAsIDEwNCwgMjMsIDk3LCAyMjYsIDUsIDIzLCA5NywgMjM0LCAyMjUsIDIzLCA5NywgCi0gICAgMjE5LCAxNTIsIDIzLCA5NywgMjEzLCAyMywgMjMsIDk3LCAyMzQsIDU4LCAyMywgOTcsIDIyOSwgNDksIDIzLCA5NywgMjI5LCAKLSAgICA1NSwgMjMsIDk3LCAyMjksIDU0LCAyMywgOTcsIDIxNywgNDksIDIzLCA5NywgMjQ0LCA3MiwgMjMsIDEzNSwgMjQ0LCA3MiwgCi0gICAgMjMsIDEzNSwgNjEsIDIzLCAxMzUsIDI1NCwgMTQ4LCAyMywgMTM1LCAxODYsIDIzLCAxMzUsIDIxMywgODAsIDIzLCAxMzUsIAotICAgIDI0NSwgNzYsIDIzLCAxMzUsIDc0LCAyMywgMTM1LCAyMTMsIDI3LCAyMywgMTM1LCAyMTMsIDM4LCAyMywgMTM1LCA3NSwgCi0gICAgMjMsIDEzNSwgMjE0LCA0OSwgMjMsIDEzNSwgMjE0LCA0NiwgMjMsIDEzNSwgMjI3LCA5OSwgMjMsIDEzNSwgMjEyLCAyMzUsIAotICAgIDIzLCAxMzUsIDY5LCAyMywgMTM1LCAyMTMsIDI1MiwgMjMsIDEzNSwgMjE0LCA2LCAyMywgMTM1LCAyMTMsIDIzNSwgMjMsIAotICAgIDEzNSwgMjEyLCAyMDMsIDIzLCAxMzUsIDI0NSwgMjIsIDIzLCAxMzUsIDIxMiwgMjU1LCAyMywgMTM1LCA3MiwgMjMsIDEzNSwgCi0gICAgMjU1LCA2MCwgMjMsIDEzNSwgMjU1LCA1OSwgMjMsIDEzNSwgMjEzLCA5NCwgMjMsIDEzNSwgMjEzLCA5MiwgMjMsIDEzNSwgCi0gICAgMjQ1LCA3NCwgMjMsIDEzNSwgMjQ1LCA3MywgMjMsIDEzNSwgMjQ1LCA3NSwgMjMsIDEzNSwgMjEzLCAyNiwgMjMsIDEzNSwgCi0gICAgMjEzLCAyNSwgMjMsIDEzNSwgMjI3LCAyMDQsIDIzLCAxMzUsIDIyNywgMjA1LCAyMywgMTM1LCAyMjcsIDE5OCwgMjMsIAotICAgIDEzNSwgMjI3LCAyMDMsIDIzLCAxMzUsIDIyNywgMjAxLCAyMywgMTM1LCAyMTIsIDIyOSwgMjMsIDEzNSwgMjEyLCAyMjgsIAotICAgIDIzLCAxMzUsIDIxMiwgMjI3LCAyMywgMTM1LCAyMTIsIDIzMCwgMjMsIDEzNSwgMjEyLCAyMzEsIDIzLCAxMzUsIDIxNSwgCi0gICAgMjUyLCAyMywgMTM1LCAyMTUsIDI1MSwgMjMsIDEzNSwgMjE1LCAyNTAsIDIzLCAxMzUsIDIxNSwgMjQ3LCAyMywgMTM1LCAKLSAgICAyMTUsIDI0OCwgMjMsIDEzNSwgMjEyLCAyMDIsIDIzLCAxMzUsIDIxMiwgMTk5LCAyMywgMTM1LCAyMTIsIDIwMCwgMjMsIAotICAgIDEzNSwgMjEyLCAxOTQsIDIzLCAxMzUsIDIxMiwgMTk1LCAyMywgMTM1LCAyMTIsIDE5NiwgMjMsIDEzNSwgMjEyLCAxOTgsIAotICAgIDIzLCAxMzUsIDI0NSwgMTYsIDIzLCAxMzUsIDI0NSwgMTgsIDIzLCAxMzUsIDIxMiwgMjU0LCAyMywgMTM1LCAyNDAsIDE0NSwgCi0gICAgMjMsIDEzNSwgMjQwLCAxMzcsIDIzLCAxMzUsIDI0MCwgMTQwLCAyMywgMTM1LCAyNDAsIDEzOCwgMjMsIDEzNSwgMjQwLCAKLSAgICAxNDIsIDIzLCAxMzUsIDI0MCwgMTQ0LCAyMywgMTM1LCAyNTMsIDIwNCwgMjMsIDEzNSwgMjUzLCAyMDEsIDIzLCAxMzUsIAotICAgIDI1MywgMTk5LCAyMywgMTM1LCAyNTMsIDIwMCwgMjMsIDEzNSwgMjE5LCAxNTUsIDIzLCAxMzUsIDI1NSwgNjEsIDIzLCAKLSAgICAxMzUsIDIxMywgOTMsIDIzLCAxMzUsIDIxMywgMjQsIDIzLCAxMzUsIDIyNywgMjAwLCAyMywgMTM1LCAyMjcsIDE5OSwgMjMsIAotICAgIDg5LCAyMzQsIDY3LCAyMywgODksIDIxOSwgMTUwLCAyMywgODksIDIzNCwgNjAsIDIzLCA4OSwgMjI5LCA1NywgMjMsIDg5LCAKLSAgICAyMjksIDU1LCAyMywgODksIDIyOSwgNTQsIDIzLCA4OSwgMjE3LCA1NSwgMjMsIDg5LCAyMjMsIDE3OSwgMjMsIDg5LCAyMjMsIAotICAgIDE3NCwgMjMsIDg5LCAyMjMsIDE3MSwgMjMsIDg5LCAyMjMsIDE2NCwgMjMsIDg5LCAyMjMsIDE1OSwgMjMsIDg5LCAyMjMsIAotICAgIDE1NCwgMjMsIDg5LCAyMjMsIDE2NSwgMjMsIDg5LCAyMjMsIDE3NywgMjMsIDg5LCAyMzEsIDMwLCAyMywgODksIDIyNSwgCi0gICAgMjI3LCAyMywgODksIDIyNSwgMjE2LCAyMywgODksIDIyMCwgNzYsIDIzLCA4OSwgMjE5LCAxNDQsIDIzLCA4OSwgMjM2LCAKLSAgICA1MSwgMjMsIDg5LCAyNDksIDIzOSwgMjMsIDg5LCAyNTAsIDQzLCAyMywgODksIDIzNCwgMTE2LCAyMywgODksIDIxNywgCi0gICAgMTI2LCAyMywgODksIDIyNiwgNywgMjMsIDg5LCAyNDEsIDE1OCwgMjMsIDg5LCAyMzQsIDYxLCAyMywgODksIDIzNCwgNTksIAotICAgIDIzLCA4OSwgMjI5LCA1MywgMjMsIDg5LCAyMjksIDQ3LCAyMywgODksIDIyOSwgNDksIDIzLCA4OSwgMjI5LCA1MiwgMjMsIAotICAgIDg5LCAyMjksIDQ4LCAyMywgODksIDIxNywgNTIsIDIzLCA4OSwgMjE3LCA0OSwgMjMsIDg5LCAyMjMsIDE3MiwgMjMsIDg5LCAKLSAgICAyMjMsIDE2NywgMjMsIDg5LCAyMjMsIDE1MywgMjMsIDg5LCAyMjMsIDE1MiwgMjMsIDg5LCAyMTksIDE0NiwgMjMsIDg5LCAKLSAgICAyMjMsIDE2OSwgMjMsIDg5LCAyMjMsIDE2OCwgMjMsIDg5LCAyMjMsIDE2MSwgMjMsIDg5LCAyMjMsIDE2MywgMjMsIDg5LCAKLSAgICAyMjMsIDE3NiwgMjMsIDg5LCAyMjMsIDE1NiwgMjMsIDg5LCAyMjMsIDE2NiwgMjMsIDg5LCAyMjMsIDE3NSwgMjMsIDg5LCAKLSAgICAyMjMsIDE1MSwgMjMsIDg5LCAyMzEsIDI2LCAyMywgODksIDIzMSwgMjEsIDIzLCA4OSwgMjMxLCAyMywgMjMsIDg5LCAyMzEsIAotICAgIDIwLCAyMywgODksIDIzMSwgMTgsIDIzLCA4OSwgMjMxLCAyNCwgMjMsIDg5LCAyMzEsIDI5LCAyMywgODksIDIzMSwgMjcsIAotICAgIDIzLCA4OSwgMjM0LCAyMjYsIDIzLCA4OSwgMjI1LCAyMTgsIDIzLCA4OSwgMjI1LCAyMTksIDIzLCA4OSwgMjI1LCAyMjQsIAotICAgIDIzLCA4OSwgMjM0LCAyMjQsIDIzLCA4OSwgMjIwLCA2OSwgMjMsIDg5LCAyMjAsIDU5LCAyMywgODksIDIyMCwgNjIsIDIzLCAKLSAgICA4OSwgMjIwLCA2NCwgMjMsIDg5LCAyMjYsIDE2MCwgMjMsIDg5LCAyMzYsIDQ2LCAyMywgODksIDIzNiwgMzksIDIzLCA4OSwgCi0gICAgMjE5LCAxNTEsIDIzLCA4OSwgMjM2LCA0NywgMjMsIDg5LCAyMTMsIDE3LCAyMywgODksIDIxMywgMTMsIDIzLCA4OSwgMjEzLCAKLSAgICAxNCwgMjMsIDg5LCAyMjYsIDUsIDIzLCA4OSwgMjM0LCAyMjUsIDIzLCA4OSwgMjQxLCAxNTYsIDIzLCA4OSwgMjQxLCAxNTQsIAotICAgIDIzLCA4OSwgMjQxLCAxNTcsIDIzLCA4OSwgMjQxLCAxNTUsIDIzLCA4OSwgMjEzLCAyMywgMjMsIDg5LCAyMzQsIDYzLCAyMywgCi0gICAgODksIDIzNCwgNjIsIDIzLCA4OSwgMjM0LCA2NiwgMjMsIDg5LCAyMzQsIDY0LCAyMywgODksIDIzNCwgNjUsIDIzLCA4OSwgCi0gICAgMjE5LCAxNDgsIDI4LCA0LCAxNTksIDI4LCA0LCAyNDAsIDIxMiwgMjgsIDQsIDI0MSwgMTY1LCAyOCwgNCwgMjQyLCAyNywgCi0gICAgMjgsIDQsIDI0MSwgMjA0LCAyOCwgNCwgMjQxLCAyMjIsIDI4LCA0LCAyNDEsIDU0LCAyOCwgNCwgMjQxLCA1MywgMjgsIDQsIAotICAgIDIzMywgMTU3LCAyOCwgNCwgMjMyLCAxNTYsIDI4LCA0LCAyMzMsIDEzLCAyOCwgNCwgMjMzLCAxNTYsIDI4LCA0LCAyMzMsIAotICAgIDc0LCAyOCwgNCwgMjMzLCA4MiwgMjgsIDQsIDIzMiwgMjA4LCAyOCwgNCwgMjMyLCAxMjksIDI4LCA0LCAyNDEsIDE3NCwgCi0gICAgMjgsIDQsIDI0MSwgMTY4LCAyOCwgNCwgMjQxLCAxNzAsIDI4LCA0LCAyNDEsIDE3MywgMjgsIDQsIDI0MSwgMTcxLCAyOCwgCi0gICAgNCwgMjQxLCAxNzIsIDI4LCA0LCAyNDEsIDE2OSwgMjgsIDQsIDI0MSwgMTY3LCAyOCwgNCwgMTg4LCAyOCwgNCwgMjMwLCAKLSAgICAxNzIsIDI4LCA0LCAyMzEsIDQyLCAyOCwgNCwgMjMyLCA0MSwgMjgsIDQsIDIzMSwgMTQ1LCAyOCwgNCwgMjMxLCAxNTYsIAotICAgIDI4LCA0LCAyMzAsIDIzMSwgMjgsIDQsIDIzMCwgMTE0LCAyOCwgNCwgMjE4LCAxMTAsIDI4LCA0LCAyMTgsIDEwNCwgMjgsIAotICAgIDQsIDIxOCwgMTA2LCAyOCwgNCwgMjE4LCAxMDksIDI4LCA0LCAyMTgsIDEwNywgMjgsIDQsIDIxOCwgMTA4LCAyOCwgNCwgCi0gICAgMjE4LCAxMDUsIDI4LCA0LCAyMTgsIDEwMywgMjgsIDQsIDIwMywgMjgsIDQsIDIyMywgNTEsIDI4LCA0LCAyMjMsIDE4OCwgCi0gICAgMjgsIDQsIDIyNCwgNzQsIDI4LCA0LCAyMjQsIDEsIDI4LCA0LCAyMjQsIDIxLCAyOCwgNCwgMjIzLCAxMTIsIDI4LCA0LCAKLSAgICAyMjMsIDIxLCAyOCwgNCwgMjIyLCAyMDIsIDI4LCA0LCAyMTksIDI3LCAyOCwgNCwgMjIwLCAxMTcsIDI4LCA0LCAyMjIsIAotICAgIDIwMCwgMjgsIDQsIDIyMiwgODksIDI4LCA0LCAyMjIsIDEwMCwgMjgsIDQsIDIxOSwgMjQyLCAyOCwgNCwgMjE4LCAxOTgsIAotICAgIDI4LCA0LCAyMjEsIDI0LCAyOCwgNCwgMjIwLCAxNTAsIDI4LCA0LCAyMjAsIDIxMiwgMjgsIDQsIDIyMSwgMjAsIDI4LCA0LCAKLSAgICAyMjAsIDI0MSwgMjgsIDQsIDIyMCwgMjQzLCAyOCwgNCwgMjIwLCAxODcsIDI4LCA0LCAyMjAsIDEzNCwgMjgsIDQsIDIyNCwgCi0gICAgMjMyLCAyOCwgNCwgMjI0LCAxNzUsIDI4LCA0LCAyMjQsIDE5OCwgMjgsIDQsIDIyNCwgMjMxLCAyOCwgNCwgMjI0LCAyMTIsIAotICAgIDI4LCA0LCAyMjQsIDIxMywgMjgsIDQsIDIyNCwgMTg3LCAyOCwgNCwgMjI0LCAxODYsIDI4LCA0LCAyMjQsIDEzMSwgMjgsIAotICAgIDQsIDIyNCwgMTI3LCAyOCwgNCwgMjI0LCAxMzAsIDI4LCA0LCAyMjQsIDEyOCwgMjgsIDQsIDIyNCwgMTI5LCAyOCwgNCwgCi0gICAgMjI0LCAyMTAsIDI4LCA0LCAyMjQsIDIwNCwgMjgsIDQsIDIyNCwgMjA2LCAyOCwgNCwgMjI0LCAyMDksIDI4LCA0LCAyMjQsIAotICAgIDIwNywgMjgsIDQsIDIyNCwgMjA4LCAyOCwgNCwgMjI0LCAyMDUsIDI4LCA0LCAyMjQsIDIwMywgMjgsIDQsIDIyNCwgMTk5LCAKLSAgICAyOCwgNCwgMjI0LCAyMDIsIDI4LCA0LCAyMjQsIDIwMCwgMjgsIDQsIDIyNCwgMjAxLCAyOCwgNCwgMjUyLCAxMDcsIDI4LCAKLSAgICA0LCAyNTEsIDU0LCAyOCwgNCwgMjUxLCAxODQsIDI4LCA0LCAyNTIsIDEwNiwgMjgsIDQsIDI1MSwgMjQyLCAyOCwgNCwgCi0gICAgMjUxLCAyNTEsIDI4LCA0LCAyNTEsIDEyOCwgMjgsIDQsIDI1MSwgMTIsIDI4LCA0LCAyMTUsIDEsIDI4LCA0LCAyMTQsIDk5LCAKLSAgICAyOCwgNCwgMjE0LCAxNTQsIDI4LCA0LCAyMTUsIDAsIDI4LCA0LCAyMTQsIDIyNywgMjgsIDQsIDIxNCwgMjMyLCAyOCwgNCwgCi0gICAgMjE0LCAxMTksIDI4LCA0LCAyMTQsIDkxLCAyOCwgNCwgMjE4LCA1MiwgMjgsIDQsIDIxNiwgODIsIDI4LCA0LCAyMTcsIDcxLCAKLSAgICAyOCwgNCwgMjE4LCA0OSwgMjgsIDQsIDIxNywgMjE5LCAyOCwgNCwgMjE3LCAyMjksIDI4LCA0LCAxMDgsIDI4LCA0LCAyMTYsIAotICAgIDQ1LCAyOCwgNCwgMjUwLCAyMTksIDI4LCA0LCAyNDksIDUzLCAyOCwgNCwgMjQ5LCAyNDQsIDI4LCA0LCAyNTAsIDIxOCwgCi0gICAgMjgsIDQsIDI1MCwgMTE2LCAyOCwgNCwgMjUwLCAxMjQsIDI4LCA0LCAyNDksIDE3NSwgMjgsIDQsIDI0OSwgMjQsIDI4LCA0LCAKLSAgICAyMTMsIDE1MywgMjgsIDQsIDIxMywgMTI5LCAyOCwgNCwgMjEzLCAxNDUsIDI4LCA0LCAyMTMsIDE1MiwgMjgsIDQsIDIxMywgCi0gICAgMTQ5LCAyOCwgNCwgMjEzLCAxNTAsIDI4LCA0LCAyMTMsIDEzNiwgMjgsIDQsIDIxMywgMTM1LCAyOCwgNCwgMjEzLCAxMjQsIAotICAgIDI4LCA0LCAyMTMsIDEyMCwgMjgsIDQsIDIxMywgMTIzLCAyOCwgNCwgMjEzLCAxMjEsIDI4LCA0LCAyMTMsIDEyMiwgMjgsIAotICAgIDQsIDIwNSwgMjgsIDQsIDIyOCwgOTIsIDI4LCA0LCAyMjksIDY0LCAyOCwgNCwgMjMwLCA0MywgMjgsIDQsIDIyOSwgMTg0LCAKLSAgICAyOCwgNCwgMjI5LCAxODcsIDI4LCA0LCAyMjgsIDE4NSwgMjgsIDQsIDIyOCwgMzEsIDI4LCA0LCAyMjgsIDIzLCAyOCwgNCwgCi0gICAgMjI3LCAyNDcsIDI4LCA0LCAyMjgsIDEwLCAyOCwgNCwgMjI4LCAyMiwgMjgsIDQsIDIyOCwgMTYsIDI4LCA0LCAyMjgsIDE3LCAKLSAgICAyOCwgNCwgMjI3LCAyNTMsIDI4LCA0LCAyMjcsIDIzOSwgMjgsIDQsIDI0MiwgMTU2LCA2MSwgMjgsIDQsIDI0MiwgMTU2LCAKLSAgICA2OSwgMjgsIDQsIDI0MiwgMTU2LCA3MiwgMjgsIDQsIDI0MiwgMTU2LCAyNTQsIDIzMiwgMjgsIDQsIDI0MiwgMTU2LCAyNDUsIAotICAgIDE2NSwgMjgsIDQsIDI0MiwgMTU2LCA3NCwgMjgsIDQsIDI0MiwgMTU2LCA3NSwgMjgsIDQsIDI0MiwgMTU2LCAyMTQsIDQ5LCAKLSAgICAyOCwgNCwgMTgxLCAyOCwgNCwgMjMzLCAyMzgsIDI4LCA0LCAyMzQsIDEwMSwgMjgsIDQsIDIzNSwgMTQsIDI4LCA0LCAyMzQsIAotICAgIDE4NywgMjgsIDQsIDIzNCwgMTg4LCAyOCwgNCwgMjM0LCAzNywgMjgsIDQsIDIzNCwgMzYsIDI4LCA0LCAyMzMsIDIwNCwgCi0gICAgMjgsIDQsIDIzMywgMTk4LCAyOCwgNCwgMjMzLCAyMDMsIDI4LCA0LCAyMzMsIDE5OSwgMjgsIDQsIDIzMywgMjAwLCAyOCwgCi0gICAgNCwgMjMzLCAxOTMsIDI4LCA0LCAyMzMsIDE4NywgMjgsIDQsIDIzMywgMTg5LCAyOCwgNCwgMjMzLCAxOTIsIDI4LCA0LCAKLSAgICAyMzMsIDE5MCwgMjgsIDQsIDIzMywgMTkxLCAyOCwgNCwgMjMzLCAxODgsIDI4LCA0LCAyMzMsIDE4NiwgMjgsIDQsIDIzMywgCi0gICAgMTgyLCAyOCwgNCwgMjMzLCAxODUsIDI4LCA0LCAyMzMsIDE4MywgMjgsIDQsIDIzMywgMTg0LCAyOCwgNCwgMjE0LCA0OSwgCi0gICAgMjgsIDQsIDIxMywgMTgzLCAyOCwgNCwgMjEzLCAyMzUsIDI4LCA0LCAyMTQsIDQ4LCAyOCwgNCwgMjE0LCAxLCAyOCwgNCwgCi0gICAgMjE0LCA2LCAyOCwgNCwgMjEzLCAyMTQsIDI4LCA0LCAyMTMsIDIxMywgMjgsIDQsIDIyNiwgMTUsIDYxLCAyOCwgNCwgMjI2LCAKLSAgICAxNSwgNjksIDI4LCA0LCAyMjYsIDE1LCA3MiwgMjgsIDQsIDIyNiwgMTUsIDI1NCwgMjMyLCAyOCwgNCwgMjI2LCAxNSwgCi0gICAgMjQ1LCAxNjUsIDI4LCA0LCAyMjYsIDE1LCA3NCwgMjgsIDQsIDIyNiwgMTUsIDc1LCAyOCwgNCwgMjEyLCAxMDksIDI4LCA0LCAKLSAgICAyMTIsIDgsIDI4LCA0LCAyMTIsIDM3LCAyOCwgNCwgMjEyLCAxMDgsIDI4LCA0LCAyMTIsIDg1LCAyOCwgNCwgMjEyLCA4NywgCi0gICAgMjgsIDQsIDIxMiwgMTYsIDI4LCA0LCAyMTEsIDI1MSwgMjgsIDQsIDIxMiwgNzUsIDI4LCA0LCAyMTIsIDU1LCAyOCwgNCwgCi0gICAgMjEyLCA2MiwgMjgsIDQsIDIxMiwgNzQsIDI4LCA0LCAyMTIsIDY2LCAyOCwgNCwgMjEyLCA2NywgMjgsIDQsIDIxMiwgNjAsIAotICAgIDI4LCA0LCAyMTIsIDQ2LCAyOCwgNCwgMTg2LCAyOCwgNCwgMjEyLCAyMDMsIDI4LCA0LCAyMTIsIDI1NSwgMjgsIDQsIDIxMywgCi0gICAgOTEsIDI4LCA0LCAyMTMsIDM1LCAyOCwgNCwgMjEzLCAzOCwgMjgsIDQsIDIxMiwgMjM1LCAyOCwgNCwgMjEyLCAyMjYsIDI4LCAKLSAgICA0LCAyNDgsIDE2NCwgMjgsIDQsIDI0NiwgMzMsIDI4LCA0LCAyNDcsIDIxMSwgMjgsIDQsIDI0OCwgMTYzLCAyOCwgNCwgCi0gICAgMjQ4LCAyOCwgMjgsIDQsIDI0OCwgNDEsIDI4LCA0LCAyNDcsIDk5LCAyOCwgNCwgMjQ2LCAyLCAyOCwgNCwgMjQ4LCA4NiwgCi0gICAgMjgsIDQsIDI0OCwgNTEsIDI4LCA0LCAyNDgsIDYzLCAyOCwgNCwgMjQ4LCA4NSwgMjgsIDQsIDI0OCwgNzMsIDI4LCA0LCAKLSAgICAyNDgsIDc0LCAyOCwgNCwgMjQ4LCA1NiwgMjgsIDQsIDI0OCwgNDIsIDI4LCA0LCAyMzUsIDEzOSwgMjgsIDQsIDIzNSwgNTQsIAotICAgIDI4LCA0LCAyMzUsIDExMCwgMjgsIDQsIDIzNSwgMTM4LCAyOCwgNCwgMjM1LCAxMjUsIDI4LCA0LCAyMzUsIDEyNywgMjgsIAotICAgIDQsIDIzNSwgNzEsIDI4LCA0LCAyMzUsIDM1LCAyOCwgNCwgMjQzLCAxMTAsIDI4LCA0LCAyNDIsIDkyLCAyOCwgNCwgMjQyLCAKLSAgICAxOTAsIDI4LCA0LCAyNDMsIDEwNywgMjgsIDQsIDI0MywgMzEsIDI4LCA0LCAyNDMsIDM4LCAyOCwgNCwgMjQyLCAxNTAsIAotICAgIDI4LCA0LCAyNDIsIDE0OSwgMjgsIDQsIDI0MiwgNTksIDI4LCA0LCAyNDIsIDU1LCAyOCwgNCwgMjQyLCA1OCwgMjgsIDQsIAotICAgIDI0MiwgNTYsIDI4LCA0LCAyNDIsIDU3LCAyOCwgNCwgMjQzLCA1LCAyOCwgNCwgMjQyLCAyNDEsIDI4LCA0LCAyNDIsIDI1MSwgCi0gICAgMjgsIDQsIDI0MywgNCwgMjgsIDQsIDI0MiwgMjU1LCAyOCwgNCwgMjQzLCAwLCAyOCwgNCwgMjQyLCAyNDUsIDI4LCA0LCAKLSAgICAyNDIsIDIzMCwgMjgsIDQsIDIxNywgMTYxLCAyOCwgNCwgMjE3LCA5MCwgMjgsIDQsIDIxNywgMTI4LCAyOCwgNCwgMjE3LCAKLSAgICAxNjAsIDI4LCA0LCAyMTcsIDE0NywgMjgsIDQsIDIxNywgMTQ4LCAyOCwgNCwgMjE3LCAxMDksIDI4LCA0LCAyMTcsIDgyLCAKLSAgICAyOCwgNCwgMjUwLCA5MiwgMjgsIDQsIDI1MCwgNiwgMjgsIDQsIDI1MCwgNDcsIDI4LCA0LCAyNTAsIDkxLCAyOCwgNCwgCi0gICAgMjUwLCA2NCwgMjgsIDQsIDI1MCwgNjcsIDI4LCA0LCAyNTAsIDIzLCAyOCwgNCwgMjQ5LCAyNTEsIDI4LCA0LCAyMjYsIDIzLCAKLSAgICAyOCwgNCwgMjI1LCAyNDYsIDI4LCA0LCAyMjYsIDksIDI4LCA0LCAyMjYsIDIyLCAyOCwgNCwgMjI2LCAxMSwgMjgsIDQsIAotICAgIDIyNiwgMTIsIDI4LCA0LCAyMjUsIDI1MywgMjgsIDQsIDIyNSwgMjQyLCAyOCwgNCwgMjE2LCAxNDEsIDI4LCA0LCAyMTYsIAotICAgIDEyMiwgMjgsIDQsIDIxNiwgMTI1LCAyOCwgNCwgMjE2LCAxNDAsIDI4LCA0LCAyMTYsIDEzNSwgMjgsIDQsIDIxNiwgMTM2LCAKLSAgICAyOCwgNCwgMjE2LCAxMjQsIDI4LCA0LCAyMTYsIDEyMCwgMjgsIDQsIDIxNiwgNSwgMjgsIDQsIDIxNSwgMjUzLCAyOCwgNCwgCi0gICAgMjE2LCAxLCAyOCwgNCwgMjE2LCA0LCAyOCwgNCwgMjE2LCAyLCAyOCwgNCwgMjE2LCAzLCAyOCwgNCwgMjE1LCAyNTUsIDI4LCAKLSAgICA0LCAyMTUsIDI1NCwgMjgsIDQsIDI0NCwgMTY0LCAyOCwgNCwgMjQzLCAyMDUsIDI4LCA0LCAyNDQsIDkwLCAyOCwgNCwgCi0gICAgMjQ0LCAxNjMsIDI4LCA0LCAyNDQsIDExNiwgMjgsIDQsIDI0NCwgMTIzLCAyOCwgNCwgMjQ0LCAxMiwgMjgsIDQsIDI0MywgCi0gICAgMTg4LCAyOCwgNCwgMTkzLCAyOCwgNCwgMjI1LCAzNSwgMjgsIDQsIDIyNSwgMjQwLCAyOCwgNCwgMjI2LCAyMTMsIDI4LCA0LCAKLSAgICAyMjYsIDg2LCAyOCwgNCwgMjI2LCA5NiwgMjgsIDQsIDIyNSwgMTUwLCAyOCwgNCwgMjI1LCAyLCAyOCwgNCwgMjIzLCAxMSwgCi0gICAgMjgsIDQsIDIzMCwgMTAzLCAyOCwgNCwgMjQzLCAxODIsIDI4LCAzNywgMjQzLCAyOSwgMjQsIDMwLCAyMzMsIDQ3LCA3NywgCi0gICAgMjgsIDM3LCAzMCwgMjMzLCA0NywgNzcsIDI4LCAzNywgMjQzLCAyOSwgNzcsIDI4LCAyMjIsIDkyLCA3NywgMjgsIDIxMywgCi0gICAgMTk1LCAyOCwgMjQzLCAyMDAsIDIxOSwgNjksIDI4LCAyNDksIDE1NywgMjgsIDIyMSwgNzAsIDI4LCAyNDksIDE2NCwgMjgsIAotICAgIDIyNSwgNzksIDI0OSwgMTY0LCAyOCwgMjI0LCAxNTgsIDc3LCAyOCwgMjI2LCAxNDMsIDIyMSwgNTcsIDI4LCAyMSwgMTE2LCAKLSAgICAyOCwgMjEsIDEwOSwgMjgsIDIxLCAxNjYsIDI4LCAyMSwgMTYzLCAyOCwgMjEsIDE4MCwgMjgsIDIxLCAxODksIDI4LCAyMSwgCi0gICAgMTk4LCAyOCwgMjEsIDE5NSwgMjgsIDIxLCAyMDAsIDI4LCA1MCwgMjE3LCAyMDAsIDI4LCA1MCwgMjE2LCAzOCwgMjgsIDUwLCAKLSAgICAyMTcsIDExNSwgMjgsIDUwLCAyNDMsIDI0MCwgMjgsIDUwLCAyNDQsIDgzLCAyOCwgNTAsIDIyMCwgMzksIDI4LCA1MCwgCi0gICAgMjIxLCAzNywgMjgsIDUwLCAyNDUsIDE0MSwgMjgsIDUwLCAyMjksIDI2LCAyOCwgNTAsIDI0MCwgMjAwLCAyOCwgNTAsIAotICAgIDIxNywgMjAxLCAyMTcsIDEwMCwgMjgsIDQsIDIyMiwgOTYsIDIzMCwgMTE0LCAyOCwgNCwgMjMwLCAxMTAsIDI4LCA0LCAKLSAgICAyMzAsIDExMSwgMjgsIDQsIDIzMCwgMTEyLCAyOCwgNCwgMjIyLCA5NiwgMjUxLCAxMiwgMjgsIDQsIDI1MSwgOSwgMjgsIDQsIAotICAgIDI1MSwgMTAsIDI4LCA0LCAyNTEsIDExLCAyOCwgNCwgMjIyLCA5NiwgMjQzLCAxODgsIDI4LCA0LCAyNDMsIDE4NCwgMjgsIAotICAgIDQsIDI0MywgMTg1LCAyOCwgNCwgMjQzLCAxODYsIDI4LCA0LCAyMjIsIDk2LCAyMjUsIDIsIDI4LCA0LCAyMjQsIDI1NCwgCi0gICAgMjgsIDQsIDIyNCwgMjU1LCAyOCwgNCwgMjI1LCAwLCAyOCwgMjE2LCAyNDIsIDE1MiwgMjEyLCAyMzgsIDI4LCAyMTYsIAotICAgIDI0MiwgMTUyLCAyNDcsIDI0OCwgMjgsIDIxNiwgMjQyLCAxNTIsIDIyMywgMTM1LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjIwLCAKLSAgICAxNzUsIDIyMywgMTM1LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjQ3LCAxODcsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMzQsIDE3MCwgCi0gICAgMjgsIDIxNiwgMjQyLCAxNTIsIDI1MCwgMzEsIDI4LCAyMTYsIDI0MiwgMTUyLCAyNDEsIDE2MiwgMjgsIDIxNiwgMjQyLCAKLSAgICAxNTIsIDI0NywgMjQ3LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjMzLCAyMTUsIDE1OCwgMSwgNjEsIDE1OCwgMSwgNzQsIDE1OCwgCi0gICAgMSwgNzIsIDE1OCwgMSwgNzUsIDE1OCwgMSwgNjksIDE1OCwgMSwgMjE1LCA3OSwgMTU4LCAxLCAyNDMsIDExMCwgMTU4LCAxLCAKLSAgICAxODEsIDE1OCwgMSwgMjQzLCAzOCwgMTU4LCAxLCAyNDIsIDE5MCwgMTU4LCAxLCAyNDIsIDE1MCwgMTU4LCAxLCAyNDIsIAotICAgIDkyLCAxNTgsIDEsIDI0MiwgNjAsIDE1OCwgMSwgMTU5LCAxNTgsIDEsIDI0MSwgMjIyLCAxNTgsIDEsIDI0MSwgMTY1LCAKLSAgICAxNTgsIDEsIDI0MSwgNTQsIDE1OCwgMSwgMjQwLCAyMTIsIDE1OCwgMSwgMjQwLCAxOTMsIDE1OCwgMSwgMjMzLCAxNTcsIAotICAgIDE1OCwgMSwgMjMzLCA4MiwgMTU4LCAxLCAyMzMsIDEzLCAxNTgsIDEsIDIzMiwgMjA4LCAxNTgsIDEsIDIzMiwgMTU2LCAKLSAgICAxNTgsIDEsIDIzMiwgMTMwLCAxNTgsIDEsIDE4OCwgMTU4LCAxLCAyMzEsIDE1NiwgMTU4LCAxLCAyMzEsIDQyLCAxNTgsIDEsIAotICAgIDIzMCwgMjMxLCAxNTgsIDEsIDIzMCwgMTcyLCAxNTgsIDEsIDIwNSwgMTU4LCAxLCAyNDEsIDc2LCAxNTgsIDEsIDIzMCwgCi0gICAgMzEsIDE1OCwgMSwgMjI5LCAxODcsIDE1OCwgMSwgMjI5LCA2NCwgMTU4LCAxLCAyMjgsIDE4NSwgMTU4LCAxLCAyMjgsIDkyLCAKLSAgICAxNTgsIDEsIDIyOCwgMzMsIDE1OCwgMSwgMjI0LCAxNzQsIDE1OCwgMSwgMjI0LCAxNjEsIDE1OCwgMSwgMjI0LCAxNTQsIAotICAgIDE1OCwgMSwgMjI0LCAxNDYsIDE1OCwgMSwgMjI0LCAxMzUsIDE1OCwgMSwgMjI0LCAxMzMsIDE1OCwgMSwgMjIyLCAyMDIsIAotICAgIDE1OCwgMSwgMTk3LCAxNTgsIDEsIDIyMiwgMTAwLCAxNTgsIDEsIDIyMCwgMTE3LCAxNTgsIDEsIDIxOSwgMjQyLCAxNTgsIAotICAgIDEsIDIxOSwgMjcsIDE1OCwgMSwgMjE4LCAyMDMsIDE1OCwgMSwgMjQ4LCAxNjQsIDE1OCwgMSwgMjE4LCA1MiwgMTU4LCAxLCAKLSAgICAyNDgsIDQxLCAxNTgsIDEsIDIxNywgMjI5LCAxNTgsIDEsIDI0NywgMjExLCAxNTgsIDEsIDIxNywgNzEsIDE1OCwgMSwgCi0gICAgMjQ3LCA5OSwgMTU4LCAxLCAyNDYsIDMzLCAxNTgsIDEsIDI0NiwgNSwgMTU4LCAxLCAyNDcsIDEwOCwgMTU4LCAxLCAyMTcsIAotICAgIDEyLCAxNTgsIDEsIDIxNywgMTEsIDE1OCwgMSwgMjE3LCAxLCAxNTgsIDEsIDIxNywgMCwgMTU4LCAxLCAyMTYsIDI1NSwgCi0gICAgMTU4LCAxLCAyMTYsIDI1NCwgMTU4LCAxLCAyMTYsIDE0MSwgMTU4LCAxLCAyMTYsIDEzNiwgMTU4LCAxLCAyMTYsIDEyNSwgCi0gICAgMTU4LCAxLCAyMTYsIDEyNCwgMTU4LCAxLCAyMTYsIDEyMiwgMTU4LCAxLCAyMTYsIDEyMSwgMTU4LCAxLCAyMTQsIDQ5LCAKLSAgICAxNTgsIDEsIDIxNCwgNiwgMTU4LCAxLCAyMTMsIDIzNSwgMTU4LCAxLCAyMTMsIDIxNCwgMTU4LCAxLCAyMTMsIDE4MywgCi0gICAgMTU4LCAxLCAyMTMsIDE3MSwgMTU4LCAxLCAxODYsIDE1OCwgMSwgMjEzLCAzOCwgMTU4LCAxLCAyMTIsIDI1NSwgMTU4LCAxLCAKLSAgICAyMTIsIDIzNSwgMTU4LCAxLCAyMTIsIDIwMywgMTU4LCAxLCAyMTIsIDE2OSwgMTgsIDE5LCAyNDAsIDE2MCwgMTgsIDE5LCAKLSAgICA3NCwgMTgsIDE5LCAyNTQsIDE5NiwgMTgsIDE5LCA3MiwgMTgsIDE5LCAyMzYsIDI4LCAxOCwgMTksIDc1LCAxOCwgMTksIAotICAgIDIyNywgNDksIDE4LCAxOSwgMjEzLCAxMDQsIDIyNywgNDksIDE4LCAxOSwgNjYsIDI0NSwgMTY1LCAxOCwgMTksIDY2LCA3MiwgCi0gICAgMTgsIDE5LCA2MSwgMTgsIDE5LCAyNTQsIDIzMiwgMTgsIDE5LCAyMTQsIDYsIDE4LCAxOSwgMTQ4LCAyMTQsIDYsIDE4LCAKLSAgICAxOSwgMjEzLCAyMzUsIDE4LCAxOSwgMTQ4LCAyMTMsIDIzNSwgMTgsIDE5LCAyMTMsIDIyNywgMTgsIDE5LCAxNDgsIDIxMywgCi0gICAgMjI3LCAxOCwgMTksIDIxMywgMjE0LCAxOCwgMTksIDE0OCwgMjEzLCAyMTQsIDE4LCAxOSwgMjEzLCAyMDIsIDE4LCAxOSwgCi0gICAgMTQ4LCAyMTMsIDIwMiwgMTgsIDE5LCAyMzAsIDExLCAyMTMsIDIwMiwgMTgsIDE5LCAyMTQsIDQ5LCAxOCwgMTksIDE0OCwgCi0gICAgMjE0LCA0OSwgMTgsIDE5LCAyMTQsIDQ4LCAxOCwgMTksIDE0OCwgMjE0LCA0OCwgMTgsIDE5LCAyMzAsIDExLCAyMTQsIDQ4LCAKLSAgICAxOCwgMTksIDI1NCwgMTA4LCAxOCwgMTksIDIxMywgMTA0LCAyMTQsIDgyLCAxOCwgMTksIDI0MiwgMTU2LCAyMTksIDY5LCAKLSAgICAxOCwgMTksIDQwLCAxNzksIDE4LCAxOSwgNDAsIDI0MiwgMTEzLCAxOCwgMTksIDQwLCAyNTEsIDEwMSwgMTUxLCAyMjMsIAotICAgIDEzMCwgMTgsIDE5LCA0MCwgMjE2LCAyMjcsIDE1MSwgMjIzLCAxMzAsIDE4LCAxOSwgNDAsIDQ2LCAxNTEsIDIyMywgMTMwLCAKLSAgICAxOCwgMTksIDQwLCAyMjMsIDEzMCwgMTgsIDE5LCA0MCwgNTEsIDE3OSwgMTgsIDE5LCA0MCwgNTEsIDIyMCwgMTc1LCA3MSwgCi0gICAgMjE5LCAzMiwgMTgsIDE5LCA0MCwgMjMxLCAzNywgMjQ3LCA3NCwgMTgsIDE5LCA0MCwgMjIwLCAxNzUsIDE5OSwgOTAsIDE4LCAKLSAgICAxOSwgNDAsIDIyNSwgMTU2LCAxOCwgMTksIDQwLCAxMTksIDIxOCwgMzYsIDE4LCAxOSwgMjQ1LCAxMDgsIDE4LCAxOSwgCi0gICAgMjM1LCAyNTEsIDE4LCAxOSwgMjI3LCA2MiwgMTgsIDE5LCAyNTQsIDMyLCAxOCwgMTksIDIyNiwgOTYsIDE4LCAxOSwgMjI2LCAKLSAgICAyMTEsIDE4LCAxOSwgMjI1LCAyNDAsIDE4LCAxOSwgMjI1LCAyMDMsIDE4LCAxOSwgMjI1LCAxNTAsIDE4LCAxOSwgMjI1LCAKLSAgICAxMjksIDE4LCAxOSwgMjEzLCAxMDQsIDIyNSwgMTI5LCAxOCwgMTksIDY2LCAyNDEsIDIwNCwgMTgsIDE5LCA2NiwgMjQxLCAKLSAgICAxNjUsIDE4LCAxOSwgMTkzLCAxOCwgMTksIDIyNiwgMjEzLCAxOCwgMTksIDIyNSwgMCwgMTgsIDE5LCAxNDgsIDIyNSwgMCwgCi0gICAgMTgsIDE5LCAyMjQsIDI1NCwgMTgsIDE5LCAxNDgsIDIyNCwgMjU0LCAxOCwgMTksIDIyNCwgMjUzLCAxOCwgMTksIDE0OCwgCi0gICAgMjI0LCAyNTMsIDE4LCAxOSwgMjI0LCAyNTEsIDE4LCAxOSwgMTQ4LCAyMjQsIDI1MSwgMTgsIDE5LCAyMjQsIDI1MCwgMTgsIAotICAgIDE5LCAxNDgsIDIyNCwgMjUwLCAxOCwgMTksIDIyNSwgMiwgMTgsIDE5LCAxNDgsIDIyNSwgMiwgMTgsIDE5LCAyMjUsIDEsIAotICAgIDE4LCAxOSwgMTQ4LCAyMjUsIDEsIDE4LCAxOSwgMjEzLCAxMDQsIDIyNSwgMSwgMTgsIDE5LCAyMjYsIDIyOSwgMTgsIDE5LCAKLSAgICAxNDgsIDIyNiwgMjI5LCAxOCwgMTksIDY2LCAyNDIsIDQxLCAxOCwgMTksIDIxNywgMjI5LCAxOCwgMTksIDIxOCwgNDcsIAotICAgIDE4LCAxOSwgMjE3LCA3MSwgMTgsIDE5LCAyMTcsIDU3LCAxOCwgMTksIDEwOCwgMTgsIDE5LCAyMTYsIDIzMCwgMTgsIDE5LCAKLSAgICAyMTMsIDEwNCwgMjE2LCAyMzAsIDE4LCAxOSwgNjYsIDI0OCwgMjgsIDE4LCAxOSwgNjYsIDI0NywgMjExLCAxOCwgMTksIAotICAgIDIxOCwgNTIsIDE4LCAxOSwgMjE4LCA0OSwgMTgsIDE5LCAyMTYsIDQzLCAxOCwgMTksIDE0OCwgMjE2LCA0MywgMTgsIDE5LCAKLSAgICAyMTYsIDI3LCAxOCwgMTksIDE0OCwgMjE2LCAyNywgMTgsIDE5LCAyMTYsIDI2LCAxOCwgMTksIDE0OCwgMjE2LCAyNiwgMTgsIAotICAgIDE5LCAxMDksIDE4LCAxOSwgMTQ4LCAxMDksIDE4LCAxOSwgMjE2LCAyMCwgMTgsIDE5LCAxNDgsIDIxNiwgMjAsIDE4LCAxOSwgCi0gICAgMjE2LCA0NSwgMTgsIDE5LCAxNDgsIDIxNiwgNDUsIDE4LCAxOSwgMjE2LCA0NCwgMTgsIDE5LCAxNDgsIDIxNiwgNDQsIDE4LCAKLSAgICAxOSwgMjMwLCAxMSwgMjE2LCA0NCwgMTgsIDE5LCAyMTgsIDk5LCAxOCwgMTksIDIxNiwgMTEyLCAxOCwgMTksIDIxNiwgOTYsIAotICAgIDE4LCAxOSwgMjE2LCA5NSwgMTgsIDE5LCAyMTYsIDExNSwgMTgsIDE5LCAyMzQsIDE4OCwgMTgsIDE5LCAyMzUsIDExLCAxOCwgCi0gICAgMTksIDIzNCwgMTAxLCAxOCwgMTksIDIzNCwgOTIsIDE4LCAxOSwgMjM0LCAzNywgMTgsIDE5LCAyMzQsIDE5LCAxOCwgMTksIAotICAgIDIxMywgMTA0LCAyMzQsIDE5LCAxOCwgMTksIDE4MSwgMTgsIDE5LCAyMzUsIDE0LCAxOCwgMTksIDIzMywgMjAwLCAxOCwgCi0gICAgMTksIDE0OCwgMjMzLCAyMDAsIDE4LCAxOSwgMjMzLCAxOTgsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5OCwgMTgsIDE5LCAyMzMsIAotICAgIDE5NywgMTgsIDE5LCAxNDgsIDIzMywgMTk3LCAxOCwgMTksIDIzMywgMTk2LCAxOCwgMTksIDE0OCwgMjMzLCAxOTYsIDE4LCAKLSAgICAxOSwgMjMzLCAxOTUsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5NSwgMTgsIDE5LCAyMzMsIDIwNCwgMTgsIDE5LCAxNDgsIDIzMywgCi0gICAgMjA0LCAxOCwgMTksIDIzMywgMjAzLCAxOCwgMTksIDE0OCwgMjMzLCAyMDMsIDE4LCAxOSwgMjMwLCAxMSwgMjMzLCAyMDMsIAotICAgIDE4LCAxOSwgMjM1LCAyNywgMTgsIDE5LCAyMzMsIDIwNSwgMTgsIDE5LCAyMTksIDIxNCwgMjM0LCAxODIsIDE4LCAxOSwgCi0gICAgMjE5LCAyMTQsIDIzNCwgOTMsIDE4LCAxOSwgMjE5LCAyMTQsIDIzNCwgMzIsIDE4LCAxOSwgMjE5LCAyMTQsIDIzNCwgMjUyLCAKLSAgICAxOCwgMTksIDI1MCwgMTI0LCAxOCwgMTksIDI1MCwgMjE3LCAxOCwgMTksIDI0OSwgMjQ0LCAxOCwgMTksIDI0OSwgMjM0LCAKLSAgICAxOCwgMTksIDI0OSwgMTc1LCAxOCwgMTksIDI0OSwgMTEzLCAxOCwgMTksIDIxMywgMTA0LCAyNDksIDExMywgMTgsIDE5LCAKLSAgICAyNTAsIDIxOSwgMTgsIDE5LCAyNTAsIDIxOCwgMTgsIDE5LCAyNDksIDIyLCAxOCwgMTksIDE0OCwgMjQ5LCAyMiwgMTgsIAotICAgIDE5LCAyNDksIDIwLCAxOCwgMTksIDE0OCwgMjQ5LCAyMCwgMTgsIDE5LCAyNDksIDE5LCAxOCwgMTksIDE0OCwgMjQ5LCAxOSwgCi0gICAgMTgsIDE5LCAyNDksIDE4LCAxOCwgMTksIDE0OCwgMjQ5LCAxOCwgMTgsIDE5LCAyNDksIDE3LCAxOCwgMTksIDE0OCwgMjQ5LCAKLSAgICAxNywgMTgsIDE5LCAyNDksIDI0LCAxOCwgMTksIDE0OCwgMjQ5LCAyNCwgMTgsIDE5LCAyNDksIDIzLCAxOCwgMTksIDE0OCwgCi0gICAgMjQ5LCAyMywgMTgsIDE5LCAyMzAsIDExLCAyNDksIDIzLCAxOCwgMTksIDI1MCwgMjUyLCAxOCwgMTksIDIyMiwgMTI3LCAKLSAgICAyMTcsIDE2MywgMTgsIDE5LCAyMzEsIDE1NiwgMTgsIDE5LCAyMzIsIDQwLCAxOCwgMTksIDIzMSwgNDIsIDE4LCAxOSwgCi0gICAgMjMxLCAxNCwgMTgsIDE5LCAyMzAsIDIzMSwgMTgsIDE5LCAyMzAsIDIwMiwgMTgsIDE5LCAyMTMsIDEwNCwgMjMwLCAyMDIsIAotICAgIDE4LCAxOSwgMTg4LCAxOCwgMTksIDIzMiwgNDEsIDE4LCAxOSwgMjMwLCAxMTIsIDE4LCAxOSwgMTQ4LCAyMzAsIDExMiwgCi0gICAgMTgsIDE5LCAyMzAsIDExMCwgMTgsIDE5LCAxNDgsIDIzMCwgMTEwLCAxOCwgMTksIDIzMCwgMTA5LCAxOCwgMTksIDE0OCwgCi0gICAgMjMwLCAxMDksIDE4LCAxOSwgMjMwLCAxMDgsIDE4LCAxOSwgMTQ4LCAyMzAsIDEwOCwgMTgsIDE5LCAyMzAsIDEwNywgMTgsIAotICAgIDE5LCAxNDgsIDIzMCwgMTA3LCAxOCwgMTksIDIzMCwgMTE0LCAxOCwgMTksIDE0OCwgMjMwLCAxMTQsIDE4LCAxOSwgMjMwLCAKLSAgICAxMTMsIDE4LCAxOSwgMTQ4LCAyMzAsIDExMywgMTgsIDE5LCAyMzAsIDExLCAyMzAsIDExMywgMTgsIDE5LCAxODMsIDE4LCAKLSAgICAxOSwgMTQ4LCAxODMsIDE4LCAxOSwgMjMxLCA0NSwgMTgsIDE5LCAyNTMsIDEyMSwgMTgzLCAxOCwgMTksIDIyMiwgMTI3LCAKLSAgICAxODMsIDE4LCAxOSwgMjI5LCAxODcsIDE4LCAxOSwgMjMwLCA0MiwgMTgsIDE5LCAyMjksIDY0LCAxOCwgMTksIDIyOSwgMzksIAotICAgIDE4LCAxOSwgMjI4LCAxODUsIDE4LCAxOSwgMjI4LCAxNzUsIDE4LCAxOSwgMjEzLCAxMDQsIDIyOCwgMTc1LCAxOCwgMTksIAotICAgIDIwNSwgMTgsIDE5LCAyMzAsIDQzLCAxOCwgMTksIDIyOCwgMjksIDE4LCAxOSwgMTQ4LCAyMjgsIDI5LCAxOCwgMTksIDIyOCwgCi0gICAgMzEsIDE4LCAxOSwgMTQ4LCAyMjgsIDMxLCAxOCwgMTksIDIyOCwgMzAsIDE4LCAxOSwgMTQ4LCAyMjgsIDMwLCAxOCwgMTksIAotICAgIDIzMCwgMTEsIDIyOCwgMzAsIDE4LCAxOSwgMjA0LCAxOCwgMTksIDY2LCAyMjksIDE2MSwgMTgsIDE5LCAyMjksIDY5LCAxOCwgCi0gICAgMTksIDIzMywgODIsIDE4LCAxOSwgMjMzLCAxNTUsIDE4LCAxOSwgMjMzLCAxMywgMTgsIDE5LCAyMzIsIDI1NSwgMTgsIDE5LCAKLSAgICAyMzIsIDIwOCwgMTgsIDE5LCAyMzIsIDE4MCwgMTgsIDE5LCAyMTMsIDEwNCwgMjMyLCAxODAsIDE4LCAxOSwgMjMzLCAxNTcsIAotICAgIDE4LCAxOSwgMjMzLCAxNTYsIDE4LCAxOSwgMjMyLCAxMjcsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNywgMTgsIDE5LCAyMzIsIAotICAgIDEyNiwgMTgsIDE5LCAxNDgsIDIzMiwgMTI2LCAxOCwgMTksIDIzMiwgMTI1LCAxOCwgMTksIDE0OCwgMjMyLCAxMjUsIDE4LCAKLSAgICAxOSwgMjMyLCAxMjQsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNCwgMTgsIDE5LCAyMzIsIDEyMywgMTgsIDE5LCAxNDgsIDIzMiwgCi0gICAgMTIzLCAxOCwgMTksIDIzMiwgMTI5LCAxOCwgMTksIDE0OCwgMjMyLCAxMjksIDE4LCAxOSwgMjMyLCAxMjgsIDE4LCAxOSwgCi0gICAgMTQ4LCAyMzIsIDEyOCwgMTgsIDE5LCAxNTAsIDE4LCAxOSwgMTQ4LCAxNTAsIDE4LCAxOSwgMTM4LCAxNTAsIDE4LCAxOSwgCi0gICAgMjIyLCAxMDAsIDE4LCAxOSwgMjIyLCAxOTgsIDE4LCAxOSwgMjIwLCAxMTcsIDE4LCAxOSwgMjIwLCAxMDEsIDE4LCAxOSwgCi0gICAgMjE5LCAyNDIsIDE4LCAxOSwgMjE5LCAyMjYsIDE4LCAxOSwgMjEzLCAxMDQsIDIxOSwgMjI2LCAxOCwgMTksIDIyMiwgMjAyLCAKLSAgICAxOCwgMTksIDIyMiwgMjAwLCAxOCwgMTksIDIxOCwgMTk0LCAxOCwgMTksIDE0OCwgMjE4LCAxOTQsIDE4LCAxOSwgMjE4LCAKLSAgICAxODgsIDE4LCAxOSwgMTQ4LCAyMTgsIDE4OCwgMTgsIDE5LCAyMTgsIDE4NywgMTgsIDE5LCAxNDgsIDIxOCwgMTg3LCAxOCwgCi0gICAgMTksIDIxOCwgMTgzLCAxOCwgMTksIDE0OCwgMjE4LCAxODMsIDE4LCAxOSwgMjE4LCAxODIsIDE4LCAxOSwgMTQ4LCAyMTgsIAotICAgIDE4MiwgMTgsIDE5LCAyMTgsIDE5OCwgMTgsIDE5LCAxNDgsIDIxOCwgMTk4LCAxOCwgMTksIDIxOCwgMTk3LCAxOCwgMTksIAotICAgIDE0OCwgMjE4LCAxOTcsIDE4LCAxOSwgMjMwLCAxMSwgMjE4LCAxOTcsIDE4LCAxOSwgMTk3LCAxOCwgMTksIDI1MywgMTIxLCAKLSAgICAxOTcsIDE4LCAxOSwgMjE4LCAxOTksIDE4LCAxOSwgMjUxLCAxNDEsIDE5NywgMTgsIDE5LCAyMzAsIDE5NywgMjIwLCAzNiwgCi0gICAgMTgsIDE5LCAyMzAsIDExLCAyMjAsIDI3LCAxOCwgMTksIDIzMCwgMTEsIDIyMywgMiwgMTgsIDE5LCAyMzAsIDExLCAyMTksIAotICAgIDE2NywgMTgsIDE5LCAyMzAsIDExLCAyMTksIDI5LCAxOCwgMTksIDIzMCwgMTEsIDIyMCwgMjYsIDE4LCAxOSwgMjMwLCAxMSwgCi0gICAgMjIyLCAxMDMsIDE4LCAxOSwgMjIwLCAyNDMsIDE4LCAxOSwgMjIwLCAyMTIsIDE4LCAxOSwgMjIwLCAyMDcsIDE4LCAxOSwgCi0gICAgMjIwLCAxODcsIDE4LCAxOSwgMjIwLCAxODEsIDE4LCAxOSwgMjIxLCAyNCwgMTgsIDE5LCAyMjEsIDIwLCAxOCwgMTksIAotICAgIDIyMCwgMTMyLCAxOCwgMTksIDE0OCwgMjIwLCAxMzIsIDE4LCAxOSwgMjIwLCAxMzEsIDE4LCAxOSwgMTQ4LCAyMjAsIDEzMSwgCi0gICAgMTgsIDE5LCAyMjAsIDEzMCwgMTgsIDE5LCAxNDgsIDIyMCwgMTMwLCAxOCwgMTksIDIyMCwgMTI5LCAxOCwgMTksIDE0OCwgCi0gICAgMjIwLCAxMjksIDE4LCAxOSwgMjIwLCAxMjgsIDE4LCAxOSwgMTQ4LCAyMjAsIDEyOCwgMTgsIDE5LCAyMjAsIDEzNCwgMTgsIAotICAgIDE5LCAxNDgsIDIyMCwgMTM0LCAxOCwgMTksIDIyMCwgMTMzLCAxOCwgMTksIDE0OCwgMjIwLCAxMzMsIDE4LCAxOSwgMjIxLCAKLSAgICAyNiwgMTgsIDE5LCAyMTMsIDM4LCAxOCwgMTksIDIxMywgODksIDE4LCAxOSwgMjEyLCAyNTUsIDE4LCAxOSwgMjEyLCAyNDYsIAotICAgIDE4LCAxOSwgMjEyLCAyMzUsIDE4LCAxOSwgMjEyLCAyMjAsIDE4LCAxOSwgMjEzLCAxMDQsIDIxMiwgMjIwLCAxOCwgMTksIAotICAgIDE4NiwgMTgsIDE5LCAyMTMsIDkxLCAxOCwgMTksIDIxMiwgMTY2LCAxOCwgMTksIDE0OCwgMjEyLCAxNjYsIDE4LCAxOSwgCi0gICAgMjEyLCAxNjUsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2NSwgMTgsIDE5LCAyMTIsIDE2NCwgMTgsIDE5LCAxNDgsIDIxMiwgMTY0LCAKLSAgICAxOCwgMTksIDIxMiwgMTYzLCAxOCwgMTksIDE0OCwgMjEyLCAxNjMsIDE4LCAxOSwgMjEyLCAxNjIsIDE4LCAxOSwgMTQ4LCAKLSAgICAyMTIsIDE2MiwgMTgsIDE5LCAyMTIsIDE2OCwgMTgsIDE5LCAxNDgsIDIxMiwgMTY4LCAxOCwgMTksIDIxMiwgMTY3LCAxOCwgCi0gICAgMTksIDE0OCwgMjEyLCAxNjcsIDE4LCAxOSwgMjMwLCAxMSwgMjEyLCAxNjcsIDE4LCAxOSwgMjEzLCAxMDUsIDE4LCAxOSwgCi0gICAgMjUxLCAxODIsIDIxMywgMTA1LCAxOCwgMTksIDE0OCwgMjEzLCAxMDUsIDE4LCAxOSwgMjIyLCAxMjcsIDIxMiwgMjU1LCAKLSAgICAxOCwgMTksIDIyNCwgMjEsIDE4LCAxOSwgMjI0LCAxMTIsIDIyNCwgMjEsIDE4LCAxOSwgMTQ4LCAyMzMsIDgyLCAxOCwgMTksIAotICAgIDIyNCwgNzMsIDE4LCAxOSwgMjIzLCAxODgsIDE4LCAxOSwgMjIzLCAxMzYsIDE4LCAxOSwgMjIzLCAxMTIsIDE4LCAxOSwgCi0gICAgMjIzLCA5OSwgMTgsIDE5LCAxNDgsIDIzMiwgMjA4LCAxOCwgMTksIDIwMywgMTgsIDE5LCAyMjQsIDc0LCAxOCwgMTksIAotICAgIDE0OCwgMjMzLCAxNTcsIDE4LCAxOSwgMjIzLCAyMCwgMTgsIDE5LCAxNDgsIDIyMywgMjAsIDE4LCAxOSwgMTQ5LCAxOCwgCi0gICAgMTksIDE0OCwgMTQ5LCAxOCwgMTksIDEzOCwgMTQ5LCAxOCwgMTksIDI0NCwgMTIzLCAxOCwgMTksIDI0NCwgMTYxLCAxOCwgCi0gICAgMTksIDI0NCwgOTAsIDE4LCAxOSwgMjQ0LCA3NywgMTgsIDE5LCAyNDQsIDEyLCAxOCwgMTksIDI0NCwgMywgMTgsIDE5LCAKLSAgICAyNDQsIDE2NCwgMTgsIDE5LCAyNDQsIDE2MywgMTgsIDE5LCAyNDMsIDE4NywgMTgsIDE5LCAxNDgsIDI0MywgMTg3LCAxOCwgCi0gICAgMTksIDI0NCwgMjMwLCAxOCwgMTksIDIxNywgMTQ4LCAxOCwgMTksIDIzMCwgOTYsIDIxNywgMTQ4LCAxOCwgMTksIDIxNywgCi0gICAgMTI4LCAxOCwgMTksIDIzMCwgOTYsIDIxNywgMTI4LCAxOCwgMTksIDIxNywgMTI0LCAxOCwgMTksIDIzMCwgOTYsIDIxNywgCi0gICAgMTI0LCAxOCwgMTksIDIxNywgMTA5LCAxOCwgMTksIDIxNywgMTA2LCAxOCwgMTksIDIxNywgMTYxLCAxOCwgMTksIDIxNywgCi0gICAgMTYwLCAxOCwgMTksIDIxNywgODEsIDE4LCAxOSwgMTQ4LCAyMTcsIDgxLCAxOCwgMTksIDIxNywgMTYzLCAxOCwgMTksIAotICAgIDIxNiwgMTAzLCAxOCwgMTksIDIxNiwgMTAxLCAxOCwgMTksIDIxNiwgMTAwLCAxOCwgMTksIDIxNiwgMTA1LCAxOCwgMTksIAotICAgIDIxNiwgMTA2LCAxOCwgMTksIDIxNiwgMTgsIDE4LCAxOSwgMjE2LCAxNywgMTgsIDE5LCAyMTYsIDE2LCAxOCwgMTksIDIxNiwgCi0gICAgMTksIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCAyMjIsIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCAxNjUsIDE4LCAxOSwgMjI4LCAKLSAgICA0OSwgMjQxLCAxNDcsIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCA1NCwgMTgsIDE5LCAyMjgsIDQ5LCAyNDEsIDM5LCAxOCwgMTksIAotICAgIDIyOCwgNDksIDE1OSwgMTgsIDE5LCAyMjgsIDQ5LCAyNDIsIDI3LCAxOCwgMTksIDIyOCwgNDksIDI0MiwgNDEsIDE4LCAxOSwgCi0gICAgMjI4LCA0OCwgMjQyLCA0MSwgMTgsIDE5LCAyNDEsIDE0MCwgMTgsIDE5LCAyMjQsIDIyOCwgMTgsIDE5LCAyMjQsIDE5OCwgCi0gICAgMTgsIDE5LCAyMjQsIDE5MywgMTgsIDE5LCAyMjQsIDE4NywgMTgsIDE5LCAyMjQsIDE4MiwgMTgsIDE5LCAyMjQsIDIzMiwgCi0gICAgMTgsIDE5LCAyMjQsIDIzMSwgMTgsIDE5LCAyMjQsIDI0MCwgMTgsIDE5LCAyMTcsIDgsIDE4LCAxOSwgMjE3LCA2LCAxOCwgCi0gICAgMTksIDIxNywgNSwgMTgsIDE5LCAyMTcsIDksIDE4LCAxOSwgMTQ4LCAyMjQsIDIxLCAxOCwgMTksIDE0OCwgMjIzLCAxODgsIAotICAgIDE4LCAxOSwgMTQ4LCAyMjMsIDExMiwgMTgsIDE5LCAxNDgsIDIwMywgMTgsIDE5LCAyMjksIDE1NywgMTgsIDE5LCAyMjksIAotICAgIDExMywgMTgsIDE5LCAyMjksIDEwOSwgMTgsIDE5LCAyMjksIDkwLCAxOCwgMTksIDIyOSwgODUsIDE4LCAxOSwgMjI5LCAKLSAgICAxNTksIDE4LCAxOSwgMjI5LCAxNTgsIDE4LCAxOSwgMjI5LCAxNjEsIDE4LCAxOSwgMjI4LCAxOTYsIDE4LCAxOSwgMjIyLCAKLSAgICAxMjcsIDIyMCwgMjQzLCAxOCwgMTksIDIyMiwgMTI3LCAyMjAsIDIxMiwgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAxODcsIAotICAgIDE4LCAxOSwgMjIyLCAxMjcsIDIyMSwgMjQsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgMTQ4LCAxOCwgMTksIDIxMywgMjAwLCAKLSAgICAyMTcsIDEyOCwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCAxMDksIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgMTYxLCAxOCwgMTksIAotICAgIDIxMywgMjAwLCAyMTcsIDE2MywgMTgsIDE5LCAyMzMsIDE5LCAxOCwgMTksIDIzMywgMTgsIDE4LCAxOSwgMjMzLCAxNywgCi0gICAgMTgsIDE5LCAyMzMsIDE2LCAxOCwgMTksIDIzMywgMjUsIDE4LCAxOSwgMjMzLCAyNCwgMTgsIDE5LCAyMzMsIDI2LCAxOCwgCi0gICAgMTksIDIxNywgMTYyLCAyMTcsIDE0OCwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxMjgsIDE4LCAxOSwgMjE3LCAxNjIsIAotICAgIDIxNywgMTI0LCAxOCwgMTksIDIxNywgMTYyLCAyMTcsIDEwOSwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxMDYsIDE4LCAxOSwgCi0gICAgMjE3LCAxNjIsIDIxNywgMTYxLCAxOCwgMTksIDIxNywgMTYyLCAyMTcsIDE2MCwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAKLSAgICAxNjMsIDE4LCAxOSwgMjU0LCA5NywgMjUzLCA3NCwgMTgsIDE5LCAyNTEsIDE0MSwgNzQsIDE4LCAxOSwgMjUxLCAxNDEsIAotICAgIDcyLCAxOCwgMTksIDI1MSwgMTQxLCA3NSwgMTgsIDE5LCAyNTEsIDE0MSwgNjEsIDE4LCAxOSwgMjUxLCAxNDEsIDIxNCwgNiwgCi0gICAgMTgsIDE5LCAyNTEsIDE0MSwgMjEzLCAyMzUsIDE4LCAxOSwgMjUxLCAxNDEsIDIxMywgMjE0LCAxOCwgMTksIDI1MSwgMTQxLCAKLSAgICAyMTQsIDQ5LCAxOCwgMTksIDI1MSwgMTQxLCAyMjksIDE4NywgMTgsIDE5LCAyNTEsIDE0MSwgMjI5LCA2NCwgMTgsIDE5LCAKLSAgICAyNTEsIDE0MSwgMjI4LCAxODUsIDE4LCAxOSwgMjUxLCAxNDEsIDIwNSwgMTgsIDE5LCAyNTEsIDE0MSwgMjM0LCAxODgsIAotICAgIDE4LCAxOSwgMjUxLCAxNDEsIDIzNCwgMTAxLCAxOCwgMTksIDI1MSwgMTQxLCAyMzQsIDM3LCAxOCwgMTksIDI1MSwgMTQxLCAKLSAgICAxODEsIDE4LCAxOSwgMjIyLCAxMjcsIDI0MSwgMjIyLCAxOCwgMTksIDIyMiwgMTI3LCAyNDEsIDE2NSwgMTgsIDE5LCAyMjIsIAotICAgIDEyNywgMjQxLCA1NCwgMTgsIDE5LCAyMjIsIDEyNywgMTU5LCAxOCwgMTksIDY2LCAyNDIsIDE5NiwgMTgsIDE5LCA2NiwgCi0gICAgMjQyLCAyMDAsIDE4LCAxOSwgNjYsIDI0MiwgMjEyLCAxOCwgMTksIDY2LCAyNDIsIDIxMSwgMTgsIDE5LCA2NiwgMjQyLCAKLSAgICAyMDEsIDE4LCAxOSwgNjYsIDI0MiwgMjI1LCAxOCwgMTksIDY2LCAyMjMsIDUxLCAxOCwgMTksIDY2LCAyMjMsIDExMiwgMTgsIAotICAgIDE5LCA2NiwgMjI0LCAyMSwgMTgsIDE5LCA2NiwgMjI0LCAxLCAxOCwgMTksIDY2LCAyMjMsIDE4OCwgMTgsIDE5LCA2NiwgCi0gICAgMjAzLCAxOCwgMTksIDY2LCAyMTMsIDE4MywgMTgsIDE5LCA2NiwgMjEzLCAyMTQsIDE4LCAxOSwgNjYsIDIxNCwgNiwgMTgsIAotICAgIDE5LCA2NiwgMjE0LCAxLCAxOCwgMTksIDY2LCAyMTMsIDIzNSwgMTgsIDE5LCA2NiwgMjE0LCA0OSwgMTgsIDE5LCA2NiwgCi0gICAgMjQwLCAxODYsIDE4LCAxOSwgNjYsIDI0MCwgMTg3LCAxOCwgMTksIDY2LCAyNDAsIDE5MCwgMTgsIDE5LCA2NiwgMjQwLCAKLSAgICAxODksIDE4LCAxOSwgNjYsIDI0MCwgMTg4LCAxOCwgMTksIDY2LCAyNDAsIDE5MiwgMTgsIDE5LCA2NiwgMjE3LCA5MCwgMTgsIAotICAgIDE5LCA2NiwgMjE3LCAxMDksIDE4LCAxOSwgNjYsIDIxNywgMTQ4LCAxOCwgMTksIDY2LCAyMTcsIDE0NywgMTgsIDE5LCA2NiwgCi0gICAgMjE3LCAxMjgsIDE4LCAxOSwgNjYsIDIxNywgMTYxLCAxOCwgMTksIDY2LCAyMTYsIDg2LCAxOCwgMTksIDY2LCAyMTYsIDk1LCAKLSAgICAxOCwgMTksIDY2LCAyMTYsIDExMiwgMTgsIDE5LCA2NiwgMjE2LCAxMTEsIDE4LCAxOSwgNjYsIDIxNiwgOTYsIDE4LCAxOSwgCi0gICAgNjYsIDIxNiwgMTE1LCAxOCwgMTksIDY2LCAyMjUsIDM1LCAxOCwgMTksIDY2LCAyMjUsIDE1MCwgMTgsIDE5LCA2NiwgMjI2LCAKLSAgICA5NiwgMTgsIDE5LCA2NiwgMjI2LCA4NiwgMTgsIDE5LCA2NiwgMjI1LCAyNDAsIDE4LCAxOSwgNjYsIDE5MywgMTgsIDE5LCAKLSAgICA2NiwgMjI2LCAyMjksIDE4LCAxOSwgNjYsIDI0MiwgOTIsIDE4LCAxOSwgNjYsIDI0MiwgMTUwLCAxOCwgMTksIDY2LCAyNDMsIAotICAgIDM4LCAxOCwgMTksIDY2LCAyNDMsIDMxLCAxOCwgMTksIDY2LCAyNDIsIDE5MCwgMTgsIDE5LCA2NiwgMjQzLCAxMTAsIDE4LCAKLSAgICAxOSwgNjYsIDIzNCwgMTA4LCAxOCwgMTksIDY2LCAyMzQsIDExMywgMTgsIDE5LCA2NiwgMjM0LCAxMjUsIDE4LCAxOSwgNjYsIAotICAgIDIzNCwgMTI0LCAxOCwgMTksIDY2LCAyMzQsIDExOCwgMTgsIDE5LCA2NiwgMjM0LCAxMzgsIDE4LCAxOSwgNjYsIDIzNCwgCi0gICAgNTAsIDE4LCAxOSwgNjYsIDIzNCwgNTEsIDE4LCAxOSwgNjYsIDIzNCwgNTQsIDE4LCAxOSwgNjYsIDIzNCwgNTMsIDE4LCAKLSAgICAxOSwgNjYsIDIzNCwgNTIsIDE4LCAxOSwgNjYsIDIzNCwgNTUsIDE4LCAxOSwgNjYsIDIzNCwgNTYsIDE4LCAxOSwgNjYsIAotICAgIDIyOCwgOTIsIDE4LCAxOSwgNjYsIDIyOCwgMTg1LCAxOCwgMTksIDY2LCAyMjksIDE4NywgMTgsIDE5LCA2NiwgMjI5LCAKLSAgICAxODQsIDE4LCAxOSwgNjYsIDIyOSwgNjQsIDE4LCAxOSwgNjYsIDIwNSwgMTgsIDE5LCA2NiwgMjMwLCAxNzIsIDE4LCAxOSwgCi0gICAgNjYsIDIzMCwgMjMxLCAxOCwgMTksIDY2LCAyMzEsIDE1NiwgMTgsIDE5LCA2NiwgMjMxLCAxNDUsIDE4LCAxOSwgNjYsIAotICAgIDIzMSwgNDIsIDE4LCAxOSwgNjYsIDE4OCwgMTgsIDE5LCA2NiwgMjEyLCAyMDMsIDE4LCAxOSwgNjYsIDIxMiwgMjM1LCAxOCwgCi0gICAgMTksIDY2LCAyMTMsIDM4LCAxOCwgMTksIDY2LCAyMTMsIDM1LCAxOCwgMTksIDY2LCAyMTIsIDI1NSwgMTgsIDE5LCA2NiwgCi0gICAgMTg2LCAxOCwgMTksIDY2LCAyMzUsIDU0LCAxOCwgMTksIDIyMiwgMTI3LCAyMzUsIDU0LCAxOCwgMTksIDY2LCAyMzUsIDcxLCAKLSAgICAxOCwgMTksIDY2LCAyMzUsIDEyNywgMTgsIDE5LCA2NiwgMjM1LCAxMjUsIDE4LCAxOSwgNjYsIDIzNSwgMTEwLCAxOCwgMTksIAotICAgIDIyMiwgMTI3LCAyMzUsIDExMCwgMTgsIDE5LCA2NiwgMjM1LCAxMzksIDE4LCAxOSwgNjYsIDIzNSwgODQsIDE4LCAxOSwgCi0gICAgNjYsIDIzNSwgODgsIDE4LCAxOSwgNjYsIDIzNSwgOTgsIDE4LCAxOSwgNjYsIDIzNSwgOTcsIDE4LCAxOSwgNjYsIDIzNSwgCi0gICAgOTYsIDE4LCAxOSwgNjYsIDIzNSwgOTksIDE4LCAxOSwgNjYsIDIzMiwgMTU2LCAxOCwgMTksIDY2LCAyMzIsIDIwOCwgMTgsIAotICAgIDE5LCA2NiwgMjMzLCA4MiwgMTgsIDE5LCA2NiwgMjMzLCA3NCwgMTgsIDE5LCA2NiwgMjMzLCAxMywgMTgsIDE5LCA2NiwgCi0gICAgMjMzLCAxNTcsIDE4LCAxOSwgNjYsIDI0NywgMTAzLCAxOCwgMTksIDY2LCAyNDcsIDEwNCwgMTgsIDE5LCA2NiwgMjQ3LCAKLSAgICAxMDcsIDE4LCAxOSwgNjYsIDI0NywgMTA2LCAxOCwgMTksIDY2LCAyNDcsIDEwNSwgMTgsIDE5LCA2NiwgMjQ3LCAxMDgsIAotICAgIDE4LCAxOSwgNjYsIDIzMywgMTUsIDE4LCAxOSwgNjYsIDIzMywgMTcsIDE4LCAxOSwgNjYsIDIzMywgMjEsIDE4LCAxOSwgCi0gICAgNjYsIDIzMywgMjAsIDE4LCAxOSwgNjYsIDIzMywgMTksIDE4LCAxOSwgNjYsIDIzMywgMjUsIDE4LCAxOSwgNjYsIDIxNywgCi0gICAgMywgMTgsIDE5LCA2NiwgMjE3LCA1LCAxOCwgMTksIDY2LCAyMTcsIDgsIDE4LCAxOSwgNjYsIDIxNywgNywgMTgsIDE5LCAKLSAgICA2NiwgMjE3LCA2LCAxOCwgMTksIDY2LCAyMTcsIDksIDE4LCAxOSwgNjYsIDIxNiwgMjU1LCAxOCwgMTksIDY2LCAyMTcsIDAsIAotICAgIDE4LCAxOSwgNjYsIDIxNywgMTEsIDE4LCAxOSwgNjYsIDIxNywgMTAsIDE4LCAxOSwgNjYsIDIxNywgMSwgMTgsIDE5LCA2NiwgCi0gICAgMjE3LCAxMiwgMTgsIDE5LCA2NiwgMjEyLCA4LCAxOCwgMTksIDY2LCAyMTIsIDE2LCAxOCwgMTksIDY2LCAyMTIsIDg3LCAKLSAgICAxOCwgMTksIDY2LCAyMTIsIDg1LCAxOCwgMTksIDY2LCAyMTIsIDM3LCAxOCwgMTksIDY2LCAyMTIsIDEwOSwgMTgsIDE5LCAKLSAgICA2NiwgMjEyLCAxNTIsIDE4LCAxOSwgNjYsIDcwLCAyMTIsIDE1MiwgMTgsIDE5LCA2NiwgMjQ1LCAyMzksIDE4LCAxOSwgNjYsIAotICAgIDI0NSwgMjQwLCAxOCwgMTksIDY2LCAyNDUsIDI0NywgMTgsIDE5LCA2NiwgMjQ1LCAyNDYsIDE4LCAxOSwgNjYsIDI0NSwgCi0gICAgMjQyLCAxOCwgMTksIDY2LCAyNDUsIDI0OSwgMTgsIDE5LCA2NiwgMjE5LCAyNywgMTgsIDE5LCA2NiwgMjE5LCAyNDIsIDE4LCAKLSAgICAxOSwgNjYsIDIyMiwgMTAwLCAxOCwgMTksIDY2LCAyMjIsIDg5LCAxOCwgMTksIDY2LCAyMjAsIDExNywgMTgsIDE5LCA2NiwgCi0gICAgMjIyLCAyMDIsIDE4LCAxOSwgNjYsIDIyMCwgMTUwLCAxOCwgMTksIDY2LCAyMjAsIDE4NywgMTgsIDE5LCA2NiwgMjIwLCAKLSAgICAyNDMsIDE4LCAxOSwgNjYsIDIyMCwgMjQxLCAxOCwgMTksIDY2LCAyMjAsIDIxMiwgMTgsIDE5LCA2NiwgMjIxLCAyNCwgMTgsIAotICAgIDE5LCA2NiwgMjIxLCAyNiwgMTgsIDE5LCA2NiwgMjE2LCAxMjIsIDE4LCAxOSwgNjYsIDIxNiwgMTI0LCAxOCwgMTksIDY2LCAKLSAgICAyMTYsIDEzNiwgMTgsIDE5LCA2NiwgMjE2LCAxMzUsIDE4LCAxOSwgNjYsIDIxNiwgMTI1LCAxOCwgMTksIDY2LCAyMTYsIAotICAgIDE0MSwgMTgsIDE5LCA2NiwgMjUwLCA2LCAxOCwgMTksIDY2LCAyNTAsIDIzLCAxOCwgMTksIDY2LCAyNTAsIDY3LCAxOCwgCi0gICAgMTksIDY2LCAyNTAsIDY0LCAxOCwgMTksIDY2LCAyNTAsIDQ3LCAxOCwgMTksIDY2LCAyNTAsIDkyLCAxOCwgMTksIDY2LCAKLSAgICAyMTYsIDg5LCAxOCwgMTksIDY2LCAyMTYsIDkwLCAxOCwgMTksIDY2LCAyMTYsIDkzLCAxOCwgMTksIDY2LCAyMTYsIDkyLCAKLSAgICAxOCwgMTksIDY2LCAyMTYsIDkxLCAxOCwgMTksIDY2LCAyMTYsIDk0LCAxOCwgMTksIDI1MCwgNDgsIDUyLCAxOCwgMTksIAotICAgIDI0MywgMjAwLCAyMTksIDY5LCAxOCwgMTksIDIyNCwgMjI0LCAxOCwgMTksIDIyOSwgMTU2LCAxOCwgMTksIDIyOCwgMTkzLCAKLSAgICAxOCwgMTksIDIyOCwgMTkyLCAxOCwgMTksIDIyOCwgMTkxLCAxOCwgMTksIDIyOCwgMTkwLCAxOCwgMTksIDIyOCwgMTk1LCAKLSAgICAxOCwgMTksIDIyOCwgMTk0LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc5LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc4LCAKLSAgICAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc3LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc2LCAxOCwgMTksIDIxMywgMjAwLCAKLSAgICAyMTcsIDc1LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDgyLCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDgxLCAxOCwgMTksIAotICAgIDIxMywgMjAwLCA0MCwgMjE3LCAxNjMsIDE4LCAxOSwgMjUxLCAxNDEsIDIxNCwgODIsIDIyNywgOTIsIDIxOSwgMjA3LCA3NywgCi0gICAgMjI3LCA5MiwgMSwgMjUxLCAyMjQsIDIyNywgOTIsIDEsIDIzMiwgMTQ1LCAyMjcsIDkyLCAxLCAyNDQsIDEyMCwgMjI3LCAKLSAgICA5MiwgMSwgMjIyLCAxODYsIDIyNywgOTIsIDEsIDIyOSwgMjQsIDIyNywgOTIsIDEsIDIxNSwgMTk1LCAyMjcsIDkyLCAxLCAKLSAgICAyNDgsIDE0MiwgMjI3LCA5MiwgMSwgMjE3LCAzMywgMjI3LCA5MiwgMSwgMjQ5LCAxNjcsIDIyNywgOTIsIDEsIDI1MCwgCi0gICAgMTE0LCAyMjcsIDkyLCAxLCAyMzAsIDE2MSwgMjI3LCA5MiwgMSwgMjQyLCAxMzIsIDIyNywgOTIsIDEsIDIyOSwgMTQ3LCAKLSAgICAyMjcsIDkyLCAxLCAyMTksIDYyLCAyMjcsIDkyLCAxLCAyMjMsIDQ2LCAyMjcsIDkyLCAxLCAyNTQsIDEwNSwgMjI3LCA5MiwgCi0gICAgMSwgMjI3LCA1MywgMjI3LCA5MiwgMSwgMjE1LCAxMjEsIDIyNywgOTIsIDEsIDI0NSwgMTg3LCAyMjcsIDkyLCAxLCAyMzUsIAotICAgIDE4NiwgMjI3LCA5MiwgMSwgMjQ1LCAxODgsIDIyNywgOTIsIDEsIDIyNywgMjQsIDIyNywgOTIsIDEsIDIxNSwgMTc2LCAKLSAgICAyMjcsIDkyLCAxLCAyMzYsIDM0LCAyMjcsIDkyLCAxLCAyNDUsIDE4NSwgMjI3LCA5MiwgMSwgMjI2LCA3NywgMjI3LCA5MiwgCi0gICAgMjQ0LCAxMTksIDc3LCAyMjcsIDkyLCAyMjMsIDIwMiwgMjQ0LCAxMTksIDc3LCAxNjgsIDEsIDI0NCwgMTEwLCAyNDQsIAotICAgIDEwMiwgMjQ0LCAxMjQsIDI0NCwgMjMwLCAxNjgsIDEsIDIxNSwgNzksIDE2OCwgMSwgMjE1LCAxMDYsIDIxNSwgMTIyLCA2OSwgCi0gICAgMTY4LCAxLCAyMTIsIDIwNSwgMTY4LCAxLCAyMTMsIDEwNSwgMTY4LCAxLCAyMTQsIDgyLCAxNjgsIDEsIDIxNywgODQsIAotICAgIDIxNywgODMsIDIxNywgMTA0LCAxNjgsIDEsIDI0NSwgMjUsIDE2OCwgMSwgMjU0LCA0LCA2MSwgMTY4LCAxLCAyMjcsIDEwLCAKLSAgICA3NSwgMTY4LCAxLCAyNTQsIDE3NywgNjEsIDE2OCwgMSwgMjU0LCAxMzIsIDE2OCwgMSwgMjMyLCAxODYsIDc1LCAxNjgsIDEsIAotICAgIDIyMCwgMTY4LCA3NSwgMTY4LCAxLCA3NSwgMTY4LCAxLCAyMjcsIDk5LCAxNjgsIDEsIDIyNywgNjIsIDE2OCwgMSwgMjI0LCAKLSAgICA1NSwgMjI0LCA2NywgMjIzLCAyNDQsIDE0OSwgMTY4LCAxLCAyMzQsIDE5OSwgMTY4LCAxLCAyNTAsIDExMSwgMTY4LCAxLCAKLSAgICAyMzQsIDIwMCwgMjM1LCAyNywgMTY4LCAxLCAyNDMsIDE3NywgMTY4LCAxLCAyNDUsIDk2LCAxNjgsIDEsIDI0MywgMzQsIAotICAgIDI0MiwgNDcsIDI0MywgMTc3LCAxNjgsIDEsIDI0MywgNzIsIDE2OCwgMSwgMjEzLCAxNzYsIDIxMywgMTcwLCAyMTQsIDgyLCAKLSAgICAxNjgsIDEsIDI0MiwgMTksIDI0MiwgNDEsIDE2OCwgMSwgMjQyLCAyMywgMjQyLCA0MSwgMTY4LCAxLCAyMzIsIDE4OCwgCi0gICAgMjQyLCA0MSwgMTY4LCAxLCAyMjAsIDE3MSwgMjQyLCA0MSwgMTY4LCAxLCAyMzAsIDcsIDIyOCwgMTgsIDIzMCwgOCwgMjA0LCAKLSAgICAxNjgsIDEsIDIyMCwgMTY5LCAyMDQsIDE2OCwgMSwgMjQ2LCA2OSwgMTY4LCAxLCAyMzUsIDE2NiwgMjM1LCAxNzAsIDIzNSwgCi0gICAgMTYwLCA3MiwgMTY4LCAxLCA3NCwgMTY4LCAxLCAyMzUsIDExOCwgMjM1LCAxNDIsIDE2OCwgMSwgMjQzLCAxOSwgMTY4LCAxLCAKLSAgICAyMzIsIDE4OSwgMjU0LCAxNDgsIDE2OCwgMSwgMjIwLCAxNzMsIDYxLCAxNjgsIDEsIDIzNSwgMTUyLCAyNDUsIDcyLCAxNjgsIAotICAgIDEsIDIyNiwgNDAsIDIyNiwgNjEsIDIyNiwgMjI5LCAxNjgsIDEsIDI1NCwgNzIsIDI0NSwgNzEsIDE2OCwgMSwgMjE5LCAKLSAgICAyMTEsIDE5NywgMTY4LCAxLCAyMjAsIDEwNSwgMjMyLCAxODUsIDE5NywgMTY4LCAxLCAyMjAsIDE2NywgMTk3LCAxNjgsIDEsIAotICAgIDI1MCwgMjUyLCAxNjgsIDEsIDIxMiwgMTUyLCAxNjgsIDEsIDIxNywgMTYsIDIxNywgMjYsIDIxNiwgNywgMjE4LCA5OSwgCi0gICAgMTY4LCAxLCAyMjAsIDE2NiwgMjE4LCA5OSwgMTY4LCAxLCAyNDksIDMsIDE2OCwgMSwgMjUxLCAyMDgsIDI1MSwgMjExLCAKLSAgICAyNTEsIDE0NywgMjUzLCA3NCwgMTY4LCAxLCAyMjAsIDE3MiwgMjUzLCA3NCwgMTY4LCAxLCAyNDYsIDY4LCAxNjgsIDEsIAotICAgIDIyNywgMzYsIDE2OCwgMSwgMjQ1LCAxNTMsIDI0NSwgMTU1LCA3NCwgMTY4LCAxLCAyMzEsIDI0MSwgMjMxLCAyNDksIDE4MywgCi0gICAgMTY4LCAxLCAyMzIsIDE4NywgMTgzLCAxNjgsIDEsIDIyMCwgMTcwLCAxODMsIDE2OCwgMSwgMjMzLCA5NywgMjMzLCAxMzcsIAotICAgIDIzMiwgMTk2LCAxNTAsIDE2OCwgMSwgMjQ2LCA3MCwgMTY4LCAxLCAyMzUsIDIyNywgMTY4LCAxLCAyMzUsIDIyOCwgMTY4LCAKLSAgICAxLCAyNDgsIDE1MywgMjQ4LCAxNTgsIDI0OSwgMywgMTY4LCAxLCAyMjcsIDYsIDI0NSwgMjQsIDc1LCAxNjgsIDEsIDI0NSwgCi0gICAgMTgzLCAxNjgsIDEsIDIzNSwgMTg1LCAxNjgsIDEsIDI0OSwgMjEsIDE2OCwgMSwgMjUwLCAyMDUsIDE2OCwgMSwgMjUwLCAKLSAgICAxMjMsIDE2OCwgMSwgMjE5LCAxMDAsIDE2OCwgMSwgMjMyLCAxODQsIDE2OCwgMSwgMjIwLCAxNjUsIDE2OCwgMSwgMjQwLCAKLSAgICAxMDMsIDE2OCwgMSwgMjI0LCAyNDAsIDE2OCwgMSwgMjEzLCAxNjYsIDE2OCwgMjIwLCA4MSwgMjI1LCAyNiwgMTY4LCAyMzAsIAotICAgIDE1NSwgMjI1LCAyNiwgMTY4LCAyNDksIDcxLCAyMjUsIDI2LCAxNjgsIDI1MywgMTc3LCA4NywgMTY4LCAyMTYsIDQ3LCA4NywgCi0gICAgMTY4LCAyNTEsIDIyMywgODcsIDIxOCwgMzIsIDEsIDYxLCAyMTgsIDMyLCAxLCA3MiwgMjE4LCAzMiwgMSwgNjksIDIxOCwgCi0gICAgMzIsIDEsIDE4MSwgMjE4LCAzMiwgMSwgMjQzLCAxMTAsIDIxOCwgMzIsIDEsIDIyOSwgMTU5LCAyMTgsIDMyLCAxLCAyMTgsIAotICAgIDUyLCAyMTgsIDMyLCAxLCAyNDgsIDE2NCwgMjE4LCAzMiwgMSwgMjA1LCAyMTgsIDMyLCAxLCAxOTMsIDIxOCwgMzIsIDEsIAotICAgIDI1MiwgMTA3LCAyMTgsIDMyLCAxLCAxODgsIDIxOCwgMzIsIDEsIDE4NiwgMjE4LCAzMiwgMSwgMjMzLCAxNTcsIDIxOCwgCi0gICAgMzIsIDEsIDIxNCwgNDksIDIxOCwgMzIsIDEsIDIyMiwgMjAyLCAyMTgsIDMyLCAxLCAxNTksIDIxOCwgMzIsIDMwLCA1LCAKLSAgICA3MiwgMjE4LCAzMiwgMzAsIDUsIDY5LCAyMTgsIDMyLCA1LCAyMTQsIDEzMywgMjQxLCAyNDYsIDEsIDYxLCAyNDEsIDI0NiwgCi0gICAgMSwgNzIsIDI0MSwgMjQ2LCAxLCA2OSwgMjQxLCAyNDYsIDEsIDE4MSwgMjQxLCAyNDYsIDEsIDI0MywgMTEwLCAyNDEsIAotICAgIDI0NiwgMSwgMjI5LCAxNTksIDI0MSwgMjQ2LCAxLCAyMTgsIDUyLCAyNDEsIDI0NiwgMSwgMjQ4LCAxNjQsIDI0MSwgMjQ2LCAKLSAgICAxLCAyMDUsIDI0MSwgMjQ2LCAxLCAxOTMsIDI0MSwgMjQ2LCAxLCAyNTIsIDEwNywgMjQxLCAyNDYsIDEsIDE4OCwgMjQxLCAKLSAgICAyNDYsIDEsIDE4NiwgMjQxLCAyNDYsIDEsIDIwMywgMjQxLCAyNDYsIDEsIDIzMywgMTU3LCAyNDEsIDI0NiwgMSwgMjE0LCAKLSAgICA0OSwgMjQxLCAyNDYsIDEsIDIyMiwgMjAyLCAyNDEsIDI0NiwgMSwgMTU5LCAyNDEsIDI0NiwgMzAsIDUsIDcyLCAyNDEsIAotICAgIDI0NiwgMzAsIDUsIDY5LCAyNDEsIDI0NiwgNSwgMjI2LCAxNzYsIDIyNiwgMiwgMjIwLCA4MSwgMjI1LCAyNiwgMjI2LCAyLCAKLSAgICA1MSwgMjI1LCAyNiwgMjUxLCA0OSwgMSwgNjEsIDI1MSwgNDksIDEsIDcyLCAyNTEsIDQ5LCAxLCA2OSwgMjUxLCA0OSwgMSwgCi0gICAgMTgxLCAyNTEsIDQ5LCAxLCAyNDMsIDExMCwgMjUxLCA0OSwgMSwgMjI5LCAxNTksIDI1MSwgNDksIDEsIDIxOCwgNTIsIAotICAgIDI1MSwgNDksIDEsIDI0OCwgMTY0LCAyNTEsIDQ5LCAxLCAyMDUsIDI1MSwgNDksIDEsIDE5MywgMjUxLCA0OSwgMSwgMjUyLCAKLSAgICAxMDcsIDI1MSwgNDksIDEsIDE4OCwgMjUxLCA0OSwgMSwgMTg2LCAyNTEsIDQ5LCAxLCAyMDMsIDI1MSwgNDksIDEsIDIzMywgCi0gICAgMTU3LCAyNTEsIDQ5LCAxLCAyMTQsIDQ5LCAyNTEsIDQ5LCAxLCAyMjIsIDIwMiwgMjUxLCA0OSwgMSwgMTU5LCAyNTEsIDQ5LCAKLSAgICAzMCwgNSwgNzIsIDI1MSwgNDksIDMwLCA1LCA2OSwgMjE4LCAzMSwgMSwgNjEsIDIxOCwgMzEsIDEsIDcyLCAyMTgsIDMxLCAKLSAgICAxLCA2OSwgMjE4LCAzMSwgMSwgMTgxLCAyMTgsIDMxLCAxLCAyNDMsIDExMCwgMjE4LCAzMSwgMSwgMjI5LCAxNTksIDIxOCwgCi0gICAgMzEsIDEsIDIxOCwgNTIsIDIxOCwgMzEsIDEsIDI0OCwgMTY0LCAyMTgsIDMxLCAxLCAyMDUsIDIxOCwgMzEsIDEsIDE5MywgCi0gICAgMjE4LCAzMSwgMSwgMjUyLCAxMDcsIDIxOCwgMzEsIDEsIDE4OCwgMjE4LCAzMSwgMSwgMTg2LCAyMTgsIDMxLCAxLCAyMzMsIAotICAgIDE1NywgMjE4LCAzMSwgMSwgMjE0LCA0OSwgMjE4LCAzMSwgMSwgMjIyLCAyMDIsIDIxOCwgMzEsIDMwLCA1LCA3MiwgMjE4LCAKLSAgICAzMSwgMzAsIDUsIDY5LCA4NCwgMSwgMTgxLCA4NCwgMSwgMjM0LCAxMzgsIDg0LCAxLCAyMzQsIDM3LCA4NCwgMSwgMjM0LCAKLSAgICAxMTMsIDg0LCAxLCAyMjksIDkwLCA4NCwgMSwgMjUwLCAyMTksIDg0LCAxLCAyNTAsIDkyLCA4NCwgMSwgMjQ5LCAxNzUsIAotICAgIDg0LCAxLCAyNTAsIDIzLCA4NCwgMSwgMjI3LCAyNTMsIDg0LCAxLCAyNDgsIDE2NCwgODQsIDEsIDIxNiwgMTA1LCA4NCwgMSwgCi0gICAgMjQ3LCA5OSwgODQsIDEsIDIxNiwgMTAwLCA4NCwgMSwgMjI4LCAxODgsIDg0LCAxLCAyMTgsIDUyLCA4NCwgMSwgMjE3LCAKLSAgICAxNjEsIDg0LCAxLCAxMDgsIDg0LCAxLCAyMTcsIDEwOSwgODQsIDEsIDIyOCwgMTg1LCA4NCwgMSwgMjUyLCAxMDcsIDg0LCAKLSAgICAxLCAyMjYsIDIzLCA4NCwgMSwgMjI1LCAxNTAsIDg0LCAxLCAyMjUsIDI1MywgODQsIDEsIDIzMCwgMjMxLCA4NCwgMSwgCi0gICAgMjEyLCAyMzUsIDg0LCAxLCAyMjMsIDExMiwgODQsIDEsIDIzMiwgMjA4LCA4NCwgMSwgMjE0LCAxMTksIDg0LCAxLCAyMjEsIAotICAgIDI0LCA4NCwgMSwgMjE5LCAxMjEsIDg0LCAxLCAyMjIsIDIwMiwgODQsIDEsIDE1OSwgODQsIDEsIDIzMywgMTU3LCA4NCwgMSwgCi0gICAgMjI0LCAyMzIsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMjE4LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDIzMSwgODQsIAotICAgIDIzNSwgMjQwLCAzMCwgMjI0LCAxOTgsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTkzLCA4NCwgMjM1LCAyNDAsIDMwLCAKLSAgICAyMjQsIDE3NSwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxNDcsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTM1LCA4NCwgCi0gICAgMjM1LCAyNDAsIDMwLCAyMjQsIDEzNCwgODQsIDIzNSwgMjQwLCAzMCwgMjIzLCAxMiwgODQsIDIzNSwgMjQwLCAzMCwgMjIzLCAKLSAgICA1LCA4NCwgMjM1LCAyNDAsIDMwLCAyMzIsIDEyMSwgODQsIDIzNSwgMjQwLCAzMCwgMjMyLCAxMTIsIDg0LCAyMzUsIDI0MCwgCi0gICAgMzAsIDIyNCwgMjEzLCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDIyNCwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxODMsIAotICAgIDIxNiwgMTUsIDExNiwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxODMsIDIxNiwgMTUsIDEwOSwgODQsIDIzNSwgMjQwLCAzMCwgCi0gICAgMjI0LCAyMTQsIDg0LCAzMCwgMjM1LCAyMjYsIDI1MywgMjE1LCA4NCwgMzAsIDIzNSwgMjI2LCAyNTQsIDIzMiwgODQsIDMwLCAKLSAgICA1LCAyNTQsIDIzMiwgODQsIDMwLCA1LCA3MiwgODQsIDMwLCA1LCAyMzYsIDI4LCA4NCwgMzAsIDUsIDIxMywgMTA1LCA4NCwgCi0gICAgMzAsIDUsIDIxMiwgMTYxLCA4NCwgMzAsIDUsIDY5LCA4NCwgMzAsIDUsIDIxNSwgOTIsIDg0LCAzMCwgNSwgMjE1LCAxOTYsIAotICAgIDg0LCAzMCwgNSwgMjI3LCA5OSwgODQsIDMwLCA1LCAxODYsIDg0LCAzMCwgNSwgMjM2LCA1NSwgODQsIDMwLCA1LCA3NCwgCi0gICAgODQsIDMwLCA1LCAyNTQsIDE0OCwgODQsIDMwLCA1LCAyNTQsIDEwOCwgODQsIDMwLCA1LCAyMjcsIDQ5LCA4NCwgMzAsIDUsIAotICAgIDI1MywgMTA4LCA4NCwgNSwgMjI5LCAzNywgODQsIDUsIDIyNCwgMTksIDg0LCA1LCAyMTIsIDE3MiwgODQsIDUsIDIzMCwgCi0gICAgMTIzLCA4NCwgNSwgMjE2LCAxNzEsIDg0LCA1LCAyNTIsIDYyLCA4NCwgNSwgMjIzLCAxMDcsIDg0LCA1LCAyMTYsIDI1MSwgCi0gICAgODQsIDUsIDIzNCwgMjQ2LCA4NCwgNSwgMjU0LCAxMTAsIDg0LCA1LCAyMjIsIDE2MCwgMjIyLCAxNTQsIDg0LCA1LCAyMTQsIAotICAgIDEzMCwgODQsIDUsIDI0OSwgMTcwLCA4NCwgNSwgMjUyLCAzNywgODQsIDUsIDIzNCwgMTMxLCA4NCwgNSwgMjUyLCA1NywgCi0gICAgODQsIDUsIDI1MCwgMTk3LCAyMjUsIDIwNCwgMjMzLCAyMDksIDg0LCA1LCAyMzMsIDU0LCAyMTYsIDIzMCwgODQsIDUsIAotICAgIDI1MSwgMTk3LCA4NCwgNSwgMjI1LCAyNTUsIDIzMCwgMTY5LCA4NCwgNSwgMjM0LCAxOCwgODQsIDI0OSwgMzksIDE2LCAKLSAgICAyMjMsIDE4MSwgODQsIDUsIDI1MywgOTAsIDg0LCA1LCAyNTMsIDExMSwgODQsIDIxLCAyMTIsIDc5LCA4NCwgMjEsIDExNiwgCi0gICAgODQsIDIxLCAxMDksIDg0LCAyMSwgMTY2LCA4NCwgMjEsIDE2MywgODQsIDIxLCAxODAsIDg0LCAyMSwgMTg5LCA4NCwgMjEsIAotICAgIDE5OCwgODQsIDIxLCAxOTUsIDg0LCAyMSwgMjAwLCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMTksIDIyOSwgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjMwLCAxNDEsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgMjAzLCA4NCwgCi0gICAgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyNTEsIDIyNSwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjUxLCAzMiwgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA5NSwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA4OSwgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA4NywgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA5MywgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA5MSwgODEsIDI1MSwgMTU5LCA4MSwgMjQ1LCAxMjAsIDgxLCAyNDksIDE1NywgCi0gICAgODEsIDI0MywgMjAwLCAyMTksIDY5LCA4MSwgMjQ5LCAxNjQsIDgxLCAyNDMsIDIzNywgMjQ3LCA3MiwgODEsIDIxNiwgMjUwLCAKLSAgICAyMTksIDIzNiwgMjQwLCAxNjAsIDgxLCAyMjAsIDExNiwgNCwgMjUxLCA5OCwgMjMxLCAyMTcsIDgxLCAyMzEsIDI0NiwgCi0gICAgMjQ5LCAxNTcsIDgxLCAyMzEsIDI0NiwgMjQzLCAyMDAsIDIxOSwgNjksIDgxLCAyMjksIDIyLCA4MSwgMjQzLCAyMjMsIDQzLCAKLSAgICAyMjIsIDc3LCAxMTYsIDgxLCAyNDMsIDIyMywgNDMsIDIyMiwgNzcsIDEwOSwgODEsIDI0MywgMjIzLCA0MywgMjIyLCA3NywgCi0gICAgMTY2LCA4MSwgMzAsIDIyMSwgNTcsIDgxLCAyMSwgMjEyLCA3OSwgODEsIDIxLCAxMTYsIDgxLCAyMSwgMTA5LCA4MSwgMjEsIAotICAgIDE2NiwgODEsIDIxLCAxNjMsIDgxLCAyMSwgMTgwLCA4MSwgMjEsIDE4OSwgODEsIDIxLCAxOTgsIDgxLCAyMSwgMTk1LCA4MSwgCi0gICAgMjEsIDIwMCwgODEsIDEsIDYxLCA4MSwgMSwgNzQsIDgxLCAxLCA3MiwgODEsIDEsIDc1LCA4MSwgMSwgNjksIDgxLCAxLCAKLSAgICAyMjcsIDk5LCA4MSwgMSwgMjE1LCAxODMsIDgxLCAxLCAyNDUsIDE2NSwgODEsIDEsIDIwNSwgODEsIDEsIDI1NCwgMjQsIAotICAgIDgxLCAxLCAyNTIsIDEwNywgODEsIDEsIDE5MywgODEsIDEsIDIyNCwgMjMyLCA4MSwgMSwgMjQzLCAxMTAsIDgxLCAxLCAKLSAgICAxODgsIDgxLCAxLCAyMzMsIDE1NywgODEsIDEsIDIyMiwgMjAyLCA4MSwgMSwgMjIxLCAyNCwgODEsIDEsIDIxOCwgNTIsIAotICAgIDgxLCAxLCAyNDgsIDE2NCwgODEsIDEsIDI1MCwgOTIsIDgxLCAxLCAyMzUsIDEzOSwgODEsIDEsIDE4NiwgODEsIDEsIDIwMywgCi0gICAgODEsIDEsIDIxNCwgNDksIDgxLCAxLCAyNDQsIDE2NCwgODEsIDEsIDE4MSwgODEsIDEsIDIzNCwgMTM4LCA4MSwgMSwgMjE2LCAKLSAgICAxNDEsIDgxLCAxLCAyMTIsIDEwOSwgODEsIDEsIDI0MiwgMjcsIDgxLCAxLCAyMTIsIDksIDgxLCAxLCAyMzMsIDI1LCA4MSwgCi0gICAgMSwgMjEyLCA2MiwgODEsIDEsIDI1MCwgNDcsIDgxLCAxLCAyMTYsIDI1MCwgMTg0LCAzMCwgNTIsIDgxLCAxLCAyMTYsIAotICAgIDI1MCwgNzQsIDgxLCAxLCAyMTYsIDI1MCwgNzIsIDgxLCAxLCAyMTYsIDI1MCwgNzUsIDgxLCAxLCAyMTYsIDI1MCwgNjksIAotICAgIDgxLCAxLCAyMTYsIDI1MCwgMjI3LCA5OSwgODEsIDEsIDIxNiwgMjUwLCAyMTUsIDE4MywgODEsIDEsIDIxNiwgMjUwLCAKLSAgICAyNTQsIDI0LCA4MSwgMSwgMjE2LCAyNTAsIDI1MiwgMTA3LCA4MSwgMSwgMjE2LCAyNTAsIDE5MywgODEsIDEsIDIxNiwgCi0gICAgMjUwLCAyMjQsIDIzMiwgODEsIDEsIDIxNiwgMjUwLCAyNDMsIDExMCwgODEsIDEsIDIxNiwgMjUwLCAxODgsIDgxLCAxLCAKLSAgICAyMTYsIDI1MCwgMjE4LCA1MiwgODEsIDEsIDIxNiwgMjUwLCAyNDgsIDE2NCwgODEsIDEsIDIxNiwgMjUwLCAyNTAsIDkyLCAKLSAgICA4MSwgMSwgMjE2LCAyNTAsIDIzNSwgMTM5LCA4MSwgMSwgMjE2LCAyNTAsIDIxNiwgMTQxLCA4MSwgMSwgMjE2LCAyNTAsIAotICAgIDE4NiwgODEsIDEsIDIxNiwgMjUwLCAyMTQsIDQ5LCA4MSwgMSwgMjE2LCAyNTAsIDE4MSwgODEsIDEsIDIxNiwgMjUwLCAKLSAgICAyNDMsIDEwNywgODEsIDEsIDIxNiwgMjUwLCAyNDIsIDI3LCA4MSwgMSwgMjE2LCAyNTAsIDIzNSwgMTA5LCA4MSwgMSwgCi0gICAgMjE2LCAyNTAsIDIyOSwgNjIsIDgxLCAxLCAyMTYsIDI1MCwgMjQ1LCAyNDksIDgxLCAxLCAyMjAsIDExNiwgNzQsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgNzIsIDgxLCAxLCAyMjAsIDExNiwgMjM1LCAxNTAsIDgxLCAxLCAyMjAsIDExNiwgMjE1LCAxODMsIDgxLCAKLSAgICAxLCAyMjAsIDExNiwgNjksIDgxLCAxLCAyMjAsIDExNiwgMjU0LCAyNCwgODEsIDEsIDIyMCwgMTE2LCAxODEsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjQzLCAxMTAsIDgxLCAxLCAyMjAsIDExNiwgMTU5LCA4MSwgMSwgMjIwLCAxMTYsIDE5MywgODEsIDEsIAotICAgIDIyMCwgMTE2LCAyMjEsIDI0LCA4MSwgMSwgMjIwLCAxMTYsIDIxOCwgNTIsIDgxLCAxLCAyMjAsIDExNiwgMjQ4LCAxNjQsIAotICAgIDgxLCAxLCAyMjAsIDExNiwgMjM1LCAxMzksIDgxLCAxLCAyMjAsIDExNiwgMjQ0LCAxNjQsIDgxLCAxLCAyMjAsIDExNiwgCi0gICAgMjQzLCAxMDcsIDgxLCAxLCAyMjAsIDExNiwgMjQyLCAyNywgODEsIDEsIDIyMCwgMTE2LCAyMTYsIDE0MSwgODEsIDEsIAotICAgIDIyMCwgMTE2LCAyMTIsIDEwOSwgODEsIDEsIDIyMCwgMTE2LCAyMjQsIDc0LCA4MSwgMSwgMjIwLCAxMTYsIDI1MCwgOTIsIAotICAgIDgxLCAxLCAyMjAsIDExNiwgMjEyLCA3NSwgODEsIDEsIDIzMSwgMjQ2LCA3MiwgODEsIDEsIDIzMSwgMjQ2LCAxODEsIDgxLCAKLSAgICAxLCAyMzEsIDI0NiwgMjAzLCA4MSwgMSwgMjMxLCAyNDYsIDI0NCwgMTY0LCA4MSwgMSwgMjMxLCAyNDYsIDIxMiwgNzUsIAotICAgIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNTMsIDI0MywgMTE2LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjE0LCAKLSAgICAxMjksIDExNiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgMTMxLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgCi0gICAgMjE1LCAxOTMsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMzUsIDE5MSwgMjE1LCAxOTMsIDgxLCAxLCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCAyNTIsIDc0LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMTMzLCAyNTIsIDc0LCA4MSwgMSwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgNjEsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCA3MiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDE4MSwgCi0gICAgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIyOSwgMTU5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjUwLCAyMTksIDgxLCAKLSAgICAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDExNSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxNiwgMTA1LCA4MSwgMSwgCi0gICAgMjU0LCA3MSwgMjQzLCA5MiwgMjQ4LCA4NiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIyOCwgMTk4LCA4MSwgMSwgMjU0LCAKLSAgICA3MSwgMjQzLCA5MiwgMjE4LCA1MiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgMTY0LCA4MSwgMSwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjI2LCAyMywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxOSwgMTU3LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjEyLCA3NSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgCi0gICAgMTA5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjU0LCAxMTQsIDgxLCAxLCAyMTYsIDI1MCwgMjU0LCA3MSwgMjQzLCAKLSAgICA5MiwgMjE4LCA1MiwgODEsIDEsIDIxNiwgMjUwLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIDc1LCA4MSwgMSwgMjMxLCAyNDYsIAotICAgIDI1NCwgNzEsIDI0MywgOTIsIDI0MiwgMjI1LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDIyOSwgMTU5LCAKLSAgICA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI1MCwgMjE5LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDIzNSwgMTE1LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDIxNiwgMTE1LCA4MSwgMSwgCi0gICAgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgNzAsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgCi0gICAgMjE4LCA1MiwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNDcsIDIzMiwgODEsIDEsIDIzMSwgMjQ2LCAKLSAgICAyNTQsIDcxLCAyNDMsIDkyLCAyMTksIDE1NywgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNDksIDE1LCAKLSAgICA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgNzUsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMjEyLCAxMDksIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAxNTEsIDY5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCAKLSAgICA5MiwgMTUxLCAxODYsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjUxLCAxOTUsIDgxLCAxLCAyNTQsIAotICAgIDcxLCAyNDMsIDkyLCAyNDgsIDE1NCwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMzMsIDI1LCAxOCwgCi0gICAgMTksIDIyNiwgMjMzLCAxOCwgMTksIDI1MywgODMsIDE4LCAxOSwgMjU0LCAxODgsIDE4LCAxOSwgMjE0LCA5LCAxOCwgMTksIAotICAgIDIyNSwgMTAxLCAxOCwgMTksIDIyNiwgMTAzLCAxOCwgMTksIDIyNCwgMjQ5LCAxOCwgMTksIDIxNywgMjM4LCAxOCwgMTksIAotICAgIDIzNCwgMTk1LCAxOCwgMTksIDIzMywgMjAxLCAxOCwgMTksIDIzMSwgMTk2LCAxOCwgMTksIDIyOCwgMTQ4LCAxOCwgMTksIAotICAgIDIzMCwgMywgMTgsIDE5LCAyMzMsIDkyLCAxOCwgMTksIDIxOSwgMjA5LCAxOCwgMTksIDIyMiwgMTI5LCAxOCwgMTksIDIyMCwgCi0gICAgMTU2LCAxOCwgMTksIDIyMCwgMjQ2LCAxOCwgMTksIDIyMCwgMTI3LCAxOCwgMTksIDIxMiwgMjExLCAxOCwgMTksIDIxMywgCi0gICAgNDMsIDE4LCAxOSwgMjI0LCAyNywgMTgsIDE5LCAyMjgsIDI4LCAxOCwgMTksIDIyNywgODIsIDIyOCwgMjgsIDE4LCAxOSwgCi0gICAgMjI4LCAyNywgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI3LCAxOCwgMTksIDIyOCwgMjYsIDE4LCAxOSwgMjI3LCA4MiwgMjI4LCAKLSAgICAyNiwgMTgsIDE5LCAyMjgsIDI1LCAxOCwgMTksIDIyNywgODIsIDIyOCwgMjUsIDE4LCAxOSwgMjIzLCAxNywgMTgsIDE5LCAKLSAgICAyMjMsIDE2LCAxOCwgMTksIDIyMywgMTUsIDE4LCAxOSwgMjIzLCAxNCwgMTgsIDE5LCAyMjMsIDEzLCAxOCwgMTksIDIyMywgCi0gICAgMjEsIDE4LCAxOSwgMjI3LCA4MiwgMjI2LCAyMjksIDE4LCAxOSwgMjI3LCA4MiwgMjE4LCA5OSwgMTgsIDE5LCAyMjcsIDgyLCAKLSAgICAyMzUsIDI3LCAxOCwgMTksIDIyNywgODIsIDI1MCwgMjUyLCAxOCwgMTksIDIyNywgODIsIDE4MywgMTgsIDE5LCAyMjcsIAotICAgIDgyLCAyMDQsIDE4LCAxOSwgMjI3LCA4MiwgMTk3LCAxOCwgMTksIDIyNywgODIsIDIyMSwgMjYsIDE4LCAxOSwgMjQ1LCAKLSAgICAxNzUsIDIxNCwgODIsIDE4LCAxOSwgMjEzLCAyNDgsIDIxNCwgODIsIDE4LCAxOSwgNDAsIDMsIDIyMywgMTMwLCAxOCwgMTksIAotICAgIDQwLCAyMjQsIDQ4LCAyNDcsIDc0LCAxOCwgMTksIDIyNCwgMTEyLCAyMjMsIDE4LCAxOCwgMTksIDE0OCwgMjMyLCAxODAsIAotICAgIDE4LCAxOSwgMTQ4LCAyMzMsIDE1NiwgMTgsIDE5LCAyMTcsIDgwLCAxOCwgMTksIDIxNywgODIsIDE4LCAxOSwgMjE2LCA5NywgCi0gICAgMTgsIDE5LCAyMTYsIDk5LCAxOCwgMTksIDIxNiwgMTA0LCAxOCwgMTksIDIxNywgMiwgMTgsIDE5LCAyMTcsIDQsIDE4LCAKLSAgICAxOSwgMjIyLCAxMjcsIDIyMCwgMTMyLCAxOCwgMTksIDIyMiwgMTI3LCAyMjAsIDE4MSwgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMjQxLCAzOSwgMTgsIDE5LCA2NiwgMjQyLCA1NCwgMTgsIDE5LCA2NiwgMjQ4LCAzLCAyNDMsIDMxLCAxOCwgMTksIDY2LCAKLSAgICAyNDMsIDEwNywgMTgsIDE5LCA2NiwgMjQyLCA1OSwgMTgsIDE5LCAyMjIsIDEyNywgMjM1LCAzNywgMTgsIDE5LCA2NiwgCi0gICAgMjM1LCAzNSwgMTgsIDE5LCAyNTEsIDI0NCwgMjQ4LCAzLCAxNTAsIDE4LCAxOSwgMjUxLCAyNDQsIDI0OCwgMywgMTQ5LCAKLSAgICAxOCwgMTksIDY2LCAyNDcsIDI1NCwgMTk3LCAyMDksIDIxNCwgMTAzLCAyMzMsIDM0LCAyMDksIDEsIDE4MSwgMjA5LCAxLCAKLSAgICAyMzQsIDEzOCwgMjA5LCAxLCAyNDMsIDExMCwgMjA5LCAxLCAyNDIsIDIyNSwgMjA5LCAxLCAyMjksIDE1OSwgMjA5LCAxLCAKLSAgICAyNTAsIDIxOSwgMjA5LCAxLCAyNTAsIDkyLCAyMDksIDEsIDIzNSwgMTM5LCAyMDksIDEsIDIzNSwgMTE1LCAyMDksIDEsIAotICAgIDIxMywgNjAsIDIwOSwgMSwgMjE4LCA1MiwgMjA5LCAxLCAyMTcsIDE2MSwgMjA5LCAxLCAyNDgsIDE2NCwgMjA5LCAxLCAKLSAgICAyNDcsIDIzMiwgMjA5LCAxLCAyMDUsIDIwOSwgMSwgMTkzLCAyMDksIDEsIDIyNiwgMjMsIDIwOSwgMSwgMjUyLCAxMDcsIAotICAgIDIwOSwgMSwgMjUxLCAxOTUsIDIwOSwgMSwgMTg4LCAyMDksIDEsIDE4NiwgMjA5LCAxLCAyMDMsIDIwOSwgMSwgMjMzLCAKLSAgICAxNTcsIDIwOSwgMSwgMjE0LCA0OSwgMjA5LCAxLCAyMjEsIDI0LCAyMDksIDEsIDIxOSwgMTU3LCAyMDksIDEsIDIyMiwgCi0gICAgMjAyLCAyMDksIDEsIDE1OSwgMjA5LCAzMCwgNSwgNjEsIDIwOSwgMzAsIDUsIDcyLCAyMDksIDMwLCA1LCA2OSwgMjA5LCAKLSAgICAzMCwgNSwgMjQ1LCAxNjUsIDIwOSwgMzAsIDUsIDI1NCwgMTA4LCAyMDksIDMwLCA1LCAyMjcsIDQ5LCAyMDksIDMwLCA1LCAKLSAgICAyNTMsIDEwOCwgMjA5LCAzMCwgNSwgNzQsIDIwOSwgMzAsIDUsIDc1LCAyMDksIDIxOSwgMTgsIDEsIDE4NiwgMjA5LCAyMTksIAotICAgIDE4LCAxLCAyMDMsIDIwOSwgMjE5LCAxOCwgMSwgMjE0LCA0OSwgMjA5LCAzLCAxLCAxODEsIDIwOSwgMywgMSwgMjI5LCAKLSAgICAxNTksIDIwOSwgMywgMSwgMjUzLCAyNDIsIDIwOSwgMywgMSwgMjE4LCA1MiwgMjA5LCAzLCAxLCAyMDUsIDIwOSwgMywgMSwgCi0gICAgMTkzLCAyMDksIDMsIDEsIDE4OCwgMjA5LCAzLCAxLCAyMDMsIDIwOSwgMywgMSwgMjMzLCAxNTcsIDIwOSwgNSwgMjMwLCAKLSAgICAxNTksIDIwOSwgNSwgMjM0LCAxNzcsIDIwOSwgNSwgMjIyLCAyMDEsIDIwOSwgNSwgMjMyLCAxODAsIDIwOSwgMjQ0LCAyNTQsIAotICAgIDc3LCAyMDksIDIyNCwgMTU4LCA3NywgMjA5LCAyMSwgMjEyLCA3OSwgMjA5LCAyMSwgMTE2LCAyMDksIDIxLCAxMDksIDIwOSwgCi0gICAgMjEsIDE2NiwgMjA5LCAyMSwgMTYzLCAyMDksIDIxLCAxODAsIDIwOSwgMjEsIDE4OSwgMjA5LCAyMSwgMTk4LCAyMDksIDIxLCAKLSAgICAxOTUsIDIwOSwgMjEsIDIwMCwgMzgsIDIzMywgODMsIDEsIDE4MSwgMzgsIDIzMywgODMsIDEsIDIxMywgMTUzLCAzOCwgCi0gICAgMjMzLCA4MywgMSwgMjI5LCAxNTksIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDE0MSwgMzgsIDIzMywgODMsIDEsIDIyMiwgMjAyLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMTg2LCAzOCwgMjMzLCA4MywgMSwgMjE4LCA1MiwgMzgsIDIzMywgODMsIDEsIDIxNywgMTYxLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMjMzLCAxNTcsIDM4LCAyMzMsIDgzLCAxLCAxOTMsIDM4LCAyMzMsIDgzLCAxLCAyMjYsIDIzLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMTg4LCAzOCwgMjMzLCA4MywgMSwgMjQ0LCAxNjQsIDM4LCAyMzMsIDgzLCAxLCAyMTUsIDEsIAotICAgIDM4LCAyMzMsIDgzLCAxLCAxNTksIDM4LCAyMzMsIDgzLCAxLCAyMjQsIDIzMiwgMzgsIDIzMywgODMsIDEsIDIzNCwgMTM4LCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMjE2LCAxMzMsIDM4LCAyMzMsIDgzLCAxLCAyMDUsIDM4LCAyMzMsIDgzLCAxLCA2MSwgMzgsIAotICAgIDIzMywgODMsIDEsIDcyLCAzOCwgMjMzLCA4MywgMSwgMjQ1LCAxNjUsIDM4LCAyMzMsIDgzLCAxLCAyNDUsIDE1NCwgMzgsIAotICAgIDIzMywgODMsIDEsIDY5LCAzOCwgMjMzLCA4MywgMSwgMjI3LCA0OSwgMzgsIDIzMywgODMsIDEsIDc1LCAzOCwgMjMzLCA4MywgCi0gICAgMSwgMjE1LCAxODMsIDM4LCAyMzMsIDgzLCAxLCA3NCwgMzgsIDIzMywgODMsIDEsIDI1MywgMTA2LCAzOCwgMjMzLCA4MywgCi0gICAgMSwgMjU0LCAxMDgsIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzOSwgMzgsIDIzMywgODMsIDEsIDIxNiwgMjM4LCAzOCwgMjMzLCAKLSAgICA4MywgMSwgMjE2LCAyMzcsIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzNiwgMzgsIDIzMywgODMsIDEsIDIxNiwgMjM1LCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDEyNCwgMjI0LCAyMzIsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMjQsIDIzMiwgMTU2LCAzOCwgMTY1LCAKLSAgICAxLCAxMjQsIDE4MSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxMywgMTUzLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjI5LCAKLSAgICAxNTksIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxODEsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTMsIDE1MywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCAxMTUsIDIyOSwgMTU5LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjE2LCAxNDEsIDE1NiwgMzgsIDE2NSwgMSwgCi0gICAgMTI0LCAyMjIsIDIwMiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE4NiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxNiwgMTQxLCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjIyLCAyMDIsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxODYsIDE1NiwgMzgsIDE2NSwgCi0gICAgMSwgMTI0LCAyMTgsIDUyLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjE3LCAxNjEsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyMDUsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTgsIDUyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE3LCAxNjEsIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgMTE1LCAyMDUsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAxOTMsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyMjYsIDIzLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTg4LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTkzLCAxNTYsIDM4LCAKLSAgICAxNjUsIDEsIDExNSwgMjI2LCAyMywgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE4OCwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIAotICAgIDI0NCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjE1LCAxLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjMzLCAxNTcsIAotICAgIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyNDQsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxNSwgMSwgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCAxMTUsIDIzMywgMTU3LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTU5LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjQ4LCAxNjQsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyNTIsIDEwNywgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE1OSwgMTU2LCAKLSAgICAzOCwgMTY1LCAxLCAxMTUsIDI0OCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjUyLCAxMDcsIDE1NiwgMzgsIDE2NSwgCi0gICAgMSwgMTI0LCAyMzMsIDIwNiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxMywgMTI2LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgCi0gICAgMjMzLCAyMDYsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTMsIDEyNiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxOSwgMjYsIAotICAgIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTksIDI2LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAzMCwgMjIwLCAxNjMsIDE1NiwgCi0gICAgMzgsIDE2NSwgMzAsIDUsIDI1NCwgMjMyLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMzYsIDI4LCAxNTYsIDM4LCAxNjUsIDMwLCAKLSAgICA1LCA2OSwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCA5MiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgNzQsIDE1NiwgMzgsIAotICAgIDE2NSwgMzAsIDUsIDI1NCwgMTQ4LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCA3NSwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjI3LCAKLSAgICAxMjAsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgMTgzLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyNTMsIDgzLCAxNTYsIAotICAgIDM4LCAxNjUsIDMwLCA1LCAyNTQsIDE4OCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCA4NSwgMTU2LCAzOCwgMTY1LCAzMCwgCi0gICAgNSwgMjI2LCAyMzMsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIyNywgMTE3LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMTUsIAotICAgIDE4MCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjM1LCAxNTAsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDIxNSwgNzksIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgNDAsIDIyOSwgMTYxLCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAyMDQsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIAotICAgIDE4MywgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjM1LCAyNywgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjQ5LCAzLCAxNTYsIDM4LCAKLSAgICAxNjUsIDEsIDQwLCAyNTMsIDc0LCAxNTYsIDM4LCAxNjUsIDE2MCwgMjMxLCAyMjEsIDE1NiwgMzgsIDE2NSwgMTYwLCAyMzEsIAotICAgIDIyMCwgMTU2LCAzOCwgMTY1LCAyMSwgMjEyLCA3OSwgMTU2LCAzOCwgMTY1LCAyMSwgMTE2LCAxNTYsIDM4LCAxNjUsIDIxLCAKLSAgICAxMDksIDE1NiwgMzgsIDE2NSwgMjEsIDE2NiwgMTU2LCAzOCwgMTY1LCAyMSwgMTYzLCAxNTYsIDM4LCAxNjUsIDIxLCAxODAsIAotICAgIDE1NiwgMzgsIDE2NSwgMjEsIDE4OSwgMTU2LCAzOCwgMTY1LCAyMSwgMTk4LCAxNTYsIDM4LCAxNjUsIDIxLCAxOTUsIDE1NiwgCi0gICAgMzgsIDE2NSwgMjEsIDIwMCwgMTU2LCAzOCwgMTY1LCA4OCwgMjEsIDExNiwgMTU2LCAzOCwgMTY1LCA1LCAyMzMsIDE0MywgCi0gICAgMTU2LCAzOCwgMTY1LCA1LCAyMzMsIDE0MiwgODQsIDE2LCAyMjYsIDEwOSwgODQsIDE2LCAyMzAsIDE0MiwgMjM0LCAzNCwgCi0gICAgODQsIDE2LCAyMjUsIDIwNCwgMjM0LCAzNCwgODQsIDE2LCAyNTEsIDIyNiwgMjM0LCAzNCwgODQsIDE2LCAyNTEsIDMzLCAKLSAgICAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTYsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCA5MCwgMjM0LCAzNCwgODQsIDE2LCAyMjUsIAotICAgIDg4LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTQsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCA5MiwgMjM0LCAzNCwgODQsIDE2LCAKLSAgICAyNDgsIDExOCwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExNCwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExMywgMjM0LCAzNCwgCi0gICAgODQsIDE2LCAyNDgsIDExNiwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExNSwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExMiwgCi0gICAgMjM0LCAzNCwgODQsIDE2LCAyMTYsIDUxLCA4NCwgMTYsIDIzMCwgMTQyLCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDIwNCwgCi0gICAgMjIzLCAxMDYsIDg0LCAxNiwgMjUxLCAyMjYsIDIyMywgMTA2LCA4NCwgMTYsIDI1MSwgMzMsIDIyMywgMTA2LCA4NCwgMTYsIAotICAgIDIyNSwgOTYsIDIyMywgMTA2LCA4NCwgMTYsIDIyNSwgOTAsIDIyMywgMTA2LCA4NCwgMTYsIDIyNSwgODgsIDIyMywgMTA2LCAKLSAgICA4NCwgMTYsIDIyNSwgOTQsIDIyMywgMTA2LCA4NCwgMTYsIDIyNSwgOTIsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTE4LCAKLSAgICAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExNCwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTMsIDIyMywgMTA2LCA4NCwgMTYsIAotICAgIDI0OCwgMTE2LCAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExNSwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTIsIDIyMywgCi0gICAgMTA2LCAyNTEsIDUwLCAxLCAxODEsIDI1MSwgNTAsIDEsIDI0MywgMTEwLCAyNTEsIDUwLCAxLCAyMjksIDE1OSwgMjUxLCAKLSAgICA1MCwgMSwgMjI5LCAxMDgsIDI1MSwgNTAsIDEsIDE5MywgMjUxLCA1MCwgMSwgMjUyLCAxMDcsIDI1MSwgNTAsIDEsIDE4OCwgCi0gICAgMjUxLCA1MCwgMSwgMjMwLCAxNzUsIDI1MSwgNTAsIDEsIDIxOCwgNTIsIDI1MSwgNTAsIDEsIDI0OCwgMTY0LCAyNTEsIDUwLCAKLSAgICAxLCAyMDUsIDI1MSwgNTAsIDEsIDIyOCwgMTQ3LCAyNTEsIDUwLCAxLCAyNTAsIDIxOSwgMjUxLCA1MCwgMSwgMjM1LCAxMzksIAotICAgIDI1MSwgNTAsIDEsIDIyOCwgMjMsIDI1MSwgNTAsIDEsIDIyOCwgMTksIDI1MSwgNTAsIDEsIDE4NiwgMjUxLCA1MCwgMSwgCi0gICAgMjAzLCAyNTEsIDUwLCAxLCAyMzMsIDE1NywgMjUxLCA1MCwgMSwgMjE1LCAxLCAyNTEsIDUwLCAxLCAyMjIsIDIwMiwgMjUxLCAKLSAgICA1MCwgMSwgNjEsIDI1MSwgNTAsIDEsIDE1OSwgMjUxLCA1MCwgMzAsIDUsIDcyLCAyNTEsIDUwLCAzMCwgNSwgNjksIDI1MSwgCi0gICAgNTAsIDMwLCA1LCA3NCwgMjUxLCA1MCwgMzAsIDUsIDc1LCAyNTEsIDUwLCAzMCwgNSwgMjU0LCAxNDgsIDI1MSwgNTAsIAotICAgIDIyNiwgMTg3LCAyNTEsIDUwLCAyNDUsIDEwMSwgNjUsIDIyMiwgOTEsIDM4LCA4OCwgMSwgMTI0LCAxODEsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyMzQsIDEzOCwgMzgsIDg4LCAxLCAxMjQsIDIzMywgMTkzLCAzOCwgODgsIDEsIDExNSwgMTgxLCAzOCwgODgsIDEsIAotICAgIDExNSwgMjMzLCAxOTMsIDM4LCA4OCwgMSwgMTE1LCAyMzQsIDEzOCwgMzgsIDg4LCAxLCAyMjksIDE1OSwgMzgsIDg4LCAxLCAKLSAgICAxMjQsIDI1MCwgMjE5LCAzOCwgODgsIDEsIDEyNCwgMjUwLCA5MiwgMzgsIDg4LCAxLCAxMTUsIDI1MCwgMjE5LCAzOCwgODgsIAotICAgIDEsIDExNSwgMjIyLCAyMDIsIDM4LCA4OCwgMSwgMTE1LCAyNTAsIDkyLCAzOCwgODgsIDEsIDIyOCwgMjMsIDM4LCA4OCwgMSwgCi0gICAgMjI0LCAzMiwgMzgsIDg4LCAxLCAxMjQsIDIyNCwgMzAsIDM4LCA4OCwgMSwgMjQ4LCAxNjQsIDM4LCA4OCwgMSwgMTE1LCAKLSAgICAyMjQsIDMwLCAzOCwgODgsIDEsIDIyNCwgNDEsIDM4LCA4OCwgMSwgMTI0LCAyMTgsIDUyLCAzOCwgODgsIDEsIDEyNCwgCi0gICAgMjE3LCAxNjEsIDM4LCA4OCwgMSwgMTE1LCAyMTgsIDUyLCAzOCwgODgsIDEsIDExNSwgMjE3LCAxNjEsIDM4LCA4OCwgMSwgCi0gICAgMjA1LCAzOCwgODgsIDEsIDI1MiwgMTA3LCAzOCwgODgsIDEsIDEyNCwgMTkzLCAzOCwgODgsIDEsIDEyNCwgMjI2LCAyMywgCi0gICAgMzgsIDg4LCAxLCAxMjQsIDI0NCwgMTY0LCAzOCwgODgsIDEsIDExNSwgMTkzLCAzOCwgODgsIDEsIDExNSwgMjQ0LCAxNjQsIAotICAgIDM4LCA4OCwgMSwgMTE1LCAyMjYsIDIzLCAzOCwgODgsIDEsIDE4OCwgMzgsIDg4LCAxLCAxMTUsIDE4NiwgMzgsIDg4LCAxLCAKLSAgICAxMjQsIDE4NiwgMzgsIDg4LCAxLCAyMDMsIDM4LCA4OCwgMSwgMjIzLCA0OCwgMzgsIDg4LCAxLCAyMzMsIDE1NywgMzgsIAotICAgIDg4LCAxLCAyMzIsIDE1MSwgMzgsIDg4LCAxLCAyMTQsIDQ5LCAzOCwgODgsIDEsIDEyNCwgMjIxLCAyNCwgMzgsIDg4LCAxLCAKLSAgICAxMjQsIDIxOSwgMTU3LCAzOCwgODgsIDEsIDEyNCwgMjIyLCAyMDIsIDM4LCA4OCwgMSwgMTI0LCAxNTksIDM4LCA4OCwgMSwgCi0gICAgMjMyLCAyMTMsIDM4LCA4OCwgMSwgNjEsIDM4LCA4OCwgMSwgMTE1LCAxNTksIDM4LCA4OCwgMSwgNzIsIDM4LCA4OCwgMSwgCi0gICAgMjM2LCAyOCwgMzgsIDg4LCAxLCA2OSwgMzgsIDg4LCAxLCAyMTUsIDkyLCAzOCwgODgsIDEsIDI0NSwgMTY1LCAzOCwgODgsIAotICAgIDEsIDIyNywgNDksIDM4LCA4OCwgMSwgMjMzLCAxNDMsIDM4LCA4OCwgMSwgMjQyLCAxMDksIDIyMiwgMjAyLCAzOCwgODgsIAotICAgIDI0OSwgMTMzLCA1LCAxMzgsIDIwMywgMzgsIDg4LCAyNDksIDEzMywgNSwgMTM4LCAyMzMsIDE1NywgMzgsIDg4LCAyNDksIAotICAgIDEzMywgNSwgMjMzLCAxNTgsIDIxOCwgOSwgMjMzLCAxMzMsIDM4LCA4OCwgNSwgMjMyLCA5LCAyMzQsIDIzNiwgMjMzLCAKLSAgICAxMzMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDQwLCAyMjksIDE1OSwgMzgsIDg4LCAyNDksIDEzMywgNSwgMTE1LCAxOTMsIAotICAgIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDEyNCwgMjI0LCAzMSwgMTY3LCAxMTUsIDE5MywgMzgsIDg4LCAyNDksIDEzMywgNSwgCi0gICAgMTg4LCAzOCwgODgsIDI0OSwgMTMzLCA1LCAyNTIsIDEwNywgMzgsIDg4LCAyNDksIDEzMywgNSwgMjIyLCAyMDIsIDM4LCAKLSAgICA4OCwgNSwgMjIyLCAxODEsIDM4LCA4OCwgMzAsIDUsIDYxLCAzOCwgODgsIDMwLCA1LCAyMzIsIDksIDIyMiwgMTQyLCAzOCwgCi0gICAgODgsIDMwLCA1LCAyNTQsIDIzMiwgMzgsIDg4LCAzMCwgNSwgMjE4LCAxNSwgMjU0LCAyMzIsIDM4LCA4OCwgMzAsIDUsIDcyLCAKLSAgICAzOCwgODgsIDMwLCA1LCAyMzYsIDI4LCAzOCwgODgsIDMwLCA1LCAyMTUsIDE4MywgMzgsIDg4LCAzMCwgNSwgMjE1LCA5MSwgCi0gICAgMzgsIDg4LCAzMCwgNSwgNjksIDM4LCA4OCwgMzAsIDUsIDIxNSwgOTIsIDM4LCA4OCwgMzAsIDUsIDc1LCAzOCwgODgsIDMwLCAKLSAgICA1LCAyMjcsIDEyMSwgNTUsIDM4LCA4OCwgMzAsIDUsIDIyNiwgMjMzLCAzOCwgODgsIDMwLCA1LCA3NCwgMzgsIDg4LCAzMCwgCi0gICAgNSwgMjU0LCAxNDgsIDM4LCA4OCwgMzAsIDUsIDIyNywgNDksIDM4LCA4OCwgMzAsIDUsIDI1NCwgMTA4LCAzOCwgODgsIDMwLCAKLSAgICA1LCA4OCwgMjU0LCAxMDgsIDM4LCA4OCwgMzAsIDUsIDIyNywgMTIxLCA0OSwgMzgsIDg4LCA1LCAyMzIsIDksIDIzNCwgCi0gICAgMjM1LCAzOCwgODgsIDUsIDIxNiwgMjQwLCAzOCwgODgsIDUsIDIxNiwgMjM5LCAzOCwgODgsIDUsIDIzNCwgMTA2LCAyMTYsIAotICAgIDIzOCwgMzgsIDg4LCA1LCAyMzQsIDEwNiwgMjE2LCAyMzcsIDM4LCA4OCwgNSwgMjM0LCAxMDYsIDIxNiwgMjM2LCAzOCwgCi0gICAgODgsIDUsIDIyNCwgNzcsIDI0MiwgMjYsIDM4LCA4OCwgNSwgMjMyLCA5LCAyMjIsIDE2OCwgMzgsIDg4LCA1LCAyMzQsIAotICAgIDEwNSwgMjM0LCAyMjAsIDM4LCA4OCwgMzcsIDI0OSwgNTUsIDI0NywgNzQsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDIxMiwgCi0gICAgNzksIDM4LCA4OCwgMjQxLCAzMywgMjEsIDExNiwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTA5LCAzOCwgODgsIDI0MSwgMzMsIAotICAgIDIxLCAxNjYsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE2MywgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTgwLCAzOCwgODgsIDI0MSwgCi0gICAgMzMsIDIxLCAxODksIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE5OCwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTk1LCAzOCwgODgsIAotICAgIDI0MSwgMzMsIDIxLCAyMDAsIDM4LCA4OCwgODgsIDIxLCAyMTIsIDc5LCAzOCwgODgsIDg4LCAyMSwgMTE2LCAzOCwgODgsIAotICAgIDg4LCAyMSwgMTA5LCAzOCwgODgsIDg4LCAyMSwgMTY2LCAzOCwgODgsIDg4LCAyMSwgMTYzLCAzOCwgODgsIDg4LCAyMSwgCi0gICAgMTgwLCAzOCwgODgsIDg4LCAyMSwgMTg5LCAzOCwgODgsIDg4LCAyMSwgMTk4LCAzOCwgODgsIDg4LCAyMSwgMTk1LCAzOCwgCi0gICAgODgsIDg4LCAyMSwgMjAwLCAzOCwgODgsIDUsIDIxMywgMjM0LCAzOCwgODgsIDUsIDIxMywgMjMzLCAzOCwgODgsIDUsIAotICAgIDIyMiwgMTMzLCAzOCwgODgsIDUsIDIzNCwgMTY2LCAzOCwgODgsIDUsIDI0MCwgMjE5LCAzOCwgODgsIDUsIDI0NywgODgsIAotICAgIDM4LCA4OCwgNSwgMjIzLCAyMDIsIDIyMywgODksIDIyNCwgNDEsIDM4LCA4OCwgNSwgMjMyLCA5LCAyMTMsIDYxLCAzOCwgCi0gICAgODgsIDUsIDIzNSwgMTAsIDM4LCA4OCwgNSwgMjM1LCA5LCAzOCwgODgsIDUsIDIyMiwgMTM5LCAzOCwgODgsIDUsIDIyMiwgCi0gICAgMTM4LCAzOCwgODgsIDUsIDI0MSwgMjQ4LCAzOCwgODgsIDUsIDI1MCwgMjE2LCA5OSwgNSwgMjE1LCAxNzAsIDIyMywgMTgzLCAKLSAgICA5OSwgNSwgMjE1LCAxNzAsIDI1MCwgMTg5LCA5OSwgNSwgMjUwLCAxMjAsIDk5LCA1LCAyMTgsIDIxNSwgOTksIDUsIDI1MSwgCi0gICAgMTU2LCA5OSwgMSwgMjU0LCA5MiwgOTksIDEsIDI1NCwgOTMsIDIxNywgMjIxLCA5OSwgMSwgMjM2LCAyNCwgOTksIDEsIAotICAgIDIzNiwgMjUsIDIxNywgMjIxLCA5OSwgMSwgMjE1LCAxNzMsIDk5LCAxLCAyMTUsIDE3NCwgMjE3LCAyMjEsIDk5LCAxLCAKLSAgICAyMjQsIDc3LCAyMjMsIDIyOSwgOTksIDEsIDIyNCwgNzcsIDIyMywgMjMwLCAyMTcsIDIyMSwgOTksIDEsIDIzMywgMTU4LCAKLSAgICAyMzMsIDQ4LCA5OSwgMSwgMjMzLCAxNTgsIDIzMywgNDksIDIxNywgMjIxLCA5OSwgMSwgMjQ1LCAxMzYsIDk5LCAxLCAyNTQsIAotICAgIDEwNiwgOTksIDEsIDIyNywgNzgsIDk5LCAxLCAyMjcsIDc5LCAyMTcsIDIyMSwgOTksIDEsIDE4MSwgOTksIDEsIDIzNSwgCi0gICAgMTcsIDIzMiwgMTIsIDk5LCAxLCAyNDMsIDExMCwgOTksIDEsIDI0MywgMTExLCAyNDIsIDEzNywgOTksIDEsIDIyOSwgMTU5LCAKLSAgICA5OSwgMSwgMjUwLCAyMTksIDk5LCAxLCAyNTAsIDIyMCwgMjMzLCAxNDYsIDk5LCAxLCAyMzUsIDEzOSwgOTksIDEsIDIzNSwgCi0gICAgMTQwLCAyMzUsIDExOSwgOTksIDEsIDIyOCwgMjMsIDk5LCAxLCAyMTgsIDUzLCAyMzMsIDk5LCA5OSwgMSwgMjE4LCA1MywgCi0gICAgMjMwLCAxMzcsIDIzMiwgMTIsIDk5LCAxLCAyNDgsIDE2NSwgMjMwLCAxMzcsIDI1NCwgNTQsIDk5LCAxLCAyNDgsIDE2NSwgCi0gICAgMjMwLCAxMzcsIDIzMiwgMTIsIDk5LCAxLCAyMzAsIDQ2LCAyMjQsIDQ0LCA5OSwgMSwgMjE4LCA1MiwgOTksIDEsIDIxOCwgCi0gICAgNTMsIDIxNywgMjQyLCA5OSwgMSwgMjQ4LCAxNjQsIDk5LCAxLCAyNDgsIDE2NSwgMjMyLCAzMCwgOTksIDEsIDIwNSwgOTksIAotICAgIDEsIDE5MywgOTksIDEsIDIyNiwgMjE0LCAyMzQsIDIzMSwgOTksIDEsIDI1MiwgMTA3LCA5OSwgMSwgMjUyLCAxMDgsIDIzNCwgCi0gICAgMTc4LCA5OSwgMSwgMTg4LCA5OSwgMSwgMTg2LCA5OSwgMSwgMjAzLCA5OSwgMSwgMjMzLCAxNTcsIDk5LCAxLCAyMTQsIDQ5LCAKLSAgICA5OSwgMSwgMjIyLCAyMDMsIDIyMiwgMTg5LCA5OSwgMSwgMjIyLCAyMDMsIDIyMiwgMTQ5LCA5OSwgMSwgMjIyLCAyMDIsIAotICAgIDk5LCAxLCAxNTksIDk5LCA1LCAyMjMsIDIyMiwgOTksIDMwLCA1LCAyMTcsIDIyMSwgOTksIDMwLCA1LCAyMTUsIDE2OSwgCi0gICAgOTksIDMwLCA1LCAyMTUsIDE3MCwgMjIyLCAxNDUsIDk5LCAzMCwgNSwgMjE4LCAyNDgsIDk5LCAzMCwgNSwgMjE4LCAyNDksIAotICAgIDIzNiwgMTYsIDk5LCAzMCwgNSwgMjI0LCA3NywgMjIzLCAyMjksIDk5LCAzMCwgNSwgMjI0LCA3NywgMjIzLCAyMzAsIDIxNywgCi0gICAgMjIxLCA5OSwgMzAsIDUsIDIzMywgMTU4LCAyMzMsIDQ4LCA5OSwgMzAsIDUsIDIzMywgMTU4LCAyMzMsIDQ5LCAyMTcsIAotICAgIDIyMSwgOTksIDMwLCA1LCAyMTgsIDE2LCA5OSwgMzAsIDUsIDIxOCwgMTcsIDIyMywgMjI5LCA5OSwgMzAsIDUsIDIxOCwgCi0gICAgMTcsIDIxNywgMjIxLCA5OSwgMzAsIDUsIDIxOCwgMTcsIDIyMywgMjMwLCAyMTcsIDIyMSwgOTksIDMwLCA1LCAyMjYsIDU5LCAKLSAgICA5OSwgMzAsIDUsIDIyNiwgNjAsIDIxNywgMjIxLCA5OSwgMjU0LCAxNTUsIDI1NCwgMTU0LCA5OSwgMSwgMjM0LCAyNTUsIAotICAgIDIyMiwgMTQ0LCA5OSwgMSwgMjM0LCAxMTAsIDIyMiwgMTQ0LCA5OSwgMSwgMjE2LCAwLCAyMjIsIDE0NCwgOTksIDEsIDI0NSwgCi0gICAgMTYwLCAyMjIsIDE0NCwgOTksIDEsIDIxNCwgMjMzLCAyMjIsIDE0NCwgOTksIDEsIDIxMiwgMTAwLCAyMjIsIDE0NCwgOTksIAotICAgIDEsIDI1MywgMTI1LCAyMjIsIDE0NCwgOTksIDIxLCAyMTIsIDc5LCA5OSwgMjEsIDExNiwgOTksIDIxLCAxMDksIDk5LCAyMSwgCi0gICAgMTY2LCA5OSwgMjEsIDE2MywgOTksIDIxLCAxODAsIDk5LCAyMSwgMTg5LCA5OSwgMjEsIDE5OCwgOTksIDIxLCAxOTUsIDk5LCAKLSAgICAyMSwgMjAwLCA5OSwgMjI2LCAxNTcsIDk5LCAyMjYsIDE4MiwgOTksIDIxMywgMjIzLCA5OSwgMjUwLCAxNjgsIDIyNiwgCi0gICAgMTc1LCA5OSwgMjUwLCAxNjgsIDIyMCwgOTgsIDk5LCAyNTAsIDE2OCwgMjI2LCAxMzAsIDk5LCAyMjYsIDE4MSwgOTksIDI3LCAKLSAgICAxNiwgMjQ3LCA4MCwgOTksIDI3LCAxNiwgMjQ4LCAyLCA5OSwgMjcsIDE2LCAyNDYsIDE5LCA5OSwgMjcsIDE2LCAyNDgsIAotICAgIDEyMSwgOTksIDI3LCAxNiwgMjQ4LCAxMjIsIDIxOCwgMjE1LCA5OSwgMjcsIDE2LCAyNDcsIDE1NywgOTksIDI3LCAxNiwgCi0gICAgMjQ4LCAxNTcsIDk5LCAyNywgMTYsIDI0NywgMjQwLCA5OSwgMjcsIDE2LCAyNDgsIDE0MywgOTksIDI3LCAxNiwgMjQ4LCAKLSAgICAxMjIsIDI0MywgMzMsIDk5LCAyNywgMTYsIDM3LCAyMTcsIDIxNywgOTksIDI3LCAxNiwgMzcsIDI0NSwgOTksIDk5LCAyNywgCi0gICAgMTYsIDM3LCAyMzQsIDE3MywgOTksIDI3LCAxNiwgMzcsIDIzNCwgMTc1LCA5OSwgMjcsIDE2LCAzNywgMjM1LCAxMjMsIDk5LCAKLSAgICAyNywgMTYsIDM3LCAyMzQsIDE3NCwgMiwgMjM1LCAxMjMsIDk5LCAyNywgMTYsIDM3LCAyMzQsIDE3NiwgMiwgMjM1LCAxMjMsIAotICAgIDk5LCAyNywgMTYsIDM3LCAyNTEsIDIxNCwgOTksIDI3LCAxNiwgMzcsIDI0MiwgMTQxLCA5OSwgMjcsIDE2LCAyMjMsIDE0NiwgCi0gICAgMjI3LCA0MCwgMjQ2LCAyOSwgOTksIDI3LCAxNiwgMjIzLCAxNDYsIDIyNywgNDAsIDI0OCwgMTU1LCA5OSwgMjcsIDE2LCAKLSAgICAyMjMsIDE0NiwgMjQ5LCAxOTMsIDIxNiwgNzUsIDk5LCAyNywgMTYsIDIyMywgMTQ2LCAyNDksIDE5MywgMjE4LCAyMywgOTksIAotICAgIDI3LCAxNiwgMjMzLCA2OCwgMjI3LCA0MCwgMjI2LCAxNzAsIDk5LCAyNywgMTYsIDIzMywgNjgsIDIyNywgNDAsIDIyNSwgCi0gICAgMjUsIDk5LCAyNywgMTYsIDIzMywgNjgsIDI0OSwgMTkzLCAyMjUsIDE3MCwgOTksIDI3LCAxNiwgMjMzLCA2OCwgMjQ5LCAKLSAgICAxOTMsIDIyNSwgMTYwLCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyMjcsIDQwLCAyMjUsIDE5MywgMjE4LCAyMzcsIDUsIDIyNiwgCi0gICAgMTU0LCAyMTgsIDIzNywgNSwgMjI2LCAxNjYsIDIxOCwgMjM3LCA1LCAyMjYsIDE2MywgMjE4LCAyMzcsIDEsIDYxLCAyMTgsIAotICAgIDIzNywgMSwgNzIsIDIxOCwgMjM3LCAxLCA2OSwgMjE4LCAyMzcsIDEsIDI1NCwgMTQ4LCAyMTgsIDIzNywgMSwgNzUsIDIxOCwgCi0gICAgMjM3LCAxLCA3NCwgMjE4LCAyMzcsIDEsIDI0NSwgMjIsIDIxOCwgMjM3LCAxLCAxODEsIDIxOCwgMjM3LCAxLCAyMjQsIAotICAgIDIzMiwgMjE4LCAyMzcsIDEsIDI0MywgMTEwLCAyMTgsIDIzNywgMSwgMjI5LCAxNTksIDIxOCwgMjM3LCAxLCAyNTAsIDIxOSwgCi0gICAgMjE4LCAyMzcsIDEsIDIzNSwgMTM5LCAyMTgsIDIzNywgMSwgMjEyLCAxMDksIDIxOCwgMjM3LCAxLCAyMjgsIDIzLCAyMTgsIAotICAgIDIzNywgMSwgMjE4LCA1MiwgMjE4LCAyMzcsIDEsIDI0OCwgMTY0LCAyMTgsIDIzNywgMSwgMjA1LCAyMTgsIDIzNywgMSwgCi0gICAgMTkzLCAyMTgsIDIzNywgMSwgMjQ0LCAxNjQsIDIxOCwgMjM3LCAxLCAyMTUsIDEsIDIxOCwgMjM3LCAxLCAyNTIsIDEwNywgCi0gICAgMjE4LCAyMzcsIDEsIDE4OCwgMjE4LCAyMzcsIDEsIDE4NiwgMjE4LCAyMzcsIDEsIDIwMywgMjE4LCAyMzcsIDEsIDIzMywgCi0gICAgMTU3LCAyMTgsIDIzNywgMSwgMjE0LCA0OSwgMjE4LCAyMzcsIDEsIDIyMiwgMjAyLCAyMTgsIDIzNywgMSwgMjEzLCAxNTMsIAotICAgIDIxOCwgMjM3LCAxLCAxNTksIDIxOCwgMjM3LCAyNDksIDEzMywgNSwgMjI2LCAxNzksIDIxOCwgMjM3LCAyNDksIDEzMywgNSwgCi0gICAgMjI2LCAxNTYsIDIxOCwgMjM3LCAyNDksIDEzMywgNSwgMjI2LCAxNTMsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNjksIAotICAgIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNTIsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNzMsIDIxOCwgMjM3LCAzMCwgNSwgCi0gICAgMjI2LCAxNjIsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxODAsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNzEsIDIxOCwgMjM3LCAKLSAgICA1LCAyMjYsIDE4MywgMjE4LCAyMzcsIDEsIDIzNCwgMTM4LCAyMTgsIDIzNywgMSwgMjE4LCAxNzYsIDIxOCwgMjM3LCAyMSwgCi0gICAgMjEyLCA3OSwgMjE4LCAyMzcsIDIxLCAxMTYsIDIxOCwgMjM3LCAyMSwgMTA5LCAyMTgsIDIzNywgMjEsIDE2NiwgMjE4LCAKLSAgICAyMzcsIDIxLCAxNjMsIDIxOCwgMjM3LCAyMSwgMTgwLCAyMTgsIDIzNywgMjEsIDE4OSwgMjE4LCAyMzcsIDIxLCAxOTgsIAotICAgIDIxOCwgMjM3LCAyMSwgMTk1LCAyMTgsIDIzNywgMjEsIDIwMCwgMjUyLCA0MCwgMSwgNjEsIDI1MiwgNDAsIDEsIDIyMCwgCi0gICAgOTAsIDYxLCAyNTIsIDQwLCAxLCAxNTksIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDE1OSwgMjUyLCA0MCwgMSwgMjMxLCAyNDQsIAotICAgIDE1OSwgMjUyLCA0MCwgMSwgMjUyLCAxMDcsIDI1MiwgNDAsIDEsIDIzNCwgMjE3LCAyNTIsIDEwNywgMjUyLCA0MCwgMSwgCi0gICAgMTkzLCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAxOTMsIDI1MiwgNDAsIDEsIDIwNSwgMjUyLCA0MCwgMSwgMjMxLCAyNDQsIAotICAgIDIwNSwgMjUyLCA0MCwgMSwgMjE0LCA0OSwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMjE0LCA0OSwgMjUyLCA0MCwgMSwgMjI2LCAKLSAgICAxOTQsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDI0MywgMTEwLCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAyNDMsIDExMCwgMjUyLCAKLSAgICA0MCwgMSwgMjM1LCAxMzksIDI1MiwgNDAsIDEsIDI0OCwgMTY0LCAyNTIsIDQwLCAxLCAyMDMsIDI1MiwgNDAsIDEsIDIyMCwgCi0gICAgOTAsIDIwMywgMjUyLCA0MCwgMSwgMTg4LCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAxODgsIDI1MiwgNDAsIDEsIDIxOSwgMjEzLCAKLSAgICAyMTgsIDUyLCAyNTIsIDQwLCAxLCAyMjgsIDE2NiwgMjE4LCA1MiwgMjUyLCA0MCwgMSwgMjIyLCAyMDIsIDI1MiwgNDAsIDEsIAotICAgIDIyMCwgOTAsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAyMzEsIDI0NCwgMjIyLCAyMDIsIDI1MiwgNDAsIDEsIDE4NiwgMjUyLCAKLSAgICA0MCwgMSwgMjIwLCA5MCwgMTg2LCAyNTIsIDQwLCAxLCAyMjksIDE1OSwgMjUyLCA0MCwgMSwgMjMzLCAxNTcsIDI1MiwgNDAsIAotICAgIDEsIDIyMCwgOTAsIDIzMywgMTU3LCAyNTIsIDQwLCAxLCAyMjgsIDIzLCAyNTIsIDQwLCAxLCAyNTAsIDIxOSwgMjUyLCA0MCwgCi0gICAgMSwgMjI5LCAyMjgsIDI1MiwgNDAsIDEsIDIzMSwgMTg3LCAyNTIsIDQwLCAxLCA3MiwgMjUyLCA0MCwgMSwgNjksIDI1MiwgCi0gICAgNDAsIDUsIDIxNiwgMjQ0LCAyNTIsIDQwLCAzMCwgNSwgNzQsIDI1MiwgNDAsIDMwLCA1LCAyMjYsIDE5NCwgNzQsIDI1MiwgCi0gICAgNDAsIDMwLCA1LCAyNDUsIDE2NSwgMjUyLCA0MCwgMzAsIDUsIDcyLCAyNTIsIDQwLCAzMCwgNSwgMjM0LCAyMTcsIDcyLCAKLSAgICAyNTIsIDQwLCAzMCwgNSwgNzUsIDI1MiwgNDAsIDMwLCA1LCAyMzQsIDIxNywgNzUsIDI1MiwgNDAsIDMwLCA1LCA2OSwgCi0gICAgMjUyLCA0MCwgMzAsIDUsIDExMSwgMzEsIDIyMCwgOTAsIDIyMiwgMjAyLCAyNTIsIDQwLCAyNDksIDEzMywgNSwgMjI5LCAKLSAgICAxNjEsIDI1MiwgNDAsIDI0OSwgMTMzLCA1LCAyNDIsIDQxLCAyNTIsIDQwLCAyMjYsIDE2NSwgMjUyLCA0MCwgMjI2LCAxNjEsIAotICAgIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjMwLCA0NiwgMjMxLCAxMDQsIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjI1LCAKLSAgICAxOTYsIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjM1LCA1MSwgMjUyLCA0MCwgMTYsIDI1MSwgMTY0LCAyMjYsIDE2NSwgCi0gICAgMTgyLCAxLCAxODEsIDE4MiwgMSwgMjM0LCA0OCwgMTgyLCAxLCAyMzQsIDEzOCwgMTgyLCAxLCAyNDMsIDExMCwgMTgyLCAxLCAKLSAgICAyNDIsIDE2MiwgMTgyLCAxLCAyMjksIDE1OSwgMTgyLCAxLCAyNTAsIDIxOSwgMTgyLCAxLCAyNTAsIDkyLCAxODIsIDEsIAotICAgIDIzNSwgMTM5LCAxODIsIDEsIDIyOCwgMjMsIDE4MiwgMSwgMjE4LCA1MiwgMTgyLCAxLCAyMTcsIDE2MSwgMTgyLCAxLCAKLSAgICAyNDgsIDE2NCwgMTgyLCAxLCAyMDUsIDE4MiwgMSwgMTkzLCAxODIsIDEsIDIyNSwgMTc0LCAxODIsIDEsIDIyNiwgMjMsIAotICAgIDE4MiwgMSwgMjQ0LCAxNjQsIDE4MiwgMSwgMjQ0LCA0NCwgMTgyLCAxLCAyNTIsIDEwNywgMTgyLCAxLCAyNTEsIDE0NSwgCi0gICAgMTgyLCAxLCAxODgsIDE4MiwgMSwgMjMwLCAyMzcsIDE4MiwgMSwgMjE2LCAxNDEsIDE4MiwgMSwgMjE2LCAxMzMsIDE4MiwgCi0gICAgMSwgMjQ1LCAyNDksIDE4MiwgMSwgMTg2LCAxODIsIDEsIDIwMywgMTgyLCAxLCAyMzMsIDE1NywgMTgyLCAxLCAxNTksIAotICAgIDE4MiwgMSwgMjQxLCAxMzksIDE4MiwgMSwgMjE1LCAxLCAxODIsIDEsIDIyMiwgMjAyLCAxODIsIDEsIDIyMSwgMjQsIDE4MiwgCi0gICAgMSwgMjE0LCA0OSwgMTgyLCAxLCA2MSwgMTgyLCAyMTksIDE4LCAxLCAxODYsIDE4MiwgMjE5LCAxOCwgMSwgMjAzLCAxODIsIAotICAgIDMwLCA1LCAyNTQsIDIzMiwgMTgyLCAzMCwgNSwgNzIsIDE4MiwgMzAsIDUsIDc1LCAxODIsIDMwLCA1LCAyMjcsIDQ5LCAKLSAgICAxODIsIDMwLCA1LCA2OSwgMTgyLCAzMCwgNSwgMjE1LCA5MiwgMTgyLCAzMCwgNSwgNzQsIDE4MiwgMjQ5LCAxMzMsIDUsIAotICAgIDIzNSwgMjcsIDE4MiwgMjQ5LCAxMzMsIDUsIDE4MywgMTgyLCAyNDksIDEzMywgNSwgMTUwLCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMDQsIDE4MiwgMjQ5LCAxMzMsIDUsIDIyNiwgMjI5LCAxODIsIDI0OSwgMTMzLCA1LCAxNDksIDE4MiwgMjQ5LCAxMzMsIDUsIAotICAgIDIxOCwgOTksIDE4MiwgMjQ5LCAxMzMsIDUsIDIyOCwgNSwgMTgyLCAyNDksIDEzMywgNSwgMjM0LCAyMzUsIDE4MiwgNSwgCi0gICAgMjI0LCA0MiwgMTgyLCA1LCAyMjgsIDYwLCAxODIsIDIyNSwgMjcsIDIxOCwgNTEsIDE4MiwgMjI1LCAyNywgMjI4LCAxMywgCi0gICAgMjE3LCA3NCwgMjE4LCA1MSwgMTgyLCAyMjUsIDI3LCAyNTAsIDk4LCAxODIsIDIyNSwgMjcsIDIxNiwgMTI4LCAyNTAsIDk4LCAKLSAgICAxODIsIDIyNSwgMjcsIDIxNiwgMTI3LCAxODIsIDIxLCAyMTIsIDc5LCAxODIsIDIxLCAxMTYsIDE4MiwgMjEsIDEwOSwgCi0gICAgMTgyLCAyMSwgMTY2LCAxODIsIDIxLCAxNjMsIDE4MiwgMjEsIDE4MCwgMTgyLCAyMSwgMTg5LCAxODIsIDIxLCAxOTgsIAotICAgIDE4MiwgMjEsIDE5NSwgMTgyLCAyMSwgMjAwLCAxODIsIDEsIDIxNiwgMTE1LCAxODIsIDEsIDIxNiwgMTA1LCAxODIsIDEsIAotICAgIDI0OCwgODYsIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAyMTIsIDc5LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTE2LCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAyMSwgMTA5LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTY2LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgCi0gICAgMTYzLCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTgwLCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTg5LCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAyMSwgMTk4LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTk1LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMjAwLCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDE1NywgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjUzLCAxMjIsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDEsIDI1NCwgMTIxLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDI0LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTQsIAotICAgIDg2LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDE1NiwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAxOTQsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDEsIDI1NCwgMTk1LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDE5MywgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjU0LCAxODksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMywgMTMsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzNSwgCi0gICAgMTY5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzYsIDI5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzUsIDE4OCwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMSwgMjM1LCAxNzcsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMiwgMTU2LCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyMTUsIDE5MCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjE1LCAxODgsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIxNSwgCi0gICAgMTM5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMTUsIDg1LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDgyLCAyMjcsIDc2LCAKLSAgICAyNTAsIDQwLCAxLCAyNDUsIDcwLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNDUsIDE2OCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgCi0gICAgMjQ1LCAxMDgsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI0NSwgNDksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMiwgMjA4LCAKLSAgICAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMjcsIDUsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIyNywgMTE2LCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyMjYsIDI0OSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjI3LCA4OCwgMjI3LCA3NiwgMjUwLCA0MCwgMjMwLCAKLSAgICAxNzMsIDIxNiwgODQsIDIyNywgNzYsIDI1MCwgNDAsIDI0MywgMTA1LCAyMTYsIDg1LCAyMjcsIDc2LCAyNTAsIDQwLCAyMzAsIAotICAgIDE3MSwgMjE2LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjIzLCAyNDIsIDIyNywgNzYsIDI1MCwgNDAsIDIyNiwgMjEsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDI1NCwgMTEzLCAyMjcsIDc2LCAyNTAsIDQwLCAyMjUsIDI3LCAyMzAsIDE2OCwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMjI1LCAyNywgNTEsIDIzMCwgMTY4LCAyMTQsIDIyOSwgMTYwLCAyMzQsIDIxNSwgMjE0LCAyMjksIDE2MCwgMjIxLCAKLSAgICAwLCAyMTQsIDIyOSwgMTYwLCAyMjUsIDc4LCAyMTQsIDIyOSwgNSwgMjI5LCA0MCwgMjE0LCAyMjksIDUsIDIxMywgNjksIAotICAgIDIzMSwgMzUsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyMTMsIDY5LCAyNTQsIDExOCwgMjM1LCAyNDAsIDIxOCwgMjAxLCAKLSAgICAyMTQsIDIyOSwgMTYwLCAyMTMsIDY5LCAyMzUsIDI0MCwgMjE4LCAyMDEsIDIxNCwgMjI5LCAxNjAsIDIxMywgNjksIDIzNCwgCi0gICAgMjAzLCAyMzUsIDI0MCwgMjE4LCAyMDEsIDIxNCwgMjI5LCAxNjAsIDI1MCwgMTkwLCA1NSwgMjE0LCAyMjksIDE2MCwgMjEzLCAKLSAgICA2OSwgMjM0LCAyMDMsIDIzNSwgMjQwLCAyMTgsIDIwMiwgMjIyLCAxMTUsIDIxNCwgMjI5LCAxNjAsIDUxLCAyMTgsIDIwMSwgCi0gICAgMjE0LCAyMjksIDE2MCwgMjE2LCAxNjksIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyMzQsIDIwMywgMjUzLCAyNDQsIAotICAgIDIxNCwgMjI5LCAxNjAsIDYyLCA1NSwgMjE0LCAyMjksIDE2MCwgMTE3LCAxNzYsIDU1LCAyMTQsIDIyOSwgMTYwLCAxMzMsIAotICAgIDE3NiwgNTUsIDIxNCwgMjI5LCAxNjAsIDIyMywgMTM3LCAyMzQsIDIxNCwgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgCi0gICAgMTYwLCAyNTMsIDEyMCwgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIDIxOCwgMjAxLCAyMTQsIAotICAgIDIyOSwgNSwgMjE0LCAxMjksIDIxNSwgMTg1LCAyMTQsIDIyOSwgNSwgMjIzLCAyMDIsIDIxNCwgMTI5LCAyMTUsIDE4NSwgCi0gICAgMjE0LCAyMjksIDUsIDIxNCwgMTI5LCAyNTMsIDI0NCwgMjE0LCAyMjksIDUsIDIyMywgMjAyLCAyMTQsIDEyOSwgMjUzLCAKLSAgICAyNDQsIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgMjE1LCAxODYsIDIsIDIxOCwgMjcsIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgCi0gICAgMjUzLCAyNDUsIDIsIDIxOCwgMjcsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgMjU0LCAyLCAyMTQsIDIyOSwgNSwgMjUzLCAKLSAgICAyNDMsIDI1MiwgODUsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgMjE0LCAyNTIsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgCi0gICAgMjE0LCAyNTMsIDIsIDIxOCwgMjcsIDIxNCwgMjI5LCA1LCAyMTcsIDIxLCAyMTQsIDIyOSwgNSwgMjQxLCAxNzYsIDE4NCwgCi0gICAgMjUzLCAyNDIsIDIxNCwgMjI5LCA1LCAxODQsIDI1MywgMjQyLCAyMTQsIDIyOSwgNSwgMjIzLCA1MywgMTg0LCAyNTMsIAotICAgIDI0MiwgMjE0LCAyMjksIDUsIDI1MywgMjQzLCAyMTUsIDE5MiwgMjMwLCAxNjAsIDIxNCwgMjI5LCA1LCAyNTMsIDE5MCwgNywgCi0gICAgMSwgMywgNiwgNjEsIDcsIDEsIDMsIDYsIDI1NCwgMTQ4LCA3LCAzLCAxLCAyMTYsIDU4LCAyNTQsIDE0OCwgNywgMSwgMywgCi0gICAgNiwgMjUyLCA1NCwgMjUzLCA3NCwgNywgMSwgMywgNiwgMjUwLCAyNTIsIDcsIDEsIDMsIDYsIDI0OSwgMywgNywgMSwgMywgCi0gICAgNiwgMjQ1LCAyNSwgNywgMSwgMywgNiwgNzQsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAyMTYsIAotICAgIDU4LCA3MiwgNywgMSwgMywgNiwgMjM1LCAxNDIsIDcsIDEsIDMsIDYsIDIzNSwgMjcsIDcsIDEsIDMsIDYsIDIzMywgMTcxLCAKLSAgICAyLCA5MCwgNywgMSwgMywgNiwgMTgzLCA3LCAxLCAzLCA2LCAyMjMsIDIwMiwgMjA0LCA3LCAxLCAzLCA2LCA3NSwgNywgMSwgCi0gICAgMywgNiwgMjI3LCA0MCwgNzUsIDcsIDMsIDEsIDIyMCwgMTEzLCA3NSwgNywgMywgMSwgMjIwLCAxMTMsIDIyNywgNDAsIDc1LCAKLSAgICA3LCAzLCAxLCAyMjAsIDExMywgMTU3LCAyLCA5MCwgNywgMywgMSwgMjE2LCA1OCwgMjI3LCA5OSwgNywgMSwgMywgNiwgCi0gICAgMjI3LCAyLCA3LCAzLCAxLCAyMTYsIDIyNywgMTUxLCA3NSwgNywgMywgMSwgMjUxLCAxMDEsIDE1MSwgNzUsIDcsIDEsIDMsIAotICAgIDYsIDIyNiwgMjI5LCA3LCAxLCAzLCA2LCAyMjMsIDIwMiwgMTQ5LCA3LCAxLCAzLCA2LCAyMTYsIDU4LCAxNDksIDcsIDEsIAotICAgIDMsIDYsIDIxOCwgOTksIDcsIDEsIDMsIDYsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgNjksIDcsIDMsIDEsIDIyMCwgMTEzLCAKLSAgICAyNDcsIDIwOCwgNjksIDcsIDMsIDEsIDIyMCwgMTEzLCAyMTYsIDU4LCAxODMsIDcsIDEsIDMsIDYsIDIxNSwgNzksIDcsIDEsIAotICAgIDMsIDYsIDIxNCwgODIsIDcsIDEsIDMsIDYsIDIxMiwgMTUyLCA3LCAxLCAzLCA2LCAyNDQsIDIzMiwgNywgMSwgMjE0LCAKLSAgICAxMTYsIDIzMywgMTA1LCAyMTksIDE4MiwgNywgMSwgMjU0LCAxMDMsIDI1LCAxLCAzLCA2LCAyNDMsIDgzLCAyNSwgMSwgMywgCi0gICAgNiwgMjMzLCAxMjIsIDI1LCAxLCAzLCA2LCAyMjUsIDI0MCwgMjUsIDEsIDMsIDYsIDIyMywgMTkwLCAyNSwgMSwgMywgNiwgCi0gICAgMjI1LCA0NiwgMzMsIDEsIDMsIDYsIDI0NSwgMTMxLCA1OSwgMSwgNiwgNjEsIDU5LCAxLCA2LCAyNTQsIDE0OCwgNTksIDEsIAotICAgIDYsIDI1MywgNzQsIDU5LCAxLCA2LCAyNTIsIDU0LCAyNTMsIDc0LCA1OSwgMSwgNiwgMjQ5LCAzLCA1OSwgMSwgNiwgNzQsIAotICAgIDU5LCAxLCA2LCAyMjMsIDIwMiwgNzQsIDU5LCAxLCA2LCAyNDMsIDE3NywgNTksIDEsIDYsIDI0MiwgNDEsIDU5LCAxLCA2LCAKLSAgICA3MiwgNTksIDEsIDYsIDIzNSwgMTQyLCA1OSwgMSwgNiwgMjM1LCAyNywgNTksIDEsIDYsIDE1MCwgNTksIDEsIDYsIDE4MywgCi0gICAgNTksIDEsIDYsIDIwNCwgNTksIDEsIDYsIDIyMywgMjAyLCAyMDQsIDU5LCAxLCA2LCA3NSwgNTksIDEsIDYsIDIyNywgMiwgCi0gICAgNTksIDEsIDYsIDIyNiwgMjI5LCA1OSwgMSwgNiwgMTQ5LCA1OSwgMSwgNiwgMjE4LCA5OSwgNTksIDEsIDYsIDY5LCA1OSwgCi0gICAgMSwgNiwgMjE0LCA4MiwgNTksIDEsIDMsIDYxLCA1OSwgMSwgMywgMjE2LCA1OCwgNjEsIDU5LCAxLCAzLCAyNTQsIDUyLCAKLSAgICA1OSwgMSwgMywgMjE2LCA1OCwgMjU0LCAxNDgsIDU5LCAxLCAzLCAyNTMsIDc0LCA1OSwgMSwgMywgMjQ5LCAzLCA1OSwgMSwgCi0gICAgMywgNzQsIDU5LCAxLCAzLCAyMjIsIDExMywgNTksIDEsIDMsIDIyNywgNDAsIDc0LCA1OSwgMSwgMywgMjE2LCA1OCwgMjI3LCAKLSAgICA0MCwgNzQsIDU5LCAxLCAzLCAyNDMsIDE3NywgNTksIDEsIDMsIDIxNiwgNTgsIDcyLCA1OSwgMSwgMywgMjM1LCAyNywgNTksIAotICAgIDEsIDMsIDE4MywgNTksIDEsIDMsIDI0NSwgOTYsIDU5LCAxLCAzLCA3NSwgNTksIDEsIDMsIDIyNywgNDAsIDc1LCA1OSwgMSwgCi0gICAgMywgMjE2LCAyMjcsIDE1MSwgNzUsIDU5LCAxLCAzLCAyNTEsIDEwMSwgMTUxLCA3NSwgNTksIDEsIDMsIDIyNiwgMjI5LCAKLSAgICA1OSwgMSwgMywgMjE4LCA5OSwgNTksIDEsIDMsIDY5LCA1OSwgMSwgMywgMjIwLCAxMTMsIDY5LCA1OSwgMSwgMywgMjE2LCAKLSAgICA1OCwgMTgzLCA1OSwgMSwgMywgMjE1LCA3OSwgNTksIDEsIDMsIDI1NCwgMTAzLCA1OSwgMSwgMywgMjUxLCAyMDMsIDU5LCAKLSAgICAxLCAzLCAyNSwgMjQzLCA4MywgNTksIDEsIDMsIDI0OCwgNSwgNTksIDEsIDMsIDI1LCAyMjYsIDksIDU5LCAxLCAzLCAyNTAsIAotICAgIDQ3LCA3LCAyMTksIDEwLCAzLCAxLCA3MiwgNywgMjE5LCAxMCwgMywgMSwgMTQ5LCA3LCAyMTksIDEwLCAzLCAxLCA2OSwgNywgCi0gICAgMjE5LCAxMCwgMywgMSwgMjE1LCA3OSwgMjUsIDIxOSwgMTAsIDMsIDEsIDI1MSwgMjAzLCAyNSwgMjE5LCAxMCwgMywgMSwgCi0gICAgMjQzLCA4MywgMjUsIDIxOSwgMTAsIDMsIDEsIDIyMywgMTkwLCAyNSwgMjE5LCAxMCwgMywgMSwgMjI2LCA5LCAyNSwgMjE5LCAKLSAgICAxMCwgMywgMSwgMjUwLCA0NywgNywgMywgMSwgMjE1LCAxODMsIDcsIDMsIDEsIDU0LCAyLCAyMzEsIDM3LCAyMTcsIDQyLCAKLSAgICA3LCAzLCAxLCAyNDksIDQsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDI0NCwgMjMxLCAyLCAyMzEsIDM3LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjMxLCAzNywgCi0gICAgMjE3LCA0MiwgNywgMywgMSwgMjI2LCAyMzAsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjQ0LCA1NywgMjQsIDIzMSwgMzcsIDIxNywgNDIsIDcsIAotICAgIDMsIDEsIDIyMywgNCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDIzMSwgMzcsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMTYsIDU4LCAyNDMsIDE3NywgCi0gICAgNTksIDEsIDMzLCAyNDUsIDEwOCwgNywgMywgMSwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCAzLCAxLCAyMTcsIDE2NCwgMiwgCi0gICAgMjE5LCA0NywgNywgMywgNiwgMSwgMjQwLCAxNDYsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDE4NCwgMiwgOTAsIDcsIDMsIDEsIAotICAgIDIyNiwgMjMwLCAyLCA5MCwgNywgMywgNiwgMSwgMTExLCAyLCA5MCwgNywgMywgMSwgMjE1LCAxMjksIDIsIDkwLCA3LCAzLCAKLSAgICAxLCA1NCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyNDQsIAotICAgIDIzMSwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzNSwgCi0gICAgMjgsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzIsIAotICAgIDExMCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjI2LCAKLSAgICAyMzAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMjMsIAotICAgIDQsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0NSwgNDEsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIxNSwgCi0gICAgODAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIxMywgMTY3LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMTE4LCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyNTQsIDUzLCAKLSAgICAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyNDksIDQsIDIsIDI0MSwgMzgsIDI0LCAyMTgsIDI3LCA3LCAzLCAxLCAxOTEsIAotICAgIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyNywgNDAsIDE5MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjIzLCAKLSAgICAyMDIsIDIyNywgNDAsIDE5MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjIyLCAxMTQsIDIsIDIyMywgMjA3LCAxMDEsIAotICAgIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMjcsIDQwLCAxNTcsIDIsIDIyMywgMjA3LCAKLSAgICAxMDEsIDcsIDMsIDEsIDI0NSwgNDEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDExMSwgMiwgMjIzLCAyMDcsIDEwMSwgCi0gICAgNywgMywgMSwgMjQ0LCAyMzMsIDIsIDIyMywgMjA3LCAxMDEsIDU5LCAxLCAzLCAyMTYsIDU4LCAyNTQsIDUyLCA1OSwgMSwgCi0gICAgMywgMjUwLCAyNTIsIDU5LCAxLCAzLCAyNTAsIDI1MywgMiwgMjQ5LCA0MSwgNTksIDEsIDMsIDI0NSwgMjUsIDU5LCAxLCAzLCAKLSAgICAyMjMsIDIwMiwgMjI3LCA0MCwgNzQsIDU5LCAxLCAzLCAyNDQsIDIzMCwgNTksIDEsIDMsIDI0NywgNzMsIDIzNSwgMTQzLCAKLSAgICAyLCA5MCwgNTksIDEsIDMsIDExMywgMjQzLCAxNzcsIDU5LCAxLCAzLCAyMTYsIDU4LCAyNDIsIDQxLCA1OSwgMSwgMywgCi0gICAgMjQwLCAxNDYsIDIsIDkwLCA1OSwgMSwgMywgMjM1LCAxODMsIDU5LCAxLCAzLCA2LCA3MiwgNTksIDEsIDMsIDYsIDI0MCwgCi0gICAgMTQ2LCAyLCA5MCwgNTksIDEsIDMsIDIzNSwgMTQzLCAyLCAyNDksIDY3LCA1OSwgMSwgMywgMjMzLCAxNzEsIDIsIDIyMywgCi0gICAgMjA3LCAxMDEsIDU5LCAxLCAzLCAyMzMsIDE3MSwgMiwgMjI2LCAxOTMsIDEwMSwgNTksIDEsIDMsIDYsIDE1MCwgNTksIDEsIAotICAgIDMsIDIzMiwgMTEwLCAyLCAxMDEsIDU5LCAxLCAzLCAyMTYsIDU4LCAyMzIsIDExMCwgMiwgMTg0LCAyMzMsIDYwLCA1OSwgMSwgCi0gICAgMywgMjMwLCA5OCwgMiwgNDIsIDEwMSwgNTksIDEsIDMsIDIzMCwgOTgsIDIsIDIyMywgMjA3LCAxMDEsIDU5LCAxLCAzLCA2LCAKLSAgICAyMDQsIDU5LCAxLCAzLCAyNTIsIDU0LCA3NSwgNTksIDEsIDMsIDIyNiwgOSwgNTksIDEsIDMsIDIyMywgNCwgMiwgMTAxLCAKLSAgICA1OSwgMSwgMywgMjQ1LCA0MCwgNTksIDEsIDMsIDIxOCwgMTAwLCAyLCAyMjYsIDE5MywgMTAxLCA1OSwgMSwgMywgMTExLCAKLSAgICAxMzQsIDU5LCAxLCAzLCAyMTUsIDEyOCwgNTksIDEsIDMsIDYsIDY5LCA1OSwgMSwgMywgMjE1LCA4MCwgMiwgMTAxLCA1OSwgCi0gICAgMSwgMywgMjE2LCA1OCwgMjE1LCA3OSwgNTksIDEsIDMsIDIxMiwgMTUyLCA1OSwgMSwgMywgMjEyLCAxNTMsIDIsIDIyMywgCi0gICAgMjA3LCAxMDEsIDU5LCAxLCAzLCAyMTIsIDE1MywgMiwgMjQ5LCA0MSwgNTksIDEsIDMsIDI0NCwgMjMyLCA1OSwgMSwgMywgCi0gICAgMjE3LCAxMzIsIDM3LCAyNDYsIDcyLCAyNDIsIDExNCwgMjU0LCAxNzQsIDM3LCAyNDYsIDcyLCAyNTQsIDE2NCwgMjU0LCAKLSAgICAxNzQsIDM3LCAyMTksIDI1MywgNTUsIDM3LCAyMTgsIDIwNywgNzcsIDM3LCAyMzIsIDM2LCAzNywgMjQyLCAxMTEsIDM3LCAKLSAgICAyMzIsIDM0LCAzNywgMjU0LCAxNjIsIDM3LCAyNDIsIDExMiwgMzcsIDI1NCwgMTYzLCAzNywgNywgMywgMSwgMjI0LCAxMTMsIAotICAgIDU1LCAzNywgMjUxLCA3MywgMzcsIDIzMiwgMzUsIDM3LCA1MSwgMjQ5LCAyMjQsIDQ5LCAzNywgMjI3LCA5MSwgNDksIDM3LCAKLSAgICAyMTIsIDI4LCA1NSwgMzcsIDIzNSwgMTcwLCA1NSwgMzcsIDIxNSwgMTIyLCA0OSwgMzcsIDIxNSwgMTA1LCA0OSwgMzcsIDcsIAotICAgIDMsIDEsIDI0NCwgMzIsIDIyNywgNDAsIDExOCwgNDksIDM3LCA3LCAzLCAxLCAyNTQsIDE0OCwgMzcsIDcsIDMsIDEsIDI1MywgCi0gICAgMjQwLCAzNywgNywgMywgMSwgMjUzLCA5MiwgMzcsIDcsIDMsIDEsIDI1MCwgMjUzLCAyNTAsIDExNywgMzcsIDcsIDMsIDEsIAotICAgIDIzNSwgMjEwLCAyNDksIDMsIDM3LCA3LCAzLCAxLCAyNDUsIDI1LCAzNywgNywgMywgMSwgMjQzLCAxNzcsIDM3LCA3LCAxLCAKLSAgICAzLCA2LCAyNDMsIDE3NywgMzcsIDcsIDMsIDEsIDIzNSwgMjcsIDM3LCA3LCAzLCAxLCAxNTAsIDM3LCA3LCAxLCAzLCA2LCAKLSAgICAxNTAsIDM3LCA3LCAxLCAzLCA2LCAxODMsIDM3LCA3LCAzLCAxLCAyMDQsIDM3LCA3LCAxLCAzLCA2LCAyMDQsIDM3LCA3LCAKLSAgICAxLCAzLCA2LCAxNDksIDM3LCA3LCAzLCAxLCAyMjQsIDExMywgMjIzLCA4OCwgMzcsIDcsIDMsIDEsIDE5NywgMzcsIDcsIDMsIAotICAgIDEsIDE4NCwgMTk3LCAzNywgNywgMywgMSwgMjEyLCAxNTIsIDM3LCA1MSwgMjM1LCAxOTEsIDI1MSwgNzUsIDU1LCAzNywgCi0gICAgMjU0LCA1NywgMTIzLCAyMTEsIDIxMSwgNTUsIDM3LCA0MiwgMjUzLCAxNjUsIDQ5LCAzNywgNDYsIDI1MywgMTY1LCAyNCwgCi0gICAgMTE5LCAyNTMsIDE2NSwgNTUsIDcsIDYsIDEsIDExOCwgMiwgMjIzLCAxMzEsIDU1LCA3LCAzLCAxLCAxMTgsIDIsIDIyMywgCi0gICAgMTMxLCA1NSwgNywgNiwgMSwgNTQsIDIsIDYyLCA0OSwgNywgMywgMSwgNTQsIDIsIDYyLCA0OSwgNywgNiwgMSwgNTQsIDIsIAotICAgIDYyLCA1NSwgNywgMywgMSwgNTQsIDIsIDYyLCA1NSwgNywgNiwgMSwgNTQsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgCi0gICAgNTQsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDI1MCwgMTE4LCAyNCwgMTc5LCA3LCAzLCAxLCAKLSAgICAyNTAsIDI1MywgMiwgMjUwLCAxMTgsIDI0LCAxNzksIDcsIDYsIDEsIDI0OSwgNCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDksIAotICAgIDQsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjQ5LCA0LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDI0OSwgNCwgMiwgNjIsIDU1LCA3LCAKLSAgICA2LCAxLCAyNDksIDQsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIAotICAgIDI0OSwgNCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDI0OSwgNCwgMiwgCi0gICAgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAyNDksIDQsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyMzIsIDM4LCAKLSAgICAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDE5MSwgMiwgMjMyLCAzOCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxOTEsIDIsIAotICAgIDIzMiwgMzgsIDI0LCAxNzksIDcsIDMsIDEsIDE5MSwgMiwgMjMyLCAzOCwgMjQsIDE3OSwgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxOTEsIDIsIDIxNywgNDMsIAotICAgIDU1LCA3LCAzLCAxLCAxOTEsIDIsIDIxNywgNDMsIDU1LCA3LCA2LCAxLCAxOTEsIDIsIDI1MCwgMTE4LCAyNCwgMjUxLCA3NCwgCi0gICAgNywgMywgMSwgMTkxLCAyLCAyNTAsIDExOCwgMjQsIDI1MSwgNzQsIDcsIDYsIDEsIDI0NCwgMjMxLCAyLCA2MiwgNDksIDcsIAotICAgIDMsIDEsIDI0NCwgMjMxLCAyLCA2MiwgNDksIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAyNDMsIAotICAgIDE3OCwgMiwgMjMyLCAzNywgNywgNiwgMSwgMjQyLCA0MiwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCA2MiwgCi0gICAgNDksIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDYyLCA1NSwgNywgMywgMSwgMjQyLCA0MiwgMiwgNjIsIDU1LCA3LCA2LCAxLCAKLSAgICAyNDIsIDQyLCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDI0MiwgNDIsIDIsIAotICAgIDI1MCwgMTE3LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMjQyLCA0MiwgMiwgMjUxLCA3NSwgCi0gICAgNTUsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI1MSwgNzUsIDU1LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjE3LCA0MywgNTUsIAotICAgIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDI0NywgMjEwLCAyNCwgCi0gICAgMTc5LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMTAsIDI0LCAxNzksIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDE3OSwgCi0gICAgNywgMywgMSwgMjM1LCAyOCwgMiwgMTc5LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIzNSwgMjgsIAotICAgIDIsIDYyLCA1NSwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyMzIsIAotICAgIDI0MywgNTUsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCA2MiwgNTUsIDcsIAotICAgIDYsIDEsIDIzMywgMTcxLCAyLCA2MiwgMjUxLCAyMjAsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgNjIsIAotICAgIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMjMyLCAxMTAsIDIsIDE3OSwgNywgMywgMSwgMjMyLCAxMTAsIDIsIAotICAgIDE3OSwgNywgNiwgMSwgMjMyLCAxMTAsIDIsIDYyLCA0OSwgNywgMywgMSwgMjMyLCAxMTAsIDIsIDYyLCA0OSwgNywgNiwgMSwgCi0gICAgMjMyLCAxMTAsIDIsIDYyLCA1NSwgNywgMywgMSwgMjMyLCAxMTAsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMzAsIDk4LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDYyLCA1NSwgNywgMywgCi0gICAgMSwgMjMwLCA5OCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIzMCwgCi0gICAgOTgsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAyMzAsIDk4LCAKLSAgICAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDE1NywgMiwgMjE3LCA0MywgMjQsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyMTcsIAotICAgIDQzLCAyNCwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAyNDcsIDIwOSwgNywgMywgMSwgMTU3LCAyLCAKLSAgICAyMTcsIDQzLCAyNCwgMjQ3LCAyMDksIDcsIDYsIDEsIDE1NywgMiwgMjMyLCAzOCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAKLSAgICAxNTcsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMTc5LCA3LCAzLCAKLSAgICAxLCAxNTcsIDIsIDIzMiwgMzgsIDI0LCAxNzksIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAxNzksIDcsIDMsIDEsIDIyNiwgCi0gICAgMjMwLCAyLCAxNzksIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIyNiwgMjMwLCAyLCA2MiwgNDksIAotICAgIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA2MiwgNDksIDcsIDYsIDEsIDIyNCwgCi0gICAgMTEzLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCA2MiwgCi0gICAgMjUxLCAyMjAsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgCi0gICAgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIzMiwgMjQzLCA1NSwgCi0gICAgNywgNiwgMSwgMjIzLCA0LCAyLCA2MiwgNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMjMsIDQsIAotICAgIDIsIDYyLCA1NSwgNywgMywgMSwgMjIzLCA0LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjU0LCAxNjQsIDI0LCAKLSAgICA2MiwgNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgMjU0LCAxNjQsIDI0LCA2MiwgNDksIDcsIDYsIDEsIDIyMywgNCwgMiwgCi0gICAgMjUwLCAxNjcsIDI0LCA2MiwgNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgMjUwLCAxNjcsIDI0LCA2MiwgNDksIDcsIDYsIDEsIAotICAgIDIyMywgNCwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDYyLCAyNTEsIDIyMCwgCi0gICAgMjQsIDYyLCA0OSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDYyLCA0OSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDYyLCA0OSwgCi0gICAgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDYyLCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjE4LCAKLSAgICAxMDAsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjE4LCAKLSAgICAxMDAsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTExLCAKLSAgICAyLCAyNDcsIDIxMCwgNTUsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDIxNywgNDMsIAotICAgIDU1LCA3LCAzLCAxLCAxMTEsIDIsIDIxNywgNDMsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgCi0gICAgMTExLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDExMSwgMiwgMjE3LCA0MywgMjQsIDE3OSwgNywgMywgMSwgMTExLCAyLCAKLSAgICAyMTcsIDQzLCAyNCwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIDIzMiwgMzgsIDI0LCAyNDcsIDIwOSwgNywgMywgMSwgMTExLCAKLSAgICAyLCAyMzIsIDM4LCAyNCwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxNSwgODAsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDIxNSwgODAsIAotICAgIDIsIDIxNywgNDIsIDcsIDYsIDEsIDIxNSwgODAsIDIsIDYyLCA1NSwgNywgMywgMSwgMjE1LCA4MCwgMiwgNjIsIDU1LCA3LCAKLSAgICA2LCAxLCAyMTQsIDgzLCAyLCAyNDIsIDExMywgNywgMywgMSwgMjE0LCA4MywgMiwgMjQyLCAxMTMsIDcsIDYsIDEsIDIxNCwgCi0gICAgODMsIDIsIDE3OSwgNywgMywgMSwgMjE0LCA4MywgMiwgMTc5LCA3LCA2LCAxLCAyMTQsIDgzLCAyLCAyNDcsIDIwOSwgNywgCi0gICAgMywgMSwgMjE0LCA4MywgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxNCwgODMsIDIsIDYyLCA0OSwgNywgMywgMSwgMjE0LCAKLSAgICA4MywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMTQsIDgzLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDYyLCA1NSwgCi0gICAgNywgNiwgMSwgMjEzLCAxNjcsIDIsIDYyLCA0OSwgNywgMywgMSwgMjEzLCAxNjcsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjEzLCAKLSAgICAxNjcsIDIsIDI0NywgMjA5LCA3LCAzLCAxLCAyMTMsIDE2NywgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAKLSAgICA2MiwgNDksIDcsIDMsIDEsIDIxMywgMTA2LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDIyMywgNywgCi0gICAgMywgMSwgMjEyLCAxNTMsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MywgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgCi0gICAgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAKLSAgICAyNDcsIDIwOSwgNywgMywgMSwgMjE0LCA4MywgMiwgMjIzLCAxMzEsIDQ5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjIzLCAKLSAgICAxMzEsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDQ2LCAxNTEsIDIyMywgMTMwLCA3LCAzLCAxLCAxODQsIDIyMywgNCwgMiwgNjIsIAotICAgIDQ5LCA3LCAzLCAxLCAxODQsIDIyMywgNCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAxODQsIDIyMywgNCwgMiwgMTI0LCAKLSAgICA5MCwgNywgNiwgMSwgMjIwLCAyNTUsIDE5NywgNywgMywgMSwgMjQ4LCA1LCA3LCA2LCAxLCAxMTgsIDIsIDYyLCA1NSwgNywgCi0gICAgMywgMSwgMTE4LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDExOCwgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExOCwgMiwgMjQxLCAKLSAgICAzOCwgNDksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAxNzksIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIAotICAgIDI0LCAxNzksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTE4LCAyLCAyNDksIAotICAgIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIAotICAgIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgCi0gICAgNzUsIDI0LCAxNzksIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDE3OSwgNywgNiwgMSwgMTE4LCAyLCAyNTEsIDc1LCAKLSAgICAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIAotICAgIDI1MSwgNzUsIDI0LCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgMjQxLCAzOCwgNDksIDcsIAotICAgIDYsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDIxNywgNDIsIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDIxNywgCi0gICAgNDIsIDcsIDYsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgCi0gICAgNjIsIDU1LCA3LCA2LCAxLCAxOTEsIDIsIDYyLCA1NSwgNywgMywgMSwgMTkxLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDE5MSwgCi0gICAgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDE5MSwgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE5MSwgMiwgMjE3LCA0MiwgCi0gICAgNywgMywgMSwgMTkxLCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCAzLCAxLCAKLSAgICAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDMsIAotICAgIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgCi0gICAgMzgsIDQ5LCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTkxLCAKLSAgICAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgNiwgMSwgCi0gICAgMjQwLCAxNDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIAotICAgIDI0MCwgMTQ2LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDE1NywgMiwgNjIsIAotICAgIDU1LCA3LCAzLCAxLCAxNTcsIDIsIDYyLCA1NSwgNywgNiwgMSwgMTU3LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTU3LCAKLSAgICAyLCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyNDksIAotICAgIDIyNCwgMjQsIDE3OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxNTcsIDIsIAotICAgIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgMywgCi0gICAgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCAKLSAgICA0MiwgNywgMywgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIAotICAgIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzYsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzYsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyNDEsIDM4LCA0OSwgCi0gICAgNywgNiwgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDIxNywgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAKLSAgICAyMTcsIDQyLCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDYyLCA1NSwgNywgMywgMSwgMTExLCAyLCA2MiwgNTUsIDcsIDYsIAotICAgIDEsIDExMSwgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExMSwgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDExMSwgMiwgCi0gICAgMjQwLCAyMzYsIDI0LCAxNzksIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAxNzksIDcsIDYsIDEsIDExMSwgMiwgCi0gICAgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyNDEsIAotICAgIDM4LCA0OSwgNywgNiwgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDIxNywgNDIsIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAKLSAgICAyMzYsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDIxMywgMTA2LCAKLSAgICAyLCAyNDIsIDExMywgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDYyLCA1NSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDYyLCA1NSwgCi0gICAgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjQxLCAzOCwgNDksIDcsIAotICAgIDYsIDEsIDIxMywgMTA2LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMjMxLCAKLSAgICAzNiwgMjMyLCAyMTQsIDcsIDMsIDEsIDIzMSwgMzYsIDIzMiwgMjE0LCA3LCA2LCAxLCAyMzEsIDM2LCAyMTUsIDc5LCA3LCAKLSAgICAzLCAxLCAyMzEsIDM2LCAyMTUsIDc5LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjMyLCAxNzcsIDcsIDMsIDEsIDIxMywgCi0gICAgMTA2LCAyLCAyMzIsIDE3NywgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjU0LCA1MywgCi0gICAgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAKLSAgICAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIAotICAgIDUwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgCi0gICAgMzksIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIAotICAgIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCA1MCwgCi0gICAgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgCi0gICAgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjA3LCAyNCwgMjE0LCAKLSAgICAyNDUsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNSwgMzksIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCA2NCwgCi0gICAgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAKLSAgICAxLCAyNDUsIDY0LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgMzksIDI1LCAzLCAKLSAgICAxLCAyNDUsIDI5LCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgCi0gICAgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIAotICAgIDI0NSwgMjksIDIsIDIyNSwgMzksIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIAotICAgIDI0OCwgOTksIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjM1LCAKLSAgICAxODQsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgCi0gICAgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjM1LCAxODQsIAotICAgIDIsIDIyNSwgMzksIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAKLSAgICAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgMjM0LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIAotICAgIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjYsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgCi0gICAgMSwgMjI3LCA2NiwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMjUsIDM5LCAyNSwgNiwgCi0gICAgMSwgMjI3LCA2NiwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIAotICAgIDYsIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgCi0gICAgMjI1LCAzOSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNSwgNDAsIAotICAgIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIxNSwgCi0gICAgMTI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIAotICAgIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAKLSAgICAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIwNywgCi0gICAgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjE1LCAKLSAgICAxMjksIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIAotICAgIDIyNywgNjgsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgCi0gICAgMjM0LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMjcsIAotICAgIDY4LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgCi0gICAgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgCi0gICAgMjM0LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMjYsIDIzNCwgMjUsIAotICAgIDMsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAKLSAgICAyMzUsIDE4NCwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMjcsIAotICAgIDY2LCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIAotICAgIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjE0LCAKLSAgICAyNDUsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTQsIAotICAgIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAKLSAgICAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgCi0gICAgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIAotICAgIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjUsIAotICAgIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgCi0gICAgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgCi0gICAgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAKLSAgICAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgCi0gICAgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAKLSAgICA1MSwgMjQsIDIyNSwgNTEsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMTQsIAotICAgIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgCi0gICAgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAKLSAgICAyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIAotICAgIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIAotICAgIDIsIDIwNywgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAKLSAgICAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIAotICAgIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgCi0gICAgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIAotICAgIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgCi0gICAgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjUsIDUxLCAyNSwgCi0gICAgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDIyNywgNjgsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgCi0gICAgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAKLSAgICAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNCwgCi0gICAgMTAxLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjMyLCAzNywgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgMjM1LCAKLSAgICAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIDUwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI2LCAKLSAgICA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjE0LCAxMDEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMzIsIDM3LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjYsIDIzNCwgCi0gICAgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNTEsIDI1LCAyMzQsIDExLCAyNSwgMjI1LCA1MSwgMjUsIDIyNSwgMzksIDI1LCAKLSAgICAyMjYsIDUwLCAyNSwgMjQ3LCAyMDQsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjE0LCAyNDYsIDI0LCAKLSAgICAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCAyMzUsIAotICAgIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgNTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjYsIAotICAgIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIAotICAgIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjYsIDIzNCwgCi0gICAgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNTEsIDI1LCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAyMjUsIDQwLCAKLSAgICAyNCwgMjI2LCAyMzQsIDI1LCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMTQsIDEwMSwgCi0gICAgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMzIsIDM3LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgMjE0LCAKLSAgICAyNDUsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjQ3LCAyMDQsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAKLSAgICAyLCAyMjYsIDUwLCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyMTQsIDEwMSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMzIsIDM3LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIAotICAgIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIyNiwgMjM0LCAyNSwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAKLSAgICAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjE0LCAxMDEsIAotICAgIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjMyLCAzNywgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMjMsIDE5MSwgCi0gICAgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyMywgMTkxLCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNiwgCi0gICAgNTAsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDQsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIAotICAgIDIxNCwgMTAxLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIzMiwgMzcsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjE0LCAKLSAgICAyNDUsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjMsIDE5MSwgMiwgMjQ4LCA5OSwgMjUsIAotICAgIDI0NywgMjA0LCAyNCwgMjE0LCAyNDUsIDI1LCAyNDcsIDIwNCwgMjQsIDIyNiwgMjM0LCAyNSwgMjE0LCAyNDUsIDI1LCAzLCAKLSAgICAxLCAyMjcsIDY4LCAyLCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjEyLCAyMTAsIAotICAgIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAKLSAgICA1MCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIAotICAgIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMTQsIDI0NSwgCi0gICAgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA1MSwgMjUsIDIyNiwgCi0gICAgMjM0LCAyNSwgMjQ4LCA5OSwgMjQ1LCAxMDksIDIyNCwgMTcyLCAyNDUsIDExOCwgMjI0LCAxNzIsIDI0NSwgMTA5LCAyMTksIAotICAgIDIwNiwgMjQ1LCAxMTgsIDIxOSwgMjA2LCAyMTcsIDk1LCAyMTksIDIwNiwgMjQzLCAyMzUsIDIxOSwgMjA2LCAyMjAsIDUxLCAKLSAgICAyMTksIDIwNiwgMjQ0LCA4MSwgMjE5LCAyMDYsIDIyNSwgMjcsIDIxOSwgMjA2LCAyMTcsIDEyMywgMjE5LCAyMDYsIDI0MiwgCi0gICAgMTcsIDIxOSwgMjA2LCAyMTIsIDgwLCAyMTMsIDIzMCwgMjE5LCAyMDYsIDIxMiwgODAsIDIxMywgMjMwLCAyMjgsIDE3OCwgCi0gICAgMjEyLCA4MCwgMjEzLCAyMzAsIDIzNSwgNjYsIDIzMywgNjIsIDc3LCAyMjMsIDE0MCwgNzcsIDI0MCwgMTYwLCAyMjgsIAotICAgIDE3OSwgMjQwLCAxNjAsIDI0NCwgODEsIDI0OCwgMTAxLCAyNDUsIDEwOSwgMjQ4LCAxMDEsIDI0NSwgMTE4LCAyNDgsIDEwMSwgCi0gICAgMTk5LCAxMzQsIDUxLCA3MSwgMjMyLCAyNDIsIDUxLCAxMTUsIDIzMiwgMjQyLCA0MiwgMjIwLCA4MSwgMjI0LCAxNDMsIDc3LCAKLSAgICA0NiwgMjIwLCA4MSwgMjI0LCAxNDMsIDc3LCAyMjAsIDgxLCAyMzIsIDE2NCwgMjI0LCAxNDMsIDc3LCAyMjAsIDgxLCAyNDEsIAotICAgIDE0OSwgMjI0LCAxNDMsIDc3LCA0MiwgNTEsIDIyNCwgMTQzLCA3NywgNDYsIDUxLCAyMjQsIDE0MywgNzcsIDUxLCAyMzIsIAotICAgIDE2NCwgMjI0LCAxNDMsIDc3LCA1MSwgMjQxLCAxNDksIDIyNCwgMTQzLCA3NywgMjQ4LCAxNDksIDUxLCAyNDgsIDE0OSwgCi0gICAgMjUxLCA0MiwgMjE2LCAxODAsIDI1MSwgNDIsIDEyMiwgNjIsIDIzMywgODAsIDExNywgNjIsIDIzMywgODAsIDE5OSwgMjQ1LCAKLSAgICAxMjAsIDI0MCwgMTU4LCAyMjUsIDE0NCwgMjMyLCAyNDMsIDIyMSwgNTcsIDIyNiwgMTQzLCAyMjEsIDU3LCAyMzMsIDYyLCAKLSAgICAyNDUsIDExNiwgMjIzLCAxNDAsIDI0NSwgMTE2LCAyMjUsIDEyNiwgMjQ3LCAxNDgsIDI0MywgMjQ0LCAyMzMsIDYyLCAyMjYsIAotICAgIDI0MSwgMjIzLCAxNDAsIDIyNiwgMjQxLCAyMzAsIDE0LCAyMjgsIDE4NCwgMjE5LCAyMDYsIDIyNiwgNTgsIDIzMSwgNiwgCi0gICAgNTIsIDIyNiwgNTgsIDIxNywgMjAxLCAyMTcsIDEwMSwgNTIsIDIyNSwgNzEsIDUxLCAyMjUsIDcxLCAyMTYsIDE2OSwgMjI1LCAKLSAgICA3MSwgMjIzLCAyMDIsIDIyNSwgNzEsIDIyMywgMjAyLCA1MSwgMjI1LCA3MSwgMjIzLCAyMDIsIDIxNiwgMTY5LCAyMjUsIAotICAgIDcxLCAyNTAsIDE3MCwgMjIwLCA4MSwgMjMzLCA2NiwgMjU0LCAxOSwgMjI0LCAxNDMsIDc3LCAyMjAsIDgxLCAyMjMsIDE0NCwgCi0gICAgMjU0LCAxOSwgMjI0LCAxNDMsIDc3LCAyMjQsIDAsIDc3LCA1MSwgMjQ0LCAyNTQsIDc3LCAyMzUsIDE5OCwgMjI2LCAyNDMsIAotICAgIDIxNSwgMTUwLCAxMzcsIDIxNywgNjUsIDI1MCwgMTcxLCAyMzUsIDIxMywgMjI1LCAxNDQsIDI1MywgMTMwLCAyNDAsIDE2MSwgCi0gICAgMjUxLCA0MiwgMjQzLCAyMjgsIDIyMCwgMjMsIDQyLCA0MSwgMjUxLCA4NSwgMiwgMjI0LCAxNTIsIDQ2LCA0MSwgMjUxLCAKLSAgICA4NSwgMiwgMjI0LCAxNTIsIDUxLCAyMjQsIDE1OCwgNzcsIDIyNCwgMTU4LCAyNDQsIDI1NCwgNzcsIDI0NCwgMjU0LCAyMjQsIAotICAgIDE1OCwgNzcsIDIxNywgMjMsIDUsIDI0NSwgMzAsIDIyMywgMjAyLCAyMjUsIDIwMCwgNTIsIDgzLCAxMzIsIDI1MSwgNDIsIAotICAgIDgzLCA5NSwgMjUxLCA0MiwgMTE1LCAyNTMsIDEzMiwgMjIzLCAyMDIsIDIyMSwgNzAsIDI0OSwgMTk0LCAyMTUsIDEzNCwgCi0gICAgMTE3LCAyNTMsIDEzMSwgMjU0LCA2NywgMjE0LCAxNjUsIDI0OSwgMTU2LCAyMzAsIDI1MSwgNTIsIDIxOCwgMTc5LCAyNDgsIAotICAgIDEwMSwgMjM1LCAxOTEsIDIxNSwgMTUwLCAyNDQsIDIxLCAyMjUsIDI3LCA3NywgMTMzLCA2MiwgMjI1LCAyNiwgMjI0LCAKLSAgICAxNjksIDIyNSwgNzEsIDI0MywgMjM3LCA2MiwgMjI1LCAyNiwgMjQ0LCA1MCwgNjIsIDIyNSwgMjYsIDExNywgNjIsIDIyNSwgCi0gICAgMjYsIDI0MywgMjM3LCA2MiwgNzcsIDI0NiwgNzIsIDI0OSwgNzAsIDIxNiwgMTc5LCA3MSwgMjQzLCAyMzcsIDI0NywgNzIsIAotICAgIDIzMSwgMTQ3LCAxNCwgMjE5LCAyMDYsIDIxMywgMTk2LCAyMzUsIDY2LCAyNDMsIDE5OCwgMjUzLCAyMjIsIDIzNSwgMTg5LCAKLSAgICAyMTcsIDM4LCAyMzUsIDE4OSwgMjIxLCA1NywgMjM1LCAxODksIDIyNSwgMTU2LCAyMzUsIDIyNSwgMjE4LCAxMjcsIDIxOCwgCi0gICAgMTk2LCAyNTQsIDE2NiwgMjE4LCAxMjcsIDIxOCwgMTk2LCAyMzUsIDIyNSwgMTIsIDI0MywgMjQ1LCAyMjEsIDMsIDI1NCwgCi0gICAgMTY2LCAxMiwgMjQzLCAyNDUsIDIyMSwgMywgMjMwLCAxMCwgMjEsIDIyMSwgNCwgMjI4LCAxODAsIDIxLCAyMjEsIDQsIAotICAgIDIxOCwgMjIzLCAyMTIsIDc5LCAyMTgsIDIyMywgNywgMywgMSwgNzIsIDIxOCwgMjIzLCAxNjMsIDIxOCwgMjIzLCAxODAsIAotICAgIDIxOCwgMjIzLCAxODksIDIxOCwgMjIzLCAxOTgsIDIxOCwgMjIzLCAxOTUsIDIxOCwgMjIzLCAyMDAsIDIxOCwgMjIzLCA5NCwgCi0gICAgNTIsIDIxOCwgMjIzLCAyMzAsIDI1MCwgMjE4LCAyMjMsIDI0NSwgNjEsIDUyLCAyMTgsIDIyMywgNDIsIDIyNiwgMTMxLCAKLSAgICAyMTgsIDIyMywgNDYsIDIyNiwgMTMxLCAyMTgsIDIyMywgNywgMywgMSwgMjA0LCAyMTksIDEwLCAyMTIsIDc5LCAyMTksIAotICAgIDEwLCAxMTYsIDIxOSwgMTAsIDEwOSwgMjE5LCAxMCwgMTY2LCAyMTksIDEwLCAxNjMsIDIxOSwgMTAsIDE4MCwgMjE5LCAxMCwgCi0gICAgMTg5LCAyMTksIDEwLCAxOTgsIDIxOSwgMTAsIDE5NSwgMjE5LCAxMCwgMjAwLCAyMTksIDEwLCA5NCwgNTIsIDIxOSwgMTAsIAotICAgIDIzMCwgMjUwLCAyMTksIDEwLCAyNDUsIDYxLCA1MiwgMjE5LCAxMCwgNDIsIDIyNiwgMTMxLCAyMTksIDEwLCA0NiwgMjI2LCAKLSAgICAxMzEsIDcsIDIxOSwgMTAsIDMsIDEsIDYxLCA3LCAyMTksIDEwLCAzLCAxLCA3NCwgNywgMjE5LCAxMCwgMywgMSwgNzUsIDcsIAotICAgIDIxOSwgMTAsIDMsIDEsIDIxMywgMTY2LCA3LCAyMTksIDEwLCAzLCAxLCAyMjIsIDExMywgNywgMjE5LCAxMCwgMywgMSwgCi0gICAgMjQyLCA0MSwgNywgMjE5LCAxMCwgMywgMSwgMjM1LCAyNywgNywgMjE5LCAxMCwgMywgMSwgMTUwLCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAxODMsIDcsIDIxOSwgMTAsIDMsIDEsIDIwNCwgNywgMjE5LCAxMCwgMywgMSwgMjI2LCAyMjksIDcsIDIxOSwgMTAsIDMsIAotICAgIDEsIDE5NywgNywgMjE5LCAxMCwgMywgMSwgMjE4LCA5OSwgMjQ1LCAxMywgNTIsIDI0OSwgMTY1LCA1MiwgMjQ5LCA1NywgCi0gICAgNTIsIDI0MywgMjIxLCAyNDMsIDIyNCwgNTIsIDIzMiwgMjI3LCA1MiwgMjMxLCA3LCA1MiwgMjMwLCAyOSwgNTIsIDIyNiwgCi0gICAgMzgsIDUyLCAyMjMsIDI5LCA1MiwgMjEzLCAyMDQsIDUyLCAxNTYsIDIyMCwgMjI5LCA1MiwgMjQ3LCA4MSwgNTIsIDI0NSwgCi0gICAgMTQsIDUyLCAyMzQsIDg1LCA1MiwgMjE2LCA3NiwgNTIsIDI0NiwgNTUsIDUyLCAyNDMsIDE2LCAyMjYsIDY4LCA1MiwgMjI2LCAKLSAgICAzNiwgNTIsIDI0MiwgODgsIDUyLCAyNTMsIDk4LCA1MiwgMjQwLCAyMTUsIDUyLCAyNTAsIDExOSwgNTIsIDIzMiwgMjIwLCAKLSAgICAyMTYsIDIxNiwgNTIsIDIxOSwgMTg4LCA1MiwgMjE3LCAxOTgsIDUyLCAyMzUsIDIzOCwgMjIzLCAyOSwgNTIsIDM3LCA0MiwgCi0gICAgMjQxLCAyMzgsIDQ5LCAzNywgNDYsIDI0MSwgMjM4LCA0OSwgMzcsIDE4NCwgNzEsIDIzMiwgMjQzLCAyMjYsIDI0NCwgMzcsIAotICAgIDIyMCwgMTc1LCA3MSwgMjMyLCAyNDMsIDIyNiwgMjQ0LCAzNywgMjUzLCAyNTUsIDc2LCA0OSwgMzcsIDI0OSwgMTk1LCA3NiwgCi0gICAgNDksIDM3LCA0MiwgNzYsIDQ5LCAzNywgNDYsIDc2LCA0OSwgMzcsIDIyMywgMTMxLCAyMjYsIDI0NCwgMzcsIDI0OSwgMTk1LCAKLSAgICAyMjMsIDEzMSwgMjI2LCAyNDQsIDM3LCAyNTMsIDI1NSwgMjIzLCAxMzEsIDIyNiwgMjQ0LCAzNywgMTMzLCAxNzYsIDQ5LCAKLSAgICAzNywgMjQzLCAyMzcsIDE3NiwgNDksIDM3LCAyNDUsIDEwNCwgMjQ5LCAyMjgsIDM3LCAyNDUsIDEwNCwgMjE5LCAxNjYsIAotICAgIDM3LCAyNDUsIDEwNCwgMjQ3LCAyMDAsIDM3LCAyNDUsIDEwNCwgMjQ5LCAyMjksIDI1MiwgOTcsIDM3LCA0MiwgNDYsIDc2LCAKLSAgICA0OSwgMzcsIDI0NSwgMTA0LCAyMjIsIDEwNywgMzcsIDI0NSwgMTA0LCAyMzQsIDE0MSwgMzcsIDI0NSwgMTA0LCAyMTUsIAotICAgIDEyNiwgMjI1LCAxNDEsIDIxNiwgMTgzLCAzNywgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjYsIDI0NCwgMzcsIDUxLCA3MSwgCi0gICAgMjE5LCA0NSwgMjI2LCAyNDQsIDM3LCAyNTQsIDksIDg3LCAzNywgMjE2LCAxNjksIDIxNSwgMTUyLCAzNywgMjEzLCAyMzIsIAotICAgIDI1MSwgNjgsIDQ5LCAzNywgMTMyLCA3NiwgMjI2LCAyNDQsIDM3LCAxODQsIDUxLCAyMTksIDIzMiwgMjI2LCAyNDQsIDM3LCAKLSAgICA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMzcsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMzcsIAotICAgIDQyLCA3NiwgNTUsIDM3LCA0NiwgNzYsIDU1LCAzNywgMjUzLCAxMzMsIDQ5LCAyNTQsIDE3MSwgMjI3LCA5NywgMjU0LCAKLSAgICAxNTYsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjE5LCAxOSwgMTg3LCA2LCAyNTAsIDI1MiwgMjQ4LCAyMiwgMjUwLCAxMTIsIAotICAgIDI1MCwgMTA5LCAyMzIsIDI0MywgODcsIDI1MCwgMTcyLCAyMjcsIDk3LCAyNTAsIDIxMiwgMjE1LCAxNTksIDI0NSwgMTUsIAotICAgIDI0OSwgMTMwLCAyMjIsIDEwNCwgMjQ4LCAyMiwgMjQ0LCAxNDcsIDExMywgMywgMjQzLCAxNzcsIDExMywgNiwgMjQyLCA0MSwgCi0gICAgMjUxLCAxNDIsIDYsIDI0MiwgNDEsIDE4NywgNiwgMjQyLCA0MSwgMjI1LCAxNjksIDI0OSwgMTMwLCAyMjUsIDE2OSwgMjQ5LCAKLSAgICAxMzEsIDExMCwgMTE3LCAyMjUsIDI0MCwgMTEzLCA2LCA3MiwgMjUxLCAxNDIsIDYsIDcyLCAxMTMsIDYsIDE1MCwgMTEzLCAKLSAgICAzLCAxNTAsIDIzMywgMTcxLCA1NCwgMjUyLCA2MCwgODcsIDE4NywgNiwgMjA0LCAyMjgsIDUyLCA1MiwgMjE5LCAyMTgsIAotICAgIDIyNCwgMTIsIDI0OSwgMTAxLCAxMTMsIDYsIDIyNiwgMjI5LCAxODcsIDYsIDIyNiwgMjI5LCAxODcsIDYsIDIyNCwgMjQwLCAKLSAgICAxMTMsIDYsIDE0OSwgMjUxLCAxNDIsIDYsIDE0OSwgMTg3LCA2LCAxNDksIDIyNSwgNzYsIDIxOCwgMjEsIDIyMywgMjE0LCAKLSAgICAyMjEsIDUzLCA3NywgMjE3LCAyMTAsIDUyLCAyMTYsIDIxMCwgMTUyLCA1MiwgMjE0LCAyMTcsIDE4NywgNiwgMjEyLCAxNTIsIAotICAgIDIyNywgMSwgNTIsIDIyNywgODcsIDUyLCAyMzUsIDE5MSwgMjI3LCA4NywgNTIsIDI1MSwgMTQyLCA2LCAyMTIsIDE1MiwgCi0gICAgMjE2LCA1OCwgMjUsIDMsIDEsIDIzNSwgMTgzLCAyMzQsIDE3OSwgNTIsIDI1NCwgMTYsIDUyLCAxMTMsIDYsIDI1MywgNzQsIAotICAgIDI1MSwgMTQyLCA2LCAyNTAsIDI1MiwgMjQ1LCAzMywgODcsIDExMywgMywgNzQsIDExMywgNiwgNzQsIDExMywgNiwgMjQ0LCAKLSAgICAyMzAsIDIxNiwgNTgsIDYsIDI0NCwgMjMwLCAxMTMsIDYsIDE4MywgMTEzLCAzLCA3NSwgMTA2LCA4NywgMjUxLCAyMDYsIAotICAgIDg3LCAyNDIsIDE3OCwgODcsIDI0OCwgMTM1LCA4NywgMjM1LCAyMjksIDIxOSwgMjE2LCAyMjMsIDg5LCA2LCAyMjQsIDI0MCwgCi0gICAgMjQ0LCAxNTAsIDUyLCAxODcsIDMsIDIyNSwgMjQwLCAxODcsIDMsIDI0MywgODMsIDE4NywgNiwgMjQzLCA4MywgMTg3LCA2LCAKLSAgICAyMjUsIDI0MCwgMTg3LCAyMzAsIDk3LCAyMTgsIDI0MSwgMjE2LCA1OCwgMzUsIDYsIDI0MywgMTc3LCAyMTYsIDU4LCAzNSwgCi0gICAgNiwgMTUwLCAyMjMsIDIwMiwgMzUsIDYsIDE1MCwgMjE2LCA1OCwgMzUsIDYsIDIxMywgMTA1LCAxODcsIDMyLCA2LCAyNDksIAotICAgIDMsIDE4NywgMzIsIDMsIDI0OSwgMywgMTg3LCAzMiwgMywgNzQsIDE4NywgMzIsIDMsIDcyLCAxODcsIDMyLCAzLCAyMzUsIAotICAgIDE0MiwgMjI1LCA1NCwgMjMyLCAyNDIsIDIxNiwgNTgsIDI1NCwgMzUsIDIyNiwgNTgsIDUyLCAyNTQsIDg4LCAyMTYsIDU4LCAKLSAgICAzLCAyNDQsIDIzMCwgMTYsIDMxLCAyMjIsIDE2NywgMjE5LCAyMTYsIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIyMSwgMzksIAotICAgIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIyOSwgMjUsIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIxNywgMTk0LCAyMTQsIAotICAgIDk3LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDEyMSwgMjE0LCA5NywgMjQzLCAyMjgsIDExNywgMjE3LCAxMTksIDIxNCwgOTcsIAotICAgIDI0MywgMjI4LCAxMjIsIDI0NCwgODYsIDIxNCwgOTcsIDI0MywgMjI4LCAxMTcsIDI0NCwgODUsIDIxNCwgOTcsIDI0MywgCi0gICAgMjI4LCAxMzMsIDI0NCwgODUsIDIxNCwgOTcsIDI0MywgMjI4LCAyNDMsIDIzNywgMjQ0LCA4NSwgMjE0LCA5NywgMjQzLCAKLSAgICAyMjgsIDEyMiwgMjIwLCA0MywgMjE0LCA5NywgMjQzLCAyMjgsIDI0NCwgNTAsIDIyMCwgNDEsIDIxNCwgOTcsIDI0MywgCi0gICAgMjI4LCAxMjIsIDI0NSwgMTQ1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTMzLCAyNDUsIDE0MywgMjE0LCA5NywgMjQzLCAyMjgsIAotICAgIDI0NCwgNTAsIDI0NSwgMTQzLCAyMTQsIDk3LCAyNDMsIDIyOCwgMjIxLCA0MywgMjQ1LCAxNDMsIDI0MywgMjI4LCAyMjgsIAotICAgIDUzLCAxMTYsIDIyMywgMTAwLCAyMjgsIDU0LCAxMTYsIDIyMywgMTAwLCAyMjgsIDU0LCAxMDksIDIyMywgMTAwLCAyMjgsIAotICAgIDU0LCAxNjYsIDIyMywgMTAwLCAyMjgsIDU0LCAxNjMsIDIyMywgMTAwLCAyMjgsIDU0LCAxODAsIDIyMywgMTAwLCAyMjgsIAotICAgIDU0LCAxODksIDIyMywgMTAwLCAyMjgsIDU0LCAxOTgsIDIyMywgMTAwLCAyMjgsIDU0LCAxOTUsIDIyMywgMTAwLCAyMjgsIAotICAgIDU0LCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTcsIDIwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NSwgMTI0LCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjE2LCA0MSwgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NCwgODMsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAxMjIsIDI0MCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCA1MCwgMjQwLCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAxMjIsIDIxNywgMTAwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTE2LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTA5LCAzLCAKLSAgICAyMjMsIDEwMCwgMjI4LCA1NCwgMTY2LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTYzLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTgwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTg5LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk4LCAzLCAyMjMsIDEwMCwgCi0gICAgMjI4LCA1NCwgMTk1LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjAwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjE3LCAyMDAsIAotICAgIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDUsIDEyNCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNiwgNDEsIDMsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAyNDQsIDgzLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTIyLCAyNDAsIDIwMCwgMywgMjIzLCAxMDAsIAotICAgIDIyOCwgNTQsIDI0NCwgNTAsIDI0MCwgMjAwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTIyLCAyMTcsIDEwMCwgMjIzLCAKLSAgICAxMDAsIDIyOCwgNTQsIDEyMiwgMjE3LCAxMDEsIDI1MCwgMjUzLCAyNDksIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIAotICAgIDUwLCAyMTcsIDEwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNywgMjAxLCAyMTcsIDEwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDIyMywgMjAyLCAxMjIsIDI0MCwgMjAwLCA3LCAzLCAxLCAyMjMsIDIwMiwgMjUwLCAyNTIsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAyMjAsIDUzLCAyMzMsIDEwMSwgMTcsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIDg0LCAyNDUsIDE4MiwgMTcsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAyNDQsIDg0LCAyMTcsIDEwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjQwLCAyMDEsIDIxNywgCi0gICAgMTAwLCAyMTQsIDk3LCAyNDMsIDIyOCwgMjEyLCA4MCwgMjE3LCAxMTksIDEzMiwgNjgsIDIxNSwgMTI0LCA2OCwgOTUsIDY4LCAKLSAgICAyNDYsIDU4LCA2OCwgNDIsIDQ2LCA2OCwgMTE0LCAxMTksIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgCi0gICAgMjQ1LCAxNzYsIDY4LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY4LCAxMzIsIDc2LCAyLCAKLSAgICA5MCwgOTUsIDc2LCAyLCA5MCwgMTMyLCAyMTQsIDIwLCA2OCwgOTUsIDIxNCwgMjAsIDY4LCAxMzIsIDExNywgMjQxLCAyMTgsIAotICAgIDY4LCAyMTUsIDEyNCwgMTE3LCAyNDEsIDIxOCwgNjgsIDk1LCAxMTcsIDI0MSwgMjE4LCA2OCwgMjQ2LCA1OCwgMTE3LCAKLSAgICAyNDEsIDIxOCwgNjgsIDEzMiwgNzYsIDIsIDIxOCwgMjcsIDk1LCA3NiwgMiwgMjE4LCAyNywgMTMyLCA3NiwgMjQzLCAyMTMsIAotICAgIDEzNCwgMjE1LCAxMjQsIDc2LCAyNDMsIDIxMywgMTM0LCA5NSwgNzYsIDI0MywgMjEzLCAxMzQsIDI0NiwgNTgsIDc2LCAKLSAgICAyNDMsIDIxMywgMTM0LCAxMTQsIDExOSwgNzYsIDIsIDI1MiwgNDcsIDEzMiwgNzYsIDIsIDEwMSwgOTUsIDc2LCAyLCAxMDEsIAotICAgIDEzMiwgNzYsIDIsIDIzMiwgMTc3LCA5NSwgNzYsIDIsIDIzMiwgMTc3LCA0MiwgNDYsIDIxNCwgMjAsIDY4LCA0MiwgNDYsIAotICAgIDc2LCAyLCA5MCwgMjQ2LCA1OCwgMjEyLCAyOCwgNjgsIDIxNSwgMTI0LCA3NiwgMiwgMjE3LCAzMCwgMjMzLCA2MSwgMjE1LCAKLSAgICAxMjQsIDc2LCAyLCAyMTcsIDMwLCAyMjMsIDEzOCwgMjQ2LCA1OCwgNzYsIDIsIDIxNywgMzAsIDIzMywgNjEsIDI0NiwgNTgsIAotICAgIDc2LCAyLCAyMTcsIDMwLCAyMjMsIDEzOCwgOTUsIDc2LCAyLCAyNDksIDEwMCwgMjQ2LCA1NywgMjQ2LCA1OCwgNzYsIDIsIAotICAgIDI0OSwgMTAwLCAyMzMsIDYxLCAyNTMsIDI1NSwgMjE2LCAyMjcsIDIyMSwgNzMsIDY4LCAyNDksIDE5NSwgMjE2LCAyMjcsIAotICAgIDIyMSwgNzMsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyMTEsIDIxMSwgMTg0LCAxMzQsIDEzMiwgNzYsIDIxMSwgCi0gICAgMjExLCAyNTIsIDYwLCAxMTAsIDk1LCA3NiwgMjExLCAyMTEsIDEzNCwgMjUzLCAyNTUsIDIyNywgNDAsIDI0OSwgMjI5LCAKLSAgICA2OCwgMjQ5LCAxOTUsIDIyNywgNDAsIDI0OSwgMjI5LCA2OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyMTUsIDEyMywgCi0gICAgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDU3LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxMzgsIAotICAgIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCAyMzMsIDYxLCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMjMsIDk1LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDU3LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDEzOCwgMjQ2LCA1OCwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMjMzLCA2MSwgOTUsIDc2LCAxMTAsIDEzMiwgNjgsIDIxNSwgMTI0LCA3NiwgMTMyLCA2NSwgCi0gICAgMjQ2LCA1OCwgNjgsIDEzMiwgNzYsIDExMCwgOTUsIDY4LCAxMzIsIDIyNiwgMTk3LCAyNTMsIDE2MiwgMjE1LCAxMjQsIAotICAgIDIyNiwgMTk3LCAyNTMsIDE2MiwgOTUsIDIyNiwgMTk3LCAyNTMsIDE2MiwgMjQ2LCA1OCwgMjI2LCAxOTcsIDI1MywgMTYyLCAKLSAgICAxMzIsIDI0MSwgMjM4LCAxMTAsIDk1LCAyNDEsIDIzNywgOTUsIDI0MSwgMjM4LCAxMTAsIDEzMiwgMjQxLCAyMzcsIDEzMiwgCi0gICAgNTEsIDc2LCAyLCA5MCwgNDIsIDQ2LCA1MSwgNzYsIDIsIDkwLCA5NSwgNTEsIDc2LCAyLCA5MCwgMTMyLCA1MSwgNjgsIAotICAgIDIxNSwgMTI0LCA1MSwgNjgsIDk1LCA1MSwgNjgsIDI0NiwgNTgsIDUxLCA2OCwgNDIsIDQ2LCA1MSwgNjgsIDExNCwgMTE5LCAKLSAgICA1MSwgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNTEsIDY4LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDUxLCA2OCwgMjE5LCAyMTUsIAotICAgIDI0NSwgMTc2LCA1MSwgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNTEsIDY4LCAxMzIsIDIxNiwgMTY5LCA2OCwgOTUsIDIxNiwgCi0gICAgMTY5LCA2OCwgMTMyLCAyMTksIDE2MiwgNjgsIDk1LCAyMTksIDE2MiwgNjgsIDIxNSwgMTI0LCA3NiwgMiwgNTEsIDkwLCAKLSAgICAyNDYsIDU4LCA3NiwgMiwgNTEsIDkwLCAxMzIsIDI0OCwgMTAwLCA2OCwgMjE1LCAxMjQsIDI0OCwgMTAwLCA2OCwgOTUsIAotICAgIDI0OCwgMTAwLCA2OCwgMjQ2LCA1OCwgMjQ4LCAxMDAsIDY4LCAxMzIsIDc2LCAyMTEsIDIxMSwgMTM0LCA5NSwgNzYsIDIxMSwgCi0gICAgMjExLCAxMzQsIDEzMiwgNjcsIDY4LCAyMTUsIDEyNCwgNjcsIDY4LCA5NSwgNjcsIDY4LCAyNDYsIDU4LCA2NywgNjgsIAotICAgIDIxNSwgMTI0LCA2NywgNzYsIDI0MywgMjEzLCAxMzQsIDIxNSwgMTI0LCA2NywgNzYsIDIyNywgNjMsIDIyNiwgODksIDIxNSwgCi0gICAgMTI0LCA2NywgNzYsIDIyNywgNjMsIDIyNiwgOTAsIDIsIDE5OSwgMTM0LCAyMTUsIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAKLSAgICAyMjYsIDkwLCAyLCA3MSwgMTM0LCAyMTUsIDEyNCwgNjcsIDUxLCA2OCwgMjE1LCAxMjQsIDY3LCA1MSwgNzYsIDIyNywgNjMsIAotICAgIDIyNiwgODksIDk1LCA2NywgNzYsIDI0MywgMjEzLCAyMTQsIDQwLCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyMTEsIDIxMSwgCi0gICAgMjQ5LCA5OSwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgMjExLCAyMTEsIDI0OSwgOTksIDExNCwgMTE5LCA2NywgNjgsIDQ2LCAKLSAgICA3NiwgMiwgMywgMjQ5LCAyMjgsIDI0NiwgNTgsIDc2LCAxMzIsIDY1LCAyMTUsIDEyNCwgNjgsIDEzMywgOTUsIDI1MywgCi0gICAgMTYyLCAxMzIsIDc2LCAyLCA3MSwgOTAsIDk1LCA3NiwgMiwgNzEsIDkwLCA0MiwgNDYsIDc2LCAyLCA3MSwgOTAsIDEzMiwgCi0gICAgNzYsIDIsIDUxLCA3MSwgOTAsIDk1LCA3NiwgMiwgNTEsIDcxLCA5MCwgNDIsIDQ2LCA3NiwgMiwgNTEsIDcxLCA5MCwgMTMyLCAKLSAgICAyMjcsIDM4LCA2OCwgOTUsIDIyNywgMzgsIDY4LCA0MiwgNDYsIDIyNywgMzgsIDY4LCAzMSwgMjU0LCA2MywgMjQ5LCAxNTMsIAotICAgIDIyNiwgMTI1LCAyNDcsIDE4NSwgMjE3LCAxNDAsIDI0NCwgMjUwLCAyMTcsIDE0MCwgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0NCwgCi0gICAgMjUxLCAyNDUsIDExMCwgMjIxLCA0OCwgMjM1LCAyNDEsIDIzMCwgMzksIDI0NSwgMTI3LCAyMjcsIDk3LCAyMjgsIDE2MywgCi0gICAgMjU0LCAzMywgMjQ1LCAxMjcsIDIyNywgOTcsIDMsIDI0NSwgMTI3LCAyMjcsIDk3LCAyNDksIDEyNSwgMjUzLCAxNTMsIAotICAgIDIzMSwgMTI2LCAyNDcsIDkyLCAyMjgsIDE2MywgMjQ5LCAxMjcsIDI1MywgMTUzLCAyMzEsIDEyNiwgMywgMjQ5LCAxMjUsIAotICAgIDI1MywgMTUzLCAyMzEsIDEyNiwgMjQ1LCAxMDEsIDY1LCAyMjUsIDU2LCAyMzAsIDk3LCAyMjUsIDYzLCAyMzAsIDk3LCAKLSAgICAyNDksIDEwNCwgMjMwLCA5NywgMjE4LCAyNDEsIDIzMCwgMjUxLCA1MiwgMjMwLCAyNDksIDUyLCA2MiwgMjI1LCAxNTYsIAotICAgIDI0NywgMTIxLCAyMjAsIDIzLCAyMjEsIDQ5LCAyMzAsIDI1MCwgMjUzLCAxMzMsIDIyNywgMzMsIDIyMywgMTMxLCAyMjcsIAotICAgIDMzLCAyNTEsIDQzLCAyMjcsIDMzLCA0MSwgMjIzLCA5NSwgMjQ5LCA1MCwgMjIzLCA5NSwgMjQzLCAyMzAsIDIyMywgOTUsIAotICAgIDIyNSwgNTIsIDEwOCwgMjM1LCAyMzEsIDQ2LCAyNTQsIDE4LCAyNTQsIDE4LCAyMzEsIDE1MywgMjU0LCAxOCwgMjE5LCAKLSAgICAxODcsIDI1NCwgMTgsIDI0NywgMTIzLCAyNDcsIDkyLCAyMjgsIDE2MywgMjQ3LCAxMjYsIDIyNiwgMTM2LCAxMDgsIDIyOCwgCi0gICAgMTYzLCAyMjYsIDEzNiwgMTA4LCAyMzIsIDE5OSwgMjU0LCAyNywgMjMyLCAxOTksIDIyNywgMjQsIDIzNSwgMTk1LCAyMTUsIAotICAgIDE0NiwgMjM1LCAyMDgsIDUxLCAyMzUsIDIwOCwgMjE2LCAxNjksIDIzNSwgMjA4LCAyNDksIDEyMSwgMjM1LCAyMDgsIDIxOCwgCi0gICAgMjEzLCAyMzUsIDIwOCwgMjE0LCAxMTAsIDIzNSwgMjA4LCAyNDksIDE5NSwgMjM1LCAyMDgsIDI0OSwgMTk1LCAyNDksIAotICAgIDEyMSwgMjM1LCAyMDgsIDI1MywgMjU1LCAyNDksIDEyMSwgMjM1LCAyMDgsIDIxNywgMTM5LCAyNTEsIDI0MywgMjI0LCAyOSwgCi0gICAgMjI1LCA1MywgNjIsIDIzMCwgMjUwLCAyNDUsIDAsIDI0MywgMjIsIDIyNSwgNTMsIDI0MSwgNDMsIDIxNywgNDMsIDIyNywgCi0gICAgMzMsIDIyMywgMjAyLCAyMTcsIDQyLCAyMzUsIDE5MSwgMjMzLCA4OSwgMTk3LCAyMjAsIDgzLCAyMTQsIDE5LCAyMTMsIAotICAgIDE4OCwgMjI1LCA2MywgMjI4LCAxNjMsIDIxNywgNDIsIDIzMCwgMjUxLCAyMTcsIDQyLCAyNTMsIDEyNiwgMTIzLCAxMDgsIAotICAgIDIyOCwgMTYzLCAyNTMsIDEyNiwgMTIzLCAxMDgsIDI1MywgMjE4LCAxMjMsIDEwOCwgMjUzLCAyMTgsIDI1MSwgMTcsIDIyOCwgCi0gICAgMTYzLCAyNTQsIDE2NSwgMTIzLCAxMDgsIDIyOSwgMTgxLCAyNTMsIDIxOCwgMjI4LCAxNzAsIDI1NCwgMTY1LCAxMjMsIAotICAgIDEwOCwgMjU0LCA1NywgMTIzLCAxMDgsIDIyOCwgMTYzLCAyNTQsIDU3LCAxMjMsIDEwOCwgMjU0LCA1NywgMTIzLCAxNjcsIAotICAgIDEyMywgMTA4LCAyMTYsIDE2OSwgMjE3LCA0MiwgMjU0LCA2NCwgMTIzLCAxMDgsIDI0NSwgNTcsIDEwOCwgMjQzLCAyMSwgCi0gICAgMjQ1LCA1NywgMTA4LCAyNDcsIDE4NiwgMjUxLCAyMDAsIDI1MywgMjIwLCAyMTcsIDE0OSwgMjMyLCAyNTAsIDI0MywgMjEsIAotICAgIDEyMywgMTA4LCAyNTMsIDIxOCwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMTcsIDE0OSwgMjM2LCAxMCwgMjI3LCA5NywgMjM2LCAKLSAgICAxMCwgNjUsIDE2NywgMjUzLCAyMTgsIDEyMywgMTA4LCAyNDksIDE2NSwgMjQ1LCA2MCwgMjQ1LCA2MSwgMjQ5LCAxNjQsIAotICAgIDIyMywgMTMxLCAyMzUsIDI1MiwgMTIzLCAxMDgsIDIyMywgMTMxLCAxMjMsIDEwOCwgMjQ5LCA5MywgMTA4LCAyNDUsIDMyLCAKLSAgICAyNDUsIDU5LCAxMDgsIDIxOSwgOTYsIDI0NSwgNjAsIDI0OCwgNiwgMTIzLCAxMDgsIDEyMywgMjExLCAyMTEsIDI1MSwgNywgCi0gICAgMjQ4LCAyMywgMjMxLCAxNTMsIDI1MSwgNiwgMjI0LCAxNTYsIDEyMywgMTA4LCAyMjgsIDE2MywgMTIzLCAxMDgsIDI0MCwgCi0gICAgOTcsIDEwOCwgMjI4LCAxNjMsIDI0MCwgOTcsIDEwOCwgMjE5LCA0OSwgMjQ1LCA1NywgMTA4LCAyMzMsIDM5LCAxNjcsIAotICAgIDEyMywgMTA4LCAyNDIsIDEwNywgMTY3LCAxMjMsIDEwOCwgMjMzLCAzOSwgMTEwLCAxMjMsIDEwOCwgMjQyLCAxMDcsIDExMCwgCi0gICAgMTIzLCAxMDgsIDIzMywgMzksIDI1MSwgMTcsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjQyLCAxMDcsIDI1MSwgMTcsIDIyOCwgCi0gICAgMTYzLCAxMjMsIDEwOCwgMjMwLCAxNjcsIDIzMywgMzgsIDIzMCwgMTY3LCAyNDIsIDEwNiwgMjUxLCAyMDAsIDIyOCwgMTYzLCAKLSAgICAyNDUsIDU3LCAxMDgsIDIyOCwgMTYzLCAyMzMsIDM4LCAyMjgsIDE2MywgMjQyLCAxMDYsIDIyOSwgMTgxLCAyMzMsIDM5LCAKLSAgICAyMjgsIDE3MCwgMTIzLCAxMDgsIDIyOSwgMTgxLCAyNDIsIDEwNywgMjI4LCAxNzAsIDEyMywgMTA4LCAyMzMsIDM5LCAxNjcsIAotICAgIDI0NSwgNTcsIDEwOCwgMjQyLCAxMDcsIDE2NywgMjQ1LCA1NywgMTA4LCAyMjksIDE4MSwgMjMzLCAzOSwgMjI4LCAxNzAsIAotICAgIDI0NSwgNTcsIDEwOCwgMjI5LCAxODEsIDI0MiwgMTA3LCAyMjgsIDE3MCwgMjQ1LCA1NywgMTA4LCAyMzMsIDM5LCAxNjcsIAotICAgIDI0MiwgMTA2LCAyNDIsIDEwNywgMTY3LCAyMzMsIDM4LCAyMjksIDE4MSwgMjMzLCAzOSwgMjI4LCAxNzAsIDI0MiwgMTA2LCAKLSAgICAyMjksIDE4MSwgMjQyLCAxMDcsIDIyOCwgMTcwLCAyMzMsIDM4LCAyMjUsIDgyLCAyMTksIDAsIDIyNSwgODMsIDE2NywgCi0gICAgMTIzLCAxMDgsIDIxOSwgMSwgMTY3LCAxMjMsIDEwOCwgMjI1LCA4MywgMTY3LCAyNDUsIDU3LCAxMDgsIDIxOSwgMSwgMTY3LCAKLSAgICAyNDUsIDU3LCAxMDgsIDI0NywgOTIsIDIyOCwgMTYzLCAyMjUsIDg1LCAyNDcsIDkyLCAyMjgsIDE2MywgMjE5LCAyLCAyMTksIAotICAgIDksIDIyNywgOTcsIDIxOCwgMjIyLCAyMjcsIDk3LCAyMjgsIDE2MywgMTE4LCAyMTksIDksIDIyNywgOTcsIDIyOCwgMTYzLCAKLSAgICAxMTgsIDIxOCwgMjIyLCAyMjcsIDk3LCAyMTksIDksIDY1LCAxNjcsIDEyMywgMTA4LCAyMTgsIDIyMiwgNjUsIDE2NywgCi0gICAgMTIzLCAxMDgsIDIyOSwgMTgxLCAxMTgsIDIxOSwgOSwgNjUsIDIyOCwgMTcwLCAxMjMsIDEwOCwgMjI5LCAxODEsIDExOCwgCi0gICAgMjE4LCAyMjIsIDY1LCAyMjgsIDE3MCwgMTIzLCAxMDgsIDIxOSwgOSwgNjUsIDIsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjE4LCAKLSAgICAyMjIsIDY1LCAyLCAyMjgsIDE2MywgMTIzLCAxMDgsIDIzMCwgMTUxLCAyMzAsIDE1MiwgMjMwLCAxNTMsIDIzMCwgMTUyLCAKLSAgICAyMTUsIDE0NiwgNDEsIDIzNiwgMTAsIDIyNywgOTcsIDQxLCAyMjcsIDE3LCAyMjcsIDk3LCA0MSwgMjM2LCAxMCwgNjUsIAotICAgIDE2NywgMTIzLCAxMDgsIDQxLCAyMjcsIDE3LCA2NSwgMTY3LCAxMjMsIDEwOCwgNDEsIDI1MCwgMTgzLCA0MSwgMjQ5LCA0MywgCi0gICAgMzYsIDIyNSwgMTU2LCAzNiwgMjMwLCAyNTAsIDM2LCAyMTcsIDM4LCAzNiwgMjQ3LCAxMjEsIDIyMCwgMjMsIDM2LCA2MiwgCi0gICAgMjI3LCAzMywgMzYsIDIyMywgMTMxLCAyMjcsIDMzLCAzNiwgMjUzLCAxMzMsIDIyNywgMzMsIDM2LCAyNDUsIDYwLCAzNiwgCi0gICAgMjQ4LCAxMDEsIDkxLCAyMjUsIDE1NiwgOTEsIDIzMCwgMjUwLCA5MSwgMjE3LCAzOCwgOTEsIDYyLCAyMjcsIDMzLCA0NiwgCi0gICAgMjE4LCAzNiwgNDIsIDIxOCwgMzYsIDExOSwgMjE4LCAzNiwgMTE0LCAyMTgsIDM2LCAyNTMsIDEzNiwgMjMwLCAyMjYsIAotICAgIDIxNiwgMTQ5LCAyNDMsIDI1MCwgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCA0NiwgMjE2LCA1NywgNTEsIDcxLCAyNTIsIDYwLCAKLSAgICA1MSwgNDYsIDIxNiwgNTcsIDI0NywgOTIsIDIyOCwgMTYzLCAyMjUsIDQ4LCAyMjgsIDE2MywgMjE2LCAxNDksIDI0NywgOTIsIAotICAgIDIyOCwgMTYzLCAyNDMsIDI1MSwgMjI5LCAxODMsIDUxLCA3MSwgMjUyLCA2MCwgNTEsIDQ2LCAyMTYsIDU3LCAyMjUsIDgzLCAKLSAgICAyMTUsIDE1NCwgMjIzLCAyNDEsIDIxOSwgMSwgMjE1LCAxNTQsIDIyMywgMjQxLCAyMjgsIDE2OCwgMjE5LCAyMiwgMjI3LCAKLSAgICA5NywgMjQ5LCAxMjUsIDI1MywgMTUzLCAyMjgsIDE2OCwgMjE5LCAyMSwgMjI4LCAxNjgsIDIxOSwgMjIsIDY1LCAxNjcsIAotICAgIDEyMywgMTA4LCAyNDksIDEyNSwgMjUzLCAxNTMsIDIyOCwgMTY4LCAyMTksIDIyLCAxNjcsIDEyMywgMTA4LCAyMjcsIDE3LCAKLSAgICAyMjcsIDk3LCAyMzYsIDEwLCAyMjcsIDk3LCAyMzAsIDE1NywgMjQxLCAxODUsIDI0OSwgMTM2LCAyMzEsIDIwMCwgMjM1LCAKLSAgICAyMDUsIDIxMywgMTMzLCAyMzAsIDIyLCAyMjgsIDE2OSwgNDYsIDI1NCwgMTksIDIsIDI1MywgMTk1LCA0NiwgMjE2LCAxODMsIAotICAgIDIzMCwgOTcsIDIzMiwgMTk5LCAyNTQsIDI3LCAyMzAsIDk3LCAyMzIsIDE5OSwgMjI3LCAyNCwgMjMwLCA5NywgMjM1LCAKLSAgICAxOTUsIDIzMCwgOTcsIDIxNSwgMTQ2LCAyNDcsIDIwMSwgMjI3LCAzMywgNjIsIDIyNywgMzMsIDIxOSwgOTYsIDIyNywgMzMsIAotICAgIDI0NywgMTIxLCAyMTcsIDM4LCAyNTEsIDkwLCA0MiwgMjI4LCAxNjgsIDI0NCwgMTQ5LCAyMjEsIDY5LCAyMjUsIDYzLCA0NiwgCi0gICAgMjI4LCAxNjgsIDI0NCwgMTQ5LCAyMjEsIDY5LCAyMjUsIDYzLCA0MiwgMjIxLCA2OSwgMjI1LCA2MywgNDYsIDIyMSwgNjksIAotICAgIDIyNSwgNjMsIDIyMywgMjAyLCAyMTcsIDQzLCAyNDUsIDYwLCAyNDksIDQwLCAyMzIsIDE5OSwgMjI3LCAyNCwgMjQ5LCA0MCwgCi0gICAgMjMyLCAxOTksIDI1NCwgMjcsIDUxLCAyMTksIDgsIDUxLCAyMTgsIDIyMSwgNTEsIDIzNSwgMTk1LCA1MSwgMjE1LCAxNDYsIAotICAgIDIyNSwgMTc5LCAxMjMsIDI0LCAyMjYsIDEzNiwgMTA4LCAyMzMsIDM5LCAyLCAyNDcsIDc0LCAyNDIsIDEwNywgMiwgMjQ3LCAKLSAgICA3NCwgMjE0LCAxNjQsIDIzMCwgMTY3LCAyMzMsIDM4LCAyMTQsIDE2NCwgMjMwLCAxNjcsIDI0MiwgMTA2LCAyMzMsIDM5LCAKLSAgICAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAyNDIsIDEwNywgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAxMjMsIAotICAgIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIDEyMywgMjExLCAyMTEsIDE2NywgCi0gICAgMjI1LCA4MiwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMTksIDAsIDI0NywgOTIsIDIyOCwgMTYzLCAyMjUsIDg2LCAxNjcsIAotICAgIDI0NSwgNjIsIDI0NywgOTIsIDIyOCwgMTYzLCAyMTksIDMsIDE2NywgMjQ1LCA2MiwgMjI4LCAxNjMsIDQxLCAyMzYsIDEwLCAKLSAgICA2NSwgMTY3LCAxMjMsIDEwOCwgMjI4LCAxNjMsIDQxLCAyMjcsIDE3LCA2NSwgMTY3LCAxMjMsIDEwOCwgNDEsIDIzNiwgMTAsIAotICAgIDY1LCAxNjcsIDIyOCwgMTYzLCAxMjMsIDEwOCwgNDEsIDIyNywgMTcsIDY1LCAxNjcsIDIyOCwgMTYzLCAxMjMsIDEwOCwgCi0gICAgMjMzLCAzOSwgMjUxLCAxNywgMjI4LCAxNjMsIDI0NSwgNTcsIDEwOCwgMjQyLCAxMDcsIDI1MSwgMTcsIDIyOCwgMTYzLCAKLSAgICAyNDUsIDU3LCAxMDgsIDIyNSwgODMsIDI1MSwgMTcsIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDIxOSwgMSwgMjUxLCAxNywgCi0gICAgMjI4LCAxNjMsIDI0NSwgNTcsIDEwOCwgMjI4LCAxNjMsIDIyOCwgMTY4LCAyMTksIDIyLCAyMjcsIDk3LCAyNDcsIDkyLCAKLSAgICAyMjgsIDE2MywgMjQ5LCAxMjcsIDI1MywgMTUzLCAyMjgsIDE2OCwgMjE5LCAyMSwgMjI4LCAxNjMsIDIyOCwgMTY4LCAyMTksIAotICAgIDIyLCA2NSwgMTY3LCAxMjMsIDEwOCwgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjI4LCAxNjgsIAotICAgIDIxOSwgMjIsIDE2NywgMjQ1LCA2MiwgNzEsIDI0NSwgMTIwLCAyMzEsIDM1LCAxOTksIDI0NSwgMTIwLCAxMTQsIDQ2LCAKLSAgICAyNDcsIDIwNywgMjQ1LCAxMjAsIDExOSwgNDYsIDI0NywgMjA3LCAyNDUsIDEyMCwgMjQ1LCAxMjcsIDY1LCAyLCAxODQsIAotICAgIDE5OSwgOTAsIDI0NSwgMTI3LCA2NSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIDE5OSwgOTAsIAotICAgIDMsIDI0NSwgMTI3LCA2NSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIDE5OSwgOTAsIDI0NSwgCi0gICAgMTI3LCA2NSwgMiwgNjIsIDQ5LCAyNDUsIDEyNywgNjUsIDIsIDIyNiwgMjQ3LCAzLCAyNDUsIDEyNywgNjUsIDIsIDIyNiwgCi0gICAgMjQ3LCAyNDUsIDEyNywgNjUsIDIsIDIxNSwgMTUzLCAyNDUsIDEyNywgNjUsIDIsIDExNywgMTk5LCAyMTksIDMyLCAyNDksIAotICAgIDEyNSwgMiwgMTg0LCAxOTksIDkwLCAyNDksIDEyNSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIAotICAgIDE5OSwgOTAsIDMsIDI0OSwgMTI1LCAyLCA3MSwgMjUyLCA2MCwgMjUzLCAxMjMsIDI0NSwgMTAxLCA2NSwgMTk5LCA5MCwgCi0gICAgMjQ5LCAxMjUsIDIsIDIyNiwgMjQ3LCAzLCAyNDksIDEyNSwgMiwgMjI2LCAyNDcsIDIxMiwgMTUzLCAxNzQsIDI1MiwgOTEsIAotICAgIDIzMSwgMTI1LCAyNDcsIDIwMiwgNTIsIDI0NSwgMTI5LCA2OCwgMjQwLCAyMjEsIDExNCwgMjUzLCAxNjQsIDExOSwgMjUzLCAKLSAgICAxNjQsIDIyNSwgNTksIDIyNiwgNDEsIDIxNCwgMTYsIDIzMiwgMjQyLCA0MiwgMjUwLCAxMTUsIDQ2LCAyNTAsIDExNSwgNDIsIAotICAgIDI0NCwgMjYsIDQ2LCAyNDQsIDI2LCAyNTEsIDEwMSwgNDYsIDI0OSwgNzIsIDI1MSwgMTAxLCA0MiwgMjQ5LCA3MiwgMjE2LCAKLSAgICAyMjcsIDQ2LCAyNDksIDcyLCAyMTYsIDIyNywgNDIsIDI0OSwgNzIsIDIyMywgMjAyLCAyMjgsIDE2MywgNTIsIDQxLCAyMzIsIAotICAgIDE1OSwgMjUzLCAxOTUsIDIyMiwgODMsIDIyMiwgOTAsIDIxNywgMjEwLCAyMjQsIDEzLCAyMjUsIDEyMSwgMjM1LCAyMzUsIAotICAgIDIxNCwgMTQ1LCAyMTksIDE2NiwgMjI1LCAxNzMsIDY1LCAyMzUsIDIwNCwgNTIsIDIxNiwgNTgsIDIyOCwgMTYzLCA1MiwgCi0gICAgMjE0LCAyNiwgMjQwLCAyMjMsIDIxNiwgMjI3LCA0MiwgMjQ5LCA5OSwgMjE2LCAyMjcsIDQ2LCAyNDksIDk5LCAyNTEsIAotICAgIDEwMSwgNDIsIDI0OSwgOTksIDI1MSwgMTAxLCA0NiwgMjQ5LCA5OSwgMjE2LCAyMjcsIDE1MSwgMjM1LCAyMDgsIDI1MSwgCi0gICAgMTAxLCAxNTEsIDIzNSwgMjA4LCAyNDMsIDIxMCwgMjIwLCAzLCAxMTQsIDI1MywgMTY1LCAyNTEsIDIwMSwgMTE3LCAxOTksIAotICAgIDI1MiwgNDksIDIyNywgMjYsIDIzNCwgMTQ0LCAyNDUsIDUzLCAyMTEsIDIxMSwgMjE3LCAxNDksIDIyMywgMTQ4LCAyMTMsIAotICAgIDE2NywgMjM1LCAyNTIsIDExOCwgMjI0LCAxMCwgMjUxLCA4OSwgMjM0LCAxNDMsIDIzMywgNjYsIDI1NCwgMTksIDEyNSwgCi0gICAgMjIzLCAxNDQsIDI1NCwgMTksIDEyNSwgMjQ1LCA1MywgMjExLCAyMTEsIDIxNywgMTQ5LCAyMzMsIDcwLCAyNTEsIDIxMiwgCi0gICAgMjIzLCAxMzAsIDI0OSwgMTMsIDI1NCwgNjQsIDI1MywgMTcyLCAyMTgsIDEyNiwgMjE2LCAyMTcsIDIyMywgMzQsIDI0NywgCi0gICAgMTY3LCAyMjcsIDE4LCAyNDksIDEzOCwgMjE4LCAzLCAyMjAsIDE0LCAyNDksIDkwLCAyNDksIDg5LCAxOTQsIDE5NiwgMTYsIAotICAgIDI0MCwgMTQzLCAxOTQsIDE5NiwgMTYsIDIxOSwgMTYwLCAyMjQsIDE3MiwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ1LCAKLSAgICA2MiwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ3LCAxMjYsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NywgMjAwLCAKLSAgICAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDksIDIyOCwgMTk0LCAKLSAgICAxOTYsIDE2LCAyNDksIDIyOSwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjM1LCA1OSwgMTk0LCAxOTYsIAotICAgIDE2LCAyMjAsIDI0LCAxMzQsIDE5NCwgMTk2LCAxNiwgMjUyLCA5OCwgMTM0LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAKLSAgICAyMjAsIDIzLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNTIsIDk3LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyMzMsIAotICAgIDM4LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDIsIDEwNiwgMTk0LCAxOTYsIDE2LCAxMzIsIDIxNCwgMjUxLCAxOTQsIAotICAgIDE5NiwgMTYsIDk1LCAyMTQsIDI1MSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMTMyLCA2OCwgMTk0LCAxOTYsIDE2LCAKLSAgICAyMjQsIDE3MywgOTUsIDY4LCAxOTQsIDE5NiwgMTYsIDI0OSwgMjI5LCAyNTIsIDk3LCAxOTQsIDE5NiwgMTYsIDExOSwgCi0gICAgMjE4LCAzNywgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ4LCA2LCAyMTksIDc1LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAKLSAgICAxMTksIDI1MCwgMTcwLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDgsIDUsIDE5NCwgMTk2LCAxNiwgMTE5LCAyMTgsIAotICAgIDM3LCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDIxNSwgMTI0LCAyMTQsIDI1MSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMjE1LCAxMjQsIDY4LCAxOTQsIDE5NiwgMTYsIDExNCwgMjE4LCAzNywgMjI2LCAyNDcsIDE5NCwgMTk2LCAxNiwgMjQ4LCAKLSAgICAxNywgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMTE0LCAyNTAsIDE3MCwgMTk0LCAxOTYsIDE2LCAyMjQsIAotICAgIDE3MywgMjQ4LCAxNiwgMTk0LCAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDIzNSwgNTksIDE5NCwgMTk2LCAxNiwgMjQ2LCA1OCwgCi0gICAgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NiwgNTgsIDY4LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTQyLCAKLSAgICAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDgsIDYsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI0NywgMjAxLCAyMTUsIAotICAgIDE1MywgMTk0LCAxOTYsIDE2LCAyMzUsIDYwLCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjE1LCAxNTMsIAotICAgIDE5NCwgMTk2LCAxNiwgMTE0LCAyMjAsIDE4NSwgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE0MiwgMjI0LCAxNzIsIAotICAgIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIxOSwgOTUsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0OSwgMTY0LCAxOTQsIAotICAgIDE5NiwgMTYsIDExNCwgMjE4LCAzNywgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMjQ4LCAxNywgMjQ3LCAyMDksIDE5NCwgCi0gICAgMTk2LCAxNiwgMjE5LCA5NiwgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMjM1LCA2MCwgMjQ3LCAyMDksIDE5NCwgMTk2LCAKLSAgICAxNiwgMjQ5LCAyMjksIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDExOSwgMjIwLCAxODUsIDIxOSwgNzUsIDE5NCwgMTk2LCAKLSAgICAxNiwgNDIsIDIyMCwgMTg1LCAyMTksIDc1LCAxOTQsIDE5NiwgMTYsIDIxNywgNDMsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIAotICAgIDI0MiwgMTA3LCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAyNDksIDE1OCwgMTM0LCAxOTQsIDE5NiwgMTYsIDI0OCwgMTcsIAotICAgIDIxNywgNDIsIDE5NCwgMTk2LCAxNiwgMjEyLCAyNywgMTk0LCAxOTYsIDE2LCAyMTksIDc2LCAyMTcsIDQyLCAxOTQsIDE5NiwgCi0gICAgMTYsIDIyMSwgNzEsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyMjgsIDE2MywgMjQ1LCA2MiwgMTk0LCAKLSAgICAxOTYsIDE2LCAyMjQsIDE3MywgMjI0LCAxNTcsIDE5NCwgMTk2LCAxNiwgMTE5LCAyNTAsIDE3MSwgMjE3LCA0MiwgMTk0LCAKLSAgICAxOTYsIDE2LCAxMTQsIDI1MCwgMTcxLCAyMTcsIDQyLCAxOTQsIDE5NiwgMTYsIDIzNSwgMTgzLCAxOTQsIDE5NiwgMTYsIAotICAgIDIyMywgMTkwLCAxOTQsIDE5NiwgMTYsIDIyNywgNjcsIDE5NCwgMTk2LCAxNiwgMjU0LCA1MywgMjE1LCAxNTMsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjQ1LCA2NCwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjM1LCAxODQsIDIxNSwgMTUzLCAxOTQsIDE5NiwgCi0gICAgMTYsIDIyNywgNjgsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI1NCwgNTIsIDIyOCwgMTYzLCAyNTAsIDY2LCA3NywgNDYsIAotICAgIDI1NCwgMTksIDIsIDI0NiwgNTgsIDIxMiwgMjgsIDY4LCAyMjAsIDE1OSwgMjI3LCA0MCwgMjUxLCA4OSwgMjUxLCAyMjIsIAotICAgIDg3LCA3MSwgMjMyLCAyNDMsIDIsIDIzMSwgMzcsIDI0NywgNzQsIDIzNSwgMjEzLCA4NywgMjQ5LCAxMjIsIDIxNSwgMTUxLCAKLSAgICA4NywgMjQ3LCAxNDEsIDIxNSwgMTUxLCA4NywgMjQ1LCAxMTIsIDg3LCAyNDksIDE0OSwgODcsIDY3LCA0MSwgMiwgMjUwLCAKLSAgICAxMDksIDcxLCAyMzIsIDI0MiwgMjQ1LCA4OSwgODcsIDI1NCwgNDgsIDIzNCwgMTQ1LCA4NywgMjQxLCAxOTcsIDg3LCAzNiwgCi0gICAgMTk5LCAyNTIsIDYwLCAyLCAyMjgsIDE2MSwgMzYsIDIxNiwgMTg0LCAyNDYsIDYwLCAyNTEsIDYzLCAyNDksIDIyOSwgMiwgCi0gICAgMjI4LCAxNjUsIDY4LCAyMTUsIDE0OSwgODcsIDIzMCwgMjA3LCA4NywgMjQwLCAxNTYsIDg3LCAyMjcsIDM5LCAyNDIsIDQwLCAKLSAgICA4NywgMjI3LCAzOSwgMjMzLCAxNjksIDg3LCAyMjYsIDExNywgODcsIDIyNiwgMTE2LCA4NywgMjQ3LCAxNDksIDI0OSwgMzgsIAotICAgIDE2LCAyNDMsIDI0NSwgMTA5LCAyMTksIDIzNCwgODcsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzIsIDI0OCwgMzQsIDIyMSwgCi0gICAgNTgsIDIzNCwgMTQ1LCA4NywgMjI1LCA3MywgMjI2LCAyMDAsIDIyOSwgMTY0LCAyMjYsIDIwMCwgMjI1LCA2OSwgMjIyLCAKLSAgICAxMDgsIDg3LCAyNDksIDIxMCwgMjIyLCAxMDgsIDg3LCA0MiwgMjI2LCAxMzIsIDIxNSwgMTMxLCAxMDEsIDQyLCAyMjYsIAotICAgIDEzMiwgMjQ0LCAyNDUsIDQyLCAyMjYsIDEzMiwgMjMyLCAxNjMsIDEwMSwgNDYsIDIyNiwgMTMyLCAyMTUsIDEzMSwgMTAxLCAKLSAgICA0NiwgMjI2LCAxMzIsIDI0NCwgMjQ1LCA0NiwgMjI2LCAxMzIsIDIzMiwgMTYzLCAxMDEsIDQyLCA0MSwgMjUxLCA4NSwgCi0gICAgMjE1LCAxMzEsIDI0OSwgOTksIDQyLCA0MSwgMjUxLCA4NSwgMjQ0LCAyNDUsIDQyLCA0MSwgMjUxLCA4NSwgMjMyLCAxNjMsIAotICAgIDI0OSwgOTksIDQ2LCA0MSwgMjUxLCA4NSwgMjE1LCAxMzEsIDI0OSwgOTksIDQ2LCA0MSwgMjUxLCA4NSwgMjQ0LCAyNDUsIAotICAgIDQ2LCA0MSwgMjUxLCA4NSwgMjMyLCAxNjMsIDI0OSwgOTksIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAyMTUsIDEzMSwgMTAxLCAKLSAgICA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjMxLCAzNywgMjI1LCAyMzMsIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAyMzIsIDE2MywgCi0gICAgMTAxLCAyNDksIDQwLCAyNTEsIDg1LCAyNDQsIDI0NSwgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIxNSwgMTMxLCAxMDEsIDQ2LCAKLSAgICAyNDksIDQwLCAyNTEsIDg1LCAyMzEsIDM3LCAyMjUsIDIzMywgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIzMiwgMTYzLCAxMDEsIAotICAgIDIzNSwgMjA5LCAyNDQsIDI0NSwgMTk5LCAyMzIsIDI0MywgMjQ0LCAyNDUsIDIxNSwgMTMxLCA0MiwgMTY3LCAyMzIsIDE2MywgCi0gICAgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIyMiwgOTEsIDIxNSwgMTMxLCA0NiwgMTY3LCAyMzIsIDE2MywgNDIsIDI0OSwgNDAsIAotICAgIDI1MSwgODUsIDIyMiwgOTEsIDIxOCwgMjQyLCAyMTYsIDIyNiwgMjE4LCAyNDIsIDI1MSwgMTAwLCAyMTYsIDIyNywgNDEsIAotICAgIDEyNSwgMjUxLCAxMDEsIDQxLCAxMjUsIDI1MSwgMTAxLCA0MSwgMjUxLCA4NSwgMTEwLCAyMTYsIDIyNywgNDEsIDEyNSwgCi0gICAgMzQsIDE2LCAyNTEsIDEwMCwgNDIsIDcxLCA5MiwgMjMyLCAyNDIsIDQ2LCA3MSwgOTIsIDIzMiwgMjQyLCAxOTksIDIyMiwgCi0gICAgMTIzLCAyMzIsIDI0MSwgMTk5LCAyMjIsIDEyMywgMjMyLCAyNDAsIDE5OSwgMjIyLCAxMjMsIDIzMiwgMjM5LCAxOTksIAotICAgIDIyMiwgMTIzLCAyMzIsIDIzOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjE2LCAyMjcsIDIyMywgMTQ4LCAyNDcsIAotICAgIDI1MywgMTYsIDE3NywgNzEsIDI0LCAyNTEsIDEwMSwgMjIzLCAxNDgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMiwgMjQ5LCAKLSAgICAyMjgsIDI0NywgMjUzLCAxNiwgMTc3LCAxMTksIDI0LCAxOTksIDIsIDI0OSwgMjI4LCAyNDcsIDI1MywgMTYsIDE3NywgCi0gICAgMTE0LCAyNCwgMTk5LCAyLCAyNDksIDIyOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyLCAyMTYsIDE4MywgMjQ3LCAyNTMsIAotICAgIDE2LCAxNzcsIDExOSwgMjQsIDE5OSwgMiwgMjE2LCAxODMsIDI0NywgMjUzLCAxNiwgMTc3LCAxMTQsIDI0LCAxOTksIDIsIAotICAgIDIxNiwgMTgzLCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDI0LCAyMTQsIDE5LCAyNDcsIDI1MywgMTYsIDE3NywgMTE5LCAyNCwgCi0gICAgMTk5LCAyLCAyMTQsIDE5LCAyNDcsIDI1MywgMTYsIDE3NywgMTE0LCAyNCwgMTk5LCAyLCAyMTQsIDE5LCAyNDcsIDI1MywgCi0gICAgMTYsIDE3NywgMTE5LCAyNCwgMjQxLCAzMSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExNCwgMjQsIDI0MSwgMzEsIDI0NywgMjUzLCAKLSAgICAxNiwgMTc3LCA3MSwgMjQsIDIxNiwgMjI3LCAyMzMsIDcwLCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDI0LCAyNTEsIDEwMSwgCi0gICAgMjMzLCA3MCwgNDEsIDI0NCwgMSwgMjIzLCAyMDYsIDg3LCAyNDUsIDEzOSwgODcsIDcxLCAyMzIsIDI0MywgMjQ0LCAyNDUsIAotICAgIDIzMSwgMTAwLCAyNTEsIDc0LCAyMzEsIDEwMCwgMTg0LCAxMTAsIDIyMCwgMTc0LCAyMzEsIDEwMCwgMjIwLCAxNzUsIDExMCwgCi0gICAgMjMyLCAxOTAsIDIzMSwgMTAwLCAxODQsIDExMCwgMTE3LCAyMjAsIDE2MSwgMjMxLCAxMDAsIDExNywgMjIwLCAxNjIsIAotICAgIDExMCwgMjMyLCAxOTAsIDIzMSwgMTAwLCAxMTcsIDIyMCwgMTYyLCAyMzUsIDY3LCAyMzEsIDEwMCwgMjE2LCAxNjYsIDIzMSwgCi0gICAgMTAwLCAyMTcsIDE3NiwgMjMxLCAxMDAsIDIyNiwgNjMsIDI0NSwgMTgwLCAyNDIsIDEwMCwgMjQzLCAxOTEsIDIxNiwgMjI3LCAKLSAgICAyMjYsIDEzMSwgMjUxLCAxMDEsIDIyNiwgMTMxLCAyMTYsIDIyNywgMjQ5LCA0MCwgMTI1LCAyNTEsIDEwMSwgMjQ5LCA0MCwgCi0gICAgMTI1LCAyMTYsIDIyNywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDI1MSwgMTAxLCAyMTYsIDIxOSwgMjIwLCAyMzMsIAotICAgIDEyNSwgNjcsIDIxNiwgMTk3LCAyNTEsIDIxMiwgMjIzLCAxMzEsIDIsIDI0OSwgMjI4LCAyMTksIDYwLCAyNDQsIDMzLCAKLSAgICAyNTQsIDE3NywgMjQ5LCAzNywgMjQ1LCAxMjgsIDIzNSwgMTk1LCAyNDgsIDM0LCAyNDQsIDI0NywgODcsIDgzLCAyMjMsIAotICAgIDE0NCwgNTEsIDIxNiwgMTgzLCA4MywgMjMzLCA2NiwgNTEsIDIxNiwgMTgzLCA4MywgMjE1LCAxMzMsIDUxLCAyMTYsIDE4MywgCi0gICAgODMsIDI0NiwgNTksIDUxLCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCA1MSwgMjE2LCAxODQsIDIsIDcxLCAxMzQsIDgzLCAKLSAgICAyMzMsIDY2LCA1MSwgMjE2LCAxODQsIDIsIDcxLCAxMzQsIDgzLCAyMjMsIDE0NCwgMjE2LCAxODQsIDIsIDUxLCA3MSwgCi0gICAgMTM0LCAyNTQsIDgxLCAyNDksIDE5NiwgMjE5LCA2NiwgMjE3LCAzOSwgMjQ5LCAxOTYsIDI0MCwgMjI0LCAyLCAyNDQsIDE5LCAKLSAgICAyMjIsIDE1NywgMTYsIDMxLCAyMjgsIDU4LCAxNiwgMzEsIDIxOSwgOTEsIDY1LCAyNDEsIDIxNywgMTYsIDMxLCAyMTksIAotICAgIDkxLCA2NSwgMjE3LCAxNjUsIDE2LCAzMSwgMjQ1LCAxMDEsIDY1LCAyMTcsIDE2NSwgMTYsIDMxLCAyNDUsIDEwMSwgNjUsIAotICAgIDIxNiwgMjAwLCAxNiwgMzEsIDI0NSwgOTEsIDE2LCAzMSwgMjU0LCAxNjgsIDE2LCAzMSwgMjUxLCAyMjEsIDE2LCAzMSwgCi0gICAgMjUyLCA5NiwgMTYsIDMxLCAxOTksIDIxOCwgMzgsIDE2LCAzMSwgMjMyLCAyNDMsIDI0NCwgMTE0LCAxNiwgMzEsIDcxLCAKLSAgICAyMTgsIDM4LCAxNiwgMzEsIDI0MywgMjQ1LCAyNDQsIDExNCwgMTYsIDMxLCAyNTAsIDE2MiwgMjIzLCAyMDUsIDE2LCAzMSwgCi0gICAgMjIwLCAyMDgsIDIyNiwgMjU0LCAxNiwgMzEsIDIyMCwgMjA4LCAyMzUsIDI1MSwgMTYsIDMxLCAyNDgsIDk3LCAyMzIsIAotICAgIDIzMywgMjQ1LCA0MiwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAxMTcsIDExNiwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAKLSAgICAxMTcsIDEwOSwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAxMTcsIDE2NiwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAxMTcsIAotICAgIDE2MywgMTYsIDMxLCAxNDYsIDI1NCwgMTY4LCAxNiwgMzEsIDIxOCwgMTIzLCAyMzYsIDU3LCAxNiwgMzEsIDI0NSwgMTAxLCAKLSAgICA2NSwgMjE2LCAyMDEsIDI1MSwgMTM2LCAxNiwgMzEsIDI1MCwgMTkzLCAxNiwgMzEsIDI0NSwgMTAxLCA2NSwgMjMxLCAxNDYsIAotICAgIDE2LCAzMSwgMjE5LCA2LCAxNiwgMzEsIDI0NSwgNDIsIDE2LCAzMSwgMjQ0LCA3NiwgMjIxLCA1NywgMTYsIDMxLCAyNDIsIAotICAgIDk5LCAyMjEsIDU3LCAxNiwgMzEsIDIyNCwgMTQsIDIyMSwgNTcsIDE2LCAzMSwgMjE1LCAxNDUsIDIyMSwgNTcsIDE2LCAzMSwgCi0gICAgMjE5LCAyMDYsIDE2LCAzMSwgMjQ4LCAxNCwgMjUxLCAxMzksIDg3LCAyMjcsIDQwLCAyNTEsIDg5LCAxNiwgMzEsIDIyOSwgCi0gICAgMTY3LCAxNiwgMzEsIDI0OCwgMTUsIDI0MywgMjQ1LCAxMDksIDE2LCAzMSwgMjE5LCA3LCAyNDMsIDI0NSwgMTA5LCAyMjcsIAotICAgIDEwNSwgMTAxLCAyMjcsIDEwNSwgMjUwLCA4NywgMjI3LCAxMDUsIDI0MywgMjQ4LCAyMjcsIDEwNSwgMjM1LCAxOTEsIDI0MywgCi0gICAgMjQ4LCAyMjcsIDEwNSwgMjUxLCAyMTksIDI1MSwgNTMsIDIyNywgMTA1LCAyNTEsIDk2LCAyMTcsIDY1LCAyMjcsIDEwNSwgCi0gICAgMjUxLCA4MiwgMjUyLCA2NSwgMjQwLCA5NiwgMjI3LCAxMDUsIDI1NCwgMzYsIDY1LCAyNTAsIDY1LCAyMjcsIDEwNSwgMjQ4LCAKLSAgICAxMDEsIDIyNywgMTA1LCAyNDksIDI5LCAyNTQsIDE3MSwgMjI4LCA1NiwgMjI3LCAxMDUsIDUxLCAyNTIsIDk3LCAzNiwgMjEsIAotICAgIDExNiwgMzYsIDIxLCAxMDksIDM2LCAyMSwgMTY2LCAzNiwgMjEsIDE2MywgMzYsIDIxLCAxODAsIDM2LCAyMSwgMTg5LCAzNiwgCi0gICAgMjEsIDE5OCwgMzYsIDIxLCAxOTUsIDM2LCAyMSwgMjAwLCAzNiwgNTAsIDIxNywgMjAwLCAzNiwgNTAsIDI0NSwgMTI0LCAKLSAgICAzNiwgNTAsIDIxNiwgNDEsIDM2LCA1MCwgMjE3LCAxMTcsIDM2LCA1MCwgMjQzLCAyMzEsIDM2LCA1MCwgMjQ0LCA4NywgMzYsIAotICAgIDUwLCAyMjAsIDQ3LCAzNiwgNTAsIDIyMSwgNDAsIDM2LCA1MCwgMjQ1LCAxNDcsIDM2LCA1MCwgMjI5LCAyOCwgMzYsIDUwLCAKLSAgICAyMTYsIDM4LCA4NiwgMjEsIDExNiwgODYsIDIxLCAxMDksIDg2LCAyMSwgMTY2LCA4NiwgMjEsIDE2MywgODYsIDIxLCAxODAsIAotICAgIDg2LCAyMSwgMTg5LCA4NiwgMjEsIDE5OCwgODYsIDIxLCAxOTUsIDg2LCAyMSwgMjAwLCA4NiwgNTAsIDIxNywgMjAwLCA4NiwgCi0gICAgNTAsIDI0NSwgMTI0LCA4NiwgNTAsIDIxNiwgNDEsIDg2LCA1MCwgMjE3LCAxMTcsIDg2LCA1MCwgMjQzLCAyMzEsIDg2LCAKLSAgICA1MCwgMjQ0LCA4NywgODYsIDUwLCAyMjAsIDQ3LCA4NiwgNTAsIDIyMSwgNDAsIDg2LCA1MCwgMjQ1LCAxNDcsIDg2LCA1MCwgCi0gICAgMjI5LCAyOCwgODYsIDUwLCAyMTYsIDM4LCAyMSwgMTIyLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDExNywgMjQzLCAyMDAsIAotICAgIDIxOSwgNjksIDIxLCAxMzMsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjQzLCAyMzcsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgCi0gICAgMjQ0LCA1MCwgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyMjAsIDUzLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIyMSwgNDMsIAotICAgIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjQ1LCAxNTAsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjI5LCAzMSwgMjQzLCAKLSAgICAyMDAsIDIxOSwgNjksIDUwLCAyMTcsIDIwMSwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDUsIDEyNSwgMjQzLCAyMDAsIAotICAgIDIxOSwgNjksIDUwLCAyMTYsIDQyLCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIxNywgMTE4LCAyNDMsIDIwMCwgMjE5LCA2OSwgCi0gICAgNTAsIDI0MywgMjMyLCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDI0NCwgODgsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjIwLCAKLSAgICA0OCwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyMjEsIDQxLCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDI0NSwgMTQ4LCAyNDMsIAotICAgIDIwMCwgMjE5LCA2OSwgNTAsIDIyOSwgMjksIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjE2LCAzOSwgMjQzLCAyMDAsIDIxOSwgCi0gICAgNjksIDg2LCA3LCAzLCAxLCA2MSwgODYsIDcsIDMsIDEsIDI1MywgNzQsIDg2LCA3LCAzLCAxLCAyNTAsIDI1MiwgODYsIDcsIAotICAgIDMsIDEsIDI0OSwgMywgODYsIDcsIDMsIDEsIDc0LCA4NiwgNywgMywgMSwgMjQ0LCAyMzAsIDg2LCA3LCAzLCAxLCAyNDMsIAotICAgIDE3NywgODYsIDcsIDMsIDEsIDI0MiwgNDEsIDg2LCA3LCAzLCAxLCA3MiwgODYsIDcsIDMsIDEsIDIzNSwgMTQyLCA4NiwgNywgCi0gICAgMywgMSwgMjM1LCAyNywgODYsIDcsIDMsIDEsIDE1MCwgODYsIDcsIDMsIDEsIDE4MywgODYsIDcsIDMsIDEsIDIwNCwgODYsIAotICAgIDcsIDMsIDEsIDc1LCA4NiwgNywgMywgMSwgMjI2LCAyMjksIDg2LCA3LCAzLCAxLCAyMjQsIDI0MCwgODYsIDcsIDMsIDEsIAotICAgIDE0OSwgODYsIDcsIDMsIDEsIDE5NywgODYsIDcsIDMsIDEsIDIxOCwgOTksIDg2LCA3LCAzLCAxLCA2OSwgODYsIDcsIDMsIAotICAgIDEsIDIxNSwgNzksIDg2LCA3LCAzLCAxLCAyMTQsIDgyLCA4NiwgNywgMywgMSwgMjEzLCAxNjYsIDg2LCA3LCAzLCAxLCAKLSAgICAyMTMsIDEwNSwgODYsIDcsIDMsIDEsIDIxMiwgMTUyLCAzNiwgNywgNiwgMSwgNjEsIDM2LCA3LCA2LCAxLCAyNTMsIDc0LCAKLSAgICAzNiwgNywgNiwgMSwgMjUwLCAyNTIsIDM2LCA3LCA2LCAxLCAyNDksIDMsIDM2LCA3LCA2LCAxLCA3NCwgMzYsIDcsIDYsIDEsIAotICAgIDI0NCwgMjMwLCAzNiwgNywgNiwgMSwgMjQzLCAxNzcsIDM2LCA3LCA2LCAxLCAyNDIsIDQxLCAzNiwgNywgNiwgMSwgNzIsIAotICAgIDM2LCA3LCA2LCAxLCAyMzUsIDE0MiwgMzYsIDcsIDYsIDEsIDIzNSwgMjcsIDM2LCA3LCA2LCAxLCAxNTAsIDM2LCA3LCA2LCAKLSAgICAxLCAxODMsIDM2LCA3LCA2LCAxLCAyMDQsIDM2LCA3LCA2LCAxLCA3NSwgMzYsIDcsIDYsIDEsIDIyNiwgMjI5LCAzNiwgNywgCi0gICAgNiwgMSwgMjI0LCAyNDAsIDM2LCA3LCA2LCAxLCAxNDksIDM2LCA3LCA2LCAxLCAxOTcsIDM2LCA3LCA2LCAxLCAyMTgsIDk5LCAKLSAgICAzNiwgNywgNiwgMSwgNjksIDM2LCA3LCA2LCAxLCAyMTUsIDc5LCAzNiwgNywgNiwgMSwgMjE0LCA4MiwgMzYsIDcsIDYsIDEsIAotICAgIDIxMywgMTY2LCAzNiwgNywgNiwgMSwgMjEzLCAxMDUsIDM2LCA3LCA2LCAxLCAyMTIsIDE1MiwgMzYsIDcsIDMsIDEsIDYxLCAKLSAgICAzNiwgNywgMywgMSwgMjUzLCA3NCwgMzYsIDcsIDMsIDEsIDI1MCwgMjUyLCAzNiwgNywgMywgMSwgMjQ5LCAzLCAzNiwgNywgCi0gICAgMywgMSwgNzQsIDM2LCA3LCAzLCAxLCAyNDQsIDIzMCwgMzYsIDcsIDMsIDEsIDI0MywgMTc3LCAzNiwgNywgMywgMSwgMjQyLCAKLSAgICA0MSwgMzYsIDcsIDMsIDEsIDcyLCAzNiwgNywgMywgMSwgMjM1LCAxNDIsIDM2LCA3LCAzLCAxLCAyMzUsIDI3LCAzNiwgNywgCi0gICAgMywgMSwgMTUwLCAzNiwgNywgMywgMSwgMTgzLCAzNiwgNywgMywgMSwgMjA0LCAzNiwgNywgMywgMSwgNzUsIDM2LCA3LCAzLCAKLSAgICAxLCAyMjYsIDIyOSwgMzYsIDcsIDMsIDEsIDIyNCwgMjQwLCAzNiwgNywgMywgMSwgMTQ5LCAzNiwgNywgMywgMSwgMTk3LCAKLSAgICAzNiwgNywgMywgMSwgMjE4LCA5OSwgMzYsIDcsIDMsIDEsIDY5LCAzNiwgNywgMywgMSwgMjE1LCA3OSwgMzYsIDcsIDMsIDEsIAotICAgIDIxNCwgODIsIDM2LCA3LCAzLCAxLCAyMTMsIDE2NiwgMzYsIDcsIDMsIDEsIDIxMywgMTA1LCAzNiwgNywgMywgMSwgMjEyLCAKLSAgICAxNTIsIDM2LCAyMSwgMjEyLCA3OSwgMTQ2LCAzNiwgNTAsIDI0NSwgMTI0LCAxNDYsIDM2LCA1MCwgMjE2LCA0MSwgMTQ2LCAKLSAgICAzNiwgNTAsIDIxNywgMTE3LCAxNDYsIDM2LCA1MCwgMjQzLCAyMzEsIDE0NiwgMzYsIDUwLCAyNDQsIDg3LCAxNDYsIDM2LCAKLSAgICA1MCwgMjIwLCA0NywgMTQ2LCAzNiwgNTAsIDIyMSwgNDAsIDE0NiwgMzYsIDUwLCAyNDUsIDE0NywgMTQ2LCAzNiwgNTAsIAotICAgIDIyOSwgMjgsIDE0NiwgMzYsIDUwLCAyMTYsIDM4LCA1MSwgMzYsIDIxLCAxMTYsIDUxLCAzNiwgMjEsIDEwOSwgNTEsIDM2LCAKLSAgICAyMSwgMTY2LCA1MSwgMzYsIDIxLCAxNjMsIDUxLCAzNiwgMjEsIDE4MCwgNTEsIDM2LCAyMSwgMTg5LCA1MSwgMzYsIDIxLCAKLSAgICAxOTgsIDUxLCAzNiwgMjEsIDE5NSwgNTEsIDM2LCAyMSwgMjAwLCA1MSwgMzYsIDUwLCAyMTcsIDIwMCwgMTQ2LCAzNiwgMjEsIAotICAgIDIxMiwgNzksIDkyLCA5NiwgMTc3LCAyNDEsIDMxLCA5MiwgOTYsIDEwNywgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDIxNCwgCi0gICAgMjE2LCA5MiwgOTYsIDEwNywgMjE0LCAyMTYsIDkyLCA5NiwgMTc3LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTA3LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIAotICAgIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgMjE2LCAxNjksIDI0OCwgMTAyLCAyMTQsIDIxNiwgOTIsIDk2LCAxNzcsIDIyNCwgCi0gICAgMTY5LCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIDk2LCAxMDcsIDIyNCwgMTY5LCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIDk2LCAKLSAgICAxNzcsIDIyNCwgMTY5LCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCA5NiwgMTA3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDIxNCwgCi0gICAgMjE2LCA5MiwgOTYsIDE3NywgMTE5LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTE5LCAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTE5LCAxMDcsIDI0LCA0NiwgMjMzLCAyLCA5MiwgOTYsIDEwNywgMTE5LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgCi0gICAgMTc3LCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDExOSwgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExOSwgCi0gICAgMTA3LCAyNCwgNDIsIDIzMywgMiwgOTIsIDk2LCAxMDcsIDExOSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAKLSAgICAyMjMsIDE0OCwgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQ2LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDQ2LCAKLSAgICAyMzMsIDIsIDkyLCA5NiwgMTA3LCAxMTQsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDExNCwgMjQsIDIzMywgNzAsIAotICAgIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0MiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0MiwgMjMzLCAyLCA5MiwgCi0gICAgOTYsIDEwNywgMTE0LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDcxLCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgNzEsIAotICAgIDE3NywgMjQsIDQ2LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDQ2LCAxMTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDEwNywgMjQsIDQ2LCAxMTQsIDIzMywgMiwgOTIsIDk2LCA3MSwgMTA3LCAyNCwgNDYsIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDE3NywgMjQsIDQ2LCAxMTQsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTc3LCAyNCwgNDYsIDExOSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTA3LCA3MSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgNzEsIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDcxLCAKLSAgICAxNzcsIDI0LCA0MiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0MiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNzEsIDEwNywgMjQsIDQyLCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxNzcsIDI0LCA0MiwgMTE0LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQyLCAxMTksIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgNzEsIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMTE5LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCA0MiwgCi0gICAgMTA3LCAyNCwgNDYsIDExOSwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxNzcsIDI0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDExOSwgMTA3LCAyNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgNDYsIDE3NywgMjQsIDQyLCAxMTksIDI0MSwgMjA1LCA5MiwgOTYsIDQyLCAxNzcsIDI0LCA0NiwgMTE5LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDQyLCAKLSAgICAxMDcsIDI0LCA0NiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNDYsIDEwNywgMjQsIDQyLCAxMTQsIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTQsIDE3NywgMjQsIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICA0NiwgMTc3LCAyNCwgNDIsIDExNCwgMjQxLCAyMDUsIDkyLCA5NiwgNDIsIDE3NywgMjQsIDQ2LCAxMTQsIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDcxLCAyNCwgMjQxLCAzMSwgOTIsIDk2LCA0MiwgCi0gICAgMTA3LCAyNCwgNDYsIDcxLCAyMzMsIDIsIDkyLCA5NiwgNDYsIDEwNywgMjQsIDQyLCA3MSwgMjMzLCAyLCA5MiwgOTYsIDcxLCAKLSAgICAxNzcsIDI0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgMTE5LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDEwNywgMjQsIDExNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgNzEsIDEwNywgMjQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDQyLCAxMTQsIDEwNywgMjQsIDQ2LCAxMTksIDIzMywgMiwgOTIsIDk2LCA0NiwgMTE0LCAxMDcsIDI0LCA0MiwgMTE5LCAKLSAgICAyMzMsIDIsIDkyLCA5NiwgNDIsIDExOSwgMTA3LCAyNCwgNDYsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMTksIDEwNywgCi0gICAgMjQsIDQyLCAxMTQsIDIzMywgMiwgOTIsIDk2LCAxMTksIDE3NywgMjQsIDExNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAKLSAgICAxMTQsIDE3NywgMjQsIDExOSwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCA0NiwgMTc3LCAyNCwgNDIsIDcxLCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCA0MiwgMTc3LCAyNCwgNDYsIDcxLCAyNDEsIDIwNSwgOTIsIDk2LCAxMDcsIDcxLCAyNCwgMjQxLCAzMSwgOTIsIAotICAgIDk2LCAxNzcsIDUxLCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIDk2LCAxMDcsIDUxLCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIAotICAgIDk2LCAxNzcsIDUxLCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCA5NiwgMTA3LCA1MSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgCi0gICAgOTYsIDUxLCAyNDEsIDMxLCA5MiwgOTYsIDUxLCAyMTQsIDIxNiwgOTIsIDk2LCAxMTksIDIyMCwgODEsIDI0LCA0NiwgMjQ2LCAKLSAgICA2NywgOTIsIDk2LCAxMTksIDUxLCAyNCwgNDYsIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgCi0gICAgOTYsIDExOSwgMjIwLCA4MSwgMjQsIDQyLCAyNDYsIDY3LCA5MiwgOTYsIDExOSwgNTEsIDI0LCA0MiwgMjIwLCA4MCwgOTIsIAotICAgIDk2LCA1MSwgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxMTQsIDIyMCwgODEsIDI0LCA0NiwgMjQ2LCA2NywgOTIsIDk2LCAKLSAgICAxMTQsIDUxLCAyNCwgNDYsIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExNCwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDExNCwgCi0gICAgMjIwLCA4MSwgMjQsIDQyLCAyNDYsIDY3LCA5MiwgOTYsIDExNCwgNTEsIDI0LCA0MiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgCi0gICAgMTE0LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCA3MSwgMjIwLCA4MSwgMjQsIDQ2LCAyNDYsIDY3LCA5MiwgOTYsIDcxLCA1MSwgCi0gICAgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCA3MSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDcxLCAyMjAsIDgxLCAyNCwgCi0gICAgNDIsIDI0NiwgNjcsIDkyLCA5NiwgNzEsIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCA5NiwgNTEsIDcxLCAyNCwgMjMzLCAKLSAgICA3MCwgOTIsIDk2LCAxMTksIDIyMCwgODEsIDI0LCAxOTksIDI0NiwgNjcsIDkyLCA5NiwgMTE5LCA1MSwgMjQsIDE5OSwgCi0gICAgMjIwLCA4MCwgOTIsIDk2LCA1MSwgMTE5LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCAxMTQsIDIyMCwgODEsIDI0LCAxOTksIAotICAgIDI0NiwgNjcsIDkyLCA5NiwgMTE0LCA1MSwgMjQsIDE5OSwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgMTE0LCAyNCwgMjQxLCAzMSwgCi0gICAgOTIsIDk2LCA3MSwgMjIwLCA4MSwgMjQsIDE5OSwgMjQ2LCA2NywgOTIsIDk2LCA3MSwgNTEsIDI0LCAxOTksIDIyMCwgODAsIAotICAgIDkyLCA5NiwgNTEsIDcxLCAyNCwgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTksIDI0LCAyMjMsIDE0OCwgCi0gICAgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjUzLCAxOTYsIDExNCwgMjQsIAotICAgIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE0LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTc3LCAyNDcsIDIwNywgCi0gICAgMjE1LCAxMzEsIDQ2LCAyMTEsIDIxMSwgMjMyLCAxNjMsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAyNDcsIDIwNywgMjE1LCAKLSAgICAxMzEsIDQyLCAyMTEsIDIxMSwgMjMyLCAxNjMsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIDI0OSwgNzAsIAotICAgIDkyLCA5NiwgMTc3LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjE1LCAxMzQsIDkyLCA5NiwgMTc3LCAyMjMsIDE0OCwgOTIsIAotICAgIDk2LCAxNzcsIDI0NiwgNjAsIDkyLCA5NiwgMTA3LCAyMzMsIDcwLCA5MiwgOTYsIDEwNywgMjE1LCAxMzQsIDkyLCA5NiwgCi0gICAgMTA3LCAyMjMsIDE0OCwgOTIsIDk2LCAxMDcsIDI0NiwgNjAsIDkyLCA5NiwgMTc3LCA0MiwgMjQsIDEwNywgMjIzLCAxNDgsIAotICAgIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAxMDcsIDI0NiwgNjAsIDkyLCA5NiwgMTA3LCA0MiwgMjQsIDE3NywgMjIzLCAxNDgsIAotICAgIDkyLCA5NiwgMTA3LCAxMTQsIDI0LCAxNzcsIDI0NiwgNjAsIDIxNSwgMTMxLCAxNTEsIDI1MSwgMTM2LCAyMzIsIDE2MywgCi0gICAgMTIyLCAyNDUsIDE0NiwgMjUxLCAxMzYsIDIzMiwgMTYzLCAxMjIsIDIyNCwgMTY3LCAyNTEsIDEzNiwgMjMyLCAxNjMsIAotICAgIDEzMywgMjQ1LCAxNDQsIDI1MSwgMTM2LCAyMzIsIDE2MywgMTUxLCAyNTEsIDEzNiwgMjMyLCAxNjMsIDI0NCwgNTAsIDI0NSwgCi0gICAgMTQ0LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDEzMywgMjI0LCAxNjUsIDI1MSwgMTM2LCAyMzIsIDE2MywgMjIxLCA0MywgMjQ1LCAKLSAgICAxNDQsIDI1MSwgMTM2LCAyNDMsIDIwMCwgMjUxLCAxMzYsIDQyLCAyMjEsIDQzLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAKLSAgICAxMzMsIDIyNCwgMTY1LCAyNTEsIDEzNiwgNDIsIDI0NCwgNTAsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgNDIsIDE1MSwgMjUxLCAKLSAgICAxMzYsIDQyLCAxMzMsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgNDIsIDEyMiwgMjI0LCAxNjcsIDI1MSwgMTM2LCA0MiwgMTIyLCAKLSAgICAyNDUsIDE0NiwgMjUxLCAxMzYsIDQ2LCAxNTEsIDI1MSwgMTM2LCAxNzcsIDIyMSwgMTQsIDIzMSwgMTQ3LCAyMjEsIDE0LCAKLSAgICAyNDgsIDEwNywgMjIxLCAxNCwgMjE1LCAxMzEsIDEyMiwgMjQ1LCAxNDYsIDI1MSwgMTM2LCA0NiwgMTIyLCAyNDUsIDE0NiwgCi0gICAgMjUxLCAxMzYsIDIyNCwgMTcxLCAyMzIsIDE2MywgMjMzLCA3MCwgMjI0LCAxNzEsIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAKLSAgICAxNzEsIDIxNSwgMTMxLCAyMzMsIDcwLCAyMjQsIDE3MSwgMjE1LCAxMzEsIDQyLCAyNCwgMjMyLCAxNjMsIDQyLCAyNCwgCi0gICAgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAxMzEsIDQyLCAyNCwgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIAotICAgIDE3MSwgMjE1LCAxMzEsIDQyLCAyNCwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAKLSAgICAyMTUsIDEzMSwgNDIsIDI0LCAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgMjIzLCAxNDgsIDIyNCwgMTcxLCAyMTUsIAotICAgIDEzMSwgMjIzLCAxNDgsIDIyNCwgMTcxLCAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgMjMzLCA3MCwgMjI0LCAxNzEsIAotICAgIDIxNSwgMTMxLCA0NiwgMjQsIDIzMiwgMTYzLCA0MiwgMjQsIDIzMiwgMTYzLCAyMjMsIDE0OCwgODMsIDIxOSwgMTY2LCA2NywgCi0gICAgMjE5LCAxNjYsIDY3LCA0MSwgMiwgMjIzLCA4NSwgMjQ5LCA5OCwgNjcsIDQxLCAyNDksIDEyNiwgODMsIDMsIDIxOSwgMTY2LCAKLSAgICA0MSwgMiwgMTk5LCAyNDQsIDc0LCA0MSwgMiwgNzEsIDI0NCwgNzQsIDQxLCAyLCAyMjcsIDExLCAyNDksIDY2LCAyNDQsIAotICAgIDc0LCA0MSwgMiwgMjE1LCAxMzEsIDQyLCAyMTEsIDIxMSwgMjMyLCAxNjMsIDQ2LCAyNDQsIDc0LCA0MSwgMiwgMjE1LCAKLSAgICAxMzEsIDQ2LCAyMTEsIDIxMSwgMjMyLCAxNjMsIDQyLCAyNDQsIDc0LCA0MSwgMiwgMjQ3LCAyMDcsIDI0OSwgNjYsIDI0NCwgCi0gICAgNzQsIDgzLCAzLCAyMTksIDE2NiwgNjcsIDMsIDIxOSwgMTY2LCA4MywgMjI0LCA5LCA2NywgMjI0LCA5LCA4MywgNzEsIAotICAgIDIyNCwgOSwgNjcsIDcxLCAyMjQsIDksIDgzLCAyMjYsIDEzNCwgNjcsIDIyNiwgMTM0LCA4MywgMjE1LCAxMzMsIDIxNiwgCi0gICAgMTgzLCA2NywgMjE1LCAxMzMsIDIxNiwgMTgzLCA4MywgMjE1LCAxMzMsIDMsIDIxNiwgMTgzLCA2NywgMjE1LCAxMzMsIDMsIAotICAgIDIxNiwgMTgzLCA4MywgMjIzLCAxNDQsIDIxNiwgMTgzLCA2NywgMjIzLCAxNDQsIDIxNiwgMTgzLCA4MywgMjIzLCAxNDQsIAotICAgIDMsIDIxNiwgMTgzLCA2NywgMjIzLCAxNDQsIDMsIDIxNiwgMTgzLCA4MywgMjIzLCAxNDQsIDIyNSwgMTQyLCA2NywgMjIzLCAKLSAgICAxNDQsIDIyNSwgMTQyLCA4MywgMjQ2LCA1OSwgMjE2LCAxODMsIDY3LCAyNDYsIDU5LCAyMTYsIDE4MywgODMsIDI0NiwgNTksIAotICAgIDMsIDIxNiwgMTgzLCA2NywgMjQ2LCA1OSwgMywgMjE2LCAxODMsIDgzLCAyMzMsIDY2LCAyMTYsIDE4MywgNjcsIDIzMywgCi0gICAgNjYsIDIxNiwgMTgzLCA4MywgMjMzLCA2NiwgMywgMjE2LCAxODMsIDY3LCAyMzMsIDY2LCAzLCAyMTYsIDE4MywgODMsIAotICAgIDIzMywgNjYsIDIyNSwgMTQyLCA2NywgMjMzLCA2NiwgMjI1LCAxNDIsIDgzLCAyNDcsIDIwMCwgNjcsIDI0NywgMjAwLCA2NywgCi0gICAgMjQ3LCAyMDEsIDI0OSwgMTI2LCA4MywgMywgMjQ3LCAyMDAsIDI0NCwgNTgsIDIzMiwgMTU5LCA2NywgMjQ5LCAyMjgsIAotICAgIDI0NiwgNzIsIDI0OSwgMjI4LCAyNDksIDIyOSwgMiwgNzEsIDI0NCwgNzQsIDI1MSwgNDAsIDgzLCAyNDksIDIyOCwgMjQ5LCAKLSAgICAyMjksIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCAKLSAgICAyMzIsIDE2MywgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIDIsIDIxNSwgMTMxLCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgCi0gICAgMiwgMjE1LCAxMzEsIDQ2LCAyMjQsIDE3MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCAyNTQsIDY0LCAyNTEsIDE3LCAyMTUsIAotICAgIDEzMSwgNDIsIDIyNCwgMTcxLCAyNTEsIDE0NCwgNDIsIDE1MSwgODMsIDI0OSwgMjI4LCA0NiwgMTUxLCA4MywgMjQ5LCAKLSAgICAyMjgsIDIzNSwgMTkyLCAyNTEsIDQyLCAyMzUsIDE5MiwgNjcsIDI0OSwgMjI4LCAyMTUsIDEzMSwgMTUxLCAyMzUsIDE5MiwgCi0gICAgNjcsIDI0OSwgMjI4LCAyMzIsIDE2MywgMTUxLCAyMzUsIDE5MiwgNjcsIDI0OSwgMjI4LCAyMTUsIDEzMSwgNDIsIDIyNCwgCi0gICAgMTcxLCAyNDksIDIyNiwgMjUzLCAxOTUsIDIxNSwgMTMxLCA0NiwgMjI0LCAxNzEsIDI0OSwgMjI2LCAyNTMsIDE5NSwgMjMyLCAKLSAgICAxNjMsIDQ2LCAyMjQsIDE3MSwgMjQ5LCAyMjYsIDI1MywgMTk1LCAyMzIsIDE2MywgNDIsIDIyNCwgMTcxLCAyNDksIDIyNiwgCi0gICAgMjUzLCAxOTUsIDIxNSwgMTMxLCAxNTEsIDI0OSwgMjI4LCAyMzIsIDE2MywgMTUxLCAyNDksIDIyOCwgODMsIDIzMiwgMTYzLCAKLSAgICA0NiwgMjE2LCAxODMsIDgzLCAyMzIsIDE2MywgNDIsIDIxNiwgMTgzLCA4MywgMjE1LCAxMzEsIDQyLCAyMTYsIDE4MywgODMsIAotICAgIDIxNSwgMTMxLCA0NiwgMjE2LCAxODMsIDY3LCAyNTEsIDQyLCA0MSwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCA0NiwgCi0gICAgMTUxLCAyNTEsIDE0NCwgNDEsIDIsIDIxNSwgMTMxLCA0MiwgMjQ3LCAyMDcsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyMzIsIAotICAgIDE2MywgNDYsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA2NywgNDEsIDIsIDcxLCAyNTEsIDE1NSwgMjMyLCAyNDIsIDY3LCAKLSAgICAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDI0NywgNzQsIDIxNSwgMTMzLCAyMTYsIDE4NCwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIAotICAgIDIxNSwgMTMzLCAyMTYsIDE4NCwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDIzMywgMTA4LCAyNDksIDIyOCwgNjcsIDQxLCAyLCAKLSAgICAyMTUsIDEzMSwgNDIsIDIyNCwgMTcwLCA2NywgNDEsIDIsIDIzMiwgMTYzLCA0MiwgMjI0LCAxNzAsIDY3LCA0MSwgMiwgCi0gICAgMjMyLCAxNjMsIDQ2LCAyMjQsIDE3MCwgNjcsIDQxLCAyLCAyMTUsIDEzMSwgNDYsIDIyNCwgMTcwLCA2NywgMjQ5LCAyMjksIAotICAgIDIsIDIxNSwgMTMxLCA0MiwgMjI0LCAxNzAsIDY3LCAyNDksIDIyOSwgMiwgMjMyLCAxNjMsIDQyLCAyMjQsIDE3MCwgNjcsIAotICAgIDI0OSwgMjI5LCAyLCAyMzIsIDE2MywgNDYsIDIyNCwgMTcwLCA2NywgMjQ5LCAyMjksIDIsIDIxNSwgMTMxLCA0NiwgMjI0LCAKLSAgICAxNzAsIDIxNSwgMTMxLCA0MiwgMjE2LCAxODMsIDIxNSwgMTMxLCA0NiwgMjE2LCAxODMsIDIzMiwgMTYzLCA0MiwgMjE2LCAKLSAgICAxODMsIDY3LCAyMzEsIDE0NywgMjE5LCAxNjYsIDgzLCAyMzEsIDE0NywgMjE5LCAxNjYsIDY3LCAyMzEsIDE0NywgMywgCi0gICAgMjE5LCAxNjYsIDgzLCAyMzEsIDE0NywgMywgMjE5LCAxNjYsIDIzMiwgMTYzLCA0NiwgMjE2LCAxODMsIDgzLCAyMTgsIAotICAgIDIzOSwgMiwgMjI0LCAyNSwgMjQ5LCAxODQsIDIxNSwgMTY0LCAyMTksIDI0NCwgMjQ5LCAxNjAsIDgzLCAyMTksIDk1LCA2NywgCi0gICAgMjE5LCA5NSwgMjMzLCAwLCAyMTcsIDg2LCAyMTgsIDIzOCwgMjUzLCAxNDksIDIyOCwgMTgyLCAyNDcsIDI0NSwgMjI4LCAKLSAgICAxODIsIDI0OSwgMTM1LCAyMjcsIDI5LCA4MywgMjE3LCAyMDksIDY3LCAyMTcsIDIwOSwgMjUyLCA3NSwgMjUxLCA4OSwgCi0gICAgMjUyLCA3NSwgOTIsIDIsIDI1MCwgNjUsIDI1MiwgNzUsIDkyLCAyLCAyMTMsIDE2NiwgMjIyLCAxNjksIDIxNSwgMTY1LCAyLCAKLSAgICAyMjQsIDUxLCAyNDYsIDM5LCAyNDAsIDIzMCwgMjUxLCAxOTksIDY3LCAyMjAsIDE4MiwgMjI1LCAyMzMsIDgzLCAyMjAsIAotICAgIDE4MiwgMjI1LCAyMzMsIDIyMSwgMTAsIDIyMywgMjAyLCAyMjMsIDg5LCAyNDQsIDI0LCAyNDEsIDIxMiwgMjUxLCA0MiwgCi0gICAgODMsIDQyLCAyMjUsIDE0MSwgMjM1LCAyMzksIDgzLCA0NiwgMjI1LCAxNDEsIDIzNSwgMjM5LCA2NywgNDIsIDIyNSwgMTQxLCAKLSAgICAyMzUsIDIzOSwgNjcsIDExNCwgMjI1LCAxNDEsIDIzNSwgMjM5LCA2NywgNDYsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIAotICAgIDExOSwgMjI1LCAxNDEsIDIzNSwgMjM5LCAyMjAsIDI5LCAyNCwgMjQ5LCA2OSwgMjUwLCAxNTIsIDUyLCAyMjQsIDYyLCA1MiwgCi0gICAgMjUxLCAxNjIsIDUyLCAyNTAsIDIxMSwgMjU0LCAxMywgMjI3LCAxMiwgMjQ5LCA3MCwgMjUwLCA0OCwgMjIzLCAxOTAsIAotICAgIDI0OSwgNzEsIDY1LCAyMzIsIDE3MywgMjQ5LCA3MSwgNjUsIDIzNSwgMTE3LCAyMTksIDk2LCAyNCwgMjQ5LCA3NiwgMjQ0LCAKLSAgICAxMzYsIDg3LCAyNTQsIDE1MywgMjIxLCAxMiwgMjQyLCA1LCAyNCwgMjIwLCAxMTUsIDIyNiwgOTUsIDg3LCAyMTIsIDI0NSwgCi0gICAgMjEzLCA1OCwgMjE2LCAxNzMsIDMxLCAyNDEsIDIwNywgMjE2LCAxNzMsIDMxLCAyMzMsIDEzMSwgMjE2LCAxNzMsIDMxLCAKLSAgICAyNDQsIDY1LCAyMTYsIDE3MywgMzEsIDIxNywgODcsIDIxNiwgMTczLCAzMSwgMjEzLCAyMjQsIDIxNiwgMTczLCAzMSwgCi0gICAgMjE0LCAyNCwgMjE2LCAxNzMsIDMxLCAyMzAsIDE4NSwgMjE2LCAxNzMsIDMxLCAyNDUsIDE3OSwgMjEzLCAyNDIsIDY1LCAKLSAgICAyNDcsIDIyNiwgNjcsIDI0MywgMjA5LCAyNDQsIDE1OCwgNjcsIDIyMCwgMiwgMjQ0LCAxNTgsIDgzLCAyMjAsIDIsIDI0NCwgCi0gICAgMTU4LCA2NywgMjE4LCAyMzksIDIsIDIyNCwgMjUsIDI0NCwgNjEsIDIyNCwgMTY3LCAyMzAsIDE5OCwgMjMzLCAxMDMsIAotICAgIDIyNCwgMTY3LCAyMzAsIDE5OCwgMjMxLCAxMTgsIDI0NCwgMTA3LCA1MiwgMjQ1LCAxNzksIDIzMSwgMjUzLCA1MiwgMjM1LCAKLSAgICA0MSwgMjIyLCAxMzcsIDIxNSwgMTE2LCAyMjksIDE3NSwgMjI1LCAxNTQsIDI1MywgMTgzLCAyMTcsIDI0NywgMjQzLCAyOCwgCi0gICAgMjUwLCAxOTEsIDIzMywgNDMsIDIxNCwgMTMxLCAyMzMsIDEwLCAyMjIsIDExMCwgMjIyLCAxODgsIDI1MCwgMTgwLCAyNTMsIAotICAgIDIxMiwgMjI1LCAxODQsIDY3LCAyNTAsIDU0LCAyMzQsIDg3LCA2NywgMjUwLCA1NCwgMjI0LCAxNTksIDY3LCAyNTAsIDU0LCAKLSAgICAyMjMsIDk3LCA2NywgMjUwLCA1NCwgMjUxLCAxNTQsIDY3LCAyNTAsIDU0LCAyMzQsIDM5LCA2NywgMjUwLCA1NCwgMjI2LCAKLSAgICAxMDUsIDgzLCAyNTAsIDU0LCAyMzQsIDg3LCA4MywgMjUwLCA1NCwgMjI0LCAxNTksIDgzLCAyNTAsIDU0LCAyMjMsIDk3LCAKLSAgICA4MywgMjUwLCA1NCwgMjUxLCAxNTQsIDgzLCAyNTAsIDU0LCAyMzQsIDM5LCA4MywgMjUwLCA1NCwgMjI2LCAxMDUsIDgzLCAKLSAgICAyMTksIDIwNCwgMjE4LCAyNTEsIDY3LCAyNDEsIDIxMiwgMjE4LCAyNTEsIDY3LCAyNDcsIDIwMSwgMjE4LCAyNTEsIDgzLCAKLSAgICAyNDksIDE4MiwgMjE4LCAyNTEsIDY3LCAyMTksIDIwNCwgMjE4LCAyNTEsIDgzLCAyNDEsIDIxMiwgMjE4LCAyNTEsIDgzLCAKLSAgICAyNDcsIDIwMSwgMjE4LCAyNTEsIDY3LCAyNDksIDE4MiwgMjE4LCAyNTEsIDI0MCwgMjMwLCAyMTksIDE3MCwgMjI0LCAxNjcsIAotICAgIDIyOCwgMTU4LCAyNDUsIDE0NiwgMjI4LCAxNTgsIDI1MSwgMjQ5LCAyNDUsIDE0NiwgMjI4LCAxNTMsIDI1MSwgMjQ5LCAKLSAgICAyMjAsIDQ2LCAyMjgsIDE1MywgMjMwLCAxMjcsIDI0NCwgMzUsIDUyLCAyMzAsIDEyNywgMjMwLCA5LCA1MiwgMjMwLCAxMjcsIAotICAgIDIyMCwgMjU1LCA1MiwgMjEzLCAyNTAsIDE3NSwgMjQ5LCA3MCwgMjQ1LCAxNzYsIDE3NSwgMjQ5LCA3MCwgMjE1LCAxNDIsIAotICAgIDIyNCwgNSwgODcsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDE0LCAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTMsIAotICAgIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxMiwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDExLCAKLSAgICAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTAsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCA5LCAyMjUsIAotICAgIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgOCwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyNDMsIDI2LCAyMzEsIDIwMSwgCi0gICAgODMsIDIxNSwgMTQyLCAyMjQsIDUsIDg3LCAyMjQsIDYsIDIyNiwgMTQ4LCA4NywgMjI2LCAxMjQsIDIyNiwgMTQ4LCA4NywgCi0gICAgMjI2LCA0OSwgMjI2LCAxNDgsIDUyLCAyMTMsIDI0MCwgODcsIDI0NywgMTkzLCAyNDQsIDE1NywgMjQ3LCAxOTMsIDI0NCwgCi0gICAgMTU2LCAyNDcsIDE5MywgMjQ0LCAxNTUsIDI0NywgMTkzLCAyNDQsIDE1NCwgMjQ3LCAxOTMsIDI0NCwgMTUzLCAyNDcsIAotICAgIDE5MywgMjQ0LCAxNTIsIDY3LCAyNDksIDIyOSwgMiwgNjIsIDIyMywgMTQ4LCA2NywgMjQ5LCAyMjksIDIsIDExNywgMjQ3LCAKLSAgICA3MiwgODMsIDI0OSwgMjI5LCAyLCA2NywgNjIsIDIyMywgMTQ4LCA4MywgMjQ5LCAyMjksIDIsIDExNywgNjcsIDI0NywgNzIsIAotICAgIDIzMCwgMjEyLCAzMSwgMjEzLCA1OCwgMjMwLCAyMTIsIDMxLCAyMTIsIDI0NCwgMjQ3LCAxNzYsIDMxLCAyNDIsIDEwOCwgCi0gICAgMjEzLCA1OCwgMjQ3LCAxNzYsIDMxLCAyMzMsIDM3LCAyMTIsIDI0NCwgMjQ3LCAxNzYsIDMxLCAyMzMsIDM3LCAyMTMsIDU4LCAKLSAgICAyNDcsIDE3NiwgMzEsIDI0MiwgMTA4LCAyMTIsIDI0NCwgNjcsIDI0NCwgNDIsIDgzLCAyNDQsIDQyLCAyNDIsIDUsIDI0LCAKLSAgICAyMjUsIDIzNiwgMjU0LCAyOSwgMjQ5LCA2OCwgMjE4LCAxODAsIDIxOSwgMTAzLCA2NSwgMjU0LCAxMzEsIDIyMiwgMTI0LCAKLSAgICAyNTQsIDc3LCAyNDQsIDIwLCAyNDMsIDM2LCAyMTksIDEwMywgNjUsIDI0MSwgMTg3LCAyNTMsIDExNSwgODcsIDI0NCwgMzEsIAotICAgIDIyNiwgMjUwLCA2NywgMjE5LCA5NSwgMTMzLCAyMzIsIDIzNywgMjQ5LCAxMTQsIDIyMywgMTQ4LCAxMzMsIDIzMiwgMjM3LCAKLSAgICAyNDksIDExNCwgMjMzLCA3MCwgMjE0LCAzNCwgNTIsIDEyNCwgMjE0LCAxMTEsIDUyLCAyNDYsIDY0LCAyNDQsIDEwNywgNTIsIAotICAgIDI0NiwgNjQsIDIzMSwgMjUzLCA1MiwgMjM1LCAyMDAsIDI0NCwgMTA3LCAyNCwgMjMxLCAyNTMsIDUyLCAyMzEsIDI1MywgCi0gICAgMjQsIDI0NCwgMTA3LCA1MiwgMjMxLCAyNTMsIDIsIDIxOSwgNDUsIDUyLCAyMzEsIDI1MywgMiwgMjE5LCA0NSwgMjQsIAotICAgIDIzMSwgMjUzLCAyNCwgMjQ0LCAxMDcsIDUyLCA3MSwgMjMxLCAyNTMsIDIsIDIxOSwgNDUsIDUyLCAxOTksIDIzMSwgMjUzLCAKLSAgICAyLCAyMTksIDQ1LCA1MiwgMjMxLCAxNDcsIDY3LCAyNDksIDIyOCwgMjMxLCAxNDcsIDgzLCAyNDksIDIyOCwgMjMxLCAxNDcsIAotICAgIDMsIDY3LCAyNDksIDIyOCwgMjMxLCAyMTYsIDg3LCAyNDcsIDExOSwgODcsIDIxNSwgMTQwLCAyMjYsIDEyMywgODcsIDI0OSwgCi0gICAgMTY5LCAyNDMsIDE5NiwgMjE1LCAxMTIsIDIyOSwgMTcwLCAyNTAsIDk1LCAyMjYsIDE4OCwgMjM1LCA0NywgMjE0LCAxNjIsIAotICAgIDI1MCwgMzAsIDgzLCAyMzAsIDE5OSwgMjMyLCAyNTMsIDIyMSwgMzMsIDIyMSwgNjcsIDIyNCwgMTUwLCAyMjEsIDUxLCAKLSAgICAyMTksIDIzOSwgMjUyLCA3OCwgMjUyLCA0NiwgOTEsIDIzNCwgMTQ0LCA2NywgMjQ2LCA0OCwgMjMxLCAyNDgsIDY3LCAyNDYsIAotICAgIDQ4LCAyMzQsIDg3LCA4MywgMjQ2LCA0OCwgMjMxLCAyNDgsIDgzLCAyNDYsIDQ4LCAyMzQsIDg3LCAyMTksIDI0NSwgMjEzLCAKLSAgICAyMTYsIDIxOSwgMjQ4LCAyMTgsIDIzOSwgMjUxLCAyMjcsIDI0OSwgMTg0LCAyMjQsIDUwLCA4MywgMjE5LCAyNDQsIDIxNywgCi0gICAgODgsIDI0OSwgMTg1LCAyNCwgMjI0LCA1MCwgMjE2LCA1OCwgNjcsIDIyMCwgMTgyLCAyMjUsIDIzMywgMjE2LCA1OCwgODMsIAotICAgIDIyMCwgMTgyLCAyMjUsIDIzMywgNjcsIDI0NywgMjAxLCAyMzUsIDI1MiwgMjE5LCAxNjYsIDI0OSwgNjUsIDIzMywgMTE1LCAKLSAgICAyNDcsIDE0NSwgMjUwLCAxNzYsIDIyNywgMzIsIDIyNSwgMjM2LCAyNTAsIDE3NywgMjIwLCAxNiwgMjQxLCAxOTYsIDIsIAotICAgIDY3LCAyNDksIDcwLCAzNiwgMjQ5LCA2NSwgMjMzLCAxMTUsIDI1MCwgODgsIDIyOCwgMTg2LCAyNDUsIDgzLCAyNTQsIDUwLCAKLSAgICAyMjcsIDU3LCA0MiwgMjE0LCAxMCwgMjE2LCAyMDgsIDgzLCAyMTYsIDIxLCA0MiwgMjE0LCAxMCwgMjE2LCAyMDgsIDY3LCAKLSAgICAyMTYsIDIxLCA0MiwgMjE0LCAxMCwgMjE2LCAyMDgsIDgzLCA0MiwgMjMzLCAxMTYsIDIzMSwgMTE3LCA2NywgNDIsIDIzMywgCi0gICAgMTE2LCAyMzEsIDExNywgMjQ2LCA0NCwgMjIwLCAxMCwgNTIsIDEwNywgNjcsIDI0NiwgNTksIDIxNiwgMTgzLCA0MiwgMjQ5LCAKLSAgICAxOTMsIDI0NSwgODMsIDkxLCAyMjIsIDE2OSwgMjQ0LCAxNDMsIDI0NywgMjA3LCAyMzUsIDI1MiwgNjcsIDI0OSwgMjI5LCAKLSAgICAyMzUsIDI1MiwgODMsIDIxOSwgMTY2LCA4MywgMjE2LCAxNTAsIDIyMywgMjEyLCA0MiwgMjQ1LCA4MiwgMjIzLCAyMTIsIAotICAgIDQyLCAyNDUsIDgxLCAyNTMsIDEyNywgMTYsIDMxLCAyMTUsIDExNiwgMTA3LCAyNDksIDIyOSwgMiwgMjE5LCA0NSwgMjQsIAotICAgIDExNywgMTc2LCA0OSwgMjI2LCA2NCwgMjIzLCAxNDUsIDIzNSwgMjAyLCAyMjYsIDY0LCAyMzMsIDY3LCAyMzUsIDIwMiwgCi0gICAgMjI2LCA2NCwgMjM1LCAxOTEsIDIyNiwgNjQsIDgzLCAyNDksIDcxLCAyMjcsIDYzLCAyMjAsIDIwOSwgMjIwLCAxOTcsIAotICAgIDIyMCwgMTU0LCAyNDksIDI1NCwgMjUwLCAxNTgsIDI0MSwgMTQzLCAyMjAsIDU0LCAyNDMsIDM3LCAyMTMsIDIxNiwgMjQwLCAKLSAgICAyMTAsIDI0MywgMzcsIDIsIDI0MSwgMjUxLCAyMzEsIDIzNiwgMTYsIDMxLCAyMzMsIDEsIDIzMCwgMTg1LCAyMTUsIDE2NSwgCi0gICAgMjI3LCA2MywgMjQyLCAxMDAsIDI0MywgMjM4LCAyNDQsIDQzLCAyMzUsIDI1MiwgMjQxLCA0NSwgMjQ0LCA5OCwgMjIyLCAKLSAgICAxODUsIDQxLCAyNDMsIDIzNywgMjQ5LCA5OCwgMjIwLCAzMiwgMjQwLCAxMDUsIDIyMCwgMzUsIDIyNiwgNDQsIDIsIDI1MiwgCi0gICAgNzgsIDIxNywgMTk1LCAyMzUsIDEzMSwgMjUyLCA2NSwgODcsIDI0MSwgMjE1LCAyNDIsIDExMCwgODcsIDI0MywgMjAzLCAKLSAgICAyMjUsIDI4LCAyNDksIDQ0LCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDY3LCAyNDQsIDQzLCAyLCAxOTksIDIzMSwgMzcsIAotICAgIDgzLCAyMTksIDQ2LCAyMTUsIDEzMSwgMjUxLCAxNDAsIDIyMiwgMTEyLCA4MywgMjIyLCAxMTIsIDIzMiwgMTYzLCAyNTEsIAotICAgIDE0MCwgMjIyLCAxMTIsIDY3LCAyMjIsIDExMiwgNjcsIDEwNywgMjUwLCA2NiwgNzcsIDIxNywgMjEwLCAyMzIsIDIwNiwgCi0gICAgNTIsIDIxOCwgNCwgMjQ2LCA0MywgMjU0LCA5OSwgMjQ1LCA3OCwgMjI0LCA0OCwgMjQ0LCA1NCwgMjI0LCA0OCwgMjQxLCAKLSAgICAyNTQsIDIxNCwgMTUyLCAyNDEsIDI1NCwgMjEzLCAxODYsIDI0MSwgMjU0LCAyMzIsIDE2MywgNDYsIDIyNiwgNzMsIDIyNiwgCi0gICAgNzMsIDIxNSwgMTMxLCA0NiwgMjI2LCA3MywgNjcsIDIyOSwgNjEsIDgzLCAyMjksIDYxLCAyNTAsIDY2LCA3NywgMTA3LCAKLSAgICAyNTAsIDY2LCA3NywgMjMwLCAxNTQsIDIxMywgMTY2LCAxMDcsIDIzMCwgMTU0LCAyMTMsIDE2NiwgMjUyLCA3NSwgMjEzLCAKLSAgICAxNjYsIDEwNywgMjUyLCA3NSwgMjEzLCAxNjYsIDIyNiwgMjUwLCAyNSwgMjQ5LCA3MCwgMTA3LCAyNSwgMjQ5LCA3MCwgCi0gICAgMjI3LCA0MCwgMjUwLCAxMDksIDI0OSwgNzAsIDEwNywgMjI3LCA0MCwgMjUwLCAxMDksIDI0OSwgNzAsIDcsIDI0OSwgNzAsIAotICAgIDIyMSwgMTMsIDY3LCA3LCAyNDksIDcwLCAyMjYsIDI1MCwgNywgMjQ5LCA3MCwgMjMxLCAyNTAsIDI0OSwgNzAsIDIxOSwgCi0gICAgOTYsIDY1LCAyNDgsIDk1LCAyNDMsIDIzNywgMjE3LCAyMjMsIDI1MywgMTMyLCAyNDMsIDIzNywgMjUyLCA3NiwgMjUzLCAKLSAgICAxMzIsIDEwNywgMjQzLCAyMzcsIDI1MiwgNzYsIDI1MywgMTMyLCAyNDMsIDIzNywgMjQ5LCAxODAsIDI1MywgMTMyLCA4MywgCi0gICAgMjQzLCAyMzcsIDIyNSwgMTQzLCAyMTksIDk1LCA2NywgMjQzLCAyMzcsIDIyNSwgMTQzLCAyMTksIDk1LCAyMTksIDE5OSwgCi0gICAgMjE5LCA1MSwgMjI2LCAyNTAsIDY3LCAyMTksIDk1LCAzNiwgNjcsIDIxOSwgOTUsIDIyNywgNDAsIDI1MCwgMTA5LCA4MywgCi0gICAgMjE5LCA5NSwgODMsIDI1MCwgMTA5LCA2NywgMjE5LCA5NSwgMjI2LCAyNTAsIDgzLCAyMTksIDk1LCAxMDcsIDIyNiwgMjUwLCAKLSAgICA4MywgMjE5LCA5NSwgMjI1LCAxOTIsIDIxOSwgOTUsIDIyMSwgMTMsIDY3LCAyMTksIDk1LCAxMDcsIDI1MywgMTMyLCAyMjcsIAotICAgIDQwLCAyNTAsIDEwOSwgMjUzLCAxMzIsIDI0NSwgMTUwLCAyMTksIDE3NiwgMjUzLCAxMzIsIDI0NSwgMTUwLCAyMjUsIDE0MywgCi0gICAgODMsIDIxOSwgOTUsIDI0NSwgMTUwLCAyMjUsIDE0MywgMjI1LCAxOTIsIDIxOSwgOTUsIDIyMCwgNTMsIDIyNSwgMTQzLCAKLSAgICA4MywgMjE5LCA5NSwgMjQ1LCAxNTAsIDIyNSwgMTQzLCAyMjQsIDcsIDgzLCAyMTksIDk1LCAxMDcsIDI0NSwgMTUwLCAyMjUsIAotICAgIDE0MywgMjI0LCA3LCA4MywgMjE5LCA5NSwgMjE2LCA0MiwgMjI1LCAxNDMsIDgzLCAyMTksIDk1LCAyMjAsIDQ4LCAyMjUsIAotICAgIDE0MywgMjUzLCAxMzIsIDIxNywgMjIzLCAyNTMsIDEzMiwgMjI3LCA0MCwgMjUwLCAxMDksIDIxNywgMjIzLCAyNTMsIDEzMiwgCi0gICAgMTA3LCAyMTcsIDIyMywgMjUzLCAxMzIsIDIyMCwgNTMsIDIyNiwgMzMsIDgzLCAyNCwgNjcsIDI0NCwgMjMsIDgzLCAyNDQsIAotICAgIDIzLCA2NywgMjQ0LCAyMywgMjQ1LCAxNTAsIDIyNiwgMzMsIDIyNiwgMjUwLCA4MywgMjQ0LCAyMywgMzYsIDIyNywgNDAsIAotICAgIDI1MCwgMTA5LCAyNDUsIDE1MCwgMjI1LCAxNDMsIDIxOSwgOTUsIDEwNywgMjE3LCAyMjMsIDIyNSwgMTkyLCAyNTMsIDEzMiwgCi0gICAgMjE5LCAyNDYsIDIxNywgNTksIDIxNiwgMTc2LCAyMTksIDI0NiwgMTA3LCAyNTAsIDUxLCAyMTksIDI0NiwgMjE5LCAyMDEsIAotICAgIDEwNywgMjE5LCAyMDEsIDI1MiwgNzYsIDI1MywgMTMyLCAyNDUsIDE1MCwgMjE3LCAyMjMsIDIyNSwgNTUsIDI1MywgMTMyLCAKLSAgICAxMDcsIDI0NSwgMTUwLCAyMTcsIDIyMywgMjI1LCA1NSwgMjUzLCAxMzIsIDI0OSwgNzEsIDc3LCAyMjEsIDEzLCA2NywgCi0gICAgMjQ5LCAyMjgsIDE0NiwgOTEsIDI0OSwgNzEsIDc3LCAyMzIsIDE2MywgNDYsIDI0NiwgNDEsIDY3LCAyMTksIDE2NiwgMjE1LCAKLSAgICAxMzEsIDQ2LCAyNDYsIDQxLCA2NywgMjE5LCAxNjYsIDIzMiwgMTYzLCA0NiwgMjIxLCAxMywgNjcsIDIxOSwgMTY2LCAyMTUsIAotICAgIDEzMSwgNDYsIDIyMSwgMTMsIDY3LCAyMTksIDE2NiwgODMsIDIyNCwgMTU4LCAxNTIsIDIyNywgMTQsIDY3LCAyMjQsIDE1OCwgCi0gICAgMTUyLCAyMjcsIDE0LCA2NywgMjQ0LCAyNTQsIDE1MiwgMjI3LCAxNCwgODMsIDI0NywgMjAxLCAyMzAsIDI1MSwgNjcsIAotICAgIDIxMywgMTY2LCAxMDcsIDI0NCwgMjU0LCAxNTIsIDg3LCAxNzcsIDcxLCAxMzQsIDIzMSwgMTQ3LCA3MSwgMTM0LCAxMDcsIAotICAgIDcxLCAxMzQsIDEwNywgMjIwLCA4MSwgMjE2LCA1OCwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgCi0gICAgMjIwLCA4MSwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgNTEsIDIxNiwgNTgsIDI0OSwgMTU4LCAKLSAgICAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDUxLCAyNDksIDE1OCwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAKLSAgICAxMTUsIDIyMCwgODEsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDExNSwgNTEsIDI0OSwgMTU4LCAKLSAgICAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAyNDksIDMzLCAyMTksIDgwLCAyMjYsIDE0MywgNSwgMjI3LCAxNCwgMTA3LCAyNDQsIAotICAgIDI1NCwgMTUyLCAyMjcsIDE0LCAxMDcsIDI0MSwgMjEyLCAyNDQsIDI1NCwgMTUyLCAyMjcsIDE0LCAxMDcsIDgzLCAyNDEsIAotICAgIDIxMSwgMjIzLCA4OSwgMTA3LCA4MywgMjQxLCAyMTIsIDI1MSwgNDIsIDI0NCwgMjQsIDI0MSwgMjExLCAyMjMsIDg5LCAKLSAgICAyNDQsIDI0LCAyNDEsIDIxMiwgMjUxLCA0MiwgMjMxLCAxNDcsIDQyLCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAxNDcsIAotICAgIDQ2LCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAxNDcsIDI0NCwgMzIsIDQyLCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAKLSAgICAxNDcsIDI0NCwgMzIsIDQ2LCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAxNDcsIDIzMywgNjYsIDI1NCwgMTksIDI1MSwgODUsIAotICAgIDIyNywgMTQsIDIzMSwgMTQ3LCAyMjMsIDE0NCwgMjU0LCAxOSwgMjUxLCA4NSwgMjI3LCAxNCwgMTA3LCAyMzMsIDY2LCAKLSAgICAyNTQsIDE5LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDIyMywgMTQ0LCAyNTQsIDE5LCAyMjQsIDE0MywgMTUyLCAKLSAgICAyMjcsIDE0LCAxMDcsIDIzMywgNjYsIDI1NCwgMTksIDI1MSwgODUsIDIyNywgMTQsIDEwNywgMjIzLCAxNDQsIDI1NCwgMTksIAotICAgIDI1MSwgODUsIDIyNywgMTQsIDE3NywgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NSwgMjI3LCAxNCwgMTc3LCA0NiwgCi0gICAgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg1LCAyMjcsIDE0LCAyMzEsIDE0NywgNDIsIDI0OSwgNDAsIDI1MSwgODUsIAotICAgIDIyNywgMTQsIDIzMSwgMTQ3LCA0NiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjI3LCAxNCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAKLSAgICAxMTYsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTA5LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE2NiwgMjQ3LCAxNTYsIAotICAgIDE0NiwgMzYsIDIxLCAxNjMsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTgwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE4OSwgCi0gICAgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxOTgsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTk1LCAyNDcsIDE1NiwgMTQ2LCAKLSAgICAzNiwgMjEsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDUwLCAyMTcsIDIwMCwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDExNiwgCi0gICAgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDEwOSwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE2NiwgMjQ3LCAxNTYsIDM2LCAzNSwgCi0gICAgMjEsIDE2MywgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE4MCwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE4OSwgMjQ3LCAxNTYsIAotICAgIDM2LCAzNSwgMjEsIDE5OCwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE5NSwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDIwMCwgCi0gICAgMjQ3LCAxNTYsIDM2LCAzNSwgNTAsIDIxNywgMjAwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxMTYsIDI0NywgMTU2LCAKLSAgICAxNDYsIDM2LCAzNSwgMjEsIDEwOSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTY2LCAyNDcsIDE1NiwgMTQ2LCAzNiwgCi0gICAgMzUsIDIxLCAxNjMsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE4MCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgCi0gICAgMTg5LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxOTgsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE5NSwgMjQ3LCAKLSAgICAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMjAwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDUwLCAyMTcsIDIwMCwgMTA3LCAyMTMsIAotICAgIDIzMSwgOTUsIDY4LCAxMDcsIDk0LCA1MiwgMTA3LCAyMzAsIDI1MSwgNTIsIDEwNywgMjQ3LCAxMjEsIDUyLCAxMDcsIDIxOSwgCi0gICAgMjE1LCAyNDUsIDE3NiwgNjgsIDEwNywgOTUsIDY4LCAxMDcsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjgsIDI0NiwgNTIsIAotICAgIDIyNSwgMTQ1LCA5NSwgNjgsIDEwNywgMjIzLCA4NiwgOTUsIDY4LCAyMTYsIDE4MiwgOTUsIDY4LCAxMDcsIDIxNiwgMTgyLCAKLSAgICA5NSwgNjgsIDI0OCwgMTAwLCAyMTYsIDE4MiwgOTUsIDY4LCAxMDcsIDI0OCwgMTAwLCAyMTYsIDE4MiwgOTUsIDY4LCA4MywgCi0gICAgOTUsIDY4LCAyMTcsIDk3LCAyMTYsIDIyNSwgOTUsIDI1MywgMTY0LCAyMTcsIDk3LCAyNTEsIDk5LCA5NSwgMjUzLCAxNjQsIAotICAgIDgzLCA5NSwgMjUzLCAxNjQsIDEwNywgODMsIDI0OSwgMzMsIDI0NiwgNTgsIDI0LCA5NSwgNjgsIDEwNywgODMsIDI0OSwgCi0gICAgMzMsIDIxNSwgMTI0LCAyNCwgOTUsIDY4LCAyMTksIDE2MywgODMsIDk1LCA2OCwgMTA3LCAyNDksIDE0NSwgODMsIDk1LCAKLSAgICA2OCwgMjIzLCAxNDMsIDY3LCA5NSwgNjgsIDIzMywgNjUsIDY3LCA5NSwgNjgsIDI1MiwgMTAwLCAyMjEsIDEzLCA2NywgOTUsIAotICAgIDY4LCAyNDMsIDIxMSwgMjIxLCAxMywgNjcsIDk1LCA2OCwgMTA3LCAyMzIsIDE2MywgMjIzLCAxNDIsIDY3LCA5NSwgNjgsIAotICAgIDEwNywgMjE1LCAxMzEsIDIyMywgMTQyLCA2NywgOTUsIDY4LCAyMjgsIDE2MCwgMjMyLCAxNjMsIDIyMywgMTQyLCA2NywgCi0gICAgOTUsIDY4LCAyNDksIDQwLCAyMzIsIDE3NywgMjI4LCAxNjAsIDIxNSwgMTMxLCAyMjMsIDE0MiwgNjcsIDk1LCA2OCwgMzYsIAotICAgIDEwNywgNjcsIDk1LCA2OCwgMjEzLCAyMzcsIDk1LCA2OCwgMjUxLCAxNDMsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDI1MSwgCi0gICAgMTQzLCA5NSwgNjgsIDI1MSwgMTQzLCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAxMDcsIDI1MSwgMTQzLCAyMTksIDIxNSwgCi0gICAgMjQ1LCAxNzYsIDY4LCAxMDcsIDI1MSwgMTQzLCA5NSwgNjgsIDEwNywgMjUxLCAxNDMsIDIyOCwgMTY3LCAyNDUsIDE3NiwgCi0gICAgNjgsIDIxNywgMjI1LCA5NSwgNjgsIDEwNywgMjE3LCAyMjQsIDk1LCA2OCwgMjE0LCAyLCA5NSwgNjgsIDEwNywgMjE0LCAyLCAKLSAgICA5NSwgNjgsIDIyNywgMzcsIDk1LCA2OCwgNTEsIDI0OSwgNDAsIDIzMiwgMTc3LCAxMzMsIDI0NywgMTY2LCAyNTQsIDE4LCAKLSAgICA2NywgMjE2LCAxODQsIDI0OSwgMTI2LCAzLCA2NywgMjE2LCAxODMsIDIyNiwgNDcsIDIyNywgNDAsIDIxOSwgOCwgMjI3LCAKLSAgICA0MCwgMjE4LCAyMjEsIDQyLCAyMjMsIDMsIDI1MiwgOTEsIDI0OCwgMTEsIDQ2LCAyMjMsIDMsIDI1MiwgOTEsIDI0OCwgMTEsIAotICAgIDE2NywgMiwgNjIsIDIzNSwgMjEyLCAyMjMsIDIwMywgMjE5LCAyMzIsIDIyNSwgODEsIDIxOSwgOCwgMjE4LCAyMjIsIDIyNSwgCi0gICAgODEsIDIxOSwgMjMxLCA3MSwgMjUyLCA2MCwgMiwgMTk5LCA5MCwgMTg0LCAyNDcsIDEyMCwgOTEsIDIzMiwgMTk5LCAyNTQsIAotICAgIDI3LCA5MSwgMjMyLCAxOTksIDIyNywgMjQsIDY3LCAyNDcsIDIwMSwgMiwgMjUwLCAxMDcsIDI0NywgNzQsIDI0LCAyLCAKLSAgICAyNDcsIDc0LCAyNDUsIDEyNywgNjUsIDIyNywgMzUsIDIxNSwgMTIzLCAyMzIsIDE2MywgNDYsIDI0OSwgMTAwLCAyLCAyNDcsIAotICAgIDc0LCAyMTUsIDEzMSwgNDIsIDI0OSwgMTAwLCAyLCAyNDcsIDc0LCA0MiwgMjI2LCAyNTIsIDIzNSwgNjksIDQ2LCAyMjYsIAotICAgIDI1MiwgMjM1LCA2OSwgMjQzLCAyMDAsIDIyNiwgMjUyLCAyMzUsIDY5LCAyMzMsIDEwOCwgMTE0LCAyMTgsIDM2LCAyMzMsIAotICAgIDEwOCwgMTE5LCAyMTgsIDM2LCA0MiwgMjQsIDQ2LCA1MSwgMjE2LCA1NywgNDIsIDI0LCA0NiwgMjE4LCAzNiwgNDIsIDIzMCwgCi0gICAgMTU3LCAxODQsIDQ2LCAyMTgsIDM2LCAxODQsIDQyLCAyMTgsIDM2LCAxMTQsIDIxOCwgMzcsIDIsIDI0OSwgMjI5LCA0OSwgCi0gICAgMjMyLCAxNjAsIDI0NywgMTI1LCAyNTEsIDcsIDE5OSwgMjIzLCA0NCwgNjcsIDI0OSwgMTQ0LCAyNDcsIDIwMCwgNjcsIAotICAgIDI0OSwgMTQ0LCAyNDcsIDIwMSwgMiwgMTMyLCAyMTcsIDY4LCA2NywgMjQ5LCAxNDQsIDI0NywgMjAxLCAyLCA5NSwgMjE3LCAKLSAgICA2OCwgNjcsIDQxLCAyLCAxMzIsIDIxNywgNjgsIDY3LCA0MSwgMiwgOTUsIDIxNywgNjgsIDE0LCA0MiwgNjcsIDQxLCAxMjUsIAotICAgIDE0LCA0NiwgNjcsIDQxLCAxMjUsIDE0LCA0MiwgMjU0LCAxOSwgMTI1LCAxNCwgNDYsIDI1NCwgMTksIDEyNSwgMTQsIDQyLCAKLSAgICA1MSwgMjU0LCAxOSwgMTI1LCAxNCwgNDYsIDUxLCAyNTQsIDE5LCAxMjUsIDE0LCA0MiwgNjcsIDIxNiwgMjE5LCAyMjAsIAotICAgIDIzMywgMTI1LCAxNCwgNDYsIDY3LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgMTQsIDQyLCAyNDQsIDMyLCAyMjYsIDEzMSwgCi0gICAgMTQsIDQ2LCAyNDQsIDMyLCAyMjYsIDEzMSwgMjE1LCAxMjQsIDIyNCwgMTY5LCA2OCwgMjQ2LCA1OCwgMjI0LCAxNjksIDY4LCAKLSAgICAyNTMsIDI1NSwgMjQzLCA3NCwgMjQ5LCAyMjksIDY4LCAyNDksIDE5NSwgMjQzLCA3NCwgMjQ5LCAyMjksIDY4LCA0NiwgNzYsIAotICAgIDIsIDM2LCAyMjUsIDE1NiwgMTg0LCAxMzIsIDY4LCAxODQsIDk1LCA2OCwgMTg0LCA0MiwgNDYsIDY4LCAxODQsIDEzMiwgCi0gICAgNTEsIDY4LCAxODQsIDk1LCA1MSwgNjgsIDE4NCwgNDIsIDQ2LCA1MSwgNjgsIDE4NCwgMTMyLCA3NiwgMjQzLCAyMTMsIAotICAgIDEzNCwgMTg0LCA5NSwgNzYsIDI0MywgMjEzLCAxMzQsIDE4NCwgMTMyLCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDE4NCwgCi0gICAgOTUsIDUxLCA3NiwgMjQzLCAyMTMsIDEzNCwgMTg0LCA5NSwgMjE5LCAxNjIsIDY4LCA0NCwgNDUsIDI1MSwgMTM4LCA0NCwgCi0gICAgNDUsIDI0NywgNzEsIDQ0LCA0NSwgMjQ2LCAxOTksIDQ0LCA0NSwgMjQ3LCA3MCwgNDQsIDQ1LCAyNDYsIDEzNSwgNDQsIDQ1LCAKLSAgICAyNDcsIDYsIDQ0LCA0NSwgMjQ2LCAxOTgsIDQ0LCA0NSwgMjQ3LCA2OSwgNDQsIDQ1LCAyNDYsIDEwMywgNDQsIDQ1LCAyNDYsIAotICAgIDIzMCwgNDQsIDQ1LCAyNDYsIDE2NiwgNDQsIDQ1LCAyNDcsIDM3LCA0NCwgNDUsIDI0NiwgMTM0LCA0NCwgNDUsIDI0NywgNSwgCi0gICAgNDQsIDQ1LCAyNDYsIDE5NywgNDQsIDQ1LCAyNDcsIDY4LCA0NCwgNDUsIDI0NiwgODcsIDQ0LCA0NSwgMjQ2LCAyMTQsIDQ0LCAKLSAgICA0NSwgMjQ2LCAxNTAsIDQ0LCA0NSwgMjQ3LCAyMSwgNDQsIDQ1LCAyNDYsIDExOCwgNDQsIDQ1LCAyNDYsIDI0NSwgNDQsIAotICAgIDQ1LCAyNDYsIDE4MSwgNDQsIDQ1LCAyNDcsIDUyLCA0NCwgNDUsIDI0NiwgMTAyLCA0NCwgNDUsIDI0NiwgMjI5LCA0NCwgCi0gICAgNDUsIDI0NiwgMTY1LCA0NCwgNDUsIDI0NywgMzYsIDQ0LCA0NSwgMjQ2LCAxMzMsIDQ0LCA0NSwgMjQ3LCA0LCA0NCwgNDUsIAotICAgIDI0NiwgMTk2LCA0NCwgNDUsIDI0NywgNjcsIDQ0LCA0NSwgMjQ2LCA3OSwgNDQsIDQ1LCAyNDYsIDIwNiwgNDQsIDQ1LCAKLSAgICAyNDYsIDE0MiwgNDQsIDQ1LCAyNDcsIDEzLCA0NCwgNDUsIDI0NiwgMTEwLCA0NCwgNDUsIDI0NiwgMjM3LCA0NCwgNDUsIAotICAgIDI0NiwgMTczLCA0NCwgNDUsIDI0NywgNDQsIDQ0LCA0NSwgMjQ2LCA5NCwgNDQsIDQ1LCAyNDYsIDIyMSwgNDQsIDQ1LCAKLSAgICAyNDYsIDE1NywgNDQsIDQ1LCAyNDcsIDI4LCA0NCwgNDUsIDI0NiwgMTI1LCA0NCwgNDUsIDI0NiwgMjUyLCA0NCwgNDUsIAotICAgIDI0NiwgMTg4LCA0NCwgNDUsIDI0NywgNTksIDQ0LCA0NSwgMjQ2LCA4NiwgNDQsIDQ1LCAyNDYsIDIxMywgNDQsIDQ1LCAKLSAgICAyNDYsIDE0OSwgNDQsIDQ1LCAyNDcsIDIwLCA0NCwgNDUsIDI0NiwgMTE3LCA0NCwgNDUsIDI0NiwgMjQ0LCA0NCwgNDUsIAotICAgIDI0NiwgMTgwLCA0NCwgNDUsIDI0NywgNTEsIDQ0LCA0NSwgMjQ2LCAxMDEsIDQ0LCA0NSwgMjQ2LCAyMjgsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNjQsIDQ0LCA0NSwgMjQ3LCAzNSwgNDQsIDQ1LCAyNDYsIDEzMiwgNDQsIDQ1LCAyNDcsIDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxOTUsIDQ0LCA0NSwgMjQ3LCA2NiwgNDQsIDQ1LCAyNDYsIDc1LCA0NCwgNDUsIDI0NiwgMjAyLCA0NCwgNDUsIDI0NiwgCi0gICAgMTM4LCA0NCwgNDUsIDI0NywgOSwgNDQsIDQ1LCAyNDYsIDEwNiwgNDQsIDQ1LCAyNDYsIDIzMywgNDQsIDQ1LCAyNDYsIAotICAgIDE2OSwgNDQsIDQ1LCAyNDcsIDQwLCA0NCwgNDUsIDI0NiwgOTAsIDQ0LCA0NSwgMjQ2LCAyMTcsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNTMsIDQ0LCA0NSwgMjQ3LCAyNCwgNDQsIDQ1LCAyNDYsIDEyMSwgNDQsIDQ1LCAyNDYsIDI0OCwgNDQsIDQ1LCAyNDYsIAotICAgIDE4NCwgNDQsIDQ1LCAyNDcsIDU1LCA0NCwgNDUsIDI0NiwgODIsIDQ0LCA0NSwgMjQ2LCAyMDksIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNDUsIDQ0LCA0NSwgMjQ3LCAxNiwgNDQsIDQ1LCAyNDYsIDExMywgNDQsIDQ1LCAyNDYsIDI0MCwgNDQsIDQ1LCAyNDYsIAotICAgIDE3NiwgNDQsIDQ1LCAyNDcsIDQ3LCA0NCwgNDUsIDI0NiwgOTcsIDQ0LCA0NSwgMjQ2LCAyMjQsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNjAsIDQ0LCA0NSwgMjQ3LCAzMSwgNDQsIDQ1LCAyNDYsIDEyOCwgNDQsIDQ1LCAyNDYsIDI1NSwgNDQsIDQ1LCAyNDYsIAotICAgIDE5MSwgNDQsIDQ1LCAyNDcsIDYyLCA0NCwgNDUsIDI0NiwgNzgsIDQ0LCA0NSwgMjQ2LCAyMDUsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNDEsIDQ0LCA0NSwgMjQ3LCAxMiwgNDQsIDQ1LCAyNDYsIDEwOSwgNDQsIDQ1LCAyNDYsIDIzNiwgNDQsIDQ1LCAyNDYsIAotICAgIDE3MiwgNDQsIDQ1LCAyNDcsIDQzLCA0NCwgNDUsIDI0NiwgOTMsIDQ0LCA0NSwgMjQ2LCAyMjAsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNTYsIDQ0LCA0NSwgMjQ3LCAyNywgNDQsIDQ1LCAyNDYsIDEyNCwgNDQsIDQ1LCAyNDYsIDI1MSwgNDQsIDQ1LCAyNDYsIAotICAgIDE4NywgNDQsIDQ1LCAyNDcsIDU4LCA0NCwgNDUsIDI0NiwgODUsIDQ0LCA0NSwgMjQ2LCAyMTIsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNDgsIDQ0LCA0NSwgMjQ3LCAxOSwgNDQsIDQ1LCAyNDYsIDExNiwgNDQsIDQ1LCAyNDYsIDI0MywgNDQsIDQ1LCAyNDYsIAotICAgIDE3OSwgNDQsIDQ1LCAyNDcsIDUwLCA0NCwgNDUsIDI0NiwgMTAwLCA0NCwgNDUsIDI0NiwgMjI3LCA0NCwgNDUsIDI0NiwgCi0gICAgMTYzLCA0NCwgNDUsIDI0NywgMzQsIDQ0LCA0NSwgMjQ2LCAxMzEsIDQ0LCA0NSwgMjQ3LCAyLCA0NCwgNDUsIDI0NiwgMTk0LCAKLSAgICA0NCwgNDUsIDI0NywgNjUsIDQ0LCA0NSwgMjQ2LCA3MywgNDQsIDQ1LCAyNDYsIDIwMCwgNDQsIDQ1LCAyNDYsIDEzNiwgNDQsIAotICAgIDQ1LCAyNDcsIDcsIDQ0LCA0NSwgMjQ2LCAxMDQsIDQ0LCA0NSwgMjQ2LCAyMzEsIDQ0LCA0NSwgMjQ2LCAxNjcsIDQ0LCA0NSwgCi0gICAgMjQ3LCAzOCwgNDQsIDQ1LCAyNDYsIDg4LCA0NCwgNDUsIDI0NiwgMjE1LCA0NCwgNDUsIDI0NiwgMTUxLCA0NCwgNDUsIAotICAgIDI0NywgMjIsIDQ0LCA0NSwgMjQ2LCAxMTksIDQ0LCA0NSwgMjQ2LCAyNDYsIDQ0LCA0NSwgMjQ2LCAxODIsIDQ0LCA0NSwgCi0gICAgMjQ3LCA1MywgNDQsIDQ1LCAyNDYsIDgwLCA0NCwgNDUsIDI0NiwgMjA3LCA0NCwgNDUsIDI0NiwgMTQzLCA0NCwgNDUsIAotICAgIDI0NywgMTQsIDQ0LCA0NSwgMjQ2LCAxMTEsIDQ0LCA0NSwgMjQ2LCAyMzgsIDQ0LCA0NSwgMjQ2LCAxNzQsIDQ0LCA0NSwgCi0gICAgMjQ3LCA0NSwgNDQsIDQ1LCAyNDYsIDk1LCA0NCwgNDUsIDI0NiwgMjIyLCA0NCwgNDUsIDI0NiwgMTU4LCA0NCwgNDUsIAotICAgIDI0NywgMjksIDQ0LCA0NSwgMjQ2LCAxMjYsIDQ0LCA0NSwgMjQ2LCAyNTMsIDQ0LCA0NSwgMjQ2LCAxODksIDQ0LCA0NSwgCi0gICAgMjQ3LCA2MCwgNDQsIDQ1LCAyNDYsIDc2LCA0NCwgNDUsIDI0NiwgMjAzLCA0NCwgNDUsIDI0NiwgMTM5LCA0NCwgNDUsIAotICAgIDI0NywgMTAsIDQ0LCA0NSwgMjQ2LCAxMDcsIDQ0LCA0NSwgMjQ2LCAyMzQsIDQ0LCA0NSwgMjQ2LCAxNzAsIDQ0LCA0NSwgCi0gICAgMjQ3LCA0MSwgNDQsIDQ1LCAyNDYsIDkxLCA0NCwgNDUsIDI0NiwgMjE4LCA0NCwgNDUsIDI0NiwgMTU0LCA0NCwgNDUsIAotICAgIDI0NywgMjUsIDQ0LCA0NSwgMjQ2LCAxMjIsIDQ0LCA0NSwgMjQ2LCAyNDksIDQ0LCA0NSwgMjQ2LCAxODUsIDQ0LCA0NSwgCi0gICAgMjQ3LCA1NiwgNDQsIDQ1LCAyNDYsIDgzLCA0NCwgNDUsIDI0NiwgMjEwLCA0NCwgNDUsIDI0NiwgMTQ2LCA0NCwgNDUsIAotICAgIDI0NywgMTcsIDQ0LCA0NSwgMjQ2LCAxMTQsIDQ0LCA0NSwgMjQ2LCAyNDEsIDQ0LCA0NSwgMjQ2LCAxNzcsIDQ0LCA0NSwgCi0gICAgMjQ3LCA0OCwgNDQsIDQ1LCAyNDYsIDk4LCA0NCwgNDUsIDI0NiwgMjI1LCA0NCwgNDUsIDI0NiwgMTYxLCA0NCwgNDUsIAotICAgIDI0NywgMzIsIDQ0LCA0NSwgMjQ2LCAxMjksIDQ0LCA0NSwgMjQ3LCAwLCA0NCwgNDUsIDI0NiwgMTkyLCA0NCwgNDUsIDI0NywgCi0gICAgNjMsIDQ0LCA0NSwgMjQ2LCA3NCwgNDQsIDQ1LCAyNDYsIDIwMSwgNDQsIDQ1LCAyNDYsIDEzNywgNDQsIDQ1LCAyNDcsIDgsIAotICAgIDQ0LCA0NSwgMjQ2LCAxMDUsIDQ0LCA0NSwgMjQ2LCAyMzIsIDQ0LCA0NSwgMjQ2LCAxNjgsIDQ0LCA0NSwgMjQ3LCAzOSwgCi0gICAgNDQsIDQ1LCAyNDYsIDg5LCA0NCwgNDUsIDI0NiwgMjE2LCA0NCwgNDUsIDI0NiwgMTUyLCA0NCwgNDUsIDI0NywgMjMsIDQ0LCAKLSAgICA0NSwgMjQ2LCAxMjAsIDQ0LCA0NSwgMjQ2LCAyNDcsIDQ0LCA0NSwgMjQ2LCAxODMsIDQ0LCA0NSwgMjQ3LCA1NCwgNDQsIAotICAgIDQ1LCAyNDYsIDgxLCA0NCwgNDUsIDI0NiwgMjA4LCA0NCwgNDUsIDI0NiwgMTQ0LCA0NCwgNDUsIDI0NywgMTUsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMTIsIDQ0LCA0NSwgMjQ2LCAyMzksIDQ0LCA0NSwgMjQ2LCAxNzUsIDQ0LCA0NSwgMjQ3LCA0NiwgNDQsIDQ1LCAKLSAgICAyNDYsIDk2LCA0NCwgNDUsIDI0NiwgMjIzLCA0NCwgNDUsIDI0NiwgMTU5LCA0NCwgNDUsIDI0NywgMzAsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMjcsIDQ0LCA0NSwgMjQ2LCAyNTQsIDQ0LCA0NSwgMjQ2LCAxOTAsIDQ0LCA0NSwgMjQ3LCA2MSwgNDQsIDQ1LCAKLSAgICAyNDYsIDc3LCA0NCwgNDUsIDI0NiwgMjA0LCA0NCwgNDUsIDI0NiwgMTQwLCA0NCwgNDUsIDI0NywgMTEsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMDgsIDQ0LCA0NSwgMjQ2LCAyMzUsIDQ0LCA0NSwgMjQ2LCAxNzEsIDQ0LCA0NSwgMjQ3LCA0MiwgNDQsIDQ1LCAKLSAgICAyNDYsIDkyLCA0NCwgNDUsIDI0NiwgMjE5LCA0NCwgNDUsIDI0NiwgMTU1LCA0NCwgNDUsIDI0NywgMjYsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMjMsIDQ0LCA0NSwgMjQ2LCAyNTAsIDQ0LCA0NSwgMjQ2LCAxODYsIDQ0LCA0NSwgMjQ3LCA1NywgNDQsIDQ1LCAKLSAgICAyNDYsIDg0LCA0NCwgNDUsIDI0NiwgMjExLCA0NCwgNDUsIDI0NiwgMTQ3LCA0NCwgNDUsIDI0NywgMTgsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMTUsIDQ0LCA0NSwgMjQ2LCAyNDIsIDQ0LCA0NSwgMjQ2LCAxNzgsIDQ0LCA0NSwgMjQ3LCA0OSwgNDQsIDQ1LCAKLSAgICAyNDYsIDk5LCA0NCwgNDUsIDI0NiwgMjI2LCA0NCwgNDUsIDI0NiwgMTYyLCA0NCwgNDUsIDI0NywgMzMsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMzAsIDQ0LCA0NSwgMjQ3LCAxLCA0NCwgNDUsIDI0NiwgMTkzLCA0NCwgNDUsIDI0NywgNjQsIDk1LCAyMTYsIDI0LCAKLSAgICA3NiwgMiwgNzEsIDkwLCA5NSwgMjE2LCAyNCwgNzYsIDIsIDUxLCA3MSwgOTAsIDEzMiwgNTEsIDc2LCAyLCA3MSwgOTAsIAotICAgIDk1LCA1MSwgNzYsIDIsIDcxLCA5MCwgNDIsIDQ2LCA1MSwgNzYsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyNDMsIAotICAgIDIxMywgMTM0LCAxMzIsIDUxLCA3NiwgMjQzLCAyMTMsIDEzNCwgOTUsIDUxLCA3NiwgMjQzLCAyMTMsIDEzNCwgMjQ2LCA1OCwgCi0gICAgNzYsIDIsIDE5OSwgOTAsIDIxNSwgMTI0LCA3NiwgMiwgMTk5LCA5MCwgMjE1LCAxMjQsIDIxNiwgMTY5LCA2OCwgMjQ2LCAKLSAgICA1OCwgMjE2LCAxNjksIDY4LCAxMzIsIDUxLCAyNDgsIDEwMiwgNjgsIDk1LCA1MSwgMjQ4LCAxMDIsIDY4LCAxMzIsIDIxNiwgCi0gICAgMTY5LCAyNDgsIDEwMiwgNjgsIDk1LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDY4LCA5NSwgMjE2LCAyNCwgMjE2LCAxNjksIAotICAgIDI0OCwgMTAyLCA2OCwgOTUsIDc2LCAyLCAyNDYsIDcyLCAyMTksIDc5LCAyMTUsIDEyNCwgNzYsIDIxMSwgMjExLCAxMzQsIAotICAgIDI0NiwgNTgsIDc2LCAyMTEsIDIxMSwgMTM0LCA5NSwgNzYsIDIsIDIxOCwgMjgsIDIsIDcxLCA5MCwgOTUsIDc2LCAyLCAKLSAgICAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCA5NSwgMjE2LCAyNCwgNzYsIDIsIDIxOCwgMjcsIDk1LCAyMTYsIDI0LCA3NiwgMiwgCi0gICAgMjE4LCAyOCwgMiwgNzEsIDkwLCA5NSwgMjE2LCAyNCwgNzYsIDIsIDIxOCwgMjgsIDIsIDUxLCA3MSwgOTAsIDEzMiwgMjUzLCAKLSAgICAxNjYsIDk1LCAyNTMsIDE2NiwgMTMyLCA1MSwgMjUzLCAxNjYsIDk1LCA1MSwgMjUzLCAxNjYsIDEzMiwgNzYsIDIxMSwgCi0gICAgMjExLCA4MywgMjQ3LCAyMDAsIDk1LCA3NiwgMjExLCAyMTEsIDgzLCAyNDcsIDIwMCwgMTMyLCA3NiwgMjQzLCAyMTMsIAotICAgIDI1MiwgNjAsIDIxMSwgMjExLCA4MywgMjQ3LCAyMDAsIDk1LCA3NiwgMjQzLCAyMTMsIDI1MiwgNjAsIDIxMSwgMjExLCA4MywgCi0gICAgMjQ3LCAyMDAsIDIyOCwgMTY3LCAyMTMsIDI1MCwgMjQsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDIyOCwgMTY3LCAyNDUsIAotICAgIDE3NiwgMjQsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDIsIDEwMSwgMjI4LCAKLSAgICAxNjcsIDI0NSwgMTc2LCA3NiwgMiwgMTAxLCAyMTksIDIxNSwgMjQ1LCAxNzYsIDc2LCAyLCAxMDEsIDIxOSwgMjE1LCAyMTMsIAotICAgIDI1MCwgNzYsIDIsIDEwMSwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjQsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjgsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNzYsIDI0LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDc2LCAKLSAgICAyNCwgMjE5LCAyMTUsIDIxMywgMjUwLCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCA3NiwgMjQsIDIyOCwgMTY3LCAyMTMsIAotICAgIDI1MCwgNjgsIDIyMywgMTI1LCAyNDcsIDIwNywgMjQ5LCA2NSwgMjQ0LCAxNDMsIDI0NywgMjA2LCAyNDQsIDE0MywgMjQ3LCAKLSAgICAyMDcsIDI0OSwgNjUsIDIyMywgMTI1LCAyNDcsIDIwNiwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgMjQ5LCA2NSwgMjI4LCAKLSAgICAxNjcsIDI0NSwgMTc2LCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA3NiwgMjQ5LCA2NSwgMjE5LCAyMTUsIDI0NSwgMTc2LCAKLSAgICA2OCwgMjQ0LCAxNDMsIDI0NywgMjA3LCAyNDksIDY1LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyMjMsIDEyNSwgMjQ3LCAKLSAgICAyMDcsIDI0OSwgNjUsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIAotICAgIDIyOCwgMTY3LCAyMTMsIDI1MCwgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDI0OSwgNjUsIDIyOCwgMTY3LCAyNDUsIAotICAgIDE3NiwgNjgsIDIxNCwgMjAsIDc2LCAyMjUsIDE0MSwgMjQ3LCAxNDcsIDIyMywgMTQ4LCA3NiwgMjI1LCAxNDEsIDk1LCAKLSAgICAyMTcsIDE0MSwgMjQ5LCAzMiwgMjE1LCAxMjMsIDc2LCAyMjUsIDE0MSwgOTUsIDIxNywgMTQxLCAyNDksIDMyLCAyNDYsIAotICAgIDU3LCA3NiwgMjI1LCAxNDEsIDI0NiwgNTgsIDIxNywgMTQxLCAyNDksIDMyLCAyMzMsIDYxLCA3NiwgMjI1LCAxNDEsIDI0NiwgCi0gICAgNTgsIDIxNywgMTQxLCAyNDksIDMyLCAyMjMsIDEzOCwgMjIzLCAxNDEsIDI1MywgMTk2LCAyNDksIDE5NSwgNjgsIDIzMywgCi0gICAgNjQsIDI1MywgMTk2LCAyNTMsIDI1NSwgNjgsIDIxNiwgMjI3LCAyNTMsIDE5NiwgMjUzLCAyNTUsIDY4LCAyNTEsIDEwMSwgCi0gICAgMjUzLCAxOTYsIDI1MywgMjU1LCA2OCwgMjE2LCAyMjcsIDI1MywgMTk2LCAyNDksIDE5NSwgNzYsIDIsIDIzMCwgMjUwLCAKLSAgICAyMTYsIDIyNywgMjUzLCAxOTYsIDI1MywgMjU1LCA3NiwgMiwgMjI1LCAxNTYsIDIzMiwgMTYzLCA0NiwgMjIxLCA3MiwgCi0gICAgMjQ5LCAxOTUsIDY4LCAyMzIsIDE2MywgNDIsIDIyMSwgNzIsIDI1MywgMjU1LCA2OCwgMjUzLCAyNTUsIDI0OSwgMTkzLCAKLSAgICAyNDksIDIyOSwgNjgsIDI0OSwgMTk1LCAyNDksIDE5MywgMjQ5LCAyMjksIDY4LCA5NSwgNzYsIDc4LCAyMjAsIDE3NSwgCi0gICAgMTMyLCA2OCwgMTMyLCA3NiwgNzgsIDIyMCwgMTc1LCA5NSwgNjgsIDIyMCwgMTc1LCA5NSwgNzYsIDc4LCAxMzIsIDY4LCAKLSAgICA5NSwgNzYsIDIsIDk0LCA1NSwgMTMyLCA3NiwgMiwgOTQsIDU1LCA5NSwgNzYsIDIxNywgOTMsIDIxMywgMTY2LCA0MiwgNDYsIAotICAgIDc2LCAyMTcsIDkzLCAzLCAyNDksIDIyOCwgMjE1LCAxMjQsIDIxNiwgMjQsIDc2LCAyNDMsIDIxMywgMywgMjQ5LCAyMjgsIAotICAgIDQyLCAyMDYsIDExNCwgNDYsIDIwNiwgMTE5LCAyNDEsIDIzNywgNDIsIDIwNiwgMTE5LCA0NiwgMjA2LCAxMTQsIDI0MSwgCi0gICAgMjM3LCAxMTQsIDIwNiwgNDYsIDExOSwgMjA2LCA0MiwgMjQxLCAyMzcsIDExNCwgMjA2LCA0MiwgMTE5LCAyMDYsIDQ2LCAKLSAgICAyNDEsIDIzNywgNDIsIDIwNiwgMTE0LCA0NiwgMjA2LCAxMTQsIDI0MSwgMjM3LCAxMTQsIDIwNiwgNDYsIDExOSwgMjA2LCAKLSAgICA0NiwgMjQxLCAyMzcsIDQyLCAyMDYsIDExOSwgNDYsIDIwNiwgMTE5LCAyNDEsIDIzNywgMTE0LCAyMDYsIDQyLCAxMTksIAotICAgIDIwNiwgNDIsIDI0MSwgMjM3LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgMjExLCAyMTEsIDEzNCwgOTUsIDI0MSwgCi0gICAgMjM4LCAyLCAyMDYsIDExNCwgMjExLCAyMTEsIDEzNCwgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyMTEsIAotICAgIDIxMSwgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjExLCAyMTEsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgCi0gICAgMjA2LCAxMTksIDIxMSwgMjExLCAxMzQsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDIxMSwgMjExLCAxMzQsIDIxNSwgCi0gICAgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjExLCAyMTEsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIAotICAgIDIxMSwgMjExLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCAyNDMsIDIxMywgMTM0LCA5NSwgMjQxLCAyMzgsIAotICAgIDIsIDIwNiwgMTE0LCAyNDMsIDIxMywgMTM0LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyNDMsIDIxMywgMTM0LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIAotICAgIDExOSwgMjQzLCAyMTMsIDEzNCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDExOSwgMjQzLCAyMTMsIDEzNCwgMjE1LCAxMjQsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyNDMsIDIxMywgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjQzLCAKLSAgICAyMTMsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIAotICAgIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCAKLSAgICAyMjMsIDE0OCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAKLSAgICAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgCi0gICAgMTQ4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAyMTUsIDEzNCwgMTMyLCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA2MCwgOTUsIDI0MSwgMjM4LCAKLSAgICAyLCAyMDYsIDExNCwgNzgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMzQsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAKLSAgICAxMTksIDc4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgCi0gICAgMTg0LCAyNDgsIDEwMSwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI1MSwgMjIwLCAxODQsIDI0OCwgMTAxLCA5NSwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgMTg0LCAyNDgsIDEwMSwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDExOSwgMjUxLCAKLSAgICAyMjAsIDE4NCwgMjQ4LCAxMDEsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDI0NiwgNTgsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgMTQ4LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDIxNSwgCi0gICAgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDE0OCwgNDYsIDUxLCA3NiwgMiwgMjIzLCA4NSwgMjQxLCAyMTksIDI0NSwgCi0gICAgNjEsIDUsIDc4LCA5NSwgNjgsIDIxNywgNDMsIDIyNywgMzQsIDc4LCA5NSwgNjgsIDEzMiwgNzYsIDc4LCAyMTcsIDQzLCAKLSAgICAyMjcsIDMzLCA5NSwgNzYsIDc4LCAyMTcsIDQzLCAyMjcsIDMzLCA5NSwgNzYsIDc4LCAyNTQsIDU3LCAxMjMsIDEwOCwgCi0gICAgMjMzLCAzOSwgNzgsIDEzMiwgNjgsIDEzMiwgNzYsIDIxNywgOTMsIDIzMywgMzgsIDI0MiwgMTA3LCA3OCwgOTUsIDY4LCAKLSAgICAyMTksIDksIDc4LCA5NSwgNjgsIDEzMiwgNzYsIDIxNywgOTMsIDIxOSwgOCwgMjE4LCAyMjIsIDc4LCAxMzIsIDY4LCA0MiwgCi0gICAgMjQ0LCA2MCwgMjE4LCAyNywgNDYsIDI0NCwgNjAsIDIxOCwgMjcsIDExNCwgMjQ0LCA2MCwgMjE4LCAyNywgMTE5LCAyNDQsIAotICAgIDYwLCAyMTgsIDI3LCAyMTYsIDE2OSwgNzEsIDI1MiwgNjAsIDI0OCwgMTEsIDIxMiwgMTUzLCAxNzQsIDIxOSwgMTc0LCAKLSAgICAyMTIsIDE1MywgMTc0LCAyMTYsIDE1LCAyNDksIDE2NCwgNDIsIDY3LCAyNDksIDQwLCAxMjUsIDQ2LCA2NywgMjQ5LCA0MCwgCi0gICAgMTI1LCA0MiwgNjcsIDIyNiwgMTMxLCA0NiwgNjcsIDIyNiwgMTMxLCAyMTIsIDE1MywgMTc0LCA0MiwgMjM2LCAxMCwgMTI1LCAKLSAgICAyMTIsIDE1MywgMTc0LCA0NiwgMjM2LCAxMCwgMTI1LCAyMTIsIDE1MywgMTc0LCA0MiwgMjUxLCAxNjUsIDEyNSwgMjEyLCAKLSAgICAxNTMsIDE3NCwgNDYsIDI1MSwgMTY1LCAxMjUsIDQyLCA0MSwgMjUxLCA4NSwgMiwgMjE1LCAxNTMsIDQ2LCA0MSwgMjUxLCAKLSAgICA4NSwgMiwgMjE1LCAxNTMsIDQyLCA0MSwgMjUxLCA4NSwgMiwgMjE3LCA2OSwgMjM1LCAyNTIsIDIxNiwgMjI3LCAyNDksIAotICAgIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIsIDIxNywgNjksIDIzNSwgMjUyLCAyNTEsIDEwMSwgMjQ5LCA5OSwgNDIsIDQxLCAKLSAgICAyNTEsIDg1LCAyLCAyMTcsIDY5LCAyMzUsIDI1MiwgMjUxLCAxMDEsIDI0OSwgOTksIDQ2LCA0MSwgMjUxLCA4NSwgMiwgCi0gICAgMjE3LCA2OSwgMjM1LCAyNTIsIDIxNiwgMjI3LCAyNDksIDk5LCA0MiwgMjU0LCAxOSwgMjUxLCA4NSwgMiwgMjQ3LCA3NCwgCi0gICAgNDYsIDI1NCwgMTksIDI1MSwgODUsIDIsIDI0NywgNzQsIDQyLCAyNTMsIDE5NiwgMjMzLCAzOSwgMTI1LCA0NiwgMjUzLCAKLSAgICAxOTYsIDI0MiwgMTA3LCAxMjUsIDUxLCA0MiwgMjUzLCAxOTYsIDI0MiwgMTA3LCAxMjUsIDUxLCA0NiwgMjUzLCAxOTYsIAotICAgIDIzMywgMzksIDEyNSwgNDIsIDgzLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgNDYsIDgzLCAyMTYsIDIxOSwgMjIwLCAKLSAgICAyMzMsIDEyNSwgMjQ2LCA3MiwgMjQ0LCAxMDQsIDcxLCAyMTIsIDI4LCAyMzIsIDI0MiwgMjMxLCAxNTMsIDI1NCwgMTksIAotICAgIDIyNywgMzUsIDIzMywgNzAsIDQ2LCAyNTQsIDE5LCAyMTQsIDI0NCwgMiwgMjE5LCAxNjYsIDIzMSwgMTUzLCA0NiwgMjU0LCAKLSAgICAxOSwgMiwgMjQ3LCA3NCwgMjU0LCAxOSwgMiwgMjIzLCA0LCAyMzUsIDIxMiwgMjU0LCAxNjQsIDI1NCwgMTgsIDIxOSwgCi0gICAgMTg3LCAyNTQsIDE5LCAyMjcsIDM1LCAyMzMsIDcwLCAyMTksIDE4NywgMjU0LCAxOSwgMjI3LCAzNSwgMjE1LCAxMzQsIAotICAgIDIxNiwgNTgsIDI1NCwgMTgsIDIyMywgMjAyLCAyNTQsIDE4LCAyNTQsIDE5LCAyLCAyMTUsIDE1MywgMjIzLCAyMDIsIDI1NCwgCi0gICAgMTksIDIsIDIxNSwgMTUzLCAyMjcsIDExMiwgMjU0LCAxOSwgMjI3LCAzNSwgMjE1LCAxMzQsIDIyNywgMTEyLCAyNTQsIDE5LCAKLSAgICAyMjcsIDM1LCAyNDYsIDYwLCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgCi0gICAgMjUyLCA3NiwgMjI1LCAxNDEsIDExNCwgMjQsIDIyMywgMTQ4LCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAKLSAgICAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDExNCwgMjQsIDIzMywgNzAsIDIzMSwgMTUzLCAyNTQsIAotICAgIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgMTE5LCAyNCwgMjIzLCAKLSAgICAxNDgsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIAotICAgIDE0MSwgMTE5LCAyNCwgMjMzLCA3MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAKLSAgICAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCA0NiwgMjQsIDIxNSwgMTM0LCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgCi0gICAgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDQyLCAyNCwgMjE1LCAxMzQsIDIzMSwgMTUzLCAKLSAgICAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgNDYsIDI0LCAKLSAgICAyNDYsIDYwLCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgCi0gICAgMjI1LCAxNDEsIDQyLCAyNCwgMjQ2LCA2MCwgMjIzLCAyMDIsIDI0NSwgMTEwLCAyMjEsIDQ4LCAyNDUsIDExMCwgMjIxLCAKLSAgICA0OSwgMiwgMjI2LCAyNDcsIDI0NSwgMTEwLCAyMjEsIDQ5LCAyLCAzLCAyNDksIDIyOSwgNDksIDI0NSwgMTEwLCAyMjEsIAotICAgIDQ5LCAyLCA0NiwgNzYsIDQ5LCAyNDUsIDExMCwgMjIxLCA0OSwgMiwgNDIsIDc2LCA0OSwgMjQ5LCAyMjksIDIsIDE5OSwgCi0gICAgMTM0LCAzNiwgNzEsIDEzNCwgMzYsIDIyNiwgMTM1LCAzNiwgMjIzLCAyMDMsIDIxOSwgMjMxLCAzNiwgMjI2LCA0NywgMjQ5LCAKLSAgICAyMjksIDI0NywgMTI1LCAyNTEsIDcsIDE5OSwgMjUyLCA2MCwgMjQsIDIxNiwgMjI3LCAxNTEsIDI0NywgMTI1LCAyNTEsIDcsIAotICAgIDcxLCAxMzQsIDI0OSwgMjI5LCAyLCAyMTgsIDIyNCwgMjEzLCAxNjYsIDM2LCAyNTMsIDI1NCwgMjQ3LCAxMjEsIDUyLCAKLSAgICAxMTQsIDc2LCAyMTcsIDkzLCAyNDksIDIyOCwgMzYsIDY3LCAyNTEsIDQyLCAzNiwgMjUxLCA0MiwgMzYsIDIzMywgMzgsIAotICAgIDM2LCAyNDIsIDEwNiwgMjQ5LCAyMjksIDIsIDMsIDI0OSwgMjI5LCAyMTEsIDIxMSwgMjE3LCAxNDksIDIyMywgMTQ4LCAKLSAgICAyNDksIDIyOSwgMiwgMTE3LCAxOTksIDIxOSwgMzMsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjIzLCAxNDgsIDkxLCAyMjMsIAotICAgIDEyNSwgMjQ3LCAyMDcsIDIyMCwgMjMsIDkxLCAyNDQsIDE0MywgMjQ3LCAyMDcsIDIyMCwgMjMsIDkxLCAyNTMsIDEzMiwgCi0gICAgOTEsIDMsIDI0OSwgMjI4LCA5MSwgMjE5LCAxNjYsIDExNywgMjM1LCA2OCwgMjE5LCAxNjQsIDIxNiwgMTg0LCAyLCA2MiwgCi0gICAgNDksIDIxNiwgMTg0LCAyLCAyMTUsIDE1MywgMjIzLCA0LCAyMzUsIDI1MiwgMjE2LCAxODMsIDIxNiwgMTg0LCAyLCAyMjEsIAotICAgIDU1LCAyNTMsIDEyMywgMjUxLCAxMDAsIDQ2LCAyMTYsIDE4NCwgNzgsIDQyLCAyMTYsIDE4MywgNDIsIDIxNiwgMTg0LCAKLSAgICAyNTEsIDIwNywgNzEsIDEzNCwgNzEsIDI1MiwgNjAsIDI1MSwgMjA3LCA0NiwgMjE2LCAxODMsIDI1MSwgOTEsIDIsIDQyLCAKLSAgICAxNTEsIDI1MSwgMTQ0LCAyNTEsIDkxLCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgODMsIDI1MSwgOTAsIDI5LCAyLCA0MiwgCi0gICAgMTUxLCAyNTEsIDE0NCwgMjksIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCA2NywgMjQwLCAyMjMsIDgzLCAyNDAsIDIyMywgNDIsIAotICAgIDIxMywgMjI5LCAyNDQsIDEwNCwgNDYsIDIxMywgMjI5LCAyNDQsIDEwNCwgNDIsIDUxLCAyMTMsIDIyOSwgMjQ0LCAxMDQsIAotICAgIDQ2LCA1MSwgMjEzLCAyMjksIDI0NCwgMTA0LCAyMzUsIDI0NCwgMjM1LCAyMzEsIDIxNywgNjYsIDExMCwgMjM1LCAyMzEsIAotICAgIDIzNSwgMjMyLCAyMjksIDE4MywgMiwgNzEsIDEzNCwgMjQ2LCA2NiwgMjMwLCAxNTcsIDQxLCAyLCAyNDksIDEyMCwgMjI2LCAKLSAgICAyNTEsIDIzNSwgMjQyLCAyNTMsIDE1MiwgMjIwLCAxNDQsIDIyNSwgNjMsIDI0NSwgNjEsIDUsIDI0LCAyMjAsIDI1LCAyMjYsIAotICAgIDEzNSwgMjQ1LCA2MSwgNSwgMjQsIDIyMCwgMjUsIDIyNiwgMTM2LCAyLCAyMTcsIDQzLCA0OSwgMjQwLCA5NywgMjExLCAKLSAgICAyMTEsIDI0LCAyMjAsIDI1LCAyMjYsIDEzNSwgMjQyLCAxNTksIDIxOSwgOTQsIDIxNywgMTM4LCAyNDYsIDU5LCAyMTYsIAotICAgIDE4NCwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIDI0NiwgNTksIDIxNiwgMTg0LCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgODMsIAotICAgIDI0NywgMjAxLCAyLCAxMTksIDY4LCA4MywgMjMyLCAxNTksIDY3LCAyNDksIDIyOSwgMiwgMTE5LCA2OCwgODMsIDI0OSwgCi0gICAgMjI5LCAyLCAxMTksIDY4LCAyNDUsIDQ4LCA2NywgMjE5LCAxNjYsIDI0NSwgNDgsIDgzLCAyMTksIDE2NiwgMjQ1LCA0OCwgCi0gICAgNjcsIDI0NywgMjAwLCAyNDUsIDQ4LCA4MywgMjQ3LCAyMDAsIDI0NSwgNDgsIDY3LCAyNDksIDIyOCwgMjQ1LCA0OCwgODMsIAotICAgIDI0OSwgMjI4LCAyMjMsIDQzLCAyMjMsIDIwMywgMjE5LCAyMzIsIDIyNywgMzMsIDIxOSwgMjMyLCAyLCAyMjYsIDI0NywgCi0gICAgMjIzLCAyMDMsIDIxOSwgMjMyLCAyLCAxOTksIDkwLCAyNTEsIDE3MiwgMjE5LCAyMzEsIDI1MSwgMTcyLCAyMjMsIDIwMywgCi0gICAgMjE5LCAyMzEsIDUxLCAyMjUsIDE1NiwgMjE2LCAxNjksIDIyNSwgMTU2LCAyMzMsIDY2LCAyNDksIDMzLCAyNTQsIDE5LCAKLSAgICAxMjUsIDIyMywgMTQ0LCAyNDksIDMzLCAyNTQsIDE5LCAxMjUsIDIxNywgMzEsIDIzMCwgMjQ4LCAyMzAsIDk3LCAzNiwgNjIsIAotICAgIDIyNywgMzMsIDIzMCwgOTcsIDM2LCA5NCwgMjI3LCAzMywgMjMwLCA5NywgMzYsIDI5LCAyMjcsIDMzLCAyMzAsIDk3LCAKLSAgICAyMTUsIDE0NywgMjI3LCAzNCwgMiwgMjQ3LCA3NCwgMjMwLCA5NywgMjE1LCAxNDcsIDIyNywgMzQsIDIsIDIyNSwgMTU2LCAKLSAgICAyMzAsIDk3LCA0MSwgMjM1LCAxOTYsIDIyNywgMzMsIDIzMCwgOTcsIDQxLCAyMTUsIDE0NywgMjI3LCAzMywgMTE3LCAyMzIsIAotICAgIDE5OSwgMjQsIDIyNywgMzMsIDExNywgMjMyLCAxOTksIDE2NywgMjI3LCAzMywgMjMwLCA5NywgMjksIDIyNywgMzMsIDIzMCwgCi0gICAgMjI0LCAxMTcsIDIxOCwgMjQ0LCAyMTgsIDI0MiwgMiwgMjM1LCAyMDgsIDIyNCwgMTY5LCAyMzUsIDIwOSwgMjI3LCAzMywgCi0gICAgMjQ0LCA2OCwgMjI2LCAxMjcsIDIzNSwgMjA4LCAyMzUsIDIwOSwgMiwgNTEsIDkwLCAyMzUsIDIwOSwgMjUzLCA4OSwgMiwgCi0gICAgMjIwLCAyMywgMjQ5LCAyMjUsIDI0MywgMTk3LCAyNTMsIDI1NSwgMjM1LCAyMDYsIDIzMiwgMjQzLCAyMzUsIDIwNywgMiwgCi0gICAgMjI0LCA4LCAyMjYsIDExMCwgMjUzLCAxNzMsIDIyNSwgMTM1LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIsIDIyMSwgNzIsIAotICAgIDIyNiwgMTEwLCAyNTMsIDE3MywgMjI1LCAxMzUsIDIzMiwgMjQzLCAyMzUsIDIwNywgMjI4LCAxNjMsIDIzNSwgMjQ2LCAKLSAgICAyMTcsIDE0OSwgMjI1LCAxMzUsIDIzNSwgMjA5LCAyNTMsIDE3MywgMTE4LCAyMjUsIDE0NSwgMjI3LCAzMywgMjI0LCAxNjMsIAotICAgIDIzNSwgMjA5LCAyMjcsIDMzLCAyMzUsIDIwOSwgMiwgMTMyLCA3NiwgMiwgMTAxLCAyMzUsIDIwOSwgMiwgMjksIDUyLCAKLSAgICAyMzUsIDIwOSwgMiwgMjM1LCAxOTUsIDIzNSwgMjA5LCAyLCAyMTUsIDE0NiwgMjM1LCAyMDksIDIsIDIyNiwgMjQ3LCAyMzUsIAotICAgIDIwOSwgMiwgMjE1LCAxNTMsIDIzNSwgNjksIDIzMywgMTA4LCA0MiwgMjE2LCAxODQsIDIyNywgMzMsIDIxMiwgMTUzLCAKLSAgICAxNzQsIDIyMiwgMTE5LCAyNDksIDE0OCwgMjEyLCAxNTMsIDE3NCwgMjIyLCAxMTksIDIyNSwgMTg4LCAyMTIsIDE1MywgCi0gICAgMTc0LCAyMjIsIDExOSwgMjI1LCA2MCwgOTQsIDUsIDIsIDMsIDI0OSwgMjI5LCA0OSwgOTQsIDUsIDIsIDI0OSwgMjI0LCAKLSAgICAyNTQsIDE3NSwgNDksIDk0LCA1LCAyLCAyMTcsIDQzLCA0OSwgOTQsIDUsIDIsIDYyLCA1NSwgOTQsIDUsIDIsIDIxNywgNDMsIAotICAgIDU1LCA5NCwgNSwgMiwgMjE5LCAxMCwgMTA5LCA5NCwgNSwgMiwgODMsIDIxNiwgMTgzLCAyMzAsIDI1MSwgNSwgMiwgMjQ5LCAKLSAgICAxNTgsIDQ5LCAyMzAsIDI1MSwgNSwgMiwgNjIsIDU1LCAyMzAsIDI1MSwgNSwgMiwgMjQ0LCAxNDMsIDI0NywgNzIsIDIzMCwgCi0gICAgMjUxLCA1LCAyLCAyMjMsIDEyNSwgMjQ3LCA3MiwgOTQsIDUsIDIzNSwgMjUyLCA0MiwgMTUxLCAyNDksIDIyOCwgOTQsIDUsIAotICAgIDIzNSwgMjUyLCA0NiwgMTUxLCAyNDksIDIyOCwgMjE0LCAyMzEsIDE2NywgMjQ5LCA3MSwgMjI1LCA2MywgMjMwLCAxNTQsIAotICAgIDUsIDIsIDYyLCA0OSwgMjMwLCAxNTQsIDUsIDIsIDIxNSwgMTUzLCAyMjEsIDY5LCAyMjUsIDY0LCAyLCAyNTEsIDEwMSwgCi0gICAgMjQ5LCAxOTIsIDIyMCwgNSwgMjI1LCA2MywgMjMwLCAxNTQsIDUsIDIzNSwgMjUyLCA0MiwgMTUxLCAyNDksIDIyOCwgMjMwLCAKLSAgICAxNTQsIDUsIDIzNSwgMjUyLCA0NiwgMTUxLCAyNDksIDIyOCwgMzYsIDIzMCwgMTU0LCA1LCAyLCAyNDksIDIyNCwgMjU0LCAKLSAgICAxNzQsIDIzMCwgMTU0LCA1LCAyMzUsIDI1MiwgNTEsIDI0OSwgMjI4LCAzNiwgMjQ3LCAxMjEsIDUyLCA5NCwgNSwgMjM1LCAKLSAgICAyNTIsIDIxNiwgMTgzLCAyMzAsIDI1MSwgNSwgMjM1LCAyNTIsIDIxNiwgMTgzLCAyMzAsIDE1NCwgNSwgMjM1LCAyNTIsIAotICAgIDIxNiwgMTgzLCAyMzUsIDIwMywgMjI1LCA2MywgMjIzLCAxMzksIDIzNSwgMjAzLCAyMjUsIDYzLCAyMTIsIDE1MywgMTc0LCAKLSAgICAyMjMsIDI0MCwgMjQ5LCAxNDgsIDI1NCwgNDMsIDE2NywgMjQ5LCAxMDQsIDIzNSwgMTk2LCAyLCAyNDcsIDc0LCAyMTUsIAotICAgIDE0NywgMiwgMjMwLCAyNTEsIDUyLCAyMTUsIDE0NywgMiwgMjI2LCAyNDcsIDIzNSwgMTk2LCAyLCAyMjYsIDI0NywgMjM1LCAKLSAgICAxOTYsIDIsIDIzMiwgMTk5LCAyNTQsIDI3LCAyMTUsIDE0NywgMiwgMjMyLCAxOTksIDIyNywgMjQsIDIxNSwgMTQ3LCA3OCwgCi0gICAgMjM1LCAxOTUsIDIzNSwgMTk2LCA3OCwgMjE1LCAxNDYsIDIxNSwgMTQ3LCA3OCwgMjUyLCA2MCwgNzgsIDIzNSwgMTk1LCAKLSAgICAyMzUsIDE5NiwgNzgsIDI1MiwgNjAsIDc4LCAyMTUsIDE0NiwgMjE1LCAxNDcsIDI1MSwgMjA3LCAyNCwgMjM1LCA2OCwgMiwgCi0gICAgMjE1LCAxNDYsIDIzNSwgMTk2LCAyNTEsIDIwNywgMjQsIDIzNSwgNjgsIDIsIDIzNSwgMTk1LCAyNDksIDE5MywgMjE1LCAKLSAgICAxNDcsIDIsIDIyMSwgNTQsIDI0OSwgMTkzLCAyMzUsIDE5NiwgMiwgMjIxLCA1NCwgNTEsIDQxLCAyMzUsIDE5NSwgNTEsIAotICAgIDQxLCAyMTUsIDE0NiwgMjQ5LCAxOTMsIDIxNSwgMTQ3LCAyLCAyMjEsIDU1LCAyNCwgMjIwLCA1LCAyMjUsIDYzLCAyMzIsIAotICAgIDE5OSwgMjQsIDIsIDYyLCA0OSwgMjMyLCAxOTksIDE2NywgMiwgNjIsIDQ5LCA1MSwgMjMyLCAxOTksIDI1NCwgMjcsIDUxLCAKLSAgICAyMzIsIDE5OSwgMjI3LCAyNCwgMTE3LCAyMzUsIDE5NywgMjMyLCAxOTksIDI1NCwgMjcsIDExNywgMjM1LCAxOTcsIDIzMiwgCi0gICAgMTk5LCAyMjcsIDI0LCAyMjAsIDEzLCAyMzMsIDEwOCwgMjI3LCAyNCwgMjIwLCAxMywgMjMzLCAxMDgsIDI1NCwgMjcsIAotICAgIDIzMiwgMTk5LCAxNjcsIDIyNiwgMjQ1LCAyMzIsIDE5OSwgMjU0LCAyNywgMjMyLCAxOTksIDI0LCAyLCAyMzEsIDM3LCAKLSAgICAyMTksIDc5LCAyMzIsIDE5OSwgMTY3LCAyLCAyMzEsIDM3LCAyMTksIDc5LCAyMzIsIDE5OSwgMjQsIDIsIDE5OSwgMjQ4LCAKLSAgICAxMDEsIDIzMiwgMTk5LCAxNjcsIDIsIDE5OSwgMjQ4LCAxMDEsIDIzMiwgMTk5LCAyNCwgMiwgNTEsIDIyNiwgMjQ3LCAyMzIsIAotICAgIDE5OSwgMjQsIDIsIDIxNSwgMTUzLCAyMzIsIDE5OSwgMjQsIDIsIDUxLCAyMTUsIDE1MywgMywgMjE0LCAyMjgsIDIsIDIxNSwgCi0gICAgMTUzLCAyMzIsIDE5OSwgMTY3LCAyLCA1MSwgMjI2LCAyNDcsIDIzMiwgMTk5LCAxNjcsIDIsIDUxLCAyMTUsIDE1MywgMjEyLCAKLSAgICAxNTMsIDE3NCwgMjQ3LCA4MywgMjUzLCAyNDYsIDIxMiwgMTUzLCAxNzQsIDIyNCwgNDAsIDI1MywgMjQ2LCAyNDUsIDYxLCAKLSAgICA1LCAyLCA2MiwgNTUsIDI0MCwgOTcsIDIsIDYyLCA0OSwgMjE2LCAxNjksIDE5OSwgMjUyLCA2MCwgMiwgNTEsIDcxLCA5MCwgCi0gICAgMjE2LCAxNjksIDE5OSwgMjUyLCA2MCwgMiwgMjE2LCAxNjksIDcxLCA5MCwgMjE3LCA0MywgMjI3LCAzNCwgMiwgNjIsIDQ5LCAKLSAgICAyMTcsIDQzLCAyMjcsIDM0LCAyLCAyMjMsIDEyNSwgMjQ3LCA3MiwgMjIwLCA4OCwgMjMwLCAyNTEsIDIyMCwgODcsIDI0OSwgCi0gICAgMTM5LCAyLCA2MiwgNDksIDI0NSwgNjEsIDIsIDI1MywgMTMyLCAyNTQsIDU3LCAxMjMsIDIxMSwgMjExLCAyLCAyNDksIAotICAgIDIyNCwgMjU0LCAxNzQsIDI1MywgMjE4LCAxMjMsIDE2NywgMTIzLCAxMDgsIDI0NSwgNjEsIDUsIDc4LCA5NCwgNTIsIDk0LCAKLSAgICA1LCA3OCwgMjQ1LCA2MSwgNTIsIDI0NSwgNjEsIDUsIDc4LCAyMTcsIDQzLCAyMjcsIDMzLCA1MSwgMjQ5LCAxNjUsIDI0NSwgCi0gICAgNjIsIDExNywgMjQ5LCAxMzQsIDI0NSwgNjEsIDIyMCwgMTAyLCAxMzMsIDI0OSwgMTM0LCAyNDUsIDYxLCAyMjAsIDEwMiwgCi0gICAgMjQ1LCA2MSwgNSwgMiwgMTE3LCAxNzYsIDc4LCAyNCwgMTE3LCAxNzYsIDU1LCAyNDUsIDU3LCAyLCAyNDMsIDIzNywgMTc2LCAKLSAgICA0OSwgMjMzLCAzOSwgMiwgMjQ5LCAyMjksIDIzNSwgMjEyLCAyNDIsIDEwNywgMiwgMjQ5LCAyMjksIDIzNSwgMjEyLCAyMzMsIAotICAgIDM5LCAyLCAyMjQsIDE1OCwgMTUyLCA0OSwgMjQyLCAxMDcsIDIsIDIyNCwgMTU4LCAxNTIsIDQ5LCAyMzMsIDM5LCAxNjcsIAotICAgIDIyMCwgMjUsIDEyMywgMTA4LCAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDEwOCwgMjMzLCAzOSwgMTY3LCAyMjAsIAotICAgIDI1LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgMjM1LCAyMTIsIDI0MiwgMTA3LCAxNjcsIDIyMCwgMjUsIDEyMywgMjExLCAKLSAgICAyMTEsIDIsIDYyLCAyMzUsIDIxMiwgMjMzLCAzOSwgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNDksIAotICAgIDI0MiwgMTA3LCAxNjcsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDIsIDYyLCA0OSwgMjMzLCAzOSwgMTY3LCAyMjAsIDI1LCAKLSAgICAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNzgsIDIyMywgMTQ4LCAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgCi0gICAgMjExLCAyLCA2MiwgNzgsIDIzMywgNzAsIDIzMywgMzksIDE2NywgMjUzLCAyMTksIDI0MiwgMTA3LCAxNjcsIDI1MywgMjE5LCAKLSAgICAyMzMsIDM5LCAyNCwgMjIwLCA3OSwgMjI4LCAxNjMsIDEyMywgMTA4LCAyNDIsIDEwNywgMjQsIDIyMCwgNzksIDIyOCwgCi0gICAgMTYzLCAxMjMsIDEwOCwgMjMzLCAzOSwgMjQsIDIyOCwgMTYzLCAyNTMsIDIxOSwgMjQyLCAxMDcsIDI0LCAyMjgsIDE2MywgCi0gICAgMjUzLCAyMTksIDIzMywgMzksIDc4LCAyNDYsIDY1LCAxMjMsIDc4LCAyNDIsIDEwNiwgMjQyLCAxMDcsIDc4LCAyNDYsIDY1LCAKLSAgICAxMjMsIDc4LCAyMzMsIDM4LCAyMzMsIDM5LCA3OCwgMjIwLCA4OCwgMTY3LCAyNDUsIDYyLCAyNDIsIDEwNywgNzgsIDIyMCwgCi0gICAgODgsIDE2NywgMjQ1LCA2MiwgMjMzLCAzOSwgNzgsIDIyMCwgODgsIDc4LCAyNDIsIDEwNiwgMjQyLCAxMDcsIDc4LCAyMjAsIAotICAgIDg4LCA3OCwgMjMzLCAzOCwgMjMzLCAzOSwgNzgsIDI0MiwgMTA3LCA3OCwgMjQ2LCA2NSwgMjQ1LCA2MiwgMjQyLCAxMDcsIAotICAgIDc4LCAyMzMsIDM5LCA3OCwgMjQ2LCA2NSwgMjQ1LCA2MiwgMjMzLCAzOSwgNzgsIDIyMCwgMjUsIDEyMywgNzgsIDI0MiwgCi0gICAgMTA3LCA3OCwgMjIwLCAyNSwgMjQ1LCA2MiwgMjQyLCAxMDcsIDc4LCAyMjAsIDI1LCAxMjMsIDc4LCAyMzMsIDM5LCA3OCwgCi0gICAgMjIwLCAyNSwgMjQ1LCA2MiwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAyMjAsIDI1LCAxMjMsIAotICAgIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzksIDIsIDYyLCAKLSAgICAyMzUsIDIxMiwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNywgMiwgNjIsIDIzNSwgMjEyLCAyNDYsIAotICAgIDY1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDI0NiwgNjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIAotICAgIDI0NiwgNjUsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMjQ2LCA2NSwgMjIwLCAyNSwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjIwLCA4OCwgMTY3LCAyMzMsIDM4LCAyMjAsIDg4LCAxNjcsIDI0MiwgMTA2LCAKLSAgICAyMjAsIDg4LCA3OCwgMjMzLCAzOSwgNzgsIDI0NSwgNjEsIDUyLCAyMjAsIDg4LCA3OCwgMjQyLCAxMDcsIDc4LCAyNDUsIAotICAgIDYxLCA1MiwgNTEsIDIyOSwgMTczLCAyMzMsIDM4LCA1MSwgMjI5LCAxNzMsIDI0MiwgMTA2LCA1MSwgMjI5LCAxNzMsIDIzMywgCi0gICAgMzksIDIsIDIxNSwgMTUzLCAyNDIsIDEwNywgMjI2LCAyNDUsIDIzMywgMzgsIDI0MiwgMTA3LCAyNTEsIDIwNywgMjMzLCAKLSAgICAzOCwgMjMzLCAzOSwgMjQ5LCAxOTMsIDI1MSwgNywgMjQ5LCAzNCwgMjQyLCAxMDcsIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgCi0gICAgMzQsIDIzMywgMzksIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzUsIDc4LCAyMjAsIDI1LCAyNDUsIDYyLCAyNDIsIDEwNywgCi0gICAgMjQ5LCAxOTMsIDI1MSwgNywgMjQ5LCAzNSwgNzgsIDIyMCwgMjUsIDI0NSwgNjIsIDIyMCwgNiwgMjE3LCAxNTMsIDIzMywgCi0gICAgMTA2LCAyMTcsIDE1MywgMjIwLCA2LCAyMTcsIDE1NCwgMTY3LCAxMjMsIDEwOCwgMjMzLCAxMDYsIDIxNywgMTU0LCAxNjcsIAotICAgIDEyMywgMTA4LCAyNDUsIDYxLCA1LCAyLCAyNTEsIDM3LCA0OSwgMjI1LCA4MywgNzgsIDIyMCwgNzksIDI0NSwgNjEsIDUyLCAKLSAgICAyMTksIDEsIDc4LCAyMjAsIDc5LCAyNDUsIDYxLCA1MiwgMjI1LCA4MywgNzgsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIAotICAgIDEwOCwgMjE5LCAxLCA3OCwgMjIwLCA3OSwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjQ1LCA2MSwgNTIsIAotICAgIDIxOSwgMSwgNzgsIDI0NSwgNjEsIDUyLCAyMjUsIDgzLCA3OCwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMTksIDEsIDc4LCAKLSAgICAyMjgsIDE2MywgMTIzLCAxMDgsIDIyNSwgODMsIDc4LCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE5LCAxLCA3OCwgMjU0LCA1NywgCi0gICAgMTIzLCAxMDgsIDIyNSwgODMsIDc4LCAyMjgsIDE2MywgMjU0LCA1NywgMTIzLCAxMDgsIDIxOSwgMSwgNzgsIDIyOCwgMTYzLCAKLSAgICAyNTQsIDU3LCAxMjMsIDEwOCwgNTEsIDIyNSwgODIsIDUxLCAyMTksIDAsIDIxOSwgOSwgMiwgMjQ3LCA3NCwgMjE4LCAyMjIsIAotICAgIDIsIDI0NywgNzQsIDIxOSwgOSwgMiwgOTQsIDUsIDU1LCAyMTgsIDIyMiwgMiwgOTQsIDUsIDU1LCAyMTksIDksIDIsIDIzMCwgCi0gICAgMTU0LCA1LCA1NSwgMjE4LCAyMjIsIDIsIDIzMCwgMTU0LCA1LCA1NSwgMjE5LCA5LCA2NSwgMTY3LCAxMjMsIDIxMSwgMjExLCAKLSAgICAyLCA2MiwgNDksIDIxOCwgMjIyLCA2NSwgMTY3LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNDksIDIxOSwgOSwgNjUsIDc4LCAKLSAgICAyNDUsIDYxLCA1MiwgMjE4LCAyMjIsIDY1LCA3OCwgMjQ1LCA2MSwgNTIsIDIxOSwgOSwgNjUsIDc4LCAyMTcsIDQzLCAyMjcsIAotICAgIDMzLCAyMTgsIDIyMiwgNjUsIDc4LCAyMTcsIDQzLCAyMjcsIDMzLCAyMTksIDksIDY1LCA3OCwgMjU0LCA1NywgMTIzLCAKLSAgICAxMDgsIDIxOCwgMjIyLCA2NSwgNzgsIDI1NCwgNTcsIDEyMywgMTA4LCAyMTksIDksIDY1LCA3OCwgMjI4LCAxNjMsIDEyMywgCi0gICAgMTA4LCAyMTgsIDIyMiwgNjUsIDc4LCAyMjgsIDE2MywgMTIzLCAxMDgsIDQxLCA0MiwgMjI3LCA0MCwgOTIsIDIyNywgMzMsIAotICAgIDQxLCA0NiwgMjI3LCA0MCwgOTIsIDIyNywgMzMsIDI0OSwgMTkzLCAyMTksIDgsIDI0OSwgMTkzLCAyMTgsIDIyMSwgMjQ5LCAKLSAgICAxOTMsIDIxOSwgOSwgMTY3LCAxMjMsIDEwOCwgMjQ5LCAxOTMsIDIxOCwgMjIyLCAxNjcsIDEyMywgMTA4LCAyMTksIDksIAotICAgIDc4LCAyMTgsIDIyMSwgMjE4LCAyMjIsIDc4LCAyMTksIDgsIDIxOSwgOSwgNzgsIDIxOSwgOCwgMjE4LCAyMjIsIDc4LCAKLSAgICAyMTgsIDIyMSwgMjE4LCAyMjIsIDI1MSwgMjA3LCAyMTksIDgsIDIxOCwgMjIyLCAyNTEsIDIwNywgMjQsIDIzNSwgNjgsIAotICAgIDI1MSwgNywgMjQ4LCAxMDIsIDIsIDIxOSwgOCwgMjQ1LCAxMjcsIDY1LCAyMjcsIDM1LCAyNDYsIDU3LCAyMjUsIDE4MCwgMiwgCi0gICAgMjE3LCAyMjAsIDIxNiwgMjI2LCAyMTYsIDE5OCwgMjM1LCAxOTUsIDI0MywgMjQ2LCAyMjgsIDE3NiwgMjIwLCAxNzUsIDQyLCAKLSAgICAyMTgsIDM2LCAyMjAsIDE3NSwgMTE5LCAyMTgsIDM2LCAyMjAsIDE3NSwgMTE0LCAyMTgsIDM2LCAyMjYsIDQ4LCAyLCAxOTcsIAotICAgIDcxLCAyNTIsIDYwLCAyMTYsIDE2OSwgNDYsIDIxNiwgNTcsIDUxLCA3MSwgMjUyLCA2MCwgNDIsIDIxNiwgNTcsIDcxLCAKLSAgICAyNTIsIDYwLCA1MSwgNDIsIDIxNiwgNTcsIDUxLCA3MSwgMjUyLCA2MCwgNTEsIDQyLCAyMTYsIDU3LCAxODQsIDI0OCwgCi0gICAgMTAyLCAyNDMsIDIxMywgNDIsIDIzMSwgMTI3LCA2NSwgNTEsIDIxNCwgMjE2LCAyMjAsIDE3NSwgMTE5LCAyMTgsIDM3LCAyLCAKLSAgICAyMjYsIDI0NywgMjIwLCAxNzUsIDExNCwgMjE4LCAzNywgMiwgMjE1LCAxNTMsIDIyMCwgMTc1LCAxMTQsIDIxOCwgMzcsIAotICAgIDc4LCAyMjAsIDE3NSwgMTE5LCAyMTgsIDM2LCA1MSwgMTE5LCAyMTgsIDM2LCA1MSwgMTE0LCAyMTgsIDM2LCA1MSwgMjE5LCAKLSAgICA0NSwgMjI4LCAxNjMsIDUyLCAyMjMsIDIwMiwgNTEsIDIxOSwgNDUsIDIyOCwgMTYzLCA1MiwgMjQ3LCA5MiwgMjI4LCAxNjMsIAotICAgIDI0NywgMTI3LCAyLCAyMjMsIDIwMiwgMjI5LCAxODIsIDIyMCwgMjMsIDcxLCAyMzIsIDI0MywgMiwgMjQ5LCAyMjksIDQ5LCAKLSAgICA3MSwgMjMyLCAyNDMsIDIsIDI0OSwgMjI5LCA1NSwgMTE5LCAyMTgsIDM3LCAyLCAyNDksIDIyOSwgNTUsIDIyNiwgMTM2LCAKLSAgICAyLCAxOTksIDkwLCAyMjYsIDEzNiwgMiwgMjE3LCA0MywgMjI3LCAzMywgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCAyNTEsIAotICAgIDE2NywgMjIzLCAyNDEsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgMiwgMTk5LCA5MCwgMjE2LCAxNjksIDI0OSwgMTY1LCAKLSAgICAyMjcsIDMzLCAyMTYsIDE2OSwgMjI5LCAxNzMsIDIzMywgMzgsIDIxNiwgMTY5LCAyMjksIDE3MywgMjQyLCAxMDYsIDI0NiwgCi0gICAgNjUsIDIyMCwgMjUsIDIzMywgMzksIDE2NywgMTIzLCAxMDgsIDI0NiwgNjUsIDIyMCwgMjUsIDI0MiwgMTA3LCAxNjcsIAotICAgIDEyMywgMTA4LCAyMTYsIDE2OSwgMjE5LCAyMzIsIDI1MSwgMTY3LCAyMjMsIDI0MSwgMjMzLCAxMDgsIDIxNiwgMTY5LCA3MSwgCi0gICAgMjUyLCA2MCwgMjI3LCAzMywgNTEsIDIxOSwgMjMyLCAyMjcsIDMzLCA2NywgNzEsIDEzNCwgMjMwLCA5NywgNjcsIDcxLCAKLSAgICAxMzQsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjcsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDY3LCA2OCwgMjE5LCAyMTUsIAotICAgIDI0NSwgMTc2LCA2NywgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjcsIDY4LCA0MiwgNDYsIDY3LCA2OCwgMTMyLCA4MywgCi0gICAgNjgsIDIxNSwgMTI0LCA4MywgNjgsIDI0NiwgNTgsIDgzLCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA4MywgNjgsIDIyOCwgCi0gICAgMTY3LCAyMTMsIDI1MCwgODMsIDY4LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDgzLCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCAKLSAgICA4MywgNjgsIDQyLCA0NiwgODMsIDY4LCAxMTQsIDExOSwgODMsIDY4LCA5NSwgNzYsIDIsIDIxNywgMzAsIDI0NiwgNTcsIAotICAgIDk1LCA3NiwgMiwgMjE3LCAzMCwgMjE1LCAxMjMsIDEzMiwgNzYsIDIsIDIxNywgMzAsIDI0NiwgNTcsIDEzMiwgNzYsIDIsIAotICAgIDIxNywgMzAsIDIxNSwgMTIzLCA0MSwgMiwgMjE2LCAyMjcsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyNTEsIDEwMSwgMTUxLCAKLSAgICAyNTEsIDE0NCwgNDEsIDIsIDIxNSwgMTMxLCA0NiwgMjQ3LCAyMDcsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyMzIsIDE2MywgCi0gICAgNDIsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIDI0NywgMjAxLCAyLCAKLSAgICA0NiwgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIDIxNiwgMjI3LCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgCi0gICAgMjUxLCAxMDEsIDE1MSwgMjUxLCAxNDQsIDI0NiwgNzIsIDIxOSwgMTY2LCA4MywgMjMzLCAxMDgsIDIxOSwgMTY2LCA2NywgCi0gICAgMjMzLCAxMDgsIDIxOSwgMTY2LCA4MywgMjE0LCAxNjQsIDMsIDIxOSwgMTY2LCA2NywgMjE0LCAxNjQsIDMsIDIxOSwgMTY2LCAKLSAgICA4MywgMjI2LCA2NSwgNjcsIDIyNiwgNjUsIDY3LCAyNDEsIDE3OCwgODMsIDI0MSwgMTc4LCAxOTksIDgzLCAyNDEsIDE3OCwgCi0gICAgODMsIDIzMywgMTA4LCAyNDksIDIyOCwgODMsIDIzMSwgMTQ3LCAyNDcsIDIwMCwgNjcsIDIzMSwgMTQ3LCAyNDcsIDIwMCwgCi0gICAgODMsIDIzMSwgMTQ3LCAyMzIsIDE1OSwgNjcsIDIzMSwgMTQ3LCAyMzIsIDE1OSwgODMsIDMsIDI0NywgMjAwLCA4MywgMywgCi0gICAgMjMyLCAxNTksIDY3LCAzLCAyMzIsIDE1OSwgODMsIDE5OSwgMjQ1LCAxMjEsIDY3LCAxOTksIDI0NSwgMTIxLCA4MywgNzEsIAotICAgIDI0NSwgMTIxLCA2NywgNzEsIDI0NSwgMTIxLCA0MiwgNzYsIDIsIDMsIDI0OSwgMjI4LCAxMzMsIDEzMiwgMjUzLCAxNjIsIAotICAgIDQyLCA3NiwgMiwgMzYsIDIyNSwgMTU2LCAxODQsIDEzMiwgMjE5LCAxNjIsIDY4LCAxMzIsIDIxNiwgMjQsIDc2LCAyLCA3MSwgCi0gICAgOTAsIDEzMiwgMjE2LCAyNCwgNzYsIDIsIDUxLCA3MSwgOTAsIDEzMiwgMjE2LCAyNCwgNzYsIDI0MywgMjEzLCAxMzQsIAotICAgIDEzMiwgMjE2LCAyNCwgMjE2LCAxNjksIDI0OCwgMTAyLCA2OCwgMTMyLCA3NiwgMiwgMjQ2LCA3MiwgMjE5LCA3OSwgMTMyLCAKLSAgICA3NiwgMiwgMjE4LCAyOCwgMiwgNzEsIDkwLCAxMzIsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDIxNiwgCi0gICAgMjQsIDc2LCAyLCAyMTgsIDI3LCAxMzIsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA3MSwgOTAsIDEzMiwgMjE2LCAKLSAgICAyNCwgNzYsIDIsIDIxOCwgMjgsIDIsIDUxLCA3MSwgOTAsIDEzMiwgNzYsIDIxNywgOTMsIDIxMywgMTY2LCAyMTQsIDIwLCAKLSAgICA3NiwgMjI1LCAxNDEsIDI0NywgMTQ3LCAyMzMsIDcwLCAyNDUsIDYxLCA1LCA3OCwgMTMyLCA2OCwgMjIzLCAyMDMsIDIxNywgCi0gICAgNDMsIDIyNywgMzQsIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCA3OCwgMjIzLCAyMDMsIDI1NCwgNTcsIDEyMywgMTA4LCA5NSwgCi0gICAgNzYsIDIxNywgOTMsIDI0MiwgMTA2LCA5NSwgNzYsIDIxNywgOTMsIDIxOCwgMjIxLCAxMzIsIDIyNCwgMTY5LCA2OCwgOTUsIAotICAgIDIyNCwgMTY5LCA2OCwgMjIzLCAyMDMsIDIxNywgNDMsIDIyNywgMzQsIDc4LCA5NSwgNjgsIDk1LCA3NiwgNzgsIDIyMywgCi0gICAgMjAzLCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE3LCA0MywgMjI3LCAzNCwgNzgsIDEzMiwgNjgsIDEzMiwgNzYsIDc4LCAyNTQsIAotICAgIDU3LCAxMjMsIDEwOCwgMTMyLCA3NiwgNzgsIDIyMywgMjAzLCAyMTcsIDQzLCAyMjcsIDMzLCA5NSwgNzYsIDc4LCAyMjMsIAotICAgIDIwMywgMjE3LCA0MywgMjI3LCAzMywgNjcsIDIzMSwgMTQ3LCAyMTksIDk1LCA4MywgMywgMjE5LCA5NSwgNjcsIDMsIDIxOSwgCi0gICAgOTUsIDgzLCAyMjMsIDE0NCwgMjI2LCA2NSwgNjcsIDIyMywgMTQ0LCAyMjYsIDY1LCAxMDcsIDIzMywgMTA4LCAyNDksIAotICAgIDIyOCwgMTA3LCAyMjYsIDI0OCwgMiwgMjI2LCAyNDgsIDIzNSwgMjEyLCAxMDcsIDI0OSwgMjI5LCAyLCAyNDksIDIyOSwgCi0gICAgMjM1LCAyMTIsIDEwNywgMjQ5LCAyMjgsIDEwNywgMzYsIDIyMiwgMTY5LCAxMzYsIDYsIDEsIDI1MywgNzUsIDEzNiwgNiwgCi0gICAgMSwgMjUxLCA0NiwgMTM2LCA2LCAxLCAyMTQsIDIzMCwgMTM2LCA2LCAxLCAyNDIsIDE2MSwgMTM2LCA2LCAxLCAyNDcsIDk0LCAKLSAgICAxMzYsIDYsIDEsIDIxMywgMTIsIDEzNiwgNiwgMSwgMjEyLCA2MSwgMTM2LCA2LCAxLCAyNDUsIDI0NSwgMTM2LCA2LCAxLCAKLSAgICAyMTIsIDg0LCAxMzYsIDYsIDEsIDIzNSwgMTQ2LCAxMzYsIDYsIDEsIDcwLCAyMzUsIDE0NiwgMTM2LCA2LCAxLCA3MiwgCi0gICAgMTM2LCA2LCAxLCAyNDcsIDExMiwgMTM2LCA2LCAxLCAyMzQsIDI0NSwgMTM2LCA2LCAxLCAyMzIsIDIxNSwgMTM2LCA2LCAxLCAKLSAgICAyMzAsIDEwMSwgMTM2LCA2LCAxLCAyMzAsIDEyLCAxMzYsIDYsIDEsIDIyNywgNTEsIDEzNiwgNiwgMSwgMjI1LCAxMzgsIAotICAgIDEzNiwgNiwgMSwgMjIzLCAxMjQsIDEzNiwgNiwgMSwgMjIwLCAxMSwgMTM2LCA2LCAxLCAyMTYsIDQ2LCAxMzYsIDYsIDEsIAotICAgIDIxNSwgMTcxLCAxMzYsIDYsIDEsIDI0MywgMjE2LCAxMzYsIDYsIDEsIDI0MSwgMTg0LCAxMzYsIDYsIDEsIDIyNywgMywgCi0gICAgMTM2LCA2LCAxLCAyMjYsIDk2LCAxMzYsIDYsIDEsIDIyMCwgMTUzLCAxMzYsIDYsIDEsIDIxNiwgMTI1LCAxMzYsIDYsIDEsIAotICAgIDI1MCwgMTIsIDEzNiwgNiwgMSwgMjIxLCAyNCwgMTM2LCA2LCAxLCAyMTMsIDE4LCAxMzYsIDYsIDEsIDIxMywgMjAsIDEzNiwgCi0gICAgNiwgMSwgMjEzLCA0NywgMTM2LCA2LCAxLCAyMTksIDE4NSwgMTU5LCAxMzYsIDYsIDEsIDIxMiwgMjAzLCAxMzYsIDYsIDEsIAotICAgIDMsIDIxMiwgMTc0LCAxMzYsIDYsIDEsIDMsIDIxMiwgMTc1LCAyLCAyMTgsIDI3LCAxMzYsIDYsIDEsIDIxMiwgMjM1LCAKLSAgICAxMzYsIDYsIDEsIDIzNSwgMTgyLCAzLCAyMTIsIDE3NCwgMTM2LCA2LCAxLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgNiwgCi0gICAgMSwgMjM1LCAxODIsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMTM2LCA2LCAxLCAyNDQsIDUxLCAxMzYsIDYsIDEsIDIzNSwgMTQ0LCAKLSAgICAxMzYsIDYsIDEsIDIyMCwgMTUyLCAxMzYsIDYsIDEsIDIxNiwgMTYwLCA2MSwgMTM2LCA2LCAxLCAyMzMsIDk4LCAyMzAsIAotICAgIDEwMSwgMTM2LCAzLCAxLCAyNTMsIDc1LCAxMzYsIDMsIDEsIDI1MSwgNDYsIDEzNiwgMywgMSwgMjE0LCAyMzAsIDEzNiwgMywgCi0gICAgMSwgMjQyLCAxNjEsIDEzNiwgMywgMSwgMjQ3LCA5NCwgMTM2LCAzLCAxLCAyMTMsIDEyLCAxMzYsIDMsIDEsIDIxMiwgNjEsIAotICAgIDEzNiwgMywgMSwgMjQ1LCAyNDUsIDEzNiwgMywgMSwgMjEyLCA4NCwgMTM2LCAzLCAxLCAyMzUsIDE0NiwgMTM2LCAzLCAxLCAKLSAgICA3MCwgMjM1LCAxNDYsIDEzNiwgMywgMSwgNzIsIDEzNiwgMywgMSwgMjQ3LCAxMTIsIDEzNiwgMywgMSwgMjM0LCAyNDUsIAotICAgIDEzNiwgMywgMSwgMjMyLCAyMTUsIDEzNiwgMywgMSwgMjMwLCAxMDEsIDEzNiwgMywgMSwgMjMwLCAxMiwgMTM2LCAzLCAxLCAKLSAgICAyMjcsIDUxLCAxMzYsIDMsIDEsIDIyNSwgMTM4LCAxMzYsIDMsIDEsIDIyMywgMTI0LCAxMzYsIDMsIDEsIDIyMCwgMTEsIAotICAgIDEzNiwgMywgMSwgMjE2LCA0NiwgMTM2LCAzLCAxLCAyMTUsIDE3MSwgMTM2LCAzLCAxLCAyNDMsIDIxNiwgMTM2LCAzLCAxLCAKLSAgICAyNDEsIDE4NCwgMTM2LCAzLCAxLCAyMjcsIDMsIDEzNiwgMywgMSwgMjI2LCA5NiwgMTM2LCAzLCAxLCAyMjAsIDE1MywgCi0gICAgMTM2LCAzLCAxLCAyMTYsIDEyNSwgMTM2LCAzLCAxLCAyNTAsIDEyLCAxMzYsIDMsIDEsIDIyMSwgMjQsIDEzNiwgMywgMSwgCi0gICAgMjEzLCAxOCwgMTM2LCAzLCAxLCAyMTMsIDIwLCAxMzYsIDMsIDEsIDIxMywgNDcsIDEzNiwgMywgMSwgMjE5LCAxODUsIAotICAgIDE1OSwgMTM2LCAzLCAxLCAyMTIsIDIwMywgMTM2LCAzLCAxLCAzLCAyMTIsIDE3NCwgMTM2LCAzLCAxLCAzLCAyMTIsIDE3NSwgCi0gICAgMiwgMjE4LCAyNywgMTM2LCAzLCAxLCAyMTIsIDIzNSwgMTM2LCAzLCAxLCAyMzUsIDE4MiwgMywgMjEyLCAxNzQsIDEzNiwgCi0gICAgMywgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIDMsIDEsIDIzNSwgMTgyLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgCi0gICAgMywgMSwgMjQ0LCA1MSwgMTM2LCAzLCAxLCAyMzUsIDE0NCwgMTM2LCAzLCAxLCAyMjAsIDE1MiwgMTM2LCAzLCAxLCAyMTYsIAotICAgIDE2MCwgNjEsIDEzNiwgMywgMSwgMjMzLCA5OCwgMjMwLCAxMDEsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCA1MSwgMTM0LCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgNTEsIDEzNCwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDYsIAotICAgIDEsIDIyNiwgMjMwLCAyLCA5MCwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIDExOCwgMiwgOTAsIAotICAgIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDI0NywgMjQ2LCA3LCAzLCAKLSAgICAxLCAyNDIsIDQyLCAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjQ3LCAyNDYsIDcsIDMsIDEsIDIzNSwgMjgsIAotICAgIDIsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjQ3LCAyNDYsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDcsIAotICAgIDI0NiwgNywgNiwgMSwgMjU0LCA1MiwgNywgNiwgMSwgMjMyLCAxMTAsIDIsIDEwMSwgNywgNiwgMSwgMjE2LCA1OCwgNjEsIAotICAgIDcsIDYsIDEsIDIxNiwgNTgsIDI1NCwgNTIsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDQ2LCAxMDEsIDcsIDYsIDEsIDIxNCwgCi0gICAgODMsIDIsIDEwMSwgNywgMywgMSwgMjE0LCA4MywgMiwgMTAxLCA3LCAzLCAxLCAyMTUsIDgwLCAyLCAyNDksIDQxLCA3LCA2LCAKLSAgICAxLCAxNTEsIDI0MiwgNDEsIDcsIDMsIDEsIDE1MSwgMjQyLCA0MSwgNywgMywgMSwgMjE4LCAyNSwgMjI2LCA5LCA3LCAzLCAKLSAgICAxLCAxOTEsIDIsIDIyOCwgMTYxLCA3LCAzLCAxLCAyMTYsIDU4LCAyMjQsIDExMywgMiwgMjE4LCAyNywgNywgMywgMSwgCi0gICAgMTU3LCAyLCAxMTUsIDIyMywgMTMxLCAyMzUsIDIxMiwgNywgMSwgMywgNiwgMjE2LCA1OCwgNzQsIDcsIDIxOSwgMTAsIDMsIAotICAgIDEsIDIzNSwgMTQyLCA1OSwgMSwgNiwgMjE1LCA3OSwgNywgNiwgMSwgMjIzLCA0LCAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNywgCi0gICAgNiwgMSwgMjEyLCAxNTMsIDIsIDIxOCwgMTk1LCAyMTgsIDI3LCA3OSwgNiwgMSwgMjU0LCA3MywgNzksIDMsIDEsIDI1NCwgCi0gICAgNzMsIDc5LCA2LCAxLCAyMTQsIDE1MSwgNzksIDMsIDEsIDIxNCwgMTUxLCA3OSwgNiwgMSwgMjQzLCA4MywgNzksIDMsIDEsIAotICAgIDI0MywgODMsIDc5LCA2LCAxLCAyNDgsIDEzNiwgNzksIDMsIDEsIDI0OCwgMTM2LCA3OSwgNiwgMSwgMjQ1LCAxNTEsIDc5LCAKLSAgICAzLCAxLCAyNDUsIDE1MSwgNzksIDYsIDEsIDIxOSwgMjIwLCA3OSwgMywgMSwgMjE5LCAyMjAsIDc5LCA2LCAxLCAyMTIsIAotICAgIDk0LCA3OSwgMywgMSwgMjEyLCA5NCwgNzksIDYsIDEsIDI0MSwgMjMxLCA3OSwgMywgMSwgMjQxLCAyMzEsIDc5LCA2LCAxLCAKLSAgICAyMTcsIDEzMCwgNzksIDMsIDEsIDIxNywgMTMwLCA3OSwgNiwgMSwgMjQwLCAxMDksIDc5LCAzLCAxLCAyNDAsIDEwOSwgNzksIAotICAgIDYsIDEsIDIzNCwgMjMyLCA3OSwgMywgMSwgMjM0LCAyMzIsIDc5LCA2LCAxLCAyMzMsIDk2LCA3OSwgMywgMSwgMjMzLCA5NiwgCi0gICAgNzksIDYsIDEsIDIzMSwgNDIsIDc5LCAzLCAxLCAyMzEsIDQyLCA3OSwgNiwgMSwgMjI5LCA2NCwgNzksIDMsIDEsIDIyOSwgCi0gICAgNjQsIDc5LCA2LCAxLCAyMzMsIDI0MiwgNzksIDMsIDEsIDIzMywgMjQyLCA3OSwgNiwgMSwgNzUsIDc5LCAzLCAxLCA3NSwgCi0gICAgNzksIDYsIDEsIDIyNSwgMjQwLCA3OSwgMywgMSwgMjI1LCAyNDAsIDc5LCA2LCAxLCAyMjMsIDExMiwgNzksIDMsIDEsIAotICAgIDIyMywgMTEyLCA3OSwgNiwgMSwgMjIwLCA5MSwgNzksIDMsIDEsIDIyMCwgOTEsIDc5LCA2LCAxLCAyMTcsIDI0OCwgNzksIAotICAgIDMsIDEsIDIxNywgMjQ4LCA3OSwgNiwgMSwgMjE1LCAxOTYsIDc5LCAzLCAxLCAyMTUsIDE5NiwgNzksIDYsIDEsIDI0NCwgCi0gICAgOTAsIDc5LCAzLCAxLCAyNDQsIDkwLCA3OSwgNiwgMSwgMjM0LCAxMTgsIDc5LCAzLCAxLCAyMzQsIDExOCwgNzksIDYsIDEsIAotICAgIDIyNSwgNDYsIDc5LCAzLCAxLCAyMjUsIDQ2LCA3OSwgNiwgMSwgMjI3LCA0NCwgNzksIDMsIDEsIDIyNywgNDQsIDc5LCA2LCAKLSAgICAxLCAyNDcsIDIwNSwgMjU0LCA3OCwgNzksIDMsIDEsIDI0NywgMjA1LCAyNTQsIDc4LCA3OSwgNiwgMSwgNTMsIDc5LCAyNTQsIAotICAgIDEwMywgNzksIDMsIDEsIDUzLCA3OSwgMjU0LCAxMDMsIDc5LCA2LCAxLCAyNDksIDU1LCAyNDUsIDE1MSwgNzksIDMsIDEsIAotICAgIDI0OSwgNTUsIDI0NSwgMTUxLCA3OSwgNiwgMSwgMjQ3LCAyMDUsIDIzNCwgMjMyLCA3OSwgMywgMSwgMjQ3LCAyMDUsIDIzNCwgCi0gICAgMjMyLCA3OSwgNiwgMSwgMjQ3LCAyMDUsIDIyOSwgNjQsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjI5LCA2NCwgNzksIDYsIDEsIAotICAgIDI0OSwgNTUsIDIyOSwgNjQsIDc5LCAzLCAxLCAyNDksIDU1LCAyMjksIDY0LCA3OSwgNiwgMSwgNTMsIDc5LCAyMjcsIDQ0LCAKLSAgICA3OSwgMywgMSwgNTMsIDc5LCAyMjcsIDQ0LCA3OSwgNiwgMSwgMjIyLCAxNjEsIDc5LCAzLCAxLCAyMjIsIDE2MSwgNzksIDYsIAotICAgIDEsIDI0OSwgNjgsIDIyMCwgMjM1LCA3OSwgMywgMSwgMjQ5LCA2OCwgMjIwLCAyMzUsIDc5LCA2LCAxLCA1MywgNzksIDIyMCwgCi0gICAgMjM1LCA3OSwgMywgMSwgNTMsIDc5LCAyMjAsIDIzNSwgNzksIDYsIDEsIDUzLCA3OSwgMjQ1LCA0MCwgNzksIDMsIDEsIDUzLCAKLSAgICA3OSwgMjQ1LCA0MCwgNzksIDYsIDEsIDI1NCwgOTAsIDIzNCwgMTIzLCA3OSwgMywgMSwgMjU0LCA5MCwgMjM0LCAxMjMsIAotICAgIDc5LCA2LCAxLCAyNDcsIDIwNSwgMjQxLCAzMiwgNzksIDMsIDEsIDI0NywgMjA1LCAyNDEsIDMyLCA3OSwgNiwgMSwgNTMsIAotICAgIDc5LCAyNDEsIDMyLCA3OSwgMywgMSwgNTMsIDc5LCAyNDEsIDMyLCA3OSwgNiwgMSwgNTMsIDc5LCAxNTksIDc5LCAzLCAxLCAKLSAgICA1MywgNzksIDE1OSwgNzksIDYsIDEsIDIzMywgMTcwLCAxNTksIDc5LCAzLCAxLCAyMzMsIDE3MCwgMTU5LCA3OSwgNiwgMSwgCi0gICAgNTMsIDc5LCAyNDEsIDIwMSwgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAyMDEsIDc5LCA2LCAxLCA1MywgNzksIDI0MSwgMjM0LCAKLSAgICA3OSwgMywgMSwgNTMsIDc5LCAyNDEsIDIzNCwgNzksIDYsIDEsIDUzLCA3OSwgMjQzLCA3OCwgNzksIDMsIDEsIDUzLCA3OSwgCi0gICAgMjQzLCA3OCwgNzksIDYsIDEsIDUzLCA3OSwgMjQ3LCAxMTUsIDc5LCAzLCAxLCA1MywgNzksIDI0NywgMTE1LCA3OSwgNiwgCi0gICAgMSwgNTMsIDc5LCAyMjAsIDIwMiwgNzksIDMsIDEsIDUzLCA3OSwgMjIwLCAyMDIsIDc5LCA2LCAxLCA1MywgMjI4LCA2MywgCi0gICAgMjIwLCAyMDIsIDc5LCAzLCAxLCA1MywgMjI4LCA2MywgMjIwLCAyMDIsIDc5LCA2LCAxLCA1MywgMjI4LCA2MywgMjI5LCAKLSAgICAxMTMsIDc5LCAzLCAxLCA1MywgMjI4LCA2MywgMjI5LCAxMTMsIDc5LCA2LCAxLCA1MywgMjI4LCA2MywgMjI4LCAxMCwgNzksIAotICAgIDMsIDEsIDUzLCAyMjgsIDYzLCAyMjgsIDEwLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIxNCwgMjEsIDc5LCAzLCAxLCA1MywgCi0gICAgMjI4LCA2MywgMjE0LCAyMSwgNzksIDE2LCAyMzQsIDI1MCwgNzksIDE2LCAyMzEsIDQzLCAyMjMsIDExMiwgNzksIDE2LCAKLSAgICAyMjUsIDI0MSwgMjIzLCAxMTIsIDc5LCAxNiwgMjE5LCA4NywgNzksIDE2LCAyMTcsIDI0OSwgMjIzLCAxMTIsIDc5LCAxNiwgCi0gICAgMjM0LCAxMTksIDIyMywgMTEyLCA3OSwgMTYsIDIyMCwgMjAzLCAyMjAsIDkxLCA3OSwgNiwgMSwgMjQ5LCA1NSwgMjIwLCAKLSAgICAyMzUsIDc5LCAzLCAxLCAyNDksIDU1LCAyMjAsIDIzNSwgNzksIDYsIDEsIDI0OSwgNTUsIDI0MywgNzgsIDc5LCAzLCAxLCAKLSAgICAyNDksIDU1LCAyNDMsIDc4LCA3OSwgMzcsIDIyOSwgNjUsIDQ5LCA3OSwgMzcsIDIxOSwgMTc5LCAyNTMsIDEzOSwgNzksIAotICAgIDM3LCAyMTksIDE3OSwgMjMzLCA0NSwgNzksIDUzLCAyMjgsIDYzLCAyNDMsIDIwMCwgMjE5LCA2OSwgNzksIDUzLCAyMjgsIAotICAgIDYzLCAyNDcsIDE0OSwgMjI0LCAxNTgsIDc3LCA3OSwgNTMsIDIyOCwgNjMsIDIzNSwgMjM0LCAyMjQsIDE1OCwgNzcsIDc5LCAKLSAgICA1MywgMjI4LCA2MywgMjE0LCAyMTgsIDI0NywgMTI0LCA3OSwgMjQzLCAyMjgsIDEyMiwgMjQyLCA5LCA3OSwgMjQzLCAyMDAsIAotICAgIDIxOSwgNjksIDc5LCAyMzAsIDE5NCwgMjQ3LCAxMjQsIDEwMCwgMywgMSwgMjU0LCAzMiwgMTAwLCAzLCAxLCAyNTIsIDcxLCAKLSAgICAxMDAsIDMsIDEsIDI0MywgODIsIDEwMCwgMywgMSwgMjQ3LCA4MiwgMTAwLCAzLCAxLCAyNDUsIDEwOCwgMTAwLCAzLCAxLCAKLSAgICAyMTQsIDE0MSwgMTAwLCAzLCAxLCAyMTIsIDgyLCAxMDAsIDMsIDEsIDIxOCwgMTEsIDEwMCwgMywgMSwgMjM1LCAyNTEsIAotICAgIDEwMCwgMywgMSwgMjM0LCAyMzksIDEwMCwgMywgMSwgMjMzLCAxMDQsIDEwMCwgMywgMSwgMjMxLCAyNDgsIDEwMCwgMywgMSwgCi0gICAgMjMwLCAxNSwgMTAwLCAzLCAxLCAyMjcsIDYyLCAxMDAsIDMsIDEsIDIyNiwgMTQ1LCAxMDAsIDMsIDEsIDIxMiwgNzEsIAotICAgIDEwMCwgMywgMSwgMjI0LCA2MSwgMTAwLCAzLCAxLCAyMjIsIDE1OSwgMTAwLCAzLCAxLCAyMTgsIDEsIDEwMCwgMywgMSwgCi0gICAgMjE1LCAxNjAsIDEwMCwgMywgMSwgMjI2LCAxNiwgMTAwLCAzLCAxLCAyMzQsIDEyNywgMTAwLCAzLCAxLCAyNDIsIDIxNywgCi0gICAgMTAwLCAzLCAxLCAyMjQsIDIxNywgMTAwLCAzLCAxLCAyMjAsIDIwMCwgMTAwLCAzLCAxLCAyNTAsIDM0LCAxMDAsIDMsIDEsIAotICAgIDI1MCwgMTk1LCAxMDAsIDMsIDEsIDIzNSwgMTAzLCAxMDAsIDMsIDEsIDI0OSwgMjMzLCAxMDAsIDMsIDEsIDI1MCwgNzksIAotICAgIDEwMCwgMywgMSwgMjEzLCAxNTEsIDEwMCwgMywgMSwgMjM1LCAxMTMsIDEwMCwgMywgMSwgMjQyLCAyNCwgMTAwLCAzLCAxLCAKLSAgICAyNDEsIDIyMiwgMTAwLCAzLCAxLCAyNDEsIDE2MCwgMTAwLCAzLCAxLCAyMTQsIDYsIDEwMCwgMywgMSwgMjQxLCAyNDMsIAotICAgIDEwMCwgMywgMSwgMjQxLCA1MSwgMjE3LCA2MiwgMSwgMTg2LCAyMTcsIDYyLCAxLCAyMTMsIDg3LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDg2LCAyMTcsIDYyLCAxLCAyMTMsIDc2LCAyMTcsIDYyLCAxLCAyMTMsIDc0LCAyMTcsIDYyLCAxLCAyNTEsIDIwOSwgCi0gICAgMjU0LCAxNzYsIDIxMywgNzAsIDIxNywgNjIsIDEsIDIxMywgNzAsIDIxNywgNjIsIDEsIDIxMywgODQsIDIxNywgNjIsIDEsIAotICAgIDIxMywgODEsIDIxNywgNjIsIDEsIDIxMywgODMsIDIxNywgNjIsIDEsIDIxMywgODIsIDIxNywgNjIsIDEsIDIxMywgMywgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA3OCwgMjE3LCA2MiwgMSwgMjEzLCA2OCwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA2OCwgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA2NSwgMjE3LCA2MiwgMSwgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjUxLCAyMDksIDI1NCwgMTc2LCAKLSAgICAyMTMsIDcyLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDcyLCAyMTcsIDYyLCAxLCAyMTMsIDcxLCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDkxLCAyMTcsIDYyLCAxLCAyMTMsIDY2LCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDY2LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDU2LCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDU2LCAyMTcsIDYyLCAxLCAyMTIsIDI1NSwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA0MCwgMjE3LCA2MiwgMSwgMjU0LCAxMTIsIDIxMywgNDAsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNDAsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNjQsIDIxNywgNjIsIDEsIDIxMywgNjMsIDIxNywgNjIsIDEsIDIxMywgNjAsIDIxNywgNjIsIAotICAgIDEsIDIxNiwgNzksIDIxMywgNzMsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNTgsIDIxNywgNjIsIDEsIDIxMywgNTcsIAotICAgIDIxNywgNjIsIDEsIDIxMiwgMjAzLCAyMTcsIDYyLCAxLCAyMTMsIDU0LCAyMTcsIDYyLCAxLCAyMTMsIDUzLCAyMTcsIDYyLCAKLSAgICAxLCAyMTMsIDc1LCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDc1LCAyMTcsIDYyLCAxLCAyNTMsIDc5LCAyMTMsIDc1LCAKLSAgICAyMTcsIDYyLCAxLCAyMTMsIDUyLCAyMTcsIDYyLCAxLCAyMTMsIDUwLCAyMTcsIDYyLCAxLCAyMTMsIDUxLCAyMTcsIDYyLCAKLSAgICAxLCAyMTMsIDQ5LCAyMTcsIDYyLCAxLCAyMTMsIDQ4LCAyMTcsIDYyLCAxLCAyMTMsIDg1LCAyMTcsIDYyLCAxLCAyMTMsIAotICAgIDQ2LCAyMTcsIDYyLCAxLCAyMTMsIDQ1LCAyMTcsIDYyLCAxLCAyMTMsIDQ0LCAyMTcsIDYyLCAxLCAyMTMsIDQzLCAyMTcsIAotICAgIDYyLCAxLCAyMTMsIDQxLCAyMTcsIDYyLCAxLCAyMTcsIDI0MSwgMjEzLCA0MSwgMjE3LCA2MiwgMSwgMjEzLCAzOSwgMjE3LCAKLSAgICA2MiwgNTksIDEsIDIzMywgMTQ5LCA3NywgMjE3LCA2MiwgMjIxLCA1OCwgNzcsIDIxNywgNjIsIDI0OSwgMTMzLCAyMzUsIAotICAgIDY2LCAyOCwgNCwgMjMyLCAyMDcsIDI4LCA0LCAyMzAsIDIzMCwgMjgsIDQsIDIyMywgMTEwLCAyOCwgNCwgMjE5LCAyNDEsIAotICAgIDI4LCA0LCAyMjAsIDE4NiwgMjgsIDQsIDI1MSwgMTI3LCAyOCwgNCwgMjE2LCAyNTIsIDI4LCA0LCAyNDksIDE3NCwgMjgsIAotICAgIDQsIDIyOCwgMTgzLCAyOCwgNCwgMjI3LCAyNTIsIDI4LCA0LCAyNDIsIDE1NiwgMjI3LCAxMjAsIDI4LCA0LCAyMTIsIDE1LCAKLSAgICAyOCwgNCwgMjQ3LCA5NywgMjgsIDQsIDI0OCwgNTUsIDI4LCA0LCAyMzUsIDcwLCAyOCwgNCwgMjE3LCAxMDgsIDI4LCA0LCAKLSAgICAyNTAsIDIyLCAyOCwgNCwgMjI1LCAyNTIsIDI4LCA0LCAyMjUsIDE0OSwgMjgsIDQsIDI0MiwgMjMxLCAyOCwgNCwgMjQyLCAKLSAgICAyMjcsIDI4LCA0LCAyNDIsIDIyOCwgMjgsIDQsIDI0MiwgMjI5LCAyOCwgNCwgMjE5LCAxNTcsIDI4LCA0LCAyMTksIDExNywgCi0gICAgMjgsIDQsIDIxOSwgMTI4LCAyOCwgNCwgMjE5LCAxNTYsIDI4LCA0LCAyMTksIDEzMiwgMjgsIDQsIDIxOSwgMTMzLCAyOCwgCi0gICAgNCwgMjE5LCAxMjEsIDI4LCA0LCAyNTAsIDE0NiwgMjgsIDQsIDI1MCwgMTI2LCAyOCwgNCwgMjUwLCAxMjgsIDI4LCA0LCAKLSAgICAyNTAsIDE0NSwgMjgsIDQsIDI1MCwgMTQzLCAyOCwgNCwgMjUwLCAxNDQsIDI4LCA0LCAyNTAsIDEyNywgMjgsIDQsIDIxMSwgCi0gICAgMjQyLCAyOCwgNCwgMjExLCAyMjIsIDI4LCA0LCAyMTEsIDIzMywgMjgsIDQsIDIxMSwgMjQxLCAyOCwgNCwgMjExLCAyMzYsIAotICAgIDI4LCA0LCAyMTEsIDIzNywgMjgsIDQsIDIxMSwgMjI1LCAyOCwgNCwgMjUwLCAxNDIsIDI4LCA0LCAyNTAsIDEyOSwgMjgsIAotICAgIDQsIDI1MCwgMTMxLCAyOCwgNCwgMjUwLCAxNDEsIDI4LCA0LCAyNTAsIDEzOSwgMjgsIDQsIDI1MCwgMTQwLCAyOCwgNCwgCi0gICAgMjUwLCAxMzAsIDI4LCA0LCAyMjQsIDEyNSwgMjgsIDQsIDIyNCwgMTE1LCAyOCwgNCwgMjI0LCAxMjEsIDI4LCA0LCAyMjQsIAotICAgIDEyNCwgMjgsIDQsIDIyNCwgMTIyLCAyOCwgNCwgMjI0LCAxMjMsIDI4LCA0LCAyMjQsIDEyMCwgMjgsIDQsIDIzMywgMTgxLCAKLSAgICAyOCwgNCwgMjMzLCAxNzMsIDI4LCA0LCAyMzMsIDE3NiwgMjgsIDQsIDIzMywgMTgwLCAyOCwgNCwgMjMzLCAxNzcsIDI4LCAKLSAgICA0LCAyMzMsIDE3OCwgMjgsIDQsIDIzMywgMTc0LCAyOCwgNCwgMjEzLCAxMTgsIDI4LCA0LCAyMTMsIDEwOCwgMjgsIDQsIAotICAgIDIxMywgMTE0LCAyOCwgNCwgMjEzLCAxMTcsIDI4LCA0LCAyMTMsIDExNSwgMjgsIDQsIDIxMywgMTE2LCAyOCwgNCwgMjEzLCAKLSAgICAxMTMsIDI4LCA0LCAyNDIsIDUyLCAyOCwgNCwgMjQyLCA0MywgMjgsIDQsIDI0MiwgNDYsIDI4LCA0LCAyNDIsIDUxLCAyOCwgCi0gICAgNCwgMjQyLCA0OCwgMjgsIDQsIDI0MiwgNDksIDI4LCA0LCAyNDIsIDQ1LCAzNywgMzMsIDEsIDI1MSwgMjUxLCAzNywgMzMsIAotICAgIDEsIDIxNCwgMjMyLCAzNywgMzMsIDEsIDI0MiwgMjEyLCAzNywgMzMsIDEsIDI0OCwgNDEsIDM3LCAzMywgMSwgMjEyLCA2NywgCi0gICAgMzcsIDMzLCAxLCAyMTIsIDg3LCAzNywgMzMsIDEsIDE4MSwgMzcsIDMzLCAxLCAyNDUsIDEzMSwgMzcsIDMzLCAxLCAyNDUsIAotICAgIDExNywgMzcsIDMzLCAxLCAyNDUsIDEwOCwgMzcsIDMzLCAxLCA3NSwgMzcsIDMzLCAxLCAyMjYsIDk2LCAzNywgMzMsIDEsIAotICAgIDI0NSwgNTUsIDM3LCAzMywgMSwgMjQ1LCA0NSwgMzcsIDMzLCAxLCAyMTcsIDIyOSwgMzcsIDMzLCAxLCAxNTksIDM3LCAzMywgCi0gICAgMSwgMjE2LCAxMzYsIDM3LCAzMywgMSwgMjUwLCA2NywgMzcsIDMzLCAxLCAyMjEsIDI0LCAzNywgMzMsIDEsIDIyMCwgMjQ1LCAKLSAgICAzNywgMzMsIDEsIDI0NCwgNTEsIDM3LCAzMywgMSwgMjQ1LCA0NCwgMzcsIDMzLCAxLCA2MSwgMzcsIDMzLCAxLCAyMzYsIAotICAgIDU1LCAzNywgMzMsIDEsIDI0NywgMTEzLCAzNywgMzMsIDEsIDIzMCwgMjEwLCAyMTUsIDE3NSwgMzcsIDMzLCAxLCAyMTMsIAotICAgIDQ5LCAzNywgMzMsIDEsIDIxMiwgMjAzLCAzNywgMzMsIDEsIDIzNSwgMTgxLCA2MSwgMzcsIDMzLCAxLCAyMzIsIDIyMSwgCi0gICAgMjEyLCAxNzQsIDM3LCAzMywgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAzNywgMzMsIDEsIDIzNSwgMTgxLCAyNTEsIDE3MiwgCi0gICAgMjEyLCAxNzQsIDQ2LCAyNTQsIDE5LCAyMTksIDUsIDIzMSwgMjE3LCA0NiwgMjU0LCAxOSwgMjQ2LCA3MiwgMjE5LCA1LCAKLSAgICAyMzEsIDIxNywgNDIsIDIxOSwgNSwgMTI1LCA0NiwgMjE5LCA1LCAxMjUsIDQyLCAyNDYsIDcyLCAyMTksIDUsIDEyNSwgNDYsIAotICAgIDI0NiwgNzIsIDIxOSwgNSwgMTI1LCAyMjQsIDQ4LCAyMzUsIDE5OSwgMjMxLCAyMTcsIDIyNCwgNDgsIDI0NiwgNzIsIDIzNSwgCi0gICAgMTk5LCAyMzEsIDIxNywgMjQ2LCA3MiwgMjE2LCAxOTksIDIzMSwgMjE3LCA0MiwgMjE2LCAxOTksIDEyNSwgNDYsIDIxNiwgCi0gICAgMTk5LCAxMjUsIDIyNCwgNDgsIDIxOSwgMTY2LCA0MiwgMjI0LCA0OCwgMjI3LCA2NCwgMTI1LCA0NiwgMjI0LCA0OCwgMjI3LCAKLSAgICA2NCwgMTI1LCAyNDUsIDE2NiwgMjQ5LCA5NywgMjI2LCAxNDEsIDI0MywgMjQ3LCAyMjYsIDE0MSwgMjIzLCAyMDIsIDI0MywgCi0gICAgMjQ3LCAyMjYsIDE0MSwgMjQwLCAxNTcsIDI0NiwgNzIsIDIyNywgMTE1LCAyNDYsIDU4LCAyNTQsIDI4LCAyMTUsIDEyNCwgCi0gICAgMjU0LCAyOCwgMjQ2LCA3MiwgMjIzLCAxNDQsIDI1NCwgMTgsIDUxLCAyMjcsIDExMiwgMjQwLCAxNjAsIDIzNSwgMTkxLCAKLSAgICAyMzUsIDE5OCwgMjI2LCAxODYsIDI1MSwgODEsIDI0MCwgMTYxLCAyLCAyNDcsIDIwOSwgMjE3LCA0MywgMiwgMjIzLCAxMzEsIAotICAgIDQ5LCA0MiwgMTE1LCAyMjYsIDEzMywgMTI1LCA0NiwgMTE1LCAyMjYsIDEzMywgMTI1LCAyMTcsIDQzLCAyLCA2MiwgNDksIAotICAgIDIxNywgNDMsIDIsIDYyLCA1NSwgNDIsIDcxLCAyNTIsIDYwLCAyLCAyMjQsIDE1MiwgNDYsIDcxLCAyNTIsIDYwLCAyLCAKLSAgICAyMjQsIDE1MiwgMjE2LCAyMjcsIDQyLCAxNTEsIDEyNSwgMjE2LCAyMjcsIDQ2LCAxNTEsIDEyNSwgMjUxLCAxMDEsIDQyLCAKLSAgICAxNTEsIDEyNSwgMjUxLCAxMDEsIDQ2LCAxNTEsIDEyNSwgNDIsIDIyMCwgMTEzLCAxMTEsIDEyNSwgNDYsIDIyMCwgMTEzLCAKLSAgICAxMTEsIDEyNSwgNDIsIDUxLCAyMjYsIDEzMSwgNDYsIDUxLCAyMjYsIDEzMSwgMTE3LCAxNzYsIDExMCwgMTIyLCA2MiwgCi0gICAgMjI1LCAyNiwgMTIyLCA2MiwgMTEwLCAxMTcsIDE3NiwgMjI1LCAyNiwgOTEsIDI0MywgMjM3LCA2MiwgMjI1LCAyNiwgMjQ0LCAKLSAgICA1MCwgNjIsIDc3LCAyMjMsIDIwMiwgMjI0LCAxNTgsIDc3LCA3MSwgMjE3LCA0MiwgMjIzLCAxMzEsIDIyNSwgMTQ0LCAyMTMsIAotICAgIDE5NiwgMjIxLCA1OCwgMjMxLCAzNywgMjQ3LCA3NCwgOSwgMzQsIDIyMywgMjI3LCA5LCAzNCwgMjQ5LCAyMDMsIDksIDM0LCAKLSAgICAyMjIsIDk1LCAxMTYsIDksIDM0LCAyMjIsIDk1LCAxMDksIDksIDM0LCAyMjIsIDk1LCAxNjYsIDksIDM0LCAyMjYsIDQzLCAKLSAgICA5LCAzNCwgMjUxLCA4OSwgOSwgMzQsIDIxOCwgNDAsIDksIDM0LCAyMzQsIDQyLCAxMTYsIDksIDM0LCAyMzQsIDQyLCAxMDksIAotICAgIDksIDM0LCAyNDcsIDEyMiwgOSwgMzQsIDIyMiwgOTgsIDksIDM0LCAzLCAxMTYsIDksIDM0LCAzLCAxMDksIDksIDM0LCAKLSAgICAyMzMsIDEyMSwgMTE2LCA5LCAzNCwgMjMzLCAxMjEsIDEwOSwgOSwgMzQsIDIzMywgMTIxLCAxNjYsIDksIDM0LCAyMzMsIAotICAgIDEyMSwgMTYzLCA5LCAzNCwgMjE5LCAyNTIsIDksIDM0LCAyMTcsIDk4LCA5LCAzNCwgMjE5LCAyNTAsIDExNiwgOSwgMzQsIAotICAgIDIxOSwgMjUwLCAxMDksIDksIDM0LCAyNDEsIDIxMiwgMTE2LCA5LCAzNCwgMjQxLCAyMTIsIDEwOSwgOSwgMzQsIDI0MSwgCi0gICAgMjU0LCA5LCAzNCwgMjI0LCAzOSwgOSwgMzQsIDI1MCwgMTksIDksIDM0LCAyMTgsIDIzOCwgOSwgMzQsIDIzMCwgMTk4LCA5LCAKLSAgICAzNCwgMjQ4LCAzOSwgOSwgMzQsIDIzMCwgMTkwLCA5LCAzNCwgMjQ5LCAyMTgsIDksIDM0LCAyMTQsIDI1LCAxMTYsIDksIAotICAgIDM0LCAyMTQsIDI1LCAxMDksIDksIDM0LCAyNDQsIDY1LCA5LCAzNCwgMjI2LCAxMDYsIDExNiwgOSwgMzQsIDIyNiwgMTA2LCAKLSAgICAxMDksIDksIDM0LCAyMjAsIDg2LCAxNTEsIDIxNiwgMTk0LCAyMTYsIDE0NiwgOSwgMzQsIDI0OSwgODQsIDksIDM0LCAyNDcsIAotICAgIDkwLCA5LCAzNCwgMjM1LCAxMzUsIDksIDM0LCAyNTEsIDEyMiwgNjUsIDI0OSwgMTg3LCA5LCAzNCwgMjQ0LCAyMzksIDksIAotICAgIDM0LCAyMTksIDE4MSwgMTE2LCA5LCAzNCwgMjE5LCAxODEsIDEwOSwgOSwgMzQsIDI1MiwgNzMsIDksIDM0LCAyMjAsIDkzLCAKLSAgICA5LCAzNCwgMjUwLCAyNDksIDIyMCwgOTMsIDksIDM0LCAyMjksIDE3MiwgMTE2LCA5LCAzNCwgMjI5LCAxNzIsIDEwOSwgOSwgCi0gICAgMzQsIDIyOSwgMTcyLCAxNjYsIDksIDM0LCAyMjksIDE3MiwgMTYzLCA5LCAzNCwgMjMxLCAxMTEsIDksIDM0LCAyMjAsIAotICAgIDIzNywgOSwgMzQsIDIyNCwgNDUsIDksIDM0LCAyNDUsIDQsIDksIDM0LCAyMjcsIDc1LCA5LCAzNCwgMjUxLCA2MSwgMTE2LCAKLSAgICA5LCAzNCwgMjUxLCA2MSwgMTA5LCA5LCAzNCwgMjMxLCAxNTEsIDksIDM0LCAyMzAsIDE5MywgOSwgMzQsIDI0MiwgMTE3LCAKLSAgICAxMTYsIDksIDM0LCAyNDIsIDExNywgMTA5LCA5LCAzNCwgMjQyLCAxMTcsIDE2NiwgOSwgMzQsIDIxNywgNjAsIDksIDM0LCAKLSAgICAyNDksIDE4NiwgOSwgMzQsIDIxMywgMjUwLCAxMTYsIDksIDM0LCAyMTMsIDI1MCwgMTA5LCA5LCAzNCwgMjUwLCAyNDksIAotICAgIDIyMiwgODksIDksIDM0LCAyMjAsIDg2LCAyNDAsIDIzNSwgOSwgMzQsIDI0MCwgMjM1LCA5LCAzNCwgMjUwLCAyNDksIDIxOSwgCi0gICAgMTkwLCA5LCAzNCwgMjUwLCAyNDksIDIyMCwgMjMyLCA5LCAzNCwgMjQ0LCAxLCA5LCAzNCwgMjUwLCAyNDksIDI1MCwgMTYwLCAKLSAgICA5LCAzNCwgMjIwLCA4NiwgMjE0LCA0MSwgOSwgMzQsIDIxNCwgNDIsIDExNiwgOSwgMzQsIDIxNCwgNDIsIDEwOSwgOSwgMzQsIAotICAgIDI0OSwgMjIwLCA5LCAzNCwgMjUwLCAyNDksIDI0MiwgMTQyLCA5LCAzNCwgMTg0LCAxMTYsIDksIDM0LCAxODQsIDEwOSwgOSwgCi0gICAgMzQsIDI1MCwgMjQ5LCAyMzIsIDE5MCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDMsIDY0LCA5LCAzNCwgMjMwLCAxODksIDExNiwgCi0gICAgOSwgMzQsIDIzMCwgMTg5LCAxMDksIDksIDM0LCAyMjQsIDUwLCA5LCAzNCwgMjUxLCAxMzAsIDksIDM0LCAyNTAsIDI0OSwgCi0gICAgMjE4LCA3LCAyMzMsIDc2LCA5LCAzNCwgMjUwLCAyNDksIDIzMywgNzcsIDksIDM0LCAyNTAsIDI0OSwgMjEzLCAyMjQsIDksIAotICAgIDM0LCAyNTAsIDI0OSwgMjQ0LCAxNSwgOSwgMzQsIDI0NSwgMTc0LCAxMTYsIDksIDM0LCAyNDUsIDE3NCwgMTA5LCA5LCAzNCwgCi0gICAgMjQ1LCAxNzQsIDE2NiwgOSwgMzQsIDI1MCwgMjQ5LCAyNDUsIDE3MywgOSwgMzQsIDI0MSwgMjE5LCA5LCAzNCwgMjUwLCAKLSAgICAyNDksIDI0MCwgMjMyLCA5LCAzNCwgMjUxLCAxMTksIDksIDM0LCAyNDIsIDE5OCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDQsIAotICAgIDU5LCA5LCAzNCwgMjUwLCAyNDksIDI1MSwgMTYwLCA5LCAzNCwgMjUwLCAyNDksIDIyMiwgMTcyLCA5LCAzNCwgMjIwLCA4NiwgCi0gICAgMjEzLCAyNDMsIDksIDM0LCAyMjAsIDg2LCAyMTMsIDMyLCA5LCAzNCwgMjUwLCAyNDksIDI0MywgMjE0LCA5LCAzNCwgMjM1LCAKLSAgICAxNDEsIDI0NSwgOCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDUsIDgsIDksIDM0LCAyMzUsIDE0MSwgMjE2LCAyMjgsIDksIDM0LCAKLSAgICAyNTAsIDI0OSwgMjE2LCAyMjgsIDksIDM0LCAyMzUsIDE0MSwgMjQ2LCA1MCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDYsIDUwLCAKLSAgICA5LCAzNCwgMjE2LCA1NSwgOSwgMzQsIDIzNSwgMTQxLCAyMTYsIDU1LCA5LCAzNCwgMjUwLCAyNDksIDIxNiwgNTUsIDU3LCAKLSAgICAzNCwgMTE2LCA1NywgMzQsIDIzMiwgMjQyLCA1NywgMzQsIDI0NywgNzQsIDU3LCAzNCwgMjIwLCAyMywgNTcsIDM0LCAyMjIsIAotICAgIDk0LCA1NywgMzQsIDEwMSwgNTcsIDM0LCAxMDksIDU3LCAzNCwgMjMzLCA5LCA1NywgMzQsIDIzMSwgMjQ4LCA1NywgMzQsIAotICAgIDIzMywgNTcsIDU3LCAzNCwgMjQ1LCA4OCwgNTcsIDM0LCAxOTUsIDU3LCAzNCwgMTE5LCAyNTEsIDg5LCA1NywgMzQsIDI0OSwgCi0gICAgODYsIDU3LCAzNCwgMjQwLCAxMDQsIDU3LCAzNCwgMjE4LCA0MCwgNTcsIDM0LCAyMjcsIDQwLCAyNTEsIDg5LCA1NywgMzQsIAotICAgIDIzNCwgNDEsIDU3LCAzNCwgMjI1LCAxMDQsIDU3LCAzNCwgMjEzLCAxOTAsIDU3LCAzNCwgMjE5LCAxNzUsIDU3LCAzNCwgCi0gICAgNDYsIDIyNywgNDAsIDI1MSwgODksIDU3LCAzNCwgMjQxLCAxNjEsIDI0NSwgMTAzLCA1NywgMzQsIDIxNywgMjAwLCA1NywgCi0gICAgMzQsIDI0NywgMTIyLCA1NywgMzQsIDIyMiwgOTgsIDU3LCAzNCwgMjQ5LCAyMDMsIDU3LCAzNCwgMjI1LCA2NSwgNTcsIDM0LCAKLSAgICAyNTQsIDEyMCwgNTcsIDM0LCAyMzAsIDE4MCwgNTcsIDM0LCAyNDUsIDEwMywgNTcsIDM0LCAyNDUsIDE3OSwgNTcsIDM0LCAKLSAgICAyMjIsIDExOCwgNTcsIDM0LCAyNDIsIDE1MCwgNTcsIDM0LCAyNDIsIDE1MSwgMjIwLCA5LCA1NywgMzQsIDI0NSwgNywgNTcsIAotICAgIDM0LCAyNTEsIDE3MSwgNTcsIDM0LCAyMTMsIDIwOCwgNTcsIDM0LCAyNTAsIDM4LCA1NywgMzQsIDIyMywgOTgsIDU3LCAzNCwgCi0gICAgMjM1LCAyNDcsIDU3LCAzNCwgMjIwLCA3LCA1NywgMzQsIDIzMywgMTIwLCA1NywgMzQsIDI0OSwgOTUsIDU3LCAzNCwgMjE5LCAKLSAgICAxNjksIDU3LCAzNCwgMjMwLCAxODUsIDU3LCAzNCwgMjIzLCAxMjEsIDU3LCAzNCwgMjEzLCAxOTMsIDU3LCAzNCwgMjI3LCAKLSAgICA1NiwgNTcsIDM0LCAyMTYsIDYxLCA1NywgMzQsIDI0NiwgMzUsIDU3LCAzNCwgMjIwLCAxNzUsIDIxNywgOTgsIDU3LCAzNCwgCi0gICAgMjQ2LCA3MiwgMjQ5LCAyMDMsIDU3LCAzNCwgMTg0LCAyMTksIDQ4LCA1NywgMzQsIDExNywgMjQxLCAyNDksIDU3LCAzNCwgCi0gICAgMjIwLCAxODAsIDU3LCAzNCwgMjUxLCA5NSwgNTcsIDM0LCAyMTksIDI0OSwgNTcsIDM0LCAyNTEsIDY1LCA1NywgMzQsIAotICAgIDIxOSwgNzgsIDU3LCAzNCwgMjQxLCAyMTEsIDU3LCAzNCwgMjQyLCAxMCwgNTcsIDM0LCAyNDcsIDc3LCA1NywgMzQsIDI0MSwgCi0gICAgMjU0LCA1NywgMzQsIDI1MSwgODEsIDU3LCAzNCwgMjI0LCAzOSwgNTcsIDM0LCAyMjIsIDEwNiwgNTcsIDM0LCAyNDcsIAotICAgIDE1MSwgNTcsIDM0LCAyNTMsIDg0LCA1NywgMzQsIDIxOSwgMTY2LCA1NywgMzQsIDIyOCwgMTYyLCA1NywgMzQsIDIxOCwgCi0gICAgMjM4LCA1NywgMzQsIDIyMiwgMTI5LCA1NywgMzQsIDIzMCwgMTk4LCA1NywgMzQsIDIxNiwgMTkzLCA1NywgMzQsIDIzMywgCi0gICAgMTQ1LCA1NywgMzQsIDIxOSwgNjksIDU3LCAzNCwgMjQ4LCAzOSwgNTcsIDM0LCAyMTQsIDUsIDU3LCAzNCwgMjQ3LCAxMDAsIAotICAgIDIyOCwgMTYyLCA1NywgMzQsIDI0OSwgMTU0LCA1NywgMzQsIDI0MywgMTk0LCA1NywgMzQsIDI0OSwgMjE0LCA1NywgMzQsIAotICAgIDIxOSwgODIsIDU3LCAzNCwgMjE0LCAyNCwgNTcsIDM0LCAyNDQsIDY1LCA1NywgMzQsIDI0OSwgMjExLCA1NywgMzQsIDI0NCwgCi0gICAgMTI5LCA1NywgMzQsIDUxLCAyMTMsIDE2NiwgNTcsIDM0LCAxNTEsIDIxNiwgMTk0LCAyMTYsIDE0NiwgNTcsIDM0LCAyMjAsIAotICAgIDE3LCA1NywgMzQsIDI0NCwgMTM5LCA1NywgMzQsIDI0OSwgODQsIDU3LCAzNCwgMjQ3LCA5MCwgNTcsIDM0LCAyMjUsIDYyLCAKLSAgICA1NywgMzQsIDIzNSwgMTM1LCA1NywgMzQsIDIzMSwgMTMxLCA1NywgMzQsIDIxNywgNDEsIDU3LCAzNCwgMjE4LCAxOTAsIAotICAgIDU3LCAzNCwgMjMzLCAzLCA1NywgMzQsIDIxNSwgMTAzLCA1NywgMzQsIDI0NCwgODksIDU3LCAzNCwgMjUxLCAxMjIsIDY1LCAKLSAgICAyNDksIDE4NywgNTcsIDM0LCAyMjAsIDExNCwgNTcsIDM0LCAyNDYsIDcyLCAyMTcsIDE5NSwgNTcsIDM0LCAyMTMsIDIzOCwgCi0gICAgNTcsIDM0LCAyMjAsIDMxLCA1NywgMzQsIDI0NywgMTM5LCA1NywgMzQsIDI0NCwgMjM5LCA1NywgMzQsIDIxOSwgMTkzLCAKLSAgICA1NywgMzQsIDY4LCA1NywgMzQsIDIxOSwgNzEsIDU3LCAzNCwgMjE5LCAxODAsIDU3LCAzNCwgMjE2LCAyMTIsIDU3LCAzNCwgCi0gICAgMjQyLCAxMjMsIDU3LCAzNCwgMjUwLCAxNTEsIDU3LCAzNCwgMjE5LCA5OSwgNTcsIDM0LCAyNTIsIDczLCA1NywgMzQsIAotICAgIDIyMywgMTg0LCA1NywgMzQsIDIyMCwgOTMsIDU3LCAzNCwgMjM1LCAxMzAsIDU3LCAzNCwgMjI5LCAxNzEsIDU3LCAzNCwgCi0gICAgMjIwLCAyMzcsIDU3LCAzNCwgMjQ0LCAxMTgsIDU3LCAzNCwgMjI3LCA3NSwgNTcsIDM0LCAyNTQsIDI3LCA1NywgMzQsIAotICAgIDIyNSwgMTYyLCA1NywgMzQsIDI0NSwgMTgzLCA1NywgMzQsIDI1MSwgNjAsIDU3LCAzNCwgMjMxLCAxNTEsIDU3LCAzNCwgCi0gICAgMjMwLCAyNTIsIDU3LCAzNCwgMjIxLCA3NiwgNTcsIDM0LCAyNTMsIDE2NywgNTcsIDM0LCAyMzAsIDE5MywgNTcsIDM0LCAKLSAgICAyMTYsIDIzMiwgNTcsIDM0LCAyMjcsIDMxLCA1NywgMzQsIDI1MSwgMTI0LCA1NywgMzQsIDIxOSwgNjcsIDU3LCAzNCwgCi0gICAgMjQ5LCAxNjMsIDU3LCAzNCwgMjQyLCAxMTYsIDU3LCAzNCwgMjE3LCA2MCwgNTcsIDM0LCAyMzUsIDIxNCwgNTcsIDM0LCAKLSAgICAyNTEsIDEzNCwgNTcsIDM0LCAyMTQsIDQyLCAyNDUsIDEwMywgNTcsIDM0LCAyNDksIDE4NiwgNTcsIDM0LCAyMTMsIDI0OSwgCi0gICAgNTcsIDM0LCAyMjIsIDg5LCA1NywgMzQsIDI0MCwgMjM1LCA1NywgMzQsIDIxOSwgMTkwLCA1NywgMzQsIDIxNCwgMjU0LCAKLSAgICA1NywgMzQsIDI1MSwgMjQ4LCA1NywgMzQsIDIyNSwgMjA1LCA1NywgMzQsIDI1MiwgOTIsIDU3LCAzNCwgMjIwLCAyMzIsIAotICAgIDU3LCAzNCwgMjI0LCAzLCA1NywgMzQsIDIyMywgMzcsIDU3LCAzNCwgMjQ0LCAxLCA1NywgMzQsIDI1MSwgMTIzLCA1NywgCi0gICAgMzQsIDI1MCwgMTYwLCA1NywgMzQsIDI1MSwgMTQ5LCA1NywgMzQsIDIzMCwgMTk1LCA1NywgMzQsIDIxNCwgNDEsIDU3LCAKLSAgICAzNCwgMjQ5LCAyMjAsIDU3LCAzNCwgMjEzLCAyMjEsIDU3LCAzNCwgMjQ3LCAxMzIsIDU3LCAzNCwgMjE0LCAxNDIsIDU3LCAKLSAgICAzNCwgMjQyLCAxNDIsIDU3LCAzNCwgMjMyLCAxOTAsIDU3LCAzNCwgMjQzLCA2NCwgNTcsIDM0LCAyMzAsIDE4OCwgNTcsIAotICAgIDM0LCAyMjAsIDIyLCA1NywgMzQsIDIyMCwgMTc1LCAyMTgsIDI2LCAyNTEsIDE2MCwgNTcsIDM0LCAyMjQsIDUwLCA1NywgCi0gICAgMzQsIDI1MSwgMTMwLCA1NywgMzQsIDIxMywgMTg1LCA1NywgMzQsIDI0NCwgMTU4LCA1NywgMzQsIDIzMywgNzYsIDU3LCAKLSAgICAzNCwgMjE4LCA3LCAyMzMsIDc2LCA1NywgMzQsIDIzMywgNzIsIDU3LCAzNCwgMjE5LCAyMTcsIDU3LCAzNCwgMjMzLCA3NywgCi0gICAgNTcsIDM0LCAyMTMsIDIyNCwgNTcsIDM0LCAyNDQsIDE1LCA1NywgMzQsIDI0NSwgMTczLCA1NywgMzQsIDI0MSwgMjE5LCAKLSAgICA1NywgMzQsIDI0MywgMjI2LCA1NywgMzQsIDI0MCwgMjMyLCA1NywgMzQsIDI1MSwgMTE5LCA1NywgMzQsIDIxOCwgMTQsIAotICAgIDU3LCAzNCwgMjQyLCAxNiwgNTcsIDM0LCAyNDQsIDgyLCA1NywgMzQsIDIyMiwgMTk3LCAyMTMsIDIyMSwgNTcsIDM0LCAKLSAgICAyNTAsIDE1MywgNTcsIDM0LCAyNDIsIDE5OCwgNTcsIDM0LCAyNDQsIDU5LCA1NywgMzQsIDI1MSwgMTYwLCA1NywgMzQsIAotICAgIDIyMiwgMTcyLCA1NywgMzQsIDI0OCwgMjUsIDU3LCAzNCwgMjEzLCAyNDMsIDU3LCAzNCwgMjQxLCAxOTQsIDU3LCAzNCwgCi0gICAgMjEzLCAzMiwgNTcsIDM0LCAyMzEsIDUsIDU3LCAzNCwgMjUxLCAxNDQsIDU3LCAzNCwgMjQ1LCAxMTMsIDU3LCAzNCwgMjQzLCAKLSAgICAyMTQsIDU3LCAzNCwgMjE2LCAxNjcsIDU3LCAzNCwgMjQ2LCAzNywgNTcsIDM0LCAyMjQsIDMzLCA1NywgMzQsIDIyOCwgCi0gICAgMTY0LCA1NywgMzQsIDI0NSwgOCwgNTcsIDM0LCAyMTYsIDIyOCwgNTcsIDM0LCAyNDYsIDUwLCA1NywgMzQsIDIxNiwgNTUsIAotICAgIDU3LCAzNCwgMjQ0LCAxNywgMTA1LCAyNDcsIDI0NCwgMTM3LCA0MiwgMjExLCAyMTEsIDIyMywgMTQ4LCAxMDUsIDI0NywgCi0gICAgMjQ0LCAxMzcsIDc4LCAyMTEsIDIxMSwgNTUsIDEwNSwgMjQ3LCAyNDQsIDEzNywgNDIsIDIxMSwgMjExLCAyMzEsIDM3LCAKLSAgICAyNCwgMjIzLCAxNDgsIDEwNSwgMjQ3LCAyNDQsIDEzNywgNzgsIDIxMSwgMjExLCAyMzEsIDM3LCAyNCwgNTUsIDEwNSwgCi0gICAgMjQ3LCAyNDQsIDEzNywgMjQzLCAyMDAsIDIxOCwgMjEwLCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIAotICAgIDIxMywgNDksIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCA1NSwgMTA1LCAyNDcsIDI0NCwgMTM3LCAKLSAgICAyMTgsIDIxMSwgMjQzLCAyMTMsIDIzMywgNzAsIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMTUsIAotICAgIDEzMSwgMjMzLCA3MCwgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAyMTMsIDIxNSwgMTMxLCAyMjMsIDE0OCwgCi0gICAgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAyMTMsIDIzMiwgMTYzLCAyMzMsIDcwLCAxMDUsIDI0NywgMjQ0LCAKLSAgICAxMzcsIDIyNiwgMjQ2LCAxMDUsIDIxOSwgMjA2LCAxMDUsIDI0OSwgMTU3LCAxMDUsIDI0MywgMjAwLCAyMTksIDY5LCAyNDcsIAotICAgIDEyOSwgNzcsIDIzNSwgMTMxLCAyMzUsIDIzMywgMjE5LCA5OCwgODcsIDEwNSwgMjM1LCAxNTYsIDc3LCAxMDUsIDI0OSwgCi0gICAgMTg5LCA3NywgMTA1LCA1MCwgMjEyLCA3OSwgNDIsIDI1NCwgMTksIDEyNSwgNDYsIDI1NCwgMTksIDEyNSwgNDIsIDUxLCAKLSAgICAyNTQsIDE5LCAxMjUsIDQ2LCA1MSwgMjU0LCAxOSwgMTI1LCA0MiwgMjQ5LCAxMDAsIDEyNSwgNDYsIDI0OSwgMTAwLCAxMjUsIAotICAgIDQyLCA2NywgMjQ5LCAxMDAsIDEyNSwgNDYsIDY3LCAyNDksIDEwMCwgMTI1LCA0MiwgODMsIDIzMywgNDQsIDEyNSwgNDYsIAotICAgIDgzLCAyMzMsIDQ0LCAxMjUsIDIyNSwgMTE3LCA3NywgMjQzLCA4LCA3NywgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAKLSAgICA0NiwgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQyLCA2NywgMjMzLCA0NCwgMTI1LCA0NiwgNjcsIDIzMywgNDQsIDEyNSwgCi0gICAgNDIsIDY3LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgNDYsIDY3LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgNDIsIDY3LCAKLSAgICA0MSwgMTI1LCA0NiwgNjcsIDQxLCAxMjUsIDIxNCwgMjAsIDI0OCwgMTAxLCAyMjMsIDIwMiwgNTEsIDIyNSwgNzIsIDIyNCwgCi0gICAgMTQzLCA3NywgNTEsIDIyNSwgNzIsIDIyNCwgMTQzLCA3NywgMTE1LCA1MSwgMjI1LCA3MiwgMjI0LCAxNDMsIDc3LCAyMjUsIAotICAgIDExNywgMTUyLCAyNDQsIDE1OCwgMjQxLCAyNDcsIDIyOCwgNTQsIDExNiwgMjQxLCAyNDcsIDIyOCwgNTQsIDEwOSwgMjQxLCAKLSAgICAyNDcsIDIyOCwgNTQsIDE2NiwgMjQxLCAyNDcsIDIyOCwgNTQsIDE2MywgMjQxLCAyNDcsIDIyOCwgNTQsIDE4MCwgMjQxLCAKLSAgICAyNDcsIDIyOCwgNTQsIDE4OSwgMjQxLCAyNDcsIDIyOCwgNTQsIDE5OCwgMjQxLCAyNDcsIDIyOCwgNTQsIDE5NSwgMjQxLCAKLSAgICAyNDcsIDIyOCwgNTQsIDIwMCwgMTA1LCAyMzMsIDI5LCAxNjAsIDc3LCAxMDUsIDIyMywgMTI1LCAxNjAsIDc3LCAxMDUsIAotICAgIDI0NywgMjUxLCAxNjAsIDc3LCAxMDUsIDI0NSwgODcsIDE2MCwgNzcsIDIzLCAyMjAsIDgxLCA2MiwgMTYwLCA3NywgMjMsIAotICAgIDUxLCA2MiwgMTYwLCA3NywgMjE0LCAxNiwgMjQ4LCAxMDEsIDcxLCAyMzQsIDIzOCwgMjIzLCAyMjgsIDc3LCA3MSwgMjM0LCAKLSAgICAyMzgsIDIyMywgMjI4LCAyLCAyMTQsIDExNiwgMjE5LCAyMTgsIDc3LCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCAxNTIsIAotICAgIDIxNSwgMTMxLCAyNDIsIDksIDcxLCAyMzQsIDIzOCwgMjIzLCAyMjgsIDIsIDIxNCwgMTE2LCAyMTksIDIxOCwgMTUyLCAKLSAgICAyMTUsIDEzMSwgMjQyLCA5LCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCAxNTIsIDIzMiwgMTYzLCAyNDIsIDksIDM2LCAyMjUsIAotICAgIDExNywgNzcsIDEwNSwgMjAxLCAyMzIsIDI0MywgMjQ0LCAxMTUsIDIyMSwgNTgsIDg3LCAyNDEsIDI0NywgMjI4LCA1NCwgCi0gICAgMjE3LCAyMDAsIDI0MSwgMjQ3LCAyMjgsIDU0LCAyMTYsIDM4LCAyNDEsIDI0NywgMjI4LCA1NCwgMjE3LCAxMTUsIDcxLCAKLSAgICAxMDUsIDIzNSwgMTU2LCA3NywgMjMxLCAyMDMsIDc3LCAyMjYsIDEyNywgMjU0LCA0OSwgNzcsIDEwNSwgNDMsIDIzNSwgCi0gICAgMjM1LCAxMDUsIDE1MSwgMjQ0LCA3NSwgMjE5LCAyMDYsIDE0MiwgMSwgMywgNjEsIDE0MiwgMSwgNjEsIDE0MiwgMSwgMywgCi0gICAgNzIsIDE0MiwgMSwgNzIsIDE0MiwgMSwgMywgNjksIDE0MiwgMSwgNjksIDE0MiwgMSwgMywgNzQsIDE0MiwgMSwgNzQsIAotICAgIDE0MiwgMSwgMywgNzUsIDE0MiwgMSwgNzUsIDE0MiwgMSwgMTgxLCAxNDIsIDEsIDI0MywgMTEwLCAxNDIsIDEsIDIzNCwgCi0gICAgMTAxLCAxNDIsIDEsIDI0MiwgMTkwLCAxNDIsIDEsIDIzMywgMjM4LCAxNDIsIDEsIDI0MiwgOTIsIDE0MiwgMSwgMjM0LCAKLSAgICAxODgsIDE0MiwgMSwgMjQzLCAzOCwgMTQyLCAxLCAyMzQsIDM3LCAxNDIsIDEsIDI0MiwgMTUwLCAxNDIsIDEsIDIyMiwgCi0gICAgMjAyLCAxNDIsIDEsIDIxMiwgMTA5LCAxNDIsIDEsIDIyMCwgMTE3LCAxNDIsIDEsIDIxMiwgMzcsIDE0MiwgMSwgMjE5LCAKLSAgICAyNywgMTQyLCAxLCAyMTIsIDgsIDE0MiwgMSwgMjIyLCAxMDAsIDE0MiwgMSwgMjEyLCA4NywgMTQyLCAxLCAyMTksIDI0MiwgCi0gICAgMTQyLCAxLCAyMTIsIDE2LCAxNDIsIDEsIDIxOCwgNTIsIDE0MiwgMSwgMjQ4LCAxNjQsIDE0MiwgMSwgMjE3LCA3MSwgMTQyLCAKLSAgICAxLCAyNDcsIDIxMSwgMTQyLCAxLCAzLCAyMTYsIDgyLCAxNDIsIDEsIDIxNiwgODIsIDE0MiwgMSwgMjQ2LCAzMywgMTQyLCAKLSAgICAxLCAyMTcsIDIyOSwgMTQyLCAxLCAyNDgsIDQxLCAxNDIsIDEsIDEwOCwgMTQyLCAxLCAyNDcsIDk5LCAxNDIsIDEsIDIwNSwgCi0gICAgMTQyLCAxLCAyMjksIDY0LCAxNDIsIDEsIDIyOCwgOTIsIDE0MiwgMSwgMjI5LCAxODcsIDE0MiwgMSwgMjI4LCAxODUsIAotICAgIDE0MiwgMSwgMTU5LCAxNDIsIDEsIDI1MiwgMTA3LCAxNDIsIDEsIDE5MywgMTQyLCAxLCAyNDEsIDE2NSwgMTQyLCAxLCAKLSAgICAyNTEsIDE4NCwgMTQyLCAxLCAyMjUsIDI0MCwgMTQyLCAxLCAyNDAsIDIxMiwgMTQyLCAxLCAyNTEsIDU0LCAxNDIsIDEsIAotICAgIDIyNSwgMzUsIDE0MiwgMSwgMjQxLCAyMjIsIDE0MiwgMSwgMjUxLCAyNTEsIDE0MiwgMSwgMjI2LCA5NiwgMTQyLCAxLCAKLSAgICAyNDEsIDU0LCAxNDIsIDEsIDI1MSwgMTI4LCAxNDIsIDEsIDIyNSwgMTUwLCAxNDIsIDEsIDE4OCwgMTQyLCAxLCAyMzEsIAotICAgIDQyLCAxNDIsIDEsIDIzMCwgMTcyLCAxNDIsIDEsIDIzMSwgMTU2LCAxNDIsIDEsIDIzMCwgMjMxLCAxNDIsIDEsIDMsIDE4NiwgCi0gICAgMTQyLCAxLCAxODYsIDE0MiwgMSwgMywgMjEyLCAyMDMsIDE0MiwgMSwgMjEyLCAyMDMsIDE0MiwgMSwgMywgMjEyLCAyMzUsIAotICAgIDE0MiwgMSwgMjEyLCAyMzUsIDE0MiwgMSwgMjAzLCAxNDIsIDEsIDIyMywgMTg4LCAxNDIsIDEsIDIyMywgNTEsIDE0MiwgMSwgCi0gICAgMjI0LCAyMSwgMTQyLCAxLCAyMjMsIDExMiwgMTQyLCAxLCAzLCAyMTQsIDQ5LCAxNDIsIDEsIDIxNCwgNDksIDE0MiwgMSwgCi0gICAgMjEzLCAyMzUsIDE0MiwgMSwgMjE0LCA2LCAxNDIsIDEsIDIxMywgMjE0LCAxNDIsIDEsIDIwNCwgMTQyLCAxLCAyMTQsIDk5LCAKLSAgICAxNDIsIDEsIDMsIDE4MSwgMTQyLCAxLCAzLCAyMzQsIDE4OCwgMzcsIDIzNCwgMjA2LCAyMTQsIDExNiwgMjE5LCAyMTgsIAotICAgIDc3LCAzNywgMjM0LCAyMDYsIDIyMSwgNzUsIDIxOSwgMjE4LCA3NywgMjM0LCAyMDYsIDIxNCwgMTE2LCAyMTksIDIxOCwgCi0gICAgNzcsIDIzNCwgMjA2LCAyMjEsIDc1LCAyMTksIDIxOCwgNzcsIDE0MiwgMjM1LCAxNTYsIDc3LCAxNDIsIDIxNCwgMTE2LCAKLSAgICAyMzUsIDE1NiwgNzcsIDE0MiwgMjQ3LCAxNzMsIDIxMiwgMjE2LCAyMzQsIDIwNiwgNTEsIDI0MCwgMTYwLCA1NiwgMSwgMywgCi0gICAgNjEsIDU2LCAxLCA2MSwgNTYsIDEsIDMsIDcyLCA1NiwgMSwgNzIsIDU2LCAxLCAzLCA2OSwgNTYsIDEsIDY5LCA1NiwgMSwgCi0gICAgMywgNzQsIDU2LCAxLCA3NCwgNTYsIDEsIDMsIDc1LCA1NiwgMSwgNzUsIDU2LCAxLCAxODEsIDU2LCAxLCAyNDMsIDExMCwgCi0gICAgNTYsIDEsIDIzNCwgMTAxLCA1NiwgMSwgMjQyLCAxOTAsIDU2LCAxLCAyMzMsIDIzOCwgNTYsIDEsIDI0MiwgOTIsIDU2LCAxLCAKLSAgICAyMzQsIDE4OCwgNTYsIDEsIDI0MywgMzgsIDU2LCAxLCAyMzQsIDM3LCA1NiwgMSwgMjQyLCAxNTAsIDU2LCAxLCAyMjIsIAotICAgIDIwMiwgNTYsIDEsIDIxMiwgMTA5LCA1NiwgMSwgMjIwLCAxMTcsIDU2LCAxLCAyMTIsIDM3LCA1NiwgMSwgMjE5LCAyNywgCi0gICAgNTYsIDEsIDIxMiwgOCwgNTYsIDEsIDIyMiwgMTAwLCA1NiwgMSwgMjEyLCA4NywgNTYsIDEsIDIxOSwgMjQyLCA1NiwgMSwgCi0gICAgMjEyLCAxNiwgNTYsIDEsIDIxOCwgNTIsIDU2LCAxLCAyNDgsIDE2NCwgNTYsIDEsIDIxNywgNzEsIDU2LCAxLCAyNDcsIAotICAgIDIxMSwgNTYsIDEsIDMsIDIxNiwgODIsIDU2LCAxLCAyMTYsIDgyLCA1NiwgMSwgMjQ2LCAzMywgNTYsIDEsIDIxNywgMjI5LCAKLSAgICA1NiwgMSwgMjQ4LCA0MSwgNTYsIDEsIDEwOCwgNTYsIDEsIDI0NywgOTksIDU2LCAxLCAyMDUsIDU2LCAxLCAyMjksIDY0LCAKLSAgICA1NiwgMSwgMjI4LCA5MiwgNTYsIDEsIDIyOSwgMTg3LCA1NiwgMSwgMjI4LCAxODUsIDU2LCAxLCAxNTksIDU2LCAxLCAyNTIsIAotICAgIDEwNywgNTYsIDEsIDE5MywgNTYsIDEsIDI0MSwgMTY1LCA1NiwgMSwgMjUxLCAxODQsIDU2LCAxLCAyMjUsIDI0MCwgNTYsIAotICAgIDEsIDI0MCwgMjEyLCA1NiwgMSwgMjUxLCA1NCwgNTYsIDEsIDIyNSwgMzUsIDU2LCAxLCAyNDEsIDIyMiwgNTYsIDEsIDI1MSwgCi0gICAgMjUxLCA1NiwgMSwgMjI2LCA5NiwgNTYsIDEsIDI0MSwgNTQsIDU2LCAxLCAyNTEsIDEyOCwgNTYsIDEsIDIyNSwgMTUwLCAKLSAgICA1NiwgMSwgMTg4LCA1NiwgMSwgMjMxLCA0MiwgNTYsIDEsIDIzMCwgMTcyLCA1NiwgMSwgMjMxLCAxNTYsIDU2LCAxLCAyMzAsIAotICAgIDIzMSwgNTYsIDEsIDMsIDE4NiwgNTYsIDEsIDE4NiwgNTYsIDEsIDMsIDIxMiwgMjAzLCA1NiwgMSwgMjEyLCAyMDMsIDU2LCAKLSAgICAxLCAzLCAyMTIsIDIzNSwgNTYsIDEsIDIxMiwgMjM1LCA1NiwgMSwgMjAzLCA1NiwgMSwgMjIzLCAxODgsIDU2LCAxLCAyMjMsIAotICAgIDUxLCA1NiwgMSwgMjI0LCAyMSwgNTYsIDEsIDIyMywgMTEyLCA1NiwgMSwgMywgMjE0LCA0OSwgNTYsIDEsIDIxNCwgNDksIAotICAgIDU2LCAxLCAyMTMsIDIzNSwgNTYsIDEsIDIxNCwgNiwgNTYsIDEsIDIxMywgMjE0LCA1NiwgMSwgMjA0LCA1NiwgMSwgMjE0LCAKLSAgICA5OSwgNTYsIDEsIDMsIDE4MSwgNTYsIDEsIDMsIDIzNCwgMTg4LCA1NiwgMSwgMjE1LCAxLCA1NiwgMSwgMjE0LCAxNTQsIAotICAgIDU2LCAxLCAyMTQsIDIzMiwgNTYsIDEsIDIxNCwgMTE5LCA1NiwgMjMxLCAzNywgMjQ3LCA3NCwgMjM0LCAyMDYsIDIyNSwgCi0gICAgNTcsIDIxOSwgMjE4LCA3NywgNTYsIDIzNSwgMTU2LCA3NywgNTYsIDIxNCwgMTE2LCAyMzUsIDE1NiwgNzcsIDU2LCAyNDcsIAotICAgIDE3MywgMjM0LCA4LCAyMDIsIDEsIDI1MywgNzQsIDIwMiwgMSwgMjI2LCAyMjksIDIwMiwgMSwgMTgzLCAyMDIsIDEsIDI0NCwgCi0gICAgMjMwLCAyMDIsIDEsIDI0OSwgMywgMjAyLCAxLCAyMTgsIDk5LCAyMDIsIDEsIDIwNCwgMjAyLCAxLCAxNTAsIDIwMiwgMSwgCi0gICAgMjQzLCAxNzcsIDIwMiwgMSwgMjM1LCAyNywgMjAyLCAxLCAyNDIsIDQxLCAyMDIsIDEsIDIzNSwgMTQyLCAyMDIsIDEsIAotICAgIDIyNCwgMjQwLCAyMDIsIDEsIDIxMywgMTY2LCAyMDIsIDEsIDIxMiwgNzYsIDIwMiwgMSwgMjUwLCA5MywgMjAyLCAxLCAKLSAgICAyMjEsIDI2LCAyMDIsIDEsIDE0OSwgMjAyLCAxLCAyMTIsIDE1MiwgMjAyLCAxLCAyNTAsIDI1MiwgMjAyLCAxLCAxOTcsIAotICAgIDIwMiwgMSwgNjEsIDIwMiwgMSwgNzUsIDIwMiwgMSwgNzQsIDIwMiwgMSwgMjQ1LCAxNTQsIDIwMiwgMSwgMjU0LCAxMDgsIAotICAgIDIwMiwgMSwgMjQ1LCAxNTIsIDIwMiwgMSwgMjUzLCAxMDgsIDIwMiwgMSwgMjI3LCAyLCAyMDIsIDEsIDI1NCwgMzIsIDIwMiwgCi0gICAgMSwgMjQ1LCAxMDgsIDIwMiwgMSwgMjU0LCAyNCwgMjAyLCAxLCAyNDUsIDk2LCAyMDIsIDEsIDI0NSwgNTUsIDIwMiwgMSwgCi0gICAgNzIsIDIwMiwgMSwgNjksIDIwMiwgMSwgMjM1LCAxNTQsIDIwMiwgMSwgMjE1LCA3OSwgMjAyLCAxLCAyMjksIDE2MSwgMjAyLCAKLSAgICAxLCAyNDIsIDE1NCwgMjAyLCAxLCAyMzYsIDI5LCAyMywgMSwgMjM0LCA2NywgMjMsIDEsIDIxOSwgMTUwLCAyMywgMSwgCi0gICAgMjM0LCA2MCwgMjMsIDEsIDIyOSwgNTcsIDIzLCAxLCAyMjksIDU1LCAyMywgMSwgMjI5LCA1NCwgMjMsIDEsIDIxNywgNTUsIAotICAgIDIzLCAxLCAyMTksIDEzOSwgMjMsIDEsIDIyMywgMTc5LCAyMywgMSwgMjIzLCAxNzQsIDIzLCAxLCAyMjMsIDE3MSwgMjMsIAotICAgIDEsIDIyMywgMTY0LCAyMywgMSwgMjIzLCAxNTksIDIzLCAxLCAyMjMsIDE1NCwgMjMsIDEsIDIyMywgMTY1LCAyMywgMSwgCi0gICAgMjIzLCAxNzcsIDIzLCAxLCAyMzEsIDMwLCAyMywgMSwgMjI1LCAyMjcsIDIzLCAxLCAyMTksIDE0NywgMjMsIDEsIDIyNSwgCi0gICAgMjE2LCAyMywgMSwgMjIwLCA3NiwgMjMsIDEsIDIxOSwgMTQ0LCAyMywgMSwgMjM2LCA1MSwgMjMsIDEsIDI0OSwgMjM5LCAKLSAgICAyMywgMSwgMjE5LCAxNTQsIDIzLCAxLCAyNTAsIDQzLCAyMywgMSwgMjM0LCAxMTYsIDIzLCAxLCAyMTcsIDEyNiwgMjMsIDEsIAotICAgIDIyNiwgNywgMjMsIDEsIDI0MSwgMTU4LCAyMywgMSwgNjEsIDIzLCAxLCAyNTQsIDE0OCwgMjMsIDEsIDE4NiwgMjMsIDEsIAotICAgIDIxMywgODAsIDIzLCAxLCAyNDUsIDc2LCAyMywgMSwgNzQsIDIzLCAxLCAyMTMsIDI3LCAyMywgMSwgMjEzLCAzOCwgMjMsIAotICAgIDEsIDc1LCAyMywgMSwgMjE0LCA0OSwgMjMsIDEsIDIxNCwgNDYsIDIzLCAxLCAyMjcsIDk5LCAyMywgMSwgMjEyLCAyMzUsIAotICAgIDIzLCAxLCA2OSwgMjMsIDEsIDIxMywgMjUyLCAyMywgMSwgMjE0LCA2LCAyMywgMSwgMjEzLCAyMzUsIDIzLCAxLCAyMTIsIAotICAgIDIwMywgMjMsIDEsIDI0NSwgMjIsIDIzLCAxLCAyMTIsIDI1NSwgMjMsIDEsIDcyLCAyMywgMjQ0LCA3MiwgMjMsIDEsIDIxOSwgCi0gICAgMTQ4LCAyMywgMSwgMjI5LCA0NywgMjMsIDEsIDIyOSwgNDksIDIzLCAxLCAyMjksIDUyLCAyMywgMSwgMjIzLCAxNzIsIDIzLCAKLSAgICAxLCAyMjMsIDE1MywgMjMsIDEsIDIyMywgMTYxLCAyMywgMSwgMjIzLCAxNjYsIDIzLCAxLCAyMjMsIDE1MSwgMjMsIDEsIAotICAgIDIzMSwgMjMsIDIzLCAxLCAyMzEsIDIwLCAyMywgMSwgMjMxLCAyNCwgMjMsIDEsIDIzNCwgMjI2LCAyMywgMSwgMjI1LCAKLSAgICAyMjIsIDIzLCAxLCAyMjUsIDIwOCwgMjMsIDEsIDIyNSwgMjE0LCAyMywgMSwgMjI1LCAyMTEsIDIzLCAxLCAyMjUsIDIyNSwgCi0gICAgMjMsIDEsIDIyNSwgMjA5LCAyMywgMSwgMjM0LCAyMjQsIDIzLCAxLCAyMzQsIDIyMiwgMjMsIDEsIDIyMCwgNjksIDIzLCAxLCAKLSAgICAyMjAsIDY3LCAyMywgMSwgMjIwLCA1OSwgMjMsIDEsIDIyMCwgNjQsIDIzLCAxLCAyMjAsIDc0LCAyMywgMSwgMjI2LCAxNjAsIAotICAgIDIzLCAxLCAyMTksIDE1MSwgMjMsIDEsIDIxMywgMTcsIDIzLCAxLCAyMTMsIDEzLCAyMywgMSwgMjEzLCAxNCwgMjMsIDEsIAotICAgIDIzNCwgMjI1LCAyMywgMSwgMjE5LCAxNTIsIDIzLCAxLCAyMTMsIDIzLCAyMywgMSwgMjEyLCAyMjksIDIzLCAxLCAyMTIsIAotICAgIDIyOCwgMjMsIDEsIDIxMiwgMjMxLCAyMywgMSwgMjEyLCAxOTQsIDIzLCAxLCAyMTIsIDE5NSwgMjMsIDEsIDIxMiwgMTk4LCAKLSAgICAyMywgMSwgMjUzLCAyMDQsIDIzLCAxLCAyNTMsIDE5OCwgMTA1LCAyNTQsIDEwLCAyMzIsIDIzMiwgNzcsIDEwNSwgMjU0LCAKLSAgICAxMCwgMjIzLCAyMDMsIDc3LCAxMDUsIDI1NCwgMTAsIDEyMiwgNzcsIDEwNSwgMjU0LCAxMCwgMTE3LCA3NywgMTA1LCAyNTQsIAotICAgIDEwLCAxMzMsIDc3LCAxMDUsIDI1NCwgMTAsIDI0MywgMjM3LCA3NywgMTA1LCAyNTQsIDEwLCAyMTYsIDIyNywgNzcsIDEwNSwgCi0gICAgMjU0LCAxMCwgMjMxLCAzNywgNzcsIDEwNSwgMjU0LCAxMCwgMjUxLCAxMDEsIDc3LCAxMDUsIDI1NCwgMTAsIDI0NCwgNjEsIAotICAgIDc3LCAxMDUsIDI1NCwgMTAsIDIyMiwgOTUsIDc3LCAxMDUsIDI1NCwgMTAsIDIxNywgMTIyLCA3NywgMTA1LCAyNTQsIDEwLCAKLSAgICAyNDMsIDIzMCwgNzcsIDEwNSwgMjU0LCAxMCwgMjQxLCAyMDgsIDc3LCAxMDUsIDI1NCwgMTAsIDI0NSwgMTgwLCA3NywgCi0gICAgMTA1LCAyNTQsIDEwLCAyMzEsIDI0OSwgNzcsIDIwMiwgMSwgMjUxLCA1NCwgMjAyLCAxLCAyMTIsIDM3LCAyMDIsIDEsIAotICAgIDIzNSwgMTEwLCAyMDIsIDEsIDI0MiwgOTIsIDIwMiwgMSwgMjQ1LCAxNjUsIDIwMiwgMSwgMjQ1LCA5MywgMjAyLCAxLCAKLSAgICAyMjcsIDQ5LCAyMDIsIDEsIDIyNywgNTMsIDIwMiwgMSwgMjM1LCAxNzcsIDIwMiwgMSwgMjU0LCAxMiwgMjAyLCAxLCAyMzUsIAotICAgIDIyMSwgMjAyLCAxLCAyMTUsIDEzOSwgMjAyLCAxLCAyMzYsIDExLCAyMDIsIDEsIDIyOSwgMTQyLCAyMDIsIDEsIDI1NCwgCi0gICAgMTAyLCAyMDIsIDEsIDI1MywgMTAzLCAyMDIsIDEsIDI1NCwgNDUsIDIwMiwgMSwgMjI3LCA3MCwgMjAyLCAxLCAyMjcsIDU1LCAKLSAgICAyMDIsIDEsIDIzNSwgMjE4LCAyMDIsIDQwLCAxLCAyMjYsIDIyOSwgMjAyLCA0MCwgMSwgMjE4LCA5OSwgMjAyLCA0MCwgMSwgCi0gICAgMjM1LCAyNywgMjAyLCA0MCwgMSwgMjQyLCA0MSwgMjAyLCAxLCAyNDIsIDIyNiwgMjAyLCAxLCAyMzMsIDI2LCAyMDIsIDEsIAotICAgIDIxMSwgMjQ5LCA5LCAyMTksIDQ1LCAyMTgsIDk5LCA5LCAyMTksIDQ1LCAyMTMsIDI0NSwgOSwgMjE5LCA0NSwgMjEzLCAKLSAgICAxNDYsIDksIDIxOSwgNDUsIDI1MSwgOCwgOSwgMjE5LCA0NSwgMjE4LCAxOTksIDksIDIxOSwgNDUsIDI0MCwgMTUwLCA5LCAKLSAgICAyMTksIDQ1LCAyNDAsIDE1NCwgOSwgMjE5LCA0NSwgMjQwLCAyMTgsIDksIDIxOSwgNDUsIDI0MCwgMTUxLCA5LCAyMTksIAotICAgIDQ1LCAyMTgsIDEwMiwgOSwgMjE5LCA0NSwgMjQwLCAxNTMsIDksIDIxOSwgNDUsIDI0MCwgMTQ5LCA5LCAyMTksIDQ1LCAKLSAgICAyNDAsIDIxNiwgOSwgMjE5LCA0NSwgMjQwLCAxNTIsIDksIDIxOSwgNDUsIDI0MCwgMTQ4LCA5LCAyMTksIDQ1LCAyMDQsIDksIAotICAgIDIxOSwgNDUsIDI0MiwgNDEsIDksIDIxOSwgNDUsIDE5NywgOSwgMjE5LCA0NSwgMjI2LCAyMjksIDksIDIxOSwgNDUsIDIxOSwgCi0gICAgMjA4LCA5LCAyMTksIDQ1LCAyNDksIDMsIDksIDIxOSwgNDUsIDI0MCwgMTU1LCA5LCAyMTksIDQ1LCAyNDEsIDE3NSwgOSwgCi0gICAgMjE5LCA0NSwgMjE4LCAxMTEsIDksIDIxOSwgNDUsIDIxOCwgMTc4LCA5LCAyMTksIDQ1LCAyMTksIDEwNywgOSwgMjE5LCAKLSAgICA0NSwgMjIxLCAzMSwgOSwgMjE5LCA0NSwgMjI2LCA5OCwgOSwgMjE5LCA0NSwgMjI0LCAyNDIsIDksIDIxOSwgNDUsIDIxNiwgCi0gICAgMjUzLCA5LCAyMTksIDQ1LCAyMTgsIDEwMSwgOSwgMjE5LCA0NSwgMjE4LCAxODksIDksIDIxOSwgNDUsIDI0MCwgMTYyLCA5LCAKLSAgICAyMTksIDQ1LCAyNDAsIDE0NywgOSwgMjE5LCA0NSwgMjI2LCAyNSwgOSwgMjE5LCA0NSwgMjI0LCAyNDAsIDU2LCAxLCAzLCAKLSAgICAyMzMsIDIzOCwgNTYsIDEsIDMsIDIyMCwgMTE3LCA1NiwgMSwgMywgMjE5LCAyNywgNTYsIDEsIDMsIDEwOCwgNTYsIDEsIDMsIAotICAgIDIyOCwgOTIsIDU2LCAxLCAzLCAxNTksIDU2LCAxLCAzLCAyNDEsIDE2NSwgNTYsIDEsIDMsIDI0MCwgMjEyLCA1NiwgMSwgMywgCi0gICAgMjQxLCAyMjIsIDU2LCAxLCAzLCAyNDEsIDU0LCA1NiwgMSwgMywgMjMwLCAxNzIsIDU2LCAxLCAzLCAyMDMsIDU2LCAxLCAzLCAKLSAgICAyMjMsIDE4OCwgNTYsIDEsIDMsIDIyMywgNTEsIDU2LCAxLCAzLCAyMjQsIDIxLCA1NiwgMSwgMywgMjIzLCAxMTIsIDg2LCAKLSAgICAyMywgMjM0LCA2NywgODYsIDIzLCAyMjksIDU3LCA4NiwgMjMsIDIxNywgNTUsIDg2LCAyMywgMjIzLCAxNzksIDg2LCAyMywgCi0gICAgMjMxLCAzMCwgODYsIDIzLCAyMjUsIDIyNywgODYsIDIzLCAyMjAsIDc2LCA4NiwgMjMsIDIzNiwgNTEsIDg2LCAyMywgMjQ5LCAKLSAgICAyMzksIDg2LCAyMywgMjUwLCA0MywgODYsIDIzLCAyMzQsIDExNiwgODYsIDIzLCAyMTcsIDEyNiwgODYsIDIzLCAyMjYsIDcsIAotICAgIDg2LCAyMywgMjQxLCAxNTgsIDg2LCAyMywgMjM0LCA2OCwgNjEsIDg2LCAyMywgMjI5LCA1OCwgNjEsIDg2LCAyMywgMjE3LCAKLSAgICA1NiwgNjEsIDg2LCAyMywgMjIzLCAxODAsIDYxLCA4NiwgMjMsIDIzMSwgMzEsIDYxLCA4NiwgMjMsIDIyNSwgMjI4LCA2MSwgCi0gICAgODYsIDIzLCAyMjAsIDc3LCA2MSwgODYsIDIzLCAyMzYsIDUyLCA2MSwgODYsIDIzLCAyNDksIDI0MCwgNjEsIDg2LCAyMywgCi0gICAgMjUwLCA0NCwgNjEsIDg2LCAyMywgMjM0LCAxMTcsIDYxLCA4NiwgMjMsIDIxNywgMTI3LCA2MSwgODYsIDIzLCAyMjYsIDgsIAotICAgIDYxLCA4NiwgMjMsIDI0MSwgMTU5LCA2MSwgODYsIDIzLCAyNDksIDI0MCwgNjksIDg2LCAyMzQsIDEyLCAxMzcsIDIyNywgCi0gICAgODMsIDg2LCAyMzQsIDEyLCAxMzcsIDE1NywgMjQwLCAyMTIsIDg2LCAxNDMsIDExNiwgODYsIDE0MywgMTA5LCA4NiwgMTQzLCAKLSAgICAxNjYsIDg2LCAxNDMsIDE2MywgODYsIDE0MywgMTgwLCA4NiwgMTQzLCAxODksIDg2LCAxNDMsIDE5OCwgODYsIDE0MywgCi0gICAgMTk1LCA4NiwgMTQzLCAyMDAsIDg2LCAxNDMsIDIxNywgMjAwLCA4NiwgMTQzLCAyMzAsIDE5OCwgODYsIDE0MywgMjQ0LCAKLSAgICA2NSwgODYsIDE0MywgMjE0LCAyNCwgODYsIDE0MywgMjEzLCAyMDEsIDg2LCAxNDMsIDIzMSwgMTA2LCA4NiwgMTQzLCAyNDUsIAotICAgIDE3OSwgODYsIDE0MywgMjE4LCAyMzgsIDg2LCAxNDMsIDIxOSwgNzIsIDg2LCAxNDMsIDI0MSwgMjI4LCA4NiwgMTQzLCAKLSAgICAyMTksIDIzOCwgODYsIDE0MywgMjMwLCAyNCwgODYsIDE0MywgMjE5LCAxOTIsIDg2LCAxNDMsIDI0NCwgNzEsIDg2LCAxNDMsIAotICAgIDI0OSwgMTQwLCA4NiwgMTQzLCAyMzMsIDE0OCwgODYsIDE0MywgMjIzLCAyMjMsIDg2LCAxNDMsIDI1MCwgMjAzLCA4NiwgCi0gICAgMTQzLCAyMTksIDMwLCA4NiwgMTQzLCAyMTgsIDIyMCwgODYsIDE0MywgMjQ1LCA4NiwgODYsIDE0MywgMjIzLCAyMTUsIDg2LCAKLSAgICAxNDMsIDI1NCwgNTksIDg2LCAxNDMsIDI0NCwgOTcsIDg2LCAxNDMsIDIyMywgMjEzLCA4NiwgMTQzLCAyMjEsIDc2LCA4NiwgCi0gICAgMTQzLCAyMjQsIDIwLCAzNiwgMTQzLCAyMjQsIDE1NywgMzYsIDE0MywgMjM0LCA4OSwgMzYsIDE0MywgMjIyLCAxMTYsIDM2LCAKLSAgICAxNDMsIDIzNCwgOCwgMzYsIDUwLCAyMTcsIDIwMSwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIDIxNiwgMzksIAotICAgIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyMTcsIDExNiwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIAotICAgIDI0MywgMjQxLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjQ0LCA4NCwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAKLSAgICAzNiwgNTAsIDIyMCwgNDAsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyMjEsIDM4LCAyMjcsIDYzLCA4MywgCi0gICAgMjE5LCAxNjYsIDM2LCA1MCwgMjQ1LCAxNDIsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMjI2LCAxMjMsIDUyLCAzNiwgNTAsIAotICAgIDIxNiwgMzksIDExNiwgMzYsIDUwLCAyMTYsIDM5LCAxMDksIDM2LCA1MCwgMjE2LCAzOSwgMTY2LCAzNiwgNTAsIDIxNiwgCi0gICAgMzksIDE2MywgMzYsIDUwLCAyMTYsIDM5LCAxODAsIDM2LCA1MCwgMjE2LCAzOSwgMTg5LCAzNiwgNTAsIDIxNiwgMzksIAotICAgIDE5OCwgMzYsIDUwLCAyMTYsIDM5LCAxOTUsIDM2LCA1MCwgMjE2LCAzOSwgMjAwLCAzNiwgNTAsIDIxNywgMTE1LCAzNiwgCi0gICAgNTAsIDIxNywgMTE2LCAxMTYsIDM2LCA1MCwgMjE3LCAxMTYsIDEwOSwgMzYsIDUwLCAyMTcsIDExNiwgMTY2LCAzNiwgNTAsIAotICAgIDIxNywgMTE2LCAxNjMsIDM2LCA1MCwgMjE3LCAxMTYsIDE4MCwgMzYsIDIzLCAyMzQsIDY3LCAzNiwgMjMsIDIyOSwgNTcsIAotICAgIDM2LCAyMywgMjE3LCA1NSwgMzYsIDIzLCAyMjMsIDE3OSwgMzYsIDIzLCAyMzEsIDMwLCAzNiwgMjMsIDIyNSwgMjI3LCAzNiwgCi0gICAgMjMsIDIyMCwgNzYsIDM2LCAyMywgMjM2LCA1MSwgMzYsIDIzLCAyNDksIDIzOSwgMzYsIDIzLCAyNTAsIDQzLCAzNiwgMjMsIAotICAgIDIzNCwgMTE2LCAzNiwgMjMsIDIxNywgMTI2LCAzNiwgMjMsIDIyNiwgNywgMzYsIDIzLCAyNDEsIDE1OCwgMzYsIDIzLCAKLSAgICAyMzQsIDY4LCA2MSwgMzYsIDIzLCAyMjksIDU4LCA2MSwgMzYsIDIzLCAyMTcsIDU2LCA2MSwgMzYsIDIzLCAyMjMsIDE4MCwgCi0gICAgNjEsIDM2LCAyMywgMjMxLCAzMSwgNjEsIDM2LCAyMywgMjI1LCAyMjgsIDYxLCAzNiwgMjMsIDIyMCwgNzcsIDYxLCAzNiwgCi0gICAgMjMsIDIzNiwgNTIsIDYxLCAzNiwgMjMsIDI0OSwgMjQwLCA2MSwgMzYsIDIzLCAyNTAsIDQ0LCA2MSwgMzYsIDIzLCAyMzQsIAotICAgIDExNywgNjEsIDM2LCAyMywgMjE3LCAxMjcsIDYxLCAzNiwgMjMsIDIyNiwgOCwgNjEsIDM2LCAyMywgMjQxLCAxNTksIDYxLCAKLSAgICAzNiwgMjM0LCAxMiwgMTM3LCAyNTAsIDg0LCAzNiwgMjM0LCAxMiwgMTM3LCAyMzUsIDUwLCAzNiwgMjMsIDIzNiwgNTIsIAotICAgIDY5LCAyMzQsIDEyLCAyMTksIDk4LCA4NywgMzYsIDE0MywgMTE2LCAzNiwgMTQzLCAxMDksIDM2LCAxNDMsIDE2NiwgMzYsIAotICAgIDE0MywgMTYzLCAzNiwgMTQzLCAxODAsIDM2LCAxNDMsIDE4OSwgMzYsIDE0MywgMTk4LCAzNiwgMTQzLCAxOTUsIDM2LCAKLSAgICAxNDMsIDIwMCwgMzYsIDE0MywgMjE3LCAyMDAsIDM2LCAxNDMsIDIzMCwgMTk4LCAzNiwgMTQzLCAyNDQsIDY1LCAzNiwgCi0gICAgMTQzLCAyMTQsIDI0LCAzNiwgMTQzLCAyMTMsIDIwMSwgMzYsIDE0MywgMjMxLCAxMDYsIDM2LCAxNDMsIDI0NSwgMTc5LCAKLSAgICAzNiwgMTQzLCAyMTgsIDIzOCwgMzYsIDE0MywgMjE5LCA3MiwgMzYsIDE0MywgMjQxLCAyMjgsIDM2LCAxNDMsIDIxOSwgCi0gICAgMjM4LCAzNiwgMTQzLCAyMzAsIDI0LCAzNiwgMTQzLCAyMTksIDE5MiwgMzYsIDE0MywgMjQ0LCA3MSwgMzYsIDE0MywgMjQ5LCAKLSAgICAxNDAsIDM2LCAxNDMsIDIzMywgMTQ4LCAzNiwgMTQzLCAyMjIsIDkzLCAzNiwgMTQzLCAyMzEsIDI1MiwgMzYsIDE0MywgCi0gICAgMjQ0LCAxMDYsIDM2LCAxNDMsIDIxOCwgMjUwLCAzNiwgMTQzLCAyNDUsIDEsIDM2LCAxNDMsIDIyNSwgNjgsIDM2LCAxNDMsIAotICAgIDI1MywgMTEyLCAzNiwgMTQzLCAyMzUsIDE1NywgMzYsIDE0MywgMjIzLCAyMTMsIDM2LCAxNDMsIDI0OSwgMTAzLCAzNiwgCi0gICAgMTQzLCAyNDksIDk0LCAzNiwgMTQzLCAyNDEsIDE1MSwgMzYsIDE0MywgMjUwLCAxMDgsIDM2LCAxNDMsIDIzMiwgMTY1LCAKLSAgICAzNiwgMTQzLCAyMzMsIDcwLCAzNiwgMTQzLCAyMjMsIDE0OCwgMzYsIDE0MywgMjMxLCAxNDgsIDM2LCAxNDMsIDIyMywgCi0gICAgMjM3LCAzNiwgMTQzLCAyMTksIDMwLCAzNiwgMTQzLCAyMTgsIDIyMCwgMzYsIDE0MywgMjQ1LCA4NiwgMzYsIDE0MywgMjIzLCAKLSAgICAyMTUsIDM2LCAxNDMsIDI1NCwgNTksIDM2LCAxNDMsIDIyOSwgNDMsIDM2LCA1MCwgMjE3LCAxMTYsIDE4OSwgMzYsIDUwLCAKLSAgICAyMTcsIDExNiwgMTk4LCAzNiwgNTAsIDIxNywgMTE2LCAxOTUsIDM2LCA1MCwgMjE3LCAxMTYsIDIwMCwgMzYsIDUwLCAyNDMsIAotICAgIDI0MCwgMzYsIDUwLCAyNDMsIDI0MSwgMTE2LCAzNiwgNTAsIDI0MywgMjQxLCAxMDksIDM2LCA1MCwgMjQzLCAyNDEsIDE2NiwgCi0gICAgMzYsIDUwLCAyNDMsIDI0MSwgMTYzLCAzNiwgNTAsIDI0MywgMjQxLCAxODAsIDM2LCA1MCwgMjQzLCAyNDEsIDE4OSwgMzYsIAotICAgIDUwLCAyNDMsIDI0MSwgMTk4LCAzNiwgNTAsIDI0MywgMjQxLCAxOTUsIDM2LCA1MCwgMjQzLCAyNDEsIDIwMCwgMzYsIDUwLCAKLSAgICAyNDQsIDgzLCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDEzMywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ0LCAxMTcsIDEwNSwgCi0gICAgMjAxLCAxNiwgMzEsIDIzMSwgMjIzLCAxMDUsIDIwMSwgMTYsIDMxLCAyNTMsIDIxNywgMTA1LCAyMDEsIDE2LCAzMSwgMjMxLCAKLSAgICAxOTYsIDEwNSwgMjAxLCAxNiwgMzEsIDIzNSwgNDgsIDEwNSwgMjAxLCAxNiwgMzEsIDIzNSwgNDksIDEwNSwgMjAxLCAxNiwgCi0gICAgMzEsIDI1MywgMTA0LCAxMDUsIDIwMSwgMTYsIDMxLCAyMjEsIDU2LCAxMDUsIDIwMSwgMTYsIDMxLCAyMjcsIDEwNCwgMTA1LCAKLSAgICAyMDEsIDE2LCAzMSwgMjI4LCAxNTEsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgMzYsIDQxLCAyNDEsIDE3NSwgNDEsIDI0NSwgCi0gICAgNTEsIDQxLCAyNDUsIDEwLCAyMzIsIDI0OCwgMjMzLCAxMiwgNTIsIDM2LCA1NiwgNjEsIDM2LCA1NiwgNzIsIDM2LCA1NiwgCi0gICAgNjksIDM2LCA1NiwgNzQsIDM2LCA1NiwgNzUsIDM2LCA1NiwgMTgxLCAzNiwgNTYsIDIzNCwgMTAxLCAzNiwgNTYsIDIzMywgCi0gICAgMjM4LCAzNiwgNTYsIDIzNCwgMTg4LCAzNiwgNTYsIDIzNCwgMzcsIDM2LCA1NiwgMjIyLCAyMDIsIDM2LCA1NiwgMjIwLCAKLSAgICAxMTcsIDM2LCA1NiwgMjE5LCAyNywgMzYsIDU2LCAyMjIsIDEwMCwgMzYsIDU2LCAyMTksIDI0MiwgMzYsIDU2LCAyMTgsIAotICAgIDUyLCAzNiwgNTYsIDIxNywgNzEsIDM2LCA1NiwgMjE2LCA4MiwgMzYsIDU2LCAyMTcsIDIyOSwgMzYsIDU2LCAxMDgsIDM2LCAKLSAgICA1NiwgMjA1LCAzNiwgNTYsIDIyOSwgNjQsIDM2LCA1NiwgMjI4LCA5MiwgMzYsIDU2LCAyMjksIDE4NywgMzYsIDU2LCAyMjgsIAotICAgIDE4NSwgMzYsIDU2LCAxNTksIDM2LCA1NiwgMjQxLCAxNjUsIDM2LCA1NiwgMjQwLCAyMTIsIDM2LCA1NiwgMjQxLCAyMjIsIAotICAgIDM2LCA1NiwgMjQxLCA1NCwgMzYsIDU2LCAxODgsIDM2LCA1NiwgMjMxLCA0MiwgMzYsIDU2LCAyMzAsIDE3MiwgMzYsIDU2LCAKLSAgICAyMzEsIDE1NiwgMzYsIDU2LCAyMzAsIDIzMSwgMzYsIDU2LCAxODYsIDM2LCA1NiwgMjEyLCAyMDMsIDM2LCA1NiwgMjEyLCAKLSAgICAyMzUsIDM2LCA1NiwgMjAzLCAzNiwgNTYsIDIyMywgMTg4LCAzNiwgNTYsIDIyMywgNTEsIDM2LCA1NiwgMjI0LCAyMSwgMzYsIAotICAgIDU2LCAyMjMsIDExMiwgMzYsIDU2LCAyMTQsIDQ5LCAzNiwgNTYsIDIxMywgMjM1LCAzNiwgNTYsIDIxNCwgNiwgMzYsIDU2LCAKLSAgICAyMTMsIDIxNCwgNDEsIDI1MywgMjM4LCA0MSwgMjUzLCAxNTQsIDQxLCAyNTQsIDYsIDQxLCAyNTQsIDE5MCwgNDEsIDIzNSwgCi0gICAgMjIzLCA0MSwgMjM1LCAxOTMsIDQxLCAyMTUsIDEzNywgNDEsIDI0NSwgMzEsIDQxLCAyNDUsIDE2MywgNDEsIDIyNywgNTIsIAotICAgIDQxLCAyMjcsIDQ2LCA0MSwgMjM0LCAyNDksIDQxLCAyMzQsIDIxOSwgNDEsIDIzNCwgMjE2LCA0MSwgMjQzLCA2OCwgNDEsIAotICAgIDI0MywgNzcsIDQxLCAyNDIsIDE4MCwgNDEsIDI0MiwgMTc2LCA0MSwgMjMzLCAxNzIsIDQxLCAyNDIsIDE2OSwgNDEsIDIzNCwgCi0gICAgODEsIDQxLCAyMzQsIDgwLCA0MSwgMjM0LCA3OSwgNDEsIDIzNCwgNzgsIDQxLCAyNDIsIDY3LCA0MSwgMjQyLCA2NiwgNDEsIAotICAgIDIzMywgMjE0LCA0MSwgMjMzLCAyMTYsIDQxLCAyMzQsIDE4NCwgNDEsIDIzNCwgMTAsIDQxLCAyMzQsIDE3LCA0MSwgMjIyLCAKLSAgICAxODcsIDQxLCAyMjIsIDE1MywgNDEsIDIyMCwgNTcsIDQxLCAyMjEsIDYxLCA0MSwgMjIxLCA2MCwgNDEsIDI0OCwgMTYxLCAKLSAgICA0MSwgMjQ3LCAyNDMsIDQxLCAyNDcsIDc1LCA0MSwgMjE2LCAyNDMsIDQxLCAyMzAsIDIwLCA0MSwgMjI4LCAxNTIsIDQxLCAKLSAgICAyNDIsIDE0LCA0MSwgMjI2LCAyMDgsIDQxLCAyMjYsIDIwNywgNDEsIDI1MiwgMTA1LCA0MSwgMjI1LCAyMzcsIDQxLCAyMjUsIAotICAgIDIwMSwgNDEsIDIyNSwgMjAyLCA0MSwgMjUxLCAxNTcsIDQxLCAyNDAsIDIxMSwgNDEsIDI0MCwgMjA3LCA0MSwgMjUxLCAyMCwgCi0gICAgNDEsIDI0MCwgMTk0LCA0MSwgMjQxLCAxOTksIDQxLCAyMjYsIDM1LCA0MSwgMjI2LCA2OSwgNDEsIDI0MSwgMTgzLCA0MSwgCi0gICAgMjI2LCA2NiwgNDEsIDIyNiwgODIsIDQxLCAyNTEsIDIzNywgNDEsIDIyNSwgMTQwLCA0MSwgMjUxLCAxMDYsIDQxLCAyNDEsIAotICAgIDQyLCA0MSwgMjI1LCAxMzAsIDQxLCAyNDEsIDM1LCA0MSwgMjQxLCAzNywgNDEsIDIzMiwgNywgNDEsIDIzMiwgMywgNDEsIAotICAgIDIzMiwgMTEsIDQxLCAyMzEsIDIxMywgNDEsIDIzMSwgMjM4LCA0MSwgMjMxLCAxMCwgNDEsIDIzMCwgMjQ1LCA0MSwgMjMwLCAKLSAgICAyNDQsIDQxLCAyMzEsIDEzOCwgNDEsIDIzMSwgMTM1LCA0MSwgMjMxLCAxMzksIDQxLCAyMTMsIDkwLCA0MSwgMjEzLCA4OCwgCi0gICAgNDEsIDIxMiwgMTkyLCA0MSwgMjIzLCAxMjMsIDQxLCAyMjMsIDEyNywgNDEsIDIyMywgMjgsIDQxLCAyMjMsIDIzLCA0MSwgCi0gICAgMjIzLCAyMzUsIDQxLCAyMjMsIDIzMiwgNDEsIDIxNCwgMjIsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTIsIDc5LCAKLSAgICAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTE2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTA5LCAxMDUsIAotICAgIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTY2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTYzLCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMTgwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTg5LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDAsIDIyNiwgMTk4LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTk1LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIAotICAgIDIyNiwgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE3LCAyMDAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgCi0gICAgMjI2LCAyNDUsIDEyNCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgNDEsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0MCwgMjI2LCAyMTcsIDExNywgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDI0MywgMjMxLCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDAsIDIyNiwgMjQ0LCA4NywgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIyMCwgNDcsIDEwNSwgMjAxLCAxNiwgCi0gICAgMzEsIDI0MCwgMjI2LCAyMjEsIDQwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjQ1LCAxNDcsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0MCwgMjI2LCAyMjksIDI4LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAzOCwgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMzIsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDI4LCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAyOSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMzQsIDQxLCAyNDAsIAotICAgIDIxNywgNDEsIDI0OCwgMTY0LCA0MSwgMjUzLCAxMDgsIDQxLCAxMzQsIDQxLCAyMjYsIDI0OSwgNDEsIDIyNiwgOTksIDQxLCAKLSAgICAyNDcsIDEwMSwgNDEsIDI0NywgMTAyLCAyMTksIDE2NSwgNDEsIDI0NywgMTAyLCAyNDksIDQ5LCA0MSwgMjM1LCAxNTQsIAotICAgIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyNDEsIDIwMCwgNDEsIDI0NSwgNTQsIDIzMCwgMjUsIDIxOCwgMTIwLCA0MSwgMjQ1LCAKLSAgICA1NCwgMjMwLCAyNSwgMjE4LCAyNCwgNDEsIDI0NSwgNTQsIDIzMCwgMjUsIDIzMSwgMTM0LCA0MSwgMjQ5LCA5NiwgNDEsIAotICAgIDIyNiwgMjE0LCAyNTQsIDM0LCA0MSwgMjA1LCA0MSwgMjMwLCAxNzMsIDYxLCA0MSwgMTg4LCA0MSwgMTgxLCA0MSwgMjM0LCAKLSAgICAxOTEsIDQxLCAyMzEsIDE5MiwgNDEsIDI0MywgNTYsIDQxLCAyNTAsIDIwNiwgNDEsIDIzNCwgMTkwLCA0MSwgMjI2LCAyNiwgCi0gICAgNDEsIDIyOSwgMTYzLCA0MSwgMjMwLCAxNzMsIDI0NCwgMjMwLCA0MSwgMjMwLCAxNzMsIDI0MywgMTc3LCA0MSwgMjMxLCAKLSAgICA4MiwgNDEsIDIzNCwgMTQwLCA0MSwgMjQwLCAxNTUsIDQxLCAyMzQsIDEwMywgNDEsIDIzMSwgNDQsIDQxLCAyNDIsIDE5MiwgCi0gICAgNDEsIDIxNywgNzMsIDQxLCAyMzAsIDE3MywgMTUwLCA0MSwgMjMwLCAyMzgsIDQxLCAyNDcsIDEwOSwgNDEsIDIzNCwgNDksIAotICAgIDQxLCAyNDQsIDE0LCA0MSwgMjI4LCAyMDAsIDQxLCAyMzAsIDE3MywgMTgzLCA0MSwgMjMwLCAyMzUsIDQxLCAyNDksIDE3NiwgCi0gICAgNDEsIDIzNCwgNDMsIDQxLCAyMzAsIDIzNiwgMjE5LCAxNjUsIDQxLCAyNDksIDE3NywgMjE5LCAxNjUsIDQxLCAyMzIsIAotICAgIDExMCwgMjE5LCAxNjUsIDQxLCAyMzQsIDQ0LCAyMTksIDE2NSwgNDEsIDIzMCwgMjM2LCAyNDksIDQ5LCA0MSwgMjQ5LCAKLSAgICAxNzcsIDI0OSwgNDksIDQxLCAyMzIsIDExMCwgMjQ5LCA0OSwgNDEsIDIzNCwgNDQsIDI0OSwgNDksIDQxLCAyMzIsIDExMCwgCi0gICAgMTEwLCAxOTcsIDQxLCAyMzIsIDExMCwgMTEwLCAyMjMsIDQsIDIxOSwgMTY1LCA0MSwgMTkzLCA0MSwgMjM0LCA0LCA0MSwgCi0gICAgMjMwLCAxNzUsIDQxLCAyNDIsIDEyNywgNDEsIDIyNCwgNjYsIDQxLCAyMjQsIDY3LCAxMTAsIDE5NywgNDEsIDIyNCwgNjcsIAotICAgIDExMCwgMjIzLCA0LCAyMTksIDE2NSwgNDEsIDIyNSwgNDcsIDQxLCAyMjgsIDEyNCwgNDEsIDIzMCwgMTczLCAxOTcsIDQxLCAKLSAgICAyMzAsIDE3NCwgNDEsIDIyNSwgNCwgNDEsIDIyOCwgMzMsIDQxLCAyMzAsIDE3MywgMjE1LCA3OSwgNDEsIDIzMCwgMTIwLCAKLSAgICA0MSwgMjMzLCAyMDcsIDQxLCAyMzAsIDEyMSwgMjMxLCAxMzgsIDQxLCAyMjUsIDMsIDQxLCAyMjgsIDMyLCA0MSwgMjMwLCAKLSAgICAxNzMsIDIxNCwgODIsIDQxLCAyMzAsIDExNSwgNDEsIDIzMywgMjA1LCA0MSwgMjMwLCAxMTYsIDIzMSwgMTM4LCA0MSwgCi0gICAgMjM1LCAyOCwgMjI3LCA4NiwgNDEsIDIzMiwgMTEwLCAyMjcsIDg2LCA0MSwgMjU0LCA0NSwgNDEsIDI1MSwgODcsIDQxLCAKLSAgICAyNTAsIDE0NywgNDEsIDI1MCwgMTI1LCA0MSwgMjUwLCAyNTMsIDExMCwgMjM0LCAxNDAsIDQxLCAyNDksIDE3NSwgNDEsIAotICAgIDI0OCwgODgsIDQxLCAyNDIsIDUzLCA0MSwgMTU5LCA0MSwgMjQwLCAyMTgsIDQxLCAyMzUsIDI1MSwgNDEsIDIzNCwgNTYsIAotICAgIDQxLCAyMzQsIDQ0LCAyNTAsIDE4MiwgNDEsIDIzMywgMjQwLCA0MSwgMjMyLCAyMTEsIDQxLCAyMzIsIDIxMCwgNDEsIDIzMiwgCi0gICAgMjAwLCA0MSwgMjMyLCAxMjIsIDQxLCAyMzEsIDE5MywgMjIwLCA3LCA0MSwgMjMxLCA5LCA0MSwgMjMwLCAyMjIsIDQxLCAKLSAgICAyMjYsIDI0LCA0MSwgMjI1LCAxNTMsIDQxLCAyMjUsIDk5LCA0MSwgMjI1LCA5NywgNDEsIDIxOSwgMTU5LCA0MSwgMjE4LCAKLSAgICAyMDMsIDQxLCAyMTQsIDgsIDQxLCAyMTUsIDgwLCAxMTAsIDE4MywgNDEsIDExOCwgMTEwLCAxODMsIDEwNSwgMjAxLCAxNiwgCi0gICAgMzEsIDI0OCwgOTIsIDExNiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTA5LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIAotICAgIDkyLCAxNjYsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE2MywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTgwLCAKLSAgICAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxODksIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE5OCwgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQ4LCA5MiwgMTk1LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMDAsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNywgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyNDUsIDEyNCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCA0MSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE3LCAxMTcsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDI0MywgMjMxLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyNDQsIDg3LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMjAsIDQ3LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMjEsIDQwLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyNDUsIDE0NywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjI5LCAyOCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzOCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzMiwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAyOCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAyOSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzNCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzNSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzMSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzNywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzMywgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE3LCAxMTUsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNywgMTE0LCA0MSwgMjQzLCA5NCwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTcsIDE0OSwgMjQ5LCA4MCwgMjQxLCAyMDcsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIyNCwgMTUsIAotICAgIDI0NSwgMTc5LCAyNDEsIDE3NywgMzEsIDI0NywgMTgzLCAyNTMsIDEyMywgMjE3LCAxNDksIDI1MSwgMjMyLCAyNDEsIDE3NywgCi0gICAgMzEsIDIxMiwgMjE0LCAyNDQsIDcsIDI0MSwgMTc3LCAzMSwgMjE0LCA0MywgMjQxLCAxNzcsIDMxLCAyNDksIDE0MiwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTcsIDE0OSwgMjUzLCAxNzQsIDI0MSwgMTc3LCAzMSwgMjQxLCA0NiwgMjE2LCAyNDksIDI0MSwgMTc3LCAKLSAgICAzMSwgMywgMjE4LCAxMiwgMjQxLCAxNzcsIDMxLCAyMTYsIDE5NSwgMjQxLCAxNzcsIDMxLCAyMjYsIDk0LCAyNDEsIDE3NywgCi0gICAgMzEsIDIxOSwgOTcsIDI0MSwgMTc3LCAzMSwgMjQ0LCAxMDgsIDI0MSwgMTc3LCAzMSwgMjQyLCAxMDksIDIyNSwgMTIwLCAKLSAgICAyNDEsIDE3NywgMzEsIDIzMCwgMjI1LCAyNDEsIDE3NywgMzEsIDI0NSwgODUsIDI0MSwgMTc3LCAzMSwgMjQ0LCA4LCAyNDEsIAotICAgIDE3NywgMzEsIDIxMywgMTk0LCAyMjcsIDYzLCAyMTcsIDE0OSwgMjQ4LCAzNywgMjQxLCAxNzcsIDMxLCAyNTMsIDIyMSwgCi0gICAgMjQxLCAxNzcsIDMxLCAyNDksIDEyNCwgMjQxLCAxNzcsIDMxLCAyNTEsIDE1MCwgMjE3LCA5MiwgMjQxLCAxNzcsIDMxLCAKLSAgICAyNDIsIDEyNSwgMjQxLCAxNzcsIDMxLCAyMTksIDE3NywgMjUzLCAyMzcsIDI0MSwgMTc3LCAzMSwgMjIzLCAyMDUsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjM1LCAyMTcsIDI0MSwgMTc3LCAzMSwgMjQyLCAxMDksIDIxOCwgMTIsIDI0MSwgMTc3LCAzMSwgMjMwLCAKLSAgICAxODEsIDI0OSwgOTgsIDI0MSwgMTc3LCAzMSwgMjQyLCAxMDksIDIyNSwgNzcsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIAotICAgIDI1NCwgMTc4LCAyMTQsIDI0LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyNDksIDIwMSwgMjQ0LCA2NSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMzUsIDIzMCwgMjQxLCAxNzcsIDMxLCAyNDYsIDEyLCAyNDEsIDE3NywgMzEsIDIyMywgMjA4LCAyNDEsIDE3NywgCi0gICAgMzEsIDI0MiwgMTA5LCAyMjUsIDEwNCwgMjQxLCAxNzcsIDMxLCAyMjUsIDYxLCAyNDEsIDE3NywgMzEsIDI0OCwgMTA2LCAKLSAgICA2NSwgMjE3LCAxNDksIDIzMywgMiwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjQ0LCAxNDIsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjI3LCAyOSwgMjQxLCAxNzcsIDMxLCAyMjcsIDEwOCwgMjQxLCAxNzcsIDMxLCAyNDgsIDEwLCAyNDEsIDE3NywgMzEsIAotICAgIDI0OCwgMzAsIDI0MSwgMTc3LCAzMSwgMjM1LCAyNDMsIDI0MSwgMTc3LCAzMSwgMjUxLCA3NywgMjQxLCAxNzcsIDMxLCAKLSAgICAyNDksIDE1OSwgMjExLCAyMTEsIDIzMSwgMTQxLCAyNDEsIDE3NywgMzEsIDI0MywgNjMsIDIxNiwgMjQ5LCAyNDEsIDE3NywgCi0gICAgMzEsIDIyNSwgMTIsIDIxNSwgMTI1LCAyNDEsIDE3NywgMzEsIDIyNywgMjgsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIAotICAgIDIxMywgMjU0LCAyNDEsIDE3NywgMzEsIDIyMywgMTk4LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyNTAsIDE1MywgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTcsIDE0OSwgMjUzLCAxNzAsIDIxNywgODcsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIzNCwgMTg1LCAKLSAgICAyMTksIDc0LCAyMzAsIDE4NSwgMjQxLCAxNzcsIDMxLCAyNDcsIDIzOSwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjMxLCAKLSAgICAyMTUsIDIzMiwgOCwgMjQxLCAxNzcsIDMxLCAyNTQsIDE3OSwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjE0LCAzOCwgCi0gICAgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjQzLCAyMywgMjEzLCAyMjQsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIzNSwgCi0gICAgNTUsIDIzMywgMTMxLCAyNDEsIDE3NywgMzEsIDI0NywgMTM2LCAyNDEsIDE3NywgMzEsIDIzMiwgMjQ5LCAyNDEsIDE3NywgCi0gICAgMzEsIDIzNSwgMjIwLCAyMTYsIDE0NSwgMjQxLCAxNzcsIDMxLCAzLCAyMjUsIDc3LCAyNDEsIDE3NywgMzEsIDI1NCwgMTIyLCAKLSAgICAyNDksIDE1MSwgMjQxLCAxNzcsIDMxLCAyNTEsIDIzNSwgMjQ5LCAxNTEsIDgsIDQsIDIzNSwgMTU4LCA4LCA0LCAyMzUsIAotICAgIDE1MSwgOCwgNCwgNzIsIDgsIDQsIDIzNSwgMTgwLCA4LCA0LCAyMzYsIDUzLCA4LCA0LCAyMzYsIDM2LCA4LCA0LCAyMzYsIAotICAgIDU1LCA4LCA0LCAyMzYsIDU0LCA4LCA0LCAyNTMsIDEyMiwgOCwgNCwgMjUzLCA4NSwgOCwgNCwgNjEsIDgsIDQsIDI1MywgCi0gICAgMjM5LCA4LCA0LCAyMTUsIDEzNSwgOCwgNCwgMjE1LCAxMzgsIDgsIDQsIDIxNSwgMTM2LCA4LCA0LCAyMjcsIDgsIDgsIDQsIAotICAgIDIyNiwgMjM4LCA4LCA0LCA3NSwgOCwgNCwgMjI3LCA0MSwgOCwgNCwgMjQ1LCAyLCA4LCA0LCA3NCwgOCwgNCwgMjEzLCAKLSAgICAxODMsIDgsIDQsIDI1MSwgMTUxLCA4LCA0LCAyNTEsIDE0OCwgOCwgNCwgMjUxLCAxODQsIDgsIDQsIDI1MSwgMTYxLCA4LCAKLSAgICA0LCAyNTEsIDE3NCwgOCwgNCwgMjUxLCAxNzMsIDgsIDQsIDI1MSwgMTc2LCA4LCA0LCAyNTEsIDE3NSwgOCwgNCwgMjUyLCAKLSAgICA0MSwgOCwgNCwgMjUyLCAzMywgOCwgNCwgMjUyLCAxMDcsIDgsIDQsIDI1MiwgNjEsIDgsIDQsIDI1MSwgMzAsIDgsIDQsIAotICAgIDI1MSwgMzQsIDgsIDQsIDI1MSwgMzEsIDgsIDQsIDI1MSwgMTA1LCA4LCA0LCAyNTEsIDg5LCA4LCA0LCAyNTEsIDEyOCwgOCwgCi0gICAgNCwgMjUxLCAxMTAsIDgsIDQsIDI1MSwgMTk4LCA4LCA0LCAyNTEsIDI1MSwgOCwgNCwgMjUxLCAyMTAsIDgsIDQsIDI1MSwgCi0gICAgMTYsIDgsIDQsIDI1MSwgMTMsIDgsIDQsIDI1MSwgNTQsIDgsIDQsIDI1MSwgMjksIDgsIDQsIDI1MSwgMjMsIDgsIDQsIAotICAgIDI1MSwgMjcsIDgsIDQsIDI1MSwgMSwgOCwgNCwgMjUxLCAwLCA4LCA0LCAyNTEsIDYsIDgsIDQsIDI1MSwgNCwgOCwgNCwgCi0gICAgMjUxLCAyLCA4LCA0LCAyNTEsIDMsIDgsIDQsIDIyNSwgMTgxLCA4LCA0LCAyMjUsIDE3NywgOCwgNCwgMjI1LCAyNDAsIDgsIAotICAgIDQsIDIyNSwgMTkxLCA4LCA0LCAyMjUsIDIwNywgOCwgNCwgMjI1LCAyMzQsIDgsIDQsIDIyNSwgMjMwLCA4LCA0LCAyMjYsIAotICAgIDExMywgOCwgNCwgMjI2LCAxMDQsIDgsIDQsIDE5MywgOCwgNCwgMjI2LCAxNDksIDgsIDQsIDIyNSwgMjEsIDgsIDQsIDIyNSwgCi0gICAgMjMsIDgsIDQsIDIyNSwgMjIsIDgsIDQsIDIyNSwgMTEzLCA4LCA0LCAyMjUsIDEwMiwgOCwgNCwgMjI1LCAxNTAsIDgsIDQsIAotICAgIDIyNSwgMTI1LCA4LCA0LCAyMjUsIDgsIDgsIDQsIDIyNSwgNSwgOCwgNCwgMjI1LCAzNSwgOCwgNCwgMjI1LCAyMCwgOCwgNCwgCi0gICAgMjI1LCAxMywgOCwgNCwgMjI1LCAxOCwgOCwgNCwgMjI0LCAyNDQsIDgsIDQsIDIyNCwgMjQzLCA4LCA0LCAyMjQsIDI0OCwgCi0gICAgOCwgNCwgMjI0LCAyNDcsIDgsIDQsIDIyNCwgMjQ1LCA4LCA0LCAyMjQsIDI0NiwgOCwgNCwgMjUyLCAxNiwgOCwgNCwgMjUyLCAKLSAgICAxNSwgOCwgNCwgMjUyLCAyMiwgOCwgNCwgMjUyLCAxNywgOCwgNCwgMjUyLCAxOSwgOCwgNCwgMjUyLCAxOCwgOCwgNCwgCi0gICAgMjUyLCAyMSwgOCwgNCwgMjUyLCAyMCwgOCwgNCwgMjUyLCAyOCwgOCwgNCwgMjUyLCAyNywgOCwgNCwgMjUyLCAzMSwgOCwgCi0gICAgNCwgMjUyLCAyOSwgOCwgNCwgMjUyLCA3LCA4LCA0LCAyNTIsIDksIDgsIDQsIDI1MiwgOCwgOCwgNCwgMjUyLCAxMiwgOCwgCi0gICAgNCwgMjUyLCAxMSwgOCwgNCwgMjUyLCAxNCwgOCwgNCwgMjUyLCAxMywgOCwgNCwgMjUyLCAyMywgOCwgNCwgMjUyLCAyNiwgCi0gICAgOCwgNCwgMjUyLCAyNCwgOCwgNCwgMjUyLCAzLCA4LCA0LCAyNTIsIDIsIDgsIDQsIDI1MiwgMTAsIDgsIDQsIDI1MiwgNiwgCi0gICAgOCwgNCwgMjUyLCA0LCA4LCA0LCAyNTIsIDUsIDgsIDQsIDI1MSwgMjU1LCA4LCA0LCAyNTEsIDI1NCwgOCwgNCwgMjUyLCAxLCAKLSAgICA4LCA0LCAyNTIsIDAsIDgsIDQsIDIyOSwgMjQ4LCA4LCA0LCAyMjksIDI0NywgOCwgNCwgMjI5LCAyNTMsIDgsIDQsIDIyOSwgCi0gICAgMjQ5LCA4LCA0LCAyMjksIDI1MCwgOCwgNCwgMjI5LCAyNTIsIDgsIDQsIDIyOSwgMjUxLCA4LCA0LCAyMjksIDI1NSwgOCwgCi0gICAgNCwgMjI5LCAyNTQsIDgsIDQsIDIzMCwgMSwgOCwgNCwgMjMwLCAwLCA4LCA0LCAyMjksIDI0NCwgOCwgNCwgMjI5LCAyNDMsIAotICAgIDgsIDQsIDIyOSwgMjQ2LCA4LCA0LCAyMjksIDI0NSwgOCwgNCwgMjI5LCAyMzgsIDgsIDQsIDIyOSwgMjM3LCA4LCA0LCAKLSAgICAyMjksIDI0MiwgOCwgNCwgMjI5LCAyNDEsIDgsIDQsIDIyOSwgMjM5LCA4LCA0LCAyMjksIDI0MCwgOCwgNCwgMjI5LCAyMzIsIAotICAgIDgsIDQsIDIyOSwgMjMxLCA4LCA0LCAyMjksIDIzNiwgOCwgNCwgMjI5LCAyMzUsIDgsIDQsIDIyOSwgMjMzLCA4LCA0LCAKLSAgICAyMjksIDIzNCwgOCwgNCwgMjQxLCA5NiwgOCwgNCwgMjQxLCA5NSwgOCwgNCwgMjQxLCAxMDEsIDgsIDQsIDI0MSwgOTcsIDgsIAotICAgIDQsIDI0MSwgOTgsIDgsIDQsIDI0MSwgMTAwLCA4LCA0LCAyNDEsIDk5LCA4LCA0LCAyNDEsIDEwNCwgOCwgNCwgMjQxLCAKLSAgICAxMDMsIDgsIDQsIDI0MSwgMTA2LCA4LCA0LCAyNDEsIDEwNSwgOCwgNCwgMjQxLCA4NywgOCwgNCwgMjQxLCA4OSwgOCwgNCwgCi0gICAgMjQxLCA4OCwgOCwgNCwgMjQxLCA5MiwgOCwgNCwgMjQxLCA5MSwgOCwgNCwgMjQxLCA5NCwgOCwgNCwgMjQxLCA5MywgOCwgCi0gICAgNCwgMjQxLCA4MywgOCwgNCwgMjQxLCA4MiwgOCwgNCwgMjQxLCA5MCwgOCwgNCwgMjQxLCA4NiwgOCwgNCwgMjQxLCA4NCwgCi0gICAgOCwgNCwgMjQxLCA4NSwgOCwgNCwgMjQxLCA3NywgOCwgNCwgMjQxLCA4MSwgOCwgNCwgMjQxLCA4MCwgOCwgNCwgMjQxLCAKLSAgICA3OCwgOCwgNCwgMjQxLCA3OSwgOCwgNCwgMjMwLCAyNDEsIDgsIDQsIDIzMCwgMjQwLCA4LCA0LCAyMzEsIDQyLCA4LCA0LCAKLSAgICAyMzAsIDI0NywgOCwgNCwgMjMxLCAxNiwgOCwgNCwgMjMxLCAzNCwgOCwgNCwgMjMxLCAzMiwgOCwgNCwgMjMxLCAyMDIsIDgsIAotICAgIDQsIDIzMSwgMTk4LCA4LCA0LCAxODgsIDgsIDQsIDIzMSwgMjM1LCA4LCA0LCAyMzAsIDE0NCwgOCwgNCwgMjMwLCAxNDMsIAotICAgIDgsIDQsIDIzMCwgMTQ3LCA4LCA0LCAyMzAsIDE0NSwgOCwgNCwgMjMwLCAxOTEsIDgsIDQsIDIzMCwgMTc3LCA4LCA0LCAKLSAgICAyMzAsIDIzMSwgOCwgNCwgMjMwLCAxOTYsIDgsIDQsIDIzMSwgOTMsIDgsIDQsIDIzMSwgMTU2LCA4LCA0LCAyMzAsIDEyNSwgCi0gICAgOCwgNCwgMjMwLCAxMjIsIDgsIDQsIDIzMCwgMTcyLCA4LCA0LCAyMzAsIDE0MCwgOCwgNCwgMjMwLCAxMzMsIDgsIDQsIAotICAgIDIzMCwgMTM4LCA4LCA0LCAyMzAsIDEwMCwgOCwgNCwgMjMwLCA5OSwgOCwgNCwgMjMwLCAxMDUsIDgsIDQsIDIzMCwgMTAyLCAKLSAgICA4LCA0LCAyNDQsIDUyLCA4LCA0LCAyNDQsIDQ3LCA4LCA0LCAyNDQsIDkwLCA4LCA0LCAyNDQsIDY3LCA4LCA0LCAyNDQsIAotICAgIDEzNSwgOCwgNCwgMjQ0LCAxMjYsIDgsIDQsIDI0NCwgMTY0LCA4LCA0LCAyNDQsIDEzOCwgOCwgNCwgMjQzLCAyMjksIDgsIAotICAgIDQsIDI0NCwgMTIsIDgsIDQsIDI0MywgMjUyLCA4LCA0LCAyNDMsIDE5MCwgOCwgNCwgMjQzLCAxODksIDgsIDQsIDI0MywgCi0gICAgMjA1LCA4LCA0LCAyNDMsIDE5NSwgOCwgNCwgMjQzLCAxOTMsIDgsIDQsIDI0MywgMTk0LCA4LCA0LCAyNDMsIDE4MCwgOCwgCi0gICAgNCwgMjQzLCAxNzksIDgsIDQsIDI0MywgMTgzLCA4LCA0LCAyNDMsIDE4MSwgOCwgNCwgMjE0LCAxMjUsIDgsIDQsIDIxNCwgCi0gICAgMTIwLCA4LCA0LCAyMTQsIDE1NCwgOCwgNCwgMjE0LCAxMzQsIDgsIDQsIDIxNCwgMTQ2LCA4LCA0LCAyMTQsIDE0MywgOCwgCi0gICAgNCwgMjE0LCAxNDgsIDgsIDQsIDIxNCwgMTQ3LCA4LCA0LCAyMTQsIDIzOSwgOCwgNCwgMjE0LCAyMzUsIDgsIDQsIDIxNSwgCi0gICAgMSwgOCwgNCwgMjE0LCAyNTAsIDgsIDQsIDIxNCwgMTA2LCA4LCA0LCAyMTQsIDEwMiwgOCwgNCwgMjE0LCAxMTksIDgsIDQsIAotICAgIDIxNCwgMTA3LCA4LCA0LCAyMTQsIDE1NSwgOCwgNCwgMjE0LCAyMjEsIDgsIDQsIDIxNCwgOTMsIDgsIDQsIDIxNCwgOTIsIAotICAgIDgsIDQsIDIxNCwgOTksIDgsIDQsIDIxNCwgOTYsIDgsIDQsIDIxNCwgOTQsIDgsIDQsIDIxNCwgOTUsIDgsIDQsIDIxNCwgCi0gICAgODYsIDgsIDQsIDIxNCwgODUsIDgsIDQsIDIxNCwgOTAsIDgsIDQsIDIxNCwgODksIDgsIDQsIDIxNCwgODcsIDgsIDQsIAotICAgIDIxNCwgODgsIDgsIDQsIDI0NywgMTMwLCA4LCA0LCAyNDcsIDExOCwgOCwgNCwgMjQ3LCAyMTEsIDgsIDQsIDI0NywgMTU1LCAKLSAgICA4LCA0LCAyNDcsIDE4OCwgOCwgNCwgMjQ3LCAxOTIsIDgsIDQsIDI0NywgMTkxLCA4LCA0LCAyNDgsIDk4LCA4LCA0LCAyNDgsIAotICAgIDkzLCA4LCA0LCAyNDgsIDE2NCwgOCwgNCwgMjQ4LCAxMTcsIDgsIDQsIDI0NiwgMTcsIDgsIDQsIDI0NiwgMTgsIDgsIDQsIAotICAgIDI0NywgNzQsIDgsIDQsIDI0NiwgNTYsIDgsIDQsIDI0NywgOTksIDgsIDQsIDI0NywgNzYsIDgsIDQsIDI0NywgMjM3LCA4LCAKLSAgICA0LCAyNDgsIDQxLCA4LCA0LCAyNDcsIDI1MiwgOCwgNCwgMjQ2LCA4LCA4LCA0LCAyNDYsIDYsIDgsIDQsIDI0NiwgMzMsIDgsIAotICAgIDQsIDI0NiwgMTYsIDgsIDQsIDI0NiwgMTEsIDgsIDQsIDI0NiwgMTQsIDgsIDQsIDIxNywgMjAsIDgsIDQsIDIxNywgMTQsIAotICAgIDgsIDQsIDIxNywgNzEsIDgsIDQsIDIxNywgMjksIDgsIDQsIDIxNywgNjMsIDgsIDQsIDIxNywgNjUsIDgsIDQsIDIxNywgCi0gICAgNjQsIDgsIDQsIDIxNywgMjUzLCA4LCA0LCAyMTcsIDI0MCwgOCwgNCwgMjE4LCA1MiwgOCwgNCwgMjE4LCA1LCA4LCA0LCAKLSAgICAyMTYsIDY2LCA4LCA0LCAyMTYsIDY1LCA4LCA0LCAyMTYsIDY4LCA4LCA0LCAyMTYsIDY3LCA4LCA0LCAyMTYsIDIxOCwgOCwgCi0gICAgNCwgMjE2LCAyMTQsIDgsIDQsIDEwOCwgOCwgNCwgMjE2LCAyMjYsIDgsIDQsIDIxNywgMTY2LCA4LCA0LCAyMTcsIDIyOSwgCi0gICAgOCwgNCwgMjE3LCAxOTAsIDgsIDQsIDIxNiwgNTIsIDgsIDQsIDIxNiwgNDgsIDgsIDQsIDIxNiwgODIsIDgsIDQsIDIxNiwgCi0gICAgNjQsIDgsIDQsIDIxNiwgNTMsIDgsIDQsIDIxNiwgNjIsIDgsIDQsIDI0OCwgNTgsIDgsIDQsIDI0OCwgNTcsIDgsIDQsIAotICAgIDI0OCwgNjMsIDgsIDQsIDI0OCwgNTksIDgsIDQsIDI0OCwgNjAsIDgsIDQsIDI0OCwgNjIsIDgsIDQsIDI0OCwgNjEsIDgsIAotICAgIDQsIDI0OCwgNzksIDgsIDQsIDI0OCwgNzgsIDgsIDQsIDI0OCwgODYsIDgsIDQsIDI0OCwgODAsIDgsIDQsIDI0OCwgNDgsIAotICAgIDgsIDQsIDI0OCwgNTAsIDgsIDQsIDI0OCwgNDksIDgsIDQsIDI0OCwgNTMsIDgsIDQsIDI0OCwgNTIsIDgsIDQsIDI0OCwgCi0gICAgNTYsIDgsIDQsIDI0OCwgNTQsIDgsIDQsIDI0OCwgNzEsIDgsIDQsIDI0OCwgNzQsIDgsIDQsIDI0OCwgNzIsIDgsIDQsIAotICAgIDI0OCwgNDQsIDgsIDQsIDI0OCwgNDMsIDgsIDQsIDI0OCwgNTEsIDgsIDQsIDI0OCwgNDcsIDgsIDQsIDI0OCwgNDUsIDgsIAotICAgIDQsIDI0OCwgNDYsIDgsIDQsIDIyOSwgMjA2LCA4LCA0LCAyMjksIDIwNSwgOCwgNCwgMjI5LCAyMTMsIDgsIDQsIDIyOSwgCi0gICAgMjA4LCA4LCA0LCAyMjksIDIwOSwgOCwgNCwgMjI5LCAyMTAsIDgsIDQsIDIyOSwgMjIyLCA4LCA0LCAyMjksIDIyMSwgOCwgCi0gICAgNCwgMjI5LCAyMjgsIDgsIDQsIDIyOSwgMjIzLCA4LCA0LCAyMjksIDE5OCwgOCwgNCwgMjI5LCAxOTcsIDgsIDQsIDIyOSwgCi0gICAgMjA0LCA4LCA0LCAyMjksIDE5OSwgOCwgNCwgMjI5LCAyMTQsIDgsIDQsIDIyOSwgMjIwLCA4LCA0LCAyMjksIDIxOCwgOCwgCi0gICAgNCwgMjI5LCAxOTAsIDgsIDQsIDIyOSwgMTg5LCA4LCA0LCAyMjksIDE5NSwgOCwgNCwgMjI5LCAxOTMsIDgsIDQsIDIyOSwgCi0gICAgMTkxLCA4LCA0LCAyMjksIDE5MiwgOCwgNCwgMjQxLCA2MywgOCwgNCwgMjQxLCA2MiwgOCwgNCwgMjQxLCA2OSwgOCwgNCwgCi0gICAgMjQxLCA2NCwgOCwgNCwgMjQxLCA2NiwgOCwgNCwgMjQxLCA2NSwgOCwgNCwgMjQxLCA2OCwgOCwgNCwgMjQxLCA2NywgOCwgCi0gICAgNCwgMjQxLCA3NCwgOCwgNCwgMjQxLCA3MywgOCwgNCwgMjQxLCA3NiwgOCwgNCwgMjQxLCA3NSwgOCwgNCwgMjQxLCA1NywgCi0gICAgOCwgNCwgMjQxLCA1OCwgOCwgNCwgMjQxLCA2MCwgOCwgNCwgMjQxLCA1OSwgOCwgNCwgMjQxLCA2MSwgOCwgNCwgMjQxLCAKLSAgICA3MCwgOCwgNCwgMjQxLCA3MiwgOCwgNCwgMjQxLCA3MSwgOCwgNCwgMjQxLCA1NiwgOCwgNCwgMjI5LCAyMCwgOCwgNCwgCi0gICAgMjI5LCAxOCwgOCwgNCwgMjI5LCA2NCwgOCwgNCwgMjI5LCAyMywgOCwgNCwgMjI5LCA0NiwgOCwgNCwgMjI5LCA2MCwgOCwgCi0gICAgNCwgMjI5LCA1OSwgOCwgNCwgMjMwLCA1LCA4LCA0LCAyMDUsIDgsIDQsIDIzMCwgMTcsIDgsIDQsIDIyOCwgNDIsIDgsIDQsIAotICAgIDIyOCwgNDQsIDgsIDQsIDIyOCwgNDMsIDgsIDQsIDIyOCwgMTYyLCA4LCA0LCAyMjgsIDE0OSwgOCwgNCwgMjI4LCAxODUsIAotICAgIDgsIDQsIDIyOCwgMTcxLCA4LCA0LCAyMjksIDE2NSwgOCwgNCwgMjI5LCAxODcsIDgsIDQsIDIyOSwgMTc2LCA4LCA0LCAKLSAgICAyMjgsIDM3LCA4LCA0LCAyMjgsIDM0LCA4LCA0LCAyMjgsIDkyLCA4LCA0LCAyMjgsIDQxLCA4LCA0LCAyMjgsIDM5LCA4LCAKLSAgICA0LCAyMjgsIDQwLCA4LCA0LCAyNDEsIDEyNywgOCwgNCwgMjQxLCAxMjYsIDgsIDQsIDI0MSwgMTMyLCA4LCA0LCAyNDEsIAotICAgIDEyOCwgOCwgNCwgMjQxLCAxMjksIDgsIDQsIDI0MSwgMTMxLCA4LCA0LCAyNDEsIDEzMCwgOCwgNCwgMjQxLCAxMzcsIDgsIAotICAgIDQsIDI0MSwgMTM2LCA4LCA0LCAyNDEsIDEzOSwgOCwgNCwgMjQxLCAxMzgsIDgsIDQsIDI0MSwgMTE5LCA4LCA0LCAyNDEsIAotICAgIDEyMSwgOCwgNCwgMjQxLCAxMjAsIDgsIDQsIDI0MSwgMTIzLCA4LCA0LCAyNDEsIDEyNSwgOCwgNCwgMjQxLCAxMjQsIDgsIAotICAgIDQsIDI0MSwgMTMzLCA4LCA0LCAyNDEsIDEzNSwgOCwgNCwgMjQxLCAxMzQsIDgsIDQsIDI0MSwgMTE1LCA4LCA0LCAyNDEsIAotICAgIDExNCwgOCwgNCwgMjQxLCAxMjIsIDgsIDQsIDI0MSwgMTE4LCA4LCA0LCAyNDEsIDExNiwgOCwgNCwgMjQxLCAxMTcsIDgsIAotICAgIDQsIDI0MSwgMTA5LCA4LCA0LCAyNDEsIDEwOCwgOCwgNCwgMjQxLCAxMTMsIDgsIDQsIDI0MSwgMTEyLCA4LCA0LCAyNDEsIAotICAgIDExMCwgOCwgNCwgMjQxLCAxMTEsIDgsIDQsIDIzMiwgMjI0LCA4LCA0LCAyMzIsIDIxOCwgOCwgNCwgMjMzLCAxMywgOCwgNCwgCi0gICAgMjMyLCAyMzEsIDgsIDQsIDIzMywgNSwgOCwgNCwgMjMzLCA0LCA4LCA0LCAyMzMsIDgsIDgsIDQsIDIzMywgNiwgOCwgNCwgCi0gICAgMjMzLCAxMDIsIDgsIDQsIDIzMywgOTMsIDgsIDQsIDIzMywgMTU3LCA4LCA0LCAyMzMsIDExMSwgOCwgNCwgMjMyLCAxMzcsIAotICAgIDgsIDQsIDIzMiwgMTM2LCA4LCA0LCAyMzIsIDEzOSwgOCwgNCwgMjMyLCAxMzgsIDgsIDQsIDIzMiwgMTcxLCA4LCA0LCAKLSAgICAyMzIsIDE2MSwgOCwgNCwgMjMyLCAyMDgsIDgsIDQsIDIzMiwgMTc1LCA4LCA0LCAyMzMsIDI4LCA4LCA0LCAyMzMsIDgyLCAKLSAgICA4LCA0LCAyMzMsIDQxLCA4LCA0LCAyMzIsIDEzMiwgOCwgNCwgMjMyLCAxMzEsIDgsIDQsIDIzMiwgMTU2LCA4LCA0LCAyMzIsIAotICAgIDEzNSwgOCwgNCwgMjMyLCAxMzMsIDgsIDQsIDIzMiwgMTM0LCA4LCA0LCAyMzIsIDExNCwgOCwgNCwgMjMyLCAxMTMsIDgsIAotICAgIDQsIDIzMiwgMTIxLCA4LCA0LCAyMzIsIDExNywgOCwgNCwgMjMyLCAxMTUsIDgsIDQsIDIzMiwgMTE2LCA4LCA0LCAyNDIsIAotICAgIDE2NSwgOCwgNCwgMjQyLCAxNjQsIDgsIDQsIDI0MiwgMTkwLCA4LCA0LCAyNDIsIDE3NSwgOCwgNCwgMjQyLCAxODIsIDgsIAotICAgIDQsIDI0MiwgMTgxLCA4LCA0LCAyNDIsIDE4NCwgOCwgNCwgMjQyLCAxODMsIDgsIDQsIDI0MywgNjUsIDgsIDQsIDI0MywgCi0gICAgNjAsIDgsIDQsIDI0MywgMTEwLCA4LCA0LCAyNDMsIDc1LCA4LCA0LCAyNDIsIDcyLCA4LCA0LCAyNDIsIDcxLCA4LCA0LCAKLSAgICAyNDIsIDc0LCA4LCA0LCAyNDIsIDczLCA4LCA0LCAyNDIsIDEzMCwgOCwgNCwgMjQyLCAxMjgsIDgsIDQsIDI0MiwgMTUwLCAKLSAgICA4LCA0LCAyNDIsIDEzOCwgOCwgNCwgMjQzLCA5LCA4LCA0LCAyNDMsIDcsIDgsIDQsIDI0MywgMzgsIDgsIDQsIDI0MywgMjAsIAotICAgIDgsIDQsIDI0MiwgNjIsIDgsIDQsIDI0MiwgNjEsIDgsIDQsIDI0MiwgOTIsIDgsIDQsIDI0MiwgNzAsIDgsIDQsIDI0MiwgCi0gICAgNjMsIDgsIDQsIDI0MiwgNjksIDgsIDQsIDIzNCwgNzAsIDgsIDQsIDIzNCwgNjksIDgsIDQsIDIzNCwgMTAxLCA4LCA0LCAKLSAgICAyMzQsIDg0LCA4LCA0LCAyMzQsIDk0LCA4LCA0LCAyMzQsIDk3LCA4LCA0LCAyMzQsIDk1LCA4LCA0LCAyMzQsIDIwNywgOCwgCi0gICAgNCwgMjM0LCAxOTYsIDgsIDQsIDE4MSwgOCwgNCwgMjM0LCAyMzMsIDgsIDQsIDIzMywgMjIxLCA4LCA0LCAyMzMsIDIyNiwgCi0gICAgOCwgNCwgMjMzLCAyMjMsIDgsIDQsIDIzNCwgOSwgOCwgNCwgMjM0LCA1LCA4LCA0LCAyMzQsIDM3LCA4LCA0LCAyMzQsIDE2LCAKLSAgICA4LCA0LCAyMzQsIDE2MiwgOCwgNCwgMjM0LCAxNDYsIDgsIDQsIDIzNCwgMTg4LCA4LCA0LCAyMzQsIDE2NSwgOCwgNCwgCi0gICAgMjMzLCAyMTAsIDgsIDQsIDIzMywgMjA4LCA4LCA0LCAyMzMsIDIzOCwgOCwgNCwgMjMzLCAyMjAsIDgsIDQsIDIzMywgMjEzLCAKLSAgICA4LCA0LCAyMzMsIDIxNywgOCwgNCwgMjQyLCAyNDcsIDgsIDQsIDI0MiwgMjQ2LCA4LCA0LCAyNDIsIDI1MSwgOCwgNCwgCi0gICAgMjQyLCAyNDgsIDgsIDQsIDI0MiwgMjUwLCA4LCA0LCAyNDIsIDI0OSwgOCwgNCwgMjQzLCAyLCA4LCA0LCAyNDMsIDEsIDgsIAotICAgIDQsIDI0MywgNSwgOCwgNCwgMjQzLCAzLCA4LCA0LCAyNDIsIDIzOCwgOCwgNCwgMjQyLCAyMzcsIDgsIDQsIDI0MiwgMjQwLCAKLSAgICA4LCA0LCAyNDIsIDIzOSwgOCwgNCwgMjQyLCAyNDMsIDgsIDQsIDI0MiwgMjQyLCA4LCA0LCAyNDIsIDI0NSwgOCwgNCwgCi0gICAgMjQyLCAyNDQsIDgsIDQsIDI0MiwgMjUzLCA4LCA0LCAyNDIsIDI1MiwgOCwgNCwgMjQzLCAwLCA4LCA0LCAyNDIsIDI1NCwgCi0gICAgOCwgNCwgMjQyLCAyMzMsIDgsIDQsIDI0MiwgMjMyLCA4LCA0LCAyNDIsIDI0MSwgOCwgNCwgMjQyLCAyMzYsIDgsIDQsIAotICAgIDI0MiwgMjM0LCA4LCA0LCAyNDIsIDIzNSwgOCwgNCwgMjMxLCA2MCwgOCwgNCwgMjMxLCA2MSwgOCwgNCwgMjMxLCA3OSwgOCwgCi0gICAgNCwgMjMxLCA3OCwgOCwgNCwgMjMxLCA4MSwgOCwgNCwgMjMxLCA4MCwgOCwgNCwgMjMxLCA1MSwgOCwgNCwgMjMxLCA1MywgCi0gICAgOCwgNCwgMjMxLCA1MiwgOCwgNCwgMjMxLCA1NiwgOCwgNCwgMjMxLCA1NSwgOCwgNCwgMjMxLCA1OCwgOCwgNCwgMjMxLCAKLSAgICA1NywgOCwgNCwgMjMxLCA2MiwgOCwgNCwgMjMxLCA2NCwgOCwgNCwgMjMxLCA2MywgOCwgNCwgMjMxLCA0NywgOCwgNCwgCi0gICAgMjMxLCA0NiwgOCwgNCwgMjMxLCA1NCwgOCwgNCwgMjMxLCA1MCwgOCwgNCwgMjMxLCA0OCwgOCwgNCwgMjMxLCA0OSwgOCwgCi0gICAgNCwgMjQwLCAxNzIsIDgsIDQsIDI0MCwgMTcxLCA4LCA0LCAyNDAsIDE3OCwgOCwgNCwgMjQwLCAxNzMsIDgsIDQsIDI0MCwgCi0gICAgMTc1LCA4LCA0LCAyNDAsIDE3NCwgOCwgNCwgMjQwLCAxNzcsIDgsIDQsIDI0MCwgMTc2LCA4LCA0LCAyNDAsIDE4MywgOCwgCi0gICAgNCwgMjQwLCAxODIsIDgsIDQsIDI0MCwgMTg1LCA4LCA0LCAyNDAsIDE4NCwgOCwgNCwgMjQwLCAxNjQsIDgsIDQsIDI0MCwgCi0gICAgMTYzLCA4LCA0LCAyNDAsIDE2NiwgOCwgNCwgMjQwLCAxNjUsIDgsIDQsIDI0MCwgMTY4LCA4LCA0LCAyNDAsIDE2NywgOCwgCi0gICAgNCwgMjQwLCAxNzAsIDgsIDQsIDI0MCwgMTY5LCA4LCA0LCAyNDAsIDE3OSwgOCwgNCwgMjQwLCAxODEsIDgsIDQsIDI0MCwgCi0gICAgMTgwLCA4LCA0LCAyMjksIDExMCwgOCwgNCwgMjI5LCAxMTIsIDgsIDQsIDIyOSwgMTExLCA4LCA0LCAyMjksIDE1MCwgOCwgCi0gICAgNCwgMjI5LCAxNDksIDgsIDQsIDIyOSwgMTU5LCA4LCA0LCAyMjksIDE1MywgOCwgNCwgMjI5LCA3MywgOCwgNCwgMjI5LCAKLSAgICA3MiwgOCwgNCwgMjI5LCA3NCwgOCwgNCwgMjI5LCA4MiwgOCwgNCwgMjI5LCA3OSwgOCwgNCwgMjI5LCA5MCwgOCwgNCwgCi0gICAgMjI5LCA4NCwgOCwgNCwgMjI5LCAxNDMsIDgsIDQsIDIyOSwgMTQ4LCA4LCA0LCAyMjksIDE0NSwgOCwgNCwgMjQxLCAxNDIsIAotICAgIDgsIDQsIDI0MSwgMTUyLCA4LCA0LCAyNDEsIDE2MCwgOCwgNCwgMjQxLCAyMzQsIDgsIDQsIDI0MSwgMjI3LCA4LCA0LCAKLSAgICAxNTksIDgsIDQsIDI0MSwgMjQ1LCA4LCA0LCAyNDAsIDE5NiwgOCwgNCwgMjQwLCAxOTUsIDgsIDQsIDI0MCwgMTk4LCA4LCAKLSAgICA0LCAyNDAsIDE5NywgOCwgNCwgMjQwLCAyMjksIDgsIDQsIDI0MCwgMjIwLCA4LCA0LCAyNDEsIDU0LCA4LCA0LCAyNDEsIAotICAgIDM0LCA4LCA0LCAyNDEsIDE3OSwgOCwgNCwgMjQxLCAyMjIsIDgsIDQsIDI0MSwgMTkwLCA4LCA0LCAyMTQsIDI3LCA4LCA0LCAKLSAgICAyMTQsIDEyLCA4LCA0LCAyMTQsIDQ5LCA4LCA0LCAyMTQsIDM1LCA4LCA0LCAyMTMsIDE3MywgOCwgNCwgMjEzLCAxNzUsIDgsIAotICAgIDQsIDIxMywgMTc0LCA4LCA0LCAyMTMsIDE5MSwgOCwgNCwgMjEzLCAyMTQsIDgsIDQsIDIxMywgMTk3LCA4LCA0LCAyMTMsIAotICAgIDI0NiwgOCwgNCwgMjE0LCA2LCA4LCA0LCAyMTMsIDI1MSwgOCwgNCwgMjEyLCAyMywgOCwgNCwgMjEyLCAyMiwgOCwgNCwgCi0gICAgMjEyLCAzNywgOCwgNCwgMjEyLCAyNSwgOCwgNCwgMjEyLCAzMCwgOCwgNCwgMjEyLCAzMiwgOCwgNCwgMjEyLCAzMSwgOCwgCi0gICAgNCwgMjEyLCA5NSwgOCwgNCwgMjEyLCA5MiwgOCwgNCwgMjEyLCAxMDksIDgsIDQsIDIxMiwgOTgsIDgsIDQsIDIxMiwgMSwgCi0gICAgOCwgNCwgMjEyLCAzLCA4LCA0LCAyMTIsIDIsIDgsIDQsIDIxMiwgMTIsIDgsIDQsIDIxMiwgMTEsIDgsIDQsIDIxMiwgMTYsIAotICAgIDgsIDQsIDIxMiwgMTMsIDgsIDQsIDIxMiwgNzcsIDgsIDQsIDIxMiwgODcsIDgsIDQsIDIxMiwgODEsIDgsIDQsIDIxMSwgCi0gICAgMjUzLCA4LCA0LCAyMTEsIDI1MiwgOCwgNCwgMjEyLCA4LCA4LCA0LCAyMTIsIDAsIDgsIDQsIDIxMSwgMjU0LCA4LCA0LCAKLSAgICAyMTEsIDI1NSwgOCwgNCwgMjExLCAyNDQsIDgsIDQsIDIxMSwgMjQzLCA4LCA0LCAyMTEsIDI0OSwgOCwgNCwgMjExLCAyNDcsIAotICAgIDgsIDQsIDIxMSwgMjQ1LCA4LCA0LCAyMTEsIDI0NiwgOCwgNCwgMjQ5LCAyMjEsIDgsIDQsIDI0OSwgMjE3LCA4LCA0LCAKLSAgICAyNDksIDI0NCwgOCwgNCwgMjQ5LCAyMzAsIDgsIDQsIDI0OSwgMjQxLCA4LCA0LCAyNDksIDIzNSwgOCwgNCwgMjQ5LCAyNDMsIAotICAgIDgsIDQsIDI0OSwgMjQyLCA4LCA0LCAyNTAsIDE1NiwgOCwgNCwgMjUwLCAxNTAsIDgsIDQsIDI1MCwgMjE5LCA4LCA0LCAKLSAgICAyNTAsIDE4MywgOCwgNCwgMjQ5LCA0NSwgOCwgNCwgMjQ5LCA0NywgOCwgNCwgMjQ5LCA0NiwgOCwgNCwgMjQ5LCA5MiwgOCwgCi0gICAgNCwgMjQ5LCA4MywgOCwgNCwgMjQ5LCAxNzUsIDgsIDQsIDI0OSwgMTA4LCA4LCA0LCAyNTAsIDk0LCA4LCA0LCAyNTAsIAotICAgIDEyNCwgOCwgNCwgMjUwLCA5OSwgOCwgNCwgMjQ5LCAyNiwgOCwgNCwgMjQ5LCAyNSwgOCwgNCwgMjQ5LCA1MywgOCwgNCwgCi0gICAgMjQ5LCA0MywgOCwgNCwgMjQ5LCAzMSwgOCwgNCwgMjQ5LCA0MiwgOCwgNCwgMjQ5LCA2LCA4LCA0LCAyNDksIDUsIDgsIDQsIAotICAgIDI0OSwgMTYsIDgsIDQsIDI0OSwgMTIsIDgsIDQsIDI0OSwgNywgOCwgNCwgMjQ5LCA5LCA4LCA0LCAyMTEsIDIyNywgOCwgNCwgCi0gICAgMjExLCAyMjYsIDgsIDQsIDIxMSwgMjMzLCA4LCA0LCAyMTEsIDIyOCwgOCwgNCwgMjExLCAyMzAsIDgsIDQsIDIxMSwgMjI5LCAKLSAgICA4LCA0LCAyMTEsIDIzMiwgOCwgNCwgMjExLCAyMzEsIDgsIDQsIDIxMSwgMjM5LCA4LCA0LCAyMTEsIDIzOCwgOCwgNCwgCi0gICAgMjExLCAyNDIsIDgsIDQsIDIxMSwgMjQwLCA4LCA0LCAyMTEsIDIyMywgOCwgNCwgMjExLCAyMjUsIDgsIDQsIDIxMSwgMjI0LCAKLSAgICA4LCA0LCAyMTEsIDIzNCwgOCwgNCwgMjExLCAyMzcsIDgsIDQsIDIxMSwgMjM1LCA4LCA0LCAyMTEsIDIxOCwgOCwgNCwgCi0gICAgMjExLCAyMjIsIDgsIDQsIDIxMSwgMjIxLCA4LCA0LCAyMTEsIDIxOSwgOCwgNCwgMjExLCAyMjAsIDgsIDQsIDIxMSwgMjEzLCAKLSAgICA4LCA0LCAyMTEsIDIxMiwgOCwgNCwgMjExLCAyMTcsIDgsIDQsIDIxMSwgMjE2LCA4LCA0LCAyMTEsIDIxNCwgOCwgNCwgCi0gICAgMjExLCAyMTUsIDgsIDQsIDIyNywgMjI0LCA4LCA0LCAyMjcsIDIyMywgOCwgNCwgMjI3LCAyMjksIDgsIDQsIDIyNywgMjI1LCAKLSAgICA4LCA0LCAyMjcsIDIyNiwgOCwgNCwgMjI3LCAyMjgsIDgsIDQsIDIyNywgMjI3LCA4LCA0LCAyMjcsIDIzNCwgOCwgNCwgCi0gICAgMjI3LCAyMzMsIDgsIDQsIDIyNywgMjM3LCA4LCA0LCAyMjcsIDIzNiwgOCwgNCwgMjI3LCAyMTcsIDgsIDQsIDIyNywgMjE4LCAKLSAgICA4LCA0LCAyMjcsIDIyMSwgOCwgNCwgMjI3LCAyMjIsIDgsIDQsIDIyNywgMjMwLCA4LCA0LCAyMjcsIDIzMiwgOCwgNCwgCi0gICAgMjI3LCAyMTIsIDgsIDQsIDIyNywgMjIwLCA4LCA0LCAyMjcsIDIxNiwgOCwgNCwgMjI3LCAyMTMsIDgsIDQsIDIyNywgMjE0LCAKLSAgICA4LCA0LCAyMjcsIDIwNywgOCwgNCwgMjI3LCAyMDYsIDgsIDQsIDIyNywgMjExLCA4LCA0LCAyMjcsIDIxMCwgOCwgNCwgCi0gICAgMjI3LCAyMDgsIDgsIDQsIDIyNywgMjA5LCA4LCA0LCAyMjAsIDU1LCA4LCA0LCAxODksIDgsIDQsIDIyMCwgMTE3LCA4LCA0LCAKLSAgICAyMjAsIDU4LCA4LCA0LCAyMjAsIDEwOSwgOCwgNCwgMjIwLCAxMTIsIDgsIDQsIDIyMCwgMTEwLCA4LCA0LCAyMjIsIDE0MiwgCi0gICAgOCwgNCwgMjIyLCAxMzIsIDgsIDQsIDIyMiwgMjAyLCA4LCA0LCAyMjIsIDE1MCwgOCwgNCwgMjE4LCAyMjgsIDgsIDQsIAotICAgIDIxOCwgMjMwLCA4LCA0LCAyMTgsIDIyOSwgOCwgNCwgMjE5LCAyMjEsIDgsIDQsIDIxOSwgMjEwLCA4LCA0LCAyMTksIDI0MiwgCi0gICAgOCwgNCwgMjE5LCAyMjQsIDgsIDQsIDIyMSwgMzUsIDgsIDQsIDIyMiwgMTAwLCA4LCA0LCAyMjEsIDU5LCA4LCA0LCAyMTgsIAotICAgIDIwNiwgOCwgNCwgMjE4LCAyMDQsIDgsIDQsIDIxOSwgMjcsIDgsIDQsIDIxOCwgMjI3LCA4LCA0LCAyMTgsIDIwOSwgOCwgNCwgCi0gICAgMjE4LCAyMTcsIDgsIDQsIDIxOCwgMTEzLCA4LCA0LCAyMTgsIDExMiwgOCwgNCwgMjE4LCAxNzcsIDgsIDQsIDIxOCwgMTE5LCAKLSAgICA4LCA0LCAyMTgsIDExNCwgOCwgNCwgMjE4LCAxMTgsIDgsIDQsIDIxOSwgMTIzLCA4LCA0LCAyMTksIDEyMiwgOCwgNCwgCi0gICAgMjE5LCAxMjgsIDgsIDQsIDIxOSwgMTI0LCA4LCA0LCAyMTksIDEyNSwgOCwgNCwgMjE5LCAxMjcsIDgsIDQsIDIxOSwgMTI2LCAKLSAgICA4LCA0LCAyMTksIDEzNSwgOCwgNCwgMjE5LCAxMzQsIDgsIDQsIDIxOSwgMTU3LCA4LCA0LCAyMTksIDEzNiwgOCwgNCwgCi0gICAgMjE5LCAxMTksIDgsIDQsIDIxOSwgMTE4LCA4LCA0LCAyMTksIDEyMSwgOCwgNCwgMjE5LCAxMjAsIDgsIDQsIDIxOSwgMTMwLCAKLSAgICA4LCA0LCAyMTksIDEzMywgOCwgNCwgMjE5LCAxMzEsIDgsIDQsIDIxOSwgMTE1LCA4LCA0LCAyMTksIDExNCwgOCwgNCwgCi0gICAgMjE5LCAxMTcsIDgsIDQsIDIxOSwgMTE2LCA4LCA0LCAyMTksIDEwOSwgOCwgNCwgMjE5LCAxMDgsIDgsIDQsIDIxOSwgMTEzLCAKLSAgICA4LCA0LCAyMTksIDExMiwgOCwgNCwgMjE5LCAxMTAsIDgsIDQsIDIxOSwgMTExLCA4LCA0LCAyMTIsIDcwLCA4LCA0LCAyMTIsIAotICAgIDY5LCA4LCA0LCAyMTIsIDc1LCA4LCA0LCAyMTIsIDcyLCA4LCA0LCAyMTIsIDUyLCA4LCA0LCAyMTIsIDU0LCA4LCA0LCAKLSAgICAyMTIsIDUzLCA4LCA0LCAyMTIsIDU3LCA4LCA0LCAyMTIsIDU2LCA4LCA0LCAyMTIsIDYwLCA4LCA0LCAyMTIsIDU4LCA4LCAKLSAgICA0LCAyMTIsIDY0LCA4LCA0LCAyMTIsIDYzLCA4LCA0LCAyMTIsIDY3LCA4LCA0LCAyMTIsIDY1LCA4LCA0LCAyMTIsIDQ4LCAKLSAgICA4LCA0LCAyMTIsIDQ3LCA4LCA0LCAyMTIsIDU1LCA4LCA0LCAyMTIsIDUxLCA4LCA0LCAyMTIsIDQ5LCA4LCA0LCAyMTIsIAotICAgIDUwLCA4LCA0LCAyMTIsIDQwLCA4LCA0LCAyMTIsIDM5LCA4LCA0LCAyMTIsIDQ0LCA4LCA0LCAyMTIsIDQzLCA4LCA0LCAKLSAgICAyMTIsIDQxLCA4LCA0LCAyMTIsIDQyLCA4LCA0LCAyNTAsIDcyLCA4LCA0LCAyNTAsIDY5LCA4LCA0LCAyNTAsIDkyLCA4LCAKLSAgICA0LCAyNTAsIDgwLCA4LCA0LCAyNTAsIDIsIDgsIDQsIDI1MCwgMSwgOCwgNCwgMjUwLCA0LCA4LCA0LCAyNTAsIDMsIDgsIDQsIAotICAgIDI1MCwgMTYsIDgsIDQsIDI1MCwgMTUsIDgsIDQsIDI1MCwgMjMsIDgsIDQsIDI1MCwgMTgsIDgsIDQsIDI1MCwgNTIsIDgsIAotICAgIDQsIDI1MCwgNTAsIDgsIDQsIDI1MCwgNjcsIDgsIDQsIDI1MCwgNTgsIDgsIDQsIDI0OSwgMjUyLCA4LCA0LCAyNTAsIDYsIAotICAgIDgsIDQsIDI1MCwgMCwgOCwgNCwgMjQ5LCAyNTMsIDgsIDQsIDI0OSwgMjU1LCA4LCA0LCAyNDksIDI0NiwgOCwgNCwgMjQ5LCAKLSAgICAyNDUsIDgsIDQsIDI0OSwgMjUwLCA4LCA0LCAyNDksIDI0OSwgOCwgNCwgMjQ5LCAyNDcsIDgsIDQsIDI0OSwgMjQ4LCA4LCAKLSAgICA0LCAyMjMsIDgwLCA4LCA0LCAyMjMsIDgxLCA4LCA0LCAyMjMsIDY3LCA4LCA0LCAyMjMsIDY4LCA4LCA0LCAyMjMsIDcxLCAKLSAgICA4LCA0LCAyMjMsIDcwLCA4LCA0LCAyMjMsIDczLCA4LCA0LCAyMjMsIDcyLCA4LCA0LCAyMjMsIDc1LCA4LCA0LCAyMjMsIAotICAgIDc0LCA4LCA0LCAyMjMsIDc5LCA4LCA0LCAyMjMsIDc2LCA4LCA0LCAyMjMsIDYzLCA4LCA0LCAyMjMsIDYyLCA4LCA0LCAKLSAgICAyMjMsIDY5LCA4LCA0LCAyMjMsIDY2LCA4LCA0LCAyMjMsIDY0LCA4LCA0LCAyMjMsIDY1LCA4LCA0LCAyMjMsIDU3LCA4LCAKLSAgICA0LCAyMjMsIDU2LCA4LCA0LCAyMjMsIDYxLCA4LCA0LCAyMjMsIDYwLCA4LCA0LCAyMjMsIDU4LCA4LCA0LCAyMjMsIDU5LCAKLSAgICA4LCA0LCAyMjgsIDE0NSwgOCwgNCwgMjI4LCAxNDQsIDgsIDQsIDIyOCwgMTQ3LCA4LCA0LCAyMjgsIDE0NiwgOCwgNCwgCi0gICAgMjI4LCAxMzcsIDgsIDQsIDIyOCwgMTM5LCA4LCA0LCAyMjgsIDEzOCwgOCwgNCwgMjI4LCAxNDEsIDgsIDQsIDIyOCwgMTQwLCAKLSAgICA4LCA0LCAyMjgsIDE0MywgOCwgNCwgMjI4LCAxNDIsIDgsIDQsIDIyOCwgMTMyLCA4LCA0LCAyMjgsIDEzMSwgOCwgNCwgCi0gICAgMjI4LCAxMzYsIDgsIDQsIDIyOCwgMTM1LCA4LCA0LCAyMjgsIDEzMywgOCwgNCwgMjI4LCAxMzQsIDgsIDQsIDIyOCwgMTI2LCAKLSAgICA4LCA0LCAyMjgsIDEyNSwgOCwgNCwgMjI4LCAxMzAsIDgsIDQsIDIyOCwgMTI5LCA4LCA0LCAyMjgsIDEyNywgOCwgNCwgCi0gICAgMjI4LCAxMjgsIDgsIDQsIDIyMCwgMjUxLCA4LCA0LCAyMjAsIDI0NywgOCwgNCwgMjIxLCAyNCwgOCwgNCwgMjIxLCA2LCA4LCAKLSAgICA0LCAyMjAsIDE0MCwgOCwgNCwgMjIwLCAxNDIsIDgsIDQsIDIyMCwgMTQxLCA4LCA0LCAyMjAsIDE2MCwgOCwgNCwgMjIwLCAKLSAgICAxNTcsIDgsIDQsIDIyMCwgMTg3LCA4LCA0LCAyMjAsIDE3OCwgOCwgNCwgMjIwLCAyMjIsIDgsIDQsIDIyMCwgMjE1LCA4LCAKLSAgICA0LCAyMjAsIDI0MywgOCwgNCwgMjIwLCAyMzAsIDgsIDQsIDIyMCwgMTM2LCA4LCA0LCAyMjAsIDEzNSwgOCwgNCwgMjIwLCAKLSAgICAxNTAsIDgsIDQsIDIyMCwgMTM5LCA4LCA0LCAyMjAsIDEzNywgOCwgNCwgMjIwLCAxMzgsIDgsIDQsIDIyMCwgMTIwLCA4LCAKLSAgICA0LCAyMjAsIDExOSwgOCwgNCwgMjIwLCAxMjYsIDgsIDQsIDIyMCwgMTIzLCA4LCA0LCAyMjAsIDEyMSwgOCwgNCwgMjIwLCAKLSAgICAxMjIsIDgsIDQsIDIyNCwgMzMsIDgsIDQsIDIyNCwgMjgsIDgsIDQsIDIwMywgOCwgNCwgMjI0LCAzOSwgOCwgNCwgMjIzLCAKLSAgICAzMSwgOCwgNCwgMjIzLCAzMywgOCwgNCwgMjIzLCAzMiwgOCwgNCwgMjIzLCA5MCwgOCwgNCwgMjIzLCA4MywgOCwgNCwgCi0gICAgMjIzLCAxMTIsIDgsIDQsIDIyMywgOTQsIDgsIDQsIDIyMywgMTk2LCA4LCA0LCAyMjQsIDIxLCA4LCA0LCAyMjMsIDIzMSwgCi0gICAgOCwgNCwgMjIzLCAyNCwgOCwgNCwgMjIzLCAyMiwgOCwgNCwgMjIzLCA1MSwgOCwgNCwgMjIzLCAzMCwgOCwgNCwgMjIzLCAKLSAgICAyNiwgOCwgNCwgMjIzLCAyNywgOCwgNCwgMjIzLCA3LCA4LCA0LCAyMjMsIDYsIDgsIDQsIDIyMywgMTIsIDgsIDQsIDIyMywgCi0gICAgMTAsIDgsIDQsIDIyMywgOCwgOCwgNCwgMjIzLCA5LCA4LCA0LCAyMzUsIDEwMSwgOCwgNCwgMjM1LCAxMDAsIDgsIDQsIAotICAgIDIzNSwgMTEwLCA4LCA0LCAyMzUsIDEwMiwgOCwgNCwgMjM1LCAxMDYsIDgsIDQsIDIzNSwgMTA1LCA4LCA0LCAyMzUsIDEwOCwgCi0gICAgOCwgNCwgMjM1LCAxMDcsIDgsIDQsIDIzNSwgNDQsIDgsIDQsIDIzNSwgNDMsIDgsIDQsIDIzNSwgNDYsIDgsIDQsIDIzNSwgCi0gICAgNDUsIDgsIDQsIDIzNSwgNTksIDgsIDQsIDIzNSwgNTcsIDgsIDQsIDIzNSwgNzEsIDgsIDQsIDIzNSwgNjEsIDgsIDQsIAotICAgIDIzNSwgMzgsIDgsIDQsIDIzNSwgMzYsIDgsIDQsIDIzNSwgNTQsIDgsIDQsIDIzNSwgNDIsIDgsIDQsIDIzNSwgMzksIDgsIAotICAgIDQsIDIzNSwgNDAsIDgsIDQsIDIzNSwgMzAsIDgsIDQsIDIzNSwgMjksIDgsIDQsIDIzNSwgMzQsIDgsIDQsIDIzNSwgMzMsIAotICAgIDgsIDQsIDIzNSwgMzEsIDgsIDQsIDIzNSwgMzIsIDgsIDQsIDIyNCwgMTkxLCA4LCA0LCAyMjQsIDE4OSwgOCwgNCwgMjI0LCAKLSAgICAxOTgsIDgsIDQsIDIyNCwgMTkyLCA4LCA0LCAyMjQsIDE5NSwgOCwgNCwgMjI0LCAxOTQsIDgsIDQsIDIyNCwgMTk3LCA4LCAKLSAgICA0LCAyMjQsIDE5NiwgOCwgNCwgMjI0LCAxNDQsIDgsIDQsIDIyNCwgMTQxLCA4LCA0LCAyMjQsIDE0NiwgOCwgNCwgMjI0LCAKLSAgICAxNDUsIDgsIDQsIDIyNCwgMTc4LCA4LCA0LCAyMjQsIDE3NywgOCwgNCwgMjI0LCAxODcsIDgsIDQsIDIyNCwgMTgxLCA4LCAKLSAgICA0LCAyMjQsIDEzNiwgOCwgNCwgMjI0LCAxMzIsIDgsIDQsIDIyNCwgMTc1LCA4LCA0LCAyMjQsIDE0MCwgOCwgNCwgMjI0LCAKLSAgICAxMzgsIDgsIDQsIDIyNCwgMTM5LCA4LCA0LCAyMjQsIDExNiwgOCwgNCwgMjI0LCAxMTQsIDgsIDQsIDIyNCwgMTI2LCA4LCAKLSAgICA0LCAyMjQsIDExOSwgOCwgNCwgMjI0LCAxMTcsIDgsIDQsIDIyNCwgMTE4LCA4LCA0LCAyMzUsIDkwLCA4LCA0LCAyMzUsIAotICAgIDg5LCA4LCA0LCAyMzUsIDk2LCA4LCA0LCAyMzUsIDkxLCA4LCA0LCAyMzUsIDkzLCA4LCA0LCAyMzUsIDkyLCA4LCA0LCAKLSAgICAyMzUsIDk1LCA4LCA0LCAyMzUsIDk0LCA4LCA0LCAyMzUsIDgxLCA4LCA0LCAyMzUsIDgzLCA4LCA0LCAyMzUsIDgyLCA4LCAKLSAgICA0LCAyMzUsIDg2LCA4LCA0LCAyMzUsIDg1LCA4LCA0LCAyMzUsIDg4LCA4LCA0LCAyMzUsIDg3LCA4LCA0LCAyMzUsIDc3LCAKLSAgICA4LCA0LCAyMzUsIDc2LCA4LCA0LCAyMzUsIDg0LCA4LCA0LCAyMzUsIDgwLCA4LCA0LCAyMzUsIDc4LCA4LCA0LCAyMzUsIAotICAgIDc5LCA4LCA0LCAyMzUsIDczLCA4LCA0LCAyMzUsIDcyLCA4LCA0LCAyMzUsIDc1LCA4LCA0LCAyMzUsIDc0LCA4LCA0LCAKLSAgICAyMjgsIDI0OSwgOCwgNCwgMjI4LCAyNDgsIDgsIDQsIDIyOSwgMCwgOCwgNCwgMjI4LCAyNTAsIDgsIDQsIDIyOCwgMjUyLCAKLSAgICA4LCA0LCAyMjgsIDI1MSwgOCwgNCwgMjI4LCAyNTUsIDgsIDQsIDIyOCwgMjUzLCA4LCA0LCAyMjgsIDIzOCwgOCwgNCwgCi0gICAgMjI4LCAyMzksIDgsIDQsIDIyOCwgMjQ0LCA4LCA0LCAyMjgsIDI0MywgOCwgNCwgMjI4LCAyNDcsIDgsIDQsIDIyOCwgMjQ1LCAKLSAgICA4LCA0LCAyMjgsIDIzMywgOCwgNCwgMjI4LCAyNDIsIDgsIDQsIDIyOCwgMjM3LCA4LCA0LCAyMjgsIDIzNCwgOCwgNCwgCi0gICAgMjI4LCAyMzUsIDgsIDQsIDIyOCwgMjI4LCA4LCA0LCAyMjgsIDIyNywgOCwgNCwgMjI4LCAyMzIsIDgsIDQsIDIyOCwgMjMxLCAKLSAgICA4LCA0LCAyMjgsIDIyOSwgOCwgNCwgMjI4LCAyMzAsIDgsIDQsIDIyOCwgMCwgOCwgNCwgMjI3LCAyNTUsIDgsIDQsIDIyOCwgCi0gICAgMTAsIDgsIDQsIDIyOCwgNCwgOCwgNCwgMjI4LCA3LCA4LCA0LCAyMjgsIDYsIDgsIDQsIDIyOCwgOSwgOCwgNCwgMjI4LCA4LCAKLSAgICA4LCA0LCAyMjcsIDI0MywgOCwgNCwgMjI3LCAyNDUsIDgsIDQsIDIyNywgMjQ0LCA4LCA0LCAyMjcsIDI0OSwgOCwgNCwgCi0gICAgMjI3LCAyNDgsIDgsIDQsIDIyNywgMjUzLCA4LCA0LCAyMjcsIDI1MCwgOCwgNCwgMjI3LCAyNDEsIDgsIDQsIDIyNywgMjQwLCAKLSAgICA4LCA0LCAyMjcsIDI0NywgOCwgNCwgMjI3LCAyNDIsIDgsIDQsIDIxMywgMTM4LCA4LCA0LCAyMTMsIDEzNywgOCwgNCwgCi0gICAgMjEzLCAxNDUsIDgsIDQsIDIxMywgMTQwLCA4LCA0LCAyMTMsIDE0MiwgOCwgNCwgMjEzLCAxNDEsIDgsIDQsIDIxMywgMTQ0LCAKLSAgICA4LCA0LCAyMTMsIDE0MywgOCwgNCwgMjEzLCAxMjcsIDgsIDQsIDIxMywgMTI4LCA4LCA0LCAyMTMsIDEzMiwgOCwgNCwgCi0gICAgMjEzLCAxMzEsIDgsIDQsIDIxMywgMTM2LCA4LCA0LCAyMTMsIDEzNCwgOCwgNCwgMjEzLCAxMDksIDgsIDQsIDIxMywgMTA3LCAKLSAgICA4LCA0LCAyMTMsIDExOSwgOCwgNCwgMjEzLCAxMTIsIDgsIDQsIDIxMywgMTEwLCA4LCA0LCAyMTMsIDExMSwgOCwgNCwgCi0gICAgMjEyLCAyNDEsIDgsIDQsIDIxMiwgMjM5LCA4LCA0LCAyMTIsIDI1NSwgOCwgNCwgMjEyLCAyNDIsIDgsIDQsIDIxMiwgMjQ5LCAKLSAgICA4LCA0LCAyMTIsIDI0OCwgOCwgNCwgMjEyLCAyNTIsIDgsIDQsIDIxMiwgMjUwLCA4LCA0LCAyMTIsIDE4MiwgOCwgNCwgCi0gICAgMjEyLCAxODEsIDgsIDQsIDIxMiwgMTg1LCA4LCA0LCAyMTIsIDE4MywgOCwgNCwgMjEyLCAyMTUsIDgsIDQsIDIxMiwgMjEyLCAKLSAgICA4LCA0LCAyMTIsIDIzNSwgOCwgNCwgMjEyLCAyMTksIDgsIDQsIDIxMiwgMTczLCA4LCA0LCAyMTIsIDE3MCwgOCwgNCwgCi0gICAgMjEyLCAyMDMsIDgsIDQsIDIxMiwgMTgwLCA4LCA0LCAyMTIsIDE3NiwgOCwgNCwgMjEyLCAxNzcsIDgsIDQsIDIxMiwgMTU1LCAKLSAgICA4LCA0LCAyMTIsIDE1NCwgOCwgNCwgMjEyLCAxNjEsIDgsIDQsIDIxMiwgMTU4LCA4LCA0LCAyMTIsIDE1NiwgOCwgNCwgCi0gICAgMjEyLCAxNTcsIDgsIDM0LCAyMjQsIDE3OCwgOCwgMzQsIDIzMywgMTMsIDgsIDM0LCAyMzQsIDcwLCA4LCAzNCwgMjI4LCA0LCAKLSAgICA4LCAzNCwgMjQ5LCAxMiwgOCwgMzQsIDIxOSwgMTI4LCA4LCAzNCwgMjQyLCAyNDQsIDgsIDM0LCAyNDMsIDIwLCA4LCAzNCwgCi0gICAgMjMxLCA0MiwgOCwgMzQsIDI0MCwgMTcyLCA4LCAzNCwgMjMyLCAxMTYsIDgsIDM0LCAyNTIsIDMsIDgsIDM0LCAyMzAsIAotICAgIDE5NiwgOCwgMzQsIDIxMiwgMjM1LCA4LCAzNCwgMjI1LCA4LCA4LCAzNCwgMjQwLCAxNjYsIDgsIDM0LCAyMTcsIDI1MywgOCwgCi0gICAgMzQsIDI0MywgMTEwLCA4LCAzNCwgMjEyLCAwLCA4LCAzNCwgMjQ5LCA2LCA4LCAzNCwgMjQ4LCA0NiwgOCwgMzQsIDI1MSwgCi0gICAgMjcsIDgsIDM0LCAyNDIsIDI0MCwgOCwgMzQsIDIyNywgMjUwLCA4LCAzNCwgMjE2LCA4MiwgOCwgMzQsIDIyNywgNDEsIDgsIAotICAgIDM0LCAyMzUsIDc3LCA4LCAzNCwgMjEyLCAxMiwgOCwgMzQsIDIyNCwgMjQ0LCA4LCAzNCwgMjQxLCA5NCwgOCwgMzQsIDIxMiwgCi0gICAgMjQxLCA4LCAzNCwgMjE0LCA5NSwgOCwgMzQsIDIyMCwgMTI2LCA4LCAzNCwgMjE0LCAyMjEsIDgsIDM0LCAyMTIsIDEwOSwgCi0gICAgOCwgMzQsIDIzNSwgNzEsIDgsIDM0LCAyMjcsIDIxNiwgOCwgMzQsIDIzNSwgNzUsIDgsIDM0LCAyNDIsIDEzMCwgOCwgMzQsIAotICAgIDIzNSwgOTUsIDgsIDM0LCAyMTMsIDIxNCwgOCwgMzQsIDI0NiwgMzMsIDgsIDM0LCAyMjAsIDEzOCwgOCwgMzQsIDIzMywgOCwgCi0gICAgOCwgMzQsIDI0OSwgMTYsIDgsIDM0LCAyNDksIDQ2LCA4LCAzNCwgMjQ5LCAyMzAsIDgsIDM0LCAyNDAsIDE2OSwgOCwgMzQsIAotICAgIDIyMCwgMjUxLCA4LCAzNCwgMjExLCAyNTUsIDgsIDM0LCAyMjAsIDE3OCwgOCwgMzQsIDI1MCwgNjcsIDgsIDM0LCAyMTEsIAotICAgIDIzMCwgOCwgMzQsIDIyOSwgMjUyLCA4LCAzNCwgMjM0LCAxODgsIDIzMiwgMjI1LCAxLCAyNTIsIDEwNywgMjMyLCAyMjUsIAotICAgIDEsIDE5MywgMjMyLCAyMjUsIDEsIDIyNiwgMjMsIDIzMiwgMjI1LCAxLCAyNDgsIDE2NCwgMjMyLCAyMjUsIDEsIDIxOCwgCi0gICAgNTIsIDIzMiwgMjI1LCAxLCAyMTcsIDE2MSwgMjMyLCAyMjUsIDEsIDI0MywgMTEwLCAyMzIsIDIyNSwgMSwgMTgxLCAyMzIsIAotICAgIDIyNSwgMSwgMjM0LCAxMzgsIDIzMiwgMjI1LCAxLCAyMzUsIDEzOSwgMjMyLCAyMjUsIDEsIDI1MCwgMjE5LCAyMzIsIDIyNSwgCi0gICAgMSwgMjUwLCA5MiwgMjMyLCAyMjUsIDEsIDI0NSwgMjQ5LCAyMzIsIDIyNSwgMSwgMjE2LCAxNDEsIDIzMiwgMjI1LCAxLCAKLSAgICAyMTYsIDEzMywgMjMyLCAyMjUsIDEsIDE4OCwgMjMyLCAyMjUsIDEsIDIwNSwgMjMyLCAyMjUsIDEsIDIzMywgMTU3LCAyMzIsIAotICAgIDIyNSwgMSwgMjIyLCAyMDIsIDIzMiwgMjI1LCAxLCAyMTIsIDc1LCAyMzIsIDIyNSwgMSwgMjEyLCAxMDksIDIzMiwgMjI1LCAKLSAgICAxLCAyMjksIDE1OSwgMjMyLCAyMjUsIDEsIDE1OSwgMjMyLCAyMjUsIDEsIDIxMywgMTUzLCAyMzIsIDIyNSwgMSwgMjQxLCAKLSAgICAxNzQsIDIzMiwgMjI1LCAxLCAyNDQsIDE2NCwgMjMyLCAyMjUsIDEsIDIxNCwgNDksIDIzMiwgMjI1LCAxLCAyMjEsIDI0LCAKLSAgICAyMzIsIDIyNSwgMSwgMTg2LCAyMzIsIDIyNSwgMSwgMjQyLCAyMjUsIDIzMiwgMjI1LCAxLCA2MSwgMjMyLCAyMjUsIDEsIAotICAgIDI1NCwgMTQ4LCAyMzIsIDIyNSwgMSwgNzQsIDIzMiwgMjI1LCAxLCAyNDUsIDIyLCAyMzIsIDIyNSwgMSwgNzIsIDIzMiwgCi0gICAgMjI1LCAxLCA3NSwgMjMyLCAyMjUsIDEsIDY5LCAyMzIsIDIyNSwgMSwgMjE1LCAxODMsIDIzMiwgMjI1LCAxLCAyMTUsIAotICAgIDE3OCwgMjMyLCAyMjUsIDEsIDIyNywgOTksIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyMTcsIDcxLCAyMzIsIDIyNSwgCi0gICAgMSwgMTYwLCAyMzAsIDQ2LCAyMjUsIDE1MCwgMjMyLCAyMjUsIDEsIDE2MCwgMjMwLCAxMDQsIDI0OSwgMTUsIDIzMiwgMjI1LCAKLSAgICAxLCAxNjAsIDIzMCwgMTA0LCAyNTEsIDEyOCwgMjMyLCAyMjUsIDEsIDE2MCwgMjMwLCAxMDQsIDIwNSwgMjMyLCAyMjUsIDEsIAotICAgIDE2MCwgMjMwLCAxMDQsIDIzNSwgMTE2LCAyMzIsIDIyNSwgMjI1LCAyNywgMjQ5LCAxNTcsIDIzMiwgMjI1LCAyMjUsIDI3LCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMzksIDQsIDI0NSwgMTY1LCAzOSwgNCwgMjQ1LCAxNjIsIDM5LCA0LCAyNDEsIDIwNCwgMzksIAotICAgIDQsIDIxNCwgMSwgMzksIDQsIDIxNCwgMCwgMzksIDQsIDIyNiwgODYsIDM5LCA0LCAyNTEsIDE5MSwgMzksIDQsIDI1MSwgCi0gICAgMjQyLCAzOSwgNCwgMjMxLCAxNzksIDM5LCA0LCAyMzQsIDAsIDM5LCA0LCAyMzEsIDczLCAzOSwgNCwgMjQzLCA1MSwgMzksIAotICAgIDQsIDI0NCwgMTE2LCAzOSwgNCwgMjE0LCAyMjcsIDM5LCA0LCAyMTcsIDIxOSwgMzksIDQsIDIxNywgMTQ3LCAzOSwgNCwgCi0gICAgMjQ3LCAyMjQsIDM5LCA0LCAyNDcsIDIyMSwgMzksIDQsIDIzMywgNzQsIDM5LCA0LCAyMjQsIDEsIDM5LCA0LCAyNDgsIDI4LCAKLSAgICAzOSwgNCwgMjI5LCAyMTksIDM5LCA0LCAyMjIsIDg5LCAzOSwgNCwgMjIwLCAyNDEsIDM5LCA0LCAyMTIsIDg1LCAzOSwgNCwgCi0gICAgMjEyLCA2NiwgMzksIDQsIDI1MCwgMTE2LCAzOSwgNCwgMjM1LCAxMjUsIDM5LCA0LCAyMjksIDcsIDM5LCA0LCAyMTMsIDM1LCAKLSAgICAzOSwgNCwgMjM0LCAxODcsIDM5LCA0LCAyMjksIDEzNiwgMzksIDQsIDI0MywgMzEsIDM5LCA0LCAyMzEsIDE0NSwgMzksIDQsIAotICAgIDIyOSwgMTg0LCAzOSwgNCwgMjI4LCAxNiwgMzksIDQsIDcyLCAzOSwgNCwgMjM1LCAyNTEsIDM5LCA0LCAyNDEsIDE2NSwgCi0gICAgMzksIDQsIDI0MSwgMTQ2LCAzOSwgNCwgMjEzLCAyMzUsIDM5LCA0LCAyMTMsIDIyNiwgMzksIDQsIDIyNSwgMjQwLCAzOSwgCi0gICAgNCwgMjUxLCAxODksIDM5LCA0LCAyNTEsIDE4NCwgMzksIDQsIDIzMSwgMTcyLCAzOSwgNCwgMjMzLCAyNTMsIDM5LCA0LCAKLSAgICAyMzEsIDcwLCAzOSwgNCwgMjQzLCA0NywgMzksIDQsIDI0NCwgOTAsIDM5LCA0LCAyMTQsIDE1NCwgMzksIDQsIDIxNywgNzEsIAotICAgIDM5LCA0LCAyMTcsIDEyOCwgMzksIDQsIDI0NywgMjE2LCAzOSwgNCwgMjQ3LCAyMjAsIDM5LCA0LCAyMzMsIDEzLCAzOSwgNCwgCi0gICAgMjIzLCAxODgsIDM5LCA0LCAyNDcsIDIxMSwgMzksIDQsIDIyOSwgMjEzLCAzOSwgNCwgMjIwLCAxMTcsIDM5LCA0LCAyMjAsIAotICAgIDIxMiwgMzksIDQsIDIxMiwgMzcsIDM5LCA0LCAyMTIsIDYyLCAzOSwgNCwgMjQ5LCAyNDQsIDM5LCA0LCAyMzUsIDExMCwgCi0gICAgMzksIDQsIDIyOSwgMCwgMzksIDQsIDIxMiwgMjU1LCAzOSwgNCwgMjM0LCAxMDEsIDM5LCA0LCAyMjksIDEyOCwgMzksIDQsIAotICAgIDI0MiwgMTkwLCAzOSwgNCwgMjMxLCA0MiwgMzksIDQsIDIyOSwgNjQsIDM5LCA0LCAyMjgsIDEwLCAzOSwgNCwgNjEsIDM5LCAKLSAgICA0LCAyNTQsIDMyLCAzOSwgNCwgMjI5LCAxNTUsIDM5LCA0LCAxNTksIDM5LCA0LCAyNDIsIDEsIDM5LCA0LCAyMTQsIDQ5LCAKLSAgICAzOSwgNCwgMjE0LCAzOSwgMzksIDQsIDE5MywgMzksIDQsIDI1MSwgMTk1LCAzOSwgNCwgMjUyLCAxMDcsIDM5LCA0LCAyMzEsIAotICAgIDE4NywgMzksIDQsIDIzNCwgNCwgMzksIDQsIDIzNCwgMywgMzksIDQsIDIzMSwgNzcsIDM5LCA0LCAyNDMsIDU1LCAzOSwgNCwgCi0gICAgMjQ0LCAxNjQsIDM5LCA0LCAyMTUsIDEsIDM5LCA0LCAyMTgsIDUyLCAzOSwgNCwgMjE3LCAxNjEsIDM5LCA0LCAyNDcsIAotICAgIDIzMiwgMzksIDQsIDI0NywgMjIzLCAzOSwgNCwgMjMzLCAxNTcsIDM5LCA0LCAyMDMsIDM5LCA0LCAyNDgsIDE2NCwgMzksIAotICAgIDQsIDIyOSwgMjI4LCAzOSwgNCwgMjIyLCAyMDIsIDM5LCA0LCAyMjEsIDI0LCAzOSwgNCwgMjEyLCAxMDksIDM5LCA0LCAKLSAgICAyMTIsIDc1LCAzOSwgNCwgMjUwLCAyMTksIDM5LCA0LCAyMzUsIDEzOSwgMzksIDQsIDIyOSwgMTYsIDM5LCA0LCAxODYsIAotICAgIDM5LCA0LCAxODEsIDM5LCA0LCAyMzQsIDIzOSwgMzksIDQsIDIyOSwgMTQxLCAzOSwgNCwgMjQzLCAxMTAsIDM5LCA0LCAKLSAgICAxODgsIDM5LCA0LCAyMDUsIDM5LCA0LCAyMjgsIDIzLCAzOSwgNCwgMjI3LCA0OSwgMzksIDQsIDIyNywgNDUsIDM5LCA0LCAKLSAgICAyNDEsIDM5LCAzOSwgNCwgMjEzLCAyMDIsIDM5LCA0LCAyMTMsIDE5OCwgMzksIDQsIDIyNSwgMTI5LCAzOSwgNCwgMjUxLCAKLSAgICAxODcsIDM5LCA0LCAyNTEsIDExOCwgMzksIDQsIDIzMSwgMTY3LCAzOSwgNCwgMjMzLCAyNTEsIDM5LCA0LCAyMzEsIDY2LCAKLSAgICAzOSwgNCwgMjQzLCA0MywgMzksIDQsIDI0NCwgMywgMzksIDQsIDIxNCwgMTA4LCAzOSwgNCwgMjE2LCAyMzAsIDM5LCA0LCAKLSAgICAyMTcsIDEwNiwgMzksIDQsIDI0NywgMjE0LCAzOSwgNCwgMjQ3LCAyMTgsIDM5LCA0LCAyMzIsIDE4MCwgMzksIDQsIDIyMywgCi0gICAgOTksIDM5LCA0LCAyNDcsIDc5LCAzOSwgNCwgMjI5LCAyMDAsIDM5LCA0LCAyMTksIDIyNiwgMzksIDQsIDIyMCwgMTgxLCAKLSAgICAzOSwgNCwgMjEyLCAxNCwgMzksIDQsIDIxMiwgNTksIDM5LCA0LCAyNDksIDExMywgMzksIDQsIDIzNSwgNjIsIDM5LCA0LCAKLSAgICAyMjgsIDI0NiwgMzksIDQsIDIxMiwgMjIwLCAzOSwgNCwgMjM0LCAxOSwgMzksIDQsIDIyOSwgMTI2LCAzOSwgNCwgMjQyLCAKLSAgICAxNDAsIDM5LCA0LCAyMzAsIDIwMiwgMzksIDQsIDIyOCwgMTc1LCAzOSwgNCwgMjI3LCAyNTEsIDM5LCA0LCA2OSwgMzksIDQsIAotICAgIDIxNSwgMTYwLCAzOSwgNCwgMjQwLCAyMTIsIDM5LCA0LCAyNDAsIDIwMiwgMzksIDQsIDIxMywgMTgzLCAzOSwgNCwgMjEzLCAKLSAgICAxNzcsIDM5LCA0LCAyMjUsIDM1LCAzOSwgNCwgMjUxLCAxODYsIDM5LCA0LCAyNTEsIDU0LCAzOSwgNCwgMjMxLCAxNjYsIAotICAgIDM5LCA0LCAyMzMsIDI0OSwgMzksIDQsIDIzMSwgNjUsIDM5LCA0LCAyNDMsIDQyLCAzOSwgNCwgMjQzLCAyMDUsIDM5LCA0LCAKLSAgICAyMTQsIDk5LCAzOSwgNCwgMjE2LCA4MiwgMzksIDQsIDIxNywgOTAsIDM5LCA0LCAyNDcsIDIxMiwgMzksIDQsIDI0NywgCi0gICAgMjE3LCAzOSwgNCwgMjMyLCAxNTYsIDM5LCA0LCAyMjMsIDUxLCAzOSwgNCwgMjQ2LCAzMywgMzksIDQsIDIyOSwgMTk1LCAKLSAgICAzOSwgNCwgMjE5LCAyNywgMzksIDQsIDIyMCwgMTUwLCAzOSwgNCwgMjEyLCA4LCAzOSwgNCwgMjEyLCA1NSwgMzksIDQsIAotICAgIDI0OSwgNTMsIDM5LCA0LCAyMzUsIDU0LCAzOSwgNCwgMjI4LCAyNDIsIDM5LCA0LCAyMTIsIDIwMywgMzksIDQsIDIzMywgCi0gICAgMjM4LCAzOSwgNCwgMjI5LCAxMjUsIDM5LCA0LCAyNDIsIDkyLCAzOSwgNCwgMjMwLCAxNzIsIDM5LCA0LCAyMjgsIDkyLCAKLSAgICAzOSwgNCwgMjI3LCAyNDcsIDM5LCA0LCA3NSwgMzksIDQsIDIyNywgNjIsIDM5LCA0LCAyMjksIDg2LCAzOSwgNCwgMjQxLCAKLSAgICA1NCwgMzksIDQsIDI0MSwgNDIsIDM5LCA0LCAyMTMsIDIxNCwgMzksIDQsIDIxMywgMjAzLCAzOSwgNCwgMjI1LCAxNTAsIAotICAgIDM5LCA0LCAyNTEsIDE4OCwgMzksIDQsIDI1MSwgMTI4LCAzOSwgNCwgMjMxLCAxNjgsIDM5LCA0LCAyMzMsIDI1MiwgMzksIAotICAgIDQsIDIzMSwgNjgsIDM5LCA0LCAyNDMsIDQ1LCAzOSwgNCwgMjQzLCA0NCwgMzksIDQsIDI0NCwgMTIsIDM5LCA0LCAyMTQsIAotICAgIDExOSwgMzksIDQsIDEwOCwgMzksIDQsIDIxNywgMTA5LCAzOSwgNCwgMjQ3LCAyMTUsIDM5LCA0LCAyNDcsIDIxOSwgMzksIAotICAgIDQsIDIzMiwgMjA4LCAzOSwgNCwgMjIzLCAxMTIsIDM5LCA0LCAyNDcsIDk5LCAzOSwgNCwgMjI5LCAyMDQsIDM5LCA0LCAKLSAgICAyMTksIDI0MiwgMzksIDQsIDIyMCwgMTg3LCAzOSwgNCwgMjEyLCAxNiwgMzksIDQsIDIxMiwgNjAsIDM5LCA0LCAyNDksIAotICAgIDE3NSwgMzksIDQsIDIzNSwgNzEsIDM5LCA0LCAyMjgsIDI0NywgMzksIDQsIDIxMiwgMjM1LCAzOSwgNCwgMjM0LCAzNywgCi0gICAgMzksIDQsIDIyOSwgMTI3LCAzOSwgNCwgMjQyLCAxNTAsIDM5LCA0LCAyMzAsIDIzMSwgMzksIDQsIDIyOCwgMTg1LCAzOSwgCi0gICAgNCwgMjI3LCAyNTMsIDM5LCA0LCA3NCwgMzksIDQsIDI0NSwgMTA4LCAzOSwgNCwgMjI5LCAxNDYsIDM5LCA0LCAyNDEsIAotICAgIDIyMiwgMzksIDQsIDI0MSwgMTkzLCAzOSwgNCwgMjE0LCA2LCAzOSwgNCwgMjEzLCAyNTMsIDM5LCA0LCAyMjYsIDk2LCAzOSwgCi0gICAgNCwgMjUxLCAxOTIsIDM5LCA0LCAyNTEsIDI1MSwgMzksIDQsIDIzMSwgMTgwLCAzOSwgNCwgMjM0LCAxLCAzOSwgNCwgMjMzLCAKLSAgICAyNTUsIDM5LCA0LCAyMzEsIDc0LCAzOSwgNCwgMjQzLCA1MiwgMzksIDQsIDI0MywgNTAsIDM5LCA0LCAyNDQsIDEyMywgMzksIAotICAgIDQsIDIxNCwgMjMyLCAzOSwgNCwgMjE3LCAyMjksIDM5LCA0LCAyMTcsIDE0OCwgMzksIDQsIDI0NywgMjI1LCAzOSwgNCwgCi0gICAgMjQ3LCAyMjIsIDM5LCA0LCAyMzMsIDgyLCAzOSwgNCwgMjI0LCAyMSwgMzksIDQsIDI0OCwgNDEsIDM5LCA0LCAyMjksIAotICAgIDIyMCwgMzksIDQsIDIyMiwgMTAwLCAzOSwgNCwgMjIwLCAyNDMsIDM5LCA0LCAyMTIsIDg3LCAzOSwgNCwgMjEyLCA2NywgCi0gICAgMzksIDQsIDI1MCwgMTI0LCAzOSwgNCwgMjM1LCAxMjcsIDM5LCA0LCAyMjksIDksIDM5LCA0LCAyMTMsIDM4LCAzOSwgNCwgCi0gICAgMjM0LCAxODgsIDM5LCA0LCAyMjksIDEzNywgMzksIDQsIDIyOSwgMTMzLCAzOSwgNCwgMjQzLCAzOCwgMzksIDQsIDI0MywgCi0gICAgMjcsIDM5LCA0LCAyMzEsIDE1NiwgMzksIDQsIDIyOSwgMTg3LCAzOSwgNCwgMjI4LCAxNywgMzksIDQsIDIyOSwgMTYxLCAKLSAgICAzOSwgNCwgMjMzLCA0NiwgMzksIDI0OSwgMTU3LCAzOSwgMjQzLCAyMDAsIDIxOSwgNjksIDM5LCAyMjQsIDE1OCwgNzcsIAotICAgIDM5LCA0LCAyMjksIDIwMywgMjQ0LCAxNjQsIDM5LCA0LCAyMjksIDIwMywgMTgxLCAzOSwgNCwgMjI5LCAyMDMsIDIxOSwgCi0gICAgMjI2LCAzOSwgMTYsIDI0NCwgMTEzLCAzOSwgMTYsIDIzNCwgMTg2LCAzOSwgMTYsIDIxNywgMzQsIDM5LCAxNiwgMjI5LCAKLSAgICAzOSwgMzksIDE2LCAyNTIsIDY2LCAzOSwgMTYsIDI0NCwgMTYzLCAzOSwgMTYsIDIxOCwgNDksIDM5LCAxNiwgMjQ4LCAxMjEsIAotICAgIDM5LCAxNiwgMjQ3LCA3OCwgMzksIDE2LCAyMzMsIDIyNywgMzksIDE2LCAyMTYsIDIzNCwgMzksIDE2LCAyNDcsIDk4LCAzOSwgCi0gICAgMTYsIDIzNSwgNjMsIDM5LCAyMSwgMjEyLCA3OSwgMzksIDIxLCAxMTYsIDM5LCAyMSwgMTA5LCAzOSwgMjEsIDE2NiwgMzksIAotICAgIDIxLCAxNjMsIDM5LCAyMSwgMTgwLCAzOSwgMjEsIDE4OSwgMzksIDIxLCAxOTgsIDM5LCAyMSwgMTk1LCAzOSwgMjEsIDIwMCwgCi0gICAgMzksIDQsIDIyOSwgMjAzLCAxODgsIDM5LCA0LCAyMjksIDIwMywgMjQ3LCA5OSwgMzMsIDYsIDEsIDIxMiwgODMsIDMzLCAzLCAKLSAgICAxLCAyMTIsIDgzLCAzMywgNiwgMSwgMjQ1LCAyNDUsIDMzLCAzLCAxLCAyNDUsIDI0NSwgMzMsIDYsIDEsIDIyMywgMjAyLCAKLSAgICAyNDUsIDI0NywgMzMsIDMsIDEsIDIyMywgMjAyLCAyNDUsIDI0NywgMzMsIDYsIDEsIDIzNSwgMTgzLCAzMywgMywgMSwgCi0gICAgMjM1LCAxODMsIDMzLCA2LCAxLCAyNDcsIDExMywgMzMsIDMsIDEsIDI0NywgMTEzLCAzMywgNiwgMSwgMjMwLCAyMTAsIAotICAgIDIxNSwgMTc1LCAzMywgMywgMSwgMjMwLCAyMTAsIDIxNSwgMTc1LCAzMywgNiwgMSwgMjUxLCA2NCwgMjI3LCA2NywgMzMsIAotICAgIDMsIDEsIDI1MSwgNjQsIDIyNywgNjcsIDMzLCA2LCAxLCAyMjksIDE2OSwgMjEzLCAyMiwgMzMsIDMsIDEsIDIyOSwgMTY5LCAKLSAgICAyMTMsIDIyLCAzMywgNiwgMSwgMjEzLCAxOSwgMiwgMjUyLCAxMDIsIDIxMywgMjIsIDMzLCAzLCAxLCAyMTMsIDE5LCAyLCAKLSAgICAyNTIsIDEwMiwgMjEzLCAyMiwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyMTMsIDQ5LCAzMywgMywgMSwgMjM1LCAxODEsIDIxMywgCi0gICAgNDksIDMzLCA2LCAxLCAyMjMsIDIwMiwgMjEyLCAyMDMsIDMzLCAzLCAxLCAyMjMsIDIwMiwgMjEyLCAyMDMsIDMzLCA2LCAxLCAKLSAgICAyMzUsIDE4MSwgNjEsIDMzLCAzLCAxLCAyMzUsIDE4MSwgNjEsIDMzLCA2LCAxLCAyNDksIDE5MywgMjMyLCAyMjEsIDIxMiwgCi0gICAgMTc0LCAzMywgMywgMSwgMjQ5LCAxOTMsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDI1MSwgMTM3LCAyMTIsIAotICAgIDE3NCwgMzMsIDMsIDEsIDI1MSwgMTM3LCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyNDksIDE5MywgMjMyLCAKLSAgICAyMjEsIDIxMiwgMTc0LCAzMywgMywgMSwgMjM1LCAxODEsIDI0OSwgMTkzLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAKLSAgICAxLCAyMTIsIDIzNywgMzMsIDMsIDEsIDIxMiwgMjM3LCAzMywgNiwgMSwgMjIzLCAyMDIsIDIxNiwgMTM2LCAzMywgMywgMSwgCi0gICAgMjIzLCAyMDIsIDIxNiwgMTM2LCAzMywgNiwgMSwgMjE5LCAyMzYsIDI0OCwgNDEsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ4LCAKLSAgICA0MSwgMzMsIDYsIDEsIDIxOSwgMjM2LCAyNDUsIDEzMSwgMzMsIDMsIDEsIDIxOSwgMjM2LCAyNDUsIDEzMSwgMzMsIDYsIDEsIAotICAgIDIxOSwgMjM2LCAyNDUsIDExNywgMzMsIDMsIDEsIDIxOSwgMjM2LCAyNDUsIDExNywgMzMsIDYsIDEsIDIzMCwgMjE0LCA3NSwgCi0gICAgMzMsIDMsIDEsIDIzMCwgMjE0LCA3NSwgMzMsIDYsIDEsIDI1MSwgMTYzLCA3NSwgMzMsIDMsIDEsIDI1MSwgMTYzLCA3NSwgCi0gICAgMzMsIDYsIDEsIDUxLCAyMzAsIDIxNCwgNzUsIDMzLCAzLCAxLCA1MSwgMjMwLCAyMTQsIDc1LCAzMywgMSwgMjMwLCAxNTYsIAotICAgIDc1LCAzNywgMzMsIDIxNCwgODQsIDM3LCAzMywgMjE3LCAyMDEsIDIzMSwgNCwgNTIsIDM3LCAzMywgMjQwLCAyMDEsIDIzMSwgCi0gICAgNCwgNTIsIDM3LCAzMywgMjE3LCAxMDEsIDIzMSwgNCwgNTIsIDIyMCwgMjEsIDI1MywgMTMyLCAzNywgMzMsIDIzNCwgMTk4LCAKLSAgICAzNywgMzMsIDIyNiwgMTAxLCAzMywgMjM0LCAxOTgsIDMzLCAyMjYsIDEwMSwgMzMsIDYsIDEsIDI0NiwgMSwgMzMsIDMsIDEsIAotICAgIDI0NiwgMSwgMzMsIDYsIDEsIDI0NSwgMjM4LCAzMywgMywgMSwgMjQ1LCAyMzgsIDMzLCA2LCAxLCAyMTIsIDQ1LCAzMywgMywgCi0gICAgMSwgMjEyLCA0NSwgMzMsIDYsIDEsIDI1MCwgMTQwLCAzMywgMywgMSwgMjUwLCAxNDAsIDMzLCA2LCAxLCAyNDUsIDIzNywgCi0gICAgMzMsIDMsIDEsIDI0NSwgMjM3LCAzMywgNiwgMSwgMjE3LCAyMzAsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDMsIDEsIDIxNywgCi0gICAgMjMwLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCA2LCAxLCAyMTYsIDQzLCAzMywgMywgMSwgMjE2LCA0MywgMzMsIDYsIDEsIAotICAgIDIxNiwgMTE5LCAzMywgMywgMSwgMjE2LCAxMTksIDMzLCA2LCAxLCAyMTYsIDEyMywgMzMsIDMsIDEsIDIxNiwgMTIzLCAzMywgCi0gICAgNiwgMSwgMjE3LCAyMzUsIDMzLCAzLCAxLCAyMTcsIDIzNSwgMzMsIDYsIDEsIDI0MCwgMTkwLCAzMywgMywgMSwgMjQwLCAKLSAgICAxOTAsIDMzLCA2LCAxLCAyMjAsIDEzMiwgMzMsIDMsIDEsIDIyMCwgMTMyLCAyMCwgMSwgNjEsIDIwLCAxLCAxODEsIDIwLCAKLSAgICAxLCA2OSwgMjAsIDEsIDIzMywgMjM4LCAyMCwgMSwgMjQ1LCAxNjUsIDIwLCAxLCAyMjQsIDEsIDIwLCAxLCAyMTgsIDM1LCAKLSAgICAyMCwgMSwgNzUsIDIwLCAxLCAyMjgsIDEwLCAyMCwgMSwgNzIsIDIwLCAxLCAyMzMsIDE1NywgMjAsIDEsIDE5MywgMjAsIDEsIAotICAgIDIyMywgMTM2LCAyMCwgMSwgMjIzLCAxODIsIDIwLCAxLCAyMzMsIDczLCAyMCwgMSwgMjMxLCAxNDQsIDIwLCAxLCAyMTgsIAotICAgIDQ5LCAyMCwgMSwgMjI5LCAyMjYsIDIwLCAxLCAyMjksIDE0LCAyMCwgMSwgMTgzLCAyMCwgMSwgMjE4LCAyMDUsIDIwLCAxLCAKLSAgICAyMzAsIDE3MiwgMjAsIDEsIDIyMCwgMjA3LCAyMCwgMSwgMjIwLCAxMTcsIDIwLCAxLCAyMjAsIDIxNywgMjAsIDEsIDIyMSwgCi0gICAgNDQsIDIwLCAxLCAyMzMsIDE3NywgMjAsIDEsIDIzNCwgMTYyLCAyMCwgMSwgMjI4LCA2NCwgMjAsIDEsIDIyOCwgOTIsIDIwLCAKLSAgICAxLCAyMjgsIDI0MSwgMjAsIDEsIDIxMiwgMjE3LCAyMCwgMSwgMjIwLCAxNTAsIDIwLCAxLCAyMTIsIDE3OCwgMjAsIDEsIAotICAgIDE4NiwgMjAsIDEsIDIyOCwgMTIwLCAyMCwgMSwgMjM0LCAxNDgsIDIwLCAxLCAyMjYsIDI3LCAyMCwgMSwgMjI5LCA3LCAyMCwgCi0gICAgMSwgMjI4LCAxMDEsIDIwLCAxLCAyMjUsIDMwLCAyMCwgMSwgMjEzLCAxODAsIDIwLCAxLCAyMjYsIDg2LCAyMCwgMSwgMjQ0LCAKLSAgICAxMTYsIDIwLCAxLCAyMjMsIDUxLCAyMCwgMSwgMjMyLCAxNTYsIDIwLCAxLCAyMzEsIDQyLCAyMCwgMSwgMjI5LCA2NCwgMjAsIAotICAgIDEsIDIyMywgMjA0LCAyMCwgMSwgMjI0LCA2MSwgMjAsIDEsIDIzNCwgMTcxLCAyMCwgMSwgMjI5LCA5MywgMjAsIDEsIDIyOSwgCi0gICAgMTQxLCAyMCwgMSwgMjI5LCAxNTksIDIwLCAxLCAyMjAsIDE4NywgMjAsIDEsIDIyNSwgMzMsIDIwLCAxLCAyNDMsIDIwNSwgCi0gICAgMjAsIDEsIDI0NCwgNiwgMjAsIDEsIDIxNCwgNDksIDIwLCAxLCAyMDUsIDIwLCAxLCAyMzMsIDEzLCAyMCwgMSwgMjI1LCAKLSAgICAyNDAsIDIwLCAxLCAyMzIsIDE3NCwgMjAsIDEsIDIzNCwgMzcsIDIwLCAxLCAyMzEsIDE3NywgMjAsIDEsIDIyMywgMjMzLCAKLSAgICAyMCwgMSwgMjMxLCAxMjIsIDIwLCAxLCAxODgsIDIwLCAxLCAyMTcsIDcxLCAyMCwgMSwgMjM0LCAxMDEsIDIwLCAxLCAyMzAsIAotICAgIDIzMSwgMjAsIDEsIDIzMSwgMTg1LCAyMCwgMSwgMjE3LCAxODMsIDIwLCAxLCAyMzQsIDQsIDIwLCAxLCAyMTcsIDIwMCwgCi0gICAgMjAsIDEsIDIyOCwgOTMsIDIwLCAxLCAyMjIsIDE2NiwgMjAsIDEsIDI0NCwgMTYwLCAyMCwgMSwgMjM0LCA2LCAyMCwgMSwgCi0gICAgMjM0LCAzMywgMjAsIDM3LCAxNTIsIDIzNCwgMTQsIDIwLCAzNywgMTUyLCAyMTYsIDc0LCAyMCwgMjI5LCAxMywgMjAsIAotICAgIDI0MywgMjAwLCAyMTksIDY5LCAyMCwgMjQ5LCAxNjQsIDIwLCAyNDksIDE1NywgMjAsIDIyMSwgNzAsIDIwLCAyMjQsIDE1OCwgCi0gICAgNzcsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjUsIDE5MywgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEzLCAKLSAgICA1OSwgMjI1LCAxOTMsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjEsIDcsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIAotICAgIDIxMywgNTksIDIyMSwgNywgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEyLCAyNDUsIDIyNCwgMTc1LCA1OSwgMSwgMjUwLCAzMywgCi0gICAgMTYwLCAyMTMsIDU5LCAyMjQsIDE3NSwgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEyLCAyNDUsIDIyMywgNTEsIDU5LCAxLCAKLSAgICAyNTAsIDMzLCAxNjAsIDIxMywgNTksIDIyMywgNTEsIDU5LCAxLCAyNDQsIDI0NCwgMjQ2LCA3MiwgMTYwLCAxMzQsIDU5LCAKLSAgICAxLCAxMjQsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMjMxLCAzOCwgMjQ2LCA3MiwgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIAotICAgIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDQsIAotICAgIDI0NiwgNzIsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMTI0LCAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIAotICAgIDEsIDIzMSwgMzgsIDI0NiwgNzIsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAyNDYsIDcyLCAyMzMsIDYzLCAKLSAgICAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQ0LCAKLSAgICAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDEyNCwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAyMzEsIDM4LCAyMzMsIAotICAgIDYzLCAxNjAsIDEzNCwgNTksIDEsIDExNSwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0MywgMjMzLCA2MywgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCA2MiwgNzEsIDEzNCwgNTksIDEsIDYyLCAyMjAsIDIzLCA1OSwgMSwgNjIsIDE5OSwgMTM0LCAKLSAgICA1OSwgMSwgMjMyLCAxNjMsIDQ2LCAyNDksIDEwMCwgMjU0LCAxOCwgNTksIDEsIDIyNCwgNDgsIDExNCwgNjgsIDU5LCAxLCAKLSAgICAyMjQsIDQ4LCAxMTksIDY4LCA1OSwgMSwgMjI0LCA0OCwgMjQ0LCAyNTQsIDc3LCA1OSwgMSwgMjI0LCA0OCwgMjM1LCAxOTEsIAotICAgIDI0NCwgMjU0LCA3NywgNTksIDEsIDExNSwgMjM1LCAxOTEsIDI0NCwgMjU0LCA3NywgNTksIDEsIDIxOSwgNTEsIDI0LCAKLSAgICAxMjQsIDIxNiwgMjQxLCA1OSwgMSwgMjE5LCA1MSwgMjQsIDExNSwgMjE2LCAyNDEsIDcsIDYsIDEsIDI0NSwgMTU2LCAyNTQsIAotICAgIDc4LCA3LCAzLCAxLCAyNDUsIDE1NiwgMjU0LCA3OCwgNywgNiwgMSwgMjQ1LCAxNTYsIDI1NCwgMTAzLCA3LCAzLCAxLCAKLSAgICAyNDUsIDE1NiwgMjU0LCAxMDMsIDcsIDYsIDEsIDI0MSwgMTkxLCA3LCAzLCAxLCAyNDEsIDE5MSwgNywgNiwgMSwgMjE2LCAKLSAgICA2LCA3LCAzLCAxLCAyMTYsIDYsIDcsIDYsIDEsIDIxNiwgMTg3LCA3LCAzLCAxLCAyMTYsIDE4NywgNywgNiwgMSwgMjQ5LCAKLSAgICA1MSwgNywgMywgMSwgMjQ5LCA1MSwgNywgNiwgMSwgMjQ5LCA1MiwgMiwgMjQ5LCAxNTcsIDcsIDMsIDEsIDI0OSwgNTIsIDIsIAotICAgIDI0OSwgMTU3LCA3LCAxLCAzLCA2LCAyNDQsIDIzMCwgNywgMSwgMywgNiwgMTk3LCA3LCA2LCAxLCAyNTQsIDIzMiwgNywgMywgCi0gICAgMSwgMjU0LCAyMzIsIDcsIDYsIDEsIDI1MywgMjQwLCA3LCAzLCAxLCAyNTMsIDI0MCwgNywgNiwgMSwgMjUzLCAxMDgsIDcsIAotICAgIDMsIDEsIDI1MywgMTA4LCA3LCA2LCAxLCAyNTMsIDkyLCA3LCAzLCAxLCAyNTMsIDkyLCA3LCA2LCAxLCAyNTMsIDkzLCAyLCAKLSAgICAxOTksIDEzNCwgNywgMywgMSwgMjUzLCA5MywgMiwgMTk5LCAxMzQsIDcsIDYsIDEsIDI1MywgODMsIDcsIDMsIDEsIDI1MywgCi0gICAgODMsIDcsIDYsIDEsIDIyMywgMjAyLCAyNTAsIDI1MywgMiwgMjQ3LCA3NCwgNywgMywgMSwgMjIzLCAyMDIsIDI1MCwgMjUzLCAKLSAgICAyLCAyNDcsIDc0LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCA5MCwgNywgMywgMSwgMjM1LCAyOCwgMiwgOTAsIDcsIDYsIDEsIAotICAgIDIzNSwgMjgsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAKLSAgICAyMzUsIDI4LCAyLCAyMTksIDQ1LCAyNCwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyMTksIDQ1LCAyNCwgCi0gICAgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyNTEsIDYzLCAxNTAsIDcsIDMsIDEsIDI1MSwgNjMsIDE1MCwgNywgNiwgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDEyNCwgOTAsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAxMjQsIDkwLCA3LCA2LCAxLCAxNTcsIDIsIDE4NCwgCi0gICAgMjE5LCA0NSwgMjI2LCAyNDQsIDcsIDMsIDEsIDE1NywgMiwgMTg0LCAyMTksIDQ1LCAyMjYsIDI0NCwgNywgNiwgMSwgMTU3LCAKLSAgICAyLCAyMzIsIDE3NywgNywgMywgMSwgMTU3LCAyLCAyMzIsIDE3NywgNywgNiwgMSwgMjI3LCA0OSwgNywgMywgMSwgMjI3LCAKLSAgICA0OSwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMjYsIDIzMCwgCi0gICAgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyNDQsIDIyLCA3LCAzLCAxLCAKLSAgICAyMjYsIDIzMCwgMiwgMjQ0LCAyMiwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDIxOSwgMTYxLCAyMTgsIDI3LCA3LCAzLCAxLCAKLSAgICAyMjYsIDIzMCwgMiwgMjE5LCAxNjEsIDIxOCwgMjcsIDcsIDYsIDEsIDIyNCwgMjQxLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAKLSAgICAyNDcsIDI0NiwgNywgMywgMSwgMjI0LCAyNDEsIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MSwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyMjQsIAotICAgIDExMywgMjIzLCA4OCwgNywgMywgMSwgMjI0LCAxMTMsIDIyMywgODgsIDcsIDYsIDEsIDIyMywgNDEsIDIyMywgODgsIDcsIAotICAgIDMsIDEsIDIyMywgNDEsIDIyMywgODgsIDcsIDYsIDEsIDIxNSwgODAsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjE1LCAKLSAgICA4MCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyMTQsIDkwLCA3LCAzLCAxLCAyMTQsIDkwLCA3LCA2LCAxLCAyMTQsIAotICAgIDEyNiwgMjEyLCAxNTIsIDcsIDMsIDEsIDIxNCwgMTI2LCAyMTIsIDE1MiwgNywgNiwgMSwgMjE3LCAxMDUsIDIsIDkwLCA3LCAKLSAgICAzLCAxLCAyMTcsIDEwNSwgMiwgOTAsIDcsIDYsIDEsIDIxNywgMTA1LCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgCi0gICAgNywgMywgMSwgMjE3LCAxMDUsIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMTQsIDIyMiwgNywgCi0gICAgMywgMSwgMjE0LCAyMjIsIDcsIDYsIDEsIDI0NSwgMzAsIDcsIDMsIDEsIDI0NSwgMzAsIDcsIDYsIDEsIDIzNSwgMTY5LCA3LCAKLSAgICAzLCAxLCAyMzUsIDE2OSwgNywgNiwgMSwgMjQ5LCAxNDYsIDcsIDMsIDEsIDI0OSwgMTQ2LCA1OSwgMSwgMjE1LCAxMDQsIDcsIAotICAgIDMsIDEsIDI0NiwgMjQsIDcsIDMsIDEsIDIzMiwgMTQyLCA3LCAzLCAxLCAyMzAsIDE1MCwgNywgMywgMSwgMjI4LCA1NywgNywgCi0gICAgMywgMSwgMjIzLCA0MCwgNywgMSwgMywgNiwgMjIzLCA0MCwgNywgMywgMSwgMjE2LCA3MiwgNywgMywgMSwgMjE1LCAxNjcsIAotICAgIDcsIDYsIDEsIDIzNSwgMjEwLCAyNDksIDMsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDksIDMsIDcsIDYsIDEsIDIzNSwgMjEwLCAKLSAgICAyNDQsIDIzMCwgNywgMywgMSwgMjM1LCAyMTAsIDI0NCwgMjMwLCA3LCA2LCAxLCAyMzUsIDIxMCwgMjQzLCAxNzcsIDcsIDYsIAotICAgIDEsIDIxNiwgNTgsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgMywgMSwgMjE2LCA1OCwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCAKLSAgICA2LCAxLCAyMTYsIDU4LCAxNTAsIDcsIDMsIDEsIDIxNiwgNTgsIDE1MCwgNywgNiwgMSwgMjM1LCAyMTAsIDE0OSwgNywgMywgCi0gICAgMSwgMjM1LCAyMTAsIDE0OSwgNywgNiwgMSwgMjM1LCAyMTAsIDE5NywgNywgMywgMSwgMjM1LCAyMTAsIDE5NywgNywgNiwgCi0gICAgMSwgMjM1LCAyMTAsIDIxOCwgOTksIDcsIDMsIDEsIDIzNSwgMjEwLCAyMTgsIDk5LCA1OSwgMSwgMTE1LCAyNDksIDIyNCwgCi0gICAgMjU0LCAxNzQsIDU5LCAxLCAyNDksIDE2NCwgNTksIDEsIDIyMCwgMTc1LCAyNDUsIDYxLCA1MiwgNywgNiwgMSwgMjIyLCAKLSAgICAxNzAsIDcsIDMsIDEsIDIyMiwgMTcwLCA3LCA2LCAxLCAyMTYsIDU4LCAyNDIsIDQxLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgMjIzLCAyMDcsIDI0MSwgMzgsIDI0LCAyNTEsIDIxOCwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjQ3LCAyNDYsIDcsIDMsIDEsIAotICAgIDIzMCwgOTgsIDIsIDI0NywgMjQ2LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyNDMsIAotICAgIDE3OCwgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDMsIDEsIDIzNSwgCi0gICAgMjgsIDIsIDIyNywgMTEyLCA5MCwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMzAsIDk4LCAKLSAgICAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMjcsIDExMiwgOTAsIDcsIDMsIDEsIDIyNCwgMTEzLCAKLSAgICAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMjMsIDQsIDIsIAotICAgIDIyNywgMTEyLCA5MCwgNywgMSwgMywgNiwgMjE2LCA1OCwgMTgzLCA3LCAyNDUsIDY2LCAxLCAyMjMsIDIwMiwgMjQ0LCAKLSAgICAyMzAsIDcsIDI0NSwgNjYsIDEsIDIyMywgMjAyLCAyMjYsIDIyOSwgNywgMjQ1LCA2NiwgMSwgMjM1LCAxOTEsIDE4MywgNywgCi0gICAgMjQ1LCA2NiwgMSwgMjQwLCAxNDYsIDIzMiwgMTgyLCA3LCAyNDUsIDY2LCAxLCAyNTMsIDE5MywgMTgzLCAyMTgsIDE3NSwgCi0gICAgMjMwLCAzMiwgMSwgNjEsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCA3MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDUsIDI0NiwgMywgCi0gICAgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDY5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgNzQsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAKLSAgICA3NSwgMjE4LCAxNzUsIDIzMCwgMzIsIDUsIDI0MSwgMjM2LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjM0LCAzNywgMjE4LCAKLSAgICAxNzUsIDIzMCwgMzIsIDEsIDIzNCwgMTEzLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQyLCAxNTAsIDIxOCwgMTc1LCAyMzAsIAotICAgIDMyLCAxLCAyNDIsIDIwMCwgMjE4LCAxNzUsIDIzMCwgMzIsIDUsIDI1MywgMjQyLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgCi0gICAgMjQ5LCAxNzUsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNTAsIDIzLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjM1LCA3MSwgCi0gICAgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNSwgMTExLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjE2LCA5NSwgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDEsIDIxNiwgMTAwLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQ4LCA1NiwgMjE4LCAxNzUsIDIzMCwgMzIsIAotICAgIDEsIDI0OCwgNjUsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAxMDgsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMTcsIDEwOSwgCi0gICAgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0NywgOTksIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDcsIDIxNSwgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDEsIDIyOCwgMTg1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjI1LCAxNTAsIDIxOCwgMTc1LCAyMzAsIDMyLCAKLSAgICAxLCAyMjUsIDI1MywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI1MSwgMTI4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjUxLCAKLSAgICAxODgsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMzAsIDIzMSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIyMywgMTEyLCAyMTgsIAotICAgIDE3NSwgMjMwLCAzMiwgMSwgMjMyLCAyMDgsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMjMsIDczLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMSwgMjE5LCAyNDIsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDEsIDU0LCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIAotICAgIDYxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIDcyLCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIDY5LCAyMTgsIDE3NSwgCi0gICAgMjMwLCAzMiwgMzAsIDUsIDc0LCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIDIyNywgNDksIDIxOCwgMTc1LCAyMzAsIDMyLCAKLSAgICAyMjUsIDE0NiwgMjMxLCAyMjEsIDIxOCwgMTc1LCAyMzAsIDMyLCAyMjUsIDE0NiwgMjMxLCAyMjAsIDIxOCwgMTc1LCAyMzAsIAotICAgIDMyLCAyMjUsIDE0NiwgMjMxLCAyMTksIDIxOCwgMTc1LCAyMzAsIDMyLCAyMjUsIDE0NiwgMjMxLCAyMTgsIDIyOCwgMTY3LCAKLSAgICAyMzUsIDIzNywgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjQzLCAyMjgsIDEyMiwgCi0gICAgMjQyLCA5LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAyMjgsIDE2NywgMjM1LCAyMzcsIAotICAgIDI0MywgMjI4LCAxMjIsIDIyMCwgNDUsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjQzLCAyMjgsIDEyMiwgMjQ1LCAxNDUsIDIyOCwgCi0gICAgMTY3LCAyMzUsIDIzNywgMjQzLCAyMjgsIDEzMywgMjIwLCA0NCwgMjI4LCAxNjcsIDIzNSwgMjM3LCAyMjQsIDE2NywgNzcsIAotICAgIDIyOCwgMTY3LCAyMzUsIDIzNywgMjI1LCAxNzIsIDc3LCAyMjgsIDE2NywgMjM1LCAyMzcsIDIyMywgMjksIDc3LCAyMjgsIAotICAgIDE2NywgMjM1LCAyMzcsIDIyNCwgMTY4LCA3NywgMjI2LCAyMCwgMSwgMTgxLCAyMjYsIDIwLCAxLCAyMzQsIDEzOCwgMjI2LCAKLSAgICAyMCwgMSwgMjQzLCAxMTAsIDIyNiwgMjAsIDEsIDIyOSwgMTU5LCAyMjYsIDIwLCAxLCAyNTAsIDIxOSwgMjI2LCAyMCwgMSwgCi0gICAgMjUwLCA5MiwgMjI2LCAyMCwgMSwgMjM1LCAxMzksIDIyNiwgMjAsIDEsIDIyOCwgMjMsIDIyNiwgMjAsIDEsIDIxOCwgNTIsIAotICAgIDIyNiwgMjAsIDEsIDIxNywgMTYxLCAyMjYsIDIwLCAxLCAyNDgsIDE2NCwgMjI2LCAyMCwgMSwgMjA1LCAyMjYsIDIwLCAxLCAKLSAgICAxOTMsIDIyNiwgMjAsIDEsIDIyNiwgMjMsIDIyNiwgMjAsIDEsIDI1MiwgMTA3LCAyMjYsIDIwLCAxLCAxODgsIDIyNiwgMjAsIAotICAgIDEsIDIxNiwgMTQxLCAyMjYsIDIwLCAxLCAyMTYsIDEzMywgMjI2LCAyMCwgMSwgMjQ1LCAyNDksIDIyNiwgMjAsIDEsIDIxNCwgCi0gICAgNDksIDIyNiwgMjAsIDEsIDIxMiwgNzUsIDIyNiwgMjAsIDEsIDIxMiwgMTA5LCAyMjYsIDIwLCAxLCAzLCA2MSwgMjI2LCAKLSAgICAyMCwgMSwgMTg2LCAyMjYsIDIwLCAxLCAyMDMsIDIyNiwgMjAsIDEsIDIzMywgMTU3LCAyMjYsIDIwLCAxLCAyMjEsIDI0LCAKLSAgICAyMjYsIDIwLCAxLCAyMjIsIDIwMiwgMjI2LCAyMCwgMSwgMTU5LCAyMjYsIDIwLCAxLCA2MSwgMjI2LCAyMCwgMSwgNzIsIAotICAgIDIyNiwgMjAsIDEsIDY5LCAyMjYsIDIwLCAxLCA3NCwgMjI2LCAyMCwgMSwgNzUsIDIyNiwgMjAsIDEsIDIyNCwgMjMyLCAKLSAgICAyMjYsIDIwLCAxLCAyMTMsIDE1MywgMjI2LCAyMCwgMSwgMjQ0LCAxNjQsIDIyNiwgMjAsIDEsIDI0MywgNSwgMjI2LCAyMCwgCi0gICAgMSwgMjQ1LCAxNjUsIDIyNiwgMjAsIDIxOSwgMTgsIDEsIDIxNCwgNDksIDIyNiwgMjAsIDIxOSwgMTgsIDEsIDE4NiwgMjI2LCAKLSAgICAyMCwgMSwgMjE2LCAxMTUsIDIyNiwgMjAsIDEsIDIxNiwgMTA1LCAyMjYsIDIwLCAxLCAyNDgsIDg2LCAyMjYsIDIwLCAxLCAKLSAgICAyMjgsIDE5OCwgMjI2LCAyMCwgMSwgMjU0LCA1MCwgMTg2LCAyMjYsIDIwLCAxLCAyMTQsIDExNSwgMjIxLCAyNCwgMjI2LCAKLSAgICAyMCwgMSwgMjE0LCAxMTYsIDE1OSwgMjI2LCAyMCwgMSwgMjUzLCAxMzgsIDI0NCwgMTY0LCAyMjYsIDIwLCAyMTksIDE4LCAKLSAgICAxLCAyMDMsIDIyNiwgMjAsIDIxOCwgMjI1LCAxLCAyMDMsIDIyNiwgMjAsIDEsIDI1MCwgMTg3LCAyMjYsIDIwLCAyMjAsIAotICAgIDgxLCAyNDEsIDIyMCwgNzcsIDIyNiwgMjAsIDUxLCAyNDEsIDIyMCwgNzcsIDIyNiwgMjAsIDE1MiwgMjIxLCAxNywgMjI2LCAKLSAgICAyMCwgMTUyLCA1MSwgMjIxLCAxNywgMTY5LCA1LCAyNTMsIDI0MiwgMTY5LCA1LCAyMTQsIDEyOCwgMTY5LCAxLCA2MSwgCi0gICAgMTY5LCAxLCAyNTQsIDIzMiwgMTY5LCAxLCA3MiwgMTY5LCAxLCAyMzYsIDI4LCAxNjksIDEsIDY5LCAxNjksIDEsIDIxNSwgCi0gICAgOTIsIDE2OSwgMSwgMTYxLCAxNDksIDE2OSwgMSwgMTYxLCAyMjMsIDgyLCAxNjksIDEsIDE2MSwgMTUwLCAxNjksIDEsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE2OSwgMSwgNzQsIDE2OSwgMSwgMjQ1LCAxNjUsIDE2OSwgMSwgMjU0LCAxMDgsIDE2OSwgMSwgCi0gICAgNzUsIDE2OSwgMSwgMjI3LCA0OSwgMTY5LCAxLCAyNTMsIDEwOCwgMTY5LCAxLCAxODEsIDE2OSwgMSwgMjM0LCAxMzgsIAotICAgIDE2OSwgMSwgMjQzLCAxMTAsIDE2OSwgMSwgMjQyLCAyMjUsIDE2OSwgMSwgMjI5LCAxNTksIDE2OSwgMSwgMjUwLCAyMTksIAotICAgIDE2OSwgMSwgMjUwLCA5MiwgMTY5LCAxLCAyMzUsIDEzOSwgMTY5LCAxLCAyMzUsIDExNSwgMTY5LCAxLCAyMjgsIDIzLCAKLSAgICAxNjksIDEsIDIxNiwgMTE1LCAxNjksIDEsIDIxNiwgMTA1LCAxNjksIDEsIDI0OCwgODYsIDE2OSwgMSwgMjQ4LCA3MCwgCi0gICAgMTY5LCAxLCAyMjgsIDE5OCwgMTY5LCAxLCAyMTgsIDUyLCAxNjksIDEsIDIxNywgMTYxLCAxNjksIDEsIDI0OCwgMTY0LCAKLSAgICAxNjksIDEsIDI0NywgMjMyLCAxNjksIDEsIDIwNSwgMTY5LCAxLCAxOTMsIDE2OSwgMSwgMjI2LCAyMywgMTY5LCAxLCAyNTIsIAotICAgIDEwNywgMTY5LCAxLCAyNTEsIDE5NSwgMTY5LCAxLCAxODgsIDE2OSwgMSwgMTg2LCAxNjksIDEsIDIwMywgMTY5LCAxLCAKLSAgICAyMzMsIDE1NywgMTY5LCAxLCAyMTUsIDEsIDE2OSwgMSwgMjIxLCAyNCwgMTY5LCAxLCAyMTksIDE1NywgMTY5LCAxLCAyMjIsIAotICAgIDIwMiwgMTY5LCAxLCAxNTksIDE2OSwgMSwgMjMyLCAyMTMsIDE2OSwgMjQ5LCAxMzMsIDUsIDI0MiwgMjUsIDE2OSwgMzAsIAotICAgIDUsIDI1NCwgMjMyLCAxNjksIDMwLCA1LCA3MiwgMTY5LCAzMCwgNSwgMjM2LCAyOCwgMTY5LCAzMCwgNSwgNjksIDE2OSwgCi0gICAgMzAsIDUsIDIxNSwgOTIsIDE2OSwgMzAsIDUsIDE2MSwgMTQ5LCAxNjksIDMwLCA1LCAxNjEsIDIyMywgODIsIDE2OSwgMzAsIAotICAgIDUsIDE2MSwgMTUwLCAxNjksIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxNjksIDMwLCA1LCA3NCwgMTY5LCAzMCwgNSwgMjQ1LCAKLSAgICAxNjUsIDE2OSwgMzAsIDUsIDI1NCwgMTA4LCAxNjksIDMwLCA1LCA3NSwgMTY5LCAzMCwgNSwgMjI3LCA0OSwgMTY5LCAzMCwgCi0gICAgNSwgMjUzLCAxMDgsIDE2OSwgNSwgMjE0LCAxMzMsIDE2OSwgMjQ4LCAxMjMsIDE2OSwgNTEsIDI0OCwgMTIzLCAxNjksIDIxLCAKLSAgICAyMTIsIDc5LCAxNjksIDIxLCAxMTYsIDE2OSwgMjEsIDEwOSwgMTY5LCAyMSwgMTY2LCAxNjksIDIxLCAxNjMsIDE2OSwgMjEsIAotICAgIDE4MCwgMTY5LCAyMSwgMTg5LCAxNjksIDIxLCAxOTgsIDE2OSwgMjEsIDE5NSwgMTY5LCAyMSwgMjAwLCAzNywgODIsIDIxLCAKLSAgICAyMTIsIDc5LCAzNywgODIsIDIxLCAxMTYsIDM3LCA4MiwgMjEsIDEwOSwgMzcsIDgyLCAyMSwgMTY2LCAzNywgODIsIDIxLCAKLSAgICAxNjMsIDM3LCA4MiwgMjEsIDE4MCwgMzcsIDgyLCAyMSwgMTg5LCAzNywgODIsIDIxLCAxOTgsIDM3LCA4MiwgMjEsIDE5NSwgCi0gICAgMzcsIDgyLCAyMSwgMjAwLCAzNywgODIsIDEsIDYxLCAzNywgODIsIDEsIDY5LCAzNywgODIsIDEsIDE4MSwgMzcsIDgyLCAxLCAKLSAgICAyMDUsIDM3LCA4MiwgMSwgMTkzLCAzNywgODIsIDEsIDIwMywgMzcsIDgyLCAxLCAyMTQsIDE1NCwgMzcsIDgyLCA1LCAyNTMsIAotICAgIDkxLCA4MiwgNSwgMjE5LCAyMDUsIDI1MCwgMTg3LCA4MiwgNSwgMjUwLCAxODgsIDIxNCwgMTMzLCA4MiwgNSwgNTEsIDI1MCwgCi0gICAgMTg4LCAyMTQsIDEzMywgODIsIDUsIDI1MCwgMTg4LCAxMDksIDgyLCA1LCAyNTAsIDE4OCwgMTY2LCA4MiwgNSwgMjUwLCAKLSAgICAxODgsIDI1MywgOTEsIDgyLCA1LCAyMjUsIDExLCA4MiwgMjQzLCA3NiwgMjQ0LCA3MiwgODIsIDI1MCwgMTcwLCA4MiwgCi0gICAgMjQxLCAyMTQsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMjEyLCA3OSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxMTYsIAotICAgIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTA5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE2NiwgMjM0LCAxOTQsIDIzMywgCi0gICAgMTQsIDIxLCAxNjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTgwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE4OSwgMjM0LCAKLSAgICAxOTQsIDIzMywgMTQsIDIxLCAxOTgsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTk1LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIAotICAgIDIwMCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDE4MSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIzNCwgMTM4LCAyMzQsIDE5NCwgCi0gICAgMjMzLCAxNCwgMSwgMjQzLCAxMTAsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjksIDE1OSwgMjM0LCAxOTQsIDIzMywgMTQsIAotICAgIDEsIDIyMiwgMjAyLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjIxLCAyNCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxMiwgCi0gICAgMTA5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI4LCAyMywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxOCwgNTIsIDIzNCwgCi0gICAgMTk0LCAyMzMsIDE0LCAxLCAyNDAsIDIxNCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIwNSwgMjM0LCAxOTQsIDIzMywgMTQsIAotICAgIDEsIDE5MywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNiwgMjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAxODgsIDIzNCwgCi0gICAgMTk0LCAyMzMsIDE0LCAxLCAyNDgsIDE2NCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDI1MiwgMTA3LCAyMzQsIDE5NCwgMjMzLCAKLSAgICAxNCwgMSwgMjAzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMTg2LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjMzLCAxNTcsIAotICAgIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTQsIDQ5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE3LCAxNjEsIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAxLCAxNTksIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTUsIDEsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyNTAsIAotICAgIDIxOSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDYxLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI3LCA5OSwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDEsIDcyLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI3LCA0OSwgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCAKLSAgICAyMTUsIDE4MywgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCA3NCwgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCA2OSwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDMwLCAyNDUsIDE2NSwgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCA3NSwgMjM0LCAxOTQsIDIzMywgMTQsIDE2MCwgCi0gICAgMjI1LCAxNjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxNjAsIDI1MCwgMjAwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMTYwLCAyNTAsIAotICAgIDIwMSwgMjI1LCAxNjMsIDIzNCwgMTk0LCAyMzMsIDE0LCA1LCAyNDksIDIwLCAyMzQsIDE5NCwgMjMzLCAxNCwgNSwgMjIwLCAKLSAgICAxMjUsIDIyMywgMjQzLCAxLCAxODEsIDIyMywgMjQzLCAxLCAyNDMsIDExMCwgMjIzLCAyNDMsIDEsIDIyOSwgMTU5LCAyMjMsIAotICAgIDI0MywgMSwgMjE4LCA1MiwgMjIzLCAyNDMsIDEsIDI0OCwgMTY0LCAyMjMsIDI0MywgMSwgMjA1LCAyMjMsIDI0MywgMSwgCi0gICAgMTkzLCAyMjMsIDI0MywgMSwgMjUyLCAxMDcsIDIyMywgMjQzLCAxLCAxODgsIDIyMywgMjQzLCAxLCAyNTAsIDIxOSwgMjIzLCAKLSAgICAyNDMsIDEsIDIzNSwgMTM5LCAyMjMsIDI0MywgMSwgMjI4LCAyMywgMjIzLCAyNDMsIDEsIDIyMiwgMjAyLCAyMjMsIDI0MywgCi0gICAgMSwgMjAzLCAyMjMsIDI0MywgMSwgMjMzLCAxNTcsIDIyMywgMjQzLCAxLCAxODYsIDIyMywgMjQzLCAxLCAyMTQsIDQ5LCAKLSAgICAyMjMsIDI0MywgMSwgMTU5LCAyMjMsIDI0MywgMSwgMjMxLCAxODcsIDIyMywgMjQzLCAxLCAyMjksIDE0MSwgMjIzLCAyNDMsIAotICAgIDEsIDIyOSwgMjI4LCAyMjMsIDI0MywgMSwgMjI3LCAyNTQsIDIyMywgMjQzLCAxLCA2MSwgMjIzLCAyNDMsIDMwLCA1LCA3MiwgCi0gICAgMjIzLCAyNDMsIDMwLCA1LCA2OSwgMjIzLCAyNDMsIDMwLCA1LCA3NCwgMjIzLCAyNDMsIDMwLCA1LCAyNTQsIDEwOCwgMjIzLCAKLSAgICAyNDMsIDMwLCA1LCA3NSwgMjIzLCAyNDMsIDMwLCA1LCAyNTMsIDEwOCwgMjIzLCAyNDMsIDMwLCA1LCAyNDUsIDIyLCAyMjMsIAotICAgIDI0MywgMzAsIDUsIDI0NSwgMTg5LCAyMjMsIDI0MywgMjQ5LCAxMzMsIDUsIDIyOSwgMTYxLCAyMjMsIDI0MywgMjQ5LCAKLSAgICAxMzMsIDUsIDIwNCwgMjIzLCAyNDMsIDI0OSwgMTMzLCA1LCAxNDksIDIyMywgMjQzLCAyNDksIDEzMywgNSwgMjQyLCA0MSwgCi0gICAgMjIzLCAyNDMsIDIxNCwgMTMzLCAyMjMsIDI0MywgMjIyLCA5MiwgNzcsIDIzLCA5NywgMjE3LCA1MSwgMjMsIDk3LCAyMTcsIAotICAgIDUwLCAyMywgOTcsIDIxNywgNDgsIDIzLCA5NywgMjE3LCA1MywgMjMsIDk3LCAyMjMsIDE3NCwgMjMsIDk3LCAyMjMsIDE1OCwgCi0gICAgMjMsIDk3LCAyMjMsIDE1MywgMjMsIDk3LCAyMjMsIDE1NSwgMjMsIDk3LCAyMjMsIDE3MSwgMjMsIDk3LCAyMjMsIDE2NCwgCi0gICAgMjMsIDk3LCAyMjMsIDE1NywgMjMsIDk3LCAyMjMsIDE3NiwgMjMsIDk3LCAyMjMsIDE1OSwgMjMsIDk3LCAyMjMsIDE3OCwgCi0gICAgMjMsIDk3LCAyMjMsIDE3NSwgMjMsIDk3LCAyMzEsIDI2LCAyMywgOTcsIDIzMSwgMTcsIDIzLCA5NywgMjMxLCAyMCwgMjMsIAotICAgIDk3LCAyMjUsIDIxMiwgMjMsIDk3LCAyMjUsIDIyMywgMjMsIDk3LCAyMjUsIDIyNCwgMjMsIDk3LCAyMTksIDE0MiwgMjMsIAotICAgIDk3LCAyMzYsIDQxLCAyMywgOTcsIDIzNiwgNDgsIDIzLCA5NywgMjE5LCAxNTMsIDIzLCA5NywgMjE5LCAxNDAsIDIzLCA5NywgCi0gICAgMjI2LCA2LCAyMywgOTcsIDI0MSwgMTUzLCAyMywgOTcsIDIxOSwgMTM3LCAxNDQsIDUsIDIyNiwgMTU1LCAxNDQsIDUsIAotICAgIDI1MCwgMTIxLCAxNDQsIDUsIDIzMywgOTAsIDE0NCwgNSwgMjEzLCAyMjgsIDE0NCwgMSwgNjEsIDE0NCwgMSwgMjQwLCAKLSAgICAxNDYsIDIzNCwgMTk3LCAxNDQsIDEsIDcyLCAxNDQsIDEsIDIzNiwgMjgsIDE0NCwgMSwgNjksIDE0NCwgMSwgMjI2LCAyMTQsIAotICAgIDI1MCwgOTcsIDE0NCwgMSwgMjI5LCAxNjAsIDIzMywgNTIsIDE0NCwgMSwgMjI5LCAxNjAsIDIzMywgNTMsIDIyNCwgMzQsIAotICAgIDE0NCwgMSwgNzQsIDE0NCwgMSwgMjU0LCAxMDgsIDE0NCwgMSwgNzUsIDE0NCwgMSwgMTgxLCAxNDQsIDEsIDIzNSwgMTcsIAotICAgIDIyMiwgMTQ0LCAxNDQsIDEsIDIzNSwgMTcsIDIzMCwgMTM2LCAxNDQsIDEsIDI0MywgMTEwLCAxNDQsIDEsIDI0MywgMTExLCAKLSAgICAyMzAsIDEzNiwgMTQ0LCAxLCAyMjksIDE1OSwgMTQ0LCAxLCAyNTAsIDIxOSwgMTQ0LCAxLCAyNTAsIDIyMCwgMjMwLCAxMzYsIAotICAgIDE0NCwgMSwgMjM1LCAxMzksIDE0NCwgMSwgMjI4LCAyNCwgMjMwLCAxMzYsIDE0NCwgMSwgMjM1LCAxNDAsIDIzMiwgMTIsIAotICAgIDE0NCwgMSwgMjI4LCAyMywgMTQ0LCAxLCAyMTYsIDExNSwgMTQ0LCAxLCAyMTYsIDExNiwgMjMyLCAxMiwgMTQ0LCAxLCAKLSAgICAyNDgsIDg2LCAxNDQsIDEsIDI0OCwgODcsIDIzMiwgMTIsIDE0NCwgMSwgMjMwLCA0NiwgMjMwLCAxMzYsIDE0NCwgMSwgCi0gICAgMjE4LCA1MiwgMTQ0LCAxLCAyMTgsIDUzLCAyMzAsIDEzNiwgMTQ0LCAxLCAyNDgsIDE2NCwgMTQ0LCAxLCAyNDgsIDE2NSwgCi0gICAgMjMyLCAxMiwgMTQ0LCAxLCAyMDUsIDE0NCwgMSwgMTkzLCAxNDQsIDEsIDIyNiwgMjE0LCAyMzAsIDEzNiwgMTQ0LCAxLCAKLSAgICAyNTIsIDEwNywgMTQ0LCAxLCAyNTIsIDEwOCwgMjMwLCAxMzYsIDE0NCwgMSwgMTg4LCAxNDQsIDEsIDE4NiwgMTQ0LCAxLCAKLSAgICAyMDMsIDE0NCwgMSwgMjI0LCA3NywgMjU0LCAxMTUsIDE0NCwgMSwgMjMzLCAxNTcsIDE0NCwgMSwgMjE0LCA0OSwgMTQ0LCAKLSAgICAxLCAyMjIsIDIwMywgMjMwLCAxMzYsIDE0NCwgMSwgMjIyLCAyMDMsIDIzMiwgMTIsIDE0NCwgMSwgMjIyLCAyMDIsIDE0NCwgCi0gICAgMSwgMTU5LCAxNDQsIDUsIDI1MCwgMTIyLCAyMTcsIDIwMywgMTQ0LCAzMCwgNSwgMjE3LCAyNTQsIDE0NCwgMzAsIDUsIAotICAgIDIxNiwgMjQ2LCAxNDQsIDMwLCA1LCAyMTMsIDE3OCwgMTQ0LCAzMCwgNSwgMjEzLCAxNzksIDIzMSwgMTMzLCAxNDQsIDMwLCAKLSAgICA1LCAyMTgsIDI0OCwgMTQ0LCAzMCwgNSwgMjE4LCAyNDksIDIzMSwgMTIxLCAxNDQsIDMwLCA1LCAyMTgsIDE2LCAxNDQsIAotICAgIDMwLCA1LCAyNDcsIDE0NiwgMjMwLCAxMzUsIDE0NCwgMzAsIDUsIDIyNiwgNTksIDE0NCwgMjQ5LCAxMzMsIDUsIDIzNCwgCi0gICAgMTY0LCAxNDQsIDI0OSwgMTMzLCA1LCAyMjYsIDcxLCAxNDQsIDI0OSwgMTMzLCA1LCAyNTAsIDIwNywgMTQ0LCAyMjYsIAotICAgIDE2NywgMTQ0LCA0MiwgMjIzLCAyMjEsIDE0NCwgNDYsIDIyMywgMjIxLCAxNDQsIDIyNiwgMjAzLCAyNTQsIDI2LCAxNDQsIAotICAgIDIyNiwgMjAzLCAyMzIsIDI5LCAxNDQsIDIyNiwgMjAzLCAyMzIsIDE0NiwgMTQ0LCAyMjYsIDIwMywgMjEzLCAyMjMsIDE0NCwgCi0gICAgMjI2LCAyMDMsIDIyNiwgMTY4LCAxNDQsIDIyNiwgMjAzLCAyMzIsIDIzNCwgMTQ0LCAyMjYsIDIwMywgMjMyLCAxNDAsIAotICAgIDE0NCwgMjI2LCAyMDMsIDI1NCwgMTU0LCAxNDQsIDIyNiwgMjAzLCAyNTQsIDE1NSwgMjU0LCAxNTQsIDE0NCwgMjI2LCAKLSAgICAyMDMsIDIyNSwgMTgzLCAxNDQsIDIxNiwgNTgsIDIyNiwgMjAzLCAyMjUsIDE4MywgMTQ0LCAyMjYsIDE2NCwgMTQ0LCAyMSwgCi0gICAgMjEyLCA3OSwgMTQ0LCAyMSwgMTE2LCAxNDQsIDIxLCAxMDksIDE0NCwgMjEsIDE2NiwgMTQ0LCAyMSwgMTYzLCAxNDQsIDIxLCAKLSAgICAxODAsIDE0NCwgMjEsIDE4OSwgMTQ0LCAyMSwgMTk4LCAxNDQsIDIxLCAxOTUsIDE0NCwgMjEsIDIwMCwgMTQ0LCAyMjYsIAotICAgIDIwMywgMjE3LCAyMiwgMjE2LCA3MCwgMTQ0LCAyMjYsIDIwMywgMjM1LCAxNjUsIDE2MiwgMSwgNjEsIDE2MiwgMSwgNzIsIAotICAgIDE2MiwgMSwgNjksIDE2MiwgMSwgNzQsIDE2MiwgMSwgMjU0LCAxMDgsIDE2MiwgMSwgNzUsIDE2MiwgMSwgMTgxLCAxNjIsIAotICAgIDEsIDIzNCwgMTM4LCAxNjIsIDEsIDI0MywgMTEwLCAxNjIsIDEsIDI0MiwgMjI1LCAxNjIsIDEsIDIyOSwgNzUsIDE2MiwgMSwgCi0gICAgMjI5LCAxNTksIDE2MiwgMSwgMjUwLCA5MiwgMTYyLCAxLCAyNTAsIDQ5LCAxNjIsIDEsIDIzNSwgMTM5LCAxNjIsIDEsIAotICAgIDIzNSwgMTE1LCAxNjIsIDEsIDIyOSwgNjYsIDE2MiwgMSwgMjI5LCA2OCwgMTYyLCAxLCAyMjksIDY3LCAxNjIsIDEsIDIxOCwgCi0gICAgNTIsIDE2MiwgMSwgMjE3LCAxNjEsIDE2MiwgMSwgMjQ4LCAxNjQsIDE2MiwgMSwgMjQ3LCAyMzIsIDE2MiwgMSwgMjI4LCAKLSAgICA2MiwgMTYyLCAxLCAyMDUsIDE2MiwgMSwgMjQ4LCA4NiwgMTYyLCAxLCAxOTMsIDE2MiwgMSwgMjI1LCAxMDAsIDE2MiwgMSwgCi0gICAgMjI2LCAyMywgMTYyLCAxLCAyNTIsIDEwNywgMTYyLCAxLCAyNTEsIDE5NSwgMTYyLCAxLCAyMzAsIDE2NSwgMTYyLCAxLCAKLSAgICAxODgsIDE2MiwgMSwgMjUyLCAzMSwgMTYyLCAxLCAxODYsIDE2MiwgMSwgMjAzLCAxNjIsIDEsIDIzMywgMTU3LCAxNjIsIDEsIAotICAgIDIxNSwgMSwgMTYyLCAxLCAyMTksIDE1NywgMTYyLCAxLCAyMjIsIDIwMiwgMTYyLCAxLCAxNTksIDE2MiwgMzAsIDUsIDI1NCwgCi0gICAgMjMyLCAxNjIsIDMwLCA1LCA3MiwgMTYyLCAzMCwgNSwgMjM2LCAyOCwgMTYyLCAzMCwgNSwgMjQ1LCAxNTIsIDE2MiwgMzAsIAotICAgIDUsIDY5LCAxNjIsIDMwLCA1LCAyMjcsIDk5LCAxNjIsIDMwLCA1LCA3NSwgMTYyLCAzMCwgNSwgMjU0LCAxMDgsIDE2MiwgCi0gICAgMzAsIDUsIDI1MywgMTA4LCAxNjIsIDMwLCA1LCAyMTUsIDE4MywgMTYyLCAyNDksIDEzMywgNSwgMTg2LCAxNjIsIDI0OSwgCi0gICAgMTMzLCA1LCAyMDMsIDE2MiwgMjQ5LCAxMzMsIDUsIDIzMywgMTU3LCAxNjIsIDI0OSwgMTMzLCA1LCAyMTQsIDQ5LCAxNjIsIAotICAgIDEsIDQwLCAyMzUsIDI3LCAxNjIsIDEsIDQwLCAyNDMsIDE3NywgMTYyLCAxLCA0MCwgMjI5LCAxNjEsIDE2MiwgMjQ5LCAKLSAgICAxMzMsIDUsIDQwLCAyMjksIDE2MSwgMTYyLCAxLCA0MCwgMjUwLCA5MywgMTYyLCAxLCA0MCwgMjE4LCA5OSwgMTYyLCAxLCAKLSAgICA0MCwgMjA0LCAxNjIsIDEsIDQwLCAyMjYsIDIyOSwgMTYyLCAxLCA0MCwgMjEzLCAxMDUsIDE2MiwgMSwgNDAsIDE0OSwgCi0gICAgMTYyLCAxLCA0MCwgMTUwLCAxNjIsIDEsIDQwLCAyMTksIDE1OCwgMTYyLCAyNDksIDEzMywgNSwgNDAsIDE4MywgMTYyLCAKLSAgICAyNDksIDEzMywgNSwgNDAsIDI0MiwgNDEsIDE2MiwgMjEsIDIxMiwgNzksIDE2MiwgMjEsIDExNiwgMTYyLCAyMSwgMTA5LCAKLSAgICAxNjIsIDIxLCAxNjYsIDE2MiwgMjEsIDE2MywgMTYyLCAyMSwgMTgwLCAxNjIsIDIxLCAxODksIDE2MiwgMjEsIDE5OCwgCi0gICAgMTYyLCAyMSwgMTk1LCAxNjIsIDIxLCAyMDAsIDE2MiwgMjI1LCAyNywgMjE5LCAxODMsIDE2MiwgMjI1LCAyNywgMjQ4LCAKLSAgICAxMjMsIDE2MiwgMjI1LCAyNywgNTEsIDI0OCwgMTIzLCAxNjIsIDIyNSwgMjcsIDIxNiwgMTY5LCAyNDgsIDEyMywgNjQsIDEsIAotICAgIDIzNCwgMTMyLCAyNDMsIDExMCwgNjQsIDEsIDIzNCwgMTMyLCAyNTAsIDIxOSwgNjQsIDEsIDIzNCwgMTMyLCAyNTAsIDkyLCAKLSAgICA2NCwgMSwgMjM0LCAxMzIsIDIzNSwgMTM5LCA2NCwgMSwgMjM0LCAxMzIsIDIzNSwgMTE1LCA2NCwgMSwgMjM0LCAxMzIsIAotICAgIDIyOCwgMjMsIDY0LCAxLCAyMzQsIDEzMiwgMjE2LCAxMTUsIDY0LCAxLCAyMzQsIDEzMiwgMjE2LCAxMDUsIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjQ4LCA4NiwgNjQsIDEsIDIzNCwgMTMyLCAyNDgsIDcwLCA2NCwgMSwgMjM0LCAxMzIsIDI0NywgMjMyLCAKLSAgICA2NCwgMSwgMjM0LCAxMzIsIDIwNSwgNjQsIDEsIDIzNCwgMTMyLCAyMjIsIDIwMiwgNjQsIDEsIDIzNCwgMTMyLCAxNTksIAotICAgIDY0LCAxLCAyMzQsIDEzMiwgMjQxLCAxNzQsIDY0LCAxLCAyMzQsIDEzMiwgMjQ0LCAxNjQsIDY0LCA1OSwgMSwgMjM0LCAKLSAgICAxMzIsIDIyNCwgMiwgNjQsIDEsIDIzNCwgMTMyLCAyMTMsIDE1MywgNjQsIDEsIDIzNCwgMTMyLCAyMTIsIDEwOSwgNjQsIDEsIAotICAgIDIzNCwgMTMyLCAyMDMsIDY0LCAyMzIsIDE5OCwgMjM0LCAxMzIsIDIyNywgMTE3LCA2NCwgMjMyLCAxOTgsIDIzNCwgMTMyLCAKLSAgICAyMjQsIDE4OCwgNjQsIDIzMiwgMTk4LCAyMzQsIDEzMiwgMjQxLCAxMDcsIDY0LCAxNiwgMjU0LCA5OCwgMjQ0LCAyNTMsIAotICAgIDY0LCAxNiwgMjU0LCA5OCwgMTE2LCA2NCwgMTYsIDI1NCwgOTgsIDEwOSwgNjQsIDEsIDI1NCwgOTgsIDIwMywgNjQsIDUsIAotICAgIDIyNiwgMTUxLCAyMzQsIDIxOCwgMjE2LCAyNDEsIDM4LCAxOTAsIDEsIDExNSwgMjM0LCAzNywgMzgsIDE5MCwgMSwgMTI0LCAKLSAgICAyMzQsIDM3LCAzOCwgMTkwLCAxLCAxMTUsIDIzNCwgMTEzLCAzOCwgMTkwLCAxLCAxMjQsIDIzNCwgMTEzLCAzOCwgMTkwLCAKLSAgICAxLCAxMTUsIDIzNCwgMTIwLCAzOCwgMTkwLCAxLCAxMjQsIDIzNCwgMTIwLCAzOCwgMTkwLCAxLCAxMTUsIDI0MiwgMTUwLCAKLSAgICAzOCwgMTkwLCAxLCAxMjQsIDI0MiwgMTUwLCAzOCwgMTkwLCAxLCAxMTUsIDIyOSwgOTAsIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjI5LCA5MCwgMzgsIDE5MCwgMSwgMTE1LCAyNDksIDE3NSwgMzgsIDE5MCwgMSwgMTI0LCAyNDksIDE3NSwgMzgsIDE5MCwgCi0gICAgMSwgMTE1LCAyNTAsIDIzLCAzOCwgMTkwLCAxLCAxMjQsIDI1MCwgMjMsIDM4LCAxOTAsIDEsIDExNSwgMjE5LCAyNDIsIDM4LCAKLSAgICAxOTAsIDEsIDEyNCwgMjE5LCAyNDIsIDM4LCAxOTAsIDEsIDExNSwgMjI3LCAyNTMsIDM4LCAxOTAsIDEsIDEyNCwgMjI3LCAKLSAgICAyNTMsIDM4LCAxOTAsIDEsIDExNSwgMjQ3LCA5OSwgMzgsIDE5MCwgMSwgMTI0LCAyNDcsIDk5LCAzOCwgMTkwLCAxLCAxMTUsIAotICAgIDEwOCwgMzgsIDE5MCwgMSwgMTI0LCAxMDgsIDM4LCAxOTAsIDEsIDExNSwgMjE3LCAxMDksIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjE3LCAxMDksIDM4LCAxOTAsIDEsIDExNSwgMjI4LCAxODUsIDM4LCAxOTAsIDEsIDEyNCwgMjI4LCAxODUsIDM4LCAxOTAsIAotICAgIDEsIDExNSwgMjUxLCAxMjgsIDM4LCAxOTAsIDEsIDEyNCwgMjUxLCAxMjgsIDM4LCAxOTAsIDEsIDExNSwgMjI1LCAxNTAsIAotICAgIDM4LCAxOTAsIDEsIDEyNCwgMjI1LCAxNTAsIDM4LCAxOTAsIDEsIDExNSwgMjI1LCAyNTMsIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjI1LCAyNTMsIDM4LCAxOTAsIDEsIDExNSwgMjQ0LCAxMiwgMzgsIDE5MCwgMSwgMTI0LCAyNDQsIDEyLCAzOCwgMTkwLCAxLCAKLSAgICAxMTUsIDIzMCwgMjMxLCAzOCwgMTkwLCAxLCAxMjQsIDIzMCwgMjMxLCAzOCwgMTkwLCAxLCAxMTUsIDIxMiwgMjM1LCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDIxMiwgMjM1LCAzOCwgMTkwLCAxLCAxMTUsIDIyMywgMTEyLCAzOCwgMTkwLCAxLCAxMjQsIDIyMywgCi0gICAgMTEyLCAzOCwgMTkwLCAxLCAxMTUsIDIzMiwgMjA4LCAzOCwgMTkwLCAxLCAxMjQsIDIzMiwgMjA4LCAzOCwgMTkwLCAxLCAKLSAgICAxMTUsIDIxNCwgMTE5LCAzOCwgMTkwLCAxLCAxMjQsIDIxNCwgMTE5LCAzOCwgMTkwLCAxLCAxMTUsIDI0MSwgNTQsIDM4LCAKLSAgICAxOTAsIDEsIDEyNCwgMjQxLCA1NCwgMzgsIDE5MCwgMSwgMTE1LCA3NSwgMzgsIDE5MCwgMSwgMTI0LCA3NSwgMzgsIDE5MCwgCi0gICAgMjMyLCA5LCAyMzQsIDIzNSwgMzgsIDE5MCwgMzAsIDI1NCwgMjMyLCAzOCwgMTkwLCAzMCwgNzIsIDM4LCAxOTAsIDMwLCAKLSAgICAyMTUsIDE4MywgMzgsIDE5MCwgMzAsIDY5LCAzOCwgMTkwLCAzMCwgNzQsIDM4LCAxOTAsIDMwLCA3NSwgMzgsIDE5MCwgCi0gICAgMjMyLCA5LCAyMzQsIDExNSwgMzgsIDE5MCwgMzAsIDI0MCwgMTExLCAzOCwgMTkwLCAzMCwgMjE1LCAxODIsIDM4LCAxOTAsIAotICAgIDMwLCAyMTUsIDE5NiwgMzgsIDE5MCwgMzAsIDI1MywgMTA2LCAzOCwgMTkwLCAzMCwgMjUzLCA4MywgMzgsIDE5MCwgMzAsIAotICAgIDI1NCwgMzIsIDM4LCAxOTAsIDMwLCAyNTQsIDQ1LCAzOCwgMTkwLCAxNjAsIDIzMiwgOSwgMjQ1LCAxMzcsIDM4LCAxOTAsIAotICAgIDE2MCwgMjMyLCA5LCAyMjgsIDYxLCAzOCwgMTkwLCAxNjAsIDIzMiwgOSwgMjE3LCAxMDksIDM4LCAxOTAsIDE2MCwgMjMyLCAKLSAgICA5LCAyMTksIDIyOCwgMzgsIDE5MCwgMTYsIDIzNCwgMjIsIDM4LCAxOTAsIDE2LCAyMjgsIDYxLCAzOCwgMTkwLCAxNiwgCi0gICAgMjIyLCAxNjgsIDM4LCAxOTAsIDE2LCAyNDEsIDU1LCAyNDEsIDUwLCAzOCwgMTkwLCAxNiwgMjM0LCAzMSwgMjM0LCAzMCwgCi0gICAgMjgsIDQsIDIxNiwgOTgsIDI4LCA0LCAyMTYsIDEwMSwgMjgsIDQsIDIxNiwgMTA0LCAyOCwgNCwgMjE2LCAxMDIsIDI4LCA0LCAKLSAgICAyMTYsIDEwMywgMjgsIDQsIDIxNiwgMTAwLCAyOCwgNCwgMjQ4LCA2NCwgMjgsIDQsIDI0OCwgNjYsIDI4LCA0LCAyNDgsIAotICAgIDY5LCAyOCwgNCwgMjQ4LCA2NywgMjgsIDQsIDI0OCwgNjgsIDI4LCA0LCAyNDgsIDY1LCAyOCwgNCwgMjQ1LCAyMzksIDI4LCAKLSAgICA0LCAyNDUsIDI0MiwgMjgsIDQsIDI0NSwgMjQ4LCAyOCwgNCwgMjQ1LCAyNDYsIDI4LCA0LCAyNDUsIDI0NywgMjgsIDQsIAotICAgIDI0NSwgMjQwLCAyOCwgNCwgMjUwLCAxMzgsIDI4LCA0LCAyNTAsIDEzMiwgMjgsIDQsIDI1MCwgMTM0LCAyOCwgNCwgMjUwLCAKLSAgICAxMzcsIDI4LCA0LCAyNTAsIDEzNSwgMjgsIDQsIDI1MCwgMTM2LCAyOCwgNCwgMjUwLCAxMzMsIDI4LCA0LCAyNTIsIDMxLCAKLSAgICAyOCwgNCwgMjUyLCAxMCwgMjgsIDQsIDI1MiwgMjIsIDI4LCA0LCAyNTIsIDMwLCAyOCwgNCwgMjUyLCAyNSwgMjgsIDQsIAotICAgIDI1MiwgMjYsIDI4LCA0LCAyNTIsIDE0LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzNCwgMjgsIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMSwgMjIyLCAxNjgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjMzLCAxMzMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgCi0gICAgMjMwLCAyNDEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMTkzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIwNSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyNTAsIDM5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNywgNDQsIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMSwgMjM0LCAxMDksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI5LCA4MCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAKLSAgICAyMTcsIDEwMywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTQsIDQ0LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxMywgNTgsIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQwLCAyMDYsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjE1LCAxNjAsIDIzMSwgCi0gICAgMTQwLCAyMzEsIDE5NCwgMSwgNzIsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI2LCAxOCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAKLSAgICAxLCAyNTMsIDExOCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDIsIDE0MywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzUsIAotICAgIDExNCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMjQsIDU3LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI1MiwgMTA3LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzNSwgMTAzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0NywgMTcxLCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDI0MiwgMTk3LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0NywgMjEzLCAyMzEsIDE0MCwgCi0gICAgMjMxLCAxOTQsIDEsIDI1MSwgMTk0LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzNCwgMjksIDIzMiwgMTgxLCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDIzMywgMTM0LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzAsIDI0MiwgCi0gICAgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI2LCAyMTQsIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIAotICAgIDEsIDIzMCwgNDYsIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNywgNDUsIDIzMiwgMTgxLCAyMzEsIDE0MCwgCi0gICAgMjMxLCAxOTQsIDEsIDIyOSwgODEsIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0MCwgMTQ2LCAyMzIsIAotICAgIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjI3LCA2MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjM1LCAKLSAgICAyNDksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDI1NCwgMzEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIxMywgCi0gICAgMjksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIxOSwgMjE5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTUsIAotICAgIDE1NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjUwLCA2MCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjI4LCAKLSAgICA0NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAyNTAsIDYxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIzMiwgMTQzLCAyMzUsIDE0OCwgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAyNTMsIDIxNiwgMjM1LCAxNDgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDIxMiwgNzksIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDExNiwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTA5LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDIxLCAxNjYsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE2MywgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTgwLCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxODksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE5OCwgMjMxLCAxNDAsIDIzMSwgCi0gICAgMTk0LCAyMSwgMTk1LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAyMDAsIDIzLCAxMzUsIDIyNywgMTk3LCAyMywgMTM1LCAKLSAgICAyMjcsIDIwMiwgMjMsIDEzNSwgMjEyLCAyMzQsIDIzLCAxMzUsIDIxMiwgMjMzLCAyMywgMTM1LCAyMTIsIDIzMiwgMjMsIAotICAgIDEzNSwgMjE1LCAyNDYsIDIzLCAxMzUsIDIxNSwgMjQ5LCAyMywgMTM1LCAyMTIsIDIwMSwgMjMsIDEzNSwgMjEyLCAxOTcsIAotICAgIDIzLCAxMzUsIDI0NSwgMjEsIDIzLCAxMzUsIDI0NSwgMTksIDIzLCAxMzUsIDI0NSwgMjAsIDIzLCAxMzUsIDI0NSwgMTcsIAotICAgIDIzLCAxMzUsIDI0MCwgMTM2LCAyMywgMTM1LCAyNDAsIDEzNSwgMjMsIDEzNSwgMjQwLCAxMzMsIDIzLCAxMzUsIDI0MCwgCi0gICAgMTM0LCAyMywgMTM1LCAyNDAsIDEzOSwgMjMsIDEzNSwgMjQwLCAxMzIsIDIzLCAxMzUsIDI0MCwgMTMxLCAyMywgMTM1LCAKLSAgICAyNDAsIDE0MSwgMjMsIDEzNSwgMjUzLCAyMDMsIDIzLCAxMzUsIDI1MywgMjAyLCAyMywgODksIDIyOSwgNTAsIDIzLCA4OSwgCi0gICAgMjI5LCA1NiwgMjMsIDg5LCAyMTksIDEzOSwgMjMsIDg5LCAyMTksIDEzOCwgMjMsIDg5LCAyMTcsIDUwLCAyMywgODksIAotICAgIDIxNywgNDgsIDIzLCA4OSwgMjE3LCA0NywgMjMsIDg5LCAyMTcsIDUzLCAyMywgODksIDIxNywgNTQsIDIzLCA4OSwgMjE3LCAKLSAgICA0NiwgMjMsIDg5LCAyMjMsIDE1OCwgMjMsIDg5LCAyMjMsIDE3MywgMjMsIDg5LCAyMTksIDE0NSwgMjMsIDg5LCAyMjMsIAotICAgIDE3MCwgMjMsIDg5LCAyMjMsIDE2MCwgMjMsIDg5LCAyMjMsIDE2MiwgMjMsIDg5LCAyMjMsIDE0OSwgMjMsIDg5LCAyMjMsIAotICAgIDE1MCwgMjMsIDg5LCAyMzQsIDIyMywgMjMsIDg5LCAyMzEsIDI1LCAyMywgODksIDIzMSwgMTksIDIzLCA4OSwgMjE5LCAKLSAgICAxNDksIDIzLCA4OSwgMjMxLCAyMiwgMjMsIDg5LCAyMzEsIDI4LCAyMywgODksIDIyNSwgMjA4LCAyMywgODksIDIyNSwgCi0gICAgMjE3LCAyMywgODksIDIyNSwgMjIxLCAyMywgODksIDIxOSwgMTQ3LCAyMywgODksIDIyNSwgMjExLCAyMywgODksIDIyNSwgCi0gICAgMjI1LCAyMywgODksIDIyNSwgMjI2LCAyMywgODksIDIyMCwgNjgsIDIzLCA4OSwgMjIwLCA3MSwgMjMsIDg5LCAyMTksIAotICAgIDE0MywgMjMsIDg5LCAyMTksIDE0MSwgMjMsIDg5LCAyMjAsIDY2LCAyMywgODksIDIyMCwgNzQsIDIzLCA4OSwgMjIwLCA3NSwgCi0gICAgMjMsIDg5LCAyMjAsIDYwLCAyMywgODksIDIyMCwgNzMsIDIzLCA4OSwgMjI2LCAxNTgsIDIzLCA4OSwgMjI2LCAxNTksIDIzLCAKLSAgICA4OSwgMjEzLCAxNSwgMjMsIDg5LCAyMTMsIDE2LCAyMywgODksIDI0OSwgMjM3LCAyMywgODksIDI0OSwgMjM2LCAyMywgODksIAotICAgIDIxOSwgMTU0LCAyMywgODksIDIyNiwgNCwgMjMsIDg5LCAyMjYsIDMsIDksIDEzLCAyMzgsIDE3LCA5LCAxMywgMjM4LCAxNiwgCi0gICAgOSwgMTMsIDIzOCwgMTUsIDksIDEzLCAyMzgsIDE0LCA5LCAxMywgMjM4LCAxMywgOSwgMTMsIDIzOCwgMTIsIDksIDEzLCAKLSAgICAyMzgsIDExLCA5LCAxMywgMjM4LCAxMCwgOSwgMTMsIDIzOCwgOSwgOSwgMTMsIDIzOCwgOCwgOSwgMTMsIDIzOCwgNywgOSwgCi0gICAgMTMsIDIzOCwgNiwgOSwgMTMsIDIzOCwgNSwgOSwgMTMsIDIzOCwgNCwgOSwgMTMsIDIzOCwgMywgOSwgMTMsIDIzOCwgMiwgCi0gICAgOSwgMTMsIDIzOCwgMSwgOSwgMTMsIDIzOCwgMCwgOSwgMTMsIDIzNywgMjU1LCA5LCAxMywgMjM3LCAyNTQsIDksIDEzLCAKLSAgICAyMzcsIDI1MywgOSwgMTMsIDIzNywgMjUyLCA5LCAxMywgMjM3LCAyNTEsIDksIDEzLCAyMzcsIDI1MCwgOSwgMTMsIDIzNywgCi0gICAgMjQ5LCA5LCAxMywgMjM3LCAyNDgsIDksIDEzLCAyMzcsIDI0NywgOSwgMTMsIDIzNywgMjQ2LCA5LCAxMywgMjM3LCAyNDUsIAotICAgIDksIDEzLCAyMzcsIDI0NCwgOSwgMTMsIDIzNywgMjQzLCA5LCAxMywgMjM3LCAyNDIsIDksIDEzLCAyMzcsIDI0MSwgOSwgCi0gICAgMTMsIDIzNywgMjQwLCA5LCAxMywgMjM3LCAyMzksIDksIDEzLCAyMzcsIDIzOCwgOSwgMTMsIDIzNywgMjM3LCA5LCAxMywgCi0gICAgMjM3LCAyMzYsIDksIDEzLCAyMzcsIDIzNSwgOSwgMTMsIDIzNywgMjM0LCA5LCAxMywgMjM3LCAyMzMsIDksIDEzLCAyMzcsIAotICAgIDIzMiwgOSwgMTMsIDIzNywgMjMxLCA5LCAxMywgMjM3LCAyMzAsIDksIDEzLCAyMzcsIDIyOSwgOSwgMTMsIDIzNywgMjI4LCAKLSAgICA5LCAxMywgMjM3LCAyMjcsIDksIDEzLCAyMzcsIDIyNiwgOSwgMTMsIDIzNywgMjI1LCA5LCAxMywgMjM3LCAyMjQsIDksIAotICAgIDEzLCAyMzcsIDIyMywgOSwgMTMsIDIzNywgMjIyLCA5LCAxMywgMjM3LCAyMjEsIDksIDEzLCAyMzcsIDIyMCwgOSwgMTMsIAotICAgIDIzNywgMjE5LCA5LCAxMywgMjM3LCAyMTgsIDksIDEzLCAyMzcsIDIxNywgOSwgMTMsIDIzNywgMjE2LCA5LCAxMywgMjM3LCAKLSAgICAyMTUsIDksIDEzLCAyMzcsIDIxNCwgOSwgMTMsIDIzNywgMjEzLCA5LCAxMywgMjM3LCAyMTIsIDksIDEzLCAyMzcsIDIxMSwgCi0gICAgOSwgMTMsIDIzNywgMjEwLCA5LCAxMywgMjM3LCAyMDksIDksIDEzLCAyMzcsIDIwOCwgOSwgMTMsIDIzNywgMjA3LCA5LCAKLSAgICAxMywgMjM3LCAyMDYsIDksIDEzLCAyMzcsIDIwNSwgOSwgMTMsIDIzNywgMjA0LCA5LCAxMywgMjM3LCAyMDMsIDksIDEzLCAKLSAgICAyMzcsIDIwMiwgOSwgMTMsIDIzNywgMjAxLCA5LCAxMywgMjM3LCAyMDAsIDksIDEzLCAyMzcsIDE5OSwgOSwgMTMsIDIzNywgCi0gICAgMTk4LCA5LCAxMywgMjM3LCAxOTcsIDksIDEzLCAyMzcsIDE5NiwgOSwgMTMsIDIzNywgMTk1LCA5LCAxMywgMjM3LCAxOTQsIAotICAgIDksIDEzLCAyMzcsIDE5MywgOSwgMTMsIDIzNywgMTkyLCA5LCAxMywgMjM3LCAxOTEsIDksIDEzLCAyMzcsIDE5MCwgOSwgCi0gICAgMTMsIDIzNywgMTg5LCA5LCAxMywgMjM3LCAxODgsIDksIDEzLCAyMzcsIDE4NywgOSwgMTMsIDIzNywgMTg2LCA5LCAxMywgCi0gICAgMjM3LCAxODUsIDksIDEzLCAyMzcsIDE4NCwgOSwgMTMsIDIzNywgMTgzLCA5LCAxMywgMjM3LCAxODIsIDksIDEzLCAyMzcsIAotICAgIDE4MSwgOSwgMTMsIDIzNywgMTgwLCA5LCAxMywgMjM3LCAxNzksIDksIDEzLCAyMzcsIDE3OCwgOSwgMTMsIDIzNywgMTc3LCAKLSAgICA5LCAxMywgMjM3LCAxNzYsIDksIDEzLCAyMzcsIDE3NSwgOSwgMTMsIDIzNywgMTc0LCA5LCAxMywgMjM3LCAxNzMsIDksIAotICAgIDEzLCAyMzcsIDE3MiwgOSwgMTMsIDIzNywgMTcxLCA5LCAxMywgMjM3LCAxNzAsIDksIDEzLCAyMzcsIDE2OSwgOSwgMTMsIAotICAgIDIzNywgMTY4LCA5LCAxMywgMjM3LCAxNjcsIDksIDEzLCAyMzcsIDE2NiwgOSwgMTMsIDIzNywgMTY1LCA5LCAxMywgMjM3LCAKLSAgICAxNjQsIDksIDEzLCAyMzcsIDE2MywgOSwgMTMsIDIzNywgMTYyLCA5LCAxMywgMjM3LCAxNjEsIDksIDEzLCAyMzcsIDE2MCwgCi0gICAgOSwgMTMsIDIzNywgMTU5LCA5LCAxMywgMjM3LCAxNTgsIDksIDEzLCAyMzcsIDE1NywgOSwgMTMsIDIzNywgMTU2LCA5LCAKLSAgICAxMywgMjM3LCAxNTUsIDksIDEzLCAyMzcsIDE1NCwgOSwgMTMsIDIzNywgMTUzLCA5LCAxMywgMjM3LCAxNTIsIDksIDEzLCAKLSAgICAyMzcsIDE1MSwgOSwgMTMsIDIzNywgMTUwLCA5LCAxMywgMjM3LCAxNDksIDksIDEzLCAyMzcsIDE0OCwgOSwgMTMsIDIzNywgCi0gICAgMTQ3LCA5LCAxMywgMjM3LCAxNDYsIDksIDEzLCAyMzcsIDE0NSwgOSwgMTMsIDIzNywgMTQ0LCA5LCAxMywgMjM3LCAxNDMsIAotICAgIDksIDEzLCAyMzcsIDE0MiwgOSwgMTMsIDIzNywgMTQxLCA5LCAxMywgMjM3LCAxNDAsIDksIDEzLCAyMzcsIDEzOSwgOSwgCi0gICAgMTMsIDIzNywgMTM4LCA5LCAxMywgMjM3LCAxMzcsIDksIDEzLCAyMzcsIDEzNiwgOSwgMTMsIDIzNywgMTM1LCA5LCAxMywgCi0gICAgMjM3LCAxMzQsIDksIDEzLCAyMzcsIDEzMywgOSwgMTMsIDIzNywgMTMyLCA5LCAxMywgMjM3LCAxMzEsIDksIDEzLCAyMzcsIAotICAgIDEzMCwgOSwgMTMsIDIzNywgMTI5LCA5LCAxMywgMjM3LCAxMjgsIDksIDEzLCAyMzcsIDEyNywgOSwgMTMsIDIzNywgMTI2LCAKLSAgICA5LCAxMywgMjM3LCAxMjUsIDksIDEzLCAyMzcsIDEyNCwgOSwgMTMsIDIzNywgMTIzLCA5LCAxMywgMjM3LCAxMjIsIDksIAotICAgIDEzLCAyMzcsIDEyMSwgOSwgMTMsIDIzNywgMTIwLCA5LCAxMywgMjM3LCAxMTksIDksIDEzLCAyMzcsIDExOCwgOSwgMTMsIAotICAgIDIzNywgMTE3LCA5LCAxMywgMjM3LCAxMTYsIDksIDEzLCAyMzcsIDExNSwgOSwgMTMsIDIzNywgMTE0LCA5LCAxMywgMjM3LCAKLSAgICAxMTMsIDksIDEzLCAyMzcsIDExMiwgOSwgMTMsIDIzNywgMTExLCA5LCAxMywgMjM3LCAxMTAsIDksIDEzLCAyMzcsIDEwOSwgCi0gICAgOSwgMTMsIDIzNywgMTA4LCA5LCAxMywgMjM3LCAxMDcsIDksIDEzLCAyMzcsIDEwNiwgOSwgMTMsIDIzNywgMTA1LCA5LCAKLSAgICAxMywgMjM3LCAxMDQsIDksIDEzLCAyMzcsIDEwMywgOSwgMTMsIDIzNywgMTAyLCA5LCAxMywgMjM3LCAxMDEsIDksIDEzLCAKLSAgICAyMzcsIDEwMCwgOSwgMTMsIDIzNywgOTksIDksIDEzLCAyMzcsIDk4LCA5LCAxMywgMjM3LCA5NywgOSwgMTMsIDIzNywgOTYsIAotICAgIDksIDEzLCAyMzcsIDk1LCA5LCAxMywgMjM3LCA5NCwgOSwgMTMsIDIzNywgOTMsIDksIDEzLCAyMzcsIDkyLCA5LCAxMywgCi0gICAgMjM3LCA5MSwgOSwgMTMsIDIzNywgOTAsIDksIDEzLCAyMzcsIDg5LCA5LCAxMywgMjM3LCA4OCwgOSwgMTMsIDIzNywgODcsIAotICAgIDksIDEzLCAyMzcsIDg2LCA5LCAxMywgMjM3LCA4NSwgOSwgMTMsIDIzNywgODQsIDksIDEzLCAyMzcsIDgzLCA5LCAxMywgCi0gICAgMjM3LCA4MiwgOSwgMTMsIDIzNywgODEsIDksIDEzLCAyMzcsIDgwLCA5LCAxMywgMjM3LCA3OSwgOSwgMTMsIDIzNywgNzgsIAotICAgIDksIDEzLCAyMzcsIDc3LCA5LCAxMywgMjM3LCA3NiwgOSwgMTMsIDIzNywgNzUsIDksIDEzLCAyMzcsIDc0LCA5LCAxMywgCi0gICAgMjM3LCA3MywgOSwgMTMsIDIzNywgNzIsIDksIDEzLCAyMzcsIDcxLCA5LCAxMywgMjM3LCA3MCwgOSwgMTMsIDIzNywgNjksIAotICAgIDksIDEzLCAyMzcsIDY4LCA5LCAxMywgMjM3LCA2NywgOSwgMTMsIDIzNywgNjYsIDksIDEzLCAyMzcsIDY1LCA5LCAxMywgCi0gICAgMjM3LCA2NCwgOSwgMTMsIDIzNywgNjMsIDksIDEzLCAyMzcsIDYyLCA5LCAxMywgMjM3LCA2MSwgOSwgMTMsIDIzNywgNjAsIAotICAgIDksIDEzLCAyMzcsIDU5LCA5LCAxMywgMjM3LCA1OCwgOSwgMTMsIDIzNywgNTcsIDksIDEzLCAyMzcsIDU2LCA5LCAxMywgCi0gICAgMjM3LCA1NSwgOSwgMTMsIDIzNywgNTQsIDksIDEzLCAyMzcsIDUzLCA5LCAxMywgMjM3LCA1MiwgOSwgMTMsIDIzNywgNTEsIAotICAgIDksIDEzLCAyMzcsIDUwLCA5LCAxMywgMjM3LCA0OSwgOSwgMTMsIDIzNywgNDgsIDksIDEzLCAyMzcsIDQ3LCA5LCAxMywgCi0gICAgMjM3LCA0NiwgOSwgMTMsIDIzNywgNDUsIDksIDEzLCAyMzcsIDQ0LCA5LCAxMywgMjM3LCA0MywgOSwgMTMsIDIzNywgNDIsIAotICAgIDksIDEzLCAyMzcsIDQxLCA5LCAxMywgMjM3LCA0MCwgOSwgMTMsIDIzNywgMzksIDksIDEzLCAyMzcsIDM4LCA5LCAxMywgCi0gICAgMjM3LCAzNywgOSwgMTMsIDIzNywgMzYsIDksIDEzLCAyMzcsIDM1LCA5LCAxMywgMjM3LCAzNCwgOSwgMTMsIDIzNywgMzMsIAotICAgIDksIDEzLCAyMzcsIDMyLCA5LCAxMywgMjM3LCAzMSwgOSwgMTMsIDIzNywgMzAsIDksIDEzLCAyMzcsIDI5LCA5LCAxMywgCi0gICAgMjM3LCAyOCwgOSwgMTMsIDIzNywgMjcsIDksIDEzLCAyMzcsIDI2LCA5LCAxMywgMjM3LCAyNSwgOSwgMTMsIDIzNywgMjQsIAotICAgIDksIDEzLCAyMzcsIDIzLCA5LCAxMywgMjM3LCAyMiwgOSwgMTMsIDIzNywgMjEsIDksIDEzLCAyMzcsIDIwLCA5LCAxMywgCi0gICAgMjM3LCAxOSwgOSwgMTMsIDIzNywgMTgsIDksIDEzLCAyMzcsIDE3LCA5LCAxMywgMjM3LCAxNiwgOSwgMTMsIDIzNywgMTUsIAotICAgIDksIDEzLCAyMzcsIDE0LCA5LCAxMywgMjM3LCAxMywgOSwgMTMsIDIzNywgMTIsIDksIDEzLCAyMzcsIDExLCA5LCAxMywgCi0gICAgMjM3LCAxMCwgOSwgMTMsIDIzNywgOSwgOSwgMTMsIDIzNywgOCwgOSwgMTMsIDIzNywgNywgOSwgMTMsIDIzNywgNiwgOSwgCi0gICAgMTMsIDIzNywgNSwgOSwgMTMsIDIzNywgNCwgOSwgMTMsIDIzNywgMywgOSwgMTMsIDIzNywgMiwgOSwgMTMsIDIzNywgMSwgCi0gICAgOSwgMTMsIDIzNywgMCwgOSwgMTMsIDIzNiwgMjU1LCA5LCAxMywgMjM2LCAyNTQsIDksIDEzLCAyMzYsIDI1MywgOSwgMTMsIAotICAgIDIzNiwgMjUyLCA5LCAxMywgMjM2LCAyNTEsIDksIDEzLCAyMzYsIDI1MCwgOSwgMTMsIDIzNiwgMjQ5LCA5LCAxMywgMjM2LCAKLSAgICAyNDgsIDksIDEzLCAyMzYsIDI0NywgOSwgMTMsIDIzNiwgMjQ2LCA5LCAxMywgMjM2LCAyNDUsIDksIDEzLCAyMzYsIDI0NCwgCi0gICAgOSwgMTMsIDIzNiwgMjQzLCA5LCAxMywgMjM2LCAyNDIsIDksIDEzLCAyMzYsIDI0MSwgOSwgMTMsIDIzNiwgMjQwLCA5LCAKLSAgICAxMywgMjM2LCAyMzksIDksIDEzLCAyMzYsIDIzOCwgOSwgMTMsIDIzNiwgMjM3LCA5LCAxMywgMjM2LCAyMzYsIDksIDEzLCAKLSAgICAyMzYsIDIzNSwgOSwgMTMsIDIzNiwgMjM0LCA5LCAxMywgMjM2LCAyMzMsIDksIDEzLCAyMzYsIDIzMiwgOSwgMTMsIDIzNiwgCi0gICAgMjMxLCA5LCAxMywgMjM2LCAyMzAsIDksIDEzLCAyMzYsIDIyOSwgOSwgMTMsIDIzNiwgMjI4LCA5LCAxMywgMjM2LCAyMjcsIAotICAgIDksIDEzLCAyMzYsIDIyNiwgOSwgMTMsIDIzNiwgMjI1LCA5LCAxMywgMjM2LCAyMjQsIDksIDEzLCAyMzYsIDIyMywgOSwgCi0gICAgMTMsIDIzNiwgMjIyLCA5LCAxMywgMjM2LCAyMjEsIDksIDEzLCAyMzYsIDIyMCwgOSwgMTMsIDIzNiwgMjE5LCA5LCAxMywgCi0gICAgMjM2LCAyMTgsIDksIDEzLCAyMzYsIDIxNywgOSwgMTMsIDIzNiwgMjE2LCA5LCAxMywgMjM2LCAyMTUsIDksIDEzLCAyMzYsIAotICAgIDIxNCwgOSwgMTMsIDIzNiwgMjEzLCA5LCAxMywgMjM2LCAyMTIsIDksIDEzLCAyMzYsIDIxMSwgOSwgMTMsIDIzNiwgMjEwLCAKLSAgICA5LCAxMywgMjM2LCAyMDksIDksIDEzLCAyMzYsIDIwOCwgOSwgMTMsIDIzNiwgMjA3LCA5LCAxMywgMjM2LCAyMDYsIDksIAotICAgIDEzLCAyMzYsIDIwNSwgOSwgMTMsIDIzNiwgMjA0LCA5LCAxMywgMjM2LCAyMDMsIDksIDEzLCAyMzYsIDIwMiwgOSwgMTMsIAotICAgIDIzNiwgMjAxLCA5LCAxMywgMjM2LCAyMDAsIDksIDEzLCAyMzYsIDE5OSwgOSwgMTMsIDIzNiwgMTk4LCA5LCAxMywgMjM2LCAKLSAgICAxOTcsIDksIDEzLCAyMzYsIDE5NiwgOSwgMTMsIDIzNiwgMTk1LCA5LCAxMywgMjM2LCAxOTQsIDksIDEzLCAyMzYsIDE5MywgCi0gICAgOSwgMTMsIDIzNiwgMTkyLCA5LCAxMywgMjM2LCAxOTEsIDksIDEzLCAyMzYsIDE5MCwgOSwgMTMsIDIzNiwgMTg5LCA5LCAKLSAgICAxMywgMjM2LCAxODgsIDksIDEzLCAyMzYsIDE4NywgOSwgMTMsIDIzNiwgMTg2LCA5LCAxMywgMjM2LCAxODUsIDksIDEzLCAKLSAgICAyMzYsIDE4NCwgOSwgMTMsIDIzNiwgMTgzLCA5LCAxMywgMjM2LCAxODIsIDksIDEzLCAyMzYsIDE4MSwgOSwgMTMsIDIzNiwgCi0gICAgMTgwLCA5LCAxMywgMjM2LCAxNzksIDksIDEzLCAyMzYsIDE3OCwgOSwgMTMsIDIzNiwgMTc3LCA5LCAxMywgMjM2LCAxNzYsIAotICAgIDksIDEzLCAyMzYsIDE3NSwgOSwgMTMsIDIzNiwgMTc0LCA5LCAxMywgMjM2LCAxNzMsIDksIDEzLCAyMzYsIDE3MiwgOSwgCi0gICAgMTMsIDIzNiwgMTcxLCA5LCAxMywgMjM2LCAxNzAsIDksIDEzLCAyMzYsIDE2OSwgOSwgMTMsIDIzNiwgMTY4LCA5LCAxMywgCi0gICAgMjM2LCAxNjcsIDksIDEzLCAyMzYsIDE2NiwgOSwgMTMsIDIzNiwgMTY1LCA5LCAxMywgMjM2LCAxNjQsIDksIDEzLCAyMzYsIAotICAgIDE2MywgOSwgMTMsIDIzNiwgMTYyLCA5LCAxMywgMjM2LCAxNjEsIDksIDEzLCAyMzYsIDE2MCwgOSwgMTMsIDIzNiwgMTU5LCAKLSAgICA5LCAxMywgMjM2LCAxNTgsIDksIDEzLCAyMzYsIDE1NywgOSwgMTMsIDIzNiwgMTU2LCA5LCAxMywgMjM2LCAxNTUsIDksIAotICAgIDEzLCAyMzYsIDE1NCwgOSwgMTMsIDIzNiwgMTUzLCA5LCAxMywgMjM2LCAxNTIsIDksIDEzLCAyMzYsIDE1MSwgOSwgMTMsIAotICAgIDIzNiwgMTUwLCA5LCAxMywgMjM2LCAxNDksIDksIDEzLCAyMzYsIDE0OCwgOSwgMTMsIDIzNiwgMTQ3LCA5LCAxMywgMjM2LCAKLSAgICAxNDYsIDksIDEzLCAyMzYsIDE0NSwgOSwgMTMsIDIzNiwgMTQ0LCA5LCAxMywgMjM2LCAxNDMsIDksIDEzLCAyMzYsIDE0MiwgCi0gICAgOSwgMTMsIDIzNiwgMTQxLCA5LCAxMywgMjM2LCAxNDAsIDksIDEzLCAyMzYsIDEzOSwgOSwgMTMsIDIzNiwgMTM4LCA5LCAKLSAgICAxMywgMjM2LCAxMzcsIDksIDEzLCAyMzYsIDEzNiwgOSwgMTMsIDIzNiwgMTM1LCA5LCAxMywgMjM2LCAxMzQsIDksIDEzLCAKLSAgICAyMzYsIDEzMywgOSwgMTMsIDIzNiwgMTMyLCA5LCAxMywgMjM2LCAxMzEsIDksIDEzLCAyMzYsIDEzMCwgOSwgMTMsIDIzNiwgCi0gICAgMTI5LCA5LCAxMywgMjM2LCAxMjgsIDksIDEzLCAyMzYsIDEyNywgOSwgMTMsIDIzNiwgMTI2LCA5LCAxMywgMjM2LCAxMjUsIAotICAgIDksIDEzLCAyMzYsIDEyNCwgOSwgMTMsIDIzNiwgMTIzLCA5LCAxMywgMjM2LCAxMjIsIDksIDEzLCAyMzYsIDEyMSwgOSwgCi0gICAgMTMsIDIzNiwgMTIwLCA5LCAxMywgMjM2LCAxMTksIDksIDEzLCAyMzYsIDExOCwgOSwgMTMsIDIzNiwgMTE3LCA5LCAxMywgCi0gICAgMjM2LCAxMTYsIDksIDEzLCAyMzYsIDExNSwgOSwgMTMsIDIzNiwgMTE0LCA5LCAxMywgMjM2LCAxMTMsIDksIDEzLCAyMzYsIAotICAgIDExMiwgOSwgMTMsIDIzNiwgMTExLCA5LCAxMywgMjM2LCAxMTAsIDksIDEzLCAyMzYsIDEwOSwgOSwgMTMsIDIzNiwgMTA4LCAKLSAgICA5LCAxMywgMjM2LCAxMDcsIDksIDEzLCAyMzYsIDEwNiwgOSwgMTMsIDIzNiwgMTA1LCA5LCAxMywgMjM2LCAxMDQsIDksIAotICAgIDEzLCAyMzYsIDEwMywgOSwgMTMsIDIzNiwgMTAyLCA5LCAxMywgMjM2LCAxMDEsIDksIDEzLCAyMzYsIDEwMCwgOSwgMTMsIAotICAgIDIzNiwgOTksIDksIDEzLCAyMzYsIDk4LCA5LCAxMywgMjM2LCA5NywgOSwgMTMsIDIzNiwgOTYsIDksIDEzLCAyMzYsIDk1LCAKLSAgICA5LCAxMywgMjM2LCA5NCwgOSwgMTMsIDIzNiwgOTMsIDksIDEzLCAyMzYsIDkyLCA5LCAxMywgMjM2LCA5MSwgOSwgMTMsIAotICAgIDIzNiwgOTAsIDksIDEzLCAyMzYsIDg5LCA5LCAxMywgMjM2LCA4OCwgOSwgMTMsIDIzNiwgODcsIDksIDEzLCAyMzYsIDg2LCAKLSAgICA5LCAxMywgMjM2LCA4NSwgOSwgMTMsIDIzNiwgODQsIDksIDEzLCAyMzYsIDgzLCA5LCAxMywgMjM2LCA4MiwgOSwgMTMsIAotICAgIDIzNiwgODEsIDksIDEzLCAyMzYsIDgwLCA5LCAxMywgMjM2LCA3OSwgOSwgMTMsIDIzNiwgNzgsIDksIDEzLCAyMzYsIDc3LCAKLSAgICA5LCAxMywgMjM2LCA3NiwgOSwgMTMsIDIzNiwgNzUsIDksIDEzLCAyMzYsIDc0LCA5LCAxMywgMjM2LCA3MywgOSwgMTMsIAotICAgIDIzNiwgNzIsIDksIDEzLCAyMzYsIDcxLCA5LCAxMywgMjM2LCA3MCwgOSwgMTMsIDIzNiwgNjksIDksIDEzLCAyMzYsIDY4LCAKLSAgICA5LCAxMywgMjM2LCA2NywgOSwgMTMsIDIzNiwgNjYsIDksIDEzLCAyMzYsIDY1LCA5LCAxMywgMjM2LCA2NCwgOSwgMTMsIAotICAgIDIzNiwgNjMsIDksIDEzLCAyMzYsIDYyLCA5LCAxMywgMjM2LCA2MSwgOSwgMTMsIDIzNiwgNjAsIDcsIDMsIDI2LCAyNDQsIAotICAgIDk0LCA3LCAzLCAyNiwgMjQ0LCA5MCwgNywgMywgMjYsIDI0NCwgNDUsIDcsIDMsIDI2LCAyNDQsIDkzLCA3LCAzLCAyNiwgCi0gICAgMjQ0LCA5MiwgNywgMywgMjYsIDE4NCwgMjIzLCA0LCAyMTgsIDk5LCA3LCAzLCAyNiwgMjE5LCAxMDcsIDE0MSwgMywgMjYsIAotICAgIDIzMSwgMTIzLCAyMjgsIDE1MCwgMTQxLCAzLCAyNiwgMjMxLCAxMjMsIDI0NSwgMTY5LCAxNDEsIDMsIDI2LCAyMzEsIDEyMywgCi0gICAgMjM1LCAyMjQsIDE0MSwgMywgMjYsIDIxNCwgMTU3LCAyMjgsIDE1MCwgMTQxLCAzLCAyNiwgMjMxLCAxMjMsIDIxMywgMTQ4LCAKLSAgICA5MywgMSwgMjEyLCAyMjUsIDIsIDI0MSwgMTQ0LCA5MywgMjI1LCAxNDUsIDIzNSwgNTMsIDIxNCwgMjQzLCA5MywgMjYsIAotICAgIDIxMiwgMjUzLCAyMTIsIDIyNSwgMjEyLCAyMjUsIDIyNiwgMTEyLCA5MywgMSwgMjU0LCA0OCwgMjUzLCA3OCwgOTMsIDEsIAotICAgIDIxMywgMjMyLCAyNTQsIDc4LCA5MywgMSwgMjEzLCAyMzIsIDI0OCwgMTM0LCA5MywgMSwgMjEzLCAyMzIsIDI0MSwgMjIyLCAKLSAgICA5MywgMSwgMjEzLCAyMzIsIDIzNCwgMjU0LCA5MywgMSwgMjEzLCAyMzIsIDIzMywgMTE4LCA5MywgMSwgMjEzLCAyMzIsIAotICAgIDQwLCAyMzEsIDEyOSwgOTMsIDEsIDIxMywgMjMyLCAyMjMsIDIxOSwgOTMsIDEsIDIxMywgMjMyLCAyMTcsIDI0NSwgOTMsIAotICAgIDEsIDI1NCwgNDgsIDk0LCA1MiwgOTMsIDEsIDIyMCwgMjAxLCAyLCAyMjAsIDIwMSwgMjQ3LCA3NCwgOTMsIDEsIDIyMCwgCi0gICAgMjAxLCAyLCAyMjAsIDg1LCAyNDcsIDc0LCA5MywgMSwgMjIwLCAyMDEsIDIsIDI0OCwgMTUxLCAyNCwgMjIwLCAyMDEsIAotICAgIDI0NywgNzQsIDkzLCAxLCAyMjAsIDIwMSwgMiwgMjQ4LCAxNTEsIDI0LCAyMjAsIDg1LCAyNDcsIDc0LCA5MywgMSwgMTA2LCAKLSAgICAyLCAyMjYsIDExMiwgOTMsIDEsIDEwNiwgMiwgMjI0LCAyMjAsIDkzLCAxLCAxMDYsIDIsIDIzMSwgMjM0LCA5MywgMSwgCi0gICAgMjUxLCAyMDYsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjQyLCAxNzgsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjQ4LCAxMzUsIDIsIAotICAgIDI0OCwgMTUwLCA5MywgMSwgMjQxLCAyMjMsIDIsIDIzMSwgMjM0LCA5MywgMSwgMjE0LCAyMzcsIDIsIDI0OCwgMTUwLCA5MywgCi0gICAgMSwgMjEyLCA5MSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTcsIDE4NCwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTIsIDIyNSwgCi0gICAgMiwgMjQ4LCAxNTAsIDkzLCAxLCA0MCwgMjM0LCAyNTUsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjM0LCAyNTUsIDIsIDI0OCwgCi0gICAgMTUwLCA5MywgMSwgMjMzLCAxMTksIDIsIDI0OCwgMTUwLCA5MywgMSwgMjMxLCAxMzAsIDIsIDI0OCwgMTUwLCA5MywgMSwgCi0gICAgMjI4LCA1MSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjIsIDE2NSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCA0MCwgMjI2LCA5NywgCi0gICAgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjYsIDk3LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxNiwgMTM4LCAyLCAyNDgsIDE1MCwgCi0gICAgOTMsIDEsIDIyNCwgMTg1LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIyMywgMjIwLCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIyMCwgCi0gICAgMjAxLCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxNywgMjQ2LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxNCwgMjM3LCAyLCAyNDEsIAotICAgIDQ3LCA5MywgMSwgMjUxLCAyMDYsIDIsIDIyNCwgNTksIDkzLCAxLCAyMzQsIDI1NSwgMiwgMjI0LCA1OSwgOTMsIDEsIDIyNiwgCi0gICAgOTcsIDIsIDIyNCwgNTksIDkzLCAyNiwgMTA2LCAyMzMsIDExOCwgMTIsIDEsIDEwNiwgMjE0LCAzMSwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMTA2LCAyMTQsIDMxLCA0MCwgMTcsIDEyLCAxLCAyNTEsIDI0MSwgNDgsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI1MSwgMjQxLCA3MCwgMTcsIDEyLCAxLCAyNTEsIDI0MSwgMTM4LCAxNywgMTIsIDEsIDIyNiwgODEsIAotICAgIDQ4LCAxNywgMTIsIDEsIDIyNiwgODEsIDQwLCAxNywgMTIsIDEsIDIyNiwgODEsIDcwLCAxNywgMTIsIDEsIDIyNiwgODEsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyNTEsIDIyOSwgNDgsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDQwLCAxNywgMTIsIDEsIDI1MSwgCi0gICAgMjI5LCA3MCwgMTcsIDEyLCAxLCAyNTEsIDIyOSwgMTM4LCAxNywgMTIsIDEsIDIxNiwgMTA4LCA0OCwgMTcsIDEyLCAxLCAKLSAgICAyMTYsIDEwOCwgNDAsIDE3LCAxMiwgMSwgMjE2LCAxMDgsIDcwLCAxNywgMTIsIDEsIDIxNiwgMTA4LCAxMzgsIDE3LCAxMiwgCi0gICAgMSwgMjE3LCAyMTQsIDQ4LCAxNywgMTIsIDEsIDIxNywgMjE0LCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIxNCwgNzAsIDE3LCAKLSAgICAxMiwgMSwgMjE3LCAyMTQsIDEzOCwgMTcsIDEyLCAxLCAyMTYsIDExMCwgNDgsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIxNiwgMTEwLCA3MCwgMTcsIDEyLCAxLCAyMTYsIDExMCwgMTM4LCAxNywgMTIsIDEsIDIxNCwgMjI2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMTQsIDIyNiwgNDAsIDE3LCAxMiwgMSwgMjE0LCAyMjYsIDcwLCAxNywgMTIsIDEsIDIxNCwgCi0gICAgMjI2LCAxMzgsIDE3LCAxMiwgMSwgMjI2LCA3OSwgNDgsIDE3LCAxMiwgMSwgMjI2LCA3OSwgNDAsIDE3LCAxMiwgMSwgMjI2LCAKLSAgICA3OSwgNzAsIDE3LCAxMiwgMSwgMjI2LCA3OSwgMTM4LCAxNywgMTIsIDEsIDI0NSwgMjU1LCA0OCwgMTcsIDEyLCAxLCAyNDUsIAotICAgIDI1NSwgNDAsIDE3LCAxMiwgMSwgMjQ1LCAyNTUsIDcwLCAxNywgMTIsIDEsIDI0NSwgMjU1LCAxMzgsIDE3LCAxMiwgMSwgCi0gICAgMjI4LCAxNSwgNDgsIDE3LCAxMiwgMSwgMjI4LCAxNSwgNDAsIDE3LCAxMiwgMSwgMjI4LCAxNSwgNzAsIDE3LCAxMiwgMSwgCi0gICAgMjI4LCAxNSwgMTM4LCAxNywgMTIsIDEsIDIxNywgMjM0LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjE3LCAyMzQsIDcwLCAxNywgMTIsIDEsIDIxNywgMjM0LCAxMzgsIDE3LCAxMiwgMSwgMjE3LCAyMzIsIDQ4LCAxNywgCi0gICAgMTIsIDEsIDIxNywgMjMyLCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIzMiwgNzAsIDE3LCAxMiwgMSwgMjE3LCAyMzIsIDEzOCwgCi0gICAgMTcsIDEyLCAxLCAyNDgsIDg0LCA0OCwgMTcsIDEyLCAxLCAyNDgsIDg0LCA0MCwgMTcsIDEyLCAxLCAyNDgsIDE0NywgNDgsIAotICAgIDE3LCAxMiwgMSwgMjQ4LCAxNDcsIDQwLCAxNywgMTIsIDEsIDI0NiwgMjYsIDQ4LCAxNywgMTIsIDEsIDI0NiwgMjYsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI0OCwgODIsIDQ4LCAxNywgMTIsIDEsIDI0OCwgODIsIDQwLCAxNywgMTIsIDEsIDIzNSwgMTIyLCA0OCwgCi0gICAgMTcsIDEyLCAxLCAyMzUsIDEyMiwgNDAsIDE3LCAxMiwgMSwgMjIzLCA3OCwgNDgsIDE3LCAxMiwgMSwgMjIzLCA3OCwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjM0LCAxODEsIDQ4LCAxNywgMTIsIDEsIDIzNCwgMTgxLCA0MCwgMTcsIDEyLCAxLCAyMzQsIDE4MSwgCi0gICAgNzAsIDE3LCAxMiwgMSwgMjM0LCAxODEsIDEzOCwgMTcsIDEyLCAxLCAyNDMsIDk4LCA0OCwgMTcsIDEyLCAxLCAyNDMsIDk4LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAyNDMsIDk4LCA3MCwgMTcsIDEyLCAxLCAyNDMsIDk4LCAxMzgsIDE3LCAxMiwgMSwgMjQyLCA4MywgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjQyLCA4MywgNDAsIDE3LCAxMiwgMSwgMjQyLCA4MywgNzAsIDE3LCAxMiwgMSwgMjQyLCA4MywgCi0gICAgMTM4LCAxNywgMTIsIDEsIDIyOSwgODksIDQ4LCAxNywgMTIsIDEsIDIyOSwgODksIDQwLCAxNywgMTIsIDEsIDIyOSwgODksIAotICAgIDcwLCAxNywgMTIsIDEsIDIyOSwgODksIDEzOCwgMTcsIDEyLCAxLCAyMjgsIDE3NCwgMjQyLCAxOTUsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIyOCwgMTc0LCAyNDIsIDE5NSwgNDAsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIDQ4LCAxNywgMTIsIDEsIDIyMywgMTE2LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAyMjMsIDExNiwgNzAsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIDEzOCwgMTcsIDEyLCAxLCAyNDEsIAotICAgIDIwMywgMiwgNzMsIDc4LCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMiwgNzMsIDc4LCA0MCwgMTcsIDEyLCAxLCAyNDEsIAotICAgIDIwMywgMjQyLCAxNDgsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyNDIsIDE0OCwgNDAsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0MiwgMTQ4LCA3MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDEzOCwgMTcsIDEyLCAxLCAyNDEsIAotICAgIDIwMywgMjQ3LCA5NiwgNDgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0NywgOTYsIDQwLCAxNywgMTIsIDEsIDI0MSwgMjAzLCAKLSAgICAyNDcsIDk2LCA3MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQ3LCA5NiwgMTM4LCAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCAKLSAgICA0OCwgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgNDAsIDE3LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDIsIDE5MiwgNzgsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCAyLCAxOTIsIDc4LCA0MCwgMTcsIDEyLCAxNiwgNjIsIDQ5LCAxMiwgMTYsIDYyLCAKLSAgICA1NSwgMTIsIDE2LCAxMTcsIDE3NiwgNDksIDEyLCAxNiwgMTE3LCAxNzYsIDU1LCAxMiwgMTYsIDEzMywgMTc2LCA0OSwgMTIsIAotICAgIDE2LCAxMzMsIDE3NiwgNTUsIDEyLCAxNiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCA0OSwgMTIsIDE2LCAxMzMsIAotICAgIDE3NiwgMjI1LCAxNDEsIDI0NiwgNTgsIDU1LCAxMiwgMTYsIDI0MywgMjM3LCAxNzYsIDQ5LCAxMiwgMTYsIDI0MywgMjM3LCAKLSAgICAxNzYsIDU1LCAxMiwgMTYsIDUxLCA3MSwgMjUyLCA2MCwgNTUsIDEyLCAxNiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIAotICAgIDE2LCAxMTcsIDE3NiwgMjE0LCAxNjYsIDU1LCAxMiwgMTYsIDIyMywgMTMwLCAxMiwgMTYsIDMsIDIxOCwgMzAsIDQ5LCAxMiwgCi0gICAgMTYsIDMsIDIxOCwgMzAsIDU1LCAxMiwgMSwgMjI5LCAxNjIsIDQ4LCAxNywgMTIsIDEsIDIyOSwgMTYyLCA0MCwgMTcsIDEyLCAKLSAgICAxLCAyMjksIDE2MiwgNzAsIDE3LCAxMiwgMSwgMjI5LCAxNjIsIDEzOCwgMTcsIDEyLCAxLCAxMTEsIDQ4LCAxNywgMTIsIDEsIAotICAgIDExMSwgNDAsIDE3LCAxMiwgMSwgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDEsIDIyNywgMTAwLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyMTIsIDIwNCwgNDgsIDE3LCAxMiwgMSwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDEsIDExMSwgMiwgMTkyLCA3OCwgNDgsIAotICAgIDE3LCAxMiwgMSwgMjE0LCAyMzMsIDQ4LCAxNywgMTIsIDEsIDIxNCwgMjMzLCA0MCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAKLSAgICAyMjcsIDEwMCwgNDgsIDE3LCAxMiwgMSwgMjM0LCA4MiwgMjI3LCAxMDAsIDQwLCAxNywgMTIsIDEsIDIzNCwgODIsIDIxMiwgCi0gICAgMjA0LCA0OCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIDIwNCwgNDAsIDE3LCAxMiwgMSwgMTkxLCA0OCwgMTcsIDEyLCAxLCAKLSAgICAxOTEsIDQwLCAxNywgMTIsIDEsIDE5MSwgNzAsIDE3LCAxMiwgMSwgMTkxLCAxMzgsIDE3LCAxMiwgMSwgMjE1LCAxNzcsIAotICAgIDIzNCwgMTkyLCAyMzQsIDgyLCAxMDYsIDIxMCwgNzAsIDE3LCAxMiwgMSwgMjE1LCAxNzcsIDIzNCwgMTkyLCAyMzQsIDgyLCAKLSAgICAxMDYsIDIxMCwgMTM4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyNTQsIDE0OSwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyNTQsIDE0OSwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTQsIAotICAgIDE1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIxNCwgMTUsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTkyLCA3OCwgMiwgMTExLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDExMSwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAxOTIsIDc4LCAyLCAyMjcsIDEwMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMjcsIDEwMCwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTIsIDIwNCwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIAotICAgIDc4LCAyLCAyMTIsIDIwNCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxOTEsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICA3MywgMiwgMTkyLCA3OCwgMiwgMTkxLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDE5MSwgNzAsIDE3LCAKLSAgICAxMiwgMjYsIDIxNSwgMTc3LCAyMzQsIDgyLCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyMTUsIDE3NywgMjM0LCA4MiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE1LCAxNzcsIAotICAgIDIzNCwgODIsIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNzAsIDE3LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCA0OCwgCi0gICAgMTcsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDQwLCAxNywgMTIsIDEsIDI0NCwgMTM2LCA3MywgNzAsIDE3LCAxMiwgMSwgMjQ0LCAKLSAgICAxMzYsIDczLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTkyLCA3OCwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDczLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxMjEsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNzMsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDEyMSwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA3MywgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMTQ2LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyMTcsIDE0NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAxNDUsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAxMjEsIDIsIDE0NSwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDEyMSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjM0LCAxMzYsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgCi0gICAgODYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIAotICAgIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgCi0gICAgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDE0NSwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMjEsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIxMiwgMTA1LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDI1NCwgMTA0LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDIsIAotICAgIDIyMSwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIAotICAgIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgCi0gICAgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgCi0gICAgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgCi0gICAgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDEwNiwgCi0gICAgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTIxLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgMjEwLCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyMTAsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgNjMsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCA2MywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCA3MywgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjI4LCAxNzQsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjI4LCAxNzQsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjQxLCAyMDMsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0MSwgCi0gICAgMjAzLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAKLSAgICAxNDUsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgNzMsIAotICAgIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNTYsIDIsIDIxOCwgMjIzLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAyMjMsIAotICAgIDI0NiwgMiwgMjE4LCAyMjMsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDEwNiwgMjEwLCAyLCAyMTgsIDIyMywgMTA2LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjQ4LCAxMjgsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyMzQsIDIwOSwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0NCwgMTM0LCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjQ4LCAKLSAgICAxMzAsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyMzQsIDIxMSwgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIAotICAgIDIxOCwgMjIzLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIAotICAgIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNjMsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCAKLSAgICA3OCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyNTEsIDIzMSwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyNTEsIDIzMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNzMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjEyLCAxMDIsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjI4LCAxNzQsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNzMsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMjEyLCAxMDIsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMjI4LCAxNzQsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTA2LCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgMjEwLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgNjMsIDIsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAKLSAgICAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgCi0gICAgMTc0LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyMjgsIDE3NCwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgCi0gICAgMTc0LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDEwNiwgCi0gICAgMjEwLCAyLCAyMTgsIDIyMywgMTA2LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDIyOCwgCi0gICAgMTc0LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxMjEsIAotICAgIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCAKLSAgICA3OCwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyNTEsIDIzMSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDI1MSwgCi0gICAgMjMxLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1MSwgCi0gICAgMjMxLCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMTcsIAotICAgIDIxNiwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAyMTYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAxNDYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMTIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAKLSAgICAxMzYsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIAotICAgIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIzNCwgCi0gICAgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDYzLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgNjMsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMTIsIDEwNSwgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyNTQsIDEwNCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjQyLCAyMjEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI0NCwgCi0gICAgMTEyLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIAotICAgIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIAotICAgIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzNCwgCi0gICAgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIAotICAgIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIAotICAgIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIAotICAgIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIAotICAgIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAyMDMsIDIsIAotICAgIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCAyMTgsIAotICAgIDIyMywgMTA2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxMjEsIDcwLCAxNywgCi0gICAgMTIsIDI2LCA3MywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCA3MywgCi0gICAgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIAotICAgIDIsIDE5MiwgNzgsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyNTEsIDIzMSwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAxNDYsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIyMiwgODYsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjAsIDI0MCwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCAxMzgsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDEzOCwgMTcsIAotICAgIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgCi0gICAgMTIsIDI2LCA3MywgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMSwgMTYsIDIsIDI0NCwgMTM0LCAxMzgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgMTMwLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIyMSwgMTYsIDIsIDIzNCwgMjExLCAxMzgsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE4LCAzMCwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyMiwgODYsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDEyMSwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAxNDUsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjIzLCAKLSAgICAyNDYsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMjIzLCAyNDYsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgCi0gICAgMjIzLCAyNDYsIDQ4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIAotICAgIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIAotICAgIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIAotICAgIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAKLSAgICA3MywgNDAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMzQsIDEzNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDE5NiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyNDgsIDE2MCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMjAsIDI0MCwgMiwgMTQ1LCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCAyMzQsIDEzNiwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCAxOTYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyMjAsIDI0MCwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDg2LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgCi0gICAgMjYsIDIxOCwgMzAsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTQ1LCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMiwgODYsIDIsIDEyMSwgMTM4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIDEzNiwgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjAsIDI0MCwgMiwgMTQ1LCAxMzgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDIzNCwgMTM2LCAxMzgsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIxMiwgMTA1LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAxMDYsIDIsIDI0NCwgMTMyLCA0MCwgMTcsIDEyLCAyNiwgMTA2LCAKLSAgICAyLCAyNDQsIDEzMiwgNDgsIDE3LCAyMjcsIDEzLCA0MiwgMjI2LCAxMzEsIDIyNywgMTMsIDQ2LCAyMjYsIDEzMSwgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMjEsIDIsIDE0NSwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMjEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAKLSAgICAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIAotICAgIDIxNywgMjE2LCAyLCA2MywgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgMiwgMTIxLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgMiwgNzMsIAotICAgIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEyMSwgCi0gICAgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAKLSAgICAyLCAxNDUsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDEyMSwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgMTQ1LCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDYzLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDEyMSwgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIAotICAgIDEyMSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCAxMjEsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMjAsIDI0MCwgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgMiwgMjM0LCAKLSAgICAxMzYsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIwLCAKLSAgICAyNDAsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMzQsIDEzNiwgCi0gICAgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE4LCAKLSAgICAzMCwgMiwgNjMsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMTgsIDMwLCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMiwgNzMsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyNTQsIDEwNCwgMiwgMTQ1LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgMiwgNjMsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCAKLSAgICAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNDIsIAotICAgIDIyMSwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDYzLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDI0NCwgMTEyLCAyLCAyMzQsIDEzNiwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMjM0LCAKLSAgICAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMjQsIAotICAgIDIyNiwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgMiwgNjMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDEwNiwgCi0gICAgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIAotICAgIDIsIDE0NSwgMiwgMTQ1LCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCAyLCA2MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIzMywgMTI3LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIAotICAgIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgCi0gICAgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTIxLCAyLCAKLSAgICA3MywgNDAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIAotICAgIDYzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgMTM2LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAKLSAgICAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNDEsIAotICAgIDIwMywgMiwgNjMsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxMjEsIDIsIDEwNiwgCi0gICAgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgCi0gICAgMiwgMTQ1LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjI4LCAxNzQsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgMiwgMTA2LCAyMTAsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCAyLCA2MywgNzAsIAotICAgIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgCi0gICAgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxNDUsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgCi0gICAgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAyMTYsIDIsIDYzLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMTQ1LCAyLCAxMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgMiwgMTA2LCAyMTAsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIDEzNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIAotICAgIDE5NiwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjQ4LCAxNjAsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTQ1LCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTIxLCAyLCA3MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDYzLCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDIsIAotICAgIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIAotICAgIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMjgsIDE3NCwgMiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgMTQ1LCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIAotICAgIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIzNCwgMjU1LCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgMTQ1LCAyLCA2MywgNzAsIDE3LCAKLSAgICAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIDEzNiwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgMTc1LCAKLSAgICAyMTUsIDEwMiwgMjUzLCAxNTMsIDIzNCwgMTMsIDIxOSwgNzAsIDUsIDQ4LCAxNywgMTIsIDI2LCAyMjQsIDIyMiwgMjE1LCAKLSAgICAxMDIsIDI1MywgMTUzLCAyMzQsIDEzLCAyMTksIDcwLCA1LCA0OCwgMTcsIDEyLCAyNiwgMjU0LCA2MiwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDI1NCwgOTEsIDQ4LCAxNywgMTIsIDI2LCAyMzAsIDIyMywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTc2LCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjI0LCAzNSwgNDgsIDE3LCAxMiwgMjYsIDI1NCwgODAsIDQ4LCAxNywgMTIsIDI2LCAyMTQsIDMzLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjIyLCAxNzUsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE3NCwgMjU0LCA4MCwgMjE0LCAzMiwgMTIsIDI2LCAKLSAgICAyMzUsIDEzNCwgMjIzLCAxODcsIDUyLCAxMiwgMjYsIDI1MSwgMTUzLCAyNTMsIDIwOSwgMjUzLCAyMTAsIDQzLCAyMjIsIAotICAgIDc2LCA0MywgMjIxLCAyMjEsIDQzLCAyMjEsIDE1MywgNDMsIDIyMSwgMTQyLCA0MywgMjIxLCAxMzEsIDQzLCAyMjEsIDEyMCwgCi0gICAgNDMsIDIyMSwgMTA5LCA0MywgMjIxLCA5OCwgNDMsIDIyMSwgODcsIDQzLCAyMjIsIDc1LCA0MywgMjIyLCA2NCwgNDMsIAotICAgIDIyMiwgNTMsIDQzLCAyMjIsIDQyLCA0MywgMjIyLCAzMSwgNDMsIDIyMiwgMjAsIDQzLCAyMjIsIDksIDIyNSwgNzQsIDI0MywgCi0gICAgMjQ1LCAzMSwgNzEsIDI0OSwgMTU3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxMDUsIDI0OSwgMTU3LCAyMjUsIDc0LCAKLSAgICAyNDMsIDI0NSwgMzEsIDcxLCAxMDUsIDI0MywgMjAwLCAyMTksIDY5LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAyNDksIAotICAgIDE2NCwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjIxLCA3MCwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjQ0LCAKLSAgICAyNTQsIDc3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAyMjQsIDE1OCwgNzcsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgCi0gICAgNzEsIDQyLCA2NywgMjMzLCA0NCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNjcsIDIzMywgNDQsIAotICAgIDI1MSwgODMsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDE5OSwgMjQ1LCAxMjAsIDM3LCAyNiwgNDIsIDI0MiwgOSwgCi0gICAgMzcsIDI2LCA0NiwgMjQyLCA5LCAzNywgNTEsIDIxNywgNDMsIDQyLCAyNDIsIDksIDM3LCA1MSwgMjE3LCA0MywgNDYsIAotICAgIDI0MiwgOSwgMzcsIDIzMiwgMzgsIDQyLCAyNDIsIDksIDM3LCAyMzIsIDM4LCA0NiwgMjQyLCA5LCAzNywgMjQ5LCAxMzcsIAotICAgIDIzMiwgMzcsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDExNywgNjIsIDIzMywgODAsIDIyNSwgNzQsIDI0MywgMjQ1LCAKLSAgICAzMSwgNzEsIDI0NSwgMTE4LCAyNDgsIDEwMSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjQ1LCAxMDksIDI0OCwgCi0gICAgMTAxLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxMTUsIDIzMiwgMjQyLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAKLSAgICAyMTQsIDE2LCAxMTUsIDIzMiwgMjQyLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgMjI2LCAxMzEsIDIyNSwgNzQsIAotICAgIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCAyMjYsIDEzMSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI0OSwgNDAsIAotICAgIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDI0OSwgNDAsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCAKLSAgICA3MSwgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgMjE2LCAyMTksIAotICAgIDIyMCwgMjMzLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCA4MywgMjMzLCA0NCwgMTI1LCAyMjUsIDc0LCAKLSAgICAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgODMsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIAotICAgIDUxLCAyNTQsIDE5LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA1MSwgMjU0LCAxOSwgMTI1LCAyMjUsIAotICAgIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgMjU0LCAxOSwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgCi0gICAgMjU0LCAxOSwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgMjQ5LCAxMDAsIDEyNSwgMjI1LCA3NCwgMjQzLCAKLSAgICAyNDUsIDMxLCA3MSwgNDYsIDI0OSwgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCA2NywgMjQ5LCAKLSAgICAxMDAsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDY3LCAyNDksIDEwMCwgMTI1LCAyMjEsIDUyLCAyNDcsIAotICAgIDc0LCA2NywgMjIxLCA1MiwgMjQ3LCA3NCwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDQxLCAxMjUsIDIyNSwgCi0gICAgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA0MSwgMTI1LCAyNDgsIDEwMCwgMjI2LCAyNDMsIDI1MCwgMTA2LCAyMjYsIAotICAgIDI0MywgMjE0LCAxNiwgMjI2LCAyNDMsIDUxLCAyMTQsIDE2LCAyMjYsIDI0MywgMjQ4LCAxMDAsIDExNSwgMjMyLCAyNDIsIAotICAgIDI1MCwgMTA2LCAxMTUsIDIzMiwgMjQyLCAyMTQsIDE2LCAxMTUsIDIzMiwgMjQyLCAzLCAyNDksIDE1NywgMywgMTA1LCAKLSAgICAyNDksIDE1NywgMywgMjQzLCAyMDAsIDIxOSwgNjksIDMsIDIyMSwgNzAsIDMsIDI0OSwgMTY0LCAzLCAyMjQsIDE1OCwgNzcsIAotICAgIDMsIDI0NCwgMjU0LCA3NywgMywgMjQ1LCAxMTgsIDI0OCwgMTAxLCAzLCA0MiwgMjI2LCAxMzEsIDMsIDQ2LCAyMjYsIDEzMSwgCi0gICAgMywgNDIsIDI0OSwgNDAsIDEyNSwgMywgNDYsIDI0OSwgNDAsIDEyNSwgMywgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAKLSAgICAzLCA0NiwgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDMsIDUwLCA1MiwgMywgMjU0LCAzNSwgMywgMjUzLCAxMzIsIDMsIAotICAgIDk0LCA1MiwgMywgMjQwLCAxNTksIDMsIDIzMywgMzksIDUyLCAzLCAyNDIsIDEwNywgNTIsIDMsIDI0NSwgNjEsIDUyLCAzLCAKLSAgICAyMjMsIDIwMywgMjE5LCAyMzEsIDMsIDI0NywgODYsIDUyLCAzLCAyMjYsIDU3LCA1MiwgMywgMjQ5LCAxNTYsIDI1MywgCi0gICAgMTIyLCAxMiwgMjQ0LCAxMzIsIDQ4LCAxNywgMTIsIDIxNywgMjUxLCAyLCAyNDQsIDEzMiwgNDksIDEyLCAyNDgsIDEyOCwgCi0gICAgNDgsIDE3LCAxMiwgMjE4LCAyOCwgMjQzLCAyMjcsIDEyLCAyMzQsIDIwOSwgNDgsIDE3LCAxMiwgMjQ0LCAxMzQsIDQ4LCAKLSAgICAxNywgMTIsIDI0NCwgMTM0LCAxMzgsIDE3LCAxMiwgMjQ4LCAxMzAsIDQ4LCAxNywgMTIsIDI0OCwgMTMwLCAxMzgsIDE3LCAKLSAgICAxMiwgMjM0LCAyMTEsIDQ4LCAxNywgMTIsIDIzNCwgMjExLCAxMzgsIDE3LCAxMiwgMjIxLCAxNiwgNDgsIDE3LCAxMiwgCi0gICAgMjIxLCAxNiwgMTM4LCAxNywgMTIsIDIxOCwgMjQ3LCA0OCwgMTcsIDEyLCAyMTgsIDI0NywgMTM4LCAxNywgMTIsIDEsIAotICAgIDE5MiwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAyMzIsIDMzLCA3OCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAyMzIsIDMzLCAKLSAgICA3OCwgNDAsIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDc4LCA0OCwgMTcsIDEyLCAxLCAxMDYsIDIsIDE5MiwgNzgsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIxNCwgMTUsIDIsIDE5MiwgNzgsIDQ4LCAxNywgMTIsIDEsIDIxNCwgMTUsIDIsIDE5MiwgNzgsIDQwLCAKLSAgICAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCAyNTEsIDIyMCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDI1MSwgMjIwLCAKLSAgICA0MCwgMTcsIDEyLCAxLCA3MywgMiwgMTkyLCA3OCwgNDgsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDQwLCAxNywgMTIsIAotICAgIDEsIDczLCAyLCAxOTIsIDc4LCA3MCwgMTcsIDEyLCAxLCA3MywgMiwgMTkyLCA3OCwgMTM4LCAxNywgMTIsIDEsIDEwNiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMTA2LCA0MCwgMTcsIDEyLCAxLCAyNTEsIDIzMSwgNDgsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI1MSwgMjMxLCA3MCwgMTcsIDEyLCAxLCAyNTEsIDIzMSwgMTM4LCAxNywgMTIsIDEsIDIxNywgMjE2LCAKLSAgICAyMzEsIDIyOCwgNDgsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDIzMSwgMjI4LCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgNDgsIAotICAgIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDQwLCAxNywgMTIsIDEsIDIxNywgMjE2LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgCi0gICAgMTM4LCAxNywgMTIsIDEsIDIxNywgMTQ2LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgNDAsIDE3LCAxMiwgMSwgMjE3LCAKLSAgICAxNDYsIDcwLCAxNywgMTIsIDEsIDIxNywgMTQ2LCAxMzgsIDE3LCAxMiwgMSwgMTQ1LCA0OCwgMTcsIDEyLCAxLCAxNDUsIAotICAgIDQwLCAxNywgMTIsIDEsIDE0NSwgNzAsIDE3LCAxMiwgMSwgMTQ1LCAxMzgsIDE3LCAxMiwgMSwgMTIxLCA0OCwgMTcsIDEyLCAKLSAgICAxLCAxMjEsIDQwLCAxNywgMTIsIDEsIDEyMSwgNzAsIDE3LCAxMiwgMSwgMTIxLCAxMzgsIDE3LCAxMiwgMSwgMjM0LCAxMzYsIAotICAgIDQ4LCAxNywgMTIsIDEsIDIzNCwgMTM2LCA0MCwgMTcsIDEyLCAxLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMSwgMjM0LCAKLSAgICAxMzYsIDEzOCwgMTcsIDEyLCAxLCAyNDgsIDE0MSwgNDgsIDE3LCAxMiwgMSwgMjQ4LCAxNDEsIDQwLCAxNywgMTIsIDEsIAotICAgIDIxNywgMTU2LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDE1NiwgNDAsIDE3LCAxMiwgMSwgMjIzLCAyNDYsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAxLCAyMTIsIDEwMiwgNDgsIDE3LCAxMiwgMSwgMjEyLCAxMDIsIDQwLCAxNywgCi0gICAgMTIsIDEsIDIyMiwgODYsIDQ4LCAxNywgMTIsIDEsIDIyMiwgODYsIDQwLCAxNywgMTIsIDEsIDIyMiwgODYsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIyMiwgODYsIDEzOCwgMTcsIDEyLCAxLCAyMjAsIDI0MCwgNDgsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIyMCwgMjQwLCA3MCwgMTcsIDEyLCAxLCAyMjAsIDI0MCwgMTM4LCAxNywgMTIsIDEsIDIyMiwgMTk2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMjIsIDE5NiwgNDAsIDE3LCAxMiwgMSwgMjIyLCAxOTYsIDcwLCAxNywgMTIsIDEsIDIyMiwgCi0gICAgMTk2LCAxMzgsIDE3LCAxMiwgMSwgMjQ4LCAxNjAsIDQ4LCAxNywgMTIsIDEsIDI0OCwgMTYwLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyNDgsIDE2MCwgNzAsIDE3LCAxMiwgMSwgMjQ4LCAxNjAsIDEzOCwgMTcsIDEyLCAxLCAyMTgsIDMwLCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMTgsIDMwLCA0MCwgMTcsIDEyLCAxLCAyMTgsIDMwLCA3MCwgMTcsIDEyLCAxLCAyMTgsIDMwLCAxMzgsIDE3LCAxMiwgCi0gICAgMSwgMjEyLCAxMDUsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMTA1LCA0MCwgMTcsIDEyLCAxLCAyMTIsIDEwNSwgNzAsIDE3LCAKLSAgICAxMiwgMSwgMjEyLCAxMDUsIDEzOCwgMTcsIDEyLCAxLCAyNTQsIDEwNCwgNDgsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI1NCwgMTA0LCA3MCwgMTcsIDEyLCAxLCAyNTQsIDEwNCwgMTM4LCAxNywgMTIsIDEsIDI0MiwgMjIxLCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyNDIsIDIyMSwgNDAsIDE3LCAxMiwgMSwgMjQyLCAyMjEsIDcwLCAxNywgMTIsIDEsIDI0MiwgCi0gICAgMjIxLCAxMzgsIDE3LCAxMiwgMSwgMjQ0LCAxMTIsIDQ4LCAxNywgMTIsIDEsIDI0NCwgMTEyLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyNDQsIDExMiwgNzAsIDE3LCAxMiwgMSwgMjQ0LCAxMTIsIDEzOCwgMTcsIDEyLCAxLCAyMjQsIDIyNiwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMjI0LCAyMjYsIDQwLCAxNywgMTIsIDEsIDIyNCwgMjI2LCA3MCwgMTcsIDEyLCAxLCAyMjQsIDIyNiwgMTM4LCAxNywgCi0gICAgMTIsIDEsIDIzNCwgMjU1LCA0OCwgMTcsIDEyLCAxLCAyMzQsIDI1NSwgNDAsIDE3LCAxMiwgMSwgMjM0LCAyNTUsIDcwLCAKLSAgICAxNywgMTIsIDEsIDIzNCwgMjU1LCAxMzgsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIDQ4LCAxNywgMTIsIDEsIDIzMywgMTI3LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAyMzMsIDEyNywgNzAsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIDEzOCwgMTcsIDEyLCAxLCA2MywgNDgsIAotICAgIDE3LCAxMiwgMSwgNjMsIDQwLCAxNywgMTIsIDEsIDYzLCA3MCwgMTcsIDEyLCAxLCA2MywgMTM4LCAxNywgMTIsIDEsIDIyOCwgCi0gICAgMTc0LCA0OCwgMTcsIDEyLCAxLCAyMjgsIDE3NCwgNDAsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDcwLCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTc0LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCA0MCwgMTcsIDEyLCAKLSAgICAxLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAxLCAyMTQsIDE1LCA0OCwgMTcsIAotICAgIDEyLCAxLCAyMTQsIDE1LCA0MCwgMTcsIDEyLCAxLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyMTAsIDQwLCAxNywgCi0gICAgMTIsIDEsIDczLCA0OCwgMTcsIDEyLCAxLCA3MywgNDAsIDE3LCAxMiwgMSwgNzMsIDcwLCAxNywgMTIsIDEsIDczLCAxMzgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIsIDIzMiwgMzMsIDc4LCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIAotICAgIDIsIDEwNiwgMiwgMjMyLCAzMywgNzgsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAxOTIsIDc4LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCA3OCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAKLSAgICAxMDYsIDIsIDE5MiwgMjUxLCAyMjAsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAxOTIsIDI1MSwgCi0gICAgMjIwLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIAotICAgIDQwLCAxNywgMjEyLCA4MCwgMjEzLCAyMzAsIDIyOCwgMTg0LCAyMTksIDIwNiwgMTIwLCAyNDQsIDI1NCwgNzcsIDEyMCwgCi0gICAgMjI0LCAxNDMsIDc3LCAxMjAsIDUwLCA1MiwgMTIwLCAyNDcsIDg2LCA1MiwgMTIwLCAyMjYsIDU3LCA1MiwgMTIwLCAyNTQsIAotICAgIDM1LCAxMjAsIDI1MywgMjI2LCAxMjAsIDQyLCAyMjYsIDEzMSwgMTIwLCA0NiwgMjI2LCAxMzEsIDEyMCwgMjUzLCAxMzIsIAotICAgIDEyMCwgOTQsIDUyLCAxMjAsIDI0OSwgMTU3LCAxMjAsIDI0MCwgMTU5LCAxMjAsIDI0MywgMjAwLCAyMTksIDY5LCAxMjAsIAotICAgIDIxOSwgMjMxLCAxMjAsIDIxLCAyMTIsIDc5LCAxMjAsIDIxLCAxMTYsIDEyMCwgMjEsIDEwOSwgMTIwLCAyMSwgMTY2LCAKLSAgICAxMjAsIDIxLCAxNjMsIDEyMCwgMjEsIDE4MCwgMTIwLCAyMSwgMTg5LCAxMjAsIDIxLCAxOTgsIDEyMCwgMjEsIDE5NSwgCi0gICAgMTIwLCAyMSwgMjAwLCAxMjAsIDI0OSwgMTY0LCAxMjAsIDIyMSwgNzAsIDEyMCwgMjMzLCAzOSwgNTIsIDEyMCwgMjQ1LCAKLSAgICA2MSwgNTIsIDEyMCwgMjQyLCAxMDcsIDUyLCAxMjAsIDIyNCwgMTU4LCA3NywgMTIwLCAyNDksIDE1NiwgMjUzLCAxMjIsIAotICAgIDEyMCwgNywgNiwgMSwgNjEsIDEyMCwgNywgNiwgMSwgMjUzLCA3NCwgMTIwLCA3LCA2LCAxLCAyNTAsIDI1MiwgMTIwLCA3LCAKLSAgICA2LCAxLCAyNDksIDMsIDEyMCwgNywgNiwgMSwgNzQsIDEyMCwgNywgNiwgMSwgMjQ0LCAyMzAsIDEyMCwgNywgNiwgMSwgCi0gICAgMjQzLCAxNzcsIDEyMCwgNywgNiwgMSwgMjQyLCA0MSwgMTIwLCA3LCA2LCAxLCA3MiwgMTIwLCA3LCA2LCAxLCAyMzUsIAotICAgIDE0MiwgMTIwLCA3LCA2LCAxLCAyMzUsIDI3LCAxMjAsIDcsIDYsIDEsIDE1MCwgMTIwLCA3LCA2LCAxLCAxODMsIDEyMCwgNywgCi0gICAgNiwgMSwgMjA0LCAxMjAsIDcsIDYsIDEsIDc1LCAxMjAsIDcsIDYsIDEsIDIyNiwgMjI5LCAxMjAsIDcsIDYsIDEsIDIyNCwgCi0gICAgMjQwLCAxMjAsIDcsIDYsIDEsIDE0OSwgMTIwLCA3LCA2LCAxLCAxOTcsIDEyMCwgNywgNiwgMSwgMjE4LCA5OSwgMTIwLCA3LCAKLSAgICA2LCAxLCA2OSwgMTIwLCA3LCA2LCAxLCAyMTUsIDc5LCAxMjAsIDcsIDYsIDEsIDIxNCwgODIsIDEyMCwgNywgNiwgMSwgCi0gICAgMjEzLCAxNjYsIDEyMCwgNywgNiwgMSwgMjEzLCAxMDUsIDEyMCwgNywgNiwgMSwgMjEyLCAxNTIsIDEyMCwgNDIsIDQxLCAKLSAgICAxMjUsIDEyMCwgMjIzLCAyMDMsIDIxOSwgMjMxLCAxMjAsIDQ2LCA0MSwgMTI1LCAxMjAsIDI0OSwgMjI0LCAyNTQsIDE3NCwgCi0gICAgMTIwLCAxMTUsIDIzMiwgMjQyLCAxMjAsIDI0MiwgMTE0LCAyNTQsIDE3NCwgMTIwLCA3LCAzLCAxLCA2MSwgMTIwLCA3LCAzLCAKLSAgICAxLCAyNTMsIDc0LCAxMjAsIDcsIDMsIDEsIDI1MCwgMjUyLCAxMjAsIDcsIDMsIDEsIDI0OSwgMywgMTIwLCA3LCAzLCAxLCAKLSAgICA3NCwgMTIwLCA3LCAzLCAxLCAyNDQsIDIzMCwgMTIwLCA3LCAzLCAxLCAyNDMsIDE3NywgMTIwLCA3LCAzLCAxLCAyNDIsIAotICAgIDQxLCAxMjAsIDcsIDMsIDEsIDcyLCAxMjAsIDcsIDMsIDEsIDIzNSwgMTQyLCAxMjAsIDcsIDMsIDEsIDIzNSwgMjcsIDEyMCwgCi0gICAgNywgMywgMSwgMTUwLCAxMjAsIDcsIDMsIDEsIDE4MywgMTIwLCA3LCAzLCAxLCAyMDQsIDEyMCwgNywgMywgMSwgNzUsIAotICAgIDEyMCwgNywgMywgMSwgMjI2LCAyMjksIDEyMCwgNywgMywgMSwgMjI0LCAyNDAsIDEyMCwgNywgMywgMSwgMTQ5LCAxMjAsIAotICAgIDcsIDMsIDEsIDE5NywgMTIwLCA3LCAzLCAxLCAyMTgsIDk5LCAxMjAsIDcsIDMsIDEsIDY5LCAxMjAsIDcsIDMsIDEsIDIxNSwgCi0gICAgNzksIDEyMCwgNywgMywgMSwgMjE0LCA4MiwgMTIwLCA3LCAzLCAxLCAyMTMsIDE2NiwgMTIwLCA3LCAzLCAxLCAyMTMsIAotICAgIDEwNSwgMTIwLCA3LCAzLCAxLCAyMTIsIDE1MiwgMTIwLCA0MiwgMjQ5LCA0MCwgMTI1LCAxMjAsIDcxLCAyMzIsIDI0MiwgCi0gICAgMTIwLCA0NiwgMjQ5LCA0MCwgMTI1LCAxMjAsIDIxNywgNDIsIDEyMCwgNDIsIDY3LCAyMjYsIDEzMSwgMTIwLCA0NiwgNjcsIAotICAgIDIyNiwgMTMxLCA5OCwgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgOTgsIDQyLCAyNDksIDEwMCwgMTI1LCA5OCwgNDYsIDI0OSwgCi0gICAgMTAwLCAxMjUsIDk4LCAxMDUsIDI0OSwgMTU3LCA5OCwgNTYsIDIzMSwgMzcsIDI0NywgNzQsIDk4LCA1NiwgMSwgMjEzLCAKLSAgICAyMTQsIDk4LCA1NiwgMSwgMywgNjEsIDk4LCA1NiwgMSwgMywgNzIsIDk4LCA1NiwgMSwgMywgNjksIDk4LCA1NiwgMSwgMywgCi0gICAgNzQsIDk4LCA1NiwgMSwgMywgNzUsIDk4LCA1NiwgMSwgMywgMTg2LCA5OCwgNTYsIDEsIDMsIDIxMiwgMjAzLCA5OCwgNTYsIAotICAgIDEsIDMsIDIxMiwgMjM1LCA5OCwgNTYsIDEsIDMsIDIxNiwgODIsIDk4LCAyMzQsIDIwNiwgMjI1LCA1NywgMjE5LCAyMTgsIAotICAgIDc3LCA5OCwgNTYsIDEsIDYxLCA5OCwgNTYsIDEsIDcyLCA5OCwgNTYsIDEsIDY5LCA5OCwgNTYsIDEsIDc0LCA5OCwgNTYsIAotICAgIDEsIDc1LCA5OCwgNTYsIDEsIDE4MSwgOTgsIDU2LCAxLCAyMzQsIDEwMSwgOTgsIDU2LCAxLCAyMzMsIDIzOCwgOTgsIDU2LCAKLSAgICAxLCAyMzQsIDE4OCwgOTgsIDU2LCAxLCAyMzQsIDM3LCA5OCwgNTYsIDEsIDIyMiwgMjAyLCA5OCwgNTYsIDEsIDIyMCwgCi0gICAgMTE3LCA5OCwgNTYsIDEsIDIxOSwgMjcsIDk4LCA1NiwgMSwgMjIyLCAxMDAsIDk4LCA1NiwgMSwgMjE5LCAyNDIsIDk4LCAKLSAgICA1NiwgMSwgMjE4LCA1MiwgOTgsIDU2LCAxLCAyMTcsIDcxLCA5OCwgNTYsIDEsIDIxNiwgODIsIDk4LCA1NiwgMSwgMjE3LCAKLSAgICAyMjksIDk4LCA1NiwgMSwgMTA4LCA5OCwgNTYsIDEsIDIwNSwgOTgsIDU2LCAxLCAyMjksIDY0LCA5OCwgNTYsIDEsIDIyOCwgCi0gICAgOTIsIDk4LCA1NiwgMSwgMjI5LCAxODcsIDk4LCA1NiwgMSwgMjI4LCAxODUsIDk4LCA1NiwgMSwgMTU5LCA5OCwgNTYsIDEsIAotICAgIDI0MSwgMTY1LCA5OCwgNTYsIDEsIDI0MCwgMjEyLCA5OCwgNTYsIDEsIDI0MSwgMjIyLCA5OCwgNTYsIDEsIDI0MSwgNTQsIAotICAgIDk4LCA1NiwgMSwgMTg4LCA5OCwgNTYsIDEsIDIzMSwgNDIsIDk4LCA1NiwgMSwgMjMwLCAxNzIsIDk4LCA1NiwgMSwgMjMxLCAKLSAgICAxNTYsIDk4LCA1NiwgMSwgMjMwLCAyMzEsIDk4LCA1NiwgMSwgMTg2LCA5OCwgNTYsIDEsIDIxMiwgMjAzLCA5OCwgNTYsIDEsIAotICAgIDIxMiwgMjM1LCA5OCwgNTYsIDEsIDIwMywgOTgsIDU2LCAxLCAyMjMsIDE4OCwgOTgsIDU2LCAxLCAyMjMsIDUxLCA5OCwgCi0gICAgNTYsIDEsIDIyNCwgMjEsIDk4LCA1NiwgMSwgMjIzLCAxMTIsIDk4LCA1NiwgMSwgMjE0LCA0OSwgOTgsIDU2LCAxLCAyMDQsIAotICAgIDk4LCA1NiwgMjE0LCAxMTYsIDIxOSwgMjE4LCA3NywgOTgsIDU2LCAyMjEsIDc1LCAyMTksIDIxOCwgNzcsIDk4LCAyMywgCi0gICAgMjQ0LCA3MiwgOTgsIDIzLCAxLCAyMzQsIDY3LCA5OCwgMjMsIDEsIDIxOSwgMTUwLCA5OCwgMjMsIDEsIDIzNCwgNjAsIDk4LCAKLSAgICAyMywgMSwgMjI5LCA1NywgOTgsIDIzLCAxLCAyMjksIDU1LCA5OCwgMjMsIDEsIDIyOSwgNTQsIDk4LCAyMywgMSwgMjE3LCAKLSAgICA1NSwgOTgsIDIzLCAxLCAyMTksIDEzOSwgOTgsIDIzLCAxLCAyMjMsIDE3OSwgOTgsIDIzLCAxLCAyMjMsIDE3NCwgOTgsIAotICAgIDIzLCAxLCAyMjMsIDE3MSwgOTgsIDIzLCAxLCAyMjMsIDE2NCwgOTgsIDIzLCAxLCAyMjMsIDE1OSwgOTgsIDIzLCAxLCAKLSAgICAyMjMsIDE1NCwgOTgsIDIzLCAxLCAyMjMsIDE2NSwgOTgsIDIzLCAxLCAyMjMsIDE3NywgOTgsIDIzLCAxLCAyMzEsIDMwLCAKLSAgICA5OCwgMjMsIDEsIDIyNSwgMjI3LCA5OCwgMjMsIDEsIDIxOSwgMTQ3LCA5OCwgMjMsIDEsIDIyNSwgMjE2LCA5OCwgMjMsIDEsIAotICAgIDIyMCwgNzYsIDk4LCAyMywgMSwgMjE5LCAxNDQsIDk4LCAyMywgMSwgMjM2LCA1MSwgOTgsIDIzLCAxLCAyNDksIDIzOSwgCi0gICAgOTgsIDIzLCAxLCAyMTksIDE1NCwgOTgsIDIzLCAxLCAyNTAsIDQzLCA5OCwgMjMsIDEsIDIzNCwgMTE2LCA5OCwgMjMsIDEsIAotICAgIDIxNywgMTI2LCA5OCwgMjMsIDEsIDIyNiwgNywgOTgsIDIzLCAxLCAyNDEsIDE1OCwgOTgsIDIzLCAxLCA2MSwgOTgsIDIzLCAKLSAgICAxLCAyNTQsIDE0OCwgOTgsIDIzLCAxLCAxODYsIDk4LCAyMywgMSwgMjEzLCA4MCwgOTgsIDIzLCAxLCAyNDUsIDc2LCA5OCwgCi0gICAgMjMsIDEsIDc0LCA5OCwgMjMsIDEsIDIxMywgMjcsIDk4LCAyMywgMSwgMjEzLCAzOCwgOTgsIDIzLCAxLCA3NSwgOTgsIDIzLCAKLSAgICAxLCAyMTQsIDQ5LCA5OCwgMjMsIDEsIDIxNCwgNDYsIDk4LCAyMywgMSwgMjI3LCA5OSwgOTgsIDIzLCAxLCAyMTIsIDIzNSwgCi0gICAgOTgsIDIzLCAxLCA2OSwgOTgsIDIzLCAxLCAyMTMsIDI1MiwgOTgsIDIzLCAxLCAyMTQsIDYsIDk4LCAyMywgMSwgMjEzLCAKLSAgICAyMzUsIDk4LCAyMywgMSwgMjEyLCAyMDMsIDk4LCAyMywgMSwgMjQ1LCAyMiwgOTgsIDIzLCAxLCAyMTIsIDI1NSwgOTgsIAotICAgIDIzLCAxLCA3MiwgMTIwLCAyNTAsIDExMCwgNTIsIDEyMCwgMjI1LCAxMDgsIDUyLCAxMjAsIDIyOCwgMTYzLCA1MiwgMTIwLCAKLSAgICAyMzIsIDM3LCAxMjAsIDI1MSwgNjMsIDEzNCwgMTIwLCAyMTMsIDMxLCA1MiwgMTIwLCAyMTMsIDIwNCwgNTIsIDk4LCAyNDMsIAotICAgIDI0MywgMTc3LCAyMTQsIDIxNiwgOTgsIDEzMiwgNjgsIDk4LCAyMTUsIDEyNCwgNjgsIDk4LCA5NSwgNjgsIDk4LCAyNDYsIAotICAgIDU4LCA2OCwgOTgsIDgzLCAyMTksIDE2NiwgOTgsIDY3LCAyNDksIDIyOCwgMjM1LCAyMDEsIDI1NCwgMTAsIDI1NCwgMjksIAotICAgIDIzNSwgMjAxLCAyNTQsIDEwLCAyMjEsIDU3LCAyMzUsIDIwMSwgMjU0LCAxMCwgMjE3LCAxODksIDIyNywgMTEzLCAyMjMsIAotICAgIDIyNCwgMjUwLCA3OCwgMjIzLCAyMjQsIDI1MCwgNzgsIDU4LCA1NCwgNCwgMjUzLCA1OCwgNjEsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICAyNywgNzQsIDU4LCA1NCwgNCwgMjUzLCAzNiwgNzIsIDU4LCA1NCwgNCwgMjUzLCA0LCA3NSwgNTgsIDU0LCA0LCAyNTMsIAotICAgIDU0LCA2OSwgNTgsIDU0LCA0LCAyNTMsIDczLCAyNDgsIDE2NCwgNTgsIDU0LCA0LCAyNTMsIDIwLCAyNDgsIDQxLCA1OCwgCi0gICAgNTQsIDQsIDI1MywgNjAsIDI0NywgMjExLCA1OCwgNTQsIDQsIDI1MywgNTAsIDI0NywgOTksIDU4LCA1NCwgNCwgMjUzLCAKLSAgICAxNCwgMjQ2LCAzMywgNTgsIDU0LCA0LCAyNTMsIDgsIDIzNSwgMTM5LCA1OCwgNTQsIDQsIDI1MywgMTksIDIzNSwgMTI3LCAKLSAgICA1OCwgNTQsIDQsIDI1MywgMjksIDIzNSwgNzEsIDU4LCA1NCwgNCwgMjUzLCAwLCAyMzUsIDU0LCA1OCwgNTQsIDQsIDI1MiwgCi0gICAgMjQ0LCAxODEsIDU4LCA1NCwgNCwgMjUzLCAyMSwgMjM0LCAxODgsIDU4LCA1NCwgNCwgMjUyLCAyNTQsIDIzNCwgMTAxLCAKLSAgICA1OCwgNTQsIDQsIDI1MiwgMjUxLCAyMzQsIDM3LCA1OCwgNTQsIDQsIDI1MiwgMjQwLCAyMzMsIDIzOCwgNTgsIDU0LCA0LCAKLSAgICAyNTIsIDI0MSwgMTg4LCA1OCwgNTQsIDQsIDI1MywgNTEsIDIzMSwgMTU2LCA1OCwgNTQsIDQsIDI1MiwgMjQ4LCAyMzEsIAotICAgIDQyLCA1OCwgNTQsIDQsIDI1MywgNDksIDIzMCwgMjMxLCA1OCwgNTQsIDQsIDI1MywgNDEsIDIzMCwgMTcyLCA1OCwgNTQsIAotICAgIDQsIDI1MywgNjIsIDIwNSwgNTgsIDU0LCA0LCAyNTMsIDQwLCAyMjksIDE4NywgNTgsIDU0LCA0LCAyNTMsIDM0LCAyMjksIAotICAgIDY0LCA1OCwgNTQsIDQsIDI1MywgMTMsIDIyOCwgMTg1LCA1OCwgNTQsIDQsIDI1MywgMTAsIDIyOCwgOTIsIDU4LCA1NCwgNCwgCi0gICAgMjUzLCA2OSwgMTkzLCA1OCwgNTQsIDQsIDI1MiwgMjQ5LCAyMjYsIDk2LCA1OCwgNTQsIDQsIDI1MywgMjYsIDIyNSwgMjQwLCAKLSAgICA1OCwgNTQsIDQsIDI1MywgNTMsIDIyNSwgMTUwLCA1OCwgNTQsIDQsIDI1MywgMTUsIDIyNSwgMzUsIDU4LCA1NCwgNCwgCi0gICAgMjUzLCA0OCwgMjI0LCAyMzIsIDU4LCA1NCwgNCwgMjUyLCAyNDMsIDIyNCwgMjEzLCA1OCwgNTQsIDQsIDI1MywgNDMsIAotICAgIDIyNCwgMTk4LCA1OCwgNTQsIDQsIDI1MywgMzIsIDIyNCwgMTg3LCA1OCwgNTQsIDQsIDI1MywgNSwgMjAzLCA1OCwgNTQsIAotICAgIDQsIDI1MywgMzcsIDIyNCwgMjEsIDU4LCA1NCwgNCwgMjUzLCAxMiwgMjIzLCAxODgsIDU4LCA1NCwgNCwgMjUzLCA3MSwgCi0gICAgMjIzLCAxMTIsIDU4LCA1NCwgNCwgMjUzLCAzOCwgMjIzLCA1MSwgNTgsIDU0LCA0LCAyNTMsIDMzLCAyMjIsIDIwMiwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDU2LCAyMjIsIDEwMCwgNTgsIDU0LCA0LCAyNTMsIDI0LCAyMjAsIDExNywgNTgsIDU0LCA0LCAyNTMsIAotICAgIDUyLCAyMTksIDI0MiwgNTgsIDU0LCA0LCAyNTMsIDcsIDIxOSwgMjcsIDU4LCA1NCwgNCwgMjUzLCA2LCAyMTgsIDUyLCA1OCwgCi0gICAgNTQsIDQsIDI1MywgNjcsIDIxNywgMjI5LCA1OCwgNTQsIDQsIDI1MywgMjgsIDIxNywgNzEsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA2NSwgMTA4LCA1OCwgNTQsIDQsIDI1MiwgMjUyLCAyMTYsIDgyLCA1OCwgNTQsIDQsIDI1MywgMTEsIDIxNCwgNDksIDU4LCAKLSAgICA1NCwgNCwgMjUyLCAyNDYsIDIxNCwgNiwgNTgsIDU0LCA0LCAyNTMsIDI1LCAyMTMsIDIzNSwgNTgsIDU0LCA0LCAyNTMsIAotICAgIDIzLCAyMTMsIDIxNCwgNTgsIDU0LCA0LCAyNTMsIDQ3LCAyMTIsIDEwOSwgNTgsIDU0LCA0LCAyNTIsIDI0NywgMjEyLCA4NywgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDQ0LCAyMTIsIDE2LCA1OCwgNTQsIDQsIDI1MywgMzksIDI1NCwgMjM0LCA1OCwgNTQsIDQsIAotICAgIDI1MywgMjIsIDI1NCwgMjMzLCA1OCwgNTQsIDQsIDI1MiwgMjM3LCAyNTMsIDEwOCwgNTgsIDU0LCA0LCAyNTIsIDI1MCwgCi0gICAgMjQ2LCAxLCA1OCwgNTQsIDQsIDI1MiwgMjMzLCAyNDYsIDAsIDU4LCA1NCwgNCwgMjUzLCAxNywgMjI4LCAzMSwgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDM1LCAyMjUsIDM0LCA1OCwgNTQsIDQsIDI1MywgMywgMjI1LCAzNywgNTgsIDU0LCA0LCAyNTIsIDI0NSwgCi0gICAgMjI0LCA3NiwgNTgsIDU0LCA0LCAyNTMsIDMxLCAyMjQsIDc1LCA1OCwgNTQsIDQsIDI1MiwgMjUzLCAyMjMsIDExMSwgNTgsIAotICAgIDU0LCA0LCAyNTIsIDI1NSwgMjE4LCA1MCwgNTgsIDU0LCA0LCAyNTIsIDIzNSwgMjE2LCA0MywgNTgsIDU0LCA0LCAyNTIsIAotICAgIDIzMiwgMTA5LCA1OCwgNTQsIDE2LCAyNTMsIDQ2LCA1OCwgNTQsIDE2LCAyNTMsIDQ1LCA1OCwgNTQsIDE2LCAyNTMsIDQyLCAKLSAgICA1OCwgNTQsIDE2LCAyNTMsIDMwLCA1OCwgNTQsIDE2LCAyNTMsIDE4LCA1OCwgNTQsIDE2LCAyNTMsIDE2LCA1OCwgNTQsIAotICAgIDE2LCAyNTMsIDksIDU4LCA1NCwgMTYsIDI1MywgMiwgNTgsIDU0LCAxNiwgMjUzLCAxLCA1OCwgNTQsIDE2LCAyNTIsIDI0MiwgCi0gICAgNTgsIDU0LCAxNiwgMjUyLCAyMzksIDU4LCA1NCwgMTYsIDI1MiwgMjM4LCA1OCwgNTQsIDE2LCAyNTIsIDIzNiwgNTgsIDU0LCAKLSAgICAxNiwgMjUyLCAyMzQsIDU4LCA1NCwgMTAyLCAyNTIsIDIzMSwgMjMxLCAyNDgsIDU4LCA1NCwgMTAyLCAyNTIsIDIzMCwgCi0gICAgMjEzLCAyMDgsIDU4LCA1NCwgMTAyLCAyNTIsIDIyOSwgMjQ4LCAyNSwgNTgsIDU0LCAxMDIsIDI1MiwgMjI4LCAyNDUsIDU4LCAKLSAgICA1OCwgNTQsIDEwMiwgMjUyLCAyMjcsIDIzMSwgMjIyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjYsIDIxOSwgMTAxLCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAyMjUsIDI0NSwgNCwgNTgsIDU0LCAxMDIsIDI1MiwgMjI0LCAyMjQsIDQ1LCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAyMjMsIDIyMCwgMjQyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjIsIDI0MSwgMjIxLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjEsIAotICAgIDIxOSwgMjEyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjAsIDI1MSwgMTI2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTksIDI0OSwgCi0gICAgODQsIDU4LCA1NCwgMTAyLCAyNTIsIDIxOCwgMjUxLCA0NCwgNTgsIDU0LCAxMDIsIDI1MiwgMjE3LCAyMTMsIDI0MywgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMjE2LCAyNTIsIDU2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTUsIDIyNywgNzEsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDIxNCwgMjE5LCAxODYsIDU4LCA1NCwgMTAyLCAyNTIsIDIxMywgMjQ5LCAxMSwgNTgsIDU0LCAyMzAsIDIxMiwgCi0gICAgMjUyLCAyMTIsIDIzNCwgMjI5LCA1OCwgNTQsIDIzMCwgMjEyLCAyNTIsIDIxMSwgMjM0LCAyMzcsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDIxMCwgMjI3LCA4NCwgNTgsIDU0LCAxMDIsIDI1MiwgMjA5LCAyMTMsIDIyMSwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMjA4LCA1OCwgNTQsIDIzMCwgMjEyLCAyNTIsIDIwNywgMjUzLCAxODgsIDU4LCA1NCwgMjMwLCAyMTIsIDI1MiwgMjA2LCAKLSAgICAyMzEsIDExNiwgNTgsIDU0LCAxMDIsIDI1MiwgMjA1LCAyNTEsIDYyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDQsIDI0MiwgCi0gICAgMTQyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDMsIDU4LCA1NCwgMTAyLCAyNTIsIDIwMiwgMjEzLCAxOTksIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDIwMSwgNTgsIDU0LCAxMDIsIDI1MiwgMjAwLCA1OCwgNTQsIDEwMiwgMjUyLCAxOTksIDI0MCwgMjM1LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxOTgsIDU4LCA1NCwgMTAyLCAyNTIsIDE5NywgNTgsIDU0LCAxMDIsIDI1MiwgMTk2LCA1OCwgNTQsIDIzMCwgCi0gICAgMjEyLCAyNTIsIDE5NCwgMjE2LCA1NiwgNTgsIDU0LCAxMDIsIDI1MiwgMTkzLCA1OCwgNTQsIDEwMiwgMjUyLCAxOTIsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDE5MSwgMjQ5LCAxODcsIDU4LCA1NCwgMTAyLCAyNTIsIDE5MCwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMTg5LCA1OCwgNTQsIDEwMiwgMjUyLCAxODgsIDI0MywgNjksIDU4LCA1NCwgMTAyLCAyNTIsIDE4NywgMjUzLCAxNzUsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDE4NiwgNTgsIDU0LCAxMDIsIDI1MiwgMTg1LCA1OCwgNTQsIDEwMiwgMjUyLCAxODQsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE4MywgNTgsIDU0LCAxMDIsIDI1MiwgMTgyLCA1OCwgNTQsIDEwMiwgMjUyLCAxODEsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDE4MCwgNTgsIDU0LCAxMDIsIDI1MiwgMTc5LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzgsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDE3NywgMjMwLCAyMDQsIDU4LCA1NCwgMTAyLCAyNTIsIDE3NiwgNTgsIDU0LCAxMDIsIDI1MiwgMTc1LCAyMTYsIDE5MywgCi0gICAgNTgsIDU0LCAxMDIsIDI1MiwgMTc0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzMsIDU4LCA1NCwgMTAyLCAyNTIsIDE3MiwgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMTcxLCA1OCwgNTQsIDEwMiwgMjUyLCAxNzAsIDU4LCA1NCwgMTAyLCAyNTIsIDE2OSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTY4LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjcsIDU4LCA1NCwgMTAyLCAyNTIsIDE2NiwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMTY1LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjQsIDU4LCA1NCwgMTAyLCAyNTIsIDE2MywgMjQxLCAxOTUsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE0MiwgMjQzLCAyNTMsIDU4LCA1NCwgMTAyLCAyNTIsIDEzOSwgMjUyLCAzNiwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMTM0LCAyMTksIDE5MywgNTgsIDU0LCAxMDIsIDI1MiwgMTMzLCA2OCwgNTgsIDU0LCAxMDIsIDI1MiwgMTMyLCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxMzEsIDIxOCwgMTgxLCA1OCwgNTQsIDEwMiwgMjUyLCAxMzAsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDEyOSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI4LCAyMTMsIDIzOSwgMjUwLCA3NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI3LCAKLSAgICAyNTAsIDc1LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjYsIDI1MCwgNzYsIDI0MywgMjI1LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjUsIAotICAgIDIxMywgMjQxLCA1OCwgNTQsIDEwMiwgMjUyLCAxMjQsIDU4LCA1NCwgMTAyLCAyNTIsIDEyMywgNTgsIDU0LCAyMzAsIDIxMiwgCi0gICAgMjUyLCAxMjIsIDI0NywgMTUwLCA1OCwgNTQsIDEwMiwgMjUyLCAxMjEsIDU4LCA1NCwgMTAyLCAyNTIsIDEyMCwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTE4LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTcsIDU4LCA1NCwgMTAyLCAyNTIsIDExNiwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMTE1LCAyNDgsIDEwNCwgNTgsIDU0LCAxMDIsIDI1MiwgMTE0LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTMsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDExMiwgNTgsIDU0LCAxMDIsIDI1MiwgMTExLCA1OCwgNTQsIDEwMiwgMjUyLCAxMTAsIDU4LCA1NCwgMTAyLCAKLSAgICAyMTQsIDE2MywgMjUyLCAxOTUsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNjIsIDU4LCA1NCwgMTAyLCAyMTQsIAotICAgIDE2MywgMjUyLCAxNjEsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNjAsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgCi0gICAgMjUyLCAxNTksIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTgsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAKLSAgICAxNTcsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTYsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTUsIAotICAgIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTQsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTMsIDU4LCA1NCwgCi0gICAgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTIsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTEsIDU4LCA1NCwgMTAyLCAKLSAgICAyMTQsIDE2MywgMjUyLCAxNTAsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDksIDU4LCA1NCwgMTAyLCAyMTQsIAotICAgIDE2MywgMjUyLCAxNDgsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDcsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgCi0gICAgMjUyLCAxNDYsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDUsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAKLSAgICAxNDQsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDMsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDEsIAotICAgIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDAsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxMzgsIDU4LCA1NCwgCi0gICAgMTAyLCAyMTQsIDE2MywgMjUyLCAxMzcsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxMzYsIDU4LCA1NCwgMTAyLCAKLSAgICAyMTQsIDE2MywgMjUyLCAxMzUsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxMTksIDU4LCA1NCwgMTAyLCAyMTQsIAotICAgIDE2MywgMjUyLCAxMDksIDI1NCwgMTQxLCAyMTMsIDE5NiwgMjIxLCA1OCwgMjMyLCAyNDIsIDI1NCwgMTQxLCAyMTMsIDE5NiwgCi0gICAgMjIxLCA1OCwgMjQ3LCA3NCwgMjU0LCAxNDEsIDI1MCwgNjYsIDc3LCAyNTQsIDE0MSwgNTAsIDExNiwgMjU0LCAxNDEsIDUwLCAKLSAgICAxMDksIDI1NCwgMTQxLCA1MCwgMTY2LCAyNTQsIDE0MSwgNTAsIDE2MywgMjU0LCAxNDEsIDUwLCAxODAsIDI1NCwgMTQxLCAKLSAgICA1MCwgMTg5LCAyNTQsIDE0MSwgNTAsIDE5OCwgMjU0LCAxNDEsIDUwLCAxOTUsIDI1NCwgMTQxLCA1MCwgMjAwLCAyNTQsIAotICAgIDE0MSwgNTAsIDIxNywgMjAwLCAyNTQsIDE0MSwgNTAsIDIxNiwgMzgsIDI1NCwgMTQxLCA1MCwgMjE3LCAxMTUsIDI1NCwgCi0gICAgMTQxLCA1MCwgMjQzLCAyNDAsIDI1NCwgMTQxLCA1MCwgMjQ0LCA4MywgMjU0LCAxNDEsIDUwLCAyMjAsIDM5LCAyNTQsIAotICAgIDE0MSwgNTAsIDIyMSwgMzcsIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNDEsIDI1NCwgMTQxLCA1MCwgMjI5LCAyNiwgMjU0LCAKLSAgICAxNDEsIDUwLCAxMjIsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDExNywgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMTMzLCAKLSAgICAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAyNDMsIDIzNywgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjQ0LCA1MCwgMjQwLCAKLSAgICAyMDAsIDI1NCwgMTQxLCA1MCwgMjIwLCA1MywgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjIxLCA0MywgMjQwLCAyMDAsIAotICAgIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNTAsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDIyOSwgMzEsIDI0MCwgMjAwLCAyNTQsIAotICAgIDE0MSwgNTAsIDEyMiwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMTE3LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAxMzMsIAotICAgIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDI0MywgMjM3LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDQsIDUwLCAyMTcsIAotICAgIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjAsIDUzLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjEsIDQzLCAyMTcsIDEwMCwgCi0gICAgMjU0LCAxNDEsIDUwLCAyNDUsIDE1MCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjI5LCAzMSwgMjE3LCAxMDAsIDI1NCwgCi0gICAgMTQxLCA1MCwgMjE3LCAyMDEsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIxNiwgMzksIDIxNywgMTAwLCAyNTQsIDE0MSwgCi0gICAgNTAsIDIxNywgMTE2LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDMsIDI0MSwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgCi0gICAgMjQ0LCA4NCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjIwLCA0MCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjIxLCAKLSAgICAzOCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNDIsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyOSwgMjcsIAotICAgIDIxNywgMTAwLCAyNTQsIDE0MSwgMjEzLCAyNTUsIDI1MiwgNDgsIDIxNSwgMTQ0LCAyNTQsIDE0MSwgMjEzLCAyNTUsIDI0NCwgCi0gICAgNjEsIDIxOSwgNCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyMjIsIDk1LCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjE3LCAKLSAgICAxMjIsIDIxOSwgNCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNDMsIDIzMCwgMjE5LCA0LCAyNTQsIDE0MSwgMjQ2LCAzNiwgCi0gICAgMjMxLCAxNTUsIDI0NCwgNjEsIDIxOSwgNCwgMjU0LCAxNDEsIDIzMiwgMjI4LCAyMzEsIDE1NSwgMjQ0LCA2MSwgMjE5LCA0LCAKLSAgICAyNTQsIDE0MSwgMjMxLCAxNTUsIDIyMiwgOTUsIDIxOSwgNCwgMjU0LCAxNDEsIDIzMSwgMTU1LCAyMTcsIDEyMiwgMjE5LCAKLSAgICA0LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIDIyNCwgMTY2LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIAotICAgIDI0MiwgOSwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyNDYsIDU0LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAKLSAgICAxODAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgODMsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIAotICAgIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTcsIDEwMCwgMjUsIDI1NCwgMTY3LCAyNTMsIAotICAgIDExMCwgMjQ0LCA4NCwgMjE3LCAxMDAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxOCwgMTgsIDI1LCAKLSAgICAyNTQsIDE2NywgMjUzLCAxMTAsIDIxNywgMjAxLCAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDg0LCAKLSAgICAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIDI0MCwgMjAxLCAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIAotICAgIDI1MywgMTEwLCAyNDQsIDUwLCAyNDAsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyMTcsIAotICAgIDEwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjE3LCAxMDEsIDIxOCwgMTgsIDI1LCAKLSAgICAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDIxNywgMjAxLCAKLSAgICAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDg0LCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgCi0gICAgMTEwLCAxMjIsIDI0MCwgMjAxLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyNDAsIDIwMSwgCi0gICAgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyMTcsIDEwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAKLSAgICAyNTMsIDExMCwgMjE3LCAyMDEsIDIxNywgMTAxLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDg0LCAKLSAgICAyMTcsIDEwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjE3LCAyMDEsIDIzMCwgMjM0LCAyNSwgMjU0LCAKLSAgICAxNjcsIDI0MSwgMTg5LCAxMjIsIDIyNSwgMTY0LCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMTYsIDI1LCAyNTQsIDE2NywgCi0gICAgMjQxLCAxODYsIDExNiwgMjUsIDI1NCwgMTY3LCAyNDUsIDY3LCAxMDksIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDEwOSwgCi0gICAgMjUsIDI1NCwgMTY3LCAyNDksIDgsIDExNywgMjQ2LCA1MywgMjUsIDI1NCwgMTY3LCAyNDUsIDY3LCAxMTcsIDI0NiwgNTMsIAotICAgIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDE4MCwgMjUsIDI1NCwgMTY3LCAyMTYsIDE2MSwgMjE3LCAyMDAsIDI1LCAyNTQsIAotICAgIDE2NywgMjE2LCAxNjEsIDIxNywgMjAxLCAyNTQsIDUwLCAxNywgMjUsIDI1NCwgMTY3LCAyNDEsIDE4NiwgMjE3LCAyMDAsIAotICAgIDI1LCAyNTQsIDE2NywgMjMxLCAxMDgsIDIxNywgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAyMTcsIDIwMCwgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjE3LCAxMTUsIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDI0NCwgODMsIDI1LCAyNTQsIAotICAgIDE2NywgMjE2LCAxNjEsIDI0NCwgODQsIDI1NCwgNTAsIDE3LCAyNSwgMjU0LCAxNjcsIDI0MSwgMTg2LCAyNDQsIDgzLCAyNSwgCi0gICAgMjU0LCAxNjcsIDIxNywgMTM0LCAyNDQsIDgzLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMjIsIDI0MCwgMjAwLCAyNSwgCi0gICAgMjU0LCAxNjcsIDIxNywgMTM0LCAxMzMsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDI0NSwgNjcsIDI0NCwgNTAsIDI0MCwgCi0gICAgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAyNDQsIDUwLCAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgCi0gICAgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjUwLCAxNTksIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIzMCwgNCwgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDEyMiwgMjE3LCAxMDAsIAotICAgIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDI0NCwgNTAsIDIxNywgMTAwLCAyNSwgMjU0LCAxNjcsIDI0OCwgOCwgMjQ0LCA1MCwgCi0gICAgMjMwLCAyMzQsIDI1LCAyNTQsIDE2NywgMjE5LCA1OCwgMjQ0LCA4NCwgMjMwLCAyMzQsIDI1LCAxMjIsIDE1MSwgNTIsIDI1LCAKLSAgICAxMjIsIDE1MSwgNSwgMjU0LCA1MCwgMTcsIDI1LCAxMTcsIDIxNywgMTIwLCA1MiwgMjUsIDEzMywgMjI0LCAxNjUsIDUyLCAKLSAgICAyNSwgMjEzLCAzNiwgNTIsIDI1LCAyMTgsIDE5LCA1MiwgMjUsIDI0NiwgNTUsIDUyLCAyNSwgMjI3LCAxMTAsIDUyLCAyNSwgCi0gICAgMTE3LCAyMjcsIDEwOSwgNTIsIDI1LCAxMzMsIDIyNywgMTA5LCA1MiwgMjUsIDI0MywgMjM3LCAyMjcsIDEwOSwgNTIsIDI1LCAKLSAgICAyNDQsIDUwLCAyMjcsIDEwOSwgNTIsIDI1LCAyMzEsIDEwMiwgNTIsIDI1LCAyMzMsIDE3OSwgMjUyLCA0OCwgNTIsIDI1LCAKLSAgICAyMzIsIDIyMywgNTIsIDI1LCAyMjYsIDI1NSwgNTIsIDI1LCAyMTMsIDE0NywgNTIsIDI1LCAyNTMsIDE1OCwgNTIsIDI1LCAKLSAgICAyNTMsIDE3MSwgNTIsIDI1LCAyNDIsIDEyMCwgNTIsIDI1LCAyMTYsIDE0NCwgMjUyLCA0OCwgNTIsIDI1LCAyMTIsIDgwLCAKLSAgICA1MiwgMjIzLCAxMDAsIDIyMSwgMzQsIDUyLCAyMjMsIDEwMCwgMjE1LCAxNTUsIDUyLCAyMjMsIDEwMCwgMjIxLCA2MiwgNTIsIAotICAgIDIyMywgMTAwLCAyMjEsIDMyLCA1MiwgMjIzLCAxMDAsIDI0NywgMTY1LCAyMjEsIDMyLCA1MiwgMjIzLCAxMDAsIDIyMCwgCi0gICAgOTQsIDUyLCAyMjMsIDEwMCwgMjQ4LCA0LCA1MiwgMjIzLCAxMDAsIDIyNCwgMTUxLCA1MiwgMjIzLCAxMDAsIDIyMSwgNTAsIAotICAgIDUyLCAyMjMsIDEwMCwgMjQ2LCAxNSwgNTIsIDIyMywgMTAwLCAyNTMsIDE1MywgNTIsIDIyMywgMTAwLCAyNTAsIDEwNSwgCi0gICAgNTIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjYsIDg4LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI1LCAxNTgsIDI0MSwgCi0gICAgMjE5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjE3LCAyNTIsIDI0MSwgMjE5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUwLCAKLSAgICAxNzksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTAsIDM4LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjEzLCAyMDgsIDIyNiwgCi0gICAgMTksIDI0NywgMTQzLCA1LCAyNDEsIDE5NSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0MywgNjEsIDIyNiwgMTksIDI0NywgCi0gICAgMTQzLCA1LCAyMTcsIDcwLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgNjgsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIDk1LCAKLSAgICAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjIwLCAyMDksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDksIDE4MSwgMjI2LCAxOSwgCi0gICAgMjQ3LCAxNDMsIDUsIDIzMSwgMjQ3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjMxLCAxOTksIDIyNiwgMTksIDI0NywgMTQzLCAKLSAgICA1LCAyMjIsIDEzNCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIzMywgOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MSwgCi0gICAgMTEzLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUwLCAxNjMsIDIyNSwgMTY3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ3LCAKLSAgICA4NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0OSwgMTYxLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjIwLCAxNSwgMjI2LCAKLSAgICAxOSwgMjQ3LCAxNDMsIDUsIDI0OSwgMTYyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCAyMzksIDIyNiwgMTksIDI0NywgCi0gICAgMTQzLCA1LCAyMjAsIDE5NiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0MCwgMjM1LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgCi0gICAgMjQxLCAxNjMsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIDQxLCAyMzMsIDYwLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgCi0gICAgMjUwLCAxNTYsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjQsIDQ1LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ1LCAxODYsIAotICAgIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDYsIDYxLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjE2LCA2OSwgMjI2LCAxOSwgCi0gICAgMjQ3LCAxNDMsIDUsIDI1MSwgMjQyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI1LCAxNjgsIDIxNiwgMTkzLCAyMjYsIDE5LCAKLSAgICAyNDcsIDE0MywgNSwgMjE0LCAxNDAsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjYsIDE0NiwgMjI2LCAxOSwgMjQ3LCAxNDMsIAotICAgIDUsIDIyMywgOTIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMzIsIDI1MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNiwgCi0gICAgMjM5LCAyNTIsIDEwMSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NCwgMTcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDIsIAotICAgIDExNSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxOSwgNTksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAzLCAyNTMsIDg0LCAKLSAgICAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjE0LCAxNiwgMjUyLCA2NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDM3LCAyMjcsIAotICAgIDExMiwgOTAsIDIzMiwgMTIwLCAxLCA2MSwgMjMyLCAxMjAsIDEsIDc0LCAyMzIsIDEyMCwgMSwgMjUzLCA3NCwgMjMyLCAKLSAgICAxMjAsIDEsIDI1MSwgMTk2LCAyMzIsIDEyMCwgMSwgMjQzLCAxNzcsIDIzMiwgMTIwLCAxLCAyNDksIDMsIDIzMiwgMTIwLCAKLSAgICAxLCA3MiwgMjMyLCAxMjAsIDEsIDIxNCwgODIsIDIzMiwgMTIwLCAxLCAyMTIsIDE1MiwgMjMyLCAxMjAsIDEsIDIxNywgCi0gICAgMTYzLCAyMzIsIDEyMCwgMSwgMjM1LCAxNDIsIDIzMiwgMTIwLCAxLCAyMzUsIDI3LCAyMzIsIDEyMCwgMSwgMjI0LCAyNDAsIAotICAgIDIzMiwgMTIwLCAxLCAxNTAsIDIzMiwgMTIwLCAxLCAxODMsIDIzMiwgMTIwLCAxLCAyMDQsIDIzMiwgMTIwLCAxLCAyMzAsIAotICAgIDIzNSwgMjMyLCAxMjAsIDEsIDIyOCwgMTk5LCAyMzIsIDEyMCwgMSwgNjksIDIzMiwgMTIwLCAxLCAyMjYsIDIyOSwgMjMyLCAKLSAgICAxMjAsIDEsIDIzNCwgNTYsIDIzMiwgMTIwLCAxLCAxNDksIDIzMiwgMTIwLCAxLCAxOTcsIDIzMiwgMTIwLCAxLCAyMTgsIAotICAgIDk5LCAyMzIsIDEyMCwgMSwgMjE2LCAxMTgsIDIzMiwgMTIwLCAxLCAyNTQsIDMyLCAyMzIsIDEyMCwgMSwgMjQ1LCAxMDgsIAotICAgIDIzMiwgMTIwLCAxLCAyNDIsIDQxLCAyMzIsIDEyMCwgMSwgMjEzLCAxNjYsIDI1MCwgMTY5LCAxLCA2MSwgMjUwLCAxNjksIAotICAgIDEsIDIyNiwgMjE1LCAyNTAsIDE2OSwgMSwgMjQ5LCAzLCAyNTAsIDE2OSwgMSwgMTUwLCAyNTAsIDE2OSwgMSwgMjE1LCA5MCwgCi0gICAgMjUwLCAxNjksIDEsIDE0OSwgMjUwLCAxNjksIDEsIDIzMywgODYsIDI1MCwgMTY5LCAxLCAyNTQsIDIzNCwgMjUwLCAxNjksIAotICAgIDEsIDIyNCwgMjQwLCAyNTAsIDE2OSwgMSwgMjUzLCA3NCwgMjUwLCAxNjksIDEsIDE4MywgMjUwLCAxNjksIDEsIDc1LCAKLSAgICAyNTAsIDE2OSwgMSwgMjQ4LCAxNjYsIDI1MCwgMTY5LCAxLCAyMTgsIDk5LCAyNTAsIDE2OSwgMSwgMjIxLCAyNiwgMjUwLCAKLSAgICAxNjksIDEsIDIyMSwgMjUsIDI1MCwgMTY5LCAxLCAxOTcsIDI1MCwgMTY5LCAxLCAyNTAsIDI1MSwgMjUwLCAxNjksIDEsIAotICAgIDY5LCAyNTAsIDE2OSwgMSwgMjI4LCAxOTksIDI1MCwgMTY5LCAxLCAyMTMsIDE2NiwgMjUwLCAxNjksIDEsIDIwNCwgMjUwLCAKLSAgICAxNjksIDEsIDIxNiwgMTE3LCAyNTAsIDE2OSwgMSwgMjI2LCAyMjksIDI1MCwgMTY5LCAxLCAyMTksIDE1OCwgMjUwLCAxNjksIAotICAgIDEsIDcyLCAyNTAsIDE2OSwgMSwgNzQsIDI1MCwgMTY5LCAxLCAyMTUsIDg3LCAyNTAsIDE2OSwgMSwgMjM1LCAyNywgMjUwLCAKLSAgICAxNjksIDEsIDIzNSwgMTgsIDI1MCwgMTY5LCAxLCAyMjksIDIzMCwgMjUwLCAxNjksIDEsIDIxNSwgOTIsIDI1MCwgMTY5LCAKLSAgICAxLCAyNDMsIDE3NywgMjUwLCAxNjksIDEsIDI0MywgMTEyLCAyNTAsIDE2OSwgMSwgMjE5LCAxMDcsIDI1MCwgMTY5LCAxLCAKLSAgICAyMTksIDEwNiwgMjUwLCAxNjksIDEsIDIyOSwgMTYxLCAyNTAsIDE2OSwgMSwgMjM2LCAyOCwgMjUwLCAxNjksIDEsIDI1MCwgCi0gICAgMjUwLCAyNTAsIDE2OSwgMSwgMjE2LCAxMTgsIDI1MCwgMTY5LCAxLCAyMTUsIDg5LCAyNTAsIDE2OSwgMSwgMjIzLCA4MiwgCi0gICAgMjUwLCAxNjksIDEsIDIzMSwgMTkyLCAyNTAsIDE2OSwgMSwgMjMxLCAxOTEsIDI1MCwgMTY5LCAxLCAyMzEsIDE5MCwgMjUwLCAKLSAgICAxNjksIDEsIDIzMSwgMTg5LCAyNTAsIDE2OSwgMSwgMjMzLCA4NSwgMjUwLCAxNjksIDEsIDI0NSwgMTkwLCAyNTAsIDE2OSwgCi0gICAgMSwgMjE1LCA4OCwgNTMsIDMyLCAxLCA2MSwgNTMsIDMyLCAxLCAyNTEsIDI1MSwgNTMsIDMyLCAxLCAyMzQsIDE4OCwgNTMsIAotICAgIDMyLCAxLCAyNDgsIDQxLCA1MywgMzIsIDEsIDc0LCA1MywgMzIsIDEsIDIxNCwgMjMyLCA1MywgMzIsIDEsIDIxMiwgODcsIAotICAgIDUzLCAzMiwgMSwgMjQxLCAyMjIsIDUzLCAzMiwgMSwgMjE3LCAxNDgsIDUzLCAzMiwgMSwgNzIsIDUzLCAzMiwgMSwgMTgxLCAKLSAgICA1MywgMzIsIDEsIDI0NSwgMTMxLCA1MywgMzIsIDEsIDI0NSwgMTE3LCA1MywgMzIsIDEsIDI0NSwgMTA4LCA1MywgMzIsIDEsIAotICAgIDI0NSwgNDAsIDUzLCAzMiwgMSwgNzUsIDUzLCAzMiwgMSwgMjI2LCA5NiwgNTMsIDMyLCAxLCAyMjAsIDI0MywgNTMsIDMyLCAKLSAgICAxLCAyMzMsIDIzOCwgNTMsIDMyLCAxLCAyNDUsIDU1LCA1MywgMzIsIDEsIDI0NSwgNDUsIDUzLCAzMiwgMSwgMjE3LCAyMjksIAotICAgIDUzLCAzMiwgMSwgNjksIDUzLCAzMiwgMSwgMjQ1LCAxMzQsIDUzLCAzMiwgMSwgMjI2LCAxMiwgNTMsIDMyLCAxLCAyMzQsIAotICAgIDEyNSwgNTMsIDMyLCAxLCAyNDUsIDE1OSwgNTMsIDMyLCAxLCAyNDUsIDQ3LCA1MywgMzIsIDEsIDI1MCwgNjcsIDUzLCAzMiwgCi0gICAgMSwgMjM2LCAyOCwgNTMsIDMyLCAxLCAyMTUsIDkyLCA1MywgMzIsIDIyOCwgNTQsIDExNiwgNTMsIDMyLCAyMjgsIDU0LCAKLSAgICAxODAsIDUzLCAzMiwgMjI4LCA1NCwgMjE3LCAyMDAsIDUzLCAzMiwgMjI4LCA1NCwgMjQ0LCA4MywgMjQyLCAxMjksIDEsIAotICAgIDI1NCwgMTExLCAyNDIsIDEyOSwgMSwgMjUyLCA4MiwgMjQyLCAxMjksIDEsIDI0MiwgMTg3LCAyNDIsIDEyOSwgMSwgMjQ4LCAKLSAgICAxNDgsIDI0MiwgMTI5LCAxLCAyNTQsIDEwNywgMjQyLCAxMjksIDEsIDIyNCwgMjIzLCAyNDIsIDEyOSwgMSwgMjM1LCAxNTMsIAotICAgIDI0MiwgMTI5LCAxLCAyNDIsIDIwLCAyNDIsIDEyOSwgMSwgMjE3LCAxMTEsIDI0MiwgMTI5LCAxLCAyNDUsIDE0MCwgMjQyLCAKLSAgICAxMjksIDEsIDIzMywgMjExLCAyNDIsIDEyOSwgMSwgMjMzLCAxMzYsIDI0MiwgMTI5LCAxLCAyMzEsIDI0MiwgMjQyLCAxMjksIAotICAgIDEsIDIzMCwgNiwgMjQyLCAxMjksIDEsIDIzNSwgMTIwLCAyNDIsIDEyOSwgMSwgMjE1LCAxMDcsIDI0MiwgMTI5LCAxLCAKLSAgICAyMjYsIDE5NiwgMjQyLCAxMjksIDEsIDIyOSwgMjYsIDI0MiwgMTI5LCAxLCAyMjQsIDU2LCAyNDIsIDEyOSwgMSwgMjIyLCAKLSAgICAxMzYsIDI0MiwgMTI5LCAxLCAyMTcsIDIxMiwgMjQyLCAxMjksIDEsIDIxMywgMjE5LCAyNDIsIDEyOSwgMSwgMjQ0LCAxNDYsIAotICAgIDI0MiwgMTI5LCAxLCAyMzYsIDMyLCAyNDIsIDEyOSwgMSwgMjQwLCAxOTEsIDI0MiwgMTI5LCAxLCAyMjcsIDcsIDI0MiwgCi0gICAgMTI5LCAxLCAyMjksIDMxLCAyNDAsIDIwMCwgMjE1LCAxNzksIDEsIDI1NCwgNTYsIDIxNSwgMTc5LCAxLCAyNTEsIDIwMywgCi0gICAgMjE1LCAxNzksIDEsIDI0MywgODQsIDIxNSwgMTc5LCAxLCAyMzQsIDEzOCwgMjE1LCAxNzksIDEsIDI0OCwgNSwgMjE1LCAKLSAgICAxNzksIDEsIDI0MSwgNTQsIDIxNSwgMTc5LCAxLCAyMTMsIDIxNCwgMjE1LCAxNzksIDEsIDIxMiwgNzgsIDIxNSwgMTc5LCAKLSAgICAxLCAyNDAsIDIyOCwgMjE1LCAxNzksIDEsIDIxNywgMTgzLCAyMTUsIDE3OSwgMSwgMjEyLCAyMjQsIDIxNSwgMTc5LCAxLCAKLSAgICAyMzQsIDI1NCwgMjE1LCAxNzksIDEsIDIyMCwgMjAwLCAyMTUsIDE3OSwgMSwgMjMzLCAxMjIsIDIxNSwgMTc5LCAxLCAyMzEsIAotICAgIDEyOSwgMjE1LCAxNzksIDEsIDI0NywgMjI5LCAyMTUsIDE3OSwgMSwgMjI4LCA1MCwgMjE1LCAxNzksIDEsIDIxMiwgOCwgCi0gICAgMjE1LCAxNzksIDEsIDIyMiwgMTYzLCAyMTUsIDE3OSwgMSwgMjU0LCAxMDMsIDIxNSwgMTc5LCAxLCAyMjUsIDM1LCAyMTUsIAotICAgIDE3OSwgMSwgMjIyLCAxOTQsIDIxNSwgMTc5LCAxLCAyMjQsIDE4MCwgMjE1LCAxNzksIDEsIDIyNCwgMzYsIDIxNSwgMTc5LCAKLSAgICAxLCAyMTcsIDE1MiwgMjE1LCAxNzksIDEsIDI0MiwgMjIwLCAyMTUsIDE3OSwgMSwgMTA4LCAyMTUsIDE3OSwgMSwgNzIsIAotICAgIDIxNSwgMTc5LCAxLCA2OSwgMjE1LCAxNzksIDEsIDIxOSwgMTE3LCAyMTUsIDE3OSwgMjEzLCAxOTYsIDI0NywgMTI0LCA1MywgCi0gICAgMjI2LCA0NSwgNSwgNjEsIDUzLCAyMjYsIDQ1LCA1LCA3MiwgNTMsIDIyNiwgNDUsIDUsIDY5LCA1MywgMjI2LCA0NSwgNSwgCi0gICAgMTgxLCA1MywgMjI2LCA0NSwgNSwgMjMzLCAyMzgsIDUzLCAyMjYsIDQ1LCA1LCAyNDMsIDExMCwgNTMsIDIyNiwgNDUsIDUsIAotICAgIDI0MiwgOTIsIDUzLCAyMjYsIDQ1LCA1LCAyMTMsIDE1MywgNTMsIDIyNiwgNDUsIDUsIDI1MCwgMjE5LCA1MywgMjI2LCA0NSwgCi0gICAgNSwgMjM1LCAxMzksIDUzLCAyMjYsIDQ1LCA1LCAyMzUsIDExMCwgNTMsIDIyNiwgNDUsIDUsIDIxOCwgNTIsIDUzLCAyMjYsIAotICAgIDQ1LCA1LCAyMTYsIDgyLCA1MywgMjI2LCA0NSwgNSwgMjQ4LCAxNjQsIDUzLCAyMjYsIDQ1LCA1LCAyNDcsIDIxMSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDI0NiwgMzMsIDUzLCAyMjYsIDQ1LCA1LCAyMTcsIDE2MSwgNTMsIDIyNiwgNDUsIDUsIDE5MywgNTMsIAotICAgIDIyNiwgNDUsIDUsIDI1MiwgMTA3LCA1MywgMjI2LCA0NSwgNSwgMjQ0LCAxNjQsIDUzLCAyMjYsIDQ1LCA1LCAyMDUsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyMjgsIDkyLCA1MywgMjI2LCA0NSwgNSwgMTg4LCA1MywgMjI2LCA0NSwgNSwgMjMxLCA0MiwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIzMCwgMTcyLCA1MywgMjI2LCA0NSwgNSwgMTg2LCA1MywgMjI2LCA0NSwgNSwgMjE1LCAxLCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjE0LCAxNTQsIDUzLCAyMjYsIDQ1LCA1LCAyMDMsIDUzLCAyMjYsIDQ1LCA1LCAyMjMsIDUxLCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjMzLCAxNTcsIDUzLCAyMjYsIDQ1LCA1LCAyMjIsIDIwMiwgNTMsIDIyNiwgNDUsIDUsIDIxMiwgMTA5LCAKLSAgICA1MywgMjI2LCA0NSwgNSwgMjIxLCAyNCwgNTMsIDIyNiwgNDUsIDUsIDIxOSwgMTU3LCA1MywgMjI2LCA0NSwgNSwgMTU5LCAKLSAgICA1MywgMjI2LCA0NSwgNSwgMjUzLCAxMDIsIDUzLCAyMjYsIDQ1LCA1LCAyNTMsIDEwMSwgNTMsIDIyNiwgNDUsIDUsIDI1MywgCi0gICAgMTAwLCA1MywgMjI2LCA0NSwgNSwgMjEzLCAxMzAsIDUzLCAyMjYsIDQ1LCA1LCAyNDgsIDE0NSwgNTMsIDIyNiwgNDUsIDUsIAotICAgIDI0OCwgMTQ0LCA1MywgMjI2LCA0NSwgNSwgMjUyLCA4OCwgNTMsIDIyNiwgNDUsIDUsIDI1MSwgMTQsIDUzLCAyMjYsIDQ1LCAKLSAgICAyMTMsIDE5NiwgMjQ3LCAxMjQsIDUzLCAyMjYsIDQ1LCA1MCwgMTE2LCA1MywgMjI2LCA0NSwgNTAsIDEwOSwgNTMsIDIyNiwgCi0gICAgNDUsIDUwLCAyMTcsIDIwMCwgNTMsIDIyNiwgNDUsIDUwLCAyMTYsIDM4LCA1MywgMjI2LCA0NSwgNTAsIDI0MCwgMjAwLCAKLSAgICAxNzEsIDYsIDEsIDE4NCwgNzIsIDE3MSwgNiwgMSwgMTg0LCA3NCwgMTcxLCA2LCAxLCAxODQsIDYxLCAxNzEsIDYsIDEsIAotICAgIDE4NCwgMjU0LCAxMTQsIDE3MSwgNiwgMSwgMTg0LCA3NSwgMTcxLCA2LCAxLCAxODQsIDIyNywgNDksIDE3MSwgNiwgMSwgCi0gICAgMjIwLCAxNzUsIDcyLCAxNzEsIDYsIDEsIDIyMCwgMTc1LCA3NCwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNjEsIDE3MSwgNiwgCi0gICAgMSwgMjIwLCAxNzUsIDI1NCwgMTE0LCAxNzEsIDYsIDEsIDIyMCwgMTc1LCA3NSwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgMjI3LCAKLSAgICA0OSwgMTcxLCA2LCAxLCAyNTMsIDgzLCAxNzEsIDYsIDEsIDIyNiwgMjQwLCAxNzEsIDYsIDEsIDIxMywgMTgzLCAxNzEsIDYsIAotICAgIDEsIDIxMywgMzUsIDE3MSwgNiwgMSwgMjQyLCA0MSwgMTcxLCA2LCAxLCAyMjYsIDg2LCAxNzEsIDYsIDEsIDI1MSwgMjQyLCAKLSAgICAxNzEsIDYsIDEsIDIxNywgMjE5LCAxNzEsIDYsIDEsIDI0OCwgMjgsIDE3MSwgNiwgMSwgMjUwLCA2NCwgMTcxLCA2LCAxLCAKLSAgICAyMzUsIDEyNSwgMTcxLCA2LCAxLCAyMzQsIDE5NSwgMTcxLCA2LCAxLCAyNDMsIDU5LCAxNzEsIDYsIDEsIDI0NSwgMTU5LCAKLSAgICAxNzEsIDYsIDEsIDIxNCwgMjI3LCAxNzEsIDYsIDEsIDI0NSwgMjUsIDE3MSwgNiwgMSwgMjE3LCAxNDcsIDE3MSwgNiwgMSwgCi0gICAgMjQ1LCA0NSwgMTcxLCA2LCAxLCAyMTIsIDg1LCAxNzEsIDYsIDEsIDI0NSwgNDAsIDE3MSwgNiwgMSwgMjEyLCA2NiwgMTcxLCAKLSAgICA2LCAxLCAyNDUsIDU1LCAxNzEsIDYsIDEsIDI0NSwgMTMxLCAxNzEsIDYsIDEsIDI0NSwgMTE3LCAxNzEsIDYsIDEsIDI0NSwgCi0gICAgMTA4LCAxNzEsIDYsIDEsIDI0NSwgOTYsIDE3MSwgNiwgMSwgMjI3LCA4NSwgMTcxLCA2LCAxLCAyNDUsIDUsIDE3MSwgMywgCi0gICAgMSwgMTg0LCA3MiwgMTcxLCAzLCAxLCAxODQsIDc0LCAxNzEsIDMsIDEsIDE4NCwgNjEsIDE3MSwgMywgMSwgMTg0LCAyNTQsIAotICAgIDExNCwgMTcxLCAzLCAxLCAxODQsIDc1LCAxNzEsIDMsIDEsIDE4NCwgMjI3LCA0OSwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgCi0gICAgNzIsIDE3MSwgMywgMSwgMjIwLCAxNzUsIDc0LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA2MSwgMTcxLCAzLCAxLCAyMjAsIAotICAgIDE3NSwgMjU0LCAxMTQsIDE3MSwgMywgMSwgMjIwLCAxNzUsIDc1LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCAyMjcsIDQ5LCAKLSAgICAxNzEsIDMsIDEsIDI1MywgODMsIDE3MSwgMywgMSwgMjI2LCAyNDAsIDE3MSwgMywgMSwgMjEzLCAxODMsIDE3MSwgMywgMSwgCi0gICAgMjEzLCAzNSwgMTcxLCAzLCAxLCAyNDIsIDQxLCAxNzEsIDMsIDEsIDIyNiwgODYsIDE3MSwgMywgMSwgMjUxLCAyNDIsIAotICAgIDE3MSwgMywgMSwgMjE3LCAyMTksIDE3MSwgMywgMSwgMjQ4LCAyOCwgMTcxLCAzLCAxLCAyNTAsIDY0LCAxNzEsIDMsIDEsIAotICAgIDIzNSwgMTI1LCAxNzEsIDMsIDEsIDIzNCwgMTk1LCAxNzEsIDMsIDEsIDI0MywgNTksIDE3MSwgMywgMSwgMjQ1LCAxNTksIAotICAgIDE3MSwgMywgMSwgMjE0LCAyMjcsIDE3MSwgMywgMSwgMjQ1LCAyNSwgMTcxLCAzLCAxLCAyMTcsIDE0NywgMTcxLCAzLCAxLCAKLSAgICAyNDUsIDQ1LCAxNzEsIDMsIDEsIDIxMiwgODUsIDE3MSwgMywgMSwgMjQ1LCA0MCwgMTcxLCAzLCAxLCAyMTIsIDY2LCAxNzEsIAotICAgIDMsIDEsIDI0NSwgNTUsIDE3MSwgMywgMSwgMjQ1LCAxMzEsIDE3MSwgMywgMSwgMjQ1LCAxMTcsIDE3MSwgMywgMSwgMjQ1LCAKLSAgICAxMDgsIDE3MSwgMywgMSwgMjQ1LCA5NiwgMTcxLCAzLCAxLCAyMjcsIDg1LCAxNzEsIDMsIDEsIDI0NSwgNSwgMjIwLCAyNDksIAotICAgIDEsIDIyNiwgODQsIDIyMCwgMjQ5LCAxLCAyMTYsIDIxOCwgMjIwLCAyNDksIDEsIDIzNCwgMTAwLCAyMjAsIDI0OSwgMSwgCi0gICAgMjQ0LCAxMTYsIDIyMCwgMjQ5LCAxLCAyMTcsIDEyNSwgMjIwLCAyNDksIDEsIDIxOSwgMjQyLCAyMjAsIDI0OSwgMSwgMjE4LCAKLSAgICAyMTQsIDIyMCwgMjQ5LCAxLCAyNDksIDI1NCwgMjIwLCAyNDksIDEsIDIxMywgMzcsIDIyMCwgMjQ5LCAxLCAyNDAsIDE5OSwgCi0gICAgMjIwLCAyNDksIDEsIDI1MSwgMTgzLCAyMjAsIDI0OSwgMSwgMjQ4LCA0MCwgMjIwLCAyNDksIDEsIDI0MywgOTYsIDIyMCwgCi0gICAgMjQ5LCAxLCAyMTQsIDEwNCwgMjIwLCAyNDksIDEsIDIxNywgMTI5LCAyMjAsIDI0OSwgMSwgMjEyLCAxNCwgMjIwLCAyNDksIAotICAgIDEsIDIzMSwgMTU0LCAyMjAsIDI0OSwgMSwgMjM1LCA1MiwgMjIwLCAyNDksIDEsIDIxMywgMjEyLCAyMjAsIDI0OSwgMSwgCi0gICAgMjQyLCAyOSwgMjIwLCAyNDksIDEsIDIzMiwgMTk1LCAyMjAsIDI0OSwgMSwgMjMxLCAyLCAyMjAsIDI0OSwgMSwgMjM2LCAKLSAgICAzNSwgMjIwLCAyNDksIDEsIDI0NSwgMTU4LCAyMjAsIDI0OSwgMSwgMjUzLCAxNDYsIDIyMCwgMjQ5LCAxLCAyNTQsIDE1MiwgCi0gICAgMjIwLCAyNDksIDEsIDIyNywgNjIsIDIyMCwgMjQ5LCAxLCAyMTMsIDE5OSwgMjIwLCAyNDksIDEsIDIyNiwgMjU0LCAyMjAsIAotICAgIDI0OSwgMSwgMjU0LCAxMTQsIDIyMCwgMjQ5LCAxLCAyMjMsIDEwOSwgMjIwLCAyNDksIDEsIDIyOCwgNTAsIDIyMCwgMjQ5LCAKLSAgICAxLCAyNDUsIDE3MywgMjIwLCAyNDksIDEsIDI1NCwgMTE5LCAyMjAsIDI0OSwgMSwgMjQwLCAxMDQsIDIyMCwgMjQ5LCAxLCAKLSAgICAyMTUsIDEzNCwgMjIwLCAyNDksIDEsIDIyNywgMTE4LCAyMjAsIDI0OSwgMSwgMjI3LCA0MiwgMjIwLCAyNDksIDEsIDIyNywgCi0gICAgODQsIDIyMCwgMjQ5LCAxLCAyNTMsIDg2LCAyMjAsIDI0OSwgMSwgMjUzLCAxODksIDIyMCwgMjQ5LCAxLCAyMjcsIDI0LCAKLSAgICAyMjAsIDI0OSwgMSwgMjU0LCAxMDAsIDIyMCwgMjQ5LCAxLCAyNDUsIDQ5LCAyMjAsIDI0OSwgMSwgMjUzLCAxNjgsIDIyMCwgCi0gICAgMjQ5LCAxLCAyNDUsIDE4MywgMjIwLCAyNDksIDEsIDI0MCwgMTEwLCAyMjAsIDI0OSwgMSwgMjEzLCA0LCAyMjcsIDksIDEsIAotICAgIDI1NCwgNzgsIDIyNywgOSwgMSwgMjUyLCAxMDcsIDIyNywgOSwgMSwgMjE4LCA1MiwgMjI3LCA5LCAxLCAyMzUsIDEzOSwgCi0gICAgMjI3LCA5LCAxLCAyMTMsIDE1MywgMjI3LCA5LCAxLCAyMzQsIDEzOCwgMjI3LCA5LCAxLCAyNDgsIDI3LCAyMjcsIDksIDEsIAotICAgIDIwMywgMjI3LCA5LCAxLCAyMjIsIDIwMiwgMjI3LCA5LCAxLCAyMjAsIDIwNiwgMjI3LCA5LCAxLCAyNDcsIDIzMiwgMjI3LCAKLSAgICA5LCAxLCAyNTAsIDE0OCwgMjI3LCA5LCAxLCAyNDMsIDExMCwgMjI3LCA5LCAxLCAyNDQsIDE2NCwgMjI3LCA5LCAxLCAyMjQsIAotICAgIDIzMCwgMjI3LCA5LCAxLCAyMzUsIDEzLCAyMjcsIDksIDEsIDIzMywgMTUyLCAyMjcsIDksIDEsIDIzMSwgMTMsIDIyNywgOSwgCi0gICAgMSwgMjI4LCAzNSwgMjI3LCA5LCAxLCAyMTQsIDE0LCAyMjcsIDksIDEsIDE1OSwgMjI3LCA5LCAxLCAxODYsIDIyNywgOSwgCi0gICAgMSwgNjEsIDIyNywgOSwgMSwgNzQsIDIyNywgOSwgMSwgNzIsIDIyNywgOSwgMSwgNzUsIDIyNywgOSwgMSwgNjksIDIyNywgCi0gICAgOSwgMSwgMjU0LCAyMzIsIDIyNywgOSwgMSwgMjQ1LCAxNjUsIDIyNywgOSwgMSwgMjI3LCA0OSwgMjI3LCA5LCAyMSwgMjEyLCAKLSAgICA3OSwgMjI3LCA5LCAyMSwgMTE2LCAyMjcsIDksIDIxLCAxMDksIDIyNywgOSwgMjEsIDE2NiwgMjI3LCA5LCAyMSwgMTYzLCAKLSAgICAyMjcsIDksIDIxLCAxODAsIDIyNywgOSwgMjEsIDE4OSwgMjI3LCA5LCAyMSwgMTk4LCAyMjcsIDksIDIxLCAxOTUsIDIyNywgCi0gICAgOSwgMjEsIDIwMCwgMjQ5LCAxMCwgNCwgNjEsIDI0OSwgMTAsIDQsIDc0LCAyNDksIDEwLCA0LCA3MiwgMjQ5LCAxMCwgNCwgCi0gICAgNzUsIDI0OSwgMTAsIDQsIDY5LCAyNDksIDEwLCA0LCAyMzUsIDEzOSwgMjQ5LCAxMCwgNCwgMjM1LCA3MSwgMjQ5LCAxMCwgCi0gICAgNCwgMTgxLCAyNDksIDEwLCA0LCAyMzQsIDE4OCwgMjQ5LCAxMCwgNCwgMjM0LCAxMDEsIDI0OSwgMTAsIDQsIDIzNCwgMzcsIAotICAgIDI0OSwgMTAsIDQsIDIzMywgMjM4LCAyNDksIDEwLCA0LCAyMzMsIDE1NywgMjQ5LCAxMCwgNCwgMjMzLCA4MiwgMjQ5LCAxMCwgCi0gICAgNCwgMjMzLCAxMywgMjQ5LCAxMCwgNCwgMjMyLCAyMDgsIDI0OSwgMTAsIDQsIDIzMiwgMTU2LCAyNDksIDEwLCA0LCAxODgsIAotICAgIDI0OSwgMTAsIDQsIDIzMSwgMTU2LCAyNDksIDEwLCA0LCAyMzEsIDQyLCAyNDksIDEwLCA0LCAyMzAsIDIzMSwgMjQ5LCAxMCwgCi0gICAgNCwgMjMwLCAxNzIsIDI0OSwgMTAsIDQsIDIwNSwgMjQ5LCAxMCwgNCwgMjI5LCAxODcsIDI0OSwgMTAsIDQsIDIyOSwgNjQsIAotICAgIDI0OSwgMTAsIDQsIDIyOCwgMTg1LCAyNDksIDEwLCA0LCAyMjgsIDkyLCAyNDksIDEwLCA0LCAxOTMsIDI0OSwgMTAsIDQsIAotICAgIDIyNiwgOTYsIDI0OSwgMTAsIDQsIDIyNSwgMjQwLCAyNDksIDEwLCA0LCAyMjUsIDE1MCwgMjQ5LCAxMCwgNCwgMjI1LCAzNSwgCi0gICAgMjQ5LCAxMCwgNCwgMjAzLCAyNDksIDEwLCA0LCAyMjQsIDIxLCAyNDksIDEwLCA0LCAyMjMsIDE4OCwgMjQ5LCAxMCwgNCwgCi0gICAgMjIzLCAxMTIsIDI0OSwgMTAsIDQsIDIyMywgNTEsIDI0OSwgMTAsIDQsIDIyMiwgMjAyLCAyNDksIDEwLCA0LCAyMjIsIAotICAgIDEwMCwgMjQ5LCAxMCwgNCwgMjIwLCAxMTcsIDI0OSwgMTAsIDQsIDIxOSwgMjQyLCAyNDksIDEwLCA0LCAyMTksIDI3LCAKLSAgICAyNDksIDEwLCA0LCAyMTgsIDUyLCAyNDksIDEwLCA0LCAyMTcsIDIyOSwgMjQ5LCAxMCwgNCwgMjE3LCA3MSwgMjQ5LCAxMCwgCi0gICAgNCwgMTA4LCAyNDksIDEwLCA0LCAyMTYsIDgyLCAyNDksIDEwLCA0LCAyMTQsIDQ5LCAyNDksIDEwLCA0LCAyMTQsIDYsIAotICAgIDI0OSwgMTAsIDQsIDIxMywgMjM1LCAyNDksIDEwLCA0LCAyMTMsIDIxNCwgMjQ5LCAxMCwgNCwgMjEzLCAxNTMsIDI0OSwgCi0gICAgMTAsIDQsIDIxMywgMTUwLCAyNDksIDEwLCA0LCAyMTIsIDEwOSwgMjQ5LCAxMCwgNCwgMjEyLCAxNiwgMjM1LCAyNTMsIAotICAgIDI1MywgMTk3LCAxLCAyNTQsIDc2LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDI1MSwgMjAyLCAyMzUsIDI1MywgMjUzLCAKLSAgICAxOTcsIDEsIDI0MiwgMTc3LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDI0OCwgMTMzLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIAotICAgIDI0MSwgMjIyLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIxNCwgMTQsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjEyLCA5MCwgCi0gICAgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNDEsIDE4MCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTcsIDE3OSwgMjM1LCAKLSAgICAyNTMsIDI1MywgMTk3LCAxLCAyMTIsIDIyMywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMzQsIDIzMCwgMjM1LCAyNTMsIAotICAgIDI1MywgMTk3LCAxLCAyMzMsIDExNywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMzEsIDEyOSwgMjM1LCAyNTMsIDI1MywgCi0gICAgMTk3LCAxLCAyMjgsIDUwLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyMiwgMTY0LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIAotICAgIDI1MywgNzgsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjI2LCA5NiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjIsIDE5MywgCi0gICAgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjQsIDE3OSwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjMsIDIxOSwgMjM1LCAKLSAgICAyNTMsIDI1MywgMTk3LCAxLCAyMjAsIDIwMCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTcsIDI0MywgMjM1LCAyNTMsIAotICAgIDI1MywgMTk3LCAyMjIsIDkyLCA1MiwgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMTE2LCAyMzUsIDI1MywgMjUzLCAxOTcsIAotICAgIDUwLCAxMDksIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDE2NiwgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMjE3LCAyMDAsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDIxNiwgMzgsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDEyMiwgMjQwLCAyMDAsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDEyMiwgMjE3LCAxMDAsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDIxNywgMjAxLCAKLSAgICAyMTcsIDEwMCwgMjI1LCAyNTEsIDEsIDI1NCwgNzQsIDIyNSwgMjUxLCAxLCAyNTEsIDIwNSwgMjI1LCAyNTEsIDEsIDI0MywgCi0gICAgODUsIDIyNSwgMjUxLCAxLCAyNDgsIDcsIDIyNSwgMjUxLCAxLCAyNDEsIDIyMiwgMjI1LCAyNTEsIDEsIDIxNCwgMjEsIAotICAgIDIyNSwgMjUxLCAxLCAyMTIsIDEwMywgMjI1LCAyNTEsIDEsIDI0MSwgMTgyLCAyMjUsIDI1MSwgMSwgMjE3LCAxODMsIDIyNSwgCi0gICAgMjUxLCAxLCAyMTIsIDIyNCwgMjI1LCAyNTEsIDEsIDIzNCwgMjU0LCAyMjUsIDI1MSwgMSwgMjMzLCAxMjMsIDIyNSwgMjUxLCAKLSAgICAxLCAyMzEsIDEyOSwgMjI1LCAyNTEsIDEsIDIyOCwgNTAsIDIyNSwgMjUxLCAxLCAyMjEsIDY0LCAyMjUsIDI1MSwgMSwgCi0gICAgMjU0LCAxMDMsIDIyNSwgMjUxLCAxLCAyMjYsIDk2LCAyMjUsIDI1MSwgMSwgMjIyLCAxOTQsIDIyNSwgMjUxLCAxLCAyMjQsIAotICAgIDE4NCwgMjI1LCAyNTEsIDEsIDIyMywgOTEsIDIyNSwgMjUxLCAxLCAyMjAsIDIwMCwgMjI1LCAyNTEsIDEsIDIxNywgMjQ4LCAKLSAgICAyMjUsIDI1MSwgNTAsIDExNiwgMjI1LCAyNTEsIDUwLCAyMTcsIDIwMCwgMjI1LCAyNTEsIDUwLCAyMTYsIDM4LCAyMjUsIAotICAgIDI1MSwgNTAsIDEyMiwgMjQwLCAyMDAsIDIyNSwgMjUxLCA1MCwgMTA5LCAyMjUsIDI1MSwgNTAsIDE2NiwgMjI1LCAyNTEsIAotICAgIDIxMywgMTk2LCAyMjEsIDU3LCAyMzIsIDExOSwgMSwgNjEsIDIzMiwgMTE5LCAxLCAyNTMsIDc0LCAyMzIsIDExOSwgMSwgCi0gICAgMjQzLCAxNzcsIDIzMiwgMTE5LCAxLCAyNDksIDMsIDIzMiwgMTE5LCAxLCA3NCwgMjMyLCAxMTksIDEsIDIxNSwgNzksIAotICAgIDIzMiwgMTE5LCAxLCA3MiwgMjMyLCAxMTksIDEsIDIxMywgMTA1LCAyMzIsIDExOSwgMSwgMjM1LCAyNywgMjMyLCAxMTksIAotICAgIDEsIDE1MCwgMjMyLCAxMTksIDEsIDE4MywgMjMyLCAxMTksIDEsIDIwNCwgMjMyLCAxMTksIDEsIDc1LCAyMzIsIDExOSwgMSwgCi0gICAgMTQ5LCAyMzIsIDExOSwgMSwgMjE5LCAxNTgsIDIzMiwgMTE5LCAxLCAyMTgsIDk5LCAyMzIsIDExOSwgMSwgNjksIDIzMiwgCi0gICAgMTE5LCAxLCAyNDQsIDIzMCwgMjMyLCAxMTksIDEsIDIyNCwgMjQwLCAyMzIsIDExOSwgMSwgMTk3LCAyMzIsIDExOSwgMSwgCi0gICAgMjE2LCAxMTgsIDIzMiwgMTE5LCAxLCAyNTQsIDMyLCAyMzIsIDExOSwgMSwgMjQ1LCAxMDgsIDIzMiwgMTE5LCAxLCAyMzIsIAotICAgIDEyMSwgMjMyLCAxMTksIDEsIDIyOCwgMTk5LCAyMzIsIDExOSwgMSwgMjUwLCAyNTIsIDIzMiwgMTE5LCAyMTYsIDE4MCwgCi0gICAgNzcsIDIzNCwgMTI2LCAxLCA2MSwgMjM0LCAxMjYsIDMwLCA1LCA3MiwgMjM0LCAxMjYsIDMwLCA1LCA2OSwgMjM0LCAxMjYsIAotICAgIDMwLCA1LCAxNjEsIDE0OSwgMjM0LCAxMjYsIDMwLCA1LCA3NCwgMjM0LCAxMjYsIDMwLCA1LCA3NSwgMjM0LCAxMjYsIDMwLCAKLSAgICAyMzMsIDQ3LCA3NywgMjM0LCAxMjYsIDUsIDUxLCAyMjMsIDEzMSwgNTUsIDIzNCwgMTI2LCA1LCAyNTMsIDI0MiwgMjM0LCAKLSAgICAxMjYsIDUsIDIxNCwgMTI4LCAyMzQsIDEyNiwgMSwgMTgxLCAyMzQsIDEyNiwgMSwgMjM0LCAxMzgsIDIzNCwgMTI2LCAxLCAKLSAgICAyNDMsIDExMCwgMjM0LCAxMjYsIDEsIDI0MiwgMjI1LCAyMzQsIDEyNiwgMSwgMjUwLCAyMTksIDIzNCwgMTI2LCAxLCAyNTAsIAotICAgIDkyLCAyMzQsIDEyNiwgMSwgMjM1LCAxMzksIDIzNCwgMTI2LCAxLCAyMjgsIDIzLCAyMzQsIDEyNiwgMSwgMjE2LCAxMTUsIAotICAgIDIzNCwgMTI2LCAxLCAyMTYsIDEwNSwgMjM0LCAxMjYsIDEsIDI0OCwgODYsIDIzNCwgMTI2LCAxLCAyNDgsIDcwLCAyMzQsIAotICAgIDEyNiwgMSwgMjI4LCAxOTgsIDIzNCwgMTI2LCAxLCAyMTgsIDUyLCAyMzQsIDEyNiwgMSwgMjE3LCAxNjEsIDIzNCwgMTI2LCAKLSAgICAxLCAyNDgsIDE2NCwgMjM0LCAxMjYsIDEsIDI0NywgMjMyLCAyMzQsIDEyNiwgMSwgMjA1LCAyMzQsIDEyNiwgMSwgMTkzLCAKLSAgICAyMzQsIDEyNiwgMSwgMjI2LCAyMywgMjM0LCAxMjYsIDEsIDI1MiwgMTA3LCAyMzQsIDEyNiwgMSwgMjUxLCAxOTUsIDIzNCwgCi0gICAgMTI2LCAxLCAxODgsIDIzNCwgMTI2LCAxLCAxODYsIDIzNCwgMTI2LCAxLCAyMDMsIDIzNCwgMTI2LCAxLCAyMzMsIDE1NywgCi0gICAgMjM0LCAxMjYsIDEsIDIxNSwgMSwgMjM0LCAxMjYsIDEsIDIyMSwgMjQsIDIzNCwgMTI2LCAxLCAyMTksIDE1NywgMjM0LCAKLSAgICAxMjYsIDEsIDIyMiwgMjAyLCAyMzQsIDEyNiwgMSwgMjEyLCAxMDksIDIzNCwgMTI2LCAxLCAxNTksIDIzNCwgMTI2LCAxLCAKLSAgICAyMzQsIDU1LCAyMzQsIDEyNiwgMSwgMjE2LCA4NywgMjM0LCAxMjYsIDUsIDI1MiwgNjAsIDQ5LCAyMzQsIDEyNiwgNSwgCi0gICAgMjUwLCAxNTQsIDIzNCwgMTI2LCA1LCA2MiwgNTUsIDIzNCwgMTI2LCAyMTQsIDEzMywgMjM0LCAxMjYsIDIxLCAxMTYsIAotICAgIDIzNCwgMTI2LCAyMSwgMTA5LCAyMzQsIDEyNiwgMjEsIDE2NiwgMjM0LCAxMjYsIDIxLCAxNjMsIDIzNCwgMTI2LCA1MCwgCi0gICAgMjE3LCAyMDAsIDIzNCwgMTI2LCA1MCwgMjE2LCAzOCwgMjM0LCAxMjYsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMzQsIDEyNiwgCi0gICAgNTAsIDEyMiwgMjE3LCAxMDAsIDIzNCwgMTI2LCAyMjUsIDI3LCAyNDcsIDc0LCAyMzQsIDEyNiwgMjI1LCAyNywgMywgMjQ5LCAKLSAgICAyMjgsIDIzNCwgMTI2LCAyMjUsIDI3LCAyNDksIDIyOCwgMjM0LCAxMjYsIDIyNSwgMjcsIDI0OSwgNzcsIDEzNCwgMjM0LCAKLSAgICAxMjYsIDIyNSwgMjcsIDIzMSwgMjQzLCAyMzQsIDEyNiwgMjI1LCAyNywgMjMyLCAxNzAsIDIzNCwgMTI2LCAyMjUsIDI3LCAKLSAgICAyNDgsIDEyMywgMjM0LCAxMjYsIDIyNSwgMjcsIDUxLCAyNDgsIDEyMywgMjM0LCAxMjYsIDIyNSwgMjcsIDIzMiwgMjM2LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDEsIDIyMiwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjMzLCAxMTcsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0MSwgMTgwLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMzEsIDEyOSwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjI0LCAxNzksIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNCwgMTQsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMCwgMjAwLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjMsIDIxOSwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjUxLCAyMDIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMjQzLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjIsIDE0MiwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjM0LCAyMzAsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyOCwgNTAsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzNCwgMTIyLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjIsIDE5MywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxNjQsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0NCwgMTIzLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNTQsIDc4LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNTMsIDc3LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDcsIDIzMCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQyLCAxNzcsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0OCwgMTMzLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDIsIDIxNCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjE3LCAxNzksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxMiwgODksIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0NywgMjI3LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTIsIDIyMywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjE3LCAxNTAsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTMxLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCA1MCwgMTE2LCA1MywgCi0gICAgMjE5LCAyMTUsIDI1MywgMjA4LCA1MCwgMjQ0LCA4MywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMTI4LCAyMzUsIDIzNSwgCi0gICAgMjUzLCA4OCwgMSwgNjEsIDI1MywgODgsIDEsIDI1NCwgMjMyLCAyNTMsIDg4LCAxLCAyNTMsIDI0MCwgMjUzLCA4OCwgMSwgCi0gICAgMjU0LCAxOTEsIDI1MywgODgsIDEsIDI1NCwgMzIsIDI1MywgODgsIDEsIDI1NCwgMTkyLCAyNTMsIDg4LCAxLCAyNTQsIAotICAgIDE0OCwgMjUzLCA4OCwgMSwgMjU0LCAxNDQsIDI1MywgODgsIDEsIDc0LCAyNTMsIDg4LCAxLCAyNDUsIDE2NSwgMjUzLCA4OCwgCi0gICAgMSwgNzUsIDI1MywgODgsIDEsIDIyNywgNDksIDI1MywgODgsIDEsIDcyLCAyNTMsIDg4LCAxLCAyMzYsIDI4LCAyNTMsIDg4LCAKLSAgICAxLCA2OSwgMjUzLCA4OCwgMSwgMjE1LCA5MiwgMjUzLCA4OCwgMSwgMjM0LCAxODgsIDI1MywgODgsIDEsIDIxMywgMTUwLCAKLSAgICAyNTMsIDg4LCAxLCAyMTMsIDExNiwgMjUzLCA4OCwgMSwgMjEzLCAxMjUsIDI1MywgODgsIDEsIDI0MywgMzgsIDI1MywgODgsIAotICAgIDEsIDI0MywgMCwgMjUzLCA4OCwgMSwgMjQyLCAyMTIsIDI1MywgODgsIDEsIDI1MCwgMTI0LCAyNTMsIDg4LCAxLCAyMzUsIAotICAgIDEyNywgMjUzLCA4OCwgMSwgMjE3LCAyMjksIDI1MywgODgsIDEsIDIxNywgMTQ4LCAyNTMsIDg4LCAxLCAyNDgsIDQxLCAKLSAgICAyNTMsIDg4LCAxLCAyNDcsIDIyNSwgMjUzLCA4OCwgMSwgMjE2LCAxMTIsIDI1MywgODgsIDEsIDIyNiwgOTYsIDI1MywgODgsIAotICAgIDEsIDI0NCwgMTIzLCAyNTMsIDg4LCAxLCAyNTEsIDI1MSwgMjUzLCA4OCwgMSwgMjUxLCAxOTIsIDI1MywgODgsIDEsIDIyOSwgCi0gICAgMTQ4LCAyNTMsIDg4LCAxLCAyMjksIDcwLCAyNTMsIDg4LCAxLCAyMjksIDcxLCAyNTMsIDg4LCAxLCAyMjksIDE4NywgMjUzLCAKLSAgICA4OCwgMSwgMjI4LCAxNywgMjUzLCA4OCwgMSwgMjI4LCAxOTcsIDI1MywgODgsIDEsIDIzMSwgMTU2LCAyNTMsIDg4LCAxLCAKLSAgICAyNDEsIDEwMiwgMjUzLCA4OCwgMSwgMjEyLCAxNTksIDI1MywgODgsIDEsIDIxMywgMzgsIDI1MywgODgsIDEsIDIxNCwgCi0gICAgMjMyLCAyNTMsIDg4LCAxLCAyMjQsIDIxLCAyNTMsIDg4LCAxLCAyMzMsIDgyLCAyNTMsIDg4LCAxLCAyMjIsIDEwMCwgMjUzLCAKLSAgICA4OCwgMSwgMjEyLCA4NywgMjUzLCA4OCwgMSwgMjIwLCAyNDMsIDI1MywgODgsIDEsIDIxMiwgNjcsIDI1MywgODgsIDEsIAotICAgIDIyMCwgMTI0LCAyNTMsIDg4LCAxLCAyMTksIDEyOSwgMjUzLCA4OCwgMSwgMjQxLCAyMjIsIDI1MywgODgsIDI1NCwgMTgxLCAKLSAgICA3NywgMjE3LCAzMiwgMTE3LCAxNzYsIDExMCwgMTIyLCA2MiwgMjI1LCAyNiwgMywgMTE3LCAxNzYsIDExMCwgMTIyLCA2MiwgCi0gICAgMjI1LCAyNiwgMjMzLCAxMDgsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIDIyNSwgMjYsIDIzMywgMTA4LCAxMjIsIDYyLCAKLSAgICAxMTAsIDExNywgMTc2LCAyMjUsIDI2LCAyMzMsIDEwOCwgMTE3LCAyMjMsIDEyOSwgMTEwLCAxMjIsIDIyMywgMTMxLCAyMjUsIAotICAgIDI2LCAyMzMsIDEwOCwgMTIyLCAyMjMsIDEzMSwgMTEwLCAxMTcsIDIyMywgMTI5LCAyMjUsIDI2LCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxMjYsIDEsIDI1NCwgNzYsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjUxLCAyMDIsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgCi0gICAgMjQyLCAxNzcsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjQ4LCAxMzMsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjQxLCAKLSAgICAyMjIsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjE0LCAxNCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTIsIDkwLCAyMzUsIAotICAgIDIxNSwgMjI2LCAxMjYsIDEsIDI0MSwgMTgwLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxNywgMTc5LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDEsIDIxMiwgMjIzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIzNCwgMjMwLCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxMjYsIDEsIDIzMywgMTE3LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIzMSwgMTI5LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIAotICAgIDIyOCwgNTAsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjIyLCAxNjQsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjUzLCA3OCwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjYsIDk2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyMiwgMTkzLCAyMzUsIAotICAgIDIxNSwgMjI2LCAxMjYsIDEsIDIyNCwgMTc5LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyMywgMjE5LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDEsIDIyMCwgMjAwLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxNywgMjQzLCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxMjYsIDUwLCAxMTYsIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDEwOSwgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTY2LCAKLSAgICAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxNjMsIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDIxNywgMjAwLCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDUwLCAyMTYsIDM4LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDUwLCAxMjIsIDIxNywgMTAwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI1NCwgNzYsIDIzNSwgMjE1LCAKLSAgICAyMjYsIDE5OCwgMSwgMjUxLCAyMDIsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjQyLCAxNzcsIDIzNSwgMjE1LCAyMjYsIAotICAgIDE5OCwgMSwgMjQ4LCAxMzMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjQxLCAyMjIsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgCi0gICAgMjE0LCAxMywgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTIsIDkwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MSwgMTgwLCAKLSAgICAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIxNywgMTc5LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIxMiwgMjIzLCAyMzUsIAotICAgIDIxNSwgMjI2LCAxOTgsIDEsIDIzNCwgMjMwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIzMywgMTE3LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDEsIDIzMSwgMTI4LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIyOCwgNTAsIDIzNSwgMjE1LCAyMjYsIAotICAgIDE5OCwgMSwgMjIyLCAxNjQsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjI2LCA5NiwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAKLSAgICAyMjIsIDE5MywgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMjAsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTcsIAotICAgIDI0MywgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTE2LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAxMDksIDIzNSwgMjE1LCAKLSAgICAyMjYsIDE5OCwgNTAsIDE2NiwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTYzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAKLSAgICAyMTcsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMjE2LCAzOCwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTIyLCAKLSAgICAyNDAsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTIyLCAyMTcsIDEwMCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgNjEsIAotICAgIDUzLCAxODUsIDEsIDIxMywgMjgsIDYxLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE0OCwgNTMsIDE4NSwgMSwgMjI3LCAKLSAgICAxNiwgNzIsIDUzLCAxODUsIDEsIDIxMywgMjgsIDcyLCA1MywgMTg1LCAxLCAyMTMsIDI4LCA3NCwgNTMsIDE4NSwgMSwgCi0gICAgMjI3LCAxNiwgNzUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgOTksIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgOTksIAotICAgIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTg1LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE4NSwgNTMsIDE4NSwgMSwgCi0gICAgMjI3LCAxNiwgMjU0LCAxNDcsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTQ3LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAKLSAgICAyNTQsIDEyMSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxMjEsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTQyLCAKLSAgICA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE0MiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxNjAsIDUzLCAxODUsIDEsIAotICAgIDIxMywgMjgsIDI1NCwgMTYwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0NiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjQ0LCAyMzYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NCwgMjM2LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIDgzLCAKLSAgICA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDgzLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDEyOSwgNTMsIDE4NSwgMSwgCi0gICAgMjEzLCAyOCwgMjU0LCAxMjksIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTQwLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAKLSAgICAyNTQsIDE0MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA5OCwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjI3LCA5OCwgNTMsIAotICAgIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCA4NiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCA4NiwgNTMsIDE4NSwgMSwgMjI3LCAKLSAgICAxNiwgMjU0LCAxMzksIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgMTE5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIAotICAgIDExNywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAzMiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMzcsIDUzLCAKLSAgICAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTM3LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDkwLCA1MywgMTg1LCAxLCAyMTMsIAotICAgIDI4LCAyNDUsIDkwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDEwNSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjQ1LCAKLSAgICAxMDUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgNzcsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NSwgNzcsIDUzLCAxODUsIAotICAgIDEsIDIxMywgMjgsIDI1NCwgMjQsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgOTYsIDUzLCAxODUsIDEsIDIxMywgMjgsIAotICAgIDI1NCwgMTM2LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDcwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDQxLCA1MywgCi0gICAgMTg1LCAxLCAyMjcsIDE2LCAyNDAsIDEwNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAxNzEsIDUzLCAxODUsIDEsIAotICAgIDIxMywgMjgsIDI0NSwgMTcxLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIDIxNSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgCi0gICAgMjUzLCAyMTUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIzNSwgMTc5LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyMzUsIDE3OSwgCi0gICAgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCAyNSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjI3LCAyNSwgNTMsIDE4NSwgMSwgCi0gICAgMjI3LCAxNiwgMjUzLCAyMTEsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1MywgMjExLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAKLSAgICAyNTQsIDEzNSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAxNTIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTMzLCAKLSAgICA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIDE0NiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCAxNDYsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI0NSwgNDAsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NSwgNDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgCi0gICAgMTIyLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDEyMiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMzAsIDUzLCAKLSAgICAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTMwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDgsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDI1MiwgNDUsIDIyMywgMzgsIDIxLCAxMTYsIDIyMywgMzgsIDIxLCAxMDksIDIyMywgMzgsIDIxLCAxNjYsIDIyMywgCi0gICAgMzgsIDIxLCAxNjMsIDIyMywgMzgsIDIxLCAxODAsIDIyMywgMzgsIDIxLCAxODksIDIyMywgMzgsIDIxLCAxOTgsIDIyMywgCi0gICAgMzgsIDIxLCAxOTUsIDIyMywgMzgsIDIxLCAyMDAsIDIyMywgMzgsIDUwLCAyMTcsIDIwMCwgMjIzLCAzOCwgNTAsIDIxNiwgCi0gICAgMzgsIDIyMywgMzgsIDUwLCAyMTcsIDExNSwgMjIzLCAzOCwgNTAsIDI0MywgMjQwLCAyMjMsIDM4LCA1MCwgMjQ0LCA4MywgCi0gICAgMjIzLCAzOCwgNTAsIDIyMCwgMzksIDIyMywgMzgsIDUwLCAyMjEsIDM3LCAyMjMsIDM4LCA1MCwgMjQ1LCAxNDEsIDIyMywgCi0gICAgMzgsIDUwLCAyMjksIDI2LCAyMjMsIDM4LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDExNywgMjQwLCAyMDAsIAotICAgIDIyMywgMzgsIDUwLCAxMzMsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjQzLCAyMzcsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgCi0gICAgMjQ0LCA1MCwgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyMjAsIDUzLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDIyMSwgNDMsIAotICAgIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjQ1LCAxNTAsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjI5LCAzMSwgMjQwLCAKLSAgICAyMDAsIDIyMywgMzgsIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgMjIzLCAzOCwgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIAotICAgIDIyMywgMzgsIDI0MywgMjI4LCAxMjIsIDIxNywgMTIxLCAyMjMsIDM4LCAyNDMsIDIyOCwgMTE3LCAyMTcsIDExOSwgMTEyLCAKLSAgICA1LCAyNTAsIDE4NywgMTEyLCA1LCAyNTMsIDI0MiwgMTEyLCA1LCAyMTQsIDEyOCwgMTEyLCA1LCAyMzUsIDEwNCwgMTEyLCAKLSAgICA1LCAyMTUsIDEzMiwgMTEyLCAxLCA2MSwgMTEyLCAxLCAyNTQsIDIzMiwgMTEyLCAxLCA3MiwgMTEyLCAxLCAyMzYsIDI4LCAKLSAgICAxMTIsIDEsIDY5LCAxMTIsIDEsIDIxNSwgOTIsIDExMiwgMSwgMTYxLCAxNDksIDExMiwgMSwgMTYxLCAyMjMsIDgyLCAxMTIsIAotICAgIDEsIDE2MSwgMTUwLCAxMTIsIDEsIDE2MSwgMjMyLCAyMTQsIDExMiwgMSwgNzQsIDExMiwgMSwgMjU0LCAxMDgsIDExMiwgMSwgCi0gICAgNzUsIDExMiwgMSwgMjUzLCAxMDgsIDExMiwgMSwgMTgxLCAxMTIsIDEsIDIzNCwgMTM4LCAxMTIsIDEsIDI0MywgMTEwLCAKLSAgICAxMTIsIDEsIDI0MiwgMjI1LCAxMTIsIDEsIDIyOSwgMTU5LCAxMTIsIDEsIDI1MCwgMjE5LCAxMTIsIDEsIDI1MCwgOTIsIAotICAgIDExMiwgMSwgMjM1LCAxMzksIDExMiwgMSwgMjM1LCAxMTUsIDExMiwgMSwgMjI4LCAyMywgMTEyLCAxLCAyMTYsIDExNSwgCi0gICAgMTEyLCAxLCAyMTYsIDEwNSwgMTEyLCAxLCAyNDgsIDg2LCAxMTIsIDEsIDI0OCwgNzAsIDExMiwgMSwgMjI4LCAxOTgsIAotICAgIDExMiwgMSwgMjE4LCA1MiwgMTEyLCAxLCAyMTcsIDE2MSwgMTEyLCAxLCAyNDgsIDE2NCwgMTEyLCAxLCAyNDcsIDIzMiwgCi0gICAgMTEyLCAxLCAyMDUsIDExMiwgMSwgMTkzLCAxMTIsIDEsIDIyNiwgMjMsIDExMiwgMSwgMjUyLCAxMDcsIDExMiwgMSwgMjUxLCAKLSAgICAxOTUsIDExMiwgMSwgMTg4LCAxMTIsIDEsIDE4NiwgMTEyLCAxLCAyMDMsIDExMiwgMSwgMjMzLCAxNTcsIDExMiwgMSwgCi0gICAgMjE1LCAxLCAxMTIsIDEsIDIyMSwgMjQsIDExMiwgMSwgMjE5LCAxNTcsIDExMiwgMSwgMjIyLCAyMDIsIDExMiwgMSwgMTU5LCAKLSAgICAxMTIsIDEsIDIzMiwgMjEzLCAxMTIsIDEsIDUzLCAxNzgsIDIzMiwgMjEyLCAxMTIsIDEsIDUzLCAxNzgsIDIyMywgODEsIAotICAgIDExMiwgMSwgNTMsIDE3OCwgMjI4LCAxODksIDExMiwgMzAsIDUsIDI1NCwgMjMyLCAxMTIsIDMwLCA1LCAyNTEsIDE5MywgCi0gICAgMjU0LCAyMzIsIDExMiwgMzAsIDUsIDcyLCAxMTIsIDMwLCA1LCAyMzYsIDI4LCAxMTIsIDMwLCA1LCA2OSwgMTEyLCAzMCwgCi0gICAgNSwgMjE1LCA5MiwgMTEyLCAzMCwgNSwgMTYxLCAxNDksIDExMiwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTEyLCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDExMiwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDExMiwgMzAsIDUsIDc0LCAxMTIsIDMwLCA1LCAyNTQsIAotICAgIDEwOCwgMTEyLCAzMCwgNSwgNzUsIDExMiwgMzAsIDUsIDI1MywgMTA4LCAxMTIsIDIxNCwgMTMzLCAxMTIsIDI0OCwgMTIzLCAKLSAgICAxMTIsIDUxLCAyNDgsIDEyMywgMTEyLCAyMjUsIDI3LCAyNDcsIDc0LCAxMTIsIDIyNSwgMjcsIDUxLCAyNDcsIDc0LCAxMTIsIAotICAgIDIyNSwgMjcsIDIzMiwgMjQyLCAxMTIsIDIyNSwgMjcsIDI0OSwgNzcsIDEzNCwgMTEyLCAyMjUsIDI3LCAyMzIsIDE3MCwgCi0gICAgMTEyLCA1MCwgMTE2LCAxMTIsIDUwLCAxMDksIDExMiwgNTAsIDE2NiwgMTEyLCA1MCwgMTYzLCAxMTIsIDUwLCAxODAsIAotICAgIDExMiwgNTAsIDE4OSwgMTEyLCA1MCwgMTk4LCAxMTIsIDUwLCAxOTUsIDExMiwgNTAsIDIwMCwgMTEyLCA1MCwgMjE3LCAKLSAgICAyMDAsIDExMiwgNTAsIDIxNiwgMzgsIDExMiwgNTAsIDIxNywgMTE1LCAxMTIsIDUwLCAyNDMsIDI0MCwgMTEyLCA1MCwgCi0gICAgMjQ0LCA4MywgMTEyLCA1MCwgMjIwLCAzOSwgMTEyLCA1MCwgMjIxLCAzNywgMTEyLCA1MCwgMjQ1LCAxNDEsIDExMiwgNTAsIAotICAgIDIyOSwgMjYsIDExMiwgNTAsIDEyMiwgMjQwLCAyMDAsIDExMiwgNTAsIDEyMiwgMjE3LCAxMDAsIDExMiwgMjEsIDIxMiwgCi0gICAgNzksIDExMiwgMjEsIDExNiwgMTEyLCAyMSwgMTA5LCAxMTIsIDIxLCAxNjYsIDExMiwgMjEsIDE2MywgMTEyLCAyMSwgMTgwLCAKLSAgICAxMTIsIDIxLCAxODksIDExMiwgMjEsIDE5OCwgMTEyLCAyMSwgMTk1LCAxMTIsIDIxLCAyMDAsIDIwOCwgNSwgMjUwLCAxODcsIAotICAgIDIwOCwgNSwgMjUzLCAyNDIsIDIwOCwgNSwgMjE0LCAxMjgsIDIwOCwgMSwgNjEsIDIwOCwgMSwgMjU0LCAyMzIsIDIwOCwgMSwgCi0gICAgNzIsIDIwOCwgMSwgMjM2LCAyOCwgMjA4LCAxLCA2OSwgMjA4LCAxLCAyMTUsIDkyLCAyMDgsIDEsIDc0LCAyMDgsIDEsIAotICAgIDI1NCwgMTA4LCAyMDgsIDEsIDc1LCAyMDgsIDEsIDI1MywgMTA4LCAyMDgsIDEsIDE4MSwgMjA4LCAxLCAyMzQsIDEzOCwgCi0gICAgMjA4LCAxLCAyNDMsIDExMCwgMjA4LCAxLCAyNDIsIDIyNSwgMjA4LCAxLCAyMjksIDE1OSwgMjA4LCAxLCAyNTAsIDIxOSwgCi0gICAgMjA4LCAxLCAyNTAsIDkyLCAyMDgsIDEsIDIzNSwgMTM5LCAyMDgsIDEsIDIzNSwgMTE1LCAyMDgsIDEsIDIyOCwgMjMsIAotICAgIDIwOCwgMSwgMjE2LCAxMTUsIDIwOCwgMSwgMjE2LCAxMDUsIDIwOCwgMSwgMjQ4LCA4NiwgMjA4LCAxLCAyNDgsIDc1LCAKLSAgICAyMDgsIDEsIDI0OCwgNzAsIDIwOCwgMSwgMjIzLCAxOTIsIDIwOCwgMSwgMjI4LCAxOTgsIDIwOCwgMSwgMjE4LCA1MiwgCi0gICAgMjA4LCAxLCAyMTcsIDE2MSwgMjA4LCAxLCAyNDgsIDE2NCwgMjA4LCAxLCAyNDcsIDIzMiwgMjA4LCAxLCAyMDUsIDIwOCwgCi0gICAgMSwgMTkzLCAyMDgsIDEsIDIyNiwgMjMsIDIwOCwgMSwgMjUyLCAxMDcsIDIwOCwgMSwgMjUxLCAxOTUsIDIwOCwgMSwgMTg4LCAKLSAgICAyMDgsIDEsIDE4NiwgMjA4LCAxLCAyMDMsIDIwOCwgMSwgMjMzLCAxNTcsIDIwOCwgMSwgMjE1LCAxLCAyMDgsIDEsIDIyMSwgCi0gICAgMjQsIDIwOCwgMSwgMjE5LCAxNTcsIDIwOCwgMSwgMjIyLCAyMDIsIDIwOCwgMSwgMTU5LCAyMDgsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMjA4LCAzMCwgNSwgNzIsIDIwOCwgMzAsIDUsIDIzNiwgMjgsIDIwOCwgMzAsIDUsIDY5LCAyMDgsIDMwLCA1LCAKLSAgICAyMTUsIDkyLCAyMDgsIDMwLCA1LCA3NCwgMjA4LCAzMCwgNSwgMjU0LCAxMDgsIDIwOCwgMzAsIDUsIDc1LCAyMDgsIDMwLCAKLSAgICA1LCAyNTMsIDEwOCwgMjA4LCA1LCAyMTQsIDEzMywgMjA4LCA1LCAyMjgsIDYwLCAyMDgsIDI1NCwgMTgxLCA1MiwgMjA4LCAKLSAgICAyNDUsIDgwLCA1MiwgMjA4LCA1MCwgNTIsIDIwOCwgMjIyLCA5MiwgNzcsIDIwOCwgNTEsIDIyMiwgOTIsIDc3LCAyMDgsIAotICAgIDI0OCwgMTIzLCAyMDgsIDUxLCAyNDgsIDEyMywgMTUsIDUsIDYxLCAxNSwgNSwgMTE4LCAyOSwgNjEsIDE1LCA1LCAxMTgsIAotICAgIDI5LCAyNTIsIDk0LCAxNSwgNSwgMTE4LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAxMTgsIDI5LCAxNTksIDE1LCAKLSAgICA1LCAxMTgsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMTE4LCAyOSwgMjMzLCAxMzksIDI0MiwgNzUsIDE1LCA1LCAxMTgsIDI5LCAKLSAgICAyMzAsIDEzMSwgMTUsIDUsIDExOCwgMjksIDIyMiwgMTkwLCAxNSwgNSwgMjU0LCAyMzQsIDE1LCA1LCAyNTQsIDE4NSwgMTUsIAotICAgIDUsIDI1NCwgMTg2LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDI0NiwgMjIsIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyNTQsIDE4NiwgMjksIDI0MywgOTQsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjU0LCAxODYsIDI5LCAxNTksIDE1LCA1LCAyNTQsIDE4NiwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNTQsIAotICAgIDE4NiwgMjksIDIzNiwgNCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMjMzLCAxNDAsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDIyMCwgCi0gICAgMjI4LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCA2OSwgMTUsIDUsIDI1NCwgMTg2LCAyNDIsIDc1LCAKLSAgICAxNSwgNSwgMjU0LCAxODMsIDE1LCA1LCAyNTQsIDE4NCwgMjksIDI1MiwgNzksIDE1LCA1LCAyNTQsIDE4NCwgMjksIDI0MywgCi0gICAgODEsIDIxNywgMTkyLCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyMzEsIDE1NywgOTQsIDI0NSwgMTA4LCAxNSwgNSwgMjU0LCAKLSAgICAxODQsIDI5LCAyMjEsIDIyLCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjU0LCAxNjAsIDE1LCA1LCAKLSAgICAyNTQsIDk0LCAxNSwgNSwgMjU0LCA5NSwgMjksIDI0NSwgNTAsIDE1LCA1LCAyNTQsIDk1LCAyOSwgMjIwLCAxOTAsIDk0LCAKLSAgICAyNDIsIDE2NiwgMTUsIDUsIDI1NCwgODYsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMjU0LCA4NiwgMTUsIDUsIDI1NCwgODcsIAotICAgIDI5LCAyNDcsIDE2OCwgMTUsIDUsIDI1NCwgODcsIDI5LCAyNDIsIDE2NiwgMTUsIDUsIDI1NCwgODcsIDI5LCAxNTksIDE1LCAKLSAgICA1LCAyNTQsIDg3LCAyOSwgMjM1LCAzLCAxNSwgNSwgMjU0LCA4NywgMjksIDIzNCwgMTAxLCAxNSwgNSwgMjU0LCA4NywgMjksIAotICAgIDIyMCwgMjQzLCAxNSwgNSwgMjU0LCA4NywgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjU0LCA4MywgMTUsIDUsIDI1NCwgNzYsIAotICAgIDE1LCA1LCAyNTQsIDQxLCAxNSwgNSwgMjU0LCA0MiwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjU0LCAzMiwgMTUsIDUsIDI1NCwgCi0gICAgMzMsIDExMCwgMjU0LCAzMiwgMTUsIDUsIDI1NCwgMzMsIDEzMywgMjE3LCAzOCwgMTUsIDUsIDI1NCwgMzMsIDk0LCAyMzAsIAotICAgIDM1LCAyMjcsIDMwLCAyNTQsIDMzLCA5NCwgMjMwLCAzNCwgMTUsIDUsIDI1NCwgMzMsIDk0LCAyMzAsIDM1LCAyMTksIDE2NSwgCi0gICAgMTUsIDUsIDI1NCwgNSwgMTUsIDUsIDI1MywgMjM1LCAxNSwgNSwgMjUzLCAyMDUsIDE1LCA1LCAyNTMsIDIwNiwgMjksIAotICAgIDIzMywgMjE3LCAxNSwgNSwgMjUzLCAxNzksIDE1LCA1LCAyNTMsIDE1MSwgMTUsIDUsIDI1MywgMTQ2LCAxNSwgNSwgMjUzLCAKLSAgICAxNDcsIDIxMiwgMzMsIDIxNywgMTkyLCAxNSwgNSwgMjUzLCAxNDcsIDIzNSwgNywgMjE3LCAxOTIsIDE1LCA1LCAyNTMsIAotICAgIDE0NywgMTEwLCAyNTMsIDE0NywgMjE2LCA3OCwgMTEwLCAyMTYsIDc4LCAyMTYsIDc4LCAxMTAsIDIxNiwgNzgsIDIyNiwgCi0gICAgMTQ5LCAxNSwgNSwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDYsIDE1LCA1LCAyNTMsIDE0NywgMTEwLCAKLSAgICAyNTMsIDE0NywgMTEwLCAyNTMsIDE0NywgMjQ5LCA2NSwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDYsIAotICAgIDE1LCA1LCAyNTMsIDE0NCwgMTUsIDUsIDI1MywgMTQxLCAxNSwgNSwgMjUyLCAxMDcsIDE1LCA1LCAyNTIsIDk0LCAxNSwgNSwgCi0gICAgMjUyLCA4OSwgMTUsIDUsIDI1MiwgODYsIDE1LCA1LCAyNTIsIDgwLCAxNSwgNSwgMjUyLCA4MSwgMTEwLCAyNTIsIDgwLCAKLSAgICAxNSwgNSwgMjUyLCA3OSwgMTUsIDUsIDEzNCwgMTUsIDUsIDI1MiwgNTksIDE1LCA1LCAyNTEsIDE4NCwgMTUsIDUsIDI1MSwgCi0gICAgMTg1LCAyOSwgNjEsIDE1LCA1LCAyNTEsIDE4NSwgMjksIDI0MywgNzIsIDE1LCA1LCAyNTEsIDE4NSwgMjksIDIzNiwgMzEsIAotICAgIDI0MiwgNzUsIDE1LCA1LCAyNTEsIDU0LCAxNSwgNSwgMjUxLCA1NSwgMTEwLCAyNTEsIDU1LCAyNTQsIDE4NSwgMTUsIDUsIAotICAgIDI1MSwgNTUsIDExMCwgMjUxLCA1NSwgMjE1LCAxNjAsIDE1LCA1LCAyNTEsIDU1LCAyNDksIDY1LCAyNTEsIDU0LCAxNSwgNSwgCi0gICAgMjUxLCAzOCwgMTUsIDUsIDI1MSwgMzksIDExMCwgMjUxLCAzOCwgMTUsIDUsIDI1MSwgMjcsIDE1LCA1LCAyNTEsIDI2LCAKLSAgICAxNSwgNSwgMjQ4LCAxNjQsIDE1LCA1LCAyNDgsIDE1NSwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMTE4LCA5NCwgCi0gICAgMjMxLCAyMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI1NCwgNDEsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCAKLSAgICA3NSwgMjksIDI1MiwgNzksIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjQ4LCAxNTYsIAotICAgIDIzNCwgNzUsIDI5LCAyNDMsIDExMCwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjQzLCAxMTEsIDk0LCAyMzEsIAotICAgIDIxMCwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjQyLCAxOTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgCi0gICAgMjksIDI0MiwgMTczLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjQ4LCAxNTYsIAotICAgIDIzNCwgNzUsIDI5LCAxNTksIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIzNSwgMTc3LCAxNSwgNSwgMjQ4LCAKLSAgICAxNTYsIDIzNCwgNzUsIDI5LCAyMzUsIDE3OCwgOTQsIDIzMiwgMTU2LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAKLSAgICAyMzQsIDI0NywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMzLCAxNTcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCAKLSAgICA3NSwgMjksIDIzMiwgMTU2LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzIsIDE1NywgOTQsIDIzMSwgMjA5LCAKLSAgICAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzIsIDE0MiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgCi0gICAgMjI5LCAxODcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIyNiwgMTUwLCA5NCwgMjI2LCAxNDksIDE1LCA1LCAKLSAgICAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIyMCwgMTE3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMTgsIDIyLCAKLSAgICAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMTUsIDE5OCwgOTQsIDI0MiwgMTczLCAxNSwgNSwgMjQ4LCAxNTYsIAotICAgIDIzNCwgNzUsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDI0OCwgMTMyLCAxNSwgNSwgMjQ4LCAxMTEsIDE1LCA1LCAyNDgsIDExMCwgCi0gICAgMTUsIDUsIDI0OCwgMTA5LCAxNSwgNSwgMjQ3LCAyMTEsIDE1LCA1LCAyNDcsIDE5NCwgMTUsIDUsIDI0NywgMTY5LCAxNSwgCi0gICAgNSwgMjQ3LCAxNzAsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0NywgMTY4LCAxNSwgNSwgMjQ3LCAxNTgsIDE1LCA1LCAyNDcsIAotICAgIDE1OSwgMjM0LCAyMTMsIDExMSwgMjQyLCA3NiwgMjQ3LCAxMzksIDE1LCA1LCAyNDcsIDEzOSwgMTUsIDUsIDI0NiwgMzMsIAotICAgIDE1LCA1LCAyNDYsIDM0LCAxMTAsIDI0NiwgMzMsIDE1LCA1LCAyNDYsIDM0LCAyNDIsIDc1LCAxNSwgNSwgMjQ2LCAzNCwgCi0gICAgMjIwLCAyMjUsIDE1LCA1LCAyNDYsIDMxLCAxNSwgNSwgMjQ2LCAzMiwgMjksIDI0NSwgMzcsIDE1LCA1LCAyNDYsIDMwLCAKLSAgICAxNSwgNSwgMjQ2LCAyOSwgMTUsIDUsIDI0NiwgMjgsIDE1LCA1LCAyNDYsIDI3LCAxNSwgNSwgMjQ2LCAyMywgMTUsIDUsIAotICAgIDI0NiwgMjEsIDE1LCA1LCAyNDYsIDIyLCAyNDIsIDc1LCAxNSwgNSwgMjQ2LCAyMiwgMjQyLCA3NiwgMjQyLCA3NSwgMTUsIAotICAgIDUsIDI0NiwgMjAsIDE1LCA1LCAyNDYsIDEzLCAxNSwgNSwgNzQsIDE1LCA1LCAxOTEsIDI5LCAyMjYsIDE0OSwgMTUsIDUsIAotICAgIDE5MSwgMTEwLCAxOTEsIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDI0NSwgMTkwLCAxNSwgNSwgMjQ1LCAxOTEsIAotICAgIDI5LCAxMTgsIDk0LCAyNDIsIDMwLCA5NCwgMjQ4LCAxNjQsIDE1LCA1LCAyNDUsIDE5MSwgMjksIDI0MywgNzIsIDE1LCA1LCAKLSAgICAyNDUsIDE5MSwgMjksIDIzMSwgNDIsIDE1LCA1LCAyNDUsIDE5MSwgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjQ1LCAxOTEsIAotICAgIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0NSwgMTkxLCAyOSwgNjksIDE1LCA1LCAyNDUsIDE2NywgMTUsIDUsIDI0NSwgMTU3LCAKLSAgICAxNSwgNSwgMjQ1LCAxMzEsIDE1LCA1LCAyNDUsIDEwOCwgMTUsIDUsIDI0NSwgMTA5LCAyOSwgMjQzLCA4MCwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyNDUsIDEwOSwgMjksIDIzMSwgMTU2LCAxNSwgNSwgCi0gICAgMjQ1LCAxMDksIDI0OSwgNjUsIDI0NSwgMTA4LCAxNSwgNSwgMjQ1LCAxMDksIDIyNywgMzAsIDI0NSwgMTA4LCAxNSwgNSwgCi0gICAgMjQ1LCAxMDksIDIxOSwgMTY1LCAxNSwgNSwgMjQ1LCA1MiwgMTUsIDUsIDI0NSwgNTAsIDE1LCA1LCAyNDUsIDM3LCAxNSwgCi0gICAgNSwgMjQ0LCAyMzQsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDYxLCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAxMTgsIDk0LCAyMzMsIAotICAgIDEyOCwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMTE4LCA5NCwgMjMzLCAxMjksIDI5LCAyMzMsIDEyOCwgMTUsIDUsIDI0NCwgCi0gICAgMjM1LCAyOSwgMjU0LCAzMiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjQ2LCAKLSAgICAyMiwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjQ2LCAyMiwgMjQyLCA3NiwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgCi0gICAgMjM1LCAyOSwgMTU5LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyNDIsIDMwLCAyNDIsIDc1LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAKLSAgICAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzQsIDIxMiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgCi0gICAgMjM0LCAyMTMsIDIxOSwgMTY1LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzMsIDIzNiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgCi0gICAgMjMzLCAxNTcsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIzMywgMTI5LCAyOSwgMjMzLCAxMjgsIDE1LCA1LCAyNDQsIDIzNSwgCi0gICAgMjksIDIzMywgMTMsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIzMiwgMTU2LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMTUsIAotICAgIDE5NywgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyNDMsIDExMCwgMTUsIDUsIDI0MywgMTExLCAKLSAgICAyNDIsIDc1LCAxNSwgNSwgMjQzLCAxMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDExOCwgOTQsIDI0OCwgMTY1LCA5NCwgCi0gICAgMTU5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAxNTksIDE1LCA1LCAyNDMsIDEwOSwgMjksIDExOCwgOTQsIAotICAgIDIzNiwgMzAsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1NCwgMTg0LCAyMTcsIDE5MywgOTQsIDIxOCwgNDEsIDE1LCA1LCAKLSAgICAyNDMsIDEwOSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1MywgMTQ2LCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyNTMsIDE0NSwgOTQsIDI0MywgOTQsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDMsIDEwOSwgCi0gICAgMjksIDI1MiwgNjAsIDk0LCAyMDMsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1MSwgMjcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIAotICAgIDI1MSwgMjgsIDk0LCAyMDMsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0OCwgMTY0LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAKLSAgICAyNDcsIDIxMSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQ3LCAxNzAsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjQ2LCAzMSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQ1LCAxMzEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NSwgCi0gICAgMTMyLCA5NCwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NSwgMTA4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAKLSAgICAyNDUsIDEwOSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgCi0gICAgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQzLCA3MiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAxOTAsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDI0MiwgMTg4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDE4OSwgOTQsIDYxLCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyNDIsIDE3NCwgOTQsIDIxOSwgMjcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMzAsIDk0LCAyMzIsIAotICAgIDE1NywgOTQsIDI0NSwgMzcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMTIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgCi0gICAgMTMsIDk0LCAyMzMsIDE1NywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQxLCAxNjYsIDk0LCAyMzMsIDEzLCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyNDAsIDIwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjM1LCAxNjQsIDk0LCAyNDAsIDIxMywgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzQsIAotICAgIDI0NywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM0LCAyMTIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNCwgOTgsIDE1LCA1LCAKLSAgICAyNDMsIDEwOSwgMjksIDIzNCwgOTksIDk0LCAyMzMsIDEyOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMzLCAyMzcsIDk0LCAKLSAgICAyNTQsIDMyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzMsIDE1NywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMxLCAxNTcsIAotICAgIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMxLCA0MiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjI4LCA1MCwgCi0gICAgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjI4LCA1MSwgMTEwLCAyMjgsIDUwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxOTMsIDE1LCAKLSAgICA1LCAyNDMsIDEwOSwgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMjIsIDE0NywgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyMCwgMjQ0LCA5NCwgMjE2LCA2MiwgMTUsIDUsIAotICAgIDI0MywgMTA5LCAyOSwgMjIwLCAyMTAsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIxOCwgMjQ0LCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCA2OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjE1LCAxODgsIDE1LCAKLSAgICA1LCAyNDMsIDEwOSwgMjksIDIxNSwgMTg5LCA5NCwgMjQ2LCAzMywgMTUsIDUsIDI0MywgMTA5LCAxMTAsIDI0MywgMTA4LCAKLSAgICAxNSwgNSwgMjQzLCAxMDMsIDE1LCA1LCAyNDMsIDEwNCwgMjQ5LCA2NSwgMjQzLCAxMDMsIDE1LCA1LCAyNDMsIDEwMSwgMTUsIAotICAgIDUsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyNDMsIDk0LCAxNSwgNSwgCi0gICAgMjQzLCA5NSwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgMTUsIDUsIDI0MywgOTMsIAotICAgIDE1LCA1LCAyNDMsIDkxLCAxNSwgNSwgMjQzLCA4MiwgMTUsIDUsIDI0MywgODAsIDE1LCA1LCAyNDMsIDgxLCAyMTcsIDE5MiwgCi0gICAgMTUsIDUsIDI0MywgODEsIDExMCwgMjQzLCA4MCwgMTUsIDUsIDI0MywgODEsIDI0OSwgNjUsIDI0MywgODAsIDE1LCA1LCAKLSAgICAyNDMsIDcyLCAxNSwgNSwgMjQzLCA3MSwgMTUsIDUsIDI0MywgNjYsIDE1LCA1LCAyNDMsIDEyLCAxNSwgNSwgMjQzLCAxMywgCi0gICAgMjksIDIzMywgMjE3LCAxNSwgNSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE5MSwgMjksIDc0LCAxNSwgNSwgMjQyLCAxOTEsIAotICAgIDI5LCA2OSwgMTUsIDUsIDI0MiwgMTkxLCAyNDksIDY1LCAyNDIsIDE5MCwgMTUsIDUsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAKLSAgICAxODksIDExMCwgMjQyLCAxODgsIDE1LCA1LCAyNDIsIDE4OSwgMjQ5LCA2NSwgMjQyLCAxODgsIDE1LCA1LCAyNDIsIDE4NSwgCi0gICAgMTUsIDUsIDI0MiwgMTczLCAxNSwgNSwgMjQyLCAxNzQsIDI0MiwgNzUsIDE1LCA1LCAyNDIsIDE3MSwgMTUsIDUsIDI0MiwgCi0gICAgMTcyLCAyOSwgMTE4LCA5NCwgMjM2LCAzMCwgMTUsIDUsIDI0MiwgMTcyLCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyNDIsIDE3MiwgMjksIDIzNiwgMzAsIDE1LCA1LCAyNDIsIDE3MiwgMjksIDIzMiwgMTU3LCA5NCwgMjM2LCAzMCwgMTUsIDUsIAotICAgIDI0MiwgMTcyLCAyOSwgMTkzLCAxNSwgNSwgMjQyLCAxNjgsIDE1LCA1LCAyNDIsIDE2NiwgMTUsIDUsIDI0MiwgMTY3LCAKLSAgICAyNDksIDY1LCAyNDIsIDE2NiwgMTUsIDUsIDI0MiwgMTY3LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDI0MiwgMTY3LCAyOSwgCi0gICAgMjE4LCAyMiwgMTUsIDUsIDI0MiwgMTY3LCAyMTcsIDE5MiwgMTUsIDUsIDI0MiwgOTIsIDE1LCA1LCAyNDIsIDkzLCAyNDksIAotICAgIDY1LCAyNDIsIDkyLCAxNSwgNSwgMjQyLCA5MCwgMTUsIDUsIDI0MiwgOTEsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDI0MiwgCi0gICAgOTEsIDI5LCAyMzQsIDI0OCwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNDIsIDkxLCAyOSwgMjI4LCA1MCwgMTUsIAotICAgIDUsIDI0MiwgOTEsIDI5LCAyMjIsIDE4MCwgOTQsIDIxNiwgNzcsIDE1LCA1LCAyNDIsIDkxLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjQyLCA4NCwgMTUsIDUsIDI0MiwgODUsIDI5LCAxMTgsIDk0LCAyMzMsIDIxNywgMTUsIDUsIDI0MiwgODUsIDI5LCAyMzMsIAotICAgIDIxNywgMTUsIDUsIDI0MiwgODUsIDExMCwgMjQyLCA4NSwgMjMyLCAxNDksIDE1LCA1LCAyNDIsIDc5LCAxNSwgNSwgMjQyLCAKLSAgICA3NywgMTUsIDUsIDI0MiwgNzgsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0MiwgNjksIDE1LCA1LCAyNDIsIDY4LCAxNSwgNSwgCi0gICAgMjQyLCA2NSwgMTUsIDUsIDI0MiwgNjQsIDE1LCA1LCAxNTksIDE1LCA1LCAyNDIsIDMwLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDI0MiwgMzAsIDI0MiwgNzUsIDE1LCA1LCAyNDIsIDEyLCAxNSwgNSwgMjQxLCAxNjUsIDE1LCA1LCAyNDEsIDE2NiwgMjksIAotICAgIDI1MywgMTQ2LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjUyLCA5NCwgCi0gICAgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjQ3LCAxMzksIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI0MywgMTAxLCAxNSwgNSwgMjQxLCAKLSAgICAxNjYsIDI5LCAyMzQsIDkwLCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyMjAsIAotICAgIDI0MywgMTUsIDUsIDI0MSwgMTY2LCAyOSwgNjksIDE1LCA1LCAyNDAsIDIxMiwgMTUsIDUsIDI0MCwgMjA4LCAxNSwgNSwgCi0gICAgMjQwLCAyMDksIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjQwLCAyMDksIDI5LCAyNDIsIDEyLCAxNSwgNSwgMjQwLCAyMDksIDI5LCAKLSAgICAyMzQsIDIxMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgMjMyLCAyMjYsIDE1LCA1LCAyNDAsIDIwOSwgMjksIDIxNSwgMTg4LCAKLSAgICAxNSwgNSwgMjQwLCAyMDUsIDE1LCA1LCA3MiwgMTUsIDUsIDI0MCwgMTQ2LCA2MSwgMTUsIDUsIDI0MCwgMTA4LCAxNSwgNSwgCi0gICAgMjM2LCA1OCwgMTUsIDUsIDIzNiwgNTksIDExMCwgMjM2LCA1OSwgMjUxLCAyNywgMTUsIDUsIDIzNiwgNTksIDExMCwgMjM2LCAKLSAgICA1OSwgMjE5LCAxNjUsIDE1LCA1LCAyMzYsIDMzLCAxNSwgNSwgMjM2LCAzMCwgMTUsIDUsIDIzNiwgMzEsIDI0NywgMTk0LCAKLSAgICAxNSwgNSwgMjM2LCAzMSwgMjIzLCAxODgsIDE1LCA1LCAyMzYsIDMxLCAxMTAsIDIzNiwgMzEsIDIyMCwgMTk0LCAxMTAsIAotICAgIDIyMCwgMTk0LCAyMTUsIDE4OSwgMTEwLCAyMTUsIDE4OCwgMTUsIDUsIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyMzYsIAotICAgIDIyLCAxNSwgNSwgMjM2LCAyMywgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjM2LCAyMSwgMTUsIDUsIDIzNiwgCi0gICAgMTEsIDE1LCA1LCAyMzYsIDEyLCAyOSwgMjE4LCAyMiwgMTUsIDUsIDIzNiwgMTIsIDI0OSwgNjUsIDIzNiwgMTEsIDE1LCA1LCAKLSAgICAyMzYsIDEyLCAyMjcsIDMwLCAyMzYsIDExLCAxNSwgNSwgMjM2LCAxMiwgMjE5LCAxNjUsIDE1LCA1LCAyMzYsIDQsIDE1LCAKLSAgICA1LCAyMzUsIDI1MSwgMTUsIDUsIDIzNSwgMTc3LCAxNSwgNSwgMjM1LCAxNjMsIDE1LCA1LCAxODEsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgNjEsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjU0LCAxNjAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjU0LCAxNjEsIAotICAgIDk0LCAyMzMsIDIzNiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTIsIDk0LCAKLSAgICAxNSwgNSwgMjM1LCAxNywgMjksIDI1MiwgNzksIDE1LCA1LCAyMzUsIDE3LCAyOSwgMTM0LCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDI1MSwgMTg0LCAxNSwgNSwgMjM1LCAxNywgMjksIDI0NSwgNTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQ1LCAzNywgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyNDMsIDExMCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjM1LCAxNywgCi0gICAgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0MywgNzIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjQzLCA3MywgOTQsIDIyMSwgMjMsIDk0LCA2MSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDIsIDE5MCwgMTUsIDUsIDIzNSwgCi0gICAgMTcsIDI5LCAyNDIsIDE3MywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDIsIDE2NywgOTQsIDIyMiwgMTQ3LCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDI0MiwgMTY3LCAyNDksIDY1LCAyNDIsIDE2NiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDIsIDkyLCAxNSwgNSwgCi0gICAgMjM1LCAxNywgMjksIDI0MiwgNjgsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjM2LCAzMCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMzYsIDExLCAxNSwgNSwgMjM1LCAxNywgMjksIDIzNCwgMjQ3LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzNCwgMTAxLCAxNSwgCi0gICAgNSwgMjM1LCAxNywgMjksIDIzNCwgOTgsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMzLCAxMywgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMzIsIDE1NiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDE1NiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDE1NywgOTQsIAotICAgIDI0NiwgMzMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDIsIDE5MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMzEsIDE1NywgOTQsIDIxNywgMjI5LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMSwgNDIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMxLCA0MywgOTQsIDIyOCwgNDUsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjI4LCA1MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjUsIDI0MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjMsIDUxLCAxNSwgCi0gICAgNSwgMjM1LCAxNywgMjksIDIyMiwgMjAyLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMiwgMTQ3LCAxNSwgNSwgMjM1LCAxNywgCi0gICAgMjksIDIyMSwgMjQsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAyMTAsIAotICAgIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAxNTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAxMDgsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgMjE4LCAyNTIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjE4LCAxLCAxNSwgNSwgMjM1LCAxNywgMjksIDY5LCAxNSwgCi0gICAgNSwgMjM1LCAxNywgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjM1LCAxNywgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjM1LCAxNywgCi0gICAgMjksIDIxNSwgMTYzLCAyOSwgMTkzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIxMiwgMzcsIDE1LCA1LCAyMzUsIDE1LCAxNSwgNSwgMjM1LCAxNiwgMjQ5LCA2NSwgMjM1LCAxNSwgMTUsIDUsIDIzNSwgOCwgCi0gICAgMTUsIDUsIDIzNSwgNSwgMTUsIDUsIDIzNSwgMywgMTUsIDUsIDIzNSwgMiwgMTUsIDUsIDIzNSwgMCwgMTUsIDUsIDIzNSwgCi0gICAgMSwgMTEwLCAyMzUsIDAsIDE1LCA1LCAyMzQsIDI0NywgMTUsIDUsIDIzNCwgMjQ4LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgCi0gICAgMTUsIDUsIDIzNCwgMjQzLCAxNSwgNSwgMjM0LCAyNDQsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjM0LCAyNDQsIDI0OSwgNjUsIAotICAgIDIzNCwgMjQzLCAxNSwgNSwgMjM0LCAyNDEsIDE1LCA1LCAyMzQsIDI0MCwgMTUsIDUsIDIzNCwgMjEyLCAxNSwgNSwgMjM0LCAKLSAgICAyMTMsIDIzMywgMTQxLCAyOSwgMTExLCAxMTAsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzQsIDIxMywgMTEwLCAyMzQsIAotICAgIDIxMywgMjMzLCAxNDEsIDI5LCAxMTEsIDExMCwgMjMzLCAxNDEsIDI5LCA2OSwgMTUsIDUsIDIzNCwgMTYzLCAxNSwgNSwgCi0gICAgMjM0LCAxMDEsIDE1LCA1LCAyMzQsIDEwMiwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzQsIDEwMiwgMjksIDY5LCAxNSwgNSwgCi0gICAgMjM0LCAxMDIsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIzNCwgOTgsIDE1LCA1LCAyMzQsIDkwLCAxNSwgNSwgMjM0LCA3NywgCi0gICAgMTUsIDUsIDIzNCwgNzYsIDE1LCA1LCAyMzQsIDc0LCAxNSwgNSwgMjM0LCA3NSwgMTEwLCAyMzQsIDc0LCAxNSwgNSwgMjMzLCAKLSAgICAyMzgsIDE1LCA1LCAyMzMsIDIzOSwgMTEwLCAyNDEsIDE2NiwgMjksIDI1MywgMTQ1LCAyMzMsIDIzOSwgMTEwLCAyNDEsIAotICAgIDE2NiwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjMzLCAyMzYsIDE1LCA1LCAyMzMsIDIzNCwgMTUsIDUsIDIzMywgMjM1LCAKLSAgICAyMTQsIDI0NCwgMTcsIDE1LCA1LCAyMzMsIDIzMywgMTUsIDUsIDIzMywgMjMwLCAxNSwgNSwgMjMzLCAyMzEsIDI0MiwgNzUsIAotICAgIDE1LCA1LCAyMzMsIDIyOSwgMTUsIDUsIDIzMywgMjE3LCAxNSwgNSwgMjMzLCAyMTgsIDIyNywgMzAsIDIzMywgMjE3LCAxNSwgCi0gICAgNSwgMjMzLCAyMTIsIDE1LCA1LCAyMzMsIDE5NCwgMTUsIDUsIDIzMywgMTU3LCAxNSwgNSwgMjMzLCAxNDAsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDYxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAxMTgsIDk0LCAyNDgsIDE2NSwgOTQsIDE1OSwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMTE4LCA5NCwgMjQzLCA3MiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTE4LCA5NCwgMjMzLCAxMjgsIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI1NCwgODYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyMzMsIAotICAgIDE0MSwgMjksIDI1MywgMTQ3LCAyMTIsIDMzLCAyMTcsIDE5MiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjUyLCA5NCwgMTUsIAotICAgIDUsIDIzMywgMTQxLCAyOSwgMjUxLCAxODQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0OCwgMTExLCAxNSwgNSwgMjMzLCAKLSAgICAxNDEsIDI5LCAyNDUsIDEwOCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIAotICAgIDI0MywgNzIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MiwgODQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MiwgODUsIDk0LCAKLSAgICAyNDIsIDg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAxNTksIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MiwgMTIsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDI0MSwgMTY2LCAyOSwgMjI4LCA1MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAzMSwgMjQyLCAKLSAgICA3NSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAxMSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAxMiwgOTQsIDE1OSwgCi0gICAgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAxMiwgOTQsIDIzMiwgMTU2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzQsIAotICAgIDEwMSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM0LCA5MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMzLCAyMzYsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDIzMywgMjMwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzMsIDIzMSwgOTQsIDI0MSwgMTY2LCA5NCwgCi0gICAgNjEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzIsIDIyNiwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMjMyLCAxNTYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMiwgMTQ0LCAxNSwgNSwgMjMzLCAxNDEsIAotICAgIDI5LCAyMzEsIDE1NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDIzMywgCi0gICAgMTQxLCAyOSwgMjMwLCAxMzEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAKLSAgICAyMjAsIDI0NCwgOTQsIDIxOCwgMjQ0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjAsIDE5MCwgOTQsIDI0MiwgMTY3LCA5NCwgCi0gICAgMjQ1LCA1MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxOTAsIDk0LCAyNDIsIDE2NywgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDIyMCwgMTQ4LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjAsIDE0OSwgOTQsIDIyMCwgMTQ4LCAxNSwgCi0gICAgNSwgMjMzLCAxNDEsIDI5LCAyMTgsIDI0NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE4LCAzMywgMTUsIDUsIDIzMywgMTQxLCAKLSAgICAyOSwgMjE4LCAyMiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE3LCAyMzAsIDk0LCAxMTgsIDk0LCAyMTksIDI4LCA5NCwgCi0gICAgMjA1LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCA2OSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTExLCA5NCwgNjEsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDExMSwgOTQsIDExMSwgOTQsIDY5LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMTUsIDE5OCwgOTQsIAotICAgIDI1MywgMTQ2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxMDAsIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMjE5LCAxNjUsIDE1LCA1LCAyMzMsIDEzOCwgMTUsIDUsIDIzMywgMTM5LCAyOSwgMjIwLCAKLSAgICAyNDMsIDE1LCA1LCAyMzMsIDEzOSwgMjksIDIyMCwgMjQ0LCA5NCwgMjE4LCAyNDQsIDE1LCA1LCAyMzMsIDEzOSwgMjQyLCAKLSAgICA3NSwgMTUsIDUsIDIzMywgMTM5LCAyNDIsIDc2LCAxMTAsIDIzMywgMTM5LCAyNDIsIDc2LCAyMjAsIDI0MywgMTUsIDUsIAotICAgIDIzMywgMTM1LCAxNSwgNSwgMjMzLCAxMjgsIDE1LCA1LCAyMzMsIDEyOSwgMjksIDIzMywgMTI4LCAxNSwgNSwgMjMzLCAKLSAgICAxMjYsIDE1LCA1LCAyMzMsIDEyNywgMjksIDIzMywgMjE3LCAxNSwgNSwgMjMzLCAxMjcsIDI5LCAyMzMsIDIxOCwgOTQsIAotICAgIDIyMywgNTEsIDE1LCA1LCAyMzMsIDEzLCAxNSwgNSwgMjMyLCAyNTQsIDE1LCA1LCAyMzIsIDI0NSwgMTUsIDUsIDIzMiwgCi0gICAgMjI2LCAxNSwgNSwgMjMyLCAxNTYsIDE1LCA1LCAyMzIsIDE1NywgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzIsIDE1NCwgMTUsIAotICAgIDUsIDIzMiwgMTU1LCAyOSwgMjU0LCA4NiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyOSwgMjQ1LCAzNywgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjQ1LCAzOCwgMjE3LCAxOTIsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyNDEsIDE2NiwgMjksIDI1MiwgOTQsIDE1LCA1LCAKLSAgICAyMzIsIDE1NSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIzNSwgNSwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgCi0gICAgMjM1LCAzLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzUsIDQsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgCi0gICAgMjM0LCAxMDEsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIzMywgMTU4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgCi0gICAgMjksIDIzMywgMTQwLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzEsIDE1NywgOTQsIDI0NSwgMTA4LCAxNSwgNSwgMjMyLCAKLSAgICAxNTUsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjI4LCA5MiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgCi0gICAgMjIwLCAxMTgsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjIwLCAxMDAsIDk0LCAyNTEsIDU0LCAxNSwgCi0gICAgNSwgMjMyLCAxNTUsIDI5LCAyMTYsIDc3LCAxNSwgNSwgMjMyLCAxNTUsIDIxNywgMTkyLCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDI0OSwgNjUsIDIzMiwgMTU0LCAxNSwgNSwgMjMyLCAxNTUsIDIyNywgMzAsIDIzMiwgMTU0LCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDIxOSwgMTY1LCAxNSwgNSwgMjMyLCAxNTUsIDIyMCwgMjI1LCAxNSwgNSwgMjMyLCAxNTMsIDE1LCA1LCAyMzIsIDE0OSwgCi0gICAgMTUsIDUsIDIzMiwgMTUwLCAxMTAsIDIzMiwgMTQ5LCAxNSwgNSwgMjMyLCAxNTAsIDIyNywgMzAsIDIzMiwgMTQ5LCAxNSwgCi0gICAgNSwgMjMyLCAxNTAsIDIyMCwgMjI1LCAxNSwgNSwgMjMyLCAxNDcsIDE1LCA1LCAyMzIsIDE0NCwgMTUsIDUsIDIzMiwgMTQyLCAKLSAgICAxNSwgNSwgMjMyLCAxNDMsIDExMCwgMjMyLCAxNDIsIDE1LCA1LCAyMzIsIDE0MywgMTEwLCAyMzIsIDE0MywgMjQzLCA3MywgCi0gICAgMTEwLCAyNDMsIDcyLCAxNSwgNSwgMTg4LCAxNSwgNSwgMjMyLCA0MywgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzIsIDQzLCAKLSAgICAyNDIsIDc1LCAxNSwgNSwgMjMyLCA0MiwgMTUsIDUsIDIzMiwgMTUsIDE1LCA1LCAyMzEsIDIyOSwgMTUsIDUsIDIzMSwgCi0gICAgMjEwLCAxNSwgNSwgMjMxLCAyMDksIDE1LCA1LCAyMzEsIDE1NiwgMTUsIDUsIDIzMSwgMTEyLCAxNSwgNSwgMjMxLCA0MiwgCi0gICAgMTUsIDUsIDIzMSwgMSwgMTUsIDUsIDIzMCwgMTcyLCAxNSwgNSwgMjMwLCAxNzMsIDExMCwgMjMwLCAxNzIsIDE1LCA1LCAKLSAgICAyMzAsIDE2MywgMTUsIDUsIDIzMCwgMTY0LCAyNDIsIDc1LCAxNSwgNSwgMjMwLCAxNDgsIDE1LCA1LCAyMzAsIDEzNCwgMTUsIAotICAgIDUsIDIzMCwgMTMxLCAxNSwgNSwgMjMwLCAxMzIsIDI5LCA2MSwgMTUsIDUsIDIzMCwgMTMyLCAyOSwgMjMzLCAyMTcsIDE1LCAKLSAgICA1LCAyMzAsIDEzMiwgMjksIDIxMiwgMTA5LCAxNSwgNSwgMjMwLCAxMzIsIDExMCwgMjMwLCAxMzEsIDE1LCA1LCAyMzAsIAotICAgIDEzMiwgMTEwLCAyMzAsIDEzMiwgMjksIDExOCwgOTQsIDIwNSwgMTUsIDUsIDIzMCwgMTMyLCAyNDksIDY1LCAyMzAsIDEzMSwgCi0gICAgMTUsIDUsIDIzMCwgMTI5LCAxNSwgNSwgMjMwLCAxMzAsIDI5LCA2MSwgMTUsIDUsIDIzMCwgMTMwLCAyOSwgMTE4LCA5NCwgCi0gICAgMjQ3LCAyMTEsIDE1LCA1LCAyMzAsIDEzMCwgMjksIDI0NywgMjExLCAxNSwgNSwgMjMwLCAxMzAsIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyMDUsIDE1LCA1LCAyMzAsIDQ1LCAxNSwgNSwgMjMwLCAzNCwgMTUsIDUsIDIzMCwgMzUsIDIzNSwgMTkwLCAxNSwgNSwgCi0gICAgMjMwLCAzNSwgMjksIDIyMCwgMTUxLCAyMTcsIDE5MiwgMTUsIDUsIDIzMCwgMzUsIDIyNywgMzAsIDIzMCwgMzQsIDE1LCA1LCAKLSAgICAyMzAsIDMzLCAxNSwgNSwgMjMwLCAyOCwgMjI4LCAzNiwgMTUsIDUsIDIzMCwgMjcsIDE1LCA1LCAyMzAsIDI2LCAxNSwgNSwgCi0gICAgMjI5LCAxODcsIDE1LCA1LCAyMjksIDE4OCwgMjksIDYxLCAxNSwgNSwgMjI5LCAxODgsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIAotICAgIDIyOSwgMTg4LCAyMjAsIDIyNSwgMTUsIDUsIDIyOSwgNjQsIDE1LCA1LCAyMjksIDY1LCAyOSwgNzQsIDE1LCA1LCAyMjksIAotICAgIDYzLCAxNSwgNSwgMjI5LCAzNCwgMTUsIDUsIDIyOSwgMzUsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIyOSwgCi0gICAgMzUsIDI5LCAyNDMsIDczLCA5NCwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMjksIDMyLCAxNSwgNSwgMjI5LCAzMywgCi0gICAgMjksIDI1NCwgMzIsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjUzLCAxNDcsIAotICAgIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjI5LCAzMywgMjksIDIzMSwgMTU3LCAKLSAgICA5NCwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMjksIDMzLCAyOSwgCi0gICAgMjI4LCA1MCwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMjAsIDI0NCwgOTQsIAotICAgIDExOCwgMjU0LCAzMiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMjAsIDI0NCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgCi0gICAgMjksIDIyMCwgMjQ0LCA5NCwgMjUzLCAxNDcsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMTUsIDE5OCwgCi0gICAgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjI5LCAyMSwgMTUsIDUsIDIyOCwgCi0gICAgOTIsIDE1LCA1LCAyMjgsIDY1LCAxNSwgNSwgMjI4LCA1MCwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjQzLCAKLSAgICA3MiwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjMxLCAyMTAsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIAotICAgIDIyMiwgMTc5LCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAyMjIsIDE4MCwgMTEwLCAyMjgsIDUxLCAyMzMsIDEzOSwgCi0gICAgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIyOCwgNTEsIAotICAgIDIxNywgMTkyLCAxNSwgNSwgMjI4LCA1MSwgMTEwLCAyMjgsIDUwLCAxNSwgNSwgMjI4LCA1MSwgMjQ5LCA2NSwgMjI4LCA1MCwgCi0gICAgMTUsIDUsIDIyOCwgNTEsIDI0OSwgNjUsIDIyOCwgNTEsIDIzMywgMTM5LCAxMTAsIDIzMywgMTM4LCAxNSwgNSwgMjI4LCAKLSAgICA0NSwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjUzLCAxNDEsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIAotICAgIDI1MSwgMTg0LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyNDYsIDI5LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAKLSAgICAxODQsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMzUsIDMsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIzMywgMTU3LCAKLSAgICAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgCi0gICAgMjIwLCA5NywgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMjgsIDQ2LCAyMzQsIDc1LCAKLSAgICAyOSwgMjUxLCAxODQsIDE1LCA1LCAyMjgsIDQ2LCAyMzQsIDc1LCAyOSwgMjUxLCAxODUsIDY5LCAxNSwgNSwgMTkzLCAxNSwgCi0gICAgNSwgMjI2LCAyMDQsIDE1LCA1LCAyMjYsIDE3NCwgMTUsIDUsIDIyNiwgMTQ5LCAxNSwgNSwgMjI2LCAzNywgMTUsIDUsIAotICAgIDIyNSwgMjQwLCAxNSwgNSwgMjI1LCAyNDEsIDI5LCA2MSwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjU0LCAxODUsIDE1LCA1LCAKLSAgICAyMjUsIDI0MSwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjI1LCAyNDEsIDI5LCAyNTEsIDU0LCAxNSwgNSwgMjI1LCAyNDEsIAotICAgIDI5LCA3NCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgNzIsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDI0MCwgMTA4LCAxNSwgNSwgCi0gICAgMjI1LCAyNDEsIDI5LCA2OSwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMjUsIDI0MSwgMjQ5LCAKLSAgICA2NSwgMjI1LCAyNDAsIDE1LCA1LCAyMjUsIDE4NSwgMTUsIDUsIDIyNSwgMTg2LCAyOSwgMjM0LCAyNDMsIDE1LCA1LCAyMjUsIAotICAgIDE4NiwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjI1LCAxODYsIDI5LCAyMTIsIDEwOSwgMTUsIDUsIDIyNSwgMTg2LCAyMjcsIAotICAgIDMwLCAyMjUsIDE4NSwgMTUsIDUsIDIwMywgMTUsIDUsIDIyNCwgNzIsIDE1LCA1LCAyMjMsIDE4OCwgMTUsIDUsIDIyMywgCi0gICAgNTEsIDE1LCA1LCAyMjIsIDIwMiwgMTUsIDUsIDIyMiwgMTkxLCAyMjgsIDM2LCAxNSwgNSwgMjIyLCAxOTAsIDE1LCA1LCAKLSAgICAyMjIsIDE5MSwgMjksIDYxLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyNDYsIDMzLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyNDYsIAotICAgIDMxLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAxNTksIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIzNCwgMjQ3LCAxNSwgNSwgMjIyLCAKLSAgICAxOTEsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjMyLCAxNDIsIDE1LCA1LCAyMjIsIDE5MSwgMjksIAotICAgIDIzMSwgNDIsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIyOCwgNTAsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIyMiwgMTc5LCAxNSwgCi0gICAgNSwgMjIyLCAxOTEsIDI5LCAyMjAsIDIxMCwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE4LCA0MSwgMTUsIDUsIDIyMiwgMTkxLCAKLSAgICAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgMTk0LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIAotICAgIDE2NywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE1LCAxMjEsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgMTAwLCAxNSwgNSwgCi0gICAgMjIyLCAxOTEsIDExMCwgMjIyLCAxOTAsIDE1LCA1LCAyMjIsIDE5MSwgMjQyLCA3NSwgMTUsIDUsIDIyMiwgMTc5LCAxNSwgCi0gICAgNSwgMjIyLCAxODAsIDIzMywgMTQxLCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyMjIsIDE1NSwgMTUsIDUsIDIyMiwgMTQ3LCAKLSAgICAxNSwgNSwgMjIxLCAyNCwgMTUsIDUsIDIyMSwgMjIsIDE1LCA1LCAyMjEsIDIzLCAyOSwgNjEsIDE1LCA1LCAyMjEsIDIzLCAKLSAgICAyOSwgMjUyLCA5NCwgMTUsIDUsIDIyMSwgMjMsIDI5LCAyNDIsIDE2NiwgMTUsIDUsIDIyMSwgMjMsIDI5LCAyMjksIDE4NywgCi0gICAgMTUsIDUsIDIyMSwgMjMsIDI5LCAyMjAsIDE0OCwgMTUsIDUsIDIyMSwgMjMsIDI5LCAyMTYsIDYyLCAxNSwgNSwgMjIxLCAKLSAgICAyMywgMjksIDY5LCAxNSwgNSwgMjIxLCAyMywgMjksIDExMSwgOTQsIDYxLCAxNSwgNSwgMjIxLCAyMSwgMTUsIDUsIDIyMSwgCi0gICAgMTksIDE1LCA1LCAyMjEsIDEsIDE1LCA1LCAyMjAsIDI0MywgMTUsIDUsIDIyMCwgMjQ0LCAyNDAsIDIxMiwgMTUsIDUsIAotICAgIDIyMCwgMjQ0LCAxMTAsIDIyMCwgMjQ0LCAyNDMsIDEwMiwgMTEwLCAyNDMsIDEwMiwgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAKLSAgICAxNSwgNSwgMjIwLCAyNDQsIDExMCwgMjIwLCAyNDQsIDIxOCwgNDIsIDExMCwgMjE4LCA0MiwgMjQzLCA3MywgMTEwLCAyNDMsIAotICAgIDcyLCAxNSwgNSwgMjIwLCAyMzYsIDE1LCA1LCAyMjAsIDIzMSwgMTUsIDUsIDIyMCwgMjI4LCAxNSwgNSwgMjIwLCAyMjcsIAotICAgIDE1LCA1LCAyMjAsIDIyNCwgMTUsIDUsIDIyMCwgMjEwLCAxNSwgNSwgMjIwLCAyMTEsIDI5LCA2MSwgMTUsIDUsIDIyMCwgCi0gICAgMjExLCAyOSwgMjM2LCAxMSwgMTUsIDUsIDIyMCwgMjA0LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCA2MSwgMTUsIDUsIDIyMCwgCi0gICAgMjA1LCAyOSwgMjUyLCA4MCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjUxLCAzOCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjQ3LCAKLSAgICAxNTgsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI0MywgNzIsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDIzNiwgMzAsIDE1LCA1LCAKLSAgICAyMjAsIDIwNSwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDIzMywgMjEyLCAxNSwgNSwgCi0gICAgMjIwLCAyMDUsIDI5LCAyMzIsIDE0NCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjMwLCAxNjMsIDE1LCA1LCAyMjAsIDIwNSwgCi0gICAgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjIwLCAxOTgsIDE1LCA1LCAyMjAsIDE5MywgMTUsIDUsIDIyMCwgMTk0LCAyMTcsIAotICAgIDE5MiwgMTUsIDUsIDIyMCwgMTk0LCAxMTAsIDIyMCwgMTk0LCAyNTEsIDI4LCAxMTAsIDI1MSwgMjcsIDE1LCA1LCAyMjAsIAotICAgIDE4OSwgMTUsIDUsIDIyMCwgMTUwLCAxNSwgNSwgMjIwLCAxNTEsIDExMCwgMjM1LCAxOTEsIDIyMCwgMTUwLCAxNSwgNSwgCi0gICAgMjIwLCAxNDgsIDE1LCA1LCAyMjAsIDE0NywgMTUsIDUsIDIyMCwgMTE3LCAxNSwgNSwgMjIwLCAxMTgsIDI0MiwgNzUsIDE1LCAKLSAgICA1LCAyMjAsIDEwOCwgMTUsIDUsIDIyMCwgMTA2LCAxNSwgNSwgMjIwLCAxMDcsIDExMCwgMjIwLCAxMDcsIDIyMCwgMTQ4LCAKLSAgICAxNSwgNSwgMjIwLCA5OSwgMTUsIDUsIDIyMCwgOTcsIDE1LCA1LCAyMTksIDI3LCAxNSwgNSwgMjE5LCAyOCwgMTEwLCAyMTksIAotICAgIDI3LCAxNSwgNSwgMjE4LCAyNTUsIDE1LCA1LCAyMTgsIDI1NCwgMTUsIDUsIDIxOCwgMjUyLCAxNSwgNSwgMjE4LCAyNDQsIAotICAgIDE1LCA1LCAyMTgsIDI0MywgMTUsIDUsIDIxOCwgMjE3LCAxNSwgNSwgMjE4LCAyMTYsIDE1LCA1LCAyMTgsIDUyLCAxNSwgNSwgCi0gICAgMjE4LCA1MywgMjUzLCAxMzIsIDE1LCA1LCAyMTgsIDUzLCAyOSwgMjQxLCAxNjUsIDE1LCA1LCAyMTgsIDUzLCAyOSwgMjMxLCAKLSAgICA0MiwgMTUsIDUsIDIxOCwgNTMsIDI0MiwgNzUsIDE1LCA1LCAyMTgsIDQxLCAxNSwgNSwgMjE4LCA0MiwgMTEwLCAyMTgsIAotICAgIDQyLCAyMjksIDY1LCAxMTAsIDIyOSwgNjUsIDI0NywgMTQwLCAxMTAsIDI0NywgMTM5LCAxNSwgNSwgMjE4LCA0MiwgMjE5LCAKLSAgICAxNjUsIDE1LCA1LCAyMTgsIDMzLCAxNSwgNSwgMTI2LCAyOSwgMjUxLCAxODQsIDE1LCA1LCAxMjYsIDI5LCAyNDIsIDg0LCAKLSAgICAxNSwgNSwgMTI2LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAxMjYsIDI5LCAyMjAsIDE1MCwgMTUsIDUsIDEyNiwgMjksIDIxNiwgCi0gICAgNzcsIDE1LCA1LCAxMjYsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIxOCwgMjIsIDE1LCA1LCAyMTgsIDEsIDE1LCA1LCAyMTcsIAotICAgIDIyOSwgMTUsIDUsIDIxNywgMjMwLCAyNDIsIDc1LCAxNSwgNSwgMjE3LCA3MSwgMTUsIDUsIDIxNywgNzIsIDIxNywgMTkyLCAKLSAgICAxNSwgNSwgMjE3LCA0NCwgMTUsIDUsIDIxNywgMjUsIDE1LCA1LCAyMTcsIDI2LCAyOSwgMjE4LCAyMiwgMTUsIDUsIDIxNywgCi0gICAgMjYsIDExMCwgMjE3LCAyNSwgMTUsIDUsIDIxNywgMjYsIDExMCwgMjE3LCAyNiwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIAotICAgIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgMTUsIDUsIDIxNiwgODIsIDE1LCA1LCAyMTYsIDc3LCAxNSwgNSwgMjE2LCA3NSwgCi0gICAgMTUsIDUsIDIxNiwgNzIsIDE1LCA1LCAyMTYsIDYyLCAxNSwgNSwgMjE2LCA2MywgMTEwLCAyMTYsIDYzLCAyMTIsIDExMCwgCi0gICAgMTEwLCAyMTIsIDEwOSwgMTUsIDUsIDY5LCAxNSwgNSwgMTExLCAyNDIsIDg0LCAxNSwgNSwgMTExLCAxMTEsIDY5LCAxNSwgCi0gICAgNSwgMTExLCAxMTAsIDExMSwgMjI2LCAyMTQsIDExMCwgMjI2LCAyMTQsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgMTUsIDUsIAotICAgIDExMSwgMTEwLCAxMTEsIDIxOCwgMjE4LCAxMTAsIDIxOCwgMjE3LCAxNSwgNSwgMTExLCAxMTAsIDExMSwgMTExLCAyMjMsIAotICAgIDIwMiwgMTEwLCAxMTEsIDIyMywgMjAxLCAxNSwgNSwgMjE1LCAxOTcsIDE1LCA1LCAyMTUsIDE5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg4LCAxNSwgNSwgMjE1LCAxODksIDIzMywgMjEyLCAxNSwgNSwgMjE1LCAxODksIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjE1LCAKLSAgICAxODksIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjE1LCAxODksIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCA2OSwgMTUsIDUsIDIxNSwgCi0gICAgMTg5LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgMTExLCAyNDIsIDc1LCAxNSwgNSwgMjE1LCAxODksIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyMTUsIDE4OSwgMjIwLCAyMjUsIDE1LCA1LCAyMTUsIDE4OSwgMjIwLCAyMjYsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjE1LCAKLSAgICAxODQsIDE1LCA1LCAyMTUsIDE2NywgMTUsIDUsIDIxNSwgMTY4LCAyOSwgMjMzLCAxNDAsIDE1LCA1LCAyMTUsIDE2OCwgMjksIAotICAgIDIzMSwgMTU3LCA5NCwgMjQ4LCAxNjQsIDE1LCA1LCAyMTUsIDE2OCwgMjksIDIyMSwgMjIsIDE1LCA1LCAyMTUsIDE2OCwgCi0gICAgMjksIDY5LCAxNSwgNSwgMjE1LCAxNjYsIDE1LCA1LCAyMTUsIDE2MiwgMTUsIDUsIDIxNSwgMTYzLCAyOSwgMjM0LCAyMTIsIAotICAgIDE1LCA1LCAyMTUsIDE2MywgMjksIDE5MywgMTUsIDUsIDIxNSwgMTYwLCAxNSwgNSwgMjE1LCAxNjEsIDI0MiwgNzUsIDE1LCAKLSAgICA1LCAyMTUsIDEyMSwgMTUsIDUsIDIxNSwgMTIyLCAyNDksIDY1LCAyMTUsIDEyMSwgMTUsIDUsIDIxNSwgMTIyLCAyMjAsIAotICAgIDIyNSwgMTUsIDUsIDIxNSwgMTE5LCAxNSwgNSwgMjE1LCAxMjAsIDI5LCAxMTgsIDk0LCAxNTksIDE1LCA1LCAyMTUsIDEyMCwgCi0gICAgMjksIDExOCwgOTQsIDIwNSwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjU0LCA4NiwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMTU5LCAKLSAgICAxNSwgNSwgMjE1LCAxMjAsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjE1LCAxMjAsIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIxNSwgCi0gICAgMTIwLCAyOSwgMjE1LCAxOTgsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjE1LCAxOTgsIDk0LCAyNTEsIAotICAgIDE4NCwgMTUsIDUsIDIxNSwgMTE4LCAxNSwgNSwgMjE1LCAxMTUsIDE1LCA1LCAyMTUsIDExNCwgMTUsIDUsIDIxNSwgMTEwLCAKLSAgICAxNSwgNSwgMjE1LCAxMTEsIDI5LCA2MSwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjUzLCAxNDEsIDE1LCA1LCAyMTUsIDExMSwgCi0gICAgMjksIDEzNCwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQ2LCAyMywgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQzLCAxMTAsIDE1LCAKLSAgICA1LCAyMTUsIDExMSwgMjksIDI0MywgOTQsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjE1LCAxMTEsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNDIsIDkyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAKLSAgICAxNTksIDE1LCA1LCAyMTUsIDExMSwgMjksIDIzNiwgMzAsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIzNiwgMTEsIDE1LCA1LCAKLSAgICAyMTUsIDExMSwgMjksIDIzNSwgMTYzLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzQsIDEwMSwgMTUsIDUsIDIxNSwgMTExLCAKLSAgICAyOSwgMjMyLCAxNDIsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIzMSwgMSwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMTkzLCAxNSwgCi0gICAgNSwgMjE1LCAxMTEsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjIwLCAxMDYsIDE1LCA1LCAyMTUsIAotICAgIDExMSwgMjksIDIxNiwgODIsIDE1LCA1LCAyMTUsIDExMSwgMjksIDExMSwgOTQsIDI0MiwgODQsIDE1LCA1LCAyMTUsIDExMSwgCi0gICAgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMTUsIDEwOCwgMTUsIDUsIDIxNSwgMTA4LCAxNSwgNSwgMjE1LCAKLSAgICAxMDksIDI5LCA2OSwgMTUsIDUsIDIxNSwgMTAwLCAxNSwgNSwgMjE1LCAxMDEsIDI5LCA2MSwgMTUsIDUsIDIxNSwgMTAxLCAKLSAgICAyOSwgMjMzLCAyMzgsIDE1LCA1LCAyMTUsIDEwMSwgMjksIDIzMywgMjE3LCAxNSwgNSwgMjE1LCAxMDEsIDI5LCAyMTgsIAotICAgIDIyLCAxNSwgNSwgMjE1LCA5NiwgMTUsIDUsIDIxNSwgOTksIDE1LCA1LCAyMTUsIDk3LCAxNSwgNSwgMjE1LCA5MywgMTUsIAotICAgIDUsIDIxNSwgODIsIDE1LCA1LCAyMTUsIDgzLCAyOSwgMjM0LCAyMTIsIDE1LCA1LCAyMTUsIDgxLCAxNSwgNSwgMjEyLCAKLSAgICAxMDksIDE1LCA1LCAyMTIsIDExMCwgMjE3LCAxOTIsIDE1LCA1LCAyMTIsIDExMCwgOTEsIDI5LCAyMzMsIDIxNywgMTUsIDUsIAotICAgIDIxMiwgMTA2LCAxNSwgNSwgMjEyLCA5OSwgMTUsIDUsIDIxMiwgODYsIDE1LCA1LCAyMTIsIDM3LCAxNSwgNSwgMjEyLCAzOCwgCi0gICAgMTEwLCAyMTIsIDM3LCAxNSwgNSwgMjEyLCAzNiwgMTUsIDUsIDIxMiwgMzQsIDE1LCA1LCAyMTIsIDM1LCAyMzUsIDcsIAotICAgIDIxNywgMTkyLCAxNSwgNSwgMjEyLCAyOSwgMTUsIDUsIDIxMiwgMjEsIDE1LCA1LCAyMTIsIDgsIDE1LCA1LCAyMTIsIDYsIAotICAgIDE1LCA1LCAyMTIsIDcsIDI5LCA2MSwgMTUsIDUsIDIxMiwgNSwgMTUsIDUsIDIxMiwgNCwgMTUsIDEyOCwgNSwgMTE3LCAKLSAgICAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTMzLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI1MywgMTQ2LCAxNSwgCi0gICAgMTI4LCA1LCAyNDQsIDUwLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjIwLCA1MywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIAotICAgIDIyMSwgNDMsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIAotICAgIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAxMzMsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjQ3LCAxMzksIDE1LCAKLSAgICAxMjgsIDUsIDI0NCwgNTAsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgCi0gICAgMjIxLCA0MywgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgCi0gICAgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0MywgMjM3LCA2OSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgNjksIDE1LCAxMjgsIDUsIAotICAgIDIyMCwgNTMsIDY5LCAxNSwgMTI4LCA1LCAyMjEsIDQzLCA2OSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDY5LCAxNSwgMTI4LCAKLSAgICA1LCAyMjksIDMxLCA2OSwgMTUsIDEyOCwgNSwgMTIyLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAxMTcsIDI0MywgMTQsIDE1LCAKLSAgICAxMjgsIDUsIDEzMywgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIAotICAgIDI0MywgMTQsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDI0MywgMTQsIDE1LCAKLSAgICAxMjgsIDUsIDI0NSwgMTUwLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAxMjIsIAotICAgIDI0MywgMTEsIDE1LCAxMjgsIDUsIDExNywgMjQzLCAxMSwgMTUsIDEyOCwgNSwgMTMzLCAyNDMsIDExLCAxNSwgMTI4LCA1LCAKLSAgICAyNDMsIDIzNywgMjQzLCAxMSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjQzLCAxMSwgMTUsIDEyOCwgNSwgMTE3LCAyMjEsIDEsIAotICAgIDE1LCAxMjgsIDUsIDEzMywgMjIxLCAxLCAxNSwgMTI4LCA1LCAxMzMsIDIyMSwgMiwgMjE0LCAyNDQsIDE3LCAxNSwgMTI4LCAKLSAgICA1LCAyNDMsIDIzNywgMjIxLCAxLCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyMjEsIDEsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIAotICAgIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjIxLCAxLCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjIxLCAxLCAxNSwgCi0gICAgMTI4LCA1LCAyMjksIDMxLCAyMjEsIDEsIDE1LCAxMjgsIDUsIDEyMiwgMjIwLCAyNTIsIDE1LCAxMjgsIDUsIDExNywgMjIwLCAKLSAgICAyNTIsIDE1LCAxMjgsIDUsIDEzMywgMjIwLCAyNTIsIDE1LCAxMjgsIDUsIDEzMywgMjIwLCAyNTMsIDIxNCwgMjQ0LCAxNywgCi0gICAgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyMjAsIDI1MiwgMTUsIDEyOCwgCi0gICAgNSwgMjIxLCAyLCAyOSwgMjQzLCA5NSwgOTQsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyMjEsIDIsIDI5LCAyNDMsIDk1LCAKLSAgICA5NCwgMjMxLCAxLCAxNSwgMTI4LCA1LCAxMjIsIDI1MSwgMjQsIDE1LCAxMjgsIDUsIDExNywgMjUxLCAyNCwgMTUsIDEyOCwgCi0gICAgNSwgMTMzLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMzMsIDI1MSwgMjUsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgNSwgMjQzLCAKLSAgICAyMzcsIDI1MSwgMjQsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI1MSwgMjQsIDE1LCAxMjgsIDUsIDEzMywgMjE0LCAyNDQsIAotICAgIDI0MywgMjQ1LCAyNDUsIDM5LCAxNSwgMTI4LCA1LCAxMzMsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjQ1LCAzNiwgMTUsIDEyOCwgCi0gICAgNSwgMjQzLCAyMzcsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjMyLCAyNDYsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMTQsIAotICAgIDI0NCwgMjQzLCAyNDUsIDIzMiwgMjQ0LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzIsIAotICAgIDI0NywgNjEsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzMiwgMjQ3LCAyNTMsIDc0LCAxNSwgCi0gICAgMTI4LCA1LCAyMjAsIDUzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDI1MywgMTQzLCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyMTQsIAotICAgIDI0NCwgMjQzLCAyNDUsIDIzNiwgMywgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDUsIAotICAgIDYxLCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzNiwgNSwgMjUzLCA3NCwgMTUsIDEyOCwgNSwgCi0gICAgMjQ1LCAxNTAsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjE1LCA5NSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDIxNCwgMjQ0LCAKLSAgICAyNDMsIDI0NSwgMjE1LCA5NCwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDE5LCAxNSwgCi0gICAgMTI4LCA1LCAyMjksIDMxLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzNiwgMTgsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgCi0gICAgMjQ0LCAyNDMsIDI0NSwgMjM2LCAxNywgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDIwLCAKLSAgICA2MSwgMTUsIDEyOCwgNSwgMTE3LCAyNTMsIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDEzMywgMjUzLCAxNDcsIDIxNywgCi0gICAgMTkyLCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjUzLCAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTMsIAotICAgIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI1MywgMTQ3LCAyMTcsIDE5MiwgMTUsIDEyOCwgNSwgMTIyLCAKLSAgICAyNTIsIDY5LCAxNSwgMTI4LCA1LCAxMTcsIDI1MiwgNjksIDE1LCAxMjgsIDUsIDEzMywgMjUyLCA2OSwgMTUsIDEyOCwgNSwgCi0gICAgMjQzLCAyMzcsIDI1MiwgNjksIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNTIsIDcwLCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIAotICAgIDUsIDI0NCwgNTAsIDI1MiwgNjksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI1MiwgNzAsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgCi0gICAgNSwgMjI5LCA0MSwgMTUsIDEyOCwgNSwgMjI5LCA0MiwgMTUsIDEyOCwgNSwgMTIyLCAyNDUsIDM1LCAxNSwgMTI4LCA1LCAKLSAgICAxMTcsIDI0NSwgMzUsIDE1LCAxMjgsIDUsIDEyMiwgMjE3LCAxMjIsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAxMTcsIDIxNywgCi0gICAgMTIwLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIwLCA0MiwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDEyMiwgCi0gICAgMjE3LCAxMjIsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgNjEsIDE1LCAxMjgsIDUsIDExNywgMjE3LCAxMjAsIDIxNCwgMjQ0LCAKLSAgICAyNDMsIDI0NSwgNjEsIDE1LCAxMjgsIDUsIDEyMiwgMjQ1LCAxNDYsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAxMjIsIDIyNCwgCi0gICAgMTY3LCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgNTMsIDI1MywgMTM1LCAxMjIsIDIyMCwgNDMsIDE1LCAxMjgsIDUsIDUzLCAKLSAgICAyNTMsIDEzNSwgMTIyLCAyMjQsIDE2NiwgMTUsIDIyNSwgMjcsIDUsIDUzLCAyNTMsIDEzNSwgMjEzLCAxOTYsIDI0NywgCi0gICAgMTI0LCAxNSwgMjI1LCAyNywgNSwgNzEsIDI0OSwgMTY0LCAxNSwgMjI1LCAyNywgNSwgMjQ3LCAyMDcsIDI0OSwgMTY0LCAKLSAgICAxNSwgMjI1LCAyNywgNSwgMjQ3LCAyMDcsIDIxNiwgMTc5LCAxMCwgMTEsIDI1NSwgNTgsIDEwLCAxMSwgMjU1LCA1NywgMTAsIAotICAgIDExLCAyNTUsIDU2LCAxMCwgMTEsIDI1NSwgNTUsIDEwLCAxMSwgMjU1LCA1NCwgMTAsIDExLCAyNTUsIDUzLCAxMCwgMTEsIAotICAgIDI1NSwgNTIsIDEwLCAxMSwgMjU1LCA1MSwgMTAsIDExLCAyNTUsIDUwLCAxMCwgMTEsIDI1NSwgNDksIDEwLCAxMSwgMjU1LCAKLSAgICA0OCwgMTAsIDExLCAyNTUsIDQ3LCAxMCwgMTEsIDI1NSwgNDYsIDEwLCAxMSwgMjU1LCA0NSwgMTAsIDExLCAyNTUsIDQ0LCAKLSAgICAxMCwgMTEsIDI1NSwgNDMsIDEwLCAxMSwgMjU1LCA0MiwgMTAsIDExLCAyNTUsIDQxLCAxMCwgMTEsIDI1NSwgNDAsIDEwLCAKLSAgICAxMSwgMjU1LCAzOSwgMTAsIDExLCAyNTUsIDM4LCAxMCwgMTEsIDI1NSwgMzcsIDEwLCAxMSwgMjU1LCAzNiwgMTAsIDExLCAKLSAgICAyNTUsIDM1LCAxMCwgMTEsIDI1NSwgMzQsIDEwLCAxMSwgMjU1LCAzMywgMTAsIDExLCAyNTUsIDMyLCAxMCwgMTEsIDI1NSwgCi0gICAgMzEsIDEwLCAxMSwgMjU1LCAzMCwgMTAsIDExLCAyNTUsIDI5LCAxMCwgMTEsIDI1NSwgMjgsIDEwLCAxMSwgMjU1LCAyNywgCi0gICAgMTAsIDExLCAyNTUsIDI2LCAxMCwgMTEsIDI1NSwgMjUsIDEwLCAxMSwgMjU1LCAyNCwgMTAsIDExLCAyNTUsIDIzLCAxMCwgCi0gICAgMTEsIDI1NSwgMjIsIDEwLCAxMSwgMjU1LCAyMSwgMTAsIDExLCAyNTUsIDIwLCAxMCwgMTEsIDI1NSwgMTksIDEwLCAxMSwgCi0gICAgMjU1LCAxOCwgMTAsIDExLCAyNTUsIDE3LCAxMCwgMTEsIDI1NSwgMTYsIDEwLCAxMSwgMjU1LCAxNSwgMTAsIDExLCAyNTUsIAotICAgIDE0LCAxMCwgMTEsIDI1NSwgMTMsIDEwLCAxMSwgMjU1LCAxMiwgMTAsIDExLCAyNTUsIDExLCAxMCwgMTEsIDI1NSwgMTAsIAotICAgIDEwLCAxMSwgMjU1LCA5LCAxMCwgMTEsIDI1NSwgOCwgMTAsIDExLCAyNTUsIDcsIDEwLCAxMSwgMjU1LCA2LCAxMCwgMTEsIAotICAgIDI1NSwgNSwgMTAsIDExLCAyNTUsIDQsIDEwLCAxMSwgMjU1LCAzLCAxMCwgMTEsIDI1NSwgMiwgMTAsIDExLCAyNTUsIDEsIAotICAgIDEwLCAxMSwgMjU1LCAwLCAxMCwgMTEsIDI1NCwgMjU1LCAxMCwgMTEsIDI1NCwgMjU0LCAxMCwgMTEsIDI1NCwgMjUzLCAxMCwgCi0gICAgMTEsIDI1NCwgMjUyLCAxMCwgMTEsIDI1NCwgMjUxLCAxMCwgMTEsIDI1NCwgMjUwLCAxMCwgMTEsIDI1NCwgMjQ5LCAxMCwgCi0gICAgMTEsIDI1NCwgMjQ4LCAxMCwgMTEsIDI1NCwgMjQ3LCAxMCwgMTEsIDI1NCwgMjQ2LCAxMCwgMTEsIDI1NCwgMjQ1LCAxMCwgCi0gICAgMTEsIDI1NCwgMjQ0LCAxMCwgMTEsIDI1NCwgMjQzLCAxMCwgMTEsIDI1NCwgMjQyLCAxMCwgMTEsIDI1NCwgMjQxLCAxMCwgCi0gICAgMTEsIDI1NCwgMjQwLCAxMCwgMTEsIDI1NCwgMjM5LCAxMCwgMTEsIDI1NCwgMjM4LCAxMCwgMTEsIDI1NCwgMjM3LCAxMCwgCi0gICAgMTEsIDI1NCwgMjM2LCAxMCwgMTEsIDI1NCwgMjM1LCAxMCwgMTEsIDI1MywgNzIsIDEwLCAxMSwgMjUzLCA3MCwgMTAsIDExLCAKLSAgICAyNTMsIDY4LCAxMCwgMTEsIDI1MywgNjYsIDEwLCAxMSwgMjUzLCA2NCwgMTAsIDExLCAyNTMsIDYzLCAxMCwgMTEsIDI1MywgCi0gICAgNjEsIDEwLCAxMSwgMjUzLCA1OSwgMTAsIDExLCAyNTMsIDU3LCAxMCwgMTEsIDI1MywgNTUsIDEwLCAxMSwgMjUwLCAyNDgsIAotICAgIDEwLCAxMSwgMjUwLCAyNDcsIDEwLCAxMSwgMjUwLCAyNDYsIDEwLCAxMSwgMjUwLCAyNDUsIDEwLCAxMSwgMjUwLCAyNDQsIAotICAgIDEwLCAxMSwgMjUwLCAyNDMsIDEwLCAxMSwgMjUwLCAyNDIsIDEwLCAxMSwgMjUwLCAyNDEsIDEwLCAxMSwgMjUwLCAyNDAsIAotICAgIDEwLCAxMSwgMjUwLCAyMzksIDEwLCAxMSwgMjUwLCAyMzgsIDEwLCAxMSwgMjUwLCAyMzcsIDEwLCAxMSwgMjUwLCAyMzYsIAotICAgIDEwLCAxMSwgMjUwLCAyMzUsIDEwLCAxMSwgMjUwLCAyMzQsIDEwLCAxMSwgMjUwLCAyMzMsIDEwLCAxMSwgMjUwLCAyMzIsIAotICAgIDEwLCAxMSwgMjUwLCAyMzEsIDEwLCAxMSwgMjUwLCAyMzAsIDEwLCAxMSwgMjUwLCAyMjksIDEwLCAxMSwgMjUwLCAyMjgsIAotICAgIDEwLCAxMSwgMjUwLCAyMjcsIDEwLCAxMSwgMjUwLCAyMjYsIDEwLCAxMSwgMjUwLCAyMjUsIDEwLCAxMSwgMjUwLCAyMjQsIAotICAgIDEwLCAxMSwgMjUwLCAyMjMsIDEwLCAxMSwgMjUwLCAyMjIsIDEwLCAxMSwgMjUwLCAyMjEsIDEwLCAxMSwgMjQ5LCAyLCAxMCwgCi0gICAgMTEsIDI0OSwgMSwgMTAsIDExLCAyNDksIDAsIDEwLCAxMSwgMjQ4LCAyNTUsIDEwLCAxMSwgMjQ4LCAyNTQsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNTMsIDEwLCAxMSwgMjQ4LCAyNTIsIDEwLCAxMSwgMjQ4LCAyNTEsIDEwLCAxMSwgMjQ4LCAyNTAsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNDksIDEwLCAxMSwgMjQ4LCAyNDgsIDEwLCAxMSwgMjQ4LCAyNDcsIDEwLCAxMSwgMjQ4LCAyNDYsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNDUsIDEwLCAxMSwgMjQ4LCAyNDQsIDEwLCAxMSwgMjQ4LCAyNDMsIDEwLCAxMSwgMjQ4LCAyNDIsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNDEsIDEwLCAxMSwgMjQ4LCAyNDAsIDEwLCAxMSwgMjQ4LCAyMzksIDEwLCAxMSwgMjQ4LCAyMzgsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMzcsIDEwLCAxMSwgMjQ4LCAyMzYsIDEwLCAxMSwgMjQ4LCAyMzUsIDEwLCAxMSwgMjQ4LCAyMzQsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMzMsIDEwLCAxMSwgMjQ4LCAyMzIsIDEwLCAxMSwgMjQ4LCAyMzEsIDEwLCAxMSwgMjQ4LCAyMzAsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMjksIDEwLCAxMSwgMjQ4LCAyMjgsIDEwLCAxMSwgMjQ4LCAyMjcsIDEwLCAxMSwgMjQ4LCAyMjYsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMjUsIDEwLCAxMSwgMjQ4LCAyMjQsIDEwLCAxMSwgMjQ4LCAyMjMsIDEwLCAxMSwgMjQ4LCAyMjIsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMjEsIDEwLCAxMSwgMjQ4LCAyMjAsIDEwLCAxMSwgMjQ4LCAyMTksIDEwLCAxMSwgMjQ4LCAyMTgsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMTcsIDEwLCAxMSwgMjQ4LCAyMTYsIDEwLCAxMSwgMjQ4LCAyMTUsIDEwLCAxMSwgMjQ4LCAyMTQsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMTMsIDEwLCAxMSwgMjQ4LCAyMTIsIDEwLCAxMSwgMjQ4LCAyMTEsIDEwLCAxMSwgMjQ4LCAyMTAsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMDksIDEwLCAxMSwgMjQ4LCAyMDgsIDEwLCAxMSwgMjQ4LCAyMDcsIDEwLCAxMSwgMjQ4LCAyMDYsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMDUsIDEwLCAxMSwgMjQ4LCAyMDQsIDEwLCAxMSwgMjQ4LCAyMDMsIDEwLCAxMSwgMjQ4LCAyMDIsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMDEsIDEwLCAxMSwgMjQ4LCAyMDAsIDEwLCAxMSwgMjQ4LCAxOTksIDEwLCAxMSwgMjQ4LCAxOTgsIDEwLCAxMSwgCi0gICAgMjQ4LCAxOTcsIDEwLCAxMSwgMjQ4LCAxOTYsIDEwLCAxMSwgMjQ4LCAxOTUsIDEwLCAxMSwgMjQ4LCAxOTQsIDEwLCAxMSwgCi0gICAgMjQ4LCAxOTMsIDEwLCAxMSwgMjQ4LCAxOTIsIDEwLCAxMSwgMjQ4LCAxOTEsIDEwLCAxMSwgMjQ4LCAxOTAsIDEwLCAxMSwgCi0gICAgMjQ4LCAxODksIDEwLCAxMSwgMjQ4LCAxODgsIDEwLCAxMSwgMjQ4LCAxODcsIDEwLCAxMSwgMjQ4LCAxODYsIDEwLCAxMSwgCi0gICAgMjQ4LCAxODUsIDEwLCAxMSwgMjQ4LCAxODQsIDEwLCAxMSwgMjQ4LCAxODMsIDEwLCAxMSwgMjQ4LCAxODIsIDEwLCAxMSwgCi0gICAgMjQ4LCAxODEsIDEwLCAxMSwgMjQ4LCAxODAsIDEwLCAxMSwgMjQ4LCAxNzksIDEwLCAxMSwgMjQ4LCAxNzgsIDEwLCAxMSwgCi0gICAgMjQ4LCAxNzcsIDEwLCAxMSwgMjQ4LCAxNzYsIDEwLCAxMSwgMjQ4LCAxNzUsIDEwLCAxMSwgMjQ4LCAxNzQsIDEwLCAxMSwgCi0gICAgMjQ4LCAxNzMsIDEwLCAxMSwgMjQ4LCAxNzIsIDEwLCAxMSwgMjQ4LCAxNzEsIDEwLCAxMSwgMjQ4LCAxNzAsIDEwLCAxMSwgCi0gICAgMjQ4LCAxNjksIDEwLCAxMSwgMjQ4LCAxNjgsIDEwLCAxMSwgMjQ4LCAxNjcsIDEwLCAxMSwgMjQ1LCAyMzUsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMzQsIDEwLCAxMSwgMjQ1LCAyMzMsIDEwLCAxMSwgMjQ1LCAyMzIsIDEwLCAxMSwgMjQ1LCAyMzEsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMzAsIDEwLCAxMSwgMjQ1LCAyMjksIDEwLCAxMSwgMjQ1LCAyMjgsIDEwLCAxMSwgMjQ1LCAyMjcsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMjYsIDEwLCAxMSwgMjQ1LCAyMjUsIDEwLCAxMSwgMjQ1LCAyMjQsIDEwLCAxMSwgMjQ1LCAyMjMsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMjIsIDEwLCAxMSwgMjQ1LCAyMjEsIDEwLCAxMSwgMjQ1LCAyMjAsIDEwLCAxMSwgMjQ1LCAyMTksIDEwLCAxMSwgCi0gICAgMjQ1LCAyMTgsIDEwLCAxMSwgMjQ1LCAyMTcsIDEwLCAxMSwgMjQ1LCAyMTYsIDEwLCAxMSwgMjQ1LCAyMTUsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMTQsIDEwLCAxMSwgMjQ1LCAyMTMsIDEwLCAxMSwgMjQ1LCAyMTIsIDEwLCAxMSwgMjQ1LCAyMTEsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMTAsIDEwLCAxMSwgMjQ1LCAyMDksIDEwLCAxMSwgMjQ1LCAyMDgsIDEwLCAxMSwgMjQ1LCAyMDcsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMDYsIDEwLCAxMSwgMjQ1LCAyMDUsIDEwLCAxMSwgMjQ1LCAyMDQsIDEwLCAxMSwgMjQ1LCAyMDMsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMDIsIDEwLCAxMSwgMjQ1LCAyMDEsIDEwLCAxMSwgMjQ1LCAyMDAsIDEwLCAxMSwgMjQ1LCAxOTksIDEwLCAxMSwgCi0gICAgMjQ1LCAxOTgsIDEwLCAxMSwgMjQ1LCAxOTcsIDEwLCAxMSwgMjQ1LCAxOTYsIDEwLCAxMSwgMjQ1LCAxOTUsIDEwLCAxMSwgCi0gICAgMjQ1LCAxOTQsIDEwLCAxMSwgMjQ1LCAxOTMsIDEwLCAxMSwgMjQ1LCAxOTIsIDEwLCAxMSwgMjQ0LCAyMjksIDEwLCAxMSwgCi0gICAgMjQ0LCAyMjgsIDEwLCAxMSwgMjQ0LCAyMjcsIDEwLCAxMSwgMjQ0LCAyMjYsIDEwLCAxMSwgMjQ0LCAyMjUsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMjQsIDEwLCAxMSwgMjQ0LCAyMjMsIDEwLCAxMSwgMjQ0LCAyMjIsIDEwLCAxMSwgMjQ0LCAyMjEsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMjAsIDEwLCAxMSwgMjQ0LCAyMTksIDEwLCAxMSwgMjQ0LCAyMTgsIDEwLCAxMSwgMjQ0LCAyMTcsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMTYsIDEwLCAxMSwgMjQ0LCAyMTUsIDEwLCAxMSwgMjQ0LCAyMTQsIDEwLCAxMSwgMjQ0LCAyMTMsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMTIsIDEwLCAxMSwgMjQ0LCAyMTEsIDEwLCAxMSwgMjQ0LCAyMTAsIDEwLCAxMSwgMjQ0LCAyMDksIDEwLCAxMSwgCi0gICAgMjQ0LCAyMDgsIDEwLCAxMSwgMjQ0LCAyMDcsIDEwLCAxMSwgMjQ0LCAyMDYsIDEwLCAxMSwgMjQ0LCAyMDUsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMDQsIDEwLCAxMSwgMjQ0LCAyMDMsIDEwLCAxMSwgMjQ0LCAyMDIsIDEwLCAxMSwgMjQ0LCAyMDEsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMDAsIDEwLCAxMSwgMjQ0LCAxOTksIDEwLCAxMSwgMjQ0LCAxOTgsIDEwLCAxMSwgMjQ0LCAxOTcsIDEwLCAxMSwgCi0gICAgMjQ0LCAxOTYsIDEwLCAxMSwgMjQ0LCAxOTUsIDEwLCAxMSwgMjQ0LCAxOTQsIDEwLCAxMSwgMjQ0LCAxOTMsIDEwLCAxMSwgCi0gICAgMjQ0LCAxOTIsIDEwLCAxMSwgMjQ0LCAxOTEsIDEwLCAxMSwgMjQ0LCAxOTAsIDEwLCAxMSwgMjQ0LCAxODksIDEwLCAxMSwgCi0gICAgMjQ0LCAxODgsIDEwLCAxMSwgMjQ0LCAxODcsIDEwLCAxMSwgMjQ0LCAxODYsIDEwLCAxMSwgMjQ0LCAxODUsIDEwLCAxMSwgCi0gICAgMjQ0LCAxODQsIDEwLCAxMSwgMjQ0LCAxODMsIDEwLCAxMSwgMjQ0LCAxODIsIDEwLCAxMSwgMjQ0LCAxODEsIDEwLCAxMSwgCi0gICAgMjQ0LCAxODAsIDEwLCAxMSwgMjQ0LCAxNzksIDEwLCAxMSwgMjQ0LCAxNzgsIDEwLCAxMSwgMjQ0LCAxNzcsIDEwLCAxMSwgCi0gICAgMjQ0LCAxNzYsIDEwLCAxMSwgMjQ0LCAxNzUsIDEwLCAxMSwgMjQ0LCAxNzQsIDEwLCAxMSwgMjQ0LCAxNzMsIDEwLCAxMSwgCi0gICAgMjQ0LCAxNzIsIDEwLCAxMSwgMjQ0LCAxNzEsIDEwLCAxMSwgMjQ0LCAxNzAsIDEwLCAxMSwgMjQ0LCAxNjksIDEwLCAxMSwgCi0gICAgMjQ0LCAxNjgsIDEwLCAxMSwgMjQ0LCAxNjcsIDEwLCAxMSwgMjQ0LCAxNjYsIDEwLCAxMSwgMjQ0LCAxNjUsIDEwLCAxMSwgCi0gICAgMjQzLCAxNzYsIDEwLCAxMSwgMjQzLCAxNzUsIDEwLCAxMSwgMjQzLCAxNzQsIDEwLCAxMSwgMjQzLCAxNzMsIDEwLCAxMSwgCi0gICAgMjQzLCAxNzIsIDEwLCAxMSwgMjQzLCAxNzEsIDEwLCAxMSwgMjQzLCAxNzAsIDEwLCAxMSwgMjQzLCAxNjksIDEwLCAxMSwgCi0gICAgMjQzLCAxNjgsIDEwLCAxMSwgMjQzLCAxNjcsIDEwLCAxMSwgMjQzLCAxNjYsIDEwLCAxMSwgMjQzLCAxNjUsIDEwLCAxMSwgCi0gICAgMjQzLCAxNjQsIDEwLCAxMSwgMjQzLCAxNjMsIDEwLCAxMSwgMjQzLCAxNjIsIDEwLCAxMSwgMjQzLCAxNjEsIDEwLCAxMSwgCi0gICAgMjQzLCAxNjAsIDEwLCAxMSwgMjQzLCAxNTksIDEwLCAxMSwgMjQzLCAxNTgsIDEwLCAxMSwgMjQzLCAxNTcsIDEwLCAxMSwgCi0gICAgMjQzLCAxNTYsIDEwLCAxMSwgMjQzLCAxNTUsIDEwLCAxMSwgMjQzLCAxNTQsIDEwLCAxMSwgMjQzLCAxNTMsIDEwLCAxMSwgCi0gICAgMjQzLCAxNTIsIDEwLCAxMSwgMjQzLCAxNTEsIDEwLCAxMSwgMjQzLCAxNTAsIDEwLCAxMSwgMjQzLCAxNDksIDEwLCAxMSwgCi0gICAgMjQzLCAxNDgsIDEwLCAxMSwgMjQzLCAxNDcsIDEwLCAxMSwgMjQzLCAxNDYsIDEwLCAxMSwgMjQzLCAxNDUsIDEwLCAxMSwgCi0gICAgMjQzLCAxNDQsIDEwLCAxMSwgMjQzLCAxNDMsIDEwLCAxMSwgMjQzLCAxNDIsIDEwLCAxMSwgMjQzLCAxNDEsIDEwLCAxMSwgCi0gICAgMjQzLCAxNDAsIDEwLCAxMSwgMjQzLCAxMzksIDEwLCAxMSwgMjQzLCAxMzgsIDEwLCAxMSwgMjQzLCAxMzcsIDEwLCAxMSwgCi0gICAgMjQzLCAxMzYsIDEwLCAxMSwgMjQzLCAxMzUsIDEwLCAxMSwgMjQzLCAxMzQsIDEwLCAxMSwgMjQzLCAxMzMsIDEwLCAxMSwgCi0gICAgMjQzLCAxMzIsIDEwLCAxMSwgMjQzLCAxMzEsIDEwLCAxMSwgMjQzLCAxMzAsIDEwLCAxMSwgMjQzLCAxMjksIDEwLCAxMSwgCi0gICAgMjQzLCAxMjgsIDEwLCAxMSwgMjQzLCAxMjcsIDEwLCAxMSwgMjQzLCAxMjYsIDEwLCAxMSwgMjQzLCAxMjUsIDEwLCAxMSwgCi0gICAgMjQzLCAxMjQsIDEwLCAxMSwgMjQzLCAxMjMsIDEwLCAxMSwgMjQzLCAxMjIsIDEwLCAxMSwgMjQzLCAxMjEsIDEwLCAxMSwgCi0gICAgMjQzLCAxMjAsIDEwLCAxMSwgMjQzLCAxMTksIDEwLCAxMSwgMjQzLCAxMTgsIDEwLCAxMSwgMjQzLCAxMTcsIDEwLCAxMSwgCi0gICAgMjQzLCAxMTYsIDEwLCAxMSwgMjQzLCAxMTUsIDEwLCAxMSwgMjQzLCAxMTQsIDEwLCAxMSwgMjQzLCAxMTMsIDEwLCAxMSwgCi0gICAgMjQyLCAzOSwgMTAsIDExLCAyNDIsIDM4LCAxMCwgMTEsIDI0MiwgMzcsIDEwLCAxMSwgMjQyLCAzNiwgMTAsIDExLCAyNDIsIAotICAgIDM1LCAxMCwgMTEsIDI0MiwgMzQsIDEwLCAxMSwgMjQyLCAzMywgMTAsIDExLCAyNDIsIDMyLCAxMCwgMTEsIDI0MiwgMzEsIAotICAgIDEwLCAxMSwgMjQwLCAxMzAsIDEwLCAxMSwgMjQwLCAxMjksIDEwLCAxMSwgMjQwLCAxMjgsIDEwLCAxMSwgMjQwLCAxMjcsIAotICAgIDEwLCAxMSwgMjQwLCAxMjYsIDEwLCAxMSwgMjQwLCAxMjUsIDEwLCAxMSwgMjQwLCAxMjQsIDEwLCAxMSwgMjQwLCAxMjMsIAotICAgIDEwLCAxMSwgMjQwLCAxMjIsIDEwLCAxMSwgMjQwLCAxMjEsIDEwLCAxMSwgMjQwLCAxMjAsIDEwLCAxMSwgMjQwLCAxMTksIAotICAgIDEwLCAxMSwgMjQwLCAxMTgsIDEwLCAxMSwgMjQwLCAxMTcsIDEwLCAxMSwgMjQwLCAxMTYsIDEwLCAxMSwgMjQwLCAxMTUsIAotICAgIDEwLCAxMSwgMjQwLCAxMTQsIDEwLCAxMSwgMjQwLCAxMTMsIDEwLCAxMSwgMjQwLCAxMTIsIDEwLCAxMSwgMjM1LCAyNiwgCi0gICAgMTAsIDExLCAyMzUsIDI1LCAxMCwgMTEsIDIzNSwgMjQsIDEwLCAxMSwgMjM1LCAyMywgMTAsIDExLCAyMzUsIDIyLCAxMCwgCi0gICAgMTEsIDIzNSwgMjEsIDEwLCAxMSwgMjM1LCAyMCwgMTAsIDExLCAyMzUsIDE5LCAxMCwgMTEsIDIzMywgMTY4LCAxMCwgMTEsIAotICAgIDIzMywgMTY3LCAxMCwgMTEsIDIzMywgMTY2LCAxMCwgMTEsIDIzMywgMTY1LCAxMCwgMTEsIDIzMywgMTY0LCAxMCwgMTEsIAotICAgIDIzMywgMTYzLCAxMCwgMTEsIDIzMywgMTYyLCAxMCwgMTEsIDIzMywgMTYxLCAxMCwgMTEsIDIzMywgMTYwLCAxMCwgMTEsIAotICAgIDIzMywgMTU5LCAxMCwgMTEsIDIzMiwgMTA5LCAxMCwgMTEsIDIzMiwgMTA4LCAxMCwgMTEsIDIzMiwgMTA3LCAxMCwgMTEsIAotICAgIDIzMiwgMTA2LCAxMCwgMTEsIDIzMiwgMTA1LCAxMCwgMTEsIDIzMiwgMTA0LCAxMCwgMTEsIDIzMiwgMTAzLCAxMCwgMTEsIAotICAgIDIzMiwgMTAyLCAxMCwgMTEsIDIzMiwgMTAxLCAxMCwgMTEsIDIzMiwgMTAwLCAxMCwgMTEsIDIzMiwgOTksIDEwLCAxMSwgCi0gICAgMjMyLCA5OCwgMTAsIDExLCAyMzIsIDk3LCAxMCwgMTEsIDIzMiwgOTYsIDEwLCAxMSwgMjMyLCA5NSwgMTAsIDExLCAyMzIsIAotICAgIDk0LCAxMCwgMTEsIDIzMiwgOTMsIDEwLCAxMSwgMjMyLCA5MiwgMTAsIDExLCAyMzIsIDkxLCAxMCwgMTEsIDIzMiwgOTAsIAotICAgIDEwLCAxMSwgMjMyLCA4OSwgMTAsIDExLCAyMzIsIDg4LCAxMCwgMTEsIDIzMiwgODcsIDEwLCAxMSwgMjMyLCA4NiwgMTAsIAotICAgIDExLCAyMzIsIDg1LCAxMCwgMTEsIDIzMiwgODQsIDEwLCAxMSwgMjMyLCA4MywgMTAsIDExLCAyMzIsIDgyLCAxMCwgMTEsIAotICAgIDIzMiwgODEsIDEwLCAxMSwgMjMyLCA4MCwgMTAsIDExLCAyMzIsIDc5LCAxMCwgMTEsIDIzMiwgNzgsIDEwLCAxMSwgMjMyLCAKLSAgICA3NywgMTAsIDExLCAyMzIsIDc2LCAxMCwgMTEsIDIzMiwgNzUsIDEwLCAxMSwgMjMyLCA3NCwgMTAsIDExLCAyMzIsIDczLCAKLSAgICAxMCwgMTEsIDIzMiwgNzIsIDEwLCAxMSwgMjMyLCA3MSwgMTAsIDExLCAyMzIsIDcwLCAxMCwgMTEsIDIzMiwgNjksIDEwLCAKLSAgICAxMSwgMjMyLCA2OCwgMTAsIDExLCAyMzIsIDY3LCAxMCwgMTEsIDIzMiwgNjYsIDEwLCAxMSwgMjMyLCA2NSwgMTAsIDExLCAKLSAgICAyMzIsIDY0LCAxMCwgMTEsIDIzMiwgNjMsIDEwLCAxMSwgMjMyLCA2MiwgMTAsIDExLCAyMzIsIDYxLCAxMCwgMTEsIDIzMiwgCi0gICAgNjAsIDEwLCAxMSwgMjMyLCA1OSwgMTAsIDExLCAyMzIsIDU4LCAxMCwgMTEsIDIzMiwgNTcsIDEwLCAxMSwgMjMyLCA1NiwgCi0gICAgMTAsIDExLCAyMzIsIDU1LCAxMCwgMTEsIDIzMiwgNTQsIDEwLCAxMSwgMjMyLCA1MywgMTAsIDExLCAyMzIsIDUyLCAxMCwgCi0gICAgMTEsIDIzMiwgNTEsIDEwLCAxMSwgMjMyLCA1MCwgMTAsIDExLCAyMzIsIDQ5LCAxMCwgMTEsIDIzMiwgNDgsIDEwLCAxMSwgCi0gICAgMjMyLCA0NywgMTAsIDExLCAyMzIsIDQ2LCAxMCwgMTEsIDIzMiwgNDUsIDEwLCAxMSwgMjMyLCA0NCwgMTAsIDExLCAyMzAsIAotICAgIDk1LCAxMCwgMTEsIDIzMCwgOTQsIDEwLCAxMSwgMjMwLCA5MywgMTAsIDExLCAyMzAsIDkyLCAxMCwgMTEsIDIzMCwgOTEsIAotICAgIDEwLCAxMSwgMjMwLCA5MCwgMTAsIDExLCAyMzAsIDg5LCAxMCwgMTEsIDIzMCwgODgsIDEwLCAxMSwgMjMwLCA4NywgMTAsIAotICAgIDExLCAyMzAsIDg2LCAxMCwgMTEsIDIzMCwgODUsIDEwLCAxMSwgMjMwLCA4NCwgMTAsIDExLCAyMzAsIDgzLCAxMCwgMTEsIAotICAgIDIzMCwgODIsIDEwLCAxMSwgMjMwLCA4MSwgMTAsIDExLCAyMzAsIDgwLCAxMCwgMTEsIDIzMCwgNzksIDEwLCAxMSwgMjMwLCAKLSAgICA3OCwgMTAsIDExLCAyMzAsIDc3LCAxMCwgMTEsIDIzMCwgNzYsIDEwLCAxMSwgMjMwLCA3NSwgMTAsIDExLCAyMzAsIDc0LCAKLSAgICAxMCwgMTEsIDIzMCwgNzMsIDEwLCAxMSwgMjMwLCA3MiwgMTAsIDExLCAyMzAsIDcxLCAxMCwgMTEsIDIzMCwgNzAsIDEwLCAKLSAgICAxMSwgMjMwLCA2OSwgMTAsIDExLCAyMzAsIDY4LCAxMCwgMTEsIDIzMCwgNjcsIDEwLCAxMSwgMjMwLCA2NiwgMTAsIDExLCAKLSAgICAyMzAsIDY1LCAxMCwgMTEsIDIzMCwgNjQsIDEwLCAxMSwgMjMwLCA2MywgMTAsIDExLCAyMzAsIDYyLCAxMCwgMTEsIDIzMCwgCi0gICAgNjEsIDEwLCAxMSwgMjMwLCA2MCwgMTAsIDExLCAyMzAsIDU5LCAxMCwgMTEsIDIzMCwgNTgsIDEwLCAxMSwgMjMwLCA1NywgCi0gICAgMTAsIDExLCAyMzAsIDU2LCAxMCwgMTEsIDIzMCwgNTUsIDEwLCAxMSwgMjMwLCA1NCwgMTAsIDExLCAyMzAsIDUzLCAxMCwgCi0gICAgMTEsIDIzMCwgNTIsIDEwLCAxMSwgMjMwLCA1MSwgMTAsIDExLCAyMzAsIDUwLCAxMCwgMTEsIDIzMCwgNDksIDEwLCAxMSwgCi0gICAgMjMwLCA0OCwgMTAsIDExLCAyMzAsIDQ3LCAxMCwgMTEsIDIyOCwgMjIyLCAxMCwgMTEsIDIyOCwgMjIxLCAxMCwgMTEsIAotICAgIDIyOCwgMjIwLCAxMCwgMTEsIDIyOCwgMjE5LCAxMCwgMTEsIDIyOCwgMjE4LCAxMCwgMTEsIDIyOCwgMjE3LCAxMCwgMTEsIAotICAgIDIyOCwgMjE2LCAxMCwgMTEsIDIyOCwgMjE1LCAxMCwgMTEsIDIyOCwgMjE0LCAxMCwgMTEsIDIyOCwgMjEzLCAxMCwgMTEsIAotICAgIDIyOCwgMjEyLCAxMCwgMTEsIDIyOCwgMjExLCAxMCwgMTEsIDIyOCwgMjEwLCAxMCwgMTEsIDIyOCwgMjA5LCAxMCwgMTEsIAotICAgIDIyOCwgMjA4LCAxMCwgMTEsIDIyOCwgMjA3LCAxMCwgMTEsIDIyOCwgMjA2LCAxMCwgMTEsIDIyOCwgMjA1LCAxMCwgMTEsIAotICAgIDIyOCwgMjA0LCAxMCwgMTEsIDIyOCwgMjAzLCAxMCwgMTEsIDIyOCwgMjAyLCAxMCwgMTEsIDIyOCwgMjAxLCAxMCwgMTEsIAotICAgIDIyOCwgOTEsIDEwLCAxMSwgMjI4LCA5MCwgMTAsIDExLCAyMjgsIDg5LCAxMCwgMTEsIDIyOCwgODgsIDEwLCAxMSwgMjI4LCAKLSAgICA4NywgMTAsIDExLCAyMjgsIDg2LCAxMCwgMTEsIDIyOCwgODUsIDEwLCAxMSwgMjI4LCA4NCwgMTAsIDExLCAyMjgsIDgzLCAKLSAgICAxMCwgMTEsIDIyOCwgODIsIDEwLCAxMSwgMjI4LCA4MSwgMTAsIDExLCAyMjgsIDgwLCAxMCwgMTEsIDIyOCwgNzksIDEwLCAKLSAgICAxMSwgMjI4LCA3OCwgMTAsIDExLCAyMjgsIDc3LCAxMCwgMTEsIDIyOCwgNzYsIDEwLCAxMSwgMjI4LCA3NSwgMTAsIDExLCAKLSAgICAyMjgsIDc0LCAxMCwgMTEsIDIyOCwgNzMsIDEwLCAxMSwgMjI4LCA3MiwgMTAsIDExLCAyMjgsIDcxLCAxMCwgMTEsIDIyOCwgCi0gICAgNzAsIDEwLCAxMSwgMjI4LCA2OSwgMTAsIDExLCAyMjgsIDY4LCAxMCwgMTEsIDIyOCwgNjcsIDEwLCAxMSwgMjI4LCA2NiwgCi0gICAgMTAsIDExLCAyMjcsIDE5NiwgMTAsIDExLCAyMjcsIDE5NSwgMTAsIDExLCAyMjcsIDE5NCwgMTAsIDExLCAyMjcsIDE5MywgCi0gICAgMTAsIDExLCAyMjcsIDE5MiwgMTAsIDExLCAyMjcsIDE5MSwgMTAsIDExLCAyMjcsIDE5MCwgMTAsIDExLCAyMjcsIDE4OSwgCi0gICAgMTAsIDExLCAyMjcsIDE4OCwgMTAsIDExLCAyMjcsIDE4NywgMTAsIDExLCAyMjcsIDE4NiwgMTAsIDExLCAyMjcsIDE4NSwgCi0gICAgMTAsIDExLCAyMjcsIDE4NCwgMTAsIDExLCAyMjcsIDE4MywgMTAsIDExLCAyMjcsIDE4MiwgMTAsIDExLCAyMjcsIDE4MSwgCi0gICAgMTAsIDExLCAyMjcsIDE4MCwgMTAsIDExLCAyMjcsIDE3OSwgMTAsIDExLCAyMjcsIDE3OCwgMTAsIDExLCAyMjcsIDE3NywgCi0gICAgMTAsIDExLCAyMjcsIDE3NiwgMTAsIDExLCAyMjcsIDE3NSwgMTAsIDExLCAyMjcsIDE3NCwgMTAsIDExLCAyMjcsIDE3MywgCi0gICAgMTAsIDExLCAyMjcsIDE3MiwgMTAsIDExLCAyMjcsIDE3MSwgMTAsIDExLCAyMjcsIDE3MCwgMTAsIDExLCAyMjcsIDE2OSwgCi0gICAgMTAsIDExLCAyMjcsIDE2OCwgMTAsIDExLCAyMjcsIDE2NywgMTAsIDExLCAyMjcsIDE2NiwgMTAsIDExLCAyMjcsIDE2NSwgCi0gICAgMTAsIDExLCAyMjcsIDE2NCwgMTAsIDExLCAyMjcsIDE2MywgMTAsIDExLCAyMjcsIDE2MiwgMTAsIDExLCAyMjcsIDE2MSwgCi0gICAgMTAsIDExLCAyMjcsIDE2MCwgMTAsIDExLCAyMjcsIDE1OSwgMTAsIDExLCAyMjcsIDE1OCwgMTAsIDExLCAyMjcsIDE1NywgCi0gICAgMTAsIDExLCAyMjcsIDE1NiwgMTAsIDExLCAyMjcsIDE1NSwgMTAsIDExLCAyMjcsIDE1NCwgMTAsIDExLCAyMjcsIDE1MywgCi0gICAgMTAsIDExLCAyMjcsIDE1MiwgMTAsIDExLCAyMjcsIDE1MSwgMTAsIDExLCAyMjcsIDE1MCwgMTAsIDExLCAyMjcsIDE0OSwgCi0gICAgMTAsIDExLCAyMjcsIDE0OCwgMTAsIDExLCAyMjcsIDE0NywgMTAsIDExLCAyMjcsIDE0NiwgMTAsIDExLCAyMjcsIDE0NSwgCi0gICAgMTAsIDExLCAyMjcsIDE0NCwgMTAsIDExLCAyMjcsIDE0MywgMTAsIDExLCAyMjcsIDE0MiwgMTAsIDExLCAyMjcsIDE0MSwgCi0gICAgMTAsIDExLCAyMjcsIDE0MCwgMTAsIDExLCAyMjcsIDEzOSwgMTAsIDExLCAyMjcsIDEzOCwgMTAsIDExLCAyMjcsIDEzNywgCi0gICAgMTAsIDExLCAyMjcsIDEzNiwgMTAsIDExLCAyMjcsIDEzNSwgMTAsIDExLCAyMjcsIDEzNCwgMTAsIDExLCAyMjcsIDEzMywgCi0gICAgMTAsIDExLCAyMjcsIDEzMiwgMTAsIDExLCAyMjcsIDEzMSwgMTAsIDExLCAyMjcsIDEzMCwgMTAsIDExLCAyMjcsIDEyOSwgCi0gICAgMTAsIDExLCAyMjcsIDEyOCwgMTAsIDExLCAyMjcsIDEyNywgMTAsIDExLCAyMjcsIDEyNiwgMTAsIDExLCAyMjcsIDEyNSwgCi0gICAgMTAsIDExLCAyMjcsIDEyNCwgMTAsIDExLCAyMjcsIDEyMywgMTAsIDExLCAyMjcsIDEyMiwgMTAsIDExLCAyMjYsIDIyOCwgCi0gICAgMTAsIDExLCAyMjYsIDIyNywgMTAsIDExLCAyMjYsIDIyNiwgMTAsIDExLCAyMjYsIDIyNSwgMTAsIDExLCAyMjYsIDIyNCwgCi0gICAgMTAsIDExLCAyMjYsIDIyMywgMTAsIDExLCAyMjYsIDIyMiwgMTAsIDExLCAyMjYsIDIyMSwgMTAsIDExLCAyMjYsIDIyMCwgCi0gICAgMTAsIDExLCAyMjYsIDIxOSwgMTAsIDExLCAyMjYsIDIxOCwgMTAsIDExLCAyMjYsIDIxNywgMTAsIDExLCAyMjYsIDIxNiwgCi0gICAgMTAsIDExLCAyMjQsIDIzOSwgMTAsIDExLCAyMjQsIDIzOCwgMTAsIDExLCAyMjQsIDIzNywgMTAsIDExLCAyMjQsIDIzNiwgCi0gICAgMTAsIDExLCAyMjQsIDIzNSwgMTAsIDExLCAyMjQsIDIzNCwgMTAsIDExLCAyMjQsIDIzMywgMTAsIDExLCAyMjQsIDExMSwgCi0gICAgMTAsIDExLCAyMjQsIDExMCwgMTAsIDExLCAyMjQsIDEwOSwgMTAsIDExLCAyMjQsIDEwOCwgMTAsIDExLCAyMjQsIDEwNywgCi0gICAgMTAsIDExLCAyMjQsIDEwNiwgMTAsIDExLCAyMjQsIDEwNSwgMTAsIDExLCAyMjQsIDEwNCwgMTAsIDExLCAyMjQsIDEwMywgCi0gICAgMTAsIDExLCAyMjQsIDEwMiwgMTAsIDExLCAyMjQsIDEwMSwgMTAsIDExLCAyMjQsIDEwMCwgMTAsIDExLCAyMjQsIDk5LCAKLSAgICAxMCwgMTEsIDIyNCwgOTgsIDEwLCAxMSwgMjI0LCA5NywgMTAsIDExLCAyMjQsIDk2LCAxMCwgMTEsIDIyNCwgOTUsIDEwLCAKLSAgICAxMSwgMjI0LCA5NCwgMTAsIDExLCAyMjQsIDkzLCAxMCwgMTEsIDIyNCwgOTIsIDEwLCAxMSwgMjI0LCA5MSwgMTAsIDExLCAKLSAgICAyMjQsIDkwLCAxMCwgMTEsIDIyNCwgODksIDEwLCAxMSwgMjI0LCA4OCwgMTAsIDExLCAyMjQsIDg3LCAxMCwgMTEsIDIyNCwgCi0gICAgODYsIDEwLCAxMSwgMjI0LCA4NSwgMTAsIDExLCAyMjQsIDg0LCAxMCwgMTEsIDIyNCwgODMsIDEwLCAxMSwgMjI0LCA4MiwgCi0gICAgMTAsIDExLCAyMjQsIDgxLCAxMCwgMTEsIDIyNCwgODAsIDEwLCAxMSwgMjI0LCA3OSwgMTAsIDExLCAyMjQsIDc4LCAxMCwgCi0gICAgMTEsIDIyMywgMSwgMTAsIDExLCAyMjMsIDAsIDEwLCAxMSwgMjIyLCAyNTUsIDEwLCAxMSwgMjIyLCAyNTQsIDEwLCAxMSwgCi0gICAgMjIyLCAyNTMsIDEwLCAxMSwgMjIyLCAyNTIsIDEwLCAxMSwgMjIyLCAyNTEsIDEwLCAxMSwgMjIyLCAyNTAsIDEwLCAxMSwgCi0gICAgMjIyLCAyNDksIDEwLCAxMSwgMjIyLCAyNDgsIDEwLCAxMSwgMjIyLCAyNDcsIDEwLCAxMSwgMjIyLCAyNDYsIDEwLCAxMSwgCi0gICAgMjIyLCAyNDUsIDEwLCAxMSwgMjIyLCAyNDQsIDEwLCAxMSwgMjIyLCAyNDMsIDEwLCAxMSwgMjIyLCAyNDIsIDEwLCAxMSwgCi0gICAgMjIyLCAyNDEsIDEwLCAxMSwgMjIyLCAyNDAsIDEwLCAxMSwgMjIyLCAyMzksIDEwLCAxMSwgMjIyLCAyMzgsIDEwLCAxMSwgCi0gICAgMjIyLCAyMzcsIDEwLCAxMSwgMjIyLCAyMzYsIDEwLCAxMSwgMjIyLCAyMzUsIDEwLCAxMSwgMjIyLCAyMzQsIDEwLCAxMSwgCi0gICAgMjIyLCAyMzMsIDEwLCAxMSwgMjIyLCAyMzIsIDEwLCAxMSwgMjIyLCAyMzEsIDEwLCAxMSwgMjIyLCAyMzAsIDEwLCAxMSwgCi0gICAgMjIyLCAyMjksIDEwLCAxMSwgMjIyLCAyMjgsIDEwLCAxMSwgMjIyLCAyMjcsIDEwLCAxMSwgMjIyLCAyMjYsIDEwLCAxMSwgCi0gICAgMjIyLCAyMjUsIDEwLCAxMSwgMjIyLCAyMjQsIDEwLCAxMSwgMjIyLCAyMjMsIDEwLCAxMSwgMjIyLCAyMjIsIDEwLCAxMSwgCi0gICAgMjIyLCAyMjEsIDEwLCAxMSwgMjIyLCAyMjAsIDEwLCAxMSwgMjIyLCAyMTksIDEwLCAxMSwgMjIyLCAyMTgsIDEwLCAxMSwgCi0gICAgMjIyLCAyMTcsIDEwLCAxMSwgMjIyLCAyMTYsIDEwLCAxMSwgMjIyLCAyMTUsIDEwLCAxMSwgMjIyLCAyMTQsIDEwLCAxMSwgCi0gICAgMjIyLCAyMTMsIDEwLCAxMSwgMjIyLCAyMTIsIDEwLCAxMSwgMjIyLCAyMTEsIDEwLCAxMSwgMjIyLCAyMTAsIDEwLCAxMSwgCi0gICAgMjIyLCAyMDksIDEwLCAxMSwgMjIyLCAyMDgsIDEwLCAxMSwgMjIyLCAyMDcsIDEwLCAxMSwgMjIyLCAyMDYsIDEwLCAxMSwgCi0gICAgMjIyLCAyMDUsIDEwLCAxMSwgMjIyLCAyMDQsIDEwLCAxMSwgMjE4LCA5NywgMTAsIDExLCAyMTgsIDk2LCAxMCwgMTEsIAotICAgIDIxOCwgOTUsIDEwLCAxMSwgMjE4LCA5NCwgMTAsIDExLCAyMTgsIDkzLCAxMCwgMTEsIDIxOCwgOTIsIDEwLCAxMSwgMjE4LCAKLSAgICA5MSwgMTAsIDExLCAyMTgsIDkwLCAxMCwgMTEsIDIxOCwgODksIDEwLCAxMSwgMjE4LCA4OCwgMTAsIDExLCAyMTgsIDg3LCAKLSAgICAxMCwgMTEsIDIxOCwgODYsIDEwLCAxMSwgMjE4LCA4NSwgMTAsIDExLCAyMTgsIDg0LCAxMCwgMTEsIDIxOCwgODMsIDEwLCAKLSAgICAxMSwgMjE4LCA4MiwgMTAsIDExLCAyMTgsIDgxLCAxMCwgMTEsIDIxOCwgODAsIDEwLCAxMSwgMjE4LCA3OSwgMTAsIDExLCAKLSAgICAyMTgsIDc4LCAxMCwgMTEsIDIxOCwgNzcsIDEwLCAxMSwgMjE4LCA3NiwgMTAsIDExLCAyMTgsIDc1LCAxMCwgMTEsIDIxOCwgCi0gICAgNzQsIDEwLCAxMSwgMjE4LCA3MywgMTAsIDExLCAyMTgsIDcyLCAxMCwgMTEsIDIxOCwgNzEsIDEwLCAxMSwgMjE4LCA3MCwgCi0gICAgMTAsIDExLCAyMTgsIDY5LCAxMCwgMTEsIDIxOCwgNjgsIDEwLCAxMSwgMjE4LCA2NywgMTAsIDExLCAyMTgsIDY2LCAxMCwgCi0gICAgMTEsIDIxOCwgNjUsIDEwLCAxMSwgMjE4LCA2NCwgMTAsIDExLCAyMTgsIDYzLCAxMCwgMTEsIDIxOCwgNjIsIDEwLCAxMSwgCi0gICAgMjE4LCA2MSwgMTAsIDExLCAyMTgsIDYwLCAxMCwgMTEsIDIxOCwgNTksIDEwLCAxMSwgMjE4LCA1OCwgMTAsIDExLCAyMTgsIAotICAgIDU3LCAxMCwgMTEsIDIxOCwgNTYsIDEwLCAxMSwgMjE4LCA1NSwgMTAsIDExLCAyMTgsIDU0LCAxMCwgMTEsIDIxNSwgMjQ1LCAKLSAgICAxMCwgMTEsIDIxNSwgMjQ0LCAxMCwgMTEsIDIxNSwgMjQzLCAxMCwgMTEsIDIxNSwgMjQyLCAxMCwgMTEsIDIxNSwgMjQxLCAKLSAgICAxMCwgMTEsIDIxNSwgMjQwLCAxMCwgMTEsIDIxNSwgMjM5LCAxMCwgMTEsIDIxNSwgMjM4LCAxMCwgMTEsIDIxNSwgMjM3LCAKLSAgICAxMCwgMTEsIDIxNSwgMjM2LCAxMCwgMTEsIDIxNSwgMjM1LCAxMCwgMTEsIDIxNSwgMjM0LCAxMCwgMTEsIDIxNSwgMjMzLCAKLSAgICAxMCwgMTEsIDIxNSwgMjMyLCAxMCwgMTEsIDIxNSwgMjMxLCAxMCwgMTEsIDIxNSwgMjMwLCAxMCwgMTEsIDIxNSwgMjI5LCAKLSAgICAxMCwgMTEsIDIxNSwgMjI4LCAxMCwgMTEsIDIxNSwgMjI3LCAxMCwgMTEsIDIxNSwgMjI2LCAxMCwgMTEsIDIxNSwgMjI1LCAKLSAgICAxMCwgMTEsIDIxNSwgMjI0LCAxMCwgMTEsIDIxNSwgMjIzLCAxMCwgMTEsIDIxNSwgMjIyLCAxMCwgMTEsIDIxNSwgMjIxLCAKLSAgICAxMCwgMTEsIDIxNSwgMjIwLCAxMCwgMTEsIDIxNSwgMjE5LCAxMCwgMTEsIDIxNSwgMjE4LCAxMCwgMTEsIDIxNSwgMjE3LCAKLSAgICAxMCwgMTEsIDIxNSwgMjE2LCAxMCwgMTEsIDIxNSwgMjE1LCAxMCwgMTEsIDIxNSwgMjE0LCAxMCwgMTEsIDIxNSwgMjEzLCAKLSAgICAxMCwgMTEsIDIxNSwgMjEyLCAxMCwgMTEsIDIxNSwgMjExLCAxMCwgMTEsIDIxNSwgMjEwLCAxMCwgMTEsIDIxNSwgMjA5LCAKLSAgICAxMCwgMTEsIDIxNSwgMjA4LCAxMCwgMTEsIDIxNSwgMjA3LCAxMCwgMTEsIDIxNSwgMjA2LCAxMCwgMTEsIDIxNSwgMjA1LCAKLSAgICAxMCwgMTEsIDIxNSwgMjA0LCAxMCwgMTEsIDIxNSwgMjAzLCAxMCwgMTEsIDIxNSwgMjAyLCAxMCwgMTEsIDIxNSwgMjAxLCAKLSAgICAxMCwgMTEsIDIxNSwgMjAwLCAxMCwgMTEsIDIxNSwgMTk5LCAxMCwgMTEsIDIxNSwgNzgsIDEwLCAxMSwgMjE1LCA3NywgMTAsIAotICAgIDExLCAyMTUsIDc2LCAxMCwgMTEsIDIxNSwgNzUsIDEwLCAxMSwgMjE1LCA3NCwgMTAsIDExLCAyMTUsIDczLCAxMCwgMTEsIAotICAgIDIxNSwgNzIsIDEwLCAxMSwgMjE1LCA3MSwgMTAsIDExLCAyMTUsIDcwLCAxMCwgMTEsIDIxNSwgNjksIDEwLCAxMSwgMjE1LCAKLSAgICA2OCwgMTAsIDExLCAyMTUsIDY3LCAxMCwgMTEsIDIxNSwgNjYsIDEwLCAxMSwgMjE1LCA2NSwgMTAsIDExLCAyMTUsIDY0LCAKLSAgICAxMCwgMTEsIDIxNSwgNjMsIDEwLCAxMSwgMjE1LCA2MiwgMTAsIDExLCAyMTUsIDYxLCAxMCwgMTEsIDIxNSwgNjAsIDEwLCAKLSAgICAxMSwgMjE1LCA1OSwgMTAsIDExLCAyMTUsIDU4LCAxMCwgMTEsIDIxNSwgNTcsIDEwLCAxMSwgMjE1LCA1NiwgMTAsIDExLCAKLSAgICAyMTUsIDU1LCAxMCwgMTEsIDIxNSwgNTQsIDEwLCAxMSwgMjE1LCA1MywgMTAsIDExLCAyMTUsIDUyLCAxMCwgMTEsIDIxNSwgCi0gICAgNTEsIDEwLCAxMSwgMjE1LCA1MCwgMTAsIDExLCAyMTUsIDQ5LCAxMCwgMTEsIDIxNSwgNDgsIDEwLCAxMSwgMjE1LCA0NywgCi0gICAgMTAsIDExLCAyMTUsIDQ2LCAxMCwgMTEsIDIxNSwgNDUsIDEwLCAxMSwgMjE1LCA0NCwgMTAsIDExLCAyMTUsIDQzLCAxMCwgCi0gICAgMTEsIDIxNSwgNDIsIDEwLCAxMSwgMjE1LCA0MSwgMTAsIDExLCAyMTUsIDQwLCAxMCwgMTEsIDIxNSwgMzksIDEwLCAxMSwgCi0gICAgMjE1LCAzOCwgMTAsIDExLCAyMTUsIDM3LCAxMCwgMTEsIDIxNSwgMzYsIDEwLCAxMSwgMjE1LCAzNSwgMTAsIDExLCAyMTUsIAotICAgIDM0LCAxMCwgMTEsIDIxNSwgMzMsIDEwLCAxMSwgMjE1LCAzMiwgMTAsIDExLCAyMTUsIDMxLCAxMCwgMTEsIDIxNSwgMzAsIAotICAgIDEwLCAxMSwgMjE1LCAyOSwgMTAsIDExLCAyMTUsIDI4LCAxMCwgMTEsIDIxNSwgMjcsIDEwLCAxMSwgMjE1LCAyNiwgMTAsIAotICAgIDExLCAyMTUsIDI1LCAxMCwgMTEsIDIxNSwgMjQsIDEwLCAxMSwgMjE1LCAyMywgMTAsIDExLCAyMTUsIDIyLCAxMCwgMTEsIAotICAgIDIxNSwgMjEsIDEwLCAxMSwgMjE1LCAyMCwgMTAsIDExLCAyMTUsIDE5LCAxMCwgMTEsIDIxNSwgMTgsIDEwLCAxMSwgMjE1LCAKLSAgICAxNywgMTAsIDExLCAyMTUsIDE2LCAxMCwgMTEsIDIxNSwgMTUsIDEwLCAxMSwgMjE1LCAxNCwgMTAsIDExLCAyMTUsIDEzLCAKLSAgICAxMCwgMTEsIDIxNSwgMTIsIDEwLCAxMSwgMjE1LCAxMSwgMTAsIDExLCAyMTUsIDEwLCAxMCwgMTEsIDIxNSwgOSwgMTAsIAotICAgIDExLCAyMTUsIDgsIDEwLCAxMSwgMjE1LCA3LCAxMCwgMTEsIDIxNSwgNiwgMTAsIDExLCAyMTUsIDUsIDEwLCAxMSwgMjE1LCAKLSAgICA0LCAxMCwgMTEsIDIxNSwgMywgMTAsIDExLCAyMTUsIDIsIDEwLCAxMSwgMjE0LCA4MSwgMTAsIDExLCAyMTQsIDgwLCAxMCwgCi0gICAgMTEsIDIxNCwgNzksIDEwLCAxMSwgMjE0LCA3OCwgMTAsIDExLCAyMTQsIDc3LCAxMCwgMTEsIDIxNCwgNzYsIDEwLCAxMSwgCi0gICAgMjE0LCA3NSwgMTAsIDExLCAyMTQsIDc0LCAxMCwgMTEsIDIxNCwgNzMsIDEwLCAxMSwgMjE0LCA3MiwgMTAsIDExLCAyMTQsIAotICAgIDcxLCAxMCwgMTEsIDIxNCwgNzAsIDEwLCAxMSwgMjE0LCA2OSwgMTAsIDExLCAyMTQsIDY4LCAxMCwgMTEsIDIxNCwgNjcsIAotICAgIDEwLCAxMSwgMjE0LCA2NiwgMTAsIDExLCAyMTQsIDY1LCAxMCwgMTEsIDIxNCwgNjQsIDEwLCAxMSwgMjE0LCA2MywgMTAsIAotICAgIDExLCAyMTQsIDYyLCAxMCwgMTEsIDIxNCwgNjEsIDEwLCAxMSwgMjE0LCA2MCwgMTAsIDExLCAyMTQsIDU5LCAxMCwgMTEsIAotICAgIDIxNCwgNTgsIDEwLCAxMSwgMjE0LCA1NywgMTAsIDExLCAyMTQsIDU2LCAxMCwgMTEsIDIxNCwgNTUsIDEwLCAxMSwgMjE0LCAKLSAgICA1NCwgMTAsIDExLCAyMTQsIDUzLCAxMCwgMTEsIDIxNCwgNTIsIDEwLCAxMSwgMjE0LCA1MSwgMTAsIDExLCAyMTQsIDUwLCAKLSAgICAxMCwgMTEsIDIxMywgMTY1LCAxMCwgMTEsIDIxMywgMTY0LCAxMCwgMTEsIDIxMywgMTYzLCAxMCwgMTEsIDIxMywgMTYyLCAKLSAgICAxMCwgMTEsIDIxMywgMTYxLCAxMCwgMTEsIDIxMywgMTYwLCAxMCwgMTEsIDIxMywgMTU5LCAxMCwgMTEsIDIxMywgMTU4LCAKLSAgICAxMCwgMTEsIDIxMywgMTU3LCAxMCwgMTEsIDIxMywgMTU2LCAxMCwgMTEsIDIxMywgMTU1LCAxMCwgMTEsIDIxMywgMTU0LCAKLSAgICAxMCwgMTEsIDIxMywgMTAzLCAxMCwgMTEsIDIxMywgMTAyLCAxMCwgMTEsIDIxMywgMTAxLCAxMCwgMTEsIDIxMywgMTAwLCAKLSAgICAxMCwgMTEsIDIxMywgOTksIDEwLCAxMSwgMjEzLCA5OCwgMTAsIDExLCAyMTMsIDk3LCAxMCwgMTEsIDIxMywgOTYsIDEwLCAKLSAgICAxMSwgMjEzLCA5NSwgMTAsIDExLCAyMTIsIDE1MSwgMTAsIDExLCAyMTIsIDE1MCwgMTAsIDExLCAyMTIsIDE0OSwgMTAsIAotICAgIDExLCAyMTIsIDE0OCwgMTAsIDExLCAyMTIsIDE0NywgMTAsIDExLCAyMTIsIDE0NiwgMTAsIDExLCAyMTIsIDE0NSwgMTAsIAotICAgIDExLCAyMTIsIDE0NCwgMTAsIDExLCAyMTIsIDE0MywgMTAsIDExLCAyMTIsIDE0MiwgMTAsIDExLCAyMTIsIDE0MSwgMTAsIAotICAgIDExLCAyMTIsIDE0MCwgMTAsIDExLCAyMTIsIDEzOSwgMTAsIDExLCAyMTIsIDEzOCwgMTAsIDExLCAyMTIsIDEzNywgMTAsIAotICAgIDExLCAyMTIsIDEzNiwgMTAsIDExLCAyMTIsIDEzNSwgMTAsIDExLCAyMTIsIDEzNCwgMTAsIDExLCAyMTIsIDEzMywgMTAsIAotICAgIDExLCAyMTIsIDEzMiwgMTAsIDExLCAyMTIsIDEzMSwgMTAsIDExLCAyMTIsIDEzMCwgMTAsIDExLCAyMTIsIDEyOSwgMTAsIAotICAgIDExLCAyMTIsIDEyOCwgMTAsIDExLCAyMTIsIDEyNywgMTAsIDExLCAyMTIsIDEyNiwgMTAsIDExLCAyMTIsIDEyNSwgMTAsIAotICAgIDExLCAyMTIsIDEyNCwgMTAsIDExLCAyMTIsIDEyMywgMTAsIDExLCAyMTIsIDEyMiwgMTAsIDExLCAyMTIsIDEyMSwgMTAsIAotICAgIDExLCAyMTIsIDEyMCwgMTAsIDExLCAyMTIsIDExOSwgMTAsIDExLCAyMTIsIDExOCwgMTAsIDExLCAyMTIsIDExNywgMTAsIAotICAgIDExLCAyMTIsIDExNiwgMTAsIDExLCAyMTIsIDExNSwgMTAsIDExLCAyMTIsIDExNCwgMTAsIDExLCAyMTIsIDExMywgMTAsIAotICAgIDExLCAyMTIsIDExMiwgMTAsIDExLCAyMTIsIDExMSwgMTAsIDExLCAyNTQsIDIzMSwgMTAsIDExLCAyNTQsIDIzMCwgMTAsIAotICAgIDExLCAyNTQsIDIyOSwgMTAsIDExLCAyNTQsIDIyOCwgMTAsIDExLCAyNTQsIDIyNywgMTAsIDExLCAyNTQsIDIyNiwgMTAsIAotICAgIDExLCAyNTQsIDIyNSwgMTAsIDExLCAyNTQsIDIyNCwgMTAsIDExLCAyNTQsIDIyMywgMTAsIDExLCAyNTQsIDIyMiwgMTAsIAotICAgIDExLCAyNTQsIDIyMSwgMTAsIDExLCAyNTQsIDIyMCwgMTAsIDExLCAyNTQsIDIxOSwgMTAsIDExLCAyNTQsIDIxOCwgMTAsIAotICAgIDExLCAyNTQsIDIxNywgMTAsIDExLCAyNTQsIDIxNiwgMTAsIDExLCAyNTQsIDIxNSwgMTAsIDExLCAyNTQsIDIxNCwgMTAsIAotICAgIDExLCAyNTQsIDIxMywgMTAsIDExLCAyNTQsIDIxMiwgMTAsIDExLCAyNTQsIDIxMSwgMTAsIDExLCAyNTQsIDIxMCwgMTAsIAotICAgIDExLCAyNTQsIDIwOSwgMTAsIDExLCAyNTQsIDIwOCwgMTAsIDExLCAyNTQsIDIwNywgMTAsIDExLCAyNTQsIDIwNiwgMTAsIAotICAgIDExLCAyNTQsIDIwNSwgMTAsIDExLCAyNTQsIDIwNCwgMTAsIDExLCAyNTQsIDIwMywgMTAsIDExLCAyNTQsIDIwMiwgMTAsIAotICAgIDExLCAyNTQsIDIwMSwgMTAsIDExLCAyNTQsIDIwMCwgMTAsIDExLCAyNTQsIDE5OSwgMTAsIDExLCAyNTQsIDE5OCwgMjAsIAotICAgIDEsIDE1MywgMjI5LCA5OCwgMjMxLCA4MywgMjAsIDEsIDE1MywgMjQzLCA0NiwgMjQ0LCA1LCAyMCwgMSwgMTUzLCAyMjUsIAotICAgIDEzMSwgMjMxLCA4NCwgMjI1LCAxODksIDIwLCAxLCAxNTMsIDIyNSwgMTMxLCAyMzEsIDg0LCAyMjUsIDE5MCwgMjAsIDEsIAotICAgIDE1MywgMjMwLCA0NCwgMjMxLCA4MywgMjAsIDEsIDE1MywgMjIwLCAxNDYsIDIwLCAxLCAxNTMsIDIxNywgMTksIDIzMSwgCi0gICAgODMsIDIwLCAxLCAxNTMsIDIyNywgMjM4LCAyMzEsIDgzLCAyMCwgMSwgMTUzLCAyMjAsIDE5OSwgMjI2LCAyMTQsIDIyOSwgCi0gICAgMCwgMjAsIDEsIDE1MywgMjI1LCAxMzEsIDIyNiwgMjE0LCAyMjksIDEsIDIyNSwgMTg5LCAyMCwgMSwgMTUzLCAyMjUsIAotICAgIDEzMSwgMjI2LCAyMTQsIDIyOSwgMSwgMjI1LCAxOTAsIDIwLCAxLCAxNTMsIDIzMiwgMjMsIDIwLCAxLCAxNTMsIDIxNiwgCi0gICAgODMsIDIzMiwgMjQsIDIwLCAxLCAxNTMsIDIyOSwgMTU0LCAyMCwgMSwgMTUzLCAyMzIsIDIwLCAyMCwgMSwgMTUzLCAyMzEsIAotICAgIDIzOSwgMjAsIDEsIDE1MywgMjMwLCAxMTksIDIwLCAxLCAxNTMsIDIyMSwgNDUsIDIwLCAxLCAxNTMsIDIyOCwgOTYsIDIwLCAKLSAgICAxLCAxNTMsIDIzNCwgMTU1LCAyMCwgMSwgMTUzLCAyMjgsIDIyNSwgMjAsIDEsIDE1MywgMjE4LCAyMDUsIDIwLCAxLCAxNTMsIAotICAgIDIyOSwgOTcsIDIwLCAxLCAxNTMsIDIzMywgMTEwLCAyMCwgMSwgMTUzLCAyMzMsIDM2LCAyMzMsIDIxMCwgMjAsIDEsIDE1MywgCi0gICAgMjI4LCAxMDMsIDIzMSwgOTEsIDIwLCAxLCAxNTMsIDIzMiwgMjcsIDIwLCAxLCAxNTMsIDIyNiwgMTE5LCAyMCwgMSwgMTUzLCAKLSAgICAyNDIsIDIwNywgMjAsIDEsIDE1MywgMjI2LCAxNzcsIDIwLCAxLCAxNTMsIDIzMCwgMjIxLCAyMjksIDEzMCwgMjAsIDEsIAotICAgIDE1MywgMjI3LCAyMTksIDIzMSwgOTQsIDIwLCAxLCAxNTMsIDExMSwgMjEyLCAxNzksIDIzMCwgMzgsIDIwLCAxLCAxNTMsIAotICAgIDI0MiwgMjA4LCAyMCwgMSwgMTUzLCAyMjgsIDEwMywgMjI4LCAxMDQsIDIwLCAxLCAxNTMsIDIyMCwgNTYsIDIwLCAxLCAKLSAgICAxNTMsIDIzMSwgNzYsIDIwLCAxLCAxNTMsIDIzMSwgOTcsIDIwLCAxLCAxNTMsIDIzMCwgMjAwLCAyMCwgMSwgMTUzLCAyMzQsIAotICAgIDI1MywgMjAsIDEsIDE1MywgMjI2LCAyMTQsIDIzMywgNzEsIDIwLCAxLCAxNTMsIDIyOSwgMjI5LCAyMzMsIDcxLCAyMCwgMSwgCi0gICAgMTUzLCAyMjYsIDM0LCAyMCwgMSwgMTUzLCAyMzIsIDIxLCAyMCwgMSwgMTUzLCAyMjksIDM4LCAyMCwgMSwgMTUzLCAyMjUsIAotICAgIDIwLCAyMCwgMSwgMTUzLCAyMTYsIDgwLCAyMCwgMSwgMTUzLCAyMzIsIDE1MiwgMjAsIDEsIDE1MywgMjE5LCAyMjcsIDIwLCAKLSAgICAxLCAxNTMsIDIxNywgMTY5LCAyMCwgMSwgMTUzLCAyMzIsIDE4LCAyMCwgMSwgMTUzLCAyMzQsIDE2MiwgMjAsIDEsIDE1MywgCi0gICAgMjI5LCAyMjUsIDIwLCAxLCAxNTMsIDIzMywgMjIyLCAyMCwgMSwgMTUzLCAyMzAsIDIwMSwgMjAsIDEsIDE1MywgMjIwLCAKLSAgICAxNDMsIDIwLCAxLCAxNTMsIDIzMiwgMTkxLCAyMCwgMSwgMTUzLCAyNDQsIDYyLCAyMCwgMSwgMTUzLCAyMjMsIDEwMSwgMjAsIAotICAgIDEsIDE1MywgMjMzLCAyNTAsIDIwLCAxLCAxNTMsIDIxOSwgMjIzLCAyMCwgMSwgMTUzLCAyMzEsIDIzNiwgMjI1LCAyMzEsIAotICAgIDIwLCAxLCAxNTMsIDIyMCwgMTkyLCAyMCwgMSwgMTUzLCAyMjgsIDEwMiwgMjAsIDEsIDE1MywgMjIwLCAxNzcsIDIyOCwgCi0gICAgMTEzLCAyMTIsIDE4NywgMjAsIDEsIDE1MywgMjI4LCAxLCAyMzAsIDIxOCwgMjAsIDEsIDE1MywgMjI2LCAyMDksIDIwLCAxLCAKLSAgICAxNTMsIDIyOCwgMjI2LCAyMCwgMSwgMTUzLCAyMTUsIDE0MSwgMjAsIDEsIDE1MywgMjI5LCAxMzMsIDIwLCAxLCAxNTMsIAotICAgIDIzMiwgMTcsIDIwLCAxLCAxNTMsIDIyOSwgMTIsIDIwLCAxLCAxNTMsIDIzMSwgMTgyLCAyMCwgMSwgMTUzLCAyMjgsIDEyLCAKLSAgICAyMCwgMSwgMTUzLCAyMTcsIDE3MywgMjAsIDEsIDE1MywgMjE5LCAyMjEsIDIwLCAxLCAxNTMsIDIyNiwgMjEwLCAyMCwgMSwgCi0gICAgMTUzLCAyMjgsIDExNywgMjAsIDEsIDE1MywgMjMyLCAyNSwgMjAsIDEsIDE1MywgMjI4LCAxMCwgMjAsIDEsIDE1MywgMjM0LCAKLSAgICAyMjEsIDIwLCAxLCAxNTMsIDIyOCwgMTIwLCAyMCwgMSwgMTUzLCAyMTQsIDIyNywgMjAsIDEsIDE1MywgMjMyLCAxNTYsIAotICAgIDIwLCAxLCAxNTMsIDIyOSwgMTgwLCAyMCwgMSwgMTUzLCAyMzAsIDE2LCAyMCwgMSwgMTUzLCAyMzEsIDE4MSwgMjAsIDEsIAotICAgIDIyNiwgMTQsIDIyOCwgMTE1LCAyMCwgMSwgMjI2LCAxNCwgMjE2LCA4MywgMjMyLCAyMiwgMjAsIDEsIDIyNiwgMTQsIDIyMCwgCi0gICAgMTExLCAyMCwgMSwgMjI2LCAxNCwgMjIxLCA0OSwgMjE2LCA4MiwgMjAsIDEsIDIyNiwgMTQsIDIzMiwgMTkzLCAyMjgsIDk5LCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxODgsIDIzMiwgMjYsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDk2LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjEzLCA2LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxODMsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDI0MiwgMjAsIDEsIAotICAgIDIyNiwgMTQsIDIyNiwgODMsIDIwLCAxLCAyMjYsIDE0LCAyMTMsIDc3LCAyMzMsIDcxLCAyMCwgMSwgMjI2LCAxNCwgMjMzLCAKLSAgICAxMjcsIDIyOCwgMTEzLCAyMjgsIDIwLCAyMCwgMSwgMjI2LCAxNCwgMjI4LCA5NywgMjIwLCAyMTgsIDIwLCAxLCAyMjYsIAotICAgIDE0LCAyMjksIDE5NiwgMjI5LCAxNSwgMjAsIDEsIDIyNiwgMTQsIDI0MiwgMjA1LCAyMCwgMSwgMjI2LCAxNCwgMjI1LCAKLSAgICAxODEsIDIwLCAxLCAyMjYsIDE0LCAyMTYsIDgzLCAyMjgsIDExMSwgMjAsIDEsIDIyNiwgMTQsIDIyMCwgMjIzLCAyMjksIAotICAgIDEwLCAyMCwgMSwgMjI2LCAxNCwgMjIwLCAyMTksIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDg0LCAyMTcsIDE3MiwgMjAsIDEsIAotICAgIDIyNiwgMTQsIDIzMSwgMTcwLCAyMzEsIDE4NCwgMjAsIDEsIDIyNiwgMTQsIDIyOCwgMTEsIDIyOCwgOTksIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMzQsIDE1MSwgMjAsIDEsIDIyNiwgMTQsIDI0MiwgMjA2LCAyMCwgMSwgMjI2LCAxNCwgMjM0LCAxNDcsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMzMsIDE1MSwgMjAsIDEsIDIyNiwgMTQsIDIyNiwgMTIxLCAyMCwgMSwgMjI2LCAxNCwgMjE0LCAKLSAgICAxNTksIDIwLCAxLCAyMjYsIDE0LCAyMjksIDk5LCAyMzAsIDExNywgMjAsIDEsIDIyNiwgMTQsIDIyOSwgMTMyLCAyMzEsIAotICAgIDE2NiwgMjAsIDEsIDIyNiwgMTQsIDIxMywgMTgxLCAyMCwgMSwgMjI2LCAxNCwgMjIyLCAxODIsIDIwLCAxLCAyMjYsIDE0LCAKLSAgICAyMTgsIDQ1LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA5NiwgMjAsIDEsIDIyNiwgMTQsIDIyOSwgMTE3LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjI5LCAxMTgsIDIzMywgMTA3LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA4NiwgMjAsIDEsIDIyNiwgMTQsIDIxOCwgCi0gICAgMjUzLCAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxNzQsIDIwLCAxLCAyMjYsIDE0LCAyMzAsIDIwMywgMjAsIDEsIDIyNiwgMTQsIAotICAgIDIyOCwgMjEsIDIwLCAxLCAyMjYsIDE0LCAyMjUsIDI0LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA5NSwgMjI5LCAxMzQsIDIwLCAKLSAgICAxLCAyMjYsIDE0LCAyNDQsIDk1LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxNjEsIDIwLCAxLCAyMjYsIDE0LCAyNDQsIDExNiwgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIzNCwgMTU5LCAyMCwgMSwgMjI2LCAxNCwgMjMyLCA0MywgMjI5LCA0LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjMyLCA0MywgMjI4LCAyMzYsIDIwLCAxLCAyMjYsIDE0LCAyMzMsIDM1LCAyMCwgMSwgMjI2LCAxNCwgMjI5LCAxNDAsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMjgsIDEyMiwgMjAsIDEsIDIyNiwgMTQsIDE4OCwgMjAsIDEsIDIyNiwgMTQsIDIzNCwgODMsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMjksIDg3LCAyMCwgMSwgMTMxLCAyMjksIDk4LCAyMzIsIDI0LCAyMCwgMSwgMTMxLCAyMjcsIAotICAgIDIzNywgMjAsIDEsIDEzMSwgMjEyLCAxODcsIDIwLCAxLCAxMzEsIDIxNCwgMzcsIDIwLCAxLCAxMzEsIDIyOSwgMTMzLCAyMCwgCi0gICAgMSwgMTMxLCAyMjksIDIxNywgMjAsIDEsIDEzMSwgMjI5LCAxMDUsIDIwLCAxLCAxMzEsIDI0MiwgMjE1LCAyMCwgMSwgMTMxLCAKLSAgICAyMzEsIDE3OCwgMjAsIDEsIDEzMSwgMjQzLCA1MywgMjAsIDEsIDEzMSwgMjI4LCAzLCAyMzAsIDIzOSwgMjMxLCA5OCwgMjAsIAotICAgIDEsIDEzMSwgMjI4LCA5NSwgMjMxLCAxNjksIDIwLCAxLCAxMzEsIDIzMSwgMTc1LCAyMCwgMSwgMTMxLCAyMjUsIDE4NywgCi0gICAgMjAsIDEsIDEzMSwgMjI5LCAyMDIsIDIwLCAxLCAxMzEsIDIzMSwgMTg2LCAyNTAsIDIxNSwgMjAsIDEsIDEzMSwgMjM0LCAKLSAgICAxNDksIDIwLCAxLCAxMzEsIDI0MiwgMjE2LCAyMCwgMSwgMTMxLCAyMzQsIDE1NiwgMjAsIDEsIDEzMSwgMjEyLCAyMDQsIAotICAgIDIzMCwgMTQ2LCAyMCwgMSwgMTMxLCAyMjcsIDIzMSwgMjAsIDEsIDEzMSwgMjMxLCAxNjMsIDIwLCAxLCAxMzEsIDIyOCwgCi0gICAgMTIxLCAyMCwgMSwgMTMxLCAyMzEsIDE2OSwgMjAsIDEsIDEzMSwgMjEzLCA3LCAyMCwgMSwgMTMxLCAyMzQsIDIsIDIwLCAxLCAKLSAgICAxMzEsIDIzNSwgMTQsIDIwLCAxLCAxMzEsIDIyMSwgNDQsIDIwLCAxLCAxMzEsIDIyOSwgMjExLCAyMCwgMSwgMTMxLCAyMTgsIAotICAgIDQzLCAyMCwgMSwgMTMxLCAyMjgsIDI0MCwgMjAsIDEsIDEzMSwgMjE3LCAxOSwgMjEyLCAxODksIDIwLCAxLCAxMzEsIDIxOSwgCi0gICAgMjMsIDIwLCAxLCAxMzEsIDIyOSwgMTI0LCAyMjgsIDIwLCAyMCwgMSwgMTMxLCAyMTQsIDE1OCwgMjAsIDEsIDEzMSwgMjMwLCAKLSAgICAxOSwgMjAsIDEsIDEzMSwgMjMyLCA0MywgMjM0LCAxNTgsIDIwLCAxLCAxMzEsIDIyOCwgMTA0LCAyMCwgMSwgMTMxLCAyMjksIAotICAgIDExOSwgMjAsIDEsIDEzMSwgMjMzLCAxMTEsIDIwLCAxLCAxMzEsIDIzMSwgMTcxLCAyMCwgMSwgMTMxLCAyMzEsIDc1LCAyMCwgCi0gICAgMSwgMTMxLCAyMjgsIDk4LCAyMCwgMSwgMTMxLCAyMTcsIDE2OCwgMjAsIDEsIDEzMSwgMjI5LCAxMjEsIDIwLCAxLCAxMzEsIAotICAgIDI0MywgMjA0LCAyMCwgMSwgMTMxLCAyMjksIDIxNiwgMjAsIDEsIDEzMSwgMjI4LCAxMjMsIDIwLCAxLCAxMzEsIDIyOCwgCi0gICAgMTE5LCAyMCwgMSwgMTMxLCAyNTEsIDM2LCAyMCwgMSwgMTMxLCAyMTQsIDE2MCwgMjAsIDEsIDEzMSwgMjMxLCAxNzYsIDIwLCAKLSAgICAxLCAxMzEsIDIyMywgNTEsIDIwLCAxLCAxMzEsIDIyOSwgMTQsIDIwLCAxLCAxMzEsIDIzMywgMTI2LCAyMCwgMSwgMTMxLCAKLSAgICAyMTcsIDE3LCAyMCwgMSwgMTMxLCAyMjgsIDEwNSwgMjI5LCA4NywgMjAsIDEsIDEzMSwgMjI5LCA2LCAyMCwgMSwgMTMxLCAKLSAgICAyMzQsIDE2MiwgMjAsIDEsIDEzMSwgMjI5LCAxMjUsIDIwLCAxLCAxMzEsIDIzMiwgMTcsIDIwLCAxLCAxMzEsIDIzMSwgCi0gICAgMTY0LCAyMCwgMSwgMTMxLCAyMzIsIDE1NiwgMjAsIDEsIDEzMSwgMjMzLCAyMTAsIDIwLCAxLCAxMzEsIDIyOSwgMTIsIDIwLCAKLSAgICAxLCAxMzEsIDIyOSwgODcsIDIwLCAxLCAxMzEsIDIxMywgMTcyLCAyMCwgMSwgMTMxLCAyMjksIDEyMiwgMjAsIDEsIDEzMSwgCi0gICAgMjI4LCAxMDgsIDIwLCAxLCAxMzEsIDIyOCwgMTAwLCAyMCwgMSwgMTMxLCAyMzMsIDIyNCwgMjI4LCAyMjYsIDIwLCAxLCAKLSAgICAxMzEsIDIyOCwgMTA2LCAyMCwgMSwgMTMxLCAyMjksIDIyNCwgMjAsIDEsIDEzMSwgMjMyLCA0MywgMjI4LCAxMTEsIDIwLCAKLSAgICAxLCAxMzEsIDIxMywgOTEsIDIwLCAxLCAxMzEsIDIyOSwgMjIzLCAyMCwgMSwgMTMxLCAyMjAsIDE0NSwgMjAsIDEsIDEzMSwgCi0gICAgMjIxLCA0NywgMjAsIDEsIDEzMSwgMjMxLCAxNzIsIDIwLCAxLCAxMzEsIDIzMiwgMjQsIDIwLCAxLCAxMzEsIDIzMSwgMTgyLCAKLSAgICAyMCwgMSwgMTMxLCAyMzQsIDE1MCwgMjAsIDEsIDEzMSwgMjMxLCAxNzMsIDIwLCAxLCAxMzEsIDIzNCwgMTU0LCAyMCwgMSwgCi0gICAgMTMxLCAyMzEsIDE4NiwgMjI1LCAyMzUsIDIwLCAxLCAxMzEsIDIxMiwgMTcxLCAyMCwgMSwgMTMxLCAyMjksIDIsIDIwLCAxLCAKLSAgICAxMzEsIDIzMSwgMzMsIDIwLCAxLCAxMzEsIDIzMCwgMTcwLCAyMCwgMSwgMTMxLCAyMjAsIDE5NSwgMjAsIDEsIDEzMSwgCi0gICAgMjM0LCAxNzIsIDIzMywgOTQsIDIwLCAxLCAxMzEsIDIzNCwgMTcyLCAyNDQsIDEyOCwgMjAsIDEsIDEzMSwgMjI5LCAxNTIsIAotICAgIDIwLCAxLCAxMzEsIDIzMCwgMTYsIDIwLCAxLCAxMzEsIDIzMiwgMjI5LCAyMCwgMSwgMTMxLCAyMjUsIDE5NywgMjAsIDEsIAotICAgIDEzMSwgMjI2LCA3NCwgMjAsIDEsIDEzMSwgMjE3LCAxODMsIDIwLCAxLCAxMDMsIDIzMSwgMTYyLCAyMCwgMSwgMTAzLCAKLSAgICAyMTQsIDM1LCAyMCwgMSwgMTAzLCAyMjksIDAsIDIwLCAxLCAxMDMsIDIzMSwgODMsIDIwLCAxLCAxMDMsIDIyOCwgMjU0LCAKLSAgICAyMCwgMSwgMTAzLCAyMzMsIDcsIDIwLCAxLCAxMDMsIDIyOSwgMywgMjAsIDEsIDEwMywgMjI4LCAxMTgsIDIwLCAxLCAxMDMsIAotICAgIDIyOSwgMTM5LCAyMCwgMSwgMTAzLCAyMjgsIDIwLCAyMCwgMSwgMTAzLCAyMTMsIDE4MiwgMjAsIDEsIDEwMywgMjI5LCA5NSwgCi0gICAgMjAsIDEsIDEwMywgMjIwLCAyNDEsIDIwLCAxLCAxMDMsIDIyOSwgMTA2LCAyMCwgMSwgMTAzLCAyMzQsIDE1NywgMjAsIDEsIAotICAgIDEwMywgMjE3LCAxNzAsIDIwLCAxLCAxMDMsIDIyMCwgMjIxLCAyMCwgMSwgMTAzLCAyMjksIDExLCAyMCwgMSwgMTAzLCAKLSAgICAyMTgsIDI1MywgMjAsIDEsIDEwMywgMjM0LCAxNjIsIDIwLCAxLCAxMDMsIDIxMywgNzksIDIwLCAxLCAxMDMsIDIzMywgCi0gICAgMjI1LCAyMCwgMSwgMTAzLCAyMjIsIDE1MCwgMjAsIDEsIDEwMywgMjMxLCA4OCwgMjAsIDEsIDEwMywgMjI5LCAyMTUsIDIwLCAKLSAgICAxLCAxMDMsIDIzMSwgMjUxLCAyMCwgMSwgMTAzLCAyMzEsIDk0LCAyMCwgMSwgMTAzLCAyMjEsIDQ2LCAyMCwgMSwgMTAzLCAKLSAgICAyMTMsIDMwLCAyMCwgMSwgMTAzLCAyMjksIDUsIDIwLCAxLCAxMDMsIDIzNCwgMTUzLCAyMzEsIDE2NSwgMjAsIDEsIDEwMywgCi0gICAgMjI5LCAxMDIsIDIwLCAxLCAxMDMsIDIxNiwgODIsIDIwLCAxLCAxMDMsIDI0MiwgMjI0LCAyMCwgMSwgMTAzLCAyMjksIDkyLCAKLSAgICAyMCwgMSwgMTAzLCAyNDQsIDk2LCAyMCwgMSwgMTAzLCAyMjksIDIxOSwgMjAsIDEsIDEwMywgMjMxLCA2NywgMjAsIDEsIAotICAgIDEwMywgMjMzLCAzMSwgMjAsIDEsIDEwMywgMjI5LCAyMDEsIDIwLCAxLCAxMDMsIDIzMCwgMjE3LCAyMCwgMSwgMTAzLCAKLSAgICAyMzEsIDcxLCAyMCwgMSwgMTAzLCAyMjUsIDYsIDIwLCAxLCAxMDMsIDIzMSwgNjksIDIwLCAxLCAxMDMsIDIzMSwgODUsIAotICAgIDIwLCAxLCAxMDMsIDIzMiwgMTQyLCAyMCwgMSwgMTAzLCAyMjgsIDExMCwgMjAsIDEsIDEwMywgMjMxLCAxODUsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMjAyLCAyMCwgMSwgMTAzLCAyMjgsIDEyLCAyMCwgMSwgMTAzLCAyMTcsIDE3MywgMjAsIDEsIDEwMywgCi0gICAgMjE5LCAyMjEsIDIwLCAxLCAxMDMsIDIxMiwgMTcxLCAyMCwgMSwgMTAzLCAyMzQsIDE1NCwgMjAsIDEsIDEwMywgMjI0LCAKLSAgICA2MCwgMjAsIDEsIDEwMywgMjE3LCAyMTgsIDIwLCAxLCAxMDMsIDIyOSwgMTAzLCAyMCwgMSwgMTAzLCAyMzEsIDkwLCAyMCwgCi0gICAgMSwgMTAzLCAyMjgsIDEwOSwgMjAsIDEsIDEwMywgMjM0LCAxNTIsIDIwLCAxLCAxMDMsIDIyNSwgMTkxLCAyMCwgMSwgMTAzLCAKLSAgICAyMjYsIDI4LCAyMCwgMSwgMTAzLCAyMjcsIDI0NiwgMjAsIDEsIDEwMywgMjMzLCAzNSwgMjAsIDEsIDEwMywgMjI5LCAxNDAsIAotICAgIDIwLCAxLCAxMDMsIDIzMSwgODcsIDIwLCAxLCAxMDMsIDIyOSwgMTE0LCAyMCwgMSwgMTAzLCAyMTIsIDE4NCwgMjAsIDEsIAotICAgIDEwMywgMjI2LCAxNDksIDIwLCAxLCAxMDMsIDIxMiwgMTgzLCAyMCwgMSwgMTAzLCAyMjksIDIyNCwgMjAsIDEsIDEwMywgCi0gICAgMjI4LCA5OSwgMjAsIDEsIDEwMywgMjE5LCAyNSwgMjAsIDEsIDEwMywgMjMzLCAyMjksIDIwLCAxLCAxMDMsIDIyOSwgMTI5LCAKLSAgICAyMCwgMSwgMTAzLCAyMjksIDEwMCwgMjAsIDEsIDEwMywgMjE2LCA2NiwgMjAsIDEsIDEwMywgMjMxLCA5OCwgMjAsIDEsIAotICAgIDEwMywgMjMzLCAyMTksIDIwLCAxLCAxMDMsIDIyOCwgMTA3LCAyMCwgMSwgMTAzLCAyMTcsIDE3MSwgMjAsIDEsIDEwMywgCi0gICAgMjMyLCAxOSwgMjAsIDEsIDEwMywgMjI5LCAxMzgsIDIwLCAxLCAxMDMsIDIzMywgMzAsIDIwLCAxLCAxMDMsIDIyOSwgMTIwLCAKLSAgICAyMCwgMSwgMTAzLCAyMjgsIDExMiwgMjAsIDEsIDEwMywgMjI4LCAyNDAsIDIwLCAxLCAxMDMsIDI0MiwgMjA5LCAyMCwgMSwgCi0gICAgMTAzLCAyMzMsIDIzOCwgMjAsIDEsIDEwMywgMjIzLCAyMzQsIDIyNywgNzUsIDIwLCAxLCAxMDMsIDIxOCwgMzUsIDIwLCAxLCAKLSAgICAxMDMsIDIxNiwgMjIzLCAyMCwgMSwgMTAzLCAyMjgsIDEwLCAyMCwgMSwgMTAzLCAyMjMsIDEzNiwgMjAsIDEsIDEwMywgCi0gICAgMjMzLCA3MywgMjAsIDEsIDEwMywgMjMxLCAxNDQsIDIwLCAxLCAxMDMsIDE4MywgMjAsIDEsIDEwMywgMjE4LCAyMDUsIDIwLCAKLSAgICAxLCAxMDMsIDIzMCwgMTcyLCAyMCwgMSwgMTAzLCAyMjAsIDIwNywgMjAsIDEsIDEwMywgMjIwLCAyMTcsIDIwLCAxLCAxMDMsIAotICAgIDIzMywgMTc3LCAyMCwgMSwgMTAzLCAyMjgsIDkyLCAyMCwgMSwgMTAzLCAyMjAsIDE1MCwgMjAsIDEsIDEwMywgMjI4LCAKLSAgICAxMDEsIDIwLCAxLCAxMDMsIDIyNiwgODYsIDIwLCAxLCAxMDMsIDIyOSwgNjQsIDIwLCAxLCAxMDMsIDIyMCwgMTc2LCAyMCwgCi0gICAgMSwgMTAzLCAyMjUsIDE5LCAyMCwgMSwgMTAzLCAyMzAsIDExNywgMjAsIDEsIDEwMywgMjMyLCAxNzQsIDIwLCAxLCAxMDMsIAotICAgIDIyMywgMjM0LCAyMzAsIDE2NiwgMjAsIDEsIDEwMywgMjE3LCA3MSwgMjAsIDEsIDEwMywgMjI4LCA5MywgMjAsIDEsIDEwMywgCi0gICAgMjMxLCAxODYsIDE5OCwgMjAsIDEsIDEwMywgMjIyLCAxNDgsIDIwLCAxLCAxMDMsIDI0NCwgMTYzLCAyMCwgMSwgODAsIAotICAgIDIyOSwgMjIzLCAyMCwgMSwgODAsIDIxNiwgMjI5LCAyMCwgMSwgODAsIDIzMSwgMTc1LCAyMCwgMSwgODAsIDIzMywgMTExLCAKLSAgICAyMCwgMSwgODAsIDIxNCwgMTA5LCAyMCwgMSwgODAsIDIzMiwgMTc4LCAyMCwgMSwgODAsIDIyNiwgMjEzLCAyMCwgMSwgODAsIAotICAgIDIxOSwgMjMwLCAyMCwgMSwgODAsIDIyNCwgMzcsIDIwLCAxLCA4MCwgMjI4LCAxMTQsIDIwLCAxLCA4MCwgMjI5LCAxOTQsIAotICAgIDIwLCAxLCA4MCwgMjI1LCAzMywgMjAsIDEsIDgwLCAyMTgsIDEzLCAyMCwgMSwgODAsIDIyOSwgMTA4LCAyMCwgMSwgODAsIAotICAgIDIzMywgMjU0LCAyMCwgMSwgODAsIDIxMywgMTc1LCAyMCwgMSwgODAsIDIyMiwgODksIDIwLCAxLCA4MCwgMjI5LCAxMzAsIAotICAgIDIwLCAxLCA4MCwgMjI2LCAyMTAsIDIwLCAxLCA4MCwgMjE2LCAyMzAsIDIwLCAxLCA4MCwgMjMzLCAyMjMsIDIwLCAxLCA4MCwgCi0gICAgMjMyLCAxOTIsIDIwLCAxLCA4MCwgMjI4LCAxMTcsIDIwLCAxLCA4MCwgMjI5LCA4NCwgMjAsIDEsIDgwLCAyMzIsIDI1LCAKLSAgICAyMCwgMSwgODAsIDIyOSwgMTAxLCAyMCwgMSwgODAsIDIyOSwgODMsIDIwLCAxLCA4MCwgMjI4LCAxMTYsIDIwLCAxLCA4MCwgCi0gICAgMjIzLCAxMzQsIDIwLCAxLCA4MCwgMjI5LCAyLCAyMCwgMSwgODAsIDIyNiwgODUsIDIwLCAxLCA4MCwgMjIyLCAyMDAsIDIwLCAKLSAgICAxLCA4MCwgMjI5LCAxMTUsIDIwLCAxLCA4MCwgMjMxLCA3NywgMjAsIDEsIDgwLCAyNDIsIDIwMywgMjAsIDEsIDgwLCAyMjksIAotICAgIDEwNCwgMjAsIDEsIDgwLCAyMjksIDEzLCAyMCwgMSwgODAsIDIzMSwgMjM1LCAyMCwgMSwgODAsIDIzMiwgMTc2LCAyMCwgMSwgCi0gICAgODAsIDIyOSwgMTM1LCAyMCwgMSwgODAsIDIyOSwgMjA3LCAyMCwgMSwgODAsIDIxOCwgMzQsIDIyOCwgOTksIDIwLCAxLCAKLSAgICA4MCwgMjIxLCA0OCwgMjAsIDEsIDgwLCAyMjUsIDI5LCAyMCwgMSwgODAsIDIyOSwgMjI3LCAyMTksIDIzNSwgMjAsIDEsIAotICAgIDgwLCAyMjksIDEyMywgMjI4LCAyMCwgMjAsIDEsIDgwLCAyMTIsIDI1MSwgMjAsIDEsIDgwLCAyNDIsIDIwNCwgMjAsIDEsIAotICAgIDgwLCAyMTYsIDgxLCAyMCwgMSwgODAsIDIxMywgMTAsIDIwLCAxLCA4MCwgMjI1LCAxNTAsIDIwLCAxLCA4MCwgMjE2LCA3MSwgCi0gICAgMjAsIDEsIDgwLCAyMzQsIDE2MCwgMjAsIDEsIDgwLCAyMTksIDI0LCAyMCwgMSwgODAsIDIxNywgMTcyLCAyMCwgMSwgODAsIAotICAgIDIxNCwgMTYxLCAyMCwgMSwgODAsIDIxMywgMjQ3LCAyMCwgMSwgODAsIDIzMywgMTU0LCAyMCwgMSwgODAsIDIyNSwgMzUsIAotICAgIDIwLCAxLCA4MCwgMjE4LCA0NCwgMjAsIDEsIDgwLCAyNDIsIDIyMywgMjAsIDEsIDgwLCAyMjksIDE0NCwgMjAsIDEsIDgwLCAKLSAgICAyMjAsIDIyMCwgMjAsIDEsIDgwLCAyMzEsIDcyLCAyMCwgMSwgODAsIDIzMSwgMTc5LCAyMCwgMSwgODAsIDIyNywgMjM1LCAKLSAgICAyMCwgMSwgODAsIDIyOCwgMjIzLCAyMCwgMSwgODAsIDI0MywgNDksIDIwLCAxLCA4MCwgMjE2LCA3MiwgMjAsIDEsIDgwLCAKLSAgICAyMzMsIDIzMiwgMjAsIDEsIDgwLCAyMTMsIDU3LCAyMCwgMSwgODAsIDIyOCwgMTEsIDI0OSwgMjA5LCAyMCwgMSwgODAsIAotICAgIDIxMiwgMjQxLCAyMCwgMSwgODAsIDIzMSwgODksIDIwLCAxLCA4MCwgMjI5LCAyMTIsIDIwLCAxLCA4MCwgMjI1LCAyMzIsIAotICAgIDIwLCAxLCA4MCwgMjEyLCAxODgsIDIwLCAxLCA4MCwgMjMzLCAzMiwgMjAsIDEsIDgwLCAyNDMsIDIwNCwgMjAsIDEsIDgwLCAKLSAgICAyNDMsIDQ4LCAyMCwgMSwgODAsIDIyOSwgOTQsIDIwLCAxLCA4MCwgMjM0LCAxNjIsIDIwLCAxLCA4MCwgMjMyLCAyOCwgMjAsIAotICAgIDEsIDgwLCAyMjksIDEwNywgMjAsIDEsIDgwLCAyNDIsIDIxMCwgMjAsIDEsIDgwLCAyNDQsIDE2NCwgMjAsIDEsIDgwLCAKLSAgICAyMjgsIDk0LCAyMCwgMSwgODAsIDIyNiwgMjksIDIwLCAxLCA4MCwgMjEzLCA4LCAyMCwgMSwgODAsIDIyOSwgMTMxLCAyMCwgCi0gICAgMSwgODAsIDIyOCwgMTEsIDI1MSwgMjAwLCAyMCwgMSwgODAsIDIyNywgMjE1LCAyMCwgMSwgODAsIDIyNSwgMTI3LCAyMCwgCi0gICAgMSwgODAsIDIzMSwgMzMsIDIwLCAxLCA4MCwgMjQzLCAyMDIsIDIwLCAxLCA4MCwgMjMwLCAzOCwgMjAsIDEsIDgwLCAyMzAsIAotICAgIDE3MCwgMjAsIDEsIDgwLCAyNDIsIDIwOSwgMjAsIDEsIDgwLCAyNDMsIDIwNiwgNzIsIDIwLCAxLCA4MCwgMjMwLCAxMTgsIAotICAgIDIwLCAxLCA4MCwgMjI1LCAzMiwgMjAsIDEsIDgwLCAyMjksIDk2LCAyMCwgMSwgODAsIDIzMywgMjEwLCAyMCwgMSwgODAsIAotICAgIDIyNSwgMjI5LCAyMCwgMSwgODAsIDIyOCwgMTAyLCAyMCwgMSwgODAsIDIxMywgOSwgMjAsIDEsIDgwLCAyMjksIDExNiwgCi0gICAgMjAsIDEsIDgwLCAyMjYsIDIxNCwgMjI2LCA2MiwgMjAsIDEsIDgwLCAyNDMsIDIwNiwgMjUwLCAyMDMsIDIwLCAxLCA4MCwgCi0gICAgMjQ0LCA2LCAyMCwgMSwgODAsIDIyOSwgNywgMjAsIDEsIDgwLCA2MSwgMjAsIDEsIDgwLCAyMTYsIDIyMywgMjAsIDEsIDgwLCAKLSAgICA3NSwgMjAsIDEsIDgwLCA3MiwgMjAsIDEsIDgwLCAyMzMsIDEwOSwgMjAsIDEsIDgwLCAyMjYsIDIxNCwgMjI1LCAxNTcsIAotICAgIDIwLCAxLCA4MCwgMjE4LCA0OSwgMjAsIDEsIDgwLCAyMTgsIDIsIDIwLCAxLCA4MCwgMjI5LCAyMjcsIDIzMCwgMTA2LCAKLSAgICAyNDAsIDIyMSwgMjAsIDEsIDgwLCAyMjAsIDE5NSwgMjAsIDEsIDgwLCAyMTMsIDUsIDIwLCAxLCA4MCwgMjI5LCA3NywgMjAsIAotICAgIDEsIDgwLCAyMTIsIDE5MywgMjAsIDEsIDgwLCAyMTIsIDIxOCwgMjE4LCAxODUsIDIwLCAxLCA4MCwgMjEyLCAyMTgsIDI0OSwgCi0gICAgODYsIDIwLCAxLCA4MCwgMjEyLCAxNzgsIDIwLCAxLCA4MCwgMjEyLCAxODYsIDIwLCAxLCA4MCwgMjM0LCAxNDgsIDIwLCAxLCAKLSAgICA4MCwgMjI2LCAyNywgMjAsIDEsIDgwLCAyMjksIDgsIDI0NSwgNjUsIDIwLCAxLCA4MCwgMjI1LCAzMCwgMjAsIDEsIDgwLCAKLSAgICAyMTMsIDE4MCwgMjAsIDEsIDgwLCAyNDQsIDExNiwgMjAsIDEsIDgwLCAyMTQsIDIyNywgMjAsIDEsIDgwLCAyMzIsIDE1NiwgCi0gICAgMjAsIDEsIDgwLCAyMzEsIDQyLCAyMCwgMSwgODAsIDIyMywgMjA0LCAyMCwgMSwgODAsIDIyNCwgNjEsIDIwLCAxLCA4MCwgCi0gICAgMjI5LCA3NiwgMjAsIDEsIDgwLCAyMjksIDE1OSwgMjAsIDEsIDgwLCAyMjAsIDE4NywgMjAsIDEsIDgwLCAyMjAsIDE3NiwgCi0gICAgMjAsIDEsIDgwLCAyNDMsIDIwNiwgMjIzLCAyMzYsIDIwLCAxLCA4MCwgMjA1LCAyMCwgMSwgODAsIDIyNSwgMjQwLCAyMCwgCi0gICAgMSwgODAsIDIzMiwgMTc0LCAyMCwgMSwgODAsIDIzNCwgMzcsIDIwLCAxLCA4MCwgMjMxLCAxMjIsIDIwLCAxLCA4MCwgMTg4LCAKLSAgICAyMCwgMSwgODAsIDIzMSwgMjMyLCAyMCwgMSwgODAsIDIxNywgMTc0LCAyMCwgMSwgODAsIDIzNCwgMTAxLCAyMCwgMSwgODAsIAotICAgIDIzMCwgMjIwLCAyMCwgMSwgODAsIDIxNywgMjAwLCAyMCwgMSwgODAsIDI0NCwgMTM3LCAyMCwgMSwgODAsIDI0MiwgMTk5LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMTgxLCAyMCwgMSwgMjI2LCAxMywgNjksIDIwLCAxLCAyMjYsIDEzLCAyMzMsIDIzOCwgMjAsIDEsIAotICAgIDIyNiwgMTMsIDI0NSwgMTY1LCAyMCwgMSwgMjI2LCAxMywgMjI0LCAxLCAyMCwgMSwgMjI2LCAxMywgMjE4LCAzNSwgMjAsIAotICAgIDEsIDIyNiwgMTMsIDIyOCwgMTAsIDIwLCAxLCAyMjYsIDEzLCAyMzMsIDE1NywgMjAsIDEsIDIyNiwgMTMsIDIyMywgMTM2LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMjIzLCAxODIsIDIwLCAxLCAyMjYsIDEzLCAyMzEsIDE0NCwgMjAsIDEsIDIyNiwgMTMsIDIxOCwgCi0gICAgNDksIDIwLCAxLCAyMjYsIDEzLCAyMjksIDIyNiwgMjAsIDEsIDIyNiwgMTMsIDIyOSwgMTQsIDIwLCAxLCAyMjYsIDEzLCAKLSAgICAxODMsIDIwLCAxLCAyMjYsIDEzLCAyMTgsIDIwNSwgMjAsIDEsIDIyNiwgMTMsIDIyMCwgMjA3LCAyMCwgMSwgMjI2LCAxMywgCi0gICAgMjIwLCAxMTcsIDIwLCAxLCAyMjYsIDEzLCAyMjEsIDQ0LCAyMCwgMSwgMjI2LCAxMywgMjMzLCAxNzcsIDIwLCAxLCAyMjYsIAotICAgIDEzLCAyMzQsIDE2MiwgMjAsIDEsIDIyNiwgMTMsIDIyOCwgNjQsIDIwLCAxLCAyMjYsIDEzLCAyMjgsIDkyLCAyMCwgMSwgCi0gICAgMjI2LCAxMywgMjI4LCAyNDEsIDIwLCAxLCAyMjYsIDEzLCAyMTIsIDIxNywgMjAsIDEsIDIyNiwgMTMsIDIyMCwgMTUwLCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMTg2LCAyMCwgMSwgMjI2LCAxMywgMjI4LCAxMjAsIDIwLCAxLCAyMjYsIDEzLCAyMjYsIDI3LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMjI4LCAxMDEsIDIwLCAxLCAyMjYsIDEzLCAyMTMsIDE4MCwgMjAsIDEsIDIyNiwgMTMsIDIyNiwgCi0gICAgODYsIDIwLCAxLCAyMjYsIDEzLCAyMjMsIDUxLCAyMCwgMSwgMjI2LCAxMywgMjI5LCA2NCwgMjAsIDEsIDIyNiwgMTMsIAotICAgIDIyMywgMjA0LCAyMCwgMSwgMjI2LCAxMywgMjM0LCAxNzEsIDIwLCAxLCAyMjYsIDEzLCAyMjksIDkzLCAyMCwgMSwgMjI2LCAKLSAgICAxMywgMjI5LCAxNDEsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDE4NywgMjAsIDEsIDIyNiwgMTMsIDIyNSwgMzMsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyNDQsIDYsIDIwLCAxLCAyMjYsIDEzLCAyMTQsIDQ5LCAyMCwgMSwgMjI2LCAxMywgMjMzLCAxMywgMjAsIDEsIAotICAgIDIyNiwgMTMsIDIzMiwgMTc0LCAyMCwgMSwgMjI2LCAxMywgMjM0LCAzNywgMjAsIDEsIDIyNiwgMTMsIDIzMSwgMTc3LCAyMCwgCi0gICAgMSwgMjI2LCAxMywgMjIzLCAyMzMsIDIwLCAxLCAyMjYsIDEzLCAxODgsIDIwLCAxLCAyMjYsIDEzLCAyMzAsIDIzMSwgMjAsIAotICAgIDEsIDIyNiwgMTMsIDIzMSwgMTg1LCAyMCwgMSwgMjI2LCAxMywgMjE3LCAxODMsIDIwLCAxLCAyMjYsIDEzLCAyMzQsIDQsIAotICAgIDIwLCAxLCAyMjYsIDEzLCAyMjIsIDE2NiwgMjAsIDEsIDIyNiwgMTMsIDIxNCwgOTgsIDU2LCAxLCAyNTMsIDE5MywgNzQsIAotICAgIDE0MiwgMSwgMjUzLCAxOTMsIDIxMywgMzgsIDQ3LCAyNywgMTYsIDIyNSwgMzksIDQ3LCAyNywgMTYsIDI0OCwgMTAzLCA0NywgCi0gICAgMjcsIDE2LCAyMjYsIDUwLCA0NywgMjcsIDE2LCAyMjYsIDIzNywgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIDIyNiwgMjM3LCAKLSAgICAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjE0LCAyNDgsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyMTQsIDI0OCwgMjQ3LCAxNTMsIAotICAgIDQ3LCAyNywgMTYsIDIzNCwgMjAyLCA0NywgMjcsIDE2LCAyMTgsIDExNSwgNDcsIDI3LCAxNiwgMjI2LCAxMzcsIDQ3LCAyNywgCi0gICAgMTYsIDIxMiwgMjA4LCA0NywgMjcsIDE2LCAyMTIsIDIwOSwgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIzMywgMjQzLCA0NywgCi0gICAgMjcsIDE2LCAyNTMsIDIzNiwgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIDI0NCwgMjQ5LCAyNDUsIDEzNSwgNDcsIDI3LCAxNiwgCi0gICAgMjE3LCAyMTEsIDQ3LCAyNywgMTYsIDIzNCwgMTY3LCA0NywgMjcsIDE2LCAyNTMsIDIyNywgNDcsIDI3LCAxNiwgMjUzLCAKLSAgICAyMjgsIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMTgsIDEyMSwgNDcsIDI3LCAxNiwgMjE3LCAxMTIsIDQ3LCAyNywgMTYsIAotICAgIDIyNywgNzIsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIyNSwgMzgsIAotICAgIDQ3LCAyNywgMTYsIDI1MCwgODUsIDQ3LCAyNywgMTYsIDIxNCwgMjM4LCA0NywgMjcsIDE2LCAyMzUsIDE2MiwgMjUzLCAKLSAgICAxOTEsIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjM0LCAxNjgsIDI1MywgMTkxLCA0NywgCi0gICAgMjcsIDE2LCAyMjIsIDEzMSwgNDcsIDI3LCAxNiwgMjI2LCAxMjgsIDQ3LCAyNywgMTYsIDIxOSwgODYsIDI1MywgMjMwLCAKLSAgICA0NywgMjcsIDE2LCAyMjYsIDIzNiwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIxNCwgMjQ3LCAyNTMsIDE5MSwgNDcsIDI3LCAKLSAgICAxNiwgMjUzLCAyMzEsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyNTMsIDIyNSwgNDcsIDI3LCAxNiwgMjM0LCA0NiwgNDcsIAotICAgIDI3LCAxNiwgMjIzLCAxOTksIDQ3LCAyNywgMTYsIDIyNSwgMjM4LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjE3LCAzNiwgCi0gICAgNDcsIDI3LCAxNiwgMjU0LCAzMCwgNDcsIDI3LCAxNiwgMjIyLCA3OCwgNDcsIDI3LCAxNiwgMjE4LCAxMjQsIDI1MywgMTkxLCAKLSAgICA0NywgMjcsIDE2LCAyMTgsIDEyNCwgMjMxLCAxMDcsIDIxOSwgODQsIDQ3LCAyNywgMTYsIDIyNiwgMjMxLCAyNTMsIDE5MSwgCi0gICAgNDcsIDI3LCAxNiwgMjE3LCAxNDMsIDQ3LCAyNywgMTYsIDIzMywgNTEsIDQ3LCAyNywgMTYsIDI0NSwgMjUyLCA0NywgMjcsIAotICAgIDE2LCAyMTYsIDE4NSwgNDcsIDI3LCAxNiwgMjE3LCAxODUsIDQ3LCAyNywgMTYsIDIzMywgMjQ2LCA0NywgMjcsIDE2LCAKLSAgICAyNTMsIDIzNiwgMjQ0LCAyNDksIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIAotICAgIDIzNiwgNywgNDcsIDI3LCAxNiwgMjE2LCAxNTcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMzQsIDIwNSwgMjE2LCAxNTYsIAotICAgIDQ3LCAyNywgMTYsIDIyNiwgNzUsIDQ3LCAyNywgMTYsIDIyNSwgNDMsIDQ3LCAyNywgMTYsIDIzNCwgMjAsIDQ3LCAyNywgCi0gICAgMTYsIDI1MCwgMTcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMjQsIDM4LCA0NywgMjcsIDE2LCAyMjYsIDE0MCwgMjUzLCAKLSAgICAxOTEsIDQ3LCAyNywgMTYsIDIyNiwgMTM4LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjQwLCAxMDIsIDQ3LCAyNywgMTYsIAotICAgIDIzMCwgMjMsIDQ3LCAyNywgMTYsIDIyNiwgMzIsIDQ3LCAyNywgMTYsIDIzNCwgMjEsIDI1NCwgNTgsIDQ3LCAyNywgMTYsIAotICAgIDIxNiwgMTU3LCAyNTQsIDU4LCA0NywgMjcsIDE2LCAyMTksIDYzLCA0NywgMjcsIDE2LCAyNDIsIDEwMSwgNDcsIDI3LCAxNiwgCi0gICAgMjM1LCAxNjIsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjcsIDcyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI2LCAyMzcsIAotICAgIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjYsIDMxLCA0NywgMjcsIDE2LCAyMzQsIDcsIDQ3LCAyNywgMTYsIDIyNiwgMzAsIAotICAgIDQ3LCAyNywgMTYsIDIzMywgMjQ1LCA0NywgMjcsIDE2LCAyMjYsIDc2LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjM0LCAKLSAgICAxNjgsIDIyOSwgMTc4LCAyNTQsIDcsIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIAotICAgIDE2LCAyMTIsIDIwNiwgNDcsIDI3LCAxNiwgMjUzLCAyMjgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNTMsIDIyOSwgMjE4LCAKLSAgICAxMjIsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTIsIDIwNywgNDcsIDI3LCAxNiwgMjMzLCAyNDQsIDQ3LCAyNywgMTYsIAotICAgIDI0NSwgMTMwLCA0NywgMjcsIDE2LCAyNTAsIDg2LCA0NywgMjcsIDE2LCAyMzEsIDExLCAyMzUsIDE2MSwgNDcsIDI3LCAxNiwgCi0gICAgMjE0LCAyNDgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjUsIDIzOCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNSwgNDQsIAotICAgIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjcsIDY5LCA0NywgMjcsIDE2LCAyNTMsIDI1MSwgNDcsIDI3LCAxNiwgMjMyLCAKLSAgICAxMTgsIDQ3LCAyNywgMTYsIDIyNiwgMTM4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI2LCAxNDAsIDIyOSwgMTc3LCA0NywgCi0gICAgMjcsIDE2LCAyNDUsIDI2LCAyMjYsIDEzOSwgNDcsIDI3LCAxNiwgMjMzLCAxNzUsIDQ3LCAyNywgMTYsIDI1MywgMjUyLCAKLSAgICA0NywgMjcsIDE2LCAyMTYsIDE1NywgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDI0NSwgMTMzLCA0NywgMjcsIDE2LCAyMTgsIAotICAgIDEyNCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIxOCwgMTE2LCA0NywgMjcsIDE2LCAyNTAsIDE3LCAyMjksIDE3NywgNDcsIAotICAgIDI3LCAxNiwgMjQ1LCA2OSwgNDcsIDI3LCAxNiwgMjIyLCA3OSwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIxMywgMTM5LCAKLSAgICAyMzQsIDQ2LCA0NywgMjcsIDE2LCAyMTYsIDE1NCwgNDcsIDI3LCAxNiwgMjI1LCA0NSwgNDcsIDI3LCAxNiwgMjE2LCAxNTgsIAotICAgIDQ3LCAyNywgMTYsIDIxNiwgMTU1LCA0NywgMjcsIDE2LCAyMjUsIDQyLCA0NywgMjcsIDE2LCAyMTYsIDE1MywgNDcsIDI3LCAKLSAgICAxNiwgMjI1LCA0MSwgNDcsIDI3LCAxNiwgMjQyLCAxMzQsIDQ3LCAyNywgMTYsIDI1MywgMTg1LCA0NywgMjcsIDE2LCAyNDUsIAotICAgIDI2LCAyNTMsIDE4NSwgNDcsIDI3LCAxNiwgMjI2LCAyMzEsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTcsIDE0MiwgMjQ1LCAKLSAgICAzNCwgNDcsIDI3LCAxNiwgMjE3LCAxNDIsIDI0NCwgMjQ4LCA0NywgMjcsIDE2LCAyMTcsIDE0NCwgMjUzLCAyMzIsIDQ3LCAKLSAgICAyNywgMTYsIDIxNywgMTM3LCAyMzQsIDI1MSwgMjUzLCAyMjQsIDQ3LCAyNywgMTYsIDIzNCwgMjA0LCA0NywgMjcsIDE2LCAKLSAgICAyNDUsIDk3LCA0NywgMjcsIDE2LCAyMTMsIDIsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyMTMsIDIsIDI1NCwgNywgNDcsIAotICAgIDI3LCAxNiwgMjE5LCA4NSwgNDcsIDI3LCAxNiwgMjM0LCA0NywgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDcsIDE1NCwgMjUzLCAKLSAgICAxOTEsIDQ3LCAyNywgMTYsIDIzMywgMjQ3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjMzLCAyNDcsIDI1NCwgNTgsIDQ3LCAKLSAgICAyNywgMTYsIDIzMywgMjQ3LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjUzLCAyMzEsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAKLSAgICAyNTMsIDIzMywgNDcsIDI3LCAxNiwgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIxNiwgMTY4LCA0NywgMjcsIDE2LCAyMTcsIAotICAgIDE3NywgNDcsIDI3LCAxNiwgMjM0LCAxMSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjQ1LCA5MiwgMjUwLCA4LCA0NywgMjcsIAotICAgIDE2LCAyMzMsIDU2LCAyNDUsIDI1MywgMjUwLCA5LCA0NywgMjcsIDE2LCAyMzMsIDU2LCAyMTYsIDE3MCwgMjUwLCA5LCA0NywgCi0gICAgMjcsIDE2LCAyMzMsIDU2LCAyMTcsIDE4NywgMjUwLCA5LCA0NywgMjcsIDE2LCAyMzMsIDU2LCAyMzYsIDIsIDI1MCwgOCwgCi0gICAgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDIyOSwgMTc4LCAyNTQsIDcsIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjYsIDEyOSwgCi0gICAgMjUzLCAxODEsIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjYsIDEyOSwgMjQ3LCAyMzYsIDQ3LCAyNywgMTYsIDI0NywgMTc3LCAKLSAgICA0NywgMjcsIDE2LCAyNDcsIDE3OCwgMjI2LCAxMjksIDI1MywgMTgyLCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIAotICAgIDIyNiwgMTI5LCAyNTMsIDE4MiwgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDcsIDE3OCwgMjI2LCAxMjksIDI0NywgMjM2LCA0NywgCi0gICAgMjcsIDE2LCAyMTYsIDE3NCwgNDcsIDI3LCAxNiwgMjUzLCAxODYsIDQ3LCAyNywgMTYsIDIzNiwgOSwgNDcsIDI3LCAxNiwgCi0gICAgMjQ3LCAxOTgsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyMjUsIDEzNCwgMjUzLCAxODcsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAKLSAgICAyNTMsIDE4NCwgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDI1MywgMTg3LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjMxLCAxMDEsIAotICAgIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyMzEsIDExMCwgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDI0MiwgMTM2LCA0NywgMjcsIAotICAgIDE2LCAyNTQsIDExNiwgMjQyLCAxMzMsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyMjUsIDEzNCwgMjQyLCAxMzYsIDQ3LCAyNywgCi0gICAgMTYsIDIzMSwgMjE0LCAyMjUsIDUwLCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDI1NCwgNjAsIDIyNSwgNTAsIAotICAgIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjQ3LCAyMzUsIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgCi0gICAgMjU0LCA2MCwgMjQ3LCAyMzUsIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE2LCAxNjMsIDI0MCwgMTAwLCAKLSAgICA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE2LCAxNzUsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTcsIDE4MSwgMjQwLCAxMDAsIAotICAgIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTcsIDE4MSwgMjMzLCA1OSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAKLSAgICAyMzMsIDU5LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIyNSwgMTcxLCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgCi0gICAgMjM1LCAxNjcsIDIxNywgMjA0LCAyNDAsIDEwMSwgNDcsIDI3LCAxNiwgMjUzLCAyMjksIDIxNywgMjA0LCAyNDAsIDEwMSwgCi0gICAgNDcsIDI3LCAxNiwgMjQ0LCAxNDAsIDIxNywgMTc4LCA0NywgMjcsIDE2LCAyNDQsIDE0MCwgMjMwLCAyMTMsIDQ3LCAyNywgCi0gICAgMTYsIDI0NCwgMTQwLCAyNDcsIDE4MiwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNCwgMjQyLCAyNDAsIDEwMCwgNDcsIDI3LCAKLSAgICAxNiwgMjMxLCAyMTQsIDIyNSwgNDksIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjI1LCAxNzEsIDIxNywgCi0gICAgMTgxLCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjQyLCAxMzEsIDIzMCwgOTgsIDI1MywgMjMyLCA0NywgMjcsIDE2LCAyNDIsIAotICAgIDEzMSwgMjMwLCA5OCwgMjQ3LCAxNTIsIDQ3LCAyNywgMTYsIDI0NSwgMTA2LCAyMzQsIDI1MSwgMjQzLCAyMDcsIDIxNCwgCi0gICAgMTA1LCA0NywgMjcsIDE2LCAyMzYsIDgsIDQ3LCAyNywgMTYsIDIzNiwgNiwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI1MywgCi0gICAgMTkyLCAyNDcsIDIzNCwgMjQwLCA5OSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAxOTMsIDQ3LCAyNywgMTYsIAotICAgIDI0MywgMjA3LCAyNDcsIDE5NiwgMjMwLCAyMywgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIzMCwgMTgsIDI0MCwgMTAwLCA0NywgCi0gICAgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDI0NywgMjExLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjIwLCAzMCwgMjQ3LCAKLSAgICAxOTUsIDI0NywgMjExLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIzNCwgMTg4LCA0NywgMjcsIDE2LCAyNDMsIAotICAgIDIwNywgMjQ3LCAxOTYsIDIxMiwgMTYsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMjI5LCA2NSwgMjM0LCAKLSAgICAyMDEsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMjI5LCA2NSwgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDMsIAotICAgIDIwNywgMjMxLCAyNTQsIDI1MCwgMTAsIDI0NywgMTgyLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjMxLCAyNTQsIDI1MCwgCi0gICAgMTAsIDIzMCwgMjEzLCA0NywgMjcsIDE2LCAyNDQsIDkxLCAyMjAsIDMwLCAyNTAsIDEwLCAyMTQsIDI0MSwgNDcsIDI3LCAKLSAgICAxNiwgMjQzLCAyMDcsIDIyMCwgMzAsIDI1MCwgMTAsIDIxOCwgMTI1LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjI5LCAxNzksIAotICAgIDQ3LCAyNywgMTYsIDI1MCwgMTEsIDIxMSwgMjQ4LCA0NywgMjcsIDE2LCAyNTAsIDExLCAyMzQsIDQ1LCA0NywgMjcsIDE2LCAKLSAgICAyNTAsIDExLCAyMTksIDE5NywgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0MCwgMTQ2LCAyMTMsIDEsIDIxNywgMTgyLCA0NywgCi0gICAgMjcsIDE2LCAyNDMsIDIwNywgMjQ1LCAxMDcsIDI1MywgMjUzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIxNiwgMTY0LCA0NywgCi0gICAgMjcsIDE2LCAyNDcsIDE5MCwgMjE2LCAxNjQsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyMTcsIDE4MiwgNDcsIDI3LCAxNiwgCi0gICAgMjQ3LCAxOTAsIDI1MywgMjM0LCAyNDUsIDI1MywgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjQ3LCAxOTAsIDIzMCwgMjExLCAKLSAgICAyMTcsIDE4NiwgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjQ3LCAxOTAsIDI0NywgMTc0LCAyNDUsIDMsIDI0NywgOTMsIDQ3LCAKLSAgICAyNywgMTYsIDI0NywgMTkwLCAyMTYsIDE3MiwgMjI3LCA3NywgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjEzLCAxLCAyNTMsIAotICAgIDIzNCwgMjQ1LCAyNTMsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjMwLCAyMTEsIDIxNywgMTg2LCAyNDcsIDkzLCAKLSAgICA0NywgMjcsIDE2LCAyMTMsIDEsIDI0NywgMTc0LCAyNDUsIDMsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjE2LCAKLSAgICAxNzIsIDIyNywgNzcsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0MywgMjUsIDI0NywgMTg5LCA0NywgMjcsIDE2LCAyNDMsIAotICAgIDI1LCAyMTMsIDAsIDQ3LCAyNywgMTYsIDI0NywgMTk3LCAyNTMsIDIzNCwgMjMxLCAxMiwgNDcsIDI3LCAxNiwgMjQ3LCAKLSAgICAxOTcsIDI1MywgMjM0LCAyMzEsIDEzNywgNDcsIDI3LCAxNiwgMjQ3LCAxOTcsIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyNDcsIAotICAgIDE5NywgMjE3LCAxMzUsIDQ3LCAyNywgMTYsIDIyMCwgODksIDIxNywgMTM1LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIAotICAgIDEzNiwgMjQ3LCAxMzgsIDQ3LCAyNywgMTYsIDIyMCwgODksIDIxNywgMTM2LCAyMTYsIDE2NSwgNDcsIDI3LCAxNiwgMjIwLCAKLSAgICA4OSwgMjE3LCAxMzYsIDIxNywgMTc1LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyNTMsIDE1OSwgNDcsIDI3LCAxNiwgMjIwLCAKLSAgICA4OSwgMjUzLCAxNjAsIDI0NywgMTM4LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyNTMsIDE2MCwgMjE2LCAxNjUsIDQ3LCAyNywgCi0gICAgMTYsIDIyMCwgODksIDI1MywgMTYwLCAyMTcsIDE3NSwgNDcsIDI3LCAxNiwgMjQ3LCAxNzUsIDI0MywgNiwgNDcsIDI3LCAKLSAgICAxNiwgMjQ3LCAxODEsIDIyNywgMiwgNDcsIDI3LCAxNiwgMjE5LCA3NywgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDE5MywgNDcsIAotICAgIDI3LCAxNiwgMjUzLCAxNzgsIDIxNCwgMTA1LCA0NywgMjcsIDE2LCAyNTMsIDE3OCwgMjQzLCAxMTAsIDQ3LCAyNywgMTYsIAotICAgIDI1MywgMTc4LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDIzNCwgMTg4LCA0NywgMjcsIDE2LCAyNTMsIDE3OCwgCi0gICAgMjEyLCAxNiwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDIyOSwgNjQsIDQ3LCAyNywgMTYsIDIzNCwgMTY4LCAyMjksIDE3OCwgCi0gICAgMjMxLCAxMDksIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyMjksIDE3OCwgMjMxLCAxMDksIDQ3LCAyNywgMTYsIDIzNCwgMTY4LCAKLSAgICAyMjksIDE3OCwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyMjksIDE3OCwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIAotICAgIDIzNCwgNDcsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI5LCAxNzgsIDIzNCwgMjAxLCAyNywgMTYsIDIyMCwgCi0gICAgODEsIDI1MiwgNTUsIDI3LCAxNiwgNTEsIDI1MiwgNTUsIDI3LCAxNiwgNDAsIDI1MiwgNTUsIDI3LCAxNiwgMjIzLCAyMDMsIAotICAgIDQwLCAyNTIsIDU1LCAyNywgMTYsIDI0OCwgMTAwLCAyNTIsIDU1LCAyNywgMTYsIDIyMCwgMTc1LCAyNTIsIDU1LCAyNywgCi0gICAgMTYsIDQyLCAyMjMsIDIyOCwgNTIsIDI3LCAxNiwgNDYsIDIyMywgMjI4LCA1MiwgMjcsIDE2LCAyMjMsIDIyOCwgMjQ3LCAKLSAgICA3MiwgMjcsIDE2LCAyNDgsIDE0MSwgMjIyLCA4MiwgMjcsIDE2LCAyNDgsIDE2NSwgMjUwLCAxODEsIDI3LCAxNiwgMjIyLCAKLSAgICA4MiwgMjcsIDE2LCAyNDksIDE3MSwgMjcsIDE2LCAyMjMsIDIyNiwgMjQ0LCA4MCwgMjcsIDE2LCAyMjMsIDIyNiwgMjQ0LCAKLSAgICA3OSwgMjcsIDE2LCAyMjMsIDIyNiwgMjQ0LCA3OCwgMjcsIDE2LCAyNDQsIDEwMCwgMjcsIDE2LCAyNDQsIDEwMSwgNTUsIAotICAgIDI3LCAxNiwgMjUxLCA3NiwgNzcsIDI3LCAxNiwgMjUwLCAyMTAsIDI3LCAxNiwgMjUxLCA4NiwgMjcsIDE2LCAxMjUsIDI3LCAKLSAgICAxNiwgMjI3LCA1OSwgMjE5LCAxMDIsIDI3LCAxNiwgMjE2LCAyMywgMjE5LCAxMDIsIDI3LCAxNiwgMjE3LCA5NiwgMjE5LCAKLSAgICAxMDIsIDI3LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAyNywgMTYsIDI0NCwgNDksIDIxOSwgMTAyLCAyNywgMTYsIDIyMCwgCi0gICAgNTIsIDIxOSwgMTAyLCAyNywgMTYsIDIyMCwgNTAsIDI0MywgMjIwLCAyNywgMTYsIDI0MywgMjM0LCAyNDMsIDIyMCwgMjcsIAotICAgIDE2LCAyNDMsIDE3OCwgMjQ5LCAyMDcsIDI3LCAxNiwgMjQzLCAxNzgsIDI0OSwgMjA4LCAyMjcsIDQsIDI1NCwgNTEsIDI3LCAKLSAgICAxNiwgMjQzLCAxNzgsIDI0OSwgMjA4LCAyMjcsIDQsIDI1MiwgNDIsIDI3LCAxNiwgMjUwLCAyNTMsIDI0OSwgMjA3LCAyNywgCi0gICAgMTYsIDI0NCwgMjMxLCAyNDksIDIwNywgMjcsIDE2LCAyNDQsIDIzMSwgMjQ5LCAyMDgsIDIyNywgNCwgMjU0LCA1MSwgMjcsIAotICAgIDE2LCAyNDQsIDIzMSwgMjQ5LCAyMDgsIDIyNywgNCwgMjUyLCA0MiwgMjcsIDE2LCAyNDYsIDM4LCAyNDksIDIwNiwgMjcsIAotICAgIDE2LCAyNDYsIDM4LCAyNDksIDIwNSwgMjcsIDE2LCAyMzAsIDE1NSwgMjMxLCAxNTUsIDIyMywgMjEzLCAyNywgMTYsIDUxLCAKLSAgICAyMjAsIDI1NCwgMjcsIDE2LCA1MSwgMjQ0LCAzNCwgMjcsIDE2LCAyNDQsIDM1LCAyMTUsIDEzNCwgMjcsIDE2LCAyNDQsIAotICAgIDM1LCAyNDYsIDYwLCAyNywgMTYsIDIzMCwgOSwgMjE1LCAxMzQsIDI3LCAxNiwgMjMwLCA5LCAyNDYsIDYwLCAyNywgMTYsIAotICAgIDIyMCwgMjU1LCAyMTUsIDEzNCwgMjcsIDE2LCAyMjAsIDI1NSwgMjQ2LCA2MCwgMjcsIDE2LCAyMjQsIDE2NywgMTYwLCAKLSAgICAyMjAsIDI1NCwgMjcsIDE2LCAyMjQsIDE2NywgMTYwLCAyNDQsIDM0LCAyNywgMTYsIDI0OSwgMTU1LCAyMTcsIDQwLCAyNywgCi0gICAgMTYsIDI0OSwgMjcsIDIxNywgNDAsIDI3LCAxNiwgMjI3LCA0LCAyNTQsIDUxLCAyNywgMTYsIDIyNywgNCwgMjUyLCA0MiwgCi0gICAgMjcsIDE2LCAyMjQsIDE0OSwgMjU0LCA1MSwgMjcsIDE2LCAyMjQsIDE0OSwgMjUyLCA0MiwgMjcsIDE2LCAyMzAsIDE1OCwgCi0gICAgMjIzLCAyMTMsIDI3LCAxNiwgMjEzLCAyMzYsIDIyMywgMjEzLCAyNywgMTYsIDE1MSwgMjIzLCAyMTMsIDI3LCAxNiwgMjI0LCAKLSAgICAxNjcsIDIyMywgMjEzLCAyNywgMTYsIDI0NSwgMTQ2LCAyMjMsIDIxMywgMjcsIDE2LCAyMjAsIDQ2LCAyMjMsIDIxMywgMjcsIAotICAgIDE2LCAyMTcsIDExMywgMjIzLCAyMTMsIDI3LCAxNiwgMjIwLCAzOCwgMjIzLCAyMTMsIDI3LCAxNiwgMTIyLCAyNDAsIDIwMSwgCi0gICAgMjE2LCAzNiwgMjIzLCAyMTMsIDI3LCAxNiwgMjEzLCAxNjcsIDIyOCwgMTU0LCAyNywgMTYsIDk0LCAyMjgsIDE1NCwgMjcsIAotICAgIDE2LCAyNDksIDIyOSwgMjEzLCAxNjcsIDIyOCwgMTU0LCAyNywgMTYsIDQxLCAyMjgsIDE1NSwgMjEzLCAyMzgsIDI3LCAxNiwgCi0gICAgNDEsIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDExNCwgMjEzLCAyMzgsIDI3LCAKLSAgICAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTQsIDI1MSwgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgNDIsIAotICAgIDIxMywgMjM4LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgNDIsIDI1MSwgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAKLSAgICAyMjgsIDE1NSwgNDYsIDIxMywgMjM4LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgNDYsIDI1MSwgMTQ0LCAyNywgMTYsIAotICAgIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE5LCAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDExOSwgMjUxLCAKLSAgICAxNDQsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTQsIDQ2LCAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgCi0gICAgMjI4LCAxNTUsIDExNCwgNDYsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMCwgMTk5LCAyMjgsIDE1NSwgMjEzLCAyMzgsIDI3LCAKLSAgICAxNiwgMjMwLCAxOTksIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4MSwgMjI4LCAxNTUsIDExOSwgMjEzLCAKLSAgICAyMzgsIDI3LCAxNiwgMjE2LCAxODEsIDIyOCwgMTU1LCAxMTksIDI1MSwgMTQ0LCAyNywgMTYsIDIyNiwgMTMyLCAyMjgsIAotICAgIDE1NCwgMjcsIDE2LCAyMTQsIDExMywgMjI4LCAxNTQsIDI3LCAxNiwgMjI4LCAxNTUsIDI1MSwgMTQ0LCAyNywgMTYsIDIyOCwgCi0gICAgNTksIDIyOCwgMTU0LCAyNywgMTYsIDI0OSwgMTc4LCAyMjgsIDE1NSwgMjEzLCAyMzgsIDI3LCAxNiwgMjQ5LCAxNzgsIAotICAgIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyNTEsIDc0LCAyNywgMTYsIDIxMywgMjM2LCAyMjgsIDE1OCwgMjcsIDE2LCAKLSAgICAxNTEsIDIyOCwgMTU4LCAyNywgMTYsIDIyNCwgMTY3LCAyMjgsIDE1OCwgMjcsIDE2LCAyNDUsIDE0NiwgMjI4LCAxNTgsIAotICAgIDI3LCAxNiwgMjIwLCA0NiwgMjI4LCAxNTgsIDI3LCAxNiwgMjE3LCAxMTMsIDIyOCwgMTU4LCAyNywgMTYsIDIyMCwgMzgsIAotICAgIDIyOCwgMTU4LCAyNywgMTYsIDEyMiwgMjQwLCAyMDEsIDIxNiwgMzYsIDIyOCwgMTU4LCAyNywgMTYsIDM3LCAyMTksIDc5LCAKLSAgICAyNywgMTYsIDM3LCAyMTksIDE3MiwgMjE5LCA3OSwgMjcsIDE2LCAzNywgMjE2LCAxOTIsIDI3LCAxNiwgMzcsIDIxNiwgCi0gICAgMTkxLCAyNywgMTYsIDM3LCAyMTYsIDE5MCwgMjcsIDE2LCAyNDQsIDcwLCAyMTYsIDE5MiwgMjcsIDE2LCAyNDQsIDcwLCAKLSAgICAyMTYsIDE5MSwgMjcsIDE2LCAyNDQsIDcwLCAyMTYsIDE5MCwgMjcsIDE2LCAzNywgMjUzLCAxMDUsIDI0NywgNzQsIDI3LCAKLSAgICAxNiwgMzcsIDI0NCwgNDEsIDI3LCAxNiwgMzcsIDI0NCwgNDAsIDI3LCAxNiwgMzcsIDI0NCwgMzksIDI3LCAxNiwgMzcsIAotICAgIDI0NCwgMzgsIDI3LCAxNiwgMzcsIDI0NCwgMzcsIDI3LCAxNiwgMjUxLCAyMzQsIDI1MSwgMjUwLCAyNywgMTYsIDI0NSwgCi0gICAgMTAxLCAyNTEsIDI1MCwgMjcsIDE2LCAyNTEsIDIzNCwgMjE3LCA2NSwgMjcsIDE2LCAyNDUsIDEwMSwgMjE3LCA2NSwgMjcsIAotICAgIDE2LCAyNTEsIDIzNCwgMjIwLCA4LCAyNywgMTYsIDI0NSwgMTAxLCAyMjAsIDgsIDI3LCAxNiwgMjUxLCAyMzQsIDIyNSwgCi0gICAgMjQ3LCAyNywgMTYsIDI0NSwgMTAxLCAyMjUsIDI0NywgMjcsIDE2LCAzNywgMjU0LCAxNzQsIDI3LCAxNiwgMzcsIDIxOSwgCi0gICAgMTA0LCAyNywgMTYsIDM3LCAyMTcsIDE5MSwgMjcsIDE2LCAzNywgMjE5LCAxMDUsIDI3LCAxNiwgMzcsIDIzMSwgMjI1LCAKLSAgICAyNywgMTYsIDM3LCAyMzEsIDIyNCwgMjcsIDE2LCAzNywgMjU0LCAxNzMsIDI3LCAxNiwgMzcsIDIzMiwgMTY3LCAyNywgMTYsIAotICAgIDI1MywgMTY5LCAyMTUsIDEzNCwgMjcsIDE2LCAyNTMsIDE2OSwgMjQ2LCA2MCwgMjcsIDE2LCAzNywgMjQ3LCA4OSwgMjcsIAotICAgIDE2LCAzNywgMjIzLCAxMjgsIDI3LCAxNiwgMzcsIDI0NCwgMjcsIDI3LCAxNiwgMzcsIDIyMCwgNCwgMjcsIDE2LCAzNywgCi0gICAgMjUxLCAyMTUsIDI3LCAxNiwgMzcsIDUxLCAyMTYsIDIzMiwgMjcsIDE2LCAzNywgMjE2LCAxNjksIDIxNiwgMjMyLCAyNywgCi0gICAgMTYsIDIyMywgMTMyLCAyNywgMTYsIDIxOSwgMjAsIDI3LCAxNiwgMjEyLCAxNTIsIDI3LCAxNiwgMjI1LCAyMzksIDI3LCAKLSAgICAxNiwgMjMxLCA5MiwgMjcsIDE2LCAyNDMsIDI0MiwgMjcsIDE2LCAyNDksIDc4LCAyNywgMTYsIDI0OCwgMjksIDI3LCAxNiwgCi0gICAgMjQyLCAxMjYsIDIyOCwgMTU5LCAyMjAsIDIzLCAyNywgMTYsIDI0MiwgMTI2LCAyMjgsIDE1OSwgMjI4LCAxODYsIDIyMCwgCi0gICAgMjMsIDI3LCAxNiwgMjE2LCAyMTMsIDI3LCAxNiwgMjE2LCA1OSwgMjcsIDE2LCAyMzUsIDE5MSwgMjE2LCA1OSwgMjcsIDE2LCAKLSAgICAyMTYsIDYwLCAyMjAsIDIzLCAyNywgMTYsIDIxNiwgNjAsIDIxNSwgMTM0LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDQsIAotICAgIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0MSwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDQwLCAyNywgMTYsIDIyNywgMTUsIDIxOSwgCi0gICAgMzksIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzOCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDM3LCAyNywgMTYsIDIyNywgMTUsIAotICAgIDIxOSwgMzYsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNSwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDM0LCAyNywgMTYsIDIyNywgCi0gICAgMTUsIDIxOSwgNDMsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0MiwgMjcsIDE2LCAyNDEsIDIyOSwgMjcsIDE2LCAyMjksIAotICAgIDE4NiwgMjcsIDE2LCAyNDUsIDEwMSwgNjUsIDIxOSwgNzMsIDI3LCAxNiwgMjQ4LCAyMiwgMjIwLCAyMywgMjcsIDE2LCAzNywgCi0gICAgMTE5LCAyNTEsIDk1LCAyNywgMTYsIDM3LCAxMTQsIDI1MSwgOTUsIDI3LCAxNiwgMzcsIDI0MSwgMjM5LCAyNywgMTYsIDM3LCAKLSAgICAyMTksIDI1MSwgMjI1LCAxNzUsIDI3LCAxNiwgMjI2LCA5MSwgNzcsIDI3LCAxNiwgMjI2LCA5MSwgMTE0LCA3NywgMjcsIAotICAgIDE2LCAxNTEsIDIyNiwgOTEsIDc3LCAyNywgMTYsIDI0MiwgMTU4LCAyMTUsIDEzNCwgMjcsIDE2LCAyNDIsIDE1OCwgMjQ2LCAKLSAgICA2MCwgMjcsIDE2LCAyLCAyNDQsIDY5LCAyNywgMTYsIDI0OCwgMTI1LCAyNywgMTYsIDI0OCwgMTI2LCAyNTQsIDYzLCAyNywgCi0gICAgMTYsIDIzMSwgMTk3LCAyNywgMTYsIDIzMiwgMTgyLCAyNywgMTYsIDI1MSwgNzEsIDI3LCAxNiwgMjIxLCA3NCwgMjEzLCAKLSAgICAyMzgsIDI3LCAxNiwgMjIxLCA3NCwgMjUxLCAxNDQsIDI3LCAxNiwgMjMwLCAyNTMsIDI3LCAxNiwgMjMwLCAyNTQsIDI1MSwgCi0gICAgMTQ0LCAyNywgMTYsIDIyMSwgNjgsIDIxMywgMjM4LCAyNywgMTYsIDIyMSwgNjgsIDI1MSwgMTQ0LCAyNywgMTYsIDI0MywgCi0gICAgMTkyLCAyMTMsIDIzOCwgMjcsIDE2LCAyNDMsIDE5MiwgMjUxLCAxNDQsIDI3LCAxNiwgMjMyLCAxODMsIDIyNiwgNTUsIAotICAgIDIyMywgMjEzLCAyNywgMTYsIDIzMiwgMTgzLCAyMzYsIDAsIDIyMywgMjEzLCAyNywgMTYsIDI1MSwgNzIsIDIyMywgMjEzLCAKLSAgICAyNywgMTYsIDIyMSwgNzQsIDIyMywgMjEzLCAyNywgMTYsIDIzMCwgMjU0LCAyMjMsIDIxMywgMjcsIDE2LCAyMjEsIDY4LCAKLSAgICAyMjMsIDIxMywgMjcsIDE2LCAyMTcsIDIwMiwgMjI2LCA1MywgMjQ5LCA0OCwgMjI1LCA1OCwgMjI2LCA1NCwgMjcsIDE2LCAKLSAgICAyMTcsIDIwMiwgMjI2LCA1MywgMjQ5LCA0OCwgMjI1LCA1OCwgMjM1LCAyNTUsIDI3LCAxNiwgMjE3LCAyMDIsIDIyNiwgNTMsIAotICAgIDI0OSwgNDgsIDIyNSwgNTgsIDIyNiwgNTUsIDI0NywgMTYzLCAyNywgMTYsIDIxNywgMjAyLCAyMzUsIDI1NCwgMjQ5LCA0OCwgCi0gICAgMjI1LCA1OCwgMjI2LCA1NCwgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNSwgMjU1LCAKLSAgICAyNywgMTYsIDIxNywgMjAyLCAyMzUsIDI1NCwgMjQ5LCA0OCwgMjI1LCA1OCwgMjM2LCAwLCAyNDcsIDE2MywgMjcsIDE2LCAKLSAgICAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNiwgMCwgMjQ3LCAxNjIsIDI3LCAxNiwgMjE3LCAyMDIsIAotICAgIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzYsIDAsIDI0NywgMTYxLCAyNywgMTYsIDI0OSwgNzMsIDI3LCAxNiwgCi0gICAgMjQyLCAxMDMsIDI1MCwgMjUzLCAyNDksIDIwNywgMjcsIDE2LCAyNDIsIDEwMywgMjQ0LCAyMzEsIDI0OSwgMjA3LCAyNywgCi0gICAgMTYsIDQxLCAyNTMsIDc0LCAyNywgMTYsIDIxNCwgMTMyLCAyNywgMTYsIDIyNSwgMTQ4LCAyNywgMTYsIDI0OSwgMTk4LCAKLSAgICAyNywgMTYsIDIyMiwgMTIxLCAyNywgMTYsIDI0OSwgMjAyLCAyNywgMTYsIDIxNiwgMjIwLCAyNywgMTYsIDIyNSwgMTIyLCAKLSAgICAyNywgMTYsIDIyNSwgMTIzLCAyNDQsIDI5LCAyNywgMTYsIDIyMiwgMTIyLCAyNDQsIDI5LCAyNywgMTYsIDIxNiwgMjIxLCAKLSAgICAyMjMsIDIxMCwgMjcsIDE2LCAyMjYsIDM5LCAyMTksIDExLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzQsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE2MywgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTUzLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNDYsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzOCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTMyLCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxMzEsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzMCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTI5LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzMsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE3MiwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTcxLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzAsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDE2OSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTY4LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjcsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE2NiwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTY1LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNjQsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2MiwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTYxLCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjAsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE1OSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTU4LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzcsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzNiwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTM1LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzQsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDEzMywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTc0LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNjMsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE0NiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM4LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxMzEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzMCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTcyLCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNzEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3MCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTY5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNjYsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE2NSwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTY0LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTksIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE1OCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU3LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTYsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE1NSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU0LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNTIsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1MSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTUwLCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNDksIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0OCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTQ3LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDUsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0NCwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTQzLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDIsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE0MSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQwLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzksIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDEzNywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM2LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxMzUsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzNCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTMzLCAzNywgMjUsIAotICAgIDI3LCAyMTYsIDE2NiwgMzcsIDI1LCAyNywgMjE3LCAxNzYsIDM3LCAyNSwgMjcsIDIyNiwgNjMsIDI1LCAyNywgMjMzLCA1NSwgCi0gICAgMjMwLCAyMTIsIDMxLCAyNDUsIDE3OSwgMjQ3LCAxNzYsIDMxLCAyNDEsIDIwNiwgMjQ1LCAxNzksIDI0NywgMTc2LCAzMSwgCi0gICAgMjQwLCAyMDQsIDI0NSwgMTc5LCAyNDcsIDE3NiwgMzEsIDI0NSwgMTc4LCAyNDEsIDIwNywgMjQ3LCAxNzYsIDMxLCAyNDUsIAotICAgIDE3OCwgMjQwLCAyMDMsIDI0NywgMTc2LCAzMSwgMjQ1LCAxNzksIDE3MCwgMzEsIDI1MCwgMTA4LCAxNzAsIDMxLCAyNDMsIAotICAgIDIwMCwgMjQ5LCAyMjgsIDE3MCwgMzEsIDIzMCwgMjQ2LCAxNzAsIDMxLCAyNTIsIDUwLCAxNzAsIDMxLCAyMzQsIDE4NSwgCi0gICAgMjIwLCA3LCAxNzAsIDMxLCAyNDksIDExOCwgMTcwLCAzMSwgMjUzLCAxNDgsIDE3MCwgMzEsIDIyNywgMjksIDE3MCwgMzEsIAotICAgIDI1MSwgODAsIDIyNiwgMjU0LCAxNzAsIDMxLCAyNDgsIDI0LCAxNjcsIDI0NywgMTMxLCAxNzAsIDMxLCAyNDcsIDEyOCwgCi0gICAgMTcwLCAzMSwgMjEyLCAyMTMsIDE3MCwgMzEsIDIzNSwgMjQzLCAxNzAsIDMxLCAyMjYsIDcyLCAxNzAsIDMxLCAyMjQsIDIwLCAKLSAgICAxNzAsIDMxLCAyNDksIDEyOCwgMTcwLCAzMSwgMjQxLCA0NiwgMjUyLCAxMDEsIDE3MCwgMzEsIDIxNCwgNDMsIDE3MCwgMzEsIAotICAgIDI0NCwgOCwgMTcwLCAzMSwgMjU0LCAxNTEsIDE3MCwgMzEsIDIyMywgMjM5LCAxNzAsIDMxLCAyMjMsIDIxNywgMTcwLCAzMSwgCi0gICAgMjQ1LCAxNzcsIDE3MCwgMzEsIDIzNSwgNTYsIDE3MCwgMzEsIDI0OSwgMTIzLCAxNzAsIDMxLCAyNDUsIDEwMCwgMTcwLCAKLSAgICAzMSwgMjQ2LCA3LCAxNzAsIDMxLCAyNTAsIDgxLCAxNzAsIDMxLCAyNDgsIDMzLCAxNzAsIDMxLCAyMiwgMjIzLCAyMTYsIAotICAgIDE3MCwgMzEsIDIyNiwgMjA1LCAxNzAsIDMxLCAyMzMsIDU4LCAxNzAsIDMxLCAyNDksIDE5MSwgMTcwLCAzMSwgMjM0LCA4NiwgCi0gICAgMTcwLCAzMSwgMjQzLCA2MiwgMTcwLCAzMSwgMjE5LCA1MiwgMTcwLCAzMSwgMjI1LCAxNiwgMTcwLCAzMSwgMjQzLCAxOTksIAotICAgIDE3MCwgMzEsIDIyMywgMjE4LCAxNzAsIDMxLCAyMzMsIDk1LCAxNjcsIDIzMCwgMjI3LCAxNzAsIDMxLCAyMjMsIDIxNCwgCi0gICAgMTcwLCAzMSwgMjQyLCAxNDQsIDIxMSwgMjExLCAyMzEsIDE0MSwgMTcwLCAzMSwgMjQ1LCAxMDIsIDE3MCwgMzEsIDIxOSwgCi0gICAgNjQsIDE3MCwgMzEsIDI0MiwgMTA1LCAxNzAsIDMxLCAyNDUsIDk0LCAxNzAsIDMxLCAyMjYsIDEwOCwgMTcwLCAzMSwgMjIzLCAKLSAgICAxMjIsIDE3MCwgMzEsIDI0NCwgMjgsIDE3MCwgMzEsIDIxNCwgMjQwLCAxNjcsIDIxNCwgMjgsIDE3MCwgMzEsIDI0OSwgCi0gICAgMTMyLCAxNzAsIDMxLCAyMzEsIDE1NCwgMTcwLCAzMSwgMjQ1LCAyNywgMTcwLCAzMSwgMjE1LCAxNDMsIDE3MCwgMzEsIAotICAgIDI0NywgMTY0LCAxNzAsIDMxLCAyNDksIDE5MywgMjMwLCAxODAsIDE3MCwgMzEsIDI0MiwgODcsIDE3MCwgMzEsIDI0MywgCi0gICAgNjMsIDIzNSwgMjUxLCAxNzAsIDMxLCAyMzEsIDIwNCwgMTcwLCAzMSwgMjU0LCAxNzAsIDE3MCwgMzEsIDI0NSwgMTE1LCAKLSAgICAxNzAsIDMxLCAyNDYsIDYzLCAxNzAsIDMxLCAyMTQsIDI2LCAxNzAsIDMxLCAyMjAsIDc4LCAxNzAsIDMxLCAyMzUsIDIxOSwgCi0gICAgMTcwLCAzMSwgMjQ3LCAyNDksIDE3MCwgMzEsIDI0OCwgMTA1LCAxNzAsIDMxLCAyNDcsIDE2MCwgMTcwLCAzMSwgMjQ0LCAKLSAgICAyNTIsIDE3MCwgMzEsIDIyMSwgMzYsIDE3MCwgMzEsIDIxOSwgNjgsIDE3MCwgMzEsIDI0MSwgMjQxLCAxNzAsIDMxLCAyNDksIAotICAgIDE1MSwgMTcwLCAzMSwgMjQ5LCAxODgsIDE3MCwgMzEsIDI0NCwgMTQ1LCAxNzAsIDMxLCAyNTQsIDExNywgMTcwLCAzMSwgCi0gICAgMjQ5LCAxNTAsIDE3MCwgMzEsIDIyNywgNjMsIDIxNywgMTQ5LCAyMTQsIDIxOSwgMTcwLCAzMSwgMjQ3LCAxODQsIDE3MCwgCi0gICAgMzEsIDIzMywgMTQ3LCAxNzAsIDMxLCAyNDMsIDIzOSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTE2LCAKLSAgICAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxMDksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIAotICAgIDE2NiwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTYzLCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIAotICAgIDIxLCAxODAsIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDE4OSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgCi0gICAgMTQ1LCAyMSwgMTk4LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxOTUsIDI0OSwgODgsIDIyMywgMTAzLCAKLSAgICAyMTUsIDE0NSwgMjEsIDIwMCwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTE2LCAyNDksIDg4LCAyMjMsIAotICAgIDEwMywgMjE3LCAxOTYsIDIxLCAxMDksIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE2NiwgMjQ5LCA4OCwgCi0gICAgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTYzLCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxODAsIDI0OSwgCi0gICAgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE4OSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTk4LCAKLSAgICAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxOTUsIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIAotICAgIDIwMCwgMTQsIDIyLCA2LCA2MSwgMTQsIDIyLCA2LCAyNTMsIDc0LCAxNCwgMjIsIDYsIDI1MCwgMjUyLCAxNCwgMjIsIDYsIAotICAgIDI0OSwgMywgMTQsIDIyLCA2LCA3NCwgMTQsIDIyLCA2LCAyNDQsIDIzMCwgMTQsIDIyLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAKLSAgICA2LCAyNDIsIDQxLCAxNCwgMjIsIDYsIDcyLCAxNCwgMjIsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDYsIDIzNSwgMjcsIDE0LCAKLSAgICAyMiwgNiwgMTUwLCAxNCwgMjIsIDYsIDE4MywgMTQsIDIyLCA2LCAyMDQsIDE0LCAyMiwgNiwgNzUsIDE0LCAyMiwgNiwgCi0gICAgMjI2LCAyMjksIDE0LCAyMiwgNiwgMjI0LCAyNDAsIDE0LCAyMiwgNiwgMTQ5LCAxNCwgMjIsIDYsIDE5NywgMTQsIDIyLCA2LCAKLSAgICAyMTgsIDk5LCAxNCwgMjIsIDYsIDY5LCAxNCwgMjIsIDYsIDIxNSwgNzksIDE0LCAyMiwgNiwgMjE0LCA4MiwgMTQsIDIyLCAKLSAgICA2LCAyMTMsIDE2NiwgMTQsIDIyLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCA2LCAyMTIsIDE1MiwgMTQsIDIyLCAzLCA2MSwgMTQsIAotICAgIDIyLCAzLCAyNTMsIDc0LCAxNCwgMjIsIDMsIDI1MCwgMjUyLCAxNCwgMjIsIDMsIDI0OSwgMywgMTQsIDIyLCAzLCA3NCwgCi0gICAgMTQsIDIyLCAzLCAyNDQsIDIzMCwgMTQsIDIyLCAzLCAyNDMsIDE3NywgMTQsIDIyLCAzLCAyNDIsIDQxLCAxNCwgMjIsIDMsIAotICAgIDcyLCAxNCwgMjIsIDMsIDIzNSwgMTQyLCAxNCwgMjIsIDMsIDIzNSwgMjcsIDE0LCAyMiwgMywgMTUwLCAxNCwgMjIsIDMsIAotICAgIDE4MywgMTQsIDIyLCAzLCAyMDQsIDE0LCAyMiwgMywgNzUsIDE0LCAyMiwgMywgMjI2LCAyMjksIDE0LCAyMiwgMywgMjI0LCAKLSAgICAyNDAsIDE0LCAyMiwgMywgMTQ5LCAxNCwgMjIsIDMsIDE5NywgMTQsIDIyLCAzLCAyMTgsIDk5LCAxNCwgMjIsIDMsIDY5LCAKLSAgICAxNCwgMjIsIDMsIDIxNSwgNzksIDE0LCAyMiwgMywgMjE0LCA4MiwgMTQsIDIyLCAzLCAyMTMsIDE2NiwgMTQsIDIyLCAzLCAKLSAgICAyMTMsIDEwNSwgMTQsIDIyLCAzLCAyMTIsIDE1MiwgMTQsIDMyLCA2LCA2MSwgMTQsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzIsIAotICAgIDYsIDI1MCwgMjUyLCAxNCwgMzIsIDYsIDI0OSwgMywgMTQsIDMyLCA2LCA3NCwgMTQsIDMyLCA2LCAyNDQsIDIzMCwgMTQsIAotICAgIDMyLCA2LCAyNDMsIDE3NywgMTQsIDMyLCA2LCAyNDIsIDQxLCAxNCwgMzIsIDYsIDcyLCAxNCwgMzIsIDYsIDIzNSwgMTQyLCAKLSAgICAxNCwgMzIsIDYsIDIzNSwgMjcsIDE0LCAzMiwgNiwgMTUwLCAxNCwgMzIsIDYsIDE4MywgMTQsIDMyLCA2LCAyMDQsIDE0LCAKLSAgICAzMiwgNiwgNzUsIDE0LCAzMiwgNiwgMjI2LCAyMjksIDE0LCAzMiwgNiwgMjI0LCAyNDAsIDE0LCAzMiwgNiwgMTQ5LCAxNCwgCi0gICAgMzIsIDYsIDE5NywgMTQsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzIsIDYsIDY5LCAxNCwgMzIsIDYsIDIxNSwgNzksIDE0LCAKLSAgICAzMiwgNiwgMjE0LCA4MiwgMTQsIDMyLCA2LCAyMTMsIDE2NiwgMTQsIDMyLCA2LCAyMTMsIDEwNSwgMTQsIDMyLCA2LCAyMTIsIAotICAgIDE1MiwgMTQsIDMyLCAzLCA2MSwgMTQsIDMyLCAzLCAyNTMsIDc0LCAxNCwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzIsIDMsIAotICAgIDI0OSwgMywgMTQsIDMyLCAzLCA3NCwgMTQsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDMyLCAzLCAyNDMsIDE3NywgMTQsIDMyLCAKLSAgICAzLCA3MiwgMTQsIDMyLCAzLCAyMzUsIDE0MiwgMTQsIDMyLCAzLCAyMzUsIDI3LCAxNCwgMzIsIDMsIDE1MCwgMTQsIDMyLCAKLSAgICAzLCAxODMsIDE0LCAzMiwgMywgMjA0LCAxNCwgMzIsIDMsIDc1LCAxNCwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMzIsIDMsIAotICAgIDIyNCwgMjQwLCAxNCwgMzIsIDMsIDE0OSwgMTQsIDMyLCAzLCAxOTcsIDE0LCAzMiwgMywgMjE4LCA5OSwgMTQsIDMyLCAzLCAKLSAgICA2OSwgMTQsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMzIsIDMsIDIxNCwgODIsIDE0LCAzMiwgMywgMjEzLCAxNjYsIDE0LCAzMiwgCi0gICAgMywgMjEzLCAxMDUsIDE0LCAzMiwgMywgMjEyLCAxNTIsIDE0LCAyMiwgMzIsIDYsIDYxLCAxNCwgMjIsIDMyLCA2LCAyNTMsIAotICAgIDc0LCAxNCwgMjIsIDMyLCA2LCAyNTAsIDI1MiwgMTQsIDIyLCAzMiwgNiwgMjQ5LCAzLCAxNCwgMjIsIDMyLCA2LCA3NCwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAyMiwgMzIsIDYsIDI0MywgMTc3LCAxNCwgMjIsIDMyLCA2LCAyNDIsIDQxLCAKLSAgICAxNCwgMjIsIDMyLCA2LCA3MiwgMTQsIDIyLCAzMiwgNiwgMjM1LCAxNDIsIDE0LCAyMiwgMzIsIDYsIDIzNSwgMjcsIDE0LCAKLSAgICAyMiwgMzIsIDYsIDE1MCwgMTQsIDIyLCAzMiwgNiwgMTgzLCAxNCwgMjIsIDMyLCA2LCAyMDQsIDE0LCAyMiwgMzIsIDYsIAotICAgIDc1LCAxNCwgMjIsIDMyLCA2LCAyMjYsIDIyOSwgMTQsIDIyLCAzMiwgNiwgMjI0LCAyNDAsIDE0LCAyMiwgMzIsIDYsIDE0OSwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMTk3LCAxNCwgMjIsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMjIsIDMyLCA2LCA2OSwgMTQsIDIyLCAKLSAgICAzMiwgNiwgMjE1LCA3OSwgMTQsIDIyLCAzMiwgNiwgMjE0LCA4MiwgMTQsIDIyLCAzMiwgNiwgMjEzLCAxNjYsIDE0LCAyMiwgCi0gICAgMzIsIDYsIDIxMywgMTA1LCAxNCwgMjIsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDIyLCAzMiwgMywgNjEsIDE0LCAyMiwgMzIsIAotICAgIDMsIDI1MywgNzQsIDE0LCAyMiwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMjIsIDMyLCAzLCAyNDksIDMsIDE0LCAyMiwgMzIsIAotICAgIDMsIDc0LCAxNCwgMjIsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDIyLCAzMiwgMywgMjQzLCAxNzcsIDE0LCAyMiwgMzIsIDMsIAotICAgIDI0MiwgNDEsIDE0LCAyMiwgMzIsIDMsIDcyLCAxNCwgMjIsIDMyLCAzLCAyMzUsIDE0MiwgMTQsIDIyLCAzMiwgMywgMjM1LCAKLSAgICAyNywgMTQsIDIyLCAzMiwgMywgMTUwLCAxNCwgMjIsIDMyLCAzLCAxODMsIDE0LCAyMiwgMzIsIDMsIDIwNCwgMTQsIDIyLCAKLSAgICAzMiwgMywgNzUsIDE0LCAyMiwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIDMyLCAzLCAyMjQsIDI0MCwgMTQsIDIyLCAzMiwgCi0gICAgMywgMTQ5LCAxNCwgMjIsIDMyLCAzLCAxOTcsIDE0LCAyMiwgMzIsIDMsIDIxOCwgOTksIDE0LCAyMiwgMzIsIDMsIDY5LCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDMyLCAzLCAyMTQsIDgyLCAxNCwgMjIsIDMyLCAzLCAyMTMsIDE2NiwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjEzLCAxMDUsIDE0LCAyMiwgMzIsIDMsIDIxMiwgMTUyLCAxNCwgMTEzLCA2LCA2MSwgMTQsIAotICAgIDExMywgNiwgMjUwLCAyNTIsIDE0LCAxMTMsIDYsIDI0OSwgMywgMTQsIDExMywgNiwgMjQzLCAxNzcsIDE0LCAxMTMsIDYsIAotICAgIDIzNSwgMTQyLCAxNCwgMTEzLCA2LCAyMzUsIDI3LCAxNCwgMTEzLCA2LCAyMDQsIDE0LCAxMTMsIDYsIDc1LCAxNCwgMTEzLCAKLSAgICA2LCAyMjYsIDIyOSwgMTQsIDExMywgNiwgMjI0LCAyNDAsIDE0LCAxMTMsIDYsIDE5NywgMTQsIDExMywgNiwgMjE4LCA5OSwgCi0gICAgMTQsIDExMywgNiwgNjksIDE0LCAxMTMsIDYsIDIxNSwgNzksIDE0LCAxMTMsIDYsIDIxNCwgODIsIDE0LCAxMTMsIDYsIAotICAgIDIxMywgMTY2LCAxNCwgMTEzLCA2LCAyMTMsIDEwNSwgMTQsIDExMywgNiwgMjEyLCAxNTIsIDE0LCAxMTMsIDMsIDYxLCAxNCwgCi0gICAgMTEzLCAzLCAyNTMsIDc0LCAxNCwgMTEzLCAzLCAyNTAsIDI1MiwgMTQsIDExMywgMywgMjQ5LCAzLCAxNCwgMTEzLCAzLCAKLSAgICAyNDQsIDIzMCwgMTQsIDExMywgMywgMjQyLCA0MSwgMTQsIDExMywgMywgNzIsIDE0LCAxMTMsIDMsIDIzNSwgMTQyLCAxNCwgCi0gICAgMTEzLCAzLCAyMzUsIDI3LCAxNCwgMTEzLCAzLCAxNTAsIDE0LCAxMTMsIDMsIDE4MywgMTQsIDExMywgMywgMjA0LCAxNCwgCi0gICAgMTEzLCAzLCAyMjYsIDIyOSwgMTQsIDExMywgMywgMjI0LCAyNDAsIDE0LCAxMTMsIDMsIDE0OSwgMTQsIDExMywgMywgMTk3LCAKLSAgICAxNCwgMTEzLCAzLCAyMTgsIDk5LCAxNCwgMTEzLCAzLCA2OSwgMTQsIDExMywgMywgMjE1LCA3OSwgMTQsIDExMywgMywgCi0gICAgMjE0LCA4MiwgMTQsIDExMywgMywgMjEzLCAxNjYsIDE0LCAxMTMsIDMsIDIxMywgMTA1LCAxNCwgMTEzLCAzLCAyMTIsIAotICAgIDE1MiwgMTQsIDIyLCAxMTMsIDYsIDYxLCAxNCwgMjIsIDExMywgNiwgMjUzLCA3NCwgMTQsIDIyLCAxMTMsIDYsIDI1MCwgCi0gICAgMjUyLCAxNCwgMjIsIDExMywgNiwgMjQ5LCAzLCAxNCwgMjIsIDExMywgNiwgNzQsIDE0LCAyMiwgMTEzLCA2LCAyNDQsIAotICAgIDIzMCwgMTQsIDIyLCAxMTMsIDYsIDI0MywgMTc3LCAxNCwgMjIsIDExMywgNiwgMjQyLCA0MSwgMTQsIDIyLCAxMTMsIDYsIAotICAgIDcyLCAxNCwgMjIsIDExMywgNiwgMjM1LCAxNDIsIDE0LCAyMiwgMTEzLCA2LCAyMzUsIDI3LCAxNCwgMjIsIDExMywgNiwgCi0gICAgMTUwLCAxNCwgMjIsIDExMywgNiwgMTgzLCAxNCwgMjIsIDExMywgNiwgMjA0LCAxNCwgMjIsIDExMywgNiwgNzUsIDE0LCAKLSAgICAyMiwgMTEzLCA2LCAyMjYsIDIyOSwgMTQsIDIyLCAxMTMsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDExMywgNiwgMTQ5LCAxNCwgCi0gICAgMjIsIDExMywgNiwgMTk3LCAxNCwgMjIsIDExMywgNiwgMjE4LCA5OSwgMTQsIDIyLCAxMTMsIDYsIDY5LCAxNCwgMjIsIAotICAgIDExMywgNiwgMjE1LCA3OSwgMTQsIDIyLCAxMTMsIDYsIDIxNCwgODIsIDE0LCAyMiwgMTEzLCA2LCAyMTMsIDE2NiwgMTQsIAotICAgIDIyLCAxMTMsIDYsIDIxMywgMTA1LCAxNCwgMjIsIDExMywgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMTEzLCAzLCA2MSwgMTQsIAotICAgIDIyLCAxMTMsIDMsIDI1MywgNzQsIDE0LCAyMiwgMTEzLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAxMTMsIDMsIDI0OSwgMywgCi0gICAgMTQsIDIyLCAxMTMsIDMsIDc0LCAxNCwgMjIsIDExMywgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMTEzLCAzLCAyNDMsIDE3NywgCi0gICAgMTQsIDIyLCAxMTMsIDMsIDI0MiwgNDEsIDE0LCAyMiwgMTEzLCAzLCA3MiwgMTQsIDIyLCAxMTMsIDMsIDIzNSwgMTQyLCAKLSAgICAxNCwgMjIsIDExMywgMywgMjM1LCAyNywgMTQsIDIyLCAxMTMsIDMsIDE1MCwgMTQsIDIyLCAxMTMsIDMsIDE4MywgMTQsIAotICAgIDIyLCAxMTMsIDMsIDIwNCwgMTQsIDIyLCAxMTMsIDMsIDc1LCAxNCwgMjIsIDExMywgMywgMjI2LCAyMjksIDE0LCAyMiwgCi0gICAgMTEzLCAzLCAyMjQsIDI0MCwgMTQsIDIyLCAxMTMsIDMsIDE0OSwgMTQsIDIyLCAxMTMsIDMsIDE5NywgMTQsIDIyLCAxMTMsIAotICAgIDMsIDIxOCwgOTksIDE0LCAyMiwgMTEzLCAzLCA2OSwgMTQsIDIyLCAxMTMsIDMsIDIxNSwgNzksIDE0LCAyMiwgMTEzLCAzLCAKLSAgICAyMTQsIDgyLCAxNCwgMjIsIDExMywgMywgMjEzLCAxNjYsIDE0LCAyMiwgMTEzLCAzLCAyMTMsIDEwNSwgMTQsIDIyLCAxMTMsIAotICAgIDMsIDIxMiwgMTUyLCAxNCwgMTI5LCA2LCA2MSwgMTQsIDEyOSwgNiwgMjUzLCA3NCwgMTQsIDEyOSwgNiwgMjQ5LCAzLCAxNCwgCi0gICAgMTI5LCA2LCA3NCwgMTQsIDEyOSwgNiwgMjQ0LCAyMzAsIDE0LCAxMjksIDYsIDI0MywgMTc3LCAxNCwgMTI5LCA2LCAyMzUsIAotICAgIDE0MiwgMTQsIDEyOSwgNiwgMjM1LCAyNywgMTQsIDEyOSwgNiwgMTUwLCAxNCwgMTI5LCA2LCAxODMsIDE0LCAxMjksIDYsIAotICAgIDIwNCwgMTQsIDEyOSwgNiwgNzUsIDE0LCAxMjksIDYsIDIyNiwgMjI5LCAxNCwgMTI5LCA2LCAyMjQsIDI0MCwgMTQsIDEyOSwgCi0gICAgNiwgMTk3LCAxNCwgMTI5LCA2LCAyMTgsIDk5LCAxNCwgMTI5LCA2LCA2OSwgMTQsIDEyOSwgNiwgMjE1LCA3OSwgMTQsIAotICAgIDEyOSwgNiwgMjE0LCA4MiwgMTQsIDEyOSwgNiwgMjEzLCAxNjYsIDE0LCAxMjksIDYsIDIxMywgMTA1LCAxNCwgMTI5LCAzLCAKLSAgICA2MSwgMTQsIDEyOSwgMywgMjUzLCA3NCwgMTQsIDEyOSwgMywgMjUwLCAyNTIsIDE0LCAxMjksIDMsIDI0OSwgMywgMTQsIAotICAgIDEyOSwgMywgNzQsIDE0LCAxMjksIDMsIDI0NCwgMjMwLCAxNCwgMTI5LCAzLCAyNDMsIDE3NywgMTQsIDEyOSwgMywgMjQyLCAKLSAgICA0MSwgMTQsIDEyOSwgMywgNzIsIDE0LCAxMjksIDMsIDIzNSwgMTQyLCAxNCwgMTI5LCAzLCAyMzUsIDI3LCAxNCwgMTI5LCAKLSAgICAzLCAxNTAsIDE0LCAxMjksIDMsIDE4MywgMTQsIDEyOSwgMywgMjA0LCAxNCwgMTI5LCAzLCA3NSwgMTQsIDEyOSwgMywgCi0gICAgMjI2LCAyMjksIDE0LCAxMjksIDMsIDIyNCwgMjQwLCAxNCwgMTI5LCAzLCAxNDksIDE0LCAxMjksIDMsIDE5NywgMTQsIAotICAgIDEyOSwgMywgMjE4LCA5OSwgMTQsIDEyOSwgMywgNjksIDE0LCAxMjksIDMsIDIxNSwgNzksIDE0LCAxMjksIDMsIDIxNCwgCi0gICAgODIsIDE0LCAxMjksIDMsIDIxMywgMTY2LCAxNCwgMTI5LCAzLCAyMTMsIDEwNSwgMTQsIDEyOSwgMywgMjEyLCAxNTIsIDE0LCAKLSAgICAxODcsIDYsIDYxLCAxNCwgMTg3LCA2LCAyNTMsIDc0LCAxNCwgMTg3LCA2LCAyNDksIDMsIDE0LCAxODcsIDYsIDc0LCAxNCwgCi0gICAgMTg3LCA2LCAyNDQsIDIzMCwgMTQsIDE4NywgNiwgMjQzLCAxNzcsIDE0LCAxODcsIDYsIDcyLCAxNCwgMTg3LCA2LCAyMzUsIAotICAgIDE0MiwgMTQsIDE4NywgNiwgMjM1LCAyNywgMTQsIDE4NywgNiwgMTUwLCAxNCwgMTg3LCA2LCAxODMsIDE0LCAxODcsIDYsIAotICAgIDc1LCAxNCwgMTg3LCA2LCAxOTcsIDE0LCAxODcsIDYsIDIxOCwgOTksIDE0LCAxODcsIDYsIDY5LCAxNCwgMTg3LCA2LCAKLSAgICAyMTUsIDc5LCAxNCwgMTg3LCA2LCAyMTQsIDgyLCAxNCwgMTg3LCA2LCAyMTMsIDE2NiwgMTQsIDE4NywgNiwgMjEzLCAxMDUsIAotICAgIDE0LCAxODcsIDMsIDYxLCAxNCwgMTg3LCAzLCAyNTMsIDc0LCAxNCwgMTg3LCAzLCAyNTAsIDI1MiwgMTQsIDE4NywgMywgCi0gICAgMjQ5LCAzLCAxNCwgMTg3LCAzLCA3NCwgMTQsIDE4NywgMywgMjQ0LCAyMzAsIDE0LCAxODcsIDMsIDI0MywgMTc3LCAxNCwgCi0gICAgMTg3LCAzLCAyNDIsIDQxLCAxNCwgMTg3LCAzLCA3MiwgMTQsIDE4NywgMywgMjM1LCAxNDIsIDE0LCAxODcsIDMsIDIzNSwgCi0gICAgMjcsIDE0LCAxODcsIDMsIDE1MCwgMTQsIDE4NywgMywgMTgzLCAxNCwgMTg3LCAzLCAyMDQsIDE0LCAxODcsIDMsIDc1LCAKLSAgICAxNCwgMTg3LCAzLCAyMjYsIDIyOSwgMTQsIDE4NywgMywgMjI0LCAyNDAsIDE0LCAxODcsIDMsIDE0OSwgMTQsIDE4NywgMywgCi0gICAgMTk3LCAxNCwgMTg3LCAzLCAyMTgsIDk5LCAxNCwgMTg3LCAzLCA2OSwgMTQsIDE4NywgMywgMjE1LCA3OSwgMTQsIDE4NywgCi0gICAgMywgMjE0LCA4MiwgMTQsIDE4NywgMywgMjEzLCAxNjYsIDE0LCAxODcsIDMsIDIxMywgMTA1LCAxNCwgMTg3LCAzLCAyMTIsIAotICAgIDE1MiwgMTQsIDIyLCAxMjksIDYsIDYxLCAxNCwgMjIsIDEyOSwgNiwgMjUzLCA3NCwgMTQsIDIyLCAxMjksIDYsIDI1MCwgCi0gICAgMjUyLCAxNCwgMjIsIDEyOSwgNiwgMjQ5LCAzLCAxNCwgMjIsIDEyOSwgNiwgNzQsIDE0LCAyMiwgMTI5LCA2LCAyNDQsIAotICAgIDIzMCwgMTQsIDIyLCAxMjksIDYsIDI0MywgMTc3LCAxNCwgMjIsIDEyOSwgNiwgMjQyLCA0MSwgMTQsIDIyLCAxMjksIDYsIAotICAgIDcyLCAxNCwgMjIsIDEyOSwgNiwgMjM1LCAxNDIsIDE0LCAyMiwgMTI5LCA2LCAyMzUsIDI3LCAxNCwgMjIsIDEyOSwgNiwgCi0gICAgMTUwLCAxNCwgMjIsIDEyOSwgNiwgMTgzLCAxNCwgMjIsIDEyOSwgNiwgMjA0LCAxNCwgMjIsIDEyOSwgNiwgNzUsIDE0LCAKLSAgICAyMiwgMTI5LCA2LCAyMjYsIDIyOSwgMTQsIDIyLCAxMjksIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDEyOSwgNiwgMTQ5LCAxNCwgCi0gICAgMjIsIDEyOSwgNiwgMTk3LCAxNCwgMjIsIDEyOSwgNiwgMjE4LCA5OSwgMTQsIDIyLCAxMjksIDYsIDY5LCAxNCwgMjIsIAotICAgIDEyOSwgNiwgMjE1LCA3OSwgMTQsIDIyLCAxMjksIDYsIDIxNCwgODIsIDE0LCAyMiwgMTI5LCA2LCAyMTMsIDE2NiwgMTQsIAotICAgIDIyLCAxMjksIDYsIDIxMywgMTA1LCAxNCwgMjIsIDEyOSwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMTI5LCAzLCA2MSwgMTQsIAotICAgIDIyLCAxMjksIDMsIDI1MywgNzQsIDE0LCAyMiwgMTI5LCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAxMjksIDMsIDI0OSwgMywgCi0gICAgMTQsIDIyLCAxMjksIDMsIDc0LCAxNCwgMjIsIDEyOSwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMTI5LCAzLCAyNDMsIDE3NywgCi0gICAgMTQsIDIyLCAxMjksIDMsIDI0MiwgNDEsIDE0LCAyMiwgMTI5LCAzLCA3MiwgMTQsIDIyLCAxMjksIDMsIDIzNSwgMTQyLCAKLSAgICAxNCwgMjIsIDEyOSwgMywgMjM1LCAyNywgMTQsIDIyLCAxMjksIDMsIDE1MCwgMTQsIDIyLCAxMjksIDMsIDE4MywgMTQsIAotICAgIDIyLCAxMjksIDMsIDIwNCwgMTQsIDIyLCAxMjksIDMsIDc1LCAxNCwgMjIsIDEyOSwgMywgMjI2LCAyMjksIDE0LCAyMiwgCi0gICAgMTI5LCAzLCAyMjQsIDI0MCwgMTQsIDIyLCAxMjksIDMsIDE0OSwgMTQsIDIyLCAxMjksIDMsIDE5NywgMTQsIDIyLCAxMjksIAotICAgIDMsIDIxOCwgOTksIDE0LCAyMiwgMTI5LCAzLCA2OSwgMTQsIDIyLCAxMjksIDMsIDIxNSwgNzksIDE0LCAyMiwgMTI5LCAzLCAKLSAgICAyMTQsIDgyLCAxNCwgMjIsIDEyOSwgMywgMjEzLCAxNjYsIDE0LCAyMiwgMTI5LCAzLCAyMTMsIDEwNSwgMTQsIDIyLCAxMjksIAotICAgIDMsIDIxMiwgMTUyLCAxNCwgMzUsIDYsIDYxLCAxNCwgMzUsIDYsIDI1MywgNzQsIDE0LCAzNSwgNiwgMjUwLCAyNTIsIDE0LCAKLSAgICAzNSwgNiwgMjQ5LCAzLCAxNCwgMzUsIDYsIDc0LCAxNCwgMzUsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDYsIDI0MywgMTc3LCAKLSAgICAxNCwgMzUsIDYsIDI0MiwgNDEsIDE0LCAzNSwgNiwgNzIsIDE0LCAzNSwgNiwgMjM1LCAxNDIsIDE0LCAzNSwgNiwgMjM1LCAKLSAgICAyNywgMTQsIDM1LCA2LCAxNTAsIDE0LCAzNSwgNiwgMTgzLCAxNCwgMzUsIDYsIDIwNCwgMTQsIDM1LCA2LCA3NSwgMTQsIAotICAgIDM1LCA2LCAyMjYsIDIyOSwgMTQsIDM1LCA2LCAyMjQsIDI0MCwgMTQsIDM1LCA2LCAxNDksIDE0LCAzNSwgNiwgMTk3LCAxNCwgCi0gICAgMzUsIDYsIDIxOCwgOTksIDE0LCAzNSwgNiwgNjksIDE0LCAzNSwgNiwgMjE1LCA3OSwgMTQsIDM1LCA2LCAyMTQsIDgyLCAKLSAgICAxNCwgMzUsIDYsIDIxMywgMTY2LCAxNCwgMzUsIDYsIDIxMywgMTA1LCAxNCwgMzUsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDMsIAotICAgIDYxLCAxNCwgMzUsIDMsIDI1MywgNzQsIDE0LCAzNSwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMywgMjQ5LCAzLCAxNCwgMzUsIAotICAgIDMsIDc0LCAxNCwgMzUsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDMsIDI0MywgMTc3LCAxNCwgMzUsIDMsIDI0MiwgNDEsIDE0LCAKLSAgICAzNSwgMywgNzIsIDE0LCAzNSwgMywgMjM1LCAxNDIsIDE0LCAzNSwgMywgMjM1LCAyNywgMTQsIDM1LCAzLCAxNTAsIDE0LCAKLSAgICAzNSwgMywgMTgzLCAxNCwgMzUsIDMsIDIwNCwgMTQsIDM1LCAzLCA3NSwgMTQsIDM1LCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAKLSAgICAzLCAyMjQsIDI0MCwgMTQsIDM1LCAzLCAxNDksIDE0LCAzNSwgMywgMTk3LCAxNCwgMzUsIDMsIDIxOCwgOTksIDE0LCAzNSwgCi0gICAgMywgNjksIDE0LCAzNSwgMywgMjE1LCA3OSwgMTQsIDM1LCAzLCAyMTQsIDgyLCAxNCwgMzUsIDMsIDIxMywgMTY2LCAxNCwgCi0gICAgMzUsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDMsIDIxMiwgMTUyLCAxNCwgMzUsIDIyLCA2LCA2MSwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMjUzLCA3NCwgMTQsIDM1LCAyMiwgNiwgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDYsIDI0OSwgMywgMTQsIDM1LCAyMiwgNiwgCi0gICAgNzQsIDE0LCAzNSwgMjIsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCA2LCAyNDMsIDE3NywgMTQsIDM1LCAyMiwgNiwgMjQyLCAKLSAgICA0MSwgMTQsIDM1LCAyMiwgNiwgNzIsIDE0LCAzNSwgMjIsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCA2LCAyMzUsIDI3LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAxNTAsIDE0LCAzNSwgMjIsIDYsIDE4MywgMTQsIDM1LCAyMiwgNiwgMjA0LCAxNCwgMzUsIDIyLCAKLSAgICA2LCA3NSwgMTQsIDM1LCAyMiwgNiwgMjI2LCAyMjksIDE0LCAzNSwgMjIsIDYsIDIyNCwgMjQwLCAxNCwgMzUsIDIyLCA2LCAKLSAgICAxNDksIDE0LCAzNSwgMjIsIDYsIDE5NywgMTQsIDM1LCAyMiwgNiwgMjE4LCA5OSwgMTQsIDM1LCAyMiwgNiwgNjksIDE0LCAKLSAgICAzNSwgMjIsIDYsIDIxNSwgNzksIDE0LCAzNSwgMjIsIDYsIDIxNCwgODIsIDE0LCAzNSwgMjIsIDYsIDIxMywgMTY2LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgNiwgMjEyLCAxNTIsIDE0LCAzNSwgMjIsIDMsIDYxLCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNTMsIDc0LCAxNCwgMzUsIDIyLCAzLCAyNTAsIDI1MiwgMTQsIDM1LCAyMiwgMywgMjQ5LCAzLCAxNCwgMzUsIAotICAgIDIyLCAzLCA3NCwgMTQsIDM1LCAyMiwgMywgMjQ0LCAyMzAsIDE0LCAzNSwgMjIsIDMsIDI0MywgMTc3LCAxNCwgMzUsIDIyLCAKLSAgICAzLCAyNDIsIDQxLCAxNCwgMzUsIDIyLCAzLCA3MiwgMTQsIDM1LCAyMiwgMywgMjM1LCAxNDIsIDE0LCAzNSwgMjIsIDMsIAotICAgIDIzNSwgMjcsIDE0LCAzNSwgMjIsIDMsIDE1MCwgMTQsIDM1LCAyMiwgMywgMTgzLCAxNCwgMzUsIDIyLCAzLCAyMDQsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDc1LCAxNCwgMzUsIDIyLCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAyMiwgMywgMjI0LCAyNDAsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDE0OSwgMTQsIDM1LCAyMiwgMywgMTk3LCAxNCwgMzUsIDIyLCAzLCAyMTgsIDk5LCAxNCwgMzUsIDIyLCAzLCAKLSAgICA2OSwgMTQsIDM1LCAyMiwgMywgMjE1LCA3OSwgMTQsIDM1LCAyMiwgMywgMjE0LCA4MiwgMTQsIDM1LCAyMiwgMywgMjEzLCAKLSAgICAxNjYsIDE0LCAzNSwgMjIsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDIyLCAzLCAyMTIsIDE1MiwgMTQsIDM1LCAzMiwgNiwgNjEsIAotICAgIDE0LCAzNSwgMzIsIDYsIDI1MywgNzQsIDE0LCAzNSwgMzIsIDYsIDI1MCwgMjUyLCAxNCwgMzUsIDMyLCA2LCAyNDksIDMsIAotICAgIDE0LCAzNSwgMzIsIDYsIDc0LCAxNCwgMzUsIDMyLCA2LCAyNDQsIDIzMCwgMTQsIDM1LCAzMiwgNiwgMjQzLCAxNzcsIDE0LCAKLSAgICAzNSwgMzIsIDYsIDI0MiwgNDEsIDE0LCAzNSwgMzIsIDYsIDcyLCAxNCwgMzUsIDMyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAKLSAgICAzMiwgNiwgMjM1LCAyNywgMTQsIDM1LCAzMiwgNiwgMTUwLCAxNCwgMzUsIDMyLCA2LCAxODMsIDE0LCAzNSwgMzIsIDYsIAotICAgIDIwNCwgMTQsIDM1LCAzMiwgNiwgNzUsIDE0LCAzNSwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDMyLCA2LCAyMjQsIDI0MCwgCi0gICAgMTQsIDM1LCAzMiwgNiwgMTQ5LCAxNCwgMzUsIDMyLCA2LCAxOTcsIDE0LCAzNSwgMzIsIDYsIDIxOCwgOTksIDE0LCAzNSwgCi0gICAgMzIsIDYsIDY5LCAxNCwgMzUsIDMyLCA2LCAyMTUsIDc5LCAxNCwgMzUsIDMyLCA2LCAyMTQsIDgyLCAxNCwgMzUsIDMyLCA2LCAKLSAgICAyMTMsIDE2NiwgMTQsIDM1LCAzMiwgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMzIsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDMyLCAKLSAgICAzLCA2MSwgMTQsIDM1LCAzMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAzMiwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMzIsIDMsIAotICAgIDI0OSwgMywgMTQsIDM1LCAzMiwgMywgNzQsIDE0LCAzNSwgMzIsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDMyLCAzLCAyNDMsIAotICAgIDE3NywgMTQsIDM1LCAzMiwgMywgMjQyLCA0MSwgMTQsIDM1LCAzMiwgMywgNzIsIDE0LCAzNSwgMzIsIDMsIDIzNSwgMTQyLCAKLSAgICAxNCwgMzUsIDMyLCAzLCAyMzUsIDI3LCAxNCwgMzUsIDMyLCAzLCAxNTAsIDE0LCAzNSwgMzIsIDMsIDE4MywgMTQsIDM1LCAKLSAgICAzMiwgMywgMjA0LCAxNCwgMzUsIDMyLCAzLCA3NSwgMTQsIDM1LCAzMiwgMywgMjI2LCAyMjksIDE0LCAzNSwgMzIsIDMsIAotICAgIDIyNCwgMjQwLCAxNCwgMzUsIDMyLCAzLCAxNDksIDE0LCAzNSwgMzIsIDMsIDE5NywgMTQsIDM1LCAzMiwgMywgMjE4LCA5OSwgCi0gICAgMTQsIDM1LCAzMiwgMywgNjksIDE0LCAzNSwgMzIsIDMsIDIxNSwgNzksIDE0LCAzNSwgMzIsIDMsIDIxNCwgODIsIDE0LCAKLSAgICAzNSwgMzIsIDMsIDIxMywgMTY2LCAxNCwgMzUsIDMyLCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAzMiwgMywgMjEyLCAxNTIsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCA2MSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MywgNzQsIDE0LCAzNSwgMjIsIDMyLCA2LCAKLSAgICAyNTAsIDI1MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDI0OSwgMywgMTQsIDM1LCAyMiwgMzIsIDYsIDc0LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDMsIDE3NywgMTQsIDM1LCAyMiwgMzIsIDYsIDI0MiwgNDEsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCA3MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCAzMiwgNiwgCi0gICAgMjM1LCAyNywgMTQsIDM1LCAyMiwgMzIsIDYsIDE1MCwgMTQsIDM1LCAyMiwgMzIsIDYsIDE4MywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIwNCwgMTQsIDM1LCAyMiwgMzIsIDYsIDc1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI2LCAyMjksIDE0LCAzNSwgMjIsIAotICAgIDMyLCA2LCAyMjQsIDI0MCwgMTQsIDM1LCAyMiwgMzIsIDYsIDE0OSwgMTQsIDM1LCAyMiwgMzIsIDYsIDE5NywgMTQsIDM1LCAKLSAgICAyMiwgMzIsIDYsIDIxOCwgOTksIDE0LCAzNSwgMjIsIDMyLCA2LCA2OSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNSwgNzksIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTQsIDgyLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjEzLCAxNjYsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDIyLCAzMiwgMywgNjEsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyNTMsIDc0LCAxNCwgMzUsIDIyLCAzMiwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDksIAotICAgIDMsIDE0LCAzNSwgMjIsIDMyLCAzLCA3NCwgMTQsIDM1LCAyMiwgMzIsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzMiwgMywgCi0gICAgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDIsIDQxLCAxNCwgMzUsIDIyLCAzMiwgMywgNzIsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIzNSwgMjcsIDE0LCAzNSwgMjIsIDMyLCAzLCAxNTAsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAzLCAxODMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMDQsIDE0LCAzNSwgMjIsIDMyLCAzLCA3NSwgMTQsIAotICAgIDM1LCAyMiwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI0LCAyNDAsIDE0LCAzNSwgMjIsIDMyLCAzLCAKLSAgICAxNDksIDE0LCAzNSwgMjIsIDMyLCAzLCAxOTcsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTgsIDk5LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgMywgNjksIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE0LCA4MiwgMTQsIDM1LCAKLSAgICAyMiwgMzIsIDMsIDIxMywgMTY2LCAxNCwgMzUsIDIyLCAzMiwgMywgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTIsIAotICAgIDE1MiwgMTQsIDIzMCwgMjA4LCA2LCA2MSwgMTQsIDIzMCwgMjA4LCA2LCAyNTMsIDc0LCAxNCwgMjMwLCAyMDgsIDYsIDI1MCwgCi0gICAgMjUyLCAxNCwgMjMwLCAyMDgsIDYsIDI0OSwgMywgMTQsIDIzMCwgMjA4LCA2LCA3NCwgMTQsIDIzMCwgMjA4LCA2LCAyNDQsIAotICAgIDIzMCwgMTQsIDIzMCwgMjA4LCA2LCAyNDMsIDE3NywgMTQsIDIzMCwgMjA4LCA2LCAyNDIsIDQxLCAxNCwgMjMwLCAyMDgsIAotICAgIDYsIDcyLCAxNCwgMjMwLCAyMDgsIDYsIDIzNSwgMTQyLCAxNCwgMjMwLCAyMDgsIDYsIDIzNSwgMjcsIDE0LCAyMzAsIDIwOCwgCi0gICAgNiwgMTUwLCAxNCwgMjMwLCAyMDgsIDYsIDE4MywgMTQsIDIzMCwgMjA4LCA2LCAyMDQsIDE0LCAyMzAsIDIwOCwgNiwgNzUsIAotICAgIDE0LCAyMzAsIDIwOCwgNiwgMjI2LCAyMjksIDE0LCAyMzAsIDIwOCwgNiwgMjI0LCAyNDAsIDE0LCAyMzAsIDIwOCwgNiwgCi0gICAgMTQ5LCAxNCwgMjMwLCAyMDgsIDYsIDE5NywgMTQsIDIzMCwgMjA4LCA2LCAyMTgsIDk5LCAxNCwgMjMwLCAyMDgsIDYsIDY5LCAKLSAgICAxNCwgMjMwLCAyMDgsIDYsIDIxNSwgNzksIDE0LCAyMzAsIDIwOCwgNiwgMjE0LCA4MiwgMTQsIDIzMCwgMjA4LCA2LCAyMTMsIAotICAgIDE2NiwgMTQsIDIzMCwgMjA4LCA2LCAyMTMsIDEwNSwgMTQsIDIzMCwgMjA4LCA2LCAyMTIsIDE1MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCA2MSwgMTQsIDIzMCwgMjA4LCAzLCAyNTMsIDc0LCAxNCwgMjMwLCAyMDgsIDMsIDI1MCwgMjUyLCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDI0OSwgMywgMTQsIDIzMCwgMjA4LCAzLCA3NCwgMTQsIDIzMCwgMjA4LCAzLCAyNDQsIDIzMCwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyNDMsIDE3NywgMTQsIDIzMCwgMjA4LCAzLCAyNDIsIDQxLCAxNCwgMjMwLCAyMDgsIDMsIDcyLCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDIzNSwgMTQyLCAxNCwgMjMwLCAyMDgsIDMsIDIzNSwgMjcsIDE0LCAyMzAsIDIwOCwgMywgMTUwLCAxNCwgMjMwLCAKLSAgICAyMDgsIDMsIDE4MywgMTQsIDIzMCwgMjA4LCAzLCAyMDQsIDE0LCAyMzAsIDIwOCwgMywgNzUsIDE0LCAyMzAsIDIwOCwgMywgCi0gICAgMjI2LCAyMjksIDE0LCAyMzAsIDIwOCwgMywgMjI0LCAyNDAsIDE0LCAyMzAsIDIwOCwgMywgMTQ5LCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDE5NywgMTQsIDIzMCwgMjA4LCAzLCAyMTgsIDk5LCAxNCwgMjMwLCAyMDgsIDMsIDY5LCAxNCwgMjMwLCAyMDgsIDMsIAotICAgIDIxNSwgNzksIDE0LCAyMzAsIDIwOCwgMywgMjE0LCA4MiwgMTQsIDIzMCwgMjA4LCAzLCAyMTMsIDE2NiwgMTQsIDIzMCwgCi0gICAgMjA4LCAzLCAyMTMsIDEwNSwgMTQsIDIzMCwgMjA4LCAzLCAyMTIsIDE1MiwgMTQsIDMyLCAzLCAyNDcsIDczLCA3MiwgMTQsIAotICAgIDMyLCAzLCAyNDcsIDczLCAyMzUsIDE0MiwgMTQsIDIyLCA2LCAyNTQsIDUyLCAxNCwgMjIsIDYsIDI1MSwgMjAzLCAxNCwgCi0gICAgMjIsIDYsIDI0MywgODMsIDE0LCAyMiwgNiwgMjQ4LCA1LCAxNCwgMjIsIDYsIDI0NSwgNjMsIDE0LCAyMiwgNiwgMjEyLCAKLSAgICA3OCwgMTQsIDIyLCA2LCAyNDUsIDI4LCAxNCwgMjIsIDYsIDIxNywgMTMyLCAxNCwgMjIsIDYsIDIzNSwgMTgzLCAxNCwgMjIsIAotICAgIDYsIDIzNCwgMjI3LCAxNCwgMjIsIDYsIDIzMywgMTIyLCAxNCwgMjIsIDYsIDIzMCwgMTcyLCAxNCwgMjIsIDYsIDIyOCwgCi0gICAgOTIsIDE0LCAyMiwgNiwgMjEzLCAxNDUsIDE0LCAyMiwgNiwgMjI3LCA2NSwgMTQsIDIyLCA2LCAyMjUsIDI0MCwgMTQsIDIyLCAKLSAgICA2LCAyMjMsIDE5MCwgMTQsIDIyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAyMiwgNiwgMjIwLCAxMDMsIDE0LCAyMiwgNiwgCi0gICAgMjE3LCAyNDgsIDE0LCAyMiwgNiwgMjE1LCAxMjgsIDE0LCAyMiwgNiwgMjI2LCA5LCAxNCwgMjIsIDYsIDI1MCwgNDcsIDE0LCAKLSAgICAyMiwgNiwgMjI1LCA0NiwgMTQsIDIyLCA2LCAyMjcsIDY3LCAxNCwgMjIsIDIzMCwgMzksIDE0LCAyMiwgMywgMjU0LCA1MiwgCi0gICAgMTQsIDIyLCAzLCAyNTEsIDIwMywgMTQsIDIyLCAzLCAyNDMsIDgzLCAxNCwgMjIsIDMsIDI0OCwgNSwgMTQsIDIyLCAzLCAKLSAgICAyNDUsIDYzLCAxNCwgMjIsIDMsIDIxMiwgNzgsIDE0LCAyMiwgMywgMjQ1LCAyOCwgMTQsIDIyLCAzLCAyMTcsIDEzMiwgMTQsIAotICAgIDIyLCAzLCAyMzUsIDE4MywgMTQsIDIyLCAzLCAyMzQsIDIyNywgMTQsIDIyLCAzLCAyMzMsIDEyMiwgMTQsIDIyLCAzLCAKLSAgICAyMzAsIDE3MiwgMTQsIDIyLCAzLCAyMjgsIDkyLCAxNCwgMjIsIDMsIDIxMywgMTQ1LCAxNCwgMjIsIDMsIDIyNywgNjUsIAotICAgIDE0LCAyMiwgMywgMjI1LCAyNDAsIDE0LCAyMiwgMywgMjIzLCAxOTAsIDE0LCAyMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgCi0gICAgMjIsIDMsIDIyMCwgMTAzLCAxNCwgMjIsIDMsIDIxNywgMjQ4LCAxNCwgMjIsIDMsIDIxNSwgMTI4LCAxNCwgMjIsIDMsIAotICAgIDIyNiwgOSwgMTQsIDIyLCAzLCAyNTAsIDQ3LCAxNCwgMjIsIDMsIDIyNSwgNDYsIDE0LCAyMiwgMywgMjI3LCA2NywgMTQsIAotICAgIDIyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAyMiwgMjQ1LCA2NCwgODcsIDE0LCAyMiwgMjE3LCAxMzMsIDg3LCAxNCwgCi0gICAgMjIsIDIzNCwgMjI4LCA4NywgMTQsIDIyLCAyMjYsIDEwLCA4NywgMTQsIDIyLCAyMjMsIDE5MSwgODcsIDE0LCAyMiwgMjI1LCAKLSAgICAyNDEsIDg3LCAxNCwgMzIsIDYsIDI1NCwgNTIsIDE0LCAzMiwgNiwgMjUxLCAyMDMsIDE0LCAzMiwgNiwgMjQzLCA4MywgMTQsIAotICAgIDMyLCA2LCAyNDgsIDUsIDE0LCAzMiwgNiwgMjQ1LCA2MywgMTQsIDMyLCA2LCAyMTIsIDc4LCAxNCwgMzIsIDYsIDI0NSwgCi0gICAgMjgsIDE0LCAzMiwgNiwgMjE3LCAxMzIsIDE0LCAzMiwgNiwgMjM1LCAxODMsIDE0LCAzMiwgNiwgMjM0LCAyMjcsIDE0LCAKLSAgICAzMiwgNiwgMjMzLCAxMjIsIDE0LCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAzMiwgNiwgMjI4LCA5MiwgMTQsIDMyLCA2LCAyMTMsIAotICAgIDE0NSwgMTQsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMzIsIDYsIDIyNSwgMjQwLCAxNCwgMzIsIDYsIDIyMywgMTkwLCAxNCwgCi0gICAgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDMyLCA2LCAyMjAsIDEwMywgMTQsIDMyLCA2LCAyMTcsIDI0OCwgMTQsIDMyLCA2LCAKLSAgICAyMTUsIDEyOCwgMTQsIDMyLCA2LCAyMjYsIDksIDE0LCAzMiwgNiwgMjUwLCA0NywgMTQsIDMyLCA2LCAyMjUsIDQ2LCAxNCwgCi0gICAgMzIsIDYsIDIyNywgNjcsIDE0LCAzMiwgMjMwLCAzOSwgMTQsIDMyLCAzLCAyNTQsIDUyLCAxNCwgMzIsIDMsIDI1MSwgMjAzLCAKLSAgICAxNCwgMzIsIDMsIDI0MywgODMsIDE0LCAzMiwgMywgMjQ4LCA1LCAxNCwgMzIsIDMsIDI0NSwgNjMsIDE0LCAzMiwgMywgCi0gICAgMjEyLCA3OCwgMTQsIDMyLCAzLCAyNDUsIDI4LCAxNCwgMzIsIDMsIDIxNywgMTMyLCAxNCwgMzIsIDMsIDIzNSwgMTgzLCAKLSAgICAxNCwgMzIsIDMsIDIzNCwgMjI3LCAxNCwgMzIsIDMsIDIzMywgMTIyLCAxNCwgMzIsIDMsIDIzMCwgMTcyLCAxNCwgMzIsIDMsIAotICAgIDIyOCwgOTIsIDE0LCAzMiwgMywgMjEzLCAxNDUsIDE0LCAzMiwgMywgMjI3LCA2NSwgMTQsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDMyLCAzLCAyMjMsIDE5MCwgMTQsIDMyLCAzLCA0MCwgMjIwLCAxMDMsIDE0LCAzMiwgMywgMjIwLCAxMDMsIDE0LCAKLSAgICAzMiwgMywgMjE3LCAyNDgsIDE0LCAzMiwgMywgMjE1LCAxMjgsIDE0LCAzMiwgMywgMjI2LCA5LCAxNCwgMzIsIDMsIDI1MCwgCi0gICAgNDcsIDE0LCAzMiwgMywgMjI1LCA0NiwgMTQsIDMyLCAzLCAyMjcsIDY3LCAxNCwgMzIsIDIyNiwgMTI1LCAyNDcsIDE4NSwgCi0gICAgMTQsIDMyLCAyNDUsIDY0LCA4NywgMTQsIDMyLCAyMTcsIDEzMywgODcsIDE0LCAzMiwgMjM0LCAyMjgsIDg3LCAxNCwgMzIsIAotICAgIDIyNiwgMTAsIDg3LCAxNCwgMzIsIDIyMywgMTkxLCA4NywgMTQsIDMyLCAyMjUsIDI0MSwgODcsIDE0LCAyMiwgMzIsIDYsIAotICAgIDI1NCwgNTIsIDE0LCAyMiwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMjIsIDMyLCA2LCAyNDMsIDgzLCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNDgsIDUsIDE0LCAyMiwgMzIsIDYsIDI0NSwgNjMsIDE0LCAyMiwgMzIsIDYsIDIxMiwgNzgsIDE0LCAyMiwgMzIsIDYsIAotICAgIDI0NSwgMjgsIDE0LCAyMiwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMjIsIDMyLCA2LCAyMzUsIDE4MywgMTQsIDIyLCAzMiwgNiwgCi0gICAgMjM0LCAyMjcsIDE0LCAyMiwgMzIsIDYsIDIzMywgMTIyLCAxNCwgMjIsIDMyLCA2LCAyMzAsIDE3MiwgMTQsIDIyLCAzMiwgCi0gICAgNiwgMjI4LCA5MiwgMTQsIDIyLCAzMiwgNiwgMjEzLCAxNDUsIDE0LCAyMiwgMzIsIDYsIDIyNywgNjUsIDE0LCAyMiwgMzIsIAotICAgIDYsIDIyNSwgMjQwLCAxNCwgMjIsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIDIyLCAzMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgCi0gICAgMjIsIDMyLCA2LCAyMjAsIDEwMywgMTQsIDIyLCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAyMiwgMzIsIDYsIDIxNSwgMTI4LCAKLSAgICAxNCwgMjIsIDMyLCA2LCAyMjYsIDksIDE0LCAyMiwgMzIsIDYsIDI1MCwgNDcsIDE0LCAyMiwgMzIsIDYsIDIyNSwgNDYsIAotICAgIDE0LCAyMiwgMzIsIDYsIDIyNywgNjcsIDE0LCAyMiwgMzIsIDIzMCwgMzksIDE0LCAyMiwgMzIsIDMsIDI1NCwgNTIsIDE0LCAKLSAgICAyMiwgMzIsIDMsIDI1MSwgMjAzLCAxNCwgMjIsIDMyLCAzLCAyNDMsIDgzLCAxNCwgMjIsIDMyLCAzLCAyNDgsIDUsIDE0LCAKLSAgICAyMiwgMzIsIDMsIDI0NSwgNjMsIDE0LCAyMiwgMzIsIDMsIDIxMiwgNzgsIDE0LCAyMiwgMzIsIDMsIDI0NSwgMjgsIDE0LCAKLSAgICAyMiwgMzIsIDMsIDIxNywgMTMyLCAxNCwgMjIsIDMyLCAzLCAyMzUsIDE4MywgMTQsIDIyLCAzMiwgMywgMjM0LCAyMjcsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIzMywgMTIyLCAxNCwgMjIsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDIyLCAzMiwgMywgMjI4LCA5MiwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjEzLCAxNDUsIDE0LCAyMiwgMzIsIDMsIDIyNywgNjUsIDE0LCAyMiwgMzIsIDMsIDIyNSwgMjQwLCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMjMsIDE5MCwgMTQsIDIyLCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMjIsIDMyLCAzLCAyMjAsIAotICAgIDEwMywgMTQsIDIyLCAzMiwgMywgMjE3LCAyNDgsIDE0LCAyMiwgMzIsIDMsIDIxNSwgMTI4LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyMjYsIDksIDE0LCAyMiwgMzIsIDMsIDI1MCwgNDcsIDE0LCAyMiwgMzIsIDMsIDIyNSwgNDYsIDE0LCAyMiwgMzIsIDMsIAotICAgIDIyNywgNjcsIDE0LCAyMiwgMzIsIDIyNiwgMTI1LCAyNDcsIDE4NSwgMTQsIDIyLCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAyMiwgCi0gICAgMzIsIDIxNywgMTMzLCA4NywgMTQsIDIyLCAzMiwgMjM0LCAyMjgsIDg3LCAxNCwgMjIsIDMyLCAyMjYsIDEwLCA4NywgMTQsIAotICAgIDIyLCAzMiwgMjIzLCAxOTEsIDg3LCAxNCwgMjIsIDMyLCAyMjUsIDI0MSwgODcsIDE0LCAzNSwgMjIsIDYsIDI1NCwgNTIsIAotICAgIDE0LCAzNSwgMjIsIDYsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCA2LCAyNDMsIDgzLCAxNCwgMzUsIDIyLCA2LCAyNDgsIDUsIAotICAgIDE0LCAzNSwgMjIsIDYsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDYsIDIxMiwgNzgsIDE0LCAzNSwgMjIsIDYsIDI0NSwgMjgsIAotICAgIDE0LCAzNSwgMjIsIDYsIDIxNywgMTMyLCAxNCwgMzUsIDIyLCA2LCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgNiwgMjM0LCAKLSAgICAyMjcsIDE0LCAzNSwgMjIsIDYsIDIzMywgMTIyLCAxNCwgMzUsIDIyLCA2LCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMjI4LCA5MiwgMTQsIDM1LCAyMiwgNiwgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDYsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDYsIAotICAgIDIyNSwgMjQwLCAxNCwgMzUsIDIyLCA2LCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMzUsIAotICAgIDIyLCA2LCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgNiwgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDYsIDIxNSwgMTI4LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMjYsIDksIDE0LCAzNSwgMjIsIDYsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIDYsIDIyNSwgNDYsIDE0LCAKLSAgICAzNSwgMjIsIDYsIDIyNywgNjcsIDE0LCAzNSwgMjIsIDIzMCwgMzksIDE0LCAzNSwgMjIsIDMsIDI1NCwgNTIsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCAzLCAyNDMsIDgzLCAxNCwgMzUsIDIyLCAzLCAyNDgsIDUsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDMsIDIxMiwgNzgsIDE0LCAzNSwgMjIsIDMsIDI0NSwgMjgsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDIxNywgMTMyLCAxNCwgMzUsIDIyLCAzLCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgMywgMjM0LCAyMjcsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDIzMywgMTIyLCAxNCwgMzUsIDIyLCAzLCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgMywgMjI4LCA5MiwgMTQsIAotICAgIDM1LCAyMiwgMywgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDMsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDMsIDIyNSwgMjQwLCAxNCwgCi0gICAgMzUsIDIyLCAzLCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAzLCAyMjAsIAotICAgIDEwMywgMTQsIDM1LCAyMiwgMywgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDMsIDIxNSwgMTI4LCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMjYsIDksIDE0LCAzNSwgMjIsIDMsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIDMsIDIyNSwgNDYsIDE0LCAzNSwgMjIsIDMsIAotICAgIDIyNywgNjcsIDE0LCAzNSwgMjIsIDIyNiwgMTI1LCAyNDcsIDE4NSwgMTQsIDM1LCAyMiwgMjQ1LCA2NCwgODcsIDE0LCAzNSwgCi0gICAgMjIsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAyMiwgMjM0LCAyMjgsIDg3LCAxNCwgMzUsIDIyLCAyMjYsIDEwLCA4NywgMTQsIAotICAgIDM1LCAyMiwgMjIzLCAxOTEsIDg3LCAxNCwgMzUsIDIyLCAyMjUsIDI0MSwgODcsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNTQsIAotICAgIDUyLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjUxLCAyMDMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDMsIDgzLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgNiwgMjQ4LCA1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQ1LCA2MywgMTQsIDM1LCAyMiwgMzIsIDYsIDIxMiwgNzgsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDUsIDI4LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE3LCAxMzIsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgMzIsIDYsIDIzNCwgMjI3LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjMzLCAxMjIsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyOCwgOTIsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMTMsIDE0NSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjUsIDI0MCwgMTQsIAotICAgIDM1LCAyMiwgMzIsIDYsIDIyMywgMTkwLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTcsIDI0OCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNSwgMTI4LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjI2LCA5LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjUwLCA0NywgMTQsIDM1LCAyMiwgMzIsIDYsIAotICAgIDIyNSwgNDYsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAzMiwgMjMwLCAzOSwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDI1NCwgNTIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgMzIsIDMsIDI0MywgODMsIAotICAgIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDgsIDUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMzUsIDIyLCAzMiwgMywgCi0gICAgMjEyLCA3OCwgMTQsIDM1LCAyMiwgMzIsIDMsIDI0NSwgMjgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDM1LCAKLSAgICAyMiwgMzIsIDMsIDIzNSwgMTgzLCAxNCwgMzUsIDIyLCAzMiwgMywgMjM0LCAyMjcsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzMsIAotICAgIDEyMiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIzMCwgMTcyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjI4LCA5MiwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI3LCA2NSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNSwgMjQwLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgMywgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDMyLCAzLCA0MCwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE1LCAKLSAgICAxMjgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjYsIDksIDE0LCAzNSwgMjIsIDMyLCAzLCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjI1LCA0NiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNywgNjcsIDE0LCAzNSwgMjIsIDMyLCAyMjYsIDEyNSwgCi0gICAgMjQ3LCAxODUsIDE0LCAzNSwgMjIsIDMyLCAyNDUsIDY0LCA4NywgMTQsIDM1LCAyMiwgMzIsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDM1LCAyMiwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDM1LCAyMiwgMzIsIDIyNiwgMTAsIDg3LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgMjIzLCAxOTEsIDg3LCAxNCwgMzUsIDIyLCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMjIsIDYsIDI0NywgMTc5LCAxNCwgMjIsIAotICAgIDMsIDI0NywgMTc5LCAxNCwgMjIsIDIxLCAyMTIsIDc5LCAxNCwgMjIsIDIxLCAxMTYsIDE0LCAyMiwgMjEsIDEwOSwgMTQsIAotICAgIDIyLCAyMSwgMTY2LCAxNCwgMjIsIDIxLCAxNjMsIDE0LCAyMiwgMjEsIDE4MCwgMTQsIDIyLCAyMSwgMTg5LCAxNCwgMjIsIAotICAgIDIxLCAxOTgsIDE0LCAyMiwgMjEsIDE5NSwgMTQsIDIyLCAyMSwgMjAwLCAxNCwgMTg3LCAyMSwgMjEyLCA3OSwgMTQsIDE4NywgCi0gICAgMjEsIDExNiwgMTQsIDE4NywgMjEsIDEwOSwgMTQsIDE4NywgMjEsIDE2NiwgMTQsIDE4NywgMjEsIDE2MywgMTQsIDE4NywgCi0gICAgMjEsIDE4MCwgMTQsIDE4NywgMjEsIDE4OSwgMTQsIDE4NywgMjEsIDE5OCwgMTQsIDE4NywgMjEsIDE5NSwgMTQsIDE4NywgCi0gICAgMjEsIDIwMCwgMTQsIDM1LCAyMSwgMjEyLCA3OSwgMTQsIDM1LCAyMSwgMTE2LCAxNCwgMzUsIDIxLCAxMDksIDE0LCAzNSwgCi0gICAgMjEsIDE2NiwgMTQsIDM1LCAyMSwgMTYzLCAxNCwgMzUsIDIxLCAxODAsIDE0LCAzNSwgMjEsIDE4OSwgMTQsIDM1LCAyMSwgCi0gICAgMTk4LCAxNCwgMzUsIDIxLCAxOTUsIDE0LCAzNSwgMjEsIDIwMCwgMTQsIDM1LCAyMiwgMjEsIDIxMiwgNzksIDE0LCAzNSwgCi0gICAgMjIsIDIxLCAxMTYsIDE0LCAzNSwgMjIsIDIxLCAxMDksIDE0LCAzNSwgMjIsIDIxLCAxNjYsIDE0LCAzNSwgMjIsIDIxLCAKLSAgICAxNjMsIDE0LCAzNSwgMjIsIDIxLCAxODAsIDE0LCAzNSwgMjIsIDIxLCAxODksIDE0LCAzNSwgMjIsIDIxLCAxOTgsIDE0LCAKLSAgICAzNSwgMjIsIDIxLCAxOTUsIDE0LCAzNSwgMjIsIDIxLCAyMDAsIDE0LCAyMzAsIDIwOCwgMjEsIDIxMiwgNzksIDE0LCAyMzAsIAotICAgIDIwOCwgMjEsIDExNiwgMTQsIDIzMCwgMjA4LCAyMSwgMTA5LCAxNCwgMjMwLCAyMDgsIDIxLCAxNjYsIDE0LCAyMzAsIDIwOCwgCi0gICAgMjEsIDE2MywgMTQsIDIzMCwgMjA4LCAyMSwgMTgwLCAxNCwgMjMwLCAyMDgsIDIxLCAxODksIDE0LCAyMzAsIDIwOCwgMjEsIAotICAgIDE5OCwgMTQsIDIzMCwgMjA4LCAyMSwgMTk1LCAxNCwgMjMwLCAyMDgsIDIxLCAyMDAsIDIzMiwgMTAsIDg1LCAyNDUsIDE3NiwgCi0gICAgMjEzLCAyMjQsIDIzMiwgMTAsIDg1LCAyMTksIDIxNSwgMjEzLCAyMjQsIDIzMiwgMTAsIDg1LCAyMTMsIDI1MCwgMjEzLCAKLSAgICAyMjQsIDIzMiwgMTAsIDg1LCAyMjgsIDE2NywgMjEzLCAyMjQsIDIzMiwgMTAsIDg1LCAyMjQsIDQsIDI0NiwgNTAsIDIzMiwgCi0gICAgMTAsIDg1LCAyNDIsIDEwNCwgMjQ2LCA1MCwgMjMyLCAxMCwgODUsIDY3LCAyNDYsIDUwLCAyMzIsIDEwLCA4NSwgMTIyLCAKLSAgICA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDExNywgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAxMzMsIDY1LCAyNTAsIAotICAgIDc3LCAyMzIsIDEwLCA4NSwgMjQzLCAyMzcsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMjQ0LCA1MCwgNjUsIDI1MCwgCi0gICAgNzcsIDIzMiwgMTAsIDg1LCAyMjAsIDUzLCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDIyMSwgNDMsIDY1LCAyNTAsIDc3LCAKLSAgICAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMjI5LCAzMSwgNjUsIDI1MCwgNzcsIAotICAgIDIzMiwgMTAsIDg1LCAxMjIsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMTE3LCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgCi0gICAgODUsIDEzMywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAyNDMsIDIzNywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAKLSAgICAyNDQsIDUwLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDIyMCwgNTMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjIxLCA0MywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAyNDUsIDE1MCwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAKLSAgICAyMjksIDMxLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDEyMiwgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMTE3LCAKLSAgICA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAxMzMsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDI0MywgMjM3LCA2NSwgCi0gICAgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyNDQsIDUwLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyMjAsIDUzLCA2NSwgCi0gICAgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyMjEsIDQzLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyNDUsIDE1MCwgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjI5LCAzMSwgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjI1LCAxNTksIDIzMiwgCi0gICAgMTAsIDg1LCAyMjcsIDIyLCAyMzIsIDEwLCA4NSwgMjUyLCA3MywgMjMyLCAxMCwgODUsIDI1MCwgNywgMjMyLCAxMCwgODUsIAotICAgIDIxOSwgMTcxLCAyMzIsIDEwLCA4NSwgMjE4LCAyNDAsIDIzMiwgMTAsIDg1LCAyNTMsIDk1LCAyMzIsIDEwLCA4NSwgMjEzLCAKLSAgICAyMTcsIDIzMiwgMTAsIDg1LCAyMzUsIDY1LCAyMzIsIDEwLCA4NSwgMjUyLCAxMDEsIDEyNywgODUsIDE5OSwgMjUyLCAxMDEsIAotICAgIDEyNywgODUsIDI0MSwgMzAsIDEyNywgODUsIDI0MSwgMjksIDEyNywgODUsIDI0MSwgMjgsIDEyNywgODUsIDI0MSwgMjcsIAotICAgIDEyNywgODUsIDI0MSwgMjYsIDEyNywgODUsIDI0MSwgMjUsIDEyNywgODUsIDI0MSwgMjQsIDEyNywgODUsIDI0MSwgMjMsIAotICAgIDEyNywgODUsIDI0MSwgMjIsIDEyNywgODUsIDI0MSwgMjEsIDEyNywgODUsIDI0MSwgMjAsIDEyNywgODUsIDI0MSwgMTksIAotICAgIDEyNywgODUsIDI0MSwgMTgsIDEyNywgODUsIDI0MSwgMTcsIDEyNywgODUsIDI0MSwgMTYsIDEyNywgODUsIDI0MSwgMTUsIAotICAgIDEyNywgODUsIDI0MSwgMTQsIDEyNywgODUsIDI0MSwgMTMsIDEyNywgODUsIDI0MSwgMTIsIDEyNywgODUsIDI0MSwgMTEsIAotICAgIDEyNywgODUsIDI0MSwgMTAsIDEyNywgODUsIDI0MSwgOSwgMTI3LCA4NSwgMjQxLCA4LCAxMjcsIDg1LCAyNDEsIDcsIDEyNywgCi0gICAgODUsIDI0MSwgNiwgMTI3LCA4NSwgMjQxLCA1LCAxMjcsIDg1LCAyNDEsIDQsIDEyNywgODUsIDI0MSwgMywgMTI3LCA4NSwgCi0gICAgMjQxLCAyLCAxMjcsIDg1LCAyNDEsIDEsIDEyNywgODUsIDI0MSwgMCwgMTI3LCA4NSwgMjQwLCAyNTUsIDEyNywgODUsIAotICAgIDI0MCwgMjU0LCAxMjcsIDg1LCAyNDAsIDI1MywgMTI3LCA4NSwgMjQwLCAyNTIsIDEyNywgODUsIDI0MCwgMjUxLCAxMjcsIAotICAgIDg1LCAyNDAsIDI1MCwgMTI3LCA4NSwgMjQwLCAyNDksIDEyNywgODUsIDI0MCwgMjQ4LCAxMjcsIDg1LCAyNDAsIDI0NywgCi0gICAgMTI3LCA4NSwgMjQwLCAyNDYsIDEyNywgODUsIDI0MCwgMjQ1LCAxMjcsIDg1LCAyNDAsIDI0NCwgMTI3LCA4NSwgMjQwLCAKLSAgICAyNDMsIDEyNywgODUsIDI0MCwgMjQyLCAxMjcsIDg1LCAyNDAsIDI0MSwgMTI3LCA4NSwgMjQwLCAyNDAsIDEyNywgODUsIAotICAgIDI0MCwgMjM5LCAxMjcsIDg1LCAyNDAsIDIzOCwgMTI3LCA4NSwgNzEsIDI1MiwgMTAxLCAxMjcsIDg1LCAyMTQsIDIxNSwgCi0gICAgMTI3LCA4NSwgMjE0LCAyMTQsIDEyNywgODUsIDIxNCwgMjEzLCAxMjcsIDg1LCAyMTQsIDIxMiwgMTI3LCA4NSwgMjE0LCAKLSAgICAyMTEsIDEyNywgODUsIDIxNCwgMjEwLCAxMjcsIDg1LCAyMTQsIDIwOSwgMTI3LCA4NSwgMjE0LCAyMDgsIDEyNywgODUsIAotICAgIDIxNCwgMjA3LCAxMjcsIDg1LCAyMTQsIDIwNiwgMTI3LCA4NSwgMjE0LCAyMDUsIDEyNywgODUsIDIxNCwgMjA0LCAxMjcsIAotICAgIDg1LCAyMTQsIDIwMywgMTI3LCA4NSwgMjE0LCAyMDIsIDEyNywgODUsIDIxNCwgMjAxLCAxMjcsIDg1LCAyMTQsIDIwMCwgCi0gICAgMTI3LCA4NSwgMjE0LCAxOTksIDEyNywgODUsIDIxNCwgMTk4LCAxMjcsIDg1LCAyMTQsIDE5NywgMTI3LCA4NSwgMjE0LCAKLSAgICAxOTYsIDEyNywgODUsIDIxNCwgMTk1LCAxMjcsIDg1LCAyMTQsIDE5NCwgMTI3LCA4NSwgMjE0LCAxOTMsIDEyNywgODUsIAotICAgIDIxNCwgMTkyLCAxMjcsIDg1LCAyMTQsIDE5MSwgMTI3LCA4NSwgMjE0LCAxOTAsIDEyNywgODUsIDIxNCwgMTg5LCAxMjcsIAotICAgIDg1LCAyMTQsIDE4OCwgMTI3LCA4NSwgMjE0LCAxODcsIDEyNywgODUsIDIxNCwgMTg2LCAxMjcsIDg1LCAyMTQsIDE4NSwgCi0gICAgMTI3LCA4NSwgMjE0LCAxODQsIDEyNywgODUsIDIxNCwgMTgzLCAxMjcsIDg1LCAyMTQsIDE4MiwgMTI3LCA4NSwgMjE0LCAKLSAgICAxODEsIDEyNywgODUsIDIxNCwgMTgwLCAxMjcsIDg1LCAyMTQsIDE3OSwgMTI3LCA4NSwgMjE0LCAxNzgsIDEyNywgODUsIAotICAgIDIxNCwgMTc3LCAxMjcsIDg1LCAyMTQsIDE3NiwgMTI3LCA4NSwgMjE0LCAxNzUsIDEyNywgODUsIDIxNCwgMTc0LCAxMjcsIAotICAgIDg1LCAyMTQsIDE3MywgMTI3LCA4NSwgMjE0LCAxNzIsIDEyNywgODUsIDIxNCwgMTcxLCAxMjcsIDg1LCAyMTQsIDE3MCwgCi0gICAgMTI3LCA4NSwgMjE0LCAxNjksIDEyNywgODUsIDIxNCwgMTY4LCAxMjcsIDg1LCAyMTQsIDE2NywgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAyNTIsIDEwMSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNTQsIDE2OSwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAKLSAgICAxNzUsIDExNywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDEzMywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgCi0gICAgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ0LCA1MCwgNjUsIDIxOSwgCi0gICAgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjEsIAotICAgIDQzLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ1LCAxNTAsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjE3LCAyMDEsIDY1LCAyMTksIAotICAgIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgCi0gICAgNDAsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjQsIDE2MCwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgCi0gICAgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNTQsIDE2OSwgNjUsIDI0MSwgCi0gICAgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDExNywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDEzMywgNjUsIAotICAgIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjQ0LCA1MCwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIDY1LCAyNDEsIDIwOSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMjEsIDQzLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ1LCAxNTAsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjE3LCAyMDEsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgNjUsIDI0MSwgMjA5LCAyMjUsIAotICAgIDE2NSwgMjUwLCAxNzUsIDIzNCwgNDAsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjQsIDE2MCwgNjUsIAotICAgIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICAyNTQsIDE2OSwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDExNywgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgCi0gICAgMjUwLCAxNzUsIDEzMywgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjQ3LCAxOTksIAotICAgIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ0LCA1MCwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIAotICAgIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjEsIDQzLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjQ1LCAxNTAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjQ3LCAxOTksIAotICAgIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjE3LCAyMDEsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgCi0gICAgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgNDAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAyMjQsIDE2MCwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyNDcsIDE5OSwgCi0gICAgMjI1LCAxNjUsIDI1MCwgMTc1LCA4MywgMjM1LCA2NSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNTQsIDE2OSwgNjUsIDI0OSwgCi0gICAgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDExNywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDEzMywgNjUsIAotICAgIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjQ0LCA1MCwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIDY1LCAyNDksIDE3OSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMjEsIDQzLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ1LCAxNTAsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjE3LCAyMDEsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgNjUsIDI0OSwgMTc5LCAyMjUsIAotICAgIDE2NSwgMjUwLCAxNzUsIDIzNCwgNDAsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjQsIDE2MCwgNjUsIAotICAgIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICA2NywgMjM1LCA2NSwgMjEsIDIxMiwgODAsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjEyLCA4MCwgMjQ5LCAxNTcsIDIxLCAKLSAgICAxMjIsIDI0OSwgMTU3LCAyMSwgMTE3LCAyNDksIDE1NywgMjEsIDEzMywgMjQ5LCAxNTcsIDIxLCAyNDMsIDIzNywgMjQ5LCAKLSAgICAxNTcsIDIxLCAyNDQsIDUwLCAyNDksIDE1NywgMjEsIDIyMCwgNTMsIDI0OSwgMTU3LCAyMSwgMjIxLCA0MywgMjQ5LCAxNTcsIAotICAgIDIxLCAyNDUsIDE1MCwgMjQ5LCAxNTcsIDIxLCAyMjksIDMxLCAyNDksIDE1NywgODYsIDcsIDYsIDEsIDYxLCA4NiwgNywgNiwgCi0gICAgMSwgMjUzLCA3NCwgODYsIDcsIDYsIDEsIDI1MCwgMjUyLCA4NiwgNywgNiwgMSwgMjQ5LCAzLCA4NiwgNywgNiwgMSwgNzQsIAotICAgIDg2LCA3LCA2LCAxLCAyNDQsIDIzMCwgODYsIDcsIDYsIDEsIDI0MywgMTc3LCA4NiwgNywgNiwgMSwgMjQyLCA0MSwgODYsIAotICAgIDcsIDYsIDEsIDcyLCA4NiwgNywgNiwgMSwgMjM1LCAxNDIsIDg2LCA3LCA2LCAxLCAyMzUsIDI3LCA4NiwgNywgNiwgMSwgCi0gICAgMTUwLCA4NiwgNywgNiwgMSwgMTgzLCA4NiwgNywgNiwgMSwgMjA0LCA4NiwgNywgNiwgMSwgNzUsIDg2LCA3LCA2LCAxLCAKLSAgICAyMjYsIDIyOSwgODYsIDcsIDYsIDEsIDIyNCwgMjQwLCA4NiwgNywgNiwgMSwgMTQ5LCA4NiwgNywgNiwgMSwgMTk3LCA4NiwgCi0gICAgNywgNiwgMSwgMjE4LCA5OSwgODYsIDcsIDYsIDEsIDY5LCA4NiwgNywgNiwgMSwgMjE1LCA3OSwgODYsIDcsIDYsIDEsIAotICAgIDIxNCwgODIsIDg2LCA3LCA2LCAxLCAyMTMsIDE2NiwgODYsIDcsIDYsIDEsIDIxMywgMTA1LCA4NiwgNywgNiwgMSwgMjEyLCAKLSAgICAxNTIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgNywgNiwgMSwgMTk3LCAzNiwgMzIsIDcsIDYsIDEsIDI1MCwgCi0gICAgMjUyLCAzNiwgMzIsIDcsIDYsIDEsIDE0OSwgMzYsIDI1MCwgMTI1LCAzNiwgMjEzLCAxNjgsIDkxLCA3LCA2LCAxLCA2MSwgCi0gICAgOTEsIDcsIDYsIDEsIDI1MywgNzQsIDkxLCA3LCA2LCAxLCAyNTAsIDI1MiwgOTEsIDcsIDYsIDEsIDI0OSwgMywgOTEsIDcsIAotICAgIDYsIDEsIDc0LCA5MSwgNywgNiwgMSwgMjQ0LCAyMzAsIDkxLCA3LCA2LCAxLCAyNDMsIDE3NywgOTEsIDcsIDYsIDEsIDI0MiwgCi0gICAgNDEsIDkxLCA3LCA2LCAxLCA3MiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQyLCA5MSwgNywgNiwgMSwgMjM1LCAyNywgOTEsIDcsIAotICAgIDYsIDEsIDE1MCwgOTEsIDcsIDYsIDEsIDE4MywgOTEsIDcsIDYsIDEsIDIwNCwgOTEsIDcsIDYsIDEsIDc1LCA5MSwgNywgNiwgCi0gICAgMSwgMjI2LCAyMjksIDkxLCA3LCA2LCAxLCAyMjQsIDI0MCwgOTEsIDcsIDYsIDEsIDE0OSwgOTEsIDcsIDYsIDEsIDE5NywgCi0gICAgOTEsIDcsIDYsIDEsIDIxOCwgOTksIDkxLCA3LCA2LCAxLCA2OSwgOTEsIDcsIDYsIDEsIDIxNSwgNzksIDkxLCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCA5MSwgNywgNiwgMSwgMjEzLCAxNjYsIDkxLCA3LCA2LCAxLCAyMTMsIDEwNSwgOTEsIDcsIDYsIDEsIDIxMiwgCi0gICAgMTUyLCA5MSwgMjQwLCAxOTMsIDkxLCAyMzAsIDEyMCwgOTEsIDIyMiwgMTAyLCA5MSwgMjE5LCAxNTgsIDkxLCAyMjUsIDk4LCAKLSAgICA5MSwgMjE0LCA3LCAxNDYsIDM2LCA3LCA2LCAxLCA2MSwgMTQ2LCAzNiwgNywgNiwgMSwgMjUzLCA3NCwgMTQ2LCAzNiwgNywgCi0gICAgNiwgMSwgMjUwLCAyNTIsIDE0NiwgMzYsIDcsIDYsIDEsIDI0OSwgMywgMTQ2LCAzNiwgNywgNiwgMSwgNzQsIDE0NiwgMzYsIAotICAgIDcsIDYsIDEsIDI0NCwgMjMwLCAxNDYsIDM2LCA3LCA2LCAxLCAyNDMsIDE3NywgMTQ2LCAzNiwgNywgNiwgMSwgMjQyLCA0MSwgCi0gICAgMTQ2LCAzNiwgNywgNiwgMSwgNzIsIDE0NiwgMzYsIDcsIDYsIDEsIDIzNSwgMTQyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMzUsIAotICAgIDI3LCAxNDYsIDM2LCA3LCA2LCAxLCAxNTAsIDE0NiwgMzYsIDcsIDYsIDEsIDE4MywgMTQ2LCAzNiwgNywgNiwgMSwgMjA0LCAKLSAgICAxNDYsIDM2LCA3LCA2LCAxLCA3NSwgMTQ2LCAzNiwgNywgNiwgMSwgMjI2LCAyMjksIDE0NiwgMzYsIDcsIDYsIDEsIDIyNCwgCi0gICAgMjQwLCAxNDYsIDM2LCA3LCA2LCAxLCAxNDksIDE0NiwgMzYsIDcsIDYsIDEsIDE5NywgMTQ2LCAzNiwgNywgNiwgMSwgMjE4LCAKLSAgICA5OSwgMTQ2LCAzNiwgNywgNiwgMSwgNjksIDE0NiwgMzYsIDcsIDYsIDEsIDIxNSwgNzksIDE0NiwgMzYsIDcsIDYsIDEsIAotICAgIDIxNCwgODIsIDE0NiwgMzYsIDcsIDYsIDEsIDIxMywgMTY2LCAxNDYsIDM2LCA3LCA2LCAxLCAyMTMsIDEwNSwgMTQ2LCAzNiwgCi0gICAgNywgNiwgMSwgMjEyLCAxNTIsIDE0NiwgOTEsIDcsIDYsIDEsIDYxLCAxNDYsIDkxLCA3LCA2LCAxLCAyNTMsIDc0LCAxNDYsIAotICAgIDkxLCA3LCA2LCAxLCAyNTAsIDI1MiwgMTQ2LCA5MSwgNywgNiwgMSwgMjQ5LCAzLCAxNDYsIDkxLCA3LCA2LCAxLCA3NCwgCi0gICAgMTQ2LCA5MSwgNywgNiwgMSwgMjQ0LCAyMzAsIDE0NiwgOTEsIDcsIDYsIDEsIDI0MywgMTc3LCAxNDYsIDkxLCA3LCA2LCAxLCAKLSAgICAyNDIsIDQxLCAxNDYsIDkxLCA3LCA2LCAxLCA3MiwgMTQ2LCA5MSwgNywgNiwgMSwgMjM1LCAxNDIsIDE0NiwgOTEsIDcsIDYsIAotICAgIDEsIDIzNSwgMjcsIDE0NiwgOTEsIDcsIDYsIDEsIDE1MCwgMTQ2LCA5MSwgNywgNiwgMSwgMTgzLCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMDQsIDE0NiwgOTEsIDcsIDYsIDEsIDc1LCAxNDYsIDkxLCA3LCA2LCAxLCAyMjYsIDIyOSwgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjI0LCAyNDAsIDE0NiwgOTEsIDcsIDYsIDEsIDE0OSwgMTQ2LCA5MSwgNywgNiwgMSwgMTk3LCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMTgsIDk5LCAxNDYsIDkxLCA3LCA2LCAxLCA2OSwgMTQ2LCA5MSwgNywgNiwgMSwgMjE1LCA3OSwgMTQ2LCA5MSwgNywgCi0gICAgNiwgMSwgMjE0LCA4MiwgMTQ2LCA5MSwgNywgNiwgMSwgMjEzLCAxNjYsIDE0NiwgOTEsIDcsIDYsIDEsIDIxMywgMTA1LCAKLSAgICAxNDYsIDkxLCA3LCA2LCAxLCAyMTIsIDE1MiwgMjQ5LCA2OCwgMTQ2LCA5MSwgNywgNiwgMSwgMjI2LCAyMjksIDE0NiwgOTEsIAotICAgIDI0MCwgMTA2LCAxNDYsIDkxLCAxOTMsIDE0NiwgOTEsIDIyMiwgMjAyLCAxNDYsIDkxLCAyNTQsIDE4NSwgMTQ2LCA5MSwgCi0gICAgMjE0LCA3LCA0MSwgMjQ3LCAxMTYsIDkxLCAyNDksIDIxNiwgOTEsIDI0OSwgMTA5LCA5MSwgMjQzLCAyMjIsIDkxLCAyNDAsIAotICAgIDk4LCA5MSwgMjI5LCAxNjgsIDkxLCAyMjksIDE2MSwgOTEsIDIyNywgODAsIDkxLCAyMTksIDIyMiwgOTEsIDExNCwgMiwgCi0gICAgMjQ0LCAyNTQsIDc3LCA5MSwgMjE0LCAxMDAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDYxLCAyMjMsIDI1MywgMjM1LCAKLSAgICAyMzYsIDE2LCAxLCAyNTMsIDc0LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyNTAsIDI1MiwgMjIzLCAyNTMsIDIzNSwgCi0gICAgMjM2LCAxNiwgMSwgMjQ5LCAzLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA3NCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgMjQ0LCAyMzAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDI0MywgMTc3LCAyMjMsIDI1MywgMjM1LCAyMzYsIAotICAgIDE2LCAxLCAyNDIsIDQxLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA3MiwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgCi0gICAgMjM1LCAxNDIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIzNSwgMjcsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDE1MCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMTgzLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMDQsIDIyMywgCi0gICAgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDc1LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMjYsIDIyOSwgMjIzLCAyNTMsIAotICAgIDIzNSwgMjM2LCAxNiwgMSwgMjI0LCAyNDAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDE0OSwgMjIzLCAyNTMsIDIzNSwgCi0gICAgMjM2LCAxNiwgMSwgMTk3LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMTgsIDk5LCAyMjMsIDI1MywgMjM1LCAyMzYsIAotICAgIDE2LCAxLCA2OSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjE1LCA3OSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgCi0gICAgMjE0LCA4MiwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjEzLCAxNjYsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIxMywgMTA1LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMTIsIDE1MiwgNDEsIDE0MiwgMjQxLCA0OSwgOTEsIDU2LCAKLSAgICAyMzQsIDI3LCA5MSwgNTYsIDIyMiwgMjAyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDMsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCA0NywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU1LCA5MSwgNTYsIDI0OCwgNDEsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAKLSAgICA2MiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQ5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjEsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCA0OCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDYxLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzUsIDkxLCA5LCAyMTUsIAotICAgIDE0OCwgMjM4LCAyOCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTgsIDkxLCA5LCAKLSAgICAyMTUsIDE0OCwgMjM4LCA0NCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDYwLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzYsIAotICAgIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1OSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDIyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgCi0gICAgMjcsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyMCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUwLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNTIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzMCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQxLCA5MSwgOSwgMjE1LCAKLSAgICAxNDgsIDIzOCwgMzksIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2NSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDY0LCA5MSwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgMTgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0NSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDYzLCAKLSAgICA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTQsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0MCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIAotICAgIDE5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyNCwgOTEsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDIzLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTMsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzMSwgOTEsIDksIDIxNSwgCi0gICAgMTQ4LCAyMzgsIDMzLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzQsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyNiwgOTEsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDU3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTEsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgCi0gICAgOSwgMjE1LCAxNDgsIDIzOCwgMzIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNjQsIAotICAgIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNjIsIDIxNiwgMjE5LCAyMjAsIDIzMywgCi0gICAgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgMjksIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNDIsIDIxNiwgMjE5LCAKLSAgICAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgMjUsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgNTYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgMzgsIDM2LCAKLSAgICAxNDMsIDI1NCwgMTUwLCAzNiwgMTQzLCAyNTQsIDE3MiwgMjQ5LCAxNCwgMjQ0LCAxMSwgMjQ5LCAxOTMsIDIxNSwgMTY0LCAKLSAgICAyMjksIDQ0LCAyLCAyMTksIDkyLCAyMTgsIDIzMywgMTEwLCAyMzAsIDE4NCwgMjE4LCAyMzIsIDI0OSwgMjE5LCAyNTMsIAotICAgIDEyMywgMjQ2LCA5LCAyMTgsIDIzMSwgMTEwLCAyNTEsIDQ3LCAyMjQsIDQ5LCAyNTEsIDY4LCAyNTMsIDEyMywgMjI5LCA0MywgCi0gICAgMjE0LCAyNSwgMjE0LCAxOSwgMjE0LCAxMTIsIDIzMSwgOCwgMjE0LCA5LCAyNDUsIDE4MCwgMjQyLCAxNTcsIDI0NSwgMTIsIAotICAgIDI0NSwgMTgwLCAyNDIsIDE1NywgMjU0LCAzNywgMjQ1LCAxODAsIDI0MiwgMTU3LCAyNTMsIDE0MCwgMjQyLCAxNTcsIDIsIAotICAgIDIzMSwgMTE1LCAxNTYsIDIzMCwgMTk5LCA4NywgMjE0LCAxMSwgMjQ5LCA3NywgMjMwLCAxOTksIDg3LCAyNDQsIDYxLCAKLSAgICAyMjQsIDE2NywgMjMwLCAxOTksIDg3LCAyMTQsIDExLCAyNDIsIDE4NiwgMjMwLCAxOTksIDg3LCAyNDMsIDIwMCwgMjMwLCAKLSAgICAxOTksIDg3LCAyMTQsIDM2LCAyNDIsIDE4NiwgMjMwLCAxOTksIDg3LCAyMzMsIDEwMywgMjI0LCAxNjcsIDIzMCwgMTk5LCAKLSAgICA4NywgMjE0LCAzNiwgMjQ5LCA3NywgMjMwLCAxOTksIDg3LCAyNDksIDc3LCAyMzAsIDE5OCwgMTU2LCAyMzAsIDE5OSwgMiwgCi0gICAgMjQ0LCAxNTgsIDI0NCwgNjEsIDIyNCwgMTY3LCAyMzAsIDE5OSwgMiwgMjQ0LCAxNTgsIDIzMywgMTAzLCAyMjQsIDE2NywgCi0gICAgMjMwLCAxOTksIDIsIDI0NCwgMTU4LCAyNDMsIDIwMCwgMjMwLCAxOTksIDIsIDI0NCwgMTU4LCAyMTgsIDIzOSwgMiwgMjQ0LCAKLSAgICAxNTgsIDI0MiwgMTU1LCAyMTksIDk1LCAyMjAsIDE3OSwgMjE5LCA5NSwgMjUwLCA1MywgMjIyLCA4NywgMjQ1LCA2LCAyMTYsIAotICAgIDE5MywgMjQ4LCAzNSwgMjE2LCAxOTMsIDIyNiwgMTg2LCAyMTYsIDE5MywgMjUwLCAyMTMsIDIxNiwgNzMsIDI1MCwgNTUsIAotICAgIDI1MSwgMTMzLCAyMjMsIDkzLCAyNDEsIDE2NCwgMjE4LCAyMzYsIDI1MSwgMTMzLCAyNDUsIDE4NCwgNjUsIDIzMiwgMCwgCi0gICAgMjQ1LCAxODQsIDY1LCAyMjMsIDE4NCwgMjQxLCAxODgsIDI0MywgMjM3LCAyMzMsIDc4LCAyNDksIDE4MywgMjMxLCAyMzMsIAotICAgIDIzMywgNzcsIDI0NCwgMTQ0LCAyMzMsIDc3LCAyMzMsIDc4LCAyNDQsIDE2LCAyMzUsIDI1MiwgMjEzLCAyMjQsIDIzMCwgCi0gICAgMTI4LCAyMTYsIDI0NSwgMjUzLCAxMDcsIDI0MiwgMTE5LCAyMzEsIDEzMSwgMjE0LCAyMywgMjE4LCA4LCAyMzMsIDUwLCAKLSAgICAyNTIsIDY4LCAyMjUsIDE5NCwgMjI0LCA0LCAyNTMsIDIyMywgMjQyLCAxMDQsIDI1MywgMjIzLCAyMjYsIDkyLCAyMjYsIAotICAgIDkzLCAyNTAsIDU2LCAyMTksIDU0LCAyNDIsIDYsIDIyMCwgMTgsIDY1LCAyMjUsIDE3NiwgMjMxLCAxNTIsIDIyNywgNjMsIAotICAgIDI1MSwgMTE5LCAyMjUsIDEwOSwgMjMzLCA2MCwgMjIzLCAxODUsIDI0OSwgODIsIDIyMywgMTg1LCAyNTIsIDc4LCAyNDksIAotICAgIDExMiwgMjIzLCAxODQsIDI0OSwgMzYsIDI0LCAyMjMsIDE4NCwgMjE5LCA4MSwgMjUxLCA5MywgMjE5LCAyMDIsIDI1MSwgCi0gICAgNzgsIDI0MywgMjIxLCAyNDMsIDIxNywgMjIzLCAxMDgsIDIxOCwgMTkxLCAyMjUsIDExMSwgMjQ4LCAxMjAsIDIyNywgMTAxLCAKLSAgICAyMTgsIDIwOCwgMjQzLCAyMTgsIDIyMCwgMTU1LCAyNDQsIDYwLCAyNTAsIDIwOSwgMiwgMjE4LCAxODQsIDI0NywgMjQyLCAKLSAgICAyMTksIDIzNiwgMjQwLCAxMDUsIDI0OSwgODEsIDIyMCwgMjUwLCAyNDAsIDEwNCwgMjQwLCAxMDUsIDI0OSwgODEsIDI0NiwgCi0gICAgNjIsIDI0OSwgMTExLCAyNTAsIDIxLCAxMzQsIDI1MCwgMTg2LCAyMzIsIDE5NCwgMjQ5LCAzMCwgMjQxLCA0MSwgMjI1LCAKLSAgICAxMTMsIDIyMCwgMTY0LCAyNTEsIDIxMywgMjUxLCA4OSwgMjI1LCAxMTQsIDY1LCAyNDQsIDIsIDI0OSwgMTEwLCAyNDMsIAotICAgIDI0OSwgMjQsIDIzNCwgNDEsIDIxNywgMjI3LCAyMTMsIDIxNiwgMjQxLCAyNTIsIDIyMiwgMTgzLCAyNTEsIDEwMywgMjQsIAotICAgIDI0OSwgNDMsIDIxMywgMjIyLCAyNDIsIDE2MCwgMjQ5LCAxNzIsIDI0MiwgMTYwLCAyMTYsIDE1MSwgMjQ2LCA0NSwgMjUxLCAKLSAgICAyMzgsIDIzMCwgMTYzLCAyNDksIDIwMCwgMjUxLCAyMzgsIDIzMCwgMTYyLCAyNTIsIDEwNCwgMjUxLCAxMDIsIDIyMywgCi0gICAgMTg2LCAyMTMsIDE4OSwgMjI1LCA3NSwgMjUxLCAxNTgsIDI1MCwgMjA4LCAyMzUsIDEzNiwgMjUwLCAxNCwgMjE2LCAxOTMsIAotICAgIDI0NCwgMTMwLCAyNTAsIDEzLCAyNDQsIDYzLCAyNDQsIDY0LCAyMTksIDIwMCwgMjUyLCA3NywgMjI2LCAxMjIsIDIyNSwgCi0gICAgMTI0LCAyNDksIDE0MywgMjUyLCA3OCwgMjE4LCAxMCwgMjE2LCAxOTMsIDI0OSwgNjgsIDI0NCwgMzYsIDIyNSwgMTk1LCAKLSAgICAyNDgsIDMyLCAyMzUsIDEzMSwgMjQ3LCA4NSwgMjUwLCAxNjQsIDIxOSwgNTMsIDIxMywgMjI1LCAyNTAsIDM1LCAyMzAsIAotICAgIDE5OSwgMjE0LCAxNDQsIDI1MCwgOTYsIDIyMiwgMTE3LCAyMjIsIDE0MSwgMjQyLCAxMjQsIDI1MCwgMTgzLCAyNTAsIDE2NSwgCi0gICAgMjQwLCAyMzIsIDI0NCwgOTksIDIxMywgMjQxLCAyMjMsIDEwMiwgMjQ5LCAxNzMsIDI0NCwgNTUsIDIyNSwgMTM2LCAyNCwgCi0gICAgMjQ0LCA1OSwgMjMxLCA0MCwgMjMwLCAxNzgsIDI1MCwgMTk4LCAyNDksIDIzMiwgMjQxLCAyMTYsIDI1MywgMTU2LCAyMjYsIAotICAgIDE4OSwgMjE2LCAyMjcsIDI0MSwgMjM0LCAyNDksIDIyMiwgMjE3LCAxOTUsIDIxNywgNjcsIDI0OSwgMjEzLCAyNTEsIDEyNSwgCi0gICAgMjI2LCA1MiwgMjUzLCAxNTUsIDIxNCwgMTUwLCAyNDMsIDg2LCAyNDcsIDE0OSwgMjQxLCAxNDIsIDIyMCwgMTIsIDIzMiwgCi0gICAgMzksIDI1MSwgMTY4LCAyNDMsIDg3LCAyNDcsIDE5MiwgMjUxLCA5MiwgMjQ0LCAyMSwgMjI1LCAxNjUsIDI1MCwgMTczLCAKLSAgICAyNywgMjI4LCAxNTgsIDIzMCwgMTU1LCAyNywgMjI4LCAxNTMsIDIyMiwgMTMwLCAyNDIsIDgwLCAyNywgMjM0LCAxNDMsIAotICAgIDIxNiwgMTQ4LCAyMTQsIDEzNSwgMjcsIDIyMiwgMTExLCAyMjMsIDM1LCAyMjAsIDE5MSwgMiwgMjIyLCAxNDMsIDIxNywgCi0gICAgMTk3LCAyMjQsIDY4LCAyNCwgMjUyLCA3OCwgMjIwLCAzMywgMjQsIDIyMCwgMzMsIDI1MSwgMTEyLCAyNTIsIDQzLCAyNCwgCi0gICAgMjQxLCAzNiwgMjUwLCA1NywgMjQ0LCA0MiwgMjE5LCAyNDcsIDIyMywgMzYsIDIxOCwgMjEyLCAyMTYsIDE1MiwgMjQwLCAKLSAgICAyMzMsIDIyNCwgNjksIDI1NCwgMzgsIDI0NCwgMCwgMjIzLCA0NywgMjQ0LCAwLCAyMTgsIDE4NiwgMjQwLCAyMjIsIDI1MSwgCi0gICAgNDgsIDI0MCwgMjIyLCAyLCAyNDMsIDcwLCAyMjcsIDk1LCAyNTEsIDQ4LCAyMzUsIDEzMSwgMjI1LCAxMTksIDIyNywgOTQsIAotICAgIDI0NSwgMTEsIDIyNSwgMTE5LCAyMjcsIDk0LCAyNDAsIDIzMSwgMjUyLCA2NCwgMjUzLCA5NywgMjE3LCAyMDUsIDIzMiwgCi0gICAgMzksIDI0MCwgMjI3LCAyMzIsIDE2NiwgMjQwLCAyMjcsIDI0OSwgMTE1LCAyMTksIDY1LCAyMjIsIDExNiwgMjQ3LCAyNTAsIAotICAgIDIxOSwgNjUsIDI0NCwgMTQ4LCAyMzUsIDE0NywgMjMzLCAxMTMsIDIzNSwgMTMxLCAyNTAsIDE1OCwgMjQ1LCAxMSwgMjUwLCAKLSAgICAxNTgsIDIyNCwgMzMsIDIzMCwgMTgyLCAyMjYsIDIzOCwgMjE0LCAyNSwgMjUxLCA1MiwgMjQ5LCA4NCwgMjE3LCA2MCwgCi0gICAgMjMzLCA0MiwgMjI0LCA3MCwgMjUwLCAxNTYsIDI0NiwgNTAsIDI0OSwgNzUsIDIxMywgMjQ0LCAyMTksIDI1NCwgMjE5LCAKLSAgICAyNTIsIDI0MCwgMjMyLCAyMjQsIDQ1LCAyNDIsIDE0NiwgMjIwLCAyMzcsIDIzMCwgMjE1LCAyMjMsIDk2LCAyNTAsIDQ1LCAKLSAgICAyNDcsIDkwLCAyMjUsIDIwNSwgMjUxLCAxMjYsIDI0NSwgMTI2LCAyMjcsIDEwMywgMjE5LCAxODQsIDIyMCwgMjMyLCAyNTEsIAotICAgIDUxLCAyNTQsIDMsIDI0MSwgNDAsIDIzMywgMTQ0LCAyNTEsIDIzNiwgMjQ0LCA1OSwgMjE2LCAxNTEsIDI0NCwgNTksIDI1MSwgCi0gICAgMTMyLCAyMTYsIDU1LCAyNDEsIDIzMiwgMjUwLCA0NiwgMjUyLCAxMDQsIDI1MCwgNDYsIDI0MywgMjEyLCAyNTIsIDEwNCwgCi0gICAgMjUwLCA0NiwgMjUxLCAxNjAsIDIyNiwgNzAsIDIzNCwgMzUsIDIyNSwgMTI4LCAyNDYsIDQyLCAyNTAsIDE5OSwgMjUyLCAKLSAgICA5NSwgMjUwLCAxOTksIDI0NywgODQsIDIzMCwgMTgzLCAyNDQsIDE1OCwgMjQ5LCA4NSwgMjQ0LCAxNTgsIDIxNywgNjEsIAotICAgIDI0NCwgMTU4LCAyMjQsIDcxLCAyNDQsIDE1OCwgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDYsIDUxLCAyNDQsIDE1OCwgMjE5LCAKLSAgICAxNzMsIDIxMywgMjQ0LCAyNDAsIDIzMywgMjQ0LCAxNTgsIDIzMCwgMjE2LCAyNDQsIDE1OCwgMjQ3LCA5MSwgMjQ0LCAxNTgsIAotICAgIDIyNSwgMjA2LCAyNDQsIDE1OCwgMjQzLCAyMTUsIDI0NCwgMTU4LCAyNDIsIDMsIDI0NCwgMTU4LCAyMTMsIDIxMSwgMjQ0LCAKLSAgICAxNTgsIDI1MSwgMjQ3LCAyNDQsIDE1OCwgMjI2LCAxNzIsIDI0NCwgMTU4LCAyMjUsIDIwNiwgMjI4LCAxNjQsIDIyNiwgCi0gICAgMTA2LCAyMjUsIDY3LCAyNDQsIDIzNywgMjQ1LCAxODMsIDIyOCwgMTY0LCAyMzAsIDE4MCwgMjE2LCAyMzIsIDY3LCAxMTQsIAotICAgIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgNjcsIDExOSwgMjI1LCAxNDEsIDI1MiwgOTksIDIzNSwgMjM5LCA2NywgCi0gICAgNDIsIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgNjcsIDQ2LCAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIAotICAgIDI0NCwgNTMsIDI0MSwgMjU1LCA1MiwgMjE0LCAxNywgMjQxLCAyNTUsIDUyLCAyMjcsIDgxLCAyNDEsIDI1NSwgNTIsIDIxNywgCi0gICAgODksIDExNCwgNTIsIDIxNywgODksIDExOSwgNTIsIDI0OSwgMjEyLCAyNDEsIDI1MCwgNTIsIDIyNywgNDAsIDI0MSwgMjUwLCAKLSAgICA1MiwgMjQ5LCA2MywgMjEzLCAyMDcsIDI0MSwgMjM0LCAyNDQsIDIzOCwgMjI5LCAxODUsIDIxOCwgOTgsIDIzNSwgMTI2LCAKLSAgICAyNDYsIDQ3LCAyMzQsIDkxLCAyNTEsIDE3MCwgMjEzLCAyMDcsIDI0OSwgMTg2LCAyMjUsIDE0LCAyNDEsIDI1MywgMjI1LCAKLSAgICAxMTAsIDIzMSwgMjQwLCAyMjAsIDE4NCwgMjUzLCAxMTksIDIyMCwgMTg0LCAyNDEsIDE1MCwgMjIwLCAxODQsIDIxMywgCi0gICAgMjA3LCAyMjIsIDE1NiwgMjEzLCAyMDcsIDI1MSwgMTExLCAyNDMsIDI1NCwgMjUxLCAxOSwgMjM1LCAyNTIsIDIyMCwgOTUsIAotICAgIDI1MSwgMTgsIDIzNSwgMjUyLCAyMjAsIDk1LCAyNTEsIDg4LCAyNDIsIDE3MCwgMjMxLCAyNDgsIDIxMywgMjA4LCAyNDQsIAotICAgIDE0MiwgMjMxLCAyNDksIDI0LCAyMTMsIDIwOSwgMjQxLCA0NiwgMjQxLCAyNDksIDExNywgMjMxLCAxMjMsIDI0MSwgNDYsIAotICAgIDI0MSwgMjQ5LCAxMTcsIDIxMywgMjA2LCAyNDEsIDQ2LCAyNDEsIDI0OSwgMjI1LCAxMzMsIDIyNywgOTMsIDIxMywgMjA5LCAKLSAgICAyLCAyNTEsIDM1LCAyNDUsIDE4MSwgMjUxLCA2OSwgMiwgMjE0LCAyMjMsIDIyNiwgNDQsIDIsIDI1MSwgMTM1LCAyNDIsIAotICAgIDE2LCAyMzEsIDI0OSwgMiwgMjQyLCA4OSwgMjI1LCAyNDEsIDIzMSwgMjM3LCAyMzEsIDI0OSwgMiwgMjE2LCA2MSwgMjI3LCAKLSAgICA3NCwgMjMxLCAyNDgsIDIyNywgNzQsIDIxMywgMjA4LCAyNTIsIDEwMywgMjQ5LCAxMjksIDIxMywgMTkyLCAyMjUsIDcwLCAKLSAgICAyMzUsIDEzMSwgMjI3LCA4OSwgMjM1LCAxMzEsIDI0MiwgMTQ1LCAyNDIsIDE5OCwgMjUyLCAxMDQsIDI1NCwgMjIsIDI0NCwgCi0gICAgMjQyLCAyNTQsIDY5LCAyNTQsIDcwLCAyMzAsIDIwNiwgMjM2LCAxLCAyMjAsIDI4LCAyMzUsIDIyOSwgMjQ3LCAyNDEsIAotICAgIDIyNiwgNDMsIDI0MiwgODYsIDI0OCwgMTI0LCAyMzIsIDIzMCwgMjMwLCAzMCwgMjI1LCAxMzIsIDI0NCwgMTU5LCAyMzEsIAotICAgIDIwNSwgMjQyLCAxNSwgMjUyLCA1OCwgMjI1LCAxMzUsIDIxOCwgMTE3LCAyMjUsIDE5OCwgMjM0LCA3MywgNzcsIDIzMiwgCi0gICAgMTY2LCAyMzMsIDM0LCAyMjMsIDEzMCwgMjQzLCAzMCwgMjE5LCA3MSwgMjM0LCA3MiwgMjUxLCA5NywgMjQ5LCA4NywgMiwgCi0gICAgMjQxLCAyMTEsIDIxNCwgMywgMjUxLCAyNDUsIDI0MSwgMjExLCAyNTEsIDYzLCAyNDEsIDIxMSwgMTE3LCAyNDEsIDIwOSwgCi0gICAgMjE5LCAxOTgsIDI0MSwgMjExLCAyNDIsIDk4LCAyNDEsIDIxMSwgMjQxLCAyMTIsIDIsIDY4LCAyNTEsIDEzMSwgMjQxLCAKLSAgICAyMTEsIDI0MiwgMTA0LCAyNDEsIDIxMSwgMjEzLCAzMywgMjQxLCAyMTEsIDIyNSwgMTUsIDI0MSwgMjExLCAyNDEsIDIxMiwgCi0gICAgMiwgMjIzLCAxODYsIDIyMywgMTk3LCAyNDEsIDIwOSwgMjQxLCAyMTIsIDI0OCwgMzIsIDI0NywgMjAxLCAyMjEsIDUsIDIsIAotICAgIDExOCwgNjIsIDIzNSwgMjEyLCAyNDUsIDEyOSwgMTc3LCAyNTEsIDQ1LCAyNTQsIDIxLCA4NywgMjUxLCAxMjAsIDIyMCwgCi0gICAgMjAsIDg3LCAyNDksIDE2NiwgODcsIDIxOSwgMTc4LCAyMTgsIDE5MywgODcsIDI0NiwgNDAsIDI0OCwgMTAyLCA4NywgMjI1LCAKLSAgICAxOTksIDY1LCAyMjUsIDEyOSwgMjQ0LCAzMCwgMjUxLCAxODEsIDI0NywgMTE3LCA4NywgMjE5LCAxOTEsIDI1MiwgNzcsIAotICAgIDIxNywgMTAyLCAyNTIsIDc3LCA2NywgMjQ0LCAyMCwgMjQwLCAyMDEsIDIyNSwgMTM5LCA4NywgMjMwLCAyMTksIDI1MiwgCi0gICAgOTAsIDI0OSwgMzksIDI0NCwgMjU1LCAxMDcsIDI0NywgODYsIDUyLCAyNDksIDc5LCAyNTAsIDE3NCwgMjUyLCA2MywgMiwgCi0gICAgMjEzLCAzMSwgNTIsIDI1MiwgNjMsIDIsIDI0NywgODYsIDUyLCAyNTIsIDYzLCAyLCAyNDUsIDE0LCA1MiwgMjUyLCA2MywgCi0gICAgMiwgMjI1LCAxMDgsIDUyLCAyMzAsIDIxOSwgMiwgMjEzLCAyMjAsIDI1MCwgNzQsIDIsIDIxNSwgMTI0LCAyMTYsIDE4OSwgCi0gICAgMjQsIDIxMywgMzEsIDUyLCAyMjIsIDk3LCAyMjYsIDQyLCAyNDksIDE0NywgMjUxLCA2NywgMjMwLCAyNTUsIDI0NCwgMjUsIAotICAgIDI0NywgMTM3LCAyMjcsIDI3LCAyNDcsIDE0MiwgMjQ2LCA0LCAyNDQsIDc2LCAyNDQsIDksIDIyNywgNDAsIDI0NCwgNzYsIAotICAgIDI0NCwgOSwgMjI2LCAyMDEsIDIsIDI0OSwgNDEsIDIyNiwgMjAxLCAyNDQsIDE1MSwgMjE1LCAxMzQsIDI1MCwgMjA0LCAKLSAgICAyMTcsIDIyNiwgMjUwLCAyMDQsIDI1MCwgMTc1LCAyMzUsIDIzOSwgMjUwLCA3NCwgMiwgMjE1LCAxMjQsIDIxNiwgMTg4LCAKLSAgICAyNTAsIDc0LCAyLCAyNDYsIDU4LCAyMTYsIDE4OCwgMjUyLCA2MCwgMjUwLCA3MywgMjQ5LCAxOTksIDIyNSwgMTAsIDIyMywgCi0gICAgODcsIDIyNSwgMTAsIDIyNiwgMTQ3LCAyMTksIDYxLCAyMjMsIDQyLCAyMTYsIDE4MCwgMjIzLCA0MiwgMjUxLCAxMTYsIAotICAgIDIxOCwgMzksIDIzMywgNzUsIDIyOCwgMTU2LCAyMjgsIDE1NywgMiwgMjQ4LCAzMSwgMjQ5LCA4NiwgMjQ5LCAxOTMsIDI1MSwgCi0gICAgMTE3LCAyMjcsIDQwLCAyNTEsIDExNywgMjQyLCAxMDQsIDI1MSwgMTE3LCAyNTEsIDEzMSwgMjUxLCAxMTcsIDIyNywgMjMsIAotICAgIDI1MSwgMTE3LCAyNTEsIDExNCwgMjMwLCAyNSwgMjUyLCA5MywgMjIyLCAxMDUsIDIzMSwgMTI0LCAyMTcsIDIxMCwgMjI0LCAKLSAgICAxNiwgMjI2LCAxOTksIDI0NCwgMTI3LCAyMzIsIDM5LCAyMjIsIDE0MCwgMjU0LCAwLCAyMjUsIDMxLCAyNTQsIDE1NywgCi0gICAgMjMyLCAxNjgsIDI1MCwgNjMsIDIzMSwgMTM2LCAyMjYsIDI1MywgMjE2LCAxOTYsIDIzNSwgMjQ4LCAyMTYsIDE5NiwgMjI2LCAKLSAgICAyMDYsIDI0NSwgMjM2LCA4NywgMjM1LCAyNDUsIDI0NSwgNzgsIDI0NSwgNzksIDIsIDI0NiwgNTgsIDc2LCA0OSwgMjQ5LCAKLSAgICAxOTMsIDIzMiwgNiwgMiwgMjMyLCAxNjIsIDI0NCwgNDIsIDI0OSwgMTkzLCAyMzIsIDYsIDIsIDIyNCwgNDgsIDI0NCwgNDIsIAotICAgIDIyNywgNDAsIDIzMiwgNiwgMiwgMjI0LCA0OCwgMjQ0LCA0MiwgMjI3LCA0MCwgMjMyLCA2LCAyLCAyMzIsIDE2MiwgMjQ0LCAKLSAgICA0MiwgMjI1LCAxMTYsIDIyNSwgMTE3LCAyNDAsIDIzNSwgMjI5LCAxNjYsIDIzMCwgMjI5LCAyMjUsIDI0OSwgMjMwLCAyMjksIAotICAgIDIyNSwgMjUwLCAyLCA5NSwgNzYsIDI1MywgMTIzLCAyMzMsIDcwLCAyMTQsIDE1MywgMjMwLCAyMjgsIDIzMCwgMjI5LCAKLSAgICAyMjUsIDI1MCwgMjI3LCA5NiwgMjI4LCAxODYsIDIzMCwgMjI5LCAyMjUsIDI0OCwgMjU0LCAxLCAyLCAyNTIsIDQ5LCAyNTAsIAotICAgIDE5OCwgMjE0LCAxNTAsIDI1MCwgMTk4LCAyMTcsIDIwNywgMjI0LCA2MywgMjE0LCAxNDksIDIxNiwgMjUsIDk1LCAyNTMsIAotICAgIDE2MiwgMjQ5LCAxOTUsIDk1LCAyNCwgMTMyLCAyMjcsIDQwLCAyNDksIDIyOSwgMjUzLCAxNjIsIDI0OSwgMTk1LCA5NSwgCi0gICAgMjQsIDEzMiwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYzLCAyLCAzNiwgMTIyLCAyMjYsIDI0NCwgMjQ5LCAxOTUsIAotICAgIDI0NiwgNTgsIDI0LCAyMTUsIDEyNCwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAyNTMsIDI1NSwgMjQ2LCA1OCwgCi0gICAgMjQsIDIxNSwgMTI0LCAyMjcsIDQwLCAyNDksIDIyOSwgMjUzLCAxNjIsIDExNSwgMjUxLCA2NiwgODcsIDEyNCwgMjUxLCAKLSAgICA2NiwgODcsIDIxOSwgMTk1LCAyLCAyNTAsIDE5MiwgOTAsIDIxOSwgMTk0LCAyMTksIDE5NSwgMiwgMTIyLCAyMTksIDIxOCwgCi0gICAgMjE0LCAxOSwgMjE5LCAxOTUsIDIsIDEzMywgMjE5LCAyMTgsIDIxNCwgMTgsIDI1MiwgMzUsIDI0NSwgMTI5LCAyMjUsIAotICAgIDE2MSwgMjMzLCA2NiwgMjMyLCAxNiwgMjQyLCAxNjAsIDIyMywgMTQ0LCAyMzIsIDE2LCAyNDIsIDE2MCwgMjMyLCAyMDQsIAotICAgIDIsIDIzNSwgMjIyLCAyMjYsIDc0LCAyNDksIDE5MywgMjMyLCAyMDQsIDIsIDIzNCwgMTQ0LCAyMzQsIDE0NCwgMjMyLCAKLSAgICAyMDMsIDIyNywgNDAsIDIzMiwgMjAzLCAyNTEsIDIyMSwgMjUxLCAyMjIsIDIsIDI1MCwgMTkyLCA5MCwgMjUxLCAxMTUsIAotICAgIDIzMiwgMjMzLCA4NywgMjI0LCA2NCwgMjUxLCAxNSwgMjUyLCAxMDIsIDIsIDEzMiwgNzYsIDQ5LCAyNDUsIDEwMSwgMiwgCi0gICAgMTMyLCA3NiwgNDksIDIyNywgNjMsIDIsIDI0NCwgMjU0LCAxNTIsIDIsIDQyLCA0NiwgNzYsIDQ5LCAyMTksIDIyNSwgMiwgCi0gICAgOTUsIDc2LCA0OSwgMjE2LCAyMjcsIDIsIDIxNSwgMTI0LCA3NiwgNDksIDIyOCwgMTg2LCAxMjIsIDIxNSwgMTU0LCAyNDUsIAotICAgIDE0OCwgODcsIDIzNCwgMTQyLCAyMTcsIDIwMCwgMjM1LCAyMTYsIDE2LCAzMSwgNywgNiwgMjMzLCAzMywgMjM1LCAyMTYsIAotICAgIDE2LCAzMSwgNywgMywgMjMzLCAzMywgMjM1LCAyMTYsIDE2LCAzMSwgMjI4LCA1NSwgMjM1LCAyMTYsIDE2LCAzMSwgMjE4LCAKLSAgICAxMjgsIDIzNSwgMjE2LCAxNiwgMzEsIDcsIDIzMywgMzMsIDI0NCwgNjUsIDI0NSwgMTI5LCAyMTYsIDIyMiwgMjEzLCAxODcsIAotICAgIDI0MiwgNCwgMjI4LCAzOCwgMjQsIDI1MSwgMTIxLCAyNDEsIDUyLCAyMjUsIDE4MiwgMjMxLCAzOSwgMjE3LCAyMDgsIDI0OSwgCi0gICAgNTQsIDI1MiwgNzgsIDIyMCwgNTMsIDIyNSwgMTQzLCAyMTksIDk2LCAyLCAyMzEsIDM3LCAyNDcsIDc0LCAyMzUsIDEzMSwgCi0gICAgMTYsIDMxLCAyNTEsIDIzMywgMjE2LCAxNzgsIDI0NSwgMTE0LCA4MywgNDEsIDI1MSwgMTUsIDY3LCA0MSwgMjUxLCAxNSwgCi0gICAgMjMzLCAxMDgsIDIyNCwgNCwgMjQ5LCAyMjgsIDIzMywgMTA4LCAyNTEsIDEzMSwgMjQ5LCAyMjgsIDIzMywgMTA4LCAyMjcsIAotICAgIDIzLCAyNDcsIDIwMCwgMjMzLCAxMDgsIDI1MSwgMTMxLCAyNDcsIDIwMCwgMywgMjI3LCAyMywgMjQ3LCAyMDAsIDMsIDI1MSwgCi0gICAgMTMxLCAyNDcsIDIwMCwgMjE1LCAxMzMsIDIyNCwgNCwgMjE2LCAxODMsIDI0NiwgNTksIDIyNCwgNCwgMjE2LCAxODMsIAotICAgIDIxNSwgMTMzLCAzLCAyMjQsIDQsIDIxNiwgMTgzLCAyNDYsIDU5LCAzLCAyMjQsIDQsIDIxNiwgMTgzLCAyNDksIDE5NywgCi0gICAgMjQ0LCAxNTksIDEyMiwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMTE3LCAyMjcsIDEwNiwgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAxMzMsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0MywgMjM3LCAyMjcsIDEwNiwgMjQ5LCAKLSAgICAxOTcsIDI0NCwgMTU5LCAyNDQsIDUwLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjAsIDUzLCAyMjcsIDEwNiwgCi0gICAgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjEsIDQzLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDE1MCwgMjI3LCAKLSAgICAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI5LCAzMSwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjE3LCAyMDEsIAotICAgIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0NSwgMTI1LCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAKLSAgICAyMTYsIDQyLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjcsIDU4LCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNiwgCi0gICAgMjIsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjE3LCA5NCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDMsIDIzMywgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAyNDQsIDQ4LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyMCwgNDksIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIxLCAKLSAgICA0MiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDE0OSwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjksIDMwLCAyNDksIDE5NywgCi0gICAgMjQ0LCAxNTksIDIxNywgMTk5LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0NSwgMTIzLCAyNDksIDE5NywgMjQ0LCAxNTksIAotICAgIDIxNiwgNDAsIDIzMCwgMTg3LCAyNDMsIDIwMSwgMjE2LCAyNDcsIDIxNiwgMjE1LCAyMTksIDg4LCA2NSwgMjMzLCAxMSwgCi0gICAgMjIwLCA5NiwgNjUsIDIzNSwgMTMyLCAyMzAsIDE3NiwgMjQyLCAxMDIsIDI0NCwgMTU5LCAyLCAyMjAsIDIsIDI0NCwgMjM3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjE3LCAyMjIsIDY1LCAyMzUsIDU2LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIAotICAgIDE4MCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyMjAsIDIsIDI0NCwgMjM3LCAyMjAsIAotICAgIDIsIDI0NCwgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIDE4MSwgMjQsIDI0OSwgMTY4LCAyMTgsIDE5MiwgMjIwLCAyLCAyNDQsIAotICAgIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyMTcsIDU4LCAyNDQsIDIzNywgMjIwLCAyLCAyNDQsIDE1OSwgMiwgCi0gICAgMjQyLCA4LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAyNDAsIDIzNCwgMjEzLCAyMTgsIDI0NCwgMTU4LCAyMjAsIDIsIDI0NCwgCi0gICAgMTU5LCAyLCAyMjAsIDIsIDI0NCwgMjM3LCAyNDQsIDE1OSwgMjIyLCAxMzUsIDI0OCwgMTMsIDI0NCwgMiwgMjIzLCAyMzgsIAotICAgIDI0NCwgMTU4LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAyNDEsIDIxMCwgMjQ0LCAyMzcsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIAotICAgIDIxOCwgMjM0LCAyMjAsIDEsIDI0NCwgMTU4LCAyMjksIDE2OSwgMjQ0LCAxNTgsIDIxNSwgMTU4LCAyNDQsIDE1OCwgMjQ0LCAKLSAgICAxNTksIDIsIDI0OSwgMTY4LCAyMTgsIDE5MiwgMjI2LCA2NywgMjQ0LCAxNTgsIDI0OSwgMTQxLCAyNDQsIDE1OCwgMjQ0LCAKLSAgICAxNTksIDIxNywgOTEsIDExOCwgMjM0LCA3MiwgMjM0LCA3MSwgMjQ0LCAxNTksIDIsIDI0OSwgMTkzLCAyNDQsIDIzNywgCi0gICAgMjQ0LCAxNTksIDIsIDIxOSwgMzEsIDIxNiwgMjMzLCAyNCwgMjEzLCAyMTgsIDI0NCwgMjM5LCAyNDQsIDE1OSwgMiwgMjE5LCAKLSAgICAzMSwgMjE2LCAyMzMsIDI0LCAyMTcsIDU4LCAyNDQsIDIzNywgMjQ3LCAxNDQsIDI0NCwgMTU4LCAyNTQsIDE3LCAyNDQsIAotICAgIDE1OCwgMjI1LCAxMDcsIDI0NCwgMTU4LCAyNDksIDU2LCAyNDQsIDE1OCwgMjI2LCA0NiwgMjQ0LCAxNTgsIDI0NCwgMTU5LCAKLSAgICAyLCAyMzIsIDE3OSwgNjUsIDIxNiwgMTYyLCAyNDcsIDE0NCwgMjUxLCAxNywgMjIzLCAyMzgsIDI0NCwgMTU4LCAyNDQsIAotICAgIDEyMSwgMjQ0LCAxNTgsIDIxNCwgNCwgMjQ0LCAxNTgsIDIyMCwgMTksIDI0NCwgMTU4LCAyMTcsIDI0LCAyNDQsIDE1OCwgCi0gICAgMjMyLCAxNjksIDI0OSwgNTYsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyNDksIAotICAgIDE2OCwgMjE4LCAxOTIsIDI0NCwgMTU5LCAyMjIsIDEwOSwgMjM1LCAyNTIsIDI0NCwgMTIyLCAyNTMsIDEyOSwgMjQ0LCAKLSAgICAxNTgsIDI0NCwgMTgsIDI0NCwgMTU4LCAyNDcsIDExNywgMjQ0LCAxNTgsIDI0NCwgMTU5LCAyMTMsIDIxNiwgMjMwLCAxODAsIAotICAgIDI0NCwgMTU5LCAyLCAyMzEsIDE0OSwgMjMxLCAyMDcsIDI0MiwgMTAyLCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIyMCwgMiwgCi0gICAgMjQ0LCAyMzcsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjE3LCAyMjIsIDY1LCAyMzUsIDU2LCAyMjAsIDIsIDI1MCwgMTU3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODAsIDIyMCwgMiwgMjUwLCAxNTcsIDI0NCwgMTU5LCAyLCAyNDEsIDIxMCwgCi0gICAgMjQ0LCAyMzcsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjEzLCAxODQsIDIyMCwgMywgMjM0LCA3MSwgMjUwLCAxNTcsIAotICAgIDI0NCwgMTU5LCAyLCAyNDksIDE5MywgMjQ0LCAyMzcsIDIyNSwgMTA3LCAyNTAsIDE1NywgMjQ0LCAxNTgsIDI0OSwgNTYsIAotICAgIDI1MCwgMTU3LCAyNDQsIDE1OCwgMjE0LCA0LCAyNTAsIDE1NywgMjQ0LCAxNTgsIDI0NCwgMTU5LCAyLCAyMjgsIDE4NiwgCi0gICAgMjQyLCAxMzksIDI0MywgMTAsIDI0NCwgMTU5LCAyLCAyMjcsIDgxLCAyNDMsIDEwLCAyMjYsIDQ0LCAyNTEsIDk0LCAyNDgsIAotICAgIDI2LCAyMjIsIDg4LCAyMzAsIDIxNSwgMjQxLCAyMTMsIDIzMCwgMjE1LCAyMTksIDE5NiwgMjMwLCAyMTUsIDI0MSwgMjQ0LCAKLSAgICAyMjYsIDQ0LCAyMjQsIDQ3LCAxMjIsIDI0MSwgMjU0LCAyMjYsIDQ0LCAyMjQsIDQ3LCAyNTEsIDEwNCwgMjQxLCAyNTAsIAotICAgIDIzNSwgMjUyLCAyNTAsIDExMywgMjI2LCA0NCwgMjQzLCAyMDgsIDIyNiwgNDQsIDIsIDIyNSwgMTA3LCAyNDQsIDE1OCwgCi0gICAgMjI2LCA0NCwgMiwgMjQ0LCAxMCwgMjQxLCAyNDksIDIyMywgMTA0LCAyNDEsIDE5OCwgMjE5LCA4MywgMjMyLCAyMDIsIAotICAgIDIyNCwgNTMsIDI1MCwgMTc2LCAyNDEsIDE0OCwgMjE2LCAyMDUsIDI0MSwgMTQ4LCAyMTYsIDIwNiwgMiwgMjUxLCA0MywgCi0gICAgMjI4LCAxNjQsIDIxNiwgMjA1LCAyMzEsIDk5LCAxNzcsIDIyNCwgNTQsIDIxOSwgODksIDIxNiwgMjAzLCAyMTYsIDIwNCwgCi0gICAgMjUwLCAxNzYsIDI1MSwgMjEsIDIyNywgNjAsIDI1MSwgMjEsIDIxNiwgMTU5LCAyNTEsIDIyLCAyMTksIDY5LCAyMzEsIDAsIAotICAgIDI1NCwgMzksIDI0NCwgNjYsIDI0NSwgOTUsIDIyNSwgMTMzLCAyNTAsIDE3NiwgMjI3LCA2MCwgMjI1LCAxMzMsIDI1MCwgCi0gICAgMTc2LCAyMTcsIDIzOSwgMjI3LCA2MCwgMjE3LCAyMzksIDI1MywgOTYsIDIyNywgNjAsIDI1MywgOTYsIDIyNCwgMTEsIAotICAgIDIxNCwgMjI0LCAyNDgsIDksIDIxNiwgMTUwLCAyNTMsIDE1NywgMjMyLCAxNzIsIDIxNiwgMjExLCAyMzAsIDIwOSwgMjMwLCAKLSAgICAxODYsIDIyNCwgNTIsIDIxOCwgMjA3LCAyMjQsIDUyLCAyMzAsIDE4NiwgMjUwLCAyMTQsIDI1NCwgMTM0LCAyMTYsIDIwMiwgCi0gICAgMjIwLCAxOTYsIDIyMywgODQsIDIxOSwgMTg5LCAxOTksIDIxNiwgMjA5LCAyMzMsIDIsIDcxLCAyMTYsIDIwOSwgMjMzLCAyLCAKLSAgICAyNDksIDEyOSwgNTIsIDIyNSwgMTMzLCAyNTAsIDE2MSwgMjIzLCAxOTcsIDIzMywgMiwgMjE2LCAxODAsIDI0NCwgNDMsIAotICAgIDIyNywgNjMsIDIyNSwgMTE4LCAyNDcsIDc3LCAyMjgsIDE4NiwgMjQ1LCA4NCwgNTIsIDIyMCwgMCwgODcsIDIyOCwgMTg2LCAKLSAgICAyMjAsIDAsIDg3LCAyMjUsIDksIDIzMiwgMjIyLCAyMzUsIDI1MiwgMjM1LCAxNTUsIDIyNSwgMTczLCA4NywgMjQ3LCAxMDAsIAotICAgIDIyOCwgMTYzLCAyMzIsIDIyMiwgODcsIDIyNSwgMTEyLCAyMTQsIDI1LCA4NywgMjI4LCAxNzcsIDIxNCwgMjUsIDg3LCAKLSAgICAyNTEsIDE4MCwgMjI4LCAxODYsIDI1MSwgMTc5LCAyNTEsIDE3OCwgMjMwLCAxODYsIDI1MSwgMTc4LCAyMjYsIDg4LCAyMjgsIAotICAgIDE4NiwgMjI2LCA4NywgMjUwLCAzNywgMjQ5LCA2NCwgMjMxLCAxMjAsIDg3LCAyMTMsIDIwNSwgODcsIDIyMywgMjExLCAKLSAgICAyNTIsIDEwNCwgODcsIDIxNiwgMjQ4LCAyMTQsIDI1LCAyNDksIDE5MCwgMjIwLCAxNTgsIDI1MiwgMzgsIDI1MiwgMzYsIAotICAgIDIyNiwgMTE1LCAyNDksIDExNiwgMjQ5LCAyOCwgMjUyLCA4NywgMjQ5LCAyMTUsIDQyLCAyMzIsIDE0OCwgMTA0LCAxNiwgCi0gICAgMzEsIDIyNCwgMTQ4LCAxMDQsIDE2LCAzMSwgMjU0LCAxMDAsIDEwNCwgMTYsIDMxLCAyNDQsIDY1LCAxMDQsIDE2LCAzMSwgCi0gICAgMjQ1LCAxNzksIDEwNCwgMTYsIDMxLCAyMTQsIDI0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTMsIDEwNCwgMTYsIDMxLCAyNTMsIAotICAgIDIxNCwgMjIzLCAyNTUsIDEwNCwgMTYsIDMxLCAyNTMsIDIxNCwgMjIzLCAyNTQsIDEwNCwgMTYsIDMxLCAyNTMsIDIxNCwgCi0gICAgMjE0LCAxMjQsIDEwNCwgMTYsIDMxLCAyNTMsIDIxNCwgMjE0LCAxMjMsIDEwNCwgMTYsIDMxLCAyMTQsIDEzOCwgMTA0LCAKLSAgICAxNiwgMzEsIDIxNCwgMTM3LCAxMDQsIDE2LCAzMSwgMjE0LCAxMzYsIDEwNCwgMTYsIDMxLCAyMTgsIDI0NSwgMTA0LCAxNiwgCi0gICAgMzEsIDIyNiwgMSwgMjE4LCAyNDUsIDEwNCwgMTYsIDMxLCA4MywgMjE4LCAyNDUsIDEwNCwgMTYsIDMxLCAyMzEsIDExOSwgCi0gICAgMjE5LCAxNiwgMTA0LCAxNiwgMzEsIDIzMSwgMTE5LCAyMTksIDE1LCAxMDQsIDE2LCAzMSwgMjMxLCAxMTksIDIxOSwgMTQsIAotICAgIDEwNCwgMTYsIDMxLCAyNDksIDIzMSwgMTA0LCAxNiwgMzEsIDIyMiwgMTcyLCAxMDQsIDE2LCAzMSwgMjI5LCAxOSwgMTA0LCAKLSAgICAxNiwgMzEsIDIxNCwgMTIyLCAxMDQsIDE2LCAzMSwgMjE0LCAxMjEsIDEwNCwgMTYsIDMxLCAyMjMsIDEwNSwgMjIyLCAxNzIsIAotICAgIDEwNCwgMTYsIDMxLCAyMjMsIDEwNSwgMjIyLCAxNzEsIDEwNCwgMTYsIDMxLCAyNDIsIDE0MiwgMTA0LCAxNiwgMzEsIDIyMCwgCi0gICAgOTIsIDEwNCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIzNSwgMTc1LCAyMjcsIDE5LCAxMDQsIAotICAgIDE2LCAzMSwgMjQ5LCA3NCwgNjUsIDIzNSwgMTc0LCAxMDQsIDE2LCAzMSwgMjIzLCAyNTEsIDY1LCAyMzUsIDE3NCwgMTA0LCAKLSAgICAxNiwgMzEsIDI0OSwgMTA3LCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgMjM1LCAxNzMsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAKLSAgICAyMTksIDE3LCA2NSwgMjQ5LCAxMDYsIDEwNCwgMTYsIDMxLCAyNDksIDc0LCA2NSwgMjQ5LCAxMDYsIDEwNCwgMTYsIDMxLCAKLSAgICAyNDksIDc0LCA2NSwgMjQ5LCAxMDUsIDEwNCwgMTYsIDMxLCAyNDksIDEwNywgMjUzLCAyNTAsIDEwNCwgMTYsIDMxLCAyMjIsIAotICAgIDE3MywgNjUsIDI0OSwgMTA3LCAyNTMsIDI1MCwgMTA0LCAxNiwgMzEsIDIxOSwgMTcsIDY1LCAyMjIsIDE3MywgNjUsIDI0OSwgCi0gICAgMTA2LCAxMDQsIDE2LCAzMSwgMjE0LCAyMjAsIDEwNCwgMTYsIDMxLCAyMTcsIDM3LCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgCi0gICAgMjMzLCA4MSwgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDI1MywgMjQ5LCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgMjE5LCAxNywgCi0gICAgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjIyLCAxNzMsIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIxOSwgMTcsIAotICAgIDY1LCAyMjIsIDE3MywgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjE0LCAxMzksIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgCi0gICAgMzEsIDIyMywgMjUxLCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIDMxLCAyMjMsIDI1MSwgNjUsIDI1MywgMjQ3LCAxMDQsIDE2LCAKLSAgICAzMSwgMjIzLCAyNTAsIDEwNCwgMTYsIDMxLCAyMjMsIDI0OSwgMTA0LCAxNiwgMzEsIDIyMywgMjQ4LCAxMDQsIDE2LCAzMSwgCi0gICAgMjIzLCAyNDcsIDEwNCwgMTYsIDMxLCAyNTQsIDY2LCAxMDQsIDE2LCAzMSwgMjU0LCA2NSwgMTA0LCAxNiwgMzEsIDIzMSwgCi0gICAgMjI2LCAxMDQsIDE2LCAzMSwgMjIyLCAxNzgsIDEwNCwgMTYsIDMxLCAyNTMsIDE2MSwgMTA0LCAxNiwgMzEsIDIyNCwgMTgsIAotICAgIDEwNCwgMTYsIDMxLCAyMjQsIDE3LCAxMDQsIDE2LCAzMSwgMjUzLCA5OSwgMTA0LCAxNiwgMzEsIDI1MSwgMTUyLCAyMjcsIAotICAgIDIwLCAxMDQsIDE2LCAzMSwgMjE4LCAwLCAxMDQsIDE2LCAzMSwgMjE3LCAyNTUsIDEwNCwgMTYsIDMxLCAyMjQsIDE1MywgCi0gICAgMjMyLCAyNTEsIDEwNCwgMTYsIDMxLCAyNTEsIDEwOSwgMTA0LCAxNiwgMzEsIDI1MSwgMTA4LCAxMDQsIDE2LCAzMSwgMjUxLCAKLSAgICAxMDcsIDEwNCwgMTYsIDMxLCAyNTQsIDQ3LCAxMDQsIDE2LCAzMSwgMjI3LCA4NCwgMTA0LCAxNiwgMzEsIDIxOSwgMTgwLCAKLSAgICAxMDQsIDE2LCAzMSwgMjE3LCAzNSwgMTA0LCAxNiwgMzEsIDI0MiwgNzcsIDEwNCwgMTYsIDMxLCAyMTQsIDEyLCAxMDQsIAotICAgIDE2LCAzMSwgMjI1LCAxMDYsIDEwNCwgMTYsIDMxLCAyNTAsIDIwMiwgMTA0LCAxNiwgMzEsIDIxNiwgNTAsIDEwNCwgMTYsIAotICAgIDMxLCAyNTAsIDE3OCwgMjMwLCAxOTIsIDEwNCwgMTYsIDMxLCAyMjIsIDEyMCwgNjUsIDIzNSwgNTgsIDEwNCwgMTYsIDMxLCAKLSAgICAyNTAsIDIxMSwgMTA0LCAxNiwgMzEsIDIxNiwgMTc3LCAxMDQsIDE2LCAzMSwgMjE5LCA5MywgMjE2LCAxNzcsIDEwNCwgMTYsIAotICAgIDMxLCAyMzIsIDIwMSwgMTA0LCAxNiwgMzEsIDIxOSwgMjQwLCAxMDQsIDE2LCAzMSwgMjE1LCAxMTMsIDEwNCwgMTYsIDMxLCAKLSAgICAyNDAsIDIzMywgMjQ2LCAxOSwgMTA0LCAxNiwgMzEsIDI1MywgMTQyLCAxMDQsIDE2LCAzMSwgMjI1LCAxMTQsIDI1MywgCi0gICAgMTQyLCAxMDQsIDE2LCAzMSwgMjUxLCA3MCwgMTA0LCAxNiwgMzEsIDIyNSwgMTA1LCAyNTEsIDcwLCAxMDQsIDE2LCAzMSwgCi0gICAgMjU0LCA0NCwgMTA0LCAxNiwgMzEsIDIxOSwgNTcsIDIxOCwgMjI2LCAyMTksIDU2LCAxMDQsIDE2LCAzMSwgMjE5LCA1NywgCi0gICAgMjE4LCAyMjYsIDIxOSwgNTUsIDEwNCwgMTYsIDMxLCAyMTksIDEzLCAxMDQsIDE2LCAzMSwgMjI1LCA4MCwgMTA0LCAxNiwgCi0gICAgMzEsIDI0NywgMTMzLCAxMDQsIDE2LCAzMSwgMjQ3LCAxMzUsIDEwNCwgMTYsIDMxLCAyNDcsIDEzNCwgMTA0LCAxNiwgMzEsIAotICAgIDIyNSwgMTcsIDEwNCwgMTYsIDMxLCAyMjUsIDcsIDEwNCwgMTYsIDMxLCAyNDksIDYyLCAxMDQsIDE2LCAzMSwgMjQ5LCA2MSwgCi0gICAgMTA0LCAxNiwgMzEsIDI0OSwgNjAsIDEwNCwgMTYsIDMxLCAyNDksIDU5LCAxMDQsIDE2LCAzMSwgMjQ5LCA1OCwgMTA0LCAKLSAgICAxNiwgMzEsIDI1NCwgNzcsIDEwNCwgMTYsIDMxLCAyNTIsIDM5LCA2NSwgMjMxLCAyMTIsIDEwNCwgMTYsIDMxLCAyNTIsIAotICAgIDM5LCA2NSwgMjE0LCAyNDksIDEwNCwgMTYsIDMxLCAyMjMsIDIwOSwgMTA0LCAxNiwgMzEsIDI0MCwgMjI1LCAxMDQsIDE2LCAKLSAgICAzMSwgMjI5LCA0MywgMTA0LCAxNiwgMzEsIDI0OCwgOTEsIDEwNCwgMTYsIDMxLCAyMzAsIDIwNCwgMTA0LCAxNiwgMzEsIAotICAgIDE1MSwgMjQ2LCA0OSwgMTA0LCAxNiwgMzEsIDE1MSwgMjI3LCAwLCA5LCAxMywgMjQwLCA5NSwgOSwgMTMsIDI0MCwgOTQsIAotICAgIDksIDEzLCAyNDAsIDkzLCA5LCAxMywgMjQwLCA5MiwgOSwgMTMsIDI0MCwgOTEsIDksIDEzLCAyNDAsIDkwLCA5LCAxMywgCi0gICAgMjQwLCA4OSwgOSwgMTMsIDI0MCwgODgsIDksIDEzLCAyNDAsIDg3LCA5LCAxMywgMjQwLCA4NiwgOSwgMTMsIDI0MCwgODUsIAotICAgIDksIDEzLCAyNDAsIDg0LCA5LCAxMywgMjQwLCA4MywgOSwgMTMsIDI0MCwgODIsIDksIDEzLCAyNDAsIDgxLCA5LCAxMywgCi0gICAgMjQwLCA4MCwgOSwgMTMsIDI0MCwgNzksIDksIDEzLCAyNDAsIDc4LCA5LCAxMywgMjQwLCA3NywgOSwgMTMsIDI0MCwgNzYsIAotICAgIDksIDEzLCAyNDAsIDc1LCA5LCAxMywgMjQwLCA3NCwgOSwgMTMsIDI0MCwgNzMsIDksIDEzLCAyNDAsIDcyLCA5LCAxMywgCi0gICAgMjQwLCA3MSwgOSwgMTMsIDI0MCwgNzAsIDksIDEzLCAyNDAsIDY5LCA5LCAxMywgMjQwLCA2OCwgOSwgMTMsIDI0MCwgNjcsIAotICAgIDksIDEzLCAyNDAsIDY2LCA5LCAxMywgMjQwLCA2NSwgOSwgMTMsIDI0MCwgNjQsIDksIDEzLCAyNDAsIDYzLCA5LCAxMywgCi0gICAgMjQwLCA2MiwgOSwgMTMsIDI0MCwgNjEsIDksIDEzLCAyNDAsIDYwLCA5LCAxMywgMjQwLCA1OSwgOSwgMTMsIDI0MCwgNTgsIAotICAgIDksIDEzLCAyNDAsIDU3LCA5LCAxMywgMjQwLCA1NiwgOSwgMTMsIDI0MCwgNTUsIDksIDEzLCAyNDAsIDU0LCA5LCAxMywgCi0gICAgMjQwLCA1MywgOSwgMTMsIDI0MCwgNTIsIDksIDEzLCAyNDAsIDUxLCA5LCAxMywgMjQwLCA1MCwgOSwgMTMsIDI0MCwgNDksIAotICAgIDksIDEzLCAyNDAsIDQ4LCA5LCAxMywgMjQwLCA0NywgOSwgMTMsIDI0MCwgNDYsIDksIDEzLCAyNDAsIDQ1LCA5LCAxMywgCi0gICAgMjQwLCA0NCwgOSwgMTMsIDI0MCwgNDMsIDksIDEzLCAyNDAsIDQyLCA5LCAxMywgMjQwLCA0MSwgOSwgMTMsIDI0MCwgNDAsIAotICAgIDksIDEzLCAyNDAsIDM5LCA5LCAxMywgMjQwLCAzOCwgOSwgMTMsIDI0MCwgMzcsIDksIDEzLCAyNDAsIDM2LCA5LCAxMywgCi0gICAgMjQwLCAzNSwgOSwgMTMsIDI0MCwgMzQsIDksIDEzLCAyNDAsIDMzLCA5LCAxMywgMjQwLCAzMiwgOSwgMTMsIDI0MCwgMzEsIAotICAgIDksIDEzLCAyNDAsIDMwLCA5LCAxMywgMjQwLCAyOSwgOSwgMTMsIDI0MCwgMjgsIDksIDEzLCAyNDAsIDI3LCA5LCAxMywgCi0gICAgMjQwLCAyNiwgOSwgMTMsIDI0MCwgMjUsIDksIDEzLCAyNDAsIDI0LCA5LCAxMywgMjQwLCAyMywgOSwgMTMsIDI0MCwgMjIsIAotICAgIDksIDEzLCAyNDAsIDIxLCA5LCAxMywgMjQwLCAyMCwgOSwgMTMsIDI0MCwgMTksIDksIDEzLCAyNDAsIDE4LCA5LCAxMywgCi0gICAgMjQwLCAxNywgOSwgMTMsIDI0MCwgMTYsIDksIDEzLCAyNDAsIDE1LCA5LCAxMywgMjQwLCAxNCwgOSwgMTMsIDI0MCwgMTMsIAotICAgIDksIDEzLCAyNDAsIDEyLCA5LCAxMywgMjQwLCAxMSwgOSwgMTMsIDI0MCwgMTAsIDksIDEzLCAyNDAsIDksIDksIDEzLCAKLSAgICAyNDAsIDgsIDksIDEzLCAyNDAsIDcsIDksIDEzLCAyNDAsIDYsIDksIDEzLCAyNDAsIDUsIDksIDEzLCAyNDAsIDQsIDksIAotICAgIDEzLCAyNDAsIDMsIDksIDEzLCAyNDAsIDIsIDksIDEzLCAyNDAsIDEsIDksIDEzLCAyNDAsIDAsIDksIDEzLCAyMzksIDI1NSwgCi0gICAgOSwgMTMsIDIzOSwgMjU0LCA5LCAxMywgMjM5LCAyNTMsIDksIDEzLCAyMzksIDI1MiwgOSwgMTMsIDIzOSwgMjUxLCA5LCAKLSAgICAxMywgMjM5LCAyNTAsIDksIDEzLCAyMzksIDI0OSwgOSwgMTMsIDIzOSwgMjQ4LCA5LCAxMywgMjM5LCAyNDcsIDksIDEzLCAKLSAgICAyMzksIDI0NiwgOSwgMTMsIDIzOSwgMjQ1LCA5LCAxMywgMjM5LCAyNDQsIDksIDEzLCAyMzksIDI0MywgOSwgMTMsIDIzOSwgCi0gICAgMjQyLCA5LCAxMywgMjM5LCAyNDEsIDksIDEzLCAyMzksIDI0MCwgOSwgMTMsIDIzOSwgMjM5LCA5LCAxMywgMjM5LCAyMzgsIAotICAgIDksIDEzLCAyMzksIDIzNywgOSwgMTMsIDIzOSwgMjM2LCA5LCAxMywgMjM5LCAyMzUsIDksIDEzLCAyMzksIDIzNCwgOSwgCi0gICAgMTMsIDIzOSwgMjMzLCA5LCAxMywgMjM5LCAyMzIsIDksIDEzLCAyMzksIDIzMSwgOSwgMTMsIDIzOSwgMjMwLCA5LCAxMywgCi0gICAgMjM5LCAyMjksIDksIDEzLCAyMzksIDIyOCwgOSwgMTMsIDIzOSwgMjI3LCA5LCAxMywgMjM5LCAyMjYsIDksIDEzLCAyMzksIAotICAgIDIyNSwgOSwgMTMsIDIzOSwgMjI0LCA5LCAxMywgMjM5LCAyMjMsIDksIDEzLCAyMzksIDIyMiwgOSwgMTMsIDIzOSwgMjIxLCAKLSAgICA5LCAxMywgMjM5LCAyMjAsIDksIDEzLCAyMzksIDIxOSwgOSwgMTMsIDIzOSwgMjE4LCA5LCAxMywgMjM5LCAyMTcsIDksIAotICAgIDEzLCAyMzksIDIxNiwgOSwgMTMsIDIzOSwgMjE1LCA5LCAxMywgMjM5LCAyMTQsIDksIDEzLCAyMzksIDIxMywgOSwgMTMsIAotICAgIDIzOSwgMjEyLCA5LCAxMywgMjM5LCAyMTEsIDksIDEzLCAyMzksIDIxMCwgOSwgMTMsIDIzOSwgMjA5LCA5LCAxMywgMjM5LCAKLSAgICAyMDgsIDksIDEzLCAyMzksIDIwNywgOSwgMTMsIDIzOSwgMjA2LCA5LCAxMywgMjM5LCAyMDUsIDksIDEzLCAyMzksIDIwNCwgCi0gICAgOSwgMTMsIDIzOSwgMjAzLCA5LCAxMywgMjM5LCAyMDIsIDksIDEzLCAyMzksIDIwMSwgOSwgMTMsIDIzOSwgMjAwLCA5LCAKLSAgICAxMywgMjM5LCAxOTksIDksIDEzLCAyMzksIDE5OCwgOSwgMTMsIDIzOSwgMTk3LCA5LCAxMywgMjM5LCAxOTYsIDksIDEzLCAKLSAgICAyMzksIDE5NSwgOSwgMTMsIDIzOSwgMTk0LCA5LCAxMywgMjM5LCAxOTMsIDksIDEzLCAyMzksIDE5MiwgOSwgMTMsIDIzOSwgCi0gICAgMTkxLCA5LCAxMywgMjM5LCAxOTAsIDksIDEzLCAyMzksIDE4OSwgOSwgMTMsIDIzOSwgMTg4LCA5LCAxMywgMjM5LCAxODcsIAotICAgIDksIDEzLCAyMzksIDE4NiwgOSwgMTMsIDIzOSwgMTg1LCA5LCAxMywgMjM5LCAxODQsIDksIDEzLCAyMzksIDE4MywgOSwgCi0gICAgMTMsIDIzOSwgMTgyLCA5LCAxMywgMjM5LCAxODEsIDksIDEzLCAyMzksIDE4MCwgOSwgMTMsIDIzOSwgMTc5LCA5LCAxMywgCi0gICAgMjM5LCAxNzgsIDksIDEzLCAyMzksIDE3NywgOSwgMTMsIDIzOSwgMTc2LCA5LCAxMywgMjM5LCAxNzUsIDksIDEzLCAyMzksIAotICAgIDE3NCwgOSwgMTMsIDIzOSwgMTczLCA5LCAxMywgMjM5LCAxNzIsIDksIDEzLCAyMzksIDE3MSwgOSwgMTMsIDIzOSwgMTcwLCAKLSAgICA5LCAxMywgMjM5LCAxNjksIDksIDEzLCAyMzksIDE2OCwgOSwgMTMsIDIzOSwgMTY3LCA5LCAxMywgMjM5LCAxNjYsIDksIAotICAgIDEzLCAyMzksIDE2NSwgOSwgMTMsIDIzOSwgMTY0LCA5LCAxMywgMjM5LCAxNjMsIDksIDEzLCAyMzksIDE2MiwgOSwgMTMsIAotICAgIDIzOSwgMTYxLCA5LCAxMywgMjM5LCAxNjAsIDksIDEzLCAyMzksIDE1OSwgOSwgMTMsIDIzOSwgMTU4LCA5LCAxMywgMjM5LCAKLSAgICAxNTcsIDksIDEzLCAyMzksIDE1NiwgOSwgMTMsIDIzOSwgMTU1LCA5LCAxMywgMjM5LCAxNTQsIDksIDEzLCAyMzksIDE1MywgCi0gICAgOSwgMTMsIDIzOSwgMTUyLCA5LCAxMywgMjM5LCAxNTEsIDksIDEzLCAyMzksIDE1MCwgOSwgMTMsIDIzOSwgMTQ5LCA5LCAKLSAgICAxMywgMjM5LCAxNDgsIDksIDEzLCAyMzksIDE0NywgOSwgMTMsIDIzOSwgMTQ2LCA5LCAxMywgMjM5LCAxNDUsIDksIDEzLCAKLSAgICAyMzksIDE0NCwgOSwgMTMsIDIzOSwgMTQzLCA5LCAxMywgMjM5LCAxNDIsIDksIDEzLCAyMzksIDE0MSwgOSwgMTMsIDIzOSwgCi0gICAgMTQwLCA5LCAxMywgMjM5LCAxMzksIDksIDEzLCAyMzksIDEzOCwgOSwgMTMsIDIzOSwgMTM3LCA5LCAxMywgMjM5LCAxMzYsIAotICAgIDksIDEzLCAyMzksIDEzNSwgOSwgMTMsIDIzOSwgMTM0LCA5LCAxMywgMjM5LCAxMzMsIDksIDEzLCAyMzksIDEzMiwgOSwgCi0gICAgMTMsIDIzOSwgMTMxLCA5LCAxMywgMjM5LCAxMzAsIDksIDEzLCAyMzksIDEyOSwgOSwgMTMsIDIzOSwgMTI4LCA5LCAxMywgCi0gICAgMjM5LCAxMjcsIDksIDEzLCAyMzksIDEyNiwgOSwgMTMsIDIzOSwgMTI1LCA5LCAxMywgMjM5LCAxMjQsIDksIDEzLCAyMzksIAotICAgIDEyMywgOSwgMTMsIDIzOSwgMTIyLCA5LCAxMywgMjM5LCAxMjEsIDksIDEzLCAyMzksIDEyMCwgOSwgMTMsIDIzOSwgMTE5LCAKLSAgICA5LCAxMywgMjM5LCAxMTgsIDksIDEzLCAyMzksIDExNywgOSwgMTMsIDIzOSwgMTE2LCA5LCAxMywgMjM5LCAxMTUsIDksIAotICAgIDEzLCAyMzksIDExNCwgOSwgMTMsIDIzOSwgMTEzLCA5LCAxMywgMjM5LCAxMTIsIDksIDEzLCAyMzksIDExMSwgOSwgMTMsIAotICAgIDIzOSwgMTEwLCA5LCAxMywgMjM5LCAxMDksIDksIDEzLCAyMzksIDEwOCwgOSwgMTMsIDIzOSwgMTA3LCA5LCAxMywgMjM5LCAKLSAgICAxMDYsIDksIDEzLCAyMzksIDEwNSwgOSwgMTMsIDIzOSwgMTA0LCA5LCAxMywgMjM5LCAxMDMsIDksIDEzLCAyMzksIDEwMiwgCi0gICAgOSwgMTMsIDIzOSwgMTAxLCA5LCAxMywgMjM5LCAxMDAsIDksIDEzLCAyMzksIDk5LCA5LCAxMywgMjM5LCA5OCwgOSwgMTMsIAotICAgIDIzOSwgOTcsIDksIDEzLCAyMzksIDk2LCA5LCAxMywgMjM5LCA5NSwgOSwgMTMsIDIzOSwgOTQsIDksIDEzLCAyMzksIDkzLCAKLSAgICA5LCAxMywgMjM5LCA5MiwgOSwgMTMsIDIzOSwgOTEsIDksIDEzLCAyMzksIDkwLCA5LCAxMywgMjM5LCA4OSwgOSwgMTMsIAotICAgIDIzOSwgODgsIDksIDEzLCAyMzksIDg3LCA5LCAxMywgMjM5LCA4NiwgOSwgMTMsIDIzOSwgODUsIDksIDEzLCAyMzksIDg0LCAKLSAgICA5LCAxMywgMjM5LCA4MywgOSwgMTMsIDIzOSwgODIsIDksIDEzLCAyMzksIDgxLCA5LCAxMywgMjM5LCA4MCwgOSwgMTMsIAotICAgIDIzOSwgNzksIDksIDEzLCAyMzksIDc4LCA5LCAxMywgMjM5LCA3NywgOSwgMTMsIDIzOSwgNzYsIDksIDEzLCAyMzksIDc1LCAKLSAgICA5LCAxMywgMjM5LCA3NCwgOSwgMTMsIDIzOSwgNzMsIDksIDEzLCAyMzksIDcyLCA5LCAxMywgMjM5LCA3MSwgOSwgMTMsIAotICAgIDIzOSwgNzAsIDksIDEzLCAyMzksIDY5LCA5LCAxMywgMjM5LCA2OCwgOSwgMTMsIDIzOSwgNjcsIDksIDEzLCAyMzksIDY2LCAKLSAgICA5LCAxMywgMjM5LCA2NSwgOSwgMTMsIDIzOSwgNjQsIDksIDEzLCAyMzksIDYzLCA5LCAxMywgMjM5LCA2MiwgOSwgMTMsIAotICAgIDIzOSwgNjEsIDksIDEzLCAyMzksIDYwLCA5LCAxMywgMjM5LCA1OSwgOSwgMTMsIDIzOSwgNTgsIDksIDEzLCAyMzksIDU3LCAKLSAgICA5LCAxMywgMjM5LCA1NiwgOSwgMTMsIDIzOSwgNTUsIDksIDEzLCAyMzksIDU0LCA5LCAxMywgMjM5LCA1MywgOSwgMTMsIAotICAgIDIzOSwgNTIsIDksIDEzLCAyMzksIDUxLCA5LCAxMywgMjM5LCA1MCwgOSwgMTMsIDIzOSwgNDksIDksIDEzLCAyMzksIDQ4LCAKLSAgICA5LCAxMywgMjM5LCA0NywgOSwgMTMsIDIzOSwgNDYsIDksIDEzLCAyMzksIDQ1LCA5LCAxMywgMjM5LCA0NCwgOSwgMTMsIAotICAgIDIzOSwgNDMsIDksIDEzLCAyMzksIDQyLCA5LCAxMywgMjM5LCA0MSwgOSwgMTMsIDIzOSwgNDAsIDksIDEzLCAyMzksIDM5LCAKLSAgICA5LCAxMywgMjM5LCAzOCwgOSwgMTMsIDIzOSwgMzcsIDksIDEzLCAyMzksIDM2LCA5LCAxMywgMjM5LCAzNSwgOSwgMTMsIAotICAgIDIzOSwgMzQsIDksIDEzLCAyMzksIDMzLCA5LCAxMywgMjM5LCAzMiwgOSwgMTMsIDIzOSwgMzEsIDksIDEzLCAyMzksIDMwLCAKLSAgICA5LCAxMywgMjM5LCAyOSwgOSwgMTMsIDIzOSwgMjgsIDksIDEzLCAyMzksIDI3LCA5LCAxMywgMjM5LCAyNiwgOSwgMTMsIAotICAgIDIzOSwgMjUsIDksIDEzLCAyMzksIDI0LCA5LCAxMywgMjM5LCAyMywgOSwgMTMsIDIzOSwgMjIsIDksIDEzLCAyMzksIDIxLCAKLSAgICA5LCAxMywgMjM5LCAyMCwgOSwgMTMsIDIzOSwgMTksIDksIDEzLCAyMzksIDE4LCA5LCAxMywgMjM5LCAxNywgOSwgMTMsIAotICAgIDIzOSwgMTYsIDksIDEzLCAyMzksIDE1LCA5LCAxMywgMjM5LCAxNCwgOSwgMTMsIDIzOSwgMTMsIDksIDEzLCAyMzksIDEyLCAKLSAgICA5LCAxMywgMjM5LCAxMSwgOSwgMTMsIDIzOSwgMTAsIDksIDEzLCAyMzksIDksIDksIDEzLCAyMzksIDgsIDksIDEzLCAyMzksIAotICAgIDcsIDksIDEzLCAyMzksIDYsIDksIDEzLCAyMzksIDUsIDksIDEzLCAyMzksIDQsIDksIDEzLCAyMzksIDMsIDksIDEzLCAKLSAgICAyMzksIDIsIDksIDEzLCAyMzksIDEsIDksIDEzLCAyMzksIDAsIDksIDEzLCAyMzgsIDI1NSwgOSwgMTMsIDIzOCwgMjU0LCAKLSAgICA5LCAxMywgMjM4LCAyNTMsIDksIDEzLCAyMzgsIDI1MiwgOSwgMTMsIDIzOCwgMjUxLCA5LCAxMywgMjM4LCAyNTAsIDksIAotICAgIDEzLCAyMzgsIDI0OSwgOSwgMTMsIDIzOCwgMjQ4LCA5LCAxMywgMjM4LCAyNDcsIDksIDEzLCAyMzgsIDI0NiwgOSwgMTMsIAotICAgIDIzOCwgMjQ1LCA5LCAxMywgMjM4LCAyNDQsIDksIDEzLCAyMzgsIDI0MywgOSwgMTMsIDIzOCwgMjQyLCA5LCAxMywgMjM4LCAKLSAgICAyNDEsIDksIDEzLCAyMzgsIDI0MCwgOSwgMTMsIDIzOCwgMjM5LCA5LCAxMywgMjM4LCAyMzgsIDksIDEzLCAyMzgsIDIzNywgCi0gICAgOSwgMTMsIDIzOCwgMjM2LCA5LCAxMywgMjM4LCAyMzUsIDksIDEzLCAyMzgsIDIzNCwgOSwgMTMsIDIzOCwgMjMzLCA5LCAKLSAgICAxMywgMjM4LCAyMzIsIDksIDEzLCAyMzgsIDIzMSwgOSwgMTMsIDIzOCwgMjMwLCA5LCAxMywgMjM4LCAyMjksIDksIDEzLCAKLSAgICAyMzgsIDIyOCwgOSwgMTMsIDIzOCwgMjI3LCA5LCAxMywgMjM4LCAyMjYsIDksIDEzLCAyMzgsIDIyNSwgOSwgMTMsIDIzOCwgCi0gICAgMjI0LCA5LCAxMywgMjM4LCAyMjMsIDksIDEzLCAyMzgsIDIyMiwgOSwgMTMsIDIzOCwgMjIxLCA5LCAxMywgMjM4LCAyMjAsIAotICAgIDksIDEzLCAyMzgsIDIxOSwgOSwgMTMsIDIzOCwgMjE4LCA5LCAxMywgMjM4LCAyMTcsIDksIDEzLCAyMzgsIDIxNiwgOSwgCi0gICAgMTMsIDIzOCwgMjE1LCA5LCAxMywgMjM4LCAyMTQsIDksIDEzLCAyMzgsIDIxMywgOSwgMTMsIDIzOCwgMjEyLCA5LCAxMywgCi0gICAgMjM4LCAyMTEsIDksIDEzLCAyMzgsIDIxMCwgOSwgMTMsIDIzOCwgMjA5LCA5LCAxMywgMjM4LCAyMDgsIDksIDEzLCAyMzgsIAotICAgIDIwNywgOSwgMTMsIDIzOCwgMjA2LCA5LCAxMywgMjM4LCAyMDUsIDksIDEzLCAyMzgsIDIwNCwgOSwgMTMsIDIzOCwgMjAzLCAKLSAgICA5LCAxMywgMjM4LCAyMDIsIDksIDEzLCAyMzgsIDIwMSwgOSwgMTMsIDIzOCwgMjAwLCA5LCAxMywgMjM4LCAxOTksIDksIAotICAgIDEzLCAyMzgsIDE5OCwgOSwgMTMsIDIzOCwgMTk3LCA5LCAxMywgMjM4LCAxOTYsIDksIDEzLCAyMzgsIDE5NSwgOSwgMTMsIAotICAgIDIzOCwgMTk0LCA5LCAxMywgMjM4LCAxOTMsIDksIDEzLCAyMzgsIDE5MiwgOSwgMTMsIDIzOCwgMTkxLCA5LCAxMywgMjM4LCAKLSAgICAxOTAsIDksIDEzLCAyMzgsIDE4OSwgOSwgMTMsIDIzOCwgMTg4LCA5LCAxMywgMjM4LCAxODcsIDksIDEzLCAyMzgsIDE4NiwgCi0gICAgOSwgMTMsIDIzOCwgMTg1LCA5LCAxMywgMjM4LCAxODQsIDksIDEzLCAyMzgsIDE4MywgOSwgMTMsIDIzOCwgMTgyLCA5LCAKLSAgICAxMywgMjM4LCAxODEsIDksIDEzLCAyMzgsIDE4MCwgOSwgMTMsIDIzOCwgMTc5LCA5LCAxMywgMjM4LCAxNzgsIDksIDEzLCAKLSAgICAyMzgsIDE3NywgOSwgMTMsIDIzOCwgMTc2LCA5LCAxMywgMjM4LCAxNzUsIDksIDEzLCAyMzgsIDE3NCwgOSwgMTMsIDIzOCwgCi0gICAgMTczLCA5LCAxMywgMjM4LCAxNzIsIDksIDEzLCAyMzgsIDE3MSwgOSwgMTMsIDIzOCwgMTcwLCA5LCAxMywgMjM4LCAxNjksIAotICAgIDksIDEzLCAyMzgsIDE2OCwgOSwgMTMsIDIzOCwgMTY3LCA5LCAxMywgMjM4LCAxNjYsIDksIDEzLCAyMzgsIDE2NSwgOSwgCi0gICAgMTMsIDIzOCwgMTY0LCA5LCAxMywgMjM4LCAxNjMsIDksIDEzLCAyMzgsIDE2MiwgOSwgMTMsIDIzOCwgMTYxLCA5LCAxMywgCi0gICAgMjM4LCAxNjAsIDksIDEzLCAyMzgsIDE1OSwgOSwgMTMsIDIzOCwgMTU4LCA5LCAxMywgMjM4LCAxNTcsIDksIDEzLCAyMzgsIAotICAgIDE1NiwgOSwgMTMsIDIzOCwgMTU1LCA5LCAxMywgMjM4LCAxNTQsIDksIDEzLCAyMzgsIDE1MywgOSwgMTMsIDIzOCwgMTUyLCAKLSAgICA5LCAxMywgMjM4LCAxNTEsIDksIDEzLCAyMzgsIDE1MCwgOSwgMTMsIDIzOCwgMTQ5LCA5LCAxMywgMjM4LCAxNDgsIDksIAotICAgIDEzLCAyMzgsIDE0NywgOSwgMTMsIDIzOCwgMTQ2LCA5LCAxMywgMjM4LCAxNDUsIDksIDEzLCAyMzgsIDE0NCwgOSwgMTMsIAotICAgIDIzOCwgMTQzLCA5LCAxMywgMjM4LCAxNDIsIDksIDEzLCAyMzgsIDE0MSwgOSwgMTMsIDIzOCwgMTQwLCA5LCAxMywgMjM4LCAKLSAgICAxMzksIDksIDEzLCAyMzgsIDEzOCwgOSwgMTMsIDIzOCwgMTM3LCA5LCAxMywgMjM4LCAxMzYsIDksIDEzLCAyMzgsIDEzNSwgCi0gICAgOSwgMTMsIDIzOCwgMTM0LCA5LCAxMywgMjM4LCAxMzMsIDksIDEzLCAyMzgsIDEzMiwgOSwgMTMsIDIzOCwgMTMxLCA5LCAKLSAgICAxMywgMjM4LCAxMzAsIDksIDEzLCAyMzgsIDEyOSwgOSwgMTMsIDIzOCwgMTI4LCA5LCAxMywgMjM4LCAxMjcsIDksIDEzLCAKLSAgICAyMzgsIDEyNiwgOSwgMTMsIDIzOCwgMTI1LCA5LCAxMywgMjM4LCAxMjQsIDksIDEzLCAyMzgsIDEyMywgOSwgMTMsIDIzOCwgCi0gICAgMTIyLCA5LCAxMywgMjM4LCAxMjEsIDksIDEzLCAyMzgsIDEyMCwgOSwgMTMsIDIzOCwgMTE5LCA5LCAxMywgMjM4LCAxMTgsIAotICAgIDksIDEzLCAyMzgsIDExNywgOSwgMTMsIDIzOCwgMTE2LCA5LCAxMywgMjM4LCAxMTUsIDksIDEzLCAyMzgsIDExNCwgOSwgCi0gICAgMTMsIDIzOCwgMTEzLCA5LCAxMywgMjM4LCAxMTIsIDksIDEzLCAyMzgsIDExMSwgOSwgMTMsIDIzOCwgMTEwLCA5LCAxMywgCi0gICAgMjM4LCAxMDksIDksIDEzLCAyMzgsIDEwOCwgOSwgMTMsIDIzOCwgMTA3LCA5LCAxMywgMjM4LCAxMDYsIDksIDEzLCAyMzgsIAotICAgIDEwNSwgOSwgMTMsIDIzOCwgMTA0LCA5LCAxMywgMjM4LCAxMDMsIDksIDEzLCAyMzgsIDEwMiwgOSwgMTMsIDIzOCwgMTAxLCAKLSAgICA5LCAxMywgMjM4LCAxMDAsIDksIDEzLCAyMzgsIDk5LCA5LCAxMywgMjM4LCA5OCwgOSwgMTMsIDIzOCwgOTcsIDksIDEzLCAKLSAgICAyMzgsIDk2LCA5LCAxMywgMjM4LCA5NSwgOSwgMTMsIDIzOCwgOTQsIDksIDEzLCAyMzgsIDkzLCA5LCAxMywgMjM4LCA5MiwgCi0gICAgOSwgMTMsIDIzOCwgOTEsIDksIDEzLCAyMzgsIDkwLCA5LCAxMywgMjM4LCA4OSwgOSwgMTMsIDIzOCwgODgsIDksIDEzLCAKLSAgICAyMzgsIDg3LCA5LCAxMywgMjM4LCA4NiwgOSwgMTMsIDIzOCwgODUsIDksIDEzLCAyMzgsIDg0LCA5LCAxMywgMjM4LCA4MywgCi0gICAgOSwgMTMsIDIzOCwgODIsIDksIDEzLCAyMzgsIDgxLCA5LCAxMywgMjM4LCA4MCwgOSwgMTMsIDIzOCwgNzksIDksIDEzLCAKLSAgICAyMzgsIDc4LCA5LCAxMywgMjM4LCA3NywgOSwgMTMsIDIzOCwgNzYsIDksIDEzLCAyMzgsIDc1LCA5LCAxMywgMjM4LCA3NCwgCi0gICAgOSwgMTMsIDIzOCwgNzMsIDksIDEzLCAyMzgsIDcyLCA5LCAxMywgMjM4LCA3MSwgOSwgMTMsIDIzOCwgNzAsIDksIDEzLCAKLSAgICAyMzgsIDY5LCA5LCAxMywgMjM4LCA2OCwgOSwgMTMsIDIzOCwgNjcsIDksIDEzLCAyMzgsIDY2LCAyMzMsIDExNCwgMjE4LCAKLSAgICAzMywgMTI2LCAyMTksIDIwNiwgMTI2LCAyNDQsIDI1NCwgNzcsIDEyNiwgMjI0LCAxNDMsIDc3LCAxMjYsIDUwLCA1MiwgCi0gICAgMTI2LCAyNDcsIDg2LCA1MiwgMTI2LCAyMjYsIDU3LCA1MiwgMTI2LCAyNTQsIDM1LCAxMjYsIDI1MywgMjI2LCAxMjYsIDQyLCAKLSAgICAyMjYsIDEzMSwgMTI2LCA0NiwgMjI2LCAxMzEsIDEyNiwgMjUzLCAxMzIsIDEyNiwgOTQsIDUyLCAxMjYsIDI0OSwgMTU3LCAKLSAgICAxMjYsIDI0MCwgMTU5LCAxMjYsIDI0MywgMjAwLCAyMTksIDY5LCAxMjYsIDIxOSwgMjMxLCAxMjYsIDIxLCAyMTIsIDc5LCAKLSAgICAxMjYsIDIxLCAxMTYsIDEyNiwgMjEsIDEwOSwgMTI2LCAyMSwgMTY2LCAxMjYsIDIxLCAxNjMsIDEyNiwgMjEsIDE4MCwgCi0gICAgMTI2LCAyMSwgMTg5LCAxMjYsIDIxLCAxOTgsIDEyNiwgMjEsIDE5NSwgMTI2LCAyMSwgMjAwLCAxMjYsIDI0OSwgMTY0LCAKLSAgICAxMjYsIDIyMSwgNzAsIDEyNiwgMjMzLCAzOSwgNTIsIDEyNiwgMjQ1LCA2MSwgNTIsIDEyNiwgMjQyLCAxMDcsIDUyLCAxMjYsIAotICAgIDIyNCwgMTU4LCA3NywgMTI2LCAyNDksIDE1NiwgMjUzLCAxMjIsIDEyNiwgNywgNiwgMSwgNjEsIDEyNiwgNywgNiwgMSwgCi0gICAgMjUzLCA3NCwgMTI2LCA3LCA2LCAxLCAyNTAsIDI1MiwgMTI2LCA3LCA2LCAxLCAyNDksIDMsIDEyNiwgNywgNiwgMSwgNzQsIAotICAgIDEyNiwgNywgNiwgMSwgMjQ0LCAyMzAsIDEyNiwgNywgNiwgMSwgMjQzLCAxNzcsIDEyNiwgNywgNiwgMSwgMjQyLCA0MSwgCi0gICAgMTI2LCA3LCA2LCAxLCA3MiwgMTI2LCA3LCA2LCAxLCAyMzUsIDE0MiwgMTI2LCA3LCA2LCAxLCAyMzUsIDI3LCAxMjYsIDcsIAotICAgIDYsIDEsIDE1MCwgMTI2LCA3LCA2LCAxLCAxODMsIDEyNiwgNywgNiwgMSwgMjA0LCAxMjYsIDcsIDYsIDEsIDc1LCAxMjYsIAotICAgIDcsIDYsIDEsIDIyNiwgMjI5LCAxMjYsIDcsIDYsIDEsIDIyNCwgMjQwLCAxMjYsIDcsIDYsIDEsIDE0OSwgMTI2LCA3LCA2LCAKLSAgICAxLCAxOTcsIDEyNiwgNywgNiwgMSwgMjE4LCA5OSwgMTI2LCA3LCA2LCAxLCA2OSwgMTI2LCA3LCA2LCAxLCAyMTUsIDc5LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIxNCwgODIsIDEyNiwgNywgNiwgMSwgMjEzLCAxNjYsIDEyNiwgNywgNiwgMSwgMjEzLCAxMDUsIAotICAgIDEyNiwgNywgNiwgMSwgMjEyLCAxNTIsIDEyNiwgNDIsIDQxLCAxMjUsIDEyNiwgMjIzLCAyMDMsIDIxOSwgMjMxLCAxMjYsIAotICAgIDQ2LCA0MSwgMTI1LCAxMjYsIDI0OSwgMjI0LCAyNTQsIDE3NCwgMTI2LCAxMTUsIDIzMiwgMjQyLCAxMjYsIDI0MiwgMTE0LCAKLSAgICAyNTQsIDE3NCwgMTI2LCA3LCAzLCAxLCA2MSwgMTI2LCA3LCAzLCAxLCAyNTMsIDc0LCAxMjYsIDcsIDMsIDEsIDI1MCwgCi0gICAgMjUyLCAxMjYsIDcsIDMsIDEsIDI0OSwgMywgMTI2LCA3LCAzLCAxLCA3NCwgMTI2LCA3LCAzLCAxLCAyNDQsIDIzMCwgMTI2LCAKLSAgICA3LCAzLCAxLCAyNDMsIDE3NywgMTI2LCA3LCAzLCAxLCAyNDIsIDQxLCAxMjYsIDcsIDMsIDEsIDcyLCAxMjYsIDcsIDMsIDEsIAotICAgIDIzNSwgMTQyLCAxMjYsIDcsIDMsIDEsIDIzNSwgMjcsIDEyNiwgNywgMywgMSwgMTUwLCAxMjYsIDcsIDMsIDEsIDE4MywgCi0gICAgMTI2LCA3LCAzLCAxLCAyMDQsIDEyNiwgNywgMywgMSwgNzUsIDEyNiwgNywgMywgMSwgMjI2LCAyMjksIDEyNiwgNywgMywgCi0gICAgMSwgMjI0LCAyNDAsIDEyNiwgNywgMywgMSwgMTQ5LCAxMjYsIDcsIDMsIDEsIDE5NywgMTI2LCA3LCAzLCAxLCAyMTgsIDk5LCAKLSAgICAxMjYsIDcsIDMsIDEsIDY5LCAxMjYsIDcsIDMsIDEsIDIxNSwgNzksIDEyNiwgNywgMywgMSwgMjE0LCA4MiwgMTI2LCA3LCAKLSAgICAzLCAxLCAyMTMsIDE2NiwgMTI2LCA3LCAzLCAxLCAyMTMsIDEwNSwgMTI2LCA3LCAzLCAxLCAyMTIsIDE1MiwgMTI2LCA0MiwgCi0gICAgMjQ5LCA0MCwgMTI1LCAxMjYsIDcxLCAyMzIsIDI0MiwgMTI2LCA0NiwgMjQ5LCA0MCwgMTI1LCAxMjYsIDIxNywgNDIsIAotICAgIDI1MCwgMTk0LCAyMTgsIDMzLCA0MywgMjIxLCAyNTQsIDQzLCAyMjEsIDI0MywgNDMsIDIyMSwgMjMyLCA0MywgMjIxLCAKLSAgICAyMjAsIDQzLCAyMjEsIDIwOSwgNDMsIDIyMSwgMTk4LCA0MywgMjIxLCAxODcsIDQzLCAyMjEsIDE3NiwgNDMsIDIyMSwgCi0gICAgMTY1LCA0MywgMjIxLCAxNTcsIDQzLCAyMjEsIDE1NiwgNDMsIDIyMSwgMTU1LCA0MywgMjIxLCAxNTQsIDQzLCAyMjEsIAotICAgIDE1MiwgNDMsIDIyMSwgMTUxLCA0MywgMjIxLCAxNTAsIDQzLCAyMjEsIDE0OSwgNDMsIDIyMSwgMTQ4LCA0MywgMjIxLCAKLSAgICAxNDcsIDQzLCAyMjEsIDE0NiwgNDMsIDIyMSwgMTQ1LCA0MywgMjIxLCAxNDQsIDQzLCAyMjEsIDE0MywgNDMsIDIyMSwgCi0gICAgMTQxLCA0MywgMjIxLCAxNDAsIDQzLCAyMjEsIDEzOSwgNDMsIDIyMSwgMTM4LCA0MywgMjIxLCAxMzcsIDQzLCAyMjEsIAotICAgIDEzNiwgNDMsIDIyMSwgMTM1LCA0MywgMjIxLCAxMzQsIDQzLCAyMjEsIDEzMywgNDMsIDIyMSwgMTMyLCA0MywgMjIxLCAKLSAgICAxMzAsIDQzLCAyMjEsIDEyOSwgNDMsIDIyMSwgMTI4LCA0MywgMjIxLCAxMjcsIDQzLCAyMjEsIDEyNiwgNDMsIDIyMSwgCi0gICAgMTI1LCA0MywgMjIxLCAxMjQsIDQzLCAyMjEsIDEyMywgNDMsIDIyMSwgMTIyLCA0MywgMjIxLCAxMjEsIDQzLCAyMjEsIAotICAgIDExOSwgNDMsIDIyMSwgMTE4LCA0MywgMjIxLCAxMTcsIDQzLCAyMjEsIDExNiwgNDMsIDIyMSwgMTE1LCA0MywgMjIxLCAKLSAgICAxMTQsIDQzLCAyMjEsIDExMywgNDMsIDIyMSwgMTEyLCA0MywgMjIxLCAxMTEsIDQzLCAyMjEsIDExMCwgNDMsIDIyMSwgCi0gICAgMTA4LCA0MywgMjIxLCAxMDcsIDQzLCAyMjEsIDEwNiwgNDMsIDIyMSwgMTA1LCA0MywgMjIxLCAxMDQsIDQzLCAyMjEsIAotICAgIDEwMywgNDMsIDIyMSwgMTAyLCA0MywgMjIxLCAxMDEsIDQzLCAyMjEsIDEwMCwgNDMsIDIyMSwgOTksIDQzLCAyMjEsIDk3LCAKLSAgICA0MywgMjIxLCA5NiwgNDMsIDIyMSwgOTUsIDQzLCAyMjEsIDk0LCA0MywgMjIxLCA5MywgNDMsIDIyMSwgOTIsIDQzLCAyMjEsIAotICAgIDkxLCA0MywgMjIxLCA5MCwgNDMsIDIyMSwgODksIDQzLCAyMjEsIDg4LCA0MywgMjIxLCA4NiwgNDMsIDIyMSwgODUsIDQzLCAKLSAgICAyMjEsIDg0LCA0MywgMjIxLCA4MywgNDMsIDIyMSwgODIsIDQzLCAyMjEsIDgxLCA0MywgMjIxLCA4MCwgNDMsIDIyMSwgNzksIAotICAgIDQzLCAyMjEsIDc4LCA0MywgMjIxLCA3NywgNDMsIDIyMiwgNzQsIDQzLCAyMjIsIDczLCA0MywgMjIyLCA3MiwgNDMsIDIyMiwgCi0gICAgNzEsIDQzLCAyMjIsIDcwLCA0MywgMjIyLCA2OSwgNDMsIDIyMiwgNjgsIDQzLCAyMjIsIDY3LCA0MywgMjIyLCA2NiwgNDMsIAotICAgIDIyMiwgNjUsIDQzLCAyMjIsIDYzLCA0MywgMjIyLCA2MiwgNDMsIDIyMiwgNjEsIDQzLCAyMjIsIDYwLCA0MywgMjIyLCA1OSwgCi0gICAgNDMsIDIyMiwgNTgsIDQzLCAyMjIsIDU3LCA0MywgMjIyLCA1NiwgNDMsIDIyMiwgNTUsIDQzLCAyMjIsIDU0LCA0MywgMjIyLCAKLSAgICA1MiwgNDMsIDIyMiwgNTEsIDQzLCAyMjIsIDUwLCA0MywgMjIyLCA0OSwgNDMsIDIyMiwgNDgsIDQzLCAyMjIsIDQ3LCA0MywgCi0gICAgMjIyLCA0NiwgNDMsIDIyMiwgNDUsIDQzLCAyMjIsIDQ0LCA0MywgMjIyLCA0MywgNDMsIDIyMiwgNDEsIDQzLCAyMjIsIDQwLCAKLSAgICA0MywgMjIyLCAzOSwgNDMsIDIyMiwgMzgsIDQzLCAyMjIsIDM3LCA0MywgMjIyLCAzNiwgNDMsIDIyMiwgMzUsIDQzLCAyMjIsIAotICAgIDM0LCA0MywgMjIyLCAzMywgNDMsIDIyMiwgMzIsIDQzLCAyMjIsIDMwLCA0MywgMjIyLCAyOSwgNDMsIDIyMiwgMjgsIDQzLCAKLSAgICAyMjIsIDI3LCA0MywgMjIyLCAyNiwgNDMsIDIyMiwgMjUsIDQzLCAyMjIsIDI0LCA0MywgMjIyLCAyMywgNDMsIDIyMiwgMjIsIAotICAgIDQzLCAyMjIsIDIxLCA0MywgMjIyLCAxOSwgNDMsIDIyMiwgMTgsIDQzLCAyMjIsIDE3LCA0MywgMjIyLCAxNiwgNDMsIDIyMiwgCi0gICAgMTUsIDQzLCAyMjIsIDE0LCA0MywgMjIyLCAxMywgNDMsIDIyMiwgMTIsIDQzLCAyMjIsIDExLCA0MywgMjIyLCAxMCwgNDMsIAotICAgIDIyMiwgOCwgNDMsIDIyMiwgNywgNDMsIDIyMiwgNiwgNDMsIDIyMiwgNSwgNDMsIDIyMiwgNCwgNDMsIDIyMiwgMywgNDMsIAotICAgIDIyMiwgMiwgNDMsIDIyMiwgMSwgNDMsIDIyMiwgMCwgNDMsIDIyMSwgMjU1LCA0MywgMjIxLCAyNTMsIDQzLCAyMjEsIDI1MiwgCi0gICAgNDMsIDIyMSwgMjUxLCA0MywgMjIxLCAyNTAsIDQzLCAyMjEsIDI0OSwgNDMsIDIyMSwgMjQ4LCA0MywgMjIxLCAyNDcsIDQzLCAKLSAgICAyMjEsIDI0NiwgNDMsIDIyMSwgMjQ1LCA0MywgMjIxLCAyNDQsIDQzLCAyMjEsIDI0MiwgNDMsIDIyMSwgMjQxLCA0MywgCi0gICAgMjIxLCAyNDAsIDQzLCAyMjEsIDIzOSwgNDMsIDIyMSwgMjM4LCA0MywgMjIxLCAyMzcsIDQzLCAyMjEsIDIzNiwgNDMsIAotICAgIDIyMSwgMjM1LCA0MywgMjIxLCAyMzQsIDQzLCAyMjEsIDIzMywgNDMsIDIyMSwgMjMxLCA0MywgMjIxLCAyMzAsIDQzLCAKLSAgICAyMjEsIDIyOSwgNDMsIDIyMSwgMjI4LCA0MywgMjIxLCAyMjcsIDQzLCAyMjEsIDIyNiwgNDMsIDIyMSwgMjI1LCA0MywgCi0gICAgMjIxLCAyMjQsIDQzLCAyMjEsIDIyMywgNDMsIDIyMSwgMjIyLCA0MywgMjIxLCAyMTksIDQzLCAyMjEsIDIxOCwgNDMsIAotICAgIDIyMSwgMjE3LCA0MywgMjIxLCAyMTYsIDQzLCAyMjEsIDIxNSwgNDMsIDIyMSwgMjE0LCA0MywgMjIxLCAyMTMsIDQzLCAKLSAgICAyMjEsIDIxMiwgNDMsIDIyMSwgMjExLCA0MywgMjIxLCAyMTAsIDQzLCAyMjEsIDIwOCwgNDMsIDIyMSwgMjA3LCA0MywgCi0gICAgMjIxLCAyMDYsIDQzLCAyMjEsIDIwNSwgNDMsIDIyMSwgMjA0LCA0MywgMjIxLCAyMDMsIDQzLCAyMjEsIDIwMiwgNDMsIAotICAgIDIyMSwgMjAxLCA0MywgMjIxLCAyMDAsIDQzLCAyMjEsIDE5OSwgNDMsIDIyMSwgMTk3LCA0MywgMjIxLCAxOTYsIDQzLCAKLSAgICAyMjEsIDE5NSwgNDMsIDIyMSwgMTk0LCA0MywgMjIxLCAxOTMsIDQzLCAyMjEsIDE5MiwgNDMsIDIyMSwgMTkxLCA0MywgCi0gICAgMjIxLCAxOTAsIDQzLCAyMjEsIDE4OSwgNDMsIDIyMSwgMTg4LCA0MywgMjIxLCAxODYsIDQzLCAyMjEsIDE4NSwgNDMsIAotICAgIDIyMSwgMTg0LCA0MywgMjIxLCAxODMsIDQzLCAyMjEsIDE4MiwgNDMsIDIyMSwgMTgxLCA0MywgMjIxLCAxODAsIDQzLCAKLSAgICAyMjEsIDE3OSwgNDMsIDIyMSwgMTc4LCA0MywgMjIxLCAxNzcsIDQzLCAyMjEsIDE3NSwgNDMsIDIyMSwgMTc0LCA0MywgCi0gICAgMjIxLCAxNzMsIDQzLCAyMjEsIDE3MiwgNDMsIDIyMSwgMTcxLCA0MywgMjIxLCAxNzAsIDQzLCAyMjEsIDE2OSwgNDMsIAotICAgIDIyMSwgMTY4LCA0MywgMjIxLCAxNjcsIDQzLCAyMjEsIDE2NiwgNDMsIDIyMSwgMTY0LCA0MywgMjIxLCAxNjMsIDQzLCAKLSAgICAyMjEsIDE2MiwgNDMsIDIyMSwgMTYxLCA0MywgMjIxLCAxNjAsIDQzLCAyMjEsIDE1OSwgNDMsIDIyMSwgMTU4LCAKKyAgICAwLCAyMTksIDE4LCAyNDUsIDMxLCA3OCwgMjIzLCAyNTQsIDc4LCA1NCwgNTAsIDI0NywgMTMyLCA1MCwgMjI1LCAxODIsIAorICAgIDUwLCAyNTQsIDEyNiwgMjU0LCA1NywgNDMsIDIyNiwgMywgNDQsIDIyNiwgMywgMjUzLCAyMTYsIDk2LCA1MCwgMjQ5LCAKKyAgICAyMTksIDI0MCwgMTY3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxOSwgNDYsIDIxLCAyMTAsIDg2LCAyMSwgMTEwLCAyMSwgCisgICAgMTA1LCAyMSwgMTU4LCAyMSwgMTYxLCAyMSwgMTg5LCAyMSwgMTk0LCAyMSwgMTk4LCAyMSwgMTk1LCAyMSwgMjAwLCAyNDksIAorICAgIDIyNiwgMjIwLCAxNTAsIDIzMywgMTUsIDUwLCAyNDUsIDk4LCA1MCwgMjQyLCAxMzAsIDUwLCAyMjQsIDEzLCA3OCwgMjQ5LCAKKyAgICAyMTcsIDI1MywgMjA2LCA3LCA2LCAxLCA2MSwgNywgNiwgMSwgMjUzLCAxNTgsIDcsIDYsIDEsIDI1MSwgNjYsIDcsIDYsIDEsIAorICAgIDI0OSwgNjAsIDcsIDYsIDEsIDc1LCA3LCA2LCAxLCAyNDUsIDYsIDcsIDYsIDEsIDI0MywgMjAyLCA3LCA2LCAxLCAyNDIsIAorICAgIDYwLCA3LCA2LCAxLCA3MywgNywgNiwgMSwgMjM1LCAxNDQsIDcsIDYsIDEsIDIzNSwgMjMsIDcsIDYsIDEsIDE1NiwgNywgNiwgCisgICAgMSwgMTkzLCA3LCA2LCAxLCAyMzAsIDI1LCA3LCA2LCAxLCA3NiwgNywgNiwgMSwgMjI2LCAxMDUsIDcsIDYsIDEsIDIyNCwgCisgICAgOTYsIDcsIDYsIDEsIDE1MywgNywgNiwgMSwgMjIyLCA5MSwgNywgNiwgMSwgMjE3LCAxNTIsIDcsIDYsIDEsIDcwLCA3LCA2LCAKKyAgICAxLCAyMTQsIDEwNSwgNywgNiwgMSwgMjEyLCA5OCwgNywgNiwgMSwgMjExLCAxNzgsIDcsIDYsIDEsIDIxMSwgMTE3LCA3LCAKKyAgICA2LCAxLCAyMTAsIDE1OSwgNDMsIDQyLCAxMjcsIDIyMywgNTAsIDIxOSwgNDYsIDQ0LCA0MiwgMTI3LCAyNTAsIDMxLCAyNTUsIAorICAgIDE0LCAxMjEsIDIzMiwgMjEzLCAyNDIsIDEzNywgMjU1LCAxNCwgNywgNCwgMSwgNjEsIDcsIDQsIDEsIDI1MywgMTU4LCA3LCAKKyAgICA0LCAxLCAyNTEsIDY2LCA3LCA0LCAxLCAyNDksIDYwLCA3LCA0LCAxLCA3NSwgNywgNCwgMSwgMjQ1LCA2LCA3LCA0LCAxLCAKKyAgICAyNDMsIDIwMiwgNywgNCwgMSwgMjQyLCA2MCwgNywgNCwgMSwgNzMsIDcsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMzUsIAorICAgIDIzLCA3LCA0LCAxLCAxNTYsIDcsIDQsIDEsIDE5MywgNywgNCwgMSwgMjMwLCAyNSwgNywgNCwgMSwgNzYsIDcsIDQsIDEsIAorICAgIDIyNiwgMTA1LCA3LCA0LCAxLCAyMjQsIDk2LCA3LCA0LCAxLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTEsIDcsIDQsIDEsIDIxNywgCisgICAgMTUyLCA3LCA0LCAxLCA3MCwgNywgNCwgMSwgMjE0LCAxMDUsIDcsIDQsIDEsIDIxMiwgOTgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKKyAgICA3LCA0LCAxLCAyMTEsIDExNywgNywgNCwgMSwgMjEwLCAxNTksIDQzLCAyNDksIDk5LCAxMjcsIDY3LCAyMzIsIDIxMywgNDQsIAorICAgIDI0OSwgOTksIDEyNywgMTgyLCAyMjgsIDczLCAyMTksIDE4LCAyMzUsIDE5MywgMjQ1LCAzMSwgNzgsIDI1MCwgMTc2LCA1MCwgCisgICAgMjI0LCAyMjgsIDUwLCAyNDksIDk4LCA1MCwgMjExLCA0MCwgNTAsIDI1MSwgMTM1LCAxMzAsIDIyMSwgMTczLCA1MCwgMjQ4LCAKKyAgICAxLCAyNDksIDE2MywgNTAsIDI0NCwgMTM2LCAyMjYsIDE1NCwgMjM1LCAyMzgsIDIzMywgNDIsIDUyLCAyNTQsIDExMCwgCisgICAgMjIzLCAyNTQsIDc4LCAyMjgsIDUyLCA1MCwgMjE5LCA1MiwgMjQwLCAxNjgsIDIyMywgMTAyLCA1MCwgMjMxLCAyMzIsIAorICAgIDI0OCwgNzEsIDUwLCAyMjUsIDIxLCA1MCwgMjE4LCAyMywgMTA1LCAyMTgsIDIzLCAxNTgsIDI1NSwgMywgMjU1LCAxNCwgCisgICAgMjMwLCAyMjgsIDUwLCAyMjUsIDY4LCA1MCwgMjMwLCAyMjQsIDI0NywgMTIwLCAyNTAsIDE4MywgMjE4LCAyMywgMTEwLCAKKyAgICAyMzEsIDE0OCwgMjI2LCAxNTQsIDIzNSwgMjM4LCAyMjIsIDI0NywgNTIsIDI1NCwgMTEwLCAyMjMsIDI1NCwgNzgsIDIxMiwgCisgICAgMTE0LCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAyMTIsIDExNCwgMjQ0LCAKKyAgICAyLCAxMzQsIDIyNCwgMTksIDIzNSwgMTkzLCAyMjQsIDEzLCA3OCwgNywgNiwgMSwgMTE1LCAyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMTE1LCAyLCAxODIsIDcsIDYsIDEsIAorICAgIDExNSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA0OCwgNywgNiwgMSwgMjU0LCAyNDMsIDcsIDYsIAorICAgIDEsIDI1MSwgNjcsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAxNjAsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIDE0MiwgCisgICAgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAxNjAsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIAorICAgIDI0MiwgMTM2LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjUwLCAzMCwgNywgNiwgCisgICAgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjQ1LCA1OSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMTgyLCA3LCA2LCAKKyAgICAxLCAxNDQsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIDIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDMwLCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDE4MiwgNywgNiwgMSwgMTQ0LCAyLCAyNDgsIDEsIDIzMCwgODQsIDUwLCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDkxLCA3LCA2LCAxLCAxMDQsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIDIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAKKyAgICAyNTAsIDMwLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDE0MiwgNywgNiwgMSwgCisgICAgMjE2LCAxNTEsIDcsIDQsIDEsIDIyMCwgNzYsIDIyMiwgOTEsIDcsIDQsIDEsIDExNSwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIAorICAgIDExNSwgMiwgMTQyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDExNSwgMiwgMTgyLCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDI0OCwgMSwgNywgNCwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDI1NCwgMjQzLCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMTYwLCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAxNDIsIAorICAgIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMTYwLCAyLCAyNDgsIDEsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAKKyAgICAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDI1MCwgMzAsIDcsIDQsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDI0NSwgNTksIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDE4MiwgNywgNCwgCisgICAgMSwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMCwgNywgCisgICAgNCwgMSwgMTQ0LCAyLCAxODIsIDcsIDQsIDEsIDE0NCwgMiwgMjQ4LCAxLCAyNDcsIDE2OSwgNTAsIDcsIDQsIDEsIDE0NCwgCisgICAgMiwgOTEsIDcsIDQsIDEsIDEwNCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIAorICAgIDI1MCwgMzAsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMTQyLCA3LCA0LCAxLCAKKyAgICAyMTYsIDE1MSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0OCwgMSwgNywgNiwgMSwgMTE1LCAyLCAyMzEsIDIzMiwgNywgNCwgCisgICAgMSwgMTE1LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIAorICAgIDE0NiwgNywgNiwgMSwgMTE1LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTE1LCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMjUxLCAKKyAgICA2NywgMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxNDIsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMzAsIDcsIDQsIAorICAgIDEsIDI1MSwgNjcsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjUxLCA2NywgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjUxLCA2NywgMiwgMjUwLCAyMzQsIDcsIAorICAgIDYsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQ5LCAKKyAgICA2MSwgMiwgOTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDkxLCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNjAsIDIsIDI1MSwgMTQ2LCAKKyAgICA3LCA2LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjI2LCAKKyAgICAyMjQsIDcsIDQsIDEsIDE2MCwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDE2MCwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAKKyAgICAzMCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjUxLCAxNDYsIDcsIDYsIAorICAgIDEsIDI0MywgMjAzLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDI0MywgMjAzLCAKKyAgICAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTAsIAorICAgIDMwLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCA5MSwgNywgNCwgMSwgMjQyLCAKKyAgICA2MSwgMiwgOTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAxODIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAxODIsIDcsIDYsIDEsIAorICAgIDI0MCwgMTU0LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyNDAsIDE1NCwgCisgICAgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgCisgICAgMjI0LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCA1OSwgNDgsIDcsIDQsIAorICAgIDEsIDI0NywgMTE5LCA3MywgNywgNiwgMjcsIDIzNiwgMzEsIDcsIDQsIDI3LCAyMzYsIDMxLCA3LCA2LCAxLCAyMzUsIDE0NSwgCisgICAgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjM1LCAxNDUsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMTgzLCAKKyAgICA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjMzLCAyMzksIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxNDIsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgCisgICAgMjMzLCAxNDksIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgNywgNCwgMSwgMjMzLCAxNDksIAorICAgIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDkxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgCisgICAgOTEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE0MiwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMTQyLCA3LCA2LCAxLCAyMzAsIDI2LCAKKyAgICAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDI1MCwgCisgICAgMjM0LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjMwLCAyNiwgMjI0LCAyMDQsIDI1MSwgNzgsIAorICAgIDI1NCwgNTcsIDcsIDYsIDEsIDI0NSwgMTM4LCA3LCA0LCAxLCAyNDUsIDEzOCwgNywgNiwgMSwgMTQ0LCAyLCAyMzEsIDIzMiwgCisgICAgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTQ0LCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTQ0LCAyLCAKKyAgICAyNTEsIDE0NiwgNywgNiwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDUyLCAxNDIsIDcsIDYsIDI3LCAKKyAgICAyMjYsIDIzNCwgNywgNCwgMjcsIDIyNiwgMjM0LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMTQyLCA3LCA0LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgMTQyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNTAsIAorICAgIDE4MywgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAyMzQsIDcsIAorICAgIDYsIDEsIDIyMiwgOTIsIDIsIDE0MiwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMTQyLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAKKyAgICAyNTAsIDMwLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDE4MywgNywgCisgICAgNCwgMSwgMjIyLCA5MiwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMjIsIAorICAgIDkyLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgCisgICAgMjUwLCAxODMsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMjM0LCAKKyAgICA3LCA2LCAxLCAyMTcsIDE1MywgMiwgOTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCA5MSwgNywgNiwgMSwgMTA0LCAyLCAxODIsIAorICAgIDcsIDQsIDEsIDEwNCwgMiwgMTgyLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAxMDQsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMDQsIDIsIDI1MSwgMTQ2LCA3LCA2LCAxLCAxMDQsIAorICAgIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDYsIDEsIDEwNCwgMiwgNTIsIDE0MiwgCisgICAgNywgNCwgMSwgMTA0LCAyLCA1MiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI0LCA3LCA0LCAxLCAxMDQsIDIsIAorICAgIDIyNiwgMjI0LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNTAsIDMwLCA3LCAKKyAgICA2LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIxMSwgCisgICAgMTE4LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAxNDIsIDcsIAorICAgIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMCwgCisgICAgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxOTksIDIyMiwgOTEsIAorICAgIDcsIDQsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgNTcsIDIsIDEwMywgNywgNiwgMSwgNTcsIDIsIDIxNiwgMTEsIDcsIDQsIAorICAgIDEsIDU3LCAyLCAyMTYsIDExLCA3LCA2LCAxLCAxMzgsIDE5NCwgNywgNCwgMSwgMTM4LCAxOTQsIDcsIDYsIDEsIDIwNCwgCisgICAgNzYsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDEwMywgNywgNCwgMSwgMjUxLCA2NywgMiwgMTAzLCA3LCA2LCAxLCAyNTQsIAorICAgIDIxOSwgMjQ5LCA2MCwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgMTAzLCA3LCA2LCAxLCAyNDksIDYxLCAyLCAyMTYsIDExLCA3LCAKKyAgICA0LCAxLCAyNDksIDYxLCAyLCAyMTYsIDExLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDgsIDU0LCA3LCA2LCAxLCAyMjMsIDQ5LCAKKyAgICA3NSwgNywgNiwgMSwgMjIxLCAxOTUsIDcsIDYsIDEsIDIwNCwgNzUsIDcsIDYsIDEsIDI0NSwgNywgMiwgMTAzLCA3LCA0LCAKKyAgICAxLCAyNDUsIDcsIDIsIDEwMywgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDEwMywgNywgNiwgMSwgMjQzLCAxMDcsIDcsIDQsIDEsIAorICAgIDI0MCwgMjAxLCA3LCA2LCAxLCAyMzUsIDE4NSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDkxLCA3LCA2LCAxLCAyMzUsIDI0LCAKKyAgICAyLCAxMDMsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDEwMywgNywgNCwgMSwgMjMzLCAxNDksIDIsIDEzMCwgNywgNCwgMSwgCisgICAgMjMzLCAxMDAsIDIsIDkxLCA3LCA2LCAxLCAyMTUsIDk0LCAxOTMsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDcsIAorICAgIDQsIDEsIDIzMCwgMjYsIDIsIDE5OSwgNDQsIDIzMywgMzYsIDcsIDYsIDEsIDE0NCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyNDAsIDI0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OCwgNywgNiwgMSwgMjI2LCAyMTksIDcsIDQsIAorICAgIDEsIDIyNiwgMjE5LCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMTAzLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMTAzLCA3LCAxLCAKKyAgICAyMTAsIDIxNCwgNywgNiwgMSwgMTM4LCAxMDUsIDcsIDQsIDEsIDEzOCwgMTA1LCA3LCA2LCAxLCAyNDUsIDc1LCA3LCAxLCAKKyAgICAyMjMsIDQ5LCAyNDUsIDc2LCAyMzIsIDEyMywgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDIyNiwgNjYsIDEwMywgNywgNiwgMSwgCisgICAgMjE3LCAxNTMsIDIsIDEwMywgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDEwMywgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDIyMywgCisgICAgNTUsIDEwMywgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OCwgNywgNiwgMSwgCisgICAgMjE0LCAxNTcsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAxMDMsIDcsIDQsIDEsIAorICAgIDIxMSwgMTE4LCAyLCAxMDMsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA5MSwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCAKKyAgICA2LCAxLCAyNDUsIDgsIDcsIDYsIDEsIDI0NSwgOSwgMjIzLCA0OCwgNywgNCwgMSwgMjQ1LCA5LCAyMjMsIDQ4LCA3LCA0LCAKKyAgICAxLCAyNDUsIDksIDIsIDIxNywgNzcsIDcsIDEsIDExMywgMiwgOTEsIDcsIDYsIDEsIDEzOCwgMTg5LCA3LCA0LCAxLCAxMzgsIAorICAgIDE4OSwgNywgMSwgMjM1LCAxOTMsIDI0MiwgMTgwLCAyMTgsIDEzMCwgMiwgOTEsIDcsIDEsIDIxMSwgMTgxLCA3LCAxLCAKKyAgICAyNDgsIDQ3LCAyNTAsIDExLCA3LCAxLCAyMzMsIDc3LCAyNTAsIDExLCA3LCAxLCAyNTQsIDEzNywgMjUwLCAxMSwgNywgMSwgCisgICAgMjIzLCA1NSwgMjUwLCAxMSwgNywgNiwgMSwgMjQ2LCA0MCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDQsIAorICAgIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQ2LCA0MCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMiwgCisgICAgMTg4LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgNCwgMSwgMjM1LCAxNDQsIDcsIDQsIDEsIDIzMiwgMTg4LCA3LCA2LCAxLCAKKyAgICAyMjgsIDE4NiwgNywgNiwgMSwgMjMwLCAyNiwgMiwgNCwgMSwgMjM1LCAxNDQsIDcsIDQsIDEsIDIyOCwgMTg2LCA3LCA2LCAKKyAgICAxLCAxMTUsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgCisgICAgMjUwLCAyMzQsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDIzNCwgNywgCisgICAgNCwgMSwgMTQ0LCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTA0LCAyLCAyNTAsIAorICAgIDIzNCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAKKyAgICAyMzEsIDIzMiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIAorICAgIDI1MCwgMjM0LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTUsIDk0LCA3NSwgNywgNiwgMSwgMTE1LCAyLCAyNDgsIDIsIDIyLCAyMzEsIAorICAgIDIzMiwgNywgNCwgMSwgMTE1LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTE1LCAyLCA1OSwgNzcsIDIyLCAKKyAgICAyMzEsIDIzMiwgNywgNCwgMSwgMTE1LCAyLCA1OSwgNzcsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjU0LCAyNDQsIDIsIAorICAgIDIzMSwgMjMyLCA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCA5MSwgNywgNCwgCisgICAgMSwgMjQzLCAyMDMsIDIsIDkxLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMjM0LCAKKyAgICA3LCA2LCAxLCAxNDQsIDIsIDIyNiwgMjI0LCA3LCA0LCAxLCAxNDQsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDIyNiwgMjI1LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgMjI2LCAyMjUsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgCisgICAgMjQ1LCA5LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQ1LCA5LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjM1LCAxNDUsIDIsIAorICAgIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDYsIDM5LCA3LCA2LCAxLCAyNDksIDYxLCAyLCA0LCAxLCAyMTAsIDE1OSwgNywgNCwgMSwgCisgICAgMjQ2LCAzOSwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDE0MiwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDE0MiwgNywgNiwgMSwgCisgICAgMjQwLCAxOTksIDcsIDYsIDEsIDIxMSwgMTgxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjMwLCAKKyAgICAyNiwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDc3LCAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIDIsIAorICAgIDIyMiwgMjM0LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMjU0LCAyNDQsIDIsIDE0MiwgNywgNCwgMSwgMjU0LCAyNDQsIDIsIAorICAgIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMTgsIDEwMywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMTgsIDEwMywgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTE1LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAKKyAgICAxLCAxMTUsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTE1LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIAorICAgIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAKKyAgICAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDE2MCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgCisgICAgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNDQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgCisgICAgNiwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIAorICAgIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTA0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIDEsIDIyMiwgCisgICAgOTIsIDIsIDI0OSwgMjIwLCA1MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjQ5LCAyMjAsIDUxLCA3LCA2LCAxLCAyMTcsIAorICAgIDE1MywgMiwgMjQ5LCAyMjAsIDUxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjQ5LCAyMjAsIDUxLCA3LCA2LCAxLCAyMTAsIAorICAgIDIzMSwgNywgNCwgMSwgMjEwLCAyMzEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDIsIDYxLCAKKyAgICAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMTk5LCA0NCwgMjMzLCAzNiwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgCisgICAgMjQ5LCAxMDAsIDcsIDYsIDEsIDIyNiwgMTM0LCA3LCA0LCAxLCAyMjYsIDEzNCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNiwgMSwgMTE1LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDExNSwgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAKKyAgICAxNDQsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjMxLCAKKyAgICAyMzIsIDcsIDYsIDEsIDE0NCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICA1OSwgNzcsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNzcsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgCisgICAgMjExLCAxMTgsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNDksIAorICAgIDEwMCwgNywgNCwgMSwgMjQ3LCAxMTksIDIzNSwgMTQ0LCA3LCA0LCAxLCAyNDgsIDE0MywgMjQ3LCAyMjAsIDcsIDQsIDEsIAorICAgIDIyNCwgMzEsIDI0NywgMjIwLCA3LCA2LCAxLCAxMTUsIDIsIDkxLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCA5MSwgNywgNCwgMSwgCisgICAgMjUxLCA2NywgMiwgOTEsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAxMzAsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNDcsIAorICAgIDI1NSwgOTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDIxNywgMjUwLCAyMTcsIDc3LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgCisgICAgMjE3LCAyNTAsIDIxNywgNzcsIDcsIDYsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgNCwgMSwgMjQyLCAxODAsIDIxOCwgCisgICAgMTI5LCA3LCA2LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMTMwLCA3LCA2LCAxLCAyMTUsIDk0LCAyMTQsIDEwNSwgCisgICAgNywgNiwgMSwgMTYwLCAyLCA5MSwgNywgNCwgMSwgMTYwLCAyLCA5MSwgNywgNiwgMSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA0LCAKKyAgICAxLCAyMzUsIDE0NSwgMiwgOTEsIDcsIDYsIDEsIDQsIDIyNCwgOTcsIDIsIDI0MSwgNTIsIDIxNywgNzcsIDcsIDQsIDEsIAorICAgIDIyNCwgOTcsIDIsIDI0MSwgNTIsIDIxNywgNzcsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA5MSwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDkxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgOTEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgCisgICAgMjE1LCA5NCwgNjEsIDcsIDQsIDEsIDI1NCwgMTQzLCA3LCA0LCAxLCAyMTUsIDk0LCAyNTQsIDE0MywgNywgNCwgMSwgNTcsIAorICAgIDIsIDEwMywgNywgNCwgMSwgMjA0LCA3NiwgNywgNCwgMSwgMjUxLCA2NywgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDI0OSwgCisgICAgNjEsIDIsIDIxNywgNzcsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDEwMywgNywgNCwgMSwgMjIzLCA0OSwgNzUsIDcsIDQsIDEsIAorICAgIDIyMSwgMTk1LCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc1LCA3LCA0LCAxLCAyMjMsIDQ5LCAKKyAgICAyMDQsIDc1LCA3LCA0LCAxLCAyMjMsIDQ5LCAyMDQsIDE2MCwgMiwgMTAzLCA3LCA0LCAxLCAyNTAsIDAsIDIyMywgNDksIAorICAgIDIwNCwgNzUsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgOTEsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAxMDMsIAorICAgIDcsIDQsIDEsIDExOSwgMjQzLCAyMDIsIDcsIDEsIDQsIDYsIDI0MywgMjAyLCA3LCA0LCAxLCAyNDMsIDEwNywgNywgNCwgMSwgCisgICAgMjIzLCAxNTEsIDI0MCwgMjQ4LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYwLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAxMDMsIAorICAgIDcsIDQsIDEsIDI0MSwgMjA4LCAyLCAxMDMsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAxODUsIAorICAgIDcsIDEsIDQsIDYsIDczLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjMzLCAxNDksIAorICAgIDIsIDI1MiwgNDEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIzMywgMSwgNywgNCwgMSwgCisgICAgMjE1LCA5NCwgMTkzLCA3LCA0LCAxLCAyMTUsIDk0LCAyMzIsIDUwLCAyLCAxOTksIDIzMywgMzYsIDcsIDQsIDEsIDIzMiwgCisgICAgNTAsIDIsIDEwMywgNywgNCwgMSwgMjMwLCAyNiwgMiwgNDMsIDEwMywgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjIzLCA1NSwgCisgICAgMTAzLCA3LCAxLCA0LCA2LCAyMzAsIDI1LCA3LCA0LCAxLCAyNTIsIDEzNCwgNzYsIDcsIDEsIDQsIDYsIDIyNiwgMjM0LCA3LCAKKyAgICA0LCAxLCAyNTAsIDAsIDIyNiwgMjAxLCA3LCA0LCAxLCAyMjUsIDEzMywgNywgNCwgMSwgMjE1LCA5NCwgMTUzLCA3LCA0LCAKKyAgICAxLCAyMTUsIDk0LCAyMjMsIDIyNCwgMiwgMTk5LCAyMzMsIDM2LCA3LCA0LCAxLCAyMTUsIDk0LCAyMjMsIDIyNCwgMiwgCisgICAgMTAzLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMTk5LCAyMzMsIDM2LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjE3LCA3NywgCisgICAgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI0NCwgODcsIDcsIDQsIDEsIDIyMywgNDksIDIyMywgMjI0LCAyLCAyNDQsIDg3LCA3LCAKKyAgICAxLCA0LCA2LCAxNTMsIDcsIDEsIDQsIDYsIDIzNSwgMTkzLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDEwMywgNywgNCwgCisgICAgMSwgMjQ1LCA3NSwgNywgNCwgMSwgMjQ3LCAxMTksIDIzNSwgMTQ1LCAyLCAyMTgsIDEwMywgMjIsIDEwMywgNywgNCwgMSwgCisgICAgMjE4LCAyMzEsIDIyMywgNDksIDI0NSwgNzUsIDcsIDQsIDEsIDI0NSwgNzYsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMTUsIAorICAgIDk0LCAyMTcsIDE1MiwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMTA0LCAxMzAsIDcsIAorICAgIDQsIDEsIDIxNCwgMTU3LCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMTAzLCA3LCA0LCAxLCAyMTUsIDk0LCAyMTQsIDEwNSwgNywgCisgICAgNCwgMSwgMjE1LCA5NCwgMjEyLCA5OCwgNywgNCwgMSwgMjE1LCA5NCwgMjExLCAxMTcsIDcsIDEsIDQsIDYsIDIxMSwgMTE3LCAKKyAgICA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ5LCAxMDAsIDcsIDQsIAorICAgIDEsIDI0NSwgOCwgNywgNCwgMSwgMjQ1LCA5LCAyLCAyNDksIDEwMCwgNywgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA3LCAxLCAKKyAgICAyMjUsIDEzOSwgMjEzLCAxMzUsIDI0MywgMjQ5LCA3LCAxLCAyMzUsIDE5MywgMjQyLCAxODAsIDIxOCwgMTI5LCA3LCAxLCAKKyAgICAyMTgsIDExMCwgMjUxLCA2NiwgNywgMSwgMjUxLCAyNDYsIDI1MCwgMTEsIDcsIDEsIDQsIDYsIDI1MywgMTU4LCA3LCA0LCAKKyAgICAxLCAyNTAsIDAsIDIwNCwgNzUsIDcsIDEsIDQsIDYsIDI0MywgMjAzLCAyLCAxMDMsIDcsIDEsIDQsIDYsIDI0MiwgNjAsIDcsIAorICAgIDQsIDEsIDIzNSwgMTQ1LCAyLCAyNDksIDEyNywgNywgNCwgMSwgMjE1LCA5NCwgMjM1LCAyMywgNywgMSwgNCwgNiwgMTU2LCAKKyAgICA3LCA0LCAxLCAyMjQsIDk3LCAyLCAxMDMsIDcsIDEsIDI0MiwgMTgwLCAyMTgsIDEzMCwgMiwgOTEsIDcsIDEsIDIyMywgNDksIAorICAgIDI0MiwgMTgwLCAyMTgsIDEzMCwgMiwgOTEsIDcsIDQsIDEsIDI0NiwgNDAsIDI0NywgMjIwLCA3LCA0LCAxLCAyNDgsIDI2LCAKKyAgICAyNDcsIDIyMCwgNywgNCwgMSwgMjQ2LCA0MCwgMjQ3LCAyMjEsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMTUsIDE4NSwgCisgICAgMjQ3LCAyMjAsIDcsIDQsIDEsIDIxNiwgMjM1LCAyNDcsIDIyMCwgNywgNCwgMSwgMjE3LCAyOSwgMjQ3LCAyMjEsIDIsIAorICAgIDI0OSwgMTAwLCA3LCA0LCAxLCAyNDQsIDEzNCwgMjQ3LCAyMjAsIDcsIDQsIDEsIDIzMiwgMTAwLCAyNDcsIDIyMCwgNywgNCwgCisgICAgMSwgMjMyLCA1MSwgMjQ3LCAyMjAsIDcsIDEsIDI1MSwgMjQ2LCAyMjUsIDE4MSwgNywgMSwgMjUxLCAyNTQsIDIyNSwgMTgxLCAKKyAgICA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYxLCAyLCAyNDQsIDg3LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYxLCAyLCAyNDQsIAorICAgIDg4LCAyMiwgMjE3LCA3NywgNTgsIDEsIDQsIDI0MiwgNjAsIDU4LCAxLCA0LCAyNDIsIDYxLCAyLCAxMDMsIDU4LCAxLCA0LCAKKyAgICAyMzUsIDE0NCwgNTgsIDEsIDQsIDE1MywgNTgsIDEsIDQsIDIxNSwgOTQsIDE1MywgNTgsIDEsIDQsIDIxNSwgOTQsIDIyMywgCisgICAgMjI0LCAyLCAxMDMsIDU4LCAxLCA0LCA2LCAyMzUsIDE5MywgMTUzLCA1OCwgMSwgNCwgMjEyLCA5OCwgNTgsIDEsIDQsIAorICAgIDIxMSwgMTE3LCA1OCwgMSwgMjI0LCAxOTAsIDU4LCAxLCA1MiwgMjI0LCAxOTAsIDU4LCAxLCAyMTUsIDk0LCAyNDksIDIxOSwgCisgICAgNTgsIDEsIDI1NCwgNTcsIDU4LCAxLCAyMjMsIDQ5LCAyNDksIDIxOSwgNTgsIDEsIDQ0LCAxNjMsIDIyMiwgMjMzLCA1OCwgCisgICAgMSwgNDMsIDE2MywgMjIyLCAyMzMsIDU4LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDU4LCAxLCAyMjMsIDQ5LCAyNDIsIAorICAgIDE4MCwgMjE4LCAxMjksIDU4LCAxLCA0MywgMjUzLCAyNDksIDU4LCAxLCA0NCwgMjUzLCAyNDksIDU4LCAxLCAxMjAsIDI1MywgCisgICAgMjQ5LCA1OCwgMSwgMTI0LCAyNTMsIDI0OSwgNTgsIDEsIDI1MCwgMzEsIDI1NSwgMTQsIDI1MCwgMjM0LCA1OCwgMSwgNjcsIAorICAgIDIzMiwgMjEzLCA1OCwgMSwgMjMxLCAyMzIsIDU4LCAxLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAyNDIsIDEzNywgMjU1LCAKKyAgICAxNCwgNTgsIDEsIDEyMSwgNjcsIDIzMiwgMjEzLCA1OCwgMSwgMTIxLCAyMzEsIDIzMiwgNTgsIDEsIDEyMSwgMjQyLCAxMzcsIAorICAgIDI1NSwgMTQsIDU4LCAxLCAxMjEsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDIxNSwgMjIyLCAyNDksIDIyNiwgNTgsIDEsIAorICAgIDE2MywgMjE1LCAyMjIsIDI0OSwgMjI2LCA1OCwgMSwgMjUwLCAxNzMsIDQ0LCAxNjMsIDIyMiwgMjMzLCA1OCwgMSwgMjUwLCAKKyAgICAxNzMsIDQzLCAxNjMsIDIyMiwgMjMzLCA1OCwgMSwgMTIwLCAyMTcsIDg3LCA1OCwgMSwgMTI0LCAyMTcsIDg3LCA1OCwgMSwgCisgICAgOTYsIDUwLCA1OCwgMSwgMjMwLCAxODIsIDUwLCAyNTEsIDE0NiwgNTksIDQ4LCAyMjIsIDIzNCwgNDgsIDIyNiwgMjI0LCA0LCAKKyAgICAxODIsIDUyLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAyMjMsIDM2LCAxMDMsIDU4LCAxLCAyNDksIDEzMSwgMjU1LCAxNCwgCisgICAgNTgsIDEsIDQsIDI0MywgMTA3LCA1OCwgMSwgNCwgMTU2LCA1OCwgMSwgNCwgMjIyLCA5MSwgNTgsIDEsIDQsIDIxMSwgMTc4LCAKKyAgICA1OCwgMSwgNCwgMjIzLCA0OSwgMjQyLCAxODAsIDIxOCwgMTI5LCA1OCwgMSwgMjQ1LCAyMCwgMTM4LCAxMzAsIDU4LCAxLCAKKyAgICAxMjUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAxMzgsIDEzMCwgNTgsIDEsIAorICAgIDI0NSwgMTksIDEzOCwgMTMwLCA1OCwgMSwgMjEwLCAyNTQsIDI0OCwgNDQsIDEzOCwgNzgsIDU4LCAxLCAyMTEsIDcwLCAKKyAgICAyNDgsIDQ0LCAxMzgsIDc4LCA1OCwgMSwgMjEzLCAxMzMsIDU4LCAxLCAyMTQsIDE4NiwgNTgsIDEsIDUyLCAyNTQsIDU3LCAKKyAgICA1OCwgMSwgMTIxLCAxMjQsIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCAxMjAsIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCA0MywgCisgICAgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDQ0LCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgMjIyLCAyMzMsIDU4LCAxLCAyMzAsIAorICAgIDIyNCwgMjQyLCAxMzcsIDI1NSwgMTQsIDU4LCAxLCAyMzAsIDIyNCwgNTIsIDI0MiwgMTM3LCAyNTUsIDE0LCA1OCwgMSwgCisgICAgMjMwLCAyMjQsIDUyLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAxMjEsIDE4MiwgNTgsIDEsIDIyMywgMTU3LCAyNDksIAorICAgIDIyNiwgNTgsIDEsIDI1MiwgNTgsIDEyNSwgMjE2LCAzMCwgNTgsIDEsIDI0NSwgMTQzLCAxMjUsIDIxNiwgMzAsIDU4LCAxLCAKKyAgICAyNTIsIDU4LCAxMjEsIDIxNiwgMzAsIDU4LCAxLCAyNDUsIDE0MywgMTIxLCAyMTYsIDMwLCA1OCwgMSwgMjIwLCA1NCwgNTgsIAorICAgIDEsIDIwNCwgMjIwLCA1NCwgNTgsIDEsIDEyMSwgNDMsIDc0LCAzOCwgMjQyLCAxMzcsIDI1NSwgMTQsIDM4LCAyNTUsIDMsIAorICAgIDI1NSwgMTQsIDM4LCAyNTAsIDMxLCAyNTUsIDE0LCAzOCwgMTgyLCAzOCwgMjMxLCAyMzIsIDM4LCAyMjYsIDExOSwgMzgsIAorICAgIDI1MSwgMTQ2LCAzOCwgNTksIDQ4LCAzOCwgMjQ4LCAxLCAzOCwgMjQxLCA1MiwgNDgsIDM4LCAyMjIsIDIzNCwgNDgsIDM4LCAKKyAgICA1MiwgMjU1LCAzLCAyNTUsIDE0LCAzOCwgMjUwLCAyMzQsIDM4LCA2NywgMjMyLCAyMTQsIDQ4LCAzOCwgNTIsIDY3LCAyMzIsIAorICAgIDIxNCwgNDgsIDM4LCA1MiwgMjQyLCAxMzcsIDI1NSwgMTQsIDM4LCAyNTAsIDI1NSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0NiwgCisgICAgMzgsIDIxNSwgOTQsIDI0OSwgMjIwLCA0OCwgMzgsIDI0OSwgMjIwLCA0OCwgMzgsIDIyMywgNDksIDI0OSwgMjIwLCA0OCwgCisgICAgMzgsIDI0OSwgMjIwLCA3NywgMjIyLCAyNTEsIDM4LCAyNDIsIDEzNywgMjU1LCAxNSwgNTEsIDM4LCAyNTUsIDMsIDI1NSwgCisgICAgMTUsIDUxLCAzOCwgNDMsIDIxNywgODgsIDUxLCAzOCwgNDQsIDIxNywgODgsIDUxLCAzOCwgNDMsIDI1NCwgMTEwLCA0OCwgCisgICAgMzgsIDI0MCwgMjQ4LCAzOCwgNDMsIDE2MywgMjIyLCAyMzQsIDUxLCAzOCwgMTIwLCAyMTcsIDg4LCA1MSwgMzgsIDEyNCwgCisgICAgMjE3LCA4OCwgNTEsIDM4LCA5NiwgNSwgNTEsIDM4LCAyMzAsIDE4MiwgNSwgNTEsIDM4LCAyMjYsIDY0LCAyNDEsIDUyLCAKKyAgICA1MSwgMzgsIDIyMywgNTUsIDI0MSwgNTIsIDUxLCAzOCwgNTksIDUxLCAzOCwgMjQ4LCAyLCA1MSwgMzgsIDIyMiwgMjM0LCAKKyAgICA1MSwgMzgsIDI0OSwgMjIwLCA1MSwgMzgsIDI1MCwgMTgzLCAzOCwgMjI2LCAyMjQsIDM4LCA2NywgMjMyLCAyMTQsIDUxLCAKKyAgICAzOCwgMjUxLCAxNDAsIDUxLCAzOCwgMjM1LCAxOTMsIDUyLCAyNTQsIDI0LCA1MSwgMzgsIDI1MCwgMjM1LCA1MSwgMzgsIAorICAgIDI1MCwgMzEsIDI1NSwgMTUsIDUxLCAzOCwgMjUxLCAxNDcsIDUxLCAzOCwgMjM1LCAxOTMsIDI1MSwgMTQ3LCA1MSwgMzgsIAorICAgIDIxNiwgODksIDUxLCAzOCwgMjMxLCAyMzMsIDUxLCAzOCwgMTIxLCAyMzIsIDIxMywgMzgsIDUyLCAxMjEsIDIzMiwgMjEzLCAKKyAgICAzOCwgMjE2LCA4OSwgMjI2LCAxMjAsIDM4LCAyMTksIDI1MSwgMjE4LCAxMDMsIDIyNiwgMTIwLCAzOCwgMTk5LCAyMTgsIAorICAgIDEwMywgMjI2LCAxMjAsIDM4LCAyMTksIDI1MSwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCAxOTksIDIxOSwgNDcsIDIyNiwgCisgICAgMTIwLCAzOCwgNDQsIDE2MywgMjIyLCAyMzQsIDUxLCAzOCwgMjM1LCAxOTMsIDI1MSwgMTQwLCA1MSwgMzgsIDQyLCA1MSwgCisgICAgMzgsIDIyMSwgMTgwLCA1MSwgMzgsIDIxMSwgMTc5LCA0OCwgMzgsIDY3LCAxODIsIDM4LCA1MiwgMjI2LCAxMTksIDM4LCAKKyAgICAyNDIsIDEzNywgMTM4LCA3OCwgMzgsIDI1NSwgMywgMTM4LCA3OCwgMzgsIDI2LCAyMjUsIDE3NSwgMzgsIDI2LCAyMzQsIDIsIAorICAgIDM4LCAyNiwgMjQ3LCAyNTIsIDIxNiwgMTgsIDM4LCAyNiwgMjEwLCAyMTksIDM4LCAyNTEsIDE0MCwgNDgsIDM4LCAyNDUsIAorICAgIDk4LCA1LCA1MSwgMzgsIDUyLCA2NywgMjMyLCAyMTQsIDUxLCAzOCwgNDMsIDI1NCwgMTEwLCA1MSwgMzgsIDIyOCwgNTIsIAorICAgIDIxNiwgODksIDQ4LCAzOCwgMjQxLCA1OCwgNDgsIDM4LCAyNTQsIDE0OCwgMTI4LCAyMTYsIDQyLCA0OCwgMzgsIDQzLCA0NCwgCisgICAgODAsIDUxLCAzOCwgMjE0LCAxNTMsIDgwLCA1MSwgMzgsIDI0MiwgMTQyLCAyMzUsIDYzLCAzOCwgNDQsIDI1MywgMjUwLCAKKyAgICA0OCwgMzgsIDQzLCAxNjMsIDIyMiwgMjM0LCA0OCwgMzgsIDI0NCwgMTMxLCAzOCwgMjExLCAxNzksIDUxLCAzOCwgNDMsIAorICAgIDI1MywgMjUwLCA1MSwgMzgsIDQ0LCAyNTMsIDI1MCwgNTEsIDM4LCA0NCwgMjUzLCAyNTAsIDIyLCAxMjAsIDI1MywgMjUwLCAKKyAgICA1MSwgMzgsIDQ0LCAxNjMsIDIyMiwgMjM0LCA0OCwgMzgsIDU5LCA3NywgMjIyLCAyNTEsIDM4LCAyNTMsIDIxNywgNTEsIAorICAgIDM4LCA1MiwgMjIyLCAyMzQsIDUxLCAzOCwgMjEwLCAzNSwgNDgsIDM4LCA1MiwgMjUxLCAxNDcsIDUxLCAzOCwgNTIsIDI1MSwgCisgICAgMTQ2LCAzOCwgNTIsIDIzMSwgMjMyLCAzOCwgNTIsIDIzMSwgMjMzLCA1MSwgMzgsIDUyLCAxODIsIDM4LCA1MiwgMjM1LCAKKyAgICAxOTMsIDI1MSwgMTQ2LCAzOCwgNTIsIDk3LCA4MCwgNTEsIDM4LCA3LCA0LCAxLCA2MSwgMzgsIDcsIDQsIDEsIDc1LCAzOCwgCisgICAgNywgNCwgMSwgNzMsIDM4LCA3LCA0LCAxLCA3NiwgMzgsIDcsIDQsIDEsIDcwLCAzOCwgNywgNCwgMSwgMjUxLCA2NiwgMzgsIAorICAgIDcsIDQsIDEsIDI0OSwgNjAsIDM4LCA3LCA0LCAxLCAyNDIsIDYwLCAzOCwgNywgNCwgMSwgMTkzLCAzOCwgNywgNCwgMSwgCisgICAgMTUzLCAzOCwgNywgNCwgMSwgMjE3LCAxNTIsIDM4LCA3LCA0LCAxLCAyMTQsIDEwNSwgMzgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKKyAgICAyNiwgNiwgMSwgMjQxLCAxOTYsIDI2LCA0LCAxLCAyNDEsIDE5NiwgMjYsIDYsIDEsIDI1NCwgMjMsIDIyMSwgMjQ2LCAyNiwgCisgICAgNCwgMSwgMjU0LCAyMywgMjIxLCAyNDYsIDI2LCAyMjcsIDE5OCwgNTAsIDI2LCAyMzIsIDEwOCwgMjI3LCAxOTgsIDUwLCAKKyAgICAyNiwgNiwgMSwgMjI2LCA1MSwgMjQ3LCAyMjcsIDI2LCA0LCAxLCAyMjYsIDUxLCAyNDcsIDIyNywgMjYsIDIxMCwgMjE5LCAKKyAgICAyNiwgNCwgMjIzLCA0OSwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgNCwgMjQ2LCAxMTgsIDIzMiwgODMsIDIxOSwgCisgICAgMTc4LCA4NywgMjYsIDQsIDIyMywgNDksIDI0NiwgMTE4LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCAyMjQsIDEzLCAKKyAgICA3OCwgMjYsIDIxNiwgMTgsIDI2LCAyNDcsIDI1MiwgMjE2LCAxOCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMTYsIDE4LCAKKyAgICAyNiwgMjU0LCA5NywgMjE3LCAyLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjE2LCAKKyAgICAxOCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgMTgsIDI2LCAKKyAgICA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjU0LCAxNDMsIDI2LCA2LCAxLCAKKyAgICAyNTIsIDI2LCAyNiwgNiwgMSwgMjQzLCAxMDcsIDI2LCA2LCAxLCAyNDgsIDU0LCAyNiwgNiwgMSwgMjQ1LCAxMDAsIDI2LCAKKyAgICA2LCAxLCAyMTAsIDg1LCAyNiwgNiwgMSwgMjQ1LCA2MywgMjYsIDYsIDEsIDIxNiwgMTc5LCAyNiwgNiwgMSwgMjM1LCAxODUsIAorICAgIDI2LCA2LCAxLCAyMzQsIDIyMiwgMjYsIDYsIDEsIDIzMywgOTgsIDI2LCA2LCAxLCAyMzAsIDEwMiwgMjYsIDYsIDEsIDIyNywgCisgICAgMjM3LCAyNiwgNiwgMSwgMjExLCAxNTcsIDI2LCA2LCAxLCAyMjYsIDE5OSwgMjYsIDYsIDEsIDIyNSwgMTA4LCAyNiwgNiwgCisgICAgMSwgMjIzLCAzNywgMjYsIDYsIDEsIDIxOSwgMTc3LCAyNiwgNiwgMSwgMjE3LCA0MSwgMjYsIDYsIDEsIDIxNCwgMTU3LCAKKyAgICAyNiwgNiwgMSwgMjI1LCAxMzMsIDI2LCA2LCAxLCAyNTAsIDExMCwgMjYsIDYsIDEsIDIyNCwgMTYxLCAyNiwgNiwgMSwgCisgICAgMjI2LCAyMDEsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTEsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAKKyAgICAyNTEsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMTYsIDE4LCAyNiwgCisgICAgNCwgMSwgMjQ1LCA2NCwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjE0LCAKKyAgICAxNTgsIDIsIDI0NywgMjUyLCAyMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDI1NCwgMTQzLCAyNiwgNCwgMSwgMjUyLCAyNiwgMjYsIAorICAgIDQsIDEsIDI0MywgMTA3LCAyNiwgNCwgMSwgMjQ4LCA1NCwgMjYsIDQsIDEsIDI0NSwgMTAwLCAyNiwgNCwgMSwgMjEwLCA4NSwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjMsIDI2LCA0LCAxLCAyMTYsIDE3OSwgMjYsIDQsIDEsIDIzNSwgMTg1LCAyNiwgNCwgMSwgMjM0LCAKKyAgICAyMjIsIDI2LCA0LCAxLCAyMzMsIDk4LCAyNiwgNCwgMSwgMjMwLCAxMDIsIDI2LCA0LCAxLCAyMjcsIDIzNywgMjYsIDQsIDEsIAorICAgIDIxMSwgMTU3LCAyNiwgNCwgMSwgMjI2LCAxOTksIDI2LCA0LCAxLCAyMjUsIDEwOCwgMjYsIDQsIDEsIDIyMywgMzcsIDI2LCAKKyAgICA0LCAxLCA0MCwgMjE5LCAxNzcsIDI2LCA0LCAxLCAyMTksIDE3NywgMjYsIDQsIDEsIDIxNywgNDEsIDI2LCA0LCAxLCAyMTQsIAorICAgIDE1NywgMjYsIDQsIDEsIDIyNSwgMTMzLCAyNiwgNCwgMSwgMjUwLCAxMTAsIDI2LCA0LCAxLCAyMjQsIDE2MSwgMjYsIDQsIAorICAgIDEsIDIyNiwgMjAxLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUxLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgCisgICAgMjUxLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOCwgMjYsIAorICAgIDQsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIDE4LCAyNiwgNiwgMjM0LCAyNDcsIDg3LCAyNiwgMjUyLCAyNywgODcsIDI2LCAKKyAgICAyMTYsIDE4MCwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQxLCA1MiwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjU1LCAzLCAyMiwgCisgICAgMjQxLCA1MiwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQ4LCAyLCAyMiwgMjQxLCA1MiwgODcsIDI2LCAyMjUsIDEzNCwgODcsIAorICAgIDI2LCAyMjUsIDEwOSwgODcsIDI2LCAyMzQsIDI0NywgODcsIDI2LCAxLCAyNTQsIDIzLCAyMzQsIDYsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDIzLCAyMzQsIDYsIDI2LCAxLCAyMTgsIDEzNywgMjYsIDQsIDEsIDIxOCwgMTM3LCAyNiwgMSwgMjQ3LCAyMjcsIAorICAgIDI2LCA0LCAxLCAyNDcsIDIyNywgMjYsIDEsIDIzNCwgNiwgMjYsIDQsIDEsIDIzNCwgNiwgMjYsIDEsIDIyMSwgMjQ2LCAyNiwgCisgICAgNCwgMSwgMjIxLCAyNDYsIDgxLCA2LCAxLCAyMjAsIDU1LCA4MSwgNCwgMSwgMjIwLCA1NSwgODEsIDYsIDEsIDI0NCwgMTQwLCAKKyAgICA4MSwgNCwgMSwgMjQ0LCAxNDAsIDgxLCA2LCAxLCAyMzQsIDExNywgODEsIDQsIDEsIDIzNCwgMTE3LCA4MSwgNiwgMSwgCisgICAgMjQxLCA0NSwgODEsIDQsIDEsIDI0MSwgNDUsIDgxLCA2LCAxLCAyNDMsIDEwMiwgODEsIDQsIDEsIDI0MywgMTAyLCA4MSwgCisgICAgNiwgMSwgMjIwLCAyMiwgODEsIDQsIDEsIDIyMCwgMjIsIDgxLCA2LCAxLCAyNDgsIDY5LCA4MSwgNCwgMSwgMjQ4LCA2OSwgCisgICAgMjYsIDIzNCwgMjIzLCA4NywgMjYsIDIyMywgMzgsIDg3LCAyNiwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgMSwgMjEwLCAKKyAgICAyMjQsIDI2LCA2LCAyMTYsIDE4MCwgODcsIDI2LCAyMzIsIDgzLCAyNDUsIDEwMSwgODcsIDI2LCAyMjMsIDQ5LCAyMzIsIAorICAgIDgzLCAyNDUsIDEwMSwgODcsIDI2LCA2LCAxLCAyMjAsIDcsIDI2LCA0LCAxLCAyMjAsIDcsIDI2LCA2LCAyMzIsIDgzLCAKKyAgICAyMTksIDE3OCwgODcsIDI2LCA2LCAxLCAyMjEsIDI0MywgMjYsIDQsIDEsIDIyMSwgMjQzLCAyNiwgMjIzLCAzOCwgMiwgCisgICAgMjE4LCAxMDMsIDg3LCAyNiwgNiwgMjIzLCA0OSwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgNiwgMjQ2LCAxMTgsIAorICAgIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDYsIDIyMywgNDksIDI0NiwgMTE4LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIAorICAgIDMzLCA2LCAxLCAyMzYsIDYxLCAyLCAyNDIsIDEzNiwgMzMsIDYsIDEsIDIzNSwgMTg5LCAzMywgNiwgMSwgMjQ3LCAxNjIsIAorICAgIDMzLCA2LCAxLCAyNDIsIDE4NywgMzMsIDYsIDEsIDIxNCwgMjAyLCAyMzYsIDYwLCAzMywgNiwgMSwgMjQ2LCAzNiwgMzMsIAorICAgIDYsIDEsIDI1MSwgNzYsIDczLCAzMywgNiwgMSwgMjExLCA4LCAzMywgNiwgMSwgMjM1LCAxMjYsIDMzLCA2LCAxLCAyMzIsIAorICAgIDE4NywgMzMsIDYsIDEsIDIyOCwgMTc4LCAzMywgNiwgMSwgMjE1LCAxNzQsIDMzLCA2LCAxLCAyMzQsIDQ4LCAzMywgNiwgMSwgCisgICAgMjQwLCAxNTQsIDIsIDI0MiwgMTM2LCAzMywgNiwgMSwgMjE5LCAyNTEsIDcwLCAzMywgNiwgMSwgMjQ2LCAzMiwgMzMsIDYsIAorICAgIDEsIDYxLCAzMywgNiwgMSwgMjUyLCA3NSwgMzMsIDYsIDEsIDIxMywgMjU1LCAzMywgNiwgMSwgMjQyLCAyMzYsIDMzLCA2LCAKKyAgICAxLCAyNDgsIDkwLCAzMywgNiwgMSwgMjM2LCA2MCwgMzMsIDYsIDEsIDIxMCwgNzQsIDMzLCA2LCAxLCAyMTAsIDk0LCAzMywgCisgICAgNiwgMSwgNzMsIDMzLCA2LCAxLCAyMTksIDI1MSwgNzMsIDMzLCA2LCAxLCAxNzYsIDMzLCA2LCAxLCAyNDUsIDE3NCwgMzMsIAorICAgIDYsIDEsIDI0NSwgMTU5LCAzMywgNiwgMSwgMjQ1LCAxNTAsIDMzLCA2LCAxLCA3NiwgMzMsIDYsIDEsIDIyNSwgMjIxLCAzMywgCisgICAgNiwgMSwgMjQ1LCA5MiwgMzMsIDYsIDEsIDI0NSwgODIsIDMzLCA2LCAxLCAyMTcsIDIyLCAzMywgNiwgMSwgNzAsIDMzLCA2LCAKKyAgICAxLCAyNDUsIDIwMiwgMzMsIDYsIDEsIDE2MiwgMzMsIDYsIDEsIDIxNSwgMTc4LCAzMywgNiwgMSwgMjUwLCAxMzEsIDMzLCAKKyAgICA2LCAxLCAyMjAsIDEwMiwgMzMsIDYsIDEsIDIyMCwgNjUsIDMzLCA2LCAxLCAyNDIsIDMsIDUwLCAzMywgNiwgMSwgMjExLCAKKyAgICAyNywgMzMsIDYsIDEsIDIxOSwgNTIsIDUwLCAzMywgNiwgMSwgNzUsIDMzLCA2LCAxLCAyMTAsIDIxMiwgMzMsIDYsIDEsIAorICAgIDE5MSwgMzMsIDQsIDEsIDYxLCAzMywgNCwgMSwgMjUyLCA3NSwgMzMsIDQsIDEsIDIxMywgMjU1LCAzMywgNCwgMSwgMjQyLCAKKyAgICAyMzYsIDMzLCA0LCAxLCAyNDgsIDkwLCAzMywgNCwgMSwgMjM2LCA2MCwgMzMsIDQsIDEsIDIxMCwgNzQsIDMzLCA0LCAxLCAKKyAgICAyMTAsIDk0LCAzMywgNCwgMSwgNzMsIDMzLCA0LCAxLCAyMTksIDI1MSwgNzMsIDMzLCA0LCAxLCAxNzYsIDMzLCA0LCAxLCAKKyAgICAyNDUsIDE3NCwgMzMsIDQsIDEsIDI0NSwgMTU5LCAzMywgNCwgMSwgMjQ1LCAxNTAsIDMzLCA0LCAxLCA3NiwgMzMsIDQsIDEsIAorICAgIDIyNSwgMjIxLCAzMywgNCwgMSwgMjQ1LCA5MiwgMzMsIDQsIDEsIDI0NSwgODIsIDMzLCA0LCAxLCAyMTcsIDIyLCAzMywgNCwgCisgICAgMSwgNzAsIDMzLCA0LCAxLCAyNDUsIDIwMiwgMzMsIDQsIDEsIDE2MiwgMzMsIDQsIDEsIDIxNSwgMTc4LCAzMywgNCwgMSwgCisgICAgMjUwLCAxMzEsIDMzLCA0LCAxLCAyMjAsIDEwMiwgMzMsIDQsIDEsIDIyMCwgNjUsIDMzLCA0LCAxLCAyNDIsIDMsIDUwLCAKKyAgICAzMywgNCwgMSwgMjExLCAyNywgMzMsIDQsIDEsIDIxOSwgNTIsIDUwLCAzMywgNCwgMSwgNzUsIDMzLCA0LCAxLCAyMTAsIAorICAgIDIxMiwgMzMsIDQsIDEsIDE5MSwgMzMsIDQsIDEsIDIzNiwgNjEsIDIsIDI0MiwgMTM2LCAzMywgNCwgMSwgMjM1LCAxODksIAorICAgIDMzLCA0LCAxLCAyNDcsIDE2MiwgMzMsIDQsIDEsIDI0MiwgMTg3LCAzMywgNCwgMSwgMjE0LCAyMDIsIDIzNiwgNjAsIDMzLCAKKyAgICA0LCAxLCAyNDYsIDM2LCAzMywgNCwgMSwgMjUxLCA3NiwgNzMsIDMzLCA0LCAxLCAyMTEsIDgsIDMzLCA0LCAxLCAyMzUsIAorICAgIDEyNiwgMzMsIDQsIDEsIDIzMiwgMTg3LCAzMywgNCwgMSwgMjI4LCAxNzgsIDMzLCA0LCAxLCAyMTUsIDE3NCwgMzMsIDQsIAorICAgIDEsIDIzNCwgNDgsIDMzLCA0LCAxLCAyNDAsIDE1NCwgMiwgMjQyLCAxMzYsIDMzLCA0LCAxLCAyMTksIDI1MSwgNzAsIDMzLCAKKyAgICA0LCAxLCAyNDYsIDMyLCAzMywgNiwgMSwgMjI2LCAyMDEsIDMzLCA0LCAxLCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIxMSwgNTksIAorICAgIDMzLCA0LCAxLCAyMTEsIDU5LCAzMywgNiwgMSwgMjM1LCAxODMsIDc1LCAzMywgNCwgMSwgMjM1LCAxODMsIDc1LCAzMywgNiwgCisgICAgMSwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODMsIAorICAgIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA2LCAxLCAKKyAgICAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA2LCAxLCAyMzUsIDE4MywgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxODMsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDYsIDEsIAorICAgIDIzMywgMjMzLCAzMywgNCwgMSwgMjMzLCAyMzMsIDMzLCA2LCAxLCAyMjQsIDE2MSwgMzMsIDQsIDEsIDIyNCwgMTYxLCAzMywgCisgICAgNiwgMSwgMjQ0LCA4MiwgMzMsIDQsIDEsIDI0NCwgODIsIDMzLCA2LCAxLCAyMzUsIDE0NiwgMzMsIDQsIDEsIDIzNSwgMTQ2LCAKKyAgICAzMywgNiwgMSwgMjM1LCAxNDcsIDIsIDUyLCAyNDIsIDEzNywgMjU1LCAxNCwgMzMsIDQsIDEsIDIzNSwgMTQ3LCAyLCA1MiwgCisgICAgMjQyLCAxMzcsIDI1NSwgMTQsIDMzLCA2LCAxLCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIxNCwgMjA1LCAzMywgNiwgMSwgMjIyLCAKKyAgICAxODUsIDIyNiwgMjAxLCAzMywgNCwgMSwgMjIyLCAxODUsIDIyNiwgMjAxLCAzMywgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgCisgICAgNjUsIDMzLCA0LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCA2NSwgMzMsIDYsIDEsIDIyNiwgMTQwLCAzMywgNCwgMSwgMjI2LCAKKyAgICAxNDAsIDMzLCA2LCAxLCAyMzQsIDYsIDMzLCA0LCAxLCAyMzQsIDYsIDMzLCAyMTYsIDE0NiwgNTAsIDM4LCAzMywgMjE2LCAKKyAgICA2NSwgMzgsIDMzLCAyMjYsIDY1LCAzOCwgMzMsIDI0OCwgMTU0LCAyMjUsIDE4LCAzOCwgMzMsIDIyNCwgMTU1LCAyMjUsIAorICAgIDE4LCAzOCwgMzMsIDIyNSwgMywgMzgsIDMzLCAyNDAsIDIxMSwgMjE2LCAxNDYsIDUwLCAzOCwgMzMsIDIzMCwgMTkxLCA1MCwgCisgICAgMzMsIDYsIDEsIDIxOSwgMjUxLCAyNDAsIDE1NCwgMiwgMjE3LCA3NywgMzMsIDQsIDEsIDIxOSwgMjUxLCAyNDAsIDE1NCwgCisgICAgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDIyMCwgMTQ2LCA1MCwgMzMsIDQsIDEsIDIyMCwgMTQ2LCA1MCwgMzMsIDYsIDEsIAorICAgIDI0NSwgOTMsIDIsIDIxNiwgMTE0LCAzMywgNCwgMSwgMjQ1LCA5MywgMiwgMjE2LCAxMTQsIDMzLCA2LCAxLCAyNDIsIDIzNywgCisgICAgMiwgMjE0LCAxNTYsIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgMjE0LCAxNTYsIDMzLCA2LCAxLCAyNDIsIDIzNywgMiwgOTEsIAorICAgIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgOTEsIDMzLCA2LCAxLCAyNDIsIDIzNywgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIAorICAgIDEsIDI0MiwgMjM3LCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgMjEwLCA3NSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIAorICAgIDIxMCwgNzUsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjEwLCA5NSwgMiwgCisgICAgMjQ4LCAzOSwgMzMsIDYsIDEsIDIzNSwgMTMsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCAyNDgsIDM5LCAKKyAgICAzMywgNiwgMSwgMjM1LCAxMywgMiwgNjcsIDkxLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgNjcsIDkxLCAzMywgNiwgMSwgCisgICAgMjM1LCAxMywgMiwgOTEsIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCA5MSwgMzMsIDYsIDEsIDI1MiwgMTI0LCAxNzYsIDMzLCA0LCAKKyAgICAxLCAyNTIsIDEyNCwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNTEsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDUsIDE1MSwgMiwgCisgICAgMjQ4LCAzOSwgMzMsIDYsIDI3LCAyNDUsIDE1MSwgMjQyLCAyMzYsIDMzLCA0LCAyNywgMjQ1LCAxNTEsIDI0MiwgMjM2LCAKKyAgICAzMywgNiwgMSwgMjI1LCAyMjIsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAxLCAyMjUsIDIyMiwgMiwgMjMwLCAyMjQsIAorICAgIDEwMywgMzMsIDYsIDEsIDI1NSwgMjAsIDE2MiwgMzMsIDQsIDEsIDI1NSwgMjAsIDE2MiwgMzMsIDYsIDEsIDI0NSwgODMsIAorICAgIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDUsIDgzLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjE3LCAyMywgMiwgMjQ4LCAzOSwgCisgICAgMzMsIDQsIDEsIDIxNywgMjMsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMTgsIDEyMSwgNzAsIDMzLCA0LCAxLCAyMTgsIAorICAgIDEyMSwgNzAsIDMzLCA2LCAxLCAyMTgsIDEyMSwgMTA0LCAyLCA5MSwgMzMsIDQsIDEsIDIxOCwgMTIxLCAxMDQsIDIsIDkxLCAKKyAgICAzMywgNiwgMSwgMjQyLCA0OSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0MiwgNDksIDIsIDI0OCwgMzksIDMzLCA2LCAyNywgCisgICAgMjE3LCAyMywgMjE1LCAxNzgsIDMzLCA0LCAyNywgMjE3LCAyMywgMjE1LCAxNzgsIDMzLCA2LCAxLCAyNTAsIDEzMiwgMiwgCisgICAgMjQ4LCAzOSwgMzMsIDQsIDEsIDI1MCwgMTMyLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIDY3LCA5MSwgCisgICAgMzMsIDQsIDEsIDI1MCwgMTMyLCAyLCA2NywgOTEsIDMzLCA2LCAxLCAyMjAsIDMzLCAzMywgNCwgMSwgMjIwLCAzMywgMzMsIAorICAgIDYsIDEsIDI1NSwgMjAsIDI1MCwgMTMxLCAzMywgNCwgMSwgMjU1LCAyMCwgMjUwLCAxMzEsIDMzLCA2LCAxLCAyNTUsIDIwLCAKKyAgICAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI1NSwgMjAsIDI1MCwgMTMyLCAyLCAyNDgsIDM5LCAzMywgMSwgCisgICAgMjI2LCA1OCwgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTQ2LCAzMywgNCwgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNDYsIAorICAgIDMzLCA2LCAxLCAyMzUsIDEzLCAyLCAxMDMsIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE3NSwgCisgICAgMiwgMjE3LCA3NywgMzMsIDQsIDEsIDI0NSwgMTc1LCAyLCAyMTcsIDc3LCAzMywgNiwgMSwgMjQ1LCAxNTEsIDIsIDEwMywgCisgICAgMzMsIDQsIDEsIDI0NSwgMTUxLCAyLCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE1MSwgMiwgMjE3LCA3NywgMzMsIDQsIDEsIAorICAgIDI0NSwgMTUxLCAyLCAyMTcsIDc3LCAzMywgNiwgMSwgMjM0LCAxMjcsIDI1MCwgMTMxLCAzMywgNCwgMSwgMjM0LCAxMjcsIAorICAgIDI1MCwgMTMxLCAzMywgNiwgMSwgMjQ1LCAxNjAsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyNDUsIDE2MCwgMiwgMjE3LCA3NywgCisgICAgMzMsIDQsIDEsIDIyNiwgNTgsIDMzLCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ2LCAzMywgNCwgMSwgMTE1LCAyLCAyNTEsIAorICAgIDE0NiwgMzMsIDYsIDEsIDExNSwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMTE1LCAyLCAyNDgsIDEsIDMzLCA2LCAyNywgMTE1LCAKKyAgICAyMzYsIDYwLCAzMywgNCwgMjcsIDExNSwgMjM2LCA2MCwgMzMsIDYsIDEsIDIzNiwgNjEsIDIsIDI1MSwgMTQ2LCAzMywgNCwgCisgICAgMSwgMjM2LCA2MSwgMiwgMjUxLCAxNDYsIDMzLCA2LCAxLCAyMjEsIDE5NSwgMzMsIDQsIDEsIDIyMSwgMTk1LCAzMywgNiwgCisgICAgMSwgMjIxLCAxOTYsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDIyMSwgMTk2LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyMTAsIDc1LCAKKyAgICAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDEsIAorICAgIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyNTUsIDIwLCAyNDYsIDM2LCAzMywgNCwgMSwgMjU1LCAKKyAgICAyMCwgMjQ2LCAzNiwgMzMsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMiwgMzMsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIAorICAgIDIzMiwgMzMsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCAzMywgNiwgCisgICAgMSwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAxNDQsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDI1MiwgMTM0LCA3NiwgMzMsIAorICAgIDQsIDEsIDI1MiwgMTM0LCA3NiwgMzMsIDYsIDEsIDI1MiwgMTM0LCAxNDQsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDI1MiwgCisgICAgMTM0LCAxNDQsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDE2MCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMTYwLCAyLCAyNDgsIDEsIAorICAgIDMzLCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMyLCAzMywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgMzMsIDYsIDEsIDEwNCwgMiwgCisgICAgMjQ4LCAxLCAzMywgNCwgMSwgMTA0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDMzLCA0LCAxLCAKKyAgICAxMDQsIDIsIDUyLCAxNDIsIDMzLCA2LCAxLCAyNTAsIDEzMiwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjUwLCAxMzIsIDIsIAorICAgIDI0OCwgMSwgMzMsIDYsIDEsIDI0MiwgMjM3LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDI0OCwgMzksIAorICAgIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAKKyAgICAyNDIsIDIzNywgMiwgMjE4LCAxMDMsIDIyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgMjE4LCAxMDMsIDIyLCAxMDMsIAorICAgIDMzLCA2LCAxLCAyNDIsIDQ5LCAyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCAxMDMsIDMzLCA2LCAxLCAyNDIsIDQ5LCAKKyAgICAyLCA5MSwgMzMsIDQsIDEsIDI0MiwgNDksIDIsIDkxLCAzMywgNiwgMSwgMjM0LCAxNCwgMjQ4LCA5MCwgMzMsIDQsIDEsIAorICAgIDIzNCwgMTQsIDI0OCwgOTAsIDMzLCA2LCAxLCAyMzQsIDE0LCAyNDcsIDE2MiwgMzMsIDQsIDEsIDIzNCwgMTQsIDI0NywgCisgICAgMTYyLCAzMywgNiwgMSwgMjM0LCAxNCwgMjEwLCAyNywgMzMsIDQsIDEsIDIzNCwgMTQsIDIxMCwgMjcsIDMzLCA2LCAxLCAKKyAgICAyMzQsIDE0LCAyNDYsIDMwLCAzMywgNCwgMSwgMjM0LCAxNCwgMjQ2LCAzMCwgMzMsIDYsIDEsIDIzNCwgMTQsIDIzMiwgCisgICAgMTg3LCAzMywgNCwgMSwgMjM0LCAxNCwgMjMyLCAxODcsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMjgsIDE3OCwgMzMsIDQsIDEsIAorICAgIDIzNCwgMTQsIDIyOCwgMTc4LCAzMywgNiwgMSwgMjM0LCAxNCwgMjE5LCAxMDksIDMzLCA0LCAxLCAyMzQsIDE0LCAyMTksIAorICAgIDEwOSwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxNiwgNjAsIDMzLCA0LCAxLCAyMzQsIDE0LCAyMTYsIDYwLCAzMywgNiwgMSwgCisgICAgMjIzLCA0OSwgMjEwLCA5NCwgMzMsIDQsIDEsIDIyMywgNDksIDIxMCwgOTQsIDMzLCA2LCAxLCAyNDUsIDE3NSwgMiwgMTAzLCAKKyAgICAzMywgNCwgMSwgMjQ1LCAxNzUsIDIsIDEwMywgMzMsIDYsIDEsIDIzMiwgMjU0LCAzMywgNCwgMSwgMjMyLCAyNTQsIDMzLCAKKyAgICA2LCAxLCAyMjMsIDM5LCAzMywgNCwgMSwgMjIzLCAzOSwgMzMsIDYsIDEsIDIxMSwgOTIsIDMzLCA0LCAxLCAyMTEsIDkyLCAKKyAgICAzMywgNiwgMSwgMjI0LCA4OCwgMzMsIDQsIDEsIDIyNCwgODgsIDMzLCA2LCAxLCAyMTIsIDIyLCAzMywgNCwgMSwgMjEyLCAKKyAgICAyMiwgMzMsIDYsIDEsIDI1NCwgMTY2LCAxNzYsIDMzLCA0LCAxLCAyNTQsIDE2NiwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNzUsIAorICAgIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE3NSwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIDI0NSwgCisgICAgMTUxLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxNTEsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAKKyAgICAyMjUsIDIyMiwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIyNSwgMjIyLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjIwLCAzNCwgCisgICAgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIyMCwgMzQsIDIsIDI0OCwgMzksIDE1MCwgNiwgMSwgMjUzLCAxNjQsIDE1MCwgNiwgCisgICAgMSwgMjUyLCAzOSwgMTUwLCA2LCAxLCAyNDIsIDIwMywgMTUwLCA2LCAxLCAyNDgsIDIyMSwgMTUwLCA2LCAxLCAyNDUsIAorICAgIDIxMywgMTUwLCA2LCAxLCAyMTAsIDExNiwgMTUwLCA2LCAxLCAyNDUsIDE5NywgMTUwLCA2LCAxLCAyNDUsIDY1LCAxNTAsIAorICAgIDYsIDEsIDExMSwgMTUwLCA2LCAxLCAyMTAsIDc0LCAxNTAsIDYsIDEsIDIzNSwgMjI3LCAxNTAsIDYsIDEsIDIzMiwgMTkwLCAKKyAgICAxNTAsIDYsIDEsIDIxMSwgMTYwLCAxNTAsIDYsIDEsIDI1MSwgMzMsIDE1MCwgNiwgMSwgMjM0LCAxNjUsIDE1MCwgNiwgMSwgCisgICAgMjQxLCA2OCwgMTUwLCA2LCAxLCAyMzUsIDE0MSwgMTUwLCA2LCAxLCAyNDIsIDI0NiwgMTUwLCA2LCAxLCAyNTAsIDEyNiwgCisgICAgMTUwLCA2LCAxLCAyMzEsIDU4LCAxNTAsIDYsIDEsIDIxMSwgOCwgMTUwLCA2LCAxLCAyMjgsIDM5LCAxNTAsIDYsIDEsIAorICAgIDIyMCwgMTAyLCAxNTAsIDYsIDEsIDIxMywgMTM4LCAxNTAsIDYsIDEsIDI1MCwgMTU3LCAxNTAsIDYsIDEsIDIyNSwgMjA1LCAKKyAgICAxNTAsIDYsIDEsIDIzNSwgMTEwLCAxNTAsIDYsIDEsIDIwNSwgMTUwLCA2LCAxLCAyMjEsIDE2MSwgMTUwLCA2LCAxLCAyMTMsIAorICAgIDE3OSwgMTUwLCA2LCAxLCAyMTYsIDYyLCAxNTAsIDYsIDEsIDIyMywgOTUsIDE1MCwgNiwgMSwgMjQ5LCAyMzgsIDE1MCwgNiwgCisgICAgMSwgMjEwLCAyNDksIDE1MCwgNiwgMSwgMjI1LCA0NiwgMTUwLCA2LCAxLCAyMzQsIDE3NiwgMTUwLCA2LCAxLCAyMjYsIAorICAgIDIyMiwgMTUwLCA2LCAxLCAyNDQsIDE0MiwgMTUwLCA1OCwgMSwgNDMsIDE2MywgMjIyLCAyMzMsIDE1MCwgMjU0LCA1NywgCisgICAgMTUwLCAyNDUsIDE1NCwgNzgsIDE1MCwgMjQ1LCAzMSwgNzgsIDE1MCwgMjQ5LCAyMTksIDE1MCwgMjI0LCAxMywgNzgsIAorICAgIDE1MCwgMjU1LCAyMSwgNzgsIDE1MCwgNCwgMSwgMjUzLCAxNjQsIDE1MCwgNCwgMSwgMjUyLCAzOSwgMTUwLCA0LCAxLCAKKyAgICAyNDIsIDIwMywgMTUwLCA0LCAxLCAyNDgsIDIyMSwgMTUwLCA0LCAxLCAyNDUsIDIxMywgMTUwLCA0LCAxLCAyMTAsIDExNiwgCisgICAgMTUwLCA0LCAxLCAyNDUsIDE5NywgMTUwLCA0LCAxLCAyNDUsIDY1LCAxNTAsIDQsIDEsIDExMSwgMTUwLCA0LCAxLCAyMTAsIAorICAgIDc0LCAxNTAsIDQsIDEsIDIzNSwgMjI3LCAxNTAsIDQsIDEsIDIzMiwgMTkwLCAxNTAsIDQsIDEsIDIxMSwgMTYwLCAxNTAsIAorICAgIDQsIDEsIDI1MSwgMzMsIDE1MCwgNCwgMSwgMjM0LCAxNjUsIDE1MCwgNCwgMSwgMjQxLCA2OCwgMTUwLCA0LCAxLCAyMzUsIAorICAgIDE0MSwgMTUwLCA0LCAxLCAyNDIsIDI0NiwgMTUwLCA0LCAxLCAyNTAsIDEyNiwgMTUwLCA0LCAxLCAyMzEsIDU4LCAxNTAsIAorICAgIDQsIDEsIDIxMSwgOCwgMTUwLCA0LCAxLCAyMjgsIDM5LCAxNTAsIDQsIDEsIDIyMCwgMTAyLCAxNTAsIDQsIDEsIDIxMywgCisgICAgMTM4LCAxNTAsIDQsIDEsIDI1MCwgMTU3LCAxNTAsIDQsIDEsIDIyNSwgMjA1LCAxNTAsIDQsIDEsIDIzNSwgMTEwLCAxNTAsIAorICAgIDQsIDEsIDIwNSwgMTUwLCA0LCAxLCAyMjEsIDE2MSwgMTUwLCA0LCAxLCAyMTMsIDE3OSwgMTUwLCA0LCAxLCAyMTYsIDYyLCAKKyAgICAxNTAsIDQsIDEsIDIyMywgOTUsIDE1MCwgNCwgMSwgMjQ5LCAyMzgsIDE1MCwgNCwgMSwgMjEwLCAyNDksIDE1MCwgNCwgMSwgCisgICAgMjI1LCA0NiwgMTUwLCA0LCAxLCAyMzQsIDE3NiwgMTUwLCA0LCAxLCAyMjYsIDIyMiwgMTUwLCA0LCAxLCAyNDQsIDE0MiwgCisgICAgMTUwLCA0LCAyNywgMjQ1LCAyMTQsIDIxMCwgMjQ5LCAxNTAsIDI0MywgMjI5LCAyMTgsIDEyOSwgMTUwLCAyNDAsIDE2OCwgCisgICAgMTUwLCAyNDYsIDk1LCA1MCwgOTQsIDI1NSwgMTUsIDI0NSwgNTcsIDk0LCAyNTUsIDE1LCAyMjEsIDE2MiwgOTQsIDI1NSwgCisgICAgMTUsIDIyMCwgODgsIDk0LCAyNTUsIDE1LCAyMTAsIDEwNCwgMjI0LCA3MSwgOTQsIDI1NSwgMTUsIDIxMCwgMTA0LCAyNDMsIAorICAgIDEyNSwgOTQsIDI1NSwgMTUsIDIxNiwgNzUsIDk0LCAyNTUsIDE1LCAyMjMsIDQ3LCA5NCwgMjU1LCAxNSwgMjEwLCAxMDMsIAorICAgIDk0LCAyNTUsIDE1LCAyMjUsIDI0NSwgOTQsIDI1NSwgMTUsIDIxMSwgMjAsIDk0LCAyNTUsIDE1LCAyMTYsIDIxNCwgOTQsIAorICAgIDI1NSwgMTUsIDI0MywgNDEsIDk0LCAyNTUsIDE1LCAyNDMsIDQyLCAyMzAsIDY5LCA5NCwgMjU1LCAxNSwgMjQzLCAzOSwgCisgICAgOTQsIDI1NSwgMTUsIDIyNCwgNzIsIDIyNiwgMTYsIDk0LCAyNTUsIDE1LCAyMTYsIDI1MywgMjQzLCA1NiwgOTQsIDI1NSwgCisgICAgMTUsIDIyNSwgMjI2LCA5NCwgMjU1LCAxNSwgMjUzLCAyMDAsIDI0MiwgNDEsIDk0LCAyNTUsIDE1LCAyMzAsIDc5LCA5NCwgCisgICAgMjU1LCAxNSwgMjMxLCAyMDgsIDk0LCAyNTUsIDE1LCAyMzEsIDQ5LCA5NCwgMjU1LCAxNSwgMjMxLCA1MCwgMjM0LCAxNzcsIAorICAgIDk0LCAyNTUsIDE1LCAyNDgsIDE2MywgOTQsIDI1NSwgMTUsIDIyNCwgODMsIDk0LCAyNTUsIDE1LCAyMTYsIDI1MywgMjI0LCAKKyAgICA2NywgOTQsIDI1NSwgMTUsIDIxMSwgMzAsIDI1MiwgNDAsIDIxMCwgMjMwLCA5NCwgMjU1LCAxNSwgMjI2LCAyMDcsIDk0LCAKKyAgICAyNTUsIDE1LCAyMzYsIDE5LCA5NCwgMjU1LCAxNSwgMjQ4LCA3MCwgOTQsIDI1NSwgMTUsIDIxMCwgMzMsIDk0LCAxNjQsIAorICAgIDIzMSwgMTQzLCAyNTAsIDM1LCA5NCwgMjI1LCAxMSwgMjIwLCAzNiwgOTQsIDIyNSwgMTEsIDI0MSwgMjUwLCAyMjEsIDE2MiwgCisgICAgOTQsIDIyNSwgMTEsIDI0MSwgMjUwLCAyMjUsIDIzOSwgOTQsIDIyNSwgMTEsIDI0MSwgMjUwLCAyMjQsIDc2LCA5NCwgMjI1LCAKKyAgICAxMSwgMjQxLCAxNTgsIDk0LCAyMjUsIDExLCAyMTUsIDE3NiwgOTQsIDIyNSwgMTEsIDIyMSwgMTYyLCA5NCwgMjI1LCAxMSwgCisgICAgMjI1LCAyMzksIDk0LCAyMjUsIDExLCAyMjQsIDc2LCA5NCwgMjI1LCAxMSwgMjQxLCA2MSwgOTQsIDIyNSwgMTEsIDI0MSwgCisgICAgNjIsIDI0MSwgMjUyLCAzMSwgMjE0LCAzLCA5NCwgMjI1LCAxMSwgMjI0LCAxNywgOTQsIDIyNSwgMTEsIDI0OCwgMjA4LCAKKyAgICAxNzcsIDIzMSwgMTcxLCA5NCwgMjI1LCAxMSwgMjMxLCAzOCwgOTQsIDIyNCwgMTQxLCAyMzEsIDE2OCwgOTQsIDIyNSwgMTEsIAorICAgIDIyMywgMTY5LCA5NCwgMjI0LCAxNDEsIDIyNSwgMjQ3LCA5NCwgMjI1LCAxMSwgMjIwLCAyMSwgMjQ3LCAxMjAsIDk0LCAKKyAgICAyMjUsIDExLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAyMjQsIDE0MSwgMjE5LCA1MywgMjI1LCAyNDEsIDk0LCAxNjQsIAorICAgIDIxNCwgMTYwLCAyNDcsIDEyMCwgOTQsIDE2NCwgMjMyLCAxMDgsIDI0NywgMTIwLCA5NCwgMjI0LCAxNDEsIDIyNywgMTk1LCAKKyAgICAyNDIsIDQwLCA5NCwgMjI1LCAxMSwgMjI0LCA3NywgMjI0LCA3MSwgOTQsIDEsIDI1NCwgMTcwLCA5NCwgMSwgMjUyLCAyOCwgCisgICAgOTQsIDEsIDI0MiwgMjAxLCA5NCwgMSwgMjQ4LCAxODksIDk0LCAxLCAyNDEsIDIzOCwgOTQsIDEsIDIxNCwgMywgOTQsIDEsIAorICAgIDIxMCwgOTcsIDk0LCAxLCAyNDEsIDE5NywgOTQsIDEsIDIxNiwgMjMwLCA5NCwgMSwgMjEwLCAyMzMsIDk0LCAxLCA0MCwgCisgICAgMjM0LCAyNTAsIDk0LCAxLCAyMzQsIDI1MCwgOTQsIDEsIDIzMywgOTQsIDk0LCAxLCA0MCwgMjMxLCA2NSwgOTQsIDEsIAorICAgIDIzMSwgNjUsIDk0LCAxLCA0MCwgMjI3LCAxOTQsIDk0LCAxLCAyMjcsIDE5NCwgOTQsIDEsIDIyMSwgMjQ5LCA5NCwgMSwgCisgICAgMjUzLCAxNjIsIDk0LCAxLCA0MCwgMjI1LCAyMjEsIDk0LCAxLCAyMjUsIDIyMSwgOTQsIDEsIDQwLCAyMTUsIDE3OSwgOTQsIAorICAgIDEsIDIxNSwgMTc5LCA5NCwgMSwgMjI0LCAzOSwgOTQsIDEsIDIyMywgNjcsIDk0LCAxLCAyMjAsIDIwLCA5NCwgMSwgMjE3LCAKKyAgICAzOCwgOTQsIDI3LCAyMTEsIDYsIDUyLCAyMTQsIDMsIDk0LCAyNywgMjExLCA2LCAyMTQsIDQsIDIxMCwgMjMzLCA5NCwgMjcsIAorICAgIDIxMSwgNiwgNTIsIDIxMCwgMjMzLCA5NCwgMjI0LCAxNDEsIDI0MywgNDEsIDk0LCAyMjQsIDE0MSwgMjQzLCAzOSwgMTAsIAorICAgIDU0LCA1MCwgMTAsIDUsIDIyMSwgMjQyLCAxMCwgMjQ0LCAzMCwgMjMxLCAxNTQsIDEwLCA1LCAyMjIsIDIzLCAxMCwgNSwgCisgICAgMjIxLCAyNDUsIDI1NCwgMzcsIDI0OSwgMTA5LCAyMjIsIDE5MywgMjU0LCAzNywgMjQ0LCA0LCAyMjIsIDE5MywgMTAsIAorICAgIDIyMywgMTM0LCAyNTQsIDM3LCAyMjUsIDE4MywgMjMwLCAxOTMsIDUwLCAyNTQsIDM3LCAyMjUsIDE4MywgMjE2LCAyNDgsIAorICAgIDIxNiwgMTQ4LCA1MCwgMjU0LCAyMjEsIDUwLCAxMCwgMjQ5LCAyMTksIDEwLCAyNDgsIDE1MCwgMjIwLCAxMzcsIDEwLCAKKyAgICAyMjUsIDEzLCAyMTMsIDI0MSwgNTAsIDEwLCA1LCAyMzAsIDE3NCwgMTAsIDUsIDIyMiwgMywgMjU0LCAxNzIsIDIxMiwgNDUsIAorICAgIDEwLCA1LCAyNTQsIDE3MiwgMjUzLCAyMjEsIDEwLCA1LCAyMjMsIDE2NywgMjU0LCAxNzEsIDEwLCA1LCAyMjMsIDE3NSwgCisgICAgMjU0LCAxNTIsIDI1NCwgMTA0LCAxMCwgNSwgMjE3LCA3MCwgMTAsIDQsIDEyNSwgMjE3LCA4MCwgMTAsIDQsIDEyNSwgMjcsIAorICAgIDExMiwgMiwgMjMzLCAxMDMsIDIsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIDIxMCwgMTA4LCAxMCwgNCwgMjQ0LCAxNjUsIDEwLCAKKyAgICA0LCAyNDgsIDE4NCwgMTAsIDQsIDIzNCwgMjA1LCAxMCwgMjIwLCAxNTAsIDEwLCAyMTUsIDIxMSwgNTksIDIyNCwgMTQxLCAKKyAgICA3OCwgMTAsIDIyNCwgMTMsIDc4LCAxMCwgMSwgMjM0LCAyMDksIDIxMSwgNDMsIDEwLCAxLCAyNDIsIDE5LCAxMCwgMSwgCisgICAgMTEyLCAyLCAyMzEsIDIyOCwgNDgsIDEwLCAxLCAxMTIsIDIsIDIwMiwgNDgsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDQ4LCAKKyAgICAxMCwgMSwgMTEyLCAyLCAyMDIsIDUxLCAxMCwgMSwgNzksIDIsIDIwMiwgNDgsIDEwLCAxLCAyNTQsIDE3MCwgMTAsIDEsIAorICAgIDI1MiwgNTQsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY0LCAxMCwgMSwgMjE3LCA3LCAxMCwgMSwgMjE2LCAxOTIsIDEwLCAxLCAKKyAgICAyMzUsIDEyMywgMTAsIDEsIDI0MiwgMzcsIDEwLCAxLCAyMzQsIDEyOSwgMTAsIDEsIDI0OCwgMTk1LCAxMCwgMSwgMjE2LCAKKyAgICAyMDIsIDEwLCAxLCAyMjMsIDk1LCAxMCwgMSwgMjEwLCAxMDgsIDEwLCAxLCAyMjEsIDE2NiwgMTAsIDEsIDIyMCwgNTksIAorICAgIDEwLCAxLCAyMjIsIDI2LCAxMCwgMSwgMjQ4LCAyMTYsIDEwLCAxLCAyMTcsIDgwLCAxMCwgMSwgMjEwLCAxMTEsIDEwLCAxLCAKKyAgICAyNTQsIDE5NiwgMTAsIDEsIDI0MiwgMjQ0LCAxMCwgMSwgMjM0LCAxNzUsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIzNCwgCisgICAgMTc1LCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDIzNSwgMTkzLCAyMTQsIDEwNSwgMTAsIDEsIAorICAgIDI0NCwgMTY4LCA3OSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAKKyAgICAyMTcsIDQzLCAxMCwgMSwgMjQ0LCAxNDIsIDEwLCAxLCAyMjQsIDgxLCAxMCwgMSwgMjM0LCAyNTAsIDEwLCAxLCAyMzMsIAorICAgIDEwMiwgMTAsIDEsIDIzMSwgNzgsIDEwLCAxLCAyMjgsIDYyLCAxMCwgMSwgMjQxLCAyMTgsIDEwLCAxLCAyMTIsIDMwLCAxMCwgCisgICAgMSwgMTEyLCAyMzEsIDE5MiwgMTAsIDEsIDIxMSwgNDMsIDEwLCAyNDQsIDE2MywgMTAsIDI0OCwgMTgyLCAxMCwgMjM0LCAKKyAgICAyMDMsIDEwLCAyNDQsIDE2NSwgMTAsIDI0OCwgMTg0LCAxMCwgMjM0LCAyMDUsIDEwLCAyMjAsIDkzLCAxMCwgMjE4LCA0NSwgCisgICAgMTAsIDIzMSwgMjI2LCA0OCwgMTAsIDIwMiwgNDgsIDEwLCAyMDIsIDUxLCAxMCwgMjE4LCA2NSwgMjU0LCAxNzAsIDEwLCAKKyAgICAyMzUsIDE5MywgMjQ4LCAxODQsIDEwLCAxNjQsIDIyOCwgNjMsIDI0MiwgMjE4LCAxMCwgMjA5LCAyNTUsIDEwLCAyNSwgNSwgCisgICAgNCwgMjE0LCAxMDYsIDQ4LCAxMCwgMjUsIDUsIDIzNSwgMTkzLCA0LCAyMTQsIDEwNiwgNDgsIDEwLCAyNSwgNSwgNTksIDUxLCAKKyAgICAxMCwgMjIzLCA0OSwgMjQ4LCAxODQsIDEwLCAyNDQsIDE2NiwgMiwgMTEzLCAyNDcsIDExOCwgMTAsIDIxMiwgMzIsIDIwMiwgCisgICAgNTEsIDI1NCwgMzcsIDIxLCAyMTAsIDg2LCAyNTQsIDM3LCAyMSwgMTEwLCAyNTQsIDM3LCAyMSwgMTA1LCAyNTQsIDM3LCAKKyAgICAyMSwgMTU4LCAyNTQsIDM3LCAyMSwgMTYxLCAyNTQsIDM3LCAyMSwgMTg5LCAyNTQsIDM3LCAyMSwgMTk0LCAyNTQsIDM3LCAKKyAgICAyMSwgMTk4LCAyNTQsIDM3LCAyMSwgMTk1LCAyNTQsIDM3LCAyMSwgMjAwLCAxMCwgMjI1LCAxODIsIDUwLCAxMCwgMjQ4LCAKKyAgICA4MywgMjIwLCAxMzcsIDEwLCAyMTYsIDE0NiwgMjIwLCAxMzcsIDEwLCAyNDQsIDgxLCAyMjUsIDksIDIxOCwgMTU2LCAxMCwgCisgICAgMSwgMjQ3LCAxMTksIDI1MiwgNTQsIDEwLCAxLCAyNDcsIDExOSwgMjI0LCA4MSwgMTAsIDEsIDIxOCwgMjMsIDI1NCwgMTcwLCAKKyAgICAxMCwgMSwgMTEyLCAyMTIsIDQ2LCAxMCwgMSwgMTEyLCAyLCAyMTIsIDMyLCAyMDIsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyMTIsIAorICAgIDMyLCAyMDIsIDUxLCAxMCwgMSwgMTI1LCAyNDIsIDE5LCAxMCwgMSwgMTI1LCAyMDIsIDI1NCwgMTcwLCAxMCwgMSwgMTI1LCAKKyAgICAyMDIsIDIxMiwgMzAsIDEwLCAxLCAxMDQsIDIsIDIwMiwgNDgsIDEwLCAxLCAxMjUsIDIwMiwgMjExLCA0MywgMTAsIDEsIAorICAgIDIxNSwgMTQ4LCAxMCwgMSwgMjE1LCAxNDYsIDEwLCAxLCAyNTIsIDY0LCAxMCwgMSwgMjE3LCA4LCAyLCAyMjIsIDIzMywgCisgICAgMTAsIDEsIDIxNywgOCwgMiwgMTM0LCAxNzAsIDc3LCAyNDYsIDEwMywgMTAsIDEsIDIyNSwgMjA1LCAxMCwgMSwgMjE3LCA1LCAKKyAgICAxMCwgMSwgMjUyLCA1MiwgMTAsIDEsIDEyMiwgMiwgMjAyLCA0OCwgMTAsIDEsIDEyMiwgMiwgMTEzLCAxNzAsIDY3LCA0OCwgCisgICAgMTAsIDEsIDIyNywgMTUzLCAxMCwgMSwgMjQ2LCA0MywgMTAsIDEsIDEyMiwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjE3LCAKKyAgICAyNiwgMTAsIDEsIDIxNywgMjQsIDEwLCAxLCAyNDgsIDEzMCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAyMjIsIDIzMywgMTAsIDEsIAorICAgIDI0OCwgMTk2LCAyLCA1OSwgNTEsIDEwLCAxLCAyNDgsIDE5NiwgMiwgNTksIDI1MiwgNDMsIDIyLCA0LCAyMTcsIDgwLCAxMCwgCisgICAgMSwgMjQ4LCAyMDEsIDEwLCAxLCAyNDgsIDEzMiwgMTAsIDEsIDI0NiwgNzAsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMTM0LCAKKyAgICAxNzAsIDc3LCAyNDYsIDEwMywgMTAsIDEsIDI0OCwgMTk2LCAyLCAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgMSwgMjIyLCAxNzEsIAorICAgIDEwLCAxLCAyMjMsIDk2LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIyMywgOTYsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjIzLCAKKyAgICA5NiwgMiwgNTksIDUxLCAxMCwgMSwgMjIzLCA5NiwgMiwgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMjIzLCA5NiwgMiwgNTksIAorICAgIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMzUsIDEyMCwgCisgICAgMTAsIDEsIDIyMywgOTYsIDIsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgNTksIDI1MiwgNDMsIDIyLCAKKyAgICA1OSwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjIxLCAxNjcsIDIsIDEzNCwgMTcwLCAKKyAgICAyNTIsIDQzLCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjIyLCAyNywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjIyLCAKKyAgICAyNywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjE3LCA4MSwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIAorICAgIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI0NywgMTE5LCAyNDQsIDE0MiwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgMjMwLCAKKyAgICAxMDksIDUxLCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDU5LCA1MSwgMTAsIDEsIDIxMywgMjQ4LCAxMCwgMSwgMjQ0LCAxNDMsIDIsIAorICAgIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDIyNSwgMjAzLCAxMCwgMSwgMjI0LCA4MiwgMiwgNTksIDQ4LCAxMCwgMSwgMjI0LCA4MiwgCisgICAgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjM0LCAxNzQsIDEwLCAxLCAyMTcsIDI1MCwgMjM0LCAyNTAsIDEwLCAxLCAyMzQsIAorICAgIDI1MSwgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMzQsIDI1MSwgMiwgNTksIDQ4LCAxMCwgMSwgMjI5LCA3OSwgMTAsIDEsIDIzNCwgCisgICAgMjUxLCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyNDMsIDEyMiwgMTAsIDEsIDI0MywgMTIzLCAyLCAyMjIsIDIzMywgMTAsIAorICAgIDEsIDIyOSwgMiwgMTAsIDEsIDI0MywgMTIzLCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAyNDIsIDEwMSwgMTAsIDEsIDI0MywgCisgICAgMTIzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzMsIDEwMywgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAyMzMsIDEwMywgCisgICAgMiwgNTksIDQ4LCAxMCwgMSwgMjMzLCAxMDMsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzMywgMTAzLCAyLCAxMzQsIAorICAgIDE3MCwgNTEsIDEwLCAxLCAyMjgsIDYzLCAyLCA1OSwgNTEsIDEwLCAxLCAyMjgsIDYzLCAyNDIsIDIxOCwgMTAsIDEsIDIyMiwgCisgICAgMjE0LCAxMCwgMSwgMjI4LCA2MywgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMjgsIDYzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQ3LCAxNDEsIDEwLCAxLCAyMTcsIDI3LCAyLCA1OSwgNDgsIDEwLCAxLCAyNDEsIDIxOSwgMiwgNzksIAorICAgIDQ4LCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcxLCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCAyLCAyMDIsIDQ4LCAxMCwgCisgICAgMSwgMjE3LCA4LCAyMzEsIDE2NSwgMjQyLCAxNzEsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMjIsIDIzMywgMTAsIDEsIDIzNCwgCisgICAgNzMsIDIyNiwgMjM0LCAxMCwgMSwgMjI2LCAyMzQsIDEwLCAxLCA3MCwgMTAsIDEsIDIxMCwgMjEyLCAxMCwgMSwgMjM0LCAKKyAgICA3MywgMjEwLCAyMTIsIDEwLCAxLCAyMTIsIDMxLCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMTMsIDI1NSwgMTAsIDEsIAorICAgIDI0NCwgMTY4LCAyMTEsIDQzLCAxMCwgMSwgNzksIDIsIDIxNywgNzcsIDEwLCAxLCA3OSwgMiwgNCwgMjE0LCAxMDUsIDEwLCAKKyAgICAxLCAyMTIsIDMxLCAyLCA1OSwgNDgsIDEwLCAxLCA3NSwgMTAsIDEsIDc5LCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCA3OSwgCisgICAgMjUyLCAxMzIsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDIsIDIwMiwgNDgsIDEwLCAyNDMsIDIyOSwgMjE4LCAxMjksIDEwLCAxLCAKKyAgICAyNTQsIDI0MywgMTAsIDQsIDEyNSwgMjcsIDIyMiwgMjcsIDIsIDIzMywgMTAzLCAyLCAxMTIsIDIzMSwgMTkyLCAxMCwgNCwgCisgICAgMTI1LCAyNywgMjI0LCA4MiwgMiwgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTIsIDEwLCA0LCAxMjUsIDY2LCA2NSwgMTcsIAorICAgIDEwLCA0LCAxMjUsIDIzMywgMTAzLCAyNTQsIDE3MCwgMTAsIDQsIDEyNSwgMjM1LCAxMjMsIDEwLCA0LCAxMjUsIDEzNCwgCisgICAgMjQ3LCAxMTgsIDEwLCA0LCAxMjUsIDIyMSwgMTY2LCAxMCwgMjQ1LCAxNDMsIDY0LCAyNTMsIDE2NiwgMTAsIDIxOCwgMTUyLCAKKyAgICA2NCwgMjIyLCAxMzgsIDI0NSwgMTc1LCAyNDEsIDE1NSwgMTAsIDQsIDEyNSwgMjIyLCAxODMsIDIxMCwgODYsIDEwLCA0LCAKKyAgICAxMjUsIDIxNCwgMTU5LCAyMjMsIDExNSwgMjEwLCA4NiwgMTAsIDQsIDEyNSwgMjQ3LCAxMTksIDI0MSwgMjM2LCA2NCwgCisgICAgMjM0LCAxMjksIDEwLCA0LCAxMjUsIDY2LCA1MywgMTcsIDEwLCA0LCAxMjEsIDIyMSwgMTY2LCAxMCwgNCwgMTI1LCAyMzEsIAorICAgIDIyNywgMTAsIDQsIDIxMiwgMzAsIDEwLCA0LCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAKKyAgICAyMjgsIDYyLCAxMCwgMjI1LCA0MSwgNjQsIDIyMiwgMTMsIDEwLCAyNDUsIDE1MiwgMjUwLCAxNzUsIDEyMSwgMjE4LCAxMjksIAorICAgIDEwLCAyNDUsIDE1MiwgMjUwLCAxNzUsIDEyNSwgMjE4LCAxMjksIDEwLCAyMjIsIDE4MywgMTI1LCAyMTgsIDEzMCwgMiwgCisgICAgMjQ0LCAxMDQsIDI1MCwgMTc0LCAxMCwgNCwgMTIxLCAyMzEsIDc4LCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDIzNSwgMTkzLCAKKyAgICAyMTQsIDEwNSwgMTAsIDEsIDIyMywgOTYsIDIsIDIzNSwgMTkzLCAyMTQsIDEwNSwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIAorICAgIDIxMCwgODYsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTAsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMDUsIDI0NSwgMjIsIAorICAgIDI1NCwgMzcsIDIxLCAxNTgsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxNjEsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxODksIAorICAgIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxOTQsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxOTgsIDI0NSwgMjIsIDI1NCwgMzcsIAorICAgIDIxLCAxOTUsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAyMDAsIDEwLCAxLCAyMjAsIDYwLCAyLCA1OSwgNTEsIDEwLCAxLCAKKyAgICAyNDgsIDIxNywgMiwgNTksIDUxLCAxMCwgMSwgMjQyLCAyNDUsIDIsIDU5LCA1MSwgMTAsIDUsIDIxOSwgMTU4LCAyNTQsIAorICAgIDEyNiwgMTAsIDUsIDIxOSwgMTU4LCAyMjQsIDIzNSwgMjMxLCA1OCwgMTAsIDEsIDI0MSwgMjE5LCAyLCAyMzUsIDE5MywgCisgICAgMjE0LCAxMDUsIDE4OCwgMjQ1LCAxNDMsIDY0LCAyMjYsIDE0LCAxODgsIDIxOCwgMTksIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgMTg4LCAyMTgsIDY3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDE4OCwgMjE4LCAxOSwgMjQ5LCAyMjYsIDE4OCwgMjE4LCA2NywgCisgICAgMjQ5LCAyMjYsIDE4OCwgMjAzLCAyNDksIDIyNiwgMTg4LCAyNDksIDIyNywgMjE5LCAxMDYsIDIzMywgNDYsIDE4OCwgMjQ5LCAKKyAgICAyMjcsIDIxOSwgMTA2LCAyMjIsIDI1MSwgMTg4LCAyMTgsIDE5LCAyNDksIDIyNywgMjE5LCAxMDYsIDIzMywgNDYsIDE4OCwgCisgICAgMjE4LCA2NywgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMjIsIDI1MSwgMTg4LCAyNDksIDE4MCwgMTg4LCAyNDIsIDEsIDIyNiwgCisgICAgMjUwLCAxODgsIDI0MiwgMSwgMjMxLCAzNiwgMTg4LCAyNDIsIDEsIDI1MywgMjE4LCAxODgsIDI1NSwgMjEsIDc4LCAxODgsIAorICAgIDEsIDI1NCwgMTc0LCAxODgsIDEsIDIxOCwgMjMsIDI1NCwgMTc0LCAxODgsIDEsIDI1MiwgMjUsIDE4OCwgMSwgMjQzLCAKKyAgICAxMTMsIDE4OCwgMSwgMjQzLCAxMTQsIDI0MywgOTEsIDE4OCwgMSwgMjQ4LCAxOTIsIDE4OCwgMSwgMjQ3LCAxMTksIDI0OCwgCisgICAgMTkzLCAyMjIsIDIyOSwgMTg4LCAxLCAyNDEsIDIzOCwgMTg4LCAxLCAyMTIsIDMwLCAxODgsIDEsIDIxMCwgMTA4LCAxODgsIAorICAgIDEsIDI0MSwgMTk1LCAxODgsIDEsIDIxNiwgMjI2LCAxODgsIDEsIDIxNiwgMjI3LCAyNDMsIDkxLCAxODgsIDEsIDIxMCwgCisgICAgMTk5LCAxODgsIDEsIDIxMCwgMjAwLCAyNDEsIDIzOCwgMTg4LCAxLCAyMzQsIDIyNSwgMTg4LCAxLCAyMzMsIDEwMSwgMTg4LCAKKyAgICAxLCAyMzAsIDE5MCwgMTg4LCAxLCAyMjcsIDE5NCwgMTg4LCAxLCAyMjAsIDE0MywgMTg4LCAxLCA0MCwgMjIwLCAxNDMsIAorICAgIDE4OCwgMSwgNzUsIDE4OCwgMSwgMjI1LCAyMjEsIDE4OCwgMSwgMjIzLCA0OSwgMjI1LCAyMjEsIDE4OCwgMSwgMjIyLCAyNCwgCisgICAgMTg4LCAxLCAyMjQsIDc1LCAxODgsIDEsIDIyMiwgMjI5LCAxODgsIDEsIDIyMCwgMjAsIDE4OCwgMSwgMjE3LCAzNiwgMTg4LCAKKyAgICAxLCAyMjUsIDE2OSwgMjUyLCAxMiwgMTg4LCAxLCAyMjUsIDE2OSwgMjQyLCAyNDIsIDE4OCwgMSwgMjI1LCAxNjksIDI0OCwgCisgICAgMjAsIDE4OCwgMjI0LCAxNTEsIDQ4LCAxODgsIDIyNCwgMTUxLCA1MSwgMTg4LCAyMjQsIDE1MSwgMjQ2LCAxMTcsIDE4OCwgCisgICAgMjEwLCAxNywgNDgsIDE4OCwgMjEwLCAxNywgNTEsIDE4OCwgMjEwLCAxNywgMjQ2LCAxMTcsIDE4OCwgMjIzLCAxMzEsIDQ4LCAKKyAgICAxODgsIDIyMywgMTMxLCA1MSwgMTg4LCAyNDYsIDExOCwgMjEwLCAyNCwgMjQxLCA0NCwgMTg4LCAyNDYsIDExOCwgMjEwLCAKKyAgICAyNCwgMjU0LCAxMDUsIDE4OCwgMjQxLCAyNDEsIDQ4LCAxODgsIDI0MSwgMjQxLCA1MSwgMTg4LCAyNDEsIDI0MCwgMjQ2LCAKKyAgICAxMTcsIDE4OCwgMjQ1LCA3OSwgNDgsIDE4OCwgMjQ1LCA3OSwgNTEsIDE4OCwgMjIyLCAxMDcsIDE4OCwgMjQ0LCAxMzYsIAorICAgIDI0NywgMTIwLCAxODgsIDIyMywgMjQ4LCAxODgsIDIyMiwgMTM0LCAxODgsIDExMywgNjcsIDE3MCwgNDgsIDE4OCwgMTEzLCAKKyAgICA2NywgMTcwLCA1MSwgMTg4LCAxMzQsIDE3MCwgNDgsIDE4OCwgMTM0LCAxNzAsIDUxLCAxODgsIDIyNiwgMjQ4LCAyMzIsIAorICAgIDIxNCwgNDgsIDE4OCwgMjI2LCAyNDgsIDIzMiwgMjE0LCA1MSwgMTg4LCAyMzAsIDU2LCAxODgsIDI1MiwgMTMxLCAxODgsIAorICAgIDEsIDIxOSwgNDksIDIxMCwgODAsIDE4OCwgMSwgMjE5LCA0OSwgMjM0LCAxMjIsIDE4OCwgMSwgMjE5LCA0OSwgMjQ0LCAKKyAgICAxNTQsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMzQsIDE3MCwgMjQwLCAyNTAsIDUxLCAxMCwgMSwgMjUyLCA1NSwgMiwgNTksIAorICAgIDI1MiwgNDMsIDIyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgCisgICAgNTEsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgMjUyLCA0MywgMjIsIDExMywgMTcwLCAKKyAgICA0OCwgMTAsIDEsIDI1MiwgNTUsIDIsIDExMywgMTcwLCAyNTIsIDQzLCAyMiwgNTksIDQ4LCAxMCwgMSwgMjUyLCA1NSwgMiwgCisgICAgMjM1LCAxOTMsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDI1MiwgNTUsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMTIyLCAyLCAKKyAgICAxMTMsIDE3MCwgNDgsIDEwLCAxLCAxMjIsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDI0OCwgCisgICAgMTk2LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDI1MiwgNDMsIDIyLCA0LCAyMTcsIDgwLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIAorICAgIDIzNSwgMTkzLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyMjMsIDk2LCAyLCA5MSwgMTAsIDEsIDIyMSwgMTY3LCAyLCAKKyAgICAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAKKyAgICAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCAKKyAgICA0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAyNDQsIDE0MywgMiwgMTM0LCAxNzAsIDIyNSwgCisgICAgNywgMjE0LCAxNTMsIDUxLCAxMCwgMSwgMjM0LCAxNzUsIDIsIDU5LCA0OCwgMTAsIDEsIDIzNCwgMTc1LCAyLCAxMzQsIAorICAgIDE3MCwgNDgsIDEwLCAxLCAyMzQsIDE3NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIDUxLCAxMCwgMSwgNjYsIAorICAgIDIsIDU5LCA0OCwgMTAsIDEsIDY2LCAyLCA1OSwgNTEsIDEwLCAxLCAyMjgsIDYzLCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAKKyAgICAyMjgsIDYzLCAyLCA0LCAyMTcsIDgwLCAxMCwgMSwgMjI4LCA2MywgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAyMzMsIDEwMywgCisgICAgMiwgMTMwLCAxMCwgMSwgMjIzLCA5NiwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgMTAsIDEsIDIyMywgOTYsIDIsIAorICAgIDIwMiwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgMTAsIDEsIDEyMiwgMiwgNCwgCisgICAgMTAsIDEsIDIxNywgODEsIDUxLCAxMCwgMSwgMTIyLCAyLCA0LCAxMCwgMSwgMjE3LCA4MSwgMjIsIDExMywgMjQ3LCAxMTgsIAorICAgIDEwLCAxLCAyMjEsIDE2NywgMiwgNCwgMTAsIDEsIDIxNywgODEsIDIyLCAxMTMsIDI0NywgMTE4LCAxMCwgMSwgMjIzLCA5NiwgCisgICAgMiwgNCwgMTAsIDEsIDIxNywgODEsIDIyLCAxMTMsIDI0NywgMTE4LCAxMCwgMSwgMTIyLCAyLCA0LCAxMCwgMSwgMjE3LCAKKyAgICA4MSwgNDgsIDEwLCAxLCAxMTIsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTMsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyNDUsIAorICAgIDIyLCAyNTQsIDM3LCAyMSwgMTM0LCA0OCwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIAorICAgIDExMywgNDgsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMzQsIDQ4LCAxMCwgMSwgCisgICAgMjQ0LCAxNjgsIDc5LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMjQ0LCAxMSwgNTEsIDEwLCAxLCAyMTIsIDMxLCAyLCAKKyAgICAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEzLCA0OCwgMTAsIDEsIDIxMiwgMzEsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAxMzQsIDQ4LCAxMCwgMSwgNzksIDI1MiwgMTMzLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEzLCA0OCwgMTAsIDEsIAorICAgIDc5LCAyNTIsIDEzMywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDEzNCwgNDgsIDEwLCAxLCAxMjIsIDIsIDI0NSwgMjIsIAorICAgIDI1NCwgMzcsIDIxLCAyNDQsIDExLCA1MSwgMTAsIDEsIDIyMSwgMTY3LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMjQ0LCAKKyAgICAxMSwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgMjM1LCAxOTMsIDIxNCwgMTA1LCAxMCwgMSwgMjM0LCAyNTEsIDIsIDExMywgCisgICAgMTcwLCA0OCwgMjE2LCAyMDUsIDEsIDI0MiwgNDYsIDIxNiwgMjA1LCAxLCAyMjAsIDY4LCAyMTYsIDIwNSwgMSwgMjI4LCAKKyAgICA2MSwgMjE2LCAyMDUsIDEsIDIyMywgMTg0LCAyMTYsIDIwNSwgMSwgMjUyLCAxODksIDIxNiwgMjA1LCAxLCAyMzIsIDI1MSwgCisgICAgMjE2LCAyMDUsIDEsIDIzNSwgOCwgMjE2LCAyMDUsIDEsIDI1NCwgMTU5LCAyMTYsIDIwNSwgMSwgMjE0LCAyNSwgMjE2LCAKKyAgICAyMDUsIDEsIDIzMSwgNzcsIDIxNiwgMjA1LCAxLCAyNDQsIDE5NCwgMjE2LCAyMDUsIDEsIDI0OCwgMjMsIDIxNiwgMjA1LCAKKyAgICAxLCAyMTYsIDIwNywgMjE2LCAyMDUsIDEsIDIzMywgMTMxLCAyMTYsIDIwNSwgMSwgMjQzLCAxMzEsIDIxNiwgMjA1LCAxLCAKKyAgICAyNDIsIDE3NywgMjE2LCAyMDUsIDEsIDIyMSwgMTY1LCAyMTYsIDIwNSwgMSwgMjQ4LCAxNDgsIDIxNiwgMjA1LCAxLCAyMTAsIAorICAgIDEwMCwgMjE2LCAyMDUsIDEsIDIxNywgMzcsIDIxNiwgMjA1LCAxLCAyMTEsIDEwMywgMjE2LCAyMDUsIDEsIDIyNSwgMjMzLCAKKyAgICAyMTYsIDIwNSwgMSwgMjM1LCAxMjgsIDIxNiwgMjA1LCAxLCAyNTAsIDEzNCwgMjE2LCAyMDUsIDEsIDIxNSwgMTU1LCAyMTYsIAorICAgIDIwNSwgMSwgMjQxLCAxODgsIDIxNiwgMjA1LCAxLCAyMzQsIDEzMSwgMjE2LCAyMDUsIDEsIDIxNiwgMjA2LCAyMTYsIDIwNSwgCisgICAgMSwgMjEwLCAxMTUsIDIxNiwgMjA1LCAxLCAyMjAsIDU4LCAyMTYsIDIwNSwgMSwgMjIyLCAzMCwgMjE2LCAyMDUsIDEsIAorICAgIDI0OCwgMjE5LCAyMTYsIDIwNSwgMSwgMTExLCAyMTYsIDIwNSwgMSwgMjEwLCAyMywgMjE2LCAyMDUsIDEsIDI1NCwgMTkzLCAKKyAgICAyMTYsIDIwNSwgMSwgMjQyLCAyNDMsIDIxNiwgMjA1LCAxLCAyMjQsIDg1LCAyMTYsIDIwNSwgMSwgMjEyLCA2MywgMjE2LCAKKyAgICAyMDUsIDI1NSwgMjIsIDIxNiwgMjA1LCAyNTUsIDM4LCAyMTYsIDIwNSwgMjQwLCAxMTQsIDIxNiwgMjA1LCAyNDUsIDIwOCwgCisgICAgMjE2LCAyMDUsIDIxNCwgMjIyLCAyMTYsIDIwNSwgMjI2LCAxODIsIDIxNiwgMjA1LCAyNDUsIDIxNiwgMjE2LCAyMDUsIAorICAgIDI0NSwgMTYsIDIxNiwgMjA1LCAyMjYsIDI0NywgMjE2LCAyMDUsIDIyNiwgMjU1LCAyMTYsIDIwNSwgMjE4LCA0NSwgMjE2LCAKKyAgICAyMDUsIDEsIDIyOSwgMjI1LCAyMjgsIDEzNywgMjEsIDIxMCwgODYsIDIyOCwgMTM3LCAyMSwgMTEwLCAyMjgsIDEzNywgMjEsIAorICAgIDEwNSwgMjI4LCAxMzcsIDIxLCAxNTgsIDIyOCwgMTM3LCAyMSwgMTYxLCAyMjgsIDEzNywgMjEsIDE4OSwgMjI4LCAxMzcsIAorICAgIDIxLCAxOTQsIDIyOCwgMTM3LCAyMSwgMTk4LCAyMjgsIDEzNywgMjEsIDE5NSwgMjI4LCAxMzcsIDIxLCAyMDAsIDIyOCwgCisgICAgMTM3LCAxLCA2MSwgMjI4LCAxMzcsIDEsIDI0NSwgMjA5LCAyMjgsIDEzNywgMSwgNzMsIDIyOCwgMTM3LCAxLCA3NSwgMjI4LCAKKyAgICAxMzcsIDEsIDcwLCAyMjgsIDEzNywgMSwgMjI2LCAxODMsIDIyOCwgMTM3LCAxLCA3NiwgMjI4LCAxMzcsIDEsIDI0OCwgCisgICAgMjA5LCAyMjgsIDEzNywgMSwgMjMwLCAyNSwgMjI4LCAxMzcsIDEsIDI1MiwgMTkxLCAyMjgsIDEzNywgMSwgMTkwLCAyMjgsIAorICAgIDEzNywgMSwgMjE3LCAxMDUsIDIyOCwgMTM3LCAxLCAyMzUsIDE0MSwgMjI4LCAxMzcsIDEsIDI1MCwgMTU3LCAyMjgsIDEzNywgCisgICAgMSwgMjQ4LCAyMjEsIDIyOCwgMTM3LCAxLCAyMDUsIDIyOCwgMTM3LCAxLCAyMjIsIDE3OSwgMjI4LCAxMzcsIDEsIDIwNiwgCisgICAgMjI4LCAxMzcsIDEsIDI0MywgNzksIDIyOCwgMTM3LCAxLCAyNDQsIDE5NiwgMjI4LCAxMzcsIDEsIDE3NiwgMjI4LCAxMzcsIAorICAgIDEsIDIzMywgMTM1LCAyMjgsIDEzNywgMSwgMjI5LCAyMjksIDIxMSwgMjIzLCAyMjgsIDEzNywgMSwgMTg0LCAyMjgsIDEzNywgCisgICAgMSwgMjI3LCAxNjUsIDIyOCwgMTM3LCAxLCAxOTcsIDIyOCwgMTM3LCAxLCAxNjIsIDIyOCwgMTM3LCAxLCAyMTIsIDY1LCAKKyAgICAyMjgsIDEzNywgMSwgMTkxLCAyMjgsIDEzNywgMSwgMjI3LCAxNjYsIDIxMSwgMjIzLCAyMjgsIDEzNywgMSwgMjM1LCA2MSwgCisgICAgMjM1LCAxNDEsIDIyOCwgMTM3LCAxLCAyMzUsIDYxLCAyNTAsIDE1NywgMjI4LCAxMzcsIDEsIDIzNSwgNjEsIDIwNSwgMjI4LCAKKyAgICAxMzcsIDM4LCAyMTksIDI1MSwgMTI1LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDIxOSwgMjUxLCAxMjEsIDIxNiwgMzAsIAorICAgIDIyOCwgMTM3LCAzOCwgMjE5LCAyNTEsIDIyMiwgMjI4LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMjQ4LCAzOCwgCisgICAgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDEyNSwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDEyMSwgMjE2LCAKKyAgICAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDIyMiwgMjI4LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDIyOSwgMTkzLCA3OCwgCisgICAgMjI4LCAxMzcsIDM4LCA1MiwgNTksIDQ4LCAyMjgsIDEzNywgMTI1LCAxMzgsIDI1NCwgNTcsIDIyOCwgMTM3LCAxMjEsIAorICAgIDEzOCwgMjU0LCA1NywgMjI4LCAxMzcsIDE2LCAyMjYsIDE4NCwgMjQ4LCA1MCwgMjI4LCAxMzcsIDE2LCAyNDMsIDc4LCAKKyAgICAyMjgsIDEzNywgMjQ5LCAyMTksIDIyOCwgMTM3LCAyNDUsIDMxLCA3OCwgMjI4LCAxMzcsIDIzMywgMTA4LCAyMjEsIDI1MiwgCisgICAgMSwgMjU0LCAxNzYsIDIyMSwgMjUyLCAxLCAyNTEsIDIyOCwgMjIxLCAyNTIsIDEsIDI0MywgMTEyLCAyMjEsIDI1MiwgMSwgCisgICAgMjQ4LCAxOTQsIDIyMSwgMjUyLCAxLCAyMzUsIDE1MiwgMjIxLCAyNTIsIDEsIDI1MiwgMTg5LCAyMjEsIDI1MiwgMSwgMjEwLCAKKyAgICA4OSwgMjIxLCAyNTIsIDEsIDIzNSwgMTYwLCAyMjEsIDI1MiwgMSwgMjE2LCA2NywgMjIxLCAyNTIsIDEsIDIxMCwgMTgyLCAKKyAgICAyMjEsIDI1MiwgMSwgMjM1LCA5LCAyMjEsIDI1MiwgMSwgMjMzLCAxMjgsIDIyMSwgMjUyLCAxLCAyMzAsIDE5MCwgMjIxLCAKKyAgICAyNTIsIDEsIDIyNywgMTk0LCAyMjEsIDI1MiwgMSwgMjE5LCAxNTYsIDIyMSwgMjUyLCAxLCAyMzUsIDI1NSwgMjIxLCAyNTIsIAorICAgIDEsIDI0NCwgMTIxLCAyMjEsIDI1MiwgMSwgMjE1LCAxODEsIDIyMSwgMjUyLCAxLCAyMjQsIDEwLCAyMjEsIDI1MiwgMSwgCisgICAgMjIyLCAyMjksIDIyMSwgMjUyLCAxLCAyMjAsIDg1LCAyMjEsIDI1MiwgMSwgMjE3LCAxMDAsIDIyMSwgMjUyLCAxNjQsIAorICAgIDIzNSwgMjU1LCAyMjEsIDI1MiwgMTY0LCAyMzUsIDI1NCwgMjIxLCAyNTIsIDE2NCwgMjI2LCAyNDMsIDIyMSwgMjUyLCAKKyAgICAxNjQsIDI0OCwgMjA3LCAyMjEsIDI1MiwgNTgsIDEsIDI0NSwgMTA1LCAyMTAsIDE4MiwgMjIxLCAyNTIsIDE2NCwgMjQ1LCAKKyAgICAxMDUsIDIxMCwgMTgyLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNzUsIDIyMSwgMjUyLCAyNSwgNSwgNzUsIDIyMSwgMjUyLCAKKyAgICAyNSwgNSwgMjI2LCAxMTgsIDI1NSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgMjI2LCAxMTgsIDYxLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNjEsIDIyMSwgCisgICAgMjUyLCAyNSwgNSwgNjEsIDIyMSwgMjUyLCA1OCwgMSwgMjE5LCAyNTEsIDYxLCAyMjEsIDI1MiwgMjUsIDUsIDIxOSwgMjUxLCAKKyAgICA2MSwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDcwLCAyMjEsIDI1MiwgMjUsIDUsIDcwLCAyMjEsIDI1MiwgNTgsIDEsIDczLCAKKyAgICAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgNzYsIDIyMSwgCisgICAgMjUyLCAyNSwgNSwgMjE4LCA0NSwgMjIxLCAyNTIsIDE2NCwgMjI5LCA5MiwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMjksIDkyLCAKKyAgICAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgMjE4LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgMTE0LCAyMjEsIDI1MiwgCisgICAgMjI0LCAxNDEsIDI1MiwgMTE0LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1MywgMjAxLCAyMjEsIDI1MiwgMjI0LCAxNDEsIAorICAgIDIyMCwgOCwgMjIxLCAyNTIsIDI1NSwgMjEsIDc4LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIzMSwgNjgsIDIyNCwgNDUsIDIyMSwgCisgICAgMjUyLCAyMjQsIDE0MSwgMjEwLCAzMSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMjQsIDQ1LCAyMjEsIDI1MiwgMjI0LCAxNDEsIAorICAgIDIxMCwgMTE0LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIxNSwgOTAsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCA5LCAyMjEsIAorICAgIDI1MiwgMjI0LCAxNDEsIDIxOSwgNTMsIDIzMSwgMTQ1LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgMTAwLCAyMzEsIDE4MiwgCisgICAgMSwgMjQyLCAyNCwgMjMxLCAxODIsIDEsIDI1NSwgMjUsIDIzMSwgMTgyLCAxLCAyNTQsIDIxNiwgMjMxLCAxODIsIDEsIAorICAgIDI1NCwgMjU1LCAyMzEsIDE4MiwgMSwgMjU0LCAyMDksIDIzMSwgMTgyLCAxLCAyMTQsIDEyNCwgMjMxLCAxODIsIDEsIDI1MywgCisgICAgMTYwLCAyMzEsIDE4MiwgMSwgMjM1LCAxNjAsIDIzMSwgMTgyLCAxLCAyNTMsIDE5OCwgMjMxLCAxODIsIDEsIDI1NCwgMTgxLCAKKyAgICAyMzEsIDE4MiwgMSwgMjU0LCAxODYsIDIzMSwgMTgyLCAxLCAyNTQsIDE3OCwgMjMxLCAxODIsIDEsIDI1NCwgMTM2LCAyMzEsIAorICAgIDE4MiwgMSwgMjU0LCAxMjMsIDIzMSwgMTgyLCAxLCAyNTMsIDIzNywgMjMxLCAxODIsIDEsIDIzNSwgMjU1LCAyMzEsIDE4MiwgCisgICAgMSwgMjU0LCA3MiwgMjMxLCAxODIsIDEsIDI1MywgMjA4LCAyMzEsIDE4MiwgMSwgMjU0LCA0NSwgMjMxLCAxODIsIDEsIAorICAgIDI1NCwgNDEsIDIzMSwgMTgyLCAxLCAyNTMsIDIzMSwgMjMxLCAxODIsIDEsIDI1MywgMjA2LCAyMzEsIDE4MiwgMSwgMjQ2LCAKKyAgICA1NSwgMjMxLCAxODIsIDEsIDIzNSwgMiwgMjMxLCAxODIsIDEsIDI1NCwgMTk2LCAyMzEsIDE4MiwgMjU0LCAyMjIsIDc4LCAKKyAgICAyMzEsIDE4MiwgMjEzLCAxMzYsIDc4LCAyMzEsIDE4MiwgMjQzLCA1MywgNzgsIDIzMSwgMTgyLCAyMjQsIDE0MCwgMTAsIDEsIAorICAgIDI1MiwgNTUsIDIsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDE1MSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjE3LCA4MSwgCisgICAgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDU5LCAyNTIsIDQzLCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgCisgICAgMSwgMjI0LCA4MiwgMiwgNTksIDUxLCAxMCwgMSwgMjMzLCAxMDMsIDIsIDUyLCAxMzAsIDEwLCAxLCA2NiwgMiwgMTM0LCAKKyAgICAxNzAsIDQ4LCAxMCwgMSwgNzksIDIsIDExMywgMTcwLCAyNTIsIDQzLCAyMiwgMjAyLCA0OCwgMTAsIDEsIDc5LCAyLCAxMTMsIAorICAgIDE3MCwgMjUyLCA0MywgMjIsIDU5LCA0OCwgMTAsIDEsIDIyMywgOTYsIDIsIDIzMiwgMTIzLCAxMCwgMSwgMjEyLCAzMSwgMiwgCisgICAgNTksIDIxMSwgMjMxLCAxMCwgMSwgMjIyLCAyMDEsIDIxMSwgNDMsIDEwLCAyNDksIDk5LCAyNDQsIDE2NSwgMTAsIDI0OSwgCisgICAgOTksIDI0OCwgMTg0LCAxMCwgMjQ5LCA5OSwgMjM0LCAyMDUsIDEwLCAyNDksIDk5LCAyNDQsIDE2MywgMTAsIDI0OSwgOTksIAorICAgIDI0OCwgMTgyLCAxMCwgMjQ5LCA5OSwgMjM0LCAyMDMsIDEwLCAxMzgsIDEyMywgNTksIDQ4LCAxMCwgMTM4LCAxMTMsIDE3MCwgCisgICAgNDgsIDEwLCAxMzgsIDIzMiwgMTI0LCA0OCwgMTAsIDEzOCwgMTIzLCA1OSwgNTEsIDEwLCAxMzgsIDExMywgMTcwLCA1MSwgCisgICAgMTAsIDEzOCwgMjMyLCAxMjQsIDUxLCAxMCwgMjA0LCAyNDQsIDE2MywgMTAsIDIwNCwgMjQ4LCAxODIsIDEwLCAyMDQsIAorICAgIDIzNCwgMjAzLCAxMCwgNCwgMTI1LCAyMTIsIDMwLCAxMCwgMjQ0LCAxNjYsIDIsIDIyMiwgMjMzLCAxMCwgMjQ0LCAxNjYsIAorICAgIDIsIDU5LCA0OCwgMTAsIDIzNCwgMjA2LCAyLCA1OSwgNTEsIDEwLCA0MywgMjUzLCAyNTAsIDQ4LCAxMCwgNDQsIDI1MywgCisgICAgMjUwLCA0OCwgMTAsIDQzLCAyNTMsIDI1MCwgNTEsIDEwLCA0NCwgMjUzLCAyNTAsIDUxLCAxMCwgNTIsIDQ0LCAyNTMsIAorICAgIDI1MCwgNDgsIDEwLCA1MiwgNDQsIDI1MywgMjUwLCA3NywgMiwgMjQ3LCAxMjAsIDEwLCA0NCwgMjUzLCAyNTAsIDc3LCAyLCAKKyAgICAyNDcsIDEyMCwgMTAsIDI0OCwgMTg1LCAyLCAyNDcsIDEyMCwgODQsIDUsIDIzNSwgMTkzLCAyNTAsIDI1NSwgODQsIDUsIAorICAgIDI1MCwgMjU1LCA4NCwgNSwgMjU0LCA3NSwgODQsIDUsIDIxMywgMTQ3LCA4NCwgMSwgMjE5LCAyNTEsIDYxLCA4NCwgMSwgCisgICAgNjEsIDg0LCAxLCAyNTUsIDczLCA4NCwgMSwgNzMsIDg0LCAxLCAyMzYsIDMzLCA4NCwgMSwgNzAsIDg0LCAxLCAyMTQsIAorICAgIDExOCwgODQsIDEsIDE0OSwgMTUzLCA4NCwgMSwgMTQ5LCAxNTYsIDg0LCAxLCAyNTEsIDIsIDc1LCA4NCwgMSwgMjE5LCAKKyAgICAyNTEsIDc1LCA4NCwgMSwgNzUsIDg0LCAxLCAyNTQsIDIwMSwgODQsIDEsIDI1MSwgMiwgNzYsIDg0LCAxLCAyMTksIDI1MSwgCisgICAgNzYsIDg0LCAxLCA3NiwgODQsIDEsIDI1MywgMTkyLCA4NCwgMSwgMTc2LCA4NCwgMSwgMjM0LCAxMzIsIDg0LCAxLCAyNDMsIAorICAgIDEzNSwgODQsIDEsIDI0MiwgMjQ5LCA4NCwgMSwgMjI5LCA3NywgODQsIDEsIDI1MSwgMzMsIDg0LCAxLCAyNTAsIDE1NywgCisgICAgODQsIDEsIDIzNSwgMTQxLCA4NCwgMSwgMjM1LCAxMTQsIDg0LCAxLCAyMjcsIDE2NSwgODQsIDEsIDIxNSwgMTU2LCA4NCwgCisgICAgMSwgMjE1LCAxNDQsIDg0LCAxLCAyNDgsIDEzNSwgODQsIDEsIDI0OCwgMTE5LCA4NCwgMSwgMjI4LCAxMTAsIDg0LCAxLCAKKyAgICAyMTcsIDEwNSwgODQsIDEsIDIxNiwgMjA4LCA4NCwgMSwgMjQ4LCAyMjEsIDg0LCAxLCAyNDgsIDI1LCA4NCwgMSwgMTk3LCAKKyAgICA4NCwgMSwgMjI4LCA5MiwgODQsIDEsIDE5MCwgODQsIDEsIDIyNSwgMTQ3LCA4NCwgMSwgMjUyLCAxOTEsIDg0LCAxLCAyNTIsIAorICAgIDE4LCA4NCwgMSwgMTg0LCA4NCwgMSwgMTkxLCA4NCwgMSwgMjA1LCA4NCwgMSwgMjIyLCAxNzksIDg0LCAxLCAyMzMsIDEzNSwgCisgICAgODQsIDEsIDIzMiwgMTg0LCA4NCwgMSwgMjMyLCAxNzUsIDg0LCAxLCAyMTQsIDI3LCA4NCwgMSwgMjIwLCAxMDIsIDg0LCAxLCAKKyAgICAyMTgsIDIyMywgODQsIDEsIDIwNiwgODQsIDEsIDE2MiwgODQsIDI1LCA1LCAyMjYsIDIzNCwgODQsIDI1LCA1LCAyMjYsIAorICAgIDE4MSwgODQsIDUsIDIyNywgMjA1LCA4NCwgNSwgMjUzLCAxNzUsIDg0LCAyNSwgNSwgMjU1LCA3MywgODQsIDI1LCA1LCA3MywgCisgICAgODQsIDI1LCA1LCAyMzYsIDMzLCA4NCwgMjUsIDUsIDcwLCA4NCwgMjUsIDUsIDIxNCwgMTE4LCA4NCwgMjUsIDUsIDE0OSwgCisgICAgMTUzLCA4NCwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDg0LCAyNSwgNSwgMjUxLCAyLCA3NSwgODQsIDI1LCA1LCAyMTksIAorICAgIDI1MSwgNzUsIDg0LCAyNSwgNSwgNzUsIDg0LCAyNSwgNSwgMjU0LCAyMDEsIDg0LCAyNSwgNSwgMjUxLCAyLCA3NiwgODQsIAorICAgIDI1LCA1LCAyMTksIDI1MSwgNzYsIDg0LCAyNSwgNSwgNzYsIDg0LCAyNSwgNSwgMjUzLCAxOTIsIDg0LCA1LCAyMTMsIDE1MiwgCisgICAgODQsIDI1LCA1LCAyMjQsIDE4NSwgNzUsIDg0LCAyNSwgNSwgMjUzLCAxNzEsIDg0LCAyMjYsIDIwNCwgODQsIDIxOCwgMTExLCAKKyAgICA1LCAyMTQsIDIxNiwgODQsIDIxOCwgMTExLCA1LCAyNTQsIDc3LCA4NCwgMjQyLCAxMzcsIDI1NSwgMTQsIDg0LCAyNTUsIDMsIAorICAgIDI1NSwgMTQsIDg0LCAyNSwgNSwgMjUxLCAyLCAxOTksIDc1LCA4NCwgMjUsIDUsIDIxNCwgMjE0LCA4NCwgMjUsIDUsIDIxNCwgCisgICAgMTE3LCA4NCwgMSwgMjI0LCA4OCwgODQsIDEsIDIzNCwgMTE1LCA4NCwgMSwgMjQyLCAyMjYsIDg0LCAxLCAyMTAsIDExNiwgCisgICAgODQsIDEsIDI0OCwgMTI0LCA4NCwgMSwgMjIzLCAzOSwgODQsIDEsIDI0NCwgMTk2LCA4NCwgMSwgMjEwLCAxNjgsIDg0LCAxLCAKKyAgICAxNDksIDIyMiwgMTgwLCA4NCwgMSwgMTQ5LCAyMzIsIDE4NSwgODQsIDI1LCA1LCAxNDksIDE1NiwgODQsIDI1LCA1LCAxNDksIAorICAgIDIzMiwgMTg1LCA4NCwgMjQ4LCAxNzgsIDg0LCA1MiwgMjQ4LCAxNzgsIDg0LCAyMSwgMjEwLCA4NiwgODQsIDIxLCAxMTAsIAorICAgIDg0LCAyMSwgMTA1LCA4NCwgMjEsIDE1OCwgODQsIDIxLCAxNjEsIDg0LCAyMSwgMTg5LCA4NCwgMjEsIDE5NCwgODQsIDIxLCAKKyAgICAxOTgsIDg0LCAyMSwgMTk1LCA4NCwgMjEsIDIwMCwgODQsIDI1NSwgMjEsIDUwLCA4NCwgNSwgMTI1LCAyMTksIDE3LCAyNDcsIAorICAgIDEyMCwgODQsIDEsIDI1MSwgMiwgNjEsIDg0LCAxLCAyMjYsIDIzNCwgODQsIDEsIDIyNiwgMTgxLCA4NCwgMSwgMjUzLCAKKyAgICAxNzEsIDg0LCAxLCAyMTQsIDIxNCwgODQsIDEsIDIxNCwgMTE3LCA4NCwgMSwgMjEwLCA4MiwgODQsIDEsIDExNCwgMTkxLCAKKyAgICA4NCwgMSwgMjQzLCAyOSwgODQsIDEsIDIzNSwgOTYsIDg0LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDg0LCAxLCAyNDgsIAorICAgIDEyNSwgODQsIDEsIDI1MiwgMTExLCAxNDYsIDUsIDI1MCwgMjU1LCAxNDYsIDUsIDI1NCwgNzUsIDE0NiwgNSwgMjEzLCAKKyAgICAxNDcsIDE0NiwgMSwgNjEsIDE0NiwgMSwgMjU1LCA3MywgMTQ2LCAxLCA3MywgMTQ2LCAxLCAyMzYsIDMzLCAxNDYsIDEsIAorICAgIDcwLCAxNDYsIDEsIDIxNCwgMTE4LCAxNDYsIDEsIDE0OSwgMTUzLCAxNDYsIDEsIDE0OSwgMTU2LCAxNDYsIDEsIDc1LCAKKyAgICAxNDYsIDEsIDI1NCwgMjAxLCAxNDYsIDEsIDc2LCAxNDYsIDEsIDI1MywgMTkyLCAxNDYsIDEsIDE3NiwgMTQ2LCAxLCAyMzQsIAorICAgIDEzMiwgMTQ2LCAxLCAyNDMsIDEzNSwgMTQ2LCAxLCAyNDIsIDI0OSwgMTQ2LCAxLCAyMjksIDc3LCAxNDYsIDEsIDI1MSwgCisgICAgMzMsIDE0NiwgMSwgMjUwLCAxNTcsIDE0NiwgMSwgMjM1LCAxNDEsIDE0NiwgMSwgMjM1LCAxMTQsIDE0NiwgMSwgMjI3LCAKKyAgICAxNjUsIDE0NiwgMSwgMjE1LCAxNTYsIDE0NiwgMSwgMjE1LCAxNDQsIDE0NiwgMSwgMjQ4LCAxMzUsIDE0NiwgMSwgMjQ4LCAKKyAgICAxMTksIDE0NiwgMSwgMjI4LCAxMTAsIDE0NiwgMSwgMjE3LCAxMDUsIDE0NiwgMSwgMjE2LCAyMDgsIDE0NiwgMSwgMjQ4LCAKKyAgICAyMjEsIDE0NiwgMSwgMjQ4LCAyNSwgMTQ2LCAxLCAxOTcsIDE0NiwgMSwgMTkwLCAxNDYsIDEsIDIyNSwgMTQ3LCAxNDYsIDEsIAorICAgIDI1MiwgMTkxLCAxNDYsIDEsIDI1MiwgMTgsIDE0NiwgMSwgMTg0LCAxNDYsIDEsIDE5MSwgMTQ2LCAxLCAyMDUsIDE0NiwgMSwgCisgICAgMjMzLCAxMzUsIDE0NiwgMSwgMjIwLCAxMDIsIDE0NiwgMSwgMjE4LCAyMjMsIDE0NiwgMSwgMjA2LCAxNDYsIDEsIDE2MiwgCisgICAgMTQ2LCA1LCAyMjcsIDIwNSwgMTQ2LCA1LCAyNTMsIDE3NSwgMTQ2LCAyNSwgNSwgMjU1LCA3MywgMTQ2LCAyNSwgNSwgNzMsIAorICAgIDE0NiwgMjUsIDUsIDIzNiwgMzMsIDE0NiwgMjUsIDUsIDcwLCAxNDYsIDI1LCA1LCAyMTQsIDExOCwgMTQ2LCAyNSwgNSwgCisgICAgMTQ5LCAxNTMsIDE0NiwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE0NiwgMjUsIDUsIDc1LCAxNDYsIDI1LCA1LCAyNTQsIAorICAgIDIwMSwgMTQ2LCAyNSwgNSwgNzYsIDE0NiwgMjUsIDUsIDI1MywgMTkyLCAxNDYsIDUsIDIxMywgMTUyLCAxNDYsIDEsIDIzNCwgCisgICAgMTI0LCAyMTcsIDEwNSwgMTQ2LCAyNTMsIDE5MywgMjMzLCAyMywgNzgsIDE0NiwgMSwgMjIyLCAxNzksIDE0NiwgMSwgMjIzLCAKKyAgICAzOSwgMTQ2LCAxLCAyMTAsIDE2OCwgMTQ2LCAxLCAxNDksIDIyMiwgMTgwLCAxNDYsIDEsIDE0OSwgMjMyLCAxODUsIDE0NiwgCisgICAgMjUsIDUsIDE0OSwgMTU2LCAxNDYsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNDYsIDIxLCAyMTAsIDg2LCAxNDYsIDIxLCAKKyAgICAxMTAsIDE0NiwgMjEsIDEwNSwgMTQ2LCAyMSwgMTU4LCAxNDYsIDIxLCAxNjEsIDE0NiwgMjEsIDE4OSwgMTQ2LCAyMSwgCisgICAgMTk0LCAxNDYsIDIxLCAxOTgsIDE0NiwgMjEsIDE5NSwgMTQ2LCAyMSwgMjAwLCAxNDYsIDEsIDIyMywgMTg4LCAyLCAyMzAsIAorICAgIDIyNCwgMjQ3LCAyNTQsIDE0NiwgMSwgMjIzLCAxODgsIDIsIDIzMiwgMTA4LCAyNDcsIDI1NCwgMTQ2LCAyMjIsIDExOCwgCisgICAgNzgsIDE0NiwgMjIyLCAxMTgsIDUwLCAxNDYsIDI0OSwgOTgsIDIyNywgMTk3LCAxMTAsIDE0NiwgMjQ5LCA5OCwgMjI3LCAKKyAgICAxOTcsIDEwNSwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTU4LCAxNDYsIDI0OSwgOTgsIDIyNywgMTk3LCAxNjEsIDE0NiwgCisgICAgMjQ5LCA5OCwgMjI3LCAxOTcsIDEyMywgMjMzLCAxNiwgMjE2LCAyMDEsIDIxNiwgMTk2LCAyNDgsIDQ4LCAxNDYsIDI0OSwgCisgICAgOTgsIDI0OCwgNDksIDIxOSwgMTE5LCAxNDYsIDIzNSwgMTYxLCAxNDYsIDI0MywgMTAzLCA3OCwgMTgzLCA1LCAyNTQsIAorICAgIDI1NCwgMjUxLCAyNDMsIDE4MywgNSwgMjUxLCAyNDMsIDE4MywgNSwgMjEzLCAxNDcsIDE4MywgMSwgNjEsIDE4MywgMSwgCisgICAgMjU1LCA3MywgMTgzLCAxLCA3MywgMTgzLCAxLCAyMzYsIDMzLCAxODMsIDEsIDcwLCAxODMsIDEsIDIxNCwgMTE4LCAxODMsIAorICAgIDEsIDI0NSwgMjA5LCAxODMsIDEsIDI1NCwgMjAxLCAxODMsIDEsIDIyNiwgMTgzLCAxODMsIDEsIDI1MywgMTkyLCAxODMsIAorICAgIDEsIDE3NiwgMTgzLCAxLCAyMzQsIDEzMiwgMTgzLCAxLCAyNDMsIDEzNSwgMTgzLCAxLCAyNDIsIDI0OSwgMTgzLCAxLCAKKyAgICAyMjksIDc3LCAxODMsIDEsIDI1MSwgMzMsIDE4MywgMSwgMjUwLCAxNTcsIDE4MywgMSwgMjM1LCAxNDEsIDE4MywgMSwgCisgICAgMjM1LCAxMTQsIDE4MywgMSwgMjI3LCAxNjUsIDE4MywgMSwgMjE1LCAxNTYsIDE4MywgMSwgMjE1LCAxNDQsIDE4MywgMSwgCisgICAgMjQ4LCAxMzUsIDE4MywgMSwgMjQ4LCAxMTksIDE4MywgMSwgMjI4LCAxMTAsIDE4MywgMSwgMjE3LCAxMDUsIDE4MywgMSwgCisgICAgMjE2LCAyMDgsIDE4MywgMSwgMjQ4LCAyMjEsIDE4MywgMSwgMjQ4LCAyNSwgMTgzLCAxLCAxOTcsIDE4MywgMSwgMTkwLCAKKyAgICAxODMsIDEsIDIyNSwgMTQ3LCAxODMsIDEsIDI1MiwgMTkxLCAxODMsIDEsIDI1MiwgMTgsIDE4MywgMSwgMTg0LCAxODMsIDEsIAorICAgIDE5MSwgMTgzLCAxLCAyMDUsIDE4MywgMSwgMjMzLCAxMzUsIDE4MywgMSwgMjMyLCAxODQsIDE4MywgMSwgMjE0LCAyNywgCisgICAgMTgzLCAxLCAyMjAsIDEwMiwgMTgzLCAxLCAyMDYsIDE4MywgMSwgMTYyLCAxODMsIDUsIDIyNywgMjA1LCAxODMsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAxODMsIDI1LCA1LCA3MywgMTgzLCAyNSwgNSwgMjM2LCAzMywgMTgzLCAyNSwgNSwgNzAsIDE4MywgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxODMsIDI1LCA1LCAyNDUsIDIwOSwgMTgzLCAyNSwgNSwgMjU0LCAyMDEsIDE4MywgMjUsIDUsIDIyNiwgCisgICAgMTgzLCAxODMsIDI1LCA1LCAyNTMsIDE5MiwgMTgzLCA1LCAyMTMsIDE1MiwgMTgzLCA1LCAyMTQsIDIxOCwgMTgzLCAxLCAKKyAgICAyMzQsIDExNSwgMTgzLCAxLCAyNDIsIDIyNiwgMTgzLCAxLCAyMTAsIDExNiwgMTgzLCAxLCAyMjIsIDE3OSwgMTgzLCAxLCAKKyAgICAyNDQsIDE5NiwgMTgzLCAyMSwgMjEwLCA4NiwgMTgzLCAyMSwgMTEwLCAxODMsIDIxLCAxMDUsIDE4MywgMjEsIDE1OCwgCisgICAgMTgzLCAyMSwgMTYxLCAxODMsIDIxLCAxODksIDE4MywgMjEsIDE5NCwgMTgzLCAyMSwgMTk4LCAxODMsIDIxLCAxOTUsIAorICAgIDE4MywgMjEsIDIwMCwgMTgzLCAyMTYsIDc0LCAxODMsIDI1NCwgMjUzLCAxODMsIDIzNSwgMTc4LCAxODMsIDIxNCwgMTQ2LCAKKyAgICAxODMsIDI0NSwgMTgxLCAyMjYsIDE4OCwgMTgzLCA1LCAyMTEsIDc4LCAxNzEsIDUsIDI1MCwgMjU1LCAxNzEsIDUsIDI1NCwgCisgICAgNzUsIDE3MSwgNSwgMjEzLCAxNDcsIDE3MSwgMSwgNjEsIDE3MSwgMSwgMjU1LCA3MywgMTcxLCAxLCA3MywgMTcxLCAxLCAKKyAgICAyMzYsIDMzLCAxNzEsIDEsIDcwLCAxNzEsIDEsIDIxNCwgMTE4LCAxNzEsIDEsIDE0OSwgMTUzLCAxNzEsIDEsIDE0OSwgCisgICAgMTU2LCAxNzEsIDI1LCAyNTEsIDIsIDc1LCAxNzEsIDEsIDc1LCAxNzEsIDEsIDI1NCwgMjAxLCAxNzEsIDI1LCAyNTEsIDIsIAorICAgIDc2LCAxNzEsIDEsIDc2LCAxNzEsIDEsIDI1MywgMTkyLCAxNzEsIDEsIDE3NiwgMTcxLCAxLCAyMzQsIDEzMiwgMTcxLCAxLCAKKyAgICAyNDMsIDEzNSwgMTcxLCAxLCAyNDIsIDI0OSwgMTcxLCAxLCAyMjksIDc3LCAxNzEsIDEsIDI1MSwgMzMsIDE3MSwgMSwgCisgICAgMjUwLCAxNTcsIDE3MSwgMSwgMjM1LCAxNDEsIDE3MSwgMSwgMjM1LCAxMTQsIDE3MSwgMSwgMjI3LCAxNjUsIDE3MSwgMSwgCisgICAgMjE1LCAxNTYsIDE3MSwgMSwgMjE1LCAxNDQsIDE3MSwgMSwgMjQ4LCAxMzUsIDE3MSwgMSwgMjQ4LCAxMTksIDE3MSwgMSwgCisgICAgMjI4LCAxMTAsIDE3MSwgMSwgMjE3LCAxMDUsIDE3MSwgMSwgMjE2LCAyMDgsIDE3MSwgMSwgMjQ4LCAyMjEsIDE3MSwgMSwgCisgICAgMjQ4LCAyNSwgMTcxLCAxLCAxOTcsIDE3MSwgMSwgMTkwLCAxNzEsIDEsIDIyNSwgMTQ3LCAxNzEsIDEsIDI1MiwgMTkxLCAKKyAgICAxNzEsIDEsIDI1MiwgMTgsIDE3MSwgMSwgMTg0LCAxNzEsIDEsIDE5MSwgMTcxLCAxLCAyMDUsIDE3MSwgMSwgMjMzLCAxMzUsIAorICAgIDE3MSwgMSwgMjMyLCAxODQsIDE3MSwgMSwgMjE0LCAyNywgMTcxLCAxLCAyMjAsIDEwMiwgMTcxLCAxLCAyMTgsIDIyMywgCisgICAgMTcxLCAxLCAyMDYsIDE3MSwgMSwgMTYyLCAxNzEsIDUsIDIyNywgMjA1LCAxNzEsIDUsIDI1MywgMTc1LCAxNzEsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAxNzEsIDI1LCA1LCA3MywgMTcxLCAyNSwgNSwgMjM2LCAzMywgMTcxLCAyNSwgNSwgNzAsIDE3MSwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxNzEsIDI1LCA1LCAxNDksIDE1MywgMTcxLCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTcxLCAyNSwgNSwgCisgICAgMjUxLCAyLCA3NSwgMTcxLCAyNSwgNSwgNzUsIDE3MSwgMjUsIDUsIDI1NCwgMjAxLCAxNzEsIDI1LCA1LCAyNTEsIDIsIDc2LCAKKyAgICAxNzEsIDI1LCA1LCA3NiwgMTcxLCAyNSwgNSwgMjUzLCAxOTIsIDE3MSwgNSwgMjEzLCAxNTIsIDE3MSwgMjI2LCAyMDQsIAorICAgIDE3MSwgMSwgMTQ5LCAyMjIsIDE4MCwgMTcxLCAxLCAxNDksIDIzMiwgMTg1LCAxNzEsIDI1LCA1LCAxNDksIDE1NiwgMTcxLCAKKyAgICAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTcxLCAyMSwgMjEwLCA4NiwgMTcxLCAyMSwgMTEwLCAxNzEsIDIxLCAxMDUsIDE3MSwgCisgICAgMjEsIDE1OCwgMTcxLCAyMSwgMTYxLCAxNzEsIDIxLCAxODksIDE3MSwgMjEsIDE5NCwgMTcxLCAyMSwgMTk4LCAxNzEsIDIxLCAKKyAgICAxOTUsIDE3MSwgMjEsIDIwMCwgMTcxLCAyNTUsIDIxLCA1MCwgMTcxLCAyMjIsIDExOCwgNTAsIDE1NywgNSwgMjUwLCAyNTUsIAorICAgIDE1NywgNSwgMjU0LCA3NSwgMTU3LCA1LCAyMTMsIDE0NywgMTU3LCAxLCA2MSwgMTU3LCAxLCAyNTUsIDczLCAxNTcsIDEsIAorICAgIDczLCAxNTcsIDEsIDIzNiwgMzMsIDE1NywgMSwgNzAsIDE1NywgMSwgMjE0LCAxMTgsIDE1NywgMSwgMTQ5LCAxNTMsIDE1NywgCisgICAgMSwgMTQ5LCAxNTYsIDE1NywgMSwgNzUsIDE1NywgMSwgMjU0LCAyMDEsIDE1NywgMSwgNzYsIDE1NywgMSwgMjUzLCAxOTIsIAorICAgIDE1NywgMSwgMTc2LCAxNTcsIDEsIDIzNCwgMTMyLCAxNTcsIDEsIDI0MywgMTM1LCAxNTcsIDEsIDI0MiwgMjQ5LCAxNTcsIAorICAgIDEsIDIyOSwgNzcsIDE1NywgMSwgMjUxLCAzMywgMTU3LCAxLCAyNTAsIDE1NywgMTU3LCAxLCAyMzUsIDE0MSwgMTU3LCAxLCAKKyAgICAyMzUsIDExNCwgMTU3LCAxLCAyMjcsIDE2NSwgMTU3LCAxLCAyMTUsIDE1NiwgMTU3LCAxLCAyMTUsIDE0NCwgMTU3LCAxLCAKKyAgICAyNDgsIDEzNSwgMTU3LCAxLCAyNDgsIDExOSwgMTU3LCAxLCAyMjgsIDExMCwgMTU3LCAxLCAyMTcsIDEwNSwgMTU3LCAxLCAKKyAgICAyMTYsIDIwOCwgMTU3LCAxLCAyNDgsIDIyMSwgMTU3LCAxLCAyNDgsIDI1LCAxNTcsIDEsIDE5NywgMTU3LCAxLCAxOTAsIAorICAgIDE1NywgMSwgMjI1LCAxNDcsIDE1NywgMSwgMjUyLCAxOTEsIDE1NywgMSwgMjUyLCAxOCwgMTU3LCAxLCAxODQsIDE1NywgMSwgCisgICAgMTkxLCAxNTcsIDEsIDIwNSwgMTU3LCAxLCAyMzMsIDEzNSwgMTU3LCAxLCAyMzIsIDE4NCwgMTU3LCAxLCAyMTQsIDI3LCAKKyAgICAxNTcsIDEsIDIyMCwgMTAyLCAxNTcsIDEsIDIxOCwgMjIzLCAxNTcsIDEsIDIwNiwgMTU3LCAxLCAxNjIsIDE1NywgNSwgCisgICAgMjI3LCAyMDUsIDE1NywgNSwgMjUzLCAxNzUsIDE1NywgMjUsIDUsIDI1NSwgNzMsIDE1NywgMjUsIDUsIDczLCAxNTcsIDI1LCAKKyAgICA1LCAyMzYsIDMzLCAxNTcsIDI1LCA1LCA3MCwgMTU3LCAyNSwgNSwgMjE0LCAxMTgsIDE1NywgMjUsIDUsIDE0OSwgMTUzLCAKKyAgICAxNTcsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNTcsIDI1LCA1LCA3NSwgMTU3LCAyNSwgNSwgMjU0LCAyMDEsIDE1NywgMjUsIAorICAgIDUsIDc2LCAxNTcsIDI1LCA1LCAyNTMsIDE5MiwgMTU3LCA1LCAyMTMsIDE1MiwgMTU3LCAyNTQsIDIwMiwgMjMzLCAyMywgCisgICAgNzgsIDE1NywgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAxNTcsIDEsIDIyMiwgMTc5LCAxNTcsIDEsIDIyMywgMzksIDE1NywgCisgICAgMSwgMjEwLCAxNjgsIDE1NywgMSwgMTQ5LCAyMjIsIDE4MCwgMTU3LCAxLCAxNDksIDIzMiwgMTg1LCAxNTcsIDI1LCA1LCAKKyAgICAxNDksIDE1NiwgMTU3LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTU3LCAyMSwgMjEwLCA4NiwgMTU3LCAyMSwgMTEwLCAxNTcsIAorICAgIDIxLCAxMDUsIDE1NywgMjEsIDE1OCwgMTU3LCAyMSwgMTYxLCAxNTcsIDIxLCAxODksIDE1NywgMjEsIDE5NCwgMTU3LCAyMSwgCisgICAgMTk4LCAxNTcsIDIxLCAxOTUsIDE1NywgMjEsIDIwMCwgMTU3LCAyMzUsIDE2MSwgMTU3LCAxLCAyMTIsIDY1LCAxNTcsIAorICAgIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAxNTcsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAxNTcsIDI0NCwgMiwgMTM0LCAyMjQsIAorICAgIDE5LCAxNTcsIDI0NCwgMiwgMTIzLCAyMTksIDExNywgMTU3LCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDE1NywgMjQ0LCAyLCAKKyAgICAxMzQsIDIxOSwgMTE2LCAzNiwgNSwgMjU0LCA3NSwgMzYsIDUsIDIxMywgMTQ3LCAzNiwgMSwgNjEsIDM2LCAxLCAyNTUsIAorICAgIDczLCAzNiwgMSwgNzMsIDM2LCAxLCAyMzYsIDMzLCAzNiwgMSwgNzAsIDM2LCAxLCAyMTQsIDExOCwgMzYsIDEsIDc1LCAzNiwgCisgICAgMSwgMjQ1LCAyMDksIDM2LCAxLCAyNTQsIDIwMSwgMzYsIDEsIDc2LCAzNiwgMSwgMjI2LCAxODMsIDM2LCAxLCAyNTMsIAorICAgIDE5MiwgMzYsIDEsIDE3NiwgMzYsIDEsIDIyOSwgNzcsIDM2LCAxLCAyNTEsIDMzLCAzNiwgMSwgMjM1LCAxNDEsIDM2LCAxLCAKKyAgICAyMjcsIDE2NSwgMzYsIDEsIDIxNSwgMTU2LCAzNiwgMSwgMjI4LCAxMTAsIDM2LCAxLCAyMTcsIDEwNSwgMzYsIDEsIDE5NywgCisgICAgMzYsIDEsIDIyOCwgOTIsIDM2LCAxLCAxOTAsIDM2LCAxLCAxODQsIDM2LCAxLCAxOTEsIDM2LCAxLCAyMDUsIDM2LCAxLCAKKyAgICAyMjIsIDE3OSwgMzYsIDEsIDIzMywgMTM1LCAzNiwgMSwgMjMyLCAxODQsIDM2LCAxLCAyMzIsIDE3NSwgMzYsIDEsIDIxNCwgCisgICAgMjcsIDM2LCAxLCAyMjAsIDEwMiwgMzYsIDEsIDIxOCwgMjIzLCAzNiwgMSwgMjA2LCAzNiwgMSwgMTYyLCAzNiwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDM2LCAyNSwgNSwgNzMsIDM2LCAyNSwgNSwgMjM2LCAzMywgMzYsIDI1LCA1LCA3MCwgMzYsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMzYsIDI1LCA1LCA3NSwgMzYsIDI1LCA1LCAyNDUsIDIwOSwgMzYsIDI1LCA1LCAyNTQsIDIwMSwgMzYsIAorICAgIDI1LCA1LCA3NiwgMzYsIDI1LCA1LCAyMjYsIDE4MywgMzYsIDI1LCA1LCAyNTMsIDE5MiwgMzYsIDUsIDIxMywgMTUyLCAzNiwgCisgICAgMjI2LCAyMDQsIDM2LCAyNTMsIDE5MywgMjMzLCAyMywgNzgsIDM2LCAyMSwgMjEwLCA4NiwgMzYsIDIxLCAxMTAsIDM2LCAKKyAgICAyMSwgMTA1LCAzNiwgMjEsIDE1OCwgMzYsIDIxLCAxNjEsIDM2LCAyMSwgMTg5LCAzNiwgMjEsIDE5NCwgMzYsIDIxLCAxOTgsIAorICAgIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDIwMCwgMzYsIDU0LCAyMTYsIDI0NywgMzYsIDU0LCAxMjMsIDI0MCwgMjEwLCAzNiwgCisgICAgNTQsIDEyMywgMjE2LCAxNDcsIDM2LCAyNDgsIDE0NiwgNTAsIDM2LCAyMzAsIDEzNSwgNTAsIDM2LCAyMTEsIDQ1LCA1MCwgCisgICAgMzYsIDI0OCwgODcsIDUwLCAzNiwgMjQ5LCAxMzksIDUwLCAzNiwgMjUzLCAyMzgsIDc3LCA1MCwgMzYsIDIyMiwgMTE4LCAKKyAgICA1MCwgMzYsIDU0LCA1MCwgMTQ4LCA1LCAyNTAsIDI1NSwgMTQ4LCA1LCAyNTQsIDc1LCAxNDgsIDUsIDIxMywgMTQ3LCAxNDgsIAorICAgIDEsIDYxLCAxNDgsIDEsIDI1NSwgNzMsIDE0OCwgMSwgNzMsIDE0OCwgMSwgMjM2LCAzMywgMTQ4LCAxLCA3MCwgMTQ4LCAxLCAKKyAgICAyMTQsIDExOCwgMTQ4LCAxLCAxNDksIDE1MywgMTQ4LCAxLCAxNDksIDE1NiwgMTQ4LCAxLCA3NSwgMTQ4LCAxLCAyNDUsIAorICAgIDIwOSwgMTQ4LCAxLCAyNTQsIDIwMSwgMTQ4LCAxLCA3NiwgMTQ4LCAxLCAyMjYsIDE4MywgMTQ4LCAxLCAyNTMsIDE5MiwgCisgICAgMTQ4LCAxLCAxNzYsIDE0OCwgMSwgMjM0LCAxMzIsIDE0OCwgMSwgMjQzLCAxMzUsIDE0OCwgMSwgMjQyLCAyNDksIDE0OCwgCisgICAgMSwgMjI5LCA3NywgMTQ4LCAxLCAyNTEsIDMzLCAxNDgsIDEsIDI1MCwgMTU3LCAxNDgsIDEsIDIzNSwgMTQxLCAxNDgsIDEsIAorICAgIDIzNSwgMTE0LCAxNDgsIDEsIDIyNywgMTY1LCAxNDgsIDEsIDIxNSwgMTU2LCAxNDgsIDEsIDIxNSwgMTQ0LCAxNDgsIDEsIAorICAgIDI0OCwgMTM1LCAxNDgsIDEsIDI0OCwgMTE5LCAxNDgsIDEsIDIyOCwgMTEwLCAxNDgsIDEsIDIxNywgMTA1LCAxNDgsIDEsIAorICAgIDIxNiwgMjA4LCAxNDgsIDEsIDI0OCwgMjIxLCAxNDgsIDEsIDI0OCwgMjUsIDE0OCwgMSwgMTk3LCAxNDgsIDEsIDE5MCwgCisgICAgMTQ4LCAxLCAyMjUsIDE0NywgMTQ4LCAxLCAyNTIsIDE5MSwgMTQ4LCAxLCAyNTIsIDE4LCAxNDgsIDEsIDE4NCwgMTQ4LCAxLCAKKyAgICAxOTEsIDE0OCwgMSwgMjA1LCAxNDgsIDEsIDIyMiwgMTc5LCAxNDgsIDEsIDIzMywgMTM1LCAxNDgsIDEsIDIzMiwgMTg0LCAKKyAgICAxNDgsIDEsIDIxNCwgMjcsIDE0OCwgMSwgMjIwLCAxMDIsIDE0OCwgMSwgMjE4LCAyMjMsIDE0OCwgMSwgMjA2LCAxNDgsIDEsIAorICAgIDE2MiwgMTQ4LCA1LCAyNTMsIDE3NSwgMTQ4LCAyNSwgNSwgMjU1LCA3MywgMTQ4LCAyNSwgNSwgNzMsIDE0OCwgMjUsIDUsIAorICAgIDIzNiwgMzMsIDE0OCwgMjUsIDUsIDcwLCAxNDgsIDI1LCA1LCAyMTQsIDExOCwgMTQ4LCAyNSwgNSwgMTQ5LCAxNTMsIDE0OCwgCisgICAgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE0OCwgMjUsIDUsIDc1LCAxNDgsIDI1LCA1LCAyNDUsIDIwOSwgMTQ4LCAyNSwgNSwgCisgICAgMjU0LCAyMDEsIDE0OCwgMjUsIDUsIDc2LCAxNDgsIDI1LCA1LCAyMjYsIDE4MywgMTQ4LCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDE0OCwgNSwgMjEzLCAxNTIsIDE0OCwgMjMzLCAyMywgNzgsIDE0OCwgMjU0LCAyMDIsIDIzMywgMjMsIDc4LCAxNDgsIDEsIAorICAgIDIxNSwgMTgzLCAxNDgsIDEsIDI0NiwgMzgsIDE0OCwgMSwgMTQ5LCAyMjIsIDE4MCwgMTQ4LCAxLCAxNDksIDIzMiwgMTg1LCAKKyAgICAxNDgsIDI1LCA1LCAxNDksIDE1NiwgMTQ4LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTQ4LCAyMSwgMjEwLCA4NiwgMTQ4LCAKKyAgICAyMSwgMTEwLCAxNDgsIDIxLCAxMDUsIDE0OCwgMjEsIDE1OCwgMTQ4LCAyMSwgMTYxLCAxNDgsIDIxLCAxODksIDE0OCwgMjEsIAorICAgIDE5NCwgMTQ4LCAyMSwgMTk4LCAxNDgsIDIxLCAxOTUsIDE0OCwgMjEsIDIwMCwgMTQ4LCAyNDQsIDIsIDIxLCAyMTAsIDg3LCAKKyAgICAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEyMywgMzEsIDIyNiwgMjM3LCAyMjQsIAorICAgIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMTMsIDMxLCAyMjYsIDIzNywgMjI0LCAyMjMsIDY0LCAxNjEsIDE0OCwgCisgICAgMjQ0LCAyLCAyMSwgMTM0LCAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEyMywgCisgICAgMzEsIDI0NSwgNDIsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDExMywgMzEsIDI0NSwgNDIsIDIyNCwgCisgICAgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEzNCwgMzEsIDI0NSwgNDIsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIAorICAgIDUsIDIxNSwgODQsIDE2NSwgNSwgMjU0LCA3NSwgMTY1LCA1LCAyMTMsIDE0NywgMTY1LCAxLCA2MSwgMTY1LCAxLCAyNTUsIAorICAgIDczLCAxNjUsIDEsIDczLCAxNjUsIDEsIDIzNiwgMzMsIDE2NSwgMSwgNzAsIDE2NSwgMSwgMjE0LCAxMTgsIDE2NSwgMSwgCisgICAgMTQ5LCAxNTMsIDE2NSwgMSwgMTQ5LCAxNTYsIDE2NSwgMSwgNzUsIDE2NSwgMSwgMjQ1LCAyMDksIDE2NSwgMSwgMjU0LCAKKyAgICAyMDEsIDE2NSwgMSwgNzYsIDE2NSwgMSwgMjI2LCAxODMsIDE2NSwgMSwgMjUzLCAxOTIsIDE2NSwgMSwgMTc2LCAxNjUsIDEsIAorICAgIDIzNCwgMTMyLCAxNjUsIDEsIDI0MywgMTM1LCAxNjUsIDEsIDI0MiwgMjQ5LCAxNjUsIDEsIDIyOSwgNzcsIDE2NSwgMSwgCisgICAgMjUxLCAzMywgMTY1LCAxLCAyNTAsIDE1NywgMTY1LCAxLCAyMzUsIDE0MSwgMTY1LCAxLCAyMzUsIDExNCwgMTY1LCAxLCAKKyAgICAyMjcsIDE2NSwgMTY1LCAxLCAyMTUsIDE1NiwgMTY1LCAxLCAyMTUsIDE0NCwgMTY1LCAxLCAyNDgsIDEzNSwgMTY1LCAxLCAKKyAgICAyNDgsIDExOSwgMTY1LCAxLCAyMjgsIDExMCwgMTY1LCAxLCAyMTcsIDEwNSwgMTY1LCAxLCAyMTYsIDIwOCwgMTY1LCAxLCAKKyAgICAyNDgsIDIyMSwgMTY1LCAxLCAyNDgsIDI1LCAxNjUsIDEsIDE5NywgMTY1LCAxLCAxOTAsIDE2NSwgMSwgMjI1LCAxNDcsIAorICAgIDE2NSwgMSwgMjUyLCAxOTEsIDE2NSwgMSwgMjUyLCAxOCwgMTY1LCAxLCAxODQsIDE2NSwgMSwgMTkxLCAxNjUsIDEsIDIwNSwgCisgICAgMTY1LCAxLCAyMjIsIDE3OSwgMTY1LCAxLCAyMzMsIDEzNSwgMTY1LCAxLCAyMzIsIDE4NCwgMTY1LCAxLCAyMTQsIDI3LCAKKyAgICAxNjUsIDEsIDIyMCwgMTAyLCAxNjUsIDEsIDIxOCwgMjIzLCAxNjUsIDEsIDIwNiwgMTY1LCAxLCAxNjIsIDE2NSwgNSwgCisgICAgMjI3LCAyMDUsIDE2NSwgNSwgMjUzLCAxNzUsIDE2NSwgMjUsIDUsIDI1NSwgNzMsIDE2NSwgMjUsIDUsIDczLCAxNjUsIDI1LCAKKyAgICA1LCAyMzYsIDMzLCAxNjUsIDI1LCA1LCA3MCwgMTY1LCAyNSwgNSwgMjE0LCAxMTgsIDE2NSwgMjUsIDUsIDE0OSwgMTUzLCAKKyAgICAxNjUsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNjUsIDI1LCA1LCA3NSwgMTY1LCAyNSwgNSwgMjQ1LCAyMDksIDE2NSwgMjUsIAorICAgIDUsIDI1NCwgMjAxLCAxNjUsIDI1LCA1LCA3NiwgMTY1LCAyNSwgNSwgMjI2LCAxODMsIDE2NSwgMjUsIDUsIDI1MywgMTkyLCAKKyAgICAxNjUsIDUsIDIxMywgMTUyLCAxNjUsIDIzMywgMjMsIDc4LCAxNjUsIDI1NCwgMjAyLCAyMzMsIDIzLCA3OCwgMTY1LCAxLCAKKyAgICAyNDQsIDE5NiwgMTY1LCAxLCAxNDksIDIyMiwgMTgwLCAxNjUsIDEsIDE0OSwgMjMyLCAxODUsIDE2NSwgMjUsIDUsIDE0OSwgCisgICAgMTU2LCAxNjUsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNjUsIDIxLCAyMTAsIDg2LCAxNjUsIDIxLCAxMTAsIDE2NSwgMjEsIAorICAgIDEwNSwgMTY1LCAyMSwgMTU4LCAxNjUsIDIxLCAxNjEsIDE2NSwgMjEsIDE4OSwgMTY1LCAyMSwgMTk0LCAxNjUsIDIxLCAKKyAgICAxOTgsIDE2NSwgMjEsIDE5NSwgMTY1LCAyMSwgMjAwLCAxNjUsIDUsIDIzNSwgMTAyLCAxNjUsIDUsIDIxNCwgMTYxLCAxMzYsIAorICAgIDUsIDI1NCwgNzUsIDEzNiwgNSwgMjEzLCAxNDcsIDEzNiwgMSwgNjEsIDEzNiwgMSwgMjU1LCA3MywgMTM2LCAxLCA3MywgCisgICAgMTM2LCAxLCAyMzYsIDMzLCAxMzYsIDEsIDcwLCAxMzYsIDEsIDIxNCwgMTE4LCAxMzYsIDEsIDE0OSwgMTUzLCAxMzYsIDEsIAorICAgIDE0OSwgMTU2LCAxMzYsIDEsIDc1LCAxMzYsIDEsIDI0NSwgMjA5LCAxMzYsIDEsIDI1NCwgMjAxLCAxMzYsIDEsIDc2LCAKKyAgICAxMzYsIDEsIDIyNiwgMTgzLCAxMzYsIDEsIDI1MywgMTkyLCAxMzYsIDEsIDE3NiwgMTM2LCAxLCAyMzQsIDEzMiwgMTM2LCAKKyAgICAxLCAyNDMsIDEzNSwgMTM2LCAxLCAyNDIsIDI0OSwgMTM2LCAxLCAyMjksIDc3LCAxMzYsIDEsIDI1MSwgMzMsIDEzNiwgMSwgCisgICAgMjUwLCAxNTcsIDEzNiwgMSwgMjM1LCAxNDEsIDEzNiwgMSwgMjM1LCAxMTQsIDEzNiwgMSwgMjI3LCAxNjUsIDEzNiwgMSwgCisgICAgMjE1LCAxNTYsIDEzNiwgMSwgMjE1LCAxNDQsIDEzNiwgMSwgMjQ4LCAxMzUsIDEzNiwgMSwgMjQ4LCAxMTksIDEzNiwgMSwgCisgICAgMjI4LCAxMTAsIDEzNiwgMSwgMjE3LCAxMDUsIDEzNiwgMSwgMjE2LCAyMDgsIDEzNiwgMSwgMjQ4LCAyMjEsIDEzNiwgMSwgCisgICAgMjQ4LCAyNSwgMTM2LCAxLCAxOTcsIDEzNiwgMSwgMjI4LCA5MiwgMTM2LCAxLCAxOTAsIDEzNiwgMSwgMjI1LCAxNDcsIAorICAgIDEzNiwgMSwgMjUyLCAxOTEsIDEzNiwgMSwgMjUyLCAxOCwgMTM2LCAxLCAxODQsIDEzNiwgMSwgMTkxLCAxMzYsIDEsIDIwNSwgCisgICAgMTM2LCAxLCAyMjIsIDE3OSwgMTM2LCAxLCAyMzMsIDEzNSwgMTM2LCAxLCAyMzIsIDE4NCwgMTM2LCAxLCAyMzIsIDE3NSwgCisgICAgMTM2LCAxLCAyMTQsIDI3LCAxMzYsIDEsIDIyMCwgMTAyLCAxMzYsIDEsIDIxOCwgMjIzLCAxMzYsIDEsIDIwNiwgMTM2LCAxLCAKKyAgICAxNjIsIDEzNiwgMSwgMjE1LCAxMjUsIDEzNiwgNSwgMjUzLCAxNzUsIDEzNiwgMjUsIDUsIDI1NSwgNzMsIDEzNiwgMjUsIDUsIAorICAgIDczLCAxMzYsIDI1LCA1LCAyMzYsIDMzLCAxMzYsIDI1LCA1LCA3MCwgMTM2LCAyNSwgNSwgMjE0LCAxMTgsIDEzNiwgMjUsIAorICAgIDUsIDE0OSwgMTUzLCAxMzYsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxMzYsIDI1LCA1LCA3NSwgMTM2LCAyNSwgNSwgMjQ1LCAKKyAgICAyMDksIDEzNiwgMjUsIDUsIDI1NCwgMjAxLCAxMzYsIDI1LCA1LCA3NiwgMTM2LCAyNSwgNSwgMjI2LCAxODMsIDEzNiwgMjUsIAorICAgIDUsIDI1MywgMTkyLCAxMzYsIDUsIDIxMywgMTUyLCAxMzYsIDEsIDU5LCAyMjMsIDczLCAxMzYsIDI1MywgMTkzLCAyMzMsIAorICAgIDIzLCA3OCwgMTM2LCAxLCAxNDksIDIyMiwgMTgwLCAxMzYsIDEsIDE0OSwgMjMyLCAxODUsIDEzNiwgMjUsIDUsIDE0OSwgCisgICAgMTU2LCAxMzYsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxMzYsIDIxLCAyMTAsIDg2LCAxMzYsIDIxLCAxMTAsIDEzNiwgMjEsIAorICAgIDEwNSwgMTM2LCAyMSwgMTU4LCAxMzYsIDIxLCAxNjEsIDEzNiwgMjEsIDE4OSwgMTM2LCAyMSwgMTk0LCAxMzYsIDIxLCAKKyAgICAxOTgsIDEzNiwgMjEsIDE5NSwgMTM2LCAyMSwgMjAwLCAxMzYsIDU0LCAyMTYsIDI0NywgMTM2LCA1NCwgMTIzLCAyNDAsIAorICAgIDIxMCwgMTM2LCA1NCwgMTIzLCAyMTYsIDE0NywgMTM2LCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMTM2LCAyNDQsIDIsIDEyMywgCisgICAgMjQyLCAyNywgMTM2LCAyNDQsIDIsIDEzNCwgMjI0LCAxOSwgMTM2LCAyNDgsIDE1MCwgNzgsIDEzNiwgMSwgMjUwLCA5OSwgCisgICAgMjI4LCAxMTEsIDEzNiwgMSwgMjUwLCA5OSwgMjMwLCAyNSwgMTM2LCAxLCAyNTAsIDk5LCAyMjIsIDE4MCwgMTM2LCAxLCAKKyAgICAyNTAsIDk5LCAxNTYsIDEzNiwgMSwgMjUwLCA5OSwgMjMyLCAxODUsIDEzNiwgMSwgMjUwLCA5OSwgMjM1LCAyMywgMTc1LCAKKyAgICA1LCAyNTQsIDc0LCAxNzUsIDUsIDIxMywgMTQ2LCAxNzUsIDEsIDI1MywgMTY1LCAxNzUsIDEsIDI1NSwgMjcsIDE3NSwgMSwgCisgICAgMjU0LCAyMjMsIDE3NSwgMSwgMjU0LCAyMzgsIDE3NSwgMSwgMjM1LCAxNTEsIDE3NSwgMSwgMjM2LCAzMiwgMTc1LCAxLCAKKyAgICAyMTQsIDExMCwgMTc1LCAxLCAyMTQsIDExMiwgMTc1LCAxLCAyMzUsIDE3MywgMTc1LCAxLCAyMzUsIDE3NCwgMTc1LCAxLCAKKyAgICAyMzYsIDE4LCAxNzUsIDEsIDIzNiwgMjAsIDE3NSwgMSwgMjQ1LCAxNywgMTc1LCAxLCAyNDUsIDIwNCwgMTc1LCAxLCAyNTQsIAorICAgIDE4OCwgMTc1LCAxLCAyMjYsIDEwOCwgMTc1LCAxLCAyMjYsIDE3NywgMTc1LCAxLCAyNTMsIDE3OCwgMTc1LCAxLCAyNTQsIAorICAgIDE0NiwgMjM0LCAxODcsIDE3NSwgMSwgMjMxLCAyMDksIDIzNCwgMTg3LCAxNzUsIDEsIDI1NCwgMTQ2LCAyNDMsIDgyLCAKKyAgICAxNzUsIDEsIDIzMSwgMjA5LCAyNDMsIDgyLCAxNzUsIDEsIDIzNCwgMjI5LCAyMjksIDIyMiwgMTc1LCAxLCAyMjEsIDIzNiwgCisgICAgMjQzLCA4MiwgMTc1LCAxLCAyNTQsIDE0NiwgMjUwLCAyMTYsIDE3NSwgMSwgMjMxLCAyMDksIDI1MCwgMjE2LCAxNzUsIDEsIAorICAgIDI1NCwgMTQ2LCAyMzUsIDEyNywgMTc1LCAxLCAyMzEsIDIwOSwgMjM1LCAxMjcsIDE3NSwgMSwgMjE3LCA5OCwgMjI5LCAKKyAgICAyMjIsIDE3NSwgMSwgMjE3LCA5OCwgMjIxLCAyMzUsIDIyOSwgMjIzLCAxNzUsIDEsIDIyMSwgMjM2LCAyMzUsIDEyNywgCisgICAgMTc1LCAxLCAyNTQsIDE0NiwgMjE1LCAxNTIsIDE3NSwgMSwgMjMxLCAyMDksIDIxNSwgMTUyLCAxNzUsIDEsIDI1NCwgMTQ2LCAKKyAgICAyNDgsIDEyNiwgMTc1LCAxLCAyMzEsIDIwOSwgMjQ4LCAxMjYsIDE3NSwgMSwgMjMwLCA1MywgMjI5LCAxODAsIDE3NSwgMSwgCisgICAgMjIxLCAyMzYsIDI0OCwgMTI2LCAxNzUsIDEsIDI1NCwgMTQ2LCAyMTcsIDMwLCAxNzUsIDEsIDIzMSwgMjA5LCAyMTcsIDMwLCAKKyAgICAxNzUsIDEsIDI1NCwgMTQ2LCAyNDgsIDE0NCwgMTc1LCAxLCAyMzEsIDIwOSwgMjQ4LCAxNDQsIDE3NSwgMSwgMjQ4LCAxNzQsIAorICAgIDIyOSwgMTgwLCAxNzUsIDEsIDIyMSwgMjM2LCAyNDgsIDE0NCwgMTc1LCAxLCAyNTQsIDE0NiwgMjI1LCAyMjgsIDE3NSwgMSwgCisgICAgMjMxLCAyMDksIDIyNSwgMjI4LCAxNzUsIDEsIDI1NCwgMTQ2LCAyNTIsIDExMiwgMTc1LCAxLCAyMzEsIDIwOSwgMjUyLCAKKyAgICAxMTIsIDE3NSwgMSwgMjMxLCAxMzEsIDE3NSwgMSwgMjU0LCAxMzEsIDI1MiwgMTEyLCAxNzUsIDEsIDIxMSwgNTEsIDE3NSwgCisgICAgMSwgMjIzLCAxMzMsIDE3NSwgMSwgMjQ4LCAxNzQsIDIzMywgNjcsIDE3NSwgMSwgMjE0LCAxLCAxNzUsIDEsIDIxNywgOTgsIAorICAgIDIyMSwgMjEwLCAxNzUsIDEsIDIzMCwgNTMsIDIyMSwgMjEwLCAxNzUsIDEsIDI0OCwgMTc0LCAyMjEsIDIxMCwgMTc1LCAxLCAKKyAgICAyNDEsIDI0MiwgMTc1LCAxLCAyMzAsIDUzLCAyMzMsIDY3LCAxNzUsIDEsIDI0NCwgMTU2LCAxNzUsIDUsIDI1NCwgMTc3LCAKKyAgICAxNzUsIDI1LCA1LCAyNTQsIDIzMywgMTc1LCAyNSwgNSwgMjM0LCAxNTUsIDI1NCwgMjQwLCAxNzUsIDI1LCA1LCAyNDcsIAorICAgIDIyOCwgMjU0LCAyNDAsIDE3NSwgMjUsIDUsIDIzNCwgMTU1LCAyMzUsIDE3MCwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDIzNSwgCisgICAgMTcwLCAxNzUsIDI1LCA1LCAyMzQsIDE1NSwgMjI2LCA4OCwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDIyNiwgODgsIDE3NSwgCisgICAgMjUsIDUsIDI0MywgMTI0LCAxNzUsIDI1LCA1LCAyMzQsIDE1LCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjM0LCAxNSwgMTc1LCAKKyAgICAyNSwgNSwgMjM0LCAxNywgMjQ4LCA2NywgMTc1LCAyNSwgNSwgMjM0LCAxNiwgMjQyLCA0NywgMjU0LCAyMzMsIDE3NSwgMjUsIAorICAgIDUsIDIzNCwgMTYsIDI0MiwgNDcsIDI0NywgMjI4LCAyNTQsIDIzMywgMTc1LCAyNSwgNSwgMjM0LCAxNiwgMjQyLCA0NywgCisgICAgMjQzLCA4MSwgMTc1LCAyNSwgNSwgMjQzLCA4MSwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDI0MywgMTI0LCAxNzUsIDI1LCA1LCAKKyAgICAyNDcsIDIyOCwgMjQzLCA4MSwgMTc1LCAyMjQsIDE0MSwgMjMzLCAyMDcsIDE2OCwgMTM1LCAyMzQsIDI5LCAyMzQsIDI0NiwgCisgICAgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMzQsIDEyOCwgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMzQsIDk5LCAxNjgsIDEzNSwgMjM0LCAKKyAgICAxMDYsIDIzNCwgOTUsIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCAxMDMsIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjIzLCAxNTQsIAorICAgIDE2OCwgMTM1LCAyMjksIDUsIDIyOCwgMjQ4LCAxNjgsIDEzNSwgMjUwLCA4NywgMjUwLCAxNDcsIDE2OCwgMTM1LCAyNTAsIAorICAgIDg3LCAyNTAsIDk1LCAxNjgsIDEzNSwgMjUwLCA4NywgMjUwLCAxNDYsIDE2OCwgMTM1LCAyMTksIDU5LCAyMTksIDU4LCAKKyAgICAxNjgsIDEzNSwgMjUwLCA4NywgMjUwLCA4MywgMTY4LCAxMzUsIDIxMCwgMjQ1LCAyMTAsIDI1MiwgMTY4LCAxMzUsIDI0NywgCisgICAgMTQ2LCAyNTAsIDE1NCwgMTY4LCAxMzUsIDIxNiwgNDIsIDIyNSwgMjM4LCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIxNiwgMjAwLCAKKyAgICAxNjgsIDEzNSwgMjE2LCAxNTcsIDIyOSwgMjAxLCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIyNSwgMTExLCAxNjgsIDEzNSwgCisgICAgMjI4LCA3NSwgMjI5LCA5OCwgMTY4LCAxMzUsIDI0NywgMTQ2LCAyNDgsIDY4LCAxNjgsIDEzNSwgMjE2LCA0MiwgMjE3LCAKKyAgICA1NSwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMTYsIDEzMSwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMTYsIDIwNCwgMTY4LCAxMzUsIAorICAgIDIxNiwgMTU3LCAyMTYsIDE1NCwgMTY4LCAxMzUsIDIyOCwgNzUsIDIyNywgMjM3LCAxNjgsIDEzNSwgMjUxLCAyMDYsIDI1MiwgCisgICAgMTY0LCAxNjgsIDEzNSwgMjI1LCAxNywgMjI1LCA0MiwgMTY4LCAxMzUsIDIyNSwgMTIyLCAyMjUsIDExMywgMTY4LCAxMzUsIAorICAgIDI0NCwgNDQsIDI0NCwgMTk2LCAxNjgsIDEzNSwgMjI1LCAxMjIsIDIyNSwgMTQxLCAxNjgsIDEzNSwgMjQ0LCA0NCwgMjQ0LCAKKyAgICAxNzMsIDE2OCwgMTM1LCAyMjUsIDEyMiwgMjIxLCAyNDcsIDE2OCwgMTM1LCAyMzAsIDE2MiwgMTg0LCAxNjgsIDEzNSwgCisgICAgMjEwLCAyNDUsIDIxMSwgNzksIDE2OCwgMTM1LCAyMjIsIDIxMiwgMjIyLCAxMzksIDE2OCwgMTM1LCAyMjIsIDE0MCwgMTY4LCAKKyAgICAxMzUsIDIzMiwgMTU3LCAyMzIsIDIwNiwgMTY4LCAxMzUsIDIzMiwgOTgsIDE2OCwgMTM1LCAyMTEsIDIyOCwgMjEyLCA2MSwgCisgICAgMTY4LCAxMzUsIDIxOSwgNTksIDIyMiwgNiwgMTY4LCAxMzUsIDIxOSwgNTksIDIyMiwgMTE0LCAxNjgsIDEzNSwgMjE5LCAKKyAgICA1OSwgMjE4LCA4MiwgMTY4LCAxMzUsIDI0MSwgNjksIDI0MSwgMTU5LCAxNjgsIDEzNSwgMjMyLCAxNTcsIDI1MCwgNjgsIAorICAgIDE2OCwgMTM1LCAxNDQsIDI1NCwgMTE1LCAxNjgsIDEzNSwgMjQxLCA2OSwgMjI4LCA3MCwgMTY4LCAxMzUsIDIyNiwgNjgsIAorICAgIDE2OCwgMTM1LCAyMjEsIDIzMCwgNjEsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjQyLCAxNywgMTY4LCAxMzUsIDIyMSwgMjMwLCAKKyAgICAyNTUsIDczLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDI1NCwgMTM2LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDczLCAxNjgsIDEzNSwgCisgICAgMjIxLCAyMzAsIDIzNiwgMzMsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjE0LCAyMTQsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjE0LCAKKyAgICAyMTIsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzAsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjE0LCAxMTgsIDE2OCwgMTM1LCAyMjUsIAorICAgIDEyNCwgMTY4LCAyNDksIDk4LCAxNiwgMjUyLCAxNjUsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzUsIDE2OCwgMTM1LCAyMjEsIAorICAgIDIzMCwgMjU0LCAyNDMsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzYsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjU0LCAyMDIsIDIzMSwgCisgICAgMTk4LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDI1NCwgMjAyLCAyMzEsIDE5OSwgMTY4LCAxMzUsIDIzMywgMTA2LCAxNjgsIAorICAgIDEzNSwgMjMxLCAxOTUsIDE2OCwgMTM1LCAyMzEsIDE5NiwgMTY4LCAxMzUsIDIzMSwgMjA0LCAyNDUsIDE4MCwgMTY4LCAKKyAgICAxMzUsIDIzMSwgMjA0LCAyMTYsIDE1NiwgMTY4LCAxMzUsIDIzMSwgMjA0LCAyMTUsIDIyOCwgMTY4LCAxMzUsIDIzMSwgCisgICAgMjA0LCAyNTAsIDEzNSwgMTY4LCAxMzUsIDIxNiwgMTk4LCAxNjgsIDEzNSwgMjI4LCAyMDUsIDE2OCwgMTM1LCAyMTEsIDczLCAKKyAgICAxNjgsIDEzNSwgMjQ0LCAzNSwgMTY4LCAyMSwgMjEwLCA4NiwgMTY4LCAyMSwgMTEwLCAxNjgsIDIxLCAxMDUsIDE2OCwgMjEsIAorICAgIDE1OCwgMTY4LCAyMSwgMTYxLCAxNjgsIDIxLCAxODksIDE2OCwgMjEsIDE5NCwgMTY4LCAyMSwgMTk4LCAxNjgsIDIxLCAKKyAgICAxOTUsIDE2OCwgMjEsIDIwMCwgMTY4LCAxMzUsIDI1NCwgMTExLCAxNjgsIDEzNSwgMjM0LCAxMDQsIDIwOSwgMjA5LCAxLCAKKyAgICAyMzQsIDI4LCAyMDksIDIwOSwgMSwgMjM0LCAxMDYsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNiwgMjE3LCA2MiwgCisgICAgMjA5LCAyMDksIDEsIDIyOSwgNCwgMjA5LCAyMDksIDEsIDI0OSwgMjM4LCAyMDksIDIwOSwgMSwgMjE5LCA1OSwgMjE3LCAKKyAgICA2MiwgMjA5LCAyMDksIDEsIDIyNywgMTM0LCAyMDksIDIwOSwgMSwgMjQ3LCAxNDUsIDIwOSwgMjA5LCAxLCAxMTEsIDIwOSwgCisgICAgMjA5LCAxLCAyMTYsIDE1NywgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDIxNiwgMTU3LCAyMTcsIDYyLCAyMDksIDIwOSwgMSwgCisgICAgMjI4LCA3NCwgMjA5LCAyMDksIDEsIDI1MSwgMjA1LCAyMDksIDIwOSwgMSwgMjI1LCAxNiwgMjA5LCAyMDksIDEsIDIyNSwgCisgICAgMTIyLCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjQ0LCA0NCwgMjE3LCA2MiwgMjA5LCAyMDksIDEsIDIyNSwgMTIyLCAyMTcsIAorICAgIDYyLCAyMDksIDIwOSwgMSwgMjQ0LCA0NCwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDIzMCwgMTYxLCAyMDksIDIwOSwgMSwgCisgICAgMjEwLCAyNDQsIDIwOSwgMjA5LCAxLCAyMzIsIDE1NywgMjMyLCAyMDYsIDIwOSwgMjA5LCAxLCAyMzIsIDE1NywgMjMyLCAKKyAgICAxMjEsIDIwOSwgMjA5LCAxLCAyMTEsIDIyNywgMjA5LCAyMDksIDEsIDIxOSwgNTksIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAKKyAgICAyNDEsIDY5LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgNzYsIDIwOSwgMjA5LCAxLCAyNDEsIDY5LCAyMTcsIDYyLCAyMDksIAorICAgIDIwOSwgMjQ1LCAxNjMsIDIwOSwgMjA5LCAyNSwgNSwgNjEsIDIwOSwgMjA5LCAyNSwgNSwgMjMxLCAyMDQsIDIzNCwgMjM0LCAKKyAgICAyMDksIDIwOSwgMjUsIDUsIDI1NSwgNzMsIDIwOSwgMjA5LCAyNSwgNSwgMjU0LCAxMzYsIDIwOSwgMjA5LCAyNSwgNSwgNzMsIAorICAgIDIwOSwgMjA5LCAyNSwgNSwgMjM2LCAzMywgMjA5LCAyMDksIDI1LCA1LCAyMTEsIDExNywgMjA5LCAyMDksIDI1LCA1LCAKKyAgICAyMTAsIDE2OSwgMjA5LCAyMDksIDI1LCA1LCA3MCwgMjA5LCAyMDksIDI1LCA1LCAyMTQsIDExOCwgMjA5LCAyMDksIDI1LCAKKyAgICA1LCAyMzEsIDIwNCwgMjM0LCAxMywgMjA5LCAyMDksIDIyMCwgMTQ1LCA1LCAyMzIsIDE1NiwgMjA5LCAyMDksIDIyMCwgCisgICAgMTQ1LCA1LCAyMjcsIDEzNCwgMjA5LCAyMDksIDI1LCA1LCA3NSwgMjA5LCAyMDksIDI1LCA1LCAyNDUsIDE5NSwgMjA5LCAKKyAgICAyMDksIDI1LCA1LCA3NiwgMjA5LCAyMDksIDI1LCA1LCAyNTMsIDE2NywgMjA5LCAyMDksIDI1LCA1LCAyNTQsIDIwMSwgCisgICAgMjA5LCAyMDksIDIzNCwgMjksIDIzMywgMTM1LCAyMDksIDIwOSwgMTM4LCAyMzEsIDIwNCwgMjQ1LCAxODAsIDIwOSwgMjA5LCAKKyAgICAxMzgsIDIzMSwgMjA0LCAyMTYsIDE1NiwgMjA5LCAyMDksIDEzOCwgMjMxLCAyMDQsIDIxNiwgMTE3LCAyMDksIDIwOSwgCisgICAgMTM4LCAyMzEsIDIwNCwgMjUwLCAyMjMsIDIwOSwgMjA5LCAyNTEsIDQsIDc4LCAyMDksIDIwOSwgMjI4LCAyMTQsIDIwOSwgCisgICAgMjA5LCAyMSwgMjEwLCA4NiwgMjA5LCAyMDksIDIxLCAxMTAsIDIwOSwgMjA5LCAyMSwgMTA1LCAyMDksIDIwOSwgMjEsIAorICAgIDE1OCwgMjA5LCAyMDksIDIxLCAxNjEsIDIwOSwgMjA5LCAyMSwgMTg5LCAyMDksIDIwOSwgMjEsIDE5NCwgMjA5LCAyMDksIAorICAgIDIxLCAxOTgsIDIwOSwgMjA5LCAyMSwgMTk1LCAyMDksIDIwOSwgMjEsIDIwMCwgMjA5LCAyMDksIDI0MSwgNjksIDIyOCwgCisgICAgNzQsIDIwOSwgMjA5LCAyNDEsIDY5LCAyMzAsIDE2MSwgMjA5LCAyMDksIDEsIDIzNCwgMTA3LCAyNDIsIDE3NCwgMjA5LCAKKyAgICAyMDksIDEsIDIzNCwgMTA3LCAyMjcsIDEzNCwgNjMsIDMsIDIyNiwgMjA0LCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAKKyAgICAyMzAsIDI0OCwgMjE1LCAxODksIDYxLCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAyMzAsIDI0OCwgMjU1LCAxNTksIAorICAgIDIyMiwgMjE2LCAyNTIsIDc3LCAxODQsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTEsIDAsIDIzMCwgMjQ4LCAyNTUsIDE1OSwgCisgICAgMjQyLCAxMTUsIDIxNSwgMTczLCAxODQsIDYzLCAxNjQsIDY1LCAyMTEsIDAsIDIzMCwgMjQ4LCAyMzEsIDkzLCAxODQsIDYzLCAKKyAgICAxNjQsIDI0OSwgMjUyLCAyMTEsIDAsIDIzMCwgMjQ4LCAyMjAsIDEwOSwgMTg0LCA2MywgMTY0LCAyNTAsIDIzOSwgMjExLCAKKyAgICAwLCAyMzAsIDI0OCwgMjI1LCAxMTIsIDIyMCwgOTYsIDE4NCwgNjMsIDE2NCwgMjExLCAwLCAyMzAsIDI0OCwgMjE1LCAxNzMsIAorICAgIDIyMCwgOTYsIDE4NCwgNjMsIDE2NCwgMjIxLCAyMDgsIDIyMCwgOTUsIDYzLCAxNjQsIDI1MSwgMTI4LCAyMTEsIDAsIDIzMCwgCisgICAgMjQ3LCA2MywgMTY0LCAyNTEsIDIyMywgMjIwLCAzLCAyMTEsIDAsIDIzMCwgMjQ3LCA2MywgMTY0LCAyMzUsIDE5NywgMjE1LCAKKyAgICAxNzIsIDYzLCAxNjQsIDI0OCwgNjEsIDIxNSwgMTczLCAyNTEsIDEyNywgNjMsIDE2NCwgMjIwLCA5NSwgNjMsIDE2NCwgCisgICAgMjI3LCAxMzksIDIyMCwgOTUsIDYzLCAxNjQsIDIxNSwgMTczLCAyMjAsIDk1LCA2MywgMTY0LCAyMjcsIDEzOSwgMjE1LCAKKyAgICAxNzMsIDIyMCwgOTUsIDYzLCAxNjQsIDIyMiwgMjM2LCAyNTAsIDEyMiwgMjE4LCAyMzYsIDIyMCwgOTUsIDYzLCAxNjQsIAorICAgIDIyMywgNDIsIDI0MiwgMTQ2LCAyMjAsIDk1LCA2MywgMTY0LCAyNTAsIDIzOSwgMjU1LCAxNjMsIDIyMiwgMTQ0LCAyMzEsIAorICAgIDkyLCAxOTksIDI1MSwgNywgNjMsIDE2NCwgMjQyLCAxMTUsIDIxNSwgMTcyLCA2MywgMjMyLCAxNDQsIDUsIDI1MCwgMTU1LCAKKyAgICAyMjIsIDE0MywgNjMsIDIzMiwgMTQ0LCA1LCAyMzIsIDI1MiwgMjIyLCAxNDMsIDYzLCAyNTMsIDIxMiwgNSwgMjIwLCAxMDUsIAorICAgIDI0MywgNjUsIDI1NSwgMTY0LCAyMjIsIDE0MywgNjMsIDI1MywgMjEyLCA1LCAyNTUsIDE2MSwgMTkwLCA2MywgMjUzLCAKKyAgICAyMTIsIDUsIDIyMSwgMTgyLCAyMTUsIDE2OCwgNjMsIDUsIDIyMywgMTMwLCAyNDcsIDE1OSwgMjQzLCA2NCwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyNDcsIDE1OSwgMjQyLCAxNzYsIDYzLCA1LCAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MiwgMTE2LCA2MywgNSwgCisgICAgMjIzLCAxMzAsIDIyOSwgMjE5LCAyNDMsIDY0LCA2MywgNSwgMjIzLCAxMzAsIDIyOSwgMjE5LCAyNDIsIDE3NiwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyNDcsIDE1OSwgMjIzLCAxMzAsIDIyOSwgMjE4LCA2MywgMjEsIDIxMCwgODYsIDYzLCAyMSwgMTEwLCA2MywgCisgICAgMjEsIDEwNSwgNjMsIDIxLCAxNTgsIDYzLCAyMSwgMTYxLCA2MywgMjEsIDE4OSwgNjMsIDIxLCAxOTQsIDYzLCAyMSwgMTk4LCAKKyAgICA2MywgMjEsIDE5NSwgNjMsIDIxLCAyMDAsIDYzLCAyMSwgMTYzLCAxMTAsIDYzLCAyMSwgMTYzLCAxMDUsIDYzLCAyMSwgCisgICAgMTYzLCAxNTgsIDYzLCAyMSwgMTYzLCAxNjEsIDYzLCAyMSwgMTYzLCAxODksIDYzLCAyMSwgMTYzLCAxOTQsIDYzLCAyMSwgCisgICAgMTYzLCAxOTgsIDYzLCAyMSwgMTYzLCAxOTUsIDYzLCAyMSwgMTYzLCAyMDAsIDYzLCAyMSwgMTYzLCAyMTAsIDg2LCA2MywgCisgICAgMTY0LCAyNTEsIDEzMCwgMjIyLCAxNDMsIDYzLCAxNjQsIDIyOSwgNjgsIDI1MSwgNjgsIDIyNywgMTQ5LCAyMTAsIDI1LCAKKyAgICA2MywgMTY0LCAyNTAsIDIzOSwgMjU1LCAxNjMsIDIyMiwgMTQ0LCAyNTEsIDY5LCAyMzAsIDIwMiwgMjUxLCA3LCA2MywgCisgICAgMTY0LCAyMjksIDY4LCAyNTEsIDY4LCAyMjAsIDEwNiwgMjIyLCAxNDMsIDYzLCAxNjQsIDI1MCwgMTMyLCAyMzAsIDI0NywgCisgICAgNjMsIDE2NCwgMjE1LCAxODQsIDI1NSwgMTYwLCA2MywgMTY0LCAyNDIsIDEwMCwgMjIyLCAxNDQsIDI0MiwgNjMsIDYzLCAKKyAgICAxNjQsIDI0MiwgMTAwLCAyMjIsIDE0NCwgMjQyLCA2OSwgNjMsIDE2NCwgMjU0LCAxMTYsIDIzNCwgMTIzLCAyNDIsIDYzLCAKKyAgICA2MywgMTY0LCAyNTQsIDExNiwgMjM0LCAxMjMsIDI0MiwgNjksIDYzLCA1LCAyMTEsIDY1LCAyMTUsIDE3MSwgNjMsIDUsIAorICAgIDIzMSwgMTY3LCAyMTUsIDE3MSwgNjMsIDEsIDE3NiwgNjMsIDEsIDIzNCwgMTMyLCA2MywgMSwgMjQzLCAxMzUsIDYzLCAxLCAKKyAgICAyNDIsIDI0OSwgNjMsIDEsIDIyOSwgNzcsIDYzLCAxLCAyNTEsIDMzLCA2MywgMSwgMjUwLCAxNTcsIDYzLCAxLCAyMzUsIAorICAgIDE0MSwgNjMsIDEsIDIyNywgMTY1LCA2MywgMSwgMjE1LCAxNTYsIDYzLCAxLCAyMTUsIDE0NCwgNjMsIDEsIDI0OCwgMTM1LCAKKyAgICA2MywgMSwgMjQ4LCAxMTksIDYzLCAxLCAyMjgsIDExMCwgNjMsIDEsIDIxNywgMTA1LCA2MywgMSwgMjE2LCAyMDgsIDYzLCAKKyAgICAxLCAyNDgsIDIyMSwgNjMsIDEsIDI0OCwgMjUsIDYzLCAxLCAxOTcsIDYzLCAxLCAxOTAsIDYzLCAxLCAyMjUsIDE0NywgNjMsIAorICAgIDEsIDI1MiwgMTkxLCA2MywgMSwgMjUyLCAxOCwgNjMsIDEsIDE4NCwgNjMsIDEsIDIxNSwgMTgzLCA2MywgMSwgMjE1LCAKKyAgICAxNzUsIDYzLCAxLCAyNDYsIDM4LCA2MywgMSwgMjQ2LCAzMywgNjMsIDEsIDIxMiwgNjUsIDYzLCAxLCAyMTAsIDgyLCA2MywgCisgICAgMSwgMjEwLCAxMTYsIDYzLCAxLCAyNTUsIDE2NiwgNjMsIDEsIDE5MSwgNjMsIDEsIDIwNSwgNjMsIDEsIDIzMywgMTM1LCAKKyAgICA2MywgMSwgMjIwLCAxMDIsIDYzLCAxLCAyMTgsIDIyMywgNjMsIDEsIDIwNiwgNjMsIDEsIDE2MiwgNjMsIDEsIDYxLCA2MywgCisgICAgMSwgMjMzLCAyMzEsIDYzLCAxLCAyNDQsIDc3LCAyMDUsIDYzLCAxLCAyMzQsIDQ2LCA2MywgMSwgMjIyLCAxNzksIDYzLCAKKyAgICAyNSwgNSwgMjU1LCA3MywgNjMsIDI1LCA1LCA3MywgNjMsIDI1LCA1LCAyMzYsIDMzLCA2MywgMjUsIDUsIDcwLCA2MywgMjUsIAorICAgIDUsIDIxNCwgMTE4LCA2MywgMjUsIDUsIDE0OSwgMTUzLCA2MywgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDYzLCAyNSwgNSwgCisgICAgMTQ5LCAxNTYsIDYzLCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgNjMsIDI1LCA1LCA3NSwgNjMsIDI1LCA1LCAyNDUsIDIwOSwgCisgICAgNjMsIDI1LCA1LCA3NiwgNjMsIDI1LCA1LCAyMjYsIDE4MywgNjMsIDUsIDIyMiwgMjIxLCAyMTgsIDg0LCAyMjksIDc4LCAKKyAgICAyMjIsIDIxMSwgNjMsIDUsIDIyMiwgMjE2LCAyNTIsIDc2LCA2MywgMjUsIDUsIDIyMywgNDksIDczLCA2MywgMjUsIDUsIAorICAgIDIyMywgNDksIDIzNiwgMzMsIDYzLCA1LCAyMjcsIDE0OSwgMjEwLCAyNiwgMjI5LCAyMjYsIDI0OCwgMjIxLCA2MywgNSwgCisgICAgMjE5LCA3MSwgMjMzLCA2MCwgNjMsIDE2NCwgMjQyLCAyOSwgNjMsIDE2NCwgMjI2LCA1NywgNjMsIDUsIDIzMywgNjMsIAorICAgIDIyMiwgMTQzLCA2MywgNSwgMjExLCA3MCwgMjIyLCAxNDMsIDYzLCA1LCAyMzMsIDY0LCAyMTUsIDE4NCwgMjUxLCA3LCA2MywgCisgICAgNSwgMjMxLCA5NSwgMjUxLCA3LCA2MywgNSwgMjQyLCAxMTksIDI1MSwgOCwgMjIzLCA0MCwgNjMsIDUsIDI0MiwgMTE5LCAKKyAgICAyMzEsIDg1LCAyMjMsIDQwLCA2MywgNSwgMjM1LCAxOTMsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDUsIDIzMywgCisgICAgNjQsIDIxNSwgMTg0LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAyMzEsIDk1LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAKKyAgICAyMzUsIDE5MywgMjMxLCA5NSwgMjUxLCA3LCA2MywgMjE4LCA3MywgMSwgMTc2LCA2MywgMjE4LCA3MywgMSwgMjM0LCAxMzIsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyNDMsIDEzNSwgNjMsIDIxOCwgNzMsIDEsIDI0MiwgMjQ5LCA2MywgMjE4LCA3MywgMSwgMjI5LCAKKyAgICA3NywgNjMsIDIxOCwgNzMsIDEsIDI1MSwgMzMsIDYzLCAyMTgsIDczLCAxLCAyNTAsIDE1NywgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIzNSwgMTQxLCA2MywgMjE4LCA3MywgMSwgMjI3LCAxNjUsIDYzLCAyMTgsIDczLCAxLCAyMTUsIDE1NiwgNjMsIDIxOCwgCisgICAgNzMsIDEsIDIxNSwgMTQ0LCA2MywgMjE4LCA3MywgMSwgMjQ4LCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyNDgsIDExOSwgNjMsIAorICAgIDIxOCwgNzMsIDEsIDIyOCwgMTEwLCA2MywgMjE4LCA3MywgMSwgMjE3LCAxMDUsIDYzLCAyMTgsIDczLCAxLCAyMTYsIDIwOCwgCisgICAgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMjIxLCA2MywgMjE4LCA3MywgMSwgMjQ4LCAyNSwgNjMsIDIxOCwgNzMsIDEsIDE5NywgCisgICAgNjMsIDIxOCwgNzMsIDEsIDE5MCwgNjMsIDIxOCwgNzMsIDEsIDIyNSwgMTQ3LCA2MywgMjE4LCA3MywgMSwgMjUyLCAxOTEsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyNTIsIDE4LCA2MywgMjE4LCA3MywgMSwgMTg0LCA2MywgMjE4LCA3MywgMSwgMjE1LCAxODMsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyMTUsIDE3NSwgNjMsIDIxOCwgNzMsIDEsIDI0NiwgMzgsIDYzLCAyMTgsIDczLCAxLCAyNDYsIAorICAgIDMzLCA2MywgMjE4LCA3MywgMSwgMjEyLCA2NSwgNjMsIDIxOCwgNzMsIDEsIDIxMCwgODIsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMTAsIDExNiwgNjMsIDIxOCwgNzMsIDEsIDI1NSwgMTY2LCA2MywgMjE4LCA3MywgMSwgMTkxLCA2MywgMjE4LCA3MywgMSwgCisgICAgMjA1LCA2MywgMjE4LCA3MywgMSwgMjMzLCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyMjAsIDEwMiwgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIxOCwgMjIzLCA2MywgMjE4LCA3MywgMSwgMjA2LCA2MywgMjE4LCA3MywgMSwgMTYyLCA2MywgMjE4LCA3MywgMSwgNjEsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyMzMsIDIzMSwgNjMsIDIxOCwgNzMsIDEsIDI0NCwgNzcsIDIxMiwgNjUsIDYzLCAyMTgsIDczLCAKKyAgICAxLCAyNDQsIDc3LCAxOTEsIDYzLCAyMTgsIDczLCAxLCAyNDQsIDc3LCAyMDUsIDYzLCAyMzMsIDIxOCwgMjIyLCAxNDEsIAorICAgIDIzNCwgMTMyLCA2MywgMjMzLCAyMTgsIDIyMiwgMTQxLCAyMzQsIDEzMywgMjUxLCA2OSwgMjMwLCAyMDIsIDI1MSwgNywgCisgICAgNjMsIDI1MCwgMjUyLCA1LCAxMTQsIDI1MiwgNzAsIDYzLCAyNTAsIDI1MiwgNSwgMTkyLCAyNTIsIDcwLCA2MywgMjUwLCAKKyAgICAyNTIsIDUsIDI1MCwgMjUzLCAyMTcsIDIwLCA2MywgMjUwLCAyNTIsIDUsIDIyMSwgMjA3LCAyNTUsIDE2NSwgNjMsIDE2LCAKKyAgICAyNDYsIDkxLCAyNTEsIDEyNSwgNjMsIDE2LCAyMjMsIDEyOSwgMjIyLCAyMjIsIDYzLCAxNiwgMjI2LCA3NywgMjQzLCA2MywgCisgICAgNjMsIDE2LCAyMjMsIDEyOSwgMjIyLCAyMjMsIDIyMywgNDIsIDI0MiwgMTQ1LCA2MywgMTYsIDIyNSwgMTEyLCAxOTAsIDYzLCAKKyAgICAxNiwgMjI4LCA1OSwgMjUxLCAxMjUsIDYzLCAxNiwgMjI4LCA1OSwgMjUxLCAxMjYsIDIyNywgMTM5LCAyNTUsIDE2MiwgNjMsIAorICAgIDE2LCAyMjgsIDU5LCAyNTEsIDEyNiwgMjQyLCAxMTcsIDI1NSwgMTYyLCA2MywgMTYsIDIyOCwgNTksIDI1MSwgMTI2LCAKKyAgICAyNTEsIDY5LCAyNTUsIDE2MiwgNjMsIDUsIDIyMywgMTMwLCAyMjksIDIxOSwgMjIzLCAxMzAsIDI0NywgMTU4LCA2MywgNSwgCisgICAgMjIzLCAxMzAsIDIyOSwgMjE5LCAyNDIsIDExNiwgNjMsIDE2NCwgMjUxLCAxMjksIDIyMCwgMywgMjQyLCAyMTUsIDIzMCwgCisgICAgMjQ4LCAyMjMsIDQxLCA2MywgMTY0LCAyMzAsIDE2MywgMjExLCAwLCAyNDIsIDIxNSwgMjMwLCAyNDgsIDIyMywgNDEsIDYzLCAKKyAgICAxNjQsIDIyNywgMTM5LCAyMTUsIDE3MiwgNjMsIDE2NCwgNjUsIDI1MSwgMTUyLCAyMjIsIDIxMywgMjExLCAwLCAyMzAsIAorICAgIDI0OCwgMjMxLCA5MywgMTg0LCA2MywgMTY0LCAyNDksIDI1MiwgMjUxLCAxNTIsIDIyMiwgMjEzLCAyMTEsIDAsIDIzMCwgCisgICAgMjQ4LCAyMjAsIDEwOSwgMTg0LCAyMjIsIDI1MCwgMjE3LCAyNTUsIDUwLCAyMzMsIDQ1LCAyMTcsIDI1NSwgNTAsIDIyMiwgCisgICAgMjUwLCAyMTcsIDI1NSwgNSwgMiwgMjQ3LCAxMTgsIDIzMywgNDUsIDIxNywgMjU1LCA1LCAyLCAyNDcsIDExOCwgNjMsIAorICAgIDE2NCwgMjMzLCA1NSwgMjMxLCA5NiwgMjIyLCAxNDMsIDYzLCAxNjQsIDIxNSwgMjUwLCAyMzEsIDk2LCAyMjIsIDE0MywgCisgICAgNjgsIDEsIDE3NiwgNjgsIDEsIDIzNCwgMTMyLCA2OCwgMSwgMjQzLCAxMzUsIDY4LCAxLCAyNDIsIDI0OSwgNjgsIDEsIAorICAgIDIyOSwgNzcsIDY4LCAxLCAyNTEsIDMzLCA2OCwgMSwgMjUwLCAxNTcsIDY4LCAxLCAyMzUsIDE0MSwgNjgsIDEsIDIzNSwgCisgICAgMTE0LCA2OCwgMSwgMjI3LCAxNjUsIDY4LCAxLCAyMjgsIDc2LCA2OCwgMSwgMjE1LCAxNTYsIDY4LCAxLCAyMTUsIDE0NCwgCisgICAgNjgsIDEsIDI0OCwgMTM1LCA2OCwgMSwgMjQ4LCAxMTksIDY4LCAxLCAyMjgsIDExMCwgNjgsIDEsIDIxNywgMTA1LCA2OCwgCisgICAgMSwgMjE2LCAyMDgsIDY4LCAxLCAyNDgsIDIyMSwgNjgsIDEsIDI0OCwgMjUsIDY4LCAxLCAxOTcsIDY4LCAxLCAxOTAsIDY4LCAKKyAgICAxLCAyMjUsIDE0NywgNjgsIDEsIDI1MiwgMTkxLCA2OCwgMSwgMjUyLCAxOCwgNjgsIDEsIDE4NCwgNjgsIDEsIDE5MSwgNjgsIAorICAgIDEsIDIwNSwgNjgsIDEsIDIzMywgMTM1LCA2OCwgMSwgMjEyLCA2NSwgNjgsIDEsIDIwNiwgNjgsIDEsIDE2MiwgNjgsIDEsIAorICAgIDIzMiwgMTg0LCA2OCwgMSwgNjEsIDY4LCAxLCAyMjAsIDg2LCA2MSwgNjgsIDEsIDczLCA2OCwgMSwgMjM2LCAzMywgNjgsIAorICAgIDEsIDcwLCA2OCwgMSwgMjE0LCAxMTgsIDY4LCAxLCA3NSwgNjgsIDEsIDIzMCwgMTUxLCA3NSwgNjgsIDEsIDc2LCA2OCwgMSwgCisgICAgMjUzLCAxOTIsIDY4LCAyNSwgNSwgMjE3LCA2NCwgMjU1LCA3MywgNjgsIDI1LCA1LCAyNTUsIDczLCA2OCwgMjUsIDUsIDczLCAKKyAgICA2OCwgMjUsIDUsIDIzNiwgMzMsIDY4LCAyNSwgNSwgNzAsIDY4LCAyNSwgNSwgMjE0LCAxMTgsIDY4LCAyNSwgNSwgNzUsIAorICAgIDY4LCAyNSwgNSwgMjU0LCAyMDEsIDY4LCAyNSwgNSwgMjMwLCAxNTEsIDIzNiwgMzMsIDY4LCAyNSwgNSwgMjMwLCAxNTEsIAorICAgIDc2LCA2OCwgMjUsIDUsIDE2MCwgNDgsIDY4LCA1LCAyNTQsIDc1LCA2OCwgNSwgNTksIDUxLCA2OCwgNSwgMjEzLCAxNDcsIAorICAgIDY4LCA1LCAyMTMsIDE1MiwgNjgsIDUsIDI1MywgMjM1LCA2OCwgMTE2LCA1LCAxNDcsIDE5MSwgNjgsIDExNiwgNSwgMTQ3LCAKKyAgICAyMDUsIDY4LCAxMTYsIDUsIDE0NywgMjEyLCA2NSwgNjgsIDExNiwgNSwgMTQ3LCAxNjIsIDY4LCAxLCAyNDIsIDEzMiwgCisgICAgMjA2LCA2OCwgMjEsIDIxMCwgODYsIDY4LCAyMSwgMTEwLCA2OCwgMjEsIDEwNSwgNjgsIDIxLCAxNTgsIDY4LCAyMSwgMTYxLCAKKyAgICA2OCwgMjEsIDE4OSwgNjgsIDIxLCAxOTQsIDY4LCAyMSwgMTk4LCA2OCwgMjEsIDE5NSwgNjgsIDIxLCAyMDAsIDY4LCA1LCAKKyAgICAyMzIsIDE5MiwgMjIxLCAxNzIsIDY4LCA1LCAyMjEsIDE3MiwgNjgsIDE2LCAyMzIsIDE1MywgNjgsIDE2LCAyNDksIDIxMywgCisgICAgNjgsIDE2LCAyNTQsIDIyMCwgNjgsIDE2LCAyNDMsIDQ4LCA2OCwgMSwgMjIwLCAxMDIsIDY4LCAxLCAyMTgsIDIyMywgNjgsIAorICAgIDEsIDE0OSwgMTUzLCA2OCwgMSwgMTQ5LCAyMjIsIDE4MCwgNjgsIDEsIDE0OSwgMTU2LCA2OCwgMSwgMTQ5LCAyMzIsIDE4NSwgCisgICAgNjgsIDI1LCA1LCAxNDksIDE1MywgNjgsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA2OCwgMjUsIDUsIDE0OSwgMTU2LCA2OCwgCisgICAgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDY4LCAxLCAyMzAsIDE1MSwgMjI5LCA3NywgNjgsIDEsIDIzMCwgMTUxLCAyMzUsIAorICAgIDExNCwgNjgsIDEsIDIzMCwgMTUxLCAyNTIsIDExMSwgNjgsIDEsIDIzMCwgMTUxLCAyNTIsIDEwNiwgNjgsIDExNiwgNSwgCisgICAgMjMwLCAxNTEsIDE0NywgMTk3LCA2OCwgMTE2LCA1LCAyMzAsIDE1MSwgMTQ3LCAxODQsIDY4LCAxMTYsIDUsIDIzMCwgMTUxLCAKKyAgICAxNDcsIDIzMywgMTM1LCA2OCwgMSwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyMjAsIDEwMiwgNjgsIDI1LCA1LCAyMjAsIDEwOCwgCisgICAgMjM0LCAyMTMsIDI0NSwgNTUsIDY4LCAxMzgsIDE2NCwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyNDEsIDI0NywgNjgsIDEzOCwgCisgICAgMTY0LCAyMjAsIDEwOCwgMjM0LCAyMTMsIDIzNCwgMTgzLCAyMjUsIDEyMSwgNjgsIDEsIDIxMiwgNywgMjI0LCAxMDgsIAorICAgIDIzNCwgMjEzLCAyMTYsIDIwOCwgNjgsIDEsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMjQsIDExNCwgNjgsIDI1LCAKKyAgICA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjQ1LCA1NSwgNjgsIDI1LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIAorICAgIDIxMywgMjE0LCAyMTQsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyOSwgNjgsIDUsIDIxMiwgNywgCisgICAgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI4LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjcsIAorICAgIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyNiwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgCisgICAgMjEzLCAyMTYsIDI1LCA2OCwgMSwgMjQ1LCAyMTksIDIyNCwgMTA4LCAyMzQsIDIxMywgMjI4LCAxMTAsIDY4LCAxLCAyNDUsIAorICAgIDIxOSwgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTAsIDE3NiwgNjgsIDEsIDI0NSwgMjE5LCAyMjQsIDEwOCwgMjM0LCAyMTMsIAorICAgIDI0MiwgMjE3LCA2OCwgMjUsIDUsIDI0MywgNTksIDIzNCwgMjEzLCA3MywgNjgsIDI1LCA1LCAyMzQsIDE4OCwgMjI2LCAKKyAgICAyMzQsIDY4LCAyNSwgNSwgMjM0LCAxODgsIDcwLCA2OCwgMjUsIDUsIDIzNCwgMTg4LCAyNDUsIDIwOSwgNjgsIDEsIDIyMCwgCisgICAgODYsIDE3NiwgNjgsIDEsIDIyMCwgODYsIDIzNCwgMTMyLCA2OCwgMSwgMjIwLCA4NiwgMjQzLCAxMzUsIDY4LCAxLCAyMjAsIAorICAgIDg2LCAyNTEsIDMzLCA2OCwgMSwgMjIwLCA4NiwgMjEwLCAxMTYsIDY4LCAxLCAyMjAsIDg2LCAyMjcsIDE2NSwgNjgsIDEsIAorICAgIDIyMCwgODYsIDI0OCwgMjIxLCA2OCwgMSwgMjIwLCA4NiwgMTk3LCA2OCwgMSwgMjIwLCA4NiwgMjI1LCAxNDcsIDY4LCAxLCAKKyAgICAyMjAsIDg2LCAyNDQsIDE5NiwgNjgsIDEsIDIyMCwgODYsIDI1MiwgMTkxLCA2OCwgMSwgMjIwLCA4NiwgMjE2LCAyMDgsIAorICAgIDY4LCAxLCAyMjAsIDg2LCAxNjIsIDY4LCAxMTYsIDUsIDIyMCwgODYsIDE0NywgMjEyLCA2NSwgNjgsIDI1LCA1LCAyMjAsIAorICAgIDg2LCAyNTUsIDczLCA2OCwgMjUsIDUsIDIyMCwgODYsIDc1LCA2OCwgMjUsIDUsIDIyMCwgODYsIDE2MCwgNDgsIDY4LCAyNSwgCisgICAgNSwgMjIwLCA4NiwgNDAsIDIxMSwgMTE3LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyOCwgNjgsIDUsIDIyMCwgODYsIDIxNiwgCisgICAgMjcsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIDI1LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyNCwgNjgsIDUsIDIyMCwgODYsIAorICAgIDI0OSwgMTUyLCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4NiwgMjQ5LCAxNTIsIDIxNiwgMjcsIDY4LCA1LCAyMjAsIDg2LCAKKyAgICAyNDksIDE1MiwgMjQ1LCAxNTMsIDIxNiwgMzAsIDY4LCAxLCAyMjIsIDEyOCwgMjI2LCA2MywgMjQ0LCAxOTYsIDY4LCA1LCAKKyAgICAyMjIsIDEyOCwgMjI2LCA2MywgMjE2LCAyNSwgNjgsIDIyMCwgODYsIDIxLCAyMTAsIDg2LCA2OCwgMjIwLCA4NiwgMjEsIAorICAgIDExMCwgNjgsIDIyMCwgODYsIDIxLCAxMDUsIDY4LCAyMjAsIDg2LCAyMSwgMTU4LCA2OCwgMjIwLCA4NiwgMjEsIDE2MSwgCisgICAgNjgsIDIyMCwgODYsIDIxLCAxODksIDY4LCAyMjAsIDg2LCAyMSwgMTk0LCA2OCwgMjIwLCA4NiwgMjEsIDE5OCwgNjgsIAorICAgIDIyMCwgODYsIDIxLCAxOTUsIDY4LCAyMjAsIDg2LCAyMSwgMjAwLCA2OCwgNSwgMjM0LCAxMjYsIDIxNiwgMjksIDY4LCA1LCAKKyAgICAyMzQsIDEyNiwgMjE2LCAyNywgNjgsIDI1LCA1LCAyNTQsIDE5MCwgNjEsIDY4LCAyNSwgNSwgMjU0LCAxOTAsIDI1NCwgCisgICAgMjAxLCA2OCwgMTYsIDIyMCwgODYsIDExMCwgNjgsIDE2LCAyMjAsIDg2LCAyNDUsIDMwLCA5OCwgNiwgMSwgMjU0LCAxMjMsIAorICAgIDk4LCA2LCAxLCAyNTIsIDE1MiwgOTgsIDYsIDEsIDI0MywgMTA2LCA5OCwgNiwgMSwgMjQ3LCAxMjgsIDk4LCA2LCAxLCAKKyAgICAyNDUsIDE1MCwgOTgsIDYsIDEsIDIxMywgMTYwLCA5OCwgNiwgMSwgMjEwLCA4OSwgOTgsIDYsIDEsIDIxNywgNjAsIDk4LCAKKyAgICA2LCAxLCAyMzUsIDI1NSwgOTgsIDYsIDEsIDIzNCwgMjM0LCA5OCwgNiwgMSwgMjMzLCA4MSwgOTgsIDYsIDEsIDIzMSwgCisgICAgMTg1LCA5OCwgNiwgMSwgMjI5LCAxOTUsIDk4LCA2LCAxLCAyMjYsIDE5NiwgOTgsIDYsIDEsIDIyNiwgMTcsIDk4LCA2LCAxLCAKKyAgICAyMTAsIDc4LCA5OCwgNiwgMSwgMjIzLCAxNzEsIDk4LCA2LCAxLCAyMjEsIDI0MywgOTgsIDYsIDEsIDIxNywgNTAsIDk4LCAKKyAgICA2LCAxLCAyMTQsIDE5MCwgOTgsIDYsIDEsIDIyNSwgMTQwLCA5OCwgNiwgMSwgMjM0LCAxMjEsIDk4LCA2LCAxLCAyNDIsIAorICAgIDI0MSwgOTgsIDYsIDEsIDIyNCwgNzMsIDk4LCA2LCAxLCAyMjAsIDIwLCA5OCwgNiwgMSwgMjUwLCA5NywgOTgsIDYsIDEsIAorICAgIDI1MSwgNywgOTgsIDYsIDEsIDIzNSwgMTAwLCA5OCwgNiwgMSwgMjUwLCA0MCwgOTgsIDYsIDEsIDI1MCwgMTQzLCA5OCwgNiwgCisgICAgMSwgMjExLCAxNjMsIDk4LCA2LCAxLCAyMzUsIDExMSwgOTgsIDYsIDEsIDI0MiwgNDMsIDk4LCA2LCAxLCAyNDEsIDIzOCwgCisgICAgOTgsIDYsIDEsIDI0MSwgMTc1LCA5OCwgNiwgMSwgMjEyLCAyMiwgOTgsIDYsIDEsIDI0MiwgNCwgOTgsIDYsIDEsIDI0MSwgCisgICAgNjUsIDk4LCA2LCAxLCAyMTAsIDI0NiwgOTgsIDYsIDEsIDI1NCwgMjMyLCA5OCwgMSwgMjU0LCAxMjMsIDk4LCAxLCAyNTIsIAorICAgIDE1MiwgOTgsIDEsIDI0MywgMTA2LCA5OCwgMSwgMjQ3LCAxMjgsIDk4LCAxLCAyNDUsIDE1MCwgOTgsIDEsIDIxMywgMTYwLCAKKyAgICA5OCwgMSwgMjEwLCA4OSwgOTgsIDEsIDIxNywgNjAsIDk4LCAxLCAyMzUsIDI1NSwgOTgsIDEsIDIzNCwgMjM0LCA5OCwgMSwgCisgICAgMjMzLCA4MSwgOTgsIDEsIDIzMSwgMTg1LCA5OCwgMSwgMjI5LCAxOTUsIDk4LCAxLCAyMjYsIDE5NiwgOTgsIDEsIDIyNiwgCisgICAgMTcsIDk4LCAxLCAyMTAsIDc4LCA5OCwgMSwgMjIzLCAxNzEsIDk4LCAxLCAyMjEsIDI0MywgOTgsIDEsIDIxNywgNTAsIDk4LCAKKyAgICAxLCAyMTQsIDE5MCwgOTgsIDEsIDIyNSwgMTQwLCA5OCwgMSwgMjM0LCAxMjEsIDk4LCAxLCAyNDIsIDI0MSwgOTgsIDEsIAorICAgIDIyNCwgNzMsIDk4LCAxLCAyMjAsIDIwLCA5OCwgMSwgMjUwLCA5NywgOTgsIDEsIDI1MSwgNywgOTgsIDEsIDIzNSwgMTAwLCAKKyAgICA5OCwgMSwgMjUwLCA0MCwgOTgsIDEsIDI1MCwgMTQzLCA5OCwgMSwgMjExLCAxNjMsIDk4LCAxLCAyMzUsIDExMSwgOTgsIDEsIAorICAgIDI0MiwgNDMsIDk4LCAxLCAyNDEsIDIzOCwgOTgsIDEsIDI0MSwgMTc1LCA5OCwgMSwgMjEyLCAyMiwgOTgsIDEsIDI0MiwgNCwgCisgICAgOTgsIDEsIDI0MSwgNjUsIDk4LCAxLCAyNDQsIDEyMSwgOTgsIDEsIDIxMCwgMjQ2LCA5OCwgMSwgMjQ1LCAxNjUsIDk4LCAxLCAKKyAgICAyMTUsIDk0LCAyNDMsIDEwNiwgOTgsIDEsIDI1NCwgMTk2LCA5OCwgMjI2LCAxNSwgMjIwLCAxMzcsIDU4LCAxLCA5OCwgCisgICAgMjI5LCAxOTUsIDk4LCAxLCAyNTQsIDIzMiwgOTgsIDEsIDI0MiwgMywgNTAsIDk4LCAxLCAyMzMsIDEyNywgNTAsIDI0LCAKKyAgICAxMDAsIDIzNCwgNTgsIDI0LCAxMDAsIDIxOCwgMjE1LCAyNCwgMTAwLCAyMjgsIDIyNiwgMjQsIDEwMCwgMjE2LCAxMDEsIAorICAgIDI0LCAxMDAsIDIxOCwgMjA0LCAyNCwgMTAwLCAyMjMsIDI2LCAyNCwgMTAwLCAyMzAsIDIxNywgMjQsIDEwMCwgMjI1LCA5NSwgCisgICAgMjQsIDEwMCwgMjE4LCAyMTIsIDI0LCAxMDAsIDIxOSwgMTQ4LCAyNCwgMTAwLCAyMTgsIDIwOSwgMjQsIDEwMCwgMjM2LCAKKyAgICA1NiwgMjQsIDEwMCwgMjUwLCA0NiwgMjQsIDEwMCwgMjE4LCAyMTksIDI0LCAxMDAsIDI1MCwgMTA2LCAyNCwgMTAwLCAyMzQsIAorICAgIDExMCwgMjQsIDEwMCwgMjE2LCAxNzMsIDI0LCAxMDAsIDIyNSwgMTMxLCAyNCwgMTAwLCAyNDEsIDE3MiwgMjQsIDEwMCwgCisgICAgMjI4LCAyMjIsIDI0LCAxMDAsIDIxOCwgMjEzLCAyNCwgMTAwLCAyMjgsIDIxNiwgMjQsIDEwMCwgMjI4LCAyMjAsIDI0LCAKKyAgICAxMDAsIDIxNiwgOTgsIDI0LCAxMDAsIDIyMywgMTQsIDI0LCAxMDAsIDIxOCwgMjExLCAyNCwgMTAwLCAyMjMsIDI0LCAyNCwgCisgICAgMTAwLCAyMzQsIDIxOCwgMjQsIDEwMCwgMjMwLCAyMTAsIDI0LCAxMDAsIDIzNCwgMjIxLCAyNCwgMTAwLCAyMjUsIDkwLCAKKyAgICAyNCwgMTAwLCAyMjUsIDg4LCAyNCwgMTAwLCAyMjUsIDc2LCAyNCwgMTAwLCAyMjUsIDg0LCAyNCwgMTAwLCAyMjUsIDgyLCAKKyAgICAyNCwgMTAwLCAyMjUsIDc5LCAyNCwgMTAwLCAyMjUsIDgxLCAyNCwgMTAwLCAyMjUsIDc4LCAyNCwgMTAwLCAyMjUsIDgzLCAKKyAgICAyNCwgMTAwLCAyMjUsIDkzLCAyNCwgMTAwLCAyMjUsIDk0LCAyNCwgMTAwLCAyMjUsIDc3LCAyNCwgMTAwLCAyMjUsIDg3LCAKKyAgICAyNCwgMTAwLCAyMzQsIDIxOSwgMjQsIDEwMCwgMjM0LCAyMTcsIDI0LCAxMDAsIDIxOSwgMTQxLCAyNCwgMTAwLCAyMTksIAorICAgIDEzOSwgMjQsIDEwMCwgMjE5LCAxMzEsIDI0LCAxMDAsIDIxOSwgMTM0LCAyNCwgMTAwLCAyMTksIDE0MCwgMjQsIDEwMCwgCisgICAgMjE5LCAxMzYsIDI0LCAxMDAsIDIxOSwgMTM1LCAyNCwgMTAwLCAyMTksIDEzMywgMjQsIDEwMCwgMjE5LCAxNDQsIDI0LCAKKyAgICAxMDAsIDIxOSwgMTQ2LCAyNCwgMTAwLCAyMTksIDE0NywgMjQsIDEwMCwgMjE5LCAxNDIsIDI0LCAxMDAsIDIxOSwgMTMyLCAKKyAgICAyNCwgMTAwLCAyMTksIDEzNywgMjQsIDEwMCwgMjE5LCAxNDUsIDI0LCAxMDAsIDI1MCwgOTAsIDI0LCAxMDAsIDI1MCwgODgsIAorICAgIDI0LCAxMDAsIDI1MCwgMTY4LCAyNCwgMTAwLCAyNTAsIDE2NiwgMjQsIDEwMCwgMjI2LCAzMiwgMjQsIDEwMCwgMjM2LCA1MSwgCisgICAgMjQsIDEwMCwgMjM2LCA0MiwgMjQsIDEwMCwgMjM2LCA1MCwgMjQsIDEwMCwgMjM2LCA0NywgMjQsIDEwMCwgMjM2LCA0NSwgCisgICAgMjQsIDEwMCwgMjM2LCA0OSwgMjQsIDEwMCwgMjE4LCAyMTYsIDI0LCAxMDAsIDIzNiwgNTQsIDI0LCAxMDAsIDIzNiwgNTUsIAorICAgIDI0LCAxMDAsIDIzNiwgNDMsIDI0LCAxMDAsIDIzNiwgNDgsIDI0LCAxMDAsIDIxMSwgMjYsIDI0LCAxMDAsIDI1MCwgNDUsIAorICAgIDI0LCAxMDAsIDI1MCwgOTEsIDI0LCAxMDAsIDI1MCwgODksIDI0LCAxMDAsIDI1MCwgMTY5LCAyNCwgMTAwLCAyNTAsIDE2NywgCisgICAgMjQsIDEwMCwgMjUwLCAxMDQsIDI0LCAxMDAsIDI1MCwgMTA1LCAyNCwgMTAwLCAyNTAsIDkyLCAyNCwgMTAwLCAyNTAsIAorICAgIDE3MCwgMjQsIDEwMCwgMjI1LCAxMjksIDI0LCAxMDAsIDIzNCwgMjIwLCAyNCwgMTAwLCAyMTgsIDIxNywgMjQsIDEwMCwgCisgICAgMjExLCAzMiwgMjQsIDEwMCwgMjM0LCA0OSwgMjQsIDEwMCwgMjI4LCAyMTgsIDI0LCAxMDAsIDIyOCwgMjI0LCAyNCwgMTAwLCAKKyAgICAyMjgsIDIyMywgMjQsIDEwMCwgMjE2LCA5NSwgMjQsIDEwMCwgMjQ0LCAxMDMsIDI0LCAxNDMsIDI0NCwgMTAzLCAyNCwgCisgICAgMTQzLCA2MSwgMjQsIDE0MywgMjU0LCAyNDMsIDI0LCAxNDMsIDE5MSwgMjQsIDE0MywgMjExLCA5MiwgMjQsIDE0MywgMjQ1LCAKKyAgICAxMTcsIDI0LCAxNDMsIDc1LCAyNCwgMTQzLCAyMTEsIDM2LCAyNCwgMTQzLCAyMTEsIDQ3LCAyNCwgMTQzLCA3NiwgMjQsIAorICAgIDE0MywgMjEyLCA2NSwgMjQsIDE0MywgMjEyLCA2MiwgMjQsIDE0MywgMjI2LCAyMzQsIDI0LCAxNDMsIDIxMCwgMjQ0LCAyNCwgCisgICAgMTQzLCA3MCwgMjQsIDE0MywgMjEyLCAxMSwgMjQsIDE0MywgMjEyLCAyMiwgMjQsIDE0MywgMjExLCAyNTAsIDI0LCAxNDMsIAorICAgIDIxMCwgMjEyLCAyNCwgMTQzLCAyNDUsIDU1LCAyNCwgMTQzLCAyMTEsIDgsIDI0LCAxNDMsIDczLCAyNCwgMTQzLCAyNTUsIAorICAgIDE1NywgMjQsIDE0MywgMjU1LCAxNTYsIDI0LCAxNDMsIDIxMSwgMTA2LCAyNCwgMTQzLCAyMTEsIDEwNCwgMjQsIDE0MywgCisgICAgMjQ1LCAxMTUsIDI0LCAxNDMsIDI0NSwgMTE0LCAyNCwgMTQzLCAyNDUsIDExNiwgMjQsIDE0MywgMjExLCAzNSwgMjQsIAorICAgIDE0MywgMjExLCAzNCwgMjQsIDE0MywgMjI3LCA4NCwgMjQsIDE0MywgMjI3LCA4NSwgMjQsIDE0MywgMjI3LCA3OCwgMjQsIAorICAgIDE0MywgMjI3LCA4MywgMjQsIDE0MywgMjI3LCA4MSwgMjQsIDE0MywgMjEwLCAyMzgsIDI0LCAxNDMsIDIxMCwgMjM3LCAyNCwgCisgICAgMTQzLCAyMTAsIDIzNiwgMjQsIDE0MywgMjEwLCAyMzksIDI0LCAxNDMsIDIxMCwgMjQwLCAyNCwgMTQzLCAyMTUsIDMwLCAKKyAgICAyNCwgMTQzLCAyMTUsIDI5LCAyNCwgMTQzLCAyMTUsIDI3LCAyNCwgMTQzLCAyMTUsIDI0LCAyNCwgMTQzLCAyMTUsIDI1LCAKKyAgICAyNCwgMTQzLCAyMTAsIDIxMSwgMjQsIDE0MywgMjEwLCAyMDgsIDI0LCAxNDMsIDIxMCwgMjA5LCAyNCwgMTQzLCAyMTAsIAorICAgIDIwMywgMjQsIDE0MywgMjEwLCAyMDQsIDI0LCAxNDMsIDIxMCwgMjA1LCAyNCwgMTQzLCAyMTAsIDIwNywgMjQsIDE0MywgCisgICAgMjQ1LCA0OSwgMjQsIDE0MywgMjQ1LCA1MSwgMjQsIDE0MywgMjExLCA3LCAyNCwgMTQzLCAyNDAsIDE1MywgMjQsIDE0MywgCisgICAgMjQwLCAxNDUsIDI0LCAxNDMsIDI0MCwgMTQ4LCAyNCwgMTQzLCAyNDAsIDE0NiwgMjQsIDE0MywgMjQwLCAxNTAsIDI0LCAKKyAgICAxNDMsIDI0MCwgMTUyLCAyNCwgMTQzLCAyNTQsIDM0LCAyNCwgMTQzLCAyNTQsIDMxLCAyNCwgMTQzLCAyNTQsIDI5LCAyNCwgCisgICAgMTQzLCAyNTQsIDMwLCAyNCwgMTQzLCAyMTgsIDIyMCwgMjQsIDE0MywgMjU1LCAxNTgsIDI0LCAxNDMsIDIxMSwgMTA1LCAKKyAgICAyNCwgMTQzLCAyMTEsIDMzLCAyNCwgMTQzLCAyMjcsIDgwLCAyNCwgMTQzLCAyMjcsIDc5LCAyNCwgOTAsIDIzNCwgNTgsIAorICAgIDI0LCA5MCwgMjE4LCAyMTUsIDI0LCA5MCwgMjM0LCA1MSwgMjQsIDkwLCAyMjgsIDIyNiwgMjQsIDkwLCAyMjgsIDIyNCwgCisgICAgMjQsIDkwLCAyMjgsIDIyMywgMjQsIDkwLCAyMTYsIDEwMSwgMjQsIDkwLCAyMjMsIDI2LCAyNCwgOTAsIDIyMywgMjEsIDI0LCAKKyAgICA5MCwgMjIzLCAxOCwgMjQsIDkwLCAyMjMsIDExLCAyNCwgOTAsIDIyMywgNiwgMjQsIDkwLCAyMjMsIDEsIDI0LCA5MCwgCisgICAgMjIzLCAxMiwgMjQsIDkwLCAyMjMsIDI0LCAyNCwgOTAsIDIzMCwgMjE3LCAyNCwgOTAsIDIyNSwgOTUsIDI0LCA5MCwgMjI1LCAKKyAgICA4NCwgMjQsIDkwLCAyMTksIDE0OCwgMjQsIDkwLCAyMTgsIDIwOSwgMjQsIDkwLCAyMzYsIDU2LCAyNCwgOTAsIDI1MCwgNDYsIAorICAgIDI0LCA5MCwgMjUwLCAxMDYsIDI0LCA5MCwgMjM0LCAxMTAsIDI0LCA5MCwgMjE2LCAxNzMsIDI0LCA5MCwgMjI1LCAxMzEsIAorICAgIDI0LCA5MCwgMjQxLCAxNzIsIDI0LCA5MCwgMjM0LCA1MiwgMjQsIDkwLCAyMzQsIDUwLCAyNCwgOTAsIDIyOCwgMjIyLCAyNCwgCisgICAgOTAsIDIyOCwgMjE2LCAyNCwgOTAsIDIyOCwgMjE4LCAyNCwgOTAsIDIyOCwgMjIxLCAyNCwgOTAsIDIyOCwgMjE3LCAyNCwgCisgICAgOTAsIDIxNiwgOTgsIDI0LCA5MCwgMjE2LCA5NSwgMjQsIDkwLCAyMjMsIDE5LCAyNCwgOTAsIDIyMywgMTQsIDI0LCA5MCwgCisgICAgMjIzLCAwLCAyNCwgOTAsIDIyMiwgMjU1LCAyNCwgOTAsIDIxOCwgMjExLCAyNCwgOTAsIDIyMywgMTYsIDI0LCA5MCwgMjIzLCAKKyAgICAxNSwgMjQsIDkwLCAyMjMsIDgsIDI0LCA5MCwgMjIzLCAxMCwgMjQsIDkwLCAyMjMsIDIzLCAyNCwgOTAsIDIyMywgMywgMjQsIAorICAgIDkwLCAyMjMsIDEzLCAyNCwgOTAsIDIyMywgMjIsIDI0LCA5MCwgMjIyLCAyNTQsIDI0LCA5MCwgMjMwLCAyMTMsIDI0LCA5MCwgCisgICAgMjMwLCAyMDgsIDI0LCA5MCwgMjMwLCAyMTAsIDI0LCA5MCwgMjMwLCAyMDcsIDI0LCA5MCwgMjMwLCAyMDUsIDI0LCA5MCwgCisgICAgMjMwLCAyMTEsIDI0LCA5MCwgMjMwLCAyMTYsIDI0LCA5MCwgMjMwLCAyMTQsIDI0LCA5MCwgMjM0LCAyMjEsIDI0LCA5MCwgCisgICAgMjI1LCA4NiwgMjQsIDkwLCAyMjUsIDg3LCAyNCwgOTAsIDIyNSwgOTIsIDI0LCA5MCwgMjM0LCAyMTksIDI0LCA5MCwgMjE5LCAKKyAgICAxNDEsIDI0LCA5MCwgMjE5LCAxMzEsIDI0LCA5MCwgMjE5LCAxMzQsIDI0LCA5MCwgMjE5LCAxMzYsIDI0LCA5MCwgMjI2LCAKKyAgICAzMiwgMjQsIDkwLCAyMzYsIDUxLCAyNCwgOTAsIDIzNiwgNDQsIDI0LCA5MCwgMjE4LCAyMTYsIDI0LCA5MCwgMjM2LCA1MiwgCisgICAgMjQsIDkwLCAyMTEsIDI2LCAyNCwgOTAsIDIxMSwgMjIsIDI0LCA5MCwgMjExLCAyMywgMjQsIDkwLCAyMjUsIDEyOSwgMjQsIAorICAgIDkwLCAyMzQsIDIyMCwgMjQsIDkwLCAyNDEsIDE3MCwgMjQsIDkwLCAyNDEsIDE2OCwgMjQsIDkwLCAyNDEsIDE3MSwgMjQsIAorICAgIDkwLCAyNDEsIDE2OSwgMjQsIDkwLCAyMTEsIDMyLCAyNCwgOTAsIDIzNCwgNTQsIDI0LCA5MCwgMjM0LCA1MywgMjQsIDkwLCAKKyAgICAyMzQsIDU3LCAyNCwgOTAsIDIzNCwgNTUsIDI0LCA5MCwgMjM0LCA1NiwgMjQsIDkwLCAyMTgsIDIxMywgMjksIDMsIDE2MiwgCisgICAgMjksIDMsIDI0MCwgMjIyLCAyOSwgMywgMjQxLCAxODAsIDI5LCAzLCAyNDIsIDQ2LCAyOSwgMywgMjQxLCAyMjAsIDI5LCAzLCAKKyAgICAyNDEsIDIzOCwgMjksIDMsIDI0MSwgNjgsIDI5LCAzLCAyNDEsIDY3LCAyOSwgMywgMjMzLCAxMzUsIDI5LCAzLCAyMzIsIAorICAgIDk4LCAyOSwgMywgMjMyLCAyNDEsIDI5LCAzLCAyMzMsIDEzNCwgMjksIDMsIDIzMywgNTAsIDI5LCAzLCAyMzMsIDU4LCAyOSwgCisgICAgMywgMjMyLCAxNTYsIDI5LCAzLCAyMzIsIDcwLCAyOSwgMywgMjQxLCAxODksIDI5LCAzLCAyNDEsIDE4MywgMjksIDMsIAorICAgIDI0MSwgMTg1LCAyOSwgMywgMjQxLCAxODgsIDI5LCAzLCAyNDEsIDE4NiwgMjksIDMsIDI0MSwgMTg3LCAyOSwgMywgMjQxLCAKKyAgICAxODQsIDI5LCAzLCAyNDEsIDE4MiwgMjksIDMsIDE4NCwgMjksIDMsIDIzMCwgMTAyLCAyOSwgMywgMjMwLCAyMzAsIDI5LCAKKyAgICAzLCAyMzEsIDIzNywgMjksIDMsIDIzMSwgODAsIDI5LCAzLCAyMzEsIDkxLCAyOSwgMywgMjMwLCAxNjEsIDI5LCAzLCAyMzAsIAorICAgIDQyLCAyOSwgMywgMjE3LCAxNjMsIDI5LCAzLCAyMTcsIDE1NywgMjksIDMsIDIxNywgMTU5LCAyOSwgMywgMjE3LCAxNjIsIAorICAgIDI5LCAzLCAyMTcsIDE2MCwgMjksIDMsIDIxNywgMTYxLCAyOSwgMywgMjE3LCAxNTgsIDI5LCAzLCAyMTcsIDE1NiwgMjksIAorICAgIDMsIDIwNSwgMjksIDMsIDIyMiwgMTQwLCAyOSwgMywgMjIzLCAzNSwgMjksIDMsIDIyMywgMTg0LCAyOSwgMywgMjIzLCAKKyAgICAxMDgsIDI5LCAzLCAyMjMsIDEyOCwgMjksIDMsIDIyMiwgMjExLCAyOSwgMywgMjIyLCAxMDksIDI5LCAzLCAyMDYsIDI5LCAKKyAgICAzLCAyMTgsIDgzLCAyOSwgMywgMjE5LCAxOTEsIDI5LCAzLCAyMjIsIDMxLCAyOSwgMywgMjIxLCAxNzAsIDI5LCAzLCAyMjEsIAorICAgIDE4MSwgMjksIDMsIDIxOSwgNTgsIDI5LCAzLCAyMTcsIDI1MywgMjksIDMsIDIyMCwgMTAyLCAyOSwgMywgMjE5LCAyMjUsIAorICAgIDI5LCAzLCAyMjAsIDMyLCAyOSwgMywgMjIwLCA5OCwgMjksIDMsIDIyMCwgNjEsIDI5LCAzLCAyMjAsIDYzLCAyOSwgMywgCisgICAgMjIwLCA3LCAyOSwgMywgMjE5LCAyMDgsIDI5LCAzLCAyMjQsIDg4LCAyOSwgMywgMjI0LCAzMCwgMjksIDMsIDIyNCwgNTMsIAorICAgIDI5LCAzLCAyMjQsIDg3LCAyOSwgMywgMjI0LCA2OCwgMjksIDMsIDIyNCwgNjksIDI5LCAzLCAyMjQsIDQyLCAyOSwgMywgCisgICAgMjI0LCA0MSwgMjksIDMsIDIyMywgMjQyLCAyOSwgMywgMjIzLCAyMzgsIDI5LCAzLCAyMjMsIDI0MSwgMjksIDMsIDIyMywgCisgICAgMjM5LCAyOSwgMywgMjIzLCAyNDAsIDI5LCAzLCAyMjQsIDY1LCAyOSwgMywgMjI0LCA1OSwgMjksIDMsIDIyNCwgNjEsIDI5LCAKKyAgICAzLCAyMjQsIDY0LCAyOSwgMywgMjI0LCA2MiwgMjksIDMsIDIyNCwgNjMsIDI5LCAzLCAyMjQsIDYwLCAyOSwgMywgMjI0LCAKKyAgICA1OCwgMjksIDMsIDIyNCwgNTQsIDI5LCAzLCAyMjQsIDU3LCAyOSwgMywgMjI0LCA1NSwgMjksIDMsIDIyNCwgNTYsIDI5LCAKKyAgICAzLCAyNTIsIDE5MSwgMjksIDMsIDI1MSwgMTI1LCAyOSwgMywgMjUyLCA2LCAyOSwgMywgMjUyLCAxODksIDI5LCAzLCAyNTIsIAorICAgIDY2LCAyOSwgMywgMjUyLCA3NSwgMjksIDMsIDI1MSwgMjA1LCAyOSwgMywgMjUxLCA4MywgMjksIDMsIDIxNCwgMjcsIDI5LCAKKyAgICAzLCAyMTIsIDExNiwgMjksIDMsIDIxMywgMTc2LCAyOSwgMywgMjE0LCAyNiwgMjksIDMsIDIxMywgMjUwLCAyOSwgMywgCisgICAgMjEzLCAyNTUsIDI5LCAzLCAyMTMsIDEzOCwgMjksIDMsIDIxMiwgMTA3LCAyOSwgMywgMjE3LCAxMDUsIDI5LCAzLCAyMTUsIAorICAgIDExOCwgMjksIDMsIDIxNiwgMTE3LCAyOSwgMywgMjE3LCAxMDEsIDI5LCAzLCAyMTcsIDExLCAyOSwgMywgMjE3LCAyMiwgCisgICAgMjksIDMsIDExMSwgMjksIDMsIDIxNSwgODAsIDI5LCAzLCAyNTEsIDMzLCAyOSwgMywgMjQ5LCAxMTIsIDI5LCAzLCAyNTAsIAorICAgIDUxLCAyOSwgMywgMjUxLCAzMiwgMjksIDMsIDI1MCwgMTgyLCAyOSwgMywgMjUwLCAxOTAsIDI5LCAzLCAyNDksIDIzOCwgCisgICAgMjksIDMsIDI0OSwgODEsIDI5LCAzLCAyMTEsIDE2NSwgMjksIDMsIDIxMSwgMTQxLCAyOSwgMywgMjExLCAxNTcsIDI5LCAzLCAKKyAgICAyMTEsIDE2NCwgMjksIDMsIDIxMSwgMTYxLCAyOSwgMywgMjExLCAxNjIsIDI5LCAzLCAyMTEsIDE0OCwgMjksIDMsIDIxMSwgCisgICAgMTQ3LCAyOSwgMywgMjExLCAxMzYsIDI5LCAzLCAyMTEsIDEzMiwgMjksIDMsIDIxMSwgMTM1LCAyOSwgMywgMjExLCAxMzMsIAorICAgIDI5LCAzLCAyMTEsIDEzNCwgMjksIDMsIDE5NywgMjksIDMsIDIyNywgMjM3LCAyOSwgMywgMjI4LCAyMzMsIDI5LCAzLCAKKyAgICAyMjksIDIyNSwgMjksIDMsIDIyOSwgMTAzLCAyOSwgMywgMjI5LCAxMDcsIDI5LCAzLCAyMjgsIDc0LCAyOSwgMywgMjI3LCAKKyAgICAxNzQsIDI5LCAzLCAyMjcsIDE2NSwgMjksIDMsIDIyNywgMTI4LCAyOSwgMywgMjI3LCAxNDgsIDI5LCAzLCAyMjcsIDE2NCwgCisgICAgMjksIDMsIDIyNywgMTU1LCAyOSwgMywgMjI3LCAxNTYsIDI5LCAzLCAyMjcsIDEzNCwgMjksIDMsIDIyNywgMTE5LCAyOSwgCisgICAgMywgMjQyLCAxODAsIDYxLCAyOSwgMywgMjQyLCAxODAsIDcwLCAyOSwgMywgMjQyLCAxODAsIDczLCAyOSwgMywgMjQyLCAKKyAgICAxODAsIDI1NSwgNzMsIDI5LCAzLCAyNDIsIDE4MCwgMjQ1LCAyMDksIDI5LCAzLCAyNDIsIDE4MCwgNzUsIDI5LCAzLCAyNDIsIAorICAgIDE4MCwgNzYsIDI5LCAzLCAyNDIsIDE4MCwgMjEyLCA2NSwgMjksIDMsIDE3NiwgMjksIDMsIDIzMywgMjE3LCAyOSwgMywgCisgICAgMjM0LCA5MiwgMjksIDMsIDIzNSwgMTAsIDI5LCAzLCAyMzQsIDE4MSwgMjksIDMsIDIzNCwgMTgyLCAyOSwgMywgMjM0LCAKKyAgICAyOCwgMjksIDMsIDIzNCwgMjcsIDI5LCAzLCAyMzMsIDE4MiwgMjksIDMsIDIzMywgMTc2LCAyOSwgMywgMjMzLCAxODEsIAorICAgIDI5LCAzLCAyMzMsIDE3NywgMjksIDMsIDIzMywgMTc4LCAyOSwgMywgMjMzLCAxNzEsIDI5LCAzLCAyMzMsIDE2NSwgMjksIAorICAgIDMsIDIzMywgMTY3LCAyOSwgMywgMjMzLCAxNzAsIDI5LCAzLCAyMzMsIDE2OCwgMjksIDMsIDIzMywgMTY5LCAyOSwgMywgCisgICAgMjMzLCAxNjYsIDI5LCAzLCAyMzMsIDE2NCwgMjksIDMsIDIzMywgMTYwLCAyOSwgMywgMjMzLCAxNjMsIDI5LCAzLCAyMzMsIAorICAgIDE2MSwgMjksIDMsIDIzMywgMTYyLCAyOSwgMywgMjEyLCA2NSwgMjksIDMsIDIxMSwgMTk1LCAyOSwgMywgMjExLCAyNTAsIAorICAgIDI5LCAzLCAyMTIsIDY0LCAyOSwgMywgMjEyLCAxNywgMjksIDMsIDIxMiwgMjIsIDI5LCAzLCAyMTEsIDIyNywgMjksIDMsIAorICAgIDIxMSwgMjI2LCAyOSwgMywgMjI1LCAxMzksIDYxLCAyOSwgMywgMjI1LCAxMzksIDcwLCAyOSwgMywgMjI1LCAxMzksIDczLCAKKyAgICAyOSwgMywgMjI1LCAxMzksIDI1NSwgNzMsIDI5LCAzLCAyMjUsIDEzOSwgMjQ1LCAyMDksIDI5LCAzLCAyMjUsIDEzOSwgNzUsIAorICAgIDI5LCAzLCAyMjUsIDEzOSwgNzYsIDI5LCAzLCAyMTAsIDExNiwgMjksIDMsIDIxMCwgMTMsIDI5LCAzLCAyMTAsIDQ0LCAyOSwgCisgICAgMywgMjEwLCAxMTUsIDI5LCAzLCAyMTAsIDkyLCAyOSwgMywgMjEwLCA5NCwgMjksIDMsIDIxMCwgMjMsIDI5LCAzLCAyMTAsIAorICAgIDAsIDI5LCAzLCAyMTAsIDgyLCAyOSwgMywgMjEwLCA2MiwgMjksIDMsIDIxMCwgNjksIDI5LCAzLCAyMTAsIDgxLCAyOSwgMywgCisgICAgMjEwLCA3MywgMjksIDMsIDIxMCwgNzQsIDI5LCAzLCAyMTAsIDY3LCAyOSwgMywgMjEwLCA1MywgMjksIDMsIDE5MSwgMjksIAorICAgIDMsIDIxMCwgMjEyLCAyOSwgMywgMjExLCA4LCAyOSwgMywgMjExLCAxMDMsIDI5LCAzLCAyMTEsIDQ0LCAyOSwgMywgMjExLCAKKyAgICA0NywgMjksIDMsIDIxMCwgMjQ0LCAyOSwgMywgMjEwLCAyMzUsIDI5LCAzLCAyNDgsIDIyMSwgMjksIDMsIDI0NiwgNzgsIAorICAgIDI5LCAzLCAyNDgsIDMsIDI5LCAzLCAyNDgsIDIyMCwgMjksIDMsIDI0OCwgNzcsIDI5LCAzLCAyNDgsIDkwLCAyOSwgMywgCisgICAgMjQ3LCAxNDUsIDI5LCAzLCAyNDYsIDQ3LCAyOSwgMywgMjQ4LCAxMzUsIDI5LCAzLCAyNDgsIDEwMCwgMjksIDMsIDI0OCwgCisgICAgMTEyLCAyOSwgMywgMjQ4LCAxMzQsIDI5LCAzLCAyNDgsIDEyMiwgMjksIDMsIDI0OCwgMTIzLCAyOSwgMywgMjQ4LCAxMDUsIAorICAgIDI5LCAzLCAyNDgsIDkxLCAyOSwgMywgMjM1LCAxNDEsIDI5LCAzLCAyMzUsIDUxLCAyOSwgMywgMjM1LCAxMDgsIDI5LCAzLCAKKyAgICAyMzUsIDE0MCwgMjksIDMsIDIzNSwgMTI0LCAyOSwgMywgMjM1LCAxMjYsIDI5LCAzLCAyMzUsIDY4LCAyOSwgMywgMjM1LCAKKyAgICAzMSwgMjksIDMsIDI0MywgMTM1LCAyOSwgMywgMjQyLCAxMTMsIDI5LCAzLCAyNDIsIDIxNCwgMjksIDMsIDI0MywgMTMyLCAKKyAgICAyOSwgMywgMjQzLCA1NSwgMjksIDMsIDI0MywgNjIsIDI5LCAzLCAyNDIsIDE3NCwgMjksIDMsIDI0MiwgMTczLCAyOSwgMywgCisgICAgMjQyLCA3OCwgMjksIDMsIDI0MiwgNzQsIDI5LCAzLCAyNDIsIDc3LCAyOSwgMywgMjQyLCA3NSwgMjksIDMsIDI0MiwgNzYsIAorICAgIDI5LCAzLCAyNDMsIDI5LCAyOSwgMywgMjQzLCA5LCAyOSwgMywgMjQzLCAxOSwgMjksIDMsIDI0MywgMjgsIDI5LCAzLCAKKyAgICAyNDMsIDIzLCAyOSwgMywgMjQzLCAyNCwgMjksIDMsIDI0MywgMTMsIDI5LCAzLCAyNDIsIDI1NCwgMjksIDMsIDIxNiwgCisgICAgMjA4LCAyOSwgMywgMjE2LCAxMzYsIDI5LCAzLCAyMTYsIDE3NSwgMjksIDMsIDIxNiwgMjA3LCAyOSwgMywgMjE2LCAxOTQsIAorICAgIDI5LCAzLCAyMTYsIDE5NSwgMjksIDMsIDIxNiwgMTU2LCAyOSwgMywgMjE2LCAxMjgsIDI5LCAzLCAyNTAsIDE1NywgMjksIAorICAgIDMsIDI1MCwgNjksIDI5LCAzLCAyNTAsIDExMCwgMjksIDMsIDI1MCwgMTU2LCAyOSwgMywgMjUwLCAxMjgsIDI5LCAzLCAKKyAgICAyNTAsIDEzMSwgMjksIDMsIDI1MCwgODYsIDI5LCAzLCAyNTAsIDU4LCAyOSwgMywgMjI1LCAxNDcsIDI5LCAzLCAyMjUsIAorICAgIDExNCwgMjksIDMsIDIyNSwgMTMzLCAyOSwgMywgMjI1LCAxNDYsIDI5LCAzLCAyMjUsIDEzNSwgMjksIDMsIDIyNSwgMTM2LCAKKyAgICAyOSwgMywgMjI1LCAxMjEsIDI5LCAzLCAyMjUsIDExMCwgMjksIDMsIDIxNSwgMTgzLCAyOSwgMywgMjE1LCAxNjMsIDI5LCAKKyAgICAzLCAyMTUsIDE2NywgMjksIDMsIDIxNSwgMTgyLCAyOSwgMywgMjE1LCAxNzcsIDI5LCAzLCAyMTUsIDE3OCwgMjksIDMsIAorICAgIDIxNSwgMTY2LCAyOSwgMywgMjE1LCAxNjEsIDI5LCAzLCAyMTUsIDM5LCAyOSwgMywgMjE1LCAzMSwgMjksIDMsIDIxNSwgCisgICAgMzUsIDI5LCAzLCAyMTUsIDM4LCAyOSwgMywgMjE1LCAzNiwgMjksIDMsIDIxNSwgMzcsIDI5LCAzLCAyMTUsIDMzLCAyOSwgCisgICAgMywgMjE1LCAzMiwgMjksIDMsIDI0NCwgMTk2LCAyOSwgMywgMjQzLCAyMzQsIDI5LCAzLCAyNDQsIDEyMSwgMjksIDMsIAorICAgIDI0NCwgMTk1LCAyOSwgMywgMjQ0LCAxNDcsIDI5LCAzLCAyNDQsIDE1NCwgMjksIDMsIDI0NCwgNDMsIDI5LCAzLCAyNDMsIAorICAgIDIxMywgMjksIDMsIDE5MCwgMjksIDMsIDIyNCwgMTUwLCAyOSwgMywgMjI1LCAxMDgsIDI5LCAzLCAyMjYsIDg5LCAyOSwgMywgCisgICAgMjI1LCAyMTEsIDI5LCAzLCAyMjUsIDIyMSwgMjksIDMsIDIyNSwgMTYsIDI5LCAzLCAyMjQsIDExNCwgMjksIDMsIDIyMiwgCisgICAgOTksIDI5LCAzLCAyMzAsIDMxLCAyOSwgMywgMjQzLCAyMDcsIDI5LCAzOCwgMjQzLCA1MywgMjIsIDI1LCAyMzMsIDIzLCAKKyAgICA3OCwgMjksIDM4LCAyNSwgMjMzLCAyMywgNzgsIDI5LCAzOCwgMjQzLCA1MywgNzgsIDI5LCAyMjEsIDE3MywgNzgsIDI5LCAKKyAgICAyMTEsIDIwOCwgMjksIDI0MywgMjI5LCAyMTgsIDEyOSwgMjksIDI0OSwgMjE5LCAyOSwgMjIwLCAxNTAsIDI5LCAyNDksIAorICAgIDIyNiwgMjksIDIyNCwgMTk5LCAyNDksIDIyNiwgMjksIDIyNCwgMTMsIDc4LCAyOSwgMjI2LCAxNSwgMjIwLCAxMzcsIDI5LCAKKyAgICAyMSwgMTEwLCAyOSwgMjEsIDEwNSwgMjksIDIxLCAxNTgsIDI5LCAyMSwgMTYxLCAyOSwgMjEsIDE4OSwgMjksIDIxLCAxOTQsIAorICAgIDI5LCAyMSwgMTk4LCAyOSwgMjEsIDE5NSwgMjksIDIxLCAyMDAsIDI5LCA1NCwgMjE2LCAyNDcsIDI5LCA1NCwgMjE1LCA3MywgCisgICAgMjksIDU0LCAyMTYsIDE2MiwgMjksIDU0LCAyNDQsIDE1LCAyOSwgNTQsIDI0NCwgMTE0LCAyOSwgNTQsIDIxOSwgMTExLCAKKyAgICAyOSwgNTQsIDIyMCwgMTE2LCAyOSwgNTQsIDI0NSwgMTg0LCAyOSwgNTQsIDIyOCwgMTk1LCAyOSwgNTQsIDI0MCwgMjEwLCAKKyAgICAyOSwgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjksIDMsIDIyMSwgMTc3LCAyMzAsIDQyLCAyOSwgMywgMjMwLCAzOCwgMjksIAorICAgIDMsIDIzMCwgMzksIDI5LCAzLCAyMzAsIDQwLCAyOSwgMywgMjIxLCAxNzcsIDI1MSwgODMsIDI5LCAzLCAyNTEsIDgwLCAyOSwgCisgICAgMywgMjUxLCA4MSwgMjksIDMsIDI1MSwgODIsIDI5LCAzLCAyMjEsIDE3NywgMjQzLCAyMTMsIDI5LCAzLCAyNDMsIDIwOSwgCisgICAgMjksIDMsIDI0MywgMjEwLCAyOSwgMywgMjQzLCAyMTEsIDI5LCAzLCAyMjEsIDE3NywgMjI0LCAxMTQsIDI5LCAzLCAyMjQsIAorICAgIDExMCwgMjksIDMsIDIyNCwgMTExLCAyOSwgMywgMjI0LCAxMTIsIDI5LCAyMTYsIDMxLCAxNjQsIDIxMCwgMjQ3LCAyOSwgCisgICAgMjE2LCAzMSwgMTY0LCAyNDgsIDQxLCAyOSwgMjE2LCAzMSwgMTY0LCAyMjIsIDIzOCwgMjksIDIxNiwgMzEsIDE2NCwgMjE5LCAKKyAgICAyNTEsIDIyMiwgMjM4LCAyOSwgMjE2LCAzMSwgMTY0LCAyNDcsIDIzNSwgMjksIDIxNiwgMzEsIDE2NCwgMjM0LCAxNjQsIAorICAgIDI5LCAyMTYsIDMxLCAxNjQsIDI1MCwgOTQsIDI5LCAyMTYsIDMxLCAxNjQsIDI0MSwgMTc3LCAyOSwgMjE2LCAzMSwgMTY0LCAKKyAgICAyNDgsIDQwLCAyOSwgMjE2LCAzMSwgMTY0LCAyMzMsIDE5NCwgMTY5LCAxLCA2MSwgMTY5LCAxLCA3NSwgMTY5LCAxLCA3MywgCisgICAgMTY5LCAxLCA3NiwgMTY5LCAxLCA3MCwgMTY5LCAxLCAyMTQsIDEwNSwgMTY5LCAxLCAyNDMsIDEzNSwgMTY5LCAxLCAxNzYsIAorICAgIDE2OSwgMSwgMjQzLCA2MiwgMTY5LCAxLCAyNDIsIDIxNCwgMTY5LCAxLCAyNDIsIDE3NCwgMTY5LCAxLCAyNDIsIDExMywgCisgICAgMTY5LCAxLCAyNDIsIDc5LCAxNjksIDEsIDE2MiwgMTY5LCAxLCAyNDEsIDIzOCwgMTY5LCAxLCAyNDEsIDE4MCwgMTY5LCAxLCAKKyAgICAyNDEsIDY4LCAxNjksIDEsIDI0MCwgMjIyLCAxNjksIDEsIDI0MCwgMjAxLCAxNjksIDEsIDIzMywgMTM1LCAxNjksIDEsIAorICAgIDIzMywgNTgsIDE2OSwgMSwgMjMyLCAyNDEsIDE2OSwgMSwgMjMyLCAxNTYsIDE2OSwgMSwgMjMyLCA5OCwgMTY5LCAxLCAKKyAgICAyMzIsIDcxLCAxNjksIDEsIDE4NCwgMTY5LCAxLCAyMzEsIDkxLCAxNjksIDEsIDIzMCwgMjMwLCAxNjksIDEsIDIzMCwgCisgICAgMTYxLCAxNjksIDEsIDIzMCwgMTAyLCAxNjksIDEsIDE5NywgMTY5LCAxLCAyNDEsIDkwLCAxNjksIDEsIDIyOSwgMjEzLCAKKyAgICAxNjksIDEsIDIyOSwgMTA3LCAxNjksIDEsIDIyOCwgMjMzLCAxNjksIDEsIDIyOCwgNzQsIDE2OSwgMSwgMjI3LCAyMzcsIAorICAgIDE2OSwgMSwgMjI3LCAxNzYsIDE2OSwgMSwgMjI0LCAyOSwgMTY5LCAxLCAyMjQsIDE2LCAxNjksIDEsIDIyNCwgOSwgMTY5LCAKKyAgICAxLCAyMjQsIDEsIDE2OSwgMSwgMjIzLCAyNDYsIDE2OSwgMSwgMjIzLCAyNDQsIDE2OSwgMSwgMjA2LCAxNjksIDEsIDIyMiwgCisgICAgOTEsIDE2OSwgMSwgMjIxLCAxODEsIDE2OSwgMSwgMjE5LCAxOTEsIDE2OSwgMSwgMjE5LCA1OCwgMTY5LCAxLCAyMTgsIDgzLCAKKyAgICAxNjksIDEsIDIxOCwgMiwgMTY5LCAxLCAyNDgsIDIyMSwgMTY5LCAxLCAyMTcsIDEwNSwgMTY5LCAxLCAyNDgsIDkwLCAxNjksIAorICAgIDEsIDIxNywgMjIsIDE2OSwgMSwgMjQ4LCAzLCAxNjksIDEsIDIxNiwgMTE3LCAxNjksIDEsIDI0NywgMTQ1LCAxNjksIDEsIAorICAgIDI0NiwgNzgsIDE2OSwgMSwgMjQ2LCA1MCwgMTY5LCAxLCAyNDcsIDE1NiwgMTY5LCAxLCAyMTYsIDU5LCAxNjksIDEsIDIxNiwgCisgICAgNTgsIDE2OSwgMSwgMjE2LCA0NywgMTY5LCAxLCAyMTYsIDQ2LCAxNjksIDEsIDIxNiwgNDUsIDE2OSwgMSwgMjE2LCA0NCwgCisgICAgMTY5LCAxLCAyMTUsIDE4MywgMTY5LCAxLCAyMTUsIDE3OCwgMTY5LCAxLCAyMTUsIDE2NywgMTY5LCAxLCAyMTUsIDE2NiwgCisgICAgMTY5LCAxLCAyMTUsIDE2MywgMTY5LCAxLCAyMTUsIDE2MiwgMTY5LCAxLCAyMTIsIDY1LCAxNjksIDEsIDIxMiwgMjIsIAorICAgIDE2OSwgMSwgMjExLCAyNTAsIDE2OSwgMSwgMjExLCAyMjcsIDE2OSwgMSwgMjExLCAxOTUsIDE2OSwgMSwgMjExLCAxODMsIAorICAgIDE2OSwgMSwgMTkxLCAxNjksIDEsIDIxMSwgNDcsIDE2OSwgMSwgMjExLCA4LCAxNjksIDEsIDIxMCwgMjQ0LCAxNjksIDEsIAorICAgIDIxMCwgMjEyLCAxNjksIDEsIDIxMCwgMTc3LCAxOCwgMTksIDI0MCwgMTY4LCAxOCwgMTksIDc1LCAxOCwgMTksIDI1NSwgCisgICAgMzcsIDE4LCAxOSwgNzMsIDE4LCAxOSwgMjM2LCAzMywgMTgsIDE5LCA3NiwgMTgsIDE5LCAyMjYsIDE4MywgMTgsIDE5LCAKKyAgICAyMTEsIDExNiwgMjI2LCAxODMsIDE4LCAxOSwgNzIsIDI0NSwgMjA5LCAxOCwgMTksIDcyLCA3MywgMTgsIDE5LCA2MSwgMTgsIAorICAgIDE5LCAyNTUsIDczLCAxOCwgMTksIDIxMiwgMjIsIDE4LCAxOSwgMTU5LCAyMTIsIDIyLCAxOCwgMTksIDIxMSwgMjUwLCAxOCwgCisgICAgMTksIDE1OSwgMjExLCAyNTAsIDE4LCAxOSwgMjExLCAyNDIsIDE4LCAxOSwgMTU5LCAyMTEsIDI0MiwgMTgsIDE5LCAyMTEsIAorICAgIDIyNywgMTgsIDE5LCAxNTksIDIxMSwgMjI3LCAxOCwgMTksIDIxMSwgMjE1LCAxOCwgMTksIDE1OSwgMjExLCAyMTUsIDE4LCAKKyAgICAxOSwgMjI5LCAxOTAsIDIxMSwgMjE1LCAxOCwgMTksIDIxMiwgNjUsIDE4LCAxOSwgMTU5LCAyMTIsIDY1LCAxOCwgMTksIAorICAgIDIxMiwgNjQsIDE4LCAxOSwgMTU5LCAyMTIsIDY0LCAxOCwgMTksIDIyOSwgMTkwLCAyMTIsIDY0LCAxOCwgMTksIDI1NCwgCisgICAgMjAxLCAxOCwgMTksIDIxMSwgMTE2LCAyMTIsIDk4LCAxOCwgMTksIDI0MiwgMTgwLCAyMTgsIDEyOSwgMTgsIDE5LCA0MCwgCisgICAgMTQyLCAxOCwgMTksIDQwLCAyNDIsIDEzNiwgMTgsIDE5LCA0MCwgMjUxLCAxNzUsIDE2MywgMjIyLCAyMzMsIDE4LCAxOSwgCisgICAgNDAsIDIxNiwgMTQsIDE2MywgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDQ0LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCAKKyAgICAyMjIsIDIzMywgMTgsIDE5LCA0MCwgNTIsIDE0MiwgMTgsIDE5LCA0MCwgNTIsIDIxOSwgMjUxLCA2NywgMjE4LCA5MCwgMTgsIAorICAgIDE5LCA0MCwgMjMwLCAyMjQsIDI0NywgMTIwLCAxOCwgMTksIDQwLCAyMTksIDI1MSwgMjAzLCA5MSwgMTgsIDE5LCA0MCwgCisgICAgMjI1LCAyMiwgMTgsIDE5LCA0MCwgMTI0LCAyMTcsIDg3LCAxOCwgMTksIDI0NSwgMTUwLCAxOCwgMTksIDIzNSwgMjU1LCAKKyAgICAxOCwgMTksIDIyNiwgMTk2LCAxOCwgMTksIDI1NCwgMTIzLCAxOCwgMTksIDIyNSwgMjIxLCAxOCwgMTksIDIyNiwgODcsIAorICAgIDE4LCAxOSwgMjI1LCAxMDgsIDE4LCAxOSwgMjI1LCA3MSwgMTgsIDE5LCAyMjUsIDE2LCAxOCwgMTksIDIyNCwgMjQ5LCAxOCwgCisgICAgMTksIDIxMSwgMTE2LCAyMjQsIDI0OSwgMTgsIDE5LCA3MiwgMjQxLCAyMjAsIDE4LCAxOSwgNzIsIDI0MSwgMTgwLCAxOCwgCisgICAgMTksIDE5MCwgMTgsIDE5LCAyMjYsIDg5LCAxOCwgMTksIDIyNCwgMTEyLCAxOCwgMTksIDE1OSwgMjI0LCAxMTIsIDE4LCAKKyAgICAxOSwgMjI0LCAxMTAsIDE4LCAxOSwgMTU5LCAyMjQsIDExMCwgMTgsIDE5LCAyMjQsIDEwOSwgMTgsIDE5LCAxNTksIDIyNCwgCisgICAgMTA5LCAxOCwgMTksIDIyNCwgMTA3LCAxOCwgMTksIDE1OSwgMjI0LCAxMDcsIDE4LCAxOSwgMjI0LCAxMDYsIDE4LCAxOSwgCisgICAgMTU5LCAyMjQsIDEwNiwgMTgsIDE5LCAyMjQsIDExNCwgMTgsIDE5LCAxNTksIDIyNCwgMTE0LCAxOCwgMTksIDIyNCwgMTEzLCAKKyAgICAxOCwgMTksIDE1OSwgMjI0LCAxMTMsIDE4LCAxOSwgMjExLCAxMTYsIDIyNCwgMTEzLCAxOCwgMTksIDIyNiwgMTA1LCAxOCwgCisgICAgMTksIDE1OSwgMjI2LCAxMDUsIDE4LCAxOSwgNzIsIDI0MiwgNjAsIDE4LCAxOSwgMjE3LCAyMiwgMTgsIDE5LCAyMTcsIDk5LCAKKyAgICAxOCwgMTksIDIxNiwgMTE3LCAxOCwgMTksIDIxNiwgMTAzLCAxOCwgMTksIDExMSwgMTgsIDE5LCAyMTYsIDE3LCAxOCwgMTksIAorICAgIDIxMSwgMTE2LCAyMTYsIDE3LCAxOCwgMTksIDcyLCAyNDgsIDc3LCAxOCwgMTksIDcyLCAyNDgsIDMsIDE4LCAxOSwgMjE3LCAKKyAgICAxMDUsIDE4LCAxOSwgMjE3LCAxMDEsIDE4LCAxOSwgMjE1LCA3OCwgMTgsIDE5LCAxNTksIDIxNSwgNzgsIDE4LCAxOSwgCisgICAgMjE1LCA2MiwgMTgsIDE5LCAxNTksIDIxNSwgNjIsIDE4LCAxOSwgMjE1LCA2MSwgMTgsIDE5LCAxNTksIDIxNSwgNjEsIDE4LCAKKyAgICAxOSwgMTA1LCAxOCwgMTksIDE1OSwgMTA1LCAxOCwgMTksIDIxNSwgNTQsIDE4LCAxOSwgMTU5LCAyMTUsIDU0LCAxOCwgMTksIAorICAgIDIxNSwgODAsIDE4LCAxOSwgMTU5LCAyMTUsIDgwLCAxOCwgMTksIDIxNSwgNzksIDE4LCAxOSwgMTU5LCAyMTUsIDc5LCAxOCwgCisgICAgMTksIDIyOSwgMTkwLCAyMTUsIDc5LCAxOCwgMTksIDIxNywgMTUyLCAxOCwgMTksIDIxNSwgMTUxLCAxOCwgMTksIDIxNSwgCisgICAgMTM1LCAxOCwgMTksIDIxNSwgMTMzLCAxOCwgMTksIDIxNSwgMTU2LCAxOCwgMTksIDIzNCwgMTgyLCAxOCwgMTksIDIzNSwgCisgICAgNywgMTgsIDE5LCAyMzQsIDkyLCAxOCwgMTksIDIzNCwgODMsIDE4LCAxOSwgMjM0LCAyOCwgMTgsIDE5LCAyMzQsIDEwLCAKKyAgICAxOCwgMTksIDIxMSwgMTE2LCAyMzQsIDEwLCAxOCwgMTksIDE3NiwgMTgsIDE5LCAyMzUsIDEwLCAxOCwgMTksIDIzMywgCisgICAgMTc4LCAxOCwgMTksIDE1OSwgMjMzLCAxNzgsIDE4LCAxOSwgMjMzLCAxNzYsIDE4LCAxOSwgMTU5LCAyMzMsIDE3NiwgMTgsIAorICAgIDE5LCAyMzMsIDE3NSwgMTgsIDE5LCAxNTksIDIzMywgMTc1LCAxOCwgMTksIDIzMywgMTc0LCAxOCwgMTksIDE1OSwgMjMzLCAKKyAgICAxNzQsIDE4LCAxOSwgMjMzLCAxNzMsIDE4LCAxOSwgMTU5LCAyMzMsIDE3MywgMTgsIDE5LCAyMzMsIDE4MiwgMTgsIDE5LCAKKyAgICAxNTksIDIzMywgMTgyLCAxOCwgMTksIDIzMywgMTgxLCAxOCwgMTksIDE1OSwgMjMzLCAxODEsIDE4LCAxOSwgMjI5LCAxOTAsIAorICAgIDIzMywgMTgxLCAxOCwgMTksIDIzNSwgMjMsIDE4LCAxOSwgMjMzLCAxODMsIDE4LCAxOSwgMjE5LCAyNywgMjM0LCAxNzYsIAorICAgIDE4LCAxOSwgMjE5LCAyNywgMjM0LCA4NCwgMTgsIDE5LCAyMTksIDI3LCAyMzQsIDIzLCAxOCwgMTksIDIxOSwgMjcsIDIzNCwgCisgICAgMjQ4LCAxOCwgMTksIDI1MCwgMTkwLCAxOCwgMTksIDI1MSwgMzEsIDE4LCAxOSwgMjUwLCA1MSwgMTgsIDE5LCAyNTAsIDQxLCAKKyAgICAxOCwgMTksIDI0OSwgMjM4LCAxOCwgMTksIDI0OSwgMTc0LCAxOCwgMTksIDIxMSwgMTE2LCAyNDksIDE3NCwgMTgsIDE5LCAKKyAgICAyNTEsIDMzLCAxOCwgMTksIDI1MSwgMzIsIDE4LCAxOSwgMjQ5LCA3OSwgMTgsIDE5LCAxNTksIDI0OSwgNzksIDE4LCAxOSwgCisgICAgMjQ5LCA3NywgMTgsIDE5LCAxNTksIDI0OSwgNzcsIDE4LCAxOSwgMjQ5LCA3NiwgMTgsIDE5LCAxNTksIDI0OSwgNzYsIDE4LCAKKyAgICAxOSwgMjQ5LCA3NSwgMTgsIDE5LCAxNTksIDI0OSwgNzUsIDE4LCAxOSwgMjQ5LCA3NCwgMTgsIDE5LCAxNTksIDI0OSwgNzQsIAorICAgIDE4LCAxOSwgMjQ5LCA4MSwgMTgsIDE5LCAxNTksIDI0OSwgODEsIDE4LCAxOSwgMjQ5LCA4MCwgMTgsIDE5LCAxNTksIDI0OSwgCisgICAgODAsIDE4LCAxOSwgMjI5LCAxOTAsIDI0OSwgODAsIDE4LCAxOSwgMjUxLCA2NiwgMTgsIDE5LCAyMjEsIDIwOSwgMjE2LCAKKyAgICAyMTAsIDE4LCAxOSwgMjMxLCA5MSwgMTgsIDE5LCAyMzEsIDIzNiwgMTgsIDE5LCAyMzAsIDIzMCwgMTgsIDE5LCAyMzAsIAorICAgIDIwMSwgMTgsIDE5LCAyMzAsIDE2MSwgMTgsIDE5LCAyMzAsIDEzMiwgMTgsIDE5LCAyMTEsIDExNiwgMjMwLCAxMzIsIDE4LCAKKyAgICAxOSwgMTg0LCAxOCwgMTksIDIzMSwgMjM3LCAxOCwgMTksIDIzMCwgNDAsIDE4LCAxOSwgMTU5LCAyMzAsIDQwLCAxOCwgMTksIAorICAgIDIzMCwgMzgsIDE4LCAxOSwgMTU5LCAyMzAsIDM4LCAxOCwgMTksIDIzMCwgMzcsIDE4LCAxOSwgMTU5LCAyMzAsIDM3LCAxOCwgCisgICAgMTksIDIzMCwgMzYsIDE4LCAxOSwgMTU5LCAyMzAsIDM2LCAxOCwgMTksIDIzMCwgMzUsIDE4LCAxOSwgMTU5LCAyMzAsIDM1LCAKKyAgICAxOCwgMTksIDIzMCwgNDIsIDE4LCAxOSwgMTU5LCAyMzAsIDQyLCAxOCwgMTksIDIzMCwgNDEsIDE4LCAxOSwgMTU5LCAyMzAsIAorICAgIDQxLCAxOCwgMTksIDIyOSwgMTkwLCAyMzAsIDQxLCAxOCwgMTksIDE5MywgMTgsIDE5LCAxNTksIDE5MywgMTgsIDE5LCAKKyAgICAyMzAsIDIzNCwgMTgsIDE5LCAyNTMsIDIwNSwgMTkzLCAxOCwgMTksIDIyMSwgMjA5LCAxOTMsIDE4LCAxOSwgMjI5LCAxMDcsIAorICAgIDE4LCAxOSwgMjI5LCAyMjQsIDE4LCAxOSwgMjI4LCAyMzMsIDE4LCAxOSwgMjI4LCAyMDgsIDE4LCAxOSwgMjI4LCA3NCwgCisgICAgMTgsIDE5LCAyMjgsIDY0LCAxOCwgMTksIDIxMSwgMTE2LCAyMjgsIDY0LCAxOCwgMTksIDE5NywgMTgsIDE5LCAyMjksIAorICAgIDIyNSwgMTgsIDE5LCAyMjcsIDE3MiwgMTgsIDE5LCAxNTksIDIyNywgMTcyLCAxOCwgMTksIDIyNywgMTc0LCAxOCwgMTksIAorICAgIDE1OSwgMjI3LCAxNzQsIDE4LCAxOSwgMjI3LCAxNzMsIDE4LCAxOSwgMTU5LCAyMjcsIDE3MywgMTgsIDE5LCAyMjksIDE5MCwgCisgICAgMjI3LCAxNzMsIDE4LCAxOSwgMjMwLCAyNSwgMTgsIDE5LCA3MiwgMjI5LCA3OSwgMTgsIDE5LCAyMjgsIDIzOCwgMTgsIDE5LCAKKyAgICAyMzMsIDU4LCAxOCwgMTksIDIzMywgMTMzLCAxOCwgMTksIDIzMiwgMjQxLCAxOCwgMTksIDIzMiwgMjI3LCAxOCwgMTksIAorICAgIDIzMiwgMTU2LCAxOCwgMTksIDIzMiwgMTI3LCAxOCwgMTksIDIxMSwgMTE2LCAyMzIsIDEyNywgMTgsIDE5LCAyMzMsIDEzNSwgCisgICAgMTgsIDE5LCAyMzMsIDEzNCwgMTgsIDE5LCAyMzIsIDY4LCAxOCwgMTksIDE1OSwgMjMyLCA2OCwgMTgsIDE5LCAyMzIsIDY3LCAKKyAgICAxOCwgMTksIDE1OSwgMjMyLCA2NywgMTgsIDE5LCAyMzIsIDY2LCAxOCwgMTksIDE1OSwgMjMyLCA2NiwgMTgsIDE5LCAyMzIsIAorICAgIDY1LCAxOCwgMTksIDE1OSwgMjMyLCA2NSwgMTgsIDE5LCAyMzIsIDY0LCAxOCwgMTksIDE1OSwgMjMyLCA2NCwgMTgsIDE5LCAKKyAgICAyMzIsIDcwLCAxOCwgMTksIDE1OSwgMjMyLCA3MCwgMTgsIDE5LCAyMzIsIDY5LCAxOCwgMTksIDE1OSwgMjMyLCA2OSwgMTgsIAorICAgIDE5LCAxNTYsIDE4LCAxOSwgMTU5LCAxNTYsIDE4LCAxOSwgMTQ3LCAxNTYsIDE4LCAxOSwgMjIxLCAxODEsIDE4LCAxOSwgCisgICAgMjIyLCAyOSwgMTgsIDE5LCAyMTksIDE5MSwgMTgsIDE5LCAyMTksIDE3NSwgMTgsIDE5LCAyMTksIDU4LCAxOCwgMTksIAorICAgIDIxOSwgNDAsIDE4LCAxOSwgMjExLCAxMTYsIDIxOSwgNDAsIDE4LCAxOSwgMjA2LCAxOCwgMTksIDIyMiwgMzEsIDE4LCAxOSwgCisgICAgMjE3LCAyNDksIDE4LCAxOSwgMTU5LCAyMTcsIDI0OSwgMTgsIDE5LCAyMTcsIDI0MywgMTgsIDE5LCAxNTksIDIxNywgMjQzLCAKKyAgICAxOCwgMTksIDIxNywgMjQyLCAxOCwgMTksIDE1OSwgMjE3LCAyNDIsIDE4LCAxOSwgMjE3LCAyMzgsIDE4LCAxOSwgMTU5LCAKKyAgICAyMTcsIDIzOCwgMTgsIDE5LCAyMTcsIDIzNywgMTgsIDE5LCAxNTksIDIxNywgMjM3LCAxOCwgMTksIDIxNywgMjUzLCAxOCwgCisgICAgMTksIDE1OSwgMjE3LCAyNTMsIDE4LCAxOSwgMjE3LCAyNTIsIDE4LCAxOSwgMTU5LCAyMTcsIDI1MiwgMTgsIDE5LCAyMjksIAorICAgIDE5MCwgMjE3LCAyNTIsIDE4LCAxOSwgMjIyLCA5MSwgMTgsIDE5LCAyNTMsIDIwNSwgMjIyLCA5MSwgMTgsIDE5LCAyMTcsIAorICAgIDI1NCwgMTgsIDE5LCAyNTEsIDIxOCwgMjIyLCA5MSwgMTgsIDE5LCAyMzAsIDEyNywgMjE5LCAxMDgsIDE4LCAxOSwgMjI5LCAKKyAgICAxOTAsIDIxOSwgOTksIDE4LCAxOSwgMjI5LCAxOTAsIDIyMiwgODksIDE4LCAxOSwgMjI5LCAxOTAsIDIxOCwgMjM1LCAxOCwgCisgICAgMTksIDIyOSwgMTkwLCAyMTgsIDg2LCAxOCwgMTksIDIyOSwgMTkwLCAyMTksIDk4LCAxOCwgMTksIDIyOSwgMTkwLCAyMjEsIAorICAgIDE4NCwgMTgsIDE5LCAyMjAsIDYzLCAxOCwgMTksIDIyMCwgMzIsIDE4LCAxOSwgMjIwLCAyNywgMTgsIDE5LCAyMjAsIDcsIAorICAgIDE4LCAxOSwgMjIwLCAxLCAxOCwgMTksIDIyMCwgMTAyLCAxOCwgMTksIDIyMCwgOTgsIDE4LCAxOSwgMjE5LCAyMDYsIDE4LCAKKyAgICAxOSwgMTU5LCAyMTksIDIwNiwgMTgsIDE5LCAyMTksIDIwNSwgMTgsIDE5LCAxNTksIDIxOSwgMjA1LCAxOCwgMTksIDIxOSwgCisgICAgMjA0LCAxOCwgMTksIDE1OSwgMjE5LCAyMDQsIDE4LCAxOSwgMjE5LCAyMDMsIDE4LCAxOSwgMTU5LCAyMTksIDIwMywgMTgsIAorICAgIDE5LCAyMTksIDIwMiwgMTgsIDE5LCAxNTksIDIxOSwgMjAyLCAxOCwgMTksIDIxOSwgMjA4LCAxOCwgMTksIDE1OSwgMjE5LCAKKyAgICAyMDgsIDE4LCAxOSwgMjE5LCAyMDcsIDE4LCAxOSwgMTU5LCAyMTksIDIwNywgMTgsIDE5LCAyMjAsIDEwNCwgMTgsIDE5LCAKKyAgICAyMTEsIDQ3LCAxOCwgMTksIDIxMSwgMTAxLCAxOCwgMTksIDIxMSwgOCwgMTgsIDE5LCAyMTAsIDI1NSwgMTgsIDE5LCAyMTAsIAorICAgIDI0NCwgMTgsIDE5LCAyMTAsIDIyOSwgMTgsIDE5LCAyMTEsIDExNiwgMjEwLCAyMjksIDE4LCAxOSwgMTkxLCAxOCwgMTksIAorICAgIDIxMSwgMTAzLCAxOCwgMTksIDIxMCwgMTc0LCAxOCwgMTksIDE1OSwgMjEwLCAxNzQsIDE4LCAxOSwgMjEwLCAxNzMsIDE4LCAKKyAgICAxOSwgMTU5LCAyMTAsIDE3MywgMTgsIDE5LCAyMTAsIDE3MiwgMTgsIDE5LCAxNTksIDIxMCwgMTcyLCAxOCwgMTksIDIxMCwgCisgICAgMTcxLCAxOCwgMTksIDE1OSwgMjEwLCAxNzEsIDE4LCAxOSwgMjEwLCAxNzAsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MCwgMTgsIAorICAgIDE5LCAyMTAsIDE3NiwgMTgsIDE5LCAxNTksIDIxMCwgMTc2LCAxOCwgMTksIDIxMCwgMTc1LCAxOCwgMTksIDE1OSwgMjEwLCAKKyAgICAxNzUsIDE4LCAxOSwgMjI5LCAxOTAsIDIxMCwgMTc1LCAxOCwgMTksIDIxMSwgMTE3LCAxOCwgMTksIDI1MiwgNCwgMjExLCAKKyAgICAxMTcsIDE4LCAxOSwgMTU5LCAyMTEsIDExNywgMTgsIDE5LCAyMjEsIDIwOSwgMjExLCA4LCAxOCwgMTksIDIyMywgMTI4LCAKKyAgICAxOCwgMTksIDIyMywgMjIzLCAyMjMsIDEyOCwgMTgsIDE5LCAxNTksIDIzMywgNTgsIDE4LCAxOSwgMjIzLCAxODMsIDE4LCAKKyAgICAxOSwgMjIzLCAzNSwgMTgsIDE5LCAyMjIsIDIzOSwgMTgsIDE5LCAyMjIsIDIxMSwgMTgsIDE5LCAyMjIsIDE5NywgMTgsIAorICAgIDE5LCAxNTksIDIzMiwgMTU2LCAxOCwgMTksIDIwNSwgMTgsIDE5LCAyMjMsIDE4NCwgMTgsIDE5LCAxNTksIDIzMywgMTM1LCAKKyAgICAxOCwgMTksIDIyMiwgMTA4LCAxOCwgMTksIDE1OSwgMjIyLCAxMDgsIDE4LCAxOSwgMTUzLCAxOCwgMTksIDE1OSwgMTUzLCAKKyAgICAxOCwgMTksIDE0NywgMTUzLCAxOCwgMTksIDI0NCwgMTU0LCAxOCwgMTksIDI0NCwgMTkzLCAxOCwgMTksIDI0NCwgMTIxLCAKKyAgICAxOCwgMTksIDI0NCwgMTA4LCAxOCwgMTksIDI0NCwgNDMsIDE4LCAxOSwgMjQ0LCAzNCwgMTgsIDE5LCAyNDQsIDE5NiwgMTgsIAorICAgIDE5LCAyNDQsIDE5NSwgMTgsIDE5LCAyNDMsIDIxMiwgMTgsIDE5LCAxNTksIDI0MywgMjEyLCAxOCwgMTksIDI0NSwgNiwgCisgICAgMTgsIDE5LCAyMTYsIDE5NSwgMTgsIDE5LCAyMzAsIDIzLCAyMTYsIDE5NSwgMTgsIDE5LCAyMTYsIDE3NSwgMTgsIDE5LCAKKyAgICAyMzAsIDIzLCAyMTYsIDE3NSwgMTgsIDE5LCAyMTYsIDE3MSwgMTgsIDE5LCAyMzAsIDIzLCAyMTYsIDE3MSwgMTgsIDE5LCAKKyAgICAyMTYsIDE1NiwgMTgsIDE5LCAyMTYsIDE1MywgMTgsIDE5LCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDIwNywgMTgsIDE5LCAKKyAgICAyMTYsIDEyNywgMTgsIDE5LCAxNTksIDIxNiwgMTI3LCAxOCwgMTksIDIxNiwgMjEwLCAxOCwgMTksIDIxNSwgMTQyLCAxOCwgCisgICAgMTksIDIxNSwgMTQwLCAxOCwgMTksIDIxNSwgMTM5LCAxOCwgMTksIDIxNSwgMTQ0LCAxOCwgMTksIDIxNSwgMTQ1LCAxOCwgCisgICAgMTksIDIxNSwgNTIsIDE4LCAxOSwgMjE1LCA1MSwgMTgsIDE5LCAyMTUsIDUwLCAxOCwgMTksIDIxNSwgNTMsIDE4LCAxOSwgCisgICAgMjI3LCAxOTMsIDI0MSwgMjM4LCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDE4MCwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCAKKyAgICAxNjEsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgNjgsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgNTMsIDE4LCAxOSwgMjI3LCAKKyAgICAxOTMsIDE2MiwgMTgsIDE5LCAyMjcsIDE5MywgMjQyLCA0NiwgMTgsIDE5LCAyMjcsIDE5MywgMjQyLCA2MCwgMTgsIDE5LCAKKyAgICAyMjcsIDE5MiwgMjQyLCA2MCwgMTgsIDE5LCAyNDEsIDE1NCwgMTgsIDE5LCAyMjQsIDg0LCAxOCwgMTksIDIyNCwgNTMsIAorICAgIDE4LCAxOSwgMjI0LCA0OCwgMTgsIDE5LCAyMjQsIDQyLCAxOCwgMTksIDIyNCwgMzcsIDE4LCAxOSwgMjI0LCA4OCwgMTgsIAorICAgIDE5LCAyMjQsIDg3LCAxOCwgMTksIDIyNCwgOTYsIDE4LCAxOSwgMjE2LCA1NSwgMTgsIDE5LCAyMTYsIDUzLCAxOCwgMTksIAorICAgIDIxNiwgNTIsIDE4LCAxOSwgMjE2LCA1NiwgMTgsIDE5LCAxNTksIDIyMywgMTI4LCAxOCwgMTksIDE1OSwgMjIzLCAzNSwgCisgICAgMTgsIDE5LCAxNTksIDIyMiwgMjExLCAxOCwgMTksIDE1OSwgMjA1LCAxOCwgMTksIDIyOSwgNzUsIDE4LCAxOSwgMjI5LCAKKyAgICAyNywgMTgsIDE5LCAyMjksIDIzLCAxOCwgMTksIDIyOSwgNCwgMTgsIDE5LCAyMjgsIDI1NSwgMTgsIDE5LCAyMjksIDc3LCAKKyAgICAxOCwgMTksIDIyOSwgNzYsIDE4LCAxOSwgMjI5LCA3OSwgMTgsIDE5LCAyMjgsIDEwMywgMTgsIDE5LCAyMjEsIDIwOSwgCisgICAgMjIwLCA2MywgMTgsIDE5LCAyMjEsIDIwOSwgMjIwLCAzMiwgMTgsIDE5LCAyMjEsIDIwOSwgMjIwLCA3LCAxOCwgMTksIAorICAgIDIyMSwgMjA5LCAyMjAsIDEwMiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxOTUsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgCisgICAgMTc1LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDE1NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAyMDgsIDE4LCAxOSwgMjExLCAKKyAgICAyMTMsIDIxNiwgMjEwLCAxOCwgMTksIDIzMiwgMjQ4LCAxOCwgMTksIDIzMiwgMjQ3LCAxOCwgMTksIDIzMiwgMjQ2LCAxOCwgCisgICAgMTksIDIzMiwgMjQ1LCAxOCwgMTksIDIzMiwgMjU0LCAxOCwgMTksIDIzMiwgMjUzLCAxOCwgMTksIDIzMiwgMjU1LCAxOCwgCisgICAgMTksIDIxNiwgMjA5LCAyMTYsIDE5NSwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNzUsIDE4LCAxOSwgMjE2LCAyMDksIAorICAgIDIxNiwgMTcxLCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDE1NiwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNTMsIDE4LCAxOSwgCisgICAgMjE2LCAyMDksIDIxNiwgMjA4LCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDIwNywgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAKKyAgICAyMTAsIDE4LCAxOSwgMjU0LCAxODksIDI1MywgMTU4LCAxOCwgMTksIDI1MSwgMjE4LCA3NSwgMTgsIDE5LCAyNTEsIDIxOCwgCisgICAgNzMsIDE4LCAxOSwgMjUxLCAyMTgsIDc2LCAxOCwgMTksIDI1MSwgMjE4LCA2MSwgMTgsIDE5LCAyNTEsIDIxOCwgMjEyLCAKKyAgICAyMiwgMTgsIDE5LCAyNTEsIDIxOCwgMjExLCAyNTAsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMSwgMjI3LCAxOCwgMTksIDI1MSwgCisgICAgMjE4LCAyMTIsIDY1LCAxOCwgMTksIDI1MSwgMjE4LCAyMjksIDEwNywgMTgsIDE5LCAyNTEsIDIxOCwgMjI4LCAyMzMsIDE4LCAKKyAgICAxOSwgMjUxLCAyMTgsIDIyOCwgNzQsIDE4LCAxOSwgMjUxLCAyMTgsIDE5NywgMTgsIDE5LCAyNTEsIDIxOCwgMjM0LCAxODIsIAorICAgIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgOTIsIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgMjgsIDE4LCAxOSwgMjUxLCAyMTgsIAorICAgIDE3NiwgMTgsIDE5LCAyMjEsIDIwOSwgMjQxLCAyMzgsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgMTgwLCAxOCwgMTksIDIyMSwgCisgICAgMjA5LCAyNDEsIDY4LCAxOCwgMTksIDIyMSwgMjA5LCAxNjIsIDE4LCAxOSwgNzIsIDI0MiwgMjIwLCAxOCwgMTksIDcyLCAKKyAgICAyNDIsIDIyNCwgMTgsIDE5LCA3MiwgMjQyLCAyMzYsIDE4LCAxOSwgNzIsIDI0MiwgMjM1LCAxOCwgMTksIDcyLCAyNDIsIAorICAgIDIyNSwgMTgsIDE5LCA3MiwgMjQyLCAyNDksIDE4LCAxOSwgNzIsIDIyMiwgMTQwLCAxOCwgMTksIDcyLCAyMjIsIDIxMSwgCisgICAgMTgsIDE5LCA3MiwgMjIzLCAxMjgsIDE4LCAxOSwgNzIsIDIyMywgMTA4LCAxOCwgMTksIDcyLCAyMjMsIDM1LCAxOCwgMTksIAorICAgIDcyLCAyMDUsIDE4LCAxOSwgNzIsIDIxMSwgMTk1LCAxOCwgMTksIDcyLCAyMTEsIDIyNywgMTgsIDE5LCA3MiwgMjEyLCAyMiwgCisgICAgMTgsIDE5LCA3MiwgMjEyLCAxNywgMTgsIDE5LCA3MiwgMjExLCAyNTAsIDE4LCAxOSwgNzIsIDIxMiwgNjUsIDE4LCAxOSwgCisgICAgNzIsIDI0MCwgMTk0LCAxOCwgMTksIDcyLCAyNDAsIDE5NSwgMTgsIDE5LCA3MiwgMjQwLCAxOTgsIDE4LCAxOSwgNzIsIAorICAgIDI0MCwgMTk3LCAxOCwgMTksIDcyLCAyNDAsIDE5NiwgMTgsIDE5LCA3MiwgMjQwLCAyMDAsIDE4LCAxOSwgNzIsIDIxNiwgCisgICAgMTM2LCAxOCwgMTksIDcyLCAyMTYsIDE1NiwgMTgsIDE5LCA3MiwgMjE2LCAxOTUsIDE4LCAxOSwgNzIsIDIxNiwgMTk0LCAKKyAgICAxOCwgMTksIDcyLCAyMTYsIDE3NSwgMTgsIDE5LCA3MiwgMjE2LCAyMDgsIDE4LCAxOSwgNzIsIDIxNSwgMTIzLCAxOCwgMTksIAorICAgIDcyLCAyMTUsIDEzMywgMTgsIDE5LCA3MiwgMjE1LCAxNTEsIDE4LCAxOSwgNzIsIDIxNSwgMTUwLCAxOCwgMTksIDcyLCAKKyAgICAyMTUsIDEzNSwgMTgsIDE5LCA3MiwgMjE1LCAxNTYsIDE4LCAxOSwgNzIsIDIyNCwgMTUwLCAxOCwgMTksIDcyLCAyMjUsIAorICAgIDE2LCAxOCwgMTksIDcyLCAyMjUsIDIyMSwgMTgsIDE5LCA3MiwgMjI1LCAyMTEsIDE4LCAxOSwgNzIsIDIyNSwgMTA4LCAxOCwgCisgICAgMTksIDcyLCAxOTAsIDE4LCAxOSwgNzIsIDIyNiwgMTA1LCAxOCwgMTksIDcyLCAyNDIsIDExMywgMTgsIDE5LCA3MiwgMjQyLCAKKyAgICAxNzQsIDE4LCAxOSwgNzIsIDI0MywgNjIsIDE4LCAxOSwgNzIsIDI0MywgNTUsIDE4LCAxOSwgNzIsIDI0MiwgMjE0LCAxOCwgCisgICAgMTksIDcyLCAyNDMsIDEzNSwgMTgsIDE5LCA3MiwgMjM0LCAxMDAsIDE4LCAxOSwgNzIsIDIzNCwgMTA1LCAxOCwgMTksIDcyLCAKKyAgICAyMzQsIDExOSwgMTgsIDE5LCA3MiwgMjM0LCAxMTgsIDE4LCAxOSwgNzIsIDIzNCwgMTEyLCAxOCwgMTksIDcyLCAyMzQsIAorICAgIDEzMiwgMTgsIDE5LCA3MiwgMjM0LCA0MSwgMTgsIDE5LCA3MiwgMjM0LCA0MiwgMTgsIDE5LCA3MiwgMjM0LCA0NSwgMTgsIAorICAgIDE5LCA3MiwgMjM0LCA0NCwgMTgsIDE5LCA3MiwgMjM0LCA0MywgMTgsIDE5LCA3MiwgMjM0LCA0NiwgMTgsIDE5LCA3MiwgCisgICAgMjM0LCA0NywgMTgsIDE5LCA3MiwgMjI3LCAyMzcsIDE4LCAxOSwgNzIsIDIyOCwgNzQsIDE4LCAxOSwgNzIsIDIyOSwgMTA3LCAKKyAgICAxOCwgMTksIDcyLCAyMjksIDEwMywgMTgsIDE5LCA3MiwgMjI4LCAyMzMsIDE4LCAxOSwgNzIsIDE5NywgMTgsIDE5LCA3MiwgCisgICAgMjMwLCAxMDIsIDE4LCAxOSwgNzIsIDIzMCwgMTYxLCAxOCwgMTksIDcyLCAyMzEsIDkxLCAxOCwgMTksIDcyLCAyMzEsIDgwLCAKKyAgICAxOCwgMTksIDcyLCAyMzAsIDIzMCwgMTgsIDE5LCA3MiwgMTg0LCAxOCwgMTksIDcyLCAyMTAsIDIxMiwgMTgsIDE5LCA3MiwgCisgICAgMjEwLCAyNDQsIDE4LCAxOSwgNzIsIDIxMSwgNDcsIDE4LCAxOSwgNzIsIDIxMSwgNDQsIDE4LCAxOSwgNzIsIDIxMSwgOCwgCisgICAgMTgsIDE5LCA3MiwgMTkxLCAxOCwgMTksIDcyLCAyMzUsIDUxLCAxOCwgMTksIDIyMSwgMjA5LCAyMzUsIDUxLCAxOCwgMTksIAorICAgIDcyLCAyMzUsIDY4LCAxOCwgMTksIDcyLCAyMzUsIDEyNiwgMTgsIDE5LCA3MiwgMjM1LCAxMjQsIDE4LCAxOSwgNzIsIDIzNSwgCisgICAgMTA4LCAxOCwgMTksIDIyMSwgMjA5LCAyMzUsIDEwOCwgMTgsIDE5LCA3MiwgMjM1LCAxNDEsIDE4LCAxOSwgNzIsIDIzNSwgCisgICAgODEsIDE4LCAxOSwgNzIsIDIzNSwgODUsIDE4LCAxOSwgNzIsIDIzNSwgOTUsIDE4LCAxOSwgNzIsIDIzNSwgOTQsIDE4LCAKKyAgICAxOSwgNzIsIDIzNSwgOTMsIDE4LCAxOSwgNzIsIDIzNSwgOTYsIDE4LCAxOSwgNzIsIDIzMiwgOTgsIDE4LCAxOSwgNzIsIAorICAgIDIzMiwgMTU2LCAxOCwgMTksIDcyLCAyMzMsIDU4LCAxOCwgMTksIDcyLCAyMzMsIDUwLCAxOCwgMTksIDcyLCAyMzIsIDI0MSwgCisgICAgMTgsIDE5LCA3MiwgMjMzLCAxMzUsIDE4LCAxOSwgNzIsIDI0NywgMTQ5LCAxOCwgMTksIDcyLCAyNDcsIDE1MCwgMTgsIDE5LCAKKyAgICA3MiwgMjQ3LCAxNTUsIDE4LCAxOSwgNzIsIDI0NywgMTU0LCAxOCwgMTksIDcyLCAyNDcsIDE1MSwgMTgsIDE5LCA3MiwgCisgICAgMjQ3LCAxNTYsIDE4LCAxOSwgNzIsIDIzMiwgMjQ0LCAxOCwgMTksIDcyLCAyMzIsIDI0NiwgMTgsIDE5LCA3MiwgMjMyLCAKKyAgICAyNTAsIDE4LCAxOSwgNzIsIDIzMiwgMjQ5LCAxOCwgMTksIDcyLCAyMzIsIDI0OCwgMTgsIDE5LCA3MiwgMjMyLCAyNTQsIAorICAgIDE4LCAxOSwgNzIsIDIxNiwgNTAsIDE4LCAxOSwgNzIsIDIxNiwgNTIsIDE4LCAxOSwgNzIsIDIxNiwgNTUsIDE4LCAxOSwgCisgICAgNzIsIDIxNiwgNTQsIDE4LCAxOSwgNzIsIDIxNiwgNTMsIDE4LCAxOSwgNzIsIDIxNiwgNTYsIDE4LCAxOSwgNzIsIDIxNiwgCisgICAgNDUsIDE4LCAxOSwgNzIsIDIxNiwgNDYsIDE4LCAxOSwgNzIsIDIxNiwgNTgsIDE4LCAxOSwgNzIsIDIxNiwgNTcsIDE4LCAKKyAgICAxOSwgNzIsIDIxNiwgNDcsIDE4LCAxOSwgNzIsIDIxNiwgNTksIDE4LCAxOSwgNzIsIDIxMCwgMTMsIDE4LCAxOSwgNzIsIAorICAgIDIxMCwgMjMsIDE4LCAxOSwgNzIsIDIxMCwgOTQsIDE4LCAxOSwgNzIsIDIxMCwgOTIsIDE4LCAxOSwgNzIsIDIxMCwgNDQsIAorICAgIDE4LCAxOSwgNzIsIDIxMCwgMTE2LCAxOCwgMTksIDcyLCAyMTAsIDE1OSwgMTgsIDE5LCA3MiwgNjUsIDIxMCwgMTU5LCAxOCwgCisgICAgMTksIDcyLCAyNDYsIDI4LCAxOCwgMTksIDcyLCAyNDYsIDI5LCAxOCwgMTksIDcyLCAyNDYsIDM2LCAxOCwgMTksIDcyLCAKKyAgICAyNDYsIDM1LCAxOCwgMTksIDcyLCAyNDYsIDMxLCAxOCwgMTksIDcyLCAyNDYsIDM4LCAxOCwgMTksIDcyLCAyMTgsIDgzLCAKKyAgICAxOCwgMTksIDcyLCAyMTksIDU4LCAxOCwgMTksIDcyLCAyMjEsIDE4MSwgMTgsIDE5LCA3MiwgMjIxLCAxNzAsIDE4LCAxOSwgCisgICAgNzIsIDIxOSwgMTkxLCAxOCwgMTksIDcyLCAyMDYsIDE4LCAxOSwgNzIsIDIxOSwgMjI1LCAxOCwgMTksIDcyLCAyMjAsIDcsIAorICAgIDE4LCAxOSwgNzIsIDIyMCwgNjMsIDE4LCAxOSwgNzIsIDIyMCwgNjEsIDE4LCAxOSwgNzIsIDIyMCwgMzIsIDE4LCAxOSwgCisgICAgNzIsIDIyMCwgMTAyLCAxOCwgMTksIDcyLCAyMjAsIDEwNCwgMTgsIDE5LCA3MiwgMjE1LCAxNjMsIDE4LCAxOSwgNzIsIAorICAgIDIxNSwgMTY2LCAxOCwgMTksIDcyLCAyMTUsIDE3OCwgMTgsIDE5LCA3MiwgMjE1LCAxNzcsIDE4LCAxOSwgNzIsIDIxNSwgCisgICAgMTY3LCAxOCwgMTksIDcyLCAyMTUsIDE4MywgMTgsIDE5LCA3MiwgMjUwLCA2OSwgMTgsIDE5LCA3MiwgMjUwLCA4NiwgMTgsIAorICAgIDE5LCA3MiwgMjUwLCAxMzEsIDE4LCAxOSwgNzIsIDI1MCwgMTI4LCAxOCwgMTksIDcyLCAyNTAsIDExMCwgMTgsIDE5LCA3MiwgCisgICAgMjUwLCAxNTcsIDE4LCAxOSwgNzIsIDIxNSwgMTI2LCAxOCwgMTksIDcyLCAyMTUsIDEyNywgMTgsIDE5LCA3MiwgMjE1LCAKKyAgICAxMzAsIDE4LCAxOSwgNzIsIDIxNSwgMTI5LCAxOCwgMTksIDcyLCAyMTUsIDEyOCwgMTgsIDE5LCA3MiwgMjE1LCAxMzEsIAorICAgIDE4LCAxOSwgMjUwLCAxMTEsIDUwLCAxOCwgMTksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTgsIDE5LCAyMjQsIDgwLCAxOCwgCisgICAgMTksIDIyOSwgNzMsIDE4LCAxOSwgMjI4LCAxMDAsIDE4LCAxOSwgMjI4LCA5OSwgMTgsIDE5LCAyMjgsIDk4LCAxOCwgMTksIAorICAgIDIyOCwgOTcsIDE4LCAxOSwgMjI4LCAxMDIsIDE4LCAxOSwgMjI4LCAxMDEsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI1LCAKKyAgICAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNCwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjMsIDE4LCAxOSwgMjExLCAyMTMsIAorICAgIDIxNiwgMTIyLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjgsIDE4LCAxOSwgCisgICAgMjExLCAyMTMsIDIxNiwgMTI3LCAxOCwgMTksIDIxMSwgMjEzLCA0MCwgMjE2LCAyMTAsIDE4LCAxOSwgMjUxLCAyMTgsIAorICAgIDIxMiwgOTgsIDIyNiwgMjI2LCAyMTksIDE5LCA3OCwgMjI2LCAyMjYsIDEsIDI1MiwgNDgsIDIyNiwgMjI2LCAxLCAyMzIsIAorICAgIDg3LCAyMjYsIDIyNiwgMSwgMjQ0LCAxNTEsIDIyNiwgMjI2LCAxLCAyMjIsIDE1LCAyMjYsIDIyNiwgMSwgMjI4LCAxOTMsIAorICAgIDIyNiwgMjI2LCAxLCAyMTQsIDIyNiwgMjI2LCAyMjYsIDEsIDI0OCwgMTk3LCAyMjYsIDIyNiwgMSwgMjE2LCA4MCwgMjI2LCAKKyAgICAyMjYsIDEsIDI0OSwgMjI5LCAyMjYsIDIyNiwgMSwgMjUwLCAxODAsIDIyNiwgMjI2LCAxLCAyMzAsIDkxLCAyMjYsIDIyNiwgCisgICAgMSwgMjQyLCAxNTYsIDIyNiwgMjI2LCAxLCAyMjksIDYzLCAyMjYsIDIyNiwgMSwgMjE4LCAxMjIsIDIyNiwgMjI2LCAxLCAKKyAgICAyMjIsIDEzNSwgMjI2LCAyMjYsIDEsIDI1NCwgMTk4LCAyMjYsIDIyNiwgMSwgMjI2LCAxODcsIDIyNiwgMjI2LCAxLCAyMTQsIAorICAgIDE1MCwgMjI2LCAyMjYsIDEsIDI0NSwgMjMxLCAyMjYsIDIyNiwgMSwgMjM1LCAxODgsIDIyNiwgMjI2LCAxLCAyNDUsIDIzMiwgCisgICAgMjI2LCAyMjYsIDEsIDIyNiwgMTU4LCAyMjYsIDIyNiwgMSwgMjE0LCAyMDYsIDIyNiwgMjI2LCAxLCAyMzYsIDM5LCAyMjYsIAorICAgIDIyNiwgMSwgMjQ1LCAyMjksIDIyNiwgMjI2LCAxLCAyMjUsIDIwMiwgMjI2LCAyMjYsIDI0NCwgMTUwLCA3OCwgMjI2LCAKKyAgICAyMjYsIDIyMywgNDksIDI0NCwgMTUwLCA3OCwgMTc4LCAxLCAyNDQsIDE0MSwgMjQ0LCAxMzMsIDI0NCwgMTU1LCAyNDUsIDYsIAorICAgIDE3OCwgMSwgMjE0LCAxMDUsIDE3OCwgMSwgMjE0LCAxMzUsIDIxNCwgMTUxLCA3MCwgMTc4LCAxLCAyMTAsIDIxNCwgMTc4LCAKKyAgICAxLCAyMTEsIDExNywgMTc4LCAxLCAyMTIsIDk4LCAxNzgsIDEsIDIxNiwgMTMwLCAyMTYsIDEyOSwgMjE2LCAxNTEsIDE3OCwgCisgICAgMSwgMjQ1LCA1OSwgMTc4LCAxLCAyNTQsIDkzLCA2MSwgMTc4LCAxLCAyMjYsIDE0MywgNzYsIDE3OCwgMSwgMjU1LCAxNywgCisgICAgNjEsIDE3OCwgMSwgMjU0LCAyMjcsIDE3OCwgMSwgMjMyLCAxMzMsIDc2LCAxNzgsIDEsIDIxOSwgMjQ0LCA3NiwgMTc4LCAxLCAKKyAgICA3NiwgMTc4LCAxLCAyMjYsIDIzNCwgMTc4LCAxLCAyMjYsIDE5NiwgMTc4LCAxLCAyMjMsIDE2NCwgMjIzLCAxNzcsIDIyMywgCisgICAgOTQsIDE1MywgMTc4LCAxLCAyMzQsIDE5MywgMTc4LCAxLCAyNTAsIDE3NywgMTc4LCAxLCAyMzQsIDE5NCwgMjM1LCAyMywgCisgICAgMTc4LCAxLCAyNDMsIDIwMiwgMTc4LCAxLCAyNDUsIDEzOCwgMTc4LCAxLCAyNDMsIDU4LCAyNDIsIDY2LCAyNDMsIDIwMiwgCisgICAgMTc4LCAxLCAyNDMsIDk2LCAxNzgsIDEsIDIxMSwgMTg4LCAyMTEsIDE4MiwgMjEyLCA5OCwgMTc4LCAxLCAyNDIsIDM4LCAKKyAgICAyNDIsIDYwLCAxNzgsIDEsIDI0MiwgNDIsIDI0MiwgNjAsIDE3OCwgMSwgMjMyLCAxMzUsIDI0MiwgNjAsIDE3OCwgMSwgCisgICAgMjE5LCAyNDcsIDI0MiwgNjAsIDE3OCwgMSwgMjI5LCAxODUsIDIyNywgMTU3LCAyMjksIDE4NiwgMjMwLCAyNSwgMTc4LCAxLCAKKyAgICAyMTksIDI0NSwgMjMwLCAyNSwgMTc4LCAxLCAyNDYsIDExNSwgMTc4LCAxLCAyMzUsIDE2OCwgMjM1LCAxNzIsIDIzNSwgCisgICAgMTYyLCA3MywgMTc4LCAxLCA3NSwgMTc4LCAxLCAyMzUsIDExNywgMjM1LCAxNDQsIDE3OCwgMSwgMjQzLCA0MywgMTc4LCAxLCAKKyAgICAyMzIsIDEzNiwgMjU0LCAyNDMsIDE3OCwgMSwgMjE5LCAyNDksIDYxLCAxNzgsIDEsIDIzNSwgMTU0LCAyNDUsIDExMywgCisgICAgMTc4LCAxLCAyMjUsIDE2NCwgMjI1LCAxODYsIDIyNiwgMTA1LCAxNzgsIDEsIDI1NCwgMTYzLCAyNDUsIDExMSwgMTc4LCAxLCAKKyAgICAyMTksIDI0LCAyMjIsIDkxLCAxNzgsIDEsIDIxOSwgMTc5LCAyMzIsIDEzMiwgMjIyLCA5MSwgMTc4LCAxLCAyMTksIDI0MywgCisgICAgMjIyLCA5MSwgMTc4LCAxLCAyNTEsIDY2LCAxNzgsIDEsIDIxMCwgMTU5LCAxNzgsIDEsIDIxNiwgNjMsIDIxNiwgNzMsIAorICAgIDIxNSwgNDEsIDIxNywgMTUyLCAxNzgsIDEsIDIxOSwgMjQyLCAyMTcsIDE1MiwgMTc4LCAxLCAyNDksIDYwLCAxNzgsIDEsIAorICAgIDI1MiwgMzEsIDI1MiwgMzQsIDI1MSwgMjI0LCAyNTMsIDE1OCwgMTc4LCAxLCAyMTksIDI0OCwgMjUzLCAxNTgsIDE3OCwgMSwgCisgICAgMjQ2LCAxMTQsIDE3OCwgMSwgMjI2LCAxNzEsIDE3OCwgMSwgMjQ1LCAxOTYsIDI0NSwgMTk4LCA3NSwgMTc4LCAxLCAyMzEsIAorICAgIDE3OCwgMjMxLCAxODYsIDE5MywgMTc4LCAxLCAyMzIsIDEzNCwgMTkzLCAxNzgsIDEsIDIxOSwgMjQ2LCAxOTMsIDE3OCwgMSwgCisgICAgMjMzLCA3MywgMjMzLCAxMTQsIDIzMiwgMTQzLCAxNTYsIDE3OCwgMSwgMjQ2LCAxMTYsIDE3OCwgMSwgMjM1LCAyMzAsIAorICAgIDE3OCwgMSwgMjM1LCAyMzEsIDE3OCwgMSwgMjQ4LCAyMTAsIDI0OCwgMjE1LCAyNDksIDYwLCAxNzgsIDEsIDIyNiwgMTM4LCAKKyAgICAyNDUsIDU4LCA3NiwgMTc4LCAxLCAyNDUsIDIyNywgMTc4LCAxLCAyMzUsIDE4NywgMTc4LCAxLCAyNDksIDc4LCAxNzgsIDEsIAorICAgIDI1MSwgMTcsIDE3OCwgMSwgMjUwLCAxODksIDE3OCwgMSwgMjE4LCAxNjEsIDE3OCwgMSwgMjMyLCAxMzEsIDE3OCwgMSwgCisgICAgMjE5LCAyNDEsIDE3OCwgMSwgMjQwLCAxMTAsIDE3OCwgMSwgMjI0LCA5NiwgMTc4LCAxLCAyMTEsIDE3OCwgMTc4LCAyMTksIAorICAgIDE1NSwgMjI0LCAxNDAsIDE3OCwgMjMwLCA4NSwgMjI0LCAxNDAsIDE3OCwgMjQ5LCAxMzEsIDIyNCwgMTQwLCAxNzgsIDI1NCwgCisgICAgNiwgODcsIDE3OCwgMjE1LCA4MiwgODcsIDE3OCwgMjUyLCA0NiwgODcsIDIxNywgODMsIDEsIDYxLCAyMTcsIDgzLCAxLCAKKyAgICA3MywgMjE3LCA4MywgMSwgNzAsIDIxNywgODMsIDEsIDE3NiwgMjE3LCA4MywgMSwgMjQzLCAxMzUsIDIxNywgODMsIDEsIAorICAgIDIyOSwgNzcsIDIxNywgODMsIDEsIDIxNywgMTA1LCAyMTcsIDgzLCAxLCAyNDgsIDIyMSwgMjE3LCA4MywgMSwgMTk3LCAKKyAgICAyMTcsIDgzLCAxLCAxOTAsIDIxNywgODMsIDEsIDI1MiwgMTkxLCAyMTcsIDgzLCAxLCAxODQsIDIxNywgODMsIDEsIDE5MSwgCisgICAgMjE3LCA4MywgMSwgMjMzLCAxMzUsIDIxNywgODMsIDEsIDIxMiwgNjUsIDIxNywgODMsIDEsIDIwNiwgMjE3LCA4MywgMSwgCisgICAgMTYyLCAyMTcsIDgzLCAyNSwgNSwgNzMsIDIxNywgODMsIDI1LCA1LCA3MCwgMjE3LCA4MywgNSwgMjEzLCAxNTIsIDI0MiwgCisgICAgNywgMSwgNjEsIDI0MiwgNywgMSwgNzMsIDI0MiwgNywgMSwgNzAsIDI0MiwgNywgMSwgMTc2LCAyNDIsIDcsIDEsIDI0MywgCisgICAgMTM1LCAyNDIsIDcsIDEsIDIyOSwgNzcsIDI0MiwgNywgMSwgMjE3LCAxMDUsIDI0MiwgNywgMSwgMjQ4LCAyMjEsIDI0MiwgCisgICAgNywgMSwgMTk3LCAyNDIsIDcsIDEsIDE5MCwgMjQyLCA3LCAxLCAyNTIsIDE5MSwgMjQyLCA3LCAxLCAxODQsIDI0MiwgNywgCisgICAgMSwgMTkxLCAyNDIsIDcsIDEsIDIwNSwgMjQyLCA3LCAxLCAyMzMsIDEzNSwgMjQyLCA3LCAxLCAyMTIsIDY1LCAyNDIsIDcsIAorICAgIDEsIDIwNiwgMjQyLCA3LCAxLCAxNjIsIDI0MiwgNywgMjUsIDUsIDczLCAyNDIsIDcsIDI1LCA1LCA3MCwgMjQyLCA3LCA1LCAKKyAgICAyMjYsIDQ5LCAyMjUsIDEyNiwgMjE5LCAxNTUsIDIyNCwgMTQwLCAyMjUsIDEyNiwgNTIsIDIyNCwgMTQwLCAyNTEsIDEyMCwgCisgICAgMSwgNjEsIDI1MSwgMTIwLCAxLCA3MywgMjUxLCAxMjAsIDEsIDcwLCAyNTEsIDEyMCwgMSwgMTc2LCAyNTEsIDEyMCwgMSwgCisgICAgMjQzLCAxMzUsIDI1MSwgMTIwLCAxLCAyMjksIDc3LCAyNTEsIDEyMCwgMSwgMjE3LCAxMDUsIDI1MSwgMTIwLCAxLCAyNDgsIAorICAgIDIyMSwgMjUxLCAxMjAsIDEsIDE5NywgMjUxLCAxMjAsIDEsIDE5MCwgMjUxLCAxMjAsIDEsIDI1MiwgMTkxLCAyNTEsIDEyMCwgCisgICAgMSwgMTg0LCAyNTEsIDEyMCwgMSwgMTkxLCAyNTEsIDEyMCwgMSwgMjA1LCAyNTEsIDEyMCwgMSwgMjMzLCAxMzUsIDI1MSwgCisgICAgMTIwLCAxLCAyMTIsIDY1LCAyNTEsIDEyMCwgMSwgMjA2LCAyNTEsIDEyMCwgMSwgMTYyLCAyNTEsIDEyMCwgMjUsIDUsIDczLCAKKyAgICAyNTEsIDEyMCwgMjUsIDUsIDcwLCAyMTcsIDgyLCAxLCA2MSwgMjE3LCA4MiwgMSwgNzMsIDIxNywgODIsIDEsIDcwLCAyMTcsIAorICAgIDgyLCAxLCAxNzYsIDIxNywgODIsIDEsIDI0MywgMTM1LCAyMTcsIDgyLCAxLCAyMjksIDc3LCAyMTcsIDgyLCAxLCAyMTcsIAorICAgIDEwNSwgMjE3LCA4MiwgMSwgMjQ4LCAyMjEsIDIxNywgODIsIDEsIDE5NywgMjE3LCA4MiwgMSwgMTkwLCAyMTcsIDgyLCAxLCAKKyAgICAyNTIsIDE5MSwgMjE3LCA4MiwgMSwgMTg0LCAyMTcsIDgyLCAxLCAxOTEsIDIxNywgODIsIDEsIDIzMywgMTM1LCAyMTcsIAorICAgIDgyLCAxLCAyMTIsIDY1LCAyMTcsIDgyLCAxLCAyMDYsIDIxNywgODIsIDI1LCA1LCA3MywgMjE3LCA4MiwgMjUsIDUsIDcwLCAKKyAgICA2OSwgMSwgMTc2LCA2OSwgMSwgMjM0LCAxMzIsIDY5LCAxLCAyMzQsIDI4LCA2OSwgMSwgMjM0LCAxMDUsIDY5LCAxLCAyMjksIAorICAgIDQsIDY5LCAxLCAyNTEsIDMzLCA2OSwgMSwgMjUwLCAxNTcsIDY5LCAxLCAyNDksIDIzOCwgNjksIDEsIDI1MCwgODYsIDY5LCAKKyAgICAxLCAyMjcsIDEzNCwgNjksIDEsIDI0OCwgMjIxLCA2OSwgMSwgMjE1LCAxNDQsIDY5LCAxLCAyNDcsIDE0NSwgNjksIDEsIAorICAgIDIxNSwgMTM5LCA2OSwgMSwgMjI4LCA4MCwgNjksIDEsIDIxNywgMTA1LCA2OSwgMSwgMjE2LCAyMDgsIDY5LCAxLCAxMTEsIAorICAgIDY5LCAxLCAyMTYsIDE1NiwgNjksIDEsIDIyOCwgNzQsIDY5LCAxLCAyNTIsIDE5MSwgNjksIDEsIDIyNSwgMTQ3LCA2OSwgMSwgCisgICAgMjI1LCAxNiwgNjksIDEsIDIyNSwgMTIxLCA2OSwgMSwgMjMwLCAxNjEsIDY5LCAxLCAyMTAsIDI0NCwgNjksIDEsIDIyMiwgCisgICAgMjExLCA2OSwgMSwgMjMyLCAxNTYsIDY5LCAxLCAyMTMsIDEzOCwgNjksIDEsIDIyMCwgMTAyLCA2OSwgMSwgMjE4LCAxODQsIAorICAgIDY5LCAxLCAyMDYsIDY5LCAxLCAxNjIsIDY5LCAxLCAyMzMsIDEzNSwgNjksIDEsIDIyNCwgODgsIDY5LCAyMzUsIDI0MywgCisgICAgMjUsIDIyNCwgNzQsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgODcsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNTMsIDY5LCAKKyAgICAyMzUsIDI0MywgMjUsIDIyNCwgNDgsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgMzAsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgCisgICAgMiwgNjksIDIzNSwgMjQzLCAyNSwgMjIzLCAyNDYsIDY5LCAyMzUsIDI0MywgMjUsIDIyMywgMjQ1LCA2OSwgMjM1LCAyNDMsIAorICAgIDI1LCAyMjIsIDEwMCwgNjksIDIzNSwgMjQzLCAyNSwgMjIyLCA5MywgNjksIDIzNSwgMjQzLCAyNSwgMjMyLCA2MiwgNjksIAorICAgIDIzNSwgMjQzLCAyNSwgMjMyLCA1MiwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCA2OSwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAKKyAgICA4MCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAzOCwgMjE1LCA0OSwgMTEwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDM4LCAKKyAgICAyMTUsIDQ5LCAxMDUsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNzAsIDY5LCAyNSwgMjM1LCAyMjksIDI1NCwgNDUsIDY5LCAKKyAgICAyNSwgMjM1LCAyMjksIDI1NSwgNzMsIDY5LCAyNSwgNSwgMjU1LCA3MywgNjksIDI1LCA1LCA3MywgNjksIDI1LCA1LCAyMzYsIAorICAgIDMzLCA2OSwgMjUsIDUsIDIxMSwgMTE3LCA2OSwgMjUsIDUsIDIxMCwgMTY5LCA2OSwgMjUsIDUsIDcwLCA2OSwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCA2OSwgMjUsIDUsIDIxNCwgMjI5LCA2OSwgMjUsIDUsIDIyNiwgMjM0LCA2OSwgMjUsIDUsIDE5MSwgNjksIAorICAgIDI1LCA1LCAyMzYsIDYwLCA2OSwgMjUsIDUsIDc1LCA2OSwgMjUsIDUsIDI1NCwgMjQzLCA2OSwgMjUsIDUsIDI1NCwgMjAxLCAKKyAgICA2OSwgMjUsIDUsIDIyNiwgMTgzLCA2OSwgMjUsIDUsIDI1MywgMTkyLCA2OSwgNSwgMjI4LCAyMDYsIDY5LCA1LCAyMjMsIAorICAgIDEyNiwgNjksIDUsIDIxMCwgMTgwLCA2OSwgNSwgMjMwLCA1MiwgNjksIDUsIDIxNSwgMjEzLCA2OSwgNSwgMjUyLCAxNDMsIAorICAgIDY5LCA1LCAyMjIsIDIwNiwgNjksIDUsIDIxNiwgNDAsIDY5LCA1LCAyMzQsIDI0MSwgNjksIDUsIDI1NCwgMjAzLCA2OSwgNSwgCisgICAgMjIxLCAyNDQsIDIyMSwgMjM4LCA2OSwgNSwgMjEzLCAxNDksIDY5LCA1LCAyNDksIDIzMiwgNjksIDUsIDI1MiwgMTE3LCAKKyAgICA2OSwgNSwgMjM0LCAxMjUsIDY5LCA1LCAyNTIsIDEzNywgNjksIDUsIDI1MSwgOSwgMjI1LCA3MiwgMjMzLCAxODcsIDY5LCAKKyAgICA1LCAyMzMsIDMwLCAyMTYsIDE3LCA2OSwgNSwgMjUyLCAyMCwgNjksIDUsIDIyNSwgMTIzLCAyMzAsIDk5LCA2OSwgNSwgCisgICAgMjM0LCA5LCA2OSwgMjQ5LCA5OCwgMTYsIDIyMywgMjgsIDY5LCA1LCAyNTMsIDE3NCwgNjksIDUsIDI1MywgMTk1LCA2OSwgCisgICAgMjEsIDIxMCwgODYsIDY5LCAyMSwgMTEwLCA2OSwgMjEsIDEwNSwgNjksIDIxLCAxNTgsIDY5LCAyMSwgMTYxLCA2OSwgMjEsIAorICAgIDE4OSwgNjksIDIxLCAxOTQsIDY5LCAyMSwgMTk4LCA2OSwgMjEsIDE5NSwgNjksIDIxLCAyMDAsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIxOSwgNDMsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIzMCwgNzEsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIyNSwgNzEsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDI1MiwgNDksIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDI1MSwgMTAzLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMjQsIDIxNSwgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjI0LCAyMDksIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIyNCwgMjA3LCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMjQsIDIxMywgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjI0LCAyMTEsIDgzLCAyNTEsIDIzNiwgCisgICAgODMsIDI0NSwgMTYzLCA4MywgMjQ5LCAyMTksIDgzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDgzLCAyNDksIDIyNiwgODMsIAorICAgIDI0NCwgMTEsIDI0NywgMTE4LCA4MywgMjE2LCAzOSwgMjE5LCA1MiwgMjQwLCAxNjgsIDgzLCAyMTksIDE5MCwgMywgMjUxLCAKKyAgICAxNzIsIDIzMSwgMTU0LCA4MywgMjMxLCAxODMsIDI0OSwgMjE5LCA4MywgMjMxLCAxODMsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgODMsIDIyOCwgMTkxLCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIDE1NywgMTEwLCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIAorICAgIDE1NywgMTA1LCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIDE1NywgMTU4LCA4MywgMjUsIDIyMCwgMTM3LCA4MywgMjEsIDIxMCwgCisgICAgODYsIDgzLCAyMSwgMTEwLCA4MywgMjEsIDEwNSwgODMsIDIxLCAxNTgsIDgzLCAyMSwgMTYxLCA4MywgMjEsIDE4OSwgODMsIAorICAgIDIxLCAxOTQsIDgzLCAyMSwgMTk4LCA4MywgMjEsIDE5NSwgODMsIDIxLCAyMDAsIDgzLCAxLCA2MSwgODMsIDEsIDc1LCA4MywgCisgICAgMSwgNzMsIDgzLCAxLCA3NiwgODMsIDEsIDcwLCA4MywgMSwgMjI2LCAyMzQsIDgzLCAxLCAyMTQsIDIxNCwgODMsIDEsIAorICAgIDI0NSwgMjA5LCA4MywgMSwgMTk3LCA4MywgMSwgMjU0LCAxMTUsIDgzLCAxLCAyNTIsIDE5MSwgODMsIDEsIDE5MCwgODMsIAorICAgIDEsIDIyNCwgODgsIDgzLCAxLCAyNDMsIDEzNSwgODMsIDEsIDE4NCwgODMsIDEsIDIzMywgMTM1LCA4MywgMSwgMjA2LCA4MywgCisgICAgMSwgMjIwLCAxMDIsIDgzLCAxLCAyMTcsIDEwNSwgODMsIDEsIDI0OCwgMjIxLCA4MywgMSwgMjUwLCAxNTcsIDgzLCAxLCAKKyAgICAyMzUsIDE0MSwgODMsIDEsIDE5MSwgODMsIDEsIDIwNSwgODMsIDEsIDIxMiwgNjUsIDgzLCAxLCAyNDQsIDE5NiwgODMsIDEsIAorICAgIDE3NiwgODMsIDEsIDIzNCwgMTMyLCA4MywgMSwgMjE1LCAxODMsIDgzLCAxLCAyMTAsIDExNiwgODMsIDEsIDI0MiwgNDYsIAorICAgIDgzLCAxLCAyMTAsIDE2LCA4MywgMSwgMjMyLCAyNTQsIDgzLCAxLCAyMTAsIDY5LCA4MywgMSwgMjUwLCAxMTAsIDgzLCAxLCAKKyAgICAyMTYsIDM5LCAxOTksIDI1LCA1MCwgODMsIDEsIDIxNiwgMzksIDc1LCA4MywgMSwgMjE2LCAzOSwgNzMsIDgzLCAxLCAyMTYsIAorICAgIDM5LCA3NiwgODMsIDEsIDIxNiwgMzksIDcwLCA4MywgMSwgMjE2LCAzOSwgMjI2LCAyMzQsIDgzLCAxLCAyMTYsIDM5LCAKKyAgICAyMTQsIDIxNCwgODMsIDEsIDIxNiwgMzksIDI1NCwgMTE1LCA4MywgMSwgMjE2LCAzOSwgMjUyLCAxOTEsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAxOTAsIDgzLCAxLCAyMTYsIDM5LCAyMjQsIDg4LCA4MywgMSwgMjE2LCAzOSwgMjQzLCAxMzUsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAxODQsIDgzLCAxLCAyMTYsIDM5LCAyMTcsIDEwNSwgODMsIDEsIDIxNiwgMzksIDI0OCwgMjIxLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMjUwLCAxNTcsIDgzLCAxLCAyMTYsIDM5LCAyMzUsIDE0MSwgODMsIDEsIDIxNiwgMzksIDIxNSwgMTgzLCA4MywgMSwgCisgICAgMjE2LCAzOSwgMTkxLCA4MywgMSwgMjE2LCAzOSwgMjEyLCA2NSwgODMsIDEsIDIxNiwgMzksIDE3NiwgODMsIDEsIDIxNiwgCisgICAgMzksIDI0MywgMTMyLCA4MywgMSwgMjE2LCAzOSwgMjQyLCA0NiwgODMsIDEsIDIxNiwgMzksIDIzNSwgMTA3LCA4MywgMSwgCisgICAgMjE2LCAzOSwgMjI4LCAyMzEsIDgzLCAxLCAyMTYsIDM5LCAyNDYsIDM4LCA4MywgMSwgMjE5LCAxOTAsIDc1LCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDczLCA4MywgMSwgMjE5LCAxOTAsIDIzNSwgMTUyLCA4MywgMSwgMjE5LCAxOTAsIDIxNCwgMjE0LCA4MywgCisgICAgMSwgMjE5LCAxOTAsIDcwLCA4MywgMSwgMjE5LCAxOTAsIDI1NCwgMTE1LCA4MywgMSwgMjE5LCAxOTAsIDE3NiwgODMsIDEsIAorICAgIDIxOSwgMTkwLCAyNDMsIDEzNSwgODMsIDEsIDIxOSwgMTkwLCAxNjIsIDgzLCAxLCAyMTksIDE5MCwgMTkwLCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDIyMCwgMTAyLCA4MywgMSwgMjE5LCAxOTAsIDIxNywgMTA1LCA4MywgMSwgMjE5LCAxOTAsIDI0OCwgMjIxLCAKKyAgICA4MywgMSwgMjE5LCAxOTAsIDIzNSwgMTQxLCA4MywgMSwgMjE5LCAxOTAsIDI0NCwgMTk2LCA4MywgMSwgMjE5LCAxOTAsIAorICAgIDI0MywgMTMyLCA4MywgMSwgMjE5LCAxOTAsIDI0MiwgNDYsIDgzLCAxLCAyMTksIDE5MCwgMjE1LCAxODMsIDgzLCAxLCAKKyAgICAyMTksIDE5MCwgMjEwLCAxMTYsIDgzLCAxLCAyMTksIDE5MCwgMjIzLCAxODQsIDgzLCAxLCAyMTksIDE5MCwgMjUwLCAxNTcsIAorICAgIDgzLCAxLCAyMTksIDE5MCwgMjEwLCA4MiwgODMsIDEsIDIzMSwgMTgzLCA3MywgODMsIDEsIDIzMSwgMTgzLCAxNzYsIDgzLCAKKyAgICAxLCAyMzEsIDE4MywgMjA1LCA4MywgMSwgMjMxLCAxODMsIDI0NCwgMTk2LCA4MywgMSwgMjMxLCAxODMsIDIxMCwgODIsIAorICAgIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI1NCwgNzYsIDExMCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEzLCAKKyAgICAxNDgsIDExMCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAxODYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMzUsIDE5MywgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE2MiwgCisgICAgMjQzLCAxMTYsIDI1MiwgMTU1LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxMzQsIDI1MiwgMTU1LCA4MywgMSwgMjU0LCAKKyAgICAxNjIsIDI0MywgMTE2LCA2MSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgNzMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAKKyAgICAxMTYsIDE3NiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjI5LCA3NywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjUxLCAzMywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE1LCAxNTYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIxNSwgMTQ0LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDgsIDEzNSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjI4LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyNDgsIDIyMSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTkwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMjUsIAorICAgIDE0NywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE4LCAyMjMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgCisgICAgODIsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgMTE2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTQsIAorICAgIDIwOSwgODMsIDEsIDIxNiwgMzksIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE3LCAxMDUsIDgzLCAxLCAyMTYsIDM5LCAyNTQsIAorICAgIDE2MiwgMjQzLCAxMTYsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDIsIDI0OSwgCisgICAgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIyOSwgNzcsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIAorICAgIDI0MywgMTE2LCAyNTEsIDMzLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjM1LCAxMTQsIDgzLCAxLCAKKyAgICAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTUsIDE1NiwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAKKyAgICAxMTYsIDI0OCwgMTE5LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE3LCAxMDUsIDgzLCAxLCAyMzEsIAorICAgIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDgsIDI1LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjE4LCAyMjMsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDksIDcyLCA4MywgMSwgMjMxLCAxODMsIAorICAgIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEwLCA4MiwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgCisgICAgMTE2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxNjMsIDcwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxNjMsIAorICAgIDE5MSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI1MiwgMTgsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAKKyAgICAxMTYsIDI0OCwgMjExLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjMyLCAyNTQsIDE4LCAxOSwgCisgICAgMjI2LCAxMDksIDE4LCAxOSwgMjUzLCAxNjcsIDE4LCAxOSwgMjU1LCAyOCwgMTgsIDE5LCAyMTIsIDI1LCAxOCwgMTksIAorICAgIDIyNCwgMjIxLCAxOCwgMTksIDIyNSwgMjI5LCAxOCwgMTksIDIyNCwgMTA1LCAxOCwgMTksIDIxNywgMzEsIDE4LCAxOSwgCisgICAgMjM0LCAxODksIDE4LCAxOSwgMjMzLCAxNzksIDE4LCAxOSwgMjMxLCAxMzIsIDE4LCAxOSwgMjI4LCAzNywgMTgsIDE5LCAKKyAgICAyMjksIDE4MSwgMTgsIDE5LCAyMzMsIDY4LCAxOCwgMTksIDIxOSwgMjIsIDE4LCAxOSwgMjIxLCAyMTEsIDE4LCAxOSwgCisgICAgMjE5LCAyMzIsIDE4LCAxOSwgMjIwLCA2NiwgMTgsIDE5LCAyMTksIDIwMSwgMTgsIDE5LCAyMTAsIDIyMCwgMTgsIDE5LCAKKyAgICAyMTEsIDUyLCAxOCwgMTksIDIyMywgMTM0LCAxOCwgMTksIDIyNywgMTcxLCAxOCwgMTksIDIyNiwgMjE2LCAyMjcsIDE3MSwgCisgICAgMTgsIDE5LCAyMjcsIDE3MCwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNzAsIDE4LCAxOSwgMjI3LCAxNjksIDE4LCAxOSwgCisgICAgMjI2LCAyMTYsIDIyNywgMTY5LCAxOCwgMTksIDIyNywgMTY4LCAxOCwgMTksIDIyNiwgMjE2LCAyMjcsIDE2OCwgMTgsIDE5LCAKKyAgICAyMjIsIDEwNSwgMTgsIDE5LCAyMjIsIDEwNCwgMTgsIDE5LCAyMjIsIDEwMywgMTgsIDE5LCAyMjIsIDEwMiwgMTgsIDE5LCAKKyAgICAyMjIsIDEwMSwgMTgsIDE5LCAyMjIsIDEwOSwgMTgsIDE5LCAyMjYsIDIxNiwgMjI2LCAxMDUsIDE4LCAxOSwgMjI2LCAyMTYsIAorICAgIDIxNywgMTUyLCAxOCwgMTksIDIyNiwgMjE2LCAyMzUsIDIzLCAxOCwgMTksIDIyNiwgMjE2LCAyNTEsIDY2LCAxOCwgMTksIAorICAgIDIyNiwgMjE2LCAxOTMsIDE4LCAxOSwgMjI2LCAyMTYsIDIzMCwgMjUsIDE4LCAxOSwgMjI2LCAyMTYsIDIyMiwgOTEsIDE4LCAKKyAgICAxOSwgMjI2LCAyMTYsIDIyMCwgMTA0LCAxOCwgMTksIDI0NSwgMjE5LCAyMTIsIDk4LCAxOCwgMTksIDIxMiwgNywgMjEyLCAKKyAgICA5OCwgMTgsIDE5LCA0MCwgNCwgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDIyMywgMTU3LCAyNDcsIDEyMCwgMTgsIDE5LCAyMjMsIAorICAgIDIyMywgMjIyLCAxMDYsIDE4LCAxOSwgMTU5LCAyMzIsIDEyNywgMTgsIDE5LCAxNTksIDIzMywgMTM0LCAxOCwgMTksIDIxNiwgCisgICAgMTI2LCAxOCwgMTksIDIxNiwgMTI4LCAxOCwgMTksIDIxNSwgMTM2LCAxOCwgMTksIDIxNSwgMTM4LCAxOCwgMTksIDIxNSwgCisgICAgMTQzLCAxOCwgMTksIDIxNiwgNDksIDE4LCAxOSwgMjE2LCA1MSwgMTgsIDE5LCAyMjEsIDIwOSwgMjE5LCAyMDYsIDE4LCAKKyAgICAxOSwgMjIxLCAyMDksIDIyMCwgMSwgMTgsIDE5LCAyMjEsIDIwOSwgMjQxLCA1MywgMTgsIDE5LCA3MiwgMjQyLCA3MywgMTgsIAorICAgIDE5LCA3MiwgMjQ4LCA1MiwgMjQzLCA1NSwgMTgsIDE5LCA3MiwgMjQzLCAxMzIsIDE4LCAxOSwgNzIsIDI0MiwgNzgsIDE4LCAKKyAgICAxOSwgMjIxLCAyMDksIDIzNSwgMzMsIDE4LCAxOSwgNzIsIDIzNSwgMzEsIDE4LCAxOSwgMjUyLCA2OCwgMjQ4LCA1MiwgCisgICAgMTU2LCAxOCwgMTksIDI1MiwgNjgsIDI0OCwgNTIsIDE1MywgMTgsIDE5LCA3MiwgMjQ4LCA0NywgMjIyLCA5MSwgMjMyLCAKKyAgICAyMjMsIDIxMywgMTIyLCAyMzMsIDEwLCAyMzIsIDIyMywgMSwgMTc2LCAyMzIsIDIyMywgMSwgMjM0LCAxMzIsIDIzMiwgCisgICAgMjIzLCAxLCAyNDMsIDEzNSwgMjMyLCAyMjMsIDEsIDI0MiwgMjQ5LCAyMzIsIDIyMywgMSwgMjI5LCA3NywgMjMyLCAyMjMsIAorICAgIDEsIDI1MSwgMzMsIDIzMiwgMjIzLCAxLCAyNTAsIDE1NywgMjMyLCAyMjMsIDEsIDIzNSwgMTQxLCAyMzIsIDIyMywgMSwgCisgICAgMjM1LCAxMTQsIDIzMiwgMjIzLCAxLCAyMTEsIDcxLCAyMzIsIDIyMywgMSwgMjE3LCAxMDUsIDIzMiwgMjIzLCAxLCAyMTYsIAorICAgIDIwOCwgMjMyLCAyMjMsIDEsIDI0OCwgMjIxLCAyMzIsIDIyMywgMSwgMjQ4LCAyNSwgMjMyLCAyMjMsIDEsIDE5NywgMjMyLCAKKyAgICAyMjMsIDEsIDE5MCwgMjMyLCAyMjMsIDEsIDIyNSwgMTQ3LCAyMzIsIDIyMywgMSwgMjUyLCAxOTEsIDIzMiwgMjIzLCAxLCAKKyAgICAyNTIsIDE4LCAyMzIsIDIyMywgMSwgMTg0LCAyMzIsIDIyMywgMSwgMTkxLCAyMzIsIDIyMywgMSwgMjA1LCAyMzIsIDIyMywgCisgICAgMSwgMjMzLCAxMzUsIDIzMiwgMjIzLCAxLCAyMTIsIDY1LCAyMzIsIDIyMywgMSwgMjIwLCAxMDIsIDIzMiwgMjIzLCAxLCAKKyAgICAyMTgsIDIyMywgMjMyLCAyMjMsIDEsIDIwNiwgMjMyLCAyMjMsIDEsIDE2MiwgMjMyLCAyMjMsIDI1LCA1LCA2MSwgMjMyLCAKKyAgICAyMjMsIDI1LCA1LCA3MywgMjMyLCAyMjMsIDI1LCA1LCA3MCwgMjMyLCAyMjMsIDI1LCA1LCAyNDUsIDIwOSwgMjMyLCAyMjMsIAorICAgIDI1LCA1LCAyNTQsIDIwMSwgMjMyLCAyMjMsIDI1LCA1LCAyMjYsIDE4MywgMjMyLCAyMjMsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMjMyLCAyMjMsIDI1LCA1LCA3NSwgMjMyLCAyMjMsIDI1LCA1LCA3NiwgMjMyLCAyMjMsIDIxOCwgNzMsIDEsIDE5MSwgMjMyLCAKKyAgICAyMjMsIDIxOCwgNzMsIDEsIDIwNSwgMjMyLCAyMjMsIDIxOCwgNzMsIDEsIDIxMiwgNjUsIDIzMiwgMjIzLCA0LCAxLCAxNzYsIAorICAgIDIzMiwgMjIzLCA0LCAxLCAyMjksIDc3LCAyMzIsIDIyMywgNCwgMSwgMjU0LCA3NSwgMjMyLCAyMjMsIDQsIDEsIDIxNywgCisgICAgMTA1LCAyMzIsIDIyMywgNCwgMSwgMTk3LCAyMzIsIDIyMywgNCwgMSwgMTkwLCAyMzIsIDIyMywgNCwgMSwgMTg0LCAyMzIsIAorICAgIDIyMywgNCwgMSwgMjA1LCAyMzIsIDIyMywgNCwgMSwgMjMzLCAxMzUsIDIzMiwgMjIzLCA1LCAyMzAsIDg5LCAyMzIsIDIyMywgCisgICAgNSwgMjM0LCAxNzEsIDIzMiwgMjIzLCA1LCAyMjIsIDMyLCAyMzIsIDIyMywgNSwgMjMyLCAxMjcsIDIzMiwgMjIzLCAyNDUsIAorICAgIDMxLCA3OCwgMjMyLCAyMjMsIDIyNCwgMTMsIDc4LCAyMzIsIDIyMywgMjEsIDIxMCwgODYsIDIzMiwgMjIzLCAyMSwgMTEwLCAKKyAgICAyMzIsIDIyMywgMjEsIDEwNSwgMjMyLCAyMjMsIDIxLCAxNTgsIDIzMiwgMjIzLCAyMSwgMTYxLCAyMzIsIDIyMywgMjEsIAorICAgIDE4OSwgMjMyLCAyMjMsIDIxLCAxOTQsIDIzMiwgMjIzLCAyMSwgMTk4LCAyMzIsIDIyMywgMjEsIDE5NSwgMjMyLCAyMjMsIAorICAgIDIxLCAyMDAsIDM5LCAyMzMsIDU5LCAxLCAxNzYsIDM5LCAyMzMsIDU5LCAxLCAyMTEsIDE2NSwgMzksIDIzMywgNTksIDEsIAorICAgIDIyOSwgNzcsIDM5LCAyMzMsIDU5LCAxLCAyMTUsIDE4MywgMzksIDIzMywgNTksIDEsIDIwNiwgMzksIDIzMywgNTksIDEsIAorICAgIDE5MSwgMzksIDIzMywgNTksIDEsIDIxNywgMTA1LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyMDgsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAyMzMsIDEzNSwgMzksIDIzMywgNTksIDEsIDE5MCwgMzksIDIzMywgNTksIDEsIDIyNSwgMTQ3LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMTg0LCAzOSwgMjMzLCA1OSwgMSwgMjQ0LCAxOTYsIDM5LCAyMzMsIDU5LCAxLCAyMTQsIDI3LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMTYyLCAzOSwgMjMzLCA1OSwgMSwgMjI0LCA4OCwgMzksIDIzMywgNTksIDEsIDIzNCwgMTMyLCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMjE1LCAxNzUsIDM5LCAyMzMsIDU5LCAxLCAxOTcsIDM5LCAyMzMsIDU5LCAxLCA2MSwgMzksIDIzMywgNTksIDEsIDczLCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgMjQ1LCAyMDksIDM5LCAyMzMsIDU5LCAxLCAyNDUsIDE5NywgMzksIDIzMywgNTksIDEsIDcwLCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgMjI2LCAxODMsIDM5LCAyMzMsIDU5LCAxLCA3NiwgMzksIDIzMywgNTksIDEsIDIxNCwgMjE0LCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgNzUsIDM5LCAyMzMsIDU5LCAxLCAyNTMsIDE5MCwgMzksIDIzMywgNTksIDEsIDI1NCwgMjAxLCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyOCwgMzksIDIzMywgNTksIDEsIDIxNiwgMjcsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIAorICAgIDI2LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyNSwgMzksIDIzMywgNTksIDEsIDIxNiwgMjQsIDE2NiwgMzksIDE3MywgMSwgCisgICAgMTI1LCAyMjQsIDg4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI0LCA4OCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE3NiwgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI5LCA3NywgMTY2LCAzOSwgCisgICAgMTczLCAxLCAxMjEsIDE3NiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCisgICAgMjI5LCA3NywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNSwgMTgzLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjA2LCAxNjYsIAorICAgIDM5LCAxNzMsIDEsIDEyNSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE1LCAxODMsIDE2NiwgMzksIDE3MywgMSwgCisgICAgMTIxLCAyMDYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTcsIDEwNSwgMTY2LCAKKyAgICAzOSwgMTczLCAxLCAxMjUsIDIxNiwgMjA4LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTk3LCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyMSwgMjE3LCAxMDUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTYsIDIwOCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5NywgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIyNSwgMTQ3LCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyNSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTkwLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI1LCAxNDcsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyNDQsIDE5NiwgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjUsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMzMsIDEzNSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAorICAgIDI0NCwgMTk2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTM1LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTYyLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjQ4LCAyMjEsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTI1LCAyNTIsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0OCwgCisgICAgMjIxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjUyLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMzMsIDE4NCwgMTY2LCAKKyAgICAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTM4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxODQsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTIxLCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxOCwgODIsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKKyAgICAyMTgsIDgyLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNSwgMjE5LCAyMzksIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgNzMsIAorICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDIzNiwgMzMsIDE2NiwgMzksIDE3MywgMjUsIDUsIDcwLCAxNjYsIDM5LCAxNzMsIDI1LCAKKyAgICA1LCAyMTQsIDExOCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgNzUsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NCwgMjQzLCAxNjYsIAorICAgIDM5LCAxNzMsIDI1LCA1LCA3NiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI3LCAwLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAKKyAgICAyMTQsIDIxNCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjUzLCAxNjcsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgMjgsIAorICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMTExLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjYsIDEwOSwgMTY2LCAzOSwgCisgICAgMTczLCAyNSwgNSwgMjI2LCAyNTMsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMjEwLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAKKyAgICAyMzUsIDE1MiwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjE0LCAxMDUsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIyOSwgNzksIAorICAgIDE2NiwgMzksIDE3MywgMSwgNDAsIDIzMCwgMjUsIDE2NiwgMzksIDE3MywgMSwgNDAsIDE5MywgMTY2LCAzOSwgMTczLCAxLCAKKyAgICA0MCwgMjM1LCAyMywgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjQ5LCA2MCwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjUzLCAxNTgsIAorICAgIDE2NiwgMzksIDE3MywgMTM4LCAyMzEsIDE1OCwgMTY2LCAzOSwgMTczLCAxMzgsIDIzMSwgMTU3LCAxNjYsIDM5LCAxNzMsIAorICAgIDIxLCAyMTAsIDg2LCAxNjYsIDM5LCAxNzMsIDIxLCAxMTAsIDE2NiwgMzksIDE3MywgMjEsIDEwNSwgMTY2LCAzOSwgMTczLCAKKyAgICAyMSwgMTU4LCAxNjYsIDM5LCAxNzMsIDIxLCAxNjEsIDE2NiwgMzksIDE3MywgMjEsIDE4OSwgMTY2LCAzOSwgMTczLCAyMSwgCisgICAgMTk0LCAxNjYsIDM5LCAxNzMsIDIxLCAxOTgsIDE2NiwgMzksIDE3MywgMjEsIDE5NSwgMTY2LCAzOSwgMTczLCAyMSwgMjAwLCAKKyAgICAxNjYsIDM5LCAxNzMsIDg5LCAyMSwgMTEwLCAxNjYsIDM5LCAxNzMsIDUsIDIzMywgMTIwLCAxNjYsIDM5LCAxNzMsIDUsIAorICAgIDIzMywgMTE5LCA2OSwgMTYsIDIyNSwgMjM2LCA2OSwgMTYsIDIzMCwgNzIsIDIzNCwgMjUsIDY5LCAxNiwgMjI1LCA3MiwgCisgICAgMjM0LCAyNSwgNjksIDE2LCAyNTIsIDUwLCAyMzQsIDI1LCA2OSwgMTYsIDI1MSwgMTA0LCAyMzQsIDI1LCA2OSwgMTYsIAorICAgIDIyNCwgMjE2LCAyMzQsIDI1LCA2OSwgMTYsIDIyNCwgMjEwLCAyMzQsIDI1LCA2OSwgMTYsIDIyNCwgMjA4LCAyMzQsIDI1LCAKKyAgICA2OSwgMTYsIDIyNCwgMjE0LCAyMzQsIDI1LCA2OSwgMTYsIDIyNCwgMjEyLCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTczLCAKKyAgICAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTY5LCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTY4LCAyMzQsIDI1LCA2OSwgMTYsIAorICAgIDI0OCwgMTcxLCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTcwLCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTY3LCAyMzQsIDI1LCAKKyAgICA2OSwgMTYsIDIxNSwgODcsIDY5LCAxNiwgMjMwLCA3MiwgMjIyLCAyMDUsIDY5LCAxNiwgMjI1LCA3MiwgMjIyLCAyMDUsIAorICAgIDY5LCAxNiwgMjUyLCA1MCwgMjIyLCAyMDUsIDY5LCAxNiwgMjUxLCAxMDQsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjE2LCAKKyAgICAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIxMCwgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMDgsIDIyMiwgMjA1LCA2OSwgMTYsIAorICAgIDIyNCwgMjE0LCAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIxMiwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNzMsIDIyMiwgCisgICAgMjA1LCA2OSwgMTYsIDI0OCwgMTY5LCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE2OCwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAKKyAgICAxNzEsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTcwLCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE2NywgMjIyLCAyMDUsIAorICAgIDI1MSwgMTIxLCAxLCAxNzYsIDI1MSwgMTIxLCAxLCAyNDMsIDEzNSwgMjUxLCAxMjEsIDEsIDIyOSwgNzcsIDI1MSwgMTIxLCAKKyAgICAxLCAyMjksIDIyLCAyNTEsIDEyMSwgMSwgMTkwLCAyNTEsIDEyMSwgMSwgMjUyLCAxOTEsIDI1MSwgMTIxLCAxLCAxODQsIAorICAgIDI1MSwgMTIxLCAxLCAyMzAsIDEwNSwgMjUxLCAxMjEsIDEsIDIxNywgMTA1LCAyNTEsIDEyMSwgMSwgMjQ4LCAyMjEsIDI1MSwgCisgICAgMTIxLCAxLCAxOTcsIDI1MSwgMTIxLCAxLCAyMjgsIDM2LCAyNTEsIDEyMSwgMSwgMjUxLCAzMywgMjUxLCAxMjEsIDEsIAorICAgIDIzNSwgMTQxLCAyNTEsIDEyMSwgMSwgMjI3LCAxNjUsIDI1MSwgMTIxLCAxLCAyMjcsIDE1OCwgMjUxLCAxMjEsIDEsIDE5MSwgCisgICAgMjUxLCAxMjEsIDEsIDIwNSwgMjUxLCAxMjEsIDEsIDIzMywgMTM1LCAyNTEsIDEyMSwgMSwgMjE0LCAyNywgMjUxLCAxMjEsIAorICAgIDEsIDIwNiwgMjUxLCAxMjEsIDEsIDYxLCAyNTEsIDEyMSwgMSwgMTYyLCAyNTEsIDEyMSwgMjUsIDUsIDczLCAyNTEsIDEyMSwgCisgICAgMjUsIDUsIDcwLCAyNTEsIDEyMSwgMjUsIDUsIDc1LCAyNTEsIDEyMSwgMjUsIDUsIDc2LCAyNTEsIDEyMSwgMjUsIDUsIAorICAgIDI1NCwgMjQzLCAyNTEsIDEyMSwgMjI2LCA2MCwgMjUxLCAxMjEsIDI0NSwgMTQzLCA2NCwgMjIxLCAxNzIsIDM5LCA4OSwgMSwgCisgICAgMTI1LCAxNzYsIDM5LCA4OSwgMSwgMTI1LCAyMzQsIDEzMiwgMzksIDg5LCAxLCAxMjUsIDIzMywgMTcxLCAzOSwgODksIDEsIAorICAgIDEyMSwgMTc2LCAzOSwgODksIDEsIDEyMSwgMjMzLCAxNzEsIDM5LCA4OSwgMSwgMTIxLCAyMzQsIDEzMiwgMzksIDg5LCAxLCAKKyAgICAyMjksIDc3LCAzOSwgODksIDEsIDEyNSwgMjUxLCAzMywgMzksIDg5LCAxLCAxMjUsIDI1MCwgMTU3LCAzOSwgODksIDEsIAorICAgIDEyMSwgMjUxLCAzMywgMzksIDg5LCAxLCAxMjEsIDIwNiwgMzksIDg5LCAxLCAxMjEsIDI1MCwgMTU3LCAzOSwgODksIDEsIAorICAgIDIyNywgMTY1LCAzOSwgODksIDEsIDIyMywgMTQwLCAzOSwgODksIDEsIDEyNSwgMjIzLCAxMzgsIDM5LCA4OSwgMSwgMjQ4LCAKKyAgICAyMjEsIDM5LCA4OSwgMSwgMTIxLCAyMjMsIDEzOCwgMzksIDg5LCAxLCAyMjMsIDE0OSwgMzksIDg5LCAxLCAxMjUsIDIxNywgCisgICAgMTA1LCAzOSwgODksIDEsIDEyNSwgMjE2LCAyMDgsIDM5LCA4OSwgMSwgMTIxLCAyMTcsIDEwNSwgMzksIDg5LCAxLCAxMjEsIAorICAgIDIxNiwgMjA4LCAzOSwgODksIDEsIDE5NywgMzksIDg5LCAxLCAyNTIsIDE5MSwgMzksIDg5LCAxLCAxMjUsIDE5MCwgMzksIAorICAgIDg5LCAxLCAxMjUsIDIyNSwgMTQ3LCAzOSwgODksIDEsIDEyNSwgMjQ0LCAxOTYsIDM5LCA4OSwgMSwgMTIxLCAxOTAsIDM5LCAKKyAgICA4OSwgMSwgMTIxLCAyNDQsIDE5NiwgMzksIDg5LCAxLCAxMjEsIDIyNSwgMTQ3LCAzOSwgODksIDEsIDE4NCwgMzksIDg5LCAKKyAgICAxLCAxMjEsIDE5MSwgMzksIDg5LCAxLCAxMjUsIDE5MSwgMzksIDg5LCAxLCAyMDUsIDM5LCA4OSwgMSwgMjIyLCAxMzcsIAorICAgIDM5LCA4OSwgMSwgMjMzLCAxMzUsIDM5LCA4OSwgMSwgMjMyLCA5MywgMzksIDg5LCAxLCAyMTIsIDY1LCAzOSwgODksIDEsIAorICAgIDEyNSwgMjIwLCAxMDIsIDM5LCA4OSwgMSwgMTI1LCAyMTgsIDIyMywgMzksIDg5LCAxLCAxMjUsIDIwNiwgMzksIDg5LCAxLCAKKyAgICAxMjUsIDE2MiwgMzksIDg5LCAxLCAyMzIsIDE4NCwgMzksIDg5LCAxLCA2MSwgMzksIDg5LCAxLCAxMjEsIDE2MiwgMzksIAorICAgIDg5LCAxLCA3MywgMzksIDg5LCAxLCAyMzYsIDMzLCAzOSwgODksIDEsIDcwLCAzOSwgODksIDEsIDIxNCwgMTE4LCAzOSwgCisgICAgODksIDEsIDI0NSwgMjA5LCAzOSwgODksIDEsIDIyNiwgMTgzLCAzOSwgODksIDEsIDIzMywgMTIwLCAzOSwgODksIDEsIAorICAgIDI0MiwgMTMyLCAyMDYsIDM5LCA4OSwgMTE2LCA1LCAxNDcsIDIwNSwgMzksIDg5LCAxMTYsIDUsIDE0NywgMjMzLCAxMzUsIAorICAgIDM5LCA4OSwgMTE2LCA1LCAyMzMsIDEzNiwgMjE3LCA1OCwgMjMzLCAxMDksIDM5LCA4OSwgNSwgMjMxLCAyMDQsIDIzNCwgCisgICAgMjMxLCAyMzMsIDEwOSwgMzksIDg5LCAxMTYsIDUsIDQwLCAyMjksIDc3LCAzOSwgODksIDExNiwgNSwgMTIxLCAxOTAsIDM5LCAKKyAgICA4OSwgMTE2LCA1LCAxMjUsIDIyMywgMTM5LCAxNzcsIDEyMSwgMTkwLCAzOSwgODksIDExNiwgNSwgMTg0LCAzOSwgODksIAorICAgIDExNiwgNSwgMjUyLCAxOTEsIDM5LCA4OSwgMTE2LCA1LCAyMDYsIDM5LCA4OSwgNSwgMjIyLCAxMCwgMzksIDg5LCAyNSwgNSwgCisgICAgNjEsIDM5LCA4OSwgMjUsIDUsIDIzMSwgMjA0LCAyMjEsIDIyNiwgMzksIDg5LCAyNSwgNSwgMjU1LCA3MywgMzksIDg5LCAKKyAgICAyNSwgNSwgMjE3LCA2NCwgMjU1LCA3MywgMzksIDg5LCAyNSwgNSwgNzMsIDM5LCA4OSwgMjUsIDUsIDIzNiwgMzMsIDM5LCAKKyAgICA4OSwgMjUsIDUsIDIxNCwgMjE0LCAzOSwgODksIDI1LCA1LCAyMTQsIDExNywgMzksIDg5LCAyNSwgNSwgNzAsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIxNCwgMTE4LCAzOSwgODksIDI1LCA1LCA3NiwgMzksIDg5LCAyNSwgNSwgMjI3LCAxLCA1MSwgMzksIDg5LCAKKyAgICAyNSwgNSwgMjI2LCAxMDksIDM5LCA4OSwgMjUsIDUsIDc1LCAzOSwgODksIDI1LCA1LCAyNTQsIDI0MywgMzksIDg5LCAyNSwgCisgICAgNSwgMjI2LCAxODMsIDM5LCA4OSwgMjUsIDUsIDI1NCwgMjAxLCAzOSwgODksIDI1LCA1LCA4OSwgMjU0LCAyMDEsIDM5LCAKKyAgICA4OSwgMjUsIDUsIDIyNywgMSwgNDgsIDM5LCA4OSwgNSwgMjMxLCAyMDQsIDIzNCwgMjMwLCAzOSwgODksIDUsIDIxNiwgMjksIAorICAgIDM5LCA4OSwgNSwgMjE2LCAyOCwgMzksIDg5LCA1LCAyMzQsIDk3LCAyMTYsIDI3LCAzOSwgODksIDUsIDIzNCwgOTcsIDIxNiwgCisgICAgMjYsIDM5LCA4OSwgNSwgMjM0LCA5NywgMjE2LCAyNSwgMzksIDg5LCA1LCAyMjMsIDE4OCwgMjQyLCA0NSwgMzksIDg5LCA1LCAKKyAgICAyMzEsIDIwNCwgMjIxLCAyNTMsIDM5LCA4OSwgNSwgMjM0LCA5NiwgMjM0LCAyMTUsIDM5LCA4OSwgMzgsIDI0OSwgMTE1LCAKKyAgICAyNDcsIDEyMCwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMjEwLCA4NiwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTEwLCAzOSwgODksIAorICAgIDI0MSwgNDYsIDIxLCAxMDUsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE1OCwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTYxLCAzOSwgCisgICAgODksIDI0MSwgNDYsIDIxLCAxODksIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE5NCwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTk4LCAKKyAgICAzOSwgODksIDI0MSwgNDYsIDIxLCAxOTUsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDIwMCwgMzksIDg5LCA4OSwgMjEsIDIxMCwgCisgICAgODYsIDM5LCA4OSwgODksIDIxLCAxMTAsIDM5LCA4OSwgODksIDIxLCAxMDUsIDM5LCA4OSwgODksIDIxLCAxNTgsIDM5LCAKKyAgICA4OSwgODksIDIxLCAxNjEsIDM5LCA4OSwgODksIDIxLCAxODksIDM5LCA4OSwgODksIDIxLCAxOTQsIDM5LCA4OSwgODksIAorICAgIDIxLCAxOTgsIDM5LCA4OSwgODksIDIxLCAxOTUsIDM5LCA4OSwgODksIDIxLCAyMDAsIDM5LCA4OSwgNSwgMjExLCAyNDksIAorICAgIDM5LCA4OSwgNSwgMjExLCAyNDgsIDM5LCA4OSwgNSwgMjIxLCAyMTUsIDM5LCA4OSwgNSwgMjM0LCAxNjAsIDM5LCA4OSwgNSwgCisgICAgMjQwLCAyMzIsIDM5LCA4OSwgNSwgMjQ3LCAxMzQsIDM5LCA4OSwgNSwgMjIzLCA0OSwgMjIyLCAxODcsIDIyMywgMTQ5LCAKKyAgICAzOSwgODksIDUsIDIzMSwgMjA0LCAyMTEsIDcyLCAzOSwgODksIDUsIDIzNSwgNiwgMzksIDg5LCA1LCAyMzUsIDUsIDM5LCAKKyAgICA4OSwgNSwgMjIxLCAyMjIsIDM5LCA4OSwgNSwgMjIxLCAyMjEsIDM5LCA4OSwgNSwgMjQyLCA5LCAzOSwgODksIDUsIDI1MSwgCisgICAgMzAsIDEwMiwgNSwgMjE0LCAyMDAsIDIyMywgMzAsIDEwMiwgNSwgMjE0LCAyMDAsIDI1MSwgMSwgMTAyLCA1LCAyNTAsIAorICAgIDE4NiwgMTAyLCA1LCAyMTgsIDE1LCAxMDIsIDUsIDI1MSwgMjMzLCAxMDIsIDEsIDI1NCwgMTg0LCAxMDIsIDEsIDI1NCwgCisgICAgMTg1LCAyMTcsIDEzLCAxMDIsIDEsIDIzNiwgMjksIDEwMiwgMSwgMjM2LCAzMCwgMjE3LCAxMywgMTAyLCAxLCAyMTQsIAorICAgIDIwMywgMTAyLCAxLCAyMTQsIDIwNCwgMjE3LCAxMywgMTAyLCAxLCAyMjMsIDE4OCwgMjIzLCA3OSwgMTAyLCAxLCAyMjMsIAorICAgIDE4OCwgMjIzLCA4MCwgMjE3LCAxMywgMTAyLCAxLCAyMzMsIDEzNiwgMjMzLCAyNCwgMTAyLCAxLCAyMzMsIDEzNiwgMjMzLCAKKyAgICAyNSwgMjE3LCAxMywgMTAyLCAxLCAyNDUsIDE3OSwgMTAyLCAxLCAyNTQsIDE5OSwgMTAyLCAxLCAyMjYsIDIxMiwgMTAyLCAKKyAgICAxLCAyMjYsIDIxMywgMjE3LCAxMywgMTAyLCAxLCAxNzYsIDEwMiwgMSwgMjM1LCAxMywgMjMxLCAyMDcsIDEwMiwgMSwgCisgICAgMjQzLCAxMzUsIDEwMiwgMSwgMjQzLCAxMzYsIDI0MiwgMTYxLCAxMDIsIDEsIDIyOSwgNzcsIDEwMiwgMSwgMjUxLCAzMywgCisgICAgMTAyLCAxLCAyNTEsIDM0LCAyMzMsIDEyMywgMTAyLCAxLCAyMzUsIDE0MSwgMTAyLCAxLCAyMzUsIDE0MiwgMjM1LCAxMTgsIAorICAgIDEwMiwgMSwgMjI3LCAxNjUsIDEwMiwgMSwgMjE3LCAxMDYsIDIzMywgNzYsIDEwMiwgMSwgMjE3LCAxMDYsIDIzMCwgNjcsIAorICAgIDIzMSwgMjA3LCAxMDIsIDEsIDI0OCwgMjIyLCAyMzAsIDY3LCAyNTQsIDE0NSwgMTAyLCAxLCAyNDgsIDIyMiwgMjMwLCA2NywgCisgICAgMjMxLCAyMDcsIDEwMiwgMSwgMjI5LCAyMjksIDIyMywgMTUyLCAxMDIsIDEsIDIxNywgMTA1LCAxMDIsIDEsIDIxNywgMTA2LCAKKyAgICAyMTcsIDM1LCAxMDIsIDEsIDI0OCwgMjIxLCAxMDIsIDEsIDI0OCwgMjIyLCAyMzEsIDIyNSwgMTAyLCAxLCAxOTcsIDEwMiwgCisgICAgMSwgMTkwLCAxMDIsIDEsIDIyNiwgOTAsIDIzNCwgMjI2LCAxMDIsIDEsIDI1MiwgMTkxLCAxMDIsIDEsIDI1MiwgMTkyLCAKKyAgICAyMzQsIDE3MiwgMTAyLCAxLCAxODQsIDEwMiwgMSwgMTkxLCAxMDIsIDEsIDIwNSwgMTAyLCAxLCAyMzMsIDEzNSwgMTAyLCAKKyAgICAxLCAyMTIsIDY1LCAxMDIsIDEsIDIyMiwgMzQsIDIyMiwgMjAsIDEwMiwgMSwgMjIyLCAzNCwgMjIxLCAyMzMsIDEwMiwgMSwgCisgICAgMjA2LCAxMDIsIDEsIDE2MiwgMTAyLCA1LCAyMjMsIDcwLCAxMDIsIDI1LCA1LCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMTQsIAorICAgIDE5OSwgMTAyLCAyNSwgNSwgMjE0LCAyMDAsIDIyMSwgMjI5LCAxMDIsIDI1LCA1LCAyMTgsIDQ3LCAxMDIsIDI1LCA1LCAKKyAgICAyMTgsIDQ4LCAyMzYsIDIxLCAxMDIsIDI1LCA1LCAyMjMsIDE4OCwgMjIzLCA3OSwgMTAyLCAyNSwgNSwgMjIzLCAxODgsIAorICAgIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIzMywgMTM2LCAyMzMsIDI0LCAxMDIsIDI1LCA1LCAyMzMsIDEzNiwgCisgICAgMjMzLCAyNSwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjE3LCA2NSwgMTAyLCAyNSwgNSwgMjE3LCA2NiwgMjIzLCA3OSwgMTAyLCAKKyAgICAyNSwgNSwgMjE3LCA2NiwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjE3LCA2NiwgMjIzLCA4MCwgMjE3LCAxMywgMTAyLCAyNSwgCisgICAgNSwgMjI1LCAxODQsIDEwMiwgMjUsIDUsIDIyNSwgMTg1LCAyMTcsIDEzLCAxMDIsIDI1NCwgMjUwLCAyNTQsIDI0OSwgMTAyLCAKKyAgICAxLCAyMzQsIDI1MSwgMjIxLCAyMjgsIDEwMiwgMSwgMjM0LCAxMDIsIDIyMSwgMjI4LCAxMDIsIDEsIDIxNSwgMzQsIDIyMSwgCisgICAgMjI4LCAxMDIsIDEsIDI0NSwgMjAzLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTQsIDAsIDIyMSwgMjI4LCAxMDIsIDEsIDIxMCwgCisgICAgMTA3LCAyMjEsIDIyOCwgMTAyLCAxLCAyNTMsIDIwOSwgMjIxLCAyMjgsIDEwMiwgMjEsIDIxMCwgODYsIDEwMiwgMjEsIAorICAgIDExMCwgMTAyLCAyMSwgMTA1LCAxMDIsIDIxLCAxNTgsIDEwMiwgMjEsIDE2MSwgMTAyLCAyMSwgMTg5LCAxMDIsIDIxLCAKKyAgICAxOTQsIDEwMiwgMjEsIDE5OCwgMTAyLCAyMSwgMTk1LCAxMDIsIDIxLCAyMDAsIDEwMiwgMjI2LCAyOSwgMTAyLCAyMjYsIAorICAgIDU1LCAxMDIsIDIxMSwgMjM4LCAxMDIsIDI1MCwgMjM2LCAyMjYsIDQ4LCAxMDIsIDI1MCwgMjM2LCAyMTksIDE3MiwgMTAyLCAKKyAgICAyNTAsIDIzNiwgMjI2LCAyLCAxMDIsIDIyNiwgNTQsIDEwMiwgMjgsIDE2LCAyNDcsIDEyNiwgMTAyLCAyOCwgMTYsIDI0OCwgCisgICAgNTEsIDEwMiwgMjgsIDE2LCAyNDYsIDY0LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzYsIDEwMiwgMjgsIDE2LCAyNDgsIDE3NywgCisgICAgMjE4LCAxNSwgMTAyLCAyOCwgMTYsIDI0NywgMjA1LCAxMDIsIDI4LCAxNiwgMjQ4LCAyMTQsIDEwMiwgMjgsIDE2LCAyNDgsIAorICAgIDMzLCAxMDIsIDI4LCAxNiwgMjQ4LCAxOTgsIDEwMiwgMjgsIDE2LCAyNDgsIDE3NywgMjQzLCA1NywgMTAyLCAyOCwgMTYsIAorICAgIDM4LCAyMTcsIDksIDEwMiwgMjgsIDE2LCAzOCwgMjQ1LCAxNDEsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNjcsIDEwMiwgCisgICAgMjgsIDE2LCAzOCwgMjM0LCAxNjksIDEwMiwgMjgsIDE2LCAzOCwgMjM1LCAxMjIsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAKKyAgICAxNjgsIDIsIDIzNSwgMTIyLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTcwLCAyLCAyMzUsIDEyMiwgMTAyLCAyOCwgMTYsIAorICAgIDM4LCAyNTIsIDM3LCAxMDIsIDI4LCAxNiwgMzgsIDI0MiwgMTY1LCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDIwNCwgMjQ2LCAKKyAgICA3NCwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyMDQsIDI0OCwgMjEyLCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDI1MCwgMCwgCisgICAgMjE1LCAxMTEsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjUwLCAwLCAyMTcsIDczLCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgCisgICAgMjA0LCAyMjYsIDQzLCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgMjA0LCAyMjQsIDEzOSwgMTAyLCAyOCwgMTYsIDIzMywgNDQsIAorICAgIDI1MCwgMCwgMjI1LCAzOCwgMTAyLCAyOCwgMTYsIDIzMywgNDQsIDI1MCwgMCwgMjI1LCAyNiwgMTAyLCAyOCwgMTYsIDIzMywgCisgICAgNDQsIDIwNCwgMjI1LCA2MSwgMjA3LCA1LCAyMjYsIDI2LCAyMDcsIDUsIDIyNiwgMzksIDIwNywgNSwgMjI2LCAzNSwgMjA3LCAKKyAgICAxLCA2MSwgMjA3LCAxLCA3MywgMjA3LCAxLCA3MCwgMjA3LCAxLCAyNTQsIDI0MywgMjA3LCAxLCA3NiwgMjA3LCAxLCA3NSwgCisgICAgMjA3LCAxLCAyNDUsIDU1LCAyMDcsIDEsIDE3NiwgMjA3LCAxLCAyMjQsIDg4LCAyMDcsIDEsIDI0MywgMTM1LCAyMDcsIDEsIAorICAgIDIyOSwgNzcsIDIwNywgMSwgMjUxLCAzMywgMjA3LCAxLCAyMzUsIDE0MSwgMjA3LCAxLCAyMTAsIDExNiwgMjA3LCAxLCAKKyAgICAyMjcsIDE2NSwgMjA3LCAxLCAyMTcsIDEwNSwgMjA3LCAxLCAyNDgsIDIyMSwgMjA3LCAxLCAxOTcsIDIwNywgMSwgMTkwLCAKKyAgICAyMDcsIDEsIDI0NCwgMTk2LCAyMDcsIDEsIDIxNCwgMjcsIDIwNywgMSwgMjUyLCAxOTEsIDIwNywgMSwgMTg0LCAyMDcsIDEsIAorICAgIDE5MSwgMjA3LCAxLCAyMDUsIDIwNywgMSwgMjMzLCAxMzUsIDIwNywgMSwgMjEyLCA2NSwgMjA3LCAxLCAyMDYsIDIwNywgMSwgCisgICAgMjExLCAxNjUsIDIwNywgMSwgMTYyLCAyMDcsIDExNiwgNSwgMjI2LCA1MiwgMjA3LCAxMTYsIDUsIDIyNiwgMjgsIDIwNywgCisgICAgMTE2LCA1LCAyMjYsIDI1LCAyMDcsIDI1LCA1LCAyMjYsIDQyLCAyMDcsIDI1LCA1LCAyMjYsIDI0LCAyMDcsIDI1LCA1LCAKKyAgICAyMjYsIDQ2LCAyMDcsIDI1LCA1LCAyMjYsIDM0LCAyMDcsIDI1LCA1LCAyMjYsIDUzLCAyMDcsIDI1LCA1LCAyMjYsIDQ0LCAKKyAgICAyMDcsIDUsIDIyNiwgNTYsIDIwNywgNSwgMjEzLCAxNTIsIDIwNywgMTE2LCA1LCAyMjUsIDI0OCwgMTg0LCAyMDcsIDExNiwgCisgICAgNSwgMjI1LCAyNDgsIDIxMiwgNjUsIDIwNywgMSwgMjM0LCAxMzIsIDIwNywgMSwgMjE3LCAyMzEsIDIwNywgMjEsIDIxMCwgCisgICAgODYsIDIwNywgMjEsIDExMCwgMjA3LCAyMSwgMTA1LCAyMDcsIDIxLCAxNTgsIDIwNywgMjEsIDE2MSwgMjA3LCAyMSwgMTg5LCAKKyAgICAyMDcsIDIxLCAxOTQsIDIwNywgMjEsIDE5OCwgMjA3LCAyMSwgMTk1LCAyMDcsIDIxLCAyMDAsIDIwNywgMjUzLCAxNzUsIAorICAgIDIwNywgMSwgMjIzLCA1MiwgMjA3LCAxLCAyMzMsIDcsIDIwNywgMSwgMjUyLCAxOCwgMjA3LCAxLCA0MCwgMjM1LCAyMywgCisgICAgMjA3LCAxLCA0MCwgMTkzLCAyNTIsIDEyMCwgMSwgNjEsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgNjEsIDI1MiwgMTIwLCAxLCAKKyAgICAxNjIsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMTYyLCAyNTIsIDEyMCwgMSwgMjMxLCAxODEsIDE2MiwgMjUyLCAxMjAsIDEsIAorICAgIDI1MiwgMTkxLCAyNTIsIDEyMCwgMSwgMjM0LCAyMTIsIDI1MiwgMTkxLCAyNTIsIDEyMCwgMSwgMTkwLCAyNTIsIDEyMCwgMSwgCisgICAgMjE5LCAxNjQsIDE5MCwgMjUyLCAxMjAsIDEsIDE5NywgMjUyLCAxMjAsIDEsIDIzMSwgMTgxLCAxOTcsIDI1MiwgMTIwLCAxLCAKKyAgICAyMTIsIDY1LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDIxMiwgNjUsIDI1MiwgMTIwLCAxLCAyMjYsIDY3LCAyMTIsIDY1LCAKKyAgICAyNTIsIDEyMCwgMSwgMjQzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMjQzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMzUsIAorICAgIDE0MSwgMjUyLCAxMjAsIDEsIDI0OCwgMjIxLCAyNTIsIDEyMCwgMSwgMjA1LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDIwNSwgCisgICAgMjUyLCAxMjAsIDEsIDE4NCwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAxODQsIDI1MiwgMTIwLCAxLCAyMTksIDI2LCAyMTcsIAorICAgIDEwNSwgMjUyLCAxMjAsIDEsIDIyOCwgNTUsIDIxNywgMTA1LCAyNTIsIDEyMCwgMSwgMjA2LCAyNTIsIDEyMCwgMSwgMjE5LCAKKyAgICAxNjQsIDIwNiwgMjUyLCAxMjAsIDEsIDIzMSwgMTgxLCAyMDYsIDI1MiwgMTIwLCAxLCAxOTEsIDI1MiwgMTIwLCAxLCAyMTksIAorICAgIDE2NCwgMTkxLCAyNTIsIDEyMCwgMSwgMjI5LCA3NywgMjUyLCAxMjAsIDEsIDIzMywgMTM1LCAyNTIsIDEyMCwgMSwgMjE5LCAKKyAgICAxNjQsIDIzMywgMTM1LCAyNTIsIDEyMCwgMSwgMjI3LCAxNjUsIDI1MiwgMTIwLCAxLCAyNTEsIDMzLCAyNTIsIDEyMCwgMSwgCisgICAgMjI5LCAxNDgsIDI1MiwgMTIwLCAxLCAyMzEsIDEyNCwgMjUyLCAxMjAsIDEsIDczLCAyNTIsIDEyMCwgMSwgNzAsIDI1MiwgCisgICAgMTIwLCA1LCAyMTYsIDMzLCAyNTIsIDEyMCwgMjUsIDUsIDc1LCAyNTIsIDEyMCwgMjUsIDUsIDIyNiwgNjcsIDc1LCAyNTIsIAorICAgIDEyMCwgMjUsIDUsIDI0NSwgMjA5LCAyNTIsIDEyMCwgMjUsIDUsIDczLCAyNTIsIDEyMCwgMjUsIDUsIDIzNCwgMjEyLCA3MywgCisgICAgMjUyLCAxMjAsIDI1LCA1LCA3NiwgMjUyLCAxMjAsIDI1LCA1LCAyMzQsIDIxMiwgNzYsIDI1MiwgMTIwLCAyNSwgNSwgNzAsIAorICAgIDI1MiwgMTIwLCAyNSwgNSwgMTA0LCAzMSwgMjE5LCAxNjQsIDIwNiwgMjUyLCAxMjAsIDExNiwgNSwgMjI5LCA3OSwgMjUyLCAKKyAgICAxMjAsIDExNiwgNSwgMjQyLCA2MCwgMjUyLCAxMjAsIDIyNiwgMzcsIDI1MiwgMTIwLCAyMjYsIDMzLCAyNTIsIDEyMCwgMTYsIAorICAgIDI1MSwgMjQxLCAyMjksIDIyOSwgMjMxLCAzNywgMjUyLCAxMjAsIDE2LCAyNTEsIDI0MSwgMjI1LCA2NCwgMjUyLCAxMjAsIAorICAgIDE2LCAyNTEsIDI0MSwgMjM1LCA0OCwgMjUyLCAxMjAsIDE2LCAyNTEsIDI0MSwgMjI2LCAzNywgMTk2LCAxLCAxNzYsIDE5NiwgCisgICAgMSwgMjM0LCAzOSwgMTk2LCAxLCAyMzQsIDEzMiwgMTk2LCAxLCAyNDMsIDEzNSwgMTk2LCAxLCAyNDIsIDE4NiwgMTk2LCAxLCAKKyAgICAyMjksIDc3LCAxOTYsIDEsIDI1MSwgMzMsIDE5NiwgMSwgMjUwLCAxNTcsIDE5NiwgMSwgMjM1LCAxNDEsIDE5NiwgMSwgCisgICAgMjI3LCAxNjUsIDE5NiwgMSwgMjE3LCAxMDUsIDE5NiwgMSwgMjE2LCAyMDgsIDE5NiwgMSwgMjQ4LCAyMjEsIDE5NiwgMSwgCisgICAgMTk3LCAxOTYsIDEsIDE5MCwgMTk2LCAxLCAyMjUsIDQyLCAxOTYsIDEsIDIyNSwgMTQ3LCAxOTYsIDEsIDI0NCwgMTk2LCAKKyAgICAxOTYsIDEsIDI0NCwgNzUsIDE5NiwgMSwgMjUyLCAxOTEsIDE5NiwgMSwgMjUxLCAyMjIsIDE5NiwgMSwgMTg0LCAxOTYsIDEsIAorICAgIDIzMCwgMTY4LCAxOTYsIDEsIDIxNSwgMTgzLCAxOTYsIDEsIDIxNSwgMTc1LCAxOTYsIDEsIDI0NiwgMzgsIDE5NiwgMSwgCisgICAgMTkxLCAxOTYsIDEsIDIwNSwgMTk2LCAxLCAyMzMsIDEzNSwgMTk2LCAxLCAxNjIsIDE5NiwgMSwgMjQxLCAxNTMsIDE5NiwgCisgICAgMSwgMjE0LCAyNywgMTk2LCAxLCAyMDYsIDE5NiwgMSwgMjIwLCAxMDIsIDE5NiwgMSwgMjEyLCA2NSwgMTk2LCAxLCA2MSwgCisgICAgMTk2LCAyMTgsIDczLCAxLCAxOTEsIDE5NiwgMjE4LCA3MywgMSwgMjA1LCAxOTYsIDI1LCA1LCAyNTUsIDczLCAxOTYsIDI1LCAKKyAgICA1LCA3MywgMTk2LCAyNSwgNSwgNzYsIDE5NiwgMjUsIDUsIDIyNiwgMTgzLCAxOTYsIDI1LCA1LCA3MCwgMTk2LCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDE5NiwgMjUsIDUsIDc1LCAxOTYsIDExNiwgNSwgMjM1LCAyMywgMTk2LCAxMTYsIDUsIDE5MywgMTk2LCAKKyAgICAxMTYsIDUsIDE1NiwgMTk2LCAxMTYsIDUsIDIzMCwgMjUsIDE5NiwgMTE2LCA1LCAyMjYsIDEwNSwgMTk2LCAxMTYsIDUsIAorICAgIDE1MywgMTk2LCAxMTYsIDUsIDIxNywgMTUyLCAxOTYsIDExNiwgNSwgMjI3LCAxNDIsIDE5NiwgMTE2LCA1LCAyMzQsIDIzMCwgCisgICAgMTk2LCA1LCAyMjMsIDE1MCwgMTk2LCA1LCAyMjcsIDIwNSwgMTk2LCAyMjQsIDE0MSwgMjE3LCAxMDMsIDE5NiwgMjI0LCAKKyAgICAxNDEsIDIyNywgMTUyLCAyMTYsIDEyMCwgMjE3LCAxMDMsIDE5NiwgMjI0LCAxNDEsIDI1MCwgMTY0LCAxOTYsIDIyNCwgCisgICAgMTQxLCAyMTUsIDE3MCwgMjUwLCAxNjQsIDE5NiwgMjI0LCAxNDEsIDIxNSwgMTY5LCAxOTYsIDIxLCAyMTAsIDg2LCAxOTYsIAorICAgIDIxLCAxMTAsIDE5NiwgMjEsIDEwNSwgMTk2LCAyMSwgMTU4LCAxOTYsIDIxLCAxNjEsIDE5NiwgMjEsIDE4OSwgMTk2LCAyMSwgCisgICAgMTk0LCAxOTYsIDIxLCAxOTgsIDE5NiwgMjEsIDE5NSwgMTk2LCAyMSwgMjAwLCAxOTYsIDEsIDIxNSwgMTU2LCAxOTYsIDEsIAorICAgIDIxNSwgMTQ0LCAxOTYsIDEsIDI0OCwgMTM1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAyMTAsIDg2LCAyMjYsIDIxMCwgCisgICAgMjUwLCAxMDMsIDIxLCAxMTAsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDEwNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgCisgICAgMTU4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxNjEsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDE4OSwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAyMSwgMTk0LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxOTgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIAorICAgIDE5NSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMjAwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMywgMTM1LCAyMjYsIAorICAgIDIxMCwgMjUwLCAxMDMsIDEsIDI1MywgMjA2LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NCwgMjE2LCAyMjYsIDIxMCwgCisgICAgMjUwLCAxMDMsIDEsIDI1NCwgMTE1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NCwgMTc4LCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDEsIDIzMywgMTM0LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NSwgMzUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgCisgICAgMjU1LCAzNiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDM0LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NSwgMjksIAorICAgIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCAyNDEsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjM1LCAxNzEsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMSwgMjM2LCAzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzUsIDE5MCwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAxLCAyMzUsIDE3OSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzIsIDk4LCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDEsIDIxNCwgMjIxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIxNCwgMjE5LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIAorICAgIDIxNCwgMTY4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIxNCwgMTExLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMywgCisgICAgNTgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCAxMDgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCAyMTIsIAorICAgIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCAxNTAsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCA4NiwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAxLCAyMzIsIDE1NiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMjYsIDEzNywgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAxLCAyMjYsIDI1MiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMjYsIDEyNSwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMjYsIDIyMiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMzAsIDEwMywgMjE1LCAxMjEsIDIyNiwgMjEwLCAyNTAsIAorICAgIDEwMywgMjQzLCAxMzAsIDIxNSwgMTIyLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIzMCwgMTAxLCAyMTUsIDEyMiwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAyMjMsIDkyLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIyNSwgMTQ1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIAorICAgIDI1NCwgMjA4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIyNCwgMTQxLCAyMzAsIDk4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIyNCwgCisgICAgMTQxLCA1MiwgMjMwLCA5OCwgMjA3LCAyMjQsIDE0MSwgMjUxLCAyNDEsIDIxOCwgOCwgMjA3LCAyMjQsIDE0MSwgMjUxLCAKKyAgICAyNDEsIDIyNiwgMzgsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMjQsIDEyOSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAyNDEsIAorICAgIDI1MSwgMTksIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMzMsIDgsIDIyMSwgMjI1LCAyMDcsIDIyNCwgMTQxLCAyNTEsIAorICAgIDI0MSwgMjM1LCAxMywgMjIxLCAyMjUsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyNDgsIDIyMiwgMjIxLCAyMjUsIDIwNywgCisgICAgMjI0LCAxNDEsIDI1MSwgMjQxLCAyNTIsIDE5MiwgMjIxLCAyMjUsIDIxMywgMjUyLCAxMzgsIDIzNCwgMjEwLCAyMTMsIAorICAgIDI1MiwgMTM4LCAyMjAsIDc3LCAyMTMsIDI1MiwgMTM4LCAyMjQsIDE5OCwgMjEzLCAyNTIsIDUsIDIyOCwgMjA5LCAyMTMsIAorICAgIDI1MiwgNSwgMjExLCA4MCwgMjMwLCAyMjIsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjU0LCAyMTMsIDIzNSwgCisgICAgMjQzLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDIzNSwgMjQzLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIAorICAgIDIxMSwgODAsIDIzNCwgMTk4LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDIsIDUxLCAyMTMsIDI1MiwgCisgICAgMTM4LCAyMTEsIDgwLCAyMzQsIDE5OCwgMjM1LCAyNDMsIDIxOCwgMSwgMjIxLCAxOTcsIDIxMywgMjUyLCAxMzgsIDUyLCAKKyAgICAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxNSwgMjExLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIzNCwgMTk4LCAyNTQsIAorICAgIDc3LCAyMTMsIDI1MiwgMTM4LCA1OSwgNTEsIDIxMywgMjUyLCAxMzgsIDExMywgMTcwLCA1MSwgMjEzLCAyNTIsIDEzOCwgCisgICAgMTM0LCAxNzAsIDUxLCAyMTMsIDI1MiwgMTM4LCAyMjIsIDI0MCwgMjM0LCAyMDksIDIzNSwgMjQzLCAyMTgsIDAsIDIxMywgCisgICAgMjUyLCAxMzgsIDI1MywgMjA0LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDIxOCwgMCwgMjEzLCAKKyAgICAyNTIsIDUsIDIxMywgMTQ4LCAyMTQsIDIxNiwgMjEzLCAyNTIsIDUsIDIyMywgNDksIDIxMywgMTQ4LCAyMTQsIDIxNiwgCisgICAgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyNTQsIDc3LCAyMTMsIDI1MiwgNSwgMjIzLCA0OSwgMjEzLCAxNDgsIDI1NCwgNzcsIAorICAgIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjE0LCAyMTcsIDIsIDIxNywgNzcsIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjU0LCAKKyAgICA3OCwgMiwgMjE3LCA3NywgMjEzLCAyNTIsIDUsIDI1NCwgNzYsIDI1NCwgOTEsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyNTIsIAorICAgIDE2NiwgMjEzLCAyNTIsIDUsIDI1NCwgNzYsIDIxNCwgMjAsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyMTQsIDIxLCAyLCAKKyAgICAyMTcsIDc3LCAyMTMsIDI1MiwgNSwgMjE2LCA2OCwgMjEzLCAyNTIsIDUsIDI0MSwgMTkxLCAxOTksIDI1NCwgNzUsIDIxMywgCisgICAgMjUyLCA1LCAxOTksIDI1NCwgNzUsIDIxMywgMjUyLCA1LCAyMjIsIDE0MiwgMTk5LCAyNTQsIDc1LCAyMTMsIDI1MiwgNSwgCisgICAgMjU0LCA3NiwgMjE0LCAyMjMsIDIzMCwgOTAsIDIxMywgMjUyLCA1LCAyNTQsIDIwLCAyMTMsIDI1MiwgNSwgMjIyLCAxODcsIAorICAgIDI1NCwgMjAsIDIxMywgMjUyLCAxMzgsIDI1MSwgMiwgNDgsIDIxMywgMjUyLCA1LCAyMzUsIDEwMiwgMjEzLCAyNTIsIDUsIAorICAgIDIxNCwgMTYxLCA3LCAxLCA0LCA2LCA2MSwgNywgMSwgNCwgNiwgMjU0LCAyNDMsIDcsIDQsIDEsIDIxNSwgOTQsIDI1NCwgCisgICAgMjQzLCA3LCAxLCA0LCA2LCAyNTIsIDEzNCwgMjUzLCAxNTgsIDcsIDEsIDQsIDYsIDI1MSwgNjYsIDcsIDEsIDQsIDYsIAorICAgIDI0OSwgNjAsIDcsIDEsIDQsIDYsIDI0NSwgNTksIDcsIDEsIDQsIDYsIDc1LCA3LCA0LCAxLCAyMTUsIDk0LCAyMDQsIDc1LCAKKyAgICA3LCA0LCAxLCAyMTUsIDk0LCA3MywgNywgMSwgNCwgNiwgMjM1LCAxNDQsIDcsIDEsIDQsIDYsIDIzNSwgMjMsIDcsIDEsIDQsIAorICAgIDYsIDIzMywgMTQ5LCAyLCA5MSwgNywgMSwgNCwgNiwgMTkzLCA3LCAxLCA0LCA2LCAyMjMsIDQ5LCAyMzAsIDI1LCA3LCAxLCAKKyAgICA0LCA2LCA3NiwgNywgMSwgNCwgNiwgMjA0LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIDc2LCA3LCA0LCAxLCAyMTksIDE4NywgCisgICAgMjA0LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIDE0NCwgMiwgOTEsIDcsIDQsIDEsIDIxNSwgOTQsIDIyNiwgMjM0LCA3LCAxLCAKKyAgICA0LCA2LCAyMjYsIDEzNCwgNywgNCwgMSwgMjE2LCAxNCwgMTYzLCA3NiwgNywgNCwgMSwgMjUxLCAxNzUsIDE2MywgNzYsIDcsIAorICAgIDEsIDQsIDYsIDIyNiwgMTA1LCA3LCAxLCA0LCA2LCAyMjMsIDQ5LCAxNTMsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDE1MywgNywgCisgICAgMSwgNCwgNiwgMjE3LCAxNTIsIDcsIDEsIDQsIDYsIDcwLCA3LCA0LCAxLCAyMTksIDE4NywgNzAsIDcsIDQsIDEsIDIxOSwgCisgICAgMTg3LCAyNDgsIDAsIDcwLCA3LCA0LCAxLCAyMTksIDE4NywgMjE1LCA5NCwgMTkzLCA3LCAxLCA0LCA2LCAyMTQsIDEwNSwgCisgICAgNywgMSwgNCwgNiwgMjEyLCA5OCwgNywgMSwgNCwgNiwgMjEwLCAxNTksIDcsIDEsIDQsIDYsIDI0NSwgOCwgNywgMSwgMjEzLCAKKyAgICAxMzUsIDIzMywgODIsIDIxOCwgMjUwLCA3LCAxLCAyNTQsIDE5NiwgMjYsIDEsIDQsIDYsIDI0MywgMTA3LCAyNiwgMSwgNCwgCisgICAgNiwgMjMzLCA5OCwgMjYsIDEsIDQsIDYsIDIyNSwgMTA4LCAyNiwgMSwgNCwgNiwgMjIzLCAzNywgMjYsIDEsIDQsIDYsIAorICAgIDIyNCwgMTYxLCAzMywgMSwgNCwgNiwgMjQ1LCAxNzQsIDU4LCAxLCA2LCA2MSwgNTgsIDEsIDYsIDI1NCwgMjQzLCA1OCwgMSwgCisgICAgNiwgMjUzLCAxNTgsIDU4LCAxLCA2LCAyNTIsIDEzNCwgMjUzLCAxNTgsIDU4LCAxLCA2LCAyNDksIDYwLCA1OCwgMSwgNiwgCisgICAgNzUsIDU4LCAxLCA2LCAyMjMsIDQ5LCA3NSwgNTgsIDEsIDYsIDI0MywgMjAyLCA1OCwgMSwgNiwgMjQyLCA2MCwgNTgsIDEsIAorICAgIDYsIDczLCA1OCwgMSwgNiwgMjM1LCAxNDQsIDU4LCAxLCA2LCAyMzUsIDIzLCA1OCwgMSwgNiwgMTU2LCA1OCwgMSwgNiwgCisgICAgMTkzLCA1OCwgMSwgNiwgMjMwLCAyNSwgNTgsIDEsIDYsIDIyMywgNDksIDIzMCwgMjUsIDU4LCAxLCA2LCA3NiwgNTgsIDEsIAorICAgIDYsIDIyNiwgMTM0LCA1OCwgMSwgNiwgMjI2LCAxMDUsIDU4LCAxLCA2LCAxNTMsIDU4LCAxLCA2LCAyMTcsIDE1MiwgNTgsIAorICAgIDEsIDYsIDcwLCA1OCwgMSwgNiwgMjEyLCA5OCwgNTgsIDEsIDQsIDYxLCA1OCwgMSwgNCwgMjE1LCA5NCwgNjEsIDU4LCAxLCAKKyAgICA0LCAyNTQsIDE0MywgNTgsIDEsIDQsIDIxNSwgOTQsIDI1NCwgMjQzLCA1OCwgMSwgNCwgMjUzLCAxNTgsIDU4LCAxLCA0LCAKKyAgICAyNDksIDYwLCA1OCwgMSwgNCwgNzUsIDU4LCAxLCA0LCAyMjEsIDE5NSwgNTgsIDEsIDQsIDIwNCwgNzUsIDU4LCAxLCA0LCAKKyAgICAyMTUsIDk0LCAyMDQsIDc1LCA1OCwgMSwgNCwgMjQzLCAyMDIsIDU4LCAxLCA0LCAyMTUsIDk0LCA3MywgNTgsIDEsIDQsIAorICAgIDIzNSwgMjMsIDU4LCAxLCA0LCAxOTMsIDU4LCAxLCA0LCAyNDUsIDEzOCwgNTgsIDEsIDQsIDc2LCA1OCwgMSwgNCwgMjA0LCAKKyAgICA3NiwgNTgsIDEsIDQsIDIxNiwgMTQsIDE2MywgNzYsIDU4LCAxLCA0LCAyNTEsIDE3NSwgMTYzLCA3NiwgNTgsIDEsIDQsIAorICAgIDIyNiwgMTA1LCA1OCwgMSwgNCwgMjE3LCAxNTIsIDU4LCAxLCA0LCA3MCwgNTgsIDEsIDQsIDIxOSwgMTg3LCA3MCwgNTgsIAorICAgIDEsIDQsIDIxNSwgOTQsIDE5MywgNTgsIDEsIDQsIDIxNCwgMTA1LCA1OCwgMSwgNCwgMjU0LCAxOTYsIDU4LCAxLCA0LCAKKyAgICAyNTIsIDI2LCA1OCwgMSwgNCwgMjYsIDI0MywgMTA3LCA1OCwgMSwgNCwgMjQ4LCA1NCwgNTgsIDEsIDQsIDI2LCAyMjUsIAorICAgIDEzMywgNTgsIDEsIDQsIDI1MCwgMTEwLCA3LCAyMTgsIDY1LCA0LCAxLCA3MywgNywgMjE4LCA2NSwgNCwgMSwgMTUzLCA3LCAKKyAgICAyMTgsIDY1LCA0LCAxLCA3MCwgNywgMjE4LCA2NSwgNCwgMSwgMjE0LCAxMDUsIDI2LCAyMTgsIDY1LCA0LCAxLCAyNTIsIAorICAgIDI2LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjQzLCAxMDcsIDI2LCAyMTgsIDY1LCA0LCAxLCAyMjMsIDM3LCAyNiwgMjE4LCA2NSwgCisgICAgNCwgMSwgMjI1LCAxMzMsIDI2LCAyMTgsIDY1LCA0LCAxLCAyNTAsIDExMCwgNywgNCwgMSwgMjE0LCAyMTQsIDcsIDQsIDEsIAorICAgIDU3LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyNDUsIAorICAgIDcsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIzMCwgCisgICAgMjYsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI0NCwgODgsIDIyLCAyMzAsIDIyNCwgMTgyLCAKKyAgICA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjMwLCAyMjQsIDE4MiwgCisgICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MywgMjAyLCA1OCwgMSwgCisgICAgMzMsIDI0NSwgMTUwLCA3LCA0LCAxLCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDQsIDEsIDIxNiwgMjExLCAyLCAyMTgsIAorICAgIDEwNywgNywgNCwgNiwgMSwgMjQwLCAxNTQsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE4NiwgMiwgOTEsIDcsIDQsIDEsIDIyNiwgCisgICAgMTA2LCAyLCA5MSwgNywgNCwgNiwgMSwgMTA0LCAyLCA5MSwgNywgNCwgMSwgMjE0LCAxNTgsIDIsIDkxLCA3LCA0LCAxLCAKKyAgICA1NywgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0NSwgNywgCisgICAgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0NSwgNzYsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjExLCAxNzksIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMTE1LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI0MSwgNTIsIDIyLCAyMTcsIDc3LCA3LCA0LCAxLCAxNjAsIDIsIDIyMywgCisgICAgNTUsIDEwMywgNywgNCwgMSwgMjA0LCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjIzLCA0OSwgMjA0LCAxNjAsIAorICAgIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjIxLCAxOTYsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjQwLCAxNTQsIAorICAgIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjA0LCAxNDQsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjQ1LCA3NiwgMiwgCisgICAgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAxMDQsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjQ1LCA5LCAyLCAyMjMsIDU1LCAKKyAgICAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDE0MywgNTgsIDEsIDQsIDI1MSwgNjYsIDU4LCAxLCA0LCAyNTEsIDY3LCAKKyAgICAyLCAyNDksIDEwMCwgNTgsIDEsIDQsIDI0NSwgNTksIDU4LCAxLCA0LCAyMjMsIDQ5LCAyMDQsIDc1LCA1OCwgMSwgNCwgCisgICAgMjQ1LCA2LCA1OCwgMSwgNCwgMjQ3LCAxMTksIDIzNSwgMTQ1LCAyLCA5MSwgNTgsIDEsIDQsIDExOSwgMjQzLCAyMDIsIDU4LCAKKyAgICAxLCA0LCAyMTUsIDk0LCAyNDIsIDYwLCA1OCwgMSwgNCwgMjQwLCAxNTQsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxODUsIAorICAgIDU4LCAxLCA0LCA2LCA3MywgNTgsIDEsIDQsIDYsIDI0MCwgMTU0LCAyLCA5MSwgNTgsIDEsIDQsIDIzNSwgMTQ1LCAyLCAKKyAgICAyNDksIDEyNywgNTgsIDEsIDQsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAxMDMsIDU4LCAxLCA0LCAyMzMsIDE0OSwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA1OCwgMSwgNCwgNiwgMTU2LCA1OCwgMSwgNCwgMjMyLCA1MCwgMiwgMTAzLCA1OCwgMSwgNCwgMjE1LCAKKyAgICA5NCwgMjMyLCA1MCwgMiwgMTk5LCAyMzMsIDM2LCA1OCwgMSwgNCwgMjMwLCAyNiwgMiwgNDMsIDEwMywgNTgsIDEsIDQsIAorICAgIDIzMCwgMjYsIDIsIDIyMywgNTUsIDEwMywgNTgsIDEsIDQsIDYsIDIzMCwgMjUsIDU4LCAxLCA0LCAyNTIsIDEzNCwgNzYsIAorICAgIDU4LCAxLCA0LCAyMjUsIDEzMywgNTgsIDEsIDQsIDIyMiwgOTIsIDIsIDEwMywgNTgsIDEsIDQsIDI0NSwgNzUsIDU4LCAxLCAKKyAgICA0LCAyMTcsIDE1MywgMiwgMjI2LCA2NiwgMTAzLCA1OCwgMSwgNCwgMTA0LCAxMzAsIDU4LCAxLCA0LCAyMTQsIDE1NywgNTgsIAorICAgIDEsIDQsIDYsIDcwLCA1OCwgMSwgNCwgMjE0LCAxMDYsIDIsIDEwMywgNTgsIDEsIDQsIDIxNSwgOTQsIDIxNCwgMTA1LCA1OCwgCisgICAgMSwgNCwgMjEwLCAxNTksIDU4LCAxLCA0LCAyMTAsIDE2MCwgMiwgMjIzLCA1NSwgMTAzLCA1OCwgMSwgNCwgMjEwLCAxNjAsIAorICAgIDIsIDI0OSwgMTAwLCA1OCwgMSwgNCwgMjQ1LCA4LCA1OCwgMSwgNCwgMjE2LCAxNzksIDM4LCAyNDYsIDExOCwgMjQyLCAKKyAgICAxMzcsIDI1NSwgMTQsIDM4LCAyNDYsIDExOCwgMjU1LCAzLCAyNTUsIDE0LCAzOCwgMjE5LCA2OSwgNTEsIDM4LCAyMTgsIDYsIAorICAgIDc4LCAzOCwgMjMxLCAyMzEsIDM4LCAyNDIsIDEzNCwgMzgsIDIzMSwgMjI5LCAzOCwgMjU1LCAxLCAzOCwgMjQyLCAxMzUsIAorICAgIDM4LCAyNTUsIDIsIDM4LCA3LCA0LCAxLCAyMjMsIDIyNCwgNTEsIDM4LCAyNTEsIDE0NSwgMzgsIDIzMSwgMjMwLCAzOCwgCisgICAgNTIsIDI1MCwgMzEsIDQ4LCAzOCwgMjI2LCAyMjUsIDQ4LCAzOCwgMjEwLCAzNSwgNTEsIDM4LCAyMzUsIDE3MiwgNTEsIDM4LCAKKyAgICAyMTQsIDE1MSwgNDgsIDM4LCAyMTQsIDEzNCwgNDgsIDM4LCA3LCA0LCAxLCAyNDQsIDYzLCAyMDQsIDExNSwgNDgsIDM4LCAKKyAgICA3LCA0LCAxLCAyNTQsIDI0MywgMzgsIDcsIDQsIDEsIDI1NCwgNzMsIDM4LCA3LCA0LCAxLCAyNTMsIDE3NiwgMzgsIDcsIDQsIAorICAgIDEsIDI1MSwgNjcsIDI1MCwgMTgzLCAzOCwgNywgNCwgMSwgMjM1LCAyMTMsIDI0OSwgNjAsIDM4LCA3LCA0LCAxLCAyNDUsIAorICAgIDU5LCAzOCwgNywgNCwgMSwgMjQzLCAyMDIsIDM4LCA3LCAxLCA0LCA2LCAyNDMsIDIwMiwgMzgsIDcsIDQsIDEsIDIzNSwgCisgICAgMjMsIDM4LCA3LCA0LCAxLCAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxOTMsIDM4LCA3LCA0LCAKKyAgICAxLCAyMzAsIDI1LCAzOCwgNywgMSwgNCwgNiwgMjMwLCAyNSwgMzgsIDcsIDEsIDQsIDYsIDE1MywgMzgsIDcsIDQsIDEsIAorICAgIDIyMywgMjI0LCAyMjIsIDE4NiwgMzgsIDcsIDQsIDEsIDIyMiwgOTEsIDM4LCA3LCA0LCAxLCAxOTksIDIyMiwgOTEsIDM4LCAKKyAgICA3LCA0LCAxLCAyMTAsIDE1OSwgMzgsIDUyLCAyMzUsIDE5MywgMjUxLCAxNDcsIDUxLCAzOCwgMjU0LCAxNDgsIDEyOCwgCisgICAgMjE2LCA0MiwgNTEsIDM4LCA0MywgMjUzLCAyNTAsIDQ4LCAzOCwgNDQsIDI1MywgMjUwLCAyMiwgMTI0LCAyNTMsIDI1MCwgCisgICAgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA1MSwgNywgNiwgCisgICAgMSwgNTcsIDIsIDU5LCA0OCwgNywgNCwgMSwgNTcsIDIsIDU5LCA0OCwgNywgNiwgMSwgNTcsIDIsIDU5LCA1MSwgNywgNCwgCisgICAgMSwgNTcsIDIsIDU5LCA1MSwgNywgNiwgMSwgNTcsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgNTcsIDIsIDIzMiwgMjE0LCAKKyAgICA1MSwgNywgNiwgMSwgMjUxLCA2NywgMiwgMjUwLCAxODQsIDIyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI1MCwgCisgICAgMTg0LCAyMiwgMTQyLCA3LCA2LCAxLCAyNDksIDYxLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDU5LCA0OCwgCisgICAgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDI0OSwgCisgICAgNjEsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAyNDksIDYxLCAKKyAgICAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMzEsIAorICAgIDUxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgCisgICAgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgCisgICAgNTEsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjE2LCA4OSwgNTEsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjE2LCA4OSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxODQsIDIyLCAyNTEsIDE0NiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyNTAsIDE4NCwgMjIsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyNDUsIDcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ1LCAKKyAgICA3LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDU5LCA0OCwgNywgNiwgMSwgCisgICAgMjQyLCA2MSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIAorICAgIDI0OCwgMSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTAsIDE4MywgNywgNCwgCisgICAgMSwgMjQyLCA2MSwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MSwgMTQ3LCA1MSwgNywgNCwgMSwgMjQyLCAKKyAgICA2MSwgMiwgMjUxLCAxNDcsIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjE2LCA4OSwgNTEsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU0LCAyLCAyMTYsIDg5LCA1MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMiwgMjIsIDE0MiwgNywgNCwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDI0OCwgMiwgMjIsIDE0MiwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMTQyLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgNTksIDUxLCA3LCA2LCAxLCAKKyAgICAyMzUsIDI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgCisgICAgMjMzLCAxNDksIDIsIDU5LCA1MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIAorICAgIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1OSwgMjUyLCA0MywgMjIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjMyLCAyMTQsIAorICAgIDUxLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDMxLCA1MSwgCisgICAgNywgNiwgMSwgMjMyLCA1MCwgMiwgMTQyLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAxNDIsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIAorICAgIDU5LCA0OCwgNywgNCwgMSwgMjMyLCA1MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMzIsIDUwLCAyLCA1OSwgNTEsIDcsIDQsIAorICAgIDEsIDIzMiwgNTAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAKKyAgICA1OSwgNDgsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgNTksIDUxLCA3LCA2LCAKKyAgICAxLCAyMzAsIDI2LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgCisgICAgMjMwLCAyNiwgMiwgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIxNiwgODksIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyMTYsIDg5LCAyMiwgMjQ4LCAxLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAyNDgsIDEsIDcsIDYsIDEsIDE0NCwgCisgICAgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAKKyAgICAxLCAxNDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA2LCAKKyAgICAxLCAyMjYsIDEwNiwgMiwgMTQyLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMTQyLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgNTksIAorICAgIDQ4LCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgCisgICAgNTksIDUxLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgNTksIDI1MiwgNDMsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIAorICAgIDQsIDEsIDIyMywgMjI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDU5LCA0OCwgNywgNCwgMSwgCisgICAgMjIyLCA5MiwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjU1LCAzLCAyMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyNTUsIDMsIAorICAgIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMjM1LCAyMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjIsIDkyLCAKKyAgICAyLCAyNTAsIDIzNSwgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNTksIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDcsIAorICAgIDQsIDEsIDIyMiwgOTIsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgNTksIDQ4LCAKKyAgICA3LCA0LCAxLCAyMTcsIDE1MywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MywgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgCisgICAgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAKKyAgICAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgNTEsIDcsIAorICAgIDYsIDEsIDEwNCwgMiwgMjE2LCA4OSwgNTEsIDcsIDQsIDEsIDEwNCwgMiwgMjE2LCA4OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgCisgICAgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDEwNCwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjE2LCA4OSwgMjIsIAorICAgIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyMTYsIDg5LCAyMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgCisgICAgMjQ4LCAxLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMTgyLCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTQsIAorICAgIDEwNiwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjQyLCAKKyAgICAxMzYsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDE0MiwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMTQyLCA3LCA2LCAxLCAyMTIsIAorICAgIDk5LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI0OCwgMSwgNywgNiwgMSwgMjEyLCA5OSwgMiwgNTksIDQ4LCAKKyAgICA3LCA0LCAxLCAyMTIsIDk5LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDU5LCA1MSwgNywgNCwgMSwgMjEyLCAKKyAgICA5OSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDE3OSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMTEsIDE3OSwgMiwgNTksIAorICAgIDQ4LCA3LCA2LCAxLCAyMTEsIDE3OSwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTEsIDE3OSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAKKyAgICAyMTEsIDExOCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgCisgICAgMjUwLCAzMCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIAorICAgIDIxMCwgMTYwLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgCisgICAgMjE3LCAxNTMsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAyMTEsIAorICAgIDExOCwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDQ0LCAxNjMsIDIyMiwgMjMzLCA3LCA0LCAxLCAxOTksIAorICAgIDIyMiwgOTIsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTk5LCAyMjIsIDkyLCAyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDE5OSwgCisgICAgMjIyLCA5MiwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMjIwLCA3NiwgMjIyLCA5MSwgNywgNCwgMSwgMjQ4LCA1NCwgNywgNiwgCisgICAgMSwgMTE1LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDExNSwgMiwgNTksIDUxLCA3LCA2LCAxLCAxMTUsIDIsIDI0MSwgNTIsIDQ4LCAKKyAgICA3LCA0LCAxLCAxMTUsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDQsIDEsIAorICAgIDExNSwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDQsIAorICAgIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCAKKyAgICA0OCwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgCisgICAgMjIsIDE4MiwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAKKyAgICA1OSwgNTEsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgCisgICAgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgCisgICAgMjUxLCAxNDcsIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDI0MSwgNTIsIDQ4LCA3LCAKKyAgICA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMTgyLCA3LCAKKyAgICA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgNTksIAorICAgIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgCisgICAgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMTgyLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDE4MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIAorICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCisgICAgMzEsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIAorICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNDEsIDUyLCA0OCwgNywgCisgICAgNCwgMSwgMjQwLCAxNTQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAKKyAgICAyNDAsIDE1NCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIAorICAgIDYsIDEsIDE0NCwgMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIAorICAgIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCAKKyAgICA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCAxODIsIAorICAgIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgNTksIAorICAgIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDksIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIAorICAgIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAxODIsIDcsIDQsIAorICAgIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAxODIsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgNTksIDUxLCA3LCA0LCAxLCAKKyAgICAxMDQsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDUyLCAKKyAgICA0OCwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAKKyAgICAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTA0LCAKKyAgICAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjQyLCAxMzYsIDcsIDQsIAorICAgIDEsIDIxMSwgMTE4LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjExLCAKKyAgICAxMTgsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgCisgICAgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAxODIsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAxODIsIDcsIDYsIAorICAgIDEsIDIzMCwgMjIzLCAyMzIsIDE4NSwgNywgNCwgMSwgMjMwLCAyMjMsIDIzMiwgMTg1LCA3LCA2LCAxLCAyMzAsIDIyMywgCisgICAgMjE0LCAxMDUsIDcsIDQsIDEsIDIzMCwgMjIzLCAyMTQsIDEwNSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDIzMiwgMTIzLCA3LCAKKyAgICA0LCAxLCAyMTEsIDExOCwgMiwgMjMyLCAxMjMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDE0NCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgCisgICAgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIAorICAgIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIAorICAgIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgCisgICAgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjU0LCAxNDQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyNDgsIDE1MywgMjYsIDQsIAorICAgIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAKKyAgICAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NCwgMjYsIAorICAgIDYsIDEsIDI0NSwgMTAxLCAyLCAyNDgsIDE1MywgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCisgICAgMTMsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIAorICAgIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAKKyAgICAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIAorICAgIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAKKyAgICAxNTQsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1MywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgCisgICAgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgNjQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAKKyAgICAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgCisgICAgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMzUsIDE4NiwgCisgICAgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAKKyAgICAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgCisgICAgMTEwLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTUzLCAyNiwgNiwgCisgICAgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIAorICAgIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgCisgICAgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIyNiwgCisgICAgMjAwLCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAKKyAgICAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgCisgICAgNCwgMSwgMjI2LCAyMDAsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAKKyAgICAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDIyNiwgMjAwLCAKKyAgICAyLCAyNDgsIDE1MywgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAKKyAgICAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjQsIAorICAgIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCisgICAgMjE0LCAxNTgsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAKKyAgICAyMjYsIDExMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjE0LCAKKyAgICAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAKKyAgICAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIAorICAgIDIyNiwgMjAyLCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDIyNiwgCisgICAgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIAorICAgIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI0LCAxNTQsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIAorICAgIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgCisgICAgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDE0NCwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgCisgICAgMTAxLCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAKKyAgICAyMjYsIDExMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNiwgCisgICAgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjI2LCAxMTAsIDI2LCAKKyAgICA0LCAxLCAyMTQsIDE1OCwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIAorICAgIDIyNiwgMjAyLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjU0LCAKKyAgICAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAorICAgIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAKKyAgICAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgCisgICAgMjEwLCAyMTksIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgCisgICAgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgCisgICAgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIAorICAgIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIDE0NCwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjEwLCAyMTksIAorICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgCisgICAgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAorICAgIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIAorICAgIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAKKyAgICAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgCisgICAgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAKKyAgICAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgCisgICAgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAKKyAgICAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIAorICAgIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDQsIDEsIDIyNiwgCisgICAgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgCisgICAgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIAorICAgIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCisgICAgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIAorICAgIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAKKyAgICAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAyMDIsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDE0NCwgMiwgMjMxLCAyMzIsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgCisgICAgNCwgMSwgMjU0LCAxNDQsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNiwgMTExLCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI1LCAxNzYsIAorICAgIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAKKyAgICAyMzEsIDIzMiwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTY3LCAyNiwgMjM0LCAyLCAyNiwgMjI0LCAxNjcsIDI2LCAyMjQsIAorICAgIDE1NCwgMjYsIDIyNSwgMTc1LCAyNiwgMjQ3LCAyNTIsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIxNCwgCisgICAgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjQ1LCAKKyAgICA2NCwgMiwgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgCisgICAgMjQ1LCAxMDEsIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgNjQsIAorICAgIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNjcsIDI2LCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIAorICAgIDI2LCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIzNSwgCisgICAgMTg2LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMzEsIDIzMiwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAKKyAgICAyNDcsIDI1MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMjYsIDExMCwgMjYsIAorICAgIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MiwgMjIsIDIyNSwgCisgICAgMTc1LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIzMSwgMjMyLCAKKyAgICAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjI2LCAxMTAsIDI2LCAyNDgsIAorICAgIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzMiwgMjYsIDQsIAorICAgIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIAorICAgIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIyMywgMzgsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjIzLCAzOCwgMiwgMjQ4LCAKKyAgICAxNTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIAorICAgIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAKKyAgICAyMzEsIDIzMiwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjIzLCAzOCwgMiwgMjQ4LCAxNTMsIDI2LCAyNDcsIDI1MiwgMjIsIDIxNCwgMTMsIDI2LCAyNDcsIAorICAgIDI1MiwgMjIsIDIyNiwgMTEwLCAyNiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMTQsIDE0LCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI2LCAxMTEsIAorICAgIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAKKyAgICAyMjUsIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMCwgMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAKKyAgICAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE2NywgMjYsIDIyNiwgMTEwLCAyNiwgMjQ4LCAxNTMsIAorICAgIDI0NSwgMTUxLCAyMjQsIDI3LCAyNDUsIDE2MCwgMjI0LCAyNywgMjQ1LCAxNTEsIDIxOSwgMTgsIDI0NSwgMTYwLCAyMTksIAorICAgIDE4LCAyMTYsIDE0MSwgMjE5LCAxOCwgMjQ0LCA5LCAyMTksIDE4LCAyMTksIDEyMywgMjE5LCAxOCwgMjQ0LCAxMTIsIDIxOSwgCisgICAgMTgsIDIyNCwgMTQxLCAyMTksIDE4LCAyMTYsIDE3MCwgMjE5LCAxOCwgMjQyLCAzNSwgMjE5LCAxOCwgMjEwLCA4NywgMjExLCAKKyAgICAyNDUsIDIxOSwgMTgsIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDY3LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjM1LCA2MywgCisgICAgMjMzLCAzOCwgNzgsIDIyMiwgMjQzLCA3OCwgMjQwLCAxNjgsIDIyOCwgNjgsIDI0MCwgMTY4LCAyNDQsIDExMiwgMjQ4LCAKKyAgICAxNTYsIDI0NSwgMTUxLCAyNDgsIDE1NiwgMjQ1LCAxNjAsIDI0OCwgMTU2LCAyMDMsIDEzMCwgNTIsIDY3LCAyMzIsIDIxMywgCisgICAgNTIsIDEyMSwgMjMyLCAyMTMsIDQzLCAyMTksIDE1NSwgMjIzLCAyNTQsIDc4LCA0NCwgMjE5LCAxNTUsIDIyMywgMjU0LCAKKyAgICA3OCwgMjE5LCAxNTUsIDIzMiwgMTA5LCAyMjMsIDI1NCwgNzgsIDIxOSwgMTU1LCAyNDEsIDE2MywgMjIzLCAyNTQsIDc4LCAKKyAgICA0MywgNTIsIDIyMywgMjU0LCA3OCwgNDQsIDUyLCAyMjMsIDI1NCwgNzgsIDUyLCAyMzIsIDEwOSwgMjIzLCAyNTQsIDc4LCAKKyAgICA1MiwgMjQxLCAxNjMsIDIyMywgMjU0LCA3OCwgMjQ4LCAyMDUsIDUyLCAyNDgsIDIwNSwgMjUxLCAxMTMsIDIxNSwgMjIyLCAKKyAgICAyNTEsIDExMywgMTIzLCA1OSwgMjMzLCA1NiwgMTEzLCA1OSwgMjMzLCA1NiwgMjAzLCAyNDUsIDE2MywgMjQwLCAxNjYsIAorICAgIDIyNSwgMTAsIDIzMiwgMjE0LCAyMjAsIDEzNywgMjI2LCAxNSwgMjIwLCAxMzcsIDIzMywgMzgsIDI0NSwgMTU4LCAyMjIsIAorICAgIDI0MywgMjQ1LCAxNTgsIDIyNCwgMjQ2LCAyNDcsIDE5NiwgMjQ0LCAxOSwgMjMzLCAzOCwgMjI2LCAxMTcsIDIyMiwgMjQzLCAKKyAgICAyMjYsIDExNywgMjI5LCAxOTQsIDIyOCwgNzMsIDIxOSwgMTgsIDIyNSwgMTgzLCAyMzAsIDE5MywgNTAsIDIyNSwgMTgzLCAKKyAgICAyMTYsIDI0OCwgMjE2LCAxNDgsIDUwLCAyMjQsIDE5MCwgNTIsIDIyNCwgMTkwLCAyMTUsIDIxMSwgMjI0LCAxOTAsIDIyMywgCisgICAgNDksIDIyNCwgMTkwLCAyMjMsIDQ5LCA1MiwgMjI0LCAxOTAsIDIyMywgNDksIDIxNSwgMjExLCAyMjQsIDE5MCwgMjUwLCAKKyAgICAyMzgsIDIxOSwgMTU1LCAyMzMsIDQyLCAyNTQsIDExMCwgMjIzLCAyNTQsIDc4LCAyMTksIDE1NSwgMjIyLCAyNDcsIDI1NCwgCisgICAgMTEwLCAyMjMsIDI1NCwgNzgsIDIyMywgMTA3LCA3OCwgNTIsIDI0NSwgMzEsIDc4LCAyMzUsIDIwMSwgMjI2LCAxMTksIAorICAgIDIxNCwgMTgwLCAxMzUsIDIxNiwgMTExLCAyNTAsIDIzOSwgMjM1LCAyMTYsIDIyNSwgMTAsIDI1MywgMjE0LCAyNDAsIDE2OSwgCisgICAgMjUxLCAxMTMsIDI0NCwgMiwgMjE5LCA5NSwgNDMsIDQyLCAyNTEsIDE1OCwgMiwgMjI0LCA3LCA0NCwgNDIsIDI1MSwgMTU4LCAKKyAgICAyLCAyMjQsIDcsIDUyLCAyMjQsIDEzLCA3OCwgMjI0LCAxMywgMjQ1LCAzMSwgNzgsIDI0NSwgMzEsIDIyNCwgMTMsIDc4LCAKKyAgICAyMTYsIDcwLCA1LCAyNDUsIDY1LCAyMjMsIDQ5LCAyMjUsIDY4LCA1MCwgODUsIDE0MCwgMjUxLCAxMTMsIDg1LCA5NywgCisgICAgMjUxLCAxMTMsIDEyMSwgMjUzLCAyMTYsIDIyMywgNDksIDIyMCwgMTUwLCAyNTAsIDEsIDIxNCwgMTYzLCAxMTMsIDI1MywgCisgICAgMjE1LCAyNTQsIDE1OCwgMjEzLCAxODgsIDI0OSwgMjE3LCAyMzAsIDE4MiwgNTAsIDIxNywgMjM0LCAyNDgsIDE1NiwgMjM1LCAKKyAgICAxOTMsIDIxNCwgMTgwLCAyNDQsIDUyLCAyMjQsIDE0MSwgNzgsIDEzNCwgNTksIDIyNCwgMTQwLCAyMjQsIDI0LCAyMjQsIAorICAgIDE5MCwgMjQ0LCAxMSwgNTksIDIyNCwgMTQwLCAyNDQsIDgxLCA1OSwgMjI0LCAxNDAsIDExMywgNTksIDIyNCwgMTQwLCAKKyAgICAyNDQsIDExLCA1OSwgNzgsIDI0NiwgMTE4LCAyNDksIDEzMCwgMjE1LCAyMjEsIDY3LCAyNDQsIDExLCAyNDcsIDExOCwgCisgICAgMjMxLCA4MiwgMTEsIDIxOSwgMTgsIDIxMSwgMjA5LCAyMzUsIDYzLCAyNDMsIDIyNywgMjU0LCA1MiwgMjM1LCAxOTEsIAorICAgIDIxNiwgODUsIDIzNSwgMTkxLCAyMjAsIDEzNywgMjM1LCAxOTEsIDIyNSwgMjIsIDIzNSwgMjI4LCAyMTcsIDE4MiwgMjE3LCAKKyAgICAyNTEsIDI1NSwgNSwgMjE3LCAxODIsIDIxNywgMjUxLCAyMzUsIDIyOCwgMTAsIDI0NCwgMjAsIDIyMCwgODAsIDI1NSwgNSwgCisgICAgMTAsIDI0NCwgMjAsIDIyMCwgODAsIDIyOSwgMTg5LCAyMSwgMjIwLCA4MSwgMjI4LCA2OSwgMjEsIDIyMCwgODEsIDIxOCwgCisgICAgMjMsIDIxMCwgODYsIDIxOCwgMjMsIDcsIDQsIDEsIDczLCAyMTgsIDIzLCAxNjEsIDIxOCwgMjMsIDE4OSwgMjE4LCAyMywgCisgICAgMTk0LCAyMTgsIDIzLCAxOTgsIDIxOCwgMjMsIDE5NSwgMjE4LCAyMywgMjAwLCAyMTgsIDIzLCA5NiwgNTAsIDIxOCwgMjMsIAorICAgIDIzMCwgMTgxLCAyMTgsIDIzLCAyNDUsIDk4LCA1MCwgMjE4LCAyMywgNDMsIDIyNiwgMywgMjE4LCAyMywgNDQsIDIyNiwgMywgCisgICAgMjE4LCAyMywgNywgNCwgMSwgMjMwLCAyNSwgMjE4LCA2NSwgMjEwLCA4NiwgMjE4LCA2NSwgMTEwLCAyMTgsIDY1LCAxMDUsIAorICAgIDIxOCwgNjUsIDE1OCwgMjE4LCA2NSwgMTYxLCAyMTgsIDY1LCAxODksIDIxOCwgNjUsIDE5NCwgMjE4LCA2NSwgMTk4LCAKKyAgICAyMTgsIDY1LCAxOTUsIDIxOCwgNjUsIDIwMCwgMjE4LCA2NSwgOTYsIDUwLCAyMTgsIDY1LCAyMzAsIDE4MSwgMjE4LCA2NSwgCisgICAgMjQ1LCA5OCwgNTAsIDIxOCwgNjUsIDQzLCAyMjYsIDMsIDIxOCwgNjUsIDQ0LCAyMjYsIDMsIDcsIDIxOCwgNjUsIDQsIDEsIAorICAgIDYxLCA3LCAyMTgsIDY1LCA0LCAxLCA3NSwgNywgMjE4LCA2NSwgNCwgMSwgNzYsIDcsIDIxOCwgNjUsIDQsIDEsIDIxMSwgCisgICAgMTc4LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjEsIDE5NSwgNywgMjE4LCA2NSwgNCwgMSwgMjQyLCA2MCwgNywgMjE4LCA2NSwgCisgICAgNCwgMSwgMjM1LCAyMywgNywgMjE4LCA2NSwgNCwgMSwgMTU2LCA3LCAyMTgsIDY1LCA0LCAxLCAxOTMsIDcsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIzMCwgMjUsIDcsIDIxOCwgNjUsIDQsIDEsIDIyNiwgMTA1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjIsIDkxLCA3LCAKKyAgICAyMTgsIDY1LCA0LCAxLCAyMTcsIDE1MiwgMjQ1LCA0NiwgNTAsIDI0OSwgMjI3LCA1MCwgMjQ5LCAxMTcsIDUwLCAyNDMsIAorICAgIDI1MSwgMjQzLCAyNTQsIDUwLCAyMzIsIDE5OCwgNTAsIDIzMCwgMTk0LCA1MCwgMjI5LCAyMTAsIDUwLCAyMjUsIDE2MiwgCisgICAgNTAsIDIyMiwgMTE4LCA1MCwgMjExLCAyMTcsIDUwLCAxNjYsIDIyMCwgNDksIDUwLCAyNDcsIDEyNywgNTAsIDI0NSwgNDcsIAorICAgIDUwLCAyMzQsIDc2LCA1MCwgMjE1LCAxMTIsIDUwLCAyNDYsIDEwMSwgNTAsIDI0MywgNDAsIDIyNSwgMTkzLCA1MCwgMjI1LCAKKyAgICAxNjAsIDUwLCAyNDIsIDEwOSwgNTAsIDI1MywgMTgyLCA1MCwgMjQwLCAyMjgsIDUwLCAyNTAsIDE4NSwgNTAsIDIzMiwgCisgICAgMTkxLCAyMTYsIDMsIDUwLCAyMTksIDAsIDUwLCAyMTYsIDI0NSwgNTAsIDIzNSwgMjQxLCAyMjIsIDExOCwgNTAsIDM4LCAKKyAgICA0MywgMjQxLCAyNTUsIDQ4LCAzOCwgNDQsIDI0MSwgMjU1LCA0OCwgMzgsIDE5OSwgNjcsIDIzMiwgMjE0LCAyMjYsIDEyMCwgCisgICAgMzgsIDIxOSwgMjUxLCA2NywgMjMyLCAyMTQsIDIyNiwgMTIwLCAzOCwgMjU0LCA4OCwgODAsIDQ4LCAzOCwgMjUwLCAyLCAKKyAgICA4MCwgNDgsIDM4LCA0MywgODAsIDQ4LCAzOCwgNDQsIDgwLCA0OCwgMzgsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDI1MCwgCisgICAgMiwgMjIyLCAyMzQsIDIyNiwgMTIwLCAzOCwgMjU0LCA4OCwgMjIyLCAyMzQsIDIyNiwgMTIwLCAzOCwgMTM0LCAxNzAsIDQ4LCAKKyAgICAzOCwgMjQ0LCAxMSwgMTcwLCA0OCwgMzgsIDI0NSwgMTQ2LCAyNTAsIDM1LCAzOCwgMjQ1LCAxNDYsIDIxOCwgMjM0LCAzOCwgCisgICAgMjQ1LCAxNDYsIDI0NywgMjQ4LCAzOCwgMjQ1LCAxNDYsIDI1MCwgMzYsIDI1MiwgMTgwLCAzOCwgNDMsIDQ0LCA4MCwgNDgsIAorICAgIDM4LCAyNDUsIDE0NiwgMjIxLCAxODgsIDM4LCAyNDUsIDE0NiwgMjM0LCAxMzUsIDM4LCAyNDUsIDE0NiwgMjE0LCAxNTUsIAorICAgIDIyNSwgNywgMjE1LCAyMjUsIDM4LCAyMjMsIDUwLCAyMTksIDQ3LCAyMjYsIDEyMCwgMzgsIDUyLCA2NywgMjE4LCAxMDMsIAorICAgIDIyNiwgMTIwLCAzOCwgMjU0LCA5OCwgODcsIDM4LCAyMTUsIDIxMSwgMjE0LCAxODIsIDM4LCAyMTEsIDI0NywgMjUxLCAKKyAgICAxNDAsIDQ4LCAzOCwgMTQwLCA4MCwgMjI2LCAxMjAsIDM4LCAxOTksIDUyLCAyMTksIDQ3LCAyMjYsIDEyMCwgMzgsIDk3LCAKKyAgICAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgMTAzLCAzOCwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgCisgICAgMTAzLCAzOCwgNDMsIDgwLCA1MSwgMzgsIDQ0LCA4MCwgNTEsIDM4LCAyNTMsIDIxNywgNDgsIDI1NSwgMTEsIDIyNiwgMjMxLCAKKyAgICAyNTQsIDI1MSwgMjE2LCA0MiwgMjE2LCAxOTYsIDIxOCwgNzQsIDEzOSwgNiwgMjUxLCA2NiwgMjQ4LCA3MSwgMjUwLCAxNzgsIAorICAgIDI1MCwgMTc1LCAyMzIsIDIxNCwgODcsIDI1MCwgMjQwLCAyMjYsIDIzMSwgMjUxLCAyNiwgMjE0LCAxODksIDI0NSwgNDgsIAorICAgIDI0OSwgMTkxLCAyMjEsIDE4NSwgMjQ4LCA3MSwgMjQ0LCAxNzksIDExOSwgNCwgMjQzLCAyMDIsIDExOSwgNiwgMjQyLCA2MCwgCisgICAgMjUxLCAyMTksIDYsIDI0MiwgNjAsIDEzOSwgNiwgMjQyLCA2MCwgMjI1LCAzNywgMjQ5LCAxOTEsIDIyNSwgMzcsIDI0OSwgCisgICAgMTkyLCAxMTcsIDExMywgMjI1LCAxMDgsIDExOSwgNiwgNzMsIDI1MSwgMjE5LCA2LCA3MywgMTE5LCA2LCAxNTYsIDExOSwgCisgICAgNCwgMTU2LCAyMzMsIDE0OSwgNTcsIDI1MiwgMTQxLCA4NywgMTM5LCA2LCAyMzAsIDI1LCAyMjcsIDE5NiwgNTAsIDIxOSwgCisgICAgMzEsIDIyMywgMTE5LCAyNDksIDE2MiwgMTE5LCA2LCAyMjYsIDEwNSwgMTM5LCA2LCAyMjYsIDEwNSwgMTM5LCA2LCAyMjQsIAorICAgIDk2LCAxMTksIDYsIDE1MywgMjUxLCAyMTksIDYsIDE1MywgMTM5LCA2LCAxNTMsIDIyNCwgMTk2LCAyMTcsIDcxLCAyMjMsIAorICAgIDYyLCAyMjAsIDEzMiwgNzgsIDIxNywgMSwgNTAsIDIxNSwgMjUzLCAxNjQsIDUwLCAyMTMsIDI0MCwgMTM5LCA2LCAyMTAsIAorICAgIDE1OSwgMjI2LCAxMzMsIDUwLCAyMjYsIDIyMSwgNTAsIDIzNSwgMTkzLCAyMjYsIDIyMSwgNTAsIDI1MSwgMjE5LCA2LCAKKyAgICAyMTAsIDE1OSwgMjE1LCA5NCwgMjYsIDQsIDEsIDIzNSwgMTg1LCAyMzQsIDE3MywgNTAsIDI1NCwgMTA3LCA1MCwgMTE5LCAKKyAgICA2LCAyNTMsIDE1OCwgMjUxLCAyMTksIDYsIDI1MSwgNjYsIDI0NSwgNjgsIDg3LCAxMTksIDQsIDc1LCAxMTksIDYsIDc1LCAKKyAgICAxMTksIDYsIDI0NSwgNiwgMjE1LCA5NCwgNiwgMjQ1LCA2LCAxMTksIDYsIDE5MywgMTE5LCA0LCA3NiwgMTEyLCA4NywgCisgICAgMjUyLCAyOSwgODcsIDI0MiwgMjAyLCA4NywgMjQ4LCAxOTAsIDg3LCAyMzUsIDIzMiwgMjE5LCAyOSwgMjIyLCAxODcsIDYsIAorICAgIDIyNCwgOTYsIDI0NCwgMTgyLCA1MCwgMTM5LCA0LCAyMjUsIDEwOCwgMTM5LCA0LCAyNDMsIDEwNywgMTM5LCA2LCAyNDMsIAorICAgIDEwNywgMTM5LCA2LCAyMjUsIDEwOCwgMTM5LCAyMzAsIDI0LCAyMTgsIDQwLCAyMTUsIDk0LCAzNSwgNiwgMjQzLCAyMDIsIAorICAgIDIxNSwgOTQsIDM1LCA2LCAxNTYsIDIyMywgNDksIDM1LCA2LCAxNTYsIDIxNSwgOTQsIDM1LCA2LCAyMTEsIDExNywgMTM5LCAKKyAgICAzMiwgNiwgMjQ5LCA2MCwgMTM5LCAzMiwgNCwgMjQ5LCA2MCwgMTM5LCAzMiwgNCwgNzUsIDEzOSwgMzIsIDQsIDczLCAxMzksIAorICAgIDMyLCA0LCAyMzUsIDE0NCwgMjI0LCAxNzAsIDIzMiwgMjEzLCAyMTUsIDk0LCAyNTQsIDEyNiwgMjI1LCAxODMsIDUwLCAKKyAgICAyNTQsIDE4MCwgMjE1LCA5NCwgNCwgMjQ1LCA2LCAxNiwgMzEsIDIyMSwgMjUyLCAyMTksIDI5LCAyMTIsIDExNCwgMjQ0LCAKKyAgICAyLCAxMjMsIDIyMCwgMTE4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDIyOCwgMTk0LCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIAorICAgIDIxNiwgMjQxLCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDIxNiwgMTY4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMTMsIDIxNiwgCisgICAgMTY2LCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0NCwgMTE3LCAyMTIsIDExNCwgMjQ0LCAyLCAxMTMsIDI0NCwgMTE2LCAKKyAgICAyMTIsIDExNCwgMjQ0LCAyLCAxMzQsIDI0NCwgMTE2LCAyMTIsIDExNCwgMjQ0LCAyLCAyNDQsIDExLCAyNDQsIDExNiwgCisgICAgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMTksIDExNSwgMjEyLCAxMTQsIDI0NCwgMiwgMjQ0LCA4MSwgMjE5LCAxMTMsIAorICAgIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDIxMiwgMTE0LCAyNDQsIDIsIDEzNCwgMjQ1LCAxODYsIDIxMiwgCisgICAgMTE0LCAyNDQsIDIsIDI0NCwgODEsIDI0NSwgMTg2LCAyMTIsIDExNCwgMjQ0LCAyLCAyMjAsIDEyMiwgMjQ1LCAxODYsIAorICAgIDI0NCwgMiwgMjI3LCAxOTcsIDExMCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTA1LCAKKyAgICAyMjIsIDE5OCwgMjI3LCAxOTgsIDE1OCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxNjEsIDIyMiwgMTk4LCAyMjcsIDE5OCwgCisgICAgMTg5LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTgsIDIyMiwgMTk4LCAyMjcsIAorICAgIDE5OCwgMTk1LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIwMCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTYsIDI0NywgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAyNDUsIDE2NywgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTUsIDc2LCAyMjIsIDE5OCwgMjI3LCAxOTgsIAorICAgIDI0NCwgMTE0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjQwLCAyMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ0LCA4MSwgCisgICAgMjQwLCAyMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0NywgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMTAsIAorICAgIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTA1LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE1OCwgNCwgMjIyLCAxOTgsIDIyNywgCisgICAgMTk4LCAxNjEsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTg5LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NCwgNCwgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAxOTgsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk1LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIAorICAgIDIwMCwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTYsIDI0NywgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDUsIDE2NywgNCwgCisgICAgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTUsIDc2LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgMTE0LCA0LCAyMjIsIAorICAgIDE5OCwgMjI3LCAxOTgsIDEyMywgMjQwLCAyMTAsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ0LCA4MSwgMjQwLCAyMTAsIAorICAgIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDIxNiwgMTQ4LCAKKyAgICAyNTEsIDY3LCAyNDksIDYwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIDIxNiwgMTQ3LCAyMjIsIDE5OCwgMjI3LCAKKyAgICAxOTgsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgMTk4LCAyMjMsIDQ5LCAxMjMsIDI0MCwgMjEwLCA3LCAKKyAgICA0LCAxLCAyMjMsIDQ5LCAyNTEsIDY2LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIxOSwgMTI1LCAyMzMsIDc4LCAxNywgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAyNDQsIDExNSwgMjQ1LCAyMjYsIDE3LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgMTE1LCAyMTYsIAorICAgIDE0NywgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjExLCAyMTYsIDE0NywgMjEyLCAxMTQsIDI0NCwgMiwgMjEwLCAKKyAgICA4NywgMjE2LCAxNjYsIDE0MCwgNzQsIDIxNCwgMTUzLCA3NCwgOTcsIDc0LCAyNDYsIDEwNCwgNzQsIDQzLCA0NCwgNzQsIAorICAgIDEyMCwgMTI0LCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAyMTksIDI4LCAyNDUsIAorICAgIDIyMCwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgNzQsIDE0MCwgODAsIDIsIDkxLCA5NywgODAsIDIsIDkxLCAxNDAsIDIxMiwgCisgICAgMzYsIDc0LCA5NywgMjEyLCAzNiwgNzQsIDE0MCwgMTEzLCAyNDEsIDIzNCwgNzQsIDIxNCwgMTUzLCAxMTMsIDI0MSwgMjM0LCAKKyAgICA3NCwgOTcsIDExMywgMjQxLCAyMzQsIDc0LCAyNDYsIDEwNCwgMTEzLCAyNDEsIDIzNCwgNzQsIDE0MCwgODAsIDIsIDIxNywgCisgICAgNzcsIDk3LCA4MCwgMiwgMjE3LCA3NywgMTQwLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDgwLCAyNDMsIDI0MywgCisgICAgMTMwLCA5NywgODAsIDI0MywgMjQzLCAxMzAsIDI0NiwgMTA0LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTIwLCAxMjQsIDgwLCAyLCAKKyAgICAyNTIsIDEyNywgMTQwLCA4MCwgMiwgMTAzLCA5NywgODAsIDIsIDEwMywgMTQwLCA4MCwgMiwgMjMyLCAxMjMsIDk3LCA4MCwgCisgICAgMiwgMjMyLCAxMjMsIDQzLCA0NCwgMjEyLCAzNiwgNzQsIDQzLCA0NCwgODAsIDIsIDkxLCAyNDYsIDEwNCwgMjEwLCAzNSwgCisgICAgNzQsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3NywgMjMzLCAzNywgMjE0LCAxNTMsIDgwLCAyLCAyMTYsIDc3LCAyMjIsIAorICAgIDI0MSwgMjQ2LCAxMDQsIDgwLCAyLCAyMTYsIDc3LCAyMzMsIDM3LCAyNDYsIDEwNCwgODAsIDIsIDIxNiwgNzcsIDIyMiwgCisgICAgMjQxLCA5NywgODAsIDIsIDI0OSwgMTYxLCAyNDYsIDEwMywgMjQ2LCAxMDQsIDgwLCAyLCAyNDksIDE2MSwgMjMzLCAzNywgCisgICAgMjU0LCA4OCwgMjE2LCAxNCwgMjIwLCAxNTMsIDc0LCAyNTAsIDIsIDIxNiwgMTQsIDIyMCwgMTUzLCA3NCwgMjI4LCA1NiwgCisgICAgMjEyLCA5LCA4MCwgMjE2LCA0MiwgMTk5LCAxMzAsIDE0MCwgODAsIDIxNiwgNDIsIDI1MiwgMTQxLCAxMTcsIDk3LCA4MCwgCisgICAgMjE2LCA0MiwgMTMwLCAyNTQsIDg4LCAyMDQsIDI1MCwgMzYsIDc0LCAyNTAsIDIsIDIwNCwgMjUwLCAzNiwgNzQsIDE0MCwgCisgICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMTQsIDE1MiwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgMTAzLCAKKyAgICAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI0MSwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIAorICAgIDEzOSwgMjMzLCAzNywgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjE0LCAxNTIsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAKKyAgICAxMzksIDI0NiwgMTAzLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI0MSwgMjQ2LCAxMDQsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgMjMzLCAzNywgOTcsIDgwLCAxMTcsIDE0MCwgNzQsIDIxNCwgMTUzLCA4MCwgMTQwLCA2NCwgCisgICAgMjQ2LCAxMDQsIDc0LCAxNDAsIDgwLCAxMTcsIDk3LCA3NCwgMTQwLCAyMjYsIDcwLCAyNTMsIDI0NywgMjE0LCAxNTMsIAorICAgIDIyNiwgNzAsIDI1MywgMjQ3LCA5NywgMjI2LCA3MCwgMjUzLCAyNDcsIDI0NiwgMTA0LCAyMjYsIDcwLCAyNTMsIDI0NywgCisgICAgMTQwLCAyNDEsIDI1NSwgMTE3LCA5NywgMjQxLCAyNTQsIDk3LCAyNDEsIDI1NSwgMTE3LCAxNDAsIDI0MSwgMjU0LCAxNDAsIAorICAgIDUyLCA4MCwgMiwgOTEsIDQzLCA0NCwgNTIsIDgwLCAyLCA5MSwgOTcsIDUyLCA4MCwgMiwgOTEsIDE0MCwgNTIsIDc0LCAKKyAgICAyMTQsIDE1MywgNTIsIDc0LCA5NywgNTIsIDc0LCAyNDYsIDEwNCwgNTIsIDc0LCA0MywgNDQsIDUyLCA3NCwgMTIwLCAxMjQsIAorICAgIDUyLCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA1MiwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA1MiwgNzQsIDIxOSwgMjgsIDI0NSwgCisgICAgMjIwLCA1MiwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgNTIsIDc0LCAxNDAsIDIxNSwgMjExLCA3NCwgOTcsIDIxNSwgMjExLCAKKyAgICA3NCwgMTQwLCAyMTgsIDIzMCwgNzQsIDk3LCAyMTgsIDIzMCwgNzQsIDIxNCwgMTUzLCA4MCwgMiwgNTIsIDkxLCAyNDYsIAorICAgIDEwNCwgODAsIDIsIDUyLCA5MSwgMTQwLCAyNDgsIDE1NSwgNzQsIDIxNCwgMTUzLCAyNDgsIDE1NSwgNzQsIDk3LCAyNDgsIAorICAgIDE1NSwgNzQsIDI0NiwgMTA0LCAyNDgsIDE1NSwgNzQsIDE0MCwgODAsIDIxNiwgNDIsIDEzMCwgOTcsIDgwLCAyMTYsIDQyLCAKKyAgICAxMzAsIDE0MCwgNzEsIDc0LCAyMTQsIDE1MywgNzEsIDc0LCA5NywgNzEsIDc0LCAyNDYsIDEwNCwgNzEsIDc0LCAyMTQsIAorICAgIDE1MywgNzEsIDgwLCAyNDMsIDI0MywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgMjI1LCAyMTQsIDIxNCwgCisgICAgMTUzLCA3MSwgODAsIDIyNiwgMTk3LCAyMjUsIDIxNSwgMiwgMjAzLCAxMzAsIDIxNCwgMTUzLCA3MSwgODAsIDIyNiwgMTk3LCAKKyAgICAyMjUsIDIxNSwgMiwgNjcsIDEzMCwgMjE0LCAxNTMsIDcxLCA1MiwgNzQsIDIxNCwgMTUzLCA3MSwgNTIsIDgwLCAyMjYsIAorICAgIDE5NywgMjI1LCAyMTQsIDk3LCA3MSwgODAsIDI0MywgMjQzLCAyMTIsIDU2LCAyMjgsIDU2LCAyMTIsIDksIDgwLCAyMTYsIAorICAgIDQyLCAyNDksIDE2MCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDgwLCAyMTYsIDQyLCAyNDksIDE2MCwgMTIwLCAxMjQsIDcxLCA3NCwgCisgICAgNDQsIDgwLCAyLCA0LCAyNTAsIDM1LCAyNDYsIDEwNCwgODAsIDE0MCwgNjQsIDIxNCwgMTUzLCA3NCwgMTM0LCA5NywgMjUzLCAKKyAgICAyNDcsIDE0MCwgODAsIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCA2NywgOTEsIDQzLCA0NCwgODAsIDIsIDY3LCA5MSwgMTQwLCAKKyAgICA4MCwgMiwgNTIsIDY3LCA5MSwgOTcsIDgwLCAyLCA1MiwgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA1MiwgNjcsIDkxLCAxNDAsIAorICAgIDIyNiwgMTczLCA3NCwgOTcsIDIyNiwgMTczLCA3NCwgNDMsIDQ0LCAyMjYsIDE3MywgNzQsIDMxLCAyNTQsIDE1NCwgMjQ5LCAKKyAgICAyMTQsIDIyNSwgMjUzLCAyNDcsIDIzMywgMjE2LCAxODcsIDI0NSwgMjcsIDIxNiwgMTg3LCAyNDcsIDEzOCwgMjI4LCA1MiwgCisgICAgMjQ1LCAyOCwgMjQ1LCAxNTIsIDIyMCwgMTI3LCAyMzUsIDI0NSwgMjI5LCAyMjEsIDI0NSwgMTcwLCAyMjYsIDIzMSwgMjI4LCAKKyAgICA1MiwgMjU0LCAxMjQsIDI0NSwgMTcwLCAyMjYsIDIzMSwgNCwgMjQ1LCAxNzAsIDIyNiwgMjMxLCAyNDksIDE4NiwgMjUzLCAKKyAgICAyMzgsIDIzMSwgNjIsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIzMSwgNjIsIDQsIDI0OSwgCisgICAgMTg2LCAyNTMsIDIzOCwgMjMxLCA2MiwgMjQ1LCAxNDMsIDY0LCAyMjQsIDE3MiwgMjMwLCAyNCwgMjI0LCAxODAsIDIzMCwgCisgICAgMjQsIDI0OSwgMTY1LCAyMzAsIDI0LCAyMTgsIDQwLCAyMzAsIDE4MiwgNTAsIDIzMCwgMTgwLCA1MCwgNTksIDIyNSwgMjIsIAorICAgIDI0NywgMTY5LCAyMTksIDk1LCAyMjAsIDEyOCwgMjMwLCAxODEsIDI1MywgMjE3LCAyMjYsIDE2NywgMjIyLCAyMzQsIDIyNiwgCisgICAgMTY3LCAyNTEsIDExNCwgMjI2LCAxNjcsIDQyLCAyMjIsIDE5MywgMjQ5LCAxMDksIDIyMiwgMTkzLCAyNDQsIDQsIDIyMiwgCisgICAgMTkzLCAyMjQsIDE2OCwgMTExLCAyMzUsIDIzNCwgNDQsIDI1NCwgMTA5LCAyNTQsIDEwOSwgMjMxLCA4OCwgMjU0LCAxMDksIAorICAgIDIxOCwgMjU1LCAyNTQsIDEwOSwgMjQ3LCAxNzEsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDcsIDE3NCwgMjI2LCA4LCAxMTEsIAorICAgIDIyOCwgNTIsIDIyNiwgOCwgMTExLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjM1LCAxOTgsIAorICAgIDIxNCwgMTc1LCAyMzUsIDIxMSwgNTIsIDIzNSwgMjExLCAyMTUsIDIxMSwgMjM1LCAyMTEsIDI0OSwgMTgyLCAyMzUsIDIxMSwgCisgICAgMjE4LCAxMywgMjM1LCAyMTEsIDIxMywgMTI5LCAyMzUsIDIxMSwgMjUwLCAyLCAyMzUsIDIxMSwgMjUwLCAyLCAyNDksIAorICAgIDE4MiwgMjM1LCAyMTEsIDI1NCwgODgsIDI0OSwgMTgyLCAyMzUsIDIxMSwgMjE2LCAxODYsIDI1MiwgNjcsIDIyMywgMTM3LCAKKyAgICAyMjQsIDE2OSwgNTksIDIzMCwgMTgxLCAyNDUsIDMzLCAyNDMsIDQ2LCAyMjQsIDE2OSwgMjQxLCA1NywgMjE2LCA4OSwgCisgICAgMjI2LCAxNjcsIDIyMywgNDksIDE4MiwgMjM1LCAxOTMsIDIzMywgNjUsIDIyMiwgOTEsIDIxOSwgMTU3LCAyMTIsIDM1LCAKKyAgICAyMTEsIDIwMCwgMjI0LCAxODAsIDIyOCwgNTIsIDE4MiwgMjMwLCAxODIsIDE4MiwgMjUzLCAyMTAsIDEyOCwgMTExLCAyMjgsIAorICAgIDUyLCAyNTMsIDIxMCwgMTI4LCAxMTEsIDI1NCwgNDgsIDEyOCwgMTExLCAyNTQsIDQ4LCAyNTEsIDg4LCAyMjgsIDUyLCAKKyAgICAyNTUsIDQsIDEyOCwgMTExLCAyMjksIDEwMCwgMjU0LCA0OCwgMjI4LCA1OSwgMjU1LCA0LCAxMjgsIDExMSwgMjU0LCAxNDgsIAorICAgIDEyOCwgMTExLCAyMjgsIDUyLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDI1NCwgMTQ4LCAxMjgsIDE3NywgMTI4LCAxMTEsIDIxNSwgCisgICAgMjExLCAxODIsIDI1NCwgMTU1LCAxMjgsIDExMSwgMjQ1LCA5NCwgMTExLCAyNDMsIDQ1LCAyNDUsIDk0LCAxMTEsIDI0NywgCisgICAgMjM0LCAyNTIsIDIzLCAyNTQsIDUwLCAyMTYsIDE5NiwgMjMyLCAyMjEsIDI0MywgNDUsIDEyOCwgMTExLCAyNTQsIDQ4LCAKKyAgICAxMjgsIDIxNiwgNDIsIDE3NywgMjE2LCAxOTYsIDIzNiwgMTUsIDIyNiwgMjMxLCAyMzYsIDE1LCA2NCwgMTc3LCAyNTQsIAorICAgIDQ4LCAxMjgsIDExMSwgMjQ5LCAyMjcsIDI0NSwgOTcsIDI0NSwgOTgsIDI0OSwgMjI2LCAyMjIsIDIzNCwgMjM2LCAwLCAKKyAgICAxMjgsIDExMSwgMjIyLCAyMzQsIDEyOCwgMTExLCAyNDksIDE1NCwgMTExLCAyNDUsIDY3LCAyNDUsIDk2LCAxMTEsIDIxOCwgCisgICAgMTU3LCAyNDUsIDk3LCAyNDgsIDU1LCAxMjgsIDExMSwgMTI4LCAyMTYsIDQyLCAyNTEsIDc4LCAyNDgsIDcyLCAyMzEsIDg4LCAKKyAgICAyNTEsIDc3LCAyMjQsIDExLCAxMjgsIDExMSwgMjI4LCA1MiwgMTI4LCAxMTEsIDI0MCwgMTA0LCAxMTEsIDIyOCwgNTIsIAorICAgIDI0MCwgMTA0LCAxMTEsIDIxOCwgMTA5LCAyNDUsIDk0LCAxMTEsIDIzMywgMTUsIDE3NywgMTI4LCAxMTEsIDI0MiwgMTMwLCAKKyAgICAxNzcsIDEyOCwgMTExLCAyMzMsIDE1LCAxMTcsIDEyOCwgMTExLCAyNDIsIDEzMCwgMTE3LCAxMjgsIDExMSwgMjMzLCAxNSwgCisgICAgMjUxLCA4OCwgMjI4LCA1MiwgMTI4LCAxMTEsIDI0MiwgMTMwLCAyNTEsIDg4LCAyMjgsIDUyLCAxMjgsIDExMSwgMjMwLCAKKyAgICA5NywgMjMzLCAxNCwgMjMwLCA5NywgMjQyLCAxMjksIDI1MiwgMjMsIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjI4LCA1MiwgCisgICAgMjMzLCAxNCwgMjI4LCA1MiwgMjQyLCAxMjksIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAxMjgsIDExMSwgMjI5LCAKKyAgICAxMDAsIDI0MiwgMTMwLCAyMjgsIDU5LCAxMjgsIDExMSwgMjMzLCAxNSwgMTc3LCAyNDUsIDk0LCAxMTEsIDI0MiwgMTMwLCAKKyAgICAxNzcsIDI0NSwgOTQsIDExMSwgMjI5LCAxMDAsIDIzMywgMTUsIDIyOCwgNTksIDI0NSwgOTQsIDExMSwgMjI5LCAxMDAsIAorICAgIDI0MiwgMTMwLCAyMjgsIDU5LCAyNDUsIDk0LCAxMTEsIDIzMywgMTUsIDE3NywgMjQyLCAxMjksIDI0MiwgMTMwLCAxNzcsIAorICAgIDIzMywgMTQsIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAyNDIsIDEyOSwgMjI5LCAxMDAsIDI0MiwgMTMwLCAyMjgsIAorICAgIDU5LCAyMzMsIDE0LCAyMjQsIDIwMiwgMjE4LCA1NSwgMjI0LCAyMDMsIDE3NywgMTI4LCAxMTEsIDIxOCwgNTYsIDE3NywgCisgICAgMTI4LCAxMTEsIDIyNCwgMjAzLCAxNzcsIDI0NSwgOTQsIDExMSwgMjE4LCA1NiwgMTc3LCAyNDUsIDk0LCAxMTEsIDI0NywgCisgICAgMTM4LCAyMjgsIDUyLCAyMjQsIDIwNSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIxOCwgNTcsIDIxOCwgNjQsIDIyNiwgMjMxLCAKKyAgICAyMTgsIDIyLCAyMjYsIDIzMSwgMjI4LCA1MiwgMTE1LCAyMTgsIDY0LCAyMjYsIDIzMSwgMjI4LCA1MiwgMTE1LCAyMTgsIAorICAgIDIyLCAyMjYsIDIzMSwgMjE4LCA2NCwgNjQsIDE3NywgMTI4LCAxMTEsIDIxOCwgMjIsIDY0LCAxNzcsIDEyOCwgMTExLCAKKyAgICAyMjksIDEwMCwgMTE1LCAyMTgsIDY0LCA2NCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIyOSwgMTAwLCAxMTUsIDIxOCwgMjIsIAorICAgIDY0LCAyMjgsIDU5LCAxMjgsIDExMSwgMjE4LCA2NCwgNjQsIDIsIDIyOCwgNTIsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgMiwgCisgICAgMjI4LCA1MiwgMTI4LCAxMTEsIDIzMCwgODEsIDIzMCwgODIsIDIzMCwgODMsIDIzMCwgODIsIDIxNCwgMTc1LCA0MiwgMjM2LCAKKyAgICAxNSwgMjI2LCAyMzEsIDQyLCAyMjYsIDE1MCwgMjI2LCAyMzEsIDQyLCAyMzYsIDE1LCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIAorICAgIDIyNiwgMTUwLCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIDI1MCwgMjUxLCA0MiwgMjQ5LCAxMDIsIDM3LCAyMjUsIDIyLCAzNywgCisgICAgMjMwLCAxODEsIDM3LCAyMTYsIDg1LCAzNywgMjQ3LCAxNjksIDIxOSwgOTUsIDM3LCA1OSwgMjI2LCAxNjcsIDM3LCAyMjIsIAorICAgIDIzNCwgMjI2LCAxNjcsIDM3LCAyNTMsIDIxNywgMjI2LCAxNjcsIDM3LCAyNDUsIDk3LCAzNywgMjQ4LCAxNTYsIDkyLCAKKyAgICAyMjUsIDIyLCA5MiwgMjMwLCAxODEsIDkyLCAyMTYsIDg1LCA5MiwgNTksIDIyNiwgMTY3LCA0NCwgMjE3LCA4NywgNDMsIAorICAgIDIxNywgODcsIDEyNCwgMjE3LCA4NywgMTIwLCAyMTcsIDg3LCAyNTMsIDIyMCwgMjMwLCAxNTYsIDIxNSwgMTkxLCAyNDQsIAorICAgIDI1LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MSwgNTIsIDQ0LCAyMTUsIAorICAgIDkzLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjI0LCAxNjMsIDIyOCwgNTIsIDIxNSwgMTkxLCAyNDcsIDEzOCwgMjI4LCA1MiwgCisgICAgMjQ0LCAyNiwgMjI5LCAxMDIsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0NCwgMjE1LCA5MywgMjI0LCAyMDMsIDIxNCwgMTg0LCAKKyAgICAyMjMsIDkxLCAyMTgsIDU2LCAyMTQsIDE4NCwgMjIzLCA5MSwgMjI4LCA1NywgMjE4LCA3NywgMjI2LCAyMzEsIDI0OSwgCisgICAgMTg2LCAyNTMsIDIzOCwgMjI4LCA1NywgMjE4LCA3NiwgMjI4LCA1NywgMjE4LCA3NywgNjQsIDE3NywgMTI4LCAxMTEsIAorICAgIDI0OSwgMTg2LCAyNTMsIDIzOCwgMjI4LCA1NywgMjE4LCA3NywgMTc3LCAxMjgsIDExMSwgMjI2LCAxNTAsIDIyNiwgMjMxLCAKKyAgICAyMzYsIDE1LCAyMjYsIDIzMSwgMjMwLCA4NywgMjQxLCAyMDAsIDI0OSwgMTk2LCAyMzEsIDEzNywgMjM1LCAyMDgsIDIxMSwgCisgICAgMTQ1LCAyMjksIDIwMiwgMjI4LCA1OCwgNDQsIDI1NCwgMTEwLCAyLCAyNTQsIDI1LCA0NCwgMjE1LCAyMjUsIDIzMCwgMjQsIAorICAgIDIzMiwgMTQ2LCAyNTQsIDExOCwgMjMwLCAyNCwgMjMyLCAxNDYsIDIyNiwgMTU4LCAyMzAsIDI0LCAyMzUsIDE5OCwgMjMwLCAKKyAgICAyNCwgMjE0LCAxNzUsIDI0NywgMjQ5LCAyMjYsIDE2NywgNTksIDIyNiwgMTY3LCAyMTgsIDE1NywgMjI2LCAxNjcsIDI0NywgCisgICAgMTY5LCAyMTYsIDg1LCAyNTEsIDE2NCwgNDMsIDIyOCwgNTcsIDI0NCwgMTgxLCAyMjAsIDE0OSwgMjI0LCAxODAsIDQ0LCAKKyAgICAyMjgsIDU3LCAyNDQsIDE4MSwgMjIwLCAxNDksIDIyNCwgMTgwLCA0MywgMjIwLCAxNDksIDIyNCwgMTgwLCA0NCwgMjIwLCAKKyAgICAxNDksIDIyNCwgMTgwLCAyMjMsIDQ5LCAyMTYsIDg5LCAyNDUsIDk3LCAyNDksIDk5LCAyMzIsIDE0NiwgMjI2LCAxNTgsIAorICAgIDI0OSwgOTksIDIzMiwgMTQ2LCAyNTQsIDExOCwgNTIsIDIxOCwgNjMsIDUyLCAyMTgsIDIxLCA1MiwgMjM1LCAxOTgsIDUyLCAKKyAgICAyMTQsIDE3NSwgMjI1LCA0NywgMTI4LCAyMiwgMjI2LCA4LCAxMTEsIDIzMywgMTUsIDIsIDI0NywgMTIwLCAyNDIsIDEzMCwgCisgICAgMiwgMjQ3LCAxMjAsIDIxMywgMTg3LCAyMzAsIDk3LCAyMzMsIDE0LCAyMTMsIDE4NywgMjMwLCA5NywgMjQyLCAxMjksIAorICAgIDIzMywgMTUsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMjQyLCAxMzAsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIAorICAgIDE0LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTI5LCAxMjgsIDIxNiwgCisgICAgNDIsIDE3NywgMjI0LCAyMDIsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMTgsIDU1LCAyNDcsIDEzOCwgMjI4LCA1MiwgMjI0LCAKKyAgICAyMDYsIDE3NywgMjQ1LCA5OSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIxOCwgNTgsIDE3NywgMjQ1LCA5OSwgMjI4LCA1MiwgNDIsIAorICAgIDIzNiwgMTUsIDY0LCAxNzcsIDEyOCwgMTExLCAyMjgsIDUyLCA0MiwgMjI2LCAxNTAsIDY0LCAxNzcsIDEyOCwgMTExLCA0MiwgCisgICAgMjM2LCAxNSwgNjQsIDE3NywgMjI4LCA1MiwgMTI4LCAxMTEsIDQyLCAyMjYsIDE1MCwgNjQsIDE3NywgMjI4LCA1MiwgMTI4LCAKKyAgICAxMTEsIDIzMywgMTUsIDI1MSwgODgsIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjQyLCAxMzAsIDI1MSwgODgsIDIyOCwgNTIsIAorICAgIDI0NSwgOTQsIDExMSwgMjI0LCAyMDMsIDI1MSwgODgsIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjE4LCA1NiwgMjUxLCA4OCwgCisgICAgMjI4LCA1MiwgMjQ1LCA5NCwgMTExLCAyMjgsIDUyLCAyMjgsIDU3LCAyMTgsIDc3LCAyMjYsIDIzMSwgMjQ3LCAxMzgsIAorICAgIDIyOCwgNTIsIDI0OSwgMTg4LCAyNTMsIDIzOCwgMjI4LCA1NywgMjE4LCA3NiwgMjI4LCA1MiwgMjI4LCA1NywgMjE4LCA3NywgCisgICAgNjQsIDE3NywgMTI4LCAxMTEsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgCisgICAgNzcsIDE3NywgMjQ1LCA5OSwgNjcsIDI0NSwgMTYzLCAyMzAsIDIyMiwgMjAzLCAyNDUsIDE2MywgMTIwLCA0NCwgMjQ3LCAKKyAgICAyNTUsIDI0NSwgMTYzLCAxMjQsIDQ0LCAyNDcsIDI1NSwgMjQ1LCAxNjMsIDI0NSwgMTcwLCA2NCwgMiwgMTk5LCAyMDMsIAorICAgIDkxLCAyNDUsIDE3MCwgNjQsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCA5MSwgNCwgCisgICAgMjQ1LCAxNzAsIDY0LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgOTEsIDI0NSwgMTcwLCAKKyAgICA2NCwgMiwgNTksIDQ4LCAyNDUsIDE3MCwgNjQsIDIsIDIyNiwgMTIzLCA0LCAyNDUsIDE3MCwgNjQsIDIsIDIyNiwgMTIzLCAKKyAgICAyNDUsIDE3MCwgNjQsIDIsIDIxNCwgMTgzLCAyNDUsIDE3MCwgNjQsIDIsIDExMywgMjAzLCAyMTgsIDkwLCAyNDksIDE4NiwgCisgICAgMiwgMTk5LCAyMDMsIDkxLCAyNDksIDE4NiwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIAorICAgIDkxLCA0LCAyNDksIDE4NiwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIDkxLCAyNDksIAorICAgIDE4NiwgMiwgMjI2LCAxMjMsIDQsIDI0OSwgMTg2LCAyLCAyMjYsIDEyMywgMjEwLCAxNjAsIDE4NywgMjUyLCAxNzMsIDIzMSwgCisgICAgNjEsIDI0NywgMjUwLCA1MCwgMjQ1LCAxNzIsIDc0LCAyNDAsIDIzNCwgMTIwLCAyNTMsIDI0OSwgMTI0LCAyNTMsIDI0OSwgCisgICAgMjI0LCAxNzUsIDIyNSwgMTY1LCAyMTIsIDMyLCAyMzIsIDIxMywgNDMsIDI1MCwgMTgxLCA0NCwgMjUwLCAxODEsIDQzLCAKKyAgICAyNDQsIDU3LCA0NCwgMjQ0LCA1NywgMjUxLCAxNzUsIDQ0LCAyNDksIDEzMiwgMjUxLCAxNzUsIDQzLCAyNDksIDEzMiwgCisgICAgMjE2LCAxNCwgNDQsIDI0OSwgMTMyLCAyMTYsIDE0LCA0MywgMjQ5LCAxMzIsIDIyMywgNDksIDIyOCwgNTIsIDUwLCA0MiwgCisgICAgMjMyLCAxMDQsIDI1NCwgMjUsIDIyMSwgMTY0LCAyMjEsIDE3MSwgMjE3LCAxLCAyMjMsIDEyMCwgMjI0LCAyNDEsIDIzNSwgCisgICAgMjM4LCAyMTMsIDE2NSwgMjE4LCAyMzQsIDIyNSwgNDEsIDY0LCAyMzUsIDIwNywgNTAsIDIxNSwgOTQsIDIyOCwgNTIsIDUwLCAKKyAgICAyMTIsIDQyLCAyNDAsIDIzNiwgMjE2LCAxNCwgNDMsIDI0OSwgMTYwLCAyMTYsIDE0LCA0NCwgMjQ5LCAxNjAsIDI1MSwgCisgICAgMTc1LCA0MywgMjQ5LCAxNjAsIDI1MSwgMTc1LCA0NCwgMjQ5LCAxNjAsIDIxNiwgMTQsIDE2MywgMjM1LCAyMTEsIDI1MSwgCisgICAgMTc1LCAxNjMsIDIzNSwgMjExLCAyNDMsIDI0MCwgMjE5LCA3NSwgMTIwLCAyNTMsIDI1MCwgMjUyLCAyNCwgMTEzLCAyMDMsIAorICAgIDI1MiwgMTI5LCAyMjYsIDE2MCwgMjM0LCAxMzgsIDI0NSwgOTAsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMjIsIDI1MSwgMjExLCAKKyAgICAxNzksIDIzNiwgMCwgMTE1LCAyMjMsIDExNywgMjUxLCAxNjMsIDIzNCwgMTM3LCAyMzMsIDQyLCAyNTQsIDExMCwgMTI3LCAKKyAgICAyMjIsIDI0NywgMjU0LCAxMTAsIDEyNywgMjQ1LCA5MCwgMjE2LCA0MiwgMjE2LCAxOTYsIDIzMywgNDYsIDI1MiwgMzUsIAorICAgIDIyMiwgMjMzLCAyNDksIDcwLCAyNTQsIDE1NSwgMjU0LCAxLCAyMTcsIDE4MSwgMjE2LCA0LCAyMjIsIDEyMywgMjQ3LCAKKyAgICAyMTUsIDIyNiwgMTUxLCAyNDksIDE5OCwgMjE3LCA1MiwgMjE5LCA4NiwgMjQ5LCAxNTEsIDI0OSwgMTUwLCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDI0MCwgMTUxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxOCwgMjI4LCAyMjQsIDI3LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NSwgOTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ3LCAKKyAgICAxNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ3LCAyNDgsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjI0LCAyOCwgMjM1LCA1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNTAsIDM1LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDI1MCwgMzYsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDIzNSwgNTYsIDI1NCwgCisgICAgNjYsIDI0MywgMjI1LCAxNiwgMjE5LCA5NiwgMTMwLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MiwgMTgxLCAxMzAsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjE5LCA5NSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAKKyAgICAyNTIsIDE4MCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyMzMsIDE0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDI0MiwgMTI5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDE0MCwgMjE0LCAxOSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCA5NywgMjE0LCAxOSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAxNDAsIDc0LCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDk3LCA3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyNTIsIDE4MCwgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjQsIDIxNywgODgsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI0OCwgNTUsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDEyNCwgMjUwLCAyMzgsIDI1NCwgCisgICAgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ4LCA1NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjQsIDIxNywgODgsIAorICAgIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE0LCAxNTMsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjI0LCAyOCwgMjE0LCAxNTMsIDc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDEyMCwgMjE3LCA4OCwgMjI2LCAxMjMsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ4LCA2NiwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCisgICAgMTIwLCAyNTAsIDIzOCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDgsIDY1LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDEyMCwgMjE3LCA4OCwgMjM1LCA1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDYsIDEwNCwgMjE0LCAxOSwgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDYsIDEwNCwgNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIzLCAKKyAgICAyNTMsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OCwgNTUsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDI0NywgMjQ5LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMzUsIDU3LCAyMTQsIDE4MywgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIAorICAgIDIyMCwgNSwgMjM1LCA1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjMsIDI1MywgMjI0LCAyNywgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNTAsIDM2LCAyMTgsIDE1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDksIDIyNiwgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDgsIAorICAgIDY2LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE4LCAxNTcsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIAorICAgIDE2LCAyMzUsIDU3LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjQ4LCAxLCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDEyNCwgMjIwLCA1LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCA0MywgMjIwLCA1LCAKKyAgICAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTYsIDg5LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjQyLCAxMzAsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDksIDIyMCwgMTMwLCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDI0OCwgNjYsIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTAsIDM0LCAyNTQsIDY2LCAyNDMsIDIyNSwgCisgICAgMTYsIDIxOCwgMTM2LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIwLCAxNTEsIDIxNCwgMTgzLCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDIyOCwgNTIsIDI0NSwgOTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCisgICAgMjI0LCAxMiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjQsIDI1MCwgMjM5LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAKKyAgICAxNiwgMTIwLCAyNTAsIDIzOSwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIzNSwgMTg1LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDIyMywgMzcsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI2LCAyMDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjU0LCAxNDQsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0NSwgMTAxLCAyMTQsIDE4MywgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMzUsIDE4NiwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI2LCAyMDIsIDIxNCwgCisgICAgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1NCwgMTQzLCAyMjgsIDUyLCAyNTAsIDEzMCwgNzgsIDQ0LCAyNTQsIAorICAgIDExMCwgMiwgMjQ2LCAxMDQsIDIxMCwgMzUsIDc0LCAyMTksIDIzNSwgMjA0LCAyNTEsIDE2MywgMjUyLCA0NSwgODcsIDY3LCAKKyAgICAyMzIsIDIxNCwgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCAyMzUsIDIxNiwgODcsIDI0OSwgMTgzLCAyMTQsIDE4MSwgODcsIAorICAgIDI0NywgMTg5LCAyMTQsIDE4MSwgODcsIDI0NSwgMTU0LCA4NywgMjQ5LCAyMTAsIDg3LCA3MSwgNDIsIDIsIDI1MCwgMTc1LCAKKyAgICA2NywgMjMyLCAyMTMsIDI0NSwgMTMwLCA4NywgMjU0LCAxMzksIDIzNCwgMTM5LCA4NywgMjQxLCAyMTMsIDg3LCAzNywgCisgICAgMjAzLCAyNTIsIDE0MSwgMiwgMjI4LCA1MCwgMzcsIDIxNSwgMjI2LCAyNDYsIDEwNiwgMjUxLCAxMzUsIDI1MCwgMzYsIDIsIAorICAgIDIyOCwgNTQsIDc0LCAyMTQsIDE3OSwgODcsIDIzMCwgMTM3LCA4NywgMjQwLCAxNjQsIDg3LCAyMjYsIDE3NCwgMjQyLCA1OSwgCisgICAgODcsIDIyNiwgMTc0LCAyMzMsIDE0NywgODcsIDIyNSwgMjQ0LCA4NywgMjI1LCAyNDMsIDg3LCAyNDcsIDE5NywgMjQ5LCAKKyAgICA5NywgMTYsIDI0NCwgMjAsIDEwNSwgMjE5LCA1MCwgODcsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyNywgMjQ4LCAKKyAgICA4MywgMjIwLCAxMzgsIDIzNCwgMTM5LCA4NywgMjI0LCAxOTIsIDIyNiwgNzUsIDIyOSwgODIsIDIyNiwgNzUsIDIyNCwgCisgICAgMTg4LCAyMjEsIDE4OSwgODcsIDI1MCwgMTcsIDIyMSwgMTg5LCA4NywgNDMsIDIyNiwgNCwgMjE0LCAxNjAsIDEwMywgNDMsIAorICAgIDIyNiwgNCwgMjQ1LCAyMSwgNDMsIDIyNiwgNCwgMjMyLCAxMDgsIDEwMywgNDQsIDIyNiwgNCwgMjE0LCAxNjAsIDEwMywgCisgICAgNDQsIDIyNiwgNCwgMjQ1LCAyMSwgNDQsIDIyNiwgNCwgMjMyLCAxMDgsIDEwMywgNDMsIDQyLCAyNTEsIDE1OCwgMjE0LCAKKyAgICAxNjAsIDI0OSwgMTYwLCA0MywgNDIsIDI1MSwgMTU4LCAyNDUsIDIxLCA0MywgNDIsIDI1MSwgMTU4LCAyMzIsIDEwOCwgCisgICAgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDIxNCwgMTYwLCAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMjQ1LCAKKyAgICAyMSwgNDQsIDQyLCAyNTEsIDE1OCwgMjMyLCAxMDgsIDI0OSwgMTYwLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIxNCwgCisgICAgMTYwLCAxMDMsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjMwLCAyMjQsIDIyNSwgMTAxLCA0MywgMjQ5LCA5OSwgMjUxLCAKKyAgICAxNTgsIDIzMiwgMTA4LCAxMDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyNDUsIDIxLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIAorICAgIDIxNCwgMTYwLCAxMDMsIDQ0LCAyNDksIDk5LCAyNTEsIDE1OCwgMjMwLCAyMjQsIDIyNSwgMTAxLCA0NCwgMjQ5LCA5OSwgCisgICAgMjUxLCAxNTgsIDIzMiwgMTA4LCAxMDMsIDIzNSwgMjEyLCAyNDUsIDIxLCAyMDMsIDIzMiwgMjE0LCAyNDUsIDIxLCAyMTQsIAorICAgIDE2MCwgNDMsIDE3NywgMjMyLCAxMDgsIDQ0LCAyNDksIDk5LCAyNTEsIDE1OCwgMjIxLCAxNzIsIDIxNCwgMTYwLCA0NCwgCisgICAgMTc3LCAyMzIsIDEwOCwgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMjEsIDE3MiwgMjE4LCA0MSwgMjE2LCAxMywgMjE4LCAKKyAgICA0MSwgMjUxLCAxNzQsIDIxNiwgMTQsIDQyLCAxMjcsIDI1MSwgMTc1LCA0MiwgMTI3LCAyNTEsIDE3NSwgNDIsIDI1MSwgCisgICAgMTU4LCAxMTcsIDIxNiwgMTQsIDQyLCAxMjcsIDM0LCAxNiwgMjUxLCAxNzQsIDQzLCA2NywgOTMsIDIzMiwgMjEzLCA0NCwgCisgICAgNjcsIDkzLCAyMzIsIDIxMywgMjAzLCAyMjEsIDIwNSwgMjMyLCAyMTIsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjExLCAyMDMsIAorICAgIDIyMSwgMjA1LCAyMzIsIDIxMCwgMjAzLCAyMjEsIDIwNSwgMjMyLCAyMDksIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgCisgICAgMjE2LCAxNCwgMjIyLCAyNTEsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjUxLCAxNzUsIDIyMiwgMjUxLCAyNDgsIDQ2LCAKKyAgICAxNiwgMTkyLCA2NywgMiwgMjUwLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgMTI0LCAyMiwgMjAzLCAyLCAyNTAsIDM1LCAyNDgsIAorICAgIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAyMDMsIDIsIDI1MCwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyLCAyMTUsIDIyNSwgCisgICAgMjQ4LCA0NiwgMTYsIDE5MiwgMTI0LCAyMiwgMjAzLCAyLCAyMTUsIDIyNSwgMjQ4LCA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgCisgICAgMjAzLCAyLCAyMTUsIDIyNSwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAyMTIsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCAKKyAgICAxMjQsIDIyLCAyMDMsIDIsIDIxMiwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIDIwMywgMiwgMjEyLCAzNSwgCisgICAgMjQ4LCA0NiwgMTYsIDE5MiwgMTI0LCAyMiwgMjQxLCA0NCwgMjQ4LCA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgMjQxLCA0NCwgCisgICAgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAyMTYsIDE0LCAyMzMsIDQ2LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIAorICAgIDI1MSwgMTc1LCAyMzMsIDQ2LCA0MiwgMjQ0LCAzMiwgMjIzLCA1NCwgODcsIDI0NSwgMTgyLCA4NywgNjcsIDIzMiwgMjE0LCAKKyAgICAyNDUsIDIxLCAyMzEsIDMzLCAyNTEsIDE0NiwgMjMxLCAzMywgMTk5LCAxMTcsIDIxOSwgMjUwLCAyMzEsIDMzLCAyMTksIAorICAgIDI1MSwgMTE3LCAyMzIsIDEzNywgMjMxLCAzMywgMTk5LCAxMTcsIDExMywgMjE5LCAyMzcsIDIzMSwgMzMsIDExMywgMjE5LCAKKyAgICAyMzgsIDExNywgMjMyLCAxMzcsIDIzMSwgMzMsIDExMywgMjE5LCAyMzgsIDIzNSwgNjQsIDIzMSwgMzMsIDIxNSwgMjA4LCAKKyAgICAyMzEsIDMzLCAyMTYsIDIyMywgMjMxLCAzMywgMjI1LCAxODgsIDI0NSwgMjI0LCAyNDIsIDEyMiwgMjQzLCAyMTksIDIxNiwgCisgICAgMTQsIDIyNiwgMywgMjUxLCAxNzUsIDIyNiwgMywgMjE2LCAxNCwgMjQ5LCA5OSwgMTI3LCAyNTEsIDE3NSwgMjQ5LCA5OSwgCisgICAgMTI3LCAyMTYsIDE0LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMjUxLCAxNzUsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA3MSwgCisgICAgMjE1LCAyMzksIDI1MiwgMzUsIDIyMiwgMjM0LCAyLCAyNTAsIDM1LCAyMTgsIDEyMCwgMjQ0LCA2NCwgMjU1LCAxNywgMjQ5LCAKKyAgICA5NiwgMjQ1LCAxNzEsIDIzNSwgMTk4LCAyNDgsIDgzLCAyNDUsIDI0LCA4NywgODUsIDIyMiwgMjQ3LCA1MiwgMjE1LCAyMjUsIAorICAgIDg1LCAyMzMsIDQyLCA1MiwgMjE1LCAyMjUsIDg1LCAyMTQsIDE2MiwgNTIsIDIxNSwgMjI1LCA4NSwgMjQ2LCAxMDUsIDUyLCAKKyAgICAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCA1MiwgMjE1LCAyMjYsIDIsIDY3LCAxMzAsIDg1LCAyMzMsIDQyLCA1MiwgMjE1LCAKKyAgICAyMjYsIDIsIDY3LCAxMzAsIDg1LCAyMjIsIDI0NywgMjE1LCAyMjYsIDIsIDUyLCA2NywgMTMwLCAyNTQsIDE3MywgMjUwLCAKKyAgICAzLCAyMTgsIDEyNiwgMjE2LCA4NiwgMjUwLCAzLCAyNDAsIDIzNywgMiwgMjQ0LCA1MCwgMjIxLCAyNDEsIDE2LCAzMSwgCisgICAgMjI3LCAyMDIsIDE2LCAzMSwgMjE4LCAxNTIsIDY0LCAyNDEsIDIzMywgMTYsIDMxLCAyMTgsIDE1MiwgNjQsIDIxNiwgMjEyLCAKKyAgICAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE2LCAyMTIsIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMTUsIDI0MywgMTYsIDMxLCAKKyAgICAyNDUsIDEzMiwgMTYsIDMxLCAyNTUsIDcsIDE2LCAzMSwgMjUyLCA0NCwgMTYsIDMxLCAyNTIsIDE3OSwgMTYsIDMxLCAyMDMsIAorICAgIDIxNywgODksIDE2LCAzMSwgMjMyLCAyMTQsIDI0NCwgMTQ1LCAxNiwgMzEsIDY3LCAyMTcsIDg5LCAxNiwgMzEsIDI0NCwgCisgICAgMjAsIDI0NCwgMTQ1LCAxNiwgMzEsIDI1MCwgMjMwLCAyMjMsIDUzLCAxNiwgMzEsIDIyMCwgMjgsIDIyNiwgMTMwLCAxNiwgCisgICAgMzEsIDIyMCwgMjgsIDIzNSwgMjU1LCAxNiwgMzEsIDI0OCwgMTUxLCAyMzIsIDIwNCwgMjQ1LCA3NywgMTYsIDMxLCAyNDgsIAorICAgIDMxLCAyNDksIDE3OCwgMTEwLCAxNiwgMzEsIDI0OCwgMzEsIDI0OSwgMTc4LCAxMDUsIDE2LCAzMSwgMjQ4LCAzMSwgMjQ5LCAKKyAgICAxNzgsIDE1OCwgMTYsIDMxLCAyNDgsIDMxLCAyNDksIDE3OCwgMTYxLCAxNiwgMzEsIDE1MiwgMjU1LCA3LCAxNiwgMzEsIAorICAgIDIxNywgMTc3LCAyMzYsIDYyLCAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDQsIDI1MSwgMjEzLCAxNiwgMzEsIDI1MSwgCisgICAgNSwgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIzMSwgODEsIDE2LCAzMSwgMjE4LCA2MSwgMTYsIDMxLCAyNDUsIDc3LCAxNiwgCisgICAgMzEsIDI0NCwgMTA3LCAyMjAsIDEzNywgMTYsIDMxLCAyNDIsIDEyMSwgMjIwLCAxMzcsIDE2LCAzMSwgMjIzLCAxMjEsIAorICAgIDIyMCwgMTM3LCAxNiwgMzEsIDIxNCwgMTc0LCAyMjAsIDEzNywgMTYsIDMxLCAyMTksIDE4LCAxNiwgMzEsIDI0OCwgNjMsIAorICAgIDI1MSwgMjE2LCA4NywgMjA0LCAyNTEsIDE2MywgMTYsIDMxLCAyMjksIDg1LCAxNiwgMzEsIDI0OCwgNjQsIDI0NCwgMjAsIAorICAgIDEwNSwgMTYsIDMxLCAyMTgsIDYyLCAyNDQsIDIwLCAxMDUsIDIyNiwgMjQxLCAxMDMsIDIyNiwgMjQxLCAyNTAsIDE1MiwgCisgICAgMjI2LCAyNDEsIDI0NCwgMjMsIDIyNiwgMjQxLCAyMzUsIDE5MywgMjQ0LCAyMywgMjI2LCAyNDEsIDI1MiwgNDIsIDI1MSwgCisgICAgMTI0LCAyMjYsIDI0MSwgMjUxLCAxNzAsIDIxNiwgMTExLCAyMjYsIDI0MSwgMjUxLCAxNTUsIDI1MiwgMTQ2LCAyNDAsIAorICAgIDEwMywgMjI2LCAyNDEsIDI1NCwgMTI3LCA2NCwgMjUwLCAxMjksIDIyNiwgMjQxLCAyNDgsIDE1NiwgMjI2LCAyNDEsIDI0OSwgCisgICAgODcsIDI1NSwgMTEsIDIyNywgMjAwLCAyMjYsIDI0MSwgNTIsIDI1MiwgMTgwLCAzNywgMjEsIDExMCwgMzcsIDIxLCAxMDUsIAorICAgIDM3LCAyMSwgMTU4LCAzNywgMjEsIDE2MSwgMzcsIDIxLCAxODksIDM3LCAyMSwgMTk0LCAzNywgMjEsIDE5OCwgMzcsIDIxLCAKKyAgICAxOTUsIDM3LCAyMSwgMjAwLCAzNywgNTQsIDIxNiwgMjQ3LCAzNywgNTQsIDI0NSwgMTY3LCAzNywgNTQsIDIxNSwgNzYsIAorICAgIDM3LCA1NCwgMjE2LCAxNjQsIDM3LCA1NCwgMjQ0LCA1LCAzNywgNTQsIDI0NCwgMTE4LCAzNywgNTQsIDIxOSwgMTE5LCAzNywgCisgICAgNTQsIDIyMCwgMTE5LCAzNywgNTQsIDI0NSwgMTkwLCAzNywgNTQsIDIyOCwgMTk3LCAzNywgNTQsIDIxNSwgNzMsIDg4LCAKKyAgICAyMSwgMTEwLCA4OCwgMjEsIDEwNSwgODgsIDIxLCAxNTgsIDg4LCAyMSwgMTYxLCA4OCwgMjEsIDE4OSwgODgsIDIxLCAxOTQsIAorICAgIDg4LCAyMSwgMTk4LCA4OCwgMjEsIDE5NSwgODgsIDIxLCAyMDAsIDg4LCA1NCwgMjE2LCAyNDcsIDg4LCA1NCwgMjQ1LCAKKyAgICAxNjcsIDg4LCA1NCwgMjE1LCA3NiwgODgsIDU0LCAyMTYsIDE2NCwgODgsIDU0LCAyNDQsIDUsIDg4LCA1NCwgMjQ0LCAxMTgsIAorICAgIDg4LCA1NCwgMjE5LCAxMTksIDg4LCA1NCwgMjIwLCAxMTksIDg4LCA1NCwgMjQ1LCAxOTAsIDg4LCA1NCwgMjI4LCAxOTcsIAorICAgIDg4LCA1NCwgMjE1LCA3MywgMjEsIDEyMywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMTEzLCAyNDMsIDIyOSwgMjE4LCAKKyAgICAxMjksIDIxLCAxMzQsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDI0NCwgMTEsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIAorICAgIDI0NCwgODEsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDIxOSwgMTI1LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMjAsIAorICAgIDEyMiwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjQ1LCAxOTMsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDIyOCwgMjAwLCAKKyAgICAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMTYsIDI0OCwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjQ1LCAxNjgsIDI0MywgCisgICAgMjI5LCAyMTgsIDEyOSwgNTQsIDIxNSwgNzcsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIxNiwgMTY1LCAyNDMsIDIyOSwgCisgICAgMjE4LCAxMjksIDU0LCAyNDQsIDYsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDI0NCwgMTE5LCAyNDMsIDIyOSwgMjE4LCAKKyAgICAxMjksIDU0LCAyMTksIDEyMCwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjIwLCAxMjAsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgNTQsIDI0NSwgMTkxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMjgsIDE5OCwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgCisgICAgMjE1LCA3NCwgMjQzLCAyMjksIDIxOCwgMTI5LCA4OCwgNywgNCwgMSwgNjEsIDg4LCA3LCA0LCAxLCAyNTMsIDE1OCwgODgsIAorICAgIDcsIDQsIDEsIDI1MSwgNjYsIDg4LCA3LCA0LCAxLCAyNDksIDYwLCA4OCwgNywgNCwgMSwgNzUsIDg4LCA3LCA0LCAxLCAKKyAgICAyNDUsIDYsIDg4LCA3LCA0LCAxLCAyNDMsIDIwMiwgODgsIDcsIDQsIDEsIDI0MiwgNjAsIDg4LCA3LCA0LCAxLCA3MywgODgsIAorICAgIDcsIDQsIDEsIDIzNSwgMTQ0LCA4OCwgNywgNCwgMSwgMjM1LCAyMywgODgsIDcsIDQsIDEsIDE1NiwgODgsIDcsIDQsIDEsIAorICAgIDE5MywgODgsIDcsIDQsIDEsIDIzMCwgMjUsIDg4LCA3LCA0LCAxLCA3NiwgODgsIDcsIDQsIDEsIDIyNiwgMTA1LCA4OCwgNywgCisgICAgNCwgMSwgMjI0LCA5NiwgODgsIDcsIDQsIDEsIDE1MywgODgsIDcsIDQsIDEsIDIyMiwgOTEsIDg4LCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MiwgODgsIDcsIDQsIDEsIDcwLCA4OCwgNywgNCwgMSwgMjE0LCAxMDUsIDg4LCA3LCA0LCAxLCAyMTIsIDk4LCA4OCwgNywgCisgICAgNCwgMSwgMjExLCAxNzgsIDg4LCA3LCA0LCAxLCAyMTEsIDExNywgODgsIDcsIDQsIDEsIDIxMCwgMTU5LCAzNywgNywgNiwgCisgICAgMSwgNjEsIDM3LCA3LCA2LCAxLCAyNTMsIDE1OCwgMzcsIDcsIDYsIDEsIDI1MSwgNjYsIDM3LCA3LCA2LCAxLCAyNDksIDYwLCAKKyAgICAzNywgNywgNiwgMSwgNzUsIDM3LCA3LCA2LCAxLCAyNDUsIDYsIDM3LCA3LCA2LCAxLCAyNDMsIDIwMiwgMzcsIDcsIDYsIDEsIAorICAgIDI0MiwgNjAsIDM3LCA3LCA2LCAxLCA3MywgMzcsIDcsIDYsIDEsIDIzNSwgMTQ0LCAzNywgNywgNiwgMSwgMjM1LCAyMywgCisgICAgMzcsIDcsIDYsIDEsIDE1NiwgMzcsIDcsIDYsIDEsIDE5MywgMzcsIDcsIDYsIDEsIDIzMCwgMjUsIDM3LCA3LCA2LCAxLCAKKyAgICA3NiwgMzcsIDcsIDYsIDEsIDIyNiwgMTA1LCAzNywgNywgNiwgMSwgMjI0LCA5NiwgMzcsIDcsIDYsIDEsIDE1MywgMzcsIDcsIAorICAgIDYsIDEsIDIyMiwgOTEsIDM3LCA3LCA2LCAxLCAyMTcsIDE1MiwgMzcsIDcsIDYsIDEsIDcwLCAzNywgNywgNiwgMSwgMjE0LCAKKyAgICAxMDUsIDM3LCA3LCA2LCAxLCAyMTIsIDk4LCAzNywgNywgNiwgMSwgMjExLCAxNzgsIDM3LCA3LCA2LCAxLCAyMTEsIDExNywgCisgICAgMzcsIDcsIDYsIDEsIDIxMCwgMTU5LCAzNywgNywgNCwgMSwgNjEsIDM3LCA3LCA0LCAxLCAyNTMsIDE1OCwgMzcsIDcsIDQsIAorICAgIDEsIDI1MSwgNjYsIDM3LCA3LCA0LCAxLCAyNDksIDYwLCAzNywgNywgNCwgMSwgNzUsIDM3LCA3LCA0LCAxLCAyNDUsIDYsIAorICAgIDM3LCA3LCA0LCAxLCAyNDMsIDIwMiwgMzcsIDcsIDQsIDEsIDI0MiwgNjAsIDM3LCA3LCA0LCAxLCA3MywgMzcsIDcsIDQsIAorICAgIDEsIDIzNSwgMTQ0LCAzNywgNywgNCwgMSwgMjM1LCAyMywgMzcsIDcsIDQsIDEsIDE1NiwgMzcsIDcsIDQsIDEsIDE5MywgCisgICAgMzcsIDcsIDQsIDEsIDIzMCwgMjUsIDM3LCA3LCA0LCAxLCA3NiwgMzcsIDcsIDQsIDEsIDIyNiwgMTA1LCAzNywgNywgNCwgCisgICAgMSwgMjI0LCA5NiwgMzcsIDcsIDQsIDEsIDE1MywgMzcsIDcsIDQsIDEsIDIyMiwgOTEsIDM3LCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MiwgMzcsIDcsIDQsIDEsIDcwLCAzNywgNywgNCwgMSwgMjE0LCAxMDUsIDM3LCA3LCA0LCAxLCAyMTIsIDk4LCAzNywgNywgCisgICAgNCwgMSwgMjExLCAxNzgsIDM3LCA3LCA0LCAxLCAyMTEsIDExNywgMzcsIDcsIDQsIDEsIDIxMCwgMTU5LCAzNywgMjEsIAorICAgIDIxMCwgODYsIDE1MiwgMzcsIDU0LCAyNDUsIDE2NywgMTUyLCAzNywgNTQsIDIxNSwgNzYsIDE1MiwgMzcsIDU0LCAyMTYsIAorICAgIDE2NCwgMTUyLCAzNywgNTQsIDI0NCwgNSwgMTUyLCAzNywgNTQsIDI0NCwgMTE4LCAxNTIsIDM3LCA1NCwgMjE5LCAxMTksIAorICAgIDE1MiwgMzcsIDU0LCAyMjAsIDExOSwgMTUyLCAzNywgNTQsIDI0NSwgMTkwLCAxNTIsIDM3LCA1NCwgMjI4LCAxOTcsIDE1MiwgCisgICAgMzcsIDU0LCAyMTUsIDczLCA1MiwgMzcsIDIxLCAxMTAsIDUyLCAzNywgMjEsIDEwNSwgNTIsIDM3LCAyMSwgMTU4LCA1MiwgCisgICAgMzcsIDIxLCAxNjEsIDUyLCAzNywgMjEsIDE4OSwgNTIsIDM3LCAyMSwgMTk0LCA1MiwgMzcsIDIxLCAxOTgsIDUyLCAzNywgCisgICAgMjEsIDE5NSwgNTIsIDM3LCAyMSwgMjAwLCA1MiwgMzcsIDU0LCAyMTYsIDI0NywgMTUyLCAzNywgMjEsIDIxMCwgODYsIDkzLCAKKyAgICA5OSwgMTkyLCAyNDEsIDQ0LCA5MywgOTksIDExNCwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDIxMywgMjM5LCA5MywgOTksIAorICAgIDExNCwgMjEzLCAyMzksIDkzLCA5OSwgMTkyLCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTE0LCAKKyAgICAyMTUsIDIxMSwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDIxMywgMjM5LCAKKyAgICA5MywgOTksIDExNCwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTIsIDIyNCwgMjQsIDI0OCwgCisgICAgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDExNCwgMjI0LCAyNCwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMjQsIAorICAgIDI0LCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMjQsIDI0LCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgCisgICAgMTkyLCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQ0LCAyNDEsIDIyMSwgOTMsIDk5LCAxMjQsIAorICAgIDExNCwgMjIsIDQ0LCAyMzIsIDIzMCwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMTI0LCAKKyAgICAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIAorICAgIDQzLCAyMzIsIDIzMCwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDQ0LCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQ0LCAyMzIsIAorICAgIDIzMCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMjMzLCA0NiwgOTMsIAorICAgIDk5LCAxMjAsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQzLCAyMzIsIDIzMCwgOTMsIAorICAgIDk5LCAxMTQsIDEyMCwgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCA2NywgMjIsIDIyMiwgMjUxLCA5MywgOTksIDY3LCAKKyAgICAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMCwgOTMsIDk5LCAKKyAgICAxMjQsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDY3LCAxMTQsIDIyLCA0NCwgMjMyLCAyMzAsIDkzLCAKKyAgICA5OSwgMTI0LCAxOTIsIDIyLCA0NCwgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDQ0LCAxMjQsIDI0MSwgCisgICAgMjIxLCA5MywgOTksIDExNCwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDY3LCAyMiwgMjMzLCA0NiwgOTMsIDk5LCAKKyAgICA2NywgMTkyLCAyMiwgNDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDMsIDEyNCwgMjMyLCAyMzAsIDkzLCAKKyAgICA5OSwgMTI0LCAxMTQsIDIyLCA0MywgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA2NywgMTE0LCAyMiwgNDMsIDIzMiwgMjMwLCAKKyAgICA5MywgOTksIDEyNCwgMTkyLCAyMiwgNDMsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0MywgMTI0LCAKKyAgICAyNDEsIDIyMSwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDEyNCwgMjIsIDI0MSwgNDQsIAorICAgIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCA0MywgMTI0LCAKKyAgICAyMzIsIDIzMCwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAyMDMsIAorICAgIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgMTI0LCAyNDEsIDIyMSwgOTMsIDk5LCA0MywgMTkyLCAyMiwgCisgICAgNDQsIDEyNCwgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMTIwLCAyMiwgCisgICAgMjQxLCA0NCwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDExNCwgMjIsIDQzLCAKKyAgICAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgMjAzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIAorICAgIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDE5MiwgMjIsIDQzLCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDQzLCAxOTIsIAorICAgIDIyLCA0NCwgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCA2NywgCisgICAgMjIsIDI0MSwgNDQsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCA2NywgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDExNCwgMjIsIAorICAgIDQzLCA2NywgMjMyLCAyMzAsIDkzLCA5OSwgNjcsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIAorICAgIDIyLCAxMjQsIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAxMjAsIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgCisgICAgNjcsIDExNCwgMjIsIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgNDMsIDEyMCwgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzAsIAorICAgIDkzLCA5OSwgNDQsIDEyMCwgMTE0LCAyMiwgNDMsIDEyNCwgMjMyLCAyMzAsIDkzLCA5OSwgNDMsIDEyNCwgMTE0LCAyMiwgCisgICAgNDQsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDEyNCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgCisgICAgMTI0LCAxOTIsIDIyLCAxMjAsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCAxMjQsIDIwMywgMjQxLCAKKyAgICAyMjEsIDkzLCA5OSwgNDQsIDE5MiwgMjIsIDQzLCA2NywgMjQxLCAyMjEsIDkzLCA5OSwgNDMsIDE5MiwgMjIsIDQ0LCA2NywgCisgICAgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCA1MiwgMjQ4LCAxNTcsIDI0MSwgCisgICAgNDQsIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCA1MiwgMjQ4LCAxNTcsIDIxMywgCisgICAgMjM5LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTU3LCAyMTMsIDIzOSwgOTMsIDk5LCA1MiwgMjQxLCA0NCwgOTMsIDk5LCAKKyAgICA1MiwgMjEzLCAyMzksIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCAxMjQsIDUyLCAKKyAgICAyMiwgNDQsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxMjQsIDIxOSwgMTU1LCAKKyAgICAyMiwgNDMsIDI0NiwgMTEzLCA5MywgOTksIDEyNCwgNTIsIDIyLCA0MywgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIAorICAgIDIzMywgNDYsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCAxMjAsIDUyLCAyMiwgCisgICAgNDQsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxMjAsIDIxOSwgMTU1LCAyMiwgCisgICAgNDMsIDI0NiwgMTEzLCA5MywgOTksIDEyMCwgNTIsIDIyLCA0MywgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIAorICAgIDIzMywgNDYsIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgNDQsIDI0NiwgMTEzLCA5MywgOTksIDY3LCA1MiwgMjIsIDQ0LCAKKyAgICAyMTksIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCA2NywgMjE5LCAxNTUsIDIyLCA0MywgCisgICAgMjQ2LCAxMTMsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCA2NywgMjIsIDIzMywgNDYsIAorICAgIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAxMTMsIDkzLCA5OSwgMTI0LCA1MiwgMjIsIDIwMywgMjE5LCAKKyAgICAxNTQsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAKKyAgICAxMTMsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDIwMywgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDI0MSwgNDQsIAorICAgIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgMjAzLCAyNDYsIDExMywgOTMsIDk5LCA2NywgNTIsIDIyLCAyMDMsIDIxOSwgCisgICAgMTU0LCA5MywgOTksIDUyLCA2NywgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjQsIDIyLCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyNCwgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjAsIAorICAgIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTIwLCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAyNDcsIAorICAgIDI1NSwgMjE0LCAxNjAsIDQ0LCAyMTYsIDQyLCAyMzIsIDEwOCwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDI0NywgMjU1LCAKKyAgICAyMTQsIDE2MCwgNDMsIDIxNiwgNDIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDI0NywgMjU1LCAyNDksIAorICAgIDEzMCwgOTMsIDk5LCAxOTIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyMTQsIDE2MywgOTMsIDk5LCAxOTIsIDIyMiwgMjUxLCAKKyAgICA5MywgOTksIDE5MiwgMjQ2LCAxMDYsIDkzLCA5OSwgMTE0LCAyMzMsIDQ2LCA5MywgOTksIDExNCwgMjE0LCAxNjMsIDkzLCAKKyAgICA5OSwgMTE0LCAyMjIsIDI1MSwgOTMsIDk5LCAxMTQsIDI0NiwgMTA2LCA5MywgOTksIDE5MiwgNDMsIDIyLCAxMTQsIDIyMiwgCisgICAgMjUxLCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMTE0LCAyNDYsIDEwNiwgOTMsIDk5LCAxMTQsIDQzLCAyMiwgMTkyLCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDE5MiwgMjQ2LCAxMDYsIDIxNCwgMTYwLCAxNjMsIDI1MSwgMjEzLCAyMzIsIAorICAgIDEwOCwgMTIzLCAyNDUsIDE4OSwgMjUxLCAyMTMsIDIzMiwgMTA4LCAxMjMsIDIyNCwgMjIsIDI1MSwgMjEzLCAyMzIsIDEwOCwgCisgICAgMTM0LCAyNDUsIDE4NywgMjUxLCAyMTMsIDIzMiwgMTA4LCAxNjMsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMjQ0LCA4MSwgMjQ1LCAKKyAgICAxODcsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTM0LCAyMjQsIDIwLCAyNTEsIDIxMywgMjMyLCAxMDgsIDIyMCwgMTIyLCAyNDUsIAorICAgIDE4NywgMjUxLCAyMTMsIDI0MywgMjI5LCAyNTEsIDIxMywgNDMsIDIyMCwgMTIyLCAyNDUsIDE4NywgMjUxLCAyMTMsIDQzLCAKKyAgICAxMzQsIDIyNCwgMjAsIDI1MSwgMjEzLCA0MywgMjQ0LCA4MSwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgMTYzLCAyNTEsIAorICAgIDIxMywgNDMsIDEzNCwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgMTIzLCAyMjQsIDIyLCAyNTEsIDIxMywgNDMsIDEyMywgCisgICAgMjQ1LCAxODksIDI1MSwgMjEzLCA0NCwgMTYzLCAyNTEsIDIxMywgMTkyLCAyMjAsIDkyLCAyMzEsIDgyLCAyMjAsIDkyLCAKKyAgICAyNDgsIDE2MiwgMjIwLCA5MiwgMjE0LCAxNjAsIDEyMywgMjQ1LCAxODksIDI1MSwgMjEzLCA0NCwgMTIzLCAyNDUsIDE4OSwgCisgICAgMjUxLCAyMTMsIDIyNCwgMjYsIDIzMiwgMTA4LCAyMzMsIDQ2LCAyMjQsIDI2LCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgCisgICAgMjYsIDIxNCwgMTYwLCAyMzMsIDQ2LCAyMjQsIDI2LCAyMTQsIDE2MCwgNDMsIDIyLCAyMzIsIDEwOCwgNDMsIDIyLCAyMzIsIAorICAgIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIDIxNCwgMTYwLCA0MywgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgMjI0LCAyNiwgCisgICAgMjE0LCAxNjAsIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDgsIDIzMywgNDYsIDIyNCwgMjYsIDIxNCwgMTYwLCAKKyAgICA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgMjI0LCAyNiwgMjE0LCAxNjAsIDIyMiwgCisgICAgMjUxLCAyMjQsIDI2LCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOCwgMjMzLCA0NiwgMjI0LCAyNiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMiwgMjMyLCAxMDgsIDQzLCAyMiwgMjMyLCAxMDgsIDIyMiwgMjUxLCA4NSwgMjE4LCAyMzQsIDcxLCAyMTgsIDIzNCwgNzEsIAorICAgIDQyLCAyLCAyMjIsIDE4MywgMjQ5LCAxNTksIDcxLCA0MiwgMjQ5LCAxODcsIDg1LCA0LCAyMTgsIDIzNCwgNDIsIDIsIDIwMywgCisgICAgMjQ0LCAxMDUsIDQyLCAyLCA2NywgMjQ0LCAxMDUsIDQyLCAyLCAyMjYsIDE0NCwgMjQ5LCAxMjYsIDI0NCwgMTA1LCA0MiwgCisgICAgMiwgMjE0LCAxNjAsIDQzLCAyMTYsIDQyLCAyMzIsIDEwOCwgNDQsIDI0NCwgMTA1LCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMTYsIDQyLCAyMzIsIDEwOCwgNDMsIDI0NCwgMTA1LCA0MiwgMiwgMjQ3LCAyNTUsIDI0OSwgMTI2LCAyNDQsIDEwNSwgODUsIAorICAgIDQsIDIxOCwgMjM0LCA3MSwgNCwgMjE4LCAyMzQsIDg1LCAyMjMsIDExNiwgNzEsIDIyMywgMTE2LCA4NSwgNjcsIDIyMywgCisgICAgMTE2LCA3MSwgNjcsIDIyMywgMTE2LCA4NSwgMjI2LCA2LCA3MSwgMjI2LCA2LCA4NSwgMjE0LCAxNjIsIDIxNSwgMjI1LCAKKyAgICA3MSwgMjE0LCAxNjIsIDIxNSwgMjI1LCA4NSwgMjE0LCAxNjIsIDQsIDIxNSwgMjI1LCA3MSwgMjE0LCAxNjIsIDQsIDIxNSwgCisgICAgMjI1LCA4NSwgMjIyLCAyNDcsIDIxNSwgMjI1LCA3MSwgMjIyLCAyNDcsIDIxNSwgMjI1LCA4NSwgMjIyLCAyNDcsIDQsIAorICAgIDIxNSwgMjI1LCA3MSwgMjIyLCAyNDcsIDQsIDIxNSwgMjI1LCA4NSwgMjIyLCAyNDcsIDIyNSwgOCwgNzEsIDIyMiwgMjQ3LCAKKyAgICAyMjUsIDgsIDg1LCAyNDYsIDEwNSwgMjE1LCAyMjUsIDcxLCAyNDYsIDEwNSwgMjE1LCAyMjUsIDg1LCAyNDYsIDEwNSwgNCwgCisgICAgMjE1LCAyMjUsIDcxLCAyNDYsIDEwNSwgNCwgMjE1LCAyMjUsIDg1LCAyMzMsIDQyLCAyMTUsIDIyNSwgNzEsIDIzMywgNDIsIAorICAgIDIxNSwgMjI1LCA4NSwgMjMzLCA0MiwgNCwgMjE1LCAyMjUsIDcxLCAyMzMsIDQyLCA0LCAyMTUsIDIyNSwgODUsIDIzMywgCisgICAgNDIsIDIyNSwgOCwgNzEsIDIzMywgNDIsIDIyNSwgOCwgODUsIDI0NywgMjQ4LCA3MSwgMjQ3LCAyNDgsIDcxLCAyNDcsIAorICAgIDI0OSwgMjQ5LCAxODcsIDg1LCA0LCAyNDcsIDI0OCwgMjQ0LCA4OSwgMjMyLCAxMDQsIDcxLCAyNTAsIDM1LCAyNDYsIDExOCwgCisgICAgMjUwLCAzNSwgMjUwLCAzNiwgMiwgNjcsIDI0NCwgMTA1LCAyNTEsIDExMSwgODUsIDI1MCwgMzUsIDI1MCwgMzYsIDIsIDQzLCAKKyAgICAxNjMsIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjMyLCAxMDgsIDE2MywgCisgICAgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDIxNCwgMTYwLCAxNjMsIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgNDQsIAorICAgIDIyNCwgMjYsIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyNTQsIDE1NSwgMjUxLCA4OCwgMjE0LCAxNjAsIDQzLCAyMjQsIDI2LCAKKyAgICAyNTEsIDIyMSwgNDMsIDE2MywgODUsIDI1MCwgMzUsIDQ0LCAxNjMsIDg1LCAyNTAsIDM1LCAyMzUsIDE5NCwgMjUxLCAxMTMsIAorICAgIDIzNSwgMTk0LCA3MSwgMjUwLCAzNSwgMjE0LCAxNjAsIDE2MywgMjM1LCAxOTQsIDcxLCAyNTAsIDM1LCAyMzIsIDEwOCwgCisgICAgMTYzLCAyMzUsIDE5NCwgNzEsIDI1MCwgMzUsIDIxNCwgMTYwLCA0MywgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjE0LCAKKyAgICAxNjAsIDQ0LCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIDI1LCAyMzIsIDEwOCwgNDQsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgCisgICAgMjUsIDIzMiwgMTA4LCA0MywgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjE0LCAxNjAsIDE2MywgMjUwLCAzNSwgMjMyLCAKKyAgICAxMDgsIDE2MywgMjUwLCAzNSwgODUsIDIzMiwgMTA4LCA0NCwgMjE1LCAyMjUsIDg1LCAyMzIsIDEwOCwgNDMsIDIxNSwgCisgICAgMjI1LCA4NSwgMjE0LCAxNjAsIDQzLCAyMTUsIDIyNSwgODUsIDIxNCwgMTYwLCA0NCwgMjE1LCAyMjUsIDcxLCAyNTEsIAorICAgIDExMywgNDIsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMTQsIDE2MCwgCisgICAgNDMsIDI0NywgMjU1LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjMyLCAxMDgsIDQ0LCAyNDcsIDI1NSwgMTYzLCAyNTEsIAorICAgIDIyMSwgNzEsIDQyLCAyLCA2NywgMjUxLCAyMzIsIDIzMiwgMjEzLCA3MSwgMjE0LCAxNjIsIDIxNSwgMjI2LCAyLCAyNDcsIAorICAgIDEyMCwgMjE0LCAxNjIsIDIxNSwgMjI2LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjE0LCAxNjIsIDIxNSwgMjI2LCAyLCA0NCwgCisgICAgMTYzLCAyNTEsIDIyMSwgMjMzLCA4NSwgMjUwLCAzNSwgNzEsIDQyLCAyLCAyMTQsIDE2MCwgNDMsIDIyNCwgMjUsIDcxLCAKKyAgICA0MiwgMiwgMjMyLCAxMDgsIDQzLCAyMjQsIDI1LCA3MSwgNDIsIDIsIDIzMiwgMTA4LCA0NCwgMjI0LCAyNSwgNzEsIDQyLCAKKyAgICAyLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjUsIDcxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgNDMsIDIyNCwgMjUsIDcxLCAyNTAsIAorICAgIDM2LCAyLCAyMzIsIDEwOCwgNDMsIDIyNCwgMjUsIDcxLCAyNTAsIDM2LCAyLCAyMzIsIDEwOCwgNDQsIDIyNCwgMjUsIDcxLCAKKyAgICAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjUsIDIxNCwgMTYwLCA0MywgMjE1LCAyMjUsIDIxNCwgMTYwLCA0NCwgCisgICAgMjE1LCAyMjUsIDIzMiwgMTA4LCA0MywgMjE1LCAyMjUsIDcxLCAyMzEsIDgyLCAyMTgsIDIzNCwgODUsIDIzMSwgODIsIAorICAgIDIxOCwgMjM0LCA3MSwgMjMxLCA4MiwgNCwgMjE4LCAyMzQsIDg1LCAyMzEsIDgyLCA0LCAyMTgsIDIzNCwgMjMyLCAxMDgsIAorICAgIDQ0LCAyMTUsIDIyNSwgODUsIDIxOCwgMzgsIDIsIDIyMywgMTMyLCAyNDksIDI0NywgMjE0LCAxOTQsIDIxOSwgNjAsIDI0OSwgCisgICAgMjIyLCA4NSwgMjE4LCAxNTYsIDcxLCAyMTgsIDE1NiwgMjMyLCAyMjgsIDIxNiwgMTMyLCAyMTgsIDM3LCAyNTMsIDIzNCwgCisgICAgMjI4LCA3MSwgMjQ4LCAzOCwgMjI4LCA3MSwgMjQ5LCAxOTUsIDIyNiwgMTYzLCA4NSwgMjE3LCAwLCA3MSwgMjE3LCAwLCAKKyAgICAyNTIsIDE1NiwgMjUxLCAxNjMsIDI1MiwgMTU2LCA5MywgMiwgMjUwLCAxMjksIDI1MiwgMTU2LCA5MywgMiwgMjExLCAxNzgsIAorICAgIDIyMSwgMjU0LCAyMTQsIDE5NSwgMiwgMjIzLCAxNjAsIDI0NiwgODQsIDI0MCwgMjQzLCAyNTIsIDIyLCA3MSwgMjIwLCAyLCAKKyAgICAyMjUsIDEwMSwgODUsIDIyMCwgMiwgMjI1LCAxMDEsIDIyMCwgODcsIDIyMywgNDksIDIyMiwgMTg3LCAyNDQsIDU1LCAyNDEsIAorICAgIDIyOCwgMjUxLCAxMTMsIDg1LCA0MywgMjI1LCA3LCAyMzUsIDI0MiwgODUsIDQ0LCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgCisgICAgNDMsIDIyNSwgNywgMjM1LCAyNDIsIDcxLCAxMjAsIDIyNSwgNywgMjM1LCAyNDIsIDcxLCA0NCwgMjI1LCA3LCAyMzUsIAorICAgIDI0MiwgNzEsIDEyNCwgMjI1LCA3LCAyMzUsIDI0MiwgMjE5LCAxMDEsIDIyLCAyNDksIDEyOSwgMjUwLCAyMTksIDUwLCAKKyAgICAyMjMsIDE3MiwgNTAsIDI1MSwgMjM5LCA1MCwgMjUxLCAyNSwgMjU0LCAxMDIsIDIyNiwgMTQ1LCAyNDksIDEzMCwgMjUwLCAKKyAgICAxMTEsIDIyMywgMzcsIDI0OSwgMTMxLCA2NCwgMjMyLCAxMTgsIDI0OSwgMTMxLCA2NCwgMjM1LCAxMTYsIDIxOCwgMTU3LCAKKyAgICAyMiwgMjQ5LCAxMzYsIDI0NCwgMTY4LCA4NywgMjU0LCAyNDgsIDIyMCwgODksIDI0MiwgMjIsIDIyLCAyMTksIDE4OSwgCisgICAgMjI1LCAyMjAsIDg3LCAyMTAsIDI1NCwgMjExLCA2OSwgMjE1LCAyMTUsIDMxLCAyNDEsIDIyMywgMjE1LCAyMTUsIDMxLCAKKyAgICAyMzMsIDEwNywgMjE1LCAyMTUsIDMxLCAyNDQsIDk2LCAyMTUsIDIxNSwgMzEsIDIxNiwgMTMzLCAyMTUsIDIxNSwgMzEsIAorICAgIDIxMSwgMjM5LCAyMTUsIDIxNSwgMzEsIDIxMiwgNDAsIDIxNSwgMjE1LCAzMSwgMjMwLCAxMTUsIDIxNSwgMjE1LCAzMSwgCisgICAgMjQ1LCAyMjMsIDIxMiwgMSwgNjQsIDI0OCwgMTgsIDcxLCAyNDMsIDIzOSwgMjQ0LCAxOTAsIDcxLCAyMTksIDc0LCAyNDQsIAorICAgIDE5MCwgODUsIDIxOSwgNzQsIDI0NCwgMTkwLCA3MSwgMjE4LCAzOCwgMiwgMjIzLCAxMzIsIDI0NCwgOTIsIDIyNCwgMjIsIAorICAgIDIzMCwgMTI4LCAyMzMsIDgwLCAyMjQsIDIyLCAyMzAsIDEyOCwgMjMxLCA1NCwgMjQ0LCAxMzgsIDUwLCAyNDUsIDIyMywgCisgICAgMjMxLCAxOTAsIDUwLCAyMzUsIDM4LCAyMjEsIDIyMCwgMjE0LCAxNDUsIDIyOSwgOTMsIDIyNSwgMjAsIDI1NCwgMTIsIAorICAgIDIxNywgNDAsIDI0MywgNTIsIDI1MSwgMywgMjMzLCAxOSwgMjEzLCAxNTAsIDIzMiwgMjM4LCAyMjEsIDE5MSwgMjIyLCAxOSwgCisgICAgMjUwLCAyNDgsIDI1NCwgNDIsIDIyNSwgNTIsIDcxLCAyNTAsIDExNywgMjM0LCA3OCwgNzEsIDI1MCwgMTE3LCAyMjQsIDE0LCAKKyAgICA3MSwgMjUwLCAxMTcsIDIyMiwgMTk1LCA3MSwgMjUwLCAxMTcsIDI1MSwgMjMxLCA3MSwgMjUwLCAxMTcsIDIzNCwgMzAsIAorICAgIDcxLCAyNTAsIDExNywgMjI1LCAyMzEsIDg1LCAyNTAsIDExNywgMjM0LCA3OCwgODUsIDI1MCwgMTE3LCAyMjQsIDE0LCA4NSwgCisgICAgMjUwLCAxMTcsIDIyMiwgMTk1LCA4NSwgMjUwLCAxMTcsIDI1MSwgMjMxLCA4NSwgMjUwLCAxMTcsIDIzNCwgMzAsIDg1LCAKKyAgICAyNTAsIDExNywgMjI1LCAyMzEsIDg1LCAyMTksIDE2LCAyMTgsIDUwLCA3MSwgMjQxLCAyMjgsIDIxOCwgNTAsIDcxLCAyNDcsIAorICAgIDI0OSwgMjE4LCA1MCwgODUsIDI0OSwgMjQ1LCAyMTgsIDUwLCA3MSwgMjE5LCAxNiwgMjE4LCA1MCwgODUsIDI0MSwgMjI4LCAKKyAgICAyMTgsIDUwLCA4NSwgMjQ3LCAyNDksIDIxOCwgNTAsIDcxLCAyNDksIDI0NSwgMjE4LCA1MCwgMjQwLCAyNDMsIDIxOCwgCisgICAgMjM4LCAyMjQsIDIyLCAyMjgsIDQ3LCAyNDUsIDE4OSwgMjI4LCA0NywgMjUyLCA3MywgMjQ1LCAxODksIDIyOCwgNDIsIAorICAgIDI1MiwgNzMsIDIxOSwgMTE4LCAyMjgsIDQyLCAyMzAsIDU3LCAyNDQsIDY2LCA1MCwgMjMwLCA1NywgMjI5LCAxODgsIDUwLCAKKyAgICAyMzAsIDU3LCAyMjAsIDc2LCA1MCwgMjEyLCA5LCAxODgsIDI0OSwgMTMwLCAyNDUsIDIyMCwgMTg4LCAyNDksIDEzMCwgCisgICAgMjE0LCAxNzEsIDIyMywgMTEyLCA4NywgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0OCwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjE1LCA0NywgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0NiwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjE1LCA0NSwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0NCwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjE1LCA0MywgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0MiwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjQzLCA1MCwgMjMxLCAxMzgsIDg1LCAyMTQsIDE3MSwgMjIzLCAxMTIsIDg3LCAyMjMsIDExMywgMjI2LCAyMCwgODcsIAorICAgIDIyNSwgMjUyLCAyMjYsIDIwLCA4NywgMjI1LCAxNzQsIDIyNiwgMjAsIDUwLCAyMTEsIDI1NSwgODcsIDI0NywgMjQxLCAKKyAgICAyNDQsIDE4OSwgMjQ3LCAyNDEsIDI0NCwgMTg4LCAyNDcsIDI0MSwgMjQ0LCAxODcsIDI0NywgMjQxLCAyNDQsIDE4NiwgCisgICAgMjQ3LCAyNDEsIDI0NCwgMTg1LCAyNDcsIDI0MSwgMjQ0LCAxODQsIDcxLCAyNTAsIDM2LCAyLCA1OSwgMjIyLCAyNTEsIDcxLCAKKyAgICAyNTAsIDM2LCAyLCAxMTMsIDI0NywgMTE4LCA4NSwgMjUwLCAzNiwgMiwgNzEsIDU5LCAyMjIsIDI1MSwgODUsIDI1MCwgMzYsIAorICAgIDIsIDExMywgNzEsIDI0NywgMTE4LCAyMzAsIDE0MiwgMzEsIDIxMSwgNjksIDIzMCwgMTQyLCAzMSwgMjEwLCAyNTMsIDI0NywgCisgICAgMjI0LCAzMSwgMjQyLCAxMzEsIDIxMSwgNjksIDI0NywgMjI0LCAzMSwgMjMzLCAxMywgMjEwLCAyNTMsIDI0NywgMjI0LCAKKyAgICAzMSwgMjMzLCAxMywgMjExLCA2OSwgMjQ3LCAyMjQsIDMxLCAyNDIsIDEzMSwgMjEwLCAyNTMsIDcxLCAyNDQsIDczLCA4NSwgCisgICAgMjQ0LCA3MywgMjQyLCAyMiwgMjIsIDIyNSwgMTA0LCAyNTQsIDEyMCwgMjQ5LCAxMjgsIDIxNywgMjM1LCAyMTgsIDE2NCwgCisgICAgNjQsIDI1NCwgMjI2LCAyMjEsIDIwNiwgMjU0LCAxNjksIDI0NCwgNTEsIDI0MywgNjAsIDIxOCwgMTY0LCA2NCwgMjQxLCAKKyAgICAyMDIsIDI1MywgMTk5LCA4NywgMjQ0LCA2MiwgMjI2LCAxMjYsIDcxLCAyMTgsIDE1NiwgMTM0LCAyMzIsIDIwOCwgMjQ5LCAKKyAgICAxNzUsIDIyMiwgMjUxLCAxMzQsIDIzMiwgMjA4LCAyNDksIDE3NSwgMjMzLCA0NiwgMjEyLCA1MCwgNTAsIDEyNSwgMjEzLCAKKyAgICAxMzAsIDUwLCAyNDYsIDExMCwgMjQ0LCAxMzgsIDUwLCAyNDYsIDExMCwgMjMxLCAxOTAsIDUwLCAyMzUsIDIwMywgMjQ0LCAKKyAgICAxMzgsIDIyLCAyMzEsIDE5MCwgNTAsIDIzMSwgMTkwLCAyMiwgMjQ0LCAxMzgsIDUwLCAyMzEsIDE5MCwgMiwgMjE4LCAxMDMsIAorICAgIDUwLCAyMzEsIDE5MCwgMiwgMjE4LCAxMDMsIDIyLCAyMzEsIDE5MCwgMjIsIDI0NCwgMTM4LCA1MCwgNjcsIDIzMSwgMTkwLCAKKyAgICAyLCAyMTgsIDEwMywgNTAsIDIwMywgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCA1MCwgMjMxLCA4MiwgNzEsIDI1MCwgMzUsIAorICAgIDIzMSwgODIsIDg1LCAyNTAsIDM1LCAyMzEsIDgyLCA0LCA3MSwgMjUwLCAzNSwgMjMxLCAxNTMsIDg3LCAyNDcsIDE2NywgCisgICAgODcsIDIxNCwgMTY5LCAyMjUsIDI1MSwgODcsIDI0OSwgMjMxLCAyNDMsIDIyNCwgMjE0LCAxNDEsIDIyOSwgODgsIDI1MCwgCisgICAgMTYxLCAyMjYsIDYxLCAyMzUsIDQ0LCAyMTMsIDE4NSwgMjUwLCA5MywgODUsIDIzMCwgMTI5LCAyMzIsIDIyNSwgMjIwLCAKKyAgICAxMTIsIDIyMCwgMTQ3LCAyMjQsIDUsIDIyMCwgMTMwLCAyMTksIDU1LCAyNTIsIDE1OSwgMjUyLCAxMjYsIDkyLCAyMzQsIAorICAgIDEzOCwgNzEsIDI0NiwgOTMsIDIzMSwgMTg1LCA3MSwgMjQ2LCA5MywgMjM0LCA3OCwgODUsIDI0NiwgOTMsIDIzMSwgMTg1LCAKKyAgICA4NSwgMjQ2LCA5MywgMjM0LCA3OCwgMjE5LCA2MSwgMjExLCAyMzAsIDIxOSwgNjQsIDIxOCwgMzgsIDI1MiwgNTEsIDI0OSwgCisgICAgMjQ3LCAyMjMsIDE1OSwgODUsIDIxOSwgNjAsIDIxNiwgMTM0LCAyNDksIDI0OCwgMjIsIDIyMywgMTU5LCAyMTUsIDk0LCAKKyAgICA3MSwgMjIwLCAyLCAyMjUsIDEwMSwgMjE1LCA5NCwgODUsIDIyMCwgMiwgMjI1LCAxMDEsIDcxLCAyNDcsIDI0OSwgMjM2LCAKKyAgICAwLCAyMTgsIDIzNCwgMjQ5LCAxMjUsIDIzMywgOTEsIDI0NywgMTkzLCAyNTAsIDI0NCwgMjI2LCAxNjYsIDIyNSwgMTA0LCAKKyAgICAyNTAsIDI0NSwgMjE5LCA4OCwgMjQxLCAyMTIsIDIsIDcxLCAyNDksIDEzMCwgMzcsIDI0OSwgMTI1LCAyMzMsIDkxLCAyNTAsIAorICAgIDE1MywgMjI4LCA3NSwgMjQ1LCAxMjQsIDI1NCwgMTQxLCAyMjYsIDE5MSwgNDMsIDIxMiwgMjYsIDIxNSwgMjUxLCA4NSwgCisgICAgMjE1LCA1NSwgNDMsIDIxMiwgMjYsIDIxNSwgMjUxLCA3MSwgMjE1LCA1NSwgNDMsIDIxMiwgMjYsIDIxNSwgMjUxLCA4NSwgCisgICAgNDMsIDIzMywgOTIsIDIzMSwgNTMsIDcxLCA0MywgMjMzLCA5MiwgMjMxLCA1MywgMjQ2LCA4OSwgMjE5LCA4MiwgNTAsIAorICAgIDExNCwgNzEsIDI0NiwgMTA1LCAyMTUsIDIyNSwgNDMsIDI1MCwgMCwgMjQ1LCAxMjQsIDkyLCAyMjEsIDI1NCwgMjQ0LCAKKyAgICAxNzUsIDI0NywgMjU1LCAyMzYsIDAsIDcxLCAyNTAsIDM2LCAyMzYsIDAsIDg1LCAyMTgsIDIzNCwgODUsIDIxNSwgMTkyLCAKKyAgICAyMjMsIDYwLCA0MywgMjQ1LCAxMjMsIDIyMywgNjAsIDQzLCAyNDUsIDEyMiwgMjUzLCAyMTEsIDE2LCAzMSwgMjE0LCAxNDUsIAorICAgIDExNCwgMjUwLCAzNiwgMiwgMjE4LCAxMDMsIDIyLCAxMTMsIDE3MCwgNDgsIDIyNSwgMTg5LCAyMjIsIDI0OCwgMjM1LCAKKyAgICAyMDUsIDIyNSwgMTg5LCAyMzMsIDQzLCAyMzUsIDIwNSwgMjI1LCAxODksIDIzNSwgMTkzLCAyMjUsIDE4OSwgODUsIDI0OSwgCisgICAgMTMxLCAyMjYsIDE5NywgMjIwLCAyOSwgMjIwLCAxNywgMjE5LCAyMjksIDI1MCwgNjEsIDI1MCwgMjI2LCAyNDEsIDE1NywgCisgICAgMjE5LCAxMjYsIDI0MywgNjEsIDIxMSwgMjMwLCAyNDAsIDIyMCwgMjQzLCA2MSwgMiwgMjQyLCAxMiwgMjMxLCAxNzMsIDE2LCAKKyAgICAzMSwgMjMyLCAyMjksIDIzMCwgMTE1LCAyMTQsIDE5NSwgMjI2LCAxOTcsIDI0MiwgMTIyLCAyNDQsIDEyLCAyNDQsIDc0LCAKKyAgICAyMzYsIDAsIDI0MSwgNTksIDI0NCwgMTI5LCAyMjIsIDE0LCA0MiwgMjQ0LCAxMSwgMjQ5LCAxNTksIDIxOSwgMTA0LCAyNDAsIAorICAgIDExMiwgMjE5LCAxMDcsIDIyNSwgMTY4LCAyLCAyNTIsIDE1OSwgMjE2LCAyNDIsIDIzNSwgMTMxLCAyNTIsIDE0NiwgODcsIAorICAgIDI0MSwgMjMxLCAyNDIsIDEzMywgODcsIDI0MywgMjMyLCAyMjQsIDE0MiwgMjQ5LCAxMDMsIDIyNiwgMTk3LCA4NSwgMjE4LCAKKyAgICAyMzQsIDcxLCAyNDQsIDc0LCAyLCAyMDMsIDIzMCwgMjI0LCA4NSwgMjE4LCAxMDQsIDIxNCwgMTYwLCAyNTEsIDIxNywgCisgICAgMjIxLCAxOTMsIDg1LCAyMjEsIDE5MywgMjMyLCAxMDgsIDI1MSwgMjE3LCAyMjEsIDE5MywgNzEsIDIyMSwgMTkzLCA3MSwgCisgICAgMTE0LCAyNTAsIDEzMCwgNzgsIDIxNywgMSwgMjMyLCAxNTQsIDUwLCAyMTcsIDUzLCAyNDYsIDg4LCAyNTQsIDE5MSwgMjQ1LCAKKyAgICAxMTksIDIyMywgMTU3LCAyNDQsIDg1LCAyMjMsIDE1NywgMjQyLCAxNSwgMjEzLCAxNzQsIDI0MiwgMTUsIDIxMSwgMTk4LCAKKyAgICAyNDIsIDE1LCAyMzIsIDEwOCwgNDQsIDIyNSwgMTk4LCAyMjUsIDE5OCwgMjE0LCAxNjAsIDQ0LCAyMjUsIDE5OCwgNzEsIAorICAgIDIyOCwgMjMwLCA4NSwgMjI4LCAyMzAsIDI1MCwgMTMwLCA3OCwgMTE0LCAyNTAsIDEzMCwgNzgsIDIzMCwgODQsIDIxMSwgCisgICAgMTc4LCAxMTQsIDIzMCwgODQsIDIxMSwgMTc4LCAyNTIsIDE1NiwgMjExLCAxNzgsIDExNCwgMjUyLCAxNTYsIDIxMSwgMTc4LCAKKyAgICAyMjYsIDEyNiwgMjYsIDI0OSwgMTMwLCAxMTQsIDI2LCAyNDksIDEzMCwgMjA0LCAyNTAsIDE3NSwgMjQ5LCAxMzAsIDExNCwgCisgICAgMjA0LCAyNTAsIDE3NSwgMjQ5LCAxMzAsIDcsIDI0OSwgMTMwLCAyMjAsIDkxLCA3MSwgNywgMjQ5LCAxMzAsIDIyNiwgMTI2LCAKKyAgICA3LCAyNDksIDEzMCwgMjMxLCAxODcsIDI0OSwgMTMwLCAyMTgsIDE1NywgNjQsIDI0OCwgMTQ5LCAyNDQsIDExLCAyMTcsIAorICAgIDE1LCAyNTMsIDIxNiwgMjQ0LCAxMSwgMjUyLCAxNTcsIDI1MywgMjE2LCAxMTQsIDI0NCwgMTEsIDI1MiwgMTU3LCAyNTMsIAorICAgIDIxNiwgMjQ0LCAxMSwgMjQ5LCAyNDMsIDI1MywgMjE2LCA4NSwgMjQ0LCAxMSwgMjI1LCA5LCAyMTgsIDE1NiwgNzEsIDI0NCwgCisgICAgMTEsIDIyNSwgOSwgMjE4LCAxNTYsIDIxOSwgMTEsIDIxOCwgMTExLCAyMjYsIDEyNiwgNzEsIDIxOCwgMTU2LCAzNywgNzEsIAorICAgIDIxOCwgMTU2LCAyMDQsIDI1MCwgMTc1LCA4NSwgMjE4LCAxNTYsIDg1LCAyNTAsIDE3NSwgNzEsIDIxOCwgMTU2LCAyMjYsIAorICAgIDEyNiwgODUsIDIxOCwgMTU2LCAxMTQsIDIyNiwgMTI2LCA4NSwgMjE4LCAxNTYsIDIyNSwgNjAsIDIxOCwgMTU2LCAyMjAsIAorICAgIDkxLCA3MSwgMjE4LCAxNTYsIDExNCwgMjUzLCAyMTYsIDIwNCwgMjUwLCAxNzUsIDI1MywgMjE2LCAyNDUsIDE5MywgMjE4LCAKKyAgICAyNDQsIDI1MywgMjE2LCAyNDUsIDE5MywgMjI1LCA5LCA4NSwgMjE4LCAxNTYsIDI0NSwgMTkzLCAyMjUsIDksIDIyNSwgNjAsIAorICAgIDIxOCwgMTU2LCAyMTksIDEyNSwgMjI1LCA5LCA4NSwgMjE4LCAxNTYsIDI0NSwgMTkzLCAyMjUsIDksIDIyMywgMTE0LCA4NSwgCisgICAgMjE4LCAxNTYsIDExNCwgMjQ1LCAxOTMsIDIyNSwgOSwgMjIzLCAxMTQsIDg1LCAyMTgsIDE1NiwgMjE1LCA3NywgMjI1LCA5LCAKKyAgICA4NSwgMjE4LCAxNTYsIDIxOSwgMTIwLCAyMjUsIDksIDI1MywgMjE2LCAyMTcsIDE1LCAyNTMsIDIxNiwgMjA0LCAyNTAsIAorICAgIDE3NSwgMjE3LCAxNSwgMjUzLCAyMTYsIDExNCwgMjE3LCAxNSwgMjUzLCAyMTYsIDIxOSwgMTI1LCAyMjUsIDE1NywgODUsIAorICAgIDIyLCA3MSwgMjQ0LCA1NCwgODUsIDI0NCwgNTQsIDcxLCAyNDQsIDU0LCAyNDUsIDE5MywgMjI1LCAxNTcsIDIyNiwgMTI2LCAKKyAgICA4NSwgMjQ0LCA1NCwgMzcsIDIwNCwgMjUwLCAxNzUsIDI0NSwgMTkzLCAyMjUsIDksIDIxOCwgMTU2LCAxMTQsIDIxNywgMTUsIAorICAgIDIyNSwgNjAsIDI1MywgMjE2LCAyMTksIDYyLCAyMTYsIDEwNSwgMjE1LCAyMTgsIDIxOSwgNjIsIDExNCwgMjUwLCAxMTQsIAorICAgIDIxOSwgNjIsIDIxOSwgMTMsIDExNCwgMjE5LCAxMywgMjUyLCAxNTcsIDI1MywgMjE2LCAyNDUsIDE5MywgMjE3LCAxNSwgCisgICAgMjI0LCAxNzEsIDI1MywgMjE2LCAxMTQsIDI0NSwgMTkzLCAyMTcsIDE1LCAyMjQsIDE3MSwgMjUzLCAyMTYsIDI0OSwgMTMxLCAKKyAgICA3OCwgMjIwLCA5MSwgNzEsIDI1MCwgMzUsIDE1MiwgOTIsIDI0OSwgMTMxLCA3OCwgMjMyLCAxMDgsIDQ0LCAyNDYsIDg2LCAKKyAgICA3MSwgMjE4LCAyMzQsIDIxNCwgMTYwLCA0NCwgMjQ2LCA4NiwgNzEsIDIxOCwgMjM0LCAyMzIsIDEwOCwgNDQsIDIyMCwgOTEsIAorICAgIDcxLCAyMTgsIDIzNCwgMjE0LCAxNjAsIDQ0LCAyMjAsIDkxLCA3MSwgMjE4LCAyMzQsIDg1LCAyMjQsIDEzLCAxNjQsIDIyNiwgCisgICAgMTQ3LCA3MSwgMjI0LCAxMywgMTY0LCAyMjYsIDE0NywgNzEsIDI0NSwgMzEsIDE2NCwgMjI2LCAxNDcsIDg1LCAyNDcsIAorICAgIDI0OSwgMjMwLCAxODIsIDcxLCAyMTEsIDE3OCwgMTE0LCAyNDUsIDMxLCAxNjQsIDg3LCAxOTIsIDY3LCAxMzAsIDIzMSwgCisgICAgODIsIDY3LCAxMzAsIDExNCwgNjcsIDEzMCwgMTE0LCAyMTksIDE1NSwgMjE1LCA5NCwgMjQ5LCAyMjAsIDIyMywgMjU0LCAKKyAgICAxNjQsIDIyNiwgMTQ3LCAxMTQsIDIxOSwgMTU1LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgNTIsIAorICAgIDIxNSwgOTQsIDI0OSwgMjIwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgMTE0LCA1MiwgMjQ5LCAyMjAsIDIyMywgMjU0LCAKKyAgICAxNjQsIDIyNiwgMTQ3LCAxMTQsIDEyMSwgMjE5LCAxNTUsIDI0OSwgMjIwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgCisgICAgMTE0LCAxMjEsIDUyLCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDI0OSwgOTEsIDIxOCwgMTQwLCAyMjYsIAorICAgIDE1LCA1LCAyMjYsIDE0NywgMTE0LCAyNDUsIDMxLCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDI0MSwgMjI4LCAyNDUsIDMxLCAKKyAgICAxNjQsIDIyNiwgMTQ3LCAxMTQsIDg1LCAyNDEsIDIyNywgMjIyLCAxODcsIDExNCwgODUsIDI0MSwgMjI4LCAyNTEsIDExMywgCisgICAgMjQ0LCA1NSwgMjQxLCAyMjcsIDIyMiwgMTg3LCAyNDQsIDU1LCAyNDEsIDIyOCwgMjUxLCAxMTMsIDIzMSwgODIsIDQzLCAKKyAgICAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCA0NCwgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgMjQ0LCA2MywgNDMsIAorICAgIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDI0NCwgNjMsIDQ0LCAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyMzMsIAorICAgIDQyLCAyNTQsIDExMCwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyMjIsIDI0NywgMjU0LCAxMTAsIDI1MSwgMTU4LCAKKyAgICAyMjYsIDE0NywgMTE0LCAyMzMsIDQyLCAyNTQsIDExMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgMjIyLCAyNDcsIAorICAgIDI1NCwgMTEwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgMTE0LCAyMzMsIDQyLCAyNTQsIDExMCwgMjUxLCAxNTgsIDIyNiwgCisgICAgMTQ3LCAxMTQsIDIyMiwgMjQ3LCAyNTQsIDExMCwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAxOTIsIDQzLCAyMTYsIDYsIDIyMCwgCisgICAgNTMsIDI1MSwgMTU4LCAyMjYsIDE0NywgMTkyLCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1OCwgMjI2LCAxNDcsIAorICAgIDIzMSwgODIsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjI2LCAxNDcsIDIzMSwgODIsIDQ0LCAyNDksIDk5LCAyNTEsIDE1OCwgCisgICAgMjI2LCAxNDcsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTEwLCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDEwNSwgMjQ3LCAKKyAgICAyMDQsIDE1MiwgMzcsIDIxLCAxNTgsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTYxLCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIAorICAgIDE4OSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxOTQsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTk4LCAyNDcsIDIwNCwgCisgICAgMTUyLCAzNywgMjEsIDE5NSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAyMDAsIDI0NywgMjA0LCAxNTIsIDM3LCA1NCwgMjE2LCAKKyAgICAyNDcsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxMTAsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxMDUsIDI0NywgMjA0LCAzNywgCisgICAgMzUsIDIxLCAxNTgsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxNjEsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxODksIDI0NywgCisgICAgMjA0LCAzNywgMzUsIDIxLCAxOTQsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxOTgsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAKKyAgICAxOTUsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAyMDAsIDI0NywgMjA0LCAzNywgMzUsIDU0LCAyMTYsIDI0NywgMjQ3LCAyMDQsIAorICAgIDE1MiwgMzcsIDM1LCAyMSwgMTEwLCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxMDUsIDI0NywgMjA0LCAxNTIsIDM3LCAKKyAgICAzNSwgMjEsIDE1OCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAKKyAgICAxODksIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE5NCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTk4LCAyNDcsIAorICAgIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxOTUsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDIwMCwgMjQ3LCAyMDQsIDE1MiwgCisgICAgMzcsIDM1LCA1NCwgMjE2LCAyNDcsIDExNCwgMjExLCAyNDYsIDk3LCA3NCwgMTE0LCA5NiwgNTAsIDExNCwgMjMwLCAxODIsIAorICAgIDUwLCAxMTQsIDI0NywgMTY5LCA1MCwgMTE0LCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDExNCwgOTcsIDc0LCAxMTQsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3NCwgMjQ2LCA5OCwgMjI1LCAxMSwgOTcsIDc0LCAxMTQsIDIyMiwgMTg0LCA5NywgNzQsIDIxNSwgCisgICAgMjI0LCA5NywgNzQsIDExNCwgMjE1LCAyMjQsIDk3LCA3NCwgMjQ4LCAxNTUsIDIxNSwgMjI0LCA5NywgNzQsIDExNCwgMjQ4LCAKKyAgICAxNTUsIDIxNSwgMjI0LCA5NywgNzQsIDg1LCA5NywgNzQsIDIxNiwgMTQ0LCAyMTYsIDEyLCA5NywgMjUzLCAyNDksIDIxNiwgCisgICAgMTQ0LCAyNTEsIDE3MywgOTcsIDI1MywgMjQ5LCA4NSwgOTcsIDI1MywgMjQ5LCAxMTQsIDg1LCAyNDksIDkxLCAyNDYsIAorICAgIDEwNCwgMjIsIDk3LCA3NCwgMTE0LCA4NSwgMjQ5LCA5MSwgMjE0LCAxNTMsIDIyLCA5NywgNzQsIDIxOCwgMjMxLCA4NSwgCisgICAgOTcsIDc0LCAxMTQsIDI0OSwgMjA2LCA4NSwgOTcsIDc0LCAyMjIsIDI0NiwgNzEsIDk3LCA3NCwgMjMzLCA0MSwgNzEsIDk3LCAKKyAgICA3NCwgMjUyLCAxODMsIDIyMCwgOTEsIDcxLCA5NywgNzQsIDI0MywgMjQxLCAyMjAsIDkxLCA3MSwgOTcsIDc0LCAxMTQsIAorICAgIDIzMiwgMTA4LCAyMjIsIDI0NSwgNzEsIDk3LCA3NCwgMTE0LCAyMTQsIDE2MCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDIyOCwgCisgICAgNDksIDIzMiwgMTA4LCAyMjIsIDI0NSwgNzEsIDk3LCA3NCwgMjQ5LCA5OSwgMjMyLCAxMjMsIDIyOCwgNDksIDIxNCwgMTYwLCAKKyAgICAyMjIsIDI0NSwgNzEsIDk3LCA3NCwgMzcsIDExNCwgNzEsIDk3LCA3NCwgMjExLCAyNTIsIDk3LCA3NCwgMjUxLCAyMjAsIAorICAgIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMjUxLCAyMjAsIDk3LCA3NCwgMjUxLCAyMjAsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgCisgICAgMTE0LCAyNTEsIDIyMCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAxMTQsIDI1MSwgMjIwLCA5NywgNzQsIDExNCwgMjUxLCAKKyAgICAyMjAsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjE3LCAxNywgOTcsIDc0LCAxMTQsIDIxNywgMTYsIDk3LCA3NCwgMjEyLCAKKyAgICAxOCwgOTcsIDc0LCAxMTQsIDIxMiwgMTgsIDk3LCA3NCwgMjI2LCAxNzIsIDk3LCA3NCwgNTIsIDI0OSwgOTksIDIzMiwgCisgICAgMTIzLCAxMzQsIDI0NywgMjE0LCAyNTQsIDEwOSwgNzEsIDIxNSwgMjI2LCAyNDksIDE4NywgNCwgNzEsIDIxNSwgMjI1LCAKKyAgICAyMjUsIDE3MSwgMjA0LCAyMTgsIDYzLCAyMDQsIDIxOCwgMjEsIDQzLCAyMjIsIDkwLCAyNTIsIDE3MywgMjQ4LCA2MCwgNDQsIAorICAgIDIyMiwgOTAsIDI1MiwgMTczLCAyNDgsIDYwLCAxNzcsIDIsIDU5LCAyMzUsIDIxNSwgMjIzLCA1MCwgMjE5LCA0NywgMjI0LCAKKyAgICAyMDEsIDIxOCwgNjMsIDIxOCwgMjIsIDIyNCwgMjAxLCAyMTksIDQ2LCA2NywgMjUyLCAxNDEsIDIsIDIwMywgOTEsIDExLCAKKyAgICAyMjIsIDIyOCwgMjQ3LCAyNTQsIDE5OSwgMjQ3LCAxNjgsIDExLCAyNDQsIDE3NSwgMjQ3LCAyNTQsIDkyLCAyMzIsIDE0NiwgCisgICAgMjU0LCAxMTgsIDkyLCAyMzIsIDE0NiwgMjI2LCAxNTgsIDcxLCAyNDcsIDI0OSwgMiwgMjUwLCAxNzMsIDI0NywgMTIwLCAKKyAgICAyMiwgMiwgMjQ3LCAxMjAsIDI0NSwgMTcwLCA2NCwgMjI2LCAxNzAsIDIxNCwgMTUyLCAyMzIsIDEwOCwgNDQsIDI0OSwgCisgICAgMTYxLCAyLCAyNDcsIDEyMCwgMjE0LCAxNjAsIDQzLCAyNDksIDE2MSwgMiwgMjQ3LCAxMjAsIDQzLCAyMjYsIDEyOCwgMjM1LCAKKyAgICA2NiwgNDQsIDIyNiwgMTI4LCAyMzUsIDY2LCAyNDMsIDIyOSwgMjI2LCAxMjgsIDIzNSwgNjYsIDIzMywgODUsIDEyMCwgCisgICAgMjE3LCA4NywgMjMzLCA4NSwgMTI0LCAyMTcsIDg3LCA0MywgMjIsIDQ0LCA1MiwgMjE1LCA5MywgNDMsIDIyLCA0NCwgMjE3LCAKKyAgICA4NywgNDMsIDIzMCwgODcsIDE5OSwgNDQsIDIxNywgODcsIDE5OSwgNDMsIDIxNywgODcsIDEyMCwgMjE3LCA4OCwgMiwgCisgICAgMjUwLCAzNiwgNDgsIDIzMiwgMTA1LCAyNDcsIDE3MywgMjUxLCA3OCwgMjAzLCAyMjIsIDEzMywgNzEsIDI0OSwgMjA1LCAKKyAgICAyNDcsIDI0OCwgNzEsIDI0OSwgMjA1LCAyNDcsIDI0OSwgMiwgMTQwLCAyMTYsIDExNCwgNzEsIDI0OSwgMjA1LCAyNDcsIAorICAgIDI0OSwgMiwgOTcsIDIxNiwgMTE0LCA3MSwgNDIsIDIsIDE0MCwgMjE2LCAxMTQsIDcxLCA0MiwgMiwgOTcsIDIxNiwgMTE0LCAKKyAgICAxMSwgNDMsIDcxLCA0MiwgMTI3LCAxMSwgNDQsIDcxLCA0MiwgMTI3LCAxMSwgNDMsIDI1NCwgMTEwLCAxMjcsIDExLCA0NCwgCisgICAgMjU0LCAxMTAsIDEyNywgMTEsIDQzLCA1MiwgMjU0LCAxMTAsIDEyNywgMTEsIDQ0LCA1MiwgMjU0LCAxMTAsIDEyNywgMTEsIAorICAgIDQzLCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDExLCA0NCwgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAxMSwgNDMsIAorICAgIDI0NCwgNjMsIDIyNiwgMywgMTEsIDQ0LCAyNDQsIDYzLCAyMjYsIDMsIDIxNCwgMTUzLCAyMjQsIDI0LCA3NCwgMjQ2LCAKKyAgICAxMDQsIDIyNCwgMjQsIDc0LCAyNTQsIDg4LCAyNDMsIDk4LCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyNDMsIDk4LCAyNTAsIAorICAgIDM2LCA3NCwgNDQsIDgwLCAyLCAzNywgMjI1LCAyMiwgMTk5LCAxNDAsIDc0LCAxOTksIDk3LCA3NCwgMTk5LCA0MywgNDQsIAorICAgIDc0LCAxOTksIDE0MCwgNTIsIDc0LCAxOTksIDk3LCA1MiwgNzQsIDE5OSwgNDMsIDQ0LCA1MiwgNzQsIDE5OSwgMTQwLCA4MCwgCisgICAgMjQzLCAyNDMsIDEzMCwgMTk5LCA5NywgODAsIDI0MywgMjQzLCAxMzAsIDE5OSwgMTQwLCA1MiwgODAsIDI0MywgMjQzLCAKKyAgICAxMzAsIDE5OSwgOTcsIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgMTk5LCA5NywgMjE4LCAyMzAsIDc0LCA0NiwgNDcsIDI1MSwgCisgICAgMjE1LCA0NiwgNDcsIDI0NywgMTE3LCA0NiwgNDcsIDI0NiwgMjQ1LCA0NiwgNDcsIDI0NywgMTE2LCA0NiwgNDcsIDI0NiwgCisgICAgMTgxLCA0NiwgNDcsIDI0NywgNTIsIDQ2LCA0NywgMjQ2LCAyNDQsIDQ2LCA0NywgMjQ3LCAxMTUsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNDksIDQ2LCA0NywgMjQ3LCAyMCwgNDYsIDQ3LCAyNDYsIDIxMiwgNDYsIDQ3LCAyNDcsIDgzLCA0NiwgNDcsIDI0NiwgCisgICAgMTgwLCA0NiwgNDcsIDI0NywgNTEsIDQ2LCA0NywgMjQ2LCAyNDMsIDQ2LCA0NywgMjQ3LCAxMTQsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMzMsIDQ2LCA0NywgMjQ3LCA0LCA0NiwgNDcsIDI0NiwgMTk2LCA0NiwgNDcsIDI0NywgNjcsIDQ2LCA0NywgMjQ2LCAxNjQsIAorICAgIDQ2LCA0NywgMjQ3LCAzNSwgNDYsIDQ3LCAyNDYsIDIyNywgNDYsIDQ3LCAyNDcsIDk4LCA0NiwgNDcsIDI0NiwgMTQ4LCA0NiwgCisgICAgNDcsIDI0NywgMTksIDQ2LCA0NywgMjQ2LCAyMTEsIDQ2LCA0NywgMjQ3LCA4MiwgNDYsIDQ3LCAyNDYsIDE3OSwgNDYsIDQ3LCAKKyAgICAyNDcsIDUwLCA0NiwgNDcsIDI0NiwgMjQyLCA0NiwgNDcsIDI0NywgMTEzLCA0NiwgNDcsIDI0NiwgMTI1LCA0NiwgNDcsIAorICAgIDI0NiwgMjUyLCA0NiwgNDcsIDI0NiwgMTg4LCA0NiwgNDcsIDI0NywgNTksIDQ2LCA0NywgMjQ2LCAxNTYsIDQ2LCA0NywgCisgICAgMjQ3LCAyNywgNDYsIDQ3LCAyNDYsIDIxOSwgNDYsIDQ3LCAyNDcsIDkwLCA0NiwgNDcsIDI0NiwgMTQwLCA0NiwgNDcsIAorICAgIDI0NywgMTEsIDQ2LCA0NywgMjQ2LCAyMDMsIDQ2LCA0NywgMjQ3LCA3NCwgNDYsIDQ3LCAyNDYsIDE3MSwgNDYsIDQ3LCAKKyAgICAyNDcsIDQyLCA0NiwgNDcsIDI0NiwgMjM0LCA0NiwgNDcsIDI0NywgMTA1LCA0NiwgNDcsIDI0NiwgMTMyLCA0NiwgNDcsIAorICAgIDI0NywgMywgNDYsIDQ3LCAyNDYsIDE5NSwgNDYsIDQ3LCAyNDcsIDY2LCA0NiwgNDcsIDI0NiwgMTYzLCA0NiwgNDcsIDI0NywgCisgICAgMzQsIDQ2LCA0NywgMjQ2LCAyMjYsIDQ2LCA0NywgMjQ3LCA5NywgNDYsIDQ3LCAyNDYsIDE0NywgNDYsIDQ3LCAyNDcsIDE4LCAKKyAgICA0NiwgNDcsIDI0NiwgMjEwLCA0NiwgNDcsIDI0NywgODEsIDQ2LCA0NywgMjQ2LCAxNzgsIDQ2LCA0NywgMjQ3LCA0OSwgNDYsIAorICAgIDQ3LCAyNDYsIDI0MSwgNDYsIDQ3LCAyNDcsIDExMiwgNDYsIDQ3LCAyNDYsIDEyMSwgNDYsIDQ3LCAyNDYsIDI0OCwgNDYsIAorICAgIDQ3LCAyNDYsIDE4NCwgNDYsIDQ3LCAyNDcsIDU1LCA0NiwgNDcsIDI0NiwgMTUyLCA0NiwgNDcsIDI0NywgMjMsIDQ2LCA0NywgCisgICAgMjQ2LCAyMTUsIDQ2LCA0NywgMjQ3LCA4NiwgNDYsIDQ3LCAyNDYsIDEzNiwgNDYsIDQ3LCAyNDcsIDcsIDQ2LCA0NywgMjQ2LCAKKyAgICAxOTksIDQ2LCA0NywgMjQ3LCA3MCwgNDYsIDQ3LCAyNDYsIDE2NywgNDYsIDQ3LCAyNDcsIDM4LCA0NiwgNDcsIDI0NiwgCisgICAgMjMwLCA0NiwgNDcsIDI0NywgMTAxLCA0NiwgNDcsIDI0NiwgMTI4LCA0NiwgNDcsIDI0NiwgMjU1LCA0NiwgNDcsIDI0NiwgCisgICAgMTkxLCA0NiwgNDcsIDI0NywgNjIsIDQ2LCA0NywgMjQ2LCAxNTksIDQ2LCA0NywgMjQ3LCAzMCwgNDYsIDQ3LCAyNDYsIAorICAgIDIyMiwgNDYsIDQ3LCAyNDcsIDkzLCA0NiwgNDcsIDI0NiwgMTQzLCA0NiwgNDcsIDI0NywgMTQsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMDYsIDQ2LCA0NywgMjQ3LCA3NywgNDYsIDQ3LCAyNDYsIDE3NCwgNDYsIDQ3LCAyNDcsIDQ1LCA0NiwgNDcsIDI0NiwgCisgICAgMjM3LCA0NiwgNDcsIDI0NywgMTA4LCA0NiwgNDcsIDI0NiwgMTI0LCA0NiwgNDcsIDI0NiwgMjUxLCA0NiwgNDcsIDI0NiwgCisgICAgMTg3LCA0NiwgNDcsIDI0NywgNTgsIDQ2LCA0NywgMjQ2LCAxNTUsIDQ2LCA0NywgMjQ3LCAyNiwgNDYsIDQ3LCAyNDYsIAorICAgIDIxOCwgNDYsIDQ3LCAyNDcsIDg5LCA0NiwgNDcsIDI0NiwgMTM5LCA0NiwgNDcsIDI0NywgMTAsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMDIsIDQ2LCA0NywgMjQ3LCA3MywgNDYsIDQ3LCAyNDYsIDE3MCwgNDYsIDQ3LCAyNDcsIDQxLCA0NiwgNDcsIDI0NiwgCisgICAgMjMzLCA0NiwgNDcsIDI0NywgMTA0LCA0NiwgNDcsIDI0NiwgMTMxLCA0NiwgNDcsIDI0NywgMiwgNDYsIDQ3LCAyNDYsIAorICAgIDE5NCwgNDYsIDQ3LCAyNDcsIDY1LCA0NiwgNDcsIDI0NiwgMTYyLCA0NiwgNDcsIDI0NywgMzMsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMjUsIDQ2LCA0NywgMjQ3LCA5NiwgNDYsIDQ3LCAyNDYsIDE0NiwgNDYsIDQ3LCAyNDcsIDE3LCA0NiwgNDcsIDI0NiwgCisgICAgMjA5LCA0NiwgNDcsIDI0NywgODAsIDQ2LCA0NywgMjQ2LCAxNzcsIDQ2LCA0NywgMjQ3LCA0OCwgNDYsIDQ3LCAyNDYsIAorICAgIDI0MCwgNDYsIDQ3LCAyNDcsIDExMSwgNDYsIDQ3LCAyNDYsIDExOSwgNDYsIDQ3LCAyNDYsIDI0NiwgNDYsIDQ3LCAyNDYsIAorICAgIDE4MiwgNDYsIDQ3LCAyNDcsIDUzLCA0NiwgNDcsIDI0NiwgMTUwLCA0NiwgNDcsIDI0NywgMjEsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMTMsIDQ2LCA0NywgMjQ3LCA4NCwgNDYsIDQ3LCAyNDYsIDEzNCwgNDYsIDQ3LCAyNDcsIDUsIDQ2LCA0NywgMjQ2LCAxOTcsIAorICAgIDQ2LCA0NywgMjQ3LCA2OCwgNDYsIDQ3LCAyNDYsIDE2NSwgNDYsIDQ3LCAyNDcsIDM2LCA0NiwgNDcsIDI0NiwgMjI4LCA0NiwgCisgICAgNDcsIDI0NywgOTksIDQ2LCA0NywgMjQ2LCAxMjYsIDQ2LCA0NywgMjQ2LCAyNTMsIDQ2LCA0NywgMjQ2LCAxODksIDQ2LCAKKyAgICA0NywgMjQ3LCA2MCwgNDYsIDQ3LCAyNDYsIDE1NywgNDYsIDQ3LCAyNDcsIDI4LCA0NiwgNDcsIDI0NiwgMjIwLCA0NiwgNDcsIAorICAgIDI0NywgOTEsIDQ2LCA0NywgMjQ2LCAxNDEsIDQ2LCA0NywgMjQ3LCAxMiwgNDYsIDQ3LCAyNDYsIDIwNCwgNDYsIDQ3LCAKKyAgICAyNDcsIDc1LCA0NiwgNDcsIDI0NiwgMTcyLCA0NiwgNDcsIDI0NywgNDMsIDQ2LCA0NywgMjQ2LCAyMzUsIDQ2LCA0NywgCisgICAgMjQ3LCAxMDYsIDQ2LCA0NywgMjQ2LCAxMjIsIDQ2LCA0NywgMjQ2LCAyNDksIDQ2LCA0NywgMjQ2LCAxODUsIDQ2LCA0NywgCisgICAgMjQ3LCA1NiwgNDYsIDQ3LCAyNDYsIDE1MywgNDYsIDQ3LCAyNDcsIDI0LCA0NiwgNDcsIDI0NiwgMjE2LCA0NiwgNDcsIAorICAgIDI0NywgODcsIDQ2LCA0NywgMjQ2LCAxMzcsIDQ2LCA0NywgMjQ3LCA4LCA0NiwgNDcsIDI0NiwgMjAwLCA0NiwgNDcsIDI0NywgCisgICAgNzEsIDQ2LCA0NywgMjQ2LCAxNjgsIDQ2LCA0NywgMjQ3LCAzOSwgNDYsIDQ3LCAyNDYsIDIzMSwgNDYsIDQ3LCAyNDcsIAorICAgIDEwMiwgNDYsIDQ3LCAyNDYsIDEyOSwgNDYsIDQ3LCAyNDcsIDAsIDQ2LCA0NywgMjQ2LCAxOTIsIDQ2LCA0NywgMjQ3LCA2MywgCisgICAgNDYsIDQ3LCAyNDYsIDE2MCwgNDYsIDQ3LCAyNDcsIDMxLCA0NiwgNDcsIDI0NiwgMjIzLCA0NiwgNDcsIDI0NywgOTQsIDQ2LCAKKyAgICA0NywgMjQ2LCAxNDQsIDQ2LCA0NywgMjQ3LCAxNSwgNDYsIDQ3LCAyNDYsIDIwNywgNDYsIDQ3LCAyNDcsIDc4LCA0NiwgNDcsIAorICAgIDI0NiwgMTc1LCA0NiwgNDcsIDI0NywgNDYsIDQ2LCA0NywgMjQ2LCAyMzgsIDQ2LCA0NywgMjQ3LCAxMDksIDQ2LCA0NywgCisgICAgMjQ2LCAxMjAsIDQ2LCA0NywgMjQ2LCAyNDcsIDQ2LCA0NywgMjQ2LCAxODMsIDQ2LCA0NywgMjQ3LCA1NCwgNDYsIDQ3LCAKKyAgICAyNDYsIDE1MSwgNDYsIDQ3LCAyNDcsIDIyLCA0NiwgNDcsIDI0NiwgMjE0LCA0NiwgNDcsIDI0NywgODUsIDQ2LCA0NywgCisgICAgMjQ2LCAxMzUsIDQ2LCA0NywgMjQ3LCA2LCA0NiwgNDcsIDI0NiwgMTk4LCA0NiwgNDcsIDI0NywgNjksIDQ2LCA0NywgMjQ2LCAKKyAgICAxNjYsIDQ2LCA0NywgMjQ3LCAzNywgNDYsIDQ3LCAyNDYsIDIyOSwgNDYsIDQ3LCAyNDcsIDEwMCwgNDYsIDQ3LCAyNDYsIAorICAgIDEyNywgNDYsIDQ3LCAyNDYsIDI1NCwgNDYsIDQ3LCAyNDYsIDE5MCwgNDYsIDQ3LCAyNDcsIDYxLCA0NiwgNDcsIDI0NiwgCisgICAgMTU4LCA0NiwgNDcsIDI0NywgMjksIDQ2LCA0NywgMjQ2LCAyMjEsIDQ2LCA0NywgMjQ3LCA5MiwgNDYsIDQ3LCAyNDYsIAorICAgIDE0MiwgNDYsIDQ3LCAyNDcsIDEzLCA0NiwgNDcsIDI0NiwgMjA1LCA0NiwgNDcsIDI0NywgNzYsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNzMsIDQ2LCA0NywgMjQ3LCA0NCwgNDYsIDQ3LCAyNDYsIDIzNiwgNDYsIDQ3LCAyNDcsIDEwNywgNDYsIDQ3LCAyNDYsIAorICAgIDEyMywgNDYsIDQ3LCAyNDYsIDI1MCwgNDYsIDQ3LCAyNDYsIDE4NiwgNDYsIDQ3LCAyNDcsIDU3LCA0NiwgNDcsIDI0NiwgCisgICAgMTU0LCA0NiwgNDcsIDI0NywgMjUsIDQ2LCA0NywgMjQ2LCAyMTcsIDQ2LCA0NywgMjQ3LCA4OCwgNDYsIDQ3LCAyNDYsIAorICAgIDEzOCwgNDYsIDQ3LCAyNDcsIDksIDQ2LCA0NywgMjQ2LCAyMDEsIDQ2LCA0NywgMjQ3LCA3MiwgNDYsIDQ3LCAyNDYsIDE2OSwgCisgICAgNDYsIDQ3LCAyNDcsIDQwLCA0NiwgNDcsIDI0NiwgMjMyLCA0NiwgNDcsIDI0NywgMTAzLCA0NiwgNDcsIDI0NiwgMTMwLCAKKyAgICA0NiwgNDcsIDI0NywgMSwgNDYsIDQ3LCAyNDYsIDE5MywgNDYsIDQ3LCAyNDcsIDY0LCA0NiwgNDcsIDI0NiwgMTYxLCA0NiwgCisgICAgNDcsIDI0NywgMzIsIDQ2LCA0NywgMjQ2LCAyMjQsIDQ2LCA0NywgMjQ3LCA5NSwgNDYsIDQ3LCAyNDYsIDE0NSwgNDYsIDQ3LCAKKyAgICAyNDcsIDE2LCA0NiwgNDcsIDI0NiwgMjA4LCA0NiwgNDcsIDI0NywgNzksIDQ2LCA0NywgMjQ2LCAxNzYsIDQ2LCA0NywgCisgICAgMjQ3LCA0NywgNDYsIDQ3LCAyNDYsIDIzOSwgNDYsIDQ3LCAyNDcsIDExMCwgOTcsIDIxNSwgNTgsIDgwLCAyLCA2NywgOTEsIAorICAgIDk3LCAyMTUsIDU4LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCA1MiwgODAsIDIsIDY3LCA5MSwgOTcsIDUyLCA4MCwgMiwgCisgICAgNjcsIDkxLCA0MywgNDQsIDUyLCA4MCwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIDI0MywgMjQzLCAxMzAsIDE0MCwgCisgICAgNTIsIDgwLCAyNDMsIDI0MywgMTMwLCA5NywgNTIsIDgwLCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgODAsIDIsIDIwMywgCisgICAgOTEsIDIxNCwgMTUzLCA4MCwgMiwgMjAzLCA5MSwgMjE0LCAxNTMsIDIxNSwgMjExLCA3NCwgMjQ2LCAxMDQsIDIxNSwgMjExLCAKKyAgICA3NCwgMTQwLCA1MiwgMjQ4LCAxNTcsIDc0LCA5NywgNTIsIDI0OCwgMTU3LCA3NCwgMTQwLCAyMTUsIDIxMSwgMjQ4LCAxNTcsIAorICAgIDc0LCA5NywgMjE1LCAyMTEsIDI0OCwgMTU3LCA3NCwgOTcsIDIxNSwgNTgsIDIxNSwgMjExLCAyNDgsIDE1NywgNzQsIDk3LCAKKyAgICA4MCwgMiwgMjQ2LCAxMTgsIDIxOCwgMTM5LCAyMTQsIDE1MywgODAsIDIxNiwgNDIsIDEzMCwgMjQ2LCAxMDQsIDgwLCAyMTYsIAorICAgIDQyLCAxMzAsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCA5NywgODAsIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgCisgICAgOTEsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3NywgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIAorICAgIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyNTMsIDI1MSwgOTcsIDI1MywgMjUxLCAKKyAgICAxNDAsIDUyLCAyNTMsIDI1MSwgOTcsIDUyLCAyNTMsIDI1MSwgMTQwLCA4MCwgMjE2LCA0MiwgODUsIDI0NywgMjQ4LCA5NywgCisgICAgODAsIDIxNiwgNDIsIDg1LCAyNDcsIDI0OCwgMTQwLCA4MCwgMjQzLCAyNDMsIDI1MiwgMTQxLCAyMTYsIDQyLCA4NSwgMjQ3LCAKKyAgICAyNDgsIDk3LCA4MCwgMjQzLCAyNDMsIDI1MiwgMTQxLCAyMTYsIDQyLCA4NSwgMjQ3LCAyNDgsIDIyOCwgNTYsIDIxMiwgOSwgCisgICAgMjIsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDIyLCAyMTksIDI4LCAyMTIsIDksIDc0LCAKKyAgICAyMjgsIDU2LCAyMTIsIDksIDgwLCAyLCAxMDMsIDIyOCwgNTYsIDI0NSwgMjIwLCA4MCwgMiwgMTAzLCAyMTksIDI4LCAyNDUsIAorICAgIDIyMCwgODAsIDIsIDEwMywgMjE5LCAyOCwgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDU2LCAyMTIsIDksIDgwLCAyMiwgCisgICAgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgODAsIDIyLCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIAorICAgIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgMjIsIDIxOSwgMjgsIDIxMiwgOSwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgODAsIDIyLCAKKyAgICAyMjgsIDU2LCAyMTIsIDksIDc0LCAyMjIsIDIyOCwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyNDQsIDE3NSwgMjQ3LCAyNTQsIAorICAgIDI0NCwgMTc1LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDIyMiwgMjI4LCAyNDcsIDI1NCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDgwLCAKKyAgICAyNDksIDEyNSwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgODAsIDI0OSwgMTI1LCAyMTksIAorICAgIDI4LCAyNDUsIDIyMCwgNzQsIDI0NCwgMTc1LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgCisgICAgMjIyLCAyMjgsIDI0NywgMjU1LCAyNDksIDEyNSwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgCisgICAgODAsIDI0OSwgMTI1LCAyMjgsIDU2LCAyMTIsIDksIDc0LCAyMjgsIDU2LCAyMTIsIDksIDgwLCAyNDksIDEyNSwgMjI4LCAKKyAgICA1NiwgMjQ1LCAyMjAsIDc0LCAyMTIsIDM2LCA4MCwgMjI1LCA3LCAyNDcsIDE5NSwgMjIyLCAyNTEsIDgwLCAyMjUsIDcsIAorICAgIDk3LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjE0LCAxNTIsIDgwLCAyMjUsIDcsIDk3LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjQ2LCAKKyAgICAxMDMsIDgwLCAyMjUsIDcsIDI0NiwgMTA0LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjMzLCAzNywgODAsIDIyNSwgNywgMjQ2LCAKKyAgICAxMDQsIDIxNiwgMTg4LCAyNDksIDkwLCAyMjIsIDI0MSwgMjIyLCAyNDQsIDI1NCwgMjYsIDI1MCwgMiwgNzQsIDIzMywgNDAsIAorICAgIDI1NCwgMjYsIDI1NCwgODgsIDc0LCAyMTYsIDE0LCAyNTQsIDI2LCAyNTQsIDg4LCA3NCwgMjUxLCAxNzUsIDI1NCwgMjYsIAorICAgIDI1NCwgODgsIDc0LCAyMTYsIDE0LCAyNTQsIDI2LCAyNTAsIDIsIDgwLCAyLCAyMzAsIDE4MSwgMjE2LCAxNCwgMjU0LCAyNiwgCisgICAgMjU0LCA4OCwgODAsIDIsIDIyNSwgMjIsIDIzMiwgMTA4LCA0NCwgMjIwLCAxNTIsIDI1MCwgMiwgNzQsIDIzMiwgMTA4LCAKKyAgICA0MywgMjIwLCAxNTIsIDI1NCwgODgsIDc0LCAyNTQsIDg4LCAyNTAsIDAsIDI1MCwgMzYsIDc0LCAyNTAsIDIsIDI1MCwgMCwgCisgICAgMjUwLCAzNiwgNzQsIDk3LCA4MCwgNzcsIDIxOSwgMjUxLCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgMjE5LCAyNTEsIDk3LCAKKyAgICA3NCwgMjE5LCAyNTEsIDk3LCA4MCwgNzcsIDE0MCwgNzQsIDk3LCA4MCwgMiwgOTYsIDUxLCAxNDAsIDgwLCAyLCA5NiwgNTEsIAorICAgIDk3LCA4MCwgMjE2LCAxMzksIDIxMSwgMTc4LCA0MywgNDQsIDgwLCAyMTYsIDEzOSwgNCwgMjUwLCAzNSwgMjE0LCAxNTMsIAorICAgIDIxNSwgNTgsIDgwLCAyNDMsIDI0MywgNCwgMjUwLCAzNSwgNDMsIDI1MiwgMTM5LCAxMjAsIDQ0LCAyNTIsIDEzOSwgMTI0LCAKKyAgICAyNDEsIDI1NCwgNDMsIDI1MiwgMTM5LCAxMjQsIDQ0LCAyNTIsIDEzOSwgMTIwLCAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgCisgICAgNDQsIDEyNCwgMjUyLCAxMzksIDQzLCAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgNDMsIDEyNCwgMjUyLCAxMzksIDQ0LCAKKyAgICAyNDEsIDI1NCwgNDMsIDI1MiwgMTM5LCAxMjAsIDQ0LCAyNTIsIDEzOSwgMTIwLCAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgCisgICAgNDQsIDEyNCwgMjUyLCAxMzksIDQ0LCAyNDEsIDI1NCwgNDMsIDI1MiwgMTM5LCAxMjQsIDQ0LCAyNTIsIDEzOSwgMTI0LCAKKyAgICAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgNDMsIDEyNCwgMjUyLCAxMzksIDQzLCAyNDEsIDI1NCwgMTQwLCAyNDEsIDI1NSwgCisgICAgMiwgMjUyLCAxMzksIDEyMCwgMjE2LCA0MiwgMTMwLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDIxNiwgNDIsIAorICAgIDEzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDQsIDIxNiwgNDIsIDEzMCwgMjQ2LCAxMDQsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgNDQsIDIxNiwgNDIsIDEzMCwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjE2LCAKKyAgICA0MiwgMTMwLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDIxNiwgNDIsIDEzMCwgMjE0LCAxNTMsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDIxNiwgNDIsIDEzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIAorICAgIDIxNiwgNDIsIDEzMCwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgMjQzLCAyNDMsIDEzMCwgOTcsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCAyNDMsIDI0MywgMTMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAKKyAgICA0NCwgMjQzLCAyNDMsIDEzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDQsIDI0MywgMjQzLCAxMzAsIAorICAgIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDI0MywgMjQzLCAxMzAsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAKKyAgICAxMzksIDEyNCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI0MywgMjQzLCAKKyAgICAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNDMsIDI0MywgMTMwLCAxNDAsIDI0MSwgMjU1LCAKKyAgICAyLCAyNTIsIDEzOSwgMTIwLCA3NywgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgMTA2LCAyMTQsIDE1MywgCisgICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjUyLCAzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAKKyAgICAyNTEsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgCisgICAgMTA2LCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjUyLCAzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjIyLCAyNTEsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyMTQsIDE2MywgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgNzcsIDk3LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDI0NiwgMTA2LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCAxNDAsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjE0LCAxNjMsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgNzcsIDE0MCwgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyNDYsIDEwNiwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDE5OSwgMjQ4LCAxNTYsIAorICAgIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDI1MiwgNDMsIDE5OSwgMjQ4LCAxNTYsIDk3LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDEyMCwgNzcsIDE5OSwgMjQ4LCAxNTYsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjUyLCAKKyAgICA0MywgMTk5LCAyNDgsIDE1NiwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDI0NiwgCisgICAgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgMjUxLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAKKyAgICA0MywgMjUyLCAzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNTEsIDQ0LCA1MiwgODAsIDIsIAorICAgIDIyMiwgMTgzLCAyNDEsIDIzNSwgMjQ1LCA5OCwgNSwgNzcsIDk3LCA3NCwgMjE2LCA4OSwgMjI2LCAxNjgsIDc3LCA5NywgCisgICAgNzQsIDE0MCwgODAsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgOTcsIDgwLCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDk3LCAKKyAgICA4MCwgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjMzLCAxNSwgNzcsIDE0MCwgNzQsIDE0MCwgODAsIDIxNiwgMTM5LCAyMzMsIAorICAgIDE0LCAyNDIsIDEzMCwgNzcsIDk3LCA3NCwgMjE4LCA2NCwgNzcsIDk3LCA3NCwgMTQwLCA4MCwgMjE2LCAxMzksIDIxOCwgCisgICAgNjMsIDIxOCwgMjIsIDc3LCAxNDAsIDc0LCA0MywgMjQ0LCA5MSwgMjE3LCA3NywgNDQsIDI0NCwgOTEsIDIxNywgNzcsIAorICAgIDEyMCwgMjQ0LCA5MSwgMjE3LCA3NywgMTI0LCAyNDQsIDkxLCAyMTcsIDc3LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAKKyAgICAyNDgsIDYwLCAyMTAsIDE2MCwgMTg3LCAyMTgsIDI0MiwgMjEwLCAxNjAsIDE4NywgMjE1LCA0OSwgMjQ5LCAyMjYsIDQzLCAKKyAgICA3MSwgMjQ5LCA5OSwgMTI3LCA0NCwgNzEsIDI0OSwgOTksIDEyNywgNDMsIDcxLCAyMjYsIDMsIDQ0LCA3MSwgMjI2LCAzLCAKKyAgICAyMTAsIDE2MCwgMTg3LCA0MywgMjM2LCAxNSwgMTI3LCAyMTAsIDE2MCwgMTg3LCA0NCwgMjM2LCAxNSwgMTI3LCAyMTAsIAorICAgIDE2MCwgMTg3LCA0MywgMjUxLCAyNDIsIDEyNywgMjEwLCAxNjAsIDE4NywgNDQsIDI1MSwgMjQyLCAxMjcsIDQzLCA0MiwgCisgICAgMjUxLCAxNTgsIDIsIDIxNCwgMTgzLCA0NCwgNDIsIDI1MSwgMTU4LCAyLCAyMTQsIDE4MywgNDMsIDQyLCAyNTEsIDE1OCwgCisgICAgMiwgMjE2LCAxMTUsIDIzNiwgMCwgMjE2LCAxNCwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDIsIDIxNiwgMTE1LCAKKyAgICAyMzYsIDAsIDI1MSwgMTc1LCAyNDksIDE2MCwgNDMsIDQyLCAyNTEsIDE1OCwgMiwgMjE2LCAxMTUsIDIzNiwgMCwgMjUxLCAKKyAgICAxNzUsIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyLCAyMTYsIDExNSwgMjM2LCAwLCAyMTYsIDE0LCAyNDksIDE2MCwgCisgICAgNDMsIDI1NCwgMTEwLCAyNTEsIDE1OCwgMiwgMjQ3LCAxMjAsIDQ0LCAyNTQsIDExMCwgMjUxLCAxNTgsIDIsIDI0NywgMTIwLCAKKyAgICA0MywgMjU0LCAyNiwgMjMzLCAxNSwgMTI3LCA0NCwgMjU0LCAyNiwgMjQyLCAxMzAsIDEyNywgNTIsIDQzLCAyNTQsIDI2LCAKKyAgICAyNDIsIDEzMCwgMTI3LCA1MiwgNDQsIDI1NCwgMjYsIDIzMywgMTUsIDEyNywgNDMsIDg1LCAyMTYsIDYsIDIyMCwgNTMsIAorICAgIDEyNywgNDQsIDg1LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMjQ2LCAxMTgsIDI0NCwgMTM1LCA2NywgMjEwLCAzNSwgMjMyLCAKKyAgICAyMTMsIDIzMSwgODgsIDI1NCwgMTEwLCAyMjYsIDE3MCwgMjMzLCA0NiwgNDQsIDI1NCwgMTEwLCAyMTQsIDEyLCAyLCAyMTgsIAorICAgIDIzNCwgMjMxLCA4OCwgNDQsIDI1NCwgMTEwLCAyLCAyNDcsIDEyMCwgMjU0LCAxMTAsIDIsIDIyMiwgOTIsIDIzNSwgMjE1LCAKKyAgICAyNTUsIDMsIDI1NCwgMTA5LCAyMTgsIDI1NSwgMjU0LCAxMTAsIDIyNiwgMTcwLCAyMzMsIDQ2LCAyMTgsIDI1NSwgMjU0LCAKKyAgICAxMTAsIDIyNiwgMTcwLCAyMTQsIDE2MywgMjE1LCA5NCwgMjU0LCAxMDksIDIyMywgNDksIDI1NCwgMTA5LCAyNTQsIDExMCwgCisgICAgMiwgMjE0LCAxODMsIDIyMywgNDksIDI1NCwgMTEwLCAyLCAyMTQsIDE4MywgMjI2LCAyNDgsIDI1NCwgMTEwLCAyMjYsIAorICAgIDE3MCwgMjE0LCAxNjMsIDIyNiwgMjQ4LCAyNTQsIDExMCwgMjI2LCAxNzAsIDI0NiwgMTA2LCAyMzEsIDg4LCAyNTQsIDExMCwgCisgICAgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDEyMCwgMjIsIDIyMiwgMjUxLCAyMzEsIDg4LCAKKyAgICAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDEyMCwgMjIsIDIzMywgNDYsIAorICAgIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgMTI0LCAyMiwgCisgICAgMjIyLCAyNTEsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgCisgICAgNywgMTI0LCAyMiwgMjMzLCA0NiwgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCAKKyAgICA4MCwgMjI1LCA3LCA0NCwgMjIsIDIxNCwgMTYzLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgCisgICAgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDQzLCAyMiwgMjE0LCAxNjMsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIAorICAgIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgNDQsIDIyLCAyNDYsIDEwNiwgMjMxLCA4OCwgMjU0LCAKKyAgICAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCA0MywgMjIsIDI0NiwgMTA2LCAyMjMsIAorICAgIDQ5LCAyNDUsIDE1MiwgMjIwLCAxMjcsIDI0NSwgMTUyLCAyMjAsIDEyOCwgMiwgMjI2LCAxMjMsIDI0NSwgMTUyLCAyMjAsIAorICAgIDEyOCwgMiwgNCwgMjUwLCAzNiwgNDgsIDI0NSwgMTUyLCAyMjAsIDEyOCwgMiwgNDQsIDgwLCA0OCwgMjQ1LCAxNTIsIDIyMCwgCisgICAgMTI4LCAyLCA0MywgODAsIDQ4LCAyNTAsIDM2LCAyLCAyMDMsIDEzMCwgMzcsIDY3LCAxMzAsIDM3LCAyMjYsIDcsIDM3LCAKKyAgICAyMjMsIDUwLCAyMTksIDQ2LCAzNywgMjI1LCAxNzEsIDI1MCwgMzYsIDI0NywgMTczLCAyNTEsIDc4LCAyMDMsIDI1MiwgCisgICAgMTQxLCAyMiwgMjE2LCAxNCwgMTYzLCAyNDcsIDE3MywgMjUxLCA3OCwgNjcsIDEzMCwgMjUwLCAzNiwgMiwgMjE4LCAyNCwgCisgICAgMjExLCAxNzgsIDM3LCAyNTQsIDg3LCAyNDcsIDE2OSwgNTAsIDEyMCwgODAsIDIxNiwgMTM5LCAyNTAsIDM1LCAzNywgNzEsIAorICAgIDI1MSwgMTEzLCAzNywgMjUxLCAxMTMsIDM3LCAyMzMsIDE0LCAzNywgMjQyLCAxMjksIDI1MCwgMzYsIDIsIDQsIDI1MCwgCisgICAgMzYsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMjIsIDI1MSwgMjUwLCAzNiwgMiwgMTEzLCAyMDMsIDIxOCwgOTEsIDIxNiwgNDIsIAorICAgIDIxNiwgMTk2LCAyMjIsIDI1MSwgOTIsIDIyMiwgMjI4LCAyNDcsIDI1NSwgMjE5LCA5NSwgOTIsIDI0NCwgMTc1LCAyNDcsIAorICAgIDI1NSwgMjE5LCA5NSwgOTIsIDI1MywgMjE2LCA5MiwgNCwgMjUwLCAzNSwgOTIsIDIxOCwgMjM0LCAxMTMsIDIzNSwgNjUsIAorICAgIDIxOCwgMjMyLCAyMTUsIDIyNiwgMiwgNTksIDQ4LCAyMTUsIDIyNiwgMiwgMjE0LCAxODMsIDIyMiwgOTIsIDIzNiwgMCwgCisgICAgMjE1LCAyMjUsIDIxNSwgMjI2LCAyLCAyMjAsIDEzNCwgMjUzLCAyMDcsIDI1MSwgMTc0LCA0NCwgMjE1LCAyMjYsIDc3LCAKKyAgICA0MywgMjE1LCAyMjUsIDQzLCAyMTUsIDIyNiwgMjUyLCAzMCwgNjcsIDEzMCwgNjcsIDI1MiwgMTQxLCAyNTIsIDMwLCA0NCwgCisgICAgMjE1LCAyMjUsIDI1MSwgMTY1LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjUxLCAxNjUsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCAKKyAgICA4NSwgMjUxLCAxNjQsIDMwLCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMzAsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA3MSwgCisgICAgMjQwLCAyMzYsIDg1LCAyNDAsIDIzNiwgNDMsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgNDQsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgCisgICAgNDMsIDUyLCAyMTEsIDI0NCwgMjQ0LCAxMzUsIDQ0LCA1MiwgMjExLCAyNDQsIDI0NCwgMTM1LCAyMzUsIDI0OCwgMjM1LCAKKyAgICAyMzQsIDIxNiwgMTEyLCAxMTcsIDIzNSwgMjM0LCAyMzUsIDIzNSwgMjI5LCAxMDIsIDIsIDY3LCAxMzAsIDI0NiwgMTEyLCAKKyAgICAyMzAsIDg3LCA0MiwgMiwgMjQ5LCAxODEsIDIyNiwgMTI3LCAyMzUsIDI0NiwgMjUzLCAyMzcsIDIxOSwgMjE5LCAyMjQsIAorICAgIDE4MCwgMjQ1LCA5OCwgNSwgMjIsIDIxOSwgOTcsIDIyNiwgNywgMjQ1LCA5OCwgNSwgMjIsIDIxOSwgOTcsIDIyNiwgOCwgMiwgCisgICAgMjE2LCA4OSwgNDgsIDI0MCwgMTA0LCAyMTYsIDQyLCAyMiwgMjE5LCA5NywgMjI2LCA3LCAyNDIsIDE4MywgMjE4LCAxNTUsIAorICAgIDIxNiwgMTg1LCAyNDYsIDEwNSwgMjE1LCAyMjYsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyNDYsIDEwNSwgMjE1LCAyMjYsIAorICAgIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA4NSwgMjQ3LCAyNDksIDIsIDEyNCwgNzQsIDg1LCAyMzIsIDEwNCwgNzEsIDI1MCwgCisgICAgMzYsIDIsIDEyNCwgNzQsIDg1LCAyNTAsIDM2LCAyLCAxMjQsIDc0LCAyNDUsIDg1LCA3MSwgMjE4LCAyMzQsIDI0NSwgODUsIAorICAgIDg1LCAyMTgsIDIzNCwgMjQ1LCA4NSwgNzEsIDI0NywgMjQ4LCAyNDUsIDg1LCA4NSwgMjQ3LCAyNDgsIDI0NSwgODUsIDcxLCAKKyAgICAyNTAsIDM1LCAyNDUsIDg1LCA4NSwgMjUwLCAzNSwgMjIyLCAxMzIsIDIyMywgNTAsIDIxOSwgNDcsIDIyNiwgMTY3LCAyMTksIAorICAgIDQ3LCAyLCAyMjYsIDEyMywgMjIzLCA1MCwgMjE5LCA0NywgMiwgMjAzLCA5MSwgMjUxLCAyNDksIDIxOSwgNDYsIDI1MSwgCisgICAgMjQ5LCAyMjMsIDUwLCAyMTksIDQ2LCA1MiwgMjI1LCAyMiwgMjE1LCAyMTEsIDIyNSwgMjIsIDIzMywgNDIsIDI0OSwgOTEsIAorICAgIDI1NCwgMTEwLCAxMjcsIDIyMiwgMjQ3LCAyNDksIDkxLCAyNTQsIDExMCwgMTI3LCAyMTYsIDc4LCAyMzAsIDE3OSwgMjMwLCAKKyAgICAyNCwgMzcsIDU5LCAyMjYsIDE2NywgMjMwLCAyNCwgMzcsIDk2LCAyMjYsIDE2NywgMjMwLCAyNCwgMzcsIDMwLCAyMjYsIAorICAgIDE2NywgMjMwLCAyNCwgMjE0LCAxNzYsIDIyNiwgMTY4LCAyLCAyNDcsIDEyMCwgMjMwLCAyNCwgMjE0LCAxNzYsIDIyNiwgCisgICAgMTY4LCAyLCAyMjUsIDIyLCAyMzAsIDI0LCA0MiwgMjM1LCAxOTksIDIyNiwgMTY3LCAyMzAsIDI0LCA0MiwgMjE0LCAxNzYsIAorICAgIDIyNiwgMTY3LCAxMTMsIDIzMiwgMTQ2LCAyMiwgMjI2LCAxNjcsIDExMywgMjMyLCAxNDYsIDE3NywgMjI2LCAxNjcsIDIzMCwgCisgICAgMjQsIDMwLCAyMjYsIDE2NywgMjMwLCAxNTQsIDExMywgMjE4LCA0MywgMjE4LCA0MSwgMiwgMjM1LCAyMTEsIDIyNCwgMjQsIAorICAgIDIzNSwgMjEyLCAyMjYsIDE2NywgMjQ0LCA5OSwgMjI1LCAyNTUsIDIzNSwgMjExLCAyMzUsIDIxMiwgMiwgNTIsIDkxLCAKKyAgICAyMzUsIDIxMiwgMjUzLCAxNzMsIDIsIDIxOSwgOTUsIDI1MCwgMzIsIDI0MywgMjI2LCAyNTQsIDg4LCAyMzUsIDIwOSwgCisgICAgMjMyLCAyMTQsIDIzNSwgMjEwLCAyLCAyMjMsIDExNSwgMjI1LCAyMzcsIDI1NCwgMiwgMjI1LCAxLCAyMzIsIDIxNCwgMjM1LCAKKyAgICAyMTAsIDIsIDIyMCwgMTUyLCAyMjUsIDIzNywgMjU0LCAyLCAyMjUsIDEsIDIzMiwgMjE0LCAyMzUsIDIxMCwgMjI4LCA1MiwgCisgICAgMjM1LCAyNTAsIDIxNiwgMTk2LCAyMjUsIDEsIDIzNSwgMjEyLCAyNTQsIDIsIDExNSwgMjI1LCAxMSwgMjI2LCAxNjcsIAorICAgIDIyNCwgMTgsIDIzNSwgMjEyLCAyMjYsIDE2NywgMjM1LCAyMTIsIDIsIDE0MCwgODAsIDIsIDEwMywgMjM1LCAyMTIsIDIsIAorICAgIDMwLCA1MCwgMjM1LCAyMTIsIDIsIDIzNSwgMTk4LCAyMzUsIDIxMiwgMiwgMjE0LCAxNzUsIDIzNSwgMjEyLCAyLCAyMjYsIAorICAgIDEyMywgMjM1LCAyMTIsIDIsIDIxNCwgMTgzLCAyMzUsIDY2LCAyMzMsIDg1LCA0MywgMjE1LCAyMjYsIDIyNiwgMTY3LCAKKyAgICAyMTAsIDE2MCwgMTg3LCAyMjEsIDIwMSwgMjQ5LCAyMDksIDIxMCwgMTYwLCAxODcsIDIyMSwgMjAxLCAyMjUsIDU2LCAyMTAsIAorICAgIDE2MCwgMTg3LCAyMjEsIDIwMSwgMjI0LCAxNzYsIDk2LCA1LCAyLCA0LCAyNTAsIDM2LCA0OCwgOTYsIDUsIDIsIDI1MCwgCisgICAgMzEsIDI1NSwgMTUsIDQ4LCA5NiwgNSwgMiwgMjE2LCA4OSwgNDgsIDk2LCA1LCAyLCA1OSwgNTEsIDk2LCA1LCAyLCAyMTYsIAorICAgIDg5LCA1MSwgOTYsIDUsIDIsIDIxOCwgNjUsIDEwNSwgOTYsIDUsIDIsIDg1LCAyMTUsIDIyNSwgMjMwLCAxODIsIDUsIDIsIAorICAgIDI0OSwgMjIwLCA0OCwgMjMwLCAxODIsIDUsIDIsIDU5LCA1MSwgMjMwLCAxODIsIDUsIDIsIDI0NCwgMTc1LCAyNDcsIDExOCwgCisgICAgMjMwLCAxODIsIDUsIDIsIDIyMiwgMjI4LCAyNDcsIDExOCwgOTYsIDUsIDIzNiwgMCwgNDMsIDE2MywgMjUwLCAzNSwgOTYsIAorICAgIDUsIDIzNiwgMCwgNDQsIDE2MywgMjUwLCAzNSwgMjEzLCAyNTQsIDE3NywgMjQ5LCAxMzEsIDIyNCwgMTgwLCAyMzAsIDg0LCAKKyAgICA1LCAyLCA1OSwgNDgsIDIzMCwgODQsIDUsIDIsIDIxNCwgMTgzLCAyMjAsIDE0OSwgMjI0LCAxODEsIDIsIDI1MSwgMTc1LCAKKyAgICAyNDksIDI1NSwgMjE5LCA3NywgMjI0LCAxODAsIDIzMCwgODQsIDUsIDIzNiwgMCwgNDMsIDE2MywgMjUwLCAzNSwgMjMwLCAKKyAgICA4NCwgNSwgMjM2LCAwLCA0NCwgMTYzLCAyNTAsIDM1LCAzNywgMjMwLCA4NCwgNSwgMiwgMjUwLCAzMSwgMjU1LCAxNCwgCisgICAgMjMwLCA4NCwgNSwgMjM2LCAwLCA1MiwgMjUwLCAzNSwgMzcsIDI0NywgMTY5LCA1MCwgOTYsIDUsIDIzNiwgMCwgMjE1LCAKKyAgICAyMjUsIDIzMCwgMTgyLCA1LCAyMzYsIDAsIDIxNSwgMjI1LCAyMzAsIDg0LCA1LCAyMzYsIDAsIDIxNSwgMjI1LCAyMzUsIAorICAgIDIwNiwgMjI0LCAxODAsIDIyMiwgMjQyLCAyMzUsIDIwNiwgMjI0LCAxODAsIDIxMCwgMTYwLCAxODcsIDIyMywgOTAsIDI0OSwgCisgICAgMjA5LCAyNTQsIDEzNCwgMTc3LCAyNDksIDE2NSwgMjM1LCAxOTksIDIsIDI0NywgMTIwLCAyMTQsIDE3NiwgMiwgMjMwLCAKKyAgICAxODIsIDUwLCAyMTQsIDE3NiwgMiwgMjI2LCAxMjMsIDIzNSwgMTk5LCAyLCAyMjYsIDEyMywgMjM1LCAxOTksIDIsIDIzMiwgCisgICAgMTQ2LCAyNTQsIDExOCwgMjE0LCAxNzYsIDIsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjE0LCAxNzYsIDc3LCAyMzUsIDE5OCwgCisgICAgMjM1LCAxOTksIDc3LCAyMTQsIDE3NSwgMjE0LCAxNzYsIDc3LCAyNTIsIDE0MSwgNzcsIDIzNSwgMTk4LCAyMzUsIDE5OSwgCisgICAgNzcsIDI1MiwgMTQxLCA3NywgMjE0LCAxNzUsIDIxNCwgMTc2LCAyNTIsIDMwLCAyMiwgMjM1LCA2NSwgMiwgMjE0LCAxNzUsIAorICAgIDIzNSwgMTk5LCAyNTIsIDMwLCAyMiwgMjM1LCA2NSwgMiwgMjM1LCAxOTgsIDI1MCwgMCwgMjE0LCAxNzYsIDIsIDIyMCwgCisgICAgMTMzLCAyNTAsIDAsIDIzNSwgMTk5LCAyLCAyMjAsIDEzMywgNTIsIDQyLCAyMzUsIDE5OCwgNTIsIDQyLCAyMTQsIDE3NSwgCisgICAgMjUwLCAwLCAyMTQsIDE3NiwgMiwgMjIwLCAxMzQsIDIyLCAyMTksIDc3LCAyMjQsIDE4MCwgMjMyLCAxNDYsIDIyLCAyLCAKKyAgICA1OSwgNDgsIDIzMiwgMTQ2LCAxNzcsIDIsIDU5LCA0OCwgNTIsIDIzMiwgMTQ2LCAyNTQsIDExOCwgNTIsIDIzMiwgMTQ2LCAKKyAgICAyMjYsIDE1OCwgMTEzLCAyMzUsIDIwMCwgMjMyLCAxNDYsIDI1NCwgMTE4LCAxMTMsIDIzNSwgMjAwLCAyMzIsIDE0NiwgCisgICAgMjI2LCAxNTgsIDIxOSwgODUsIDIzMywgODUsIDIyNiwgMTU4LCAyMTksIDg1LCAyMzMsIDg1LCAyNTQsIDExOCwgMjMyLCAKKyAgICAxNDYsIDE3NywgMjI2LCAxMjEsIDIzMiwgMTQ2LCAyNTQsIDExOCwgMjMyLCAxNDYsIDIyLCAyLCAyMzAsIDIyNCwgMjE4LCAKKyAgICAxMzksIDIzMiwgMTQ2LCAxNzcsIDIsIDIzMCwgMjI0LCAyMTgsIDEzOSwgMjMyLCAxNDYsIDIyLCAyLCAyMDMsIDI0OCwgCisgICAgMTU2LCAyMzIsIDE0NiwgMTc3LCAyLCAyMDMsIDI0OCwgMTU2LCAyMzIsIDE0NiwgMjIsIDIsIDUyLCAyMjYsIDEyMywgMjMyLCAKKyAgICAxNDYsIDIyLCAyLCAyMTQsIDE4MywgMjMyLCAxNDYsIDIyLCAyLCA1MiwgMjE0LCAxODMsIDQsIDIxMywgMjUxLCAyLCAyMTQsIAorICAgIDE4MywgMjMyLCAxNDYsIDE3NywgMiwgNTIsIDIyNiwgMTIzLCAyMzIsIDE0NiwgMTc3LCAyLCA1MiwgMjE0LCAxODMsIDIxMCwgCisgICAgMTYwLCAxODcsIDI0NywgMTI5LCAyNTQsIDc5LCAyMTAsIDE2MCwgMTg3LCAyMjMsIDE0OCwgMjU0LCA3OSwgMjQ1LCA5OCwgCisgICAgNSwgMiwgNTksIDUxLCAyNDAsIDEwNCwgMiwgNTksIDQ4LCAyMTUsIDIxMSwgMjAzLCAyNTIsIDE0MSwgMiwgNTIsIDY3LCAKKyAgICA5MSwgMjE1LCAyMTEsIDIwMywgMjUyLCAxNDEsIDIsIDIxNSwgMjExLCA2NywgOTEsIDIxNiwgODksIDIyNiwgMTY4LCAyLCAKKyAgICA1OSwgNDgsIDIxNiwgODksIDIyNiwgMTY4LCAyLCAyMjIsIDIyOCwgMjQ3LCAxMTgsIDIxOSwgMTYyLCAyMzAsIDE4MiwgCisgICAgMjE5LCAxNjEsIDI0OSwgMTk5LCAyLCA1OSwgNDgsIDI0NSwgOTgsIDIsIDI1MywgMjE2LCAyNTQsIDE0OCwgMTI4LCAyMTYsIAorICAgIDQyLCAyLCAyNTAsIDMxLCAyNTUsIDE0LCAyNTQsIDQ4LCAxMjgsIDE3NywgMTI4LCAxMTEsIDI0NSwgOTgsIDUsIDc3LCA5NiwgCisgICAgNTAsIDk2LCA1LCA3NywgMjQ1LCA5OCwgNTAsIDI0NSwgOTgsIDUsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgNTIsIDI0OSwgCisgICAgMjI3LCAyNDUsIDk5LCAxMTMsIDI0OSwgMTk0LCAyNDUsIDk4LCAyMTksIDE3NiwgMTM0LCAyNDksIDE5NCwgMjQ1LCA5OCwgCisgICAgMjE5LCAxNzYsIDI0NSwgOTgsIDUsIDIsIDExMywgMTcwLCA3NywgMjIsIDExMywgMTcwLCA1MSwgMjQ1LCA5NCwgMiwgMjQ0LCAKKyAgICAxMSwgMTcwLCA0OCwgMjMzLCAxNSwgMiwgMjUwLCAzNiwgMjM1LCAyMTUsIDI0MiwgMTMwLCAyLCAyNTAsIDM2LCAyMzUsIAorICAgIDIxNSwgMjMzLCAxNSwgMiwgMjI0LCAxMywgMTY0LCA0OCwgMjQyLCAxMzAsIDIsIDIyNCwgMTMsIDE2NCwgNDgsIDIzMywgCisgICAgMTUsIDE3NywgMjE5LCA5NywgMTI4LCAxMTEsIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgMTExLCAyMzMsIDE1LCAKKyAgICAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDIzNSwgMjE1LCAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIAorICAgIDIxNiwgNDIsIDIsIDU5LCAyMzUsIDIxNSwgMjMzLCAxNSwgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCA0OCwgCisgICAgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIDIzMywgMTUsIDE3NywgMjE5LCA5NywgCisgICAgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNzcsIDIyMiwgMjUxLCAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIAorICAgIDIsIDU5LCA3NywgMjMzLCA0NiwgMjMzLCAxNSwgMTc3LCAyNTQsIDQ5LCAyNDIsIDEzMCwgMTc3LCAyNTQsIDQ5LCAyMzMsIAorICAgIDE1LCAyMiwgMjE5LCAxNTMsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDIsIDEzMCwgMjIsIDIxOSwgMTUzLCAyMjgsIDUyLCAKKyAgICAxMjgsIDExMSwgMjMzLCAxNSwgMjIsIDIyOCwgNTIsIDI1NCwgNDksIDI0MiwgMTMwLCAyMiwgMjI4LCA1MiwgMjU0LCA0OSwgCisgICAgMjMzLCAxNSwgNzcsIDI0NiwgMTExLCAxMjgsIDc3LCAyNDIsIDEyOSwgMjQyLCAxMzAsIDc3LCAyNDYsIDExMSwgMTI4LCAKKyAgICA3NywgMjMzLCAxNCwgMjMzLCAxNSwgNzcsIDIxOSwgMTYyLCAxNzcsIDI0NSwgOTksIDI0MiwgMTMwLCA3NywgMjE5LCAxNjIsIAorICAgIDE3NywgMjQ1LCA5OSwgMjMzLCAxNSwgNzcsIDIxOSwgMTYyLCA3NywgMjQyLCAxMjksIDI0MiwgMTMwLCA3NywgMjE5LCAKKyAgICAxNjIsIDc3LCAyMzMsIDE0LCAyMzMsIDE1LCA3NywgMjQyLCAxMzAsIDc3LCAyNDYsIDExMSwgMjQ1LCA5OSwgMjQyLCAxMzAsIAorICAgIDc3LCAyMzMsIDE1LCA3NywgMjQ2LCAxMTEsIDI0NSwgOTksIDIzMywgMTUsIDc3LCAyMTksIDk3LCAxMjgsIDc3LCAyNDIsIAorICAgIDEzMCwgNzcsIDIxOSwgOTcsIDI0NSwgOTksIDI0MiwgMTMwLCA3NywgMjE5LCA5NywgMTI4LCA3NywgMjMzLCAxNSwgNzcsIAorICAgIDIxOSwgOTcsIDI0NSwgOTksIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAyMTksIDk3LCAxMjgsIDIxNiwgCisgICAgNDIsIDE3NywgMjQyLCAxMjksIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIDE1LCAyLCA1OSwgMjM1LCAyMTUsIAorICAgIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEzMCwgMiwgNTksIDIzNSwgMjE1LCAyNDYsIDExMSwgMTI4LCAKKyAgICAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDI0NiwgMTExLCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMjksIDI0NiwgMTExLCAKKyAgICAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMjQ2LCAxMTEsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgCisgICAgMTc3LCAyNDIsIDEyOSwgMjE5LCAxNjIsIDE3NywgMjMzLCAxNCwgMjE5LCAxNjIsIDE3NywgMjQyLCAxMjksIDIxOSwgMTYyLCAKKyAgICA3NywgMjMzLCAxNSwgNzcsIDI0NSwgOTgsIDUwLCAyMTksIDE2MiwgNzcsIDI0MiwgMTMwLCA3NywgMjQ1LCA5OCwgNTAsIAorICAgIDUyLCAyMjksIDkxLCAyMzMsIDE0LCA1MiwgMjI5LCA5MSwgMjQyLCAxMjksIDUyLCAyMjksIDkxLCAyMzMsIDE1LCAyLCAKKyAgICAyMTQsIDE4MywgMjQyLCAxMzAsIDIyNiwgMTIxLCAyMzMsIDE0LCAyNDIsIDEzMCwgMjUyLCAzMCwgMjMzLCAxNCwgMjMzLCAKKyAgICAxNSwgMjUwLCAwLCAyNTEsIDc4LCAyNDksIDkyLCAyNDIsIDEzMCwgMjUwLCAwLCAyNTEsIDc4LCAyNDksIDkyLCAyMzMsIAorICAgIDE1LCAyNTAsIDAsIDI1MSwgNzgsIDI0OSwgOTMsIDc3LCAyMTksIDk3LCAyNDUsIDk5LCAyNDIsIDEzMCwgMjUwLCAwLCAKKyAgICAyNTEsIDc4LCAyNDksIDkzLCA3NywgMjE5LCA5NywgMjQ1LCA5OSwgMjE5LCA3OCwgMjE2LCAyMDAsIDIzMywgODMsIDIxNiwgCisgICAgMjAwLCAyMTksIDc4LCAyMTYsIDIwMSwgMTc3LCAxMjgsIDExMSwgMjMzLCA4MywgMjE2LCAyMDEsIDE3NywgMTI4LCAxMTEsIAorICAgIDI0NSwgOTgsIDUsIDIsIDI1MSwgMTA4LCA0OCwgMjI0LCAyMDMsIDc3LCAyMTksIDE1MywgMjQ1LCA5OCwgNTAsIDIxOCwgCisgICAgNTYsIDc3LCAyMTksIDE1MywgMjQ1LCA5OCwgNTAsIDIyNCwgMjAzLCA3NywgMjE5LCAxNTMsIDIyOCwgNTIsIDEyOCwgMTExLCAKKyAgICAyMTgsIDU2LCA3NywgMjE5LCAxNTMsIDIyOCwgNTIsIDEyOCwgMTExLCAyMjQsIDIwMywgNzcsIDI0NSwgOTgsIDUwLCAyMTgsIAorICAgIDU2LCA3NywgMjQ1LCA5OCwgNTAsIDIyNCwgMjAzLCA3NywgMjI4LCA1MiwgMTI4LCAxMTEsIDIxOCwgNTYsIDc3LCAyMjgsIAorICAgIDUyLCAxMjgsIDExMSwgMjI0LCAyMDMsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxOCwgNTYsIDc3LCAyNTQsIDE0OCwgCisgICAgMTI4LCAxMTEsIDIyNCwgMjAzLCA3NywgMjI4LCA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjI4LCAKKyAgICA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCA1MiwgMjI0LCAyMDIsIDUyLCAyMTgsIDU1LCAyMTgsIDY0LCAyLCAyNDcsIDEyMCwgCisgICAgMjE4LCAyMiwgMiwgMjQ3LCAxMjAsIDIxOCwgNjQsIDIsIDk2LCA1LCA1MSwgMjE4LCAyMiwgMiwgOTYsIDUsIDUxLCAyMTgsIAorICAgIDY0LCAyLCAyMzAsIDg0LCA1LCA1MSwgMjE4LCAyMiwgMiwgMjMwLCA4NCwgNSwgNTEsIDIxOCwgNjQsIDY0LCAxNzcsIDEyOCwgCisgICAgMjE2LCA0MiwgMiwgNTksIDQ4LCAyMTgsIDIyLCA2NCwgMTc3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCA0OCwgMjE4LCA2NCwgCisgICAgNjQsIDc3LCAyNDUsIDk4LCA1MCwgMjE4LCAyMiwgNjQsIDc3LCAyNDUsIDk4LCA1MCwgMjE4LCA2NCwgNjQsIDc3LCAyMTYsIAorICAgIDg5LCAyMjYsIDE2NywgMjE4LCAyMiwgNjQsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgMjE4LCA2NCwgNjQsIDc3LCAyNTQsIAorICAgIDE0OCwgMTI4LCAxMTEsIDIxOCwgMjIsIDY0LCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTgsIDY0LCA2NCwgNzcsIDIyOCwgCisgICAgNTIsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgNzcsIDIyOCwgNTIsIDEyOCwgMTExLCA0MiwgNDMsIDIwNCwgOTMsIDIyNiwgCisgICAgMTY3LCA0MiwgNDQsIDIwNCwgOTMsIDIyNiwgMTY3LCAyNTAsIDAsIDIxOCwgNjMsIDI1MCwgMCwgMjE4LCAyMSwgMjUwLCAwLCAKKyAgICAyMTgsIDY0LCAxNzcsIDEyOCwgMTExLCAyNTAsIDAsIDIxOCwgMjIsIDE3NywgMTI4LCAxMTEsIDIxOCwgNjQsIDc3LCAyMTgsIAorICAgIDIxLCAyMTgsIDIyLCA3NywgMjE4LCA2MywgMjE4LCA2NCwgNzcsIDIxOCwgNjMsIDIxOCwgMjIsIDc3LCAyMTgsIDIxLCAKKyAgICAyMTgsIDIyLCAyNTIsIDMwLCAyMTgsIDYzLCAyMTgsIDIyLCAyNTIsIDMwLCAyMiwgMjM1LCA2NSwgMjUxLCA3OCwgMjQ4LCAKKyAgICAxNTcsIDIsIDIxOCwgNjMsIDI0NSwgMTcwLCA2NCwgMjI2LCAxNzAsIDI0NiwgMTAzLCAyMjUsIDQ4LCAyLCAyMTcsIDEyLCAKKyAgICAyMTYsIDEzLCAyMTUsIDI0MCwgMjM1LCAxOTgsIDI0NCwgMjEsIDIyOCwgNjUsIDIxOSwgMjUxLCA0MywgMjE3LCA4NywgCisgICAgMjE5LCAyNTEsIDEyNCwgMjE3LCA4NywgMjE5LCAyNTEsIDEyMCwgMjE3LCA4NywgMjI1LCAxNzIsIDIsIDIyMiwgOTEsIDY3LCAKKyAgICAyNTIsIDE0MSwgMjE1LCAyMTEsIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQxLCA0MywgMjE1LCA5MywgNjcsIDI1MiwgCisgICAgMTQxLCA1MiwgNDMsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0MywgMjE1LCA5MywgMTk5LCAyNDgsIDE1NywgCisgICAgMjQzLCAyNDMsIDQzLCAyMzEsIDYzLCA2NCwgNTIsIDIxMywgMjM5LCAyMTksIDI1MSwgMTI0LCAyMTcsIDg4LCAyLCAyMjYsIAorICAgIDEyMywgMjE5LCAyNTEsIDEyMCwgMjE3LCA4OCwgMiwgMjE0LCAxODMsIDIxOSwgMjUxLCAxMjAsIDIxNywgODgsIDc3LCAKKyAgICAyMTksIDI1MSwgMTI0LCAyMTcsIDg3LCA1MiwgMTI0LCAyMTcsIDg3LCA1MiwgMTIwLCAyMTcsIDg3LCA1MiwgMjE4LCAxMDMsIAorICAgIDIyOCwgNTIsIDUwLCAyMjMsIDQ5LCA1MiwgMjE4LCAxMDMsIDIyOCwgNTIsIDUwLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ3LCAKKyAgICAxNzUsIDIsIDIyMywgNDksIDIyOSwgMTAxLCAyMTksIDk1LCA2NywgMjMyLCAyMTQsIDIsIDI1MCwgMzYsIDQ4LCA2NywgCisgICAgMjMyLCAyMTQsIDIsIDI1MCwgMzYsIDUxLCAxMjQsIDIxNywgODgsIDIsIDI1MCwgMzYsIDUxLCAyMjYsIDgsIDIsIDIwMywgCisgICAgOTEsIDIyNiwgOCwgMiwgMjE2LCA4OSwgMjI2LCAxNjcsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIDI1MSwgMjQ0LCAyMjMsIAorICAgIDkxLCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAyLCAyMDMsIDkxLCAyMTUsIDIxMSwgMjQ5LCAyMjcsIDIyNiwgMTY3LCAKKyAgICAyMTUsIDIxMSwgMjI5LCA5MSwgMjMzLCAxNCwgMjE1LCAyMTEsIDIyOSwgOTEsIDI0MiwgMTI5LCAyNDYsIDExMSwgMjE5LCAKKyAgICA5NywgMjMzLCAxNSwgMTc3LCAxMjgsIDExMSwgMjQ2LCAxMTEsIDIxOSwgOTcsIDI0MiwgMTMwLCAxNzcsIDEyOCwgMTExLCAKKyAgICAyMTUsIDIxMSwgMjE5LCA0NywgMjUxLCAyNDQsIDIyMywgOTEsIDIzMywgODUsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIAorICAgIDIyNiwgMTY3LCA1MiwgMjE5LCA0NywgMjI2LCAxNjcsIDcxLCA2NywgMTMwLCAyMzAsIDI0LCA3MSwgNjcsIDEzMCwgMjI4LCAKKyAgICA1NiwgMjQ1LCAyMjAsIDcxLCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA3MSwgNzQsIDIxOSwgMjgsIDI0NSwgMjIwLCA3MSwgNzQsIAorICAgIDIxOSwgMjgsIDIxMiwgOSwgNzEsIDc0LCA0MywgNDQsIDcxLCA3NCwgMTQwLCA4NSwgNzQsIDIxNCwgMTUzLCA4NSwgNzQsIAorICAgIDI0NiwgMTA0LCA4NSwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA4NSwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgODUsIDc0LCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgODUsIDc0LCAyMTksIDI4LCAyMTIsIDksIDg1LCA3NCwgNDMsIDQ0LCA4NSwgNzQsIDEyMCwgCisgICAgMTI0LCA4NSwgNzQsIDk3LCA4MCwgMiwgMjE2LCA3NywgMjQ2LCAxMDMsIDk3LCA4MCwgMiwgMjE2LCA3NywgMjE0LCAxNTIsIAorICAgIDE0MCwgODAsIDIsIDIxNiwgNzcsIDI0NiwgMTAzLCAxNDAsIDgwLCAyLCAyMTYsIDc3LCAyMTQsIDE1MiwgNDIsIDIsIDIxNiwgCisgICAgMTQsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyNTEsIDE3NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgCisgICAgMjQ3LCAyNTUsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMzIsIDEwOCwgNDMsIDI0NywgMjU1LCAxNjMsIDI1MSwgMjIxLCAKKyAgICAyNDcsIDI0OSwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDI0NywgMjQ5LCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgMjQ3LCAyNDksIAorICAgIDIsIDIxNiwgMTQsIDE2MywgMjUxLCAyMjEsIDI0NywgMjQ5LCAyLCAyNTEsIDE3NSwgMTYzLCAyNTEsIDIyMSwgMjQ2LCAKKyAgICAxMTgsIDIxOCwgMjM0LCA4NSwgMjMzLCA4NSwgMjE4LCAyMzQsIDcxLCAyMzMsIDg1LCAyMTgsIDIzNCwgODUsIDIxMywgCisgICAgMTg3LCA0LCAyMTgsIDIzNCwgNzEsIDIxMywgMTg3LCA0LCAyMTgsIDIzNCwgODUsIDIyNSwgMTkwLCA3MSwgMjI1LCAxOTAsIAorICAgIDcxLCAyNDEsIDE5MywgODUsIDI0MSwgMTkzLCAyMDMsIDg1LCAyNDEsIDE5MywgODUsIDIzMywgODUsIDI1MCwgMzUsIDg1LCAKKyAgICAyMzEsIDgyLCAyNDcsIDI0OCwgNzEsIDIzMSwgODIsIDI0NywgMjQ4LCA4NSwgMjMxLCA4MiwgMjMyLCAxMDQsIDcxLCAyMzEsIAorICAgIDgyLCAyMzIsIDEwNCwgODUsIDQsIDI0NywgMjQ4LCA4NSwgNCwgMjMyLCAxMDQsIDcxLCA0LCAyMzIsIDEwNCwgODUsIDIwMywgCisgICAgMjQ1LCAxNjQsIDcxLCAyMDMsIDI0NSwgMTY0LCA4NSwgNjcsIDI0NSwgMTY0LCA3MSwgNjcsIDI0NSwgMTY0LCA0MywgODAsIAorICAgIDIsIDQsIDI1MCwgMzUsIDEzNCwgMTQwLCAyNTMsIDI0NywgNDMsIDgwLCAyLCAzNywgMjI1LCAyMiwgMTk5LCAxNDAsIDIxOCwgCisgICAgMjMwLCA3NCwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCA1MiwgNjcsIDkxLCAKKyAgICAxNDAsIDIxNSwgNTgsIDgwLCAyNDMsIDI0MywgMTMwLCAxNDAsIDIxNSwgNTgsIDIxNSwgMjExLCAyNDgsIDE1NywgNzQsIAorICAgIDE0MCwgODAsIDIsIDI0NiwgMTE4LCAyMTgsIDEzOSwgMTQwLCA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAxNDAsIDgwLCAKKyAgICAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc3LCAxNDAsIDIxNSwgNTgsIAorICAgIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgOTEsIAorICAgIDE0MCwgODAsIDIxNiwgMTM5LCAyMTEsIDE3OCwgMjEyLCAzNiwgODAsIDIyNSwgNywgMjQ3LCAxOTUsIDIzMywgNDYsIDI0NSwgCisgICAgOTgsIDUsIDc3LCAxNDAsIDc0LCAyMjMsIDUwLCAyMTYsIDg5LCAyMjYsIDE2OCwgNzcsIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAKKyAgICAyMjMsIDUwLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDk3LCA4MCwgMjE2LCAxMzksIDI0MiwgMTI5LCA5NywgODAsIDIxNiwgCisgICAgMTM5LCAyMTgsIDIxLCAxNDAsIDIyNCwgMjQsIDc0LCA5NywgMjI0LCAyNCwgNzQsIDIyMywgNTAsIDIxNiwgODksIDIyNiwgCisgICAgMTY4LCA3NywgOTcsIDc0LCA5NywgODAsIDc3LCAyMjMsIDUwLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxNiwgODksIDIyNiwgCisgICAgMTY4LCA3NywgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMTQwLCA4MCwgNzcsIDIyMywgNTAsIAorICAgIDIxNiwgODksIDIyNiwgMTY3LCA5NywgODAsIDc3LCAyMjMsIDUwLCAyMTYsIDg5LCAyMjYsIDE2NywgNzEsIDIzMSwgODIsIAorICAgIDIxOCwgMTU2LCA4NSwgNCwgMjE4LCAxNTYsIDcxLCA0LCAyMTgsIDE1NiwgODUsIDIyMiwgMjQ3LCAyMjUsIDE5MCwgNzEsIAorICAgIDIyMiwgMjQ3LCAyMjUsIDE5MCwgMTE0LCAyMzMsIDg1LCAyNTAsIDM1LCAxMTQsIDIyNiwgMTI0LCAyLCAyMjYsIDEyNCwgCisgICAgMjM1LCAyMTUsIDExNCwgMjUwLCAzNiwgMiwgMjUwLCAzNiwgMjM1LCAyMTUsIDExNCwgMjUwLCAzNSwgMTE0LCAzNywgMjIxLCAKKyAgICAyNTQsIDE0NSwgNiwgMSwgMjUzLCAxNTksIDE0NSwgNiwgMSwgMjUxLCAxMTcsIDE0NSwgNiwgMSwgMjEzLCAyNTMsIDE0NSwgCisgICAgNiwgMSwgMjQyLCAxODUsIDE0NSwgNiwgMSwgMjQ3LCAxNDAsIDE0NSwgNiwgMSwgMjExLCAyMSwgMTQ1LCA2LCAxLCAyMTAsIAorICAgIDY4LCAxNDUsIDYsIDEsIDI0NiwgMzQsIDE0NSwgNiwgMSwgMjEwLCA5MSwgMTQ1LCA2LCAxLCAyMzUsIDE0OCwgMTQ1LCA2LCAKKyAgICAxLCA2NSwgMjM1LCAxNDgsIDE0NSwgNiwgMSwgNzMsIDE0NSwgNiwgMSwgMjQ3LCAxNjAsIDE0NSwgNiwgMSwgMjM0LCAyNDAsIAorICAgIDE0NSwgNiwgMSwgMjMyLCAxODYsIDE0NSwgNiwgMSwgMjMwLCAyOSwgMTQ1LCA2LCAxLCAyMjksIDE5MSwgMTQ1LCA2LCAxLCAKKyAgICAyMjYsIDE4NSwgMTQ1LCA2LCAxLCAyMjUsIDQsIDE0NSwgNiwgMSwgMjIyLCAyMjcsIDE0NSwgNiwgMSwgMjE5LCA4MywgCisgICAgMTQ1LCA2LCAxLCAyMTUsIDgxLCAxNDUsIDYsIDEsIDIxNCwgMjAxLCAxNDUsIDYsIDEsIDI0MywgMjQ2LCAxNDUsIDYsIDEsIAorICAgIDI0MSwgMTk5LCAxNDUsIDYsIDEsIDIyNiwgMTM1LCAxNDUsIDYsIDEsIDIyNSwgMjIxLCAxNDUsIDYsIDEsIDIxOSwgMjI4LCAKKyAgICAxNDUsIDYsIDEsIDIxNSwgMTY3LCAxNDUsIDYsIDEsIDI1MCwgNzUsIDE0NSwgNiwgMSwgMjIwLCAxMDIsIDE0NSwgNiwgMSwgCisgICAgMjExLCAyNywgMTQ1LCA2LCAxLCAyMTEsIDI5LCAxNDUsIDYsIDEsIDIxMSwgNTcsIDE0NSwgNiwgMSwgMjE4LCAyNTMsIAorICAgIDE2MiwgMTQ1LCA2LCAxLCAyMTAsIDIxMiwgMTQ1LCA2LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCA0LCAyMTAsIDE4NCwgCisgICAgMiwgMjE3LCA3NywgMTQ1LCA2LCAxLCAyMTAsIDI0NCwgMTQ1LCA2LCAxLCAyMzUsIDE4NCwgNCwgMjEwLCAxODMsIDE0NSwgCisgICAgNiwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDIzNSwgMTg0LCAyNTEsIDI0OSwgMjEwLCAxODMsIDE0NSwgCisgICAgNiwgMSwgMjQ0LCA4MiwgMTQ1LCA2LCAxLCAyMzUsIDE0NiwgMTQ1LCA2LCAxLCAyMTksIDIyNywgMTQ1LCA2LCAxLCAyMTUsIAorICAgIDIwMiwgNjEsIDE0NSwgNiwgMSwgMjMzLCA3NSwgMjMwLCAyOSwgMTQ1LCA0LCAxLCAyNTMsIDE1OSwgMTQ1LCA0LCAxLCAKKyAgICAyNTEsIDExNywgMTQ1LCA0LCAxLCAyMTMsIDI1MywgMTQ1LCA0LCAxLCAyNDIsIDE4NSwgMTQ1LCA0LCAxLCAyNDcsIDE0MCwgCisgICAgMTQ1LCA0LCAxLCAyMTEsIDIxLCAxNDUsIDQsIDEsIDIxMCwgNjgsIDE0NSwgNCwgMSwgMjQ2LCAzNCwgMTQ1LCA0LCAxLCAKKyAgICAyMTAsIDkxLCAxNDUsIDQsIDEsIDIzNSwgMTQ4LCAxNDUsIDQsIDEsIDY1LCAyMzUsIDE0OCwgMTQ1LCA0LCAxLCA3MywgCisgICAgMTQ1LCA0LCAxLCAyNDcsIDE2MCwgMTQ1LCA0LCAxLCAyMzQsIDI0MCwgMTQ1LCA0LCAxLCAyMzIsIDE4NiwgMTQ1LCA0LCAxLCAKKyAgICAyMzAsIDI5LCAxNDUsIDQsIDEsIDIyOSwgMTkxLCAxNDUsIDQsIDEsIDIyNiwgMTg1LCAxNDUsIDQsIDEsIDIyNSwgNCwgCisgICAgMTQ1LCA0LCAxLCAyMjIsIDIyNywgMTQ1LCA0LCAxLCAyMTksIDgzLCAxNDUsIDQsIDEsIDIxNSwgODEsIDE0NSwgNCwgMSwgCisgICAgMjE0LCAyMDEsIDE0NSwgNCwgMSwgMjQzLCAyNDYsIDE0NSwgNCwgMSwgMjQxLCAxOTksIDE0NSwgNCwgMSwgMjI2LCAxMzUsIAorICAgIDE0NSwgNCwgMSwgMjI1LCAyMjEsIDE0NSwgNCwgMSwgMjE5LCAyMjgsIDE0NSwgNCwgMSwgMjE1LCAxNjcsIDE0NSwgNCwgMSwgCisgICAgMjUwLCA3NSwgMTQ1LCA0LCAxLCAyMjAsIDEwMiwgMTQ1LCA0LCAxLCAyMTEsIDI3LCAxNDUsIDQsIDEsIDIxMSwgMjksIAorICAgIDE0NSwgNCwgMSwgMjExLCA1NywgMTQ1LCA0LCAxLCAyMTgsIDI1MywgMTYyLCAxNDUsIDQsIDEsIDIxMCwgMjEyLCAxNDUsIAorICAgIDQsIDEsIDQsIDIxMCwgMTgzLCAxNDUsIDQsIDEsIDQsIDIxMCwgMTg0LCAyLCAyMTcsIDc3LCAxNDUsIDQsIDEsIDIxMCwgCisgICAgMjQ0LCAxNDUsIDQsIDEsIDIzNSwgMTg0LCA0LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCAyNTEsIDI0OSwgMjEwLCAxODMsIAorICAgIDE0NSwgNCwgMSwgMjM1LCAxODQsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCAyNDQsIDgyLCAxNDUsIDQsIDEsIAorICAgIDIzNSwgMTQ2LCAxNDUsIDQsIDEsIDIxOSwgMjI3LCAxNDUsIDQsIDEsIDIxNSwgMjAyLCA2MSwgMTQ1LCA0LCAxLCAyMzMsIAorICAgIDc1LCAyMzAsIDI5LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgNTIsIDEzMCwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDUyLCAKKyAgICAxMzAsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgOTEsIDcsIDYsIAorICAgIDEsIDIyMywgMjI0LCAyLCAyMTcsIDc3LCA3LCA0LCAxLCAxMTUsIDIsIDkxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjQ3LCAKKyAgICAyNTUsIDkxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyNDgsIDM5LCA3LCAKKyAgICA2LCAxLCAyMzUsIDI0LCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNDgsIDM5LCA3LCA2LCAxLCAyMTAsIAorICAgIDE2MCwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI0OCwgMzksIDcsIDYsIDEsIDI1NCwgMTQzLCA3LCA2LCAKKyAgICAxLCAyMzIsIDUwLCAyLCAxMDMsIDcsIDYsIDEsIDIxNSwgOTQsIDYxLCA3LCA2LCAxLCAyMTUsIDk0LCAyNTQsIDE0MywgNywgCisgICAgNCwgMSwgMjE0LCAxMDYsIDIsIDQ0LCAxMDMsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDEwMywgNywgNCwgMSwgMjEyLCA5OSwgCisgICAgMiwgMTAzLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMjQ5LCAxMDAsIDcsIDYsIDEsIDE2MywgMjQyLCA2MCwgNywgNCwgMSwgCisgICAgMTYzLCAyNDIsIDYwLCA3LCA0LCAxLCAyMTcsIDc1LCAyMjUsIDEzMywgNywgNCwgMSwgMTYwLCAyLCAyMjgsIDUwLCA3LCA0LCAKKyAgICAxLCAyMTUsIDk0LCAyMjMsIDIyNCwgMiwgMjE3LCA3NywgNywgNCwgMSwgMTQ0LCAyLCAxMjEsIDIyMiwgMjM0LCAyMzUsIAorICAgIDIxNSwgNywgMSwgNCwgNiwgMjE1LCA5NCwgNzUsIDcsIDIxOCwgNjUsIDQsIDEsIDIzNSwgMTQ0LCA1OCwgMSwgNiwgMjE0LCAKKyAgICAxMDUsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDIxNywgMjUwLCAyMTcsIDc3LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMjE3LCAKKyAgICAyNTAsIDIxNywgNzcsIDgxLCA2LCAxLCAyNTQsIDE2NCwgODEsIDQsIDEsIDI1NCwgMTY0LCA4MSwgNiwgMSwgMjEzLCAxNzMsIAorICAgIDgxLCA0LCAxLCAyMTMsIDE3MywgODEsIDYsIDEsIDI0MywgMTA3LCA4MSwgNCwgMSwgMjQzLCAxMDcsIDgxLCA2LCAxLCAKKyAgICAyNDgsIDE5MSwgODEsIDQsIDEsIDI0OCwgMTkxLCA4MSwgNiwgMSwgMjQ1LCAxOTQsIDgxLCA0LCAxLCAyNDUsIDE5NCwgODEsIAorICAgIDYsIDEsIDIxOSwgMzMsIDgxLCA0LCAxLCAyMTksIDMzLCA4MSwgNiwgMSwgMjEwLCAxMDEsIDgxLCA0LCAxLCAyMTAsIDEwMSwgCisgICAgODEsIDYsIDEsIDI0MSwgMjQ4LCA4MSwgNCwgMSwgMjQxLCAyNDgsIDgxLCA2LCAxLCAyMTYsIDE3NywgODEsIDQsIDEsIAorICAgIDIxNiwgMTc3LCA4MSwgNiwgMSwgMjQwLCAxMTYsIDgxLCA0LCAxLCAyNDAsIDExNiwgODEsIDYsIDEsIDIzNCwgMjI3LCA4MSwgCisgICAgNCwgMSwgMjM0LCAyMjcsIDgxLCA2LCAxLCAyMzMsIDcyLCA4MSwgNCwgMSwgMjMzLCA3MiwgODEsIDYsIDEsIDIzMCwgMjMwLCAKKyAgICA4MSwgNCwgMSwgMjMwLCAyMzAsIDgxLCA2LCAxLCAyMjgsIDIzMywgODEsIDQsIDEsIDIyOCwgMjMzLCA4MSwgNiwgMSwgCisgICAgMjMzLCAyMzMsIDgxLCA0LCAxLCAyMzMsIDIzMywgODEsIDYsIDEsIDc2LCA4MSwgNCwgMSwgNzYsIDgxLCA2LCAxLCAyMjUsIAorICAgIDEwOCwgODEsIDQsIDEsIDIyNSwgMTA4LCA4MSwgNiwgMSwgMjIyLCAyMTEsIDgxLCA0LCAxLCAyMjIsIDIxMSwgODEsIDYsIAorICAgIDEsIDIxOSwgMTY1LCA4MSwgNCwgMSwgMjE5LCAxNjUsIDgxLCA2LCAxLCAyMTcsIDQxLCA4MSwgNCwgMSwgMjE3LCA0MSwgCisgICAgODEsIDYsIDEsIDIxNCwgMjI5LCA4MSwgNCwgMSwgMjE0LCAyMjksIDgxLCA2LCAxLCAyNDQsIDEyMSwgODEsIDQsIDEsIAorICAgIDI0NCwgMTIxLCA4MSwgNiwgMSwgMjM0LCAxMTIsIDgxLCA0LCAxLCAyMzQsIDExMiwgODEsIDYsIDEsIDIyNCwgMTYxLCA4MSwgCisgICAgNCwgMSwgMjI0LCAxNjEsIDgxLCA2LCAxLCAyMjYsIDE3OCwgODEsIDQsIDEsIDIyNiwgMTc4LCA4MSwgNiwgMSwgMjQ3LCAKKyAgICAyNTMsIDI1NCwgMTcwLCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDI1NCwgMTcwLCA4MSwgNiwgMSwgNTUsIDgxLCAyNTQsIDE5NiwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjU0LCAxOTYsIDgxLCA2LCAxLCAyNDksIDExNSwgMjQ1LCAxOTQsIDgxLCA0LCAxLCAyNDksIAorICAgIDExNSwgMjQ1LCAxOTQsIDgxLCA2LCAxLCAyNDcsIDI1MywgMjM0LCAyMjcsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjM0LCAKKyAgICAyMjcsIDgxLCA2LCAxLCAyNDcsIDI1MywgMjI4LCAyMzMsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjI4LCAyMzMsIDgxLCA2LCAKKyAgICAxLCAyNDksIDExNSwgMjI4LCAyMzMsIDgxLCA0LCAxLCAyNDksIDExNSwgMjI4LCAyMzMsIDgxLCA2LCAxLCA1NSwgODEsIAorICAgIDIyNiwgMTc4LCA4MSwgNCwgMSwgNTUsIDgxLCAyMjYsIDE3OCwgODEsIDYsIDEsIDIyMSwgMjQ2LCA4MSwgNCwgMSwgMjIxLCAKKyAgICAyNDYsIDgxLCA2LCAxLCAyNDksIDEyOCwgMjIwLCA1NSwgODEsIDQsIDEsIDI0OSwgMTI4LCAyMjAsIDU1LCA4MSwgNiwgMSwgCisgICAgNTUsIDgxLCAyMjAsIDU1LCA4MSwgNCwgMSwgNTUsIDgxLCAyMjAsIDU1LCA4MSwgNiwgMSwgNTUsIDgxLCAyNDUsIDc1LCAKKyAgICA4MSwgNCwgMSwgNTUsIDgxLCAyNDUsIDc1LCA4MSwgNiwgMSwgMjU0LCAxODIsIDIzNCwgMTE3LCA4MSwgNCwgMSwgMjU0LCAKKyAgICAxODIsIDIzNCwgMTE3LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDI0MSwgNDUsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjQxLCA0NSwgCisgICAgODEsIDYsIDEsIDU1LCA4MSwgMjQxLCA0NSwgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCA0NSwgODEsIDYsIDEsIDU1LCA4MSwgCisgICAgMTYyLCA4MSwgNCwgMSwgNTUsIDgxLCAxNjIsIDgxLCA2LCAxLCAyMzMsIDE0OCwgMTYyLCA4MSwgNCwgMSwgMjMzLCAxNDgsIAorICAgIDE2MiwgODEsIDYsIDEsIDU1LCA4MSwgMjQxLCAyMTcsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgMjE3LCA4MSwgNiwgMSwgCisgICAgNTUsIDgxLCAyNDEsIDI1MSwgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCAyNTEsIDgxLCA2LCAxLCA1NSwgODEsIDI0MywgMTAyLCAKKyAgICA4MSwgNCwgMSwgNTUsIDgxLCAyNDMsIDEwMiwgODEsIDYsIDEsIDU1LCA4MSwgMjQ3LCAxNjMsIDgxLCA0LCAxLCA1NSwgODEsIAorICAgIDI0NywgMTYzLCA4MSwgNiwgMSwgNTUsIDgxLCAyMjAsIDIyLCA4MSwgNCwgMSwgNTUsIDgxLCAyMjAsIDIyLCA4MSwgNiwgMSwgCisgICAgNTUsIDIyNywgMjA4LCAyMjAsIDIyLCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMjAsIDIyLCA4MSwgNiwgMSwgNTUsIAorICAgIDIyNywgMjA4LCAyMjksIDI3LCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMjksIDI3LCA4MSwgNiwgMSwgNTUsIDIyNywgCisgICAgMjA4LCAyMjcsIDE0OCwgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjI3LCAxNDgsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMDgsIAorICAgIDIxMiwgMzcsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIxMiwgMzcsIDgxLCAxNiwgMjM0LCAyNDYsIDgxLCAxNiwgMjMwLCAKKyAgICAyMzEsIDIyMiwgMjExLCA4MSwgMTYsIDIyNSwgMTA5LCAyMjIsIDIxMSwgODEsIDE2LCAyMTgsIDE0NywgODEsIDE2LCAyMTcsIAorICAgIDQyLCAyMjIsIDIxMSwgODEsIDE2LCAyMzQsIDExMywgMjIyLCAyMTEsIDgxLCAxNiwgMjIwLCAyMywgMjE5LCAxNjUsIDgxLCAKKyAgICA2LCAxLCAyNDksIDExNSwgMjIwLCA1NSwgODEsIDQsIDEsIDI0OSwgMTE1LCAyMjAsIDU1LCA4MSwgNiwgMSwgMjQ5LCAxMTUsIAorICAgIDI0MywgMTAyLCA4MSwgNCwgMSwgMjQ5LCAxMTUsIDI0MywgMTAyLCA4MSwgMzgsIDIyOCwgMjM0LCA0OCwgODEsIDM4LCAKKyAgICAyMTgsIDI0NywgMjUzLCAyMjQsIDgxLCAzOCwgMjE4LCAyNDcsIDIzMywgMjEsIDgxLCA2LCAxLCAyNTEsIDE5OSwgMjM0LCAKKyAgICAxMTcsIDgxLCA0LCAxLCAyNTEsIDE5OSwgMjM0LCAxMTcsIDgxLCA1NSwgMjI3LCAyMDgsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgODEsIDU1LCAyMjcsIDIwOCwgMjQ3LCAxOTcsIDIyNCwgMTMsIDc4LCA4MSwgNTUsIDIyNywgMjA4LCAyMzUsIDIzNywgMjI0LCAKKyAgICAxMywgNzgsIDgxLCA1NSwgMjI3LCAyMDgsIDIxMywgMjQxLCAyNDcsIDE3MiwgODEsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAKKyAgICA4MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA4MSwgMjMwLCAxMjQsIDI0NywgMTcyLCA5OCwgNCwgMSwgMjU0LCAxMjMsIDk4LCAKKyAgICA0LCAxLCAyNTIsIDE1MiwgOTgsIDQsIDEsIDI0MywgMTA2LCA5OCwgNCwgMSwgMjQ3LCAxMjgsIDk4LCA0LCAxLCAyNDUsIAorICAgIDE1MCwgOTgsIDQsIDEsIDIxMywgMTYwLCA5OCwgNCwgMSwgMjEwLCA4OSwgOTgsIDQsIDEsIDIxNywgNjAsIDk4LCA0LCAxLCAKKyAgICAyMzUsIDI1NSwgOTgsIDQsIDEsIDIzNCwgMjM0LCA5OCwgNCwgMSwgMjMzLCA4MSwgOTgsIDQsIDEsIDIzMSwgMTg1LCA5OCwgCisgICAgNCwgMSwgMjI5LCAxOTUsIDk4LCA0LCAxLCAyMjYsIDE5NiwgOTgsIDQsIDEsIDIyNiwgMTcsIDk4LCA0LCAxLCAyMTAsIDc4LCAKKyAgICA5OCwgNCwgMSwgMjIzLCAxNzEsIDk4LCA0LCAxLCAyMjEsIDI0MywgOTgsIDQsIDEsIDIxNywgNTAsIDk4LCA0LCAxLCAyMTQsIAorICAgIDE5MCwgOTgsIDQsIDEsIDIyNSwgMTQwLCA5OCwgNCwgMSwgMjM0LCAxMjEsIDk4LCA0LCAxLCAyNDIsIDI0MSwgOTgsIDQsIAorICAgIDEsIDIyNCwgNzMsIDk4LCA0LCAxLCAyMjAsIDIwLCA5OCwgNCwgMSwgMjUwLCA5NywgOTgsIDQsIDEsIDI1MSwgNywgOTgsIAorICAgIDQsIDEsIDIzNSwgMTAwLCA5OCwgNCwgMSwgMjUwLCA0MCwgOTgsIDQsIDEsIDI1MCwgMTQzLCA5OCwgNCwgMSwgMjExLCAKKyAgICAxNjMsIDk4LCA0LCAxLCAyMzUsIDExMSwgOTgsIDQsIDEsIDI0MiwgNDMsIDk4LCA0LCAxLCAyNDEsIDIzOCwgOTgsIDQsIDEsIAorICAgIDI0MSwgMTc1LCA5OCwgNCwgMSwgMjEyLCAyMiwgOTgsIDQsIDEsIDI0MiwgNCwgOTgsIDQsIDEsIDI0MSwgNjUsIDk4LCA0LCAKKyAgICAxLCAyMTAsIDI0NiwgOTgsIDQsIDEsIDI1NCwgMjMyLCAyMTYsIDEwOCwgMSwgMTkxLCAyMTYsIDEwOCwgMSwgMjExLCA5OSwgCisgICAgMjE2LCAxMDgsIDEsIDIxMSwgOTgsIDIxNiwgMTA4LCAxLCAyMTEsIDg4LCAyMTYsIDEwOCwgMSwgMjExLCA4NiwgMjE2LCAKKyAgICAxMDgsIDEsIDI1MiwgMzIsIDI1NSwgMTYsIDIxMSwgODEsIDIxNiwgMTA4LCAxLCAyMTEsIDgxLCAyMTYsIDEwOCwgMSwgCisgICAgMjExLCA5NiwgMjE2LCAxMDgsIDEsIDIxMSwgOTMsIDIxNiwgMTA4LCAxLCAyMTEsIDk1LCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA5NCwgMjE2LCAxMDgsIDEsIDIxMSwgMTIsIDIxNiwgMTA4LCAxLCAyMTEsIDkwLCAyMTYsIDEwOCwgMSwgMjExLCA3OSwgCisgICAgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDc5LCAyMTYsIDEwOCwgMSwgMjExLCA3NiwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgODQsIDIxNiwgMTA4LCAxLCAyNTIsIDMyLCAyNTUsIDE2LCAyMTEsIDg0LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgCisgICAgODQsIDIxNiwgMTA4LCAxLCAyMTEsIDgzLCAyMTYsIDEwOCwgMSwgMjExLCAxMDMsIDIxNiwgMTA4LCAxLCAyMTEsIDc3LCAKKyAgICAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNzcsIDIxNiwgMTA4LCAxLCAyMTEsIDY2LCAyMTYsIDEwOCwgMSwgMjE1LCAKKyAgICAxMTUsIDIxMSwgNjYsIDIxNiwgMTA4LCAxLCAyMTEsIDgsIDIxNiwgMTA4LCAxLCAyMTEsIDQ5LCAyMTYsIDEwOCwgMSwgCisgICAgMjU0LCAyMDcsIDIxMSwgNDksIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA0OSwgMjE2LCAxMDgsIDEsIDIxMSwgNzUsIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDc0LCAyMTYsIDEwOCwgMSwgMjExLCA3MSwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIAorICAgIDg1LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNjksIDIxNiwgMTA4LCAxLCAyMTEsIDY3LCAyMTYsIDEwOCwgMSwgCisgICAgMjEwLCAyMTIsIDIxNiwgMTA4LCAxLCAyMTEsIDY0LCAyMTYsIDEwOCwgMSwgMjExLCA2MywgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgODcsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA4NywgMjE2LCAxMDgsIDEsIDI1MywgMTYzLCAyMTEsIDg3LCAyMTYsIAorICAgIDEwOCwgMSwgMjExLCA2MiwgMjE2LCAxMDgsIDEsIDIxMSwgNjAsIDIxNiwgMTA4LCAxLCAyMTEsIDYxLCAyMTYsIDEwOCwgMSwgCisgICAgMjExLCA1OSwgMjE2LCAxMDgsIDEsIDIxMSwgNTgsIDIxNiwgMTA4LCAxLCAyMTEsIDk3LCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA1NiwgMjE2LCAxMDgsIDEsIDIxMSwgNTQsIDIxNiwgMTA4LCAxLCAyMTEsIDUzLCAyMTYsIDEwOCwgMSwgMjExLCA1MiwgCisgICAgMjE2LCAxMDgsIDEsIDIxMSwgNTAsIDIxNiwgMTA4LCAxLCAyMTcsIDM0LCAyMTEsIDUwLCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA0OCwgMjE2LCAxMDgsIDEsIDIxMSwgNDcsIDIxNiwgMTA4LCAxLCAyMTAsIDI0NCwgMjE2LCAxMDgsIDU4LCAxLCAyMzMsIAorICAgIDEyNiwgNzgsIDIxNiwgMTA4LCAyMjAsIDEzOCwgNzgsIDIxNiwgMTA4LCAxMTYsIDIzNSwgNjMsIDI5LCAzLCAyMzIsIDE1NSwgCisgICAgMjksIDMsIDIzMCwgMTYwLCAyOSwgMywgMjIyLCAyMDksIDI5LCAzLCAyMTksIDU3LCAyOSwgMywgMjIwLCA2LCAyOSwgMywgCisgICAgMjUxLCAyMDQsIDI5LCAzLCAyMTYsIDQxLCAyOSwgMywgMjQ5LCAyMzcsIDI5LCAzLCAyMjgsIDcyLCAyOSwgMywgMjI3LCAKKyAgICAxMzMsIDI5LCAzLCAyNDIsIDE4MCwgMjI3LCAwLCAyOSwgMywgMjEwLCAyMiwgMjksIDMsIDI0NywgMTQzLCAyOSwgMywgCisgICAgMjQ4LCAxMDQsIDI5LCAzLCAyMzUsIDY3LCAyOSwgMywgMjE2LCAxNTUsIDI5LCAzLCAyNTAsIDg1LCAyOSwgMywgMjI1LCAKKyAgICAxMjAsIDI5LCAzLCAyMjUsIDE1LCAyOSwgMywgMjQyLCAyNTUsIDI5LCAzLCAyNDIsIDI1MSwgMjksIDMsIDI0MiwgMjUyLCAKKyAgICAyOSwgMywgMjQyLCAyNTMsIDI5LCAzLCAyMTgsIDIyMywgMjksIDMsIDIxOCwgMTc5LCAyOSwgMywgMjE4LCAxOTIsIDI5LCAKKyAgICAzLCAyMTgsIDIyMiwgMjksIDMsIDIxOCwgMTk2LCAyOSwgMywgMjE4LCAxOTcsIDI5LCAzLCAyMTgsIDE4NCwgMjksIDMsIAorICAgIDI1MCwgMjEzLCAyOSwgMywgMjUwLCAxOTIsIDI5LCAzLCAyNTAsIDE5NCwgMjksIDMsIDI1MCwgMjEyLCAyOSwgMywgMjUwLCAKKyAgICAyMTAsIDI5LCAzLCAyNTAsIDIxMSwgMjksIDMsIDI1MCwgMTkzLCAyOSwgMywgMjA5LCAyNDMsIDI5LCAzLCAyMDksIDIyMSwgCisgICAgMjksIDMsIDIwOSwgMjM0LCAyOSwgMywgMjA5LCAyNDIsIDI5LCAzLCAyMDksIDIzNywgMjksIDMsIDIwOSwgMjM4LCAyOSwgCisgICAgMywgMjA5LCAyMjYsIDI5LCAzLCAyNTAsIDIwOCwgMjksIDMsIDI1MCwgMTk1LCAyOSwgMywgMjUwLCAxOTcsIDI5LCAzLCAKKyAgICAyNTAsIDIwNywgMjksIDMsIDI1MCwgMjA1LCAyOSwgMywgMjUwLCAyMDYsIDI5LCAzLCAyNTAsIDE5NiwgMjksIDMsIDIyMywgCisgICAgMjM2LCAyOSwgMywgMjIzLCAyMjYsIDI5LCAzLCAyMjMsIDIzMiwgMjksIDMsIDIyMywgMjM1LCAyOSwgMywgMjIzLCAyMzMsIAorICAgIDI5LCAzLCAyMjMsIDIzNCwgMjksIDMsIDIyMywgMjMxLCAyOSwgMywgMjMzLCAxNTksIDI5LCAzLCAyMzMsIDE1MSwgMjksIAorICAgIDMsIDIzMywgMTU0LCAyOSwgMywgMjMzLCAxNTgsIDI5LCAzLCAyMzMsIDE1NSwgMjksIDMsIDIzMywgMTU2LCAyOSwgMywgCisgICAgMjMzLCAxNTIsIDI5LCAzLCAyMTEsIDEzMCwgMjksIDMsIDIxMSwgMTIwLCAyOSwgMywgMjExLCAxMjYsIDI5LCAzLCAyMTEsIAorICAgIDEyOSwgMjksIDMsIDIxMSwgMTI3LCAyOSwgMywgMjExLCAxMjgsIDI5LCAzLCAyMTEsIDEyNSwgMjksIDMsIDI0MiwgNzEsIAorICAgIDI5LCAzLCAyNDIsIDYyLCAyOSwgMywgMjQyLCA2NSwgMjksIDMsIDI0MiwgNzAsIDI5LCAzLCAyNDIsIDY3LCAyOSwgMywgCisgICAgMjQyLCA2OCwgMjksIDMsIDI0MiwgNjQsIDM4LCAzMywgMSwgMjUyLCA3NSwgMzgsIDMzLCAxLCAyMTMsIDI1NSwgMzgsIDMzLCAKKyAgICAxLCAyNDIsIDIzNiwgMzgsIDMzLCAxLCAyNDgsIDkwLCAzOCwgMzMsIDEsIDIxMCwgNzQsIDM4LCAzMywgMSwgMjEwLCA5NCwgCisgICAgMzgsIDMzLCAxLCAxNzYsIDM4LCAzMywgMSwgMjQ1LCAxNzQsIDM4LCAzMywgMSwgMjQ1LCAxNTksIDM4LCAzMywgMSwgMjQ1LCAKKyAgICAxNTAsIDM4LCAzMywgMSwgNzYsIDM4LCAzMywgMSwgMjI1LCAyMjEsIDM4LCAzMywgMSwgMjQ1LCA5MiwgMzgsIDMzLCAxLCAKKyAgICAyNDUsIDgyLCAzOCwgMzMsIDEsIDIxNywgMjIsIDM4LCAzMywgMSwgMTYyLCAzOCwgMzMsIDEsIDIxNSwgMTc4LCAzOCwgMzMsIAorICAgIDEsIDI1MCwgMTMxLCAzOCwgMzMsIDEsIDIyMCwgMTAyLCAzOCwgMzMsIDEsIDIyMCwgNjUsIDM4LCAzMywgMSwgMjQ0LCA4MiwgCisgICAgMzgsIDMzLCAxLCAyNDUsIDgxLCAzOCwgMzMsIDEsIDYxLCAzOCwgMzMsIDEsIDIzNiwgNjAsIDM4LCAzMywgMSwgMjQ3LCAKKyAgICAxNjEsIDM4LCAzMywgMSwgMjMwLCAxNDAsIDIxNCwgMjA1LCAzOCwgMzMsIDEsIDIxMSwgNTksIDM4LCAzMywgMSwgMjEwLCAKKyAgICAyMTIsIDM4LCAzMywgMSwgMjM1LCAxODMsIDYxLCAzOCwgMzMsIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzgsIDMzLCAxLCAKKyAgICAyNTEsIDI0OSwgMjEwLCAxODMsIDM4LCAzMywgMSwgMjM1LCAxODMsIDI1MSwgMjQ5LCAyMTAsIDE4MywgNDQsIDI1NCwgCisgICAgMTEwLCAyMTgsIDYwLCAyMzEsIDE1NCwgNDQsIDI1NCwgMTEwLCAyNDYsIDExOCwgMjE4LCA2MCwgMjMxLCAxNTQsIDQzLCAKKyAgICAyMTgsIDYwLCAxMjcsIDQ0LCAyMTgsIDYwLCAxMjcsIDQzLCAyNDYsIDExOCwgMjE4LCA2MCwgMTI3LCA0NCwgMjQ2LCAxMTgsIAorICAgIDIxOCwgNjAsIDEyNywgMjIzLCAxNTcsIDIzNSwgMjAyLCAyMzEsIDE1NCwgMjIzLCAxNTcsIDI0NiwgMTE4LCAyMzUsIDIwMiwgCisgICAgMjMxLCAxNTQsIDI0NiwgMTE4LCAyMTUsIDI0MSwgMjMxLCAxNTQsIDQzLCAyMTUsIDI0MSwgMTI3LCA0NCwgMjE1LCAyNDEsIAorICAgIDEyNywgMjIzLCAxNTcsIDIxOCwgMjM0LCA0MywgMjIzLCAxNTcsIDIyNiwgMTk4LCAxMjcsIDQ0LCAyMjMsIDE1NywgMjI2LCAKKyAgICAxOTgsIDEyNywgMjQ1LCAyMTAsIDI0OSwgMTU4LCAyMjYsIDEzLCAyNDQsIDIyLCAyMjYsIDEzLCAyMjMsIDQ5LCAyNDQsIAorICAgIDIyLCAyMjYsIDEzLCAyNDAsIDE2NSwgMjQ2LCAxMTgsIDIyNiwgMjUxLCAyNDYsIDEwNCwgMjU0LCAxMTksIDIxNCwgMTUzLCAKKyAgICAyNTQsIDExOSwgMjQ2LCAxMTgsIDIyMiwgMjQ3LCAyNTQsIDEwOSwgNTIsIDIyNiwgMjQ4LCAyNDAsIDE2OCwgMjM1LCAxOTMsIAorICAgIDIzNSwgMjAxLCAyMjYsIDU5LCAyNTEsIDE1NCwgMjQwLCAxNjksIDIsIDI0OCwgMSwgMjE2LCA4OSwgMiwgMjIyLCAyMzQsIAorICAgIDQ4LCA0MywgMTIxLCAyMjYsIDUsIDEyNywgNDQsIDEyMSwgMjI2LCA1LCAxMjcsIDIxNiwgODksIDIsIDU5LCA0OCwgMjE2LCAKKyAgICA4OSwgMiwgNTksIDUxLCA0MywgNjcsIDI1MiwgMTQxLCAyLCAyMjQsIDcsIDQ0LCA2NywgMjUyLCAxNDEsIDIsIDIyNCwgNywgCisgICAgMjE2LCAxNCwgNDMsIDE2MywgMTI3LCAyMTYsIDE0LCA0NCwgMTYzLCAxMjcsIDI1MSwgMTc1LCA0MywgMTYzLCAxMjcsIAorICAgIDI1MSwgMTc1LCA0NCwgMTYzLCAxMjcsIDQzLCAyMTksIDE4NywgMTA0LCAxMjcsIDQ0LCAyMTksIDE4NywgMTA0LCAxMjcsIAorICAgIDQzLCA1MiwgMjI2LCAzLCA0NCwgNTIsIDIyNiwgMywgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDAsIDEyMywgCisgICAgNTksIDExNywgMTEzLCAxNzAsIDIyNCwgMTQwLCA5MiwgMjQ0LCAxMSwgNTksIDIyNCwgMTQwLCAyNDQsIDgxLCA1OSwgNzgsIAorICAgIDIyMywgNDksIDIyNCwgMTMsIDc4LCA2NywgMTgyLCAyMjIsIDIzNCwgMjI1LCAxMCwgMjExLCAyMDksIDIyMCwgMTM4LCAKKyAgICAyMzAsIDIyNCwgMjQ3LCAxMjAsIDIxNSwgOTQsIDI0OSwgMjE5LCAyMjMsIDE1NywgMjQ3LCAxMjAsIDIyMywgMTU3LCAyNDksIAorICAgIDIxOSwgMjE1LCA5NCwgMjIwLCAxNTAsIDI0OCwgMjA2LCAyLCA0MywgMjQyLCAxMDgsIDI0OCwgMjA2LCAyLCA0NCwgMjQyLCAKKyAgICAxMDgsIDIxNSwgOTQsIDI0OCwgMjA1LCAyMTYsIDE0LCAxNjMsIDIyMSwgMTczLCA1MCwgMjE1LCA1OSwgMjQ4LCAxNTYsIAorICAgIDIxNiwgMTQzLCAyNDgsIDE1NiwgOSwgMzQsIDIyMywgNzYsIDksIDM0LCAyNTAsIDEwLCA5LCAzNCwgMjIxLCAxNzYsIDExMCwgCisgICAgOSwgMzQsIDIyMSwgMTc2LCAxMDUsIDksIDM0LCAyMjEsIDE3NiwgMTU4LCA5LCAzNCwgMjI1LCAxNjcsIDksIDM0LCAyNTEsIAorICAgIDE2MywgOSwgMzQsIDIxNywgOTIsIDksIDM0LCAyMzQsIDMzLCAxMTAsIDksIDM0LCAyMzQsIDMzLCAxMDUsIDksIDM0LCAKKyAgICAyNDcsIDE3MCwgOSwgMzQsIDIyMSwgMTc5LCA5LCAzNCwgNCwgMTEwLCA5LCAzNCwgNCwgMTA1LCA5LCAzNCwgMjMzLCA5NywgCisgICAgMTEwLCA5LCAzNCwgMjMzLCA5NywgMTA1LCA5LCAzNCwgMjMzLCA5NywgMTU4LCA5LCAzNCwgMjMzLCA5NywgMTYxLCA5LCAKKyAgICAzNCwgMjE5LCA2OCwgOSwgMzQsIDIxNiwgMTQ1LCA5LCAzNCwgMjE5LCA2NiwgMTEwLCA5LCAzNCwgMjE5LCA2NiwgMTA1LCAKKyAgICA5LCAzNCwgMjQxLCAyMjgsIDExMCwgOSwgMzQsIDI0MSwgMjI4LCAxMDUsIDksIDM0LCAyNDIsIDE1LCA5LCAzNCwgMjIzLCAKKyAgICAxNDcsIDksIDM0LCAyNTAsIDgyLCA5LCAzNCwgMjE4LCAzNywgOSwgMzQsIDIzMCwgMTI4LCA5LCAzNCwgMjQ4LCA4OCwgOSwgCisgICAgMzQsIDIzMCwgMTIwLCA5LCAzNCwgMjUwLCAyNSwgOSwgMzQsIDIxMiwgNDEsIDExMCwgOSwgMzQsIDIxMiwgNDEsIDEwNSwgCisgICAgOSwgMzQsIDI0NCwgOTYsIDksIDM0LCAyMjUsIDIzMiwgMTEwLCA5LCAzNCwgMjI1LCAyMzIsIDEwNSwgOSwgMzQsIDIxOSwgCisgICAgMTYwLCAxNjMsIDIxNSwgMjM2LCAyMTUsIDE4OCwgOSwgMzQsIDI0OSwgMTQ1LCA5LCAzNCwgMjQ3LCAxMzYsIDksIDM0LCAKKyAgICAyMzUsIDEzNywgOSwgMzQsIDI1MSwgMTk4LCA2NCwgMjQ5LCAyNTAsIDksIDM0LCAyNDUsIDE1LCA5LCAzNCwgMjE4LCAyNDksIAorICAgIDExMCwgOSwgMzQsIDIxOCwgMjQ5LCAxMDUsIDksIDM0LCAyNTIsIDE1NCwgOSwgMzQsIDIxOSwgMTY3LCA5LCAzNCwgMjUxLCAKKyAgICA2MywgMjE5LCAxNjcsIDksIDM0LCAyMjksIDkwLCAxMTAsIDksIDM0LCAyMjksIDkwLCAxMDUsIDksIDM0LCAyMjksIDkwLCAKKyAgICAxNTgsIDksIDM0LCAyMjksIDkwLCAxNjEsIDksIDM0LCAyMzEsIDQ2LCA5LCAzNCwgMjIwLCA1NywgOSwgMzQsIDIyMywgCisgICAgMTUzLCA5LCAzNCwgMjQ1LCAzNywgOSwgMzQsIDIyNiwgMjA5LCA5LCAzNCwgMjUxLCAxMzMsIDExMCwgOSwgMzQsIDI1MSwgCisgICAgMTMzLCAxMDUsIDksIDM0LCAyMzEsIDg2LCA5LCAzNCwgMjMwLCAxMjMsIDksIDM0LCAyNDIsIDE0MCwgMTEwLCA5LCAzNCwgCisgICAgMjQyLCAxNDAsIDEwNSwgOSwgMzQsIDI0MiwgMTQwLCAxNTgsIDksIDM0LCAyMTYsIDEwNiwgOSwgMzQsIDI0OSwgMjQ5LCA5LCAKKyAgICAzNCwgMjEyLCA5LCAxMTAsIDksIDM0LCAyMTIsIDksIDEwNSwgOSwgMzQsIDI1MSwgNjMsIDIyMSwgMTcwLCA5LCAzNCwgCisgICAgMjE5LCAxNjAsIDI0MCwgMjQ4LCA5LCAzNCwgMjQwLCAyNDgsIDksIDM0LCAyNTEsIDYzLCAyMTksIDIsIDksIDM0LCAyNTEsIAorICAgIDYzLCAyMjAsIDUyLCA5LCAzNCwgMjQ0LCAzMiwgOSwgMzQsIDI1MSwgNjMsIDI1MCwgMjI4LCA5LCAzNCwgMjE5LCAxNjAsIAorICAgIDIxMiwgNTcsIDksIDM0LCAyMTIsIDU4LCAxMTAsIDksIDM0LCAyMTIsIDU4LCAxMDUsIDksIDM0LCAyNTAsIDI3LCA5LCAzNCwgCisgICAgMjUxLCA2MywgMjQyLCAxNjYsIDksIDM0LCAxOTksIDExMCwgOSwgMzQsIDE5OSwgMTA1LCA5LCAzNCwgMjUxLCA2MywgMjMyLCAKKyAgICAxMzcsIDksIDM0LCAyNTEsIDYzLCAyNDMsIDg4LCA5LCAzNCwgMjMwLCAxMTksIDExMCwgOSwgMzQsIDIzMCwgMTE5LCAxMDUsIAorICAgIDksIDM0LCAyMjMsIDE1OSwgOSwgMzQsIDI1MSwgMjA3LCA5LCAzNCwgMjUxLCA2MywgMjE3LCA1NiwgMjMzLCA1MiwgOSwgCisgICAgMzQsIDI1MSwgNjMsIDIzMywgNTMsIDksIDM0LCAyNTEsIDYzLCAyMTEsIDIzOSwgOSwgMzQsIDI1MSwgNjMsIDI0NCwgNDYsIAorICAgIDksIDM0LCAyNDUsIDIxOCwgMTEwLCA5LCAzNCwgMjQ1LCAyMTgsIDEwNSwgOSwgMzQsIDI0NSwgMjE4LCAxNTgsIDksIDM0LCAKKyAgICAyNTEsIDYzLCAyNDUsIDIxNywgOSwgMzQsIDI0MSwgMjM1LCA5LCAzNCwgMjUxLCA2MywgMjQwLCAyNDUsIDksIDM0LCAyNTEsIAorICAgIDE5NCwgOSwgMzQsIDI0MiwgMjIyLCA5LCAzNCwgMjUxLCA2MywgMjQ0LCA5MCwgOSwgMzQsIDI1MSwgNjMsIDI1MSwgMjM3LCAKKyAgICA5LCAzNCwgMjUxLCA2MywgMjIyLCAxLCA5LCAzNCwgMjE5LCAxNjAsIDIxMiwgMiwgOSwgMzQsIDIxOSwgMTYwLCAyMTEsIAorICAgIDQxLCA5LCAzNCwgMjUxLCA2MywgMjQzLCAyNDQsIDksIDM0LCAyMzUsIDE0MywgMjQ1LCA0MSwgOSwgMzQsIDI1MSwgNjMsIAorICAgIDI0NSwgNDEsIDksIDM0LCAyMzUsIDE0MywgMjE2LCAxNSwgOSwgMzQsIDI1MSwgNjMsIDIxNiwgMTUsIDksIDM0LCAyMzUsIAorICAgIDE0MywgMjQ2LCA5NiwgOSwgMzQsIDI1MSwgNjMsIDI0NiwgOTYsIDksIDM0LCAyMTUsIDkxLCA5LCAzNCwgMjM1LCAxNDMsIAorICAgIDIxNSwgOTEsIDksIDM0LCAyNTEsIDYzLCAyMTUsIDkxLCA2MCwgMzQsIDExMCwgNjAsIDM0LCAyMzIsIDIxMywgNjAsIDM0LCAKKyAgICAyNDcsIDEyMCwgNjAsIDM0LCAyMTksIDk1LCA2MCwgMzQsIDIyMSwgMTc1LCA2MCwgMzQsIDEwMywgNjAsIDM0LCAxMDUsIAorICAgIDYwLCAzNCwgMjMyLCAyMzcsIDYwLCAzNCwgMjMxLCAxODUsIDYwLCAzNCwgMjMzLCAzMywgNjAsIDM0LCAyNDUsIDEyOSwgCisgICAgNjAsIDM0LCAxOTUsIDYwLCAzNCwgMTI0LCAyNTEsIDE2MywgNjAsIDM0LCAyNDksIDE0NywgNjAsIDM0LCAyNDAsIDExMSwgCisgICAgNjAsIDM0LCAyMTcsIDkyLCA2MCwgMzQsIDIwNCwgMjUxLCAxNjMsIDYwLCAzNCwgMjM0LCAzMiwgNjAsIDM0LCAyMjQsIAorICAgIDIyNCwgNjAsIDM0LCAyMTEsIDIwMiwgNjAsIDM0LCAyMTgsIDI0MywgNjAsIDM0LCA0NCwgMjA0LCAyNTEsIDE2MywgNjAsIAorICAgIDM0LCAyNDEsIDE3NiwgMjQ1LCAxNDUsIDYwLCAzNCwgMjE2LCAyNDcsIDYwLCAzNCwgMjQ3LCAxNzAsIDYwLCAzNCwgMjIxLCAKKyAgICAxNzksIDYwLCAzNCwgMjUwLCAxMCwgNjAsIDM0LCAyMjQsIDE4MiwgNjAsIDM0LCAyNTQsIDIxNSwgNjAsIDM0LCAyMzAsIAorICAgIDExMCwgNjAsIDM0LCAyNDUsIDE0NSwgNjAsIDM0LCAyNDUsIDIyMywgNjAsIDM0LCAyMjEsIDIwMCwgNjAsIDM0LCAyNDIsIAorICAgIDE3NCwgNjAsIDM0LCAyNDIsIDE3NSwgMjE5LCA4MSwgNjAsIDM0LCAyNDUsIDQwLCA2MCwgMzQsIDI1MSwgMjQ4LCA2MCwgCisgICAgMzQsIDIxMSwgMjIxLCA2MCwgMzQsIDI1MCwgMTAxLCA2MCwgMzQsIDIyMiwgMTk2LCA2MCwgMzQsIDIzNSwgMjUxLCA2MCwgCisgICAgMzQsIDIxOSwgNzksIDYwLCAzNCwgMjMzLCA5NiwgNjAsIDM0LCAyNDksIDE1NiwgNjAsIDM0LCAyMTgsIDIzNywgNjAsIDM0LCAKKyAgICAyMzAsIDExNSwgNjAsIDM0LCAyMjIsIDIyNCwgNjAsIDM0LCAyMTEsIDIwNiwgNjAsIDM0LCAyMjYsIDE5MCwgNjAsIDM0LCAKKyAgICAyMTUsIDk3LCA2MCwgMzQsIDI0NiwgODAsIDYwLCAzNCwgMjE5LCAyNTEsIDIxNiwgMTQ1LCA2MCwgMzQsIDI0NiwgMTE4LCAKKyAgICAyNTAsIDEwLCA2MCwgMzQsIDE5OSwgMjE4LCAxMDgsIDYwLCAzNCwgMTEzLCAyNDIsIDEwLCA2MCwgMzQsIDIyMCwgMCwgNjAsIAorICAgIDM0LCAyNTEsIDE2OSwgNjAsIDM0LCAyMTksIDY1LCA2MCwgMzQsIDI1MSwgMTM3LCA2MCwgMzQsIDIxOCwgMTM4LCA2MCwgCisgICAgMzQsIDI0MSwgMjI3LCA2MCwgMzQsIDI0MiwgMjgsIDYwLCAzNCwgMjQ3LCAxMjMsIDYwLCAzNCwgMjQyLCAxNSwgNjAsIDM0LCAKKyAgICAyNTEsIDE1NCwgNjAsIDM0LCAyMjMsIDE0NywgNjAsIDM0LCAyMjEsIDE4NywgNjAsIDM0LCAyNDcsIDE5OSwgNjAsIDM0LCAKKyAgICAyNTMsIDE2OCwgNjAsIDM0LCAyMTgsIDIzNCwgNjAsIDM0LCAyMjgsIDUxLCA2MCwgMzQsIDIxOCwgMzcsIDYwLCAzNCwgCisgICAgMjIxLCAyMTEsIDYwLCAzNCwgMjMwLCAxMjgsIDYwLCAzNCwgMjE1LCAyMzUsIDYwLCAzNCwgMjMzLCAxMjIsIDYwLCAzNCwgCisgICAgMjE4LCAxMjksIDYwLCAzNCwgMjQ4LCA4OCwgNjAsIDM0LCAyMTIsIDIxLCA2MCwgMzQsIDI0NywgMTQ2LCAyMjgsIDUxLCAKKyAgICA2MCwgMzQsIDI0OSwgMjE1LCA2MCwgMzQsIDI0MywgMjIyLCA2MCwgMzQsIDI1MCwgMjEsIDYwLCAzNCwgMjE4LCAxNDIsIAorICAgIDYwLCAzNCwgMjEyLCA0MCwgNjAsIDM0LCAyNDQsIDk2LCA2MCwgMzQsIDI1MCwgMTgsIDYwLCAzNCwgMjQ0LCAxNjEsIDYwLCAKKyAgICAzNCwgNTIsIDIxMSwgMTc4LCA2MCwgMzQsIDE2MywgMjE1LCAyMzYsIDIxNSwgMTg4LCA2MCwgMzQsIDIxOSwgODksIDYwLCAKKyAgICAzNCwgMjQ0LCAxNzEsIDYwLCAzNCwgMjQ5LCAxNDUsIDYwLCAzNCwgMjQ3LCAxMzYsIDYwLCAzNCwgMjI0LCAxNzksIDYwLCAKKyAgICAzNCwgMjM1LCAxMzcsIDYwLCAzNCwgMjMxLCA2NywgNjAsIDM0LCAyMTYsIDg4LCA2MCwgMzQsIDIxNywgMjQ1LCA2MCwgMzQsIAorICAgIDIzMiwgMjMxLCA2MCwgMzQsIDIxNCwgMTMxLCA2MCwgMzQsIDI0NCwgMTIwLCA2MCwgMzQsIDI1MSwgMTk4LCA2NCwgMjQ5LCAKKyAgICAyNTAsIDYwLCAzNCwgMjE5LCAxODgsIDYwLCAzNCwgMjQ2LCAxMTgsIDIxNiwgMjQyLCA2MCwgMzQsIDIxMSwgMjUzLCA2MCwgCisgICAgMzQsIDIxOSwgMTAzLCA2MCwgMzQsIDI0NywgMTg3LCA2MCwgMzQsIDI0NSwgMTUsIDYwLCAzNCwgMjE5LCA1LCA2MCwgMzQsIAorICAgIDc0LCA2MCwgMzQsIDIxOCwgMTMxLCA2MCwgMzQsIDIxOCwgMjQ4LCA2MCwgMzQsIDIxNSwgMjU1LCA2MCwgMzQsIDI0MiwgCisgICAgMTQ3LCA2MCwgMzQsIDI1MCwgMjE4LCA2MCwgMzQsIDIxOCwgMTYwLCA2MCwgMzQsIDI1MiwgMTU0LCA2MCwgMzQsIDIyMywgCisgICAgMzEsIDYwLCAzNCwgMjE5LCAxNjcsIDYwLCAzNCwgMjM1LCAxMzAsIDYwLCAzNCwgMjI5LCA4OSwgNjAsIDM0LCAyMjAsIDU3LCAKKyAgICA2MCwgMzQsIDI0NCwgMTQ5LCA2MCwgMzQsIDIyNiwgMjA5LCA2MCwgMzQsIDI1NCwgMTE4LCA2MCwgMzQsIDIyNSwgMjksIAorICAgIDYwLCAzNCwgMjQ1LCAyMjcsIDYwLCAzNCwgMjUxLCAxMzIsIDYwLCAzNCwgMjMxLCA4NiwgNjAsIDM0LCAyMzAsIDE4MywgCisgICAgNjAsIDM0LCAyMjAsIDE1NiwgNjAsIDM0LCAyNTMsIDI1MiwgNjAsIDM0LCAyMzAsIDEyMywgNjAsIDM0LCAyMTYsIDE5LCAKKyAgICA2MCwgMzQsIDIyNiwgMTY1LCA2MCwgMzQsIDI1MSwgMjAxLCA2MCwgMzQsIDIxOCwgMTI3LCA2MCwgMzQsIDI0OSwgMjI1LCAKKyAgICA2MCwgMzQsIDI0MiwgMTM5LCA2MCwgMzQsIDIxNiwgMTA2LCA2MCwgMzQsIDIzNSwgMjE3LCA2MCwgMzQsIDI1MSwgMjExLCAKKyAgICA2MCwgMzQsIDIxMiwgNTgsIDI0NSwgMTQ1LCA2MCwgMzQsIDI0OSwgMjQ5LCA2MCwgMzQsIDIxMiwgOCwgNjAsIDM0LCAyMjEsIAorICAgIDE3MCwgNjAsIDM0LCAyNDAsIDI0OCwgNjAsIDM0LCAyMTksIDIsIDYwLCAzNCwgMjE0LCAyMiwgNjAsIDM0LCAyNTIsIDcyLCAKKyAgICA2MCwgMzQsIDIyNSwgNzMsIDYwLCAzNCwgMjUyLCAxNzQsIDYwLCAzNCwgMjIwLCA1MiwgNjAsIDM0LCAyMjMsIDExMCwgNjAsIAorICAgIDM0LCAyMjIsIDEyNiwgNjAsIDM0LCAyNDQsIDMyLCA2MCwgMzQsIDI1MSwgMjAwLCA2MCwgMzQsIDI1MCwgMjI4LCA2MCwgCisgICAgMzQsIDI1MSwgMjI2LCA2MCwgMzQsIDIzMCwgMTI1LCA2MCwgMzQsIDIxMiwgNTcsIDYwLCAzNCwgMjUwLCAyNywgNjAsIDM0LCAKKyAgICAyMTEsIDIzNiwgNjAsIDM0LCAyNDcsIDE4MCwgNjAsIDM0LCAyMTMsIDE2MSwgNjAsIDM0LCAyNDIsIDE2NiwgNjAsIDM0LCAKKyAgICAyMzIsIDEzNywgNjAsIDM0LCAyNDMsIDg4LCA2MCwgMzQsIDIzMCwgMTE4LCA2MCwgMzQsIDIxOSwgOTQsIDYwLCAzNCwgCisgICAgMjE5LCAyNTEsIDIxNywgNzYsIDI1MSwgMjM3LCA2MCwgMzQsIDIyMywgMTU5LCA2MCwgMzQsIDI1MSwgMjA3LCA2MCwgMzQsIAorICAgIDIxMSwgMTk3LCA2MCwgMzQsIDI0NCwgMTkwLCA2MCwgMzQsIDIzMywgNTIsIDYwLCAzNCwgMjE3LCA1NiwgMjMzLCA1MiwgCisgICAgNjAsIDM0LCAyMzMsIDQ4LCA2MCwgMzQsIDIxOSwgMzAsIDYwLCAzNCwgMjMzLCA1MywgNjAsIDM0LCAyMTEsIDIzOSwgNjAsIAorICAgIDM0LCAyNDQsIDQ2LCA2MCwgMzQsIDI0NSwgMjE3LCA2MCwgMzQsIDI0MSwgMjM1LCA2MCwgMzQsIDI0NCwgMCwgNjAsIDM0LCAKKyAgICAyNDAsIDI0NSwgNjAsIDM0LCAyNTEsIDE5NCwgNjAsIDM0LCAyMTcsIDYzLCA2MCwgMzQsIDI0MiwgMzQsIDYwLCAzNCwgCisgICAgMjQ0LCAxMTMsIDYwLCAzNCwgMjIyLCAyOCwgMjExLCAyMzYsIDYwLCAzNCwgMjUwLCAyMjAsIDYwLCAzNCwgMjQyLCAyMjIsIAorICAgIDYwLCAzNCwgMjQ0LCA5MCwgNjAsIDM0LCAyNTEsIDIzNywgNjAsIDM0LCAyMjIsIDEsIDYwLCAzNCwgMjQ4LCA3NCwgNjAsIAorICAgIDM0LCAyMTIsIDIsIDYwLCAzNCwgMjQxLCAyMTAsIDYwLCAzNCwgMjExLCA0MSwgNjAsIDM0LCAyMzAsIDE5MiwgNjAsIDM0LCAKKyAgICAyNTEsIDIyMSwgNjAsIDM0LCAyNDUsIDE1NSwgNjAsIDM0LCAyNDMsIDI0NCwgNjAsIDM0LCAyMTUsIDIwOSwgNjAsIDM0LCAKKyAgICAyNDYsIDgyLCA2MCwgMzQsIDIyMywgMTQxLCA2MCwgMzQsIDIyOCwgNTMsIDYwLCAzNCwgMjQ1LCA0MSwgNjAsIDM0LCAyMTYsIAorICAgIDE1LCA2MCwgMzQsIDI0NiwgOTYsIDYwLCAzNCwgMjE1LCA5MSwgNjAsIDM0LCAyNDQsIDQ4LCAxMDksIDI0OCwgMzcsIDEzNSwgCisgICAgNDMsIDIxNiwgNDIsIDIyMiwgMjUxLCAxMDksIDI0OCwgMzcsIDEzNSwgNzcsIDIxNiwgNDIsIDUxLCAxMDksIDI0OCwgMzcsIAorICAgIDEzNSwgNDMsIDIxNiwgNDIsIDIzMCwgMjI0LCAyMiwgMjIyLCAyNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCA3NywgMjE2LCA0MiwgCisgICAgMjMwLCAyMjQsIDIyLCA1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDI0MywgMjI5LCAyMTgsIDEwLCAxMDksIDI0OCwgMzcsIAorICAgIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDQ4LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDUxLCAKKyAgICAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDIzMywgNDYsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIAorICAgIDExLCAyNDMsIDI0MywgMjE0LCAxNjAsIDIzMywgNDYsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgCisgICAgMjE0LCAxNjAsIDIyMiwgMjUxLCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDIzMiwgMTA4LCAyMzMsIAorICAgIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjI2LCAxMjIsIDEwOSwgMjE5LCAxOCwgMTA5LCAyNDksIDIxOSwgMTA5LCAyNDMsIAorICAgIDIyOSwgMjE4LCAxMjksIDI0NywgMTc3LCA3OCwgMjM1LCAxMzEsIDIzNSwgMjM2LCAyMTgsIDE1OSwgODcsIDEwOSwgMjM1LCAKKyAgICAxNTgsIDc4LCAxMDksIDI0OSwgMjUyLCA3OCwgMTA5LCA1NCwgMjEwLCA4NiwgNDMsIDI1NCwgMTEwLCAxMjcsIDQ0LCAyNTQsIAorICAgIDExMCwgMTI3LCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDQ0LCA1MiwgMjU0LCAxMTAsIDEyNywgNDMsIDI0OSwgMTYxLCAKKyAgICAxMjcsIDQ0LCAyNDksIDE2MSwgMTI3LCA0MywgNzEsIDI0OSwgMTYxLCAxMjcsIDQ0LCA3MSwgMjQ5LCAxNjEsIDEyNywgNDMsIAorICAgIDg1LCAyMzMsIDIwLCAxMjcsIDQ0LCA4NSwgMjMzLCAyMCwgMTI3LCAyMjQsIDIzNywgNzgsIDI0MywgMzIsIDc4LCA0MywgCisgICAgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNDMsIDcxLCAyMzMsIDIwLCAxMjcsIDQ0LCAKKyAgICA3MSwgMjMzLCAyMCwgMTI3LCA0MywgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0NCwgNzEsIDIxNiwgNiwgMjIwLCA1MywgCisgICAgMTI3LCA0MywgNzEsIDQyLCAxMjcsIDQ0LCA3MSwgNDIsIDEyNywgMjEyLCAzNiwgMjQ4LCAxNTYsIDIyMywgNDksIDUyLCAKKyAgICAyMjQsIDE5MSwgMjIzLCAyNTQsIDc4LCA1MiwgMjI0LCAxOTEsIDIyMywgMjU0LCA3OCwgMTIxLCA1MiwgMjI0LCAxOTEsIAorICAgIDIyMywgMjU0LCA3OCwgMjI0LCAyMzcsIDE2NCwgMjQ0LCAxOTAsIDI0MiwgOCwgMjI3LCAxOTgsIDExMCwgMjQyLCA4LCAKKyAgICAyMjcsIDE5OCwgMTA1LCAyNDIsIDgsIDIyNywgMTk4LCAxNTgsIDI0MiwgOCwgMjI3LCAxOTgsIDE2MSwgMjQyLCA4LCAyMjcsIAorICAgIDE5OCwgMTg5LCAyNDIsIDgsIDIyNywgMTk4LCAxOTQsIDI0MiwgOCwgMjI3LCAxOTgsIDE5OCwgMjQyLCA4LCAyMjcsIDE5OCwgCisgICAgMTk1LCAyNDIsIDgsIDIyNywgMTk4LCAyMDAsIDEwOSwgMjMzLCAzLCAxMzgsIDc4LCAxMDksIDIyMiwgMjI4LCAxMzgsIDc4LCAKKyAgICAxMDksIDI0OCwgNDQsIDEzOCwgNzgsIDEwOSwgMjQ1LCAxMjgsIDEzOCwgNzgsIDI0LCAyMTksIDE1NSwgNTksIDEzOCwgNzgsIAorICAgIDI0LCA1MiwgNTksIDEzOCwgNzgsIDIxMiwgMzIsIDI0OCwgMTU2LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDc4LCA2NywgCisgICAgMjM0LCAyMzMsIDIyMywgNzcsIDIsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAxNjQsIAorICAgIDIxNCwgMTYwLCAyNDIsIDI3LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDIsIDIxMywgMTM1LCAyMTksIDMxLCAxNjQsIDIxNCwgCisgICAgMTYwLCAyNDIsIDI3LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDE2NCwgMjMyLCAxMDgsIDI0MiwgMjcsIDM3LCAyMjQsIAorICAgIDIzNywgNzgsIDEwOSwgMjE3LCAzLCAyMzIsIDIxNCwgMjQ0LCAxNDYsIDIyMCwgMTM4LCA4NywgMjQyLCA4LCAyMjcsIDE5OCwgCisgICAgMjE2LCAyNDcsIDI0MiwgOCwgMjI3LCAxOTgsIDIxNSwgNzMsIDI0MiwgOCwgMjI3LCAxOTgsIDIxNiwgMTYyLCA2NywgMTA5LCAKKyAgICAyMzUsIDE1OCwgNzgsIDIzMSwgMTQwLCA3OCwgMjI1LCAyNTUsIDI1NCwgMTQwLCA3OCwgMTA5LCA0NSwgMjM1LCAyMzgsIAorICAgIDEwOSwgMTYzLCAyNDQsIDEwNiwgMjE5LCAxOCwgMTQxLCAxLCA0LCA2MSwgMTQxLCAxLCA2MSwgMTQxLCAxLCA0LCA3MywgCisgICAgMTQxLCAxLCA3MywgMTQxLCAxLCA0LCA3MCwgMTQxLCAxLCA3MCwgMTQxLCAxLCA0LCA3NSwgMTQxLCAxLCA3NSwgMTQxLCAxLCAKKyAgICA0LCA3NiwgMTQxLCAxLCA3NiwgMTQxLCAxLCAxNzYsIDE0MSwgMSwgMjQzLCAxMzUsIDE0MSwgMSwgMjM0LCA5MiwgMTQxLCAKKyAgICAxLCAyNDIsIDIxNCwgMTQxLCAxLCAyMzMsIDIxNywgMTQxLCAxLCAyNDIsIDExMywgMTQxLCAxLCAyMzQsIDE4MiwgMTQxLCAKKyAgICAxLCAyNDMsIDYyLCAxNDEsIDEsIDIzNCwgMjgsIDE0MSwgMSwgMjQyLCAxNzQsIDE0MSwgMSwgMjA2LCAxNDEsIDEsIDIxMCwgCisgICAgMTE2LCAxNDEsIDEsIDIxOSwgMTkxLCAxNDEsIDEsIDIxMCwgNDQsIDE0MSwgMSwgMjE4LCA4MywgMTQxLCAxLCAyMTAsIDEzLCAKKyAgICAxNDEsIDEsIDIyMSwgMTgxLCAxNDEsIDEsIDIxMCwgOTQsIDE0MSwgMSwgMjE5LCA1OCwgMTQxLCAxLCAyMTAsIDIzLCAxNDEsIAorICAgIDEsIDIxNywgMTA1LCAxNDEsIDEsIDI0OCwgMjIxLCAxNDEsIDEsIDIxNiwgMTE3LCAxNDEsIDEsIDI0OCwgMywgMTQxLCAxLCAKKyAgICA0LCAyMTUsIDExOCwgMTQxLCAxLCAyMTUsIDExOCwgMTQxLCAxLCAyNDYsIDc4LCAxNDEsIDEsIDIxNywgMjIsIDE0MSwgMSwgCisgICAgMjQ4LCA5MCwgMTQxLCAxLCAxMTEsIDE0MSwgMSwgMjQ3LCAxNDUsIDE0MSwgMSwgMTk3LCAxNDEsIDEsIDIyOCwgMjMzLCAKKyAgICAxNDEsIDEsIDIyNywgMjM3LCAxNDEsIDEsIDIyOSwgMTA3LCAxNDEsIDEsIDIyOCwgNzQsIDE0MSwgMSwgMTYyLCAxNDEsIDEsIAorICAgIDI1MiwgMTkxLCAxNDEsIDEsIDE5MCwgMTQxLCAxLCAyNDEsIDE4MCwgMTQxLCAxLCAyNTIsIDYsIDE0MSwgMSwgMjI1LCAKKyAgICAxMDgsIDE0MSwgMSwgMjQwLCAyMjIsIDE0MSwgMSwgMjUxLCAxMjUsIDE0MSwgMSwgMjI0LCAxNTAsIDE0MSwgMSwgMjQxLCAKKyAgICAyMzgsIDE0MSwgMSwgMjUyLCA3NSwgMTQxLCAxLCAyMjUsIDIyMSwgMTQxLCAxLCAyNDEsIDY4LCAxNDEsIDEsIDI1MSwgCisgICAgMjA1LCAxNDEsIDEsIDIyNSwgMTYsIDE0MSwgMSwgMTg0LCAxNDEsIDEsIDIzMCwgMjMwLCAxNDEsIDEsIDIzMCwgMTAyLCAKKyAgICAxNDEsIDEsIDIzMSwgOTEsIDE0MSwgMSwgMjMwLCAxNjEsIDE0MSwgMSwgNCwgMTkxLCAxNDEsIDEsIDE5MSwgMTQxLCAxLCAKKyAgICA0LCAyMTAsIDIxMiwgMTQxLCAxLCAyMTAsIDIxMiwgMTQxLCAxLCA0LCAyMTAsIDI0NCwgMTQxLCAxLCAyMTAsIDI0NCwgCisgICAgMTQxLCAxLCAyMDUsIDE0MSwgMSwgMjIzLCAzNSwgMTQxLCAxLCAyMjIsIDE0MCwgMTQxLCAxLCAyMjMsIDEyOCwgMTQxLCAxLCAKKyAgICAyMjIsIDIxMSwgMTQxLCAxLCA0LCAyMTIsIDY1LCAxNDEsIDEsIDIxMiwgNjUsIDE0MSwgMSwgMjExLCAyNTAsIDE0MSwgMSwgCisgICAgMjEyLCAyMiwgMTQxLCAxLCAyMTEsIDIyNywgMTQxLCAxLCAyMzAsIDI1LCAxNDEsIDEsIDIxMiwgMTE2LCAxNDEsIDEsIDQsIAorICAgIDE3NiwgMTQxLCAxLCA0LCAyMzQsIDE4MiwgMzgsIDIzNCwgMjAxLCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDM4LCAyMzQsIAorICAgIDIwMSwgMjIwLCAxNTUsIDIxOSwgMzEsIDc4LCAyMzQsIDIwMSwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCAyMzQsIDIwMSwgCisgICAgMjIwLCAxNTUsIDIxOSwgMzEsIDc4LCAxNDEsIDIzNSwgMTU4LCA3OCwgMTQxLCAyMTMsIDEzNSwgMjM1LCAxNTgsIDc4LCAKKyAgICAxNDEsIDI0NywgMjIxLCAyMTAsIDIyNSwgMjM0LCAyMDEsIDUyLCAyNDAsIDE2OCwgNTYsIDEsIDQsIDYxLCA1NiwgMSwgNjEsIAorICAgIDU2LCAxLCA0LCA3MywgNTYsIDEsIDczLCA1NiwgMSwgNCwgNzAsIDU2LCAxLCA3MCwgNTYsIDEsIDQsIDc1LCA1NiwgMSwgCisgICAgNzUsIDU2LCAxLCA0LCA3NiwgNTYsIDEsIDc2LCA1NiwgMSwgMTc2LCA1NiwgMSwgMjQzLCAxMzUsIDU2LCAxLCAyMzQsIDkyLCAKKyAgICA1NiwgMSwgMjQyLCAyMTQsIDU2LCAxLCAyMzMsIDIxNywgNTYsIDEsIDI0MiwgMTEzLCA1NiwgMSwgMjM0LCAxODIsIDU2LCAKKyAgICAxLCAyNDMsIDYyLCA1NiwgMSwgMjM0LCAyOCwgNTYsIDEsIDI0MiwgMTc0LCA1NiwgMSwgMjA2LCA1NiwgMSwgMjEwLCAxMTYsIAorICAgIDU2LCAxLCAyMTksIDE5MSwgNTYsIDEsIDIxMCwgNDQsIDU2LCAxLCAyMTgsIDgzLCA1NiwgMSwgMjEwLCAxMywgNTYsIDEsIAorICAgIDIyMSwgMTgxLCA1NiwgMSwgMjEwLCA5NCwgNTYsIDEsIDIxOSwgNTgsIDU2LCAxLCAyMTAsIDIzLCA1NiwgMSwgMjE3LCAKKyAgICAxMDUsIDU2LCAxLCAyNDgsIDIyMSwgNTYsIDEsIDIxNiwgMTE3LCA1NiwgMSwgMjQ4LCAzLCA1NiwgMSwgNCwgMjE1LCAxMTgsIAorICAgIDU2LCAxLCAyMTUsIDExOCwgNTYsIDEsIDI0NiwgNzgsIDU2LCAxLCAyMTcsIDIyLCA1NiwgMSwgMjQ4LCA5MCwgNTYsIDEsIAorICAgIDExMSwgNTYsIDEsIDI0NywgMTQ1LCA1NiwgMSwgMTk3LCA1NiwgMSwgMjI4LCAyMzMsIDU2LCAxLCAyMjcsIDIzNywgNTYsIAorICAgIDEsIDIyOSwgMTA3LCA1NiwgMSwgMjI4LCA3NCwgNTYsIDEsIDE2MiwgNTYsIDEsIDI1MiwgMTkxLCA1NiwgMSwgMTkwLCA1NiwgCisgICAgMSwgMjQxLCAxODAsIDU2LCAxLCAyNTIsIDYsIDU2LCAxLCAyMjUsIDEwOCwgNTYsIDEsIDI0MCwgMjIyLCA1NiwgMSwgMjUxLCAKKyAgICAxMjUsIDU2LCAxLCAyMjQsIDE1MCwgNTYsIDEsIDI0MSwgMjM4LCA1NiwgMSwgMjUyLCA3NSwgNTYsIDEsIDIyNSwgMjIxLCAKKyAgICA1NiwgMSwgMjQxLCA2OCwgNTYsIDEsIDI1MSwgMjA1LCA1NiwgMSwgMjI1LCAxNiwgNTYsIDEsIDE4NCwgNTYsIDEsIDIzMCwgCisgICAgMjMwLCA1NiwgMSwgMjMwLCAxMDIsIDU2LCAxLCAyMzEsIDkxLCA1NiwgMSwgMjMwLCAxNjEsIDU2LCAxLCA0LCAxOTEsIDU2LCAKKyAgICAxLCAxOTEsIDU2LCAxLCA0LCAyMTAsIDIxMiwgNTYsIDEsIDIxMCwgMjEyLCA1NiwgMSwgNCwgMjEwLCAyNDQsIDU2LCAxLCAKKyAgICAyMTAsIDI0NCwgNTYsIDEsIDIwNSwgNTYsIDEsIDIyMywgMzUsIDU2LCAxLCAyMjIsIDE0MCwgNTYsIDEsIDIyMywgMTI4LCAKKyAgICA1NiwgMSwgMjIyLCAyMTEsIDU2LCAxLCA0LCAyMTIsIDY1LCA1NiwgMSwgMjEyLCA2NSwgNTYsIDEsIDIxMSwgMjUwLCA1NiwgCisgICAgMSwgMjEyLCAyMiwgNTYsIDEsIDIxMSwgMjI3LCA1NiwgMSwgMjMwLCAyNSwgNTYsIDEsIDIxMiwgMTE2LCA1NiwgMSwgNCwgCisgICAgMTc2LCA1NiwgMSwgNCwgMjM0LCAxODIsIDU2LCAxLCAyMTQsIDI3LCA1NiwgMSwgMjEzLCAxNzYsIDU2LCAxLCAyMTMsIAorICAgIDI1NSwgNTYsIDEsIDIxMywgMTM4LCA1NiwgMjMwLCAyMjQsIDI0NywgMTIwLCAyMzQsIDIwMSwgMjI0LCAxNzMsIDIxOSwgCisgICAgMzEsIDc4LCA1NiwgMjM1LCAxNTgsIDc4LCA1NiwgMjEzLCAxMzUsIDIzNSwgMTU4LCA3OCwgNTYsIDI0NywgMjIxLCAyMzMsIAorICAgIDI1NSwgMjUxLCAxODQsIDEsIDI1MywgMTU4LCAyNTEsIDE4NCwgMSwgMjI2LCAxMDUsIDI1MSwgMTg0LCAxLCAxOTMsIDI1MSwgCisgICAgMTg0LCAxLCAyNDUsIDYsIDI1MSwgMTg0LCAxLCAyNDksIDYwLCAyNTEsIDE4NCwgMSwgMjE3LCAxNTIsIDI1MSwgMTg0LCAxLCAKKyAgICAyMzAsIDI1LCAyNTEsIDE4NCwgMSwgMTU2LCAyNTEsIDE4NCwgMSwgMjQzLCAyMDIsIDI1MSwgMTg0LCAxLCAyMzUsIDIzLCAKKyAgICAyNTEsIDE4NCwgMSwgMjQyLCA2MCwgMjUxLCAxODQsIDEsIDIzNSwgMTQ0LCAyNTEsIDE4NCwgMSwgMjI0LCA5NiwgMjUxLCAKKyAgICAxODQsIDEsIDIxMSwgMTc4LCAyNTEsIDE4NCwgMSwgMjEwLCA4MywgMjUxLCAxODQsIDEsIDI1MCwgMTU4LCAyNTEsIDE4NCwgCisgICAgMSwgMjIwLCAxMDQsIDI1MSwgMTg0LCAxLCAxNTMsIDI1MSwgMTg0LCAxLCAyMTAsIDE1OSwgMjUxLCAxODQsIDEsIDI1MSwgCisgICAgNjYsIDI1MSwgMTg0LCAxLCAyMjIsIDkxLCAyNTEsIDE4NCwgMSwgNjEsIDI1MSwgMTg0LCAxLCA3NiwgMjUxLCAxODQsIDEsIAorICAgIDc1LCAyNTEsIDE4NCwgMSwgMjQ1LCAxOTcsIDI1MSwgMTg0LCAxLCAyNTQsIDIwMSwgMjUxLCAxODQsIDEsIDI0NSwgMTk1LCAKKyAgICAyNTEsIDE4NCwgMSwgMjUzLCAxOTIsIDI1MSwgMTg0LCAxLCAyMjYsIDEzNCwgMjUxLCAxODQsIDEsIDI1NCwgMTIzLCAyNTEsIAorICAgIDE4NCwgMSwgMjQ1LCAxNTAsIDI1MSwgMTg0LCAxLCAyNTQsIDExNSwgMjUxLCAxODQsIDEsIDI0NSwgMTM4LCAyNTEsIDE4NCwgCisgICAgMSwgMjQ1LCA5MiwgMjUxLCAxODQsIDEsIDczLCAyNTEsIDE4NCwgMSwgNzAsIDI1MSwgMTg0LCAxLCAyMzUsIDE1NiwgMjUxLCAKKyAgICAxODQsIDEsIDIxNCwgMTA1LCAyNTEsIDE4NCwgMSwgMjI5LCA3OSwgMjUxLCAxODQsIDEsIDI0MiwgMTc4LCAyNTEsIDE4NCwgCisgICAgMSwgMjM2LCAzNCwgMjQsIDEsIDIzNCwgNTgsIDI0LCAxLCAyMTgsIDIxNSwgMjQsIDEsIDIzNCwgNTEsIDI0LCAxLCAyMjgsIAorICAgIDIyNiwgMjQsIDEsIDIyOCwgMjI0LCAyNCwgMSwgMjI4LCAyMjMsIDI0LCAxLCAyMTYsIDEwMSwgMjQsIDEsIDIxOCwgMjA0LCAKKyAgICAyNCwgMSwgMjIzLCAyNiwgMjQsIDEsIDIyMywgMjEsIDI0LCAxLCAyMjMsIDE4LCAyNCwgMSwgMjIzLCAxMSwgMjQsIDEsIAorICAgIDIyMywgNiwgMjQsIDEsIDIyMywgMSwgMjQsIDEsIDIyMywgMTIsIDI0LCAxLCAyMjMsIDI0LCAyNCwgMSwgMjMwLCAyMTcsIAorICAgIDI0LCAxLCAyMjUsIDk1LCAyNCwgMSwgMjE4LCAyMTIsIDI0LCAxLCAyMjUsIDg0LCAyNCwgMSwgMjE5LCAxNDgsIDI0LCAxLCAKKyAgICAyMTgsIDIwOSwgMjQsIDEsIDIzNiwgNTYsIDI0LCAxLCAyNTAsIDQ2LCAyNCwgMSwgMjE4LCAyMTksIDI0LCAxLCAyNTAsIAorICAgIDEwNiwgMjQsIDEsIDIzNCwgMTEwLCAyNCwgMSwgMjE2LCAxNzMsIDI0LCAxLCAyMjUsIDEzMSwgMjQsIDEsIDI0MSwgMTcyLCAKKyAgICAyNCwgMSwgNjEsIDI0LCAxLCAyNTQsIDI0MywgMjQsIDEsIDE5MSwgMjQsIDEsIDIxMSwgOTIsIDI0LCAxLCAyNDUsIDExNywgCisgICAgMjQsIDEsIDc1LCAyNCwgMSwgMjExLCAzNiwgMjQsIDEsIDIxMSwgNDcsIDI0LCAxLCA3NiwgMjQsIDEsIDIxMiwgNjUsIDI0LCAKKyAgICAxLCAyMTIsIDYyLCAyNCwgMSwgMjI2LCAyMzQsIDI0LCAxLCAyMTAsIDI0NCwgMjQsIDEsIDcwLCAyNCwgMSwgMjEyLCAxMSwgCisgICAgMjQsIDEsIDIxMiwgMjIsIDI0LCAxLCAyMTEsIDI1MCwgMjQsIDEsIDIxMCwgMjEyLCAyNCwgMSwgMjQ1LCA1NSwgMjQsIDEsIAorICAgIDIxMSwgOCwgMjQsIDEsIDczLCAyNCwgMjQ0LCAxMDMsIDI0LCAxLCAyMTgsIDIxMywgMjQsIDEsIDIyOCwgMjE2LCAyNCwgMSwgCisgICAgMjI4LCAyMTgsIDI0LCAxLCAyMjgsIDIyMSwgMjQsIDEsIDIyMywgMTksIDI0LCAxLCAyMjMsIDAsIDI0LCAxLCAyMjMsIDgsIAorICAgIDI0LCAxLCAyMjMsIDEzLCAyNCwgMSwgMjIyLCAyNTQsIDI0LCAxLCAyMzAsIDIxMCwgMjQsIDEsIDIzMCwgMjA3LCAyNCwgMSwgCisgICAgMjMwLCAyMTEsIDI0LCAxLCAyMzQsIDIyMSwgMjQsIDEsIDIyNSwgOTAsIDI0LCAxLCAyMjUsIDc2LCAyNCwgMSwgMjI1LCAKKyAgICA4MiwgMjQsIDEsIDIyNSwgNzksIDI0LCAxLCAyMjUsIDkzLCAyNCwgMSwgMjI1LCA3NywgMjQsIDEsIDIzNCwgMjE5LCAyNCwgCisgICAgMSwgMjM0LCAyMTcsIDI0LCAxLCAyMTksIDE0MSwgMjQsIDEsIDIxOSwgMTM5LCAyNCwgMSwgMjE5LCAxMzEsIDI0LCAxLCAKKyAgICAyMTksIDEzNiwgMjQsIDEsIDIxOSwgMTQ2LCAyNCwgMSwgMjI2LCAzMiwgMjQsIDEsIDIxOCwgMjE2LCAyNCwgMSwgMjExLCAKKyAgICAyNiwgMjQsIDEsIDIxMSwgMjIsIDI0LCAxLCAyMTEsIDIzLCAyNCwgMSwgMjM0LCAyMjAsIDI0LCAxLCAyMTgsIDIxNywgMjQsIAorICAgIDEsIDIxMSwgMzIsIDI0LCAxLCAyMTAsIDIzOCwgMjQsIDEsIDIxMCwgMjM3LCAyNCwgMSwgMjEwLCAyNDAsIDI0LCAxLCAKKyAgICAyMTAsIDIwMywgMjQsIDEsIDIxMCwgMjA0LCAyNCwgMSwgMjEwLCAyMDcsIDI0LCAxLCAyNTQsIDM0LCAyNCwgMSwgMjU0LCAKKyAgICAyOCwgMTA5LCAyNTQsIDk5LCAyMzIsIDIwMywgNzgsIDEwOSwgMjU0LCA5OSwgMjIzLCA1MCwgNzgsIDEwOSwgMjU0LCA5OSwgCisgICAgMTIzLCA3OCwgMTA5LCAyNTQsIDk5LCAxMTMsIDc4LCAxMDksIDI1NCwgOTksIDEzNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ0LCAKKyAgICAxMSwgNzgsIDEwOSwgMjU0LCA5OSwgMjE2LCAxNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjMwLCAyMjQsIDc4LCAxMDksIDI1NCwgCisgICAgOTksIDI1MSwgMTc1LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDQsIDkyLCA3OCwgMTA5LCAyNTQsIDk5LCAyMjEsIDE3NiwgNzgsIAorICAgIDEwOSwgMjU0LCA5OSwgMjE2LCAxNjksIDc4LCAxMDksIDI1NCwgOTksIDI0NCwgNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjQxLCAKKyAgICAyMjQsIDc4LCAxMDksIDI1NCwgOTksIDI0NSwgMjI0LCA3OCwgMTA5LCAyNTQsIDk5LCAyMzEsIDE4NiwgNzgsIDI1MSwgCisgICAgMTg0LCAxLCAyNTEsIDEyNSwgMjUxLCAxODQsIDEsIDIxMCwgNDQsIDI1MSwgMTg0LCAxLCAyMzUsIDEwOCwgMjUxLCAxODQsIAorICAgIDEsIDI0MiwgMTEzLCAyNTEsIDE4NCwgMSwgMjQ1LCAyMDksIDI1MSwgMTg0LCAxLCAyNDUsIDEzNSwgMjUxLCAxODQsIDEsIAorICAgIDIyNiwgMTgzLCAyNTEsIDE4NCwgMSwgMjI2LCAxODcsIDI1MSwgMTg0LCAxLCAyMzUsIDE3OSwgMjUxLCAxODQsIDEsIDI1NCwgCisgICAgMTAxLCAyNTEsIDE4NCwgMSwgMjM1LCAyMjQsIDI1MSwgMTg0LCAxLCAyMTQsIDE2OCwgMjUxLCAxODQsIDEsIDIzNiwgMTYsIAorICAgIDI1MSwgMTg0LCAxLCAyMjksIDU3LCAyNTEsIDE4NCwgMSwgMjU0LCAxOTUsIDI1MSwgMTg0LCAxLCAyNTMsIDE4NywgMjUxLCAKKyAgICAxODQsIDEsIDI1NCwgMTM2LCAyNTEsIDE4NCwgMSwgMjI2LCAyMDQsIDI1MSwgMTg0LCAxLCAyMjYsIDE4OSwgMjUxLCAxODQsIAorICAgIDEsIDIzNSwgMjIxLCAyNTEsIDE4NCwgNDAsIDEsIDIyNiwgMTA1LCAyNTEsIDE4NCwgNDAsIDEsIDIxNywgMTUyLCAyNTEsIAorICAgIDE4NCwgNDAsIDEsIDIzNSwgMjMsIDI1MSwgMTg0LCA0MCwgMSwgMjQyLCA2MCwgMjUxLCAxODQsIDEsIDI0MiwgMjUwLCAKKyAgICAyNTEsIDE4NCwgMSwgMjMyLCAyNTUsIDI1MSwgMTg0LCAxLCAyMDksIDI1MCwgOSwgMjE4LCAxMDMsIDIxNywgMTUyLCA5LCAKKyAgICAyMTgsIDEwMywgMjEyLCA0LCA5LCAyMTgsIDEwMywgMjExLCAxNTgsIDksIDIxOCwgMTAzLCAyNTEsIDc5LCA5LCAyMTgsIAorICAgIDEwMywgMjE3LCAyNTQsIDksIDIxOCwgMTAzLCAyNDAsIDE1OCwgOSwgMjE4LCAxMDMsIDI0MCwgMTYyLCA5LCAyMTgsIDEwMywgCisgICAgMjQwLCAyMzEsIDksIDIxOCwgMTAzLCAyNDAsIDE1OSwgOSwgMjE4LCAxMDMsIDIxNywgMTU1LCA5LCAyMTgsIDEwMywgMjQwLCAKKyAgICAxNjEsIDksIDIxOCwgMTAzLCAyNDAsIDE1NywgOSwgMjE4LCAxMDMsIDI0MCwgMjI5LCA5LCAyMTgsIDEwMywgMjQwLCAxNjAsIAorICAgIDksIDIxOCwgMTAzLCAyNDAsIDE1NiwgOSwgMjE4LCAxMDMsIDIzMCwgMjUsIDksIDIxOCwgMTAzLCAyNDIsIDYwLCA5LCAKKyAgICAyMTgsIDEwMywgMjIyLCA5MSwgOSwgMjE4LCAxMDMsIDIyNiwgMTA1LCA5LCAyMTgsIDEwMywgMjE5LCAyMSwgOSwgMjE4LCAKKyAgICAxMDMsIDI0OSwgNjAsIDksIDIxOCwgMTAzLCAyNDAsIDE2MywgOSwgMjE4LCAxMDMsIDI0MSwgMTkwLCA5LCAyMTgsIDEwMywgCisgICAgMjE3LCAxNjQsIDksIDIxOCwgMTAzLCAyMTcsIDIzMywgOSwgMjE4LCAxMDMsIDIxOCwgMTY4LCA5LCAyMTgsIDEwMywgMjIwLCAKKyAgICAxMTAsIDksIDIxOCwgMTAzLCAyMjUsIDIyNCwgOSwgMjE4LCAxMDMsIDIyNCwgOTgsIDksIDIxOCwgMTAzLCAyMTYsIDQzLCAKKyAgICA5LCAyMTgsIDEwMywgMjE3LCAxNTQsIDksIDIxOCwgMTAzLCAyMTcsIDI0NCwgOSwgMjE4LCAxMDMsIDI0MCwgMTcwLCA5LCAKKyAgICAyMTgsIDEwMywgMjQwLCAxNTUsIDksIDIxOCwgMTAzLCAyMjUsIDE0OSwgOSwgMjE4LCAxMDMsIDIyNCwgOTYsIDU2LCAxLCAKKyAgICA0LCAyMzMsIDIxNywgNTYsIDEsIDQsIDIxOSwgMTkxLCA1NiwgMSwgNCwgMjE4LCA4MywgNTYsIDEsIDQsIDExMSwgNTYsIDEsIAorICAgIDQsIDIyNywgMjM3LCA1NiwgMSwgNCwgMTYyLCA1NiwgMSwgNCwgMjQxLCAxODAsIDU2LCAxLCA0LCAyNDAsIDIyMiwgNTYsIAorICAgIDEsIDQsIDI0MSwgMjM4LCA1NiwgMSwgNCwgMjQxLCA2OCwgNTYsIDEsIDQsIDIzMCwgMTAyLCA1NiwgMSwgNCwgMjA1LCA1NiwgCisgICAgMSwgNCwgMjIzLCAzNSwgNTYsIDEsIDQsIDIyMiwgMTQwLCA1NiwgMSwgNCwgMjIzLCAxMjgsIDU2LCAxLCA0LCAyMjIsIAorICAgIDIxMSwgODgsIDI0LCAyMzQsIDU4LCA4OCwgMjQsIDIyOCwgMjI2LCA4OCwgMjQsIDIxNiwgMTAxLCA4OCwgMjQsIDIyMywgCisgICAgMjYsIDg4LCAyNCwgMjMwLCAyMTcsIDg4LCAyNCwgMjI1LCA5NSwgODgsIDI0LCAyMTksIDE0OCwgODgsIDI0LCAyMzYsIDU2LCAKKyAgICA4OCwgMjQsIDI1MCwgNDYsIDg4LCAyNCwgMjUwLCAxMDYsIDg4LCAyNCwgMjM0LCAxMTAsIDg4LCAyNCwgMjE2LCAxNzMsIAorICAgIDg4LCAyNCwgMjI1LCAxMzEsIDg4LCAyNCwgMjQxLCAxNzIsIDg4LCAyNCwgMjM0LCA1OSwgNjEsIDg4LCAyNCwgMjI4LCAKKyAgICAyMjcsIDYxLCA4OCwgMjQsIDIxNiwgMTAyLCA2MSwgODgsIDI0LCAyMjMsIDI3LCA2MSwgODgsIDI0LCAyMzAsIDIxOCwgNjEsIAorICAgIDg4LCAyNCwgMjI1LCA5NiwgNjEsIDg4LCAyNCwgMjE5LCAxNDksIDYxLCA4OCwgMjQsIDIzNiwgNTcsIDYxLCA4OCwgMjQsIAorICAgIDI1MCwgNDcsIDYxLCA4OCwgMjQsIDI1MCwgMTA3LCA2MSwgODgsIDI0LCAyMzQsIDExMSwgNjEsIDg4LCAyNCwgMjE2LCAKKyAgICAxNzQsIDYxLCA4OCwgMjQsIDIyNSwgMTMyLCA2MSwgODgsIDI0LCAyNDEsIDE3MywgNjEsIDg4LCAyNCwgMjUwLCA0NywgNzAsIAorICAgIDg4LCAyMzQsIDMsIDEzNSwgMjI2LCAyMTcsIDg4LCAyMzQsIDMsIDEzNSwgMTQ0LCAyNDAsIDIyMiwgODgsIDE1NCwgMTEwLCAKKyAgICA4OCwgMTU0LCAxMDUsIDg4LCAxNTQsIDE1OCwgODgsIDE1NCwgMTYxLCA4OCwgMTU0LCAxODksIDg4LCAxNTQsIDE5NCwgODgsIAorICAgIDE1NCwgMTk4LCA4OCwgMTU0LCAxOTUsIDg4LCAxNTQsIDIwMCwgODgsIDE1NCwgMjE2LCAyNDcsIDg4LCAxNTQsIDIzMCwgCisgICAgMTI4LCA4OCwgMTU0LCAyNDQsIDk2LCA4OCwgMTU0LCAyMTIsIDQwLCA4OCwgMTU0LCAyMTEsIDIxNCwgODgsIDE1NCwgMjMxLCAKKyAgICAzOSwgODgsIDE1NCwgMjQ1LCAyMjMsIDg4LCAxNTQsIDIxOCwgMzcsIDg4LCAxNTQsIDIxOCwgMTMyLCA4OCwgMTU0LCAyNDEsIAorICAgIDI0NCwgODgsIDE1NCwgMjE5LCA1NCwgODgsIDE1NCwgMjI5LCAyMDQsIDg4LCAxNTQsIDIxOSwgNCwgODgsIDE1NCwgMjQ0LCAKKyAgICAxMDIsIDg4LCAxNTQsIDI0OSwgMjAwLCA4OCwgMTU0LCAyMzMsIDEyNSwgODgsIDE1NCwgMjIzLCA3MSwgODgsIDE1NCwgCisgICAgMjUxLCAxNSwgODgsIDE1NCwgMjE4LCA4NywgODgsIDE1NCwgMjE4LCAyMCwgODgsIDE1NCwgMjQ1LCAxMjcsIDg4LCAxNTQsIAorICAgIDIyMywgNjMsIDg4LCAxNTQsIDI1NCwgMTUwLCA4OCwgMTU0LCAyNDQsIDEyOCwgODgsIDE1NCwgMjIzLCA2MSwgODgsIDE1NCwgCisgICAgMjIwLCAxNTYsIDg4LCAxNTQsIDIyMywgMTI3LCAzNywgMTU0LCAyMjQsIDEyLCAzNywgMTU0LCAyMzQsIDgwLCAzNywgMTU0LCAKKyAgICAyMjEsIDE5OCwgMzcsIDE1NCwgMjMzLCAyNTUsIDM3LCA1NCwgMjE2LCAyNDgsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIAorICAgIDM3LCA1NCwgMjE1LCA3NCwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMTYsIDE2MywgMjI2LCAxOTcsIDg1LCAKKyAgICAyMTgsIDIzNCwgMzcsIDU0LCAyNDQsIDE2LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDI0NCwgMTE1LCAyMjYsIAorICAgIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDIxOSwgMTEyLCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDIyMCwgCisgICAgMTE3LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDI0NSwgMTg1LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAKKyAgICAyMjUsIDI1MSwgNTAsIDM3LCA1NCwgMjE1LCA3NCwgMTEwLCAzNywgNTQsIDIxNSwgNzQsIDEwNSwgMzcsIDU0LCAyMTUsIAorICAgIDc0LCAxNTgsIDM3LCA1NCwgMjE1LCA3NCwgMTYxLCAzNywgNTQsIDIxNSwgNzQsIDE4OSwgMzcsIDU0LCAyMTUsIDc0LCAKKyAgICAxOTQsIDM3LCA1NCwgMjE1LCA3NCwgMTk4LCAzNywgNTQsIDIxNSwgNzQsIDE5NSwgMzcsIDU0LCAyMTUsIDc0LCAyMDAsIAorICAgIDM3LCA1NCwgMjE2LCAxNjIsIDM3LCA1NCwgMjE2LCAxNjMsIDExMCwgMzcsIDU0LCAyMTYsIDE2MywgMTA1LCAzNywgNTQsIAorICAgIDIxNiwgMTYzLCAxNTgsIDM3LCA1NCwgMjE2LCAxNjMsIDE2MSwgMzcsIDU0LCAyMTYsIDE2MywgMTg5LCAzNywgMjQsIDIzNCwgCisgICAgNTgsIDM3LCAyNCwgMjI4LCAyMjYsIDM3LCAyNCwgMjE2LCAxMDEsIDM3LCAyNCwgMjIzLCAyNiwgMzcsIDI0LCAyMzAsIAorICAgIDIxNywgMzcsIDI0LCAyMjUsIDk1LCAzNywgMjQsIDIxOSwgMTQ4LCAzNywgMjQsIDIzNiwgNTYsIDM3LCAyNCwgMjUwLCA0NiwgCisgICAgMzcsIDI0LCAyNTAsIDEwNiwgMzcsIDI0LCAyMzQsIDExMCwgMzcsIDI0LCAyMTYsIDE3MywgMzcsIDI0LCAyMjUsIDEzMSwgCisgICAgMzcsIDI0LCAyNDEsIDE3MiwgMzcsIDI0LCAyMzQsIDU5LCA2MSwgMzcsIDI0LCAyMjgsIDIyNywgNjEsIDM3LCAyNCwgMjE2LCAKKyAgICAxMDIsIDYxLCAzNywgMjQsIDIyMywgMjcsIDYxLCAzNywgMjQsIDIzMCwgMjE4LCA2MSwgMzcsIDI0LCAyMjUsIDk2LCA2MSwgCisgICAgMzcsIDI0LCAyMTksIDE0OSwgNjEsIDM3LCAyNCwgMjM2LCA1NywgNjEsIDM3LCAyNCwgMjUwLCA0NywgNjEsIDM3LCAyNCwgCisgICAgMjUwLCAxMDcsIDYxLCAzNywgMjQsIDIzNCwgMTExLCA2MSwgMzcsIDI0LCAyMTYsIDE3NCwgNjEsIDM3LCAyNCwgMjI1LCAKKyAgICAxMzIsIDYxLCAzNywgMjQsIDI0MSwgMTczLCA2MSwgMzcsIDIzNCwgMywgMTM1LCAyNTAsIDE0OCwgMzcsIDIzNCwgMywgCisgICAgMTM1LCAyMzUsIDQ3LCAzNywgMjQsIDIzNiwgNTcsIDcwLCAyMzQsIDMsIDIxOCwgMTU5LCA4NywgMzcsIDE1NCwgMTEwLCAKKyAgICAzNywgMTU0LCAxMDUsIDM3LCAxNTQsIDE1OCwgMzcsIDE1NCwgMTYxLCAzNywgMTU0LCAxODksIDM3LCAxNTQsIDE5NCwgMzcsIAorICAgIDE1NCwgMTk4LCAzNywgMTU0LCAxOTUsIDM3LCAxNTQsIDIwMCwgMzcsIDE1NCwgMjE2LCAyNDcsIDM3LCAxNTQsIDIzMCwgCisgICAgMTI4LCAzNywgMTU0LCAyNDQsIDk2LCAzNywgMTU0LCAyMTIsIDQwLCAzNywgMTU0LCAyMTEsIDIxNCwgMzcsIDE1NCwgMjMxLCAKKyAgICAzOSwgMzcsIDE1NCwgMjQ1LCAyMjMsIDM3LCAxNTQsIDIxOCwgMzcsIDM3LCAxNTQsIDIxOCwgMTMyLCAzNywgMTU0LCAyNDEsIAorICAgIDI0NCwgMzcsIDE1NCwgMjE5LCA1NCwgMzcsIDE1NCwgMjI5LCAyMDQsIDM3LCAxNTQsIDIxOSwgNCwgMzcsIDE1NCwgMjQ0LCAKKyAgICAxMDIsIDM3LCAxNTQsIDI0OSwgMjAwLCAzNywgMTU0LCAyMzMsIDEyNSwgMzcsIDE1NCwgMjIxLCAxNzQsIDM3LCAxNTQsIAorICAgIDIzMSwgMTg5LCAzNywgMTU0LCAyNDQsIDEzNywgMzcsIDE1NCwgMjE4LCA0OSwgMzcsIDE1NCwgMjQ1LCAzNCwgMzcsIDE1NCwgCisgICAgMjI0LCAxODcsIDM3LCAxNTQsIDI1MywgMTk2LCAzNywgMTU0LCAyMzUsIDE1OSwgMzcsIDE1NCwgMjIzLCA2MSwgMzcsIAorICAgIDE1NCwgMjQ5LCAxNjQsIDM3LCAxNTQsIDI0OSwgMTU1LCAzNywgMTU0LCAyNDEsIDE2NSwgMzcsIDE1NCwgMjUwLCAxNzQsIAorICAgIDM3LCAxNTQsIDIzMiwgMTEwLCAzNywgMTU0LCAyMzMsIDQ2LCAzNywgMTU0LCAyMjIsIDI1MSwgMzcsIDE1NCwgMjMxLCA4MywgCisgICAgMzcsIDE1NCwgMjIzLCA4NywgMzcsIDE1NCwgMjE4LCA4NywgMzcsIDE1NCwgMjE4LCAyMCwgMzcsIDE1NCwgMjQ1LCAxMjcsIAorICAgIDM3LCAxNTQsIDIyMywgNjMsIDM3LCAxNTQsIDI1NCwgMTUwLCAzNywgMTU0LCAyMjgsIDIxMiwgMzcsIDU0LCAyMTYsIDE2MywgCisgICAgMTk0LCAzNywgNTQsIDIxNiwgMTYzLCAxOTgsIDM3LCA1NCwgMjE2LCAxNjMsIDE5NSwgMzcsIDU0LCAyMTYsIDE2MywgMjAwLCAKKyAgICAzNywgNTQsIDI0NCwgMTUsIDM3LCA1NCwgMjQ0LCAxNiwgMTEwLCAzNywgNTQsIDI0NCwgMTYsIDEwNSwgMzcsIDU0LCAyNDQsIAorICAgIDE2LCAxNTgsIDM3LCA1NCwgMjQ0LCAxNiwgMTYxLCAzNywgNTQsIDI0NCwgMTYsIDE4OSwgMzcsIDU0LCAyNDQsIDE2LCAKKyAgICAxOTQsIDM3LCA1NCwgMjQ0LCAxNiwgMTk4LCAzNywgNTQsIDI0NCwgMTYsIDE5NSwgMzcsIDU0LCAyNDQsIDE2LCAyMDAsIAorICAgIDM3LCA1NCwgMjQ0LCAxMTQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzNSwgMTMzLCAxMDksIDIxNywgMywgMTYsIDMxLCAKKyAgICAyNDQsIDE0OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjMxLCAxNjAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI1NCwgNDcsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzMSwgMTMyLCAxMDksIDIxNywgMywgMTYsIDMxLCAyMzUsIDQ1LCAxMDksIDIxNywgMywgCisgICAgMTYsIDMxLCAyMzUsIDQ2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNTMsIDE4OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjIwLCAKKyAgICAxMzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIyNiwgMjM5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMjgsIDQwLCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDgsIDg1LCA0MiwgMjQxLCAxOTAsIDQyLCAyNDUsIDg4LCA0MiwgMjQ1LCA0MywgMjMyLCAKKyAgICAyMTksIDIzMiwgMjQwLCA1MCwgMzcsIDU2LCA2MSwgMzcsIDU2LCA3MywgMzcsIDU2LCA3MCwgMzcsIDU2LCA3NSwgMzcsIAorICAgIDU2LCA3NiwgMzcsIDU2LCAxNzYsIDM3LCA1NiwgMjM0LCA5MiwgMzcsIDU2LCAyMzMsIDIxNywgMzcsIDU2LCAyMzQsIDE4MiwgCisgICAgMzcsIDU2LCAyMzQsIDI4LCAzNywgNTYsIDIwNiwgMzcsIDU2LCAyMTksIDE5MSwgMzcsIDU2LCAyMTgsIDgzLCAzNywgNTYsIAorICAgIDIyMSwgMTgxLCAzNywgNTYsIDIxOSwgNTgsIDM3LCA1NiwgMjE3LCAxMDUsIDM3LCA1NiwgMjE2LCAxMTcsIDM3LCA1NiwgCisgICAgMjE1LCAxMTgsIDM3LCA1NiwgMjE3LCAyMiwgMzcsIDU2LCAxMTEsIDM3LCA1NiwgMTk3LCAzNywgNTYsIDIyOCwgMjMzLCAKKyAgICAzNywgNTYsIDIyNywgMjM3LCAzNywgNTYsIDIyOSwgMTA3LCAzNywgNTYsIDIyOCwgNzQsIDM3LCA1NiwgMTYyLCAzNywgNTYsIAorICAgIDI0MSwgMTgwLCAzNywgNTYsIDI0MCwgMjIyLCAzNywgNTYsIDI0MSwgMjM4LCAzNywgNTYsIDI0MSwgNjgsIDM3LCA1NiwgCisgICAgMTg0LCAzNywgNTYsIDIzMCwgMjMwLCAzNywgNTYsIDIzMCwgMTAyLCAzNywgNTYsIDIzMSwgOTEsIDM3LCA1NiwgMjMwLCAKKyAgICAxNjEsIDM3LCA1NiwgMTkxLCAzNywgNTYsIDIxMCwgMjEyLCAzNywgNTYsIDIxMCwgMjQ0LCAzNywgNTYsIDIwNSwgMzcsIAorICAgIDU2LCAyMjMsIDM1LCAzNywgNTYsIDIyMiwgMTQwLCAzNywgNTYsIDIyMywgMTI4LCAzNywgNTYsIDIyMiwgMjExLCAzNywgCisgICAgNTYsIDIxMiwgNjUsIDM3LCA1NiwgMjExLCAyNTAsIDM3LCA1NiwgMjEyLCAyMiwgMzcsIDU2LCAyMTEsIDIyNywgNDIsIAorICAgIDI1NCwgNzEsIDQyLCAyNTMsIDIzOSwgNDIsIDI1NCwgOTUsIDQyLCAyNTUsIDMxLCA0MiwgMjM1LCAyMjYsIDQyLCAyMzUsIAorICAgIDE5NiwgNDIsIDIxNCwgMTY2LCA0MiwgMjQ1LCA2NiwgNDIsIDI0NSwgMjA2LCA0MiwgMjI2LCAxODYsIDQyLCAyMjYsIDE4MCwgCisgICAgNDIsIDIzNCwgMjQ1LCA0MiwgMjM0LCAyMTQsIDQyLCAyMzQsIDIxMSwgNDIsIDI0MywgOTIsIDQyLCAyNDMsIDEwMSwgNDIsIAorICAgIDI0MiwgMjA0LCA0MiwgMjQyLCAyMDAsIDQyLCAyMzMsIDE1MCwgNDIsIDI0MiwgMTkzLCA0MiwgMjM0LCA3MiwgNDIsIDIzNCwgCisgICAgNzEsIDQyLCAyMzQsIDcwLCA0MiwgMjM0LCA2OSwgNDIsIDI0MiwgODYsIDQyLCAyNDIsIDg1LCA0MiwgMjMzLCAxOTMsIDQyLCAKKyAgICAyMzMsIDE5NSwgNDIsIDIzNCwgMTc4LCA0MiwgMjM0LCAxLCA0MiwgMjM0LCA4LCA0MiwgMjIyLCAxNiwgNDIsIDIyMSwgCisgICAgMjM3LCA0MiwgMjE5LCAxMjksIDQyLCAyMjAsIDE0MSwgNDIsIDIyMCwgMTQwLCA0MiwgMjQ4LCAyMTgsIDQyLCAyNDgsIDM2LCAKKyAgICA0MiwgMjQ3LCAxMjEsIDQyLCAyMTYsIDMyLCA0MiwgMjI5LCAyMDAsIDQyLCAyMjgsIDQxLCA0MiwgMjQyLCAzMiwgNDIsIAorICAgIDIyNiwgODQsIDQyLCAyMjYsIDgzLCA0MiwgMjUyLCAxODgsIDQyLCAyMjUsIDEwNSwgNDIsIDIyNSwgNjksIDQyLCAyMjUsIAorICAgIDcwLCA0MiwgMjUxLCAyMzQsIDQyLCAyNDAsIDIyMSwgNDIsIDI0MCwgMjE3LCA0MiwgMjUxLCA5MSwgNDIsIDI0MCwgMjA0LCAKKyAgICA0MiwgMjQxLCAyMTUsIDQyLCAyMjUsIDE1OSwgNDIsIDIyNSwgMTk0LCA0MiwgMjQxLCAxOTgsIDQyLCAyMjUsIDE5MSwgNDIsIAorICAgIDIyNSwgMjA3LCA0MiwgMjUyLCA2MSwgNDIsIDIyNSwgNiwgNDIsIDI1MSwgMTgwLCA0MiwgMjQxLCA1NiwgNDIsIDIyNCwgCisgICAgMjUwLCA0MiwgMjQxLCA0OCwgNDIsIDI0MSwgNTAsIDQyLCAyMzEsIDIwMSwgNDIsIDIzMSwgMTk3LCA0MiwgMjMxLCAyMDYsIAorICAgIDQyLCAyMzEsIDE1MCwgNDIsIDIzMSwgMTc1LCA0MiwgMjMwLCAxOTcsIDQyLCAyMzAsIDE3NiwgNDIsIDIzMCwgMTc1LCA0MiwgCisgICAgMjMxLCA3NCwgNDIsIDIzMSwgNzEsIDQyLCAyMzEsIDc1LCA0MiwgMjExLCAxMDIsIDQyLCAyMTEsIDEwMCwgNDIsIDIxMCwgCisgICAgMjAxLCA0MiwgMjIyLCAyMjYsIDQyLCAyMjIsIDIzMCwgNDIsIDIyMiwgMTE3LCA0MiwgMjIyLCAxMTEsIDQyLCAyMjMsIDg1LCAKKyAgICA0MiwgMjIzLCA4MiwgNDIsIDIxMiwgMzgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTAsIDg2LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTEwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTA1LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTU4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTYxLCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTg5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTk0LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTk4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTk1LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjAwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE2LCAyNDcsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDUsIDE2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIAorICAgIDIxNSwgNzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTYsIDE2NCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgCisgICAgMjQwLCAyMzksIDI0NCwgNSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDI0NCwgMTE4LCAxMDksIDIxNywgMywgCisgICAgMTYsIDMxLCAyNDAsIDIzOSwgMjE5LCAxMTksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMjAsIDExOSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDI0NSwgMTkwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjI4LCAKKyAgICAxOTcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTUsIDczLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIAorICAgIDIzOSwgMjE1LCA2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNSwgNjMsIDEwOSwgMjE3LCAzLCAxNiwgCisgICAgMzEsIDI0MCwgMjM5LCAyMTUsIDY0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE1LCA2OSwgNDIsIDI0MCwgCisgICAgMjMwLCA0MiwgMjQ4LCAyMjEsIDQyLCAyNTMsIDE5MiwgNDIsIDEzMCwgNDIsIDIyNiwgMTI1LCA0MiwgMjI1LCAyMjUsIDQyLCAKKyAgICAyNDcsIDE0NywgNDIsIDI0NywgMTQ4LCAyMTgsIDIzMywgNDIsIDI0NywgMTQ4LCAyNDksIDEwOCwgNDIsIDIzNSwgMTU2LCAKKyAgICA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDI0MSwgMjE2LCA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDIxNywgMTc0LCA0MiwgCisgICAgMjQ1LCA5MSwgMjI5LCAyMDUsIDIxNywgNzQsIDQyLCAyNDUsIDkxLCAyMjksIDIwNSwgMjMxLCA3MCwgNDIsIDI0OSwgMTU3LCAKKyAgICA0MiwgMjI2LCA5MCwgMjU0LCAxMjUsIDQyLCAxOTcsIDQyLCAyMzAsIDEwMywgNjEsIDQyLCAxODQsIDQyLCAxNzYsIDQyLCAKKyAgICAyMzQsIDE4NSwgNDIsIDIzMSwgMTI5LCA0MiwgMjQzLCA4MCwgNDIsIDI1MSwgMTgsIDQyLCAyMzQsIDE4NCwgNDIsIDIyNSwgCisgICAgMTUwLCA0MiwgMjI5LCA4MSwgNDIsIDIzMCwgMTAzLCAyNDUsIDYsIDQyLCAyMzAsIDEwMywgMjQzLCAyMDIsIDQyLCAyMzEsIAorICAgIDE1LCA0MiwgMjM0LCAxMzQsIDQyLCAyNDAsIDE2MywgNDIsIDIzNCwgOTQsIDQyLCAyMzAsIDIzMiwgNDIsIDI0MiwgMjE2LCAKKyAgICA0MiwgMjE2LCAxMTksIDQyLCAyMzAsIDEwMywgMTU2LCA0MiwgMjMwLCAxNjksIDQyLCAyNDcsIDE1NywgNDIsIDIzNCwgNDAsIAorICAgIDQyLCAyNDQsIDQ1LCA0MiwgMjI4LCAxMTIsIDQyLCAyMzAsIDEwMywgMTkzLCA0MiwgMjMwLCAxNjYsIDQyLCAyNDksIDIzOSwgCisgICAgNDIsIDIzNCwgMzQsIDQyLCAyMzAsIDE2NywgMjE4LCAyMzMsIDQyLCAyNDksIDI0MCwgMjE4LCAyMzMsIDQyLCAyMzIsIDUwLCAKKyAgICAyMTgsIDIzMywgNDIsIDIzNCwgMzUsIDIxOCwgMjMzLCA0MiwgMjMwLCAxNjcsIDI0OSwgMTA4LCA0MiwgMjQ5LCAyNDAsIAorICAgIDI0OSwgMTA4LCA0MiwgMjMyLCA1MCwgMjQ5LCAxMDgsIDQyLCAyMzQsIDM1LCAyNDksIDEwOCwgNDIsIDIzMiwgNTAsIDExNywgCisgICAgMjIyLCA5MSwgNDIsIDIzMiwgNTAsIDExNywgMjIyLCA5MiwgMjE4LCAyMzMsIDQyLCAxOTAsIDQyLCAyMzMsIDI1MSwgNDIsIAorICAgIDIzMCwgMTA1LCA0MiwgMjQyLCAxNTEsIDQyLCAyMjMsIDE3NiwgNDIsIDIyMywgMTc3LCAxMTcsIDIyMiwgOTEsIDQyLCAKKyAgICAyMjMsIDE3NywgMTE3LCAyMjIsIDkyLCAyMTgsIDIzMywgNDIsIDIyNCwgMTYyLCA0MiwgMjI4LCAxMywgNDIsIDIzMCwgCisgICAgMTAzLCAyMjIsIDkxLCA0MiwgMjMwLCAxMDQsIDQyLCAyMjQsIDExNiwgNDIsIDIyNywgMTc2LCA0MiwgMjMwLCAxMDMsIAorICAgIDIxNCwgMTA1LCA0MiwgMjMwLCA0OSwgNDIsIDIzMywgMTg1LCA0MiwgMjMwLCA1MCwgMjMxLCA3NCwgNDIsIDIyNCwgMTE1LCAKKyAgICA0MiwgMjI3LCAxNzUsIDQyLCAyMzAsIDEwMywgMjEyLCA5OCwgNDIsIDIzMCwgNDMsIDQyLCAyMzMsIDE4MywgNDIsIDIzMCwgCisgICAgNDQsIDIzMSwgNzQsIDQyLCAyMzUsIDI0LCAyMjYsIDIyMCwgNDIsIDIzMiwgNTAsIDIyNiwgMjIwLCA0MiwgMjU0LCAxMzYsIAorICAgIDQyLCAyNTEsIDE2MCwgNDIsIDI1MCwgMjE0LCA0MiwgMjUwLCAxOTEsIDQyLCAyNTEsIDY3LCAxMTcsIDIzNCwgMTM0LCA0MiwgCisgICAgMjQ5LCAyMzgsIDQyLCAyNDgsIDE0MiwgNDIsIDI0MiwgNzIsIDQyLCAxNjIsIDQyLCAyNDAsIDIzMSwgNDIsIDIzNSwgMjU1LCAKKyAgICA0MiwgMjM0LCA0NywgNDIsIDIzNCwgMzUsIDI1MCwgMjUwLCA0MiwgMjMzLCAyMTksIDQyLCAyMzIsIDE1OSwgNDIsIDIzMiwgCisgICAgMTU4LCA0MiwgMjMyLCAxNDcsIDQyLCAyMzIsIDYzLCA0MiwgMjMxLCAxMzAsIDIxOSwgNzksIDQyLCAyMzAsIDE5NiwgNDIsIAorICAgIDIzMCwgMTUyLCA0MiwgMjI1LCAxNDgsIDQyLCAyMjUsIDE5LCA0MiwgMjI0LCAyMTksIDQyLCAyMjQsIDIxNywgNDIsIDIxOCwgCisgICAgMjI3LCA0MiwgMjE4LCAyLCA0MiwgMjEyLCAyNCwgNDIsIDIxNCwgMTA2LCAxMTcsIDE5MywgNDIsIDExNSwgMTE3LCAxOTMsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxMTAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxMDUsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxNTgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxNjEsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxODksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxOTQsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxOTgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxOTUsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMDAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIAorICAgIDI0NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NSwgMTY3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIAorICAgIDE0NiwgMjE1LCA3NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNiwgMTY0LCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDgsIDE0NiwgMjQ0LCA1LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjQ0LCAxMTgsIDEwOSwgMjE3LCAKKyAgICAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTksIDExOSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIyMCwgMTE5LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjQ1LCAxOTAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAKKyAgICAyMjgsIDE5NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNzMsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIAorICAgIDI0OCwgMTQ2LCAyMTUsIDY3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2MywgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY5LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA3MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgCisgICAgNjUsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIAorICAgIDE0NiwgMjE1LCA3MiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjgsIDEwOSwgMjE3LCAzLCAxNiwgCisgICAgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2MiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNiwgMTYxLCA0MiwgMjQzLCAKKyAgICAxMTgsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI0OSwgMTQwLCAyNDEsIDIyMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgCisgICAgMjIzLCAxMjIsIDI0NSwgMjIzLCAyNDEsIDE5MiwgMzEsIDI0NywgMjMxLCAyNTMsIDIwNywgMjE2LCAxOTYsIDI1MiwgNTYsIAorICAgIDI0MSwgMTkyLCAzMSwgMjEwLCAyMjMsIDI0NCwgMzgsIDI0MSwgMTkyLCAzMSwgMjEyLCA1OSwgMjQxLCAxOTIsIDMxLCAKKyAgICAyNDksIDIwMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjU0LCAzLCAyNDEsIDE5MiwgMzEsIDI0MSwgNjAsIDIxNiwgMzgsIAorICAgIDI0MSwgMTkyLCAzMSwgNCwgMjE3LCA2MSwgMjQxLCAxOTIsIDMxLCAyMTUsIDIzNywgMjQxLCAxOTIsIDMxLCAyMjUsIDIxOSwgCisgICAgMjQxLCAxOTIsIDMxLCAyMTgsIDE1OCwgMjQxLCAxOTIsIDMxLCAyNDQsIDEzOSwgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgCisgICAgMjI0LCAyNDAsIDI0MSwgMTkyLCAzMSwgMjMwLCAxNTUsIDI0MSwgMTkyLCAzMSwgMjQ1LCAxMjYsIDI0MSwgMTkyLCAzMSwgCisgICAgMjQ0LCAzOSwgMjQxLCAxOTIsIDMxLCAyMTEsIDIwNywgMjI2LCAxOTcsIDIxNiwgMTk2LCAyNDgsIDg2LCAyNDEsIDE5MiwgCisgICAgMzEsIDI1NCwgNTEsIDI0MSwgMTkyLCAzMSwgMjQ5LCAxODUsIDI0MSwgMTkyLCAzMSwgMjUxLCAyMjcsIDIxNiwgMTM4LCAKKyAgICAyNDEsIDE5MiwgMzEsIDI0MiwgMTQ5LCAyNDEsIDE5MiwgMzEsIDIxOCwgMjQ1LCAyNTQsIDcwLCAyNDEsIDE5MiwgMzEsIAorICAgIDIyMywgNTMsIDI0MSwgMTkyLCAzMSwgMjM1LCAyMjAsIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIDIxNywgNjEsIDI0MSwgCisgICAgMTkyLCAzMSwgMjMwLCAxMTEsIDI0OSwgMTU5LCAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAyMjQsIDE5NywgMjQxLCAxOTIsIAorICAgIDMxLCAyMTYsIDE5NiwgMjU1LCAxOCwgMjEyLCA0MCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUwLCA4LCAyNDQsIDk2LCAKKyAgICAyNDEsIDE5MiwgMzEsIDIzNSwgMjMzLCAyNDEsIDE5MiwgMzEsIDI0NiwgNTcsIDI0MSwgMTkyLCAzMSwgMjIzLCA1NiwgCisgICAgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgMjI0LCAyMjQsIDI0MSwgMTkyLCAzMSwgMjI0LCAxNzcsIDI0MSwgMTkyLCAzMSwgCisgICAgMjQ4LCAxNjEsIDY0LCAyMTYsIDE5NiwgMjMyLCAyMzAsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI0NCwgMTc0LCAyNDEsIAorICAgIDE5MiwgMzEsIDIyNiwgMTYzLCAyNDEsIDE5MiwgMzEsIDIyNiwgMjQ0LCAyNDEsIDE5MiwgMzEsIDI0OCwgNTksIDI0MSwgCisgICAgMTkyLCAzMSwgMjQ4LCA3OSwgMjQxLCAxOTIsIDMxLCAyMzUsIDI0NywgMjQxLCAxOTIsIDMxLCAyNTEsIDE0OSwgMjQxLCAKKyAgICAxOTIsIDMxLCAyNDksIDIyMSwgMjE2LCA0MiwgMjMxLCA3NiwgMjQxLCAxOTIsIDMxLCAyNDMsIDg3LCAyMTYsIDM4LCAyNDEsIAorICAgIDE5MiwgMzEsIDIyNCwgMTI1LCAyMTQsIDE1NCwgMjQxLCAxOTIsIDMxLCAyMjYsIDE2MiwgMjQxLCAxOTIsIDMxLCAyMTYsIAorICAgIDE5NiwgMjEyLCAxMywgMjQxLCAxOTIsIDMxLCAyMjMsIDQ1LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNTAsIDIyMCwgCisgICAgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUzLCAyNTUsIDIxNiwgMTMzLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyMzQsIAorICAgIDE3OSwgMjE4LCAxMzQsIDIzMCwgMTE1LCAyNDEsIDE5MiwgMzEsIDI0OCwgMzIsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIzMSwgMTUyLCAyMzEsIDIwMiwgMjQxLCAxOTIsIDMxLCAyNTUsIDE5LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyMTIsIAorICAgIDU0LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDMsIDQ3LCAyMTEsIDIzOSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgCisgICAgMjM1LCA1MiwgMjMzLCAxMDcsIDI0MSwgMTkyLCAzMSwgMjQ3LCAxODQsIDI0MSwgMTkyLCAzMSwgMjMyLCAyMjAsIDI0MSwgCisgICAgMTkyLCAzMSwgMjM1LCAyMjMsIDIxNSwgMTg3LCAyNDEsIDE5MiwgMzEsIDQsIDIyNCwgMTk3LCAyNDEsIDE5MiwgMzEsIAorICAgIDI1NCwgMjE3LCAyNDksIDIxMiwgMjQxLCAxOTIsIDMxLCAyNTIsIDU5LCAyNDksIDIxMiwgOCwgMywgMjM1LCAxNjAsIDgsIAorICAgIDMsIDIzNSwgMTUzLCA4LCAzLCA3MywgOCwgMywgMjM1LCAxODIsIDgsIDMsIDIzNiwgNTgsIDgsIDMsIDIzNiwgNDEsIDgsIAorICAgIDMsIDIzNiwgNjAsIDgsIDMsIDIzNiwgNTksIDgsIDMsIDI1MywgMjA2LCA4LCAzLCAyNTMsIDE2OSwgOCwgMywgNjEsIDgsIAorICAgIDMsIDI1NCwgNzIsIDgsIDMsIDIxNCwgMTY0LCA4LCAzLCAyMTQsIDE2NywgOCwgMywgMjE0LCAxNjUsIDgsIDMsIDIyNiwgCisgICAgMTQwLCA4LCAzLCAyMjYsIDExNCwgOCwgMywgNzYsIDgsIDMsIDIyNiwgMTc1LCA4LCAzLCAyNDUsIDM1LCA4LCAzLCA3NSwgCisgICAgOCwgMywgMjExLCAxOTUsIDgsIDMsIDI1MSwgMjI4LCA4LCAzLCAyNTEsIDIyNSwgOCwgMywgMjUyLCA2LCA4LCAzLCAyNTEsIAorICAgIDIzOCwgOCwgMywgMjUxLCAyNTEsIDgsIDMsIDI1MSwgMjUwLCA4LCAzLCAyNTEsIDI1MywgOCwgMywgMjUxLCAyNTIsIDgsIAorICAgIDMsIDI1MiwgMTIxLCA4LCAzLCAyNTIsIDExMywgOCwgMywgMjUyLCAxOTEsIDgsIDMsIDI1MiwgMTQyLCA4LCAzLCAyNTEsIAorICAgIDEwMSwgOCwgMywgMjUxLCAxMDUsIDgsIDMsIDI1MSwgMTAyLCA4LCAzLCAyNTEsIDE3OSwgOCwgMywgMjUxLCAxNjMsIDgsIAorICAgIDMsIDI1MSwgMjA1LCA4LCAzLCAyNTEsIDE4NSwgOCwgMywgMjUyLCAyMSwgOCwgMywgMjUyLCA3NSwgOCwgMywgMjUyLCAzMywgCisgICAgOCwgMywgMjUxLCA4NywgOCwgMywgMjUxLCA4NCwgOCwgMywgMjUxLCAxMjUsIDgsIDMsIDI1MSwgMTAwLCA4LCAzLCAyNTEsIAorICAgIDk0LCA4LCAzLCAyNTEsIDk4LCA4LCAzLCAyNTEsIDcyLCA4LCAzLCAyNTEsIDcwLCA4LCAzLCAyNTEsIDc3LCA4LCAzLCAKKyAgICAyNTEsIDc1LCA4LCAzLCAyNTEsIDczLCA4LCAzLCAyNTEsIDc0LCA4LCAzLCAyMjUsIDQ5LCA4LCAzLCAyMjUsIDQ1LCA4LCAKKyAgICAzLCAyMjUsIDEwOCwgOCwgMywgMjI1LCA1OSwgOCwgMywgMjI1LCA3NSwgOCwgMywgMjI1LCAxMDIsIDgsIDMsIDIyNSwgOTgsIAorICAgIDgsIDMsIDIyNSwgMjQwLCA4LCAzLCAyMjUsIDIzMCwgOCwgMywgMTkwLCA4LCAzLCAyMjYsIDIxLCA4LCAzLCAyMjQsIDEzNSwgCisgICAgOCwgMywgMjI0LCAxMzcsIDgsIDMsIDIyNCwgMTM2LCA4LCAzLCAyMjQsIDIzMywgOCwgMywgMjI0LCAyMjIsIDgsIDMsIAorICAgIDIyNSwgMTYsIDgsIDMsIDIyNCwgMjQ1LCA4LCAzLCAyMjQsIDEyMSwgOCwgMywgMjI0LCAxMTcsIDgsIDMsIDIyNCwgMTUwLCAKKyAgICA4LCAzLCAyMjQsIDEzNCwgOCwgMywgMjI0LCAxMjYsIDgsIDMsIDIyNCwgMTMyLCA4LCAzLCAyMjQsIDEwMCwgOCwgMywgCisgICAgMjI0LCA5OSwgOCwgMywgMjI0LCAxMDQsIDgsIDMsIDIyNCwgMTAzLCA4LCAzLCAyMjQsIDEwMSwgOCwgMywgMjI0LCAxMDIsIAorICAgIDgsIDMsIDI1MiwgOTYsIDgsIDMsIDI1MiwgOTUsIDgsIDMsIDI1MiwgMTAyLCA4LCAzLCAyNTIsIDk3LCA4LCAzLCAyNTIsIAorICAgIDk5LCA4LCAzLCAyNTIsIDk4LCA4LCAzLCAyNTIsIDEwMSwgOCwgMywgMjUyLCAxMDAsIDgsIDMsIDI1MiwgMTA4LCA4LCAzLCAKKyAgICAyNTIsIDEwNywgOCwgMywgMjUyLCAxMTEsIDgsIDMsIDI1MiwgMTA5LCA4LCAzLCAyNTIsIDg3LCA4LCAzLCAyNTIsIDg5LCAKKyAgICA4LCAzLCAyNTIsIDg4LCA4LCAzLCAyNTIsIDkyLCA4LCAzLCAyNTIsIDkxLCA4LCAzLCAyNTIsIDk0LCA4LCAzLCAyNTIsIAorICAgIDkzLCA4LCAzLCAyNTIsIDEwMywgOCwgMywgMjUyLCAxMDYsIDgsIDMsIDI1MiwgMTA0LCA4LCAzLCAyNTIsIDgzLCA4LCAzLCAKKyAgICAyNTIsIDgyLCA4LCAzLCAyNTIsIDkwLCA4LCAzLCAyNTIsIDg2LCA4LCAzLCAyNTIsIDg0LCA4LCAzLCAyNTIsIDg1LCA4LCAKKyAgICAzLCAyNTIsIDc5LCA4LCAzLCAyNTIsIDc4LCA4LCAzLCAyNTIsIDgxLCA4LCAzLCAyNTIsIDgwLCA4LCAzLCAyMjksIDE2OSwgCisgICAgOCwgMywgMjI5LCAxNjgsIDgsIDMsIDIyOSwgMTc0LCA4LCAzLCAyMjksIDE3MCwgOCwgMywgMjI5LCAxNzEsIDgsIDMsIAorICAgIDIyOSwgMTczLCA4LCAzLCAyMjksIDE3MiwgOCwgMywgMjI5LCAxNzcsIDgsIDMsIDIyOSwgMTc2LCA4LCAzLCAyMjksIDE3OSwgCisgICAgOCwgMywgMjI5LCAxNzgsIDgsIDMsIDIyOSwgMTY1LCA4LCAzLCAyMjksIDE2NCwgOCwgMywgMjI5LCAxNjcsIDgsIDMsIAorICAgIDIyOSwgMTY2LCA4LCAzLCAyMjksIDE1OCwgOCwgMywgMjI5LCAxNTcsIDgsIDMsIDIyOSwgMTYyLCA4LCAzLCAyMjksIDE2MSwgCisgICAgOCwgMywgMjI5LCAxNTksIDgsIDMsIDIyOSwgMTYwLCA4LCAzLCAyMjksIDE1MiwgOCwgMywgMjI5LCAxNTEsIDgsIDMsIAorICAgIDIyOSwgMTU2LCA4LCAzLCAyMjksIDE1NSwgOCwgMywgMjI5LCAxNTMsIDgsIDMsIDIyOSwgMTU0LCA4LCAzLCAyNDEsIDExMCwgCisgICAgOCwgMywgMjQxLCAxMDksIDgsIDMsIDI0MSwgMTE1LCA4LCAzLCAyNDEsIDExMSwgOCwgMywgMjQxLCAxMTIsIDgsIDMsIAorICAgIDI0MSwgMTE0LCA4LCAzLCAyNDEsIDExMywgOCwgMywgMjQxLCAxMTgsIDgsIDMsIDI0MSwgMTE3LCA4LCAzLCAyNDEsIDEyMCwgCisgICAgOCwgMywgMjQxLCAxMTksIDgsIDMsIDI0MSwgMTAxLCA4LCAzLCAyNDEsIDEwMywgOCwgMywgMjQxLCAxMDIsIDgsIDMsIAorICAgIDI0MSwgMTA2LCA4LCAzLCAyNDEsIDEwNSwgOCwgMywgMjQxLCAxMDgsIDgsIDMsIDI0MSwgMTA3LCA4LCAzLCAyNDEsIDk3LCAKKyAgICA4LCAzLCAyNDEsIDk2LCA4LCAzLCAyNDEsIDEwNCwgOCwgMywgMjQxLCAxMDAsIDgsIDMsIDI0MSwgOTgsIDgsIDMsIDI0MSwgCisgICAgOTksIDgsIDMsIDI0MSwgOTEsIDgsIDMsIDI0MSwgOTUsIDgsIDMsIDI0MSwgOTQsIDgsIDMsIDI0MSwgOTIsIDgsIDMsIAorICAgIDI0MSwgOTMsIDgsIDMsIDIzMCwgMTcyLCA4LCAzLCAyMzAsIDE3MSwgOCwgMywgMjMwLCAyMzAsIDgsIDMsIDIzMCwgMTc4LCAKKyAgICA4LCAzLCAyMzAsIDIwMywgOCwgMywgMjMwLCAyMjEsIDgsIDMsIDIzMCwgMjE5LCA4LCAzLCAyMzEsIDEzOSwgOCwgMywgCisgICAgMjMxLCAxMzQsIDgsIDMsIDE4NCwgOCwgMywgMjMxLCAxNzIsIDgsIDMsIDIzMCwgNzQsIDgsIDMsIDIzMCwgNzMsIDgsIDMsIAorICAgIDIzMCwgNzcsIDgsIDMsIDIzMCwgNzUsIDgsIDMsIDIzMCwgMTIxLCA4LCAzLCAyMzAsIDEwNywgOCwgMywgMjMwLCAxNjEsIAorICAgIDgsIDMsIDIzMCwgMTI2LCA4LCAzLCAyMzEsIDI2LCA4LCAzLCAyMzEsIDkxLCA4LCAzLCAyMzAsIDU1LCA4LCAzLCAyMzAsIAorICAgIDUxLCA4LCAzLCAyMzAsIDEwMiwgOCwgMywgMjMwLCA3MCwgOCwgMywgMjMwLCA2MywgOCwgMywgMjMwLCA2OCwgOCwgMywgCisgICAgMjMwLCAyOCwgOCwgMywgMjMwLCAyNywgOCwgMywgMjMwLCAzMywgOCwgMywgMjMwLCAzMCwgOCwgMywgMjQ0LCA4MywgOCwgCisgICAgMywgMjQ0LCA3OCwgOCwgMywgMjQ0LCAxMjEsIDgsIDMsIDI0NCwgOTgsIDgsIDMsIDI0NCwgMTY3LCA4LCAzLCAyNDQsIAorICAgIDE1OCwgOCwgMywgMjQ0LCAxOTYsIDgsIDMsIDI0NCwgMTcwLCA4LCAzLCAyNDQsIDMsIDgsIDMsIDI0NCwgNDMsIDgsIDMsIAorICAgIDI0NCwgMjcsIDgsIDMsIDI0MywgMjE4LCA4LCAzLCAyNDMsIDIxNywgOCwgMywgMjQzLCAyMzQsIDgsIDMsIDI0MywgMjIzLCAKKyAgICA4LCAzLCAyNDMsIDIyMSwgOCwgMywgMjQzLCAyMjIsIDgsIDMsIDI0MywgMjA1LCA4LCAzLCAyNDMsIDIwNCwgOCwgMywgCisgICAgMjQzLCAyMDgsIDgsIDMsIDI0MywgMjA2LCA4LCAzLCAyMTMsIDE0NCwgOCwgMywgMjEzLCAxMzksIDgsIDMsIDIxMywgMTc2LCAKKyAgICA4LCAzLCAyMTMsIDE1MywgOCwgMywgMjEzLCAxNjYsIDgsIDMsIDIxMywgMTYzLCA4LCAzLCAyMTMsIDE2OCwgOCwgMywgCisgICAgMjEzLCAxNjcsIDgsIDMsIDIxNCwgNywgOCwgMywgMjE0LCAyLCA4LCAzLCAyMTQsIDI3LCA4LCAzLCAyMTQsIDE4LCA4LCAzLCAKKyAgICAyMTMsIDEyNSwgOCwgMywgMjEzLCAxMjEsIDgsIDMsIDIxMywgMTM4LCA4LCAzLCAyMTMsIDEyNiwgOCwgMywgMjEzLCAxNzgsIAorICAgIDgsIDMsIDIxMywgMjQ0LCA4LCAzLCAyMTIsIDExMCwgOCwgMywgMjEyLCAxMDgsIDgsIDMsIDIxMiwgMTE2LCA4LCAzLCAKKyAgICAyMTIsIDExMywgOCwgMywgMjEyLCAxMTEsIDgsIDMsIDIxMiwgMTEyLCA4LCAzLCAyMTIsIDEwMiwgOCwgMywgMjEyLCAxMDEsIAorICAgIDgsIDMsIDIxMiwgMTA2LCA4LCAzLCAyMTIsIDEwNSwgOCwgMywgMjEyLCAxMDMsIDgsIDMsIDIxMiwgMTA0LCA4LCAzLCAKKyAgICAyNDcsIDE3OCwgOCwgMywgMjQ3LCAxNjYsIDgsIDMsIDI0OCwgMywgOCwgMywgMjQ3LCAyMDMsIDgsIDMsIDI0NywgMjM2LCAKKyAgICA4LCAzLCAyNDcsIDI0MCwgOCwgMywgMjQ3LCAyMzksIDgsIDMsIDI0OCwgMTUyLCA4LCAzLCAyNDgsIDE0NywgOCwgMywgCisgICAgMjQ4LCAyMjEsIDgsIDMsIDI0OCwgMTcyLCA4LCAzLCAyNDYsIDYyLCA4LCAzLCAyNDYsIDYzLCA4LCAzLCAyNDcsIDEyMCwgCisgICAgOCwgMywgMjQ2LCAxMDIsIDgsIDMsIDI0NywgMTQ1LCA4LCAzLCAyNDcsIDEyMiwgOCwgMywgMjQ4LCAzMCwgOCwgMywgMjQ4LCAKKyAgICA5MCwgOCwgMywgMjQ4LCA0NSwgOCwgMywgMjQ2LCA1MywgOCwgMywgMjQ2LCA1MSwgOCwgMywgMjQ2LCA3OCwgOCwgMywgCisgICAgMjQ2LCA2MSwgOCwgMywgMjQ2LCA1NiwgOCwgMywgMjQ2LCA1OSwgOCwgMywgMjE2LCA2NywgOCwgMywgMjE2LCA2MSwgOCwgCisgICAgMywgMjE2LCAxMTcsIDgsIDMsIDIxNiwgNzYsIDgsIDMsIDIxNiwgMTA5LCA4LCAzLCAyMTYsIDExMSwgOCwgMywgMjE2LCAKKyAgICAxMTAsIDgsIDMsIDIxNywgNDYsIDgsIDMsIDIxNywgMzMsIDgsIDMsIDIxNywgMTA1LCA4LCAzLCAyMTcsIDU0LCA4LCAzLCAKKyAgICAyMTUsIDEwMiwgOCwgMywgMjE1LCAxMDEsIDgsIDMsIDIxNSwgMTA0LCA4LCAzLCAyMTUsIDEwMywgOCwgMywgMjE2LCA1LCAKKyAgICA4LCAzLCAyMTYsIDEsIDgsIDMsIDExMSwgOCwgMywgMjE2LCAxMywgOCwgMywgMjE2LCAyMTMsIDgsIDMsIDIxNywgMjIsIDgsIAorICAgIDMsIDIxNiwgMjM3LCA4LCAzLCAyMTUsIDg4LCA4LCAzLCAyMTUsIDgzLCA4LCAzLCAyMTUsIDExOCwgOCwgMywgMjE1LCAKKyAgICAxMDAsIDgsIDMsIDIxNSwgODksIDgsIDMsIDIxNSwgOTgsIDgsIDMsIDI0OCwgMTA3LCA4LCAzLCAyNDgsIDEwNiwgOCwgMywgCisgICAgMjQ4LCAxMTIsIDgsIDMsIDI0OCwgMTA4LCA4LCAzLCAyNDgsIDEwOSwgOCwgMywgMjQ4LCAxMTEsIDgsIDMsIDI0OCwgMTEwLCAKKyAgICA4LCAzLCAyNDgsIDEyOCwgOCwgMywgMjQ4LCAxMjcsIDgsIDMsIDI0OCwgMTM1LCA4LCAzLCAyNDgsIDEyOSwgOCwgMywgCisgICAgMjQ4LCA5NywgOCwgMywgMjQ4LCA5OSwgOCwgMywgMjQ4LCA5OCwgOCwgMywgMjQ4LCAxMDIsIDgsIDMsIDI0OCwgMTAxLCA4LCAKKyAgICAzLCAyNDgsIDEwNSwgOCwgMywgMjQ4LCAxMDMsIDgsIDMsIDI0OCwgMTIwLCA4LCAzLCAyNDgsIDEyMywgOCwgMywgMjQ4LCAKKyAgICAxMjEsIDgsIDMsIDI0OCwgOTMsIDgsIDMsIDI0OCwgOTIsIDgsIDMsIDI0OCwgMTAwLCA4LCAzLCAyNDgsIDk2LCA4LCAzLCAKKyAgICAyNDgsIDk0LCA4LCAzLCAyNDgsIDk1LCA4LCAzLCAyMjksIDEyNiwgOCwgMywgMjI5LCAxMjUsIDgsIDMsIDIyOSwgMTMzLCAKKyAgICA4LCAzLCAyMjksIDEyOCwgOCwgMywgMjI5LCAxMjksIDgsIDMsIDIyOSwgMTMwLCA4LCAzLCAyMjksIDE0MiwgOCwgMywgCisgICAgMjI5LCAxNDEsIDgsIDMsIDIyOSwgMTQ4LCA4LCAzLCAyMjksIDE0MywgOCwgMywgMjI5LCAxMTgsIDgsIDMsIDIyOSwgMTE3LCAKKyAgICA4LCAzLCAyMjksIDEyNCwgOCwgMywgMjI5LCAxMTksIDgsIDMsIDIyOSwgMTM0LCA4LCAzLCAyMjksIDE0MCwgOCwgMywgCisgICAgMjI5LCAxMzgsIDgsIDMsIDIyOSwgMTEwLCA4LCAzLCAyMjksIDEwOSwgOCwgMywgMjI5LCAxMTUsIDgsIDMsIDIyOSwgMTEzLCAKKyAgICA4LCAzLCAyMjksIDExMSwgOCwgMywgMjI5LCAxMTIsIDgsIDMsIDI0MSwgNzcsIDgsIDMsIDI0MSwgNzYsIDgsIDMsIDI0MSwgCisgICAgODMsIDgsIDMsIDI0MSwgNzgsIDgsIDMsIDI0MSwgODAsIDgsIDMsIDI0MSwgNzksIDgsIDMsIDI0MSwgODIsIDgsIDMsIAorICAgIDI0MSwgODEsIDgsIDMsIDI0MSwgODgsIDgsIDMsIDI0MSwgODcsIDgsIDMsIDI0MSwgOTAsIDgsIDMsIDI0MSwgODksIDgsIAorICAgIDMsIDI0MSwgNzEsIDgsIDMsIDI0MSwgNzIsIDgsIDMsIDI0MSwgNzQsIDgsIDMsIDI0MSwgNzMsIDgsIDMsIDI0MSwgNzUsIAorICAgIDgsIDMsIDI0MSwgODQsIDgsIDMsIDI0MSwgODYsIDgsIDMsIDI0MSwgODUsIDgsIDMsIDI0MSwgNzAsIDgsIDMsIDIyOCwgCisgICAgMTg5LCA4LCAzLCAyMjgsIDE4NywgOCwgMywgMjI4LCAyMzMsIDgsIDMsIDIyOCwgMTkyLCA4LCAzLCAyMjgsIDIxNSwgOCwgCisgICAgMywgMjI4LCAyMjksIDgsIDMsIDIyOCwgMjI4LCA4LCAzLCAyMjksIDE4MywgOCwgMywgMTk3LCA4LCAzLCAyMjksIDE5NywgCisgICAgOCwgMywgMjI3LCAxODYsIDgsIDMsIDIyNywgMTg4LCA4LCAzLCAyMjcsIDE4NywgOCwgMywgMjI4LCA1MSwgOCwgMywgMjI4LCAKKyAgICAzOCwgOCwgMywgMjI4LCA3NCwgOCwgMywgMjI4LCA2MCwgOCwgMywgMjI5LCA4MywgOCwgMywgMjI5LCAxMDcsIDgsIDMsIAorICAgIDIyOSwgOTQsIDgsIDMsIDIyNywgMTgxLCA4LCAzLCAyMjcsIDE3NywgOCwgMywgMjI3LCAyMzcsIDgsIDMsIDIyNywgMTg1LCAKKyAgICA4LCAzLCAyMjcsIDE4MywgOCwgMywgMjI3LCAxODQsIDgsIDMsIDI0MSwgMTQxLCA4LCAzLCAyNDEsIDE0MCwgOCwgMywgCisgICAgMjQxLCAxNDYsIDgsIDMsIDI0MSwgMTQyLCA4LCAzLCAyNDEsIDE0MywgOCwgMywgMjQxLCAxNDUsIDgsIDMsIDI0MSwgMTQ0LCAKKyAgICA4LCAzLCAyNDEsIDE1MSwgOCwgMywgMjQxLCAxNTAsIDgsIDMsIDI0MSwgMTUzLCA4LCAzLCAyNDEsIDE1MiwgOCwgMywgCisgICAgMjQxLCAxMzMsIDgsIDMsIDI0MSwgMTM1LCA4LCAzLCAyNDEsIDEzNCwgOCwgMywgMjQxLCAxMzcsIDgsIDMsIDI0MSwgMTM5LCAKKyAgICA4LCAzLCAyNDEsIDEzOCwgOCwgMywgMjQxLCAxNDcsIDgsIDMsIDI0MSwgMTQ5LCA4LCAzLCAyNDEsIDE0OCwgOCwgMywgCisgICAgMjQxLCAxMjksIDgsIDMsIDI0MSwgMTI4LCA4LCAzLCAyNDEsIDEzNiwgOCwgMywgMjQxLCAxMzIsIDgsIDMsIDI0MSwgMTMwLCAKKyAgICA4LCAzLCAyNDEsIDEzMSwgOCwgMywgMjQxLCAxMjMsIDgsIDMsIDI0MSwgMTIyLCA4LCAzLCAyNDEsIDEyNywgOCwgMywgCisgICAgMjQxLCAxMjYsIDgsIDMsIDI0MSwgMTI0LCA4LCAzLCAyNDEsIDEyNSwgOCwgMywgMjMyLCAxOTUsIDgsIDMsIDIzMiwgMTg5LCAKKyAgICA4LCAzLCAyMzIsIDI0MSwgOCwgMywgMjMyLCAyMDIsIDgsIDMsIDIzMiwgMjMzLCA4LCAzLCAyMzIsIDIzMiwgOCwgMywgCisgICAgMjMyLCAyMzYsIDgsIDMsIDIzMiwgMjM0LCA4LCAzLCAyMzMsIDc5LCA4LCAzLCAyMzMsIDY5LCA4LCAzLCAyMzMsIDEzNSwgCisgICAgOCwgMywgMjMzLCA4OCwgOCwgMywgMjMyLCA3OSwgOCwgMywgMjMyLCA3OCwgOCwgMywgMjMyLCA4MSwgOCwgMywgMjMyLCAKKyAgICA4MCwgOCwgMywgMjMyLCAxMTYsIDgsIDMsIDIzMiwgMTA2LCA4LCAzLCAyMzIsIDE1NiwgOCwgMywgMjMyLCAxMjAsIDgsIDMsIAorICAgIDIzMywgMiwgOCwgMywgMjMzLCA1OCwgOCwgMywgMjMzLCAxNywgOCwgMywgMjMyLCA3NCwgOCwgMywgMjMyLCA3MiwgOCwgMywgCisgICAgMjMyLCA5OCwgOCwgMywgMjMyLCA3NywgOCwgMywgMjMyLCA3NSwgOCwgMywgMjMyLCA3NiwgOCwgMywgMjMyLCA1NCwgOCwgCisgICAgMywgMjMyLCA1MywgOCwgMywgMjMyLCA2MiwgOCwgMywgMjMyLCA1NywgOCwgMywgMjMyLCA1NSwgOCwgMywgMjMyLCA1NiwgCisgICAgOCwgMywgMjQyLCAxODksIDgsIDMsIDI0MiwgMTg4LCA4LCAzLCAyNDIsIDIxNCwgOCwgMywgMjQyLCAxOTksIDgsIDMsIAorICAgIDI0MiwgMjA2LCA4LCAzLCAyNDIsIDIwNSwgOCwgMywgMjQyLCAyMDgsIDgsIDMsIDI0MiwgMjA3LCA4LCAzLCAyNDMsIDg5LCAKKyAgICA4LCAzLCAyNDMsIDg0LCA4LCAzLCAyNDMsIDEzNSwgOCwgMywgMjQzLCA5OSwgOCwgMywgMjQyLCA5MSwgOCwgMywgMjQyLCAKKyAgICA5MCwgOCwgMywgMjQyLCA5MywgOCwgMywgMjQyLCA5MiwgOCwgMywgMjQyLCAxNTQsIDgsIDMsIDI0MiwgMTUyLCA4LCAzLCAKKyAgICAyNDIsIDE3NCwgOCwgMywgMjQyLCAxNjIsIDgsIDMsIDI0MywgMzMsIDgsIDMsIDI0MywgMzEsIDgsIDMsIDI0MywgNjIsIDgsIAorICAgIDMsIDI0MywgNDQsIDgsIDMsIDI0MiwgODEsIDgsIDMsIDI0MiwgODAsIDgsIDMsIDI0MiwgMTEzLCA4LCAzLCAyNDIsIDg5LCAKKyAgICA4LCAzLCAyNDIsIDgyLCA4LCAzLCAyNDIsIDg4LCA4LCAzLCAyMzQsIDYxLCA4LCAzLCAyMzQsIDYwLCA4LCAzLCAyMzQsIAorICAgIDkyLCA4LCAzLCAyMzQsIDc1LCA4LCAzLCAyMzQsIDg1LCA4LCAzLCAyMzQsIDg4LCA4LCAzLCAyMzQsIDg2LCA4LCAzLCAKKyAgICAyMzQsIDIwMiwgOCwgMywgMjM0LCAxOTAsIDgsIDMsIDE3NiwgOCwgMywgMjM0LCAyMjgsIDgsIDMsIDIzMywgMjAwLCA4LCAKKyAgICAzLCAyMzMsIDIwNSwgOCwgMywgMjMzLCAyMDIsIDgsIDMsIDIzNCwgMCwgOCwgMywgMjMzLCAyNTIsIDgsIDMsIDIzNCwgMjgsIAorICAgIDgsIDMsIDIzNCwgNywgOCwgMywgMjM0LCAxNTYsIDgsIDMsIDIzNCwgMTQwLCA4LCAzLCAyMzQsIDE4MiwgOCwgMywgMjM0LCAKKyAgICAxNTksIDgsIDMsIDIzMywgMTg5LCA4LCAzLCAyMzMsIDE4NiwgOCwgMywgMjMzLCAyMTcsIDgsIDMsIDIzMywgMTk5LCA4LCAKKyAgICAzLCAyMzMsIDE5MiwgOCwgMywgMjMzLCAxOTYsIDgsIDMsIDI0MywgMTUsIDgsIDMsIDI0MywgMTQsIDgsIDMsIDI0MywgMTksIAorICAgIDgsIDMsIDI0MywgMTYsIDgsIDMsIDI0MywgMTgsIDgsIDMsIDI0MywgMTcsIDgsIDMsIDI0MywgMjYsIDgsIDMsIDI0MywgCisgICAgMjUsIDgsIDMsIDI0MywgMjksIDgsIDMsIDI0MywgMjcsIDgsIDMsIDI0MywgNiwgOCwgMywgMjQzLCA1LCA4LCAzLCAyNDMsIAorICAgIDgsIDgsIDMsIDI0MywgNywgOCwgMywgMjQzLCAxMSwgOCwgMywgMjQzLCAxMCwgOCwgMywgMjQzLCAxMywgOCwgMywgMjQzLCAKKyAgICAxMiwgOCwgMywgMjQzLCAyMSwgOCwgMywgMjQzLCAyMCwgOCwgMywgMjQzLCAyNCwgOCwgMywgMjQzLCAyMiwgOCwgMywgCisgICAgMjQzLCAxLCA4LCAzLCAyNDMsIDAsIDgsIDMsIDI0MywgOSwgOCwgMywgMjQzLCA0LCA4LCAzLCAyNDMsIDIsIDgsIDMsIAorICAgIDI0MywgMywgOCwgMywgMjMwLCAyNDksIDgsIDMsIDIzMCwgMjUwLCA4LCAzLCAyMzEsIDEyLCA4LCAzLCAyMzEsIDExLCA4LCAKKyAgICAzLCAyMzEsIDE0LCA4LCAzLCAyMzEsIDEzLCA4LCAzLCAyMzAsIDI0MCwgOCwgMywgMjMwLCAyNDIsIDgsIDMsIDIzMCwgCisgICAgMjQxLCA4LCAzLCAyMzAsIDI0NSwgOCwgMywgMjMwLCAyNDQsIDgsIDMsIDIzMCwgMjQ3LCA4LCAzLCAyMzAsIDI0NiwgOCwgCisgICAgMywgMjMwLCAyNTEsIDgsIDMsIDIzMCwgMjUzLCA4LCAzLCAyMzAsIDI1MiwgOCwgMywgMjMwLCAyMzYsIDgsIDMsIDIzMCwgCisgICAgMjM1LCA4LCAzLCAyMzAsIDI0MywgOCwgMywgMjMwLCAyMzksIDgsIDMsIDIzMCwgMjM3LCA4LCAzLCAyMzAsIDIzOCwgOCwgCisgICAgMywgMjQwLCAxODAsIDgsIDMsIDI0MCwgMTc5LCA4LCAzLCAyNDAsIDE4NiwgOCwgMywgMjQwLCAxODEsIDgsIDMsIDI0MCwgCisgICAgMTgzLCA4LCAzLCAyNDAsIDE4MiwgOCwgMywgMjQwLCAxODUsIDgsIDMsIDI0MCwgMTg0LCA4LCAzLCAyNDAsIDE5MSwgOCwgCisgICAgMywgMjQwLCAxOTAsIDgsIDMsIDI0MCwgMTkzLCA4LCAzLCAyNDAsIDE5MiwgOCwgMywgMjQwLCAxNzIsIDgsIDMsIDI0MCwgCisgICAgMTcxLCA4LCAzLCAyNDAsIDE3NCwgOCwgMywgMjQwLCAxNzMsIDgsIDMsIDI0MCwgMTc2LCA4LCAzLCAyNDAsIDE3NSwgOCwgCisgICAgMywgMjQwLCAxNzgsIDgsIDMsIDI0MCwgMTc3LCA4LCAzLCAyNDAsIDE4NywgOCwgMywgMjQwLCAxODksIDgsIDMsIDI0MCwgCisgICAgMTg4LCA4LCAzLCAyMjksIDI0LCA4LCAzLCAyMjksIDI2LCA4LCAzLCAyMjksIDI1LCA4LCAzLCAyMjksIDY3LCA4LCAzLCAKKyAgICAyMjksIDY1LCA4LCAzLCAyMjksIDc3LCA4LCAzLCAyMjksIDcwLCA4LCAzLCAyMjgsIDI0MywgOCwgMywgMjI4LCAyNDIsIDgsIAorICAgIDMsIDIyOCwgMjQ0LCA4LCAzLCAyMjgsIDI1MiwgOCwgMywgMjI4LCAyNDksIDgsIDMsIDIyOSwgNCwgOCwgMywgMjI4LCAKKyAgICAyNTQsIDgsIDMsIDIyOSwgNTgsIDgsIDMsIDIyOSwgNjQsIDgsIDMsIDIyOSwgNjAsIDgsIDMsIDI0MSwgMTU2LCA4LCAzLCAKKyAgICAyNDEsIDE2NiwgOCwgMywgMjQxLCAxNzUsIDgsIDMsIDI0MSwgMjUxLCA4LCAzLCAyNDEsIDI0MywgOCwgMywgMTYyLCA4LCAKKyAgICAzLCAyNDIsIDYsIDgsIDMsIDI0MCwgMjA2LCA4LCAzLCAyNDAsIDIwNSwgOCwgMywgMjQwLCAyMDgsIDgsIDMsIDI0MCwgCisgICAgMjA3LCA4LCAzLCAyNDAsIDI0MiwgOCwgMywgMjQwLCAyMzMsIDgsIDMsIDI0MSwgNjgsIDgsIDMsIDI0MSwgNDcsIDgsIDMsIAorICAgIDI0MSwgMTk0LCA4LCAzLCAyNDEsIDIzOCwgOCwgMywgMjQxLCAyMDYsIDgsIDMsIDIxMiwgNDMsIDgsIDMsIDIxMiwgMjgsIAorICAgIDgsIDMsIDIxMiwgNjUsIDgsIDMsIDIxMiwgNTEsIDgsIDMsIDIxMSwgMTg1LCA4LCAzLCAyMTEsIDE4NywgOCwgMywgMjExLCAKKyAgICAxODYsIDgsIDMsIDIxMSwgMjAzLCA4LCAzLCAyMTEsIDIyNywgOCwgMywgMjExLCAyMTAsIDgsIDMsIDIxMiwgNSwgOCwgMywgCisgICAgMjEyLCAyMiwgOCwgMywgMjEyLCAxMCwgOCwgMywgMjEwLCAzMCwgOCwgMywgMjEwLCAyOSwgOCwgMywgMjEwLCA0NCwgOCwgCisgICAgMywgMjEwLCAzMiwgOCwgMywgMjEwLCAzNywgOCwgMywgMjEwLCAzOSwgOCwgMywgMjEwLCAzOCwgOCwgMywgMjEwLCAxMDIsIAorICAgIDgsIDMsIDIxMCwgOTksIDgsIDMsIDIxMCwgMTE2LCA4LCAzLCAyMTAsIDEwNSwgOCwgMywgMjEwLCA2LCA4LCAzLCAyMTAsIAorICAgIDgsIDgsIDMsIDIxMCwgNywgOCwgMywgMjEwLCAxOSwgOCwgMywgMjEwLCAxOCwgOCwgMywgMjEwLCAyMywgOCwgMywgMjEwLCAKKyAgICAyMCwgOCwgMywgMjEwLCA4NCwgOCwgMywgMjEwLCA5NCwgOCwgMywgMjEwLCA4OCwgOCwgMywgMjEwLCAyLCA4LCAzLCAyMTAsIAorICAgIDEsIDgsIDMsIDIxMCwgMTMsIDgsIDMsIDIxMCwgNSwgOCwgMywgMjEwLCAzLCA4LCAzLCAyMTAsIDQsIDgsIDMsIDIwOSwgCisgICAgMjQ1LCA4LCAzLCAyMDksIDI0NCwgOCwgMywgMjA5LCAyNTAsIDgsIDMsIDIwOSwgMjQ4LCA4LCAzLCAyMDksIDI0NiwgOCwgCisgICAgMywgMjA5LCAyNDcsIDgsIDMsIDI1MCwgMjgsIDgsIDMsIDI1MCwgMjQsIDgsIDMsIDI1MCwgNTEsIDgsIDMsIDI1MCwgMzcsIAorICAgIDgsIDMsIDI1MCwgNDgsIDgsIDMsIDI1MCwgNDIsIDgsIDMsIDI1MCwgNTAsIDgsIDMsIDI1MCwgNDksIDgsIDMsIDI1MCwgCisgICAgMjI0LCA4LCAzLCAyNTAsIDIxNywgOCwgMywgMjUxLCAzMywgOCwgMywgMjUwLCAyNTEsIDgsIDMsIDI0OSwgMTA0LCA4LCAzLCAKKyAgICAyNDksIDEwNiwgOCwgMywgMjQ5LCAxMDUsIDgsIDMsIDI0OSwgMTUzLCA4LCAzLCAyNDksIDE0NCwgOCwgMywgMjQ5LCAyMzgsIAorICAgIDgsIDMsIDI0OSwgMTY5LCA4LCAzLCAyNTAsIDE2MCwgOCwgMywgMjUwLCAxOTAsIDgsIDMsIDI1MCwgMTY1LCA4LCAzLCAKKyAgICAyNDksIDg0LCA4LCAzLCAyNDksIDgyLCA4LCAzLCAyNDksIDExMiwgOCwgMywgMjQ5LCAxMDIsIDgsIDMsIDI0OSwgODksIDgsIAorICAgIDMsIDI0OSwgMTAxLCA4LCAzLCAyNDksIDYzLCA4LCAzLCAyNDksIDYyLCA4LCAzLCAyNDksIDczLCA4LCAzLCAyNDksIDY5LCAKKyAgICA4LCAzLCAyNDksIDY0LCA4LCAzLCAyNDksIDY2LCA4LCAzLCAyMDksIDIyOCwgOCwgMywgMjA5LCAyMjcsIDgsIDMsIDIwOSwgCisgICAgMjM0LCA4LCAzLCAyMDksIDIyOSwgOCwgMywgMjA5LCAyMzEsIDgsIDMsIDIwOSwgMjMwLCA4LCAzLCAyMDksIDIzMywgOCwgCisgICAgMywgMjA5LCAyMzIsIDgsIDMsIDIwOSwgMjQwLCA4LCAzLCAyMDksIDIzOSwgOCwgMywgMjA5LCAyNDMsIDgsIDMsIDIwOSwgCisgICAgMjQxLCA4LCAzLCAyMDksIDIyNCwgOCwgMywgMjA5LCAyMjYsIDgsIDMsIDIwOSwgMjI1LCA4LCAzLCAyMDksIDIzNSwgOCwgCisgICAgMywgMjA5LCAyMzgsIDgsIDMsIDIwOSwgMjM2LCA4LCAzLCAyMDksIDIxNywgOCwgMywgMjA5LCAyMjEsIDgsIDMsIDIwOSwgCisgICAgMjIwLCA4LCAzLCAyMDksIDIxOCwgOCwgMywgMjA5LCAyMTksIDgsIDMsIDIwOSwgMjExLCA4LCAzLCAyMDksIDIxMCwgOCwgCisgICAgMywgMjA5LCAyMTYsIDgsIDMsIDIwOSwgMjE0LCA4LCAzLCAyMDksIDIxMiwgOCwgMywgMjA5LCAyMTMsIDgsIDMsIDIyNywgCisgICAgMTA0LCA4LCAzLCAyMjcsIDEwMywgOCwgMywgMjI3LCAxMDksIDgsIDMsIDIyNywgMTA1LCA4LCAzLCAyMjcsIDEwNiwgOCwgCisgICAgMywgMjI3LCAxMDgsIDgsIDMsIDIyNywgMTA3LCA4LCAzLCAyMjcsIDExNCwgOCwgMywgMjI3LCAxMTMsIDgsIDMsIDIyNywgCisgICAgMTE3LCA4LCAzLCAyMjcsIDExNiwgOCwgMywgMjI3LCA5NywgOCwgMywgMjI3LCA5OCwgOCwgMywgMjI3LCAxMDEsIDgsIDMsIAorICAgIDIyNywgMTAyLCA4LCAzLCAyMjcsIDExMCwgOCwgMywgMjI3LCAxMTIsIDgsIDMsIDIyNywgOTIsIDgsIDMsIDIyNywgMTAwLCAKKyAgICA4LCAzLCAyMjcsIDk2LCA4LCAzLCAyMjcsIDkzLCA4LCAzLCAyMjcsIDk0LCA4LCAzLCAyMjcsIDg3LCA4LCAzLCAyMjcsIAorICAgIDg2LCA4LCAzLCAyMjcsIDkxLCA4LCAzLCAyMjcsIDkwLCA4LCAzLCAyMjcsIDg4LCA4LCAzLCAyMjcsIDg5LCA4LCAzLCAKKyAgICAyMTksIDEyNywgOCwgMywgMTk0LCA4LCAzLCAyMTksIDE5MSwgOCwgMywgMjE5LCAxMzAsIDgsIDMsIDIxOSwgMTgzLCA4LCAKKyAgICAzLCAyMTksIDE4NiwgOCwgMywgMjE5LCAxODQsIDgsIDMsIDIyMSwgMjI2LCA4LCAzLCAyMjEsIDIxNCwgOCwgMywgMjA2LCAKKyAgICA4LCAzLCAyMjEsIDIzNCwgOCwgMywgMjE4LCAyOCwgOCwgMywgMjE4LCAzMCwgOCwgMywgMjE4LCAyOSwgOCwgMywgMjE5LCAKKyAgICAzNCwgOCwgMywgMjE5LCAyMywgOCwgMywgMjE5LCA1OCwgOCwgMywgMjE5LCAzOCwgOCwgMywgMjIwLCAxMTQsIDgsIDMsIAorICAgIDIyMSwgMTgxLCA4LCAzLCAyMjAsIDEzOSwgOCwgMywgMjE4LCA1LCA4LCAzLCAyMTgsIDMsIDgsIDMsIDIxOCwgODMsIDgsIAorICAgIDMsIDIxOCwgMjcsIDgsIDMsIDIxOCwgOSwgOCwgMywgMjE4LCAxNywgOCwgMywgMjE3LCAxNjYsIDgsIDMsIDIxNywgMTY1LCAKKyAgICA4LCAzLCAyMTcsIDIzMiwgOCwgMywgMjE3LCAxNzMsIDgsIDMsIDIxNywgMTY4LCA4LCAzLCAyMTcsIDE3MiwgOCwgMywgCisgICAgMjE4LCAxODYsIDgsIDMsIDIxOCwgMTg1LCA4LCAzLCAyMTgsIDE5MiwgOCwgMywgMjE4LCAxODcsIDgsIDMsIDIxOCwgMTg5LCAKKyAgICA4LCAzLCAyMTgsIDE5MSwgOCwgMywgMjE4LCAxOTAsIDgsIDMsIDIxOCwgMjAwLCA4LCAzLCAyMTgsIDE5OCwgOCwgMywgCisgICAgMjE4LCAyMjMsIDgsIDMsIDIxOCwgMjAxLCA4LCAzLCAyMTgsIDE4MSwgOCwgMywgMjE4LCAxODAsIDgsIDMsIDIxOCwgMTg0LCAKKyAgICA4LCAzLCAyMTgsIDE4MiwgOCwgMywgMjE4LCAxOTQsIDgsIDMsIDIxOCwgMTk3LCA4LCAzLCAyMTgsIDE5NSwgOCwgMywgCisgICAgMjE4LCAxNzcsIDgsIDMsIDIxOCwgMTc1LCA4LCAzLCAyMTgsIDE3OSwgOCwgMywgMjE4LCAxNzgsIDgsIDMsIDIxOCwgMTcwLCAKKyAgICA4LCAzLCAyMTgsIDE2OSwgOCwgMywgMjE4LCAxNzQsIDgsIDMsIDIxOCwgMTczLCA4LCAzLCAyMTgsIDE3MSwgOCwgMywgCisgICAgMjE4LCAxNzIsIDgsIDMsIDIxMCwgNzcsIDgsIDMsIDIxMCwgNzYsIDgsIDMsIDIxMCwgODIsIDgsIDMsIDIxMCwgNzksIDgsIAorICAgIDMsIDIxMCwgNTksIDgsIDMsIDIxMCwgNjEsIDgsIDMsIDIxMCwgNjAsIDgsIDMsIDIxMCwgNjQsIDgsIDMsIDIxMCwgNjMsIAorICAgIDgsIDMsIDIxMCwgNjcsIDgsIDMsIDIxMCwgNjUsIDgsIDMsIDIxMCwgNzEsIDgsIDMsIDIxMCwgNzAsIDgsIDMsIDIxMCwgCisgICAgNzQsIDgsIDMsIDIxMCwgNzIsIDgsIDMsIDIxMCwgNTUsIDgsIDMsIDIxMCwgNTQsIDgsIDMsIDIxMCwgNjIsIDgsIDMsIAorICAgIDIxMCwgNTgsIDgsIDMsIDIxMCwgNTYsIDgsIDMsIDIxMCwgNTcsIDgsIDMsIDIxMCwgNDcsIDgsIDMsIDIxMCwgNDYsIDgsIAorICAgIDMsIDIxMCwgNTEsIDgsIDMsIDIxMCwgNTAsIDgsIDMsIDIxMCwgNDgsIDgsIDMsIDIxMCwgNDksIDgsIDMsIDI1MCwgMTM2LCAKKyAgICA4LCAzLCAyNTAsIDEzMywgOCwgMywgMjUwLCAxNTcsIDgsIDMsIDI1MCwgMTQ0LCA4LCAzLCAyNTAsIDY1LCA4LCAzLCAyNTAsIAorICAgIDY0LCA4LCAzLCAyNTAsIDY3LCA4LCAzLCAyNTAsIDY2LCA4LCAzLCAyNTAsIDc5LCA4LCAzLCAyNTAsIDc4LCA4LCAzLCAKKyAgICAyNTAsIDg2LCA4LCAzLCAyNTAsIDgxLCA4LCAzLCAyNTAsIDExNSwgOCwgMywgMjUwLCAxMTMsIDgsIDMsIDI1MCwgMTMxLCAKKyAgICA4LCAzLCAyNTAsIDEyMSwgOCwgMywgMjUwLCA1OSwgOCwgMywgMjUwLCA2OSwgOCwgMywgMjUwLCA2MywgOCwgMywgMjUwLCAKKyAgICA2MCwgOCwgMywgMjUwLCA2MiwgOCwgMywgMjUwLCA1MywgOCwgMywgMjUwLCA1MiwgOCwgMywgMjUwLCA1NywgOCwgMywgCisgICAgMjUwLCA1NiwgOCwgMywgMjUwLCA1NCwgOCwgMywgMjUwLCA1NSwgOCwgMywgMjIyLCAxNzUsIDgsIDMsIDIyMiwgMTc5LCA4LCAKKyAgICAzLCAyMjIsIDE1OCwgOCwgMywgMjIyLCAxNTksIDgsIDMsIDIyMiwgMTYyLCA4LCAzLCAyMjIsIDE2MSwgOCwgMywgMjIyLCAKKyAgICAxNjUsIDgsIDMsIDIyMiwgMTYzLCA4LCAzLCAyMjIsIDE2OSwgOCwgMywgMjIyLCAxNjgsIDgsIDMsIDIyMiwgMTc0LCA4LCAKKyAgICAzLCAyMjIsIDE3MCwgOCwgMywgMjIyLCAxNTQsIDgsIDMsIDIyMiwgMTUyLCA4LCAzLCAyMjIsIDE2MCwgOCwgMywgMjIyLCAKKyAgICAxNTcsIDgsIDMsIDIyMiwgMTU1LCA4LCAzLCAyMjIsIDE1NiwgOCwgMywgMjIyLCAxNDcsIDgsIDMsIDIyMiwgMTQ2LCA4LCAKKyAgICAzLCAyMjIsIDE1MSwgOCwgMywgMjIyLCAxNTAsIDgsIDMsIDIyMiwgMTQ4LCA4LCAzLCAyMjIsIDE0OSwgOCwgMywgMjI4LCAKKyAgICAzNCwgOCwgMywgMjI4LCAzMywgOCwgMywgMjI4LCAzNiwgOCwgMywgMjI4LCAzNSwgOCwgMywgMjI4LCAyNiwgOCwgMywgCisgICAgMjI4LCAyOCwgOCwgMywgMjI4LCAyNywgOCwgMywgMjI4LCAzMCwgOCwgMywgMjI4LCAyOSwgOCwgMywgMjI4LCAzMiwgOCwgCisgICAgMywgMjI4LCAzMSwgOCwgMywgMjI4LCAyMSwgOCwgMywgMjI4LCAyMCwgOCwgMywgMjI4LCAyNSwgOCwgMywgMjI4LCAyNCwgCisgICAgOCwgMywgMjI4LCAyMiwgOCwgMywgMjI4LCAyMywgOCwgMywgMjI4LCAxNSwgOCwgMywgMjI4LCAxNCwgOCwgMywgMjI4LCAKKyAgICAxOSwgOCwgMywgMjI4LCAxOCwgOCwgMywgMjI4LCAxNiwgOCwgMywgMjI4LCAxNywgOCwgMywgMjIwLCA3MiwgOCwgMywgCisgICAgMjIwLCA2NywgOCwgMywgMjIwLCAxMDIsIDgsIDMsIDIyMCwgODMsIDgsIDMsIDIxOSwgMjE1LCA4LCAzLCAyMTksIDIxNywgCisgICAgOCwgMywgMjE5LCAyMTYsIDgsIDMsIDIxOSwgMjM2LCA4LCAzLCAyMTksIDIzMywgOCwgMywgMjIwLCA3LCA4LCAzLCAyMTksIAorICAgIDI1NCwgOCwgMywgMjIwLCA0MiwgOCwgMywgMjIwLCAzNSwgOCwgMywgMjIwLCA2MywgOCwgMywgMjIwLCA1MCwgOCwgMywgCisgICAgMjE5LCAyMTEsIDgsIDMsIDIxOSwgMjA5LCA4LCAzLCAyMTksIDIyNSwgOCwgMywgMjE5LCAyMTQsIDgsIDMsIDIxOSwgMjEyLCAKKyAgICA4LCAzLCAyMTksIDIxMywgOCwgMywgMjE5LCAxOTQsIDgsIDMsIDIxOSwgMTkzLCA4LCAzLCAyMTksIDIwMCwgOCwgMywgCisgICAgMjE5LCAxOTcsIDgsIDMsIDIxOSwgMTk1LCA4LCAzLCAyMTksIDE5NiwgOCwgMywgMjIzLCAxNDEsIDgsIDMsIDIyMywgMTM1LCAKKyAgICA4LCAzLCAyMDUsIDgsIDMsIDIyMywgMTQ3LCA4LCAzLCAyMjIsIDEyMCwgOCwgMywgMjIyLCAxMjIsIDgsIDMsIDIyMiwgCisgICAgMTIxLCA4LCAzLCAyMjIsIDE4OCwgOCwgMywgMjIyLCAxODEsIDgsIDMsIDIyMiwgMjExLCA4LCAzLCAyMjIsIDE5MiwgOCwgCisgICAgMywgMjIzLCA0MywgOCwgMywgMjIzLCAxMjgsIDgsIDMsIDIyMywgODEsIDgsIDMsIDIyMiwgMTEzLCA4LCAzLCAyMjIsIAorICAgIDExMCwgOCwgMywgMjIyLCAxNDAsIDgsIDMsIDIyMiwgMTE5LCA4LCAzLCAyMjIsIDExNSwgOCwgMywgMjIyLCAxMTYsIDgsIAorICAgIDMsIDIyMiwgOTUsIDgsIDMsIDIyMiwgOTQsIDgsIDMsIDIyMiwgMTAwLCA4LCAzLCAyMjIsIDk4LCA4LCAzLCAyMjIsIDk2LCAKKyAgICA4LCAzLCAyMjIsIDk3LCA4LCAzLCAyMzUsIDk4LCA4LCAzLCAyMzUsIDk3LCA4LCAzLCAyMzUsIDEwOCwgOCwgMywgMjM1LCAKKyAgICA5OSwgOCwgMywgMjM1LCAxMDQsIDgsIDMsIDIzNSwgMTAzLCA4LCAzLCAyMzUsIDEwNiwgOCwgMywgMjM1LCAxMDUsIDgsIDMsIAorICAgIDIzNSwgNDEsIDgsIDMsIDIzNSwgNDAsIDgsIDMsIDIzNSwgNDMsIDgsIDMsIDIzNSwgNDIsIDgsIDMsIDIzNSwgNTYsIDgsIAorICAgIDMsIDIzNSwgNTQsIDgsIDMsIDIzNSwgNjgsIDgsIDMsIDIzNSwgNTgsIDgsIDMsIDIzNSwgMzQsIDgsIDMsIDIzNSwgMzIsIAorICAgIDgsIDMsIDIzNSwgNTEsIDgsIDMsIDIzNSwgMzksIDgsIDMsIDIzNSwgMzYsIDgsIDMsIDIzNSwgMzcsIDgsIDMsIDIzNSwgCisgICAgMjYsIDgsIDMsIDIzNSwgMjUsIDgsIDMsIDIzNSwgMzAsIDgsIDMsIDIzNSwgMjksIDgsIDMsIDIzNSwgMjcsIDgsIDMsIAorICAgIDIzNSwgMjgsIDgsIDMsIDIyNCwgNDYsIDgsIDMsIDIyNCwgNDQsIDgsIDMsIDIyNCwgNTMsIDgsIDMsIDIyNCwgNDcsIDgsIAorICAgIDMsIDIyNCwgNTAsIDgsIDMsIDIyNCwgNDksIDgsIDMsIDIyNCwgNTIsIDgsIDMsIDIyNCwgNTEsIDgsIDMsIDIyMywgMjU1LCAKKyAgICA4LCAzLCAyMjMsIDI1MiwgOCwgMywgMjI0LCAxLCA4LCAzLCAyMjQsIDAsIDgsIDMsIDIyNCwgMzMsIDgsIDMsIDIyNCwgMzIsIAorICAgIDgsIDMsIDIyNCwgNDIsIDgsIDMsIDIyNCwgMzYsIDgsIDMsIDIyMywgMjQ3LCA4LCAzLCAyMjMsIDI0MywgOCwgMywgMjI0LCAKKyAgICAzMCwgOCwgMywgMjIzLCAyNTEsIDgsIDMsIDIyMywgMjQ5LCA4LCAzLCAyMjMsIDI1MCwgOCwgMywgMjIzLCAyMjcsIDgsIDMsIAorICAgIDIyMywgMjI1LCA4LCAzLCAyMjMsIDIzNywgOCwgMywgMjIzLCAyMzAsIDgsIDMsIDIyMywgMjI4LCA4LCAzLCAyMjMsIDIyOSwgCisgICAgOCwgMywgMjM1LCA4NywgOCwgMywgMjM1LCA4NiwgOCwgMywgMjM1LCA5MywgOCwgMywgMjM1LCA4OCwgOCwgMywgMjM1LCAKKyAgICA5MCwgOCwgMywgMjM1LCA4OSwgOCwgMywgMjM1LCA5MiwgOCwgMywgMjM1LCA5MSwgOCwgMywgMjM1LCA3OCwgOCwgMywgCisgICAgMjM1LCA4MCwgOCwgMywgMjM1LCA3OSwgOCwgMywgMjM1LCA4MywgOCwgMywgMjM1LCA4MiwgOCwgMywgMjM1LCA4NSwgOCwgCisgICAgMywgMjM1LCA4NCwgOCwgMywgMjM1LCA3NCwgOCwgMywgMjM1LCA3MywgOCwgMywgMjM1LCA4MSwgOCwgMywgMjM1LCA3NywgCisgICAgOCwgMywgMjM1LCA3NSwgOCwgMywgMjM1LCA3NiwgOCwgMywgMjM1LCA3MCwgOCwgMywgMjM1LCA2OSwgOCwgMywgMjM1LCAKKyAgICA3MiwgOCwgMywgMjM1LCA3MSwgOCwgMywgMjI4LCAxNjIsIDgsIDMsIDIyOCwgMTYxLCA4LCAzLCAyMjgsIDE2OSwgOCwgMywgCisgICAgMjI4LCAxNjMsIDgsIDMsIDIyOCwgMTY1LCA4LCAzLCAyMjgsIDE2NCwgOCwgMywgMjI4LCAxNjgsIDgsIDMsIDIyOCwgMTY2LCAKKyAgICA4LCAzLCAyMjgsIDE1MSwgOCwgMywgMjI4LCAxNTIsIDgsIDMsIDIyOCwgMTU3LCA4LCAzLCAyMjgsIDE1NiwgOCwgMywgCisgICAgMjI4LCAxNjAsIDgsIDMsIDIyOCwgMTU4LCA4LCAzLCAyMjgsIDE0NiwgOCwgMywgMjI4LCAxNTUsIDgsIDMsIDIyOCwgMTUwLCAKKyAgICA4LCAzLCAyMjgsIDE0NywgOCwgMywgMjI4LCAxNDgsIDgsIDMsIDIyOCwgMTQxLCA4LCAzLCAyMjgsIDE0MCwgOCwgMywgCisgICAgMjI4LCAxNDUsIDgsIDMsIDIyOCwgMTQ0LCA4LCAzLCAyMjgsIDE0MiwgOCwgMywgMjI4LCAxNDMsIDgsIDMsIDIyNywgMTM3LCAKKyAgICA4LCAzLCAyMjcsIDEzNiwgOCwgMywgMjI3LCAxNDgsIDgsIDMsIDIyNywgMTQxLCA4LCAzLCAyMjcsIDE0NSwgOCwgMywgCisgICAgMjI3LCAxNDQsIDgsIDMsIDIyNywgMTQ3LCA4LCAzLCAyMjcsIDE0NiwgOCwgMywgMjI3LCAxMjQsIDgsIDMsIDIyNywgMTI2LCAKKyAgICA4LCAzLCAyMjcsIDEyNSwgOCwgMywgMjI3LCAxMzAsIDgsIDMsIDIyNywgMTI5LCA4LCAzLCAyMjcsIDEzNCwgOCwgMywgCisgICAgMjI3LCAxMzEsIDgsIDMsIDIyNywgMTIyLCA4LCAzLCAyMjcsIDEyMCwgOCwgMywgMjI3LCAxMjgsIDgsIDMsIDIyNywgMTIzLCAKKyAgICA4LCAzLCAyMTEsIDE1MCwgOCwgMywgMjExLCAxNDksIDgsIDMsIDIxMSwgMTU3LCA4LCAzLCAyMTEsIDE1MiwgOCwgMywgCisgICAgMjExLCAxNTQsIDgsIDMsIDIxMSwgMTUzLCA4LCAzLCAyMTEsIDE1NiwgOCwgMywgMjExLCAxNTUsIDgsIDMsIDIxMSwgMTM5LCAKKyAgICA4LCAzLCAyMTEsIDE0MCwgOCwgMywgMjExLCAxNDQsIDgsIDMsIDIxMSwgMTQzLCA4LCAzLCAyMTEsIDE0OCwgOCwgMywgCisgICAgMjExLCAxNDYsIDgsIDMsIDIxMSwgMTIxLCA4LCAzLCAyMTEsIDExOSwgOCwgMywgMjExLCAxMzEsIDgsIDMsIDIxMSwgMTI0LCAKKyAgICA4LCAzLCAyMTEsIDEyMiwgOCwgMywgMjExLCAxMjMsIDgsIDMsIDIxMCwgMjUwLCA4LCAzLCAyMTAsIDI0OCwgOCwgMywgCisgICAgMjExLCA4LCA4LCAzLCAyMTAsIDI1MSwgOCwgMywgMjExLCAyLCA4LCAzLCAyMTEsIDEsIDgsIDMsIDIxMSwgNSwgOCwgMywgCisgICAgMjExLCAzLCA4LCAzLCAyMTAsIDE5MSwgOCwgMywgMjEwLCAxOTAsIDgsIDMsIDIxMCwgMTk0LCA4LCAzLCAyMTAsIDE5MiwgCisgICAgOCwgMywgMjEwLCAyMjQsIDgsIDMsIDIxMCwgMjIxLCA4LCAzLCAyMTAsIDI0NCwgOCwgMywgMjEwLCAyMjgsIDgsIDMsIAorICAgIDIxMCwgMTgyLCA4LCAzLCAyMTAsIDE3OCwgOCwgMywgMjEwLCAyMTIsIDgsIDMsIDIxMCwgMTg5LCA4LCAzLCAyMTAsIDE4NSwgCisgICAgOCwgMywgMjEwLCAxODYsIDgsIDMsIDIxMCwgMTYyLCA4LCAzLCAyMTAsIDE2MSwgOCwgMywgMjEwLCAxNjksIDgsIDMsIAorICAgIDIxMCwgMTY1LCA4LCAzLCAyMTAsIDE2MywgOCwgMywgMjEwLCAxNjQsIDgsIDM0LCAyMjQsIDMzLCA4LCAzNCwgMjMyLCAKKyAgICAyNDEsIDgsIDM0LCAyMzQsIDYxLCA4LCAzNCwgMjI3LCAxNDEsIDgsIDM0LCAyNDksIDY5LCA4LCAzNCwgMjE4LCAxOTIsIDgsIAorICAgIDM0LCAyNDMsIDEyLCA4LCAzNCwgMjQzLCA0NCwgOCwgMzQsIDIzMCwgMjMwLCA4LCAzNCwgMjQwLCAxODAsIDgsIDM0LCAKKyAgICAyMzIsIDU2LCA4LCAzNCwgMjUyLCA4MywgOCwgMzQsIDIzMCwgMTI2LCA4LCAzNCwgMjEwLCAyNDQsIDgsIDM0LCAyMjQsIAorICAgIDEyMSwgOCwgMzQsIDI0MCwgMTc0LCA4LCAzNCwgMjE3LCA0NiwgOCwgMzQsIDI0MywgMTM1LCA4LCAzNCwgMjEwLCA1LCA4LCAKKyAgICAzNCwgMjQ5LCA2MywgOCwgMzQsIDI0OCwgOTUsIDgsIDM0LCAyNTEsIDk4LCA4LCAzNCwgMjQzLCA4LCA4LCAzNCwgMjI3LCAKKyAgICAxMzEsIDgsIDM0LCAyMTUsIDExOCwgOCwgMzQsIDIyNiwgMTc1LCA4LCAzNCwgMjM1LCA3NCwgOCwgMzQsIDIxMCwgMTksIDgsIAorICAgIDM0LCAyMjQsIDEwMCwgOCwgMzQsIDI0MSwgMTA4LCA4LCAzNCwgMjEwLCAyNTAsIDgsIDM0LCAyMTIsIDExMiwgOCwgMzQsIAorICAgIDIxOSwgMjAwLCA4LCAzNCwgMjEzLCAyNDQsIDgsIDM0LCAyMTAsIDExNiwgOCwgMzQsIDIzNSwgNjgsIDgsIDM0LCAyMjcsIAorICAgIDk2LCA4LCAzNCwgMjM1LCA3MiwgOCwgMzQsIDI0MiwgMTU0LCA4LCAzNCwgMjM1LCA5MiwgOCwgMzQsIDIxMSwgMjI3LCA4LCAKKyAgICAzNCwgMjQ2LCA3OCwgOCwgMzQsIDIxOSwgMjEzLCA4LCAzNCwgMjMyLCAyMzYsIDgsIDM0LCAyNDksIDczLCA4LCAzNCwgCisgICAgMjQ5LCAxMDUsIDgsIDM0LCAyNTAsIDM3LCA4LCAzNCwgMjQwLCAxNzcsIDgsIDM0LCAyMjAsIDcyLCA4LCAzNCwgMjEwLCA0LCAKKyAgICA4LCAzNCwgMjE5LCAyNTQsIDgsIDM0LCAyNTAsIDEzMSwgOCwgMzQsIDIwOSwgMjMxLCA4LCAzNCwgMjI5LCAxNzMsIDgsIAorICAgIDM0LCAyMzQsIDE4MiwgMjMyLCAxOTYsIDEsIDI1MiwgMTkxLCAyMzIsIDE5NiwgMSwgMTkwLCAyMzIsIDE5NiwgMSwgMjI1LCAKKyAgICAxNDcsIDIzMiwgMTk2LCAxLCAyNDgsIDIyMSwgMjMyLCAxOTYsIDEsIDIxNywgMTA1LCAyMzIsIDE5NiwgMSwgMjE2LCAyMDgsIAorICAgIDIzMiwgMTk2LCAxLCAyNDMsIDEzNSwgMjMyLCAxOTYsIDEsIDE3NiwgMjMyLCAxOTYsIDEsIDIzNCwgMTMyLCAyMzIsIDE5NiwgCisgICAgMSwgMjM1LCAxNDEsIDIzMiwgMTk2LCAxLCAyNTEsIDMzLCAyMzIsIDE5NiwgMSwgMjUwLCAxNTcsIDIzMiwgMTk2LCAxLCAKKyAgICAyNDYsIDM4LCAyMzIsIDE5NiwgMSwgMjE1LCAxODMsIDIzMiwgMTk2LCAxLCAyMTUsIDE3NSwgMjMyLCAxOTYsIDEsIDE4NCwgCisgICAgMjMyLCAxOTYsIDEsIDE5NywgMjMyLCAxOTYsIDEsIDIzMywgMTM1LCAyMzIsIDE5NiwgMSwgMjA2LCAyMzIsIDE5NiwgMSwgCisgICAgMjEwLCA4MiwgMjMyLCAxOTYsIDEsIDIxMCwgMTE2LCAyMzIsIDE5NiwgMSwgMjI5LCA3NywgMjMyLCAxOTYsIDEsIDE2MiwgCisgICAgMjMyLCAxOTYsIDEsIDIxMSwgMTY1LCAyMzIsIDE5NiwgMSwgMjQxLCAxODksIDIzMiwgMTk2LCAxLCAyNDQsIDE5NiwgMjMyLCAKKyAgICAxOTYsIDEsIDIxMiwgNjUsIDIzMiwgMTk2LCAxLCAyMjAsIDEwMiwgMjMyLCAxOTYsIDEsIDE5MSwgMjMyLCAxOTYsIDEsIAorICAgIDI0MiwgMjQ5LCAyMzIsIDE5NiwgMSwgNjEsIDIzMiwgMTk2LCAxLCAyNTQsIDI0MywgMjMyLCAxOTYsIDEsIDc1LCAyMzIsIAorICAgIDE5NiwgMSwgMjQ1LCA1NSwgMjMyLCAxOTYsIDEsIDczLCAyMzIsIDE5NiwgMSwgNzYsIDIzMiwgMTk2LCAxLCA3MCwgMjMyLCAKKyAgICAxOTYsIDEsIDIxNCwgMjE0LCAyMzIsIDE5NiwgMSwgMjE0LCAyMDgsIDIzMiwgMTk2LCAxLCAyMjYsIDIzNCwgMjMyLCAxOTYsIAorICAgIDEsIDEzOCwgMjMwLCAzMiwgMjE2LCAxMTcsIDIzMiwgMTk2LCAxLCAxMzgsIDIyOSwgMjI5LCAyMjUsIDE2LCAyMzIsIDE5NiwgCisgICAgMSwgMTM4LCAyMzAsIDMyLCAyNDksIDcyLCAyMzIsIDE5NiwgMSwgMTM4LCAyMzAsIDMyLCAyNTEsIDIwNSwgMjMyLCAxOTYsIAorICAgIDEsIDEzOCwgMjMwLCAzMiwgMTk3LCAyMzIsIDE5NiwgMSwgMTM4LCAyMzAsIDMyLCAyMzUsIDExNSwgMjMyLCAxOTYsIDIyNCwgCisgICAgMTQxLCAyNDksIDIxOSwgMjMyLCAxOTYsIDIyNCwgMTQxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDQxLCAzLCAyNDUsIDIwOSwgCisgICAgNDEsIDMsIDI0NSwgMjA1LCA0MSwgMywgMjQxLCAyMjAsIDQxLCAzLCAyMTIsIDE3LCA0MSwgMywgMjEyLCAxNiwgNDEsIDMsIAorICAgIDIyNSwgMjExLCA0MSwgMywgMjUyLCAxMywgNDEsIDMsIDI1MiwgNjYsIDQxLCAzLCAyMzEsIDExNiwgNDEsIDMsIDIzMywgCisgICAgMjQ3LCA0MSwgMywgMjMxLCA2LCA0MSwgMywgMjQzLCA3NSwgNDEsIDMsIDI0NCwgMTQ3LCA0MSwgMywgMjEzLCAyNTAsIDQxLCAKKyAgICAzLCAyMTcsIDExLCA0MSwgMywgMjE2LCAxOTQsIDQxLCAzLCAyNDgsIDE2LCA0MSwgMywgMjQ4LCAxMywgNDEsIDMsIDIzMywgCisgICAgNTAsIDQxLCAzLCAyMjMsIDEwOCwgNDEsIDMsIDI0OCwgNzcsIDQxLCAzLCAyMjksIDEzOSwgNDEsIDMsIDIyMSwgMTcwLCAKKyAgICA0MSwgMywgMjIwLCA2MSwgNDEsIDMsIDIxMCwgOTIsIDQxLCAzLCAyMTAsIDczLCA0MSwgMywgMjUwLCAxODIsIDQxLCAzLCAKKyAgICAyMzUsIDEyNCwgNDEsIDMsIDIyOCwgMTc2LCA0MSwgMywgMjExLCA0NCwgNDEsIDMsIDIzNCwgMTgxLCA0MSwgMywgMjI5LCAKKyAgICA1MSwgNDEsIDMsIDI0MywgNTUsIDQxLCAzLCAyMzEsIDgwLCA0MSwgMywgMjI5LCAxMDMsIDQxLCAzLCAyMjcsIDE1NSwgNDEsIAorICAgIDMsIDczLCA0MSwgMywgMjM1LCAyNTUsIDQxLCAzLCAyNDEsIDE4MCwgNDEsIDMsIDI0MSwgMTYwLCA0MSwgMywgMjExLCAKKyAgICAyNTAsIDQxLCAzLCAyMTEsIDI0MSwgNDEsIDMsIDIyNSwgMTA4LCA0MSwgMywgMjUyLCAxMSwgNDEsIDMsIDI1MiwgNiwgNDEsIAorICAgIDMsIDIzMSwgMTA5LCA0MSwgMywgMjMzLCAyNDQsIDQxLCAzLCAyMzEsIDMsIDQxLCAzLCAyNDMsIDcxLCA0MSwgMywgMjQ0LCAKKyAgICAxMjEsIDQxLCAzLCAyMTMsIDE3NiwgNDEsIDMsIDIxNiwgMTE3LCA0MSwgMywgMjE2LCAxNzUsIDQxLCAzLCAyNDgsIDgsIAorICAgIDQxLCAzLCAyNDgsIDEyLCA0MSwgMywgMjMyLCAyNDEsIDQxLCAzLCAyMjMsIDM1LCA0MSwgMywgMjQ4LCAzLCA0MSwgMywgCisgICAgMjI5LCAxMzMsIDQxLCAzLCAyMTksIDE5MSwgNDEsIDMsIDIyMCwgMzIsIDQxLCAzLCAyMTAsIDQ0LCA0MSwgMywgMjEwLCAKKyAgICA2OSwgNDEsIDMsIDI1MCwgNTEsIDQxLCAzLCAyMzUsIDEwOCwgNDEsIDMsIDIyOCwgMTY5LCA0MSwgMywgMjExLCA4LCA0MSwgCisgICAgMywgMjM0LCA5MiwgNDEsIDMsIDIyOSwgNDMsIDQxLCAzLCAyNDIsIDIxNCwgNDEsIDMsIDIzMCwgMjMwLCA0MSwgMywgMjI4LCAKKyAgICAyMzMsIDQxLCAzLCAyMjcsIDE0OCwgNDEsIDMsIDYxLCA0MSwgMywgMjU0LCAxMjMsIDQxLCAzLCAyMjksIDcyLCA0MSwgMywgCisgICAgMTYyLCA0MSwgMywgMjQyLCAxOCwgNDEsIDMsIDIxMiwgNjUsIDQxLCAzLCAyMTIsIDU1LCA0MSwgMywgMTkwLCA0MSwgMywgCisgICAgMjUyLCAxOCwgNDEsIDMsIDI1MiwgMTkxLCA0MSwgMywgMjMxLCAxMjQsIDQxLCAzLCAyMzMsIDI1MSwgNDEsIDMsIDIzMywgCisgICAgMjUwLCA0MSwgMywgMjMxLCAxMCwgNDEsIDMsIDI0MywgNzksIDQxLCAzLCAyNDQsIDE5NiwgNDEsIDMsIDIxNCwgMjcsIDQxLCAKKyAgICAzLCAyMTcsIDEwNSwgNDEsIDMsIDIxNiwgMjA4LCA0MSwgMywgMjQ4LCAyNSwgNDEsIDMsIDI0OCwgMTUsIDQxLCAzLCAyMzMsIAorICAgIDEzNSwgNDEsIDMsIDIwNSwgNDEsIDMsIDI0OCwgMjIxLCA0MSwgMywgMjI5LCAxNDgsIDQxLCAzLCAyMDYsIDQxLCAzLCAKKyAgICAyMjAsIDEwMiwgNDEsIDMsIDIxMCwgMTE2LCA0MSwgMywgMjEwLCA4MiwgNDEsIDMsIDI1MSwgMzMsIDQxLCAzLCAyMzUsIAorICAgIDE0MSwgNDEsIDMsIDIyOCwgMTg1LCA0MSwgMywgMTkxLCA0MSwgMywgMTc2LCA0MSwgMywgMjM0LCAyMzQsIDQxLCAzLCAKKyAgICAyMjksIDU2LCA0MSwgMywgMjQzLCAxMzUsIDQxLCAzLCAxODQsIDQxLCAzLCAxOTcsIDQxLCAzLCAyMjcsIDE2NSwgNDEsIDMsIAorICAgIDIyNiwgMTgzLCA0MSwgMywgMjI2LCAxNzksIDQxLCAzLCAyNDEsIDUzLCA0MSwgMywgMjExLCAyMTUsIDQxLCAzLCAyMTEsIAorICAgIDIxMSwgNDEsIDMsIDIyNCwgMjQ5LCA0MSwgMywgMjUyLCA5LCA0MSwgMywgMjUxLCAxOTMsIDQxLCAzLCAyMzEsIDEwNCwgCisgICAgNDEsIDMsIDIzMywgMjQyLCA0MSwgMywgMjMwLCAyNTUsIDQxLCAzLCAyNDMsIDY3LCA0MSwgMywgMjQ0LCAzNCwgNDEsIDMsIAorICAgIDIxMywgMTI3LCA0MSwgMywgMjE2LCAxNywgNDEsIDMsIDIxNiwgMTUzLCA0MSwgMywgMjQ4LCA2LCA0MSwgMywgMjQ4LCAxMCwgCisgICAgNDEsIDMsIDIzMiwgMTI3LCA0MSwgMywgMjIyLCAxOTcsIDQxLCAzLCAyNDcsIDEyNSwgNDEsIDMsIDIyOSwgMTIwLCA0MSwgCisgICAgMywgMjE5LCA0MCwgNDEsIDMsIDIyMCwgMSwgNDEsIDMsIDIxMCwgMjEsIDQxLCAzLCAyMTAsIDY2LCA0MSwgMywgMjQ5LCAKKyAgICAxNzQsIDQxLCAzLCAyMzUsIDU5LCA0MSwgMywgMjI4LCAxNTksIDQxLCAzLCAyMTAsIDIyOSwgNDEsIDMsIDIzNCwgMTAsIAorICAgIDQxLCAzLCAyMjksIDQxLCA0MSwgMywgMjQyLCAxNjQsIDQxLCAzLCAyMzAsIDEzMiwgNDEsIDMsIDIyOCwgNjQsIDQxLCAzLCAKKyAgICAyMjcsIDEzMiwgNDEsIDMsIDcwLCA0MSwgMywgMjE0LCAxOTAsIDQxLCAzLCAyNDAsIDIyMiwgNDEsIDMsIDI0MCwgMjEyLCAKKyAgICA0MSwgMywgMjExLCAxOTUsIDQxLCAzLCAyMTEsIDE4OSwgNDEsIDMsIDIyNCwgMTUwLCA0MSwgMywgMjUyLCA4LCA0MSwgMywgCisgICAgMjUxLCAxMjUsIDQxLCAzLCAyMzEsIDEwMywgNDEsIDMsIDIzMywgMjQwLCA0MSwgMywgMjMwLCAyNTQsIDQxLCAzLCAyNDMsIAorICAgIDY2LCA0MSwgMywgMjQzLCAyMzQsIDQxLCAzLCAyMTIsIDExNiwgNDEsIDMsIDIxNSwgMTE4LCA0MSwgMywgMjE2LCAxMzYsIAorICAgIDQxLCAzLCAyNDgsIDQsIDQxLCAzLCAyNDgsIDksIDQxLCAzLCAyMzIsIDk4LCA0MSwgMywgMjIyLCAxNDAsIDQxLCAzLCAKKyAgICAyNDYsIDc4LCA0MSwgMywgMjI5LCAxMTUsIDQxLCAzLCAyMTgsIDgzLCA0MSwgMywgMjE5LCAyMjUsIDQxLCAzLCAyMTAsIAorICAgIDEzLCA0MSwgMywgMjEwLCA2MiwgNDEsIDMsIDI0OSwgMTEyLCA0MSwgMywgMjM1LCA1MSwgNDEsIDMsIDIyOCwgMTU1LCA0MSwgCisgICAgMywgMjEwLCAyMTIsIDQxLCAzLCAyMzMsIDIxNywgNDEsIDMsIDIyOSwgNDAsIDQxLCAzLCAyNDIsIDExMywgNDEsIDMsIAorICAgIDIzMCwgMTAyLCA0MSwgMywgMjI3LCAyMzcsIDQxLCAzLCAyMjcsIDEyOCwgNDEsIDMsIDc2LCA0MSwgMywgMjI2LCAxOTYsIAorICAgIDQxLCAzLCAyMjksIDAsIDQxLCAzLCAyNDEsIDY4LCA0MSwgMywgMjQxLCA1NiwgNDEsIDMsIDIxMSwgMjI3LCA0MSwgMywgCisgICAgMjExLCAyMTYsIDQxLCAzLCAyMjUsIDE2LCA0MSwgMywgMjUyLCAxMCwgNDEsIDMsIDI1MSwgMjA1LCA0MSwgMywgMjMxLCAKKyAgICAxMDUsIDQxLCAzLCAyMzMsIDI0MywgNDEsIDMsIDIzMSwgMSwgNDEsIDMsIDI0MywgNjksIDQxLCAzLCAyNDMsIDY4LCA0MSwgCisgICAgMywgMjQ0LCA0MywgNDEsIDMsIDIxMywgMTM4LCA0MSwgMywgMTExLCA0MSwgMywgMjE2LCAxNTYsIDQxLCAzLCAyNDgsIDcsIAorICAgIDQxLCAzLCAyNDgsIDExLCA0MSwgMywgMjMyLCAxNTYsIDQxLCAzLCAyMjIsIDIxMSwgNDEsIDMsIDI0NywgMTQ1LCA0MSwgMywgCisgICAgMjI5LCAxMjQsIDQxLCAzLCAyMTksIDU4LCA0MSwgMywgMjIwLCA3LCA0MSwgMywgMjEwLCAyMywgNDEsIDMsIDIxMCwgNjcsIAorICAgIDQxLCAzLCAyNDksIDIzOCwgNDEsIDMsIDIzNSwgNjgsIDQxLCAzLCAyMjgsIDE2MCwgNDEsIDMsIDIxMCwgMjQ0LCA0MSwgMywgCisgICAgMjM0LCAyOCwgNDEsIDMsIDIyOSwgNDIsIDQxLCAzLCAyNDIsIDE3NCwgNDEsIDMsIDIzMCwgMTYxLCA0MSwgMywgMjI4LCAKKyAgICA3NCwgNDEsIDMsIDIyNywgMTM0LCA0MSwgMywgNzUsIDQxLCAzLCAyNDUsIDE1MCwgNDEsIDMsIDIyOSwgNjEsIDQxLCAzLCAKKyAgICAyNDEsIDIzOCwgNDEsIDMsIDI0MSwgMjA5LCA0MSwgMywgMjEyLCAyMiwgNDEsIDMsIDIxMiwgMTIsIDQxLCAzLCAyMjUsIAorICAgIDIyMSwgNDEsIDMsIDI1MiwgMTQsIDQxLCAzLCAyNTIsIDc1LCA0MSwgMywgMjMxLCAxMTcsIDQxLCAzLCAyMzMsIDI0OCwgCisgICAgNDEsIDMsIDIzMywgMjQ2LCA0MSwgMywgMjMxLCA3LCA0MSwgMywgMjQzLCA3NiwgNDEsIDMsIDI0MywgNzQsIDQxLCAzLCAKKyAgICAyNDQsIDE1NCwgNDEsIDMsIDIxMywgMjU1LCA0MSwgMywgMjE3LCAyMiwgNDEsIDMsIDIxNiwgMTk1LCA0MSwgMywgMjQ4LCAKKyAgICAxNywgNDEsIDMsIDI0OCwgMTQsIDQxLCAzLCAyMzMsIDU4LCA0MSwgMywgMjIzLCAxMjgsIDQxLCAzLCAyNDgsIDkwLCA0MSwgCisgICAgMywgMjI5LCAxNDAsIDQxLCAzLCAyMjEsIDE4MSwgNDEsIDMsIDIyMCwgNjMsIDQxLCAzLCAyMTAsIDk0LCA0MSwgMywgMjEwLCAKKyAgICA3NCwgNDEsIDMsIDI1MCwgMTkwLCA0MSwgMywgMjM1LCAxMjYsIDQxLCAzLCAyMjgsIDE3OCwgNDEsIDMsIDIxMSwgNDcsIAorICAgIDQxLCAzLCAyMzQsIDE4MiwgNDEsIDMsIDIyOSwgNTIsIDQxLCAzLCAyMjksIDQ4LCA0MSwgMywgMjQzLCA2MiwgNDEsIDMsIAorICAgIDI0MywgNTEsIDQxLCAzLCAyMzEsIDkxLCA0MSwgMywgMjI5LCAxMDcsIDQxLCAzLCAyMjcsIDE1NiwgNDEsIDMsIDIyOSwgCisgICAgNzksIDQxLCAzLCAyMzMsIDIyLCA0MSwgMjQ5LCAyMTksIDQxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDQxLCAyMjQsIDEzLCAKKyAgICA3OCwgNDEsIDMsIDIyOSwgMTIzLCAyNDQsIDE5NiwgNDEsIDMsIDIyOSwgMTIzLCAxNzYsIDQxLCAzLCAyMjksIDEyMywgCisgICAgMjE5LCA0MCwgNDEsIDE2LCAyNDQsIDE0NCwgNDEsIDE2LCAyMzQsIDE4MCwgNDEsIDE2LCAyMTYsIDgxLCA0MSwgMTYsIAorICAgIDIyOCwgMjA4LCA0MSwgMTYsIDI1MiwgMTQ3LCA0MSwgMTYsIDI0NCwgMTk1LCA0MSwgMTYsIDIxNywgMTAxLCA0MSwgMTYsIAorICAgIDI0OCwgMTc2LCA0MSwgMTYsIDI0NywgMTI0LCA0MSwgMTYsIDIzMywgMjA2LCA0MSwgMTYsIDIxNiwgMjEsIDQxLCAxNiwgCisgICAgMjQ3LCAxNDQsIDQxLCAxNiwgMjM1LCA2MCwgNDEsIDIxLCAyMTAsIDg2LCA0MSwgMjEsIDExMCwgNDEsIDIxLCAxMDUsIDQxLCAKKyAgICAyMSwgMTU4LCA0MSwgMjEsIDE2MSwgNDEsIDIxLCAxODksIDQxLCAyMSwgMTk0LCA0MSwgMjEsIDE5OCwgNDEsIDIxLCAxOTUsIAorICAgIDQxLCAyMSwgMjAwLCA0MSwgMywgMjI5LCAxMjMsIDE4NCwgNDEsIDMsIDIyOSwgMTIzLCAyNDcsIDE0NSwgMzMsIDYsIDEsIAorICAgIDIxMCwgOTAsIDMzLCA0LCAxLCAyMTAsIDkwLCAzMywgNiwgMSwgMjQ2LCAzNCwgMzMsIDQsIDEsIDI0NiwgMzQsIDMzLCA2LCAKKyAgICAxLCAyMjMsIDQ5LCAyNDYsIDM2LCAzMywgNCwgMSwgMjIzLCA0OSwgMjQ2LCAzNiwgMzMsIDYsIDEsIDIzNSwgMTg1LCAzMywgCisgICAgNCwgMSwgMjM1LCAxODUsIDMzLCA2LCAxLCAyNDcsIDE2MSwgMzMsIDQsIDEsIDI0NywgMTYxLCAzMywgNiwgMSwgMjMwLCAKKyAgICAxNDAsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjMwLCAxNDAsIDIxNCwgMjA1LCAzMywgNiwgMSwgMjUxLCAxMzYsIDIyNiwgCisgICAgMjAxLCAzMywgNCwgMSwgMjUxLCAxMzYsIDIyNiwgMjAxLCAzMywgNiwgMSwgMjI5LCA4NywgMjExLCAzMSwgMzMsIDQsIDEsIAorICAgIDIyOSwgODcsIDIxMSwgMzEsIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAyNTIsIDE4NSwgMjExLCAzMSwgMzMsIDQsIDEsIDIxMSwgCisgICAgMjgsIDIsIDI1MiwgMTg1LCAyMTEsIDMxLCAzMywgNiwgMSwgMjM1LCAxODMsIDIxMSwgNTksIDMzLCA0LCAxLCAyMzUsIAorICAgIDE4MywgMjExLCA1OSwgMzMsIDYsIDEsIDIyMywgNDksIDIxMCwgMjEyLCAzMywgNCwgMSwgMjIzLCA0OSwgMjEwLCAyMTIsIAorICAgIDMzLCA2LCAxLCAyMzUsIDE4MywgNjEsIDMzLCA0LCAxLCAyMzUsIDE4MywgNjEsIDMzLCA2LCAxLCAyNTAsIDAsIDIzMiwgCisgICAgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MCwgMCwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjUxLCAyMTQsIAorICAgIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUxLCAyMTQsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODMsIDI1MCwgMCwgMjMyLCAKKyAgICAxOTIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxODMsIDI1MCwgMCwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgCisgICAgMjEwLCAyNDYsIDMzLCA0LCAxLCAyMTAsIDI0NiwgMzMsIDYsIDEsIDIyMywgNDksIDIxNSwgMTc4LCAzMywgNCwgMSwgMjIzLCAKKyAgICA0OSwgMjE1LCAxNzgsIDMzLCA2LCAxLCAyMTksIDUyLCAyNDgsIDkwLCAzMywgNCwgMSwgMjE5LCA1MiwgMjQ4LCA5MCwgMzMsIAorICAgIDYsIDEsIDIxOSwgNTIsIDI0NSwgMTc0LCAzMywgNCwgMSwgMjE5LCA1MiwgMjQ1LCAxNzQsIDMzLCA2LCAxLCAyMTksIDUyLCAKKyAgICAyNDUsIDE1OSwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0NSwgMTU5LCAzMywgNiwgMSwgMjMwLCAxNDQsIDc2LCAzMywgNCwgMSwgCisgICAgMjMwLCAxNDQsIDc2LCAzMywgNiwgMSwgMjUxLCAyNDAsIDc2LCAzMywgNCwgMSwgMjUxLCAyNDAsIDc2LCAzMywgNiwgMSwgCisgICAgNTIsIDIzMCwgMTQ0LCA3NiwgMzMsIDQsIDEsIDUyLCAyMzAsIDE0NCwgNzYsIDMzLCAxLCAyMzAsIDg2LCA3NiwgMzgsIDMzLCAKKyAgICAyMTIsIDEwMCwgMzgsIDMzLCAyMTYsIDI0OCwgMjMwLCAxOTEsIDUwLCAzOCwgMzMsIDI0MCwgMjExLCAyMzAsIDE5MSwgNTAsIAorICAgIDM4LCAzMywgMjE2LCAxNDgsIDIzMCwgMTkxLCA1MCwgMjE5LCA5MywgMjUzLCAyMTYsIDM4LCAzMywgMSwgMjE0LCAyMDIsIAorICAgIDIzNiwgNjAsIDM4LCAzMywgMSwgNzMsIDM4LCAzMywgMSwgMjExLCA4LCAzOCwgMzMsIDEsIDcwLCAzOCwgMzMsIDEsIDI0MiwgCisgICAgMywgNTAsIDM4LCAzMywgMSwgMjExLCAyNywgMzgsIDMzLCAxLCAyMTksIDUyLCA1MCwgMzgsIDMzLCAxLCAyMjYsIDIwMSwgCisgICAgMzgsIDMzLCAyMzQsIDE5MiwgMzgsIDMzLCAyMjUsIDIyNywgMzMsIDIzNCwgMTkyLCAzMywgMjI1LCAyMjcsIDMzLCA2LCAxLCAKKyAgICAyNDYsIDQ2LCAzMywgNCwgMSwgMjQ2LCA0NiwgMzMsIDYsIDEsIDI0NiwgMjcsIDMzLCA0LCAxLCAyNDYsIDI3LCAzMywgNiwgCisgICAgMSwgMjEwLCA1MiwgMzMsIDQsIDEsIDIxMCwgNTIsIDMzLCA2LCAxLCAyNTAsIDIwNiwgMzMsIDQsIDEsIDI1MCwgMjA2LCAKKyAgICAzMywgNiwgMSwgMjQ2LCAyNSwgMzMsIDQsIDEsIDI0NiwgMjUsIDMzLCA2LCAxLCAyMTcsIDIzLCAyLCAyMzAsIDIyNCwgCisgICAgMTAzLCAzMywgNCwgMSwgMjE3LCAyMywgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIDIxNSwgNzgsIDMzLCA0LCAxLCAKKyAgICAyMTUsIDc4LCAzMywgNiwgMSwgMjE1LCAxNjAsIDMzLCA0LCAxLCAyMTUsIDE2MCwgMzMsIDYsIDEsIDIxNSwgMTY0LCAzMywgCisgICAgNCwgMSwgMjE1LCAxNjQsIDMzLCA2LCAxLCAyMTcsIDI4LCAzMywgNCwgMSwgMjE3LCAyOCwgMzMsIDYsIDEsIDI0MCwgMTk4LCAKKyAgICAzMywgNCwgMSwgMjQwLCAxOTgsIDMzLCA2LCAxLCAyMTksIDIwNiwgMzMsIDQsIDEsIDIxOSwgMjA2LCAzOCwgMzMsIDEsIAorICAgIDIzNSwgMTgzLCA3NSwgMjAsIDEsIDYxLCAyMCwgMSwgMTc2LCAyMCwgMSwgNzAsIDIwLCAxLCAyMzMsIDIxNywgMjAsIDEsIAorICAgIDI0NSwgMjA5LCAyMCwgMSwgMjIzLCAxMDgsIDIwLCAxLCAyMTcsIDg2LCAyMCwgMSwgNzYsIDIwLCAxLCAyMjcsIDE0OCwgCisgICAgMjAsIDEsIDczLCAyMCwgMSwgMjMzLCAxMzUsIDIwLCAxLCAxOTAsIDIwLCAxLCAyMjIsIDIzOSwgMjAsIDEsIDIyMywgMjksIAorICAgIDIwLCAxLCAyMzMsIDQ5LCAyMCwgMSwgMjMxLCA3OSwgMjAsIDEsIDIxNywgMTAxLCAyMCwgMSwgMjI5LCAxNDYsIDIwLCAxLCAKKyAgICAyMjgsIDE4MywgMjAsIDEsIDE5MywgMjAsIDEsIDIxOCwgNCwgMjAsIDEsIDIzMCwgMTAyLCAyMCwgMSwgMjIwLCAyNywgMjAsIAorICAgIDEsIDIxOSwgMTkxLCAyMCwgMSwgMjIwLCAzNywgMjAsIDEsIDIyMCwgMTIzLCAyMCwgMSwgMjMzLCAxNTUsIDIwLCAxLCAKKyAgICAyMzQsIDE1NiwgMjAsIDEsIDIyNywgMjA5LCAyMCwgMSwgMjI3LCAyMzcsIDIwLCAxLCAyMjgsIDE1NCwgMjAsIDEsIDIxMCwgCisgICAgMjI2LCAyMCwgMSwgMjE5LCAyMjUsIDIwLCAxLCAyMTAsIDE4NywgMjAsIDEsIDE5MSwgMjAsIDEsIDIyOCwgOSwgMjAsIDEsIAorICAgIDIzNCwgMTQyLCAyMCwgMSwgMjI1LCAxNTEsIDIwLCAxLCAyMjgsIDE3NiwgMjAsIDEsIDIyNywgMjQ2LCAyMCwgMSwgMjI0LCAKKyAgICAxNDQsIDIwLCAxLCAyMTEsIDE5MiwgMjAsIDEsIDIyNSwgMjExLCAyMCwgMSwgMjQ0LCAxNDcsIDIwLCAxLCAyMjIsIDE0MCwgCisgICAgMjAsIDEsIDIzMiwgOTgsIDIwLCAxLCAyMzAsIDIzMCwgMjAsIDEsIDIyOCwgMjMzLCAyMCwgMSwgMjIzLCA1MSwgMjAsIDEsIAorICAgIDIyMywgMTcxLCAyMCwgMSwgMjM0LCAxNjUsIDIwLCAxLCAyMjksIDcsIDIwLCAxLCAyMjksIDU2LCAyMCwgMSwgMjI5LCA3NywgCisgICAgMjAsIDEsIDIyMCwgNywgMjAsIDEsIDIyNCwgMTQ3LCAyMCwgMSwgMjQzLCAyMzQsIDIwLCAxLCAyNDQsIDM3LCAyMCwgMSwgCisgICAgMjEyLCA2NSwgMjAsIDEsIDE5NywgMjAsIDEsIDIzMiwgMjQxLCAyMCwgMSwgMjI1LCAxMDgsIDIwLCAxLCAyMzIsIDExOSwgCisgICAgMjAsIDEsIDIzNCwgMjgsIDIwLCAxLCAyMzEsIDExNCwgMjAsIDEsIDIyMywgODMsIDIwLCAxLCAyMzEsIDU4LCAyMCwgMSwgCisgICAgMTg0LCAyMCwgMSwgMjE2LCAxMTcsIDIwLCAxLCAyMzQsIDkyLCAyMCwgMSwgMjMwLCAxNjEsIDIwLCAxLCAyMzEsIDEyMiwgCisgICAgMjAsIDEsIDIxNiwgMjMwLCAyMCwgMSwgMjMzLCAyNTEsIDIwLCAxLCAyMTYsIDI0NywgMjAsIDEsIDIyNywgMjM4LCAyMCwgCisgICAgMSwgMjIxLCAyNTEsIDIwLCAxLCAyNDQsIDE5MiwgMjAsIDEsIDIzMywgMjUzLCAyMCwgMSwgMjM0LCAyNCwgMjAsIDM4LCAKKyAgICAxNjQsIDIzNCwgNSwgMjAsIDM4LCAxNjQsIDIxNSwgMTEwLCAyMCwgMjI4LCAxODIsIDIwLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDIwLCAyNDksIDIyNiwgMjAsIDI0OSwgMjE5LCAyMCwgMjIwLCAxNTAsIDIwLCAyMjQsIDEzLCA3OCwgNTgsIDEsIDI1MCwgCisgICAgOTYsIDEzOCwgMjEwLCAyNTQsIDIyNSwgNjEsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMSwgNzAsIDIyNSwgNjEsIDU4LCAxLCAKKyAgICAyNTAsIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjAsIDg0LCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTEsIDcwLCAyMjAsIDg0LCAKKyAgICA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTAsIDI1NCwgMjI0LCAzMCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjExLCA3MCwgCisgICAgMjI0LCAzMCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjEwLCAyNTQsIDIyMiwgMTQwLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAKKyAgICAyMTEsIDcwLCAyMjIsIDE0MCwgNTgsIDEsIDI0NSwgMjAsIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAKKyAgICAxMTgsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMTgsIAorICAgIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ2LCAxMTgsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyMCwgMjQ2LCAxMTgsIAorICAgIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMTI1LCAyNDYsIDExOCwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIAorICAgIDIyNSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyNDYsIDExOCwgMjMzLCAzOSwgMTM4LCAKKyAgICAxMzAsIDU4LCAxLCAyNDUsIDE5LCAyNDYsIDExOCwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDIwLCAyMzMsIAorICAgIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIyNSwgMjMzLCAzOSwgCisgICAgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjMzLCAzOSwgMTM4LCAKKyAgICAxMzAsIDU4LCAxLCA1OSwgNjcsIDEzMCwgNTgsIDEsIDU5LCAyMTksIDk1LCA1OCwgMSwgNTksIDIwMywgMTMwLCA1OCwgMSwgCisgICAgMjMyLCAxMDgsIDQ0LCAyNDksIDE2MSwgMjU0LCAxMDksIDU4LCAxLCAyMjMsIDE1NywgMTIwLCA3NCwgNTgsIDEsIDIyMywgCisgICAgMTU3LCAxMjQsIDc0LCA1OCwgMSwgMjIzLCAxNTcsIDI0NSwgMzEsIDc4LCA1OCwgMSwgMjIzLCAxNTcsIDIzNSwgMTkzLCAKKyAgICAyNDUsIDMxLCA3OCwgNTgsIDEsIDEyMSwgMjM1LCAxOTMsIDI0NSwgMzEsIDc4LCA1OCwgMSwgMjE4LCAxMTEsIDIyLCAxMjUsIAorICAgIDIxNiwgMzAsIDU4LCAxLCAyMTgsIDExMSwgMjIsIDEyMSwgMjE2LCAzMCwgNywgNiwgMSwgMjQ1LCAxOTksIDI1NCwgMTcwLCAKKyAgICA3LCA0LCAxLCAyNDUsIDE5OSwgMjU0LCAxNzAsIDcsIDYsIDEsIDI0NSwgMTk5LCAyNTQsIDE5NiwgNywgNCwgMSwgMjQ1LCAKKyAgICAxOTksIDI1NCwgMTk2LCA3LCA2LCAxLCAyNDEsIDIwNywgNywgNCwgMSwgMjQxLCAyMDcsIDcsIDYsIDEsIDIxNSwgNDAsIDcsIAorICAgIDQsIDEsIDIxNSwgNDAsIDcsIDYsIDEsIDIxNSwgMjI5LCA3LCA0LCAxLCAyMTUsIDIyOSwgNywgNiwgMSwgMjQ5LCAxMTAsIAorICAgIDcsIDQsIDEsIDI0OSwgMTEwLCA3LCA2LCAxLCAyNDksIDExMSwgMiwgMjQ5LCAyMTksIDcsIDQsIDEsIDI0OSwgMTExLCAyLCAKKyAgICAyNDksIDIxOSwgNywgMSwgNCwgNiwgMjQ1LCA2LCA3LCAxLCA0LCA2LCAyMjIsIDkxLCA3LCA2LCAxLCAyNTUsIDczLCA3LCAKKyAgICA0LCAxLCAyNTUsIDczLCA3LCA2LCAxLCAyNTQsIDczLCA3LCA0LCAxLCAyNTQsIDczLCA3LCA2LCAxLCAyNTMsIDE5MiwgNywgCisgICAgNCwgMSwgMjUzLCAxOTIsIDcsIDYsIDEsIDI1MywgMTc2LCA3LCA0LCAxLCAyNTMsIDE3NiwgNywgNiwgMSwgMjUzLCAxNzcsIAorICAgIDIsIDIwMywgMTMwLCA3LCA0LCAxLCAyNTMsIDE3NywgMiwgMjAzLCAxMzAsIDcsIDYsIDEsIDI1MywgMTY3LCA3LCA0LCAxLCAKKyAgICAyNTMsIDE2NywgNywgNiwgMSwgMjIzLCA0OSwgMjUxLCA2NywgMiwgMjQ3LCAxMjAsIDcsIDQsIDEsIDIyMywgNDksIDI1MSwgCisgICAgNjcsIDIsIDI0NywgMTIwLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgOTEsIDcsIDYsIAorICAgIDEsIDIzNSwgMjQsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAxLCAKKyAgICAyMzUsIDI0LCAyLCAyMTgsIDEwMywgMjIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjE4LCAxMDMsIAorICAgIDIyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIDEsIDI1MSwgMTM1LCAxNTYsIDcsIDQsIDEsIDI1MSwgMTM1LCAxNTYsIDcsIDYsIAorICAgIDEsIDIzMywgMTQ5LCAyLCAxMjUsIDkxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAxOTksIDIxOCwgMTAzLCAyMjYsIDEyMCwgNywgNCwgMSwgMTQ0LCAyLCAxOTksIDIxOCwgMTAzLCAyMjYsIDEyMCwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyMzIsIDEyMywgNywgNCwgMSwgMTQ0LCAyLCAyMzIsIDEyMywgNywgNiwgMSwgMjI2LCAxODMsIDcsIDQsIAorICAgIDEsIDIyNiwgMTgzLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAKKyAgICAyMjYsIDEwNiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjQ0LCA1MywgCisgICAgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDI0NCwgNTMsIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCAyMTgsIDIyOSwgMjE3LCA3NywgCisgICAgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDIxOCwgMjI5LCAyMTcsIDc3LCA3LCA2LCAxLCAyMjQsIDk3LCAyLCAyMTgsIDEwMywgCisgICAgMjE2LCAxMzksIDI0OCwgMzksIDcsIDQsIDEsIDIyNCwgOTcsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgCisgICAgNiwgMSwgMjI0LCA5NywgMiwgMjQ3LCAyNTUsIDkxLCA3LCA0LCAxLCAyMjQsIDk3LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIAorICAgIDEsIDIyMywgMjI0LCAyMjIsIDE4NiwgNywgNCwgMSwgMjIzLCAyMjQsIDIyMiwgMTg2LCA3LCA2LCAxLCAyMjIsIDEzMCwgCisgICAgMjIyLCAxODYsIDcsIDQsIDEsIDIyMiwgMTMwLCAyMjIsIDE4NiwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDI0NywgMjU1LCAKKyAgICA5MSwgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDI0NywgMjU1LCA5MSwgNywgNiwgMSwgMjEyLCAxMDYsIDcsIDQsIDEsIDIxMiwgCisgICAgMTA2LCA3LCA2LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDQsIDEsIDIxMywgMTQ1LCAyMTAsIDE1OSwgNywgNiwgMSwgCisgICAgMjE2LCAxNTIsIDIsIDkxLCA3LCA0LCAxLCAyMTYsIDE1MiwgMiwgOTEsIDcsIDYsIDEsIDIxNiwgMTUyLCAyLCAyMTgsIAorICAgIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIDQsIDEsIDIxNiwgMTUyLCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgCisgICAgMzksIDcsIDYsIDEsIDIxMywgMjQ1LCA3LCA0LCAxLCAyMTMsIDI0NSwgNywgNiwgMSwgMjQ1LCA2NSwgNywgNCwgMSwgMjQ1LCAKKyAgICA2NSwgNywgNiwgMSwgMjM1LCAxNzEsIDcsIDQsIDEsIDIzNSwgMTcxLCA3LCA2LCAxLCAyNDksIDIwNywgNywgNCwgMSwgCisgICAgMjQ5LCAyMDcsIDU4LCAxLCAyMTQsIDEzMywgNywgNCwgMSwgMjQ2LCA2OSwgNywgNCwgMSwgMjMyLCA4NCwgNywgNCwgMSwgCisgICAgMjMwLCA4MCwgNywgNCwgMSwgMjI3LCAyMDEsIDcsIDQsIDEsIDIyMiwgMTI5LCA3LCAxLCA0LCA2LCAyMjIsIDEyOSwgNywgCisgICAgNCwgMSwgMjE1LCAxMDgsIDcsIDQsIDEsIDIxNCwgMTk3LCA3LCA2LCAxLCAyMzUsIDIxMywgMjQ5LCA2MCwgNywgNCwgMSwgCisgICAgMjM1LCAyMTMsIDI0OSwgNjAsIDcsIDYsIDEsIDIzNSwgMjEzLCAyNDUsIDYsIDcsIDQsIDEsIDIzNSwgMjEzLCAyNDUsIDYsIAorICAgIDcsIDYsIDEsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNiwgMSwgMjE1LCA5NCwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA0LCAKKyAgICAxLCAyMTUsIDk0LCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDYsIDEsIDIxNSwgOTQsIDE1NiwgNywgNCwgMSwgMjE1LCA5NCwgCisgICAgMTU2LCA3LCA2LCAxLCAyMzUsIDIxMywgMTUzLCA3LCA0LCAxLCAyMzUsIDIxMywgMTUzLCA3LCA2LCAxLCAyMzUsIDIxMywgCisgICAgMjIyLCA5MSwgNywgNCwgMSwgMjM1LCAyMTMsIDIyMiwgOTEsIDcsIDYsIDEsIDIzNSwgMjEzLCAyMTcsIDE1MiwgNywgNCwgCisgICAgMSwgMjM1LCAyMTMsIDIxNywgMTUyLCA1OCwgMSwgMTIxLCAyNTAsIDMxLCAyNTUsIDE0LCA1OCwgMSwgMjQ5LCAyMjYsIDU4LCAKKyAgICAxLCAyMTksIDI1MSwgMjQ1LCA5OCwgNTAsIDcsIDYsIDEsIDIyMSwgMjU1LCA3LCA0LCAxLCAyMjEsIDI1NSwgNywgNiwgMSwgCisgICAgMjE1LCA5NCwgMjQyLCA2MCwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIyMywgNTUsIDI0MSwgNTIsIDIyLCAyNTIsIDQxLCA3LCAKKyAgICA2LCAxLCAyMzAsIDI2LCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNDgsIDM5LCA3LCA2LCAxLCAyNTEsIAorICAgIDY3LCAyLCAxMzAsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDEzMCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDIyNiwgMjQ4LCA5MSwgCisgICAgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCAKKyAgICA0LCAxLCAyMzUsIDI0LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNCwgCisgICAgMSwgMjMwLCAyNiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDQsIDEsIAorICAgIDIyMiwgOTIsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMTAzLCA1OCwgMSwgNiwgMjQyLCA2MSwgMiwgCisgICAgOTEsIDU4LCAxLCA0LCAyNywgMjI2LCAyMzQsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDE5MywgNywgMjQ1LCAxMDMsIDEsIAorICAgIDIyMywgNDksIDI0NSwgNiwgNywgMjQ1LCAxMDMsIDEsIDIyMywgNDksIDIyNiwgMTA1LCA3LCAyNDUsIDEwMywgMSwgMjM1LCAKKyAgICAxOTMsIDE5MywgNywgMjQ1LCAxMDMsIDEsIDI0MCwgMTU0LCAyMzIsIDEyOSwgNywgMjQ1LCAxMDMsIDEsIDI1NCwgMjMsIAorICAgIDE5MywgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA2MSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3MywgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCA1LCAyNDYsIDQ4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDcwLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDc1LCAKKyAgICAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDc2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDUsIDI0MSwgMjUzLCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDIzNCwgMjgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjM0LCAxMDUsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMSwgMjQyLCAxNzQsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQyLCAyMjQsIDIxNywgMjMwLCAyMjksIDIxNCwgNSwgCisgICAgMjU0LCA3NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDksIDIzOCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNTAsIDg2LCAKKyAgICAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNSwgNjgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjM1LCAxMDksIDIxNywgCisgICAgMjMwLCAyMjksIDIxNCwgMSwgMjE1LCAxMzMsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjE1LCAxMzksIDIxNywgMjMwLCAKKyAgICAyMjksIDIxNCwgMSwgMjQ4LCAxMDUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ4LCAxMTQsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMSwgMTExLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIxNiwgMTU2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0NywgCisgICAgMTQ1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0OCwgNywgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMjgsIDc0LCAyMTcsIAorICAgIDIzMCwgMjI5LCAyMTQsIDEsIDIyNSwgMTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjI1LCAxMjEsIDIxNywgMjMwLCAKKyAgICAyMjksIDIxNCwgMSwgMjUxLCAyMDUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjUyLCAxMCwgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCAxLCAyMzAsIDE2MSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMjIsIDIxMSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAKKyAgICAyMzIsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMjIsIDE2NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMTksIAorICAgIDU4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0MSwgNjgsIDIxNywgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDYxLCAyMTcsIAorICAgIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCA3MywgMjE3LCAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgNzAsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMjUsIDUsIDc1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCAyMjYsIDE4MywgMjE3LCAyMzAsIDIyOSwgMjE0LCAKKyAgICAyMjUsIDEyLCAyMzEsIDE1OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyMjUsIDEyLCAyMzEsIDE1NywgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCAyMjUsIDEyLCAyMzEsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyMjUsIDEyLCAyMzEsIDE1NSwgMjI4LCA1NiwgCisgICAgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMjMsIDI0MiwgMjcsIAorICAgIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEzNCwgMjI0LCAxOSwgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAKKyAgICAyMTksIDExNywgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyNDUsIDE4OCwgMjI4LCA1NiwgMjM1LCAyNDAsIAorICAgIDI0NCwgMiwgMTM0LCAyMTksIDExNiwgMjI4LCA1NiwgMjM1LCAyNDAsIDIyNCwgMjIsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgCisgICAgMjI1LCA0MCwgNzgsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjIsIDExOCwgNzgsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjQsIDIzLCAKKyAgICA3OCwgMjI1LCAxNDQsIDEsIDE3NiwgMjI1LCAxNDQsIDEsIDIzNCwgMTMyLCAyMjUsIDE0NCwgMSwgMjQzLCAxMzUsIDIyNSwgCisgICAgMTQ0LCAxLCAyMjksIDc3LCAyMjUsIDE0NCwgMSwgMjUxLCAzMywgMjI1LCAxNDQsIDEsIDI1MCwgMTU3LCAyMjUsIDE0NCwgCisgICAgMSwgMjM1LCAxNDEsIDIyNSwgMTQ0LCAxLCAyMjcsIDE2NSwgMjI1LCAxNDQsIDEsIDIxNywgMTA1LCAyMjUsIDE0NCwgMSwgCisgICAgMjE2LCAyMDgsIDIyNSwgMTQ0LCAxLCAyNDgsIDIyMSwgMjI1LCAxNDQsIDEsIDE5NywgMjI1LCAxNDQsIDEsIDE5MCwgMjI1LCAKKyAgICAxNDQsIDEsIDIyNSwgMTQ3LCAyMjUsIDE0NCwgMSwgMjUyLCAxOTEsIDIyNSwgMTQ0LCAxLCAxODQsIDIyNSwgMTQ0LCAxLCAKKyAgICAyMTUsIDE4MywgMjI1LCAxNDQsIDEsIDIxNSwgMTc1LCAyMjUsIDE0NCwgMSwgMjQ2LCAzOCwgMjI1LCAxNDQsIDEsIDIxMiwgCisgICAgNjUsIDIyNSwgMTQ0LCAxLCAyMTAsIDgyLCAyMjUsIDE0NCwgMSwgMjEwLCAxMTYsIDIyNSwgMTQ0LCAxLCA0LCA2MSwgMjI1LCAKKyAgICAxNDQsIDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIwNSwgMjI1LCAxNDQsIDEsIDIzMywgMTM1LCAyMjUsIDE0NCwgMSwgMjIwLCAKKyAgICAxMDIsIDIyNSwgMTQ0LCAxLCAyMDYsIDIyNSwgMTQ0LCAxLCAxNjIsIDIyNSwgMTQ0LCAxLCA2MSwgMjI1LCAxNDQsIDEsIAorICAgIDczLCAyMjUsIDE0NCwgMSwgNzAsIDIyNSwgMTQ0LCAxLCA3NSwgMjI1LCAxNDQsIDEsIDc2LCAyMjUsIDE0NCwgMSwgMjI0LCAKKyAgICA4OCwgMjI1LCAxNDQsIDEsIDIxMSwgMTY1LCAyMjUsIDE0NCwgMSwgMjQ0LCAxOTYsIDIyNSwgMTQ0LCAxLCAyNDMsIDI5LCAKKyAgICAyMjUsIDE0NCwgMSwgMjQ1LCAyMDksIDIyNSwgMTQ0LCAyMTgsIDczLCAxLCAyMTIsIDY1LCAyMjUsIDE0NCwgMjE4LCA3MywgCisgICAgMSwgMTkxLCAyMjUsIDE0NCwgMSwgMjE1LCAxNTYsIDIyNSwgMTQ0LCAxLCAyMTUsIDE0NCwgMjI1LCAxNDQsIDEsIDI0OCwgCisgICAgMTM1LCAyMjUsIDE0NCwgMSwgMjI4LCAxMTAsIDIyNSwgMTQ0LCAxLCAyNTQsIDE0MSwgMTkxLCAyMjUsIDE0NCwgMSwgMjEzLCAKKyAgICAxMzQsIDIyMCwgMTAyLCAyMjUsIDE0NCwgMSwgMjEzLCAxMzUsIDE2MiwgMjI1LCAxNDQsIDEsIDI1MywgMjIzLCAyNDQsIAorICAgIDE5NiwgMjI1LCAxNDQsIDIxOCwgNzMsIDEsIDIwNSwgMjI1LCAxNDQsIDIxOCwgMjUsIDEsIDIwNSwgMjI1LCAxNDQsIDEsIAorICAgIDI1MCwgMjU1LCAyMjUsIDE0NCwgMjE5LCAxNTUsIDI0MSwgMjM2LCA3OCwgMjI1LCAxNDQsIDUyLCAyNDEsIDIzNiwgNzgsIAorICAgIDIyNSwgMTQ0LCAxNjQsIDIyMCwgOTUsIDIyNSwgMTQ0LCAxNjQsIDUyLCAyMjAsIDk1LCAxNzksIDUsIDI1NCwgNzUsIDE3OSwgCisgICAgNSwgMjEzLCAxNDcsIDE3OSwgMSwgNjEsIDE3OSwgMSwgMjU1LCA3MywgMTc5LCAxLCA3MywgMTc5LCAxLCAyMzYsIDMzLCAKKyAgICAxNzksIDEsIDcwLCAxNzksIDEsIDIxNCwgMTE4LCAxNzksIDEsIDE0OSwgMTUzLCAxNzksIDEsIDE0OSwgMjIyLCAxODAsIAorICAgIDE3OSwgMSwgMTQ5LCAxNTYsIDE3OSwgMSwgMTQ5LCAyMzIsIDE4NSwgMTc5LCAxLCA3NSwgMTc5LCAxLCAyNDUsIDIwOSwgCisgICAgMTc5LCAxLCAyNTQsIDIwMSwgMTc5LCAxLCA3NiwgMTc5LCAxLCAyMjYsIDE4MywgMTc5LCAxLCAyNTMsIDE5MiwgMTc5LCAxLCAKKyAgICAxNzYsIDE3OSwgMSwgMjM0LCAxMzIsIDE3OSwgMSwgMjQzLCAxMzUsIDE3OSwgMSwgMjQyLCAyNDksIDE3OSwgMSwgMjI5LCAKKyAgICA3NywgMTc5LCAxLCAyNTEsIDMzLCAxNzksIDEsIDI1MCwgMTU3LCAxNzksIDEsIDIzNSwgMTQxLCAxNzksIDEsIDIzNSwgCisgICAgMTE0LCAxNzksIDEsIDIyNywgMTY1LCAxNzksIDEsIDIxNSwgMTU2LCAxNzksIDEsIDIxNSwgMTQ0LCAxNzksIDEsIDI0OCwgCisgICAgMTM1LCAxNzksIDEsIDI0OCwgMTE5LCAxNzksIDEsIDIyOCwgMTEwLCAxNzksIDEsIDIxNywgMTA1LCAxNzksIDEsIDIxNiwgCisgICAgMjA4LCAxNzksIDEsIDI0OCwgMjIxLCAxNzksIDEsIDI0OCwgMjUsIDE3OSwgMSwgMTk3LCAxNzksIDEsIDE5MCwgMTc5LCAxLCAKKyAgICAyMjUsIDE0NywgMTc5LCAxLCAyNTIsIDE5MSwgMTc5LCAxLCAyNTIsIDE4LCAxNzksIDEsIDE4NCwgMTc5LCAxLCAxOTEsIAorICAgIDE3OSwgMSwgMjA1LCAxNzksIDEsIDIzMywgMTM1LCAxNzksIDEsIDIxNCwgMjcsIDE3OSwgMSwgMjIwLCAxMDIsIDE3OSwgMSwgCisgICAgMjE4LCAyMjMsIDE3OSwgMSwgMjA2LCAxNzksIDEsIDE2MiwgMTc5LCAxLCAyMzIsIDE4NCwgMTc5LCAxMTYsIDUsIDI0MiwgCisgICAgNDQsIDE3OSwgMjUsIDUsIDI1NSwgNzMsIDE3OSwgMjUsIDUsIDczLCAxNzksIDI1LCA1LCAyMzYsIDMzLCAxNzksIDI1LCA1LCAKKyAgICA3MCwgMTc5LCAyNSwgNSwgMjE0LCAxMTgsIDE3OSwgMjUsIDUsIDE0OSwgMTUzLCAxNzksIDI1LCA1LCAxNDksIDIyMiwgCisgICAgMTgwLCAxNzksIDI1LCA1LCAxNDksIDE1NiwgMTc5LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTc5LCAyNSwgNSwgNzUsIAorICAgIDE3OSwgMjUsIDUsIDI0NSwgMjA5LCAxNzksIDI1LCA1LCAyNTQsIDIwMSwgMTc5LCAyNSwgNSwgNzYsIDE3OSwgMjUsIDUsIAorICAgIDIyNiwgMTgzLCAxNzksIDI1LCA1LCAyNTMsIDE5MiwgMTc5LCA1LCAyMTMsIDE1MiwgMTc5LCAyNDgsIDE3OCwgMTc5LCA1MiwgCisgICAgMjQ4LCAxNzgsIDE3OSwgMjEsIDIxMCwgODYsIDE3OSwgMjEsIDExMCwgMTc5LCAyMSwgMTA1LCAxNzksIDIxLCAxNTgsIAorICAgIDE3OSwgMjEsIDE2MSwgMTc5LCAyMSwgMTg5LCAxNzksIDIxLCAxOTQsIDE3OSwgMjEsIDE5OCwgMTc5LCAyMSwgMTk1LCAKKyAgICAxNzksIDIxLCAyMDAsIDM4LCA4NCwgMjEsIDIxMCwgODYsIDM4LCA4NCwgMjEsIDExMCwgMzgsIDg0LCAyMSwgMTA1LCAzOCwgCisgICAgODQsIDIxLCAxNTgsIDM4LCA4NCwgMjEsIDE2MSwgMzgsIDg0LCAyMSwgMTg5LCAzOCwgODQsIDIxLCAxOTQsIDM4LCA4NCwgCisgICAgMjEsIDE5OCwgMzgsIDg0LCAyMSwgMTk1LCAzOCwgODQsIDIxLCAyMDAsIDM4LCA4NCwgMSwgNjEsIDM4LCA4NCwgMSwgNzAsIAorICAgIDM4LCA4NCwgMSwgMTc2LCAzOCwgODQsIDEsIDE5NywgMzgsIDg0LCAxLCAxOTAsIDM4LCA4NCwgMSwgMjA1LCAzOCwgODQsIAorICAgIDEsIDIxMywgMTc2LCAzOCwgODQsIDUsIDI1MywgMTc1LCA4NCwgNSwgMjE5LCAxNywgMjUwLCAyNTUsIDg0LCA1LCAyNTEsIAorICAgIDAsIDIxMywgMTUyLCA4NCwgNSwgNTIsIDI1MSwgMCwgMjEzLCAxNTIsIDg0LCA1LCAyNTEsIDAsIDEwNSwgODQsIDUsIDI1MSwgCisgICAgMCwgMTU4LCA4NCwgNSwgMjUxLCAwLCAyNTMsIDE3NSwgODQsIDUsIDIyNCwgMTI0LCA4NCwgMjQzLCAxMDAsIDI0NCwgMTAzLCAKKyAgICA4NCwgMjUwLCAyMzgsIDg0LCAyNDEsIDIzMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMjEwLCA4NiwgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAyMSwgMTEwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxMDUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIAorICAgIDE1OCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTYxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxODksIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMjEsIDE5NCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTk4LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAKKyAgICAxOTUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDIwMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxNzYsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMSwgMjM0LCAxMzIsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjQzLCAxMzUsIDIzNCwgMTg4LCAyMzIsIAorICAgIDI0MiwgMSwgMjI5LCA3NywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMDYsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjIwLCAKKyAgICAxMDIsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjEwLCAxMTYsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjI3LCAxNjUsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjE3LCAxMDUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjQwLCAyMjYsIDIzNCwgCisgICAgMTg4LCAyMzIsIDI0MiwgMSwgMTk3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE5MCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAKKyAgICAyMjUsIDE0NywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxODQsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjQ4LCAyMjEsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjUyLCAxOTEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjA1LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDE5MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMzMsIDEzNSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAKKyAgICAyMTIsIDY1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxNiwgMjA4LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE2MiwgCisgICAgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTQsIDI3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI1MSwgMzMsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMSwgNjEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjI2LCAyMzQsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgNzMsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjI2LCAxODMsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDIxNCwgMjE0LCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCA3NSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzAsIDIzNCwgMTg4LCAyMzIsIAorICAgIDI0MiwgMjUsIDI0NSwgMjA5LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCA3NiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxMzgsIAorICAgIDIyNSwgMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMTM4LCAyNTEsIDEyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEzOCwgMjUxLCAKKyAgICAxMywgMjI1LCAzMCwgMjM0LCAxODgsIDIzMiwgMjQyLCA1LCAyNDksIDc3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDUsIDIxOSwgCisgICAgMTk5LCAyMjMsIDkzLCAxLCAxNzYsIDIyMywgOTMsIDEsIDI0MywgMTM1LCAyMjMsIDkzLCAxLCAyMjksIDc3LCAyMjMsIDkzLCAKKyAgICAxLCAyMTcsIDEwNSwgMjIzLCA5MywgMSwgMjQ4LCAyMjEsIDIyMywgOTMsIDEsIDE5NywgMjIzLCA5MywgMSwgMTkwLCAyMjMsIAorICAgIDkzLCAxLCAyNTIsIDE5MSwgMjIzLCA5MywgMSwgMTg0LCAyMjMsIDkzLCAxLCAyNTEsIDMzLCAyMjMsIDkzLCAxLCAyMzUsIAorICAgIDE0MSwgMjIzLCA5MywgMSwgMjI3LCAxNjUsIDIyMywgOTMsIDEsIDIwNiwgMjIzLCA5MywgMSwgMjA1LCAyMjMsIDkzLCAxLCAKKyAgICAyMzMsIDEzNSwgMjIzLCA5MywgMSwgMTkxLCAyMjMsIDkzLCAxLCAyMTIsIDY1LCAyMjMsIDkzLCAxLCAxNjIsIDIyMywgOTMsIAorICAgIDEsIDIzMSwgMTI0LCAyMjMsIDkzLCAxLCAyMjksIDU2LCAyMjMsIDkzLCAxLCAyMjksIDE0OCwgMjIzLCA5MywgMSwgMjI3LCAKKyAgICAxMzUsIDIyMywgOTMsIDEsIDYxLCAyMjMsIDkzLCAyNSwgNSwgNzMsIDIyMywgOTMsIDI1LCA1LCA3MCwgMjIzLCA5MywgMjUsIAorICAgIDUsIDc1LCAyMjMsIDkzLCAyNSwgNSwgMjU0LCAyMDEsIDIyMywgOTMsIDI1LCA1LCA3NiwgMjIzLCA5MywgMjUsIDUsIDI1MywgCisgICAgMTkyLCAyMjMsIDkzLCAyNSwgNSwgMjQ1LCA1NSwgMjIzLCA5MywgMjUsIDUsIDI0NSwgMjMzLCAyMjMsIDkzLCAxMTYsIDUsIAorICAgIDIyOSwgNzksIDIyMywgOTMsIDExNiwgNSwgMjMwLCAyNSwgMjIzLCA5MywgMTE2LCA1LCAxNTMsIDIyMywgOTMsIDExNiwgNSwgCisgICAgMjQyLCA2MCwgMjIzLCA5MywgMjEzLCAxNTIsIDIyMywgOTMsIDIyMSwgMTczLCA3OCwgMjQsIDEwMCwgMjE2LCA5NywgMjQsIAorICAgIDEwMCwgMjE2LCA5NiwgMjQsIDEwMCwgMjE2LCA5NCwgMjQsIDEwMCwgMjE2LCA5OSwgMjQsIDEwMCwgMjIzLCAyMSwgMjQsIAorICAgIDEwMCwgMjIzLCA1LCAyNCwgMTAwLCAyMjMsIDAsIDI0LCAxMDAsIDIyMywgMiwgMjQsIDEwMCwgMjIzLCAxOCwgMjQsIDEwMCwgCisgICAgMjIzLCAxMSwgMjQsIDEwMCwgMjIzLCA0LCAyNCwgMTAwLCAyMjMsIDIzLCAyNCwgMTAwLCAyMjMsIDYsIDI0LCAxMDAsIAorICAgIDIyMywgMjUsIDI0LCAxMDAsIDIyMywgMjIsIDI0LCAxMDAsIDIzMCwgMjEzLCAyNCwgMTAwLCAyMzAsIDIwNCwgMjQsIDEwMCwgCisgICAgMjMwLCAyMDcsIDI0LCAxMDAsIDIyNSwgODAsIDI0LCAxMDAsIDIyNSwgOTEsIDI0LCAxMDAsIDIyNSwgOTIsIDI0LCAxMDAsIAorICAgIDIxOCwgMjA3LCAyNCwgMTAwLCAyMzYsIDQ2LCAyNCwgMTAwLCAyMzYsIDUzLCAyNCwgMTAwLCAyMTgsIDIxOCwgMjQsIDEwMCwgCisgICAgMjE4LCAyMDUsIDI0LCAxMDAsIDIyNSwgMTMwLCAyNCwgMTAwLCAyNDEsIDE2NywgMjQsIDEwMCwgMjE4LCAyMDIsIDE1NSwgCisgICAgNSwgMjI2LCAyNywgMTU1LCA1LCAyNTAsIDE4NywgMTU1LCA1LCAyMzMsIDY2LCAxNTUsIDUsIDIxMSwgMjQzLCAxNTUsIDEsIAorICAgIDYxLCAxNTUsIDEsIDI0MCwgMTU0LCAyMzQsIDE5MSwgMTU1LCAxLCA3MywgMTU1LCAxLCAyMzYsIDMzLCAxNTUsIDEsIDcwLCAKKyAgICAxNTUsIDEsIDIyNiwgOTAsIDI1MCwgMTYzLCAxNTUsIDEsIDIyOSwgNzgsIDIzMywgMjgsIDE1NSwgMSwgMjI5LCA3OCwgCisgICAgMjMzLCAyOSwgMjIzLCAxNDIsIDE1NSwgMSwgNzUsIDE1NSwgMSwgMjU0LCAyMDEsIDE1NSwgMSwgNzYsIDE1NSwgMSwgMTc2LCAKKyAgICAxNTUsIDEsIDIzNSwgMTMsIDIyMSwgMjI4LCAxNTUsIDEsIDIzNSwgMTMsIDIzMCwgNjYsIDE1NSwgMSwgMjQzLCAxMzUsIAorICAgIDE1NSwgMSwgMjQzLCAxMzYsIDIzMCwgNjYsIDE1NSwgMSwgMjI5LCA3NywgMTU1LCAxLCAyNTEsIDMzLCAxNTUsIDEsIDI1MSwgCisgICAgMzQsIDIzMCwgNjYsIDE1NSwgMSwgMjM1LCAxNDEsIDE1NSwgMSwgMjI3LCAxNjYsIDIzMCwgNjYsIDE1NSwgMSwgMjM1LCAKKyAgICAxNDIsIDIzMSwgMjA3LCAxNTUsIDEsIDIyNywgMTY1LCAxNTUsIDEsIDIxNSwgMTU2LCAxNTUsIDEsIDIxNSwgMTU3LCAyMzEsIAorICAgIDIwNywgMTU1LCAxLCAyNDgsIDEzNSwgMTU1LCAxLCAyNDgsIDEzNiwgMjMxLCAyMDcsIDE1NSwgMSwgMjI5LCAyMjksIDIzMCwgCisgICAgNjYsIDE1NSwgMSwgMjE3LCAxMDUsIDE1NSwgMSwgMjE3LCAxMDYsIDIzMCwgNjYsIDE1NSwgMSwgMjQ4LCAyMjEsIDE1NSwgCisgICAgMSwgMjQ4LCAyMjIsIDIzMSwgMjA3LCAxNTUsIDEsIDE5NywgMTU1LCAxLCAxOTAsIDE1NSwgMSwgMjI2LCA5MCwgMjMwLCAKKyAgICA2NiwgMTU1LCAxLCAyNTIsIDE5MSwgMTU1LCAxLCAyNTIsIDE5MiwgMjMwLCA2NiwgMTU1LCAxLCAxODQsIDE1NSwgMSwgCisgICAgMTkxLCAxNTUsIDEsIDIwNSwgMTU1LCAxLCAyMjMsIDE4OCwgMjU0LCAyMTAsIDE1NSwgMSwgMjMzLCAxMzUsIDE1NSwgMSwgCisgICAgMjEyLCA2NSwgMTU1LCAxLCAyMjIsIDM0LCAyMzAsIDY2LCAxNTUsIDEsIDIyMiwgMzQsIDIzMSwgMjA3LCAxNTUsIDEsIAorICAgIDIwNiwgMTU1LCAxLCAxNjIsIDE1NSwgNSwgMjUwLCAxODgsIDIxNiwgMjUwLCAxNTUsIDI1LCA1LCAyMTcsIDQ3LCAxNTUsIAorICAgIDI1LCA1LCAyMTYsIDM1LCAxNTUsIDI1LCA1LCAyMTEsIDE5MCwgMTU1LCAyNSwgNSwgMjExLCAxOTEsIDIzMSwgNjksIDE1NSwgCisgICAgMjUsIDUsIDIxOCwgNDcsIDE1NSwgMjUsIDUsIDIxOCwgNDgsIDIzMSwgNTcsIDE1NSwgMjUsIDUsIDIxNywgNjUsIDE1NSwgCisgICAgMjUsIDUsIDI0NywgMTk0LCAyMzAsIDY1LCAxNTUsIDI1LCA1LCAyMjUsIDE4NCwgMTU1LCAxMTYsIDUsIDIzNCwgMTU4LCAKKyAgICAxNTUsIDExNiwgNSwgMjI1LCAxOTYsIDE1NSwgMTE2LCA1LCAyNTEsIDE5LCAxNTUsIDIyNiwgNDAsIDE1NSwgNDMsIDIyMywgCisgICAgNjksIDE1NSwgNDQsIDIyMywgNjksIDE1NSwgMjI2LCA3OSwgMjU0LCAxMTcsIDE1NSwgMjI2LCA3OSwgMjMxLCAyMjQsIAorICAgIDE1NSwgMjI2LCA3OSwgMjMyLCA4OCwgMTU1LCAyMjYsIDc5LCAyMTEsIDIzOCwgMTU1LCAyMjYsIDc5LCAyMjYsIDQxLCAKKyAgICAxNTUsIDIyNiwgNzksIDIzMiwgMjA1LCAxNTUsIDIyNiwgNzksIDIzMiwgODIsIDE1NSwgMjI2LCA3OSwgMjU0LCAyNDksIAorICAgIDE1NSwgMjI2LCA3OSwgMjU0LCAyNTAsIDI1NCwgMjQ5LCAxNTUsIDIyNiwgNzksIDIyNSwgNTEsIDE1NSwgMjE1LCA5NCwgCisgICAgMjI2LCA3OSwgMjI1LCA1MSwgMTU1LCAyMjYsIDM2LCAxNTUsIDIxLCAyMTAsIDg2LCAxNTUsIDIxLCAxMTAsIDE1NSwgMjEsIAorICAgIDEwNSwgMTU1LCAyMSwgMTU4LCAxNTUsIDIxLCAxNjEsIDE1NSwgMjEsIDE4OSwgMTU1LCAyMSwgMTk0LCAxNTUsIDIxLCAKKyAgICAxOTgsIDE1NSwgMjEsIDE5NSwgMTU1LCAyMSwgMjAwLCAxNTUsIDIyNiwgNzksIDIxNiwgNjksIDIxNSwgMTA2LCAxNTUsIAorICAgIDIyNiwgNzksIDIzNSwgMTY3LCAxNzIsIDEsIDYxLCAxNzIsIDEsIDczLCAxNzIsIDEsIDcwLCAxNzIsIDEsIDc1LCAxNzIsIAorICAgIDEsIDI1NCwgMjAxLCAxNzIsIDEsIDc2LCAxNzIsIDEsIDE3NiwgMTcyLCAxLCAyMzQsIDEzMiwgMTcyLCAxLCAyNDMsIDEzNSwgCisgICAgMTcyLCAxLCAyNDIsIDI0OSwgMTcyLCAxLCAyMjgsIDI0NSwgMTcyLCAxLCAyMjksIDc3LCAxNzIsIDEsIDI1MCwgMTU3LCAKKyAgICAxNzIsIDEsIDI1MCwgMTEyLCAxNzIsIDEsIDIzNSwgMTQxLCAxNzIsIDEsIDIzNSwgMTE0LCAxNzIsIDEsIDIyOCwgMjM1LCAKKyAgICAxNzIsIDEsIDIyOCwgMjM3LCAxNzIsIDEsIDIyOCwgMjM2LCAxNzIsIDEsIDIxNywgMTA1LCAxNzIsIDEsIDIxNiwgMjA4LCAKKyAgICAxNzIsIDEsIDI0OCwgMjIxLCAxNzIsIDEsIDI0OCwgMjUsIDE3MiwgMSwgMjI3LCAyMDcsIDE3MiwgMSwgMTk3LCAxNzIsIDEsIAorICAgIDI0OCwgMTM1LCAxNzIsIDEsIDE5MCwgMTcyLCAxLCAyMjQsIDIyMCwgMTcyLCAxLCAyMjUsIDE0NywgMTcyLCAxLCAyNTIsIAorICAgIDE5MSwgMTcyLCAxLCAyNTIsIDE4LCAxNzIsIDEsIDIzMCwgOTUsIDE3MiwgMSwgMTg0LCAxNzIsIDEsIDI1MiwgMTExLCAKKyAgICAxNzIsIDEsIDE5MSwgMTcyLCAxLCAyMDUsIDE3MiwgMSwgMjMzLCAxMzUsIDE3MiwgMSwgMjE0LCAyNywgMTcyLCAxLCAyMTgsIAorICAgIDIyMywgMTcyLCAxLCAyMDYsIDE3MiwgMSwgMTYyLCAxNzIsIDI1LCA1LCAyNTUsIDczLCAxNzIsIDI1LCA1LCA3MywgMTcyLCAKKyAgICAyNSwgNSwgMjM2LCAzMywgMTcyLCAyNSwgNSwgMjQ1LCAxOTUsIDE3MiwgMjUsIDUsIDcwLCAxNzIsIDI1LCA1LCAyMjYsIAorICAgIDIzNCwgMTcyLCAyNSwgNSwgNzYsIDE3MiwgMjUsIDUsIDI1NCwgMjAxLCAxNzIsIDI1LCA1LCAyNTMsIDE5MiwgMTcyLCAyNSwgCisgICAgNSwgMjE0LCAyMTQsIDE3MiwgMTE2LCA1LCAxOTEsIDE3MiwgMTE2LCA1LCAyMDUsIDE3MiwgMTE2LCA1LCAyMzMsIDEzNSwgCisgICAgMTcyLCAxMTYsIDUsIDIxMiwgNjUsIDE3MiwgMSwgNDAsIDIzNSwgMjMsIDE3MiwgMSwgNDAsIDI0MywgMjAyLCAxNzIsIDEsIAorICAgIDQwLCAyMjksIDc5LCAxNzIsIDExNiwgNSwgNDAsIDIyOSwgNzksIDE3MiwgMSwgNDAsIDI1MCwgMTU4LCAxNzIsIDEsIDQwLCAKKyAgICAyMTcsIDE1MiwgMTcyLCAxLCA0MCwgMjMwLCAyNSwgMTcyLCAxLCA0MCwgMjI2LCAxMDUsIDE3MiwgMSwgNDAsIDIxMSwgCisgICAgMTE3LCAxNzIsIDEsIDQwLCAxNTMsIDE3MiwgMSwgNDAsIDE1NiwgMTcyLCAxLCA0MCwgMjE4LCAyMjYsIDE3MiwgMTE2LCA1LCAKKyAgICA0MCwgMTkzLCAxNzIsIDExNiwgNSwgNDAsIDI0MiwgNjAsIDE3MiwgMjEsIDIxMCwgODYsIDE3MiwgMjEsIDExMCwgMTcyLCAKKyAgICAyMSwgMTA1LCAxNzIsIDIxLCAxNTgsIDE3MiwgMjEsIDE2MSwgMTcyLCAyMSwgMTg5LCAxNzIsIDIxLCAxOTQsIDE3MiwgMjEsIAorICAgIDE5OCwgMTcyLCAyMSwgMTk1LCAxNzIsIDIxLCAyMDAsIDE3MiwgMjI0LCAxNDEsIDIxOCwgMjUxLCAxNzIsIDIyNCwgMTQxLCAKKyAgICAyNDgsIDE3OCwgMTcyLCAyMjQsIDE0MSwgNTIsIDI0OCwgMTc4LCAxNzIsIDIyNCwgMTQxLCAyMTUsIDIxMSwgMjQ4LCAxNzgsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjQzLCAxMzUsIDY4LCAxLCAyMzQsIDEyNiwgMjUxLCAzMywgNjgsIDEsIDIzNCwgMTI2LCAKKyAgICAyNTAsIDE1NywgNjgsIDEsIDIzNCwgMTI2LCAyMzUsIDE0MSwgNjgsIDEsIDIzNCwgMTI2LCAyMzUsIDExNCwgNjgsIDEsIAorICAgIDIzNCwgMTI2LCAyMjcsIDE2NSwgNjgsIDEsIDIzNCwgMTI2LCAyMTUsIDE1NiwgNjgsIDEsIDIzNCwgMTI2LCAyMTUsIDE0NCwgCisgICAgNjgsIDEsIDIzNCwgMTI2LCAyNDgsIDEzNSwgNjgsIDEsIDIzNCwgMTI2LCAyNDgsIDExOSwgNjgsIDEsIDIzNCwgMTI2LCAKKyAgICAyNDgsIDI1LCA2OCwgMSwgMjM0LCAxMjYsIDE5NywgNjgsIDEsIDIzNCwgMTI2LCAyMDYsIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMTYyLCA2OCwgMSwgMjM0LCAxMjYsIDI0MSwgMTg5LCA2OCwgMSwgMjM0LCAxMjYsIDI0NCwgMTk2LCA2OCwgNTgsIDEsIAorICAgIDIzNCwgMTI2LCAyMjMsIDEwOSwgNjgsIDEsIDIzNCwgMTI2LCAyMTEsIDE2NSwgNjgsIDEsIDIzNCwgMTI2LCAyMTAsIDExNiwgCisgICAgNjgsIDEsIDIzNCwgMTI2LCAyMDUsIDY4LCAyMzIsIDE0NSwgMjM0LCAxMjYsIDIyNiwgMjUzLCA2OCwgMjMyLCAxNDUsIAorICAgIDIzNCwgMTI2LCAyMjQsIDQzLCA2OCwgMjMyLCAxNDUsIDIzNCwgMTI2LCAyNDEsIDEyMSwgNjgsIDE2LCAyNTQsIDE5MCwgCisgICAgMjQ1LCAzMCwgNjgsIDE2LCAyNTQsIDE5MCwgMTEwLCA2OCwgMTYsIDI1NCwgMTkwLCAxMDUsIDY4LCAxLCAyNTQsIDE5MCwgCisgICAgMjA1LCA2OCwgNSwgMjI2LCAyMywgMjM0LCAyMTMsIDIxNiwgMzAsIDM5LCAyMDgsIDEsIDEyMSwgMjM0LCAyOCwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMzQsIDI4LCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMTA1LCAzOSwgMjA4LCAxLCAxMjUsIDIzNCwgCisgICAgMTA1LCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMTE0LCAzOSwgMjA4LCAxLCAxMjUsIDIzNCwgMTE0LCAzOSwgMjA4LCAxLCAKKyAgICAxMjEsIDI0MiwgMTc0LCAzOSwgMjA4LCAxLCAxMjUsIDI0MiwgMTc0LCAzOSwgMjA4LCAxLCAxMjEsIDIyOSwgNCwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMjksIDQsIDM5LCAyMDgsIDEsIDEyMSwgMjQ5LCAyMzgsIDM5LCAyMDgsIDEsIDEyNSwgMjQ5LCAKKyAgICAyMzgsIDM5LCAyMDgsIDEsIDEyMSwgMjUwLCA4NiwgMzksIDIwOCwgMSwgMTI1LCAyNTAsIDg2LCAzOSwgMjA4LCAxLCAxMjEsIAorICAgIDIxOSwgNTgsIDM5LCAyMDgsIDEsIDEyNSwgMjE5LCA1OCwgMzksIDIwOCwgMSwgMTIxLCAyMjcsIDEzNCwgMzksIDIwOCwgMSwgCisgICAgMTI1LCAyMjcsIDEzNCwgMzksIDIwOCwgMSwgMTIxLCAyNDcsIDE0NSwgMzksIDIwOCwgMSwgMTI1LCAyNDcsIDE0NSwgMzksIAorICAgIDIwOCwgMSwgMTIxLCAxMTEsIDM5LCAyMDgsIDEsIDEyNSwgMTExLCAzOSwgMjA4LCAxLCAxMjEsIDIxNiwgMTU2LCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIxNiwgMTU2LCAzOSwgMjA4LCAxLCAxMjEsIDIyOCwgNzQsIDM5LCAyMDgsIDEsIDEyNSwgMjI4LCAKKyAgICA3NCwgMzksIDIwOCwgMSwgMTIxLCAyNTEsIDIwNSwgMzksIDIwOCwgMSwgMTI1LCAyNTEsIDIwNSwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyMjUsIDE2LCAzOSwgMjA4LCAxLCAxMjUsIDIyNSwgMTYsIDM5LCAyMDgsIDEsIDEyMSwgMjI1LCAxMjEsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjI1LCAxMjEsIDM5LCAyMDgsIDEsIDEyMSwgMjQ0LCA0MywgMzksIDIwOCwgMSwgMTI1LCAyNDQsIAorICAgIDQzLCAzOSwgMjA4LCAxLCAxMjEsIDIzMCwgMTYxLCAzOSwgMjA4LCAxLCAxMjUsIDIzMCwgMTYxLCAzOSwgMjA4LCAxLCAKKyAgICAxMjEsIDIxMCwgMjQ0LCAzOSwgMjA4LCAxLCAxMjUsIDIxMCwgMjQ0LCAzOSwgMjA4LCAxLCAxMjEsIDIyMiwgMjExLCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIyMiwgMjExLCAzOSwgMjA4LCAxLCAxMjEsIDIzMiwgMTU2LCAzOSwgMjA4LCAxLCAxMjUsIDIzMiwgCisgICAgMTU2LCAzOSwgMjA4LCAxLCAxMjEsIDIxMywgMTM4LCAzOSwgMjA4LCAxLCAxMjUsIDIxMywgMTM4LCAzOSwgMjA4LCAxLCAKKyAgICAxMjEsIDI0MSwgNjgsIDM5LCAyMDgsIDEsIDEyNSwgMjQxLCA2OCwgMzksIDIwOCwgMSwgMTIxLCA3NiwgMzksIDIwOCwgMSwgCisgICAgMTI1LCA3NiwgMzksIDIwOCwgMjMxLCAyMDQsIDIzNCwgMjMwLCAzOSwgMjA4LCAyNSwgMjU1LCA3MywgMzksIDIwOCwgMjUsIAorICAgIDczLCAzOSwgMjA4LCAyNSwgMjE0LCAyMTQsIDM5LCAyMDgsIDI1LCA3MCwgMzksIDIwOCwgMjUsIDc1LCAzOSwgMjA4LCAyNSwgCisgICAgNzYsIDM5LCAyMDgsIDIzMSwgMjA0LCAyMzQsIDEwOCwgMzksIDIwOCwgMjUsIDI0MCwgMTE5LCAzOSwgMjA4LCAyNSwgMjE0LCAKKyAgICAyMTMsIDM5LCAyMDgsIDI1LCAyMTQsIDIyOSwgMzksIDIwOCwgMjUsIDI1MywgMTkwLCAzOSwgMjA4LCAyNSwgMjUzLCAxNjcsIAorICAgIDM5LCAyMDgsIDI1LCAyNTQsIDEyMywgMzksIDIwOCwgMjUsIDI1NCwgMTM2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAKKyAgICAyNDUsIDE4MCwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgMjI3LCAyMDYsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIDIxNiwgCisgICAgMTU2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAyMTksIDQyLCAzOSwgMjA4LCAxNiwgMjM0LCAxMywgMzksIDIwOCwgMTYsIAorICAgIDIyNywgMjA2LCAzOSwgMjA4LCAxNiwgMjIxLCAyNTMsIDM5LCAyMDgsIDE2LCAyNDEsIDY5LCAyNDEsIDY0LCAzOSwgMjA4LCAKKyAgICAxNiwgMjM0LCAyMiwgMjM0LCAyMSwgMTg2LCAxODUsIDEsIDc1LCAxODYsIDE4NSwgMSwgNzYsIDE4NiwgMTg1LCAxLCAyNTAsIAorICAgIDE1NywgMTg2LCAxODUsIDEsIDIyNywgMTY1LCAxODYsIDE4NSwgMSwgMjE1LCAxNTYsIDE4NiwgMTg1LCAxLCAyMTUsIDE0NCwgCisgICAgMTg2LCAxODUsIDEsIDI0OCwgMTM1LCAxODYsIDE4NSwgMSwgMjQ4LCAxMTksIDE4NiwgMTg1LCAxLCAyMjgsIDExMCwgMTg2LCAKKyAgICAxODUsIDEsIDIyMCwgMTAyLCAxODYsIDE4NSwgMSwgMjE4LCAyMjMsIDE4NiwgMTg1LCAyNSwgNSwgMjM2LCAzMywgMTg2LCAKKyAgICAxODUsIDI1LCA1LCAyMTQsIDExOCwgMTg2LCAxODUsIDI1LCA1LCAyNTUsIDM3LCAxODYsIDE4NSwgMjUsIDUsIDI1MywgCisgICAgMTkyLCAxODYsIDE4NSwgMjUsIDUsIDI1NSwgMzAsIDE4NiwgMTg1LCAyNTAsIDEyNSwgMTg2LCAxODUsIDI1NCwgMjA2LCAKKyAgICAyMzQsIDk4LCAxODYsIDE4NSwgMjU0LCAxMDMsIDE4NiwgMTg1LCAzLCAyMjMsIDc0LCA3OCwgMTg2LCAxODUsIDIxMSwgCisgICAgMjA5LCAyMjMsIDc0LCA3OCwgMTg2LCAxODUsIDI1LCA1LCAyMTMsIDE0NywgMTg2LCAxODUsIDIxMywgMTUyLCAyOSwgMywgCisgICAgMjE1LCAxMzcsIDI5LCAzLCAyMTUsIDE0MCwgMjksIDMsIDIxNSwgMTQzLCAyOSwgMywgMjE1LCAxNDEsIDI5LCAzLCAyMTUsIAorICAgIDE0MiwgMjksIDMsIDIxNSwgMTM5LCAyOSwgMywgMjQ4LCAxMTMsIDI5LCAzLCAyNDgsIDExNSwgMjksIDMsIDI0OCwgMTE4LCAKKyAgICAyOSwgMywgMjQ4LCAxMTYsIDI5LCAzLCAyNDgsIDExNywgMjksIDMsIDI0OCwgMTE0LCAyOSwgMywgMjQ2LCAyOCwgMjksIDMsIAorICAgIDI0NiwgMzEsIDI5LCAzLCAyNDYsIDM3LCAyOSwgMywgMjQ2LCAzNSwgMjksIDMsIDI0NiwgMzYsIDI5LCAzLCAyNDYsIDI5LCAKKyAgICAyOSwgMywgMjUwLCAyMDQsIDI5LCAzLCAyNTAsIDE5OCwgMjksIDMsIDI1MCwgMjAwLCAyOSwgMywgMjUwLCAyMDMsIDI5LCAKKyAgICAzLCAyNTAsIDIwMSwgMjksIDMsIDI1MCwgMjAyLCAyOSwgMywgMjUwLCAxOTksIDI5LCAzLCAyNTIsIDExMSwgMjksIDMsIAorICAgIDI1MiwgOTAsIDI5LCAzLCAyNTIsIDEwMiwgMjksIDMsIDI1MiwgMTEwLCAyOSwgMywgMjUyLCAxMDUsIDI5LCAzLCAyNTIsIAorICAgIDEwNiwgMjksIDMsIDI1MiwgOTQsIDE4NiwgMTg1LCAxLCAyMzQsIDE5LCAxODYsIDE4NSwgMSwgMjIxLCAyNTMsIDE4NiwgCisgICAgMTg1LCAxLCAyMzMsIDEwOSwgMTg2LCAxODUsIDEsIDIzMCwgMTcyLCAxODYsIDE4NSwgMSwgMTkwLCAxODYsIDE4NSwgMSwgCisgICAgMTk3LCAxODYsIDE4NSwgMSwgMjUwLCAxMDIsIDE4NiwgMTg1LCAxLCAyMTYsIDkwLCAxODYsIDE4NSwgMSwgMjM0LCAxMDEsIAorICAgIDE4NiwgMTg1LCAxLCAyMjgsIDI1MCwgMTg2LCAxODUsIDEsIDIxNiwgMTUwLCAxODYsIDE4NSwgMSwgMjEyLCA2MCwgMTg2LCAKKyAgICAxODUsIDEsIDIxMSwgNjksIDE4NiwgMTg1LCAxLCAyNDAsIDIxNiwgMTg2LCAxODUsIDEsIDIxNCwgMTkwLCAxODYsIDE4NSwgCisgICAgMSwgNzMsIDE4NiwgMTg1LCAxLCAyMjUsIDE0MiwgMTg2LCAxODUsIDEsIDI1MywgMjAyLCAxODYsIDE4NSwgMSwgMjQyLCAKKyAgICAxNjcsIDE4NiwgMTg1LCAxLCAyMzUsIDExMiwgMTg2LCAxODUsIDEsIDIyMywgMTY2LCAxODYsIDE4NSwgMSwgMjUyLCAxOTEsIAorICAgIDE4NiwgMTg1LCAxLCAyMzUsIDEwMCwgMTg2LCAxODUsIDEsIDI0NywgMjE5LCAxODYsIDE4NSwgMSwgMjQyLCAyMjEsIDE4NiwgCisgICAgMTg1LCAxLCAyNDgsIDUsIDE4NiwgMTg1LCAxLCAyNTIsIDE2LCAxODYsIDE4NSwgMSwgMjM0LCAyMCwgMjMyLCAxMjgsIAorICAgIDE4NiwgMTg1LCAxLCAyMzMsIDExMCwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyMzAsIDE3MywgMjMyLCAxMjgsIDE4NiwgCisgICAgMTg1LCAxLCAyMjYsIDkwLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDIyOSwgMjI5LCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIAorICAgIDIxNiwgOTEsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjI4LCAyNTEsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjQwLCAKKyAgICAxNTQsIDIzMiwgMTI4LCAxODYsIDE4NSwgMjUsIDUsIDIyNiwgMTk1LCAxODYsIDE4NSwgMjUsIDUsIDIzNSwgMjUzLCAxODYsIAorICAgIDE4NSwgMjUsIDUsIDI1NCwgMTIyLCAxODYsIDE4NSwgMjUsIDUsIDIxMSwgMzgsIDE4NiwgMTg1LCAyNSwgNSwgMjE5LCAzMiwgCisgICAgMTg2LCAxODUsIDI1LCA1LCAyMTQsIDE4NywgMTg2LCAxODUsIDI1LCA1LCAyNTAsIDEyMywgMTg2LCAxODUsIDI1LCA1LCAKKyAgICAyMjcsIDE5MSwgMTg2LCAxODUsIDI1MCwgMTI0LCAxODYsIDE4NSwgMjMyLCA4NSwgMjM1LCAxNTAsIDE4NiwgMTg1LCAyNTQsIAorICAgIDQ2LCAyMzUsIDE1MCwgMTg2LCAxODUsIDIxLCAyMTAsIDg2LCAxODYsIDE4NSwgMjEsIDExMCwgMTg2LCAxODUsIDIxLCAKKyAgICAxMDUsIDE4NiwgMTg1LCAyMSwgMTU4LCAxODYsIDE4NSwgMjEsIDE2MSwgMTg2LCAxODUsIDIxLCAxODksIDE4NiwgMTg1LCAKKyAgICAyMSwgMTk0LCAxODYsIDE4NSwgMjEsIDE5OCwgMTg2LCAxODUsIDIxLCAxOTUsIDE4NiwgMTg1LCAyMSwgMjAwLCAyNCwgCisgICAgMTQzLCAyMjcsIDc3LCAyNCwgMTQzLCAyMjcsIDgyLCAyNCwgMTQzLCAyMTAsIDI0MywgMjQsIDE0MywgMjEwLCAyNDIsIDI0LCAKKyAgICAxNDMsIDIxMCwgMjQxLCAyNCwgMTQzLCAyMTUsIDIzLCAyNCwgMTQzLCAyMTUsIDI2LCAyNCwgMTQzLCAyMTAsIDIxMCwgMjQsIAorICAgIDE0MywgMjEwLCAyMDYsIDI0LCAxNDMsIDI0NSwgNTQsIDI0LCAxNDMsIDI0NSwgNTIsIDI0LCAxNDMsIDI0NSwgNTMsIDI0LCAKKyAgICAxNDMsIDI0NSwgNTAsIDI0LCAxNDMsIDI0MCwgMTQ0LCAyNCwgMTQzLCAyNDAsIDE0MywgMjQsIDE0MywgMjQwLCAxNDEsIAorICAgIDI0LCAxNDMsIDI0MCwgMTQyLCAyNCwgMTQzLCAyNDAsIDE0NywgMjQsIDE0MywgMjQwLCAxNDAsIDI0LCAxNDMsIDI0MCwgCisgICAgMTM5LCAyNCwgMTQzLCAyNDAsIDE0OSwgMjQsIDE0MywgMjU0LCAzMywgMjQsIDE0MywgMjU0LCAzMiwgMjQsIDkwLCAyMjgsIAorICAgIDIxOSwgMjQsIDkwLCAyMjgsIDIyNSwgMjQsIDkwLCAyMTgsIDIwNCwgMjQsIDkwLCAyMTgsIDIwMywgMjQsIDkwLCAyMTYsIAorICAgIDk2LCAyNCwgOTAsIDIxNiwgOTQsIDI0LCA5MCwgMjE2LCA5MywgMjQsIDkwLCAyMTYsIDk5LCAyNCwgOTAsIDIxNiwgMTAwLCAKKyAgICAyNCwgOTAsIDIxNiwgOTIsIDI0LCA5MCwgMjIzLCA1LCAyNCwgOTAsIDIyMywgMjAsIDI0LCA5MCwgMjE4LCAyMTAsIDI0LCAKKyAgICA5MCwgMjIzLCAxNywgMjQsIDkwLCAyMjMsIDcsIDI0LCA5MCwgMjIzLCA5LCAyNCwgOTAsIDIyMiwgMjUyLCAyNCwgOTAsIAorICAgIDIyMiwgMjUzLCAyNCwgOTAsIDIzNCwgMjE4LCAyNCwgOTAsIDIzMCwgMjEyLCAyNCwgOTAsIDIzMCwgMjA2LCAyNCwgOTAsIAorICAgIDIxOCwgMjE0LCAyNCwgOTAsIDIzMCwgMjA5LCAyNCwgOTAsIDIzMCwgMjE1LCAyNCwgOTAsIDIyNSwgNzYsIDI0LCA5MCwgCisgICAgMjI1LCA4NSwgMjQsIDkwLCAyMjUsIDg5LCAyNCwgOTAsIDIxOCwgMjEyLCAyNCwgOTAsIDIyNSwgNzksIDI0LCA5MCwgMjI1LCAKKyAgICA5MywgMjQsIDkwLCAyMjUsIDk0LCAyNCwgOTAsIDIxOSwgMTQwLCAyNCwgOTAsIDIxOSwgMTQzLCAyNCwgOTAsIDIxOCwgCisgICAgMjA4LCAyNCwgOTAsIDIxOCwgMjA2LCAyNCwgOTAsIDIxOSwgMTM4LCAyNCwgOTAsIDIxOSwgMTQ2LCAyNCwgOTAsIDIxOSwgCisgICAgMTQ3LCAyNCwgOTAsIDIxOSwgMTMyLCAyNCwgOTAsIDIxOSwgMTQ1LCAyNCwgOTAsIDIyNiwgMzAsIDI0LCA5MCwgMjI2LCAKKyAgICAzMSwgMjQsIDkwLCAyMTEsIDI0LCAyNCwgOTAsIDIxMSwgMjUsIDI0LCA5MCwgMjUwLCA0NCwgMjQsIDkwLCAyNTAsIDQzLCAKKyAgICAyNCwgOTAsIDIxOCwgMjE5LCAyNCwgOTAsIDIyNSwgMTI4LCAyNCwgOTAsIDIyNSwgMTI3LCA5LCAxNCwgMjM4LCAyNCwgOSwgCisgICAgMTQsIDIzOCwgMjMsIDksIDE0LCAyMzgsIDIyLCA5LCAxNCwgMjM4LCAyMSwgOSwgMTQsIDIzOCwgMjAsIDksIDE0LCAyMzgsIAorICAgIDE5LCA5LCAxNCwgMjM4LCAxOCwgOSwgMTQsIDIzOCwgMTcsIDksIDE0LCAyMzgsIDE2LCA5LCAxNCwgMjM4LCAxNSwgOSwgCisgICAgMTQsIDIzOCwgMTQsIDksIDE0LCAyMzgsIDEzLCA5LCAxNCwgMjM4LCAxMiwgOSwgMTQsIDIzOCwgMTEsIDksIDE0LCAyMzgsIAorICAgIDEwLCA5LCAxNCwgMjM4LCA5LCA5LCAxNCwgMjM4LCA4LCA5LCAxNCwgMjM4LCA3LCA5LCAxNCwgMjM4LCA2LCA5LCAxNCwgCisgICAgMjM4LCA1LCA5LCAxNCwgMjM4LCA0LCA5LCAxNCwgMjM4LCAzLCA5LCAxNCwgMjM4LCAyLCA5LCAxNCwgMjM4LCAxLCA5LCAKKyAgICAxNCwgMjM4LCAwLCA5LCAxNCwgMjM3LCAyNTUsIDksIDE0LCAyMzcsIDI1NCwgOSwgMTQsIDIzNywgMjUzLCA5LCAxNCwgCisgICAgMjM3LCAyNTIsIDksIDE0LCAyMzcsIDI1MSwgOSwgMTQsIDIzNywgMjUwLCA5LCAxNCwgMjM3LCAyNDksIDksIDE0LCAyMzcsIAorICAgIDI0OCwgOSwgMTQsIDIzNywgMjQ3LCA5LCAxNCwgMjM3LCAyNDYsIDksIDE0LCAyMzcsIDI0NSwgOSwgMTQsIDIzNywgMjQ0LCAKKyAgICA5LCAxNCwgMjM3LCAyNDMsIDksIDE0LCAyMzcsIDI0MiwgOSwgMTQsIDIzNywgMjQxLCA5LCAxNCwgMjM3LCAyNDAsIDksIAorICAgIDE0LCAyMzcsIDIzOSwgOSwgMTQsIDIzNywgMjM4LCA5LCAxNCwgMjM3LCAyMzcsIDksIDE0LCAyMzcsIDIzNiwgOSwgMTQsIAorICAgIDIzNywgMjM1LCA5LCAxNCwgMjM3LCAyMzQsIDksIDE0LCAyMzcsIDIzMywgOSwgMTQsIDIzNywgMjMyLCA5LCAxNCwgMjM3LCAKKyAgICAyMzEsIDksIDE0LCAyMzcsIDIzMCwgOSwgMTQsIDIzNywgMjI5LCA5LCAxNCwgMjM3LCAyMjgsIDksIDE0LCAyMzcsIDIyNywgCisgICAgOSwgMTQsIDIzNywgMjI2LCA5LCAxNCwgMjM3LCAyMjUsIDksIDE0LCAyMzcsIDIyNCwgOSwgMTQsIDIzNywgMjIzLCA5LCAKKyAgICAxNCwgMjM3LCAyMjIsIDksIDE0LCAyMzcsIDIyMSwgOSwgMTQsIDIzNywgMjIwLCA5LCAxNCwgMjM3LCAyMTksIDksIDE0LCAKKyAgICAyMzcsIDIxOCwgOSwgMTQsIDIzNywgMjE3LCA5LCAxNCwgMjM3LCAyMTYsIDksIDE0LCAyMzcsIDIxNSwgOSwgMTQsIDIzNywgCisgICAgMjE0LCA5LCAxNCwgMjM3LCAyMTMsIDksIDE0LCAyMzcsIDIxMiwgOSwgMTQsIDIzNywgMjExLCA5LCAxNCwgMjM3LCAyMTAsIAorICAgIDksIDE0LCAyMzcsIDIwOSwgOSwgMTQsIDIzNywgMjA4LCA5LCAxNCwgMjM3LCAyMDcsIDksIDE0LCAyMzcsIDIwNiwgOSwgCisgICAgMTQsIDIzNywgMjA1LCA5LCAxNCwgMjM3LCAyMDQsIDksIDE0LCAyMzcsIDIwMywgOSwgMTQsIDIzNywgMjAyLCA5LCAxNCwgCisgICAgMjM3LCAyMDEsIDksIDE0LCAyMzcsIDIwMCwgOSwgMTQsIDIzNywgMTk5LCA5LCAxNCwgMjM3LCAxOTgsIDksIDE0LCAyMzcsIAorICAgIDE5NywgOSwgMTQsIDIzNywgMTk2LCA5LCAxNCwgMjM3LCAxOTUsIDksIDE0LCAyMzcsIDE5NCwgOSwgMTQsIDIzNywgMTkzLCAKKyAgICA5LCAxNCwgMjM3LCAxOTIsIDksIDE0LCAyMzcsIDE5MSwgOSwgMTQsIDIzNywgMTkwLCA5LCAxNCwgMjM3LCAxODksIDksIAorICAgIDE0LCAyMzcsIDE4OCwgOSwgMTQsIDIzNywgMTg3LCA5LCAxNCwgMjM3LCAxODYsIDksIDE0LCAyMzcsIDE4NSwgOSwgMTQsIAorICAgIDIzNywgMTg0LCA5LCAxNCwgMjM3LCAxODMsIDksIDE0LCAyMzcsIDE4MiwgOSwgMTQsIDIzNywgMTgxLCA5LCAxNCwgMjM3LCAKKyAgICAxODAsIDksIDE0LCAyMzcsIDE3OSwgOSwgMTQsIDIzNywgMTc4LCA5LCAxNCwgMjM3LCAxNzcsIDksIDE0LCAyMzcsIDE3NiwgCisgICAgOSwgMTQsIDIzNywgMTc1LCA5LCAxNCwgMjM3LCAxNzQsIDksIDE0LCAyMzcsIDE3MywgOSwgMTQsIDIzNywgMTcyLCA5LCAKKyAgICAxNCwgMjM3LCAxNzEsIDksIDE0LCAyMzcsIDE3MCwgOSwgMTQsIDIzNywgMTY5LCA5LCAxNCwgMjM3LCAxNjgsIDksIDE0LCAKKyAgICAyMzcsIDE2NywgOSwgMTQsIDIzNywgMTY2LCA5LCAxNCwgMjM3LCAxNjUsIDksIDE0LCAyMzcsIDE2NCwgOSwgMTQsIDIzNywgCisgICAgMTYzLCA5LCAxNCwgMjM3LCAxNjIsIDksIDE0LCAyMzcsIDE2MSwgOSwgMTQsIDIzNywgMTYwLCA5LCAxNCwgMjM3LCAxNTksIAorICAgIDksIDE0LCAyMzcsIDE1OCwgOSwgMTQsIDIzNywgMTU3LCA5LCAxNCwgMjM3LCAxNTYsIDksIDE0LCAyMzcsIDE1NSwgOSwgCisgICAgMTQsIDIzNywgMTU0LCA5LCAxNCwgMjM3LCAxNTMsIDksIDE0LCAyMzcsIDE1MiwgOSwgMTQsIDIzNywgMTUxLCA5LCAxNCwgCisgICAgMjM3LCAxNTAsIDksIDE0LCAyMzcsIDE0OSwgOSwgMTQsIDIzNywgMTQ4LCA5LCAxNCwgMjM3LCAxNDcsIDksIDE0LCAyMzcsIAorICAgIDE0NiwgOSwgMTQsIDIzNywgMTQ1LCA5LCAxNCwgMjM3LCAxNDQsIDksIDE0LCAyMzcsIDE0MywgOSwgMTQsIDIzNywgMTQyLCAKKyAgICA5LCAxNCwgMjM3LCAxNDEsIDksIDE0LCAyMzcsIDE0MCwgOSwgMTQsIDIzNywgMTM5LCA5LCAxNCwgMjM3LCAxMzgsIDksIAorICAgIDE0LCAyMzcsIDEzNywgOSwgMTQsIDIzNywgMTM2LCA5LCAxNCwgMjM3LCAxMzUsIDksIDE0LCAyMzcsIDEzNCwgOSwgMTQsIAorICAgIDIzNywgMTMzLCA5LCAxNCwgMjM3LCAxMzIsIDksIDE0LCAyMzcsIDEzMSwgOSwgMTQsIDIzNywgMTMwLCA5LCAxNCwgMjM3LCAKKyAgICAxMjksIDksIDE0LCAyMzcsIDEyOCwgOSwgMTQsIDIzNywgMTI3LCA5LCAxNCwgMjM3LCAxMjYsIDksIDE0LCAyMzcsIDEyNSwgCisgICAgOSwgMTQsIDIzNywgMTI0LCA5LCAxNCwgMjM3LCAxMjMsIDksIDE0LCAyMzcsIDEyMiwgOSwgMTQsIDIzNywgMTIxLCA5LCAKKyAgICAxNCwgMjM3LCAxMjAsIDksIDE0LCAyMzcsIDExOSwgOSwgMTQsIDIzNywgMTE4LCA5LCAxNCwgMjM3LCAxMTcsIDksIDE0LCAKKyAgICAyMzcsIDExNiwgOSwgMTQsIDIzNywgMTE1LCA5LCAxNCwgMjM3LCAxMTQsIDksIDE0LCAyMzcsIDExMywgOSwgMTQsIDIzNywgCisgICAgMTEyLCA5LCAxNCwgMjM3LCAxMTEsIDksIDE0LCAyMzcsIDExMCwgOSwgMTQsIDIzNywgMTA5LCA5LCAxNCwgMjM3LCAxMDgsIAorICAgIDksIDE0LCAyMzcsIDEwNywgOSwgMTQsIDIzNywgMTA2LCA5LCAxNCwgMjM3LCAxMDUsIDksIDE0LCAyMzcsIDEwNCwgOSwgCisgICAgMTQsIDIzNywgMTAzLCA5LCAxNCwgMjM3LCAxMDIsIDksIDE0LCAyMzcsIDEwMSwgOSwgMTQsIDIzNywgMTAwLCA5LCAxNCwgCisgICAgMjM3LCA5OSwgOSwgMTQsIDIzNywgOTgsIDksIDE0LCAyMzcsIDk3LCA5LCAxNCwgMjM3LCA5NiwgOSwgMTQsIDIzNywgOTUsIAorICAgIDksIDE0LCAyMzcsIDk0LCA5LCAxNCwgMjM3LCA5MywgOSwgMTQsIDIzNywgOTIsIDksIDE0LCAyMzcsIDkxLCA5LCAxNCwgCisgICAgMjM3LCA5MCwgOSwgMTQsIDIzNywgODksIDksIDE0LCAyMzcsIDg4LCA5LCAxNCwgMjM3LCA4NywgOSwgMTQsIDIzNywgODYsIAorICAgIDksIDE0LCAyMzcsIDg1LCA5LCAxNCwgMjM3LCA4NCwgOSwgMTQsIDIzNywgODMsIDksIDE0LCAyMzcsIDgyLCA5LCAxNCwgCisgICAgMjM3LCA4MSwgOSwgMTQsIDIzNywgODAsIDksIDE0LCAyMzcsIDc5LCA5LCAxNCwgMjM3LCA3OCwgOSwgMTQsIDIzNywgNzcsIAorICAgIDksIDE0LCAyMzcsIDc2LCA5LCAxNCwgMjM3LCA3NSwgOSwgMTQsIDIzNywgNzQsIDksIDE0LCAyMzcsIDczLCA5LCAxNCwgCisgICAgMjM3LCA3MiwgOSwgMTQsIDIzNywgNzEsIDksIDE0LCAyMzcsIDcwLCA5LCAxNCwgMjM3LCA2OSwgOSwgMTQsIDIzNywgNjgsIAorICAgIDksIDE0LCAyMzcsIDY3LCA5LCAxNCwgMjM3LCA2NiwgOSwgMTQsIDIzNywgNjUsIDksIDE0LCAyMzcsIDY0LCA5LCAxNCwgCisgICAgMjM3LCA2MywgOSwgMTQsIDIzNywgNjIsIDksIDE0LCAyMzcsIDYxLCA5LCAxNCwgMjM3LCA2MCwgOSwgMTQsIDIzNywgNTksIAorICAgIDksIDE0LCAyMzcsIDU4LCA5LCAxNCwgMjM3LCA1NywgOSwgMTQsIDIzNywgNTYsIDksIDE0LCAyMzcsIDU1LCA5LCAxNCwgCisgICAgMjM3LCA1NCwgOSwgMTQsIDIzNywgNTMsIDksIDE0LCAyMzcsIDUyLCA5LCAxNCwgMjM3LCA1MSwgOSwgMTQsIDIzNywgNTAsIAorICAgIDksIDE0LCAyMzcsIDQ5LCA5LCAxNCwgMjM3LCA0OCwgOSwgMTQsIDIzNywgNDcsIDksIDE0LCAyMzcsIDQ2LCA5LCAxNCwgCisgICAgMjM3LCA0NSwgOSwgMTQsIDIzNywgNDQsIDksIDE0LCAyMzcsIDQzLCA5LCAxNCwgMjM3LCA0MiwgOSwgMTQsIDIzNywgNDEsIAorICAgIDksIDE0LCAyMzcsIDQwLCA5LCAxNCwgMjM3LCAzOSwgOSwgMTQsIDIzNywgMzgsIDksIDE0LCAyMzcsIDM3LCA5LCAxNCwgCisgICAgMjM3LCAzNiwgOSwgMTQsIDIzNywgMzUsIDksIDE0LCAyMzcsIDM0LCA5LCAxNCwgMjM3LCAzMywgOSwgMTQsIDIzNywgMzIsIAorICAgIDksIDE0LCAyMzcsIDMxLCA5LCAxNCwgMjM3LCAzMCwgOSwgMTQsIDIzNywgMjksIDksIDE0LCAyMzcsIDI4LCA5LCAxNCwgCisgICAgMjM3LCAyNywgOSwgMTQsIDIzNywgMjYsIDksIDE0LCAyMzcsIDI1LCA5LCAxNCwgMjM3LCAyNCwgOSwgMTQsIDIzNywgMjMsIAorICAgIDksIDE0LCAyMzcsIDIyLCA5LCAxNCwgMjM3LCAyMSwgOSwgMTQsIDIzNywgMjAsIDksIDE0LCAyMzcsIDE5LCA5LCAxNCwgCisgICAgMjM3LCAxOCwgOSwgMTQsIDIzNywgMTcsIDksIDE0LCAyMzcsIDE2LCA5LCAxNCwgMjM3LCAxNSwgOSwgMTQsIDIzNywgMTQsIAorICAgIDksIDE0LCAyMzcsIDEzLCA5LCAxNCwgMjM3LCAxMiwgOSwgMTQsIDIzNywgMTEsIDksIDE0LCAyMzcsIDEwLCA5LCAxNCwgCisgICAgMjM3LCA5LCA5LCAxNCwgMjM3LCA4LCA5LCAxNCwgMjM3LCA3LCA5LCAxNCwgMjM3LCA2LCA5LCAxNCwgMjM3LCA1LCA5LCAKKyAgICAxNCwgMjM3LCA0LCA5LCAxNCwgMjM3LCAzLCA5LCAxNCwgMjM3LCAyLCA5LCAxNCwgMjM3LCAxLCA5LCAxNCwgMjM3LCAwLCAKKyAgICA5LCAxNCwgMjM2LCAyNTUsIDksIDE0LCAyMzYsIDI1NCwgOSwgMTQsIDIzNiwgMjUzLCA5LCAxNCwgMjM2LCAyNTIsIDksIAorICAgIDE0LCAyMzYsIDI1MSwgOSwgMTQsIDIzNiwgMjUwLCA5LCAxNCwgMjM2LCAyNDksIDksIDE0LCAyMzYsIDI0OCwgOSwgMTQsIAorICAgIDIzNiwgMjQ3LCA5LCAxNCwgMjM2LCAyNDYsIDksIDE0LCAyMzYsIDI0NSwgOSwgMTQsIDIzNiwgMjQ0LCA5LCAxNCwgMjM2LCAKKyAgICAyNDMsIDksIDE0LCAyMzYsIDI0MiwgOSwgMTQsIDIzNiwgMjQxLCA5LCAxNCwgMjM2LCAyNDAsIDksIDE0LCAyMzYsIDIzOSwgCisgICAgOSwgMTQsIDIzNiwgMjM4LCA5LCAxNCwgMjM2LCAyMzcsIDksIDE0LCAyMzYsIDIzNiwgOSwgMTQsIDIzNiwgMjM1LCA5LCAKKyAgICAxNCwgMjM2LCAyMzQsIDksIDE0LCAyMzYsIDIzMywgOSwgMTQsIDIzNiwgMjMyLCA5LCAxNCwgMjM2LCAyMzEsIDksIDE0LCAKKyAgICAyMzYsIDIzMCwgOSwgMTQsIDIzNiwgMjI5LCA5LCAxNCwgMjM2LCAyMjgsIDksIDE0LCAyMzYsIDIyNywgOSwgMTQsIDIzNiwgCisgICAgMjI2LCA5LCAxNCwgMjM2LCAyMjUsIDksIDE0LCAyMzYsIDIyNCwgOSwgMTQsIDIzNiwgMjIzLCA5LCAxNCwgMjM2LCAyMjIsIAorICAgIDksIDE0LCAyMzYsIDIyMSwgOSwgMTQsIDIzNiwgMjIwLCA5LCAxNCwgMjM2LCAyMTksIDksIDE0LCAyMzYsIDIxOCwgOSwgCisgICAgMTQsIDIzNiwgMjE3LCA5LCAxNCwgMjM2LCAyMTYsIDksIDE0LCAyMzYsIDIxNSwgOSwgMTQsIDIzNiwgMjE0LCA5LCAxNCwgCisgICAgMjM2LCAyMTMsIDksIDE0LCAyMzYsIDIxMiwgOSwgMTQsIDIzNiwgMjExLCA5LCAxNCwgMjM2LCAyMTAsIDksIDE0LCAyMzYsIAorICAgIDIwOSwgOSwgMTQsIDIzNiwgMjA4LCA5LCAxNCwgMjM2LCAyMDcsIDksIDE0LCAyMzYsIDIwNiwgOSwgMTQsIDIzNiwgMjA1LCAKKyAgICA5LCAxNCwgMjM2LCAyMDQsIDksIDE0LCAyMzYsIDIwMywgOSwgMTQsIDIzNiwgMjAyLCA5LCAxNCwgMjM2LCAyMDEsIDksIAorICAgIDE0LCAyMzYsIDIwMCwgOSwgMTQsIDIzNiwgMTk5LCA5LCAxNCwgMjM2LCAxOTgsIDksIDE0LCAyMzYsIDE5NywgOSwgMTQsIAorICAgIDIzNiwgMTk2LCA5LCAxNCwgMjM2LCAxOTUsIDksIDE0LCAyMzYsIDE5NCwgOSwgMTQsIDIzNiwgMTkzLCA5LCAxNCwgMjM2LCAKKyAgICAxOTIsIDksIDE0LCAyMzYsIDE5MSwgOSwgMTQsIDIzNiwgMTkwLCA5LCAxNCwgMjM2LCAxODksIDksIDE0LCAyMzYsIDE4OCwgCisgICAgOSwgMTQsIDIzNiwgMTg3LCA5LCAxNCwgMjM2LCAxODYsIDksIDE0LCAyMzYsIDE4NSwgOSwgMTQsIDIzNiwgMTg0LCA5LCAKKyAgICAxNCwgMjM2LCAxODMsIDksIDE0LCAyMzYsIDE4MiwgOSwgMTQsIDIzNiwgMTgxLCA5LCAxNCwgMjM2LCAxODAsIDksIDE0LCAKKyAgICAyMzYsIDE3OSwgOSwgMTQsIDIzNiwgMTc4LCA5LCAxNCwgMjM2LCAxNzcsIDksIDE0LCAyMzYsIDE3NiwgOSwgMTQsIDIzNiwgCisgICAgMTc1LCA5LCAxNCwgMjM2LCAxNzQsIDksIDE0LCAyMzYsIDE3MywgOSwgMTQsIDIzNiwgMTcyLCA5LCAxNCwgMjM2LCAxNzEsIAorICAgIDksIDE0LCAyMzYsIDE3MCwgOSwgMTQsIDIzNiwgMTY5LCA5LCAxNCwgMjM2LCAxNjgsIDksIDE0LCAyMzYsIDE2NywgOSwgCisgICAgMTQsIDIzNiwgMTY2LCA5LCAxNCwgMjM2LCAxNjUsIDksIDE0LCAyMzYsIDE2NCwgOSwgMTQsIDIzNiwgMTYzLCA5LCAxNCwgCisgICAgMjM2LCAxNjIsIDksIDE0LCAyMzYsIDE2MSwgOSwgMTQsIDIzNiwgMTYwLCA5LCAxNCwgMjM2LCAxNTksIDksIDE0LCAyMzYsIAorICAgIDE1OCwgOSwgMTQsIDIzNiwgMTU3LCA5LCAxNCwgMjM2LCAxNTYsIDksIDE0LCAyMzYsIDE1NSwgOSwgMTQsIDIzNiwgMTU0LCAKKyAgICA5LCAxNCwgMjM2LCAxNTMsIDksIDE0LCAyMzYsIDE1MiwgOSwgMTQsIDIzNiwgMTUxLCA5LCAxNCwgMjM2LCAxNTAsIDksIAorICAgIDE0LCAyMzYsIDE0OSwgOSwgMTQsIDIzNiwgMTQ4LCA5LCAxNCwgMjM2LCAxNDcsIDksIDE0LCAyMzYsIDE0NiwgOSwgMTQsIAorICAgIDIzNiwgMTQ1LCA5LCAxNCwgMjM2LCAxNDQsIDksIDE0LCAyMzYsIDE0MywgOSwgMTQsIDIzNiwgMTQyLCA5LCAxNCwgMjM2LCAKKyAgICAxNDEsIDksIDE0LCAyMzYsIDE0MCwgOSwgMTQsIDIzNiwgMTM5LCA5LCAxNCwgMjM2LCAxMzgsIDksIDE0LCAyMzYsIDEzNywgCisgICAgOSwgMTQsIDIzNiwgMTM2LCA5LCAxNCwgMjM2LCAxMzUsIDksIDE0LCAyMzYsIDEzNCwgOSwgMTQsIDIzNiwgMTMzLCA5LCAKKyAgICAxNCwgMjM2LCAxMzIsIDksIDE0LCAyMzYsIDEzMSwgOSwgMTQsIDIzNiwgMTMwLCA5LCAxNCwgMjM2LCAxMjksIDksIDE0LCAKKyAgICAyMzYsIDEyOCwgOSwgMTQsIDIzNiwgMTI3LCA5LCAxNCwgMjM2LCAxMjYsIDksIDE0LCAyMzYsIDEyNSwgOSwgMTQsIDIzNiwgCisgICAgMTI0LCA5LCAxNCwgMjM2LCAxMjMsIDksIDE0LCAyMzYsIDEyMiwgOSwgMTQsIDIzNiwgMTIxLCA5LCAxNCwgMjM2LCAxMjAsIAorICAgIDksIDE0LCAyMzYsIDExOSwgOSwgMTQsIDIzNiwgMTE4LCA5LCAxNCwgMjM2LCAxMTcsIDksIDE0LCAyMzYsIDExNiwgOSwgCisgICAgMTQsIDIzNiwgMTE1LCA5LCAxNCwgMjM2LCAxMTQsIDksIDE0LCAyMzYsIDExMywgOSwgMTQsIDIzNiwgMTEyLCA5LCAxNCwgCisgICAgMjM2LCAxMTEsIDksIDE0LCAyMzYsIDExMCwgOSwgMTQsIDIzNiwgMTA5LCA5LCAxNCwgMjM2LCAxMDgsIDksIDE0LCAyMzYsIAorICAgIDEwNywgOSwgMTQsIDIzNiwgMTA2LCA5LCAxNCwgMjM2LCAxMDUsIDksIDE0LCAyMzYsIDEwNCwgOSwgMTQsIDIzNiwgMTAzLCAKKyAgICA5LCAxNCwgMjM2LCAxMDIsIDksIDE0LCAyMzYsIDEwMSwgOSwgMTQsIDIzNiwgMTAwLCA5LCAxNCwgMjM2LCA5OSwgOSwgMTQsIAorICAgIDIzNiwgOTgsIDksIDE0LCAyMzYsIDk3LCA5LCAxNCwgMjM2LCA5NiwgOSwgMTQsIDIzNiwgOTUsIDksIDE0LCAyMzYsIDk0LCAKKyAgICA5LCAxNCwgMjM2LCA5MywgOSwgMTQsIDIzNiwgOTIsIDksIDE0LCAyMzYsIDkxLCA5LCAxNCwgMjM2LCA5MCwgOSwgMTQsIAorICAgIDIzNiwgODksIDksIDE0LCAyMzYsIDg4LCA5LCAxNCwgMjM2LCA4NywgOSwgMTQsIDIzNiwgODYsIDksIDE0LCAyMzYsIDg1LCAKKyAgICA5LCAxNCwgMjM2LCA4NCwgOSwgMTQsIDIzNiwgODMsIDksIDE0LCAyMzYsIDgyLCA5LCAxNCwgMjM2LCA4MSwgOSwgMTQsIAorICAgIDIzNiwgODAsIDksIDE0LCAyMzYsIDc5LCA5LCAxNCwgMjM2LCA3OCwgOSwgMTQsIDIzNiwgNzcsIDksIDE0LCAyMzYsIDc2LCAKKyAgICA5LCAxNCwgMjM2LCA3NSwgOSwgMTQsIDIzNiwgNzQsIDksIDE0LCAyMzYsIDczLCA5LCAxNCwgMjM2LCA3MiwgOSwgMTQsIAorICAgIDIzNiwgNzEsIDksIDE0LCAyMzYsIDcwLCA5LCAxNCwgMjM2LCA2OSwgOSwgMTQsIDIzNiwgNjgsIDksIDE0LCAyMzYsIDY3LCAKKyAgICA5LCAxNCwgMjM2LCA2NiwgOSwgMTQsIDIzNiwgNjUsIDcsIDQsIDI3LCAyNDQsIDEyNSwgNywgNCwgMjcsIDI0NCwgMTIxLCAKKyAgICA3LCA0LCAyNywgMjQ0LCA3NiwgNywgNCwgMjcsIDI0NCwgMTI0LCA3LCA0LCAyNywgMjQ0LCAxMjMsIDcsIDQsIDI3LCAxOTksIAorICAgIDIyMiwgOTIsIDIxNywgMTUyLCA3LCA0LCAyNywgMjE4LCAxNjgsIDE1MCwgNCwgMjcsIDIzMSwgNTksIDIyOCwgMzksIDE1MCwgCisgICAgNCwgMjcsIDIzMSwgNTksIDI0NSwgMjEzLCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMzUsIDIyNywgMTUwLCA0LCAyNywgMjEzLCAKKyAgICAxODAsIDIyOCwgMzksIDE1MCwgNCwgMjcsIDIzMSwgNTksIDIxMSwgMTYwLCA5NCwgMSwgMjEwLCAyMzQsIDIsIDI0MSwgCisgICAgMTU4LCA5NCwgMjI1LCAxMSwgMjM1LCA1MCwgMjE0LCAxMSwgOTQsIDI3LCAyMTEsIDYsIDIxMCwgMjM0LCAyMTAsIDIzNCwgCisgICAgMjI1LCAyMzksIDk0LCAxLCAyNTQsIDEzOSwgMjUzLCAxNjIsIDk0LCAxLCAyMTEsIDI0NywgMjU0LCAxNzAsIDk0LCAxLCAKKyAgICAyMTEsIDI0NywgMjQ4LCAxODksIDk0LCAxLCAyMTEsIDI0NywgMjQxLCAyMzgsIDk0LCAxLCAyMTEsIDI0NywgMjM0LCAyNTAsIAorICAgIDk0LCAxLCAyMTEsIDI0NywgMjMzLCA5NCwgOTQsIDEsIDIxMSwgMjQ3LCA0MCwgMjMxLCA2NSwgOTQsIDEsIDIxMSwgMjQ3LCAKKyAgICAyMjMsIDY3LCA5NCwgMSwgMjExLCAyNDcsIDIxNywgMzgsIDk0LCAxLCAyNTQsIDEzOSwgOTYsIDUwLCA5NCwgMSwgMjIwLCAKKyAgICAyMSwgMiwgMjIwLCAyMSwgMjQ3LCAxMjAsIDk0LCAxLCAyMjAsIDIxLCAyLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAxLCAKKyAgICAyMjAsIDIxLCAyLCAyNDgsIDIwOCwgMjIsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgMSwgMjIwLCAyMSwgMiwgMjQ4LCAyMDgsIAorICAgIDIyLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAxLCAxMTIsIDIsIDIyNSwgMjM5LCA5NCwgMSwgMTEyLCAyLCAyMjQsIDc2LCAKKyAgICA5NCwgMSwgMTEyLCAyLCAyMzEsIDE3MSwgOTQsIDEsIDI1MiwgMjksIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjQyLCAyMDIsIDIsIAorICAgIDI0OCwgMjA3LCA5NCwgMSwgMjQ4LCAxOTAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjQxLCAyMzksIDIsIDIzMSwgMTcxLCA5NCwgCisgICAgMSwgMjE0LCA0LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxMCwgOTgsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjE2LCAyMzEsIDIsIAorICAgIDI0OCwgMjA3LCA5NCwgMSwgMjEwLCAyMzQsIDIsIDI0OCwgMjA3LCA5NCwgMSwgNDAsIDIzNCwgMjUxLCAyLCAyNDgsIDIwNywgCisgICAgOTQsIDEsIDIzNCwgMjUxLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIzMywgOTUsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjMxLCAKKyAgICA2NiwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjcsIDE5NSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjEsIDI1MCwgMiwgMjQ4LCAKKyAgICAyMDcsIDk0LCAxLCA0MCwgMjI1LCAyMjIsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI1LCAyMjIsIDIsIDI0OCwgMjA3LCA5NCwgCisgICAgMSwgMjE1LCAxODAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI0LCA0MCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjMsIDY4LCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDIyMCwgMjEsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjE3LCAzOSwgMiwgMjQ4LCAyMDcsIDk0LCAKKyAgICAxLCAyMTQsIDQsIDIsIDI0MSwgNjEsIDk0LCAxLCAyNTIsIDI5LCAyLCAyMjMsIDE2OSwgOTQsIDEsIDIzNCwgMjUxLCAyLCAKKyAgICAyMjMsIDE2OSwgOTQsIDEsIDIyNSwgMjIyLCAyLCAyMjMsIDE2OSwgOTQsIDI3LCAxMTIsIDIzMywgOTQsIDEwLCAxLCAxMTIsIAorICAgIDIxMiwgNDcsIDUzLCAxNywgMTAsIDEsIDExMiwgMjEyLCA0NywgNDAsIDE3LCAxMCwgMSwgMjUyLCA2NSwgNTMsIDE3LCAxMCwgCisgICAgMSwgMjUyLCA2NSwgNDAsIDE3LCAxMCwgMSwgMjUyLCA2NSwgNjUsIDE3LCAxMCwgMSwgMjUyLCA2NSwgMTQ3LCAxNywgMTAsIAorICAgIDEsIDIyNSwgMjA2LCA1MywgMTcsIDEwLCAxLCAyMjUsIDIwNiwgNDAsIDE3LCAxMCwgMSwgMjI1LCAyMDYsIDY1LCAxNywgCisgICAgMTAsIDEsIDIyNSwgMjA2LCAxNDcsIDE3LCAxMCwgMSwgMjUyLCA1MywgNTMsIDE3LCAxMCwgMSwgMjUyLCA1MywgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjUyLCA1MywgNjUsIDE3LCAxMCwgMSwgMjUyLCA1MywgMTQ3LCAxNywgMTAsIDEsIDIxNSwgMTQ3LCA1MywgMTcsIAorICAgIDEwLCAxLCAyMTUsIDE0NywgNDAsIDE3LCAxMCwgMSwgMjE1LCAxNDcsIDY1LCAxNywgMTAsIDEsIDIxNSwgMTQ3LCAxNDcsIAorICAgIDE3LCAxMCwgMSwgMjE3LCA2LCA1MywgMTcsIDEwLCAxLCAyMTcsIDYsIDQwLCAxNywgMTAsIDEsIDIxNywgNiwgNjUsIDE3LCAKKyAgICAxMCwgMSwgMjE3LCA2LCAxNDcsIDE3LCAxMCwgMSwgMjE1LCAxNDksIDUzLCAxNywgMTAsIDEsIDIxNSwgMTQ5LCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMTUsIDE0OSwgNjUsIDE3LCAxMCwgMSwgMjE1LCAxNDksIDE0NywgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNTMsIAorICAgIDE3LCAxMCwgMSwgMjEzLCAyNDksIDQwLCAxNywgMTAsIDEsIDIxMywgMjQ5LCA2NSwgMTcsIDEwLCAxLCAyMTMsIDI0OSwgCisgICAgMTQ3LCAxNywgMTAsIDEsIDIyNSwgMjA0LCA1MywgMTcsIDEwLCAxLCAyMjUsIDIwNCwgNDAsIDE3LCAxMCwgMSwgMjI1LCAKKyAgICAyMDQsIDY1LCAxNywgMTAsIDEsIDIyNSwgMjA0LCAxNDcsIDE3LCAxMCwgMSwgMjQ2LCA0NCwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjQ2LCA0NCwgNDAsIDE3LCAxMCwgMSwgMjQ2LCA0NCwgNjUsIDE3LCAxMCwgMSwgMjQ2LCA0NCwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDIyNywgMTU0LCA1MywgMTcsIDEwLCAxLCAyMjcsIDE1NCwgNDAsIDE3LCAxMCwgMSwgMjI3LCAxNTQsIDY1LCAxNywgMTAsIAorICAgIDEsIDIyNywgMTU0LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCAyNywgNTMsIDE3LCAxMCwgMSwgMjE3LCAyNywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjE3LCAyNywgNjUsIDE3LCAxMCwgMSwgMjE3LCAyNywgMTQ3LCAxNywgMTAsIDEsIDIxNywgMjUsIDUzLCAxNywgMTAsIAorICAgIDEsIDIxNywgMjUsIDQwLCAxNywgMTAsIDEsIDIxNywgMjUsIDY1LCAxNywgMTAsIDEsIDIxNywgMjUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDgsIDEzMywgNTMsIDE3LCAxMCwgMSwgMjQ4LCAxMzMsIDQwLCAxNywgMTAsIDEsIDI0OCwgMjAyLCA1MywgMTcsIAorICAgIDEwLCAxLCAyNDgsIDIwMiwgNDAsIDE3LCAxMCwgMSwgMjQ2LCA3MSwgNTMsIDE3LCAxMCwgMSwgMjQ2LCA3MSwgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjQ4LCAxMzEsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTMxLCA0MCwgMTcsIDEwLCAxLCAyMzUsIDEyMSwgNTMsIAorICAgIDE3LCAxMCwgMSwgMjM1LCAxMjEsIDQwLCAxNywgMTAsIDEsIDIyMiwgMTcyLCA1MywgMTcsIDEwLCAxLCAyMjIsIDE3MiwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjM0LCAxNzUsIDUzLCAxNywgMTAsIDEsIDIzNCwgMTc1LCA0MCwgMTcsIDEwLCAxLCAyMzQsIAorICAgIDE3NSwgNjUsIDE3LCAxMCwgMSwgMjM0LCAxNzUsIDE0NywgMTcsIDEwLCAxLCAyNDMsIDEyMywgNTMsIDE3LCAxMCwgMSwgCisgICAgMjQzLCAxMjMsIDQwLCAxNywgMTAsIDEsIDI0MywgMTIzLCA2NSwgMTcsIDEwLCAxLCAyNDMsIDEyMywgMTQ3LCAxNywgMTAsIAorICAgIDEsIDI0MiwgMTAyLCA1MywgMTcsIDEwLCAxLCAyNDIsIDEwMiwgNDAsIDE3LCAxMCwgMSwgMjQyLCAxMDIsIDY1LCAxNywgCisgICAgMTAsIDEsIDI0MiwgMTAyLCAxNDcsIDE3LCAxMCwgMSwgMjI5LCAzLCA1MywgMTcsIDEwLCAxLCAyMjksIDMsIDQwLCAxNywgCisgICAgMTAsIDEsIDIyOSwgMywgNjUsIDE3LCAxMCwgMSwgMjI5LCAzLCAxNDcsIDE3LCAxMCwgMSwgMjI4LCA2MywgMjQyLCAyMTksIAorICAgIDUzLCAxNywgMTAsIDEsIDIyOCwgNjMsIDI0MiwgMjE5LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDIxNSwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyMTUsIDQwLCAxNywgMTAsIDEsIDIyMiwgMjE1LCA2NSwgMTcsIDEwLCAxLCAyMjIsIDIxNSwgMTQ3LCAxNywgMTAsIAorICAgIDEsIDI0MSwgMjE5LCAyLCA3OSwgNzcsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyLCA3OSwgNzcsIDQwLCAxNywgMTAsIAorICAgIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQyLCAxNzIsIDY1LCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDI0MSwgMjE5LCAyNDcsIDE0MiwgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0NywgMTQyLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQ3LCAxNDIsIDY1LCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDcsIDE0MiwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDc5LCAyNTIsIDEzMywgNTMsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTMzLCA0MCwgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIAorICAgIDIsIDIwMiwgNzcsIDUzLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzMywgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMTYsIDU5LCAKKyAgICA0OCwgMTAsIDE2LCA1OSwgNTEsIDEwLCAxNiwgMTEzLCAxNzAsIDQ4LCAxMCwgMTYsIDExMywgMTcwLCA1MSwgMTAsIDE2LCAKKyAgICAxMzQsIDE3MCwgNDgsIDEwLCAxNiwgMTM0LCAxNzAsIDUxLCAxMCwgMTYsIDEzNCwgMTcwLCAyMjUsIDcsIDI0NiwgMTA0LCAKKyAgICA0OCwgMTAsIDE2LCAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgNTEsIDEwLCAxNiwgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIAorICAgIDE2LCAyNDQsIDExLCAxNzAsIDUxLCAxMCwgMTYsIDUyLCA2NywgMjUyLCAxNDEsIDUxLCAxMCwgMTYsIDExMywgMTcwLCAKKyAgICAyMTMsIDE4OSwgNDgsIDEwLCAxNiwgMTEzLCAxNzAsIDIxMywgMTg5LCA1MSwgMTAsIDE2LCAyMjIsIDIzMywgMTAsIDE2LCAKKyAgICA0LCAyMTcsIDgxLCA0OCwgMTAsIDE2LCA0LCAyMTcsIDgxLCA1MSwgMTAsIDEsIDIyOSwgODAsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyOSwgODAsIDQwLCAxNywgMTAsIDEsIDIyOSwgODAsIDY1LCAxNywgMTAsIDEsIDIyOSwgODAsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAxMDQsIDUzLCAxNywgMTAsIDEsIDEwNCwgNDAsIDE3LCAxMCwgMSwgMjI2LCAyMzUsIDUzLCAxNywgMTAsIDEsIDIyNiwgCisgICAgMjM1LCA0MCwgMTcsIDEwLCAxLCAyMTAsIDIxMywgNTMsIDE3LCAxMCwgMSwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDEsIAorICAgIDEwNCwgMiwgMjAyLCA3NywgNTMsIDE3LCAxMCwgMSwgMjE0LCAwLCA1MywgMTcsIDEwLCAxLCAyMTQsIDAsIDQwLCAxNywgCisgICAgMTAsIDEsIDIzNCwgNzMsIDIyNiwgMjM1LCA1MywgMTcsIDEwLCAxLCAyMzQsIDczLCAyMjYsIDIzNSwgNDAsIDE3LCAxMCwgCisgICAgMSwgMjM0LCA3MywgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDEsIDIzNCwgNzMsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAxNjAsIDUzLCAxNywgMTAsIDEsIDE2MCwgNDAsIDE3LCAxMCwgMSwgMTYwLCA2NSwgMTcsIDEwLCAxLCAxNjAsIDE0NywgMTcsIAorICAgIDEwLCAxLCAyMTQsIDIwNywgMjM0LCAxODYsIDIzNCwgNzMsIDExMiwgMjMxLCAxOTMsIDY1LCAxNywgMTAsIDEsIDIxNCwgCisgICAgMjA3LCAyMzQsIDE4NiwgMjM0LCA3MywgMTEyLCAyMzEsIDE5MywgMTQ3LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgCisgICAgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAyMDIsIDc3LCAyLCAyNTQsIDI0NCwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyNTQsIDI0NCwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMTIsIDMxLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDIxMiwgMzEsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTA0LCA1MywgMTcsIDEwLCAyNywgNzksIAorICAgIDIsIDIwMiwgNzcsIDIsIDEwNCwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjYsIDIzNSwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjYsIDIzNSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAKKyAgICAyMTAsIDIxMywgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMTAsIDIxMywgNDAsIDE3LCAxMCwgMjcsIAorICAgIDc5LCAyLCAyMDIsIDc3LCAyLCAxNjAsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA0MCwgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE2MCwgNjUsIDE3LCAxMCwgMjcsIDIxNCwgMjA3LCAyMzQsIDczLCA3OSwgMiwgCisgICAgMjAyLCA3NywgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIxNCwgMjA3LCAyMzQsIDczLCA3OSwgMiwgMjAyLCAKKyAgICA3NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNCwgMjA3LCAyMzQsIDczLCA3OSwgMiwgMjAyLCA3NywgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNjUsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCA1MywgMTcsIDEwLCAxLCAyNDQsIDE2OCwgCisgICAgNzksIDQwLCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgNjUsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTIyLCAKKyAgICA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyNTIsIDU1LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyNTIsIAorICAgIDU1LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAKKyAgICAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjM0LCAKKyAgICAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMTIsIDIzMSwgCisgICAgMTkzLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTEyLCAyMzEsIDE5MywgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMTUxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCA2NiwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTIyLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDE1MSwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjIsIDI3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNDgsIAorICAgIDIxNywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAKKyAgICAyMTcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgCisgICAgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTAsIDExMiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDE1MSwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxNTEsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMjIsIDUzLCAxNywgMTAsIAorICAgIDI3LCAyMjQsIDgyLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjQsIDgyLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgCisgICAgMjUxLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIDEwMywgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzNCwgMjUxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMjM0LCAyNTEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzMywgMTAzLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgCisgICAgMjcsIDIzMywgMTAzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgCisgICAgMTIyLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDY2LCA1MywgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjgsIDYzLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjgsIAorICAgIDYzLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQxLCAKKyAgICAyMTksIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAKKyAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIAorICAgIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIAorICAgIDc5LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMjAzLCAyLCAyMTgsIDIzLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjMsIDk2LCAyLCAyMTgsIDIzLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAxMTIsIDIzMSwgMTkzLCAyLCAyMTgsIDIzLCAxMTIsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyNDgsIDE4MywgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDIzNCwgCisgICAgMjA0LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ0LCAxNjYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAKKyAgICAyNDgsIDE4NSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDIzNCwgMjA2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgCisgICAgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEwLCAxMDksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIAorICAgIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIAorICAgIDc3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA4LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjE2LCAxOTMsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTYsIDE5MywgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMjI4LCA2MywgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNiwgMTkzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgCisgICAgNzksIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzMywgCisgICAgMTAzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgCisgICAgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMjgsIDYzLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMjgsIDYzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAxMTIsIDIzMSwgMTkzLCAyLCAyMTgsIDIzLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjIzLCA5NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDc5LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIAorICAgIDIwMiwgNzcsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyNDEsIDIxOSwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDI1MiwgNTUsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU1LCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjE3LCAKKyAgICA4LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMTYsIDE5MywgCisgICAgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNjYsIDY1LCAxNywgCisgICAgMTAsIDI3LCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzQsIAorICAgIDEzMCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIAorICAgIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgCisgICAgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMjIsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMTAsIDExMiwgMiwgNjYsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDUsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDI0NCwgMTQzLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAKKyAgICAxNDMsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI0LCAKKyAgICA4MiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgCisgICAgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzQsIAorICAgIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIDEwMywgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTIyLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDE1MSwgNjUsIAorICAgIDE3LCAxMCwgMjcsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAKKyAgICA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAKKyAgICAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgCisgICAgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDIxOCwgCisgICAgMjMsIDExMiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNzksIAorICAgIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU1LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIxNywgOCwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIxNiwgMTkzLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjcsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMCwgNjAsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIDEwMywgMTQ3LCAKKyAgICAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDY2LCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCA3OSwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgCisgICAgMjIwLCA5NCwgMiwgMjQ0LCAxNjYsIDE0NywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ4LCAxODUsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIwLCA5NCwgMiwgMjM0LCAyMDYsIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDExMiwgMjMxLCAxOTMsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgMTEyLCAyMzEsIAorICAgIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAKKyAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIwLCAKKyAgICA2MCwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgCisgICAgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIAorICAgIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgCisgICAgODEsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDI1NCwgMTk3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDUsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAxNTEsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjM0LCAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDIzNCwgMTMwLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIyMywgOTYsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIyMywgOTYsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjcsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMjQxLCAyMTksIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjcsIDIsIDEyMiwgMTQ3LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDE0NywgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjAsIDYwLCAyLCAyMzQsIDEzMCwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTAsIDExMiwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMTEyLCAyLCAyNDQsIDE2NCwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDExMiwgMiwgMjQ0LCAxNjQsIDUzLCAxNywgMjI2LCAxNDYsIDQzLCAyMjYsIDMsIDIyNiwgMTQ2LCA0NCwgMjI2LCAzLCAxMCwgCisgICAgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCAyLCAxNTEsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIAorICAgIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMTcsIDgsIDIsIDY2LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTIyLCAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIAorICAgIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgCisgICAgMTY3LCAyLCAxNTEsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDEyMiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIAorICAgIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDEyMiwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjIyLCAyNywgMiwgMTIyLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgCisgICAgMiwgMjM0LCAxMzAsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMjAsIDYwLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyNDgsIDIxNywgMiwgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgCisgICAgMTMwLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMTcsIDgxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCAyLCAKKyAgICA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgCisgICAgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDUsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgMiwgMTEyLCAyMzEsIAorICAgIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAyMzQsIDEzMCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNDQsIAorICAgIDE0MywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIDIsIDY2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgCisgICAgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgMTUxLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgMTUxLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCAKKyAgICAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzMsIAorICAgIDEwMywgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNjYsIDIsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCA2NiwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDY2LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCAyLCAxNTEsIDY1LCAxNywgCisgICAgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDE1MSwgMiwgMjM0LCAxMzAsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgCisgICAgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgCisgICAgMiwgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCA2NiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAKKyAgICAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxNTEsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIxNywgOCwgMiwgMjM0LCAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAxNTEsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTUxLCAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMzQsIAorICAgIDEzMCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDEyMiwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAxNTEsIDIsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxMjIsIAorICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAKKyAgICAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDIzNCwgMjUxLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAKKyAgICAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgMTUxLCAyLCAKKyAgICAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMTIyLCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIAorICAgIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjUyLCAKKyAgICA1NSwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDY2LCAyLCA2NiwgNjUsIAorICAgIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAKKyAgICAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIyLCA0LCAyMTQsIDEyOCwgMjUzLCAyMzgsIDIzNCwgNCwgMjE4LCAxMzAsIAorICAgIDUsIDUzLCAxNywgMTAsIDI3LCAyMjQsIDc4LCAyMTQsIDEyOCwgMjUzLCAyMzgsIDIzNCwgNCwgMjE4LCAxMzAsIDUsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNTQsIDE1MywgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTgzLCA1MywgMTcsIDEwLCAyNywgMjMwLCAxNTMsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMjIsIDUsIDUzLCAxNywgMTAsIDI3LCAyMjMsIDE0MywgNTMsIDE3LCAxMCwgMjcsIDI1NCwgCisgICAgMTcyLCA1MywgMTcsIDEwLCAyNywgMjEyLCA0OSwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgNCwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIyMiwgMywgMjU0LCAxNzIsIDIxMiwgNDgsIDEwLCAyNywgMjM1LCAxMzQsIDIyMywgMzQsIDUwLCAxMCwgMjcsIDI1MSwgCisgICAgMjMwLCAyNTQsIDM5LCAyNTQsIDQwLCA0NSwgMjIxLCAxNTYsIDQ1LCAyMjEsIDQ1LCA0NSwgMjIwLCAyMzMsIDQ1LCAyMjAsIAorICAgIDIyMiwgNDUsIDIyMCwgMjExLCA0NSwgMjIwLCAyMDAsIDQ1LCAyMjAsIDE4OSwgNDUsIDIyMCwgMTc4LCA0NSwgMjIwLCAKKyAgICAxNjcsIDQ1LCAyMjEsIDE1NSwgNDUsIDIyMSwgMTQ0LCA0NSwgMjIxLCAxMzMsIDQ1LCAyMjEsIDEyMiwgNDUsIDIyMSwgCisgICAgMTExLCA0NSwgMjIxLCAxMDAsIDQ1LCAyMjEsIDg5LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDksIDIxOSwgMjI0LCAKKyAgICAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMTA5LCAyNDksIDIxOSwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMTA5LCAyNDMsIAorICAgIDIyOSwgMjE4LCAxMjksIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0OSwgMjI2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgCisgICAgMzEsIDY3LCAyMjAsIDE1MCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ1LCAzMSwgNzgsIDIyNCwgMTk0LCAyNDQsIAorICAgIDIwLCAzMSwgNjcsIDIyNCwgMTMsIDc4LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNzEsIDIzMywgMjAsIDEyNywgCisgICAgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyMzMsIDIwLCAyNTEsIDE1NiwgMjI0LCAxOTQsIDI0NCwgMjAsIAorICAgIDMxLCA2NywgMjAzLCAyNDUsIDE2MywgMzgsIDI3LCA0MywgMjQyLCAyNywgMzgsIDI3LCA0NCwgMjQyLCAyNywgMzgsIDUyLCAKKyAgICAyMTYsIDg5LCA0MywgMjQyLCAyNywgMzgsIDUyLCAyMTYsIDg5LCA0NCwgMjQyLCAyNywgMzgsIDIzMSwgMjMzLCA0MywgCisgICAgMjQyLCAyNywgMzgsIDIzMSwgMjMzLCA0NCwgMjQyLCAyNywgMzgsIDI0OSwgMTk3LCAyMzEsIDIzMiwgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgMTEzLCA1OSwgMjMzLCA1NiwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ1LCAxNjAsIAorICAgIDI0OCwgMTU2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDUsIDE1MSwgMjQ4LCAxNTYsIDIyNCwgMTk0LCAyNDQsIAorICAgIDIwLCAzMSwgNjcsIDEyMSwgMjMyLCAyMTMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDIxMiwgMzIsIDEyMSwgMjMyLCAKKyAgICAyMTMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyMjYsIDMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIAorICAgIDQ0LCAyMjYsIDMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyNDksIDk5LCAxMjcsIDIyNCwgMTk0LCAyNDQsIAorICAgIDIwLCAzMSwgNjcsIDQ0LCAyNDksIDk5LCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyMTYsIDYsIDIyMCwgCisgICAgNTMsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0MywgODUsIDIzMywgMjAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDg1LCAKKyAgICAyMzMsIDIwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA1MiwgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDQsIDUyLCAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgCisgICAgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyNDksIDE2MSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgMjQ5LCAKKyAgICAxNjEsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDcxLCAyNDksIDE2MSwgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNzEsIDI0OSwgMTYxLCAxMjcsIDIyMCwgMTMxLCAyNDcsIDEyMCwgNzEsIDIyMCwgMTMxLCAKKyAgICAyNDcsIDEyMCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDQyLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgCisgICAgNjcsIDQ0LCA0MiwgMTI3LCAyNDgsIDE1NSwgMjI2LCAxMTksIDI1MCwgMTcyLCAyMjYsIDExOSwgMjEyLCAzMiwgMjI2LCAKKyAgICAxMTksIDUyLCAyMTIsIDMyLCAyMjYsIDExOSwgMjQ4LCAxNTUsIDEyMSwgMjMyLCAyMTMsIDI1MCwgMTcyLCAxMjEsIDIzMiwgCisgICAgMjEzLCAyMTIsIDMyLCAxMjEsIDIzMiwgMjEzLCA0LCAyNDksIDIxOSwgNCwgMTA5LCAyNDksIDIxOSwgNCwgMjQzLCAyMjksIAorICAgIDIxOCwgMTI5LCA0LCAyMjAsIDE1MCwgNCwgMjQ5LCAyMjYsIDQsIDIyNCwgMTMsIDc4LCA0LCAyNDUsIDMxLCA3OCwgNCwgCisgICAgMjQ1LCAxNjAsIDI0OCwgMTU2LCA0LCA0MywgMjI2LCAzLCA0LCA0NCwgMjI2LCAzLCA0LCA0MywgMjQ5LCA5OSwgMTI3LCA0LCAKKyAgICA0NCwgMjQ5LCA5OSwgMTI3LCA0LCA0MywgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIAorICAgIDEyNywgNCwgNTQsIDUwLCA0LCAyNTQsIDEyNiwgNCwgMjUzLCAyMTYsIDQsIDk2LCA1MCwgNCwgMjQwLCAxNjcsIDQsIDIzMywgCisgICAgMTUsIDUwLCA0LCAyNDIsIDEzMCwgNTAsIDQsIDI0NSwgOTgsIDUwLCA0LCAyMjMsIDUwLCAyMTksIDQ2LCA0LCAyNDcsIAorICAgIDEzMiwgNTAsIDQsIDIyNSwgMTgyLCA1MCwgNCwgMjQ5LCAyMTcsIDI1MywgMjA2LCAxMCwgMjQ0LCAxNjQsIDUzLCAxNywgCisgICAgMTAsIDIxNywgNDQsIDIsIDI0NCwgMTY0LCA0OCwgMTAsIDI0OCwgMTgzLCA1MywgMTcsIDEwLCAyMTcsIDc4LCAyNDQsIDEsIAorICAgIDEwLCAyMzQsIDIwNCwgNTMsIDE3LCAxMCwgMjQ0LCAxNjYsIDUzLCAxNywgMTAsIDI0NCwgMTY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjQ4LCAxODUsIDUzLCAxNywgMTAsIDI0OCwgMTg1LCAxNDcsIDE3LCAxMCwgMjM0LCAyMDYsIDUzLCAxNywgMTAsIDIzNCwgCisgICAgMjA2LCAxNDcsIDE3LCAxMCwgMjIwLCA5NCwgNTMsIDE3LCAxMCwgMjIwLCA5NCwgMTQ3LCAxNywgMTAsIDIxOCwgNDYsIDUzLCAKKyAgICAxNywgMTAsIDIxOCwgNDYsIDE0NywgMTcsIDEwLCAxLCAyMDIsIDUzLCAxNywgMTAsIDEsIDExMiwgMiwgMjMxLCAyMjgsIAorICAgIDc3LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNDAsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDc3LCAKKyAgICA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgNzcsIDUzLCAKKyAgICAxNywgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCAyNTIsIDQzLCA1MywgCisgICAgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgMjUyLCA0MywgNDAsIDE3LCAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIDUzLCAxNywgCisgICAgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNjUsIDE3LCAxMCwgMSwgNzksIAorICAgIDIsIDIwMiwgNzcsIDE0NywgMTcsIDEwLCAxLCAxMTIsIDUzLCAxNywgMTAsIDEsIDExMiwgNDAsIDE3LCAxMCwgMSwgMjUyLCAKKyAgICA1NSwgNTMsIDE3LCAxMCwgMSwgMjUyLCA1NSwgNDAsIDE3LCAxMCwgMSwgMjUyLCA1NSwgNjUsIDE3LCAxMCwgMSwgMjUyLCAKKyAgICA1NSwgMTQ3LCAxNywgMTAsIDEsIDIxNywgOCwgMjMxLCAxNjUsIDUzLCAxNywgMTAsIDEsIDIxNywgOCwgMjMxLCAxNjUsIAorICAgIDQwLCAxNywgMTAsIDEsIDIxNywgOCwgNTMsIDE3LCAxMCwgMSwgMjE3LCA4LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDgsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIxNywgOCwgMTQ3LCAxNywgMTAsIDEsIDIxNiwgMTkzLCA1MywgMTcsIDEwLCAxLCAyMTYsIDE5MywgNDAsIAorICAgIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDY1LCAxNywgMTAsIDEsIDIxNiwgMTkzLCAxNDcsIDE3LCAxMCwgMSwgMTUxLCA1MywgCisgICAgMTcsIDEwLCAxLCAxNTEsIDQwLCAxNywgMTAsIDEsIDE1MSwgNjUsIDE3LCAxMCwgMSwgMTUxLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMTIyLCA1MywgMTcsIDEwLCAxLCAxMjIsIDQwLCAxNywgMTAsIDEsIDEyMiwgNjUsIDE3LCAxMCwgMSwgMTIyLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDEsIDIzNCwgMTMwLCA0MCwgMTcsIDEwLCAxLCAyMzQsIDEzMCwgNjUsIAorICAgIDE3LCAxMCwgMSwgMjM0LCAxMzAsIDE0NywgMTcsIDEwLCAxLCAyNDgsIDE5NiwgNTMsIDE3LCAxMCwgMSwgMjQ4LCAxOTYsIAorICAgIDQwLCAxNywgMTAsIDEsIDIxNiwgMjAzLCA1MywgMTcsIDEwLCAxLCAyMTYsIDIwMywgNDAsIDE3LCAxMCwgMSwgMjIzLCA5NiwgCisgICAgNTMsIDE3LCAxMCwgMSwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMSwgMjEwLCAxMDksIDUzLCAxNywgMTAsIDEsIDIxMCwgMTA5LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMjEsIDE2NywgNTMsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDQwLCAxNywgMTAsIDEsIDIyMSwgCisgICAgMTY3LCA2NSwgMTcsIDEwLCAxLCAyMjEsIDE2NywgMTQ3LCAxNywgMTAsIDEsIDIyMCwgNjAsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyMCwgNjAsIDQwLCAxNywgMTAsIDEsIDIyMCwgNjAsIDY1LCAxNywgMTAsIDEsIDIyMCwgNjAsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyMjIsIDI3LCA1MywgMTcsIDEwLCAxLCAyMjIsIDI3LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDI3LCA2NSwgMTcsIDEwLCAxLCAKKyAgICAyMjIsIDI3LCAxNDcsIDE3LCAxMCwgMSwgMjQ4LCAyMTcsIDUzLCAxNywgMTAsIDEsIDI0OCwgMjE3LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDgsIDIxNywgNjUsIDE3LCAxMCwgMSwgMjQ4LCAyMTcsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDgxLCA1MywgMTcsIAorICAgIDEwLCAxLCAyMTcsIDgxLCA0MCwgMTcsIDEwLCAxLCAyMTcsIDgxLCA2NSwgMTcsIDEwLCAxLCAyMTcsIDgxLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjEwLCAxMTIsIDUzLCAxNywgMTAsIDEsIDIxMCwgMTEyLCA0MCwgMTcsIDEwLCAxLCAyMTAsIDExMiwgNjUsIAorICAgIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDE0NywgMTcsIDEwLCAxLCAyNTQsIDE5NywgNTMsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIAorICAgIDQwLCAxNywgMTAsIDEsIDI1NCwgMTk3LCA2NSwgMTcsIDEwLCAxLCAyNTQsIDE5NywgMTQ3LCAxNywgMTAsIDEsIDI0MiwgCisgICAgMjQ1LCA1MywgMTcsIDEwLCAxLCAyNDIsIDI0NSwgNDAsIDE3LCAxMCwgMSwgMjQyLCAyNDUsIDY1LCAxNywgMTAsIDEsIAorICAgIDI0MiwgMjQ1LCAxNDcsIDE3LCAxMCwgMSwgMjQ0LCAxNDMsIDUzLCAxNywgMTAsIDEsIDI0NCwgMTQzLCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDQsIDE0MywgNjUsIDE3LCAxMCwgMSwgMjQ0LCAxNDMsIDE0NywgMTcsIDEwLCAxLCAyMjQsIDgyLCA1MywgMTcsIAorICAgIDEwLCAxLCAyMjQsIDgyLCA0MCwgMTcsIDEwLCAxLCAyMjQsIDgyLCA2NSwgMTcsIDEwLCAxLCAyMjQsIDgyLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjM0LCAyNTEsIDUzLCAxNywgMTAsIDEsIDIzNCwgMjUxLCA0MCwgMTcsIDEwLCAxLCAyMzQsIDI1MSwgNjUsIAorICAgIDE3LCAxMCwgMSwgMjM0LCAyNTEsIDE0NywgMTcsIDEwLCAxLCAyMzMsIDEwMywgNTMsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDQwLCAxNywgMTAsIDEsIDIzMywgMTAzLCA2NSwgMTcsIDEwLCAxLCAyMzMsIDEwMywgMTQ3LCAxNywgMTAsIDEsIDY2LCA1MywgCisgICAgMTcsIDEwLCAxLCA2NiwgNDAsIDE3LCAxMCwgMSwgNjYsIDY1LCAxNywgMTAsIDEsIDY2LCAxNDcsIDE3LCAxMCwgMSwgMjI4LCAKKyAgICA2MywgNTMsIDE3LCAxMCwgMSwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMSwgMjI4LCA2MywgNjUsIDE3LCAxMCwgMSwgMjI4LCAKKyAgICA2MywgMTQ3LCAxNywgMTAsIDEsIDI0MSwgMjE5LCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDY1LCAxNywgMTAsIDEsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMSwgMjEyLCAzMSwgNTMsIDE3LCAxMCwgCisgICAgMSwgMjEyLCAzMSwgNDAsIDE3LCAxMCwgMSwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMSwgMTEyLCAyMzEsIDE5MywgCisgICAgNDAsIDE3LCAxMCwgMSwgNzksIDUzLCAxNywgMTAsIDEsIDc5LCA0MCwgMTcsIDEwLCAxLCA3OSwgNjUsIDE3LCAxMCwgMSwgCisgICAgNzksIDE0NywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjMxLCAyMjgsIDc3LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjMxLCAyMjgsIDc3LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgCisgICAgMjAyLCA3NywgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMDIsIDI1MiwgNDMsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAKKyAgICAyMDIsIDI1MiwgNDMsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIAorICAgIDIsIDExMiwgNDAsIDE3LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjI4LCA3MywgMjE5LCAxOCwgMTI2LCAyNDUsIDMxLCA3OCwgCisgICAgMTI2LCAyMjMsIDI1NCwgNzgsIDEyNiwgNTQsIDUwLCAxMjYsIDI0NywgMTMyLCA1MCwgMTI2LCAyMjUsIDE4MiwgNTAsIAorICAgIDEyNiwgMjU0LCAxMjYsIDEyNiwgMjU0LCA1NywgMTI2LCA0MywgMjI2LCAzLCAxMjYsIDQ0LCAyMjYsIDMsIDEyNiwgMjUzLCAKKyAgICAyMTYsIDEyNiwgOTYsIDUwLCAxMjYsIDI0OSwgMjE5LCAxMjYsIDI0MCwgMTY3LCAxMjYsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgMTI2LCAyMTksIDQ2LCAxMjYsIDIxLCAyMTAsIDg2LCAxMjYsIDIxLCAxMTAsIDEyNiwgMjEsIDEwNSwgMTI2LCAyMSwgMTU4LCAKKyAgICAxMjYsIDIxLCAxNjEsIDEyNiwgMjEsIDE4OSwgMTI2LCAyMSwgMTk0LCAxMjYsIDIxLCAxOTgsIDEyNiwgMjEsIDE5NSwgCisgICAgMTI2LCAyMSwgMjAwLCAxMjYsIDI0OSwgMjI2LCAxMjYsIDIyMCwgMTUwLCAxMjYsIDIzMywgMTUsIDUwLCAxMjYsIDI0NSwgCisgICAgOTgsIDUwLCAxMjYsIDI0MiwgMTMwLCA1MCwgMTI2LCAyMjQsIDEzLCA3OCwgMTI2LCAyNDksIDIxNywgMjUzLCAyMDYsIAorICAgIDEyNiwgNywgNiwgMSwgNjEsIDEyNiwgNywgNiwgMSwgMjUzLCAxNTgsIDEyNiwgNywgNiwgMSwgMjUxLCA2NiwgMTI2LCA3LCAKKyAgICA2LCAxLCAyNDksIDYwLCAxMjYsIDcsIDYsIDEsIDc1LCAxMjYsIDcsIDYsIDEsIDI0NSwgNiwgMTI2LCA3LCA2LCAxLCAyNDMsIAorICAgIDIwMiwgMTI2LCA3LCA2LCAxLCAyNDIsIDYwLCAxMjYsIDcsIDYsIDEsIDczLCAxMjYsIDcsIDYsIDEsIDIzNSwgMTQ0LCAKKyAgICAxMjYsIDcsIDYsIDEsIDIzNSwgMjMsIDEyNiwgNywgNiwgMSwgMTU2LCAxMjYsIDcsIDYsIDEsIDE5MywgMTI2LCA3LCA2LCAKKyAgICAxLCAyMzAsIDI1LCAxMjYsIDcsIDYsIDEsIDc2LCAxMjYsIDcsIDYsIDEsIDIyNiwgMTA1LCAxMjYsIDcsIDYsIDEsIDIyNCwgCisgICAgOTYsIDEyNiwgNywgNiwgMSwgMTUzLCAxMjYsIDcsIDYsIDEsIDIyMiwgOTEsIDEyNiwgNywgNiwgMSwgMjE3LCAxNTIsIAorICAgIDEyNiwgNywgNiwgMSwgNzAsIDEyNiwgNywgNiwgMSwgMjE0LCAxMDUsIDEyNiwgNywgNiwgMSwgMjEyLCA5OCwgMTI2LCA3LCAKKyAgICA2LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA2LCAxLCAyMTEsIDExNywgMTI2LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgCisgICAgNDIsIDEyNywgMTI2LCAyMjMsIDUwLCAyMTksIDQ2LCAxMjYsIDQ0LCA0MiwgMTI3LCAxMjYsIDI1MCwgMzEsIDI1NSwgMTQsIAorICAgIDEyNiwgMTIxLCAyMzIsIDIxMywgMTI2LCAyNDIsIDEzNywgMjU1LCAxNCwgMTI2LCA3LCA0LCAxLCA2MSwgMTI2LCA3LCA0LCAKKyAgICAxLCAyNTMsIDE1OCwgMTI2LCA3LCA0LCAxLCAyNTEsIDY2LCAxMjYsIDcsIDQsIDEsIDI0OSwgNjAsIDEyNiwgNywgNCwgMSwgCisgICAgNzUsIDEyNiwgNywgNCwgMSwgMjQ1LCA2LCAxMjYsIDcsIDQsIDEsIDI0MywgMjAyLCAxMjYsIDcsIDQsIDEsIDI0MiwgNjAsIAorICAgIDEyNiwgNywgNCwgMSwgNzMsIDEyNiwgNywgNCwgMSwgMjM1LCAxNDQsIDEyNiwgNywgNCwgMSwgMjM1LCAyMywgMTI2LCA3LCAKKyAgICA0LCAxLCAxNTYsIDEyNiwgNywgNCwgMSwgMTkzLCAxMjYsIDcsIDQsIDEsIDIzMCwgMjUsIDEyNiwgNywgNCwgMSwgNzYsIAorICAgIDEyNiwgNywgNCwgMSwgMjI2LCAxMDUsIDEyNiwgNywgNCwgMSwgMjI0LCA5NiwgMTI2LCA3LCA0LCAxLCAxNTMsIDEyNiwgNywgCisgICAgNCwgMSwgMjIyLCA5MSwgMTI2LCA3LCA0LCAxLCAyMTcsIDE1MiwgMTI2LCA3LCA0LCAxLCA3MCwgMTI2LCA3LCA0LCAxLCAKKyAgICAyMTQsIDEwNSwgMTI2LCA3LCA0LCAxLCAyMTIsIDk4LCAxMjYsIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjYsIDcsIDQsIDEsIAorICAgIDIxMSwgMTE3LCAxMjYsIDcsIDQsIDEsIDIxMCwgMTU5LCAxMjYsIDQzLCAyNDksIDk5LCAxMjcsIDEyNiwgNjcsIDIzMiwgCisgICAgMjEzLCAxMjYsIDQ0LCAyNDksIDk5LCAxMjcsIDEyNiwgMTgyLCAxMjYsIDQzLCA3MSwgMjI2LCAzLCAxMjYsIDQ0LCA3MSwgCisgICAgMjI2LCAzLCAxMDEsIDEwOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAxMDEsIDQzLCAyNDksIDE2MSwgMTI3LCAxMDEsIDQ0LCAKKyAgICAyNDksIDE2MSwgMTI3LCAxMDEsIDEwOSwgMjQ5LCAyMTksIDEwMSwgNTYsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMTAxLCA1NiwgCisgICAgMSwgMjExLCAyMjcsIDEwMSwgNTYsIDEsIDQsIDYxLCAxMDEsIDU2LCAxLCA0LCA3MywgMTAxLCA1NiwgMSwgNCwgNzAsIAorICAgIDEwMSwgNTYsIDEsIDQsIDc1LCAxMDEsIDU2LCAxLCA0LCA3NiwgMTAxLCA1NiwgMSwgNCwgMTkxLCAxMDEsIDU2LCAxLCA0LCAKKyAgICAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgNCwgMjEwLCAyNDQsIDEwMSwgNTYsIDEsIDQsIDIxNSwgMTE4LCAxMDEsIDIzNCwgCisgICAgMjAxLCAyMjQsIDE3MywgMjE5LCAzMSwgNzgsIDEwMSwgNTYsIDEsIDYxLCAxMDEsIDU2LCAxLCA3MywgMTAxLCA1NiwgMSwgCisgICAgNzAsIDEwMSwgNTYsIDEsIDc1LCAxMDEsIDU2LCAxLCA3NiwgMTAxLCA1NiwgMSwgMTc2LCAxMDEsIDU2LCAxLCAyMzQsIDkyLCAKKyAgICAxMDEsIDU2LCAxLCAyMzMsIDIxNywgMTAxLCA1NiwgMSwgMjM0LCAxODIsIDEwMSwgNTYsIDEsIDIzNCwgMjgsIDEwMSwgNTYsIAorICAgIDEsIDIwNiwgMTAxLCA1NiwgMSwgMjE5LCAxOTEsIDEwMSwgNTYsIDEsIDIxOCwgODMsIDEwMSwgNTYsIDEsIDIyMSwgMTgxLCAKKyAgICAxMDEsIDU2LCAxLCAyMTksIDU4LCAxMDEsIDU2LCAxLCAyMTcsIDEwNSwgMTAxLCA1NiwgMSwgMjE2LCAxMTcsIDEwMSwgNTYsIAorICAgIDEsIDIxNSwgMTE4LCAxMDEsIDU2LCAxLCAyMTcsIDIyLCAxMDEsIDU2LCAxLCAxMTEsIDEwMSwgNTYsIDEsIDE5NywgMTAxLCAKKyAgICA1NiwgMSwgMjI4LCAyMzMsIDEwMSwgNTYsIDEsIDIyNywgMjM3LCAxMDEsIDU2LCAxLCAyMjksIDEwNywgMTAxLCA1NiwgMSwgCisgICAgMjI4LCA3NCwgMTAxLCA1NiwgMSwgMTYyLCAxMDEsIDU2LCAxLCAyNDEsIDE4MCwgMTAxLCA1NiwgMSwgMjQwLCAyMjIsIAorICAgIDEwMSwgNTYsIDEsIDI0MSwgMjM4LCAxMDEsIDU2LCAxLCAyNDEsIDY4LCAxMDEsIDU2LCAxLCAxODQsIDEwMSwgNTYsIDEsIAorICAgIDIzMCwgMjMwLCAxMDEsIDU2LCAxLCAyMzAsIDEwMiwgMTAxLCA1NiwgMSwgMjMxLCA5MSwgMTAxLCA1NiwgMSwgMjMwLCAKKyAgICAxNjEsIDEwMSwgNTYsIDEsIDE5MSwgMTAxLCA1NiwgMSwgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDIxMCwgMjQ0LCAxMDEsIAorICAgIDU2LCAxLCAyMDUsIDEwMSwgNTYsIDEsIDIyMywgMzUsIDEwMSwgNTYsIDEsIDIyMiwgMTQwLCAxMDEsIDU2LCAxLCAyMjMsIAorICAgIDEyOCwgMTAxLCA1NiwgMSwgMjIyLCAyMTEsIDEwMSwgNTYsIDEsIDIxMiwgNjUsIDEwMSwgNTYsIDEsIDIzMCwgMjUsIDEwMSwgCisgICAgNTYsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgMTAxLCA1NiwgMjIwLCAxNTUsIDIxOSwgMzEsIDc4LCAxMDEsIDI0LCAyNDQsIAorICAgIDEwMywgMTAxLCAyNCwgMSwgMjM0LCA1OCwgMTAxLCAyNCwgMSwgMjE4LCAyMTUsIDEwMSwgMjQsIDEsIDIzNCwgNTEsIDEwMSwgCisgICAgMjQsIDEsIDIyOCwgMjI2LCAxMDEsIDI0LCAxLCAyMjgsIDIyNCwgMTAxLCAyNCwgMSwgMjI4LCAyMjMsIDEwMSwgMjQsIDEsIAorICAgIDIxNiwgMTAxLCAxMDEsIDI0LCAxLCAyMTgsIDIwNCwgMTAxLCAyNCwgMSwgMjIzLCAyNiwgMTAxLCAyNCwgMSwgMjIzLCAyMSwgCisgICAgMTAxLCAyNCwgMSwgMjIzLCAxOCwgMTAxLCAyNCwgMSwgMjIzLCAxMSwgMTAxLCAyNCwgMSwgMjIzLCA2LCAxMDEsIDI0LCAxLCAKKyAgICAyMjMsIDEsIDEwMSwgMjQsIDEsIDIyMywgMTIsIDEwMSwgMjQsIDEsIDIyMywgMjQsIDEwMSwgMjQsIDEsIDIzMCwgMjE3LCAKKyAgICAxMDEsIDI0LCAxLCAyMjUsIDk1LCAxMDEsIDI0LCAxLCAyMTgsIDIxMiwgMTAxLCAyNCwgMSwgMjI1LCA4NCwgMTAxLCAyNCwgCisgICAgMSwgMjE5LCAxNDgsIDEwMSwgMjQsIDEsIDIxOCwgMjA5LCAxMDEsIDI0LCAxLCAyMzYsIDU2LCAxMDEsIDI0LCAxLCAyNTAsIAorICAgIDQ2LCAxMDEsIDI0LCAxLCAyMTgsIDIxOSwgMTAxLCAyNCwgMSwgMjUwLCAxMDYsIDEwMSwgMjQsIDEsIDIzNCwgMTEwLCAKKyAgICAxMDEsIDI0LCAxLCAyMTYsIDE3MywgMTAxLCAyNCwgMSwgMjI1LCAxMzEsIDEwMSwgMjQsIDEsIDI0MSwgMTcyLCAxMDEsIAorICAgIDI0LCAxLCA2MSwgMTAxLCAyNCwgMSwgMjU0LCAyNDMsIDEwMSwgMjQsIDEsIDE5MSwgMTAxLCAyNCwgMSwgMjExLCA5MiwgCisgICAgMTAxLCAyNCwgMSwgMjQ1LCAxMTcsIDEwMSwgMjQsIDEsIDc1LCAxMDEsIDI0LCAxLCAyMTEsIDM2LCAxMDEsIDI0LCAxLCAKKyAgICAyMTEsIDQ3LCAxMDEsIDI0LCAxLCA3NiwgMTAxLCAyNCwgMSwgMjEyLCA2NSwgMTAxLCAyNCwgMSwgMjEyLCA2MiwgMTAxLCAKKyAgICAyNCwgMSwgMjI2LCAyMzQsIDEwMSwgMjQsIDEsIDIxMCwgMjQ0LCAxMDEsIDI0LCAxLCA3MCwgMTAxLCAyNCwgMSwgMjEyLCAKKyAgICAxMSwgMTAxLCAyNCwgMSwgMjEyLCAyMiwgMTAxLCAyNCwgMSwgMjExLCAyNTAsIDEwMSwgMjQsIDEsIDIxMCwgMjEyLCAxMDEsIAorICAgIDI0LCAxLCAyNDUsIDU1LCAxMDEsIDI0LCAxLCAyMTEsIDgsIDEwMSwgMjQsIDEsIDczLCAxMjYsIDI1MCwgMTc2LCA1MCwgCisgICAgMTI2LCAyMjQsIDIyOCwgNTAsIDEyNiwgMjI4LCA1MiwgNTAsIDEyNiwgMjMxLCAyMzIsIDEyNiwgMjUxLCAxMzUsIDEzMCwgCisgICAgMTI2LCAyMTEsIDQwLCA1MCwgMTI2LCAyMTEsIDIxNywgNTAsIDEwMSwgMjQ0LCAxOCwgMTkyLCAyMTMsIDIzOSwgMTAxLCAKKyAgICAxNDAsIDc0LCAxMDEsIDIxNCwgMTUzLCA3NCwgMTAxLCA5NywgNzQsIDEwMSwgMjQ2LCAxMDQsIDc0LCAxMDEsIDg1LCAyMTgsIAorICAgIDIzNCwgMTAxLCA3MSwgMjUwLCAzNSwgMjM1LCAyMDQsIDI1NCwgOTksIDI1NCwgMTIwLCAyMzUsIDIwNCwgMjU0LCA5OSwgCisgICAgMjIwLCAxMzcsIDIzNSwgMjA0LCAyNTQsIDk5LCAyMTYsIDIzNiwgMjI2LCAyNDksIDIyMywgNzIsIDI1MCwgMTQyLCAyMjMsIAorICAgIDcyLCAyNTAsIDE0MiwgNjIsIDU3LCAzLCAyNTMsIDE0MiwgNjEsIDYyLCA1NywgMywgMjUzLCAxMTEsIDc1LCA2MiwgNTcsIAorICAgIDMsIDI1MywgMTIwLCA3MywgNjIsIDU3LCAzLCAyNTMsIDg4LCA3NiwgNjIsIDU3LCAzLCAyNTMsIDEzOCwgNzAsIDYyLCA1NywgCisgICAgMywgMjUzLCAxNTcsIDI0OCwgMjIxLCA2MiwgNTcsIDMsIDI1MywgMTA0LCAyNDgsIDkwLCA2MiwgNTcsIDMsIDI1MywgMTQ0LCAKKyAgICAyNDgsIDMsIDYyLCA1NywgMywgMjUzLCAxMzQsIDI0NywgMTQ1LCA2MiwgNTcsIDMsIDI1MywgOTgsIDI0NiwgNzgsIDYyLCAKKyAgICA1NywgMywgMjUzLCA5MiwgMjM1LCAxNDEsIDYyLCA1NywgMywgMjUzLCAxMDMsIDIzNSwgMTI2LCA2MiwgNTcsIDMsIDI1MywgCisgICAgMTEzLCAyMzUsIDY4LCA2MiwgNTcsIDMsIDI1MywgODQsIDIzNSwgNTEsIDYyLCA1NywgMywgMjUzLCA3MiwgMTc2LCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTA1LCAyMzQsIDE4MiwgNjIsIDU3LCAzLCAyNTMsIDgyLCAyMzQsIDkyLCA2MiwgNTcsIDMsIDI1MywgCisgICAgNzksIDIzNCwgMjgsIDYyLCA1NywgMywgMjUzLCA2OCwgMjMzLCAyMTcsIDYyLCA1NywgMywgMjUzLCA2OSwgMTg0LCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTM1LCAyMzEsIDkxLCA2MiwgNTcsIDMsIDI1MywgNzYsIDIzMCwgMjMwLCA2MiwgNTcsIDMsIDI1MywgCisgICAgMTMzLCAyMzAsIDE2MSwgNjIsIDU3LCAzLCAyNTMsIDEyNSwgMjMwLCAxMDIsIDYyLCA1NywgMywgMjUzLCAxNDYsIDE5NywgCisgICAgNjIsIDU3LCAzLCAyNTMsIDEyNCwgMjI5LCAxMDcsIDYyLCA1NywgMywgMjUzLCAxMTgsIDIyOCwgMjMzLCA2MiwgNTcsIDMsIAorICAgIDI1MywgOTcsIDIyOCwgNzQsIDYyLCA1NywgMywgMjUzLCA5NCwgMjI3LCAyMzcsIDYyLCA1NywgMywgMjUzLCAxNTMsIDE5MCwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDc3LCAyMjUsIDIyMSwgNjIsIDU3LCAzLCAyNTMsIDExMCwgMjI1LCAxMDgsIDYyLCA1NywgMywgCisgICAgMjUzLCAxMzcsIDIyNSwgMTYsIDYyLCA1NywgMywgMjUzLCA5OSwgMjI0LCAxNTAsIDYyLCA1NywgMywgMjUzLCAxMzIsIAorICAgIDIyNCwgODgsIDYyLCA1NywgMywgMjUzLCA3MSwgMjI0LCA2OSwgNjIsIDU3LCAzLCAyNTMsIDEyNywgMjI0LCA1MywgNjIsIAorICAgIDU3LCAzLCAyNTMsIDExNiwgMjI0LCA0MiwgNjIsIDU3LCAzLCAyNTMsIDg5LCAyMDUsIDYyLCA1NywgMywgMjUzLCAxMjEsIAorICAgIDIyMywgMTI4LCA2MiwgNTcsIDMsIDI1MywgOTYsIDIyMywgMzUsIDYyLCA1NywgMywgMjUzLCAxNTUsIDIyMiwgMjExLCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTIyLCAyMjIsIDE0MCwgNjIsIDU3LCAzLCAyNTMsIDExNywgMjA2LCA2MiwgNTcsIDMsIDI1MywgMTQwLCAKKyAgICAyMjEsIDE4MSwgNjIsIDU3LCAzLCAyNTMsIDEwOCwgMjE5LCAxOTEsIDYyLCA1NywgMywgMjUzLCAxMzYsIDIxOSwgNTgsIAorICAgIDYyLCA1NywgMywgMjUzLCA5MSwgMjE4LCA4MywgNjIsIDU3LCAzLCAyNTMsIDkwLCAyMTcsIDEwNSwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDE1MSwgMjE3LCAyMiwgNjIsIDU3LCAzLCAyNTMsIDExMiwgMjE2LCAxMTcsIDYyLCA1NywgMywgMjUzLCAxNDksIAorICAgIDExMSwgNjIsIDU3LCAzLCAyNTMsIDgwLCAyMTUsIDExOCwgNjIsIDU3LCAzLCAyNTMsIDk1LCAyMTIsIDY1LCA2MiwgNTcsIAorICAgIDMsIDI1MywgNzQsIDIxMiwgMjIsIDYyLCA1NywgMywgMjUzLCAxMDksIDIxMSwgMjUwLCA2MiwgNTcsIDMsIDI1MywgMTA3LCAKKyAgICAyMTEsIDIyNywgNjIsIDU3LCAzLCAyNTMsIDEzMSwgMjEwLCAxMTYsIDYyLCA1NywgMywgMjUzLCA3NSwgMjEwLCA5NCwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEyOCwgMjEwLCAyMywgNjIsIDU3LCAzLCAyNTMsIDEyMywgMjU1LCA3NSwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDEwNiwgMjU1LCA3NCwgNjIsIDU3LCAzLCAyNTMsIDY1LCAyNTMsIDE5MiwgNjIsIDU3LCAzLCAyNTMsIDc4LCAyNDYsIDQ2LCAKKyAgICA2MiwgNTcsIDMsIDI1MywgNjEsIDI0NiwgNDUsIDYyLCA1NywgMywgMjUzLCAxMDEsIDIyNywgMTc0LCA2MiwgNTcsIDMsIAorICAgIDI1MywgMTE5LCAyMjQsIDE0OCwgNjIsIDU3LCAzLCAyNTMsIDg3LCAyMjQsIDE1MiwgNjIsIDU3LCAzLCAyNTMsIDczLCAKKyAgICAyMjMsIDE4NiwgNjIsIDU3LCAzLCAyNTMsIDExNSwgMjIzLCAxODUsIDYyLCA1NywgMywgMjUzLCA4MSwgMjIyLCAyMTAsIAorICAgIDYyLCA1NywgMywgMjUzLCA4MywgMjE3LCAxMDIsIDYyLCA1NywgMywgMjUzLCA2MywgMjE1LCA3OCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDYwLCAxMDUsIDYyLCA1NywgMTYsIDI1MywgMTMwLCA2MiwgNTcsIDE2LCAyNTMsIDEyOSwgNjIsIDU3LCAxNiwgCisgICAgMjUzLCAxMjYsIDYyLCA1NywgMTYsIDI1MywgMTE0LCA2MiwgNTcsIDE2LCAyNTMsIDEwMiwgNjIsIDU3LCAxNiwgMjUzLCAKKyAgICAxMDAsIDYyLCA1NywgMTYsIDI1MywgOTMsIDYyLCA1NywgMTYsIDI1MywgODYsIDYyLCA1NywgMTYsIDI1MywgODUsIDYyLCAKKyAgICA1NywgMTYsIDI1MywgNzAsIDYyLCA1NywgMTYsIDI1MywgNjcsIDYyLCA1NywgMTYsIDI1MywgNjYsIDYyLCA1NywgMTYsIAorICAgIDI1MywgNjQsIDYyLCA1NywgMTYsIDI1MywgNjIsIDYyLCA1NywgMTA2LCAyNTMsIDU5LCAyMzEsIDE4NSwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgNTgsIDIxMSwgMjIxLCA2MiwgNTcsIDEwNiwgMjUzLCA1NywgMjQ4LCA3NCwgNjIsIDU3LCAxMDYsIDI1MywgCisgICAgNTYsIDI0NSwgOTUsIDYyLCA1NywgMTA2LCAyNTMsIDU1LCAyMzEsIDE1OSwgNjIsIDU3LCAxMDYsIDI1MywgNTQsIDIxOCwgCisgICAgMTYyLCA2MiwgNTcsIDEwNiwgMjUzLCA1MywgMjQ1LCAzNywgNjIsIDU3LCAxMDYsIDI1MywgNTIsIDIyMywgMTUzLCA2MiwgCisgICAgNTcsIDEwNiwgMjUzLCA1MSwgMjIwLCA2MiwgNjIsIDU3LCAxMDYsIDI1MywgNTAsIDI0MSwgMjM3LCA2MiwgNTcsIDEwNiwgCisgICAgMjUzLCA0OSwgMjE5LCAyNSwgNjIsIDU3LCAxMDYsIDI1MywgNDgsIDI1MSwgMjAzLCA2MiwgNTcsIDEwNiwgMjUzLCA0NywgCisgICAgMjQ5LCAxNDUsIDYyLCA1NywgMTA2LCAyNTMsIDQ2LCAyNTEsIDExNSwgNjIsIDU3LCAxMDYsIDI1MywgNDUsIDIxMiwgMiwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgNDQsIDI1MiwgMTM2LCA2MiwgNTcsIDEwNiwgMjUzLCA0MywgMjI2LCAyMDUsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDQyLCAyMTgsIDI1NCwgNjIsIDU3LCAxMDYsIDI1MywgNDEsIDI0OSwgNjgsIDYyLCA1NywgMjMwLCAxNDIsIAorICAgIDI1MywgNDAsIDIzNCwgMjI0LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTMsIDM5LCAyMzQsIDIzMiwgNjIsIDU3LCAxMDYsIDI1MywgCisgICAgMzgsIDIyNiwgMjE4LCA2MiwgNTcsIDEwNiwgMjUzLCAzNywgMjExLCAyMzYsIDYyLCA1NywgMTA2LCAyNTMsIDM2LCA2MiwgCisgICAgNTcsIDIzMCwgMTQyLCAyNTMsIDM1LCAyNTQsIDE3LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTMsIDM0LCAyMzEsIDUyLCA2MiwgCisgICAgNTcsIDEwNiwgMjUzLCAzMywgMjUxLCAxMzQsIDYyLCA1NywgMTA2LCAyNTMsIDMyLCAyNDIsIDE2NiwgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgMzEsIDYyLCA1NywgMTA2LCAyNTMsIDMwLCAyMTEsIDIxMiwgNjIsIDU3LCAxMDYsIDI1MywgMjksIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDI4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNywgMjQwLCAyNDgsIDYyLCA1NywgMTA2LCAyNTMsIDI2LCA2MiwgCisgICAgNTcsIDEwNiwgMjUzLCAyNSwgNjIsIDU3LCAxMDYsIDI1MywgMjQsIDYyLCA1NywgMjMwLCAxNDIsIDI1MywgMjIsIDIxNSwgCisgICAgOTIsIDYyLCA1NywgMTA2LCAyNTMsIDIxLCA2MiwgNTcsIDEwNiwgMjUzLCAyMCwgNjIsIDU3LCAxMDYsIDI1MywgMTksIAorICAgIDI0OSwgMjUwLCA2MiwgNTcsIDEwNiwgMjUzLCAxOCwgNjIsIDU3LCAxMDYsIDI1MywgMTcsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDE2LCAyNDMsIDkzLCA2MiwgNTcsIDEwNiwgMjUzLCAxNSwgMjU0LCA0LCA2MiwgNTcsIDEwNiwgMjUzLCAxNCwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgMTMsIDYyLCA1NywgMTA2LCAyNTMsIDEyLCA2MiwgNTcsIDEwNiwgMjUzLCAxMSwgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgMTAsIDYyLCA1NywgMTA2LCAyNTMsIDksIDYyLCA1NywgMTA2LCAyNTMsIDgsIDYyLCA1NywgMTA2LCAyNTMsIDcsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDYsIDYyLCA1NywgMTA2LCAyNTMsIDUsIDIzMCwgMTM0LCA2MiwgNTcsIDEwNiwgMjUzLCA0LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCAzLCAyMTUsIDIzNSwgNjIsIDU3LCAxMDYsIDI1MywgMiwgNjIsIDU3LCAxMDYsIDI1MywgMSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgMCwgNjIsIDU3LCAxMDYsIDI1MiwgMjU1LCA2MiwgNTcsIDEwNiwgMjUyLCAyNTQsIDYyLCAKKyAgICA1NywgMTA2LCAyNTIsIDI1MywgNjIsIDU3LCAxMDYsIDI1MiwgMjUyLCA2MiwgNTcsIDEwNiwgMjUyLCAyNTEsIDYyLCA1NywgCisgICAgMTA2LCAyNTIsIDI1MCwgNjIsIDU3LCAxMDYsIDI1MiwgMjQ5LCA2MiwgNTcsIDEwNiwgMjUyLCAyNDgsIDYyLCA1NywgMTA2LCAKKyAgICAyNTIsIDI0NywgMjQxLCAyMTEsIDYyLCA1NywgMTA2LCAyNTIsIDIyNiwgMjQ0LCAyOCwgNjIsIDU3LCAxMDYsIDI1MiwgCisgICAgMjIzLCAyNTIsIDExNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjE4LCAyMTksIDUsIDYyLCA1NywgMTA2LCAyNTIsIDIxNywgNzQsIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDIxNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjE1LCAyMTcsIDIzNiwgNjIsIDU3LCAxMDYsIDI1MiwgCisgICAgMjE0LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTMsIDYyLCA1NywgMTA2LCAyNTIsIDIxMiwgMjExLCAyNTQsIDI1MCwgMTM5LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAyMTEsIDI1MCwgMTM5LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTAsIDI1MCwgMTQwLCAyNDMsIAorICAgIDI1NSwgNjIsIDU3LCAxMDYsIDI1MiwgMjA5LCAyMTIsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDIwOCwgNjIsIDU3LCAxMDYsIAorICAgIDI1MiwgMjA3LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTIsIDIwNiwgMjQ3LCAxOTgsIDYyLCA1NywgMTA2LCAyNTIsIDIwNSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMjA0LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDIsIDYyLCA1NywgMTA2LCAyNTIsIDIwMSwgNjIsIAorICAgIDU3LCAxMDYsIDI1MiwgMjAwLCA2MiwgNTcsIDEwNiwgMjUyLCAxOTksIDI0OCwgMTU5LCA2MiwgNTcsIDEwNiwgMjUyLCAKKyAgICAxOTgsIDYyLCA1NywgMTA2LCAyNTIsIDE5NywgNjIsIDU3LCAxMDYsIDI1MiwgMTk2LCA2MiwgNTcsIDEwNiwgMjUyLCAxOTUsIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDE5NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTMsIDIzLCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjQ2LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAorICAgIDI1MiwgMjQ0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCisgICAgMjQyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQwLCAKKyAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM5LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM4LCA2MiwgNTcsIAorICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM3LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM2LCA2MiwgNTcsIDEwNiwgCisgICAgMjEzLCAxODYsIDI1MiwgMjM1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM0LCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjMzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAorICAgIDI1MiwgMjMxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCisgICAgMjI5LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI4LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI3LCAKKyAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI0LCA2MiwgNTcsIAorICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIxLCA2MiwgNTcsIDEwNiwgCisgICAgMjEzLCAxODYsIDI1MiwgMjIwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjE5LCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjAzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMTkzLCAyNTQsIDIzNiwgMjExLCAyMDksIDIyMCwgCisgICAgMTM4LCAyMzIsIDIxMywgMjU0LCAyMzYsIDIxMSwgMjA5LCAyMjAsIDEzOCwgMjQ3LCAxMjAsIDI1NCwgMjM2LCAyNTAsIAorICAgIDEzMCwgNzgsIDI1NCwgMjM2LCA1NCwgMTEwLCAyNTQsIDIzNiwgNTQsIDEwNSwgMjU0LCAyMzYsIDU0LCAxNTgsIDI1NCwgCisgICAgMjM2LCA1NCwgMTYxLCAyNTQsIDIzNiwgNTQsIDE4OSwgMjU0LCAyMzYsIDU0LCAxOTQsIDI1NCwgMjM2LCA1NCwgMTk4LCAKKyAgICAyNTQsIDIzNiwgNTQsIDE5NSwgMjU0LCAyMzYsIDU0LCAyMDAsIDI1NCwgMjM2LCA1NCwgMjE2LCAyNDcsIDI1NCwgMjM2LCAKKyAgICA1NCwgMjE1LCA3MywgMjU0LCAyMzYsIDU0LCAyMTYsIDE2MiwgMjU0LCAyMzYsIDU0LCAyNDQsIDE1LCAyNTQsIDIzNiwgNTQsIAorICAgIDI0NCwgMTE0LCAyNTQsIDIzNiwgNTQsIDIxOSwgMTExLCAyNTQsIDIzNiwgNTQsIDIyMCwgMTE2LCAyNTQsIDIzNiwgNTQsIAorICAgIDI0NSwgMTg0LCAyNTQsIDIzNiwgNTQsIDIyOCwgMTk1LCAyNTQsIDIzNiwgNTQsIDEyMywgMjQwLCAyMTAsIDI1NCwgMjM2LCAKKyAgICA1NCwgMTEzLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAxMzQsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDI0NCwgMTEsIAorICAgIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDIxOSwgMTI1LCAyNDAsIAorICAgIDIxMCwgMjU0LCAyMzYsIDU0LCAyMjAsIDEyMiwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjQ1LCAxOTMsIDI0MCwgMjEwLCAKKyAgICAyNTQsIDIzNiwgNTQsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAxMjMsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgCisgICAgNTQsIDExMywgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMTM0LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDQsIDExLCAKKyAgICAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDQsIDgxLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMTksIDEyNSwgMjE2LCAKKyAgICAxNDcsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMjIsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NSwgMTkzLCAyMTYsIDE0NywgCisgICAgMjU0LCAyMzYsIDU0LCAyMjgsIDIwMCwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjE2LCAyNDgsIDIxNiwgMTQ3LCAyNTQsIAorICAgIDIzNiwgNTQsIDIxNSwgNzQsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIxNiwgMTYzLCAyMTYsIDE0NywgMjU0LCAyMzYsIAorICAgIDU0LCAyNDQsIDE2LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDQsIDExNSwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgCisgICAgMjE5LCAxMTIsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyMCwgMTE3LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDUsIAorICAgIDE4NSwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjI4LCAxOTYsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgMjEyLCAxNCwgMjUyLCAKKyAgICAxMjgsIDIxNCwgMTczLCAyNTQsIDIzNiwgMjEyLCAxNCwgMjQ0LCA5MiwgMjE4LCA1OSwgMjU0LCAyMzYsIDIxMiwgMTQsIAorICAgIDIyMSwgMTc2LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjEyLCAxNCwgMjE2LCAxNjksIDIxOCwgNTksIDI1NCwgMjM2LCAyMTIsIAorICAgIDE0LCAyNDQsIDQsIDIxOCwgNTksIDI1NCwgMjM2LCAyNDYsIDgxLCAyMzEsIDkwLCAyNDQsIDkyLCAyMTgsIDU5LCAyNTQsIAorICAgIDIzNiwgMjMyLCAxOTksIDIzMSwgOTAsIDI0NCwgOTIsIDIxOCwgNTksIDI1NCwgMjM2LCAyMzEsIDkwLCAyMjEsIDE3NiwgCisgICAgMjE4LCA1OSwgMjU0LCAyMzYsIDIzMSwgOTAsIDIxNiwgMTY5LCAyMTgsIDU5LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyMjQsIDIxLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAyNDIsIDI3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyNDYsIDEwMCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDE4OSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE0LCAyNiwgCisgICAgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyMTYsIAorICAgIDE0NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE1LCAyMTYsIDE0NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgCisgICAgODEsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIDI0OCwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAKKyAgICAxOTQsIDI0NCwgMTE1LCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAyNDAsIDIxMSwgMjE3LCA2NywgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDI0MCwgMjExLCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyMTYsIDE0OCwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDIxNiwgMTQ4LCAyMTcsIDY3LCAyNiwgCisgICAgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIDI0OCwgMjE4LCAKKyAgICAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAorICAgIDI0MCwgMjExLCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDI0MCwgMjExLCAyMTgsIDE1MCwgCisgICAgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjE2LCAxNDgsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAKKyAgICAyNDgsIDIxNiwgMTQ4LCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE1LCAyMTYsIDE0OCwgMjE4LCAKKyAgICAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIDI0OCwgMjMwLCAxNjQsIDI2LCAyNTUsIDYsIDI0MSwgMjA1LCAxMjMsIAorICAgIDIyNSwgMzEsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMTAsIDI2LCAyNTUsIDYsIDI0MSwgMjAxLCAxMTAsIDI2LCAyNTUsIAorICAgIDYsIDI0NSwgMTA0LCAxMDUsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMDUsIDI2LCAyNTUsIDYsIDI0OSwgNjUsIDExMywgCisgICAgMjQ2LCA5OSwgMjYsIDI1NSwgNiwgMjQ1LCAxMDQsIDExMywgMjQ2LCA5OSwgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDE4OSwgCisgICAgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDIxNiwgMjQ3LCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjE2LCAyNDgsIDI1NCwgMTQxLCAKKyAgICAxNywgMjYsIDI1NSwgNiwgMjQxLCAyMDEsIDIxNiwgMjQ3LCAyNiwgMjU1LCA2LCAyMzEsIDQxLCAyMTYsIDI0NywgMjYsIAorICAgIDI1NSwgNiwgMjE2LCAxODEsIDIxNiwgMjQ3LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMjE2LCAxNjIsIDI2LCAyNTUsIDYsIAorICAgIDIxNSwgMjAzLCAyNDQsIDExNCwgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDI0NCwgMTE1LCAyNTQsIDE0MSwgMTcsIDI2LCAKKyAgICAyNTUsIDYsIDI0MSwgMjAxLCAyNDQsIDExNCwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDI0NCwgMTE0LCAyNiwgMjU1LCA2LCAKKyAgICAyMTYsIDE4MSwgMTIzLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDEzNCwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIAorICAgIDI0NSwgMTA0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgCisgICAgMjU1LCA2LCAyMTYsIDE4MSwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDI1MCwgMjI3LCAyNDQsIDgxLCAyNDAsIAorICAgIDIxMCwgMjYsIDI1NSwgNiwgMjI5LCAxODIsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTIzLCAKKyAgICAyMTYsIDE0NywgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDI0NCwgODEsIDIxNiwgMTQ3LCAyNiwgMjU1LCA2LCAyNDgsIDU3LCAKKyAgICAyNDQsIDgxLCAyMzAsIDE2NCwgMjYsIDI1NSwgNiwgMjE4LCAxMTgsIDI0NCwgMTE1LCAyMzAsIDE2NCwgMjYsIDEyMywgCisgICAgMTYzLCA1MCwgMjYsIDEyMywgMTYzLCA1LCAyNTQsIDE0MSwgMTcsIDI2LCAxMTMsIDIxNiwgMTY3LCA1MCwgMjYsIDEzNCwgCisgICAgMjI0LCAyMCwgNTAsIDI2LCAyMTEsIDQ1LCA1MCwgMjYsIDIxNywgNjgsIDUwLCAyNiwgMjQ2LCAxMDEsIDUwLCAyNiwgMjI2LCAKKyAgICAyNDYsIDUwLCAyNiwgMTEzLCAyMjYsIDI0NSwgNTAsIDI2LCAxMzQsIDIyNiwgMjQ1LCA1MCwgMjYsIDI0NCwgMTEsIDIyNiwgCisgICAgMjQ1LCA1MCwgMjYsIDI0NCwgODEsIDIyNiwgMjQ1LCA1MCwgMjYsIDIzMSwgMzUsIDUwLCAyNiwgMjMzLCAxNTcsIDI1MiwgCisgICAgMTI4LCA1MCwgMjYsIDIzMiwgMTk0LCA1MCwgMjYsIDIyNiwgMTMxLCA1MCwgMjYsIDIxMSwgMTU5LCA1MCwgMjYsIDI1MywgCisgICAgMjQzLCA1MCwgMjYsIDI1NCwgMCwgNTAsIDI2LCAyNDIsIDE0NCwgNTAsIDI2LCAyMTUsIDE4NiwgMjUyLCAxMjgsIDUwLCAKKyAgICAyNiwgMjEwLCA4NywgNTAsIDIyMiwgMTk4LCAyMjAsIDExMywgNTAsIDIyMiwgMTk4LCAyMTQsIDE4NSwgNTAsIDIyMiwgCisgICAgMTk4LCAyMjAsIDE0MiwgNTAsIDIyMiwgMTk4LCAyMjAsIDExMSwgNTAsIDIyMiwgMTk4LCAyNDcsIDIxMywgMjIwLCAxMTEsIAorICAgIDUwLCAyMjIsIDE5OCwgMjE5LCAxNjgsIDUwLCAyMjIsIDE5OCwgMjQ4LCA1MywgNTAsIDIyMiwgMTk4LCAyMjQsIDYsIDUwLCAKKyAgICAyMjIsIDE5OCwgMjIwLCAxMjksIDUwLCAyMjIsIDE5OCwgMjQ2LCA2MCwgNTAsIDIyMiwgMTk4LCAyNTMsIDIzOCwgNTAsIAorICAgIDIyMiwgMTk4LCAyNTAsIDE3MSwgNTAsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI1LCAyMTMsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjI1LCAyNCwgMjQxLCAyMzUsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE3LCA0NSwgMjQxLCAyMzUsIDIyNSwgCisgICAgMTQzLCAyNDcsIDE5MSwgNSwgMjUwLCAyNDcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUwLCAxMDEsIDIyNSwgMTQzLCAKKyAgICAyNDcsIDE5MSwgNSwgMjExLCAyMjEsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQxLCAyMTEsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjQzLCA4NSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTYsIDExNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICA3NCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTEsIDE2OSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjAsIDI5LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDI0OSwgMjQ0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIzMSwgMTg0LCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDIzMSwgMTM2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyMSwgMjE2LCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIzMiwgMjM3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MSwgMTg4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAorICAgIDI1MCwgMjMxLCAyMjUsIDM1LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0NywgMTMzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIAorICAgIDUsIDI0OSwgMjIzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxOSwgODcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ5LCAKKyAgICAyMjQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUyLCA2MywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjAsIDE2LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDI0MCwgMjQ4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0MSwgMTc4LCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDI1MSwgMTEyLCAyMzMsIDM2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMjI0LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDIyMywgMTUzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0NSwgMjMwLCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDI0NiwgMTA3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxNSwgMTA1LCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDI1MiwgNjYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI1LCAzNiwgMjE1LCAyMzUsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjEzLCAxNTksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI2LCAxOCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICAyMjIsIDE5MCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMzIsIDIyNCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjYsIAorICAgIDExNSwgMjUyLCAxODQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ0LCA0OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICAyNDIsIDEzOCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTgsIDExOSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCA0LCAyNTMsIAorICAgIDE2OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTIsIDMyLCAyNTIsIDE0OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAzOCwgCisgICAgMjI2LCAyNDgsIDkxLCAyMzIsIDYwLCAxLCA2MSwgMjMyLCA2MCwgMSwgNzUsIDIzMiwgNjAsIDEsIDI1MywgMTU4LCAyMzIsIAorICAgIDYwLCAxLCAyNTIsIDE5LCAyMzIsIDYwLCAxLCAyNDMsIDIwMiwgMjMyLCA2MCwgMSwgMjQ5LCA2MCwgMjMyLCA2MCwgMSwgCisgICAgNzMsIDIzMiwgNjAsIDEsIDIxMiwgOTgsIDIzMiwgNjAsIDEsIDIxMCwgMTU5LCAyMzIsIDYwLCAxLCAyMTYsIDIxMCwgMjMyLCAKKyAgICA2MCwgMSwgMjM1LCAxNDQsIDIzMiwgNjAsIDEsIDIzNSwgMjMsIDIzMiwgNjAsIDEsIDIyNCwgOTYsIDIzMiwgNjAsIDEsIAorICAgIDE1NiwgMjMyLCA2MCwgMSwgMTkzLCAyMzIsIDYwLCAxLCAyMzAsIDI1LCAyMzIsIDYwLCAxLCAyMzAsIDE2NiwgMjMyLCA2MCwgCisgICAgMSwgMjI4LCAxMTEsIDIzMiwgNjAsIDEsIDcwLCAyMzIsIDYwLCAxLCAyMjYsIDEwNSwgMjMyLCA2MCwgMSwgMjM0LCA0NywgCisgICAgMjMyLCA2MCwgMSwgMTUzLCAyMzIsIDYwLCAxLCAyMjIsIDkxLCAyMzIsIDYwLCAxLCAyMTcsIDE1MiwgMjMyLCA2MCwgMSwgCisgICAgMjE1LCAxNTksIDIzMiwgNjAsIDEsIDI1NCwgMTIzLCAyMzIsIDYwLCAxLCAyNDUsIDE1MCwgMjMyLCA2MCwgMSwgMjQyLCAKKyAgICA2MCwgMjMyLCA2MCwgMSwgMjExLCAxNzgsIDI1MCwgMjM3LCAxLCA2MSwgMjUwLCAyMzcsIDEsIDIyNiwgOTEsIDI1MCwgCisgICAgMjM3LCAxLCAyNDksIDYwLCAyNTAsIDIzNywgMSwgMTU2LCAyNTAsIDIzNywgMSwgMjE0LCAxMTYsIDI1MCwgMjM3LCAxLCAKKyAgICAxNTMsIDI1MCwgMjM3LCAxLCAyMzMsIDYyLCAyNTAsIDIzNywgMSwgMjU1LCA3NSwgMjUwLCAyMzcsIDEsIDIyNCwgOTYsIAorICAgIDI1MCwgMjM3LCAxLCAyNTMsIDE1OCwgMjUwLCAyMzcsIDEsIDE5MywgMjUwLCAyMzcsIDEsIDc2LCAyNTAsIDIzNywgMSwgCisgICAgMjQ4LCAyMjMsIDI1MCwgMjM3LCAxLCAyMTcsIDE1MiwgMjUwLCAyMzcsIDEsIDIyMCwgMTA0LCAyNTAsIDIzNywgMSwgMjIwLCAKKyAgICAxMDMsIDI1MCwgMjM3LCAxLCAyMjIsIDkxLCAyNTAsIDIzNywgMSwgMjUxLCA2NSwgMjUwLCAyMzcsIDEsIDcwLCAyNTAsIAorICAgIDIzNywgMSwgMjI4LCAxMTEsIDI1MCwgMjM3LCAxLCAyMTEsIDE3OCwgMjUwLCAyMzcsIDEsIDIzMCwgMjUsIDI1MCwgMjM3LCAKKyAgICAxLCAyMTUsIDE1OCwgMjUwLCAyMzcsIDEsIDIyNiwgMTA1LCAyNTAsIDIzNywgMSwgMjE4LCAyMjYsIDI1MCwgMjM3LCAxLCAKKyAgICA3MywgMjUwLCAyMzcsIDEsIDc1LCAyNTAsIDIzNywgMSwgMjE0LCAxMTMsIDI1MCwgMjM3LCAxLCAyMzUsIDIzLCAyNTAsIAorICAgIDIzNywgMSwgMjM1LCAxNCwgMjUwLCAyMzcsIDEsIDIyOSwgMTUwLCAyNTAsIDIzNywgMSwgMjE0LCAxMTgsIDI1MCwgMjM3LCAKKyAgICAxLCAyNDMsIDIwMiwgMjUwLCAyMzcsIDEsIDI0MywgMTM3LCAyNTAsIDIzNywgMSwgMjE4LCAxNjgsIDI1MCwgMjM3LCAxLCAKKyAgICAyMTgsIDE2NywgMjUwLCAyMzcsIDEsIDIyOSwgNzksIDI1MCwgMjM3LCAxLCAyMzYsIDMzLCAyNTAsIDIzNywgMSwgMjUxLCAKKyAgICA2NCwgMjUwLCAyMzcsIDEsIDIxNSwgMTU5LCAyNTAsIDIzNywgMSwgMjE0LCAxMTUsIDI1MCwgMjM3LCAxLCAyMjIsIDE4MCwgCisgICAgMjUwLCAyMzcsIDEsIDIzMSwgMTI5LCAyNTAsIDIzNywgMSwgMjMxLCAxMjgsIDI1MCwgMjM3LCAxLCAyMzEsIDEyNywgMjUwLCAKKyAgICAyMzcsIDEsIDIzMSwgMTI2LCAyNTAsIDIzNywgMSwgMjMzLCA2MSwgMjUwLCAyMzcsIDEsIDI0NSwgMjM0LCAyNTAsIDIzNywgCisgICAgMSwgMjE0LCAxMTQsIDU1LCAzMiwgMSwgNjEsIDU1LCAzMiwgMSwgMjUyLCA3NSwgNTUsIDMyLCAxLCAyMzQsIDE4MiwgNTUsIAorICAgIDMyLCAxLCAyNDgsIDkwLCA1NSwgMzIsIDEsIDc1LCA1NSwgMzIsIDEsIDIxMywgMjU1LCA1NSwgMzIsIDEsIDIxMCwgOTQsIAorICAgIDU1LCAzMiwgMSwgMjQxLCAyMzgsIDU1LCAzMiwgMSwgMjE2LCAxOTUsIDU1LCAzMiwgMSwgNzMsIDU1LCAzMiwgMSwgMTc2LCAKKyAgICA1NSwgMzIsIDEsIDI0NSwgMTc0LCA1NSwgMzIsIDEsIDI0NSwgMTU5LCA1NSwgMzIsIDEsIDI0NSwgMTUwLCA1NSwgMzIsIDEsIAorICAgIDI0NSwgNzUsIDU1LCAzMiwgMSwgNzYsIDU1LCAzMiwgMSwgMjI1LCAyMjEsIDU1LCAzMiwgMSwgMjIwLCA2MywgNTUsIDMyLCAKKyAgICAxLCAyMzMsIDIxNywgNTUsIDMyLCAxLCAyNDUsIDkyLCA1NSwgMzIsIDEsIDI0NSwgODIsIDU1LCAzMiwgMSwgMjE3LCAyMiwgCisgICAgNTUsIDMyLCAxLCA3MCwgNTUsIDMyLCAxLCAyNDUsIDE3NywgNTUsIDMyLCAxLCAyMjUsIDEzNiwgNTUsIDMyLCAxLCAyMzQsIAorICAgIDExOSwgNTUsIDMyLCAxLCAyNDUsIDIwMiwgNTUsIDMyLCAxLCAyNDUsIDg0LCA1NSwgMzIsIDEsIDI1MCwgMTMxLCA1NSwgCisgICAgMzIsIDEsIDIzNiwgMzMsIDU1LCAzMiwgMSwgMjE0LCAxMTgsIDU1LCAzMiwgMjI3LCAxOTgsIDExMCwgNTUsIDMyLCAyMjcsIAorICAgIDE5OCwgMTg5LCA1NSwgMzIsIDIyNywgMTk4LCAyMTYsIDI0NywgNTUsIDMyLCAyMjcsIDE5OCwgMjQ0LCAxMTQsIDI0MiwgCisgICAgMTUzLCAxLCAyNTQsIDIwNCwgMjQyLCAxNTMsIDEsIDI1MiwgMTYzLCAyNDIsIDE1MywgMSwgMjQyLCAyMTEsIDI0MiwgMTUzLCAKKyAgICAxLCAyNDgsIDIwNCwgMjQyLCAxNTMsIDEsIDI1NCwgMjAwLCAyNDIsIDE1MywgMSwgMjI0LCA3OSwgMjQyLCAxNTMsIDEsIAorICAgIDIzNSwgMTU1LCAyNDIsIDE1MywgMSwgMjQyLCAzOSwgMjQyLCAxNTMsIDEsIDIxNiwgMTU4LCAyNDIsIDE1MywgMSwgMjQ1LCAKKyAgICAxODMsIDI0MiwgMTUzLCAxLCAyMzMsIDE5MCwgMjQyLCAxNTMsIDEsIDIzMywgMTEzLCAyNDIsIDE1MywgMSwgMjMxLCAxNzksIAorICAgIDI0MiwgMTUzLCAxLCAyMjksIDE4NCwgMjQyLCAxNTMsIDEsIDIzNSwgMTE5LCAyNDIsIDE1MywgMSwgMjE0LCAxMzYsIDI0MiwgCisgICAgMTUzLCAxLCAyMjYsIDY5LCAyNDIsIDE1MywgMSwgMjI4LCAxOTUsIDI0MiwgMTUzLCAxLCAyMjMsIDE2NSwgMjQyLCAxNTMsIAorICAgIDEsIDIyMSwgMjE4LCAyNDIsIDE1MywgMSwgMjE3LCA0LCAyNDIsIDE1MywgMSwgMjExLCAyMzQsIDI0MiwgMTUzLCAxLCAKKyAgICAyNDQsIDE3OCwgMjQyLCAxNTMsIDEsIDIzNiwgMzcsIDI0MiwgMTUzLCAxLCAyNDAsIDE5OSwgMjQyLCAxNTMsIDEsIDIyNiwgCisgICAgMTM5LCAyNDIsIDE1MywgMSwgMjI4LCAyMDAsIDI0MCwgMjEwLCAyMTQsIDIwOSwgMSwgMjU0LCAxNDcsIDIxNCwgMjA5LCAxLCAKKyAgICAyNTIsIDI2LCAyMTQsIDIwOSwgMSwgMjQzLCAxMDgsIDIxNCwgMjA5LCAxLCAyMzQsIDEzMiwgMjE0LCAyMDksIDEsIDI0OCwgCisgICAgNTQsIDIxNCwgMjA5LCAxLCAyNDEsIDY4LCAyMTQsIDIwOSwgMSwgMjExLCAyMjcsIDIxNCwgMjA5LCAxLCAyMTAsIDg1LCAKKyAgICAyMTQsIDIwOSwgMSwgMjQwLCAyNDEsIDIxNCwgMjA5LCAxLCAyMTYsIDIzMCwgMjE0LCAyMDksIDEsIDIxMCwgMjMzLCAyMTQsIAorICAgIDIwOSwgMSwgMjM0LCAyNTAsIDIxNCwgMjA5LCAxLCAyMjAsIDIwLCAyMTQsIDIwOSwgMSwgMjMzLCA5OCwgMjE0LCAyMDksIAorICAgIDEsIDIzMSwgNjUsIDIxNCwgMjA5LCAxLCAyNDgsIDIxLCAyMTQsIDIwOSwgMSwgMjI3LCAxOTQsIDIxNCwgMjA5LCAxLCAKKyAgICAyMTAsIDEzLCAyMTQsIDIwOSwgMSwgMjIxLCAyNDgsIDIxNCwgMjA5LCAxLCAyNTQsIDE5NiwgMjE0LCAyMDksIDEsIDIyNCwgCisgICAgMTUwLCAyMTQsIDIwOSwgMSwgMjIyLCAyNSwgMjE0LCAyMDksIDEsIDIyNCwgMzUsIDIxNCwgMjA5LCAxLCAyMjMsIDE0NCwgCisgICAgMjE0LCAyMDksIDEsIDIxNiwgMTk5LCAyMTQsIDIwOSwgMSwgMjQyLCAyNDQsIDIxNCwgMjA5LCAxLCAxMTEsIDIxNCwgMjA5LCAKKyAgICAxLCA3MywgMjE0LCAyMDksIDEsIDcwLCAyMTQsIDIwOSwgMSwgMjE4LCAxNzksIDIxNCwgMjA5LCAyMTEsIDIwOSwgMjQ3LCAKKyAgICAxNzIsIDU1LCAyMjUsIDE2OSwgNSwgNjEsIDU1LCAyMjUsIDE2OSwgNSwgNzMsIDU1LCAyMjUsIDE2OSwgNSwgNzAsIDU1LCAKKyAgICAyMjUsIDE2OSwgNSwgMTc2LCA1NSwgMjI1LCAxNjksIDUsIDIzMywgMjE3LCA1NSwgMjI1LCAxNjksIDUsIDI0MywgMTM1LCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI0MiwgMTEzLCA1NSwgMjI1LCAxNjksIDUsIDIxMSwgMTY1LCA1NSwgMjI1LCAxNjksIDUsIAorICAgIDI1MSwgMzMsIDU1LCAyMjUsIDE2OSwgNSwgMjM1LCAxNDEsIDU1LCAyMjUsIDE2OSwgNSwgMjM1LCAxMDgsIDU1LCAyMjUsIAorICAgIDE2OSwgNSwgMjE3LCAxMDUsIDU1LCAyMjUsIDE2OSwgNSwgMjE1LCAxMTgsIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAyMjEsIAorICAgIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAzLCA1NSwgMjI1LCAxNjksIDUsIDI0NiwgNzgsIDU1LCAyMjUsIDE2OSwgNSwgMjE2LCAKKyAgICAyMDgsIDU1LCAyMjUsIDE2OSwgNSwgMTkwLCA1NSwgMjI1LCAxNjksIDUsIDI1MiwgMTkxLCA1NSwgMjI1LCAxNjksIDUsIAorICAgIDI0NCwgMTk2LCA1NSwgMjI1LCAxNjksIDUsIDE5NywgNTUsIDIyNSwgMTY5LCA1LCAyMjcsIDIzNywgNTUsIDIyNSwgMTY5LCAKKyAgICA1LCAxODQsIDU1LCAyMjUsIDE2OSwgNSwgMjMwLCAyMzAsIDU1LCAyMjUsIDE2OSwgNSwgMjMwLCAxMDIsIDU1LCAyMjUsIAorICAgIDE2OSwgNSwgMTkxLCA1NSwgMjI1LCAxNjksIDUsIDIxNCwgMjcsIDU1LCAyMjUsIDE2OSwgNSwgMjEzLCAxNzYsIDU1LCAKKyAgICAyMjUsIDE2OSwgNSwgMjA1LCA1NSwgMjI1LCAxNjksIDUsIDIyMiwgMTQwLCA1NSwgMjI1LCAxNjksIDUsIDIzMywgMTM1LCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDIwNiwgNTUsIDIyNSwgMTY5LCA1LCAyMTAsIDExNiwgNTUsIDIyNSwgMTY5LCA1LCAyMjAsIAorICAgIDEwMiwgNTUsIDIyNSwgMTY5LCA1LCAyMTgsIDIyMywgNTUsIDIyNSwgMTY5LCA1LCAxNjIsIDU1LCAyMjUsIDE2OSwgNSwgCisgICAgMjUzLCAxODYsIDU1LCAyMjUsIDE2OSwgNSwgMjUzLCAxODUsIDU1LCAyMjUsIDE2OSwgNSwgMjUzLCAxODQsIDU1LCAyMjUsIAorICAgIDE2OSwgNSwgMjExLCAxNDIsIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAyMDAsIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAxOTksIAorICAgIDU1LCAyMjUsIDE2OSwgNSwgMjUyLCAxNzAsIDU1LCAyMjUsIDE2OSwgNSwgMjUxLCA4NSwgNTUsIDIyNSwgMTY5LCAyMTEsIAorICAgIDIwOSwgMjQ3LCAxNzIsIDU1LCAyMjUsIDE2OSwgNTQsIDExMCwgNTUsIDIyNSwgMTY5LCA1NCwgMTA1LCA1NSwgMjI1LCAKKyAgICAxNjksIDU0LCAyMTYsIDI0NywgNTUsIDIyNSwgMTY5LCA1NCwgMjE1LCA3MywgNTUsIDIyNSwgMTY5LCA1NCwgMjQwLCAyMTAsIAorICAgIDE4MSwgNiwgMSwgMTk5LCA3MywgMTgxLCA2LCAxLCAxOTksIDc1LCAxODEsIDYsIDEsIDE5OSwgNjEsIDE4MSwgNiwgMSwgCisgICAgMTk5LCAyNTQsIDIwOSwgMTgxLCA2LCAxLCAxOTksIDc2LCAxODEsIDYsIDEsIDE5OSwgMjI2LCAxODMsIDE4MSwgNiwgMSwgCisgICAgMjE5LCAyNTEsIDczLCAxODEsIDYsIDEsIDIxOSwgMjUxLCA3NSwgMTgxLCA2LCAxLCAyMTksIDI1MSwgNjEsIDE4MSwgNiwgCisgICAgMSwgMjE5LCAyNTEsIDI1NCwgMjA5LCAxODEsIDYsIDEsIDIxOSwgMjUxLCA3NiwgMTgxLCA2LCAxLCAyMTksIDI1MSwgMjI2LCAKKyAgICAxODMsIDE4MSwgNiwgMSwgMjUzLCAxNjcsIDE4MSwgNiwgMSwgMjI2LCAxMTYsIDE4MSwgNiwgMSwgMjExLCAxOTUsIDE4MSwgCisgICAgNiwgMSwgMjExLCA0NCwgMTgxLCA2LCAxLCAyNDIsIDYwLCAxODEsIDYsIDEsIDIyNSwgMjExLCAxODEsIDYsIDEsIDI1MiwgCisgICAgNjYsIDE4MSwgNiwgMSwgMjE3LCAxMSwgMTgxLCA2LCAxLCAyNDgsIDc3LCAxODEsIDYsIDEsIDI1MCwgMTI4LCAxODEsIDYsIAorICAgIDEsIDIzNSwgMTI0LCAxODEsIDYsIDEsIDIzNCwgMTg5LCAxODEsIDYsIDEsIDI0MywgODMsIDE4MSwgNiwgMSwgMjQ1LCAKKyAgICAyMDIsIDE4MSwgNiwgMSwgMjEzLCAyNTAsIDE4MSwgNiwgMSwgMjQ1LCA1OSwgMTgxLCA2LCAxLCAyMTYsIDE5NCwgMTgxLCAKKyAgICA2LCAxLCAyNDUsIDgyLCAxODEsIDYsIDEsIDIxMCwgOTIsIDE4MSwgNiwgMSwgMjQ1LCA3NSwgMTgxLCA2LCAxLCAyMTAsIAorICAgIDczLCAxODEsIDYsIDEsIDI0NSwgOTIsIDE4MSwgNiwgMSwgMjQ1LCAxNzQsIDE4MSwgNiwgMSwgMjQ1LCAxNTksIDE4MSwgNiwgCisgICAgMSwgMjQ1LCAxNTAsIDE4MSwgNiwgMSwgMjQ1LCAxMzgsIDE4MSwgNiwgMSwgMjI2LCAyMTksIDE4MSwgNiwgMSwgMjQ1LCAKKyAgICAzOCwgMTgxLCA0LCAxLCAxOTksIDczLCAxODEsIDQsIDEsIDE5OSwgNzUsIDE4MSwgNCwgMSwgMTk5LCA2MSwgMTgxLCA0LCAKKyAgICAxLCAxOTksIDI1NCwgMjA5LCAxODEsIDQsIDEsIDE5OSwgNzYsIDE4MSwgNCwgMSwgMTk5LCAyMjYsIDE4MywgMTgxLCA0LCAKKyAgICAxLCAyMTksIDI1MSwgNzMsIDE4MSwgNCwgMSwgMjE5LCAyNTEsIDc1LCAxODEsIDQsIDEsIDIxOSwgMjUxLCA2MSwgMTgxLCAKKyAgICA0LCAxLCAyMTksIDI1MSwgMjU0LCAyMDksIDE4MSwgNCwgMSwgMjE5LCAyNTEsIDc2LCAxODEsIDQsIDEsIDIxOSwgMjUxLCAKKyAgICAyMjYsIDE4MywgMTgxLCA0LCAxLCAyNTMsIDE2NywgMTgxLCA0LCAxLCAyMjYsIDExNiwgMTgxLCA0LCAxLCAyMTEsIDE5NSwgCisgICAgMTgxLCA0LCAxLCAyMTEsIDQ0LCAxODEsIDQsIDEsIDI0MiwgNjAsIDE4MSwgNCwgMSwgMjI1LCAyMTEsIDE4MSwgNCwgMSwgCisgICAgMjUyLCA2NiwgMTgxLCA0LCAxLCAyMTcsIDExLCAxODEsIDQsIDEsIDI0OCwgNzcsIDE4MSwgNCwgMSwgMjUwLCAxMjgsIAorICAgIDE4MSwgNCwgMSwgMjM1LCAxMjQsIDE4MSwgNCwgMSwgMjM0LCAxODksIDE4MSwgNCwgMSwgMjQzLCA4MywgMTgxLCA0LCAxLCAKKyAgICAyNDUsIDIwMiwgMTgxLCA0LCAxLCAyMTMsIDI1MCwgMTgxLCA0LCAxLCAyNDUsIDU5LCAxODEsIDQsIDEsIDIxNiwgMTk0LCAKKyAgICAxODEsIDQsIDEsIDI0NSwgODIsIDE4MSwgNCwgMSwgMjEwLCA5MiwgMTgxLCA0LCAxLCAyNDUsIDc1LCAxODEsIDQsIDEsIAorICAgIDIxMCwgNzMsIDE4MSwgNCwgMSwgMjQ1LCA5MiwgMTgxLCA0LCAxLCAyNDUsIDE3NCwgMTgxLCA0LCAxLCAyNDUsIDE1OSwgCisgICAgMTgxLCA0LCAxLCAyNDUsIDE1MCwgMTgxLCA0LCAxLCAyNDUsIDEzOCwgMTgxLCA0LCAxLCAyMjYsIDIxOSwgMTgxLCA0LCAxLCAKKyAgICAyNDUsIDM4LCAyMjAsIDY5LCAxLCAyMjUsIDIwOSwgMjIwLCA2OSwgMSwgMjE2LCA1LCAyMjAsIDY5LCAxLCAyMzQsIDkxLCAKKyAgICAyMjAsIDY5LCAxLCAyNDQsIDE0NywgMjIwLCA2OSwgMSwgMjE2LCAxNzIsIDIyMCwgNjksIDEsIDIxOSwgNTgsIDIyMCwgNjksIAorICAgIDEsIDIxOCwgMTQsIDIyMCwgNjksIDEsIDI1MCwgNjEsIDIyMCwgNjksIDEsIDIxMSwgNDYsIDIyMCwgNjksIDEsIDI0MCwgCisgICAgMjA5LCAyMjAsIDY5LCAxLCAyNTIsIDUsIDIyMCwgNjksIDEsIDI0OCwgODksIDIyMCwgNjksIDEsIDI0MywgMTIxLCAyMjAsIAorICAgIDY5LCAxLCAyMTMsIDEyMywgMjIwLCA2OSwgMSwgMjE2LCAxNzYsIDIyMCwgNjksIDEsIDIxMCwgMjEsIDIyMCwgNjksIDEsIAorICAgIDIzMSwgODksIDIyMCwgNjksIDEsIDIzNSwgNDksIDIyMCwgNjksIDEsIDIxMSwgMjI1LCAyMjAsIDY5LCAxLCAyNDIsIDQ4LCAKKyAgICAyMjAsIDY5LCAxLCAyMzIsIDE0MiwgMjIwLCA2OSwgMSwgMjMwLCAxODksIDIyMCwgNjksIDEsIDIzNiwgNDAsIDIyMCwgNjksIAorICAgIDEsIDI0NSwgMjAxLCAyMjAsIDY5LCAxLCAyNTMsIDIzMSwgMjIwLCA2OSwgMSwgMjU0LCAyNDcsIDIyMCwgNjksIDEsIDIyNiwgCisgICAgMTk2LCAyMjAsIDY5LCAxLCAyMTEsIDIxMiwgMjIwLCA2OSwgMSwgMjI2LCAxMzAsIDIyMCwgNjksIDEsIDI1NCwgMjA5LCAKKyAgICAyMjAsIDY5LCAxLCAyMjIsIDIwOCwgMjIwLCA2OSwgMSwgMjI3LCAxOTQsIDIyMCwgNjksIDEsIDI0NSwgMjE3LCAyMjAsIAorICAgIDY5LCAxLCAyNTQsIDIxNCwgMjIwLCA2OSwgMSwgMjQwLCAxMTEsIDIyMCwgNjksIDEsIDIxNCwgMTYzLCAyMjAsIDY5LCAxLCAKKyAgICAyMjYsIDI1NCwgMjIwLCA2OSwgMSwgMjI2LCAxNzYsIDIyMCwgNjksIDEsIDIyNiwgMjE4LCAyMjAsIDY5LCAxLCAyNTMsIAorICAgIDE3MCwgMjIwLCA2OSwgMSwgMjU0LCAxOSwgMjIwLCA2OSwgMSwgMjI2LCAxNTgsIDIyMCwgNjksIDEsIDI1NCwgMTkyLCAKKyAgICAyMjAsIDY5LCAxLCAyNDUsIDg2LCAyMjAsIDY5LCAxLCAyNTMsIDI1MywgMjIwLCA2OSwgMSwgMjQ1LCAyMjcsIDIyMCwgNjksIAorICAgIDEsIDI0MCwgMTE4LCAyMjAsIDY5LCAxLCAyMTEsIDEzLCAyMjYsIDE0MSwgMSwgMjU0LCAxNzAsIDIyNiwgMTQxLCAxLCAKKyAgICAyNTIsIDE5MSwgMjI2LCAxNDEsIDEsIDIxNywgMTA1LCAyMjYsIDE0MSwgMSwgMjM1LCAxNDEsIDIyNiwgMTQxLCAxLCAyMTEsIAorICAgIDE2NSwgMjI2LCAxNDEsIDEsIDIzNCwgMTMyLCAyMjYsIDE0MSwgMSwgMjQ4LCA3NiwgMjI2LCAxNDEsIDEsIDIwNSwgMjI2LCAKKyAgICAxNDEsIDEsIDIwNiwgMjI2LCAxNDEsIDEsIDIyMCwgMjYsIDIyNiwgMTQxLCAxLCAyNDgsIDI1LCAyMjYsIDE0MSwgMSwgCisgICAgMjUwLCAyMTUsIDIyNiwgMTQxLCAxLCAyNDMsIDEzNSwgMjI2LCAxNDEsIDEsIDI0NCwgMTk2LCAyMjYsIDE0MSwgMSwgMjI0LCAKKyAgICA4NiwgMjI2LCAxNDEsIDEsIDIzNSwgOSwgMjI2LCAxNDEsIDEsIDIzMywgMTMwLCAyMjYsIDE0MSwgMSwgMjMwLCAyMDAsIAorICAgIDIyNiwgMTQxLCAxLCAyMjcsIDE3OCwgMjI2LCAxNDEsIDEsIDIxMiwgMzAsIDIyNiwgMTQxLCAxLCAxNjIsIDIyNiwgMTQxLCAKKyAgICAxLCAxOTEsIDIyNiwgMTQxLCAxLCA2MSwgMjI2LCAxNDEsIDEsIDc1LCAyMjYsIDE0MSwgMSwgNzMsIDIyNiwgMTQxLCAxLCAKKyAgICA3NiwgMjI2LCAxNDEsIDEsIDcwLCAyMjYsIDE0MSwgMSwgMjU1LCA3MywgMjI2LCAxNDEsIDEsIDI0NSwgMjA5LCAyMjYsIAorICAgIDE0MSwgMSwgMjI2LCAxODMsIDIyNiwgMTQxLCAyMSwgMjEwLCA4NiwgMjI2LCAxNDEsIDIxLCAxMTAsIDIyNiwgMTQxLCAyMSwgCisgICAgMTA1LCAyMjYsIDE0MSwgMjEsIDE1OCwgMjI2LCAxNDEsIDIxLCAxNjEsIDIyNiwgMTQxLCAyMSwgMTg5LCAyMjYsIDE0MSwgCisgICAgMjEsIDE5NCwgMjI2LCAxNDEsIDIxLCAxOTgsIDIyNiwgMTQxLCAyMSwgMTk1LCAyMjYsIDE0MSwgMjEsIDIwMCwgMjQ5LCAKKyAgICA2NywgMywgNjEsIDI0OSwgNjcsIDMsIDc1LCAyNDksIDY3LCAzLCA3MywgMjQ5LCA2NywgMywgNzYsIDI0OSwgNjcsIDMsIAorICAgIDcwLCAyNDksIDY3LCAzLCAyMzUsIDE0MSwgMjQ5LCA2NywgMywgMjM1LCA2OCwgMjQ5LCA2NywgMywgMTc2LCAyNDksIDY3LCAKKyAgICAzLCAyMzQsIDE4MiwgMjQ5LCA2NywgMywgMjM0LCA5MiwgMjQ5LCA2NywgMywgMjM0LCAyOCwgMjQ5LCA2NywgMywgMjMzLCAKKyAgICAyMTcsIDI0OSwgNjcsIDMsIDIzMywgMTM1LCAyNDksIDY3LCAzLCAyMzMsIDU4LCAyNDksIDY3LCAzLCAyMzIsIDI0MSwgCisgICAgMjQ5LCA2NywgMywgMjMyLCAxNTYsIDI0OSwgNjcsIDMsIDIzMiwgOTgsIDI0OSwgNjcsIDMsIDE4NCwgMjQ5LCA2NywgMywgCisgICAgMjMxLCA5MSwgMjQ5LCA2NywgMywgMjMwLCAyMzAsIDI0OSwgNjcsIDMsIDIzMCwgMTYxLCAyNDksIDY3LCAzLCAyMzAsIAorICAgIDEwMiwgMjQ5LCA2NywgMywgMTk3LCAyNDksIDY3LCAzLCAyMjksIDEwNywgMjQ5LCA2NywgMywgMjI4LCAyMzMsIDI0OSwgCisgICAgNjcsIDMsIDIyOCwgNzQsIDI0OSwgNjcsIDMsIDIyNywgMjM3LCAyNDksIDY3LCAzLCAxOTAsIDI0OSwgNjcsIDMsIDIyNSwgCisgICAgMjIxLCAyNDksIDY3LCAzLCAyMjUsIDEwOCwgMjQ5LCA2NywgMywgMjI1LCAxNiwgMjQ5LCA2NywgMywgMjI0LCAxNTAsIAorICAgIDI0OSwgNjcsIDMsIDIwNSwgMjQ5LCA2NywgMywgMjIzLCAxMjgsIDI0OSwgNjcsIDMsIDIyMywgMzUsIDI0OSwgNjcsIDMsIAorICAgIDIyMiwgMjExLCAyNDksIDY3LCAzLCAyMjIsIDE0MCwgMjQ5LCA2NywgMywgMjA2LCAyNDksIDY3LCAzLCAyMjEsIDE4MSwgCisgICAgMjQ5LCA2NywgMywgMjE5LCAxOTEsIDI0OSwgNjcsIDMsIDIxOSwgNTgsIDI0OSwgNjcsIDMsIDIxOCwgODMsIDI0OSwgNjcsIAorICAgIDMsIDIxNywgMTA1LCAyNDksIDY3LCAzLCAyMTcsIDIyLCAyNDksIDY3LCAzLCAyMTYsIDExNywgMjQ5LCA2NywgMywgMTExLCAKKyAgICAyNDksIDY3LCAzLCAyMTUsIDExOCwgMjQ5LCA2NywgMywgMjEyLCA2NSwgMjQ5LCA2NywgMywgMjEyLCAyMiwgMjQ5LCA2NywgCisgICAgMywgMjExLCAyNTAsIDI0OSwgNjcsIDMsIDIxMSwgMjI3LCAyNDksIDY3LCAzLCAyMTEsIDE2NSwgMjQ5LCA2NywgMywgMjExLCAKKyAgICAxNjIsIDI0OSwgNjcsIDMsIDIxMCwgMTE2LCAyNDksIDY3LCAzLCAyMTAsIDIzLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI1NCwgCisgICAgMTY4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI1MiwgMjUsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjQyLCAyMDEsIDIzNiwgMSwgCisgICAgMjU0LCAyNywgMSwgMjQ4LCAxODgsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjQxLCAyMzgsIDIzNiwgMSwgMjU0LCAyNywgMSwgCisgICAgMjEyLCAzMCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTAsIDk3LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MSwgMTk1LCAyMzYsIAorICAgIDEsIDI1NCwgMjcsIDEsIDIxNiwgMjI2LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIxMCwgMjMyLCAyMzYsIDEsIDI1NCwgMjcsIAorICAgIDEsIDIzNCwgMjI1LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIzMywgOTMsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjMxLCA2NSwgCisgICAgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjcsIDE5NCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjEsIDI0OSwgMjM2LCAxLCAyNTQsIAorICAgIDI3LCAxLCAyNTMsIDE2MiwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjUsIDIyMSwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjIsIAorICAgIDI0LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyNCwgMzQsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIzLCA2NywgMjM2LCAxLCAKKyAgICAyNTQsIDI3LCAxLCAyMjAsIDIwLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIxNywgMzYsIDIzNiwgMSwgMjU0LCAyNywgMjIxLCAKKyAgICAxNzMsIDUwLCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMTAsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEwNSwgMjM2LCAxLCAyNTQsIAorICAgIDI3LCA1NCwgMTU4LCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAyMTYsIDI0NywgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMjE1LCA3MywgCisgICAgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTIzLCAyMTYsIDE0NywgCisgICAgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMjE2LCAyNDgsIDIxNiwgMTQ3LCAyMjUsIDExOSwgMSwgMjU0LCAxNjUsIDIyNSwgMTE5LCAKKyAgICAxLCAyNTIsIDI4LCAyMjUsIDExOSwgMSwgMjQzLCAxMDksIDIyNSwgMTE5LCAxLCAyNDgsIDU2LCAyMjUsIDExOSwgMSwgCisgICAgMjQxLCAyMzgsIDIyNSwgMTE5LCAxLCAyMTIsIDM3LCAyMjUsIDExOSwgMSwgMjEwLCAxMTAsIDIyNSwgMTE5LCAxLCAyNDEsIAorICAgIDE5NywgMjI1LCAxMTksIDEsIDIxNiwgMjMwLCAyMjUsIDExOSwgMSwgMjEwLCAyMzMsIDIyNSwgMTE5LCAxLCAyMzQsIDI1MCwgCisgICAgMjI1LCAxMTksIDEsIDIzMywgOTksIDIyNSwgMTE5LCAxLCAyMzEsIDY1LCAyMjUsIDExOSwgMSwgMjI3LCAxOTQsIDIyNSwgCisgICAgMTE5LCAxLCAyMjAsIDE0NCwgMjI1LCAxMTksIDEsIDI1NCwgMTk2LCAyMjUsIDExOSwgMSwgMjI1LCAyMjEsIDIyNSwgMTE5LCAKKyAgICAxLCAyMjIsIDI1LCAyMjUsIDExOSwgMSwgMjI0LCAzOSwgMjI1LCAxMTksIDEsIDIyMiwgMTg5LCAyMjUsIDExOSwgMSwgCisgICAgMjIwLCAyMCwgMjI1LCAxMTksIDEsIDIxNywgNDEsIDIyNSwgMTE5LCA1NCwgMTEwLCAyMjUsIDExOSwgNTQsIDIxNiwgMjQ3LCAKKyAgICAyMjUsIDExOSwgNTQsIDIxNSwgNzMsIDIyNSwgMTE5LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjI1LCAxMTksIDU0LCAxMDUsIAorICAgIDIyNSwgMTE5LCA1NCwgMTU4LCAyMjUsIDExOSwgMjExLCAyMDksIDIyMCwgMTM3LCAyMzIsIDU5LCAxLCA2MSwgMjMyLCA1OSwgCisgICAgMSwgMjUzLCAxNTgsIDIzMiwgNTksIDEsIDI0MywgMjAyLCAyMzIsIDU5LCAxLCAyNDksIDYwLCAyMzIsIDU5LCAxLCA3NSwgCisgICAgMjMyLCA1OSwgMSwgMjE0LCAxMDUsIDIzMiwgNTksIDEsIDczLCAyMzIsIDU5LCAxLCAyMTEsIDExNywgMjMyLCA1OSwgMSwgCisgICAgMjM1LCAyMywgMjMyLCA1OSwgMSwgMTU2LCAyMzIsIDU5LCAxLCAxOTMsIDIzMiwgNTksIDEsIDIzMCwgMjUsIDIzMiwgNTksIAorICAgIDEsIDc2LCAyMzIsIDU5LCAxLCAxNTMsIDIzMiwgNTksIDEsIDIxOCwgMjI2LCAyMzIsIDU5LCAxLCAyMTcsIDE1MiwgMjMyLCAKKyAgICA1OSwgMSwgNzAsIDIzMiwgNTksIDEsIDI0NSwgNiwgMjMyLCA1OSwgMSwgMjI0LCA5NiwgMjMyLCA1OSwgMSwgMjIyLCA5MSwgCisgICAgMjMyLCA1OSwgMSwgMjE1LCAxNTksIDIzMiwgNTksIDEsIDI1NCwgMTIzLCAyMzIsIDU5LCAxLCAyNDUsIDE1MCwgMjMyLCAKKyAgICA1OSwgMSwgMjMyLCA2MiwgMjMyLCA1OSwgMSwgMjI4LCAxMTEsIDIzMiwgNTksIDEsIDI1MSwgNjYsIDIzMiwgNTksIDIxNSwgCisgICAgMjIyLCA3OCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDYxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgNzUsIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCA3MywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDc2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTkxLCAKKyAgICAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjEyLCA2NSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDI1MiwgMTkxLCAyMzEsIDQ4LCAKKyAgICAyNDEsIDE3NCwgMSwgMjUyLCAxOTAsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxOTAsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAKKyAgICAxODQsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxOTcsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjksIDIyOCwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDIyOSwgMTA3LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjI5LCAxMDYsIDIzMSwgNDgsIDI0MSwgMTc0LCAKKyAgICAxLCAyMDUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjMsIDE4NywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIzMywgMTM1LCAKKyAgICAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjM0LCAxMzIsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyNDEsIDE4OSwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDIwNiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyMiwgMzMsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAKKyAgICAyMjEsIDE4MSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE3NiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyNCwgODgsIDIzMSwgCisgICAgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDEwNSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIxNywgMTA0LCAyMzEsIDQ4LCAyNDEsIAorICAgIDE3NCwgMSwgMjE3LCAyMiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIxNywgMjEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAKKyAgICAxMTEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyNDgsIDIyMSwgMjMxLCA0OCwgMjQxLCAxNzQsIDE2LCAyMTMsIDE3MCwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDE2LCAyMTMsIDE2OSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgNjEsIDIzMSwgNDgsIDI0OSwgCisgICAgOTQsIDEsIDc1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCA3MywgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgNzYsIDIzMSwgNDgsIAorICAgIDI0OSwgOTQsIDEsIDE5MSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjEyLCA2NSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjUyLCAKKyAgICAxOTEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE5MCwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTg0LCAyMzEsIDQ4LCAyNDksIAorICAgIDk0LCAxLCAxOTcsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIyOSwgMTA3LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMDUsIDIzMSwgCisgICAgNDgsIDI0OSwgOTQsIDEsIDIzMywgMTM1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMzQsIDEzMiwgMjMxLCA0OCwgMjQ5LCAKKyAgICA5NCwgMSwgMjQxLCAxODksIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIwNiwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjU0LCAyMywgCisgICAgMjA2LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMjEsIDE4MSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTc2LCAyMzEsIDQ4LCAKKyAgICAyNDksIDk0LCAxLCAyMjQsIDg4LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMTcsIDEwNSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgCisgICAgMjE3LCAyMiwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTExLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyNDgsIDIyMSwgMjMxLCAKKyAgICA0OCwgMjQ5LCA5NCwgMjMyLCAxNDUsIDIyMiwgMjE3LCAyMzEsIDQ4LCAyNDksIDk0LCAyMzIsIDE0NSwgMjM2LCA2LCAyMzQsIAorICAgIDEyMCwgMSwgNjEsIDIzNCwgMTIwLCAyNSwgNSwgNzMsIDIzNCwgMTIwLCAyNSwgNSwgNzAsIDIzNCwgMTIwLCAyNSwgNSwgCisgICAgMTQ5LCAxNTMsIDIzNCwgMTIwLCAyNSwgNSwgNzUsIDIzNCwgMTIwLCAyNSwgNSwgNzYsIDIzNCwgMTIwLCAyNSwgMjMzLCAKKyAgICAyMywgNzgsIDIzNCwgMTIwLCA1LCA1MiwgMjIyLCAyMzQsIDUxLCAyMzQsIDEyMCwgNSwgMjU0LCA3NSwgMjM0LCAxMjAsIDUsIAorICAgIDIxMywgMTQ3LCAyMzQsIDEyMCwgMSwgMTc2LCAyMzQsIDEyMCwgMSwgMjM0LCAxMzIsIDIzNCwgMTIwLCAxLCAyNDMsIDEzNSwgCisgICAgMjM0LCAxMjAsIDEsIDI0MiwgMjQ5LCAyMzQsIDEyMCwgMSwgMjUxLCAzMywgMjM0LCAxMjAsIDEsIDI1MCwgMTU3LCAyMzQsIAorICAgIDEyMCwgMSwgMjM1LCAxNDEsIDIzNCwgMTIwLCAxLCAyMjcsIDE2NSwgMjM0LCAxMjAsIDEsIDIxNSwgMTU2LCAyMzQsIDEyMCwgCisgICAgMSwgMjE1LCAxNDQsIDIzNCwgMTIwLCAxLCAyNDgsIDEzNSwgMjM0LCAxMjAsIDEsIDI0OCwgMTE5LCAyMzQsIDEyMCwgMSwgCisgICAgMjI4LCAxMTAsIDIzNCwgMTIwLCAxLCAyMTcsIDEwNSwgMjM0LCAxMjAsIDEsIDIxNiwgMjA4LCAyMzQsIDEyMCwgMSwgMjQ4LCAKKyAgICAyMjEsIDIzNCwgMTIwLCAxLCAyNDgsIDI1LCAyMzQsIDEyMCwgMSwgMTk3LCAyMzQsIDEyMCwgMSwgMTkwLCAyMzQsIDEyMCwgCisgICAgMSwgMjI1LCAxNDcsIDIzNCwgMTIwLCAxLCAyNTIsIDE5MSwgMjM0LCAxMjAsIDEsIDI1MiwgMTgsIDIzNCwgMTIwLCAxLCAKKyAgICAxODQsIDIzNCwgMTIwLCAxLCAxOTEsIDIzNCwgMTIwLCAxLCAyMDUsIDIzNCwgMTIwLCAxLCAyMzMsIDEzNSwgMjM0LCAxMjAsIAorICAgIDEsIDIxNCwgMjcsIDIzNCwgMTIwLCAxLCAyMjAsIDEwMiwgMjM0LCAxMjAsIDEsIDIxOCwgMjIzLCAyMzQsIDEyMCwgMSwgCisgICAgMjA2LCAyMzQsIDEyMCwgMSwgMjEwLCAxMTYsIDIzNCwgMTIwLCAxLCAxNjIsIDIzNCwgMTIwLCAxLCAyMzQsIDQ2LCAyMzQsIAorICAgIDEyMCwgMSwgMjE1LCAxMjQsIDIzNCwgMTIwLCA1LCAyNTIsIDE0MSwgNDgsIDIzNCwgMTIwLCA1LCAyNTAsIDIyMSwgMjM0LCAKKyAgICAxMjAsIDUsIDU5LCA1MSwgMjM0LCAxMjAsIDIxMywgMTUyLCAyMzQsIDEyMCwgMjEsIDExMCwgMjM0LCAxMjAsIDIxLCAxMDUsIAorICAgIDIzNCwgMTIwLCAyMSwgMTU4LCAyMzQsIDEyMCwgMjEsIDE2MSwgMjM0LCAxMjAsIDU0LCAyMTYsIDI0NywgMjM0LCAxMjAsIAorICAgIDU0LCAyMTUsIDczLCAyMzQsIDEyMCwgNTQsIDEyMywgMjQwLCAyMTAsIDIzNCwgMTIwLCA1NCwgMTIzLCAyMTYsIDE0NywgCisgICAgMjM0LCAxMjAsIDIyNCwgMTQxLCAyNDcsIDEyMCwgMjM0LCAxMjAsIDIyNCwgMTQxLCA0LCAyNTAsIDM1LCAyMzQsIDEyMCwgCisgICAgMjI0LCAxNDEsIDI1MCwgMzUsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ5LCAxMzcsIDEzMCwgMjM0LCAxMjAsIDIyNCwgMTQxLCAKKyAgICAyMzEsIDE4MCwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyMzIsIDExNSwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyNDgsIDE3OCwgCisgICAgMjM0LCAxMjAsIDIyNCwgMTQxLCA1MiwgMjQ4LCAxNzgsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjMyLCAyMDcsIDU1LCAyMTksIAorICAgIDI4LCAyNTQsIDM4LCAxLCAyNDEsIDIzOCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzMywgOTMsIDU1LCAyMTksIDI4LCAKKyAgICAyNTQsIDM4LCAxLCAyNDEsIDE5NSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzMSwgNjUsIDU1LCAyMTksIDI4LCAyNTQsIAorICAgIDM4LCAxLCAyMjQsIDM0LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjEyLCAzMCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIAorICAgIDEsIDIyMCwgMjAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjMsIDY3LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgCisgICAgMjUyLCAyNSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxNywgMzYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjEsIAorICAgIDIyNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzNCwgMjI1LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjI3LCAKKyAgICAxOTQsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzQsIDExNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMiwgMjQsIAorICAgIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjEsIDI0OSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0NCwgMTU0LCA1NSwgCisgICAgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjU0LCAxNzAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNTMsIDE2MSwgNTUsIAorICAgIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0OCwgMjIsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDIsIDIwMSwgNTUsIDIxOSwgCisgICAgMjgsIDI1NCwgMzgsIDEsIDI0OCwgMTg4LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQyLCAyMzgsIDU1LCAyMTksIDI4LCAKKyAgICAyNTQsIDM4LCAxLCAyMTYsIDIyNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMCwgOTYsIDU1LCAyMTksIDI4LCAyNTQsIAorICAgIDM4LCAxLCAyNDgsIDE5LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjEwLCAyMzIsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAKKyAgICAxLCAyMTYsIDE5NywgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxNiwgMTc4LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgNTQsIAorICAgIDExMCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDU0LCAyNDQsIDExNCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEzMiwgMjM1LCAKKyAgICAyMzgsIDI1MywgMTcyLCAxLCA2MSwgMjUzLCAxNzIsIDEsIDI1NSwgNzMsIDI1MywgMTcyLCAxLCAyNTQsIDczLCAyNTMsIAorICAgIDE3MiwgMSwgMjU1LCAzMiwgMjUzLCAxNzIsIDEsIDI1NCwgMTIzLCAyNTMsIDE3MiwgMSwgMjU1LCAzMywgMjUzLCAxNzIsIAorICAgIDEsIDI1NCwgMjQzLCAyNTMsIDE3MiwgMSwgMjU0LCAyMzksIDI1MywgMTcyLCAxLCA3NSwgMjUzLCAxNzIsIDEsIDI0NSwgCisgICAgMjA5LCAyNTMsIDE3MiwgMSwgNzYsIDI1MywgMTcyLCAxLCAyMjYsIDE4MywgMjUzLCAxNzIsIDEsIDczLCAyNTMsIDE3MiwgCisgICAgMSwgMjM2LCAzMywgMjUzLCAxNzIsIDEsIDcwLCAyNTMsIDE3MiwgMSwgMjE0LCAxMTgsIDI1MywgMTcyLCAxLCAyMzQsIAorICAgIDE4MiwgMjUzLCAxNzIsIDEsIDIxMSwgMTYyLCAyNTMsIDE3MiwgMSwgMjExLCAxMjgsIDI1MywgMTcyLCAxLCAyMTEsIDEzNywgCisgICAgMjUzLCAxNzIsIDEsIDI0MywgNjIsIDI1MywgMTcyLCAxLCAyNDMsIDI0LCAyNTMsIDE3MiwgMSwgMjQyLCAyMzYsIDI1MywgCisgICAgMTcyLCAxLCAyNTAsIDE5MCwgMjUzLCAxNzIsIDEsIDIzNSwgMTI2LCAyNTMsIDE3MiwgMSwgMjE3LCAyMiwgMjUzLCAxNzIsIAorICAgIDEsIDIxNiwgMTk1LCAyNTMsIDE3MiwgMSwgMjQ4LCA5MCwgMjUzLCAxNzIsIDEsIDI0OCwgMTcsIDI1MywgMTcyLCAxLCAKKyAgICAyMTUsIDE1MSwgMjUzLCAxNzIsIDEsIDIyNSwgMjIxLCAyNTMsIDE3MiwgMSwgMjQ0LCAxNTQsIDI1MywgMTcyLCAxLCAyNTIsIAorICAgIDc1LCAyNTMsIDE3MiwgMSwgMjUyLCAxNCwgMjUzLCAxNzIsIDEsIDIyOSwgNjQsIDI1MywgMTcyLCAxLCAyMjgsIDIzOSwgCisgICAgMjUzLCAxNzIsIDEsIDIyOCwgMjQwLCAyNTMsIDE3MiwgMSwgMjI5LCAxMDcsIDI1MywgMTcyLCAxLCAyMjcsIDE1NiwgMjUzLCAKKyAgICAxNzIsIDEsIDIyOCwgMTA1LCAyNTMsIDE3MiwgMSwgMjMxLCA5MSwgMjUzLCAxNzIsIDEsIDI0MSwgMTE2LCAyNTMsIDE3MiwgCisgICAgMSwgMjEwLCAxNjYsIDI1MywgMTcyLCAxLCAyMTEsIDQ3LCAyNTMsIDE3MiwgMSwgMjEzLCAyNTUsIDI1MywgMTcyLCAxLCAKKyAgICAyMjMsIDEyOCwgMjUzLCAxNzIsIDEsIDIzMywgNTgsIDI1MywgMTcyLCAxLCAyMjEsIDE4MSwgMjUzLCAxNzIsIDEsIDIxMCwgCisgICAgOTQsIDI1MywgMTcyLCAxLCAyMjAsIDYzLCAyNTMsIDE3MiwgMSwgMjEwLCA3NCwgMjUzLCAxNzIsIDEsIDIxOSwgMTk4LCAKKyAgICAyNTMsIDE3MiwgMSwgMjE4LCAxOTMsIDI1MywgMTcyLCAxLCAyNDEsIDIzOCwgMjUzLCAxNzIsIDI1NSwgMjEsIDc4LCAyMTYsIAorICAgIDc5LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIDE0MCwgNCwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAKKyAgICAxNDAsIDIzMywgODUsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQwLCAyMzMsIDg1LCAxMjMsIDU5LCAxMTcsIAorICAgIDExMywgMTcwLCAyMjQsIDE0MCwgMjMzLCA4NSwgMTEzLCAyMjIsIDIzMiwgMTE3LCAxMjMsIDIyMiwgMjM0LCAyMjQsIDE0MCwgCisgICAgMjMzLCA4NSwgMTIzLCAyMjIsIDIzNCwgMTE3LCAxMTMsIDIyMiwgMjMyLCAyMjQsIDE0MCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAKKyAgICAxLCAyNTQsIDE2OCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNTIsIDI1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI0MiwgCisgICAgMjAxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI0OCwgMTg4LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI0MSwgMjM4LCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxMiwgMzAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjEwLCA5NywgMjM1LCAyMTgsIAorICAgIDIyNSwgMjU0LCAxLCAyNDEsIDE5NSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTYsIDIyNiwgMjM1LCAyMTgsIDIyNSwgCisgICAgMjU0LCAxLCAyMTAsIDIzMiwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMzQsIDIyNSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAKKyAgICAyMzMsIDkzLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIzMSwgNjUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjI3LCAxOTQsIAorICAgIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjIxLCAyNDksIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjUzLCAxNjIsIDIzNSwgCisgICAgMjE4LCAyMjUsIDI1NCwgMSwgMjI1LCAyMjEsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjIyLCAyNCwgMjM1LCAyMTgsIAorICAgIDIyNSwgMjU0LCAxLCAyMjQsIDM0LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMywgNjcsIDIzNSwgMjE4LCAyMjUsIDI1NCwgCisgICAgMSwgMjIwLCAyMCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTcsIDM2LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxMTAsIAorICAgIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDEwNSwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTU4LCAyMzUsIDIxOCwgMjI1LCAKKyAgICAyNTQsIDU0LCAxNjEsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDIxNiwgMjQ3LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAKKyAgICAyMTUsIDczLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAKKyAgICAxMjMsIDIxNiwgMTQ3LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjU0LCAxNjgsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNTIsIAorICAgIDI1LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQyLCAyMDEsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNDgsIDE4OCwgMjM1LCAKKyAgICAyMTgsIDIyNiwgNzIsIDEsIDI0MSwgMjM4LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjEyLCAyOSwgMjM1LCAyMTgsIDIyNiwgCisgICAgNzIsIDEsIDIxMCwgOTcsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNDEsIDE5NSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIAorICAgIDIxNiwgMjI2LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjEwLCAyMzIsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMzQsIDIyNSwgCisgICAgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIzMywgOTMsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMzEsIDY0LCAyMzUsIDIxOCwgCisgICAgMjI2LCA3MiwgMSwgMjI3LCAxOTQsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMjEsIDI0OSwgMjM1LCAyMTgsIDIyNiwgNzIsIAorICAgIDEsIDIyNSwgMjIxLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjIyLCAyNCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIyMCwgCisgICAgMjAsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMTcsIDM2LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDExMCwgMjM1LCAyMTgsIAorICAgIDIyNiwgNzIsIDU0LCAxMDUsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTU4LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDE2MSwgCisgICAgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAyMTYsIDI0NywgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAyMTUsIDczLCAyMzUsIAorICAgIDIxOCwgMjI2LCA3MiwgNTQsIDEyMywgMjQwLCAyMTAsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTIzLCAyMTYsIDE0NywgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDYxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCA2MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgCisgICAgMjU0LCAyNDMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCA3MywgNTUsIDIwMSwgMSwgMjExLCAzNywgNzMsIDU1LCAyMDEsIDEsIAorICAgIDIxMSwgMzcsIDc1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgNzYsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDIzNCwgCisgICAgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAyMzQsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTUsIDI1LCA1NSwgMjAxLCAxLCAKKyAgICAyMTEsIDM3LCAyNTUsIDI1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyNDIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIAorICAgIDI1NCwgMjQyLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMTYsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjE2LCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMzcsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjM3LCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjU0LCAyNTUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjU1LCA1NSwgMjAxLCAxLCAyMjYsIAorICAgIDE0OSwgMjU0LCAyNDEsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIAorICAgIDEyLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjUzLCAxNjcsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMTY3LCA1NSwgCisgICAgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMjQsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjI0LCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE0OSwgMjU0LCAyMzUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjM1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgCisgICAgMjI2LCAyMzMsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIyNiwgMjMzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAxNzgsIAorICAgIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMTc4LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMzQsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNDUsIDE2MSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTU5LCA1NSwgMjAxLCAxLCAyMjYsIAorICAgIDE0OSwgMjU0LCAxMjMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIzMiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAKKyAgICAyMzIsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEzMSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAxMzEsIDU1LCAKKyAgICAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDE0NywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAxNDcsIDU1LCAyMDEsIDEsIAorICAgIDIyNiwgMTQ5LCAyNDUsIDExOCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAxMTgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIAorICAgIDI1NCwgMTE1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMzgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjMxLCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMDgsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDE3NSwgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI0MCwgMTEzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAyMTUsIDU1LCAyMDEsIDEsIDIxMSwgCisgICAgMzcsIDI0NSwgMjE1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCA0NSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAKKyAgICA0NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIzNSwgMTgxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMzUsIDE4MSwgNTUsIAorICAgIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMTU5LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDE1OSwgNTUsIDIwMSwgMSwgCisgICAgMjI2LCAxNDksIDI1NCwgNDEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgNDEsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAKKyAgICAyNTQsIDIzMCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1MywgMjM3LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMjgsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTMsIDIzMSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjUzLCAyMzEsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNDUsIDc1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDc1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgCisgICAgMjUzLCAyMDYsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMjA2LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMjUsIAorICAgIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjI1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAxNDAsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNTIsIDEyNSwgMjIyLCAxMjcsIDIxLCAxMTAsIDIyMiwgMTI3LCAyMSwgMTA1LCAyMjIsIDEyNywgCisgICAgMjEsIDE1OCwgMjIyLCAxMjcsIDIxLCAxNjEsIDIyMiwgMTI3LCAyMSwgMTg5LCAyMjIsIDEyNywgMjEsIDE5NCwgMjIyLCAKKyAgICAxMjcsIDIxLCAxOTgsIDIyMiwgMTI3LCAyMSwgMTk1LCAyMjIsIDEyNywgMjEsIDIwMCwgMjIyLCAxMjcsIDU0LCAyMTYsIAorICAgIDI0NywgMjIyLCAxMjcsIDU0LCAyMTUsIDczLCAyMjIsIDEyNywgNTQsIDIxNiwgMTYyLCAyMjIsIDEyNywgNTQsIDI0NCwgCisgICAgMTUsIDIyMiwgMTI3LCA1NCwgMjQ0LCAxMTQsIDIyMiwgMTI3LCA1NCwgMjE5LCAxMTEsIDIyMiwgMTI3LCA1NCwgMjIwLCAKKyAgICAxMTYsIDIyMiwgMTI3LCA1NCwgMjQ1LCAxODQsIDIyMiwgMTI3LCA1NCwgMjI4LCAxOTUsIDIyMiwgMTI3LCA1NCwgMTIzLCAKKyAgICAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAxMTMsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDEzNCwgMjQwLCAyMTAsIDIyMiwgCisgICAgMTI3LCA1NCwgMjQ0LCAxMSwgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDIyMiwgMTI3LCAKKyAgICA1NCwgMjE5LCAxMjUsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDIyMCwgMTIyLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAKKyAgICAyNDUsIDE5MywgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMjI4LCAyMDAsIDI0MCwgMjEwLCAyMjIsIDEyNywgMjQ0LCAyLCAKKyAgICAxMjMsIDI0MiwgMjcsIDIyMiwgMTI3LCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjIyLCAxMjcsIDI0NCwgMiwgMTIzLCAyMTYsIAorICAgIDE2OCwgMjIyLCAxMjcsIDI0NCwgMiwgMTEzLCAyMTYsIDE2NiwgMTE4LCA1LCAyNTAsIDI1NSwgMTE4LCA1LCAyNTQsIDc1LCAKKyAgICAxMTgsIDUsIDIxMywgMTQ3LCAxMTgsIDUsIDIzNSwgMTAyLCAxMTgsIDUsIDIxNCwgMTYxLCAxMTgsIDEsIDYxLCAxMTgsIDEsIAorICAgIDI1NSwgNzMsIDExOCwgMSwgNzMsIDExOCwgMSwgMjM2LCAzMywgMTE4LCAxLCA3MCwgMTE4LCAxLCAyMTQsIDExOCwgMTE4LCAKKyAgICAxLCAxNDksIDE1MywgMTE4LCAxLCAxNDksIDIyMiwgMTgwLCAxMTgsIDEsIDE0OSwgMTU2LCAxMTgsIDEsIDE0OSwgMjMyLCAKKyAgICAxODUsIDExOCwgMSwgNzUsIDExOCwgMSwgMjU0LCAyMDEsIDExOCwgMSwgNzYsIDExOCwgMSwgMjUzLCAxOTIsIDExOCwgMSwgCisgICAgMTc2LCAxMTgsIDEsIDIzNCwgMTMyLCAxMTgsIDEsIDI0MywgMTM1LCAxMTgsIDEsIDI0MiwgMjQ5LCAxMTgsIDEsIDIyOSwgCisgICAgNzcsIDExOCwgMSwgMjUxLCAzMywgMTE4LCAxLCAyNTAsIDE1NywgMTE4LCAxLCAyMzUsIDE0MSwgMTE4LCAxLCAyMzUsIAorICAgIDExNCwgMTE4LCAxLCAyMjcsIDE2NSwgMTE4LCAxLCAyMTUsIDE1NiwgMTE4LCAxLCAyMTUsIDE0NCwgMTE4LCAxLCAyNDgsIAorICAgIDEzNSwgMTE4LCAxLCAyNDgsIDExOSwgMTE4LCAxLCAyMjgsIDExMCwgMTE4LCAxLCAyMTcsIDEwNSwgMTE4LCAxLCAyMTYsIAorICAgIDIwOCwgMTE4LCAxLCAyNDgsIDIyMSwgMTE4LCAxLCAyNDgsIDI1LCAxMTgsIDEsIDE5NywgMTE4LCAxLCAxOTAsIDExOCwgMSwgCisgICAgMjI1LCAxNDcsIDExOCwgMSwgMjUyLCAxOTEsIDExOCwgMSwgMjUyLCAxOCwgMTE4LCAxLCAxODQsIDExOCwgMSwgMTkxLCAKKyAgICAxMTgsIDEsIDIwNSwgMTE4LCAxLCAyMzMsIDEzNSwgMTE4LCAxLCAyMTQsIDI3LCAxMTgsIDEsIDIyMCwgMTAyLCAxMTgsIDEsIAorICAgIDIxOCwgMjIzLCAxMTgsIDEsIDIwNiwgMTE4LCAxLCAxNjIsIDExOCwgMSwgMjMyLCAxODQsIDExOCwgMSwgNTUsIDM2LCAKKyAgICAyMzIsIDE3NSwgMTE4LCAxLCA1NSwgMzYsIDIyMiwgMTc5LCAxMTgsIDEsIDU1LCAzNiwgMjI4LCA5MiwgMTE4LCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTE4LCAyNSwgNSwgMjUyLCAxNSwgMjU1LCA3MywgMTE4LCAyNSwgNSwgNzMsIDExOCwgMjUsIDUsIDIzNiwgCisgICAgMzMsIDExOCwgMjUsIDUsIDcwLCAxMTgsIDI1LCA1LCAyMTQsIDExOCwgMTE4LCAyNSwgNSwgMTQ5LCAxNTMsIDExOCwgMjUsIAorICAgIDUsIDE0OSwgMjIyLCAxODAsIDExOCwgMjUsIDUsIDE0OSwgMTU2LCAxMTgsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxMTgsIAorICAgIDI1LCA1LCA3NSwgMTE4LCAyNSwgNSwgMjU0LCAyMDEsIDExOCwgMjUsIDUsIDc2LCAxMTgsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMTE4LCAyMTMsIDE1MiwgMTE4LCAyNDgsIDE3OCwgMTE4LCA1MiwgMjQ4LCAxNzgsIDExOCwgMjI0LCAxNDEsIDI0NywgMTIwLCAKKyAgICAxMTgsIDIyNCwgMTQxLCA1MiwgMjQ3LCAxMjAsIDExOCwgMjI0LCAxNDEsIDIzMiwgMjEzLCAxMTgsIDIyNCwgMTQxLCAyNDksIAorICAgIDEzNywgMTMwLCAxMTgsIDIyNCwgMTQxLCAyMzIsIDExNSwgMTE4LCA1NCwgMTEwLCAxMTgsIDU0LCAxMDUsIDExOCwgNTQsIAorICAgIDE1OCwgMTE4LCA1NCwgMTYxLCAxMTgsIDU0LCAxODksIDExOCwgNTQsIDE5NCwgMTE4LCA1NCwgMTk4LCAxMTgsIDU0LCAKKyAgICAxOTUsIDExOCwgNTQsIDIwMCwgMTE4LCA1NCwgMjE2LCAyNDcsIDExOCwgNTQsIDIxNSwgNzMsIDExOCwgNTQsIDIxNiwgCisgICAgMTYyLCAxMTgsIDU0LCAyNDQsIDE1LCAxMTgsIDU0LCAyNDQsIDExNCwgMTE4LCA1NCwgMjE5LCAxMTEsIDExOCwgNTQsIAorICAgIDIyMCwgMTE2LCAxMTgsIDU0LCAyNDUsIDE4NCwgMTE4LCA1NCwgMjI4LCAxOTUsIDExOCwgNTQsIDEyMywgMjQwLCAyMTAsIAorICAgIDExOCwgNTQsIDEyMywgMjE2LCAxNDcsIDExOCwgMjEsIDIxMCwgODYsIDExOCwgMjEsIDExMCwgMTE4LCAyMSwgMTA1LCAKKyAgICAxMTgsIDIxLCAxNTgsIDExOCwgMjEsIDE2MSwgMTE4LCAyMSwgMTg5LCAxMTgsIDIxLCAxOTQsIDExOCwgMjEsIDE5OCwgCisgICAgMTE4LCAyMSwgMTk1LCAxMTgsIDIxLCAyMDAsIDIzNCwgMjQ0LCA1LCAyNTAsIDI1NSwgMjM0LCAyNDQsIDUsIDI1NCwgNzUsIAorICAgIDIzNCwgMjQ0LCA1LCAyMTMsIDE0NywgMjM0LCAyNDQsIDEsIDYxLCAyMzQsIDI0NCwgMSwgMjU1LCA3MywgMjM0LCAyNDQsIAorICAgIDEsIDczLCAyMzQsIDI0NCwgMSwgMjM2LCAzMywgMjM0LCAyNDQsIDEsIDcwLCAyMzQsIDI0NCwgMSwgMjE0LCAxMTgsIDIzNCwgCisgICAgMjQ0LCAxLCA3NSwgMjM0LCAyNDQsIDEsIDI1NCwgMjAxLCAyMzQsIDI0NCwgMSwgNzYsIDIzNCwgMjQ0LCAxLCAyNTMsIAorICAgIDE5MiwgMjM0LCAyNDQsIDEsIDE3NiwgMjM0LCAyNDQsIDEsIDIzNCwgMTMyLCAyMzQsIDI0NCwgMSwgMjQzLCAxMzUsIDIzNCwgCisgICAgMjQ0LCAxLCAyNDIsIDI0OSwgMjM0LCAyNDQsIDEsIDIyOSwgNzcsIDIzNCwgMjQ0LCAxLCAyNTEsIDMzLCAyMzQsIDI0NCwgCisgICAgMSwgMjUwLCAxNTcsIDIzNCwgMjQ0LCAxLCAyMzUsIDE0MSwgMjM0LCAyNDQsIDEsIDIzNSwgMTE0LCAyMzQsIDI0NCwgMSwgCisgICAgMjI3LCAxNjUsIDIzNCwgMjQ0LCAxLCAyMTUsIDE1NiwgMjM0LCAyNDQsIDEsIDIxNSwgMTQ0LCAyMzQsIDI0NCwgMSwgMjQ4LCAKKyAgICAxMzUsIDIzNCwgMjQ0LCAxLCAyNDgsIDEyNCwgMjM0LCAyNDQsIDEsIDI0OCwgMTE5LCAyMzQsIDI0NCwgMSwgMjIzLCAzOSwgCisgICAgMjM0LCAyNDQsIDEsIDIyOCwgMTEwLCAyMzQsIDI0NCwgMSwgMjE3LCAxMDUsIDIzNCwgMjQ0LCAxLCAyMTYsIDIwOCwgMjM0LCAKKyAgICAyNDQsIDEsIDI0OCwgMjIxLCAyMzQsIDI0NCwgMSwgMjQ4LCAyNSwgMjM0LCAyNDQsIDEsIDE5NywgMjM0LCAyNDQsIDEsIAorICAgIDE5MCwgMjM0LCAyNDQsIDEsIDIyNSwgMTQ3LCAyMzQsIDI0NCwgMSwgMjUyLCAxOTEsIDIzNCwgMjQ0LCAxLCAyNTIsIDE4LCAKKyAgICAyMzQsIDI0NCwgMSwgMTg0LCAyMzQsIDI0NCwgMSwgMTkxLCAyMzQsIDI0NCwgMSwgMjA1LCAyMzQsIDI0NCwgMSwgMjMzLCAKKyAgICAxMzUsIDIzNCwgMjQ0LCAxLCAyMTQsIDI3LCAyMzQsIDI0NCwgMSwgMjIwLCAxMDIsIDIzNCwgMjQ0LCAxLCAyMTgsIDIyMywgCisgICAgMjM0LCAyNDQsIDEsIDIwNiwgMjM0LCAyNDQsIDEsIDE2MiwgMjM0LCAyNDQsIDI1LCA1LCAyNTUsIDczLCAyMzQsIDI0NCwgCisgICAgMjUsIDUsIDczLCAyMzQsIDI0NCwgMjUsIDUsIDIzNiwgMzMsIDIzNCwgMjQ0LCAyNSwgNSwgNzAsIDIzNCwgMjQ0LCAyNSwgCisgICAgNSwgMjE0LCAxMTgsIDIzNCwgMjQ0LCAyNSwgNSwgNzUsIDIzNCwgMjQ0LCAyNSwgNSwgMjU0LCAyMDEsIDIzNCwgMjQ0LCAKKyAgICAyNSwgNSwgNzYsIDIzNCwgMjQ0LCAyNSwgNSwgMjUzLCAxOTIsIDIzNCwgMjQ0LCA1LCAyMTMsIDE1MiwgMjM0LCAyNDQsIDUsIAorICAgIDIyNywgMjA1LCAyMzQsIDI0NCwgMjU1LCAyMSwgNTAsIDIzNCwgMjQ0LCAyNDUsIDEyMSwgNTAsIDIzNCwgMjQ0LCA1NCwgCisgICAgNTAsIDIzNCwgMjQ0LCAyMjEsIDE3MywgNzgsIDIzNCwgMjQ0LCA1MiwgMjIxLCAxNzMsIDc4LCAyMzQsIDI0NCwgMjQ4LCAKKyAgICAxNzgsIDIzNCwgMjQ0LCA1MiwgMjQ4LCAxNzgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyMiwgMTgsIDIxOSwgMzYsIDIxOSwgCisgICAgNDQsIDEsIDIxNywgODAsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI1MiwgMTY4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNTEsIAorICAgIDIzLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDgsIDIwMywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQzLCAxMjAsIDIxOSwgCisgICAgMzYsIDIxOSwgNDQsIDEsIDIzMSwgMjEwLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjksIDc0LCAyMTksIDM2LCAyMTksIDQ0LCAKKyAgICAxLCAyMzMsIDExMiwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI5LCAyMTMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIxNCwgMjQsIAorICAgIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyNiwgNzMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIxMSwgODQsIDIxOSwgMzYsIDIxOSwgCisgICAgNDQsIDEsIDIyMywgMTY4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDIsIDM3LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMzQsIAorICAgIDI0OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjM1LCAxMzYsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyNywgMTYyLCAyMTksIAorICAgIDM2LCAyMTksIDQ0LCAxLCAyNTQsIDIwOSwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQ1LCAyMDcsIDIxOSwgMzYsIDIxOSwgCisgICAgNDQsIDEsIDIzNiwgMzQsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIxNCwgMjA4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjYsIAorICAgIDIyMiwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQ1LCAxOTcsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIzMSwgMjIzLCAyMTksIAorICAgIDM2LCAyMTksIDQ0LCAyMSwgMjEwLCA4NiwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDExMCwgMjE5LCAzNiwgMjE5LCA0NCwgCisgICAgMjEsIDEwNSwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE1OCwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE2MSwgMjE5LCAzNiwgCisgICAgMjE5LCA0NCwgMjEsIDE4OSwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE5NCwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE5OCwgCisgICAgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE5NSwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDIwMCwgMjUwLCAxNTEsIDUsIDI1MCwgCisgICAgMjU1LCAyNTAsIDE1MSwgNSwgMjU0LCA3NSwgMjUwLCAxNTEsIDUsIDIxMywgMTQ3LCAyNTAsIDE1MSwgMSwgMjU1LCA3MywgCisgICAgMjUwLCAxNTEsIDEsIDczLCAyNTAsIDE1MSwgMSwgNzAsIDI1MCwgMTUxLCAxLCA3NSwgMjUwLCAxNTEsIDEsIDIzNSwgMTAsIAorICAgIDI1MCwgMTUxLCAxLCAyMzQsIDEzMSwgMjUwLCAxNTEsIDEsIDI0MywgMTMyLCAyNTAsIDE1MSwgMSwgMjQyLCAyNDgsIDI1MCwgCisgICAgMTUxLCAxLCAyMjksIDc2LCAyNTAsIDE1MSwgMSwgMjUxLCAzMiwgMjUwLCAxNTEsIDEsIDI1MCwgMTU2LCAyNTAsIDE1MSwgCisgICAgMSwgMjM1LCAxNDAsIDI1MCwgMTUxLCAxLCAyMzUsIDExMywgMjUwLCAxNTEsIDEsIDIyNywgMTY0LCAyNTAsIDE1MSwgMSwgCisgICAgMjE1LCAxNTUsIDI1MCwgMTUxLCAxLCAyMTUsIDE0MywgMjUwLCAxNTEsIDEsIDI0OCwgMTM0LCAyNTAsIDE1MSwgMSwgMjQ4LCAKKyAgICAxMTgsIDI1MCwgMTUxLCAxLCAyMjgsIDEwOSwgMjUwLCAxNTEsIDEsIDIxNywgMTAxLCAyNTAsIDE1MSwgMSwgMjE2LCAyMDcsIAorICAgIDI1MCwgMTUxLCAxLCAyNDgsIDIyMCwgMjUwLCAxNTEsIDEsIDI0OCwgMjQsIDI1MCwgMTUxLCAxLCAyMjksIDIyNSwgMjUwLCAKKyAgICAxNTEsIDEsIDIyNiwgODksIDI1MCwgMTUxLCAxLCAyMjUsIDE0NiwgMjUwLCAxNTEsIDEsIDI1MiwgMTg5LCAyNTAsIDE1MSwgCisgICAgMSwgMjUyLCAxNywgMjUwLCAxNTEsIDEsIDIzMSwgMjM3LCAyNTAsIDE1MSwgMSwgMjEwLCAxNjcsIDI1MCwgMTUxLCAxLCAKKyAgICAyMTEsIDEwMywgMjUwLCAxNTEsIDEsIDIyMywgMTg0LCAyNTAsIDE1MSwgMSwgMjMzLCAxMzQsIDI1MCwgMTUxLCAxLCAyMTIsIAorICAgIDY0LCAyNTAsIDE1MSwgMSwgMjIyLCAzMSwgMjUwLCAxNTEsIDEsIDI0MiwgNDYsIDI1MCwgMTUxLCAyNSwgNSwgNjEsIDI1MCwgCisgICAgMTUxLCAyNSwgNSwgNzMsIDI1MCwgMTUxLCAyNSwgNSwgMjM2LCAzMywgMjUwLCAxNTEsIDI1LCA1LCA3MCwgMjUwLCAxNTEsIAorICAgIDI1LCA1LCAyMTQsIDExOCwgMjUwLCAxNTEsIDI1LCA1LCA3NSwgMjUwLCAxNTEsIDI1LCA1LCAyNTQsIDIwMSwgMjUwLCAKKyAgICAxNTEsIDI1LCA1LCA3NiwgMjUwLCAxNTEsIDI1LCA1LCAyNTMsIDE5MiwgMjUwLCAxNTEsIDI1LCA1LCAyMjYsIDIxOSwgCisgICAgMjUwLCAxNTEsIDE0NCwgNzgsIDI1MCwgMTUxLCAyNTMsIDE5MywgNzgsIDI1MCwgMTUxLCAyMTMsIDE1MiwgMjUwLCAxNTEsIAorICAgIDIzMSwgMjM1LCAyNTAsIDE1MSwgMjEsIDIxMCwgODYsIDI1MCwgMTUxLCAyMSwgMTEwLCAyNTAsIDE1MSwgMjEsIDEwNSwgCisgICAgMjUwLCAxNTEsIDIxLCAxNTgsIDI1MCwgMTUxLCAyMSwgMTYxLCAyNTAsIDE1MSwgMjEsIDE4OSwgMjUwLCAxNTEsIDIxLCAKKyAgICAxOTQsIDI1MCwgMTUxLCAyMSwgMTk4LCAyNTAsIDE1MSwgMjEsIDE5NSwgMjUwLCAxNTEsIDIxLCAyMDAsIDI1MCwgMTUxLCAKKyAgICAyMjEsIDE3MywgNzgsIDI1MCwgMTUxLCAyNDgsIDE3OCwgMjUwLCAxNTEsIDUyLCAyNDgsIDE3OCwgMjUwLCAxNTEsIDIyNCwgCisgICAgMTMsIDc4LCAxNzQsIDUsIDI1MCwgMjU1LCAxNzQsIDUsIDI1NCwgNzUsIDE3NCwgNSwgMjEzLCAxNDcsIDE3NCwgMSwgNjEsIAorICAgIDE3NCwgMSwgMjU1LCA3MywgMTc0LCAxLCA3MywgMTc0LCAxLCAyMzYsIDMzLCAxNzQsIDEsIDcwLCAxNzQsIDEsIDIxNCwgCisgICAgMTE4LCAxNzQsIDEsIDE0OSwgMTUzLCAxNzQsIDEsIDE0OSwgMjIyLCAxODAsIDE3NCwgMSwgMTQ5LCAxNTYsIDE3NCwgMSwgCisgICAgMTQ5LCAyMzIsIDE4NSwgMTc0LCAxLCA3NSwgMTc0LCAxLCAyNTQsIDIwMSwgMTc0LCAxLCA3NiwgMTc0LCAxLCAyNTMsIAorICAgIDE5MiwgMTc0LCAxLCAxNzYsIDE3NCwgMSwgMjM0LCAxMzIsIDE3NCwgMSwgMjQzLCAxMzUsIDE3NCwgMSwgMjQyLCAyNDksIAorICAgIDE3NCwgMSwgMjI5LCA3NywgMTc0LCAxLCAyNTEsIDMzLCAxNzQsIDEsIDI1MCwgMTU3LCAxNzQsIDEsIDIzNSwgMTQxLCAKKyAgICAxNzQsIDEsIDIzNSwgMTE0LCAxNzQsIDEsIDIyNywgMTY1LCAxNzQsIDEsIDIxNSwgMTU2LCAxNzQsIDEsIDIxNSwgMTQ0LCAKKyAgICAxNzQsIDEsIDI0OCwgMTM1LCAxNzQsIDEsIDI0OCwgMTE5LCAxNzQsIDEsIDIyOCwgMTEwLCAxNzQsIDEsIDIxNywgMTA1LCAKKyAgICAxNzQsIDEsIDIxNiwgMjA4LCAxNzQsIDEsIDI0OCwgMjIxLCAxNzQsIDEsIDI0OCwgMjUsIDE3NCwgMSwgMTk3LCAxNzQsIDEsIAorICAgIDE5MCwgMTc0LCAxLCAyMjUsIDE0NywgMTc0LCAxLCAyNTIsIDE5MSwgMTc0LCAxLCAyNTIsIDE4LCAxNzQsIDEsIDE4NCwgCisgICAgMTc0LCAxLCAxOTEsIDE3NCwgMSwgMjA1LCAxNzQsIDEsIDIzMywgMTM1LCAxNzQsIDEsIDIzMiwgMTg0LCAxNzQsIDEsIAorICAgIDIxNCwgMjcsIDE3NCwgMSwgMjIwLCAxMDIsIDE3NCwgMSwgMjE4LCAyMjMsIDE3NCwgMSwgMjA2LCAxNzQsIDEsIDE2MiwgCisgICAgMTc0LCAyNSwgNSwgMjU1LCA3MywgMTc0LCAyNSwgNSwgNzMsIDE3NCwgMjUsIDUsIDIzNiwgMzMsIDE3NCwgMjUsIDUsIDcwLCAKKyAgICAxNzQsIDI1LCA1LCAyMTQsIDExOCwgMTc0LCAyNSwgNSwgMTQ5LCAxNTMsIDE3NCwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIAorICAgIDE3NCwgMjUsIDUsIDE0OSwgMTU2LCAxNzQsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNzQsIDI1LCA1LCA3NSwgMTc0LCAyNSwgCisgICAgNSwgMjU0LCAyMDEsIDE3NCwgMjUsIDUsIDc2LCAxNzQsIDI1LCA1LCAyNTMsIDE5MiwgMTc0LCA1LCAyMTMsIDE1MiwgMTc0LCAKKyAgICA1LCAyNTMsIDE3NSwgMTc0LCA1LCAyMzUsIDEwMiwgMTc0LCA1LCAyMTQsIDE2MSwgMTc0LCAyMjYsIDIwNCwgMTc0LCAyNDgsIAorICAgIDE3OCwgMTc0LCA1MiwgMjQ4LCAxNzgsIDE3NCwgMjU1LCAyMSwgNTAsIDE3NCwgMjIwLCAxMzcsIDE3NCwgMjEsIDIxMCwgCisgICAgODYsIDE3NCwgMjEsIDExMCwgMTc0LCAyMSwgMTA1LCAxNzQsIDIxLCAxNTgsIDE3NCwgMjEsIDE2MSwgMTc0LCAyMSwgMTg5LCAKKyAgICAxNzQsIDIxLCAxOTQsIDE3NCwgMjEsIDE5OCwgMTc0LCAyMSwgMTk1LCAxNzQsIDIxLCAyMDAsIDIxNywgNjksIDEsIDYxLCAKKyAgICAyMTcsIDY5LCAxLCAyNTUsIDczLCAyMTcsIDY5LCAxLCA3MywgMjE3LCA2OSwgMSwgMjM2LCAzMywgMjE3LCA2OSwgMSwgNzAsIAorICAgIDIxNywgNjksIDEsIDIxNCwgMTE4LCAyMTcsIDY5LCAxLCA3NSwgMjE3LCA2OSwgMSwgMjU0LCAyMDEsIDIxNywgNjksIDEsIAorICAgIDc2LCAyMTcsIDY5LCAxLCAyNTMsIDE5MiwgMjE3LCA2OSwgMSwgMTc2LCAyMTcsIDY5LCAxLCAyMzQsIDEzMiwgMjE3LCA2OSwgCisgICAgMSwgMjQzLCAxMzUsIDIxNywgNjksIDEsIDI0MiwgMjQ5LCAyMTcsIDY5LCAxLCAyMjksIDc3LCAyMTcsIDY5LCAxLCAyNTEsIAorICAgIDMzLCAyMTcsIDY5LCAxLCAyNTAsIDE1NywgMjE3LCA2OSwgMSwgMjM1LCAxNDEsIDIxNywgNjksIDEsIDIzNSwgMTE0LCAKKyAgICAyMTcsIDY5LCAxLCAyMjcsIDE2NSwgMjE3LCA2OSwgMSwgMjE1LCAxNTYsIDIxNywgNjksIDEsIDIxNSwgMTQ0LCAyMTcsIAorICAgIDY5LCAxLCAyNDgsIDEzNSwgMjE3LCA2OSwgMSwgMjQ4LCAxMTksIDIxNywgNjksIDEsIDIyOCwgMTEwLCAyMTcsIDY5LCAxLCAKKyAgICAyMTcsIDEwNSwgMjE3LCA2OSwgMSwgMjE2LCAyMDgsIDIxNywgNjksIDEsIDI0OCwgMjIxLCAyMTcsIDY5LCAxLCAyNDgsIAorICAgIDI1LCAyMTcsIDY5LCAxLCAxOTcsIDIxNywgNjksIDEsIDE5MCwgMjE3LCA2OSwgMSwgMjI1LCAxNDcsIDIxNywgNjksIDEsIAorICAgIDI1MiwgMTkxLCAyMTcsIDY5LCAxLCAyNTIsIDE4LCAyMTcsIDY5LCAxLCAxODQsIDIxNywgNjksIDEsIDE5MSwgMjE3LCA2OSwgCisgICAgMSwgMjA1LCAyMTcsIDY5LCAxLCAyMzMsIDEzNSwgMjE3LCA2OSwgMSwgMjE0LCAyNywgMjE3LCA2OSwgMSwgMjIwLCAxMDIsIAorICAgIDIxNywgNjksIDEsIDIwNiwgMjE3LCA2OSwgMSwgMTYyLCAyMTcsIDY5LCAxLCAyMjIsIDE3OSwgMjE3LCA2OSwgNSwgMjU0LCAKKyAgICA3NSwgMjE3LCA2OSwgNSwgMjEzLCAxNDcsIDIxNywgNjksIDI1LCA1LCAyNTUsIDczLCAyMTcsIDY5LCAyNSwgNSwgNzMsIAorICAgIDIxNywgNjksIDI1LCA1LCAyMzYsIDMzLCAyMTcsIDY5LCAyNSwgNSwgNzAsIDIxNywgNjksIDI1LCA1LCAyMTQsIDExOCwgCisgICAgMjE3LCA2OSwgMjUsIDUsIDc1LCAyMTcsIDY5LCAyNSwgNSwgMjU0LCAyMDEsIDIxNywgNjksIDI1LCA1LCA3NiwgMjE3LCAKKyAgICA2OSwgMjUsIDUsIDI1MywgMTkyLCAyMTcsIDY5LCA1LCAyMTMsIDE1MiwgMjE3LCA2OSwgNSwgMjI3LCAyMDUsIDIxNywgNjksIAorICAgIDIxLCAyMTAsIDg2LCAyMTcsIDY5LCAyMSwgMTEwLCAyMTcsIDY5LCAyMSwgMTA1LCAyMTcsIDY5LCAyMSwgMTU4LCAyMTcsIAorICAgIDY5LCAyMSwgMTYxLCAyMTcsIDY5LCAyMSwgMTg5LCAyMTcsIDY5LCAyMSwgMTk0LCAyMTcsIDY5LCAyMSwgMTk4LCAyMTcsIAorICAgIDY5LCAyMSwgMTk1LCAyMTcsIDY5LCAyMSwgMjAwLCAxNSwgNSwgNjEsIDE1LCA1LCAxMTUsIDMwLCA2MSwgMTUsIDUsIDExNSwgCisgICAgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMTE1LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMTE1LCAzMCwgMTYyLCAKKyAgICAxNSwgNSwgMTE1LCAzMCwgMjM2LCAzNSwgMTUsIDUsIDExNSwgMzAsIDIzMywgMTE2LCAyNDIsIDk0LCAxNSwgNSwgMTE1LCAKKyAgICAzMCwgMjMwLCA2MSwgMTUsIDUsIDExNSwgMzAsIDIyMiwgMjEsIDE1LCA1LCAyNTUsIDc1LCAxNSwgNSwgMjU1LCAyNSwgMTUsIAorICAgIDUsIDI1NSwgMjYsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyNDYsIDY3LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjU1LCAyNiwgMzAsIDI0MywgMTE4LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIAorICAgIDI1NSwgMjYsIDMwLCAxNjIsIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI1NSwgMjYsIAorICAgIDMwLCAyMzYsIDksIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjIwLCA0OCwgCisgICAgMTUsIDUsIDI1NSwgMjYsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDI1NSwgMjYsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNTUsIDIzLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDI1MiwgMTYwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDI0MywgMTA1LCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjIwLCAKKyAgICAxMDAsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDI1NCwgMjU1LCAxNSwgNSwgMjU0LCAxODYsIDE1LCAKKyAgICA1LCAyNTQsIDE4NywgMzAsIDI0NSwgODcsIDE1LCA1LCAyNTQsIDE4NywgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MCwgMTUsIAorICAgIDUsIDI1NCwgMTc4LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyNTQsIDE3OCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjQ3LCAKKyAgICAyMTYsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDI0MiwgMTkwLCAxNSwgNSwgMjU0LCAxNzksIDMwLCAxNjIsIDE1LCA1LCAyNTQsIAorICAgIDE3OSwgMzAsIDIzNCwgMjU1LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjU0LCAxNzksIDMwLCAKKyAgICAyMjAsIDYzLCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDI1NCwgMTc1LCAxNSwgNSwgMjU0LCAxNjgsIAorICAgIDE1LCA1LCAyNTQsIDEzMiwgMTUsIDUsIDI1NCwgMTMzLCAzMCwgMjIwLCA2MywgMTUsIDUsIDI1NCwgMTIzLCAxNSwgNSwgCisgICAgMjU0LCAxMjQsIDExNywgMjU0LCAxMjMsIDE1LCA1LCAyNTQsIDEyNCwgMTM0LCAyMTYsIDg1LCAxNSwgNSwgMjU0LCAxMjQsIAorICAgIDk2LCAyMjksIDIxNywgMjI2LCAxNjQsIDI1NCwgMTI0LCA5NiwgMjI5LCAyMTYsIDE1LCA1LCAyNTQsIDEyNCwgOTYsIDIyOSwgCisgICAgMjE3LCAyMTgsIDIzMywgMTUsIDUsIDI1NCwgOTQsIDE1LCA1LCAyNTQsIDY3LCAxNSwgNSwgMjU0LCAzNSwgMTUsIDUsIAorICAgIDI1NCwgMzYsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDI1NCwgOCwgMTUsIDUsIDI1MywgMjM2LCAxNSwgNSwgMjUzLCAyMzEsIAorICAgIDE1LCA1LCAyNTMsIDIzMiwgMjEwLCA0MCwgMjE2LCAyMzksIDE1LCA1LCAyNTMsIDIzMiwgMjM1LCAzLCAyMTYsIDIzOSwgCisgICAgMTUsIDUsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAyMTUsIDExNCwgMTE3LCAyMTUsIDExNCwgMjE1LCAxMTQsIDExNywgCisgICAgMjE1LCAxMTQsIDIyNiwgMjEsIDE1LCA1LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMSwgMTUsIDUsIAorICAgIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAyNDksIDEyNSwgMjUzLCAyMzIsIDExNywgMjUzLCAKKyAgICAyMzIsIDExNywgMjUzLCAyMzEsIDE1LCA1LCAyNTMsIDIyOSwgMTUsIDUsIDI1MywgMjI2LCAxNSwgNSwgMjUyLCAxOTEsIAorICAgIDE1LCA1LCAyNTIsIDE3NiwgMTUsIDUsIDI1MiwgMTcxLCAxNSwgNSwgMjUyLCAxNjcsIDE1LCA1LCAyNTIsIDE2MSwgMTUsIAorICAgIDUsIDI1MiwgMTYyLCAxMTcsIDI1MiwgMTYxLCAxNSwgNSwgMjUyLCAxNjAsIDE1LCA1LCAxMzAsIDE1LCA1LCAyNTIsIDE0MCwgCisgICAgMTUsIDUsIDI1MiwgNiwgMTUsIDUsIDI1MiwgNywgMzAsIDYxLCAxNSwgNSwgMjUyLCA3LCAzMCwgMjQzLCA5NiwgMTUsIDUsIAorICAgIDI1MiwgNywgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNTEsIDEyNSwgMTUsIDUsIDI1MSwgMTI2LCAxMTcsIDI1MSwgCisgICAgMTI2LCAyNTUsIDI1LCAxNSwgNSwgMjUxLCAxMjYsIDExNywgMjUxLCAxMjYsIDIxNCwgMTkwLCAxNSwgNSwgMjUxLCAxMjYsIAorICAgIDI0OSwgMTI1LCAyNTEsIDEyNSwgMTUsIDUsIDI1MSwgMTA5LCAxNSwgNSwgMjUxLCAxMTAsIDExNywgMjUxLCAxMDksIDE1LCAKKyAgICA1LCAyNTEsIDk4LCAxNSwgNSwgMjUxLCA5NywgMTUsIDUsIDI0OCwgMjIxLCAxNSwgNSwgMjQ4LCAyMTIsIDE1LCA1LCAyNDgsIAorICAgIDIxMywgMjM0LCA2NiwgMzAsIDExNSwgOTYsIDIzMSwgMTQ3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNTQsIAorICAgIDEzMiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjUyLCAxNjAsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgCisgICAgMzAsIDI1MiwgNiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCAKKyAgICA2NiwgMzAsIDI0MywgMTM2LCA5NiwgMjMxLCAxNDcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI0MiwgMjE0LCAKKyAgICAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNDIsIDE5NywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgCisgICAgMjQyLCAxMDMsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDE2MiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAKKyAgICAzMCwgMjM1LCAxNzksIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzNSwgMTgwLCA5NiwgMjMyLCA5OCwgMTUsIDUsIAorICAgIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMywgMTM1LCAKKyAgICAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzIsIAorICAgIDk5LCA5NiwgMjMxLCAxNDYsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMiwgODQsIDE1LCA1LCAyNDgsIDIxMywgCisgICAgMjM0LCA2NiwgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMjYsIDIyLCA5NiwgMjI2LCAKKyAgICAyMSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjE5LCAxOTEsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIAorICAgIDIxNywgNzIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIxNCwgMjMxLCA5NiwgMjQyLCAxOTcsIDE1LCA1LCAKKyAgICAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjQ4LCAxODcsIDE1LCA1LCAyNDgsIDE2NiwgMTUsIDUsIAorICAgIDI0OCwgMTY1LCAxNSwgNSwgMjQ4LCAxNjQsIDE1LCA1LCAyNDgsIDMsIDE1LCA1LCAyNDcsIDI0MiwgMTUsIDUsIDI0NywgCisgICAgMjE3LCAxNSwgNSwgMjQ3LCAyMTgsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQ3LCAyMTYsIDE1LCA1LCAyNDcsIDIwNiwgMTUsIAorICAgIDUsIDI0NywgMjA3LCAyMzQsIDIwOCwgMTA0LCAyNDIsIDk1LCAyNDcsIDE4NywgMTUsIDUsIDI0NywgMTg3LCAxNSwgNSwgCisgICAgMjQ2LCA3OCwgMTUsIDUsIDI0NiwgNzksIDExNywgMjQ2LCA3OCwgMTUsIDUsIDI0NiwgNzksIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNDYsIDc5LCAyMjAsIDQ1LCAxNSwgNSwgMjQ2LCA3NiwgMTUsIDUsIDI0NiwgNzcsIDMwLCAyNDUsIDcyLCAxNSwgNSwgCisgICAgMjQ2LCA3NSwgMTUsIDUsIDI0NiwgNzQsIDE1LCA1LCAyNDYsIDczLCAxNSwgNSwgMjQ2LCA3MiwgMTUsIDUsIDI0NiwgNjgsIAorICAgIDE1LCA1LCAyNDYsIDY2LCAxNSwgNSwgMjQ2LCA2NywgMjQyLCA5NCwgMTUsIDUsIDI0NiwgNjcsIDI0MiwgOTUsIDI0MiwgCisgICAgOTQsIDE1LCA1LCAyNDYsIDY1LCAxNSwgNSwgMjQ2LCA1OCwgMTUsIDUsIDc1LCAxNSwgNSwgMTYwLCAzMCwgMjI2LCAyMSwgCisgICAgMTUsIDUsIDE2MCwgMTE3LCAxNjAsIDIyNywgMTk1LCAxMTcsIDIyNywgMTk0LCAxNSwgNSwgMjQ1LCAyMzQsIDE1LCA1LCAKKyAgICAyNDUsIDIzNSwgMzAsIDExNSwgOTYsIDI0MiwgNDksIDk2LCAyNDgsIDIyMSwgMTUsIDUsIDI0NSwgMjM1LCAzMCwgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDI0NSwgMjM1LCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDIyMiwgOCwgMTUsIDUsIAorICAgIDI0NSwgMjM1LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0NSwgMjM1LCAzMCwgNzAsIDE1LCA1LCAyNDUsIDIxMSwgMTUsIDUsIAorICAgIDI0NSwgMjAwLCAxNSwgNSwgMjQ1LCAxNzQsIDE1LCA1LCAyNDUsIDE1MCwgMTUsIDUsIDI0NSwgMTUxLCAzMCwgMjQzLCAKKyAgICAxMDQsIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0NSwgMTUxLCAzMCwgMjMxLCAKKyAgICA5MSwgMTUsIDUsIDI0NSwgMTUxLCAyNDksIDEyNSwgMjQ1LCAxNTAsIDE1LCA1LCAyNDUsIDE1MSwgMjI2LCAxNjQsIDI0NSwgCisgICAgMTUwLCAxNSwgNSwgMjQ1LCAxNTEsIDIxOCwgMjMzLCAxNSwgNSwgMjQ1LCA4OSwgMTUsIDUsIDI0NSwgODcsIDE1LCA1LCAKKyAgICAyNDUsIDcyLCAxNSwgNSwgMjQ1LCAxMCwgMTUsIDUsIDI0NSwgMTEsIDMwLCA2MSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAxMTUsIAorICAgIDk2LCAyMzMsIDEwNCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAxMTUsIDk2LCAyMzMsIDEwNSwgMzAsIDIzMywgMTA0LCAxNSwgNSwgCisgICAgMjQ1LCAxMSwgMzAsIDI1NCwgMTIzLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAorICAgIDI0NiwgNjcsIDI0MiwgOTQsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjQ2LCA2NywgMjQyLCA5NSwgMjQyLCA5NCwgMTUsIDUsIAorICAgIDI0NSwgMTEsIDMwLCAxNjIsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjQyLCA0OSwgMjQyLCA5NCwgMTUsIDUsIDI0NSwgMTEsIAorICAgIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzNCwgMjA3LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAorICAgIDIzNCwgMjA4LCAyMTgsIDIzMywgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzMsIDIxNSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzMsIDEzNSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzMsIDEwNSwgMzAsIDIzMywgMTA0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAorICAgIDIzMiwgMjQxLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzMiwgOTgsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjE0LCAyMzAsIDE1LCAKKyAgICA1LCAyNDUsIDExLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyNDMsIDEzNSwgMTUsIDUsIDI0MywgMTM2LCAyNDIsIDk0LCAxNSwgCisgICAgNSwgMjQzLCAxMzMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDExNSwgOTYsIDI0OCwgMjIyLCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAxMTUsIDk2LCAxNjIsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDExNSwgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI1NSwgMjQsIDIxNiwgMjQwLCA5NiwgMjE3LCA5MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjU0LCAxMjMsIAorICAgIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MywgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTMsIDIzMCwgOTYsIDI0MywgCisgICAgMTE4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUyLCAxNDEsIDk2LCAKKyAgICAyMDUsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MSwgOTgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MSwgOTksIDk2LCAyMDUsIAorICAgIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0OCwgMjIxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDgsIDMsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0NywgMjE4LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ2LCA3NiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjQ1LCAxNzQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0NSwgMTc1LCA5NiwgMjMzLCAxMzUsIDE1LCA1LCAKKyAgICAyNDMsIDEzNCwgMzAsIDI0NSwgMTUwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDUsIDE1MSwgMzAsIDI0MywgMTA1LCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDMsIAorICAgIDk2LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDIxNCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAyMTIsIDE1LCA1LCAKKyAgICAyNDMsIDEzNCwgMzAsIDI0MiwgMjEzLCA5NiwgNjEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMTk4LCA5NiwgMjE4LCAKKyAgICA4MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCA0OSwgOTYsIDIzMiwgOTksIDk2LCAyNDUsIDcyLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDMxLCA5NiwgMjMzLCAxMzUsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0MSwgMTgxLCA5NiwgMjMyLCAyNDEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MCwgMjE4LCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzUsIDE2NiwgOTYsIDI0MCwgCisgICAgMjIzLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMzQsIDIwNywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM0LCA4OSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM0LCA5MCwgOTYsIAorICAgIDIzMywgMTA0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzMsIDIxNiwgOTYsIDI1NCwgMTIzLCAxNSwgNSwgMjQzLCAxMzQsIAorICAgIDMwLCAyMzMsIDEzNSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIAorICAgIDIyNywgMTk1LCAxMTcsIDIyNywgMTk0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxOTAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIAorICAgIDIyMiwgOCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjIxLCAyMzEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyMCwgNjMsIDE1LCAKKyAgICA1LCAyNDMsIDEzNCwgMzAsIDIyMCwgNjQsIDk2LCAyMTUsIDk4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDMwLCAxNSwgCisgICAgNSwgMjQzLCAxMzQsIDMwLCAyMTgsIDQzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjQzLCAxMzQsIAorICAgIDMwLCA3MCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIxNCwgMjIwLCA5NiwgCisgICAgMjQ2LCA3OCwgMTUsIDUsIDI0MywgMTM0LCAxMTcsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMjgsIDE1LCA1LCAyNDMsIAorICAgIDEyOSwgMjQ5LCAxMjUsIDI0MywgMTI4LCAxNSwgNSwgMjQzLCAxMjYsIDE1LCA1LCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgCisgICAgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMjQzLCAxMTgsIDE1LCA1LCAyNDMsIDExOSwgMjQzLCAxMjcsIDExNywgCisgICAgMjQzLCAxMjcsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDI0MywgMTE3LCAxNSwgNSwgMjQzLCAxMTUsIDE1LCA1LCAKKyAgICAyNDMsIDEwNiwgMTUsIDUsIDI0MywgMTA0LCAxNSwgNSwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQzLCAxMDUsIAorICAgIDExNywgMjQzLCAxMDQsIDE1LCA1LCAyNDMsIDEwNSwgMjQ5LCAxMjUsIDI0MywgMTA0LCAxNSwgNSwgMjQzLCA5NiwgMTUsIAorICAgIDUsIDI0MywgOTUsIDE1LCA1LCAyNDMsIDkwLCAxNSwgNSwgMjQzLCAzNiwgMTUsIDUsIDI0MywgMzcsIDMwLCAyMzMsIDE5NiwgCisgICAgMTUsIDUsIDI0MiwgMjE0LCAxNSwgNSwgMjQyLCAyMTUsIDMwLCA3NSwgMTUsIDUsIDI0MiwgMjE1LCAzMCwgNzAsIDE1LCA1LCAKKyAgICAyNDIsIDIxNSwgMjQ5LCAxMjUsIDI0MiwgMjE0LCAxNSwgNSwgMjQyLCAyMTIsIDE1LCA1LCAyNDIsIDIxMywgMTE3LCAyNDIsIAorICAgIDIxMiwgMTUsIDUsIDI0MiwgMjEzLCAyNDksIDEyNSwgMjQyLCAyMTIsIDE1LCA1LCAyNDIsIDIwOSwgMTUsIDUsIDI0MiwgCisgICAgMTk3LCAxNSwgNSwgMjQyLCAxOTgsIDI0MiwgOTQsIDE1LCA1LCAyNDIsIDE5NSwgMTUsIDUsIDI0MiwgMTk2LCAzMCwgMTE1LCAKKyAgICA5NiwgMjM2LCAzNSwgMTUsIDUsIDI0MiwgMTk2LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQyLCAxOTYsIAorICAgIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjQyLCAxOTYsIDMwLCAyMzIsIDk5LCA5NiwgMjM2LCAzNSwgMTUsIDUsIDI0MiwgMTk2LCAKKyAgICAzMCwgMTkwLCAxNSwgNSwgMjQyLCAxOTIsIDE1LCA1LCAyNDIsIDE5MCwgMTUsIDUsIDI0MiwgMTkxLCAyNDksIDEyNSwgCisgICAgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE5MSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjQyLCAxOTEsIDMwLCAyMTcsIDcyLCAKKyAgICAxNSwgNSwgMjQyLCAxOTEsIDIxNiwgMjM5LCAxNSwgNSwgMjQyLCAxMTMsIDE1LCA1LCAyNDIsIDExNCwgMjQ5LCAxMjUsIAorICAgIDI0MiwgMTEzLCAxNSwgNSwgMjQyLCAxMTEsIDE1LCA1LCAyNDIsIDExMiwgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjQyLCAKKyAgICAxMTIsIDMwLCAyMzQsIDI0MywgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNDIsIDExMiwgMzAsIDIyNywgMTk0LCAKKyAgICAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMjIsIDksIDk2LCAyMTUsIDExMywgMTUsIDUsIDI0MiwgMTEyLCAyNDIsIDk0LCAxNSwgCisgICAgNSwgMjQyLCAxMDMsIDE1LCA1LCAyNDIsIDEwNCwgMzAsIDExNSwgOTYsIDIzMywgMTk2LCAxNSwgNSwgMjQyLCAxMDQsIDMwLCAKKyAgICAyMzMsIDE5NiwgMTUsIDUsIDI0MiwgMTA0LCAxMTcsIDI0MiwgMTA0LCAyMzIsIDkxLCAxNSwgNSwgMjQyLCA5OCwgMTUsIDUsIAorICAgIDI0MiwgOTYsIDE1LCA1LCAyNDIsIDk3LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0MiwgODgsIDE1LCA1LCAyNDIsIDg3LCAxNSwgCisgICAgNSwgMjQyLCA4NCwgMTUsIDUsIDI0MiwgODMsIDE1LCA1LCAxNjIsIDE1LCA1LCAyNDIsIDQ5LCAyMTYsIDIzOSwgMTUsIDUsIAorICAgIDI0MiwgNDksIDI0MiwgOTQsIDE1LCA1LCAyNDIsIDMwLCAxNSwgNSwgMjQxLCAxODAsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIAorICAgIDI1MywgMjMxLCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjUyLCAxNzYsIAorICAgIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI0NywgMTg3LCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNDMsIDEyNiwgMTUsIDUsIDI0MSwgCisgICAgMTgxLCAzMCwgMjM0LCA4MSwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIAorICAgIDIyMCwgNjMsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDcwLCAxNSwgNSwgMjQwLCAyMjIsIDE1LCA1LCAyNDAsIDIxOCwgMTUsIAorICAgIDUsIDI0MCwgMjE5LCAzMCwgMjU0LCAxMjMsIDE1LCA1LCAyNDAsIDIxOSwgMzAsIDI0MiwgMzAsIDE1LCA1LCAyNDAsIDIxOSwgCisgICAgMzAsIDIzNCwgMjA3LCAxNSwgNSwgMjQwLCAyMTksIDMwLCAyMzIsIDE5NywgMTUsIDUsIDI0MCwgMjE5LCAzMCwgMjE0LCAKKyAgICAyMTksIDE1LCA1LCAyNDAsIDIxNSwgMTUsIDUsIDczLCAxNSwgNSwgMjQwLCAxNTQsIDYxLCAxNSwgNSwgMjQwLCAxMTUsIAorICAgIDE1LCA1LCAyMzYsIDYzLCAxNSwgNSwgMjM2LCA2NCwgMTE3LCAyMzYsIDY0LCAyNTEsIDk4LCAxNSwgNSwgMjM2LCA2NCwgCisgICAgMTE3LCAyMzYsIDY0LCAyMTgsIDIzMywgMTUsIDUsIDIzNiwgMzgsIDE1LCA1LCAyMzYsIDM1LCAxNSwgNSwgMjM2LCAzNiwgCisgICAgMjQ3LCAyNDIsIDE1LCA1LCAyMzYsIDM2LCAyMjMsIDM1LCAxNSwgNSwgMjM2LCAzNiwgMTE3LCAyMzYsIDM2LCAyMjAsIDE0LCAKKyAgICAxMTcsIDIyMCwgMTQsIDIxNCwgMjIwLCAxMTcsIDIxNCwgMjE5LCAxNSwgNSwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIAorICAgIDIzNiwgMjcsIDE1LCA1LCAyMzYsIDI4LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjM2LCAyNiwgMTUsIDUsIAorICAgIDIzNiwgMTYsIDE1LCA1LCAyMzYsIDE3LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDIzNiwgMTcsIDI0OSwgMTI1LCAyMzYsIDE2LCAKKyAgICAxNSwgNSwgMjM2LCAxNywgMjI2LCAxNjQsIDIzNiwgMTYsIDE1LCA1LCAyMzYsIDE3LCAyMTgsIDIzMywgMTUsIDUsIDIzNiwgCisgICAgOSwgMTUsIDUsIDIzNSwgMjU1LCAxNSwgNSwgMjM1LCAxNzksIDE1LCA1LCAyMzUsIDE2NSwgMTUsIDUsIDE3NiwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCA2MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTQsIDI1NSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTUsIAorICAgIDAsIDk2LCAyMzMsIDIxNSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTIsIAorICAgIDE3NiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTIsIDE2MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAxMzAsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjUyLCA2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0NSwgODcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQ1LCA3MiwgCisgICAgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDMsIDExOCwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIzNSwgMTMsIAorICAgIDMwLCAyNDMsIDk3LCA5NiwgMjIwLCAxMDEsIDk2LCA2MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDIxNCwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyNDIsIDE5NywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDE5MSwgOTYsIDIyMSwgMjMxLCAxNSwgNSwgCisgICAgMjM1LCAxMywgMzAsIDI0MiwgMTkxLCAyNDksIDEyNSwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAxMTMsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCA4NywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjM1LCAxMywgCisgICAgMzAsIDIzNiwgMTYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM0LCA5MiwgCisgICAgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzQsIDg5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMiwgMjQxLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMiwgOTgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCA5MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzEsIAorICAgIDkyLCA5NiwgMjQ2LCA3OCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzEsIDkyLCA5NiwgMjQyLCAyMTQsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjMxLCA5MiwgOTYsIDIxNywgMjIsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjMwLCAyMzEsIDk2LCAyMjcsIDE4OSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjksIDEwNywgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjUsIDEwOCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjIsIAorICAgIDE0MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMDYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIxLCAyMzEsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjIwLCAxMDIsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIwLCA2MywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjAsIAorICAgIDMwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxOSwgMjI1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxOSwgMTgyLCAxNSwgNSwgCisgICAgMjM1LCAxMywgMzAsIDIxOCwgNTEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE3LCA1MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAKKyAgICA3MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyMTQsIDE5MywgMzAsIDE5MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMTAsIDQ0LCAxNSwgNSwgMjM1LCAxMSwgMTUsIDUsIDIzNSwgMTIsIDI0OSwgMTI1LCAyMzUsIDExLCAxNSwgCisgICAgNSwgMjM1LCA0LCAxNSwgNSwgMjM1LCAxLCAxNSwgNSwgMjM0LCAyNTUsIDE1LCA1LCAyMzQsIDI1NCwgMTUsIDUsIDIzNCwgCisgICAgMjUyLCAxNSwgNSwgMjM0LCAyNTMsIDExNywgMjM0LCAyNTIsIDE1LCA1LCAyMzQsIDI0MiwgMTUsIDUsIDIzNCwgMjQzLCAKKyAgICAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIzNCwgMjM4LCAxNSwgNSwgMjM0LCAyMzksIDMwLCAyNTIsIDE3NiwgMTUsIAorICAgIDUsIDIzNCwgMjM5LCAyNDksIDEyNSwgMjM0LCAyMzgsIDE1LCA1LCAyMzQsIDIzNiwgMTUsIDUsIDIzNCwgMjM1LCAxNSwgNSwgCisgICAgMjM0LCAyMDcsIDE1LCA1LCAyMzQsIDIwOCwgMjMzLCAxMTgsIDMwLCAxMDQsIDExNywgMjMzLCAxMTgsIDMwLCA3MCwgMTUsIAorICAgIDUsIDIzNCwgMjA4LCAxMTcsIDIzNCwgMjA4LCAyMzMsIDExOCwgMzAsIDEwNCwgMTE3LCAyMzMsIDExOCwgMzAsIDcwLCAxNSwgCisgICAgNSwgMjM0LCAxNTcsIDE1LCA1LCAyMzQsIDkyLCAxNSwgNSwgMjM0LCA5MywgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjM0LCAKKyAgICA5MywgMzAsIDcwLCAxNSwgNSwgMjM0LCA5MywgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjM0LCA4OSwgMTUsIDUsIDIzNCwgODEsIAorICAgIDE1LCA1LCAyMzQsIDY4LCAxNSwgNSwgMjM0LCA2NywgMTUsIDUsIDIzNCwgNjUsIDE1LCA1LCAyMzQsIDY2LCAxMTcsIDIzNCwgCisgICAgNjUsIDE1LCA1LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMjE4LCAxMTcsIDI0MSwgMTgxLCAzMCwgMjUzLCAyMzAsIDIzMywgCisgICAgMjE4LCAxMTcsIDI0MSwgMTgxLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyMzMsIDIxNSwgMTUsIDUsIDIzMywgMjEzLCAxNSwgCisgICAgNSwgMjMzLCAyMTQsIDIxNCwgMTIsIDE3LCAxNSwgNSwgMjMzLCAyMTIsIDE1LCA1LCAyMzMsIDIwOSwgMTUsIDUsIDIzMywgCisgICAgMjEwLCAyNDIsIDk0LCAxNSwgNSwgMjMzLCAyMDgsIDE1LCA1LCAyMzMsIDE5NiwgMTUsIDUsIDIzMywgMTk3LCAyMjYsIAorICAgIDE2NCwgMjMzLCAxOTYsIDE1LCA1LCAyMzMsIDE5MSwgMTUsIDUsIDIzMywgMTcyLCAxNSwgNSwgMjMzLCAxMzUsIDE1LCA1LCAKKyAgICAyMzMsIDExNywgMTUsIDUsIDIzMywgMTE4LCAzMCwgNjEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDExNSwgOTYsIDI0OCwgCisgICAgMjIyLCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxMTUsIDk2LCAyNDMsIDk2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAxMTUsIDk2LCAyMzMsIDEwNCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjU0LCAxNzgsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAorICAgIDI1NCwgMTIzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNTMsIDIzMiwgMjEwLCA0MCwgMjE2LCAyMzksIDE1LCA1LCAyMzMsIAorICAgIDExOCwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0OCwgCisgICAgMTY2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDUsIDE1MCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMzAsIDI0MywgOTYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyNDIsIDEwNCwgOTYsIDI0MiwgMTAzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxNjIsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDI0MiwgMzAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0MSwgMTgxLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMzMsIAorICAgIDExOCwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzNiwgMTYsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDIzNiwgMTcsIDk2LCAxNjIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzNiwgMTcsIDk2LCAyMzIsIDk4LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzQsIDgxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyMzMsIDIxNSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMzLCAyMDksIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMjEwLCAKKyAgICA5NiwgMjQxLCAxODEsIDk2LCA2MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAorICAgIDIzMiwgMTk3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzIsIDg2LCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMzEsIDkxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCAKKyAgICA1LCAyMzMsIDExOCwgMzAsIDIzMCwgNjEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMjAsIDY0LCA5NiwgMjE4LCA0MywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjIwLCAxMCwgOTYsIDI0MiwgMTkxLCA5NiwgCisgICAgMjQ1LCA4NywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjIwLCAxMCwgOTYsIDI0MiwgMTkxLCAyMTYsIDIzOSwgMTUsIDUsIAorICAgIDIzMywgMTE4LCAzMCwgMjE5LCAyMjMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxOSwgMjI0LCA5NiwgMjE5LCAyMjMsIDE1LCAKKyAgICA1LCAyMzMsIDExOCwgMzAsIDIxOCwgNDMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNywgODQsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDIxNywgNzIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNywgMjMsIDk2LCAxMTUsIDk2LCAyMTgsIDg0LCA5NiwgMTk3LCAKKyAgICAxNSwgNSwgMjMzLCAxMTgsIDMwLCA3MCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMzMsIAorICAgIDExOCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDcwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgCisgICAgMjMxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMjE4LCAyMzMsIDE1LCA1LCAyMzMsIDExNSwgMTUsIDUsIDIzMywgMTE2LCAzMCwgMjIwLCA2MywgMTUsIDUsIAorICAgIDIzMywgMTE2LCAzMCwgMjIwLCA2NCwgOTYsIDIxOCwgNDMsIDE1LCA1LCAyMzMsIDExNiwgMjQyLCA5NCwgMTUsIDUsIDIzMywgCisgICAgMTE2LCAyNDIsIDk1LCAxMTcsIDIzMywgMTE2LCAyNDIsIDk1LCAyMjAsIDYzLCAxNSwgNSwgMjMzLCAxMTEsIDE1LCA1LCAKKyAgICAyMzMsIDEwNCwgMTUsIDUsIDIzMywgMTA1LCAzMCwgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDEwMiwgMTUsIDUsIDIzMywgCisgICAgMTAzLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMzMsIDEwMywgMzAsIDIzMywgMTk3LCA5NiwgMjIyLCAxNDAsIDE1LCA1LCAKKyAgICAyMzIsIDI0MSwgMTUsIDUsIDIzMiwgMjI2LCAxNSwgNSwgMjMyLCAyMTYsIDE1LCA1LCAyMzIsIDE5NywgMTUsIDUsIDIzMiwgCisgICAgOTgsIDE1LCA1LCAyMzIsIDk5LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMzAsIAorICAgIDI1NCwgMTc4LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI0NSwgNzIsIDE1LCAKKyAgICA1LCAyMzIsIDk3LCAzMCwgMjQ1LCA3MywgMjE2LCAyMzksIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjQzLCAxMDUsIDIxNiwgCisgICAgMjM5LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI0MSwgMTgxLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM2LCAKKyAgICAxNiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzUsIDEsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM0LCAyNTUsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjM1LCAwLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMzMsIDEzNiwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMjksIDEwNywgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMjcsIDIzNywgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMTksIDE5MiwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIxOSwgMTc0LCA5NiwgMjUxLCAxMjUsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjE1LCAxMTMsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAyMTYsIDIzOSwgMTUsIDUsIDIzMiwgOTcsIDI0OSwgMTI1LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMjI2LCAKKyAgICAxNjQsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAyMTgsIDIzMywgMTUsIDUsIDIzMiwgOTcsIDIyMCwgNDUsIDE1LCA1LCAKKyAgICAyMzIsIDk1LCAxNSwgNSwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgOTIsIDExNywgMjMyLCA5MSwgMTUsIDUsIDIzMiwgOTIsIAorICAgIDIyNiwgMTY0LCAyMzIsIDkxLCAxNSwgNSwgMjMyLCA5MiwgMjIwLCA0NSwgMTUsIDUsIDIzMiwgODksIDE1LCA1LCAyMzIsIAorICAgIDg2LCAxNSwgNSwgMjMyLCA4NCwgMTUsIDUsIDIzMiwgODUsIDExNywgMjMyLCA4NCwgMTUsIDUsIDIzMiwgODUsIDExNywgCisgICAgMjMyLCA4NSwgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMTg0LCAxNSwgNSwgMjMxLCAyMzksIDMwLCAyMTcsIDcyLCAKKyAgICAxNSwgNSwgMjMxLCAyMzksIDI0MiwgOTQsIDE1LCA1LCAyMzEsIDIzOCwgMTUsIDUsIDIzMSwgMjEwLCAxNSwgNSwgMjMxLCAKKyAgICAxNjYsIDE1LCA1LCAyMzEsIDE0NywgMTUsIDUsIDIzMSwgMTQ2LCAxNSwgNSwgMjMxLCA5MSwgMTUsIDUsIDIzMSwgNDcsIAorICAgIDE1LCA1LCAyMzAsIDIzMCwgMTUsIDUsIDIzMCwgMTg4LCAxNSwgNSwgMjMwLCAxMDIsIDE1LCA1LCAyMzAsIDEwMywgMTE3LCAKKyAgICAyMzAsIDEwMiwgMTUsIDUsIDIzMCwgOTMsIDE1LCA1LCAyMzAsIDk0LCAyNDIsIDk0LCAxNSwgNSwgMjMwLCA3OCwgMTUsIDUsIAorICAgIDIzMCwgNjQsIDE1LCA1LCAyMzAsIDYxLCAxNSwgNSwgMjMwLCA2MiwgMzAsIDYxLCAxNSwgNSwgMjMwLCA2MiwgMzAsIDIzMywgCisgICAgMTk2LCAxNSwgNSwgMjMwLCA2MiwgMzAsIDIxMCwgMTE2LCAxNSwgNSwgMjMwLCA2MiwgMTE3LCAyMzAsIDYxLCAxNSwgNSwgCisgICAgMjMwLCA2MiwgMTE3LCAyMzAsIDYyLCAzMCwgMTE1LCA5NiwgMTk3LCAxNSwgNSwgMjMwLCA2MiwgMjQ5LCAxMjUsIDIzMCwgCisgICAgNjEsIDE1LCA1LCAyMzAsIDU5LCAxNSwgNSwgMjMwLCA2MCwgMzAsIDYxLCAxNSwgNSwgMjMwLCA2MCwgMzAsIDExNSwgOTYsIAorICAgIDI0OCwgMywgMTUsIDUsIDIzMCwgNjAsIDMwLCAyNDgsIDMsIDE1LCA1LCAyMzAsIDYwLCAyNDIsIDk0LCAxNSwgNSwgMTk3LCAKKyAgICAxNSwgNSwgMjI5LCAyMjcsIDE1LCA1LCAyMjksIDIxNiwgMTUsIDUsIDIyOSwgMjE3LCAyMzUsIDE5MiwgMTUsIDUsIDIyOSwgCisgICAgMjE3LCAzMCwgMjE5LCAyMjYsIDIxNiwgMjM5LCAxNSwgNSwgMjI5LCAyMTcsIDIyNiwgMTY0LCAyMjksIDIxNiwgMTUsIDUsIAorICAgIDIyOSwgMjE1LCAxNSwgNSwgMjI5LCAyMDgsIDIyNywgMTgwLCAxNSwgNSwgMjI5LCAyMDcsIDE1LCA1LCAyMjksIDIwNiwgCisgICAgMTUsIDUsIDIyOSwgMTA3LCAxNSwgNSwgMjI5LCAxMDgsIDMwLCA2MSwgMTUsIDUsIDIyOSwgMTA4LCAzMCwgMjE0LCAyMTksIAorICAgIDE1LCA1LCAyMjksIDEwOCwgMjIwLCA0NSwgMTUsIDUsIDIyOCwgMjMzLCAxNSwgNSwgMjI4LCAyMzQsIDMwLCA3NSwgMTUsIAorICAgIDUsIDIyOCwgMjMyLCAxNSwgNSwgMjI4LCAyMDMsIDE1LCA1LCAyMjgsIDIwNCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgCisgICAgMTUsIDUsIDIyOCwgMjA0LCAzMCwgMjQzLCA5NywgOTYsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIyOCwgMjAxLCAKKyAgICAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyNTQsIDEyMywgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIAorICAgIDIwMiwgMzAsIDI1MywgMjMyLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgCisgICAgMjI4LCAyMDIsIDMwLCAyMzEsIDkyLCA5NiwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjksIAorICAgIDEwNywgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyMCwgNjMsIDE1LCA1LCAKKyAgICAyMjgsIDIwMiwgMzAsIDIyMCwgNjQsIDk2LCAxMTUsIDI1NCwgMTIzLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCAKKyAgICA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyMCwgNjQsIDk2LCAyNTMsIDIzMiwgOTYsIDI1MywgMjMxLCAKKyAgICAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMTQsIAorICAgIDEyNiwgMTUsIDUsIDIyOCwgMTkwLCAxNSwgNSwgMjI3LCAyMzcsIDE1LCA1LCAyMjcsIDIxMCwgMTUsIDUsIDIyNywgMTk0LCAKKyAgICAxNSwgNSwgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIAorICAgIDIzMSwgMTQ3LCAxNSwgNSwgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgMjIyLCA4LCAxNSwgNSwgMjI3LCAxOTUsIDIzMywgCisgICAgMTE2LCAzMCwgMjIyLCA5LCAxMTcsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDIyMiwgOCwgMTUsIDUsIDIyNywgMTk1LCAKKyAgICAyMzMsIDExNiwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjI3LCAxOTUsIDIxNiwgMjM5LCAxNSwgNSwgMjI3LCAxOTUsIDExNywgCisgICAgMjI3LCAxOTQsIDE1LCA1LCAyMjcsIDE5NSwgMjQ5LCAxMjUsIDIyNywgMTk0LCAxNSwgNSwgMjI3LCAxOTUsIDI0OSwgMTI1LCAKKyAgICAyMjcsIDE5NSwgMjMzLCAxMTYsIDExNywgMjMzLCAxMTUsIDE1LCA1LCAyMjcsIDE4OSwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIAorICAgIDI0LCAzMCwgMjUzLCAyMjYsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDI1MiwgNiwgMTUsIDUsIDIyNywgMTkwLCAKKyAgICAyNTUsIDI0LCAzMCwgMjQ2LCA3NCwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAyMjcsIAorICAgIDE5MCwgMjU1LCAyNCwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDIzNCwgCisgICAgMjU1LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMzMsIDEzNSwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAKKyAgICAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDIxOSwgMTcxLCAxNSwgNSwgMjI3LCAxOTAsIAorICAgIDI1NSwgMjQsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyNywgMTkwLCAyMzQsIDY2LCAzMCwgMjUyLCA2LCAxNSwgNSwgMjI3LCAKKyAgICAxOTAsIDIzNCwgNjYsIDMwLCAyNTIsIDcsIDcwLCAxNSwgNSwgMTkwLCAxNSwgNSwgMjI2LCA4MCwgMTUsIDUsIDIyNiwgNDcsIAorICAgIDE1LCA1LCAyMjYsIDIxLCAxNSwgNSwgMjI1LCAxNjEsIDE1LCA1LCAyMjUsIDEwOCwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgCisgICAgNjEsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDI1NSwgMjUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDI1MiwgNiwgMTUsIDUsIAorICAgIDIyNSwgMTA5LCAzMCwgMjUxLCAxMjUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDc1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3MywgCisgICAgMTUsIDUsIDIyNSwgMTA5LCAzMCwgMjQwLCAxMTUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDcwLCAxNSwgNSwgMjI1LCAxMDksIAorICAgIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyNSwgMTA5LCAyNDksIDEyNSwgMjI1LCAxMDgsIDE1LCA1LCAyMjUsIDUzLCAxNSwgNSwgCisgICAgMjI1LCA1NCwgMzAsIDIzNCwgMjM4LCAxNSwgNSwgMjI1LCA1NCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjI1LCA1NCwgMzAsIAorICAgIDIxMCwgMTE2LCAxNSwgNSwgMjI1LCA1NCwgMjI2LCAxNjQsIDIyNSwgNTMsIDE1LCA1LCAyMDUsIDE1LCA1LCAyMjMsIDE4MiwgCisgICAgMTUsIDUsIDIyMywgMzUsIDE1LCA1LCAyMjIsIDE0MCwgMTUsIDUsIDIwNiwgMTUsIDUsIDIyMiwgMjIsIDIyNywgMTgwLCAKKyAgICAxNSwgNSwgMjIyLCAyMSwgMTUsIDUsIDIyMiwgMjIsIDMwLCA2MSwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyNDYsIDc4LCAxNSwgCisgICAgNSwgMjIyLCAyMiwgMzAsIDI0NiwgNzYsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMTYyLCAxNSwgNSwgMjIyLCAyMiwgMzAsIAorICAgIDIzNCwgMjQyLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIzMiwgODQsIDE1LCAKKyAgICA1LCAyMjIsIDIyLCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMjIsIDIyLCAKKyAgICAzMCwgMjIyLCA4LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIyMCwgMzAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE3LCA5MywgMTUsIAorICAgIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDIyNSwgMTUsIDUsIDIyMiwgMjIsIAorICAgIDMwLCAyMTQsIDE5NywgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDE1MCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDEyNiwgCisgICAgMTUsIDUsIDIyMiwgMjIsIDExNywgMjIyLCAyMSwgMTUsIDUsIDIyMiwgMjIsIDI0MiwgOTQsIDE1LCA1LCAyMjIsIDgsIDE1LCAKKyAgICA1LCAyMjIsIDksIDIzMywgMTE4LCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyMjEsIDIzOSwgMTUsIDUsIDIyMSwgMjMxLCAxNSwgCisgICAgNSwgMjIwLCAxMDIsIDE1LCA1LCAyMjAsIDEwMCwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgNjEsIDE1LCA1LCAyMjAsIDEwMSwgCisgICAgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyNDIsIDE5MCwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjI5LCAKKyAgICAxMDcsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDIxOSwgMjIzLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyMTUsIDk4LCAxNSwgNSwgCisgICAgMjIwLCAxMDEsIDMwLCA3MCwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMjAsIDk5LCAxNSwgCisgICAgNSwgMjIwLCA5NywgMTUsIDUsIDIyMCwgNzgsIDE1LCA1LCAyMjAsIDYzLCAxNSwgNSwgMjIwLCA2NCwgMjQwLCAyMjIsIDE1LCAKKyAgICA1LCAyMjAsIDY0LCAxMTcsIDIyMCwgNjQsIDI0MywgMTI3LCAxMTcsIDI0MywgMTI3LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIAorICAgIDE1LCA1LCAyMjAsIDY0LCAxMTcsIDIyMCwgNjQsIDIxNywgOTQsIDExNywgMjE3LCA5NCwgMjQzLCA5NywgMTE3LCAyNDMsIAorICAgIDk2LCAxNSwgNSwgMjIwLCA1NiwgMTUsIDUsIDIyMCwgNTEsIDE1LCA1LCAyMjAsIDQ4LCAxNSwgNSwgMjIwLCA0NywgMTUsIAorICAgIDUsIDIyMCwgNDQsIDE1LCA1LCAyMjAsIDMwLCAxNSwgNSwgMjIwLCAzMSwgMzAsIDYxLCAxNSwgNSwgMjIwLCAzMSwgMzAsIAorICAgIDIzNiwgMTYsIDE1LCA1LCAyMjAsIDI0LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDYxLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDI1MiwgCisgICAgMTYxLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDI1MSwgMTA5LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDI0NywgMjA2LCAxNSwgNSwgCisgICAgMjIwLCAyNSwgMzAsIDI0MywgOTYsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAKKyAgICAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzMywgMTkxLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzMiwgCisgICAgODYsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjMwLCA5MywgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjAsIAorICAgIDE4LCAxNSwgNSwgMjIwLCAxMywgMTUsIDUsIDIyMCwgMTQsIDIxNiwgMjM5LCAxNSwgNSwgMjIwLCAxNCwgMTE3LCAyMjAsIAorICAgIDE0LCAyNTEsIDk5LCAxMTcsIDI1MSwgOTgsIDE1LCA1LCAyMjAsIDksIDE1LCA1LCAyMTksIDIyNSwgMTUsIDUsIDIxOSwgCisgICAgMjI2LCAxMTcsIDIzNSwgMTkzLCAyMTksIDIyNSwgMTUsIDUsIDIxOSwgMjIzLCAxNSwgNSwgMjE5LCAyMjIsIDE1LCA1LCAKKyAgICAyMTksIDE5MSwgMTUsIDUsIDIxOSwgMTkyLCAyNDIsIDk0LCAxNSwgNSwgMjE5LCAxODIsIDE1LCA1LCAyMTksIDE4MCwgMTUsIAorICAgIDUsIDIxOSwgMTgxLCAxMTcsIDIxOSwgMTgxLCAyMTksIDIyMywgMTUsIDUsIDIxOSwgMTczLCAxNSwgNSwgMjE5LCAxNzEsIAorICAgIDE1LCA1LCAyMTgsIDgzLCAxNSwgNSwgMjE4LCA4NCwgMTE3LCAyMTgsIDgzLCAxNSwgNSwgMjE4LCA1NCwgMTUsIDUsIDIxOCwgCisgICAgNTMsIDE1LCA1LCAyMTgsIDUxLCAxNSwgNSwgMjE4LCA0MywgMTUsIDUsIDIxOCwgNDIsIDE1LCA1LCAyMTgsIDE3LCAxNSwgCisgICAgNSwgMjE4LCAxNiwgMTUsIDUsIDIxNywgMTA1LCAxNSwgNSwgMjE3LCAxMDYsIDI1MywgMjE2LCAxNSwgNSwgMjE3LCAxMDYsIAorICAgIDMwLCAyNDEsIDE4MCwgMTUsIDUsIDIxNywgMTA2LCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMTcsIDEwNiwgMjQyLCA5NCwgCisgICAgMTUsIDUsIDIxNywgOTMsIDE1LCA1LCAyMTcsIDk0LCAxMTcsIDIxNywgOTQsIDIyOCwgMjM0LCAxMTcsIDIyOCwgMjM0LCAKKyAgICAyNDcsIDE4OCwgMTE3LCAyNDcsIDE4NywgMTUsIDUsIDIxNywgOTQsIDIxOCwgMjMzLCAxNSwgNSwgMjE3LCA4NCwgMTUsIDUsIAorICAgIDEyOSwgMzAsIDI1MiwgNiwgMTUsIDUsIDEyOSwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgMTI5LCAzMCwgMjIwLCA2MywgMTUsIAorICAgIDUsIDEyOSwgMzAsIDIxOSwgMjI1LCAxNSwgNSwgMTI5LCAzMCwgMjE1LCAxMTMsIDE1LCA1LCAxMjksIDMwLCAyMTQsIDIxOSwgCisgICAgMTUsIDUsIDIxNywgNzIsIDE1LCA1LCAyMTcsIDUwLCAxNSwgNSwgMjE3LCAyMiwgMTUsIDUsIDIxNywgMjMsIDI0MiwgOTQsIAorICAgIDE1LCA1LCAyMTYsIDExNywgMTUsIDUsIDIxNiwgMTE4LCAyMTYsIDIzOSwgMTUsIDUsIDIxNiwgOTAsIDE1LCA1LCAyMTYsIAorICAgIDcyLCAxNSwgNSwgMjE2LCA3MywgMzAsIDIxNywgNzIsIDE1LCA1LCAyMTYsIDczLCAxMTcsIDIxNiwgNzIsIDE1LCA1LCAKKyAgICAyMTYsIDczLCAxMTcsIDIxNiwgNzMsIDI0MywgMTI3LCAxMTcsIDI0MywgMTI3LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIAorICAgIDE1LCA1LCAyMTUsIDExOCwgMTUsIDUsIDIxNSwgMTEzLCAxNSwgNSwgMjE1LCAxMTEsIDE1LCA1LCAyMTUsIDEwOCwgMTUsIAorICAgIDUsIDIxNSwgOTgsIDE1LCA1LCAyMTUsIDk5LCAxMTcsIDIxNSwgOTksIDIxMCwgMTE3LCAxMTcsIDIxMCwgMTE2LCAxNSwgNSwgCisgICAgNzAsIDE1LCA1LCAxMDQsIDI0MiwgMTAzLCAxNSwgNSwgMTA0LCAxMDQsIDcwLCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMjI2LCAKKyAgICA5MCwgMTE3LCAyMjYsIDkwLCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAxMDQsIDExNywgMTA0LCAyMTgsIDE4LCAKKyAgICAxMTcsIDIxOCwgMTcsIDE1LCA1LCAxMDQsIDExNywgMTA0LCAxMDQsIDIyMywgNDksIDExNywgMTA0LCAyMjMsIDQ4LCAxNSwgCisgICAgNSwgMjE0LCAyMzAsIDE1LCA1LCAyMTQsIDIyNSwgMTUsIDUsIDIxNCwgMjE5LCAxNSwgNSwgMjE0LCAyMjAsIDIzMywgMTkxLCAKKyAgICAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMTQsIAorICAgIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDcwLCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCAKKyAgICAxMDQsIDI0MiwgOTQsIDE1LCA1LCAyMTQsIDIyMCwgMjQyLCA5NCwgMTUsIDUsIDIxNCwgMjIwLCAyMjAsIDQ1LCAxNSwgNSwgCisgICAgMjE0LCAyMjAsIDIyMCwgNDYsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIxNCwgMjE1LCAxNSwgNSwgMjE0LCAxOTcsIDE1LCA1LCAKKyAgICAyMTQsIDE5OCwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAyMzEsIDkyLCA5NiwgMjQ4LCAyMjEsIDE1LCAKKyAgICA1LCAyMTQsIDE5OCwgMzAsIDIyMCwgMTAwLCAxNSwgNSwgMjE0LCAxOTgsIDMwLCA3MCwgMTUsIDUsIDIxNCwgMTk2LCAxNSwgCisgICAgNSwgMjE0LCAxOTIsIDE1LCA1LCAyMTQsIDE5MywgMzAsIDIzNCwgMjA3LCAxNSwgNSwgMjE0LCAxOTMsIDMwLCAxOTAsIDE1LCAKKyAgICA1LCAyMTQsIDE5MCwgMTUsIDUsIDIxNCwgMTkxLCAyNDIsIDk0LCAxNSwgNSwgMjE0LCAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgCisgICAgMjQ5LCAxMjUsIDIxNCwgMTUwLCAxNSwgNSwgMjE0LCAxNTEsIDIyMCwgNDUsIDE1LCA1LCAyMTQsIDE0OCwgMTUsIDUsIAorICAgIDIxNCwgMTQ5LCAzMCwgMTE1LCA5NiwgMTYyLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAxMTUsIDk2LCAxOTcsIDE1LCA1LCAKKyAgICAyMTQsIDE0OSwgMzAsIDI1NCwgMTc4LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIAorICAgIDIyNywgMTk0LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjE0LCAyMzEsIAorICAgIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjE0LCAyMzEsIDk2LCAyNTIsIDYsIDE1LCA1LCAyMTQsIDE0NywgCisgICAgMTUsIDUsIDIxNCwgMTQ0LCAxNSwgNSwgMjE0LCAxNDMsIDE1LCA1LCAyMTQsIDEzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgNjEsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI1MywgMjI2LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxMzAsIDE1LCA1LCAyMTQsIAorICAgIDE0MCwgMzAsIDI0NiwgNjgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTM1LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyNDMsIDExOCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyNDMsIDk2LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDIsIDExMywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTYyLCAxNSwgNSwgCisgICAgMjE0LCAxNDAsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyMzUsIDE2NSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM0LCA5MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjMyLCA4NCwgMTUsIAorICAgIDUsIDIxNCwgMTQwLCAzMCwgMjMwLCAxODgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE5MCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjIwLCA2MywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE5LCAxODAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNSwgMTE4LCAKKyAgICAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxMDQsIDk2LCAyNDIsIDEwMywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE0LCAyMTksIAorICAgIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzcsIDE1LCA1LCAyMTQsIDEzOCwgMzAsIDcwLCAKKyAgICAxNSwgNSwgMjE0LCAxMjYsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDYxLCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMzMsIDIxNywgCisgICAgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIxNywgNzIsIDE1LCA1LCAyMTQsIAorICAgIDEyMiwgMTUsIDUsIDIxNCwgMTI1LCAxNSwgNSwgMjE0LCAxMjMsIDE1LCA1LCAyMTQsIDExOSwgMTUsIDUsIDIxNCwgMTA4LCAKKyAgICAxNSwgNSwgMjE0LCAxMDksIDMwLCAyMzQsIDIwNywgMTUsIDUsIDIxNCwgMTA3LCAxNSwgNSwgMjEwLCAxMTYsIDE1LCA1LCAKKyAgICAyMTAsIDExNywgMjE2LCAyMzksIDE1LCA1LCAyMTAsIDExNywgOTIsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIxMCwgMTEzLCAKKyAgICAxNSwgNSwgMjEwLCAxMDYsIDE1LCA1LCAyMTAsIDkzLCAxNSwgNSwgMjEwLCA0NCwgMTUsIDUsIDIxMCwgNDUsIDExNywgCisgICAgMjEwLCA0NCwgMTUsIDUsIDIxMCwgNDMsIDE1LCA1LCAyMTAsIDQxLCAxNSwgNSwgMjEwLCA0MiwgMjM1LCAzLCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDIxMCwgMzYsIDE1LCA1LCAyMTAsIDI4LCAxNSwgNSwgMjEwLCAxMywgMTUsIDUsIDIxMCwgMTEsIDE1LCAKKyAgICA1LCAyMTAsIDEyLCAzMCwgNjEsIDE1LCA1LCAyMTAsIDEwLCAxNSwgNSwgMjEwLCA5LCAxNSwgMTMyLCA1LCAxMTMsIDI1MywgCisgICAgMjMxLCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNTMsIDIzMSwgMTUsIDEzMiwgCisgICAgNSwgMjQ0LCA4MSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIxOSwgMTI1LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjIwLCAKKyAgICAxMjIsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyNTMsIAorICAgIDIzMSwgMTUsIDEzMiwgNSwgMTM0LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjQ3LCAxODcsIDE1LCAxMzIsIAorICAgIDUsIDI0NCwgODEsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIyMCwgCisgICAgMTIyLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjQ3LCAKKyAgICAxODcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDcwLCAxNSwgMTMyLCA1LCAyNDQsIDgxLCA3MCwgMTUsIDEzMiwgNSwgMjE5LCAKKyAgICAxMjUsIDcwLCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgNzAsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCA3MCwgMTUsIDEzMiwgNSwgCisgICAgMjI4LCAyMDAsIDcwLCAxNSwgMTMyLCA1LCAxMjMsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDExMywgMjQzLCAzOCwgMTUsIAorICAgIDEzMiwgNSwgMTM0LCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAKKyAgICAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDI0MywgMzgsIAorICAgIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgCisgICAgMTIzLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCAzNSwgMTUsIAorICAgIDEzMiwgNSwgMjQ0LCAxMSwgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMTEzLCAKKyAgICAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3OSwgMjE0LCAxMiwgMTcsIAorICAgIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIAorICAgIDIxOSwgMTI1LCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIAorICAgIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMjMsIDIyMCwgNzMsIDE1LCAKKyAgICAxMzIsIDUsIDExMywgMjIwLCA3MywgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDczLCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzQsIAorICAgIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMjAsIDczLCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMjAsIDczLCAKKyAgICAxNSwgMTMyLCA1LCAyMjAsIDc5LCAzMCwgMjQzLCAxMTksIDk2LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjIwLCA3OSwgMzAsIAorICAgIDI0MywgMTE5LCA5NiwgMjMwLCAxODgsIDE1LCAxMzIsIDUsIDEyMywgMjUxLCA5NSwgMTUsIDEzMiwgNSwgMTEzLCAyNTEsIAorICAgIDk1LCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDEzNCwgMjUxLCA5NiwgMjE0LCAxMiwgMTcsIDE1LCAKKyAgICAxMzIsIDUsIDI0NCwgMTEsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDEzNCwgCisgICAgMjE0LCAxMiwgMjQ0LCAyMCwgMjQ1LCA3NCwgMTUsIDEzMiwgNSwgMTM0LCAyMTQsIDEyLCAyNDQsIDIwLCAyNDUsIDcxLCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIDIxNywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgCisgICAgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTUsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgCisgICAgMjE4LCA2MSwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTgsIDI1MywgMTU4LCAxNSwgCisgICAgMTMyLCA1LCAyMTksIDEyNSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjUzLCAyMjgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIAorICAgIDEyLCAyNDQsIDIwLCAyMzYsIDgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDEwLCA2MSwgCisgICAgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMTAsIDI1MywgMTU4LCAxNSwgMTMyLCA1LCAKKyAgICAyNDUsIDE5MywgMjE0LCAxMiwgMjQ0LCAyMCwgMjE0LCAxMjEsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyMTQsIDEyLCAyNDQsIAorICAgIDIwLCAyMTQsIDEyMCwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMjQsIDE1LCAxMzIsIAorICAgIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDIzLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgCisgICAgMjQ0LCAyMCwgMjM2LCAyMiwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMjUsIDYxLCAKKyAgICAxNSwgMTMyLCA1LCAxMTMsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMTM0LCAyNTMsIDIzMiwgMjE2LCAyMzksIAorICAgIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjUzLCAyMzIsIAorICAgIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjUzLCAyMzIsIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAxMjMsIDI1MiwgCisgICAgMTUwLCAxNSwgMTMyLCA1LCAxMTMsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAxMzQsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAKKyAgICAyNDQsIDExLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjUyLCAxNTEsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCAKKyAgICA1LCAyNDQsIDgxLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjUyLCAxNTEsIDIxNCwgMTIsIDE3LCAxNSwgCisgICAgMTMyLCA1LCAyMjgsIDIxMCwgMTUsIDEzMiwgNSwgMjI4LCAyMTEsIDE1LCAxMzIsIDUsIDEyMywgMjQ1LCA3MCwgMTUsIAorICAgIDEzMiwgNSwgMTEzLCAyNDUsIDcwLCAxNSwgMTMyLCA1LCAxMjMsIDIxNiwgMTY5LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgCisgICAgMTEzLCAyMTYsIDE2NywgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDIxOSwgMTE0LCAyNDcsIDE4NywgMTUsIAorICAgIDEzMiwgNSwgMTIzLCAyMTYsIDE2OSwgMjE0LCAxMiwgMjQ0LCAyMCwgNjEsIDE1LCAxMzIsIDUsIDExMywgMjE2LCAxNjcsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDYxLCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgMTg5LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgCisgICAgMTIzLCAyMjQsIDIyLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgNTUsIDI1MywgMjE5LCAxMjMsIDIxOSwgMTE1LCAxNSwgMTMyLCAKKyAgICA1LCA1NSwgMjUzLCAyMTksIDEyMywgMjI0LCAyMSwgMTUsIDIyNCwgMTQxLCA1LCA1NSwgMjUzLCAyMTksIDIxMSwgMjA5LCAKKyAgICAyNDcsIDE3MiwgMTUsIDIyNCwgMTQxLCA1LCA2NywgMjQ5LCAyMjYsIDE1LCAyMjQsIDE0MSwgNSwgMjQ3LCAyNTUsIDI0OSwgCisgICAgMjI2LCAxNSwgMjI0LCAxNDEsIDUsIDI0NywgMjU1LCAyMTUsIDIyMSwgMTIsIDEzLCAyNTUsIDE1NSwgMTIsIDEzLCAyNTUsIAorICAgIDE1NCwgMTIsIDEzLCAyNTUsIDE1MywgMTIsIDEzLCAyNTUsIDE1MiwgMTIsIDEzLCAyNTUsIDE1MSwgMTIsIDEzLCAyNTUsIAorICAgIDE1MCwgMTIsIDEzLCAyNTUsIDE0OSwgMTIsIDEzLCAyNTUsIDE0OCwgMTIsIDEzLCAyNTUsIDE0NywgMTIsIDEzLCAyNTUsIAorICAgIDE0NiwgMTIsIDEzLCAyNTUsIDE0NSwgMTIsIDEzLCAyNTUsIDE0NCwgMTIsIDEzLCAyNTUsIDE0MywgMTIsIDEzLCAyNTUsIAorICAgIDE0MiwgMTIsIDEzLCAyNTUsIDE0MSwgMTIsIDEzLCAyNTUsIDE0MCwgMTIsIDEzLCAyNTUsIDEzOSwgMTIsIDEzLCAyNTUsIAorICAgIDEzOCwgMTIsIDEzLCAyNTUsIDEzNywgMTIsIDEzLCAyNTUsIDEzNiwgMTIsIDEzLCAyNTUsIDEzNSwgMTIsIDEzLCAyNTUsIAorICAgIDEzNCwgMTIsIDEzLCAyNTUsIDEzMywgMTIsIDEzLCAyNTUsIDEzMiwgMTIsIDEzLCAyNTUsIDEzMSwgMTIsIDEzLCAyNTUsIAorICAgIDEzMCwgMTIsIDEzLCAyNTUsIDEyOSwgMTIsIDEzLCAyNTUsIDEyOCwgMTIsIDEzLCAyNTUsIDEyNywgMTIsIDEzLCAyNTUsIAorICAgIDEyNiwgMTIsIDEzLCAyNTUsIDEyNSwgMTIsIDEzLCAyNTUsIDEyNCwgMTIsIDEzLCAyNTUsIDEyMywgMTIsIDEzLCAyNTUsIAorICAgIDEyMiwgMTIsIDEzLCAyNTUsIDEyMSwgMTIsIDEzLCAyNTUsIDEyMCwgMTIsIDEzLCAyNTUsIDExOSwgMTIsIDEzLCAyNTUsIAorICAgIDExOCwgMTIsIDEzLCAyNTUsIDExNywgMTIsIDEzLCAyNTUsIDExNiwgMTIsIDEzLCAyNTUsIDExNSwgMTIsIDEzLCAyNTUsIAorICAgIDExNCwgMTIsIDEzLCAyNTUsIDExMywgMTIsIDEzLCAyNTUsIDExMiwgMTIsIDEzLCAyNTUsIDExMSwgMTIsIDEzLCAyNTUsIAorICAgIDExMCwgMTIsIDEzLCAyNTUsIDEwOSwgMTIsIDEzLCAyNTUsIDEwOCwgMTIsIDEzLCAyNTUsIDEwNywgMTIsIDEzLCAyNTUsIAorICAgIDEwNiwgMTIsIDEzLCAyNTUsIDEwNSwgMTIsIDEzLCAyNTUsIDEwNCwgMTIsIDEzLCAyNTUsIDEwMywgMTIsIDEzLCAyNTUsIAorICAgIDEwMiwgMTIsIDEzLCAyNTUsIDEwMSwgMTIsIDEzLCAyNTUsIDEwMCwgMTIsIDEzLCAyNTUsIDk5LCAxMiwgMTMsIDI1NSwgCisgICAgOTgsIDEyLCAxMywgMjU1LCA5NywgMTIsIDEzLCAyNTUsIDk2LCAxMiwgMTMsIDI1NSwgOTUsIDEyLCAxMywgMjU1LCA5NCwgCisgICAgMTIsIDEzLCAyNTUsIDkzLCAxMiwgMTMsIDI1NSwgOTIsIDEyLCAxMywgMjU1LCA5MSwgMTIsIDEzLCAyNTUsIDkwLCAxMiwgCisgICAgMTMsIDI1NSwgODksIDEyLCAxMywgMjU1LCA4OCwgMTIsIDEzLCAyNTUsIDg3LCAxMiwgMTMsIDI1NSwgODYsIDEyLCAxMywgCisgICAgMjU1LCA4NSwgMTIsIDEzLCAyNTUsIDg0LCAxMiwgMTMsIDI1NSwgODMsIDEyLCAxMywgMjU1LCA4MiwgMTIsIDEzLCAyNTUsIAorICAgIDgxLCAxMiwgMTMsIDI1NSwgODAsIDEyLCAxMywgMjU1LCA3OSwgMTIsIDEzLCAyNTUsIDc4LCAxMiwgMTMsIDI1NSwgNzcsIAorICAgIDEyLCAxMywgMjU1LCA3NiwgMTIsIDEzLCAyNTMsIDE1NiwgMTIsIDEzLCAyNTMsIDE1NCwgMTIsIDEzLCAyNTMsIDE1MiwgCisgICAgMTIsIDEzLCAyNTMsIDE1MCwgMTIsIDEzLCAyNTMsIDE0OCwgMTIsIDEzLCAyNTMsIDE0NywgMTIsIDEzLCAyNTMsIDE0NSwgCisgICAgMTIsIDEzLCAyNTMsIDE0MywgMTIsIDEzLCAyNTMsIDE0MSwgMTIsIDEzLCAyNTMsIDEzOSwgMTIsIDEzLCAyNTEsIDYyLCAKKyAgICAxMiwgMTMsIDI1MSwgNjEsIDEyLCAxMywgMjUxLCA2MCwgMTIsIDEzLCAyNTEsIDU5LCAxMiwgMTMsIDI1MSwgNTgsIDEyLCAKKyAgICAxMywgMjUxLCA1NywgMTIsIDEzLCAyNTEsIDU2LCAxMiwgMTMsIDI1MSwgNTUsIDEyLCAxMywgMjUxLCA1NCwgMTIsIDEzLCAKKyAgICAyNTEsIDUzLCAxMiwgMTMsIDI1MSwgNTIsIDEyLCAxMywgMjUxLCA1MSwgMTIsIDEzLCAyNTEsIDUwLCAxMiwgMTMsIDI1MSwgCisgICAgNDksIDEyLCAxMywgMjUxLCA0OCwgMTIsIDEzLCAyNTEsIDQ3LCAxMiwgMTMsIDI1MSwgNDYsIDEyLCAxMywgMjUxLCA0NSwgCisgICAgMTIsIDEzLCAyNTEsIDQ0LCAxMiwgMTMsIDI1MSwgNDMsIDEyLCAxMywgMjUxLCA0MiwgMTIsIDEzLCAyNTEsIDQxLCAxMiwgCisgICAgMTMsIDI1MSwgNDAsIDEyLCAxMywgMjUxLCAzOSwgMTIsIDEzLCAyNTEsIDM4LCAxMiwgMTMsIDI1MSwgMzcsIDEyLCAxMywgCisgICAgMjUxLCAzNiwgMTIsIDEzLCAyNTEsIDM1LCAxMiwgMTMsIDI0OSwgNTksIDEyLCAxMywgMjQ5LCA1OCwgMTIsIDEzLCAyNDksIAorICAgIDU3LCAxMiwgMTMsIDI0OSwgNTYsIDEyLCAxMywgMjQ5LCA1NSwgMTIsIDEzLCAyNDksIDU0LCAxMiwgMTMsIDI0OSwgNTMsIAorICAgIDEyLCAxMywgMjQ5LCA1MiwgMTIsIDEzLCAyNDksIDUxLCAxMiwgMTMsIDI0OSwgNTAsIDEyLCAxMywgMjQ5LCA0OSwgMTIsIAorICAgIDEzLCAyNDksIDQ4LCAxMiwgMTMsIDI0OSwgNDcsIDEyLCAxMywgMjQ5LCA0NiwgMTIsIDEzLCAyNDksIDQ1LCAxMiwgMTMsIAorICAgIDI0OSwgNDQsIDEyLCAxMywgMjQ5LCA0MywgMTIsIDEzLCAyNDksIDQyLCAxMiwgMTMsIDI0OSwgNDEsIDEyLCAxMywgMjQ5LCAKKyAgICA0MCwgMTIsIDEzLCAyNDksIDM5LCAxMiwgMTMsIDI0OSwgMzgsIDEyLCAxMywgMjQ5LCAzNywgMTIsIDEzLCAyNDksIDM2LCAKKyAgICAxMiwgMTMsIDI0OSwgMzUsIDEyLCAxMywgMjQ5LCAzNCwgMTIsIDEzLCAyNDksIDMzLCAxMiwgMTMsIDI0OSwgMzIsIDEyLCAKKyAgICAxMywgMjQ5LCAzMSwgMTIsIDEzLCAyNDksIDMwLCAxMiwgMTMsIDI0OSwgMjksIDEyLCAxMywgMjQ5LCAyOCwgMTIsIDEzLCAKKyAgICAyNDksIDI3LCAxMiwgMTMsIDI0OSwgMjYsIDEyLCAxMywgMjQ5LCAyNSwgMTIsIDEzLCAyNDksIDI0LCAxMiwgMTMsIDI0OSwgCisgICAgMjMsIDEyLCAxMywgMjQ5LCAyMiwgMTIsIDEzLCAyNDksIDIxLCAxMiwgMTMsIDI0OSwgMjAsIDEyLCAxMywgMjQ5LCAxOSwgCisgICAgMTIsIDEzLCAyNDksIDE4LCAxMiwgMTMsIDI0OSwgMTcsIDEyLCAxMywgMjQ5LCAxNiwgMTIsIDEzLCAyNDksIDE1LCAxMiwgCisgICAgMTMsIDI0OSwgMTQsIDEyLCAxMywgMjQ5LCAxMywgMTIsIDEzLCAyNDksIDEyLCAxMiwgMTMsIDI0OSwgMTEsIDEyLCAxMywgCisgICAgMjQ5LCAxMCwgMTIsIDEzLCAyNDksIDksIDEyLCAxMywgMjQ5LCA4LCAxMiwgMTMsIDI0OSwgNywgMTIsIDEzLCAyNDksIDYsIAorICAgIDEyLCAxMywgMjQ5LCA1LCAxMiwgMTMsIDI0OSwgNCwgMTIsIDEzLCAyNDksIDMsIDEyLCAxMywgMjQ5LCAyLCAxMiwgMTMsIAorICAgIDI0OSwgMSwgMTIsIDEzLCAyNDksIDAsIDEyLCAxMywgMjQ4LCAyNTUsIDEyLCAxMywgMjQ4LCAyNTQsIDEyLCAxMywgMjQ4LCAKKyAgICAyNTMsIDEyLCAxMywgMjQ4LCAyNTIsIDEyLCAxMywgMjQ4LCAyNTEsIDEyLCAxMywgMjQ4LCAyNTAsIDEyLCAxMywgMjQ4LCAKKyAgICAyNDksIDEyLCAxMywgMjQ4LCAyNDgsIDEyLCAxMywgMjQ4LCAyNDcsIDEyLCAxMywgMjQ4LCAyNDYsIDEyLCAxMywgMjQ4LCAKKyAgICAyNDUsIDEyLCAxMywgMjQ4LCAyNDQsIDEyLCAxMywgMjQ4LCAyNDMsIDEyLCAxMywgMjQ4LCAyNDIsIDEyLCAxMywgMjQ4LCAKKyAgICAyNDEsIDEyLCAxMywgMjQ4LCAyNDAsIDEyLCAxMywgMjQ4LCAyMzksIDEyLCAxMywgMjQ4LCAyMzgsIDEyLCAxMywgMjQ4LCAKKyAgICAyMzcsIDEyLCAxMywgMjQ4LCAyMzYsIDEyLCAxMywgMjQ4LCAyMzUsIDEyLCAxMywgMjQ4LCAyMzQsIDEyLCAxMywgMjQ4LCAKKyAgICAyMzMsIDEyLCAxMywgMjQ4LCAyMzIsIDEyLCAxMywgMjQ4LCAyMzEsIDEyLCAxMywgMjQ4LCAyMzAsIDEyLCAxMywgMjQ4LCAKKyAgICAyMjksIDEyLCAxMywgMjQ4LCAyMjgsIDEyLCAxMywgMjQ4LCAyMjcsIDEyLCAxMywgMjQ4LCAyMjYsIDEyLCAxMywgMjQ4LCAKKyAgICAyMjUsIDEyLCAxMywgMjQ4LCAyMjQsIDEyLCAxMywgMjQ2LCAyMywgMTIsIDEzLCAyNDYsIDIyLCAxMiwgMTMsIDI0NiwgMjEsIAorICAgIDEyLCAxMywgMjQ2LCAyMCwgMTIsIDEzLCAyNDYsIDE5LCAxMiwgMTMsIDI0NiwgMTgsIDEyLCAxMywgMjQ2LCAxNywgMTIsIAorICAgIDEzLCAyNDYsIDE2LCAxMiwgMTMsIDI0NiwgMTUsIDEyLCAxMywgMjQ2LCAxNCwgMTIsIDEzLCAyNDYsIDEzLCAxMiwgMTMsIAorICAgIDI0NiwgMTIsIDEyLCAxMywgMjQ2LCAxMSwgMTIsIDEzLCAyNDYsIDEwLCAxMiwgMTMsIDI0NiwgOSwgMTIsIDEzLCAyNDYsIAorICAgIDgsIDEyLCAxMywgMjQ2LCA3LCAxMiwgMTMsIDI0NiwgNiwgMTIsIDEzLCAyNDYsIDUsIDEyLCAxMywgMjQ2LCA0LCAxMiwgCisgICAgMTMsIDI0NiwgMywgMTIsIDEzLCAyNDYsIDIsIDEyLCAxMywgMjQ2LCAxLCAxMiwgMTMsIDI0NiwgMCwgMTIsIDEzLCAyNDUsIAorICAgIDI1NSwgMTIsIDEzLCAyNDUsIDI1NCwgMTIsIDEzLCAyNDUsIDI1MywgMTIsIDEzLCAyNDUsIDI1MiwgMTIsIDEzLCAyNDUsIAorICAgIDI1MSwgMTIsIDEzLCAyNDUsIDI1MCwgMTIsIDEzLCAyNDUsIDI0OSwgMTIsIDEzLCAyNDUsIDI0OCwgMTIsIDEzLCAyNDUsIAorICAgIDI0NywgMTIsIDEzLCAyNDUsIDI0NiwgMTIsIDEzLCAyNDUsIDI0NSwgMTIsIDEzLCAyNDUsIDI0NCwgMTIsIDEzLCAyNDUsIAorICAgIDI0MywgMTIsIDEzLCAyNDUsIDI0MiwgMTIsIDEzLCAyNDUsIDI0MSwgMTIsIDEzLCAyNDUsIDI0MCwgMTIsIDEzLCAyNDUsIAorICAgIDIzOSwgMTIsIDEzLCAyNDUsIDIzOCwgMTIsIDEzLCAyNDUsIDIzNywgMTIsIDEzLCAyNDUsIDIzNiwgMTIsIDEzLCAyNDUsIAorICAgIDUsIDEyLCAxMywgMjQ1LCA0LCAxMiwgMTMsIDI0NSwgMywgMTIsIDEzLCAyNDUsIDIsIDEyLCAxMywgMjQ1LCAxLCAxMiwgCisgICAgMTMsIDI0NSwgMCwgMTIsIDEzLCAyNDQsIDI1NSwgMTIsIDEzLCAyNDQsIDI1NCwgMTIsIDEzLCAyNDQsIDI1MywgMTIsIDEzLCAKKyAgICAyNDQsIDI1MiwgMTIsIDEzLCAyNDQsIDI1MSwgMTIsIDEzLCAyNDQsIDI1MCwgMTIsIDEzLCAyNDQsIDI0OSwgMTIsIDEzLCAKKyAgICAyNDQsIDI0OCwgMTIsIDEzLCAyNDQsIDI0NywgMTIsIDEzLCAyNDQsIDI0NiwgMTIsIDEzLCAyNDQsIDI0NSwgMTIsIDEzLCAKKyAgICAyNDQsIDI0NCwgMTIsIDEzLCAyNDQsIDI0MywgMTIsIDEzLCAyNDQsIDI0MiwgMTIsIDEzLCAyNDQsIDI0MSwgMTIsIDEzLCAKKyAgICAyNDQsIDI0MCwgMTIsIDEzLCAyNDQsIDIzOSwgMTIsIDEzLCAyNDQsIDIzOCwgMTIsIDEzLCAyNDQsIDIzNywgMTIsIDEzLCAKKyAgICAyNDQsIDIzNiwgMTIsIDEzLCAyNDQsIDIzNSwgMTIsIDEzLCAyNDQsIDIzNCwgMTIsIDEzLCAyNDQsIDIzMywgMTIsIDEzLCAKKyAgICAyNDQsIDIzMiwgMTIsIDEzLCAyNDQsIDIzMSwgMTIsIDEzLCAyNDQsIDIzMCwgMTIsIDEzLCAyNDQsIDIyOSwgMTIsIDEzLCAKKyAgICAyNDQsIDIyOCwgMTIsIDEzLCAyNDQsIDIyNywgMTIsIDEzLCAyNDQsIDIyNiwgMTIsIDEzLCAyNDQsIDIyNSwgMTIsIDEzLCAKKyAgICAyNDQsIDIyNCwgMTIsIDEzLCAyNDQsIDIyMywgMTIsIDEzLCAyNDQsIDIyMiwgMTIsIDEzLCAyNDQsIDIyMSwgMTIsIDEzLCAKKyAgICAyNDQsIDIyMCwgMTIsIDEzLCAyNDQsIDIxOSwgMTIsIDEzLCAyNDQsIDIxOCwgMTIsIDEzLCAyNDQsIDIxNywgMTIsIDEzLCAKKyAgICAyNDQsIDIxNiwgMTIsIDEzLCAyNDQsIDIxNSwgMTIsIDEzLCAyNDQsIDIxNCwgMTIsIDEzLCAyNDQsIDIxMywgMTIsIDEzLCAKKyAgICAyNDQsIDIxMiwgMTIsIDEzLCAyNDQsIDIxMSwgMTIsIDEzLCAyNDQsIDIxMCwgMTIsIDEzLCAyNDQsIDIwOSwgMTIsIDEzLCAKKyAgICAyNDQsIDIwOCwgMTIsIDEzLCAyNDQsIDIwNywgMTIsIDEzLCAyNDQsIDIwNiwgMTIsIDEzLCAyNDQsIDIwNSwgMTIsIDEzLCAKKyAgICAyNDQsIDIwNCwgMTIsIDEzLCAyNDQsIDIwMywgMTIsIDEzLCAyNDQsIDIwMiwgMTIsIDEzLCAyNDQsIDIwMSwgMTIsIDEzLCAKKyAgICAyNDQsIDIwMCwgMTIsIDEzLCAyNDQsIDE5OSwgMTIsIDEzLCAyNDQsIDE5OCwgMTIsIDEzLCAyNDQsIDE5NywgMTIsIDEzLCAKKyAgICAyNDMsIDIwMSwgMTIsIDEzLCAyNDMsIDIwMCwgMTIsIDEzLCAyNDMsIDE5OSwgMTIsIDEzLCAyNDMsIDE5OCwgMTIsIDEzLCAKKyAgICAyNDMsIDE5NywgMTIsIDEzLCAyNDMsIDE5NiwgMTIsIDEzLCAyNDMsIDE5NSwgMTIsIDEzLCAyNDMsIDE5NCwgMTIsIDEzLCAKKyAgICAyNDMsIDE5MywgMTIsIDEzLCAyNDMsIDE5MiwgMTIsIDEzLCAyNDMsIDE5MSwgMTIsIDEzLCAyNDMsIDE5MCwgMTIsIDEzLCAKKyAgICAyNDMsIDE4OSwgMTIsIDEzLCAyNDMsIDE4OCwgMTIsIDEzLCAyNDMsIDE4NywgMTIsIDEzLCAyNDMsIDE4NiwgMTIsIDEzLCAKKyAgICAyNDMsIDE4NSwgMTIsIDEzLCAyNDMsIDE4NCwgMTIsIDEzLCAyNDMsIDE4MywgMTIsIDEzLCAyNDMsIDE4MiwgMTIsIDEzLCAKKyAgICAyNDMsIDE4MSwgMTIsIDEzLCAyNDMsIDE4MCwgMTIsIDEzLCAyNDMsIDE3OSwgMTIsIDEzLCAyNDMsIDE3OCwgMTIsIDEzLCAKKyAgICAyNDMsIDE3NywgMTIsIDEzLCAyNDMsIDE3NiwgMTIsIDEzLCAyNDMsIDE3NSwgMTIsIDEzLCAyNDMsIDE3NCwgMTIsIDEzLCAKKyAgICAyNDMsIDE3MywgMTIsIDEzLCAyNDMsIDE3MiwgMTIsIDEzLCAyNDMsIDE3MSwgMTIsIDEzLCAyNDMsIDE3MCwgMTIsIDEzLCAKKyAgICAyNDMsIDE2OSwgMTIsIDEzLCAyNDMsIDE2OCwgMTIsIDEzLCAyNDMsIDE2NywgMTIsIDEzLCAyNDMsIDE2NiwgMTIsIDEzLCAKKyAgICAyNDMsIDE2NSwgMTIsIDEzLCAyNDMsIDE2NCwgMTIsIDEzLCAyNDMsIDE2MywgMTIsIDEzLCAyNDMsIDE2MiwgMTIsIDEzLCAKKyAgICAyNDMsIDE2MSwgMTIsIDEzLCAyNDMsIDE2MCwgMTIsIDEzLCAyNDMsIDE1OSwgMTIsIDEzLCAyNDMsIDE1OCwgMTIsIDEzLCAKKyAgICAyNDMsIDE1NywgMTIsIDEzLCAyNDMsIDE1NiwgMTIsIDEzLCAyNDMsIDE1NSwgMTIsIDEzLCAyNDMsIDE1NCwgMTIsIDEzLCAKKyAgICAyNDMsIDE1MywgMTIsIDEzLCAyNDMsIDE1MiwgMTIsIDEzLCAyNDMsIDE1MSwgMTIsIDEzLCAyNDMsIDE1MCwgMTIsIDEzLCAKKyAgICAyNDMsIDE0OSwgMTIsIDEzLCAyNDMsIDE0OCwgMTIsIDEzLCAyNDMsIDE0NywgMTIsIDEzLCAyNDMsIDE0NiwgMTIsIDEzLCAKKyAgICAyNDMsIDE0NSwgMTIsIDEzLCAyNDMsIDE0NCwgMTIsIDEzLCAyNDMsIDE0MywgMTIsIDEzLCAyNDMsIDE0MiwgMTIsIDEzLCAKKyAgICAyNDMsIDE0MSwgMTIsIDEzLCAyNDMsIDE0MCwgMTIsIDEzLCAyNDMsIDEzOSwgMTIsIDEzLCAyNDMsIDEzOCwgMTIsIDEzLCAKKyAgICAyNDIsIDU4LCAxMiwgMTMsIDI0MiwgNTcsIDEyLCAxMywgMjQyLCA1NiwgMTIsIDEzLCAyNDIsIDU1LCAxMiwgMTMsIDI0MiwgCisgICAgNTQsIDEyLCAxMywgMjQyLCA1MywgMTIsIDEzLCAyNDIsIDUyLCAxMiwgMTMsIDI0MiwgNTEsIDEyLCAxMywgMjQyLCA1MCwgCisgICAgMTIsIDEzLCAyNDAsIDEzOCwgMTIsIDEzLCAyNDAsIDEzNywgMTIsIDEzLCAyNDAsIDEzNiwgMTIsIDEzLCAyNDAsIDEzNSwgCisgICAgMTIsIDEzLCAyNDAsIDEzNCwgMTIsIDEzLCAyNDAsIDEzMywgMTIsIDEzLCAyNDAsIDEzMiwgMTIsIDEzLCAyNDAsIDEzMSwgCisgICAgMTIsIDEzLCAyNDAsIDEzMCwgMTIsIDEzLCAyNDAsIDEyOSwgMTIsIDEzLCAyNDAsIDEyOCwgMTIsIDEzLCAyNDAsIDEyNywgCisgICAgMTIsIDEzLCAyNDAsIDEyNiwgMTIsIDEzLCAyNDAsIDEyNSwgMTIsIDEzLCAyNDAsIDEyNCwgMTIsIDEzLCAyNDAsIDEyMywgCisgICAgMTIsIDEzLCAyNDAsIDEyMiwgMTIsIDEzLCAyNDAsIDEyMSwgMTIsIDEzLCAyNDAsIDEyMCwgMTIsIDEzLCAyMzUsIDIyLCAKKyAgICAxMiwgMTMsIDIzNSwgMjEsIDEyLCAxMywgMjM1LCAyMCwgMTIsIDEzLCAyMzUsIDE5LCAxMiwgMTMsIDIzNSwgMTgsIDEyLCAKKyAgICAxMywgMjM1LCAxNywgMTIsIDEzLCAyMzUsIDE2LCAxMiwgMTMsIDIzNSwgMTUsIDEyLCAxMywgMjMzLCAxNDYsIDEyLCAxMywgCisgICAgMjMzLCAxNDUsIDEyLCAxMywgMjMzLCAxNDQsIDEyLCAxMywgMjMzLCAxNDMsIDEyLCAxMywgMjMzLCAxNDIsIDEyLCAxMywgCisgICAgMjMzLCAxNDEsIDEyLCAxMywgMjMzLCAxNDAsIDEyLCAxMywgMjMzLCAxMzksIDEyLCAxMywgMjMzLCAxMzgsIDEyLCAxMywgCisgICAgMjMzLCAxMzcsIDEyLCAxMywgMjMyLCA0OSwgMTIsIDEzLCAyMzIsIDQ4LCAxMiwgMTMsIDIzMiwgNDcsIDEyLCAxMywgMjMyLCAKKyAgICA0NiwgMTIsIDEzLCAyMzIsIDQ1LCAxMiwgMTMsIDIzMiwgNDQsIDEyLCAxMywgMjMyLCA0MywgMTIsIDEzLCAyMzIsIDQyLCAKKyAgICAxMiwgMTMsIDIzMiwgNDEsIDEyLCAxMywgMjMyLCA0MCwgMTIsIDEzLCAyMzIsIDM5LCAxMiwgMTMsIDIzMiwgMzgsIDEyLCAKKyAgICAxMywgMjMyLCAzNywgMTIsIDEzLCAyMzIsIDM2LCAxMiwgMTMsIDIzMiwgMzUsIDEyLCAxMywgMjMyLCAzNCwgMTIsIDEzLCAKKyAgICAyMzIsIDMzLCAxMiwgMTMsIDIzMiwgMzIsIDEyLCAxMywgMjMyLCAzMSwgMTIsIDEzLCAyMzIsIDMwLCAxMiwgMTMsIDIzMiwgCisgICAgMjksIDEyLCAxMywgMjMyLCAyOCwgMTIsIDEzLCAyMzIsIDI3LCAxMiwgMTMsIDIzMiwgMjYsIDEyLCAxMywgMjMyLCAyNSwgCisgICAgMTIsIDEzLCAyMzIsIDI0LCAxMiwgMTMsIDIzMiwgMjMsIDEyLCAxMywgMjMyLCAyMiwgMTIsIDEzLCAyMzIsIDIxLCAxMiwgCisgICAgMTMsIDIzMiwgMjAsIDEyLCAxMywgMjMyLCAxOSwgMTIsIDEzLCAyMzIsIDE4LCAxMiwgMTMsIDIzMiwgMTcsIDEyLCAxMywgCisgICAgMjMyLCAxNiwgMTIsIDEzLCAyMzIsIDE1LCAxMiwgMTMsIDIzMiwgMTQsIDEyLCAxMywgMjMyLCAxMywgMTIsIDEzLCAyMzIsIAorICAgIDEyLCAxMiwgMTMsIDIzMiwgMTEsIDEyLCAxMywgMjMyLCAxMCwgMTIsIDEzLCAyMzIsIDksIDEyLCAxMywgMjMyLCA4LCAxMiwgCisgICAgMTMsIDIzMiwgNywgMTIsIDEzLCAyMzIsIDYsIDEyLCAxMywgMjMyLCA1LCAxMiwgMTMsIDIzMiwgNCwgMTIsIDEzLCAyMzIsIAorICAgIDMsIDEyLCAxMywgMjMyLCAyLCAxMiwgMTMsIDIzMiwgMSwgMTIsIDEzLCAyMzIsIDAsIDEyLCAxMywgMjMxLCAyNTUsIDEyLCAKKyAgICAxMywgMjMxLCAyNTQsIDEyLCAxMywgMjMxLCAyNTMsIDEyLCAxMywgMjMxLCAyNTIsIDEyLCAxMywgMjMxLCAyNTEsIDEyLCAKKyAgICAxMywgMjMxLCAyNTAsIDEyLCAxMywgMjMxLCAyNDksIDEyLCAxMywgMjMxLCAyNDgsIDEyLCAxMywgMjMxLCAyNDcsIDEyLCAKKyAgICAxMywgMjMxLCAyNDYsIDEyLCAxMywgMjMxLCAyNDUsIDEyLCAxMywgMjMxLCAyNDQsIDEyLCAxMywgMjMxLCAyNDMsIDEyLCAKKyAgICAxMywgMjMxLCAyNDIsIDEyLCAxMywgMjMxLCAyNDEsIDEyLCAxMywgMjMxLCAyNDAsIDEyLCAxMywgMjMwLCAyMiwgMTIsIAorICAgIDEzLCAyMzAsIDIxLCAxMiwgMTMsIDIzMCwgMjAsIDEyLCAxMywgMjMwLCAxOSwgMTIsIDEzLCAyMzAsIDE4LCAxMiwgMTMsIAorICAgIDIzMCwgMTcsIDEyLCAxMywgMjMwLCAxNiwgMTIsIDEzLCAyMzAsIDE1LCAxMiwgMTMsIDIzMCwgMTQsIDEyLCAxMywgMjMwLCAKKyAgICAxMywgMTIsIDEzLCAyMzAsIDEyLCAxMiwgMTMsIDIzMCwgMTEsIDEyLCAxMywgMjMwLCAxMCwgMTIsIDEzLCAyMzAsIDksIAorICAgIDEyLCAxMywgMjMwLCA4LCAxMiwgMTMsIDIzMCwgNywgMTIsIDEzLCAyMzAsIDYsIDEyLCAxMywgMjMwLCA1LCAxMiwgMTMsIAorICAgIDIzMCwgNCwgMTIsIDEzLCAyMzAsIDMsIDEyLCAxMywgMjMwLCAyLCAxMiwgMTMsIDIzMCwgMSwgMTIsIDEzLCAyMzAsIDAsIAorICAgIDEyLCAxMywgMjI5LCAyNTUsIDEyLCAxMywgMjI5LCAyNTQsIDEyLCAxMywgMjI5LCAyNTMsIDEyLCAxMywgMjI5LCAyNTIsIAorICAgIDEyLCAxMywgMjI5LCAyNTEsIDEyLCAxMywgMjI5LCAyNTAsIDEyLCAxMywgMjI5LCAyNDksIDEyLCAxMywgMjI5LCAyNDgsIAorICAgIDEyLCAxMywgMjI5LCAyNDcsIDEyLCAxMywgMjI5LCAyNDYsIDEyLCAxMywgMjI5LCAyNDUsIDEyLCAxMywgMjI5LCAyNDQsIAorICAgIDEyLCAxMywgMjI5LCAyNDMsIDEyLCAxMywgMjI5LCAyNDIsIDEyLCAxMywgMjI5LCAyNDEsIDEyLCAxMywgMjI5LCAyNDAsIAorICAgIDEyLCAxMywgMjI5LCAyMzksIDEyLCAxMywgMjI5LCAyMzgsIDEyLCAxMywgMjI5LCAyMzcsIDEyLCAxMywgMjI5LCAyMzYsIAorICAgIDEyLCAxMywgMjI5LCAyMzUsIDEyLCAxMywgMjI5LCAyMzQsIDEyLCAxMywgMjI5LCAyMzMsIDEyLCAxMywgMjI5LCAyMzIsIAorICAgIDEyLCAxMywgMjI5LCAyMzEsIDEyLCAxMywgMjI5LCAyMzAsIDEyLCAxMywgMjI4LCAxMzQsIDEyLCAxMywgMjI4LCAxMzMsIAorICAgIDEyLCAxMywgMjI4LCAxMzIsIDEyLCAxMywgMjI4LCAxMzEsIDEyLCAxMywgMjI4LCAxMzAsIDEyLCAxMywgMjI4LCAxMjksIAorICAgIDEyLCAxMywgMjI4LCAxMjgsIDEyLCAxMywgMjI4LCAxMjcsIDEyLCAxMywgMjI4LCAxMjYsIDEyLCAxMywgMjI4LCAxMjUsIAorICAgIDEyLCAxMywgMjI4LCAxMjQsIDEyLCAxMywgMjI4LCAxMjMsIDEyLCAxMywgMjI4LCAxMjIsIDEyLCAxMywgMjI4LCAxMjEsIAorICAgIDEyLCAxMywgMjI4LCAxMjAsIDEyLCAxMywgMjI4LCAxMTksIDEyLCAxMywgMjI4LCAxMTgsIDEyLCAxMywgMjI4LCAxMTcsIAorICAgIDEyLCAxMywgMjI4LCAxMTYsIDEyLCAxMywgMjI4LCAxMTUsIDEyLCAxMywgMjI4LCAxMTQsIDEyLCAxMywgMjI4LCAxMTMsIAorICAgIDEyLCAxMywgMjI3LCAyMzYsIDEyLCAxMywgMjI3LCAyMzUsIDEyLCAxMywgMjI3LCAyMzQsIDEyLCAxMywgMjI3LCAyMzMsIAorICAgIDEyLCAxMywgMjI3LCAyMzIsIDEyLCAxMywgMjI3LCAyMzEsIDEyLCAxMywgMjI3LCAyMzAsIDEyLCAxMywgMjI3LCAyMjksIAorICAgIDEyLCAxMywgMjI3LCAyMjgsIDEyLCAxMywgMjI3LCAyMjcsIDEyLCAxMywgMjI3LCAyMjYsIDEyLCAxMywgMjI3LCAyMjUsIAorICAgIDEyLCAxMywgMjI3LCAyMjQsIDEyLCAxMywgMjI3LCAyMjMsIDEyLCAxMywgMjI3LCAyMjIsIDEyLCAxMywgMjI3LCAyMjEsIAorICAgIDEyLCAxMywgMjI3LCAyMjAsIDEyLCAxMywgMjI3LCAyMTksIDEyLCAxMywgMjI3LCAyMTgsIDEyLCAxMywgMjI3LCAyMTcsIAorICAgIDEyLCAxMywgMjI3LCAyMTYsIDEyLCAxMywgMjI3LCAyMTUsIDEyLCAxMywgMjI3LCAyMTQsIDEyLCAxMywgMjI3LCAyMTMsIAorICAgIDEyLCAxMywgMjI3LCAyMTIsIDEyLCAxMywgMjI3LCAyMTEsIDEyLCAxMywgMjI3LCA3NiwgMTIsIDEzLCAyMjcsIDc1LCAxMiwgCisgICAgMTMsIDIyNywgNzQsIDEyLCAxMywgMjI3LCA3MywgMTIsIDEzLCAyMjcsIDcyLCAxMiwgMTMsIDIyNywgNzEsIDEyLCAxMywgCisgICAgMjI3LCA3MCwgMTIsIDEzLCAyMjcsIDY5LCAxMiwgMTMsIDIyNywgNjgsIDEyLCAxMywgMjI3LCA2NywgMTIsIDEzLCAyMjcsIAorICAgIDY2LCAxMiwgMTMsIDIyNywgNjUsIDEyLCAxMywgMjI3LCA2NCwgMTIsIDEzLCAyMjcsIDYzLCAxMiwgMTMsIDIyNywgNjIsIAorICAgIDEyLCAxMywgMjI3LCA2MSwgMTIsIDEzLCAyMjcsIDYwLCAxMiwgMTMsIDIyNywgNTksIDEyLCAxMywgMjI3LCA1OCwgMTIsIAorICAgIDEzLCAyMjcsIDU3LCAxMiwgMTMsIDIyNywgNTYsIDEyLCAxMywgMjI3LCA1NSwgMTIsIDEzLCAyMjcsIDU0LCAxMiwgMTMsIAorICAgIDIyNywgNTMsIDEyLCAxMywgMjI3LCA1MiwgMTIsIDEzLCAyMjcsIDUxLCAxMiwgMTMsIDIyNywgNTAsIDEyLCAxMywgMjI3LCAKKyAgICA0OSwgMTIsIDEzLCAyMjcsIDQ4LCAxMiwgMTMsIDIyNywgNDcsIDEyLCAxMywgMjI3LCA0NiwgMTIsIDEzLCAyMjcsIDQ1LCAKKyAgICAxMiwgMTMsIDIyNywgNDQsIDEyLCAxMywgMjI3LCA0MywgMTIsIDEzLCAyMjcsIDQyLCAxMiwgMTMsIDIyNywgNDEsIDEyLCAKKyAgICAxMywgMjI3LCA0MCwgMTIsIDEzLCAyMjcsIDM5LCAxMiwgMTMsIDIyNywgMzgsIDEyLCAxMywgMjI3LCAzNywgMTIsIDEzLCAKKyAgICAyMjcsIDM2LCAxMiwgMTMsIDIyNywgMzUsIDEyLCAxMywgMjI3LCAzNCwgMTIsIDEzLCAyMjcsIDMzLCAxMiwgMTMsIDIyNywgCisgICAgMzIsIDEyLCAxMywgMjI3LCAzMSwgMTIsIDEzLCAyMjcsIDMwLCAxMiwgMTMsIDIyNywgMjksIDEyLCAxMywgMjI3LCAyOCwgCisgICAgMTIsIDEzLCAyMjcsIDI3LCAxMiwgMTMsIDIyNywgMjYsIDEyLCAxMywgMjI3LCAyNSwgMTIsIDEzLCAyMjcsIDI0LCAxMiwgCisgICAgMTMsIDIyNywgMjMsIDEyLCAxMywgMjI3LCAyMiwgMTIsIDEzLCAyMjcsIDIxLCAxMiwgMTMsIDIyNywgMjAsIDEyLCAxMywgCisgICAgMjI3LCAxOSwgMTIsIDEzLCAyMjcsIDE4LCAxMiwgMTMsIDIyNywgMTcsIDEyLCAxMywgMjI3LCAxNiwgMTIsIDEzLCAyMjcsIAorICAgIDE1LCAxMiwgMTMsIDIyNywgMTQsIDEyLCAxMywgMjI3LCAxMywgMTIsIDEzLCAyMjcsIDEyLCAxMiwgMTMsIDIyNywgMTEsIAorICAgIDEyLCAxMywgMjI3LCAxMCwgMTIsIDEzLCAyMjcsIDksIDEyLCAxMywgMjI3LCA4LCAxMiwgMTMsIDIyNywgNywgMTIsIDEzLCAKKyAgICAyMjcsIDYsIDEyLCAxMywgMjI3LCA1LCAxMiwgMTMsIDIyNywgNCwgMTIsIDEzLCAyMjcsIDMsIDEyLCAxMywgMjI3LCAyLCAKKyAgICAxMiwgMTMsIDIyNiwgMTA0LCAxMiwgMTMsIDIyNiwgMTAzLCAxMiwgMTMsIDIyNiwgMTAyLCAxMiwgMTMsIDIyNiwgMTAxLCAKKyAgICAxMiwgMTMsIDIyNiwgMTAwLCAxMiwgMTMsIDIyNiwgOTksIDEyLCAxMywgMjI2LCA5OCwgMTIsIDEzLCAyMjYsIDk3LCAxMiwgCisgICAgMTMsIDIyNiwgOTYsIDEyLCAxMywgMjI2LCA5NSwgMTIsIDEzLCAyMjYsIDk0LCAxMiwgMTMsIDIyNiwgOTMsIDEyLCAxMywgCisgICAgMjI2LCA5MiwgMTIsIDEzLCAyMjQsIDk1LCAxMiwgMTMsIDIyNCwgOTQsIDEyLCAxMywgMjI0LCA5MywgMTIsIDEzLCAyMjQsIAorICAgIDkyLCAxMiwgMTMsIDIyNCwgOTEsIDEyLCAxMywgMjI0LCA5MCwgMTIsIDEzLCAyMjQsIDg5LCAxMiwgMTMsIDIyMywgMjIyLCAKKyAgICAxMiwgMTMsIDIyMywgMjIxLCAxMiwgMTMsIDIyMywgMjIwLCAxMiwgMTMsIDIyMywgMjE5LCAxMiwgMTMsIDIyMywgMjE4LCAKKyAgICAxMiwgMTMsIDIyMywgMjE3LCAxMiwgMTMsIDIyMywgMjE2LCAxMiwgMTMsIDIyMywgMjE1LCAxMiwgMTMsIDIyMywgMjE0LCAKKyAgICAxMiwgMTMsIDIyMywgMjEzLCAxMiwgMTMsIDIyMywgMjEyLCAxMiwgMTMsIDIyMywgMjExLCAxMiwgMTMsIDIyMywgMjEwLCAKKyAgICAxMiwgMTMsIDIyMywgMjA5LCAxMiwgMTMsIDIyMywgMjA4LCAxMiwgMTMsIDIyMywgMjA3LCAxMiwgMTMsIDIyMywgMjA2LCAKKyAgICAxMiwgMTMsIDIyMywgMjA1LCAxMiwgMTMsIDIyMywgMjA0LCAxMiwgMTMsIDIyMywgMjAzLCAxMiwgMTMsIDIyMywgMjAyLCAKKyAgICAxMiwgMTMsIDIyMywgMjAxLCAxMiwgMTMsIDIyMywgMjAwLCAxMiwgMTMsIDIyMywgMTk5LCAxMiwgMTMsIDIyMywgMTk4LCAKKyAgICAxMiwgMTMsIDIyMywgMTk3LCAxMiwgMTMsIDIyMywgMTk2LCAxMiwgMTMsIDIyMywgMTk1LCAxMiwgMTMsIDIyMywgMTk0LCAKKyAgICAxMiwgMTMsIDIyMywgMTkzLCAxMiwgMTMsIDIyMywgMTkyLCAxMiwgMTMsIDIyMywgMTkxLCAxMiwgMTMsIDIyMywgMTkwLCAKKyAgICAxMiwgMTMsIDIyMywgMTg5LCAxMiwgMTMsIDIyMiwgODgsIDEyLCAxMywgMjIyLCA4NywgMTIsIDEzLCAyMjIsIDg2LCAxMiwgCisgICAgMTMsIDIyMiwgODUsIDEyLCAxMywgMjIyLCA4NCwgMTIsIDEzLCAyMjIsIDgzLCAxMiwgMTMsIDIyMiwgODIsIDEyLCAxMywgCisgICAgMjIyLCA4MSwgMTIsIDEzLCAyMjIsIDgwLCAxMiwgMTMsIDIyMiwgNzksIDEyLCAxMywgMjIyLCA3OCwgMTIsIDEzLCAyMjIsIAorICAgIDc3LCAxMiwgMTMsIDIyMiwgNzYsIDEyLCAxMywgMjIyLCA3NSwgMTIsIDEzLCAyMjIsIDc0LCAxMiwgMTMsIDIyMiwgNzMsIAorICAgIDEyLCAxMywgMjIyLCA3MiwgMTIsIDEzLCAyMjIsIDcxLCAxMiwgMTMsIDIyMiwgNzAsIDEyLCAxMywgMjIyLCA2OSwgMTIsIAorICAgIDEzLCAyMjIsIDY4LCAxMiwgMTMsIDIyMiwgNjcsIDEyLCAxMywgMjIyLCA2NiwgMTIsIDEzLCAyMjIsIDY1LCAxMiwgMTMsIAorICAgIDIyMiwgNjQsIDEyLCAxMywgMjIyLCA2MywgMTIsIDEzLCAyMjIsIDYyLCAxMiwgMTMsIDIyMiwgNjEsIDEyLCAxMywgMjIyLCAKKyAgICA2MCwgMTIsIDEzLCAyMjIsIDU5LCAxMiwgMTMsIDIyMiwgNTgsIDEyLCAxMywgMjIyLCA1NywgMTIsIDEzLCAyMjIsIDU2LCAKKyAgICAxMiwgMTMsIDIyMiwgNTUsIDEyLCAxMywgMjIyLCA1NCwgMTIsIDEzLCAyMjIsIDUzLCAxMiwgMTMsIDIyMiwgNTIsIDEyLCAKKyAgICAxMywgMjIyLCA1MSwgMTIsIDEzLCAyMjIsIDUwLCAxMiwgMTMsIDIyMiwgNDksIDEyLCAxMywgMjIyLCA0OCwgMTIsIDEzLCAKKyAgICAyMjIsIDQ3LCAxMiwgMTMsIDIyMiwgNDYsIDEyLCAxMywgMjIyLCA0NSwgMTIsIDEzLCAyMjIsIDQ0LCAxMiwgMTMsIDIyMiwgCisgICAgNDMsIDEyLCAxMywgMjIyLCA0MiwgMTIsIDEzLCAyMjIsIDQxLCAxMiwgMTMsIDIyMiwgNDAsIDEyLCAxMywgMjIyLCAzOSwgCisgICAgMTIsIDEzLCAyMjIsIDM4LCAxMiwgMTMsIDIyMiwgMzcsIDEyLCAxMywgMjIyLCAzNiwgMTIsIDEzLCAyMjIsIDM1LCAxMiwgCisgICAgMTMsIDIxNywgMTUwLCAxMiwgMTMsIDIxNywgMTQ5LCAxMiwgMTMsIDIxNywgMTQ4LCAxMiwgMTMsIDIxNywgMTQ3LCAxMiwgCisgICAgMTMsIDIxNywgMTQ2LCAxMiwgMTMsIDIxNywgMTQ1LCAxMiwgMTMsIDIxNywgMTQ0LCAxMiwgMTMsIDIxNywgMTQzLCAxMiwgCisgICAgMTMsIDIxNywgMTQyLCAxMiwgMTMsIDIxNywgMTQxLCAxMiwgMTMsIDIxNywgMTQwLCAxMiwgMTMsIDIxNywgMTM5LCAxMiwgCisgICAgMTMsIDIxNywgMTM4LCAxMiwgMTMsIDIxNywgMTM3LCAxMiwgMTMsIDIxNywgMTM2LCAxMiwgMTMsIDIxNywgMTM1LCAxMiwgCisgICAgMTMsIDIxNywgMTM0LCAxMiwgMTMsIDIxNywgMTMzLCAxMiwgMTMsIDIxNywgMTMyLCAxMiwgMTMsIDIxNywgMTMxLCAxMiwgCisgICAgMTMsIDIxNywgMTMwLCAxMiwgMTMsIDIxNywgMTI5LCAxMiwgMTMsIDIxNywgMTI4LCAxMiwgMTMsIDIxNywgMTI3LCAxMiwgCisgICAgMTMsIDIxNywgMTI2LCAxMiwgMTMsIDIxNywgMTI1LCAxMiwgMTMsIDIxNywgMTI0LCAxMiwgMTMsIDIxNywgMTIzLCAxMiwgCisgICAgMTMsIDIxNywgMTIyLCAxMiwgMTMsIDIxNywgMTIxLCAxMiwgMTMsIDIxNywgMTIwLCAxMiwgMTMsIDIxNywgMTE5LCAxMiwgCisgICAgMTMsIDIxNywgMTE4LCAxMiwgMTMsIDIxNywgMTE3LCAxMiwgMTMsIDIxNywgMTE2LCAxMiwgMTMsIDIxNywgMTE1LCAxMiwgCisgICAgMTMsIDIxNywgMTE0LCAxMiwgMTMsIDIxNywgMTEzLCAxMiwgMTMsIDIxNywgMTEyLCAxMiwgMTMsIDIxNywgMTExLCAxMiwgCisgICAgMTMsIDIxNywgMTEwLCAxMiwgMTMsIDIxNywgMTA5LCAxMiwgMTMsIDIxNywgMTA4LCAxMiwgMTMsIDIxNywgMTA3LCAxMiwgCisgICAgMTMsIDIxNSwgMjIsIDEyLCAxMywgMjE1LCAyMSwgMTIsIDEzLCAyMTUsIDIwLCAxMiwgMTMsIDIxNSwgMTksIDEyLCAxMywgCisgICAgMjE1LCAxOCwgMTIsIDEzLCAyMTUsIDE3LCAxMiwgMTMsIDIxNSwgMTYsIDEyLCAxMywgMjE1LCAxNSwgMTIsIDEzLCAyMTUsIAorICAgIDE0LCAxMiwgMTMsIDIxNSwgMTMsIDEyLCAxMywgMjE1LCAxMiwgMTIsIDEzLCAyMTUsIDExLCAxMiwgMTMsIDIxNSwgMTAsIAorICAgIDEyLCAxMywgMjE1LCA5LCAxMiwgMTMsIDIxNSwgOCwgMTIsIDEzLCAyMTUsIDcsIDEyLCAxMywgMjE1LCA2LCAxMiwgMTMsIAorICAgIDIxNSwgNSwgMTIsIDEzLCAyMTUsIDQsIDEyLCAxMywgMjE1LCAzLCAxMiwgMTMsIDIxNSwgMiwgMTIsIDEzLCAyMTUsIDEsIAorICAgIDEyLCAxMywgMjE1LCAwLCAxMiwgMTMsIDIxNCwgMjU1LCAxMiwgMTMsIDIxNCwgMjU0LCAxMiwgMTMsIDIxNCwgMjUzLCAxMiwgCisgICAgMTMsIDIxNCwgMjUyLCAxMiwgMTMsIDIxNCwgMjUxLCAxMiwgMTMsIDIxNCwgMjUwLCAxMiwgMTMsIDIxNCwgMjQ5LCAxMiwgCisgICAgMTMsIDIxNCwgMjQ4LCAxMiwgMTMsIDIxNCwgMjQ3LCAxMiwgMTMsIDIxNCwgMjQ2LCAxMiwgMTMsIDIxNCwgMjQ1LCAxMiwgCisgICAgMTMsIDIxNCwgMjQ0LCAxMiwgMTMsIDIxNCwgMjQzLCAxMiwgMTMsIDIxNCwgMjQyLCAxMiwgMTMsIDIxNCwgMjQxLCAxMiwgCisgICAgMTMsIDIxNCwgMjQwLCAxMiwgMTMsIDIxNCwgMjM5LCAxMiwgMTMsIDIxNCwgMjM4LCAxMiwgMTMsIDIxNCwgMjM3LCAxMiwgCisgICAgMTMsIDIxNCwgMjM2LCAxMiwgMTMsIDIxNCwgMjM1LCAxMiwgMTMsIDIxNCwgMjM0LCAxMiwgMTMsIDIxNCwgMjMzLCAxMiwgCisgICAgMTMsIDIxNCwgMjMyLCAxMiwgMTMsIDIxNCwgMTA0LCAxMiwgMTMsIDIxNCwgMTAzLCAxMiwgMTMsIDIxNCwgMTAyLCAxMiwgCisgICAgMTMsIDIxNCwgMTAxLCAxMiwgMTMsIDIxNCwgMTAwLCAxMiwgMTMsIDIxNCwgOTksIDEyLCAxMywgMjE0LCA5OCwgMTIsIDEzLCAKKyAgICAyMTQsIDk3LCAxMiwgMTMsIDIxNCwgOTYsIDEyLCAxMywgMjE0LCA5NSwgMTIsIDEzLCAyMTQsIDk0LCAxMiwgMTMsIDIxNCwgCisgICAgOTMsIDEyLCAxMywgMjE0LCA5MiwgMTIsIDEzLCAyMTQsIDkxLCAxMiwgMTMsIDIxNCwgOTAsIDEyLCAxMywgMjE0LCA4OSwgCisgICAgMTIsIDEzLCAyMTQsIDg4LCAxMiwgMTMsIDIxNCwgODcsIDEyLCAxMywgMjE0LCA4NiwgMTIsIDEzLCAyMTQsIDg1LCAxMiwgCisgICAgMTMsIDIxNCwgODQsIDEyLCAxMywgMjE0LCA4MywgMTIsIDEzLCAyMTQsIDgyLCAxMiwgMTMsIDIxNCwgODEsIDEyLCAxMywgCisgICAgMjE0LCA4MCwgMTIsIDEzLCAyMTQsIDc5LCAxMiwgMTMsIDIxNCwgNzgsIDEyLCAxMywgMjE0LCA3NywgMTIsIDEzLCAyMTQsIAorICAgIDc2LCAxMiwgMTMsIDIxNCwgNzUsIDEyLCAxMywgMjE0LCA3NCwgMTIsIDEzLCAyMTQsIDczLCAxMiwgMTMsIDIxNCwgNzIsIAorICAgIDEyLCAxMywgMjE0LCA3MSwgMTIsIDEzLCAyMTQsIDcwLCAxMiwgMTMsIDIxNCwgNjksIDEyLCAxMywgMjE0LCA2OCwgMTIsIAorICAgIDEzLCAyMTQsIDY3LCAxMiwgMTMsIDIxNCwgNjYsIDEyLCAxMywgMjE0LCA2NSwgMTIsIDEzLCAyMTQsIDY0LCAxMiwgMTMsIAorICAgIDIxNCwgNjMsIDEyLCAxMywgMjE0LCA2MiwgMTIsIDEzLCAyMTQsIDYxLCAxMiwgMTMsIDIxNCwgNjAsIDEyLCAxMywgMjE0LCAKKyAgICA1OSwgMTIsIDEzLCAyMTQsIDU4LCAxMiwgMTMsIDIxNCwgNTcsIDEyLCAxMywgMjE0LCA1NiwgMTIsIDEzLCAyMTQsIDU1LCAKKyAgICAxMiwgMTMsIDIxNCwgNTQsIDEyLCAxMywgMjE0LCA1MywgMTIsIDEzLCAyMTQsIDUyLCAxMiwgMTMsIDIxNCwgNTEsIDEyLCAKKyAgICAxMywgMjE0LCA1MCwgMTIsIDEzLCAyMTQsIDQ5LCAxMiwgMTMsIDIxNCwgNDgsIDEyLCAxMywgMjE0LCA0NywgMTIsIDEzLCAKKyAgICAyMTQsIDQ2LCAxMiwgMTMsIDIxNCwgNDUsIDEyLCAxMywgMjE0LCA0NCwgMTIsIDEzLCAyMTQsIDQzLCAxMiwgMTMsIDIxNCwgCisgICAgNDIsIDEyLCAxMywgMjE0LCA0MSwgMTIsIDEzLCAyMTQsIDQwLCAxMiwgMTMsIDIxNCwgMzksIDEyLCAxMywgMjE0LCAzOCwgCisgICAgMTIsIDEzLCAyMTQsIDM3LCAxMiwgMTMsIDIxNCwgMzYsIDEyLCAxMywgMjE0LCAzNSwgMTIsIDEzLCAyMTQsIDM0LCAxMiwgCisgICAgMTMsIDIxNCwgMzMsIDEyLCAxMywgMjE0LCAzMiwgMTIsIDEzLCAyMTQsIDMxLCAxMiwgMTMsIDIxNCwgMzAsIDEyLCAxMywgCisgICAgMjE0LCAyOSwgMTIsIDEzLCAyMTQsIDI4LCAxMiwgMTMsIDIxMiwgOTcsIDEyLCAxMywgMjEyLCA5NiwgMTIsIDEzLCAyMTIsIAorICAgIDk1LCAxMiwgMTMsIDIxMiwgOTQsIDEyLCAxMywgMjEyLCA5MywgMTIsIDEzLCAyMTIsIDkyLCAxMiwgMTMsIDIxMiwgOTEsIAorICAgIDEyLCAxMywgMjEyLCA5MCwgMTIsIDEzLCAyMTIsIDg5LCAxMiwgMTMsIDIxMiwgODgsIDEyLCAxMywgMjEyLCA4NywgMTIsIAorICAgIDEzLCAyMTIsIDg2LCAxMiwgMTMsIDIxMiwgODUsIDEyLCAxMywgMjEyLCA4NCwgMTIsIDEzLCAyMTIsIDgzLCAxMiwgMTMsIAorICAgIDIxMiwgODIsIDEyLCAxMywgMjEyLCA4MSwgMTIsIDEzLCAyMTIsIDgwLCAxMiwgMTMsIDIxMiwgNzksIDEyLCAxMywgMjEyLCAKKyAgICA3OCwgMTIsIDEzLCAyMTIsIDc3LCAxMiwgMTMsIDIxMiwgNzYsIDEyLCAxMywgMjEyLCA3NSwgMTIsIDEzLCAyMTIsIDc0LCAKKyAgICAxMiwgMTMsIDIxMiwgNzMsIDEyLCAxMywgMjEyLCA3MiwgMTIsIDEzLCAyMTIsIDcxLCAxMiwgMTMsIDIxMiwgNzAsIDEyLCAKKyAgICAxMywgMjEyLCA2OSwgMTIsIDEzLCAyMTIsIDY4LCAxMiwgMTMsIDIxMiwgNjcsIDEyLCAxMywgMjEyLCA2NiwgMTIsIDEzLCAKKyAgICAyMTEsIDE3NywgMTIsIDEzLCAyMTEsIDE3NiwgMTIsIDEzLCAyMTEsIDE3NSwgMTIsIDEzLCAyMTEsIDE3NCwgMTIsIDEzLCAKKyAgICAyMTEsIDE3MywgMTIsIDEzLCAyMTEsIDE3MiwgMTIsIDEzLCAyMTEsIDE3MSwgMTIsIDEzLCAyMTEsIDE3MCwgMTIsIDEzLCAKKyAgICAyMTEsIDE2OSwgMTIsIDEzLCAyMTEsIDE2OCwgMTIsIDEzLCAyMTEsIDE2NywgMTIsIDEzLCAyMTEsIDE2NiwgMTIsIDEzLCAKKyAgICAyMTEsIDExNSwgMTIsIDEzLCAyMTEsIDExNCwgMTIsIDEzLCAyMTEsIDExMywgMTIsIDEzLCAyMTEsIDExMiwgMTIsIDEzLCAKKyAgICAyMTEsIDExMSwgMTIsIDEzLCAyMTEsIDExMCwgMTIsIDEzLCAyMTEsIDEwOSwgMTIsIDEzLCAyMTEsIDEwOCwgMTIsIDEzLCAKKyAgICAyMTEsIDEwNywgMTIsIDEzLCAyMTAsIDE1OCwgMTIsIDEzLCAyMTAsIDE1NywgMTIsIDEzLCAyMTAsIDE1NiwgMTIsIDEzLCAKKyAgICAyMTAsIDE1NSwgMTIsIDEzLCAyMTAsIDE1NCwgMTIsIDEzLCAyMTAsIDE1MywgMTIsIDEzLCAyMTAsIDE1MiwgMTIsIDEzLCAKKyAgICAyMTAsIDE1MSwgMTIsIDEzLCAyMTAsIDE1MCwgMTIsIDEzLCAyMTAsIDE0OSwgMTIsIDEzLCAyMTAsIDE0OCwgMTIsIDEzLCAKKyAgICAyMTAsIDE0NywgMTIsIDEzLCAyMTAsIDE0NiwgMTIsIDEzLCAyMTAsIDE0NSwgMTIsIDEzLCAyMTAsIDE0NCwgMTIsIDEzLCAKKyAgICAyMTAsIDE0MywgMTIsIDEzLCAyMTAsIDE0MiwgMTIsIDEzLCAyMTAsIDE0MSwgMTIsIDEzLCAyMTAsIDE0MCwgMTIsIDEzLCAKKyAgICAyMTAsIDEzOSwgMTIsIDEzLCAyMTAsIDEzOCwgMTIsIDEzLCAyMTAsIDEzNywgMTIsIDEzLCAyMTAsIDEzNiwgMTIsIDEzLCAKKyAgICAyMTAsIDEzNSwgMTIsIDEzLCAyMTAsIDEzNCwgMTIsIDEzLCAyMTAsIDEzMywgMTIsIDEzLCAyMTAsIDEzMiwgMTIsIDEzLCAKKyAgICAyMTAsIDEzMSwgMTIsIDEzLCAyMTAsIDEzMCwgMTIsIDEzLCAyMTAsIDEyOSwgMTIsIDEzLCAyMTAsIDEyOCwgMTIsIDEzLCAKKyAgICAyMTAsIDEyNywgMTIsIDEzLCAyMTAsIDEyNiwgMTIsIDEzLCAyMTAsIDEyNSwgMTIsIDEzLCAyMTAsIDEyNCwgMTIsIDEzLCAKKyAgICAyMTAsIDEyMywgMTIsIDEzLCAyMTAsIDEyMiwgMTIsIDEzLCAyMTAsIDEyMSwgMTIsIDEzLCAyMTAsIDEyMCwgMTIsIDEzLCAKKyAgICAyMTAsIDExOSwgMTIsIDEzLCAyMTAsIDExOCwgMTIsIDEzLCAyNTUsIDcyLCAxMiwgMTMsIDI1NSwgNzEsIDEyLCAxMywgCisgICAgMjU1LCA3MCwgMTIsIDEzLCAyNTUsIDY5LCAxMiwgMTMsIDI1NSwgNjgsIDEyLCAxMywgMjU1LCA2NywgMTIsIDEzLCAyNTUsIAorICAgIDY2LCAxMiwgMTMsIDI1NSwgNjUsIDEyLCAxMywgMjU1LCA2NCwgMTIsIDEzLCAyNTUsIDYzLCAxMiwgMTMsIDI1NSwgNjIsIAorICAgIDEyLCAxMywgMjU1LCA2MSwgMTIsIDEzLCAyNTUsIDYwLCAxMiwgMTMsIDI1NSwgNTksIDEyLCAxMywgMjU1LCA1OCwgMTIsIAorICAgIDEzLCAyNTUsIDU3LCAxMiwgMTMsIDI1NSwgNTYsIDEyLCAxMywgMjU1LCA1NSwgMTIsIDEzLCAyNTUsIDU0LCAxMiwgMTMsIAorICAgIDI1NSwgNTMsIDEyLCAxMywgMjU1LCA1MiwgMTIsIDEzLCAyNTUsIDUxLCAxMiwgMTMsIDI1NSwgNTAsIDEyLCAxMywgMjU1LCAKKyAgICA0OSwgMTIsIDEzLCAyNTUsIDQ4LCAxMiwgMTMsIDI1NSwgNDcsIDEyLCAxMywgMjU1LCA0NiwgMTIsIDEzLCAyNTUsIDQ1LCAKKyAgICAxMiwgMTMsIDI1NSwgNDQsIDEyLCAxMywgMjU1LCA0MywgMTIsIDEzLCAyNTUsIDQyLCAxMiwgMTMsIDI1NSwgNDEsIDEyLCAKKyAgICAxMywgMjU1LCA0MCwgMTIsIDEzLCAyNTUsIDM5LCAyMCwgMSwgMTY3LCAyMjksIDEyLCAyMzEsIDE2LCAyMCwgMSwgMTY3LCAKKyAgICAyNDMsIDcwLCAyNDQsIDM2LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjMxLCAxNywgMjI1LCA1NywgMjAsIDEsIDE2NywgCisgICAgMjI0LCAyNTEsIDIzMSwgMTcsIDIyNSwgNTgsIDIwLCAxLCAxNjcsIDIyOSwgMjI2LCAyMzEsIDE2LCAyMCwgMSwgMTY3LCAKKyAgICAyMTksIDIyMSwgMjAsIDEsIDE2NywgMjE2LCA2NiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgMjI3LCAxMTgsIDIzMSwgMTYsIAorICAgIDIwLCAxLCAxNjcsIDIyMCwgMTksIDIyNiwgOTAsIDIyOCwgMTY5LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjI2LCA5MCwgCisgICAgMjI4LCAxNzAsIDIyNSwgNTcsIDIwLCAxLCAxNjcsIDIyNCwgMjUxLCAyMjYsIDkwLCAyMjgsIDE3MCwgMjI1LCA1OCwgMjAsIAorICAgIDEsIDE2NywgMjMxLCAyMTgsIDIwLCAxLCAxNjcsIDIxNSwgMTE5LCAyMzEsIDIxOSwgMjAsIDEsIDE2NywgMjI5LCA3MSwgCisgICAgMjAsIDEsIDE2NywgMjMxLCAyMTUsIDIwLCAxLCAxNjcsIDIzMSwgMTc2LCAyMCwgMSwgMTY3LCAyMzAsIDQ4LCAyMCwgMSwgCisgICAgMTY3LCAyMjAsIDEyNCwgMjAsIDEsIDE2NywgMjI3LCAyNDEsIDIwLCAxLCAxNjcsIDIzNCwgMTQ5LCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDEzOCwgMjAsIDEsIDE2NywgMjE4LCA0LCAyMCwgMSwgMTY3LCAyMjksIDExLCAyMCwgMSwgMTY3LCAyMzMsIDg3LCAKKyAgICAyMCwgMSwgMTY3LCAyMzMsIDEyLCAyMzMsIDE4OSwgMjAsIDEsIDE2NywgMjI3LCAyNDgsIDIzMSwgMjQsIDIwLCAxLCAxNjcsIAorICAgIDIzMSwgMjIyLCAyMCwgMSwgMTY3LCAyMjUsIDI0NiwgMjAsIDEsIDE2NywgMjQyLCAyMzEsIDIwLCAxLCAxNjcsIDIyNiwgCisgICAgNTAsIDIwLCAxLCAxNjcsIDIzMCwgMTUxLCAyMjksIDQ1LCAyMCwgMSwgMTY3LCAyMjcsIDk5LCAyMzEsIDI3LCAyMCwgMSwgCisgICAgMTY3LCAxMDQsIDIxMCwgMTg4LCAyMjksIDIyMCwgMjAsIDEsIDE2NywgMjQyLCAyMzIsIDIwLCAxLCAxNjcsIDIyNywgMjQ4LCAKKyAgICAyMjcsIDI0OSwgMjAsIDEsIDE2NywgMjE5LCAxMjgsIDIwLCAxLCAxNjcsIDIzMSwgOSwgMjAsIDEsIDE2NywgMjMxLCAzMCwgCisgICAgMjAsIDEsIDE2NywgMjMwLCAxMzAsIDIwLCAxLCAxNjcsIDIzNCwgMjQ5LCAyMCwgMSwgMTY3LCAyMjYsIDkwLCAyMzMsIDQ3LCAKKyAgICAyMCwgMSwgMTY3LCAyMjksIDE0OSwgMjMzLCA0NywgMjAsIDEsIDE2NywgMjI1LCAxNTgsIDIwLCAxLCAxNjcsIDIzMSwgCisgICAgMjE2LCAyMCwgMSwgMTY3LCAyMjgsIDIwNywgMjAsIDEsIDE2NywgMjI0LCAxMzQsIDIwLCAxLCAxNjcsIDIxNSwgMTE2LCAKKyAgICAyMCwgMSwgMTY3LCAyMzIsIDk0LCAyMCwgMSwgMTY3LCAyMTksIDQxLCAyMCwgMSwgMTY3LCAyMTYsIDIxNiwgMjAsIDEsIAorICAgIDE2NywgMjMxLCAyMTMsIDIwLCAxLCAxNjcsIDIzNCwgMTU2LCAyMCwgMSwgMTY3LCAyMjksIDE0NSwgMjAsIDEsIDE2NywgCisgICAgMjMzLCAyMDEsIDIwLCAxLCAxNjcsIDIzMCwgMTMxLCAyMCwgMSwgMTY3LCAyMTksIDIxOCwgMjAsIDEsIDE2NywgMjMyLCAKKyAgICAxMzgsIDIwLCAxLCAxNjcsIDI0NCwgOTMsIDIwLCAxLCAxNjcsIDIyMiwgMTk5LCAyMCwgMSwgMTY3LCAyMzMsIDI0MSwgMjAsIAorICAgIDEsIDE2NywgMjE5LCAzNywgMjAsIDEsIDE2NywgMjMxLCAxNzMsIDIyNSwgOTksIDIwLCAxLCAxNjcsIDIyMCwgMTIsIDIwLCAKKyAgICAxLCAxNjcsIDIyNywgMjQ3LCAyMCwgMSwgMTY3LCAyMTksIDI1MywgMjI4LCAyLCAyMTAsIDE5NiwgMjAsIDEsIDE2NywgCisgICAgMjI3LCAxMzgsIDIzMCwgMTQ4LCAyMCwgMSwgMTY3LCAyMjYsIDg1LCAyMCwgMSwgMTY3LCAyMjgsIDEzOSwgMjAsIDEsIAorICAgIDE2NywgMjE0LCAxNzAsIDIwLCAxLCAxNjcsIDIyOSwgNDgsIDIwLCAxLCAxNjcsIDIzMSwgMjEyLCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDE4MSwgMjAsIDEsIDE2NywgMjMxLCAxMTksIDIwLCAxLCAxNjcsIDIyNywgMTUxLCAyMCwgMSwgMTY3LCAyMTYsIAorICAgIDIyMCwgMjAsIDEsIDE2NywgMjE5LCAzNCwgMjAsIDEsIDE2NywgMjI2LCA4NiwgMjAsIDEsIDE2NywgMjI4LCA2LCAyMCwgMSwgCisgICAgMTY3LCAyMzEsIDIyMCwgMjAsIDEsIDE2NywgMjI3LCAxNDgsIDIwLCAxLCAxNjcsIDIzNCwgMjE2LCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDksIDIwLCAxLCAxNjcsIDIxMywgMjUwLCAyMCwgMSwgMTY3LCAyMzIsIDk4LCAyMCwgMSwgMTY3LCAyMjksIDk4LCAKKyAgICAyMCwgMSwgMTY3LCAyMjksIDE5NiwgMjAsIDEsIDE2NywgMjMxLCAxMTgsIDIwLCAxLCAyMjUsIDEzOCwgMjI4LCA0LCAyMCwgCisgICAgMSwgMjI1LCAxMzgsIDIxNSwgMTE5LCAyMzEsIDIxNywgMjAsIDEsIDIyNSwgMTM4LCAyMTksIDE4NSwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMjAsIDEyOCwgMjE1LCAxMTgsIDIwLCAxLCAyMjUsIDEzOCwgMjMyLCAxNDAsIDIyNywgMjQ0LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIzMSwgMTI1LCAyMzEsIDIyMSwgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDg3LCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgCisgICAgMTUsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxMjAsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAyMzcsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjI1LCAyMDgsIDIwLCAxLCAyMjUsIDEzOCwgMjExLCA4OSwgMjMzLCA0NywgMjAsIDEsIDIyNSwgMTM4LCAyMzMsIAorICAgIDEwMywgMjI4LCAyLCAyMjcsIDE2MCwgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDI0MiwgMjIwLCAzOCwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMjksIDExNiwgMjI4LCAxODQsIDIwLCAxLCAyMjUsIDEzOCwgMjQyLCAyMjksIDIwLCAxLCAyMjUsIDEzOCwgMjI1LCAKKyAgICA0OSwgMjAsIDEsIDIyNSwgMTM4LCAyMTUsIDExOSwgMjI4LCAwLCAyMCwgMSwgMjI1LCAxMzgsIDIyMCwgNDMsIDIyOCwgCisgICAgMTc5LCAyMCwgMSwgMjI1LCAxMzgsIDIyMCwgMzksIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxNywgMjE2LCAyMTksIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjMxLCAxMDcsIDIzMSwgMTIxLCAyMCwgMSwgMjI1LCAxMzgsIDIyNywgMTQ5LCAyMjcsIDI0NCwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyMzQsIDE0NSwgMjAsIDEsIDIyNSwgMTM4LCAyNDIsIDIzMCwgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDE0MSwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMzMsIDEyOSwgMjAsIDEsIDIyNSwgMTM4LCAyMjUsIDI0OSwgMjAsIDEsIDIyNSwgMTM4LCAKKyAgICAyMTMsIDE4MiwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDEzLCAyMzAsIDQ2LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgNDcsIAorICAgIDIzMSwgMTAzLCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgMTkzLCAyMCwgMSwgMjI1LCAxMzgsIDIyMiwgMTEsIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjE3LCA5NywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDI5LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMzIsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAzMywgMjMzLCA4NCwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDE5LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIxOCwgNTIsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxMTEsIDIwLCAxLCAyMjUsIDEzOCwgMjMwLCAxMzMsIDIwLCAKKyAgICAxLCAyMjUsIDEzOCwgMjI3LCAxNjMsIDIwLCAxLCAyMjUsIDEzOCwgMjI0LCAxMzgsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAKKyAgICAyOCwgMjI5LCA0OSwgMjAsIDEsIDIyNSwgMTM4LCAyNDQsIDEyNiwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDk4LCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDI0NCwgMTQ3LCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMTUzLCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMjM5LCAKKyAgICAyMjgsIDE3MywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDIzOSwgMjI4LCAxNDksIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAxMSwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDU1LCAyMCwgMSwgMjI1LCAxMzgsIDIyOCwgMTEsIDIwLCAxLCAyMjUsIDEzOCwgMTg0LCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgNzQsIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAxLCAyMCwgMSwgMTM3LCAyMjksIDEyLCAKKyAgICAyMzEsIDIxOSwgMjAsIDEsIDEzNywgMjI3LCAxMTcsIDIwLCAxLCAxMzcsIDIxMCwgMTk2LCAyMCwgMSwgMTM3LCAyMTIsIAorICAgIDUzLCAyMCwgMSwgMTM3LCAyMjksIDQ4LCAyMCwgMSwgMTM3LCAyMjksIDEzNywgMjAsIDEsIDEzNywgMjI5LCAxOSwgMjAsIAorICAgIDEsIDEzNywgMjQyLCAyMzksIDIwLCAxLCAxMzcsIDIzMSwgMTE1LCAyMCwgMSwgMTM3LCAyNDMsIDc3LCAyMCwgMSwgMTM3LCAKKyAgICAyMjcsIDE0MCwgMjMwLCAxNzAsIDIzMSwgMzEsIDIwLCAxLCAxMzcsIDIyNywgMjQwLCAyMzEsIDEwNiwgMjAsIDEsIDEzNywgCisgICAgMjMxLCAxMTIsIDIwLCAxLCAxMzcsIDIyNSwgNTUsIDIwLCAxLCAxMzcsIDIyOSwgMTIyLCAyMCwgMSwgMTM3LCAyMzEsIAorICAgIDEyMywgMjUxLCAyOSwgMjAsIDEsIDEzNywgMjM0LCAxNDMsIDIwLCAxLCAxMzcsIDI0MiwgMjQwLCAyMCwgMSwgMTM3LCAKKyAgICAyMzQsIDE1MCwgMjAsIDEsIDEzNywgMjEwLCAyMTMsIDIzMCwgNzYsIDIwLCAxLCAxMzcsIDIyNywgMTExLCAyMCwgMSwgCisgICAgMTM3LCAyMzEsIDEwMCwgMjAsIDEsIDEzNywgMjI4LCAxMCwgMjAsIDEsIDEzNywgMjMxLCAxMDYsIDIwLCAxLCAxMzcsIAorICAgIDIxMSwgMTYsIDIwLCAxLCAxMzcsIDIzMywgMjQ5LCAyMCwgMSwgMTM3LCAyMzUsIDEwLCAyMCwgMSwgMTM3LCAyMjAsIDEyMywgCisgICAgMjAsIDEsIDEzNywgMjI5LCAxMzEsIDIwLCAxLCAxMzcsIDIxNywgOTUsIDIwLCAxLCAxMzcsIDIyOCwgMTUzLCAyMCwgMSwgCisgICAgMTM3LCAyMTYsIDY2LCAyMTAsIDE5OCwgMjAsIDEsIDEzNywgMjE4LCA3OSwgMjAsIDEsIDEzNywgMjI5LCAzOSwgMjI3LCAKKyAgICAxNjAsIDIwLCAxLCAxMzcsIDIxMywgMTgxLCAyMCwgMSwgMTM3LCAyMjksIDE5OSwgMjAsIDEsIDEzNywgMjMxLCAyMzksIAorICAgIDIzNCwgMTUyLCAyMCwgMSwgMTM3LCAyMjcsIDI0OSwgMjAsIDEsIDEzNywgMjI5LCAzNCwgMjAsIDEsIDEzNywgMjMzLCA4OCwgCisgICAgMjAsIDEsIDEzNywgMjMxLCAxMDgsIDIwLCAxLCAxMzcsIDIzMSwgOCwgMjAsIDEsIDEzNywgMjI3LCAyNDMsIDIwLCAxLCAKKyAgICAxMzcsIDIxNiwgMjE1LCAyMCwgMSwgMTM3LCAyMjksIDM2LCAyMCwgMSwgMTM3LCAyNDMsIDIzMywgMjAsIDEsIDEzNywgCisgICAgMjI5LCAxMzYsIDIwLCAxLCAxMzcsIDIyOCwgMTIsIDIwLCAxLCAxMzcsIDIyOCwgOCwgMjAsIDEsIDEzNywgMjUxLCAxMDcsIAorICAgIDIwLCAxLCAxMzcsIDIxMywgMTgzLCAyMCwgMSwgMTM3LCAyMzEsIDExMywgMjAsIDEsIDEzNywgMjIyLCAxNDAsIDIwLCAxLCAKKyAgICAxMzcsIDIyOCwgMTgzLCAyMCwgMSwgMTM3LCAyMzMsIDEwMiwgMjAsIDEsIDEzNywgMjE2LCA2NCwgMjAsIDEsIDEzNywgCisgICAgMjI3LCAyNTAsIDIyOSwgMSwgMjAsIDEsIDEzNywgMjI4LCAxNzUsIDIwLCAxLCAxMzcsIDIzNCwgMTU2LCAyMCwgMSwgMTM3LCAKKyAgICAyMjksIDQwLCAyMCwgMSwgMTM3LCAyMzEsIDIxMiwgMjAsIDEsIDEzNywgMjMxLCAxMDEsIDIwLCAxLCAxMzcsIDIzMiwgOTgsIAorICAgIDIwLCAxLCAxMzcsIDIzMywgMTg5LCAyMCwgMSwgMTM3LCAyMjgsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAxLCAyMCwgMSwgCisgICAgMTM3LCAyMTEsIDE4NCwgMjAsIDEsIDEzNywgMjI5LCAzNywgMjAsIDEsIDEzNywgMjI3LCAyNTMsIDIwLCAxLCAxMzcsIAorICAgIDIyNywgMjQ1LCAyMCwgMSwgMTM3LCAyMzMsIDIwMywgMjI4LCAxMzksIDIwLCAxLCAxMzcsIDIyNywgMjUxLCAyMCwgMSwgCisgICAgMTM3LCAyMjksIDE0NCwgMjAsIDEsIDEzNywgMjMxLCAyMzksIDIyOCwgMCwgMjAsIDEsIDEzNywgMjExLCAxMDMsIDIwLCAxLCAKKyAgICAxMzcsIDIyOSwgMTQzLCAyMCwgMSwgMTM3LCAyMTksIDIyMCwgMjAsIDEsIDEzNywgMjIwLCAxMjYsIDIwLCAxLCAxMzcsIAorICAgIDIzMSwgMTA5LCAyMCwgMSwgMTM3LCAyMzEsIDIxOSwgMjAsIDEsIDEzNywgMjMxLCAxMTksIDIwLCAxLCAxMzcsIDIzNCwgCisgICAgMTQ0LCAyMCwgMSwgMTM3LCAyMzEsIDExMCwgMjAsIDEsIDEzNywgMjM0LCAxNDgsIDIwLCAxLCAxMzcsIDIzMSwgMTIzLCAKKyAgICAyMjUsIDEwMywgMjAsIDEsIDEzNywgMjEwLCAxNzksIDIwLCAxLCAxMzcsIDIyOCwgMTcxLCAyMCwgMSwgMTM3LCAyMzAsIAorICAgIDIyMCwgMjAsIDEsIDEzNywgMjMwLCAxMDAsIDIwLCAxLCAxMzcsIDIyMCwgMTUsIDIwLCAxLCAxMzcsIDIzNCwgMTY2LCAKKyAgICAyMzMsIDcwLCAyMCwgMSwgMTM3LCAyMzQsIDE2NiwgMjQ0LCAxNjAsIDIwLCAxLCAxMzcsIDIyOSwgNjksIDIwLCAxLCAxMzcsIAorICAgIDIyOSwgMTk2LCAyMCwgMSwgMTM3LCAyMzIsIDIwMCwgMjAsIDEsIDEzNywgMjI1LCA2NSwgMjAsIDEsIDEzNywgMjI1LCAKKyAgICAxOTksIDIwLCAxLCAxMzcsIDIxNiwgMjMwLCAyMCwgMSwgMTA3LCAyMzEsIDk5LCAyMCwgMSwgMTA3LCAyMTIsIDUxLCAyMCwgCisgICAgMSwgMTA3LCAyMjgsIDE2OSwgMjAsIDEsIDEwNywgMjMxLCAxNiwgMjAsIDEsIDEwNywgMjI4LCAxNjcsIDIwLCAxLCAxMDcsIAorICAgIDIzMiwgMjM1LCAyMCwgMSwgMTA3LCAyMjgsIDE3MiwgMjAsIDEsIDEwNywgMjI4LCA3LCAyMCwgMSwgMTA3LCAyMjksIDU0LCAKKyAgICAyMCwgMSwgMTA3LCAyMjcsIDE2MCwgMjAsIDEsIDEwNywgMjExLCAxOTQsIDIwLCAxLCAxMDcsIDIyOSwgOSwgMjAsIDEsIAorICAgIDEwNywgMjIwLCA2MSwgMjAsIDEsIDEwNywgMjI5LCAyMCwgMjAsIDEsIDEwNywgMjM0LCAxNTEsIDIwLCAxLCAxMDcsIDIxNiwgCisgICAgMjE3LCAyMCwgMSwgMTA3LCAyMjAsIDQxLCAyMCwgMSwgMTA3LCAyMjgsIDE4MCwgMjAsIDEsIDEwNywgMjE4LCA1MiwgMjAsIAorICAgIDEsIDEwNywgMjM0LCAxNTYsIDIwLCAxLCAxMDcsIDIxMSwgOTEsIDIwLCAxLCAxMDcsIDIzMywgMjA0LCAyMCwgMSwgMTA3LCAKKyAgICAyMjEsIDIzNCwgMjAsIDEsIDEwNywgMjMxLCAyMSwgMjAsIDEsIDEwNywgMjI5LCAxMzUsIDIwLCAxLCAxMDcsIDIzMSwgCisgICAgMTg4LCAyMCwgMSwgMTA3LCAyMzEsIDI3LCAyMCwgMSwgMTA3LCAyMjAsIDEyNSwgMjAsIDEsIDEwNywgMjExLCAzOSwgMjAsIAorICAgIDEsIDEwNywgMjI4LCAxNzQsIDIwLCAxLCAxMDcsIDIzNCwgMTQ3LCAyMzEsIDEwMiwgMjAsIDEsIDEwNywgMjI5LCAxNiwgCisgICAgMjAsIDEsIDEwNywgMjE1LCAxMTgsIDIwLCAxLCAxMDcsIDI0MiwgMjQ4LCAyMCwgMSwgMTA3LCAyMjksIDYsIDIwLCAxLCAKKyAgICAxMDcsIDI0NCwgMTI3LCAyMCwgMSwgMTA3LCAyMjksIDEzOSwgMjAsIDEsIDEwNywgMjMxLCAwLCAyMCwgMSwgMTA3LCAyMzMsIAorICAgIDUsIDIwLCAxLCAxMDcsIDIyOSwgMTIxLCAyMCwgMSwgMTA3LCAyMzAsIDE0NywgMjAsIDEsIDEwNywgMjMxLCA0LCAyMCwgMSwgCisgICAgMTA3LCAyMjQsIDExOCwgMjAsIDEsIDEwNywgMjMxLCAyLCAyMCwgMSwgMTA3LCAyMzEsIDE4LCAyMCwgMSwgMTA3LCAyMzIsIAorICAgIDg0LCAyMCwgMSwgMTA3LCAyMjcsIDI1NSwgMjAsIDEsIDEwNywgMjMxLCAxMjIsIDIwLCAxLCAxMDcsIDIzMywgMTgwLCAyMCwgCisgICAgMSwgMTA3LCAyMjcsIDE1MSwgMjAsIDEsIDEwNywgMjE2LCAyMjAsIDIwLCAxLCAxMDcsIDIxOSwgMzQsIDIwLCAxLCAxMDcsIAorICAgIDIxMCwgMTc5LCAyMCwgMSwgMTA3LCAyMzQsIDE0OCwgMjAsIDEsIDEwNywgMjIzLCAxNzAsIDIwLCAxLCAxMDcsIDIxNywgCisgICAgMTAsIDIwLCAxLCAxMDcsIDIyOSwgMTcsIDIwLCAxLCAxMDcsIDIzMSwgMjMsIDIwLCAxLCAxMDcsIDIyNywgMjU0LCAyMCwgCisgICAgMSwgMTA3LCAyMzQsIDE0NiwgMjAsIDEsIDEwNywgMjI1LCA1OSwgMjAsIDEsIDEwNywgMjI1LCAxNTIsIDIwLCAxLCAxMDcsIAorICAgIDIyNywgMTI3LCAyMCwgMSwgMTA3LCAyMzMsIDExLCAyMCwgMSwgMTA3LCAyMjksIDU1LCAyMCwgMSwgMTA3LCAyMzEsIDIwLCAKKyAgICAyMCwgMSwgMTA3LCAyMjksIDI5LCAyMCwgMSwgMTA3LCAyMTAsIDE5MywgMjAsIDEsIDEwNywgMjI2LCAyMSwgMjAsIDEsIAorICAgIDEwNywgMjEwLCAxOTIsIDIwLCAxLCAxMDcsIDIyOSwgMTQ0LCAyMCwgMSwgMTA3LCAyMjcsIDI0NCwgMjAsIDEsIDEwNywgCisgICAgMjE4LCA4MSwgMjAsIDEsIDEwNywgMjMzLCAyMDgsIDIwLCAxLCAxMDcsIDIyOSwgNDQsIDIwLCAxLCAxMDcsIDIyOSwgMTQsIAorICAgIDIwLCAxLCAxMDcsIDIxNSwgMTAyLCAyMCwgMSwgMTA3LCAyMzEsIDMxLCAyMCwgMSwgMTA3LCAyMzMsIDE5OCwgMjAsIDEsIAorICAgIDEwNywgMjI3LCAyNTIsIDIwLCAxLCAxMDcsIDIxNiwgMjE4LCAyMCwgMSwgMTA3LCAyMzEsIDIxNCwgMjAsIDEsIDEwNywgCisgICAgMjI5LCA1MywgMjAsIDEsIDEwNywgMjMzLCA0LCAyMCwgMSwgMTA3LCAyMjksIDM1LCAyMCwgMSwgMTA3LCAyMjgsIDEsIDIwLCAKKyAgICAxLCAxMDcsIDIyOCwgMTUzLCAyMCwgMSwgMTA3LCAyNDIsIDIzMywgMjAsIDEsIDEwNywgMjMzLCAyMTcsIDIwLCAxLCAxMDcsIAorICAgIDIyMywgODQsIDIyNiwgMjA5LCAyMCwgMSwgMTA3LCAyMTcsIDg2LCAyMCwgMSwgMTA3LCAyMTYsIDEwLCAyMCwgMSwgMTA3LCAKKyAgICAyMjcsIDE0OCwgMjAsIDEsIDEwNywgMjIyLCAyMzksIDIwLCAxLCAxMDcsIDIzMywgNDksIDIwLCAxLCAxMDcsIDIzMSwgNzksIAorICAgIDIwLCAxLCAxMDcsIDE5MywgMjAsIDEsIDEwNywgMjE4LCA0LCAyMCwgMSwgMTA3LCAyMzAsIDEwMiwgMjAsIDEsIDEwNywgCisgICAgMjIwLCAyNywgMjAsIDEsIDEwNywgMjIwLCAzNywgMjAsIDEsIDEwNywgMjMzLCAxNTUsIDIwLCAxLCAxMDcsIDIyNywgMjM3LCAKKyAgICAyMCwgMSwgMTA3LCAyMTksIDIyNSwgMjAsIDEsIDEwNywgMjI3LCAyNDYsIDIwLCAxLCAxMDcsIDIyNSwgMjExLCAyMCwgMSwgCisgICAgMTA3LCAyMjgsIDIzMywgMjAsIDEsIDEwNywgMjE5LCAyNTIsIDIwLCAxLCAxMDcsIDIyNCwgMTMzLCAyMCwgMSwgMTA3LCAKKyAgICAyMzAsIDQ2LCAyMCwgMSwgMTA3LCAyMzIsIDExOSwgMjAsIDEsIDEwNywgMjIzLCA4NCwgMjMwLCA5NiwgMjAsIDEsIDEwNywgCisgICAgMjE2LCAxMTcsIDIwLCAxLCAxMDcsIDIyNywgMjM4LCAyMCwgMSwgMTA3LCAyMzEsIDEyMywgMTk4LCAyMCwgMSwgMTA3LCAKKyAgICAyMjEsIDIzMiwgMjAsIDEsIDEwNywgMjQ0LCAxOTUsIDIwLCAxLCA4MiwgMjI5LCAxNDMsIDIwLCAxLCA4MiwgMjE2LCAxNiwgCisgICAgMjAsIDEsIDgyLCAyMzEsIDExMiwgMjAsIDEsIDgyLCAyMzMsIDg4LCAyMCwgMSwgODIsIDIxMywgMTI4LCAyMCwgMSwgODIsIAorICAgIDIzMiwgMTI1LCAyMCwgMSwgODIsIDIyNiwgODksIDIwLCAxLCA4MiwgMjE5LCA0NSwgMjAsIDEsIDgyLCAyMjMsIDE0NSwgCisgICAgMjAsIDEsIDgyLCAyMjgsIDMsIDIwLCAxLCA4MiwgMjI5LCAxMTQsIDIwLCAxLCA4MiwgMjI0LCAxNDcsIDIwLCAxLCA4MiwgCisgICAgMjE3LCA2MiwgMjAsIDEsIDgyLCAyMjksIDIyLCAyMCwgMSwgODIsIDIzMywgMjQ1LCAyMCwgMSwgODIsIDIxMSwgMTg3LCAKKyAgICAyMCwgMSwgODIsIDIyMSwgMTcwLCAyMCwgMSwgODIsIDIyOSwgNDUsIDIwLCAxLCA4MiwgMjI2LCA4NiwgMjAsIDEsIDgyLCAKKyAgICAyMTYsIDE3LCAyMCwgMSwgODIsIDIzMywgMjAyLCAyMCwgMSwgODIsIDIzMiwgMTM5LCAyMCwgMSwgODIsIDIyOCwgNiwgMjAsIAorICAgIDEsIDgyLCAyMjgsIDI1NCwgMjAsIDEsIDgyLCAyMzEsIDIyMCwgMjAsIDEsIDgyLCAyMjksIDE1LCAyMCwgMSwgODIsIDIyOCwgCisgICAgMjUzLCAyMCwgMSwgODIsIDIyOCwgNSwgMjAsIDEsIDgyLCAyMjIsIDIzNywgMjAsIDEsIDgyLCAyMjgsIDE3MSwgMjAsIDEsIAorICAgIDgyLCAyMjUsIDIxMCwgMjAsIDEsIDgyLCAyMjIsIDMxLCAyMCwgMSwgODIsIDIyOSwgMzAsIDIwLCAxLCA4MiwgMjMxLCAxMCwgCisgICAgMjAsIDEsIDgyLCAyNDIsIDIyNywgMjAsIDEsIDgyLCAyMjksIDE4LCAyMCwgMSwgODIsIDIyOCwgMTgyLCAyMCwgMSwgODIsIAorICAgIDIzMSwgMTcyLCAyMCwgMSwgODIsIDIzMiwgMTIxLCAyMCwgMSwgODIsIDIyOSwgNTAsIDIwLCAxLCA4MiwgMjI5LCAxMjcsIAorICAgIDIwLCAxLCA4MiwgMjE3LCA4NSwgMjI3LCAyNDQsIDIwLCAxLCA4MiwgMjIwLCAxMjcsIDIwLCAxLCA4MiwgMjI0LCAxNDMsIAorICAgIDIwLCAxLCA4MiwgMjI5LCAxNDcsIDIxOSwgNTEsIDIwLCAxLCA4MiwgMjI5LCAzOCwgMjI3LCAxNjAsIDIwLCAxLCA4MiwgCisgICAgMjExLCA0LCAyMCwgMSwgODIsIDI0MiwgMjI4LCAyMCwgMSwgODIsIDIxNSwgMTE3LCAyMCwgMSwgODIsIDIxMSwgMTksIDIwLCAKKyAgICAxLCA4MiwgMjI1LCAxNiwgMjAsIDEsIDgyLCAyMTUsIDEwNywgMjAsIDEsIDgyLCAyMzQsIDE1NCwgMjAsIDEsIDgyLCAyMTgsIAorICAgIDgwLCAyMCwgMSwgODIsIDIxNiwgMjE5LCAyMCwgMSwgODIsIDIxMywgMTg0LCAyMCwgMSwgODIsIDIxMiwgNiwgMjAsIDEsIAorICAgIDgyLCAyMzMsIDEzMiwgMjAsIDEsIDgyLCAyMjQsIDE1MCwgMjAsIDEsIDgyLCAyMTcsIDk2LCAyMCwgMSwgODIsIDI0MiwgCisgICAgMjQ3LCAyMCwgMSwgODIsIDIyOSwgNTksIDIwLCAxLCA4MiwgMjIwLCA0MCwgMjAsIDEsIDgyLCAyMzEsIDUsIDIwLCAxLCAKKyAgICA4MiwgMjMxLCAxMTYsIDIwLCAxLCA4MiwgMjI3LCAxMTUsIDIwLCAxLCA4MiwgMjI4LCAxMzYsIDIwLCAxLCA4MiwgMjQzLCAKKyAgICA3MywgMjAsIDEsIDgyLCAyMTUsIDEwOCwgMjAsIDEsIDgyLCAyMzMsIDIxMSwgMjAsIDEsIDgyLCAyMTEsIDY3LCAyMCwgMSwgCisgICAgODIsIDIyNywgMTQ5LCAyNTAsIDE2LCAyMCwgMSwgODIsIDIxMCwgMjUwLCAyMCwgMSwgODIsIDIzMSwgMjIsIDIwLCAxLCAKKyAgICA4MiwgMjI5LCAxMzIsIDIwLCAxLCA4MiwgMjI1LCAxMDAsIDIwLCAxLCA4MiwgMjEwLCAxOTcsIDIwLCAxLCA4MiwgMjMzLCAKKyAgICA2LCAyMCwgMSwgODIsIDI0MywgMjMzLCAyMCwgMSwgODIsIDI0MywgNzIsIDIwLCAxLCA4MiwgMjI5LCA4LCAyMCwgMSwgODIsIAorICAgIDIzNCwgMTU2LCAyMCwgMSwgODIsIDIzMSwgMjIzLCAyMCwgMSwgODIsIDIyOSwgMjEsIDIwLCAxLCA4MiwgMjQyLCAyMzQsIAorICAgIDIwLCAxLCA4MiwgMjQ0LCAxOTYsIDIwLCAxLCA4MiwgMjI3LCAyMzksIDIwLCAxLCA4MiwgMjI1LCAxNTMsIDIwLCAxLCA4MiwgCisgICAgMjExLCAxNywgMjAsIDEsIDgyLCAyMjksIDQ2LCAyMCwgMSwgODIsIDIyNywgMTQ5LCAyNTIsIDIzLCAyMCwgMSwgODIsIAorICAgIDIyNywgOTUsIDIwLCAxLCA4MiwgMjI0LCAyNDcsIDIwLCAxLCA4MiwgMjMwLCAyMjAsIDIwLCAxLCA4MiwgMjQzLCAyMzEsIAorICAgIDIwLCAxLCA4MiwgMjI5LCAyMjAsIDIwLCAxLCA4MiwgMjMwLCAxMDAsIDIwLCAxLCA4MiwgMjQyLCAyMzMsIDIwLCAxLCA4MiwgCisgICAgMjQzLCAyMzUsIDczLCAyMCwgMSwgODIsIDIzMCwgNDcsIDIwLCAxLCA4MiwgMjI0LCAxNDYsIDIwLCAxLCA4MiwgMjI5LCAKKyAgICAxMCwgMjAsIDEsIDgyLCAyMzMsIDE4OSwgMjAsIDEsIDgyLCAyMjUsIDk3LCAyMCwgMSwgODIsIDIyNywgMjQ3LCAyMCwgMSwgCisgICAgODIsIDIxMSwgMTgsIDIwLCAxLCA4MiwgMjI5LCAzMSwgMjAsIDEsIDgyLCAyMjYsIDkwLCAyMjUsIDE4NywgMjAsIDEsIDgyLCAKKyAgICAyNDMsIDIzNSwgMjUxLCAxNSwgMjAsIDEsIDgyLCAyNDQsIDM3LCAyMCwgMSwgODIsIDIyOCwgMTc2LCAyMCwgMSwgODIsIAorICAgIDYxLCAyMCwgMSwgODIsIDIxNiwgMTAsIDIwLCAxLCA4MiwgNzYsIDIwLCAxLCA4MiwgNzMsIDIwLCAxLCA4MiwgMjMzLCA4NiwgCisgICAgMjAsIDEsIDgyLCAyMjYsIDkwLCAyMjUsIDIzLCAyMCwgMSwgODIsIDIxNywgMTAxLCAyMCwgMSwgODIsIDIxNywgNTEsIDIwLCAKKyAgICAxLCA4MiwgMjI5LCAxNDcsIDIzMCwgMzQsIDI0MCwgMjM0LCAyMCwgMSwgODIsIDIyMCwgMTUsIDIwLCAxLCA4MiwgMjExLCAKKyAgICAxNCwgMjAsIDEsIDgyLCAyMjgsIDI0NywgMjAsIDEsIDgyLCAyMTAsIDIwMiwgMjAsIDEsIDgyLCAyMTAsIDIyNywgMjE3LCAKKyAgICAyNDAsIDIwLCAxLCA4MiwgMjEwLCAyMjcsIDI0OSwgMTQ3LCAyMCwgMSwgODIsIDIxMCwgMTg3LCAyMCwgMSwgODIsIDIxMCwgCisgICAgMTk1LCAyMCwgMSwgODIsIDIzNCwgMTQyLCAyMCwgMSwgODIsIDIyNSwgMTUxLCAyMCwgMSwgODIsIDIyOCwgMTc3LCAyNDUsIAorICAgIDEwMiwgMjAsIDEsIDgyLCAyMjQsIDE0NCwgMjAsIDEsIDgyLCAyMTEsIDE5MiwgMjAsIDEsIDgyLCAyNDQsIDE0NywgMjAsIAorICAgIDEsIDgyLCAyMTMsIDI1MCwgMjAsIDEsIDgyLCAyMzIsIDk4LCAyMCwgMSwgODIsIDIzMCwgMjMwLCAyMCwgMSwgODIsIDIyMywgCisgICAgNTEsIDIwLCAxLCA4MiwgMjIzLCAxNzEsIDIwLCAxLCA4MiwgMjI4LCAyNDYsIDIwLCAxLCA4MiwgMjI5LCA3NywgMjAsIDEsIAorICAgIDgyLCAyMjAsIDcsIDIwLCAxLCA4MiwgMjE5LCAyNTIsIDIwLCAxLCA4MiwgMjQzLCAyMzUsIDIyMywgODYsIDIwLCAxLCA4MiwgCisgICAgMTk3LCAyMCwgMSwgODIsIDIyNSwgMTA4LCAyMCwgMSwgODIsIDIzMiwgMTE5LCAyMCwgMSwgODIsIDIzNCwgMjgsIDIwLCAxLCAKKyAgICA4MiwgMjMxLCA1OCwgMjAsIDEsIDgyLCAxODQsIDIwLCAxLCA4MiwgMjMxLCAxNjksIDIwLCAxLCA4MiwgMjE2LCAyMjEsIAorICAgIDIwLCAxLCA4MiwgMjM0LCA5MiwgMjAsIDEsIDgyLCAyMzAsIDE1MCwgMjAsIDEsIDgyLCAyMTYsIDI0NywgMjAsIDEsIDgyLCAKKyAgICAyNDQsIDE2OSwgMjAsIDEsIDgyLCAyNDIsIDIyMywgMjAsIDEsIDIyNSwgMTM3LCAxNzYsIDIwLCAxLCAyMjUsIDEzNywgNzAsIAorICAgIDIwLCAxLCAyMjUsIDEzNywgMjMzLCAyMTcsIDIwLCAxLCAyMjUsIDEzNywgMjQ1LCAyMDksIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjIzLCAxMDgsIDIwLCAxLCAyMjUsIDEzNywgMjE3LCA4NiwgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDE0OCwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAyMzMsIDEzNSwgMjAsIDEsIDIyNSwgMTM3LCAyMjIsIDIzOSwgMjAsIDEsIDIyNSwgMTM3LCAyMjMsIDI5LCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMSwgNzksIDIwLCAxLCAyMjUsIDEzNywgMjE3LCAxMDEsIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjI5LCAxNDYsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCAxODMsIDIwLCAxLCAyMjUsIDEzNywgMTkzLCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIxOCwgNCwgMjAsIDEsIDIyNSwgMTM3LCAyMjAsIDI3LCAyMCwgMSwgMjI1LCAxMzcsIDIxOSwgMTkxLCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDIyMCwgMTIzLCAyMCwgMSwgMjI1LCAxMzcsIDIzMywgMTU1LCAyMCwgMSwgMjI1LCAxMzcsIDIzNCwgMTU2LCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIyNywgMjA5LCAyMCwgMSwgMjI1LCAxMzcsIDIyNywgMjM3LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyOCwgMTU0LCAyMCwgMSwgMjI1LCAxMzcsIDIxMCwgMjI2LCAyMCwgMSwgMjI1LCAxMzcsIDIxOSwgMjI1LCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDE5MSwgMjAsIDEsIDIyNSwgMTM3LCAyMjgsIDksIDIwLCAxLCAyMjUsIDEzNywgMjI1LCAxNTEsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjI3LCAyNDYsIDIwLCAxLCAyMjUsIDEzNywgMjExLCAxOTIsIDIwLCAxLCAyMjUsIDEzNywgMjI1LCAyMTEsIAorICAgIDIwLCAxLCAyMjUsIDEzNywgMjIyLCAxNDAsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCAyMzMsIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjIzLCA1MSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDE2NSwgMjAsIDEsIDIyNSwgMTM3LCAyMjksIDcsIDIwLCAxLCAyMjUsIAorICAgIDEzNywgMjI5LCA1NiwgMjAsIDEsIDIyNSwgMTM3LCAyMjAsIDcsIDIwLCAxLCAyMjUsIDEzNywgMjI0LCAxNDcsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjQ0LCAzNywgMjAsIDEsIDIyNSwgMTM3LCAyMTIsIDY1LCAyMCwgMSwgMjI1LCAxMzcsIDIzMiwgMjQxLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMiwgMTE5LCAyMCwgMSwgMjI1LCAxMzcsIDIzNCwgMjgsIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjMxLCAxMTQsIDIwLCAxLCAyMjUsIDEzNywgMjIzLCA4MywgMjAsIDEsIDIyNSwgMTM3LCAxODQsIDIwLCAxLCAyMjUsIAorICAgIDEzNywgMjMwLCAxNjEsIDIwLCAxLCAyMjUsIDEzNywgMjMxLCAxMjIsIDIwLCAxLCAyMjUsIDEzNywgMjE2LCAyMzAsIDIwLCAKKyAgICAxLCAyMjUsIDEzNywgMjMzLCAyNTEsIDIwLCAxLCAyMjUsIDEzNywgMjIxLCAyNTEsIDIwLCAxLCAyMjUsIDEzNywgMjEyLCAKKyAgICAxMTUsIDk1LCAxLCAxOTAsIDk1LCAxLCAyNTIsIDE5MSwgOTUsIDEsIDgsIDE5MCwgOTUsIDEsIDIyNSwgNDIsIDk1LCAxLCAKKyAgICAxODQsIDk1LCAxLCAyMzAsIDIzMywgOTUsIDEsIDI1NCwgMjMsIDE4NCwgOTUsIDEsIDI0NCwgMTk2LCA5NSwgMSwgMjE0LCAKKyAgICAyNywgOTUsIDEsIDIxMywgMTc3LCA5NSwgMSwgMjE3LCAxMDUsIDk1LCAxLCAyNDgsIDIyMSwgOTUsIDEsIDgsIDIxNSwgCisgICAgMTU2LCA5NSwgMSwgOCwgMjE3LCAxMDUsIDk1LCAxLCAyMTUsIDE1NiwgOTUsIDEsIDI0OCwgMTM1LCA5NSwgMSwgMTk3LCAKKyAgICA5NSwgMSwgMjI4LCAyMzcsIDk1LCAxLCA4LCAyMjgsIDExMCwgOTUsIDEsIDI1NCwgMjMsIDE5NywgOTUsIDEsIDIyOCwgCisgICAgMTEwLCA5NSwgMSwgMjI4LCA5NiwgOTUsIDEsIDIzMywgMTM1LCA5NSwgMSwgMjMyLCA2MSwgOTUsIDEsIDIzMiwgMjU0LCAKKyAgICA5NSwgMSwgMjMyLCAyNDMsIDk1LCAxLCAyMTYsIDU2LCA5NSwgMSwgMjQ3LCAxNTMsIDk1LCAxLCAyMTYsIDQ4LCA5NSwgMSwgCisgICAgMjQ3LCAxNTIsIDk1LCAxLCAxNzYsIDk1LCAxLCAyNDMsIDEzNSwgOTUsIDEsIDgsIDE3NiwgOTUsIDEsIDIyNCwgODgsIDk1LCAKKyAgICAxLCAyMjQsIDY2LCA5NSwgMSwgMjI5LCA3NywgOTUsIDEsIDIyOSwgMjgsIDk1LCAxLCAyNTQsIDIzLCAyMjksIDc3LCA5NSwgCisgICAgMSwgMTYyLCA5NSwgMSwgMjExLCAxNjUsIDk1LCAxLCAyNDIsIDI0OSwgOTUsIDEsIDI0MiwgMjI2LCA5NSwgMSwgMjE1LCAKKyAgICAxNjUsIDk1LCAxLCAyNDYsIDI2LCA5NSwgMSwgMjI3LCAxNjUsIDk1LCAxLCAyMjcsIDE1MCwgOTUsIDEsIDIxNSwgMTc1LCAKKyAgICA5NSwgMSwgMjQ2LCAzMywgOTUsIDEsIDgsIDIxNSwgMTc1LCA5NSwgMSwgOCwgMjQ2LCAzMywgOTUsIDEsIDIyMywgMTA2LCAKKyAgICAyMTUsIDE3NSwgOTUsIDEsIDIyMCwgMTAyLCA5NSwgMSwgMjE4LCAyMjMsIDk1LCAxLCAyMTAsIDgyLCA5NSwgMSwgMjEwLCAKKyAgICAxNCwgOTUsIDEsIDIxNSwgMTgzLCA5NSwgMSwgMjQ2LCAzOCwgOTUsIDEsIDgsIDIxNSwgMTgzLCA5NSwgMSwgMjA2LCA5NSwgCisgICAgMSwgMjEwLCAxMTYsIDk1LCAxLCAyMTAsIDE1LCA5NSwgMSwgMjA5LCAyNDMsIDk1LCAxLCAyMDksIDIyMywgOTUsIDEsIAorICAgIDI1NCwgMjMsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMTUsIDk1LCAxLCAyMDksIDIyMiwgOTUsIDEsIDIxMiwgNjUsIDk1LCAKKyAgICAxLCAyNTQsIDIwOSwgOTUsIDEsIDI0MSwgMTg5LCA5NSwgMSwgMjI5LCAxOTIsIDk1LCA1LCAyNTMsIDIyMiwgOTUsIDUsIAorICAgIDIyMywgMTA2LCAyMTMsIDEzMywgOTUsIDUsIDIyMywgMTA2LCAyNTMsIDIyMiwgOTUsIDI1LCA1LCA2MSwgOTUsIDI1LCA1LCAKKyAgICAyNTUsIDczLCA5NSwgMjUsIDUsIDI1NCwgMjA1LCA5NSwgMjUsIDUsIDI1NCwgMTIzLCA5NSwgMjUsIDUsIDI1NCwgMTE1LCAKKyAgICA5NSwgMjUsIDUsIDc2LCA5NSwgMjUsIDUsIDIyNiwgMTgzLCA5NSwgMjUsIDUsIDIxMSwgMjI3LCA5NSwgMjUsIDUsIDIxMiwgCisgICAgOTgsIDk1LCAyNSwgNSwgNzUsIDk1LCAyNSwgNSwgMjQ1LCAxNTAsIDk1LCAyNSwgNSwgMjQ1LCAxMzgsIDk1LCAyNSwgNSwgCisgICAgMjI2LCAyMzIsIDk1LCAyNSwgNSwgNzMsIDk1LCAyNSwgNSwgMjQwLCAxMTksIDk1LCAyNSwgNSwgMjQwLCAxMTgsIDk1LCAKKyAgICAyNSwgNSwgMjQwLCAxMTcsIDk1LCAyNSwgNSwgMjM1LCAxODksIDk1LCAyNSwgNSwgMjM2LCA2MCwgOTUsIDI1LCA1LCAyMzYsIAorICAgIDMzLCA5NSwgMjUsIDUsIDIzNSwgMTU2LCA5NSwgMjUsIDUsIDIzNSwgMjMxLCA5NSwgMjUsIDUsIDcwLCA5NSwgMjUsIDUsIAorICAgIDIxNCwgMjI5LCA5NSwgMjUsIDUsIDIxNCwgMjI4LCA5NSwgMjUsIDUsIDIxNCwgMjI3LCA5NSwgMjUsIDUsIDIxNCwgMTE4LCAKKyAgICA5NSwgMjUsIDUsIDIxNCwgMjExLCA5NSwgMjUsIDUsIDIxNCwgMTc4LCA5NSwgMjUsIDUsIDIxMSwgMTE3LCA5NSwgMjUsIDUsIAorICAgIDIxMSwgOCwgOTUsIDI1LCA1LCAyNTQsIDI0MywgOTUsIDI1LCA1LCAyNTQsIDIzOSwgOTUsIDI1LCA1LCAyNDUsIDg2LCA5NSwgCisgICAgMjUsIDUsIDIyMiwgMTgzLCAyNDUsIDg2LCA5NSwgMjUsIDUsIDI0NSwgOTIsIDk1LCAyNSwgNSwgMjIyLCAxODMsIDI0NSwgCisgICAgOTIsIDk1LCAyNSwgNSwgMjU0LCAyMDEsIDk1LCAyNSwgNSwgMjQ1LCAxOTUsIDk1LCAyNSwgNSwgMjUzLCAxOTIsIDk1LCAKKyAgICAyNSwgNSwgMjI2LCAxMzQsIDk1LCAyNSwgNSwgMjMwLCAyNSwgOTUsIDI1LCA1LCAyMjksIDc5LCA5NSwgMTM4LCAyMjIsIAorICAgIDI1MSwgOTUsIDEzOCwgMjE2LCAxNCwgMjIyLCAyNTEsIDk1LCAxMzgsIDQ4LCA5NSwgMTM4LCA1MSwgOTUsIDEsIDIxNiwgCisgICAgMjgsIDk1LCAxLCAyMTYsIDI3LCA5NSwgMSwgMjE2LCAyNiwgOTUsIDEsIDIxNiwgMjUsIDk1LCAxLCAyMTYsIDI0LCA5NSwgCisgICAgMSwgMjE2LCAyMywgOTUsIDEsIDIxNiwgMjIsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyOSwgOTUsIDEsIDIyMywgMTA2LCAKKyAgICAyMTYsIDI4LCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjYsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyNSwgOTUsIDEsIDIyMywgCisgICAgMTA2LCAyMTYsIDI0LCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjIsIDU2LCAxLCAyNTQsIDIzLCA3NSwgMTQxLCAxLCAyNTQsIAorICAgIDIzLCAyMTEsIDQ3LCA0OSwgMjgsIDE2LCAyMjQsIDE1NCwgNDksIDI4LCAxNiwgMjQ4LCAxNTgsIDQ5LCAyOCwgMTYsIDIyNSwgCisgICAgMTc1LCA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDIyNiwgMTEzLCAyNDcsIDIwMSwgNDksIAorICAgIDI4LCAxNiwgMjE0LCAxNiwgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAKKyAgICAyMzQsIDE5NywgNDksIDI4LCAxNiwgMjE3LCAxNjksIDQ5LCAyOCwgMTYsIDIyNiwgOSwgNDksIDI4LCAxNiwgMjEwLCAyMTcsIAorICAgIDQ5LCAyOCwgMTYsIDIxMCwgMjE4LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgMjMzLCAyMzQsIDQ5LCAyOCwgMTYsIDI1NCwgCisgICAgNjgsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyNDUsIDI2LCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjE3LCAyLCA0OSwgMjgsIAorICAgIDE2LCAyMzQsIDE2MSwgNDksIDI4LCAxNiwgMjU0LCA1OCwgNDksIDI4LCAxNiwgMjU0LCA1OSwgMjQ3LCAyMDEsIDQ5LCAyOCwgCisgICAgMTYsIDIxNywgMTc1LCA0OSwgMjgsIDE2LCAyMTYsIDE1OSwgNDksIDI4LCAxNiwgMjI2LCAyMDYsIDI1NCwgMjEsIDQ5LCAKKyAgICAyOCwgMTYsIDI0MiwgMTU5LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjQsIDE1MywgNDksIDI4LCAxNiwgMjUwLCAxNDksIAorICAgIDQ5LCAyOCwgMTYsIDIxNCwgNiwgNDksIDI4LCAxNiwgMjM1LCAxNjQsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAKKyAgICAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjIxLCAyMTMsIDQ5LCAyOCwgMTYsIAorICAgIDIyNiwgMCwgNDksIDI4LCAxNiwgMjE4LCAxNDYsIDI1NCwgNjEsIDQ5LCAyOCwgMTYsIDIyNiwgMTEyLCAyNTQsIDIxLCA0OSwgCisgICAgMjgsIDE2LCAyMTQsIDE1LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyNTQsIDYyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDU2LCA0OSwgMjgsIDE2LCAyMzQsIDM3LCA0OSwgMjgsIDE2LCAyMjMsIDQ2LCA0OSwgMjgsIDE2LCAyMjUsIDEwNiwgMjU0LCAKKyAgICAyMSwgNDksIDI4LCAxNiwgMjE2LCA4MywgNDksIDI4LCAxNiwgMjU0LCAxMjEsIDQ5LCAyOCwgMTYsIDIyMSwgMTU5LCA0OSwgCisgICAgMjgsIDE2LCAyMTcsIDE3OCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjE3LCAxNzgsIDIzMSwgNDAsIDIxOCwgMTQ0LCA0OSwgCisgICAgMjgsIDE2LCAyMjYsIDEwNywgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjE2LCAxOTAsIDQ5LCAyOCwgMTYsIDIzMywgMjcsIDQ5LCAKKyAgICAyOCwgMTYsIDI0NiwgNDEsIDQ5LCAyOCwgMTYsIDIxNSwgMjI3LCA0OSwgMjgsIDE2LCAyMTYsIDIzMiwgNDksIDI4LCAxNiwgCisgICAgMjMzLCAyMzcsIDQ5LCAyOCwgMTYsIDI1NCwgNjgsIDI0NSwgMjYsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAKKyAgICAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzYsIDEyLCA0OSwgMjgsIDE2LCAyMTUsIDE5OSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAyMDAsIDIxNSwgMTk4LCA0OSwgMjgsIDE2LCAyMjUsIDIwMCwgNDksIDI4LCAxNiwgMjI0LCAxNTgsIDQ5LCAyOCwgCisgICAgMTYsIDIzNCwgMTEsIDQ5LCAyOCwgMTYsIDI1MCwgODAsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyMywgMTQ2LCA0OSwgMjgsIAorICAgIDE2LCAyMjYsIDEyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjYsIDEwLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyNDAsIDEwOSwgCisgICAgNDksIDI4LCAxNiwgMjI5LCAyMDMsIDQ5LCAyOCwgMTYsIDIyNSwgMTU2LCA0OSwgMjgsIDE2LCAyMzQsIDEyLCAyNTQsIAorICAgIDE0OSwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDI1NCwgMTQ5LCA0OSwgMjgsIDE2LCAyMTgsIDEyMywgNDksIDI4LCAxNiwgCisgICAgMjQyLCAxMjMsIDQ5LCAyOCwgMTYsIDIzNSwgMTY0LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjYsIDIwNiwgMjI5LCA5NSwgCisgICAgNDksIDI4LCAxNiwgMjI2LCAxMTMsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNSwgMTU1LCA0OSwgMjgsIDE2LCAyMzMsIAorICAgIDI1NCwgNDksIDI4LCAxNiwgMjI1LCAxNTQsIDQ5LCAyOCwgMTYsIDIzMywgMjM2LCA0OSwgMjgsIDE2LCAyMjUsIDIwMSwgCisgICAgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIDIyOSwgOTYsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAKKyAgICAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyMTAsIDIxNSwgNDksIDI4LCAxNiwgMjU0LCA1OSwgMjI5LCA5NSwgNDksIAorICAgIDI4LCAxNiwgMjU0LCA2MCwgMjE3LCAxNzYsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxMCwgMjE2LCA0OSwgMjgsIDE2LCAKKyAgICAyMzMsIDIzNSwgNDksIDI4LCAxNiwgMjQ1LCAxNzMsIDQ5LCAyOCwgMTYsIDI1MCwgMTUwLCA0OSwgMjgsIDE2LCAyMzAsIAorICAgIDE5OCwgMjM1LCAxNjMsIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNSwgMTA2LCAyMjksIAorICAgIDk1LCA0OSwgMjgsIDE2LCAyMjQsIDE1OSwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI2LCAyMDMsIDQ5LCAyOCwgMTYsIDI1NCwgCisgICAgODQsIDQ5LCAyOCwgMTYsIDIzMiwgNTgsIDQ5LCAyOCwgMTYsIDIyNiwgMTAsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNiwgCisgICAgMTIsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgNjAsIDIyNiwgMTEsIDQ5LCAyOCwgMTYsIDIzMywgMTUzLCA0OSwgMjgsIAorICAgIDE2LCAyNTQsIDg1LCA0OSwgMjgsIDE2LCAyMTUsIDE5OSwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjQ1LCAxNzYsIDQ5LCAyOCwgCisgICAgMTYsIDIxNywgMTc4LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTcsIDE3MCwgNDksIDI4LCAxNiwgMjUwLCA4MCwgMjI5LCAKKyAgICA5NSwgNDksIDI4LCAxNiwgMjQ1LCAxMDYsIDQ5LCAyOCwgMTYsIDIyMSwgMTYwLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTEsIAorICAgIDE1MSwgMjM0LCAzNywgNDksIDI4LCAxNiwgMjE1LCAxOTYsIDQ5LCAyOCwgMTYsIDIyNCwgMTYwLCA0OSwgMjgsIDE2LCAKKyAgICAyMTUsIDIwMCwgNDksIDI4LCAxNiwgMjE1LCAxOTcsIDQ5LCAyOCwgMTYsIDIyNCwgMTU3LCA0OSwgMjgsIDE2LCAyMTUsIAorICAgIDE5NSwgNDksIDI4LCAxNiwgMjI0LCAxNTYsIDQ5LCAyOCwgMTYsIDI0MiwgMTU4LCA0OSwgMjgsIDE2LCAyNTQsIDE0LCA0OSwgCisgICAgMjgsIDE2LCAyNDUsIDYwLCAyNTQsIDE0LCA0OSwgMjgsIDE2LCAyMjYsIDEwNywgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjE2LCAKKyAgICAxODksIDI0NSwgNjksIDQ5LCAyOCwgMTYsIDIxNiwgMTg5LCAyNDUsIDI1LCA0OSwgMjgsIDE2LCAyMTYsIDE5MSwgMjU0LCAKKyAgICA2MywgNDksIDI4LCAxNiwgMjE2LCAxODQsIDIzNCwgMjQ3LCAyNTQsIDU1LCA0OSwgMjgsIDE2LCAyMzQsIDE5OSwgNDksIAorICAgIDI4LCAxNiwgMjQ1LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTEsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyMTEsIDExLCAKKyAgICAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyMTgsIDE0NSwgNDksIDI4LCAxNiwgMjM0LCAzOCwgMjU0LCA5NiwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyMDIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzMywgMjM4LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgCisgICAgMjU0LCAxNDksIDQ5LCAyOCwgMTYsIDIzMywgMjM4LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNTQsIDYyLCAyMjksIDk1LCAKKyAgICA0OSwgMjgsIDE2LCAyNTQsIDY0LCA0OSwgMjgsIDE2LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgMjE1LCAyMTAsIDQ5LCAyOCwgCisgICAgMTYsIDIxNiwgMjI0LCA0OSwgMjgsIDE2LCAyMzQsIDIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDI0NSwgMTM0LCAyNTAsIDcxLCAKKyAgICA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyNDYsIDQyLCAyNTAsIDcyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyMTUsIDIxMiwgCisgICAgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjE2LCAyMzQsIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIAorICAgIDIzNiwgNywgMjUwLCA3MSwgNDksIDI4LCAxNiwgMjQyLCAxNTksIDIyOSwgOTYsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDI0MiwgCisgICAgMTU5LCAyMjYsIDEsIDI1NCwgMTAsIDQ5LCAyOCwgMTYsIDI0MiwgMTU5LCAyMjYsIDEsIDI0OCwgMjksIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjI1LCA0OSwgMjgsIDE2LCAyNDcsIDIyNiwgMjI2LCAxLCAyNTQsIDExLCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyMjYsIDIyNiwgMSwgMjU0LCAxMSwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjQ3LCAyMjYsIDIyNiwgMSwgMjQ4LCAKKyAgICAyOSwgNDksIDI4LCAxNiwgMjE1LCAyMTYsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDQ5LCAyOCwgMTYsIDIzNiwgMTQsIDQ5LCAKKyAgICAyOCwgMTYsIDI0NywgMjQ2LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjI1LCAwLCAyNTQsIDE2LCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDIxMSwgMjU0LCAxMywgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDI1NCwgMTYsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMzEsIAorICAgIDM0LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjMxLCA0NSwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDI0MiwgMTYwLCA0OSwgCisgICAgMjgsIDE2LCAyNTQsIDIxMSwgMjQyLCAxNTcsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMjUsIDAsIDI0MiwgMTYwLCA0OSwgCisgICAgMjgsIDE2LCAyMzEsIDE1MSwgMjI0LCAxNjUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjU0LCAxNTEsIAorICAgIDIyNCwgMTY1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDI0OCwgMjgsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAKKyAgICAyMzEsIDE1MSwgMjU0LCAxNTEsIDI0OCwgMjgsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE1LCAyMDUsIAorICAgIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE1LCAyMTcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTYsIDIyOCwgCisgICAgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTYsIDIyOCwgMjMzLCAzNSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIAorICAgIDIzMSwgMTUxLCAyMzMsIDM1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIyNSwgMzksIDI0MCwgMTA3LCA0OSwgCisgICAgMjgsIDE2LCAyMzUsIDE2OSwgMjE2LCAyNTEsIDI0MCwgMTA4LCA0OSwgMjgsIDE2LCAyNTQsIDYwLCAyMTYsIDI1MSwgMjQwLCAKKyAgICAxMDgsIDQ5LCAyOCwgMTYsIDI0NCwgMTcyLCAyMTYsIDIyNSwgNDksIDI4LCAxNiwgMjQ0LCAxNzIsIDIzMCwgMTQzLCA0OSwgCisgICAgMjgsIDE2LCAyNDQsIDE3MiwgMjQ3LCAyMzAsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTQsIDEwLCAyNDAsIDEwNywgNDksIAorICAgIDI4LCAxNiwgMjMxLCAxNTEsIDIyNCwgMTY0LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIyNSwgMzksIDIxNiwgCisgICAgMjI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjQyLCAxNTUsIDIzMCwgMjYsIDI1NCwgNjMsIDQ5LCAyOCwgMTYsIDI0MiwgCisgICAgMTU1LCAyMzAsIDI2LCAyNDcsIDIwMCwgNDksIDI4LCAxNiwgMjQ1LCAxNDgsIDIzNCwgMjQ3LCAyNDMsIDIzNiwgMjEzLCAKKyAgICAxMjQsIDQ5LCAyOCwgMTYsIDIzNiwgMTMsIDQ5LCAyOCwgMTYsIDIzNiwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNTQsIAorICAgIDIyLCAyNDgsIDI3LCAyNDAsIDEwNiwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAxOTAsIDQ5LCAyOCwgMTYsIAorICAgIDI0MywgMjM2LCAyNDcsIDI0NCwgMjI5LCAyMDMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMjksIDE5OCwgMjQwLCAxMDcsIAorICAgIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjE5LCAxMDIsIAorICAgIDI0NywgMjQzLCAyNDgsIDMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjM0LCAxODIsIDQ5LCAyOCwgMTYsIAorICAgIDI0MywgMjM2LCAyNDcsIDI0NCwgMjEwLCAyMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMjgsIDIzNCwgCisgICAgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjI4LCAyMzQsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0MywgMjM2LCAyMzEsIDE5MSwgMjUwLCA3MywgMjQ3LCAyMzAsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMzEsIDE5MSwgCisgICAgMjUwLCA3MywgMjMwLCAxNDMsIDQ5LCAyOCwgMTYsIDI0NCwgMTIyLCAyMTksIDEwMiwgMjUwLCA3MywgMjE0LCA5LCA0OSwgCisgICAgMjgsIDE2LCAyNDMsIDIzNiwgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNywgMTc5LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjI5LCAKKyAgICA5NywgNDksIDI4LCAxNiwgMjUwLCA3NCwgMjA5LCAyNDksIDQ5LCAyOCwgMTYsIDI1MCwgNzQsIDIzNCwgMzYsIDQ5LCAyOCwgCisgICAgMTYsIDI1MCwgNzQsIDIxOSwgOSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0MCwgMTU0LCAyMTEsIDEwLCAyMTYsIDIyOSwgCisgICAgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NSwgMTQ5LCAyNTQsIDg2LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMTUsIDIwNiwgCisgICAgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIxNSwgMjA2LCA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjE2LCAyMjksIDQ5LCAyOCwgCisgICAgMTYsIDI0NywgMjM4LCAyNTQsIDY1LCAyNDYsIDQyLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIzMCwgMTQxLCAKKyAgICAyMTYsIDIzMywgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyNDcsIDIyMiwgMjQ1LCAzNiwgMjQ3LCAxMzksIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMTUsIDIxNCwgMjI2LCAyMTEsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAKKyAgICAyNTQsIDY1LCAyNDYsIDQyLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMCwgMjMwLCAxNDEsIDIxNiwgMjMzLCAyNDcsIAorICAgIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMCwgMjQ3LCAyMjIsIDI0NSwgMzYsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIAorICAgIDEwLCAyMTUsIDIxNCwgMjI2LCAyMTEsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyNDMsIDQ5LCAyNDcsIDIzNywgNDksIDI4LCAKKyAgICAxNiwgMjQzLCA0OSwgMjExLCA5LCA0OSwgMjgsIDE2LCAyNDcsIDI0NSwgMjU0LCA2NSwgMjMwLCAxOTksIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjQ1LCAyNTQsIDY1LCAyMzEsIDczLCA0OSwgMjgsIDE2LCAyNDcsIDI0NSwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjQ1LCAyMTYsIDE4MiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDIxNiwgMTgyLCA0OSwgMjgsIDE2LCAyMTksIDE2MywgCisgICAgMjE2LCAxODMsIDI0NywgMTg2LCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjE2LCAxODMsIDIxNSwgMjA3LCA0OSwgMjgsIDE2LCAKKyAgICAyMTksIDE2MywgMjE2LCAxODMsIDIxNiwgMjIyLCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDQsIDQ5LCAyOCwgMTYsIAorICAgIDIxOSwgMTYzLCAyNTMsIDI0NSwgMjQ3LCAxODYsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyNTMsIDI0NSwgMjE1LCAyMDcsIAorICAgIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyNTMsIDI0NSwgMjE2LCAyMjIsIDQ5LCAyOCwgMTYsIDI0NywgMjIzLCAyNDMsIDMwLCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDIyOSwgMjI2LCAxMzQsIDQ5LCAyOCwgMTYsIDIxOCwgMTM3LCA0OSwgMjgsIDE2LCAyNTQsIDcsIAorICAgIDE5MCwgNDksIDI4LCAxNiwgMjU0LCA3LCAyMTMsIDEyNCwgNDksIDI4LCAxNiwgMjU0LCA3LCAyNDMsIDEzNSwgNDksIDI4LCAKKyAgICAxNiwgMjU0LCA3LCAyNDgsIDMsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjM0LCAxODIsIDQ5LCAyOCwgMTYsIDI1NCwgNywgCisgICAgMjEwLCAyMywgNDksIDI4LCAxNiwgMjU0LCA3LCAyMjgsIDIzMywgNDksIDI4LCAxNiwgMjM0LCAxNjIsIDIyOSwgOTYsIAorICAgIDIzMSwgNDQsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAyMjksIDk2LCAyMzEsIDQ0LCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgCisgICAgMjI5LCA5NiwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAyMjksIDk2LCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAzOCwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDI0MiwgMTU5LCAyMjksIDk2LCAyMzQsIDE5NiwgMjgsIDE2LCAyMTksIAorICAgIDE1NSwgMjUyLCAxMzUsIDI4LCAxNiwgNTIsIDI1MiwgMTM1LCAyOCwgMTYsIDQwLCAyNTIsIDEzNSwgMjgsIDE2LCAyMjMsIAorICAgIDUwLCA0MCwgMjUyLCAxMzUsIDI4LCAxNiwgMjQ4LCAxNTUsIDI1MiwgMTM1LCAyOCwgMTYsIDIxOSwgMjUxLCAyNTIsIDEzNSwgCisgICAgMjgsIDE2LCA0MywgMjIzLCA3NywgNTAsIDI4LCAxNiwgNDQsIDIyMywgNzcsIDUwLCAyOCwgMTYsIDIyMywgNzcsIDI0NywgCisgICAgMTE4LCAyOCwgMTYsIDI0OCwgMTk2LCAyMjEsIDE2MywgMjgsIDE2LCAyNDgsIDIyMiwgMjUwLCAyNDksIDI4LCAxNiwgMjIxLCAKKyAgICAxNjMsIDI4LCAxNiwgMjQ5LCAyMzQsIDI4LCAxNiwgMjIzLCA3NSwgMjQ0LCAxMTEsIDI4LCAxNiwgMjIzLCA3NSwgMjQ0LCAKKyAgICAxMTAsIDI4LCAxNiwgMjIzLCA3NSwgMjQ0LCAxMDksIDI4LCAxNiwgMjQ0LCAxMzEsIDI4LCAxNiwgMjQ0LCAxMzIsIDUxLCAKKyAgICAyOCwgMTYsIDI1MSwgMTQ4LCA3OCwgMjgsIDE2LCAyNTEsIDI0LCAyOCwgMTYsIDI1MSwgMTU5LCAyOCwgMTYsIDEyNywgMjgsIAorICAgIDE2LCAyMjYsIDE5MywgMjE4LCAxNjMsIDI4LCAxNiwgMjE1LCA1NywgMjE4LCAxNjMsIDI4LCAxNiwgMjE2LCAxNDIsIDIxOCwgCisgICAgMTYzLCAyOCwgMTYsIDI0NCwgMTAsIDIxOCwgMTYzLCAyOCwgMTYsIDI0NCwgODAsIDIxOCwgMTYzLCAyOCwgMTYsIDIxOSwgCisgICAgMTI0LCAyMTgsIDE2MywgMjgsIDE2LCAyMTksIDEyMiwgMjQzLCAyNTAsIDI4LCAxNiwgMjQ0LCA4LCAyNDMsIDI1MCwgMjgsIAorICAgIDE2LCAyNDMsIDIwMywgMjUwLCAxNCwgMjgsIDE2LCAyNDMsIDIwMywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1NCwgMTQyLCAyOCwgCisgICAgMTYsIDI0MywgMjAzLCAyNTAsIDE1LCAyMjYsIDEzNiwgMjUyLCAxMjIsIDI4LCAxNiwgMjUxLCA2NywgMjUwLCAxNCwgMjgsIAorICAgIDE2LCAyNDUsIDcsIDI1MCwgMTQsIDI4LCAxNiwgMjQ1LCA3LCAyNTAsIDE1LCAyMjYsIDEzNiwgMjU0LCAxNDIsIDI4LCAxNiwgCisgICAgMjQ1LCA3LCAyNTAsIDE1LCAyMjYsIDEzNiwgMjUyLCAxMjIsIDI4LCAxNiwgMjQ2LCA4MywgMjUwLCAxMywgMjgsIDE2LCAKKyAgICAyNDYsIDgzLCAyNTAsIDEyLCAyOCwgMTYsIDIzMCwgODUsIDIzMSwgOTAsIDIyMywgNjEsIDI4LCAxNiwgNTIsIDIyMCwgNzUsIAorICAgIDI4LCAxNiwgNTIsIDI0NCwgNjUsIDI4LCAxNiwgMjQ0LCA2NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjQ0LCA2NiwgMjQ2LCAKKyAgICAxMDYsIDI4LCAxNiwgMjI5LCAxODgsIDIxNCwgMTYzLCAyOCwgMTYsIDIyOSwgMTg4LCAyNDYsIDEwNiwgMjgsIDE2LCAyMjAsIAorICAgIDc2LCAyMTQsIDE2MywgMjgsIDE2LCAyMjAsIDc2LCAyNDYsIDEwNiwgMjgsIDE2LCAyMjQsIDIyLCAxMzgsIDIyMCwgNzUsIAorICAgIDI4LCAxNiwgMjI0LCAyMiwgMTM4LCAyNDQsIDY1LCAyOCwgMTYsIDI0OSwgMjE2LCAyMTYsIDg3LCAyOCwgMTYsIDI0OSwgCisgICAgODUsIDIxNiwgODcsIDI4LCAxNiwgMjI2LCAxMzYsIDI1NCwgMTQyLCAyOCwgMTYsIDIyNiwgMTM2LCAyNTIsIDEyMiwgMjgsIAorICAgIDE2LCAyMjQsIDQsIDI1NCwgMTQyLCAyOCwgMTYsIDIyNCwgNCwgMjUyLCAxMjIsIDI4LCAxNiwgMjMwLCA4OCwgMjIzLCA2MSwgCisgICAgMjgsIDE2LCAyMTEsIDI1MSwgMjIzLCA2MSwgMjgsIDE2LCAxNjMsIDIyMywgNjEsIDI4LCAxNiwgMjI0LCAyMiwgMjIzLCAKKyAgICA2MSwgMjgsIDE2LCAyNDUsIDE4OSwgMjIzLCA2MSwgMjgsIDE2LCAyMTksIDExOCwgMjIzLCA2MSwgMjgsIDE2LCAyMTYsIAorICAgIDE2MCwgMjIzLCA2MSwgMjgsIDE2LCAyMTksIDExMCwgMjIzLCA2MSwgMjgsIDE2LCAxMjMsIDI0MCwgMjExLCAyMTUsIDcxLCAKKyAgICAyMjMsIDYxLCAyOCwgMTYsIDIxMSwgMTc5LCAyMjgsIDQzLCAyOCwgMTYsIDk2LCAyMjgsIDQzLCAyOCwgMTYsIDI1MCwgMzYsIAorICAgIDIxMSwgMTc5LCAyMjgsIDQzLCAyOCwgMTYsIDQyLCAyMjgsIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCA0MiwgMjI4LCA0NCwgCisgICAgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyMCwgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjYsIAorICAgIDIyOCwgNDQsIDEyMCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDQzLCAyMTEsIDI1MywgMjgsIDE2LCAKKyAgICAyMTUsIDIyNiwgMjI4LCA0NCwgNDMsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0NCwgMjExLCAyNTMsIAorICAgIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDQ0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTI0LCAKKyAgICAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTI0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgCisgICAgMjI4LCA0NCwgMTIwLCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyMCwgNDQsIDI1MSwgMjIxLCAKKyAgICAyOCwgMTYsIDIzMCwgMTI5LCAyMjgsIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMzAsIDEyOSwgMjI4LCA0NCwgMjUxLCAyMjEsIAorICAgIDI4LCAxNiwgMjE1LCAyMjMsIDIyOCwgNDQsIDEyNCwgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjMsIDIyOCwgNDQsIDEyNCwgCisgICAgMjUxLCAyMjEsIDI4LCAxNiwgMjI2LCA0LCAyMjgsIDQzLCAyOCwgMTYsIDIxMywgMTMyLCAyMjgsIDQzLCAyOCwgMTYsIAorICAgIDIyOCwgNDQsIDI1MSwgMjIxLCAyOCwgMTYsIDIyNywgMjAzLCAyMjgsIDQzLCAyOCwgMTYsIDI0OSwgMjQxLCAyMjgsIDQ0LCAKKyAgICAyMTEsIDI1MywgMjgsIDE2LCAyNDksIDI0MSwgMjI4LCA0NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjUxLCAxNDYsIDI4LCAxNiwgCisgICAgMjExLCAyNTEsIDIyOCwgNDcsIDI4LCAxNiwgMTYzLCAyMjgsIDQ3LCAyOCwgMTYsIDIyNCwgMjIsIDIyOCwgNDcsIDI4LCAKKyAgICAxNiwgMjQ1LCAxODksIDIyOCwgNDcsIDI4LCAxNiwgMjE5LCAxMTgsIDIyOCwgNDcsIDI4LCAxNiwgMjE2LCAxNjAsIDIyOCwgCisgICAgNDcsIDI4LCAxNiwgMjE5LCAxMTAsIDIyOCwgNDcsIDI4LCAxNiwgMTIzLCAyNDAsIDIxMSwgMjE1LCA3MSwgMjI4LCA0NywgCisgICAgMjgsIDE2LCAzOCwgMjE4LCAxMzksIDI4LCAxNiwgMzgsIDIxOCwgMjQwLCAyMTgsIDEzOSwgMjgsIDE2LCAzOCwgMjE1LCAKKyAgICAyMzQsIDI4LCAxNiwgMzgsIDIxNSwgMjMzLCAyOCwgMTYsIDM4LCAyMTUsIDIzMiwgMjgsIDE2LCAyNDQsIDEwMSwgMjE1LCAKKyAgICAyMzQsIDI4LCAxNiwgMjQ0LCAxMDEsIDIxNSwgMjMzLCAyOCwgMTYsIDI0NCwgMTAxLCAyMTUsIDIzMiwgMjgsIDE2LCAzOCwgCisgICAgMjUzLCAxODksIDI0NywgMTIwLCAyOCwgMTYsIDM4LCAyNDQsIDcyLCAyOCwgMTYsIDM4LCAyNDQsIDcxLCAyOCwgMTYsIDM4LCAKKyAgICAyNDQsIDcwLCAyOCwgMTYsIDM4LCAyNDQsIDY5LCAyOCwgMTYsIDM4LCAyNDQsIDY4LCAyOCwgMTYsIDI1MiwgNTgsIDI1MiwgCisgICAgNzQsIDI4LCAxNiwgMjQ1LCAxNDMsIDI1MiwgNzQsIDI4LCAxNiwgMjUyLCA1OCwgMjE2LCAxMTEsIDI4LCAxNiwgMjQ1LCAKKyAgICAxNDMsIDIxNiwgMTExLCAyOCwgMTYsIDI1MiwgNTgsIDIxOSwgODAsIDI4LCAxNiwgMjQ1LCAxNDMsIDIxOSwgODAsIDI4LCAKKyAgICAxNiwgMjUyLCA1OCwgMjI1LCAxMTUsIDI4LCAxNiwgMjQ1LCAxNDMsIDIyNSwgMTE1LCAyOCwgMTYsIDM4LCAyNTUsIDE0LCAKKyAgICAyOCwgMTYsIDM4LCAyMTgsIDE2NSwgMjgsIDE2LCAzOCwgMjE2LCAyMzgsIDI4LCAxNiwgMzgsIDIxOCwgMTY2LCAyOCwgMTYsIAorICAgIDM4LCAyMzEsIDE2MiwgMjgsIDE2LCAzOCwgMjMxLCAxNjEsIDI4LCAxNiwgMzgsIDI1NSwgMTMsIDI4LCAxNiwgMzgsIDIzMiwgCisgICAgMTEyLCAyOCwgMTYsIDI1MywgMjU0LCAyMTQsIDE2MywgMjgsIDE2LCAyNTMsIDI1NCwgMjQ2LCAxMDYsIDI4LCAxNiwgMzgsIAorICAgIDI0NywgMTM1LCAyOCwgMTYsIDM4LCAyMjIsIDIzMSwgMjgsIDE2LCAzOCwgMjQ0LCA1OCwgMjgsIDE2LCAzOCwgMjE5LCA3NiwgCisgICAgMjgsIDE2LCAzOCwgMjUyLCAzOCwgMjgsIDE2LCAzOCwgNTIsIDIxNiwgMTksIDI4LCAxNiwgMzgsIDIxNSwgMjExLCAyMTYsIAorICAgIDE5LCAyOCwgMTYsIDIyMiwgMjM1LCAyOCwgMTYsIDIxOCwgNzUsIDI4LCAxNiwgMjEwLCAxNTksIDI4LCAxNiwgMjI1LCAKKyAgICAxMDcsIDI4LCAxNiwgMjMxLCAyNSwgMjgsIDE2LCAyNDQsIDE3LCAyOCwgMTYsIDI0OSwgMTM4LCAyOCwgMTYsIDI0OCwgNzgsIAorICAgIDI4LCAxNiwgMjQyLCAxNTAsIDIyOCwgNDgsIDIxOSwgOTUsIDI4LCAxNiwgMjQyLCAxNTAsIDIyOCwgNDgsIDIyOCwgNzUsIAorICAgIDIxOSwgOTUsIDI4LCAxNiwgMjE2LCAwLCAyOCwgMTYsIDIxNSwgOTUsIDI4LCAxNiwgMjM1LCAxOTMsIDIxNSwgOTUsIDI4LCAKKyAgICAxNiwgMjE1LCA5NiwgMjE5LCA5NSwgMjgsIDE2LCAyMTUsIDk2LCAyMTQsIDE2MywgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAKKyAgICAxMDIsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTksIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTgsIDI4LCAxNiwgMjI2LCAKKyAgICAxNDgsIDIxOCwgOTcsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTYsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTUsIDI4LCAKKyAgICAxNiwgMjI2LCAxNDgsIDIxOCwgOTQsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTMsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgCisgICAgOTIsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgMTAxLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDEwMCwgMjgsIDE2LCAyNDEsIAorICAgIDI0NSwgMjgsIDE2LCAyMjksIDEwNSwgMjgsIDE2LCAyNDUsIDE0MywgNjQsIDIxOCwgMTMzLCAyOCwgMTYsIDI0OCwgNzEsIAorICAgIDIxOSwgOTUsIDI4LCAxNiwgMzgsIDEyNCwgMjUxLCAxNjksIDI4LCAxNiwgMzgsIDEyMCwgMjUxLCAxNjksIDI4LCAxNiwgCisgICAgMzgsIDI0MiwgMCwgMjgsIDE2LCAzOCwgMjE5LCA2NywgMjI1LCA0MywgMjgsIDE2LCAyMjUsIDIxNiwgNzgsIDI4LCAxNiwgCisgICAgMjI1LCAyMTYsIDEyMCwgNzgsIDI4LCAxNiwgMTYzLCAyMjUsIDIxNiwgNzgsIDI4LCAxNiwgMjQyLCAxODIsIDIxNCwgMTYzLCAKKyAgICAyOCwgMTYsIDI0MiwgMTgyLCAyNDYsIDEwNiwgMjgsIDE2LCAyLCAyNDQsIDEwMCwgMjgsIDE2LCAyNDgsIDE4MCwgMjgsIAorICAgIDE2LCAyNDgsIDE4MSwgMjU0LCAxNTQsIDI4LCAxNiwgMjMxLCAxMzMsIDI4LCAxNiwgMjMyLCAxMjksIDI4LCAxNiwgMjUxLCAKKyAgICAxNDMsIDI4LCAxNiwgMjIwLCAxNTQsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTU0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMzAsIAorICAgIDE4NCwgMjgsIDE2LCAyMzAsIDE4NSwgMjUxLCAyMjEsIDI4LCAxNiwgMjIwLCAxNDgsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgCisgICAgMTQ4LCAyNTEsIDIyMSwgMjgsIDE2LCAyNDMsIDIyMCwgMjExLCAyNTMsIDI4LCAxNiwgMjQzLCAyMjAsIDI1MSwgMjIxLCAKKyAgICAyOCwgMTYsIDIzMiwgMTMwLCAyMjUsIDE4MCwgMjIzLCA2MSwgMjgsIDE2LCAyMzIsIDEzMCwgMjM2LCA0LCAyMjMsIDYxLCAKKyAgICAyOCwgMTYsIDI1MSwgMTQ0LCAyMjMsIDYxLCAyOCwgMTYsIDIyMCwgMTU0LCAyMjMsIDYxLCAyOCwgMTYsIDIzMCwgMTg1LCAKKyAgICAyMjMsIDYxLCAyOCwgMTYsIDIyMCwgMTQ4LCAyMjMsIDYxLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMjUsIDE3OCwgMjQ5LCAxMDcsIAorICAgIDIyNCwgMTc0LCAyMjUsIDE3OSwgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjM2LCAKKyAgICAzLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMjUsIDE3OCwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMjUsIDE4MCwgMjQ3LCAyMTEsIAorICAgIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMjUsIDE3OSwgMjgsIDE2LCAyMTYsIDI0OSwgCisgICAgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgMywgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgCisgICAgMjI0LCAxNzQsIDIzNiwgNCwgMjQ3LCAyMTEsIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAKKyAgICAyMzYsIDQsIDI0NywgMjEwLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjM2LCA0LCAKKyAgICAyNDcsIDIwOSwgMjgsIDE2LCAyNDksIDEzMywgMjgsIDE2LCAyNDIsIDEyNiwgMjUxLCA2NywgMjUwLCAxNCwgMjgsIDE2LCAKKyAgICAyNDIsIDEyNiwgMjQ1LCA3LCAyNTAsIDE0LCAyOCwgMTYsIDQyLCAyNTMsIDE1OCwgMjgsIDE2LCAyMTMsIDE1MSwgMjgsIAorICAgIDE2LCAyMjUsIDE0LCAyOCwgMTYsIDI1MCwgNSwgMjgsIDE2LCAyMjEsIDIwMywgMjgsIDE2LCAyNTAsIDksIDI4LCAxNiwgCisgICAgMjE2LCA3LCAyOCwgMTYsIDIyNCwgMjQyLCAyOCwgMTYsIDIyNCwgMjQzLCAyNDQsIDYwLCAyOCwgMTYsIDIyMSwgMjA0LCAKKyAgICAyNDQsIDYwLCAyOCwgMTYsIDIxNiwgOCwgMjIzLCA1OCwgMjgsIDE2LCAyMjUsIDE2MywgMjE4LCA2NiwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjI5LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTgsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIwOCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjAxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxOTMsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDE4NywgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTg2LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAxODUsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE4NCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjI4LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAyMjcsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyNiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMjI1LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjQsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyMywgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjIyLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjEsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIyMCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE5LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTcsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIxNiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE1LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMTQsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxMywgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTkyLCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAxOTEsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE5MCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMTg5LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxODgsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyOSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjE4LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDEsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDE5MywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg2LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxODUsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIyNywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjI2LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMjUsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjIxLCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMjAsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxOSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjE0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTMsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxMiwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjExLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTAsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDIwOSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjA3LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDYsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIwNSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjA0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMDMsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwMiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjAwLCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAxOTksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5OCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMTk3LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTYsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5NSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMTk0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTIsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDE5MSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTkwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxODksIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDE4OCwgMzgsIDI2LCAyOCwgMjE1LCAyMDgsIDM4LCAyNiwgMjgsIDIxNiwgMjIzLCAzOCwgMjYsIAorICAgIDI4LCAyMjUsIDE4OCwgMjYsIDI4LCAyMzMsIDMxLCAyMzAsIDE0MiwgMzEsIDI0NSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0MSwgCisgICAgMjIyLCAyNDUsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDAsIDIxNCwgMjQ1LCAyMjMsIDI0NywgMjI0LCAzMSwgMjQ1LCAyMjIsIAorICAgIDI0MSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0NSwgMjIyLCAyNDAsIDIxMywgMjQ3LCAyMjQsIDMxLCAyNDUsIDIyMywgMTgwLCAKKyAgICAzMSwgMjUwLCAxNzQsIDE4MCwgMzEsIDI0MywgMjI5LCAyNTAsIDM1LCAxODAsIDMxLCAyMzAsIDE3NywgMTgwLCAzMSwgCisgICAgMjUyLCAxMzAsIDE4MCwgMzEsIDIzNCwgMTc5LCAyMTksIDc5LCAxODAsIDMxLCAyNDksIDE3OSwgMTgwLCAzMSwgMjUzLCAKKyAgICAyMzMsIDE4MCwgMzEsIDIyNiwgMTYzLCAxODAsIDMxLCAyNTEsIDE1MywgMjI2LCAxMzAsIDE4MCwgMzEsIDI0OCwgNzMsIAorICAgIDE3NywgMjQ3LCAxNzksIDE4MCwgMzEsIDI0NywgMTc2LCAxODAsIDMxLCAyMTAsIDIyMiwgMTgwLCAzMSwgMjM1LCAyNDcsIAorICAgIDE4MCwgMzEsIDIyNSwgMTk3LCAxODAsIDMxLCAyMjMsIDEyNywgMTgwLCAzMSwgMjQ5LCAxODksIDE4MCwgMzEsIDI0MSwgCisgICAgNjAsIDI1MiwgMTg0LCAxODAsIDMxLCAyMTIsIDU5LCAxODAsIDMxLCAyNDQsIDM5LCAxODAsIDMxLCAyNTQsIDI0NiwgMTgwLCAKKyAgICAzMSwgMjIzLCA4OSwgMTgwLCAzMSwgMjIzLCA2NSwgMTgwLCAzMSwgMjQ1LCAyMjEsIDE4MCwgMzEsIDIzNSwgNTMsIDE4MCwgCisgICAgMzEsIDI0OSwgMTg0LCAxODAsIDMxLCAyNDUsIDE0MiwgMTgwLCAzMSwgMjQ2LCA1MiwgMTgwLCAzMSwgMjUwLCAxNDUsIAorICAgIDE4MCwgMzEsIDI0OCwgODIsIDE4MCwgMzEsIDIzLCAyMjMsIDY0LCAxODAsIDMxLCAyMjYsIDgxLCAxODAsIDMxLCAyMzMsIAorICAgIDM0LCAxODAsIDMxLCAyNDksIDI1NCwgMTgwLCAzMSwgMjM0LCA3NywgMTgwLCAzMSwgMjQzLCA4NiwgMTgwLCAzMSwgMjE4LCAKKyAgICAxMTIsIDE4MCwgMzEsIDIyNCwgMTMwLCAxODAsIDMxLCAyNDMsIDIyOCwgMTgwLCAzMSwgMjIzLCA2NiwgMTgwLCAzMSwgCisgICAgMjMzLCA3MSwgMTc3LCAyMzAsIDE1NywgMTgwLCAzMSwgMjIzLCA2MiwgMTgwLCAzMSwgMjQyLCAxNjgsIDIxNiwgNDIsIAorICAgIDIzMSwgNzYsIDE4MCwgMzEsIDI0NSwgMTQ0LCAxODAsIDMxLCAyMTgsIDEyNCwgMTgwLCAzMSwgMjQyLCAxMjgsIDE4MCwgCisgICAgMzEsIDI0NSwgMTM2LCAxODAsIDMxLCAyMjUsIDIzNSwgMTgwLCAzMSwgMjIyLCAyMjUsIDE4MCwgMzEsIDI0NCwgNTksIAorICAgIDE4MCwgMzEsIDIxNCwgOCwgMTc3LCAyMTIsIDQ0LCAxODAsIDMxLCAyNDksIDE5MywgMTgwLCAzMSwgMjMxLCA4OSwgMTgwLCAKKyAgICAzMSwgMjQ1LCA2MSwgMTgwLCAzMSwgMjE0LCAxNzIsIDE4MCwgMzEsIDI0NywgMjEyLCAxODAsIDMxLCAyNTAsIDAsIDIzMCwgCisgICAgMTEwLCAxODAsIDMxLCAyNDIsIDEwNiwgMTgwLCAzMSwgMjQzLCA4NywgMjM1LCAyNTUsIDE4MCwgMzEsIDIzMSwgMTQxLCAKKyAgICAxODAsIDMxLCAyNTUsIDEwLCAxODAsIDMxLCAyNDUsIDE1NywgMTgwLCAzMSwgMjQ2LCAxMDksIDE4MCwgMzEsIDIxMiwgNDIsIAorICAgIDE4MCwgMzEsIDIxOSwgMTUwLCAxODAsIDMxLCAyMzUsIDIyMiwgMTgwLCAzMSwgMjQ4LCA0MiwgMTgwLCAzMSwgMjQ4LCAKKyAgICAxNjAsIDE4MCwgMzEsIDI0NywgMjA4LCAxODAsIDMxLCAyNDUsIDI5LCAxODAsIDMxLCAyMjAsIDExNSwgMTgwLCAzMSwgCisgICAgMjE4LCAxMjgsIDE4MCwgMzEsIDI0MiwgMiwgMTgwLCAzMSwgMjQ5LCAyMTIsIDE4MCwgMzEsIDI0OSwgMjUxLCAxODAsIDMxLCAKKyAgICAyNDQsIDE3NywgMTgwLCAzMSwgMjU0LCAyMTIsIDE4MCwgMzEsIDI0OSwgMjExLCAxODAsIDMxLCAyMjYsIDE5NywgMjE2LCAKKyAgICAxOTYsIDIxMywgMjQyLCAxODAsIDMxLCAyNDcsIDIzMiwgMTgwLCAzMSwgMjMzLCAxMjQsIDE4MCwgMzEsIDI0NCwgMTMsIAorICAgIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxMTAsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAKKyAgICAxMDUsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxNTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIAorICAgIDIxLCAxNjEsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxODksIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAKKyAgICAxNzQsIDIxLCAxOTQsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxOTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgCisgICAgMjE0LCAxNzQsIDIxLCAxOTUsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAyMDAsIDI0OSwgMTQ5LCAyMjIsIAorICAgIDIwMiwgMjE2LCAyNDMsIDIxLCAxMTAsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxMDUsIDI0OSwgMTQ5LCAKKyAgICAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxNTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxNjEsIDI0OSwgCisgICAgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxODksIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxOTQsIAorICAgIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxOTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAKKyAgICAxOTUsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAyMDAsIDExLCAyMywgNiwgNjEsIDExLCAyMywgNiwgCisgICAgMjUzLCAxNTgsIDExLCAyMywgNiwgMjUxLCA2NiwgMTEsIDIzLCA2LCAyNDksIDYwLCAxMSwgMjMsIDYsIDc1LCAxMSwgMjMsIAorICAgIDYsIDI0NSwgNiwgMTEsIDIzLCA2LCAyNDMsIDIwMiwgMTEsIDIzLCA2LCAyNDIsIDYwLCAxMSwgMjMsIDYsIDczLCAxMSwgCisgICAgMjMsIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIDYsIDIzNSwgMjMsIDExLCAyMywgNiwgMTU2LCAxMSwgMjMsIDYsIDE5MywgMTEsIAorICAgIDIzLCA2LCAyMzAsIDI1LCAxMSwgMjMsIDYsIDc2LCAxMSwgMjMsIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDYsIDIyNCwgOTYsIAorICAgIDExLCAyMywgNiwgMTUzLCAxMSwgMjMsIDYsIDIyMiwgOTEsIDExLCAyMywgNiwgMjE3LCAxNTIsIDExLCAyMywgNiwgNzAsIAorICAgIDExLCAyMywgNiwgMjE0LCAxMDUsIDExLCAyMywgNiwgMjEyLCA5OCwgMTEsIDIzLCA2LCAyMTEsIDE3OCwgMTEsIDIzLCA2LCAKKyAgICAyMTEsIDExNywgMTEsIDIzLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCA0LCA2MSwgMTEsIDIzLCA0LCAyNTMsIDE1OCwgMTEsIAorICAgIDIzLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDQsIDI0OSwgNjAsIDExLCAyMywgNCwgNzUsIDExLCAyMywgNCwgMjQ1LCA2LCAxMSwgCisgICAgMjMsIDQsIDI0MywgMjAyLCAxMSwgMjMsIDQsIDI0MiwgNjAsIDExLCAyMywgNCwgNzMsIDExLCAyMywgNCwgMjM1LCAxNDQsIAorICAgIDExLCAyMywgNCwgMjM1LCAyMywgMTEsIDIzLCA0LCAxNTYsIDExLCAyMywgNCwgMTkzLCAxMSwgMjMsIDQsIDIzMCwgMjUsIAorICAgIDExLCAyMywgNCwgNzYsIDExLCAyMywgNCwgMjI2LCAxMDUsIDExLCAyMywgNCwgMjI0LCA5NiwgMTEsIDIzLCA0LCAxNTMsIAorICAgIDExLCAyMywgNCwgMjIyLCA5MSwgMTEsIDIzLCA0LCAyMTcsIDE1MiwgMTEsIDIzLCA0LCA3MCwgMTEsIDIzLCA0LCAyMTQsIAorICAgIDEwNSwgMTEsIDIzLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDQsIDIxMSwgMTE3LCAxMSwgCisgICAgMjMsIDQsIDIxMCwgMTU5LCAxMSwgMzIsIDYsIDYxLCAxMSwgMzIsIDYsIDI1MywgMTU4LCAxMSwgMzIsIDYsIDI1MSwgNjYsIAorICAgIDExLCAzMiwgNiwgMjQ5LCA2MCwgMTEsIDMyLCA2LCA3NSwgMTEsIDMyLCA2LCAyNDUsIDYsIDExLCAzMiwgNiwgMjQzLCAKKyAgICAyMDIsIDExLCAzMiwgNiwgMjQyLCA2MCwgMTEsIDMyLCA2LCA3MywgMTEsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDMyLCA2LCAKKyAgICAyMzUsIDIzLCAxMSwgMzIsIDYsIDE1NiwgMTEsIDMyLCA2LCAxOTMsIDExLCAzMiwgNiwgMjMwLCAyNSwgMTEsIDMyLCA2LCAKKyAgICA3NiwgMTEsIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMzIsIDYsIDE1MywgMTEsIDMyLCA2LCAKKyAgICAyMjIsIDkxLCAxMSwgMzIsIDYsIDIxNywgMTUyLCAxMSwgMzIsIDYsIDcwLCAxMSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzIsIAorICAgIDYsIDIxMiwgOTgsIDExLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzMiwgNiwgMjExLCAxMTcsIDExLCAzMiwgNiwgMjEwLCAKKyAgICAxNTksIDExLCAzMiwgNCwgNjEsIDExLCAzMiwgNCwgMjUzLCAxNTgsIDExLCAzMiwgNCwgMjUxLCA2NiwgMTEsIDMyLCA0LCAKKyAgICAyNDksIDYwLCAxMSwgMzIsIDQsIDc1LCAxMSwgMzIsIDQsIDI0NSwgNiwgMTEsIDMyLCA0LCAyNDMsIDIwMiwgMTEsIDMyLCAKKyAgICA0LCA3MywgMTEsIDMyLCA0LCAyMzUsIDE0NCwgMTEsIDMyLCA0LCAyMzUsIDIzLCAxMSwgMzIsIDQsIDE1NiwgMTEsIDMyLCAKKyAgICA0LCAxOTMsIDExLCAzMiwgNCwgMjMwLCAyNSwgMTEsIDMyLCA0LCA3NiwgMTEsIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDMyLCAKKyAgICA0LCAyMjQsIDk2LCAxMSwgMzIsIDQsIDE1MywgMTEsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMzIsIDQsIDIxNywgMTUyLCAxMSwgCisgICAgMzIsIDQsIDcwLCAxMSwgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzIsIDQsIDIxMiwgOTgsIDExLCAzMiwgNCwgMjExLCAxNzgsIAorICAgIDExLCAzMiwgNCwgMjExLCAxMTcsIDExLCAzMiwgNCwgMjEwLCAxNTksIDExLCAyMywgMzIsIDYsIDYxLCAxMSwgMjMsIDMyLCAKKyAgICA2LCAyNTMsIDE1OCwgMTEsIDIzLCAzMiwgNiwgMjUxLCA2NiwgMTEsIDIzLCAzMiwgNiwgMjQ5LCA2MCwgMTEsIDIzLCAzMiwgCisgICAgNiwgNzUsIDExLCAyMywgMzIsIDYsIDI0NSwgNiwgMTEsIDIzLCAzMiwgNiwgMjQzLCAyMDIsIDExLCAyMywgMzIsIDYsIAorICAgIDI0MiwgNjAsIDExLCAyMywgMzIsIDYsIDczLCAxMSwgMjMsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCAzMiwgNiwgMjM1LCAKKyAgICAyMywgMTEsIDIzLCAzMiwgNiwgMTU2LCAxMSwgMjMsIDMyLCA2LCAxOTMsIDExLCAyMywgMzIsIDYsIDIzMCwgMjUsIDExLCAKKyAgICAyMywgMzIsIDYsIDc2LCAxMSwgMjMsIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDIzLCAKKyAgICAzMiwgNiwgMTUzLCAxMSwgMjMsIDMyLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDMyLCA2LCAyMTcsIDE1MiwgMTEsIDIzLCAzMiwgCisgICAgNiwgNzAsIDExLCAyMywgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyMTEsIDE3OCwgMTEsIDIzLCAzMiwgNiwgMjExLCAxMTcsIDExLCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCAKKyAgICA0LCA2MSwgMTEsIDIzLCAzMiwgNCwgMjUzLCAxNTgsIDExLCAyMywgMzIsIDQsIDI1MSwgNjYsIDExLCAyMywgMzIsIDQsIAorICAgIDI0OSwgNjAsIDExLCAyMywgMzIsIDQsIDc1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDYsIDExLCAyMywgMzIsIDQsIDI0MywgCisgICAgMjAyLCAxMSwgMjMsIDMyLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDMyLCA0LCA3MywgMTEsIDIzLCAzMiwgNCwgMjM1LCAxNDQsIAorICAgIDExLCAyMywgMzIsIDQsIDIzNSwgMjMsIDExLCAyMywgMzIsIDQsIDE1NiwgMTEsIDIzLCAzMiwgNCwgMTkzLCAxMSwgMjMsIAorICAgIDMyLCA0LCAyMzAsIDI1LCAxMSwgMjMsIDMyLCA0LCA3NiwgMTEsIDIzLCAzMiwgNCwgMjI2LCAxMDUsIDExLCAyMywgMzIsIAorICAgIDQsIDIyNCwgOTYsIDExLCAyMywgMzIsIDQsIDE1MywgMTEsIDIzLCAzMiwgNCwgMjIyLCA5MSwgMTEsIDIzLCAzMiwgNCwgCisgICAgMjE3LCAxNTIsIDExLCAyMywgMzIsIDQsIDcwLCAxMSwgMjMsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNCwgMjEyLCAKKyAgICA5OCwgMTEsIDIzLCAzMiwgNCwgMjExLCAxNzgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDExOSwgNiwgNjEsIDExLCAxMTksIDYsIDI1MSwgNjYsIDExLCAxMTksIDYsIDI0OSwgNjAsIDExLCAxMTksIAorICAgIDYsIDI0MywgMjAyLCAxMSwgMTE5LCA2LCAyMzUsIDE0NCwgMTEsIDExOSwgNiwgMjM1LCAyMywgMTEsIDExOSwgNiwgMjMwLCAKKyAgICAyNSwgMTEsIDExOSwgNiwgNzYsIDExLCAxMTksIDYsIDIyNiwgMTA1LCAxMSwgMTE5LCA2LCAyMjQsIDk2LCAxMSwgMTE5LCAKKyAgICA2LCAyMjIsIDkxLCAxMSwgMTE5LCA2LCAyMTcsIDE1MiwgMTEsIDExOSwgNiwgNzAsIDExLCAxMTksIDYsIDIxNCwgMTA1LCAKKyAgICAxMSwgMTE5LCA2LCAyMTIsIDk4LCAxMSwgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDExOSwgNiwgMjExLCAxMTcsIDExLCAxMTksIAorICAgIDYsIDIxMCwgMTU5LCAxMSwgMTE5LCA0LCA2MSwgMTEsIDExOSwgNCwgMjUzLCAxNTgsIDExLCAxMTksIDQsIDI1MSwgNjYsIAorICAgIDExLCAxMTksIDQsIDI0OSwgNjAsIDExLCAxMTksIDQsIDI0NSwgNiwgMTEsIDExOSwgNCwgMjQyLCA2MCwgMTEsIDExOSwgNCwgCisgICAgNzMsIDExLCAxMTksIDQsIDIzNSwgMTQ0LCAxMSwgMTE5LCA0LCAyMzUsIDIzLCAxMSwgMTE5LCA0LCAxNTYsIDExLCAxMTksIAorICAgIDQsIDE5MywgMTEsIDExOSwgNCwgMjMwLCAyNSwgMTEsIDExOSwgNCwgMjI2LCAxMDUsIDExLCAxMTksIDQsIDIyNCwgOTYsIAorICAgIDExLCAxMTksIDQsIDE1MywgMTEsIDExOSwgNCwgMjIyLCA5MSwgMTEsIDExOSwgNCwgMjE3LCAxNTIsIDExLCAxMTksIDQsIAorICAgIDcwLCAxMSwgMTE5LCA0LCAyMTQsIDEwNSwgMTEsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDExOSwgNCwgMjExLCAxNzgsIDExLCAKKyAgICAxMTksIDQsIDIxMSwgMTE3LCAxMSwgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDIzLCAxMTksIDYsIDYxLCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjUzLCAxNTgsIDExLCAyMywgMTE5LCA2LCAyNTEsIDY2LCAxMSwgMjMsIDExOSwgNiwgMjQ5LCA2MCwgMTEsIDIzLCAKKyAgICAxMTksIDYsIDc1LCAxMSwgMjMsIDExOSwgNiwgMjQ1LCA2LCAxMSwgMjMsIDExOSwgNiwgMjQzLCAyMDIsIDExLCAyMywgCisgICAgMTE5LCA2LCAyNDIsIDYwLCAxMSwgMjMsIDExOSwgNiwgNzMsIDExLCAyMywgMTE5LCA2LCAyMzUsIDE0NCwgMTEsIDIzLCAKKyAgICAxMTksIDYsIDIzNSwgMjMsIDExLCAyMywgMTE5LCA2LCAxNTYsIDExLCAyMywgMTE5LCA2LCAxOTMsIDExLCAyMywgMTE5LCAKKyAgICA2LCAyMzAsIDI1LCAxMSwgMjMsIDExOSwgNiwgNzYsIDExLCAyMywgMTE5LCA2LCAyMjYsIDEwNSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIyNCwgOTYsIDExLCAyMywgMTE5LCA2LCAxNTMsIDExLCAyMywgMTE5LCA2LCAyMjIsIDkxLCAxMSwgMjMsIDExOSwgNiwgCisgICAgMjE3LCAxNTIsIDExLCAyMywgMTE5LCA2LCA3MCwgMTEsIDIzLCAxMTksIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDExOSwgNiwgCisgICAgMjEyLCA5OCwgMTEsIDIzLCAxMTksIDYsIDIxMSwgMTc4LCAxMSwgMjMsIDExOSwgNiwgMjExLCAxMTcsIDExLCAyMywgMTE5LCAKKyAgICA2LCAyMTAsIDE1OSwgMTEsIDIzLCAxMTksIDQsIDYxLCAxMSwgMjMsIDExOSwgNCwgMjUzLCAxNTgsIDExLCAyMywgMTE5LCAKKyAgICA0LCAyNTEsIDY2LCAxMSwgMjMsIDExOSwgNCwgMjQ5LCA2MCwgMTEsIDIzLCAxMTksIDQsIDc1LCAxMSwgMjMsIDExOSwgNCwgCisgICAgMjQ1LCA2LCAxMSwgMjMsIDExOSwgNCwgMjQzLCAyMDIsIDExLCAyMywgMTE5LCA0LCAyNDIsIDYwLCAxMSwgMjMsIDExOSwgCisgICAgNCwgNzMsIDExLCAyMywgMTE5LCA0LCAyMzUsIDE0NCwgMTEsIDIzLCAxMTksIDQsIDIzNSwgMjMsIDExLCAyMywgMTE5LCA0LCAKKyAgICAxNTYsIDExLCAyMywgMTE5LCA0LCAxOTMsIDExLCAyMywgMTE5LCA0LCAyMzAsIDI1LCAxMSwgMjMsIDExOSwgNCwgNzYsIAorICAgIDExLCAyMywgMTE5LCA0LCAyMjYsIDEwNSwgMTEsIDIzLCAxMTksIDQsIDIyNCwgOTYsIDExLCAyMywgMTE5LCA0LCAxNTMsIAorICAgIDExLCAyMywgMTE5LCA0LCAyMjIsIDkxLCAxMSwgMjMsIDExOSwgNCwgMjE3LCAxNTIsIDExLCAyMywgMTE5LCA0LCA3MCwgCisgICAgMTEsIDIzLCAxMTksIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgCisgICAgMTc4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAxMTcsIDExLCAyMywgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDEzMywgNiwgNjEsIAorICAgIDExLCAxMzMsIDYsIDI1MywgMTU4LCAxMSwgMTMzLCA2LCAyNDksIDYwLCAxMSwgMTMzLCA2LCA3NSwgMTEsIDEzMywgNiwgCisgICAgMjQ1LCA2LCAxMSwgMTMzLCA2LCAyNDMsIDIwMiwgMTEsIDEzMywgNiwgMjM1LCAxNDQsIDExLCAxMzMsIDYsIDIzNSwgMjMsIAorICAgIDExLCAxMzMsIDYsIDE1NiwgMTEsIDEzMywgNiwgMTkzLCAxMSwgMTMzLCA2LCAyMzAsIDI1LCAxMSwgMTMzLCA2LCA3NiwgCisgICAgMTEsIDEzMywgNiwgMjI2LCAxMDUsIDExLCAxMzMsIDYsIDIyNCwgOTYsIDExLCAxMzMsIDYsIDIyMiwgOTEsIDExLCAxMzMsIAorICAgIDYsIDIxNywgMTUyLCAxMSwgMTMzLCA2LCA3MCwgMTEsIDEzMywgNiwgMjE0LCAxMDUsIDExLCAxMzMsIDYsIDIxMiwgOTgsIAorICAgIDExLCAxMzMsIDYsIDIxMSwgMTc4LCAxMSwgMTMzLCA2LCAyMTEsIDExNywgMTEsIDEzMywgNCwgNjEsIDExLCAxMzMsIDQsIAorICAgIDI1MywgMTU4LCAxMSwgMTMzLCA0LCAyNTEsIDY2LCAxMSwgMTMzLCA0LCAyNDksIDYwLCAxMSwgMTMzLCA0LCA3NSwgMTEsIAorICAgIDEzMywgNCwgMjQ1LCA2LCAxMSwgMTMzLCA0LCAyNDMsIDIwMiwgMTEsIDEzMywgNCwgMjQyLCA2MCwgMTEsIDEzMywgNCwgCisgICAgNzMsIDExLCAxMzMsIDQsIDIzNSwgMTQ0LCAxMSwgMTMzLCA0LCAyMzUsIDIzLCAxMSwgMTMzLCA0LCAxNTYsIDExLCAxMzMsIAorICAgIDQsIDE5MywgMTEsIDEzMywgNCwgMjMwLCAyNSwgMTEsIDEzMywgNCwgNzYsIDExLCAxMzMsIDQsIDIyNiwgMTA1LCAxMSwgCisgICAgMTMzLCA0LCAyMjQsIDk2LCAxMSwgMTMzLCA0LCAxNTMsIDExLCAxMzMsIDQsIDIyMiwgOTEsIDExLCAxMzMsIDQsIDIxNywgCisgICAgMTUyLCAxMSwgMTMzLCA0LCA3MCwgMTEsIDEzMywgNCwgMjE0LCAxMDUsIDExLCAxMzMsIDQsIDIxMiwgOTgsIDExLCAxMzMsIAorICAgIDQsIDIxMSwgMTc4LCAxMSwgMTMzLCA0LCAyMTEsIDExNywgMTEsIDEzMywgNCwgMjEwLCAxNTksIDExLCAxMzksIDYsIDYxLCAKKyAgICAxMSwgMTM5LCA2LCAyNTMsIDE1OCwgMTEsIDEzOSwgNiwgMjQ5LCA2MCwgMTEsIDEzOSwgNiwgNzUsIDExLCAxMzksIDYsIAorICAgIDI0NSwgNiwgMTEsIDEzOSwgNiwgMjQzLCAyMDIsIDExLCAxMzksIDYsIDczLCAxMSwgMTM5LCA2LCAyMzUsIDE0NCwgMTEsIAorICAgIDEzOSwgNiwgMjM1LCAyMywgMTEsIDEzOSwgNiwgMTU2LCAxMSwgMTM5LCA2LCAxOTMsIDExLCAxMzksIDYsIDc2LCAxMSwgCisgICAgMTM5LCA2LCAyMjIsIDkxLCAxMSwgMTM5LCA2LCAyMTcsIDE1MiwgMTEsIDEzOSwgNiwgNzAsIDExLCAxMzksIDYsIDIxNCwgCisgICAgMTA1LCAxMSwgMTM5LCA2LCAyMTIsIDk4LCAxMSwgMTM5LCA2LCAyMTEsIDE3OCwgMTEsIDEzOSwgNiwgMjExLCAxMTcsIDExLCAKKyAgICAxMzksIDQsIDYxLCAxMSwgMTM5LCA0LCAyNTMsIDE1OCwgMTEsIDEzOSwgNCwgMjUxLCA2NiwgMTEsIDEzOSwgNCwgMjQ5LCAKKyAgICA2MCwgMTEsIDEzOSwgNCwgNzUsIDExLCAxMzksIDQsIDI0NSwgNiwgMTEsIDEzOSwgNCwgMjQzLCAyMDIsIDExLCAxMzksIDQsIAorICAgIDI0MiwgNjAsIDExLCAxMzksIDQsIDczLCAxMSwgMTM5LCA0LCAyMzUsIDE0NCwgMTEsIDEzOSwgNCwgMjM1LCAyMywgMTEsIAorICAgIDEzOSwgNCwgMTU2LCAxMSwgMTM5LCA0LCAxOTMsIDExLCAxMzksIDQsIDIzMCwgMjUsIDExLCAxMzksIDQsIDc2LCAxMSwgCisgICAgMTM5LCA0LCAyMjYsIDEwNSwgMTEsIDEzOSwgNCwgMjI0LCA5NiwgMTEsIDEzOSwgNCwgMTUzLCAxMSwgMTM5LCA0LCAyMjIsIAorICAgIDkxLCAxMSwgMTM5LCA0LCAyMTcsIDE1MiwgMTEsIDEzOSwgNCwgNzAsIDExLCAxMzksIDQsIDIxNCwgMTA1LCAxMSwgMTM5LCAKKyAgICA0LCAyMTIsIDk4LCAxMSwgMTM5LCA0LCAyMTEsIDE3OCwgMTEsIDEzOSwgNCwgMjExLCAxMTcsIDExLCAxMzksIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMjMsIDEzMywgNiwgNjEsIDExLCAyMywgMTMzLCA2LCAyNTMsIDE1OCwgMTEsIDIzLCAxMzMsIDYsIDI1MSwgCisgICAgNjYsIDExLCAyMywgMTMzLCA2LCAyNDksIDYwLCAxMSwgMjMsIDEzMywgNiwgNzUsIDExLCAyMywgMTMzLCA2LCAyNDUsIDYsIAorICAgIDExLCAyMywgMTMzLCA2LCAyNDMsIDIwMiwgMTEsIDIzLCAxMzMsIDYsIDI0MiwgNjAsIDExLCAyMywgMTMzLCA2LCA3MywgCisgICAgMTEsIDIzLCAxMzMsIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIDEzMywgNiwgMjM1LCAyMywgMTEsIDIzLCAxMzMsIDYsIDE1NiwgCisgICAgMTEsIDIzLCAxMzMsIDYsIDE5MywgMTEsIDIzLCAxMzMsIDYsIDIzMCwgMjUsIDExLCAyMywgMTMzLCA2LCA3NiwgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDEzMywgNiwgMjI0LCA5NiwgMTEsIDIzLCAxMzMsIDYsIDE1MywgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDIyMiwgOTEsIDExLCAyMywgMTMzLCA2LCAyMTcsIDE1MiwgMTEsIDIzLCAxMzMsIDYsIDcwLCAxMSwgMjMsIAorICAgIDEzMywgNiwgMjE0LCAxMDUsIDExLCAyMywgMTMzLCA2LCAyMTIsIDk4LCAxMSwgMjMsIDEzMywgNiwgMjExLCAxNzgsIDExLCAKKyAgICAyMywgMTMzLCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMzMsIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDEzMywgNCwgNjEsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyNTMsIDE1OCwgMTEsIDIzLCAxMzMsIDQsIDI1MSwgNjYsIDExLCAyMywgMTMzLCA0LCAyNDksIDYwLCAKKyAgICAxMSwgMjMsIDEzMywgNCwgNzUsIDExLCAyMywgMTMzLCA0LCAyNDUsIDYsIDExLCAyMywgMTMzLCA0LCAyNDMsIDIwMiwgMTEsIAorICAgIDIzLCAxMzMsIDQsIDI0MiwgNjAsIDExLCAyMywgMTMzLCA0LCA3MywgMTEsIDIzLCAxMzMsIDQsIDIzNSwgMTQ0LCAxMSwgCisgICAgMjMsIDEzMywgNCwgMjM1LCAyMywgMTEsIDIzLCAxMzMsIDQsIDE1NiwgMTEsIDIzLCAxMzMsIDQsIDE5MywgMTEsIDIzLCAKKyAgICAxMzMsIDQsIDIzMCwgMjUsIDExLCAyMywgMTMzLCA0LCA3NiwgMTEsIDIzLCAxMzMsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjI0LCA5NiwgMTEsIDIzLCAxMzMsIDQsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDIyMiwgOTEsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMTcsIDE1MiwgMTEsIDIzLCAxMzMsIDQsIDcwLCAxMSwgMjMsIDEzMywgNCwgMjE0LCAxMDUsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxNzgsIDExLCAyMywgMTMzLCA0LCAyMTEsIDExNywgMTEsIAorICAgIDIzLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDYsIDYxLCAxMSwgMzUsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDYsIDI1MSwgCisgICAgNjYsIDExLCAzNSwgNiwgMjQ5LCA2MCwgMTEsIDM1LCA2LCA3NSwgMTEsIDM1LCA2LCAyNDUsIDYsIDExLCAzNSwgNiwgMjQzLCAKKyAgICAyMDIsIDExLCAzNSwgNiwgMjQyLCA2MCwgMTEsIDM1LCA2LCA3MywgMTEsIDM1LCA2LCAyMzUsIDE0NCwgMTEsIDM1LCA2LCAKKyAgICAyMzUsIDIzLCAxMSwgMzUsIDYsIDE1NiwgMTEsIDM1LCA2LCAxOTMsIDExLCAzNSwgNiwgMjMwLCAyNSwgMTEsIDM1LCA2LCAKKyAgICA3NiwgMTEsIDM1LCA2LCAyMjYsIDEwNSwgMTEsIDM1LCA2LCAyMjQsIDk2LCAxMSwgMzUsIDYsIDE1MywgMTEsIDM1LCA2LCAKKyAgICAyMjIsIDkxLCAxMSwgMzUsIDYsIDIxNywgMTUyLCAxMSwgMzUsIDYsIDcwLCAxMSwgMzUsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIAorICAgIDYsIDIxMiwgOTgsIDExLCAzNSwgNiwgMjExLCAxNzgsIDExLCAzNSwgNiwgMjExLCAxMTcsIDExLCAzNSwgNiwgMjEwLCAKKyAgICAxNTksIDExLCAzNSwgNCwgNjEsIDExLCAzNSwgNCwgMjUzLCAxNTgsIDExLCAzNSwgNCwgMjUxLCA2NiwgMTEsIDM1LCA0LCAKKyAgICAyNDksIDYwLCAxMSwgMzUsIDQsIDc1LCAxMSwgMzUsIDQsIDI0NSwgNiwgMTEsIDM1LCA0LCAyNDMsIDIwMiwgMTEsIDM1LCAKKyAgICA0LCAyNDIsIDYwLCAxMSwgMzUsIDQsIDczLCAxMSwgMzUsIDQsIDIzNSwgMTQ0LCAxMSwgMzUsIDQsIDIzNSwgMjMsIDExLCAKKyAgICAzNSwgNCwgMTU2LCAxMSwgMzUsIDQsIDE5MywgMTEsIDM1LCA0LCAyMzAsIDI1LCAxMSwgMzUsIDQsIDc2LCAxMSwgMzUsIDQsIAorICAgIDIyNiwgMTA1LCAxMSwgMzUsIDQsIDIyNCwgOTYsIDExLCAzNSwgNCwgMTUzLCAxMSwgMzUsIDQsIDIyMiwgOTEsIDExLCAzNSwgCisgICAgNCwgMjE3LCAxNTIsIDExLCAzNSwgNCwgNzAsIDExLCAzNSwgNCwgMjE0LCAxMDUsIDExLCAzNSwgNCwgMjEyLCA5OCwgMTEsIAorICAgIDM1LCA0LCAyMTEsIDE3OCwgMTEsIDM1LCA0LCAyMTEsIDExNywgMTEsIDM1LCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgNiwgCisgICAgNjEsIDExLCAzNSwgMjMsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDIzLCA2LCAyNTEsIDY2LCAxMSwgMzUsIDIzLCA2LCAyNDksIAorICAgIDYwLCAxMSwgMzUsIDIzLCA2LCA3NSwgMTEsIDM1LCAyMywgNiwgMjQ1LCA2LCAxMSwgMzUsIDIzLCA2LCAyNDMsIDIwMiwgCisgICAgMTEsIDM1LCAyMywgNiwgMjQyLCA2MCwgMTEsIDM1LCAyMywgNiwgNzMsIDExLCAzNSwgMjMsIDYsIDIzNSwgMTQ0LCAxMSwgCisgICAgMzUsIDIzLCA2LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCA2LCAxNTYsIDExLCAzNSwgMjMsIDYsIDE5MywgMTEsIDM1LCAyMywgCisgICAgNiwgMjMwLCAyNSwgMTEsIDM1LCAyMywgNiwgNzYsIDExLCAzNSwgMjMsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyMjQsIDk2LCAxMSwgMzUsIDIzLCA2LCAxNTMsIDExLCAzNSwgMjMsIDYsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDYsIDIxNywgCisgICAgMTUyLCAxMSwgMzUsIDIzLCA2LCA3MCwgMTEsIDM1LCAyMywgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDYsIDIxMiwgOTgsIAorICAgIDExLCAzNSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDExNywgMTEsIDM1LCAyMywgNiwgMjEwLCAKKyAgICAxNTksIDExLCAzNSwgMjMsIDQsIDYxLCAxMSwgMzUsIDIzLCA0LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgNCwgMjUxLCA2NiwgCisgICAgMTEsIDM1LCAyMywgNCwgMjQ5LCA2MCwgMTEsIDM1LCAyMywgNCwgNzUsIDExLCAzNSwgMjMsIDQsIDI0NSwgNiwgMTEsIDM1LCAKKyAgICAyMywgNCwgMjQzLCAyMDIsIDExLCAzNSwgMjMsIDQsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDQsIDczLCAxMSwgMzUsIDIzLCAKKyAgICA0LCAyMzUsIDE0NCwgMTEsIDM1LCAyMywgNCwgMjM1LCAyMywgMTEsIDM1LCAyMywgNCwgMTU2LCAxMSwgMzUsIDIzLCA0LCAKKyAgICAxOTMsIDExLCAzNSwgMjMsIDQsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDQsIDc2LCAxMSwgMzUsIDIzLCA0LCAyMjYsIDEwNSwgCisgICAgMTEsIDM1LCAyMywgNCwgMjI0LCA5NiwgMTEsIDM1LCAyMywgNCwgMTUzLCAxMSwgMzUsIDIzLCA0LCAyMjIsIDkxLCAxMSwgCisgICAgMzUsIDIzLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAyMywgNCwgNzAsIDExLCAzNSwgMjMsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIAorICAgIDIzLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCA0LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxMTcsIDExLCAzNSwgCisgICAgMjMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCA2LCA2MSwgMTEsIDM1LCAzMiwgNiwgMjUzLCAxNTgsIDExLCAzNSwgMzIsIAorICAgIDYsIDI1MSwgNjYsIDExLCAzNSwgMzIsIDYsIDI0OSwgNjAsIDExLCAzNSwgMzIsIDYsIDc1LCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyNDUsIDYsIDExLCAzNSwgMzIsIDYsIDI0MywgMjAyLCAxMSwgMzUsIDMyLCA2LCAyNDIsIDYwLCAxMSwgMzUsIDMyLCA2LCAKKyAgICA3MywgMTEsIDM1LCAzMiwgNiwgMjM1LCAxNDQsIDExLCAzNSwgMzIsIDYsIDIzNSwgMjMsIDExLCAzNSwgMzIsIDYsIDE1NiwgCisgICAgMTEsIDM1LCAzMiwgNiwgMTkzLCAxMSwgMzUsIDMyLCA2LCAyMzAsIDI1LCAxMSwgMzUsIDMyLCA2LCA3NiwgMTEsIDM1LCAKKyAgICAzMiwgNiwgMjI2LCAxMDUsIDExLCAzNSwgMzIsIDYsIDIyNCwgOTYsIDExLCAzNSwgMzIsIDYsIDE1MywgMTEsIDM1LCAzMiwgCisgICAgNiwgMjIyLCA5MSwgMTEsIDM1LCAzMiwgNiwgMjE3LCAxNTIsIDExLCAzNSwgMzIsIDYsIDcwLCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyMTQsIDEwNSwgMTEsIDM1LCAzMiwgNiwgMjEyLCA5OCwgMTEsIDM1LCAzMiwgNiwgMjExLCAxNzgsIDExLCAzNSwgMzIsIDYsIAorICAgIDIxMSwgMTE3LCAxMSwgMzUsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNCwgNjEsIDExLCAzNSwgMzIsIDQsIDI1MywgCisgICAgMTU4LCAxMSwgMzUsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMzUsIDMyLCA0LCAyNDksIDYwLCAxMSwgMzUsIDMyLCA0LCA3NSwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjQ1LCA2LCAxMSwgMzUsIDMyLCA0LCAyNDMsIDIwMiwgMTEsIDM1LCAzMiwgNCwgMjQyLCA2MCwgCisgICAgMTEsIDM1LCAzMiwgNCwgNzMsIDExLCAzNSwgMzIsIDQsIDIzNSwgMTQ0LCAxMSwgMzUsIDMyLCA0LCAyMzUsIDIzLCAxMSwgCisgICAgMzUsIDMyLCA0LCAxNTYsIDExLCAzNSwgMzIsIDQsIDE5MywgMTEsIDM1LCAzMiwgNCwgMjMwLCAyNSwgMTEsIDM1LCAzMiwgCisgICAgNCwgNzYsIDExLCAzNSwgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMzUsIDMyLCA0LCAyMjQsIDk2LCAxMSwgMzUsIDMyLCA0LCAKKyAgICAxNTMsIDExLCAzNSwgMzIsIDQsIDIyMiwgOTEsIDExLCAzNSwgMzIsIDQsIDIxNywgMTUyLCAxMSwgMzUsIDMyLCA0LCA3MCwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDQsIDIxMiwgOTgsIDExLCAzNSwgMzIsIDQsIDIxMSwgMTc4LCAKKyAgICAxMSwgMzUsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAzMiwgNCwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDMyLCA2LCA2MSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUxLCA2NiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDYsIDI0OSwgNjAsIDExLCAzNSwgMjMsIDMyLCA2LCA3NSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgNiwgMTEsIDM1LCAyMywgCisgICAgMzIsIDYsIDI0MywgMjAyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQyLCA2MCwgMTEsIDM1LCAyMywgMzIsIDYsIDczLCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMTU2LCAxMSwgMzUsIDIzLCAzMiwgNiwgMTkzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjMwLCAyNSwgMTEsIDM1LCAyMywgMzIsIAorICAgIDYsIDc2LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMTUzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIyLCA5MSwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNywgMTUyLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNiwgNzAsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDIxMiwgOTgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxMSwgMTE3LCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDMyLCA0LCA2MSwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MywgCisgICAgMTU4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUxLCA2NiwgMTEsIDM1LCAyMywgMzIsIDQsIDI0OSwgNjAsIDExLCAzNSwgMjMsIAorICAgIDMyLCA0LCA3NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgNiwgMTEsIDM1LCAyMywgMzIsIDQsIDI0MywgMjAyLCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNCwgMjQyLCA2MCwgMTEsIDM1LCAyMywgMzIsIDQsIDczLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAKKyAgICAxNDQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMTU2LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMTkzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjMwLCAyNSwgMTEsIDM1LCAyMywgMzIsIDQsIDc2LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjI2LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjQsIDk2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMTUzLCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNCwgMjIyLCA5MSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNywgMTUyLCAxMSwgMzUsIDIzLCAzMiwgNCwgCisgICAgNzAsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMiwgOTgsIDExLCAzNSwgMjMsIAorICAgIDMyLCA0LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCAKKyAgICAxNTksIDExLCAyMzAsIDEzOCwgNiwgNjEsIDExLCAyMzAsIDEzOCwgNiwgMjUzLCAxNTgsIDExLCAyMzAsIDEzOCwgNiwgCisgICAgMjUxLCA2NiwgMTEsIDIzMCwgMTM4LCA2LCAyNDksIDYwLCAxMSwgMjMwLCAxMzgsIDYsIDc1LCAxMSwgMjMwLCAxMzgsIDYsIAorICAgIDI0NSwgNiwgMTEsIDIzMCwgMTM4LCA2LCAyNDMsIDIwMiwgMTEsIDIzMCwgMTM4LCA2LCAyNDIsIDYwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDczLCAxMSwgMjMwLCAxMzgsIDYsIDIzNSwgMTQ0LCAxMSwgMjMwLCAxMzgsIDYsIDIzNSwgMjMsIDExLCAyMzAsIAorICAgIDEzOCwgNiwgMTU2LCAxMSwgMjMwLCAxMzgsIDYsIDE5MywgMTEsIDIzMCwgMTM4LCA2LCAyMzAsIDI1LCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDc2LCAxMSwgMjMwLCAxMzgsIDYsIDIyNiwgMTA1LCAxMSwgMjMwLCAxMzgsIDYsIDIyNCwgOTYsIDExLCAyMzAsIAorICAgIDEzOCwgNiwgMTUzLCAxMSwgMjMwLCAxMzgsIDYsIDIyMiwgOTEsIDExLCAyMzAsIDEzOCwgNiwgMjE3LCAxNTIsIDExLCAKKyAgICAyMzAsIDEzOCwgNiwgNzAsIDExLCAyMzAsIDEzOCwgNiwgMjE0LCAxMDUsIDExLCAyMzAsIDEzOCwgNiwgMjEyLCA5OCwgMTEsIAorICAgIDIzMCwgMTM4LCA2LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTM4LCA2LCAyMTEsIDExNywgMTEsIDIzMCwgMTM4LCA2LCAyMTAsIAorICAgIDE1OSwgMTEsIDIzMCwgMTM4LCA0LCA2MSwgMTEsIDIzMCwgMTM4LCA0LCAyNTMsIDE1OCwgMTEsIDIzMCwgMTM4LCA0LCAKKyAgICAyNTEsIDY2LCAxMSwgMjMwLCAxMzgsIDQsIDI0OSwgNjAsIDExLCAyMzAsIDEzOCwgNCwgNzUsIDExLCAyMzAsIDEzOCwgNCwgCisgICAgMjQ1LCA2LCAxMSwgMjMwLCAxMzgsIDQsIDI0MywgMjAyLCAxMSwgMjMwLCAxMzgsIDQsIDI0MiwgNjAsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgNzMsIDExLCAyMzAsIDEzOCwgNCwgMjM1LCAxNDQsIDExLCAyMzAsIDEzOCwgNCwgMjM1LCAyMywgMTEsIDIzMCwgCisgICAgMTM4LCA0LCAxNTYsIDExLCAyMzAsIDEzOCwgNCwgMTkzLCAxMSwgMjMwLCAxMzgsIDQsIDIzMCwgMjUsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgNzYsIDExLCAyMzAsIDEzOCwgNCwgMjI2LCAxMDUsIDExLCAyMzAsIDEzOCwgNCwgMjI0LCA5NiwgMTEsIDIzMCwgCisgICAgMTM4LCA0LCAxNTMsIDExLCAyMzAsIDEzOCwgNCwgMjIyLCA5MSwgMTEsIDIzMCwgMTM4LCA0LCAyMTcsIDE1MiwgMTEsIAorICAgIDIzMCwgMTM4LCA0LCA3MCwgMTEsIDIzMCwgMTM4LCA0LCAyMTQsIDEwNSwgMTEsIDIzMCwgMTM4LCA0LCAyMTIsIDk4LCAxMSwgCisgICAgMjMwLCAxMzgsIDQsIDIxMSwgMTc4LCAxMSwgMjMwLCAxMzgsIDQsIDIxMSwgMTE3LCAxMSwgMjMwLCAxMzgsIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMzIsIDQsIDI0NywgMTE5LCA3MywgMTEsIDMyLCA0LCAyNDcsIDExOSwgMjM1LCAxNDQsIDExLCAyMywgNiwgCisgICAgMjU0LCAxNDMsIDExLCAyMywgNiwgMjUyLCAyNiwgMTEsIDIzLCA2LCAyNDMsIDEwNywgMTEsIDIzLCA2LCAyNDgsIDU0LCAKKyAgICAxMSwgMjMsIDYsIDI0NSwgMTAwLCAxMSwgMjMsIDYsIDIxMCwgODUsIDExLCAyMywgNiwgMjQ1LCA2MywgMTEsIDIzLCA2LCAKKyAgICAyMTYsIDE3OSwgMTEsIDIzLCA2LCAyMzUsIDE4NSwgMTEsIDIzLCA2LCAyMzQsIDIyMiwgMTEsIDIzLCA2LCAyMzMsIDk4LCAKKyAgICAxMSwgMjMsIDYsIDIzMCwgMTAyLCAxMSwgMjMsIDYsIDIyNywgMjM3LCAxMSwgMjMsIDYsIDIxMSwgMTU3LCAxMSwgMjMsIDYsIAorICAgIDIyNiwgMTk5LCAxMSwgMjMsIDYsIDIyNSwgMTA4LCAxMSwgMjMsIDYsIDIyMywgMzcsIDExLCAyMywgNiwgMjE2LCAxODAsIAorICAgIDg3LCAxMSwgMjMsIDYsIDIxOSwgMTc3LCAxMSwgMjMsIDYsIDIxNywgNDEsIDExLCAyMywgNiwgMjE0LCAxNTcsIDExLCAyMywgCisgICAgNiwgMjI1LCAxMzMsIDExLCAyMywgNiwgMjUwLCAxMTAsIDExLCAyMywgNiwgMjI0LCAxNjEsIDExLCAyMywgNiwgMjI2LCAKKyAgICAyMDEsIDExLCAyMywgMjI5LCAyMjEsIDExLCAyMywgNCwgMjU0LCAxNDMsIDExLCAyMywgNCwgMjUyLCAyNiwgMTEsIDIzLCAKKyAgICA0LCAyNDMsIDEwNywgMTEsIDIzLCA0LCAyNDgsIDU0LCAxMSwgMjMsIDQsIDI0NSwgMTAwLCAxMSwgMjMsIDQsIDIxMCwgODUsIAorICAgIDExLCAyMywgNCwgMjQ1LCA2MywgMTEsIDIzLCA0LCAyMTYsIDE3OSwgMTEsIDIzLCA0LCAyMzUsIDE4NSwgMTEsIDIzLCA0LCAKKyAgICAyMzQsIDIyMiwgMTEsIDIzLCA0LCAyMzMsIDk4LCAxMSwgMjMsIDQsIDIzMCwgMTAyLCAxMSwgMjMsIDQsIDIyNywgMjM3LCAKKyAgICAxMSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDQsIDIyNiwgMTk5LCAxMSwgMjMsIDQsIDIyNSwgMTA4LCAxMSwgMjMsIDQsIAorICAgIDIyMywgMzcsIDExLCAyMywgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMjMsIDQsIDIxOSwgMTc3LCAxMSwgMjMsIDQsIDIxNywgCisgICAgNDEsIDExLCAyMywgNCwgMjE0LCAxNTcsIDExLCAyMywgNCwgMjI1LCAxMzMsIDExLCAyMywgNCwgMjUwLCAxMTAsIDExLCAKKyAgICAyMywgNCwgMjI0LCAxNjEsIDExLCAyMywgNCwgMjI2LCAyMDEsIDExLCAyMywgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMjMsIAorICAgIDI0NSwgMTAxLCA4NywgMTEsIDIzLCAyMTYsIDE4MCwgODcsIDExLCAyMywgMjM0LCAyMjMsIDg3LCAxMSwgMjMsIDIyNSwgCisgICAgMTM0LCA4NywgMTEsIDIzLCAyMjMsIDM4LCA4NywgMTEsIDIzLCAyMjUsIDEwOSwgODcsIDExLCAzMiwgNiwgMjU0LCAxNDMsIAorICAgIDExLCAzMiwgNiwgMjUyLCAyNiwgMTEsIDMyLCA2LCAyNDMsIDEwNywgMTEsIDMyLCA2LCAyNDgsIDU0LCAxMSwgMzIsIDYsIAorICAgIDI0NSwgMTAwLCAxMSwgMzIsIDYsIDIxMCwgODUsIDExLCAzMiwgNiwgMjQ1LCA2MywgMTEsIDMyLCA2LCAyMTYsIDE3OSwgCisgICAgMTEsIDMyLCA2LCAyMzUsIDE4NSwgMTEsIDMyLCA2LCAyMzQsIDIyMiwgMTEsIDMyLCA2LCAyMzMsIDk4LCAxMSwgMzIsIDYsIAorICAgIDIzMCwgMTAyLCAxMSwgMzIsIDYsIDIyNywgMjM3LCAxMSwgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMzIsIDYsIDIyNiwgMTk5LCAKKyAgICAxMSwgMzIsIDYsIDIyNSwgMTA4LCAxMSwgMzIsIDYsIDIyMywgMzcsIDExLCAzMiwgNiwgMjE2LCAxODAsIDg3LCAxMSwgMzIsIAorICAgIDYsIDIxOSwgMTc3LCAxMSwgMzIsIDYsIDIxNywgNDEsIDExLCAzMiwgNiwgMjE0LCAxNTcsIDExLCAzMiwgNiwgMjI1LCAKKyAgICAxMzMsIDExLCAzMiwgNiwgMjUwLCAxMTAsIDExLCAzMiwgNiwgMjI0LCAxNjEsIDExLCAzMiwgNiwgMjI2LCAyMDEsIDExLCAKKyAgICAzMiwgMjI5LCAyMjEsIDExLCAzMiwgNCwgMjU0LCAxNDMsIDExLCAzMiwgNCwgMjUyLCAyNiwgMTEsIDMyLCA0LCAyNDMsIAorICAgIDEwNywgMTEsIDMyLCA0LCAyNDgsIDU0LCAxMSwgMzIsIDQsIDI0NSwgMTAwLCAxMSwgMzIsIDQsIDIxMCwgODUsIDExLCAzMiwgCisgICAgNCwgMjQ1LCA2MywgMTEsIDMyLCA0LCAyMTYsIDE3OSwgMTEsIDMyLCA0LCAyMzUsIDE4NSwgMTEsIDMyLCA0LCAyMzQsIAorICAgIDIyMiwgMTEsIDMyLCA0LCAyMzMsIDk4LCAxMSwgMzIsIDQsIDIzMCwgMTAyLCAxMSwgMzIsIDQsIDIyNywgMjM3LCAxMSwgCisgICAgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzIsIDQsIDIyNiwgMTk5LCAxMSwgMzIsIDQsIDIyNSwgMTA4LCAxMSwgMzIsIDQsIAorICAgIDIyMywgMzcsIDExLCAzMiwgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMzIsIDQsIDIxOSwgMTc3LCAxMSwgMzIsIDQsIDIxNywgCisgICAgNDEsIDExLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzMiwgNCwgMjI1LCAxMzMsIDExLCAzMiwgNCwgMjUwLCAxMTAsIDExLCAKKyAgICAzMiwgNCwgMjI0LCAxNjEsIDExLCAzMiwgNCwgMjI2LCAyMDEsIDExLCAzMiwgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMzIsIAorICAgIDI0NSwgMTAxLCA4NywgMTEsIDMyLCAyMTYsIDE4MCwgODcsIDExLCAzMiwgMjM0LCAyMjMsIDg3LCAxMSwgMzIsIDIyNSwgCisgICAgMTM0LCA4NywgMTEsIDMyLCAyMjMsIDM4LCA4NywgMTEsIDMyLCAyMjUsIDEwOSwgODcsIDExLCAyMywgMzIsIDYsIDI1NCwgCisgICAgMTQzLCAxMSwgMjMsIDMyLCA2LCAyNTIsIDI2LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDEwNywgMTEsIDIzLCAzMiwgNiwgMjQ4LCAKKyAgICA1NCwgMTEsIDIzLCAzMiwgNiwgMjQ1LCAxMDAsIDExLCAyMywgMzIsIDYsIDIxMCwgODUsIDExLCAyMywgMzIsIDYsIDI0NSwgCisgICAgNjMsIDExLCAyMywgMzIsIDYsIDIxNiwgMTc5LCAxMSwgMjMsIDMyLCA2LCAyMzUsIDE4NSwgMTEsIDIzLCAzMiwgNiwgMjM0LCAKKyAgICAyMjIsIDExLCAyMywgMzIsIDYsIDIzMywgOTgsIDExLCAyMywgMzIsIDYsIDIzMCwgMTAyLCAxMSwgMjMsIDMyLCA2LCAyMjcsIAorICAgIDIzNywgMTEsIDIzLCAzMiwgNiwgMjExLCAxNTcsIDExLCAyMywgMzIsIDYsIDIyNiwgMTk5LCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyMjUsIDEwOCwgMTEsIDIzLCAzMiwgNiwgMjIzLCAzNywgMTEsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDg3LCAxMSwgMjMsIAorICAgIDMyLCA2LCAyMTksIDE3NywgMTEsIDIzLCAzMiwgNiwgMjE3LCA0MSwgMTEsIDIzLCAzMiwgNiwgMjE0LCAxNTcsIDExLCAyMywgCisgICAgMzIsIDYsIDIyNSwgMTMzLCAxMSwgMjMsIDMyLCA2LCAyNTAsIDExMCwgMTEsIDIzLCAzMiwgNiwgMjI0LCAxNjEsIDExLCAKKyAgICAyMywgMzIsIDYsIDIyNiwgMjAxLCAxMSwgMjMsIDMyLCAyMjksIDIyMSwgMTEsIDIzLCAzMiwgNCwgMjU0LCAxNDMsIDExLCAKKyAgICAyMywgMzIsIDQsIDI1MiwgMjYsIDExLCAyMywgMzIsIDQsIDI0MywgMTA3LCAxMSwgMjMsIDMyLCA0LCAyNDgsIDU0LCAxMSwgCisgICAgMjMsIDMyLCA0LCAyNDUsIDEwMCwgMTEsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDIzLCAzMiwgNCwgMjQ1LCA2MywgMTEsIAorICAgIDIzLCAzMiwgNCwgMjE2LCAxNzksIDExLCAyMywgMzIsIDQsIDIzNSwgMTg1LCAxMSwgMjMsIDMyLCA0LCAyMzQsIDIyMiwgCisgICAgMTEsIDIzLCAzMiwgNCwgMjMzLCA5OCwgMTEsIDIzLCAzMiwgNCwgMjMwLCAxMDIsIDExLCAyMywgMzIsIDQsIDIyNywgMjM3LCAKKyAgICAxMSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNCwgMjI2LCAxOTksIDExLCAyMywgMzIsIDQsIDIyNSwgCisgICAgMTA4LCAxMSwgMjMsIDMyLCA0LCAyMjMsIDM3LCAxMSwgMjMsIDMyLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAyMywgMzIsIDQsIAorICAgIDIxOSwgMTc3LCAxMSwgMjMsIDMyLCA0LCAyMTcsIDQxLCAxMSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDIzLCAzMiwgNCwgCisgICAgMjI1LCAxMzMsIDExLCAyMywgMzIsIDQsIDI1MCwgMTEwLCAxMSwgMjMsIDMyLCA0LCAyMjQsIDE2MSwgMTEsIDIzLCAzMiwgCisgICAgNCwgMjI2LCAyMDEsIDExLCAyMywgMzIsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDIzLCAzMiwgMjQ1LCAxMDEsIDg3LCAKKyAgICAxMSwgMjMsIDMyLCAyMTYsIDE4MCwgODcsIDExLCAyMywgMzIsIDIzNCwgMjIzLCA4NywgMTEsIDIzLCAzMiwgMjI1LCAxMzQsIAorICAgIDg3LCAxMSwgMjMsIDMyLCAyMjMsIDM4LCA4NywgMTEsIDIzLCAzMiwgMjI1LCAxMDksIDg3LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyNTQsIDE0MywgMTEsIDM1LCAyMywgNiwgMjUyLCAyNiwgMTEsIDM1LCAyMywgNiwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDYsIAorICAgIDI0OCwgNTQsIDExLCAzNSwgMjMsIDYsIDI0NSwgMTAwLCAxMSwgMzUsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyNDUsIDYzLCAxMSwgMzUsIDIzLCA2LCAyMTYsIDE3OSwgMTEsIDM1LCAyMywgNiwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDYsIAorICAgIDIzNCwgMjIyLCAxMSwgMzUsIDIzLCA2LCAyMzMsIDk4LCAxMSwgMzUsIDIzLCA2LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgNiwgCisgICAgMjI3LCAyMzcsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCA2LCAyMjYsIDE5OSwgMTEsIDM1LCAyMywgCisgICAgNiwgMjI1LCAxMDgsIDExLCAzNSwgMjMsIDYsIDIyMywgMzcsIDExLCAzNSwgMjMsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAKKyAgICAyMywgNiwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDYsIDIxNywgNDEsIDExLCAzNSwgMjMsIDYsIDIxNCwgMTU3LCAxMSwgMzUsIAorICAgIDIzLCA2LCAyMjUsIDEzMywgMTEsIDM1LCAyMywgNiwgMjUwLCAxMTAsIDExLCAzNSwgMjMsIDYsIDIyNCwgMTYxLCAxMSwgCisgICAgMzUsIDIzLCA2LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMjI5LCAyMjEsIDExLCAzNSwgMjMsIDQsIDI1NCwgMTQzLCAxMSwgCisgICAgMzUsIDIzLCA0LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCA0LCAyNDMsIDEwNywgMTEsIDM1LCAyMywgNCwgMjQ4LCA1NCwgMTEsIAorICAgIDM1LCAyMywgNCwgMjQ1LCAxMDAsIDExLCAzNSwgMjMsIDQsIDIxMCwgODUsIDExLCAzNSwgMjMsIDQsIDI0NSwgNjMsIDExLCAKKyAgICAzNSwgMjMsIDQsIDIxNiwgMTc5LCAxMSwgMzUsIDIzLCA0LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgNCwgMjM0LCAyMjIsIAorICAgIDExLCAzNSwgMjMsIDQsIDIzMywgOTgsIDExLCAzNSwgMjMsIDQsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDM1LCAyMywgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDQsIDIyNiwgMTk5LCAxMSwgMzUsIDIzLCA0LCAyMjUsIAorICAgIDEwOCwgMTEsIDM1LCAyMywgNCwgMjIzLCAzNywgMTEsIDM1LCAyMywgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCA0LCAKKyAgICAyMTksIDE3NywgMTEsIDM1LCAyMywgNCwgMjE3LCA0MSwgMTEsIDM1LCAyMywgNCwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDQsIAorICAgIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCA0LCAyNTAsIDExMCwgMTEsIDM1LCAyMywgNCwgMjI0LCAxNjEsIDExLCAzNSwgMjMsIAorICAgIDQsIDIyNiwgMjAxLCAxMSwgMzUsIDIzLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAzNSwgMjMsIDI0NSwgMTAxLCA4NywgCisgICAgMTEsIDM1LCAyMywgMjE2LCAxODAsIDg3LCAxMSwgMzUsIDIzLCAyMzQsIDIyMywgODcsIDExLCAzNSwgMjMsIDIyNSwgMTM0LCAKKyAgICA4NywgMTEsIDM1LCAyMywgMjIzLCAzOCwgODcsIDExLCAzNSwgMjMsIDIyNSwgMTA5LCA4NywgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDI1NCwgMTQzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUyLCAyNiwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MywgMTA3LCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNiwgMjQ4LCA1NCwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgMTAwLCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgNjMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTYsIDE3OSwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDYsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM0LCAyMjIsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzMsIAorICAgIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjcsIDIzNywgMTEsIDM1LCAyMywgCisgICAgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAxOTksIDExLCAzNSwgMjMsIDMyLCA2LCAyMjUsIAorICAgIDEwOCwgMTEsIDM1LCAyMywgMzIsIDYsIDIyMywgMzcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgODcsIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAyMTksIDE3NywgMTEsIDM1LCAyMywgMzIsIDYsIDIxNywgNDEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTQsIAorICAgIDE1NywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUwLCAxMTAsIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAyMjQsIDE2MSwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMjAxLCAxMSwgMzUsIDIzLCAzMiwgMjI5LCAKKyAgICAyMjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTQsIDE0MywgMTEsIDM1LCAyMywgMzIsIDQsIDI1MiwgMjYsIDExLCAzNSwgMjMsIAorICAgIDMyLCA0LCAyNDMsIDEwNywgMTEsIDM1LCAyMywgMzIsIDQsIDI0OCwgNTQsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDEwMCwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDYzLCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMjE2LCAxNzksIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNCwgMjIyLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjMzLCA5OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMjI3LCAyMzcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgMTk5LCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMDgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIDQxLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEzMywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDI1MCwgMTEwLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCAxNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDIwMSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDM1LCAyMywgMzIsIDI0NSwgMTAxLCA4NywgMTEsIDM1LCAKKyAgICAyMywgMzIsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAyMywgMzIsIDIzNCwgMjIzLCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgCisgICAgMTM0LCA4NywgMTEsIDM1LCAyMywgMzIsIDIyMywgMzgsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjI1LCAxMDksIDg3LCAxMSwgCisgICAgMjMsIDYsIDI0NywgMjI3LCAxMSwgMjMsIDQsIDI0NywgMjI3LCAxMSwgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMjMsIDIxLCAKKyAgICAxMTAsIDExLCAyMywgMjEsIDEwNSwgMTEsIDIzLCAyMSwgMTU4LCAxMSwgMjMsIDIxLCAxNjEsIDExLCAyMywgMjEsIDE4OSwgCisgICAgMTEsIDIzLCAyMSwgMTk0LCAxMSwgMjMsIDIxLCAxOTgsIDExLCAyMywgMjEsIDE5NSwgMTEsIDIzLCAyMSwgMjAwLCAxMSwgCisgICAgMTM5LCAyMSwgMjEwLCA4NiwgMTEsIDEzOSwgMjEsIDExMCwgMTEsIDEzOSwgMjEsIDEwNSwgMTEsIDEzOSwgMjEsIDE1OCwgCisgICAgMTEsIDEzOSwgMjEsIDE2MSwgMTEsIDEzOSwgMjEsIDE4OSwgMTEsIDEzOSwgMjEsIDE5NCwgMTEsIDEzOSwgMjEsIDE5OCwgCisgICAgMTEsIDEzOSwgMjEsIDE5NSwgMTEsIDEzOSwgMjEsIDIwMCwgMTEsIDM1LCAyMSwgMjEwLCA4NiwgMTEsIDM1LCAyMSwgMTEwLCAKKyAgICAxMSwgMzUsIDIxLCAxMDUsIDExLCAzNSwgMjEsIDE1OCwgMTEsIDM1LCAyMSwgMTYxLCAxMSwgMzUsIDIxLCAxODksIDExLCAKKyAgICAzNSwgMjEsIDE5NCwgMTEsIDM1LCAyMSwgMTk4LCAxMSwgMzUsIDIxLCAxOTUsIDExLCAzNSwgMjEsIDIwMCwgMTEsIDM1LCAKKyAgICAyMywgMjEsIDIxMCwgODYsIDExLCAzNSwgMjMsIDIxLCAxMTAsIDExLCAzNSwgMjMsIDIxLCAxMDUsIDExLCAzNSwgMjMsIAorICAgIDIxLCAxNTgsIDExLCAzNSwgMjMsIDIxLCAxNjEsIDExLCAzNSwgMjMsIDIxLCAxODksIDExLCAzNSwgMjMsIDIxLCAxOTQsIAorICAgIDExLCAzNSwgMjMsIDIxLCAxOTgsIDExLCAzNSwgMjMsIDIxLCAxOTUsIDExLCAzNSwgMjMsIDIxLCAyMDAsIDExLCAyMzAsIAorICAgIDEzOCwgMjEsIDIxMCwgODYsIDExLCAyMzAsIDEzOCwgMjEsIDExMCwgMTEsIDIzMCwgMTM4LCAyMSwgMTA1LCAxMSwgMjMwLCAKKyAgICAxMzgsIDIxLCAxNTgsIDExLCAyMzAsIDEzOCwgMjEsIDE2MSwgMTEsIDIzMCwgMTM4LCAyMSwgMTg5LCAxMSwgMjMwLCAxMzgsIAorICAgIDIxLCAxOTQsIDExLCAyMzAsIDEzOCwgMjEsIDE5OCwgMTEsIDIzMCwgMTM4LCAyMSwgMTk1LCAxMSwgMjMwLCAxMzgsIDIxLCAKKyAgICAyMDAsIDEwLCAxMSwgMjU0LCAxNzAsIDEwLCAxMSwgMjUyLCA1NCwgMTAsIDExLCAyMzUsIDEyMywgMTAsIDExLCAyNDgsIAorICAgIDE5NSwgMTAsIDExLCAyMTIsIDMwLCAxMCwgMTEsIDIxMCwgMTA4LCAxMCwgMTEsIDI0MiwgMzcsIDEwLCAxMSwgMjE3LCA4MCwgCisgICAgMTAsIDExLCAyMTEsIDQzLCAxMCwgMTEsIDIzNCwgMjUwLCAxMCwgMTEsIDIzMywgMTAyLCAxMCwgMTEsIDIzMSwgNzgsIDEwLCAKKyAgICAxMSwgMjI4LCA2MiwgMTAsIDExLCAyMjEsIDE2NiwgMTAsIDExLCAyNTQsIDE5NiwgMTAsIDExLCAyNDQsIDE0MiwgMTAsIAorICAgIDExLCAyMjIsIDI2LCAxMCwgMTEsIDIyNCwgODEsIDEwLCAxMSwgMjIzLCA5NSwgMTAsIDExLCAyMjAsIDU5LCAxMCwgMTEsIAorICAgIDIxNywgNywgMTAsIDExLCAyMTYsIDE5MiwgMTAsIDExLCAyMzQsIDEyOSwgMTAsIDExLCAyMTYsIDIwMiwgMTAsIDExLCAKKyAgICAyNDgsIDIxNiwgMTAsIDExLCAyMTAsIDExMSwgMTAsIDExLCAyNDIsIDI0NCwgMTAsIDExLCAyNDcsIDExOSwgMjUyLCA1NCwgCisgICAgMTAsIDExLCAyNDcsIDExOSwgMjI4LCA2MiwgMTAsIDExLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxMSwgMjQ3LCAxMTksIAorICAgIDIyNCwgODEsIDEwLCAxMSwgNjUsIDI1MiwgNTQsIDEwLCAxMSwgNjUsIDIzNSwgMTIzLCAxMCwgMTEsIDY1LCAyNDEsIDIxOCwgCisgICAgMTAsIDExLCA2NSwgMjQyLCAzNywgMTAsIDExLCA2NSwgMjExLCA0MywgMTAsIDExLCA2NSwgMjM0LCAyNTAsIDEwLCAxMSwgCisgICAgNjUsIDIzMywgMTAyLCAxMCwgMTEsIDY1LCAyMzEsIDc4LCAxMCwgMTEsIDY1LCAyMjgsIDYyLCAxMCwgMTEsIDY1LCAyMjEsIAorICAgIDE2NiwgMTAsIDExLCA2NSwgMjU0LCAxOTYsIDEwLCAxMSwgNjUsIDI0NCwgMTQyLCAxMCwgMTEsIDY1LCAyMjIsIDI2LCAxMCwgCisgICAgMTEsIDY1LCAyMjQsIDgxLCAxMCwgMTEsIDY1LCAyMjAsIDU5LCAxMCwgMTEsIDY1LCAyMTcsIDcsIDEwLCAxMSwgNjUsIAorICAgIDIxNiwgMTkyLCAxMCwgMTEsIDY1LCAyMzQsIDEyOSwgMTAsIDExLCA2NSwgMjQ4LCAyMTYsIDEwLCAxMSwgNjUsIDI0MiwgCisgICAgMjQ0LCAxMCwgMTEsIDIxNywgNzYsIDIzNSwgMTIzLCAxMCwgMTEsIDIxNywgNzYsIDI0MiwgMzcsIDEwLCAxMSwgMjE3LCAKKyAgICA3NiwgMjExLCA0MywgMTAsIDExLCAyMTcsIDc2LCAyMzMsIDEwMiwgMTAsIDExLCAyMTcsIDc2LCAyMjgsIDYyLCAxMCwgMTEsIAorICAgIDIxNywgNzYsIDIyMSwgMTY2LCAxMCwgMTEsIDIxNywgNzYsIDI1NCwgMTk2LCAxMCwgMTEsIDIxNywgNzYsIDIyMiwgMjYsIAorICAgIDEwLCAxMSwgMjE3LCA3NiwgMjI0LCA4MSwgMTAsIDExLCAyMTcsIDc2LCAyMjAsIDU5LCAxMCwgMTEsIDIxNywgNzYsIDIzNCwgCisgICAgMTI5LCAxMCwgMTEsIDIxNywgNzYsIDI0OCwgMjE2LCAxMCwgMTEsIDIxNywgNzYsIDI0MiwgMjQ0LCAxMCwgMTEsIDIxNywgCisgICAgNzYsIDI0NywgMTE5LCAyMjgsIDYyLCAxMCwgMTEsIDIxNywgNzYsIDI0NywgMTE5LCAyMjQsIDgxLCAxMCwgMTEsIDIxOCwgCisgICAgMTEwLCAyNTIsIDU0LCAxMCwgMTEsIDIxOCwgMTEwLCAyMzUsIDEyMywgMTAsIDExLCAyMTgsIDExMCwgMjQxLCAyMTgsIDEwLCAKKyAgICAxMSwgMjE4LCAxMTAsIDI0MiwgMzcsIDEwLCAxMSwgMjE4LCAxMTAsIDIxNywgODAsIDEwLCAxMSwgMjE4LCAxMTAsIDIxMSwgCisgICAgNDMsIDEwLCAxMSwgMjE4LCAxMTAsIDIzNCwgMjUwLCAxMCwgMTEsIDIxOCwgMTEwLCAyMzEsIDc4LCAxMCwgMTEsIDIxOCwgCisgICAgMTEwLCAyMjgsIDYyLCAxMCwgMTEsIDIxOCwgMTEwLCAyMjEsIDE2NiwgMTAsIDExLCAyMTgsIDExMCwgMjU0LCAxOTYsIDEwLCAKKyAgICAxMSwgMjE4LCAxMTAsIDI0NCwgMTQyLCAxMCwgMTEsIDIxOCwgMTEwLCAyMjIsIDI2LCAxMCwgMTEsIDIxOCwgMTEwLCAyMjQsIAorICAgIDgxLCAxMCwgMTEsIDIxOCwgMTEwLCAyMjAsIDU5LCAxMCwgMTEsIDIxOCwgMTEwLCAyMTcsIDcsIDEwLCAxMSwgMjE4LCAKKyAgICAxMTAsIDIxNiwgMTkyLCAxMCwgMTEsIDIxOCwgMTEwLCAyMzQsIDEyOSwgMTAsIDExLCAyMTgsIDExMCwgMjQ4LCAyMTYsIAorICAgIDEwLCAxMSwgMjE4LCAxMTAsIDIxMCwgMTExLCAxMCwgMTEsIDIxOCwgMTEwLCAyNDIsIDI0NCwgMTAsIDExLCAyMTgsIDExMCwgCisgICAgMjQ3LCAxMTksIDI1MiwgNTQsIDEwLCAxMSwgMjE4LCAxMTAsIDI0NywgMTE5LCAyNDQsIDE0MiwgMTAsIDExLCAyMzIsIAorICAgIDEyMiwgMjU0LCAxNzAsIDEwLCAxMSwgMjMyLCAxMjIsIDI1MiwgNTQsIDEwLCAxMSwgMjMyLCAxMjIsIDIzNSwgMTIzLCAxMCwgCisgICAgMTEsIDIzMiwgMTIyLCAyNDgsIDE5NSwgMTAsIDExLCAyMzIsIDEyMiwgMjQxLCAyMTgsIDEwLCAxMSwgMjMyLCAxMjIsIAorICAgIDIxMiwgMzAsIDEwLCAxMSwgMjMyLCAxMjIsIDIxMCwgMTA4LCAxMCwgMTEsIDIzMiwgMTIyLCAyNDIsIDM3LCAxMCwgMTEsIAorICAgIDIzMiwgMTIyLCAyMTcsIDgwLCAxMCwgMTEsIDIzMiwgMTIyLCAyMTEsIDQzLCAxMCwgMTEsIDIzMiwgMTIyLCAyMzMsIDEwMiwgCisgICAgMTAsIDExLCAyMzIsIDEyMiwgMjMxLCA3OCwgMTAsIDExLCAyMzIsIDEyMiwgMjI4LCA2MiwgMTAsIDExLCAyMzIsIDEyMiwgCisgICAgMjIxLCAxNjYsIDEwLCAxMSwgMjMyLCAxMjIsIDI1NCwgMTk2LCAxMCwgMTEsIDIzMiwgMTIyLCAyNDQsIDE0MiwgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjIyLCAyNiwgMTAsIDExLCAyMzIsIDEyMiwgMjI0LCA4MSwgMTAsIDExLCAyMzIsIDEyMiwgMjIzLCA5NSwgCisgICAgMTAsIDExLCAyMzIsIDEyMiwgMjIwLCA1OSwgMTAsIDExLCAyMzIsIDEyMiwgMjE3LCA3LCAxMCwgMTEsIDIzMiwgMTIyLCAKKyAgICAyMTYsIDE5MiwgMTAsIDExLCAyMzIsIDEyMiwgMjM0LCAxMjksIDEwLCAxMSwgMjMyLCAxMjIsIDIxNiwgMjAyLCAxMCwgMTEsIAorICAgIDIzMiwgMTIyLCAyNDgsIDIxNiwgMTAsIDExLCAyMzIsIDEyMiwgMjEwLCAxMTEsIDEwLCAxMSwgMjMyLCAxMjIsIDI0MiwgCisgICAgMjQ0LCAxMCwgMTEsIDEzOSwgMjUyLCA1NCwgMTAsIDExLCAxMzksIDIzNSwgMTIzLCAxMCwgMTEsIDEzOSwgMjQ4LCAxOTUsIAorICAgIDEwLCAxMSwgMTM5LCAyMTIsIDMwLCAxMCwgMTEsIDEzOSwgMjEwLCAxMDgsIDEwLCAxMSwgMTM5LCAyNDIsIDM3LCAxMCwgCisgICAgMTEsIDEzOSwgMjE3LCA4MCwgMTAsIDExLCAxMzksIDIxMSwgNDMsIDEwLCAxMSwgMTM5LCAyMzMsIDEwMiwgMTAsIDExLCAKKyAgICAxMzksIDIzMSwgNzgsIDEwLCAxMSwgMTM5LCAyMjgsIDYyLCAxMCwgMTEsIDEzOSwgMjIxLCAxNjYsIDEwLCAxMSwgMTM5LCAKKyAgICAyNTQsIDE5NiwgMTAsIDExLCAxMzksIDI0NCwgMTQyLCAxMCwgMTEsIDEzOSwgMjIyLCAyNiwgMTAsIDExLCAxMzksIDIyNCwgCisgICAgODEsIDEwLCAxMSwgMTM5LCAyMjMsIDk1LCAxMCwgMTEsIDEzOSwgMjIwLCA1OSwgMTAsIDExLCAxMzksIDIxNywgNywgMTAsIAorICAgIDExLCAxMzksIDIxNiwgMTkyLCAxMCwgMTEsIDEzOSwgMjM0LCAxMjksIDEwLCAxMSwgMTM5LCAyMTYsIDIwMiwgMTAsIDExLCAKKyAgICAxMzksIDI0OCwgMjE2LCAxMCwgMTEsIDEzOSwgMjEwLCAxMTEsIDEwLCAxMSwgMTM5LCAyNDIsIDI0NCwgMTAsIDExLCAyMjYsIAorICAgIDE2OCwgNjYsIDIsIDEyMiwgMiwgMjE3LCA0MywgMTAsIDExLCAyMjYsIDE2OCwgMTIyLCAyLCAyNDgsIDE5NSwgMjMxLCAKKyAgICAyMDUsIDg2LCAyNDUsIDIyMCwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjE5LCAyOCwgMjExLCAyMzksIDIzMSwgMjA1LCAKKyAgICA4NiwgMjEyLCA5LCAyMTEsIDIzOSwgMjMxLCAyMDUsIDg2LCAyMjgsIDU2LCAyMTEsIDIzOSwgMjMxLCAyMDUsIDg2LCAyMjMsIAorICAgIDExMSwgMjQ2LCA5NiwgMjMxLCAyMDUsIDg2LCAyNDIsIDEyNywgMjQ2LCA5NiwgMjMxLCAyMDUsIDg2LCA3MSwgMjQ2LCA5NiwgCisgICAgMjMxLCAyMDUsIDg2LCAxMjMsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAxMTMsIDY0LCAyNTAsIDE0MSwgMjMxLCAKKyAgICAyMDUsIDg2LCAxMzQsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAyNDQsIDExLCA2NCwgMjUwLCAxNDEsIDIzMSwgCisgICAgMjA1LCA4NiwgMjQ0LCA4MSwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDIxOSwgMTI1LCA2NCwgMjUwLCAxNDEsIAorICAgIDIzMSwgMjA1LCA4NiwgMjIwLCAxMjIsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAyNDUsIDE5MywgNjQsIDI1MCwgCisgICAgMTQxLCAyMzEsIDIwNSwgODYsIDIyOCwgMjAwLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMTIzLCA2NCwgMjUyLCAKKyAgICAxNTMsIDIzMSwgMjA1LCA4NiwgMTEzLCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMTM0LCA2NCwgMjUyLCAxNTMsIAorICAgIDIzMSwgMjA1LCA4NiwgMjQ0LCAxMSwgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDI0NCwgODEsIDY0LCAyNTIsIDE1MywgCisgICAgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDIyMCwgMTIyLCA2NCwgMjUyLCAKKyAgICAxNTMsIDIzMSwgMjA1LCA4NiwgMjQ1LCAxOTMsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIAorICAgIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDEyMywgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMTEzLCA2NCwgMjUwLCAzNCwgCisgICAgMjMxLCAyMDUsIDg2LCAxMzQsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDI0NCwgMTEsIDY0LCAyNTAsIDM0LCAyMzEsIAorICAgIDIwNSwgODYsIDI0NCwgODEsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDIxOSwgMTI1LCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyMjAsIDEyMiwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjQ1LCAxOTMsIDY0LCAyNTAsIDM0LCAyMzEsIAorICAgIDIwNSwgODYsIDIyOCwgMjAwLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyMjUsIDI1LCAyMzEsIDIwNSwgODYsIDIyNiwgCisgICAgMTU2LCAyMzEsIDIwNSwgODYsIDI1MiwgMTU0LCAyMzEsIDIwNSwgODYsIDI1MCwgNzAsIDIzMSwgMjA1LCA4NiwgMjE4LCAKKyAgICAyMzksIDIzMSwgMjA1LCA4NiwgMjE4LCAzOSwgMjMxLCAyMDUsIDg2LCAyNTMsIDE3OSwgMjMxLCAyMDUsIDg2LCAyMTEsIAorICAgIDIzMiwgMjMxLCAyMDUsIDg2LCAyMzUsIDYyLCAyMzEsIDIwNSwgODYsIDI1MiwgMTg0LCAxMzEsIDg2LCAyMDMsIDI1MiwgCisgICAgMTg0LCAxMzEsIDg2LCAyNDEsIDQzLCAxMzEsIDg2LCAyNDEsIDQyLCAxMzEsIDg2LCAyNDEsIDQxLCAxMzEsIDg2LCAyNDEsIAorICAgIDQwLCAxMzEsIDg2LCAyNDEsIDM5LCAxMzEsIDg2LCAyNDEsIDM4LCAxMzEsIDg2LCAyNDEsIDM3LCAxMzEsIDg2LCAyNDEsIAorICAgIDM2LCAxMzEsIDg2LCAyNDEsIDM1LCAxMzEsIDg2LCAyNDEsIDM0LCAxMzEsIDg2LCAyNDEsIDMzLCAxMzEsIDg2LCAyNDEsIAorICAgIDMyLCAxMzEsIDg2LCAyNDEsIDMxLCAxMzEsIDg2LCAyNDEsIDMwLCAxMzEsIDg2LCAyNDEsIDI5LCAxMzEsIDg2LCAyNDEsIAorICAgIDI4LCAxMzEsIDg2LCAyNDEsIDI3LCAxMzEsIDg2LCAyNDEsIDI2LCAxMzEsIDg2LCAyNDEsIDI1LCAxMzEsIDg2LCAyNDEsIAorICAgIDI0LCAxMzEsIDg2LCAyNDEsIDIzLCAxMzEsIDg2LCAyNDEsIDIyLCAxMzEsIDg2LCAyNDEsIDIxLCAxMzEsIDg2LCAyNDEsIAorICAgIDIwLCAxMzEsIDg2LCAyNDEsIDE5LCAxMzEsIDg2LCAyNDEsIDE4LCAxMzEsIDg2LCAyNDEsIDE3LCAxMzEsIDg2LCAyNDEsIAorICAgIDE2LCAxMzEsIDg2LCAyNDEsIDE1LCAxMzEsIDg2LCAyNDEsIDE0LCAxMzEsIDg2LCAyNDEsIDEzLCAxMzEsIDg2LCAyNDEsIAorICAgIDEyLCAxMzEsIDg2LCAyNDEsIDExLCAxMzEsIDg2LCAyNDEsIDEwLCAxMzEsIDg2LCAyNDEsIDksIDEzMSwgODYsIDI0MSwgOCwgCisgICAgMTMxLCA4NiwgMjQxLCA3LCAxMzEsIDg2LCAyNDEsIDYsIDEzMSwgODYsIDI0MSwgNSwgMTMxLCA4NiwgMjQxLCA0LCAxMzEsIAorICAgIDg2LCAyNDEsIDMsIDEzMSwgODYsIDI0MSwgMiwgMTMxLCA4NiwgMjQxLCAxLCAxMzEsIDg2LCAyNDEsIDAsIDEzMSwgODYsIAorICAgIDI0MCwgMjU1LCAxMzEsIDg2LCAyNDAsIDI1NCwgMTMxLCA4NiwgMjQwLCAyNTMsIDEzMSwgODYsIDI0MCwgMjUyLCAxMzEsIAorICAgIDg2LCAyNDAsIDI1MSwgMTMxLCA4NiwgNjcsIDI1MiwgMTg0LCAxMzEsIDg2LCAyMTMsIDIzOCwgMTMxLCA4NiwgMjEzLCAKKyAgICAyMzcsIDEzMSwgODYsIDIxMywgMjM2LCAxMzEsIDg2LCAyMTMsIDIzNSwgMTMxLCA4NiwgMjEzLCAyMzQsIDEzMSwgODYsIAorICAgIDIxMywgMjMzLCAxMzEsIDg2LCAyMTMsIDIzMiwgMTMxLCA4NiwgMjEzLCAyMzEsIDEzMSwgODYsIDIxMywgMjMwLCAxMzEsIAorICAgIDg2LCAyMTMsIDIyOSwgMTMxLCA4NiwgMjEzLCAyMjgsIDEzMSwgODYsIDIxMywgMjI3LCAxMzEsIDg2LCAyMTMsIDIyNiwgCisgICAgMTMxLCA4NiwgMjEzLCAyMjUsIDEzMSwgODYsIDIxMywgMjI0LCAxMzEsIDg2LCAyMTMsIDIyMywgMTMxLCA4NiwgMjEzLCAKKyAgICAyMjIsIDEzMSwgODYsIDIxMywgMjIxLCAxMzEsIDg2LCAyMTMsIDIyMCwgMTMxLCA4NiwgMjEzLCAyMTksIDEzMSwgODYsIAorICAgIDIxMywgMjE4LCAxMzEsIDg2LCAyMTMsIDIxNywgMTMxLCA4NiwgMjEzLCAyMTYsIDEzMSwgODYsIDIxMywgMjE1LCAxMzEsIAorICAgIDg2LCAyMTMsIDIxNCwgMTMxLCA4NiwgMjEzLCAyMTMsIDEzMSwgODYsIDIxMywgMjEyLCAxMzEsIDg2LCAyMTMsIDIxMSwgCisgICAgMTMxLCA4NiwgMjEzLCAyMTAsIDEzMSwgODYsIDIxMywgMjA5LCAxMzEsIDg2LCAyMTMsIDIwOCwgMTMxLCA4NiwgMjEzLCAKKyAgICAyMDcsIDEzMSwgODYsIDIxMywgMjA2LCAxMzEsIDg2LCAyMTMsIDIwNSwgMTMxLCA4NiwgMjEzLCAyMDQsIDEzMSwgODYsIAorICAgIDIxMywgMjAzLCAxMzEsIDg2LCAyMTMsIDIwMiwgMTMxLCA4NiwgMjEzLCAyMDEsIDEzMSwgODYsIDIxMywgMjAwLCAxMzEsIAorICAgIDg2LCAyMTMsIDE5OSwgMTMxLCA4NiwgMjEzLCAxOTgsIDEzMSwgODYsIDIxMywgMTk3LCAxMzEsIDg2LCAyMTMsIDE5NiwgCisgICAgMTMxLCA4NiwgMjEzLCAxOTUsIDEzMSwgODYsIDIxMywgMTk0LCAxMzEsIDg2LCAyMTMsIDE5MywgMTMxLCA4NiwgMjEzLCAKKyAgICAxOTIsIDEzMSwgODYsIDIxMywgMTkxLCAxMzEsIDg2LCAyMTMsIDE5MCwgMjI1LCAzMywgMjUwLCAyNDMsIDI1MiwgMTg0LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjU1LCA5LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIDIxOSwgCisgICAgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAxMSwgNjQsIAorICAgIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIxOSwgCisgICAgMTI1LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDI0NSwgMTkzLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCA2NCwgMjE5LCAxNSwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIxNiwgMjQ4LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNSwgMTM5LCAKKyAgICA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgCisgICAgMjI0LCAxNSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgCisgICAgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgMjQxLCAyMjUsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAKKyAgICAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgODEsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIxOSwgMTI1LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDI0MSwgMjI1LCAyMjUsIAorICAgIDMzLCAyNTAsIDI0MywgMjQ1LCAxOTMsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCA2NCwgCisgICAgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTYsIDI0OCwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgCisgICAgMjM1LCAxMzksIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyNDEsIDIyNSwgMjI1LCAKKyAgICAzMywgMjUwLCAyNDMsIDIyNCwgMTUsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAyNDEsIAorICAgIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgCisgICAgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgCisgICAgMTEsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgODEsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDIxOSwgMTI1LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDI0NywgMjQ3LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjQ1LCAxOTMsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCAKKyAgICA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTYsIDI0OCwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIAorICAgIDI0MywgMjM1LCAxMzksIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyNDcsIDI0NywgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIyNCwgMTUsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAKKyAgICAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDg1LCAyMzUsIDYyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjU1LCA5LCA2NCwgCisgICAgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgCisgICAgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAxMSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIAorICAgIDI0MywgMjQ0LCA4MSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjE5LCAxMjUsIDY0LCAyNDksIDI0MiwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDUsIDE5MywgCisgICAgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDIxNiwgMjQ4LCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzUsIDEzOSwgNjQsIDI0OSwgMjQyLCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjI0LCAxNSwgNjQsIAorICAgIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgCisgICAgNzEsIDIzNSwgNjIsIDIxLCAyMTAsIDg3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMTAsIDg3LCAyNDksIDIxOSwgMjEsIAorICAgIDEyMywgMjQ5LCAyMTksIDIxLCAxMTMsIDI0OSwgMjE5LCAyMSwgMTM0LCAyNDksIDIxOSwgMjEsIDI0NCwgMTEsIDI0OSwgCisgICAgMjE5LCAyMSwgMjQ0LCA4MSwgMjQ5LCAyMTksIDIxLCAyMTksIDEyNSwgMjQ5LCAyMTksIDIxLCAyMjAsIDEyMiwgMjQ5LCAKKyAgICAyMTksIDIxLCAyNDUsIDE5MywgMjQ5LCAyMTksIDIxLCAyMjgsIDIwMCwgMjQ5LCAyMTksIDg4LCA3LCA2LCAxLCA2MSwgODgsIAorICAgIDcsIDYsIDEsIDI1MywgMTU4LCA4OCwgNywgNiwgMSwgMjUxLCA2NiwgODgsIDcsIDYsIDEsIDI0OSwgNjAsIDg4LCA3LCA2LCAKKyAgICAxLCA3NSwgODgsIDcsIDYsIDEsIDI0NSwgNiwgODgsIDcsIDYsIDEsIDI0MywgMjAyLCA4OCwgNywgNiwgMSwgMjQyLCA2MCwgCisgICAgODgsIDcsIDYsIDEsIDczLCA4OCwgNywgNiwgMSwgMjM1LCAxNDQsIDg4LCA3LCA2LCAxLCAyMzUsIDIzLCA4OCwgNywgNiwgCisgICAgMSwgMTU2LCA4OCwgNywgNiwgMSwgMTkzLCA4OCwgNywgNiwgMSwgMjMwLCAyNSwgODgsIDcsIDYsIDEsIDc2LCA4OCwgNywgCisgICAgNiwgMSwgMjI2LCAxMDUsIDg4LCA3LCA2LCAxLCAyMjQsIDk2LCA4OCwgNywgNiwgMSwgMTUzLCA4OCwgNywgNiwgMSwgMjIyLCAKKyAgICA5MSwgODgsIDcsIDYsIDEsIDIxNywgMTUyLCA4OCwgNywgNiwgMSwgNzAsIDg4LCA3LCA2LCAxLCAyMTQsIDEwNSwgODgsIDcsIAorICAgIDYsIDEsIDIxMiwgOTgsIDg4LCA3LCA2LCAxLCAyMTEsIDE3OCwgODgsIDcsIDYsIDEsIDIxMSwgMTE3LCA4OCwgNywgNiwgMSwgCisgICAgMjEwLCAxNTksIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDcsIDYsIDEsIDIyMiwgOTEsIDM3LCAzMiwgNywgNiwgMSwgCisgICAgMjUxLCA2NiwgMzcsIDMyLCA3LCA2LCAxLCAxNTMsIDM3LCAyNTAsIDE5MSwgMzcsIDIxMSwgMTgwLCA5MiwgNywgNiwgMSwgCisgICAgNjEsIDkyLCA3LCA2LCAxLCAyNTMsIDE1OCwgOTIsIDcsIDYsIDEsIDI1MSwgNjYsIDkyLCA3LCA2LCAxLCAyNDksIDYwLCAKKyAgICA5MiwgNywgNiwgMSwgNzUsIDkyLCA3LCA2LCAxLCAyNDUsIDYsIDkyLCA3LCA2LCAxLCAyNDMsIDIwMiwgOTIsIDcsIDYsIDEsIAorICAgIDI0MiwgNjAsIDkyLCA3LCA2LCAxLCA3MywgOTIsIDcsIDYsIDEsIDIzNSwgMTQ0LCA5MiwgNywgNiwgMSwgMjM1LCAyMywgCisgICAgOTIsIDcsIDYsIDEsIDE1NiwgOTIsIDcsIDYsIDEsIDE5MywgOTIsIDcsIDYsIDEsIDIzMCwgMjUsIDkyLCA3LCA2LCAxLCAKKyAgICA3NiwgOTIsIDcsIDYsIDEsIDIyNiwgMTA1LCA5MiwgNywgNiwgMSwgMjI0LCA5NiwgOTIsIDcsIDYsIDEsIDE1MywgOTIsIDcsIAorICAgIDYsIDEsIDIyMiwgOTEsIDkyLCA3LCA2LCAxLCAyMTcsIDE1MiwgOTIsIDcsIDYsIDEsIDcwLCA5MiwgNywgNiwgMSwgMjE0LCAKKyAgICAxMDUsIDkyLCA3LCA2LCAxLCAyMTIsIDk4LCA5MiwgNywgNiwgMSwgMjExLCAxNzgsIDkyLCA3LCA2LCAxLCAyMTEsIDExNywgCisgICAgOTIsIDcsIDYsIDEsIDIxMCwgMTU5LCA5MiwgMjQwLCAyMDEsIDkyLCAyMzAsIDQ5LCA5MiwgMjIxLCAxODMsIDkyLCAyMTgsIAorICAgIDIyNiwgOTIsIDIyNCwgMjE4LCA5MiwgMjEyLCAyMywgMTUyLCAzNywgNywgNiwgMSwgNjEsIDE1MiwgMzcsIDcsIDYsIDEsIAorICAgIDI1MywgMTU4LCAxNTIsIDM3LCA3LCA2LCAxLCAyNTEsIDY2LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDksIDYwLCAxNTIsIDM3LCAKKyAgICA3LCA2LCAxLCA3NSwgMTUyLCAzNywgNywgNiwgMSwgMjQ1LCA2LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDMsIDIwMiwgMTUyLCAKKyAgICAzNywgNywgNiwgMSwgMjQyLCA2MCwgMTUyLCAzNywgNywgNiwgMSwgNzMsIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMTQ0LCAKKyAgICAxNTIsIDM3LCA3LCA2LCAxLCAyMzUsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCAxNTYsIDE1MiwgMzcsIDcsIDYsIDEsIDE5MywgCisgICAgMTUyLCAzNywgNywgNiwgMSwgMjMwLCAyNSwgMTUyLCAzNywgNywgNiwgMSwgNzYsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNiwgCisgICAgMTA1LCAxNTIsIDM3LCA3LCA2LCAxLCAyMjQsIDk2LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTMsIDE1MiwgMzcsIDcsIDYsIDEsIAorICAgIDIyMiwgOTEsIDE1MiwgMzcsIDcsIDYsIDEsIDIxNywgMTUyLCAxNTIsIDM3LCA3LCA2LCAxLCA3MCwgMTUyLCAzNywgNywgNiwgCisgICAgMSwgMjE0LCAxMDUsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIAorICAgIDM3LCA3LCA2LCAxLCAyMTEsIDExNywgMTUyLCAzNywgNywgNiwgMSwgMjEwLCAxNTksIDIyMywgMTU3LCAyMzEsIDk3LCA1MCwgCisgICAgMjIzLCAxNTcsIDIzMSwgOTQsIDUwLCAxNTIsIDkyLCA3LCA2LCAxLCA2MSwgMTUyLCA5MiwgNywgNiwgMSwgMjUzLCAxNTgsIAorICAgIDE1MiwgOTIsIDcsIDYsIDEsIDI1MSwgNjYsIDE1MiwgOTIsIDcsIDYsIDEsIDI0OSwgNjAsIDE1MiwgOTIsIDcsIDYsIDEsIAorICAgIDc1LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDUsIDYsIDE1MiwgOTIsIDcsIDYsIDEsIDI0MywgMjAyLCAxNTIsIDkyLCA3LCA2LCAKKyAgICAxLCAyNDIsIDYwLCAxNTIsIDkyLCA3LCA2LCAxLCA3MywgMTUyLCA5MiwgNywgNiwgMSwgMjM1LCAxNDQsIDE1MiwgOTIsIDcsIAorICAgIDYsIDEsIDIzNSwgMjMsIDE1MiwgOTIsIDcsIDYsIDEsIDE1NiwgMTUyLCA5MiwgNywgNiwgMSwgMTkzLCAxNTIsIDkyLCA3LCAKKyAgICA2LCAxLCAyMzAsIDI1LCAxNTIsIDkyLCA3LCA2LCAxLCA3NiwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAxMDUsIDE1MiwgOTIsIAorICAgIDcsIDYsIDEsIDIyNCwgOTYsIDE1MiwgOTIsIDcsIDYsIDEsIDE1MywgMTUyLCA5MiwgNywgNiwgMSwgMjIyLCA5MSwgMTUyLCAKKyAgICA5MiwgNywgNiwgMSwgMjE3LCAxNTIsIDE1MiwgOTIsIDcsIDYsIDEsIDcwLCAxNTIsIDkyLCA3LCA2LCAxLCAyMTQsIDEwNSwgCisgICAgMTUyLCA5MiwgNywgNiwgMSwgMjEyLCA5OCwgMTUyLCA5MiwgNywgNiwgMSwgMjExLCAxNzgsIDE1MiwgOTIsIDcsIDYsIDEsIAorICAgIDIxMSwgMTE3LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTAsIDE1OSwgMjQ5LCAxMjgsIDE1MiwgOTIsIDcsIDYsIDEsIDIyNiwgCisgICAgMTA1LCAxNTIsIDkyLCAyNDAsIDExMywgMTUyLCA5MiwgMTkwLCAxNTIsIDkyLCAyMDYsIDE1MiwgOTIsIDI1NSwgMjUsIAorICAgIDE1MiwgOTIsIDIxMiwgMjMsIDQyLCAyNDcsIDE2NCwgOTIsIDI1MCwgMjMsIDkyLCAyNDksIDE3MCwgOTIsIDI0MywgMjUyLCAKKyAgICA5MiwgMjQwLCAxMDUsIDkyLCAyMjksIDg2LCA5MiwgMjI5LCA3OSwgOTIsIDIyNiwgMjE0LCA5MiwgMjE5LCAzNSwgOTIsIAorICAgIDEyMCwgMiwgMjQ1LCAzMSwgNzgsIDkyLCAyMTMsIDExOSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNjEsIDIyMywgCisgICAgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI1MywgMTU4LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNTEsIDY2LCAyMjMsIAorICAgIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNDksIDYwLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3NSwgMjIzLCAxMDMsIAorICAgIDIzNSwgMjM5LCAxNiwgMSwgMjQ1LCA2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNDMsIDIwMiwgMjIzLCAxMDMsIAorICAgIDIzNSwgMjM5LCAxNiwgMSwgMjQyLCA2MCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzMsIDIyMywgMTAzLCAyMzUsIAorICAgIDIzOSwgMTYsIDEsIDIzNSwgMTQ0LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMzUsIDIzLCAyMjMsIDEwMywgMjM1LCAKKyAgICAyMzksIDE2LCAxLCAxNTYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDE5MywgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgCisgICAgMSwgMjMwLCAyNSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIAorICAgIDIyNiwgMTA1LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMjQsIDk2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAKKyAgICAxNTMsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIyMiwgOTEsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxNywgCisgICAgMTUyLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3MCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjE0LCAxMDUsIAorICAgIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMiwgOTgsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMSwgMTc4LCAKKyAgICAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTEsIDExNywgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjEwLCAxNTksIAorICAgIDQyLCAxNDEsIDI0MSwgNjMsIDkyLCA1NiwgMjM0LCAxOCwgOTIsIDU2LCAyMDYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MCwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU0LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjIsIDkyLCA1NiwgMjQ4LCA5MCwgOTIsIAorICAgIDksIDIxNCwgMTc3LCAyMzgsIDY5LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyOCwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKKyAgICA0MiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDM1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDQsIDkyLCA5LCAyMTQsIDE3NywgCisgICAgMjM4LCA2NSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDUxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjcsIDkyLCA5LCAyMTQsIAorICAgIDE3NywgMjM4LCA0MywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjksIDkyLCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCAzNCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI3LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTcsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDM3LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCisgICAgNDgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDcyLCA5MiwgOSwgMjE0LCAxNzcsIAorICAgIDIzOCwgNzEsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyNSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDUyLCA5MiwgOSwgMjE0LCAKKyAgICAxNzcsIDIzOCwgNzAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ3LCA5MiwgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgMjYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDMxLCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2MCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAorICAgIDM4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0MSwgOTIsIDksIDIxNCwgMTc3LCAKKyAgICAyMzgsIDMzLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjQsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1OCwgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgMzksIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgCisgICAgMTc3LCAyMzgsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA2OSwgMjE2LCA2LCAKKyAgICAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNTMsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDM2LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA0OSwgMjE2LCAKKyAgICA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgMzIsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDYzLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA0NSwgMzcsIAorICAgIDE1NCwgMjU0LCAyNDUsIDM3LCAxNTQsIDI1NSwgMTIsIDI0OSwgNzEsIDI0NCwgNDIsIDI1MCwgMCwgMjE0LCAxOTQsIDIyOCwgCisgICAgMjEzLCAyLCAyMTgsIDE1MywgMjE4LCAzMywgMTE3LCAyMzAsIDExNCwgMjE4LCAzMiwgMjUwLCAyNiwgMjUzLCAyMDcsIAorICAgIDI0NiwgNTQsIDIxOCwgMzEsIDExNywgMjUxLCAxMTgsIDIyMywgMTU4LCAyNTEsIDE0MCwgMjUzLCAyMDcsIDIyOCwgMjEyLCAKKyAgICAyMTIsIDQxLCAyMTIsIDM1LCAyMTMsIDEzMSwgMjMwLCAxOTUsIDIxMiwgMjUsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjQ1LCAKKyAgICA0NSwgMjQ1LCAyMjQsIDI0MiwgMTgxLCAyNTQsIDEyOCwgMjQ1LCAyMjQsIDI0MiwgMTgxLCAyNTMsIDIyNSwgMjQyLCAxODEsIAorICAgIDIsIDIzMSwgNTEsIDE2NiwgMjMwLCAxMjksIDg3LCAyMTIsIDI3LCAyNDksIDEzNywgMjMwLCAxMjksIDg3LCAyNDQsIDkyLCAKKyAgICAyMjQsIDIyLCAyMzAsIDEyOSwgODcsIDIxMiwgMjcsIDI0MiwgMjEwLCAyMzAsIDEyOSwgODcsIDI0MywgMjI5LCAyMzAsIAorICAgIDEyOSwgODcsIDIxMiwgNTIsIDI0MiwgMjEwLCAyMzAsIDEyOSwgODcsIDIzMywgODAsIDIyNCwgMjIsIDIzMCwgMTI5LCA4NywgCisgICAgMjEyLCA1MiwgMjQ5LCAxMzcsIDIzMCwgMTI5LCA4NywgMjQ5LCAxMzcsIDIzMCwgMTI4LCAxNjYsIDIzMCwgMTI5LCAyLCAKKyAgICAyNDQsIDE5MCwgMjQ0LCA5MiwgMjI0LCAyMiwgMjMwLCAxMjksIDIsIDI0NCwgMTkwLCAyMzMsIDgwLCAyMjQsIDIyLCAyMzAsIAorICAgIDEyOSwgMiwgMjQ0LCAxOTAsIDI0MywgMjI5LCAyMzAsIDEyOSwgMiwgMjQ0LCAxOTAsIDIxOCwgMzgsIDIsIDI0NCwgMTkwLCAKKyAgICAyNDIsIDE3OSwgMjE4LCAxNTYsIDIxOSwgMjU1LCAyMTgsIDE1NiwgMjUwLCAxMTYsIDIyMSwgMTY4LCAyNDUsIDM5LCAyMTUsIAorICAgIDIzNSwgMjQ4LCA4NCwgMjE1LCAyMzUsIDIyNiwgNTksIDIxNSwgMjM1LCAyNTEsIDI3LCAyMTUsIDEwOSwgMjUwLCAxMTgsIAorICAgIDI1MSwgMjEwLCAyMjIsIDE5MSwgMjQxLCAxNzksIDIxOCwgMzYsIDI1MSwgMjEwLCAyNDUsIDIyOCwgNjQsIDIzMSwgMTk0LCAKKyAgICAyNDUsIDIyOCwgNjQsIDIyMywgMzEsIDI0MSwgMjA0LCAyNDQsIDExLCAyMzMsIDU0LCAyNDksIDI0NiwgMjMxLCAxNzAsIAorICAgIDIzMywgNTMsIDI0NCwgMTc2LCAyMzMsIDUzLCAyMzMsIDU0LCAyNDQsIDQ3LCAyMzYsIDAsIDIxMSwgMjM5LCAyMzAsIDU4LCAKKyAgICAyMTYsIDM0LCAyNTMsIDE5MSwgMjQyLCAxNDMsIDIzMSwgNjcsIDIxMiwgMzksIDIxNywgNTcsIDIzMywgMjYsIDI1MiwgCisgICAgMTQ5LCAyMjUsIDYyLCAyMjMsIDExMSwgMjU0LCA1NCwgMjQyLCAxMjcsIDI1NCwgNTQsIDIyNSwgMjE3LCAyMjUsIDIxOCwgCisgICAgMjUwLCAxMTksIDIxOCwgMTE0LCAyNDIsIDIzLCAyMTksIDkwLCA2NCwgMjI1LCA0NCwgMjMxLCA4NywgMjI2LCAxOTcsIAorICAgIDI1MSwgMTk0LCAyMjQsIDIyOSwgMjMzLCAzNiwgMjIzLCAzMiwgMjQ5LCAxNDIsIDIyMywgMzIsIDI1MiwgMTU5LCAyNDksIAorICAgIDE3MywgMjIzLCAzMSwgMjQ5LCA5NSwgMjIsIDIyMywgMzEsIDIxOCwgMTQxLCAyNTEsIDE2NywgMjE5LCAxNCwgMjUxLCAKKyAgICAxNTEsIDI0MywgMjUxLCAyNDMsIDI0NywgMjIyLCAyMDcsIDIxNywgMjQ2LCAyMjQsIDIzMSwgMjQ4LCAxNzUsIDIyNiwgCisgICAgMjM2LCAyMTgsIDcsIDI0MywgMjQ4LCAyMTksIDIzMCwgMjQ0LCA5MSwgMjUxLCAyMSwgMiwgMjE3LCAyMzksIDI0OCwgMzUsIAorICAgIDIxOSwgNTIsIDI0MCwgMTEyLCAyNDksIDE0MSwgMjIwLCA3MCwgMjQwLCAxMTEsIDI0MCwgMTEyLCAyNDksIDE0MSwgMjQ2LCAKKyAgICAxMDgsIDI0OSwgMTcyLCAyNTAsIDg0LCAxMzAsIDI1MCwgMjU0LCAyMzIsIDE0MSwgMjQ5LCA4OCwgMjQxLCA1NSwgMjI0LCAKKyAgICAyMzMsIDIxOSwgMjQwLCAyNTIsIDM2LCAyNTEsIDE2MywgMjI0LCAyMzQsIDY0LCAyNDQsIDMzLCAyNDksIDE3MSwgMjQ0LCAKKyAgICAyNCwgMjIsIDIzNCwgMzIsIDIxNywgMTksIDIxMSwgMjMwLCAyNDIsIDEzLCAyMjIsIDEyLCAyNTEsIDE3NywgMjIsIDI0OSwgCisgICAgMTAyLCAyMTEsIDIzNywgMjQyLCAxODQsIDI0OSwgMjM1LCAyNDIsIDE4NCwgMjE1LCAxOTMsIDI0NiwgOTAsIDI1MiwgNjIsIAorICAgIDIzMCwgOTMsIDI1MCwgNywgMjUyLCA2MiwgMjMwLCA5MiwgMjUyLCAxODcsIDI1MSwgMTc2LCAyMjMsIDMzLCAyMTEsIDIwMSwgCisgICAgMjI0LCAxOTUsIDI1MSwgMjM1LCAyNTEsIDIwLCAyMzUsIDEzOCwgMjUwLCA3NywgMjE1LCAyMzUsIDI0NCwgMTYyLCAyNTAsIAorICAgIDc2LCAyNDQsIDk0LCAyNDQsIDk1LCAyMTksIDEyLCAyNTIsIDE1OCwgMjI1LCAyNTAsIDIyNCwgMjQ0LCAyNDksIDIwNCwgCisgICAgMjUyLCAxNTksIDIxNywgNTksIDIxNSwgMjM1LCAyNDksIDEyOCwgMjQ0LCA2NywgMjI1LCA2MywgMjQ4LCA4MSwgMjM1LCAKKyAgICAxMzEsIDI0NywgMTMxLCAyNTAsIDIzMiwgMjE4LCAxMTMsIDIxMSwgMjQwLCAyNTAsIDk4LCAyMzAsIDEyOSwgMjEzLCAxNjQsIAorICAgIDI1MCwgMTYyLCAyMjEsIDE5OSwgMjIxLCAyMjQsIDI0MiwgMTQ4LCAyNTAsIDI1MSwgMjUwLCAyMzMsIDI0MCwgMjQ1LCAKKyAgICAyNDQsIDEzMCwgMjEyLCAwLCAyMjIsIDIwMCwgMjQ5LCAyMzYsIDI0NCwgODYsIDIyNSwgMiwgMjIsIDI0NCwgOTAsIDIzMCwgCisgICAgMjI3LCAyMzAsIDEwOCwgMjUxLCAxMCwgMjUwLCAzOSwgMjQxLCAyMzIsIDI1MywgMjQxLCAyMjYsIDYyLCAyMTYsIDE0LCAKKyAgICAyNDEsIDI1MSwgMjUwLCAyOSwgMjE2LCAyNDIsIDIxNiwgMTEzLCAyNTAsIDIwLCAyNTEsIDIwMiwgMjI1LCAxNzcsIDI1MywgCisgICAgMjQwLCAyMTMsIDE3MiwgMjQzLCAxMTAsIDI0NywgMTk3LCAyNDEsIDE1NiwgMjE5LCA4NCwgMjMxLCAyMzQsIDI1MSwgMjQ1LCAKKyAgICAyNDMsIDExMSwgMjQ3LCAyNDAsIDI1MSwgMTY2LCAyNDQsIDUyLCAyMjUsIDMzLCAyNTAsIDI0MSwgMjgsIDIyOCwgNDcsIAorICAgIDIzMCwgODUsIDI4LCAyMjgsIDQyLCAyMjEsIDIxMiwgMjQyLCA5OSwgMjgsIDIzNCwgMTM3LCAyMTUsIDE5MCwgMjEzLCAKKyAgICAxNTQsIDI4LCAyMjEsIDE5MiwgMjIyLCAxMjQsIDIyMCwgMTEsIDIsIDIyMSwgMjI3LCAyMTYsIDI0NCwgMjIzLCAxNzgsIAorICAgIDIyLCAyNTIsIDE1OSwgMjE5LCAxMDUsIDIyLCAyMTksIDEwNSwgMjUxLCAxODcsIDI1MiwgMTIzLCAyMiwgMjQxLCA0OSwgCisgICAgMjUwLCAxMjAsIDI0NCwgNzMsIDIxOSwgNjMsIDIyMiwgMTI1LCAyMTgsIDEyLCAyMTUsIDE5NCwgMjQwLCAyNDYsIDIyMywgCisgICAgMTc5LCAyNTQsIDEyOSwgMjQ0LCAzMSwgMjIyLCAxMzYsIDI0NCwgMzEsIDIxNywgMjQxLCAyNDAsIDIzNSwgMjUxLCAxMTksIAorICAgIDI0MCwgMjM1LCAyLCAyNDMsIDk0LCAyMjYsIDIyOSwgMjUxLCAxMTksIDIzNSwgMTMxLCAyMjQsIDIzOSwgMjI2LCAyMjgsIAorICAgIDI0NSwgNDQsIDIyNCwgMjM5LCAyMjYsIDIyOCwgMjQwLCAyNDQsIDI1MiwgMTQ1LCAyNTMsIDE4MSwgMjE2LCAyNTIsIDIzMSwgCisgICAgMjM0LCAyNDAsIDI0MCwgMjMyLCAxMTEsIDI0MCwgMjQwLCAyNDksIDE3NiwgMjE4LCAxMjUsIDIyMSwgMTk4LCAyNDgsIDQzLCAKKyAgICAyMTgsIDEyNSwgMjQ0LCAxODAsIDIzNSwgMTQ5LCAyMzMsIDg5LCAyMzUsIDEzMSwgMjUwLCAyMjYsIDI0NSwgNDQsIDI1MCwgCisgICAgMjI2LCAyMjMsIDE0MSwgMjMwLCAxMTIsIDIyNiwgMTE0LCAyMTIsIDQxLCAyNTEsIDEyMywgMjQ5LCAxNDUsIDIxNiwgMTA2LCAKKyAgICAyMzMsIDE4LCAyMjMsIDE4MCwgMjUwLCAyMjQsIDI0NiwgOTYsIDI0OSwgMTM1LCAyMTIsIDMsIDIxOSwgNzAsIDIxOSwgNjgsIAorICAgIDI0MCwgMjQ1LCAyMjMsIDE1MywgMjQyLCAxNzAsIDIyMCwgNTcsIDIzMCwgMTQ1LCAyMjIsIDE5NCwgMjUwLCAxMDgsIDI0NywgCisgICAgMTM2LCAyMjUsIDczLCAyNTEsIDIwMywgMjQ1LCAxNjksIDIyNiwgMjM4LCAyMTgsIDI1MiwgMjIwLCA1MiwgMjUxLCAxMjIsIAorICAgIDI1NCwgOTIsIDI0MSwgNTQsIDIzMywgMTIxLCAyNTIsIDYwLCAyNDQsIDkwLCAyMTUsIDE5MywgMjQ0LCA5MCwgMjUxLCAKKyAgICAyMDksIDIxNSwgOTEsIDI0MSwgMjQ5LCAyNTAsIDEwOSwgMjUyLCAxODcsIDI1MCwgMTA5LCAyNDMsIDI0MiwgMjUyLCAxODcsIAorICAgIDI1MCwgMTA5LCAyNTEsIDIzNywgMjI1LCAxOTUsIDIzNCwgMjYsIDIyNCwgMjQ4LCAyNDYsIDg3LCAyNTEsIDExLCAyNTIsIAorICAgIDE3NywgMjUxLCAxMSwgMjQ3LCAxMzAsIDIzMCwgMTEzLCAyNDQsIDE5MCwgMjQ5LCAxNDYsIDI0NCwgMTkwLCAyMTYsIDEwNywgCisgICAgMjQ0LCAxOTAsIDIyMywgMTgxLCAyNDQsIDE5MCwgMjUwLCAyMjUsIDI0NCwgMTkwLCAyNDYsIDk3LCAyNDQsIDE5MCwgMjE4LCAKKyAgICAyNDEsIDIxMiwgMywgMjQwLCAyNDYsIDI0NCwgMTkwLCAyMzAsIDE0NiwgMjQ0LCAxOTAsIDI0NywgMTM3LCAyNDQsIDE5MCwgCisgICAgMjI1LCA3NCwgMjQ0LCAxOTAsIDI0MywgMjQ1LCAyNDQsIDE5MCwgMjQyLCAyMCwgMjQ0LCAxOTAsIDIxMSwgMjI0LCAyNDQsIAorICAgIDE5MCwgMjUyLCA3MSwgMjQ0LCAxOTAsIDIyNiwgNDUsIDI0NCwgMTkwLCAyMjUsIDc0LCAyMjgsIDUzLCAyMjUsIDIzMiwgCisgICAgMjI0LCAxODYsIDI0NSwgMTMsIDI0NSwgMjI3LCAyMjgsIDUzLCAyMzAsIDExMCwgMjE2LCAxOSwgNzEsIDEyMCwgMjI1LCA3LCAKKyAgICAyNTIsIDE4MiwgMjM1LCAyNDIsIDcxLCAxMjQsIDIyNSwgNywgMjUyLCAxODIsIDIzNSwgMjQyLCA3MSwgNDMsIDIyNSwgNywgCisgICAgMjUyLCAxODIsIDIzNSwgMjQyLCA3MSwgNDQsIDIyNSwgNywgMjUyLCAxODIsIDIzNSwgMjQyLCAyNDQsIDg0LCAyNDIsIDE2LCAKKyAgICA1MCwgMjEyLCAzMywgMjQyLCAxNiwgNTAsIDIyNiwgMjE1LCAyNDIsIDE2LCA1MCwgMjE2LCAxMzUsIDEyMCwgNTAsIDIxNiwgCisgICAgMTM1LCAxMjQsIDUwLCAyNTAsIDE5LCAyNDIsIDExLCA1MCwgMjA0LCAyNDIsIDExLCA1MCwgMjQ5LCAxMjMsIDIxMSwgMjIwLCAKKyAgICAyNDEsIDI1MSwgMjQ1LCAxNCwgMjI5LCAxMDQsIDIxNywgMTUxLCAyMzUsIDEyNSwgMjQ2LCA5MiwgMjM0LCA4MiwgMjUxLCAKKyAgICAyNDcsIDIxMSwgMjIwLCAyNDksIDI0OSwgMjI0LCAxMjcsIDI0MiwgMTQsIDIyNCwgMjMwLCAyMzEsIDE3NywgMjIwLCA0LCAKKyAgICAyNTMsIDIwMywgMjIwLCA0LCAyNDEsIDE2NCwgMjIwLCA0LCAyMTEsIDIyMCwgMjIxLCAyNDAsIDIxMSwgMjIwLCAyNTEsIAorICAgIDE4NiwgMjQ0LCAyOSwgMjUxLCA5MCwgMjM2LCAwLCAyMTksIDE2OSwgMjUxLCA4OSwgMjM2LCAwLCAyMTksIDE2OSwgMjUxLCAKKyAgICAxNjIsIDI0MiwgMTk0LCAyMzEsIDE4NSwgMjExLCAyMjEsIDI0NCwgMTc0LCAyMzEsIDE4NiwgMjIsIDIxMSwgMjIyLCAyNDEsIAorICAgIDYwLCAyNDIsIDEwLCAxMTMsIDIzMSwgNTksIDI0MSwgNjAsIDI0MiwgMTAsIDExMywgMjExLCAyMTksIDI0MSwgNjAsIDI0MiwgCisgICAgMTAsIDIyNCwgMjU1LCAyMjYsIDIyNywgMjExLCAyMjIsIDIsIDI1MSwgMTA2LCAyNDUsIDIyNSwgMjUxLCAxNDEsIDIsIAorICAgIDIxMywgMjQ2LCAyMjUsIDE2OCwgMiwgMjUxLCAyMTIsIDI0MiwgMzQsIDIzMSwgMTg2LCAyLCAyNDIsIDExMCwgMjI1LCAKKyAgICAxMDksIDIzMSwgMTc0LCAyMzEsIDE4NiwgMiwgMjE1LCA5NywgMjI2LCAyMDgsIDIzMSwgMTg1LCAyMjYsIDIwOCwgMjExLCAKKyAgICAyMjEsIDI1MiwgMTg2LCAyNDksIDE5MCwgMjExLCAyMDUsIDIyNCwgMTg5LCAyMzUsIDEzMSwgMjI2LCAyMjMsIDIzNSwgCisgICAgMTMxLCAyNDIsIDE2OSwgMjQyLCAyMjIsIDI1MiwgMTg3LCAyNTQsIDExMywgMjQ1LCAxOCwgMjU0LCAxNjAsIDI1NCwgMTYxLCAKKyAgICAyMzAsIDEzNiwgMjM2LCA1LCAyMTksIDEwMCwgMjM1LCAyMzIsIDI0OCwgMzQsIDIyNSwgMTY3LCAyNDIsIDEwNSwgMjQ4LCAKKyAgICAxNzksIDIzMiwgMjAxLCAyMjksIDIxMSwgMjI0LCAyNTQsIDI0NCwgMTkxLCAyMzEsIDE0MiwgMjQyLCAzMywgMjUyLCAxMzgsIAorICAgIDIyNSwgMSwgMjE3LCAxNzEsIDIyNSwgNjYsIDIzNCwgNjQsIDc4LCAyMzIsIDExMSwgMjMzLCAxMCwgMjIyLCAyMzMsIDI0MywgCisgICAgNTQsIDIxOCwgMTMxLCAyMzQsIDYzLCAyNTEsIDE3MSwgMjQ5LCAxNDgsIDIsIDI0MSwgMjI3LCAyMTIsIDE5LCAyNTIsIDY5LCAKKyAgICAyNDEsIDIyNywgMjUxLCAxMzUsIDI0MSwgMjI3LCAxMTMsIDI0MSwgMjI1LCAyMTksIDEwLCAyNDEsIDIyNywgMjQyLCAxMjAsIAorICAgIDI0MSwgMjI3LCAyNDEsIDIyOCwgMiwgNzQsIDI1MSwgMjA4LCAyNDEsIDIyNywgMjQyLCAxMjcsIDI0MSwgMjI3LCAyMTEsIAorICAgIDQyLCAyNDEsIDIyNywgMjI0LCAxMjgsIDI0MSwgMjI3LCAyNDEsIDIyOCwgMiwgMjIzLCAzMywgMjIzLCA0NCwgMjQxLCAKKyAgICAyMjUsIDI0MSwgMjI4LCAyNDgsIDgxLCAyNDcsIDI0OSwgMjIwLCA4MiwgMiwgMTE1LCA1OSwgMjM1LCAyMTUsIDI0NSwgCisgICAgMTcyLCAxOTIsIDI1MSwgMTE2LCAyNTQsIDExMiwgODcsIDI1MSwgMTk1LCAyMTksIDkyLCA4NywgMjQ5LCAyMjgsIDg3LCAKKyAgICAyMTgsIDI0NiwgMjE3LCAyNDgsIDg3LCAyNDYsIDg1LCAyNDgsIDE1NywgODcsIDIyNSwgNjcsIDY0LCAyMjQsIDI0OSwgCisgICAgMjQ0LCA2MSwgMjUyLCAzLCAyNDcsIDE2NSwgODcsIDIxOSwgMywgMjUyLCAxNTgsIDIxNiwgMTQ5LCAyNTIsIDE1OCwgNzEsIAorICAgIDI0NCwgNTEsIDI0MCwgMjExLCAyMjUsIDUsIDg3LCAyMzAsIDE0OSwgMjUyLCAxNzIsIDI0OSwgOTgsIDI0NSwgMzIsIDExNCwgCisgICAgMjQ3LCAxMzIsIDUwLCAyNDksIDEzOSwgMjUwLCAyNDIsIDI1MiwgMTQ0LCAyLCAyMTEsIDQwLCA1MCwgMjUyLCAxNDQsIDIsIAorICAgIDI0NywgMTMyLCA1MCwgMjUyLCAxNDQsIDIsIDI0NSwgNDcsIDUwLCAyNTIsIDE0NCwgMiwgMjI0LCAyMjgsIDUwLCAyMzAsIAorICAgIDE0OSwgMiwgMjExLCAyMzUsIDI1MCwgMTM4LCAyLCAyMTQsIDE1MywgMjE1LCAyMzEsIDIyLCAyMTEsIDQwLCA1MCwgMjIxLCAKKyAgICAxNzgsIDIyNSwgMTY2LCAyNDksIDIwOCwgMjUxLCAxMzksIDIzMCwgMTg2LCAyNDQsIDU2LCAyNDcsIDE4NSwgMjI2LCAxNjEsIAorICAgIDI0NywgMTkwLCAyNDYsIDQ5LCAyNDQsIDEwNywgMjQ0LCA0MCwgMjA0LCAyNDQsIDEwNywgMjQ0LCA0MCwgMjI2LCA3NiwgMiwgCisgICAgMjQ5LCAxMDAsIDIyNiwgNzYsIDI0NCwgMTgzLCAyMTQsIDE2MywgMjUxLCAxNiwgMjE3LCAxOCwgMjUxLCAxNiwgMjUwLCAKKyAgICAyNDMsIDIzNSwgMjQyLCAyNTAsIDEzOCwgMiwgMjE0LCAxNTMsIDIxNSwgMjMwLCAyNTAsIDEzOCwgMiwgMjQ2LCAxMDQsIAorICAgIDIxNSwgMjMwLCAyNTIsIDE0MSwgMjUwLCAxMzcsIDI1MCwgNiwgMjI0LCAxMjMsIDIyMiwgMTg1LCAyMjQsIDEyMywgMjI2LCAKKyAgICAxOSwgMjE4LCAxMjEsIDIyMiwgMTMxLCAyMTUsIDIyMiwgMjIyLCAxMzEsIDI1MSwgMTkxLCAyMTcsIDkxLCAyMzMsIDUxLCAKKyAgICAyMjgsIDQ1LCAyMjgsIDQ2LCAyLCAyNDgsIDgwLCAyNDksIDE0NywgMjUwLCAwLCAyNTEsIDE5MiwgMjA0LCAyNTEsIDE5MiwgCisgICAgMjQyLCAxMjcsIDI1MSwgMTkyLCAyNTEsIDIwOCwgMjUxLCAxOTIsIDIyNiwgMTU3LCAyNTEsIDE5MiwgMjUxLCAxODksIAorICAgIDIyOSwgMjA1LCAyNTIsIDE3NSwgMjIxLCAxODYsIDIzMSwgNjAsIDIxNywgMSwgMjIzLCAxMjMsIDIyNiwgNzQsIDI0NCwgCisgICAgMTU5LCAyMzEsIDIzNCwgMjIxLCAyMjMsIDI1NCwgODksIDIyNCwgMTQ1LCAyNTQsIDI1MiwgMjMyLCAxMTMsIDI1MCwgMTI3LCAKKyAgICAyMzEsIDcyLCAyMjYsIDEyOSwgMjE1LCAyMzgsIDIzNSwgMjUyLCAyMTUsIDIzOCwgMjI2LCA4MiwgMjQ2LCAyNCwgODcsIAorICAgIDIzNSwgMjQ5LCAyNDUsIDExOSwgMjQ1LCAxMjAsIDIsIDI0NiwgMTA0LCA4MCwgNDgsIDI1MCwgMCwgMjMxLCAyMDAsIDIsIAorICAgIDIzMiwgMTA3LCAyNDQsIDczLCAyNTAsIDAsIDIzMSwgMjAwLCAyLCAyMjMsIDE1NywgMjQ0LCA3MywgMjA0LCAyMzEsIDIwMCwgCisgICAgMiwgMjIzLCAxNTcsIDI0NCwgNzMsIDIwNCwgMjMxLCAyMDAsIDIsIDIzMiwgMTA3LCAyNDQsIDczLCAyMjQsIDIzNiwgMjI0LCAKKyAgICAyMzcsIDI0MCwgMjQ4LCAyMjksIDg0LCAyMzAsIDE1OSwgMjI1LCAxMTcsIDIzMCwgMTU5LCAyMjUsIDExOCwgMiwgOTcsIAorICAgIDgwLCAyNTMsIDIwNywgMjMzLCA0NiwgMjEzLCAxNzUsIDIzMCwgMTU4LCAyMzAsIDE1OSwgMjI1LCAxMTgsIDIyNiwgMjMwLCAKKyAgICAyMjgsIDc1LCAyMzAsIDE1OSwgMjI1LCAxMTYsIDI1NCwgOTAsIDIsIDI1MiwgMTI5LCAyNTEsIDEwLCAyMTMsIDE3MiwgCisgICAgMjUxLCAxMCwgMjE2LCAyNTQsIDIyMywgMTczLCAyMTMsIDE3MSwgMjE1LCA2MCwgOTcsIDI1MywgMjQ3LCAyNTAsIDIsIDk3LCAKKyAgICAyMiwgMTQwLCAyMDQsIDI1MCwgMzYsIDI1MywgMjQ3LCAyNTAsIDIsIDk3LCAyMiwgMTQwLCAyMDQsIDI1MCwgMzYsIDI1MywgCisgICAgMjQ4LCAyLCAzNywgMTIzLCAyMjYsIDEyMCwgMjUwLCAyLCAyNDYsIDEwNCwgMjIsIDIxNCwgMTUzLCAyMDQsIDI1MCwgMzYsIAorICAgIDI1MywgMjQ3LCAyNTQsIDg4LCAyNDYsIDEwNCwgMjIsIDIxNCwgMTUzLCAyMDQsIDI1MCwgMzYsIDI1MywgMjQ3LCAxMjEsIAorICAgIDI1MSwgMTM4LCA4NywgMTI1LCAyNTEsIDEzOCwgODcsIDIxOSwgNywgMiwgMjUxLCA0LCA5MSwgMjE5LCA2LCAyMTksIDcsIAorICAgIDIsIDEyMywgMjE5LCAzMSwgMjEyLCAzNSwgMjE5LCA3LCAyLCAxMzQsIDIxOSwgMzEsIDIxMiwgMzQsIDI1MiwgMTE1LCAKKyAgICAyNDUsIDE3MiwgMjI1LCAyNywgMjMzLCA0MiwgMjMxLCAyMTEsIDI0MiwgMTg0LCAyMjIsIDI0NywgMjMxLCAyMTEsIDI0MiwgCisgICAgMTg0LCAyMzIsIDE1MiwgMiwgMjM1LCAyMjUsIDIyNSwgMTk5LCAyNTAsIDAsIDIzMiwgMTUyLCAyLCAyMzQsIDEzOCwgMjM0LCAKKyAgICAxMzgsIDIzMiwgMTUxLCAyMDQsIDIzMiwgMTUxLCAyNTIsIDQ0LCAyNTIsIDQ1LCAyLCAyNTEsIDQsIDkxLCAyNTEsIDE5MCwgCisgICAgMjMyLCAyMDQsIDg3LCAyMjMsIDE3NCwgMjUxLCA4NiwgMjUyLCAxODUsIDIsIDE0MCwgODAsIDQ4LCAyNDUsIDE0MywgMiwgCisgICAgMTQwLCA4MCwgNDgsIDIyNiwgMTk3LCAyLCAyNDUsIDMxLCAxNjQsIDIsIDQzLCA0NCwgODAsIDQ4LCAyMTksIDM5LCAyLCAKKyAgICA5NywgODAsIDQ4LCAyMTYsIDE0LCAyLCAyMTQsIDE1MywgODAsIDQ4LCAyMjgsIDc1LCAxMjMsIDIxNCwgMTg0LCAyNDUsIAorICAgIDE5MSwgODcsIDIzNCwgMTM2LCAyMTYsIDI0NywgMjM1LCAyMTksIDE2LCAzMSwgNywgNiwgMjMzLCA5LCAyMzUsIDIxOSwgCisgICAgMTYsIDMxLCA3LCA0LCAyMzMsIDksIDIzNSwgMjE5LCAxNiwgMzEsIDIyNywgMTk5LCAyMzUsIDIxOSwgMTYsIDMxLCAyMTcsIAorICAgIDE4MywgMjM1LCAyMTksIDE2LCAzMSwgNywgMjMzLCA5LCAyNDQsIDk2LCAyNDUsIDE3MiwgMjE2LCA5LCAyMTEsIDE5OSwgCisgICAgMjQyLCAyMSwgMjI3LCAxODIsIDIyLCAyNTEsIDE5NywgMjQxLCA2NiwgMjI1LCA1MCwgMjMwLCAyMjYsIDIxNiwgMjU1LCAKKyAgICAyNDksIDExNCwgMjUyLCAxNTksIDIxOSwgMTI1LCAyMjUsIDksIDIxOCwgMTU3LCAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIAorICAgIDIzNSwgMTMxLCAxNiwgMzEsIDI1MiwgNTcsIDIxNSwgMjIwLCAyNDUsIDE1NiwgODUsIDQyLCAyNTEsIDg2LCA3MSwgNDIsIAorICAgIDI1MSwgODYsIDIzMywgODUsIDIyMywgMTExLCAyNTAsIDM1LCAyMzMsIDg1LCAyNTEsIDIwOCwgMjUwLCAzNSwgMjMzLCA4NSwgCisgICAgMjI2LCAxNTcsIDI0NywgMjQ4LCAyMzMsIDg1LCAyNTEsIDIwOCwgMjQ3LCAyNDgsIDQsIDIyNiwgMTU3LCAyNDcsIDI0OCwgCisgICAgNCwgMjUxLCAyMDgsIDI0NywgMjQ4LCAyMTQsIDE2MiwgMjIzLCAxMTEsIDIxNSwgMjI1LCAyNDYsIDEwNSwgMjIzLCAxMTEsIAorICAgIDIxNSwgMjI1LCAyMTQsIDE2MiwgNCwgMjIzLCAxMTEsIDIxNSwgMjI1LCAyNDYsIDEwNSwgNCwgMjIzLCAxMTEsIDIxNSwgCisgICAgMjI1LCAzNywgMjQ5LCAxMzEsIDIyNCwgMjUyLCAyNDksIDEzMSwgMjI0LCAyNTMsIDIsIDI0MiwgMjYsIDUxLCAyNDksIAorICAgIDEzMSwgMjI0LCAyNTIsIDIyOCwgNDksIDQzLCAyMjAsIDE1MywgMiwgMTM0LCAyNDcsIDExOCwgMjUwLCA0LCAyNDQsIDE5MSwgCisgICAgMTIzLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMTEzLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMTM0LCAKKyAgICAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCAxMSwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgODEsIAorICAgIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTksIDEyNSwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIyMCwgCisgICAgMTIyLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ1LCAxOTMsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAKKyAgICAyMjgsIDIwMCwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNiwgMjQ4LCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIAorICAgIDE5MSwgMjQ1LCAxNjgsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDc3LCAyMjYsIDI0MiwgMjUwLCA0LCAKKyAgICAyNDQsIDE5MSwgMjI2LCAxOTIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNSwgNTYsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNiwgCisgICAgMTQwLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDcsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgNzksIDI1MCwgNCwgMjQ0LCAKKyAgICAxOTEsIDIxOSwgMTIxLCAyNTAsIDQsIDI0NCwgMTkxLCAyMjAsIDEyMSwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ1LCAxOTIsIAorICAgIDI1MCwgNCwgMjQ0LCAxOTEsIDIyOCwgMTk5LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIDI0NiwgMjUwLCA0LCAyNDQsIDE5MSwgCisgICAgMjQ1LCAxNjYsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNSwgNzUsIDIzMCwgMTE3LCAyNDMsIDIzMCwgMjE2LCAzNiwgMjE2LCAyLCAKKyAgICAyMTgsIDE0OCwgNjQsIDIzMiwgMjM5LCAyMTksIDE3MCwgNjQsIDIzNSwgMTMyLCAyMzAsIDEwNiwgMjQyLCAxMjQsIDI0NCwgCisgICAgMTkwLCAyNDIsIDEyNCwgMjQ0LCAxOTEsIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDI0NCwgMTkxLCAyLCAyMTcsIDE0LCA2NCwgCisgICAgMjM1LCA1MywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIAorICAgIDIzMCwgMTExLCAyMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTEsIDIyLCAKKyAgICAyNDksIDIzMCwgMjE3LCAyNDcsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTExLCAyMiwgMjE2LCAxMDQsIAorICAgIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyNDIsIDI1LCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQwLCAyNDcsIAorICAgIDIxMSwgMjMzLCAyNDQsIDE5MCwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDI0NCwgMTkxLCAKKyAgICAyMjEsIDIxNywgMjQ4LCA2MiwgMjQ0LCAzMywgMjIzLCA4OCwgMjQ0LCAxOTAsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyNDEsIAorICAgIDIyNiwgMjQ1LCAxMywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIxOCwgMzQsIDIxOSwgNzMsIDI0NCwgMTkwLCAyMjksIDg3LCAKKyAgICAyNDQsIDE5MCwgMjQ1LCAyMywgMjQ0LCAxOTAsIDIxNCwgMTg4LCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIsIDI0OSwgMjMwLCAKKyAgICAyMTcsIDI0NywgMjI1LCAxOTIsIDI0NCwgMTkwLCAyNDksIDIwMSwgMjQ0LCAxOTAsIDI0OSwgMjAyLCAyNDQsIDE5MCwgCisgICAgMjM0LCA2MiwgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyMTYsIDEzNywgMTE1LCAyMzQsIDYzLCAyMzQsIDYyLCAyNDQsIDE5MSwgCisgICAgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjM0LCA2MiwgMjQ0LCAxOTEsIDIsIDI1MCwgMCwgMjQ1LCAxMywgMjQ0LCAxOTEsIDIsIAorICAgIDIxOCwgODgsIDIxNiwgMTksIDI0NCwgMTkxLCAyLCAyMTgsIDg4LCAyMTYsIDIwLCAyMiwgMjExLCAyMzMsIDI0NSwgMTUsIAorICAgIDI0NCwgMTkxLCAyLCAyMTgsIDg4LCAyMTYsIDIwLCAyMiwgMjE2LCAxMDQsIDI0NSwgMTMsIDI0NywgMTkyLCAyNDQsIDE5MCwgCisgICAgMjExLCAyMDQsIDI0NCwgMTkwLCAyNTQsIDEwOCwgMjQ0LCAxOTAsIDIyNCwgMjI3LCAyNDQsIDE5MCwgMjQ5LCAxMTYsIAorICAgIDI0NCwgMTkwLCAyMjUsIDE3MCwgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyMzIsIDEyNiwgNjQsIDIxNSwgMjA0LCAyNDcsIAorICAgIDE5MiwgMjUxLCA4OCwgMjIzLCA4OCwgMjQ0LCAxOTAsIDI0MywgMjM5LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgCisgICAgMjU0LCAxMDYsIDI0NCwgMTkwLCAyNDQsIDE1MiwgMjQ0LCAxOTAsIDIxMiwgMjAsIDI0NCwgMTkwLCAyMTksIDkxLCAyNDQsIAorICAgIDE5MCwgMjE2LCA3MSwgMjQ0LCAxOTAsIDI0MiwgMTI1LCAyNDQsIDE5MCwgMjMyLCAxMTQsIDI0OSwgMTE2LCAyNDQsIDE5MCwgCisgICAgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIDI0MCwgMjAzLCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAKKyAgICAxMTEsIDIyLCAyNDksIDIzMCwgMjE3LCAyNDcsIDI0NCwgMTkxLCAyMjEsIDE5MCwgMjM2LCAwLCAyNDQsIDE1MywgMjUzLCAKKyAgICAyMTMsIDI0NCwgMTkwLCAyNDQsIDQ5LCAyNDQsIDE5MCwgMjE5LCA5MiwgMjQ0LCAxOTAsIDI0NywgMTY1LCAyNDQsIDE5MCwgCisgICAgMjQ0LCAxOTEsIDIxMSwgMjMwLCAyMzAsIDExMCwgMjQ0LCAxOTEsIDIsIDIzMSwgODQsIDIzMSwgMTQ0LCAyNDIsIDEyNCwgCisgICAgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIxNywgMTQsIAorICAgIDY0LCAyMzUsIDUzLCAyMTksIDc0LCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIDIxOSwgNzQsIDI1MCwgCisgICAgMjI1LCAyNDQsIDE5MSwgMiwgMjQxLCAyMjYsIDI0NSwgMTMsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjExLCAxOTYsIAorICAgIDIxOSwgNzUsIDIzNCwgNjIsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjUwLCAwLCAyNDUsIDEzLCAyMjQsIDIyNywgMjUwLCAKKyAgICAyMjUsIDI0NCwgMTkwLCAyNDksIDExNiwgMjUwLCAyMjUsIDI0NCwgMTkwLCAyMTIsIDIwLCAyNTAsIDIyNSwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyLCAyMjgsIDc1LCAyNDIsIDE2MywgMjQzLCAzNCwgMjQ0LCAxOTEsIDIsIDIyNiwgMjE1LCAyNDMsIDM0LCAKKyAgICAyMjUsIDE2OCwgMjUxLCAxNjgsIDI0OCwgNzUsIDIyMSwgMTY5LCAyMzAsIDE0NSwgMjQxLCAyMjksIDIzMCwgMTQ1LCAyMTksIAorICAgIDgsIDIzMCwgMTQ1LCAyNDIsIDUsIDIyNSwgMTY4LCAyMjMsIDE1NiwgMTIzLCAyNDIsIDE1LCAyMjUsIDE2OCwgMjIzLCAKKyAgICAxNTYsIDI1MSwgMTc4LCAyNDIsIDExLCAyMzYsIDAsIDI1MCwgMTc5LCAyMjUsIDE2OCwgMjQzLCAyMzgsIDIyNSwgMTY4LCAKKyAgICAyLCAyMjQsIDIyNywgMjQ0LCAxOTAsIDIyNSwgMTY4LCAyLCAyNDQsIDQxLCAyNDIsIDEwLCAyMjIsIDIwMywgMjQxLCAyMTQsIAorICAgIDIxOCwgMTQzLCAyMzIsIDE0OSwgMjIzLCAxNjIsIDI1MCwgMjQ0LCAyNDEsIDE2MiwgMjE1LCAyNDgsIDI0MSwgMTYyLCAKKyAgICAyMTUsIDI0OSwgMiwgMjUxLCAxMTQsIDIyOCwgNTMsIDIxNSwgMjQ4LCAyMzEsIDMyLCAxOTIsIDIyMywgMTYzLCAyMTgsIAorICAgIDE0OSwgMjE1LCAyNDYsIDIxNSwgMjQ3LCAyNTAsIDI0NCwgMjUxLCA5MiwgMjI2LCAxOTQsIDI1MSwgOTIsIDIxNSwgMjAxLCAKKyAgICAyNTEsIDkzLCAyMTgsIDEyOSwgMjMwLCAxODcsIDI1NCwgMTMwLCAyNDQsIDk3LCAyNDUsIDEzNywgMjI0LCAyNTUsIDI1MCwgCisgICAgMjQ0LCAyMjYsIDE5NCwgMjI0LCAyNTUsIDI1MCwgMjQ0LCAyMTcsIDMyLCAyMjYsIDE5NCwgMjE3LCAzMiwgMjUzLCAxODAsIAorICAgIDIyNiwgMTk0LCAyNTMsIDE4MCwgMjIzLCAxMTgsIDIxMywgMjQ3LCAyNDgsIDU4LCAyMTUsIDE5MiwgMjUzLCAyNDIsIDIzMiwgCisgICAgMTE3LCAyMTUsIDI1NCwgMjMwLCAxMzksIDIzMCwgMTE2LCAyMjMsIDE2MSwgMjE4LCA2LCAyMjMsIDE2MSwgMjMwLCAxMTYsIAorICAgIDI1MSwgMjgsIDI1NCwgMjI5LCAyMTUsIDI0NSwgMjIwLCAxNiwgMjIyLCAxODIsIDIxOSwgMSwgMjAzLCAyMTUsIDI1MiwgCisgICAgMjMyLCAyMzAsIDY3LCAyMTUsIDI1MiwgMjMyLCAyMzAsIDI0OSwgMTkwLCA1MCwgMjI0LCAyNTUsIDI1MCwgMjI5LCAyMjMsIAorICAgIDQ0LCAyMzIsIDIzMCwgMjE1LCAyMjIsIDI0NCwgNzQsIDIyNiwgMTk3LCAyMjQsIDIzOCwgMjQ3LCAxMjMsIDIyOCwgNzUsIAorICAgIDI0NSwgMTI1LCA1MCwgMjE5LCA3MiwgODcsIDIyOCwgNzUsIDIxOSwgNzIsIDg3LCAyMjQsIDEyMiwgMjMyLCAxOTMsIDIzNiwgCisgICAgMCwgMjM1LCAxNTcsIDIyNSwgNDEsIDg3LCAyNDcsIDE0NiwgMjI4LCA1MiwgMjMyLCAxOTMsIDg3LCAyMjQsIDIzMiwgMjEyLCAKKyAgICA0MSwgODcsIDIyOCwgNjYsIDIxMiwgNDEsIDg3LCAyNTIsIDIsIDIyOCwgNzUsIDI1MiwgMSwgMjUyLCAwLCAyMzAsIDExNiwgCisgICAgMjUyLCAwLCAyMjUsIDIxMywgMjI4LCA3NSwgMjI1LCAyMTIsIDI1MCwgMTAwLCAyNDksIDEyNCwgMjMxLCA1NiwgODcsIAorICAgIDIxMSwgMjE4LCA4NywgMjIzLCA1OSwgMjUyLCAxODcsIDg3LCAyMTYsIDM3LCAyMTIsIDQxLCAyNDksIDI1MywgMjE5LCAKKyAgICAyMzQsIDI1MiwgMTE4LCAyNTIsIDExNiwgMjI1LCAyNDIsIDI0OSwgMTc3LCAyNDksIDg2LCAyNTIsIDE2OSwgMjUwLCAyMiwgCisgICAgNDMsIDIzMiwgOTAsIDEwOCwgMTYsIDMxLCAyMjQsIDMsIDEwOCwgMTYsIDMxLCAyNTQsIDE5MiwgMTA4LCAxNiwgMzEsIAorICAgIDI0NCwgOTYsIDEwOCwgMTYsIDMxLCAyNDUsIDIyMywgMTA4LCAxNiwgMzEsIDIxMiwgNDAsIDEwOCwgMTYsIDMxLCAyNTQsIAorICAgIDQzLCAxMDgsIDE2LCAzMSwgMjU0LCA0NCwgMjIzLCAxMDUsIDEwOCwgMTYsIDMxLCAyNTQsIDQ0LCAyMjMsIDEwNCwgMTA4LCAKKyAgICAxNiwgMzEsIDI1NCwgNDQsIDIxMywgMTQzLCAxMDgsIDE2LCAzMSwgMjU0LCA0NCwgMjEzLCAxNDIsIDEwOCwgMTYsIDMxLCAKKyAgICAyMTMsIDE1NywgMTA4LCAxNiwgMzEsIDIxMywgMTU2LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTUsIDEwOCwgMTYsIDMxLCAyMTgsIAorICAgIDQ0LCAxMDgsIDE2LCAzMSwgMjI1LCAxMjUsIDIxOCwgNDQsIDEwOCwgMTYsIDMxLCA4NSwgMjE4LCA0NCwgMTA4LCAxNiwgCisgICAgMzEsIDIzMSwgNTUsIDIxOCwgNzEsIDEwOCwgMTYsIDMxLCAyMzEsIDU1LCAyMTgsIDcwLCAxMDgsIDE2LCAzMSwgMjMxLCAKKyAgICA1NSwgMjE4LCA2OSwgMTA4LCAxNiwgMzEsIDI1MCwgMzgsIDEwOCwgMTYsIDMxLCAyMjIsIDEsIDEwOCwgMTYsIDMxLCAyMjgsIAorICAgIDE4OCwgMTA4LCAxNiwgMzEsIDIxMywgMTQxLCAxMDgsIDE2LCAzMSwgMjEzLCAxNDAsIDEwOCwgMTYsIDMxLCAyMjIsIDIwNCwgCisgICAgMjIyLCAxLCAxMDgsIDE2LCAzMSwgMjIyLCAyMDQsIDIyMiwgMCwgMTA4LCAxNiwgMzEsIDI0MiwgMTY2LCAxMDgsIDE2LCAKKyAgICAzMSwgMjE5LCAxNjYsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NywgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NywgCisgICAgMjI2LCAxNTIsIDEwOCwgMTYsIDMxLCAyNDksIDEzNCwgNjQsIDIzNSwgMTc2LCAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAKKyAgICAyMzUsIDE3NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTY4LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDIzNSwgMTc1LCAyMjYsIAorICAgIDE1MywgMTA4LCAxNiwgMzEsIDIxOCwgNzIsIDY0LCAyNDksIDE2NywgMTA4LCAxNiwgMzEsIDI0OSwgMTM0LCA2NCwgMjQ5LCAKKyAgICAxNjcsIDEwOCwgMTYsIDMxLCAyNDksIDEzNCwgNjQsIDI0OSwgMTY2LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNjgsIDI1NCwgODMsIAorICAgIDEwOCwgMTYsIDMxLCAyMjIsIDIsIDY0LCAyNDksIDE2OCwgMjU0LCA4MywgMTA4LCAxNiwgMzEsIDIxOCwgNzIsIDY0LCAKKyAgICAyMjIsIDIsIDY0LCAyNDksIDE2NywgMTA4LCAxNiwgMzEsIDIxMywgMjQzLCAxMDgsIDE2LCAzMSwgMjE2LCA4NCwgMjI2LCAKKyAgICAxNTMsIDEwOCwgMTYsIDMxLCAyMzMsIDU3LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDI1NCwgODIsIDIyNiwgMTUzLCAxMDgsIAorICAgIDE2LCAzMSwgMjE4LCA3MiwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIDMxLCAyMjIsIDIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAKKyAgICAzMSwgMjE4LCA3MiwgNjQsIDIyMiwgMiwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIDMxLCAyMTMsIDE1OCwgNjQsIDI1NCwgODEsIAorICAgIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgNjQsIDI1NCwgODAsIAorICAgIDEwOCwgMTYsIDMxLCAyMjMsIDEwMCwgMTA4LCAxNiwgMzEsIDIyMywgOTksIDEwOCwgMTYsIDMxLCAyMjMsIDk4LCAxMDgsIAorICAgIDE2LCAzMSwgMjIzLCA5NywgMTA4LCAxNiwgMzEsIDI1NCwgMTU3LCAxMDgsIDE2LCAzMSwgMjU0LCAxNTYsIDEwOCwgMTYsIAorICAgIDMxLCAyMzEsIDE2MywgMTA4LCAxNiwgMzEsIDIyMiwgNywgMTA4LCAxNiwgMzEsIDI1MywgMjQ2LCAxMDgsIDE2LCAzMSwgCisgICAgMjIzLCAxMjUsIDEwOCwgMTYsIDMxLCAyMjMsIDEyNCwgMTA4LCAxNiwgMzEsIDI1MywgMTgzLCAxMDgsIDE2LCAzMSwgMjUxLCAKKyAgICAyMjksIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjE3LCA0OSwgMTA4LCAxNiwgMzEsIDIxNywgNDgsIDEwOCwgMTYsIDMxLCAKKyAgICAyMjQsIDgsIDIzMiwgMjIyLCAxMDgsIDE2LCAzMSwgMjUxLCAxODMsIDEwOCwgMTYsIDMxLCAyNTEsIDE4MiwgMTA4LCAxNiwgCisgICAgMzEsIDI1MSwgMTgxLCAxMDgsIDE2LCAzMSwgMjU0LCAxMzgsIDEwOCwgMTYsIDMxLCAyMjYsIDIxOCwgMTA4LCAxNiwgMzEsIAorICAgIDIxOCwgMjQ4LCAxMDgsIDE2LCAzMSwgMjE2LCA4MiwgMTA4LCAxNiwgMzEsIDI0MiwgOTYsIDEwOCwgMTYsIDMxLCAyMTIsIAorICAgIDI4LCAxMDgsIDE2LCAzMSwgMjI0LCAyMjYsIDEwOCwgMTYsIDMxLCAyNTEsIDE0LCAxMDgsIDE2LCAzMSwgMjE1LCA4NiwgCisgICAgMTA4LCAxNiwgMzEsIDI1MCwgMjQ2LCAyMzAsIDEyMiwgMTA4LCAxNiwgMzEsIDIyMSwgMjAyLCA2NCwgMjM1LCA1NSwgMTA4LCAKKyAgICAxNiwgMzEsIDI1MSwgMjUsIDEwOCwgMTYsIDMxLCAyMTUsIDIxOSwgMTA4LCAxNiwgMzEsIDIxOCwgMTU0LCAyMTUsIDIxOSwgCisgICAgMTA4LCAxNiwgMzEsIDIzMiwgMTQ4LCAxMDgsIDE2LCAzMSwgMjE5LCA1NiwgMTA4LCAxNiwgMzEsIDIxNCwgMTQyLCAxMDgsIAorICAgIDE2LCAzMSwgMjQwLCAyNDYsIDI0NiwgNjQsIDEwOCwgMTYsIDMxLCAyNTMsIDIyNywgMTA4LCAxNiwgMzEsIDIyNCwgMjM0LCAKKyAgICAyNTMsIDIyNywgMTA4LCAxNiwgMzEsIDI1MSwgMTQyLCAxMDgsIDE2LCAzMSwgMjI0LCAyMjUsIDI1MSwgMTQyLCAxMDgsIAorICAgIDE2LCAzMSwgMjU0LCAxMzUsIDEwOCwgMTYsIDMxLCAyMTgsIDExNywgMjE4LCAyNiwgMjE4LCAxMTYsIDEwOCwgMTYsIDMxLCAKKyAgICAyMTgsIDExNywgMjE4LCAyNiwgMjE4LCAxMTUsIDEwOCwgMTYsIDMxLCAyMTgsIDY4LCAxMDgsIDE2LCAzMSwgMjI0LCAyMDAsIAorICAgIDEwOCwgMTYsIDMxLCAyNDcsIDE4MSwgMTA4LCAxNiwgMzEsIDI0NywgMTgzLCAxMDgsIDE2LCAzMSwgMjQ3LCAxODIsIDEwOCwgCisgICAgMTYsIDMxLCAyMjQsIDEzMSwgMTA4LCAxNiwgMzEsIDIyNCwgMTIwLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMjIsIDEwOCwgMTYsIAorICAgIDMxLCAyNDksIDEyMSwgMTA4LCAxNiwgMzEsIDI0OSwgMTIwLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMTksIDEwOCwgMTYsIDMxLCAKKyAgICAyNDksIDExOCwgMTA4LCAxNiwgMzEsIDI1NCwgMTY5LCAxMDgsIDE2LCAzMSwgMjUyLCAxMTksIDY0LCAyMzEsIDE0OSwgCisgICAgMTA4LCAxNiwgMzEsIDI1MiwgMTE5LCA2NCwgMjE0LCAxNywgMTA4LCAxNiwgMzEsIDIyMywgNTcsIDEwOCwgMTYsIDMxLCAKKyAgICAyNDAsIDIzOCwgMTA4LCAxNiwgMzEsIDIyOCwgMjEyLCAxMDgsIDE2LCAzMSwgMjQ4LCAxNDUsIDEwOCwgMTYsIDMxLCAyMzAsIAorICAgIDEzNCwgMTA4LCAxNiwgMzEsIDE2MywgMjQ2LCA5NCwgMTA4LCAxNiwgMzEsIDE2MywgMjI2LCAxMzIsIDksIDE0LCAyNDAsIAorICAgIDEwMiwgOSwgMTQsIDI0MCwgMTAxLCA5LCAxNCwgMjQwLCAxMDAsIDksIDE0LCAyNDAsIDk5LCA5LCAxNCwgMjQwLCA5OCwgOSwgCisgICAgMTQsIDI0MCwgOTcsIDksIDE0LCAyNDAsIDk2LCA5LCAxNCwgMjQwLCA5NSwgOSwgMTQsIDI0MCwgOTQsIDksIDE0LCAyNDAsIAorICAgIDkzLCA5LCAxNCwgMjQwLCA5MiwgOSwgMTQsIDI0MCwgOTEsIDksIDE0LCAyNDAsIDkwLCA5LCAxNCwgMjQwLCA4OSwgOSwgCisgICAgMTQsIDI0MCwgODgsIDksIDE0LCAyNDAsIDg3LCA5LCAxNCwgMjQwLCA4NiwgOSwgMTQsIDI0MCwgODUsIDksIDE0LCAyNDAsIAorICAgIDg0LCA5LCAxNCwgMjQwLCA4MywgOSwgMTQsIDI0MCwgODIsIDksIDE0LCAyNDAsIDgxLCA5LCAxNCwgMjQwLCA4MCwgOSwgCisgICAgMTQsIDI0MCwgNzksIDksIDE0LCAyNDAsIDc4LCA5LCAxNCwgMjQwLCA3NywgOSwgMTQsIDI0MCwgNzYsIDksIDE0LCAyNDAsIAorICAgIDc1LCA5LCAxNCwgMjQwLCA3NCwgOSwgMTQsIDI0MCwgNzMsIDksIDE0LCAyNDAsIDcyLCA5LCAxNCwgMjQwLCA3MSwgOSwgCisgICAgMTQsIDI0MCwgNzAsIDksIDE0LCAyNDAsIDY5LCA5LCAxNCwgMjQwLCA2OCwgOSwgMTQsIDI0MCwgNjcsIDksIDE0LCAyNDAsIAorICAgIDY2LCA5LCAxNCwgMjQwLCA2NSwgOSwgMTQsIDI0MCwgNjQsIDksIDE0LCAyNDAsIDYzLCA5LCAxNCwgMjQwLCA2MiwgOSwgCisgICAgMTQsIDI0MCwgNjEsIDksIDE0LCAyNDAsIDYwLCA5LCAxNCwgMjQwLCA1OSwgOSwgMTQsIDI0MCwgNTgsIDksIDE0LCAyNDAsIAorICAgIDU3LCA5LCAxNCwgMjQwLCA1NiwgOSwgMTQsIDI0MCwgNTUsIDksIDE0LCAyNDAsIDU0LCA5LCAxNCwgMjQwLCA1MywgOSwgCisgICAgMTQsIDI0MCwgNTIsIDksIDE0LCAyNDAsIDUxLCA5LCAxNCwgMjQwLCA1MCwgOSwgMTQsIDI0MCwgNDksIDksIDE0LCAyNDAsIAorICAgIDQ4LCA5LCAxNCwgMjQwLCA0NywgOSwgMTQsIDI0MCwgNDYsIDksIDE0LCAyNDAsIDQ1LCA5LCAxNCwgMjQwLCA0NCwgOSwgCisgICAgMTQsIDI0MCwgNDMsIDksIDE0LCAyNDAsIDQyLCA5LCAxNCwgMjQwLCA0MSwgOSwgMTQsIDI0MCwgNDAsIDksIDE0LCAyNDAsIAorICAgIDM5LCA5LCAxNCwgMjQwLCAzOCwgOSwgMTQsIDI0MCwgMzcsIDksIDE0LCAyNDAsIDM2LCA5LCAxNCwgMjQwLCAzNSwgOSwgCisgICAgMTQsIDI0MCwgMzQsIDksIDE0LCAyNDAsIDMzLCA5LCAxNCwgMjQwLCAzMiwgOSwgMTQsIDI0MCwgMzEsIDksIDE0LCAyNDAsIAorICAgIDMwLCA5LCAxNCwgMjQwLCAyOSwgOSwgMTQsIDI0MCwgMjgsIDksIDE0LCAyNDAsIDI3LCA5LCAxNCwgMjQwLCAyNiwgOSwgCisgICAgMTQsIDI0MCwgMjUsIDksIDE0LCAyNDAsIDI0LCA5LCAxNCwgMjQwLCAyMywgOSwgMTQsIDI0MCwgMjIsIDksIDE0LCAyNDAsIAorICAgIDIxLCA5LCAxNCwgMjQwLCAyMCwgOSwgMTQsIDI0MCwgMTksIDksIDE0LCAyNDAsIDE4LCA5LCAxNCwgMjQwLCAxNywgOSwgCisgICAgMTQsIDI0MCwgMTYsIDksIDE0LCAyNDAsIDE1LCA5LCAxNCwgMjQwLCAxNCwgOSwgMTQsIDI0MCwgMTMsIDksIDE0LCAyNDAsIAorICAgIDEyLCA5LCAxNCwgMjQwLCAxMSwgOSwgMTQsIDI0MCwgMTAsIDksIDE0LCAyNDAsIDksIDksIDE0LCAyNDAsIDgsIDksIDE0LCAKKyAgICAyNDAsIDcsIDksIDE0LCAyNDAsIDYsIDksIDE0LCAyNDAsIDUsIDksIDE0LCAyNDAsIDQsIDksIDE0LCAyNDAsIDMsIDksIAorICAgIDE0LCAyNDAsIDIsIDksIDE0LCAyNDAsIDEsIDksIDE0LCAyNDAsIDAsIDksIDE0LCAyMzksIDI1NSwgOSwgMTQsIDIzOSwgCisgICAgMjU0LCA5LCAxNCwgMjM5LCAyNTMsIDksIDE0LCAyMzksIDI1MiwgOSwgMTQsIDIzOSwgMjUxLCA5LCAxNCwgMjM5LCAyNTAsIAorICAgIDksIDE0LCAyMzksIDI0OSwgOSwgMTQsIDIzOSwgMjQ4LCA5LCAxNCwgMjM5LCAyNDcsIDksIDE0LCAyMzksIDI0NiwgOSwgCisgICAgMTQsIDIzOSwgMjQ1LCA5LCAxNCwgMjM5LCAyNDQsIDksIDE0LCAyMzksIDI0MywgOSwgMTQsIDIzOSwgMjQyLCA5LCAxNCwgCisgICAgMjM5LCAyNDEsIDksIDE0LCAyMzksIDI0MCwgOSwgMTQsIDIzOSwgMjM5LCA5LCAxNCwgMjM5LCAyMzgsIDksIDE0LCAyMzksIAorICAgIDIzNywgOSwgMTQsIDIzOSwgMjM2LCA5LCAxNCwgMjM5LCAyMzUsIDksIDE0LCAyMzksIDIzNCwgOSwgMTQsIDIzOSwgMjMzLCAKKyAgICA5LCAxNCwgMjM5LCAyMzIsIDksIDE0LCAyMzksIDIzMSwgOSwgMTQsIDIzOSwgMjMwLCA5LCAxNCwgMjM5LCAyMjksIDksIAorICAgIDE0LCAyMzksIDIyOCwgOSwgMTQsIDIzOSwgMjI3LCA5LCAxNCwgMjM5LCAyMjYsIDksIDE0LCAyMzksIDIyNSwgOSwgMTQsIAorICAgIDIzOSwgMjI0LCA5LCAxNCwgMjM5LCAyMjMsIDksIDE0LCAyMzksIDIyMiwgOSwgMTQsIDIzOSwgMjIxLCA5LCAxNCwgMjM5LCAKKyAgICAyMjAsIDksIDE0LCAyMzksIDIxOSwgOSwgMTQsIDIzOSwgMjE4LCA5LCAxNCwgMjM5LCAyMTcsIDksIDE0LCAyMzksIDIxNiwgCisgICAgOSwgMTQsIDIzOSwgMjE1LCA5LCAxNCwgMjM5LCAyMTQsIDksIDE0LCAyMzksIDIxMywgOSwgMTQsIDIzOSwgMjEyLCA5LCAKKyAgICAxNCwgMjM5LCAyMTEsIDksIDE0LCAyMzksIDIxMCwgOSwgMTQsIDIzOSwgMjA5LCA5LCAxNCwgMjM5LCAyMDgsIDksIDE0LCAKKyAgICAyMzksIDIwNywgOSwgMTQsIDIzOSwgMjA2LCA5LCAxNCwgMjM5LCAyMDUsIDksIDE0LCAyMzksIDIwNCwgOSwgMTQsIDIzOSwgCisgICAgMjAzLCA5LCAxNCwgMjM5LCAyMDIsIDksIDE0LCAyMzksIDIwMSwgOSwgMTQsIDIzOSwgMjAwLCA5LCAxNCwgMjM5LCAxOTksIAorICAgIDksIDE0LCAyMzksIDE5OCwgOSwgMTQsIDIzOSwgMTk3LCA5LCAxNCwgMjM5LCAxOTYsIDksIDE0LCAyMzksIDE5NSwgOSwgCisgICAgMTQsIDIzOSwgMTk0LCA5LCAxNCwgMjM5LCAxOTMsIDksIDE0LCAyMzksIDE5MiwgOSwgMTQsIDIzOSwgMTkxLCA5LCAxNCwgCisgICAgMjM5LCAxOTAsIDksIDE0LCAyMzksIDE4OSwgOSwgMTQsIDIzOSwgMTg4LCA5LCAxNCwgMjM5LCAxODcsIDksIDE0LCAyMzksIAorICAgIDE4NiwgOSwgMTQsIDIzOSwgMTg1LCA5LCAxNCwgMjM5LCAxODQsIDksIDE0LCAyMzksIDE4MywgOSwgMTQsIDIzOSwgMTgyLCAKKyAgICA5LCAxNCwgMjM5LCAxODEsIDksIDE0LCAyMzksIDE4MCwgOSwgMTQsIDIzOSwgMTc5LCA5LCAxNCwgMjM5LCAxNzgsIDksIAorICAgIDE0LCAyMzksIDE3NywgOSwgMTQsIDIzOSwgMTc2LCA5LCAxNCwgMjM5LCAxNzUsIDksIDE0LCAyMzksIDE3NCwgOSwgMTQsIAorICAgIDIzOSwgMTczLCA5LCAxNCwgMjM5LCAxNzIsIDksIDE0LCAyMzksIDE3MSwgOSwgMTQsIDIzOSwgMTcwLCA5LCAxNCwgMjM5LCAKKyAgICAxNjksIDksIDE0LCAyMzksIDE2OCwgOSwgMTQsIDIzOSwgMTY3LCA5LCAxNCwgMjM5LCAxNjYsIDksIDE0LCAyMzksIDE2NSwgCisgICAgOSwgMTQsIDIzOSwgMTY0LCA5LCAxNCwgMjM5LCAxNjMsIDksIDE0LCAyMzksIDE2MiwgOSwgMTQsIDIzOSwgMTYxLCA5LCAKKyAgICAxNCwgMjM5LCAxNjAsIDksIDE0LCAyMzksIDE1OSwgOSwgMTQsIDIzOSwgMTU4LCA5LCAxNCwgMjM5LCAxNTcsIDksIDE0LCAKKyAgICAyMzksIDE1NiwgOSwgMTQsIDIzOSwgMTU1LCA5LCAxNCwgMjM5LCAxNTQsIDksIDE0LCAyMzksIDE1MywgOSwgMTQsIDIzOSwgCisgICAgMTUyLCA5LCAxNCwgMjM5LCAxNTEsIDksIDE0LCAyMzksIDE1MCwgOSwgMTQsIDIzOSwgMTQ5LCA5LCAxNCwgMjM5LCAxNDgsIAorICAgIDksIDE0LCAyMzksIDE0NywgOSwgMTQsIDIzOSwgMTQ2LCA5LCAxNCwgMjM5LCAxNDUsIDksIDE0LCAyMzksIDE0NCwgOSwgCisgICAgMTQsIDIzOSwgMTQzLCA5LCAxNCwgMjM5LCAxNDIsIDksIDE0LCAyMzksIDE0MSwgOSwgMTQsIDIzOSwgMTQwLCA5LCAxNCwgCisgICAgMjM5LCAxMzksIDksIDE0LCAyMzksIDEzOCwgOSwgMTQsIDIzOSwgMTM3LCA5LCAxNCwgMjM5LCAxMzYsIDksIDE0LCAyMzksIAorICAgIDEzNSwgOSwgMTQsIDIzOSwgMTM0LCA5LCAxNCwgMjM5LCAxMzMsIDksIDE0LCAyMzksIDEzMiwgOSwgMTQsIDIzOSwgMTMxLCAKKyAgICA5LCAxNCwgMjM5LCAxMzAsIDksIDE0LCAyMzksIDEyOSwgOSwgMTQsIDIzOSwgMTI4LCA5LCAxNCwgMjM5LCAxMjcsIDksIAorICAgIDE0LCAyMzksIDEyNiwgOSwgMTQsIDIzOSwgMTI1LCA5LCAxNCwgMjM5LCAxMjQsIDksIDE0LCAyMzksIDEyMywgOSwgMTQsIAorICAgIDIzOSwgMTIyLCA5LCAxNCwgMjM5LCAxMjEsIDksIDE0LCAyMzksIDEyMCwgOSwgMTQsIDIzOSwgMTE5LCA5LCAxNCwgMjM5LCAKKyAgICAxMTgsIDksIDE0LCAyMzksIDExNywgOSwgMTQsIDIzOSwgMTE2LCA5LCAxNCwgMjM5LCAxMTUsIDksIDE0LCAyMzksIDExNCwgCisgICAgOSwgMTQsIDIzOSwgMTEzLCA5LCAxNCwgMjM5LCAxMTIsIDksIDE0LCAyMzksIDExMSwgOSwgMTQsIDIzOSwgMTEwLCA5LCAKKyAgICAxNCwgMjM5LCAxMDksIDksIDE0LCAyMzksIDEwOCwgOSwgMTQsIDIzOSwgMTA3LCA5LCAxNCwgMjM5LCAxMDYsIDksIDE0LCAKKyAgICAyMzksIDEwNSwgOSwgMTQsIDIzOSwgMTA0LCA5LCAxNCwgMjM5LCAxMDMsIDksIDE0LCAyMzksIDEwMiwgOSwgMTQsIDIzOSwgCisgICAgMTAxLCA5LCAxNCwgMjM5LCAxMDAsIDksIDE0LCAyMzksIDk5LCA5LCAxNCwgMjM5LCA5OCwgOSwgMTQsIDIzOSwgOTcsIDksIAorICAgIDE0LCAyMzksIDk2LCA5LCAxNCwgMjM5LCA5NSwgOSwgMTQsIDIzOSwgOTQsIDksIDE0LCAyMzksIDkzLCA5LCAxNCwgMjM5LCAKKyAgICA5MiwgOSwgMTQsIDIzOSwgOTEsIDksIDE0LCAyMzksIDkwLCA5LCAxNCwgMjM5LCA4OSwgOSwgMTQsIDIzOSwgODgsIDksIAorICAgIDE0LCAyMzksIDg3LCA5LCAxNCwgMjM5LCA4NiwgOSwgMTQsIDIzOSwgODUsIDksIDE0LCAyMzksIDg0LCA5LCAxNCwgMjM5LCAKKyAgICA4MywgOSwgMTQsIDIzOSwgODIsIDksIDE0LCAyMzksIDgxLCA5LCAxNCwgMjM5LCA4MCwgOSwgMTQsIDIzOSwgNzksIDksIAorICAgIDE0LCAyMzksIDc4LCA5LCAxNCwgMjM5LCA3NywgOSwgMTQsIDIzOSwgNzYsIDksIDE0LCAyMzksIDc1LCA5LCAxNCwgMjM5LCAKKyAgICA3NCwgOSwgMTQsIDIzOSwgNzMsIDksIDE0LCAyMzksIDcyLCA5LCAxNCwgMjM5LCA3MSwgOSwgMTQsIDIzOSwgNzAsIDksIAorICAgIDE0LCAyMzksIDY5LCA5LCAxNCwgMjM5LCA2OCwgOSwgMTQsIDIzOSwgNjcsIDksIDE0LCAyMzksIDY2LCA5LCAxNCwgMjM5LCAKKyAgICA2NSwgOSwgMTQsIDIzOSwgNjQsIDksIDE0LCAyMzksIDYzLCA5LCAxNCwgMjM5LCA2MiwgOSwgMTQsIDIzOSwgNjEsIDksIAorICAgIDE0LCAyMzksIDYwLCA5LCAxNCwgMjM5LCA1OSwgOSwgMTQsIDIzOSwgNTgsIDksIDE0LCAyMzksIDU3LCA5LCAxNCwgMjM5LCAKKyAgICA1NiwgOSwgMTQsIDIzOSwgNTUsIDksIDE0LCAyMzksIDU0LCA5LCAxNCwgMjM5LCA1MywgOSwgMTQsIDIzOSwgNTIsIDksIAorICAgIDE0LCAyMzksIDUxLCA5LCAxNCwgMjM5LCA1MCwgOSwgMTQsIDIzOSwgNDksIDksIDE0LCAyMzksIDQ4LCA5LCAxNCwgMjM5LCAKKyAgICA0NywgOSwgMTQsIDIzOSwgNDYsIDksIDE0LCAyMzksIDQ1LCA5LCAxNCwgMjM5LCA0NCwgOSwgMTQsIDIzOSwgNDMsIDksIAorICAgIDE0LCAyMzksIDQyLCA5LCAxNCwgMjM5LCA0MSwgOSwgMTQsIDIzOSwgNDAsIDksIDE0LCAyMzksIDM5LCA5LCAxNCwgMjM5LCAKKyAgICAzOCwgOSwgMTQsIDIzOSwgMzcsIDksIDE0LCAyMzksIDM2LCA5LCAxNCwgMjM5LCAzNSwgOSwgMTQsIDIzOSwgMzQsIDksIAorICAgIDE0LCAyMzksIDMzLCA5LCAxNCwgMjM5LCAzMiwgOSwgMTQsIDIzOSwgMzEsIDksIDE0LCAyMzksIDMwLCA5LCAxNCwgMjM5LCAKKyAgICAyOSwgOSwgMTQsIDIzOSwgMjgsIDksIDE0LCAyMzksIDI3LCA5LCAxNCwgMjM5LCAyNiwgOSwgMTQsIDIzOSwgMjUsIDksIAorICAgIDE0LCAyMzksIDI0LCA5LCAxNCwgMjM5LCAyMywgOSwgMTQsIDIzOSwgMjIsIDksIDE0LCAyMzksIDIxLCA5LCAxNCwgMjM5LCAKKyAgICAyMCwgOSwgMTQsIDIzOSwgMTksIDksIDE0LCAyMzksIDE4LCA5LCAxNCwgMjM5LCAxNywgOSwgMTQsIDIzOSwgMTYsIDksIAorICAgIDE0LCAyMzksIDE1LCA5LCAxNCwgMjM5LCAxNCwgOSwgMTQsIDIzOSwgMTMsIDksIDE0LCAyMzksIDEyLCA5LCAxNCwgMjM5LCAKKyAgICAxMSwgOSwgMTQsIDIzOSwgMTAsIDksIDE0LCAyMzksIDksIDksIDE0LCAyMzksIDgsIDksIDE0LCAyMzksIDcsIDksIDE0LCAKKyAgICAyMzksIDYsIDksIDE0LCAyMzksIDUsIDksIDE0LCAyMzksIDQsIDksIDE0LCAyMzksIDMsIDksIDE0LCAyMzksIDIsIDksIAorICAgIDE0LCAyMzksIDEsIDksIDE0LCAyMzksIDAsIDksIDE0LCAyMzgsIDI1NSwgOSwgMTQsIDIzOCwgMjU0LCA5LCAxNCwgMjM4LCAKKyAgICAyNTMsIDksIDE0LCAyMzgsIDI1MiwgOSwgMTQsIDIzOCwgMjUxLCA5LCAxNCwgMjM4LCAyNTAsIDksIDE0LCAyMzgsIDI0OSwgCisgICAgOSwgMTQsIDIzOCwgMjQ4LCA5LCAxNCwgMjM4LCAyNDcsIDksIDE0LCAyMzgsIDI0NiwgOSwgMTQsIDIzOCwgMjQ1LCA5LCAKKyAgICAxNCwgMjM4LCAyNDQsIDksIDE0LCAyMzgsIDI0MywgOSwgMTQsIDIzOCwgMjQyLCA5LCAxNCwgMjM4LCAyNDEsIDksIDE0LCAKKyAgICAyMzgsIDI0MCwgOSwgMTQsIDIzOCwgMjM5LCA5LCAxNCwgMjM4LCAyMzgsIDksIDE0LCAyMzgsIDIzNywgOSwgMTQsIDIzOCwgCisgICAgMjM2LCA5LCAxNCwgMjM4LCAyMzUsIDksIDE0LCAyMzgsIDIzNCwgOSwgMTQsIDIzOCwgMjMzLCA5LCAxNCwgMjM4LCAyMzIsIAorICAgIDksIDE0LCAyMzgsIDIzMSwgOSwgMTQsIDIzOCwgMjMwLCA5LCAxNCwgMjM4LCAyMjksIDksIDE0LCAyMzgsIDIyOCwgOSwgCisgICAgMTQsIDIzOCwgMjI3LCA5LCAxNCwgMjM4LCAyMjYsIDksIDE0LCAyMzgsIDIyNSwgOSwgMTQsIDIzOCwgMjI0LCA5LCAxNCwgCisgICAgMjM4LCAyMjMsIDksIDE0LCAyMzgsIDIyMiwgOSwgMTQsIDIzOCwgMjIxLCA5LCAxNCwgMjM4LCAyMjAsIDksIDE0LCAyMzgsIAorICAgIDIxOSwgOSwgMTQsIDIzOCwgMjE4LCA5LCAxNCwgMjM4LCAyMTcsIDksIDE0LCAyMzgsIDIxNiwgOSwgMTQsIDIzOCwgMjE1LCAKKyAgICA5LCAxNCwgMjM4LCAyMTQsIDksIDE0LCAyMzgsIDIxMywgOSwgMTQsIDIzOCwgMjEyLCA5LCAxNCwgMjM4LCAyMTEsIDksIAorICAgIDE0LCAyMzgsIDIxMCwgOSwgMTQsIDIzOCwgMjA5LCA5LCAxNCwgMjM4LCAyMDgsIDksIDE0LCAyMzgsIDIwNywgOSwgMTQsIAorICAgIDIzOCwgMjA2LCA5LCAxNCwgMjM4LCAyMDUsIDksIDE0LCAyMzgsIDIwNCwgOSwgMTQsIDIzOCwgMjAzLCA5LCAxNCwgMjM4LCAKKyAgICAyMDIsIDksIDE0LCAyMzgsIDIwMSwgOSwgMTQsIDIzOCwgMjAwLCA5LCAxNCwgMjM4LCAxOTksIDksIDE0LCAyMzgsIDE5OCwgCisgICAgOSwgMTQsIDIzOCwgMTk3LCA5LCAxNCwgMjM4LCAxOTYsIDksIDE0LCAyMzgsIDE5NSwgOSwgMTQsIDIzOCwgMTk0LCA5LCAKKyAgICAxNCwgMjM4LCAxOTMsIDksIDE0LCAyMzgsIDE5MiwgOSwgMTQsIDIzOCwgMTkxLCA5LCAxNCwgMjM4LCAxOTAsIDksIDE0LCAKKyAgICAyMzgsIDE4OSwgOSwgMTQsIDIzOCwgMTg4LCA5LCAxNCwgMjM4LCAxODcsIDksIDE0LCAyMzgsIDE4NiwgOSwgMTQsIDIzOCwgCisgICAgMTg1LCA5LCAxNCwgMjM4LCAxODQsIDksIDE0LCAyMzgsIDE4MywgOSwgMTQsIDIzOCwgMTgyLCA5LCAxNCwgMjM4LCAxODEsIAorICAgIDksIDE0LCAyMzgsIDE4MCwgOSwgMTQsIDIzOCwgMTc5LCA5LCAxNCwgMjM4LCAxNzgsIDksIDE0LCAyMzgsIDE3NywgOSwgCisgICAgMTQsIDIzOCwgMTc2LCA5LCAxNCwgMjM4LCAxNzUsIDksIDE0LCAyMzgsIDE3NCwgOSwgMTQsIDIzOCwgMTczLCA5LCAxNCwgCisgICAgMjM4LCAxNzIsIDksIDE0LCAyMzgsIDE3MSwgOSwgMTQsIDIzOCwgMTcwLCA5LCAxNCwgMjM4LCAxNjksIDksIDE0LCAyMzgsIAorICAgIDE2OCwgOSwgMTQsIDIzOCwgMTY3LCA5LCAxNCwgMjM4LCAxNjYsIDksIDE0LCAyMzgsIDE2NSwgOSwgMTQsIDIzOCwgMTY0LCAKKyAgICA5LCAxNCwgMjM4LCAxNjMsIDksIDE0LCAyMzgsIDE2MiwgOSwgMTQsIDIzOCwgMTYxLCA5LCAxNCwgMjM4LCAxNjAsIDksIAorICAgIDE0LCAyMzgsIDE1OSwgOSwgMTQsIDIzOCwgMTU4LCA5LCAxNCwgMjM4LCAxNTcsIDksIDE0LCAyMzgsIDE1NiwgOSwgMTQsIAorICAgIDIzOCwgMTU1LCA5LCAxNCwgMjM4LCAxNTQsIDksIDE0LCAyMzgsIDE1MywgOSwgMTQsIDIzOCwgMTUyLCA5LCAxNCwgMjM4LCAKKyAgICAxNTEsIDksIDE0LCAyMzgsIDE1MCwgOSwgMTQsIDIzOCwgMTQ5LCA5LCAxNCwgMjM4LCAxNDgsIDksIDE0LCAyMzgsIDE0NywgCisgICAgOSwgMTQsIDIzOCwgMTQ2LCA5LCAxNCwgMjM4LCAxNDUsIDksIDE0LCAyMzgsIDE0NCwgOSwgMTQsIDIzOCwgMTQzLCA5LCAKKyAgICAxNCwgMjM4LCAxNDIsIDksIDE0LCAyMzgsIDE0MSwgOSwgMTQsIDIzOCwgMTQwLCA5LCAxNCwgMjM4LCAxMzksIDksIDE0LCAKKyAgICAyMzgsIDEzOCwgOSwgMTQsIDIzOCwgMTM3LCA5LCAxNCwgMjM4LCAxMzYsIDksIDE0LCAyMzgsIDEzNSwgOSwgMTQsIDIzOCwgCisgICAgMTM0LCA5LCAxNCwgMjM4LCAxMzMsIDksIDE0LCAyMzgsIDEzMiwgOSwgMTQsIDIzOCwgMTMxLCA5LCAxNCwgMjM4LCAxMzAsIAorICAgIDksIDE0LCAyMzgsIDEyOSwgOSwgMTQsIDIzOCwgMTI4LCA5LCAxNCwgMjM4LCAxMjcsIDksIDE0LCAyMzgsIDEyNiwgOSwgCisgICAgMTQsIDIzOCwgMTI1LCA5LCAxNCwgMjM4LCAxMjQsIDksIDE0LCAyMzgsIDEyMywgOSwgMTQsIDIzOCwgMTIyLCA5LCAxNCwgCisgICAgMjM4LCAxMjEsIDksIDE0LCAyMzgsIDEyMCwgOSwgMTQsIDIzOCwgMTE5LCA5LCAxNCwgMjM4LCAxMTgsIDksIDE0LCAyMzgsIAorICAgIDExNywgOSwgMTQsIDIzOCwgMTE2LCA5LCAxNCwgMjM4LCAxMTUsIDksIDE0LCAyMzgsIDExNCwgOSwgMTQsIDIzOCwgMTEzLCAKKyAgICA5LCAxNCwgMjM4LCAxMTIsIDksIDE0LCAyMzgsIDExMSwgOSwgMTQsIDIzOCwgMTEwLCA5LCAxNCwgMjM4LCAxMDksIDksIAorICAgIDE0LCAyMzgsIDEwOCwgOSwgMTQsIDIzOCwgMTA3LCA5LCAxNCwgMjM4LCAxMDYsIDksIDE0LCAyMzgsIDEwNSwgOSwgMTQsIAorICAgIDIzOCwgMTA0LCA5LCAxNCwgMjM4LCAxMDMsIDksIDE0LCAyMzgsIDEwMiwgOSwgMTQsIDIzOCwgMTAxLCA5LCAxNCwgMjM4LCAKKyAgICAxMDAsIDksIDE0LCAyMzgsIDk5LCA5LCAxNCwgMjM4LCA5OCwgOSwgMTQsIDIzOCwgOTcsIDksIDE0LCAyMzgsIDk2LCA5LCAKKyAgICAxNCwgMjM4LCA5NSwgOSwgMTQsIDIzOCwgOTQsIDksIDE0LCAyMzgsIDkzLCA5LCAxNCwgMjM4LCA5MiwgOSwgMTQsIDIzOCwgCisgICAgOTEsIDksIDE0LCAyMzgsIDkwLCA5LCAxNCwgMjM4LCA4OSwgOSwgMTQsIDIzOCwgODgsIDksIDE0LCAyMzgsIDg3LCA5LCAKKyAgICAxNCwgMjM4LCA4NiwgOSwgMTQsIDIzOCwgODUsIDksIDE0LCAyMzgsIDg0LCA5LCAxNCwgMjM4LCA4MywgOSwgMTQsIDIzOCwgCisgICAgODIsIDksIDE0LCAyMzgsIDgxLCA5LCAxNCwgMjM4LCA4MCwgOSwgMTQsIDIzOCwgNzksIDksIDE0LCAyMzgsIDc4LCA5LCAKKyAgICAxNCwgMjM4LCA3NywgOSwgMTQsIDIzOCwgNzYsIDksIDE0LCAyMzgsIDc1LCA5LCAxNCwgMjM4LCA3NCwgOSwgMTQsIDIzOCwgCisgICAgNzMsIDIzMywgOTAsIDIxNywgODQsIDEyOSwgMjE5LCAxOCwgMTI5LCAyNDUsIDMxLCA3OCwgMTI5LCAyMjMsIDI1NCwgNzgsIAorICAgIDEyOSwgNTQsIDUwLCAxMjksIDI0NywgMTMyLCA1MCwgMTI5LCAyMjUsIDE4MiwgNTAsIDEyOSwgMjU0LCAxMjYsIDEyOSwgCisgICAgMjU0LCA1NywgMTI5LCA0MywgMjI2LCAzLCAxMjksIDQ0LCAyMjYsIDMsIDEyOSwgMjUzLCAyMTYsIDEyOSwgOTYsIDUwLCAKKyAgICAxMjksIDI0OSwgMjE5LCAxMjksIDI0MCwgMTY3LCAxMjksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTI5LCAyMTksIDQ2LCAxMjksIAorICAgIDIxLCAyMTAsIDg2LCAxMjksIDIxLCAxMTAsIDEyOSwgMjEsIDEwNSwgMTI5LCAyMSwgMTU4LCAxMjksIDIxLCAxNjEsIDEyOSwgCisgICAgMjEsIDE4OSwgMTI5LCAyMSwgMTk0LCAxMjksIDIxLCAxOTgsIDEyOSwgMjEsIDE5NSwgMTI5LCAyMSwgMjAwLCAxMjksIAorICAgIDI0OSwgMjI2LCAxMjksIDIyMCwgMTUwLCAxMjksIDIzMywgMTUsIDUwLCAxMjksIDI0NSwgOTgsIDUwLCAxMjksIDI0MiwgCisgICAgMTMwLCA1MCwgMTI5LCAyMjQsIDEzLCA3OCwgMTI5LCAyNDksIDIxNywgMjUzLCAyMDYsIDEyOSwgNywgNiwgMSwgNjEsIAorICAgIDEyOSwgNywgNiwgMSwgMjUzLCAxNTgsIDEyOSwgNywgNiwgMSwgMjUxLCA2NiwgMTI5LCA3LCA2LCAxLCAyNDksIDYwLCAKKyAgICAxMjksIDcsIDYsIDEsIDc1LCAxMjksIDcsIDYsIDEsIDI0NSwgNiwgMTI5LCA3LCA2LCAxLCAyNDMsIDIwMiwgMTI5LCA3LCAKKyAgICA2LCAxLCAyNDIsIDYwLCAxMjksIDcsIDYsIDEsIDczLCAxMjksIDcsIDYsIDEsIDIzNSwgMTQ0LCAxMjksIDcsIDYsIDEsIAorICAgIDIzNSwgMjMsIDEyOSwgNywgNiwgMSwgMTU2LCAxMjksIDcsIDYsIDEsIDE5MywgMTI5LCA3LCA2LCAxLCAyMzAsIDI1LCAKKyAgICAxMjksIDcsIDYsIDEsIDc2LCAxMjksIDcsIDYsIDEsIDIyNiwgMTA1LCAxMjksIDcsIDYsIDEsIDIyNCwgOTYsIDEyOSwgNywgCisgICAgNiwgMSwgMTUzLCAxMjksIDcsIDYsIDEsIDIyMiwgOTEsIDEyOSwgNywgNiwgMSwgMjE3LCAxNTIsIDEyOSwgNywgNiwgMSwgCisgICAgNzAsIDEyOSwgNywgNiwgMSwgMjE0LCAxMDUsIDEyOSwgNywgNiwgMSwgMjEyLCA5OCwgMTI5LCA3LCA2LCAxLCAyMTEsIAorICAgIDE3OCwgMTI5LCA3LCA2LCAxLCAyMTEsIDExNywgMTI5LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI5LCA0MywgNDIsIDEyNywgCisgICAgMTI5LCAyMjMsIDUwLCAyMTksIDQ2LCAxMjksIDQ0LCA0MiwgMTI3LCAxMjksIDI1MCwgMzEsIDI1NSwgMTQsIDEyOSwgMTIxLCAKKyAgICAyMzIsIDIxMywgMTI5LCAyNDIsIDEzNywgMjU1LCAxNCwgMTI5LCA3LCA0LCAxLCA2MSwgMTI5LCA3LCA0LCAxLCAyNTMsIAorICAgIDE1OCwgMTI5LCA3LCA0LCAxLCAyNTEsIDY2LCAxMjksIDcsIDQsIDEsIDI0OSwgNjAsIDEyOSwgNywgNCwgMSwgNzUsIDEyOSwgCisgICAgNywgNCwgMSwgMjQ1LCA2LCAxMjksIDcsIDQsIDEsIDI0MywgMjAyLCAxMjksIDcsIDQsIDEsIDI0MiwgNjAsIDEyOSwgNywgCisgICAgNCwgMSwgNzMsIDEyOSwgNywgNCwgMSwgMjM1LCAxNDQsIDEyOSwgNywgNCwgMSwgMjM1LCAyMywgMTI5LCA3LCA0LCAxLCAKKyAgICAxNTYsIDEyOSwgNywgNCwgMSwgMTkzLCAxMjksIDcsIDQsIDEsIDIzMCwgMjUsIDEyOSwgNywgNCwgMSwgNzYsIDEyOSwgNywgCisgICAgNCwgMSwgMjI2LCAxMDUsIDEyOSwgNywgNCwgMSwgMjI0LCA5NiwgMTI5LCA3LCA0LCAxLCAxNTMsIDEyOSwgNywgNCwgMSwgCisgICAgMjIyLCA5MSwgMTI5LCA3LCA0LCAxLCAyMTcsIDE1MiwgMTI5LCA3LCA0LCAxLCA3MCwgMTI5LCA3LCA0LCAxLCAyMTQsIAorICAgIDEwNSwgMTI5LCA3LCA0LCAxLCAyMTIsIDk4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDQsIDEsIDIxMSwgCisgICAgMTE3LCAxMjksIDcsIDQsIDEsIDIxMCwgMTU5LCAxMjksIDQzLCAyNDksIDk5LCAxMjcsIDEyOSwgNjcsIDIzMiwgMjEzLCAKKyAgICAxMjksIDQ0LCAyNDksIDk5LCAxMjcsIDEyOSwgMTgyLCAyNTEsIDYsIDIxNywgODQsIDQ1LCAyMjEsIDc4LCA0NSwgMjIxLCAKKyAgICA2NywgNDUsIDIyMSwgNTYsIDQ1LCAyMjEsIDQ0LCA0NSwgMjIxLCAzMywgNDUsIDIyMSwgMjIsIDQ1LCAyMjEsIDExLCA0NSwgCisgICAgMjIxLCAwLCA0NSwgMjIwLCAyNDUsIDQ1LCAyMjAsIDIzNywgNDUsIDIyMCwgMjM2LCA0NSwgMjIwLCAyMzUsIDQ1LCAyMjAsIAorICAgIDIzNCwgNDUsIDIyMCwgMjMyLCA0NSwgMjIwLCAyMzEsIDQ1LCAyMjAsIDIzMCwgNDUsIDIyMCwgMjI5LCA0NSwgMjIwLCAKKyAgICAyMjgsIDQ1LCAyMjAsIDIyNywgNDUsIDIyMCwgMjI2LCA0NSwgMjIwLCAyMjUsIDQ1LCAyMjAsIDIyNCwgNDUsIDIyMCwgCisgICAgMjIzLCA0NSwgMjIwLCAyMjEsIDQ1LCAyMjAsIDIyMCwgNDUsIDIyMCwgMjE5LCA0NSwgMjIwLCAyMTgsIDQ1LCAyMjAsIAorICAgIDIxNywgNDUsIDIyMCwgMjE2LCA0NSwgMjIwLCAyMTUsIDQ1LCAyMjAsIDIxNCwgNDUsIDIyMCwgMjEzLCA0NSwgMjIwLCAKKyAgICAyMTIsIDQ1LCAyMjAsIDIxMCwgNDUsIDIyMCwgMjA5LCA0NSwgMjIwLCAyMDgsIDQ1LCAyMjAsIDIwNywgNDUsIDIyMCwgCisgICAgMjA2LCA0NSwgMjIwLCAyMDUsIDQ1LCAyMjAsIDIwNCwgNDUsIDIyMCwgMjAzLCA0NSwgMjIwLCAyMDIsIDQ1LCAyMjAsIAorICAgIDIwMSwgNDUsIDIyMCwgMTk5LCA0NSwgMjIwLCAxOTgsIDQ1LCAyMjAsIDE5NywgNDUsIDIyMCwgMTk2LCA0NSwgMjIwLCAKKyAgICAxOTUsIDQ1LCAyMjAsIDE5NCwgNDUsIDIyMCwgMTkzLCA0NSwgMjIwLCAxOTIsIDQ1LCAyMjAsIDE5MSwgNDUsIDIyMCwgCisgICAgMTkwLCA0NSwgMjIwLCAxODgsIDQ1LCAyMjAsIDE4NywgNDUsIDIyMCwgMTg2LCA0NSwgMjIwLCAxODUsIDQ1LCAyMjAsIAorICAgIDE4NCwgNDUsIDIyMCwgMTgzLCA0NSwgMjIwLCAxODIsIDQ1LCAyMjAsIDE4MSwgNDUsIDIyMCwgMTgwLCA0NSwgMjIwLCAKKyAgICAxNzksIDQ1LCAyMjAsIDE3NywgNDUsIDIyMCwgMTc2LCA0NSwgMjIwLCAxNzUsIDQ1LCAyMjAsIDE3NCwgNDUsIDIyMCwgCisgICAgMTczLCA0NSwgMjIwLCAxNzIsIDQ1LCAyMjAsIDE3MSwgNDUsIDIyMCwgMTcwLCA0NSwgMjIwLCAxNjksIDQ1LCAyMjAsIAorICAgIDE2OCwgNDUsIDIyMCwgMTY2LCA0NSwgMjIwLCAxNjUsIDQ1LCAyMjAsIDE2NCwgNDUsIDIyMCwgMTYzLCA0NSwgMjIwLCAKKyAgICAxNjIsIDQ1LCAyMjAsIDE2MSwgNDUsIDIyMCwgMTYwLCA0NSwgMjIwLCAxNTksIDQ1LCAyMjAsIDE1OCwgNDUsIDIyMCwgCisgICAgMTU3LCA0NSwgMjIxLCAxNTQsIDQ1LCAyMjEsIDE1MywgNDUsIDIyMSwgMTUyLCA0NSwgMjIxLCAxNTEsIDQ1LCAyMjEsIAorICAgIDE1MCwgNDUsIDIyMSwgMTQ5LCA0NSwgMjIxLCAxNDgsIDQ1LCAyMjEsIDE0NywgNDUsIDIyMSwgMTQ2LCA0NSwgMjIxLCAKKyAgICAxNDUsIDQ1LCAyMjEsIDE0MywgNDUsIDIyMSwgMTQyLCA0NSwgMjIxLCAxNDEsIDQ1LCAyMjEsIDE0MCwgNDUsIDIyMSwgCisgICAgMTM5LCA0NSwgMjIxLCAxMzgsIDQ1LCAyMjEsIDEzNywgNDUsIDIyMSwgMTM2LCA0NSwgMjIxLCAxMzUsIDQ1LCAyMjEsIAorICAgIDEzNCwgNDUsIDIyMSwgMTMyLCA0NSwgMjIxLCAxMzEsIDQ1LCAyMjEsIDEzMCwgNDUsIDIyMSwgMTI5LCA0NSwgMjIxLCAKKyAgICAxMjgsIDQ1LCAyMjEsIDEyNywgNDUsIDIyMSwgMTI2LCA0NSwgMjIxLCAxMjUsIDQ1LCAyMjEsIDEyNCwgNDUsIDIyMSwgCisgICAgMTIzLCA0NSwgMjIxLCAxMjEsIDQ1LCAyMjEsIDEyMCwgNDUsIDIyMSwgMTE5LCA0NSwgMjIxLCAxMTgsIDQ1LCAyMjEsIAorICAgIDExNywgNDUsIDIyMSwgMTE2LCA0NSwgMjIxLCAxMTUsIDQ1LCAyMjEsIDExNCwgNDUsIDIyMSwgMTEzLCA0NSwgMjIxLCAKKyAgICAxMTIsIDQ1LCAyMjEsIDExMCwgNDUsIDIyMSwgMTA5LCA0NSwgMjIxLCAxMDgsIDQ1LCAyMjEsIDEwNywgNDUsIDIyMSwgCisgICAgMTA2LCA0NSwgMjIxLCAxMDUsIDQ1LCAyMjEsIDEwNCwgNDUsIDIyMSwgMTAzLCA0NSwgMjIxLCAxMDIsIDQ1LCAyMjEsIAorICAgIDEwMSwgNDUsIDIyMSwgOTksIDQ1LCAyMjEsIDk4LCA0NSwgMjIxLCA5NywgNDUsIDIyMSwgOTYsIDQ1LCAyMjEsIDk1LCA0NSwgCisgICAgMjIxLCA5NCwgNDUsIDIyMSwgOTMsIDQ1LCAyMjEsIDkyLCA0NSwgMjIxLCA5MSwgNDUsIDIyMSwgOTAsIDQ1LCAyMjEsIDg4LCAKKyAgICA0NSwgMjIxLCA4NywgNDUsIDIyMSwgODYsIDQ1LCAyMjEsIDg1LCA0NSwgMjIxLCA4NCwgNDUsIDIyMSwgODMsIDQ1LCAyMjEsIAorICAgIDgyLCA0NSwgMjIxLCA4MSwgNDUsIDIyMSwgODAsIDQ1LCAyMjEsIDc5LCA0NSwgMjIxLCA3NywgNDUsIDIyMSwgNzYsIDQ1LCAKKyAgICAyMjEsIDc1LCA0NSwgMjIxLCA3NCwgNDUsIDIyMSwgNzMsIDQ1LCAyMjEsIDcyLCA0NSwgMjIxLCA3MSwgNDUsIDIyMSwgNzAsIAorICAgIDQ1LCAyMjEsIDY5LCA0NSwgMjIxLCA2OCwgNDUsIDIyMSwgNjYsIDQ1LCAyMjEsIDY1LCA0NSwgMjIxLCA2NCwgNDUsIDIyMSwgCisgICAgNjMsIDQ1LCAyMjEsIDYyLCA0NSwgMjIxLCA2MSwgNDUsIDIyMSwgNjAsIDQ1LCAyMjEsIDU5LCA0NSwgMjIxLCA1OCwgNDUsIAorICAgIDIyMSwgNTcsIDQ1LCAyMjEsIDU1LCA0NSwgMjIxLCA1NCwgNDUsIDIyMSwgNTMsIDQ1LCAyMjEsIDUyLCA0NSwgMjIxLCA1MSwgCisgICAgNDUsIDIyMSwgNTAsIDQ1LCAyMjEsIDQ5LCA0NSwgMjIxLCA0OCwgNDUsIDIyMSwgNDcsIDQ1LCAyMjEsIDQ2LCA0NSwgMjIxLCAKKyAgICA0MywgNDUsIDIyMSwgNDIsIDQ1LCAyMjEsIDQxLCA0NSwgMjIxLCA0MCwgNDUsIDIyMSwgMzksIDQ1LCAyMjEsIDM4LCA0NSwgCisgICAgMjIxLCAzNywgNDUsIDIyMSwgMzYsIDQ1LCAyMjEsIDM1LCA0NSwgMjIxLCAzNCwgNDUsIDIyMSwgMzIsIDQ1LCAyMjEsIDMxLCAKKyAgICA0NSwgMjIxLCAzMCwgNDUsIDIyMSwgMjksIDQ1LCAyMjEsIDI4LCA0NSwgMjIxLCAyNywgNDUsIDIyMSwgMjYsIDQ1LCAyMjEsIAorICAgIDI1LCA0NSwgMjIxLCAyNCwgNDUsIDIyMSwgMjMsIDQ1LCAyMjEsIDIxLCA0NSwgMjIxLCAyMCwgNDUsIDIyMSwgMTksIDQ1LCAKKyAgICAyMjEsIDE4LCA0NSwgMjIxLCAxNywgNDUsIDIyMSwgMTYsIDQ1LCAyMjEsIDE1LCA0NSwgMjIxLCAxNCwgNDUsIDIyMSwgMTMsIAorICAgIDQ1LCAyMjEsIDEyLCA0NSwgMjIxLCAxMCwgNDUsIDIyMSwgOSwgNDUsIDIyMSwgOCwgNDUsIDIyMSwgNywgNDUsIDIyMSwgNiwgCisgICAgNDUsIDIyMSwgNSwgNDUsIDIyMSwgNCwgNDUsIDIyMSwgMywgNDUsIDIyMSwgMiwgNDUsIDIyMSwgMSwgNDUsIDIyMCwgMjU1LCAKKyAgICA0NSwgMjIwLCAyNTQsIDQ1LCAyMjAsIDI1MywgNDUsIDIyMCwgMjUyLCA0NSwgMjIwLCAyNTEsIDQ1LCAyMjAsIDI1MCwgNDUsIAorICAgIDIyMCwgMjQ5LCA0NSwgMjIwLCAyNDgsIDQ1LCAyMjAsIDI0NywgNDUsIDIyMCwgMjQ2LCA0NSwgMjIwLCAyNDQsIDQ1LCAKKyAgICAyMjAsIDI0MywgNDUsIDIyMCwgMjQyLCA0NSwgMjIwLCAyNDEsIDQ1LCAyMjAsIDI0MCwgNDUsIDIyMCwgMjM5LCA0NSwgCisgICAgMjIwLCAyMzgsIDIyNywgMjAyLCAyMjcsIDIwNCwgMjE4LCAxNTIsIDY0LCAyNDEsIDIzMywgMjE5LCA0OCwgMjE4LCAxNTIsIAorICAgIDY0LCAyMTYsIDIxMiwgMjE4LCA4NSwgMjQ1LCAxNDMsIDY0LCAyMTYsIDIxMiwgMjQ1LCA1NiwgMjQ1LCAxNDMsIDY0LCAKKyAgICAyMTUsIDI0MywgMjQ1LCAxMDksIDI0NSwgMTMyLCAyNDUsIDEzMywgMjU1LCA3LCAyNTUsIDgsIDI1NCwgMTY3LCAyNTIsIAorICAgIDQ3LCAyNTIsIDE3OSwgMjUxLCAxMzEsIDEzNSwgMjE3LCA4OSwgMjAzLCAyMTcsIDg5LCAyNDAsIDIyNywgMjE3LCA5MywgCisgICAgMjMyLCAyMTQsIDI0NCwgMTQ1LCAxNjYsIDIzMiwgMjEzLCAyNDUsIDE0MywgNjQsIDIzMiwgMjEzLCAyMzMsIDAsIDIyOCwgCisgICAgMTM1LCAyNDUsIDExMiwgMjMyLCAyMTQsIDIxNywgODksIDY3LCAyMTcsIDg5LCAyMTIsIDExOCwgMjQ0LCAyMCwgMjQ0LCAKKyAgICAxNDUsIDI0NCwgMTI1LCAyNTAsIDIzMCwgMjIzLCA1MywgMjQ5LCAxNDMsIDIyMCwgMjgsIDIyNiwgMTMwLCAyMzIsIDE1MCwgCisgICAgMTEwLCAyMTksIDU4LCAyMjAsIDI4LCAyMzUsIDI1NSwgMjMyLCAxNTAsIDIxMCwgODYsIDIxOSwgMTkxLCAyNDgsIDE1MSwgCisgICAgMjMyLCAyMDQsIDI0NSwgNzcsIDI0NywgMTU1LCAyNDgsIDMxLCAyNDksIDE3OCwgMTEwLCAyNDgsIDE0MSwgMjQ4LCAzMSwgCisgICAgMjQ5LCAxNzgsIDEwNSwgMjQ4LCAxNDAsIDI0OCwgMzEsIDI0OSwgMTc4LCAxNTgsIDI0OCwgMTM5LCAyNDgsIDMxLCAyNDksIAorICAgIDE3OCwgMTYxLCAyNDgsIDEzOCwgMTUyLCAyNTUsIDcsIDIyOSwgMjA5LCAyMTcsIDE3NywgMjM2LCA2MiwgMjE3LCAxODAsIAorICAgIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDQsIDI1MSwgMjEzLCAyNDUsIDYyLCAyNTEsIDUsIDI1MSwgNywgMjQ1LCAxNDMsIDY0LCAKKyAgICAyMzEsIDgxLCAyNDUsIDExMCwgMjE4LCA2MSwgMjE4LCA3OCwgMjQ1LCA3NywgMjQ1LCA3OCwgMjM1LCAyMzIsIDIyMCwgCisgICAgMTM4LCAxNjEsIDI0NCwgMTA3LCAyMjAsIDEzNywgMjQzLCAyMzcsIDIzNSwgMjMyLCAyMjAsIDEzOCwgMTU4LCAyNDIsIAorICAgIDEyMSwgMjIwLCAxMzcsIDI0MiwgMTE4LCAyMzUsIDIzMiwgMjIwLCAxMzgsIDEwNSwgMjIzLCAxMjEsIDIyMCwgMTM3LCAKKyAgICAyMjIsIDE0NSwgMjM1LCAyMzIsIDIyMCwgMTM4LCAxMTAsIDIxNCwgMTc0LCAyMjAsIDEzNywgMjE0LCAxMzMsIDIxOSwgMjEsIAorICAgIDI0OCwgNjMsIDI0OCwgNjUsIDIyNiwgNzgsIDI1MCwgMTQyLCAyMjYsIDgwLCAxMjUsIDIyNiwgMjQwLCAyMjQsIDE5MywgCisgICAgMjQxLCA0NywgMjUxLCAxNTAsIDIyNSwgMTczLCAyNDEsIDIwMywgMjUxLCAxNjEsIDIyOCwgNzUsIDI1MSwgMTUwLCAyNDEsIAorICAgIDIwMywgMjI5LCAxNzUsIDIzNSwgMjQyLCAyMzUsIDI0NCwgMjI5LCA4MiwgMjMyLCAyMTMsIDIyOSwgOTksIDIxOCwgMTUyLCAKKyAgICA2NCwgMjIxLCAxNTgsIDI1NCwgMTgsIDIxOCwgMjIzLCAyNDUsIDE0MywgNjQsIDIyMSwgMTU4LCAyNTQsIDE4LCAyNDUsIAorICAgIDgwLCAxMzUsIDIxNywgOTAsIDIyMCwgMTI3LCAyMDMsIDIxNywgOTAsIDIyMCwgMTI3LCAyNDAsIDIyNCwgMTM1LCAyMTcsIAorICAgIDkwLCAyLCAyMzUsIDM1LCAyMDMsIDIxNywgOTAsIDIsIDIzNSwgMzUsIDI0MCwgMjI1LCAyMzIsIDIxNCwgMjE3LCA5MCwgCisgICAgMjIwLCAxMjcsIDY3LCAyMTcsIDkwLCAyMjAsIDEyNywgMjEyLCAxMTcsIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjQ0LCAxNCwgCisgICAgMjI1LCAyNTMsIDIzMiwgMjE0LCAyNDYsIDEwNiwgMjI1LCAzMiwgMjI1LCAyNTMsIDIzMiwgMjE0LCAyNTIsIDE3OCwgMjI1LCAKKyAgICAyNTMsIDIzMiwgMjE0LCAyMTQsIDE2MywgMjI1LCAyOCwgMjIzLCA1MCwgMjMyLCAyMTQsIDI0NCwgMTQ1LCAyMjMsIDUwLCAKKyAgICAyMzUsIDI0MiwgMjIzLCAzNSwgMjE5LCAxNTUsIDIyMCwgMjgsIDEwNSwgMjE5LCAxNTIsIDIxOCwgMjI1LCAyMTksIDE1NSwgCisgICAgMjIwLCAyOCwgMTU4LCAyMTksIDE1MSwgMjE4LCAyMjQsIDI0OCwgMzEsIDI0OSwgMTc4LCAyMTgsIDEwNSwgMjQ4LCAxMzcsIAorICAgIDIyNCwgMTgzLCAyMTQsIDEzMiwgMTEwLCAyMjQsIDE4MywgMjE0LCAxMzAsIDIyNCwgMTQ5LCAyMjQsIDE4MywgMjE0LCAKKyAgICAxMzIsIDEwNSwgMjI0LCAxODMsIDIxNCwgMTI5LCAyMjQsIDE0OCwgMjIwLCAxMjgsIDIxNSwgMjQyLCAyMTgsIDE1MSwgCisgICAgMjE4LCA4OSwgMjUxLCA2LCAyNTAsIDE0MiwgMjUwLCAyMDksIDIzMSwgNDMsIDIxMiwgNTksIDIzMCwgNDMsIDIxOCwgMTUyLCAKKyAgICA2NCwgMjQyLCAxMDcsIDI1NCwgMTgsIDIxOCwgMTUyLCA2NCwgMjI0LCAxNjYsIDI1NCwgMTgsIDIxOSwgMjAsIDI0NSwgCisgICAgMTQzLCA2NCwgMjQyLCAxMDcsIDI1NCwgMTgsIDI0NSwgMTQzLCA2NCwgMjI0LCAxNjYsIDI1NCwgMTgsIDI0NSwgMTA3LCAKKyAgICAyMTgsIDE1MiwgNjQsIDIxOCwgMTA1LCAyMTksIDM1LCAyMTksIDE1NSwgMjQyLCAxNDEsIDEzNSwgMjM1LCAxOTUsIDIyMCwgCisgICAgMTA3LCAyMTksIDE1NSwgMTM1LCAyMzUsIDE5NSwgMjIxLCAxOTQsIDI0OSwgMTc4LCAyMjAsIDEzNSwgMjM1LCAxOTUsIAorICAgIDI0OSwgMTEzLCAyMTgsIDEwNiwgMjE2LCAyMzYsIDIxOCwgMTY4LCAyMjYsIDE2OSwgMjE3LCAxNjcsIDI0OSwgMjE4LCAKKyAgICAyMjYsIDE0MiwgMjI0LCAxODQsIDIzMSwgNDIsIDIyNSwgMTksIDI1NCwgNTMsIDIyNCwgMTc4LCAyNDksIDIxOCwgMjU0LCAKKyAgICA2OSwgMjI5LCAxNjMsIDIxOSwgMjAwLCA3LCA2LCAxLCAyNDIsIDI0OSwgNywgNCwgMSwgMjQyLCAyNDksIDI1MCwgMTU5LCAKKyAgICAxNjUsIDEsIDIzMiwgMTc1LCAyMDksIDIwOSwgMSwgMjQ0LCA0NCwgMjQ0LCAzNiwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIAorICAgIDI0NCwgMTU3LCAyMDksIDIwOSwgMSwgMjIyLCAyMTEsIDIwOSwgMjA5LCAxLCAyMzIsIDE1NiwgNjMsIDE2NCwgMjUxLCAKKyAgICAyMjMsIDIyMCwgMywgMjQyLCAyMTUsIDIzMCwgMjQ4LCAyMjMsIDQxLCAyNDMsIDIxNiwgMjQzLCAyMTUsIDI0MywgMjE0LCAKKyAgICAyMzAsIDQ1LCAyMDksIDI1MSwgMjA5LCAyNTIsIDIwOSwgMjU0LCAyMzIsIDEwMiwgMjIyLCAyMTksIDIzMiwgMTAzLCAyMjIsIAorICAgIDIyMCwgMjI1LCAyMjMsIDIzMiwgMTAxLCAyMjIsIDIxOCwgMjI4LCAxMDYsIDIzMCwgMTY1LCAyMTEsIDIyOSwgMjEyLCAxNSwgCisgICAgMjQ1LCAxNjIsIDI0MywgMjI2LCAyMzAsIDIyOSwgMjI2LCAxOTcsIDIxNCwgMTM0LCA4NywgMjMwLCAyMjksIDI0OCwgMTU3LCAKKyAgICA4NywgOCwgMywgMjM1LCAxNTgsIDc4LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNzEsIDIzMywgMjAsIDEyNywgCisgICAgMjEzLCAxMTgsIDIxMywgNywgMjEyLCAxOTUsIDIxMiwgMTg0LCAyMTIsIDE3MywgMjEyLCAxNjIsIDIxMiwgMTUxLCAyMTIsIAorICAgIDE0MCwgMjEyLCAxMjksIDIxMywgMTE3LCAyMTMsIDEwNiwgMjEzLCA5NSwgMjEzLCA4NCwgMjEzLCA3MywgMjEzLCA2MiwgCisgICAgMjEzLCA1MSwgMjUxLCA3MSwgMjI2LCAxNTUsIDc4LCAyNTEsIDE5NiwgMjA5LCAyNTMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAKKyAgICAyMTksIDEwMiwgMjUwLCA3MywgMjE0LCA5LCAyMTMsIDQwLCAyMTMsIDI5LCAyMTMsIDE4LCAyMTMsIDYsIDIxMiwgMjUxLCAKKyAgICAyMTIsIDI0MCwgMjEyLCAyMjksIDIxMiwgMjE4LCAyMTIsIDIwNywgMjEyLCAxOTksIDIxMiwgMTk4LCAyMTIsIDE5NywgCisgICAgMjEyLCAxOTYsIDIxMiwgMTk0LCAyMTIsIDE5MywgMjEyLCAxOTIsIDIxMiwgMTkxLCAyMTIsIDE5MCwgMjEyLCAxODksIAorICAgIDIxMiwgMTg4LCAyMTIsIDE4NywgMjEyLCAxODYsIDIxMiwgMTg1LCAyMTIsIDE4MywgMjEyLCAxODIsIDIxMiwgMTgxLCAKKyAgICAyMTIsIDE4MCwgMjEyLCAxNzksIDIxMiwgMTc4LCAyMTIsIDE3NywgMjEyLCAxNzYsIDIxMiwgMTc1LCAyMTIsIDE3NCwgCisgICAgMjEyLCAxNzIsIDIxMiwgMTcxLCAyMTIsIDE3MCwgMjEyLCAxNjksIDIxMiwgMTY4LCAyMTIsIDE2NywgMjEyLCAxNjYsIAorICAgIDIxMiwgMTY1LCAyMTIsIDE2NCwgMjEyLCAxNjMsIDIxMiwgMTYxLCAyMTIsIDE2MCwgMjEyLCAxNTksIDIxMiwgMTU4LCAKKyAgICAyMTIsIDE1NywgMjEyLCAxNTYsIDIxMiwgMTU1LCAyMTIsIDE1NCwgMjEyLCAxNTMsIDIxMiwgMTUyLCAyMTIsIDE1MCwgCisgICAgMjEyLCAxNDksIDIxMiwgMTQ4LCAyMTIsIDE0NywgMjEyLCAxNDYsIDIxMiwgMTQ1LCAyMTIsIDE0NCwgMjEyLCAxNDMsIAorICAgIDIxMiwgMTQyLCAyMTIsIDE0MSwgMjEyLCAxMzksIDIxMiwgMTM4LCAyMTIsIDEzNywgMjEyLCAxMzYsIDIxMiwgMTM1LCAKKyAgICAyMTIsIDEzNCwgMjEyLCAxMzMsIDIxMiwgMTMyLCAyMTIsIDEzMSwgMjEyLCAxMzAsIDIxMiwgMTI4LCAyMTIsIDEyNywgCisgICAgMjEyLCAxMjYsIDIxMiwgMTI1LCAyMTIsIDEyNCwgMjEyLCAxMjMsIDIxMiwgMTIyLCAyMTIsIDEyMSwgMjEyLCAxMjAsIAorICAgIDIxMiwgMTE5LCAyMTMsIDExNiwgMjEzLCAxMTUsIDIxMywgMTE0LCAyMTMsIDExMywgMjEzLCAxMTIsIDIxMywgMTExLCAKKyAgICAyMTMsIDExMCwgMjEzLCAxMDksIDIxMywgMTA4LCAyMTMsIDEwNywgMjEzLCAxMDUsIDIxMywgMTA0LCAyMTMsIDEwMywgCisgICAgMjEzLCAxMDIsIDIxMywgMTAxLCAyMTMsIDEwMCwgMjEzLCA5OSwgMjEzLCA5OCwgMjEzLCA5NywgMjEzLCA5NiwgMjEzLCAKKyAgICA5NCwgMjEzLCA5MywgMjEzLCA5MiwgMjEzLCA5MSwgMjEzLCA5MCwgMjEzLCA4OSwgMjEzLCA4OCwgMjEzLCA4NywgMjEzLCAKKyAgICA4NiwgMjEzLCA4NSwgMjEzLCA4MywgMjEzLCA4MiwgMjEzLCA4MSwgMjEzLCA4MCwgMjEzLCA3OSwgMjEzLCA3OCwgMjEzLCAKKyAgICA3NywgMjEzLCA3NiwgMjEzLCA3NSwgMjEzLCA3NCwgMjEzLCA3MiwgMjEzLCA3MSwgMjEzLCA3MCwgMjEzLCA2OSwgMjEzLCAKKyAgICA2OCwgMjEzLCA2NywgMjEzLCA2NiwgMjEzLCA2NSwgMjEzLCA2NCwgMjEzLCA2MywgMjEzLCA2MSwgMjEzLCA2MCwgMjEzLCAKKyAgICA1OSwgMjEzLCA1OCwgMjEzLCA1NywgMjEzLCA1NiwgMjEzLCA1NSwgMjEzLCA1NCwgMjEzLCA1MywgMjEzLCA1MiwgMjEzLCAKKyAgICA1MCwgMjEzLCA0OSwgMjEzLCA0OCwgMjEzLCA0NywgMjEzLCA0NiwgMjEzLCA0NSwgMjEzLCA0NCwgMjEzLCA0MywgMjEzLCAKKyAgICA0MiwgMjEzLCA0MSwgMjEzLCAzOSwgMjEzLCAzOCwgMjEzLCAzNywgMjEzLCAzNiwgMjEzLCAzNSwgMjEzLCAzNCwgMjEzLCAKKyAgICAzMywgMjEzLCAzMiwgMjEzLCAzMSwgMjEzLCAzMCwgMjEzLCAyOCwgMjEzLCAyNywgMjEzLCAyNiwgMjEzLCAyNSwgMjEzLCAKKyAgICAyNCwgMjEzLCAyMywgMjEzLCAyMiwgMjEzLCAyMSwgMjEzLCAyMCwgMjEzLCAxOSwgMjEzLCAxNywgMjEzLCAxNiwgMjEzLCAKKyAgICAxNSwgMjEzLCAxNCwgMjEzLCAxMywgMjEzLCAxMiwgMjEzLCAxMSwgMjEzLCAxMCwgMjEzLCA5LCAyMTMsIDgsIDIxMywgNSwgCisgICAgMjEzLCA0LCAyMTMsIDMsIDIxMywgMiwgMjEzLCAxLCAyMTMsIDAsIDIxMiwgMjU1LCAyMTIsIDI1NCwgMjEyLCAyNTMsIAorICAgIDIxMiwgMjUyLCAyMTIsIDI1MCwgMjEyLCAyNDksIDIxMiwgMjQ4LCAyMTIsIDI0NywgMjEyLCAyNDYsIDIxMiwgMjQ1LCAKKyAgICAyMTIsIDI0NCwgMjEyLCAyNDMsIDIxMiwgMjQyLCAyMTIsIDI0MSwgMjEyLCAyMzksIDIxMiwgMjM4LCAyMTIsIDIzNywgCisgICAgMjEyLCAyMzYsIDIxMiwgMjM1LCAyMTIsIDIzNCwgMjEyLCAyMzMsIDIxMiwgMjMyLCAyMTIsIDIzMSwgMjEyLCAyMzAsIAorICAgIDIxMiwgMjI4LCAyMTIsIDIyNywgMjEyLCAyMjYsIDIxMiwgMjI1LCAyMTIsIDIyNCwgMjEyLCAyMjMsIDIxMiwgMjIyLCAKKyAgICAyMTIsIDIyMSwgMjEyLCAyMjAsIDIxMiwgMjE5LCAyMTIsIDIxNywgMjEyLCAyMTYsIDIxMiwgMjE1LCAyMTIsIDIxNCwgCisgICAgMjEyLCAyMTMsIDIxMiwgMjEyLCAyMTIsIDIxMSwgMjEyLCAyMTAsIDIxMiwgMjA5LCAyMTIsIDIwOCwgMjEyLCAyMDYsIAorICAgIDIxMiwgMjA1LCAyMTIsIDIwNCwgMjEyLCAyMDMsIDIxMiwgMjAyLCAyMTIsIDIwMSwgMjEyLCAyMDAsIDcsIDYsIDEsIDExNSwgCisgICAgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTE1LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAKKyAgICAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgCisgICAgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAKKyAgICAyMTQsIDI1MiwgNDMsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIAorICAgIDI1MCwgMzEsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNTAsIDIzNCwgNywgCisgICAgNiwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIAorICAgIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgNTksIDc3LCAyMiwgMTQyLCA3LCA0LCAxLCAyMjksIAorICAgIDgwLCAyLCAyMTYsIDg5LCA0OCwgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAxNDQsIDIsIAorICAgIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIAorICAgIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgCisgICAgMjIsIDE0MiwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgNjcsIAorICAgIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIAorICAgIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDExNSwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDE2MCwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDc3LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIAorICAgIDU5LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDQsIDEsIDE2MCwgMiwgNTksIAorICAgIDc3LCAyMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgNTksIDc3LCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU0LCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgNywgNCwgCisgICAgMSwgMjQwLCAxNTQsIDIsIDIyNiwgMjI1LCAyMiwgNTksIDc3LCAyMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAKKyAgICAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDU5LCA3NywgMjIsIDE4MiwgNywgNiwgCisgICAgMSwgMjM1LCAxNDUsIDIsIDE4MiwgNywgNCwgMSwgMjM1LCAxNDUsIDIsIDU5LCA3NywgMjIsIDE4MiwgNywgNiwgMSwgMjMzLCAKKyAgICAxNDksIDIsIDE4MiwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDE4MiwgNywgNiwgMSwgMjMyLCA1MCwgMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAyMzIsIDUwLCAyLCAxODIsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAxODIsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAxODIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxODIsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxODIsIAorICAgIDcsIDQsIDEsIDI1NCwgMjQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjA0LCAxNDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAKKyAgICAyMDQsIDE0NCwgMiwgMTQyLCA3LCA0LCAxLCAyMTUsIDk0LCAyMTQsIDEwNiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIxNSwgCisgICAgOTQsIDIxNCwgMTA2LCAyLCAxNDIsIDcsIDQsIDEsIDIyMSwgMTk2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjIxLCAxOTYsIAorICAgIDIsIDE0MiwgNywgNCwgMSwgMjQxLCA1MSwgMjIxLCAxOTYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDEsIDUxLCAyMjEsIAorICAgIDE5NiwgMiwgMTQyLCAxNDYsIDEsIDIzNCwgMTA5LCAzNiwgMTE2LCAyMzUsIDIzLCAzNiwgMTE2LCAyMjksIDc5LCAzNiwgCisgICAgMTE2LCAyNTEsIDY2LCAzNiwgMTE2LCAyMjcsIDE2NywgMzYsIDExNiwgMjE1LCAxNTksIDM2LCAxMTYsIDIyOCwgMTExLCAKKyAgICAzNiwgMTE2LCAyMTcsIDE1MiwgMzYsIDExNiwgMjMwLCAyNSwgMzYsIDExNiwgMjI2LCAxMDUsIDM2LCAxMTYsIDE5MywgMzYsIAorICAgIDExNiwgMjExLCAxMTcsIDM2LCAxMTYsIDE1MywgMzYsIDExNiwgMTU2LCAzNiwgMTE2LCAyMTQsIDEwNSwgMzYsIDExNiwgCisgICAgMjMyLCAxNzYsIDM2LCAxMTYsIDIzMiwgMTg1LCAzNiwgMTE2LCAyMjIsIDE4MCwgMzYsIDExNiwgMjI4LCA5MywgMzYsIAorICAgIDExNiwgMjM1LCAxNDQsIDM2LCAxMTYsIDIyMCwgMTA0LCAzNiwgMTE2LCAyMTgsIDIyNiwgMzYsIDExNiwgMjIyLCA5MSwgCisgICAgMzYsIDExNiwgMjQyLCA2MCwgMzYsIDExNiwgMjMzLCAyMzIsIDM2LCAzLCAyMzUsIDEwLCAzNiwgMywgMjM0LCA5MiwgMzYsIAorICAgIDMsIDIzNCwgODMsIDM2LCAzLCAyMzMsIDIxNywgMzYsIDMsIDIzMywgMTg4LCAzNiwgMywgMjM0LCAxODIsIDM2LCAzLCAKKyAgICAyMzQsIDE4MSwgMzYsIDMsIDIzNCwgMjQ2LCAzNiwgMywgMjM0LCAyOCwgMzYsIDMsIDIzNCwgMTAsIDM2LCAzLCAyMzQsIAorICAgIDE5NSwgMzYsIDMsIDIyOSwgNzYsIDM2LCAzLCAyMjksIDI3LCAzNiwgMywgMjI5LCAyMywgMzYsIDMsIDIyOCwgMjQ4LCAzNiwgCisgICAgMywgMjI4LCAyNDEsIDM2LCAzLCAyMjksIDY0LCAzNiwgMywgMjI5LCA2MiwgMzYsIDMsIDIyOSwgNzMsIDM2LCAzLCAyMjksIAorICAgIDQsIDM2LCAzLCAyMjgsIDI1NSwgMzYsIDMsIDIyOSwgNjYsIDM2LCAzLCAyNTEsIDMyLCAzNiwgMywgMjUwLCA1MSwgMzYsIAorICAgIDMsIDI1MCwgNDEsIDM2LCAzLCAyNDksIDExMiwgMzYsIDMsIDI0OSwgODMsIDM2LCAzLCAyNTAsIDE5MCwgMzYsIDMsIDI1MCwgCisgICAgMTgyLCAzNiwgMywgMjUxLCAyMiwgMzYsIDMsIDI0OSwgMjM4LCAzNiwgMywgMjQ5LCAxNzQsIDM2LCAzLCAyNTAsIDIyMiwgCisgICAgMzYsIDMsIDIyNywgMTY0LCAzNiwgMywgMjI3LCAxNDgsIDM2LCAzLCAyMjcsIDE0MywgMzYsIDMsIDIyNywgMTI4LCAzNiwgCisgICAgMywgMjI3LCAxMjEsIDM2LCAzLCAyMjcsIDE1NiwgMzYsIDMsIDIyNywgMTU1LCAzNiwgMywgMjI3LCAxNjEsIDM2LCAzLCAKKyAgICAyMjcsIDEzNCwgMzYsIDMsIDIyNywgMTMyLCAzNiwgMywgMjI3LCAxNTksIDM2LCAzLCAyMTUsIDE1NSwgMzYsIDMsIDIxNSwgCisgICAgMTM1LCAzNiwgMywgMjE1LCAxMzQsIDM2LCAzLCAyMTUsIDEyMywgMzYsIDMsIDIxNSwgMTIwLCAzNiwgMywgMjE1LCAxNTEsIAorICAgIDM2LCAzLCAyMTUsIDE1MCwgMzYsIDMsIDIxNSwgMTU0LCAzNiwgMywgMjE1LCAxMzMsIDM2LCAzLCAyMTUsIDEzMiwgMzYsIAorICAgIDMsIDIxNSwgMTUzLCAzNiwgMywgMjI4LCAxMDksIDM2LCAzLCAyMjgsIDk1LCAzNiwgMywgMjI4LCA5NCwgMzYsIDMsIDIyOCwgCisgICAgNzgsIDM2LCAzLCAyMjgsIDc3LCAzNiwgMywgMjI4LCAxMDUsIDM2LCAzLCAyMjgsIDEwNCwgMzYsIDMsIDIyOCwgMTA4LCAKKyAgICAzNiwgMywgMjI4LCA4MCwgMzYsIDMsIDIyOCwgNzksIDM2LCAzLCAyMjgsIDEwNywgMzYsIDMsIDIxNywgMTAxLCAzNiwgMywgCisgICAgMjE2LCAxMTcsIDM2LCAzLCAyMTYsIDEwMywgMzYsIDMsIDIxNSwgMTE4LCAzNiwgMywgMjE1LCA4NSwgMzYsIDMsIDIxNywgCisgICAgMjIsIDM2LCAzLCAyMTcsIDExLCAzNiwgMywgMjE3LCA3OSwgMzYsIDMsIDExMSwgMzYsIDMsIDIxNiwgMTcsIDM2LCAzLCAKKyAgICAyMTcsIDQxLCAzNiwgMywgMjI5LCAyMjUsIDM2LCAzLCAyMjgsIDIzMywgMzYsIDMsIDIyOCwgMjA4LCAzNiwgMywgMjI3LCAKKyAgICAyMzcsIDM2LCAzLCAyMjcsIDE3OSwgMzYsIDMsIDIyOSwgMTA3LCAzNiwgMywgMjI5LCAxMDMsIDM2LCAzLCAyMjksIDIxMiwgCisgICAgMzYsIDMsIDIyOCwgNzQsIDM2LCAzLCAyMjgsIDY0LCAzNiwgMywgMjI5LCAxODcsIDM2LCAzLCAyMjYsIDg5LCAzNiwgMywgCisgICAgMjI1LCAxMDgsIDM2LCAzLCAyMjUsIDcxLCAzNiwgMywgMjI0LCAxNTAsIDM2LCAzLCAyMjQsIDExOSwgMzYsIDMsIDIyNSwgCisgICAgMjIxLCAzNiwgMywgMjI1LCAyMTEsIDM2LCAzLCAyMjYsIDcxLCAzNiwgMywgMjI1LCAxNiwgMzYsIDMsIDIyNCwgMjQ5LCAKKyAgICAzNiwgMywgMjI1LCAyMzQsIDM2LCAzLCAyMzEsIDIzNywgMzYsIDMsIDIzMCwgMjMwLCAzNiwgMywgMjMwLCAyMDEsIDM2LCAKKyAgICAzLCAyMzAsIDEwMiwgMzYsIDMsIDIzMCwgNTQsIDM2LCAzLCAyMzEsIDkxLCAzNiwgMywgMjMxLCA4MCwgMzYsIDMsIDIzMSwgCisgICAgMjAzLCAzNiwgMywgMjMwLCAxNjEsIDM2LCAzLCAyMzAsIDEzMiwgMzYsIDMsIDIzMSwgMTM1LCAzNiwgMywgMjExLCAxMDMsIAorICAgIDM2LCAzLCAyMTEsIDgsIDM2LCAzLCAyMTAsIDI1NSwgMzYsIDMsIDIxMCwgMjEyLCAzNiwgMywgMjEwLCAxODEsIDM2LCAzLCAKKyAgICAyMTEsIDQ3LCAzNiwgMywgMjExLCA0NCwgMzYsIDMsIDIxMSwgODIsIDM2LCAzLCAyMTAsIDI0NCwgMzYsIDMsIDIxMCwgCisgICAgMjI5LCAzNiwgMywgMjExLCA1NSwgMzYsIDMsIDIyMywgMTg0LCAzNiwgMywgMjIzLCAzNSwgMzYsIDMsIDIyMiwgMjM5LCAKKyAgICAzNiwgMywgMjIyLCAxNDAsIDM2LCAzLCAyMjIsIDExMiwgMzYsIDMsIDIyMywgMTI4LCAzNiwgMywgMjIzLCAxMDgsIDM2LCAKKyAgICAzLCAyMjMsIDE2NiwgMzYsIDMsIDIyMiwgMjExLCAzNiwgMywgMjIyLCAxOTcsIDM2LCAzLCAyMjMsIDEzNiwgMzYsIDMsIAorICAgIDIzMywgMTM0LCAzNiwgMywgMjMyLCAyNDEsIDM2LCAzLCAyMzIsIDIyNywgMzYsIDMsIDIzMiwgOTgsIDM2LCAzLCAyMzIsIAorICAgIDczLCAzNiwgMywgMjMzLCA1OCwgMzYsIDMsIDIzMywgNTAsIDM2LCAzLCAyMzMsIDEwOSwgMzYsIDMsIDIzMiwgMTU2LCAzNiwgCisgICAgMywgMjMyLCAxMjcsIDM2LCAzLCAyMzMsIDc0LCAzNiwgMywgMjE0LCAyNiwgMzYsIDMsIDIxMywgMTc2LCAzNiwgMywgMjEzLCAKKyAgICAxNjIsIDM2LCAzLCAyMTIsIDExNiwgMzYsIDMsIDIxMiwgMTA5LCAzNiwgMywgMjEzLCAyNTUsIDM2LCAzLCAyMTMsIDI1MCwgCisgICAgMzYsIDMsIDIxNCwgMjMsIDM2LCAzLCAyMTMsIDEzOCwgMzYsIDMsIDIxMywgMTI3LCAzNiwgMywgMjE0LCA1LCAzNiwgMywgCisgICAgMjMyLCAxNzQsIDM2LCAzLCAyMzIsIDE2OSwgMzYsIDMsIDIzMiwgMTY4LCAzNiwgMywgMjMyLCAxNjUsIDM2LCAzLCAyMzIsIAorICAgIDE2NCwgMzYsIDMsIDIzMiwgMTcxLCAzNiwgMywgMjMyLCAxNzAsIDM2LCAzLCAyMzIsIDE3MywgMzYsIDMsIDIzMiwgMTY3LCAKKyAgICAzNiwgMywgMjMyLCAxNjYsIDM2LCAzLCAyMzIsIDE3MiwgMzYsIDMsIDIzMiwgMTgzLCAzNiwgMywgMjMyLCAxNzgsIDM2LCAKKyAgICAzLCAyMzIsIDE3NywgMzYsIDMsIDIzMiwgMTYxLCAzNiwgMywgMjMyLCAxNjAsIDM2LCAzLCAyMzIsIDE4MCwgMzYsIDMsIAorICAgIDIzMiwgMTc5LCAzNiwgMywgMjMyLCAxODIsIDM2LCAzLCAyMzIsIDE2MywgMzYsIDMsIDIzMiwgMTYyLCAzNiwgMywgMjMyLCAKKyAgICAxODEsIDM2LCAzLCAyMjIsIDE3OCwgMzYsIDMsIDIyMiwgMTY3LCAzNiwgMywgMjIyLCAxNjYsIDM2LCAzLCAyMjIsIDE2MCwgCisgICAgMzYsIDMsIDIyMiwgMTUzLCAzNiwgMywgMjIyLCAxNzQsIDM2LCAzLCAyMjIsIDE3MywgMzYsIDMsIDIyMiwgMTc3LCAzNiwgCisgICAgMywgMjIyLCAxNjUsIDM2LCAzLCAyMjIsIDE2NCwgMzYsIDMsIDIyMiwgMTc2LCAzNiwgMywgMjI4LCA5MSwgMzYsIDMsIAorICAgIDIyOCwgODYsIDM2LCAzLCAyMjgsIDg1LCAzNiwgMywgMjI4LCA4MiwgMzYsIDMsIDIyOCwgODEsIDM2LCAzLCAyMjgsIDg4LCAKKyAgICAzNiwgMywgMjI4LCA4NywgMzYsIDMsIDIyOCwgOTAsIDM2LCAzLCAyMjgsIDg0LCAzNiwgMywgMjI4LCA4MywgMzYsIDMsIAorICAgIDIyOCwgODksIDM2LCAzLCAyMzUsIDE0MCwgMzYsIDMsIDIzNSwgMTA4LCAzNiwgMywgMjM1LCAxMDEsIDM2LCAzLCAyMzUsIAorICAgIDUxLCAzNiwgMywgMjM1LCAzMywgMzYsIDMsIDIzNSwgMTI2LCAzNiwgMywgMjM1LCAxMjQsIDM2LCAzLCAyMzUsIDEzNSwgCisgICAgMzYsIDMsIDIzNSwgNjgsIDM2LCAzLCAyMzUsIDU5LCAzNiwgMywgMjM1LCAxMjksIDM2LCAzLCAyMjAsIDk4LCAzNiwgMywgCisgICAgMjIwLCAzMiwgMzYsIDMsIDIyMCwgMjcsIDM2LCAzLCAyMTksIDIyNSwgMzYsIDMsIDIxOSwgMjEwLCAzNiwgMywgMjIwLCAKKyAgICA2MywgMzYsIDMsIDIyMCwgNjEsIDM2LCAzLCAyMjAsIDkwLCAzNiwgMywgMjIwLCA3LCAzNiwgMywgMjIwLCAxLCAzNiwgMywgCisgICAgMjIwLCA3MSwgMzYsIDMsIDIxOCwgMjIyLCAzNiwgMywgMjE4LCAxOTIsIDM2LCAzLCAyMTgsIDE4OCwgMzYsIDMsIDIxOCwgCisgICAgMTc5LCAzNiwgMywgMjE4LCAxNzYsIDM2LCAzLCAyMTgsIDE5NywgMzYsIDMsIDIxOCwgMTk2LCAzNiwgMywgMjE4LCAyMjEsIAorICAgIDM2LCAzLCAyMTgsIDE4NCwgMzYsIDMsIDIxOCwgMTgzLCAzNiwgMywgMjE4LCAxOTksIDM2LCAzLCAyMjIsIDMxLCAzNiwgMywgCisgICAgMjE5LCAxOTEsIDM2LCAzLCAyMTksIDE3NSwgMzYsIDMsIDIxOCwgODMsIDM2LCAzLCAyMTgsIDQsIDM2LCAzLCAyMjEsIAorICAgIDE4MSwgMzYsIDMsIDIyMSwgMTcwLCAzNiwgMywgMjIyLCAxNywgMzYsIDMsIDIxOSwgNTgsIDM2LCAzLCAyMTksIDQwLCAzNiwgCisgICAgMywgMjIxLCAyMTksIDM2LCAzLCAyNDIsIDQ2LCAzNiwgMywgMjQxLCAxODAsIDM2LCAzLCAyNDEsIDE2MSwgMzYsIDMsIAorICAgIDI0MCwgMjIyLCAzNiwgMywgMjQwLCAyMDIsIDM2LCAzLCAyNDEsIDIzOCwgMzYsIDMsIDI0MSwgMjIwLCAzNiwgMywgMjQyLCAKKyAgICAzNiwgMzYsIDMsIDI0MSwgNjgsIDM2LCAzLCAyNDEsIDUzLCAzNiwgMywgMjQxLCAyNDYsIDM2LCAzLCAyMzMsIDIzMSwgMzYsIAorICAgIDMsIDIzMywgMjMwLCAzNiwgMywgMjMzLCAyMjUsIDM2LCAzLCAyMzMsIDIyNCwgMzYsIDMsIDIzMywgMjIxLCAzNiwgMywgCisgICAgMjMzLCAyMjAsIDM2LCAzLCAyMzMsIDIyNywgMzYsIDMsIDIzMywgMjI2LCAzNiwgMywgMjMzLCAyMjksIDM2LCAzLCAyMzMsIAorICAgIDIyMywgMzYsIDMsIDIzMywgMjIyLCAzNiwgMywgMjMzLCAyMjgsIDM2LCAzLCAyMTksIDIzMSwgMTc1LCAxMTYsIDUsIDIxMSwgCisgICAgNjgsIDE3NSwgMTE2LCA1LCAyMjMsIDE1NSwgMTc1LCAxMTYsIDUsIDIyMywgNzgsIDk4LCAxLCAyMTUsIDI4LCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzMywgMTc2LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjM0LCAxMzIsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAKKyAgICAyMzQsIDI4LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjM0LCAxMDUsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMjksIDQsIAorICAgIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTEsIDMzLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUwLCAxNTcsIDY5LCAxMTYsIAorICAgIDUsIDI0OSwgMjMzLCAyNDksIDIzOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MCwgODYsIDY5LCAxMTYsIDUsIDI0OSwgCisgICAgMjMzLCAyMjcsIDEzNCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI0OCwgMjIxLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjE1LCAKKyAgICAxNDQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNDcsIDE0NSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNSwgMTM5LCA2OSwgCisgICAgMTE2LCA1LCAyNDksIDIzMywgMTk3LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjE3LCAxMDUsIDY5LCAxMTYsIDUsIDI0OSwgCisgICAgMjMzLCAyMTYsIDIwOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDExMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNiwgMTU2LCAKKyAgICA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI4LCA3NCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MiwgMTkxLCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzMywgMjI1LCAxNDcsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMjUsIDE2LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjI1LCAxMjEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzAsIDE2MSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxMCwgCisgICAgMjQ0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjIyLCAyMTEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzIsIDE1NiwgNjksIAorICAgIDExNiwgNSwgMjQ5LCAyMzMsIDIxMywgMTM4LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjIwLCAxMDIsIDY5LCAxMTYsIDUsIAorICAgIDI0OSwgMjMzLCAyMTgsIDIyMywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIwNiwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDE2MiwgCisgICAgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzMywgMTM1LCA2OSwgMjUsIDUsIDI0OSwgMjMzLCAyMjQsIDg4LCA2OSwgMjM1LCAKKyAgICAyNDMsIDI1LCA1LCAyNDksIDIzMywgMjI0LCAzMCwgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyMiwgMTAwLCAKKyAgICA2OSwgMjM1LCAyNDMsIDI1LCA1LCAyNDksIDIzMywgMjIyLCA5MywgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIAorICAgIDIyNCwgNjksIDY5LCAyNSwgNSwgMjI2LCAyMDQsIDY5LCAyNSwgNSwgMjU1LCAzNCwgMTQxLCAxLCAyNTEsIDI1NSwgMjI5LCAKKyAgICA3NywgMTQxLCAxLCAyNTEsIDI1NSwgMjI5LCAyNywgMTQxLCAxLCAyNTEsIDI1NSwgMjI4LCAyNDgsIDE0MSwgMSwgMjUxLCAKKyAgICAyNTUsIDIyOSwgNjQsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgNCwgNTYsIDEsIDI1MSwgMjU1LCAyMjksIDc3LCA1NiwgMSwgCisgICAgMjUxLCAyNTUsIDIyOSwgMjcsIDU2LCAxLCAyNTEsIDI1NSwgMjI4LCAyNDgsIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA2NCwgCisgICAgNTYsIDEsIDI1MSwgMjU1LCAyMjksIDQsIDU2LCAxLCAyNTQsIDE5NCwgMjUwLCAxOTAsIDU2LCAxLCAyNTQsIDE5NCwgMjE1LCAKKyAgICAxMTgsIDU2LCAxLCAyNTQsIDE5NCwgMTExLCA1NiwgMSwgMjU0LCAxOTQsIDIyNiwgMTA1LCA1OCwgMSwgMjQ1LCAyMCwgCisgICAgMjQ1LCAxOSwgMjQ5LCAxODIsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ1LCAyMCwgMjQ5LCAxODIsIDEzOCwgMTMwLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tfb2Zmc2V0MVtdID0gewpAQCAtMTMxMjcsNDg3ICsxMzgyNCw0ODggQEAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAKICAgICAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAKICAgICA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCAKLSAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCAxNywgODcsIDg4LCA4OSwgOTAsIDkxLCAKLSAgICA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEwMywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgCi0gICAgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIAotICAgIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxMjgsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEyOSwgMTMwLCAKLSAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCi0gICAgMTQ1LCAxNDYsIDE3LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTUyLCAxNywgCi0gICAgMTUzLCAxNywgMTU0LCAxNywgMTU1LCAxNywgMTU2LCAxNywgMTcsIDE3LCAxNTcsIDE3LCAxNywgMTcsIDE1OCwgMTU5LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgCi0gICAgMTY1LCAxNjYsIDE3LCAxNjcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgCi0gICAgMTc0LCAxNzUsIDE3NiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3NywgCi0gICAgMTc4LCAxNzksIDE4MCwgMTgxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTgyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTcsIDE4OCwgCi0gICAgMTcsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMTcsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAKLSAgICAyMDcsIDIwOCwgMjA5LCAyMTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDIxMSwgMjEyLCAyMTMsIAotICAgIDIxNCwgMjE1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyMTYsIDE3LCAyMTcsIDIxOCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCAKKyAgICA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMDQsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIAorICAgIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAKKyAgICAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgMTI5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMzAsIDEzMSwgCisgICAgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIAorICAgIDE0NiwgMTQ3LCA4NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE1MywgODcsIAorICAgIDE1NCwgMTU1LCAxNTYsIDg3LCAxNTcsIDg3LCAxNTgsIDg3LCA4NywgODcsIDE1OSwgODcsIDg3LCA4NywgMTYwLCAxNjEsIAorICAgIDE2MiwgMTYzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjQsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCisgICAgMTY5LCAxNzAsIDE3MSwgODcsIDE3MiwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAKKyAgICAxNzksIDE4MCwgMTgxLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTgyLCAKKyAgICAxODMsIDE4NCwgMTg1LCAxODYsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4NywgMTg4LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDE4OSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDg3LCAxOTUsIAorICAgIDg3LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCAyMDQsIDIwNSwgODcsIDg3LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgODcsIDIxMSwgMjEyLCAyMTMsIDIxNCwgCisgICAgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDIyMCwgMjIxLCAKKyAgICAyMjIsIDIyMywgMjI0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjUsIDg3LCAyMjYsIDIyNywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMjM1LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBwaHJhc2Vib29rX29mZnNldDJbXSA9IHsKQEAgLTEzNjE1LDI4MDMgKzE0MzEzLDMwMTUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA2LCA5LCAxMSwgMTQsIDE3LCAxOSwgMjEsIDI0LCAyNywgMjksIDMxLCAKICAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU4LCA2MCwgNjIsIDY0LCA2NiwgNjksIDcyLCAKICAgICA3NSwgNzgsIDgyLCA4NiwgOTEsIDk2LCAxMDEsIDEwNSwgMTEwLCAxMTUsIDEyMCwgMTI0LCAxMjksIDEzNCwgMTM4LCAxNDIsIAotICAgIDE0NiwgMTUwLCAxNTUsIDE2MCwgMTY0LCAxNjgsIDE3MywgMTc3LCAxODIsIDE4NywgMTkyLCAxOTcsIDIwMiwgMjA1LCAKLSAgICAyMDksIDIxMiwgMjE2LCAyMTksIDIyMywgMjI3LCAyMzIsIDIzNywgMjQyLCAyNDYsIDI1MSwgMjU2LCAyNjEsIDI2NSwgCi0gICAgMjcwLCAyNzUsIDI3OSwgMjgzLCAyODcsIDI5MSwgMjk2LCAzMDEsIDMwNSwgMzA5LCAzMTQsIDMxOCwgMzIzLCAzMjgsIAotICAgIDMzMywgMzM4LCAzNDMsIDM0NywgMzUwLCAzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NiwgMzYwLCAzNjUsIAotICAgIDM2OCwgMzcxLCAzNzQsIDM3NywgMzgwLCAzODMsIDM4NSwgMzg4LCAzOTQsIDQwMiwgNDA1LCA0MDksIDQxMiwgNDE0LCAKLSAgICA0MTcsIDQyMCwgNDIzLCA0MjYsIDQzMCwgNDMzLCA0MzYsIDQ0MCwgNDQyLCA0NDUsIDQ1MSwgNDU5LCA0NjYsIDQ3MywgCi0gICAgNDgwLCA0ODUsIDQ5MiwgNDk4LCA1MDUsIDUxMiwgNTE5LCA1MjcsIDUzMiwgNTQwLCA1NDcsIDU1MywgNTYwLCA1NjcsIAotICAgIDU3NSwgNTgyLCA1OTAsIDU5OCwgNjAzLCA2MTEsIDYxOCwgNjI0LCA2MzEsIDYzOCwgNjQ1LCA2NDgsIDY1NCwgNjYxLCAKLSAgICA2NjcsIDY3NCwgNjgxLCA2ODgsIDY5MywgNjk5LCA3MDYsIDcxMiwgNzE5LCA3MjYsIDczMywgNzQxLCA3NDYsIDc1NCwgCi0gICAgNzYxLCA3NjcsIDc3NCwgNzgxLCA3ODksIDc5NiwgODA0LCA4MTIsIDgxNywgODI1LCA4MzIsIDgzOCwgODQ1LCA4NTIsIAotICAgIDg1OSwgODYyLCA4NjgsIDg3NSwgODgxLCA4ODgsIDg5NSwgOTAyLCA5MDcsIDkxNSwgOTIyLCA5MjksIDkzNiwgOTQzLCAKLSAgICA5NTAsIDk1NywgOTY0LCA5NzEsIDk3OSwgOTg3LCA5OTUsIDEwMDMsIDEwMTEsIDEwMTksIDEwMjcsIDEwMzUsIDEwNDIsIAotICAgIDEwNDksIDEwNTYsIDEwNjMsIDEwNzAsIDEwNzcsIDEwODQsIDEwOTEsIDEwOTgsIDExMDUsIDExMTIsIDExMTksIDExMjcsIAotICAgIDExMzUsIDExNDMsIDExNTEsIDExNTksIDExNjcsIDExNzUsIDExODMsIDExOTEsIDExOTksIDEyMDYsIDEyMTMsIDEyMjEsIAotICAgIDEyMjksIDEyMzcsIDEyNDUsIDEyNTMsIDEyNjEsIDEyNjksIDEyNzcsIDEyODUsIDEyOTEsIDEyOTYsIDEzMDEsIDEzMDksIAotICAgIDEzMTcsIDEzMjUsIDEzMzMsIDEzMzgsIDEzNDUsIDEzNTIsIDEzNjAsIDEzNjgsIDEzNzYsIDEzODQsIDEzOTQsIDE0MDQsIAotICAgIDE0MTEsIDE0MTgsIDE0MjUsIDE0MzIsIDE0NDAsIDE0NDgsIDE0NTYsIDE0NjQsIDE0NzUsIDE0ODAsIDE0ODUsIDE0OTIsIAotICAgIDE0OTksIDE1MDYsIDE1MTMsIDE1MjAsIDE1MjcsIDE1MzIsIDE1MzcsIDE1NDQsIDE1NTEsIDE1NTksIDE1NjcsIDE1NzUsIAotICAgIDE1ODMsIDE1OTAsIDE1OTcsIDE2MDUsIDE2MTMsIDE2MjEsIDE2MjksIDE2MzcsIDE2NDUsIDE2NTMsIDE2NjEsIDE2NjksIAotICAgIDE2NzcsIDE2ODQsIDE2OTEsIDE2OTgsIDE3MDUsIDE3MTIsIDE3MTksIDE3MjYsIDE3MzMsIDE3NDEsIDE3NDksIDE3NTYsIAotICAgIDE3NjMsIDE3NzAsIDE3NzcsIDE3ODUsIDE3OTMsIDE4MDEsIDE4MDksIDE4MTcsIDE4MjQsIDE4MzEsIDE4MzksIDE4NDcsIAotICAgIDE4NTUsIDE4NjMsIDE4NjgsIDE4NzQsIDE4ODAsIDE4ODcsIDE4OTQsIDE4OTksIDE5MDQsIDE5MTAsIDE5MTcsIDE5MjQsIAotICAgIDE5MzEsIDE5MzgsIDE5NDYsIDE5NTQsIDE5NjEsIDE5NjcsIDE5NzIsIDE5NzgsIDE5ODUsIDE5OTIsIDE5OTksIDIwMDQsIAotICAgIDIwMDksIDIwMTQsIDIwMjEsIDIwMjgsIDIwMzUsIDIwNDIsIDIwNDksIDIwNTUsIDIwNjMsIDIwNzMsIDIwODIsIDIwODksIAotICAgIDIwOTYsIDIxMDEsIDIxMDYsIDIxMTMsIDIxMjAsIDIxMjQsIDIxMjksIDIxMzQsIDIxMzksIDIxNDcsIDIxNTYsIDIxNjMsIAotICAgIDIxNzAsIDIxNzksIDIxODYsIDIxOTMsIDIxOTgsIDIyMDUsIDIyMTIsIDIyMTksIDIyMjYsIDIyMzMsIDIyMzgsIDIyNDUsIAotICAgIDIyNTIsIDIyNjAsIDIyNjUsIDIyNzAsIDIyNzUsIDIyODUsIDIyODksIDIyOTUsIDIzMDEsIDIzMDcsIDIzMTMsIDIzMjEsIAotICAgIDIzMzQsIDIzNDIsIDIzNDcsIDIzNTcsIDIzNjIsIDIzNjcsIDIzNzcsIDIzODIsIDIzODksIDIzOTYsIDI0MDQsIDI0MTIsIAotICAgIDI0MTksIDI0MjYsIDI0MzMsIDI0NDAsIDI0NTAsIDI0NjAsIDI0NjksIDI0NzgsIDI0ODgsIDI0OTgsIDI1MDgsIDI1MTgsIAotICAgIDI1MjQsIDI1MzQsIDI1NDQsIDI1NTQsIDI1NjQsIDI1NzIsIDI1ODAsIDI1ODcsIDI1OTQsIDI2MDIsIDI2MTAsIDI2MTgsIAotICAgIDI2MjYsIDI2MzMsIDI2NDAsIDI2NTAsIDI2NjAsIDI2NjgsIDI2NzYsIDI2ODQsIDI2ODksIDI2OTksIDI3MDQsIDI3MTEsIAotICAgIDI3MTgsIDI3MjMsIDI3MjgsIDI3MzYsIDI3NDQsIDI3NTQsIDI3NjQsIDI3NzEsIDI3NzgsIDI3ODcsIDI3OTYsIDI4MDQsIAotICAgIDI4MTIsIDI4MjEsIDI4MzAsIDI4MzgsIDI4NDYsIDI4NTUsIDI4NjQsIDI4NzMsIDI4ODIsIDI4OTIsIDI5MDIsIDI5MTAsIAotICAgIDI5MTgsIDI5MjcsIDI5MzYsIDI5NDUsIDI5NTQsIDI5NjQsIDI5NzQsIDI5ODIsIDI5OTAsIDI5OTksIDMwMDgsIDMwMTcsIAotICAgIDMwMjYsIDMwMzUsIDMwNDQsIDMwNDksIDMwNTQsIDMwNjIsIDMwNzAsIDMwODAsIDMwODgsIDMwOTMsIDMwOTgsIDMxMDUsIAotICAgIDMxMTIsIDMxMTksIDMxMjYsIDMxMzMsIDMxNDAsIDMxNTAsIDMxNjAsIDMxNzAsIDMxODAsIDMxODcsIDMxOTQsIDMyMDQsIAotICAgIDMyMTQsIDMyMjIsIDMyMzAsIDMyMzgsIDMyNDYsIDMyNTQsIDMyNjEsIDMyNjgsIDMyNzUsIDMyODEsIDMyODgsIDMyOTUsIAotICAgIDMzMDIsIDMzMTEsIDMzMjEsIDMzMzEsIDMzMzgsIDMzNDUsIDMzNTEsIDMzNTYsIDMzNjMsIDMzNjksIDMzNzUsIDMzODIsIAotICAgIDMzODksIDM0MDAsIDM0MTAsIDM0MTcsIDM0MjQsIDM0MzEsIDM0MzgsIDM0NDQsIDM0NDksIDM0NTYsIDM0NjIsIDM0NjgsIAotICAgIDM0NzYsIDM0ODQsIDM0OTEsIDM0OTcsIDM1MDIsIDM1MDksIDM1MTUsIDM1MjMsIDM1MzMsIDM1NDMsIDM1NTIsIDM1NTksIAotICAgIDM1NjUsIDM1NzEsIDM1NzYsIDM1ODMsIDM1OTAsIDM1OTcsIDM2MDQsIDM2MTEsIDM2MTYsIDM2MjEsIDM2MzEsIDM2MzksIAotICAgIDM2NDgsIDM2NTMsIDM2NTksIDM2NzAsIDM2NzcsIDM2ODUsIDM2OTQsIDM2OTksIDM3MDUsIDM3MTEsIDM3MTgsIDM3MjMsIAotICAgIDM3MjksIDM3NDAsIDM3NDksIDM3NTgsIDM3NjYsIDM3NzQsIDM3ODQsIDM3ODksIDM3OTYsIDM4MDMsIDM4MDgsIDM4MjAsIAotICAgIDM4MjksIDM4MzcsIDM4NDQsIDM4NTMsIDM4NTgsIDM4NjMsIDM4NzAsIDM4NzcsIDM4ODQsIDM4OTEsIDM4OTcsIDM5MDYsIAotICAgIDM5MTQsIDM5MTksIDM5MjcsIDM5MzMsIDM5NDEsIDM5NDksIDM5NTUsIDM5NjEsIDM5NjcsIDM5NzUsIDM5ODMsIDM5ODksIAotICAgIDM5OTcsIDQwMDQsIDQwMDksIDQwMTYsIDQwMjQsIDQwMzQsIDQwNDEsIDQwNDgsIDQwNTgsIDQwNjUsIDQwNzIsIDQwODIsIAotICAgIDQwODksIDQwOTYsIDQxMDMsIDQxMDksIDQxMTUsIDQxMjUsIDQxMzgsIDQxNDMsIDQxNTAsIDQxNTUsIDQxNTksIDQxNjUsIAotICAgIDQxNzQsIDQxODEsIDQxODYsIDQxOTEsIDQxOTUsIDQyMDAsIDQyMDYsIDQyMTAsIDQyMTYsIDQyMjIsIDQyMjgsIDQyMzQsIAotICAgIDQyNDIsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjgsIDQyNzAsIDQyNzUsIDQyNzksIDQyODUsIDQyOTEsIDQyOTcsIAotICAgIDQzMDIsIDQzMDksIDQzMTYsIDQzMjIsIDQzMjksIDQzMzcsIDQzNDUsIDQzNTAsIDQzNTUsIDQzNTksIDQzNjQsIDQzNjYsIAotICAgIDQzNjgsIDQzNzEsIDQzNzMsIDQzNzYsIDQzODEsIDQzODYsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDUsIDQ0MTAsIDQ0MTksIAotICAgIDQ0MjUsIDQ0MzAsIDQ0MzYsIDQ0NDEsIDQ0NDcsIDQ0NTUsIDQ0NjMsIDQ0NjcsIDQ0NzEsIDQ0NzYsIDQ0ODIsIDQ0ODgsIAotICAgIDQ0OTQsIDQ1MDAsIDQ1MDUsIDQ1MTMsIDQ1MjIsIDQ1MzEsIDQ1MzYsIDQ1NDIsIDQ1NDksIDQ1NTYsIDQ1NjMsIDQ1NzAsIAotICAgIDQ1NzQsIDQ1ODAsIDQ1ODUsIDQ1OTAsIDQ1OTUsIDQ2MDAsIDQ2MDMsIDQ2MDYsIDQ2MDksIDQ2MTIsIDQ2MTUsIDQ2MTgsIAotICAgIDQ2MjIsIDQ2MjYsIDQ2MzIsIDQ2MzUsIDQ2NDAsIDQ2NDYsIDQ2NTIsIDQ2NTUsIDQ2NjAsIDQ2NjYsIDQ2NzAsIDQ2NzYsIAotICAgIDQ2ODIsIDQ2ODgsIDQ2OTQsIDQ2OTksIDQ3MDQsIDQ3MDksIDQ3MTIsIDQ3MTgsIDQ3MjMsIDQ3MjgsIDQ3MzIsIDQ3MzcsIAotICAgIDQ3NDMsIDQ3NDksIDQ3NTIsIDQ3NTYsIDQ3NjAsIDQ3NjQsIDQ3NjcsIDQ3NzAsIDQ3NzUsIDQ3NzksIDQ3ODYsIDQ3OTAsIAotICAgIDQ3OTYsIDQ4MDAsIDQ4MDYsIDQ4MTAsIDQ4MTQsIDQ4MTgsIDQ4MjMsIDQ4MjgsIDQ4MzUsIDQ4NDEsIDQ4NDgsIDQ4NTQsIAotICAgIDQ4NjAsIDQ4NjYsIDQ4NjksIDQ4NzMsIDQ4NzcsIDQ4ODEsIDQ4ODUsIDQ4OTAsIDQ4OTUsIDQ4OTksIDQ5MDMsIDQ5MDksIAotICAgIDQ5MTMsIDQ5MTcsIDQ5MjIsIDQ5MjgsIDQ5MzMsIDQ5MzksIDQ5NDMsIDQ5NTAsIDQ5NTUsIDQ5NjAsIDQ5NjUsIDQ5NzAsIAotICAgIDQ5NzYsIDQ5NzksIDQ5ODMsIDQ5ODgsIDQ5OTMsIDUwMDIsIDUwMDgsIDUwMTMsIDUwMTcsIDUwMjIsIDUwMjYsIDUwMzEsIAotICAgIDUwMzUsIDUwMzksIDUwNDQsIDUwNDgsIDUwNTQsIDUwNTksIDUwNjQsIDUwNjksIDUwNzQsIDUwNzksIDUwODQsIDUwOTAsIAotICAgIDUwOTYsIDUxMDIsIDUxMDcsIDUxMTIsIDUxMTgsIDUxMjQsIDUxMzAsIDUxMzUsIDUxNDAsIDUxNDcsIDUxNTQsIDUxNTgsIAotICAgIDUxNjQsIDUxNzEsIDAsIDAsIDUxNzgsIDUxODEsIDUxOTAsIDUxOTksIDUyMTAsIDAsIDAsIDAsIDAsIDAsIDUyMTQsIAotICAgIDUyMTcsIDUyMjIsIDUyMzAsIDUyMzUsIDUyNDMsIDUyNTEsIDAsIDUyNTksIDAsIDUyNjcsIDUyNzUsIDUyODMsIDUyOTQsIAotICAgIDUyOTksIDUzMDQsIDUzMDksIDUzMTQsIDUzMTksIDUzMjQsIDUzMjksIDUzMzQsIDUzMzksIDUzNDQsIDUzNDksIDUzNTQsIAotICAgIDUzNTksIDUzNjQsIDUzNjksIDUzNzQsIDAsIDUzNzksIDUzODQsIDUzODksIDUzOTQsIDUzOTksIDU0MDQsIDU0MDksIAotICAgIDU0MTQsIDU0MjIsIDU0MzAsIDU0MzgsIDU0NDYsIDU0NTQsIDU0NjIsIDU0NzMsIDU0NzgsIDU0ODMsIDU0ODgsIDU0OTMsIAotICAgIDU0OTgsIDU1MDMsIDU1MDgsIDU1MTMsIDU1MTgsIDU1MjMsIDU1MjgsIDU1MzMsIDU1MzgsIDU1NDMsIDU1NDgsIDU1NTMsIAotICAgIDU1NTgsIDU1NjQsIDU1NjksIDU1NzQsIDU1NzksIDU1ODQsIDU1ODksIDU1OTQsIDU1OTksIDU2MDcsIDU2MTUsIDU2MjMsIAotICAgIDU2MzEsIDU2MzksIDU2NDQsIDU2NDgsIDU2NTIsIDU2NTksIDU2NjksIDU2NzksIDU2ODMsIDU2ODcsIDU2OTEsIDU2OTcsIAotICAgIDU3MDQsIDU3MDgsIDU3MTMsIDU3MTcsIDU3MjIsIDU3MjYsIDU3MzEsIDU3MzUsIDU3NDAsIDU3NDUsIDU3NTAsIDU3NTUsIAotICAgIDU3NjAsIDU3NjUsIDU3NzAsIDU3NzUsIDU3ODAsIDU3ODUsIDU3OTAsIDU3OTUsIDU4MDAsIDU4MDUsIDU4MTAsIDU4MTQsIAotICAgIDU4MTgsIDU4MjQsIDU4MjgsIDU4MzMsIDU4MzksIDU4NDcsIDU4NTIsIDU4NTcsIDU4NjQsIDU4NjksIDU4NzQsIDU4ODEsIAotICAgIDU4OTAsIDU4OTksIDU5MTAsIDU5MTgsIDU5MjMsIDU5MjgsIDU5MzMsIDU5NDAsIDU5NDUsIDU5NTEsIDU5NTYsIDU5NjEsIAotICAgIDU5NjYsIDU5NzEsIDU5NzYsIDU5ODEsIDU5ODksIDU5OTUsIDYwMDAsIDYwMDQsIDYwMDksIDYwMTQsIDYwMTksIDYwMjQsIAotICAgIDYwMjksIDYwMzQsIDYwMzksIDYwNDMsIDYwNDksIDYwNTMsIDYwNTgsIDYwNjMsIDYwNjgsIDYwNzIsIDYwNzcsIDYwODIsIAotICAgIDYwODcsIDYwOTIsIDYwOTYsIDYxMDEsIDYxMDUsIDYxMTAsIDYxMTUsIDYxMjAsIDYxMjUsIDYxMzEsIDYxMzYsIDYxNDIsIAotICAgIDYxNDYsIDYxNTEsIDYxNTUsIDYxNTksIDYxNjQsIDYxNjksIDYxNzQsIDYxNzksIDYxODQsIDYxODksIDYxOTQsIDYxOTgsIAotICAgIDYyMDQsIDYyMDgsIDYyMTMsIDYyMTgsIDYyMjMsIDYyMjcsIDYyMzIsIDYyMzcsIDYyNDIsIDYyNDcsIDYyNTEsIDYyNTYsIAotICAgIDYyNjAsIDYyNjUsIDYyNzAsIDYyNzUsIDYyODAsIDYyODYsIDYyOTEsIDYyOTcsIDYzMDEsIDYzMDYsIDYzMTAsIDYzMTgsIAotICAgIDYzMjMsIDYzMjgsIDYzMzMsIDYzNDAsIDYzNDUsIDYzNTEsIDYzNTYsIDYzNjEsIDYzNjYsIDYzNzEsIDYzNzYsIDYzODEsIAotICAgIDYzODksIDYzOTUsIDY0MDAsIDY0MDUsIDY0MTAsIDY0MTUsIDY0MjAsIDY0MjYsIDY0MzIsIDY0MzksIDY0NDYsIDY0NTUsIAotICAgIDY0NjQsIDY0NzEsIDY0NzgsIDY0ODcsIDY0OTYsIDY1MDEsIDY1MDYsIDY1MTEsIDY1MTYsIDY1MjEsIDY1MjYsIDY1MzEsIAotICAgIDY1MzYsIDY1NDcsIDY1NTgsIDY1NjMsIDY1NjgsIDY1NzUsIDY1ODIsIDY1OTAsIDY1OTgsIDY2MDMsIDY2MDgsIDY2MTMsIAotICAgIDY2MTgsIDY2MjIsIDY2MjYsIDY2MzAsIDY2MzUsIDY2NDEsIDY2NDUsIDY2NTIsIDY2NTcsIDY2NjcsIDY2NzcsIDY2ODMsIAotICAgIDY2ODksIDY2OTcsIDY3MDUsIDY3MTMsIDY3MjEsIDY3MjgsIDY3MzUsIDY3NDQsIDY3NTMsIDY3NjEsIDY3NjksIDY3NzcsIAotICAgIDY3ODUsIDY3OTMsIDY4MDEsIDY4MDksIDY4MTcsIDY4MjQsIDY4MzEsIDY4MzcsIDY4NDMsIDY4NTEsIDY4NTksIDY4NjYsIAotICAgIDY4NzMsIDY4ODIsIDY4OTEsIDY4OTcsIDY5MDMsIDY5MTEsIDY5MTksIDY5MjcsIDY5MzUsIDY5NDEsIDY5NDcsIDY5NTUsIAotICAgIDY5NjMsIDY5NzEsIDY5NzksIDY5ODYsIDY5OTMsIDcwMDEsIDcwMDksIDcwMTcsIDcwMjUsIDcwMzAsIDcwMzUsIDcwNDIsIAotICAgIDcwNDksIDcwNTksIDcwNjksIDcwNzMsIDcwODEsIDcwODksIDcwOTYsIDcxMDMsIDcxMTEsIDcxMTksIDcxMjYsIDcxMzMsIAotICAgIDcxNDEsIDcxNDksIDcxNTYsIDcxNjMsIDcxNzEsIDcxNzksIDcxODQsIDcxOTEsIDcxOTgsIDcyMDUsIDcyMTIsIDcyMTgsIAotICAgIDcyMjQsIDcyMzIsIDcyNDAsIDcyNDUsIDcyNTAsIDcyNTgsIDcyNjYsIDcyNzQsIDcyODIsIDcyOTAsIDcyOTgsIDczMDUsIAotICAgIDczMTIsIDczMjAsIDczMjgsIDczMzYsIDczNDQsIDczNTEsIDczNTgsIDczNjQsIDczNzAsIDczNzksIDczODgsIDczOTUsIAotICAgIDc0MDIsIDc0MDksIDc0MTYsIDc0MjMsIDc0MzAsIDc0MzcsIDc0NDQsIDc0NTIsIDc0NjAsIDc0NjgsIDc0NzYsIDc0ODQsIAotICAgIDc0OTIsIDc1MDIsIDc1MTIsIDc1MTksIDc1MjYsIDc1MzMsIDc1NDAsIDc1NDcsIDc1NTQsIDc1NjEsIDc1NjgsIDc1NzUsIAotICAgIDc1ODIsIDc1ODksIDc1OTYsIDc2MDMsIDc2MTAsIDc2MTcsIDc2MjQsIDc2MzEsIDc2MzgsIDc2NDUsIDc2NTIsIDc2NTksIAotICAgIDc2NjYsIDc2NzMsIDc2ODAsIDc2ODUsIDc2OTAsIDc2OTUsIDc3MDAsIDc3MDUsIDc3MTAsIDc3MTUsIDc3MjAsIDc3MjUsIAotICAgIDc3MzAsIDc3MzYsIDc3NDIsIDc3NTEsIDc3NjAsIDc3NjksIDc3NzgsIDc3ODYsIDc3OTQsIDc4MDIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc4MTAsIDc4MTUsIDc4MjAsIDc4MjUsIDc4MzAsIDc4MzUsIDc4NDAsIDc4NDUsIDc4NTAsIAotICAgIDc4NTQsIDc4NTksIDc4NjQsIDc4NjksIDc4NzQsIDc4NzksIDc4ODQsIDc4ODksIDc4OTQsIDc4OTksIDc5MDQsIDc5MDksIAotICAgIDc5MTQsIDc5MTksIDc5MjQsIDc5MjksIDc5MzQsIDc5MzksIDc5NDQsIDc5NDgsIDc5NTMsIDc5NTgsIDc5NjMsIDc5NjgsIAotICAgIDc5NzMsIDc5NzgsIDc5ODMsIDc5ODgsIDc5OTMsIDAsIDAsIDc5OTgsIDgwMDUsIDgwMDgsIDgwMTIsIDgwMTYsIDgwMTksIAotICAgIDgwMjMsIDAsIDgwMjcsIDgwMzIsIDgwMzcsIDgwNDIsIDgwNDcsIDgwNTIsIDgwNTcsIDgwNjIsIDgwNjcsIDgwNzEsIAotICAgIDgwNzYsIDgwODEsIDgwODYsIDgwOTEsIDgwOTYsIDgxMDEsIDgxMDYsIDgxMTEsIDgxMTYsIDgxMjEsIDgxMjYsIDgxMzEsIAotICAgIDgxMzYsIDgxNDEsIDgxNDYsIDgxNTEsIDgxNTYsIDgxNjEsIDgxNjUsIDgxNzAsIDgxNzUsIDgxODAsIDgxODUsIDgxOTAsIAotICAgIDgxOTUsIDgyMDAsIDgyMDUsIDgyMTAsIDgyMTUsIDAsIDgyMjIsIDgyMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDgyMzAsIAotICAgIDgyMzUsIDgyNDAsIDgyNDUsIDgyNTIsIDgyNTksIDgyNjQsIDgyNjksIDgyNzQsIDgyNzksIDgyODQsIDgyODksIDgyOTQsIAotICAgIDgzMDEsIDgzMDYsIDgzMTMsIDgzMjAsIDgzMjUsIDgzMzIsIDgzMzcsIDgzNDIsIDgzNDcsIDgzNTQsIDgzNTksIDgzNjQsIAotICAgIDgzNzEsIDgzODAsIDgzODUsIDgzOTAsIDgzOTUsIDg0MDAsIDg0MDYsIDg0MTEsIDg0MTgsIDg0MjUsIDg0MzIsIDg0MzcsIAotICAgIDg0NDIsIDg0NDcsIDg0NTIsIDg0NTcsIDg0NjIsIDg0NzIsIDg0NzcsIDg0ODUsIDg0OTAsIDg0OTUsIDg1MDAsIDg1MDUsIAotICAgIDg1MTIsIDg1MTksIDg1MjYsIDg1MzIsIDg1MzgsIDg1NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1NTIsIDg1NTYsIAotICAgIDg1NjAsIDg1NjQsIDg1NjgsIDg1NzIsIDg1NzYsIDg1ODAsIDg1ODQsIDg1ODgsIDg1OTIsIDg1OTcsIDg2MDEsIDg2MDUsIAotICAgIDg2MTAsIDg2MTQsIDg2MTksIDg2MjMsIDg2MjcsIDg2MzEsIDg2MzYsIDg2NDAsIDg2NDUsIDg2NDksIDg2NTMsIDg2NTcsIAotICAgIDg2NjEsIDAsIDAsIDAsIDAsIDAsIDg2NjUsIDg2NzIsIDg2ODAsIDg2ODcsIDg2OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg2OTcsIDg3MDAsIDg3MDQsIDg3MDksIDAsIDAsIDg3MTMsIDg3MTksIDg3MjUsIDg3MjgsIDg3MzUsIAotICAgIDg3NDQsIDg3NDcsIDg3NTAsIDg3NTUsIDg3NjEsIDg3NjUsIDg3NzMsIDg3NzksIDg3ODUsIDg3OTMsIDg3OTcsIDg4MDIsIAotICAgIDg4MTMsIDg4MTgsIDg4MjIsIDg4MjYsIDg4MzAsIDAsIDAsIDg4MzMsIDg4NDAsIDg4NDQsIDg4NTAsIDg4NTQsIDg4NjEsIAotICAgIDg4NjcsIDg4NzQsIDg4ODAsIDg4ODYsIDg4OTAsIDg4OTQsIDg5MDAsIDg5MDQsIDg5MDgsIDg5MTIsIDg5MTYsIDg5MjAsIAotICAgIDg5MjQsIDg5MjgsIDg5MzIsIDg5MzYsIDg5NDAsIDg5NDQsIDg5NDgsIDg5NTIsIDg5NTYsIDg5NjAsIDg5NjQsIDg5NjgsIAotICAgIDg5NzYsIDg5ODQsIDg5OTQsIDkwMDMsIDkwMTIsIDkwMTUsIDkwMTksIDkwMjMsIDkwMjcsIDkwMzEsIDkwMzUsIDkwMzksIAotICAgIDkwNDMsIDkwNDcsIDkwNTIsIDkwNTYsIDkwNTksIDkwNjIsIDkwNjUsIDkwNjgsIDkwNzEsIDkwNzQsIDkwNzcsIDkwODAsIAotICAgIDkwODQsIDkwODcsIDkwOTAsIDkwOTUsIDkxMDAsIDkxMDYsIDkxMDksIDkxMTYsIDkxMjUsIDkxMzAsIDkxMzUsIDkxNDIsIAotICAgIDkxNDcsIDkxNTIsIDkxNTYsIDkxNjAsIDkxNjQsIDkxNjgsIDkxNzIsIDkxNzYsIDkxODAsIDkxODQsIDkxODgsIDkxOTIsIAotICAgIDkxOTcsIDkyMDIsIDkyMDksIDkyMTUsIDkyMjEsIDkyMjcsIDkyMzIsIDkyNDAsIDkyNDgsIDkyNTMsIDkyNTksIDkyNjUsIAotICAgIDkyNzEsIDkyNzcsIDkyODEsIDkyODUsIDkyODksIDkyOTYsIDkzMDYsIDkzMTAsIDkzMTQsIDkzMTgsIDkzMjQsIDkzMzIsIAotICAgIDkzMzYsIDkzNDAsIDkzNDcsIDkzNTEsIDkzNTUsIDkzNTksIDkzNjYsIDkzNzMsIDkzODUsIDkzODksIDkzOTMsIDkzOTcsIAotICAgIDk0MDcsIDk0MTYsIDk0MjAsIDk0MjgsIDk0MzUsIDk0NDIsIDk0NTEsIDk0NjIsIDk0NzAsIDk0NzQsIDk0ODMsIDk0OTQsIAotICAgIDk1MDIsIDk1MTUsIDk1MjMsIDk1MzEsIDk1MzksIDk1NDcsIDk1NTMsIDk1NjIsIDk1NjksIDk1NzMsIDk1ODEsIDk1ODUsIAotICAgIDk1OTIsIDk2MDAsIDk2MDQsIDk2MTAsIDk2MTcsIDk2MjQsIDk2MjgsIDk2MzYsIDk2NDAsIDk2NDcsIDk2NTEsIDk2NTksIAotICAgIDk2NjMsIDk2NzEsIDk2NzksIDk2ODYsIDk2OTQsIDk3MDIsIDk3MDksIDk3MTUsIDk3MTksIDk3MjYsIDk3MzQsIDk3NDAsIAotICAgIDk3NDcsIDk3NTQsIDk3NjAsIDk3NjksIDk3NzcsIDk3ODQsIDk3OTAsIDk3OTQsIDk3OTcsIDk4MDEsIDk4MDcsIDk4MTUsIAotICAgIDk4MTksIDk4MjUsIDk4MzEsIDk4MzgsIDk4NDUsIDk4NDgsIDk4NTUsIDk4NjAsIDk4NjgsIDk4NzMsIDk4NzcsIDk4OTAsIAotICAgIDk5MDMsIDk5MDksIDk5MTYsIDk5MjEsIDk5MjcsIDk5MzIsIDk5MzgsIDk5NDgsIDk5NTUsIDk5NjQsIDk5NzQsIDk5ODAsIAotICAgIDk5ODUsIDk5OTAsIDk5OTQsIDk5OTgsIDEwMDAzLCAxMDAwOCwgMTAwMTQsIDEwMDIyLCAxMDAzMCwgMTAwNDEsIDEwMDQ2LCAKLSAgICAxMDA1NSwgMTAwNjQsIDEwMDcxLCAxMDA3NywgMTAwODMsIDEwMDg5LCAxMDA5NSwgMTAxMDEsIDEwMTA3LCAxMDExMywgCi0gICAgMTAxMTksIDEwMTI1LCAxMDEzMiwgMTAxMzksIDEwMTQ2LCAxMDE1MiwgMTAxNjAsIDEwMTY5LCAxMDE3NSwgMTAxODIsIAotICAgIDEwMTg5LCAxMDE5NCwgMTAxOTksIDEwMjAzLCAxMDIxMCwgMTAyMTcsIDEwMjI2LCAxMDIzNSwgMTAyMzgsIDEwMjQzLCAKLSAgICAxMDI0OCwgMCwgMTAyNTMsIDEwMjU3LCAxMDI2MSwgMTAyNjcsIDEwMjcxLCAxMDI3NSwgMTAyODEsIDEwMjg1LCAxMDI5MywgCi0gICAgMTAyOTcsIDEwMzAxLCAxMDMwNSwgMTAzMDksIDEwMzEzLCAxMDMxOSwgMTAzMjMsIDEwMzI5LCAxMDMzMywgMTAzMzcsIAotICAgIDEwMzQxLCAxMDM0NSwgMTAzNDksIDEwMzU0LCAxMDM1NywgMTAzNjEsIDEwMzY3LCAxMDM3MSwgMTAzNzUsIDEwMzc5LCAKLSAgICAxMDM4MywgMTAzODcsIDEwMzkzLCAxMDM5OSwgMTA0MDUsIDEwNDA5LCAxMDQxMywgMTA0MTgsIDEwNDIyLCAxMDQyNiwgCi0gICAgMTA0MzEsIDEwNDM1LCAxMDQzOSwgMTA0NDYsIDEwNDUzLCAxMDQ1NywgMTA0NjEsIDEwNDY2LCAxMDQ3MCwgMTA0NzQsIAotICAgIDEwNDc3LCAxMDQ4MiwgMTA0ODUsIDEwNDg4LCAxMDQ5MywgMTA0OTgsIDEwNTAyLCAxMDUwNiwgMTA1MTIsIDEwNTE4LCAKLSAgICAxMDUyMSwgMCwgMCwgMTA1MjQsIDEwNTMwLCAxMDUzNiwgMTA1NDIsIDEwNTUyLCAxMDU2NCwgMTA1NzYsIDEwNTkzLCAKLSAgICAxMDYwNSwgMTA2MTYsIDEwNjI0LCAxMDYzMSwgMTA2NDIsIDEwNjU3LCAxMDY2OCwgMTA2NzQsIDEwNjgzLCAxMDY5MSwgCi0gICAgMTA3MDMsIDEwNzEzLCAxMDcyMSwgMTA3MzMsIDEwNzQwLCAxMDc0OCwgMTA3NjAsIDEwNzY2LCAxMDc3MiwgMTA3ODAsIAotICAgIDEwNzg4LCAxMDc5NiwgMTA4MDIsIDEwODEyLCAxMDgxOSwgMTA4MjksIDEwODM5LCAxMDg1MiwgMTA4NjYsIDEwODgwLCAKLSAgICAxMDg5MCwgMTA5MDEsIDEwOTEyLCAxMDkyNSwgMTA5MzgsIDEwOTUyLCAxMDk2NCwgMTA5NzYsIDEwOTg5LCAxMTAwMiwgCi0gICAgMTEwMTQsIDExMDI3LCAxMTAzNiwgMTEwNDQsIDExMDQ5LCAxMTA1NCwgMTEwNTksIDExMDY0LCAxMTA2OSwgMTEwNzQsIAotICAgIDExMDc5LCAxMTA4NCwgMTEwODksIDExMDk0LCAxMTA5OSwgMTExMDQsIDExMTA5LCAxMTExNCwgMTExMTksIDExMTI0LCAKLSAgICAxMTEyOSwgMTExMzQsIDExMTM5LCAxMTE0NCwgMTExNDksIDExMTU0LCAxMTE1OSwgMTExNjQsIDExMTY5LCAxMTE3NCwgCi0gICAgMTExNzksIDExMTg0LCAxMTE4OSwgMTExOTQsIDExMTk5LCAxMTIwNCwgMTEyMDgsIDExMjEzLCAxMTIxOCwgMTEyMjMsIAotICAgIDExMjI4LCAxMTIzMywgMTEyMzcsIDExMjQxLCAxMTI0NSwgMTEyNDksIDExMjUzLCAxMTI1NywgMTEyNjEsIDExMjY1LCAKLSAgICAxMTI2OSwgMTEyNzMsIDExMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTI4MiwgCi0gICAgMTEyODcsIDExMjkxLCAxMTI5NSwgMTEyOTksIDExMzAzLCAxMTMwNywgMTEzMTEsIDExMzE1LCAxMTMxOSwgMTEzMjMsIAotICAgIDExMzI3LCAxMTMzMiwgMTEzMzYsIDExMzQwLCAxMTM0NCwgMTEzNDksIDExMzUzLCAxMTM1OCwgMTEzNjIsIDExMzY3LCAKLSAgICAxMTM3MSwgMTEzNzYsIDExMzgxLCAxMTM4NiwgMTEzOTEsIDExMzk1LCAxMTQwMCwgMTE0MDUsIDExNDEwLCAxMTQxNSwgCi0gICAgMTE0MTksIDExNDI0LCAxMTQzMSwgMTE0MzUsIDExNDQwLCAxMTQ0NCwgMTE0NDgsIDExNDUzLCAxMTQ1NywgMTE0NjQsIAotICAgIDExNDcxLCAxMTQ3OCwgMTE0ODQsIDExNDkyLCAxMTUwMCwgMTE1MDksIDExNTE3LCAxMTUyNCwgMTE1MzEsIDExNTM5LCAKLSAgICAxMTU0NSwgMTE1NTEsIDExNTU3LCAxMTU2MywgMTE1NzAsIDExNTc1LCAxMTU3OSwgMTE1ODQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExNTg4LCAxMTU5MywgMTE1OTgsIDExNjAzLCAxMTYwOCwgMTE2MTMsIDExNjE4LCAxMTYyMywgMTE2MjgsIDExNjMzLCAKLSAgICAxMTYzOCwgMTE2NDMsIDExNjQ4LCAxMTY1MywgMTE2NTgsIDExNjYzLCAxMTY2OCwgMTE2NzMsIDExNjc4LCAxMTY4MywgCi0gICAgMTE2ODgsIDExNjkzLCAxMTY5OCwgMTE3MDMsIDExNzA4LCAxMTcxMywgMTE3MTgsIDExNzI2LCAxMTczMywgMTE3MzksIAotICAgIDExNzQ0LCAxMTc1MiwgMTE3NTksIDExNzY1LCAxMTc3MiwgMTE3NzgsIDExNzgzLCAxMTc5MCwgMTE3OTcsIDExODAzLCAKLSAgICAxMTgwOCwgMTE4MTMsIDExODE5LCAxMTgyNCwgMTE4MjksIDExODM1LCAwLCAwLCAxMTg0MCwgMTE4NDYsIDExODUyLCAKLSAgICAxMTg1OCwgMTE4NjQsIDExODcwLCAxMTg3NiwgMTE4ODEsIDExODg5LCAxMTg5NSwgMTE5MDEsIDExOTA3LCAxMTkxMywgCi0gICAgMTE5MTksIDExOTI3LCAwLCAxMTkzMywgMTE5MzgsIDExOTQzLCAxMTk0OCwgMTE5NTMsIDExOTU4LCAxMTk2MywgMTE5NjgsIAotICAgIDExOTczLCAxMTk3OCwgMTE5ODMsIDExOTg4LCAxMTk5MywgMTE5OTgsIDEyMDAzLCAxMjAwOCwgMTIwMTMsIDEyMDE4LCAKLSAgICAxMjAyMywgMTIwMjgsIDEyMDMzLCAxMjAzOCwgMTIwNDMsIDEyMDQ4LCAxMjA1MywgMTIwNTgsIDEyMDYzLCAxMjA2OCwgMCwgCi0gICAgMCwgMTIwNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDc3LCAxMjA4MywgCi0gICAgMTIwODcsIDEyMDkxLCAxMjA5NSwgMTIxMDAsIDEyMTAzLCAxMjEwNywgMTIxMTAsIDEyMTE0LCAxMjExNywgMTIxMjEsIAotICAgIDEyMTI1LCAxMjEyOSwgMTIxMzQsIDEyMTM5LCAxMjE0MiwgMTIxNDYsIDEyMTUxLCAxMjE1NiwgMTIxNTksIDEyMTYzLCAKLSAgICAxMjE2NiwgMTIxNzAsIDEyMTc0LCAxMjE3OCwgMTIxODIsIDEyMTg2LCAxMjE5MCwgMTIxOTQsIDEyMTk4LCAxMjIwMiwgCi0gICAgMTIyMDYsIDEyMjEwLCAxMjIxNCwgMTIyMTgsIDEyMjIyLCAxMjIyNiwgMTIyMzAsIDEyMjM0LCAxMjIzOCwgMTIyNDEsIAotICAgIDEyMjQ1LCAxMjI0OCwgMTIyNTIsIDEyMjU2LCAxMjI2MCwgMTIyNjMsIDEyMjY2LCAxMjI2OSwgMTIyNzMsIDEyMjc3LCAKLSAgICAxMjI4MSwgMTIyODUsIDEyMjg5LCAxMjI5MywgMTIyOTcsIDEyMzAxLCAxMjMwNCwgMTIzMDksIDEyMzE0LCAxMjMxOCwgCi0gICAgMTIzMjIsIDEyMzI3LCAxMjMzMSwgMTIzMzYsIDEyMzQwLCAxMjM0NSwgMTIzNTAsIDEyMzU2LCAxMjM2MiwgMTIzNjgsIAotICAgIDEyMzcyLCAxMjM3NywgMTIzODMsIDEyMzg5LCAxMjM5MywgMTIzOTgsIDEyNDAyLCAxMjQwOCwgMTI0MTMsIDEyNDE2LCAKLSAgICAxMjQyMiwgMTI0MjgsIDEyNDMzLCAxMjQzOCwgMTI0NDUsIDEyNDUwLCAxMjQ1NSwgMTI0NTksIDEyNDYzLCAxMjQ2NywgCi0gICAgMTI0NzEsIDEyNDc1LCAxMjQ3OSwgMTI0ODMsIDEyNDg3LCAxMjQ5MiwgMTI0OTcsIDEyNTAyLCAxMjUwOCwgMTI1MTEsIAotICAgIDEyNTE1LCAxMjUxOSwgMTI1MjIsIDEyNTI1LCAxMjUyOCwgMTI1MzEsIDEyNTM0LCAxMjUzNywgMTI1NDAsIDEyNTQzLCAKLSAgICAxMjU0NiwgMTI1NTAsIDEyNTU3LCAxMjU2MiwgMTI1NjYsIDEyNTcwLCAxMjU3NCwgMTI1NzgsIDAsIDEyNTgyLCAxMjU4NiwgCi0gICAgMTI1OTAsIDEyNTk0LCAxMjU5OCwgMTI2MDQsIDEyNjA4LCAwLCAxMjYxMiwgMTI2MTYsIDEyNjIwLCAwLCAxMjYyNCwgCi0gICAgMTI2MjcsIDEyNjMxLCAxMjYzNCwgMTI2MzgsIDEyNjQxLCAxMjY0NSwgMTI2NDksIDAsIDAsIDEyNjUzLCAxMjY1NiwgMCwgCi0gICAgMCwgMTI2NjAsIDEyNjYzLCAxMjY2NywgMTI2NzAsIDEyNjc0LCAxMjY3OCwgMTI2ODIsIDEyNjg2LCAxMjY5MCwgMTI2OTQsIAotICAgIDEyNjk4LCAxMjcwMiwgMTI3MDYsIDEyNzEwLCAxMjcxNCwgMTI3MTgsIDEyNzIyLCAxMjcyNiwgMTI3MzAsIDEyNzM0LCAKLSAgICAxMjczOCwgMTI3NDIsIDAsIDEyNzQ1LCAxMjc0OCwgMTI3NTIsIDEyNzU2LCAxMjc2MCwgMTI3NjMsIDEyNzY2LCAwLCAKLSAgICAxMjc2OSwgMCwgMCwgMCwgMTI3NzMsIDEyNzc3LCAxMjc4MSwgMTI3ODUsIDAsIDAsIDEyNzg4LCAxMjc5MiwgMTI3OTYsIAotICAgIDEyODAxLCAxMjgwNSwgMTI4MTAsIDEyODE0LCAxMjgxOSwgMTI4MjQsIDAsIDAsIDEyODMwLCAxMjgzNCwgMCwgMCwgCi0gICAgMTI4MzksIDEyODQzLCAxMjg0OCwgMTI4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODU4LCAwLCAwLCAwLCAwLCAKLSAgICAxMjg2NCwgMTI4NjgsIDAsIDEyODcyLCAxMjg3NiwgMTI4ODEsIDEyODg2LCAxMjg5MSwgMCwgMCwgMTI4OTcsIDEyOTAxLCAKLSAgICAxMjkwNCwgMTI5MDcsIDEyOTEwLCAxMjkxMywgMTI5MTYsIDEyOTE5LCAxMjkyMiwgMTI5MjUsIDEyOTI4LCAxMjkzNywgCi0gICAgMTI5NDYsIDEyOTUwLCAxMjk1NCwgMTI5NjAsIDEyOTY2LCAxMjk3MiwgMTI5NzgsIDEyOTkyLCAxMjk5OSwgMTMwMDIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzMDA2LCAxMzAxMiwgMTMwMTYsIDAsIDEzMDIwLCAxMzAyMywgMTMwMjcsIDEzMDMwLCAxMzAzNCwgCi0gICAgMTMwMzcsIDAsIDAsIDAsIDAsIDEzMDQxLCAxMzA0NSwgMCwgMCwgMTMwNDksIDEzMDUzLCAxMzA1NywgMTMwNjAsIDEzMDY0LCAKLSAgICAxMzA2OCwgMTMwNzIsIDEzMDc2LCAxMzA4MCwgMTMwODQsIDEzMDg4LCAxMzA5MiwgMTMwOTYsIDEzMTAwLCAxMzEwNCwgCi0gICAgMTMxMDgsIDEzMTEyLCAxMzExNiwgMTMxMjAsIDEzMTI0LCAxMzEyOCwgMTMxMzIsIDAsIDEzMTM1LCAxMzEzOCwgMTMxNDIsIAotICAgIDEzMTQ2LCAxMzE1MCwgMTMxNTMsIDEzMTU2LCAwLCAxMzE1OSwgMTMxNjMsIDAsIDEzMTY3LCAxMzE3MSwgMCwgMTMxNzUsIAotICAgIDEzMTc5LCAwLCAwLCAxMzE4MiwgMCwgMTMxODYsIDEzMTkxLCAxMzE5NSwgMTMyMDAsIDEzMjA0LCAwLCAwLCAwLCAwLCAKLSAgICAxMzIwOSwgMTMyMTQsIDAsIDAsIDEzMjE5LCAxMzIyNCwgMTMyMjksIDAsIDAsIDAsIDEzMjMzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzIzNywgMTMyNDEsIDEzMjQ1LCAxMzI0OSwgMCwgMTMyNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjU3LCAKLSAgICAxMzI2MSwgMTMyNjQsIDEzMjY3LCAxMzI3MCwgMTMyNzMsIDEzMjc2LCAxMzI3OSwgMTMyODIsIDEzMjg1LCAxMzI4OCwgCi0gICAgMTMyOTEsIDEzMjk0LCAxMzI5NywgMTMzMDAsIDEzMzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzMwOSwgMTMzMTMsIDEzMzE3LCAwLCAxMzMyMSwgMTMzMjQsIDEzMzI4LCAxMzMzMSwgMTMzMzUsIDEzMzM4LCAxMzM0MiwgCi0gICAgMTMzNDYsIDEzMzUwLCAwLCAxMzM1NSwgMTMzNTgsIDEzMzYyLCAwLCAxMzM2NywgMTMzNzAsIDEzMzc0LCAxMzM3NywgCi0gICAgMTMzODEsIDEzMzg1LCAxMzM4OSwgMTMzOTMsIDEzMzk3LCAxMzQwMSwgMTM0MDUsIDEzNDA5LCAxMzQxMywgMTM0MTcsIAotICAgIDEzNDIxLCAxMzQyNSwgMTM0MjksIDEzNDMzLCAxMzQzNywgMTM0NDEsIDEzNDQ1LCAxMzQ0OSwgMCwgMTM0NTIsIDEzNDU1LCAKLSAgICAxMzQ1OSwgMTM0NjMsIDEzNDY3LCAxMzQ3MCwgMTM0NzMsIDAsIDEzNDc2LCAxMzQ4MCwgMCwgMTM0ODQsIDEzNDg4LCAKLSAgICAxMzQ5MiwgMTM0OTYsIDEzNTAwLCAwLCAwLCAxMzUwMywgMTM1MDcsIDEzNTExLCAxMzUxNiwgMTM1MjAsIDEzNTI1LCAKLSAgICAxMzUyOSwgMTM1MzQsIDEzNTM5LCAxMzU0NSwgMCwgMTM1NTEsIDEzNTU1LCAxMzU2MCwgMCwgMTM1NjYsIDEzNTcwLCAKLSAgICAxMzU3NSwgMCwgMCwgMTM1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTgyLCAKLSAgICAxMzU4NywgMTM1OTIsIDEzNTk3LCAwLCAwLCAxMzYwMywgMTM2MDcsIDEzNjEwLCAxMzYxMywgMTM2MTYsIDEzNjE5LCAKLSAgICAxMzYyMiwgMTM2MjUsIDEzNjI4LCAxMzYzMSwgMCwgMTM2MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzNjM4LCAxMzY0MiwgMTM2NDYsIDAsIDEzNjUwLCAxMzY1MywgMTM2NTcsIDEzNjYwLCAxMzY2NCwgCi0gICAgMTM2NjcsIDEzNjcxLCAxMzY3NSwgMCwgMCwgMTM2NzksIDEzNjgyLCAwLCAwLCAxMzY4NiwgMTM2ODksIDEzNjkzLCAKLSAgICAxMzY5NiwgMTM3MDAsIDEzNzA0LCAxMzcwOCwgMTM3MTIsIDEzNzE2LCAxMzcyMCwgMTM3MjQsIDEzNzI4LCAxMzczMiwgCi0gICAgMTM3MzYsIDEzNzQwLCAxMzc0NCwgMTM3NDgsIDEzNzUyLCAxMzc1NiwgMTM3NjAsIDEzNzY0LCAxMzc2OCwgMCwgMTM3NzEsIAotICAgIDEzNzc0LCAxMzc3OCwgMTM3ODIsIDEzNzg2LCAxMzc4OSwgMTM3OTIsIDAsIDEzNzk1LCAxMzc5OSwgMCwgMTM4MDMsIAotICAgIDEzODA3LCAxMzgxMSwgMTM4MTUsIDEzODE5LCAwLCAwLCAxMzgyMiwgMTM4MjYsIDEzODMwLCAxMzgzNSwgMTM4MzksIAotICAgIDEzODQ0LCAxMzg0OCwgMTM4NTMsIDEzODU4LCAwLCAwLCAxMzg2NCwgMTM4NjgsIDAsIDAsIDEzODczLCAxMzg3NywgCi0gICAgMTM4ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODg2LCAxMzg5MiwgMCwgMCwgMCwgMCwgMTM4OTgsIDEzOTAyLCAwLCAKLSAgICAxMzkwNiwgMTM5MTAsIDEzOTE1LCAxMzkyMCwgMTM5MjUsIDAsIDAsIDEzOTMxLCAxMzkzNSwgMTM5MzgsIDEzOTQxLCAKLSAgICAxMzk0NCwgMTM5NDcsIDEzOTUwLCAxMzk1MywgMTM5NTYsIDEzOTU5LCAxMzk2MiwgMTM5NjUsIDEzOTY5LCAxMzk3NSwgCi0gICAgMTM5ODEsIDEzOTg3LCAxMzk5MywgMTM5OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDA1LCAxNDAwOSwgCi0gICAgMCwgMTQwMTMsIDE0MDE2LCAxNDAyMCwgMTQwMjMsIDE0MDI3LCAxNDAzMCwgMCwgMCwgMCwgMTQwMzQsIDE0MDM3LCAKLSAgICAxNDA0MSwgMCwgMTQwNDUsIDE0MDQ4LCAxNDA1MiwgMTQwNTYsIDAsIDAsIDAsIDE0MDU5LCAxNDA2MywgMCwgMTQwNjcsIDAsIAotICAgIDE0MDcxLCAxNDA3NSwgMCwgMCwgMCwgMTQwNzksIDE0MDgzLCAwLCAwLCAwLCAxNDA4NywgMTQwOTAsIDE0MDk0LCAwLCAwLCAKLSAgICAwLCAxNDA5NywgMTQxMDAsIDE0MTAzLCAxNDEwNiwgMTQxMTAsIDE0MTE0LCAxNDExOCwgMTQxMjIsIDE0MTI2LCAxNDEzMCwgCi0gICAgMTQxMzQsIDE0MTM4LCAwLCAwLCAwLCAwLCAxNDE0MSwgMTQxNDYsIDE0MTUwLCAxNDE1NSwgMTQxNTksIDAsIDAsIDAsIAotICAgIDE0MTY0LCAxNDE2OCwgMTQxNzMsIDAsIDE0MTc4LCAxNDE4MiwgMTQxODcsIDE0MTkyLCAwLCAwLCAxNDE5NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MjA1LCAxNDIwOSwgCi0gICAgMTQyMTIsIDE0MjE1LCAxNDIxOCwgMTQyMjEsIDE0MjI0LCAxNDIyNywgMTQyMzAsIDE0MjMzLCAxNDIzNiwgMTQyNDAsIAotICAgIDE0MjQ1LCAxNDI1MCwgMTQyNTQsIDE0MjU4LCAxNDI2MiwgMTQyNjYsIDE0MjcwLCAxNDI3NSwgMTQyNzksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MjgyLCAxNDI4NiwgMTQyOTAsIDAsIDE0Mjk0LCAxNDI5NywgMTQzMDEsIDE0MzA0LCAxNDMwOCwgCi0gICAgMTQzMTEsIDE0MzE1LCAxNDMxOSwgMCwgMTQzMjMsIDE0MzI2LCAxNDMzMCwgMCwgMTQzMzQsIDE0MzM3LCAxNDM0MSwgCi0gICAgMTQzNDUsIDE0MzQ4LCAxNDM1MiwgMTQzNTYsIDE0MzYwLCAxNDM2NCwgMTQzNjgsIDE0MzcyLCAxNDM3NiwgMTQzODAsIAotICAgIDE0Mzg0LCAxNDM4OCwgMTQzOTIsIDE0Mzk2LCAxNDQwMCwgMTQ0MDQsIDE0NDA4LCAxNDQxMiwgMTQ0MTYsIDE0NDIwLCAwLCAKLSAgICAxNDQyMywgMTQ0MjYsIDE0NDMwLCAxNDQzNCwgMTQ0MzgsIDE0NDQxLCAxNDQ0NCwgMTQ0NDcsIDE0NDUxLCAxNDQ1NSwgMCwgCi0gICAgMTQ0NTksIDE0NDYzLCAxNDQ2NywgMTQ0NzEsIDE0NDc1LCAwLCAwLCAwLCAxNDQ3OCwgMTQ0ODIsIDE0NDg3LCAxNDQ5MSwgCi0gICAgMTQ0OTYsIDE0NTAwLCAxNDUwNSwgMTQ1MTAsIDAsIDE0NTE2LCAxNDUyMCwgMTQ1MjUsIDAsIDE0NTMwLCAxNDUzNCwgCi0gICAgMTQ1MzksIDE0NTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU0OCwgMTQ1NTIsIDAsIDE0NTU4LCAxNDU2MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQ1NjYsIDE0NTcxLCAxNDU3NiwgMTQ1ODEsIDAsIDAsIDE0NTg3LCAxNDU5MSwgMTQ1OTQsIDE0NTk3LCAKLSAgICAxNDYwMCwgMTQ2MDMsIDE0NjA2LCAxNDYwOSwgMTQ2MTIsIDE0NjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYxOCwgCi0gICAgMTQ2MzEsIDE0NjQzLCAxNDY1NSwgMTQ2NjcsIDE0Njc5LCAxNDY5MSwgMTQ3MDMsIDAsIDAsIDE0NzA3LCAxNDcxMSwgMCwgCi0gICAgMTQ3MTUsIDE0NzE4LCAxNDcyMiwgMTQ3MjUsIDE0NzI5LCAxNDczMiwgMTQ3MzYsIDE0NzQwLCAwLCAxNDc0NCwgMTQ3NDcsIAotICAgIDE0NzUxLCAwLCAxNDc1NSwgMTQ3NTgsIDE0NzYyLCAxNDc2NiwgMTQ3NjksIDE0NzczLCAxNDc3NywgMTQ3ODEsIDE0Nzg1LCAKLSAgICAxNDc4OSwgMTQ3OTMsIDE0Nzk3LCAxNDgwMSwgMTQ4MDUsIDE0ODA5LCAxNDgxMywgMTQ4MTcsIDE0ODIxLCAxNDgyNSwgCi0gICAgMTQ4MjksIDE0ODMzLCAxNDgzNywgMTQ4NDEsIDAsIDE0ODQ0LCAxNDg0NywgMTQ4NTEsIDE0ODU1LCAxNDg1OSwgMTQ4NjIsIAotICAgIDE0ODY1LCAxNDg2OCwgMTQ4NzIsIDE0ODc2LCAwLCAxNDg4MCwgMTQ4ODQsIDE0ODg4LCAxNDg5MiwgMTQ4OTYsIDAsIDAsIAotICAgIDE0ODk5LCAxNDkwMywgMTQ5MDcsIDE0OTEyLCAxNDkxNiwgMTQ5MjEsIDE0OTI1LCAxNDkzMCwgMTQ5MzUsIDAsIDE0OTQxLCAKLSAgICAxNDk0NSwgMTQ5NTAsIDAsIDE0OTU1LCAxNDk1OSwgMTQ5NjQsIDE0OTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDk3MywgCi0gICAgMTQ5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OTgzLCAwLCAxNDk4NywgMTQ5OTIsIDE0OTk3LCAxNTAwMiwgMCwgMCwgCi0gICAgMTUwMDgsIDE1MDEyLCAxNTAxNSwgMTUwMTgsIDE1MDIxLCAxNTAyNCwgMTUwMjcsIDE1MDMwLCAxNTAzMywgMTUwMzYsIDAsIAotICAgIDE1MDM5LCAxNTA0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNDcsIDE1MDUxLCAKLSAgICAwLCAxNTA1NSwgMTUwNTgsIDE1MDYyLCAxNTA2NSwgMTUwNjksIDE1MDcyLCAxNTA3NiwgMTUwODAsIDAsIDE1MDg0LCAKLSAgICAxNTA4NywgMTUwOTEsIDAsIDE1MDk1LCAxNTA5OCwgMTUxMDIsIDE1MTA2LCAxNTEwOSwgMTUxMTMsIDE1MTE3LCAxNTEyMSwgCi0gICAgMTUxMjUsIDE1MTI5LCAxNTEzMywgMTUxMzcsIDE1MTQxLCAxNTE0NSwgMTUxNDksIDE1MTUzLCAxNTE1NywgMTUxNjEsIAotICAgIDE1MTY1LCAxNTE2OSwgMTUxNzMsIDE1MTc3LCAxNTE4MSwgMTUxODQsIDE1MTg4LCAxNTE5MSwgMTUxOTUsIDE1MTk5LCAKLSAgICAxNTIwMywgMTUyMDYsIDE1MjA5LCAxNTIxMiwgMTUyMTYsIDE1MjIwLCAxNTIyNCwgMTUyMjgsIDE1MjMyLCAxNTIzNiwgCi0gICAgMTUyNDAsIDE1MjQ0LCAxNTI0NywgMCwgMCwgMTUyNTEsIDE1MjU1LCAxNTI2MCwgMTUyNjQsIDE1MjY5LCAxNTI3MywgCi0gICAgMTUyNzgsIDE1MjgzLCAwLCAxNTI4OSwgMTUyOTMsIDE1Mjk4LCAwLCAxNTMwMywgMTUzMDcsIDE1MzEyLCAxNTMxNywgCi0gICAgMTUzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzMiwgCi0gICAgMTUzMzcsIDE1MzQyLCAxNTM0NywgMCwgMCwgMTUzNTMsIDE1MzU3LCAxNTM2MCwgMTUzNjMsIDE1MzY2LCAxNTM2OSwgCi0gICAgMTUzNzIsIDE1Mzc1LCAxNTM3OCwgMTUzODEsIDE1Mzg0LCAxNTM4OCwgMTUzOTMsIDE1Mzk4LCAxNTQwNCwgMTU0MTAsIDAsIAotICAgIDAsIDAsIDE1NDE2LCAxNTQyMCwgMTU0MjYsIDE1NDMxLCAxNTQzNywgMTU0NDIsIDE1NDQ4LCAwLCAwLCAxNTQ1NCwgCi0gICAgMTU0NTgsIDAsIDE1NDYyLCAxNTQ2NiwgMTU0NzAsIDE1NDc0LCAxNTQ3OCwgMTU0ODIsIDE1NDg2LCAxNTQ5MCwgMTU0OTQsIAotICAgIDE1NDk4LCAxNTUwMiwgMTU1MDYsIDE1NTEwLCAxNTUxNCwgMTU1MTgsIDE1NTIyLCAxNTUyNiwgMTU1MzAsIDAsIDAsIDAsIAotICAgIDE1NTM0LCAxNTU0MCwgMTU1NDYsIDE1NTUyLCAxNTU1OCwgMTU1NjQsIDE1NTcwLCAxNTU3NiwgMTU1ODIsIDE1NTg4LCAKLSAgICAxNTU5NCwgMTU2MDAsIDE1NjA4LCAxNTYxNCwgMTU2MjAsIDE1NjI2LCAxNTYzMiwgMTU2MzgsIDE1NjQ0LCAxNTY1MCwgCi0gICAgMTU2NTYsIDE1NjYyLCAxNTY2OCwgMTU2NzQsIDAsIDE1NjgwLCAxNTY4NiwgMTU2OTIsIDE1Njk4LCAxNTcwNCwgMTU3MTAsIAotICAgIDE1NzE0LCAxNTcyMCwgMTU3MjQsIDAsIDE1NzI4LCAwLCAwLCAxNTczNCwgMTU3MzgsIDE1NzQ0LCAxNTc1MCwgMTU3NTYsIAotICAgIDE1NzYwLCAxNTc2NiwgMCwgMCwgMCwgMTU3NzAsIDAsIDAsIDAsIDAsIDE1Nzc0LCAxNTc3OSwgMTU3ODYsIDE1NzkzLCAKLSAgICAxNTgwMCwgMTU4MDcsIDAsIDE1ODE0LCAwLCAxNTgyMSwgMTU4MjYsIDE1ODMxLCAxNTgzOCwgMTU4NDUsIDE1ODU0LCAKLSAgICAxNTg2NSwgMTU4NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE1ODc5LCAxNTg4NiwgMTU4OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1ODk4LCAxNTkwNCwgCi0gICAgMTU5MTAsIDE1OTE2LCAxNTkyMiwgMTU5MjgsIDE1OTM0LCAxNTk0MCwgMTU5NDYsIDE1OTUyLCAxNTk1OCwgMTU5NjQsIAotICAgIDE1OTcwLCAxNTk3NiwgMTU5ODIsIDE1OTg4LCAxNTk5NCwgMTYwMDAsIDE2MDA2LCAxNjAxMiwgMTYwMTgsIDE2MDI0LCAKLSAgICAxNjAzMCwgMTYwMzYsIDE2MDQyLCAxNjA0OCwgMTYwNTQsIDE2MDYwLCAxNjA2NiwgMTYwNzIsIDE2MDc4LCAxNjA4NCwgCi0gICAgMTYwOTAsIDE2MDk1LCAxNjEwMSwgMTYxMDcsIDE2MTExLCAxNjExNywgMTYxMjEsIDE2MTI3LCAxNjEzMywgMTYxMzksIAotICAgIDE2MTQ1LCAxNjE1MSwgMTYxNTcsIDE2MTYyLCAxNjE2OCwgMTYxNzIsIDE2MTc3LCAxNjE4MywgMTYxODksIDE2MTk1LCAKLSAgICAxNjIwMCwgMTYyMDYsIDE2MjEyLCAxNjIxOCwgMTYyMjMsIDE2MjI5LCAwLCAwLCAwLCAwLCAxNjIzMywgMTYyMzksIAotICAgIDE2MjQ0LCAxNjI1MCwgMTYyNTUsIDE2MjYzLCAxNjI3MSwgMTYyNzUsIDE2Mjc5LCAxNjI4MywgMTYyODksIDE2Mjk1LCAKLSAgICAxNjMwMSwgMTYzMDcsIDE2MzExLCAxNjMxNSwgMTYzMTksIDE2MzIzLCAxNjMyNywgMTYzMzAsIDE2MzMzLCAxNjMzNiwgCi0gICAgMTYzMzksIDE2MzQyLCAxNjM0NSwgMTYzNDgsIDE2MzUxLCAxNjM1NCwgMTYzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE2MzYyLCAxNjM2NywgMCwgMTYzNzQsIDAsIDAsIDE2MzgxLCAxNjM4NiwgMCwgMTYzOTEsIDAsIAotICAgIDAsIDE2Mzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQwMywgMTY0MDgsIDE2NDEyLCAxNjQxOSwgMCwgMTY0MjYsIDE2NDMxLCAKLSAgICAxNjQzNiwgMTY0NDEsIDE2NDQ4LCAxNjQ1NSwgMTY0NjIsIDAsIDE2NDY5LCAxNjQ3NCwgMTY0NzksIDAsIDE2NDg2LCAwLCAKLSAgICAxNjQ5MywgMCwgMCwgMTY0OTgsIDE2NTA1LCAwLCAxNjUxMiwgMTY1MTYsIDE2NTIzLCAxNjUyNywgMTY1MzIsIDE2NTQwLCAKLSAgICAxNjU0NiwgMTY1NTIsIDE2NTU3LCAxNjU2MywgMTY1NjksIDE2NTc1LCAxNjU4MCwgMCwgMTY1ODYsIDE2NTk0LCAxNjYwMSwgCi0gICAgMCwgMCwgMTY2MDgsIDE2NjEzLCAxNjYxOSwgMTY2MjQsIDE2NjMwLCAwLCAxNjYzNiwgMCwgMTY2NDIsIDE2NjQ5LCAKLSAgICAxNjY1NiwgMTY2NjMsIDE2NjcwLCAxNjY3NSwgMCwgMCwgMTY2NzksIDE2Njg0LCAxNjY4OCwgMTY2OTIsIDE2Njk2LCAKLSAgICAxNjcwMCwgMTY3MDQsIDE2NzA4LCAxNjcxMiwgMTY3MTYsIDAsIDAsIDE2NzIwLCAxNjcyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTY3MzIsIDE2NzM2LCAxNjc0NywgMTY3NjIsIDE2Nzc3LCAxNjc4NywgMTY3OTgsIDE2ODExLCAKLSAgICAxNjgyMiwgMTY4MjgsIDE2ODM2LCAxNjg0NiwgMTY4NTIsIDE2ODYwLCAxNjg2NCwgMTY4NzAsIDE2ODc2LCAxNjg4NCwgCi0gICAgMTY4OTQsIDE2OTAyLCAxNjkxNSwgMTY5MjEsIDE2OTI5LCAxNjkzNywgMTY5NDksIDE2OTU2LCAxNjk2NCwgMTY5NzIsIAotICAgIDE2OTgwLCAxNjk4OCwgMTY5OTYsIDE3MDA0LCAxNzAxNCwgMTcwMTgsIDE3MDIxLCAxNzAyNCwgMTcwMjcsIDE3MDMwLCAKLSAgICAxNzAzMywgMTcwMzYsIDE3MDM5LCAxNzA0MiwgMTcwNDUsIDE3MDQ5LCAxNzA1MywgMTcwNTcsIDE3MDYxLCAxNzA2NSwgCi0gICAgMTcwNjksIDE3MDczLCAxNzA3NywgMTcwODEsIDE3MDg2LCAxNzA5MiwgMTcxMDIsIDE3MTE2LCAxNzEyNiwgMTcxMzIsIAotICAgIDE3MTM4LCAxNzE0NiwgMTcxNTQsIDE3MTYyLCAxNzE3MCwgMTcxNzYsIDE3MTgyLCAxNzE4NSwgMTcxODksIDE3MTkzLCAKLSAgICAxNzE5NywgMTcyMDEsIDE3MjA1LCAxNzIwOSwgMCwgMTcyMTMsIDE3MjE3LCAxNzIyMSwgMTcyMjUsIDE3MjI5LCAxNzIzMywgCi0gICAgMTcyMzcsIDE3MjQxLCAxNzI0NSwgMTcyNDksIDE3MjUzLCAxNzI1NiwgMTcyNTksIDE3MjYzLCAxNzI2NywgMTcyNzEsIAotICAgIDE3Mjc0LCAxNzI3OCwgMTcyODIsIDE3Mjg2LCAxNzI5MCwgMTcyOTQsIDE3Mjk4LCAxNzMwMiwgMTczMDYsIDE3MzA5LCAKLSAgICAxNzMxMiwgMTczMTYsIDE3MzIwLCAxNzMyNCwgMTczMjgsIDE3MzMxLCAxNzMzNCwgMTczMzgsIDE3MzQzLCAxNzM0NywgMCwgCi0gICAgMCwgMCwgMCwgMTczNTEsIDE3MzU2LCAxNzM2MCwgMTczNjUsIDE3MzY5LCAxNzM3NCwgMTczNzksIDE3Mzg1LCAxNzM5MCwgCi0gICAgMTczOTYsIDE3NDAwLCAxNzQwNSwgMTc0MDksIDE3NDE0LCAxNzQyNCwgMTc0MzAsIDE3NDM2LCAxNzQ0MywgMTc0NTMsIAotICAgIDE3NDU5LCAxNzQ2MywgMTc0NjcsIDE3NDczLCAxNzQ3OSwgMTc0ODcsIDE3NDkzLCAxNzUwMSwgMTc1MDksIDE3NTE3LCAKLSAgICAxNzUyNywgMTc1MzUsIDE3NTQ1LCAxNzU1MCwgMTc1NTYsIDE3NTYyLCAxNzU2OCwgMTc1NzQsIDE3NTgwLCAxNzU4NiwgMCwgCi0gICAgMTc1OTIsIDE3NTk4LCAxNzYwNCwgMTc2MTAsIDE3NjE2LCAxNzYyMiwgMTc2MjgsIDE3NjM0LCAxNzY0MCwgMTc2NDYsIAotICAgIDE3NjUyLCAxNzY1NywgMTc2NjIsIDE3NjY4LCAxNzY3NCwgMTc2ODAsIDE3Njg1LCAxNzY5MSwgMTc2OTcsIDE3NzAzLCAKLSAgICAxNzcwOSwgMTc3MTUsIDE3NzIxLCAxNzcyNywgMTc3MzMsIDE3NzM4LCAxNzc0MywgMTc3NDksIDE3NzU1LCAxNzc2MSwgCi0gICAgMTc3NjcsIDE3NzcyLCAxNzc3NywgMTc3ODMsIDE3NzkxLCAxNzc5OCwgMCwgMTc4MDUsIDE3ODEyLCAxNzgyNSwgMTc4MzIsIAotICAgIDE3ODM5LCAxNzg0NywgMTc4NTUsIDE3ODYxLCAxNzg2NywgMTc4NzMsIDE3ODgzLCAxNzg4OCwgMTc4OTQsIDE3OTA0LCAKLSAgICAxNzkxNCwgMCwgMTc5MjQsIDE3OTM0LCAxNzk0MiwgMTc5NTQsIDE3OTY2LCAxNzk3MiwgMTc5ODYsIDE4MDAxLCAxODAwNiwgCi0gICAgMTgwMTEsIDE4MDE5LCAxODAyNywgMTgwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MDQzLCAKLSAgICAxODA0NiwgMTgwNTAsIDE4MDU0LCAxODA1OCwgMTgwNjIsIDE4MDY2LCAxODA3MCwgMTgwNzQsIDE4MDc4LCAxODA4MiwgCi0gICAgMTgwODYsIDE4MDkwLCAxODA5NCwgMTgwOTgsIDE4MTAyLCAxODEwNiwgMTgxMTAsIDE4MTE0LCAxODExOCwgMTgxMjIsIAotICAgIDE4MTI1LCAxODEyOCwgMTgxMzIsIDE4MTM2LCAxODE0MCwgMTgxNDMsIDE4MTQ2LCAxODE0OSwgMTgxNTMsIDE4MTU3LCAKLSAgICAxODE2MSwgMTgxNjQsIDE4MTY4LCAxODE3MSwgMTgxNzYsIDE4MTc5LCAxODE4MywgMTgxODYsIDE4MTkwLCAxODE5MywgCi0gICAgMTgxOTgsIDE4MjAxLCAxODIwNSwgMTgyMTIsIDE4MjE3LCAxODIyMSwgMTgyMjYsIDE4MjMwLCAxODIzNSwgMTgyMzksIAotICAgIDE4MjQ0LCAxODI1MSwgMTgyNTcsIDE4MjYyLCAxODI2NiwgMTgyNzAsIDE4Mjc0LCAxODI3OCwgMTgyODIsIDE4Mjg4LCAKLSAgICAxODI5NCwgMTgzMDEsIDE4MzA3LCAxODMxMywgMTgzMTcsIDE4MzIwLCAxODMyMywgMTgzMjYsIDE4MzI5LCAxODMzMiwgCi0gICAgMTgzMzUsIDE4MzM4LCAxODM0MSwgMTgzNDQsIDE4MzUwLCAxODM1NCwgMTgzNTgsIDE4MzYyLCAxODM2NiwgMTgzNzAsIAotICAgIDE4Mzc0LCAxODM3OCwgMTgzODIsIDE4Mzg3LCAxODM5MSwgMTgzOTYsIDE4NDAxLCAxODQwNywgMTg0MTIsIDE4NDE4LCAKLSAgICAxODQyNCwgMTg0MzAsIDE4NDM2LCAxODQ0MiwgMTg0NTAsIDE4NDU4LCAxODQ2NywgMTg0NzUsIDE4NDg0LCAxODQ5MywgCi0gICAgMTg1MDQsIDE4NTE0LCAxODUyNCwgMTg1MzUsIDE4NTQ2LCAxODU1NiwgMTg1NjYsIDE4NTc2LCAxODU4NiwgMTg1OTYsIAotICAgIDE4NjA2LCAxODYxNiwgMTg2MjYsIDE4NjM0LCAxODY0MSwgMTg2NDcsIDE4NjU0LCAxODY1OSwgMTg2NjUsIDE4NjcxLCAKLSAgICAxODY3NywgMTg2ODMsIDE4Njg5LCAxODY5NSwgMTg3MDAsIDE4NzA2LCAxODcxMiwgMTg3MTgsIDE4NzI0LCAxODcyOSwgCi0gICAgMTg3MzgsIDE4NzQ1LCAxODc1MSwgMTg3NTgsIDE4NzY2LCAxODc3MiwgMTg3NzgsIDE4Nzg0LCAxODc5MCwgMTg3OTgsIAotICAgIDE4ODA2LCAxODgxNiwgMTg4MjQsIDE4ODMyLCAxODgzOCwgMTg4NDMsIDE4ODQ4LCAxODg1MywgMTg4NTgsIDE4ODYzLCAKLSAgICAxODg2OCwgMTg4NzMsIDE4ODc4LCAxODg4MywgMTg4ODksIDE4ODk1LCAxODkwMSwgMTg5MDgsIDE4OTEzLCAxODkxOSwgCi0gICAgMTg5MjQsIDE4OTI5LCAxODkzNCwgMTg5MzksIDE4OTQ0LCAxODk0OSwgMTg5NTQsIDE4OTU5LCAxODk2NCwgMTg5NjksIAotICAgIDE4OTc0LCAxODk3OSwgMTg5ODQsIDE4OTg5LCAxODk5NCwgMTg5OTksIDE5MDA0LCAxOTAwOSwgMTkwMTQsIDE5MDE5LCAKLSAgICAxOTAyNCwgMTkwMjksIDE5MDM0LCAxOTAzOSwgMTkwNDQsIDE5MDQ5LCAxOTA1NCwgMTkwNTksIDE5MDY0LCAxOTA2OSwgCi0gICAgMTkwNzQsIDE5MDc5LCAxOTA4NCwgMTkwODksIDE5MDk0LCAxOTA5OSwgMTkxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE5MTA5LCAxOTExMywgMTkxMTcsIDE5MTIxLCAxOTEyNSwgMTkxMjksIDE5MTMzLCAxOTEzNywgMTkxNDEsIAotICAgIDE5MTQ1LCAxOTE0OSwgMTkxNTMsIDE5MTU3LCAxOTE2MSwgMTkxNjUsIDE5MTY5LCAxOTE3MywgMTkxNzcsIDE5MTgxLCAKLSAgICAxOTE4NSwgMTkxODksIDE5MTkzLCAxOTE5NywgMTkyMDEsIDE5MjA1LCAxOTIwOSwgMTkyMTMsIDE5MjE3LCAxOTIyMSwgCi0gICAgMTkyMjUsIDE5MjI5LCAxOTIzMywgMTkyMzcsIDE5MjQxLCAxOTI0NSwgMTkyNDksIDE5MjUzLCAxOTI1NywgMTkyNjEsIAotICAgIDE5MjY1LCAxOTI2OSwgMTkyNzMsIDE5Mjc5LCAxOTI4MywgMTkyODgsIDAsIDAsIDAsIDE5MjkzLCAxOTI5NywgMTkzMDEsIAotICAgIDE5MzA1LCAxOTMwOSwgMTkzMTMsIDE5MzE3LCAxOTMyMSwgMTkzMjUsIDE5MzI5LCAxOTMzMywgMTkzMzcsIDE5MzQxLCAKLSAgICAxOTM0NSwgMTkzNDksIDE5MzUzLCAxOTM1NywgMTkzNjEsIDE5MzY1LCAxOTM2OSwgMTkzNzMsIDE5Mzc3LCAxOTM4MSwgCi0gICAgMTkzODUsIDE5Mzg5LCAxOTM5MywgMTkzOTcsIDE5NDAxLCAxOTQwNSwgMTk0MDksIDE5NDEzLCAxOTQxNywgMTk0MjEsIAotICAgIDE5NDI1LCAxOTQyOSwgMTk0MzMsIDE5NDM3LCAxOTQ0MSwgMTk0NDUsIDE5NDQ5LCAxOTQ1MywgMTk0NTcsIDE5NDYxLCAKLSAgICAxOTQ2NSwgMTk0NjksIDE5NDczLCAxOTQ3NywgMTk0ODEsIDE5NDg1LCAxOTQ4OSwgMTk0OTMsIDE5NDk3LCAxOTUwMSwgCi0gICAgMTk1MDUsIDE5NTA5LCAxOTUxMywgMTk1MTcsIDE5NTIxLCAxOTUyNSwgMTk1MjksIDE5NTMzLCAxOTUzNywgMTk1NDEsIAotICAgIDE5NTQ1LCAxOTU0OSwgMTk1NTMsIDE5NTU3LCAxOTU2MSwgMTk1NjUsIDE5NTY5LCAxOTU3MywgMTk1NzcsIDE5NTgxLCAKLSAgICAxOTU4NSwgMTk1ODksIDE5NTkzLCAxOTU5NywgMTk2MDEsIDE5NjA1LCAxOTYwOSwgMTk2MTMsIDE5NjE3LCAxOTYyMSwgCi0gICAgMTk2MjUsIDE5NjI5LCAxOTYzMywgMTk2MzcsIDE5NjQxLCAxOTY0NSwgMTk2NDksIDE5NjUzLCAxOTY1NywgMTk2NjEsIAotICAgIDE5NjY1LCAxOTY2OSwgMTk2NzMsIDE5Njc3LCAxOTY4MSwgMTk2ODQsIDE5Njg4LCAxOTY5MSwgMTk2OTUsIDE5Njk5LCAKLSAgICAxOTcwMiwgMTk3MDYsIDE5NzEwLCAxOTcxMywgMTk3MTcsIDE5NzIxLCAxOTcyNSwgMTk3MjksIDE5NzMyLCAxOTczNiwgCi0gICAgMTk3NDAsIDE5NzQ0LCAxOTc0OCwgMTk3NTIsIDE5NzU2LCAxOTc1OSwgMTk3NjMsIDE5NzY3LCAxOTc3MSwgMTk3NzUsIAotICAgIDE5Nzc5LCAxOTc4MywgMTk3ODcsIDE5NzkxLCAxOTc5NSwgMTk3OTksIDE5ODAzLCAxOTgwNywgMTk4MTEsIDE5ODE1LCAKLSAgICAxOTgxOSwgMTk4MjMsIDE5ODI3LCAxOTgzMSwgMTk4MzUsIDE5ODM5LCAxOTg0MywgMTk4NDcsIDE5ODUxLCAxOTg1NSwgCi0gICAgMTk4NTksIDE5ODYzLCAxOTg2NywgMTk4NzEsIDE5ODc1LCAxOTg3OSwgMTk4ODMsIDE5ODg3LCAxOTg5MSwgMTk4OTUsIAotICAgIDE5ODk5LCAxOTkwMywgMTk5MDcsIDE5OTExLCAxOTkxNSwgMTk5MTksIDE5OTIzLCAxOTkyNywgMTk5MzEsIDE5OTM1LCAKLSAgICAxOTkzOSwgMTk5NDMsIDE5OTQ3LCAxOTk1MSwgMTk5NTUsIDE5OTU5LCAxOTk2MywgMTk5NjcsIDE5OTcxLCAxOTk3NSwgCi0gICAgMTk5NzksIDE5OTgzLCAxOTk4NywgMTk5OTEsIDE5OTk1LCAxOTk5OSwgMjAwMDMsIDIwMDA3LCAyMDAxMSwgMjAwMTUsIAotICAgIDIwMDE5LCAyMDAyMywgMjAwMjcsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIDIwMDU1LCAKLSAgICAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAyMDA5NSwgCi0gICAgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgMjAxMzUsIAotICAgIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIDIwMTc1LCAKLSAgICAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMTk5LCAyMDIwMywgMjAyMDcsIDIwMjExLCAyMDIxNSwgCi0gICAgMjAyMTksIDIwMjIzLCAyMDIyNywgMjAyMzEsIDIwMjM1LCAyMDIzOSwgMjAyNDMsIDIwMjQ3LCAyMDI1MSwgMjAyNTUsIAotICAgIDIwMjU5LCAyMDI2MywgMjAyNjcsIDIwMjcxLCAyMDI3NSwgMjAyNzksIDIwMjgzLCAyMDI4NywgMjAyOTEsIDIwMjk1LCAKLSAgICAyMDI5OSwgMjAzMDMsIDIwMzA3LCAyMDMxMSwgMjAzMTQsIDIwMzE4LCAyMDMyMiwgMjAzMjYsIDIwMzMwLCAyMDMzNCwgCi0gICAgMjAzMzgsIDIwMzQyLCAyMDM0NiwgMjAzNTAsIDIwMzU0LCAyMDM1OCwgMjAzNjIsIDIwMzY2LCAyMDM3MCwgMjAzNzQsIAotICAgIDIwMzc4LCAyMDM4MiwgMjAzODYsIDIwMzkwLCAyMDM5NCwgMjAzOTgsIDIwNDAyLCAyMDQwNiwgMjA0MDksIDIwNDEzLCAKLSAgICAyMDQxNywgMjA0MjEsIDIwNDI1LCAyMDQyOSwgMjA0MzMsIDIwNDM3LCAyMDQ0MSwgMjA0NDUsIDIwNDQ5LCAyMDQ1MywgCi0gICAgMjA0NTcsIDIwNDYxLCAyMDQ2NSwgMjA0NjksIDIwNDcyLCAyMDQ3NiwgMjA0ODAsIDIwNDg0LCAyMDQ4OCwgMjA0OTIsIAotICAgIDIwNDk2LCAyMDUwMCwgMjA1MDQsIDIwNTA4LCAyMDUxMiwgMjA1MTYsIDIwNTIwLCAyMDUyNCwgMjA1MjgsIDIwNTMyLCAKLSAgICAyMDUzNiwgMjA1NDAsIDIwNTQ0LCAyMDU0OCwgMjA1NTIsIDIwNTU2LCAyMDU2MCwgMjA1NjQsIDIwNTY4LCAyMDU3MiwgCi0gICAgMjA1NzYsIDIwNTgwLCAyMDU4NCwgMjA1ODgsIDIwNTkyLCAyMDU5NiwgMCwgMjA2MDAsIDIwNjA0LCAyMDYwOCwgMjA2MTIsIAotICAgIDAsIDAsIDIwNjE2LCAyMDYyMCwgMjA2MjQsIDIwNjI4LCAyMDYzMiwgMjA2MzYsIDIwNjQwLCAwLCAyMDY0NCwgMCwgCi0gICAgMjA2NDgsIDIwNjUyLCAyMDY1NiwgMjA2NjAsIDAsIDAsIDIwNjY0LCAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgCi0gICAgMjA2ODQsIDIwNjg4LCAyMDY5MiwgMjA2OTYsIDIwNzAwLCAyMDcwNCwgMjA3MDgsIDIwNzEyLCAyMDcxNiwgMjA3MjAsIAotICAgIDIwNzI0LCAyMDcyOCwgMjA3MzIsIDIwNzM2LCAyMDc0MCwgMjA3NDQsIDIwNzQ4LCAyMDc1MiwgMjA3NTUsIDIwNzU5LCAKLSAgICAyMDc2MywgMjA3NjcsIDIwNzcxLCAyMDc3NSwgMjA3NzksIDIwNzgzLCAyMDc4NywgMjA3OTEsIDIwNzk1LCAyMDc5OSwgCi0gICAgMjA4MDMsIDIwODA3LCAyMDgxMSwgMjA4MTUsIDIwODE5LCAyMDgyMywgMCwgMjA4MjcsIDIwODMxLCAyMDgzNSwgMjA4MzksIAotICAgIDAsIDAsIDIwODQzLCAyMDg0NiwgMjA4NTAsIDIwODU0LCAyMDg1OCwgMjA4NjIsIDIwODY2LCAyMDg3MCwgMjA4NzQsIAotICAgIDIwODc4LCAyMDg4MiwgMjA4ODYsIDIwODkwLCAyMDg5NCwgMjA4OTgsIDIwOTAyLCAyMDkwNiwgMjA5MTEsIDIwOTE2LCAKLSAgICAyMDkyMSwgMjA5MjcsIDIwOTMzLCAyMDkzOCwgMjA5NDMsIDIwOTQ5LCAyMDk1MiwgMjA5NTYsIDIwOTYwLCAyMDk2NCwgCi0gICAgMjA5NjgsIDIwOTcyLCAyMDk3NiwgMjA5ODAsIDAsIDIwOTg0LCAyMDk4OCwgMjA5OTIsIDIwOTk2LCAwLCAwLCAyMTAwMCwgCi0gICAgMjEwMDQsIDIxMDA4LCAyMTAxMiwgMjEwMTYsIDIxMDIwLCAyMTAyNCwgMCwgMjEwMjgsIDAsIDIxMDMyLCAyMTAzNiwgCi0gICAgMjEwNDAsIDIxMDQ0LCAwLCAwLCAyMTA0OCwgMjEwNTIsIDIxMDU2LCAyMTA2MCwgMjEwNjQsIDIxMDY4LCAyMTA3MiwgCi0gICAgMjEwNzYsIDIxMDgwLCAyMTA4NSwgMjEwOTAsIDIxMDk1LCAyMTEwMSwgMjExMDcsIDIxMTEyLCAwLCAyMTExNywgMjExMjEsIAotICAgIDIxMTI1LCAyMTEyOSwgMjExMzMsIDIxMTM3LCAyMTE0MSwgMjExNDUsIDIxMTQ5LCAyMTE1MywgMjExNTcsIDIxMTYxLCAKLSAgICAyMTE2NSwgMjExNjksIDIxMTczLCAyMTE3NywgMjExODEsIDIxMTg0LCAyMTE4OCwgMjExOTIsIDIxMTk2LCAyMTIwMCwgCi0gICAgMjEyMDQsIDIxMjA4LCAyMTIxMiwgMjEyMTYsIDIxMjIwLCAyMTIyNCwgMjEyMjgsIDIxMjMyLCAyMTIzNiwgMjEyNDAsIAotICAgIDIxMjQ0LCAyMTI0OCwgMjEyNTIsIDIxMjU2LCAyMTI2MCwgMjEyNjQsIDIxMjY4LCAyMTI3MiwgMjEyNzYsIDIxMjgwLCAKLSAgICAyMTI4NCwgMjEyODgsIDIxMjkyLCAyMTI5NiwgMjEzMDAsIDIxMzA0LCAyMTMwOCwgMjEzMTIsIDIxMzE2LCAyMTMyMCwgCi0gICAgMjEzMjQsIDIxMzI4LCAyMTMzMiwgMjEzMzYsIDIxMzQwLCAwLCAyMTM0NCwgMjEzNDgsIDIxMzUyLCAyMTM1NiwgMCwgMCwgCi0gICAgMjEzNjAsIDIxMzY0LCAyMTM2OCwgMjEzNzIsIDIxMzc2LCAyMTM4MCwgMjEzODQsIDIxMzg4LCAyMTM5MiwgMjEzOTYsIAotICAgIDIxNDAwLCAyMTQwNCwgMjE0MDgsIDIxNDEyLCAyMTQxNiwgMjE0MjAsIDIxNDI0LCAyMTQyOCwgMjE0MzIsIDIxNDM2LCAKLSAgICAyMTQ0MCwgMjE0NDQsIDIxNDQ4LCAyMTQ1MiwgMjE0NTYsIDIxNDYwLCAyMTQ2NCwgMjE0NjgsIDIxNDcyLCAyMTQ3NiwgCi0gICAgMjE0ODAsIDIxNDg0LCAyMTQ4OCwgMjE0OTIsIDIxNDk2LCAyMTUwMCwgMjE1MDQsIDIxNTA4LCAyMTUxMiwgMjE1MTYsIAotICAgIDIxNTIwLCAyMTUyNCwgMjE1MjgsIDIxNTMyLCAyMTUzNiwgMjE1NDAsIDIxNTQ0LCAyMTU0OCwgMjE1NTIsIDIxNTU2LCAKLSAgICAyMTU2MCwgMjE1NjQsIDIxNTY4LCAyMTU3MiwgMjE1NzYsIDIxNTgwLCAyMTU4NCwgMjE1ODcsIDIxNTkxLCAyMTU5NSwgCi0gICAgMjE1OTksIDIxNjAzLCAyMTYwNywgMjE2MTEsIDIxNjE1LCAyMTYxOSwgMjE2MjMsIDAsIDAsIDIxNjI3LCAyMTYzNiwgCi0gICAgMjE2NDIsIDIxNjQ3LCAyMTY1MSwgMjE2NTQsIDIxNjU5LCAyMTY2MiwgMjE2NjUsIDIxNjY4LCAyMTY3MywgMjE2NzcsIAotICAgIDIxNjgyLCAyMTY4NSwgMjE2ODgsIDIxNjkxLCAyMTY5NCwgMjE2OTcsIDIxNzAwLCAyMTcwMywgMjE3MDYsIDIxNzA5LCAKLSAgICAyMTcxMywgMjE3MTcsIDIxNzIxLCAyMTcyNSwgMjE3MjksIDIxNzMzLCAyMTczNywgMjE3NDEsIDIxNzQ1LCAyMTc0OSwgMCwgCi0gICAgMCwgMCwgMjE3NTUsIDIxNzYxLCAyMTc2NSwgMjE3NjksIDIxNzczLCAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgCi0gICAgMjE3OTcsIDIxODAxLCAyMTgwNSwgMjE4MDksIDIxODE1LCAyMTgxOSwgMjE4MjMsIDIxODI3LCAyMTgzMywgMjE4MzksIAotICAgIDIxODQ1LCAyMTg1MywgMjE4NTksIDIxODY1LCAyMTg3MSwgMjE4NzcsIDIxODgzLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTg4OSwgCi0gICAgMjE4OTIsIDIxODk1LCAyMTg5OCwgMjE5MDEsIDIxOTA0LCAyMTkwOCwgMjE5MTIsIDIxOTE1LCAyMTkxOSwgMjE5MjMsIAotICAgIDIxOTI3LCAyMTkzMSwgMjE5MzUsIDIxOTM4LCAyMTk0MiwgMjE5NDYsIDIxOTUwLCAyMTk1NCwgMjE5NTgsIDIxOTYyLCAKLSAgICAyMTk2NiwgMjE5NzAsIDIxOTc0LCAyMTk3OCwgMjE5ODIsIDIxOTg1LCAyMTk4OSwgMjE5OTMsIDIxOTk3LCAyMjAwMSwgCi0gICAgMjIwMDQsIDIyMDA4LCAyMjAxMiwgMjIwMTYsIDIyMDIwLCAyMjAyNCwgMjIwMjgsIDIyMDMyLCAyMjAzNiwgMjIwNDAsIAotICAgIDIyMDQ0LCAyMjA0OCwgMjIwNTIsIDIyMDU2LCAyMjA2MCwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgMjIwNzUsIDIyMDc5LCAKLSAgICAyMjA4MywgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTksIDIyMTAzLCAyMjEwNywgMjIxMTEsIDIyMTE1LCAyMjExOSwgCi0gICAgMjIxMjMsIDIyMTI3LCAyMjEzMSwgMjIxMzUsIDIyMTM5LCAyMjE0MywgMjIxNDcsIDIyMTUxLCAyMjE1NSwgMjIxNTksIAotICAgIDIyMTYzLCAyMjE2NywgMjIxNzEsIDIyMTc1LCAyMjE3OSwgMjIxODMsIDIyMTg3LCAyMjE5MSwgMjIxOTUsIDIyMTk4LCAKLSAgICAyMjIwMiwgMjIyMDYsIDIyMjEwLCAyMjIxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIyMTgsIAotICAgIDIyMjIyLCAyMjIyNSwgMjIyMjksIDIyMjMyLCAyMjIzNiwgMjIyMzksIDIyMjQzLCAyMjI0OSwgMjIyNTQsIDIyMjU4LCAKLSAgICAyMjI2MSwgMjIyNjUsIDIyMjY5LCAyMjI3NCwgMjIyNzgsIDIyMjgzLCAyMjI4NywgMjIyOTIsIDIyMjk2LCAyMjMwMSwgCi0gICAgMjIzMDUsIDIyMzEwLCAyMjMxNiwgMjIzMjAsIDIyMzI1LCAyMjMyOSwgMjIzMzQsIDIyMzQwLCAyMjM0NCwgMjIzNTAsIAotICAgIDIyMzU2LCAyMjM2MCwgMjIzNjUsIDIyMzczLCAyMjM4MSwgMjIzODgsIDIyMzkzLCAyMjM5OCwgMjI0MDcsIDIyNDE0LCAKLSAgICAyMjQyMSwgMjI0MjYsIDIyNDMyLCAyMjQzNiwgMjI0NDAsIDIyNDQ0LCAyMjQ0OCwgMjI0NTIsIDIyNDU2LCAyMjQ2MCwgCi0gICAgMjI0NjQsIDIyNDY4LCAyMjQ3MiwgMjI0NzgsIDIyNDgzLCAyMjQ4OCwgMjI0OTEsIDIyNDk1LCAyMjQ5OSwgMjI1MDQsIAotICAgIDIyNTA4LCAyMjUxMywgMjI1MTcsIDIyNTIyLCAyMjUyNiwgMjI1MzEsIDIyNTM1LCAyMjU0MCwgMjI1NDQsIDIyNTQ5LCAKLSAgICAyMjU1MywgMjI1NTgsIDIyNTY0LCAyMjU2OCwgMjI1NzMsIDIyNTc4LCAyMjU4MiwgMjI1ODYsIDIyNTkwLCAyMjU5NCwgCi0gICAgMjI1OTcsIDIyNjAxLCAyMjYwNywgMjI2MTIsIDIyNjE3LCAyMjYyMSwgMjI2MjUsIDIyNjI5LCAyMjYzNCwgMjI2MzgsIAotICAgIDIyNjQzLCAyMjY0NywgMjI2NTIsIDIyNjU1LCAyMjY1OSwgMjI2NjMsIDIyNjY4LCAyMjY3MiwgMjI2NzcsIDIyNjgxLCAKLSAgICAyMjY4NiwgMjI2OTIsIDIyNjk2LCAyMjcwMCwgMjI3MDQsIDIyNzA4LCAyMjcxMiwgMjI3MTYsIDIyNzIwLCAyMjcyNCwgCi0gICAgMjI3MjgsIDIyNzMyLCAyMjczNiwgMjI3NDIsIDIyNzQ1LCAyMjc0OSwgMjI3NTMsIDIyNzU4LCAyMjc2MiwgMjI3NjcsIAotICAgIDIyNzcxLCAyMjc3NiwgMjI3ODAsIDIyNzg1LCAyMjc4OSwgMjI3OTQsIDIyNzk4LCAyMjgwMywgMjI4MDcsIDIyODEyLCAKLSAgICAyMjgxOCwgMjI4MjIsIDIyODI2LCAyMjgzMiwgMjI4MzgsIDIyODQ0LCAyMjg1MCwgMjI4NTQsIDIyODU4LCAyMjg2MiwgCi0gICAgMjI4NjYsIDIyODcwLCAyMjg3NCwgMjI4ODAsIDIyODg0LCAyMjg4OCwgMjI4OTIsIDIyODk3LCAyMjkwMSwgMjI5MDYsIAotICAgIDIyOTEwLCAyMjkxNSwgMjI5MTksIDIyOTI0LCAyMjkyOCwgMjI5MzMsIDIyOTM3LCAyMjk0MiwgMjI5NDYsIDIyOTUxLCAKLSAgICAyMjk1NywgMjI5NjEsIDIyOTY3LCAyMjk3MSwgMjI5NzUsIDIyOTc5LCAyMjk4MywgMjI5ODcsIDIyOTkxLCAyMjk5NywgCi0gICAgMjMwMDAsIDIzMDA0LCAyMzAwOCwgMjMwMTMsIDIzMDE3LCAyMzAyMiwgMjMwMjYsIDIzMDMxLCAyMzAzNSwgMjMwNDAsIAotICAgIDIzMDQ0LCAyMzA0OSwgMjMwNTMsIDIzMDU4LCAyMzA2MiwgMjMwNjcsIDIzMDczLCAyMzA3NiwgMjMwODAsIDIzMDg0LCAKLSAgICAyMzA4OSwgMjMwOTQsIDIzMDk4LCAyMzEwMiwgMjMxMDYsIDIzMTEwLCAyMzExNCwgMjMxMTgsIDIzMTI0LCAyMzEyNywgCi0gICAgMjMxMzEsIDIzMTM1LCAyMzE0MCwgMjMxNDQsIDIzMTQ5LCAyMzE1MywgMjMxNTgsIDIzMTY0LCAyMzE2NywgMjMxNzIsIAotICAgIDIzMTc2LCAyMzE4MCwgMjMxODQsIDIzMTg4LCAyMzE5MiwgMjMxOTYsIDIzMjAwLCAyMzIwNiwgMjMyMTAsIDIzMjE0LCAKLSAgICAyMzIxOCwgMjMyMjMsIDIzMjI3LCAyMzIzMiwgMjMyMzYsIDIzMjQxLCAyMzI0NSwgMjMyNTAsIDIzMjU0LCAyMzI1OSwgCi0gICAgMjMyNjMsIDIzMjY4LCAyMzI3MiwgMjMyNzcsIDIzMjgwLCAyMzI4NCwgMjMyODgsIDIzMjkyLCAyMzI5NiwgMjMzMDAsIAotICAgIDIzMzA0LCAyMzMwOCwgMjMzMTIsIDIzMzE4LCAyMzMyMiwgMjMzMjYsIDIzMzMwLCAyMzMzNSwgMjMzMzksIDIzMzQ0LCAKLSAgICAyMzM0OCwgMjMzNTMsIDIzMzU3LCAyMzM2MiwgMjMzNjYsIDIzMzcxLCAyMzM3NSwgMjMzODAsIDIzMzg0LCAyMzM4OSwgCi0gICAgMjMzOTUsIDIzMzk4LCAyMzQwMywgMjM0MDcsIDIzNDEyLCAyMzQxOCwgMjM0MjQsIDIzNDMwLCAyMzQzNiwgMjM0NDIsIAotICAgIDIzNDQ4LCAyMzQ1NCwgMjM0NTgsIDIzNDYyLCAyMzQ2NiwgMjM0NzAsIDIzNDc0LCAyMzQ3OCwgMjM0ODIsIDIzNDg2LCAKLSAgICAyMzQ5MSwgMjM0OTUsIDIzNTAwLCAyMzUwNCwgMjM1MDksIDIzNTEzLCAyMzUxOCwgMjM1MjIsIDIzNTI3LCAyMzUzMSwgCi0gICAgMjM1MzYsIDIzNTQwLCAyMzU0NSwgMjM1NDksIDIzNTUzLCAyMzU1NywgMjM1NjEsIDIzNTY1LCAyMzU2OSwgMjM1NzMsIAotICAgIDIzNTc5LCAyMzU4MiwgMjM1ODYsIDIzNTkwLCAyMzU5NSwgMjM1OTksIDIzNjA0LCAyMzYwOCwgMjM2MTMsIDIzNjE3LCAKLSAgICAyMzYyMiwgMjM2MjYsIDIzNjMxLCAyMzYzNSwgMjM2NDAsIDIzNjQ0LCAyMzY0OSwgMjM2NTUsIDIzNjU5LCAyMzY2NSwgCi0gICAgMjM2NzAsIDIzNjc2LCAyMzY4MCwgMjM2ODYsIDIzNjkxLCAyMzY5NSwgMjM2OTksIDIzNzAzLCAyMzcwNywgMjM3MTEsIAotICAgIDIzNzE2LCAyMzcxOSwgMjM3MjMsIDIzNzI4LCAyMzczMiwgMjM3MzcsIDIzNzQwLCAyMzc0NCwgMjM3NDgsIDIzNzUyLCAKLSAgICAyMzc1NiwgMjM3NjAsIDIzNzY0LCAyMzc2OCwgMjM3NzIsIDIzNzc2LCAyMzc4MCwgMjM3ODQsIDIzNzg5LCAyMzc5MywgCi0gICAgMjM3OTcsIDIzODAzLCAyMzgwNywgMjM4MTMsIDIzODE3LCAyMzgyMywgMjM4MjcsIDIzODMxLCAyMzgzNSwgMjM4MzksIAotICAgIDIzODQzLCAyMzg0OCwgMjM4NTIsIDIzODU2LCAyMzg2MCwgMjM4NjQsIDIzODY4LCAyMzg3MiwgMjM4NzYsIDIzODgwLCAKLSAgICAyMzg4NCwgMjM4ODgsIDIzODk0LCAyMzkwMCwgMjM5MDYsIDIzOTEyLCAyMzkxOCwgMjM5MjMsIDIzOTI5LCAyMzkzNSwgCi0gICAgMjM5NDEsIDIzOTQ1LCAyMzk0OSwgMjM5NTMsIDIzOTU3LCAyMzk2MSwgMjM5NjUsIDIzOTY5LCAyMzk3MywgMjM5NzcsIAotICAgIDIzOTgxLCAyMzk4NSwgMjM5ODksIDIzOTkzLCAyMzk5OCwgMjQwMDMsIDI0MDA4LCAyNDAxMiwgMjQwMTYsIDI0MDIwLCAKLSAgICAyNDAyNCwgMjQwMjgsIDI0MDMyLCAyNDAzNiwgMjQwNDAsIDI0MDQ0LCAyNDA0OCwgMjQwNTQsIDI0MDYwLCAyNDA2NiwgCi0gICAgMjQwNzIsIDI0MDc4LCAyNDA4NCwgMjQwOTAsIDI0MDk2LCAyNDEwMiwgMjQxMDYsIDI0MTEwLCAyNDExNCwgMjQxMTgsIAotICAgIDI0MTIyLCAyNDEyNiwgMjQxMzAsIDI0MTM2LCAyNDE0MiwgMjQxNDgsIDI0MTU0LCAyNDE2MCwgMjQxNjYsIDI0MTcyLCAKLSAgICAyNDE3OCwgMjQxODQsIDI0MTg5LCAyNDE5NCwgMjQxOTksIDI0MjA0LCAyNDIxMCwgMjQyMTYsIDI0MjIyLCAyNDIyOCwgCi0gICAgMjQyMzQsIDI0MjQwLCAyNDI0NiwgMjQyNTEsIDI0MjU3LCAyNDI2MywgMjQyNjksIDI0Mjc0LCAyNDI4MCwgMjQyODYsIAotICAgIDI0MjkyLCAyNDI5NywgMjQzMDIsIDI0MzA3LCAyNDMxMiwgMjQzMTcsIDI0MzIyLCAyNDMyNywgMjQzMzIsIDI0MzM3LCAKLSAgICAyNDM0MiwgMjQzNDcsIDI0MzUyLCAyNDM1NiwgMjQzNjEsIDI0MzY2LCAyNDM3MSwgMjQzNzYsIDI0MzgxLCAyNDM4NiwgCi0gICAgMjQzOTEsIDI0Mzk2LCAyNDQwMSwgMjQ0MDYsIDI0NDExLCAyNDQxNiwgMjQ0MjEsIDI0NDI2LCAyNDQzMSwgMjQ0MzYsIAotICAgIDI0NDQxLCAyNDQ0NiwgMjQ0NTEsIDI0NDU2LCAyNDQ2MSwgMjQ0NjYsIDI0NDcxLCAyNDQ3NiwgMjQ0ODEsIDI0NDg2LCAKLSAgICAyNDQ5MSwgMjQ0OTYsIDI0NTAxLCAyNDUwNSwgMjQ1MTAsIDI0NTE1LCAyNDUyMCwgMjQ1MjUsIDI0NTMwLCAyNDUzNSwgCi0gICAgMjQ1NDAsIDI0NTQ1LCAyNDU1MCwgMjQ1NTUsIDI0NTYwLCAyNDU2NSwgMjQ1NzAsIDI0NTc1LCAyNDU4MCwgMjQ1ODUsIAotICAgIDI0NTkwLCAyNDU5NSwgMjQ2MDAsIDI0NjA1LCAyNDYxMCwgMjQ2MTUsIDI0NjIwLCAyNDYyNSwgMjQ2MzAsIDI0NjM0LCAKLSAgICAyNDYzOSwgMjQ2NDQsIDI0NjQ5LCAyNDY1NCwgMjQ2NTksIDI0NjYzLCAyNDY2OCwgMjQ2NzMsIDI0Njc4LCAyNDY4MywgCi0gICAgMjQ2ODgsIDI0NjkyLCAyNDY5NywgMjQ3MDMsIDI0NzA4LCAyNDcxMywgMjQ3MTgsIDI0NzIzLCAyNDcyOSwgMjQ3MzQsIAotICAgIDI0NzM5LCAyNDc0NCwgMjQ3NDksIDI0NzU0LCAyNDc1OSwgMjQ3NjQsIDI0NzY5LCAyNDc3NCwgMjQ3NzksIDI0Nzg0LCAKLSAgICAyNDc4OSwgMjQ3OTQsIDI0Nzk5LCAyNDgwNCwgMjQ4MDksIDI0ODE0LCAyNDgxOSwgMjQ4MjQsIDI0ODI5LCAyNDgzNCwgCi0gICAgMjQ4MzksIDI0ODQ0LCAyNDg0OSwgMjQ4NTQsIDI0ODU5LCAyNDg2NCwgMjQ4NjksIDI0ODc0LCAyNDg3OSwgMjQ4ODQsIAotICAgIDI0ODg5LCAyNDg5NCwgMjQ4OTksIDI0OTA0LCAyNDkwOSwgMjQ5MTQsIDI0OTE5LCAyNDkyNCwgMjQ5MjksIDI0OTM0LCAKLSAgICAyNDkzOSwgMjQ5NDQsIDI0OTQ5LCAyNDk1NSwgMjQ5NjAsIDI0OTY1LCAyNDk3MCwgMjQ5NzUsIDI0OTgwLCAyNDk4NSwgCi0gICAgMjQ5OTAsIDI0OTk1LCAyNTAwMCwgMjUwMDUsIDI1MDEwLCAyNTAxNSwgMjUwMjAsIDI1MDI1LCAyNTAzMCwgMjUwMzUsIAotICAgIDI1MDQwLCAyNTA0NSwgMjUwNTAsIDI1MDU1LCAyNTA2MCwgMjUwNjUsIDI1MDcwLCAyNTA3NSwgMjUwODAsIDI1MDg1LCAKLSAgICAyNTA5MCwgMjUwOTUsIDI1MTAwLCAyNTEwNSwgMjUxMTAsIDI1MTE1LCAyNTEyMCwgMjUxMjUsIDI1MTMwLCAyNTEzNSwgCi0gICAgMjUxNDAsIDI1MTQ1LCAyNTE1MSwgMjUxNTUsIDI1MTU5LCAyNTE2MywgMjUxNjcsIDI1MTcxLCAyNTE3NSwgMjUxNzksIAotICAgIDI1MTgzLCAyNTE4OSwgMjUxOTUsIDI1MjAxLCAyNTIwNywgMjUyMTMsIDI1MjE5LCAyNTIyNSwgMjUyMzIsIDI1MjM4LCAKLSAgICAyNTI0MywgMjUyNDgsIDI1MjUzLCAyNTI1OCwgMjUyNjMsIDI1MjY4LCAyNTI3MywgMjUyNzgsIDI1MjgzLCAyNTI4OCwgCi0gICAgMjUyOTMsIDI1Mjk4LCAyNTMwMywgMjUzMDgsIDI1MzEzLCAyNTMxOCwgMjUzMjMsIDI1MzI4LCAyNTMzMywgMjUzMzgsIAotICAgIDI1MzQzLCAyNTM0OCwgMjUzNTMsIDI1MzU4LCAyNTM2MywgMjUzNjgsIDI1MzczLCAyNTM3OCwgMCwgMCwgMCwgMjUzODUsIAotICAgIDI1Mzk1LCAyNTM5OSwgMjU0MDYsIDI1NDEwLCAyNTQxNCwgMjU0MTgsIDI1NDI2LCAyNTQzMCwgMjU0MzUsIDI1NDQwLCAKLSAgICAyNTQ0NSwgMjU0NDksIDI1NDU0LCAyNTQ1OSwgMjU0NjIsIDI1NDY2LCAyNTQ3MCwgMjU0NzksIDI1NDgzLCAyNTQ4NywgCi0gICAgMjU0OTMsIDI1NDk3LCAyNTUwMSwgMjU1MDksIDI1NTEzLCAyNTUyMSwgMjU1MjcsIDI1NTMzLCAyNTUzOSwgMjU1NDUsIAotICAgIDI1NTU0LCAyNTU1OSwgMjU1NjMsIDI1NTcyLCAyNTU3NSwgMjU1ODEsIDI1NTg1LCAyNTU5MSwgMjU1OTYsIDI1NjAyLCAKLSAgICAyNTYxMCwgMjU2MTYsIDI1NjIxLCAyNTYyOCwgMjU2MzMsIDI1NjM3LCAyNTY0MSwgMjU2NTEsIDI1NjU3LCAyNTY2MSwgCi0gICAgMjU2NzEsIDI1Njc3LCAyNTY4MSwgMjU2ODUsIDI1NjkyLCAyNTY5OSwgMjU3MDQsIDI1NzA5LCAyNTcxOCwgMjU3MjIsIAotICAgIDI1NzI2LCAyNTczMCwgMjU3MzgsIDI1NzQ1LCAyNTc0OSwgMjU3NTMsIDI1NzU3LCAyNTc2MSwgMjU3NjUsIDI1NzY5LCAKLSAgICAyNTc3MywgMjU3NzcsIDI1NzgxLCAyNTc4NSwgMjU3ODksIDI1Nzk0LCAyNTc5OSwgMjU4MDQsIDI1ODA4LCAyNTgxMiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU4MTYsIDI1ODIwLCAyNTgyNCwgMjU4MjgsIAotICAgIDI1ODMyLCAyNTgzNywgMjU4NDIsIDI1ODQ3LCAyNTg1MiwgMjU4NTYsIDI1ODYwLCAyNTg2NSwgMjU4NjksIDAsIDI1ODczLCAKLSAgICAyNTg3OCwgMjU4ODMsIDI1ODg4LCAyNTg5MiwgMjU4OTcsIDI1OTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNTkwNywgMjU5MTEsIDI1OTE1LCAyNTkxOSwgMjU5MjMsIDI1OTI4LCAyNTkzMywgMjU5MzgsIDI1OTQzLCAyNTk0NywgCi0gICAgMjU5NTEsIDI1OTU2LCAyNTk2MCwgMjU5NjQsIDI1OTY4LCAyNTk3MywgMjU5NzgsIDI1OTgzLCAyNTk4NywgMjU5OTIsIAotICAgIDI1OTk3LCAyNjAwMiwgMjYwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MDEzLCAyNjAxNywgMjYwMjEsIAotICAgIDI2MDI1LCAyNjAyOSwgMjYwMzQsIDI2MDM5LCAyNjA0NCwgMjYwNDksIDI2MDUzLCAyNjA1NywgMjYwNjIsIDI2MDY2LCAKLSAgICAyNjA3MCwgMjYwNzQsIDI2MDc5LCAyNjA4NCwgMjYwODksIDI2MDkzLCAyNjA5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjYxMDMsIDI2MTA3LCAyNjExMSwgMjYxMTUsIDI2MTE5LCAyNjEyNCwgMjYxMjksIDI2MTM0LCAKLSAgICAyNjEzOSwgMjYxNDMsIDI2MTQ3LCAyNjE1MiwgMjYxNTYsIDAsIDI2MTYwLCAyNjE2NSwgMjYxNzAsIDAsIDI2MTc1LCAKLSAgICAyNjE4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYxODUsIDI2MTg4LCAyNjE5MiwgMjYxOTYsIAotICAgIDI2MjAwLCAyNjIwNCwgMjYyMDgsIDI2MjEyLCAyNjIxNiwgMjYyMjAsIDI2MjI0LCAyNjIyOCwgMjYyMzIsIDI2MjM2LCAKLSAgICAyNjI0MCwgMjYyNDQsIDI2MjQ4LCAyNjI1MiwgMjYyNTUsIDI2MjU5LCAyNjI2MywgMjYyNjcsIDI2MjcxLCAyNjI3NSwgCi0gICAgMjYyNzksIDI2MjgzLCAyNjI4NywgMjYyOTEsIDI2Mjk1LCAyNjI5OSwgMjYzMDMsIDI2MzA3LCAyNjMxMSwgMjYzMTQsIAotICAgIDI2MzE4LCAyNjMyMiwgMjYzMjgsIDI2MzM0LCAyNjM0MCwgMjYzNDYsIDI2MzUyLCAyNjM1OCwgMjYzNjQsIDI2MzcwLCAKLSAgICAyNjM3NiwgMjYzODIsIDI2Mzg4LCAyNjM5NCwgMjY0MDAsIDI2NDA2LCAyNjQxNSwgMjY0MjQsIDI2NDMwLCAyNjQzNiwgCi0gICAgMjY0NDIsIDI2NDQ3LCAyNjQ1MSwgMjY0NTYsIDI2NDYxLCAyNjQ2NiwgMjY0NzAsIDI2NDc1LCAyNjQ4MCwgMjY0ODUsIAotICAgIDI2NDg5LCAyNjQ5NCwgMjY0OTgsIDI2NTAzLCAyNjUwOCwgMjY1MTMsIDI2NTE4LCAyNjUyMiwgMjY1MjYsIDI2NTMwLCAKLSAgICAyNjUzNCwgMjY1MzgsIDI2NTQyLCAyNjU0NiwgMjY1NTAsIDI2NTU0LCAyNjU1OCwgMjY1NjQsIDI2NTY4LCAyNjU3MiwgCi0gICAgMjY1NzYsIDI2NTgwLCAyNjU4NCwgMjY1OTIsIDI2NTk4LCAyNjYwMiwgMjY2MDgsIDI2NjEyLCAyNjYxOCwgMjY2MjIsIDAsIAotICAgIDAsIDI2NjI2LCAyNjYzMCwgMjY2MzMsIDI2NjM2LCAyNjYzOSwgMjY2NDIsIDI2NjQ1LCAyNjY0OCwgMjY2NTEsIDI2NjU0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjY1NywgMjY2NjUsIDI2NjczLCAyNjY4MSwgMjY2ODksIDI2Njk3LCAyNjcwNSwgMjY3MTMsIAotICAgIDI2NzIxLCAyNjcyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMjY3MzcsIDI2NzQwLCAyNjc0MywgMjY3NDYsIDI2NzUxLCAyNjc1NCwgCi0gICAgMjY3NTksIDI2NzY2LCAyNjc3NCwgMjY3NzksIDI2Nzg2LCAyNjc4OSwgMjY3OTYsIDI2ODAzLCAyNjgxMCwgMCwgMjY4MTQsIAotICAgIDI2ODE4LCAyNjgyMSwgMjY4MjQsIDI2ODI3LCAyNjgzMCwgMjY4MzMsIDI2ODM2LCAyNjgzOSwgMjY4NDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI2ODQ1LCAyNjg0OCwgMjY4NTEsIDI2ODU0LCAyNjg1NywgMjY4NjAsIDI2ODY0LCAyNjg2OCwgMjY4NzIsIAotICAgIDI2ODc1LCAyNjg3OSwgMjY4ODMsIDI2ODg2LCAyNjg5MCwgMjY4OTQsIDI2ODk3LCAyNjkwMSwgMjY5MDUsIDI2OTA5LCAKLSAgICAyNjkxMywgMjY5MTcsIDI2OTIxLCAyNjkyNSwgMjY5MjgsIDI2OTMxLCAyNjkzNSwgMjY5MzksIDI2OTQyLCAyNjk0NiwgCi0gICAgMjY5NTAsIDI2OTU0LCAyNjk1OCwgMjY5NjIsIDI2OTY2LCAyNjk3MCwgMjY5NzQsIDI2OTgxLCAyNjk4NiwgMjY5OTEsIAotICAgIDI2OTk2LCAyNzAwMSwgMjcwMDcsIDI3MDEzLCAyNzAxOSwgMjcwMjUsIDI3MDMwLCAyNzAzNiwgMjcwNDIsIDI3MDQ3LCAKLSAgICAyNzA1MywgMjcwNTksIDI3MDY1LCAyNzA3MSwgMjcwNzcsIDI3MDgyLCAyNzA4OCwgMjcwOTMsIDI3MDk5LCAyNzEwNSwgCi0gICAgMjcxMTEsIDI3MTE3LCAyNzEyMywgMjcxMjgsIDI3MTMzLCAyNzEzOSwgMjcxNDUsIDI3MTUwLCAyNzE1NiwgMjcxNjEsIAotICAgIDI3MTY3LCAyNzE3MiwgMjcxNzcsIDI3MTgzLCAyNzE4OSwgMjcxOTUsIDI3MjAxLCAyNzIwNywgMjcyMTMsIDI3MjE5LCAKLSAgICAyNzIyNSwgMjcyMzEsIDI3MjM3LCAyNzI0MywgMjcyNDksIDI3MjU0LCAyNzI1OSwgMjcyNjQsIDI3MjcwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNzI3NiwgMjcyODUsIDI3Mjk0LCAyNzMwMiwgMjczMTAsIDI3MzIwLCAyNzMyOCwgMjczMzcsIAotICAgIDI3MzQ0LCAyNzM1MSwgMjczNTgsIDI3MzY2LCAyNzM3NCwgMjczODIsIDI3MzkwLCAyNzM5OCwgMjc0MDYsIDI3NDE0LCAKLSAgICAyNzQyMiwgMjc0MjksIDI3NDM3LCAyNzQ0NSwgMjc0NTMsIDI3NDYxLCAyNzQ2OSwgMjc0NzksIDI3NDg5LCAyNzQ5OSwgCi0gICAgMjc1MDksIDI3NTE5LCAyNzUyOSwgMjc1MzksIDI3NTQ5LCAyNzU1OSwgMjc1NjksIDI3NTc5LCAyNzU4OSwgMjc1OTksIAotICAgIDI3NjA5LCAyNzYxNywgMjc2MjUsIDI3NjM1LCAyNzY0MywgMCwgMCwgMCwgMCwgMCwgMjc2NTMsIDI3NjU3LCAyNzY2MSwgCi0gICAgMjc2NjUsIDI3NjY5LCAyNzY3MywgMjc2NzcsIDI3NjgxLCAyNzY4NSwgMjc2ODksIDI3NjkzLCAyNzY5NywgMjc3MDEsIAotICAgIDI3NzA1LCAyNzcwOSwgMjc3MTMsIDI3NzE3LCAyNzcyMSwgMjc3MjUsIDI3NzI5LCAyNzczMywgMjc3MzcsIDI3NzQxLCAKLSAgICAyNzc0NSwgMjc3NTEsIDI3NzU1LCAyNzc2MSwgMjc3NjUsIDI3NzcxLCAyNzc3NSwgMjc3ODEsIDI3Nzg1LCAyNzc4OSwgCi0gICAgMjc3OTMsIDI3Nzk3LCAyNzgwMSwgMjc4MDUsIDI3ODExLCAyNzgxNywgMjc4MjMsIDI3ODI5LCAyNzgzNCwgMjc4MzksIAotICAgIDI3ODQ0LCAyNzg1MCwgMjc4NTYsIDI3ODYyLCAyNzg2OCwgMjc4NzUsIDI3ODgxLCAyNzg4NiwgMjc4OTEsIDI3ODk1LCAKLSAgICAyNzg5OSwgMjc5MDMsIDI3OTA3LCAyNzkxMSwgMjc5MTUsIDI3OTE5LCAyNzkyNSwgMjc5MzEsIDI3OTM3LCAyNzk0MiwgCi0gICAgMjc5NDksIDI3OTU0LCAyNzk1OSwgMjc5NjUsIDI3OTcwLCAyNzk3NywgMjc5ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI3OTkwLCAyNzk5NSwgMjc5OTgsIDI4MDAyLCAyODAwNiwgMjgwMTAsIDI4MDE0LCAyODAxOCwgMjgwMjIsIAotICAgIDI4MDI2LCAyODAzMCwgMjgwMzQsIDI4MDM4LCAyODA0MiwgMjgwNDYsIDI4MDUwLCAyODA1MywgMjgwNTYsIDI4MDYwLCAKLSAgICAyODA2NCwgMjgwNjgsIDI4MDcxLCAyODA3NCwgMjgwNzcsIDI4MDgxLCAyODA4NSwgMjgwODksIDI4MDkzLCAyODA5NywgMCwgCi0gICAgMCwgMCwgMjgxMDAsIDI4MTA0LCAyODEwOCwgMjgxMTIsIDI4MTE3LCAyODEyMiwgMjgxMjcsIDI4MTMyLCAyODEzNiwgCi0gICAgMjgxNDAsIDI4MTQ1LCAyODE1MCwgMCwgMCwgMCwgMCwgMjgxNTYsIDI4MTYwLCAyODE2NSwgMjgxNzAsIDI4MTc1LCAKLSAgICAyODE3OSwgMjgxODMsIDI4MTg3LCAyODE5MSwgMjgxOTYsIDI4MjAwLCAyODIwNCwgMCwgMCwgMCwgMCwgMjgyMDgsIDAsIDAsIAotICAgIDAsIDI4MjEyLCAyODIxNiwgMjgyMjAsIDI4MjI0LCAyODIyNywgMjgyMzAsIDI4MjMzLCAyODIzNiwgMjgyMzksIDI4MjQyLCAKLSAgICAyODI0NSwgMjgyNDgsIDI4MjUxLCAyODI1NiwgMjgyNjIsIDI4MjY4LCAyODI3NCwgMjgyODAsIDI4Mjg1LCAyODI5MSwgCi0gICAgMjgyOTcsIDI4MzAzLCAyODMwOCwgMjgzMTQsIDI4MzE5LCAyODMyNSwgMjgzMzEsIDI4MzM2LCAyODM0MiwgMjgzNDgsIAotICAgIDI4MzU0LCAyODM1OSwgMjgzNjQsIDI4MzY5LCAyODM3NSwgMjgzODEsIDI4Mzg2LCAyODM5MiwgMjgzOTcsIDI4NDAzLCAKLSAgICAyODQwOCwgMjg0MTQsIDAsIDAsIDI4NDIwLCAyODQyNiwgMjg0MzIsIDI4NDM4LCAyODQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjg0NTAsIDI4NDU3LCAyODQ2NCwgMjg0NzAsIDI4NDc3LCAyODQ4NCwgMjg0OTAsIDI4NDk3LCAKLSAgICAyODUwNCwgMjg1MTEsIDI4NTE4LCAyODUyNCwgMjg1MzEsIDI4NTM4LCAyODU0NCwgMjg1NTEsIDI4NTU4LCAyODU2NCwgCi0gICAgMjg1NzEsIDI4NTc4LCAyODU4NCwgMjg1OTAsIDI4NTk3LCAyODYwMywgMjg2MDksIDI4NjE2LCAyODYyMiwgMjg2MjksIAotICAgIDI4NjM2LCAyODY0MywgMjg2NTAsIDI4NjU3LCAyODY2NCwgMjg2NzAsIDI4Njc3LCAyODY4NCwgMjg2OTAsIDI4Njk3LCAKLSAgICAyODcwNCwgMjg3MTEsIDI4NzE4LCAyODcyNSwgMjg3MzIsIDI4NzM5LCAwLCAwLCAwLCAwLCAyODc0NiwgMjg3NTQsIAotICAgIDI4NzYxLCAyODc2OCwgMjg3NzQsIDI4NzgxLCAyODc4NywgMjg3OTQsIDI4ODAwLCAyODgwNywgMjg4MTQsIDI4ODIxLCAKLSAgICAyODgyOCwgMjg4MzUsIDI4ODQyLCAyODg0OSwgMjg4NTYsIDI4ODYzLCAyODg3MCwgMjg4NzcsIDI4ODgzLCAyODg4OSwgCi0gICAgMjg4OTYsIDI4OTAzLCAyODkxMCwgMjg5MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OTIyLCAyODkyOCwgMjg5MzMsIDI4OTM4LCAKLSAgICAyODk0MywgMjg5NDgsIDI4OTUzLCAyODk1OCwgMjg5NjMsIDI4OTY4LCAyODk3MywgMCwgMCwgMCwgMjg5NzksIDI4OTg1LCAKLSAgICAyODk5MSwgMjg5OTUsIDI5MDAxLCAyOTAwNywgMjkwMTMsIDI5MDE5LCAyOTAyNSwgMjkwMzEsIDI5MDM3LCAyOTA0MywgCi0gICAgMjkwNDksIDI5MDU1LCAyOTA2MSwgMjkwNjcsIDI5MDczLCAyOTA3OSwgMjkwODUsIDI5MDg5LCAyOTA5NSwgMjkxMDEsIAotICAgIDI5MTA3LCAyOTExMywgMjkxMTksIDI5MTI1LCAyOTEzMSwgMjkxMzcsIDI5MTQzLCAyOTE0OSwgMjkxNTUsIDI5MTYxLCAKLSAgICAyOTE2NywgMjkxNzMsIDI5MTc5LCAyOTE4MywgMjkxODgsIDI5MTkzLCAyOTE5OCwgMjkyMDIsIDI5MjA3LCAyOTIxMSwgCi0gICAgMjkyMTYsIDI5MjIxLCAyOTIyNiwgMjkyMzAsIDI5MjM1LCAyOTI0MCwgMjkyNDUsIDI5MjUwLCAyOTI1NSwgMjkyNTksIAotICAgIDI5MjYzLCAyOTI2OCwgMjkyNzMsIDI5Mjc4LCAyOTI4MiwgMjkyODYsIDI5MjkxLCAyOTI5NiwgMjkzMDEsIDI5MzA2LCAwLCAKLSAgICAwLCAyOTMxMiwgMjkzMTYsIDI5MzIzLCAyOTMyOCwgMjkzMzQsIDI5MzQwLCAyOTM0NSwgMjkzNTEsIDI5MzU3LCAyOTM2MiwgCi0gICAgMjkzNjgsIDI5Mzc0LCAyOTM4MCwgMjkzODYsIDI5MzkyLCAyOTM5NywgMjk0MDIsIDI5NDA4LCAyOTQxMywgMjk0MTksIAotICAgIDI5NDI0LCAyOTQzMCwgMjk0MzYsIDI5NDQyLCAyOTQ0OCwgMjk0NTIsIDI5NDU3LCAyOTQ2MiwgMjk0NjgsIDI5NDc0LCAKLSAgICAyOTQ3OSwgMjk0ODUsIDI5NDkxLCAyOTQ5NSwgMjk1MDAsIDI5NTA1LCAyOTUwOSwgMjk1MTQsIDI5NTE5LCAyOTUyNCwgCi0gICAgMjk1MjksIDI5NTM1LCAyOTU0MSwgMjk1NDcsIDI5NTUyLCAyOTU1NywgMjk1NjEsIDI5NTY2LCAyOTU3MCwgMjk1NzUsIAotICAgIDI5NTc5LCAyOTU4NCwgMjk1ODksIDI5NTk0LCAyOTU5OSwgMjk2MDYsIDI5NjEzLCAyOTYyMSwgMjk2MzIsIDI5NjQxLCAKLSAgICAyOTY0OSwgMjk2NTYsIDI5NjY3LCAyOTY3MywgMjk2ODAsIDAsIDI5Njg3LCAyOTY5MiwgMjk2OTcsIDI5NzA1LCAyOTcxMSwgCi0gICAgMjk3MTksIDI5NzI0LCAyOTczMCwgMjk3MzYsIDI5NzQyLCAyOTc0NywgMjk3NTMsIDI5NzU4LCAyOTc2NSwgMjk3NzEsIAotICAgIDI5Nzc2LCAyOTc4MiwgMjk3ODgsIDI5Nzk0LCAyOTgwMSwgMjk4MDgsIDI5ODE1LCAyOTgyMCwgMjk4MjUsIDI5ODMyLCAKLSAgICAyOTgzOSwgMjk4NDYsIDI5ODUzLCAyOTg2MCwgMCwgMCwgMjk4NjcsIDI5ODc0LCAyOTg4MSwgMjk4ODcsIDI5ODkzLCAKLSAgICAyOTg5OSwgMjk5MDUsIDI5OTExLCAyOTkxNywgMjk5MjMsIDI5OTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAyOTkzNSwgMjk5NDEsIAotICAgIDI5OTQ2LCAyOTk1MSwgMjk5NTYsIDI5OTYxLCAyOTk2NiwgMjk5NzEsIDI5OTc2LCAyOTk4MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjk5ODYsIDI5OTkxLCAyOTk5NiwgMzAwMDEsIDMwMDA2LCAzMDAxMSwgMzAwMTYsIDMwMDI1LCAzMDAzMiwgMzAwMzcsIAotICAgIDMwMDQyLCAzMDA0NywgMzAwNTIsIDMwMDU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDA2MiwgMzAwNjgsIAotICAgIDMwMDc0LCAzMDA3OCwgMzAwODIsIDMwMDg2LCAzMDA5MCwgMzAwOTYsIDMwMTAwLCAzMDEwNiwgMzAxMTAsIDMwMTE2LCAKLSAgICAzMDEyMiwgMzAxMzAsIDMwMTM2LCAzMDE0NCwgMzAxNDgsIDMwMTUyLCAzMDE1NiwgMzAxNjIsIDMwMTY1LCAzMDE3MSwgCi0gICAgMzAxNzUsIDMwMTgxLCAzMDE4NSwgMzAxODksIDMwMTk1LCAzMDE5OSwgMzAyMDUsIDMwMjA5LCAzMDIxNSwgMzAyMjMsIAotICAgIDMwMjMxLCAzMDIzOSwgMzAyNDUsIDMwMjQ5LCAzMDI1NSwgMzAyNTksIDMwMjY1LCAzMDI2OCwgMzAyNzEsIDMwMjc3LCAKLSAgICAzMDI4MSwgMzAyODcsIDMwMjkwLCAzMDI5MywgMzAyOTYsIDMwMzAwLCAzMDMwNCwgMzAzMTAsIDMwMzE2LCAzMDMyMCwgCi0gICAgMzAzMjMsIDMwMzI3LCAzMDMzMiwgMzAzMzcsIDMwMzQ0LCAzMDM0OSwgMzAzNTYsIDMwMzYzLCAzMDM3MiwgMzAzNzksIAotICAgIDMwMzg4LCAzMDM5MywgMzA0MDAsIDMwNDA3LCAzMDQxNiwgMzA0MjEsIDMwNDI4LCAzMDQzMywgMzA0MzksIDMwNDQ1LCAKLSAgICAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OSwgMCwgMCwgMCwgMCwgMzA0NzUsIDMwNDc5LCAzMDQ4MiwgMzA0ODUsIAotICAgIDMwNDg4LCAzMDQ5MSwgMzA0OTQsIDMwNDk3LCAzMDUwMCwgMzA1MDMsIDMwNTA2LCAzMDUwOSwgMzA1MTIsIDMwNTE1LCAKLSAgICAzMDUyMCwgMzA1MjUsIDMwNTMwLCAzMDUzMywgMzA1MzgsIDMwNTQzLCAzMDU0OCwgMzA1NTMsIDMwNTYwLCAzMDU2NSwgCi0gICAgMzA1NzAsIDMwNTc1LCAzMDU4MCwgMzA1ODcsIDMwNTkzLCAzMDU5OSwgMzA2MDUsIDMwNjExLCAzMDYxNywgMzA2MjYsIAotICAgIDMwNjM1LCAzMDY0MSwgMzA2NDcsIDMwNjU2LCAzMDY2NSwgMzA2NzQsIDMwNjgzLCAzMDY5MiwgMzA3MDEsIDMwNzEwLCAKLSAgICAzMDcxOSwgMCwgMCwgMCwgMzA3MjgsIDMwNzMzLCAzMDczOCwgMzA3NDMsIDMwNzQ3LCAzMDc1MSwgMzA3NTUsIDMwNzYwLCAKLSAgICAzMDc2NCwgMzA3NjgsIDMwNzczLCAzMDc3NywgMzA3ODIsIDMwNzg3LCAzMDc5MiwgMzA3OTcsIDMwODAyLCAzMDgwNywgCi0gICAgMzA4MTIsIDMwODE3LCAzMDgyMiwgMzA4MjYsIDMwODMwLCAzMDgzNSwgMzA4NDAsIDMwODQ1LCAzMDg0OSwgMzA4NTMsIAotICAgIDMwODU3LCAzMDg2MiwgMzA4NjcsIDMwODcyLCAzMDg3NywgMzA4ODEsIDMwODg4LCAzMDg5NSwgMzA5MDIsIDMwOTA4LCAKLSAgICAzMDkxNCwgMzA5MjAsIDMwOTI2LCAzMDkzMiwgMzA5MzgsIDAsIDAsIDAsIDMwOTQzLCAzMDk0OCwgMzA5NTMsIDMwOTU4LCAKLSAgICAzMDk2MiwgMzA5NjYsIDMwOTcwLCAzMDk3NCwgMzA5NzgsIDMwOTgyLCAzMDk4NiwgMzA5OTAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwOTk0LCAzMDk5OCwgMzEwMDQsIDMxMDA4LCAzMTAxNCwgMzEwMjAsIDMxMDI1LCAzMTAzMiwgMzEwMzYsIDMxMDQyLCAKLSAgICAzMTA0NiwgMzEwNTIsIDMxMDU3LCAzMTA2NCwgMzEwNzEsIDMxMDc2LCAzMTA4MywgMzEwODgsIDMxMDkzLCAzMTA5NywgCi0gICAgMzExMDMsIDMxMTA3LCAzMTExMywgMzExMjAsIDMxMTI3LCAzMTEzMiwgMzExMzksIDMxMTQ2LCAzMTE1MCwgMzExNTYsIAotICAgIDMxMTYxLCAzMTE2NiwgMzExNzMsIDMxMTc4LCAzMTE4MywgMzExODgsIDMxMTkzLCAzMTE5NywgMzEyMDEsIDMxMjA2LCAKLSAgICAzMTIxMSwgMzEyMTgsIDMxMjI0LCAzMTIyOSwgMzEyMzYsIDMxMjQxLCAzMTI0OCwgMzEyNTMsIDMxMjYzLCAzMTI3MCwgCi0gICAgMzEyNzcsIDMxMjgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTI4NSwgMzEyOTQsIDMxMzAxLCAzMTMwOCwgMzEzMTUsIAotICAgIDMxMzE4LCAzMTMyMiwgMzEzMjYsIDMxMzMwLCAzMTMzNCwgMzEzMzgsIDMxMzQyLCAzMTM0NiwgMzEzNTAsIDMxMzU0LCAKLSAgICAzMTM1OCwgMzEzNjIsIDMxMzY2LCAzMTM2OSwgMzEzNzIsIDMxMzc2LCAzMTM4MCwgMzEzODQsIDMxMzg4LCAzMTM5MiwgCi0gICAgMzEzOTYsIDMxMzk5LCAzMTQwMywgMzE0MDcsIDMxNDExLCAzMTQxNSwgMzE0MTgsIDMxNDIxLCAzMTQyNSwgMzE0MjgsIAotICAgIDMxNDMyLCAzMTQzNiwgMzE0NDAsIDMxNDQ0LCAzMTQ0OCwgMzE0NTEsIDMxNDU2LCAzMTQ2MSwgMzE0NjYsIDMxNDcwLCAKLSAgICAzMTQ3NCwgMzE0NzksIDMxNDgzLCAzMTQ4OCwgMzE0OTIsIDMxNDk4LCAzMTUwMywgMzE1MDgsIDMxNTEzLCAzMTUxOSwgCi0gICAgMzE1MjQsIDMxNTMwLCAzMTUzNiwgMzE1NDIsIDMxNTQ2LCAwLCAwLCAwLCAzMTU1MCwgMzE1NTUsIDMxNTY0LCAzMTU2OSwgCi0gICAgMzE1NzYsIDMxNTgxLCAzMTU4NSwgMzE1ODgsIDMxNTkxLCAzMTU5NCwgMzE1OTcsIDMxNjAwLCAzMTYwMywgMzE2MDYsIAotICAgIDMxNjA5LCAwLCAwLCAwLCAzMTYxMiwgMzE2MTYsIDMxNjIwLCAzMTYyNCwgMzE2MzEsIDMxNjM3LCAzMTY0MywgMzE2NDksIAotICAgIDMxNjU1LCAzMTY2MSwgMzE2NjcsIDMxNjczLCAzMTY3OSwgMzE2ODUsIDMxNjkyLCAzMTY5OSwgMzE3MDYsIDMxNzEzLCAKLSAgICAzMTcyMCwgMzE3MjcsIDMxNzM0LCAzMTc0MSwgMzE3NDgsIDMxNzU1LCAzMTc2MiwgMzE3NjksIDMxNzc2LCAzMTc4MywgCi0gICAgMzE3OTAsIDMxNzk3LCAzMTgwNCwgMzE4MTEsIDMxODE4LCAzMTgyNSwgMzE4MzIsIDMxODM5LCAzMTg0NiwgMzE4NTMsIAotICAgIDMxODYwLCAzMTg2NywgMzE4NzQsIDMxODgxLCAzMTg4OCwgMzE4OTUsIDMxOTAzLCAzMTkxMSwgMzE5MTksIDMxOTI1LCAKLSAgICAzMTkzMSwgMzE5MzcsIDMxOTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTk1NCwgMzE5NTksIDMxOTY0LCAzMTk2OSwgCi0gICAgMzE5NzQsIDMxOTgzLCAzMTk5NCwgMzIwMDMsIDMyMDE0LCAzMjAyMCwgMzIwMzMsIDMyMDM5LCAzMjA0NiwgMzIwNTMsIAotICAgIDMyMDU4LCAzMjA2NCwgMzIwNzAsIDMyMDgxLCAzMjA5MCwgMzIwOTcsIDMyMTA0LCAzMjExMywgMzIxMjAsIDMyMTI5LCAKLSAgICAzMjEzOSwgMzIxNDksIDMyMTU2LCAzMjE2MywgMzIxNzAsIDMyMTgwLCAzMjE4NSwgMzIxOTMsIDMyMTk5LCAzMjIwNywgCi0gICAgMzIyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMjIxLCAzMjIyNiwgMzIyMzIsIDMyMjM5LCAKLSAgICAzMjI0NywgMzIyNTMsIDMyMjU5LCAzMjI2NSwgMzIyNzAsIDMyMjc4LCAzMjI4NCwgMzIyOTAsIDMyMjk2LCAzMjMwNCwgCi0gICAgMzIzMDksIDMyMzE2LCAzMjMyMSwgMzIzMjgsIDMyMzM0LCAzMjM0MiwgMzIzNTAsIDMyMzU3LCAzMjM2MywgMzIzNzAsIAotICAgIDMyMzc3LCAzMjM4MywgMzIzOTAsIDMyMzk3LCAzMjQwMywgMzI0MDgsIDMyNDE0LCAzMjQyMiwgMzI0MzAsIDMyNDM2LCAKLSAgICAzMjQ0MiwgMzI0NDgsIDMyNDU0LCAzMjQ2MiwgMzI0NjYsIDMyNDcyLCAzMjQ3OCwgMzI0ODQsIDMyNDkwLCAzMjQ5NiwgCi0gICAgMzI1MDIsIDMyNTA2LCAzMjUxMSwgMzI1MTYsIDMyNTIzLCAzMjUyOCwgMzI1MzIsIDMyNTM4LCAzMjU0MywgMzI1NDgsIAotICAgIDMyNTUyLCAzMjU1NywgMzI1NjIsIDMyNTY2LCAzMjU3MCwgMzI1NzQsIDMyNTgwLCAzMjU4NCwgMzI1ODksIDMyNTk0LCAKLSAgICAzMjU5OCwgMzI2MDMsIDMyNjA3LCAzMjYxMiwgMzI2MTYsIDMyNjIyLCAzMjYyNywgMzI2MzQsIDMyNjM5LCAzMjY0NCwgCi0gICAgMzI2NDgsIDMyNjUzLCAzMjY1OSwgMzI2NjcsIDMyNjcyLCAzMjY3OCwgMzI2ODMsIDMyNjg3LCAzMjY5MiwgMzI2OTYsIAotICAgIDMyNzAyLCAzMjcwOSwgMzI3MTYsIDMyNzIxLCAzMjcyNiwgMzI3MzAsIDMyNzM2LCAzMjc0MiwgMzI3NDcsIDMyNzUyLCAKLSAgICAzMjc1NywgMzI3NjMsIDMyNzY4LCAzMjc3NCwgMzI3NzksIDMyNzg1LCAzMjc5MSwgMzI3OTcsIDMyODA0LCAzMjgxMSwgCi0gICAgMzI4MTgsIDMyODI1LCAzMjgzMiwgMzI4MzksIDMyODQ0LCAzMjg1MywgMzI4NjMsIDMyODczLCAzMjg4MywgMzI4OTMsIAotICAgIDMyOTAzLCAzMjkxMywgMzI5MjYsIDMyOTM2LCAzMjk0NiwgMzI5NTYsIDMyOTYzLCAzMjk2OCwgMzI5NzUsIDMyOTgzLCAKLSAgICAzMjk5MSwgMzI5OTgsIDMzMDA1LCAzMzAxMiwgMzMwMTksIDMzMDI3LCAzMzAzNiwgMzMwNDUsIDMzMDU0LCAzMzA2MywgCi0gICAgMzMwNzIsIDMzMDgxLCAzMzA5MCwgMzMwOTksIDMzMTA4LCAzMzExNywgMzMxMjYsIDMzMTM1LCAzMzE0NCwgMzMxNTMsIAotICAgIDMzMTYxLCAzMzE3MCwgMzMxODEsIDMzMTg5LCAzMzE5OSwgMzMyMTEsIDMzMjIwLCAzMzIyOSwgMzMyMzksIDMzMjQ4LCAKLSAgICAzMzI1NiwgMzMyNjUsIDMzMjcyLCAzMzI3NywgMzMyODUsIDMzMjkwLCAzMzI5OCwgMzMzMDMsIDMzMzEyLCAzMzMxOCwgCi0gICAgMzMzMjUsIDMzMzMyLCAzMzMzNywgMzMzNDIsIDMzMzUwLCAzMzM1OCwgMzMzNjcsIDMzMzc2LCAzMzM4MSwgMzMzODgsIAotICAgIDMzMzk5LCAzMzQwNywgMzM0MTYsIDMzNDIxLCAzMzQyNywgMzM0MzIsIDMzNDM5LCAzMzQ0NCwgMzM0NTMsIDMzNDU4LCAKLSAgICAzMzQ2MywgMzM0NjgsIDMzNDc1LCAzMzQ4MiwgMzM0ODcsIDMzNDk2LCAzMzUwNCwgMzM1MDksIDMzNTE0LCAzMzUyMSwgCi0gICAgMzM1MjgsIDMzNTMyLCAzMzUzNiwgMzM1MzksIDMzNTQyLCAzMzU0NSwgMzM1NDgsIDMzNTUxLCAzMzU1NCwgMzM1NjEsIAotICAgIDMzNTY0LCAzMzU2NywgMzM1NzIsIDMzNTc2LCAzMzU4MCwgMzM1ODQsIDMzNTg4LCAzMzU5MiwgMzM2MDIsIDMzNjA4LCAKLSAgICAzMzYxNCwgMzM2MjAsIDMzNjI4LCAzMzYzNiwgMzM2NDIsIDMzNjQ4LCAzMzY1NSwgMzM2NjEsIDMzNjY2LCAzMzY3MiwgCi0gICAgMzM2NzgsIDMzNjgzLCAzMzY4OSwgMzM2OTUsIDMzNzAzLCAzMzcwOCwgMzM3MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNzIwLCAzMzcyNywgMzM3MzQsIDMzNzM5LCAzMzc0OCwgCi0gICAgMzM3NTYsIDMzNzY0LCAzMzc3MSwgMzM3NzgsIDMzNzg1LCAzMzc5MiwgMzM4MDAsIDMzODA4LCAzMzgxOCwgMzM4MjgsIAotICAgIDMzODM2LCAzMzg0NCwgMzM4NTIsIDMzODYwLCAzMzg2OSwgMzM4NzgsIDMzODg2LCAzMzg5NCwgMzM5MDMsIDMzOTEyLCAKLSAgICAzMzkyMiwgMzM5MzIsIDMzOTQxLCAzMzk1MCwgMzM5NTgsIDMzOTY2LCAzMzk3NCwgMzM5ODIsIDMzOTkyLCAzNDAwMiwgCi0gICAgMzQwMTAsIDM0MDE4LCAzNDAyNiwgMzQwMzQsIDM0MDQyLCAzNDA1MCwgMzQwNTgsIDM0MDY2LCAzNDA3NCwgMzQwODIsIAotICAgIDM0MDkwLCAzNDA5OCwgMzQxMDcsIDM0MTE2LCAzNDEyNSwgMzQxMzQsIDM0MTQ0LCAzNDE1NCwgMzQxNjEsIDM0MTY4LCAKLSAgICAzNDE3NiwgMzQxODQsIDM0MTkzLCAzNDIwMiwgMzQyMTAsIDM0MjE4LCAzNDIzMCwgMzQyNDIsIDM0MjUxLCAzNDI2MCwgCi0gICAgMzQyNjksIDM0Mjc4LCAzNDI4NSwgMzQyOTIsIDM0MzAwLCAzNDMwOCwgMzQzMTYsIDM0MzI0LCAzNDMzMiwgMzQzNDAsIAotICAgIDM0MzQ4LCAzNDM1NiwgMzQzNjUsIDM0Mzc0LCAzNDM4MywgMzQzOTIsIDM0NDAxLCAzNDQxMCwgMzQ0MjAsIDM0NDMwLCAKLSAgICAzNDQ0MCwgMzQ0NTAsIDM0NDU5LCAzNDQ2OCwgMzQ0NzUsIDM0NDgyLCAzNDQ5MCwgMzQ0OTgsIDM0NTA2LCAzNDUxNCwgCi0gICAgMzQ1MjIsIDM0NTMwLCAzNDU0MiwgMzQ1NTQsIDM0NTYzLCAzNDU3MiwgMzQ1ODAsIDM0NTg4LCAzNDU5NiwgMzQ2MDQsIAotICAgIDM0NjE1LCAzNDYyNiwgMzQ2MzcsIDM0NjQ4LCAzNDY2MCwgMzQ2NzIsIDM0NjgwLCAzNDY4OCwgMzQ2OTYsIDM0NzA0LCAKLSAgICAzNDcxMywgMzQ3MjIsIDM0NzMxLCAzNDc0MCwgMzQ3NDgsIDM0NzU2LCAzNDc2NCwgMzQ3NzIsIDM0NzgwLCAzNDc4OCwgCi0gICAgMzQ3OTcsIDM0ODA2LCAzNDgxNiwgMzQ4MjYsIDM0ODM0LCAzNDg0MiwgMzQ4NTAsIDM0ODU4LCAzNDg2NiwgMzQ4NzQsIAotICAgIDM0ODgxLCAzNDg4OCwgMzQ4OTYsIDM0OTA0LCAzNDkxMiwgMzQ5MjAsIDM0OTI4LCAzNDkzNiwgMzQ5NDQsIDM0OTUyLCAKLSAgICAzNDk2MCwgMzQ5NjgsIDM0OTc2LCAzNDk4NCwgMzQ5OTIsIDM1MDAwLCAzNTAwOCwgMzUwMTYsIDM1MDI1LCAzNTAzNCwgCi0gICAgMzUwNDMsIDM1MDUxLCAzNTA2MCwgMzUwNjksIDM1MDc4LCAzNTA4NywgMzUwOTcsIDM1MTA2LCAzNTExMiwgMzUxMTcsIAotICAgIDM1MTI0LCAzNTEzMSwgMzUxMzksIDM1MTQ3LCAzNTE1NiwgMzUxNjUsIDM1MTc1LCAzNTE4NSwgMzUxOTYsIDM1MjA3LCAKLSAgICAzNTIxNywgMzUyMjcsIDM1MjM3LCAzNTI0NywgMzUyNTYsIDM1MjY1LCAzNTI3NSwgMzUyODUsIDM1Mjk2LCAzNTMwNywgCi0gICAgMzUzMTcsIDM1MzI3LCAzNTMzNywgMzUzNDcsIDM1MzU0LCAzNTM2MSwgMzUzNjksIDM1Mzc3LCAzNTM4NCwgMzUzOTEsIAotICAgIDM1NDAwLCAzNTQwOSwgMzU0MTksIDM1NDI5LCAzNTQ0MCwgMzU0NTEsIDM1NDYxLCAzNTQ3MSwgMzU0ODEsIDM1NDkxLCAKLSAgICAzNTUwMCwgMzU1MDksIDM1NTE3LCAzNTUyNSwgMzU1MzIsIDM1NTM5LCAzNTU0NywgMzU1NTUsIDM1NTY0LCAzNTU3MywgCi0gICAgMzU1ODMsIDM1NTkzLCAzNTYwNCwgMzU2MTUsIDM1NjI1LCAzNTYzNSwgMzU2NDUsIDM1NjU1LCAzNTY2NCwgMzU2NzMsIAotICAgIDM1NjgzLCAzNTY5MywgMzU3MDQsIDM1NzE1LCAzNTcyNSwgMzU3MzUsIDM1NzQ1LCAzNTc1NSwgMzU3NjIsIDM1NzY5LCAKLSAgICAzNTc3NywgMzU3ODUsIDM1Nzk0LCAzNTgwMywgMzU4MTMsIDM1ODIzLCAzNTgzNCwgMzU4NDUsIDM1ODU1LCAzNTg2NSwgCi0gICAgMzU4NzUsIDM1ODg1LCAzNTg5MywgMzU5MDEsIDM1OTA5LCAzNTkxNywgMzU5MjYsIDM1OTM1LCAzNTk0MywgMzU5NTEsIAotICAgIDM1OTU4LCAzNTk2NSwgMzU5NzIsIDM1OTc5LCAzNTk4NywgMzU5OTUsIDM2MDAzLCAzNjAxMSwgMzYwMjIsIDM2MDMyLCAKLSAgICAzNjA0MywgMzYwNTMsIDM2MDY0LCAzNjA3NCwgMzYwODIsIDM2MDkwLCAzNjEwMSwgMzYxMTEsIDM2MTIyLCAzNjEzMiwgCi0gICAgMzYxNDMsIDM2MTUzLCAzNjE2MSwgMzYxNjksIDM2MTgwLCAzNjE5MCwgMzYyMDEsIDAsIDAsIDM2MjExLCAzNjIxOSwgCi0gICAgMzYyMjcsIDM2MjM4LCAzNjI0OCwgMzYyNTksIDAsIDAsIDM2MjY5LCAzNjI3NywgMzYyODUsIDM2Mjk2LCAzNjMwNiwgCi0gICAgMzYzMTcsIDM2MzI3LCAzNjMzOCwgMzYzNDgsIDM2MzU2LCAzNjM2NCwgMzYzNzUsIDM2Mzg1LCAzNjM5NiwgMzY0MDYsIAotICAgIDM2NDE3LCAzNjQyNywgMzY0MzUsIDM2NDQzLCAzNjQ1NCwgMzY0NjQsIDM2NDc1LCAzNjQ4NSwgMzY0OTYsIDM2NTA2LCAKLSAgICAzNjUxNCwgMzY1MjIsIDM2NTMzLCAzNjU0MywgMzY1NTQsIDM2NTY0LCAzNjU3NSwgMzY1ODUsIDM2NTkzLCAzNjYwMSwgCi0gICAgMzY2MTIsIDM2NjIyLCAzNjYzMywgMCwgMCwgMzY2NDMsIDM2NjUxLCAzNjY1OSwgMzY2NzAsIDM2NjgwLCAzNjY5MSwgMCwgCi0gICAgMCwgMzY3MDEsIDM2NzA5LCAzNjcxNywgMzY3MjgsIDM2NzM4LCAzNjc0OSwgMzY3NTksIDM2NzcwLCAwLCAzNjc4MCwgMCwgCi0gICAgMzY3ODgsIDAsIDM2Nzk4LCAwLCAzNjgwOCwgMzY4MTgsIDM2ODI2LCAzNjgzNCwgMzY4NDUsIDM2ODU1LCAzNjg2NiwgCi0gICAgMzY4NzYsIDM2ODg3LCAzNjg5NywgMzY5MDUsIDM2OTEzLCAzNjkyNCwgMzY5MzQsIDM2OTQ1LCAzNjk1NSwgMzY5NjYsIAotICAgIDM2OTc2LCAzNjk4NCwgMzY5OTIsIDM3MDAwLCAzNzAwOCwgMzcwMTYsIDM3MDI0LCAzNzAzMiwgMzcwNDAsIDM3MDQ4LCAKLSAgICAzNzA1NiwgMzcwNjQsIDM3MDcyLCAzNzA4MCwgMCwgMCwgMzcwODgsIDM3MDk5LCAzNzEwOSwgMzcxMjMsIDM3MTM2LCAKLSAgICAzNzE1MCwgMzcxNjMsIDM3MTc3LCAzNzE5MCwgMzcyMDEsIDM3MjExLCAzNzIyNSwgMzcyMzgsIDM3MjUyLCAzNzI2NSwgCi0gICAgMzcyNzksIDM3MjkyLCAzNzMwMywgMzczMTMsIDM3MzI3LCAzNzM0MCwgMzczNTQsIDM3MzY3LCAzNzM4MSwgMzczOTQsIAotICAgIDM3NDA1LCAzNzQxNSwgMzc0MjksIDM3NDQyLCAzNzQ1NiwgMzc0NjksIDM3NDgzLCAzNzQ5NiwgMzc1MDcsIDM3NTE3LCAKLSAgICAzNzUzMSwgMzc1NDQsIDM3NTU4LCAzNzU3MSwgMzc1ODUsIDM3NTk4LCAzNzYwOSwgMzc2MTksIDM3NjMzLCAzNzY0NiwgCi0gICAgMzc2NjAsIDM3NjczLCAzNzY4NywgMzc3MDAsIDM3NzA4LCAzNzcxNiwgMzc3MjcsIDM3NzM1LCAwLCAzNzc0NiwgMzc3NTQsIAotICAgIDM3NzY1LCAzNzc3MywgMzc3ODEsIDM3Nzg5LCAzNzc5NywgMzc4MDUsIDM3ODA4LCAzNzgxMSwgMzc4MTQsIDM3ODE3LCAKLSAgICAzNzgyMywgMzc4MzQsIDM3ODQyLCAwLCAzNzg1MywgMzc4NjEsIDM3ODcyLCAzNzg4MCwgMzc4ODgsIDM3ODk2LCAzNzkwNCwgCi0gICAgMzc5MTIsIDM3OTE4LCAzNzkyNCwgMzc5MzAsIDM3OTM4LCAzNzk0NiwgMzc5NTcsIDAsIDAsIDM3OTY4LCAzNzk3NiwgCi0gICAgMzc5ODcsIDM3OTk1LCAzODAwMywgMzgwMTEsIDAsIDM4MDE5LCAzODAyNCwgMzgwMjksIDM4MDM0LCAzODA0MiwgMzgwNTAsIAotICAgIDM4MDYxLCAzODA3MiwgMzgwODAsIDM4MDg4LCAzODA5NiwgMzgxMDcsIDM4MTE1LCAzODEyMywgMzgxMzEsIDM4MTM5LCAKLSAgICAzODE0NywgMzgxNTMsIDM4MTU5LCAwLCAwLCAzODE2MiwgMzgxNzMsIDM4MTgxLCAwLCAzODE5MiwgMzgyMDAsIDM4MjExLCAKLSAgICAzODIxOSwgMzgyMjcsIDM4MjM1LCAzODI0MywgMzgyNTEsIDM4MjU0LCAwLCAzODI1NywgMzgyNjEsIDM4MjY1LCAzODI2OSwgCi0gICAgMzgyNzMsIDM4Mjc3LCAzODI4MSwgMzgyODUsIDM4Mjg5LCAzODI5MywgMzgyOTcsIDM4MzAxLCAzODMwNywgMzgzMTMsIAotICAgIDM4MzE5LCAzODMyMiwgMzgzMjUsIDM4MzI3LCAzODMzMSwgMzgzMzUsIDM4MzM5LCAzODM0MywgMzgzNDUsIDM4MzQ5LCAKLSAgICAzODM1MywgMzgzNTksIDM4MzY1LCAzODM3MiwgMzgzNzksIDM4Mzg0LCAzODM4OSwgMzgzOTUsIDM4NDAxLCAzODQwMywgCi0gICAgMzg0MDYsIDM4NDA4LCAzODQxMiwgMzg0MTYsIDM4NDIwLCAzODQyMywgMzg0MjcsIDM4NDMxLCAzODQzNSwgMzg0MzksIAotICAgIDM4NDQzLCAzODQ0OSwgMzg0NTMsIDM4NDU3LCAzODQ2MywgMzg0NjgsIDM4NDc1LCAzODQ3NywgMzg0ODAsIDM4NDg0LCAKLSAgICAzODQ4OCwgMzg0OTMsIDM4NDk5LCAzODUwMSwgMzg1MTAsIDM4NTE5LCAzODUyMiwgMzg1MjYsIDM4NTI4LCAzODUzMCwgCi0gICAgMzg1MzIsIDM4NTM1LCAzODU0MSwgMzg1NDMsIDM4NTQ3LCAzODU1MSwgMzg1NTgsIDM4NTY1LCAzODU2OSwgMzg1NzQsIAotICAgIDM4NTc5LCAzODU4NCwgMzg1ODksIDM4NTkzLCAzODU5NywgMzg2MDAsIDM4NjA0LCAzODYwOCwgMzg2MTUsIDM4NjIwLCAKLSAgICAzODYyNCwgMzg2MjgsIDM4NjMzLCAzODYzNywgMzg2NDEsIDM4NjQ2LCAzODY1MSwgMzg2NTUsIDM4NjU5LCAzODY2MywgCi0gICAgMzg2NjUsIDM4NjcwLCAzODY3NSwgMzg2NzksIDM4NjgzLCAzODY4NywgMzg2OTEsIDAsIDAsIDAsIDAsIDAsIDM4Njk1LCAKLSAgICAzODcwMSwgMzg3MDcsIDM4NzE0LCAzODcyMSwgMzg3MjYsIDM4NzMxLCAzODczNSwgMCwgMCwgMzg3NDEsIDM4NzQ0LCAKLSAgICAzODc0NywgMzg3NTAsIDM4NzUzLCAzODc1NiwgMzg3NTksIDM4NzYzLCAzODc2NywgMzg3NzIsIDM4Nzc3LCAzODc4MiwgCi0gICAgMzg3ODgsIDM4NzkyLCAzODc5NSwgMzg3OTgsIDM4ODAxLCAzODgwNCwgMzg4MDcsIDM4ODEwLCAzODgxMywgMzg4MTYsIAotICAgIDM4ODE5LCAzODgyMywgMzg4MjcsIDM4ODMyLCAzODgzNywgMCwgMzg4NDIsIDM4ODQ4LCAzODg1NCwgMzg4NjAsIDM4ODY3LCAKLSAgICAzODg3NCwgMzg4ODEsIDM4ODg4LCAzODg5NCwgMzg5MDAsIDM4OTA2LCAzODkxMywgMzg5MTksIDAsIDAsIDAsIDM4OTI2LCAKLSAgICAzODkyOSwgMzg5MzIsIDM4OTM1LCAzODk0MCwgMzg5NDMsIDM4OTQ2LCAzODk0OSwgMzg5NTIsIDM4OTU1LCAzODk1OCwgCi0gICAgMzg5NjIsIDM4OTY1LCAzODk2OCwgMzg5NzEsIDM4OTc0LCAzODk3NywgMzg5ODIsIDM4OTg1LCAzODk4OCwgMzg5OTEsIAotICAgIDM4OTk0LCAzODk5NywgMzkwMDIsIDM5MDA1LCAzOTAwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkwMTMsIDM5MDE4LCAzOTAyMywgMzkwMzAsIDM5MDM4LCAzOTA0MywgCi0gICAgMzkwNDgsIDM5MDUyLCAzOTA1NiwgMzkwNjEsIDM5MDY4LCAzOTA3NSwgMzkwNzksIDM5MDg0LCAzOTA4OSwgMzkwOTQsIAotICAgIDM5MDk5LCAzOTEwNiwgMzkxMTEsIDM5MTE2LCAzOTEyMSwgMzkxMzAsIDM5MTM3LCAzOTE0NCwgMzkxNDgsIDM5MTUzLCAKLSAgICAzOTE1OSwgMzkxNjQsIDM5MTcxLCAzOTE3OSwgMzkxODcsIDM5MTkxLCAzOTE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxOTksIDM5MjAzLCAzOTIxMSwgMzkyMTUsIDM5MjE5LCAzOTIyNCwgMzkyMjgsIAotICAgIDM5MjMyLCAzOTIzNiwgMzkyMzgsIDM5MjQyLCAzOTI0NiwgMzkyNTAsIDM5MjU1LCAzOTI1OSwgMzkyNjMsIDM5MjcxLCAKLSAgICAzOTI3NCwgMzkyNzgsIDM5MjgxLCAzOTI4NCwgMzkyOTAsIDM5MjkzLCAzOTI5NiwgMzkzMDIsIDM5MzA2LCAzOTMxMCwgCi0gICAgMzkzMTQsIDM5MzE3LCAzOTMyMSwgMzkzMjQsIDM5MzI4LCAzOTMzMCwgMzkzMzMsIDM5MzM2LCAzOTM0MCwgMzkzNDIsIAotICAgIDM5MzQ2LCAzOTM0OSwgMzkzNTIsIDM5MzU3LCAzOTM2MiwgMzkzNjksIDM5MzcyLCAzOTM3NSwgMzkzNzksIDM5Mzg0LCAKLSAgICAzOTM4NywgMzkzOTAsIDM5MzkzLCAzOTM5NywgMzk0MDIsIDM5NDA1LCAzOTQwOCwgMzk0MTAsIDM5NDEzLCAzOTQxNiwgCi0gICAgMzk0MTksIDM5NDIzLCAzOTQyOCwgMzk0MzEsIDM5NDM1LCAzOTQzOSwgMzk0NDMsIDM5NDQ3LCAzOTQ1MiwgMzk0NTgsIAotICAgIDM5NDYzLCAzOTQ2OCwgMzk0NzQsIDM5NDc5LCAzOTQ4NCwgMzk0ODgsIDM5NDkyLCAzOTQ5NywgMzk1MDEsIDM5NTA1LCAKLSAgICAzOTUwOCwgMzk1MTAsIDM5NTE1LCAzOTUyMSwgMzk1MjgsIDM5NTM1LCAzOTU0MiwgMzk1NDksIDM5NTU2LCAzOTU2MywgCi0gICAgMzk1NzAsIDM5NTc3LCAzOTU4NSwgMzk1OTIsIDM5NjAwLCAzOTYwNywgMzk2MTQsIDM5NjIyLCAzOTYzMCwgMzk2MzUsIAotICAgIDM5NjQwLCAzOTY0NSwgMzk2NTAsIDM5NjU1LCAzOTY2MCwgMzk2NjUsIDM5NjcwLCAzOTY3NSwgMzk2ODAsIDM5Njg2LCAKLSAgICAzOTY5MiwgMzk2OTgsIDM5NzA0LCAzOTcxMSwgMzk3MTksIDM5NzI2LCAzOTczMiwgMzk3MzgsIDM5NzQ0LCAzOTc1MCwgCi0gICAgMzk3NTYsIDM5NzYyLCAzOTc2OCwgMzk3NzQsIDM5NzgwLCAzOTc4NywgMzk3OTQsIDM5ODAxLCAzOTgwOCwgMzk4MTYsIAotICAgIDM5ODI1LCAzOTgzMywgMzk4NDQsIDM5ODUyLCAzOTg2MCwgMzk4NjksIDM5ODc2LCAzOTg4NSwgMzk4OTQsIDM5OTAyLCAKLSAgICAzOTkxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMzk5MTksIDM5OTIxLCAzOTkyNCwgMzk5MjYsIDM5OTI5LCAzOTkzMiwgMzk5MzUsIAotICAgIDM5OTQwLCAzOTk0NSwgMzk5NTAsIDM5OTU1LCAzOTk1OSwgMzk5NjMsIDM5OTY3LCAzOTk3MSwgMzk5NzYsIDM5OTgyLCAKLSAgICAzOTk4NywgMzk5OTMsIDM5OTk4LCA0MDAwMywgNDAwMDgsIDQwMDE0LCA0MDAxOSwgNDAwMjUsIDQwMDMxLCA0MDAzNSwgCi0gICAgNDAwMzksIDQwMDQ0LCA0MDA0OSwgNDAwNTQsIDQwMDU5LCA0MDA2NCwgNDAwNzIsIDQwMDgwLCA0MDA4OCwgNDAwOTYsIAotICAgIDQwMTAzLCA0MDExMSwgNDAxMTgsIDQwMTI1LCA0MDEzNCwgNDAxNDYsIDQwMTUzLCA0MDE2MCwgNDAxNjcsIDQwMTc0LCAKLSAgICA0MDE4MiwgNDAxOTAsIDQwMTk3LCA0MDIwNCwgNDAyMTIsIDQwMjIwLCA0MDIyNSwgNDAyMzMsIDQwMjM4LCA0MDI0MywgCi0gICAgNDAyNDksIDQwMjU0LCA0MDI2MCwgNDAyNjcsIDQwMjc0LCA0MDI3OSwgNDAyODUsIDQwMjkwLCA0MDI5MywgNDAyOTcsIAotICAgIDQwMzAwLCA0MDMwNCwgNDAzMDgsIDQwMzEyLCA0MDMxOCwgNDAzMjQsIDQwMzMwLCA0MDMzNiwgNDAzNDAsIDQwMzQ0LCAKLSAgICA0MDM0OCwgNDAzNTIsIDQwMzU4LCA0MDM2NCwgNDAzNjgsIDQwMzczLCA0MDM3NywgNDAzODIsIDQwMzg3LCA0MDM5MiwgCi0gICAgNDAzOTUsIDQwMzk5LCA0MDQwMiwgNDA0MDYsIDQwNDEzLCA0MDQyMSwgNDA0MzIsIDQwNDQzLCA0MDQ0OCwgNDA0NTcsIAotICAgIDQwNDY0LCA0MDQ3MywgNDA0ODIsIDQwNDg2LCA0MDQ5MiwgNDA1MDAsIDQwNTA0LCA0MDUwOSwgNDA1MTQsIDQwNTIwLCAKLSAgICA0MDUyNiwgNDA1MzIsIDQwNTM5LCA0MDU0MywgNDA1NDcsIDQwNTUyLCA0MDU1NSwgNDA1NTcsIDQwNTYxLCA0MDU2NSwgCi0gICAgNDA1NzMsIDQwNTc3LCA0MDU3OSwgNDA1ODEsIDQwNTg1LCA0MDU5MywgNDA1OTgsIDQwNjA0LCA0MDYxNCwgNDA2MjEsIAotICAgIDQwNjI2LCA0MDYzMCwgNDA2MzQsIDQwNjM4LCA0MDY0MSwgNDA2NDQsIDQwNjQ3LCA0MDY1MSwgNDA2NTUsIDQwNjU5LCAKLSAgICA0MDY2MywgNDA2NjcsIDQwNjcwLCA0MDY3NCwgNDA2NzgsIDQwNjgxLCA0MDY4MywgNDA2ODYsIDQwNjg4LCA0MDY5MiwgCi0gICAgNDA2OTYsIDQwNjk4LCA0MDcwNCwgNDA3MDcsIDQwNzEyLCA0MDcxNiwgNDA3MjAsIDQwNzIyLCA0MDcyNCwgNDA3MjYsIAotICAgIDQwNzI5LCA0MDczMywgNDA3MzcsIDQwNzQxLCA0MDc0NSwgNDA3NDksIDQwNzU1LCA0MDc2MSwgNDA3NjMsIDQwNzY1LCAKLSAgICA0MDc2NywgNDA3NjksIDQwNzcyLCA0MDc3NCwgNDA3NzgsIDQwNzgwLCA0MDc4NCwgNDA3ODgsIDQwNzkzLCA0MDc5NywgCi0gICAgNDA4MDEsIDQwODA1LCA0MDgwOSwgNDA4MTMsIDQwODE5LCA0MDgyMywgNDA4MzMsIDQwODQzLCA0MDg0NywgNDA4NTMsIAotICAgIDQwODU5LCA0MDg2MywgNDA4NjcsIDQwODcwLCA0MDg3NSwgNDA4NzksIDQwODg1LCA0MDg4OSwgNDA5MDEsIDQwOTA5LCAKLSAgICA0MDkxMywgNDA5MTcsIDQwOTIzLCA0MDkyNywgNDA5MzAsIDQwOTMyLCA0MDkzNSwgNDA5MzksIDQwOTQzLCA0MDk1MCwgCi0gICAgNDA5NTQsIDQwOTU4LCA0MDk2MiwgNDA5NjUsIDQwOTcwLCA0MDk3NSwgNDA5ODAsIDQwOTg1LCA0MDk5MCwgNDA5OTUsIAotICAgIDQxMDAzLCA0MTAxMSwgNDEwMTUsIDQxMDE5LCA0MTAyMSwgNDEwMjYsIDQxMDMwLCA0MTAzNCwgNDEwNDIsIDQxMDUwLCAKLSAgICA0MTA1NiwgNDEwNjIsIDQxMDcxLCA0MTA4MCwgNDEwODUsIDQxMDkwLCA0MTA5OCwgNDExMDYsIDQxMTA4LCA0MTExMCwgCi0gICAgNDExMTUsIDQxMTIwLCA0MTEyNiwgNDExMzIsIDQxMTM4LCA0MTE0NCwgNDExNDgsIDQxMTUyLCA0MTE1OSwgNDExNjYsIAotICAgIDQxMTcyLCA0MTE3OCwgNDExODgsIDQxMTk4LCA0MTIwNiwgNDEyMTQsIDQxMjE2LCA0MTIyMCwgNDEyMjQsIDQxMjI5LCAKLSAgICA0MTIzNCwgNDEyNDEsIDQxMjQ4LCA0MTI1MSwgNDEyNTQsIDQxMjU3LCA0MTI2MCwgNDEyNjMsIDQxMjY4LCA0MTI3MiwgCi0gICAgNDEyNzcsIDQxMjgyLCA0MTI4NSwgNDEyODgsIDQxMjkxLCA0MTI5NCwgNDEyOTcsIDQxMzAxLCA0MTMwNCwgNDEzMDcsIAotICAgIDQxMzEwLCA0MTMxMywgNDEzMTUsIDQxMzE3LCA0MTMxOSwgNDEzMjEsIDQxMzI5LCA0MTMzNywgNDEzNDMsIDQxMzQ3LCAKLSAgICA0MTM1MywgNDEzNjMsIDQxMzY5LCA0MTM3NSwgNDEzODEsIDQxMzg5LCA0MTM5NywgNDE0MDgsIDQxNDEyLCA0MTQxNiwgCi0gICAgNDE0MTgsIDQxNDI0LCA0MTQyNiwgNDE0MjgsIDQxNDMwLCA0MTQzMiwgNDE0MzgsIDQxNDQxLCA0MTQ0NywgNDE0NTMsIAotICAgIDQxNDU3LCA0MTQ2MSwgNDE0NjUsIDQxNDY4LCA0MTQ3MiwgNDE0NzYsIDQxNDc4LCA0MTQ4NywgNDE0OTYsIDQxNTAxLCAKLSAgICA0MTUwNiwgNDE1MTIsIDQxNTE4LCA0MTUyNCwgNDE1MjcsIDQxNTMwLCA0MTUzMywgNDE1MzYsIDQxNTM4LCA0MTU0MywgCi0gICAgNDE1NDgsIDQxNTUzLCA0MTU1OSwgNDE1NjUsIDQxNTczLCA0MTU4MSwgNDE1ODcsIDQxNTkzLCA0MTU5OSwgNDE2MDUsIAotICAgIDQxNjE0LCA0MTYyMywgNDE2MzIsIDQxNjQxLCA0MTY1MCwgNDE2NTksIDQxNjY4LCA0MTY3NywgNDE2ODYsIDQxNjk1LCAKLSAgICA0MTcwMywgNDE3MTUsIDQxNzI1LCA0MTc0MCwgNDE3NDMsIDQxNzQ4LCA0MTc1NCwgNDE3NjAsIDQxNzY3LCA0MTc4MSwgCi0gICAgNDE3OTYsIDQxODAyLCA0MTgwOCwgNDE4MTUsIDQxODIxLCA0MTgyOSwgNDE4MzUsIDQxODQ4LCA0MTg2MiwgNDE4NjcsIAotICAgIDQxODczLCA0MTg4MCwgNDE4ODMsIDQxODg2LCA0MTg4OCwgNDE4OTEsIDQxODk0LCA0MTg5NiwgNDE4OTgsIDQxOTAyLCAKLSAgICA0MTkwNSwgNDE5MDgsIDQxOTExLCA0MTkxNCwgNDE5MTksIDQxOTI0LCA0MTkyOSwgNDE5MzQsIDQxOTM5LCA0MTk0MiwgCi0gICAgNDE5NDQsIDQxOTQ2LCA0MTk0OCwgNDE5NTIsIDQxOTU2LCA0MTk2MCwgNDE5NjYsIDQxOTcxLCA0MTk3MywgNDE5NzUsIAotICAgIDQxOTgwLCA0MTk4NSwgNDE5OTAsIDQxOTk1LCA0MjAwMCwgNDIwMDUsIDQyMDA3LCA0MjAwOSwgNDIwMTgsIDQyMDIyLCAKLSAgICA0MjAzMCwgNDIwMzksIDQyMDQxLCA0MjA0NiwgNDIwNTEsIDQyMDU5LCA0MjA2MywgNDIwNjUsIDQyMDY5LCA0MjA3MSwgCi0gICAgNDIwNzUsIDQyMDc5LCA0MjA4MywgNDIwODUsIDQyMDg3LCA0MjA4OSwgNDIwOTQsIDQyMTAxLCA0MjEwOCwgNDIxMTUsIAotICAgIDQyMTIyLCA0MjEyOSwgNDIxMzYsIDQyMTQzLCA0MjE1MCwgNDIxNTYsIDQyMTYyLCA0MjE2OSwgNDIxNzYsIDQyMTgzLCAKLSAgICA0MjE5MCwgNDIxOTYsIDQyMjAyLCA0MjIwOSwgNDIyMTYsIDQyMjIzLCA0MjIzMSwgNDIyMzgsIDQyMjQ2LCA0MjI1MywgCi0gICAgNDIyNjEsIDQyMjY4LCA0MjI3NiwgNDIyODQsIDQyMjkxLCA0MjI5OSwgNDIzMDYsIDQyMzE0LCA0MjMyMSwgNDIzMjksIAotICAgIDQyMzM2LCA0MjM0MywgNDIzNTAsIDQyMzU3LCA0MjM2NCwgNDIzNzIsIDQyMzc5LCA0MjM4NiwgNDIzOTMsIDQyNDAxLCAKLSAgICA0MjQwOCwgNDI0MTUsIDQyNDIyLCA0MjQyOSwgNDI0MzcsIDQyNDQ1LCA0MjQ1MiwgNDI0NTksIDQyNDY1LCA0MjQ3MiwgCi0gICAgNDI0NzcsIDQyNDg0LCA0MjQ5MSwgNDI1MDAsIDQyNTA3LCA0MjUxNSwgNDI1MjMsIDQyNTI4LCA0MjUzMywgNDI1MzgsIAotICAgIDQyNTQ1LCA0MjU1MiwgNDI1NTksIDQyNTY2LCA0MjU3MSwgNDI1NzYsIDQyNTg1LCA0MjU5MSwgNDI1OTQsIDQyNjAyLCAKLSAgICA0MjYwNSwgNDI2MTAsIDQyNjE1LCA0MjYxOCwgNDI2MjEsIDQyNjI5LCA0MjYzMiwgNDI2MzcsIDQyNjQwLCA0MjY0NywgCi0gICAgNDI2NTIsIDQyNjYwLCA0MjY2MywgNDI2NjYsIDQyNjY5LCA0MjY3NCwgNDI2NzksIDQyNjgyLCA0MjY4NSwgNDI2OTMsIAotICAgIDQyNjk2LCA0MjcwMSwgNDI3MDgsIDQyNzEyLCA0MjcxNiwgNDI3MjEsIDQyNzI2LCA0MjczMiwgNDI3MzcsIDQyNzQzLCAKLSAgICA0Mjc0OSwgNDI3NTQsIDQyNzYwLCA0Mjc2OCwgNDI3NzQsIDQyNzgyLCA0Mjc5MCwgNDI3OTYsIDQyODA0LCA0MjgxMiwgCi0gICAgNDI4MjEsIDQyODI5LCA0MjgzNSwgNDI4NDMsIDQyODUyLCA0Mjg2MCwgNDI4NjQsIDQyODY5LCA0Mjg4MiwgNDI4OTUsIAotICAgIDQyODk5LCA0MjkwMywgNDI5MDcsIDQyOTExLCA0MjkyMSwgNDI5MjUsIDQyOTMwLCA0MjkzNSwgNDI5NDAsIDQyOTQ1LCAKLSAgICA0Mjk1MCwgNDI5NTUsIDQyOTY1LCA0Mjk3NSwgNDI5ODMsIDQyOTkzLCA0MzAwMywgNDMwMTEsIDQzMDIxLCA0MzAzMSwgCi0gICAgNDMwMzksIDQzMDQ5LCA0MzA1OSwgNDMwNjcsIDQzMDc1LCA0MzA4NSwgNDMwOTUsIDQzMDk4LCA0MzEwMSwgNDMxMDQsIAotICAgIDQzMTA5LCA0MzExMywgNDMxMTksIDQzMTI2LCA0MzEzMywgNDMxNDEsIDQzMTQ4LCA0MzE1MiwgNDMxNTYsIDQzMTYwLCAKLSAgICA0MzE2NCwgNDMxNjYsIDQzMTcwLCA0MzE3NCwgNDMxNzksIDQzMTg0LCA0MzE5MSwgNDMxOTgsIDQzMjAxLCA0MzIwOCwgCi0gICAgNDMyMTAsIDQzMjEyLCA0MzIxNiwgNDMyMjAsIDQzMjI1LCA0MzIzMSwgNDMyMzcsIDQzMjQzLCA0MzI0OSwgNDMyNTgsIAotICAgIDQzMjY3LCA0MzI3NiwgNDMyODAsIDQzMjgyLCA0MzI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDMyOTMsIDQzMjk3LCA0MzMwNCwgNDMzMTEsIDQzMzE4LCA0MzMyNSwgNDMzMjksIDQzMzMzLCA0MzMzNywgNDMzNDEsIAotICAgIDQzMzQ2LCA0MzM1MiwgNDMzNTcsIDQzMzYzLCA0MzM2OSwgNDMzNzUsIDQzMzgxLCA0MzM4OSwgNDMzOTYsIDQzNDAzLCAKLSAgICA0MzQxMCwgNDM0MTcsIDQzNDIyLCA0MzQyOCwgNDM0MzcsIDQzNDQxLCA0MzQ0OCwgNDM0NTIsIDQzNDU2LCA0MzQ2MiwgCi0gICAgNDM0NjgsIDQzNDc0LCA0MzQ4MCwgNDM0ODQsIDQzNDg4LCA0MzQ5MSwgNDM0OTUsIDQzNDk5LCA0MzUwNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1MTMsIAotICAgIDQzNTE2LCA0MzUyMCwgNDM1MjQsIDQzNTMwLCA0MzUzNiwgNDM1NDIsIDQzNTUwLCA0MzU1NywgNDM1NjEsIDQzNTY5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzU3NCwgNDM1NzcsIAotICAgIDQzNTgwLCA0MzU4MywgNDM1ODYsIDQzNTg5LCA0MzU5MiwgNDM1OTUsIDQzNTk4LCA0MzYwMSwgNDM2MDUsIDQzNjA5LCAKLSAgICA0MzYxMywgNDM2MTcsIDQzNjIxLCA0MzYyNSwgNDM2MjksIDQzNjMzLCA0MzYzNywgNDM2NDEsIDQzNjQ1LCA0MzY0OCwgCi0gICAgNDM2NTEsIDQzNjU0LCA0MzY1NywgNDM2NjAsIDQzNjYzLCA0MzY2NiwgNDM2NjksIDQzNjcyLCA0MzY3NiwgNDM2ODAsIAotICAgIDQzNjg0LCA0MzY4OCwgNDM2OTIsIDQzNjk2LCA0MzcwMCwgNDM3MDQsIDQzNzA4LCA0MzcxMiwgNDM3MTYsIDQzNzIyLCAKLSAgICA0MzcyOCwgNDM3MzQsIDQzNzQxLCA0Mzc0OCwgNDM3NTUsIDQzNzYyLCA0Mzc2OSwgNDM3NzYsIDQzNzgzLCA0Mzc5MCwgCi0gICAgNDM3OTcsIDQzODA0LCA0MzgxMSwgNDM4MTgsIDQzODI1LCA0MzgzMiwgNDM4MzksIDQzODQ2LCA0Mzg1MywgNDM4NTgsIAotICAgIDQzODY0LCA0Mzg3MCwgNDM4NzYsIDQzODgxLCA0Mzg4NywgNDM4OTMsIDQzODk5LCA0MzkwNCwgNDM5MTAsIDQzOTE2LCAKLSAgICA0MzkyMSwgNDM5MjYsIDQzOTMxLCA0MzkzNiwgNDM5NDIsIDQzOTQ4LCA0Mzk1MywgNDM5NTgsIDQzOTY0LCA0Mzk2OSwgCi0gICAgNDM5NzUsIDQzOTgxLCA0Mzk4NywgNDM5OTMsIDQzOTk5LCA0NDAwNCwgNDQwMTAsIDQ0MDE2LCA0NDAyMiwgNDQwMjcsIAotICAgIDQ0MDMzLCA0NDAzOSwgNDQwNDUsIDQ0MDUwLCA0NDA1NiwgNDQwNjIsIDQ0MDY3LCA0NDA3MiwgNDQwNzcsIDQ0MDgyLCAKLSAgICA0NDA4OCwgNDQwOTQsIDQ0MDk5LCA0NDEwNCwgNDQxMTAsIDQ0MTE1LCA0NDEyMSwgNDQxMjcsIDQ0MTMzLCA0NDEzOSwgCi0gICAgNDQxNDUsIDQ0MTUwLCA0NDE1NiwgNDQxNjIsIDQ0MTY4LCA0NDE3MywgNDQxNzksIDQ0MTg1LCA0NDE5MSwgNDQxOTYsIAotICAgIDQ0MjAyLCA0NDIwOCwgNDQyMTMsIDQ0MjE4LCA0NDIyMywgNDQyMjgsIDQ0MjM0LCA0NDI0MCwgNDQyNDUsIDQ0MjUwLCAKLSAgICA0NDI1NiwgNDQyNjEsIDQ0MjY3LCA0NDI3MywgNDQyNzksIDQ0Mjg1LCA0NDI5MSwgNDQyOTUsIDQ0MzAwLCA0NDMwNSwgCi0gICAgNDQzMTAsIDQ0MzE1LCA0NDMyMCwgNDQzMjUsIDQ0MzMwLCA0NDMzNSwgNDQzNDAsIDQ0MzQ1LCA0NDM0OSwgNDQzNTMsIAotICAgIDQ0MzU3LCA0NDM2MSwgNDQzNjUsIDQ0MzY5LCA0NDM3MywgNDQzNzcsIDQ0MzgxLCA0NDM4NiwgNDQzOTEsIDQ0Mzk2LCAKLSAgICA0NDQwMSwgNDQ0MDYsIDQ0NDExLCA0NDQyMCwgNDQ0MjksIDQ0NDM4LCA0NDQ0NywgNDQ0NTYsIDQ0NDY1LCA0NDQ3NCwgCi0gICAgNDQ0ODMsIDQ0NDkwLCA0NDQ5OCwgNDQ1MDYsIDQ0NTEzLCA0NDUyMCwgNDQ1MjgsIDQ0NTM2LCA0NDU0MywgNDQ1NTAsIAotICAgIDQ0NTU4LCA0NDU2NiwgNDQ1NzMsIDQ0NTgwLCA0NDU4OCwgNDQ1OTYsIDQ0NjAzLCA0NDYxMCwgNDQ2MTgsIDQ0NjI3LCAKLSAgICA0NDYzNiwgNDQ2NDQsIDQ0NjUzLCA0NDY2MiwgNDQ2NjksIDQ0Njc2LCA0NDY4NCwgNDQ2OTMsIDQ0NzAyLCA0NDcxMCwgCi0gICAgNDQ3MTksIDQ0NzI4LCA0NDczNSwgNDQ3NDIsIDQ0NzUxLCA0NDc2MCwgNDQ3NjgsIDQ0Nzc2LCA0NDc4NSwgNDQ3OTQsIAotICAgIDQ0ODAxLCA0NDgwOCwgNDQ4MTcsIDQ0ODI2LCA0NDgzNCwgNDQ4NDIsIDQ0ODUxLCA0NDg2MCwgNDQ4NjcsIDQ0ODc0LCAKLSAgICA0NDg4MywgNDQ4OTIsIDQ0OTAwLCA0NDkwOSwgNDQ5MTgsIDQ0OTI2LCA0NDkzNiwgNDQ5NDYsIDQ0OTU2LCA0NDk2NiwgCi0gICAgNDQ5NzUsIDQ0OTg0LCA0NDk5MywgNDUwMDIsIDQ1MDA5LCA0NTAxNywgNDUwMjUsIDQ1MDMzLCA0NTA0MSwgNDUwNDYsIAotICAgIDQ1MDUxLCA0NTA2MCwgNDUwNjgsIDQ1MDc1LCA0NTA4NCwgNDUwOTIsIDQ1MDk5LCA0NTEwOCwgNDUxMTYsIDQ1MTIzLCAKLSAgICA0NTEzMiwgNDUxNDAsIDQ1MTQ3LCA0NTE1NiwgNDUxNjQsIDQ1MTcxLCA0NTE4MCwgNDUxODgsIDQ1MTk1LCA0NTIwNCwgCi0gICAgNDUyMTIsIDQ1MjE5LCA0NTIyOCwgNDUyMzYsIDQ1MjQzLCA0NTI1MiwgNDUyNjAsIDQ1MjY3LCA0NTI3NiwgNDUyODUsIAotICAgIDQ1Mjk0LCA0NTMwMywgNDUzMTcsIDQ1MzMxLCA0NTMzOCwgNDUzNDMsIDQ1MzQ4LCA0NTM1MywgNDUzNTgsIDQ1MzYzLCAKLSAgICA0NTM2OCwgNDUzNzMsIDQ1Mzc4LCA0NTM4NiwgNDUzOTQsIDQ1NDAyLCA0NTQxMCwgNDU0MTUsIDQ1NDIyLCA0NTQyOSwgCi0gICAgNDU0MzYsIDQ1NDQxLCA0NTQ0OSwgNDU0NTYsIDQ1NDY0LCA0NTQ2OCwgNDU0NzUsIDQ1NDgxLCA0NTQ4OCwgNDU0OTIsIAotICAgIDQ1NDk4LCA0NTUwNCwgNDU1MTAsIDQ1NTE0LCA0NTUxNywgNDU1MjEsIDQ1NTI1LCA0NTUzMiwgNDU1MzgsIDQ1NTQ0LCAKLSAgICA0NTU1MCwgNDU1NTYsIDQ1NTcwLCA0NTU4MCwgNDU1OTQsIDQ1NjA4LCA0NTYxNCwgNDU2MjQsIDQ1NjM4LCA0NTY0MSwgCi0gICAgNDU2NDQsIDQ1NjUxLCA0NTY1OSwgNDU2NjQsIDQ1NjY5LCA0NTY3NywgNDU2ODksIDQ1NzAxLCA0NTcwOSwgNDU3MTMsIAotICAgIDQ1NzE3LCA0NTcyMCwgNDU3MjMsIDQ1NzI3LCA0NTczMSwgNDU3MzQsIDQ1NzM3LCA0NTc0MiwgNDU3NDcsIDQ1NzUzLCAKLSAgICA0NTc1OSwgNDU3NjQsIDQ1NzY5LCA0NTc3NSwgNDU3ODEsIDQ1Nzg2LCA0NTc5MSwgNDU3OTYsIDQ1ODAxLCA0NTgwNywgCi0gICAgNDU4MTMsIDQ1ODE4LCA0NTgyMywgNDU4MjksIDQ1ODM1LCA0NTg0MCwgNDU4NDUsIDQ1ODQ4LCA0NTg1MSwgNDU4NjAsIAotICAgIDQ1ODYyLCA0NTg2NCwgNDU4NjcsIDQ1ODcxLCA0NTg3NywgNDU4NzksIDQ1ODgyLCA0NTg4OSwgNDU4OTYsIDQ1OTA0LCAKLSAgICA0NTkxMiwgNDU5MjIsIDQ1OTM2LCA0NTk0MSwgNDU5NDYsIDQ1OTUwLCA0NTk1NSwgNDU5NjMsIDQ1OTcxLCA0NTk4MCwgCi0gICAgNDU5ODksIDQ1OTk4LCA0NjAwNywgNDYwMTIsIDQ2MDE3LCA0NjAyMywgNDYwMjksIDQ2MDM1LCA0NjA0MSwgNDYwNDQsIAotICAgIDQ2MDUwLCA0NjA1NiwgNDYwNjYsIDQ2MDc2LCA0NjA4NCwgNDYwOTIsIDQ2MTAxLCA0NjExMCwgNDYxMTQsIDQ2MTIyLCAKLSAgICA0NjEzMCwgNDYxMzgsIDQ2MTQ2LCA0NjE1NSwgNDYxNjQsIDQ2MTczLCA0NjE4MiwgNDYxODcsIDQ2MTkyLCA0NjE5NywgCi0gICAgNDYyMDIsIDQ2MjA3LCA0NjIxMywgNDYyMTksIDQ2MjI0LCA0NjIzMCwgNDYyMzIsIDQ2MjM0LCA0NjIzNiwgNDYyMzgsIAotICAgIDQ2MjQxLCA0NjI0NCwgNDYyNDYsIDQ2MjQ4LCA0NjI1MCwgNDYyNTQsIDQ2MjU4LCA0NjI2MCwgNDYyNjIsIDQ2MjY1LCAKLSAgICA0NjI2OCwgNDYyNzIsIDQ2Mjc4LCA0NjI4NCwgNDYyODYsIDQ2MjkzLCA0NjI5NywgNDYzMDIsIDQ2MzA3LCA0NjMwOSwgCi0gICAgNDYzMTksIDQ2MzI1LCA0NjMzMSwgNDYzMzcsIDQ2MzQzLCA0NjM0OSwgNDYzNTUsIDQ2MzYwLCA0NjM2MywgNDYzNjYsIAotICAgIDQ2MzY5LCA0NjM3MSwgNDYzNzMsIDQ2Mzc3LCA0NjM4MSwgNDYzODYsIDQ2MzkxLCA0NjM5NiwgNDYzOTksIDQ2NDAzLCAKLSAgICA0NjQwOCwgNDY0MTEsIDQ2NDE1LCA0NjQyMCwgNDY0MjUsIDQ2NDMwLCA0NjQzNSwgNDY0NDAsIDQ2NDQ1LCA0NjQ1MCwgCi0gICAgNDY0NTUsIDQ2NDYwLCA0NjQ2NSwgNDY0NzAsIDQ2NDc1LCA0NjQ4MSwgNDY0ODcsIDQ2NDkzLCA0NjQ5NSwgNDY0OTgsIAotICAgIDQ2NTAwLCA0NjUwMywgNDY1MDUsIDQ2NTA3LCA0NjUwOSwgNDY1MTEsIDQ2NTEzLCA0NjUxNSwgNDY1MTcsIDQ2NTE5LCAKLSAgICA0NjUyMSwgNDY1MjMsIDQ2NTI1LCA0NjUyNywgNDY1MjksIDQ2NTMxLCA0NjUzMywgNDY1MzUsIDQ2NTM3LCA0NjU0MiwgCi0gICAgNDY1NDcsIDQ2NTUyLCA0NjU1NywgNDY1NjIsIDQ2NTY3LCA0NjU3MiwgNDY1NzcsIDQ2NTgyLCA0NjU4NywgNDY1OTIsIAotICAgIDQ2NTk3LCA0NjYwMiwgNDY2MDcsIDQ2NjEyLCA0NjYxNywgNDY2MjIsIDQ2NjI3LCA0NjYzMiwgNDY2MzcsIDQ2NjQxLCAKLSAgICA0NjY0NSwgNDY2NDksIDQ2NjU1LCA0NjY2MSwgNDY2NjYsIDQ2NjcxLCA0NjY3NiwgNDY2ODEsIDQ2Njg2LCA0NjY5MSwgCi0gICAgNDY2OTksIDQ2NzA3LCA0NjcxNSwgNDY3MjMsIDQ2NzMxLCA0NjczOSwgNDY3NDcsIDQ2NzU1LCA0Njc2MSwgNDY3NjYsIAotICAgIDQ2NzcxLCA0Njc3NiwgNDY3NzksIDQ2NzgzLCA0Njc4NywgNDY3OTEsIDQ2Nzk1LCA0Njc5OSwgNDY4MDMsIDQ2ODEwLCAKLSAgICA0NjgxNywgNDY4MjUsIDQ2ODMzLCA0NjgzOCwgNDY4NDMsIDQ2ODUwLCA0Njg1NywgNDY4NjQsIDQ2ODcxLCA0Njg3NCwgCi0gICAgNDY4NzcsIDQ2ODgyLCA0Njg4NCwgNDY4ODgsIDQ2ODkzLCA0Njg5NSwgNDY4OTcsIDQ2ODk5LCA0NjkwMSwgNDY5MDYsIAotICAgIDQ2OTA5LCA0NjkxMSwgNDY5MTYsIDQ2OTIzLCA0NjkzMCwgNDY5MzMsIDQ2OTM3LCA0Njk0MiwgNDY5NDcsIDQ2OTU1LCAKLSAgICA0Njk2MSwgNDY5NjcsIDQ2OTc5LCA0Njk4NiwgNDY5OTMsIDQ2OTk4LCA0NzAwMywgNDcwMDksIDQ3MDEyLCA0NzAxNSwgCi0gICAgNDcwMjAsIDQ3MDIyLCA0NzAyNiwgNDcwMjgsIDQ3MDMwLCA0NzAzMiwgNDcwMzQsIDQ3MDM2LCA0NzAzOCwgNDcwNDMsIAotICAgIDQ3MDQ1LCA0NzA0NywgNDcwNDksIDQ3MDUxLCA0NzA1NSwgNDcwNTcsIDQ3MDYwLCA0NzA2NSwgNDcwNzAsIDQ3MDc1LCAKLSAgICA0NzA4MCwgNDcwODYsIDQ3MDkyLCA0NzA5NCwgNDcwOTcsIDQ3MTA0LCA0NzExMSwgNDcxMTgsIDQ3MTI1LCA0NzEyOSwgCi0gICAgNDcxMzMsIDQ3MTM1LCA0NzEzNywgNDcxNDEsIDQ3MTQ3LCA0NzE1MiwgNDcxNTQsIDQ3MTU4LCA0NzE2NywgNDcxNzUsIAotICAgIDQ3MTgzLCA0NzE4OSwgNDcxOTUsIDQ3MjAwLCA0NzIwNiwgNDcyMTEsIDQ3MjE0LCA0NzIyOCwgNDcyMzEsIDQ3MjM2LCAKLSAgICA0NzI0MSwgNDcyNDcsIDQ3MjU3LCA0NzI1OSwgNDcyNjUsIDQ3MjcxLCA0NzI3NSwgNDcyODIsIDQ3Mjg2LCA0NzI4OCwgCi0gICAgNDcyOTAsIDQ3Mjk0LCA0NzMwMCwgNDczMDUsIDQ3MzExLCA0NzMxMywgNDczMTksIDQ3MzIxLCA0NzMyNywgNDczMjksIAotICAgIDQ3MzMxLCA0NzMzNiwgNDczMzgsIDQ3MzQyLCA0NzM0NywgNDczNDksIDQ3MzU0LCA0NzM1OSwgNDczNjMsIDQ3MzcwLCAwLCAKLSAgICA0NzM4MCwgNDczODYsIDQ3Mzg5LCA0NzM5NSwgNDczOTgsIDQ3NDAzLCA0NzQwOCwgNDc0MTIsIDQ3NDE0LCA0NzQxNiwgCi0gICAgNDc0MjAsIDQ3NDI0LCA0NzQyOCwgNDc0MzIsIDQ3NDM3LCA0NzQzOSwgNDc0NDQsIDQ3NDQ3LCA0NzQ1MCwgNDc0NTMsIAotICAgIDQ3NDU3LCA0NzQ2MSwgNDc0NjYsIDQ3NDcwLCA0NzQ3NSwgNDc0ODAsIDQ3NDg0LCA0NzQ5MCwgNDc0OTcsIDQ3NTAwLCAKLSAgICA0NzUwNiwgNDc1MTEsIDQ3NTE1LCA0NzUyMCwgNDc1MjYsIDQ3NTMyLCA0NzUzOSwgNDc1NDUsIDQ3NTUyLCA0NzU1OSwgCi0gICAgNDc1NjEsIDQ3NTY4LCA0NzU3MiwgNDc1NzksIDQ3NTg1LCA0NzU5MCwgNDc1OTYsIDQ3NjAwLCA0NzYwNSwgNDc2MDgsIAotICAgIDQ3NjE0LCA0NzYyMCwgNDc2MjcsIDQ3NjM1LCA0NzY0MiwgNDc2NTEsIDQ3NjYxLCA0NzY2OCwgNDc2NzQsIDQ3Njc4LCAKLSAgICA0NzY4NiwgNDc2OTEsIDQ3NzAwLCA0NzcwMywgNDc3MDYsIDQ3NzE1LCA0NzcyNiwgNDc3MzMsIDQ3NzM1LCA0Nzc0MSwgCi0gICAgNDc3NDYsIDQ3NzQ4LCA0Nzc1MSwgNDc3NTUsIDQ3NzYzLCA0Nzc3MiwgNDc3NzUsIDQ3NzgwLCA0Nzc4NSwgNDc3OTMsIAotICAgIDQ3ODAxLCA0NzgwOSwgNDc4MTcsIDQ3ODIzLCA0NzgyOSwgNDc4MzUsIDQ3ODQzLCA0Nzg0OCwgNDc4NTEsIDQ3ODU1LCAKLSAgICA0Nzg1OCwgNDc4NzAsIDQ3ODgwLCA0Nzg5MSwgNDc5MDAsIDQ3OTExLCA0NzkyMSwgNDc5MzAsIDQ3OTM2LCA0Nzk0NCwgCi0gICAgNDc5NDgsIDQ3OTU2LCA0Nzk2MCwgNDc5NjgsIDQ3OTc1LCA0Nzk4MiwgNDc5OTEsIDQ4MDAwLCA0ODAxMCwgNDgwMjAsIAotICAgIDQ4MDMwLCA0ODA0MCwgNDgwNDksIDQ4MDU4LCA0ODA2OCwgNDgwNzgsIDQ4MDg3LCA0ODA5NiwgNDgxMDIsIDQ4MTA4LCAKLSAgICA0ODExNCwgNDgxMjAsIDQ4MTI2LCA0ODEzMiwgNDgxMzgsIDQ4MTQ0LCA0ODE1MCwgNDgxNTcsIDQ4MTYzLCA0ODE2OSwgCi0gICAgNDgxNzUsIDQ4MTgxLCA0ODE4NywgNDgxOTMsIDQ4MTk5LCA0ODIwNSwgNDgyMTEsIDQ4MjE4LCA0ODIyNSwgNDgyMzIsIAotICAgIDQ4MjM5LCA0ODI0NiwgNDgyNTMsIDQ4MjYwLCA0ODI2NywgNDgyNzQsIDQ4MjgxLCA0ODI4OSwgNDgyOTQsIDQ4Mjk3LCAKLSAgICA0ODMwMSwgNDgzMDUsIDQ4MzExLCA0ODMxNCwgNDgzMjAsIDQ4MzI2LCA0ODMzMSwgNDgzMzUsIDQ4MzQwLCA0ODM0NiwgCi0gICAgNDgzNTMsIDQ4MzU2LCA0ODM2MywgNDgzNzAsIDQ4Mzc0LCA0ODM4MywgNDgzOTIsIDQ4Mzk3LCA0ODQwMywgNDg0MDgsIAotICAgIDQ4NDEzLCA0ODQyMCwgNDg0MjcsIDQ4NDM1LCA0ODQ0MywgNDg0NTIsIDQ4NDU2LCA0ODQ2NSwgNDg0NzAsIDQ4NDc0LCAKLSAgICA0ODQ4MSwgNDg0ODUsIDQ4NDkyLCA0ODUwMCwgNDg1MDUsIDQ4NTEzLCA0ODUxNywgNDg1MjIsIDQ4NTI2LCA0ODUzMSwgCi0gICAgNDg1MzUsIDQ4NTQwLCA0ODU0NSwgNDg1NTQsIDQ4NTU2LCA0ODU2MCwgNDg1NjQsIDQ4NTcxLCA0ODU3OCwgNDg1ODMsIAotICAgIDQ4NTkxLCA0ODU5NywgMCwgNDg2MDMsIDAsIDQ4NjA2LCA0ODYxMSwgNDg2MTYsIDQ4NjI0LCA0ODYyOCwgNDg2MzUsIAotICAgIDQ4NjQzLCA0ODY1MSwgNDg2NTYsIDQ4NjYxLCA0ODY2NywgNDg2NzIsIDQ4Njc3LCA0ODY4MywgNDg2ODgsIDQ4NjkxLCAKLSAgICA0ODY5NSwgNDg2OTksIDQ4NzA2LCA0ODcxNSwgNDg3MjAsIDQ4NzI5LCA0ODczOCwgNDg3NDQsIDQ4NzUwLCA0ODc1NSwgCi0gICAgNDg3NjAsIDQ4NzY1LCA0ODc3MCwgNDg3NzYsIDQ4NzgyLCA0ODc5MCwgNDg3OTgsIDQ4ODA0LCA0ODgxMCwgNDg4MTUsIAotICAgIDQ4ODIwLCA0ODgyNywgNDg4MzQsIDQ4ODQwLCA0ODg0MywgNDg4NDYsIDQ4ODUwLCA0ODg1NCwgNDg4NTgsIDQ4ODYzLCAKLSAgICA0ODg2OSwgNDg4NzUsIDQ4ODgyLCA0ODg4OSwgNDg4OTQsIDQ4ODk4LCA0ODkwMiwgNDg5MDYsIDQ4OTEwLCA0ODkxNCwgCi0gICAgNDg5MTgsIDQ4OTIyLCA0ODkyNiwgNDg5MzAsIDQ4OTM0LCA0ODkzOCwgNDg5NDIsIDQ4OTQ2LCA0ODk1MCwgNDg5NTQsIAotICAgIDQ4OTU4LCA0ODk2MiwgNDg5NjYsIDQ4OTcwLCA0ODk3NCwgNDg5NzgsIDQ4OTgyLCA0ODk4NiwgNDg5OTAsIDQ4OTk0LCAKLSAgICA0ODk5OCwgNDkwMDIsIDQ5MDA2LCA0OTAxMCwgNDkwMTQsIDQ5MDE4LCA0OTAyMiwgNDkwMjYsIDQ5MDMwLCA0OTAzNCwgCi0gICAgNDkwMzgsIDQ5MDQyLCA0OTA0NiwgNDkwNTAsIDQ5MDU0LCA0OTA1OCwgNDkwNjIsIDQ5MDY2LCA0OTA3MCwgNDkwNzQsIAotICAgIDQ5MDc4LCA0OTA4MiwgNDkwODYsIDQ5MDkwLCA0OTA5NCwgNDkwOTgsIDQ5MTAyLCA0OTEwNiwgNDkxMTAsIDQ5MTE0LCAKLSAgICA0OTExOCwgNDkxMjIsIDQ5MTI2LCA0OTEzMCwgNDkxMzQsIDQ5MTM4LCA0OTE0MiwgNDkxNDYsIDQ5MTUwLCA0OTE1NCwgCi0gICAgNDkxNTgsIDQ5MTYyLCA0OTE2NiwgNDkxNzAsIDQ5MTc0LCA0OTE3OCwgNDkxODIsIDQ5MTg2LCA0OTE5MCwgNDkxOTQsIAotICAgIDQ5MTk4LCA0OTIwMiwgNDkyMDYsIDQ5MjEwLCA0OTIxNCwgNDkyMTgsIDQ5MjIyLCA0OTIyNiwgNDkyMzAsIDQ5MjM0LCAKLSAgICA0OTIzOCwgNDkyNDIsIDQ5MjQ2LCA0OTI1MCwgNDkyNTQsIDQ5MjU4LCA0OTI2MiwgNDkyNjYsIDQ5MjcwLCA0OTI3NCwgCi0gICAgNDkyNzgsIDQ5MjgyLCA0OTI4NiwgNDkyOTAsIDQ5Mjk0LCA0OTI5OCwgNDkzMDIsIDQ5MzA2LCA0OTMxMCwgNDkzMTQsIAotICAgIDQ5MzE4LCA0OTMyMiwgNDkzMjYsIDQ5MzMwLCA0OTMzNCwgNDkzMzgsIDQ5MzQyLCA0OTM0NiwgNDkzNTAsIDQ5MzU0LCAKLSAgICA0OTM1OCwgNDkzNjIsIDQ5MzY2LCA0OTM3MCwgNDkzNzQsIDQ5Mzc4LCA0OTM4MiwgNDkzODYsIDQ5MzkwLCA0OTM5NCwgCi0gICAgNDkzOTgsIDQ5NDAyLCA0OTQwNiwgNDk0MTAsIDQ5NDE0LCA0OTQxOCwgNDk0MjIsIDQ5NDI2LCA0OTQzMCwgNDk0MzQsIAotICAgIDQ5NDM4LCA0OTQ0MiwgNDk0NDYsIDQ5NDUwLCA0OTQ1NCwgNDk0NTgsIDQ5NDYyLCA0OTQ2NiwgNDk0NzAsIDQ5NDc0LCAKLSAgICA0OTQ3OCwgNDk0ODIsIDQ5NDg2LCA0OTQ5MCwgNDk0OTQsIDQ5NDk4LCA0OTUwMiwgNDk1MDYsIDQ5NTEwLCA0OTUxNCwgCi0gICAgNDk1MTgsIDQ5NTIyLCA0OTUyNiwgNDk1MzAsIDQ5NTM0LCA0OTUzOCwgNDk1NDIsIDQ5NTQ2LCA0OTU1MCwgNDk1NTQsIAotICAgIDQ5NTU4LCA0OTU2MiwgNDk1NjYsIDQ5NTcwLCA0OTU3NCwgNDk1NzgsIDQ5NTgyLCA0OTU4NiwgNDk1OTAsIDQ5NTk0LCAKLSAgICA0OTU5OCwgNDk2MDIsIDQ5NjA2LCA0OTYxMCwgNDk2MTQsIDQ5NjE4LCA0OTYyMiwgNDk2MjYsIDQ5NjMwLCA0OTYzNCwgCi0gICAgNDk2MzgsIDQ5NjQyLCA0OTY0NiwgNDk2NTAsIDQ5NjU0LCA0OTY1OCwgNDk2NjIsIDQ5NjY2LCA0OTY3MCwgNDk2NzQsIAotICAgIDQ5Njc4LCA0OTY4MiwgNDk2ODYsIDQ5NjkwLCA0OTY5NCwgNDk2OTgsIDQ5NzAyLCA0OTcwNiwgNDk3MTAsIDQ5NzE0LCAKLSAgICA0OTcxOCwgNDk3MjIsIDQ5NzI2LCA0OTczMCwgNDk3MzQsIDQ5NzM4LCA0OTc0MiwgNDk3NDYsIDQ5NzUwLCA0OTc1NCwgCi0gICAgNDk3NTgsIDQ5NzYyLCA0OTc2NiwgNDk3NzAsIDQ5Nzc0LCA0OTc3OCwgNDk3ODIsIDQ5Nzg2LCA0OTc5MCwgNDk3OTQsIAotICAgIDQ5Nzk4LCA0OTgwMiwgNDk4MDYsIDQ5ODEwLCA0OTgxNCwgNDk4MTgsIDQ5ODIyLCA0OTgyNiwgNDk4MzAsIDQ5ODM0LCAKLSAgICA0OTgzOCwgNDk4NDIsIDQ5ODQ2LCA0OTg1MCwgNDk4NTQsIDQ5ODU4LCA0OTg2MiwgNDk4NjYsIDQ5ODcwLCA0OTg3NCwgCi0gICAgNDk4NzgsIDQ5ODgyLCA0OTg4NiwgNDk4OTAsIDQ5ODk0LCA0OTg5OCwgNDk5MDIsIDQ5OTA2LCA0OTkxMCwgNDk5MTQsIAotICAgIDQ5OTE4LCA0OTkyNSwgNDk5MzMsIDQ5OTM5LCA0OTk0NSwgNDk5NTIsIDQ5OTU5LCA0OTk2NSwgNDk5NzEsIDQ5OTc3LCAKLSAgICA0OTk4MywgNDk5ODgsIDQ5OTkzLCA0OTk5OCwgNTAwMDMsIDUwMDA5LCA1MDAxNSwgNTAwMjMsIDUwMDMwLCA1MDAzNiwgCi0gICAgNTAwNDIsIDUwMDUwLCA1MDA1OSwgNTAwNjYsIDUwMDc2LCA1MDA4NywgNTAwOTAsIDUwMDkzLCA1MDA5NywgNTAxMDEsIAotICAgIDUwMTA4LCA1MDExNSwgNTAxMjYsIDUwMTM3LCA1MDE0NywgNTAxNTcsIDUwMTY0LCA1MDE3MSwgNTAxNzgsIDUwMTg1LCAKLSAgICA1MDE5NiwgNTAyMDcsIDUwMjE4LCA1MDIyOSwgNTAyMzksIDUwMjQ5LCA1MDI2MSwgNTAyNzMsIDUwMjg0LCA1MDI5NSwgCi0gICAgNTAzMDcsIDUwMzE5LCA1MDMyOCwgNTAzMzgsIDUwMzQ4LCA1MDM1OSwgNTAzNzAsIDUwMzc3LCA1MDM4NCwgNTAzOTEsIAotICAgIDUwMzk4LCA1MDQwOCwgNTA0MTgsIDUwNDI2LCA1MDQzNCwgNTA0NDEsIDUwNDQ4LCA1MDQ1NSwgNTA0NjIsIDUwNDY5LCAKLSAgICA1MDQ3NCwgNTA0NzksIDUwNDg1LCA1MDQ5MywgNTA1MDMsIDUwNTExLCA1MDUxOSwgNTA1MjcsIDUwNTM1LCA1MDU0MywgCi0gICAgNTA1NTEsIDUwNTU5LCA1MDU2NywgNTA1NzYsIDUwNTg1LCA1MDU5NSwgNTA2MDUsIDUwNjE0LCA1MDYyMywgNTA2MzMsIAotICAgIDUwNjQzLCA1MDY1MiwgNTA2NjEsIDUwNjcxLCA1MDY4MSwgNTA2OTAsIDUwNjk5LCA1MDcwOSwgNTA3MTksIDUwNzMzLCAKLSAgICA1MDc1MCwgNTA3NjQsIDUwNzgxLCA1MDc5NSwgNTA4MDksIDUwODIzLCA1MDgzNywgNTA4NDcsIDUwODU4LCA1MDg2OCwgCi0gICAgNTA4NzksIDUwODk2LCA1MDkxMywgNTA5MjEsIDUwOTI3LCA1MDkzNCwgNTA5NDEsIDUwOTQ4LCA1MDk1NSwgNTA5NjAsIAotICAgIDUwOTY2LCA1MDk3MSwgNTA5NzYsIDUwOTgyLCA1MDk4NywgNTA5OTIsIDUwOTk3LCA1MTAwMiwgNTEwMDcsIDUxMDE0LCAKLSAgICA1MTAxOSwgNTEwMjYsIDUxMDMxLCA1MTAzNiwgNTEwNDAsIDUxMDQ0LCA1MTA1MSwgNTEwNTgsIDUxMDY1LCA1MTA3MiwgCi0gICAgNTEwNzksIDUxMDg2LCA1MTA5OSwgNTExMTIsIDUxMTI1LCA1MTEzOCwgNTExNDYsIDUxMTU0LCA1MTE2MCwgNTExNjYsIAotICAgIDUxMTczLCA1MTE4MCwgNTExODcsIDUxMTk0LCA1MTE5OCwgNTEyMDMsIDUxMjExLCA1MTIxOSwgNTEyMjcsIDUxMjM0LCAKLSAgICA1MTIzOCwgNTEyNDYsIDUxMjU0LCA1MTI1OCwgNTEyNjIsIDUxMjY3LCA1MTI3NCwgNTEyODIsIDUxMjkwLCA1MTMxMCwgCi0gICAgNTEzMzAsIDUxMzUwLCA1MTM3MCwgNTEzOTAsIDUxNDEwLCA1MTQzMCwgNTE0NTAsIDUxNDU2LCA1MTQ2MywgNTE0NzIsIAotICAgIDUxNDgwLCA1MTQ4OCwgNTE0OTMsIDUxNDk2LCA1MTQ5OSwgNTE1MDQsIDUxNTA3LCA1MTUyNiwgNTE1MzMsIDUxNTM5LCAKLSAgICA1MTU0NSwgNTE1NDksIDUxNTUyLCA1MTU1NSwgNTE1NTgsIDUxNTcwLCA1MTU4MywgNTE1OTAsIDUxNTk3LCA1MTYwMCwgCi0gICAgNTE2MDQsIDUxNjA3LCA1MTYxMiwgNTE2MTcsIDUxNjIyLCA1MTYyOCwgNTE2MzcsIDUxNjQ0LCA1MTY1MSwgNTE2NTksIAotICAgIDUxNjY2LCA1MTY3MywgNTE2NzYsIDUxNjgyLCA1MTY4OCwgNTE2OTEsIDUxNjk0LCA1MTY5OSwgNTE3MDQsIDUxNzEwLCAKLSAgICA1MTcxNiwgNTE3MjAsIDUxNzI1LCA1MTczMiwgNTE3MzYsIDUxNzQyLCA1MTc0NiwgNTE3NTAsIDUxNzU4LCA1MTc3MCwgCi0gICAgNTE3NzksIDUxNzgzLCA1MTc4NSwgNTE3OTQsIDUxODAzLCA1MTgwOSwgNTE4MTIsIDUxODE4LCA1MTgyNCwgNTE4MjksIAotICAgIDUxODM0LCA1MTgzOSwgNTE4NDQsIDUxODQ5LCA1MTg1NCwgNTE4NTYsIDUxODYyLCA1MTg2NywgNTE4NzQsIDUxODc4LCAKLSAgICA1MTg4NCwgNTE4ODcsIDUxODkxLCA1MTg5OCwgNTE5MDUsIDUxOTA3LCA1MTkwOSwgNTE5MTUsIDUxOTIxLCA1MTkyNywgCi0gICAgNTE5MzYsIDUxOTQ1LCA1MTk1MiwgNTE5NTksIDUxOTY1LCA1MTk3MSwgNTE5NzYsIDUxOTgxLCA1MTk4NiwgNTE5OTIsIAotICAgIDUxOTk4LCA1MjAwMywgNTIwMTAsIDUyMDE0LCA1MjAxOCwgNTIwMzEsIDUyMDQ0LCA1MjA1NiwgNTIwNjUsIDUyMDcxLCAKLSAgICA1MjA3OCwgNTIwODMsIDUyMDg4LCA1MjA5MywgNTIwOTgsIDUyMTAzLCA1MjEwNSwgNTIxMTIsIDUyMTE5LCA1MjEyNiwgCi0gICAgNTIxMzMsIDUyMTQwLCA1MjE0OCwgNTIxNTQsIDUyMTU5LCA1MjE2NSwgNTIxNzEsIDUyMTc3LCA1MjE4NCwgNTIxOTAsIAotICAgIDUyMTk4LCA1MjIwNiwgNTIyMTQsIDUyMjIyLCA1MjIyOSwgNTIyMzUsIDUyMjQxLCA1MjI1MCwgNTIyNTQsIDUyMjYzLCAKLSAgICA1MjI3MiwgNTIyODEsIDUyMjg5LCA1MjI5MywgNTIyOTksIDUyMzA2LCA1MjMxMywgNTIzMTcsIDUyMzIzLCA1MjMzMCwgCi0gICAgNTIzMzUsIDUyMzQwLCA1MjM0NiwgNTIzNTEsIDUyMzU2LCA1MjM2MywgNTIzNzAsIDUyMzc1LCA1MjM4MCwgNTIzODgsIAotICAgIDUyMzk2LCA1MjQwNiwgNTI0MTYsIDUyNDIzLCA1MjQzMCwgNTI0MzQsIDUyNDM4LCA1MjQ1MCwgNTI0NTYsIDUyNDYyLCAKLSAgICA1MjQ2NywgNTI0NzIsIDUyNDc5LCA1MjQ4NiwgNTI0OTIsIDUyNDk4LCA1MjUwNywgNTI1MTUsIDUyNTIzLCA1MjUzMCwgCi0gICAgNTI1MzcsIDUyNTQ0LCA1MjU1MCwgNTI1NTcsIDUyNTYzLCA1MjU3MCwgNTI1NzcsIDUyNTg0LCA1MjU5MSwgNTI1OTcsIAotICAgIDUyNjAyLCA1MjYxMSwgNTI2MjEsIDUyNjI4LCA1MjYzNywgNTI2NDMsIDUyNjQ4LCA1MjY1MywgNTI2NjMsIDUyNjY5LCAKLSAgICA1MjY3NSwgNTI2ODEsIDUyNjg5LCA1MjY5NCwgNTI3MDEsIDUyNzA4LCA1MjcxOSwgNTI3MjYsIDUyNzMzLCA1Mjc0MCwgCi0gICAgNTI3NDcsIDUyNzU0LCA1Mjc2MSwgNTI3NjgsIDUyNzgwLCA1Mjc5MiwgNTI4MDMsIDUyODE0LCA1MjgyNywgNTI4NDAsIAotICAgIDUyODQ1LCA1Mjg1MCwgNTI4NTksIDUyODY4LCA1Mjg3NSwgNTI4ODIsIDUyODkxLCA1MjkwMCwgNTI5MDgsIDUyOTE2LCAKLSAgICA1MjkyNCwgNTI5MzIsIDUyOTQyLCA1Mjk1MiwgNTI5NjYsIDUyOTgwLCA1Mjk4OCwgNTI5OTYsIDUzMDA4LCA1MzAyMCwgCi0gICAgNTMwMjgsIDUzMDM2LCA1MzA0NiwgNTMwNTYsIDUzMDYxLCA1MzA2NiwgNTMwNzUsIDUzMDg0LCA1MzA4OSwgNTMwOTQsIAotICAgIDUzMTAyLCA1MzEwOCwgNTMxMTQsIDUzMTIyLCA1MzEzMCwgNTMxNDMsIDUzMTU2LCA1MzE2MCwgNTMxNjQsIDUzMTcxLCAKLSAgICA1MzE3OCwgNTMxODUsIDUzMTkzLCA1MzIwMSwgNTMyMTAsIDUzMjE5LCA1MzIyNSwgNTMyMzEsIDUzMjM4LCA1MzI0NSwgCi0gICAgNTMyNTIsIDUzMjU5LCA1MzI2OCwgNTMyNzcsIDUzMjgwLCA1MzI4MywgNTMyODgsIDUzMjkzLCA1MzI5OSwgNTMzMDUsIAotICAgIDUzMzEyLCA1MzMxOSwgNTMzMjksIDUzMzM5LCA1MzM0NiwgNTMzNTMsIDUzMzYxLCA1MzM2OSwgNTMzNzcsIDUzMzg1LCAKLSAgICA1MzM5MywgNTM0MDEsIDUzNDA4LCA1MzQxNSwgNTM0MTksIDUzNDIzLCA1MzQzMCwgNTM0MzcsIDUzNDQyLCA1MzQ0NywgCi0gICAgNTM0NTIsIDUzNDU3LCA1MzQ2MywgNTM0NzcsIDUzNDg0LCA1MzQ5MSwgNTM0OTUsIDUzNDk3LCA1MzQ5OSwgNTM1MDQsIAotICAgIDUzNTA5LCA1MzUxNCwgNTM1MTgsIDUzNTI2LCA1MzUzMywgNTM1NDAsIDUzNTQ4LCA1MzU2MCwgNTM1NjgsIDUzNTc2LCAKLSAgICA1MzU4NywgNTM1OTEsIDUzNTk1LCA1MzYwMSwgNTM2MDksIDUzNjIyLCA1MzYyOSwgNTM2MzYsIDUzNjQzLCA1MzY0OCwgCi0gICAgNTM2NTUsIDUzNjY0LCA1MzY3MiwgNTM2NzgsIDUzNjg0LCA1MzY5MCwgNTM2OTksIDUzNzA4LCA1MzcxNiwgNTM3MjUsIAotICAgIDUzNzMwLCA1MzczMywgNTM3MzgsIDUzNzQ0LCA1Mzc1MCwgNTM3NTYsIDUzNzYyLCA1Mzc2NiwgNTM3NjksIDUzNzczLCAKLSAgICA1Mzc3NywgNTM3ODMsIDUzNzg5LCA1Mzc5NSwgNTM4MDEsIDUzODA1LCA1MzgwOSwgNTM4MTYsIDUzODIzLCA1MzgzMCwgCi0gICAgNTM4MzcsIDUzODQ0LCA1Mzg1MSwgNTM4NjEsIDUzODcxLCA1Mzg3OCwgNTM4ODUsIDUzODkzLCA1MzkwMSwgNTM5MDUsIAotICAgIDUzOTEwLCA1MzkxNSwgNTM5MjEsIDUzOTI3LCA1MzkzMCwgNTM5MzMsIDUzOTM2LCA1MzkzOSwgNTM5NDMsIDUzOTQ4LCAKLSAgICA1Mzk1MywgNTM5NTgsIDUzOTYzLCA1Mzk2OCwgNTM5NzIsIDUzOTc2LCA1Mzk4MCwgNTM5ODQsIDUzOTg4LCA1Mzk5MiwgCi0gICAgNTM5OTYsIDU0MDAyLCA1NDAwNiwgNTQwMTIsIDU0MDE3LCA1NDAyNCwgNTQwMzIsIDU0MDM5LCA1NDA0NywgNTQwNTQsIAotICAgIDU0MDYyLCA1NDA3MSwgNTQwNzgsIDU0MDg4LCA1NDA5OSwgNTQxMDUsIDU0MTE0LCA1NDEyMCwgNTQxMjksIDU0MTM4LCAKLSAgICA1NDE0NCwgNTQxNTAsIDU0MTU0LCA1NDE1OCwgNTQxNjcsIDU0MTc2LCA1NDE4MywgNTQxOTAsIDU0MTk5LCAwLCAwLCAwLCAKLSAgICA1NDIwOCwgNTQyMTMsIDU0MjE3LCA1NDIyMSwgNTQyMjYsIDU0MjMxLCA1NDIzNiwgNTQyNDQsIDU0MjUyLCA1NDI1NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQyNTksIDU0MjY0LCA1NDI2OSwgNTQyNzQsIDU0Mjc5LCAKLSAgICA1NDI4NCwgNTQyODksIDU0Mjk0LCA1NDI5OSwgNTQzMDQsIDU0MzA5LCA1NDMxNSwgNTQzMTksIDU0MzI0LCA1NDMyOSwgCi0gICAgNTQzMzQsIDU0MzM5LCA1NDM0NCwgNTQzNDksIDU0MzU0LCA1NDM1OSwgNTQzNjQsIDU0MzY5LCA1NDM3NCwgNTQzNzksIAotICAgIDU0Mzg0LCA1NDM4OSwgNTQzOTQsIDU0Mzk5LCA1NDQwNCwgNTQ0MDksIDU0NDE0LCA1NDQxOSwgNTQ0MjQsIDU0NDI5LCAKLSAgICA1NDQzNSwgNTQ0NDAsIDU0NDQ2LCA1NDQ1NSwgNTQ0NjAsIDU0NDY4LCA1NDQ3NSwgNTQ0ODQsIDU0NDg5LCA1NDQ5NCwgCi0gICAgNTQ0OTksIDU0NTA1LCAwLCA1NDUxMiwgNTQ1MTcsIDU0NTIyLCA1NDUyNywgNTQ1MzIsIDU0NTM3LCA1NDU0MiwgNTQ1NDcsIAotICAgIDU0NTUyLCA1NDU1NywgNTQ1NjIsIDU0NTY4LCA1NDU3MiwgNTQ1NzcsIDU0NTgyLCA1NDU4NywgNTQ1OTIsIDU0NTk3LCAKLSAgICA1NDYwMiwgNTQ2MDcsIDU0NjEyLCA1NDYxNywgNTQ2MjIsIDU0NjI3LCA1NDYzMiwgNTQ2MzcsIDU0NjQyLCA1NDY0NywgCi0gICAgNTQ2NTIsIDU0NjU3LCA1NDY2MiwgNTQ2NjcsIDU0NjcyLCA1NDY3NywgNTQ2ODIsIDU0Njg4LCA1NDY5MywgNTQ2OTksIAotICAgIDU0NzA4LCA1NDcxMywgNTQ3MjEsIDU0NzI4LCA1NDczNywgNTQ3NDIsIDU0NzQ3LCA1NDc1MiwgNTQ3NTgsIDAsIDU0NzY1LCAKLSAgICA1NDc3MywgNTQ3ODEsIDU0NzkxLCA1NDc5OCwgNTQ4MDYsIDU0ODEyLCA1NDgyMSwgNTQ4MjksIDU0ODM3LCA1NDg0NSwgCi0gICAgNTQ4NTMsIDU0ODYxLCA1NDg2OSwgNTQ4NzQsIDU0ODgxLCA1NDg4NywgNTQ4OTQsIDU0OTAyLCA1NDkwOSwgNTQ5MTYsIAotICAgIDU0OTI0LCA1NDkzMCwgNTQ5MzYsIDU0OTQzLCA1NDk1MCwgNTQ5NjAsIDU0OTcwLCA1NDk3NywgNTQ5ODQsIDU0OTg5LCAKLSAgICA1NDk5OSwgNTUwMDksIDU1MDE0LCA1NTAxOSwgNTUwMjQsIDU1MDI5LCA1NTAzNCwgNTUwMzksIDU1MDQ0LCA1NTA0OSwgCi0gICAgNTUwNTQsIDU1MDU5LCA1NTA2NCwgNTUwNjksIDU1MDc0LCA1NTA3OSwgNTUwODQsIDU1MDg5LCA1NTA5NCwgNTUwOTksIAotICAgIDU1MTA0LCA1NTEwOSwgNTUxMTQsIDU1MTE5LCA1NTEyNCwgNTUxMjksIDU1MTM0LCA1NTEzOSwgNTUxNDQsIDU1MTQ5LCAKLSAgICA1NTE1NCwgNTUxNTksIDU1MTYzLCA1NTE2NywgNTUxNzIsIDU1MTc3LCA1NTE4MiwgNTUxODcsIDU1MTkyLCA1NTE5NywgCi0gICAgNTUyMDIsIDU1MjA3LCA1NTIxMiwgNTUyMTcsIDU1MjIyLCA1NTIyNywgNTUyMzIsIDU1MjM3LCA1NTI0MiwgNTUyNDcsIAotICAgIDU1MjUyLCA1NTI1NywgNTUyNjQsIDU1MjcxLCA1NTI3OCwgNTUyODUsIDU1MjkyLCA1NTI5OSwgNTUzMDYsIDU1MzEzLCAKLSAgICA1NTMyMCwgNTUzMjcsIDU1MzM0LCA1NTM0MSwgNTUzNDgsIDU1MzU1LCA1NTM2MCwgNTUzNjUsIDU1MzcyLCA1NTM3OSwgCi0gICAgNTUzODYsIDU1MzkzLCA1NTQwMCwgNTU0MDcsIDU1NDE0LCA1NTQyMSwgNTU0MjgsIDU1NDM1LCA1NTQ0MiwgNTU0NDksIAotICAgIDU1NDU1LCA1NTQ2MSwgNTU0NjcsIDU1NDczLCA1NTQ4MCwgNTU0ODcsIDU1NDk0LCA1NTUwMSwgNTU1MDgsIDU1NTE1LCAKLSAgICA1NTUyMiwgNTU1MjksIDU1NTM2LCA1NTU0MywgNTU1NTEsIDU1NTU5LCA1NTU2NywgNTU1NzUsIDU1NTgzLCA1NTU5MSwgCi0gICAgNTU1OTksIDU1NjA3LCA1NTYxMSwgNTU2MTcsIDU1NjIzLCA1NTYyNywgNTU2MzMsIDU1NjM5LCA1NTY0NSwgNTU2NTIsIAotICAgIDU1NjU5LCA1NTY2NiwgNTU2NzMsIDU1Njc4LCA1NTY4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2OTAsIDU1Njk4LCAKLSAgICA1NTcwNywgNTU3MTYsIDU1NzI0LCA1NTczMCwgNTU3MzUsIDU1NzQwLCA1NTc0NSwgNTU3NTAsIDU1NzU1LCA1NTc2MCwgCi0gICAgNTU3NjUsIDU1NzcwLCA1NTc3NSwgNTU3ODAsIDU1Nzg1LCA1NTc5MCwgNTU3OTUsIDU1ODAwLCA1NTgwNSwgNTU4MTAsIAotICAgIDU1ODE1LCA1NTgyMCwgNTU4MjUsIDU1ODMwLCA1NTgzNSwgNTU4NDAsIDU1ODQ1LCA1NTg1MCwgNTU4NTUsIDU1ODYwLCAKLSAgICA1NTg2NSwgNTU4NzAsIDU1ODc1LCA1NTg4MCwgNTU4ODUsIDU1ODkwLCA1NTg5NSwgNTU5MDAsIDU1OTA1LCA1NTkxMCwgCi0gICAgNTU5MTUsIDU1OTIwLCA1NTkyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU5MzAsIDU1OTM0LCA1NTkzOSwgCi0gICAgNTU5NDQsIDU1OTQ5LCA1NTk1NCwgNTU5NjMsIDU1OTY4LCA1NTk3MywgNTU5NzgsIDU1OTgzLCA1NTk4OCwgNTU5OTMsIAotICAgIDU1OTk4LCA1NjAwMywgNTYwMTAsIDU2MDE1LCA1NjAyMCwgNTYwMjksIDU2MDM2LCA1NjA0MSwgNTYwNDYsIDU2MDUxLCAKLSAgICA1NjA1OCwgNTYwNjMsIDU2MDcwLCA1NjA3NSwgNTYwODAsIDU2MDg3LCA1NjA5NCwgNTYwOTksIDU2MTA0LCA1NjEwOSwgCi0gICAgNTYxMTYsIDU2MTIzLCA1NjEyOCwgNTYxMzMsIDU2MTM4LCA1NjE0MywgNTYxNDgsIDU2MTU1LCA1NjE2MiwgNTYxNjcsIAotICAgIDU2MTcyLCA1NjE3NywgNTYxODIsIDU2MTg3LCA1NjE5MiwgNTYxOTcsIDU2MjAyLCA1NjIwNywgNTYyMTIsIDU2MjE3LCAKLSAgICA1NjIyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYyMjksIDU2MjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NjI0MSwgNTYyNDcsIDU2MjUxLCA1NjI1NSwgNTYyNTksIDU2MjYzLCA1NjI2NywgNTYyNzEsIAotICAgIDU2Mjc1LCA1NjI3OSwgNTYyODMsIDU2Mjg3LCA1NjI5MywgNTYyOTcsIDU2MzAxLCA1NjMwNSwgNTYzMDksIDU2MzEzLCAKLSAgICA1NjMxNywgNTYzMjEsIDU2MzI1LCA1NjMyOSwgNTYzMzMsIDU2MzM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NjM0MSwgNTYzNDUsIDU2MzQ5LCA1NjM1MywgNTYzNTcsIDU2MzYxLCA1NjM2NSwgMCwgNTYzNjksIDU2MzczLCA1NjM3NywgCi0gICAgNTYzODEsIDU2Mzg1LCA1NjM4OSwgNTYzOTMsIDAsIDU2Mzk3LCA1NjQwMSwgNTY0MDUsIDU2NDA5LCA1NjQxMywgNTY0MTcsIAotICAgIDU2NDIxLCAwLCA1NjQyNSwgNTY0MjksIDU2NDMzLCA1NjQzNywgNTY0NDEsIDU2NDQ1LCA1NjQ0OSwgMCwgNTY0NTMsIAotICAgIDU2NDU3LCA1NjQ2MSwgNTY0NjUsIDU2NDY5LCA1NjQ3MywgNTY0NzcsIDAsIDU2NDgxLCA1NjQ4NSwgNTY0ODksIDU2NDkzLCAKLSAgICA1NjQ5NywgNTY1MDEsIDU2NTA1LCAwLCA1NjUwOSwgNTY1MTMsIDU2NTE3LCA1NjUyMSwgNTY1MjUsIDU2NTI5LCA1NjUzMywgCi0gICAgMCwgNTY1MzcsIDU2NTQxLCA1NjU0NSwgNTY1NDksIDU2NTUzLCA1NjU1NywgNTY1NjEsIDAsIDU2NTY1LCA1NjU3MCwgCi0gICAgNTY1NzUsIDU2NTgwLCA1NjU4NSwgNTY1OTAsIDU2NTk1LCA1NjU5OSwgNTY2MDQsIDU2NjA5LCA1NjYxNCwgNTY2MTgsIAotICAgIDU2NjIzLCA1NjYyOCwgNTY2MzMsIDU2NjM4LCA1NjY0MiwgNTY2NDcsIDU2NjUyLCA1NjY1NywgNTY2NjIsIDU2NjY3LCAKLSAgICA1NjY3MiwgNTY2NzYsIDU2NjgxLCA1NjY4NiwgNTY2OTMsIDU2Njk4LCA1NjcwMywgNTY3MDksIDU2NzE2LCA1NjcyMywgCi0gICAgNTY3MzIsIDU2NzM5LCA1Njc0OCwgNTY3NTIsIDU2NzU2LCA1Njc2MiwgNTY3NjgsIDU2Nzc0LCA1Njc4MiwgNTY3ODgsIAotICAgIDU2NzkyLCA1Njc5NiwgNTY4MDAsIDU2ODA2LCA1NjgxMiwgNTY4MTYsIDU2ODE4LCA1NjgyMiwgNTY4MjgsIDU2ODMwLCAKLSAgICA1NjgzNCwgNTY4MzgsIDU2ODQyLCA1Njg0OCwgNTY4NTMsIDU2ODU3LCA1Njg2MSwgNTY4NjYsIDU2ODcyLCA1Njg3NywgCi0gICAgNTY4ODIsIDU2ODg3LCA1Njg5MiwgNTY4OTksIDU2OTA2LCA1NjkxMSwgNTY5MTYsIDU2OTIxLCA1NjkyNiwgNTY5MzEsIAotICAgIDU2OTM2LCA1Njk0MCwgNTY5NDQsIDU2OTUxLCA1Njk1OCwgNTY5NjQsIDU2OTY4LCA1Njk3MywgNTY5NzYsIDU2OTgwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1Njk4OCwgNTY5OTIsIDU2OTk2LCA1NzAwMSwgNTcwMDYsIDU3MDExLCA1NzAxNSwgNTcwMTksIAotICAgIDU3MDIzLCA1NzAyOCwgNTcwMzMsIDU3MDM3LCA1NzA0MSwgNTcwNDUsIDU3MDQ5LCA1NzA1NCwgNTcwNTksIDU3MDY0LCAKLSAgICA1NzA2OSwgNTcwNzMsIDU3MDc3LCA1NzA4MiwgNTcwODcsIDU3MDkyLCA1NzA5NywgNTcxMDEsIDAsIDU3MTA1LCA1NzEwOSwgCi0gICAgNTcxMTMsIDU3MTE3LCA1NzEyMSwgNTcxMjUsIDU3MTI5LCA1NzEzNCwgNTcxMzksIDU3MTQzLCA1NzE0OCwgNTcxNTMsIAotICAgIDU3MTYyLCA1NzE2NiwgNTcxNzAsIDU3MTc0LCA1NzE4MSwgNTcxODUsIDU3MTkwLCA1NzE5NSwgNTcxOTksIDU3MjAzLCAKLSAgICA1NzIwOSwgNTcyMTQsIDU3MjE5LCA1NzIyNCwgNTcyMjksIDU3MjMzLCA1NzIzNywgNTcyNDEsIDU3MjQ1LCA1NzI0OSwgCi0gICAgNTcyNTQsIDU3MjU5LCA1NzI2MywgNTcyNjcsIDU3MjcyLCA1NzI3NywgNTcyODIsIDU3Mjg2LCA1NzI5MCwgNTcyOTUsIAotICAgIDU3MzAwLCA1NzMwNiwgNTczMTIsIDU3MzE2LCA1NzMyMiwgNTczMjgsIDU3MzMyLCA1NzMzOCwgNTczNDQsIDU3MzQ5LCAKLSAgICA1NzM1NCwgNTczNTgsIDU3MzY0LCA1NzM2OCwgNTczNzIsIDU3Mzc4LCA1NzM4NCwgNTczODksIDU3Mzk0LCA1NzM5OCwgCi0gICAgNTc0MDIsIDU3NDEwLCA1NzQxNiwgNTc0MjIsIDU3NDI4LCA1NzQzMywgNTc0MzgsIDU3NDQzLCA1NzQ0OSwgNTc0NTMsIAotICAgIDU3NDU5LCA1NzQ2MywgNTc0NjcsIDU3NDczLCA1NzQ3OSwgNTc0ODUsIDU3NDkxLCA1NzQ5NywgNTc1MDMsIDU3NTA5LCAKLSAgICA1NzUxNSwgNTc1MjEsIDU3NTI3LCA1NzUzMywgNTc1MzksIDU3NTQzLCA1NzU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTc1NTUsIDU3NTU4LCA1NzU2MiwgNTc1NjYsIDU3NTcwLCA1NzU3NCwgNTc1NzcsIDU3NTgwLCAKLSAgICA1NzU4NCwgNTc1ODgsIDU3NTkyLCA1NzU5NiwgNTc1OTksIDU3NjA0LCA1NzYwOCwgNTc2MTIsIDU3NjE2LCA1NzYyMiwgCi0gICAgNTc2MjYsIDU3NjMwLCA1NzYzNCwgNTc2MzgsIDU3NjQ1LCA1NzY1MSwgNTc2NTUsIDU3NjU5LCA1NzY2MywgNTc2NjcsIAotICAgIDU3NjcxLCA1NzY3NSwgNTc2NzksIDU3NjgzLCA1NzY4NywgNTc2OTEsIDU3Njk1LCA1NzcwMSwgNTc3MDUsIDU3NzA5LCAKLSAgICA1NzcxMywgNTc3MTcsIDU3NzIxLCA1NzcyNSwgNTc3MjksIDU3NzMzLCA1NzczNywgNTc3NDEsIDU3NzQ1LCA1Nzc0OSwgCi0gICAgNTc3NTMsIDU3NzU3LCA1Nzc2MSwgNTc3NjUsIDU3NzcxLCA1Nzc3NywgNTc3ODIsIDU3Nzg3LCA1Nzc5MSwgNTc3OTUsIAotICAgIDU3Nzk5LCA1NzgwMywgNTc4MDcsIDU3ODExLCA1NzgxNSwgNTc4MTksIDU3ODIzLCA1NzgyNywgNTc4MzEsIDU3ODM1LCAKLSAgICA1NzgzOSwgNTc4NDMsIDU3ODQ3LCA1Nzg1MSwgNTc4NTUsIDU3ODU5LCA1Nzg2MywgNTc4NjcsIDU3ODcxLCA1Nzg3NSwgCi0gICAgNTc4NzksIDU3ODgzLCA1Nzg4OSwgNTc4OTMsIDU3ODk3LCA1NzkwMSwgNTc5MDUsIDU3OTA5LCA1NzkxMywgNTc5MTcsIAotICAgIDU3OTIxLCA1NzkyNiwgNTc5MzMsIDU3OTM3LCA1Nzk0MSwgNTc5NDUsIDU3OTQ5LCA1Nzk1MywgNTc5NTcsIDU3OTYxLCAKLSAgICA1Nzk2NSwgNTc5NjksIDU3OTczLCA1Nzk3NywgNTc5ODEsIDU3OTg4LCA1Nzk5MiwgNTc5OTgsIDU4MDAyLCA1ODAwNiwgCi0gICAgNTgwMTAsIDU4MDE0LCA1ODAxOCwgNTgwMjEsIDU4MDI1LCA1ODAyOSwgNTgwMzMsIDU4MDM3LCA1ODA0MSwgNTgwNDUsIAotICAgIDU4MDQ5LCA1ODA1MywgNTgwNTcsIDU4MDYxLCA1ODA2NSwgNTgwNjksIDU4MDczLCA1ODA3NywgNTgwODEsIDU4MDg1LCAKLSAgICA1ODA4OSwgNTgwOTMsIDU4MDk3LCA1ODEwMSwgNTgxMDUsIDU4MTA5LCA1ODExMywgNTgxMTcsIDU4MTIxLCA1ODEyNSwgCi0gICAgNTgxMjksIDU4MTMzLCA1ODEzNywgNTgxNDEsIDU4MTQ1LCA1ODE0OSwgNTgxNTUsIDU4MTU5LCA1ODE2MywgNTgxNjcsIAotICAgIDU4MTcxLCA1ODE3NSwgNTgxNzksIDU4MTgzLCA1ODE4NywgNTgxOTEsIDU4MTk1LCA1ODE5OSwgNTgyMDMsIDU4MjA3LCAKLSAgICA1ODIxMSwgNTgyMTUsIDU4MjE5LCA1ODIyMywgNTgyMjcsIDU4MjMxLCA1ODIzNSwgNTgyMzksIDU4MjQzLCA1ODI0NywgCi0gICAgNTgyNTEsIDU4MjU1LCA1ODI1OSwgNTgyNjMsIDU4MjcxLCA1ODI3NSwgNTgyNzksIDU4MjgzLCA1ODI4NywgNTgyOTEsIAotICAgIDU4Mjk3LCA1ODMwMSwgNTgzMDUsIDU4MzA5LCA1ODMxMywgNTgzMTcsIDU4MzIxLCA1ODMyNSwgNTgzMjksIDU4MzMzLCAKLSAgICA1ODMzNywgNTgzNDEsIDU4MzQ1LCA1ODM0OSwgNTgzNTUsIDU4MzU5LCA1ODM2MywgNTgzNjcsIDU4MzcxLCA1ODM3NSwgCi0gICAgNTgzNzksIDU4MzgzLCA1ODM4NywgNTgzOTEsIDU4Mzk1LCA1ODM5OSwgNTg0MDMsIDU4NDA3LCA1ODQxMSwgNTg0MTUsIAotICAgIDU4NDE5LCA1ODQyMywgNTg0MjcsIDU4NDMxLCA1ODQzNSwgNTg0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NDQzLCA1ODQ1MiwgNTg0NjAsIAotICAgIDU4NDcyLCA1ODQ4MywgNTg0OTEsIDU4NTAwLCA1ODUwOSwgNTg1MTksIDU4NTMxLCA1ODU0MywgNTg1NTUsIDAsIDAsIDAsIAotICAgIDAsIDU4NTYxLCA1ODU2NCwgNTg1NjcsIDU4NTcyLCA1ODU3NSwgNTg1ODIsIDU4NTg2LCA1ODU5MCwgNTg1OTQsIDU4NTk4LCAKLSAgICA1ODYwMiwgNTg2MDcsIDU4NjEyLCA1ODYxNiwgNTg2MjAsIDU4NjI1LCA1ODYzMCwgNTg2MzUsIDU4NjQwLCA1ODY0MywgCi0gICAgNTg2NDYsIDU4NjUyLCA1ODY1OCwgNTg2NjMsIDU4NjY4LCA1ODY3NSwgNTg2ODIsIDU4Njg2LCA1ODY5MCwgNTg2OTQsIAotICAgIDU4NzAyLCA1ODcwOCwgNTg3MTUsIDU4NzIwLCA1ODcyNSwgNTg3MzAsIDU4NzM1LCA1ODc0MCwgNTg3NDUsIDU4NzUwLCAKLSAgICA1ODc1NSwgNTg3NjAsIDU4NzY1LCA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTEsIDU4Nzk2LCA1ODgwMCwgCi0gICAgNTg4MDYsIDU4ODE3LCA1ODgyNywgNTg4NDIsIDU4ODUyLCA1ODg1NiwgNTg4NjUsIDU4ODcxLCA1ODg3NywgNTg4ODMsIAotICAgIDU4ODg4LCA1ODg5MSwgNTg4OTYsIDU4OTAwLCAwLCA1ODkwNiwgNTg5MTAsIDU4OTEzLCA1ODkxNywgNTg5MjAsIDU4OTI0LCAKLSAgICA1ODkyNywgNTg5MzEsIDU4OTM0LCA1ODkzOCwgNTg5NDEsIDU4OTQ0LCA1ODk0OCwgNTg5NTIsIDU4OTU2LCA1ODk2MCwgCi0gICAgNTg5NjQsIDU4OTY4LCA1ODk3MiwgNTg5NzYsIDU4OTgwLCA1ODk4NCwgNTg5ODgsIDU4OTkyLCA1ODk5NiwgNTkwMDAsIAotICAgIDU5MDA0LCA1OTAwOCwgNTkwMTIsIDU5MDE2LCA1OTAyMCwgNTkwMjQsIDU5MDI4LCA1OTAzMiwgNTkwMzYsIDU5MDQxLCAKLSAgICA1OTA0NSwgNTkwNDksIDU5MDUzLCA1OTA1NywgNTkwNjAsIDU5MDY0LCA1OTA2NywgNTkwNzEsIDU5MDc1LCA1OTA3OSwgCi0gICAgNTkwODMsIDU5MDg2LCA1OTA5MCwgNTkwOTMsIDU5MDk3LCA1OTEwMSwgNTkxMDUsIDU5MTA5LCA1OTExMywgNTkxMTcsIAotICAgIDU5MTIxLCA1OTEyNSwgNTkxMjksIDU5MTMzLCA1OTEzNywgNTkxNDEsIDU5MTQ0LCA1OTE0OCwgNTkxNTIsIDU5MTU2LCAKLSAgICA1OTE2MCwgNTkxNjQsIDU5MTY3LCA1OTE3MiwgNTkxNzYsIDU5MTgxLCA1OTE4NSwgNTkxODgsIDU5MTkyLCA1OTE5NiwgCi0gICAgNTkyMDAsIDU5MjA0LCA1OTIwOSwgNTkyMTMsIDU5MjE3LCA1OTIyMSwgNTkyMjUsIDU5MjI4LCA1OTIzMiwgNTkyMzYsIDAsIAotICAgIDAsIDU5MjQxLCA1OTI0OSwgNTkyNTcsIDU5MjY0LCA1OTI3MSwgNTkyNzUsIDU5MjgxLCA1OTI4NiwgNTkyOTEsIDU5Mjk1LCAKLSAgICA1OTI5OCwgNTkzMDIsIDU5MzA1LCA1OTMwOSwgNTkzMTIsIDU5MzE2LCA1OTMxOSwgNTkzMjMsIDU5MzI2LCA1OTMyOSwgCi0gICAgNTkzMzMsIDU5MzM3LCA1OTM0MSwgNTkzNDUsIDU5MzQ5LCA1OTM1MywgNTkzNTcsIDU5MzYxLCA1OTM2NSwgNTkzNjksIAotICAgIDU5MzczLCA1OTM3NywgNTkzODEsIDU5Mzg1LCA1OTM4OSwgNTkzOTMsIDU5Mzk3LCA1OTQwMSwgNTk0MDUsIDU5NDA5LCAKLSAgICA1OTQxMywgNTk0MTcsIDU5NDIxLCA1OTQyNiwgNTk0MzAsIDU5NDM0LCA1OTQzOCwgNTk0NDIsIDU5NDQ1LCA1OTQ0OSwgCi0gICAgNTk0NTIsIDU5NDU2LCA1OTQ2MCwgNTk0NjQsIDU5NDY4LCA1OTQ3MSwgNTk0NzUsIDU5NDc4LCA1OTQ4MiwgNTk0ODYsIAotICAgIDU5NDkwLCA1OTQ5NCwgNTk0OTgsIDU5NTAyLCA1OTUwNiwgNTk1MTAsIDU5NTE0LCA1OTUxOCwgNTk1MjIsIDU5NTI2LCAKLSAgICA1OTUyOSwgNTk1MzMsIDU5NTM3LCA1OTU0MSwgNTk1NDUsIDU5NTQ5LCA1OTU1MiwgNTk1NTcsIDU5NTYxLCA1OTU2NiwgCi0gICAgNTk1NzAsIDU5NTczLCA1OTU3NywgNTk1ODEsIDU5NTg1LCA1OTU4OSwgNTk1OTQsIDU5NTk4LCA1OTYwMiwgNTk2MDYsIAotICAgIDU5NjEwLCA1OTYxMywgNTk2MTcsIDU5NjIxLCA1OTYyNiwgNTk2MzAsIDU5NjM0LCA1OTYzOCwgNTk2NDIsIDU5NjQ3LCAKLSAgICA1OTY1NCwgNTk2NTgsIDU5NjY0LCAwLCAwLCAwLCAwLCAwLCA1OTY2OSwgNTk2NzMsIDU5Njc3LCA1OTY4MCwgNTk2ODQsIAotICAgIDU5Njg4LCA1OTY5MiwgNTk2OTUsIDU5Njk4LCA1OTcwMiwgNTk3MDYsIDU5NzEwLCA1OTcxNCwgNTk3MTgsIDU5NzIyLCAKLSAgICA1OTcyNiwgNTk3MzAsIDU5NzM0LCA1OTczNywgNTk3NDEsIDU5NzQ1LCA1OTc0OCwgNTk3NTEsIDU5NzU0LCA1OTc1NywgCi0gICAgNTk3NjEsIDU5NzY1LCA1OTc2OSwgNTk3NzMsIDU5Nzc3LCA1OTc4MSwgNTk3ODUsIDU5Nzg5LCA1OTc5MywgNTk3OTcsIAotICAgIDU5ODAwLCA1OTgwMywgNTk4MDcsIDU5ODExLCA1OTgxNSwgNTk4MTksIDAsIDAsIDAsIDU5ODIzLCA1OTgyNywgNTk4MzEsIAotICAgIDU5ODM1LCA1OTgzOSwgNTk4NDMsIDU5ODQ3LCA1OTg1MSwgNTk4NTUsIDU5ODU5LCA1OTg2MywgNTk4NjcsIDU5ODcxLCAKLSAgICA1OTg3NSwgNTk4NzksIDU5ODgzLCA1OTg4NywgNTk4OTEsIDU5ODk1LCA1OTg5OSwgNTk5MDMsIDU5OTA3LCA1OTkxMSwgCi0gICAgNTk5MTUsIDU5OTE5LCA1OTkyMywgNTk5MjcsIDU5OTMxLCA1OTkzNSwgNTk5MzksIDU5OTQzLCA1OTk0NiwgNTk5NTAsIAotICAgIDU5OTUzLCA1OTk1NywgNTk5NjEsIDU5OTY0LCA1OTk2OCwgNTk5NzIsIDU5OTc1LCA1OTk3OSwgNTk5ODMsIDU5OTg3LCAKLSAgICA1OTk5MSwgNTk5OTQsIDU5OTk4LCA2MDAwMiwgNjAwMDYsIDYwMDEwLCA2MDAxNCwgNjAwMTgsIDYwMDIxLCA2MDAyNCwgCi0gICAgNjAwMjgsIDYwMDMyLCA2MDAzNiwgNjAwNDAsIDYwMDQ0LCA2MDA0OCwgNjAwNTIsIDYwMDU2LCA2MDA2MCwgNjAwNjQsIAotICAgIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgwLCA2MDA4NCwgNjAwODgsIDYwMDkyLCA2MDA5NiwgNjAxMDAsIDYwMTA0LCAKLSAgICA2MDEwOCwgNjAxMTIsIDYwMTE2LCA2MDEyMCwgNjAxMjQsIDYwMTI4LCA2MDEzMiwgNjAxMzYsIDYwMTQwLCA2MDE0NCwgCi0gICAgNjAxNDgsIDYwMTUyLCA2MDE1NiwgNjAxNjAsIDYwMTY0LCA2MDE2OCwgNjAxNzIsIDYwMTc2LCA2MDE4MCwgNjAxODQsIAotICAgIDYwMTg4LCAwLCA2MDE5MiwgNjAxOTgsIDYwMjA0LCA2MDIwOSwgNjAyMTQsIDYwMjE5LCA2MDIyNSwgNjAyMzEsIDYwMjM3LCAKLSAgICA2MDI0MywgNjAyNDksIDYwMjU1LCA2MDI2MSwgNjAyNjcsIDYwMjczLCA2MDI3OSwgNjAyODUsIDYwMjg5LCA2MDI5MywgCi0gICAgNjAyOTcsIDYwMzAxLCA2MDMwNSwgNjAzMDksIDYwMzEzLCA2MDMxNywgNjAzMjEsIDYwMzI1LCA2MDMyOSwgNjAzMzMsIAotICAgIDYwMzM3LCA2MDM0MSwgNjAzNDUsIDYwMzQ5LCA2MDM1MywgNjAzNTcsIDYwMzYxLCA2MDM2NSwgNjAzNzAsIDYwMzc1LCAKLSAgICA2MDM4MCwgNjAzODUsIDYwMzg5LCA2MDM5MywgMCwgMCwgMCwgMCwgMCwgNjAzOTcsIDYwNDAyLCA2MDQwNywgNjA0MTIsIAotICAgIDYwNDE3LCA2MDQyMiwgNjA0MjcsIDYwNDMyLCA2MDQzNywgNjA0NDIsIDYwNDQ3LCA2MDQ1MiwgNjA0NTcsIDYwNDYyLCAKLSAgICA2MDQ2NywgNjA0NzIsIDYwNDc2LCA2MDQ4MSwgNjA0ODUsIDYwNDkwLCA2MDQ5NSwgNjA1MDAsIDYwNTA1LCA2MDUxMCwgCi0gICAgNjA1MTUsIDYwNTIwLCA2MDUyNSwgNjA1MzAsIDYwNTM1LCA2MDU0MCwgNjA1NDUsIDYwNTUwLCA2MDU1NSwgNjA1NjAsIAotICAgIDYwNTY1LCA2MDU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA1NzUsIDYwNTgwLCA2MDU4NSwgCi0gICAgNjA1OTAsIDYwNTk0LCA2MDU5OSwgNjA2MDMsIDYwNjA4LCA2MDYxMywgNjA2MTgsIDYwNjIzLCA2MDYyOCwgNjA2MzIsIAotICAgIDYwNjM3LCA2MDY0MiwgNjA2NDcsIDYwNjUyLCA2MDY1NiwgNjA2NjAsIDYwNjY0LCA2MDY2OCwgNjA2NzIsIDYwNjc2LCAKLSAgICA2MDY4MCwgNjA2ODQsIDYwNjg4LCA2MDY5MiwgNjA2OTYsIDYwNzAwLCA2MDcwNCwgNjA3MDgsIDYwNzEzLCA2MDcxOCwgCi0gICAgNjA3MjMsIDYwNzI4LCA2MDczMywgNjA3MzgsIDYwNzQzLCA2MDc0OCwgNjA3NTMsIDYwNzU4LCA2MDc2MywgNjA3NjgsIAotICAgIDYwNzczLCA2MDc3OCwgNjA3ODMsIDYwNzg5LCAwLCA2MDc5NiwgNjA3OTksIDYwODAyLCA2MDgwNSwgNjA4MDgsIDYwODExLCAKLSAgICA2MDgxNCwgNjA4MTcsIDYwODIwLCA2MDgyMywgNjA4MjcsIDYwODMxLCA2MDgzNSwgNjA4MzksIDYwODQzLCA2MDg0NywgCi0gICAgNjA4NTEsIDYwODU1LCA2MDg1OSwgNjA4NjMsIDYwODY3LCA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4MywgNjA4ODcsIAotICAgIDYwODkxLCA2MDg5NSwgNjA4OTksIDYwOTAzLCA2MDkwNywgNjA5MTEsIDYwOTE1LCA2MDkxOSwgNjA5MjMsIDYwOTI3LCAKLSAgICA2MDkzMSwgNjA5MzUsIDYwOTM5LCA2MDk0MywgNjA5NDcsIDYwOTU2LCA2MDk2NSwgNjA5NzQsIDYwOTgzLCA2MDk5MiwgCi0gICAgNjEwMDEsIDYxMDEwLCA2MTAxOSwgNjEwMjIsIDYxMDI3LCA2MTAzMiwgNjEwMzcsIDYxMDQyLCA2MTA0NywgNjEwNTIsIAotICAgIDYxMDU3LCA2MTA2MiwgNjEwNjcsIDYxMDcxLCA2MTA3NiwgNjEwODEsIDYxMDg2LCA2MTA5MSwgNjEwOTYsIDYxMTAwLCAKLSAgICA2MTEwNCwgNjExMDgsIDYxMTEyLCA2MTExNiwgNjExMjAsIDYxMTI0LCA2MTEyOCwgNjExMzIsIDYxMTM2LCA2MTE0MCwgCi0gICAgNjExNDQsIDYxMTQ4LCA2MTE1MiwgNjExNTcsIDYxMTYyLCA2MTE2NywgNjExNzIsIDYxMTc3LCA2MTE4MiwgNjExODcsIAotICAgIDYxMTkyLCA2MTE5NywgNjEyMDIsIDYxMjA3LCA2MTIxMiwgNjEyMTcsIDYxMjIyLCA2MTIyOCwgNjEyMzQsIDYxMjM5LCAKLSAgICA2MTI0NCwgNjEyNDcsIDYxMjUwLCA2MTI1MywgNjEyNTYsIDYxMjU5LCA2MTI2MiwgNjEyNjUsIDYxMjY4LCA2MTI3MSwgCi0gICAgNjEyNzUsIDYxMjc5LCA2MTI4MywgNjEyODcsIDYxMjkxLCA2MTI5NSwgNjEyOTksIDYxMzAzLCA2MTMwNywgNjEzMTEsIAotICAgIDYxMzE1LCA2MTMxOSwgNjEzMjMsIDYxMzI3LCA2MTMzMSwgNjEzMzUsIDYxMzM5LCA2MTM0MywgNjEzNDcsIDYxMzUxLCAKLSAgICA2MTM1NSwgNjEzNTksIDYxMzYzLCA2MTM2NywgNjEzNzEsIDYxMzc1LCA2MTM3OSwgNjEzODMsIDYxMzg3LCA2MTM5MSwgCi0gICAgNjEzOTUsIDYxMzk5LCA2MTQwMywgNjE0MDcsIDYxNDExLCA2MTQxNSwgNjE0MTksIDYxNDIzLCA2MTQyNywgNjE0MzEsIAotICAgIDYxNDM2LCA2MTQ0MSwgNjE0NDYsIDYxNDUxLCA2MTQ1NSwgNjE0NjAsIDYxNDY1LCA2MTQ3MCwgNjE0NzUsIDYxNDgwLCAKLSAgICA2MTQ4NSwgNjE0OTAsIDYxNDk1LCA2MTUwMCwgNjE1MDQsIDYxNTEwLCA2MTUxNiwgNjE1MjIsIDYxNTI4LCA2MTUzNCwgCi0gICAgNjE1NDAsIDYxNTQ2LCA2MTU1MiwgNjE1NTgsIDYxNTY0LCA2MTU3MCwgNjE1NzYsIDYxNTc5LCA2MTU4MiwgNjE1ODUsIAotICAgIDYxNTkwLCA2MTU5MywgNjE1OTYsIDYxNTk5LCA2MTYwMiwgNjE2MDUsIDYxNjA4LCA2MTYxMiwgNjE2MTYsIDYxNjIwLCAKLSAgICA2MTYyNCwgNjE2MjgsIDYxNjMyLCA2MTYzNiwgNjE2NDAsIDYxNjQ0LCA2MTY0OCwgNjE2NTIsIDYxNjU2LCA2MTY2MCwgCi0gICAgNjE2NjMsIDYxNjY2LCA2MTY3MCwgNjE2NzQsIDYxNjc4LCA2MTY4MiwgNjE2ODUsIDYxNjg5LCA2MTY5MywgNjE2OTcsIAotICAgIDYxNzAxLCA2MTcwNCwgNjE3MDgsIDYxNzEyLCA2MTcxNiwgNjE3MjAsIDYxNzIzLCA2MTcyNywgNjE3MzEsIDYxNzM0LCAKLSAgICA2MTczOCwgNjE3NDIsIDYxNzQ2LCA2MTc1MCwgNjE3NTQsIDYxNzU4LCA2MTc2MiwgMCwgNjE3NjYsIDYxNzY5LCA2MTc3MiwgCi0gICAgNjE3NzUsIDYxNzc4LCA2MTc4MSwgNjE3ODQsIDYxNzg3LCA2MTc5MCwgNjE3OTMsIDYxNzk2LCA2MTc5OSwgNjE4MDIsIAotICAgIDYxODA1LCA2MTgwOCwgNjE4MTEsIDYxODE0LCA2MTgxNywgNjE4MjAsIDYxODIzLCA2MTgyNiwgNjE4MjksIDYxODMyLCAKLSAgICA2MTgzNSwgNjE4MzgsIDYxODQxLCA2MTg0NCwgNjE4NDcsIDYxODUwLCA2MTg1MywgNjE4NTYsIDYxODU5LCA2MTg2MiwgCi0gICAgNjE4NjUsIDYxODY4LCA2MTg3MSwgNjE4NzQsIDYxODc3LCA2MTg4MCwgNjE4ODMsIDYxODg2LCA2MTg4OSwgNjE4OTIsIAotICAgIDYxODk1LCA2MTg5OCwgNjE5MDEsIDYxOTA0LCA2MTkwNywgNjE5MTAsIDYxOTEzLCA2MTkxNiwgNjE5MTksIDYxOTIyLCAKLSAgICA2MTkyNSwgNjE5MjgsIDYxOTMxLCA2MTkzNCwgNjE5MzcsIDYxOTQwLCA2MTk0MywgNjE5NDYsIDYxOTQ5LCA2MTk1MiwgCi0gICAgNjE5NTUsIDYxOTU4LCA2MTk2MSwgNjE5NjQsIDYxOTY3LCA2MTk3MCwgNjE5NzMsIDYxOTc2LCA2MTk3OSwgNjE5ODIsIAotICAgIDYxOTg1LCA2MTk4OCwgNjE5OTEsIDYxOTk0LCA2MTk5NywgNjIwMDAsIDYyMDAzLCA2MjAwNiwgNjIwMDksIDYyMDEyLCAKLSAgICA2MjAxNSwgNjIwMTgsIDYyMDIxLCA2MjAyNCwgNjIwMjcsIDYyMDMwLCA2MjAzOCwgNjIwNDUsIDYyMDUyLCA2MjA1OSwgCi0gICAgNjIwNjYsIDYyMDczLCA2MjA4MCwgNjIwODcsIDYyMDk0LCA2MjEwMSwgNjIxMDksIDYyMTE3LCA2MjEyNSwgNjIxMzMsIAotICAgIDYyMTQxLCA2MjE0OSwgNjIxNTcsIDYyMTY1LCA2MjE3MywgNjIxODEsIDYyMTg5LCA2MjE5NywgNjIyMDUsIDYyMjEzLCAKLSAgICA2MjIyMSwgNjIyMjQsIDYyMjI3LCA2MjIzMCwgNjIyMzIsIDYyMjM1LCA2MjIzOCwgNjIyNDEsIDYyMjQ2LCA2MjI1MSwgCi0gICAgNjIyNTQsIDYyMjYxLCA2MjI2OCwgNjIyNzUsIDYyMjgyLCA2MjI4NSwgNjIyOTAsIDYyMjkyLCA2MjI5NiwgNjIyOTgsIAotICAgIDYyMzAwLCA2MjMwMywgNjIzMDYsIDYyMzA5LCA2MjMxMiwgNjIzMTUsIDYyMzE4LCA2MjMyMSwgNjIzMjYsIDYyMzMxLCAKLSAgICA2MjMzNCwgNjIzMzcsIDYyMzQwLCA2MjM0MywgNjIzNDYsIDYyMzQ5LCA2MjM1MiwgNjIzNTYsIDYyMzU5LCA2MjM2MiwgCi0gICAgNjIzNjUsIDYyMzY4LCA2MjM3MSwgNjIzNzUsIDYyMzc4LCA2MjM4MSwgNjIzODQsIDYyMzg5LCA2MjM5NCwgNjIzOTksIAotICAgIDYyNDA0LCA2MjQwOSwgNjI0MTQsIDYyNDE5LCA2MjQyNCwgNjI0MjksIDYyNDM3LCA2MjQzOSwgNjI0NDIsIDYyNDQ1LCAKLSAgICA2MjQ0OCwgNjI0NTEsIDYyNDU2LCA2MjQ2NCwgNjI0NjcsIDYyNDcwLCA2MjQ3NCwgNjI0NzcsIDYyNDgwLCA2MjQ4MywgCi0gICAgNjI0ODgsIDYyNDkxLCA2MjQ5NCwgNjI0OTksIDYyNTAyLCA2MjUwNSwgNjI1MTAsIDYyNTEzLCA2MjUxNiwgNjI1MjEsIAotICAgIDYyNTI2LCA2MjUzMSwgNjI1MzQsIDYyNTM3LCA2MjU0MCwgNjI1NDMsIDYyNTQ5LCA2MjU1MiwgNjI1NTUsIDYyNTU4LCAKLSAgICA2MjU2MCwgNjI1NjMsIDYyNTY2LCA2MjU2OSwgNjI1NzQsIDYyNTc3LCA2MjU4MCwgNjI1ODMsIDYyNTg2LCA2MjU4OSwgCi0gICAgNjI1OTQsIDYyNTk3LCA2MjYwMCwgNjI2MDMsIDYyNjA2LCA2MjYwOSwgNjI2MTIsIDYyNjE1LCA2MjYxOCwgNjI2MjEsIAotICAgIDYyNjI2LCA2MjYzMCwgNjI2MzcsIDYyNjQ0LCA2MjY1MSwgNjI2NTgsIDYyNjY1LCA2MjY3MiwgNjI2NzksIDYyNjg2LCAKLSAgICA2MjY5MywgNjI3MDEsIDYyNzA5LCA2MjcxNywgNjI3MjUsIDYyNzMzLCA2Mjc0MSwgNjI3NDksIDYyNzU3LCA2Mjc2NSwgCi0gICAgNjI3NzMsIDYyNzgxLCA2Mjc4OSwgNjI3OTcsIDYyODA1LCA2MjgxMywgNjI4MjEsIDYyODI5LCA2MjgzNywgNjI4NDUsIAotICAgIDYyODUzLCA2Mjg2MSwgNjI4NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NywgMTUxLCAxNTYsIDE2MSwgMTY1LCAxNzAsIDE3NSwgMTc5LCAxODQsIDE4OSwgMTk0LCAxOTksIDIwNCwgMjA3LCAKKyAgICAyMTEsIDIxNCwgMjE4LCAyMjEsIDIyNSwgMjI5LCAyMzQsIDIzOSwgMjQ0LCAyNDgsIDI1MywgMjU4LCAyNjMsIDI2NywgCisgICAgMjcyLCAyNzcsIDI4MSwgMjg1LCAyOTAsIDI5NCwgMjk5LCAzMDQsIDMwOCwgMzEzLCAzMTgsIDMyMiwgMzI3LCAzMzIsIAorICAgIDMzNywgMzQyLCAzNDcsIDM1MSwgMzU0LCAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMzYzLCAzNjgsIAorICAgIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OCwgMzkxLCAzOTcsIDQwNSwgNDA4LCA0MTIsIDQxNSwgNDE3LCAKKyAgICA0MjAsIDQyMywgNDI2LCA0MjksIDQzMywgNDM2LCA0MzksIDQ0MywgNDQ1LCA0NDgsIDQ1NCwgNDYyLCA0NjksIDQ3NiwgCisgICAgNDgzLCA0ODgsIDQ5NSwgNTAxLCA1MDgsIDUxNCwgNTIxLCA1MjksIDUzNCwgNTQyLCA1NDksIDU1NSwgNTYyLCA1NjksIAorICAgIDU3NywgNTg0LCA1OTIsIDYwMCwgNjA1LCA2MTIsIDYxOSwgNjI1LCA2MzIsIDYzOCwgNjQ1LCA2NDgsIDY1NCwgNjYxLCAKKyAgICA2NjcsIDY3NCwgNjgxLCA2ODgsIDY5MywgNzAwLCA3MDcsIDcxMywgNzIwLCA3MjYsIDczMywgNzQxLCA3NDYsIDc1NCwgCisgICAgNzYxLCA3NjcsIDc3NCwgNzgxLCA3ODksIDc5NiwgODA0LCA4MTIsIDgxNywgODI0LCA4MzEsIDgzNywgODQ0LCA4NTAsIAorICAgIDg1NywgODYwLCA4NjYsIDg3MywgODc5LCA4ODYsIDg5MywgOTAwLCA5MDUsIDkxMywgOTIwLCA5MjcsIDkzNCwgOTQxLCAKKyAgICA5NDgsIDk1NSwgOTYyLCA5NjksIDk3NywgOTg1LCA5OTMsIDEwMDEsIDEwMDksIDEwMTcsIDEwMjUsIDEwMzMsIDEwNDAsIAorICAgIDEwNDcsIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjUsIAorICAgIDExMzMsIDExNDEsIDExNDksIDExNTcsIDExNjUsIDExNzMsIDExODEsIDExODksIDExOTcsIDEyMDQsIDEyMTEsIDEyMTgsIAorICAgIDEyMjUsIDEyMzMsIDEyNDEsIDEyNDksIDEyNTcsIDEyNjUsIDEyNzMsIDEyODEsIDEyODcsIDEyOTIsIDEyOTcsIDEzMDUsIAorICAgIDEzMTMsIDEzMjEsIDEzMjksIDEzMzQsIDEzNDEsIDEzNDgsIDEzNTYsIDEzNjQsIDEzNzIsIDEzODAsIDEzOTAsIDE0MDAsIAorICAgIDE0MDcsIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzYsIDE0NDQsIDE0NTIsIDE0NjAsIDE0NzEsIDE0NzYsIDE0ODEsIDE0ODgsIAorICAgIDE0OTUsIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MjgsIDE1MzMsIDE1NDAsIDE1NDcsIDE1NTUsIDE1NjMsIDE1NzEsIAorICAgIDE1NzksIDE1ODYsIDE1OTMsIDE2MDEsIDE2MDksIDE2MTcsIDE2MjUsIDE2MzMsIDE2NDEsIDE2NDksIDE2NTcsIDE2NjUsIAorICAgIDE2NzMsIDE2ODAsIDE2ODcsIDE2OTMsIDE2OTksIDE3MDYsIDE3MTMsIDE3MjAsIDE3MjcsIDE3MzUsIDE3NDMsIDE3NTAsIAorICAgIDE3NTcsIDE3NjQsIDE3NzEsIDE3NzksIDE3ODcsIDE3OTUsIDE4MDMsIDE4MTEsIDE4MTgsIDE4MjUsIDE4MzMsIDE4NDEsIAorICAgIDE4NDksIDE4NTcsIDE4NjMsIDE4NjksIDE4NzUsIDE4ODIsIDE4ODksIDE4OTQsIDE4OTksIDE5MDQsIDE5MTEsIDE5MTgsIAorICAgIDE5MjUsIDE5MzIsIDE5NDAsIDE5NDgsIDE5NTUsIDE5NjEsIDE5NjYsIDE5NzEsIDE5NzgsIDE5ODUsIDE5OTIsIDE5OTcsIAorICAgIDIwMDIsIDIwMDcsIDIwMTQsIDIwMjEsIDIwMjgsIDIwMzUsIDIwNDIsIDIwNDgsIDIwNTYsIDIwNjYsIDIwNzQsIDIwODEsIAorICAgIDIwODgsIDIwOTMsIDIwOTgsIDIxMDUsIDIxMTIsIDIxMTYsIDIxMjEsIDIxMjYsIDIxMzEsIDIxMzksIDIxNDgsIDIxNTUsIAorICAgIDIxNjIsIDIxNzEsIDIxNzgsIDIxODUsIDIxOTAsIDIxOTcsIDIyMDQsIDIyMTEsIDIyMTgsIDIyMjUsIDIyMzAsIDIyMzcsIAorICAgIDIyNDQsIDIyNTIsIDIyNTcsIDIyNjIsIDIyNjcsIDIyNzcsIDIyODEsIDIyODcsIDIyOTMsIDIyOTksIDIzMDUsIDIzMTMsIAorICAgIDIzMjYsIDIzMzQsIDIzMzksIDIzNDksIDIzNTQsIDIzNTksIDIzNjksIDIzNzQsIDIzODEsIDIzODgsIDIzOTYsIDI0MDQsIAorICAgIDI0MTEsIDI0MTgsIDI0MjUsIDI0MzIsIDI0NDIsIDI0NTIsIDI0NjEsIDI0NzAsIDI0ODAsIDI0OTAsIDI1MDAsIDI1MTAsIAorICAgIDI1MTYsIDI1MjYsIDI1MzYsIDI1NDYsIDI1NTYsIDI1NjQsIDI1NzIsIDI1NzksIDI1ODYsIDI1OTQsIDI2MDIsIDI2MTAsIAorICAgIDI2MTgsIDI2MjUsIDI2MzIsIDI2NDIsIDI2NTIsIDI2NjAsIDI2NjgsIDI2NzYsIDI2ODEsIDI2OTEsIDI2OTYsIDI3MDMsIAorICAgIDI3MTAsIDI3MTUsIDI3MjAsIDI3MjgsIDI3MzYsIDI3NDYsIDI3NTYsIDI3NjMsIDI3NzAsIDI3NzksIDI3ODgsIDI3OTYsIAorICAgIDI4MDQsIDI4MTMsIDI4MjIsIDI4MzAsIDI4MzgsIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODQsIDI4OTQsIDI5MDIsIAorICAgIDI5MTAsIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTYsIDI5NjYsIDI5NzQsIDI5ODIsIDI5OTEsIDMwMDAsIDMwMDksIAorICAgIDMwMTgsIDMwMjcsIDMwMzYsIDMwNDEsIDMwNDYsIDMwNTQsIDMwNjIsIDMwNzIsIDMwODAsIDMwODUsIDMwOTAsIDMwOTcsIAorICAgIDMxMDQsIDMxMTEsIDMxMTgsIDMxMjUsIDMxMzIsIDMxNDIsIDMxNTIsIDMxNjIsIDMxNzIsIDMxNzksIDMxODYsIDMxOTYsIAorICAgIDMyMDYsIDMyMTQsIDMyMjIsIDMyMzAsIDMyMzgsIDMyNDYsIDMyNTMsIDMyNjAsIDMyNjcsIDMyNzMsIDMyODAsIDMyODcsIAorICAgIDMyOTQsIDMzMDMsIDMzMTMsIDMzMjMsIDMzMzAsIDMzMzcsIDMzNDMsIDMzNDgsIDMzNTUsIDMzNjEsIDMzNjcsIDMzNzQsIAorICAgIDMzODEsIDMzOTIsIDM0MDIsIDM0MDksIDM0MTYsIDM0MjMsIDM0MzAsIDM0MzYsIDM0NDEsIDM0NDgsIDM0NTQsIDM0NTksIAorICAgIDM0NjcsIDM0NzUsIDM0ODIsIDM0ODgsIDM0OTMsIDM1MDAsIDM1MDUsIDM1MTIsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDYsIAorICAgIDM1NTIsIDM1NTgsIDM1NjMsIDM1NzAsIDM1NzcsIDM1ODQsIDM1OTEsIDM1OTgsIDM2MDMsIDM2MDgsIDM2MTcsIDM2MjUsIAorICAgIDM2MzQsIDM2MzksIDM2NDUsIDM2NTYsIDM2NjMsIDM2NzEsIDM2ODAsIDM2ODYsIDM2OTIsIDM2OTgsIDM3MDUsIDM3MTAsIAorICAgIDM3MTYsIDM3MjcsIDM3MzYsIDM3NDUsIDM3NTMsIDM3NjEsIDM3NzEsIDM3NzYsIDM3ODMsIDM3OTAsIDM3OTUsIDM4MDcsIAorICAgIDM4MTYsIDM4MjQsIDM4MzEsIDM4NDAsIDM4NDUsIDM4NTAsIDM4NTcsIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODQsIDM4OTMsIAorICAgIDM5MDEsIDM5MDYsIDM5MTQsIDM5MjAsIDM5MjgsIDM5MzYsIDM5NDIsIDM5NDgsIDM5NTQsIDM5NjEsIDM5NjksIDM5NzUsIAorICAgIDM5ODMsIDM5OTAsIDM5OTUsIDQwMDIsIDQwMTAsIDQwMjAsIDQwMjcsIDQwMzQsIDQwNDQsIDQwNTEsIDQwNTgsIDQwNjgsIAorICAgIDQwNzUsIDQwODIsIDQwODksIDQwOTUsIDQxMDEsIDQxMTEsIDQxMjQsIDQxMjksIDQxMzYsIDQxNDEsIDQxNDUsIDQxNTEsIAorICAgIDQxNjAsIDQxNjcsIDQxNzIsIDQxNzcsIDQxODEsIDQxODYsIDQxOTIsIDQxOTYsIDQyMDIsIDQyMDgsIDQyMTQsIDQyMjAsIAorICAgIDQyMjgsIDQyMzMsIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTQsIDQyNTYsIDQyNjEsIDQyNjUsIDQyNzEsIDQyNzcsIDQyODMsIAorICAgIDQyODgsIDQyOTUsIDQzMDIsIDQzMDgsIDQzMTUsIDQzMjMsIDQzMzEsIDQzMzYsIDQzNDEsIDQzNDUsIDQzNTAsIDQzNTIsIAorICAgIDQzNTQsIDQzNTcsIDQzNTksIDQzNjEsIDQzNjYsIDQzNzEsIDQzNzcsIDQzODIsIDQzODYsIDQzOTEsIDQzOTYsIDQ0MDUsIAorICAgIDQ0MTEsIDQ0MTYsIDQ0MjIsIDQ0MjcsIDQ0MzMsIDQ0NDEsIDQ0NDksIDQ0NTMsIDQ0NTcsIDQ0NjIsIDQ0NjgsIDQ0NzQsIAorICAgIDQ0ODAsIDQ0ODYsIDQ0OTEsIDQ0OTksIDQ1MDgsIDQ1MTcsIDQ1MjEsIDQ1MjcsIDQ1MzQsIDQ1NDEsIDQ1NDgsIDQ1NTUsIAorICAgIDQ1NTksIDQ1NjQsIDQ1NjksIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODYsIDQ1ODksIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIAorICAgIDQ2MDUsIDQ2MDksIDQ2MTUsIDQ2MTgsIDQ2MjMsIDQ2MjksIDQ2MzUsIDQ2MzgsIDQ2NDMsIDQ2NDksIDQ2NTMsIDQ2NTksIAorICAgIDQ2NjUsIDQ2NzEsIDQ2NzcsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTUsIDQ3MDEsIDQ3MDYsIDQ3MTEsIDQ3MTUsIDQ3MjAsIAorICAgIDQ3MjYsIDQ3MzIsIDQ3MzUsIDQ3MzksIDQ3NDMsIDQ3NDcsIDQ3NTAsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjksIDQ3NzMsIAorICAgIDQ3NzksIDQ3ODMsIDQ3ODksIDQ3OTMsIDQ3OTcsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTgsIDQ4MjQsIDQ4MzEsIDQ4MzcsIAorICAgIDQ4NDMsIDQ4NDksIDQ4NTIsIDQ4NTYsIDQ4NjAsIDQ4NjMsIDQ4NjcsIDQ4NzIsIDQ4NzcsIDQ4ODEsIDQ4ODUsIDQ4OTEsIAorICAgIDQ4OTUsIDQ4OTksIDQ5MDQsIDQ5MTAsIDQ5MTUsIDQ5MjEsIDQ5MjUsIDQ5MzIsIDQ5MzcsIDQ5NDIsIDQ5NDcsIDQ5NTIsIAorICAgIDQ5NTgsIDQ5NjEsIDQ5NjUsIDQ5NzAsIDQ5NzUsIDQ5ODQsIDQ5OTAsIDQ5OTUsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIAorICAgIDUwMTcsIDUwMjEsIDUwMjYsIDUwMjksIDUwMzUsIDUwNDAsIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzEsIAorICAgIDUwNzcsIDUwODMsIDUwODgsIDUwOTMsIDUwOTksIDUxMDUsIDUxMTEsIDUxMTYsIDUxMjEsIDUxMjgsIDUxMzUsIDUxMzksIAorICAgIDUxNDUsIDUxNTIsIDAsIDAsIDUxNTksIDUxNjIsIDUxNzEsIDUxODAsIDUxOTEsIDAsIDAsIDAsIDAsIDAsIDUxOTUsIAorICAgIDUxOTgsIDUyMDMsIDUyMTEsIDUyMTYsIDUyMjQsIDUyMzIsIDAsIDUyNDAsIDAsIDUyNDgsIDUyNTYsIDUyNjQsIDUyNzUsIAorICAgIDUyODAsIDUyODUsIDUyOTAsIDUyOTUsIDUzMDAsIDUzMDUsIDUzMTAsIDUzMTUsIDUzMjAsIDUzMjUsIDUzMzAsIDUzMzUsIAorICAgIDUzNDAsIDUzNDUsIDUzNTAsIDUzNTUsIDAsIDUzNjAsIDUzNjUsIDUzNzAsIDUzNzUsIDUzODAsIDUzODUsIDUzOTAsIAorICAgIDUzOTUsIDU0MDMsIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTQsIDU0NTksIDU0NjQsIDU0NjksIDU0NzQsIAorICAgIDU0NzksIDU0ODQsIDU0ODksIDU0OTQsIDU0OTksIDU1MDQsIDU1MDksIDU1MTQsIDU1MTksIDU1MjQsIDU1MjksIDU1MzQsIAorICAgIDU1MzksIDU1NDUsIDU1NTAsIDU1NTUsIDU1NjAsIDU1NjUsIDU1NzAsIDU1NzUsIDU1ODAsIDU1ODgsIDU1OTYsIDU2MDQsIAorICAgIDU2MTIsIDU2MjAsIDU2MjUsIDU2MjksIDU2MzMsIDU2NDAsIDU2NTAsIDU2NjAsIDU2NjQsIDU2NjgsIDU2NzIsIDU2NzgsIAorICAgIDU2ODUsIDU2ODksIDU2OTQsIDU2OTgsIDU3MDMsIDU3MDcsIDU3MTIsIDU3MTYsIDU3MjEsIDU3MjYsIDU3MzEsIDU3MzYsIAorICAgIDU3NDEsIDU3NDYsIDU3NTEsIDU3NTYsIDU3NjEsIDU3NjYsIDU3NzEsIDU3NzYsIDU3ODEsIDU3ODYsIDU3OTEsIDU3OTUsIAorICAgIDU3OTksIDU4MDUsIDU4MDksIDU4MTQsIDU4MjAsIDU4MjgsIDU4MzMsIDU4MzgsIDU4NDUsIDU4NTAsIDU4NTUsIDU4NjIsIAorICAgIDU4NzEsIDU4ODAsIDU4OTEsIDU4OTksIDU5MDQsIDU5MDksIDU5MTQsIDU5MjEsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDIsIAorICAgIDU5NDcsIDU5NTIsIDU5NTcsIDU5NjIsIDU5NzAsIDU5NzYsIDU5ODEsIDU5ODUsIDU5OTAsIDU5OTUsIDYwMDAsIDYwMDUsIAorICAgIDYwMTAsIDYwMTUsIDYwMjAsIDYwMjQsIDYwMzAsIDYwMzQsIDYwMzksIDYwNDQsIDYwNDksIDYwNTMsIDYwNTgsIDYwNjMsIAorICAgIDYwNjgsIDYwNzMsIDYwNzcsIDYwODIsIDYwODYsIDYwOTEsIDYwOTYsIDYxMDEsIDYxMDYsIDYxMTIsIDYxMTcsIDYxMjMsIAorICAgIDYxMjcsIDYxMzIsIDYxMzYsIDYxNDAsIDYxNDUsIDYxNTAsIDYxNTUsIDYxNjAsIDYxNjUsIDYxNzAsIDYxNzUsIDYxNzksIAorICAgIDYxODUsIDYxODksIDYxOTQsIDYxOTksIDYyMDQsIDYyMDgsIDYyMTMsIDYyMTgsIDYyMjMsIDYyMjgsIDYyMzIsIDYyMzcsIAorICAgIDYyNDEsIDYyNDYsIDYyNTEsIDYyNTYsIDYyNjEsIDYyNjcsIDYyNzIsIDYyNzgsIDYyODIsIDYyODcsIDYyOTEsIDYyOTksIAorICAgIDYzMDQsIDYzMDksIDYzMTQsIDYzMjEsIDYzMjYsIDYzMzIsIDYzMzcsIDYzNDIsIDYzNDcsIDYzNTIsIDYzNTcsIDYzNjIsIAorICAgIDYzNzAsIDYzNzYsIDYzODEsIDYzODYsIDYzOTEsIDYzOTYsIDY0MDEsIDY0MDcsIDY0MTMsIDY0MjAsIDY0MjcsIDY0MzYsIAorICAgIDY0NDUsIDY0NTIsIDY0NTksIDY0NjgsIDY0NzcsIDY0ODIsIDY0ODcsIDY0OTIsIDY0OTcsIDY1MDIsIDY1MDcsIDY1MTIsIAorICAgIDY1MTcsIDY1MjgsIDY1MzksIDY1NDQsIDY1NDksIDY1NTYsIDY1NjMsIDY1NzEsIDY1NzksIDY1ODQsIDY1ODksIDY1OTQsIAorICAgIDY1OTksIDY2MDMsIDY2MDcsIDY2MTEsIDY2MTcsIDY2MjMsIDY2MjcsIDY2MzQsIDY2MzksIDY2NDksIDY2NTksIDY2NjUsIAorICAgIDY2NzEsIDY2NzksIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTAsIDY3MTcsIDY3MjYsIDY3MzUsIDY3NDMsIDY3NTEsIDY3NTksIAorICAgIDY3NjcsIDY3NzUsIDY3ODMsIDY3OTEsIDY3OTksIDY4MDYsIDY4MTMsIDY4MTksIDY4MjUsIDY4MzMsIDY4NDEsIDY4NDgsIAorICAgIDY4NTUsIDY4NjQsIDY4NzMsIDY4NzksIDY4ODUsIDY4OTMsIDY5MDEsIDY5MDksIDY5MTcsIDY5MjMsIDY5MjksIDY5MzcsIAorICAgIDY5NDUsIDY5NTMsIDY5NjEsIDY5NjgsIDY5NzUsIDY5ODMsIDY5OTEsIDY5OTksIDcwMDcsIDcwMTIsIDcwMTcsIDcwMjQsIAorICAgIDcwMzEsIDcwNDEsIDcwNTEsIDcwNTUsIDcwNjMsIDcwNzEsIDcwNzgsIDcwODUsIDcwOTMsIDcxMDEsIDcxMDgsIDcxMTUsIAorICAgIDcxMjMsIDcxMzEsIDcxMzgsIDcxNDUsIDcxNTMsIDcxNjEsIDcxNjYsIDcxNzMsIDcxODAsIDcxODcsIDcxOTQsIDcyMDAsIAorICAgIDcyMDYsIDcyMTQsIDcyMjIsIDcyMjcsIDcyMzIsIDcyNDAsIDcyNDgsIDcyNTYsIDcyNjQsIDcyNzIsIDcyODAsIDcyODcsIAorICAgIDcyOTQsIDczMDIsIDczMTAsIDczMTgsIDczMjYsIDczMzMsIDczNDAsIDczNDYsIDczNTIsIDczNjEsIDczNzAsIDczNzcsIAorICAgIDczODQsIDczOTEsIDczOTgsIDc0MDUsIDc0MTIsIDc0MTksIDc0MjYsIDc0MzQsIDc0NDIsIDc0NTAsIDc0NTgsIDc0NjYsIAorICAgIDc0NzQsIDc0ODQsIDc0OTQsIDc1MDEsIDc1MDgsIDc1MTUsIDc1MjIsIDc1MjksIDc1MzYsIDc1NDMsIDc1NTAsIDc1NTcsIAorICAgIDc1NjQsIDc1NzEsIDc1NzgsIDc1ODUsIDc1OTIsIDc1OTksIDc2MDYsIDc2MTMsIDc2MjAsIDc2MjcsIDc2MzQsIDc2NDEsIAorICAgIDc2NDgsIDc2NTUsIDc2NjIsIDc2NjcsIDc2NzIsIDc2NzcsIDc2ODIsIDc2ODcsIDc2OTIsIDc2OTcsIDc3MDIsIDc3MDcsIAorICAgIDc3MTIsIDc3MTgsIDc3MjQsIDc3MzMsIDc3NDIsIDc3NTEsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc3OTIsIDc3OTcsIDc4MDIsIDc4MDcsIDc4MTIsIDc4MTcsIDc4MjIsIDc4MjcsIDc4MzIsIAorICAgIDc4MzYsIDc4NDEsIDc4NDYsIDc4NTEsIDc4NTYsIDc4NjEsIDc4NjYsIDc4NzEsIDc4NzYsIDc4ODEsIDc4ODYsIDc4OTEsIAorICAgIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzAsIDc5MzUsIDc5NDAsIDc5NDUsIDc5NTAsIAorICAgIDc5NTUsIDc5NjAsIDc5NjUsIDc5NzAsIDc5NzUsIDAsIDAsIDc5ODAsIDc5ODcsIDc5OTAsIDc5OTQsIDc5OTgsIDgwMDEsIAorICAgIDgwMDUsIDAsIDgwMDksIDgwMTQsIDgwMTksIDgwMjQsIDgwMjksIDgwMzQsIDgwMzksIDgwNDQsIDgwNDksIDgwNTMsIAorICAgIDgwNTgsIDgwNjMsIDgwNjgsIDgwNzMsIDgwNzgsIDgwODMsIDgwODgsIDgwOTMsIDgwOTgsIDgxMDMsIDgxMDgsIDgxMTMsIAorICAgIDgxMTgsIDgxMjMsIDgxMjgsIDgxMzMsIDgxMzgsIDgxNDMsIDgxNDcsIDgxNTIsIDgxNTcsIDgxNjIsIDgxNjcsIDgxNzIsIAorICAgIDgxNzcsIDgxODIsIDgxODcsIDgxOTIsIDgxOTcsIDAsIDgyMDQsIDgyMDksIDAsIDAsIDAsIDAsIDgyMTIsIDAsIDgyMTYsIAorICAgIDgyMjEsIDgyMjYsIDgyMzEsIDgyMzgsIDgyNDUsIDgyNTAsIDgyNTUsIDgyNjAsIDgyNjUsIDgyNzAsIDgyNzUsIDgyODAsIAorICAgIDgyODcsIDgyOTIsIDgyOTksIDgzMDYsIDgzMTEsIDgzMTgsIDgzMjMsIDgzMjgsIDgzMzMsIDgzNDAsIDgzNDUsIDgzNTAsIAorICAgIDgzNTcsIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTIsIDgzOTcsIDg0MDQsIDg0MTEsIDg0MTgsIDg0MjMsIAorICAgIDg0MjgsIDg0MzMsIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTgsIDg0NjMsIDg0NzEsIDg0NzYsIDg0ODEsIDg0ODYsIDg0OTEsIAorICAgIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTgsIDg1MjQsIDg1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1MzgsIDg1NDIsIAorICAgIDg1NDYsIDg1NTAsIDg1NTQsIDg1NTgsIDg1NjIsIDg1NjYsIDg1NzAsIDg1NzQsIDg1NzgsIDg1ODMsIDg1ODcsIDg1OTEsIAorICAgIDg1OTYsIDg2MDAsIDg2MDUsIDg2MDksIDg2MTMsIDg2MTcsIDg2MjIsIDg2MjYsIDg2MzEsIDg2MzUsIDg2MzksIDg2NDMsIAorICAgIDg2NDcsIDAsIDAsIDAsIDAsIDAsIDg2NTEsIDg2NTgsIDg2NjYsIDg2NzMsIDg2NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDg2ODMsIDg2ODYsIDg2OTAsIDg2OTUsIDg2OTksIDAsIDg3MDMsIDg3MDksIDg3MTUsIDg3MTgsIAorICAgIDg3MjUsIDg3MzQsIDg3MzcsIDg3NDAsIDg3NDUsIDg3NTEsIDg3NTUsIDg3NjMsIDg3NjksIDg3NzUsIDg3ODMsIDg3ODcsIAorICAgIDg3OTIsIDg4MDMsIDg4MDgsIDg4MTIsIDg4MTYsIDg4MjAsIDAsIDAsIDg4MjMsIDg4MzAsIDg4MzQsIDg4NDAsIDg4NDQsIAorICAgIDg4NTEsIDg4NTcsIDg4NjQsIDg4NzAsIDg4NzYsIDg4ODAsIDg4ODQsIDg4OTAsIDg4OTQsIDg4OTgsIDg5MDIsIDg5MDYsIAorICAgIDg5MTAsIDg5MTQsIDg5MTgsIDg5MjIsIDg5MjYsIDg5MzAsIDg5MzQsIDg5MzgsIDg5NDIsIDg5NDYsIDg5NTAsIDg5NTQsIAorICAgIDg5NTgsIDg5NjYsIDg5NzQsIDg5ODQsIDg5OTMsIDkwMDIsIDkwMDUsIDkwMDksIDkwMTMsIDkwMTcsIDkwMjEsIDkwMjUsIAorICAgIDkwMjksIDkwMzMsIDkwMzcsIDkwNDIsIDkwNDYsIDkwNDksIDkwNTIsIDkwNTUsIDkwNTgsIDkwNjEsIDkwNjQsIDkwNjcsIAorICAgIDkwNzAsIDkwNzQsIDkwNzcsIDkwODAsIDkwODUsIDkwOTAsIDkwOTYsIDkwOTksIDkxMDYsIDkxMTUsIDkxMjAsIDkxMjUsIAorICAgIDkxMzIsIDkxMzcsIDkxNDIsIDkxNDYsIDkxNTAsIDkxNTQsIDkxNTgsIDkxNjIsIDkxNjYsIDkxNzAsIDkxNzQsIDkxNzgsIAorICAgIDkxODIsIDkxODcsIDkxOTIsIDkxOTksIDkyMDUsIDkyMTEsIDkyMTcsIDkyMjIsIDkyMzAsIDkyMzgsIDkyNDMsIDkyNDksIAorICAgIDkyNTUsIDkyNjEsIDkyNjcsIDkyNzEsIDkyNzUsIDkyNzksIDkyODYsIDkyOTYsIDkzMDAsIDkzMDQsIDkzMDgsIDkzMTQsIAorICAgIDkzMjIsIDkzMjYsIDkzMzAsIDkzMzcsIDkzNDEsIDkzNDUsIDkzNDksIDkzNTYsIDkzNjMsIDkzNzUsIDkzNzksIDkzODMsIAorICAgIDkzODcsIDkzOTcsIDk0MDYsIDk0MTAsIDk0MTgsIDk0MjUsIDk0MzIsIDk0NDEsIDk0NTIsIDk0NjAsIDk0NjQsIDk0NzMsIAorICAgIDk0ODQsIDk0OTIsIDk1MDUsIDk1MTMsIDk1MjEsIDk1MjksIDk1MzcsIDk1NDMsIDk1NTIsIDk1NTksIDk1NjMsIDk1NzEsIAorICAgIDk1NzUsIDk1ODIsIDk1OTAsIDk1OTQsIDk2MDAsIDk2MDcsIDk2MTQsIDk2MTgsIDk2MjYsIDk2MzAsIDk2MzcsIDk2NDEsIAorICAgIDk2NDksIDk2NTMsIDk2NjEsIDk2NjksIDk2NzYsIDk2ODQsIDk2OTIsIDk2OTksIDk3MDUsIDk3MDksIDk3MTYsIDk3MjQsIAorICAgIDk3MzAsIDk3MzcsIDk3NDQsIDk3NTAsIDk3NTksIDk3NjcsIDk3NzQsIDk3ODAsIDk3ODQsIDk3ODcsIDk3OTEsIDk3OTcsIAorICAgIDk4MDUsIDk4MDksIDk4MTUsIDk4MjEsIDk4MjgsIDk4MzUsIDk4MzgsIDk4NDUsIDk4NTAsIDk4NTgsIDk4NjMsIDk4NjcsIAorICAgIDk4ODAsIDk4OTMsIDk4OTksIDk5MDYsIDk5MTEsIDk5MTcsIDk5MjIsIDk5MjgsIDk5MzgsIDk5NDUsIDk5NTQsIDk5NjQsIAorICAgIDk5NzAsIDk5NzUsIDk5ODAsIDk5ODQsIDk5ODgsIDk5OTMsIDk5OTgsIDEwMDA0LCAxMDAxMiwgMTAwMjAsIDEwMDMxLCAKKyAgICAxMDAzNiwgMTAwNDUsIDEwMDU0LCAxMDA2MSwgMTAwNjcsIDEwMDczLCAxMDA3OSwgMTAwODUsIDEwMDkxLCAxMDA5NywgCisgICAgMTAxMDMsIDEwMTA5LCAxMDExNSwgMTAxMjIsIDEwMTI5LCAxMDEzNiwgMTAxNDIsIDEwMTUwLCAxMDE1OSwgMTAxNjUsIAorICAgIDEwMTcyLCAxMDE3OSwgMTAxODQsIDEwMTg5LCAxMDE5MywgMTAyMDAsIDEwMjA3LCAxMDIxNiwgMTAyMjUsIDEwMjI4LCAKKyAgICAxMDIzMywgMTAyMzgsIDAsIDEwMjQzLCAxMDI0NywgMTAyNTEsIDEwMjU3LCAxMDI2MSwgMTAyNjUsIDEwMjcxLCAxMDI3NSwgCisgICAgMTAyODMsIDEwMjg3LCAxMDI5MSwgMTAyOTUsIDEwMjk5LCAxMDMwMywgMTAzMDksIDEwMzEzLCAxMDMxOSwgMTAzMjMsIAorICAgIDEwMzI3LCAxMDMzMSwgMTAzMzUsIDEwMzM5LCAxMDM0NCwgMTAzNDcsIDEwMzUxLCAxMDM1NywgMTAzNjEsIDEwMzY1LCAKKyAgICAxMDM2OSwgMTAzNzMsIDEwMzc3LCAxMDM4MywgMTAzODksIDEwMzk1LCAxMDM5OSwgMTA0MDMsIDEwNDA4LCAxMDQxMiwgCisgICAgMTA0MTYsIDEwNDIxLCAxMDQyNSwgMTA0MjksIDEwNDM2LCAxMDQ0MywgMTA0NDcsIDEwNDUxLCAxMDQ1NiwgMTA0NjAsIAorICAgIDEwNDY0LCAxMDQ2NywgMTA0NzIsIDEwNDc1LCAxMDQ3OCwgMTA0ODMsIDEwNDg4LCAxMDQ5MiwgMTA0OTYsIDEwNTAyLCAKKyAgICAxMDUwOCwgMTA1MTEsIDAsIDAsIDEwNTE0LCAxMDUyMCwgMTA1MjYsIDEwNTMyLCAxMDU0MiwgMTA1NTQsIDEwNTY2LCAKKyAgICAxMDU4MywgMTA1OTUsIDEwNjA2LCAxMDYxNCwgMTA2MjEsIDEwNjMyLCAxMDY0NywgMTA2NTgsIDEwNjY0LCAxMDY3MywgCisgICAgMTA2ODEsIDEwNjkzLCAxMDcwMywgMTA3MTEsIDEwNzIzLCAxMDczMCwgMTA3MzgsIDEwNzUwLCAxMDc1NiwgMTA3NjIsIAorICAgIDEwNzcwLCAxMDc3OCwgMTA3ODYsIDEwNzkyLCAxMDgwMiwgMTA4MDksIDEwODE5LCAxMDgyOSwgMTA4NDIsIDEwODU2LCAKKyAgICAxMDg3MCwgMTA4ODAsIDEwODkxLCAxMDkwMiwgMTA5MTUsIDEwOTI4LCAxMDk0MiwgMTA5NTQsIDEwOTY2LCAxMDk3OSwgCisgICAgMTA5OTIsIDExMDA0LCAxMTAxNywgMTEwMjYsIDExMDM0LCAxMTAzOSwgMTEwNDQsIDExMDQ5LCAxMTA1NCwgMTEwNTksIAorICAgIDExMDY0LCAxMTA2OSwgMTEwNzQsIDExMDc5LCAxMTA4NCwgMTEwODksIDExMDk0LCAxMTA5OSwgMTExMDQsIDExMTA5LCAKKyAgICAxMTExNCwgMTExMTksIDExMTI0LCAxMTEyOSwgMTExMzQsIDExMTM5LCAxMTE0NCwgMTExNDksIDExMTU0LCAxMTE1OSwgCisgICAgMTExNjQsIDExMTY5LCAxMTE3NCwgMTExNzksIDExMTg0LCAxMTE4OSwgMTExOTQsIDExMTk4LCAxMTIwMywgMTEyMDgsIAorICAgIDExMjEzLCAxMTIxOCwgMTEyMjMsIDExMjI3LCAxMTIzMSwgMTEyMzUsIDExMjM5LCAxMTI0MywgMTEyNDcsIDExMjUxLCAKKyAgICAxMTI1NSwgMTEyNTksIDExMjYzLCAxMTI2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTEyNzIsIDExMjc3LCAxMTI4MSwgMTEyODUsIDExMjg5LCAxMTI5MywgMTEyOTcsIDExMzAxLCAxMTMwNSwgMTEzMDksIAorICAgIDExMzEzLCAxMTMxNywgMTEzMjIsIDExMzI2LCAxMTMzMCwgMTEzMzQsIDExMzM5LCAxMTM0MywgMTEzNDgsIDExMzUzLCAKKyAgICAxMTM1OCwgMTEzNjIsIDExMzY3LCAxMTM3MiwgMTEzNzcsIDExMzgyLCAxMTM4NiwgMTEzOTEsIDExMzk1LCAxMTQwMCwgCisgICAgMTE0MDUsIDExNDA5LCAxMTQxNCwgMTE0MjEsIDExNDI1LCAxMTQzMCwgMTE0MzQsIDExNDM4LCAxMTQ0MywgMTE0NDcsIAorICAgIDExNDU0LCAxMTQ2MSwgMTE0NjgsIDExNDc0LCAxMTQ4MiwgMTE0OTAsIDExNDk5LCAxMTUwNywgMTE1MTQsIDExNTIxLCAKKyAgICAxMTUyOSwgMTE1MzUsIDExNTQxLCAxMTU0NywgMTE1NTMsIDExNTYwLCAxMTU2NSwgMTE1NjksIDExNTc0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMTU3OCwgMTE1ODMsIDExNTg4LCAxMTU5MywgMTE1OTgsIDExNjAzLCAxMTYwOCwgMTE2MTMsIDExNjE4LCAKKyAgICAxMTYyMywgMTE2MjgsIDExNjMzLCAxMTYzOCwgMTE2NDMsIDExNjQ4LCAxMTY1MywgMTE2NTgsIDExNjYzLCAxMTY2OCwgCisgICAgMTE2NzMsIDExNjc4LCAxMTY4MywgMTE2ODgsIDExNjkzLCAxMTY5OCwgMTE3MDMsIDExNzA4LCAxMTcxNiwgMTE3MjMsIAorICAgIDExNzI5LCAxMTczNCwgMTE3NDIsIDExNzQ5LCAxMTc1NSwgMTE3NjIsIDExNzY4LCAxMTc3MywgMTE3ODAsIDExNzg3LCAKKyAgICAxMTc5MywgMTE3OTgsIDExODAzLCAxMTgwOSwgMTE4MTQsIDExODE5LCAxMTgyNSwgMCwgMCwgMTE4MzAsIDExODM2LCAKKyAgICAxMTg0MiwgMTE4NDgsIDExODU0LCAxMTg2MCwgMTE4NjYsIDExODcxLCAxMTg3OSwgMTE4ODUsIDExODkxLCAxMTg5NywgCisgICAgMTE5MDMsIDExOTA5LCAxMTkxNywgMCwgMTE5MjMsIDExOTI4LCAxMTkzMywgMTE5MzgsIDExOTQzLCAxMTk0OCwgMTE5NTMsIAorICAgIDExOTU4LCAxMTk2MywgMTE5NjgsIDExOTczLCAxMTk3OCwgMTE5ODMsIDExOTg4LCAxMTk5MywgMTE5OTgsIDEyMDAzLCAKKyAgICAxMjAwOCwgMTIwMTMsIDEyMDE4LCAxMjAyMywgMTIwMjgsIDEyMDMzLCAxMjAzOCwgMTIwNDMsIDEyMDQ4LCAxMjA1MywgCisgICAgMTIwNTgsIDAsIDAsIDEyMDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2Mjg3MiwgNjI4ODEsIDYyODkwLCA2MjkwMSwgNjI5MDgsIDYyOTEzLCA2MjkxOCwgNjI5MjUsIDYyOTMyLCA2MjkzOCwgCi0gICAgNjI5NDMsIDYyOTQ4LCA2Mjk1MywgNjI5NTgsIDYyOTY1LCA2Mjk3MCwgNjI5NzUsIDYyOTgwLCA2Mjk5MSwgNjI5OTYsIAotICAgIDYzMDAxLCA2MzAwOCwgNjMwMTMsIDYzMDIwLCA2MzAyNSwgNjMwMzAsIDYzMDM3LCA2MzA0NCwgNjMwNTEsIDYzMDYwLCAKLSAgICA2MzA2OSwgNjMwNzQsIDYzMDc5LCA2MzA4NCwgNjMwOTEsIDYzMDk2LCA2MzEwNiwgNjMxMTMsIDYzMTE4LCA2MzEyMywgCi0gICAgNjMxMjgsIDYzMTMzLCA2MzEzOCwgNjMxNDMsIDYzMTUyLCA2MzE1OSwgNjMxNjYsIDYzMTcxLCA2MzE3OCwgNjMxODMsIAotICAgIDYzMTkwLCA2MzE5OSwgNjMyMTAsIDYzMjE1LCA2MzIyNCwgNjMyMjksIDYzMjM2LCA2MzI0NSwgNjMyNTQsIDYzMjU5LCAKLSAgICA2MzI2NCwgNjMyNzEsIDYzMjc3LCA2MzI4NCwgNjMyOTEsIDYzMjk1LCA2MzI5OSwgNjMzMDIsIDYzMzA2LCA2MzMxMCwgCi0gICAgNjMzMTQsIDYzMzE4LCA2MzMyMiwgNjMzMjYsIDYzMzMwLCA2MzMzMywgNjMzMzcsIDYzMzQxLCA2MzM0NSwgNjMzNDksIAotICAgIDYzMzUzLCA2MzM1NywgNjMzNjAsIDYzMzY0LCA2MzM2OCwgNjMzNzEsIDYzMzc1LCA2MzM3OSwgNjMzODMsIDYzMzg3LCAKLSAgICA2MzM5MSwgNjMzOTUsIDYzMzk5LCA2MzQwMywgNjM0MDcsIDYzNDExLCA2MzQxNSwgNjM0MTksIDYzNDIzLCA2MzQyNywgCi0gICAgNjM0MzEsIDYzNDM1LCA2MzQzOSwgNjM0NDMsIDYzNDQ3LCA2MzQ1MSwgNjM0NTUsIDYzNDU5LCA2MzQ2MywgNjM0NjcsIAotICAgIDYzNDcxLCA2MzQ3NSwgNjM0NzksIDYzNDgzLCA2MzQ4NywgNjM0OTEsIDYzNDk1LCA2MzQ5OSwgNjM1MDMsIDYzNTA3LCAKLSAgICA2MzUxMSwgNjM1MTUsIDYzNTE5LCA2MzUyMywgNjM1MjcsIDYzNTMxLCA2MzUzNSwgNjM1MzksIDYzNTQzLCA2MzU0NywgCi0gICAgNjM1NTAsIDYzNTU0LCA2MzU1OCwgNjM1NjIsIDYzNTY2LCA2MzU3MCwgNjM1NzQsIDYzNTc4LCA2MzU4MiwgNjM1ODYsIAotICAgIDYzNTkwLCA2MzU5NCwgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MTAsIDYzNjE0LCA2MzYxOCwgNjM2MjIsIDYzNjI2LCAKLSAgICA2MzYzMCwgNjM2MzQsIDYzNjM4LCA2MzY0MiwgNjM2NDYsIDYzNjUwLCA2MzY1NCwgNjM2NTgsIDYzNjYyLCA2MzY2NiwgCi0gICAgNjM2NzAsIDYzNjc0LCA2MzY3OCwgNjM2ODIsIDYzNjg2LCA2MzY5MCwgNjM2OTQsIDYzNjk4LCA2MzcwMiwgNjM3MDYsIAotICAgIDYzNzEwLCA2MzcxNCwgNjM3MTgsIDYzNzIyLCA2MzcyNiwgNjM3MzAsIDYzNzM0LCA2MzczOCwgNjM3NDIsIDYzNzQ2LCAKLSAgICA2Mzc1MCwgNjM3NTQsIDYzNzU4LCA2Mzc2MiwgNjM3NjYsIDYzNzcwLCA2Mzc3NCwgNjM3NzgsIDYzNzgyLCA2Mzc4NiwgCi0gICAgNjM3OTAsIDYzNzk0LCA2Mzc5OCwgNjM4MDIsIDYzODA2LCA2MzgxMCwgNjM4MTQsIDYzODE4LCA2MzgyMiwgNjM4MjYsIAotICAgIDYzODMwLCA2MzgzNCwgNjM4MzgsIDYzODQyLCA2Mzg0NiwgNjM4NTAsIDYzODU0LCA2Mzg1OCwgNjM4NjIsIDYzODY2LCAKLSAgICA2Mzg3MCwgNjM4NzQsIDYzODc4LCA2Mzg4MiwgNjM4ODYsIDYzODkwLCA2Mzg5NCwgNjM4OTgsIDYzOTAyLCA2MzkwNiwgCi0gICAgNjM5MTAsIDYzOTE0LCA2MzkxOCwgNjM5MjIsIDYzOTI2LCA2MzkzMCwgNjM5MzQsIDYzOTM4LCA2Mzk0MiwgNjM5NDYsIAotICAgIDYzOTUwLCA2Mzk1NCwgNjM5NTgsIDYzOTYyLCA2Mzk2NiwgNjM5NzAsIDYzOTc0LCA2Mzk3OCwgNjM5ODIsIDYzOTg2LCAKLSAgICA2Mzk5MCwgNjM5OTQsIDYzOTk4LCA2NDAwMiwgNjQwMDYsIDY0MDEwLCA2NDAxNCwgNjQwMTgsIDY0MDIxLCA2NDAyNSwgCi0gICAgNjQwMjksIDY0MDMzLCA2NDAzNywgNjQwNDEsIDY0MDQ1LCA2NDA0OSwgNjQwNTMsIDY0MDU3LCA2NDA2MSwgNjQwNjUsIAotICAgIDY0MDY5LCA2NDA3MywgNjQwNzcsIDY0MDgxLCA2NDA4NSwgNjQwODksIDY0MDkzLCA2NDA5NywgNjQxMDEsIDY0MTA1LCAKLSAgICA2NDEwOSwgNjQxMTMsIDY0MTE3LCA2NDEyMSwgNjQxMjUsIDY0MTI5LCA2NDEzMywgNjQxMzcsIDY0MTQxLCA2NDE0NSwgCi0gICAgNjQxNDksIDY0MTUzLCA2NDE1NywgNjQxNjEsIDY0MTY1LCA2NDE2OSwgNjQxNzMsIDY0MTc3LCA2NDE4MSwgNjQxODUsIAotICAgIDY0MTg5LCA2NDE5MywgNjQxOTcsIDY0MjAxLCA2NDIwNSwgNjQyMDksIDY0MjEzLCA2NDIxNywgNjQyMjEsIDY0MjI1LCAKLSAgICA2NDIyOSwgNjQyMzMsIDY0MjM3LCA2NDI0MSwgNjQyNDUsIDY0MjQ5LCA2NDI1MywgNjQyNTcsIDY0MjYxLCA2NDI2NSwgCi0gICAgNjQyNjksIDY0MjczLCA2NDI3NywgNjQyODEsIDY0Mjg1LCA2NDI4OSwgNjQyOTMsIDY0Mjk3LCA2NDMwMSwgNjQzMDUsIAotICAgIDY0MzA5LCA2NDMxMywgNjQzMTcsIDY0MzIxLCA2NDMyNSwgNjQzMjksIDY0MzMzLCA2NDMzNywgNjQzNDEsIDY0MzQ1LCAKLSAgICA2NDM0OSwgNjQzNTMsIDY0MzU3LCA2NDM2MSwgNjQzNjUsIDY0MzY5LCA2NDM3MywgNjQzNzcsIDY0MzgxLCA2NDM4NSwgCi0gICAgNjQzODksIDY0MzkzLCA2NDM5NywgNjQ0MDEsIDY0NDA1LCA2NDQwOSwgNjQ0MTMsIDY0NDE3LCA2NDQyMSwgNjQ0MjUsIAotICAgIDY0NDI5LCA2NDQzMywgNjQ0MzcsIDY0NDQxLCA2NDQ0NSwgNjQ0NDksIDY0NDUzLCA2NDQ1NywgNjQ0NjEsIDY0NDY1LCAKLSAgICA2NDQ2OSwgNjQ0NzMsIDY0NDc3LCA2NDQ4MSwgNjQ0ODQsIDY0NDg4LCA2NDQ5MiwgNjQ0OTYsIDY0NTAwLCA2NDUwNCwgCi0gICAgNjQ1MDgsIDY0NTEyLCA2NDUxNiwgNjQ1MjAsIDY0NTI0LCA2NDUyOCwgNjQ1MzIsIDY0NTM2LCA2NDU0MCwgNjQ1NDQsIAotICAgIDY0NTQ4LCA2NDU1MiwgNjQ1NTYsIDY0NTYwLCA2NDU2NCwgNjQ1NjgsIDY0NTcyLCA2NDU3NiwgNjQ1ODAsIDY0NTg0LCAKLSAgICA2NDU4OCwgNjQ1OTIsIDY0NTk2LCA2NDYwMCwgNjQ2MDQsIDY0NjA4LCA2NDYxMiwgNjQ2MTYsIDY0NjIwLCA2NDYyNCwgCi0gICAgNjQ2MjgsIDY0NjMyLCA2NDYzNiwgNjQ2NDAsIDY0NjQ0LCA2NDY0OCwgNjQ2NTIsIDY0NjU2LCA2NDY2MCwgNjQ2NjQsIAotICAgIDY0NjY4LCA2NDY3MiwgNjQ2NzYsIDY0NjgwLCA2NDY4NCwgNjQ2ODgsIDY0NjkyLCA2NDY5NiwgNjQ3MDAsIDY0NzA0LCAKLSAgICA2NDcwOCwgNjQ3MTIsIDY0NzE2LCA2NDcyMCwgNjQ3MjQsIDY0NzI4LCA2NDczMiwgNjQ3MzYsIDY0NzQwLCA2NDc0NCwgCi0gICAgNjQ3NDgsIDY0NzUyLCA2NDc1NiwgNjQ3NjAsIDY0NzY0LCA2NDc2OCwgNjQ3NzIsIDY0Nzc2LCA2NDc4MCwgNjQ3ODQsIAotICAgIDY0Nzg4LCA2NDc5MiwgNjQ3OTYsIDY0ODAwLCA2NDgwNCwgNjQ4MDgsIDY0ODEyLCA2NDgxNiwgNjQ4MjAsIDY0ODI0LCAKLSAgICA2NDgyOCwgNjQ4MzIsIDY0ODM2LCA2NDg0MCwgNjQ4NDMsIDY0ODQ3LCA2NDg1MSwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgCi0gICAgNjQ4NjcsIDY0ODcxLCA2NDg3NSwgNjQ4NzksIDY0ODgzLCA2NDg4NywgNjQ4OTEsIDY0ODk1LCA2NDg5OSwgNjQ5MDMsIAotICAgIDY0OTA3LCA2NDkxMSwgNjQ5MTUsIDY0OTE5LCA2NDkyMywgNjQ5MjcsIDY0OTMxLCA2NDkzNSwgNjQ5MzksIDY0OTQzLCAKLSAgICA2NDk0NywgNjQ5NTEsIDY0OTU1LCA2NDk1OSwgNjQ5NjMsIDY0OTY3LCA2NDk3MSwgNjQ5NzUsIDY0OTc5LCA2NDk4MywgCi0gICAgNjQ5ODcsIDY0OTkxLCA2NDk5NSwgNjQ5OTksIDY1MDAzLCA2NTAwNywgNjUwMTEsIDY1MDE1LCA2NTAxOSwgNjUwMjMsIAotICAgIDY1MDI3LCA2NTAzMSwgNjUwMzUsIDY1MDM5LCA2NTA0MywgNjUwNDcsIDY1MDUxLCA2NTA1NSwgNjUwNTksIDY1MDYzLCAKLSAgICA2NTA2NywgNjUwNzEsIDY1MDc1LCA2NTA3OSwgNjUwODMsIDY1MDg3LCA2NTA5MSwgNjUwOTUsIDY1MDk5LCA2NTEwMywgCi0gICAgNjUxMDcsIDY1MTExLCA2NTExNSwgNjUxMTksIDY1MTIzLCA2NTEyNywgNjUxMzEsIDY1MTM1LCA2NTEzOSwgNjUxNDMsIAotICAgIDY1MTQ3LCA2NTE1MSwgNjUxNTUsIDY1MTU5LCA2NTE2MywgNjUxNjcsIDY1MTcxLCA2NTE3NSwgNjUxNzksIDY1MTgzLCAKLSAgICA2NTE4NywgNjUxOTEsIDY1MTk1LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCA2NTIxMSwgNjUyMTUsIDY1MjE5LCA2NTIyMywgCi0gICAgNjUyMjcsIDY1MjMxLCA2NTIzNSwgNjUyMzksIDY1MjQzLCA2NTI0NywgNjUyNTEsIDY1MjU1LCA2NTI1OSwgNjUyNjMsIAotICAgIDY1MjY3LCA2NTI3MSwgNjUyNzUsIDY1Mjc5LCA2NTI4MywgNjUyODcsIDY1MjkxLCA2NTI5NSwgNjUyOTksIDY1MzAzLCAKLSAgICA2NTMwNywgNjUzMTEsIDY1MzE1LCA2NTMxOSwgNjUzMjMsIDY1MzI3LCA2NTMzMSwgNjUzMzUsIDY1MzM4LCA2NTM0MiwgCi0gICAgNjUzNDYsIDY1MzUwLCA2NTM1NCwgNjUzNTgsIDY1MzYyLCA2NTM2NiwgNjUzNzAsIDY1Mzc0LCA2NTM3OCwgNjUzODIsIAotICAgIDY1Mzg2LCA2NTM5MCwgNjUzOTQsIDY1Mzk4LCA2NTQwMiwgNjU0MDYsIDY1NDEwLCA2NTQxNCwgNjU0MTgsIDY1NDIyLCAKLSAgICA2NTQyNiwgNjU0MzAsIDY1NDM0LCA2NTQzOCwgNjU0NDIsIDY1NDQ2LCA2NTQ1MCwgNjU0NTQsIDY1NDU4LCA2NTQ2MiwgCi0gICAgNjU0NjYsIDY1NDcwLCA2NTQ3NCwgNjU0NzgsIDY1NDgyLCA2NTQ4NiwgNjU0OTAsIDY1NDk0LCA2NTQ5OCwgNjU1MDIsIAotICAgIDY1NTA2LCA2NTUxMCwgNjU1MTQsIDY1NTE4LCA2NTUyMiwgNjU1MjYsIDY1NTMwLCA2NTUzNCwgNjU1MzgsIDY1NTQyLCAKLSAgICA2NTU0NiwgNjU1NTAsIDY1NTU0LCA2NTU1OCwgNjU1NjIsIDY1NTY2LCA2NTU3MCwgNjU1NzQsIDY1NTc4LCA2NTU4MiwgCi0gICAgNjU1ODYsIDY1NTkwLCA2NTU5NCwgNjU1OTgsIDY1NjAyLCA2NTYwNiwgNjU2MTAsIDY1NjE0LCA2NTYxOCwgNjU2MjIsIAotICAgIDY1NjI2LCA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIDY1NjUwLCA2NTY1NCwgNjU2NTgsIDY1NjYyLCAKLSAgICA2NTY2NiwgNjU2NzAsIDY1Njc0LCA2NTY3OCwgNjU2ODIsIDY1Njg2LCA2NTY5MCwgNjU2OTQsIDY1Njk4LCA2NTcwMiwgCi0gICAgNjU3MDYsIDY1NzEwLCA2NTcxNCwgNjU3MTgsIDY1NzIyLCA2NTcyNiwgNjU3MzAsIDY1NzM0LCA2NTczOCwgNjU3NDIsIAotICAgIDY1NzQ2LCA2NTc1MCwgNjU3NTQsIDY1NzU4LCA2NTc2MiwgNjU3NjYsIDY1NzcwLCA2NTc3NCwgNjU3NzgsIDY1NzgyLCAKLSAgICA2NTc4NiwgNjU3OTAsIDY1NzkzLCA2NTc5NywgNjU4MDEsIDY1ODA1LCA2NTgwOSwgNjU4MTMsIDY1ODE3LCA2NTgyMSwgCi0gICAgNjU4MjUsIDY1ODI5LCA2NTgzMywgNjU4MzcsIDY1ODQxLCA2NTg0NSwgNjU4NDksIDY1ODUzLCA2NTg1NywgNjU4NjEsIAotICAgIDY1ODY1LCA2NTg2OSwgNjU4NzMsIDY1ODc3LCA2NTg4MSwgNjU4ODUsIDY1ODg5LCA2NTg5MywgNjU4OTcsIDY1OTAxLCAKLSAgICA2NTkwNSwgNjU5MDksIDY1OTEzLCA2NTkxNywgNjU5MjEsIDY1OTI1LCA2NTkyOSwgNjU5MzMsIDY1OTM3LCA2NTk0MSwgCi0gICAgNjU5NDUsIDY1OTQ5LCA2NTk1MywgNjU5NTcsIDY1OTYxLCA2NTk2NSwgNjU5NjksIDY1OTczLCA2NTk3NywgNjU5ODEsIAotICAgIDY1OTg1LCA2NTk4OSwgNjU5OTMsIDY1OTk3LCA2NjAwMSwgNjYwMDUsIDY2MDA5LCA2NjAxMywgNjYwMTcsIDY2MDIxLCAKLSAgICA2NjAyNSwgNjYwMjksIDY2MDMzLCA2NjAzNywgNjYwNDEsIDY2MDQ1LCA2NjA0OSwgNjYwNTMsIDY2MDU3LCA2NjA2MSwgCi0gICAgNjYwNjUsIDY2MDY5LCA2NjA3MywgNjYwNzcsIDY2MDgxLCA2NjA4NSwgNjYwODksIDY2MDkzLCA2NjA5NywgNjYxMDEsIAotICAgIDY2MTA1LCA2NjEwOSwgNjYxMTMsIDY2MTE3LCA2NjEyMSwgNjYxMjUsIDY2MTI5LCA2NjEzMywgNjYxMzcsIDY2MTQxLCAKLSAgICA2NjE0NSwgNjYxNDksIDY2MTUzLCA2NjE1NywgNjYxNjEsIDY2MTY1LCA2NjE2OSwgNjYxNzMsIDY2MTc3LCA2NjE4MSwgCi0gICAgNjYxODUsIDY2MTg5LCA2NjE5MywgNjYxOTcsIDY2MjAxLCA2NjIwNSwgNjYyMDksIDY2MjEzLCA2NjIxNywgNjYyMjEsIAotICAgIDY2MjI1LCA2NjIyOSwgNjYyMzMsIDY2MjM3LCA2NjI0MSwgNjYyNDUsIDY2MjQ5LCA2NjI1MywgNjYyNTcsIDY2MjYxLCAKLSAgICA2NjI2NSwgNjYyNjksIDY2MjczLCA2NjI3NywgNjYyODEsIDY2Mjg1LCA2NjI4OSwgNjYyOTMsIDY2Mjk3LCA2NjMwMSwgCi0gICAgNjYzMDUsIDY2MzA5LCA2NjMxMywgNjYzMTcsIDY2MzIxLCA2NjMyNSwgNjYzMjksIDY2MzMzLCA2NjMzNywgNjYzNDEsIAotICAgIDY2MzQ1LCA2NjM0OSwgNjYzNTMsIDY2MzU3LCA2NjM2MSwgNjYzNjUsIDY2MzY5LCA2NjM3MywgNjYzNzcsIDY2MzgxLCAKLSAgICA2NjM4NSwgNjYzODksIDY2MzkzLCA2NjM5NiwgNjY0MDAsIDY2NDA0LCA2NjQwOCwgNjY0MTIsIDY2NDE2LCA2NjQyMCwgCi0gICAgNjY0MjQsIDY2NDI4LCA2NjQzMiwgNjY0MzYsIDY2NDQwLCA2NjQ0NCwgNjY0NDgsIDY2NDUyLCA2NjQ1NiwgNjY0NjAsIAotICAgIDY2NDY0LCA2NjQ2OCwgNjY0NzIsIDY2NDc2LCA2NjQ4MCwgNjY0ODQsIDY2NDg4LCA2NjQ5MiwgNjY0OTYsIDY2NTAwLCAKLSAgICA2NjUwNCwgNjY1MDgsIDY2NTEyLCA2NjUxNiwgNjY1MjAsIDY2NTI0LCA2NjUyOCwgNjY1MzIsIDY2NTM2LCA2NjU0MCwgCi0gICAgNjY1NDQsIDY2NTQ4LCA2NjU1MiwgNjY1NTYsIDY2NTYwLCA2NjU2NCwgNjY1NjgsIDY2NTcyLCA2NjU3NiwgNjY1ODAsIAotICAgIDY2NTg0LCA2NjU4OCwgNjY1OTIsIDY2NTk2LCA2NjYwMCwgNjY2MDQsIDY2NjA4LCA2NjYxMiwgNjY2MTYsIDY2NjIwLCAKLSAgICA2NjYyNCwgNjY2MjgsIDY2NjMyLCA2NjYzNiwgNjY2NDAsIDY2NjQ0LCA2NjY0OCwgNjY2NTIsIDY2NjU2LCA2NjY2MCwgCi0gICAgNjY2NjQsIDY2NjY4LCA2NjY3MiwgNjY2NzYsIDY2NjgwLCA2NjY4NCwgNjY2ODgsIDY2NjkyLCA2NjY5NiwgNjY3MDAsIAotICAgIDY2NzA0LCA2NjcwOCwgNjY3MTIsIDY2NzE2LCA2NjcyMCwgNjY3MjQsIDY2NzI4LCA2NjczMiwgNjY3MzYsIDY2NzQwLCAKLSAgICA2Njc0NCwgNjY3NDgsIDY2NzUyLCA2Njc1NiwgNjY3NjAsIDY2NzY0LCA2Njc2OCwgNjY3NzIsIDY2Nzc2LCA2Njc4MCwgCi0gICAgNjY3ODQsIDY2Nzg4LCA2Njc5MiwgNjY3OTYsIDY2ODAwLCA2NjgwNCwgNjY4MDgsIDY2ODEyLCA2NjgxNiwgNjY4MjAsIAotICAgIDY2ODI0LCA2NjgyOCwgNjY4MzIsIDY2ODM2LCA2Njg0MCwgNjY4NDQsIDY2ODQ4LCA2Njg1MiwgNjY4NTYsIDY2ODYwLCAKLSAgICA2Njg2NCwgNjY4NjgsIDY2ODcyLCA2Njg3NiwgNjY4ODAsIDY2ODg0LCA2Njg4OCwgNjY4OTIsIDY2ODk2LCA2NjkwMCwgCi0gICAgNjY5MDQsIDY2OTA4LCA2NjkxMiwgNjY5MTYsIDY2OTIwLCA2NjkyNCwgNjY5MjgsIDY2OTMyLCA2NjkzNiwgNjY5NDAsIAotICAgIDY2OTQ0LCA2Njk0OCwgNjY5NTIsIDY2OTU2LCA2Njk2MCwgNjY5NjQsIDY2OTY4LCA2Njk3MiwgNjY5NzYsIDY2OTgwLCAKLSAgICA2Njk4NCwgNjY5ODgsIDY2OTkyLCA2Njk5NiwgNjcwMDAsIDY3MDA0LCA2NzAwOCwgNjcwMTIsIDY3MDE2LCA2NzAyMCwgCi0gICAgNjcwMjQsIDY3MDI4LCA2NzAzMiwgNjcwMzYsIDY3MDQwLCA2NzA0NCwgNjcwNDgsIDY3MDUyLCA2NzA1NiwgNjcwNjAsIAotICAgIDY3MDY0LCA2NzA2OCwgNjcwNzIsIDY3MDc2LCA2NzA4MCwgNjcwODQsIDY3MDg4LCA2NzA5MiwgNjcwOTYsIDY3MTAwLCAKLSAgICA2NzEwNCwgNjcxMDgsIDY3MTEyLCA2NzExNiwgNjcxMjAsIDY3MTI0LCA2NzEyOCwgNjcxMzIsIDY3MTM2LCA2NzE0MCwgCi0gICAgNjcxNDQsIDY3MTQ4LCA2NzE1MiwgNjcxNTUsIDY3MTU5LCA2NzE2MywgNjcxNjcsIDY3MTcxLCA2NzE3NSwgNjcxNzksIAotICAgIDY3MTgzLCA2NzE4NywgNjcxOTEsIDY3MTk1LCA2NzE5OSwgNjcyMDMsIDY3MjA3LCA2NzIxMSwgNjcyMTUsIDY3MjE5LCAKLSAgICA2NzIyMywgNjcyMjcsIDY3MjMxLCA2NzIzNSwgNjcyMzksIDY3MjQzLCA2NzI0NywgNjcyNTEsIDY3MjU1LCA2NzI1OSwgCi0gICAgNjcyNjMsIDY3MjY3LCA2NzI3MSwgNjcyNzUsIDY3Mjc5LCA2NzI4MywgNjcyODcsIDY3MjkxLCA2NzI5NSwgNjcyOTksIAotICAgIDY3MzAzLCA2NzMwNywgNjczMTEsIDY3MzE1LCA2NzMxOSwgNjczMjMsIDY3MzI3LCA2NzMzMSwgNjczMzUsIDY3MzM5LCAKLSAgICA2NzM0MywgNjczNDcsIDY3MzUxLCA2NzM1NSwgNjczNTksIDY3MzYzLCA2NzM2NywgNjczNzEsIDY3Mzc1LCA2NzM3OSwgCi0gICAgNjczODMsIDY3Mzg3LCA2NzM5MSwgNjczOTUsIDY3Mzk5LCA2NzQwMywgNjc0MDcsIDY3NDExLCA2NzQxNSwgNjc0MTksIAotICAgIDY3NDIzLCA2NzQyNywgNjc0MzEsIDY3NDM1LCA2NzQzOSwgNjc0NDMsIDY3NDQ3LCA2NzQ1MSwgNjc0NTUsIDY3NDU5LCAKLSAgICA2NzQ2MywgNjc0NjcsIDY3NDcxLCA2NzQ3NSwgNjc0NzksIDY3NDgzLCA2NzQ4NywgNjc0OTEsIDY3NDk1LCA2NzQ5OSwgCi0gICAgNjc1MDMsIDY3NTA3LCA2NzUxMSwgNjc1MTUsIDY3NTE5LCA2NzUyMywgNjc1MjcsIDY3NTMxLCA2NzUzNSwgNjc1MzksIAotICAgIDY3NTQzLCA2NzU0NywgNjc1NTEsIDY3NTU1LCA2NzU1OSwgNjc1NjMsIDY3NTY3LCA2NzU3MSwgNjc1NzUsIDY3NTc5LCAKLSAgICA2NzU4MywgNjc1ODcsIDY3NTkxLCA2NzU5NSwgNjc1OTksIDY3NjAzLCA2NzYwNywgNjc2MTEsIDY3NjE1LCA2NzYxOSwgCi0gICAgNjc2MjMsIDY3NjI3LCA2NzYzMSwgNjc2MzUsIDY3NjM5LCA2NzY0MywgNjc2NDcsIDY3NjUxLCA2NzY1NSwgNjc2NTksIAotICAgIDY3NjYzLCA2NzY2NywgNjc2NzEsIDY3Njc1LCA2NzY3OSwgNjc2ODMsIDY3Njg3LCA2NzY5MSwgNjc2OTUsIDY3Njk5LCAKLSAgICA2NzcwMywgNjc3MDcsIDY3NzExLCA2NzcxNSwgNjc3MTksIDY3NzIzLCA2NzcyNywgNjc3MzEsIDY3NzM1LCA2NzczOSwgCi0gICAgNjc3NDMsIDY3NzQ3LCA2Nzc1MSwgNjc3NTUsIDY3NzU5LCA2Nzc2MywgNjc3NjcsIDY3NzcxLCA2Nzc3NSwgNjc3NzksIAotICAgIDY3NzgzLCA2Nzc4NywgNjc3OTEsIDY3Nzk1LCA2Nzc5OSwgNjc4MDMsIDY3ODA3LCA2NzgxMSwgNjc4MTUsIDY3ODE5LCAKLSAgICA2NzgyMywgNjc4MjcsIDY3ODMxLCA2NzgzNSwgNjc4MzksIDY3ODQzLCA2Nzg0NywgNjc4NTEsIDY3ODU1LCA2Nzg1OSwgCi0gICAgNjc4NjMsIDY3ODY3LCA2Nzg3MSwgNjc4NzUsIDY3ODc5LCA2Nzg4MywgNjc4ODcsIDY3ODkxLCA2Nzg5NSwgNjc4OTksIAotICAgIDY3OTAzLCA2NzkwNywgNjc5MTEsIDY3OTE1LCA2NzkxOSwgNjc5MjMsIDY3OTI3LCA2NzkzMSwgNjc5MzUsIDAsIDAsIDAsIAotICAgIDY3OTM5LCA2Nzk0MywgNjc5NDcsIDY3OTUxLCA2Nzk1NSwgNjc5NTksIDY3OTYzLCA2Nzk2NywgNjc5NzEsIDY3OTc1LCAKLSAgICA2Nzk3OSwgNjc5ODMsIDY3OTg3LCA2Nzk5MSwgNjc5OTUsIDY3OTk5LCA2ODAwMywgNjgwMDcsIDY4MDExLCA2ODAxNSwgCi0gICAgNjgwMTksIDY4MDIzLCA2ODAyNywgNjgwMzEsIDY4MDM1LCA2ODAzOSwgNjgwNDMsIDY4MDQ3LCA2ODA1MSwgNjgwNTUsIAotICAgIDY4MDU5LCA2ODA2MywgNjgwNjcsIDY4MDcxLCA2ODA3NSwgNjgwNzksIDY4MDgzLCA2ODA4NywgNjgwOTEsIDY4MDk1LCAKLSAgICA2ODA5OSwgNjgxMDMsIDY4MTA3LCA2ODExMSwgNjgxMTUsIDY4MTE5LCA2ODEyMywgNjgxMjcsIDY4MTMxLCA2ODEzNSwgCi0gICAgNjgxMzksIDY4MTQzLCA2ODE0NywgNjgxNTEsIDY4MTU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2ODE1OSwgCi0gICAgNjgxNjQsIDY4MTY4LCA2ODE3MywgNjgxNzgsIDY4MTgzLCA2ODE4OCwgNjgxOTMsIDY4MTk3LCA2ODIwMiwgNjgyMDcsIAotICAgIDY4MjEyLCA2ODIxNywgNjgyMjIsIDY4MjI3LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCA2ODI0NSwgNjgyNTAsIDY4MjU1LCAKLSAgICA2ODI2MCwgNjgyNjUsIDY4MjY5LCA2ODI3NCwgNjgyNzksIDY4Mjg0LCA2ODI4OSwgNjgyOTQsIDY4Mjk4LCA2ODMwMywgCi0gICAgNjgzMDcsIDY4MzEyLCA2ODMxNiwgNjgzMjEsIDY4MzI1LCA2ODMyOSwgNjgzMzMsIDY4MzM4LCA2ODM0MywgNjgzNDgsIAotICAgIDY4MzU2LCA2ODM2NCwgNjgzNzIsIDY4MzgwLCA2ODM4NywgNjgzOTUsIDY4NDAxLCA2ODQwOSwgNjg0MTMsIDY4NDE3LCAKLSAgICA2ODQyMSwgNjg0MjUsIDY4NDI5LCA2ODQzMywgNjg0MzcsIDY4NDQxLCA2ODQ0NSwgNjg0NDksIDY4NDUzLCA2ODQ1NywgCi0gICAgNjg0NjEsIDY4NDY1LCA2ODQ2OSwgNjg0NzMsIDY4NDc3LCA2ODQ4MSwgNjg0ODUsIDY4NDg5LCA2ODQ5MywgNjg0OTcsIAotICAgIDY4NTAxLCA2ODUwNSwgNjg1MDksIDY4NTEzLCA2ODUxNywgNjg1MjEsIDY4NTI1LCA2ODUyOSwgNjg1MzMsIDY4NTM3LCAKLSAgICA2ODU0MSwgNjg1NDUsIDY4NTQ5LCA2ODU1MywgNjg1NTYsIDY4NTYwLCA2ODU2NCwgNjg1NjgsIDY4NTcyLCA2ODU3NiwgCi0gICAgNjg1ODAsIDY4NTg0LCA2ODU4OCwgNjg1OTIsIDY4NTk2LCA2ODYwMCwgNjg2MDQsIDY4NjA4LCA2ODYxMiwgNjg2MTYsIAotICAgIDY4NjIwLCA2ODYyNCwgNjg2MjgsIDY4NjMyLCA2ODYzNiwgNjg2NDAsIDY4NjQ0LCA2ODY0OCwgNjg2NTIsIDY4NjU2LCAKLSAgICA2ODY2MCwgNjg2NjQsIDY4NjY4LCA2ODY3MiwgNjg2NzYsIDY4NjgwLCA2ODY4NCwgNjg2ODgsIDY4NjkyLCA2ODY5NiwgCi0gICAgNjg3MDAsIDY4NzAzLCA2ODcwNywgNjg3MTEsIDY4NzE0LCA2ODcxOCwgNjg3MjIsIDY4NzI2LCA2ODcyOSwgNjg3MzMsIAotICAgIDY4NzM3LCA2ODc0MSwgNjg3NDUsIDY4NzQ5LCA2ODc1MywgNjg3NTcsIDY4NzYxLCA2ODc2NSwgNjg3NjksIDY4NzczLCAKLSAgICA2ODc3NywgNjg3ODEsIDY4Nzg1LCA2ODc4OCwgNjg3OTIsIDY4Nzk2LCA2ODgwMCwgNjg4MDQsIDY4ODA4LCA2ODgxMiwgCi0gICAgNjg4MTYsIDY4ODIwLCA2ODgyNCwgNjg4MjcsIDY4ODMwLCA2ODgzNCwgNjg4MzgsIDY4ODQyLCA2ODg0NSwgNjg4NDgsIAotICAgIDY4ODUyLCA2ODg1NiwgNjg4NjAsIDY4ODY0LCA2ODg2OCwgNjg4NzIsIDY4ODc2LCA2ODg4MCwgNjg4ODQsIDY4ODg4LCAKLSAgICA2ODg5MiwgNjg4OTYsIDY4OTAwLCA2ODkwNCwgNjg5MDgsIDY4OTEyLCA2ODkxNiwgNjg5MjAsIDY4OTI0LCA2ODkyOCwgCi0gICAgNjg5MzIsIDY4OTM2LCA2ODk0MCwgNjg5NDQsIDY4OTQ4LCA2ODk1MiwgNjg5NTYsIDY4OTYwLCA2ODk2NCwgNjg5NjgsIAotICAgIDY4OTcyLCA2ODk3NiwgNjg5ODAsIDY4OTg0LCA2ODk4OCwgNjg5OTIsIDY4OTk2LCA2ODk5OSwgNjkwMDMsIDY5MDA3LCAKLSAgICA2OTAxMSwgNjkwMTUsIDY5MDE5LCA2OTAyMywgNjkwMjcsIDY5MDMxLCA2OTAzNSwgNjkwMzksIDY5MDQzLCA2OTA0NywgCi0gICAgNjkwNTEsIDY5MDU1LCA2OTA1OSwgNjkwNjMsIDY5MDY3LCA2OTA3MSwgNjkwNzUsIDY5MDc5LCA2OTA4MywgNjkwODcsIAotICAgIDY5MDkxLCA2OTA5NSwgNjkwOTksIDY5MTAzLCA2OTEwNywgNjkxMTEsIDY5MTE1LCA2OTExOSwgNjkxMjMsIDY5MTI3LCAKLSAgICA2OTEzMSwgNjkxMzUsIDY5MTM5LCA2OTE0MywgNjkxNDYsIDY5MTUwLCA2OTE1NCwgNjkxNTgsIDY5MTYyLCA2OTE2NiwgCi0gICAgNjkxNzAsIDY5MTc0LCA2OTE3OCwgNjkxODIsIDY5MTg2LCA2OTE5MCwgNjkxOTQsIDY5MTk4LCA2OTIwMiwgNjkyMDYsIAotICAgIDY5MjEwLCA2OTIxMywgNjkyMTcsIDY5MjIxLCA2OTIyNSwgNjkyMjksIDY5MjMzLCA2OTIzNywgNjkyNDEsIDY5MjQ1LCAKLSAgICA2OTI0OSwgNjkyNTMsIDY5MjU3LCA2OTI2MSwgNjkyNjUsIDY5MjY5LCA2OTI3MywgNjkyNzcsIDY5MjgxLCA2OTI4NSwgCi0gICAgNjkyODksIDY5MjkzLCA2OTI5NywgNjkzMDAsIDY5MzA0LCA2OTMwOCwgNjkzMTIsIDY5MzE2LCA2OTMyMCwgNjkzMjQsIAotICAgIDY5MzI4LCA2OTMzMiwgNjkzMzYsIDY5MzQwLCA2OTM0NCwgNjkzNDgsIDY5MzUyLCA2OTM1NiwgNjkzNjAsIDY5MzY0LCAKLSAgICA2OTM2OCwgNjkzNzIsIDY5Mzc2LCA2OTM4MCwgNjkzODQsIDY5Mzg4LCA2OTM5MiwgNjkzOTYsIDY5NDAwLCA2OTQwNCwgCi0gICAgNjk0MDgsIDY5NDEyLCA2OTQxNiwgNjk0MjAsIDY5NDI0LCA2OTQyOCwgNjk0MzIsIDY5NDM2LCA2OTQ0MCwgNjk0NDQsIAotICAgIDY5NDQ4LCA2OTQ1MiwgNjk0NTYsIDY5NDYwLCA2OTQ2NCwgNjk0NjgsIDY5NDcyLCA2OTQ3NSwgNjk0ODAsIDY5NDg0LCAKLSAgICA2OTQ5MCwgNjk0OTUsIDY5NTAxLCA2OTUwNSwgNjk1MDksIDY5NTEzLCA2OTUxNywgNjk1MjEsIDY5NTI1LCA2OTUyOSwgCi0gICAgNjk1MzMsIDY5NTM3LCA2OTU0MSwgNjk1NDUsIDY5NTQ5LCA2OTU1MywgNjk1NTcsIDY5NTYwLCA2OTU2MywgNjk1NjYsIAotICAgIDY5NTY5LCA2OTU3MiwgNjk1NzUsIDY5NTc4LCA2OTU4MSwgNjk1ODQsIDY5NTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2OTU5NSwgNjk2MDAsIDY5NjA1LCA2OTYxMCwgNjk2MTUsIAotICAgIDY5NjIyLCA2OTYyOSwgNjk2MzQsIDY5NjM5LCA2OTY0NCwgNjk2NDksIDY5NjU2LCA2OTY2MywgNjk2NzAsIDY5Njc3LCAKLSAgICA2OTY4NCwgNjk2OTEsIDY5NzAxLCA2OTcxMSwgNjk3MTgsIDY5NzI1LCA2OTczMiwgNjk3MzksIDY5NzQ1LCA2OTc1MSwgCi0gICAgNjk3NjAsIDY5NzY5LCA2OTc3NiwgNjk3ODMsIDY5Nzk0LCA2OTgwNSwgNjk4MTAsIDY5ODE1LCA2OTgyMiwgNjk4MjksIAotICAgIDY5ODM2LCA2OTg0MywgNjk4NTAsIDY5ODU3LCA2OTg2NCwgNjk4NzEsIDY5ODc3LCA2OTg4MywgNjk4ODksIDY5ODk1LCAKLSAgICA2OTkwMiwgNjk5MDksIDY5OTE0LCA2OTkxOCwgNjk5MjUsIDY5OTMyLCA2OTkzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjk5NDMsIDY5OTQ3LCA2OTk1MSwgNjk5NTQsIDY5OTU3LCA2OTk2MiwgNjk5NjcsIDY5OTcyLCA2OTk3NywgNjk5ODIsIAotICAgIDY5OTg3LCA2OTk5MiwgNjk5OTcsIDcwMDAyLCA3MDAwNywgNzAwMTYsIDcwMDI1LCA3MDAzMCwgNzAwMzUsIDcwMDQwLCAKLSAgICA3MDA0NSwgNzAwNTAsIDcwMDU1LCA3MDA2MCwgNzAwNjUsIDcwMDcwLCA3MDA3NSwgNzAwODAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcwMDg1LCA3MDA4OCwgNzAwOTEsIDcwMDk0LCA3MDA5OCwgNzAxMDIsIDcwMTA2LCA3MDExMCwgNzAxMTMsIAotICAgIDcwMTE3LCA3MDEyMCwgNzAxMjQsIDcwMTI3LCA3MDEzMSwgNzAxMzUsIDcwMTM5LCA3MDE0MywgNzAxNDcsIDcwMTUxLCAKLSAgICA3MDE1NSwgNzAxNTgsIDcwMTYyLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE3OCwgNzAxODIsIDcwMTg2LCA3MDE5MCwgCi0gICAgNzAxOTQsIDcwMTk4LCA3MDIwMiwgNzAyMDYsIDcwMjEwLCA3MDIxNCwgNzAyMTcsIDcwMjIxLCA3MDIyNSwgNzAyMjksIAotICAgIDcwMjMzLCA3MDIzNywgNzAyNDEsIDcwMjQ1LCA3MDI0OSwgNzAyNTMsIDcwMjU3LCA3MDI2MSwgNzAyNjUsIDcwMjY5LCAKLSAgICA3MDI3MywgNzAyNzcsIDcwMjgxLCA3MDI4NSwgNzAyODksIDcwMjkzLCA3MDI5NywgNzAzMDEsIDcwMzA1LCA3MDMwOSwgCi0gICAgNzAzMTMsIDcwMzE2LCA3MDMyMCwgNzAzMjQsIDcwMzI4LCA3MDMzMiwgNzAzMzYsIDcwMzQwLCA3MDM0NCwgNzAzNDcsIAotICAgIDcwMzUxLCA3MDM1NSwgNzAzNTksIDcwMzYzLCA3MDM2NywgNzAzNzEsIDcwMzc1LCA3MDM3OSwgNzAzODMsIDcwMzg3LCAKLSAgICA3MDM5MSwgNzAzOTUsIDcwNDAwLCA3MDQwNSwgNzA0MDgsIDcwNDEzLCA3MDQxNiwgNzA0MTksIDcwNDIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3MDQyNiwgNzA0MzUsIDcwNDQ0LCA3MDQ1MywgNzA0NjIsIDcwNDcxLCA3MDQ4MCwgNzA0ODksIAotICAgIDcwNDk4LCA3MDUwNiwgNzA1MTMsIDcwNTIxLCA3MDUyOCwgNzA1MzYsIDcwNTQ2LCA3MDU1NSwgNzA1NjUsIDcwNTc0LCAKLSAgICA3MDU4NCwgNzA1OTIsIDcwNTk5LCA3MDYwNywgNzA2MTQsIDcwNjIyLCA3MDYyNywgNzA2MzIsIDcwNjM3LCA3MDY0NiwgCi0gICAgNzA2NTIsIDcwNjU4LCA3MDY2NSwgNzA2NzQsIDcwNjgyLCA3MDY5MCwgNzA2OTgsIDcwNzA1LCA3MDcxMiwgNzA3MTksIAotICAgIDcwNzI2LCA3MDczMSwgNzA3MzYsIDcwNzQxLCA3MDc0NiwgNzA3NTEsIDcwNzU2LCA3MDc2MSwgNzA3NjYsIDcwNzc0LCAKLSAgICA3MDc4MiwgNzA3ODgsIDcwNzkzLCA3MDc5OCwgNzA4MDMsIDcwODA4LCA3MDgxMywgNzA4MTgsIDcwODIzLCA3MDgyOCwgCi0gICAgNzA4MzMsIDcwODQxLCA3MDg0OSwgNzA4NTQsIDcwODU5LCA3MDg2OSwgNzA4NzksIDcwODg2LCA3MDg5MywgNzA5MDIsIAotICAgIDcwOTExLCA3MDkyMywgNzA5MzUsIDcwOTQxLCA3MDk0NywgNzA5NTUsIDcwOTYzLCA3MDk3MywgNzA5ODMsIDcwOTkwLCAKLSAgICA3MDk5NywgNzEwMDIsIDcxMDA3LCA3MTAxOSwgNzEwMzEsIDcxMDM5LCA3MTA0NywgNzEwNTcsIDcxMDY3LCA3MTA3OSwgCi0gICAgNzEwOTEsIDcxMTAwLCA3MTEwOSwgNzExMTYsIDcxMTIzLCA3MTEzMCwgNzExMzcsIDcxMTQ2LCA3MTE1NSwgNzExNjAsIAotICAgIDcxMTY1LCA3MTE3MiwgNzExNzksIDcxMTg2LCA3MTE5MywgNzEyMDUsIDcxMjE3LCA3MTIyMiwgNzEyMjcsIDcxMjMyLCAKLSAgICA3MTIzNywgNzEyNDIsIDcxMjQ3LCA3MTI1MiwgNzEyNTcsIDcxMjYxLCA3MTI2NiwgNzEyNzEsIDcxMjc2LCA3MTI4MSwgCi0gICAgNzEyODYsIDcxMjkyLCA3MTI5NywgNzEzMDIsIDcxMzA5LCA3MTMxNiwgNzEzMjMsIDcxMzMwLCA3MTMzNywgNzEzNDYsIAotICAgIDcxMzU1LCA3MTM2MSwgNzEzNjcsIDcxMzczLCA3MTM3OSwgNzEzODUsIDcxMzkxLCA3MTM5OCwgNzE0MDUsIDcxNDEyLCAKLSAgICA3MTQxNiwgNzE0MjMsIDcxNDI4LCA3MTQzMywgNzE0NDAsIDAsIDcxNDUzLCA3MTQ2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzE0NjksIDcxNDc4LCA3MTQ4NywgNzE0OTYsIDcxNTA1LCA3MTUxNCwgNzE1MjMsIAotICAgIDcxNTMyLCA3MTU0MSwgNzE1NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyMDY3LCAwLCAxMjA3NiwgMTIwODMsIDEyMDkxLCAxMjEwMywgMTIxMTAsIDEyMTE3LCAxMjEyNCwgMTIxMzUsIDEyMTQ2LCAKKyAgICAxMjE1MywgMTIxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMTY3LCAxMjE3MiwgMTIxNzcsIDEyMTgyLCAxMjE4NywgCisgICAgMTIxOTIsIDEyMTk3LCAxMjIwMiwgMTIyMDcsIDEyMjEyLCAxMjIxNywgMTIyMjIsIDEyMjI3LCAxMjIzMSwgMTIyMzUsIAorICAgIDEyMjM5LCAxMjI0NCwgMTIyNTAsIDEyMjU2LCAxMjI2MiwgMTIyNjcsIDEyMjcyLCAxMjI3NywgMTIyODIsIDEyMjg4LCAKKyAgICAxMjI5NywgMTIzMDUsIDAsIDEyMzExLCAxMjMxNywgMTIzMjEsIDEyMzI1LCAxMjMyOSwgMTIzMzQsIDEyMzM3LCAxMjM0MSwgCisgICAgMTIzNDQsIDEyMzQ4LCAxMjM1MSwgMTIzNTUsIDEyMzU5LCAxMjM2MywgMTIzNjgsIDEyMzczLCAxMjM3NiwgMTIzODAsIAorICAgIDEyMzg1LCAxMjM5MCwgMTIzOTMsIDEyMzk3LCAxMjQwMCwgMTI0MDQsIDEyNDA4LCAxMjQxMiwgMTI0MTYsIDEyNDIwLCAKKyAgICAxMjQyNCwgMTI0MjgsIDEyNDMyLCAxMjQzNiwgMTI0NDAsIDEyNDQ0LCAxMjQ0OCwgMTI0NTIsIDEyNDU2LCAxMjQ2MCwgCisgICAgMTI0NjQsIDEyNDY4LCAxMjQ3MiwgMTI0NzUsIDEyNDc5LCAxMjQ4MiwgMTI0ODYsIDEyNDkwLCAxMjQ5NCwgMTI0OTcsIAorICAgIDEyNTAwLCAxMjUwMywgMTI1MDcsIDEyNTExLCAxMjUxNSwgMTI1MTksIDEyNTIzLCAxMjUyNywgMTI1MzEsIDEyNTM0LCAKKyAgICAxMjUzNywgMTI1NDIsIDEyNTQ3LCAxMjU1MSwgMTI1NTUsIDEyNTYwLCAxMjU2NCwgMTI1NjksIDEyNTczLCAxMjU3OCwgCisgICAgMTI1ODMsIDEyNTg5LCAxMjU5NSwgMTI2MDEsIDEyNjA1LCAxMjYxMCwgMTI2MTYsIDEyNjIyLCAxMjYyNiwgMTI2MzEsIAorICAgIDEyNjM1LCAxMjY0MSwgMTI2NDYsIDEyNjQ5LCAxMjY1NSwgMTI2NjEsIDEyNjY2LCAxMjY3MSwgMTI2NzgsIDEyNjgzLCAKKyAgICAxMjY4OCwgMTI2OTIsIDEyNjk2LCAxMjcwMCwgMTI3MDQsIDEyNzA4LCAxMjcxMiwgMTI3MTYsIDEyNzIwLCAxMjcyNSwgCisgICAgMTI3MzAsIDEyNzM1LCAxMjc0MSwgMTI3NDQsIDEyNzQ4LCAxMjc1MiwgMTI3NTUsIDEyNzU4LCAxMjc2MSwgMTI3NjQsIAorICAgIDEyNzY3LCAxMjc3MCwgMTI3NzMsIDEyNzc2LCAxMjc3OSwgMTI3ODMsIDEyNzkwLCAxMjc5NSwgMTI3OTksIDEyODAzLCAKKyAgICAxMjgwNywgMTI4MTEsIDAsIDEyODE1LCAxMjgxOSwgMTI4MjMsIDEyODI3LCAxMjgzMSwgMTI4MzcsIDEyODQxLCAwLCAKKyAgICAxMjg0NSwgMTI4NDksIDEyODUzLCAwLCAxMjg1NywgMTI4NjAsIDEyODY0LCAxMjg2NywgMTI4NzEsIDEyODc0LCAxMjg3OCwgCisgICAgMTI4ODIsIDAsIDAsIDEyODg2LCAxMjg4OSwgMCwgMCwgMTI4OTMsIDEyODk2LCAxMjkwMCwgMTI5MDMsIDEyOTA3LCAKKyAgICAxMjkxMSwgMTI5MTUsIDEyOTE5LCAxMjkyMywgMTI5MjcsIDEyOTMxLCAxMjkzNSwgMTI5MzksIDEyOTQzLCAxMjk0NywgCisgICAgMTI5NTEsIDEyOTU1LCAxMjk1OSwgMTI5NjMsIDEyOTY3LCAxMjk3MSwgMTI5NzUsIDAsIDEyOTc4LCAxMjk4MSwgMTI5ODUsIAorICAgIDEyOTg5LCAxMjk5MywgMTI5OTYsIDEyOTk5LCAwLCAxMzAwMiwgMCwgMCwgMCwgMTMwMDYsIDEzMDEwLCAxMzAxNCwgCisgICAgMTMwMTcsIDAsIDAsIDEzMDIwLCAxMzAyNCwgMTMwMjgsIDEzMDMzLCAxMzAzNywgMTMwNDIsIDEzMDQ2LCAxMzA1MSwgCisgICAgMTMwNTYsIDAsIDAsIDEzMDYyLCAxMzA2NiwgMCwgMCwgMTMwNzEsIDEzMDc1LCAxMzA4MCwgMTMwODQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEzMDkwLCAwLCAwLCAwLCAwLCAxMzA5NiwgMTMxMDAsIDAsIDEzMTA0LCAxMzEwOCwgMTMxMTMsIAorICAgIDEzMTE4LCAxMzEyMywgMCwgMCwgMTMxMjksIDEzMTMzLCAxMzEzNiwgMTMxMzksIDEzMTQyLCAxMzE0NSwgMTMxNDgsIAorICAgIDEzMTUxLCAxMzE1NCwgMTMxNTcsIDEzMTYwLCAxMzE2OSwgMTMxNzgsIDEzMTgyLCAxMzE4NiwgMTMxOTIsIDEzMTk4LCAKKyAgICAxMzIwNCwgMTMyMTAsIDEzMjI0LCAxMzIzMSwgMTMyMzQsIDAsIDAsIDAsIDAsIDAsIDEzMjM4LCAxMzI0NCwgMTMyNDgsIDAsIAorICAgIDEzMjUyLCAxMzI1NSwgMTMyNTksIDEzMjYyLCAxMzI2NiwgMTMyNjksIDAsIDAsIDAsIDAsIDEzMjczLCAxMzI3NywgMCwgMCwgCisgICAgMTMyODEsIDEzMjg1LCAxMzI4OSwgMTMyOTIsIDEzMjk2LCAxMzMwMCwgMTMzMDQsIDEzMzA4LCAxMzMxMiwgMTMzMTYsIAorICAgIDEzMzIwLCAxMzMyNCwgMTMzMjgsIDEzMzMyLCAxMzMzNiwgMTMzNDAsIDEzMzQ0LCAxMzM0OCwgMTMzNTIsIDEzMzU2LCAKKyAgICAxMzM2MCwgMTMzNjQsIDAsIDEzMzY3LCAxMzM3MCwgMTMzNzQsIDEzMzc4LCAxMzM4MiwgMTMzODUsIDEzMzg4LCAwLCAKKyAgICAxMzM5MSwgMTMzOTUsIDAsIDEzMzk5LCAxMzQwMywgMCwgMTM0MDcsIDEzNDEwLCAwLCAwLCAxMzQxMywgMCwgMTM0MTcsIAorICAgIDEzNDIyLCAxMzQyNiwgMTM0MzEsIDEzNDM1LCAwLCAwLCAwLCAwLCAxMzQ0MCwgMTM0NDUsIDAsIDAsIDEzNDUwLCAxMzQ1NSwgCisgICAgMTM0NjAsIDAsIDAsIDAsIDEzNDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ2OCwgMTM0NzIsIDEzNDc2LCAxMzQ4MCwgCisgICAgMCwgMTM0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDg4LCAxMzQ5MiwgMTM0OTUsIDEzNDk4LCAxMzUwMSwgMTM1MDQsIAorICAgIDEzNTA3LCAxMzUxMCwgMTM1MTMsIDEzNTE2LCAxMzUxOSwgMTM1MjIsIDEzNTI1LCAxMzUyOCwgMTM1MzEsIDEzNTM2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU0MCwgMTM1NDQsIDEzNTQ4LCAwLCAxMzU1MiwgMTM1NTUsIAorICAgIDEzNTU5LCAxMzU2MiwgMTM1NjYsIDEzNTY5LCAxMzU3MywgMTM1NzcsIDEzNTgxLCAwLCAxMzU4NiwgMTM1ODksIDEzNTkzLCAKKyAgICAwLCAxMzU5OCwgMTM2MDEsIDEzNjA1LCAxMzYwOCwgMTM2MTIsIDEzNjE2LCAxMzYyMCwgMTM2MjQsIDEzNjI4LCAxMzYzMiwgCisgICAgMTM2MzYsIDEzNjQwLCAxMzY0NCwgMTM2NDgsIDEzNjUyLCAxMzY1NiwgMTM2NjAsIDEzNjY0LCAxMzY2OCwgMTM2NzIsIAorICAgIDEzNjc2LCAxMzY4MCwgMCwgMTM2ODMsIDEzNjg2LCAxMzY5MCwgMTM2OTQsIDEzNjk4LCAxMzcwMSwgMTM3MDQsIDAsIAorICAgIDEzNzA3LCAxMzcxMSwgMCwgMTM3MTUsIDEzNzE5LCAxMzcyMywgMTM3MjcsIDEzNzMwLCAwLCAwLCAxMzczMywgMTM3MzcsIAorICAgIDEzNzQxLCAxMzc0NiwgMTM3NTAsIDEzNzU1LCAxMzc1OSwgMTM3NjQsIDEzNzY5LCAxMzc3NSwgMCwgMTM3ODEsIDEzNzg1LCAKKyAgICAxMzc5MCwgMCwgMTM3OTYsIDEzODAwLCAxMzgwNSwgMCwgMCwgMTM4MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzODEyLCAxMzgxNywgMTM4MjIsIDEzODI3LCAwLCAwLCAxMzgzMywgMTM4MzcsIDEzODQwLCAKKyAgICAxMzg0MywgMTM4NDYsIDEzODQ5LCAxMzg1MiwgMTM4NTUsIDEzODU4LCAxMzg2MSwgMTM4NjQsIDEzODY4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg3MiwgMTM4NzYsIDEzODgwLCAwLCAxMzg4NCwgMTM4ODcsIAorICAgIDEzODkxLCAxMzg5NCwgMTM4OTgsIDEzOTAxLCAxMzkwNSwgMTM5MDksIDAsIDAsIDEzOTEzLCAxMzkxNiwgMCwgMCwgCisgICAgMTM5MjAsIDEzOTIzLCAxMzkyNywgMTM5MzAsIDEzOTM0LCAxMzkzOCwgMTM5NDIsIDEzOTQ2LCAxMzk1MCwgMTM5NTQsIAorICAgIDEzOTU4LCAxMzk2MiwgMTM5NjYsIDEzOTcwLCAxMzk3NCwgMTM5NzgsIDEzOTgyLCAxMzk4NiwgMTM5OTAsIDEzOTk0LCAKKyAgICAxMzk5OCwgMTQwMDIsIDAsIDE0MDA1LCAxNDAwOCwgMTQwMTIsIDE0MDE2LCAxNDAyMCwgMTQwMjMsIDE0MDI2LCAwLCAKKyAgICAxNDAyOSwgMTQwMzMsIDAsIDE0MDM3LCAxNDA0MSwgMTQwNDUsIDE0MDQ5LCAxNDA1MiwgMCwgMCwgMTQwNTUsIDE0MDU5LCAKKyAgICAxNDA2MywgMTQwNjgsIDE0MDcyLCAxNDA3NywgMTQwODEsIDE0MDg2LCAxNDA5MSwgMCwgMCwgMTQwOTcsIDE0MTAxLCAwLCAKKyAgICAwLCAxNDEwNiwgMTQxMTAsIDE0MTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDExOSwgMTQxMjUsIDAsIDAsIDAsIDAsIAorICAgIDE0MTMxLCAxNDEzNSwgMCwgMTQxMzksIDE0MTQzLCAxNDE0OCwgMTQxNTMsIDE0MTU4LCAwLCAwLCAxNDE2NCwgMTQxNjgsIAorICAgIDE0MTcxLCAxNDE3NCwgMTQxNzcsIDE0MTgwLCAxNDE4MywgMTQxODYsIDE0MTg5LCAxNDE5MiwgMTQxOTUsIDE0MTk4LCAKKyAgICAxNDIwMiwgMTQyMDgsIDE0MjE0LCAxNDIyMCwgMTQyMjYsIDE0MjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDIzOCwgMTQyNDIsIDAsIDE0MjQ2LCAxNDI0OSwgMTQyNTMsIDE0MjU2LCAxNDI2MCwgMTQyNjMsIDAsIDAsIDAsIAorICAgIDE0MjY3LCAxNDI3MCwgMTQyNzQsIDAsIDE0Mjc4LCAxNDI4MSwgMTQyODUsIDE0Mjg5LCAwLCAwLCAwLCAxNDI5MiwgCisgICAgMTQyOTYsIDAsIDE0MzAwLCAwLCAxNDMwNCwgMTQzMDgsIDAsIDAsIDAsIDE0MzEyLCAxNDMxNiwgMCwgMCwgMCwgMTQzMjAsIAorICAgIDE0MzIzLCAxNDMyNywgMCwgMCwgMCwgMTQzMzAsIDE0MzMzLCAxNDMzNiwgMTQzMzksIDE0MzQzLCAxNDM0NywgMTQzNTEsIAorICAgIDE0MzU1LCAxNDM1OSwgMTQzNjMsIDE0MzY3LCAxNDM3MCwgMCwgMCwgMCwgMCwgMTQzNzMsIDE0Mzc4LCAxNDM4MiwgCisgICAgMTQzODcsIDE0MzkxLCAwLCAwLCAwLCAxNDM5NiwgMTQ0MDAsIDE0NDA1LCAwLCAxNDQxMCwgMTQ0MTQsIDE0NDE5LCAKKyAgICAxNDQyNCwgMCwgMCwgMTQ0MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDQzNywgMTQ0NDEsIDE0NDQ0LCAxNDQ0NywgMTQ0NTAsIDE0NDUzLCAxNDQ1NiwgMTQ0NTksIAorICAgIDE0NDYyLCAxNDQ2NSwgMTQ0NjgsIDE0NDcyLCAxNDQ3NywgMTQ0ODIsIDE0NDg2LCAxNDQ5MCwgMTQ0OTQsIDE0NDk4LCAKKyAgICAxNDUwMiwgMTQ1MDcsIDE0NTExLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDUxNCwgMTQ1MTgsIDE0NTIyLCAwLCAxNDUyNiwgCisgICAgMTQ1MjksIDE0NTMzLCAxNDUzNiwgMTQ1NDAsIDE0NTQzLCAxNDU0NywgMTQ1NTEsIDAsIDE0NTU1LCAxNDU1OCwgMTQ1NjIsIAorICAgIDAsIDE0NTY2LCAxNDU2OSwgMTQ1NzMsIDE0NTc3LCAxNDU4MCwgMTQ1ODQsIDE0NTg4LCAxNDU5MiwgMTQ1OTYsIDE0NjAwLCAKKyAgICAxNDYwNCwgMTQ2MDgsIDE0NjEyLCAxNDYxNiwgMTQ2MjAsIDE0NjI0LCAxNDYyOCwgMTQ2MzIsIDE0NjM2LCAxNDY0MCwgCisgICAgMTQ2NDQsIDE0NjQ4LCAxNDY1MiwgMCwgMTQ2NTUsIDE0NjU4LCAxNDY2MiwgMTQ2NjYsIDE0NjcwLCAxNDY3MywgMTQ2NzYsIAorICAgIDE0Njc5LCAxNDY4MywgMTQ2ODcsIDAsIDE0NjkxLCAxNDY5NSwgMTQ2OTksIDE0NzAzLCAxNDcwNiwgMCwgMCwgMCwgCisgICAgMTQ3MDksIDE0NzEzLCAxNDcxOCwgMTQ3MjIsIDE0NzI3LCAxNDczMSwgMTQ3MzYsIDE0NzQxLCAwLCAxNDc0NywgMTQ3NTEsIAorICAgIDE0NzU2LCAwLCAxNDc2MSwgMTQ3NjUsIDE0NzcwLCAxNDc3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3NzksIDE0NzgzLCAKKyAgICAwLCAxNDc4OSwgMTQ3OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDE0Nzk3LCAxNDgwMiwgMTQ4MDcsIDE0ODEyLCAwLCAwLCAKKyAgICAxNDgxOCwgMTQ4MjIsIDE0ODI1LCAxNDgyOCwgMTQ4MzEsIDE0ODM0LCAxNDgzNywgMTQ4NDAsIDE0ODQzLCAxNDg0NiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4NDksIDE0ODYyLCAxNDg3NCwgMTQ4ODYsIDE0ODk4LCAxNDkxMCwgMTQ5MjIsIAorICAgIDE0OTM0LCAwLCAwLCAxNDkzOCwgMTQ5NDIsIDAsIDE0OTQ2LCAxNDk0OSwgMTQ5NTMsIDE0OTU2LCAxNDk2MCwgMTQ5NjMsIAorICAgIDE0OTY3LCAxNDk3MSwgMCwgMTQ5NzUsIDE0OTc4LCAxNDk4MiwgMCwgMTQ5ODYsIDE0OTg5LCAxNDk5MywgMTQ5OTcsIAorICAgIDE1MDAwLCAxNTAwNCwgMTUwMDgsIDE1MDEyLCAxNTAxNiwgMTUwMjAsIDE1MDI0LCAxNTAyOCwgMTUwMzIsIDE1MDM2LCAKKyAgICAxNTA0MCwgMTUwNDQsIDE1MDQ4LCAxNTA1MiwgMTUwNTYsIDE1MDYwLCAxNTA2NCwgMTUwNjgsIDE1MDcyLCAwLCAxNTA3NSwgCisgICAgMTUwNzgsIDE1MDgyLCAxNTA4NiwgMTUwOTAsIDE1MDkzLCAxNTA5NiwgMTUwOTksIDE1MTAzLCAxNTEwNywgMCwgMTUxMTEsIAorICAgIDE1MTE1LCAxNTExOSwgMTUxMjMsIDE1MTI2LCAwLCAwLCAxNTEyOSwgMTUxMzMsIDE1MTM3LCAxNTE0MiwgMTUxNDYsIAorICAgIDE1MTUxLCAxNTE1NSwgMTUxNjAsIDE1MTY1LCAwLCAxNTE3MSwgMTUxNzUsIDE1MTgwLCAwLCAxNTE4NSwgMTUxODksIAorICAgIDE1MTk0LCAxNTE5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyMDMsIDE1MjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTIxMywgMCwgMTUyMTcsIDE1MjIyLCAxNTIyNywgMTUyMzIsIDAsIDAsIDE1MjM4LCAxNTI0MiwgMTUyNDUsIDE1MjQ4LCAKKyAgICAxNTI1MSwgMTUyNTQsIDE1MjU3LCAxNTI2MCwgMTUyNjMsIDE1MjY2LCAwLCAxNTI2OSwgMTUyNzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Mjc3LCAxNTI4MSwgMCwgMTUyODUsIDE1Mjg4LCAxNTI5MiwgCisgICAgMTUyOTUsIDE1Mjk5LCAxNTMwMiwgMTUzMDYsIDE1MzEwLCAwLCAxNTMxNCwgMTUzMTcsIDE1MzIxLCAwLCAxNTMyNSwgCisgICAgMTUzMjgsIDE1MzMyLCAxNTMzNiwgMTUzMzksIDE1MzQzLCAxNTM0NywgMTUzNTEsIDE1MzU1LCAxNTM1OSwgMTUzNjMsIAorICAgIDE1MzY3LCAxNTM3MSwgMTUzNzUsIDE1Mzc5LCAxNTM4MywgMTUzODcsIDE1MzkxLCAxNTM5NSwgMTUzOTksIDE1NDAzLCAKKyAgICAxNTQwNywgMTU0MTEsIDE1NDE0LCAxNTQxOCwgMTU0MjEsIDE1NDI1LCAxNTQyOSwgMTU0MzMsIDE1NDM2LCAxNTQzOSwgCisgICAgMTU0NDIsIDE1NDQ2LCAxNTQ1MCwgMTU0NTQsIDE1NDU4LCAxNTQ2MiwgMTU0NjYsIDE1NDcwLCAxNTQ3MywgMTU0NzYsIDAsIAorICAgIDAsIDE1NDgwLCAxNTQ4NCwgMTU0ODksIDE1NDkzLCAxNTQ5OCwgMTU1MDIsIDE1NTA3LCAxNTUxMiwgMCwgMTU1MTgsIAorICAgIDE1NTIyLCAxNTUyNywgMCwgMTU1MzIsIDE1NTM2LCAxNTU0MSwgMTU1NDYsIDE1NTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNTU1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1NjEsIDE1NTY2LCAxNTU3MSwgMTU1NzYsIDAsIDAsIAorICAgIDE1NTgyLCAxNTU4NiwgMTU1ODksIDE1NTkyLCAxNTU5NSwgMTU1OTgsIDE1NjAxLCAxNTYwNCwgMTU2MDcsIDE1NjEwLCAKKyAgICAxNTYxMywgMTU2MTcsIDE1NjIyLCAxNTYyNywgMTU2MzMsIDE1NjM5LCAwLCAwLCAwLCAxNTY0NSwgMTU2NDksIDE1NjU1LCAKKyAgICAxNTY2MSwgMTU2NjcsIDE1NjcyLCAxNTY3OCwgMCwgMCwgMTU2ODQsIDE1Njg4LCAwLCAxNTY5MiwgMTU2OTYsIDE1NzAwLCAKKyAgICAxNTcwNCwgMTU3MDgsIDE1NzEyLCAxNTcxNiwgMTU3MjAsIDE1NzI0LCAxNTcyOCwgMTU3MzIsIDE1NzM2LCAxNTc0MCwgCisgICAgMTU3NDQsIDE1NzQ4LCAxNTc1MiwgMTU3NTYsIDE1NzYwLCAwLCAwLCAwLCAxNTc2NCwgMTU3NzAsIDE1Nzc2LCAxNTc4MiwgCisgICAgMTU3ODgsIDE1Nzk0LCAxNTgwMCwgMTU4MDYsIDE1ODEyLCAxNTgxOCwgMTU4MjQsIDE1ODMwLCAxNTgzOCwgMTU4NDQsIAorICAgIDE1ODUwLCAxNTg1NiwgMTU4NjIsIDE1ODY4LCAxNTg3NCwgMTU4ODAsIDE1ODg2LCAxNTg5MiwgMTU4OTgsIDE1OTA0LCAwLCAKKyAgICAxNTkxMCwgMTU5MTYsIDE1OTIyLCAxNTkyOCwgMTU5MzQsIDE1OTQwLCAxNTk0NCwgMTU5NTAsIDE1OTU0LCAwLCAxNTk1OCwgCisgICAgMCwgMCwgMTU5NjQsIDE1OTY4LCAxNTk3NCwgMTU5ODAsIDE1OTg2LCAxNTk5MCwgMTU5OTYsIDAsIDAsIDAsIDE2MDAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjAwNCwgMTYwMDksIDE2MDE2LCAxNjAyMywgMTYwMzAsIDE2MDM3LCAwLCAxNjA0NCwgMCwgMTYwNTEsIAorICAgIDE2MDU2LCAxNjA2MSwgMTYwNjgsIDE2MDc1LCAxNjA4NCwgMTYwOTUsIDE2MTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjEwOSwgMTYxMTYsIDE2MTIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNjEyOCwgMTYxMzQsIDE2MTQwLCAxNjE0NiwgMTYxNTIsIDE2MTU4LCAxNjE2NCwgMTYxNzAsIAorICAgIDE2MTc2LCAxNjE4MiwgMTYxODgsIDE2MTk0LCAxNjIwMCwgMTYyMDYsIDE2MjEyLCAxNjIxOCwgMTYyMjQsIDE2MjMwLCAKKyAgICAxNjIzNiwgMTYyNDIsIDE2MjQ4LCAxNjI1NCwgMTYyNjAsIDE2MjY2LCAxNjI3MiwgMTYyNzgsIDE2Mjg0LCAxNjI5MCwgCisgICAgMTYyOTYsIDE2MzAyLCAxNjMwOCwgMTYzMTQsIDE2MzIwLCAxNjMyNSwgMTYzMzEsIDE2MzM3LCAxNjM0MSwgMTYzNDcsIAorICAgIDE2MzUxLCAxNjM1NywgMTYzNjMsIDE2MzY5LCAxNjM3NSwgMTYzODEsIDE2Mzg3LCAxNjM5MiwgMTYzOTgsIDE2NDAyLCAKKyAgICAxNjQwNywgMTY0MTMsIDE2NDE5LCAxNjQyNSwgMTY0MzAsIDE2NDM2LCAxNjQ0MiwgMTY0NDgsIDE2NDUzLCAxNjQ1OSwgMCwgCisgICAgMCwgMCwgMCwgMTY0NjMsIDE2NDY5LCAxNjQ3NCwgMTY0ODAsIDE2NDg1LCAxNjQ5MywgMTY1MDEsIDE2NTA1LCAxNjUwOSwgCisgICAgMTY1MTMsIDE2NTE5LCAxNjUyNSwgMTY1MzEsIDE2NTM3LCAxNjU0MSwgMTY1NDUsIDE2NTQ5LCAxNjU1MywgMTY1NTcsIAorICAgIDE2NTYwLCAxNjU2MywgMTY1NjYsIDE2NTY5LCAxNjU3MiwgMTY1NzUsIDE2NTc4LCAxNjU4MSwgMTY1ODQsIDE2NTg4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjU5MiwgMTY1OTcsIDAsIDE2NjA0LCAwLCAwLCAxNjYxMSwgCisgICAgMTY2MTYsIDAsIDE2NjIxLCAwLCAwLCAxNjYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2MzMsIDE2NjM4LCAxNjY0MiwgCisgICAgMTY2NDksIDAsIDE2NjU2LCAxNjY2MSwgMTY2NjYsIDE2NjcxLCAxNjY3OCwgMTY2ODUsIDE2NjkyLCAwLCAxNjY5OSwgCisgICAgMTY3MDQsIDE2NzA5LCAwLCAxNjcxNiwgMCwgMTY3MjMsIDAsIDAsIDE2NzI4LCAxNjczNSwgMCwgMTY3NDIsIDE2NzQ2LCAKKyAgICAxNjc1MywgMTY3NTcsIDE2NzYyLCAxNjc3MCwgMTY3NzYsIDE2NzgyLCAxNjc4NywgMTY3OTMsIDE2Nzk5LCAxNjgwNSwgCisgICAgMTY4MTAsIDAsIDE2ODE2LCAxNjgyNCwgMTY4MzEsIDAsIDAsIDE2ODM4LCAxNjg0MywgMTY4NDksIDE2ODU0LCAxNjg2MCwgCisgICAgMCwgMTY4NjYsIDAsIDE2ODcyLCAxNjg3OSwgMTY4ODYsIDE2ODkzLCAxNjkwMCwgMTY5MDUsIDAsIDAsIDE2OTA5LCAKKyAgICAxNjkxNCwgMTY5MTgsIDE2OTIyLCAxNjkyNiwgMTY5MzAsIDE2OTM0LCAxNjkzOCwgMTY5NDIsIDE2OTQ2LCAwLCAwLCAKKyAgICAxNjk1MCwgMTY5NTYsIDE2OTYyLCAxNjk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY5NzYsIDE2OTgwLCAxNjk5MSwgCisgICAgMTcwMDYsIDE3MDIxLCAxNzAzMSwgMTcwNDIsIDE3MDU1LCAxNzA2NiwgMTcwNzIsIDE3MDgwLCAxNzA5MCwgMTcwOTYsIAorICAgIDE3MTA0LCAxNzEwOCwgMTcxMTQsIDE3MTIwLCAxNzEyOCwgMTcxMzgsIDE3MTQ2LCAxNzE1OSwgMTcxNjUsIDE3MTczLCAKKyAgICAxNzE4MSwgMTcxOTMsIDE3MjAwLCAxNzIwOCwgMTcyMTYsIDE3MjI0LCAxNzIzMiwgMTcyNDAsIDE3MjQ4LCAxNzI1OCwgCisgICAgMTcyNjIsIDE3MjY1LCAxNzI2OCwgMTcyNzEsIDE3Mjc0LCAxNzI3NywgMTcyODAsIDE3MjgzLCAxNzI4NiwgMTcyODksIAorICAgIDE3MjkzLCAxNzI5NywgMTczMDEsIDE3MzA1LCAxNzMwOSwgMTczMTMsIDE3MzE3LCAxNzMyMSwgMTczMjUsIDE3MzMwLCAKKyAgICAxNzMzNiwgMTczNDYsIDE3MzYwLCAxNzM3MCwgMTczNzYsIDE3MzgyLCAxNzM5MCwgMTczOTgsIDE3NDA2LCAxNzQxNCwgCisgICAgMTc0MjAsIDE3NDI2LCAxNzQyOSwgMTc0MzMsIDE3NDM3LCAxNzQ0MSwgMTc0NDUsIDE3NDQ5LCAxNzQ1MywgMCwgMTc0NTcsIAorICAgIDE3NDYxLCAxNzQ2NSwgMTc0NjksIDE3NDczLCAxNzQ3NywgMTc0ODEsIDE3NDg1LCAxNzQ4OSwgMTc0OTMsIDE3NDk3LCAKKyAgICAxNzUwMCwgMTc1MDMsIDE3NTA3LCAxNzUxMSwgMTc1MTUsIDE3NTE4LCAxNzUyMiwgMTc1MjYsIDE3NTMwLCAxNzUzNCwgCisgICAgMTc1MzgsIDE3NTQyLCAxNzU0NiwgMTc1NTAsIDE3NTUzLCAxNzU1NiwgMTc1NjAsIDE3NTY0LCAxNzU2OCwgMTc1NzEsIAorICAgIDE3NTc0LCAxNzU3NywgMTc1ODEsIDE3NTg2LCAxNzU5MCwgMCwgMCwgMCwgMCwgMTc1OTQsIDE3NTk5LCAxNzYwMywgCisgICAgMTc2MDgsIDE3NjEyLCAxNzYxNywgMTc2MjIsIDE3NjI4LCAxNzYzMywgMTc2MzksIDE3NjQzLCAxNzY0OCwgMTc2NTIsIAorICAgIDE3NjU3LCAxNzY2NywgMTc2NzMsIDE3Njc5LCAxNzY4NiwgMTc2OTYsIDE3NzAyLCAxNzcwNiwgMTc3MTAsIDE3NzE2LCAKKyAgICAxNzcyMiwgMTc3MzAsIDE3NzM2LCAxNzc0NCwgMTc3NTIsIDE3NzYwLCAxNzc3MCwgMTc3NzgsIDE3Nzg4LCAxNzc5MywgCisgICAgMTc3OTksIDE3ODA1LCAxNzgxMSwgMTc4MTcsIDE3ODIzLCAxNzgyOSwgMCwgMTc4MzUsIDE3ODQxLCAxNzg0NywgMTc4NTMsIAorICAgIDE3ODU5LCAxNzg2NSwgMTc4NzEsIDE3ODc3LCAxNzg4MywgMTc4ODksIDE3ODk1LCAxNzkwMCwgMTc5MDUsIDE3OTExLCAKKyAgICAxNzkxNywgMTc5MjMsIDE3OTI4LCAxNzkzNCwgMTc5NDAsIDE3OTQ2LCAxNzk1MiwgMTc5NTgsIDE3OTY0LCAxNzk3MCwgCisgICAgMTc5NzYsIDE3OTgxLCAxNzk4NiwgMTc5OTIsIDE3OTk4LCAxODAwNCwgMTgwMDksIDE4MDE0LCAxODAxOSwgMTgwMjUsIAorICAgIDE4MDMzLCAxODA0MCwgMCwgMTgwNDcsIDE4MDU0LCAxODA2NywgMTgwNzQsIDE4MDgxLCAxODA4OSwgMTgwOTcsIDE4MTAzLCAKKyAgICAxODEwOSwgMTgxMTUsIDE4MTI1LCAxODEzMCwgMTgxMzYsIDE4MTQ2LCAxODE1NiwgMCwgMTgxNjYsIDE4MTc2LCAxODE4NCwgCisgICAgMTgxOTYsIDE4MjA4LCAxODIxNCwgMTgyMjgsIDE4MjQzLCAxODI0OCwgMTgyNTMsIDE4MjYxLCAxODI2OSwgMTgyNzcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4Mjg1LCAxODI4OCwgMTgyOTIsIDE4Mjk2LCAxODMwMCwgCisgICAgMTgzMDQsIDE4MzA4LCAxODMxMiwgMTgzMTYsIDE4MzIwLCAxODMyNCwgMTgzMjgsIDE4MzMyLCAxODMzNiwgMTgzNDAsIAorICAgIDE4MzQ0LCAxODM0OCwgMTgzNTIsIDE4MzU2LCAxODM2MCwgMTgzNjQsIDE4MzY3LCAxODM3MCwgMTgzNzQsIDE4Mzc4LCAKKyAgICAxODM4MiwgMTgzODUsIDE4Mzg4LCAxODM5MSwgMTgzOTUsIDE4Mzk5LCAxODQwMiwgMTg0MDUsIDE4NDA5LCAxODQxMiwgCisgICAgMTg0MTcsIDE4NDIwLCAxODQyNCwgMTg0MjcsIDE4NDMxLCAxODQzNCwgMTg0MzksIDE4NDQyLCAxODQ0NiwgMTg0NTMsIAorICAgIDE4NDU4LCAxODQ2MiwgMTg0NjcsIDE4NDcxLCAxODQ3NiwgMTg0ODAsIDE4NDg1LCAxODQ5MiwgMTg0OTgsIDE4NTAzLCAKKyAgICAxODUwNywgMTg1MTEsIDE4NTE1LCAxODUxOSwgMTg1MjMsIDE4NTI4LCAxODUzMywgMTg1MzksIDE4NTQ0LCAxODU0OSwgCisgICAgMTg1NTMsIDE4NTU2LCAxODU1OSwgMTg1NjIsIDE4NTY1LCAxODU2OCwgMTg1NzEsIDE4NTc0LCAxODU3NywgMTg1ODAsIAorICAgIDE4NTg2LCAxODU5MCwgMTg1OTQsIDE4NTk4LCAxODYwMiwgMTg2MDYsIDE4NjEwLCAxODYxNCwgMTg2MTgsIDE4NjIzLCAKKyAgICAxODYyNywgMTg2MzIsIDE4NjM3LCAxODY0MywgMTg2NDgsIDE4NjU0LCAxODY2MCwgMTg2NjYsIDE4NjcyLCAxODY3OCwgCisgICAgMTg2ODUsIDE4NjkyLCAxODcwMCwgMTg3MDgsIDE4NzE3LCAxODcyNiwgMTg3MzcsIDE4NzQ3LCAxODc1NywgMTg3NjgsIAorICAgIDE4Nzc5LCAxODc4OSwgMTg3OTksIDE4ODA5LCAxODgxOSwgMTg4MjksIDE4ODM5LCAxODg0OSwgMTg4NTksIDE4ODY3LCAKKyAgICAxODg3NCwgMTg4ODAsIDE4ODg3LCAxODg5MiwgMTg4OTgsIDE4OTA0LCAxODkxMCwgMTg5MTYsIDE4OTIyLCAxODkyOCwgCisgICAgMTg5MzMsIDE4OTM5LCAxODk0NSwgMTg5NTEsIDE4OTU3LCAxODk2MiwgMTg5NzAsIDE4OTc3LCAxODk4MywgMTg5OTAsIAorICAgIDE4OTk4LCAxOTAwNCwgMTkwMTAsIDE5MDE2LCAxOTAyMiwgMTkwMzAsIDE5MDM4LCAxOTA0OCwgMTkwNTYsIDE5MDY0LCAKKyAgICAxOTA3MCwgMTkwNzUsIDE5MDgwLCAxOTA4NSwgMTkwOTAsIDE5MDk1LCAxOTEwMCwgMTkxMDUsIDE5MTEwLCAxOTExNSwgCisgICAgMTkxMjEsIDE5MTI3LCAxOTEzMywgMTkxNDAsIDE5MTQ1LCAxOTE1MSwgMTkxNTYsIDE5MTYxLCAxOTE2NiwgMTkxNzEsIAorICAgIDE5MTc2LCAxOTE4MSwgMTkxODYsIDE5MTkxLCAxOTE5NiwgMTkyMDEsIDE5MjA2LCAxOTIxMSwgMTkyMTYsIDE5MjIxLCAKKyAgICAxOTIyNiwgMTkyMzEsIDE5MjM2LCAxOTI0MSwgMTkyNDYsIDE5MjUxLCAxOTI1NiwgMTkyNjEsIDE5MjY2LCAxOTI3MSwgCisgICAgMTkyNzYsIDE5MjgxLCAxOTI4NiwgMTkyOTEsIDE5Mjk2LCAxOTMwMSwgMTkzMDYsIDE5MzExLCAxOTMxNiwgMTkzMjEsIAorICAgIDE5MzI2LCAxOTMzMSwgMTkzMzYsIDAsIDE5MzQxLCAwLCAwLCAwLCAwLCAwLCAxOTM0NiwgMCwgMCwgMTkzNTEsIDE5MzU1LCAKKyAgICAxOTM1OSwgMTkzNjMsIDE5MzY3LCAxOTM3MSwgMTkzNzUsIDE5Mzc5LCAxOTM4MywgMTkzODcsIDE5MzkxLCAxOTM5NSwgCisgICAgMTkzOTksIDE5NDAzLCAxOTQwNywgMTk0MTEsIDE5NDE1LCAxOTQxOSwgMTk0MjMsIDE5NDI3LCAxOTQzMSwgMTk0MzUsIAorICAgIDE5NDM5LCAxOTQ0MywgMTk0NDcsIDE5NDUxLCAxOTQ1NSwgMTk0NTksIDE5NDYzLCAxOTQ2NywgMTk0NzEsIDE5NDc1LCAKKyAgICAxOTQ3OSwgMTk0ODMsIDE5NDg3LCAxOTQ5MSwgMTk0OTUsIDE5NDk5LCAxOTUwMywgMTk1MDcsIDE5NTExLCAxOTUxNSwgCisgICAgMTk1MjEsIDE5NTI1LCAxOTUzMCwgMTk1MzUsIDE5NTM5LCAxOTU0NCwgMTk1NDksIDE5NTUzLCAxOTU1NywgMTk1NjEsIAorICAgIDE5NTY1LCAxOTU2OSwgMTk1NzMsIDE5NTc3LCAxOTU4MSwgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAKKyAgICAxOTYwNSwgMTk2MDksIDE5NjEzLCAxOTYxNywgMTk2MjEsIDE5NjI1LCAxOTYyOSwgMTk2MzMsIDE5NjM3LCAxOTY0MSwgCisgICAgMTk2NDUsIDE5NjQ5LCAxOTY1MywgMTk2NTcsIDE5NjYxLCAxOTY2NSwgMTk2NjksIDE5NjczLCAxOTY3NywgMTk2ODEsIAorICAgIDE5Njg1LCAxOTY4OSwgMTk2OTMsIDE5Njk3LCAxOTcwMSwgMTk3MDUsIDE5NzA5LCAxOTcxMywgMTk3MTcsIDE5NzIxLCAKKyAgICAxOTcyNSwgMTk3MjksIDE5NzMzLCAxOTczNywgMTk3NDEsIDE5NzQ1LCAxOTc0OSwgMTk3NTMsIDE5NzU3LCAxOTc2MSwgCisgICAgMTk3NjUsIDE5NzY5LCAxOTc3MywgMTk3NzcsIDE5NzgxLCAxOTc4NSwgMTk3ODksIDE5NzkzLCAxOTc5NywgMTk4MDEsIAorICAgIDE5ODA1LCAxOTgwOSwgMTk4MTMsIDE5ODE3LCAxOTgyMSwgMTk4MjUsIDE5ODI5LCAxOTgzMywgMTk4MzcsIDE5ODQxLCAKKyAgICAxOTg0NSwgMTk4NDksIDE5ODUzLCAxOTg1NywgMTk4NjEsIDE5ODY1LCAxOTg2OSwgMTk4NzMsIDE5ODc3LCAxOTg4MSwgCisgICAgMTk4ODUsIDE5ODg5LCAxOTg5MywgMTk4OTcsIDE5OTAxLCAxOTkwNSwgMTk5MDksIDE5OTEzLCAxOTkxNywgMTk5MjEsIAorICAgIDE5OTI1LCAxOTkyOSwgMTk5MzMsIDE5OTM3LCAxOTk0MCwgMTk5NDQsIDE5OTQ3LCAxOTk1MSwgMTk5NTUsIDE5OTU4LCAKKyAgICAxOTk2MiwgMTk5NjYsIDE5OTY5LCAxOTk3MywgMTk5NzcsIDE5OTgxLCAxOTk4NSwgMTk5ODgsIDE5OTkyLCAxOTk5NiwgCisgICAgMjAwMDAsIDIwMDA0LCAyMDAwOCwgMjAwMTIsIDIwMDE1LCAyMDAxOSwgMjAwMjMsIDIwMDI3LCAyMDAzMSwgMjAwMzUsIAorICAgIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAyMDA1NSwgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAKKyAgICAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgMjAwOTUsIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgCisgICAgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIDIwMTM1LCAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIAorICAgIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAyMDE3NSwgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAKKyAgICAyMDE5OSwgMjAyMDMsIDIwMjA3LCAyMDIxMSwgMjAyMTUsIDIwMjE5LCAyMDIyMywgMjAyMjcsIDIwMjMxLCAyMDIzNSwgCisgICAgMjAyMzksIDIwMjQzLCAyMDI0NywgMjAyNTEsIDIwMjU1LCAyMDI1OSwgMjAyNjMsIDIwMjY3LCAyMDI3MSwgMjAyNzUsIAorICAgIDIwMjc5LCAyMDI4MywgMjAyODcsIDIwMjkxLCAyMDI5NSwgMjAyOTksIDIwMzAzLCAyMDMwNywgMjAzMTEsIDIwMzE1LCAKKyAgICAyMDMxOSwgMjAzMjMsIDIwMzI3LCAyMDMzMSwgMjAzMzUsIDIwMzM5LCAyMDM0MywgMjAzNDcsIDIwMzUxLCAyMDM1NSwgCisgICAgMjAzNTksIDIwMzYzLCAyMDM2NywgMjAzNzEsIDIwMzc1LCAyMDM3OSwgMjAzODMsIDIwMzg3LCAyMDM5MSwgMjAzOTUsIAorICAgIDIwMzk5LCAyMDQwMywgMjA0MDcsIDIwNDExLCAyMDQxNSwgMjA0MTksIDIwNDIzLCAyMDQyNywgMjA0MzEsIDIwNDM1LCAKKyAgICAyMDQzOSwgMjA0NDMsIDIwNDQ3LCAyMDQ1MSwgMjA0NTUsIDIwNDU5LCAyMDQ2MywgMjA0NjcsIDIwNDcxLCAyMDQ3NSwgCisgICAgMjA0NzksIDIwNDgzLCAyMDQ4NywgMjA0OTEsIDIwNDk1LCAyMDQ5OSwgMjA1MDMsIDIwNTA3LCAyMDUxMSwgMjA1MTUsIAorICAgIDIwNTE5LCAyMDUyMywgMjA1MjcsIDIwNTMxLCAyMDUzNSwgMjA1MzksIDIwNTQzLCAyMDU0NywgMjA1NTEsIDIwNTU1LCAKKyAgICAyMDU1OSwgMjA1NjMsIDIwNTY3LCAyMDU3MCwgMjA1NzQsIDIwNTc4LCAyMDU4MiwgMjA1ODYsIDIwNTkwLCAyMDU5NCwgCisgICAgMjA1OTgsIDIwNjAyLCAyMDYwNiwgMjA2MTAsIDIwNjE0LCAyMDYxOCwgMjA2MjIsIDIwNjI2LCAyMDYzMCwgMjA2MzQsIAorICAgIDIwNjM4LCAyMDY0MiwgMjA2NDYsIDIwNjUwLCAyMDY1NCwgMjA2NTgsIDIwNjYyLCAyMDY2NSwgMjA2NjksIDIwNjczLCAKKyAgICAyMDY3NywgMjA2ODEsIDIwNjg1LCAyMDY4OSwgMjA2OTMsIDIwNjk3LCAyMDcwMSwgMjA3MDUsIDIwNzA5LCAyMDcxMywgCisgICAgMjA3MTcsIDIwNzIxLCAyMDcyNSwgMjA3MjgsIDIwNzMyLCAyMDczNiwgMjA3NDAsIDIwNzQ0LCAyMDc0OCwgMjA3NTIsIAorICAgIDIwNzU2LCAyMDc1OSwgMjA3NjMsIDIwNzY3LCAyMDc3MSwgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAKKyAgICAyMDc5NSwgMjA3OTksIDIwODAzLCAyMDgwNywgMjA4MTEsIDIwODE1LCAyMDgxOSwgMjA4MjMsIDIwODI3LCAyMDgzMSwgCisgICAgMjA4MzUsIDIwODM5LCAyMDg0MywgMjA4NDcsIDIwODUxLCAwLCAyMDg1NSwgMjA4NTksIDIwODYzLCAyMDg2NywgMCwgMCwgCisgICAgMjA4NzEsIDIwODc1LCAyMDg3OSwgMjA4ODMsIDIwODg3LCAyMDg5MSwgMjA4OTUsIDAsIDIwODk5LCAwLCAyMDkwMywgCisgICAgMjA5MDcsIDIwOTExLCAyMDkxNSwgMCwgMCwgMjA5MTksIDIwOTIzLCAyMDkyNywgMjA5MzEsIDIwOTM1LCAyMDkzOSwgCisgICAgMjA5NDMsIDIwOTQ3LCAyMDk1MSwgMjA5NTUsIDIwOTU5LCAyMDk2MywgMjA5NjcsIDIwOTcxLCAyMDk3NSwgMjA5NzksIAorICAgIDIwOTgzLCAyMDk4NywgMjA5OTEsIDIwOTk1LCAyMDk5OSwgMjEwMDMsIDIxMDA3LCAyMTAxMCwgMjEwMTQsIDIxMDE4LCAKKyAgICAyMTAyMiwgMjEwMjYsIDIxMDMwLCAyMTAzNCwgMjEwMzgsIDIxMDQyLCAyMTA0NiwgMjEwNTAsIDIxMDU0LCAyMTA1OCwgCisgICAgMjEwNjIsIDIxMDY2LCAyMTA3MCwgMjEwNzQsIDIxMDc4LCAwLCAyMTA4MiwgMjEwODYsIDIxMDkwLCAyMTA5NCwgMCwgMCwgCisgICAgMjEwOTgsIDIxMTAxLCAyMTEwNSwgMjExMDksIDIxMTEzLCAyMTExNywgMjExMjEsIDIxMTI1LCAyMTEyOSwgMjExMzMsIAorICAgIDIxMTM3LCAyMTE0MSwgMjExNDUsIDIxMTQ5LCAyMTE1MywgMjExNTcsIDIxMTYxLCAyMTE2NiwgMjExNzEsIDIxMTc2LCAKKyAgICAyMTE4MiwgMjExODgsIDIxMTkzLCAyMTE5OCwgMjEyMDQsIDIxMjA3LCAyMTIxMSwgMjEyMTUsIDIxMjE5LCAyMTIyMywgCisgICAgMjEyMjcsIDIxMjMxLCAyMTIzNSwgMCwgMjEyMzksIDIxMjQzLCAyMTI0NywgMjEyNTEsIDAsIDAsIDIxMjU1LCAyMTI1OSwgCisgICAgMjEyNjMsIDIxMjY3LCAyMTI3MSwgMjEyNzUsIDIxMjc5LCAwLCAyMTI4MywgMCwgMjEyODcsIDIxMjkxLCAyMTI5NSwgCisgICAgMjEyOTksIDAsIDAsIDIxMzAzLCAyMTMwNywgMjEzMTEsIDIxMzE1LCAyMTMxOSwgMjEzMjMsIDIxMzI3LCAyMTMzMSwgCisgICAgMjEzMzUsIDIxMzQwLCAyMTM0NSwgMjEzNTAsIDIxMzU2LCAyMTM2MiwgMjEzNjcsIDAsIDIxMzcyLCAyMTM3NiwgMjEzODAsIAorICAgIDIxMzg0LCAyMTM4OCwgMjEzOTIsIDIxMzk2LCAyMTQwMCwgMjE0MDQsIDIxNDA4LCAyMTQxMiwgMjE0MTYsIDIxNDIwLCAKKyAgICAyMTQyNCwgMjE0MjgsIDIxNDMyLCAyMTQzNiwgMjE0MzksIDIxNDQzLCAyMTQ0NywgMjE0NTEsIDIxNDU1LCAyMTQ1OSwgCisgICAgMjE0NjMsIDIxNDY3LCAyMTQ3MSwgMjE0NzUsIDIxNDc5LCAyMTQ4MywgMjE0ODcsIDIxNDkxLCAyMTQ5NSwgMjE0OTksIAorICAgIDIxNTAzLCAyMTUwNywgMjE1MTEsIDIxNTE1LCAyMTUxOSwgMjE1MjMsIDIxNTI3LCAyMTUzMSwgMjE1MzUsIDIxNTM5LCAKKyAgICAyMTU0MywgMjE1NDcsIDIxNTUxLCAyMTU1NSwgMjE1NTksIDIxNTYzLCAyMTU2NywgMjE1NzEsIDIxNTc1LCAyMTU3OSwgCisgICAgMjE1ODMsIDIxNTg3LCAyMTU5MSwgMjE1OTUsIDAsIDIxNTk5LCAyMTYwMywgMjE2MDcsIDIxNjExLCAwLCAwLCAyMTYxNSwgCisgICAgMjE2MTksIDIxNjIzLCAyMTYyNywgMjE2MzEsIDIxNjM1LCAyMTYzOSwgMjE2NDMsIDIxNjQ3LCAyMTY1MSwgMjE2NTUsIAorICAgIDIxNjU5LCAyMTY2MywgMjE2NjcsIDIxNjcxLCAyMTY3NSwgMjE2NzksIDIxNjgzLCAyMTY4NywgMjE2OTEsIDIxNjk1LCAKKyAgICAyMTY5OSwgMjE3MDMsIDIxNzA3LCAyMTcxMSwgMjE3MTUsIDIxNzE5LCAyMTcyMywgMjE3MjcsIDIxNzMxLCAyMTczNSwgCisgICAgMjE3MzksIDIxNzQzLCAyMTc0NywgMjE3NTEsIDIxNzU1LCAyMTc1OSwgMjE3NjMsIDIxNzY3LCAyMTc3MSwgMjE3NzUsIAorICAgIDIxNzc5LCAyMTc4MywgMjE3ODcsIDIxNzkxLCAyMTc5NSwgMjE3OTksIDIxODAzLCAyMTgwNywgMjE4MTEsIDIxODE1LCAKKyAgICAyMTgxOSwgMjE4MjMsIDIxODI3LCAyMTgzMSwgMjE4MzUsIDIxODM5LCAyMTg0MiwgMjE4NDYsIDIxODUwLCAyMTg1NCwgCisgICAgMjE4NTgsIDIxODYyLCAyMTg2NiwgMjE4NzAsIDIxODc0LCAyMTg3OCwgMCwgMCwgMjE4ODIsIDIxODkxLCAyMTg5NywgCisgICAgMjE5MDIsIDIxOTA2LCAyMTkwOSwgMjE5MTQsIDIxOTE3LCAyMTkyMCwgMjE5MjMsIDIxOTI4LCAyMTkzMiwgMjE5MzcsIAorICAgIDIxOTQwLCAyMTk0MywgMjE5NDYsIDIxOTQ5LCAyMTk1MiwgMjE5NTUsIDIxOTU4LCAyMTk2MSwgMjE5NjQsIDIxOTY4LCAKKyAgICAyMTk3MiwgMjE5NzYsIDIxOTgwLCAyMTk4NCwgMjE5ODgsIDIxOTkyLCAyMTk5NiwgMjIwMDAsIDIyMDA0LCAwLCAwLCAwLCAKKyAgICAyMjAxMCwgMjIwMTYsIDIyMDIwLCAyMjAyNCwgMjIwMjgsIDIyMDM0LCAyMjAzOCwgMjIwNDIsIDIyMDQ2LCAyMjA1MiwgCisgICAgMjIwNTYsIDIyMDYwLCAyMjA2NCwgMjIwNzAsIDIyMDc0LCAyMjA3OCwgMjIwODIsIDIyMDg4LCAyMjA5NCwgMjIxMDAsIAorICAgIDIyMTA4LCAyMjExNCwgMjIxMjAsIDIyMTI2LCAyMjEzMiwgMjIxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMTQ0LCAyMjE0NywgCisgICAgMjIxNTAsIDIyMTUzLCAyMjE1NiwgMjIxNTksIDIyMTYzLCAyMjE2NywgMjIxNzAsIDIyMTc0LCAyMjE3OCwgMjIxODIsIAorICAgIDIyMTg2LCAyMjE5MCwgMjIxOTMsIDIyMTk3LCAyMjIwMSwgMjIyMDUsIDIyMjA5LCAyMjIxMywgMjIyMTcsIDIyMjIxLCAKKyAgICAyMjIyNSwgMjIyMjksIDIyMjMzLCAyMjIzNywgMjIyNDAsIDIyMjQ0LCAyMjI0OCwgMjIyNTIsIDIyMjU2LCAyMjI1OSwgCisgICAgMjIyNjMsIDIyMjY3LCAyMjI3MSwgMjIyNzUsIDIyMjc5LCAyMjI4MywgMjIyODcsIDIyMjkxLCAyMjI5NSwgMjIyOTksIAorICAgIDIyMzAzLCAyMjMwNywgMjIzMTEsIDIyMzE0LCAyMjMxOCwgMjIzMjIsIDIyMzI2LCAyMjMzMCwgMjIzMzQsIDIyMzM4LCAKKyAgICAyMjM0MiwgMjIzNDYsIDIyMzUwLCAyMjM1NCwgMjIzNTgsIDIyMzYyLCAyMjM2NiwgMjIzNzAsIDIyMzc0LCAyMjM3OCwgCisgICAgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTQsIDIyMzk4LCAyMjQwMiwgMjI0MDYsIDIyNDEwLCAyMjQxNCwgMjI0MTgsIAorICAgIDIyNDIyLCAyMjQyNiwgMjI0MzAsIDIyNDM0LCAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTMsIDIyNDU3LCAKKyAgICAyMjQ2MSwgMjI0NjUsIDIyNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjQ3MywgMjI0NzcsIAorICAgIDIyNDgwLCAyMjQ4NCwgMjI0ODcsIDIyNDkxLCAyMjQ5NCwgMjI0OTgsIDIyNTA0LCAyMjUwOSwgMjI1MTMsIDIyNTE2LCAKKyAgICAyMjUyMCwgMjI1MjQsIDIyNTI5LCAyMjUzMywgMjI1MzgsIDIyNTQyLCAyMjU0NywgMjI1NTEsIDIyNTU2LCAyMjU2MCwgCisgICAgMjI1NjUsIDIyNTcxLCAyMjU3NSwgMjI1ODAsIDIyNTg0LCAyMjU4OSwgMjI1OTUsIDIyNTk5LCAyMjYwNSwgMjI2MTEsIAorICAgIDIyNjE1LCAyMjYyMCwgMjI2MjgsIDIyNjM2LCAyMjY0MywgMjI2NDgsIDIyNjUzLCAyMjY2MiwgMjI2NjksIDIyNjc2LCAKKyAgICAyMjY4MSwgMjI2ODcsIDIyNjkxLCAyMjY5NSwgMjI2OTksIDIyNzAzLCAyMjcwNywgMjI3MTEsIDIyNzE1LCAyMjcxOSwgCisgICAgMjI3MjMsIDIyNzI3LCAyMjczMywgMjI3MzgsIDIyNzQzLCAyMjc0NiwgMjI3NTAsIDIyNzU0LCAyMjc1OSwgMjI3NjMsIAorICAgIDIyNzY4LCAyMjc3MiwgMjI3NzcsIDIyNzgxLCAyMjc4NiwgMjI3OTAsIDIyNzk1LCAyMjc5OSwgMjI4MDQsIDIyODA4LCAKKyAgICAyMjgxMywgMjI4MTksIDIyODIzLCAyMjgyOCwgMjI4MzMsIDIyODM3LCAyMjg0MSwgMjI4NDUsIDIyODQ5LCAyMjg1MiwgCisgICAgMjI4NTYsIDIyODYyLCAyMjg2NywgMjI4NzIsIDIyODc2LCAyMjg4MCwgMjI4ODQsIDIyODg5LCAyMjg5MywgMjI4OTgsIAorICAgIDIyOTAyLCAyMjkwNywgMjI5MTAsIDIyOTE0LCAyMjkxOCwgMjI5MjMsIDIyOTI3LCAyMjkzMiwgMjI5MzYsIDIyOTQxLCAKKyAgICAyMjk0NywgMjI5NTEsIDIyOTU1LCAyMjk1OSwgMjI5NjMsIDIyOTY3LCAyMjk3MSwgMjI5NzUsIDIyOTc5LCAyMjk4MywgCisgICAgMjI5ODcsIDIyOTkxLCAyMjk5NywgMjMwMDAsIDIzMDA0LCAyMzAwOCwgMjMwMTMsIDIzMDE3LCAyMzAyMiwgMjMwMjYsIAorICAgIDIzMDMxLCAyMzAzNSwgMjMwNDAsIDIzMDQ0LCAyMzA0OSwgMjMwNTMsIDIzMDU4LCAyMzA2MiwgMjMwNjcsIDIzMDczLCAKKyAgICAyMzA3NywgMjMwODEsIDIzMDg3LCAyMzA5MywgMjMwOTksIDIzMTA1LCAyMzEwOSwgMjMxMTMsIDIzMTE3LCAyMzEyMSwgCisgICAgMjMxMjUsIDIzMTI5LCAyMzEzNSwgMjMxMzksIDIzMTQzLCAyMzE0NywgMjMxNTIsIDIzMTU2LCAyMzE2MSwgMjMxNjUsIAorICAgIDIzMTcwLCAyMzE3NCwgMjMxNzksIDIzMTgzLCAyMzE4OCwgMjMxOTIsIDIzMTk3LCAyMzIwMSwgMjMyMDYsIDIzMjEyLCAKKyAgICAyMzIxNiwgMjMyMjIsIDIzMjI2LCAyMzIzMCwgMjMyMzQsIDIzMjM4LCAyMzI0MiwgMjMyNDYsIDIzMjUyLCAyMzI1NSwgCisgICAgMjMyNTksIDIzMjYzLCAyMzI2OCwgMjMyNzIsIDIzMjc3LCAyMzI4MSwgMjMyODYsIDIzMjkwLCAyMzI5NSwgMjMyOTksIAorICAgIDIzMzA0LCAyMzMwOCwgMjMzMTMsIDIzMzE3LCAyMzMyMiwgMjMzMjgsIDIzMzMxLCAyMzMzNSwgMjMzMzksIDIzMzQ0LCAKKyAgICAyMzM0OSwgMjMzNTMsIDIzMzU3LCAyMzM2MSwgMjMzNjUsIDIzMzY5LCAyMzM3MywgMjMzNzksIDIzMzgyLCAyMzM4NiwgCisgICAgMjMzOTAsIDIzMzk1LCAyMzM5OSwgMjM0MDQsIDIzNDA4LCAyMzQxMywgMjM0MTksIDIzNDIzLCAyMzQyOCwgMjM0MzIsIAorICAgIDIzNDM2LCAyMzQ0MCwgMjM0NDQsIDIzNDQ4LCAyMzQ1MiwgMjM0NTYsIDIzNDYyLCAyMzQ2NiwgMjM0NzAsIDIzNDc0LCAKKyAgICAyMzQ3OSwgMjM0ODMsIDIzNDg4LCAyMzQ5MiwgMjM0OTcsIDIzNTAxLCAyMzUwNiwgMjM1MTAsIDIzNTE1LCAyMzUxOSwgCisgICAgMjM1MjQsIDIzNTI4LCAyMzUzMywgMjM1MzYsIDIzNTQwLCAyMzU0NCwgMjM1NDgsIDIzNTUyLCAyMzU1NiwgMjM1NjAsIAorICAgIDIzNTY0LCAyMzU2OCwgMjM1NzQsIDIzNTc3LCAyMzU4MSwgMjM1ODUsIDIzNTkwLCAyMzU5NCwgMjM1OTksIDIzNjAzLCAKKyAgICAyMzYwOCwgMjM2MTIsIDIzNjE3LCAyMzYyMSwgMjM2MjYsIDIzNjMwLCAyMzYzNSwgMjM2MzksIDIzNjQ0LCAyMzY1MCwgCisgICAgMjM2NTQsIDIzNjYwLCAyMzY2NCwgMjM2NzAsIDIzNjc2LCAyMzY4MiwgMjM2ODgsIDIzNjk0LCAyMzcwMCwgMjM3MDYsIAorICAgIDIzNzEyLCAyMzcxNiwgMjM3MjAsIDIzNzI0LCAyMzcyOCwgMjM3MzIsIDIzNzM2LCAyMzc0MCwgMjM3NDQsIDIzNzQ5LCAKKyAgICAyMzc1MywgMjM3NTgsIDIzNzYyLCAyMzc2NywgMjM3NzEsIDIzNzc2LCAyMzc4MCwgMjM3ODUsIDIzNzg5LCAyMzc5NCwgCisgICAgMjM3OTgsIDIzODAzLCAyMzgwNywgMjM4MTEsIDIzODE1LCAyMzgxOSwgMjM4MjMsIDIzODI3LCAyMzgzMSwgMjM4MzcsIAorICAgIDIzODQwLCAyMzg0NCwgMjM4NDgsIDIzODUzLCAyMzg1NywgMjM4NjIsIDIzODY2LCAyMzg3MSwgMjM4NzUsIDIzODgwLCAKKyAgICAyMzg4NCwgMjM4ODksIDIzODkzLCAyMzg5OCwgMjM5MDIsIDIzOTA3LCAyMzkxMywgMjM5MTcsIDIzOTIzLCAyMzkyOCwgCisgICAgMjM5MzQsIDIzOTM4LCAyMzk0NCwgMjM5NDksIDIzOTUzLCAyMzk1NywgMjM5NjEsIDIzOTY1LCAyMzk2OSwgMjM5NzQsIAorICAgIDIzOTc3LCAyMzk4MSwgMjM5ODYsIDIzOTkwLCAyMzk5NSwgMjM5OTgsIDI0MDAyLCAyNDAwNiwgMjQwMTAsIDI0MDE0LCAKKyAgICAyNDAxOCwgMjQwMjIsIDI0MDI2LCAyNDAzMCwgMjQwMzQsIDI0MDM4LCAyNDA0MiwgMjQwNDcsIDI0MDUxLCAyNDA1NSwgCisgICAgMjQwNjEsIDI0MDY1LCAyNDA3MSwgMjQwNzUsIDI0MDgxLCAyNDA4NSwgMjQwODksIDI0MDkzLCAyNDA5NywgMjQxMDEsIAorICAgIDI0MTA2LCAyNDExMCwgMjQxMTQsIDI0MTE4LCAyNDEyMiwgMjQxMjYsIDI0MTMwLCAyNDEzNCwgMjQxMzgsIDI0MTQyLCAKKyAgICAyNDE0NiwgMjQxNTIsIDI0MTU4LCAyNDE2NCwgMjQxNzAsIDI0MTc2LCAyNDE4MSwgMjQxODcsIDI0MTkzLCAyNDE5OSwgCisgICAgMjQyMDMsIDI0MjA3LCAyNDIxMSwgMjQyMTUsIDI0MjE5LCAyNDIyMywgMjQyMjcsIDI0MjMxLCAyNDIzNSwgMjQyMzksIAorICAgIDI0MjQzLCAyNDI0NywgMjQyNTEsIDI0MjU2LCAyNDI2MSwgMjQyNjYsIDI0MjcwLCAyNDI3NCwgMjQyNzgsIDI0MjgyLCAKKyAgICAyNDI4NiwgMjQyOTAsIDI0Mjk0LCAyNDI5OCwgMjQzMDIsIDI0MzA2LCAyNDMxMiwgMjQzMTgsIDI0MzI0LCAyNDMzMCwgCisgICAgMjQzMzYsIDI0MzQyLCAyNDM0OCwgMjQzNTQsIDI0MzYwLCAyNDM2NCwgMjQzNjgsIDI0MzcyLCAyNDM3NiwgMjQzODAsIAorICAgIDI0Mzg0LCAyNDM4OCwgMjQzOTQsIDI0NDAwLCAyNDQwNiwgMjQ0MTIsIDI0NDE4LCAyNDQyNCwgMjQ0MzAsIDI0NDM2LCAKKyAgICAyNDQ0MiwgMjQ0NDcsIDI0NDUyLCAyNDQ1NywgMjQ0NjIsIDI0NDY4LCAyNDQ3NCwgMjQ0ODAsIDI0NDg2LCAyNDQ5MiwgCisgICAgMjQ0OTgsIDI0NTA0LCAyNDUwOSwgMjQ1MTUsIDI0NTIxLCAyNDUyNywgMjQ1MzIsIDI0NTM4LCAyNDU0NCwgMjQ1NTAsIAorICAgIDI0NTU1LCAyNDU2MCwgMjQ1NjUsIDI0NTcwLCAyNDU3NSwgMjQ1ODAsIDI0NTg1LCAyNDU5MCwgMjQ1OTUsIDI0NjAwLCAKKyAgICAyNDYwNSwgMjQ2MTAsIDI0NjE0LCAyNDYxOSwgMjQ2MjQsIDI0NjI5LCAyNDYzNCwgMjQ2MzksIDI0NjQ0LCAyNDY0OSwgCisgICAgMjQ2NTQsIDI0NjU5LCAyNDY2NCwgMjQ2NjksIDI0Njc0LCAyNDY3OSwgMjQ2ODQsIDI0Njg5LCAyNDY5NCwgMjQ2OTksIAorICAgIDI0NzA0LCAyNDcwOSwgMjQ3MTQsIDI0NzE5LCAyNDcyNCwgMjQ3MjksIDI0NzM0LCAyNDczOSwgMjQ3NDQsIDI0NzQ5LCAKKyAgICAyNDc1NCwgMjQ3NTksIDI0NzYzLCAyNDc2OCwgMjQ3NzMsIDI0Nzc4LCAyNDc4MywgMjQ3ODgsIDI0NzkzLCAyNDc5OCwgCisgICAgMjQ4MDMsIDI0ODA4LCAyNDgxMywgMjQ4MTgsIDI0ODIzLCAyNDgyOCwgMjQ4MzMsIDI0ODM4LCAyNDg0MywgMjQ4NDgsIAorICAgIDI0ODUzLCAyNDg1OCwgMjQ4NjMsIDI0ODY4LCAyNDg3MywgMjQ4NzgsIDI0ODgzLCAyNDg4OCwgMjQ4OTIsIDI0ODk3LCAKKyAgICAyNDkwMiwgMjQ5MDcsIDI0OTEyLCAyNDkxNywgMjQ5MjEsIDI0OTI2LCAyNDkzMSwgMjQ5MzYsIDI0OTQxLCAyNDk0NiwgCisgICAgMjQ5NTAsIDI0OTU1LCAyNDk2MSwgMjQ5NjYsIDI0OTcxLCAyNDk3NiwgMjQ5ODEsIDI0OTg3LCAyNDk5MiwgMjQ5OTcsIAorICAgIDI1MDAyLCAyNTAwNywgMjUwMTIsIDI1MDE3LCAyNTAyMiwgMjUwMjcsIDI1MDMyLCAyNTAzNywgMjUwNDIsIDI1MDQ3LCAKKyAgICAyNTA1MiwgMjUwNTcsIDI1MDYyLCAyNTA2NywgMjUwNzIsIDI1MDc3LCAyNTA4MiwgMjUwODcsIDI1MDkyLCAyNTA5NywgCisgICAgMjUxMDIsIDI1MTA3LCAyNTExMiwgMjUxMTcsIDI1MTIyLCAyNTEyNywgMjUxMzIsIDI1MTM3LCAyNTE0MiwgMjUxNDcsIAorICAgIDI1MTUyLCAyNTE1NywgMjUxNjIsIDI1MTY3LCAyNTE3MiwgMjUxNzcsIDI1MTgyLCAyNTE4NywgMjUxOTIsIDI1MTk3LCAKKyAgICAyNTIwMiwgMjUyMDcsIDI1MjEzLCAyNTIxOCwgMjUyMjMsIDI1MjI4LCAyNTIzMywgMjUyMzgsIDI1MjQzLCAyNTI0OCwgCisgICAgMjUyNTMsIDI1MjU4LCAyNTI2MywgMjUyNjgsIDI1MjcyLCAyNTI3NywgMjUyODIsIDI1Mjg3LCAyNTI5MiwgMjUyOTcsIAorICAgIDI1MzAyLCAyNTMwNywgMjUzMTIsIDI1MzE3LCAyNTMyMiwgMjUzMjcsIDI1MzMyLCAyNTMzNywgMjUzNDIsIDI1MzQ3LCAKKyAgICAyNTM1MiwgMjUzNTcsIDI1MzYyLCAyNTM2NywgMjUzNzIsIDI1Mzc3LCAyNTM4MiwgMjUzODcsIDI1MzkyLCAyNTM5NywgCisgICAgMjU0MDIsIDI1NDA4LCAyNTQxMiwgMjU0MTYsIDI1NDIwLCAyNTQyNCwgMjU0MjgsIDI1NDMyLCAyNTQzNiwgMjU0NDAsIAorICAgIDI1NDQ2LCAyNTQ1MiwgMjU0NTgsIDI1NDY0LCAyNTQ3MCwgMjU0NzYsIDI1NDgyLCAyNTQ4OSwgMjU0OTUsIDI1NTAwLCAKKyAgICAyNTUwNSwgMjU1MTAsIDI1NTE1LCAyNTUyMCwgMjU1MjUsIDI1NTMwLCAyNTUzNSwgMjU1NDAsIDI1NTQ1LCAyNTU1MCwgCisgICAgMjU1NTUsIDI1NTYwLCAyNTU2NSwgMjU1NzAsIDI1NTc1LCAyNTU4MCwgMjU1ODUsIDI1NTkwLCAyNTU5NSwgMjU2MDAsIAorICAgIDI1NjA1LCAyNTYxMCwgMjU2MTUsIDI1NjIwLCAyNTYyNSwgMjU2MzAsIDI1NjM1LCAwLCAwLCAwLCAyNTY0MiwgMjU2NTIsIAorICAgIDI1NjU2LCAyNTY2MywgMjU2NjcsIDI1NjcxLCAyNTY3NSwgMjU2ODMsIDI1Njg3LCAyNTY5MiwgMjU2OTcsIDI1NzAyLCAKKyAgICAyNTcwNiwgMjU3MTEsIDI1NzE2LCAyNTcxOSwgMjU3MjMsIDI1NzI3LCAyNTczNiwgMjU3NDAsIDI1NzQ0LCAyNTc1MCwgCisgICAgMjU3NTQsIDI1NzU4LCAyNTc2NiwgMjU3NzAsIDI1Nzc4LCAyNTc4NCwgMjU3OTAsIDI1Nzk2LCAyNTgwMiwgMjU4MTIsIAorICAgIDI1ODE4LCAyNTgyMiwgMjU4MzEsIDI1ODM0LCAyNTg0MCwgMjU4NDQsIDI1ODUwLCAyNTg1NSwgMjU4NjEsIDI1ODY5LCAKKyAgICAyNTg3NSwgMjU4ODEsIDI1ODg5LCAyNTg5NSwgMjU4OTksIDI1OTAzLCAyNTkxMywgMjU5MTksIDI1OTIzLCAyNTkzMywgCisgICAgMjU5MzksIDI1OTQzLCAyNTk0NywgMjU5NTQsIDI1OTYxLCAyNTk2NiwgMjU5NzEsIDI1OTgwLCAyNTk4NCwgMjU5ODgsIAorICAgIDI1OTkyLCAyNjAwMCwgMjYwMDcsIDI2MDExLCAyNjAxNSwgMjYwMTksIDI2MDIzLCAyNjAyNywgMjYwMzEsIDI2MDM1LCAKKyAgICAyNjAzOSwgMjYwNDMsIDI2MDQ3LCAyNjA1MSwgMjYwNTYsIDI2MDYxLCAyNjA2NiwgMjYwNzAsIDI2MDc0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjA3OCwgMjYwODIsIDI2MDg2LCAyNjA5MCwgMjYwOTQsIAorICAgIDI2MDk5LCAyNjEwNCwgMjYxMDksIDI2MTE0LCAyNjExOCwgMjYxMjIsIDI2MTI3LCAyNjEzMSwgMCwgMjYxMzUsIDI2MTQwLCAKKyAgICAyNjE0NSwgMjYxNDksIDI2MTUzLCAyNjE1OCwgMjYxNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2MTY4LCAyNjE3MiwgMjYxNzYsIDI2MTgwLCAyNjE4NCwgMjYxODksIDI2MTk0LCAyNjE5OSwgMjYyMDQsIDI2MjA4LCAKKyAgICAyNjIxMiwgMjYyMTcsIDI2MjIxLCAyNjIyNSwgMjYyMjksIDI2MjM0LCAyNjIzOSwgMjYyNDMsIDI2MjQ3LCAyNjI1MiwgCisgICAgMjYyNTcsIDI2MjYyLCAyNjI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyNzMsIDI2Mjc3LCAyNjI4MSwgCisgICAgMjYyODUsIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTMsIDI2MzE3LCAyNjMyMiwgMjYzMjYsIAorICAgIDI2MzMwLCAyNjMzNCwgMjYzMzksIDI2MzQ0LCAyNjM0OCwgMjYzNTIsIDI2MzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNjM2MiwgMjYzNjYsIDI2MzcwLCAyNjM3NCwgMjYzNzgsIDI2MzgzLCAyNjM4OCwgMjYzOTMsIAorICAgIDI2Mzk4LCAyNjQwMiwgMjY0MDYsIDI2NDExLCAyNjQxNSwgMCwgMjY0MTksIDI2NDI0LCAyNjQyOSwgMCwgMjY0MzMsIAorICAgIDI2NDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQ0MywgMjY0NDYsIDI2NDUwLCAyNjQ1NCwgCisgICAgMjY0NTgsIDI2NDYyLCAyNjQ2NiwgMjY0NzAsIDI2NDc0LCAyNjQ3OCwgMjY0ODIsIDI2NDg2LCAyNjQ5MCwgMjY0OTQsIAorICAgIDI2NDk4LCAyNjUwMiwgMjY1MDYsIDI2NTEwLCAyNjUxMywgMjY1MTcsIDI2NTIxLCAyNjUyNSwgMjY1MjksIDI2NTMzLCAKKyAgICAyNjUzNywgMjY1NDEsIDI2NTQ1LCAyNjU0OSwgMjY1NTMsIDI2NTU3LCAyNjU2MSwgMjY1NjUsIDI2NTY4LCAyNjU3MSwgCisgICAgMjY1NzUsIDI2NTc5LCAyNjU4NSwgMjY1OTEsIDI2NTk3LCAyNjYwMywgMjY2MDksIDI2NjE1LCAyNjYyMSwgMjY2MjcsIAorICAgIDI2NjMzLCAyNjYzOSwgMjY2NDUsIDI2NjUxLCAyNjY1NywgMjY2NjMsIDI2NjcyLCAyNjY4MSwgMjY2ODcsIDI2NjkzLCAKKyAgICAyNjY5OSwgMjY3MDQsIDI2NzA4LCAyNjcxMywgMjY3MTgsIDI2NzIzLCAyNjcyNywgMjY3MzIsIDI2NzM3LCAyNjc0MiwgCisgICAgMjY3NDYsIDI2NzUxLCAyNjc1NSwgMjY3NjAsIDI2NzY1LCAyNjc3MCwgMjY3NzUsIDI2Nzc5LCAyNjc4MywgMjY3ODcsIAorICAgIDI2NzkxLCAyNjc5NSwgMjY3OTksIDI2ODAzLCAyNjgwNywgMjY4MTEsIDI2ODE1LCAyNjgyMSwgMjY4MjUsIDI2ODI5LCAKKyAgICAyNjgzMywgMjY4MzcsIDI2ODQxLCAyNjg0OSwgMjY4NTUsIDI2ODU5LCAyNjg2NSwgMjY4NjksIDI2ODc1LCAyNjg3OSwgMCwgCisgICAgMCwgMjY4ODMsIDI2ODg3LCAyNjg5MCwgMjY4OTMsIDI2ODk2LCAyNjg5OSwgMjY5MDIsIDI2OTA1LCAyNjkwOCwgMjY5MTEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTE0LCAyNjkyMiwgMjY5MzAsIDI2OTM4LCAyNjk0NiwgMjY5NTQsIDI2OTYyLCAyNjk3MCwgCisgICAgMjY5NzgsIDI2OTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk5NCwgMjY5OTcsIDI3MDAwLCAyNzAwMywgMjcwMDgsIDI3MDExLCAKKyAgICAyNzAxNiwgMjcwMjMsIDI3MDMxLCAyNzAzNiwgMjcwNDMsIDI3MDQ2LCAyNzA1MywgMjcwNjAsIDI3MDY3LCAwLCAyNzA3MSwgCisgICAgMjcwNzUsIDI3MDc4LCAyNzA4MSwgMjcwODQsIDI3MDg3LCAyNzA5MCwgMjcwOTMsIDI3MDk2LCAyNzA5OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjcxMDIsIDI3MTA1LCAyNzEwOCwgMjcxMTEsIDI3MTE0LCAyNzExNywgMjcxMjEsIDI3MTI1LCAyNzEyOSwgCisgICAgMjcxMzIsIDI3MTM2LCAyNzE0MCwgMjcxNDMsIDI3MTQ3LCAyNzE1MSwgMjcxNTQsIDI3MTU4LCAyNzE2MSwgMjcxNjUsIAorICAgIDI3MTY5LCAyNzE3MywgMjcxNzcsIDI3MTgxLCAyNzE4NCwgMjcxODcsIDI3MTkxLCAyNzE5NSwgMjcxOTgsIDI3MjAyLCAKKyAgICAyNzIwNiwgMjcyMTAsIDI3MjE0LCAyNzIxOCwgMjcyMjIsIDI3MjI2LCAyNzIzMCwgMjcyMzcsIDI3MjQyLCAyNzI0NywgCisgICAgMjcyNTIsIDI3MjU3LCAyNzI2MywgMjcyNjksIDI3Mjc1LCAyNzI4MSwgMjcyODYsIDI3MjkyLCAyNzI5OCwgMjczMDMsIAorICAgIDI3MzA5LCAyNzMxNSwgMjczMjEsIDI3MzI3LCAyNzMzMywgMjczMzgsIDI3MzQ0LCAyNzM0OSwgMjczNTUsIDI3MzYxLCAKKyAgICAyNzM2NywgMjczNzMsIDI3Mzc5LCAyNzM4NCwgMjczODksIDI3Mzk1LCAyNzQwMSwgMjc0MDYsIDI3NDEyLCAyNzQxNywgCisgICAgMjc0MjMsIDI3NDI4LCAyNzQzMywgMjc0MzksIDI3NDQ1LCAyNzQ1MSwgMjc0NTcsIDI3NDYzLCAyNzQ2OSwgMjc0NzUsIAorICAgIDI3NDgxLCAyNzQ4NywgMjc0OTMsIDI3NDk5LCAyNzUwNSwgMjc1MTAsIDI3NTE1LCAyNzUyMCwgMjc1MjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI3NTMyLCAyNzU0MSwgMjc1NTAsIDI3NTU4LCAyNzU2NiwgMjc1NzYsIDI3NTg0LCAyNzU5MywgCisgICAgMjc2MDAsIDI3NjA3LCAyNzYxNCwgMjc2MjIsIDI3NjMwLCAyNzYzOCwgMjc2NDYsIDI3NjU0LCAyNzY2MiwgMjc2NzAsIAorICAgIDI3Njc4LCAyNzY4NSwgMjc2OTMsIDI3NzAxLCAyNzcwOSwgMjc3MTcsIDI3NzI1LCAyNzczNSwgMjc3NDUsIDI3NzU1LCAKKyAgICAyNzc2NSwgMjc3NzUsIDI3Nzg1LCAyNzc5NSwgMjc4MDUsIDI3ODE1LCAyNzgyNSwgMjc4MzUsIDI3ODQ1LCAyNzg1NSwgCisgICAgMjc4NjUsIDI3ODczLCAyNzg4MSwgMjc4OTEsIDI3ODk5LCAwLCAwLCAwLCAwLCAwLCAyNzkwOSwgMjc5MTMsIDI3OTE3LCAKKyAgICAyNzkyMSwgMjc5MjUsIDI3OTI5LCAyNzkzMywgMjc5MzcsIDI3OTQxLCAyNzk0NSwgMjc5NDksIDI3OTUzLCAyNzk1NywgCisgICAgMjc5NjEsIDI3OTY1LCAyNzk2OSwgMjc5NzMsIDI3OTc3LCAyNzk4MSwgMjc5ODUsIDI3OTg5LCAyNzk5MywgMjc5OTcsIAorICAgIDI4MDAxLCAyODAwNywgMjgwMTEsIDI4MDE3LCAyODAyMSwgMjgwMjcsIDI4MDMxLCAyODAzNywgMjgwNDEsIDI4MDQ1LCAKKyAgICAyODA0OSwgMjgwNTMsIDI4MDU3LCAyODA2MSwgMjgwNjcsIDI4MDczLCAyODA3OSwgMjgwODUsIDI4MDkwLCAyODA5NiwgCisgICAgMjgxMDIsIDI4MTA4LCAyODExNCwgMjgxMjAsIDI4MTI2LCAyODEzMywgMjgxMzksIDI4MTQ0LCAyODE0OSwgMjgxNTMsIAorICAgIDI4MTU3LCAyODE2MSwgMjgxNjUsIDI4MTY5LCAyODE3MywgMjgxNzcsIDI4MTgzLCAyODE4OSwgMjgxOTUsIDI4MjAwLCAKKyAgICAyODIwNywgMjgyMTIsIDI4MjE3LCAyODIyMywgMjgyMjgsIDI4MjM1LCAyODI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjgyNDksIDI4MjU1LCAyODI1OSwgMjgyNjQsIDI4MjY5LCAyODI3NCwgMjgyNzksIDI4Mjg0LCAyODI4OSwgCisgICAgMjgyOTQsIDI4Mjk5LCAyODMwNCwgMjgzMDksIDI4MzE0LCAyODMxOSwgMjgzMjQsIDI4MzI4LCAyODMzMiwgMjgzMzcsIAorICAgIDI4MzQyLCAyODM0NywgMjgzNTEsIDI4MzU1LCAyODM1OSwgMjgzNjQsIDI4MzY5LCAyODM3NCwgMjgzNzksIDI4MzgzLCAwLCAKKyAgICAwLCAwLCAyODM4NywgMjgzOTIsIDI4Mzk3LCAyODQwMiwgMjg0MDgsIDI4NDE0LCAyODQyMCwgMjg0MjYsIDI4NDMxLCAKKyAgICAyODQzNiwgMjg0NDIsIDI4NDQ4LCAwLCAwLCAwLCAwLCAyODQ1NSwgMjg0NjAsIDI4NDY2LCAyODQ3MiwgMjg0NzgsIAorICAgIDI4NDgzLCAyODQ4OCwgMjg0OTMsIDI4NDk4LCAyODUwNCwgMjg1MDksIDI4NTE0LCAwLCAwLCAwLCAwLCAyODUxOSwgMCwgMCwgCisgICAgMCwgMjg1MjQsIDI4NTI5LCAyODUzNCwgMjg1MzksIDI4NTQzLCAyODU0NywgMjg1NTEsIDI4NTU1LCAyODU1OSwgMjg1NjMsIAorICAgIDI4NTY3LCAyODU3MSwgMjg1NzUsIDI4NTgwLCAyODU4NiwgMjg1OTIsIDI4NTk4LCAyODYwMywgMjg2MDgsIDI4NjE0LCAKKyAgICAyODYyMCwgMjg2MjYsIDI4NjMxLCAyODYzNywgMjg2NDIsIDI4NjQ4LCAyODY1NCwgMjg2NTksIDI4NjY1LCAyODY3MSwgCisgICAgMjg2NzcsIDI4NjgyLCAyODY4NywgMjg2OTIsIDI4Njk4LCAyODcwNCwgMjg3MDksIDI4NzE1LCAyODcyMCwgMjg3MjYsIAorICAgIDI4NzMxLCAyODczNywgMCwgMCwgMjg3NDMsIDI4NzQ5LCAyODc1NSwgMjg3NjEsIDI4NzY3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyODc3MywgMjg3ODAsIDI4Nzg3LCAyODc5MywgMjg4MDAsIDI4ODA3LCAyODgxMywgMjg4MjAsIAorICAgIDI4ODI3LCAyODgzNCwgMjg4NDAsIDI4ODQ2LCAyODg1MywgMjg4NTksIDI4ODY1LCAyODg3MiwgMjg4NzksIDI4ODg1LCAKKyAgICAyODg5MiwgMjg4OTksIDI4OTA1LCAyODkxMSwgMjg5MTgsIDI4OTI0LCAyODkzMCwgMjg5MzcsIDI4OTQzLCAyODk1MCwgCisgICAgMjg5NTcsIDI4OTY0LCAyODk3MSwgMjg5NzgsIDI4OTg1LCAyODk5MSwgMjg5OTgsIDI5MDA1LCAyOTAxMSwgMjkwMTgsIAorICAgIDI5MDI1LCAyOTAzMiwgMjkwMzksIDI5MDQ2LCAyOTA1MywgMjkwNjAsIDAsIDAsIDAsIDAsIDI5MDY3LCAyOTA3NSwgCisgICAgMjkwODIsIDI5MDg5LCAyOTA5NSwgMjkxMDIsIDI5MTA4LCAyOTExNSwgMjkxMjEsIDI5MTI4LCAyOTEzNSwgMjkxNDIsIAorICAgIDI5MTQ5LCAyOTE1NiwgMjkxNjMsIDI5MTcwLCAyOTE3NywgMjkxODQsIDI5MTkxLCAyOTE5OCwgMjkyMDUsIDI5MjExLCAKKyAgICAyOTIxOCwgMjkyMjUsIDI5MjMyLCAyOTIzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkyNDQsIDI5MjUwLCAyOTI1NSwgMjkyNjAsIAorICAgIDI5MjY1LCAyOTI3MCwgMjkyNzUsIDI5MjgwLCAyOTI4NSwgMjkyOTAsIDI5Mjk1LCAwLCAwLCAwLCAyOTMwMSwgMjkzMDcsIAorICAgIDI5MzEzLCAyOTMxNywgMjkzMjMsIDI5MzI5LCAyOTMzNSwgMjkzNDEsIDI5MzQ3LCAyOTM1MywgMjkzNTksIDI5MzY1LCAKKyAgICAyOTM3MSwgMjkzNzcsIDI5MzgzLCAyOTM4OSwgMjkzOTUsIDI5NDAxLCAyOTQwNywgMjk0MTEsIDI5NDE3LCAyOTQyMywgCisgICAgMjk0MjksIDI5NDM1LCAyOTQ0MSwgMjk0NDcsIDI5NDUzLCAyOTQ1OSwgMjk0NjUsIDI5NDcxLCAyOTQ3NywgMjk0ODMsIAorICAgIDI5NDg5LCAyOTQ5NSwgMjk1MDEsIDI5NTA1LCAyOTUxMCwgMjk1MTUsIDI5NTIwLCAyOTUyNCwgMjk1MjksIDI5NTMzLCAKKyAgICAyOTUzOCwgMjk1NDMsIDI5NTQ4LCAyOTU1MiwgMjk1NTcsIDI5NTYyLCAyOTU2NywgMjk1NzIsIDI5NTc3LCAyOTU4MSwgCisgICAgMjk1ODUsIDI5NTkwLCAyOTU5NSwgMjk1OTksIDI5NjAzLCAyOTYwNywgMjk2MTIsIDI5NjE3LCAyOTYyMiwgMjk2MjcsIDAsIAorICAgIDAsIDI5NjMzLCAyOTYzNywgMjk2NDQsIDI5NjQ5LCAyOTY1NSwgMjk2NjEsIDI5NjY2LCAyOTY3MiwgMjk2NzgsIDI5NjgzLCAKKyAgICAyOTY4OSwgMjk2OTUsIDI5NzAxLCAyOTcwNiwgMjk3MTIsIDI5NzE3LCAyOTcyMiwgMjk3MjgsIDI5NzMzLCAyOTczOSwgCisgICAgMjk3NDQsIDI5NzUwLCAyOTc1NiwgMjk3NjIsIDI5NzY4LCAyOTc3MiwgMjk3NzcsIDI5NzgyLCAyOTc4OCwgMjk3OTQsIAorICAgIDI5Nzk5LCAyOTgwNSwgMjk4MTEsIDI5ODE1LCAyOTgyMCwgMjk4MjUsIDI5ODI5LCAyOTgzNCwgMjk4MzksIDI5ODQ0LCAKKyAgICAyOTg0OSwgMjk4NTUsIDI5ODYxLCAyOTg2NiwgMjk4NzEsIDI5ODc2LCAyOTg4MCwgMjk4ODUsIDI5ODg5LCAyOTg5NCwgCisgICAgMjk4OTgsIDI5OTAzLCAyOTkwOCwgMjk5MTMsIDI5OTE4LCAyOTkyNCwgMjk5MzAsIDI5OTM3LCAyOTk0NywgMjk5NTYsIAorICAgIDI5OTYzLCAyOTk2OSwgMjk5NzksIDI5OTg0LCAyOTk5MCwgMCwgMjk5OTUsIDMwMDAwLCAzMDAwNSwgMzAwMTMsIDMwMDE5LCAKKyAgICAzMDAyNywgMzAwMzIsIDMwMDM4LCAzMDA0NCwgMzAwNTAsIDMwMDU1LCAzMDA2MSwgMzAwNjYsIDMwMDczLCAzMDA3OSwgCisgICAgMzAwODQsIDMwMDkwLCAzMDA5NiwgMzAxMDIsIDMwMTA5LCAzMDExNiwgMzAxMjMsIDMwMTI4LCAzMDEzMywgMzAxNDAsIAorICAgIDMwMTQ3LCAzMDE1NCwgMzAxNjEsIDMwMTY4LCAwLCAwLCAzMDE3NSwgMzAxODIsIDMwMTg5LCAzMDE5NSwgMzAyMDEsIAorICAgIDMwMjA3LCAzMDIxMywgMzAyMTksIDMwMjI1LCAzMDIzMSwgMzAyMzcsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMjQzLCAzMDI0OSwgCisgICAgMzAyNTQsIDMwMjU5LCAzMDI2NCwgMzAyNjksIDMwMjc0LCAzMDI3OSwgMzAyODQsIDMwMjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMDI5NCwgMzAyOTksIDMwMzA0LCAzMDMwOSwgMzAzMTQsIDMwMzE5LCAzMDMyNCwgMzAzMzMsIDMwMzQwLCAzMDM0NSwgCisgICAgMzAzNTAsIDMwMzU1LCAzMDM2MCwgMzAzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxNTU5LCA3MTU2NiwgNzE1NzQsIDcxNTgyLCAKLSAgICA3MTU4OSwgNzE1OTcsIDcxNjA0LCA3MTYxMCwgNzE2MTYsIDcxNjIzLCA3MTYyOSwgNzE2MzUsIDcxNjQxLCA3MTY0OCwgCi0gICAgNzE2NTUsIDcxNjYyLCA3MTY2OSwgNzE2NzYsIDcxNjgzLCA3MTY5MCwgNzE2OTcsIDcxNzA0LCA3MTcxMSwgNzE3MTgsIAotICAgIDcxNzI1LCA3MTczMiwgNzE3MzksIDcxNzQ1LCA3MTc1MiwgNzE3NTksIDcxNzY2LCA3MTc3MywgNzE3ODAsIDcxNzg3LCAKLSAgICA3MTc5NCwgNzE4MDEsIDcxODA4LCA3MTgxNSwgNzE4MjIsIDcxODI5LCA3MTgzNiwgNzE4NDMsIDcxODUwLCA3MTg1NywgCi0gICAgNzE4NjQsIDcxODcxLCA3MTg3OSwgNzE4ODcsIDcxODk1LCA3MTkwMywgMCwgMCwgMCwgMCwgNzE5MTEsIDcxOTIwLCAKLSAgICA3MTkyOSwgNzE5MzgsIDcxOTQ3LCA3MTk1NiwgNzE5NjUsIDcxOTcyLCA3MTk3OSwgNzE5ODYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcxOTkzLCA3MTk5NywgNzIwMDIsIDcyMDA3LCA3MjAxMiwgNzIwMTcsIDcyMDIyLCA3MjAyNywgNzIwMzIsIDcyMDM3LCAKLSAgICA3MjA0MiwgNzIwNDcsIDcyMDUxLCA3MjA1NSwgNzIwNjAsIDcyMDY1LCA3MjA2OSwgNzIwNzQsIDcyMDc5LCA3MjA4NCwgCi0gICAgNzIwODksIDcyMDk0LCA3MjA5OSwgNzIxMDQsIDcyMTA4LCA3MjExMiwgNzIxMTcsIDcyMTIyLCA3MjEyNywgNzIxMzEsIAotICAgIDcyMTM1LCA3MjEzOSwgNzIxNDMsIDcyMTQ3LCA3MjE1MSwgNzIxNTYsIDcyMTYxLCA3MjE2NiwgNzIxNzEsIDcyMTc2LCAKLSAgICA3MjE4MywgNzIxODksIDcyMTk0LCA3MjE5OSwgNzIyMDQsIDcyMjA5LCA3MjIxNSwgNzIyMjIsIDcyMjI4LCA3MjIzNSwgCi0gICAgNzIyNDEsIDcyMjQ3LCA3MjI1MiwgNzIyNTksIDcyMjY1LCA3MjI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzIyNzYsIAotICAgIDcyMjgwLCA3MjI4NCwgNzIyODcsIDcyMjkxLCA3MjI5NCwgNzIyOTgsIDcyMzAxLCA3MjMwNSwgNzIzMDksIDcyMzE0LCAKLSAgICA3MjMxOCwgNzIzMjMsIDcyMzI2LCA3MjMzMCwgNzIzMzQsIDcyMzM3LCA3MjM0MSwgNzIzNDUsIDcyMzQ4LCA3MjM1MiwgCi0gICAgNzIzNTYsIDcyMzYwLCA3MjM2NCwgNzIzNjgsIDcyMzcyLCA3MjM3NiwgNzIzODAsIDcyMzg0LCA3MjM4OCwgNzIzOTIsIAotICAgIDcyMzk2LCA3MjQwMCwgNzI0MDQsIDcyNDA4LCA3MjQxMiwgNzI0MTYsIDcyNDIwLCA3MjQyMywgNzI0MjYsIDcyNDMwLCAKLSAgICA3MjQzNCwgNzI0MzgsIDcyNDQxLCA3MjQ0NCwgNzI0NDcsIDcyNDUxLCA3MjQ1NSwgNzI0NTksIDcyNDYzLCA3MjQ2NywgCi0gICAgNzI0NzAsIDcyNDc0LCA3MjQ4MCwgNzI0ODUsIDcyNDg5LCA3MjQ5NCwgNzI0OTgsIDcyNTAzLCA3MjUwOCwgNzI1MTQsIAotICAgIDcyNTE5LCA3MjUyNSwgNzI1MjksIDcyNTM0LCA3MjUzOSwgNzI1NDMsIDcyNTQ4LCA3MjU1MywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzI1NTcsIDcyNTYwLCA3MjU2NCwgNzI1NjgsIDcyNTcxLCA3MjU3NCwgNzI1NzcsIDcyNTgwLCA3MjU4MywgCi0gICAgNzI1ODYsIDcyNTg5LCA3MjU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgNzI1OTUsIDcyNjAwLCA3MjYwNCwgNzI2MDgsIDcyNjEyLCAKLSAgICA3MjYxNiwgNzI2MjAsIDcyNjI0LCA3MjYyOCwgNzI2MzIsIDcyNjM2LCA3MjY0MCwgNzI2NDQsIDcyNjQ4LCA3MjY1MiwgCi0gICAgNzI2NTYsIDcyNjYwLCA3MjY2NSwgNzI2NzAsIDcyNjc2LCA3MjY4MiwgNzI2ODksIDcyNjk0LCA3MjY5OSwgNzI3MDUsIAotICAgIDcyNzA5LCA3MjcxNCwgNzI3MTcsIDAsIDAsIDAsIDAsIDcyNzIwLCA3MjcyNywgNzI3MzMsIDcyNzM5LCA3Mjc0NSwgCi0gICAgNzI3NTEsIDcyNzU3LCA3Mjc2MywgNzI3NjksIDcyNzc1LCA3Mjc4MSwgNzI3ODcsIDcyNzk0LCA3MjgwMSwgNzI4MDgsIAotICAgIDcyODE1LCA3MjgyMiwgNzI4MjksIDcyODM2LCA3Mjg0MywgNzI4NTAsIDcyODU2LCA3Mjg2MiwgNzI4NjksIDcyODc1LCAKLSAgICA3Mjg4MiwgNzI4ODksIDcyODk1LCA3MjkwMSwgNzI5MDgsIDcyOTE1LCA3MjkyMiwgNzI5MjgsIDcyOTM1LCA3Mjk0MiwgCi0gICAgNzI5NDgsIDcyOTU1LCA3Mjk2MSwgNzI5NjgsIDcyOTc1LCA3Mjk4MSwgNzI5ODcsIDcyOTk0LCA3MzAwMCwgNzMwMDcsIAotICAgIDczMDE0LCA3MzAyMywgNzMwMzAsIDczMDM3LCA3MzA0MSwgNzMwNDYsIDczMDUxLCA3MzA1NiwgNzMwNjEsIDczMDY1LCAKLSAgICA3MzA2OSwgNzMwNzQsIDczMDc4LCA3MzA4MywgNzMwODgsIDczMDkzLCA3MzA5OCwgNzMxMDIsIDczMTA3LCA3MzExMSwgCi0gICAgNzMxMTYsIDczMTIwLCA3MzEyNSwgNzMxMzAsIDczMTM1LCA3MzE0MCwgNzMxNDQsIDczMTQ5LCA3MzE1NCwgNzMxNTksIAotICAgIDczMTY1LCA3MzE3MCwgNzMxNzYsIDczMTgyLCA3MzE4OCwgNzMxOTUsIDczMjAxLCA3MzIwNywgNzMyMTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczMjE4LCA3MzIyMywgNzMyMjcsIDczMjMxLCA3MzIzNSwgNzMyMzksIDczMjQzLCAKLSAgICA3MzI0NywgNzMyNTEsIDczMjU1LCA3MzI1OSwgNzMyNjMsIDczMjY3LCA3MzI3MSwgNzMyNzUsIDczMjc5LCA3MzI4MywgCi0gICAgNzMyODcsIDczMjkxLCA3MzI5NSwgNzMyOTksIDczMzAzLCA3MzMwNywgNzMzMTEsIDczMzE1LCA3MzMxOSwgNzMzMjMsIAotICAgIDczMzI3LCA3MzMzMSwgNzMzMzUsIDAsIDAsIDAsIDczMzM5LCA3MzM0MywgNzMzNDcsIDczMzUxLCA3MzM1NSwgNzMzNTgsIAotICAgIDczMzY0LCA3MzM2NywgNzMzNzEsIDczMzc0LCA3MzM4MCwgNzMzODYsIDczMzk0LCA3MzM5NywgNzM0MDEsIDczNDA0LCAKLSAgICA3MzQwNywgNzM0MTMsIDczNDE5LCA3MzQyMywgNzM0MjksIDczNDMzLCA3MzQzNywgNzM0NDMsIDczNDQ3LCA3MzQ1MywgCi0gICAgNzM0NTksIDczNDYzLCA3MzQ2NywgNzM0NzMsIDczNDc3LCA3MzQ4MywgNzM0ODksIDczNDkzLCA3MzQ5OSwgNzM1MDMsIAotICAgIDczNTA5LCA3MzUxMiwgNzM1MTUsIDczNTIxLCA3MzUyNSwgNzM1MzEsIDczNTM0LCA3MzUzNywgNzM1NDAsIDczNTQ2LCAKLSAgICA3MzU1MCwgNzM1NTQsIDczNTYwLCA3MzU2NiwgNzM1NzAsIDczNTczLCA3MzU3OSwgNzM1ODQsIDczNTg5LCA3MzU5NCwgCi0gICAgNzM2MDEsIDczNjA2LCA3MzYxMywgNzM2MTgsIDczNjI1LCA3MzYzMCwgNzM2MzYsIDczNjQyLCA3MzY0OCwgNzM2NTEsIAotICAgIDczNjU1LCA3MzY1OSwgNzM2NjQsIDczNjY5LCA3MzY3NCwgNzM2NzksIDczNjg0LCA3MzY4OSwgNzM2OTQsIDczNjk5LCAKLSAgICA3MzcwNiwgNzM3MTEsIDAsIDczNzE4LCA3MzcyMSwgNzM3MjUsIDczNzI4LCA3MzczMSwgNzM3MzQsIDczNzM3LCA3Mzc0MCwgCi0gICAgNzM3NDMsIDczNzQ2LCA3Mzc0OSwgMCwgMCwgMCwgMCwgNzM3NTIsIDczNzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDM3MCwgMzAzNzYsIAorICAgIDMwMzgyLCAzMDM4NiwgMzAzOTAsIDMwMzk0LCAzMDM5OCwgMzA0MDQsIDMwNDA4LCAzMDQxNCwgMzA0MTgsIDMwNDI0LCAKKyAgICAzMDQzMCwgMzA0MzgsIDMwNDQ0LCAzMDQ1MiwgMzA0NTYsIDMwNDYwLCAzMDQ2NCwgMzA0NzAsIDMwNDczLCAzMDQ3OSwgCisgICAgMzA0ODMsIDMwNDg5LCAzMDQ5MywgMzA0OTcsIDMwNTAzLCAzMDUwNywgMzA1MTMsIDMwNTE3LCAzMDUyMywgMzA1MzEsIAorICAgIDMwNTM5LCAzMDU0NywgMzA1NTMsIDMwNTU3LCAzMDU2MywgMzA1NjcsIDMwNTczLCAzMDU3NiwgMzA1NzksIDMwNTg1LCAKKyAgICAzMDU4OSwgMzA1OTUsIDMwNTk4LCAzMDYwMSwgMzA2MDQsIDMwNjA4LCAzMDYxMiwgMzA2MTgsIDMwNjI0LCAzMDYyNywgCisgICAgMzA2MzAsIDMwNjM0LCAzMDYzOSwgMzA2NDQsIDMwNjUxLCAzMDY1NiwgMzA2NjMsIDMwNjcwLCAzMDY3OSwgMzA2ODYsIAorICAgIDMwNjk1LCAzMDcwMCwgMzA3MDcsIDMwNzE0LCAzMDcyMywgMzA3MjgsIDMwNzM1LCAzMDc0MCwgMzA3NDYsIDMwNzUyLCAKKyAgICAzMDc1OCwgMzA3NjQsIDMwNzcwLCAzMDc3NiwgMCwgMCwgMCwgMCwgMzA3ODIsIDMwNzg2LCAzMDc4OSwgMzA3OTIsIAorICAgIDMwNzk1LCAzMDc5OCwgMzA4MDEsIDMwODA0LCAzMDgwNywgMzA4MTAsIDMwODEzLCAzMDgxNiwgMzA4MTksIDMwODIyLCAKKyAgICAzMDgyNywgMzA4MzIsIDMwODM3LCAzMDg0MCwgMzA4NDUsIDMwODUwLCAzMDg1NSwgMzA4NjAsIDMwODY3LCAzMDg3MiwgCisgICAgMzA4NzcsIDMwODgyLCAzMDg4NywgMzA4OTQsIDMwOTAwLCAzMDkwNiwgMzA5MTIsIDMwOTE4LCAzMDkyNCwgMzA5MzMsIAorICAgIDMwOTQyLCAzMDk0OCwgMzA5NTQsIDMwOTYyLCAzMDk3MCwgMzA5NzksIDMwOTg4LCAzMDk5NiwgMzEwMDQsIDMxMDEzLCAKKyAgICAzMTAyMiwgMCwgMCwgMCwgMzEwMzAsIDMxMDM0LCAzMTAzOCwgMzEwNDIsIDMxMDQ1LCAzMTA0OCwgMzEwNTEsIDMxMDU1LCAKKyAgICAzMTA1OCwgMzEwNjEsIDMxMDY1LCAzMTA2OCwgMzEwNzIsIDMxMDc2LCAzMTA4MCwgMzEwODQsIDMxMDg4LCAzMTA5MiwgCisgICAgMzEwOTYsIDMxMTAwLCAzMTEwNCwgMzExMDcsIDMxMTEwLCAzMTExNCwgMzExMTgsIDMxMTIyLCAzMTEyNSwgMzExMjgsIAorICAgIDMxMTMxLCAzMTEzNSwgMzExMzksIDMxMTQyLCAzMTE0NiwgMzExNDksIDMxMTU0LCAzMTE1OSwgMzExNjQsIDMxMTY5LCAKKyAgICAzMTE3NCwgMzExNzksIDMxMTg0LCAzMTE4OSwgMzExOTQsIDMxMTk4LCAzMTIwMiwgMzEyMDgsIDMxMjE1LCAzMTIxOSwgCisgICAgMzEyMjMsIDMxMjI3LCAzMTIzMCwgMzEyMzMsIDMxMjM2LCAzMTIzOSwgMzEyNDIsIDMxMjQ1LCAzMTI0OCwgMzEyNTEsIAorICAgIDMxMjU0LCAzMTI1NywgMzEyNjEsIDMxMjY1LCAzMTI2OSwgMzEyNzQsIDMxMjc4LCAzMTI4MiwgMzEyODgsIDMxMjkyLCAKKyAgICAzMTI5OCwgMzEzMDQsIDMxMzA5LCAzMTMxNiwgMzEzMjAsIDMxMzI2LCAzMTMzMCwgMzEzMzYsIDMxMzQxLCAzMTM0OCwgCisgICAgMzEzNTUsIDMxMzYwLCAzMTM2NywgMzEzNzIsIDMxMzc3LCAzMTM4MSwgMzEzODcsIDMxMzkxLCAzMTM5NywgMzE0MDQsIAorICAgIDMxNDExLCAzMTQxNSwgMzE0MjEsIDMxNDI3LCAzMTQzMSwgMzE0MzcsIDMxNDQyLCAzMTQ0NywgMzE0NTQsIDMxNDU5LCAKKyAgICAzMTQ2NCwgMzE0NjksIDMxNDc0LCAzMTQ3OCwgMzE0ODIsIDMxNDg3LCAzMTQ5MiwgMzE0OTksIDMxNTA1LCAzMTUxMCwgCisgICAgMzE1MTcsIDMxNTIyLCAzMTUyOSwgMzE1MzQsIDMxNTQzLCAzMTU0OSwgMzE1NTUsIDMxNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMTU2MywgMzE1NzIsIDMxNTc5LCAzMTU4NiwgMzE1OTMsIDMxNTk2LCAzMTYwMCwgMzE2MDQsIDMxNjA4LCAKKyAgICAzMTYxMiwgMzE2MTYsIDMxNjIwLCAzMTYyNCwgMzE2MjgsIDMxNjMyLCAzMTYzNiwgMzE2NDAsIDMxNjQ0LCAzMTY0NywgCisgICAgMzE2NTAsIDMxNjU0LCAzMTY1OCwgMzE2NjIsIDMxNjY2LCAzMTY3MCwgMzE2NzQsIDMxNjc3LCAzMTY4MSwgMzE2ODUsIAorICAgIDMxNjg5LCAzMTY5MywgMzE2OTYsIDMxNjk5LCAzMTcwMywgMzE3MDYsIDMxNzEwLCAzMTcxNCwgMzE3MTcsIDMxNzIxLCAKKyAgICAzMTcyNSwgMzE3MjgsIDMxNzMzLCAzMTczOCwgMzE3NDMsIDMxNzQ3LCAzMTc1MSwgMzE3NTYsIDMxNzYwLCAzMTc2NSwgCisgICAgMzE3NjksIDMxNzc0LCAzMTc3OCwgMzE3ODIsIDMxNzg3LCAzMTc5MiwgMzE3OTYsIDMxODAxLCAzMTgwNiwgMzE4MTEsIAorICAgIDMxODE1LCAwLCAwLCAwLCAzMTgxOSwgMzE4MjQsIDMxODMzLCAzMTgzOCwgMzE4NDUsIDMxODUwLCAzMTg1NCwgMzE4NTcsIAorICAgIDMxODYwLCAzMTg2MywgMzE4NjYsIDMxODY5LCAzMTg3MiwgMzE4NzUsIDMxODc4LCAwLCAwLCAwLCAzMTg4MSwgMzE4ODUsIAorICAgIDMxODg5LCAzMTg5MywgMzE5MDAsIDMxOTA2LCAzMTkxMiwgMzE5MTgsIDMxOTI0LCAzMTkzMCwgMzE5MzYsIDMxOTQyLCAKKyAgICAzMTk0OCwgMzE5NTQsIDMxOTYxLCAzMTk2OCwgMzE5NzUsIDMxOTgyLCAzMTk4OSwgMzE5OTYsIDMyMDAzLCAzMjAxMCwgCisgICAgMzIwMTcsIDMyMDI0LCAzMjAzMSwgMzIwMzgsIDMyMDQ1LCAzMjA1MiwgMzIwNTksIDMyMDY2LCAzMjA3MywgMzIwODAsIAorICAgIDMyMDg3LCAzMjA5NCwgMzIxMDEsIDMyMTA4LCAzMjExNSwgMzIxMjIsIDMyMTI5LCAzMjEzNiwgMzIxNDMsIDMyMTUwLCAKKyAgICAzMjE1NywgMzIxNjQsIDMyMTcyLCAzMjE4MCwgMzIxODgsIDMyMTk0LCAzMjIwMCwgMzIyMDYsIDMyMjE0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIyMywgMzIyMzAsIDMyMjM3LCAzMjI0NCwgMzIyNTEsIAorICAgIDMyMjYwLCAzMjI2OSwgMzIyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMjg3LCAzMjI5MiwgMzIyOTcsIDMyMzAyLCAKKyAgICAzMjMwNywgMzIzMTYsIDMyMzI3LCAzMjMzNiwgMzIzNDcsIDMyMzUzLCAzMjM2NiwgMzIzNzIsIDMyMzc5LCAzMjM4NiwgCisgICAgMzIzOTEsIDMyMzk3LCAzMjQwMywgMzI0MTQsIDMyNDIzLCAzMjQzMCwgMzI0MzcsIDMyNDQ2LCAzMjQ1MywgMzI0NjIsIAorICAgIDMyNDcyLCAzMjQ4MiwgMzI0ODksIDMyNDk2LCAzMjUwMywgMzI1MTMsIDMyNTE4LCAzMjUyNiwgMzI1MzIsIDMyNTQwLCAKKyAgICAzMjU0OSwgMzI1NTQsIDMyNTYxLCAzMjU2NywgMzI1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNTc3LCAKKyAgICAzMjU4MiwgMzI1ODgsIDMyNTk1LCAzMjYwMywgMzI2MDksIDMyNjE1LCAzMjYyMSwgMzI2MjYsIDMyNjMzLCAzMjYzOSwgCisgICAgMzI2NDUsIDMyNjUxLCAzMjY1OSwgMzI2NjQsIDMyNjcyLCAzMjY3NywgMzI2ODMsIDMyNjg5LCAzMjY5NiwgMzI3MDQsIAorICAgIDMyNzExLCAzMjcxNywgMzI3MjQsIDMyNzMxLCAzMjczNywgMzI3NDQsIDMyNzUxLCAzMjc1NywgMzI3NjIsIDMyNzY4LCAKKyAgICAzMjc3NiwgMzI3ODQsIDMyNzkwLCAzMjc5NiwgMzI4MDIsIDMyODA4LCAzMjgxNiwgMzI4MjAsIDMyODI2LCAzMjgzMiwgCisgICAgMzI4MzgsIDMyODQ0LCAzMjg1MCwgMzI4NTYsIDMyODYwLCAzMjg2NSwgMzI4NzAsIDMyODc3LCAzMjg4MiwgMzI4ODYsIAorICAgIDMyODkyLCAzMjg5NywgMzI5MDIsIDMyOTA2LCAzMjkxMSwgMzI5MTYsIDMyOTIwLCAzMjkyNCwgMzI5MjksIDMyOTM2LCAKKyAgICAzMjk0MCwgMzI5NDUsIDMyOTUwLCAzMjk1NCwgMzI5NTksIDMyOTYzLCAzMjk2OCwgMzI5NzIsIDMyOTc4LCAzMjk4MywgCisgICAgMzI5OTAsIDMyOTk1LCAzMzAwMCwgMzMwMDQsIDMzMDA5LCAzMzAxNCwgMzMwMjEsIDMzMDI2LCAzMzAzMiwgMzMwMzcsIAorICAgIDMzMDQxLCAzMzA0NiwgMzMwNTAsIDMzMDU1LCAzMzA2MiwgMzMwNjksIDMzMDc0LCAzMzA3OSwgMzMwODMsIDMzMDg5LCAKKyAgICAzMzA5NSwgMzMxMDAsIDMzMTA1LCAzMzExMCwgMzMxMTYsIDMzMTIxLCAzMzEyNywgMzMxMzIsIDMzMTM4LCAzMzE0NCwgCisgICAgMzMxNTAsIDMzMTU3LCAzMzE2NCwgMzMxNzEsIDMzMTc4LCAzMzE4NSwgMzMxOTIsIDMzMTk3LCAzMzIwNSwgMzMyMTQsIAorICAgIDMzMjIzLCAzMzIzMiwgMzMyNDEsIDMzMjUwLCAzMzI1OSwgMzMyNzEsIDMzMjgwLCAzMzI4OSwgMzMyOTgsIDMzMzA1LCAKKyAgICAzMzMxMCwgMzMzMTcsIDMzMzI1LCAzMzMzMywgMzMzNDAsIDMzMzQ3LCAzMzM1NCwgMzMzNjEsIDMzMzY5LCAzMzM3OCwgCisgICAgMzMzODcsIDMzMzk2LCAzMzQwNSwgMzM0MTQsIDMzNDIzLCAzMzQzMiwgMzM0NDEsIDMzNDUwLCAzMzQ1OSwgMzM0NjgsIAorICAgIDMzNDc3LCAzMzQ4NiwgMzM0OTUsIDMzNTAzLCAzMzUxMiwgMzM1MjMsIDMzNTMxLCAzMzU0MCwgMzM1NTEsIDMzNTYwLCAKKyAgICAzMzU2OSwgMzM1NzgsIDMzNTg3LCAzMzU5NSwgMzM2MDQsIDMzNjExLCAzMzYxNiwgMzM2MjQsIDMzNjI5LCAzMzYzNiwgCisgICAgMzM2NDEsIDMzNjUwLCAzMzY1NiwgMzM2NjMsIDMzNjcwLCAzMzY3NSwgMzM2ODAsIDMzNjg4LCAzMzY5NiwgMzM3MDUsIAorICAgIDMzNzE0LCAzMzcxOSwgMzM3MjYsIDMzNzM3LCAzMzc0NSwgMzM3NTQsIDMzNzYwLCAzMzc2NiwgMzM3NzEsIDMzNzc4LCAKKyAgICAzMzc4MywgMzM3OTIsIDMzNzk3LCAzMzgwMiwgMzM4MDcsIDMzODE0LCAzMzgyMSwgMzM4MjYsIDMzODM1LCAzMzg0MywgCisgICAgMzM4NDgsIDMzODUzLCAzMzg2MCwgMzM4NjcsIDMzODcxLCAzMzg3NSwgMzM4NzgsIDMzODgxLCAzMzg4NCwgMzM4ODcsIAorICAgIDMzODkwLCAzMzg5MywgMzM5MDAsIDMzOTAzLCAzMzkwNiwgMzM5MTEsIDMzOTE1LCAzMzkxOSwgMzM5MjMsIDMzOTI3LCAKKyAgICAzMzkzMSwgMzM5NDAsIDMzOTQ2LCAzMzk1MiwgMzM5NTgsIDMzOTY2LCAzMzk3NCwgMzM5ODAsIDMzOTg2LCAzMzk5MywgCisgICAgMzM5OTksIDM0MDA0LCAzNDAxMCwgMzQwMTYsIDM0MDIyLCAzNDAyOSwgMzQwMzUsIDM0MDQzLCAzNDA0OSwgMzQwNTYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MDYyLCAzNDA2OSwgCisgICAgMzQwNzYsIDM0MDgxLCAzNDA5MCwgMzQwOTgsIDM0MTA2LCAzNDExMywgMzQxMjAsIDM0MTI3LCAzNDEzNCwgMzQxNDIsIAorICAgIDM0MTUwLCAzNDE2MCwgMzQxNzAsIDM0MTc4LCAzNDE4NiwgMzQxOTQsIDM0MjAyLCAzNDIxMSwgMzQyMjAsIDM0MjI4LCAKKyAgICAzNDIzNiwgMzQyNDUsIDM0MjU0LCAzNDI2NCwgMzQyNzQsIDM0MjgzLCAzNDI5MiwgMzQzMDAsIDM0MzA4LCAzNDMxNiwgCisgICAgMzQzMjQsIDM0MzM0LCAzNDM0NCwgMzQzNTIsIDM0MzYwLCAzNDM2OCwgMzQzNzYsIDM0Mzg0LCAzNDM5MiwgMzQ0MDAsIAorICAgIDM0NDA4LCAzNDQxNiwgMzQ0MjQsIDM0NDMyLCAzNDQ0MCwgMzQ0NDksIDM0NDU4LCAzNDQ2NywgMzQ0NzYsIDM0NDg2LCAKKyAgICAzNDQ5NiwgMzQ1MDMsIDM0NTEwLCAzNDUxOCwgMzQ1MjYsIDM0NTM1LCAzNDU0NCwgMzQ1NTIsIDM0NTYwLCAzNDU3MiwgCisgICAgMzQ1ODQsIDM0NTkzLCAzNDYwMiwgMzQ2MTEsIDM0NjIwLCAzNDYyNywgMzQ2MzQsIDM0NjQyLCAzNDY1MCwgMzQ2NTgsIAorICAgIDM0NjY2LCAzNDY3NCwgMzQ2ODIsIDM0NjkwLCAzNDY5OCwgMzQ3MDcsIDM0NzE2LCAzNDcyNSwgMzQ3MzQsIDM0NzQzLCAKKyAgICAzNDc1MiwgMzQ3NjIsIDM0NzcyLCAzNDc4MiwgMzQ3OTIsIDM0ODAxLCAzNDgxMCwgMzQ4MTcsIDM0ODI0LCAzNDgzMiwgCisgICAgMzQ4NDAsIDM0ODQ4LCAzNDg1NiwgMzQ4NjQsIDM0ODcyLCAzNDg4NCwgMzQ4OTYsIDM0OTA1LCAzNDkxNCwgMzQ5MjIsIAorICAgIDM0OTMwLCAzNDkzOCwgMzQ5NDYsIDM0OTU3LCAzNDk2OCwgMzQ5NzksIDM0OTkwLCAzNTAwMiwgMzUwMTQsIDM1MDIyLCAKKyAgICAzNTAzMCwgMzUwMzgsIDM1MDQ2LCAzNTA1NSwgMzUwNjQsIDM1MDczLCAzNTA4MiwgMzUwOTAsIDM1MDk4LCAzNTEwNiwgCisgICAgMzUxMTQsIDM1MTIyLCAzNTEzMCwgMzUxMzksIDM1MTQ4LCAzNTE1OCwgMzUxNjgsIDM1MTc1LCAzNTE4MiwgMzUxOTAsIAorICAgIDM1MTk4LCAzNTIwNiwgMzUyMTQsIDM1MjIxLCAzNTIyOCwgMzUyMzYsIDM1MjQ0LCAzNTI1MiwgMzUyNjAsIDM1MjY4LCAKKyAgICAzNTI3NiwgMzUyODQsIDM1MjkyLCAzNTMwMCwgMzUzMDgsIDM1MzE2LCAzNTMyNCwgMzUzMzIsIDM1MzQwLCAzNTM0OCwgCisgICAgMzUzNTYsIDM1MzY1LCAzNTM3NCwgMzUzODMsIDM1MzkxLCAzNTQwMCwgMzU0MDksIDM1NDE4LCAzNTQyNywgMzU0MzcsIAorICAgIDM1NDQ2LCAzNTQ1MywgMzU0NTgsIDM1NDY1LCAzNTQ3MiwgMzU0ODAsIDM1NDg4LCAzNTQ5NywgMzU1MDYsIDM1NTE2LCAKKyAgICAzNTUyNiwgMzU1MzcsIDM1NTQ4LCAzNTU1NywgMzU1NjYsIDM1NTc2LCAzNTU4NiwgMzU1OTUsIDM1NjA0LCAzNTYxNCwgCisgICAgMzU2MjQsIDM1NjM1LCAzNTY0NiwgMzU2NTUsIDM1NjY0LCAzNTY3NCwgMzU2ODQsIDM1NjkxLCAzNTY5OCwgMzU3MDYsIAorICAgIDM1NzE0LCAzNTcyMCwgMzU3MjYsIDM1NzM1LCAzNTc0NCwgMzU3NTQsIDM1NzY0LCAzNTc3NSwgMzU3ODYsIDM1Nzk1LCAKKyAgICAzNTgwNCwgMzU4MTQsIDM1ODI0LCAzNTgzMywgMzU4NDIsIDM1ODUwLCAzNTg1OCwgMzU4NjUsIDM1ODcyLCAzNTg4MCwgCisgICAgMzU4ODgsIDM1ODk3LCAzNTkwNiwgMzU5MTYsIDM1OTI2LCAzNTkzNywgMzU5NDgsIDM1OTU3LCAzNTk2NiwgMzU5NzYsIAorICAgIDM1OTg2LCAzNTk5NSwgMzYwMDQsIDM2MDE0LCAzNjAyNCwgMzYwMzUsIDM2MDQ2LCAzNjA1NSwgMzYwNjQsIDM2MDc0LCAKKyAgICAzNjA4NCwgMzYwOTEsIDM2MDk4LCAzNjEwNiwgMzYxMTQsIDM2MTIzLCAzNjEzMiwgMzYxNDIsIDM2MTUyLCAzNjE2MywgCisgICAgMzYxNzQsIDM2MTgzLCAzNjE5MiwgMzYyMDIsIDM2MjEyLCAzNjIyMCwgMzYyMjgsIDM2MjM2LCAzNjI0NCwgMzYyNTMsIAorICAgIDM2MjYyLCAzNjI2OSwgMzYyNzYsIDM2MjgzLCAzNjI5MCwgMzYyOTcsIDM2MzA0LCAzNjMxMiwgMzYzMjAsIDM2MzI4LCAKKyAgICAzNjMzNiwgMzYzNDcsIDM2MzU4LCAzNjM2OSwgMzYzODAsIDM2MzkxLCAzNjQwMiwgMzY0MTAsIDM2NDE4LCAzNjQyOSwgCisgICAgMzY0NDAsIDM2NDUxLCAzNjQ2MiwgMzY0NzMsIDM2NDg0LCAzNjQ5MiwgMzY1MDAsIDM2NTExLCAzNjUyMiwgMzY1MzMsIDAsIAorICAgIDAsIDM2NTQ0LCAzNjU1MiwgMzY1NjAsIDM2NTcxLCAzNjU4MiwgMzY1OTMsIDAsIDAsIDM2NjA0LCAzNjYxMiwgMzY2MjAsIAorICAgIDM2NjMxLCAzNjY0MiwgMzY2NTMsIDM2NjY0LCAzNjY3NSwgMzY2ODYsIDM2Njk0LCAzNjcwMiwgMzY3MTMsIDM2NzI0LCAKKyAgICAzNjczNSwgMzY3NDYsIDM2NzU3LCAzNjc2OCwgMzY3NzYsIDM2Nzg0LCAzNjc5NSwgMzY4MDYsIDM2ODE3LCAzNjgyOCwgCisgICAgMzY4MzksIDM2ODUwLCAzNjg1OCwgMzY4NjYsIDM2ODc3LCAzNjg4OCwgMzY4OTksIDM2OTEwLCAzNjkyMSwgMzY5MzIsIAorICAgIDM2OTQwLCAzNjk0OCwgMzY5NTksIDM2OTcwLCAzNjk4MSwgMCwgMCwgMzY5OTIsIDM3MDAwLCAzNzAwOCwgMzcwMTksIAorICAgIDM3MDMwLCAzNzA0MSwgMCwgMCwgMzcwNTIsIDM3MDYwLCAzNzA2OCwgMzcwNzksIDM3MDkwLCAzNzEwMSwgMzcxMTIsIAorICAgIDM3MTIzLCAwLCAzNzEzNCwgMCwgMzcxNDIsIDAsIDM3MTUzLCAwLCAzNzE2NCwgMzcxNzUsIDM3MTgzLCAzNzE5MSwgCisgICAgMzcyMDIsIDM3MjEzLCAzNzIyNCwgMzcyMzUsIDM3MjQ2LCAzNzI1NywgMzcyNjUsIDM3MjczLCAzNzI4NCwgMzcyOTUsIAorICAgIDM3MzA2LCAzNzMxNywgMzczMjgsIDM3MzM5LCAzNzM0NywgMzczNTUsIDM3MzYzLCAzNzM3MSwgMzczNzksIDM3Mzg3LCAKKyAgICAzNzM5NSwgMzc0MDMsIDM3NDExLCAzNzQxOSwgMzc0MjcsIDM3NDM1LCAzNzQ0MywgMCwgMCwgMzc0NTEsIDM3NDYyLCAKKyAgICAzNzQ3MywgMzc0ODcsIDM3NTAxLCAzNzUxNSwgMzc1MjksIDM3NTQzLCAzNzU1NywgMzc1NjgsIDM3NTc5LCAzNzU5MywgCisgICAgMzc2MDcsIDM3NjIxLCAzNzYzNSwgMzc2NDksIDM3NjYzLCAzNzY3NCwgMzc2ODUsIDM3Njk5LCAzNzcxMywgMzc3MjcsIAorICAgIDM3NzQxLCAzNzc1NSwgMzc3NjksIDM3NzgwLCAzNzc5MSwgMzc4MDUsIDM3ODE5LCAzNzgzMywgMzc4NDcsIDM3ODYxLCAKKyAgICAzNzg3NSwgMzc4ODYsIDM3ODk3LCAzNzkxMSwgMzc5MjUsIDM3OTM5LCAzNzk1MywgMzc5NjcsIDM3OTgxLCAzNzk5MiwgCisgICAgMzgwMDMsIDM4MDE3LCAzODAzMSwgMzgwNDUsIDM4MDU5LCAzODA3MywgMzgwODcsIDM4MDk1LCAzODEwMywgMzgxMTQsIAorICAgIDM4MTIyLCAwLCAzODEzMywgMzgxNDEsIDM4MTUyLCAzODE2MCwgMzgxNjgsIDM4MTc2LCAzODE4NCwgMzgxOTIsIDM4MTk1LCAKKyAgICAzODE5OCwgMzgyMDEsIDM4MjA0LCAzODIxMCwgMzgyMjEsIDM4MjI5LCAwLCAzODI0MCwgMzgyNDgsIDM4MjU5LCAzODI2NywgCisgICAgMzgyNzUsIDM4MjgzLCAzODI5MSwgMzgyOTksIDM4MzA1LCAzODMxMSwgMzgzMTcsIDM4MzI1LCAzODMzMywgMzgzNDQsIDAsIAorICAgIDAsIDM4MzU1LCAzODM2MywgMzgzNzQsIDM4MzgyLCAzODM5MCwgMzgzOTgsIDAsIDM4NDA2LCAzODQxMiwgMzg0MTgsIAorICAgIDM4NDI0LCAzODQzMiwgMzg0NDAsIDM4NDUxLCAzODQ2MiwgMzg0NzAsIDM4NDc4LCAzODQ4NiwgMzg0OTcsIDM4NTA1LCAKKyAgICAzODUxMywgMzg1MjEsIDM4NTI5LCAzODUzNywgMzg1NDMsIDM4NTQ5LCAwLCAwLCAzODU1MiwgMzg1NjMsIDM4NTcxLCAwLCAKKyAgICAzODU4MiwgMzg1OTAsIDM4NjAxLCAzODYwOSwgMzg2MTcsIDM4NjI1LCAzODYzMywgMzg2NDEsIDM4NjQ0LCAwLCAzODY0NywgCisgICAgMzg2NTEsIDM4NjU1LCAzODY1OSwgMzg2NjMsIDM4NjY3LCAzODY3MSwgMzg2NzUsIDM4Njc5LCAzODY4MywgMzg2ODcsIAorICAgIDM4NjkxLCAzODY5NywgMzg3MDMsIDM4NzA5LCAzODcxMiwgMzg3MTUsIDM4NzE3LCAzODcyMSwgMzg3MjUsIDM4NzI5LCAKKyAgICAzODczMywgMzg3MzUsIDM4NzM5LCAzODc0MywgMzg3NDksIDM4NzU1LCAzODc2MiwgMzg3NjksIDM4Nzc0LCAzODc3OSwgCisgICAgMzg3ODUsIDM4NzkxLCAzODc5MywgMzg3OTYsIDM4Nzk4LCAzODgwMiwgMzg4MDYsIDM4ODEwLCAzODgxMywgMzg4MTcsIAorICAgIDM4ODIxLCAzODgyNSwgMzg4MjksIDM4ODMzLCAzODgzOSwgMzg4NDMsIDM4ODQ3LCAzODg1MywgMzg4NTgsIDM4ODY1LCAKKyAgICAzODg2NywgMzg4NzAsIDM4ODc0LCAzODg3OCwgMzg4ODMsIDM4ODg5LCAzODg5MSwgMzg5MDAsIDM4OTA5LCAzODkxMiwgCisgICAgMzg5MTYsIDM4OTE4LCAzODkyMCwgMzg5MjIsIDM4OTI1LCAzODkzMSwgMzg5MzMsIDM4OTM3LCAzODk0MSwgMzg5NDgsIAorICAgIDM4OTU1LCAzODk1OSwgMzg5NjQsIDM4OTY5LCAzODk3NCwgMzg5NzksIDM4OTgzLCAzODk4NywgMzg5OTAsIDM4OTk0LCAKKyAgICAzODk5OCwgMzkwMDUsIDM5MDEwLCAzOTAxNCwgMzkwMTgsIDM5MDIzLCAzOTAyNywgMzkwMzEsIDM5MDM2LCAzOTA0MSwgCisgICAgMzkwNDUsIDM5MDQ5LCAzOTA1MywgMzkwNTUsIDM5MDYwLCAzOTA2NSwgMzkwNjksIDM5MDczLCAzOTA3NywgMzkwODEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM5MDg1LCAzOTA5MSwgMzkwOTcsIDM5MTA0LCAzOTExMSwgMzkxMTYsIDM5MTIxLCAzOTEyNSwgMCwgMCwgCisgICAgMzkxMzEsIDM5MTM0LCAzOTEzNywgMzkxNDAsIDM5MTQzLCAzOTE0NiwgMzkxNDksIDM5MTUzLCAzOTE1NywgMzkxNjIsIAorICAgIDM5MTY3LCAzOTE3MiwgMzkxNzksIDM5MTgzLCAzOTE4NiwgMzkxODksIDM5MTkyLCAzOTE5NSwgMzkxOTgsIDM5MjAxLCAKKyAgICAzOTIwNCwgMzkyMDcsIDM5MjEwLCAzOTIxNCwgMzkyMTgsIDM5MjIzLCAzOTIyOCwgMCwgMzkyMzMsIDM5MjM5LCAzOTI0NSwgCisgICAgMzkyNTEsIDM5MjU4LCAzOTI2NSwgMzkyNzIsIDM5Mjc5LCAzOTI4NSwgMzkyOTEsIDM5Mjk4LCAzOTMwNSwgMzkzMTIsIDAsIAorICAgIDAsIDAsIDM5MzE5LCAzOTMyMiwgMzkzMjUsIDM5MzI4LCAzOTMzMywgMzkzMzYsIDM5MzM5LCAzOTM0MiwgMzkzNDUsIAorICAgIDM5MzQ4LCAzOTM1MSwgMzkzNTUsIDM5MzU4LCAzOTM2MSwgMzkzNjQsIDM5MzY3LCAzOTM3MCwgMzkzNzUsIDM5Mzc4LCAKKyAgICAzOTM4MSwgMzkzODQsIDM5Mzg3LCAzOTM5MCwgMzkzOTUsIDM5Mzk4LCAzOTQwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk0MDYsIDM5NDExLCAzOTQxNiwgMzk0MjMsIAorICAgIDM5NDMxLCAzOTQzNiwgMzk0NDEsIDM5NDQ1LCAzOTQ0OSwgMzk0NTQsIDM5NDYxLCAzOTQ2OCwgMzk0NzIsIDM5NDc3LCAKKyAgICAzOTQ4MiwgMzk0ODcsIDM5NDkyLCAzOTQ5OSwgMzk1MDQsIDM5NTA5LCAzOTUxNCwgMzk1MjMsIDM5NTMwLCAzOTUzNywgCisgICAgMzk1NDEsIDM5NTQ2LCAzOTU1MiwgMzk1NTcsIDM5NTY0LCAzOTU3MywgMzk1ODIsIDM5NTg2LCAzOTU5MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1OTQsIDM5NTk4LCAzOTYwNiwgMzk2MTAsIDM5NjE0LCAKKyAgICAzOTYxOSwgMzk2MjMsIDM5NjI3LCAzOTYzMSwgMzk2MzMsIDM5NjM3LCAzOTY0MSwgMzk2NDUsIDM5NjUwLCAzOTY1NCwgCisgICAgMzk2NTgsIDM5NjY2LCAzOTY2OSwgMzk2NzMsIDM5Njc2LCAzOTY3OSwgMzk2ODUsIDM5Njg5LCAzOTY5MiwgMzk2OTgsIAorICAgIDM5NzAyLCAzOTcwNiwgMzk3MTAsIDM5NzEzLCAzOTcxNywgMzk3MjAsIDM5NzI0LCAzOTcyNiwgMzk3MjksIDM5NzMyLCAKKyAgICAzOTczNiwgMzk3MzgsIDM5NzQyLCAzOTc0NSwgMzk3NDgsIDM5NzUzLCAzOTc1OCwgMzk3NjUsIDM5NzY4LCAzOTc3MSwgCisgICAgMzk3NzUsIDM5NzgwLCAzOTc4MywgMzk3ODYsIDM5Nzg5LCAzOTc5MywgMzk3OTgsIDM5ODAxLCAzOTgwNCwgMzk4MDYsIAorICAgIDM5ODA5LCAzOTgxMiwgMzk4MTUsIDM5ODE5LCAzOTgyNCwgMzk4MjcsIDM5ODMxLCAzOTgzNSwgMzk4MzksIDM5ODQzLCAKKyAgICAzOTg0OCwgMzk4NTQsIDM5ODU5LCAzOTg2NCwgMzk4NzAsIDM5ODc1LCAzOTg4MCwgMzk4ODQsIDM5ODg4LCAzOTg5MywgCisgICAgMzk4OTcsIDM5OTAxLCAzOTkwNCwgMzk5MDYsIDM5OTExLCAzOTkxNywgMzk5MjQsIDM5OTMxLCAzOTkzOCwgMzk5NDUsIAorICAgIDM5OTUyLCAzOTk1OSwgMzk5NjYsIDM5OTczLCAzOTk4MSwgMzk5ODgsIDM5OTk2LCA0MDAwMywgNDAwMTAsIDQwMDE4LCAKKyAgICA0MDAyNiwgNDAwMzEsIDQwMDM2LCA0MDA0MSwgNDAwNDYsIDQwMDUxLCA0MDA1NiwgNDAwNjEsIDQwMDY2LCA0MDA3MSwgCisgICAgNDAwNzYsIDQwMDgyLCA0MDA4OCwgNDAwOTQsIDQwMTAwLCA0MDEwNywgNDAxMTUsIDQwMTIyLCA0MDEyOCwgNDAxMzQsIAorICAgIDQwMTQwLCA0MDE0NiwgNDAxNTIsIDQwMTU4LCA0MDE2NCwgNDAxNzAsIDQwMTc2LCA0MDE4MywgNDAxOTAsIDQwMTk3LCAKKyAgICA0MDIwNCwgNDAyMTIsIDQwMjIxLCA0MDIyOSwgNDAyNDAsIDQwMjQ4LCA0MDI1NiwgNDAyNjUsIDQwMjcyLCA0MDI4MSwgCisgICAgNDAyOTAsIDQwMjk4LCA0MDMwNywgMCwgMCwgMCwgMCwgMCwgMCwgNDAzMTUsIDQwMzE3LCA0MDMyMCwgNDAzMjIsIDQwMzI1LCAKKyAgICA0MDMyOCwgNDAzMzEsIDQwMzM2LCA0MDM0MSwgNDAzNDYsIDQwMzUxLCA0MDM1NSwgNDAzNTksIDQwMzYzLCA0MDM2NywgCisgICAgNDAzNzIsIDQwMzc4LCA0MDM4MywgNDAzODksIDQwMzk0LCA0MDM5OSwgNDA0MDQsIDQwNDEwLCA0MDQxNSwgNDA0MjEsIAorICAgIDQwNDI3LCA0MDQzMSwgNDA0MzUsIDQwNDQwLCA0MDQ0NSwgNDA0NTAsIDQwNDU1LCA0MDQ2MCwgNDA0NjgsIDQwNDc2LCAKKyAgICA0MDQ4NCwgNDA0OTIsIDQwNDk5LCA0MDUwNywgNDA1MTQsIDQwNTIxLCA0MDUzMCwgNDA1NDIsIDQwNTQ4LCA0MDU1NCwgCisgICAgNDA1NjIsIDQwNTcwLCA0MDU3OSwgNDA1ODgsIDQwNTk2LCA0MDYwNCwgNDA2MTMsIDQwNjIyLCA0MDYyNywgNDA2MzUsIAorICAgIDQwNjQwLCA0MDY0NSwgNDA2NTEsIDQwNjU2LCA0MDY2MiwgNDA2NjksIDQwNjc2LCA0MDY4MSwgNDA2ODcsIDQwNjkyLCAKKyAgICA0MDY5NSwgNDA2OTksIDQwNzAyLCA0MDcwNiwgNDA3MTAsIDQwNzE0LCA0MDcyMCwgNDA3MjYsIDQwNzMyLCA0MDczOCwgCisgICAgNDA3NDIsIDQwNzQ2LCA0MDc1MCwgNDA3NTQsIDQwNzYwLCA0MDc2NiwgNDA3NzAsIDQwNzc1LCA0MDc3OSwgNDA3ODQsIAorICAgIDQwNzg5LCA0MDc5NCwgNDA3OTcsIDQwODAxLCA0MDgwNCwgNDA4MDgsIDQwODE1LCA0MDgyMywgNDA4MzQsIDQwODQ1LCAKKyAgICA0MDg1MCwgNDA4NTksIDQwODY2LCA0MDg3NSwgNDA4ODQsIDQwODg4LCA0MDg5NCwgNDA5MDIsIDQwOTA2LCA0MDkxMSwgCisgICAgNDA5MTYsIDQwOTIyLCA0MDkyOCwgNDA5MzQsIDQwOTQxLCA0MDk0NSwgNDA5NDksIDQwOTU0LCA0MDk1NywgNDA5NTksIAorICAgIDQwOTYzLCA0MDk2NywgNDA5NzUsIDQwOTc5LCA0MDk4MSwgNDA5ODMsIDQwOTg3LCA0MDk5NSwgNDEwMDAsIDQxMDA2LCAKKyAgICA0MTAxNiwgNDEwMjMsIDQxMDI4LCA0MTAzMiwgNDEwMzYsIDQxMDQwLCA0MTA0MywgNDEwNDYsIDQxMDQ5LCA0MTA1MywgCisgICAgNDEwNTcsIDQxMDYxLCA0MTA2NSwgNDEwNjksIDQxMDcyLCA0MTA3NiwgNDEwODAsIDQxMDgzLCA0MTA4NSwgNDEwODgsIAorICAgIDQxMDkwLCA0MTA5NCwgNDEwOTgsIDQxMTAwLCA0MTEwNiwgNDExMDksIDQxMTE0LCA0MTExOCwgNDExMjIsIDQxMTI0LCAKKyAgICA0MTEyNiwgNDExMjgsIDQxMTMxLCA0MTEzNSwgNDExMzksIDQxMTQzLCA0MTE0NywgNDExNTEsIDQxMTU3LCA0MTE2MywgCisgICAgNDExNjUsIDQxMTY3LCA0MTE2OSwgNDExNzEsIDQxMTc0LCA0MTE3NiwgNDExODAsIDQxMTgyLCA0MTE4NiwgNDExODksIAorICAgIDQxMTk1LCA0MTE5OSwgNDEyMDMsIDQxMjA2LCA0MTIwOSwgNDEyMTMsIDQxMjE5LCA0MTIyMywgNDEyMzMsIDQxMjQzLCAKKyAgICA0MTI0NywgNDEyNTMsIDQxMjU5LCA0MTI2MiwgNDEyNjYsIDQxMjY5LCA0MTI3NCwgNDEyNzgsIDQxMjg0LCA0MTI4OCwgCisgICAgNDEzMDAsIDQxMzA4LCA0MTMxMiwgNDEzMTYsIDQxMzIyLCA0MTMyNiwgNDEzMjksIDQxMzMxLCA0MTMzNCwgNDEzMzgsIAorICAgIDQxMzQyLCA0MTM0OSwgNDEzNTMsIDQxMzU3LCA0MTM2MSwgNDEzNjQsIDQxMzY5LCA0MTM3NCwgNDEzNzksIDQxMzg0LCAKKyAgICA0MTM4OSwgNDEzOTQsIDQxNDAyLCA0MTQxMCwgNDE0MTQsIDQxNDE4LCA0MTQyMCwgNDE0MjUsIDQxNDI5LCA0MTQzMywgCisgICAgNDE0NDEsIDQxNDQ5LCA0MTQ1NSwgNDE0NjEsIDQxNDcwLCA0MTQ3OSwgNDE0ODQsIDQxNDg5LCA0MTQ5NywgNDE1MDUsIAorICAgIDQxNTA3LCA0MTUwOSwgNDE1MTQsIDQxNTE5LCA0MTUyNSwgNDE1MzEsIDQxNTM3LCA0MTU0MywgNDE1NDcsIDQxNTUxLCAKKyAgICA0MTU1OCwgNDE1NjUsIDQxNTcxLCA0MTU3NywgNDE1ODcsIDQxNTk3LCA0MTYwNSwgNDE2MTMsIDQxNjE1LCA0MTYxOSwgCisgICAgNDE2MjMsIDQxNjI4LCA0MTYzMywgNDE2NDAsIDQxNjQ3LCA0MTY1MCwgNDE2NTMsIDQxNjU2LCA0MTY1OSwgNDE2NjIsIAorICAgIDQxNjY3LCA0MTY3MSwgNDE2NzYsIDQxNjgxLCA0MTY4NCwgNDE2ODcsIDQxNjkwLCA0MTY5MywgNDE2OTYsIDQxNzAwLCAKKyAgICA0MTcwMywgNDE3MDYsIDQxNzA5LCA0MTcxMiwgNDE3MTQsIDQxNzE2LCA0MTcxOCwgNDE3MjAsIDQxNzI4LCA0MTczNiwgCisgICAgNDE3NDIsIDQxNzQ2LCA0MTc1MiwgNDE3NjIsIDQxNzY4LCA0MTc3NCwgNDE3ODAsIDQxNzg4LCA0MTc5NiwgNDE4MDcsIAorICAgIDQxODExLCA0MTgxNSwgNDE4MTcsIDQxODIzLCA0MTgyNSwgNDE4MjcsIDQxODI5LCA0MTgzMSwgNDE4MzcsIDQxODQwLCAKKyAgICA0MTg0NiwgNDE4NTIsIDQxODU2LCA0MTg2MCwgNDE4NjQsIDQxODY3LCA0MTg3MSwgNDE4NzUsIDQxODc3LCA0MTg4NiwgCisgICAgNDE4OTUsIDQxOTAwLCA0MTkwNSwgNDE5MTEsIDQxOTE3LCA0MTkyMywgNDE5MjYsIDQxOTI5LCA0MTkzMiwgNDE5MzUsIAorICAgIDQxOTM3LCA0MTk0MiwgNDE5NDcsIDQxOTUyLCA0MTk1OCwgNDE5NjQsIDQxOTcyLCA0MTk4MCwgNDE5ODYsIDQxOTkyLCAKKyAgICA0MTk5OCwgNDIwMDQsIDQyMDEzLCA0MjAyMiwgNDIwMzEsIDQyMDQwLCA0MjA0OSwgNDIwNTgsIDQyMDY3LCA0MjA3NiwgCisgICAgNDIwODUsIDQyMDk0LCA0MjEwMiwgNDIxMTQsIDQyMTI0LCA0MjEzOSwgNDIxNDIsIDQyMTQ3LCA0MjE1MywgNDIxNTksIAorICAgIDQyMTY2LCA0MjE4MCwgNDIxOTUsIDQyMjAxLCA0MjIwNywgNDIyMTQsIDQyMjIwLCA0MjIyOCwgNDIyMzQsIDQyMjQ3LCAKKyAgICA0MjI2MSwgNDIyNjYsIDQyMjcyLCA0MjI3OSwgNDIyODIsIDQyMjg1LCA0MjI4NywgNDIyOTAsIDQyMjkzLCA0MjI5NSwgCisgICAgNDIyOTcsIDQyMzAxLCA0MjMwNCwgNDIzMDcsIDQyMzEwLCA0MjMxMywgNDIzMTgsIDQyMzIzLCA0MjMyOCwgNDIzMzMsIAorICAgIDQyMzM4LCA0MjM0MSwgNDIzNDMsIDQyMzQ1LCA0MjM0NywgNDIzNTEsIDQyMzU1LCA0MjM1OSwgNDIzNjUsIDQyMzcwLCAKKyAgICA0MjM3MiwgNDIzNzQsIDQyMzc5LCA0MjM4NCwgNDIzODksIDQyMzk0LCA0MjM5OSwgNDI0MDQsIDQyNDA2LCA0MjQwOCwgCisgICAgNDI0MTcsIDQyNDIxLCA0MjQyOSwgNDI0MzgsIDQyNDQwLCA0MjQ0NSwgNDI0NTAsIDQyNDU4LCA0MjQ2MiwgNDI0NjQsIAorICAgIDQyNDY4LCA0MjQ3MCwgNDI0NzQsIDQyNDc4LCA0MjQ4MiwgNDI0ODQsIDQyNDg2LCA0MjQ4OCwgNDI0OTUsIDQyNTA0LCAKKyAgICA0MjUxMywgNDI1MjIsIDQyNTMxLCA0MjU0MCwgNDI1NDksIDQyNTU4LCA0MjU2NywgNDI1NzUsIDQyNTgzLCA0MjU5MiwgCisgICAgNDI2MDEsIDQyNjEwLCA0MjYxOSwgNDI2MjcsIDQyNjM1LCA0MjY0NCwgNDI2NTMsIDQyNjYyLCA0MjY3MiwgNDI2ODEsIAorICAgIDQyNjkxLCA0MjcwMCwgNDI3MTAsIDQyNzE5LCA0MjcyOSwgNDI3MzksIDQyNzQ4LCA0Mjc1OCwgNDI3NjcsIDQyNzc3LCAKKyAgICA0Mjc4NiwgNDI3OTYsIDQyODA1LCA0MjgxNCwgNDI4MjMsIDQyODMyLCA0Mjg0MSwgNDI4NTEsIDQyODYwLCA0Mjg2OSwgCisgICAgNDI4NzgsIDQyODg4LCA0Mjg5NywgNDI5MDYsIDQyOTE1LCA0MjkyNCwgNDI5MzQsIDQyOTQ0LCA0Mjk1MywgNDI5NjIsIAorICAgIDQyOTcwLCA0Mjk3OCwgNDI5ODUsIDQyOTkzLCA0MzAwMiwgNDMwMTMsIDQzMDIyLCA0MzAzMSwgNDMwNDAsIDQzMDQ3LCAKKyAgICA0MzA1NCwgNDMwNjEsIDQzMDcwLCA0MzA3OSwgNDMwODgsIDQzMDk3LCA0MzEwNCwgNDMxMDksIDQzMTE4LCA0MzEyMywgCisgICAgNDMxMjYsIDQzMTM0LCA0MzEzNywgNDMxNDIsIDQzMTQ3LCA0MzE1MCwgNDMxNTMsIDQzMTYxLCA0MzE2NCwgNDMxNjksIAorICAgIDQzMTcyLCA0MzE3OSwgNDMxODQsIDQzMTkyLCA0MzE5NSwgNDMxOTgsIDQzMjAxLCA0MzIwNiwgNDMyMTEsIDQzMjE0LCAKKyAgICA0MzIxNywgNDMyMjUsIDQzMjI4LCA0MzIzNSwgNDMyNDIsIDQzMjQ2LCA0MzI1MCwgNDMyNTUsIDQzMjYwLCA0MzI2NiwgCisgICAgNDMyNzEsIDQzMjc3LCA0MzI4MywgNDMyODgsIDQzMjk0LCA0MzMwMiwgNDMzMDgsIDQzMzE2LCA0MzMyNCwgNDMzMzAsIAorICAgIDQzMzM4LCA0MzM0NiwgNDMzNTUsIDQzMzYzLCA0MzM2OSwgNDMzNzcsIDQzMzg2LCA0MzM5NCwgNDMzOTgsIDQzNDAzLCAKKyAgICA0MzQxNiwgNDM0MjksIDQzNDMzLCA0MzQzNywgNDM0NDEsIDQzNDQ1LCA0MzQ1NSwgNDM0NTksIDQzNDY0LCA0MzQ2OSwgCisgICAgNDM0NzQsIDQzNDc5LCA0MzQ4NCwgNDM0ODksIDQzNDk5LCA0MzUwOSwgNDM1MTcsIDQzNTI3LCA0MzUzNywgNDM1NDUsIAorICAgIDQzNTU1LCA0MzU2NSwgNDM1NzMsIDQzNTgzLCA0MzU5MywgNDM2MDEsIDQzNjA5LCA0MzYxOSwgNDM2MjksIDQzNjMyLCAKKyAgICA0MzYzNSwgNDM2MzgsIDQzNjQzLCA0MzY0NywgNDM2NTMsIDQzNjYwLCA0MzY2NywgNDM2NzUsIDQzNjgyLCA0MzY4NiwgCisgICAgNDM2OTAsIDQzNjk0LCA0MzY5OCwgNDM3MDAsIDQzNzA0LCA0MzcwOCwgNDM3MTMsIDQzNzE4LCA0MzcyNSwgNDM3MzIsIAorICAgIDQzNzM1LCA0Mzc0MiwgNDM3NDQsIDQzNzQ2LCA0Mzc1MCwgNDM3NTQsIDQzNzU5LCA0Mzc2NSwgNDM3NzEsIDQzNzc3LCAKKyAgICA0Mzc4MywgNDM3OTIsIDQzODAxLCA0MzgxMCwgNDM4MTQsIDQzODE2LCA0MzgyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDM4MjcsIDQzODMxLCA0MzgzOCwgNDM4NDUsIDQzODUyLCA0Mzg1OSwgNDM4NjMsIDQzODY3LCAKKyAgICA0Mzg3MSwgNDM4NzUsIDQzODgwLCA0Mzg4NiwgNDM4OTEsIDQzODk3LCA0MzkwMywgNDM5MDksIDQzOTE1LCA0MzkyMywgCisgICAgNDM5MzAsIDQzOTM3LCA0Mzk0NCwgNDM5NTEsIDQzOTU2LCA0Mzk2MiwgNDM5NzEsIDQzOTc1LCA0Mzk4MiwgNDM5ODYsIAorICAgIDQzOTkwLCA0Mzk5NiwgNDQwMDIsIDQ0MDA4LCA0NDAxNCwgNDQwMTgsIDQ0MDIyLCA0NDAyNSwgNDQwMjgsIDQ0MDMyLCAKKyAgICA0NDAzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDQwNDYsIDQ0MDQ5LCA0NDA1MywgNDQwNTcsIDQ0MDYzLCA0NDA2OSwgNDQwNzUsIDQ0MDgzLCA0NDA5MCwgCisgICAgNDQwOTQsIDQ0MTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NDEwNywgNDQxMTAsIDQ0MTEzLCA0NDExNiwgNDQxMTksIDQ0MTIyLCA0NDEyNSwgNDQxMjgsIDQ0MTMxLCA0NDEzNCwgCisgICAgNDQxMzgsIDQ0MTQyLCA0NDE0NiwgNDQxNTAsIDQ0MTU0LCA0NDE1OCwgNDQxNjIsIDQ0MTY2LCA0NDE3MCwgNDQxNzQsIAorICAgIDQ0MTc4LCA0NDE4MSwgNDQxODQsIDQ0MTg3LCA0NDE5MCwgNDQxOTMsIDQ0MTk2LCA0NDE5OSwgNDQyMDIsIDQ0MjA1LCAKKyAgICA0NDIwOSwgNDQyMTMsIDQ0MjE3LCA0NDIyMSwgNDQyMjUsIDQ0MjI5LCA0NDIzMywgNDQyMzcsIDQ0MjQxLCA0NDI0NSwgCisgICAgNDQyNDksIDQ0MjU1LCA0NDI2MSwgNDQyNjcsIDQ0Mjc0LCA0NDI4MSwgNDQyODgsIDQ0Mjk1LCA0NDMwMiwgNDQzMDksIAorICAgIDQ0MzE2LCA0NDMyMywgNDQzMzAsIDQ0MzM3LCA0NDM0NCwgNDQzNTEsIDQ0MzU4LCA0NDM2NSwgNDQzNzIsIDQ0Mzc5LCAKKyAgICA0NDM4NiwgNDQzOTEsIDQ0Mzk3LCA0NDQwMywgNDQ0MDksIDQ0NDE0LCA0NDQyMCwgNDQ0MjYsIDQ0NDMyLCA0NDQzNywgCisgICAgNDQ0NDMsIDQ0NDQ5LCA0NDQ1NCwgNDQ0NTksIDQ0NDY1LCA0NDQ3MCwgNDQ0NzYsIDQ0NDgyLCA0NDQ4NywgNDQ0OTMsIAorICAgIDQ0NDk5LCA0NDUwNCwgNDQ1MTAsIDQ0NTE2LCA0NDUyMiwgNDQ1MjgsIDQ0NTM0LCA0NDUzOSwgNDQ1NDUsIDQ0NTUxLCAKKyAgICA0NDU1NywgNDQ1NjIsIDQ0NTY4LCA0NDU3NCwgNDQ1ODAsIDQ0NTg1LCA0NDU5MSwgNDQ1OTcsIDQ0NjAyLCA0NDYwNywgCisgICAgNDQ2MTMsIDQ0NjE4LCA0NDYyNCwgNDQ2MzAsIDQ0NjM1LCA0NDY0MSwgNDQ2NDcsIDQ0NjUyLCA0NDY1OCwgNDQ2NjQsIAorICAgIDQ0NjcwLCA0NDY3NiwgNDQ2ODIsIDQ0Njg3LCA0NDY5MywgNDQ2OTksIDQ0NzA1LCA0NDcxMCwgNDQ3MTYsIDQ0NzIyLCAKKyAgICA0NDcyOCwgNDQ3MzMsIDQ0NzM5LCA0NDc0NSwgNDQ3NTAsIDQ0NzU1LCA0NDc2MSwgNDQ3NjYsIDQ0NzcyLCA0NDc3OCwgCisgICAgNDQ3ODMsIDQ0Nzg5LCA0NDc5NSwgNDQ4MDAsIDQ0ODA2LCA0NDgxMiwgNDQ4MTgsIDQ0ODI0LCA0NDgzMCwgNDQ4MzQsIAorICAgIDQ0ODM5LCA0NDg0NCwgNDQ4NDksIDQ0ODU0LCA0NDg1OSwgNDQ4NjQsIDQ0ODY5LCA0NDg3NCwgNDQ4NzksIDQ0ODg0LCAKKyAgICA0NDg4OCwgNDQ4OTIsIDQ0ODk2LCA0NDkwMCwgNDQ5MDQsIDQ0OTA4LCA0NDkxMiwgNDQ5MTYsIDQ0OTIwLCA0NDkyNSwgCisgICAgNDQ5MzAsIDQ0OTM1LCA0NDk0MCwgNDQ5NDUsIDQ0OTUwLCA0NDk1OSwgNDQ5NjgsIDQ0OTc3LCA0NDk4NiwgNDQ5OTUsIAorICAgIDQ1MDA0LCA0NTAxMywgNDUwMjIsIDQ1MDI5LCA0NTAzNywgNDUwNDUsIDQ1MDUyLCA0NTA1OSwgNDUwNjcsIDQ1MDc1LCAKKyAgICA0NTA4MiwgNDUwODksIDQ1MDk3LCA0NTEwNSwgNDUxMTIsIDQ1MTE5LCA0NTEyNywgNDUxMzUsIDQ1MTQyLCA0NTE0OSwgCisgICAgNDUxNTcsIDQ1MTY2LCA0NTE3NSwgNDUxODMsIDQ1MTkyLCA0NTIwMSwgNDUyMDgsIDQ1MjE1LCA0NTIyMywgNDUyMzIsIAorICAgIDQ1MjQxLCA0NTI0OSwgNDUyNTgsIDQ1MjY3LCA0NTI3NCwgNDUyODEsIDQ1MjkwLCA0NTI5OSwgNDUzMDcsIDQ1MzE1LCAKKyAgICA0NTMyNCwgNDUzMzMsIDQ1MzQwLCA0NTM0NywgNDUzNTYsIDQ1MzY1LCA0NTM3MywgNDUzODEsIDQ1MzkwLCA0NTM5OSwgCisgICAgNDU0MDYsIDQ1NDEzLCA0NTQyMiwgNDU0MzEsIDQ1NDM5LCA0NTQ0OCwgNDU0NTcsIDQ1NDY1LCA0NTQ3NSwgNDU0ODUsIAorICAgIDQ1NDk1LCA0NTUwNSwgNDU1MTQsIDQ1NTIzLCA0NTUzMiwgNDU1NDEsIDQ1NTQ4LCA0NTU1NiwgNDU1NjQsIDQ1NTcyLCAKKyAgICA0NTU4MCwgNDU1ODUsIDQ1NTkwLCA0NTU5OSwgNDU2MDcsIDQ1NjE0LCA0NTYyMywgNDU2MzEsIDQ1NjM4LCA0NTY0NywgCisgICAgNDU2NTUsIDQ1NjYyLCA0NTY3MSwgNDU2NzksIDQ1Njg2LCA0NTY5NSwgNDU3MDMsIDQ1NzEwLCA0NTcxOSwgNDU3MjcsIAorICAgIDQ1NzM0LCA0NTc0MywgNDU3NTEsIDQ1NzU4LCA0NTc2NywgNDU3NzUsIDQ1NzgyLCA0NTc5MSwgNDU3OTksIDQ1ODA2LCAKKyAgICA0NTgxNSwgNDU4MjQsIDQ1ODMzLCA0NTg0MiwgNDU4NTYsIDQ1ODcwLCA0NTg3NywgNDU4ODIsIDQ1ODg3LCA0NTg5MiwgCisgICAgNDU4OTcsIDQ1OTAyLCA0NTkwNywgNDU5MTIsIDQ1OTE3LCA0NTkyNSwgNDU5MzMsIDQ1OTQxLCA0NTk0OSwgNDU5NTQsIAorICAgIDQ1OTYxLCA0NTk2OCwgNDU5NzUsIDQ1OTgwLCA0NTk4OCwgNDU5OTUsIDQ2MDAzLCA0NjAwNywgNDYwMTQsIDQ2MDIwLCAKKyAgICA0NjAyNywgNDYwMzEsIDQ2MDM3LCA0NjA0MywgNDYwNDksIDQ2MDUzLCA0NjA1NiwgNDYwNjAsIDQ2MDY0LCA0NjA3MSwgCisgICAgNDYwNzcsIDQ2MDgzLCA0NjA4OSwgNDYwOTUsIDQ2MTA5LCA0NjExOSwgNDYxMzMsIDQ2MTQ3LCA0NjE1MywgNDYxNjMsIAorICAgIDQ2MTc3LCA0NjE4MCwgNDYxODMsIDQ2MTkwLCA0NjE5OCwgNDYyMDMsIDQ2MjA4LCA0NjIxNiwgNDYyMjgsIDQ2MjQwLCAKKyAgICA0NjI0OCwgNDYyNTIsIDQ2MjU2LCA0NjI1OSwgNDYyNjIsIDQ2MjY2LCA0NjI3MCwgNDYyNzMsIDQ2Mjc2LCA0NjI4MSwgCisgICAgNDYyODYsIDQ2MjkyLCA0NjI5OCwgNDYzMDMsIDQ2MzA4LCA0NjMxNCwgNDYzMjAsIDQ2MzI1LCA0NjMzMCwgNDYzMzUsIAorICAgIDQ2MzQwLCA0NjM0NiwgNDYzNTIsIDQ2MzU3LCA0NjM2MiwgNDYzNjgsIDQ2Mzc0LCA0NjM3OSwgNDYzODQsIDQ2Mzg3LCAKKyAgICA0NjM5MCwgNDYzOTksIDQ2NDAxLCA0NjQwMywgNDY0MDYsIDQ2NDEwLCA0NjQxNiwgNDY0MTgsIDQ2NDIxLCA0NjQyOCwgCisgICAgNDY0MzUsIDQ2NDQzLCA0NjQ1MSwgNDY0NjEsIDQ2NDc1LCA0NjQ4MCwgNDY0ODUsIDQ2NDg5LCA0NjQ5NCwgNDY1MDIsIAorICAgIDQ2NTEwLCA0NjUxOSwgNDY1MjgsIDQ2NTM3LCA0NjU0NiwgNDY1NTEsIDQ2NTU2LCA0NjU2MiwgNDY1NjgsIDQ2NTc0LCAKKyAgICA0NjU4MCwgNDY1ODMsIDQ2NTg5LCA0NjU5NSwgNDY2MDUsIDQ2NjE1LCA0NjYyMywgNDY2MzEsIDQ2NjQwLCA0NjY0OSwgCisgICAgNDY2NTMsIDQ2NjYxLCA0NjY2OSwgNDY2NzcsIDQ2Njg1LCA0NjY5NCwgNDY3MDMsIDQ2NzEyLCA0NjcyMSwgNDY3MjYsIAorICAgIDQ2NzMxLCA0NjczNiwgNDY3NDEsIDQ2NzQ2LCA0Njc1MiwgNDY3NTgsIDQ2NzYzLCA0Njc2OSwgNDY3NzEsIDQ2NzczLCAKKyAgICA0Njc3NSwgNDY3NzcsIDQ2NzgwLCA0Njc4MywgNDY3ODUsIDQ2Nzg3LCA0Njc4OSwgNDY3OTMsIDQ2Nzk3LCA0Njc5OSwgCisgICAgNDY4MDEsIDQ2ODA0LCA0NjgwNywgNDY4MTEsIDQ2ODE3LCA0NjgyMywgNDY4MjUsIDQ2ODMyLCA0NjgzNiwgNDY4NDEsIAorICAgIDQ2ODQ2LCA0Njg0OCwgNDY4NTgsIDQ2ODY0LCA0Njg3MCwgNDY4NzYsIDQ2ODgyLCA0Njg4OCwgNDY4OTQsIDQ2ODk5LCAKKyAgICA0NjkwMiwgNDY5MDUsIDQ2OTA4LCA0NjkxMCwgNDY5MTIsIDQ2OTE2LCA0NjkyMCwgNDY5MjUsIDQ2OTMwLCA0NjkzNSwgCisgICAgNDY5MzgsIDQ2OTQyLCA0Njk0NywgNDY5NTAsIDQ2OTU0LCA0Njk1OSwgNDY5NjQsIDQ2OTY5LCA0Njk3NCwgNDY5NzksIAorICAgIDQ2OTg0LCA0Njk4OSwgNDY5OTQsIDQ2OTk5LCA0NzAwNCwgNDcwMDksIDQ3MDE0LCA0NzAyMCwgNDcwMjYsIDQ3MDMyLCAKKyAgICA0NzAzNCwgNDcwMzcsIDQ3MDM5LCA0NzA0MiwgNDcwNDQsIDQ3MDQ2LCA0NzA0OCwgNDcwNTAsIDQ3MDUyLCA0NzA1NCwgCisgICAgNDcwNTYsIDQ3MDU4LCA0NzA2MCwgNDcwNjIsIDQ3MDY0LCA0NzA2NiwgNDcwNjgsIDQ3MDcwLCA0NzA3MiwgNDcwNzQsIAorICAgIDQ3MDc2LCA0NzA4MSwgNDcwODYsIDQ3MDkxLCA0NzA5NiwgNDcxMDEsIDQ3MTA2LCA0NzExMSwgNDcxMTYsIDQ3MTIxLCAKKyAgICA0NzEyNiwgNDcxMzEsIDQ3MTM2LCA0NzE0MSwgNDcxNDYsIDQ3MTUxLCA0NzE1NiwgNDcxNjEsIDQ3MTY2LCA0NzE3MSwgCisgICAgNDcxNzYsIDQ3MTgwLCA0NzE4NCwgNDcxODgsIDQ3MTk0LCA0NzIwMCwgNDcyMDUsIDQ3MjEwLCA0NzIxNSwgNDcyMjAsIAorICAgIDQ3MjI1LCA0NzIzMCwgNDcyMzgsIDQ3MjQ2LCA0NzI1NCwgNDcyNjIsIDQ3MjcwLCA0NzI3OCwgNDcyODYsIDQ3Mjk0LCAKKyAgICA0NzMwMCwgNDczMDUsIDQ3MzEwLCA0NzMxNSwgNDczMTgsIDQ3MzIyLCA0NzMyNiwgNDczMzAsIDQ3MzM0LCA0NzMzOCwgCisgICAgNDczNDIsIDQ3MzQ5LCA0NzM1NiwgNDczNjQsIDQ3MzcyLCA0NzM3NywgNDczODIsIDQ3Mzg5LCA0NzM5NiwgNDc0MDMsIAorICAgIDQ3NDEwLCA0NzQxMywgNDc0MTYsIDQ3NDIxLCA0NzQyMywgNDc0MjcsIDQ3NDMyLCA0NzQzNCwgNDc0MzYsIDQ3NDM4LCAKKyAgICA0NzQ0MCwgNDc0NDUsIDQ3NDQ4LCA0NzQ1MCwgNDc0NTUsIDQ3NDYyLCA0NzQ2OSwgNDc0NzIsIDQ3NDc2LCA0NzQ4MSwgCisgICAgNDc0ODYsIDQ3NDk0LCA0NzUwMCwgNDc1MDYsIDQ3NTE4LCA0NzUyNSwgNDc1MzIsIDQ3NTM3LCA0NzU0MiwgNDc1NDgsIAorICAgIDQ3NTUxLCA0NzU1NCwgNDc1NTksIDQ3NTYxLCA0NzU2NSwgNDc1NjcsIDQ3NTY5LCA0NzU3MSwgNDc1NzMsIDQ3NTc1LCAKKyAgICA0NzU3NywgNDc1ODIsIDQ3NTg0LCA0NzU4NiwgNDc1ODgsIDQ3NTkwLCA0NzU5NCwgNDc1OTYsIDQ3NTk5LCA0NzYwNCwgCisgICAgNDc2MDksIDQ3NjE0LCA0NzYxOSwgNDc2MjUsIDQ3NjMxLCA0NzYzMywgNDc2MzYsIDQ3NjQzLCA0NzY1MCwgNDc2NTcsIAorICAgIDQ3NjY0LCA0NzY2OCwgNDc2NzIsIDQ3Njc0LCA0NzY3NiwgNDc2ODAsIDQ3Njg2LCA0NzY5MSwgNDc2OTMsIDQ3Njk3LCAKKyAgICA0NzcwNiwgNDc3MTQsIDQ3NzIyLCA0NzcyOCwgNDc3MzQsIDQ3NzM5LCA0Nzc0NSwgNDc3NTAsIDQ3NzUzLCA0Nzc2NywgCisgICAgNDc3NzAsIDQ3Nzc1LCA0Nzc4MCwgNDc3ODYsIDQ3Nzk2LCA0Nzc5OCwgNDc4MDQsIDQ3ODEwLCA0NzgxNCwgNDc4MjEsIAorICAgIDQ3ODI1LCA0NzgyNywgNDc4MjksIDQ3ODMzLCA0NzgzOSwgNDc4NDQsIDQ3ODUwLCA0Nzg1MiwgNDc4NTgsIDQ3ODYwLCAKKyAgICA0Nzg2NiwgNDc4NjgsIDQ3ODcwLCA0Nzg3NSwgNDc4NzcsIDQ3ODgxLCA0Nzg4NiwgNDc4ODgsIDQ3ODkzLCA0Nzg5OCwgCisgICAgNDc5MDIsIDQ3OTA5LCAwLCA0NzkxOSwgNDc5MjUsIDQ3OTI4LCA0NzkzNCwgNDc5MzcsIDQ3OTQyLCA0Nzk0NywgNDc5NTEsIAorICAgIDQ3OTUzLCA0Nzk1NSwgNDc5NTksIDQ3OTYzLCA0Nzk2NywgNDc5NzEsIDQ3OTc2LCA0Nzk3OCwgNDc5ODMsIDQ3OTg2LCAKKyAgICA0Nzk4OSwgNDc5OTIsIDQ3OTk2LCA0ODAwMCwgNDgwMDUsIDQ4MDA5LCA0ODAxNCwgNDgwMTksIDQ4MDIzLCA0ODAyOCwgCisgICAgNDgwMzQsIDQ4MDM3LCA0ODA0MywgNDgwNDgsIDQ4MDUyLCA0ODA1NywgNDgwNjMsIDQ4MDY5LCA0ODA3NiwgNDgwODIsIAorICAgIDQ4MDg5LCA0ODA5NiwgNDgwOTgsIDQ4MTA1LCA0ODEwOSwgNDgxMTUsIDQ4MTIxLCA0ODEyNiwgNDgxMzIsIDQ4MTM2LCAKKyAgICA0ODE0MSwgNDgxNDQsIDQ4MTQ5LCA0ODE1NSwgNDgxNjIsIDQ4MTcwLCA0ODE3NywgNDgxODYsIDQ4MTk2LCA0ODIwMywgCisgICAgNDgyMDksIDQ4MjEzLCA0ODIyMCwgNDgyMjUsIDQ4MjM0LCA0ODIzNywgNDgyNDAsIDQ4MjQ5LCA0ODI1OSwgNDgyNjYsIAorICAgIDQ4MjY4LCA0ODI3NCwgNDgyNzksIDQ4MjgxLCA0ODI4NCwgNDgyODgsIDQ4Mjk2LCA0ODMwNSwgNDgzMDgsIDQ4MzEzLCAKKyAgICA0ODMxOCwgNDgzMjYsIDQ4MzM0LCA0ODM0MiwgNDgzNTAsIDQ4MzU2LCA0ODM2MiwgNDgzNjgsIDQ4Mzc2LCA0ODM4MSwgCisgICAgNDgzODQsIDQ4Mzg4LCA0ODM5MSwgNDg0MDMsIDQ4NDEzLCA0ODQyNCwgNDg0MzMsIDQ4NDQ0LCA0ODQ1NCwgNDg0NjMsIAorICAgIDQ4NDY5LCA0ODQ3NywgNDg0ODEsIDQ4NDg5LCA0ODQ5MywgNDg1MDEsIDQ4NTA4LCA0ODUxNSwgNDg1MjQsIDQ4NTMzLCAKKyAgICA0ODU0MywgNDg1NTMsIDQ4NTYzLCA0ODU3MywgNDg1ODIsIDQ4NTkxLCA0ODYwMSwgNDg2MTEsIDQ4NjIwLCA0ODYyOSwgCisgICAgNDg2MzUsIDQ4NjQxLCA0ODY0NywgNDg2NTMsIDQ4NjU5LCA0ODY2NSwgNDg2NzEsIDQ4Njc3LCA0ODY4MywgNDg2OTAsIAorICAgIDQ4Njk2LCA0ODcwMiwgNDg3MDgsIDQ4NzE0LCA0ODcyMCwgNDg3MjYsIDQ4NzMyLCA0ODczOCwgNDg3NDQsIDQ4NzUxLCAKKyAgICA0ODc1OCwgNDg3NjUsIDQ4NzcyLCA0ODc3OSwgNDg3ODYsIDQ4NzkzLCA0ODgwMCwgNDg4MDcsIDQ4ODE0LCA0ODgyMiwgCisgICAgNDg4MjcsIDQ4ODMwLCA0ODgzNCwgNDg4MzgsIDQ4ODQ0LCA0ODg0NywgNDg4NTMsIDQ4ODU5LCA0ODg2NCwgNDg4NjgsIAorICAgIDQ4ODczLCA0ODg3OSwgNDg4ODYsIDQ4ODg5LCA0ODg5NiwgNDg5MDMsIDQ4OTA3LCA0ODkxNiwgNDg5MjUsIDQ4OTMwLCAKKyAgICA0ODkzNiwgNDg5NDEsIDQ4OTQ2LCA0ODk1MywgNDg5NjAsIDQ4OTY4LCA0ODk3NiwgNDg5ODUsIDQ4OTg5LCA0ODk5OCwgCisgICAgNDkwMDMsIDQ5MDA3LCA0OTAxNCwgNDkwMTgsIDQ5MDI1LCA0OTAzMywgNDkwMzgsIDQ5MDQ2LCA0OTA1MCwgNDkwNTUsIAorICAgIDQ5MDU5LCA0OTA2NCwgNDkwNjgsIDQ5MDczLCA0OTA3OCwgNDkwODcsIDQ5MDg5LCA0OTA5MiwgNDkwOTUsIDQ5MTAyLCAKKyAgICA0OTEwOSwgNDkxMTQsIDQ5MTIyLCA0OTEyOCwgNDkxMzQsIDQ5MTM5LCA0OTE0MiwgNDkxNDcsIDQ5MTUyLCA0OTE1NywgCisgICAgNDkxNjUsIDQ5MTY5LCA0OTE3NiwgNDkxODQsIDQ5MTkyLCA0OTE5NywgNDkyMDIsIDQ5MjA4LCA0OTIxMywgNDkyMTgsIAorICAgIDQ5MjI0LCA0OTIyOSwgNDkyMzIsIDQ5MjM2LCA0OTI0MCwgNDkyNDcsIDQ5MjU2LCA0OTI2MSwgNDkyNzAsIDQ5Mjc5LCAKKyAgICA0OTI4NSwgNDkyOTEsIDQ5Mjk2LCA0OTMwMSwgNDkzMDYsIDQ5MzExLCA0OTMxNywgNDkzMjMsIDQ5MzMxLCA0OTMzOSwgCisgICAgNDkzNDUsIDQ5MzUxLCA0OTM1NiwgNDkzNjEsIDQ5MzY4LCA0OTM3NSwgNDkzODEsIDQ5Mzg0LCA0OTM4NywgNDkzOTEsIAorICAgIDQ5Mzk1LCA0OTM5OSwgNDk0MDQsIDQ5NDEwLCA0OTQxNiwgNDk0MjMsIDQ5NDMwLCA0OTQzNSwgNDk0MzksIDQ5NDQzLCAKKyAgICA0OTQ0NywgNDk0NTEsIDQ5NDU1LCA0OTQ1OSwgNDk0NjMsIDQ5NDY3LCA0OTQ3MSwgNDk0NzUsIDQ5NDc5LCA0OTQ4MywgCisgICAgNDk0ODcsIDQ5NDkxLCA0OTQ5NSwgNDk0OTksIDQ5NTAzLCA0OTUwNywgNDk1MTEsIDQ5NTE1LCA0OTUxOSwgNDk1MjMsIAorICAgIDQ5NTI3LCA0OTUzMSwgNDk1MzUsIDQ5NTM5LCA0OTU0MywgNDk1NDcsIDQ5NTUxLCA0OTU1NSwgNDk1NTksIDQ5NTYzLCAKKyAgICA0OTU2NywgNDk1NzEsIDQ5NTc1LCA0OTU3OSwgNDk1ODMsIDQ5NTg3LCA0OTU5MSwgNDk1OTUsIDQ5NTk5LCA0OTYwMywgCisgICAgNDk2MDcsIDQ5NjExLCA0OTYxNSwgNDk2MTksIDQ5NjIzLCA0OTYyNywgNDk2MzEsIDQ5NjM1LCA0OTYzOSwgNDk2NDMsIAorICAgIDQ5NjQ3LCA0OTY1MSwgNDk2NTUsIDQ5NjU5LCA0OTY2MywgNDk2NjcsIDQ5NjcxLCA0OTY3NSwgNDk2NzksIDQ5NjgzLCAKKyAgICA0OTY4NywgNDk2OTEsIDQ5Njk1LCA0OTY5OSwgNDk3MDMsIDQ5NzA3LCA0OTcxMSwgNDk3MTUsIDQ5NzE5LCA0OTcyMywgCisgICAgNDk3MjcsIDQ5NzMxLCA0OTczNSwgNDk3MzksIDQ5NzQzLCA0OTc0NywgNDk3NTEsIDQ5NzU1LCA0OTc1OSwgNDk3NjMsIAorICAgIDQ5NzY3LCA0OTc3MSwgNDk3NzUsIDQ5Nzc5LCA0OTc4MywgNDk3ODcsIDQ5NzkxLCA0OTc5NSwgNDk3OTksIDQ5ODAzLCAKKyAgICA0OTgwNywgNDk4MTEsIDQ5ODE1LCA0OTgxOSwgNDk4MjMsIDQ5ODI3LCA0OTgzMSwgNDk4MzUsIDQ5ODM5LCA0OTg0MywgCisgICAgNDk4NDcsIDQ5ODUxLCA0OTg1NSwgNDk4NTksIDQ5ODYzLCA0OTg2NywgNDk4NzEsIDQ5ODc1LCA0OTg3OSwgNDk4ODMsIAorICAgIDQ5ODg3LCA0OTg5MSwgNDk4OTUsIDQ5ODk5LCA0OTkwMywgNDk5MDcsIDQ5OTExLCA0OTkxNSwgNDk5MTksIDQ5OTIzLCAKKyAgICA0OTkyNywgNDk5MzEsIDQ5OTM1LCA0OTkzOSwgNDk5NDMsIDQ5OTQ3LCA0OTk1MSwgNDk5NTUsIDQ5OTU5LCA0OTk2MywgCisgICAgNDk5NjcsIDQ5OTcxLCA0OTk3NSwgNDk5NzksIDQ5OTgzLCA0OTk4NywgNDk5OTEsIDQ5OTk1LCA0OTk5OSwgNTAwMDMsIAorICAgIDUwMDA3LCA1MDAxMSwgNTAwMTUsIDUwMDE5LCA1MDAyMywgNTAwMjcsIDUwMDMxLCA1MDAzNSwgNTAwMzksIDUwMDQzLCAKKyAgICA1MDA0NywgNTAwNTEsIDUwMDU1LCA1MDA1OSwgNTAwNjMsIDUwMDY3LCA1MDA3MSwgNTAwNzUsIDUwMDc5LCA1MDA4MywgCisgICAgNTAwODcsIDUwMDkxLCA1MDA5NSwgNTAwOTksIDUwMTAzLCA1MDEwNywgNTAxMTEsIDUwMTE1LCA1MDExOSwgNTAxMjMsIAorICAgIDUwMTI3LCA1MDEzMSwgNTAxMzUsIDUwMTM5LCA1MDE0MywgNTAxNDcsIDUwMTUxLCA1MDE1NSwgNTAxNTksIDUwMTYzLCAKKyAgICA1MDE2NywgNTAxNzEsIDUwMTc1LCA1MDE3OSwgNTAxODMsIDUwMTg3LCA1MDE5MSwgNTAxOTUsIDUwMTk5LCA1MDIwMywgCisgICAgNTAyMDcsIDUwMjExLCA1MDIxNSwgNTAyMTksIDUwMjIzLCA1MDIyNywgNTAyMzEsIDUwMjM1LCA1MDIzOSwgNTAyNDMsIAorICAgIDUwMjQ3LCA1MDI1MSwgNTAyNTUsIDUwMjU5LCA1MDI2MywgNTAyNjcsIDUwMjcxLCA1MDI3NSwgNTAyNzksIDUwMjgzLCAKKyAgICA1MDI4NywgNTAyOTEsIDUwMjk1LCA1MDI5OSwgNTAzMDMsIDUwMzA3LCA1MDMxMSwgNTAzMTUsIDUwMzE5LCA1MDMyMywgCisgICAgNTAzMjcsIDUwMzMxLCA1MDMzNSwgNTAzMzksIDUwMzQzLCA1MDM0NywgNTAzNTEsIDUwMzU1LCA1MDM1OSwgNTAzNjMsIAorICAgIDUwMzY3LCA1MDM3MSwgNTAzNzUsIDUwMzc5LCA1MDM4MywgNTAzODcsIDUwMzkxLCA1MDM5NSwgNTAzOTksIDUwNDAzLCAKKyAgICA1MDQwNywgNTA0MTEsIDUwNDE1LCA1MDQxOSwgNTA0MjMsIDUwNDI3LCA1MDQzMSwgNTA0MzUsIDUwNDM5LCA1MDQ0MywgCisgICAgNTA0NDcsIDUwNDUxLCA1MDQ1NSwgNTA0NTksIDUwNDY2LCA1MDQ3NCwgNTA0ODAsIDUwNDg2LCA1MDQ5MywgNTA1MDAsIAorICAgIDUwNTA2LCA1MDUxMiwgNTA1MTgsIDUwNTI0LCA1MDUyOSwgNTA1MzQsIDUwNTM5LCA1MDU0NCwgNTA1NTAsIDUwNTU2LCAKKyAgICA1MDU2NCwgNTA1NzEsIDUwNTc3LCA1MDU4MywgNTA1OTEsIDUwNjAwLCA1MDYwNywgNTA2MTcsIDUwNjI4LCA1MDYzMSwgCisgICAgNTA2MzQsIDUwNjM4LCA1MDY0MiwgNTA2NDksIDUwNjU2LCA1MDY2NywgNTA2NzgsIDUwNjg4LCA1MDY5OCwgNTA3MDUsIAorICAgIDUwNzEyLCA1MDcxOSwgNTA3MjYsIDUwNzM3LCA1MDc0OCwgNTA3NTksIDUwNzcwLCA1MDc4MCwgNTA3OTAsIDUwODAyLCAKKyAgICA1MDgxNCwgNTA4MjUsIDUwODM2LCA1MDg0OCwgNTA4NjAsIDUwODY5LCA1MDg3OSwgNTA4ODksIDUwOTAwLCA1MDkxMSwgCisgICAgNTA5MTgsIDUwOTI1LCA1MDkzMiwgNTA5MzksIDUwOTQ5LCA1MDk1OSwgNTA5NjcsIDUwOTc1LCA1MDk4MiwgNTA5ODksIAorICAgIDUwOTk2LCA1MTAwMywgNTEwMTAsIDUxMDE1LCA1MTAyMCwgNTEwMjYsIDUxMDM0LCA1MTA0NCwgNTEwNTQsIDUxMDY0LCAKKyAgICA1MTA3NCwgNTEwODQsIDUxMDk0LCA1MTEwNCwgNTExMTQsIDUxMTI0LCA1MTEzNCwgNTExNDQsIDUxMTU1LCA1MTE2NiwgCisgICAgNTExNzYsIDUxMTg2LCA1MTE5NywgNTEyMDgsIDUxMjE4LCA1MTIyOCwgNTEyMzksIDUxMjUwLCA1MTI2MCwgNTEyNzAsIAorICAgIDUxMjgxLCA1MTI5MiwgNTEzMDgsIDUxMzI3LCA1MTM0MywgNTEzNjIsIDUxMzc4LCA1MTM5NCwgNTE0MTAsIDUxNDI2LCAKKyAgICA1MTQzNywgNTE0NDksIDUxNDYwLCA1MTQ3MiwgNTE0OTEsIDUxNTEwLCA1MTUxOCwgNTE1MjQsIDUxNTMxLCA1MTUzOCwgCisgICAgNTE1NDUsIDUxNTUyLCA1MTU1NywgNTE1NjMsIDUxNTY4LCA1MTU3MywgNTE1NzksIDUxNTg0LCA1MTU4OSwgNTE1OTQsIAorICAgIDUxNTk5LCA1MTYwNCwgNTE2MTEsIDUxNjE2LCA1MTYyMywgNTE2MjgsIDUxNjMzLCA1MTYzNywgNTE2NDEsIDUxNjQ4LCAKKyAgICA1MTY1NSwgNTE2NjIsIDUxNjY5LCA1MTY3NiwgNTE2ODMsIDUxNjk2LCA1MTcwOSwgNTE3MjIsIDUxNzM1LCA1MTc0MywgCisgICAgNTE3NTEsIDUxNzU3LCA1MTc2MywgNTE3NzAsIDUxNzc3LCA1MTc4NCwgNTE3OTEsIDUxNzk1LCA1MTgwMCwgNTE4MDgsIAorICAgIDUxODE2LCA1MTgyNCwgNTE4MzEsIDUxODM1LCA1MTg0MywgNTE4NTEsIDUxODU1LCA1MTg1OSwgNTE4NjQsIDUxODcxLCAKKyAgICA1MTg3OSwgNTE4ODcsIDUxOTA2LCA1MTkyNSwgNTE5NDQsIDUxOTYzLCA1MTk4MiwgNTIwMDEsIDUyMDIwLCA1MjAzOSwgCisgICAgNTIwNDUsIDUyMDUyLCA1MjA2MSwgNTIwNjksIDUyMDc3LCA1MjA4MiwgNTIwODUsIDUyMDg4LCA1MjA5MywgNTIwOTYsIAorICAgIDUyMTE1LCA1MjEyMiwgNTIxMjgsIDUyMTM0LCA1MjEzOCwgNTIxNDEsIDUyMTQ0LCA1MjE0NywgNTIxNTksIDUyMTcyLCAKKyAgICA1MjE3OSwgNTIxODYsIDUyMTg5LCA1MjE5MywgNTIxOTYsIDUyMjAxLCA1MjIwNiwgNTIyMTEsIDUyMjE3LCA1MjIyNiwgCisgICAgNTIyMzMsIDUyMjQwLCA1MjI0OCwgNTIyNTUsIDUyMjYyLCA1MjI2NSwgNTIyNzEsIDUyMjc3LCA1MjI4MCwgNTIyODMsIAorICAgIDUyMjg4LCA1MjI5MywgNTIyOTksIDUyMzA1LCA1MjMwOSwgNTIzMTQsIDUyMzIxLCA1MjMyNSwgNTIzMzEsIDUyMzM1LCAKKyAgICA1MjMzOSwgNTIzNDcsIDUyMzU5LCA1MjM2OCwgNTIzNzIsIDUyMzc0LCA1MjM4MywgNTIzOTIsIDUyMzk4LCA1MjQwMSwgCisgICAgNTI0MDcsIDUyNDEzLCA1MjQxOCwgNTI0MjMsIDUyNDI4LCA1MjQzMywgNTI0MzgsIDUyNDQzLCA1MjQ0NSwgNTI0NTEsIAorICAgIDUyNDU2LCA1MjQ2MywgNTI0NjcsIDUyNDczLCA1MjQ3NiwgNTI0ODAsIDUyNDg3LCA1MjQ5NCwgNTI0OTYsIDUyNDk4LCAKKyAgICA1MjUwNCwgNTI1MTAsIDUyNTE2LCA1MjUyNSwgNTI1MzQsIDUyNTQxLCA1MjU0OCwgNTI1NTQsIDUyNTYwLCA1MjU2NSwgCisgICAgNTI1NzAsIDUyNTc1LCA1MjU4MSwgNTI1ODcsIDUyNTkyLCA1MjU5OSwgNTI2MDMsIDUyNjA3LCA1MjYyMCwgNTI2MzMsIAorICAgIDUyNjQ1LCA1MjY1NCwgNTI2NjAsIDUyNjY3LCA1MjY3MiwgNTI2NzcsIDUyNjgyLCA1MjY4NywgNTI2OTIsIDUyNjk0LCAKKyAgICA1MjcwMSwgNTI3MDgsIDUyNzE1LCA1MjcyMiwgNTI3MjksIDUyNzM3LCA1Mjc0MywgNTI3NDgsIDUyNzU0LCA1Mjc2MCwgCisgICAgNTI3NjYsIDUyNzczLCA1Mjc3OSwgNTI3ODcsIDUyNzk1LCA1MjgwMywgNTI4MTEsIDUyODE4LCA1MjgyNCwgNTI4MzAsIAorICAgIDUyODM5LCA1Mjg0MywgNTI4NTIsIDUyODYxLCA1Mjg3MCwgNTI4NzgsIDUyODgyLCA1Mjg4OCwgNTI4OTUsIDUyOTAyLCAKKyAgICA1MjkwNiwgNTI5MTIsIDUyOTE5LCA1MjkyNCwgNTI5MjksIDUyOTM1LCA1Mjk0MCwgNTI5NDUsIDUyOTUyLCA1Mjk1OSwgCisgICAgNTI5NjQsIDUyOTY5LCA1Mjk3NywgNTI5ODUsIDUyOTk1LCA1MzAwNSwgNTMwMTIsIDUzMDE5LCA1MzAyMywgNTMwMjcsIAorICAgIDUzMDM5LCA1MzA0NSwgNTMwNTEsIDUzMDU2LCA1MzA2MSwgNTMwNjgsIDUzMDc1LCA1MzA4MSwgNTMwODcsIDUzMDk2LCAKKyAgICA1MzEwNCwgNTMxMTIsIDUzMTE5LCA1MzEyNiwgNTMxMzMsIDUzMTM5LCA1MzE0NiwgNTMxNTIsIDUzMTU5LCA1MzE2NiwgCisgICAgNTMxNzMsIDUzMTgwLCA1MzE4NiwgNTMxOTEsIDUzMjAwLCA1MzIxMCwgNTMyMTcsIDUzMjI2LCA1MzIzMiwgNTMyMzcsIAorICAgIDUzMjQyLCA1MzI1MiwgNTMyNTgsIDUzMjY0LCA1MzI3MCwgNTMyNzgsIDUzMjgzLCA1MzI5MCwgNTMyOTcsIDUzMzA4LCAKKyAgICA1MzMxNSwgNTMzMjIsIDUzMzI5LCA1MzMzNiwgNTMzNDMsIDUzMzUwLCA1MzM1NywgNTMzNjksIDUzMzgxLCA1MzM5MiwgCisgICAgNTM0MDMsIDUzNDE2LCA1MzQyOSwgNTM0MzQsIDUzNDM5LCA1MzQ0OCwgNTM0NTcsIDUzNDY0LCA1MzQ3MSwgNTM0ODAsIAorICAgIDUzNDg5LCA1MzQ5NywgNTM1MDUsIDUzNTEzLCA1MzUyMSwgNTM1MzEsIDUzNTQxLCA1MzU1NSwgNTM1NjksIDUzNTc3LCAKKyAgICA1MzU4NSwgNTM1OTcsIDUzNjA5LCA1MzYxNywgNTM2MjUsIDUzNjM1LCA1MzY0NSwgNTM2NTAsIDUzNjU1LCA1MzY2NCwgCisgICAgNTM2NzMsIDUzNjc4LCA1MzY4MywgNTM2OTEsIDUzNjk3LCA1MzcwMywgNTM3MTEsIDUzNzE5LCA1MzczMiwgNTM3NDUsIAorICAgIDUzNzQ5LCA1Mzc1MywgNTM3NjAsIDUzNzY3LCA1Mzc3NCwgNTM3ODIsIDUzNzkwLCA1Mzc5OSwgNTM4MDgsIDUzODE0LCAKKyAgICA1MzgyMCwgNTM4MjcsIDUzODM0LCA1Mzg0MSwgNTM4NDgsIDUzODU3LCA1Mzg2NiwgNTM4NjksIDUzODcyLCA1Mzg3NywgCisgICAgNTM4ODIsIDUzODg4LCA1Mzg5NCwgNTM5MDEsIDUzOTA4LCA1MzkxOCwgNTM5MjgsIDUzOTM1LCA1Mzk0MiwgNTM5NTAsIAorICAgIDUzOTU4LCA1Mzk2NiwgNTM5NzQsIDUzOTgyLCA1Mzk5MCwgNTM5OTYsIDU0MDAyLCA1NDAwNiwgNTQwMTAsIDU0MDE3LCAKKyAgICA1NDAyNCwgNTQwMjksIDU0MDM0LCA1NDAzOSwgNTQwNDQsIDU0MDUwLCA1NDA2NCwgNTQwNzEsIDU0MDc4LCA1NDA4MiwgCisgICAgNTQwODQsIDU0MDg2LCA1NDA5MSwgNTQwOTYsIDU0MTAxLCA1NDEwNiwgNTQxMTQsIDU0MTIxLCA1NDEyOCwgNTQxMzYsIAorICAgIDU0MTQ4LCA1NDE1NiwgNTQxNjQsIDU0MTc1LCA1NDE3OSwgNTQxODMsIDU0MTg5LCA1NDE5NywgNTQyMTAsIDU0MjE3LCAKKyAgICA1NDIyNCwgNTQyMzEsIDU0MjM2LCA1NDI0MywgNTQyNTIsIDU0MjYwLCA1NDI2NiwgNTQyNzIsIDU0Mjc4LCA1NDI4NywgCisgICAgNTQyOTYsIDU0MzA0LCA1NDMxMywgNTQzMTgsIDU0MzIxLCA1NDMyNiwgNTQzMzIsIDU0MzM4LCA1NDM0NCwgNTQzNTAsIAorICAgIDU0MzU0LCA1NDM1NywgNTQzNjEsIDU0MzY1LCA1NDM3MSwgNTQzNzcsIDU0MzgzLCA1NDM4OSwgNTQzOTMsIDU0Mzk3LCAKKyAgICA1NDQwNCwgNTQ0MTEsIDU0NDE4LCA1NDQyNSwgNTQ0MzIsIDU0NDM5LCA1NDQ0OSwgNTQ0NTksIDU0NDY2LCA1NDQ3MywgCisgICAgNTQ0ODEsIDU0NDg5LCA1NDQ5MywgNTQ0OTgsIDU0NTAzLCA1NDUwOSwgNTQ1MTUsIDU0NTE4LCA1NDUyMSwgNTQ1MjQsIAorICAgIDU0NTI3LCA1NDUzMSwgNTQ1MzYsIDU0NTQxLCA1NDU0NiwgNTQ1NTEsIDU0NTU2LCA1NDU2MCwgNTQ1NjQsIDU0NTY4LCAKKyAgICA1NDU3MiwgNTQ1NzYsIDU0NTgwLCA1NDU4NCwgNTQ1OTAsIDU0NTk0LCA1NDYwMCwgNTQ2MDUsIDU0NjEyLCA1NDYyMCwgCisgICAgNTQ2MjcsIDU0NjM1LCA1NDY0MiwgNTQ2NTAsIDU0NjU5LCA1NDY2NiwgNTQ2NzYsIDU0Njg3LCA1NDY5MywgNTQ3MDIsIAorICAgIDU0NzA4LCA1NDcxNywgNTQ3MjYsIDU0NzMyLCA1NDczOCwgNTQ3NDIsIDU0NzQ2LCA1NDc1NSwgNTQ3NjQsIDU0NzcxLCAKKyAgICA1NDc3OCwgNTQ3ODcsIDAsIDAsIDAsIDU0Nzk2LCA1NDgwMSwgNTQ4MDUsIDU0ODA5LCA1NDgxNCwgNTQ4MTksIDU0ODI0LCAKKyAgICA1NDgzMiwgNTQ4NDAsIDU0ODQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NDg0NywgNTQ4NTIsIDU0ODU3LCA1NDg2MiwgNTQ4NjcsIDU0ODcyLCA1NDg3NywgNTQ4ODIsIAorICAgIDU0ODg3LCA1NDg5MiwgNTQ4OTcsIDU0OTAzLCA1NDkwNywgNTQ5MTIsIDU0OTE3LCA1NDkyMiwgNTQ5MjcsIDU0OTMyLCAKKyAgICA1NDkzNywgNTQ5NDIsIDU0OTQ3LCA1NDk1MiwgNTQ5NTcsIDU0OTYyLCA1NDk2NywgNTQ5NzIsIDU0OTc3LCA1NDk4MiwgCisgICAgNTQ5ODcsIDU0OTkyLCA1NDk5NywgNTUwMDIsIDU1MDA3LCA1NTAxMiwgNTUwMTcsIDU1MDIzLCA1NTAyOCwgNTUwMzQsIAorICAgIDU1MDQzLCA1NTA0OCwgNTUwNTYsIDU1MDYzLCA1NTA3MiwgNTUwNzcsIDU1MDgyLCA1NTA4NywgNTUwOTMsIDAsIDU1MTAwLCAKKyAgICA1NTEwNSwgNTUxMTAsIDU1MTE1LCA1NTEyMCwgNTUxMjUsIDU1MTMwLCA1NTEzNSwgNTUxNDAsIDU1MTQ1LCA1NTE1MCwgCisgICAgNTUxNTYsIDU1MTYwLCA1NTE2NSwgNTUxNzAsIDU1MTc1LCA1NTE4MCwgNTUxODUsIDU1MTkwLCA1NTE5NSwgNTUyMDAsIAorICAgIDU1MjA1LCA1NTIxMCwgNTUyMTUsIDU1MjIwLCA1NTIyNSwgNTUyMzAsIDU1MjM1LCA1NTI0MCwgNTUyNDUsIDU1MjUwLCAKKyAgICA1NTI1NSwgNTUyNjAsIDU1MjY1LCA1NTI3MCwgNTUyNzYsIDU1MjgxLCA1NTI4NywgNTUyOTYsIDU1MzAxLCA1NTMwOSwgCisgICAgNTUzMTYsIDU1MzI1LCA1NTMzMCwgNTUzMzUsIDU1MzQwLCA1NTM0NiwgMCwgNTUzNTMsIDU1MzYxLCA1NTM2OSwgNTUzNzgsIAorICAgIDU1Mzg1LCA1NTM5MywgNTUzOTksIDU1NDA4LCA1NTQxNiwgNTU0MjQsIDU1NDMyLCA1NTQ0MCwgNTU0NDgsIDU1NDU2LCAKKyAgICA1NTQ2MSwgNTU0NjgsIDU1NDc0LCA1NTQ4MSwgNTU0ODksIDU1NDk2LCA1NTUwMywgNTU1MTEsIDU1NTE3LCA1NTUyMywgCisgICAgNTU1MzAsIDU1NTM3LCA1NTU0NywgNTU1NTcsIDU1NTY0LCA1NTU3MSwgNTU1NzYsIDU1NTg2LCA1NTU5NiwgNTU2MDEsIAorICAgIDU1NjA2LCA1NTYxMSwgNTU2MTYsIDU1NjIxLCA1NTYyNiwgNTU2MzEsIDU1NjM2LCA1NTY0MSwgNTU2NDYsIDU1NjUxLCAKKyAgICA1NTY1NiwgNTU2NjEsIDU1NjY2LCA1NTY3MSwgNTU2NzYsIDU1NjgxLCA1NTY4NiwgNTU2OTEsIDU1Njk2LCA1NTcwMSwgCisgICAgNTU3MDYsIDU1NzExLCA1NTcxNiwgNTU3MjEsIDU1NzI2LCA1NTczMSwgNTU3MzYsIDU1NzQxLCA1NTc0NiwgNTU3NTAsIAorICAgIDU1NzU0LCA1NTc1OSwgNTU3NjQsIDU1NzY5LCA1NTc3NCwgNTU3NzksIDU1Nzg0LCA1NTc4OSwgNTU3OTQsIDU1Nzk5LCAKKyAgICA1NTgwNCwgNTU4MDksIDU1ODE0LCA1NTgxOSwgNTU4MjQsIDU1ODI5LCA1NTgzNCwgNTU4MzksIDU1ODQ0LCA1NTg1MSwgCisgICAgNTU4NTgsIDU1ODY1LCA1NTg3MiwgNTU4NzksIDU1ODg2LCA1NTg5MywgNTU5MDAsIDU1OTA3LCA1NTkxNCwgNTU5MjEsIAorICAgIDU1OTI4LCA1NTkzNSwgNTU5NDIsIDU1OTQ3LCA1NTk1MiwgNTU5NTksIDU1OTY2LCA1NTk3MywgNTU5ODAsIDU1OTg3LCAKKyAgICA1NTk5NCwgNTYwMDEsIDU2MDA4LCA1NjAxNSwgNTYwMjIsIDU2MDI5LCA1NjAzNiwgNTYwNDIsIDU2MDQ4LCA1NjA1NCwgCisgICAgNTYwNjAsIDU2MDY3LCA1NjA3NCwgNTYwODEsIDU2MDg4LCA1NjA5NSwgNTYxMDIsIDU2MTA5LCA1NjExNiwgNTYxMjMsIAorICAgIDU2MTMwLCA1NjEzOCwgNTYxNDYsIDU2MTU0LCA1NjE2MiwgNTYxNzAsIDU2MTc4LCA1NjE4NiwgNTYxOTQsIDU2MTk4LCAKKyAgICA1NjIwNCwgNTYyMTAsIDU2MjE0LCA1NjIyMCwgNTYyMjYsIDU2MjMyLCA1NjIzOSwgNTYyNDYsIDU2MjUzLCA1NjI2MCwgCisgICAgNTYyNjUsIDU2MjcxLCA1NjI3NywgNTYyODQsIDAsIDAsIDAsIDAsIDAsIDU2MjkxLCA1NjI5OSwgNTYzMDgsIDU2MzE3LCAKKyAgICA1NjMyNSwgNTYzMzEsIDU2MzM2LCA1NjM0MSwgNTYzNDYsIDU2MzUxLCA1NjM1NiwgNTYzNjEsIDU2MzY2LCA1NjM3MSwgCisgICAgNTYzNzYsIDU2MzgxLCA1NjM4NiwgNTYzOTEsIDU2Mzk2LCA1NjQwMSwgNTY0MDYsIDU2NDExLCA1NjQxNiwgNTY0MjEsIAorICAgIDU2NDI2LCA1NjQzMSwgNTY0MzYsIDU2NDQxLCA1NjQ0NiwgNTY0NTEsIDU2NDU2LCA1NjQ2MSwgNTY0NjYsIDU2NDcxLCAKKyAgICA1NjQ3NiwgNTY0ODEsIDU2NDg2LCA1NjQ5MSwgNTY0OTYsIDU2NTAxLCA1NjUwNiwgNTY1MTEsIDU2NTE2LCA1NjUyMSwgCisgICAgNTY1MjYsIDAsIDU2NTMxLCAwLCAwLCAwLCAwLCAwLCA1NjUzNiwgMCwgMCwgNTY1NDEsIDU2NTQ1LCA1NjU1MCwgNTY1NTUsIAorICAgIDU2NTYwLCA1NjU2NSwgNTY1NzQsIDU2NTc5LCA1NjU4NCwgNTY1ODksIDU2NTk0LCA1NjU5OSwgNTY2MDQsIDU2NjA5LCAKKyAgICA1NjYxNCwgNTY2MjEsIDU2NjI2LCA1NjYzMSwgNTY2NDAsIDU2NjQ3LCA1NjY1MiwgNTY2NTcsIDU2NjYyLCA1NjY2OSwgCisgICAgNTY2NzQsIDU2NjgxLCA1NjY4NiwgNTY2OTEsIDU2Njk4LCA1NjcwNSwgNTY3MTAsIDU2NzE1LCA1NjcyMCwgNTY3MjcsIAorICAgIDU2NzM0LCA1NjczOSwgNTY3NDQsIDU2NzQ5LCA1Njc1NCwgNTY3NTksIDU2NzY2LCA1Njc3MywgNTY3NzgsIDU2NzgzLCAKKyAgICA1Njc4OCwgNTY3OTMsIDU2Nzk4LCA1NjgwMywgNTY4MDgsIDU2ODEzLCA1NjgxOCwgNTY4MjMsIDU2ODI4LCA1NjgzNSwgCisgICAgNTY4NDAsIDU2ODQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njg1MCwgNTY4NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU2ODYyLCA1Njg2NywgNTY4NzEsIDU2ODc1LCA1Njg3OSwgNTY4ODMsIDU2ODg3LCA1Njg5MSwgCisgICAgNTY4OTUsIDU2ODk5LCA1NjkwMywgNTY5MDcsIDU2OTEzLCA1NjkxNywgNTY5MjEsIDU2OTI1LCA1NjkyOSwgNTY5MzMsIAorICAgIDU2OTM3LCA1Njk0MSwgNTY5NDUsIDU2OTQ5LCA1Njk1MywgNTY5NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU2OTYxLCA1Njk2NSwgNTY5NjksIDU2OTczLCA1Njk3NywgNTY5ODEsIDU2OTg1LCAwLCA1Njk4OSwgNTY5OTMsIDU2OTk3LCAKKyAgICA1NzAwMSwgNTcwMDUsIDU3MDA5LCA1NzAxMywgMCwgNTcwMTcsIDU3MDIxLCA1NzAyNSwgNTcwMjksIDU3MDMzLCA1NzAzNywgCisgICAgNTcwNDEsIDAsIDU3MDQ1LCA1NzA0OSwgNTcwNTMsIDU3MDU3LCA1NzA2MSwgNTcwNjUsIDU3MDY5LCAwLCA1NzA3MywgCisgICAgNTcwNzcsIDU3MDgxLCA1NzA4NSwgNTcwODksIDU3MDkzLCA1NzA5NywgMCwgNTcxMDEsIDU3MTA1LCA1NzEwOSwgNTcxMTMsIAorICAgIDU3MTE3LCA1NzEyMSwgNTcxMjUsIDAsIDU3MTI5LCA1NzEzMywgNTcxMzcsIDU3MTQxLCA1NzE0NSwgNTcxNDksIDU3MTUzLCAKKyAgICAwLCA1NzE1NywgNTcxNjEsIDU3MTY1LCA1NzE2OSwgNTcxNzMsIDU3MTc3LCA1NzE4MSwgMCwgNTcxODUsIDU3MTkwLCAKKyAgICA1NzE5NSwgNTcyMDAsIDU3MjA1LCA1NzIxMCwgNTcyMTUsIDU3MjE5LCA1NzIyNCwgNTcyMjksIDU3MjM0LCA1NzIzOCwgCisgICAgNTcyNDMsIDU3MjQ4LCA1NzI1MywgNTcyNTgsIDU3MjYyLCA1NzI2NywgNTcyNzIsIDU3Mjc3LCA1NzI4MiwgNTcyODcsIAorICAgIDU3MjkyLCA1NzI5NiwgNTczMDEsIDU3MzA2LCA1NzMxMywgNTczMTgsIDU3MzIzLCA1NzMyOSwgNTczMzYsIDU3MzQzLCAKKyAgICA1NzM1MiwgNTczNTksIDU3MzY4LCA1NzM3MiwgNTczNzYsIDU3MzgyLCA1NzM4OCwgNTczOTQsIDU3NDAyLCA1NzQwOCwgCisgICAgNTc0MTIsIDU3NDE2LCA1NzQyMCwgNTc0MjYsIDU3NDMyLCA1NzQzNiwgNTc0MzgsIDU3NDQyLCA1NzQ0OCwgNTc0NTAsIAorICAgIDU3NDU0LCA1NzQ1OCwgNTc0NjIsIDU3NDY4LCA1NzQ3MywgNTc0NzcsIDU3NDgxLCA1NzQ4NiwgNTc0OTIsIDU3NDk3LCAKKyAgICA1NzUwMiwgNTc1MDcsIDU3NTEyLCA1NzUxOSwgNTc1MjYsIDU3NTMxLCA1NzUzNiwgNTc1NDEsIDU3NTQ2LCA1NzU1MSwgCisgICAgNTc1NTYsIDU3NTYwLCA1NzU2NCwgNTc1NzEsIDU3NTc4LCA1NzU4NCwgNTc1ODgsIDU3NTkzLCA1NzU5NSwgNTc1OTksIAorICAgIDU3NjA3LCA1NzYxMSwgNTc2MTUsIDU3NjE5LCA1NzYyMywgNTc2MjksIDU3NjM1LCA1NzYzOSwgNTc2NDUsIDU3NjQ5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzY1MywgNTc2NTcsIAorICAgIDU3NjYxLCA1NzY2NiwgNTc2NzEsIDU3Njc2LCA1NzY4MCwgNTc2ODQsIDU3Njg4LCA1NzY5MywgNTc2OTgsIDU3NzAyLCAKKyAgICA1NzcwNiwgNTc3MTAsIDU3NzE0LCA1NzcxOSwgNTc3MjQsIDU3NzI5LCA1NzczNCwgNTc3MzgsIDU3NzQyLCA1Nzc0NywgCisgICAgNTc3NTIsIDU3NzU3LCA1Nzc2MiwgNTc3NjYsIDAsIDU3NzcwLCA1Nzc3NCwgNTc3NzgsIDU3NzgyLCA1Nzc4NiwgNTc3OTAsIAorICAgIDU3Nzk0LCA1Nzc5OSwgNTc4MDQsIDU3ODA4LCA1NzgxMywgNTc4MTgsIDU3ODI3LCA1NzgzMSwgNTc4MzUsIDU3ODM5LCAKKyAgICA1Nzg0NiwgNTc4NTAsIDU3ODU1LCA1Nzg2MCwgNTc4NjQsIDU3ODY4LCA1Nzg3NCwgNTc4NzksIDU3ODg0LCA1Nzg4OSwgCisgICAgNTc4OTQsIDU3ODk4LCA1NzkwMiwgNTc5MDYsIDU3OTEwLCA1NzkxNCwgNTc5MTksIDU3OTI0LCA1NzkyOCwgNTc5MzIsIAorICAgIDU3OTM3LCA1Nzk0MiwgNTc5NDcsIDU3OTUxLCA1Nzk1NSwgNTc5NjAsIDU3OTY1LCA1Nzk3MSwgNTc5NzcsIDU3OTgxLCAKKyAgICA1Nzk4NywgNTc5OTMsIDU3OTk3LCA1ODAwMywgNTgwMDksIDU4MDE0LCA1ODAxOSwgNTgwMjMsIDU4MDI5LCA1ODAzMywgCisgICAgNTgwMzcsIDU4MDQzLCA1ODA0OSwgNTgwNTQsIDU4MDU5LCA1ODA2MywgNTgwNjcsIDU4MDc1LCA1ODA4MSwgNTgwODcsIAorICAgIDU4MDkzLCA1ODA5OCwgNTgxMDMsIDU4MTA4LCA1ODExNCwgNTgxMTgsIDU4MTI0LCA1ODEyOCwgNTgxMzIsIDU4MTM4LCAKKyAgICA1ODE0NCwgNTgxNTAsIDU4MTU2LCA1ODE2MiwgNTgxNjgsIDU4MTc0LCA1ODE4MCwgNTgxODYsIDU4MTkyLCA1ODE5OCwgCisgICAgNTgyMDQsIDU4MjA4LCA1ODIxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyMjAsIDU4MjIzLCAKKyAgICA1ODIyNywgNTgyMzEsIDU4MjM1LCA1ODIzOSwgNTgyNDIsIDU4MjQ1LCA1ODI0OSwgNTgyNTMsIDU4MjU3LCA1ODI2MSwgCisgICAgNTgyNjQsIDU4MjY5LCA1ODI3MywgNTgyNzcsIDU4MjgxLCA1ODI4NiwgNTgyOTAsIDU4Mjk0LCA1ODI5OCwgNTgzMDIsIAorICAgIDU4MzA4LCA1ODMxNCwgNTgzMTgsIDU4MzIyLCA1ODMyNiwgNTgzMzAsIDU4MzM0LCA1ODMzOCwgNTgzNDIsIDU4MzQ2LCAKKyAgICA1ODM1MCwgNTgzNTQsIDU4MzU4LCA1ODM2NCwgNTgzNjgsIDU4MzcyLCA1ODM3NiwgNTgzODAsIDU4Mzg0LCA1ODM4OCwgCisgICAgNTgzOTIsIDU4Mzk2LCA1ODQwMCwgNTg0MDQsIDU4NDA4LCA1ODQxMiwgNTg0MTYsIDU4NDIwLCA1ODQyNCwgNTg0MjgsIAorICAgIDU4NDM0LCA1ODQ0MCwgNTg0NDUsIDU4NDUwLCA1ODQ1NCwgNTg0NTgsIDU4NDYyLCA1ODQ2NiwgNTg0NzAsIDU4NDc0LCAKKyAgICA1ODQ3OCwgNTg0ODIsIDU4NDg2LCA1ODQ5MCwgNTg0OTQsIDU4NDk4LCA1ODUwMiwgNTg1MDYsIDU4NTEwLCA1ODUxNCwgCisgICAgNTg1MTgsIDU4NTIyLCA1ODUyNiwgNTg1MzAsIDU4NTM0LCA1ODUzOCwgNTg1NDIsIDU4NTQ2LCA1ODU1MiwgNTg1NTYsIAorICAgIDU4NTYwLCA1ODU2NCwgNTg1NjgsIDU4NTcyLCA1ODU3NiwgNTg1ODAsIDU4NTg0LCA1ODU4OSwgNTg1OTYsIDU4NjAwLCAKKyAgICA1ODYwNCwgNTg2MDgsIDU4NjEyLCA1ODYxNiwgNTg2MjAsIDU4NjI0LCA1ODYyOCwgNTg2MzIsIDU4NjM2LCA1ODY0MCwgCisgICAgNTg2NDQsIDU4NjUxLCA1ODY1NSwgNTg2NjEsIDU4NjY1LCA1ODY2OSwgNTg2NzMsIDU4Njc3LCA1ODY4MSwgNTg2ODQsIAorICAgIDU4Njg4LCA1ODY5MiwgNTg2OTYsIDU4NzAwLCA1ODcwNCwgNTg3MDgsIDU4NzEyLCA1ODcxNiwgNTg3MjAsIDU4NzI0LCAKKyAgICA1ODcyOCwgNTg3MzIsIDU4NzM2LCA1ODc0MCwgNTg3NDQsIDU4NzQ4LCA1ODc1MiwgNTg3NTYsIDU4NzYwLCA1ODc2NCwgCisgICAgNTg3NjgsIDU4NzcyLCA1ODc3NiwgNTg3ODAsIDU4Nzg0LCA1ODc4OCwgNTg3OTIsIDU4Nzk2LCA1ODgwMCwgNTg4MDQsIAorICAgIDU4ODA4LCA1ODgxMiwgNTg4MTgsIDU4ODIyLCA1ODgyNiwgNTg4MzAsIDU4ODM0LCA1ODgzOCwgNTg4NDIsIDU4ODQ2LCAKKyAgICA1ODg1MCwgNTg4NTQsIDU4ODU4LCA1ODg2MiwgNTg4NjYsIDU4ODcwLCA1ODg3NCwgNTg4NzgsIDU4ODgyLCA1ODg4NiwgCisgICAgNTg4OTAsIDU4ODk0LCA1ODg5OCwgNTg5MDIsIDU4OTA2LCA1ODkxMCwgNTg5MTQsIDU4OTE4LCA1ODkyMiwgNTg5MjYsIAorICAgIDU4OTM0LCA1ODkzOCwgNTg5NDIsIDU4OTQ2LCA1ODk1MCwgNTg5NTQsIDU4OTYwLCA1ODk2NCwgNTg5NjgsIDU4OTcyLCAKKyAgICA1ODk3NiwgNTg5ODAsIDU4OTg0LCA1ODk4OCwgNTg5OTIsIDU4OTk2LCA1OTAwMCwgNTkwMDQsIDU5MDA4LCA1OTAxMiwgCisgICAgNTkwMTgsIDU5MDIyLCA1OTAyNiwgNTkwMzAsIDU5MDM0LCA1OTAzOCwgNTkwNDIsIDU5MDQ2LCA1OTA1MCwgNTkwNTQsIAorICAgIDU5MDU4LCA1OTA2MiwgNTkwNjYsIDU5MDcwLCA1OTA3NCwgNTkwNzgsIDU5MDgyLCA1OTA4NiwgNTkwOTAsIDU5MDk0LCAKKyAgICA1OTA5OCwgNTkxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU5MTA2LCA1OTExNSwgNTkxMjMsIDU5MTM1LCA1OTE0NiwgNTkxNTQsIDU5MTYzLCA1OTE3MiwgCisgICAgNTkxODIsIDU5MTk0LCA1OTIwNiwgNTkyMTgsIDAsIDAsIDAsIDAsIDU5MjI0LCA1OTIyNywgNTkyMzAsIDU5MjM1LCAKKyAgICA1OTIzOCwgNTkyNDUsIDU5MjQ5LCA1OTI1MywgNTkyNTcsIDU5MjYxLCA1OTI2NSwgNTkyNzAsIDU5Mjc1LCA1OTI3OSwgCisgICAgNTkyODMsIDU5Mjg4LCA1OTI5MywgNTkyOTgsIDU5MzAzLCA1OTMwNiwgNTkzMDksIDU5MzE1LCA1OTMyMSwgNTkzMjYsIAorICAgIDU5MzMxLCA1OTMzOCwgNTkzNDUsIDU5MzQ5LCA1OTM1MywgNTkzNTcsIDU5MzY1LCA1OTM3MSwgNTkzNzgsIDU5MzgzLCAKKyAgICA1OTM4OCwgNTkzOTMsIDU5Mzk4LCA1OTQwMywgNTk0MDgsIDU5NDEzLCA1OTQxOCwgNTk0MjMsIDU5NDI4LCA1OTQzMywgCisgICAgNTk0MzgsIDU5NDQzLCA1OTQ0OCwgNTk0NTQsIDU5NDU5LCA1OTQ2MywgNTk0NjksIDU5NDgwLCA1OTQ5MCwgNTk1MDUsIAorICAgIDU5NTE1LCA1OTUxOSwgNTk1MjksIDU5NTM1LCA1OTU0MSwgNTk1NDcsIDU5NTUyLCA1OTU1NSwgNTk1NjAsIDU5NTY0LCAwLCAKKyAgICA1OTU3MCwgNTk1NzQsIDU5NTc3LCA1OTU4MSwgNTk1ODQsIDU5NTg4LCA1OTU5MSwgNTk1OTUsIDU5NTk4LCA1OTYwMiwgCisgICAgNTk2MDUsIDU5NjA4LCA1OTYxMiwgNTk2MTYsIDU5NjIwLCA1OTYyNCwgNTk2MjgsIDU5NjMyLCA1OTYzNiwgNTk2NDAsIAorICAgIDU5NjQ0LCA1OTY0NywgNTk2NTEsIDU5NjU1LCA1OTY1OSwgNTk2NjMsIDU5NjY3LCA1OTY3MSwgNTk2NzUsIDU5Njc5LCAKKyAgICA1OTY4MywgNTk2ODcsIDU5NjkxLCA1OTY5NSwgNTk2OTksIDU5NzA0LCA1OTcwOCwgNTk3MTIsIDU5NzE2LCA1OTcyMCwgCisgICAgNTk3MjMsIDU5NzI3LCA1OTczMCwgNTk3MzQsIDU5NzM4LCA1OTc0MiwgNTk3NDYsIDU5NzQ5LCA1OTc1MywgNTk3NTYsIAorICAgIDU5NzYwLCA1OTc2NCwgNTk3NjgsIDU5NzcyLCA1OTc3NiwgNTk3ODAsIDU5Nzg0LCA1OTc4OCwgNTk3OTIsIDU5Nzk2LCAKKyAgICA1OTgwMCwgNTk4MDQsIDU5ODA3LCA1OTgxMSwgNTk4MTUsIDU5ODE5LCA1OTgyMywgNTk4MjcsIDU5ODMwLCA1OTgzNSwgCisgICAgNTk4MzksIDU5ODQ0LCA1OTg0OCwgNTk4NTEsIDU5ODU1LCA1OTg1OSwgNTk4NjMsIDU5ODY3LCA1OTg3MiwgNTk4NzYsIAorICAgIDU5ODgwLCA1OTg4NCwgNTk4ODgsIDU5ODkyLCA1OTg5NiwgNTk5MDAsIDAsIDAsIDU5OTA1LCA1OTkxMywgNTk5MjEsIAorICAgIDU5OTI4LCA1OTkzNSwgNTk5MzksIDU5OTQ1LCA1OTk1MCwgNTk5NTUsIDU5OTU5LCA1OTk2MiwgNTk5NjYsIDU5OTY5LCAKKyAgICA1OTk3MywgNTk5NzYsIDU5OTgwLCA1OTk4MywgNTk5ODcsIDU5OTkwLCA1OTk5MywgNTk5OTcsIDYwMDAxLCA2MDAwNSwgCisgICAgNjAwMDksIDYwMDEzLCA2MDAxNywgNjAwMjEsIDYwMDI1LCA2MDAyOSwgNjAwMzIsIDYwMDM2LCA2MDA0MCwgNjAwNDQsIAorICAgIDYwMDQ4LCA2MDA1MiwgNjAwNTYsIDYwMDYwLCA2MDA2NCwgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODAsIDYwMDg0LCAKKyAgICA2MDA4OSwgNjAwOTMsIDYwMDk3LCA2MDEwMSwgNjAxMDUsIDYwMTA4LCA2MDExMiwgNjAxMTUsIDYwMTE5LCA2MDEyMywgCisgICAgNjAxMjcsIDYwMTMxLCA2MDEzNCwgNjAxMzgsIDYwMTQxLCA2MDE0NSwgNjAxNDksIDYwMTUzLCA2MDE1NywgNjAxNjEsIAorICAgIDYwMTY1LCA2MDE2OSwgNjAxNzMsIDYwMTc3LCA2MDE4MSwgNjAxODUsIDYwMTg5LCA2MDE5MiwgNjAxOTYsIDYwMjAwLCAKKyAgICA2MDIwNCwgNjAyMDgsIDYwMjEyLCA2MDIxNSwgNjAyMjAsIDYwMjI0LCA2MDIyOSwgNjAyMzMsIDYwMjM2LCA2MDI0MCwgCisgICAgNjAyNDQsIDYwMjQ4LCA2MDI1MiwgNjAyNTcsIDYwMjYxLCA2MDI2NSwgNjAyNjksIDYwMjczLCA2MDI3NywgNjAyODEsIAorICAgIDYwMjg1LCA2MDI5MCwgNjAyOTQsIDYwMjk4LCA2MDMwMiwgNjAzMDYsIDYwMzExLCA2MDMxOCwgNjAzMjIsIDYwMzI4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA2MDMzMywgNjAzMzgsIDYwMzQzLCA2MDM0NywgNjAzNTIsIDYwMzU3LCA2MDM2MiwgNjAzNjcsIAorICAgIDYwMzcxLCA2MDM3NiwgNjAzODEsIDYwMzg2LCA2MDM5MSwgNjAzOTYsIDYwNDAxLCA2MDQwNiwgNjA0MTEsIDYwNDE2LCAKKyAgICA2MDQyMCwgNjA0MjUsIDYwNDMwLCA2MDQzNSwgNjA0MzksIDYwNDQzLCA2MDQ0NywgNjA0NTIsIDYwNDU3LCA2MDQ2MiwgCisgICAgNjA0NjcsIDYwNDcyLCA2MDQ3NywgNjA0ODIsIDYwNDg3LCA2MDQ5MiwgNjA0OTcsIDYwNTAxLCA2MDUwNSwgNjA1MTAsIAorICAgIDYwNTE1LCA2MDUyMCwgNjA1MjUsIDAsIDAsIDAsIDYwNTMwLCA2MDUzNCwgNjA1MzgsIDYwNTQyLCA2MDU0NiwgNjA1NTAsIAorICAgIDYwNTU0LCA2MDU1OCwgNjA1NjIsIDYwNTY2LCA2MDU3MCwgNjA1NzQsIDYwNTc4LCA2MDU4MiwgNjA1ODYsIDYwNTkwLCAKKyAgICA2MDU5NCwgNjA1OTgsIDYwNjAyLCA2MDYwNiwgNjA2MTAsIDYwNjE0LCA2MDYxOCwgNjA2MjIsIDYwNjI2LCA2MDYzMCwgCisgICAgNjA2MzQsIDYwNjM4LCA2MDY0MiwgNjA2NDYsIDYwNjUwLCA2MDY1MywgNjA2NTcsIDYwNjYwLCA2MDY2NCwgNjA2NjgsIAorICAgIDYwNjcxLCA2MDY3NSwgNjA2NzksIDYwNjgyLCA2MDY4NiwgNjA2OTAsIDYwNjk0LCA2MDY5OCwgNjA3MDEsIDYwNzA1LCAKKyAgICA2MDcwOSwgNjA3MTMsIDYwNzE3LCA2MDcyMSwgNjA3MjUsIDYwNzI4LCA2MDczMSwgNjA3MzUsIDYwNzM5LCA2MDc0MywgCisgICAgNjA3NDcsIDYwNzUxLCA2MDc1NSwgNjA3NTksIDYwNzYzLCA2MDc2NywgNjA3NzEsIDYwNzc1LCA2MDc3OSwgNjA3ODMsIAorICAgIDYwNzg3LCA2MDc5MSwgNjA3OTUsIDYwNzk5LCA2MDgwMywgNjA4MDcsIDYwODExLCA2MDgxNSwgNjA4MTksIDYwODIzLCAKKyAgICA2MDgyNywgNjA4MzEsIDYwODM1LCA2MDgzOSwgNjA4NDMsIDYwODQ3LCA2MDg1MSwgNjA4NTUsIDYwODU5LCA2MDg2MywgCisgICAgNjA4NjcsIDYwODcxLCA2MDg3NSwgNjA4NzksIDYwODgzLCA2MDg4NywgNjA4OTEsIDYwODk1LCAwLCA2MDg5OSwgNjA5MDUsIAorICAgIDYwOTExLCA2MDkxNiwgNjA5MjEsIDYwOTI2LCA2MDkzMiwgNjA5MzgsIDYwOTQ0LCA2MDk1MCwgNjA5NTYsIDYwOTYyLCAKKyAgICA2MDk2OCwgNjA5NzQsIDYwOTgwLCA2MDk4NiwgNjA5OTIsIDYwOTk3LCA2MTAwMiwgNjEwMDcsIDYxMDEyLCA2MTAxNywgCisgICAgNjEwMjIsIDYxMDI3LCA2MTAzMiwgNjEwMzcsIDYxMDQyLCA2MTA0NywgNjEwNTIsIDYxMDU3LCA2MTA2MiwgNjEwNjcsIAorICAgIDYxMDcyLCA2MTA3NywgNjEwODIsIDYxMDg3LCA2MTA5MiwgNjEwOTgsIDYxMTA0LCA2MTExMCwgNjExMTYsIDYxMTIxLCAKKyAgICA2MTEyNiwgMCwgMCwgMCwgMCwgMCwgNjExMzEsIDYxMTM2LCA2MTE0MSwgNjExNDYsIDYxMTUxLCA2MTE1NiwgNjExNjEsIAorICAgIDYxMTY2LCA2MTE3MSwgNjExNzYsIDYxMTgxLCA2MTE4NiwgNjExOTEsIDYxMTk2LCA2MTIwMSwgNjEyMDYsIDYxMjExLCAKKyAgICA2MTIxNiwgNjEyMjEsIDYxMjI2LCA2MTIzMSwgNjEyMzYsIDYxMjQxLCA2MTI0NiwgNjEyNTEsIDYxMjU2LCA2MTI2MSwgCisgICAgNjEyNjYsIDYxMjcxLCA2MTI3NiwgNjEyODEsIDYxMjg2LCA2MTI5MSwgNjEyOTYsIDYxMzAxLCA2MTMwNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzMTEsIDYxMzE2LCA2MTMyMSwgNjEzMjYsIDYxMzMwLCA2MTMzNSwgCisgICAgNjEzMzksIDYxMzQ0LCA2MTM0OSwgNjEzNTQsIDYxMzU5LCA2MTM2NCwgNjEzNjgsIDYxMzczLCA2MTM3OCwgNjEzODMsIAorICAgIDYxMzg4LCA2MTM5MiwgNjEzOTYsIDYxNDAwLCA2MTQwNCwgNjE0MDgsIDYxNDEyLCA2MTQxNiwgNjE0MjAsIDYxNDI0LCAKKyAgICA2MTQyOCwgNjE0MzIsIDYxNDM2LCA2MTQ0MCwgNjE0NDQsIDYxNDQ5LCA2MTQ1NCwgNjE0NTksIDYxNDY0LCA2MTQ2OSwgCisgICAgNjE0NzQsIDYxNDc5LCA2MTQ4NCwgNjE0ODksIDYxNDk0LCA2MTQ5OSwgNjE1MDQsIDYxNTA5LCA2MTUxNCwgNjE1MTksIAorICAgIDYxNTI1LCAwLCA2MTUzMiwgNjE1MzUsIDYxNTM4LCA2MTU0MSwgNjE1NDQsIDYxNTQ3LCA2MTU1MCwgNjE1NTMsIDYxNTU2LCAKKyAgICA2MTU1OSwgNjE1NjMsIDYxNTY3LCA2MTU3MSwgNjE1NzUsIDYxNTc5LCA2MTU4MywgNjE1ODcsIDYxNTkxLCA2MTU5NSwgCisgICAgNjE1OTksIDYxNjAzLCA2MTYwNywgNjE2MTEsIDYxNjE1LCA2MTYxOSwgNjE2MjMsIDYxNjI3LCA2MTYzMSwgNjE2MzUsIAorICAgIDYxNjM5LCA2MTY0MywgNjE2NDcsIDYxNjUxLCA2MTY1NSwgNjE2NTksIDYxNjYzLCA2MTY2NywgNjE2NzEsIDYxNjc1LCAKKyAgICA2MTY3OSwgNjE2ODMsIDYxNjkyLCA2MTcwMSwgNjE3MTAsIDYxNzE5LCA2MTcyOCwgNjE3MzcsIDYxNzQ2LCA2MTc1NSwgCisgICAgNjE3NTgsIDYxNzYzLCA2MTc2OCwgNjE3NzMsIDYxNzc4LCA2MTc4MywgNjE3ODgsIDYxNzkzLCA2MTc5OCwgNjE4MDMsIAorICAgIDYxODA3LCA2MTgxMiwgNjE4MTcsIDYxODIyLCA2MTgyNywgNjE4MzIsIDYxODM2LCA2MTg0MCwgNjE4NDQsIDYxODQ4LCAKKyAgICA2MTg1MiwgNjE4NTYsIDYxODYwLCA2MTg2NCwgNjE4NjgsIDYxODcyLCA2MTg3NiwgNjE4ODAsIDYxODg0LCA2MTg4OCwgCisgICAgNjE4OTMsIDYxODk4LCA2MTkwMywgNjE5MDgsIDYxOTEzLCA2MTkxOCwgNjE5MjMsIDYxOTI4LCA2MTkzMywgNjE5MzgsIAorICAgIDYxOTQzLCA2MTk0OCwgNjE5NTMsIDYxOTU4LCA2MTk2NCwgNjE5NzAsIDYxOTc1LCA2MTk4MCwgNjE5ODMsIDYxOTg2LCAKKyAgICA2MTk4OSwgNjE5OTIsIDYxOTk1LCA2MTk5OCwgNjIwMDEsIDYyMDA0LCA2MjAwNywgNjIwMTEsIDYyMDE1LCA2MjAxOSwgCisgICAgNjIwMjMsIDYyMDI3LCA2MjAzMSwgNjIwMzUsIDYyMDM5LCA2MjA0MywgNjIwNDcsIDYyMDUxLCA2MjA1NSwgNjIwNTksIAorICAgIDYyMDYzLCA2MjA2NywgNjIwNzEsIDYyMDc1LCA2MjA3OSwgNjIwODMsIDYyMDg3LCA2MjA5MSwgNjIwOTUsIDYyMDk5LCAKKyAgICA2MjEwMywgNjIxMDcsIDYyMTExLCA2MjExNSwgNjIxMTksIDYyMTIzLCA2MjEyNywgNjIxMzEsIDYyMTM1LCA2MjEzOSwgCisgICAgNjIxNDMsIDYyMTQ3LCA2MjE1MSwgNjIxNTUsIDYyMTU5LCA2MjE2MywgNjIxNjcsIDYyMTcyLCA2MjE3NywgNjIxODIsIAorICAgIDYyMTg3LCA2MjE5MSwgNjIxOTYsIDYyMjAxLCA2MjIwNiwgNjIyMTEsIDYyMjE2LCA2MjIyMSwgNjIyMjYsIDYyMjMxLCAKKyAgICA2MjIzNiwgNjIyNDAsIDYyMjQ3LCA2MjI1NCwgNjIyNjEsIDYyMjY4LCA2MjI3NSwgNjIyODIsIDYyMjg5LCA2MjI5NiwgCisgICAgNjIzMDMsIDYyMzEwLCA2MjMxNywgNjIzMjQsIDYyMzI3LCA2MjMzMCwgNjIzMzMsIDYyMzM4LCA2MjM0MSwgNjIzNDQsIAorICAgIDYyMzQ3LCA2MjM1MCwgNjIzNTMsIDYyMzU2LCA2MjM2MCwgNjIzNjQsIDYyMzY4LCA2MjM3MiwgNjIzNzUsIDYyMzc5LCAKKyAgICA2MjM4MywgNjIzODcsIDYyMzkxLCA2MjM5NSwgNjIzOTksIDYyNDAzLCA2MjQwNywgNjI0MTAsIDYyNDEzLCA2MjQxNywgCisgICAgNjI0MjEsIDYyNDI1LCA2MjQyOSwgNjI0MzIsIDYyNDM2LCA2MjQ0MCwgNjI0NDQsIDYyNDQ4LCA2MjQ1MSwgNjI0NTUsIAorICAgIDYyNDU5LCA2MjQ2MywgNjI0NjcsIDYyNDcwLCA2MjQ3NCwgNjI0NzgsIDYyNDgxLCA2MjQ4NSwgNjI0ODksIDYyNDkzLCAKKyAgICA2MjQ5NywgNjI1MDEsIDYyNTA1LCA2MjUwOSwgMCwgNjI1MTMsIDYyNTE2LCA2MjUxOSwgNjI1MjIsIDYyNTI1LCA2MjUyOCwgCisgICAgNjI1MzEsIDYyNTM0LCA2MjUzNywgNjI1NDAsIDYyNTQzLCA2MjU0NiwgNjI1NDksIDYyNTUyLCA2MjU1NSwgNjI1NTgsIAorICAgIDYyNTYxLCA2MjU2NCwgNjI1NjcsIDYyNTcwLCA2MjU3MywgNjI1NzYsIDYyNTc5LCA2MjU4MiwgNjI1ODUsIDYyNTg4LCAKKyAgICA2MjU5MSwgNjI1OTQsIDYyNTk3LCA2MjYwMCwgNjI2MDMsIDYyNjA2LCA2MjYwOSwgNjI2MTIsIDYyNjE1LCA2MjYxOCwgCisgICAgNjI2MjEsIDYyNjI0LCA2MjYyNywgNjI2MzAsIDYyNjMzLCA2MjYzNiwgNjI2MzksIDYyNjQyLCA2MjY0NSwgNjI2NDgsIAorICAgIDYyNjUxLCA2MjY1NCwgNjI2NTcsIDYyNjYwLCA2MjY2MywgNjI2NjYsIDYyNjY5LCA2MjY3MiwgNjI2NzUsIDYyNjc4LCAKKyAgICA2MjY4MSwgNjI2ODQsIDYyNjg3LCA2MjY5MCwgNjI2OTMsIDYyNjk2LCA2MjY5OSwgNjI3MDIsIDYyNzA1LCA2MjcwOCwgCisgICAgNjI3MTEsIDYyNzE0LCA2MjcxNywgNjI3MjAsIDYyNzIzLCA2MjcyNiwgNjI3MjksIDYyNzMyLCA2MjczNSwgNjI3MzgsIAorICAgIDYyNzQxLCA2Mjc0NCwgNjI3NDcsIDYyNzUwLCA2Mjc1MywgNjI3NTYsIDYyNzU5LCA2Mjc2MiwgNjI3NjUsIDYyNzY4LCAKKyAgICA2Mjc3MSwgNjI3NzQsIDYyNzc3LCA2Mjc4NiwgNjI3OTQsIDYyODAyLCA2MjgxMCwgNjI4MTgsIDYyODI2LCA2MjgzNCwgCisgICAgNjI4NDIsIDYyODUwLCA2Mjg1OCwgNjI4NjcsIDYyODc2LCA2Mjg4NSwgNjI4OTQsIDYyOTAzLCA2MjkxMiwgNjI5MjEsIAorICAgIDYyOTMwLCA2MjkzOSwgNjI5NDgsIDYyOTU3LCA2Mjk2NiwgNjI5NzUsIDYyOTg0LCA2Mjk5MywgNjI5OTYsIDYyOTk5LCAKKyAgICA2MzAwMiwgNjMwMDQsIDYzMDA3LCA2MzAxMCwgNjMwMTMsIDYzMDE4LCA2MzAyMywgNjMwMjYsIDYzMDMzLCA2MzA0MCwgCisgICAgNjMwNDcsIDYzMDU0LCA2MzA1NywgNjMwNjIsIDYzMDY0LCA2MzA2OCwgNjMwNzAsIDYzMDcyLCA2MzA3NSwgNjMwNzgsIAorICAgIDYzMDgxLCA2MzA4NCwgNjMwODcsIDYzMDkwLCA2MzA5MywgNjMwOTgsIDYzMTAzLCA2MzEwNiwgNjMxMDksIDYzMTEyLCAKKyAgICA2MzExNSwgNjMxMTgsIDYzMTIxLCA2MzEyNCwgNjMxMjgsIDYzMTMxLCA2MzEzNCwgNjMxMzcsIDYzMTQwLCA2MzE0MywgCisgICAgNjMxNDcsIDYzMTUwLCA2MzE1MywgNjMxNTYsIDYzMTYxLCA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIAorICAgIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjEwLCA2MzIxMiwgNjMyMTUsIDYzMjE4LCA2MzIyMSwgNjMyMjQsIDYzMjMwLCAKKyAgICA2MzIzOCwgNjMyNDEsIDYzMjQ0LCA2MzI0OSwgNjMyNTIsIDYzMjU1LCA2MzI1OCwgNjMyNjMsIDYzMjY2LCA2MzI2OSwgCisgICAgNjMyNzQsIDYzMjc3LCA2MzI4MCwgNjMyODUsIDYzMjg4LCA2MzI5MSwgNjMyOTYsIDYzMzAxLCA2MzMwNiwgNjMzMDksIAorICAgIDYzMzEyLCA2MzMxNSwgNjMzMTgsIDYzMzI0LCA2MzMyNywgNjMzMzAsIDYzMzMzLCA2MzMzNSwgNjMzMzgsIDYzMzQxLCAKKyAgICA2MzM0NCwgNjMzNDksIDYzMzUyLCA2MzM1NSwgNjMzNTgsIDYzMzYxLCA2MzM2NCwgNjMzNjksIDYzMzcyLCA2MzM3NSwgCisgICAgNjMzNzgsIDYzMzgxLCA2MzM4NCwgNjMzODcsIDYzMzkwLCA2MzM5MywgNjMzOTYsIDYzNDAxLCA2MzQwNSwgNjM0MTMsIAorICAgIDYzNDIxLCA2MzQyOSwgNjM0MzcsIDYzNDQ1LCA2MzQ1MywgNjM0NjEsIDYzNDY5LCA2MzQ3NywgNjM0ODYsIDYzNDk1LCAKKyAgICA2MzUwNCwgNjM1MTMsIDYzNTIyLCA2MzUzMSwgNjM1NDAsIDYzNTQ5LCA2MzU1OCwgNjM1NjcsIDYzNTc2LCA2MzU4NSwgCisgICAgNjM1OTQsIDYzNjAzLCA2MzYxMiwgNjM2MjEsIDYzNjMwLCA2MzYzOSwgNjM2NDgsIDYzNjU3LCA2MzY2NiwgNjM2NzUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNjc4LCA2MzY4NywgNjM2OTYsIDYzNzA3LCAKKyAgICA2MzcxNCwgNjM3MTksIDYzNzI0LCA2MzczMSwgNjM3MzgsIDYzNzQ0LCA2Mzc0OSwgNjM3NTQsIDYzNzU5LCA2Mzc2NCwgCisgICAgNjM3NzEsIDYzNzc2LCA2Mzc4MSwgNjM3ODYsIDYzNzk3LCA2MzgwMiwgNjM4MDcsIDYzODE0LCA2MzgxOSwgNjM4MjYsIAorICAgIDYzODMxLCA2MzgzNiwgNjM4NDMsIDYzODUwLCA2Mzg1NywgNjM4NjYsIDYzODc1LCA2Mzg4MCwgNjM4ODUsIDYzODkwLCAKKyAgICA2Mzg5NywgNjM5MDIsIDYzOTEyLCA2MzkxOSwgNjM5MjQsIDYzOTI5LCA2MzkzNCwgNjM5MzksIDYzOTQ0LCA2Mzk0OSwgCisgICAgNjM5NTgsIDYzOTY1LCA2Mzk3MiwgNjM5NzcsIDYzOTg0LCA2Mzk4OSwgNjM5OTYsIDY0MDA1LCA2NDAxNiwgNjQwMjEsIAorICAgIDY0MDMwLCA2NDAzNSwgNjQwNDIsIDY0MDUxLCA2NDA2MCwgNjQwNjUsIDY0MDcwLCA2NDA3NywgNjQwODMsIDY0MDkwLCAKKyAgICA2NDA5NywgNjQxMDEsIDY0MTA1LCA2NDEwOCwgNjQxMTIsIDY0MTE2LCA2NDEyMCwgNjQxMjQsIDY0MTI4LCA2NDEzMiwgCisgICAgNjQxMzYsIDY0MTM5LCA2NDE0MywgNjQxNDcsIDY0MTUxLCA2NDE1NSwgNjQxNTksIDY0MTYzLCA2NDE2NiwgNjQxNzAsIAorICAgIDY0MTc0LCA2NDE3NywgNjQxODEsIDY0MTg1LCA2NDE4OSwgNjQxOTMsIDY0MTk3LCA2NDIwMSwgNjQyMDUsIDY0MjA5LCAKKyAgICA2NDIxMywgNjQyMTcsIDY0MjIxLCA2NDIyNSwgNjQyMjksIDY0MjMzLCA2NDIzNywgNjQyNDEsIDY0MjQ1LCA2NDI0OSwgCisgICAgNjQyNTMsIDY0MjU3LCA2NDI2MSwgNjQyNjUsIDY0MjY5LCA2NDI3MywgNjQyNzcsIDY0MjgxLCA2NDI4NSwgNjQyODksIAorICAgIDY0MjkzLCA2NDI5NywgNjQzMDEsIDY0MzA1LCA2NDMwOSwgNjQzMTMsIDY0MzE3LCA2NDMyMSwgNjQzMjUsIDY0MzI5LCAKKyAgICA2NDMzMywgNjQzMzcsIDY0MzQxLCA2NDM0NSwgNjQzNDksIDY0MzUzLCA2NDM1NiwgNjQzNjAsIDY0MzY0LCA2NDM2OCwgCisgICAgNjQzNzIsIDY0Mzc2LCA2NDM4MCwgNjQzODQsIDY0Mzg4LCA2NDM5MiwgNjQzOTYsIDY0NDAwLCA2NDQwNCwgNjQ0MDgsIAorICAgIDY0NDEyLCA2NDQxNiwgNjQ0MjAsIDY0NDI0LCA2NDQyOCwgNjQ0MzIsIDY0NDM2LCA2NDQ0MCwgNjQ0NDQsIDY0NDQ4LCAKKyAgICA2NDQ1MiwgNjQ0NTYsIDY0NDYwLCA2NDQ2NCwgNjQ0NjgsIDY0NDcyLCA2NDQ3NiwgNjQ0ODAsIDY0NDg0LCA2NDQ4OCwgCisgICAgNjQ0OTIsIDY0NDk2LCA2NDUwMCwgNjQ1MDQsIDY0NTA4LCA2NDUxMiwgNjQ1MTYsIDY0NTIwLCA2NDUyNCwgNjQ1MjgsIAorICAgIDY0NTMyLCA2NDUzNiwgNjQ1NDAsIDY0NTQ0LCA2NDU0OCwgNjQ1NTIsIDY0NTU2LCA2NDU2MCwgNjQ1NjQsIDY0NTY4LCAKKyAgICA2NDU3MiwgNjQ1NzYsIDY0NTgwLCA2NDU4NCwgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgNjQ2MDAsIDY0NjA0LCA2NDYwOCwgCisgICAgNjQ2MTIsIDY0NjE2LCA2NDYyMCwgNjQ2MjQsIDY0NjI4LCA2NDYzMiwgNjQ2MzYsIDY0NjQwLCA2NDY0NCwgNjQ2NDgsIAorICAgIDY0NjUyLCA2NDY1NiwgNjQ2NjAsIDY0NjY0LCA2NDY2OCwgNjQ2NzIsIDY0Njc2LCA2NDY4MCwgNjQ2ODQsIDY0Njg4LCAKKyAgICA2NDY5MiwgNjQ2OTYsIDY0NzAwLCA2NDcwNCwgNjQ3MDgsIDY0NzEyLCA2NDcxNiwgNjQ3MjAsIDY0NzI0LCA2NDcyOCwgCisgICAgNjQ3MzIsIDY0NzM2LCA2NDc0MCwgNjQ3NDQsIDY0NzQ4LCA2NDc1MiwgNjQ3NTYsIDY0NzYwLCA2NDc2NCwgNjQ3NjgsIAorICAgIDY0NzcyLCA2NDc3NiwgNjQ3ODAsIDY0Nzg0LCA2NDc4OCwgNjQ3OTIsIDY0Nzk2LCA2NDgwMCwgNjQ4MDQsIDY0ODA4LCAKKyAgICA2NDgxMiwgNjQ4MTYsIDY0ODIwLCA2NDgyNCwgNjQ4MjcsIDY0ODMxLCA2NDgzNSwgNjQ4MzksIDY0ODQzLCA2NDg0NywgCisgICAgNjQ4NTEsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIDY0ODY3LCA2NDg3MSwgNjQ4NzUsIDY0ODc5LCA2NDg4MywgNjQ4ODcsIAorICAgIDY0ODkxLCA2NDg5NSwgNjQ4OTksIDY0OTAzLCA2NDkwNywgNjQ5MTEsIDY0OTE1LCA2NDkxOSwgNjQ5MjMsIDY0OTI3LCAKKyAgICA2NDkzMSwgNjQ5MzUsIDY0OTM5LCA2NDk0MywgNjQ5NDcsIDY0OTUxLCA2NDk1NSwgNjQ5NTksIDY0OTYzLCA2NDk2NywgCisgICAgNjQ5NzEsIDY0OTc1LCA2NDk3OSwgNjQ5ODMsIDY0OTg3LCA2NDk5MSwgNjQ5OTUsIDY0OTk5LCA2NTAwMywgNjUwMDcsIAorICAgIDY1MDExLCA2NTAxNSwgNjUwMTksIDY1MDIzLCA2NTAyNywgNjUwMzEsIDY1MDM1LCA2NTAzOSwgNjUwNDMsIDY1MDQ3LCAKKyAgICA2NTA1MSwgNjUwNTUsIDY1MDU5LCA2NTA2MywgNjUwNjcsIDY1MDcxLCA2NTA3NSwgNjUwNzksIDY1MDgzLCA2NTA4NywgCisgICAgNjUwOTEsIDY1MDk1LCA2NTA5OSwgNjUxMDMsIDY1MTA3LCA2NTExMSwgNjUxMTUsIDY1MTE5LCA2NTEyMywgNjUxMjcsIAorICAgIDY1MTMxLCA2NTEzNSwgNjUxMzksIDY1MTQzLCA2NTE0NywgNjUxNTEsIDY1MTU1LCA2NTE1OSwgNjUxNjMsIDY1MTY3LCAKKyAgICA2NTE3MSwgNjUxNzUsIDY1MTc5LCA2NTE4MywgNjUxODcsIDY1MTkxLCA2NTE5NSwgNjUxOTksIDY1MjAzLCA2NTIwNywgCisgICAgNjUyMTEsIDY1MjE1LCA2NTIxOSwgNjUyMjMsIDY1MjI3LCA2NTIzMSwgNjUyMzUsIDY1MjM5LCA2NTI0MywgNjUyNDcsIAorICAgIDY1MjUxLCA2NTI1NSwgNjUyNTksIDY1MjYzLCA2NTI2NywgNjUyNzEsIDY1Mjc1LCA2NTI3OSwgNjUyODMsIDY1Mjg3LCAKKyAgICA2NTI5MCwgNjUyOTQsIDY1Mjk4LCA2NTMwMiwgNjUzMDYsIDY1MzEwLCA2NTMxNCwgNjUzMTgsIDY1MzIyLCA2NTMyNiwgCisgICAgNjUzMzAsIDY1MzM0LCA2NTMzOCwgNjUzNDIsIDY1MzQ2LCA2NTM1MCwgNjUzNTQsIDY1MzU4LCA2NTM2MiwgNjUzNjYsIAorICAgIDY1MzcwLCA2NTM3NCwgNjUzNzgsIDY1MzgyLCA2NTM4NiwgNjUzOTAsIDY1Mzk0LCA2NTM5OCwgNjU0MDIsIDY1NDA2LCAKKyAgICA2NTQxMCwgNjU0MTQsIDY1NDE4LCA2NTQyMiwgNjU0MjYsIDY1NDMwLCA2NTQzNCwgNjU0MzgsIDY1NDQyLCA2NTQ0NiwgCisgICAgNjU0NTAsIDY1NDU0LCA2NTQ1OCwgNjU0NjIsIDY1NDY2LCA2NTQ3MCwgNjU0NzQsIDY1NDc4LCA2NTQ4MiwgNjU0ODYsIAorICAgIDY1NDkwLCA2NTQ5NCwgNjU0OTgsIDY1NTAyLCA2NTUwNiwgNjU1MTAsIDY1NTE0LCA2NTUxOCwgNjU1MjIsIDY1NTI2LCAKKyAgICA2NTUzMCwgNjU1MzQsIDY1NTM4LCA2NTU0MiwgNjU1NDYsIDY1NTUwLCA2NTU1NCwgNjU1NTgsIDY1NTYyLCA2NTU2NiwgCisgICAgNjU1NzAsIDY1NTc0LCA2NTU3OCwgNjU1ODIsIDY1NTg2LCA2NTU5MCwgNjU1OTQsIDY1NTk4LCA2NTYwMiwgNjU2MDYsIAorICAgIDY1NjEwLCA2NTYxNCwgNjU2MTgsIDY1NjIyLCA2NTYyNiwgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCAKKyAgICA2NTY0OSwgNjU2NTMsIDY1NjU3LCA2NTY2MSwgNjU2NjUsIDY1NjY5LCA2NTY3MywgNjU2NzcsIDY1NjgxLCA2NTY4NSwgCisgICAgNjU2ODksIDY1NjkzLCA2NTY5NywgNjU3MDEsIDY1NzA1LCA2NTcwOSwgNjU3MTMsIDY1NzE3LCA2NTcyMSwgNjU3MjUsIAorICAgIDY1NzI5LCA2NTczMywgNjU3MzcsIDY1NzQxLCA2NTc0NSwgNjU3NDksIDY1NzUzLCA2NTc1NywgNjU3NjEsIDY1NzY1LCAKKyAgICA2NTc2OSwgNjU3NzMsIDY1Nzc3LCA2NTc4MSwgNjU3ODUsIDY1Nzg5LCA2NTc5MywgNjU3OTcsIDY1ODAxLCA2NTgwNSwgCisgICAgNjU4MDksIDY1ODEzLCA2NTgxNywgNjU4MjEsIDY1ODI1LCA2NTgyOSwgNjU4MzMsIDY1ODM3LCA2NTg0MSwgNjU4NDUsIAorICAgIDY1ODQ5LCA2NTg1MywgNjU4NTcsIDY1ODYxLCA2NTg2NSwgNjU4NjksIDY1ODczLCA2NTg3NywgNjU4ODEsIDY1ODg1LCAKKyAgICA2NTg4OSwgNjU4OTMsIDY1ODk3LCA2NTkwMSwgNjU5MDUsIDY1OTA5LCA2NTkxMywgNjU5MTcsIDY1OTIxLCA2NTkyNSwgCisgICAgNjU5MjksIDY1OTMzLCA2NTkzNywgNjU5NDEsIDY1OTQ1LCA2NTk0OSwgNjU5NTMsIDY1OTU3LCA2NTk2MSwgNjU5NjUsIAorICAgIDY1OTY5LCA2NTk3MywgNjU5NzcsIDY1OTgxLCA2NTk4NSwgNjU5ODksIDY1OTkzLCA2NTk5NywgNjYwMDEsIDY2MDA1LCAKKyAgICA2NjAwOSwgNjYwMTMsIDY2MDE3LCA2NjAyMSwgNjYwMjUsIDY2MDI5LCA2NjAzMywgNjYwMzcsIDY2MDQxLCA2NjA0NSwgCisgICAgNjYwNDksIDY2MDUzLCA2NjA1NywgNjYwNjEsIDY2MDY1LCA2NjA2OSwgNjYwNzMsIDY2MDc3LCA2NjA4MSwgNjYwODUsIAorICAgIDY2MDg5LCA2NjA5MywgNjYwOTcsIDY2MTAxLCA2NjEwNSwgNjYxMDksIDY2MTEzLCA2NjExNywgNjYxMjEsIDY2MTI1LCAKKyAgICA2NjEyOSwgNjYxMzMsIDY2MTM3LCA2NjE0MSwgNjYxNDQsIDY2MTQ4LCA2NjE1MiwgNjYxNTYsIDY2MTYwLCA2NjE2NCwgCisgICAgNjYxNjgsIDY2MTcyLCA2NjE3NiwgNjYxODAsIDY2MTg0LCA2NjE4OCwgNjYxOTIsIDY2MTk2LCA2NjIwMCwgNjYyMDQsIAorICAgIDY2MjA4LCA2NjIxMiwgNjYyMTYsIDY2MjIwLCA2NjIyNCwgNjYyMjgsIDY2MjMyLCA2NjIzNiwgNjYyNDAsIDY2MjQ0LCAKKyAgICA2NjI0OCwgNjYyNTIsIDY2MjU2LCA2NjI2MCwgNjYyNjQsIDY2MjY4LCA2NjI3MiwgNjYyNzYsIDY2MjgwLCA2NjI4NCwgCisgICAgNjYyODgsIDY2MjkyLCA2NjI5NiwgNjYzMDAsIDY2MzA0LCA2NjMwOCwgNjYzMTIsIDY2MzE2LCA2NjMyMCwgNjYzMjQsIAorICAgIDY2MzI4LCA2NjMzMiwgNjYzMzYsIDY2MzQwLCA2NjM0NCwgNjYzNDgsIDY2MzUyLCA2NjM1NiwgNjYzNjAsIDY2MzY0LCAKKyAgICA2NjM2OCwgNjYzNzIsIDY2Mzc2LCA2NjM4MCwgNjYzODQsIDY2Mzg4LCA2NjM5MiwgNjYzOTYsIDY2NDAwLCA2NjQwNCwgCisgICAgNjY0MDgsIDY2NDEyLCA2NjQxNiwgNjY0MjAsIDY2NDI0LCA2NjQyOCwgNjY0MzIsIDY2NDM2LCA2NjQ0MCwgNjY0NDQsIAorICAgIDY2NDQ4LCA2NjQ1MiwgNjY0NTYsIDY2NDYwLCA2NjQ2NCwgNjY0NjgsIDY2NDcyLCA2NjQ3NiwgNjY0ODAsIDY2NDg0LCAKKyAgICA2NjQ4OCwgNjY0OTIsIDY2NDk2LCA2NjUwMCwgNjY1MDQsIDY2NTA4LCA2NjUxMiwgNjY1MTYsIDY2NTIwLCA2NjUyNCwgCisgICAgNjY1MjgsIDY2NTMyLCA2NjUzNiwgNjY1NDAsIDY2NTQ0LCA2NjU0OCwgNjY1NTIsIDY2NTU2LCA2NjU2MCwgNjY1NjQsIAorICAgIDY2NTY4LCA2NjU3MiwgNjY1NzYsIDY2NTgwLCA2NjU4NCwgNjY1ODgsIDY2NTkyLCA2NjU5NiwgNjY1OTksIDY2NjAzLCAKKyAgICA2NjYwNywgNjY2MTEsIDY2NjE1LCA2NjYxOSwgNjY2MjMsIDY2NjI3LCA2NjYzMSwgNjY2MzUsIDY2NjM5LCA2NjY0MywgCisgICAgNjY2NDcsIDY2NjUxLCA2NjY1NSwgNjY2NTksIDY2NjYzLCA2NjY2NywgNjY2NzEsIDY2Njc1LCA2NjY3OSwgNjY2ODMsIAorICAgIDY2Njg3LCA2NjY5MSwgNjY2OTUsIDY2Njk5LCA2NjcwMywgNjY3MDcsIDY2NzExLCA2NjcxNSwgNjY3MTksIDY2NzIzLCAKKyAgICA2NjcyNywgNjY3MzEsIDY2NzM1LCA2NjczOSwgNjY3NDMsIDY2NzQ3LCA2Njc1MSwgNjY3NTUsIDY2NzU5LCA2Njc2MywgCisgICAgNjY3NjcsIDY2NzcxLCA2Njc3NSwgNjY3NzksIDY2NzgzLCA2Njc4NywgNjY3OTEsIDY2Nzk1LCA2Njc5OSwgNjY4MDMsIAorICAgIDY2ODA3LCA2NjgxMSwgNjY4MTUsIDY2ODE5LCA2NjgyMywgNjY4MjcsIDY2ODMxLCA2NjgzNSwgNjY4MzksIDY2ODQzLCAKKyAgICA2Njg0NywgNjY4NTEsIDY2ODU1LCA2Njg1OSwgNjY4NjMsIDY2ODY3LCA2Njg3MSwgNjY4NzUsIDY2ODc5LCA2Njg4MywgCisgICAgNjY4ODcsIDY2ODkxLCA2Njg5NSwgNjY4OTksIDY2OTAzLCA2NjkwNywgNjY5MTEsIDY2OTE1LCA2NjkxOSwgNjY5MjMsIAorICAgIDY2OTI3LCA2NjkzMSwgNjY5MzUsIDY2OTM5LCA2Njk0MywgNjY5NDcsIDY2OTUxLCA2Njk1NSwgNjY5NTksIDY2OTYzLCAKKyAgICA2Njk2NywgNjY5NzEsIDY2OTc1LCA2Njk3OSwgNjY5ODMsIDY2OTg3LCA2Njk5MSwgNjY5OTUsIDY2OTk5LCA2NzAwMywgCisgICAgNjcwMDcsIDY3MDExLCA2NzAxNSwgNjcwMTksIDY3MDIzLCA2NzAyNywgNjcwMzEsIDY3MDM1LCA2NzAzOSwgNjcwNDMsIAorICAgIDY3MDQ3LCA2NzA1MSwgNjcwNTUsIDY3MDU5LCA2NzA2MywgNjcwNjcsIDY3MDcxLCA2NzA3NSwgNjcwNzksIDY3MDgzLCAKKyAgICA2NzA4NywgNjcwOTEsIDY3MDk1LCA2NzA5OSwgNjcxMDMsIDY3MTA3LCA2NzExMSwgNjcxMTUsIDY3MTE5LCA2NzEyMywgCisgICAgNjcxMjcsIDY3MTMxLCA2NzEzNSwgNjcxMzksIDY3MTQzLCA2NzE0NywgNjcxNTEsIDY3MTU1LCA2NzE1OSwgNjcxNjMsIAorICAgIDY3MTY3LCA2NzE3MSwgNjcxNzUsIDY3MTc5LCA2NzE4MywgNjcxODcsIDY3MTkxLCA2NzE5NSwgNjcxOTksIDY3MjAyLCAKKyAgICA2NzIwNiwgNjcyMTAsIDY3MjE0LCA2NzIxOCwgNjcyMjIsIDY3MjI2LCA2NzIzMCwgNjcyMzMsIDY3MjM3LCA2NzI0MSwgCisgICAgNjcyNDUsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYxLCA2NzI2NSwgNjcyNjksIDY3MjczLCA2NzI3NywgNjcyODEsIAorICAgIDY3Mjg1LCA2NzI4OSwgNjcyOTMsIDY3Mjk3LCA2NzMwMSwgNjczMDUsIDY3MzA5LCA2NzMxMywgNjczMTcsIDY3MzIxLCAKKyAgICA2NzMyNSwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgCisgICAgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIAorICAgIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCAKKyAgICA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgCisgICAgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgNjc1MDksIDY3NTEzLCA2NzUxNywgNjc1MjEsIAorICAgIDY3NTI1LCA2NzUyOSwgNjc1MzMsIDY3NTM3LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1MywgNjc1NTcsIDY3NTYxLCAKKyAgICA2NzU2NSwgNjc1NjksIDY3NTczLCA2NzU3NywgNjc1ODEsIDY3NTg1LCA2NzU4OSwgNjc1OTMsIDY3NTk3LCA2NzYwMSwgCisgICAgNjc2MDUsIDY3NjA5LCA2NzYxMywgNjc2MTcsIDY3NjIxLCA2NzYyNSwgNjc2MjksIDY3NjMzLCA2NzYzNywgNjc2NDEsIAorICAgIDY3NjQ1LCA2NzY0OSwgNjc2NTMsIDY3NjU3LCA2NzY2MSwgNjc2NjUsIDY3NjY5LCA2NzY3MywgNjc2NzcsIDY3NjgxLCAKKyAgICA2NzY4NSwgNjc2ODksIDY3NjkzLCA2NzY5NywgNjc3MDEsIDY3NzA1LCA2NzcwOSwgNjc3MTMsIDY3NzE3LCA2NzcyMSwgCisgICAgNjc3MjUsIDY3NzI5LCA2NzczMywgNjc3MzcsIDY3NzQxLCA2Nzc0NSwgNjc3NDksIDY3NzUzLCA2Nzc1NywgNjc3NjEsIAorICAgIDY3NzY1LCA2Nzc2OSwgNjc3NzMsIDY3Nzc3LCA2Nzc4MSwgNjc3ODUsIDY3Nzg5LCA2Nzc5MywgNjc3OTcsIDY3ODAxLCAKKyAgICA2NzgwNSwgNjc4MDksIDY3ODEzLCA2NzgxNywgNjc4MjEsIDY3ODI1LCA2NzgyOSwgNjc4MzMsIDY3ODM3LCA2Nzg0MSwgCisgICAgNjc4NDUsIDY3ODQ5LCA2Nzg1MywgNjc4NTcsIDY3ODYxLCA2Nzg2NSwgNjc4NjksIDY3ODczLCA2Nzg3NywgNjc4ODEsIAorICAgIDY3ODg1LCA2Nzg4OSwgNjc4OTMsIDY3ODk3LCA2NzkwMSwgNjc5MDUsIDY3OTA5LCA2NzkxMywgNjc5MTcsIDY3OTIxLCAKKyAgICA2NzkyNSwgNjc5MjksIDY3OTMzLCA2NzkzNywgNjc5NDEsIDY3OTQ1LCA2Nzk0OSwgNjc5NTMsIDY3OTU3LCA2Nzk2MCwgCisgICAgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTgwLCA2Nzk4NCwgNjc5ODgsIDY3OTkyLCA2Nzk5NiwgNjgwMDAsIAorICAgIDY4MDA0LCA2ODAwOCwgNjgwMTIsIDY4MDE2LCA2ODAyMCwgNjgwMjQsIDY4MDI4LCA2ODAzMiwgNjgwMzYsIDY4MDQwLCAKKyAgICA2ODA0NCwgNjgwNDgsIDY4MDUyLCA2ODA1NiwgNjgwNjAsIDY4MDY0LCA2ODA2OCwgNjgwNzIsIDY4MDc2LCA2ODA4MCwgCisgICAgNjgwODQsIDY4MDg4LCA2ODA5MiwgNjgwOTYsIDY4MTAwLCA2ODEwNCwgNjgxMDgsIDY4MTEyLCA2ODExNiwgNjgxMjAsIAorICAgIDY4MTI0LCA2ODEyOCwgNjgxMzIsIDY4MTM2LCA2ODE0MCwgNjgxNDQsIDY4MTQ4LCA2ODE1MiwgNjgxNTYsIDY4MTYwLCAKKyAgICA2ODE2NCwgNjgxNjgsIDY4MTcyLCA2ODE3NiwgNjgxODAsIDY4MTg0LCA2ODE4OCwgNjgxOTIsIDY4MTk2LCA2ODIwMCwgCisgICAgNjgyMDQsIDY4MjA4LCA2ODIxMiwgNjgyMTYsIDY4MjIwLCA2ODIyNCwgNjgyMjgsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIAorICAgIDY4MjQ0LCA2ODI0OCwgNjgyNTIsIDY4MjU2LCA2ODI2MCwgNjgyNjQsIDY4MjY4LCA2ODI3MiwgNjgyNzYsIDY4MjgwLCAKKyAgICA2ODI4NCwgNjgyODgsIDY4MjkyLCA2ODI5NiwgNjgzMDAsIDY4MzA0LCA2ODMwOCwgNjgzMTIsIDY4MzE2LCA2ODMyMCwgCisgICAgNjgzMjQsIDY4MzI4LCA2ODMzMiwgNjgzMzYsIDY4MzQwLCA2ODM0NCwgNjgzNDgsIDY4MzUyLCA2ODM1NiwgNjgzNjAsIAorICAgIDY4MzY0LCA2ODM2OCwgNjgzNzIsIDY4Mzc2LCA2ODM4MCwgNjgzODQsIDY4Mzg4LCA2ODM5MiwgNjgzOTYsIDY4NDAwLCAKKyAgICA2ODQwNCwgNjg0MDgsIDY4NDEyLCA2ODQxNiwgNjg0MjAsIDY4NDI0LCA2ODQyOCwgNjg0MzIsIDY4NDM2LCA2ODQ0MCwgCisgICAgNjg0NDQsIDY4NDQ4LCA2ODQ1MiwgNjg0NTYsIDY4NDYwLCA2ODQ2NCwgNjg0NjgsIDY4NDcyLCA2ODQ3NiwgNjg0ODAsIAorICAgIDY4NDg0LCA2ODQ4OCwgNjg0OTIsIDY4NDk2LCA2ODUwMCwgNjg1MDQsIDY4NTA4LCA2ODUxMiwgNjg1MTYsIDY4NTIwLCAKKyAgICA2ODUyNCwgNjg1MjgsIDY4NTMyLCA2ODUzNiwgNjg1NDAsIDY4NTQ0LCA2ODU0OCwgNjg1NTIsIDY4NTU2LCA2ODU2MCwgCisgICAgNjg1NjQsIDY4NTY4LCA2ODU3MiwgNjg1NzYsIDY4NTgwLCA2ODU4NCwgNjg1ODgsIDY4NTkyLCA2ODU5NiwgNjg2MDAsIAorICAgIDY4NjA0LCA2ODYwOCwgNjg2MTIsIDY4NjE2LCA2ODYyMCwgNjg2MjQsIDY4NjI4LCA2ODYzMiwgNjg2MzYsIDY4NjQwLCAKKyAgICA2ODY0NCwgNjg2NDgsIDY4NjUyLCA2ODY1NiwgNjg2NjAsIDY4NjY0LCA2ODY2OCwgNjg2NzIsIDY4Njc2LCA2ODY4MCwgCisgICAgNjg2ODQsIDY4Njg4LCA2ODY5MiwgNjg2OTYsIDY4NzAwLCA2ODcwNCwgNjg3MDgsIDY4NzEyLCA2ODcxNiwgNjg3MjAsIAorICAgIDY4NzI0LCA2ODcyOCwgNjg3MzIsIDY4NzM2LCA2ODc0MCwgMCwgMCwgMCwgNjg3NDQsIDY4NzQ4LCA2ODc1MiwgNjg3NTYsIAorICAgIDY4NzYwLCA2ODc2NCwgNjg3NjgsIDY4NzcyLCA2ODc3NiwgNjg3ODAsIDY4Nzg0LCA2ODc4OCwgNjg3OTIsIDY4Nzk2LCAKKyAgICA2ODgwMCwgNjg4MDQsIDY4ODA4LCA2ODgxMiwgNjg4MTYsIDY4ODIwLCA2ODgyNCwgNjg4MjgsIDY4ODMyLCA2ODgzNiwgCisgICAgNjg4NDAsIDY4ODQ0LCA2ODg0OCwgNjg4NTIsIDY4ODU2LCA2ODg2MCwgNjg4NjQsIDY4ODY4LCA2ODg3MiwgNjg4NzYsIAorICAgIDY4ODgwLCA2ODg4NCwgNjg4ODgsIDY4ODkyLCA2ODg5NiwgNjg5MDAsIDY4OTA0LCA2ODkwOCwgNjg5MTIsIDY4OTE2LCAKKyAgICA2ODkyMCwgNjg5MjQsIDY4OTI4LCA2ODkzMiwgNjg5MzYsIDY4OTQwLCA2ODk0NCwgNjg5NDgsIDY4OTUyLCA2ODk1NiwgCisgICAgNjg5NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY4OTY0LCA2ODk2OSwgNjg5NzMsIDY4OTc4LCA2ODk4MywgCisgICAgNjg5ODgsIDY4OTkzLCA2ODk5OCwgNjkwMDIsIDY5MDA3LCA2OTAxMiwgNjkwMTcsIDY5MDIyLCA2OTAyNywgNjkwMzIsIAorICAgIDY5MDM3LCA2OTA0MSwgNjkwNDUsIDY5MDUwLCA2OTA1NCwgNjkwNTksIDY5MDY0LCA2OTA2OSwgNjkwNzMsIDY5MDc4LCAKKyAgICA2OTA4MywgNjkwODgsIDY5MDkzLCA2OTA5OCwgNjkxMDIsIDY5MTA3LCA2OTExMSwgNjkxMTYsIDY5MTIwLCA2OTEyNSwgCisgICAgNjkxMjksIDY5MTMzLCA2OTEzNywgNjkxNDIsIDY5MTQ3LCA2OTE1MiwgNjkxNjAsIDY5MTY4LCA2OTE3NiwgNjkxODQsIAorICAgIDY5MTkxLCA2OTE5OSwgNjkyMDUsIDY5MjEzLCA2OTIxNywgNjkyMjEsIDY5MjI1LCA2OTIyOSwgNjkyMzMsIDY5MjM3LCAKKyAgICA2OTI0MSwgNjkyNDUsIDY5MjQ5LCA2OTI1MywgNjkyNTcsIDY5MjYxLCA2OTI2NSwgNjkyNjksIDY5MjczLCA2OTI3NywgCisgICAgNjkyODEsIDY5Mjg1LCA2OTI4OSwgNjkyOTMsIDY5Mjk3LCA2OTMwMSwgNjkzMDUsIDY5MzA5LCA2OTMxMywgNjkzMTcsIAorICAgIDY5MzIxLCA2OTMyNSwgNjkzMjksIDY5MzMzLCA2OTMzNywgNjkzNDEsIDY5MzQ1LCA2OTM0OSwgNjkzNTMsIDY5MzU3LCAKKyAgICA2OTM2MCwgNjkzNjQsIDY5MzY4LCA2OTM3MiwgNjkzNzYsIDY5MzgwLCA2OTM4NCwgNjkzODgsIDY5MzkyLCA2OTM5NiwgCisgICAgNjk0MDAsIDY5NDA0LCA2OTQwOCwgNjk0MTIsIDY5NDE2LCA2OTQyMCwgNjk0MjQsIDY5NDI4LCA2OTQzMiwgNjk0MzYsIAorICAgIDY5NDQwLCA2OTQ0NCwgNjk0NDgsIDY5NDUyLCA2OTQ1NiwgNjk0NjAsIDY5NDY0LCA2OTQ2OCwgNjk0NzIsIDY5NDc2LCAKKyAgICA2OTQ4MCwgNjk0ODQsIDY5NDg4LCA2OTQ5MiwgNjk0OTYsIDY5NTAwLCA2OTUwNCwgNjk1MDcsIDY5NTExLCA2OTUxNSwgCisgICAgNjk1MTgsIDY5NTIyLCA2OTUyNiwgNjk1MzAsIDY5NTMzLCA2OTUzNywgNjk1NDEsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIAorICAgIDY5NTU3LCA2OTU2MSwgNjk1NjUsIDY5NTY5LCA2OTU3MywgNjk1NzcsIDY5NTgxLCA2OTU4NSwgNjk1ODksIDY5NTkyLCAKKyAgICA2OTU5NiwgNjk2MDAsIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE1LCA2OTYxOSwgNjk2MjMsIDY5NjI3LCA2OTYzMCwgCisgICAgNjk2MzMsIDY5NjM3LCA2OTY0MSwgNjk2NDUsIDY5NjQ4LCA2OTY1MSwgNjk2NTUsIDY5NjU5LCA2OTY2MywgNjk2NjcsIAorICAgIDY5NjcxLCA2OTY3NSwgNjk2NzksIDY5NjgzLCA2OTY4NywgNjk2OTEsIDY5Njk1LCA2OTY5OSwgNjk3MDMsIDY5NzA3LCAKKyAgICA2OTcxMSwgNjk3MTUsIDY5NzE5LCA2OTcyMywgNjk3MjcsIDY5NzMxLCA2OTczNSwgNjk3MzksIDY5NzQzLCA2OTc0NywgCisgICAgNjk3NTEsIDY5NzU1LCA2OTc1OSwgNjk3NjMsIDY5NzY3LCA2OTc3MSwgNjk3NzUsIDY5Nzc5LCA2OTc4MywgNjk3ODcsIAorICAgIDY5NzkxLCA2OTc5NSwgNjk3OTksIDY5ODAyLCA2OTgwNiwgNjk4MTAsIDY5ODE0LCA2OTgxOCwgNjk4MjIsIDY5ODI2LCAKKyAgICA2OTgzMCwgNjk4MzQsIDY5ODM4LCA2OTg0MiwgNjk4NDYsIDY5ODUwLCA2OTg1NCwgNjk4NTgsIDY5ODYyLCA2OTg2NiwgCisgICAgNjk4NzAsIDY5ODc0LCA2OTg3OCwgNjk4ODIsIDY5ODg2LCA2OTg5MCwgNjk4OTQsIDY5ODk4LCA2OTkwMiwgNjk5MDYsIAorICAgIDY5OTEwLCA2OTkxNCwgNjk5MTgsIDY5OTIyLCA2OTkyNiwgNjk5MzAsIDY5OTM0LCA2OTkzOCwgNjk5NDIsIDY5OTQ2LCAKKyAgICA2OTk0OSwgNjk5NTMsIDY5OTU3LCA2OTk2MSwgNjk5NjUsIDY5OTY5LCA2OTk3MywgNjk5NzcsIDY5OTgxLCA2OTk4NSwgCisgICAgNjk5ODksIDY5OTkzLCA2OTk5NywgNzAwMDEsIDcwMDA1LCA3MDAwOSwgNzAwMTMsIDcwMDE2LCA3MDAyMCwgNzAwMjQsIAorICAgIDcwMDI4LCA3MDAzMiwgNzAwMzYsIDcwMDQwLCA3MDA0NCwgNzAwNDgsIDcwMDUyLCA3MDA1NiwgNzAwNjAsIDcwMDY0LCAKKyAgICA3MDA2OCwgNzAwNzIsIDcwMDc2LCA3MDA4MCwgNzAwODQsIDcwMDg4LCA3MDA5MiwgNzAwOTYsIDcwMTAwLCA3MDEwMywgCisgICAgNzAxMDcsIDcwMTExLCA3MDExNSwgNzAxMTksIDcwMTIzLCA3MDEyNywgNzAxMzEsIDcwMTM1LCA3MDEzOSwgNzAxNDMsIAorICAgIDcwMTQ3LCA3MDE1MSwgNzAxNTUsIDcwMTU5LCA3MDE2MywgNzAxNjcsIDcwMTcxLCA3MDE3NSwgNzAxNzksIDcwMTgzLCAKKyAgICA3MDE4NywgNzAxOTEsIDcwMTk1LCA3MDE5OSwgNzAyMDMsIDcwMjA3LCA3MDIxMSwgNzAyMTUsIDcwMjE5LCA3MDIyMywgCisgICAgNzAyMjcsIDcwMjMxLCA3MDIzNSwgNzAyMzksIDcwMjQzLCA3MDI0NywgNzAyNTEsIDcwMjU1LCA3MDI1OSwgNzAyNjMsIAorICAgIDcwMjY3LCA3MDI3MSwgNzAyNzUsIDcwMjc4LCA3MDI4MywgNzAyODcsIDcwMjkzLCA3MDI5OCwgNzAzMDQsIDcwMzA4LCAKKyAgICA3MDMxMiwgNzAzMTYsIDcwMzIwLCA3MDMyNCwgNzAzMjgsIDcwMzMyLCA3MDMzNiwgNzAzNDAsIDcwMzQ0LCA3MDM0OCwgCisgICAgNzAzNTIsIDcwMzU2LCA3MDM2MCwgNzAzNjMsIDcwMzY2LCA3MDM2OSwgNzAzNzIsIDcwMzc1LCA3MDM3OCwgNzAzODEsIAorICAgIDcwMzg0LCA3MDM4NywgNzAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDcwMzk4LCA3MDQwMywgNzA0MDgsIDcwNDEzLCA3MDQxOCwgNzA0MjUsIDcwNDMyLCA3MDQzNywgNzA0NDIsIAorICAgIDcwNDQ3LCA3MDQ1MiwgNzA0NTksIDcwNDY2LCA3MDQ3MywgNzA0ODAsIDcwNDg3LCA3MDQ5NCwgNzA1MDQsIDcwNTE0LCAKKyAgICA3MDUyMSwgNzA1MjgsIDcwNTM1LCA3MDU0MiwgNzA1NDgsIDcwNTU0LCA3MDU2MywgNzA1NzIsIDcwNTc5LCA3MDU4NiwgCisgICAgNzA1OTcsIDcwNjA4LCA3MDYxMywgNzA2MTgsIDcwNjI1LCA3MDYzMiwgNzA2MzksIDcwNjQ2LCA3MDY1MywgNzA2NjAsIAorICAgIDcwNjY3LCA3MDY3NCwgNzA2ODAsIDcwNjg2LCA3MDY5MiwgNzA2OTgsIDcwNzA1LCA3MDcxMiwgNzA3MTcsIDcwNzIxLCAKKyAgICA3MDcyOCwgNzA3MzUsIDcwNzQyLCA3MDc0NiwgNzA3NTMsIDcwNzU3LCA3MDc2MiwgNzA3NjYsIDcwNzcyLCA3MDc3NywgCisgICAgNzA3ODMsIDcwNzg4LCA3MDc5MiwgNzA3OTYsIDcwNzk5LCA3MDgwMiwgNzA4MDcsIDcwODEyLCA3MDgxNywgNzA4MjIsIAorICAgIDcwODI3LCA3MDgzMiwgNzA4MzcsIDcwODQyLCA3MDg0NywgNzA4NTIsIDcwODYxLCA3MDg3MCwgNzA4NzUsIDcwODgwLCAKKyAgICA3MDg4NSwgNzA4OTAsIDcwODk1LCA3MDkwMCwgNzA5MDUsIDcwOTEwLCA3MDkxNSwgNzA5MjAsIDcwOTI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3MDkzMCwgNzA5MzYsIDcwOTM5LCA3MDk0MiwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIAorICAgIDcwOTYxLCA3MDk2NCwgNzA5NjgsIDcwOTcxLCA3MDk3NSwgNzA5NzgsIDcwOTgyLCA3MDk4NiwgNzA5OTAsIDcwOTk0LCAKKyAgICA3MDk5OCwgNzEwMDIsIDcxMDA2LCA3MTAwOSwgNzEwMTMsIDcxMDE3LCA3MTAyMSwgNzEwMjUsIDcxMDI5LCA3MTAzMywgCisgICAgNzEwMzcsIDcxMDQxLCA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgNzEwNjEsIDcxMDY1LCA3MTA2OCwgNzEwNzIsIAorICAgIDcxMDc2LCA3MTA4MCwgNzEwODQsIDcxMDg4LCA3MTA5MiwgNzEwOTYsIDcxMTAwLCA3MTEwNCwgNzExMDgsIDcxMTEyLCAKKyAgICA3MTExNiwgNzExMjAsIDcxMTI0LCA3MTEyOCwgNzExMzIsIDcxMTM2LCA3MTE0MCwgNzExNDQsIDcxMTQ4LCA3MTE1MiwgCisgICAgNzExNTYsIDcxMTYwLCA3MTE2NCwgNzExNjcsIDcxMTcxLCA3MTE3NSwgNzExNzksIDcxMTgzLCA3MTE4NywgNzExOTEsIAorICAgIDcxMTk1LCA3MTE5OCwgNzEyMDIsIDcxMjA2LCA3MTIxMCwgNzEyMTQsIDcxMjE4LCA3MTIyMiwgNzEyMjYsIDcxMjMwLCAKKyAgICA3MTIzNCwgNzEyMzgsIDcxMjQyLCA3MTI0NiwgNzEyNTEsIDcxMjU2LCA3MTI1OSwgNzEyNjQsIDcxMjY3LCA3MTI3MCwgCisgICAgNzEyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxMjc3LCA3MTI4NiwgNzEyOTUsIDcxMzA0LCA3MTMxMywgNzEzMjIsIAorICAgIDcxMzMxLCA3MTM0MCwgNzEzNDksIDcxMzU3LCA3MTM2NCwgNzEzNzIsIDcxMzc5LCA3MTM4NywgNzEzOTcsIDcxNDA2LCAKKyAgICA3MTQxNiwgNzE0MjUsIDcxNDM1LCA3MTQ0MywgNzE0NTAsIDcxNDU4LCA3MTQ2NSwgNzE0NzMsIDcxNDc4LCA3MTQ4MywgCisgICAgNzE0ODgsIDcxNDk3LCA3MTUwMywgNzE1MDksIDcxNTE2LCA3MTUyNSwgNzE1MzMsIDcxNTQxLCA3MTU0OSwgNzE1NTYsIAorICAgIDcxNTYzLCA3MTU3MCwgNzE1NzcsIDcxNTgyLCA3MTU4NywgNzE1OTIsIDcxNTk3LCA3MTYwMiwgNzE2MDcsIDcxNjEyLCAKKyAgICA3MTYxNywgNzE2MjUsIDcxNjMzLCA3MTYzOSwgNzE2NDUsIDcxNjUwLCA3MTY1NSwgNzE2NjAsIDcxNjY1LCA3MTY3MCwgCisgICAgNzE2NzUsIDcxNjgwLCA3MTY4NSwgNzE2OTMsIDcxNzAxLCA3MTcwNiwgNzE3MTEsIDcxNzIxLCA3MTczMSwgNzE3MzgsIAorICAgIDcxNzQ1LCA3MTc1NCwgNzE3NjMsIDcxNzc1LCA3MTc4NywgNzE3OTMsIDcxNzk5LCA3MTgwNywgNzE4MTUsIDcxODI1LCAKKyAgICA3MTgzNSwgNzE4NDIsIDcxODQ5LCA3MTg1NCwgNzE4NTksIDcxODcxLCA3MTg4MywgNzE4OTEsIDcxODk5LCA3MTkwOSwgCisgICAgNzE5MTksIDcxOTMxLCA3MTk0MywgNzE5NTIsIDcxOTYxLCA3MTk2OCwgNzE5NzUsIDcxOTgyLCA3MTk4OSwgNzE5OTgsIAorICAgIDcyMDA3LCA3MjAxMiwgNzIwMTcsIDcyMDI0LCA3MjAzMSwgNzIwMzgsIDcyMDQ1LCA3MjA1NywgNzIwNjksIDcyMDc0LCAKKyAgICA3MjA3OSwgNzIwODQsIDcyMDg5LCA3MjA5NCwgNzIwOTksIDcyMTA0LCA3MjEwOSwgNzIxMTMsIDcyMTE4LCA3MjEyMywgCisgICAgNzIxMjgsIDcyMTMzLCA3MjEzOCwgNzIxNDQsIDcyMTQ5LCA3MjE1NCwgNzIxNjEsIDcyMTY4LCA3MjE3NSwgNzIxODIsIAorICAgIDcyMTg5LCA3MjE5OCwgNzIyMDcsIDcyMjEzLCA3MjIxOSwgNzIyMjUsIDcyMjMxLCA3MjIzOCwgNzIyNDUsIDcyMjUyLCAKKyAgICA3MjI1OSwgNzIyNjYsIDcyMjcwLCA3MjI3NywgNzIyODIsIDcyMjg3LCA3MjI5NCwgMCwgNzIzMDcsIDcyMzE1LCA3MjMyMywgCisgICAgNzIzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMzM3LCA3MjM0NiwgNzIzNTUsIDcyMzY0LCAKKyAgICA3MjM3MywgNzIzODIsIDcyMzkxLCA3MjQwMCwgNzI0MDksIDcyNDE4LCA3MjQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI0MzQsIAorICAgIDcyNDQxLCA3MjQ0NywgNzI0NTQsIDcyNDYyLCA3MjQ3MCwgNzI0NzcsIDcyNDg1LCA3MjQ5MiwgNzI0OTgsIDcyNTA0LCAKKyAgICA3MjUxMSwgNzI1MTcsIDcyNTIzLCA3MjUyOSwgNzI1MzYsIDcyNTQzLCA3MjU1MCwgNzI1NTcsIDcyNTY0LCA3MjU3MSwgCisgICAgNzI1NzgsIDcyNTg1LCA3MjU5MiwgNzI1OTksIDcyNjA2LCA3MjYxMywgNzI2MjAsIDcyNjI3LCA3MjYzMywgNzI2NDAsIAorICAgIDcyNjQ3LCA3MjY1NCwgNzI2NjEsIDcyNjY4LCA3MjY3NSwgNzI2ODIsIDcyNjg5LCA3MjY5NiwgNzI3MDMsIDcyNzEwLCAKKyAgICA3MjcxNywgNzI3MjQsIDcyNzMxLCA3MjczOCwgNzI3NDUsIDcyNzUyLCA3Mjc1OSwgNzI3NjcsIDcyNzc1LCA3Mjc4MywgCisgICAgNzI3OTEsIDAsIDAsIDAsIDAsIDcyNzk5LCA3MjgwOCwgNzI4MTcsIDcyODI2LCA3MjgzNSwgNzI4NDQsIDcyODUzLCAKKyAgICA3Mjg2MCwgNzI4NjcsIDcyODc0LCAwLCAwLCAwLCAwLCAwLCAwLCA3Mjg4MSwgNzI4ODUsIDcyODkwLCA3Mjg5NSwgNzI5MDAsIAorICAgIDcyOTA1LCA3MjkxMCwgNzI5MTUsIDcyOTIwLCA3MjkyNSwgNzI5MzAsIDcyOTM1LCA3MjkzOSwgNzI5NDMsIDcyOTQ4LCAKKyAgICA3Mjk1MywgNzI5NTcsIDcyOTYyLCA3Mjk2NywgNzI5NzIsIDcyOTc3LCA3Mjk4MiwgNzI5ODcsIDcyOTkyLCA3Mjk5NiwgCisgICAgNzMwMDAsIDczMDA1LCA3MzAxMCwgNzMwMTQsIDczMDE4LCA3MzAyMiwgNzMwMjYsIDczMDMwLCA3MzAzNCwgNzMwMzgsIAorICAgIDczMDQzLCA3MzA0OCwgNzMwNTMsIDczMDU4LCA3MzA2MywgNzMwNzAsIDczMDc2LCA3MzA4MSwgNzMwODYsIDczMDkxLCAKKyAgICA3MzA5NiwgNzMxMDIsIDczMTA5LCA3MzExNSwgNzMxMjIsIDczMTI4LCA3MzEzNCwgNzMxMzksIDczMTQ2LCA3MzE1MiwgCisgICAgNzMxNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczMTYzLCA3MzE2NywgNzMxNzEsIDczMTc0LCA3MzE3OCwgNzMxODEsIAorICAgIDczMTg1LCA3MzE4OCwgNzMxOTIsIDczMTk2LCA3MzIwMSwgNzMyMDUsIDczMjEwLCA3MzIxMywgNzMyMTcsIDczMjIxLCAKKyAgICA3MzIyNCwgNzMyMjgsIDczMjMyLCA3MzIzNSwgNzMyMzksIDczMjQzLCA3MzI0NywgNzMyNTEsIDczMjU1LCA3MzI1OSwgCisgICAgNzMyNjMsIDczMjY3LCA3MzI3MSwgNzMyNzUsIDczMjc5LCA3MzI4MywgNzMyODcsIDczMjkxLCA3MzI5NSwgNzMyOTksIAorICAgIDczMzAzLCA3MzMwNywgNzMzMTAsIDczMzEzLCA3MzMxNywgNzMzMjEsIDczMzI1LCA3MzMyOCwgNzMzMzEsIDczMzM0LCAKKyAgICA3MzMzOCwgNzMzNDIsIDczMzQ2LCA3MzM1MCwgNzMzNTMsIDczMzU2LCA3MzM2MCwgNzMzNjUsIDczMzcwLCA3MzM3NCwgCisgICAgNzMzNzksIDczMzgzLCA3MzM4OCwgNzMzOTMsIDczMzk5LCA3MzQwNCwgNzM0MTAsIDczNDE0LCA3MzQxOSwgNzM0MjQsIAorICAgIDczNDI4LCA3MzQzMywgNzM0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczNDQyLCA3MzQ0NSwgNzM0NDksIAorICAgIDczNDUzLCA3MzQ1NiwgNzM0NTksIDczNDYyLCA3MzQ2NSwgNzM0NjgsIDczNDcxLCA3MzQ3NCwgNzM0NzcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDczNDgwLCA3MzQ4NSwgNzM0ODksIDczNDkzLCA3MzQ5NywgNzM1MDEsIDczNTA1LCA3MzUwOSwgNzM1MTMsIAorICAgIDczNTE3LCA3MzUyMSwgNzM1MjUsIDczNTI5LCA3MzUzMywgNzM1MzcsIDczNTQxLCA3MzU0NSwgNzM1NTAsIDczNTU1LCAKKyAgICA3MzU2MSwgNzM1NjcsIDczNTc0LCA3MzU3OSwgNzM1ODQsIDczNTkwLCA3MzU5NCwgNzM1OTksIDczNjAyLCAwLCAwLCAwLCAKKyAgICAwLCA3MzYwNSwgNzM2MTIsIDczNjE4LCA3MzYyNCwgNzM2MzAsIDczNjM2LCA3MzY0MiwgNzM2NDgsIDczNjU0LCA3MzY2MCwgCisgICAgNzM2NjYsIDczNjcyLCA3MzY3OSwgNzM2ODYsIDczNjkzLCA3MzY5OSwgNzM3MDYsIDczNzEzLCA3MzcyMCwgNzM3MjcsIAorICAgIDczNzM0LCA3Mzc0MCwgNzM3NDYsIDczNzUzLCA3Mzc1OSwgNzM3NjYsIDczNzczLCA3Mzc3OSwgNzM3ODUsIDczNzkyLCAKKyAgICA3Mzc5OSwgNzM4MDYsIDczODEyLCA3MzgxOSwgNzM4MjYsIDczODMyLCA3MzgzOSwgNzM4NDUsIDczODUyLCA3Mzg1OSwgCisgICAgNzM4NjUsIDczODcxLCA3Mzg3OCwgNzM4ODQsIDczODkxLCA3Mzg5OCwgNzM5MDcsIDczOTE0LCA3MzkyMSwgNzM5MjUsIAorICAgIDczOTMwLCA3MzkzNSwgNzM5NDAsIDczOTQ1LCA3Mzk0OSwgNzM5NTMsIDczOTU4LCA3Mzk2MiwgNzM5NjcsIDczOTcyLCAKKyAgICA3Mzk3NywgNzM5ODEsIDczOTg1LCA3Mzk5MCwgNzM5OTQsIDczOTk5LCA3NDAwMywgNzQwMDgsIDc0MDEzLCA3NDAxOCwgCisgICAgNzQwMjMsIDc0MDI3LCA3NDAzMiwgNzQwMzcsIDc0MDQyLCA3NDA0OCwgNzQwNTMsIDc0MDU5LCA3NDA2NSwgNzQwNzEsIAorICAgIDc0MDc3LCA3NDA4MywgNzQwODgsIDc0MDk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDA5OCwgCisgICAgNzQxMDMsIDc0MTA3LCA3NDExMSwgNzQxMTUsIDc0MTE5LCA3NDEyMywgNzQxMjcsIDc0MTMxLCA3NDEzNSwgNzQxMzksIAorICAgIDc0MTQzLCA3NDE0NywgNzQxNTEsIDc0MTU1LCA3NDE1OSwgNzQxNjMsIDc0MTY3LCA3NDE3MSwgNzQxNzUsIDc0MTc5LCAKKyAgICA3NDE4MywgNzQxODcsIDc0MTkxLCA3NDE5NSwgNzQxOTksIDc0MjAzLCA3NDIwNywgNzQyMTEsIDc0MjE1LCAwLCAwLCAwLCAKKyAgICA3NDIxOSwgNzQyMjMsIDc0MjI3LCA3NDIzMSwgNzQyMzUsIDc0MjM4LCA3NDI0NCwgNzQyNDcsIDc0MjUxLCA3NDI1NCwgCisgICAgNzQyNjAsIDc0MjY2LCA3NDI3NCwgNzQyNzcsIDc0MjgxLCA3NDI4NCwgNzQyODcsIDc0MjkzLCA3NDI5OSwgNzQzMDMsIAorICAgIDc0MzA5LCA3NDMxMywgNzQzMTcsIDc0MzIzLCA3NDMyNywgNzQzMzMsIDc0MzM5LCA3NDM0MywgNzQzNDcsIDc0MzUzLCAKKyAgICA3NDM1NywgNzQzNjMsIDc0MzY5LCA3NDM3MywgNzQzNzksIDc0MzgzLCA3NDM4OSwgNzQzOTIsIDc0Mzk1LCA3NDQwMSwgCisgICAgNzQ0MDUsIDc0NDExLCA3NDQxNCwgNzQ0MTcsIDc0NDIwLCA3NDQyNiwgNzQ0MzAsIDc0NDM0LCA3NDQ0MCwgNzQ0NDYsIAorICAgIDc0NDQ5LCA3NDQ1MiwgNzQ0NTgsIDc0NDYzLCA3NDQ2OCwgNzQ0NzMsIDc0NDgwLCA3NDQ4NSwgNzQ0OTIsIDc0NDk3LCAKKyAgICA3NDUwNCwgNzQ1MDksIDc0NTE0LCA3NDUxOSwgNzQ1MjQsIDc0NTI3LCA3NDUzMSwgNzQ1MzUsIDc0NTQwLCA3NDU0NSwgCisgICAgNzQ1NTAsIDc0NTU1LCA3NDU2MCwgNzQ1NjUsIDc0NTcwLCA3NDU3NSwgNzQ1ODIsIDc0NTg3LCAwLCA3NDU5NCwgNzQ1OTcsIAorICAgIDc0NjAxLCA3NDYwNCwgNzQ2MDcsIDc0NjEwLCA3NDYxMywgNzQ2MTYsIDc0NjE5LCA3NDYyMiwgNzQ2MjUsIDAsIDAsIDAsIAorICAgIDAsIDc0NjI4LCA3NDYzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ2NDAsIDc0NjQzLCA3NDY0NiwgNzQ2NDksIDc0NjUyLCAKKyAgICA3NDY1NiwgNzQ2NTksIDc0NjYyLCA3NDY2NiwgNzQ2NzAsIDc0Njc0LCA3NDY3OCwgNzQ2ODIsIDc0Njg2LCA3NDY5MCwgCisgICAgNzQ2OTQsIDc0Njk4LCA3NDcwMiwgNzQ3MDYsIDc0NzEwLCA3NDcxNCwgNzQ3MTgsIDc0NzIyLCA3NDcyNiwgNzQ3MzAsIAorICAgIDc0NzMzLCA3NDczNywgNzQ3NDAsIDc0NzQ0LCA3NDc0OCwgNzQ3NTIsIDc0NzU2LCA3NDc2MCwgNzQ3NjMsIDc0NzY3LCAKKyAgICA3NDc3MCwgNzQ3NzMsIDc0Nzc3LCA3NDc4MSwgNzQ3ODUsIDc0Nzg4LCA3NDc5MSwgNzQ3OTYsIDc0ODAwLCA3NDgwNSwgCisgICAgNzQ4MTAsIDc0ODE0LCA3NDgxOSwgNzQ4MjMsIDc0ODI4LCA3NDgzMywgNzQ4MzgsIDc0ODQyLCA3NDg0NiwgNzQ4NTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0ODU2LCA3NDg2MSwgNzQ4NjYsIDc0ODcxLCA3NDg3NywgNzQ4ODIsIDc0ODg3LCAKKyAgICA3NDg5MiwgNzQ4OTcsIDc0OTAyLCA3NDkwNiwgNzQ5MTAsIDc0OTE1LCA3NDkyMCwgMCwgMCwgNzQ5MjYsIDc0OTMwLCAKKyAgICA3NDkzMywgNzQ5MzYsIDc0OTM5LCA3NDk0MiwgNzQ5NDUsIDc0OTQ4LCA3NDk1MSwgNzQ5NTQsIDAsIDAsIDc0OTU3LCAKKyAgICA3NDk2MiwgNzQ5NjcsIDc0OTczLCA3NDk4MCwgNzQ5ODYsIDc0OTkyLCA3NDk5OCwgNzUwMDQsIDc1MDEwLCA3NTAxNiwgCisgICAgNzUwMjIsIDc1MDI4LCA3NTAzNCwgNzUwNDAsIDc1MDQ2LCA3NTA1MSwgNzUwNTYsIDc1MDYxLCA3NTA2NywgNzUwNzMsIAorICAgIDc1MDgwLCA3NTA4NiwgNzUwOTIsIDc1MDk3LCA3NTEwNCwgNzUxMTEsIDc1MTE4LCA3NTEyNCwgNzUxMjksIDc1MTM0LCAKKyAgICA3NTEzOSwgMCwgMCwgMCwgMCwgNzUxNDcsIDc1MTUzLCA3NTE1OSwgNzUxNjUsIDc1MTcxLCA3NTE3NywgNzUxODMsIAorICAgIDc1MTg5LCA3NTE5NSwgNzUyMDEsIDc1MjA3LCA3NTIxMywgNzUyMTksIDc1MjI1LCA3NTIzMSwgNzUyMzcsIDc1MjQzLCAKKyAgICA3NTI0OSwgNzUyNTUsIDc1MjYxLCA3NTI2NywgNzUyNzIsIDc1Mjc3LCA3NTI4MywgNzUyODksIDc1Mjk1LCA3NTMwMSwgCisgICAgNzUzMDcsIDc1MzEzLCA3NTMxOSwgNzUzMjUsIDc1MzMxLCA3NTMzNywgNzUzNDMsIDc1MzQ5LCA3NTM1NSwgNzUzNjEsIAorICAgIDc1MzY3LCA3NTM3MywgNzUzNzksIDc1Mzg1LCA3NTM5MSwgNzUzOTcsIDc1NDAzLCA3NTQwOSwgNzU0MTUsIDc1NDIxLCAKKyAgICA3NTQyNiwgNzU0MzEsIDc1NDM3LCA3NTQ0MiwgNzU0NDYsIDc1NDUxLCA3NTQ1NSwgNzU0NTksIDc1NDYzLCA3NTQ2OSwgCisgICAgNzU0NzQsIDc1NDc5LCA3NTQ4NCwgNzU0ODksIDc1NDk0LCA3NTQ5OSwgNzU1MDQsIDc1NTExLCA3NTUxOCwgNzU1MjUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDczNzY0LCA3Mzc2NywgNzM3NzAsIDczNzczLCA3Mzc3NiwgNzM3ODAsIDczNzgzLCA3Mzc4NiwgNzM3OTAsIDczNzk0LCAKLSAgICA3Mzc5OCwgNzM4MDIsIDczODA2LCA3MzgxMCwgNzM4MTQsIDczODE4LCA3MzgyMiwgNzM4MjYsIDczODMwLCA3MzgzNCwgCi0gICAgNzM4MzgsIDczODQyLCA3Mzg0NiwgNzM4NTAsIDczODU0LCA3Mzg1NywgNzM4NjEsIDczODY0LCA3Mzg2OCwgNzM4NzIsIAotICAgIDczODc2LCA3Mzg4MCwgNzM4ODQsIDczODg3LCA3Mzg5MSwgNzM4OTQsIDczODk3LCA3MzkwMSwgNzM5MDUsIDczOTA5LCAKLSAgICA3MzkxMywgNzM5MTYsIDczOTIxLCA3MzkyNSwgNzM5MzAsIDczOTM1LCA3MzkzOSwgNzM5NDQsIDczOTQ4LCA3Mzk1MywgCi0gICAgNzM5NTgsIDczOTYzLCA3Mzk2OCwgNzM5NzMsIDczOTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3Mzk4NSwgCi0gICAgNzM5OTAsIDczOTk1LCA3NDAwMCwgNzQwMDcsIDc0MDEyLCA3NDAxNywgNzQwMjEsIDc0MDI2LCA3NDAzMSwgNzQwMzUsIAotICAgIDc0MDM5LCA3NDA0NCwgNzQwNTAsIDAsIDAsIDc0MDU3LCA3NDA2MSwgNzQwNjQsIDc0MDY3LCA3NDA3MCwgNzQwNzMsIAotICAgIDc0MDc2LCA3NDA3OSwgNzQwODIsIDc0MDg1LCAwLCAwLCA3NDA4OCwgNzQwOTMsIDc0MDk4LCA3NDEwNCwgNzQxMTEsIAotICAgIDc0MTE3LCA3NDEyMywgNzQxMjksIDc0MTM1LCA3NDE0MSwgNzQxNDcsIDc0MTUzLCA3NDE1OSwgNzQxNjUsIDc0MTcxLCAKLSAgICA3NDE3NywgNzQxODIsIDc0MTg4LCA3NDE5MywgNzQxOTksIDc0MjA1LCA3NDIxMiwgNzQyMTgsIDc0MjI0LCA3NDIyOSwgCi0gICAgNzQyMzYsIDc0MjQzLCA3NDI1MCwgNzQyNTYsIDc0MjYxLCA3NDI2NiwgNzQyNzEsIDAsIDAsIDAsIDAsIDc0Mjc5LCAKLSAgICA3NDI4NSwgNzQyOTEsIDc0Mjk3LCA3NDMwMywgNzQzMDksIDc0MzE1LCA3NDMyMSwgNzQzMjcsIDc0MzMzLCA3NDMzOSwgCi0gICAgNzQzNDUsIDc0MzUxLCA3NDM1NywgNzQzNjMsIDc0MzY5LCA3NDM3NSwgNzQzODEsIDc0Mzg3LCA3NDM5MywgNzQzOTksIAotICAgIDc0NDA0LCA3NDQwOSwgNzQ0MTUsIDc0NDIxLCA3NDQyNywgNzQ0MzMsIDc0NDM5LCA3NDQ0NSwgNzQ0NTEsIDc0NDU3LCAKLSAgICA3NDQ2MywgNzQ0NjksIDc0NDc1LCA3NDQ4MSwgNzQ0ODcsIDc0NDkzLCA3NDQ5OSwgNzQ1MDUsIDc0NTExLCA3NDUxNywgCi0gICAgNzQ1MjMsIDc0NTI5LCA3NDUzNSwgNzQ1NDEsIDc0NTQ3LCA3NDU1MywgNzQ1NTgsIDc0NTYzLCA3NDU2OSwgNzQ1NzQsIAotICAgIDc0NTc4LCA3NDU4MywgNzQ1ODcsIDc0NTkxLCA3NDU5NSwgNzQ2MDEsIDc0NjA2LCA3NDYxMSwgNzQ2MTYsIDc0NjIxLCAKLSAgICA3NDYyNiwgNzQ2MzEsIDc0NjM2LCA3NDY0MywgNzQ2NTAsIDc0NjU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDY2NCwgNzQ2NjksIDc0Njc0LCA3NDY3OSwgCi0gICAgNzQ2ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NjkzLCA3NDY5NywgNzQ3MDEsIDc0NzA1LCA3NDcwOSwgCi0gICAgNzQ3MTMsIDAsIDAsIDc0NzE3LCA3NDcyMSwgNzQ3MjUsIDc0NzI5LCA3NDczMywgNzQ3MzcsIDAsIDAsIDc0NzQxLCAKLSAgICA3NDc0NSwgNzQ3NDksIDc0NzUzLCA3NDc1NywgNzQ3NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NzY1LCAKLSAgICA3NDc2OSwgNzQ3NzMsIDc0Nzc3LCA3NDc4MSwgNzQ3ODUsIDc0Nzg5LCAwLCA3NDc5MywgNzQ3OTcsIDc0ODAxLCA3NDgwNSwgCi0gICAgNzQ4MDksIDc0ODEzLCA3NDgxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU1MzIsIDc1NTM3LCA3NTU0MiwgNzU1NDcsIDc1NTU0LCA3NTU2MSwgNzU1NjUsIDc1NTY5LCA3NTU3NCwgNzU1NzksIAorICAgIDc1NTg0LCA3NTU4OSwgNzU1OTQsIDc1NTk5LCA3NTYwNCwgNzU2MDksIDc1NjE0LCA3NTYyMCwgNzU2MjYsIDc1NjMyLCAKKyAgICA3NTYzOCwgNzU2NDQsIDc1NjQ4LCA3NTY1NCwgNzU2NTgsIDc1NjY0LCA3NTY3MSwgNzU2NzcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc1NjgxLCA3NTY4NSwgNzU2ODksIDc1NjkzLCA3NTY5NywgNzU3MDEsIDAsIDAsIDc1NzA1LCA3NTcwOSwgCisgICAgNzU3MTMsIDc1NzE3LCA3NTcyMSwgNzU3MjUsIDAsIDAsIDc1NzI5LCA3NTczMywgNzU3MzcsIDc1NzQxLCA3NTc0NSwgCisgICAgNzU3NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzUzLCA3NTc1NywgNzU3NjEsIDc1NzY1LCA3NTc2OSwgCisgICAgNzU3NzMsIDc1Nzc3LCAwLCA3NTc4MSwgNzU3ODUsIDc1Nzg5LCA3NTc5MywgNzU3OTcsIDc1ODAxLCA3NTgwNSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ4MjEsIDc0ODI4LCA3NDgzNSwgNzQ4NDIsIDc0ODQ5LCA3NDg1NSwgNzQ4NjEsIAotICAgIDc0ODY4LCA3NDg3NSwgNzQ4ODIsIDc0ODg5LCA3NDg5NiwgNzQ5MDMsIDc0OTEwLCA3NDkxNywgNzQ5MjQsIDc0OTMwLCAKLSAgICA3NDkzNywgNzQ5NDQsIDc0OTUxLCA3NDk1OCwgNzQ5NjUsIDc0OTcyLCA3NDk3OSwgNzQ5ODYsIDc0OTkzLCA3NTAwMCwgCi0gICAgNzUwMDcsIDc1MDE2LCA3NTAyNSwgNzUwMzQsIDc1MDQzLCA3NTA1MiwgNzUwNjEsIDc1MDcwLCA3NTA3OSwgNzUwODcsIAotICAgIDc1MDk1LCA3NTEwMywgNzUxMTEsIDc1MTE5LCA3NTEyNywgNzUxMzUsIDc1MTQzLCA3NTE0OSwgNzUxNTcsIDAsIDAsIAotICAgIDc1MTY1LCA3NTE3MiwgNzUxNzgsIDc1MTg0LCA3NTE5MCwgNzUxOTYsIDc1MjAyLCA3NTIwOCwgNzUyMTQsIDc1MjIwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NTgwOSwgNzU4MTQsIDc1ODE5LCA3NTgyNCwgNzU4MjksIDc1ODMzLCA3NTgzNywgNzU4NDIsIDc1ODQ3LCA3NTg1MiwgCisgICAgNzU4NTcsIDc1ODYyLCA3NTg2NywgNzU4NzIsIDc1ODc3LCA3NTg4MiwgNzU4ODYsIDc1ODkxLCA3NTg5NiwgNzU5MDEsIAorICAgIDc1OTA2LCA3NTkxMSwgNzU5MTYsIDc1OTIxLCA3NTkyNiwgNzU5MzEsIDc1OTM2LCA3NTk0MSwgNzU5NDgsIDc1OTU1LCAKKyAgICA3NTk2MiwgNzU5NjksIDc1OTc2LCA3NTk4MywgNzU5OTAsIDc1OTk3LCA3NjAwMywgNzYwMDksIDc2MDE1LCA3NjAyMSwgCisgICAgNzYwMjcsIDc2MDMzLCA3NjAzOSwgNzYwNDUsIDc2MDQ5LCA3NjA1NSwgMCwgMCwgNzYwNjEsIDc2MDY2LCA3NjA3MCwgCisgICAgNzYwNzQsIDc2MDc4LCA3NjA4MiwgNzYwODYsIDc2MDkwLCA3NjA5NCwgNzYwOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTAyLCAKKyAgICA3NjEwNiwgNzYxMTAsIDc2MTE0LCA3NjExOCwgNzYxMjIsIDc2MTI2LCA3NjEzMCwgNzYxMzQsIDc2MTM4LCA3NjE0MiwgCisgICAgNzYxNDYsIDc2MTUwLCA3NjE1NCwgNzYxNTgsIDc2MTYyLCA3NjE2NiwgNzYxNzAsIDc2MTc0LCA3NjE3OCwgNzYxODIsIAorICAgIDc2MTg2LCA3NjE5MCwgMCwgMCwgMCwgMCwgNzYxOTQsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgCisgICAgNzYyMTgsIDc2MjIyLCA3NjIyNiwgNzYyMzAsIDc2MjM0LCA3NjIzOCwgNzYyNDIsIDc2MjQ2LCA3NjI1MCwgNzYyNTQsIAorICAgIDc2MjU4LCA3NjI2MiwgNzYyNjYsIDc2MjcwLCA3NjI3NCwgNzYyNzgsIDc2MjgyLCA3NjI4NiwgNzYyOTAsIDc2Mjk0LCAKKyAgICA3NjI5OCwgNzYzMDIsIDc2MzA2LCA3NjMxMCwgNzYzMTQsIDc2MzE4LCA3NjMyMiwgNzYzMjYsIDc2MzMwLCA3NjMzNCwgCisgICAgNzYzMzgsIDc2MzQyLCA3NjM0NiwgNzYzNTAsIDc2MzU0LCA3NjM1OCwgNzYzNjIsIDc2MzY2LCA3NjM3MCwgNzYzNzQsIAorICAgIDc2Mzc4LCA3NjM4MiwgNzYzODYsIDAsIDAsIDAsIDAsIDc2MzkwLCA3NjM5NCwgNzYzOTgsIDc2NDAyLCA3NjQwNiwgCisgICAgNzY0MTAsIDc2NDE0LCA3NjQxOCwgNzY0MjIsIDc2NDI2LCA3NjQzMCwgNzY0MzQsIDc2NDM4LCA3NjQ0MiwgNzY0NDYsIAorICAgIDc2NDUwLCA3NjQ1NCwgNzY0NTgsIDc2NDYyLCA3NjQ2NiwgNzY0NzAsIDc2NDc0LCA3NjQ3OCwgNzY0ODIsIDc2NDg2LCAKKyAgICA3NjQ5MCwgNzY0OTQsIDc2NDk4LCA3NjUwMiwgNzY1MDYsIDc2NTEwLCA3NjUxNCwgNzY1MTgsIDc2NTIyLCA3NjUyNiwgCisgICAgNzY1MzAsIDc2NTM0LCA3NjUzOCwgNzY1NDIsIDc2NTQ2LCA3NjU1MCwgNzY1NTQsIDc2NTU4LCA3NjU2MiwgNzY1NjYsIAorICAgIDc2NTcwLCA3NjU3NCwgNzY1NzgsIDc2NTgyLCA3NjU4NiwgNzY1OTAsIDc2NTk0LCA3NjU5OCwgNzY2MDIsIDc2NjA2LCAKKyAgICA3NjYxMCwgNzY2MTQsIDc2NjE4LCA3NjYyMiwgNzY2MjYsIDc2NjMwLCA3NjYzNCwgNzY2MzgsIDc2NjQyLCA3NjY0NiwgCisgICAgNzY2NTAsIDc2NjU0LCA3NjY1OCwgNzY2NjIsIDc2NjY2LCA3NjY3MCwgNzY2NzQsIDc2Njc4LCA3NjY4MiwgNzY2ODYsIAorICAgIDc2NjkwLCA3NjY5NCwgNzY2OTgsIDc2NzAyLCA3NjcwNiwgNzY3MTAsIDc2NzE0LCA3NjcxOCwgNzY3MjIsIDc2NzI2LCAKKyAgICA3NjczMCwgNzY3MzQsIDc2NzM4LCA3Njc0MiwgNzY3NDYsIDc2NzUwLCA3Njc1NCwgNzY3NTgsIDc2NzYyLCA3Njc2NiwgCisgICAgNzY3NzAsIDc2Nzc0LCA3Njc3OCwgNzY3ODIsIDc2Nzg2LCA3Njc5MCwgNzY3OTQsIDc2Nzk4LCA3NjgwMiwgNzY4MDYsIAorICAgIDc2ODEwLCA3NjgxNCwgNzY4MTgsIDc2ODIyLCA3NjgyNiwgNzY4MzAsIDc2ODM0LCA3NjgzOCwgNzY4NDIsIDc2ODQ2LCAKKyAgICA3Njg1MCwgNzY4NTQsIDc2ODU4LCA3Njg2MiwgNzY4NjYsIDc2ODcwLCA3Njg3NCwgNzY4NzgsIDc2ODgyLCA3Njg4NiwgCisgICAgNzY4OTAsIDc2ODk0LCA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCA3NjkyMiwgNzY5MjYsIAorICAgIDc2OTMwLCA3NjkzNCwgNzY5MzgsIDc2OTQyLCA3Njk0NiwgNzY5NTAsIDc2OTU0LCA3Njk1OCwgNzY5NjIsIDc2OTY2LCAKKyAgICA3Njk3MCwgNzY5NzQsIDc2OTc4LCA3Njk4MiwgNzY5ODYsIDc2OTkwLCA3Njk5NCwgNzY5OTgsIDc3MDAyLCA3NzAwNiwgCisgICAgNzcwMTAsIDc3MDE0LCA3NzAxOCwgNzcwMjIsIDc3MDI2LCA3NzAzMCwgNzcwMzQsIDc3MDM4LCA3NzA0MiwgNzcwNDYsIAorICAgIDc3MDUwLCA3NzA1NCwgNzcwNTgsIDc3MDYyLCA3NzA2NiwgNzcwNzAsIDc3MDc0LCA3NzA3OCwgNzcwODIsIDc3MDg2LCAKKyAgICA3NzA5MCwgNzcwOTQsIDc3MDk4LCA3NzEwMiwgNzcxMDYsIDc3MTEwLCA3NzExNCwgNzcxMTgsIDc3MTIyLCA3NzEyNiwgCisgICAgNzcxMzAsIDc3MTM0LCA3NzEzOCwgNzcxNDIsIDc3MTQ2LCA3NzE1MCwgNzcxNTQsIDc3MTU4LCA3NzE2MiwgNzcxNjYsIAorICAgIDc3MTcwLCA3NzE3NCwgNzcxNzgsIDc3MTgyLCA3NzE4NiwgNzcxOTAsIDc3MTk0LCA3NzE5OCwgNzcyMDIsIDc3MjA2LCAKKyAgICA3NzIxMCwgNzcyMTQsIDc3MjE4LCA3NzIyMiwgNzcyMjYsIDc3MjMwLCA3NzIzNCwgNzcyMzgsIDc3MjQyLCA3NzI0NiwgCisgICAgNzcyNTAsIDc3MjU0LCA3NzI1OCwgNzcyNjIsIDc3MjY2LCA3NzI3MCwgNzcyNzQsIDc3Mjc4LCA3NzI4MiwgNzcyODYsIAorICAgIDc3MjkwLCA3NzI5NCwgNzcyOTgsIDc3MzAyLCA3NzMwNiwgNzczMTAsIDc3MzE0LCA3NzMxOCwgNzczMjIsIDc3MzI2LCAKKyAgICA3NzMzMCwgNzczMzQsIDc3MzM4LCA3NzM0MiwgNzczNDYsIDc3MzUwLCA3NzM1NCwgNzczNTgsIDc3MzYyLCA3NzM2NiwgCisgICAgNzczNzAsIDc3Mzc0LCA3NzM3OCwgNzczODIsIDc3Mzg2LCA3NzM5MCwgNzczOTQsIDc3Mzk4LCA3NzQwMiwgNzc0MDYsIAorICAgIDc3NDEwLCA3NzQxNCwgNzc0MTgsIDc3NDIyLCA3NzQyNiwgNzc0MzAsIDc3NDM0LCA3NzQzOCwgNzc0NDIsIDc3NDQ2LCAKKyAgICA3NzQ1MCwgNzc0NTQsIDc3NDU4LCA3NzQ2MiwgNzc0NjYsIDc3NDcwLCA3NzQ3NCwgNzc0NzgsIDc3NDgyLCA3NzQ4NiwgCisgICAgNzc0OTAsIDc3NDk0LCA3NzQ5OCwgNzc1MDIsIDc3NTA2LCA3NzUxMCwgNzc1MTQsIDc3NTE4LCA3NzUyMiwgNzc1MjYsIAorICAgIDc3NTMwLCA3NzUzNCwgNzc1MzgsIDc3NTQyLCA3NzU0NiwgNzc1NTAsIDc3NTU0LCA3NzU1OCwgNzc1NjIsIDc3NTY2LCAKKyAgICA3NzU3MCwgNzc1NzQsIDc3NTc4LCA3NzU4MiwgNzc1ODYsIDc3NTkwLCA3NzU5NCwgNzc1OTgsIDc3NjAyLCA3NzYwNiwgCisgICAgNzc2MTAsIDc3NjE0LCA3NzYxOCwgNzc2MjIsIDc3NjI2LCA3NzYzMCwgNzc2MzQsIDc3NjM4LCA3NzY0MiwgNzc2NDYsIAorICAgIDc3NjUwLCA3NzY1NCwgNzc2NTgsIDc3NjYyLCA3NzY2NiwgNzc2NzAsIDc3Njc0LCA3NzY3OCwgNzc2ODIsIDc3Njg2LCAKKyAgICA3NzY5MCwgNzc2OTQsIDc3Njk4LCA3NzcwMiwgNzc3MDYsIDc3NzEwLCA3NzcxNCwgNzc3MTgsIDc3NzIyLCA3NzcyNiwgCisgICAgNzc3MzAsIDc3NzM0LCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTQsIDc3NzU4LCA3Nzc2MiwgNzc3NjYsIAorICAgIDc3NzcwLCA3Nzc3NCwgNzc3NzgsIDc3NzgyLCA3Nzc4NiwgNzc3OTAsIDc3Nzk0LCA3Nzc5OCwgNzc4MDIsIDc3ODA2LCAKKyAgICA3NzgxMCwgNzc4MTQsIDc3ODE4LCA3NzgyMiwgNzc4MjYsIDc3ODMwLCA3NzgzNCwgNzc4MzgsIDc3ODQyLCA3Nzg0NiwgCisgICAgNzc4NTAsIDAsIDAsIDc3ODU0LCA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCA3Nzg4MiwgCisgICAgNzc4ODYsIDc3ODkwLCA3Nzg5NCwgNzc4OTgsIDc3OTAyLCA3NzkwNiwgNzc5MTAsIDc3OTE0LCA3NzkxOCwgNzc5MjIsIAorICAgIDc3OTI2LCA3NzkzMCwgNzc5MzQsIDc3OTM4LCA3Nzk0MiwgNzc5NDYsIDc3OTUwLCA3Nzk1NCwgNzc5NTgsIDc3OTYyLCAKKyAgICA3Nzk2NiwgNzc5NzAsIDc3OTc0LCA3Nzk3OCwgNzc5ODIsIDc3OTg2LCA3Nzk5MCwgNzc5OTQsIDc3OTk4LCA3ODAwMiwgCisgICAgNzgwMDYsIDc4MDEwLCA3ODAxNCwgNzgwMTgsIDc4MDIyLCA3ODAyNiwgNzgwMzAsIDc4MDM0LCA3ODAzOCwgNzgwNDIsIAorICAgIDc4MDQ2LCA3ODA1MCwgNzgwNTQsIDc4MDU4LCA3ODA2MiwgNzgwNjYsIDc4MDcwLCA3ODA3NCwgNzgwNzgsIDc4MDgyLCAKKyAgICA3ODA4NiwgNzgwOTAsIDc4MDk0LCA3ODA5OCwgNzgxMDIsIDc4MTA2LCA3ODExMCwgNzgxMTQsIDc4MTE4LCA3ODEyMiwgCisgICAgNzgxMjYsIDc4MTMwLCA3ODEzNCwgNzgxMzgsIDc4MTQyLCA3ODE0NiwgNzgxNTAsIDc4MTU0LCA3ODE1OCwgNzgxNjIsIAorICAgIDc4MTY2LCA3ODE3MCwgNzgxNzQsIDc4MTc4LCA3ODE4MiwgNzgxODYsIDc4MTkwLCA3ODE5NCwgNzgxOTgsIDc4MjAyLCAKKyAgICA3ODIwNiwgNzgyMTAsIDc4MjE0LCA3ODIxOCwgNzgyMjIsIDc4MjI2LCA3ODIzMCwgNzgyMzQsIDc4MjM4LCA3ODI0MiwgCisgICAgNzgyNDYsIDc4MjUwLCA3ODI1NCwgNzgyNTgsIDc4MjYyLCA3ODI2NiwgNzgyNzAsIDc4Mjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NTIyNiwgNzUyMzAsIDc1MjM0LCA3NTIzOCwgNzUyNDIsIDc1MjQ2LCA3NTI1MCwgNzUyNTQsIAotICAgIDc1MjU4LCA3NTI2MiwgNzUyNjYsIDc1MjcwLCA3NTI3NCwgNzUyNzgsIDc1MjgyLCA3NTI4NiwgNzUyOTAsIDc1Mjk0LCAKLSAgICA3NTI5OCwgNzUzMDIsIDc1MzA2LCA3NTMxMCwgNzUzMTQsIDAsIDAsIDAsIDAsIDc1MzE4LCA3NTMyMiwgNzUzMjYsIAotICAgIDc1MzMwLCA3NTMzNCwgNzUzMzgsIDc1MzQyLCA3NTM0NiwgNzUzNTAsIDc1MzU0LCA3NTM1OCwgNzUzNjIsIDc1MzY2LCAKLSAgICA3NTM3MCwgNzUzNzQsIDc1Mzc4LCA3NTM4MiwgNzUzODYsIDc1MzkwLCA3NTM5NCwgNzUzOTgsIDc1NDAyLCA3NTQwNiwgCi0gICAgNzU0MTAsIDc1NDE0LCA3NTQxOCwgNzU0MjIsIDc1NDI2LCA3NTQzMCwgNzU0MzQsIDc1NDM4LCA3NTQ0MiwgNzU0NDYsIAotICAgIDc1NDUwLCA3NTQ1NCwgNzU0NTgsIDc1NDYyLCA3NTQ2NiwgNzU0NzAsIDc1NDc0LCA3NTQ3OCwgNzU0ODIsIDc1NDg2LCAKLSAgICA3NTQ5MCwgNzU0OTQsIDc1NDk4LCA3NTUwMiwgNzU1MDYsIDc1NTEwLCAwLCAwLCAwLCAwLCA3NTUxNCwgNzU1MTgsIAotICAgIDc1NTIyLCA3NTUyNiwgNzU1MzAsIDc1NTM0LCA3NTUzOCwgNzU1NDIsIDc1NTQ2LCA3NTU1MCwgNzU1NTQsIDc1NTU4LCAKLSAgICA3NTU2MiwgNzU1NjYsIDc1NTcwLCA3NTU3NCwgNzU1NzgsIDc1NTgyLCA3NTU4NiwgNzU1OTAsIDc1NTk0LCA3NTU5OCwgCi0gICAgNzU2MDIsIDc1NjA2LCA3NTYxMCwgNzU2MTQsIDc1NjE4LCA3NTYyMiwgNzU2MjYsIDc1NjMwLCA3NTYzNCwgNzU2MzgsIAotICAgIDc1NjQyLCA3NTY0NiwgNzU2NTAsIDc1NjU0LCA3NTY1OCwgNzU2NjIsIDc1NjY2LCA3NTY3MCwgNzU2NzQsIDc1Njc4LCAKLSAgICA3NTY4MiwgNzU2ODYsIDc1NjkwLCA3NTY5NCwgNzU2OTgsIDc1NzAyLCA3NTcwNiwgNzU3MTAsIDc1NzE0LCA3NTcxOCwgCi0gICAgNzU3MjIsIDc1NzI2LCA3NTczMCwgNzU3MzQsIDc1NzM4LCA3NTc0MiwgNzU3NDYsIDc1NzUwLCA3NTc1NCwgNzU3NTgsIAotICAgIDc1NzYyLCA3NTc2NiwgNzU3NzAsIDc1Nzc0LCA3NTc3OCwgNzU3ODIsIDc1Nzg2LCA3NTc5MCwgNzU3OTQsIDc1Nzk4LCAKLSAgICA3NTgwMiwgNzU4MDYsIDc1ODEwLCA3NTgxNCwgNzU4MTgsIDc1ODIyLCA3NTgyNiwgNzU4MzAsIDc1ODM0LCA3NTgzOCwgCi0gICAgNzU4NDIsIDc1ODQ2LCA3NTg1MCwgNzU4NTQsIDc1ODU4LCA3NTg2MiwgNzU4NjYsIDc1ODcwLCA3NTg3NCwgNzU4NzgsIAotICAgIDc1ODgyLCA3NTg4NiwgNzU4OTAsIDc1ODk0LCA3NTg5OCwgNzU5MDIsIDc1OTA2LCA3NTkxMCwgNzU5MTQsIDc1OTE4LCAKLSAgICA3NTkyMiwgNzU5MjYsIDc1OTMwLCA3NTkzNCwgNzU5MzgsIDc1OTQyLCA3NTk0NiwgNzU5NTAsIDc1OTU0LCA3NTk1OCwgCi0gICAgNzU5NjIsIDc1OTY2LCA3NTk3MCwgNzU5NzQsIDc1OTc4LCA3NTk4MiwgNzU5ODYsIDc1OTkwLCA3NTk5NCwgNzU5OTgsIAotICAgIDc2MDAyLCA3NjAwNiwgNzYwMTAsIDc2MDE0LCA3NjAxOCwgNzYwMjIsIDc2MDI2LCA3NjAzMCwgNzYwMzQsIDc2MDM4LCAKLSAgICA3NjA0MiwgNzYwNDYsIDc2MDUwLCA3NjA1NCwgNzYwNTgsIDc2MDYyLCA3NjA2NiwgNzYwNzAsIDc2MDc0LCA3NjA3OCwgCi0gICAgNzYwODIsIDc2MDg2LCA3NjA5MCwgNzYwOTQsIDc2MDk4LCA3NjEwMiwgNzYxMDYsIDc2MTEwLCA3NjExNCwgNzYxMTgsIAotICAgIDc2MTIyLCA3NjEyNiwgNzYxMzAsIDc2MTM0LCA3NjEzOCwgNzYxNDIsIDc2MTQ2LCA3NjE1MCwgNzYxNTQsIDc2MTU4LCAKLSAgICA3NjE2MiwgNzYxNjYsIDc2MTcwLCA3NjE3NCwgNzYxNzgsIDc2MTgyLCA3NjE4NiwgNzYxOTAsIDc2MTk0LCA3NjE5OCwgCi0gICAgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIDc2MjE4LCA3NjIyMiwgNzYyMjYsIDc2MjMwLCA3NjIzNCwgNzYyMzgsIAotICAgIDc2MjQyLCA3NjI0NiwgNzYyNTAsIDc2MjU0LCA3NjI1OCwgNzYyNjIsIDc2MjY2LCA3NjI3MCwgNzYyNzQsIDc2Mjc4LCAKLSAgICA3NjI4MiwgNzYyODYsIDc2MjkwLCA3NjI5NCwgNzYyOTgsIDc2MzAyLCA3NjMwNiwgNzYzMTAsIDc2MzE0LCA3NjMxOCwgCi0gICAgNzYzMjIsIDc2MzI2LCA3NjMzMCwgNzYzMzQsIDc2MzM4LCA3NjM0MiwgNzYzNDYsIDc2MzUwLCA3NjM1NCwgNzYzNTgsIAotICAgIDc2MzYyLCA3NjM2NiwgNzYzNzAsIDc2Mzc0LCA3NjM3OCwgNzYzODIsIDc2Mzg2LCA3NjM5MCwgNzYzOTQsIDc2Mzk4LCAKLSAgICA3NjQwMiwgNzY0MDYsIDc2NDEwLCA3NjQxNCwgNzY0MTgsIDc2NDIyLCA3NjQyNiwgNzY0MzAsIDc2NDM0LCA3NjQzOCwgCi0gICAgNzY0NDIsIDc2NDQ2LCA3NjQ1MCwgNzY0NTQsIDc2NDU4LCA3NjQ2MiwgNzY0NjYsIDc2NDcwLCA3NjQ3NCwgNzY0NzgsIAotICAgIDc2NDgyLCA3NjQ4NiwgNzY0OTAsIDc2NDk0LCA3NjQ5OCwgNzY1MDIsIDc2NTA2LCA3NjUxMCwgNzY1MTQsIDc2NTE4LCAKLSAgICA3NjUyMiwgNzY1MjYsIDc2NTMwLCA3NjUzNCwgNzY1MzgsIDc2NTQyLCA3NjU0NiwgNzY1NTAsIDc2NTU0LCA3NjU1OCwgCi0gICAgNzY1NjIsIDc2NTY2LCA3NjU3MCwgNzY1NzQsIDc2NTc4LCA3NjU4MiwgNzY1ODYsIDc2NTkwLCA3NjU5NCwgNzY1OTgsIAotICAgIDc2NjAyLCA3NjYwNiwgNzY2MTAsIDc2NjE0LCA3NjYxOCwgNzY2MjIsIDc2NjI2LCA3NjYzMCwgNzY2MzQsIDc2NjM4LCAKLSAgICA3NjY0MiwgNzY2NDYsIDc2NjUwLCA3NjY1NCwgNzY2NTgsIDc2NjYyLCA3NjY2NiwgNzY2NzAsIDc2Njc0LCA3NjY3OCwgCi0gICAgNzY2ODIsIDc2Njg2LCA3NjY5MCwgNzY2OTQsIDc2Njk4LCA3NjcwMiwgNzY3MDYsIDc2NzEwLCA3NjcxNCwgNzY3MTgsIDAsIAotICAgIDAsIDc2NzIyLCA3NjcyNiwgNzY3MzAsIDc2NzM0LCA3NjczOCwgNzY3NDIsIDc2NzQ2LCA3Njc1MCwgNzY3NTQsIDc2NzU4LCAKLSAgICA3Njc2MiwgNzY3NjYsIDc2NzcwLCA3Njc3NCwgNzY3NzgsIDc2NzgyLCA3Njc4NiwgNzY3OTAsIDc2Nzk0LCA3Njc5OCwgCi0gICAgNzY4MDIsIDc2ODA2LCA3NjgxMCwgNzY4MTQsIDc2ODE4LCA3NjgyMiwgNzY4MjYsIDc2ODMwLCA3NjgzNCwgNzY4MzgsIAotICAgIDc2ODQyLCA3Njg0NiwgNzY4NTAsIDc2ODU0LCA3Njg1OCwgNzY4NjIsIDc2ODY2LCA3Njg3MCwgNzY4NzQsIDc2ODc4LCAKLSAgICA3Njg4MiwgNzY4ODYsIDc2ODkwLCA3Njg5NCwgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgCi0gICAgNzY5MjIsIDc2OTI2LCA3NjkzMCwgNzY5MzQsIDc2OTM4LCA3Njk0MiwgNzY5NDYsIDc2OTUwLCA3Njk1NCwgNzY5NTgsIAotICAgIDc2OTYyLCA3Njk2NiwgMCwgMCwgNzY5NzAsIDc2OTc0LCA3Njk3OCwgNzY5ODIsIDc2OTg2LCA3Njk5MCwgNzY5OTQsIAotICAgIDc2OTk4LCA3NzAwMiwgNzcwMDYsIDc3MDEwLCA3NzAxNCwgNzcwMTgsIDc3MDIyLCA3NzAyNiwgNzcwMzAsIDc3MDM0LCAKLSAgICA3NzAzOCwgNzcwNDIsIDc3MDQ2LCA3NzA1MCwgNzcwNTQsIDc3MDU4LCA3NzA2MiwgNzcwNjYsIDc3MDcwLCA3NzA3NCwgCi0gICAgNzcwNzgsIDc3MDgyLCA3NzA4NiwgNzcwOTAsIDc3MDk0LCA3NzA5OCwgNzcxMDIsIDc3MTA2LCA3NzExMCwgNzcxMTQsIAotICAgIDc3MTE4LCA3NzEyMiwgNzcxMjYsIDc3MTMwLCA3NzEzNCwgNzcxMzgsIDc3MTQyLCA3NzE0NiwgNzcxNTAsIDc3MTU0LCAKLSAgICA3NzE1OCwgNzcxNjIsIDc3MTY2LCA3NzE3MCwgNzcxNzQsIDc3MTc4LCA3NzE4MiwgNzcxODYsIDc3MTkwLCA3NzE5NCwgCi0gICAgNzcxOTgsIDc3MjAyLCA3NzIwNiwgNzcyMTAsIDc3MjE0LCA3NzIxOCwgNzcyMjIsIDc3MjI2LCA3NzIzMCwgNzcyMzQsIAotICAgIDc3MjM4LCA3NzI0MiwgNzcyNDYsIDc3MjUwLCA3NzI1NCwgNzcyNTgsIDc3MjYyLCA3NzI2NiwgNzcyNzAsIDc3Mjc0LCAKLSAgICA3NzI3OCwgNzcyODIsIDc3Mjg2LCA3NzI5MCwgNzcyOTQsIDc3Mjk4LCA3NzMwMiwgNzczMDYsIDc3MzEwLCA3NzMxNCwgCi0gICAgNzczMTgsIDc3MzIyLCA3NzMyNiwgNzczMzAsIDc3MzM0LCA3NzMzOCwgNzczNDIsIDc3MzQ2LCA3NzM1MCwgNzczNTQsIAotICAgIDc3MzU4LCA3NzM2MiwgNzczNjYsIDc3MzcwLCA3NzM3NCwgNzczNzgsIDc3MzgyLCA3NzM4NiwgNzczOTAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4Mjc4LCA3ODI4MywgNzgyODgsIDc4MjkzLCA3ODI5OCwgNzgzMDMsIDc4MzExLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODMxNiwgNzgzMjMsIDc4MzMwLCA3ODMzNywgNzgzNDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc4MzUxLCA3ODM1OCwgNzgzNjUsIDc4Mzc1LCA3ODM4MSwgNzgzODcsIDc4MzkzLCA3ODM5OSwgCisgICAgNzg0MDUsIDc4NDExLCA3ODQxOCwgNzg0MjQsIDc4NDMwLCA3ODQzNiwgNzg0NDUsIDc4NDU0LCA3ODQ2NiwgNzg0NzgsIAorICAgIDc4NDg0LCA3ODQ5MCwgNzg0OTYsIDc4NTAzLCA3ODUxMCwgNzg1MTcsIDc4NTI0LCA3ODUzMSwgMCwgNzg1MzgsIDc4NTQ1LCAKKyAgICA3ODU1MiwgNzg1NjAsIDc4NTY3LCAwLCA3ODU3NCwgMCwgNzg1ODEsIDc4NTg4LCAwLCA3ODU5NSwgNzg2MDMsIDAsIAorICAgIDc4NjEwLCA3ODYxNywgNzg2MjQsIDc4NjMxLCA3ODYzOCwgNzg2NDUsIDc4NjUyLCA3ODY1OSwgNzg2NjYsIDc4NjczLCAKKyAgICA3ODY3OCwgNzg2ODUsIDc4NjkyLCA3ODY5OCwgNzg3MDQsIDc4NzEwLCA3ODcxNiwgNzg3MjIsIDc4NzI4LCA3ODczNCwgCisgICAgNzg3NDAsIDc4NzQ2LCA3ODc1MiwgNzg3NTgsIDc4NzY0LCA3ODc3MCwgNzg3NzYsIDc4NzgyLCA3ODc4OCwgNzg3OTQsIAorICAgIDc4ODAwLCA3ODgwNiwgNzg4MTIsIDc4ODE4LCA3ODgyNCwgNzg4MzAsIDc4ODM2LCA3ODg0MiwgNzg4NDgsIDc4ODU0LCAKKyAgICA3ODg2MCwgNzg4NjYsIDc4ODcyLCA3ODg3OCwgNzg4ODQsIDc4ODkwLCA3ODg5NiwgNzg5MDIsIDc4OTA4LCA3ODkxNCwgCisgICAgNzg5MjAsIDc4OTI2LCA3ODkzMiwgNzg5MzgsIDc4OTQ0LCA3ODk1MCwgNzg5NTYsIDc4OTYyLCA3ODk2OCwgNzg5NzQsIAorICAgIDc4OTgwLCA3ODk4NiwgNzg5OTIsIDc4OTk4LCA3OTAwNCwgNzkwMTAsIDc5MDE2LCA3OTAyMiwgNzkwMjgsIDc5MDM0LCAKKyAgICA3OTA0MCwgNzkwNDYsIDc5MDUyLCA3OTA1OCwgNzkwNjQsIDc5MDcwLCA3OTA3NiwgNzkwODIsIDc5MDg4LCA3OTA5NCwgCisgICAgNzkxMDAsIDc5MTA2LCA3OTExMiwgNzkxMTgsIDc5MTI0LCA3OTEzMCwgNzkxMzYsIDc5MTQyLCA3OTE0OCwgNzkxNTYsIAorICAgIDc5MTY0LCA3OTE3MCwgNzkxNzYsIDc5MTgyLCA3OTE4OCwgNzkxOTcsIDc5MjA2LCA3OTIxNCwgNzkyMjIsIDc5MjMwLCAKKyAgICA3OTIzOCwgNzkyNDYsIDc5MjU0LCA3OTI2MiwgNzkyNzAsIDc5Mjc3LCA3OTI4NCwgNzkyOTQsIDc5MzA0LCA3OTMwOCwgCisgICAgNzkzMTIsIDc5MzE3LCA3OTMyMiwgNzkzMjcsIDc5MzMyLCA3OTM0MSwgNzkzNTAsIDc5MzU2LCA3OTM2MiwgNzkzNjksIAorICAgIDc5Mzc2LCA3OTM4MywgNzkzODcsIDc5MzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3OTM5OSwgNzk0MDUsIDc5NDExLCA3OTQxNywgNzk0MjMsIDc5NDI4LCA3OTQzMywgNzk0MzksIDc5NDQ1LCAKKyAgICA3OTQ1MSwgNzk0NTcsIDc5NDY1LCA3OTQ3MSwgNzk0NzcsIDc5NDg1LCA3OTQ5MywgNzk1MDEsIDc5NTA5LCA3OTUxNCwgCisgICAgNzk1MTksIDc5NTI0LCA3OTUyOSwgNzk1NDIsIDc5NTU1LCA3OTU2NSwgNzk1NzUsIDc5NTg2LCA3OTU5NywgNzk2MDgsIAorICAgIDc5NjE5LCA3OTYyOSwgNzk2MzksIDc5NjUwLCA3OTY2MSwgNzk2NzIsIDc5NjgzLCA3OTY5MywgNzk3MDMsIDc5NzEzLCAKKyAgICA3OTcyOSwgNzk3NDUsIDc5NzYxLCA3OTc2OCwgNzk3NzUsIDc5NzgyLCA3OTc4OSwgNzk3OTksIDc5ODA5LCA3OTgxOSwgCisgICAgNzk4MzEsIDc5ODQxLCA3OTg0OSwgNzk4NTcsIDc5ODY2LCA3OTg3NCwgNzk4ODQsIDc5ODkyLCA3OTkwMCwgNzk5MDgsIAorICAgIDc5OTE3LCA3OTkyNSwgNzk5MzUsIDc5OTQzLCA3OTk1MSwgNzk5NTksIDc5OTY5LCA3OTk3NywgNzk5ODQsIDc5OTkxLCAKKyAgICA3OTk5OCwgODAwMDUsIDgwMDEzLCA4MDAyMSwgODAwMjksIDgwMDM3LCA4MDA0NSwgODAwNTQsIDgwMDYyLCA4MDA3MCwgCisgICAgODAwNzgsIDgwMDg2LCA4MDA5NCwgODAxMDMsIDgwMTExLCA4MDExOSwgODAxMjcsIDgwMTM1LCA4MDE0MywgODAxNTEsIAorICAgIDgwMTU5LCA4MDE2NywgODAxNzUsIDgwMTgzLCA4MDE5MiwgODAyMDAsIDgwMjEwLCA4MDIxOCwgODAyMjYsIDgwMjM0LCAKKyAgICA4MDI0NCwgODAyNTIsIDgwMjYwLCA4MDI2OCwgODAyNzYsIDgwMjg1LCA4MDI5NCwgODAzMDIsIDgwMzEyLCA4MDMyMCwgCisgICAgODAzMjgsIDgwMzM2LCA4MDM0NSwgODAzNTMsIDgwMzYzLCA4MDM3MSwgODAzNzgsIDgwMzg1LCA4MDM5MywgODA0MDAsIAorICAgIDgwNDA5LCA4MDQxNiwgODA0MjQsIDgwNDMyLCA4MDQ0MSwgODA0NDksIDgwNDU5LCA4MDQ2NywgODA0NzUsIDgwNDgzLCAKKyAgICA4MDQ5MywgODA1MDEsIDgwNTA4LCA4MDUxNSwgODA1MjMsIDgwNTMwLCA4MDUzOSwgODA1NDYsIDgwNTU2LCA4MDU2NiwgCisgICAgODA1NzcsIDgwNTg2LCA4MDU5NSwgODA2MDQsIDgwNjEzLCA4MDYyMiwgODA2MzIsIDgwNjQzLCA4MDY1NCwgODA2NjQsIAorICAgIDgwNjc1LCA4MDY4NywgODA2OTcsIDgwNzA2LCA4MDcxNSwgODA3MjMsIDgwNzMyLCA4MDc0MiwgODA3NTAsIDgwNzU5LCAKKyAgICA4MDc2OCwgODA3NzYsIDgwNzg1LCA4MDc5NSwgODA4MDMsIDgwODEyLCA4MDgyMSwgODA4MjksIDgwODM4LCA4MDg0OCwgCisgICAgODA4NTYsIDgwODY2LCA4MDg3NCwgODA4ODQsIDgwODkyLCA4MDkwMCwgODA5MDksIDgwOTE3LCA4MDkyNywgODA5MzUsIAorICAgIDgwOTQzLCA4MDk1MywgODA5NjEsIDgwOTY4LCA4MDk3NSwgODA5ODQsIDgwOTkzLCA4MTAwMSwgODEwMTAsIDgxMDIwLCAKKyAgICA4MTAyOCwgODEwMzksIDgxMDQ3LCA4MTA1NSwgODEwNjIsIDgxMDcwLCA4MTA3OSwgODEwODYsIDgxMDk2LCA4MTEwNiwgCisgICAgODExMTcsIDgxMTI3LCA4MTEzOCwgODExNDYsIDgxMTU0LCA4MTE2MywgODExNzEsIDgxMTgwLCA4MTE4OCwgODExOTYsIAorICAgIDgxMjA1LCA4MTIxMywgODEyMjIsIDgxMjMwLCA4MTIzNywgODEyNDQsIDgxMjUxLCA4MTI1OCwgODEyNjYsIDgxMjc0LCAKKyAgICA4MTI4MiwgODEyOTAsIDgxMjk5LCA4MTMwNywgODEzMTUsIDgxMzI0LCA4MTMzMiwgODEzNDAsIDgxMzQ4LCA4MTM1NywgCisgICAgODEzNjUsIDgxMzczLCA4MTM4MSwgODEzODksIDgxMzk3LCA4MTQwNSwgODE0MTMsIDgxNDIxLCA4MTQyOSwgODE0MzgsIAorICAgIDgxNDQ2LCA4MTQ1NCwgODE0NjIsIDgxNDcwLCA4MTQ3OCwgODE0ODcsIDgxNDk2LCA4MTUwNCwgODE1MTIsIDgxNTIwLCAKKyAgICA4MTUyOSwgODE1MzcsIDgxNTQ2LCA4MTU1MywgODE1NjAsIDgxNTY4LCA4MTU3NSwgODE1ODMsIDgxNTkxLCA4MTYwMCwgCisgICAgODE2MDgsIDgxNjE3LCA4MTYyNSwgODE2MzMsIDgxNjQzLCA4MTY1MCwgODE2NTcsIDgxNjY1LCA4MTY3MiwgODE2ODAsIAorICAgIDgxNjkwLCA4MTcwMSwgODE3MDksIDgxNzE4LCA4MTcyNiwgODE3MzUsIDgxNzQzLCA4MTc1MiwgODE3NjAsIDgxNzY5LCAKKyAgICA4MTc3NywgODE3ODYsIDgxNzk1LCA4MTgwMywgODE4MTEsIDgxODE5LCA4MTgyOCwgODE4MzUsIDgxODQzLCA4MTg1MiwgCisgICAgODE4NjEsIDgxODcwLCA4MTg4MCwgODE4ODgsIDgxODk4LCA4MTkwNiwgODE5MTYsIDgxOTI0LCA4MTkzNCwgODE5NDIsIAorICAgIDgxOTUyLCA4MTk2MCwgODE5NjksIDgxOTc2LCA4MTk4NSwgODE5OTIsIDgyMDAyLCA4MjAxMCwgODIwMjAsIDgyMDI4LCAKKyAgICA4MjAzOCwgODIwNDYsIDgyMDU0LCA4MjA2MiwgODIwNzEsIDgyMDc5LCA4MjA4OCwgODIwOTcsIDgyMTA2LCA4MjExNSwgCisgICAgODIxMjUsIDgyMTMzLCA4MjE0MywgODIxNTEsIDgyMTYxLCA4MjE2OSwgODIxNzksIDgyMTg3LCA4MjE5NywgODIyMDUsIAorICAgIDgyMjE0LCA4MjIyMSwgODIyMzAsIDgyMjM3LCA4MjI0NywgODIyNTUsIDgyMjY1LCA4MjI3MywgODIyODMsIDgyMjkxLCAKKyAgICA4MjI5OSwgODIzMDcsIDgyMzE2LCA4MjMyNCwgODIzMzMsIDgyMzQyLCA4MjM1MSwgODIzNjAsIDgyMzY4LCA4MjM3NiwgCisgICAgODIzODUsIDgyMzkzLCA4MjQwMiwgODI0MTEsIDgyNDE5LCA4MjQyNywgODI0MzUsIDgyNDQ0LCA4MjQ1MiwgODI0NjAsIAorICAgIDgyNDY5LCA4MjQ3NywgODI0ODUsIDgyNDkzLCA4MjUwMSwgODI1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgyNTExLCA4MjUyMSwgODI1MzEsIDgyNTQxLCA4MjU1MSwgODI1NjIsIDgyNTcyLCA4MjU4MiwgCisgICAgODI1OTMsIDgyNjAyLCA4MjYxMSwgODI2MjAsIDgyNjMxLCA4MjY0MSwgODI2NTEsIDgyNjYzLCA4MjY3MywgODI2ODMsIAorICAgIDgyNjkzLCA4MjcwMywgODI3MTMsIDgyNzIzLCA4MjczMywgODI3NDMsIDgyNzUzLCA4Mjc2MywgODI3NzMsIDgyNzg0LCAKKyAgICA4Mjc5NSwgODI4MDUsIDgyODE1LCA4MjgyNywgODI4MzgsIDgyODQ5LCA4Mjg1OSwgODI4NjksIDgyODc5LCA4Mjg4OSwgCisgICAgODI4OTksIDgyOTA5LCA4MjkxOSwgODI5MzEsIDgyOTQxLCA4Mjk1MSwgODI5NjMsIDgyOTc0LCA4Mjk4NSwgODI5OTUsIAorICAgIDgzMDA1LCA4MzAxNSwgODMwMjUsIDgzMDM3LCA4MzA0NywgODMwNTcsIDgzMDY4LCA4MzA3OSwgODMwODksIDgzMDk5LCAKKyAgICA4MzEwOCwgODMxMTcsIDgzMTI2LCA4MzEzNSwgODMxNDQsIDgzMTU0LCAwLCAwLCA4MzE2NCwgODMxNzQsIDgzMTg0LCAKKyAgICA4MzE5NCwgODMyMDQsIDgzMjE2LCA4MzIyNiwgODMyMzYsIDgzMjQ4LCA4MzI1OCwgODMyNzAsIDgzMjc5LCA4MzI4OCwgCisgICAgODMyOTksIDgzMzA5LCA4MzMyMSwgODMzMzIsIDgzMzQ1LCA4MzM1NSwgODMzNjcsIDgzMzc2LCA4MzM4NywgODMzOTgsIAorICAgIDgzNDExLCA4MzQyMSwgODM0MzEsIDgzNDQxLCA4MzQ1MSwgODM0NjEsIDgzNDcwLCA4MzQ3OSwgODM0ODgsIDgzNDk3LCAKKyAgICA4MzUwNywgODM1MTcsIDgzNTI3LCA4MzUzNywgODM1NDcsIDgzNTU3LCA4MzU2NywgODM1NzcsIDgzNTg3LCA4MzU5NywgCisgICAgODM2MDcsIDgzNjE3LCA4MzYyNiwgODM2MzUsIDgzNjQ0LCA4MzY1NCwgODM2NjQsIDgzNjc0LCA4MzY4NCwgODM2OTQsIAorICAgIDgzNzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzcxNSwgODM3MzAsIAorICAgIDgzNzQ1LCA4Mzc1MSwgODM3NTcsIDgzNzYzLCA4Mzc2OSwgODM3NzUsIDgzNzgxLCA4Mzc4NywgODM3OTMsIDgzODAxLCAKKyAgICA4MzgwNSwgODM4MDgsIDAsIDAsIDgzODE2LCA4MzgxOSwgODM4MjIsIDgzODI1LCA4MzgyOCwgODM4MzEsIDgzODM0LCAKKyAgICA4MzgzNywgODM4NDAsIDgzODQzLCA4Mzg0NiwgODM4NDksIDgzODUyLCA4Mzg1NSwgODM4NTgsIDgzODYxLCA4Mzg2NCwgCisgICAgODM4NzIsIDgzODgxLCA4Mzg5MiwgODM5MDAsIDgzOTA4LCA4MzkxNywgODM5MjYsIDgzOTM3LCA4Mzk0OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODM5NTgsIDgzOTYzLCA4Mzk2OCwgODM5NzUsIDgzOTgyLCA4Mzk4OCwgODM5OTQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDgzOTk5LCA4NDAwOSwgODQwMTksIDg0MDI5LCA4NDAzOCwgODQwNDksIDg0MDU4LCA4NDA2NywgCisgICAgODQwNzcsIDg0MDg3LCA4NDA5OSwgODQxMTEsIDg0MTIyLCA4NDEzMywgODQxNDQsIDg0MTU1LCA4NDE2NSwgODQxNzUsIAorICAgIDg0MTg1LCA4NDE5NSwgODQyMDYsIDg0MjE3LCA4NDIyMSwgODQyMjYsIDg0MjM1LCA4NDI0NCwgODQyNDgsIDg0MjUyLCAKKyAgICA4NDI1NiwgODQyNjEsIDg0MjY2LCA4NDI3MSwgODQyNzYsIDg0Mjc5LCA4NDI4MywgMCwgODQyODgsIDg0MjkxLCA4NDI5NCwgCisgICAgODQyOTgsIDg0MzAyLCA4NDMwNywgODQzMTEsIDg0MzE1LCA4NDMyMCwgODQzMjUsIDg0MzMyLCA4NDMzOSwgODQzNDIsIAorICAgIDg0MzQ1LCA4NDM0OCwgODQzNTEsIDg0MzU0LCA4NDM1OCwgODQzNjIsIDAsIDg0MzY2LCA4NDM3MSwgODQzNzUsIDg0Mzc5LCAKKyAgICAwLCAwLCAwLCAwLCA4NDM4NCwgODQzODksIDg0Mzk2LCA4NDQwMSwgODQ0MDYsIDAsIDg0NDExLCA4NDQxNiwgODQ0MjEsIAorICAgIDg0NDI2LCA4NDQzMSwgODQ0MzYsIDg0NDQxLCA4NDQ0NiwgODQ0NTEsIDg0NDU2LCA4NDQ2MSwgODQ0NjYsIDg0NDc1LCAKKyAgICA4NDQ4NCwgODQ0OTIsIDg0NTAwLCA4NDUwOSwgODQ1MTgsIDg0NTI3LCA4NDUzNiwgODQ1NDQsIDg0NTUyLCA4NDU2MCwgCisgICAgODQ1NjgsIDg0NTczLCA4NDU3OCwgODQ1ODQsIDg0NTkwLCA4NDU5NiwgODQ2MDIsIDg0NjEwLCA4NDYxOCwgODQ2MjQsIAorICAgIDg0NjMwLCA4NDYzNiwgODQ2NDIsIDg0NjQ4LCA4NDY1NCwgODQ2NjAsIDg0NjY2LCA4NDY3MSwgODQ2NzYsIDg0NjgxLCAKKyAgICA4NDY4NiwgODQ2OTEsIDg0Njk2LCA4NDcwMSwgODQ3MDYsIDg0NzEyLCA4NDcxOCwgODQ3MjQsIDg0NzMwLCA4NDczNiwgCisgICAgODQ3NDIsIDg0NzQ4LCA4NDc1NCwgODQ3NjAsIDg0NzY2LCA4NDc3MiwgODQ3NzgsIDg0Nzg0LCA4NDc5MCwgODQ3OTYsIAorICAgIDg0ODAyLCA4NDgwOCwgODQ4MTQsIDg0ODIwLCA4NDgyNiwgODQ4MzIsIDg0ODM4LCA4NDg0NCwgODQ4NTAsIDg0ODU2LCAKKyAgICA4NDg2MiwgODQ4NjgsIDg0ODc0LCA4NDg4MCwgODQ4ODYsIDg0ODkyLCA4NDg5OCwgODQ5MDQsIDg0OTEwLCA4NDkxNiwgCisgICAgODQ5MjIsIDg0OTI4LCA4NDkzNCwgODQ5NDAsIDg0OTQ2LCA4NDk1MiwgODQ5NTgsIDg0OTY0LCA4NDk3MCwgODQ5NzYsIAorICAgIDg0OTgyLCA4NDk4OCwgODQ5OTQsIDg1MDAwLCA4NTAwNiwgODUwMTIsIDg1MDE4LCA4NTAyNCwgODUwMzAsIDg1MDM2LCAKKyAgICA4NTA0MiwgODUwNDgsIDg1MDU0LCA4NTA2MCwgODUwNjYsIDg1MDcxLCA4NTA3NiwgODUwODEsIDg1MDg2LCA4NTA5MiwgCisgICAgODUwOTgsIDg1MTA0LCA4NTExMCwgODUxMTYsIDg1MTIyLCA4NTEyOCwgODUxMzQsIDg1MTQwLCA4NTE0NiwgODUxNTMsIAorICAgIDg1MTYwLCA4NTE2NSwgODUxNzAsIDg1MTc1LCA4NTE4MCwgODUxOTIsIDg1MjA0LCA4NTIxNSwgODUyMjYsIDg1MjM4LCAKKyAgICA4NTI1MCwgODUyNTgsIDAsIDAsIDg1MjY2LCAwLCA4NTI3NCwgODUyNzgsIDg1MjgyLCA4NTI4NSwgODUyODksIDg1MjkzLCAKKyAgICA4NTI5NiwgODUyOTksIDg1MzAzLCA4NTMwNywgODUzMTAsIDg1MzEzLCA4NTMxNiwgODUzMTksIDg1MzI0LCA4NTMyNywgCisgICAgODUzMzEsIDg1MzM0LCA4NTMzNywgODUzNDAsIDg1MzQzLCA4NTM0NiwgODUzNDksIDg1MzUyLCA4NTM1NSwgODUzNTgsIAorICAgIDg1MzYxLCA4NTM2NCwgODUzNjgsIDg1MzcyLCA4NTM3NiwgODUzODAsIDg1Mzg1LCA4NTM5MCwgODUzOTYsIDg1NDAyLCAKKyAgICA4NTQwOCwgODU0MTMsIDg1NDE5LCA4NTQyNSwgODU0MzEsIDg1NDM2LCA4NTQ0MiwgODU0NDgsIDg1NDUzLCA4NTQ1OCwgCisgICAgODU0NjQsIDg1NDY5LCA4NTQ3NSwgODU0ODEsIDg1NDg2LCA4NTQ5MiwgODU0OTgsIDg1NTAzLCA4NTUwOSwgODU1MTUsIAorICAgIDg1NTIxLCA4NTUyNywgODU1MzMsIDg1NTM3LCA4NTU0MiwgODU1NDYsIDg1NTUxLCA4NTU1NSwgODU1NjAsIDg1NTY1LCAKKyAgICA4NTU3MSwgODU1NzcsIDg1NTgzLCA4NTU4OCwgODU1OTQsIDg1NjAwLCA4NTYwNiwgODU2MTEsIDg1NjE3LCA4NTYyMywgCisgICAgODU2MjgsIDg1NjMzLCA4NTYzOSwgODU2NDQsIDg1NjUwLCA4NTY1NiwgODU2NjEsIDg1NjY3LCA4NTY3MywgODU2NzgsIAorICAgIDg1Njg0LCA4NTY5MCwgODU2OTYsIDg1NzAyLCA4NTcwOCwgODU3MTMsIDg1NzE3LCA4NTcyMiwgODU3MjQsIDg1NzI5LCAKKyAgICA4NTczNCwgODU3NDAsIDg1NzQ1LCA4NTc1MCwgODU3NTQsIDg1NzYwLCA4NTc2NSwgODU3NzAsIDg1Nzc1LCA4NTc4MCwgCisgICAgODU3ODUsIDg1NzkwLCA4NTc5NSwgODU4MDEsIDg1ODA3LCA4NTgxMywgODU4MjEsIDg1ODI1LCA4NTgyOSwgODU4MzMsIAorICAgIDg1ODM3LCA4NTg0MSwgODU4NDUsIDg1ODUwLCA4NTg1NSwgODU4NjAsIDg1ODY1LCA4NTg2OSwgODU4NzQsIDg1ODc5LCAKKyAgICA4NTg4NCwgODU4ODksIDg1ODk0LCA4NTg5OSwgODU5MDQsIDg1OTA5LCA4NTkxMywgODU5MTcsIDg1OTIyLCA4NTkyNywgCisgICAgODU5MzIsIDg1OTM3LCA4NTk0MSwgODU5NDYsIDg1OTUxLCA4NTk1NiwgODU5NjEsIDg1OTY1LCA4NTk3MCwgODU5NzUsIAorICAgIDg1OTgwLCA4NTk4NSwgODU5ODksIDg1OTk0LCA4NTk5OSwgODYwMDMsIDg2MDA4LCA4NjAxMywgODYwMTgsIDg2MDIzLCAKKyAgICA4NjAyOCwgODYwMzMsIDg2MDQwLCA4NjA0NywgODYwNTEsIDg2MDU2LCA4NjA2MSwgODYwNjYsIDg2MDcxLCA4NjA3NiwgCisgICAgODYwODEsIDg2MDg2LCA4NjA5MSwgODYwOTYsIDg2MTAxLCA4NjEwNiwgODYxMTEsIDg2MTE2LCA4NjEyMSwgODYxMjYsIAorICAgIDg2MTMxLCA4NjEzNiwgODYxNDEsIDg2MTQ2LCA4NjE1MSwgODYxNTYsIDg2MTYxLCA4NjE2NiwgODYxNzEsIDg2MTc2LCAKKyAgICA4NjE4MSwgODYxODYsIDg2MTkxLCA4NjE5NiwgMCwgMCwgMCwgODYyMDEsIDg2MjA1LCA4NjIxMCwgODYyMTQsIDg2MjE5LCAKKyAgICA4NjIyNCwgMCwgMCwgODYyMjgsIDg2MjMzLCA4NjIzOCwgODYyNDIsIDg2MjQ3LCA4NjI1MiwgMCwgMCwgODYyNTcsIAorICAgIDg2MjYyLCA4NjI2NiwgODYyNzEsIDg2Mjc2LCA4NjI4MSwgMCwgMCwgODYyODYsIDg2MjkxLCA4NjI5NiwgMCwgMCwgMCwgCisgICAgODYzMDAsIDg2MzA0LCA4NjMwOCwgODYzMTIsIDg2MzE1LCA4NjMxOSwgODYzMjMsIDAsIDg2MzI3LCA4NjMzMywgODYzMzYsIAorICAgIDg2MzQwLCA4NjM0MywgODYzNDcsIDg2MzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjM1NSwgODYzNjEsIAorICAgIDg2MzY3LCA4NjM3MywgODYzNzksIDAsIDAsIDg2MzgzLCA4NjM4OSwgODYzOTUsIDg2NDAxLCA4NjQwNywgODY0MTMsIAorICAgIDg2NDIwLCA4NjQyNywgODY0MzQsIDg2NDQxLCA4NjQ0OCwgODY0NTUsIDAsIDg2NDYyLCA4NjQ2OSwgODY0NzYsIDg2NDgyLCAKKyAgICA4NjQ4OSwgODY0OTYsIDg2NTAzLCA4NjUxMCwgODY1MTYsIDg2NTIzLCA4NjUzMCwgODY1MzcsIDg2NTQ0LCA4NjU1MCwgCisgICAgODY1NTcsIDg2NTY0LCA4NjU3MSwgODY1NzgsIDg2NTg0LCA4NjU5MSwgODY1OTgsIDg2NjA1LCA4NjYxMiwgODY2MTksIAorICAgIDg2NjI2LCA4NjYzMywgMCwgODY2NDAsIDg2NjQ2LCA4NjY1MywgODY2NjAsIDg2NjY3LCA4NjY3NCwgODY2ODAsIDg2Njg3LCAKKyAgICA4NjY5NCwgODY3MDEsIDg2NzA4LCA4NjcxNSwgODY3MjIsIDg2NzI5LCA4NjczNSwgODY3NDIsIDg2NzQ5LCA4Njc1NiwgCisgICAgODY3NjMsIDAsIDg2NzcwLCA4Njc3NywgMCwgODY3ODQsIDg2NzkxLCA4Njc5OCwgODY4MDUsIDg2ODEyLCA4NjgxOSwgCisgICAgODY4MjYsIDg2ODMzLCA4Njg0MCwgODY4NDcsIDg2ODU0LCA4Njg2MSwgODY4NjgsIDg2ODc1LCA4Njg4MiwgMCwgMCwgCisgICAgODY4ODgsIDg2ODkzLCA4Njg5OCwgODY5MDMsIDg2OTA4LCA4NjkxMywgODY5MTgsIDg2OTIzLCA4NjkyOCwgODY5MzMsIAorICAgIDg2OTM4LCA4Njk0MywgODY5NDgsIDg2OTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Njk1OCwgODY5NjUsIAorICAgIDg2OTcyLCA4Njk3OSwgODY5ODYsIDg2OTkzLCA4NzAwMCwgODcwMDcsIDg3MDE0LCA4NzAyMSwgODcwMjgsIDg3MDM1LCAKKyAgICA4NzA0MiwgODcwNDksIDg3MDU2LCA4NzA2MywgODcwNzAsIDg3MDc3LCA4NzA4NCwgODcwOTEsIDg3MDk5LCA4NzEwNywgCisgICAgODcxMTQsIDg3MTIxLCA4NzEyNiwgODcxMzQsIDg3MTQyLCA4NzE0OSwgODcxNTYsIDg3MTYxLCA4NzE2OCwgODcxNzMsIAorICAgIDg3MTc4LCA4NzE4NSwgODcxOTAsIDg3MTk1LCA4NzIwMCwgODcyMDgsIDg3MjEzLCA4NzIxOCwgODcyMjUsIDg3MjMwLCAKKyAgICA4NzIzNSwgODcyNDIsIDg3MjQ5LCA4NzI1NCwgODcyNTksIDg3MjY0LCA4NzI2OSwgODcyNzQsIDg3Mjc5LCA4NzI4NCwgCisgICAgODcyODksIDg3Mjk0LCA4NzMwMSwgODczMDYsIDg3MzEzLCA4NzMxOCwgODczMjMsIDg3MzI4LCA4NzMzMywgODczMzgsIAorICAgIDg3MzQzLCA4NzM0OCwgODczNTMsIDg3MzU4LCA4NzM2MywgODczNjgsIDg3Mzc1LCA4NzM4MiwgODczODksIDg3Mzk2LCAKKyAgICA4NzQwMiwgODc0MDcsIDg3NDE0LCA4NzQxOSwgODc0MjQsIDg3NDMzLCA4NzQ0MCwgODc0NDksIDg3NDU2LCA4NzQ2MSwgCisgICAgODc0NjYsIDg3NDc0LCA4NzQ3OSwgODc0ODQsIDg3NDg5LCA4NzQ5NCwgODc0OTksIDg3NTA2LCA4NzUxMSwgODc1MTYsIAorICAgIDg3NTIxLCA4NzUyNiwgODc1MzEsIDg3NTM4LCA4NzU0NSwgODc1NTIsIDg3NTU5LCA4NzU2NiwgODc1NzMsIDg3NTgwLCAKKyAgICA4NzU4NywgODc1OTQsIDg3NjAxLCA4NzYwOCwgODc2MTUsIDg3NjIyLCA4NzYyOSwgODc2MzYsIDg3NjQzLCA4NzY1MCwgCisgICAgODc2NTcsIDg3NjY0LCA4NzY3MSwgODc2NzgsIDg3Njg1LCA4NzY5MiwgODc2OTksIDg3NzA2LCA4NzcxMywgODc3MjAsIAorICAgIDg3NzI3LCAwLCAwLCAwLCAwLCAwLCA4NzczNCwgODc3NDIsIDg3NzUwLCAwLCAwLCAwLCAwLCA4Nzc1NSwgODc3NTksIAorICAgIDg3NzYzLCA4Nzc2NywgODc3NzEsIDg3Nzc1LCA4Nzc3OSwgODc3ODMsIDg3Nzg3LCA4Nzc5MSwgODc3OTYsIDg3ODAxLCAKKyAgICA4NzgwNiwgODc4MTEsIDg3ODE2LCA4NzgyMSwgODc4MjYsIDg3ODMxLCA4NzgzNiwgODc4NDIsIDg3ODQ4LCA4Nzg1NCwgCisgICAgODc4NjEsIDg3ODY4LCA4Nzg3NSwgODc4ODIsIDg3ODg5LCA4Nzg5NiwgODc5MDIsIDg3OTA4LCA4NzkxNCwgODc5MjEsIAorICAgIDg3OTI4LCA4NzkzNSwgODc5NDIsIDg3OTQ5LCA4Nzk1NiwgODc5NjMsIDg3OTcwLCA4Nzk3NywgODc5ODQsIDg3OTkxLCAKKyAgICA4Nzk5OCwgODgwMDUsIDg4MDEyLCAwLCAwLCAwLCA4ODAxOSwgODgwMjcsIDg4MDM1LCA4ODA0MywgODgwNTEsIDg4MDU5LCAKKyAgICA4ODA2OSwgODgwNzksIDg4MDg3LCA4ODA5NSwgODgxMDMsIDg4MTExLCA4ODExOSwgODgxMjUsIDg4MTMyLCA4ODE0MSwgCisgICAgODgxNTAsIDg4MTU5LCA4ODE2OCwgODgxNzcsIDg4MTg2LCA4ODE5NiwgODgyMDcsIDg4MjE3LCA4ODIyOCwgODgyMzcsIAorICAgIDg4MjQ2LCA4ODI1NSwgODgyNjUsIDg4Mjc2LCA4ODI4NiwgODgyOTcsIDg4MzA4LCA4ODMxNywgODgzMjUsIDg4MzMxLCAKKyAgICA4ODMzNywgODgzNDMsIDg4MzQ5LCA4ODM1NywgODgzNjUsIDg4MzcxLCA4ODM3OCwgODgzODgsIDg4Mzk1LCA4ODQwMiwgCisgICAgODg0MDksIDg4NDE2LCA4ODQyMywgODg0MzMsIDg4NDQwLCA4ODQ0NywgODg0NTUsIDg4NDYzLCA4ODQ3MiwgODg0ODEsIAorICAgIDg4NDkwLCA4ODQ5OSwgODg1MDgsIDg4NTE2LCA4ODUyNSwgODg1MzQsIDg4NTQzLCA4ODU0NywgODg1NTQsIDg4NTU5LCAKKyAgICA4ODU2NCwgODg1NjgsIDg4NTcyLCA4ODU3NiwgODg1ODAsIDg4NTg1LCA4ODU5MCwgODg1OTYsIDg4NjAyLCA4ODYwNiwgCisgICAgODg2MTIsIDg4NjE2LCA4ODYyMCwgODg2MjQsIDg4NjI4LCA4ODYzMiwgODg2MzYsIDg4NjQyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIDg4NjczLCA4ODY3OCwgODg2ODMsIDg4Njg4LCA4ODY5MywgCisgICAgODg2OTgsIDg4NzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzM5NCwgNzczOTksIDc3NDA0LCA3NzQwOSwgNzc0MTQsIAotICAgIDc3NDE5LCA3NzQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc0MzIsIDc3NDM5LCA3NzQ0NiwgCi0gICAgNzc0NTMsIDc3NDYwLCAwLCAwLCAwLCAwLCAwLCA3NzQ2NywgNzc0NzQsIDc3NDgxLCA3NzQ5MSwgNzc0OTcsIDc3NTAzLCAKLSAgICA3NzUwOSwgNzc1MTUsIDc3NTIxLCA3NzUyNywgNzc1MzQsIDc3NTQwLCA3NzU0NiwgNzc1NTIsIDc3NTYxLCA3NzU3MCwgCi0gICAgNzc1ODIsIDc3NTk0LCA3NzYwMCwgNzc2MDYsIDc3NjEyLCA3NzYxOSwgNzc2MjYsIDc3NjMzLCA3NzY0MCwgNzc2NDcsIDAsIAotICAgIDc3NjU0LCA3NzY2MSwgNzc2NjgsIDc3Njc2LCA3NzY4MywgMCwgNzc2OTAsIDAsIDc3Njk3LCA3NzcwNCwgMCwgNzc3MTEsIAotICAgIDc3NzE5LCAwLCA3NzcyNiwgNzc3MzMsIDc3NzQwLCA3Nzc0NywgNzc3NTQsIDc3NzYxLCA3Nzc2OCwgNzc3NzUsIDc3NzgyLCAKLSAgICA3Nzc4OSwgNzc3OTQsIDc3ODAxLCA3NzgwOCwgNzc4MTQsIDc3ODIwLCA3NzgyNiwgNzc4MzIsIDc3ODM4LCA3Nzg0NCwgCi0gICAgNzc4NTAsIDc3ODU2LCA3Nzg2MiwgNzc4NjgsIDc3ODc0LCA3Nzg4MCwgNzc4ODYsIDc3ODkyLCA3Nzg5OCwgNzc5MDQsIAotICAgIDc3OTEwLCA3NzkxNiwgNzc5MjIsIDc3OTI4LCA3NzkzNCwgNzc5NDAsIDc3OTQ2LCA3Nzk1MiwgNzc5NTgsIDc3OTY0LCAKLSAgICA3Nzk3MCwgNzc5NzYsIDc3OTgyLCA3Nzk4OCwgNzc5OTQsIDc4MDAwLCA3ODAwNiwgNzgwMTIsIDc4MDE4LCA3ODAyNCwgCi0gICAgNzgwMzAsIDc4MDM2LCA3ODA0MiwgNzgwNDgsIDc4MDU0LCA3ODA2MCwgNzgwNjYsIDc4MDcyLCA3ODA3OCwgNzgwODQsIAotICAgIDc4MDkwLCA3ODA5NiwgNzgxMDIsIDc4MTA4LCA3ODExNCwgNzgxMjAsIDc4MTI2LCA3ODEzMiwgNzgxMzgsIDc4MTQ0LCAKLSAgICA3ODE1MCwgNzgxNTYsIDc4MTYyLCA3ODE2OCwgNzgxNzQsIDc4MTgwLCA3ODE4NiwgNzgxOTIsIDc4MTk4LCA3ODIwNCwgCi0gICAgNzgyMTAsIDc4MjE2LCA3ODIyMiwgNzgyMjgsIDc4MjM0LCA3ODI0MCwgNzgyNDYsIDc4MjUyLCA3ODI1OCwgNzgyNjQsIAotICAgIDc4MjcyLCA3ODI4MCwgNzgyODYsIDc4MjkyLCA3ODI5OCwgNzgzMDQsIDc4MzEzLCA3ODMyMiwgNzgzMzAsIDc4MzM4LCAKLSAgICA3ODM0NiwgNzgzNTQsIDc4MzYyLCA3ODM3MCwgNzgzNzgsIDc4Mzg2LCA3ODM5MywgNzg0MDAsIDc4NDEwLCA3ODQyMCwgCi0gICAgNzg0MjQsIDc4NDI4LCA3ODQzMywgNzg0MzgsIDc4NDQzLCA3ODQ0OCwgNzg0NTcsIDc4NDY2LCA3ODQ3MiwgNzg0NzgsIAotICAgIDc4NDg1LCA3ODQ5MiwgNzg0OTksIDc4NTAzLCA3ODUwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNzg1MTUsIDc4NTIxLCA3ODUyNywgNzg1MzMsIDc4NTM5LCA3ODU0NCwgNzg1NDksIDc4NTU1LCAKLSAgICA3ODU2MSwgNzg1NjcsIDc4NTczLCA3ODU4MSwgNzg1ODcsIDc4NTkzLCA3ODYwMSwgNzg2MDksIDc4NjE3LCA3ODYyNSwgCi0gICAgNzg2MzAsIDc4NjM1LCA3ODY0MCwgNzg2NDUsIDc4NjU3LCA3ODY2OSwgNzg2NzksIDc4Njg5LCA3ODcwMCwgNzg3MTEsIAotICAgIDc4NzIyLCA3ODczMywgNzg3NDMsIDc4NzUzLCA3ODc2NCwgNzg3NzUsIDc4Nzg2LCA3ODc5NywgNzg4MDcsIDc4ODE3LCAKLSAgICA3ODgyNywgNzg4NDIsIDc4ODU3LCA3ODg3MiwgNzg4NzksIDc4ODg2LCA3ODg5MywgNzg5MDAsIDc4OTEwLCA3ODkyMCwgCi0gICAgNzg5MzAsIDc4OTQxLCA3ODk1MSwgNzg5NTksIDc4OTY3LCA3ODk3NiwgNzg5ODQsIDc4OTkzLCA3OTAwMSwgNzkwMDksIAotICAgIDc5MDE3LCA3OTAyNiwgNzkwMzQsIDc5MDQzLCA3OTA1MSwgNzkwNTksIDc5MDY3LCA3OTA3NiwgNzkwODQsIDc5MDkxLCAKLSAgICA3OTA5OCwgNzkxMDUsIDc5MTEyLCA3OTEyMCwgNzkxMjgsIDc5MTM2LCA3OTE0NCwgNzkxNTIsIDc5MTYxLCA3OTE2OSwgCi0gICAgNzkxNzcsIDc5MTg1LCA3OTE5MywgNzkyMDEsIDc5MjEwLCA3OTIxOCwgNzkyMjYsIDc5MjM0LCA3OTI0MiwgNzkyNTAsIAotICAgIDc5MjU4LCA3OTI2NiwgNzkyNzQsIDc5MjgyLCA3OTI5MCwgNzkyOTksIDc5MzA3LCA3OTMxNiwgNzkzMjQsIDc5MzMyLCAKLSAgICA3OTM0MCwgNzkzNDksIDc5MzU3LCA3OTM2NSwgNzkzNzMsIDc5MzgxLCA3OTM5MCwgNzkzOTksIDc5NDA3LCA3OTQxNiwgCi0gICAgNzk0MjQsIDc5NDMyLCA3OTQ0MCwgNzk0NDksIDc5NDU3LCA3OTQ2NiwgNzk0NzQsIDc5NDgxLCA3OTQ4OCwgNzk0OTYsIAotICAgIDc5NTAzLCA3OTUxMSwgNzk1MTgsIDc5NTI2LCA3OTUzNCwgNzk1NDMsIDc5NTUxLCA3OTU2MCwgNzk1NjgsIDc5NTc2LCAKLSAgICA3OTU4NCwgNzk1OTMsIDc5NjAxLCA3OTYwOCwgNzk2MTUsIDc5NjIzLCA3OTYzMCwgNzk2MzgsIDc5NjQ1LCA3OTY1NSwgCi0gICAgNzk2NjUsIDc5Njc1LCA3OTY4NCwgNzk2OTMsIDc5NzAyLCA3OTcxMSwgNzk3MjAsIDc5NzMwLCA3OTc0MSwgNzk3NTIsIAotICAgIDc5NzYyLCA3OTc3MywgNzk3ODQsIDc5Nzk0LCA3OTgwMywgNzk4MTIsIDc5ODIwLCA3OTgyOSwgNzk4MzgsIDc5ODQ2LCAKLSAgICA3OTg1NSwgNzk4NjQsIDc5ODcyLCA3OTg4MSwgNzk4OTAsIDc5ODk4LCA3OTkwNywgNzk5MTYsIDc5OTI0LCA3OTkzMywgCi0gICAgNzk5NDIsIDc5OTUwLCA3OTk1OSwgNzk5NjcsIDc5OTc2LCA3OTk4NCwgNzk5OTIsIDgwMDAxLCA4MDAwOSwgODAwMTgsIAotICAgIDgwMDI2LCA4MDAzNCwgODAwNDMsIDgwMDUxLCA4MDA1OCwgODAwNjUsIDgwMDc0LCA4MDA4MywgODAwOTEsIDgwMTAwLCAKLSAgICA4MDEwOSwgODAxMTcsIDgwMTI3LCA4MDEzNSwgODAxNDMsIDgwMTUwLCA4MDE1OCwgODAxNjYsIDgwMTczLCA4MDE4MywgCi0gICAgODAxOTMsIDgwMjA0LCA4MDIxNCwgODAyMjUsIDgwMjMzLCA4MDI0MSwgODAyNTAsIDgwMjU4LCA4MDI2NywgODAyNzUsIAotICAgIDgwMjgzLCA4MDI5MiwgODAzMDAsIDgwMzA5LCA4MDMxNywgODAzMjQsIDgwMzMxLCA4MDMzOCwgODAzNDUsIDgwMzUzLCAKLSAgICA4MDM2MSwgODAzNjksIDgwMzc3LCA4MDM4NiwgODAzOTQsIDgwNDAyLCA4MDQxMSwgODA0MTksIDgwNDI3LCA4MDQzNSwgCi0gICAgODA0NDQsIDgwNDUyLCA4MDQ2MCwgODA0NjgsIDgwNDc2LCA4MDQ4NCwgODA0OTIsIDgwNTAwLCA4MDUwOCwgODA1MTYsIAotICAgIDgwNTI1LCA4MDUzMywgODA1NDEsIDgwNTQ5LCA4MDU1NywgODA1NjUsIDgwNTc0LCA4MDU4MywgODA1OTEsIDgwNTk5LCAKLSAgICA4MDYwNywgODA2MTYsIDgwNjI0LCA4MDYzMywgODA2NDAsIDgwNjQ3LCA4MDY1NSwgODA2NjIsIDgwNjcwLCA4MDY3OCwgCi0gICAgODA2ODcsIDgwNjk1LCA4MDcwNCwgODA3MTIsIDgwNzIwLCA4MDczMCwgODA3MzcsIDgwNzQ0LCA4MDc1MiwgODA3NTksIAotICAgIDgwNzY3LCA4MDc3NywgODA3ODgsIDgwNzk2LCA4MDgwNSwgODA4MTMsIDgwODIyLCA4MDgzMCwgODA4MzksIDgwODQ3LCAKLSAgICA4MDg1NiwgODA4NjQsIDgwODczLCA4MDg4MiwgODA4OTAsIDgwODk4LCA4MDkwNiwgODA5MTUsIDgwOTIyLCA4MDkzMCwgCi0gICAgODA5MzksIDgwOTQ4LCA4MDk1NywgODA5NjYsIDgwOTc0LCA4MDk4MywgODA5OTEsIDgxMDAwLCA4MTAwOCwgODEwMTcsIAotICAgIDgxMDI1LCA4MTAzNCwgODEwNDIsIDgxMDUwLCA4MTA1NywgODEwNjUsIDgxMDcyLCA4MTA4MSwgODEwODksIDgxMDk4LCAKLSAgICA4MTEwNiwgODExMTUsIDgxMTIzLCA4MTEzMSwgODExMzksIDgxMTQ4LCA4MTE1NiwgODExNjUsIDgxMTc0LCA4MTE4MywgCi0gICAgODExOTIsIDgxMjAxLCA4MTIwOSwgODEyMTgsIDgxMjI2LCA4MTIzNSwgODEyNDMsIDgxMjUyLCA4MTI2MCwgODEyNjksIAotICAgIDgxMjc3LCA4MTI4NSwgODEyOTIsIDgxMzAwLCA4MTMwNywgODEzMTYsIDgxMzI0LCA4MTMzMywgODEzNDEsIDgxMzUwLCAKLSAgICA4MTM1OCwgODEzNjYsIDgxMzc0LCA4MTM4MywgODEzOTEsIDgxNDAwLCA4MTQwOSwgODE0MTgsIDgxNDI3LCA4MTQzNSwgCi0gICAgODE0NDMsIDgxNDUyLCA4MTQ2MCwgODE0NjksIDgxNDc4LCA4MTQ4NiwgODE0OTQsIDgxNTAyLCA4MTUxMSwgODE1MTksIAotICAgIDgxNTI3LCA4MTUzNiwgODE1NDQsIDgxNTUyLCA4MTU2MCwgODE1NjgsIDgxNTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTU3OCwgODE1ODgsIDgxNTk4LCA4MTYwOCwgODE2MTgsIDgxNjI5LCA4MTYzOSwgCi0gICAgODE2NDksIDgxNjYwLCA4MTY2OSwgODE2NzgsIDgxNjg3LCA4MTY5NywgODE3MDcsIDgxNzE3LCA4MTcyOCwgODE3MzgsIAotICAgIDgxNzQ4LCA4MTc1OCwgODE3NjgsIDgxNzc4LCA4MTc4OCwgODE3OTgsIDgxODA4LCA4MTgxOCwgODE4MjgsIDgxODM4LCAKLSAgICA4MTg0OSwgODE4NjAsIDgxODcwLCA4MTg4MCwgODE4OTEsIDgxOTAyLCA4MTkxMywgODE5MjMsIDgxOTMzLCA4MTk0MywgCi0gICAgODE5NTMsIDgxOTYzLCA4MTk3MywgODE5ODMsIDgxOTk0LCA4MjAwNCwgODIwMTQsIDgyMDI1LCA4MjAzNiwgODIwNDcsIAotICAgIDgyMDU3LCA4MjA2NywgODIwNzcsIDgyMDg3LCA4MjA5OCwgODIxMDgsIDgyMTE4LCA4MjEyOSwgODIxNDAsIDgyMTUwLCAKLSAgICA4MjE2MCwgODIxNjksIDgyMTc4LCA4MjE4NywgODIxOTYsIDgyMjA1LCA4MjIxNSwgMCwgMCwgODIyMjUsIDgyMjM1LCAKLSAgICA4MjI0NSwgODIyNTUsIDgyMjY1LCA4MjI3NiwgODIyODYsIDgyMjk2LCA4MjMwNywgODIzMTcsIDgyMzI4LCA4MjMzNywgCi0gICAgODIzNDYsIDgyMzU3LCA4MjM2NywgODIzNzgsIDgyMzg5LCA4MjQwMSwgODI0MTEsIDgyNDIyLCA4MjQzMSwgODI0NDEsIAotICAgIDgyNDUxLCA4MjQ2MywgODI0NzMsIDgyNDgzLCA4MjQ5MywgODI1MDMsIDgyNTEzLCA4MjUyMiwgODI1MzEsIDgyNTQwLCAKLSAgICA4MjU0OSwgODI1NTksIDgyNTY5LCA4MjU3OSwgODI1ODksIDgyNTk5LCA4MjYwOSwgODI2MTksIDgyNjI5LCA4MjYzOSwgCi0gICAgODI2NDksIDgyNjU5LCA4MjY2OSwgODI2NzgsIDgyNjg3LCA4MjY5NiwgODI3MDYsIDgyNzE2LCA4MjcyNiwgODI3MzYsIAotICAgIDgyNzQ2LCA4Mjc1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODI3NjcsIDgyNzgyLCAKLSAgICA4Mjc5NywgODI4MDMsIDgyODA5LCA4MjgxNSwgODI4MjEsIDgyODI3LCA4MjgzMywgODI4MzksIDgyODQ1LCA4Mjg1MywgCi0gICAgODI4NTcsIDgyODYwLCAwLCAwLCA4Mjg2OCwgODI4NzEsIDgyODc0LCA4Mjg3NywgODI4ODAsIDgyODgzLCA4Mjg4NiwgCi0gICAgODI4ODksIDgyODkyLCA4Mjg5NSwgODI4OTgsIDgyOTAxLCA4MjkwNCwgODI5MDcsIDgyOTEwLCA4MjkxMywgODI5MTYsIAotICAgIDgyOTI0LCA4MjkzMywgODI5NDQsIDgyOTUyLCA4Mjk2MCwgODI5NjksIDgyOTc4LCA4Mjk4OSwgODMwMDEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDgzMDEwLCA4MzAxNSwgODMwMjAsIDgzMDI3LCA4MzAzNCwgODMwNDAsIDgzMDQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4MzA1MSwgODMwNjEsIDgzMDcxLCA4MzA4MSwgODMwOTAsIDgzMTAxLCA4MzExMCwgODMxMTksIAotICAgIDgzMTI5LCA4MzEzOSwgODMxNTEsIDgzMTYzLCA4MzE3NCwgODMxODUsIDgzMTk2LCA4MzIwNywgODMyMTcsIDgzMjI3LCAKLSAgICA4MzIzNywgODMyNDcsIDgzMjU4LCA4MzI2OSwgODMyNzMsIDgzMjc4LCA4MzI4NywgODMyOTYsIDgzMzAwLCA4MzMwNCwgCi0gICAgODMzMDgsIDgzMzEzLCA4MzMxOCwgODMzMjMsIDgzMzI4LCA4MzMzMSwgODMzMzUsIDAsIDgzMzQwLCA4MzM0MywgODMzNDYsIAotICAgIDgzMzUwLCA4MzM1NCwgODMzNTksIDgzMzYzLCA4MzM2NywgODMzNzIsIDgzMzc3LCA4MzM4NCwgODMzOTEsIDgzMzk0LCAKLSAgICA4MzM5NywgODM0MDAsIDgzNDAzLCA4MzQwNiwgODM0MTAsIDgzNDE0LCAwLCA4MzQxOCwgODM0MjMsIDgzNDI3LCA4MzQzMSwgCi0gICAgMCwgMCwgMCwgMCwgODM0MzYsIDgzNDQxLCA4MzQ0OCwgODM0NTMsIDgzNDU4LCAwLCA4MzQ2MywgODM0NjgsIDgzNDczLCAKLSAgICA4MzQ3OCwgODM0ODMsIDgzNDg4LCA4MzQ5MywgODM0OTgsIDgzNTAzLCA4MzUwOCwgODM1MTMsIDgzNTE4LCA4MzUyNywgCi0gICAgODM1MzYsIDgzNTQ0LCA4MzU1MiwgODM1NjEsIDgzNTcwLCA4MzU3OSwgODM1ODgsIDgzNTk2LCA4MzYwNCwgODM2MTIsIAotICAgIDgzNjIwLCA4MzYyNSwgODM2MzAsIDgzNjM2LCA4MzY0MiwgODM2NDgsIDgzNjU0LCA4MzY2MiwgODM2NzAsIDgzNjc2LCAKLSAgICA4MzY4MiwgODM2ODgsIDgzNjk0LCA4MzcwMCwgODM3MDYsIDgzNzEyLCA4MzcxOCwgODM3MjMsIDgzNzI4LCA4MzczMywgCi0gICAgODM3MzgsIDgzNzQzLCA4Mzc0OCwgODM3NTMsIDgzNzU4LCA4Mzc2NCwgODM3NzAsIDgzNzc2LCA4Mzc4MiwgODM3ODgsIAotICAgIDgzNzk0LCA4MzgwMCwgODM4MDYsIDgzODEyLCA4MzgxOCwgODM4MjQsIDgzODMwLCA4MzgzNiwgODM4NDIsIDgzODQ4LCAKLSAgICA4Mzg1NCwgODM4NjAsIDgzODY2LCA4Mzg3MiwgODM4NzgsIDgzODg0LCA4Mzg5MCwgODM4OTYsIDgzOTAyLCA4MzkwOCwgCi0gICAgODM5MTQsIDgzOTIwLCA4MzkyNiwgODM5MzIsIDgzOTM4LCA4Mzk0NCwgODM5NTAsIDgzOTU2LCA4Mzk2MiwgODM5NjgsIAotICAgIDgzOTc0LCA4Mzk4MCwgODM5ODYsIDgzOTkyLCA4Mzk5OCwgODQwMDQsIDg0MDEwLCA4NDAxNiwgODQwMjIsIDg0MDI4LCAKLSAgICA4NDAzNCwgODQwNDAsIDg0MDQ2LCA4NDA1MiwgODQwNTgsIDg0MDY0LCA4NDA3MCwgODQwNzYsIDg0MDgyLCA4NDA4OCwgCi0gICAgODQwOTQsIDg0MTAwLCA4NDEwNiwgODQxMTIsIDg0MTE4LCA4NDEyMywgODQxMjgsIDg0MTMzLCA4NDEzOCwgODQxNDQsIAotICAgIDg0MTUwLCA4NDE1NiwgODQxNjIsIDg0MTY4LCA4NDE3NCwgODQxODAsIDg0MTg2LCA4NDE5MiwgODQxOTgsIDg0MjA0LCAKLSAgICA4NDIxMCwgODQyMTUsIDg0MjIwLCA4NDIyNSwgODQyMzAsIDg0MjQyLCA4NDI1NCwgODQyNjUsIDg0Mjc2LCA4NDI4OCwgCi0gICAgODQzMDAsIDg0MzA4LCAwLCAwLCA4NDMxNiwgMCwgODQzMjQsIDg0MzI4LCA4NDMzMiwgODQzMzUsIDg0MzM5LCA4NDM0MywgCi0gICAgODQzNDYsIDg0MzQ5LCA4NDM1MywgODQzNTcsIDg0MzYwLCA4NDM2MywgODQzNjYsIDg0MzY5LCA4NDM3NCwgODQzNzcsIAotICAgIDg0MzgxLCA4NDM4NCwgODQzODcsIDg0MzkwLCA4NDM5MywgODQzOTYsIDg0Mzk5LCA4NDQwMiwgODQ0MDUsIDg0NDA4LCAKLSAgICA4NDQxMSwgODQ0MTQsIDg0NDE4LCA4NDQyMiwgODQ0MjYsIDg0NDMwLCA4NDQzNSwgODQ0NDAsIDg0NDQ2LCA4NDQ1MiwgCi0gICAgODQ0NTgsIDg0NDYzLCA4NDQ2OSwgODQ0NzUsIDg0NDgxLCA4NDQ4NiwgODQ0OTIsIDg0NDk4LCA4NDUwMywgODQ1MDgsIAotICAgIDg0NTEzLCA4NDUxOCwgODQ1MjQsIDg0NTMwLCA4NDUzNSwgODQ1NDAsIDg0NTQ2LCA4NDU1MSwgODQ1NTcsIDg0NTYzLCAKLSAgICA4NDU2OSwgODQ1NzUsIDg0NTgxLCA4NDU4NSwgODQ1OTAsIDg0NTk0LCA4NDU5OSwgODQ2MDMsIDg0NjA4LCA4NDYxMywgCi0gICAgODQ2MTksIDg0NjI1LCA4NDYzMSwgODQ2MzYsIDg0NjQyLCA4NDY0OCwgODQ2NTQsIDg0NjU5LCA4NDY2NSwgODQ2NzEsIAotICAgIDg0Njc2LCA4NDY4MSwgODQ2ODYsIDg0NjkxLCA4NDY5NywgODQ3MDMsIDg0NzA4LCA4NDcxMywgODQ3MTksIDg0NzI0LCAKLSAgICA4NDczMCwgODQ3MzYsIDg0NzQyLCA4NDc0OCwgODQ3NTQsIDg0NzU5LCA4NDc2MywgODQ3NjgsIDg0NzcxLCA4NDc3NiwgCi0gICAgODQ3ODEsIDg0Nzg3LCA4NDc5MiwgODQ3OTcsIDg0ODAxLCA4NDgwNywgODQ4MTIsIDg0ODE3LCA4NDgyMiwgODQ4MjcsIAotICAgIDg0ODMyLCA4NDgzNywgODQ4NDIsIDg0ODQ4LCA4NDg1NCwgODQ4NjAsIDg0ODY4LCA4NDg3MiwgODQ4NzYsIDg0ODgwLCAKLSAgICA4NDg4NCwgODQ4ODgsIDg0ODkyLCA4NDg5NywgODQ5MDIsIDg0OTA3LCA4NDkxMiwgODQ5MTcsIDg0OTIyLCA4NDkyNywgCi0gICAgODQ5MzIsIDg0OTM3LCA4NDk0MiwgODQ5NDcsIDg0OTUyLCA4NDk1NywgODQ5NjEsIDg0OTY1LCA4NDk3MCwgODQ5NzUsIAotICAgIDg0OTgwLCA4NDk4NSwgODQ5ODksIDg0OTk0LCA4NDk5OSwgODUwMDQsIDg1MDA5LCA4NTAxMywgODUwMTgsIDg1MDIzLCAKLSAgICA4NTAyOCwgODUwMzMsIDg1MDM3LCA4NTA0MiwgODUwNDcsIDg1MDUxLCA4NTA1NiwgODUwNjEsIDg1MDY2LCA4NTA3MSwgCi0gICAgODUwNzYsIDg1MDgwLCA4NTA4NywgODUwOTQsIDg1MDk4LCA4NTEwMywgODUxMDgsIDg1MTEzLCA4NTExOCwgODUxMjMsIAotICAgIDg1MTI4LCA4NTEzMywgODUxMzgsIDg1MTQzLCA4NTE0OCwgODUxNTMsIDg1MTU4LCA4NTE2MywgODUxNjgsIDg1MTczLCAKLSAgICA4NTE3OCwgODUxODMsIDg1MTg4LCA4NTE5MywgODUxOTgsIDg1MjAzLCA4NTIwOCwgODUyMTMsIDg1MjE4LCA4NTIyMywgCi0gICAgODUyMjgsIDg1MjMzLCA4NTIzOCwgODUyNDMsIDAsIDAsIDAsIDg1MjQ4LCA4NTI1MiwgODUyNTcsIDg1MjYxLCA4NTI2NiwgCi0gICAgODUyNzEsIDAsIDAsIDg1Mjc1LCA4NTI4MCwgODUyODUsIDg1Mjg5LCA4NTI5NCwgODUyOTksIDAsIDAsIDg1MzA0LCAKLSAgICA4NTMwOSwgODUzMTMsIDg1MzE4LCA4NTMyMywgODUzMjgsIDAsIDAsIDg1MzMzLCA4NTMzOCwgODUzNDMsIDAsIDAsIDAsIAotICAgIDg1MzQ3LCA4NTM1MSwgODUzNTUsIDg1MzU5LCA4NTM2MiwgODUzNjYsIDg1MzcwLCAwLCA4NTM3NCwgODUzODAsIDg1MzgzLCAKLSAgICA4NTM4NywgODUzOTAsIDg1Mzk0LCA4NTM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODU0MDIsIDg1NDA4LCAKLSAgICA4NTQxNCwgODU0MjAsIDg1NDI2LCAwLCAwLCA4NTQzMCwgODU0MzYsIDg1NDQyLCA4NTQ0OCwgODU0NTQsIDg1NDYwLCAKLSAgICA4NTQ2NywgODU0NzQsIDg1NDgxLCA4NTQ4OCwgODU0OTUsIDg1NTAyLCAwLCA4NTUwOSwgODU1MTYsIDg1NTIzLCA4NTUyOSwgCi0gICAgODU1MzYsIDg1NTQzLCA4NTU1MCwgODU1NTcsIDg1NTYzLCA4NTU3MCwgODU1NzcsIDg1NTg0LCA4NTU5MSwgODU1OTcsIAotICAgIDg1NjA0LCA4NTYxMSwgODU2MTgsIDg1NjI1LCA4NTYzMSwgODU2MzgsIDg1NjQ1LCA4NTY1MiwgODU2NTksIDg1NjY2LCAKLSAgICA4NTY3MywgODU2ODAsIDAsIDg1Njg3LCA4NTY5MywgODU3MDAsIDg1NzA3LCA4NTcxNCwgODU3MjEsIDg1NzI4LCA4NTczNSwgCi0gICAgODU3NDIsIDg1NzQ5LCA4NTc1NiwgODU3NjMsIDg1NzcwLCA4NTc3NywgODU3ODMsIDg1NzkwLCA4NTc5NywgODU4MDQsIAotICAgIDg1ODExLCAwLCA4NTgxOCwgODU4MjUsIDAsIDg1ODMyLCA4NTgzOSwgODU4NDYsIDg1ODUzLCA4NTg2MCwgODU4NjcsIAotICAgIDg1ODc0LCA4NTg4MSwgODU4ODgsIDg1ODk1LCA4NTkwMiwgODU5MDksIDg1OTE2LCA4NTkyMywgODU5MzAsIDAsIDAsIAotICAgIDg1OTM2LCA4NTk0MSwgODU5NDYsIDg1OTUxLCA4NTk1NiwgODU5NjEsIDg1OTY2LCA4NTk3MSwgODU5NzYsIDg1OTgxLCAKLSAgICA4NTk4NiwgODU5OTEsIDg1OTk2LCA4NjAwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYwMDYsIDg2MDEzLCAKLSAgICA4NjAyMCwgODYwMjcsIDg2MDM0LCA4NjA0MSwgODYwNDgsIDg2MDU1LCA4NjA2MiwgODYwNjksIDg2MDc2LCA4NjA4MywgCi0gICAgODYwOTAsIDg2MDk3LCA4NjEwNCwgODYxMTEsIDg2MTE4LCA4NjEyNSwgODYxMzIsIDg2MTM5LCA4NjE0NywgODYxNTUsIAotICAgIDg2MTYyLCA4NjE2OSwgODYxNzQsIDg2MTgyLCA4NjE5MCwgODYxOTcsIDg2MjA0LCA4NjIwOSwgODYyMTYsIDg2MjIxLCAKLSAgICA4NjIyNiwgODYyMzMsIDg2MjM4LCA4NjI0MywgODYyNDgsIDg2MjU2LCA4NjI2MSwgODYyNjYsIDg2MjczLCA4NjI3OCwgCi0gICAgODYyODMsIDg2MjkwLCA4NjI5NywgODYzMDIsIDg2MzA3LCA4NjMxMiwgODYzMTcsIDg2MzIyLCA4NjMyNywgODYzMzIsIAotICAgIDg2MzM3LCA4NjM0MiwgODYzNDksIDg2MzU0LCA4NjM2MSwgODYzNjYsIDg2MzcxLCA4NjM3NiwgODYzODEsIDg2Mzg2LCAKLSAgICA4NjM5MSwgODYzOTYsIDg2NDAxLCA4NjQwNiwgODY0MTEsIDg2NDE2LCA4NjQyMywgODY0MzAsIDg2NDM3LCA4NjQ0NCwgCi0gICAgODY0NTAsIDg2NDU1LCA4NjQ2MiwgODY0NjcsIDg2NDcyLCA4NjQ4MSwgODY0ODgsIDg2NDk3LCA4NjUwNCwgODY1MDksIAotICAgIDg2NTE0LCA4NjUyMiwgODY1MjcsIDg2NTMyLCA4NjUzNywgODY1NDIsIDg2NTQ3LCA4NjU1NCwgODY1NTksIDg2NTY0LCAKLSAgICA4NjU2OSwgODY1NzQsIDg2NTc5LCA4NjU4NiwgODY1OTMsIDg2NjAwLCA4NjYwNywgODY2MTQsIDg2NjIxLCA4NjYyOCwgCi0gICAgODY2MzUsIDg2NjQyLCA4NjY0OSwgODY2NTYsIDg2NjYzLCA4NjY3MCwgODY2NzcsIDg2Njg0LCA4NjY5MSwgODY2OTgsIAotICAgIDg2NzA1LCA4NjcxMiwgODY3MTksIDg2NzI2LCA4NjczMywgODY3NDAsIDg2NzQ3LCA4Njc1NCwgODY3NjEsIDg2NzY4LCAKLSAgICA4Njc3NSwgMCwgMCwgMCwgMCwgMCwgODY3ODIsIDg2NzkwLCA4Njc5OCwgMCwgMCwgMCwgMCwgODY4MDMsIDg2ODA3LCAKLSAgICA4NjgxMSwgODY4MTUsIDg2ODE5LCA4NjgyMywgODY4MjcsIDg2ODMxLCA4NjgzNSwgODY4MzksIDg2ODQ0LCA4Njg0OSwgCi0gICAgODY4NTQsIDg2ODU5LCA4Njg2NCwgODY4NjksIDg2ODc0LCA4Njg3OSwgODY4ODQsIDg2ODkwLCA4Njg5NiwgODY5MDIsIAotICAgIDg2OTA5LCA4NjkxNiwgODY5MjMsIDg2OTMwLCA4NjkzNywgODY5NDQsIDg2OTUwLCA4Njk1NiwgODY5NjIsIDg2OTY5LCAKLSAgICA4Njk3NiwgODY5ODMsIDg2OTkwLCA4Njk5NywgODcwMDQsIDg3MDExLCA4NzAxOCwgODcwMjUsIDg3MDMyLCA4NzAzOSwgCi0gICAgODcwNDYsIDg3MDUzLCA4NzA2MCwgMCwgMCwgMCwgODcwNjcsIDg3MDc1LCA4NzA4MywgODcwOTEsIDg3MDk5LCA4NzEwNywgCi0gICAgODcxMTcsIDg3MTI3LCA4NzEzNSwgODcxNDMsIDg3MTUxLCA4NzE1OSwgODcxNjcsIDg3MTczLCA4NzE4MCwgODcxODksIAotICAgIDg3MTk4LCA4NzIwNywgODcyMTYsIDg3MjI1LCA4NzIzNCwgODcyNDQsIDg3MjU1LCA4NzI2NSwgODcyNzYsIDg3Mjg1LCAKLSAgICA4NzI5NCwgODczMDMsIDg3MzEzLCA4NzMyNCwgODczMzQsIDg3MzQ1LCA4NzM1NiwgODczNjUsIDg3MzczLCA4NzM3OSwgCi0gICAgODczODUsIDg3MzkxLCA4NzM5NywgODc0MDUsIDg3NDEzLCA4NzQxOSwgODc0MjYsIDg3NDM2LCA4NzQ0MywgODc0NTAsIAotICAgIDg3NDU3LCA4NzQ2NCwgODc0NzEsIDg3NDgxLCA4NzQ4OCwgODc0OTUsIDg3NTAzLCA4NzUxMSwgODc1MjAsIDg3NTI5LCAKLSAgICA4NzUzOCwgODc1NDcsIDg3NTU2LCA4NzU2NCwgODc1NzMsIDg3NTgyLCA4NzU5MSwgODc1OTUsIDg3NjAyLCA4NzYwNywgCi0gICAgODc2MTIsIDg3NjE2LCA4NzYyMCwgODc2MjQsIDg3NjI4LCA4NzYzMywgODc2MzgsIDg3NjQ0LCA4NzY1MCwgODc2NTQsIAotICAgIDg3NjYwLCA4NzY2NCwgODc2NjgsIDg3NjcyLCA4NzY3NiwgODc2ODAsIDg3Njg0LCA4NzY5MCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODc2OTQsIDg3Njk5LCA4NzcwNCwgODc3MDksIDg3NzE0LCA4NzcyMSwgODc3MjYsIDg3NzMxLCA4NzczNiwgODc3NDEsIAotICAgIDg3NzQ2LCA4Nzc1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg3MDgsIDg4NzE1LCA4ODcyNCwgODg3MzMsIDg4NzQwLCA4ODc0NywgODg3NTQsIAorICAgIDg4NzYxLCA4ODc2OCwgODg3NzUsIDg4NzgxLCA4ODc4OCwgODg3OTUsIDg4ODAyLCA4ODgwOSwgODg4MTYsIDg4ODIzLCAKKyAgICA4ODgzMCwgODg4MzcsIDg4ODQ2LCA4ODg1MywgODg4NjAsIDg4ODY3LCA4ODg3NCwgODg4ODEsIDg4ODg4LCA4ODg5NSwgCisgICAgODg5MDIsIDg4OTExLCA4ODkxOCwgODg5MjUsIDg4OTMyLCA4ODkzOSwgODg5NDYsIDg4OTUzLCA4ODk2MiwgODg5NjksIAorICAgIDg4OTc2LCA4ODk4MywgODg5OTAsIDg4OTk5LCA4OTAwNiwgODkwMTMsIDg5MDIwLCA4OTAyOCwgODkwMzcsIDAsIDAsIAorICAgIDg5MDQ2LCA4OTA1MCwgODkwNTQsIDg5MDU5LCA4OTA2NCwgODkwNjksIDg5MDc0LCA4OTA3OCwgODkwODMsIDg5MDg4LCAKKyAgICA4OTA5MywgODkwOTgsIDg5MTAzLCA4OTEwOCwgODkxMTIsIDg5MTE2LCA4OTEyMSwgODkxMjYsIDg5MTMxLCA4OTEzNSwgCisgICAgODkxNDAsIDg5MTQ1LCA4OTE0OSwgODkxNTQsIDg5MTU5LCA4OTE2NCwgODkxNjksIDg5MTc0LCA4OTE3OSwgMCwgMCwgMCwgCisgICAgODkxODQsIDg5MTg4LCA4OTE5MywgODkxOTgsIDg5MjAyLCA4OTIwNywgODkyMTEsIDg5MjE2LCA4OTIyMSwgODkyMjYsIAorICAgIDg5MjMxLCA4OTIzNSwgODkyMzksIDg5MjQ0LCA4OTI0OSwgODkyNTQsIDg5MjU5LCA4OTI2NCwgODkyNjksIDg5MjczLCAKKyAgICA4OTI3OCwgODkyODMsIDg5Mjg4LCA4OTI5MywgODkyOTgsIDg5MzAzLCA4OTMwNywgODkzMTEsIDg5MzE2LCA4OTMyMSwgCisgICAgODkzMjYsIDg5MzMxLCA4OTMzNiwgODkzNDEsIDg5MzQ2LCA4OTM1MSwgODkzNTYsIDg5MzYxLCA4OTM2NiwgODkzNzEsIAorICAgIDg5Mzc2LCA4OTM4MSwgODkzODYsIDg5MzkxLCA4OTM5NiwgODk0MDEsIDg5NDA2LCA4OTQxMSwgODk0MTYsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NzU2LCA4Nzc2MywgODc3NzIsIDg3NzgxLCA4Nzc4OCwgODc3OTUsIDg3ODAyLCAKLSAgICA4NzgwOSwgODc4MTYsIDg3ODIzLCA4NzgyOSwgODc4MzYsIDg3ODQzLCA4Nzg1MCwgODc4NTcsIDg3ODY0LCA4Nzg3MSwgCi0gICAgODc4NzgsIDg3ODg1LCA4Nzg5NCwgODc5MDEsIDg3OTA4LCA4NzkxNSwgODc5MjIsIDg3OTI5LCA4NzkzNiwgODc5NDMsIAotICAgIDg3OTUwLCA4Nzk1OSwgODc5NjYsIDg3OTczLCA4Nzk4MCwgODc5ODcsIDg3OTk0LCA4ODAwMSwgODgwMTAsIDg4MDE3LCAKLSAgICA4ODAyNCwgODgwMzEsIDg4MDM4LCA4ODA0NywgODgwNTQsIDg4MDYxLCA4ODA2OCwgODgwNzYsIDg4MDg1LCAwLCAwLCAKLSAgICA4ODA5NCwgODgwOTgsIDg4MTAyLCA4ODEwNywgODgxMTIsIDg4MTE3LCA4ODEyMiwgODgxMjYsIDg4MTMxLCA4ODEzNiwgCi0gICAgODgxNDEsIDg4MTQ2LCA4ODE1MSwgODgxNTYsIDg4MTYwLCA4ODE2NCwgODgxNjgsIDg4MTczLCA4ODE3OCwgODgxODIsIAotICAgIDg4MTg3LCA4ODE5MiwgODgxOTYsIDg4MjAwLCA4ODIwNSwgODgyMTAsIDg4MjE1LCA4ODIyMCwgODgyMjUsIDAsIDAsIDAsIAotICAgIDg4MjMwLCA4ODIzNCwgODgyMzksIDg4MjQ0LCA4ODI0OCwgODgyNTMsIDg4MjU3LCA4ODI2MiwgODgyNjcsIDg4MjcyLCAKLSAgICA4ODI3NywgODgyODEsIDg4Mjg1LCA4ODI5MCwgODgyOTUsIDg4MzAwLCA4ODMwNSwgODgzMDksIDg4MzE0LCA4ODMxOCwgCi0gICAgODgzMjMsIDg4MzI4LCA4ODMzMiwgODgzMzcsIDg4MzQyLCA4ODM0NywgODgzNTEsIDg4MzU1LCA4ODM2MCwgODgzNjUsIAotICAgIDg4MzcwLCA4ODM3NSwgODgzODAsIDg4Mzg1LCA4ODM5MCwgODgzOTUsIDg4NDAwLCA4ODQwNSwgODg0MTAsIDg4NDE1LCAKLSAgICA4ODQyMCwgODg0MjUsIDg4NDMwLCA4ODQzNSwgODg0NDAsIDg4NDQ1LCA4ODQ1MCwgODg0NTUsIDg4NDYwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTQyMSwgODk0MjUsIAorICAgIDg5NDMwLCA4OTQzNSwgODk0NDAsIDg5NDQ0LCA4OTQ0OSwgODk0NTQsIDg5NDU5LCA4OTQ2NCwgODk0NjgsIDg5NDcyLCAKKyAgICA4OTQ3NywgODk0ODIsIDg5NDg3LCA4OTQ5MiwgODk0OTYsIDg5NTAxLCA4OTUwNiwgODk1MTEsIDg5NTE2LCA4OTUyMSwgCisgICAgODk1MjYsIDg5NTMwLCA4OTUzNSwgODk1NDAsIDg5NTQ1LCA4OTU1MCwgODk1NTUsIDg5NTYwLCA4OTU2NSwgMCwgODk1NzAsIAorICAgIDg5NTc1LCA4OTU4MCwgODk1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NTkyLCA4OTU5NywgCisgICAgODk2MDIsIDg5NjA3LCA4OTYxMiwgODk2MTcsIDg5NjIyLCA4OTYyNywgODk2MzIsIDg5NjM3LCA4OTY0MiwgODk2NDcsIAorICAgIDg5NjUyLCA4OTY1NywgODk2NjIsIDg5NjY3LCA4OTY3MiwgODk2NzcsIDg5NjgyLCA4OTY4NywgODk2OTIsIDg5Njk3LCAKKyAgICA4OTcwMiwgODk3MDcsIDg5NzEyLCA4OTcxNywgODk3MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NDY1LCA4ODQ2OSwgCi0gICAgODg0NzQsIDg4NDc5LCA4ODQ4NCwgODg0ODgsIDg4NDkzLCA4ODQ5OCwgODg1MDMsIDg4NTA4LCA4ODUxMiwgODg1MTYsIAotICAgIDg4NTIxLCA4ODUyNiwgODg1MzEsIDg4NTM2LCA4ODU0MCwgODg1NDUsIDg4NTUwLCA4ODU1NSwgODg1NjAsIDg4NTY1LCAKLSAgICA4ODU3MCwgODg1NzQsIDg4NTc5LCA4ODU4NCwgODg1ODksIDg4NTk0LCA4ODU5OSwgODg2MDQsIDg4NjA5LCAwLCA4ODYxNCwgCi0gICAgODg2MTksIDg4NjI0LCA4ODYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg2MzYsIDg4NjQxLCAKLSAgICA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg2LCA4ODY5MSwgCi0gICAgODg2OTYsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCA4ODcyMSwgODg3MjYsIDg4NzMxLCA4ODczNiwgODg3NDEsIAotICAgIDg4NzQ2LCA4ODc1MSwgODg3NTYsIDg4NzYxLCA4ODc2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk3MjksIDg5NzM0LCA4OTczOSwgCisgICAgODk3NDQsIDg5NzQ5LCA4OTc1NCwgODk3NTksIDg5NzY0LCA4OTc2OSwgODk3NzQsIDg5Nzc5LCA4OTc4NCwgODk3ODksIAorICAgIDg5Nzk0LCA4OTc5OSwgODk4MDQsIDg5ODA5LCA4OTgxNCwgODk4MTksIDg5ODI0LCA4OTgyOSwgODk4MzQsIDg5ODM5LCAKKyAgICA4OTg0NCwgODk4NDksIDg5ODU0LCA4OTg1OSwgODk4NjMsIDg5ODY3LCA4OTg3MSwgMCwgODk4NzYsIDg5ODgyLCA4OTg4NywgCisgICAgODk4OTIsIDg5ODk3LCA4OTkwMiwgODk5MDgsIDg5OTE0LCA4OTkyMCwgODk5MjYsIDg5OTMyLCA4OTkzOCwgODk5NDQsIAorICAgIDg5OTUwLCA4OTk1NiwgODk5NjIsIDg5OTY4LCA4OTk3NCwgODk5ODAsIDg5OTg1LCA4OTk5MSwgODk5OTcsIDkwMDAyLCAKKyAgICA5MDAwOCwgOTAwMTMsIDkwMDE5LCA5MDAyNSwgOTAwMzAsIDkwMDM2LCA5MDA0MiwgOTAwNDcsIDkwMDUzLCA5MDA1OSwgCisgICAgOTAwNjQsIDkwMDcwLCA5MDA3NiwgOTAwODIsIDAsIDAsIDAsIDAsIDkwMDg3LCA5MDA5MywgOTAwOTksIDkwMTA1LCAKKyAgICA5MDExMSwgOTAxMTcsIDkwMTIzLCA5MDEyOSwgOTAxMzUsIDkwMTQyLCA5MDE0NywgOTAxNTIsIDkwMTU4LCA5MDE2NCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg3NzMsIDg4Nzc4LCA4ODc4MywgCi0gICAgODg3ODgsIDg4NzkzLCA4ODc5OCwgODg4MDMsIDg4ODA4LCA4ODgxMywgODg4MTgsIDg4ODIzLCA4ODgyOCwgODg4MzMsIAotICAgIDg4ODM4LCA4ODg0MywgODg4NDgsIDg4ODUzLCA4ODg1OCwgODg4NjMsIDg4ODY4LCA4ODg3MywgODg4NzgsIDg4ODgzLCAKLSAgICA4ODg4OCwgODg4OTMsIDg4ODk4LCA4ODkwMywgODg5MDcsIDg4OTExLCA4ODkxNSwgMCwgODg5MjAsIDg4OTI2LCA4ODkzMSwgCi0gICAgODg5MzYsIDg4OTQxLCA4ODk0NiwgODg5NTIsIDg4OTU4LCA4ODk2NCwgODg5NzAsIDg4OTc2LCA4ODk4MiwgODg5ODgsIAotICAgIDg4OTk0LCA4OTAwMCwgODkwMDYsIDg5MDEyLCA4OTAxOCwgODkwMjQsIDg5MDI5LCA4OTAzNSwgODkwNDEsIDg5MDQ2LCAKLSAgICA4OTA1MiwgODkwNTcsIDg5MDYzLCA4OTA2OSwgODkwNzQsIDg5MDgwLCA4OTA4NiwgODkwOTEsIDg5MDk3LCA4OTEwMywgCi0gICAgODkxMDksIDg5MTE1LCA4OTEyMSwgODkxMjcsIDAsIDAsIDAsIDAsIDg5MTMyLCA4OTEzOCwgODkxNDQsIDg5MTUwLCAKLSAgICA4OTE1NiwgODkxNjIsIDg5MTY4LCA4OTE3NCwgODkxODAsIDg5MTg3LCA4OTE5MiwgODkxOTcsIDg5MjAzLCA4OTIwOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODkyMTUsIDg5MjIwLCA4OTIyNSwgCi0gICAgODkyMzAsIDg5MjM2LCA4OTI0MSwgODkyNDcsIDg5MjUzLCA4OTI1OSwgODkyNjUsIDg5MjcyLCA4OTI3OCwgODkyODUsIAotICAgIDg5MjkwLCA4OTI5NSwgODkzMDAsIDg5MzA1LCA4OTMxMCwgODkzMTUsIDg5MzIwLCA4OTMyNSwgODkzMzAsIDg5MzM1LCAKLSAgICA4OTM0MCwgODkzNDUsIDg5MzUwLCA4OTM1NSwgODkzNjAsIDg5MzY1LCA4OTM3MCwgODkzNzUsIDg5MzgwLCA4OTM4NSwgCi0gICAgODkzOTAsIDg5Mzk1LCA4OTQwMCwgODk0MDUsIDg5NDEwLCA4OTQxNSwgODk0MjAsIDg5NDI1LCA4OTQzMCwgODk0MzUsIAotICAgIDg5NDQwLCA4OTQ0NiwgODk0NTEsIDg5NDU3LCA4OTQ2MywgODk0NjksIDg5NDc1LCA4OTQ4MiwgODk0ODgsIDg5NDk1LCAKLSAgICA4OTUwMCwgODk1MDUsIDg5NTEwLCA4OTUxNSwgODk1MjAsIDg5NTI1LCA4OTUzMCwgODk1MzUsIDg5NTQwLCA4OTU0NSwgCi0gICAgODk1NTAsIDg5NTU1LCA4OTU2MCwgODk1NjUsIDg5NTcwLCA4OTU3NSwgODk1ODAsIDg5NTg1LCA4OTU5MCwgODk1OTUsIAotICAgIDg5NjAwLCA4OTYwNSwgODk2MTAsIDg5NjE1LCA4OTYyMCwgODk2MjUsIDg5NjMwLCA4OTYzNSwgODk2NDAsIDg5NjQ1LCAKLSAgICA4OTY1MCwgODk2NTUsIDg5NjYwLCA4OTY2NSwgODk2NzAsIDg5Njc1LCA4OTY4MCwgODk2ODUsIDg5NjkwLCA4OTY5NSwgCi0gICAgODk3MDAsIDg5NzA1LCA4OTcxMCwgODk3MTUsIDg5NzIwLCA4OTcyNSwgODk3MzAsIDg5NzM1LCA4OTc0MCwgODk3NDUsIAotICAgIDg5NzUwLCA4OTc1NSwgODk3NjAsIDg5NzY1LCA4OTc3MCwgODk3NzUsIDg5NzgwLCA4OTc4NSwgODk3OTAsIDg5Nzk1LCAKLSAgICA4OTgwMCwgODk4MDUsIDg5ODEwLCA4OTgxNSwgODk4MjAsIDg5ODI1LCA4OTgzMCwgODk4MzUsIDg5ODQwLCA4OTg0NSwgCi0gICAgODk4NTAsIDg5ODU1LCA4OTg2MCwgODk4NjUsIDg5ODcwLCA4OTg3NSwgODk4ODAsIDg5ODg1LCA4OTg5MCwgODk4OTUsIAotICAgIDg5OTAwLCA4OTkwNSwgODk5MTAsIDg5OTE0LCA4OTkxOSwgODk5MjQsIDg5OTI5LCA4OTkzNCwgODk5MzksIDg5OTQ0LCAKLSAgICA4OTk0OSwgODk5NTQsIDg5OTU5LCA4OTk2NCwgODk5NjksIDg5OTc0LCA4OTk3OCwgODk5ODIsIDg5OTg2LCA4OTk5MCwgCi0gICAgODk5OTQsIDg5OTk4LCA5MDAwMiwgOTAwMDcsIDkwMDEyLCAwLCAwLCA5MDAxNywgOTAwMjIsIDkwMDI2LCA5MDAzMCwgCi0gICAgOTAwMzQsIDkwMDM4LCA5MDA0MiwgOTAwNDYsIDkwMDUwLCA5MDA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTAxNzAsIDkwMTc1LCA5MDE4MCwgCisgICAgOTAxODUsIDkwMTkxLCA5MDE5NiwgOTAyMDIsIDkwMjA4LCA5MDIxNCwgOTAyMjAsIDkwMjI3LCA5MDIzMywgOTAyNDAsIAorICAgIDkwMjQ1LCA5MDI1MCwgOTAyNTUsIDkwMjYwLCA5MDI2NSwgOTAyNzAsIDkwMjc1LCA5MDI4MCwgOTAyODUsIDkwMjkwLCAKKyAgICA5MDI5NSwgOTAzMDAsIDkwMzA1LCA5MDMxMCwgOTAzMTUsIDkwMzIwLCA5MDMyNSwgOTAzMzAsIDkwMzM1LCA5MDM0MCwgCisgICAgOTAzNDUsIDkwMzUwLCA5MDM1NSwgOTAzNjAsIDkwMzY1LCA5MDM3MCwgOTAzNzUsIDkwMzgwLCA5MDM4NSwgOTAzOTAsIAorICAgIDkwMzk1LCA5MDQwMSwgOTA0MDYsIDkwNDEyLCA5MDQxOCwgOTA0MjQsIDkwNDMwLCA5MDQzNywgOTA0NDMsIDkwNDUwLCAKKyAgICA5MDQ1NSwgOTA0NjAsIDkwNDY1LCA5MDQ3MCwgOTA0NzUsIDkwNDgwLCA5MDQ4NSwgOTA0OTAsIDkwNDk1LCA5MDUwMCwgCisgICAgOTA1MDUsIDkwNTEwLCA5MDUxNSwgOTA1MjAsIDkwNTI1LCA5MDUzMCwgOTA1MzUsIDkwNTQwLCA5MDU0NSwgOTA1NTAsIAorICAgIDkwNTU1LCA5MDU2MCwgOTA1NjUsIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MCwgOTA1OTUsIDkwNjAwLCAKKyAgICA5MDYwNSwgOTA2MTAsIDkwNjE1LCA5MDYyMCwgOTA2MjUsIDkwNjMwLCA5MDYzNSwgOTA2NDAsIDkwNjQ1LCA5MDY1MCwgCisgICAgOTA2NTUsIDkwNjYwLCA5MDY2NSwgOTA2NzAsIDkwNjc1LCA5MDY4MCwgOTA2ODUsIDkwNjkwLCA5MDY5NSwgOTA3MDAsIAorICAgIDkwNzA1LCA5MDcxMCwgOTA3MTUsIDkwNzIwLCA5MDcyNSwgOTA3MzAsIDkwNzM1LCA5MDc0MCwgOTA3NDUsIDkwNzUwLCAKKyAgICA5MDc1NSwgOTA3NjAsIDkwNzY1LCA5MDc3MCwgOTA3NzUsIDkwNzgwLCA5MDc4NSwgOTA3OTAsIDkwNzk1LCA5MDgwMCwgCisgICAgOTA4MDUsIDkwODEwLCA5MDgxNSwgOTA4MjAsIDkwODI1LCA5MDgzMCwgOTA4MzUsIDkwODQwLCA5MDg0NSwgOTA4NTAsIAorICAgIDkwODU1LCA5MDg2MCwgOTA4NjUsIDkwODY5LCA5MDg3MywgOTA4NzgsIDkwODgzLCA5MDg4OCwgOTA4OTMsIDkwODk4LCAKKyAgICA5MDkwMywgOTA5MDgsIDkwOTEzLCA5MDkxOCwgOTA5MjMsIDkwOTI4LCA5MDkzMiwgOTA5MzYsIDkwOTQwLCA5MDk0NCwgCisgICAgOTA5NDgsIDkwOTUyLCA5MDk1NiwgOTA5NjEsIDkwOTY2LCAwLCAwLCA5MDk3MSwgOTA5NzYsIDkwOTgwLCA5MDk4NCwgCisgICAgOTA5ODgsIDkwOTkyLCA5MDk5NiwgOTEwMDAsIDkxMDA0LCA5MTAwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTAwNTgsIDkwMDYyLCA5MDA2NiwgOTAwNzAsIDkwMDc0LCA5MDA3OCwgMCwgMCwgOTAwODMsIDAsIAotICAgIDkwMDg4LCA5MDA5MiwgOTAwOTcsIDkwMTAyLCA5MDEwNywgOTAxMTIsIDkwMTE3LCA5MDEyMiwgOTAxMjcsIDkwMTMyLCAKLSAgICA5MDEzNywgOTAxNDEsIDkwMTQ2LCA5MDE1MSwgOTAxNTYsIDkwMTYxLCA5MDE2NSwgOTAxNzAsIDkwMTc1LCA5MDE4MCwgCi0gICAgOTAxODUsIDkwMTg5LCA5MDE5NCwgOTAxOTksIDkwMjA0LCA5MDIwOSwgOTAyMTMsIDkwMjE4LCA5MDIyMywgOTAyMjgsIAotICAgIDkwMjMzLCA5MDIzOCwgOTAyNDMsIDkwMjQ4LCA5MDI1MywgOTAyNTgsIDkwMjYzLCA5MDI2OCwgOTAyNzMsIDkwMjc3LCAKLSAgICA5MDI4MiwgOTAyODcsIDkwMjkyLCA5MDI5NywgMCwgOTAzMDIsIDkwMzA3LCAwLCAwLCAwLCA5MDMxMiwgMCwgMCwgOTAzMTcsIAotICAgIDkwMzIyLCA5MDMyOSwgOTAzMzYsIDkwMzQzLCA5MDM1MCwgOTAzNTcsIDkwMzY0LCA5MDM3MSwgOTAzNzgsIDkwMzg1LCAKLSAgICA5MDM5MiwgOTAzOTksIDkwNDA2LCA5MDQxMywgOTA0MjAsIDkwNDI3LCA5MDQzNCwgOTA0NDEsIDkwNDQ4LCA5MDQ1NSwgCi0gICAgOTA0NjIsIDkwNDY5LCAwLCA5MDQ3NiwgOTA0ODMsIDkwNDg5LCA5MDQ5NSwgOTA1MDEsIDkwNTA4LCA5MDUxNSwgOTA1MjMsIAotICAgIDkwNTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDU0MCwgOTA1NDUsIDkwNTUwLCA5MDU1NSwgOTA1NjAsIDkwNTY1LCAKLSAgICA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTAsIDkwNTk1LCA5MDYwMCwgOTA2MDUsIDkwNjEwLCA5MDYxNSwgCi0gICAgOTA2MjAsIDkwNjI1LCA5MDYzMCwgOTA2MzUsIDkwNjQwLCA5MDY0NSwgOTA2NTAsIDkwNjU0LCA5MDY1OSwgOTA2NjQsIAotICAgIDkwNjcwLCA5MDY3NCwgMCwgMCwgMCwgOTA2NzgsIDkwNjg0LCA5MDY4OCwgOTA2OTMsIDkwNjk4LCA5MDcwMywgOTA3MDcsIAotICAgIDkwNzEyLCA5MDcxNiwgOTA3MjEsIDkwNzI2LCA5MDczMCwgOTA3MzQsIDkwNzM4LCA5MDc0MiwgOTA3NDYsIDkwNzUxLCAKLSAgICA5MDc1NiwgOTA3NjAsIDkwNzY1LCA5MDc3MCwgOTA3NzQsIDkwNzc5LCA5MDc4NCwgOTA3ODksIDkwNzk0LCA5MDc5OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTA4MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkxMDEyLCA5MTAxNiwgOTEwMjAsIDkxMDI0LCA5MTAyOCwgOTEwMzIsIDAsIDAsIDkxMDM3LCAwLCAKKyAgICA5MTA0MiwgOTEwNDYsIDkxMDUxLCA5MTA1NiwgOTEwNjEsIDkxMDY2LCA5MTA3MSwgOTEwNzYsIDkxMDgxLCA5MTA4NiwgCisgICAgOTEwOTEsIDkxMDk1LCA5MTEwMCwgOTExMDUsIDkxMTEwLCA5MTExNSwgOTExMTksIDkxMTI0LCA5MTEyOSwgOTExMzQsIAorICAgIDkxMTM5LCA5MTE0MywgOTExNDgsIDkxMTUzLCA5MTE1OCwgOTExNjMsIDkxMTY3LCA5MTE3MiwgOTExNzcsIDkxMTgyLCAKKyAgICA5MTE4NywgOTExOTEsIDkxMTk2LCA5MTIwMSwgOTEyMDYsIDkxMjExLCA5MTIxNiwgOTEyMjEsIDkxMjI2LCA5MTIzMCwgCisgICAgOTEyMzUsIDkxMjQwLCA5MTI0NSwgOTEyNTAsIDAsIDkxMjU1LCA5MTI2MCwgMCwgMCwgMCwgOTEyNjUsIDAsIDAsIDkxMjcwLCAKKyAgICA5MTI3NSwgOTEyODIsIDkxMjg5LCA5MTI5NiwgOTEzMDMsIDkxMzEwLCA5MTMxNywgOTEzMjQsIDkxMzMxLCA5MTMzOCwgCisgICAgOTEzNDUsIDkxMzUyLCA5MTM1OSwgOTEzNjYsIDkxMzczLCA5MTM4MCwgOTEzODcsIDkxMzk0LCA5MTQwMSwgOTE0MDgsIAorICAgIDkxNDE1LCA5MTQyMiwgMCwgOTE0MjksIDkxNDM2LCA5MTQ0MiwgOTE0NDgsIDkxNDU0LCA5MTQ2MSwgOTE0NjgsIDkxNDc2LCAKKyAgICA5MTQ4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE0OTMsIDkxNDk4LCA5MTUwMywgOTE1MDgsIDkxNTEzLCA5MTUxOCwgCisgICAgOTE1MjMsIDkxNTI4LCA5MTUzMywgOTE1MzgsIDkxNTQzLCA5MTU0OCwgOTE1NTMsIDkxNTU4LCA5MTU2MywgOTE1NjgsIAorICAgIDkxNTczLCA5MTU3OCwgOTE1ODMsIDkxNTg4LCA5MTU5MywgOTE1OTgsIDkxNjAzLCA5MTYwNywgOTE2MTIsIDkxNjE3LCAKKyAgICA5MTYyMywgOTE2MjcsIDAsIDAsIDAsIDkxNjMxLCA5MTYzNywgOTE2NDEsIDkxNjQ2LCA5MTY1MSwgOTE2NTYsIDkxNjYwLCAKKyAgICA5MTY2NSwgOTE2NjksIDkxNjc0LCA5MTY3OSwgOTE2ODMsIDkxNjg3LCA5MTY5MiwgOTE2OTYsIDkxNzAwLCA5MTcwNSwgCisgICAgOTE3MTAsIDkxNzE0LCA5MTcxOSwgOTE3MjQsIDkxNzI5LCA5MTczNCwgOTE3MzksIDkxNzQ0LCA5MTc0OSwgOTE3NTQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkxNzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDgwOSwgCi0gICAgOTA4MTMsIDkwODE4LCA5MDgyMywgMCwgOTA4MjksIDkwODM0LCAwLCAwLCAwLCAwLCAwLCA5MDgzOSwgOTA4NDUsIDkwODUyLCAKLSAgICA5MDg1NywgOTA4NjIsIDkwODY2LCA5MDg3MSwgOTA4NzYsIDAsIDkwODgxLCA5MDg4NiwgOTA4OTEsIDAsIDkwODk2LCAKLSAgICA5MDkwMSwgOTA5MDYsIDkwOTExLCA5MDkxNiwgOTA5MjEsIDkwOTI2LCA5MDkzMSwgOTA5MzYsIDkwOTQxLCA5MDk0NiwgCi0gICAgOTA5NTAsIDkwOTU0LCA5MDk1OSwgOTA5NjQsIDkwOTY5LCA5MDk3MywgOTA5NzcsIDkwOTgxLCA5MDk4NiwgOTA5OTEsIAotICAgIDkwOTk2LCA5MTAwMSwgOTEwMDYsIDkxMDExLCA5MTAxNSwgOTEwMjAsIDAsIDAsIDAsIDAsIDkxMDI1LCA5MTAzMSwgCi0gICAgOTEwMzYsIDAsIDAsIDAsIDAsIDkxMDQxLCA5MTA0NSwgOTEwNDksIDkxMDUzLCA5MTA1NywgOTEwNjEsIDkxMDY2LCAKLSAgICA5MTA3MSwgOTEwNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMDgzLCA5MTA4OSwgOTEwOTYsIDkxMTAyLCA5MTEwOSwgCi0gICAgOTExMTUsIDkxMTIxLCA5MTEyNywgOTExMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMTQwLCA5MTE0OCwgOTExNTYsIAotICAgIDkxMTY0LCA5MTE3MiwgOTExODAsIDkxMTg4LCA5MTE5NiwgOTEyMDQsIDkxMjEyLCA5MTIyMCwgOTEyMjgsIDkxMjM2LCAKLSAgICA5MTI0NCwgOTEyNTIsIDkxMjYwLCA5MTI2OCwgOTEyNzYsIDkxMjg0LCA5MTI5MiwgOTEzMDAsIDkxMzA4LCA5MTMxNiwgCi0gICAgOTEzMjQsIDkxMzMyLCA5MTM0MCwgOTEzNDgsIDkxMzU2LCA5MTM2NCwgOTEzNzIsIDkxMzc5LCA5MTM4NywgOTEzOTUsIAotICAgIDkxMzk5LCA5MTQwNCwgOTE0MDksIDkxNDE0LCA5MTQxOSwgOTE0MjQsIDkxNDI5LCA5MTQzNCwgOTE0MzgsIDkxNDQzLCAKLSAgICA5MTQ0NywgOTE0NTIsIDkxNDU2LCA5MTQ2MSwgOTE0NjUsIDkxNDcwLCA5MTQ3NSwgOTE0ODAsIDkxNDg1LCA5MTQ5MCwgCi0gICAgOTE0OTUsIDkxNTAwLCA5MTUwNSwgOTE1MTAsIDkxNTE1LCA5MTUyMCwgOTE1MjUsIDkxNTMwLCA5MTUzNSwgOTE1NDAsIAotICAgIDkxNTQ1LCA5MTU1MCwgOTE1NTUsIDkxNTYwLCA5MTU2NSwgOTE1NzAsIDkxNTc1LCA5MTU4MCwgOTE1ODUsIDkxNTkwLCAKLSAgICA5MTU5NSwgOTE2MDAsIDkxNjA1LCA5MTYxMCwgOTE2MTUsIDkxNjIwLCA5MTYyNSwgOTE2MzAsIDkxNjM1LCA5MTY0MCwgCi0gICAgOTE2NDUsIDkxNjUwLCA5MTY1NSwgMCwgMCwgMCwgOTE2NjAsIDkxNjY1LCA5MTY3NCwgOTE2ODIsIDkxNjkxLCA5MTcwMCwgCi0gICAgOTE3MTEsIDkxNzIyLCA5MTcyOSwgOTE3MzYsIDkxNzQzLCA5MTc1MCwgOTE3NTcsIDkxNzY0LCA5MTc3MSwgOTE3NzgsIAotICAgIDkxNzg1LCA5MTc5MiwgOTE3OTksIDkxODA2LCA5MTgxMywgOTE4MjAsIDkxODI3LCA5MTgzNCwgOTE4NDEsIDkxODQ4LCAKLSAgICA5MTg1NSwgOTE4NjIsIDkxODY5LCAwLCAwLCA5MTg3NiwgOTE4ODIsIDkxODg4LCA5MTg5NCwgOTE5MDAsIDkxOTA3LCAKLSAgICA5MTkxNCwgOTE5MjIsIDkxOTMwLCA5MTkzNywgOTE5NDQsIDkxOTUxLCA5MTk1OCwgOTE5NjUsIDkxOTcyLCA5MTk3OSwgCi0gICAgOTE5ODYsIDkxOTkzLCA5MjAwMCwgOTIwMDcsIDkyMDE0LCA5MjAyMSwgOTIwMjgsIDkyMDM1LCA5MjA0MiwgOTIwNDksIAotICAgIDkyMDU2LCAwLCAwLCAwLCAwLCAwLCA5MjA2MywgOTIwNjksIDkyMDc1LCA5MjA4MSwgOTIwODcsIDkyMDk0LCA5MjEwMSwgCi0gICAgOTIxMDksIDkyMTE3LCA5MjEyMywgOTIxMjksIDkyMTM2LCA5MjE0MiwgOTIxNDgsIDkyMTU0LCA5MjE2MCwgOTIxNjcsIAotICAgIDkyMTc0LCA5MjE4MSwgOTIxODgsIDkyMTk1LCA5MjIwMiwgOTIyMDksIDkyMjE2LCA5MjIyMywgOTIyMzAsIDkyMjM3LCAKLSAgICA5MjI0NCwgOTIyNTEsIDkyMjU4LCA5MjI2NSwgOTIyNzIsIDkyMjc5LCA5MjI4NiwgOTIyOTMsIDkyMzAwLCA5MjMwNywgCi0gICAgOTIzMTQsIDkyMzIxLCA5MjMyOCwgOTIzMzUsIDkyMzQyLCA5MjM0OSwgOTIzNTYsIDkyMzYzLCA5MjM3MCwgOTIzNzcsIAotICAgIDkyMzg0LCA5MjM5MSwgOTIzOTgsIDkyNDA1LCA5MjQxMiwgOTI0MTksIDkyNDI2LCA5MjQzMywgOTI0NDAsIDkyNDQ3LCAKLSAgICA5MjQ1NCwgOTI0NjEsIDkyNDY4LCA5MjQ3NSwgOTI0ODIsIDkyNDg5LCA5MjQ5NiwgOTI1MDMsIDkyNTEwLCA5MjUxNywgCi0gICAgOTI1MjQsIDkyNTMxLCA5MjUzOCwgOTI1NDUsIDkyNTUyLCA5MjU1OSwgOTI1NjYsIDkyNTczLCA5MjU4MCwgOTI1ODcsIAotICAgIDkyNTk0LCA5MjYwMSwgOTI2MDgsIDkyNjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTc2NCwgCisgICAgOTE3NzAsIDkxNzc2LCA5MTc4MiwgOTE3ODgsIDkxNzk0LCA5MTgwMSwgOTE4MDgsIDkxODE1LCA5MTgyMSwgOTE4MjcsIAorICAgIDkxODMzLCA5MTg0MCwgOTE4NDcsIDkxODU0LCA5MTg2MCwgOTE4NjcsIDkxODc0LCA5MTg4MSwgOTE4ODgsIDkxODk0LCAKKyAgICA5MTkwMSwgOTE5MDgsIDkxOTE0LCA5MTkyMSwgOTE5MjgsIDkxOTM1LCA5MTk0MiwgOTE5NDksIDkxOTU1LCA5MTk2MiwgCisgICAgOTE5NjksIDkxOTc2LCA5MTk4MiwgOTE5ODgsIDkxOTk0LCA5MjAwMCwgOTIwMDYsIDkyMDEzLCA5MjAyMCwgOTIwMjYsIAorICAgIDkyMDMyLCA5MjAzOCwgOTIwNDUsIDkyMDUxLCA5MjA1OCwgOTIwNjUsIDkyMDcyLCA5MjA3OCwgOTIwODYsIDkyMDkzLCAKKyAgICA5MjA5OSwgOTIxMDYsIDkyMTEzLCA5MjEyMCwgOTIxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMTMzLCA5MjE0MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIxNDksIDkyMTUzLCA5MjE1OCwgOTIxNjMsIDAsIAorICAgIDkyMTY5LCA5MjE3NCwgMCwgMCwgMCwgMCwgMCwgOTIxNzksIDkyMTg1LCA5MjE5MiwgOTIxOTcsIDkyMjAyLCA5MjIwNiwgCisgICAgOTIyMTEsIDkyMjE2LCAwLCA5MjIyMSwgOTIyMjYsIDkyMjMxLCAwLCA5MjIzNiwgOTIyNDEsIDkyMjQ2LCA5MjI1MSwgCisgICAgOTIyNTYsIDkyMjYxLCA5MjI2NiwgOTIyNzEsIDkyMjc2LCA5MjI4MSwgOTIyODYsIDkyMjkwLCA5MjI5NCwgOTIyOTksIAorICAgIDkyMzA0LCA5MjMwOSwgOTIzMTMsIDkyMzE3LCA5MjMyMSwgOTIzMjYsIDkyMzMxLCA5MjMzNiwgOTIzNDEsIDkyMzQ1LCAKKyAgICA5MjM1MCwgOTIzNTQsIDkyMzU5LCAwLCAwLCAwLCAwLCA5MjM2NCwgOTIzNzAsIDkyMzc1LCAwLCAwLCAwLCAwLCA5MjM4MCwgCisgICAgOTIzODQsIDkyMzg4LCA5MjM5MiwgOTIzOTYsIDkyNDAwLCA5MjQwNSwgOTI0MTAsIDkyNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5MjQyMiwgOTI0MjgsIDkyNDM1LCA5MjQ0MSwgOTI0NDgsIDkyNDU0LCA5MjQ2MCwgOTI0NjYsIDkyNDczLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5MjQ3OSwgOTI0ODcsIDkyNDk1LCA5MjUwMywgOTI1MTEsIDkyNTE5LCA5MjUyNywgOTI1MzUsIAorICAgIDkyNTQzLCA5MjU1MSwgOTI1NTksIDkyNTY3LCA5MjU3NSwgOTI1ODMsIDkyNTkxLCA5MjU5OSwgOTI2MDcsIDkyNjE1LCAKKyAgICA5MjYyMywgOTI2MzEsIDkyNjM5LCA5MjY0NywgOTI2NTUsIDkyNjYzLCA5MjY3MSwgOTI2NzksIDkyNjg3LCA5MjY5NSwgCisgICAgOTI3MDMsIDkyNzExLCA5MjcxOCwgOTI3MjYsIDkyNzM0LCA5MjczOCwgOTI3NDMsIDkyNzQ4LCA5Mjc1MywgOTI3NTgsIAorICAgIDkyNzYzLCA5Mjc2OCwgOTI3NzMsIDkyNzc3LCA5Mjc4MiwgOTI3ODYsIDkyNzkxLCA5Mjc5NSwgOTI4MDAsIDkyODA0LCAKKyAgICA5MjgwOSwgOTI4MTQsIDkyODE5LCA5MjgyNCwgOTI4MjksIDkyODM0LCA5MjgzOSwgOTI4NDQsIDkyODQ5LCA5Mjg1NCwgCisgICAgOTI4NTksIDkyODY0LCA5Mjg2OSwgOTI4NzQsIDkyODc5LCA5Mjg4NCwgOTI4ODksIDkyODk0LCA5Mjg5OSwgOTI5MDQsIAorICAgIDkyOTA5LCA5MjkxNCwgOTI5MTksIDkyOTI0LCA5MjkyOSwgOTI5MzQsIDkyOTM5LCA5Mjk0NCwgOTI5NDksIDkyOTU0LCAKKyAgICA5Mjk1OSwgOTI5NjQsIDkyOTY5LCA5Mjk3NCwgOTI5NzksIDkyOTg0LCA5Mjk4OSwgOTI5OTQsIDAsIDAsIDAsIDkyOTk5LCAKKyAgICA5MzAwNCwgOTMwMTMsIDkzMDIxLCA5MzAzMCwgOTMwMzksIDkzMDUwLCA5MzA2MSwgOTMwNjgsIDkzMDc1LCA5MzA4MiwgCisgICAgOTMwODksIDkzMDk2LCA5MzEwMywgOTMxMTAsIDkzMTE3LCA5MzEyNCwgOTMxMzEsIDkzMTM4LCA5MzE0NSwgOTMxNTIsIAorICAgIDkzMTU5LCA5MzE2NiwgOTMxNzMsIDkzMTgwLCA5MzE4NywgOTMxOTQsIDkzMjAxLCA5MzIwOCwgMCwgMCwgOTMyMTUsIAorICAgIDkzMjIxLCA5MzIyNywgOTMyMzMsIDkzMjM5LCA5MzI0NiwgOTMyNTMsIDkzMjYxLCA5MzI2OSwgOTMyNzYsIDkzMjgzLCAKKyAgICA5MzI5MCwgOTMyOTcsIDkzMzA0LCA5MzMxMSwgOTMzMTgsIDkzMzI1LCA5MzMzMiwgOTMzMzksIDkzMzQ2LCA5MzM1MywgCisgICAgOTMzNjAsIDkzMzY3LCA5MzM3NCwgOTMzODEsIDkzMzg4LCA5MzM5NSwgMCwgMCwgMCwgMCwgMCwgOTM0MDIsIDkzNDA4LCAKKyAgICA5MzQxNCwgOTM0MjAsIDkzNDI2LCA5MzQzMywgOTM0NDAsIDkzNDQ4LCA5MzQ1NiwgOTM0NjIsIDkzNDY4LCA5MzQ3NSwgCisgICAgOTM0ODEsIDkzNDg3LCA5MzQ5MywgOTM0OTksIDkzNTA2LCA5MzUxMywgOTM1MjAsIDkzNTI3LCA5MzUzNCwgOTM1NDEsIAorICAgIDkzNTQ4LCA5MzU1NSwgOTM1NjIsIDkzNTY5LCA5MzU3NiwgOTM1ODMsIDkzNTkwLCA5MzU5NywgOTM2MDQsIDkzNjExLCAKKyAgICA5MzYxOCwgOTM2MjUsIDkzNjMyLCA5MzYzOSwgOTM2NDYsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIDkzNjc0LCA5MzY4MSwgCisgICAgOTM2ODgsIDkzNjk1LCA5MzcwMiwgOTM3MDksIDkzNzE2LCA5MzcyMywgOTM3MzAsIDkzNzM3LCA5Mzc0NCwgOTM3NTEsIAorICAgIDkzNzU4LCA5Mzc2NSwgOTM3NzIsIDkzNzc5LCA5Mzc4NiwgOTM3OTMsIDkzODAwLCA5MzgwNywgOTM4MTQsIDkzODIxLCAKKyAgICA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg3MCwgOTM4NzcsIDkzODg0LCA5Mzg5MSwgCisgICAgOTM4OTgsIDkzOTA1LCA5MzkxMiwgOTM5MTksIDkzOTI2LCA5MzkzMywgOTM5NDAsIDkzOTQ3LCA5Mzk1NCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI2MjIsIDkyNjI2LCA5MjYzMCwgCi0gICAgOTI2MzQsIDkyNjM4LCA5MjY0MiwgOTI2NDYsIDkyNjUwLCA5MjY1NCwgOTI2NTgsIDkyNjYzLCA5MjY2OCwgOTI2NzMsIAotICAgIDkyNjc4LCA5MjY4MywgOTI2ODgsIDkyNjkzLCA5MjY5OCwgOTI3MDMsIDkyNzA5LCA5MjcxNSwgOTI3MjEsIDkyNzI4LCAKLSAgICA5MjczNSwgOTI3NDIsIDkyNzQ5LCA5Mjc1NiwgOTI3NjMsIDkyNzcwLCA5Mjc3NywgOTI3ODQsIDAsIDkyNzkxLCA5Mjc5NSwgCi0gICAgOTI3OTksIDkyODAzLCA5MjgwNywgOTI4MTEsIDkyODE0LCA5MjgxOCwgOTI4MjEsIDkyODI1LCA5MjgyOCwgOTI4MzIsIAotICAgIDkyODM2LCA5Mjg0MSwgOTI4NDUsIDkyODUwLCA5Mjg1MywgOTI4NTcsIDkyODYwLCA5Mjg2NCwgOTI4NjcsIDkyODcxLCAKLSAgICA5Mjg3NSwgOTI4NzksIDkyODgzLCA5Mjg4NywgOTI4OTEsIDkyODk1LCA5Mjg5OSwgOTI5MDMsIDkyOTA3LCA5MjkxMSwgCi0gICAgOTI5MTUsIDkyOTE5LCA5MjkyMywgOTI5MjcsIDkyOTMxLCA5MjkzNSwgOTI5MzksIDkyOTQyLCA5Mjk0NSwgOTI5NDksIAotICAgIDkyOTUzLCA5Mjk1NywgOTI5NjAsIDkyOTYzLCA5Mjk2NiwgOTI5NzAsIDkyOTc0LCA5Mjk3OCwgOTI5ODIsIDkyOTg2LCAKLSAgICA5Mjk4OSwgOTI5OTMsIDkyOTk5LCA5MzAwNSwgOTMwMTEsIDkzMDE2LCA5MzAyMywgOTMwMjcsIDkzMDMyLCA5MzAzNiwgCi0gICAgOTMwNDEsIDkzMDQ2LCA5MzA1MiwgOTMwNTcsIDkzMDYzLCA5MzA2NywgOTMwNzIsIDkzMDc2LCA5MzA4MSwgOTMwODQsIAotICAgIDkzMDg3LCA5MzA5MSwgOTMwOTYsIDkzMTAyLCA5MzEwNywgOTMxMTMsIDAsIDAsIDAsIDAsIDkzMTE4LCA5MzEyMSwgCi0gICAgOTMxMjQsIDkzMTI3LCA5MzEzMCwgOTMxMzMsIDkzMTM2LCA5MzEzOSwgOTMxNDIsIDkzMTQ1LCA5MzE0OSwgOTMxNTMsIAotICAgIDkzMTU3LCA5MzE2MSwgOTMxNjUsIDkzMTY5LCA5MzE3MywgOTMxNzcsIDkzMTgxLCA5MzE4NiwgOTMxOTEsIDkzMTk1LCAKLSAgICA5MzE5OCwgOTMyMDEsIDkzMjA0LCA5MzIwNywgOTMyMTAsIDkzMjEzLCA5MzIxNiwgOTMyMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzMjIyLCA5MzIyNiwgOTMyMzAsIDkzMjM0LCA5MzIzNywgOTMyNDEsIAotICAgIDkzMjQ0LCA5MzI0OCwgOTMyNTEsIDkzMjU1LCA5MzI1OCwgOTMyNjIsIDkzMjY1LCA5MzI2OSwgOTMyNzIsIDkzMjc2LCAKLSAgICA5MzI4MCwgOTMyODQsIDkzMjg4LCA5MzI5MiwgOTMyOTYsIDkzMzAwLCA5MzMwNCwgOTMzMDgsIDkzMzEyLCA5MzMxNiwgCi0gICAgOTMzMjAsIDkzMzI0LCA5MzMyOCwgOTMzMzIsIDkzMzM2LCA5MzM0MCwgOTMzNDQsIDkzMzQ4LCA5MzM1MiwgOTMzNTUsIAotICAgIDkzMzU4LCA5MzM2MiwgOTMzNjYsIDkzMzcwLCA5MzM3MywgOTMzNzYsIDkzMzc5LCA5MzM4MywgOTMzODcsIDkzMzkxLCAKLSAgICA5MzM5NSwgOTMzOTksIDkzNDAyLCA5MzQwNywgOTM0MTEsIDkzNDE2LCA5MzQyMCwgOTM0MjUsIDkzNDI5LCA5MzQzNCwgCi0gICAgOTM0MzgsIDkzNDQzLCA5MzQ0NywgOTM0NTEsIDkzNDU1LCA5MzQ1OSwgOTM0NjIsIDkzNDY2LCA5MzQ3MSwgOTM0NzQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkzOTYxLCA5Mzk2NSwgOTM5NjksIDkzOTczLCA5Mzk3NywgOTM5ODEsIDkzOTg1LCA5Mzk4OSwgCisgICAgOTM5OTMsIDkzOTk3LCA5NDAwMiwgOTQwMDcsIDk0MDEyLCA5NDAxNywgOTQwMjIsIDk0MDI3LCA5NDAzMiwgOTQwMzcsIAorICAgIDk0MDQyLCA5NDA0OCwgOTQwNTQsIDk0MDYwLCA5NDA2NywgOTQwNzQsIDk0MDgxLCA5NDA4OCwgOTQwOTUsIDk0MTAyLCAKKyAgICA5NDEwOSwgOTQxMTYsIDk0MTIzLCAwLCA5NDEzMCwgOTQxMzQsIDk0MTM4LCA5NDE0MiwgOTQxNDYsIDk0MTUwLCA5NDE1MywgCisgICAgOTQxNTcsIDk0MTYwLCA5NDE2NCwgOTQxNjcsIDk0MTcxLCA5NDE3NSwgOTQxODAsIDk0MTg0LCA5NDE4OSwgOTQxOTIsIAorICAgIDk0MTk2LCA5NDE5OSwgOTQyMDMsIDk0MjA2LCA5NDIxMCwgOTQyMTQsIDk0MjE4LCA5NDIyMiwgOTQyMjYsIDk0MjMwLCAKKyAgICA5NDIzNCwgOTQyMzgsIDk0MjQyLCA5NDI0NiwgOTQyNTAsIDk0MjU0LCA5NDI1OCwgOTQyNjIsIDk0MjY2LCA5NDI3MCwgCisgICAgOTQyNzQsIDk0Mjc4LCA5NDI4MSwgOTQyODQsIDk0Mjg4LCA5NDI5MiwgOTQyOTYsIDk0Mjk5LCA5NDMwMiwgOTQzMDUsIAorICAgIDk0MzA5LCA5NDMxMywgOTQzMTcsIDk0MzIxLCA5NDMyNCwgOTQzMjcsIDk0MzMxLCA5NDMzNywgOTQzNDMsIDk0MzQ5LCAKKyAgICA5NDM1NCwgOTQzNjEsIDk0MzY1LCA5NDM3MCwgOTQzNzQsIDk0Mzc5LCA5NDM4NCwgOTQzOTAsIDk0Mzk1LCA5NDQwMSwgCisgICAgOTQ0MDUsIDk0NDEwLCA5NDQxNCwgOTQ0MTksIDk0NDIyLCA5NDQyNSwgOTQ0MjksIDk0NDM0LCA5NDQ0MCwgOTQ0NDUsIAorICAgIDk0NDUxLCAwLCAwLCAwLCAwLCA5NDQ1NiwgOTQ0NTksIDk0NDYyLCA5NDQ2NSwgOTQ0NjgsIDk0NDcxLCA5NDQ3NCwgCisgICAgOTQ0NzcsIDk0NDgwLCA5NDQ4MywgOTQ0ODcsIDk0NDkxLCA5NDQ5NSwgOTQ0OTksIDk0NTAzLCA5NDUwNywgOTQ1MTEsIAorICAgIDk0NTE1LCA5NDUxOSwgOTQ1MjQsIDk0NTI5LCA5NDUzMywgOTQ1MzYsIDk0NTM5LCA5NDU0MiwgOTQ1NDUsIDk0NTQ4LCAKKyAgICA5NDU1MSwgOTQ1NTQsIDk0NTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NDU2MCwgOTQ1NjUsIDk0NTcwLCA5NDU3NSwgOTQ1NzksIDk0NTg0LCA5NDU4OCwgOTQ1OTMsIDk0NTk3LCA5NDYwMiwgCisgICAgOTQ2MDYsIDk0NjExLCA5NDYxNSwgOTQ2MjAsIDk0NjI0LCA5NDYyOSwgOTQ2MzQsIDk0NjM5LCA5NDY0NCwgOTQ2NDksIAorICAgIDk0NjU0LCA5NDY1OSwgOTQ2NjQsIDk0NjY5LCA5NDY3NCwgOTQ2NzksIDk0Njg0LCA5NDY4OSwgOTQ2OTQsIDk0Njk5LCAKKyAgICA5NDcwNCwgOTQ3MDksIDk0NzE0LCA5NDcxOSwgOTQ3MjQsIDk0NzI4LCA5NDczMiwgOTQ3MzcsIDk0NzQyLCA5NDc0NywgCisgICAgOTQ3NTEsIDk0NzU1LCA5NDc1OSwgOTQ3NjQsIDk0NzY5LCA5NDc3NCwgOTQ3NzksIDk0NzgzLCA5NDc4NywgOTQ3OTMsIAorICAgIDk0Nzk4LCA5NDgwNCwgOTQ4MDksIDk0ODE1LCA5NDgyMCwgOTQ4MjYsIDk0ODMxLCA5NDgzNywgOTQ4NDIsIDk0ODQ3LCAKKyAgICA5NDg1MiwgOTQ4NTcsIDk0ODYxLCA5NDg2NiwgOTQ4NzIsIDk0ODc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5NDg4MSwgOTQ4ODgsIDk0ODk1LCA5NDkwMiwgOTQ5MDksIDk0OTE2LCA5NDkyMywgOTQ5MzAsIAorICAgIDk0OTM3LCA5NDk0NCwgOTQ5NTEsIDk0OTU4LCA5NDk2NSwgOTQ5NzIsIDk0OTc5LCA5NDk4NiwgOTQ5OTMsIDk1MDAwLCAKKyAgICA5NTAwNywgOTUwMTQsIDk1MDIxLCA5NTAyOCwgOTUwMzUsIDk1MDQyLCA5NTA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTUwNTYsIDk1MDYzLCA5NTA2OSwgOTUwNzUsIDk1MDgxLCA5NTA4NywgOTUwOTMsIDk1MDk5LCA5NTEwNSwgOTUxMTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDk1MTE3LCA5NTEyMiwgOTUxMjcsIDk1MTMyLCA5NTEzNywgOTUxNDEsIDk1MTQ1LCA5NTE0OSwgCisgICAgOTUxNTQsIDk1MTU5LCA5NTE2NCwgOTUxNjksIDk1MTc0LCA5NTE3OSwgOTUxODQsIDk1MTg5LCA5NTE5NCwgOTUxOTksIAorICAgIDk1MjA0LCA5NTIwOSwgOTUyMTQsIDk1MjE5LCA5NTIyNCwgOTUyMjksIDk1MjM0LCA5NTIzOSwgOTUyNDQsIDk1MjQ5LCAKKyAgICA5NTI1NCwgOTUyNTksIDk1MjY0LCA5NTI2OSwgOTUyNzQsIDk1Mjc5LCA5NTI4NCwgOTUyODksIDk1Mjk0LCA5NTI5OSwgCisgICAgOTUzMDQsIDk1MzA5LCA5NTMxNCwgOTUzMTksIDk1MzI1LCA5NTMzMCwgOTUzMzYsIDk1MzQxLCA5NTM0NywgOTUzNTIsIAorICAgIDk1MzU4LCA5NTM2NCwgOTUzNjgsIDk1MzczLCA5NTM3NywgMCwgOTUzODEsIDk1Mzg2LCA5NTM5MCwgOTUzOTQsIDk1Mzk4LCAKKyAgICA5NTQwMiwgOTU0MDYsIDk1NDEwLCA5NTQxNCwgOTU0MTgsIDk1NDIyLCA5NTQyNywgOTU0MzEsIDk1NDM2LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzQ3OCwgOTM0ODEsIDkzNDg2LCA5MzQ5MiwgOTM1MDAsIAotICAgIDkzNTA1LCA5MzUxMSwgOTM1MTksIDkzNTI1LCA5MzUzMSwgOTM1MzUsIDkzNTM5LCA5MzU0NiwgOTM1NTUsIDkzNTYyLCAKLSAgICA5MzU3MSwgOTM1NzcsIDkzNTg2LCA5MzU5MywgOTM2MDAsIDkzNjA3LCA5MzYxNywgOTM2MjMsIDkzNjI3LCA5MzYzNCwgCi0gICAgOTM2NDMsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIDkzNjcxLCA5MzY3NSwgOTM2ODIsIDkzNjkyLCA5MzY5NiwgOTM3MDMsIAotICAgIDkzNzEwLCA5MzcxNywgOTM3MjMsIDkzNzMwLCA5MzczNywgOTM3NDQsIDkzNzUxLCA5Mzc1NSwgOTM3NTksIDkzNzYzLCAKLSAgICA5Mzc3MCwgOTM3NzQsIDkzNzgxLCA5Mzc4OCwgOTM4MDIsIDkzODExLCA5MzgxNSwgOTM4MTksIDkzODIzLCA5MzgzMCwgCi0gICAgOTM4MzQsIDkzODM4LCA5Mzg0MiwgOTM4NTAsIDkzODU4LCA5Mzg3NywgOTM4ODcsIDkzOTA3LCA5MzkxMSwgOTM5MTUsIAotICAgIDkzOTE5LCA5MzkyMywgOTM5MjcsIDkzOTMxLCA5MzkzNSwgOTM5NDIsIDkzOTQ2LCA5Mzk0OSwgOTM5NTMsIDkzOTU3LCAKLSAgICA5Mzk2MywgOTM5NzAsIDkzOTc5LCA5Mzk4MywgOTM5OTIsIDk0MDAxLCA5NDAwOSwgOTQwMTMsIDk0MDIwLCA5NDAyNCwgCi0gICAgOTQwMjgsIDk0MDMyLCA5NDAzNiwgOTQwNDcsIDk0MDU2LCA5NDA2NSwgOTQwNzQsIDk0MDgzLCA5NDA5NSwgOTQxMDQsIAotICAgIDk0MTEzLCA5NDEyMiwgOTQxMzAsIDk0MTM5LCA5NDE1MSwgOTQxNjAsIDk0MTY5LCA5NDE3OCwgOTQxOTAsIDk0MTk5LCAKLSAgICA5NDIwOCwgOTQyMjAsIDk0MjI5LCA5NDIzOCwgOTQyNTAsIDk0MjU5LCA5NDI2MywgOTQyNjcsIDk0MjcxLCA5NDI3NSwgCi0gICAgOTQyNzksIDk0MjgzLCA5NDI4NywgOTQyOTQsIDk0Mjk4LCA5NDMwMiwgOTQzMTMsIDk0MzE3LCA5NDMyMSwgOTQzMjgsIAotICAgIDk0MzM0LCA5NDM0MCwgOTQzNDQsIDk0MzUxLCA5NDM1NSwgOTQzNTksIDk0MzYzLCA5NDM2NywgOTQzNzEsIDk0Mzc1LCAKLSAgICA5NDM4MSwgOTQzODksIDk0MzkzLCA5NDM5NywgOTQ0MDAsIDk0NDA2LCA5NDQxNiwgOTQ0MjAsIDk0NDMyLCA5NDQzOSwgCi0gICAgOTQ0NDYsIDk0NDUzLCA5NDQ2MCwgOTQ0NjYsIDk0NDcwLCA5NDQ3NCwgOTQ0NzgsIDk0NDgyLCA5NDQ4OSwgOTQ0OTgsIAotICAgIDk0NTA1LCA5NDUxMywgOTQ1MjEsIDk0NTI3LCA5NDUzMSwgOTQ1MzUsIDk0NTM5LCA5NDU0MywgOTQ1NDksIDk0NTU4LCAKLSAgICA5NDU3MCwgOTQ1NzcsIDk0NTg0LCA5NDU5MywgOTQ2MDQsIDk0NjEwLCA5NDYxOSwgOTQ2MjgsIDk0NjM1LCA5NDY0NCwgCi0gICAgOTQ2NTEsIDk0NjU4LCA5NDY2OCwgOTQ2NzUsIDk0NjgyLCA5NDY4OSwgOTQ2OTYsIDk0NzAwLCA5NDcwNiwgOTQ3MTAsIAotICAgIDk0NzIxLCA5NDcyOSwgOTQ3MzgsIDk0NzUwLCA5NDc1NywgOTQ3NjQsIDk0Nzc0LCA5NDc4MSwgOTQ3OTAsIDk0Nzk3LCAKLSAgICA5NDgwNiwgOTQ4MTMsIDk0ODIwLCA5NDgzMCwgOTQ4MzcsIDk0ODQ0LCA5NDg1NCwgOTQ4NjEsIDk0ODczLCA5NDg4MiwgCi0gICAgOTQ4ODksIDk0ODk2LCA5NDkwMywgOTQ5MTIsIDk0OTIyLCA5NDkzNSwgOTQ5NDIsIDk0OTUyLCA5NDk2MiwgOTQ5NjksIAotICAgIDk0OTc4LCA5NDk5MSwgOTQ5OTgsIDk1MDA1LCA5NTAxMiwgOTUwMjIsIDk1MDMyLCA5NTAzOSwgOTUwNDksIDk1MDU2LCAKLSAgICA5NTA2MywgOTUwNzMsIDk1MDc5LCA5NTA4NiwgOTUwOTMsIDk1MTAwLCA5NTExMCwgOTUxMTcsIDk1MTI0LCA5NTEzMSwgCi0gICAgOTUxMzcsIDk1MTQ0LCA5NTE1NCwgOTUxNjEsIDk1MTY1LCA5NTE3MywgOTUxNzcsIDk1MTg5LCA5NTE5MywgOTUyMDcsIAotICAgIDk1MjExLCA5NTIxNSwgOTUyMTksIDk1MjIzLCA5NTIyOSwgOTUyMzYsIDk1MjQ0LCA5NTI0OCwgOTUyNTIsIDk1MjU2LCAKLSAgICA5NTI2MCwgOTUyNjcsIDk1MjcxLCA5NTI3NywgOTUyODMsIDk1MjkxLCA5NTI5NSwgOTUzMDIsIDk1MzEwLCA5NTMxNCwgCi0gICAgOTUzMTgsIDk1MzI0LCA5NTMyOCwgOTUzMzcsIDk1MzQ2LCA5NTM1MywgOTUzNjMsIDk1MzY5LCA5NTM3MywgOTUzNzcsIAotICAgIDk1Mzg1LCA5NTM5MiwgOTUzOTksIDk1NDA1LCA5NTQwOSwgOTU0MTcsIDk1NDIxLCA5NTQyOCwgOTU0NDAsIDk1NDQ3LCAKLSAgICA5NTQ1NywgOTU0NjMsIDk1NDY3LCA5NTQ3NiwgOTU0ODMsIDk1NDkyLCA5NTQ5NiwgOTU1MDAsIDk1NTA3LCA5NTUxMSwgCi0gICAgOTU1MTUsIDk1NTE5LCA5NTUyMywgOTU1MjYsIDk1NTMyLCA5NTUzOCwgOTU1NDIsIDk1NTQ2LCA5NTU1MywgOTU1NjAsIAotICAgIDk1NTY3LCA5NTU3NCwgOTU1ODEsIDk1NTg4LCA5NTU5NSwgOTU2MDIsIDk1NjA4LCA5NTYxMiwgOTU2MTYsIDk1NjIzLCAKLSAgICA5NTYzMCwgOTU2MzcsIDk1NjQ0LCA5NTY1MSwgOTU2NTUsIDk1NjU4LCA5NTY2MywgOTU2NjcsIDk1NjcxLCA5NTY4MCwgCi0gICAgOTU2ODksIDk1NjkzLCA5NTY5NywgOTU3MDMsIDk1NzA5LCA5NTcyNiwgOTU3MzIsIDk1NzM2LCA5NTc0NSwgOTU3NDksIAotICAgIDk1NzUzLCA5NTc2MCwgOTU3NjgsIDk1Nzc2LCA5NTc4MiwgOTU3ODYsIDk1NzkwLCA5NTc5NCwgOTU3OTgsIDk1ODAxLCAKLSAgICA5NTgwNywgOTU4MTQsIDk1ODI0LCA5NTgzMSwgOTU4MzgsIDk1ODQ1LCA5NTg1MSwgOTU4NTgsIDk1ODY1LCA5NTg3MiwgCi0gICAgOTU4NzksIDk1ODg2LCA5NTg5NSwgOTU5MDIsIDk1OTE0LCA5NTkyMSwgOTU5MjgsIDk1OTM4LCA5NTk0OSwgOTU5NTYsIAotICAgIDk1OTYzLCA5NTk3MCwgOTU5NzcsIDk1OTg0LCA5NTk5MSwgOTU5OTgsIDk2MDA1LCA5NjAxMiwgOTYwMTksIDk2MDI5LCAKLSAgICA5NjAzOSwgOTYwNDksIDk2MDU2LCA5NjA2NiwgOTYwNzMsIDk2MDgwLCA5NjA4NywgOTYwOTQsIDk2MTAxLCA5NjEwOCwgCi0gICAgOTYxMTUsIDk2MTIyLCA5NjEyOSwgOTYxMzYsIDk2MTQzLCA5NjE1MCwgOTYxNTcsIDk2MTYzLCA5NjE3MCwgOTYxNzcsIAotICAgIDk2MTg2LCA5NjE5MywgOTYyMDAsIDk2MjA0LCA5NjIxMiwgOTYyMTYsIDk2MjIwLCA5NjIyNCwgOTYyMjgsIDk2MjMyLCAKLSAgICA5NjIzOSwgOTYyNDMsIDk2MjUyLCA5NjI1NiwgOTYyNjMsIDk2MjcxLCA5NjI3NSwgOTYyNzksIDk2MjgzLCA5NjI5NiwgCi0gICAgOTYzMTIsIDk2MzE2LCA5NjMyMCwgOTYzMjcsIDk2MzMzLCA5NjM0MCwgOTYzNDQsIDk2MzQ4LCA5NjM1MiwgOTYzNTYsIAotICAgIDk2MzYwLCA5NjM2NywgOTYzNzEsIDk2Mzg5LCA5NjM5MywgOTYzOTcsIDk2NDA0LCA5NjQwOCwgOTY0MTIsIDk2NDE4LCAKLSAgICA5NjQyMiwgOTY0MjYsIDk2NDM0LCA5NjQzOCwgOTY0NDIsIDk2NDQ2LCA5NjQ1MCwgOTY0NTYsIDk2NDY3LCA5NjQ3NiwgCi0gICAgOTY0ODUsIDk2NDkyLCA5NjQ5OSwgOTY1MTAsIDk2NTE3LCA5NjUyNCwgOTY1MzEsIDk2NTM4LCA5NjU0NSwgOTY1NTIsIAotICAgIDk2NTU5LCA5NjU2OSwgOTY1NzUsIDk2NTgyLCA5NjU5MiwgOTY2MDEsIDk2NjA4LCA5NjYxNywgOTY2MjcsIDk2NjM0LCAKLSAgICA5NjY0MSwgOTY2NDgsIDk2NjU1LCA5NjY2NywgOTY2NzQsIDk2NjgxLCA5NjY4OCwgOTY2OTUsIDk2NzAyLCA5NjcxMiwgCi0gICAgOTY3MTksIDk2NzI2LCA5NjczNiwgOTY3NDksIDk2NzYxLCA5Njc2OCwgOTY3NzgsIDk2Nzg1LCA5Njc5MiwgOTY3OTksIAotICAgIDk2ODEzLCA5NjgxOSwgOTY4MjcsIDk2ODM3LCA5Njg0NywgOTY4NTQsIDk2ODYxLCA5Njg2NywgOTY4NzEsIDk2ODc4LCAKLSAgICA5Njg4OCwgOTY4OTQsIDk2OTA3LCA5NjkxMSwgOTY5MTUsIDk2OTIyLCA5NjkyNiwgOTY5MzMsIDk2OTQzLCA5Njk0NywgCi0gICAgOTY5NTEsIDk2OTU1LCA5Njk1OSwgOTY5NjMsIDk2OTcwLCA5Njk3NCwgOTY5ODEsIDk2OTg4LCA5Njk5NSwgOTcwMDQsIAotICAgIDk3MDEzLCA5NzAyMywgOTcwMzAsIDk3MDM3LCA5NzA0NCwgOTcwNTQsIDk3MDYxLCA5NzA3MSwgOTcwNzgsIDk3MDg4LCAKLSAgICA5NzA5NSwgOTcxMDIsIDk3MTEyLCA5NzEyMiwgOTcxMjksIDk3MTM1LCA5NzE0MywgOTcxNTEsIDk3MTU3LCA5NzE2MywgCi0gICAgOTcxNjcsIDk3MTcxLCA5NzE3OCwgOTcxODYsIDk3MTkyLCA5NzE5NiwgOTcyMDAsIDk3MjA0LCA5NzIxMSwgOTcyMjMsIAotICAgIDk3MjI2LCA5NzIzMywgOTcyMzksIDk3MjQzLCA5NzI0NywgOTcyNTEsIDk3MjU1LCA5NzI1OSwgOTcyNjMsIDk3MjY3LCAKLSAgICA5NzI3MSwgOTcyNzUsIDk3Mjc5LCA5NzI4NiwgOTcyOTAsIDk3Mjk2LCA5NzMwMCwgOTczMDQsIDk3MzA4LCA5NzMxNCwgCi0gICAgOTczMjEsIDk3MzI4LCA5NzMzNSwgOTczNDYsIDk3MzU0LCA5NzM1OCwgOTczNjQsIDk3MzczLCA5NzM4MCwgOTczODYsIAotICAgIDk3Mzg5LCA5NzM5MywgOTczOTcsIDk3NDAzLCA5NzQxMiwgOTc0MjAsIDk3NDI0LCA5NzQzMCwgOTc0MzQsIDk3NDM4LCAKLSAgICA5NzQ0MiwgOTc0NDgsIDk3NDU1LCA5NzQ2MSwgOTc0NjUsIDk3NDcxLCA5NzQ3NSwgOTc0NzksIDk3NDg4LCA5NzUwMCwgCi0gICAgOTc1MDQsIDk3NTExLCA5NzUxOCwgOTc1MjgsIDk3NTM1LCA5NzU0NywgOTc1NTQsIDk3NTYxLCA5NzU2OCwgOTc1NzksIAotICAgIDk3NTg5LCA5NzYwMiwgOTc2MTIsIDk3NjE5LCA5NzYyMywgOTc2MjcsIDk3NjMxLCA5NzYzNSwgOTc2NDQsIDk3NjUzLCAKLSAgICA5NzY2MiwgOTc2NzksIDk3Njg4LCA5NzY5NCwgOTc3MDEsIDk3NzA5LCA5NzcyMiwgOTc3MjYsIDk3NzM1LCA5Nzc0NCwgCi0gICAgOTc3NTMsIDk3NzYyLCA5Nzc3MywgOTc3ODIsIDk3NzkxLCA5NzgwMCwgOTc4MDksIDk3ODE4LCA5NzgyNywgOTc4MzcsIAotICAgIDk3ODQwLCA5Nzg0NCwgOTc4NDgsIDk3ODUyLCA5Nzg1NiwgOTc4NjAsIDk3ODY2LCA5Nzg3MywgOTc4ODAsIDk3ODg3LCAKLSAgICA5Nzg5MywgOTc4OTksIDk3OTA2LCA5NzkxMiwgOTc5MTksIDk3OTI3LCA5NzkzMSwgOTc5MzgsIDk3OTQ1LCA5Nzk1MiwgCi0gICAgOTc5NjAsIDk3OTYzLCA5Nzk2NywgOTc5NzEsIDk3OTc1LCA5Nzk3OSwgOTc5ODUsIDk3OTg5LCA5Nzk5NSwgOTgwMDIsIAotICAgIDk4MDA5LCA5ODAxNSwgOTgwMjIsIDk4MDI5LCA5ODAzNiwgOTgwNDMsIDk4MDUwLCA5ODA1NywgOTgwNjQsIDk4MDcxLCAKLSAgICA5ODA3OCwgOTgwODUsIDk4MDkyLCA5ODA5OSwgOTgxMDYsIDk4MTEzLCA5ODExOSwgOTgxMjMsIDk4MTMyLCA5ODEzNiwgCi0gICAgOTgxNDAsIDk4MTQ0LCA5ODE0OCwgOTgxNTQsIDk4MTYxLCA5ODE2OCwgOTgxNzUsIDk4MTgyLCA5ODE4OSwgOTgxOTUsIAotICAgIDk4MjAzLCA5ODIwNywgOTgyMTEsIDk4MjE1LCA5ODIxOSwgOTgyMjUsIDk4MjQyLCA5ODI1OSwgOTgyNjMsIDk4MjY3LCAKLSAgICA5ODI3MSwgOTgyNzUsIDk4Mjc5LCA5ODI4MywgOTgyODksIDk4Mjk2LCA5ODMwMCwgOTgzMDYsIDk4MzEzLCA5ODMyMCwgCi0gICAgOTgzMjcsIDk4MzM0LCA5ODM0MSwgOTgzNTAsIDk4MzU3LCA5ODM2NCwgOTgzNzEsIDk4Mzc4LCA5ODM4MiwgOTgzODYsIAotICAgIDk4MzkyLCA5ODQwNCwgOTg0MDgsIDk4NDEyLCA5ODQyMSwgOTg0MjUsIDk4NDI5LCA5ODQzMywgOTg0MzksIDk4NDQzLCAKLSAgICA5ODQ0NywgOTg0NTYsIDk4NDYwLCA5ODQ2NCwgOTg0NjgsIDk4NDc1LCA5ODQ3OSwgOTg0ODMsIDk4NDg3LCA5ODQ5MSwgCi0gICAgOTg0OTUsIDk4NDk5LCA5ODUwMywgOTg1MDcsIDk4NTEzLCA5ODUyMCwgOTg1MjcsIDk4NTMzLCA5ODUzNywgOTg1NTQsIAotICAgIDk4NTYwLCA5ODU2NCwgOTg1NzAsIDk4NTc2LCA5ODU4MiwgOTg1ODgsIDk4NTk0LCA5ODYwMCwgOTg2MDQsIDk4NjA4LCAKLSAgICA5ODYxMiwgOTg2MTgsIDk4NjIyLCA5ODYyOCwgOTg2MzIsIDk4NjM2LCA5ODY0MywgOTg2NTAsIDk4NjY3LCA5ODY3MSwgCi0gICAgOTg2NzUsIDk4Njc5LCA5ODY4MywgOTg2ODcsIDk4Njk5LCA5ODcwMiwgOTg3MDcsIDk4NzEyLCA5ODcyNywgOTg3MzcsIAotICAgIDk4NzQ5LCA5ODc1MywgOTg3NTcsIDk4NzYxLCA5ODc2NywgOTg3NzQsIDk4NzgxLCA5ODc5MSwgOTg4MDMsIDk4ODA5LCAKLSAgICA5ODgxNSwgOTg4MjQsIDk4ODI4LCA5ODgzMiwgOTg4MzksIDk4ODQ5LCA5ODg1NiwgOTg4NjIsIDk4ODY2LCA5ODg3MCwgCi0gICAgOTg4NzcsIDk4ODgzLCA5ODg4NywgOTg4OTMsIDk4ODk3LCA5ODkwNSwgOTg5MTEsIDk4OTE1LCA5ODkyMywgOTg5MzEsIAotICAgIDk4OTM4LCA5ODk0NCwgOTg5NTEsIDk4OTU4LCA5ODk2OCwgOTg5NzgsIDk4OTgyLCA5ODk4NiwgOTg5OTAsIDk4OTk0LCAKLSAgICA5OTAwMCwgOTkwMDcsIDk5MDEzLCA5OTAyMCwgOTkwMjcsIDk5MDM0LCA5OTA0MywgOTkwNTAsIDk5MDU3LCA5OTA2MywgCi0gICAgOTkwNzAsIDk5MDc3LCA5OTA4NCwgOTkwOTEsIDk5MDk4LCA5OTEwNSwgOTkxMTEsIDk5MTE4LCA5OTEyNSwgOTkxMzIsIAotICAgIDk5MTQxLCA5OTE0OCwgOTkxNTUsIDk5MTU5LCA5OTE2NSwgOTkxNjksIDk5MTc1LCA5OTE4MiwgOTkxODksIDk5MTk2LCAKLSAgICA5OTIwMCwgOTkyMDQsIDk5MjA4LCA5OTIxMiwgOTkyMTYsIDk5MjIzLCA5OTIyNywgOTkyMzEsIDk5MjM3LCA5OTI0NSwgCi0gICAgOTkyNDksIDk5MjUzLCA5OTI1NywgOTkyNjEsIDk5MjY4LCA5OTI3MiwgOTkyNzYsIDk5Mjg0LCA5OTI4OCwgOTkyOTIsIAotICAgIDk5Mjk2LCA5OTMwMCwgOTkzMDYsIDk5MzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5OTMxNCwgOTkzMjAsIDk5MzI2LCA5OTMzMywgOTkzNDAsIDk5MzQ3LCA5OTM1NCwgOTkzNjEsIDk5MzY4LCAKLSAgICA5OTM3NCwgOTkzODEsIDk5Mzg4LCA5OTM5NSwgOTk0MDIsIDk5NDA5LCA5OTQxNiwgOTk0MjIsIDk5NDI4LCA5OTQzNCwgCi0gICAgOTk0NDAsIDk5NDQ2LCA5OTQ1MiwgOTk0NTgsIDk5NDY0LCA5OTQ3MCwgOTk0NzcsIDk5NDg0LCA5OTQ5MSwgOTk0OTgsIAotICAgIDk5NTA1LCA5OTUxMiwgOTk1MTgsIDk5NTI0LCA5OTUzMCwgOTk1MzcsIDk5NTQ0LCA5OTU1MCwgOTk1NTYsIDk5NTY1LCAKLSAgICA5OTU3MiwgOTk1NzksIDk5NTg2LCA5OTU5MywgOTk2MDAsIDk5NjA3LCA5OTYxMywgOTk2MTksIDk5NjI1LCA5OTYzNCwgCi0gICAgOTk2NDEsIDk5NjQ4LCA5OTY1OSwgOTk2NzAsIDk5Njc2LCA5OTY4MiwgOTk2ODgsIDk5Njk3LCA5OTcwNCwgOTk3MTEsIAotICAgIDk5NzIxLCA5OTczMSwgOTk3NDIsIDk5NzUzLCA5OTc2NSwgOTk3NzgsIDk5Nzg5LCA5OTgwMCwgOTk4MTIsIDk5ODI1LCAKLSAgICA5OTgzNiwgOTk4NDcsIDk5ODU4LCA5OTg2OSwgOTk4ODAsIDk5ODkyLCA5OTkwMCwgOTk5MDgsIDk5OTE3LCA5OTkyNiwgCi0gICAgOTk5MzUsIDk5OTQxLCA5OTk0NywgOTk5NTMsIDk5OTYwLCA5OTk3MCwgOTk5NzcsIDk5OTg3LCA5OTk5MiwgOTk5OTcsIAotICAgIDEwMDAwMywgMTAwMDA5LCAxMDAwMTcsIDEwMDAyNSwgMTAwMDM0LCAxMDAwNDUsIDEwMDA1NiwgMTAwMDY0LCAxMDAwNzIsIAotICAgIDEwMDA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMDkwLCAxMDAxMDEsIDEwMDEwOCwgCi0gICAgMTAwMTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDAxMjQsIDEwMDEyOCwgMTAwMTMyLCAKLSAgICAxMDAxMzYsIDEwMDE0MCwgMTAwMTQ0LCAxMDAxNDgsIDEwMDE1MiwgMTAwMTU2LCAxMDAxNjAsIDEwMDE2NCwgMTAwMTY4LCAKLSAgICAxMDAxNzIsIDEwMDE3NiwgMTAwMTgwLCAxMDAxODQsIDEwMDE4OCwgMTAwMTkyLCAxMDAxOTYsIDEwMDIwMCwgMTAwMjA0LCAKLSAgICAxMDAyMDgsIDEwMDIxMiwgMTAwMjE2LCAxMDAyMjAsIDEwMDIyNCwgMTAwMjI4LCAxMDAyMzIsIDEwMDIzNiwgMTAwMjQwLCAKLSAgICAxMDAyNDQsIDEwMDI0OCwgMTAwMjUyLCAxMDAyNTYsIDEwMDI2MCwgMTAwMjY0LCAxMDAyNjgsIDEwMDI3MiwgMTAwMjc2LCAKLSAgICAxMDAyODAsIDEwMDI4NCwgMTAwMjg4LCAxMDAyOTIsIDEwMDI5NiwgMTAwMzAwLCAxMDAzMDQsIDEwMDMwOCwgMTAwMzEyLCAKLSAgICAxMDAzMTYsIDEwMDMyMCwgMTAwMzI0LCAxMDAzMjgsIDEwMDMzMiwgMTAwMzM2LCAxMDAzNDAsIDEwMDM0NCwgMTAwMzQ4LCAKLSAgICAxMDAzNTIsIDEwMDM1NiwgMTAwMzYwLCAxMDAzNjQsIDEwMDM2OCwgMTAwMzcyLCAxMDAzNzYsIDEwMDM4MCwgMTAwMzg0LCAKLSAgICAxMDAzODgsIDEwMDM5MiwgMTAwMzk2LCAxMDA0MDAsIDEwMDQwNCwgMTAwNDA4LCAxMDA0MTIsIDEwMDQxNiwgMTAwNDIwLCAKLSAgICAxMDA0MjQsIDEwMDQyOCwgMTAwNDMyLCAxMDA0MzYsIDEwMDQ0MCwgMTAwNDQ0LCAxMDA0NDgsIDEwMDQ1MiwgMTAwNDU2LCAKLSAgICAxMDA0NjAsIDEwMDQ2NCwgMTAwNDY4LCAxMDA0NzIsIDEwMDQ3NiwgMTAwNDgwLCAxMDA0ODQsIDEwMDQ4OCwgMTAwNDkyLCAKLSAgICAxMDA0OTYsIDEwMDUwMCwgMTAwNTA0LCAxMDA1MDgsIDEwMDUxMiwgMTAwNTE2LCAxMDA1MjAsIDEwMDUyNCwgMTAwNTI4LCAKLSAgICAxMDA1MzIsIDEwMDUzNiwgMTAwNTQwLCAxMDA1NDQsIDEwMDU0OCwgMTAwNTUyLCAxMDA1NTYsIDEwMDU2MCwgMTAwNTY0LCAKLSAgICAxMDA1NjgsIDEwMDU3MiwgMTAwNTc2LCAxMDA1ODAsIDEwMDU4NCwgMTAwNTg4LCAxMDA1OTIsIDEwMDU5NiwgMTAwNjAwLCAKLSAgICAxMDA2MDQsIDEwMDYwOCwgMTAwNjEyLCAxMDA2MTYsIDEwMDYyMCwgMTAwNjI0LCAxMDA2MjgsIDEwMDYzMiwgMTAwNjM2LCAKLSAgICAxMDA2NDAsIDEwMDY0NCwgMTAwNjQ4LCAxMDA2NTIsIDEwMDY1NiwgMTAwNjYwLCAxMDA2NjQsIDEwMDY2OCwgMTAwNjcyLCAKLSAgICAxMDA2NzYsIDEwMDY4MCwgMTAwNjg0LCAxMDA2ODgsIDEwMDY5MiwgMTAwNjk2LCAxMDA3MDAsIDEwMDcwNCwgMTAwNzA4LCAKLSAgICAxMDA3MTIsIDEwMDcxNiwgMTAwNzIwLCAxMDA3MjQsIDEwMDcyOCwgMTAwNzMyLCAxMDA3MzYsIDEwMDc0MCwgMTAwNzQ0LCAKLSAgICAxMDA3NDgsIDEwMDc1MiwgMTAwNzU2LCAxMDA3NjAsIDEwMDc2NCwgMTAwNzY4LCAxMDA3NzIsIDEwMDc3NiwgMTAwNzgwLCAKLSAgICAxMDA3ODQsIDEwMDc4OCwgMTAwNzkyLCAxMDA3OTYsIDEwMDgwMCwgMTAwODA0LCAxMDA4MDgsIDEwMDgxMiwgMTAwODE2LCAKLSAgICAxMDA4MjAsIDEwMDgyNCwgMTAwODI4LCAxMDA4MzIsIDEwMDgzNiwgMTAwODQwLCAxMDA4NDQsIDEwMDg0OCwgMTAwODUyLCAKLSAgICAxMDA4NTYsIDEwMDg2MCwgMTAwODY0LCAxMDA4NjgsIDEwMDg3MiwgMTAwODc2LCAxMDA4ODAsIDEwMDg4NCwgMTAwODg4LCAKLSAgICAxMDA4OTIsIDEwMDg5NiwgMTAwOTAwLCAxMDA5MDQsIDEwMDkwOCwgMTAwOTEyLCAxMDA5MTYsIDEwMDkyMCwgMTAwOTI0LCAKLSAgICAxMDA5MjgsIDEwMDkzMiwgMTAwOTM2LCAxMDA5NDAsIDEwMDk0NCwgMTAwOTQ4LCAxMDA5NTIsIDEwMDk1NiwgMTAwOTYwLCAKLSAgICAxMDA5NjQsIDEwMDk2OCwgMTAwOTcyLCAxMDA5NzYsIDEwMDk4MCwgMTAwOTg0LCAxMDA5ODgsIDEwMDk5MiwgMTAwOTk2LCAKLSAgICAxMDEwMDAsIDEwMTAwNCwgMTAxMDA4LCAxMDEwMTIsIDEwMTAxNiwgMTAxMDIwLCAxMDEwMjQsIDEwMTAyOCwgMTAxMDMyLCAKLSAgICAxMDEwMzYsIDEwMTA0MCwgMTAxMDQ0LCAxMDEwNDgsIDEwMTA1MiwgMTAxMDU2LCAxMDEwNjAsIDEwMTA2NCwgMTAxMDY4LCAKLSAgICAxMDEwNzIsIDEwMTA3NiwgMTAxMDgwLCAxMDEwODQsIDEwMTA4OCwgMTAxMDkyLCAxMDEwOTYsIDEwMTEwMCwgMTAxMTA0LCAKLSAgICAxMDExMDgsIDEwMTExMiwgMTAxMTE2LCAxMDExMjAsIDEwMTEyNCwgMTAxMTI4LCAxMDExMzIsIDEwMTEzNiwgMTAxMTQwLCAKLSAgICAxMDExNDQsIDEwMTE0OCwgMTAxMTUyLCAxMDExNTYsIDEwMTE2MCwgMTAxMTY0LCAxMDExNjgsIDEwMTE3MiwgMTAxMTc2LCAKLSAgICAxMDExODAsIDEwMTE4NCwgMTAxMTg4LCAxMDExOTIsIDEwMTE5NiwgMTAxMjAwLCAxMDEyMDQsIDEwMTIwOCwgMTAxMjEyLCAKLSAgICAxMDEyMTYsIDEwMTIyMCwgMTAxMjI0LCAxMDEyMjgsIDEwMTIzMiwgMTAxMjM2LCAxMDEyNDAsIDEwMTI0NCwgMTAxMjQ4LCAKLSAgICAxMDEyNTIsIDEwMTI1NiwgMTAxMjYwLCAxMDEyNjQsIDEwMTI2OCwgMTAxMjcyLCAxMDEyNzYsIDEwMTI4MCwgMTAxMjg0LCAKLSAgICAxMDEyODgsIDEwMTI5MiwgMTAxMjk2LCAxMDEzMDAsIDEwMTMwNCwgMTAxMzA4LCAxMDEzMTIsIDEwMTMxNiwgMTAxMzIwLCAKLSAgICAxMDEzMjQsIDEwMTMyOCwgMTAxMzMyLCAxMDEzMzYsIDEwMTM0MCwgMTAxMzQ0LCAxMDEzNDgsIDEwMTM1MiwgMTAxMzU2LCAKLSAgICAxMDEzNjAsIDEwMTM2NCwgMTAxMzY4LCAxMDEzNzIsIDEwMTM3NiwgMTAxMzgwLCAxMDEzODQsIDEwMTM4OCwgMTAxMzkyLCAKLSAgICAxMDEzOTYsIDEwMTQwMCwgMTAxNDA0LCAxMDE0MDgsIDEwMTQxMiwgMTAxNDE2LCAxMDE0MjAsIDEwMTQyNCwgMTAxNDI4LCAKLSAgICAxMDE0MzIsIDEwMTQzNiwgMTAxNDQwLCAxMDE0NDQsIDEwMTQ0OCwgMTAxNDUyLCAxMDE0NTYsIDEwMTQ2MCwgMTAxNDY0LCAKLSAgICAxMDE0NjgsIDEwMTQ3MiwgMTAxNDc2LCAxMDE0ODAsIDEwMTQ4NCwgMTAxNDg4LCAxMDE0OTIsIDEwMTQ5NiwgMTAxNTAwLCAKLSAgICAxMDE1MDQsIDEwMTUwOCwgMTAxNTEyLCAxMDE1MTYsIDEwMTUyMCwgMTAxNTI0LCAxMDE1MjgsIDEwMTUzMiwgMTAxNTM2LCAKLSAgICAxMDE1NDAsIDEwMTU0NCwgMTAxNTQ4LCAxMDE1NTIsIDEwMTU1NiwgMTAxNTYwLCAxMDE1NjQsIDEwMTU2OCwgMTAxNTcyLCAKLSAgICAxMDE1NzYsIDEwMTU4MCwgMTAxNTg0LCAxMDE1ODgsIDEwMTU5MiwgMTAxNTk2LCAxMDE2MDAsIDEwMTYwNCwgMTAxNjA4LCAKLSAgICAxMDE2MTIsIDEwMTYxNiwgMTAxNjIwLCAxMDE2MjQsIDEwMTYyOCwgMTAxNjMyLCAxMDE2MzYsIDEwMTY0MCwgMTAxNjQ0LCAKLSAgICAxMDE2NDgsIDEwMTY1MiwgMTAxNjU2LCAxMDE2NjAsIDEwMTY2NCwgMTAxNjY4LCAxMDE2NzIsIDEwMTY3NiwgMTAxNjgwLCAKLSAgICAxMDE2ODQsIDEwMTY4OCwgMTAxNjkyLCAxMDE2OTYsIDEwMTcwMCwgMTAxNzA0LCAxMDE3MDgsIDEwMTcxMiwgMTAxNzE2LCAKLSAgICAxMDE3MjAsIDEwMTcyNCwgMTAxNzI4LCAxMDE3MzIsIDEwMTczNiwgMTAxNzQwLCAxMDE3NDQsIDEwMTc0OCwgMTAxNzUyLCAKLSAgICAxMDE3NTYsIDEwMTc2MCwgMTAxNzY0LCAxMDE3NjgsIDEwMTc3MiwgMTAxNzc2LCAxMDE3ODAsIDEwMTc4NCwgMTAxNzg4LCAKLSAgICAxMDE3OTIsIDEwMTc5NiwgMTAxODAwLCAxMDE4MDQsIDEwMTgwOCwgMTAxODEyLCAxMDE4MTYsIDEwMTgyMCwgMTAxODI0LCAKLSAgICAxMDE4MjgsIDEwMTgzMiwgMTAxODM2LCAxMDE4NDAsIDEwMTg0NCwgMTAxODQ4LCAxMDE4NTIsIDEwMTg1NiwgMTAxODYwLCAKLSAgICAxMDE4NjQsIDEwMTg2OCwgMTAxODcyLCAxMDE4NzYsIDEwMTg4MCwgMTAxODg0LCAxMDE4ODgsIDEwMTg5MiwgMTAxODk2LCAKLSAgICAxMDE5MDAsIDEwMTkwNCwgMTAxOTA4LCAxMDE5MTIsIDEwMTkxNiwgMTAxOTIwLCAxMDE5MjQsIDEwMTkyOCwgMTAxOTMyLCAKLSAgICAxMDE5MzYsIDEwMTk0MCwgMTAxOTQ0LCAxMDE5NDgsIDEwMTk1MiwgMTAxOTU2LCAxMDE5NjAsIDEwMTk2NCwgMTAxOTY4LCAKLSAgICAxMDE5NzIsIDEwMTk3NiwgMTAxOTgwLCAxMDE5ODQsIDEwMTk4OCwgMTAxOTkyLCAxMDE5OTYsIDEwMjAwMCwgMTAyMDA0LCAKLSAgICAxMDIwMDgsIDEwMjAxMiwgMTAyMDE2LCAxMDIwMjAsIDEwMjAyNCwgMTAyMDI4LCAxMDIwMzIsIDEwMjAzNiwgMTAyMDQwLCAKLSAgICAxMDIwNDQsIDEwMjA0OCwgMTAyMDUyLCAxMDIwNTYsIDEwMjA2MCwgMTAyMDY0LCAxMDIwNjgsIDEwMjA3MiwgMTAyMDc2LCAKLSAgICAxMDIwODAsIDEwMjA4NCwgMTAyMDg4LCAxMDIwOTIsIDEwMjA5NiwgMTAyMTAwLCAxMDIxMDQsIDEwMjEwOCwgMTAyMTEyLCAKLSAgICAxMDIxMTYsIDEwMjEyMCwgMTAyMTI0LCAxMDIxMjgsIDEwMjEzMiwgMTAyMTM2LCAxMDIxNDAsIDEwMjE0NCwgMTAyMTQ4LCAKLSAgICAxMDIxNTIsIDEwMjE1NiwgMTAyMTYwLCAxMDIxNjQsIDEwMjE2OCwgMTAyMTcyLCAxMDIxNzYsIDEwMjE4MCwgMTAyMTg0LCAKLSAgICAxMDIxODgsIDEwMjE5MiwgMTAyMTk2LCAxMDIyMDAsIDEwMjIwNCwgMTAyMjA4LCAxMDIyMTIsIDEwMjIxNiwgMTAyMjIwLCAKLSAgICAxMDIyMjQsIDEwMjIyOCwgMTAyMjMyLCAxMDIyMzYsIDEwMjI0MCwgMTAyMjQ0LCAxMDIyNDgsIDEwMjI1MiwgMTAyMjU2LCAKLSAgICAxMDIyNjAsIDEwMjI2NCwgMTAyMjY4LCAxMDIyNzIsIDEwMjI3NiwgMTAyMjgwLCAxMDIyODQsIDEwMjI4OCwgMTAyMjkyLCAKLSAgICAxMDIyOTYsIDEwMjMwMCwgMTAyMzA0LCAxMDIzMDgsIDEwMjMxMiwgMTAyMzE2LCAxMDIzMjAsIDEwMjMyNCwgMTAyMzI4LCAKLSAgICAxMDIzMzIsIDEwMjMzNiwgMTAyMzQwLCAxMDIzNDQsIDEwMjM0OCwgMTAyMzUyLCAxMDIzNTYsIDEwMjM2MCwgMTAyMzY0LCAKLSAgICAxMDIzNjgsIDEwMjM3MiwgMTAyMzc2LCAxMDIzODAsIDEwMjM4NCwgMTAyMzg4LCAxMDIzOTIsIDEwMjM5NiwgMTAyNDAwLCAKLSAgICAxMDI0MDQsIDEwMjQwOCwgMTAyNDEyLCAxMDI0MTYsIDEwMjQyMCwgMTAyNDI0LCAxMDI0MjgsIDEwMjQzMiwgMTAyNDM2LCAKLSAgICAxMDI0NDAsIDEwMjQ0NCwgMTAyNDQ4LCAxMDI0NTIsIDEwMjQ1NiwgMTAyNDYwLCAxMDI0NjQsIDEwMjQ2OCwgMTAyNDcyLCAKLSAgICAxMDI0NzYsIDEwMjQ4MCwgMTAyNDg0LCAxMDI0ODgsIDEwMjQ5MiwgMTAyNDk2LCAxMDI1MDAsIDEwMjUwNCwgMTAyNTA4LCAKLSAgICAxMDI1MTIsIDEwMjUxNiwgMTAyNTIwLCAxMDI1MjQsIDEwMjUyOCwgMTAyNTMyLCAxMDI1MzYsIDEwMjU0MCwgMTAyNTQ0LCAKLSAgICAxMDI1NDgsIDEwMjU1MiwgMTAyNTU2LCAxMDI1NjAsIDEwMjU2NCwgMTAyNTY4LCAxMDI1NzIsIDEwMjU3NiwgMTAyNTgwLCAKLSAgICAxMDI1ODQsIDEwMjU4OCwgMTAyNTkyLCAxMDI1OTYsIDEwMjYwMCwgMTAyNjA0LCAxMDI2MDgsIDEwMjYxMiwgMTAyNjE2LCAKLSAgICAxMDI2MjAsIDEwMjYyNCwgMTAyNjI4LCAxMDI2MzIsIDEwMjYzNiwgMTAyNjQwLCAxMDI2NDQsIDEwMjY0OCwgMTAyNjUyLCAKLSAgICAxMDI2NTYsIDEwMjY2MCwgMTAyNjY0LCAxMDI2NjgsIDEwMjY3MiwgMTAyNjc2LCAxMDI2ODAsIDEwMjY4NCwgMTAyNjg4LCAKLSAgICAxMDI2OTIsIDEwMjY5NiwgMTAyNzAwLCAxMDI3MDQsIDEwMjcwOCwgMTAyNzEyLCAxMDI3MTYsIDEwMjcyMCwgMTAyNzI0LCAKLSAgICAxMDI3MjgsIDEwMjczMiwgMTAyNzM2LCAxMDI3NDAsIDEwMjc0NCwgMTAyNzQ4LCAxMDI3NTIsIDEwMjc1NiwgMTAyNzYwLCAKLSAgICAxMDI3NjQsIDEwMjc2OCwgMTAyNzcyLCAxMDI3NzYsIDEwMjc4MCwgMTAyNzg0LCAxMDI3ODgsIDEwMjc5MiwgMTAyNzk2LCAKLSAgICAxMDI4MDAsIDEwMjgwNCwgMTAyODA4LCAxMDI4MTIsIDEwMjgxNiwgMTAyODIwLCAxMDI4MjQsIDEwMjgyOCwgMTAyODMyLCAKLSAgICAxMDI4MzYsIDEwMjg0MCwgMTAyODQ0LCAxMDI4NDgsIDEwMjg1MiwgMTAyODU2LCAxMDI4NjAsIDEwMjg2NCwgMTAyODY4LCAKLSAgICAxMDI4NzIsIDEwMjg3NiwgMTAyODgwLCAxMDI4ODQsIDEwMjg4OCwgMTAyODkyLCAxMDI4OTYsIDEwMjkwMCwgMTAyOTA0LCAKLSAgICAxMDI5MDgsIDEwMjkxMiwgMTAyOTE2LCAxMDI5MjAsIDEwMjkyNCwgMTAyOTI4LCAxMDI5MzIsIDEwMjkzNiwgMTAyOTQwLCAKLSAgICAxMDI5NDQsIDEwMjk0OCwgMTAyOTUyLCAxMDI5NTYsIDEwMjk2MCwgMTAyOTY0LCAxMDI5NjgsIDEwMjk3MiwgMTAyOTc2LCAKLSAgICAxMDI5ODAsIDEwMjk4NCwgMTAyOTg4LCAxMDI5OTIsIDEwMjk5NiwgMTAzMDAwLCAxMDMwMDQsIDEwMzAwOCwgMTAzMDEyLCAKLSAgICAxMDMwMTYsIDEwMzAyMCwgMTAzMDI0LCAxMDMwMjgsIDEwMzAzMiwgMTAzMDM2LCAxMDMwNDAsIDEwMzA0NCwgMTAzMDQ4LCAKLSAgICAxMDMwNTIsIDEwMzA1NiwgMTAzMDYwLCAxMDMwNjQsIDEwMzA2OCwgMTAzMDcyLCAxMDMwNzYsIDEwMzA4MCwgMTAzMDg0LCAKLSAgICAxMDMwODgsIDEwMzA5MiwgMTAzMDk2LCAxMDMxMDAsIDEwMzEwNCwgMTAzMTA4LCAxMDMxMTIsIDEwMzExNiwgMTAzMTIwLCAKLSAgICAxMDMxMjQsIDEwMzEyOCwgMTAzMTMyLCAxMDMxMzYsIDEwMzE0MCwgMTAzMTQ0LCAxMDMxNDgsIDEwMzE1MiwgMTAzMTU2LCAKLSAgICAxMDMxNjAsIDEwMzE2NCwgMTAzMTY4LCAxMDMxNzIsIDEwMzE3NiwgMTAzMTgwLCAxMDMxODQsIDEwMzE4OCwgMTAzMTkyLCAKLSAgICAxMDMxOTYsIDEwMzIwMCwgMTAzMjA0LCAxMDMyMDgsIDEwMzIxMiwgMTAzMjE2LCAxMDMyMjAsIDEwMzIyNCwgMTAzMjI4LCAKLSAgICAxMDMyMzIsIDEwMzIzNiwgMTAzMjQwLCAxMDMyNDQsIDEwMzI0OCwgMTAzMjUyLCAxMDMyNTYsIDEwMzI2MCwgMTAzMjY0LCAKLSAgICAxMDMyNjgsIDEwMzI3MiwgMTAzMjc2LCAxMDMyODAsIDEwMzI4NCwgMTAzMjg4LCAxMDMyOTIsIDEwMzI5NiwgMTAzMzAwLCAKLSAgICAxMDMzMDQsIDEwMzMwOCwgMTAzMzEyLCAxMDMzMTYsIDEwMzMyMCwgMTAzMzI0LCAxMDMzMjgsIDEwMzMzMiwgMTAzMzM2LCAKLSAgICAxMDMzNDAsIDEwMzM0NCwgMTAzMzQ4LCAxMDMzNTIsIDEwMzM1NiwgMTAzMzYwLCAxMDMzNjQsIDEwMzM2OCwgMTAzMzcyLCAKLSAgICAxMDMzNzYsIDEwMzM4MCwgMTAzMzg0LCAxMDMzODgsIDEwMzM5MiwgMTAzMzk2LCAxMDM0MDAsIDEwMzQwNCwgMTAzNDA4LCAKLSAgICAxMDM0MTIsIDEwMzQxNiwgMTAzNDIwLCAxMDM0MjQsIDEwMzQyOCwgMTAzNDMyLCAxMDM0MzYsIDEwMzQ0MCwgMTAzNDQ0LCAKLSAgICAxMDM0NDgsIDEwMzQ1MiwgMTAzNDU2LCAxMDM0NjAsIDEwMzQ2NCwgMTAzNDY4LCAxMDM0NzIsIDEwMzQ3NiwgMTAzNDgwLCAKLSAgICAxMDM0ODQsIDEwMzQ4OCwgMTAzNDkyLCAxMDM0OTYsIDEwMzUwMCwgMTAzNTA0LCAxMDM1MDgsIDEwMzUxMiwgMTAzNTE2LCAKLSAgICAxMDM1MjAsIDEwMzUyNCwgMTAzNTI4LCAxMDM1MzIsIDEwMzUzNiwgMTAzNTQwLCAxMDM1NDQsIDEwMzU0OCwgMTAzNTUyLCAKLSAgICAxMDM1NTYsIDEwMzU2MCwgMTAzNTY0LCAxMDM1NjgsIDEwMzU3MiwgMTAzNTc2LCAxMDM1ODAsIDEwMzU4NCwgMTAzNTg4LCAKLSAgICAxMDM1OTIsIDEwMzU5NiwgMTAzNjAwLCAxMDM2MDQsIDEwMzYwOCwgMTAzNjEyLCAxMDM2MTYsIDEwMzYyMCwgMTAzNjI0LCAKLSAgICAxMDM2MjgsIDEwMzYzMiwgMTAzNjM2LCAxMDM2NDAsIDEwMzY0NCwgMTAzNjQ4LCAxMDM2NTIsIDEwMzY1NiwgMTAzNjYwLCAKLSAgICAxMDM2NjQsIDEwMzY2OCwgMTAzNjcyLCAxMDM2NzYsIDEwMzY4MCwgMTAzNjg0LCAxMDM2ODgsIDEwMzY5MiwgMTAzNjk2LCAKLSAgICAxMDM3MDAsIDEwMzcwNCwgMTAzNzA4LCAxMDM3MTIsIDEwMzcxNiwgMTAzNzIwLCAxMDM3MjQsIDEwMzcyOCwgMTAzNzMyLCAKLSAgICAxMDM3MzYsIDEwMzc0MCwgMTAzNzQ0LCAxMDM3NDgsIDEwMzc1MiwgMTAzNzU2LCAxMDM3NjAsIDEwMzc2NCwgMTAzNzY4LCAKLSAgICAxMDM3NzIsIDEwMzc3NiwgMTAzNzgwLCAxMDM3ODQsIDEwMzc4OCwgMTAzNzkyLCAxMDM3OTYsIDEwMzgwMCwgMTAzODA0LCAKLSAgICAxMDM4MDgsIDEwMzgxMiwgMTAzODE2LCAxMDM4MjAsIDEwMzgyNCwgMTAzODI4LCAxMDM4MzIsIDEwMzgzNiwgMTAzODQwLCAKLSAgICAxMDM4NDQsIDEwMzg0OCwgMTAzODUyLCAxMDM4NTYsIDEwMzg2MCwgMTAzODY0LCAxMDM4NjgsIDEwMzg3MiwgMTAzODc2LCAKLSAgICAxMDM4ODAsIDEwMzg4NCwgMTAzODg4LCAxMDM4OTIsIDEwMzg5NiwgMTAzOTAwLCAxMDM5MDQsIDEwMzkwOCwgMTAzOTEyLCAKLSAgICAxMDM5MTYsIDEwMzkyMCwgMTAzOTI0LCAxMDM5MjgsIDEwMzkzMiwgMTAzOTM2LCAxMDM5NDAsIDEwMzk0NCwgMTAzOTQ4LCAKLSAgICAxMDM5NTIsIDEwMzk1NiwgMTAzOTYwLCAxMDM5NjQsIDEwMzk2OCwgMTAzOTcyLCAxMDM5NzYsIDEwMzk4MCwgMTAzOTg0LCAKLSAgICAxMDM5ODgsIDEwMzk5MiwgMTAzOTk2LCAxMDQwMDAsIDEwNDAwNCwgMTA0MDA4LCAxMDQwMTIsIDEwNDAxNiwgMTA0MDIwLCAKLSAgICAxMDQwMjQsIDEwNDAyOCwgMTA0MDMyLCAxMDQwMzYsIDEwNDA0MCwgMTA0MDQ0LCAxMDQwNDgsIDEwNDA1MiwgMTA0MDU2LCAKLSAgICAxMDQwNjAsIDEwNDA2NCwgMTA0MDY4LCAxMDQwNzIsIDEwNDA3NiwgMTA0MDgwLCAxMDQwODQsIDEwNDA4OCwgMTA0MDkyLCAKLSAgICAxMDQwOTYsIDEwNDEwMCwgMTA0MTA0LCAxMDQxMDgsIDEwNDExMiwgMTA0MTE2LCAxMDQxMjAsIDEwNDEyNCwgMTA0MTI4LCAKLSAgICAxMDQxMzIsIDEwNDEzNiwgMTA0MTQwLCAxMDQxNDQsIDEwNDE0OCwgMTA0MTUyLCAxMDQxNTYsIDEwNDE2MCwgMTA0MTY0LCAKLSAgICAxMDQxNjgsIDEwNDE3MiwgMTA0MTc2LCAxMDQxODAsIDEwNDE4NCwgMTA0MTg4LCAxMDQxOTIsIDEwNDE5NiwgMTA0MjAwLCAKLSAgICAxMDQyMDQsIDEwNDIwOCwgMTA0MjEyLCAxMDQyMTYsIDEwNDIyMCwgMTA0MjI0LCAxMDQyMjgsIDEwNDIzMiwgMTA0MjM2LCAKLSAgICAxMDQyNDAsIDEwNDI0NCwgMTA0MjQ4LCAxMDQyNTIsIDEwNDI1NiwgMTA0MjYwLCAxMDQyNjQsIDEwNDI2OCwgMTA0MjcyLCAKLSAgICAxMDQyNzYsIDEwNDI4MCwgMTA0Mjg0LCAxMDQyODgsIDEwNDI5MiwgMTA0Mjk2LCAxMDQzMDAsIDEwNDMwNCwgMTA0MzA4LCAKLSAgICAxMDQzMTIsIDEwNDMxNiwgMTA0MzIwLCAxMDQzMjQsIDEwNDMyOCwgMTA0MzMyLCAxMDQzMzYsIDEwNDM0MCwgMTA0MzQ0LCAKLSAgICAxMDQzNDgsIDEwNDM1MiwgMTA0MzU2LCAxMDQzNjAsIDEwNDM2NCwgMTA0MzY4LCAxMDQzNzIsIDEwNDM3NiwgMTA0MzgwLCAKLSAgICAxMDQzODQsIDEwNDM4OCwgMTA0MzkyLCAxMDQzOTYsIDEwNDQwMCwgMTA0NDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTQ0MSwgOTU0NDUsIDk1NDQ5LCA5NTQ1MywgOTU0NTYsIDk1NDYwLCAKKyAgICA5NTQ2MywgOTU0NjcsIDk1NDcwLCA5NTQ3NCwgOTU0NzgsIDk1NDgzLCA5NTQ4NywgOTU0OTIsIDk1NDk1LCA5NTQ5OSwgCisgICAgOTU1MDIsIDk1NTA2LCA5NTUwOSwgOTU1MTMsIDk1NTE3LCA5NTUyMSwgOTU1MjUsIDk1NTI5LCA5NTUzMywgOTU1MzcsIAorICAgIDk1NTQxLCA5NTU0NSwgOTU1NDksIDk1NTUzLCA5NTU1NywgOTU1NjEsIDk1NTY1LCA5NTU2OSwgOTU1NzMsIDk1NTc3LCAKKyAgICA5NTU4MSwgOTU1ODQsIDk1NTg3LCA5NTU5MSwgOTU1OTUsIDk1NTk5LCA5NTYwMiwgOTU2MDUsIDk1NjA4LCA5NTYxMiwgCisgICAgOTU2MTYsIDk1NjIwLCA5NTYyNCwgOTU2MjgsIDk1NjMxLCA5NTYzNCwgOTU2MzksIDk1NjQzLCA5NTY0OCwgOTU2NTIsIAorICAgIDk1NjU3LCA5NTY2MiwgOTU2NjgsIDk1NjczLCA5NTY3OSwgOTU2ODMsIDk1Njg4LCA5NTY5MiwgOTU2OTcsIDk1NzAxLCAKKyAgICA5NTcwNSwgOTU3MDksIDk1NzEzLCA5NTcxNiwgOTU3MTksIDk1NzIzLCA5NTcyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTU3MzAsIDk1NzM0LCA5NTczNywgOTU3NDAsIDk1NzQzLCA5NTc0NiwgOTU3NDksIDk1NzUyLCA5NTc1NSwgOTU3NTgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NzYxLCA5NTc2NSwgOTU3NzAsIDk1Nzc0LCA5NTc3OSwgCisgICAgOTU3ODMsIDk1Nzg4LCA5NTc5MiwgOTU3OTcsIDk1ODAxLCA5NTgwNiwgOTU4MTAsIDk1ODE1LCA5NTgyMCwgOTU4MjUsIAorICAgIDk1ODMwLCA5NTgzNSwgOTU4NDAsIDk1ODQ1LCA5NTg1MCwgOTU4NTUsIDk1ODYwLCA5NTg2NSwgOTU4NzAsIDk1ODc1LCAKKyAgICA5NTg4MCwgOTU4ODUsIDk1ODkwLCA5NTg5NSwgOTU5MDAsIDk1OTA0LCA5NTkwOCwgOTU5MTMsIDk1OTE4LCA5NTkyMywgCisgICAgOTU5MjcsIDk1OTMxLCA5NTkzNSwgOTU5NDAsIDk1OTQ1LCA5NTk1MCwgOTU5NTQsIDk1OTU4LCA5NTk2MywgOTU5NjgsIAorICAgIDk1OTczLCA5NTk3OSwgOTU5ODQsIDk1OTkwLCA5NTk5NSwgOTYwMDEsIDk2MDA2LCA5NjAxMiwgOTYwMTcsIDk2MDIzLCAKKyAgICA5NjAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTYwMzMsIDk2MDM4LCA5NjA0MiwgOTYwNDYsIDk2MDUwLCA5NjA1NCwgCisgICAgOTYwNTgsIDk2MDYyLCA5NjA2NiwgOTYwNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2MDc0LCA5NjA3NywgOTYwODIsIDk2MDg4LCAKKyAgICA5NjA5NiwgOTYxMDEsIDk2MTA3LCA5NjExNSwgOTYxMjEsIDk2MTI3LCA5NjEzMSwgOTYxMzUsIDk2MTQyLCA5NjE1MSwgCisgICAgOTYxNTgsIDk2MTY3LCA5NjE3MywgOTYxODIsIDk2MTg5LCA5NjE5NiwgOTYyMDMsIDk2MjEzLCA5NjIxOSwgOTYyMjMsIAorICAgIDk2MjMwLCA5NjIzOSwgOTYyNDksIDk2MjU2LCA5NjI2MywgOTYyNjcsIDk2MjcxLCA5NjI3OCwgOTYyODgsIDk2MjkyLCAKKyAgICA5NjI5OSwgOTYzMDYsIDk2MzEzLCA5NjMxOSwgOTYzMjYsIDk2MzMzLCA5NjM0MCwgOTYzNDcsIDk2MzUxLCA5NjM1NSwgCisgICAgOTYzNTksIDk2MzY2LCA5NjM3MCwgOTYzNzcsIDk2Mzg0LCA5NjM5OCwgOTY0MDcsIDk2NDExLCA5NjQxNSwgOTY0MTksIAorICAgIDk2NDI2LCA5NjQzMCwgOTY0MzQsIDk2NDM4LCA5NjQ0NiwgOTY0NTQsIDk2NDczLCA5NjQ4MywgOTY1MDMsIDk2NTA3LCAKKyAgICA5NjUxMSwgOTY1MTUsIDk2NTE5LCA5NjUyMywgOTY1MjcsIDk2NTMxLCA5NjUzOCwgOTY1NDIsIDk2NTQ1LCA5NjU0OSwgCisgICAgOTY1NTMsIDk2NTU5LCA5NjU2NiwgOTY1NzUsIDk2NTc5LCA5NjU4OCwgOTY1OTcsIDk2NjA1LCA5NjYwOSwgOTY2MTYsIAorICAgIDk2NjIwLCA5NjYyNCwgOTY2MjgsIDk2NjMyLCA5NjY0MywgOTY2NTIsIDk2NjYxLCA5NjY3MCwgOTY2NzksIDk2NjkxLCAKKyAgICA5NjcwMCwgOTY3MDksIDk2NzE4LCA5NjcyNiwgOTY3MzUsIDk2NzQ3LCA5Njc1NiwgOTY3NjUsIDk2Nzc0LCA5Njc4NiwgCisgICAgOTY3OTUsIDk2ODA0LCA5NjgxNiwgOTY4MjUsIDk2ODM0LCA5Njg0NiwgOTY4NTUsIDk2ODU5LCA5Njg2MywgOTY4NjcsIAorICAgIDk2ODcxLCA5Njg3NSwgOTY4NzksIDk2ODgzLCA5Njg5MCwgOTY4OTQsIDk2ODk4LCA5NjkwOSwgOTY5MTMsIDk2OTE3LCAKKyAgICA5NjkyNCwgOTY5MzAsIDk2OTM2LCA5Njk0MCwgOTY5NDcsIDk2OTUxLCA5Njk1NSwgOTY5NTksIDk2OTYzLCA5Njk2NywgCisgICAgOTY5NzEsIDk2OTc3LCA5Njk4NSwgOTY5ODksIDk2OTkzLCA5Njk5NiwgOTcwMDIsIDk3MDEyLCA5NzAxNiwgOTcwMjgsIAorICAgIDk3MDM1LCA5NzA0MiwgOTcwNDksIDk3MDU2LCA5NzA2MiwgOTcwNjYsIDk3MDcwLCA5NzA3NCwgOTcwNzgsIDk3MDg1LCAKKyAgICA5NzA5NCwgOTcxMDEsIDk3MTA5LCA5NzExNywgOTcxMjMsIDk3MTI3LCA5NzEzMSwgOTcxMzUsIDk3MTM5LCA5NzE0NSwgCisgICAgOTcxNTQsIDk3MTY2LCA5NzE3MywgOTcxODAsIDk3MTg5LCA5NzIwMCwgOTcyMDYsIDk3MjE1LCA5NzIyNCwgOTcyMzEsIAorICAgIDk3MjQwLCA5NzI0NywgOTcyNTQsIDk3MjY0LCA5NzI3MSwgOTcyNzgsIDk3Mjg1LCA5NzI5MiwgOTcyOTYsIDk3MzAyLCAKKyAgICA5NzMwNiwgOTczMTcsIDk3MzI1LCA5NzMzNCwgOTczNDYsIDk3MzUzLCA5NzM2MCwgOTczNzAsIDk3Mzc3LCA5NzM4NiwgCisgICAgOTczOTMsIDk3NDAyLCA5NzQwOSwgOTc0MTYsIDk3NDI2LCA5NzQzMywgOTc0NDAsIDk3NDUwLCA5NzQ1NywgOTc0NjksIAorICAgIDk3NDc4LCA5NzQ4NSwgOTc0OTIsIDk3NDk5LCA5NzUwOCwgOTc1MTgsIDk3NTMxLCA5NzUzOCwgOTc1NDgsIDk3NTU4LCAKKyAgICA5NzU2NSwgOTc1NzQsIDk3NTg3LCA5NzU5NCwgOTc2MDEsIDk3NjA4LCA5NzYxOCwgOTc2MjgsIDk3NjM1LCA5NzY0NSwgCisgICAgOTc2NTIsIDk3NjU5LCA5NzY2OSwgOTc2NzUsIDk3NjgyLCA5NzY4OSwgOTc2OTYsIDk3NzA2LCA5NzcxMywgOTc3MjAsIAorICAgIDk3NzI3LCA5NzczMywgOTc3NDAsIDk3NzUwLCA5Nzc1NywgOTc3NjEsIDk3NzY5LCA5Nzc3MywgOTc3ODUsIDk3Nzg5LCAKKyAgICA5NzgwMywgOTc4MDcsIDk3ODExLCA5NzgxNSwgOTc4MTksIDk3ODI1LCA5NzgzMiwgOTc4NDAsIDk3ODQ0LCA5Nzg0OCwgCisgICAgOTc4NTIsIDk3ODU2LCA5Nzg2MywgOTc4NjcsIDk3ODczLCA5Nzg3OSwgOTc4ODcsIDk3ODkxLCA5Nzg5OCwgOTc5MDYsIAorICAgIDk3OTEwLCA5NzkxNCwgOTc5MjAsIDk3OTI0LCA5NzkzMywgOTc5NDIsIDk3OTQ5LCA5Nzk1OSwgOTc5NjUsIDk3OTY5LCAKKyAgICA5Nzk3MywgOTc5ODEsIDk3OTg4LCA5Nzk5NSwgOTgwMDEsIDk4MDA1LCA5ODAxMywgOTgwMTcsIDk4MDI0LCA5ODAzNiwgCisgICAgOTgwNDMsIDk4MDUzLCA5ODA1OSwgOTgwNjMsIDk4MDcyLCA5ODA3OSwgOTgwODgsIDk4MDkyLCA5ODA5NiwgOTgxMDMsIAorICAgIDk4MTA3LCA5ODExMSwgOTgxMTUsIDk4MTE5LCA5ODEyMiwgOTgxMjgsIDk4MTM0LCA5ODEzOCwgOTgxNDIsIDk4MTQ5LCAKKyAgICA5ODE1NiwgOTgxNjMsIDk4MTcwLCA5ODE3NywgOTgxODQsIDk4MTkxLCA5ODE5OCwgOTgyMDQsIDk4MjA4LCA5ODIxMiwgCisgICAgOTgyMTksIDk4MjI2LCA5ODIzMywgOTgyNDAsIDk4MjQ3LCA5ODI1MSwgOTgyNTQsIDk4MjU5LCA5ODI2MywgOTgyNjcsIAorICAgIDk4Mjc2LCA5ODI4NSwgOTgyODksIDk4MjkzLCA5ODI5OSwgOTgzMDUsIDk4MzIyLCA5ODMyOCwgOTgzMzIsIDk4MzQxLCAKKyAgICA5ODM0NSwgOTgzNDksIDk4MzU2LCA5ODM2NCwgOTgzNzIsIDk4Mzc4LCA5ODM4MiwgOTgzODYsIDk4MzkwLCA5ODM5NCwgCisgICAgOTgzOTcsIDk4NDAzLCA5ODQxMCwgOTg0MjAsIDk4NDI3LCA5ODQzNCwgOTg0NDEsIDk4NDQ3LCA5ODQ1NCwgOTg0NjEsIAorICAgIDk4NDY4LCA5ODQ3NSwgOTg0ODIsIDk4NDkxLCA5ODQ5OCwgOTg1MTAsIDk4NTE3LCA5ODUyNCwgOTg1MzQsIDk4NTQ1LCAKKyAgICA5ODU1MiwgOTg1NTksIDk4NTY2LCA5ODU3MywgOTg1ODAsIDk4NTg3LCA5ODU5NCwgOTg2MDEsIDk4NjA4LCA5ODYxNSwgCisgICAgOTg2MjUsIDk4NjM1LCA5ODY0NSwgOTg2NTIsIDk4NjYyLCA5ODY2OSwgOTg2NzYsIDk4NjgzLCA5ODY5MCwgOTg2OTYsIAorICAgIDk4NzAzLCA5ODcxMCwgOTg3MTcsIDk4NzI0LCA5ODczMSwgOTg3MzgsIDk4NzQ1LCA5ODc1MiwgOTg3NTgsIDk4NzY1LCAKKyAgICA5ODc3MiwgOTg3ODEsIDk4Nzg4LCA5ODc5NSwgOTg3OTksIDk4ODA3LCA5ODgxMSwgOTg4MTUsIDk4ODE5LCA5ODgyMywgCisgICAgOTg4MjcsIDk4ODM0LCA5ODgzOCwgOTg4NDcsIDk4ODUxLCA5ODg1OCwgOTg4NjYsIDk4ODcwLCA5ODg3NCwgOTg4NzgsIAorICAgIDk4ODkxLCA5ODkwNywgOTg5MTEsIDk4OTE1LCA5ODkyMiwgOTg5MjgsIDk4OTM1LCA5ODkzOSwgOTg5NDMsIDk4OTQ3LCAKKyAgICA5ODk1MSwgOTg5NTUsIDk4OTYyLCA5ODk2NiwgOTg5ODQsIDk4OTg4LCA5ODk5MiwgOTg5OTksIDk5MDAzLCA5OTAwNywgCisgICAgOTkwMTMsIDk5MDE3LCA5OTAyMSwgOTkwMjksIDk5MDMzLCA5OTAzNywgOTkwNDEsIDk5MDQ1LCA5OTA1MSwgOTkwNjIsIAorICAgIDk5MDcxLCA5OTA4MCwgOTkwODcsIDk5MDk0LCA5OTEwNSwgOTkxMTIsIDk5MTE5LCA5OTEyNiwgOTkxMzMsIDk5MTQwLCAKKyAgICA5OTE0NywgOTkxNTQsIDk5MTY0LCA5OTE3MCwgOTkxNzcsIDk5MTg3LCA5OTE5NiwgOTkyMDMsIDk5MjEyLCA5OTIyMiwgCisgICAgOTkyMjksIDk5MjM2LCA5OTI0MywgOTkyNTAsIDk5MjYyLCA5OTI2OSwgOTkyNzYsIDk5MjgzLCA5OTI5MCwgOTkyOTcsIAorICAgIDk5MzA3LCA5OTMxNCwgOTkzMjEsIDk5MzMxLCA5OTM0NCwgOTkzNTYsIDk5MzYzLCA5OTM3MywgOTkzODAsIDk5Mzg3LCAKKyAgICA5OTM5NCwgOTk0MDgsIDk5NDE0LCA5OTQyMiwgOTk0MzIsIDk5NDQyLCA5OTQ0OSwgOTk0NTYsIDk5NDYyLCA5OTQ2NiwgCisgICAgOTk0NzMsIDk5NDgzLCA5OTQ4OSwgOTk1MDIsIDk5NTA2LCA5OTUxMCwgOTk1MTcsIDk5NTIxLCA5OTUyOCwgOTk1MzgsIAorICAgIDk5NTQyLCA5OTU0NiwgOTk1NTAsIDk5NTU0LCA5OTU1OCwgOTk1NjUsIDk5NTY5LCA5OTU3NiwgOTk1ODMsIDk5NTkwLCAKKyAgICA5OTU5OSwgOTk2MDgsIDk5NjE4LCA5OTYyNSwgOTk2MzIsIDk5NjM5LCA5OTY0OSwgOTk2NTYsIDk5NjY2LCA5OTY3MywgCisgICAgOTk2ODMsIDk5NjkwLCA5OTY5NywgOTk3MDcsIDk5NzE3LCA5OTcyNCwgOTk3MzAsIDk5NzM4LCA5OTc0NiwgOTk3NTIsIAorICAgIDk5NzU4LCA5OTc2MiwgOTk3NjYsIDk5NzczLCA5OTc4MSwgOTk3ODcsIDk5NzkxLCA5OTc5NSwgOTk3OTksIDk5ODA2LCAKKyAgICA5OTgxOCwgOTk4MjEsIDk5ODI4LCA5OTgzNCwgOTk4MzgsIDk5ODQyLCA5OTg0NiwgOTk4NTAsIDk5ODU0LCA5OTg1OCwgCisgICAgOTk4NjIsIDk5ODY2LCA5OTg3MCwgOTk4NzQsIDk5ODgxLCA5OTg4NSwgOTk4OTEsIDk5ODk1LCA5OTg5OSwgOTk5MDMsIAorICAgIDk5OTA5LCA5OTkxNiwgOTk5MjMsIDk5OTMwLCA5OTk0MSwgOTk5NDksIDk5OTUzLCA5OTk1OSwgOTk5NjgsIDk5OTc1LCAKKyAgICA5OTk4MSwgOTk5ODQsIDk5OTg4LCA5OTk5MiwgOTk5OTgsIDEwMDAwNywgMTAwMDE1LCAxMDAwMTksIDEwMDAyNSwgCisgICAgMTAwMDI5LCAxMDAwMzMsIDEwMDAzNywgMTAwMDQzLCAxMDAwNTAsIDEwMDA1NiwgMTAwMDYwLCAxMDAwNjYsIDEwMDA3MCwgCisgICAgMTAwMDc0LCAxMDAwODMsIDEwMDA5NSwgMTAwMDk5LCAxMDAxMDYsIDEwMDExMywgMTAwMTIzLCAxMDAxMzAsIDEwMDE0MiwgCisgICAgMTAwMTQ5LCAxMDAxNTYsIDEwMDE2MywgMTAwMTc0LCAxMDAxODQsIDEwMDE5NywgMTAwMjA3LCAxMDAyMTQsIDEwMDIxOCwgCisgICAgMTAwMjIyLCAxMDAyMjYsIDEwMDIzMCwgMTAwMjM5LCAxMDAyNDgsIDEwMDI1NywgMTAwMjc0LCAxMDAyODMsIDEwMDI4OSwgCisgICAgMTAwMjk2LCAxMDAzMDQsIDEwMDMxNywgMTAwMzIxLCAxMDAzMzAsIDEwMDMzOSwgMTAwMzQ4LCAxMDAzNTcsIDEwMDM2OCwgCisgICAgMTAwMzc3LCAxMDAzODYsIDEwMDM5NSwgMTAwNDA0LCAxMDA0MTMsIDEwMDQyMiwgMTAwNDMyLCAxMDA0MzUsIDEwMDQzOSwgCisgICAgMTAwNDQzLCAxMDA0NDcsIDEwMDQ1MSwgMTAwNDU1LCAxMDA0NjEsIDEwMDQ2OCwgMTAwNDc1LCAxMDA0ODIsIDEwMDQ4OCwgCisgICAgMTAwNDk0LCAxMDA1MDEsIDEwMDUwNywgMTAwNTE0LCAxMDA1MjIsIDEwMDUyNiwgMTAwNTMzLCAxMDA1NDAsIDEwMDU0NywgCisgICAgMTAwNTU1LCAxMDA1NTgsIDEwMDU2MiwgMTAwNTY2LCAxMDA1NzAsIDEwMDU3MywgMTAwNTc5LCAxMDA1ODMsIDEwMDU4OSwgCisgICAgMTAwNTk2LCAxMDA2MDMsIDEwMDYwOSwgMTAwNjE2LCAxMDA2MjMsIDEwMDYzMCwgMTAwNjM3LCAxMDA2NDQsIDEwMDY1MSwgCisgICAgMTAwNjU4LCAxMDA2NjUsIDEwMDY3MiwgMTAwNjc5LCAxMDA2ODYsIDEwMDY5MywgMTAwNzAwLCAxMDA3MDcsIDEwMDcxMywgCisgICAgMTAwNzE3LCAxMDA3MjYsIDEwMDczMCwgMTAwNzM0LCAxMDA3MzgsIDEwMDc0MiwgMTAwNzQ4LCAxMDA3NTUsIDEwMDc2MiwgCisgICAgMTAwNzY5LCAxMDA3NzYsIDEwMDc4MywgMTAwNzg5LCAxMDA3OTcsIDEwMDgwMSwgMTAwODA1LCAxMDA4MDksIDEwMDgxMywgCisgICAgMTAwODE5LCAxMDA4MzYsIDEwMDg1MywgMTAwODU3LCAxMDA4NjEsIDEwMDg2NSwgMTAwODY5LCAxMDA4NzMsIDEwMDg3NywgCisgICAgMTAwODgzLCAxMDA4OTAsIDEwMDg5NCwgMTAwOTAwLCAxMDA5MDcsIDEwMDkxNCwgMTAwOTIxLCAxMDA5MjgsIDEwMDkzNSwgCisgICAgMTAwOTQ0LCAxMDA5NTEsIDEwMDk1OCwgMTAwOTY1LCAxMDA5NzIsIDEwMDk3NiwgMTAwOTgwLCAxMDA5ODYsIDEwMDk5OCwgCisgICAgMTAxMDAyLCAxMDEwMDYsIDEwMTAxNSwgMTAxMDE5LCAxMDEwMjMsIDEwMTAyNywgMTAxMDMzLCAxMDEwMzcsIDEwMTA0MSwgCisgICAgMTAxMDUwLCAxMDEwNTQsIDEwMTA1OCwgMTAxMDYyLCAxMDEwNjksIDEwMTA3MywgMTAxMDc3LCAxMDEwODEsIDEwMTA4NSwgCisgICAgMTAxMDg5LCAxMDEwOTMsIDEwMTA5NywgMTAxMTAxLCAxMDExMDcsIDEwMTExNCwgMTAxMTIxLCAxMDExMjcsIDEwMTEzMSwgCisgICAgMTAxMTQ4LCAxMDExNTQsIDEwMTE1OCwgMTAxMTY0LCAxMDExNzAsIDEwMTE3NiwgMTAxMTgyLCAxMDExODgsIDEwMTE5NCwgCisgICAgMTAxMTk4LCAxMDEyMDIsIDEwMTIwNiwgMTAxMjEyLCAxMDEyMTYsIDEwMTIyMiwgMTAxMjI2LCAxMDEyMzAsIDEwMTIzNywgCisgICAgMTAxMjQ0LCAxMDEyNjEsIDEwMTI2NSwgMTAxMjY5LCAxMDEyNzMsIDEwMTI3NywgMTAxMjgxLCAxMDEyOTMsIDEwMTI5NiwgCisgICAgMTAxMzAxLCAxMDEzMDYsIDEwMTMyMSwgMTAxMzMxLCAxMDEzNDMsIDEwMTM0NywgMTAxMzUxLCAxMDEzNTUsIDEwMTM2MSwgCisgICAgMTAxMzY4LCAxMDEzNzUsIDEwMTM4NSwgMTAxMzk3LCAxMDE0MDMsIDEwMTQwOSwgMTAxNDE4LCAxMDE0MjIsIDEwMTQyNiwgCisgICAgMTAxNDMzLCAxMDE0NDMsIDEwMTQ1MCwgMTAxNDU2LCAxMDE0NjAsIDEwMTQ2NCwgMTAxNDcxLCAxMDE0NzcsIDEwMTQ4MSwgCisgICAgMTAxNDg3LCAxMDE0OTEsIDEwMTQ5OSwgMTAxNTA1LCAxMDE1MDksIDEwMTUxNywgMTAxNTI1LCAxMDE1MzIsIDEwMTUzOCwgCisgICAgMTAxNTQ1LCAxMDE1NTIsIDEwMTU2MiwgMTAxNTcyLCAxMDE1NzYsIDEwMTU4MCwgMTAxNTg0LCAxMDE1ODgsIDEwMTU5NCwgCisgICAgMTAxNjAxLCAxMDE2MDcsIDEwMTYxNCwgMTAxNjIxLCAxMDE2MjgsIDEwMTYzNywgMTAxNjQ0LCAxMDE2NTEsIDEwMTY1NywgCisgICAgMTAxNjY0LCAxMDE2NzEsIDEwMTY3OCwgMTAxNjg1LCAxMDE2OTIsIDEwMTY5OSwgMTAxNzA1LCAxMDE3MTIsIDEwMTcxOSwgCisgICAgMTAxNzI2LCAxMDE3MzUsIDEwMTc0MiwgMTAxNzQ5LCAxMDE3NTMsIDEwMTc1OSwgMTAxNzYzLCAxMDE3NjksIDEwMTc3NiwgCisgICAgMTAxNzgzLCAxMDE3OTAsIDEwMTc5NCwgMTAxNzk4LCAxMDE4MDIsIDEwMTgwNiwgMTAxODEwLCAxMDE4MTcsIDEwMTgyMSwgCisgICAgMTAxODI1LCAxMDE4MzEsIDEwMTgzOSwgMTAxODQzLCAxMDE4NDcsIDEwMTg1MSwgMTAxODU1LCAxMDE4NjIsIDEwMTg2NiwgCisgICAgMTAxODcwLCAxMDE4NzgsIDEwMTg4MiwgMTAxODg2LCAxMDE4OTAsIDEwMTg5NCwgMTAxOTAwLCAxMDE5MDQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMTkwOCwgMTAxOTE0LCAxMDE5MjAsIDEwMTkyNywgCisgICAgMTAxOTM0LCAxMDE5NDEsIDEwMTk0OCwgMTAxOTU1LCAxMDE5NjIsIDEwMTk2OCwgMTAxOTc1LCAxMDE5ODIsIDEwMTk4OSwgCisgICAgMTAxOTk2LCAxMDIwMDMsIDEwMjAxMCwgMTAyMDE2LCAxMDIwMjIsIDEwMjAyOCwgMTAyMDM0LCAxMDIwNDAsIDEwMjA0NiwgCisgICAgMTAyMDUyLCAxMDIwNTgsIDEwMjA2NCwgMTAyMDcxLCAxMDIwNzgsIDEwMjA4NSwgMTAyMDkyLCAxMDIwOTksIDEwMjEwNiwgCisgICAgMTAyMTEyLCAxMDIxMTgsIDEwMjEyNCwgMTAyMTMxLCAxMDIxMzgsIDEwMjE0NCwgMTAyMTUwLCAxMDIxNTksIDEwMjE2NiwgCisgICAgMTAyMTczLCAxMDIxODAsIDEwMjE4NywgMTAyMTk0LCAxMDIyMDEsIDEwMjIwNywgMTAyMjEzLCAxMDIyMTksIDEwMjIyOCwgCisgICAgMTAyMjM1LCAxMDIyNDIsIDEwMjI1MywgMTAyMjY0LCAxMDIyNzAsIDEwMjI3NiwgMTAyMjgyLCAxMDIyOTEsIDEwMjI5OCwgCisgICAgMTAyMzA1LCAxMDIzMTUsIDEwMjMyNSwgMTAyMzM2LCAxMDIzNDcsIDEwMjM1OSwgMTAyMzcyLCAxMDIzODMsIDEwMjM5NCwgCisgICAgMTAyNDA2LCAxMDI0MTksIDEwMjQzMCwgMTAyNDQxLCAxMDI0NTIsIDEwMjQ2MywgMTAyNDc0LCAxMDI0ODYsIDEwMjQ5NCwgCisgICAgMTAyNTAyLCAxMDI1MTEsIDEwMjUyMCwgMTAyNTI5LCAxMDI1MzUsIDEwMjU0MSwgMTAyNTQ3LCAxMDI1NTQsIDEwMjU2NCwgCisgICAgMTAyNTcxLCAxMDI1ODEsIDEwMjU4NiwgMTAyNTkxLCAxMDI1OTcsIDEwMjYwMywgMTAyNjExLCAxMDI2MTksIDEwMjYyOCwgCisgICAgMTAyNjM5LCAxMDI2NTAsIDEwMjY1OCwgMTAyNjY2LCAxMDI2NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwMjY4NCwgMTAyNjk1LCAxMDI3MDIsIDEwMjcxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAyNzE4LCAxMDI3MjIsIDEwMjcyNiwgMTAyNzMwLCAxMDI3MzQsIDEwMjczOCwgMTAyNzQyLCAxMDI3NDYsIDEwMjc1MCwgCisgICAgMTAyNzU0LCAxMDI3NTgsIDEwMjc2MiwgMTAyNzY2LCAxMDI3NzAsIDEwMjc3NCwgMTAyNzc4LCAxMDI3ODIsIDEwMjc4NiwgCisgICAgMTAyNzkwLCAxMDI3OTQsIDEwMjc5OCwgMTAyODAyLCAxMDI4MDYsIDEwMjgxMCwgMTAyODE0LCAxMDI4MTgsIDEwMjgyMiwgCisgICAgMTAyODI2LCAxMDI4MzAsIDEwMjgzNCwgMTAyODM4LCAxMDI4NDIsIDEwMjg0NiwgMTAyODUwLCAxMDI4NTQsIDEwMjg1OCwgCisgICAgMTAyODYyLCAxMDI4NjYsIDEwMjg3MCwgMTAyODc0LCAxMDI4NzgsIDEwMjg4MiwgMTAyODg2LCAxMDI4OTAsIDEwMjg5NCwgCisgICAgMTAyODk4LCAxMDI5MDIsIDEwMjkwNiwgMTAyOTEwLCAxMDI5MTQsIDEwMjkxOCwgMTAyOTIyLCAxMDI5MjYsIDEwMjkzMCwgCisgICAgMTAyOTM0LCAxMDI5MzgsIDEwMjk0MiwgMTAyOTQ2LCAxMDI5NTAsIDEwMjk1NCwgMTAyOTU4LCAxMDI5NjIsIDEwMjk2NiwgCisgICAgMTAyOTcwLCAxMDI5NzQsIDEwMjk3OCwgMTAyOTgyLCAxMDI5ODYsIDEwMjk5MCwgMTAyOTk0LCAxMDI5OTgsIDEwMzAwMiwgCisgICAgMTAzMDA2LCAxMDMwMTAsIDEwMzAxNCwgMTAzMDE4LCAxMDMwMjIsIDEwMzAyNiwgMTAzMDMwLCAxMDMwMzQsIDEwMzAzOCwgCisgICAgMTAzMDQyLCAxMDMwNDYsIDEwMzA1MCwgMTAzMDU0LCAxMDMwNTgsIDEwMzA2MiwgMTAzMDY2LCAxMDMwNzAsIDEwMzA3NCwgCisgICAgMTAzMDc4LCAxMDMwODIsIDEwMzA4NiwgMTAzMDkwLCAxMDMwOTQsIDEwMzA5OCwgMTAzMTAyLCAxMDMxMDYsIDEwMzExMCwgCisgICAgMTAzMTE0LCAxMDMxMTgsIDEwMzEyMiwgMTAzMTI2LCAxMDMxMzAsIDEwMzEzNCwgMTAzMTM4LCAxMDMxNDIsIDEwMzE0NiwgCisgICAgMTAzMTUwLCAxMDMxNTQsIDEwMzE1OCwgMTAzMTYyLCAxMDMxNjYsIDEwMzE3MCwgMTAzMTc0LCAxMDMxNzgsIDEwMzE4MiwgCisgICAgMTAzMTg2LCAxMDMxOTAsIDEwMzE5NCwgMTAzMTk4LCAxMDMyMDIsIDEwMzIwNiwgMTAzMjEwLCAxMDMyMTQsIDEwMzIxOCwgCisgICAgMTAzMjIyLCAxMDMyMjYsIDEwMzIzMCwgMTAzMjM0LCAxMDMyMzgsIDEwMzI0MiwgMTAzMjQ2LCAxMDMyNTAsIDEwMzI1NCwgCisgICAgMTAzMjU4LCAxMDMyNjIsIDEwMzI2NiwgMTAzMjcwLCAxMDMyNzQsIDEwMzI3OCwgMTAzMjgyLCAxMDMyODYsIDEwMzI5MCwgCisgICAgMTAzMjk0LCAxMDMyOTgsIDEwMzMwMiwgMTAzMzA2LCAxMDMzMTAsIDEwMzMxNCwgMTAzMzE4LCAxMDMzMjIsIDEwMzMyNiwgCisgICAgMTAzMzMwLCAxMDMzMzQsIDEwMzMzOCwgMTAzMzQyLCAxMDMzNDYsIDEwMzM1MCwgMTAzMzU0LCAxMDMzNTgsIDEwMzM2MiwgCisgICAgMTAzMzY2LCAxMDMzNzAsIDEwMzM3NCwgMTAzMzc4LCAxMDMzODIsIDEwMzM4NiwgMTAzMzkwLCAxMDMzOTQsIDEwMzM5OCwgCisgICAgMTAzNDAyLCAxMDM0MDYsIDEwMzQxMCwgMTAzNDE0LCAxMDM0MTgsIDEwMzQyMiwgMTAzNDI2LCAxMDM0MzAsIDEwMzQzNCwgCisgICAgMTAzNDM4LCAxMDM0NDIsIDEwMzQ0NiwgMTAzNDUwLCAxMDM0NTQsIDEwMzQ1OCwgMTAzNDYyLCAxMDM0NjYsIDEwMzQ3MCwgCisgICAgMTAzNDc0LCAxMDM0NzgsIDEwMzQ4MiwgMTAzNDg2LCAxMDM0OTAsIDEwMzQ5NCwgMTAzNDk4LCAxMDM1MDIsIDEwMzUwNiwgCisgICAgMTAzNTEwLCAxMDM1MTQsIDEwMzUxOCwgMTAzNTIyLCAxMDM1MjYsIDEwMzUzMCwgMTAzNTM0LCAxMDM1MzgsIDEwMzU0MiwgCisgICAgMTAzNTQ2LCAxMDM1NTAsIDEwMzU1NCwgMTAzNTU4LCAxMDM1NjIsIDEwMzU2NiwgMTAzNTcwLCAxMDM1NzQsIDEwMzU3OCwgCisgICAgMTAzNTgyLCAxMDM1ODYsIDEwMzU5MCwgMTAzNTk0LCAxMDM1OTgsIDEwMzYwMiwgMTAzNjA2LCAxMDM2MTAsIDEwMzYxNCwgCisgICAgMTAzNjE4LCAxMDM2MjIsIDEwMzYyNiwgMTAzNjMwLCAxMDM2MzQsIDEwMzYzOCwgMTAzNjQyLCAxMDM2NDYsIDEwMzY1MCwgCisgICAgMTAzNjU0LCAxMDM2NTgsIDEwMzY2MiwgMTAzNjY2LCAxMDM2NzAsIDEwMzY3NCwgMTAzNjc4LCAxMDM2ODIsIDEwMzY4NiwgCisgICAgMTAzNjkwLCAxMDM2OTQsIDEwMzY5OCwgMTAzNzAyLCAxMDM3MDYsIDEwMzcxMCwgMTAzNzE0LCAxMDM3MTgsIDEwMzcyMiwgCisgICAgMTAzNzI2LCAxMDM3MzAsIDEwMzczNCwgMTAzNzM4LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUwLCAxMDM3NTQsIDEwMzc1OCwgCisgICAgMTAzNzYyLCAxMDM3NjYsIDEwMzc3MCwgMTAzNzc0LCAxMDM3NzgsIDEwMzc4MiwgMTAzNzg2LCAxMDM3OTAsIDEwMzc5NCwgCisgICAgMTAzNzk4LCAxMDM4MDIsIDEwMzgwNiwgMTAzODEwLCAxMDM4MTQsIDEwMzgxOCwgMTAzODIyLCAxMDM4MjYsIDEwMzgzMCwgCisgICAgMTAzODM0LCAxMDM4MzgsIDEwMzg0MiwgMTAzODQ2LCAxMDM4NTAsIDEwMzg1NCwgMTAzODU4LCAxMDM4NjIsIDEwMzg2NiwgCisgICAgMTAzODcwLCAxMDM4NzQsIDEwMzg3OCwgMTAzODgyLCAxMDM4ODYsIDEwMzg5MCwgMTAzODk0LCAxMDM4OTgsIDEwMzkwMiwgCisgICAgMTAzOTA2LCAxMDM5MTAsIDEwMzkxNCwgMTAzOTE4LCAxMDM5MjIsIDEwMzkyNiwgMTAzOTMwLCAxMDM5MzQsIDEwMzkzOCwgCisgICAgMTAzOTQyLCAxMDM5NDYsIDEwMzk1MCwgMTAzOTU0LCAxMDM5NTgsIDEwMzk2MiwgMTAzOTY2LCAxMDM5NzAsIDEwMzk3NCwgCisgICAgMTAzOTc4LCAxMDM5ODIsIDEwMzk4NiwgMTAzOTkwLCAxMDM5OTQsIDEwMzk5OCwgMTA0MDAyLCAxMDQwMDYsIDEwNDAxMCwgCisgICAgMTA0MDE0LCAxMDQwMTgsIDEwNDAyMiwgMTA0MDI2LCAxMDQwMzAsIDEwNDAzNCwgMTA0MDM4LCAxMDQwNDIsIDEwNDA0NiwgCisgICAgMTA0MDUwLCAxMDQwNTQsIDEwNDA1OCwgMTA0MDYyLCAxMDQwNjYsIDEwNDA3MCwgMTA0MDc0LCAxMDQwNzgsIDEwNDA4MiwgCisgICAgMTA0MDg2LCAxMDQwOTAsIDEwNDA5NCwgMTA0MDk4LCAxMDQxMDIsIDEwNDEwNiwgMTA0MTEwLCAxMDQxMTQsIDEwNDExOCwgCisgICAgMTA0MTIyLCAxMDQxMjYsIDEwNDEzMCwgMTA0MTM0LCAxMDQxMzgsIDEwNDE0MiwgMTA0MTQ2LCAxMDQxNTAsIDEwNDE1NCwgCisgICAgMTA0MTU4LCAxMDQxNjIsIDEwNDE2NiwgMTA0MTcwLCAxMDQxNzQsIDEwNDE3OCwgMTA0MTgyLCAxMDQxODYsIDEwNDE5MCwgCisgICAgMTA0MTk0LCAxMDQxOTgsIDEwNDIwMiwgMTA0MjA2LCAxMDQyMTAsIDEwNDIxNCwgMTA0MjE4LCAxMDQyMjIsIDEwNDIyNiwgCisgICAgMTA0MjMwLCAxMDQyMzQsIDEwNDIzOCwgMTA0MjQyLCAxMDQyNDYsIDEwNDI1MCwgMTA0MjU0LCAxMDQyNTgsIDEwNDI2MiwgCisgICAgMTA0MjY2LCAxMDQyNzAsIDEwNDI3NCwgMTA0Mjc4LCAxMDQyODIsIDEwNDI4NiwgMTA0MjkwLCAxMDQyOTQsIDEwNDI5OCwgCisgICAgMTA0MzAyLCAxMDQzMDYsIDEwNDMxMCwgMTA0MzE0LCAxMDQzMTgsIDEwNDMyMiwgMTA0MzI2LCAxMDQzMzAsIDEwNDMzNCwgCisgICAgMTA0MzM4LCAxMDQzNDIsIDEwNDM0NiwgMTA0MzUwLCAxMDQzNTQsIDEwNDM1OCwgMTA0MzYyLCAxMDQzNjYsIDEwNDM3MCwgCisgICAgMTA0Mzc0LCAxMDQzNzgsIDEwNDM4MiwgMTA0Mzg2LCAxMDQzOTAsIDEwNDM5NCwgMTA0Mzk4LCAxMDQ0MDIsIDEwNDQwNiwgCisgICAgMTA0NDEwLCAxMDQ0MTQsIDEwNDQxOCwgMTA0NDIyLCAxMDQ0MjYsIDEwNDQzMCwgMTA0NDM0LCAxMDQ0MzgsIDEwNDQ0MiwgCisgICAgMTA0NDQ2LCAxMDQ0NTAsIDEwNDQ1NCwgMTA0NDU4LCAxMDQ0NjIsIDEwNDQ2NiwgMTA0NDcwLCAxMDQ0NzQsIDEwNDQ3OCwgCisgICAgMTA0NDgyLCAxMDQ0ODYsIDEwNDQ5MCwgMTA0NDk0LCAxMDQ0OTgsIDEwNDUwMiwgMTA0NTA2LCAxMDQ1MTAsIDEwNDUxNCwgCisgICAgMTA0NTE4LCAxMDQ1MjIsIDEwNDUyNiwgMTA0NTMwLCAxMDQ1MzQsIDEwNDUzOCwgMTA0NTQyLCAxMDQ1NDYsIDEwNDU1MCwgCisgICAgMTA0NTU0LCAxMDQ1NTgsIDEwNDU2MiwgMTA0NTY2LCAxMDQ1NzAsIDEwNDU3NCwgMTA0NTc4LCAxMDQ1ODIsIDEwNDU4NiwgCisgICAgMTA0NTkwLCAxMDQ1OTQsIDEwNDU5OCwgMTA0NjAyLCAxMDQ2MDYsIDEwNDYxMCwgMTA0NjE0LCAxMDQ2MTgsIDEwNDYyMiwgCisgICAgMTA0NjI2LCAxMDQ2MzAsIDEwNDYzNCwgMTA0NjM4LCAxMDQ2NDIsIDEwNDY0NiwgMTA0NjUwLCAxMDQ2NTQsIDEwNDY1OCwgCisgICAgMTA0NjYyLCAxMDQ2NjYsIDEwNDY3MCwgMTA0Njc0LCAxMDQ2NzgsIDEwNDY4MiwgMTA0Njg2LCAxMDQ2OTAsIDEwNDY5NCwgCisgICAgMTA0Njk4LCAxMDQ3MDIsIDEwNDcwNiwgMTA0NzEwLCAxMDQ3MTQsIDEwNDcxOCwgMTA0NzIyLCAxMDQ3MjYsIDEwNDczMCwgCisgICAgMTA0NzM0LCAxMDQ3MzgsIDEwNDc0MiwgMTA0NzQ2LCAxMDQ3NTAsIDEwNDc1NCwgMTA0NzU4LCAxMDQ3NjIsIDEwNDc2NiwgCisgICAgMTA0NzcwLCAxMDQ3NzQsIDEwNDc3OCwgMTA0NzgyLCAxMDQ3ODYsIDEwNDc5MCwgMTA0Nzk0LCAxMDQ3OTgsIDEwNDgwMiwgCisgICAgMTA0ODA2LCAxMDQ4MTAsIDEwNDgxNCwgMTA0ODE4LCAxMDQ4MjIsIDEwNDgyNiwgMTA0ODMwLCAxMDQ4MzQsIDEwNDgzOCwgCisgICAgMTA0ODQyLCAxMDQ4NDYsIDEwNDg1MCwgMTA0ODU0LCAxMDQ4NTgsIDEwNDg2MiwgMTA0ODY2LCAxMDQ4NzAsIDEwNDg3NCwgCisgICAgMTA0ODc4LCAxMDQ4ODIsIDEwNDg4NiwgMTA0ODkwLCAxMDQ4OTQsIDEwNDg5OCwgMTA0OTAyLCAxMDQ5MDYsIDEwNDkxMCwgCisgICAgMTA0OTE0LCAxMDQ5MTgsIDEwNDkyMiwgMTA0OTI2LCAxMDQ5MzAsIDEwNDkzNCwgMTA0OTM4LCAxMDQ5NDIsIDEwNDk0NiwgCisgICAgMTA0OTUwLCAxMDQ5NTQsIDEwNDk1OCwgMTA0OTYyLCAxMDQ5NjYsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzgsIDEwNDk4MiwgCisgICAgMTA0OTg2LCAxMDQ5OTAsIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDIsIDEwNTAwNiwgMTA1MDEwLCAxMDUwMTQsIDEwNTAxOCwgCisgICAgMTA1MDIyLCAxMDUwMjYsIDEwNTAzMCwgMTA1MDM0LCAxMDUwMzgsIDEwNTA0MiwgMTA1MDQ2LCAxMDUwNTAsIDEwNTA1NCwgCisgICAgMTA1MDU4LCAxMDUwNjIsIDEwNTA2NiwgMTA1MDcwLCAxMDUwNzQsIDEwNTA3OCwgMTA1MDgyLCAxMDUwODYsIDEwNTA5MCwgCisgICAgMTA1MDk0LCAxMDUwOTgsIDEwNTEwMiwgMTA1MTA2LCAxMDUxMTAsIDEwNTExNCwgMTA1MTE4LCAxMDUxMjIsIDEwNTEyNiwgCisgICAgMTA1MTMwLCAxMDUxMzQsIDEwNTEzOCwgMTA1MTQyLCAxMDUxNDYsIDEwNTE1MCwgMTA1MTU0LCAxMDUxNTgsIDEwNTE2MiwgCisgICAgMTA1MTY2LCAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NiwgMTA1MTkwLCAxMDUxOTQsIDEwNTE5OCwgCisgICAgMTA1MjAyLCAxMDUyMDYsIDEwNTIxMCwgMTA1MjE0LCAxMDUyMTgsIDEwNTIyMiwgMTA1MjI2LCAxMDUyMzAsIDEwNTIzNCwgCisgICAgMTA1MjM4LCAxMDUyNDIsIDEwNTI0NiwgMTA1MjUwLCAxMDUyNTQsIDEwNTI1OCwgMTA1MjYyLCAxMDUyNjYsIDEwNTI3MCwgCisgICAgMTA1Mjc0LCAxMDUyNzgsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDIsIDEwNTMwNiwgCisgICAgMTA1MzEwLCAxMDUzMTQsIDEwNTMxOCwgMTA1MzIyLCAxMDUzMjYsIDEwNTMzMCwgMTA1MzM0LCAxMDUzMzgsIDEwNTM0MiwgCisgICAgMTA1MzQ2LCAxMDUzNTAsIDEwNTM1NCwgMTA1MzU4LCAxMDUzNjIsIDEwNTM2NiwgMTA1MzcwLCAxMDUzNzQsIDEwNTM3OCwgCisgICAgMTA1MzgyLCAxMDUzODYsIDEwNTM5MCwgMTA1Mzk0LCAxMDUzOTgsIDEwNTQwMiwgMTA1NDA2LCAxMDU0MTAsIDEwNTQxNCwgCisgICAgMTA1NDE4LCAxMDU0MjIsIDEwNTQyNiwgMTA1NDMwLCAxMDU0MzQsIDEwNTQzOCwgMTA1NDQyLCAxMDU0NDYsIDEwNTQ1MCwgCisgICAgMTA1NDU0LCAxMDU0NTgsIDEwNTQ2MiwgMTA1NDY2LCAxMDU0NzAsIDEwNTQ3NCwgMTA1NDc4LCAxMDU0ODIsIDEwNTQ4NiwgCisgICAgMTA1NDkwLCAxMDU0OTQsIDEwNTQ5OCwgMTA1NTAyLCAxMDU1MDYsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTgsIDEwNTUyMiwgCisgICAgMTA1NTI2LCAxMDU1MzAsIDEwNTUzNCwgMTA1NTM4LCAxMDU1NDIsIDEwNTU0NiwgMTA1NTUwLCAxMDU1NTQsIDEwNTU1OCwgCisgICAgMTA1NTYyLCAxMDU1NjYsIDEwNTU3MCwgMTA1NTc0LCAxMDU1NzgsIDEwNTU4MiwgMTA1NTg2LCAxMDU1OTAsIDEwNTU5NCwgCisgICAgMTA1NTk4LCAxMDU2MDIsIDEwNTYwNiwgMTA1NjEwLCAxMDU2MTQsIDEwNTYxOCwgMTA1NjIyLCAxMDU2MjYsIDEwNTYzMCwgCisgICAgMTA1NjM0LCAxMDU2MzgsIDEwNTY0MiwgMTA1NjQ2LCAxMDU2NTAsIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjIsIDEwNTY2NiwgCisgICAgMTA1NjcwLCAxMDU2NzQsIDEwNTY3OCwgMTA1NjgyLCAxMDU2ODYsIDEwNTY5MCwgMTA1Njk0LCAxMDU2OTgsIDEwNTcwMiwgCisgICAgMTA1NzA2LCAxMDU3MTAsIDEwNTcxNCwgMTA1NzE4LCAxMDU3MjIsIDEwNTcyNiwgMTA1NzMwLCAxMDU3MzQsIDEwNTczOCwgCisgICAgMTA1NzQyLCAxMDU3NDYsIDEwNTc1MCwgMTA1NzU0LCAxMDU3NTgsIDEwNTc2MiwgMTA1NzY2LCAxMDU3NzAsIDEwNTc3NCwgCisgICAgMTA1Nzc4LCAxMDU3ODIsIDEwNTc4NiwgMTA1NzkwLCAxMDU3OTQsIDEwNTc5OCwgMTA1ODAyLCAxMDU4MDYsIDEwNTgxMCwgCisgICAgMTA1ODE0LCAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNCwgMTA1ODM4LCAxMDU4NDIsIDEwNTg0NiwgCisgICAgMTA1ODUwLCAxMDU4NTQsIDEwNTg1OCwgMTA1ODYyLCAxMDU4NjYsIDEwNTg3MCwgMTA1ODc0LCAxMDU4NzgsIDEwNTg4MiwgCisgICAgMTA1ODg2LCAxMDU4OTAsIDEwNTg5NCwgMTA1ODk4LCAxMDU5MDIsIDEwNTkwNiwgMTA1OTEwLCAxMDU5MTQsIDEwNTkxOCwgCisgICAgMTA1OTIyLCAxMDU5MjYsIDEwNTkzMCwgMTA1OTM0LCAxMDU5MzgsIDEwNTk0MiwgMTA1OTQ2LCAxMDU5NTAsIDEwNTk1NCwgCisgICAgMTA1OTU4LCAxMDU5NjIsIDEwNTk2NiwgMTA1OTcwLCAxMDU5NzQsIDEwNTk3OCwgMTA1OTgyLCAxMDU5ODYsIDEwNTk5MCwgCisgICAgMTA1OTk0LCAxMDU5OTgsIDEwNjAwMiwgMTA2MDA2LCAxMDYwMTAsIDEwNjAxNCwgMTA2MDE4LCAxMDYwMjIsIDEwNjAyNiwgCisgICAgMTA2MDMwLCAxMDYwMzQsIDEwNjAzOCwgMTA2MDQyLCAxMDYwNDYsIDEwNjA1MCwgMTA2MDU0LCAxMDYwNTgsIDEwNjA2MiwgCisgICAgMTA2MDY2LCAxMDYwNzAsIDEwNjA3NCwgMTA2MDc4LCAxMDYwODIsIDEwNjA4NiwgMTA2MDkwLCAxMDYwOTQsIDEwNjA5OCwgCisgICAgMTA2MTAyLCAxMDYxMDYsIDEwNjExMCwgMTA2MTE0LCAxMDYxMTgsIDEwNjEyMiwgMTA2MTI2LCAxMDYxMzAsIDEwNjEzNCwgCisgICAgMTA2MTM4LCAxMDYxNDIsIDEwNjE0NiwgMTA2MTUwLCAxMDYxNTQsIDEwNjE1OCwgMTA2MTYyLCAxMDYxNjYsIDEwNjE3MCwgCisgICAgMTA2MTc0LCAxMDYxNzgsIDEwNjE4MiwgMTA2MTg2LCAxMDYxOTAsIDEwNjE5NCwgMTA2MTk4LCAxMDYyMDIsIDEwNjIwNiwgCisgICAgMTA2MjEwLCAxMDYyMTQsIDEwNjIxOCwgMTA2MjIyLCAxMDYyMjYsIDEwNjIzMCwgMTA2MjM0LCAxMDYyMzgsIDEwNjI0MiwgCisgICAgMTA2MjQ2LCAxMDYyNTAsIDEwNjI1NCwgMTA2MjU4LCAxMDYyNjIsIDEwNjI2NiwgMTA2MjcwLCAxMDYyNzQsIDEwNjI3OCwgCisgICAgMTA2MjgyLCAxMDYyODYsIDEwNjI5MCwgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNCwgCisgICAgMTA2MzE4LCAxMDYzMjIsIDEwNjMyNiwgMTA2MzMwLCAxMDYzMzQsIDEwNjMzOCwgMTA2MzQyLCAxMDYzNDYsIDEwNjM1MCwgCisgICAgMTA2MzU0LCAxMDYzNTgsIDEwNjM2MiwgMTA2MzY2LCAxMDYzNzAsIDEwNjM3NCwgMTA2Mzc4LCAxMDYzODIsIDEwNjM4NiwgCisgICAgMTA2MzkwLCAxMDYzOTQsIDEwNjM5OCwgMTA2NDAyLCAxMDY0MDYsIDEwNjQxMCwgMTA2NDE0LCAxMDY0MTgsIDEwNjQyMiwgCisgICAgMTA2NDI2LCAxMDY0MzAsIDEwNjQzNCwgMTA2NDM4LCAxMDY0NDIsIDEwNjQ0NiwgMTA2NDUwLCAxMDY0NTQsIDEwNjQ1OCwgCisgICAgMTA2NDYyLCAxMDY0NjYsIDEwNjQ3MCwgMTA2NDc0LCAxMDY0NzgsIDEwNjQ4MiwgMTA2NDg2LCAxMDY0OTAsIDEwNjQ5NCwgCisgICAgMTA2NDk4LCAxMDY1MDIsIDEwNjUwNiwgMTA2NTEwLCAxMDY1MTQsIDEwNjUxOCwgMTA2NTIyLCAxMDY1MjYsIDEwNjUzMCwgCisgICAgMTA2NTM0LCAxMDY1MzgsIDEwNjU0MiwgMTA2NTQ2LCAxMDY1NTAsIDEwNjU1NCwgMTA2NTU4LCAxMDY1NjIsIDEwNjU2NiwgCisgICAgMTA2NTcwLCAxMDY1NzQsIDEwNjU3OCwgMTA2NTgyLCAxMDY1ODYsIDEwNjU5MCwgMTA2NTk0LCAxMDY1OTgsIDEwNjYwMiwgCisgICAgMTA2NjA2LCAxMDY2MTAsIDEwNjYxNCwgMTA2NjE4LCAxMDY2MjIsIDEwNjYyNiwgMTA2NjMwLCAxMDY2MzQsIDEwNjYzOCwgCisgICAgMTA2NjQyLCAxMDY2NDYsIDEwNjY1MCwgMTA2NjU0LCAxMDY2NTgsIDEwNjY2MiwgMTA2NjY2LCAxMDY2NzAsIDEwNjY3NCwgCisgICAgMTA2Njc4LCAxMDY2ODIsIDEwNjY4NiwgMTA2NjkwLCAxMDY2OTQsIDEwNjY5OCwgMTA2NzAyLCAxMDY3MDYsIDEwNjcxMCwgCisgICAgMTA2NzE0LCAxMDY3MTgsIDEwNjcyMiwgMTA2NzI2LCAxMDY3MzAsIDEwNjczNCwgMTA2NzM4LCAxMDY3NDIsIDEwNjc0NiwgCisgICAgMTA2NzUwLCAxMDY3NTQsIDEwNjc1OCwgMTA2NzYyLCAxMDY3NjYsIDEwNjc3MCwgMTA2Nzc0LCAxMDY3NzgsIDEwNjc4MiwgCisgICAgMTA2Nzg2LCAxMDY3OTAsIDEwNjc5NCwgMTA2Nzk4LCAxMDY4MDIsIDEwNjgwNiwgMTA2ODEwLCAxMDY4MTQsIDEwNjgxOCwgCisgICAgMTA2ODIyLCAxMDY4MjYsIDEwNjgzMCwgMTA2ODM0LCAxMDY4MzgsIDEwNjg0MiwgMTA2ODQ2LCAxMDY4NTAsIDEwNjg1NCwgCisgICAgMTA2ODU4LCAxMDY4NjIsIDEwNjg2NiwgMTA2ODcwLCAxMDY4NzQsIDEwNjg3OCwgMTA2ODgyLCAxMDY4ODYsIDEwNjg5MCwgCisgICAgMTA2ODk0LCAxMDY4OTgsIDEwNjkwMiwgMTA2OTA2LCAxMDY5MTAsIDEwNjkxNCwgMTA2OTE4LCAxMDY5MjIsIDEwNjkyNiwgCisgICAgMTA2OTMwLCAxMDY5MzQsIDEwNjkzOCwgMTA2OTQyLCAxMDY5NDYsIDEwNjk1MCwgMTA2OTU0LCAxMDY5NTgsIDEwNjk2MiwgCisgICAgMTA2OTY2LCAxMDY5NzAsIDEwNjk3NCwgMTA2OTc4LCAxMDY5ODIsIDEwNjk4NiwgMTA2OTkwLCAxMDY5OTQsIDEwNjk5OCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA0NDA4LCAxMDQ0MTUsIDEwNDQyMiwgMTA0NDMxLCAxMDQ0NDAsIDEwNDQ0NywgMTA0NDUyLCAxMDQ0NTksIAotICAgIDEwNDQ2NiwgMTA0NDc1LCAxMDQ0ODYsIDEwNDQ5NywgMTA0NTAyLCAxMDQ1MDksIDEwNDUxNCwgMTA0NTE5LCAxMDQ1MjQsIAotICAgIDEwNDUyOSwgMTA0NTM0LCAxMDQ1MzksIDEwNDU0NCwgMTA0NTQ5LCAxMDQ1NTQsIDEwNDU1OSwgMTA0NTY0LCAxMDQ1NzEsIAotICAgIDEwNDU3OCwgMTA0NTgzLCAxMDQ1ODgsIDEwNDU5MywgMTA0NTk4LCAxMDQ2MDUsIDEwNDYxMiwgMTA0NjIwLCAxMDQ2MjUsIAotICAgIDEwNDYzMiwgMTA0NjM3LCAxMDQ2NDIsIDEwNDY0NywgMTA0NjUyLCAxMDQ2NTcsIDEwNDY2NCwgMTA0NjcxLCAxMDQ2NzYsIAotICAgIDEwNDY4MSwgMTA0Njg2LCAxMDQ2OTEsIDEwNDY5NiwgMTA0NzAxLCAxMDQ3MDYsIDEwNDcxMSwgMTA0NzE2LCAxMDQ3MjEsIAotICAgIDEwNDcyNiwgMTA0NzMxLCAxMDQ3MzYsIDEwNDc0MSwgMTA0NzQ2LCAxMDQ3NTEsIDEwNDc1NiwgMTA0NzYxLCAxMDQ3NjYsIAotICAgIDEwNDc3MywgMTA0Nzc4LCAxMDQ3ODMsIDEwNDc5MiwgMTA0Nzk5LCAxMDQ4MDQsIDEwNDgwOSwgMTA0ODE0LCAxMDQ4MTksIAotICAgIDEwNDgyNCwgMTA0ODI5LCAxMDQ4MzQsIDEwNDgzOSwgMTA0ODQ0LCAxMDQ4NDksIDEwNDg1NCwgMTA0ODU5LCAxMDQ4NjQsIAotICAgIDEwNDg2OSwgMTA0ODc0LCAxMDQ4NzksIDEwNDg4NCwgMTA0ODg5LCAxMDQ4OTQsIDEwNDg5OSwgMTA0OTA0LCAxMDQ5MTAsIAotICAgIDEwNDkxOCwgMTA0OTI0LCAxMDQ5MzIsIDEwNDk0MCwgMTA0OTQ4LCAxMDQ5NTQsIDEwNDk2MCwgMTA0OTY2LCAxMDQ5NzIsIAotICAgIDEwNDk3OCwgMTA0OTg2LCAxMDQ5OTYsIDEwNTAwNCwgMTA1MDEyLCAxMDUwMTgsIDEwNTAyNCwgMTA1MDMyLCAxMDUwNDAsIAotICAgIDEwNTA0NiwgMTA1MDU0LCAxMDUwNjIsIDEwNTA3MCwgMTA1MDc2LCAxMDUwODIsIDEwNTA4OCwgMTA1MDk0LCAxMDUxMDAsIAotICAgIDEwNTEwNiwgMTA1MTE0LCAxMDUxMjIsIDEwNTEyOCwgMTA1MTM0LCAxMDUxNDAsIDEwNTE0NiwgMTA1MTUyLCAxMDUxNjAsIAotICAgIDEwNTE2NiwgMTA1MTcyLCAxMDUxNzgsIDEwNTE4NCwgMTA1MTkwLCAxMDUxOTYsIDEwNTIwNCwgMTA1MjEwLCAxMDUyMTYsIAotICAgIDEwNTIyMiwgMTA1MjI4LCAxMDUyMzYsIDEwNTI0NCwgMTA1MjUwLCAxMDUyNTYsIDEwNTI2MiwgMTA1MjY3LCAxMDUyNzMsIAotICAgIDEwNTI3OSwgMTA1Mjg2LCAxMDUyOTEsIDEwNTI5NiwgMTA1MzAxLCAxMDUzMDYsIDEwNTMxMSwgMTA1MzE2LCAxMDUzMjEsIAotICAgIDEwNTMyNiwgMTA1MzMxLCAxMDUzNDAsIDEwNTM0NywgMTA1MzUyLCAxMDUzNTcsIDEwNTM2MiwgMTA1MzY5LCAxMDUzNzQsIAotICAgIDEwNTM3OSwgMTA1Mzg0LCAxMDUzOTEsIDEwNTM5NiwgMTA1NDAxLCAxMDU0MDYsIDEwNTQxMSwgMTA1NDE2LCAxMDU0MjEsIAotICAgIDEwNTQyNiwgMTA1NDMxLCAxMDU0MzYsIDEwNTQ0MSwgMTA1NDQ2LCAxMDU0NTMsIDEwNTQ1OCwgMTA1NDY1LCAxMDU0NzAsIAotICAgIDEwNTQ3NSwgMTA1NDgyLCAxMDU0ODcsIDEwNTQ5MiwgMTA1NDk3LCAxMDU1MDIsIDEwNTUwNywgMTA1NTEyLCAxMDU1MTcsIAotICAgIDEwNTUyMiwgMTA1NTI3LCAxMDU1MzIsIDEwNTUzNywgMTA1NTQyLCAxMDU1NDcsIDEwNTU1MiwgMTA1NTU3LCAxMDU1NjIsIAotICAgIDEwNTU2NywgMTA1NTcyLCAxMDU1NzcsIDEwNTU4NCwgMTA1NTg5LCAxMDU1OTQsIDEwNTU5OSwgMTA1NjA0LCAxMDU2MDksIAotICAgIDEwNTYxNCwgMTA1NjE5LCAxMDU2MjQsIDEwNTYyOSwgMTA1NjM0LCAxMDU2MzksIDEwNTY0NCwgMTA1NjQ5LCAxMDU2NTYsIAotICAgIDEwNTY2MSwgMTA1NjY2LCAxMDU2NzMsIDEwNTY3OCwgMTA1NjgzLCAxMDU2ODgsIDEwNTY5MywgMTA1Njk4LCAxMDU3MDMsIAotICAgIDEwNTcwOCwgMTA1NzEzLCAxMDU3MTgsIDEwNTcyMywgMTA1NzMwLCAxMDU3MzUsIDEwNTc0MCwgMTA1NzQ1LCAxMDU3NTAsIAotICAgIDEwNTc1NSwgMTA1NzYyLCAxMDU3NjksIDEwNTc3NCwgMTA1Nzc5LCAxMDU3ODQsIDEwNTc4OSwgMTA1Nzk0LCAxMDU3OTksIAotICAgIDEwNTgwNCwgMTA1ODA5LCAxMDU4MTQsIDEwNTgxOSwgMTA1ODI0LCAxMDU4MjksIDEwNTgzNCwgMTA1ODM5LCAxMDU4NDQsIAotICAgIDEwNTg0OSwgMTA1ODU0LCAxMDU4NTksIDEwNTg2NCwgMTA1ODY5LCAxMDU4NzQsIDEwNTg3OSwgMTA1ODg0LCAxMDU4ODksIAotICAgIDEwNTg5NCwgMTA1ODk5LCAxMDU5MDQsIDEwNTkwOSwgMTA1OTE0LCAxMDU5MTksIDEwNTkyNCwgMTA1OTI5LCAxMDU5MzQsIAotICAgIDEwNTkzOSwgMTA1OTQ0LCAxMDU5NDksIDEwNTk1NiwgMTA1OTYxLCAxMDU5NjYsIDEwNTk3MSwgMTA1OTc2LCAxMDU5ODEsIAotICAgIDEwNTk4NiwgMTA1OTkxLCAxMDU5OTYsIDEwNjAwMSwgMTA2MDA2LCAxMDYwMTEsIDEwNjAxNiwgMTA2MDIxLCAxMDYwMjYsIAotICAgIDEwNjAzMSwgMTA2MDM2LCAxMDYwNDEsIDEwNjA0NiwgMTA2MDUxLCAxMDYwNTYsIDEwNjA2MSwgMTA2MDY2LCAxMDYwNzEsIAotICAgIDEwNjA3NiwgMTA2MDgxLCAxMDYwODYsIDEwNjA5MSwgMTA2MDk2LCAxMDYxMDEsIDEwNjEwNiwgMTA2MTExLCAxMDYxMTYsIAotICAgIDEwNjEyMSwgMTA2MTI2LCAxMDYxMzEsIDEwNjEzNiwgMTA2MTQxLCAxMDYxNDYsIDEwNjE1MSwgMTA2MTU2LCAxMDYxNjEsIAotICAgIDEwNjE2NiwgMTA2MTcxLCAxMDYxNzYsIDEwNjE4MSwgMTA2MTg2LCAxMDYxOTEsIDEwNjE5NiwgMTA2MjAxLCAxMDYyMDYsIAotICAgIDEwNjIxMSwgMTA2MjE2LCAxMDYyMjEsIDEwNjIyNiwgMTA2MjMxLCAxMDYyMzYsIDEwNjI0MSwgMTA2MjQ2LCAxMDYyNTMsIAotICAgIDEwNjI1OCwgMTA2MjYzLCAxMDYyNjgsIDEwNjI3MywgMTA2Mjc4LCAxMDYyODMsIDEwNjI4NywgMTA2MjkyLCAxMDYyOTcsIAotICAgIDEwNjMwMiwgMTA2MzA3LCAxMDYzMTIsIDEwNjMxNywgMTA2MzIyLCAxMDYzMjcsIDEwNjMzMiwgMTA2MzM3LCAxMDYzNDIsIAotICAgIDEwNjM0NywgMTA2MzUyLCAxMDYzNTcsIDEwNjM2NCwgMTA2MzY5LCAxMDYzNzQsIDEwNjM4MCwgMTA2Mzg1LCAxMDYzOTAsIAotICAgIDEwNjM5NSwgMTA2NDAwLCAxMDY0MDUsIDEwNjQxMCwgMTA2NDE1LCAxMDY0MjAsIDEwNjQyNSwgMTA2NDMwLCAxMDY0MzUsIAotICAgIDEwNjQ0MCwgMTA2NDQ1LCAxMDY0NTAsIDEwNjQ1NSwgMTA2NDYwLCAxMDY0NjUsIDEwNjQ3MCwgMTA2NDc1LCAxMDY0ODAsIAotICAgIDEwNjQ4NSwgMTA2NDkwLCAxMDY0OTUsIDEwNjUwMCwgMTA2NTA1LCAxMDY1MTAsIDEwNjUxNSwgMTA2NTIwLCAxMDY1MjUsIAotICAgIDEwNjUzMCwgMTA2NTM1LCAxMDY1NDAsIDEwNjU0NSwgMTA2NTUwLCAxMDY1NTUsIDEwNjU2MCwgMTA2NTY1LCAxMDY1NzAsIAotICAgIDEwNjU3NSwgMTA2NTgwLCAxMDY1ODUsIDEwNjU5MCwgMTA2NTk1LCAxMDY2MDIsIDEwNjYwNywgMTA2NjEyLCAxMDY2MTksIAotICAgIDEwNjYyNiwgMTA2NjMxLCAxMDY2MzYsIDEwNjY0MSwgMTA2NjQ2LCAxMDY2NTEsIDEwNjY1NiwgMTA2NjYxLCAxMDY2NjYsIAotICAgIDEwNjY3MSwgMTA2Njc2LCAxMDY2ODEsIDEwNjY4NiwgMTA2NjkxLCAxMDY2OTYsIDEwNjcwMSwgMTA2NzA2LCAxMDY3MTEsIAotICAgIDEwNjcxNiwgMTA2NzIxLCAxMDY3MjYsIDEwNjczMSwgMTA2NzM2LCAxMDY3NDEsIDEwNjc0NiwgMTA2NzUxLCAxMDY3NTgsIAotICAgIDEwNjc2MywgMTA2NzY4LCAxMDY3NzMsIDEwNjc3OCwgMTA2NzgzLCAxMDY3ODgsIDEwNjc5MywgMTA2Nzk4LCAxMDY4MDMsIAotICAgIDEwNjgwOCwgMTA2ODEzLCAxMDY4MTgsIDEwNjgyMywgMTA2ODI4LCAxMDY4MzMsIDEwNjgzOCwgMTA2ODQzLCAxMDY4NDgsIAotICAgIDEwNjg1NSwgMTA2ODYwLCAxMDY4NjUsIDEwNjg3MCwgMTA2ODc1LCAxMDY4ODAsIDEwNjg4NSwgMTA2ODkwLCAxMDY4OTYsIAotICAgIDEwNjkwMSwgMTA2OTA2LCAxMDY5MTEsIDEwNjkxNiwgMTA2OTIxLCAxMDY5MjYsIDEwNjkzMSwgMTA2OTM2LCAxMDY5NDMsIAotICAgIDEwNjk1MCwgMTA2OTU1LCAxMDY5NjAsIDEwNjk2NCwgMTA2OTY5LCAxMDY5NzMsIDEwNjk3NywgMTA2OTgyLCAxMDY5ODksIAotICAgIDEwNjk5NCwgMTA2OTk5LCAxMDcwMDgsIDEwNzAxMywgMTA3MDE4LCAxMDcwMjMsIDEwNzAyOCwgMTA3MDM1LCAxMDcwNDIsIAotICAgIDEwNzA0NywgMTA3MDUyLCAxMDcwNTcsIDEwNzA2MiwgMTA3MDY5LCAxMDcwNzQsIDEwNzA3OSwgMTA3MDg0LCAxMDcwODksIAotICAgIDEwNzA5NCwgMTA3MDk5LCAxMDcxMDQsIDEwNzEwOSwgMTA3MTE0LCAxMDcxMTksIDEwNzEyNCwgMTA3MTI5LCAxMDcxMzYsIAotICAgIDEwNzE0MCwgMTA3MTQ1LCAxMDcxNTAsIDEwNzE1NSwgMTA3MTYwLCAxMDcxNjQsIDEwNzE2OSwgMTA3MTc0LCAxMDcxNzksIAotICAgIDEwNzE4NCwgMTA3MTg5LCAxMDcxOTQsIDEwNzE5OSwgMTA3MjA0LCAxMDcyMDksIDEwNzIxNSwgMTA3MjIxLCAxMDcyMjcsIAotICAgIDEwNzIzMywgMTA3MjM5LCAxMDcyNDUsIDEwNzI1MSwgMTA3MjU3LCAxMDcyNjMsIDEwNzI2OSwgMTA3Mjc1LCAxMDcyODEsIAotICAgIDEwNzI4NiwgMTA3MjkyLCAxMDcyOTgsIDEwNzMwNCwgMTA3MzEwLCAxMDczMTYsIDEwNzMyMiwgMTA3MzI4LCAxMDczMzQsIAotICAgIDEwNzM0MCwgMTA3MzQ2LCAxMDczNTIsIDEwNzM1NywgMTA3MzYzLCAxMDczNjksIDEwNzM3NSwgMTA3MzgxLCAxMDczODcsIAotICAgIDEwNzM5MywgMTA3Mzk5LCAxMDc0MDUsIDEwNzQxMSwgMTA3NDE3LCAxMDc0MjMsIDEwNzQyOSwgMTA3NDM1LCAxMDc0NDEsIAotICAgIDEwNzQ0NywgMTA3NDUzLCAxMDc0NTksIDEwNzQ2NSwgMTA3NDcxLCAxMDc0NzcsIDEwNzQ4MiwgMTA3NDg4LCAxMDc0OTQsIAotICAgIDEwNzUwMCwgMTA3NTA2LCAxMDc1MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzAwMiwgMTA3MDA5LCAxMDcwMTYsIDEwNzAyNSwgMTA3MDM0LCAKKyAgICAxMDcwNDEsIDEwNzA0NiwgMTA3MDUzLCAxMDcwNjAsIDEwNzA2OSwgMTA3MDgwLCAxMDcwOTEsIDEwNzA5NiwgMTA3MTAzLCAKKyAgICAxMDcxMDgsIDEwNzExMywgMTA3MTE4LCAxMDcxMjMsIDEwNzEyOCwgMTA3MTMzLCAxMDcxMzgsIDEwNzE0MywgMTA3MTQ4LCAKKyAgICAxMDcxNTMsIDEwNzE1OCwgMTA3MTY1LCAxMDcxNzIsIDEwNzE3NywgMTA3MTgyLCAxMDcxODcsIDEwNzE5MiwgMTA3MTk5LCAKKyAgICAxMDcyMDYsIDEwNzIxNCwgMTA3MjE5LCAxMDcyMjYsIDEwNzIzMSwgMTA3MjM2LCAxMDcyNDEsIDEwNzI0NiwgMTA3MjUxLCAKKyAgICAxMDcyNTgsIDEwNzI2NSwgMTA3MjcwLCAxMDcyNzUsIDEwNzI4MCwgMTA3Mjg1LCAxMDcyOTAsIDEwNzI5NSwgMTA3MzAwLCAKKyAgICAxMDczMDUsIDEwNzMxMCwgMTA3MzE1LCAxMDczMjAsIDEwNzMyNSwgMTA3MzMwLCAxMDczMzUsIDEwNzM0MCwgMTA3MzQ1LCAKKyAgICAxMDczNTAsIDEwNzM1NSwgMTA3MzYwLCAxMDczNjcsIDEwNzM3MiwgMTA3Mzc3LCAxMDczODYsIDEwNzM5MywgMTA3Mzk4LCAKKyAgICAxMDc0MDMsIDEwNzQwOCwgMTA3NDEzLCAxMDc0MTgsIDEwNzQyMywgMTA3NDI4LCAxMDc0MzMsIDEwNzQzOCwgMTA3NDQzLCAKKyAgICAxMDc0NDgsIDEwNzQ1MywgMTA3NDU4LCAxMDc0NjMsIDEwNzQ2OCwgMTA3NDczLCAxMDc0NzgsIDEwNzQ4MywgMTA3NDg4LCAKKyAgICAxMDc0OTMsIDEwNzQ5OCwgMTA3NTA0LCAxMDc1MTIsIDEwNzUxOCwgMTA3NTI2LCAxMDc1MzQsIDEwNzU0MiwgMTA3NTQ4LCAKKyAgICAxMDc1NTQsIDEwNzU2MCwgMTA3NTY2LCAxMDc1NzIsIDEwNzU4MCwgMTA3NTkwLCAxMDc1OTgsIDEwNzYwNiwgMTA3NjEyLCAKKyAgICAxMDc2MTgsIDEwNzYyNiwgMTA3NjM0LCAxMDc2NDAsIDEwNzY0OCwgMTA3NjU2LCAxMDc2NjQsIDEwNzY3MCwgMTA3Njc2LCAKKyAgICAxMDc2ODIsIDEwNzY4OCwgMTA3Njk0LCAxMDc3MDAsIDEwNzcwOCwgMTA3NzE2LCAxMDc3MjIsIDEwNzcyOCwgMTA3NzM0LCAKKyAgICAxMDc3NDAsIDEwNzc0NiwgMTA3NzU0LCAxMDc3NjAsIDEwNzc2NiwgMTA3NzcyLCAxMDc3NzgsIDEwNzc4NCwgMTA3NzkwLCAKKyAgICAxMDc3OTgsIDEwNzgwNCwgMTA3ODEwLCAxMDc4MTYsIDEwNzgyMiwgMTA3ODMwLCAxMDc4MzgsIDEwNzg0NCwgMTA3ODUwLCAKKyAgICAxMDc4NTYsIDEwNzg2MSwgMTA3ODY3LCAxMDc4NzMsIDEwNzg4MCwgMTA3ODg1LCAxMDc4OTAsIDEwNzg5NSwgMTA3OTAwLCAKKyAgICAxMDc5MDUsIDEwNzkxMCwgMTA3OTE1LCAxMDc5MjAsIDEwNzkyNSwgMTA3OTM0LCAxMDc5NDEsIDEwNzk0NiwgMTA3OTUxLCAKKyAgICAxMDc5NTYsIDEwNzk2MywgMTA3OTY4LCAxMDc5NzMsIDEwNzk3OCwgMTA3OTg1LCAxMDc5OTAsIDEwNzk5NSwgMTA4MDAwLCAKKyAgICAxMDgwMDUsIDEwODAxMCwgMTA4MDE1LCAxMDgwMjAsIDEwODAyNSwgMTA4MDMwLCAxMDgwMzUsIDEwODA0MCwgMTA4MDQ3LCAKKyAgICAxMDgwNTIsIDEwODA1OSwgMTA4MDY0LCAxMDgwNjksIDEwODA3NiwgMTA4MDgxLCAxMDgwODYsIDEwODA5MSwgMTA4MDk2LCAKKyAgICAxMDgxMDEsIDEwODEwNiwgMTA4MTExLCAxMDgxMTYsIDEwODEyMSwgMTA4MTI2LCAxMDgxMzEsIDEwODEzNiwgMTA4MTQxLCAKKyAgICAxMDgxNDYsIDEwODE1MSwgMTA4MTU2LCAxMDgxNjEsIDEwODE2NiwgMTA4MTcxLCAxMDgxNzgsIDEwODE4MywgMTA4MTg4LCAKKyAgICAxMDgxOTMsIDEwODE5OCwgMTA4MjAzLCAxMDgyMDgsIDEwODIxMywgMTA4MjE4LCAxMDgyMjMsIDEwODIyOCwgMTA4MjMzLCAKKyAgICAxMDgyMzgsIDEwODI0MywgMTA4MjUwLCAxMDgyNTUsIDEwODI2MCwgMTA4MjY3LCAxMDgyNzIsIDEwODI3NywgMTA4MjgyLCAKKyAgICAxMDgyODcsIDEwODI5MiwgMTA4Mjk3LCAxMDgzMDIsIDEwODMwNywgMTA4MzEyLCAxMDgzMTcsIDEwODMyNCwgMTA4MzI5LCAKKyAgICAxMDgzMzQsIDEwODMzOSwgMTA4MzQ0LCAxMDgzNDksIDEwODM1NiwgMTA4MzYzLCAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAKKyAgICAxMDgzODMsIDEwODM4OCwgMTA4MzkzLCAxMDgzOTgsIDEwODQwMywgMTA4NDA4LCAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAKKyAgICAxMDg0MjgsIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUzLCAxMDg0NTgsIDEwODQ2MywgMTA4NDY4LCAKKyAgICAxMDg0NzMsIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDEwODQ5MywgMTA4NDk4LCAxMDg1MDMsIDEwODUwOCwgMTA4NTEzLCAKKyAgICAxMDg1MTgsIDEwODUyMywgMTA4NTI4LCAxMDg1MzMsIDEwODUzOCwgMTA4NTQzLCAxMDg1NTAsIDEwODU1NSwgMTA4NTYwLCAKKyAgICAxMDg1NjUsIDEwODU3MCwgMTA4NTc1LCAxMDg1ODAsIDEwODU4NSwgMTA4NTkwLCAxMDg1OTUsIDEwODYwMCwgMTA4NjA1LCAKKyAgICAxMDg2MTAsIDEwODYxNSwgMTA4NjIwLCAxMDg2MjUsIDEwODYzMCwgMTA4NjM1LCAxMDg2NDAsIDEwODY0NSwgMTA4NjUwLCAKKyAgICAxMDg2NTUsIDEwODY2MCwgMTA4NjY1LCAxMDg2NzAsIDEwODY3NSwgMTA4NjgwLCAxMDg2ODUsIDEwODY5MCwgMTA4Njk1LCAKKyAgICAxMDg3MDAsIDEwODcwNSwgMTA4NzEwLCAxMDg3MTUsIDEwODcyMCwgMTA4NzI1LCAxMDg3MzAsIDEwODczNSwgMTA4NzQwLCAKKyAgICAxMDg3NDUsIDEwODc1MCwgMTA4NzU1LCAxMDg3NjAsIDEwODc2NSwgMTA4NzcwLCAxMDg3NzUsIDEwODc4MCwgMTA4Nzg1LCAKKyAgICAxMDg3OTAsIDEwODc5NSwgMTA4ODAwLCAxMDg4MDUsIDEwODgxMCwgMTA4ODE1LCAxMDg4MjAsIDEwODgyNSwgMTA4ODMwLCAKKyAgICAxMDg4MzUsIDEwODg0MCwgMTA4ODQ3LCAxMDg4NTIsIDEwODg1NywgMTA4ODYyLCAxMDg4NjcsIDEwODg3MiwgMTA4ODc3LCAKKyAgICAxMDg4ODEsIDEwODg4NiwgMTA4ODkxLCAxMDg4OTYsIDEwODkwMSwgMTA4OTA2LCAxMDg5MTEsIDEwODkxNiwgMTA4OTIxLCAKKyAgICAxMDg5MjYsIDEwODkzMSwgMTA4OTM2LCAxMDg5NDEsIDEwODk0NiwgMTA4OTUxLCAxMDg5NTgsIDEwODk2MywgMTA4OTY4LCAKKyAgICAxMDg5NzQsIDEwODk3OSwgMTA4OTg0LCAxMDg5ODksIDEwODk5NCwgMTA4OTk5LCAxMDkwMDQsIDEwOTAwOSwgMTA5MDE0LCAKKyAgICAxMDkwMTksIDEwOTAyNCwgMTA5MDI5LCAxMDkwMzQsIDEwOTAzOSwgMTA5MDQ0LCAxMDkwNDksIDEwOTA1NCwgMTA5MDU5LCAKKyAgICAxMDkwNjQsIDEwOTA2OSwgMTA5MDc0LCAxMDkwNzksIDEwOTA4NCwgMTA5MDg5LCAxMDkwOTQsIDEwOTA5OSwgMTA5MTA0LCAKKyAgICAxMDkxMDksIDEwOTExNCwgMTA5MTE5LCAxMDkxMjQsIDEwOTEyOSwgMTA5MTM0LCAxMDkxMzksIDEwOTE0NCwgMTA5MTQ5LCAKKyAgICAxMDkxNTQsIDEwOTE1OSwgMTA5MTY0LCAxMDkxNjksIDEwOTE3NCwgMTA5MTc5LCAxMDkxODQsIDEwOTE4OSwgMTA5MTk2LCAKKyAgICAxMDkyMDEsIDEwOTIwNiwgMTA5MjEzLCAxMDkyMjAsIDEwOTIyNSwgMTA5MjMwLCAxMDkyMzUsIDEwOTI0MCwgMTA5MjQ1LCAKKyAgICAxMDkyNTAsIDEwOTI1NSwgMTA5MjYwLCAxMDkyNjUsIDEwOTI3MCwgMTA5Mjc1LCAxMDkyODAsIDEwOTI4NSwgMTA5MjkwLCAKKyAgICAxMDkyOTUsIDEwOTMwMCwgMTA5MzA1LCAxMDkzMTAsIDEwOTMxNSwgMTA5MzIwLCAxMDkzMjUsIDEwOTMzMCwgMTA5MzM1LCAKKyAgICAxMDkzNDAsIDEwOTM0NSwgMTA5MzUyLCAxMDkzNTcsIDEwOTM2MiwgMTA5MzY3LCAxMDkzNzIsIDEwOTM3NywgMTA5MzgyLCAKKyAgICAxMDkzODcsIDEwOTM5MiwgMTA5Mzk3LCAxMDk0MDIsIDEwOTQwNywgMTA5NDEyLCAxMDk0MTcsIDEwOTQyMiwgMTA5NDI3LCAKKyAgICAxMDk0MzIsIDEwOTQzNywgMTA5NDQyLCAxMDk0NDksIDEwOTQ1NCwgMTA5NDU5LCAxMDk0NjQsIDEwOTQ2OSwgMTA5NDc0LCAKKyAgICAxMDk0NzksIDEwOTQ4NCwgMTA5NDkwLCAxMDk0OTUsIDEwOTUwMCwgMTA5NTA1LCAxMDk1MTAsIDEwOTUxNSwgMTA5NTIwLCAKKyAgICAxMDk1MjUsIDEwOTUzMCwgMTA5NTM3LCAxMDk1NDQsIDEwOTU0OSwgMTA5NTU0LCAxMDk1NTgsIDEwOTU2MywgMTA5NTY3LCAKKyAgICAxMDk1NzEsIDEwOTU3NiwgMTA5NTgzLCAxMDk1ODgsIDEwOTU5MywgMTA5NjAyLCAxMDk2MDcsIDEwOTYxMiwgMTA5NjE3LCAKKyAgICAxMDk2MjIsIDEwOTYyOSwgMTA5NjM2LCAxMDk2NDEsIDEwOTY0NiwgMTA5NjUxLCAxMDk2NTYsIDEwOTY2MywgMTA5NjY4LCAKKyAgICAxMDk2NzMsIDEwOTY3OCwgMTA5NjgzLCAxMDk2ODgsIDEwOTY5MywgMTA5Njk4LCAxMDk3MDMsIDEwOTcwOCwgMTA5NzEzLCAKKyAgICAxMDk3MTgsIDEwOTcyMywgMTA5NzMwLCAxMDk3MzQsIDEwOTczOSwgMTA5NzQ0LCAxMDk3NDksIDEwOTc1NCwgMTA5NzU4LCAKKyAgICAxMDk3NjMsIDEwOTc2OCwgMTA5NzczLCAxMDk3NzgsIDEwOTc4MywgMTA5Nzg4LCAxMDk3OTMsIDEwOTc5OCwgMTA5ODAzLCAKKyAgICAxMDk4MDksIDEwOTgxNSwgMTA5ODIxLCAxMDk4MjcsIDEwOTgzMywgMTA5ODM5LCAxMDk4NDUsIDEwOTg1MSwgMTA5ODU3LCAKKyAgICAxMDk4NjMsIDEwOTg2OSwgMTA5ODc1LCAxMDk4ODAsIDEwOTg4NiwgMTA5ODkyLCAxMDk4OTgsIDEwOTkwNCwgMTA5OTEwLCAKKyAgICAxMDk5MTYsIDEwOTkyMiwgMTA5OTI4LCAxMDk5MzQsIDEwOTk0MCwgMTA5OTQ2LCAxMDk5NTEsIDEwOTk1NywgMTA5OTYzLCAKKyAgICAxMDk5NjksIDEwOTk3NSwgMTA5OTgxLCAxMDk5ODcsIDEwOTk5MywgMTA5OTk5LCAxMTAwMDUsIDExMDAxMSwgMTEwMDE3LCAKKyAgICAxMTAwMjMsIDExMDAyOSwgMTEwMDM1LCAxMTAwNDEsIDExMDA0NywgMTEwMDUzLCAxMTAwNTksIDExMDA2NSwgMTEwMDcxLCAKKyAgICAxMTAwNzYsIDExMDA4MiwgMTEwMDg4LCAxMTAwOTQsIDExMDEwMCwgMTEwMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDc1MTgsIDEwNzUyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTEyLCAxMTAxMTUsIDExMDExOSwgCisgICAgMTEwMTIzLCAxMTAxMjcsIDExMDEzMCwgMTEwMTM0LCAxMTAxMzksIDExMDE0MywgMTEwMTQ3LCAxMTAxNTEsIDExMDE1NSwgCisgICAgMTEwMTU5LCAxMTAxNjQsIDExMDE2OSwgMTEwMTczLCAxMTAxNzcsIDExMDE4MCwgMTEwMTg0LCAxMTAxODksIDExMDE5NCwgCisgICAgMTEwMTk4LCAxMTAyMDIsIDExMDIwNiwgMTEwMjEwLCAxMTAyMTQsIDExMDIxOCwgMTEwMjIyLCAxMTAyMjYsIDExMDIzMCwgCisgICAgMTEwMjM0LCAxMTAyMzcsIDExMDI0MSwgMTEwMjQ1LCAxMTAyNDksIDExMDI1MywgMTEwMjU3LCAxMTAyNjEsIDExMDI2NywgCisgICAgMTEwMjcwLCAxMTAyNzQsIDExMDI3OCwgMTEwMjgyLCAxMTAyODYsIDExMDI5MCwgMTEwMjk0LCAxMTAyOTgsIDExMDMwMiwgCisgICAgMTEwMzA2LCAxMTAzMTEsIDExMDMxNiwgMTEwMzIyLCAxMTAzMjYsIDExMDMzMCwgMTEwMzM0LCAxMTAzMzgsIDExMDM0MiwgCisgICAgMTEwMzQ2LCAxMTAzNTEsIDExMDM1NCwgMTEwMzU4LCAxMTAzNjIsIDExMDM2NiwgMTEwMzcwLCAxMTAzNzYsIDExMDM4MCwgCisgICAgMTEwMzg0LCAxMTAzODgsIDExMDM5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMzk2LCAxMTA0MDAsIAorICAgIDExMDQwNCwgMTEwNDEwLCAxMTA0MTYsIDExMDQyMCwgMTEwNDI1LCAxMTA0MzAsIDExMDQzNSwgMTEwNDQwLCAxMTA0NDQsIAorICAgIDExMDQ0OSwgMTEwNDU0LCAxMTA0NTksIDExMDQ2MywgMTEwNDY4LCAxMTA0NzMsIDExMDQ3OCwgMTEwNDgyLCAxMTA0ODcsIAorICAgIDExMDQ5MiwgMTEwNDk3LCAxMTA1MDIsIDExMDUwNywgMTEwNTEyLCAxMTA1MTcsIDExMDUyMiwgMTEwNTI2LCAxMTA1MzEsIAorICAgIDExMDUzNiwgMTEwNTQxLCAxMTA1NDYsIDExMDU1MSwgMTEwNTU2LCAxMTA1NjEsIDExMDU2NiwgMTEwNTcxLCAxMTA1NzYsIAorICAgIDExMDU4MSwgMTEwNTg4LCAxMTA1OTMsIDExMDYwMCwgMTEwNjA1LCAxMTA2MTAsIDExMDYxNSwgMTEwNjIwLCAxMTA2MjUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDYzMCwgMTEwNjM0LCAxMTA2NDAsIAorICAgIDExMDY0MywgMTEwNjQ2LCAxMTA2NTAsIDExMDY1NCwgMTEwNjU4LCAxMTA2NjIsIDExMDY2NiwgMTEwNjcwLCAxMTA2NzQsIAorICAgIDExMDY4MCwgMTEwNjg2LCAxMTA2OTIsIDExMDY5OCwgMTEwNzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDc1MjksIDEwNzUzNCwgCi0gICAgMTA3NTM5LCAxMDc1NDQsIDEwNzU1MSwgMTA3NTU4LCAxMDc1NjUsIDEwNzU3MiwgMTA3NTc3LCAxMDc1ODIsIDEwNzU4NywgCi0gICAgMTA3NTkyLCAxMDc1OTksIDEwNzYwNCwgMTA3NjExLCAxMDc2MTgsIDEwNzYyMywgMTA3NjI4LCAxMDc2MzMsIDEwNzY0MCwgCi0gICAgMTA3NjQ1LCAxMDc2NTAsIDEwNzY1NywgMTA3NjY0LCAxMDc2NjksIDEwNzY3NCwgMTA3Njc5LCAxMDc2ODYsIDEwNzY5MywgCi0gICAgMTA3NzAwLCAxMDc3MDUsIDEwNzcxMCwgMTA3NzE3LCAxMDc3MjQsIDEwNzczMSwgMTA3NzM4LCAxMDc3NDMsIDEwNzc0OCwgCi0gICAgMTA3NzUzLCAxMDc3NjAsIDEwNzc2NSwgMTA3NzcwLCAxMDc3NzUsIDEwNzc4MiwgMTA3NzkxLCAxMDc3OTgsIDEwNzgwMywgCi0gICAgMTA3ODA4LCAxMDc4MTMsIDEwNzgxOCwgMTA3ODIzLCAxMDc4MjgsIDEwNzgzNywgMTA3ODQ0LCAxMDc4NDksIDEwNzg1NiwgCi0gICAgMTA3ODYzLCAxMDc4NjgsIDEwNzg3MywgMTA3ODc4LCAxMDc4ODUsIDEwNzg5MCwgMTA3ODk3LCAxMDc5MDQsIDEwNzkwOSwgCi0gICAgMTA3OTE0LCAxMDc5MTksIDEwNzkyNiwgMTA3OTMzLCAxMDc5MzgsIDEwNzk0MywgMTA3OTUwLCAxMDc5NTcsIDEwNzk2NCwgCi0gICAgMTA3OTY5LCAxMDc5NzQsIDEwNzk3OSwgMTA3OTg0LCAxMDc5OTEsIDEwODAwMCwgMTA4MDA5LCAxMDgwMTQsIDEwODAyMSwgCi0gICAgMTA4MDMwLCAxMDgwMzUsIDEwODA0MCwgMTA4MDQ1LCAxMDgwNTAsIDEwODA1NywgMTA4MDY0LCAxMDgwNzEsIDEwODA3OCwgCi0gICAgMTA4MDgzLCAxMDgwODgsIDEwODA5MywgMTA4MTAwLCAxMDgxMDcsIDEwODExNCwgMTA4MTE5LCAxMDgxMjQsIDEwODEzMSwgCi0gICAgMTA4MTM2LCAxMDgxNDMsIDEwODE0OCwgMTA4MTU1LCAxMDgxNjAsIDEwODE2NywgMTA4MTc0LCAxMDgxNzksIDEwODE4NCwgCi0gICAgMTA4MTg5LCAxMDgxOTQsIDEwODE5OSwgMTA4MjA0LCAxMDgyMDksIDEwODIxNCwgMTA4MjE5LCAxMDgyMjYsIDEwODIzMywgCi0gICAgMTA4MjQwLCAxMDgyNDcsIDEwODI1NCwgMTA4MjYzLCAxMDgyNjgsIDEwODI3MywgMTA4MjgwLCAxMDgyODcsIDEwODI5MiwgCi0gICAgMTA4Mjk5LCAxMDgzMDYsIDEwODMxMywgMTA4MzIwLCAxMDgzMjcsIDEwODMzNCwgMTA4MzM5LCAxMDgzNDQsIDEwODM0OSwgCi0gICAgMTA4MzU0LCAxMDgzNTksIDEwODM2OCwgMTA4Mzc3LCAxMDgzODYsIDEwODM5NSwgMTA4NDA0LCAxMDg0MTMsIDEwODQyMiwgCi0gICAgMTA4NDMxLCAxMDg0MzYsIDEwODQ0NywgMTA4NDU4LCAxMDg0NjcsIDEwODQ3MiwgMTA4NDc3LCAxMDg0ODIsIDEwODQ4NywgCi0gICAgMTA4NDk2LCAxMDg1MDMsIDEwODUxMCwgMTA4NTE3LCAxMDg1MjQsIDEwODUzMSwgMTA4NTM4LCAxMDg1NDcsIDEwODU1NiwgCi0gICAgMTA4NTY3LCAxMDg1NzYsIDEwODU4NywgMTA4NTk2LCAxMDg2MDMsIDEwODYxMiwgMTA4NjIzLCAxMDg2MzIsIDEwODY0MSwgCi0gICAgMTA4NjUwLCAxMDg2NTksIDEwODY2NiwgMTA4NjczLCAxMDg2ODAsIDEwODY4OSwgMTA4Njk4LCAxMDg3MDksIDEwODcxOCwgCi0gICAgMTA4NzI3LCAxMDg3MzgsIDEwODc0MywgMTA4NzQ4LCAxMDg3NTksIDEwODc2NywgMTA4Nzc2LCAxMDg3ODUsIDEwODc5NCwgCi0gICAgMTA4ODA1LCAxMDg4MTQsIDEwODgyMywgMTA4ODM0LCAxMDg4NDUsIDEwODg1NiwgMTA4ODY3LCAxMDg4NzgsIDEwODg4OSwgCi0gICAgMTA4ODk2LCAxMDg5MDMsIDEwODkxMCwgMTA4OTE3LCAxMDg5MjgsIDEwODkzNywgMTA4OTQ0LCAxMDg5NTEsIDEwODk1OCwgCi0gICAgMTA4OTY5LCAxMDg5ODAsIDEwODk5MSwgMTA5MDAyLCAxMDkwMTMsIDEwOTAyNCwgMTA5MDM1LCAxMDkwNDYsIDEwOTA1MywgCi0gICAgMTA5MDYwLCAxMDkwNjksIDEwOTA3OCwgMTA5MDg1LCAxMDkwOTIsIDEwOTA5OSwgMTA5MTA4LCAxMDkxMTcsIDEwOTEyNiwgCi0gICAgMTA5MTMzLCAxMDkxNDIsIDEwOTE1MSwgMTA5MTYwLCAxMDkxNjcsIDEwOTE3NCwgMTA5MTc5LCAxMDkxODUsIDEwOTE5MiwgCi0gICAgMTA5MTk5LCAxMDkyMDYsIDEwOTIxMywgMTA5MjIwLCAxMDkyMjcsIDEwOTIzNiwgMTA5MjQ1LCAxMDkyNTQsIDEwOTI2MywgCi0gICAgMTA5MjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDkyNzksIDEwOTI4NSwgMTA5MjkwLCAxMDkyOTUsIAotICAgIDEwOTMwMiwgMTA5MzA4LCAxMDkzMTQsIDEwOTMyMCwgMTA5MzI2LCAxMDkzMzIsIDEwOTMzOCwgMTA5MzQ0LCAxMDkzNDgsIAotICAgIDEwOTM1MiwgMTA5MzU4LCAxMDkzNjQsIDEwOTM3MCwgMTA5Mzc0LCAxMDkzNzksIDEwOTM4NCwgMTA5Mzg4LCAxMDkzOTIsIAotICAgIDEwOTM5NSwgMTA5NDAxLCAxMDk0MDcsIDEwOTQxMywgMTA5NDE5LCAxMDk0MjUsIDEwOTQzMSwgMTA5NDM3LCAxMDk0NDMsIAotICAgIDEwOTQ0OSwgMTA5NDU5LCAxMDk0NjksIDEwOTQ3NSwgMTA5NDgxLCAxMDk0OTEsIDEwOTUwMSwgMTA5NTA3LCAwLCAwLCAKLSAgICAxMDk1MTMsIDEwOTUyMSwgMTA5NTI2LCAxMDk1MzEsIDEwOTUzNywgMTA5NTQzLCAxMDk1NDksIDEwOTU1NSwgMTA5NTYxLCAKLSAgICAxMDk1NjcsIDEwOTU3NCwgMTA5NTgxLCAxMDk1ODcsIDEwOTU5MywgMTA5NTk5LCAxMDk2MDUsIDEwOTYxMSwgMTA5NjE3LCAKLSAgICAxMDk2MjMsIDEwOTYyOSwgMTA5NjM0LCAxMDk2NDAsIDEwOTY0NiwgMTA5NjUyLCAxMDk2NTgsIDEwOTY2NCwgMTA5NjczLCAKLSAgICAxMDk2NzksIDEwOTY4NCwgMTA5NjkyLCAxMDk2OTksIDEwOTcwNiwgMTA5NzE1LCAxMDk3MjQsIDEwOTczMywgMTA5NzQyLCAKLSAgICAxMDk3NTEsIDEwOTc2MCwgMTA5NzY5LCAxMDk3NzgsIDEwOTc4OCwgMTA5Nzk4LCAxMDk4MDYsIDEwOTgxNCwgMTA5ODIzLCAKLSAgICAxMDk4MzIsIDEwOTgzOCwgMTA5ODQ0LCAxMDk4NTAsIDEwOTg1NiwgMTA5ODY0LCAxMDk4NzIsIDEwOTg3NiwgMTA5ODgyLCAKLSAgICAxMDk4ODcsIDEwOTg5MywgMTA5ODk5LCAxMDk5MDUsIDEwOTkxMSwgMTA5OTE3LCAxMDk5MjYsIDEwOTkzMSwgMTA5OTM4LCAKLSAgICAxMDk5NDMsIDEwOTk0OCwgMTA5OTUzLCAxMDk5NTksIDEwOTk2NSwgMTA5OTcxLCAxMDk5NzgsIDEwOTk4MywgMTA5OTg4LCAKLSAgICAxMDk5OTMsIDEwOTk5OCwgMTEwMDAzLCAxMTAwMDksIDExMDAxNSwgMTEwMDIxLCAxMTAwMjcsIDExMDAzMywgMTEwMDM5LCAKLSAgICAxMTAwNDUsIDExMDA1MSwgMTEwMDU2LCAxMTAwNjEsIDExMDA2NiwgMTEwMDcxLCAxMTAwNzYsIDExMDA4MSwgMTEwMDg2LCAKLSAgICAxMTAwOTEsIDExMDA5NywgMTEwMTAzLCAxMTAxMDgsIDExMDExMywgMTEwMTE4LCAxMTAxMjMsIDExMDEyOCwgMTEwMTM0LCAKLSAgICAxMTAxNDEsIDExMDE0NSwgMTEwMTQ5LCAxMTAxNTMsIDExMDE1NywgMTEwMTYxLCAxMTAxNjUsIDExMDE2OSwgMTEwMTczLCAKLSAgICAxMTAxODEsIDExMDE5MSwgMTEwMTk1LCAxMTAxOTksIDExMDIwNSwgMTEwMjExLCAxMTAyMTcsIDExMDIyMywgMTEwMjI5LCAKLSAgICAxMTAyMzUsIDExMDI0MSwgMTEwMjQ3LCAxMTAyNTMsIDExMDI1OSwgMTEwMjY1LCAxMTAyNzEsIDExMDI3NywgMTEwMjgzLCAKLSAgICAxMTAyODcsIDExMDI5MSwgMTEwMjk4LCAxMTAzMDQsIDExMDMxMCwgMTEwMzE2LCAxMTAzMjEsIDExMDMyOCwgMTEwMzMzLCAKLSAgICAxMTAzMzksIDExMDM0NSwgMTEwMzUxLCAxMTAzNTcsIDExMDM2MiwgMTEwMzY2LCAxMTAzNzIsIDExMDM3NiwgMTEwMzgwLCAKLSAgICAxMTAzODQsIDExMDM5MCwgMTEwMzk2LCAxMTA0MDAsIDExMDQwNiwgMTEwNDEyLCAxMTA0MTgsIDExMDQyNCwgMTEwNDMwLCAKLSAgICAxMTA0MzgsIDExMDQ0NiwgMTEwNDUyLCAxMTA0NTgsIDExMDQ2NCwgMTEwNDcwLCAxMTA0ODIsIDExMDQ5NCwgMTEwNTA4LCAKLSAgICAxMTA1MjAsIDExMDUzMiwgMTEwNTQ2LCAxMTA1NjAsIDExMDU3NCwgMTEwNTc4LCAxMTA1ODYsIDExMDU5NCwgMTEwNTk5LCAKLSAgICAxMTA2MDMsIDExMDYwNywgMTEwNjExLCAxMTA2MTUsIDExMDYxOSwgMTEwNjIzLCAxMTA2MjcsIDExMDYzMywgMTEwNjM5LCAKLSAgICAxMTA2NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDY1MSwgMTEwNjU3LCAxMTA2NjMsIDExMDY2OSwgCi0gICAgMTEwNjc1LCAxMTA2ODEsIDExMDY4NywgMTEwNjkzLCAxMTA2OTksIDExMDcwNSwgMTEwNzExLCAxMTA3MTcsIDExMDcyMywgCi0gICAgMTEwNzI5LCAxMTA3MzUsIDExMDc0MSwgMTEwNzQ3LCAxMTA3NTMsIDExMDc1OSwgMTEwNzY1LCAxMTA3NzEsIDExMDc3NywgCi0gICAgMTEwNzgzLCAxMTA3ODksIDExMDc5NSwgMTEwODAxLCAxMTA4MDcsIDExMDgxMywgMTEwODE5LCAxMTA4MjUsIDExMDgzMSwgCi0gICAgMTEwODM3LCAxMTA4NDMsIDExMDg0OSwgMTEwODU1LCAxMTA4NjEsIDExMDg2NywgMTEwODczLCAxMTA4NzksIDExMDg4NSwgCi0gICAgMTEwODkxLCAxMTA4OTcsIDExMDkwMywgMTEwOTA5LCAxMTA5MTUsIDExMDkyMSwgMTEwOTI3LCAxMTA5MzMsIDExMDkzOSwgCi0gICAgMTEwOTQ1LCAxMTA5NTEsIDExMDk1NywgMTEwOTYzLCAxMTA5NjksIDExMDk3NSwgMTEwOTgxLCAxMTA5ODcsIDExMDk5MywgCi0gICAgMTEwOTk5LCAxMTEwMDUsIDExMTAxMSwgMTExMDE3LCAxMTEwMjMsIDExMTAyOSwgMTExMDM1LCAxMTEwNDEsIDExMTA0NywgCi0gICAgMTExMDUyLCAxMTEwNTcsIDExMTA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExMDY2LCAxMTEwNzEsIAotICAgIDExMTA3OCwgMTExMDg1LCAxMTEwOTIsIDExMTA5OSwgMTExMTA0LCAxMTExMDgsIDExMTExNCwgMTExMTE4LCAxMTExMjIsIAotICAgIDExMTEyOCwgMTExMTMyLCAxMTExMzYsIDExMTE0MCwgMTExMTQ2LCAxMTExNTMsIDExMTE1NywgMTExMTYxLCAxMTExNjUsIAotICAgIDExMTE2OSwgMTExMTczLCAxMTExNzcsIDExMTE4MywgMTExMTg3LCAxMTExOTEsIDExMTE5NSwgMTExMTk5LCAxMTEyMDMsIAotICAgIDExMTIwNywgMTExMjExLCAxMTEyMTUsIDExMTIxOSwgMTExMjIzLCAxMTEyMjcsIDExMTIzMSwgMTExMjM2LCAxMTEyNDAsIAotICAgIDExMTI0NCwgMTExMjQ4LCAxMTEyNTIsIDExMTI1NiwgMTExMjYwLCAxMTEyNjQsIDExMTI2OCwgMTExMjcyLCAxMTEyNzksIAotICAgIDExMTI4MywgMTExMjkxLCAxMTEyOTUsIDExMTI5OSwgMTExMzAzLCAxMTEzMDcsIDExMTMxMSwgMTExMzE1LCAxMTEzMTksIAotICAgIDExMTMyNiwgMTExMzMwLCAxMTEzMzQsIDExMTMzOCwgMTExMzQyLCAxMTEzNDYsIDExMTM1MiwgMTExMzU2LCAxMTEzNjIsIAotICAgIDExMTM2NiwgMTExMzcwLCAxMTEzNzQsIDExMTM3OCwgMTExMzgyLCAxMTEzODYsIDExMTM5MCwgMTExMzk0LCAxMTEzOTgsIAotICAgIDExMTQwMiwgMTExNDA2LCAxMTE0MTAsIDExMTQxNCwgMTExNDE4LCAxMTE0MjIsIDExMTQyNiwgMTExNDMwLCAxMTE0MzQsIAotICAgIDExMTQzOCwgMTExNDQ2LCAxMTE0NTAsIDExMTQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExNDU4LCAKLSAgICAxMTE0NjYsIDExMTQ3NCwgMTExNDgyLCAxMTE0OTAsIDExMTQ5OCwgMTExNTA2LCAxMTE1MTQsIDExMTUyMiwgMTExNTMwLCAKLSAgICAxMTE1MzgsIDExMTU0NiwgMTExNTU0LCAxMTE1NjIsIDExMTU3MCwgMTExNTc4LCAxMTE1ODYsIDExMTU5NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExNjAyLCAxMTE2MDYsIDExMTYxMSwgMTExNjE2LCAxMTE2MjEsIAotICAgIDExMTYyNSwgMTExNjMwLCAxMTE2MzUsIDExMTY0MCwgMTExNjQ0LCAxMTE2NDksIDExMTY1NCwgMTExNjU4LCAxMTE2NjIsIAotICAgIDExMTY2NiwgMTExNjcwLCAxMTE2NzUsIDExMTY4MCwgMTExNjg0LCAxMTE2ODgsIDExMTY5MywgMTExNjk3LCAxMTE3MDIsIAotICAgIDExMTcwNywgMTExNzEyLCAxMTE3MTcsIDExMTcyMiwgMTExNzI2LCAxMTE3MzEsIDExMTczNiwgMTExNzQxLCAxMTE3NDUsIAotICAgIDExMTc1MCwgMTExNzU1LCAxMTE3NjAsIDExMTc2NCwgMTExNzY5LCAxMTE3NzQsIDExMTc3OCwgMTExNzgyLCAxMTE3ODYsIAotICAgIDExMTc5MCwgMTExNzk1LCAxMTE4MDAsIDExMTgwNCwgMTExODA4LCAxMTE4MTMsIDExMTgxNywgMTExODIyLCAxMTE4MjcsIAotICAgIDExMTgzMiwgMTExODM3LCAxMTE4NDIsIDExMTg0NiwgMTExODUxLCAxMTE4NTYsIDExMTg2MSwgMTExODY1LCAxMTE4NzAsIAotICAgIDExMTg3NSwgMTExODgwLCAxMTE4ODQsIDExMTg4OSwgMTExODk0LCAxMTE4OTgsIDExMTkwMiwgMTExOTA2LCAxMTE5MTAsIAotICAgIDExMTkxNSwgMTExOTIwLCAxMTE5MjQsIDExMTkyOCwgMTExOTMzLCAxMTE5MzcsIDExMTk0MiwgMTExOTQ3LCAxMTE5NTIsIAotICAgIDExMTk1NywgMTExOTYyLCAxMTE5NjYsIDExMTk3MSwgMTExOTc2LCAxMTE5ODEsIDExMTk4NSwgMTExOTkwLCAwLCAKLSAgICAxMTE5OTUsIDExMTk5OSwgMTEyMDA0LCAxMTIwMDksIDExMjAxMywgMTEyMDE3LCAxMTIwMjEsIDExMjAyNSwgMTEyMDMwLCAKLSAgICAxMTIwMzUsIDExMjAzOSwgMTEyMDQzLCAxMTIwNDgsIDExMjA1MiwgMTEyMDU3LCAxMTIwNjIsIDExMjA2NywgMTEyMDcyLCAKLSAgICAxMTIwNzcsIDExMjA4MiwgMTEyMDg4LCAxMTIwOTQsIDExMjEwMCwgMTEyMTA1LCAxMTIxMTEsIDExMjExNywgMTEyMTIzLCAKLSAgICAxMTIxMjgsIDExMjEzNCwgMTEyMTQwLCAxMTIxNDUsIDExMjE1MCwgMTEyMTU1LCAxMTIxNjAsIDExMjE2NiwgMTEyMTcyLCAKLSAgICAxMTIxNzcsIDExMjE4MiwgMTEyMTg4LCAxMTIxOTMsIDExMjE5OSwgMTEyMjA1LCAxMTIyMTEsIDExMjIxNywgMTEyMjIzLCAKLSAgICAxMTIyMjgsIDExMjIzNCwgMTEyMjQwLCAxMTIyNDYsIDExMjI1MSwgMTEyMjU3LCAxMTIyNjMsIDExMjI2OSwgMTEyMjc0LCAKLSAgICAxMTIyODAsIDExMjI4NiwgMTEyMjkxLCAxMTIyOTYsIDExMjMwMSwgMTEyMzA2LCAxMTIzMTIsIDExMjMxOCwgMTEyMzIzLCAKLSAgICAxMTIzMjgsIDExMjMzNCwgMTEyMzM5LCAxMTIzNDUsIDExMjM1MSwgMTEyMzU3LCAxMTIzNjMsIDExMjM2OSwgMCwgCi0gICAgMTEyMzczLCAxMTIzNzgsIDAsIDAsIDExMjM4MywgMCwgMCwgMTEyMzg4LCAxMTIzOTMsIDAsIDAsIDExMjM5OCwgMTEyNDAyLCAKLSAgICAxMTI0MDYsIDExMjQxMSwgMCwgMTEyNDE2LCAxMTI0MjAsIDExMjQyNSwgMTEyNDI5LCAxMTI0MzQsIDExMjQzOSwgCi0gICAgMTEyNDQ0LCAxMTI0NDksIDExMjQ1NCwgMTEyNDU4LCAxMTI0NjMsIDExMjQ2OCwgMCwgMTEyNDczLCAwLCAxMTI0NzgsIAotICAgIDExMjQ4MywgMTEyNDg3LCAxMTI0OTIsIDExMjQ5NywgMTEyNTAxLCAxMTI1MDUsIDAsIDExMjUwOSwgMTEyNTE0LCAKLSAgICAxMTI1MTksIDExMjUyMywgMTEyNTI3LCAxMTI1MzIsIDExMjUzNiwgMTEyNTQxLCAxMTI1NDYsIDExMjU1MSwgMTEyNTU2LCAKLSAgICAxMTI1NjEsIDExMjU2NiwgMTEyNTcyLCAxMTI1NzgsIDExMjU4NCwgMTEyNTg5LCAxMTI1OTUsIDExMjYwMSwgMTEyNjA3LCAKLSAgICAxMTI2MTIsIDExMjYxOCwgMTEyNjI0LCAxMTI2MjksIDExMjYzNCwgMTEyNjM5LCAxMTI2NDQsIDExMjY1MCwgMTEyNjU2LCAKLSAgICAxMTI2NjEsIDExMjY2NiwgMTEyNjcyLCAxMTI2NzcsIDExMjY4MywgMTEyNjg5LCAxMTI2OTUsIDExMjcwMSwgMTEyNzA3LCAKLSAgICAxMTI3MTIsIDExMjcxOCwgMTEyNzI0LCAxMTI3MzAsIDExMjczNSwgMTEyNzQxLCAxMTI3NDcsIDExMjc1MywgMTEyNzU4LCAKLSAgICAxMTI3NjQsIDExMjc3MCwgMTEyNzc1LCAxMTI3ODAsIDExMjc4NSwgMTEyNzkwLCAxMTI3OTYsIDExMjgwMiwgMTEyODA3LCAKLSAgICAxMTI4MTIsIDExMjgxOCwgMTEyODIzLCAxMTI4MjksIDExMjgzNSwgMTEyODQxLCAxMTI4NDcsIDExMjg1MywgMTEyODU3LCAKLSAgICAwLCAxMTI4NjIsIDExMjg2NywgMTEyODcxLCAxMTI4NzYsIDAsIDAsIDExMjg4MSwgMTEyODg2LCAxMTI4OTEsIDExMjg5NSwgCi0gICAgMTEyODk5LCAxMTI5MDMsIDExMjkwNywgMTEyOTEyLCAwLCAxMTI5MTcsIDExMjkyMSwgMTEyOTI2LCAxMTI5MzAsIAotICAgIDExMjkzNSwgMTEyOTQwLCAxMTI5NDUsIDAsIDExMjk1MCwgMTEyOTU0LCAxMTI5NTksIDExMjk2NCwgMTEyOTY5LCAKLSAgICAxMTI5NzMsIDExMjk3OCwgMTEyOTgzLCAxMTI5ODgsIDExMjk5MiwgMTEyOTk3LCAxMTMwMDIsIDExMzAwNiwgMTEzMDEwLCAKLSAgICAxMTMwMTQsIDExMzAxOCwgMTEzMDIzLCAxMTMwMjgsIDExMzAzMiwgMTEzMDM2LCAxMTMwNDEsIDExMzA0NSwgMTEzMDUwLCAKLSAgICAxMTMwNTUsIDExMzA2MCwgMTEzMDY1LCAxMTMwNzAsIDExMzA3NCwgMCwgMTEzMDc5LCAxMTMwODQsIDExMzA4OCwgCi0gICAgMTEzMDkzLCAwLCAxMTMwOTgsIDExMzEwMiwgMTEzMTA3LCAxMTMxMTIsIDExMzExNiwgMCwgMTEzMTIwLCAwLCAwLCAwLCAKLSAgICAxMTMxMjQsIDExMzEyOCwgMTEzMTMzLCAxMTMxMzcsIDExMzE0MiwgMTEzMTQ3LCAxMTMxNTIsIDAsIDExMzE1NywgCi0gICAgMTEzMTYxLCAxMTMxNjYsIDExMzE3MSwgMTEzMTc2LCAxMTMxODAsIDExMzE4NSwgMTEzMTkwLCAxMTMxOTUsIDExMzE5OSwgCi0gICAgMTEzMjA0LCAxMTMyMDksIDExMzIxMywgMTEzMjE3LCAxMTMyMjEsIDExMzIyNSwgMTEzMjMwLCAxMTMyMzUsIDExMzIzOSwgCi0gICAgMTEzMjQzLCAxMTMyNDgsIDExMzI1MiwgMTEzMjU3LCAxMTMyNjIsIDExMzI2NywgMTEzMjcyLCAxMTMyNzcsIDExMzI4MiwgCi0gICAgMTEzMjg4LCAxMTMyOTQsIDExMzMwMCwgMTEzMzA1LCAxMTMzMTEsIDExMzMxNywgMTEzMzIzLCAxMTMzMjgsIDExMzMzNCwgCi0gICAgMTEzMzQwLCAxMTMzNDUsIDExMzM1MCwgMTEzMzU1LCAxMTMzNjAsIDExMzM2NiwgMTEzMzcyLCAxMTMzNzcsIDExMzM4MiwgCi0gICAgMTEzMzg4LCAxMTMzOTMsIDExMzM5OSwgMTEzNDA1LCAxMTM0MTEsIDExMzQxNywgMTEzNDIzLCAxMTM0MjgsIDExMzQzNCwgCi0gICAgMTEzNDQwLCAxMTM0NDYsIDExMzQ1MSwgMTEzNDU3LCAxMTM0NjMsIDExMzQ2OSwgMTEzNDc0LCAxMTM0ODAsIDExMzQ4NiwgCi0gICAgMTEzNDkxLCAxMTM0OTYsIDExMzUwMSwgMTEzNTA2LCAxMTM1MTIsIDExMzUxOCwgMTEzNTIzLCAxMTM1MjgsIDExMzUzNCwgCi0gICAgMTEzNTM5LCAxMTM1NDUsIDExMzU1MSwgMTEzNTU3LCAxMTM1NjMsIDExMzU2OSwgMTEzNTczLCAxMTM1NzgsIDExMzU4MywgCi0gICAgMTEzNTg4LCAxMTM1OTIsIDExMzU5NywgMTEzNjAyLCAxMTM2MDcsIDExMzYxMSwgMTEzNjE2LCAxMTM2MjEsIDExMzYyNSwgCi0gICAgMTEzNjI5LCAxMTM2MzMsIDExMzYzNywgMTEzNjQyLCAxMTM2NDcsIDExMzY1MSwgMTEzNjU1LCAxMTM2NjAsIDExMzY2NCwgCi0gICAgMTEzNjY5LCAxMTM2NzQsIDExMzY3OSwgMTEzNjg0LCAxMTM2ODksIDExMzY5MywgMTEzNjk4LCAxMTM3MDMsIDExMzcwOCwgCi0gICAgMTEzNzEyLCAxMTM3MTcsIDExMzcyMiwgMTEzNzI3LCAxMTM3MzEsIDExMzczNiwgMTEzNzQxLCAxMTM3NDUsIDExMzc0OSwgCi0gICAgMTEzNzUzLCAxMTM3NTcsIDExMzc2MiwgMTEzNzY3LCAxMTM3NzEsIDExMzc3NSwgMTEzNzgwLCAxMTM3ODQsIDExMzc4OSwgCi0gICAgMTEzNzk0LCAxMTM3OTksIDExMzgwNCwgMTEzODA5LCAxMTM4MTQsIDExMzgyMCwgMTEzODI2LCAxMTM4MzIsIDExMzgzNywgCi0gICAgMTEzODQzLCAxMTM4NDksIDExMzg1NSwgMTEzODYwLCAxMTM4NjYsIDExMzg3MiwgMTEzODc3LCAxMTM4ODIsIDExMzg4NywgCi0gICAgMTEzODkyLCAxMTM4OTgsIDExMzkwNCwgMTEzOTA5LCAxMTM5MTQsIDExMzkyMCwgMTEzOTI1LCAxMTM5MzEsIDExMzkzNywgCi0gICAgMTEzOTQzLCAxMTM5NDksIDExMzk1NSwgMTEzOTYwLCAxMTM5NjYsIDExMzk3MiwgMTEzOTc4LCAxMTM5ODMsIDExMzk4OSwgCi0gICAgMTEzOTk1LCAxMTQwMDEsIDExNDAwNiwgMTE0MDEyLCAxMTQwMTgsIDExNDAyMywgMTE0MDI4LCAxMTQwMzMsIDExNDAzOCwgCi0gICAgMTE0MDQ0LCAxMTQwNTAsIDExNDA1NSwgMTE0MDYwLCAxMTQwNjYsIDExNDA3MSwgMTE0MDc3LCAxMTQwODMsIDExNDA4OSwgCi0gICAgMTE0MDk1LCAxMTQxMDEsIDExNDEwNiwgMTE0MTEyLCAxMTQxMTgsIDExNDEyNCwgMTE0MTI5LCAxMTQxMzUsIDExNDE0MSwgCi0gICAgMTE0MTQ3LCAxMTQxNTIsIDExNDE1OCwgMTE0MTY0LCAxMTQxNjksIDExNDE3NCwgMTE0MTc5LCAxMTQxODQsIDExNDE5MCwgCi0gICAgMTE0MTk2LCAxMTQyMDEsIDExNDIwNiwgMTE0MjEyLCAxMTQyMTcsIDExNDIyMywgMTE0MjI5LCAxMTQyMzUsIDExNDI0MSwgCi0gICAgMTE0MjQ3LCAxMTQyNTIsIDExNDI1OCwgMTE0MjY0LCAxMTQyNzAsIDExNDI3NSwgMTE0MjgxLCAxMTQyODcsIDExNDI5MywgCi0gICAgMTE0Mjk4LCAxMTQzMDQsIDExNDMxMCwgMTE0MzE1LCAxMTQzMjAsIDExNDMyNSwgMTE0MzMwLCAxMTQzMzYsIDExNDM0MiwgCi0gICAgMTE0MzQ3LCAxMTQzNTIsIDExNDM1OCwgMTE0MzYzLCAxMTQzNjksIDExNDM3NSwgMTE0MzgxLCAxMTQzODcsIDExNDM5MywgCi0gICAgMTE0Mzk5LCAxMTQ0MDYsIDExNDQxMywgMTE0NDIwLCAxMTQ0MjYsIDExNDQzMywgMTE0NDQwLCAxMTQ0NDcsIDExNDQ1MywgCi0gICAgMTE0NDYwLCAxMTQ0NjcsIDExNDQ3MywgMTE0NDc5LCAxMTQ0ODUsIDExNDQ5MSwgMTE0NDk4LCAxMTQ1MDUsIDExNDUxMSwgCi0gICAgMTE0NTE3LCAxMTQ1MjQsIDExNDUzMCwgMTE0NTM3LCAxMTQ1NDQsIDExNDU1MSwgMTE0NTU4LCAxMTQ1NjUsIDExNDU3MSwgCi0gICAgMTE0NTc4LCAxMTQ1ODUsIDExNDU5MiwgMTE0NTk4LCAxMTQ2MDUsIDExNDYxMiwgMTE0NjE5LCAxMTQ2MjUsIDExNDYzMiwgCi0gICAgMTE0NjM5LCAxMTQ2NDUsIDExNDY1MSwgMTE0NjU3LCAxMTQ2NjMsIDExNDY3MCwgMTE0Njc3LCAxMTQ2ODMsIDExNDY4OSwgCi0gICAgMTE0Njk2LCAxMTQ3MDIsIDExNDcwOSwgMTE0NzE2LCAxMTQ3MjMsIDExNDczMCwgMTE0NzM3LCAxMTQ3NDIsIDExNDc0OCwgCi0gICAgMTE0NzU0LCAxMTQ3NjAsIDExNDc2NSwgMTE0NzcxLCAxMTQ3NzcsIDExNDc4MywgMTE0Nzg4LCAxMTQ3OTQsIDExNDgwMCwgCi0gICAgMTE0ODA1LCAxMTQ4MTAsIDExNDgxNSwgMTE0ODIwLCAxMTQ4MjYsIDExNDgzMiwgMTE0ODM3LCAxMTQ4NDIsIDExNDg0OCwgCi0gICAgMTE0ODUzLCAxMTQ4NTksIDExNDg2NSwgMTE0ODcxLCAxMTQ4NzcsIDExNDg4MywgMTE0ODg4LCAxMTQ4OTQsIDExNDkwMCwgCi0gICAgMTE0OTA2LCAxMTQ5MTEsIDExNDkxNywgMTE0OTIzLCAxMTQ5MjksIDExNDkzNCwgMTE0OTQwLCAxMTQ5NDYsIDExNDk1MSwgCi0gICAgMTE0OTU2LCAxMTQ5NjEsIDExNDk2NiwgMTE0OTcyLCAxMTQ5NzgsIDExNDk4MywgMTE0OTg4LCAxMTQ5OTQsIDExNDk5OSwgCi0gICAgMTE1MDA1LCAxMTUwMTEsIDExNTAxNywgMTE1MDIzLCAxMTUwMjksIDExNTAzNSwgMCwgMCwgMTE1MDQyLCAxMTUwNDcsIAotICAgIDExNTA1MiwgMTE1MDU3LCAxMTUwNjIsIDExNTA2NywgMTE1MDcyLCAxMTUwNzcsIDExNTA4MiwgMTE1MDg3LCAxMTUwOTIsIAotICAgIDExNTA5NywgMTE1MTAyLCAxMTUxMDcsIDExNTExMiwgMTE1MTE3LCAxMTUxMjIsIDExNTEyNywgMTE1MTMzLCAxMTUxMzgsIAotICAgIDExNTE0MywgMTE1MTQ4LCAxMTUxNTMsIDExNTE1OCwgMTE1MTYzLCAxMTUxNjgsIDExNTE3MiwgMTE1MTc3LCAxMTUxODIsIAotICAgIDExNTE4NywgMTE1MTkyLCAxMTUxOTcsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTIsIDExNTIxNywgMTE1MjIyLCAxMTUyMjcsIAotICAgIDExNTIzMiwgMTE1MjM3LCAxMTUyNDIsIDExNTI0NywgMTE1MjUyLCAxMTUyNTcsIDExNTI2MywgMTE1MjY4LCAxMTUyNzMsIAotICAgIDExNTI3OCwgMTE1MjgzLCAxMTUyODgsIDExNTI5MywgMTE1Mjk4LCAxMTUzMDQsIDExNTMwOSwgMTE1MzE0LCAxMTUzMTksIAotICAgIDExNTMyNCwgMTE1MzI5LCAxMTUzMzQsIDExNTMzOSwgMTE1MzQ0LCAxMTUzNDksIDExNTM1NCwgMTE1MzU5LCAxMTUzNjQsIAotICAgIDExNTM2OSwgMTE1Mzc0LCAxMTUzNzksIDExNTM4NCwgMTE1Mzg5LCAxMTUzOTQsIDExNTM5OSwgMTE1NDA0LCAxMTU0MDksIAotICAgIDExNTQxNCwgMTE1NDE5LCAxMTU0MjUsIDExNTQzMCwgMTE1NDM1LCAxMTU0NDAsIDExNTQ0NSwgMTE1NDUwLCAxMTU0NTUsIAotICAgIDExNTQ2MCwgMTE1NDY0LCAxMTU0NjksIDExNTQ3NCwgMTE1NDc5LCAxMTU0ODQsIDExNTQ4OSwgMTE1NDk0LCAxMTU0OTksIAotICAgIDExNTUwNCwgMTE1NTA5LCAxMTU1MTQsIDExNTUxOSwgMTE1NTI0LCAxMTU1MjksIDExNTUzNCwgMTE1NTM5LCAxMTU1NDQsIAotICAgIDExNTU0OSwgMTE1NTU1LCAxMTU1NjAsIDExNTU2NSwgMTE1NTcwLCAxMTU1NzUsIDExNTU4MCwgMTE1NTg1LCAxMTU1OTAsIAotICAgIDExNTU5NiwgMTE1NjAxLCAxMTU2MDYsIDExNTYxMSwgMTE1NjE2LCAxMTU2MjEsIDExNTYyNiwgMTE1NjMyLCAxMTU2MzgsIAotICAgIDExNTY0NCwgMTE1NjUwLCAxMTU2NTYsIDExNTY2MiwgMTE1NjY4LCAxMTU2NzQsIDExNTY4MCwgMTE1Njg2LCAxMTU2OTIsIAotICAgIDExNTY5OCwgMTE1NzA0LCAxMTU3MTAsIDExNTcxNiwgMTE1NzIyLCAxMTU3MjgsIDExNTczNSwgMTE1NzQxLCAxMTU3NDcsIAotICAgIDExNTc1MywgMTE1NzU5LCAxMTU3NjUsIDExNTc3MSwgMTE1Nzc3LCAxMTU3ODIsIDExNTc4OCwgMTE1Nzk0LCAxMTU4MDAsIAotICAgIDExNTgwNiwgMTE1ODEyLCAxMTU4MTgsIDExNTgyNCwgMTE1ODMwLCAxMTU4MzYsIDExNTg0MiwgMTE1ODQ4LCAxMTU4NTQsIAotICAgIDExNTg2MCwgMTE1ODY2LCAxMTU4NzIsIDExNTg3OCwgMTE1ODg0LCAxMTU4OTEsIDExNTg5NywgMTE1OTAzLCAxMTU5MDksIAotICAgIDExNTkxNSwgMTE1OTIxLCAxMTU5MjcsIDExNTkzMywgMTE1OTQwLCAxMTU5NDYsIDExNTk1MiwgMTE1OTU4LCAxMTU5NjQsIAotICAgIDExNTk3MCwgMTE1OTc2LCAxMTU5ODIsIDExNTk4OCwgMTE1OTk0LCAxMTYwMDAsIDExNjAwNiwgMTE2MDEyLCAxMTYwMTgsIAotICAgIDExNjAyNCwgMTE2MDMwLCAxMTYwMzYsIDExNjA0MiwgMTE2MDQ4LCAxMTYwNTQsIDExNjA2MCwgMTE2MDY2LCAxMTYwNzIsIAotICAgIDExNjA3OCwgMTE2MDg1LCAxMTYwOTEsIDExNjA5NywgMTE2MTAzLCAxMTYxMDksIDExNjExNSwgMTE2MTIxLCAxMTYxMjcsIAotICAgIDExNjEzMiwgMTE2MTM4LCAxMTYxNDQsIDExNjE1MCwgMTE2MTU2LCAxMTYxNjIsIDExNjE2OCwgMTE2MTc0LCAxMTYxODAsIAotICAgIDExNjE4NiwgMTE2MTkyLCAxMTYxOTgsIDExNjIwNCwgMTE2MjEwLCAxMTYyMTYsIDExNjIyMiwgMTE2MjI4LCAxMTYyMzQsIAotICAgIDExNjI0MSwgMTE2MjQ3LCAxMTYyNTMsIDExNjI1OSwgMTE2MjY1LCAxMTYyNzEsIDExNjI3NywgMTE2MjgzLCAxMTYyOTAsIAotICAgIDExNjI5NiwgMTE2MzAyLCAxMTYzMDgsIDExNjMxNCwgMTE2MzIwLCAxMTYzMjYsIDExNjMzMywgMTE2MzQwLCAxMTYzNDcsIAotICAgIDExNjM1NCwgMTE2MzYxLCAxMTYzNjgsIDExNjM3NSwgMTE2MzgyLCAxMTYzODksIDExNjM5NiwgMTE2NDAzLCAxMTY0MTAsIAotICAgIDExNjQxNywgMTE2NDI0LCAxMTY0MzEsIDExNjQzOCwgMTE2NDQ1LCAxMTY0NTMsIDExNjQ2MCwgMTE2NDY3LCAxMTY0NzQsIAotICAgIDExNjQ4MSwgMTE2NDg4LCAxMTY0OTUsIDExNjUwMiwgMTE2NTA4LCAxMTY1MTUsIDExNjUyMiwgMTE2NTI5LCAxMTY1MzYsIAotICAgIDExNjU0MywgMTE2NTUwLCAxMTY1NTcsIDExNjU2NCwgMTE2NTcxLCAxMTY1NzgsIDExNjU4NSwgMTE2NTkyLCAxMTY1OTksIAotICAgIDExNjYwNiwgMTE2NjEzLCAxMTY2MjAsIDExNjYyNywgMTE2NjM1LCAxMTY2NDIsIDExNjY0OSwgMTE2NjU2LCAxMTY2NjMsIAotICAgIDExNjY3MCwgMTE2Njc3LCAxMTY2ODQsIDExNjY5MiwgMTE2Njk5LCAxMTY3MDYsIDExNjcxMywgMTE2NzIwLCAxMTY3MjcsIAotICAgIDExNjczNCwgMTE2NzM5LCAwLCAwLCAxMTY3NDQsIDExNjc0OSwgMTE2NzUzLCAxMTY3NTcsIDExNjc2MSwgMTE2NzY1LCAKLSAgICAxMTY3NjksIDExNjc3MywgMTE2Nzc3LCAxMTY3ODEsIDExNjc4NSwgMTE2NzkwLCAxMTY3OTQsIDExNjc5OCwgMTE2ODAyLCAKLSAgICAxMTY4MDYsIDExNjgxMCwgMTE2ODE0LCAxMTY4MTgsIDExNjgyMiwgMTE2ODI2LCAxMTY4MzEsIDExNjgzNSwgMTE2ODM5LCAKLSAgICAxMTY4NDMsIDExNjg0NywgMTE2ODUxLCAxMTY4NTUsIDExNjg1OSwgMTE2ODYzLCAxMTY4NjcsIDExNjg3MywgMTE2ODc4LCAKLSAgICAxMTY4ODMsIDExNjg4OCwgMTE2ODkzLCAxMTY4OTgsIDExNjkwMywgMTE2OTA4LCAxMTY5MTMsIDExNjkxOCwgMTE2OTI0LCAKLSAgICAxMTY5MjksIDExNjkzNCwgMTE2OTM5LCAxMTY5NDQsIDExNjk0OSwgMTE2OTU0LCAxMTY5NTksIDExNjk2NCwgMTE2OTY5LCAKLSAgICAxMTY5NzYsIDExNjk4MywgMTE2OTkwLCAxMTY5OTcsIDExNzAwNCwgMTE3MDExLCAxMTcwMTcsIDExNzAyNCwgMTE3MDMxLCAKLSAgICAxMTcwMzgsIDExNzA0NiwgMTE3MDU0LCAxMTcwNjIsIDExNzA3MCwgMTE3MDc4LCAxMTcwODYsIDExNzA5MywgMTE3MTAwLCAKLSAgICAxMTcxMDcsIDExNzExNSwgMTE3MTIzLCAxMTcxMzEsIDExNzEzOSwgMTE3MTQ3LCAxMTcxNTUsIDExNzE2MiwgMTE3MTY5LCAKLSAgICAxMTcxNzYsIDExNzE4NCwgMTE3MTkyLCAxMTcyMDAsIDExNzIwOCwgMTE3MjE2LCAxMTcyMjQsIDExNzIyOSwgMTE3MjM0LCAKLSAgICAxMTcyMzksIDExNzI0NCwgMTE3MjQ5LCAxMTcyNTQsIDExNzI1OSwgMTE3MjY0LCAxMTcyNjksIDAsIDAsIDAsIDAsIAotICAgIDExNzI3NCwgMTE3Mjc5LCAxMTcyODMsIDExNzI4NywgMTE3MjkxLCAxMTcyOTUsIDExNzI5OSwgMTE3MzAzLCAxMTczMDcsIAotICAgIDExNzMxMSwgMTE3MzE1LCAxMTczMTksIDExNzMyMywgMTE3MzI3LCAxMTczMzEsIDExNzMzNSwgMTE3MzM5LCAxMTczNDMsIAotICAgIDExNzM0NywgMTE3MzUxLCAxMTczNTUsIDExNzM1OSwgMTE3MzYzLCAxMTczNjcsIDExNzM3MSwgMTE3Mzc1LCAxMTczNzksIAotICAgIDExNzM4MywgMTE3Mzg3LCAxMTczOTEsIDExNzM5NSwgMTE3Mzk5LCAxMTc0MDMsIDExNzQwNywgMTE3NDExLCAxMTc0MTUsIAotICAgIDExNzQxOSwgMTE3NDIzLCAxMTc0MjcsIDExNzQzMSwgMTE3NDM1LCAxMTc0MzksIDExNzQ0MywgMTE3NDQ3LCAxMTc0NTEsIAotICAgIDExNzQ1NSwgMTE3NDU5LCAxMTc0NjMsIDExNzQ2NywgMTE3NDcxLCAxMTc0NzUsIDExNzQ4MCwgMTE3NDg0LCAxMTc0ODgsIAotICAgIDExNzQ5MiwgMTE3NDk2LCAxMTc1MDAsIDExNzUwNCwgMTE3NTA4LCAxMTc1MTIsIDExNzUxNiwgMTE3NTIwLCAxMTc1MjQsIAotICAgIDExNzUyOCwgMTE3NTMyLCAxMTc1MzYsIDExNzU0MCwgMTE3NTQ0LCAxMTc1NDgsIDExNzU1MiwgMTE3NTU2LCAxMTc1NjAsIAotICAgIDExNzU2NCwgMTE3NTY4LCAxMTc1NzIsIDExNzU3NiwgMTE3NTgwLCAxMTc1ODQsIDExNzU4OCwgMTE3NTkyLCAxMTc1OTYsIAotICAgIDExNzYwMCwgMTE3NjA0LCAxMTc2MDgsIDExNzYxMiwgMTE3NjE2LCAxMTc2MjAsIDExNzYyNCwgMTE3NjI4LCAxMTc2MzIsIAotICAgIDExNzYzNiwgMTE3NjQwLCAxMTc2NDQsIDExNzY0OCwgMTE3NjUyLCAxMTc2NTYsIDExNzY2MCwgMTE3NjY0LCAxMTc2NjgsIAotICAgIDExNzY3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE3Njc2LCAxMTc2ODIsIDExNzY5MSwgCi0gICAgMTE3Njk5LCAxMTc3MDcsIDExNzcxNiwgMTE3NzI1LCAxMTc3MzQsIDExNzc0MywgMTE3NzUyLCAxMTc3NjEsIDExNzc3MCwgCi0gICAgMTE3Nzc5LCAxMTc3ODgsIDExNzc5NywgMCwgMCwgMTE3ODA2LCAxMTc4MTUsIDExNzgyMywgMTE3ODMxLCAxMTc4NDAsIAotICAgIDExNzg0OSwgMTE3ODU4LCAxMTc4NjcsIDExNzg3NiwgMTE3ODg1LCAxMTc4OTQsIDExNzkwMywgMTE3OTEyLCAxMTc5MjEsIAotICAgIDAsIDAsIDExNzkzMCwgMTE3OTM5LCAxMTc5NDcsIDExNzk1NSwgMTE3OTY0LCAxMTc5NzMsIDExNzk4MiwgMTE3OTkxLCAKLSAgICAxMTgwMDAsIDExODAwOSwgMTE4MDE4LCAxMTgwMjcsIDExODAzNiwgMTE4MDQ1LCAxMTgwNTQsIDAsIDExODA2MSwgCi0gICAgMTE4MDcwLCAxMTgwNzgsIDExODA4NiwgMTE4MDk1LCAxMTgxMDQsIDExODExMywgMTE4MTIyLCAxMTgxMzEsIDExODE0MCwgCi0gICAgMTE4MTQ5LCAxMTgxNTgsIDExODE2NywgMTE4MTc2LCAxMTgxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODE5MiwgCi0gICAgMTE4MTk5LCAxMTgyMDQsIDExODIwOCwgMTE4MjEyLCAxMTgyMTYsIDExODIyMSwgMTE4MjI2LCAxMTgyMzEsIDExODIzNiwgCi0gICAgMTE4MjQxLCAwLCAwLCAwLCAwLCAwLCAxMTgyNDYsIDExODI1MSwgMTE4MjU3LCAxMTgyNjMsIDExODI2OSwgMTE4Mjc0LCAKLSAgICAxMTgyODAsIDExODI4NiwgMTE4MjkyLCAxMTgyOTcsIDExODMwMywgMTE4MzA5LCAxMTgzMTQsIDExODMxOSwgMTE4MzI0LCAKLSAgICAxMTgzMjksIDExODMzNSwgMTE4MzQxLCAxMTgzNDYsIDExODM1MSwgMTE4MzU3LCAxMTgzNjIsIDExODM2OCwgMTE4Mzc0LCAKLSAgICAxMTgzODAsIDExODM4NiwgMTE4MzkyLCAxMTg0MDIsIDExODQwOSwgMTE4NDE1LCAxMTg0MTgsIDAsIDExODQyMSwgCi0gICAgMTE4NDI2LCAxMTg0MzIsIDExODQzOCwgMTE4NDQ0LCAxMTg0NDksIDExODQ1NSwgMTE4NDYxLCAxMTg0NjcsIDExODQ3MiwgCi0gICAgMTE4NDc4LCAxMTg0ODQsIDExODQ4OSwgMTE4NDk0LCAxMTg0OTksIDExODUwNCwgMTE4NTEwLCAxMTg1MTYsIDExODUyMSwgCi0gICAgMTE4NTI2LCAxMTg1MzIsIDExODUzNywgMTE4NTQzLCAxMTg1NDksIDExODU1NSwgMTE4NTYxLCAxMTg1NjcsIDExODU3MCwgCi0gICAgMTE4NTczLCAxMTg1NzYsIDExODU3OSwgMTE4NTgyLCAxMTg1ODUsIDExODU5MSwgMTE4NTk4LCAxMTg2MDUsIDExODYxMiwgCi0gICAgMTE4NjE4LCAxMTg2MjUsIDExODYzMiwgMTE4NjM5LCAxMTg2NDUsIDExODY1MiwgMTE4NjU5LCAxMTg2NjUsIDExODY3MSwgCi0gICAgMTE4Njc3LCAxMTg2ODMsIDExODY5MCwgMTE4Njk3LCAxMTg3MDMsIDExODcwOSwgMTE4NzE2LCAxMTg3MjIsIDExODcyOSwgCi0gICAgMTE4NzM2LCAxMTg3NDMsIDExODc1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4NzU3LCAxMTg3NjMsIDExODc3MCwgMTE4Nzc3LCAKLSAgICAxMTg3ODQsIDExODc5MCwgMTE4Nzk3LCAxMTg4MDQsIDExODgxMSwgMTE4ODE3LCAxMTg4MjQsIDExODgzMSwgMTE4ODM3LCAKLSAgICAxMTg4NDMsIDExODg0OSwgMTE4ODU1LCAxMTg4NjIsIDExODg2OSwgMTE4ODc1LCAxMTg4ODEsIDExODg4OCwgMTE4ODk0LCAKLSAgICAxMTg5MDEsIDExODkwOCwgMTE4OTE1LCAxMTg5MjIsIDExODkyOSwgMTE4OTM4LCAxMTg5NDIsIDExODk0NSwgMTE4OTQ5LCAKLSAgICAxMTg5NTMsIDExODk1NywgMTE4OTYwLCAxMTg5NjMsIDExODk2NiwgMTE4OTY5LCAxMTg5NzIsIDExODk3NSwgMTE4OTc4LCAKLSAgICAxMTg5ODEsIDExODk4NCwgMTE4OTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTg5OTMsIDExOTAwMCwgMTE5MDA4LCAxMTkwMTYsIDExOTAyNCwgCi0gICAgMTE5MDMxLCAxMTkwMzksIDExOTA0NywgMTE5MDU1LCAxMTkwNjIsIDExOTA3MCwgMTE5MDc4LCAxMTkwODUsIDExOTA5MiwgCi0gICAgMTE5MDk5LCAxMTkxMDYsIDExOTExNCwgMTE5MTIyLCAxMTkxMjksIDExOTEzNiwgMTE5MTQ0LCAxMTkxNTEsIDExOTE1OSwgCi0gICAgMTE5MTY3LCAxMTkxNzUsIDExOTE4MywgMTE5MTkxLCAxMTkxOTUsIDExOTE5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTE5MjAzLCAxMTkyMDksIDExOTIxNSwgMTE5MjIxLCAxMTkyMjUsIDExOTIzMSwgMTE5MjM3LCAKLSAgICAxMTkyNDMsIDExOTI0OSwgMTE5MjU1LCAxMTkyNjEsIDExOTI2NywgMTE5MjczLCAxMTkyNzksIDExOTI4NSwgMTE5MjkxLCAKLSAgICAxMTkyOTcsIDExOTMwMywgMTE5MzA5LCAxMTkzMTUsIDExOTMyMSwgMTE5MzI3LCAxMTkzMzMsIDExOTMzOSwgMTE5MzQ1LCAKLSAgICAxMTkzNTEsIDExOTM1NywgMTE5MzYzLCAxMTkzNjksIDExOTM3NSwgMTE5MzgxLCAxMTkzODcsIDExOTM5MywgMTE5Mzk5LCAKLSAgICAxMTk0MDUsIDExOTQxMSwgMTE5NDE3LCAxMTk0MjMsIDExOTQyOSwgMTE5NDM1LCAxMTk0NDEsIDExOTQ0NywgMTE5NDUzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMTk0NTksIDExOTQ3MCwgMTE5NDgxLCAxMTk0OTIsIDExOTUwMywgMTE5NTE0LCAxMTk1MjUsIAotICAgIDExOTUzNiwgMTE5NTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTk1NTgsIDExOTU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5NTY2LCAxMTk1NjgsIDExOTU3MCwgCi0gICAgMTE5NTc0LCAxMTk1NzksIDExOTU4NCwgMTE5NTg2LCAxMTk1OTIsIDExOTU5NywgMTE5NTk5LCAxMTk2MDUsIDExOTYwOSwgCi0gICAgMTE5NjExLCAxMTk2MTUsIDExOTYyMSwgMTE5NjI3LCAxMTk2MzMsIDExOTYzOCwgMTE5NjQyLCAxMTk2NDksIDExOTY1NiwgCi0gICAgMTE5NjYzLCAxMTk2NjgsIDExOTY3NSwgMTE5NjgyLCAxMTk2ODksIDExOTY5MywgMTE5Njk5LCAxMTk3MDgsIDExOTcxNywgCi0gICAgMTE5NzI0LCAxMTk3MjksIDExOTczMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE5NzM3LCAxMTk3MzksIDExOTc0MSwgMTE5NzQ1LCAxMTk3NDksIDExOTc1MywgMCwgMTE5NzU1LCAxMTk3NTcsIAotICAgIDExOTc2MSwgMTE5NzYzLCAxMTk3NjUsIDExOTc2NywgMTE5NzY5LCAxMTk3NzQsIDExOTc3OSwgMTE5NzgxLCAxMTk3ODcsIAotICAgIDExOTc5MSwgMTE5Nzk1LCAxMTk4MDMsIDExOTgwNSwgMTE5ODA3LCAxMTk4MDksIDExOTgxMSwgMTE5ODEzLCAxMTk4MTUsIAotICAgIDExOTgxNywgMTE5ODE5LCAxMTk4MjEsIDExOTgyMywgMTE5ODI3LCAxMTk4MzEsIDExOTgzMywgMTE5ODM1LCAxMTk4MzcsIAotICAgIDExOTgzOSwgMTE5ODQxLCAxMTk4NDYsIDExOTg1MiwgMTE5ODU2LCAxMTk4NjAsIDExOTg2NCwgMTE5ODY4LCAxMTk4NzMsIAotICAgIDExOTg3NywgMTE5ODc5LCAxMTk4ODEsIDExOTg4NSwgMTE5ODkxLCAxMTk4OTMsIDExOTg5NSwgMTE5ODk3LCAxMTk5MDEsIAotICAgIDExOTkxMCwgMTE5OTE2LCAxMTk5MjAsIDExOTkyNCwgMTE5OTI2LCAxMTk5MjgsIDExOTkzMSwgMTE5OTMzLCAxMTk5MzUsIAotICAgIDExOTkzNywgMTE5OTQxLCAxMTk5NDMsIDExOTk0NywgMTE5OTUyLCAxMTk5NTQsIDExOTk1OSwgMTE5OTY1LCAxMTk5NzIsIAotICAgIDExOTk3NiwgMTE5OTgwLCAxMTk5ODQsIDExOTk4OCwgMTE5OTk0LCAwLCAwLCAwLCAxMTk5OTgsIDEyMDAwMCwgMTIwMDA0LCAKLSAgICAxMjAwMDgsIDEyMDAxMCwgMTIwMDE0LCAxMjAwMTgsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjYsIDEyMDAzMCwgMTIwMDM0LCAKLSAgICAxMjAwMzgsIDEyMDA0MiwgMTIwMDQ2LCAxMjAwNTAsIDEyMDA1NCwgMTIwMDU4LCAxMjAwNjQsIDEyMDA2OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwMDcyLCAxMjAwNzYsIDEyMDA4MCwgMTIwMDg0LCAxMjAwOTEsIAotICAgIDEyMDA5MywgMTIwMDk3LCAxMjAwOTksIDEyMDEwMSwgMTIwMTA1LCAxMjAxMDksIDEyMDExMywgMTIwMTE1LCAxMjAxMTksIAotICAgIDEyMDEyMywgMTIwMTI3LCAxMjAxMzEsIDEyMDEzNSwgMTIwMTM3LCAxMjAxNDEsIDEyMDE0MywgMTIwMTQ5LCAxMjAxNTIsIAotICAgIDEyMDE1NywgMTIwMTU5LCAxMjAxNjEsIDEyMDE2NCwgMTIwMTY2LCAxMjAxNjgsIDEyMDE3MSwgMTIwMTc4LCAxMjAxODUsIAotICAgIDEyMDE5MiwgMTIwMTk3LCAxMjAyMDEsIDEyMDIwMywgMTIwMjA1LCAwLCAxMjAyMDcsIDEyMDIwOSwgMTIwMjEzLCAKLSAgICAxMjAyMTcsIDEyMDIyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTIwMjIzLCAxMjAyMjcsIDEyMDIzMiwgMTIwMjM2LCAxMjAyNDIsIDEyMDI0OCwgMTIwMjUwLCAxMjAyNTIsIAotICAgIDEyMDI1OCwgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcwLCAxMjAyNzQsIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDI4OCwgMTIwMjkwLCAxMjAyOTIsIAotICAgIDEyMDI5NCwgMTIwMjk4LCAxMjAzMDAsIDEyMDMwMiwgMTIwMzA0LCAxMjAzMDYsIDEyMDMwOCwgMTIwMzEwLCAxMjAzMTIsIAotICAgIDEyMDMxNCwgMTIwMzE2LCAxMjAzMTgsIDEyMDMyMCwgMTIwMzIyLCAxMjAzMjQsIDEyMDMyNiwgMTIwMzI4LCAxMjAzMzAsIAotICAgIDEyMDMzMiwgMTIwMzM0LCAxMjAzMzYsIDEyMDMzOCwgMTIwMzQwLCAxMjAzNDIsIDEyMDM0NiwgMTIwMzQ4LCAxMjAzNTAsIAotICAgIDEyMDM1MiwgMTIwMzU2LCAxMjAzNTgsIDEyMDM2MiwgMTIwMzY0LCAxMjAzNjYsIDEyMDM3MCwgMTIwMzc0LCAxMjAzODAsIAotICAgIDEyMDM4MiwgMTIwMzg0LCAxMjAzODYsIDEyMDM4OCwgMTIwMzkyLCAxMjAzOTYsIDEyMDM5OCwgMTIwNDAyLCAxMjA0MDYsIAotICAgIDEyMDQxMCwgMTIwNDE0LCAxMjA0MTgsIDEyMDQyMiwgMTIwNDI2LCAxMjA0MzAsIDEyMDQzNCwgMTIwNDM4LCAxMjA0NDIsIAotICAgIDEyMDQ0NiwgMTIwNDUwLCAxMjA0NTQsIDEyMDQ1OCwgMTIwNDYyLCAxMjA0NjYsIDAsIDEyMDQ3MCwgMCwgMTIwNDcyLCAKLSAgICAxMjA0NzQsIDEyMDQ3NiwgMTIwNDc4LCAxMjA0ODAsIDEyMDQ4OCwgMTIwNDk2LCAxMjA1MDQsIDEyMDUxMiwgMTIwNTE3LCAKLSAgICAxMjA1MjIsIDEyMDUyNywgMTIwNTMxLCAxMjA1MzUsIDEyMDU0MCwgMTIwNTQ1LCAxMjA1NDcsIDEyMDU1MSwgMTIwNTUzLCAKLSAgICAxMjA1NTUsIDEyMDU1NywgMTIwNTU5LCAxMjA1NjEsIDEyMDU2MywgMTIwNTY1LCAxMjA1NjksIDEyMDU3MSwgMTIwNTczLCAKLSAgICAxMjA1NzUsIDEyMDU3OSwgMTIwNTgzLCAxMjA1ODcsIDEyMDU5MSwgMTIwNTk1LCAxMjA1OTcsIDEyMDYwMywgMTIwNjA5LCAKLSAgICAxMjA2MTEsIDEyMDYxMywgMTIwNjE1LCAxMjA2MTcsIDEyMDYxOSwgMTIwNjI4LCAxMjA2MzUsIDEyMDY0MiwgMTIwNjQ2LCAKLSAgICAxMjA2NTMsIDEyMDY1OCwgMTIwNjY1LCAxMjA2NzQsIDEyMDY3OSwgMTIwNjgzLCAxMjA2ODcsIDEyMDY4OSwgMTIwNjkzLCAKLSAgICAxMjA2OTUsIDEyMDY5OSwgMTIwNzAzLCAxMjA3MDUsIDEyMDcwOSwgMTIwNzEzLCAxMjA3MTcsIDEyMDcxOSwgMTIwNzIxLCAKLSAgICAxMjA3MjcsIDEyMDcyOSwgMTIwNzMxLCAxMjA3MzMsIDEyMDczNywgMTIwNzQxLCAxMjA3NDMsIDEyMDc0NywgMTIwNzQ5LCAKLSAgICAxMjA3NTEsIDEyMDc1NCwgMTIwNzU4LCAxMjA3NjAsIDEyMDc2NCwgMTIwNzY2LCAxMjA3NjgsIDEyMDc3MywgMTIwNzc1LCAKLSAgICAxMjA3NzksIDEyMDc4MywgMTIwNzg2LCAxMjA3OTAsIDEyMDc5NCwgMTIwNzk4LCAxMjA4MDIsIDEyMDgwNiwgMTIwODEwLCAKLSAgICAxMjA4MTQsIDEyMDgxOSwgMTIwODIzLCAxMjA4MjcsIDEyMDgzNiwgMTIwODQxLCAxMjA4NDQsIDEyMDg0NiwgMTIwODQ5LCAKLSAgICAxMjA4NTIsIDEyMDg1NywgMTIwODU5LCAxMjA4NjIsIDEyMDg2NywgMTIwODcxLCAxMjA4NzQsIDEyMDg3OCwgMTIwODgyLCAKLSAgICAxMjA4ODUsIDEyMDg5MCwgMTIwODk0LCAxMjA4OTgsIDEyMDkwMiwgMTIwOTA2LCAxMjA5MTIsIDEyMDkxOCwgMTIwOTI0LCAKLSAgICAxMjA5MzAsIDEyMDkzNSwgMTIwOTQ2LCAxMjA5NDgsIDEyMDk1MiwgMTIwOTU0LCAxMjA5NTYsIDEyMDk2MCwgMTIwOTY0LCAKLSAgICAxMjA5NjYsIDEyMDk3MCwgMTIwOTc2LCAxMjA5ODEsIDEyMDk4NywgMTIwOTg5LCAxMjA5OTMsIDEyMDk5NywgMTIxMDA0LCAKLSAgICAxMjEwMTEsIDEyMTAxNSwgMTIxMDE3LCAxMjEwMTksIDEyMTAyMywgMTIxMDI1LCAxMjEwMjksIDEyMTAzMywgMTIxMDM3LCAKLSAgICAxMjEwMzksIDEyMTA0MSwgMTIxMDQ4LCAxMjEwNTIsIDEyMTA1NiwgMTIxMDYwLCAxMjEwNjQsIDEyMTA2OCwgMTIxMDcwLCAKLSAgICAxMjEwNzQsIDEyMTA3NiwgMTIxMDc4LCAxMjEwODIsIDEyMTA4NCwgMTIxMDg4LCAxMjEwOTIsIDEyMTA5OCwgMTIxMTAyLCAKLSAgICAxMjExMDYsIDEyMTExMCwgMTIxMTEyLCAxMjExMTUsIDEyMTExOSwgMTIxMTI2LCAxMjExMzUsIDEyMTE0NCwgMTIxMTUzLCAKLSAgICAxMjExNjIsIDEyMTE2NCwgMTIxMTY4LCAxMjExNzAsIDEyMTE3NCwgMTIxMTg1LCAxMjExODksIDEyMTE5NSwgMTIxMjAxLCAKLSAgICAxMjEyMDYsIDAsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTQsIDEyMTIxNiwgMCwgMCwgMCwgMTIxMjE4LCAxMjEyMjMsIAotICAgIDEyMTIzNCwgMTIxMjUwLCAxMjEyNjMsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI5MCwgMTIxMjkyLCAxMjEzMDAsIAotICAgIDEyMTMwOCwgMTIxMzEwLCAxMjEzMTQsIDEyMTMyMCwgMTIxMzI2LCAxMjEzMzMsIDEyMTM0MCwgMTIxMzQyLCAxMjEzNDQsIAotICAgIDEyMTM0OCwgMTIxMzUwLCAxMjEzNTYsIDEyMTM1OCwgMTIxMzYxLCAxMjEzNjUsIDEyMTM3MSwgMTIxMzc3LCAxMjEzODgsIAotICAgIDEyMTM5NCwgMTIxNDAxLCAxMjE0MDksIDEyMTQxMywgMTIxNDIxLCAxMjE0MjksIDEyMTQzNSwgMTIxNDQxLCAxMjE0NDgsIAotICAgIDEyMTQ1MCwgMTIxNDU0LCAxMjE0NTYsIDEyMTQ1OCwgMTIxNDYzLCAxMjE0NjUsIDEyMTQ2NywgMTIxNDY5LCAxMjE0NzEsIAotICAgIDEyMTQ3NSwgMTIxNDg2LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUxMCwgMTIxNTE2LCAxMjE1MjIsIAotICAgIDEyMTUyOCwgMTIxNTMzLCAxMjE1MzgsIDEyMTU0NCwgMTIxNTUwLCAxMjE1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMTU2NCwgMTIxNTcxLCAxMjE1NzgsIDEyMTU4NSwgMTIxNTkzLCAKLSAgICAxMjE2MDEsIDEyMTYwOSwgMTIxNjE3LCAxMjE2MjUsIDEyMTYzMywgMTIxNjQxLCAxMjE2NDksIDEyMTY1NywgMTIxNjYzLCAKLSAgICAxMjE2NjksIDEyMTY3NSwgMTIxNjgxLCAxMjE2ODcsIDEyMTY5MywgMTIxNjk5LCAxMjE3MDUsIDEyMTcxMSwgMTIxNzE3LCAKLSAgICAxMjE3MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDcxMCwgMTEwNzE1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjE3MjksIDEyMTczMywgMTIxNzM3LCAxMjE3NDIsIDEyMTc0NywgMCwgMTIxNzQ5LCAxMjE3NTgsIAotICAgIDEyMTc2NiwgMTIxNzc1LCAxMjE3ODksIDEyMTgwMywgMTIxODE3LCAxMjE4MjQsIDEyMTgzMSwgMTIxODM1LCAxMjE4NDQsIAotICAgIDEyMTg1MiwgMTIxODU2LCAxMjE4NjUsIDEyMTg3MiwgMTIxODc2LCAwLCAxMjE4ODAsIDEyMTg4NCwgMTIxODkxLCAwLCAKLSAgICAxMjE4OTUsIDAsIDEyMTg5OSwgMCwgMTIxOTA2LCAwLCAxMjE5MTUsIDEyMTkyNywgMTIxOTM5LCAwLCAxMjE5NDMsIAotICAgIDEyMTk0NywgMTIxOTUxLCAxMjE5NTUsIDEyMTk1OSwgMTIxOTY3LCAwLCAwLCAxMjE5NzUsIDEyMTk3OSwgMTIxOTgzLCAKLSAgICAxMjE5ODcsIDAsIDEyMTk5MSwgMCwgMCwgMTIxOTk3LCAxMjIwMDksIDEyMjAxNywgMTIyMDIxLCAwLCAxMjIwMjUsIAotICAgIDEyMjAyOSwgMTIyMDM1LCAxMjIwNDIsIDEyMjA1MywgMTIyMDYzLCAxMjIwNzQsIDEyMjA4NSwgMTIyMDk0LCAxMjIxMDUsIAotICAgIDEyMjExMSwgMTIyMTE3LCAwLCAwLCAwLCAwLCAxMjIxMjMsIDEyMjEzMiwgMTIyMTM5LCAxMjIxNDUsIDEyMjE0OSwgCi0gICAgMTIyMTUzLCAxMjIxNTcsIDEyMjE2NiwgMTIyMTc4LCAxMjIxODIsIDEyMjE4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTEwNzIxLCAxMTA3MjYsIDExMDczMSwgMTEwNzM2LCAxMTA3NDMsIDExMDc1MCwgMTEwNzU3LCAxMTA3NjQsIDExMDc2OSwgCisgICAgMTEwNzc0LCAxMTA3NzksIDExMDc4NCwgMTEwNzkxLCAxMTA3OTYsIDExMDgwMywgMTEwODEwLCAxMTA4MTUsIDExMDgyMCwgCisgICAgMTEwODI1LCAxMTA4MzIsIDExMDgzNywgMTEwODQyLCAxMTA4NDksIDExMDg1NiwgMTEwODYxLCAxMTA4NjYsIDExMDg3MSwgCisgICAgMTEwODc4LCAxMTA4ODUsIDExMDg5MiwgMTEwODk3LCAxMTA5MDIsIDExMDkwOSwgMTEwOTE2LCAxMTA5MjMsIDExMDkzMCwgCisgICAgMTEwOTM1LCAxMTA5NDAsIDExMDk0NSwgMTEwOTUyLCAxMTA5NTcsIDExMDk2MiwgMTEwOTY3LCAxMTA5NzQsIDExMDk4MywgCisgICAgMTEwOTkwLCAxMTA5OTUsIDExMTAwMCwgMTExMDA1LCAxMTEwMTAsIDExMTAxNSwgMTExMDIwLCAxMTEwMjksIDExMTAzNiwgCisgICAgMTExMDQxLCAxMTEwNDgsIDExMTA1NSwgMTExMDYwLCAxMTEwNjUsIDExMTA3MCwgMTExMDc3LCAxMTEwODIsIDExMTA4OSwgCisgICAgMTExMDk2LCAxMTExMDEsIDExMTEwNiwgMTExMTExLCAxMTExMTgsIDExMTEyNSwgMTExMTMwLCAxMTExMzUsIDExMTE0MiwgCisgICAgMTExMTQ5LCAxMTExNTYsIDExMTE2MSwgMTExMTY2LCAxMTExNzEsIDExMTE3NiwgMTExMTgzLCAxMTExOTIsIDExMTIwMSwgCisgICAgMTExMjA2LCAxMTEyMTMsIDExMTIyMiwgMTExMjI3LCAxMTEyMzIsIDExMTIzNywgMTExMjQyLCAxMTEyNDksIDExMTI1NiwgCisgICAgMTExMjYzLCAxMTEyNzAsIDExMTI3NSwgMTExMjgwLCAxMTEyODUsIDExMTI5MiwgMTExMjk5LCAxMTEzMDYsIDExMTMxMSwgCisgICAgMTExMzE2LCAxMTEzMjMsIDExMTMyOCwgMTExMzM1LCAxMTEzNDAsIDExMTM0NywgMTExMzUyLCAxMTEzNTksIDExMTM2NiwgCisgICAgMTExMzcxLCAxMTEzNzYsIDExMTM4MSwgMTExMzg2LCAxMTEzOTEsIDExMTM5NiwgMTExNDAxLCAxMTE0MDYsIDExMTQxMSwgCisgICAgMTExNDE4LCAxMTE0MjUsIDExMTQzMiwgMTExNDM5LCAxMTE0NDYsIDExMTQ1NSwgMTExNDYwLCAxMTE0NjUsIDExMTQ3MiwgCisgICAgMTExNDc5LCAxMTE0ODQsIDExMTQ5MSwgMTExNDk4LCAxMTE1MDUsIDExMTUxMiwgMTExNTE5LCAxMTE1MjYsIDExMTUzMSwgCisgICAgMTExNTM2LCAxMTE1NDEsIDExMTU0NiwgMTExNTUxLCAxMTE1NjAsIDExMTU2OSwgMTExNTc4LCAxMTE1ODcsIDExMTU5NiwgCisgICAgMTExNjA1LCAxMTE2MTQsIDExMTYyMywgMTExNjI4LCAxMTE2MzksIDExMTY1MCwgMTExNjU5LCAxMTE2NjQsIDExMTY2OSwgCisgICAgMTExNjc0LCAxMTE2NzksIDExMTY4OCwgMTExNjk1LCAxMTE3MDIsIDExMTcwOSwgMTExNzE2LCAxMTE3MjMsIDExMTczMCwgCisgICAgMTExNzM5LCAxMTE3NDgsIDExMTc1OSwgMTExNzY4LCAxMTE3NzksIDExMTc4OCwgMTExNzk1LCAxMTE4MDQsIDExMTgxNSwgCisgICAgMTExODI0LCAxMTE4MzMsIDExMTg0MiwgMTExODUxLCAxMTE4NTgsIDExMTg2NSwgMTExODcyLCAxMTE4ODEsIDExMTg5MCwgCisgICAgMTExOTAxLCAxMTE5MTAsIDExMTkxOSwgMTExOTMwLCAxMTE5MzUsIDExMTk0MCwgMTExOTUxLCAxMTE5NTksIDExMTk2OCwgCisgICAgMTExOTc3LCAxMTE5ODYsIDExMTk5NywgMTEyMDA2LCAxMTIwMTUsIDExMjAyNiwgMTEyMDM3LCAxMTIwNDgsIDExMjA1OSwgCisgICAgMTEyMDcwLCAxMTIwODEsIDExMjA4OCwgMTEyMDk1LCAxMTIxMDIsIDExMjEwOSwgMTEyMTIwLCAxMTIxMjksIDExMjEzNiwgCisgICAgMTEyMTQzLCAxMTIxNTAsIDExMjE2MSwgMTEyMTcyLCAxMTIxODMsIDExMjE5NCwgMTEyMjA1LCAxMTIyMTYsIDExMjIyNywgCisgICAgMTEyMjM4LCAxMTIyNDUsIDExMjI1MiwgMTEyMjYxLCAxMTIyNzAsIDExMjI3NywgMTEyMjg0LCAxMTIyOTEsIDExMjMwMCwgCisgICAgMTEyMzA5LCAxMTIzMTgsIDExMjMyNSwgMTEyMzM0LCAxMTIzNDMsIDExMjM1MiwgMTEyMzU5LCAxMTIzNjYsIDExMjM3MSwgCisgICAgMTEyMzc3LCAxMTIzODQsIDExMjM5MSwgMTEyMzk4LCAxMTI0MDUsIDExMjQxMiwgMTEyNDE5LCAxMTI0MjgsIDExMjQzNywgCisgICAgMTEyNDQ2LCAxMTI0NTUsIDExMjQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyNDcxLCAxMTI0NzcsIAorICAgIDExMjQ4MiwgMTEyNDg3LCAxMTI0OTQsIDExMjUwMCwgMTEyNTA2LCAxMTI1MTIsIDExMjUxOCwgMTEyNTI0LCAxMTI1MzAsIAorICAgIDExMjUzNiwgMTEyNTQwLCAxMTI1NDQsIDExMjU1MCwgMTEyNTU2LCAxMTI1NjIsIDExMjU2NiwgMTEyNTcxLCAxMTI1NzYsIAorICAgIDExMjU4MCwgMTEyNTg0LCAxMTI1ODcsIDExMjU5MywgMTEyNTk5LCAxMTI2MDUsIDExMjYxMSwgMTEyNjE3LCAxMTI2MjMsIAorICAgIDExMjYyOSwgMTEyNjM1LCAxMTI2NDEsIDExMjY1MSwgMTEyNjYxLCAxMTI2NjcsIDExMjY3MywgMTEyNjgzLCAxMTI2OTMsIAorICAgIDExMjY5OSwgMCwgMCwgMTEyNzA1LCAxMTI3MTMsIDExMjcxOCwgMTEyNzIzLCAxMTI3MjksIDExMjczNSwgMTEyNzQxLCAKKyAgICAxMTI3NDcsIDExMjc1MywgMTEyNzU5LCAxMTI3NjYsIDExMjc3MywgMTEyNzc5LCAxMTI3ODUsIDExMjc5MSwgMTEyNzk3LCAKKyAgICAxMTI4MDMsIDExMjgwOSwgMTEyODE1LCAxMTI4MjEsIDExMjgyNiwgMTEyODMyLCAxMTI4MzgsIDExMjg0NCwgMTEyODUwLCAKKyAgICAxMTI4NTYsIDExMjg2NSwgMTEyODcxLCAxMTI4NzYsIDExMjg4NCwgMTEyODkxLCAxMTI4OTgsIDExMjkwNywgMTEyOTE2LCAKKyAgICAxMTI5MjUsIDExMjkzNCwgMTEyOTQzLCAxMTI5NTIsIDExMjk2MSwgMTEyOTcwLCAxMTI5ODAsIDExMjk5MCwgMTEyOTk4LCAKKyAgICAxMTMwMDYsIDExMzAxNSwgMTEzMDI0LCAxMTMwMzAsIDExMzAzNiwgMTEzMDQyLCAxMTMwNDgsIDExMzA1NiwgMTEzMDY0LCAKKyAgICAxMTMwNjgsIDExMzA3NCwgMTEzMDc5LCAxMTMwODUsIDExMzA5MSwgMTEzMDk3LCAxMTMxMDMsIDExMzEwOSwgMTEzMTE4LCAKKyAgICAxMTMxMjMsIDExMzEzMCwgMTEzMTM1LCAxMTMxNDAsIDExMzE0NSwgMTEzMTUxLCAxMTMxNTcsIDExMzE2MywgMTEzMTcwLCAKKyAgICAxMTMxNzUsIDExMzE4MCwgMTEzMTg1LCAxMTMxOTAsIDExMzE5NSwgMTEzMjAxLCAxMTMyMDcsIDExMzIxMywgMTEzMjE5LCAKKyAgICAxMTMyMjUsIDExMzIzMSwgMTEzMjM3LCAxMTMyNDMsIDExMzI0OCwgMTEzMjUzLCAxMTMyNTgsIDExMzI2MywgMTEzMjY4LCAKKyAgICAxMTMyNzMsIDExMzI3OCwgMTEzMjgzLCAxMTMyODksIDExMzI5NSwgMTEzMzAwLCAxMTMzMDUsIDExMzMxMCwgMTEzMzE1LCAKKyAgICAxMTMzMjAsIDExMzMyNiwgMTEzMzMzLCAxMTMzMzcsIDExMzM0MSwgMTEzMzQ1LCAxMTMzNDksIDExMzM1MywgMTEzMzU3LCAKKyAgICAxMTMzNjEsIDExMzM2NSwgMTEzMzczLCAxMTMzODMsIDExMzM4NywgMTEzMzkxLCAxMTMzOTcsIDExMzQwMywgMTEzNDA5LCAKKyAgICAxMTM0MTUsIDExMzQyMSwgMTEzNDI3LCAxMTM0MzMsIDExMzQzOSwgMTEzNDQ1LCAxMTM0NTEsIDExMzQ1NywgMTEzNDYzLCAKKyAgICAxMTM0NjksIDExMzQ3NSwgMTEzNDc5LCAxMTM0ODMsIDExMzQ5MCwgMTEzNDk2LCAxMTM1MDIsIDExMzUwOCwgMTEzNTEzLCAKKyAgICAxMTM1MjAsIDExMzUyNSwgMTEzNTMxLCAxMTM1MzcsIDExMzU0MywgMTEzNTQ5LCAxMTM1NTQsIDExMzU1OCwgMTEzNTY0LCAKKyAgICAxMTM1NjgsIDExMzU3MiwgMTEzNTc2LCAxMTM1ODIsIDExMzU4OCwgMTEzNTkyLCAxMTM1OTgsIDExMzYwNCwgMTEzNjEwLCAKKyAgICAxMTM2MTYsIDExMzYyMiwgMTEzNjMwLCAxMTM2MzgsIDExMzY0NCwgMTEzNjUwLCAxMTM2NTYsIDExMzY2MiwgMTEzNjc0LCAKKyAgICAxMTM2ODYsIDExMzcwMCwgMTEzNzEyLCAxMTM3MjQsIDExMzczOCwgMTEzNzUyLCAxMTM3NjYsIDExMzc3MCwgMTEzNzc4LCAKKyAgICAxMTM3ODYsIDExMzc5MSwgMTEzNzk1LCAxMTM3OTksIDExMzgwMywgMTEzODA3LCAxMTM4MTEsIDExMzgxNSwgMTEzODE5LCAKKyAgICAxMTM4MjUsIDExMzgzMSwgMTEzODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTM4NDMsIDExMzg0OSwgCisgICAgMTEzODU1LCAxMTM4NjEsIDExMzg2NywgMTEzODczLCAxMTM4NzksIDExMzg4NSwgMTEzODkxLCAxMTM4OTcsIDExMzkwMywgCisgICAgMTEzOTA5LCAxMTM5MTUsIDExMzkyMSwgMTEzOTI3LCAxMTM5MzMsIDExMzkzOSwgMTEzOTQ1LCAxMTM5NTEsIDExMzk1NywgCisgICAgMTEzOTYzLCAxMTM5NjksIDExMzk3NSwgMTEzOTgxLCAxMTM5ODcsIDExMzk5MywgMTEzOTk5LCAxMTQwMDUsIDExNDAxMSwgCisgICAgMTE0MDE3LCAxMTQwMjMsIDExNDAyOSwgMTE0MDM1LCAxMTQwNDEsIDExNDA0NywgMTE0MDUzLCAxMTQwNTksIDExNDA2NSwgCisgICAgMTE0MDcxLCAxMTQwNzcsIDExNDA4MywgMTE0MDg5LCAxMTQwOTUsIDExNDEwMSwgMTE0MTA3LCAxMTQxMTMsIDExNDExOSwgCisgICAgMTE0MTI1LCAxMTQxMzEsIDExNDEzNywgMTE0MTQzLCAxMTQxNDksIDExNDE1NSwgMTE0MTYxLCAxMTQxNjcsIDExNDE3MywgCisgICAgMTE0MTc5LCAxMTQxODUsIDExNDE5MSwgMTE0MTk3LCAxMTQyMDMsIDExNDIwOSwgMTE0MjE1LCAxMTQyMjEsIDExNDIyNywgCisgICAgMTE0MjMzLCAxMTQyMzksIDExNDI0NCwgMTE0MjQ5LCAxMTQyNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjE5NiwgMTIyMTk4LCAxMjIyMDAsIAotICAgIDEyMjIwNCwgMTIyMjA4LCAxMjIyMTIsIDEyMjIyMSwgMTIyMjIzLCAxMjIyMjUsIDEyMjIyOCwgMTIyMjMwLCAxMjIyMzIsIAotICAgIDEyMjIzNiwgMTIyMjM4LCAxMjIyNDIsIDEyMjI0NCwgMTIyMjQ4LCAxMjIyNTAsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIAotICAgIDEyMjI2NiwgMTIyMjY4LCAxMjIyNzIsIDEyMjI3NCwgMTIyMjc4LCAxMjIyODIsIDEyMjI4NiwgMTIyMjkwLCAxMjIyOTIsIAotICAgIDEyMjI5NCwgMTIyMjk4LCAxMjIzMDIsIDEyMjMwNiwgMTIyMzEwLCAxMjIzMTIsIDEyMjMxNCwgMTIyMzE2LCAxMjIzMjEsIAotICAgIDEyMjMyNiwgMTIyMzI5LCAxMjIzMzcsIDEyMjM0NSwgMTIyMzQ3LCAxMjIzNTIsIDEyMjM1NSwgMTIyMzYwLCAxMjIzNzEsIAotICAgIDEyMjM3OCwgMTIyMzgzLCAxMjIzODgsIDEyMjM5MCwgMTIyMzk0LCAxMjIzOTYsIDEyMjQwMCwgMTIyNDAyLCAxMjI0MDYsIAotICAgIDEyMjQxMCwgMTIyNDEzLCAxMjI0MTYsIDEyMjQxOCwgMTIyNDIxLCAxMjI0MjMsIDEyMjQyNywgMTIyNDI5LCAxMjI0MzEsIAotICAgIDEyMjQzMywgMTIyNDM3LCAxMjI0MzksIDEyMjQ0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTE0MjU4LCAxMTQyNjMsIDExNDI3MCwgMTE0Mjc3LCAxMTQyODQsIDExNDI5MSwgMTE0Mjk2LCAxMTQzMDAsIDExNDMwNiwgCisgICAgMTE0MzEwLCAxMTQzMTQsIDExNDMyMCwgMTE0MzI0LCAxMTQzMjgsIDExNDMzMiwgMTE0MzM4LCAxMTQzNDUsIDExNDM0OSwgCisgICAgMTE0MzUzLCAxMTQzNTcsIDExNDM2MSwgMTE0MzY1LCAxMTQzNjksIDExNDM3NSwgMTE0Mzc5LCAxMTQzODMsIDExNDM4NywgCisgICAgMTE0MzkxLCAxMTQzOTUsIDExNDM5OSwgMTE0NDAzLCAxMTQ0MDcsIDExNDQxMSwgMTE0NDE1LCAxMTQ0MTksIDExNDQyMywgCisgICAgMTE0NDI4LCAxMTQ0MzIsIDExNDQzNiwgMTE0NDQwLCAxMTQ0NDQsIDExNDQ0OCwgMTE0NDUyLCAxMTQ0NTYsIDExNDQ2MCwgCisgICAgMTE0NDY0LCAxMTQ0NzEsIDExNDQ3NSwgMTE0NDgzLCAxMTQ0ODcsIDExNDQ5MSwgMTE0NDk1LCAxMTQ0OTksIDExNDUwMywgCisgICAgMTE0NTA3LCAxMTQ1MTEsIDExNDUxOCwgMTE0NTIyLCAxMTQ1MjYsIDExNDUzMCwgMTE0NTM0LCAxMTQ1MzgsIDExNDU0NCwgCisgICAgMTE0NTQ4LCAxMTQ1NTQsIDExNDU1OCwgMTE0NTYyLCAxMTQ1NjYsIDExNDU3MCwgMTE0NTc0LCAxMTQ1NzgsIDExNDU4MiwgCisgICAgMTE0NTg2LCAxMTQ1OTAsIDExNDU5NCwgMTE0NTk4LCAxMTQ2MDIsIDExNDYwNiwgMTE0NjEwLCAxMTQ2MTQsIDExNDYxOCwgCisgICAgMTE0NjIyLCAxMTQ2MjYsIDExNDYzMCwgMTE0NjM4LCAxMTQ2NDIsIDExNDY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTE0NjUwLCAxMTQ2NTgsIDExNDY2NiwgMTE0Njc0LCAxMTQ2ODIsIDExNDY5MCwgMTE0Njk4LCAxMTQ3MDYsIAorICAgIDExNDcxNCwgMTE0NzIyLCAxMTQ3MzAsIDExNDczOCwgMTE0NzQ2LCAxMTQ3NTQsIDExNDc2MiwgMTE0NzcwLCAxMTQ3NzgsIAorICAgIDExNDc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0Nzk0LCAxMTQ3OTgsIDExNDgwMywgCisgICAgMTE0ODA4LCAxMTQ4MTMsIDExNDgxNywgMTE0ODIyLCAxMTQ4MjcsIDExNDgzMiwgMTE0ODM2LCAxMTQ4NDEsIDExNDg0NiwgCisgICAgMTE0ODUwLCAxMTQ4NTQsIDExNDg1OSwgMTE0ODYzLCAxMTQ4NjgsIDExNDg3MywgMTE0ODc3LCAxMTQ4ODIsIDExNDg4NywgCisgICAgMTE0ODkxLCAxMTQ4OTYsIDExNDkwMSwgMTE0OTA2LCAxMTQ5MTEsIDExNDkxNiwgMTE0OTIwLCAxMTQ5MjUsIDExNDkzMCwgCisgICAgMTE0OTM1LCAxMTQ5MzksIDExNDk0NCwgMTE0OTQ5LCAxMTQ5NTQsIDExNDk1OCwgMTE0OTYzLCAxMTQ5NjgsIDExNDk3MiwgCisgICAgMTE0OTc2LCAxMTQ5ODEsIDExNDk4NSwgMTE0OTkwLCAxMTQ5OTUsIDExNDk5OSwgMTE1MDA0LCAxMTUwMDksIDExNTAxMywgCisgICAgMTE1MDE4LCAxMTUwMjMsIDExNTAyOCwgMTE1MDMzLCAxMTUwMzgsIDExNTA0MiwgMTE1MDQ3LCAxMTUwNTIsIDExNTA1NywgCisgICAgMTE1MDYxLCAxMTUwNjYsIDExNTA3MSwgMTE1MDc2LCAxMTUwODAsIDExNTA4NSwgMTE1MDkwLCAxMTUwOTQsIDExNTA5OCwgCisgICAgMTE1MTAzLCAxMTUxMDcsIDExNTExMiwgMTE1MTE3LCAxMTUxMjEsIDExNTEyNiwgMTE1MTMxLCAxMTUxMzUsIDExNTE0MCwgCisgICAgMTE1MTQ1LCAxMTUxNTAsIDExNTE1NSwgMTE1MTYwLCAxMTUxNjQsIDExNTE2OSwgMTE1MTc0LCAxMTUxNzksIDExNTE4MywgCisgICAgMTE1MTg4LCAwLCAxMTUxOTMsIDExNTE5NywgMTE1MjAyLCAxMTUyMDcsIDExNTIxMSwgMTE1MjE1LCAxMTUyMjAsIAorICAgIDExNTIyNCwgMTE1MjI5LCAxMTUyMzQsIDExNTIzOCwgMTE1MjQzLCAxMTUyNDgsIDExNTI1MiwgMTE1MjU3LCAxMTUyNjIsIAorICAgIDExNTI2NywgMTE1MjcyLCAxMTUyNzcsIDExNTI4MiwgMTE1Mjg4LCAxMTUyOTQsIDExNTMwMCwgMTE1MzA1LCAxMTUzMTEsIAorICAgIDExNTMxNywgMTE1MzIzLCAxMTUzMjgsIDExNTMzNCwgMTE1MzQwLCAxMTUzNDUsIDExNTM1MCwgMTE1MzU2LCAxMTUzNjEsIAorICAgIDExNTM2NywgMTE1MzczLCAxMTUzNzgsIDExNTM4NCwgMTE1MzkwLCAxMTUzOTUsIDExNTQwMSwgMTE1NDA3LCAxMTU0MTMsIAorICAgIDExNTQxOSwgMTE1NDI1LCAxMTU0MzAsIDExNTQzNiwgMTE1NDQyLCAxMTU0NDgsIDExNTQ1MywgMTE1NDU5LCAxMTU0NjUsIAorICAgIDExNTQ3MSwgMTE1NDc2LCAxMTU0ODIsIDExNTQ4OCwgMTE1NDkzLCAxMTU0OTgsIDExNTUwNCwgMTE1NTA5LCAxMTU1MTUsIAorICAgIDExNTUyMSwgMTE1NTI2LCAxMTU1MzIsIDExNTUzOCwgMTE1NTQzLCAxMTU1NDksIDExNTU1NSwgMTE1NTYxLCAxMTU1NjcsIAorICAgIDExNTU3MywgMCwgMTE1NTc3LCAxMTU1ODIsIDAsIDAsIDExNTU4NywgMCwgMCwgMTE1NTkyLCAxMTU1OTcsIDAsIDAsIAorICAgIDExNTYwMiwgMTE1NjA3LCAxMTU2MTEsIDExNTYxNiwgMCwgMTE1NjIxLCAxMTU2MjYsIDExNTYzMSwgMTE1NjM1LCAKKyAgICAxMTU2NDAsIDExNTY0NSwgMTE1NjUwLCAxMTU2NTUsIDExNTY2MCwgMTE1NjY0LCAxMTU2NjksIDExNTY3NCwgMCwgCisgICAgMTE1Njc5LCAwLCAxMTU2ODQsIDExNTY4OSwgMTE1NjkzLCAxMTU2OTgsIDExNTcwMywgMTE1NzA3LCAxMTU3MTEsIDAsIAorICAgIDExNTcxNiwgMTE1NzIxLCAxMTU3MjYsIDExNTczMCwgMTE1NzM1LCAxMTU3NDAsIDExNTc0NCwgMTE1NzQ5LCAxMTU3NTQsIAorICAgIDExNTc1OSwgMTE1NzY0LCAxMTU3NjksIDExNTc3NCwgMTE1NzgwLCAxMTU3ODYsIDExNTc5MiwgMTE1Nzk3LCAxMTU4MDMsIAorICAgIDExNTgwOSwgMTE1ODE1LCAxMTU4MjAsIDExNTgyNiwgMTE1ODMyLCAxMTU4MzcsIDExNTg0MiwgMTE1ODQ4LCAxMTU4NTMsIAorICAgIDExNTg1OSwgMTE1ODY1LCAxMTU4NzAsIDExNTg3NiwgMTE1ODgyLCAxMTU4ODcsIDExNTg5MywgMTE1ODk5LCAxMTU5MDUsIAorICAgIDExNTkxMSwgMTE1OTE3LCAxMTU5MjIsIDExNTkyOCwgMTE1OTM0LCAxMTU5NDAsIDExNTk0NSwgMTE1OTUxLCAxMTU5NTcsIAorICAgIDExNTk2MywgMTE1OTY4LCAxMTU5NzQsIDExNTk4MCwgMTE1OTg1LCAxMTU5OTAsIDExNTk5NiwgMTE2MDAxLCAxMTYwMDcsIAorICAgIDExNjAxMywgMTE2MDE4LCAxMTYwMjQsIDExNjAzMCwgMTE2MDM1LCAxMTYwNDEsIDExNjA0NywgMTE2MDUzLCAxMTYwNTksIAorICAgIDExNjA2NSwgMTE2MDY5LCAwLCAxMTYwNzQsIDExNjA3OSwgMTE2MDgzLCAxMTYwODgsIDAsIDAsIDExNjA5MywgMTE2MDk4LCAKKyAgICAxMTYxMDMsIDExNjEwNywgMTE2MTExLCAxMTYxMTYsIDExNjEyMCwgMTE2MTI1LCAwLCAxMTYxMzAsIDExNjEzNSwgCisgICAgMTE2MTQwLCAxMTYxNDQsIDExNjE0OSwgMTE2MTU0LCAxMTYxNTksIDAsIDExNjE2NCwgMTE2MTY4LCAxMTYxNzMsIAorICAgIDExNjE3OCwgMTE2MTgzLCAxMTYxODcsIDExNjE5MiwgMTE2MTk3LCAxMTYyMDIsIDExNjIwNiwgMTE2MjExLCAxMTYyMTYsIAorICAgIDExNjIyMCwgMTE2MjI0LCAxMTYyMjksIDExNjIzMywgMTE2MjM4LCAxMTYyNDMsIDExNjI0NywgMTE2MjUyLCAxMTYyNTcsIAorICAgIDExNjI2MSwgMTE2MjY2LCAxMTYyNzEsIDExNjI3NiwgMTE2MjgxLCAxMTYyODYsIDExNjI5MCwgMCwgMTE2Mjk1LCAKKyAgICAxMTYzMDAsIDExNjMwNCwgMTE2MzA5LCAwLCAxMTYzMTQsIDExNjMxOCwgMTE2MzIzLCAxMTYzMjgsIDExNjMzMiwgMCwgCisgICAgMTE2MzM2LCAwLCAwLCAwLCAxMTYzNDAsIDExNjM0NSwgMTE2MzUwLCAxMTYzNTQsIDExNjM1OSwgMTE2MzY0LCAxMTYzNjksIAorICAgIDAsIDExNjM3NCwgMTE2Mzc4LCAxMTYzODMsIDExNjM4OCwgMTE2MzkzLCAxMTYzOTcsIDExNjQwMiwgMTE2NDA3LCAKKyAgICAxMTY0MTIsIDExNjQxNiwgMTE2NDIxLCAxMTY0MjYsIDExNjQzMCwgMTE2NDM0LCAxMTY0MzksIDExNjQ0MywgMTE2NDQ4LCAKKyAgICAxMTY0NTMsIDExNjQ1NywgMTE2NDYyLCAxMTY0NjcsIDExNjQ3MSwgMTE2NDc2LCAxMTY0ODEsIDExNjQ4NiwgMTE2NDkxLCAKKyAgICAxMTY0OTYsIDExNjUwMSwgMTE2NTA3LCAxMTY1MTMsIDExNjUxOSwgMTE2NTI0LCAxMTY1MzAsIDExNjUzNiwgMTE2NTQyLCAKKyAgICAxMTY1NDcsIDExNjU1MywgMTE2NTU5LCAxMTY1NjQsIDExNjU2OSwgMTE2NTc1LCAxMTY1ODAsIDExNjU4NiwgMTE2NTkyLCAKKyAgICAxMTY1OTcsIDExNjYwMywgMTE2NjA5LCAxMTY2MTQsIDExNjYyMCwgMTE2NjI2LCAxMTY2MzIsIDExNjYzOCwgMTE2NjQ0LCAKKyAgICAxMTY2NDksIDExNjY1NSwgMTE2NjYxLCAxMTY2NjcsIDExNjY3MiwgMTE2Njc4LCAxMTY2ODQsIDExNjY5MCwgMTE2Njk1LCAKKyAgICAxMTY3MDEsIDExNjcwNywgMTE2NzEyLCAxMTY3MTcsIDExNjcyMywgMTE2NzI4LCAxMTY3MzQsIDExNjc0MCwgMTE2NzQ1LCAKKyAgICAxMTY3NTEsIDExNjc1NywgMTE2NzYyLCAxMTY3NjgsIDExNjc3NCwgMTE2NzgwLCAxMTY3ODYsIDExNjc5MiwgMTE2Nzk2LCAKKyAgICAxMTY4MDEsIDExNjgwNiwgMTE2ODExLCAxMTY4MTUsIDExNjgyMCwgMTE2ODI1LCAxMTY4MzAsIDExNjgzNCwgMTE2ODM5LCAKKyAgICAxMTY4NDQsIDExNjg0OCwgMTE2ODUyLCAxMTY4NTcsIDExNjg2MSwgMTE2ODY2LCAxMTY4NzEsIDExNjg3NSwgMTE2ODgwLCAKKyAgICAxMTY4ODUsIDExNjg4OSwgMTE2ODk0LCAxMTY4OTksIDExNjkwNCwgMTE2OTA5LCAxMTY5MTQsIDExNjkxOCwgMTE2OTIzLCAKKyAgICAxMTY5MjgsIDExNjkzMywgMTE2OTM3LCAxMTY5NDIsIDExNjk0NywgMTE2OTUyLCAxMTY5NTYsIDExNjk2MSwgMTE2OTY2LCAKKyAgICAxMTY5NzAsIDExNjk3NCwgMTE2OTc5LCAxMTY5ODMsIDExNjk4OCwgMTE2OTkzLCAxMTY5OTcsIDExNzAwMiwgMTE3MDA3LCAKKyAgICAxMTcwMTEsIDExNzAxNiwgMTE3MDIxLCAxMTcwMjYsIDExNzAzMSwgMTE3MDM2LCAxMTcwNDEsIDExNzA0NywgMTE3MDUzLCAKKyAgICAxMTcwNTksIDExNzA2NCwgMTE3MDcwLCAxMTcwNzYsIDExNzA4MiwgMTE3MDg3LCAxMTcwOTMsIDExNzA5OSwgMTE3MTA0LCAKKyAgICAxMTcxMDksIDExNzExNSwgMTE3MTIwLCAxMTcxMjYsIDExNzEzMiwgMTE3MTM3LCAxMTcxNDMsIDExNzE0OSwgMTE3MTU0LCAKKyAgICAxMTcxNjAsIDExNzE2NiwgMTE3MTcyLCAxMTcxNzgsIDExNzE4NCwgMTE3MTg5LCAxMTcxOTUsIDExNzIwMSwgMTE3MjA3LCAKKyAgICAxMTcyMTIsIDExNzIxOCwgMTE3MjI0LCAxMTcyMzAsIDExNzIzNSwgMTE3MjQxLCAxMTcyNDcsIDExNzI1MiwgMTE3MjU3LCAKKyAgICAxMTcyNjMsIDExNzI2OCwgMTE3Mjc0LCAxMTcyODAsIDExNzI4NSwgMTE3MjkxLCAxMTcyOTcsIDExNzMwMiwgMTE3MzA4LCAKKyAgICAxMTczMTQsIDExNzMyMCwgMTE3MzI2LCAxMTczMzIsIDExNzMzNywgMTE3MzQzLCAxMTczNDksIDExNzM1NSwgMTE3MzYwLCAKKyAgICAxMTczNjYsIDExNzM3MiwgMTE3Mzc4LCAxMTczODMsIDExNzM4OSwgMTE3Mzk1LCAxMTc0MDAsIDExNzQwNSwgMTE3NDExLCAKKyAgICAxMTc0MTYsIDExNzQyMiwgMTE3NDI4LCAxMTc0MzMsIDExNzQzOSwgMTE3NDQ1LCAxMTc0NTAsIDExNzQ1NiwgMTE3NDYyLCAKKyAgICAxMTc0NjgsIDExNzQ3NCwgMTE3NDgwLCAxMTc0ODUsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDMsIDExNzUwOCwgMTE3NTE0LCAKKyAgICAxMTc1MjAsIDExNzUyNiwgMTE3NTMxLCAxMTc1MzcsIDExNzU0MywgMTE3NTQ4LCAxMTc1NTMsIDExNzU1OSwgMTE3NTY0LCAKKyAgICAxMTc1NzAsIDExNzU3NiwgMTE3NTgxLCAxMTc1ODcsIDExNzU5MywgMTE3NTk4LCAxMTc2MDQsIDExNzYxMCwgMTE3NjE2LCAKKyAgICAxMTc2MjIsIDExNzYyOCwgMTE3NjM0LCAxMTc2NDEsIDExNzY0OCwgMTE3NjU1LCAxMTc2NjEsIDExNzY2OCwgMTE3Njc1LCAKKyAgICAxMTc2ODIsIDExNzY4OCwgMTE3Njk1LCAxMTc3MDIsIDExNzcwOCwgMTE3NzE0LCAxMTc3MjEsIDExNzcyNywgMTE3NzM0LCAKKyAgICAxMTc3NDEsIDExNzc0NywgMTE3NzU0LCAxMTc3NjEsIDExNzc2NywgMTE3Nzc0LCAxMTc3ODEsIDExNzc4OCwgMTE3Nzk1LCAKKyAgICAxMTc4MDIsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjIsIDExNzgyOSwgMTE3ODM1LCAxMTc4NDIsIDExNzg0OSwgMTE3ODU2LCAKKyAgICAxMTc4NjIsIDExNzg2OSwgMTE3ODc2LCAxMTc4ODIsIDExNzg4OCwgMTE3ODk1LCAxMTc5MDEsIDExNzkwOCwgMTE3OTE1LCAKKyAgICAxMTc5MjEsIDExNzkyOCwgMTE3OTM1LCAxMTc5NDEsIDExNzk0OCwgMTE3OTU1LCAxMTc5NjIsIDExNzk2OSwgMTE3OTc2LCAKKyAgICAxMTc5ODEsIDExNzk4NywgMTE3OTkzLCAxMTc5OTksIDExODAwNCwgMTE4MDEwLCAxMTgwMTYsIDExODAyMiwgMTE4MDI3LCAKKyAgICAxMTgwMzMsIDExODAzOSwgMTE4MDQ0LCAxMTgwNDksIDExODA1NSwgMTE4MDYwLCAxMTgwNjYsIDExODA3MiwgMTE4MDc3LCAKKyAgICAxMTgwODMsIDExODA4OSwgMTE4MDk0LCAxMTgxMDAsIDExODEwNiwgMTE4MTEyLCAxMTgxMTgsIDExODEyNCwgMTE4MTI5LCAKKyAgICAxMTgxMzUsIDExODE0MSwgMTE4MTQ3LCAxMTgxNTIsIDExODE1OCwgMTE4MTY0LCAxMTgxNzAsIDExODE3NSwgMTE4MTgxLCAKKyAgICAxMTgxODcsIDExODE5MiwgMTE4MTk3LCAxMTgyMDMsIDExODIwOCwgMTE4MjE0LCAxMTgyMjAsIDExODIyNSwgMTE4MjMxLCAKKyAgICAxMTgyMzcsIDExODI0MiwgMTE4MjQ4LCAxMTgyNTQsIDExODI2MCwgMTE4MjY2LCAxMTgyNzIsIDExODI3OCwgMCwgMCwgCisgICAgMTE4Mjg1LCAxMTgyOTAsIDExODI5NSwgMTE4MzAwLCAxMTgzMDUsIDExODMxMCwgMTE4MzE1LCAxMTgzMjAsIDExODMyNSwgCisgICAgMTE4MzMwLCAxMTgzMzUsIDExODM0MCwgMTE4MzQ1LCAxMTgzNTAsIDExODM1NSwgMTE4MzYwLCAxMTgzNjUsIDExODM3MCwgCisgICAgMTE4Mzc2LCAxMTgzODEsIDExODM4NiwgMTE4MzkxLCAxMTgzOTYsIDExODQwMSwgMTE4NDA2LCAxMTg0MTEsIDExODQxNSwgCisgICAgMTE4NDIwLCAxMTg0MjUsIDExODQzMCwgMTE4NDM1LCAxMTg0NDAsIDExODQ0NSwgMTE4NDUwLCAxMTg0NTUsIDExODQ2MCwgCisgICAgMTE4NDY1LCAxMTg0NzAsIDExODQ3NSwgMTE4NDgwLCAxMTg0ODUsIDExODQ5MCwgMTE4NDk1LCAxMTg1MDAsIDExODUwNiwgCisgICAgMTE4NTExLCAxMTg1MTYsIDExODUyMSwgMTE4NTI2LCAxMTg1MzEsIDExODUzNiwgMTE4NTQxLCAxMTg1NDcsIDExODU1MiwgCisgICAgMTE4NTU3LCAxMTg1NjIsIDExODU2NywgMTE4NTcyLCAxMTg1NzcsIDExODU4MiwgMTE4NTg3LCAxMTg1OTIsIDExODU5NywgCisgICAgMTE4NjAyLCAxMTg2MDcsIDExODYxMiwgMTE4NjE3LCAxMTg2MjIsIDExODYyNywgMTE4NjMyLCAxMTg2MzcsIDExODY0MiwgCisgICAgMTE4NjQ3LCAxMTg2NTIsIDExODY1NywgMTE4NjYyLCAxMTg2NjgsIDExODY3MywgMTE4Njc4LCAxMTg2ODMsIDExODY4OCwgCisgICAgMTE4NjkzLCAxMTg2OTgsIDExODcwMywgMTE4NzA3LCAxMTg3MTIsIDExODcxNywgMTE4NzIyLCAxMTg3MjcsIDExODczMiwgCisgICAgMTE4NzM3LCAxMTg3NDIsIDExODc0NywgMTE4NzUyLCAxMTg3NTcsIDExODc2MiwgMTE4NzY3LCAxMTg3NzIsIDExODc3NywgCisgICAgMTE4NzgyLCAxMTg3ODcsIDExODc5MiwgMTE4Nzk4LCAxMTg4MDMsIDExODgwOCwgMTE4ODEzLCAxMTg4MTgsIDExODgyMywgCisgICAgMTE4ODI4LCAxMTg4MzMsIDExODgzOSwgMTE4ODQ0LCAxMTg4NDksIDExODg1NCwgMTE4ODU5LCAxMTg4NjQsIDExODg2OSwgCisgICAgMTE4ODc1LCAxMTg4ODEsIDExODg4NywgMTE4ODkzLCAxMTg4OTksIDExODkwNSwgMTE4OTExLCAxMTg5MTcsIDExODkyMywgCisgICAgMTE4OTI5LCAxMTg5MzUsIDExODk0MSwgMTE4OTQ3LCAxMTg5NTMsIDExODk1OSwgMTE4OTY1LCAxMTg5NzEsIDExODk3OCwgCisgICAgMTE4OTg0LCAxMTg5OTAsIDExODk5NiwgMTE5MDAyLCAxMTkwMDgsIDExOTAxNCwgMTE5MDIwLCAxMTkwMjUsIDExOTAzMSwgCisgICAgMTE5MDM3LCAxMTkwNDMsIDExOTA0OSwgMTE5MDU1LCAxMTkwNjEsIDExOTA2NywgMTE5MDczLCAxMTkwNzksIDExOTA4NSwgCisgICAgMTE5MDkxLCAxMTkwOTcsIDExOTEwMywgMTE5MTA5LCAxMTkxMTUsIDExOTEyMSwgMTE5MTI3LCAxMTkxMzQsIDExOTE0MCwgCisgICAgMTE5MTQ2LCAxMTkxNTIsIDExOTE1OCwgMTE5MTY0LCAxMTkxNzAsIDExOTE3NiwgMTE5MTgzLCAxMTkxODksIDExOTE5NSwgCisgICAgMTE5MjAxLCAxMTkyMDcsIDExOTIxMywgMTE5MjE5LCAxMTkyMjUsIDExOTIzMSwgMTE5MjM3LCAxMTkyNDMsIDExOTI0OSwgCisgICAgMTE5MjU1LCAxMTkyNjEsIDExOTI2NywgMTE5MjczLCAxMTkyNzksIDExOTI4NSwgMTE5MjkxLCAxMTkyOTcsIDExOTMwMywgCisgICAgMTE5MzA5LCAxMTkzMTUsIDExOTMyMSwgMTE5MzI4LCAxMTkzMzQsIDExOTM0MCwgMTE5MzQ2LCAxMTkzNTIsIDExOTM1OCwgCisgICAgMTE5MzY0LCAxMTkzNzAsIDExOTM3NSwgMTE5MzgxLCAxMTkzODcsIDExOTM5MywgMTE5Mzk5LCAxMTk0MDUsIDExOTQxMSwgCisgICAgMTE5NDE3LCAxMTk0MjMsIDExOTQyOSwgMTE5NDM1LCAxMTk0NDEsIDExOTQ0NywgMTE5NDUzLCAxMTk0NTksIDExOTQ2NSwgCisgICAgMTE5NDcxLCAxMTk0NzcsIDExOTQ4NCwgMTE5NDkwLCAxMTk0OTYsIDExOTUwMiwgMTE5NTA4LCAxMTk1MTQsIDExOTUyMCwgCisgICAgMTE5NTI2LCAxMTk1MzMsIDExOTUzOSwgMTE5NTQ1LCAxMTk1NTEsIDExOTU1NywgMTE5NTYzLCAxMTk1NjksIDExOTU3NiwgCisgICAgMTE5NTgzLCAxMTk1OTAsIDExOTU5NywgMTE5NjA0LCAxMTk2MTEsIDExOTYxOCwgMTE5NjI1LCAxMTk2MzIsIDExOTYzOSwgCisgICAgMTE5NjQ2LCAxMTk2NTMsIDExOTY2MCwgMTE5NjY3LCAxMTk2NzQsIDExOTY4MSwgMTE5Njg4LCAxMTk2OTYsIDExOTcwMywgCisgICAgMTE5NzEwLCAxMTk3MTcsIDExOTcyNCwgMTE5NzMxLCAxMTk3MzgsIDExOTc0NSwgMTE5NzUxLCAxMTk3NTgsIDExOTc2NSwgCisgICAgMTE5NzcyLCAxMTk3NzksIDExOTc4NiwgMTE5NzkzLCAxMTk4MDAsIDExOTgwNywgMTE5ODE0LCAxMTk4MjEsIDExOTgyOCwgCisgICAgMTE5ODM1LCAxMTk4NDIsIDExOTg0OSwgMTE5ODU2LCAxMTk4NjMsIDExOTg3MCwgMTE5ODc4LCAxMTk4ODUsIDExOTg5MiwgCisgICAgMTE5ODk5LCAxMTk5MDYsIDExOTkxMywgMTE5OTIwLCAxMTk5MjcsIDExOTkzNSwgMTE5OTQyLCAxMTk5NDksIDExOTk1NiwgCisgICAgMTE5OTYzLCAxMTk5NzAsIDExOTk3NywgMTE5OTgyLCAwLCAwLCAxMTk5ODcsIDExOTk5MiwgMTE5OTk2LCAxMjAwMDAsIAorICAgIDEyMDAwNCwgMTIwMDA4LCAxMjAwMTIsIDEyMDAxNiwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMzLCAxMjAwMzcsIAorICAgIDEyMDA0MSwgMTIwMDQ1LCAxMjAwNDksIDEyMDA1MywgMTIwMDU3LCAxMjAwNjEsIDEyMDA2NSwgMTIwMDY5LCAxMjAwNzQsIAorICAgIDEyMDA3OCwgMTIwMDgyLCAxMjAwODYsIDEyMDA5MCwgMTIwMDk0LCAxMjAwOTgsIDEyMDEwMiwgMTIwMTA2LCAxMjAxMTAsIAorICAgIDEyMDExNiwgMTIwMTIxLCAxMjAxMjYsIDEyMDEzMSwgMTIwMTM2LCAxMjAxNDEsIDEyMDE0NiwgMTIwMTUxLCAxMjAxNTYsIAorICAgIDEyMDE2MSwgMTIwMTY3LCAxMjAxNzIsIDEyMDE3NywgMTIwMTgyLCAxMjAxODcsIDEyMDE5MiwgMTIwMTk3LCAxMjAyMDIsIAorICAgIDEyMDIwNywgMTIwMjEyLCAxMjAyMTYsIDEyMDIyMCwgMTIwMjI0LCAwLCAxMjAyMjgsIDEyMDIzMiwgMTIwMjM2LCAKKyAgICAxMjAyNDAsIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDEyMDI1NiwgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAKKyAgICAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAKKyAgICAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjYsIDEyMDMzMiwgMTIwMzM4LCAwLCAxMjAzNDQsIDEyMDM0OSwgMCwgCisgICAgMTIwMzU0LCAwLCAwLCAxMjAzNTksIDAsIDEyMDM2NCwgMTIwMzY5LCAxMjAzNzQsIDEyMDM3OSwgMTIwMzg0LCAxMjAzODksIAorICAgIDEyMDM5NCwgMTIwMzk5LCAxMjA0MDQsIDEyMDQwOSwgMCwgMTIwNDE0LCAxMjA0MTksIDEyMDQyNCwgMTIwNDI5LCAwLCAKKyAgICAxMjA0MzQsIDAsIDEyMDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwNDQ0LCAwLCAwLCAwLCAwLCAxMjA0NTAsIDAsIAorICAgIDEyMDQ1NiwgMCwgMTIwNDYyLCAwLCAxMjA0NjgsIDEyMDQ3NCwgMTIwNDgwLCAwLCAxMjA0ODYsIDEyMDQ5MiwgMCwgCisgICAgMTIwNDk4LCAwLCAwLCAxMjA1MDQsIDAsIDEyMDUxMCwgMCwgMTIwNTE2LCAwLCAxMjA1MjIsIDAsIDEyMDUzMCwgMCwgCisgICAgMTIwNTM4LCAxMjA1NDQsIDAsIDEyMDU1MCwgMCwgMCwgMTIwNTU2LCAxMjA1NjIsIDEyMDU2OCwgMTIwNTc0LCAwLCAKKyAgICAxMjA1ODAsIDEyMDU4NiwgMTIwNTkyLCAxMjA1OTgsIDEyMDYwNCwgMTIwNjEwLCAxMjA2MTYsIDAsIDEyMDYyMiwgCisgICAgMTIwNjI4LCAxMjA2MzQsIDEyMDY0MCwgMCwgMTIwNjQ2LCAxMjA2NTIsIDEyMDY1OCwgMTIwNjY0LCAwLCAxMjA2NzIsIDAsIAorICAgIDEyMDY4MCwgMTIwNjg2LCAxMjA2OTIsIDEyMDY5OCwgMTIwNzA0LCAxMjA3MTAsIDEyMDcxNiwgMTIwNzIyLCAxMjA3MjgsIAorICAgIDEyMDczNCwgMCwgMTIwNzQwLCAxMjA3NDYsIDEyMDc1MiwgMTIwNzU4LCAxMjA3NjQsIDEyMDc3MCwgMTIwNzc2LCAKKyAgICAxMjA3ODIsIDEyMDc4OCwgMTIwNzk0LCAxMjA4MDAsIDEyMDgwNiwgMTIwODEyLCAxMjA4MTgsIDEyMDgyNCwgMTIwODMwLCAKKyAgICAxMjA4MzYsIDAsIDAsIDAsIDAsIDAsIDEyMDg0MiwgMTIwODQ3LCAxMjA4NTIsIDAsIDEyMDg1NywgMTIwODYyLCAxMjA4NjcsIAorICAgIDEyMDg3MiwgMTIwODc3LCAwLCAxMjA4ODIsIDEyMDg4NywgMTIwODkyLCAxMjA4OTcsIDEyMDkwMiwgMTIwOTA3LCAKKyAgICAxMjA5MTIsIDEyMDkxNywgMTIwOTIyLCAxMjA5MjcsIDEyMDkzMiwgMTIwOTM3LCAxMjA5NDIsIDEyMDk0NywgMTIwOTUyLCAKKyAgICAxMjA5NTcsIDEyMDk2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNDQ2LCAKLSAgICAxMjI0NTEsIDEyMjQ1NiwgMTIyNDYxLCAxMjI0NjYsIDEyMjQ3MSwgMTIyNDc2LCAxMjI0ODMsIDEyMjQ5MCwgMTIyNDk3LCAKLSAgICAxMjI1MDQsIDEyMjUwOSwgMTIyNTE0LCAxMjI1MTksIDEyMjUyNCwgMTIyNTMxLCAxMjI1MzcsIDEyMjU0NCwgMTIyNTUxLCAKLSAgICAxMjI1NTgsIDEyMjU2MywgMTIyNTY4LCAxMjI1NzMsIDEyMjU3OCwgMTIyNTgzLCAxMjI1OTAsIDEyMjU5NywgMTIyNjAyLCAKLSAgICAxMjI2MDcsIDEyMjYxNCwgMTIyNjIxLCAxMjI2MjksIDEyMjYzNywgMTIyNjQ0LCAxMjI2NTEsIDEyMjY1OSwgMTIyNjY3LCAKLSAgICAxMjI2NzUsIDEyMjY4MiwgMTIyNjkyLCAxMjI3MDMsIDEyMjcwOCwgMTIyNzE1LCAxMjI3MjIsIDEyMjcyOSwgMTIyNzM3LCAKLSAgICAxMjI3NDUsIDEyMjc1NiwgMTIyNzY0LCAxMjI3NzIsIDEyMjc4MCwgMTIyNzg1LCAxMjI3OTAsIDEyMjc5NSwgMTIyODAwLCAKLSAgICAxMjI4MDUsIDEyMjgxMCwgMTIyODE1LCAxMjI4MjAsIDEyMjgyNSwgMTIyODMwLCAxMjI4MzUsIDEyMjg0MCwgMTIyODQ3LCAKLSAgICAxMjI4NTIsIDEyMjg1NywgMTIyODY0LCAxMjI4NjksIDEyMjg3NCwgMTIyODc5LCAxMjI4ODQsIDEyMjg4OSwgMTIyODk0LCAKLSAgICAxMjI4OTksIDEyMjkwNCwgMTIyOTA5LCAxMjI5MTQsIDEyMjkxOSwgMTIyOTI0LCAxMjI5MzEsIDEyMjkzOSwgMTIyOTQ0LCAKLSAgICAxMjI5NDksIDEyMjk1NiwgMTIyOTYxLCAxMjI5NjYsIDEyMjk3MSwgMTIyOTc4LCAxMjI5ODMsIDEyMjk5MCwgMTIyOTk1LCAKLSAgICAxMjMwMDIsIDEyMzAwNywgMTIzMDE2LCAxMjMwMjUsIDEyMzAzMCwgMTIzMDM1LCAxMjMwNDAsIDEyMzA0NSwgMTIzMDUwLCAKLSAgICAxMjMwNTUsIDEyMzA2MCwgMTIzMDY1LCAxMjMwNzAsIDEyMzA3NSwgMTIzMDgwLCAxMjMwODUsIDEyMzA5MCwgMTIzMDk4LCAKLSAgICAxMjMxMDYsIDEyMzExMSwgMTIzMTE2LCAxMjMxMjEsIDEyMzEyNiwgMTIzMTMxLCAxMjMxMzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzE0MywgMTIzMTQ3LCAxMjMxNTEsIDEyMzE1NSwgMTIzMTU5LCAxMjMxNjMsIDEyMzE2NywgCi0gICAgMTIzMTcxLCAxMjMxNzUsIDEyMzE3OSwgMTIzMTgzLCAxMjMxODcsIDEyMzE5MSwgMTIzMTk1LCAxMjMxOTksIDEyMzIwMywgCi0gICAgMTIzMjA3LCAxMjMyMTEsIDEyMzIxNSwgMTIzMjE5LCAxMjMyMjMsIDEyMzIyNywgMTIzMjMxLCAxMjMyMzUsIDEyMzIzOSwgCi0gICAgMTIzMjQzLCAxMjMyNDcsIDEyMzI1MSwgMTIzMjU1LCAxMjMyNTksIDEyMzI2MywgMTIzMjY3LCAxMjMyNzEsIDEyMzI3NSwgCi0gICAgMTIzMjc5LCAxMjMyODMsIDEyMzI4NywgMTIzMjkxLCAxMjMyOTUsIDEyMzI5OSwgMTIzMzAzLCAxMjMzMDcsIDEyMzMxMSwgCi0gICAgMTIzMzE1LCAxMjMzMTksIDEyMzMyMywgMTIzMzI3LCAxMjMzMzEsIDEyMzMzNSwgMTIzMzM5LCAxMjMzNDMsIDEyMzM0NywgCi0gICAgMTIzMzUxLCAxMjMzNTUsIDEyMzM1OSwgMTIzMzYzLCAxMjMzNjcsIDEyMzM3MSwgMTIzMzc1LCAxMjMzNzksIDEyMzM4MywgCi0gICAgMTIzMzg3LCAxMjMzOTEsIDEyMzM5NSwgMTIzMzk5LCAxMjM0MDMsIDEyMzQwNywgMTIzNDExLCAxMjM0MTUsIDEyMzQxOSwgCi0gICAgMTIzNDIzLCAxMjM0MjcsIDEyMzQzMSwgMTIzNDM1LCAxMjM0MzksIDEyMzQ0MywgMTIzNDQ3LCAxMjM0NTEsIDEyMzQ1NSwgCi0gICAgMTIzNDU5LCAxMjM0NjMsIDEyMzQ2NywgMTIzNDcxLCAxMjM0NzUsIDEyMzQ3OSwgMTIzNDgzLCAxMjM0ODcsIDEyMzQ5MSwgCi0gICAgMTIzNDk1LCAxMjM0OTksIDEyMzUwMywgMTIzNTA3LCAxMjM1MTEsIDEyMzUxNSwgMTIzNTE5LCAxMjM1MjMsIDEyMzUyNywgCi0gICAgMTIzNTMxLCAxMjM1MzUsIDEyMzUzOSwgMTIzNTQzLCAxMjM1NDcsIDEyMzU1MSwgMTIzNTU1LCAxMjM1NTksIDEyMzU2MywgCi0gICAgMTIzNTY3LCAxMjM1NzEsIDEyMzU3NSwgMTIzNTc5LCAxMjM1ODMsIDEyMzU4NywgMTIzNTkxLCAxMjM1OTUsIDEyMzU5OSwgCi0gICAgMTIzNjAzLCAxMjM2MDcsIDEyMzYxMSwgMTIzNjE1LCAxMjM2MTksIDEyMzYyMywgMTIzNjI3LCAxMjM2MzEsIDEyMzYzNSwgCi0gICAgMTIzNjM5LCAxMjM2NDMsIDEyMzY0NywgMTIzNjUxLCAxMjM2NTUsIDEyMzY1OSwgMTIzNjYzLCAxMjM2NjcsIDEyMzY3MSwgCi0gICAgMTIzNjc1LCAxMjM2NzksIDEyMzY4MywgMTIzNjg3LCAxMjM2OTEsIDEyMzY5NSwgMTIzNjk5LCAxMjM3MDMsIDEyMzcwNywgCi0gICAgMTIzNzExLCAxMjM3MTUsIDEyMzcxOSwgMTIzNzIzLCAxMjM3MjcsIDEyMzczMSwgMTIzNzM1LCAxMjM3MzksIDEyMzc0MywgCi0gICAgMTIzNzQ3LCAxMjM3NTEsIDEyMzc1NSwgMTIzNzU5LCAxMjM3NjMsIDEyMzc2NywgMTIzNzcxLCAxMjM3NzUsIDEyMzc3OSwgCi0gICAgMTIzNzgzLCAxMjM3ODcsIDEyMzc5MSwgMTIzNzk1LCAxMjM3OTksIDEyMzgwMywgMTIzODA3LCAxMjM4MTEsIDEyMzgxNSwgCi0gICAgMTIzODE5LCAxMjM4MjMsIDEyMzgyNywgMTIzODMxLCAxMjM4MzUsIDEyMzgzOSwgMTIzODQzLCAxMjM4NDcsIDEyMzg1MSwgCi0gICAgMTIzODU1LCAxMjM4NTksIDEyMzg2MywgMTIzODY3LCAxMjM4NzEsIDEyMzg3NSwgMTIzODc5LCAxMjM4ODMsIDEyMzg4NywgCi0gICAgMTIzODkxLCAxMjM4OTUsIDEyMzg5OSwgMTIzOTAzLCAxMjM5MDcsIDEyMzkxMSwgMTIzOTE1LCAxMjM5MTksIDEyMzkyMywgCi0gICAgMTIzOTI3LCAxMjM5MzEsIDEyMzkzNSwgMTIzOTM5LCAxMjM5NDMsIDEyMzk0NywgMTIzOTUxLCAxMjM5NTUsIDEyMzk1OSwgCi0gICAgMTIzOTYzLCAxMjM5NjcsIDEyMzk3MSwgMTIzOTc1LCAxMjM5NzksIDEyMzk4MywgMTIzOTg3LCAxMjM5OTEsIDEyMzk5NSwgCi0gICAgMTIzOTk5LCAxMjQwMDMsIDEyNDAwNywgMTI0MDExLCAxMjQwMTUsIDEyNDAxOSwgMTI0MDIzLCAxMjQwMjcsIDEyNDAzMSwgCi0gICAgMTI0MDM1LCAxMjQwMzksIDEyNDA0MywgMTI0MDQ3LCAxMjQwNTEsIDEyNDA1NSwgMTI0MDU5LCAxMjQwNjMsIDEyNDA2NywgCi0gICAgMTI0MDcxLCAxMjQwNzUsIDEyNDA3OSwgMTI0MDgzLCAxMjQwODcsIDEyNDA5MSwgMTI0MDk1LCAxMjQwOTksIDEyNDEwMywgCi0gICAgMTI0MTA3LCAxMjQxMTEsIDEyNDExNSwgMTI0MTE5LCAxMjQxMjMsIDEyNDEyNywgMTI0MTMxLCAxMjQxMzUsIDEyNDEzOSwgCi0gICAgMTI0MTQzLCAxMjQxNDcsIDEyNDE1MSwgMTI0MTU1LCAxMjQxNTksIDEyNDE2MywgMTI0MTY3LCAxMjQxNzEsIDEyNDE3NSwgCi0gICAgMTI0MTc5LCAxMjQxODMsIDEyNDE4NywgMTI0MTkxLCAxMjQxOTUsIDEyNDE5OSwgMTI0MjAzLCAxMjQyMDcsIDEyNDIxMSwgCi0gICAgMTI0MjE1LCAxMjQyMTksIDEyNDIyMywgMTI0MjI3LCAxMjQyMzEsIDEyNDIzNSwgMTI0MjM5LCAxMjQyNDMsIDEyNDI0NywgCi0gICAgMTI0MjUxLCAxMjQyNTUsIDEyNDI1OSwgMTI0MjYzLCAxMjQyNjcsIDEyNDI3MSwgMTI0Mjc1LCAxMjQyNzksIDEyNDI4MywgCi0gICAgMTI0Mjg3LCAxMjQyOTEsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDMsIDEyNDMwNywgMTI0MzExLCAxMjQzMTUsIDEyNDMxOSwgCi0gICAgMTI0MzIzLCAxMjQzMjcsIDEyNDMzMSwgMTI0MzM1LCAxMjQzMzksIDEyNDM0MywgMTI0MzQ3LCAxMjQzNTEsIDEyNDM1NSwgCi0gICAgMTI0MzU5LCAxMjQzNjMsIDEyNDM2NywgMTI0MzcxLCAxMjQzNzUsIDEyNDM3OSwgMTI0MzgzLCAxMjQzODcsIDEyNDM5MSwgCi0gICAgMTI0Mzk1LCAxMjQzOTksIDEyNDQwMywgMTI0NDA3LCAxMjQ0MTEsIDEyNDQxNSwgMTI0NDE5LCAxMjQ0MjMsIDEyNDQyNywgCi0gICAgMTI0NDMxLCAxMjQ0MzUsIDEyNDQzOSwgMTI0NDQzLCAxMjQ0NDcsIDEyNDQ1MSwgMTI0NDU1LCAxMjQ0NTksIDEyNDQ2MywgCi0gICAgMTI0NDY3LCAxMjQ0NzEsIDEyNDQ3NSwgMTI0NDc5LCAxMjQ0ODMsIDEyNDQ4NywgMTI0NDkxLCAxMjQ0OTUsIDEyNDQ5OSwgCi0gICAgMTI0NTAzLCAxMjQ1MDcsIDEyNDUxMSwgMTI0NTE1LCAxMjQ1MTksIDEyNDUyMywgMTI0NTI3LCAxMjQ1MzEsIDEyNDUzNSwgCi0gICAgMTI0NTM5LCAxMjQ1NDMsIDEyNDU0NywgMTI0NTUxLCAxMjQ1NTUsIDEyNDU1OSwgMTI0NTYzLCAxMjQ1NjcsIDEyNDU3MSwgCi0gICAgMTI0NTc1LCAxMjQ1NzksIDEyNDU4MywgMTI0NTg3LCAxMjQ1OTEsIDEyNDU5NSwgMTI0NTk5LCAxMjQ2MDMsIDEyNDYwNywgCi0gICAgMTI0NjExLCAxMjQ2MTUsIDEyNDYxOSwgMTI0NjIzLCAxMjQ2MjcsIDEyNDYzMSwgMTI0NjM1LCAxMjQ2MzksIDEyNDY0MywgCi0gICAgMTI0NjQ3LCAxMjQ2NTEsIDEyNDY1NSwgMTI0NjU5LCAxMjQ2NjMsIDEyNDY2NywgMTI0NjcxLCAxMjQ2NzUsIDEyNDY3OSwgCi0gICAgMTI0NjgzLCAxMjQ2ODcsIDEyNDY5MSwgMTI0Njk1LCAxMjQ2OTksIDEyNDcwMywgMTI0NzA3LCAxMjQ3MTEsIDEyNDcxNSwgCi0gICAgMTI0NzE5LCAxMjQ3MjMsIDEyNDcyNywgMTI0NzMxLCAxMjQ3MzUsIDEyNDczOSwgMTI0NzQzLCAxMjQ3NDcsIDEyNDc1MSwgCi0gICAgMTI0NzU1LCAxMjQ3NTksIDEyNDc2MywgMTI0NzY3LCAxMjQ3NzEsIDEyNDc3NSwgMTI0Nzc5LCAxMjQ3ODMsIDEyNDc4NywgCi0gICAgMTI0NzkxLCAxMjQ3OTUsIDEyNDc5OSwgMTI0ODAzLCAxMjQ4MDcsIDEyNDgxMSwgMTI0ODE1LCAxMjQ4MTksIDEyNDgyMywgCi0gICAgMTI0ODI3LCAxMjQ4MzEsIDEyNDgzNSwgMTI0ODM5LCAxMjQ4NDMsIDEyNDg0NywgMTI0ODUxLCAxMjQ4NTUsIDEyNDg1OSwgCi0gICAgMTI0ODYzLCAxMjQ4NjcsIDEyNDg3MSwgMTI0ODc1LCAxMjQ4NzksIDEyNDg4MywgMTI0ODg3LCAxMjQ4OTEsIDEyNDg5NSwgCi0gICAgMTI0ODk5LCAxMjQ5MDMsIDEyNDkwNywgMTI0OTExLCAxMjQ5MTUsIDEyNDkxOSwgMTI0OTIzLCAxMjQ5MjcsIDEyNDkzMSwgCi0gICAgMTI0OTM1LCAxMjQ5MzksIDEyNDk0MywgMTI0OTQ3LCAxMjQ5NTEsIDEyNDk1NSwgMTI0OTU5LCAxMjQ5NjMsIDEyNDk2NywgCi0gICAgMTI0OTcxLCAxMjQ5NzUsIDEyNDk3OSwgMTI0OTgzLCAxMjQ5ODcsIDEyNDk5MSwgMTI0OTk1LCAxMjQ5OTksIDEyNTAwMywgCi0gICAgMTI1MDA3LCAxMjUwMTEsIDEyNTAxNSwgMTI1MDE5LCAxMjUwMjMsIDEyNTAyNywgMTI1MDMxLCAxMjUwMzUsIDEyNTAzOSwgCi0gICAgMTI1MDQzLCAxMjUwNDcsIDEyNTA1MSwgMTI1MDU1LCAxMjUwNTksIDEyNTA2MywgMTI1MDY3LCAxMjUwNzEsIDEyNTA3NSwgCi0gICAgMTI1MDc5LCAxMjUwODMsIDEyNTA4NywgMTI1MDkxLCAxMjUwOTUsIDEyNTA5OSwgMTI1MTAzLCAxMjUxMDcsIDEyNTExMSwgCi0gICAgMTI1MTE1LCAxMjUxMTksIDEyNTEyMywgMTI1MTI3LCAxMjUxMzEsIDEyNTEzNSwgMTI1MTM5LCAxMjUxNDMsIDEyNTE0NywgCi0gICAgMTI1MTUxLCAxMjUxNTUsIDEyNTE1OSwgMTI1MTYzLCAxMjUxNjcsIDEyNTE3MSwgMTI1MTc1LCAxMjUxNzksIDEyNTE4MywgCi0gICAgMTI1MTg3LCAxMjUxOTEsIDEyNTE5NSwgMTI1MTk5LCAxMjUyMDMsIDEyNTIwNywgMTI1MjExLCAxMjUyMTUsIDEyNTIxOSwgCi0gICAgMTI1MjIzLCAxMjUyMjcsIDEyNTIzMSwgMTI1MjM1LCAxMjUyMzksIDEyNTI0MywgMTI1MjQ3LCAxMjUyNTEsIDEyNTI1NSwgCi0gICAgMTI1MjU5LCAxMjUyNjMsIDEyNTI2NywgMTI1MjcxLCAxMjUyNzUsIDEyNTI3OSwgMTI1MjgzLCAxMjUyODcsIDEyNTI5MSwgCi0gICAgMTI1Mjk1LCAxMjUyOTksIDEyNTMwMywgMTI1MzA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA5NjcsIDEyMDk3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTIwOTg1LCAxMjA5OTIsIDEyMDk5OSwgMTIxMDA2LCAxMjEwMTMsIDEyMTAyMCwgMTIxMDI3LCAKKyAgICAxMjEwMzMsIDEyMTA0MCwgMTIxMDQ3LCAxMjEwNTQsIDEyMTA2MiwgMTIxMDcwLCAxMjEwNzgsIDEyMTA4NiwgMTIxMDk0LCAKKyAgICAxMjExMDIsIDEyMTEwOSwgMTIxMTE2LCAxMjExMjMsIDEyMTEzMSwgMTIxMTM5LCAxMjExNDcsIDEyMTE1NSwgMTIxMTYzLCAKKyAgICAxMjExNzEsIDEyMTE3OCwgMTIxMTg1LCAxMjExOTIsIDEyMTIwMCwgMTIxMjA4LCAxMjEyMTYsIDEyMTIyNCwgMTIxMjMyLCAKKyAgICAxMjEyNDAsIDEyMTI0NSwgMTIxMjUwLCAxMjEyNTUsIDEyMTI2MCwgMTIxMjY1LCAxMjEyNzAsIDEyMTI3NSwgMTIxMjgwLCAKKyAgICAxMjEyODUsIDAsIDAsIDAsIDAsIDEyMTI5MCwgMTIxMjk1LCAxMjEyOTksIDEyMTMwMywgMTIxMzA3LCAxMjEzMTEsIAorICAgIDEyMTMxNSwgMTIxMzE5LCAxMjEzMjMsIDEyMTMyNywgMTIxMzMxLCAxMjEzMzUsIDEyMTMzOSwgMTIxMzQzLCAxMjEzNDcsIAorICAgIDEyMTM1MSwgMTIxMzU1LCAxMjEzNTksIDEyMTM2MywgMTIxMzY3LCAxMjEzNzEsIDEyMTM3NSwgMTIxMzc5LCAxMjEzODMsIAorICAgIDEyMTM4NywgMTIxMzkxLCAxMjEzOTUsIDEyMTM5OSwgMTIxNDAzLCAxMjE0MDcsIDEyMTQxMSwgMTIxNDE1LCAxMjE0MTksIAorICAgIDEyMTQyMywgMTIxNDI3LCAxMjE0MzEsIDEyMTQzNSwgMTIxNDM5LCAxMjE0NDMsIDEyMTQ0NywgMTIxNDUxLCAxMjE0NTUsIAorICAgIDEyMTQ1OSwgMTIxNDYzLCAxMjE0NjcsIDEyMTQ3MSwgMTIxNDc1LCAxMjE0NzksIDEyMTQ4MywgMTIxNDg3LCAxMjE0OTEsIAorICAgIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIDEyMTUyMCwgMTIxNTI0LCAxMjE1MjgsIAorICAgIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIAorICAgIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIAorICAgIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIAorICAgIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIAorICAgIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIxNjkyLCAxMjE2OTgsIDEyMTcwNywgMTIxNzE1LCAxMjE3MjMsIDEyMTczMiwgMTIxNzQxLCAxMjE3NTAsIDEyMTc1OSwgCisgICAgMTIxNzY4LCAxMjE3NzcsIDEyMTc4NiwgMTIxNzk1LCAxMjE4MDQsIDEyMTgxMywgMCwgMCwgMTIxODIyLCAxMjE4MzEsIAorICAgIDEyMTgzOSwgMTIxODQ3LCAxMjE4NTYsIDEyMTg2NSwgMTIxODc0LCAxMjE4ODMsIDEyMTg5MiwgMTIxOTAxLCAxMjE5MTAsIAorICAgIDEyMTkxOSwgMTIxOTI4LCAxMjE5MzcsIDAsIDAsIDEyMTk0NiwgMTIxOTU1LCAxMjE5NjMsIDEyMTk3MSwgMTIxOTgwLCAKKyAgICAxMjE5ODksIDEyMTk5OCwgMTIyMDA3LCAxMjIwMTYsIDEyMjAyNSwgMTIyMDM0LCAxMjIwNDMsIDEyMjA1MiwgMTIyMDYxLCAKKyAgICAxMjIwNzAsIDAsIDEyMjA3NywgMTIyMDg2LCAxMjIwOTQsIDEyMjEwMiwgMTIyMTExLCAxMjIxMjAsIDEyMjEyOSwgCisgICAgMTIyMTM4LCAxMjIxNDcsIDEyMjE1NiwgMTIyMTY1LCAxMjIxNzQsIDEyMjE4MywgMTIyMTkyLCAxMjIyMDEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyMjIwOCwgMTIyMjE1LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNywgCisgICAgMTIyMjQyLCAxMjIyNDcsIDEyMjI1MiwgMTIyMjU3LCAwLCAwLCAwLCAwLCAwLCAxMjIyNjIsIDEyMjI2NywgMTIyMjczLCAKKyAgICAxMjIyNzksIDEyMjI4NSwgMTIyMjkwLCAxMjIyOTYsIDEyMjMwMiwgMTIyMzA4LCAxMjIzMTMsIDEyMjMxOSwgMTIyMzI1LCAKKyAgICAxMjIzMzAsIDEyMjMzNSwgMTIyMzQxLCAxMjIzNDYsIDEyMjM1MiwgMTIyMzU4LCAxMjIzNjMsIDEyMjM2OSwgMTIyMzc1LCAKKyAgICAxMjIzODAsIDEyMjM4NiwgMTIyMzkyLCAxMjIzOTgsIDEyMjQwNCwgMTIyNDEwLCAxMjI0MjEsIDEyMjQyOCwgMTIyNDM0LCAKKyAgICAxMjI0MzcsIDAsIDEyMjQ0MCwgMTIyNDQ1LCAxMjI0NTEsIDEyMjQ1NywgMTIyNDYzLCAxMjI0NjgsIDEyMjQ3NCwgCisgICAgMTIyNDgwLCAxMjI0ODYsIDEyMjQ5MSwgMTIyNDk3LCAxMjI1MDMsIDEyMjUwOCwgMTIyNTEzLCAxMjI1MTksIDEyMjUyNCwgCisgICAgMTIyNTMwLCAxMjI1MzYsIDEyMjU0MSwgMTIyNTQ3LCAxMjI1NTMsIDEyMjU1OCwgMTIyNTY0LCAxMjI1NzAsIDEyMjU3NiwgCisgICAgMTIyNTgyLCAxMjI1ODgsIDEyMjU5MSwgMTIyNTk0LCAxMjI1OTcsIDEyMjYwMCwgMTIyNjAzLCAxMjI2MDYsIDEyMjYxMiwgCisgICAgMTIyNjE5LCAxMjI2MjYsIDEyMjYzMywgMTIyNjM5LCAxMjI2NDYsIDEyMjY1MywgMTIyNjYwLCAxMjI2NjYsIDEyMjY3MywgCisgICAgMTIyNjgwLCAxMjI2ODYsIDEyMjY5MiwgMTIyNjk5LCAxMjI3MDUsIDEyMjcxMiwgMTIyNzE5LCAxMjI3MjUsIDEyMjczMiwgCisgICAgMTIyNzM5LCAxMjI3NDUsIDEyMjc1MiwgMTIyNzU5LCAxMjI3NjYsIDEyMjc3MywgMTIyNzgwLCAxMjI3ODUsIDAsIDAsIDAsIAorICAgIDAsIDEyMjc5MCwgMTIyNzk2LCAxMjI4MDMsIDEyMjgxMCwgMTIyODE3LCAxMjI4MjMsIDEyMjgzMCwgMTIyODM3LCAKKyAgICAxMjI4NDQsIDEyMjg1MCwgMTIyODU3LCAxMjI4NjQsIDEyMjg3MCwgMTIyODc2LCAxMjI4ODMsIDEyMjg4OSwgMTIyODk2LCAKKyAgICAxMjI5MDMsIDEyMjkwOSwgMTIyOTE2LCAxMjI5MjMsIDEyMjkyOSwgMTIyOTM2LCAxMjI5NDMsIDEyMjk1MCwgMTIyOTU3LCAKKyAgICAxMjI5NjQsIDEyMjk3MywgMTIyOTc3LCAxMjI5ODAsIDEyMjk4MywgMTIyOTg3LCAxMjI5OTEsIDEyMjk5NCwgMTIyOTk3LCAKKyAgICAxMjMwMDAsIDEyMzAwMywgMTIzMDA2LCAxMjMwMDksIDEyMzAxMiwgMTIzMDE1LCAxMjMwMTgsIDEyMzAyNCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1MzExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUzMTUsIAotICAgIDEyNTMxOCwgMTI1MzIyLCAxMjUzMjYsIDEyNTMyOSwgMTI1MzMzLCAxMjUzMzcsIDEyNTM0MCwgMTI1MzQzLCAxMjUzNDcsIAotICAgIDEyNTM1MSwgMTI1MzU0LCAxMjUzNTcsIDEyNTM2MCwgMTI1MzYzLCAxMjUzNjgsIDEyNTM3MSwgMTI1Mzc1LCAxMjUzNzgsIAotICAgIDEyNTM4MSwgMTI1Mzg0LCAxMjUzODcsIDEyNTM5MCwgMTI1MzkzLCAxMjUzOTYsIDEyNTM5OSwgMTI1NDAyLCAxMjU0MDUsIAotICAgIDEyNTQwOCwgMTI1NDEyLCAxMjU0MTYsIDEyNTQyMCwgMTI1NDI0LCAxMjU0MjksIDEyNTQzNCwgMTI1NDQwLCAxMjU0NDYsIAotICAgIDEyNTQ1MiwgMTI1NDU3LCAxMjU0NjMsIDEyNTQ2OSwgMTI1NDc1LCAxMjU0ODAsIDEyNTQ4NiwgMTI1NDkyLCAxMjU0OTcsIAotICAgIDEyNTUwMiwgMTI1NTA3LCAxMjU1MTIsIDEyNTUxOCwgMTI1NTI0LCAxMjU1MjksIDEyNTUzNCwgMTI1NTQwLCAxMjU1NDUsIAotICAgIDEyNTU1MSwgMTI1NTU3LCAxMjU1NjMsIDEyNTU2OSwgMTI1NTc1LCAxMjU1NzksIDEyNTU4NCwgMTI1NTg4LCAxMjU1OTMsIAotICAgIDEyNTU5NywgMTI1NjAyLCAxMjU2MDcsIDEyNTYxMywgMTI1NjE5LCAxMjU2MjUsIDEyNTYzMCwgMTI1NjM2LCAxMjU2NDIsIAotICAgIDEyNTY0OCwgMTI1NjUzLCAxMjU2NTksIDEyNTY2NSwgMTI1NjcwLCAxMjU2NzUsIDEyNTY4MCwgMTI1Njg1LCAxMjU2OTEsIAotICAgIDEyNTY5NywgMTI1NzAyLCAxMjU3MDcsIDEyNTcxMywgMTI1NzE4LCAxMjU3MjQsIDEyNTczMCwgMTI1NzM2LCAxMjU3NDIsIAotICAgIDEyNTc0OCwgMTI1NzUzLCAxMjU3NTcsIDEyNTc2MiwgMTI1NzY1LCAxMjU3NjksIDEyNTc3MiwgMTI1Nzc1LCAxMjU3NzgsIAotICAgIDEyNTc4MSwgMTI1Nzg0LCAxMjU3ODcsIDEyNTc5MCwgMTI1NzkzLCAxMjU3OTYsIDEyNTc5OSwgMTI1ODAyLCAxMjU4MDUsIAotICAgIDEyNTgwOCwgMTI1ODExLCAxMjU4MTQsIDEyNTgxNywgMTI1ODIwLCAxMjU4MjMsIDEyNTgyNiwgMTI1ODI5LCAxMjU4MzIsIAotICAgIDEyNTgzNSwgMTI1ODM4LCAxMjU4NDEsIDEyNTg0NCwgMTI1ODQ3LCAxMjU4NTAsIDEyNTg1MywgMTI1ODU2LCAxMjU4NTksIAotICAgIDEyNTg2MiwgMTI1ODY1LCAxMjU4NjgsIDEyNTg3MSwgMTI1ODc0LCAxMjU4NzcsIDEyNTg4MCwgMTI1ODgzLCAxMjU4ODYsIAotICAgIDEyNTg4OSwgMTI1ODkyLCAxMjU4OTUsIDEyNTg5OCwgMTI1OTAxLCAxMjU5MDQsIDEyNTkwNywgMTI1OTEwLCAxMjU5MTMsIAotICAgIDEyNTkxNiwgMTI1OTE5LCAxMjU5MjIsIDEyNTkyNSwgMTI1OTI4LCAxMjU5MzEsIDEyNTkzNCwgMTI1OTM3LCAxMjU5NDAsIAotICAgIDEyNTk0MywgMTI1OTQ2LCAxMjU5NDksIDEyNTk1MiwgMTI1OTU1LCAxMjU5NTgsIDEyNTk2MSwgMTI1OTY0LCAxMjU5NjcsIAotICAgIDEyNTk3MCwgMTI1OTczLCAxMjU5NzYsIDEyNTk3OSwgMTI1OTgyLCAxMjU5ODUsIDEyNTk4OCwgMTI1OTkxLCAxMjU5OTQsIAotICAgIDEyNTk5NywgMTI2MDAwLCAxMjYwMDMsIDEyNjAwNiwgMTI2MDA5LCAxMjYwMTIsIDEyNjAxNSwgMTI2MDE4LCAxMjYwMjEsIAotICAgIDEyNjAyNCwgMTI2MDI3LCAxMjYwMzAsIDEyNjAzMywgMTI2MDM2LCAxMjYwMzksIDEyNjA0MiwgMTI2MDQ1LCAxMjYwNDgsIAotICAgIDEyNjA1MSwgMTI2MDU0LCAxMjYwNTcsIDEyNjA2MCwgMTI2MDYzLCAxMjYwNjYsIDEyNjA2OSwgMTI2MDcyLCAxMjYwNzUsIAotICAgIDEyNjA3OCwgMTI2MDgxLCAxMjYwODQsIDEyNjA4NywgMTI2MDkwLCAxMjYwOTMsIDEyNjA5NiwgMTI2MDk5LCAxMjYxMDIsIAotICAgIDEyNjEwNSwgMTI2MTA4LCAxMjYxMTEsIDEyNjExNCwgMTI2MTE3LCAxMjYxMjAsIDEyNjEyMywgMTI2MTI2LCAxMjYxMjksIAotICAgIDEyNjEzMiwgMTI2MTM1LCAxMjYxMzgsIDEyNjE0MSwgMTI2MTQ0LCAxMjYxNDcsIDEyNjE1MCwgMTI2MTUzLCAxMjYxNTYsIAotICAgIDEyNjE1OSwgMTI2MTYyLCAxMjYxNjUsIDEyNjE2OCwgMTI2MTcxLCAxMjYxNzQsIDEyNjE3NywgMTI2MTgwLCAxMjYxODMsIAotICAgIDEyNjE4NiwgMTI2MTg5LCAxMjYxOTIsIDEyNjE5NSwgMTI2MTk4LCAxMjYyMDEsIDEyNjIwNCwgMTI2MjA3LCAxMjYyMTAsIAotICAgIDEyNjIxMywgMTI2MjE2LCAxMjYyMTksIDEyNjIyMiwgMTI2MjI1LCAxMjYyMjgsIDEyNjIzMSwgMTI2MjM0LCAxMjYyMzcsIAotICAgIDEyNjI0MCwgMTI2MjQzLCAxMjYyNDYsIDEyNjI0OSwgMTI2MjUyLCAxMjYyNTUsIDEyNjI1OCwgMTI2MjYxLCAxMjYyNjQsIAotICAgIDEyNjI2NywgMTI2MjcwLCAxMjYyNzMsIDEyNjI3NiwgMTI2Mjc5LCAxMjYyODIsIDEyNjI4NSwgMTI2Mjg4LCAxMjYyOTEsIAotICAgIDEyNjI5NCwgMTI2Mjk3LCAxMjYzMDAsIDEyNjMwMywgMTI2MzA2LCAxMjYzMDksIDEyNjMxMiwgMTI2MzE1LCAxMjYzMTgsIAotICAgIDEyNjMyMSwgMTI2MzI0LCAxMjYzMjcsIDEyNjMzMCwgMTI2MzMzLCAxMjYzMzYsIDEyNjMzOSwgMTI2MzQyLCAxMjYzNDUsIAotICAgIDEyNjM0OCwgMTI2MzUxLCAxMjYzNTQsIDEyNjM1NywgMTI2MzYwLCAxMjYzNjMsIDEyNjM2NiwgMTI2MzY5LCAxMjYzNzIsIAotICAgIDEyNjM3NSwgMTI2Mzc4LCAxMjYzODEsIDEyNjM4NCwgMTI2Mzg3LCAxMjYzOTAsIDEyNjM5MywgMTI2Mzk2LCAxMjYzOTksIAotICAgIDEyNjQwMiwgMTI2NDA1LCAxMjY0MDgsIDEyNjQxMSwgMTI2NDE0LCAxMjY0MTcsIDEyNjQyMCwgMTI2NDIzLCAxMjY0MjYsIAotICAgIDEyNjQyOSwgMTI2NDMyLCAxMjY0MzUsIDEyNjQzOCwgMTI2NDQxLCAxMjY0NDQsIDEyNjQ0NywgMTI2NDUwLCAxMjY0NTMsIAotICAgIDEyNjQ1NiwgMTI2NDU5LCAxMjY0NjIsIDEyNjQ2NSwgMTI2NDY4LCAxMjY0NzEsIDEyNjQ3NCwgMTI2NDc3LCAxMjY0ODAsIAotICAgIDEyNjQ4MywgMTI2NDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjMwMjcsIDEyMzAzNCwgMTIzMDQyLCAxMjMwNTAsIDEyMzA1OCwgMTIzMDY1LCAxMjMwNzMsIDEyMzA4MSwgMTIzMDg5LCAKKyAgICAxMjMwOTYsIDEyMzEwNCwgMTIzMTEyLCAxMjMxMTksIDEyMzEyNiwgMTIzMTM0LCAxMjMxNDEsIDEyMzE0OSwgMTIzMTU3LCAKKyAgICAxMjMxNjQsIDEyMzE3MiwgMTIzMTgwLCAxMjMxODcsIDEyMzE5NSwgMTIzMjAzLCAxMjMyMTEsIDEyMzIxOSwgMTIzMjI3LCAKKyAgICAxMjMyMzEsIDEyMzIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMjM4LCAxMjMyNDQsIAorICAgIDEyMzI1MCwgMTIzMjU2LCAxMjMyNjAsIDEyMzI2NiwgMTIzMjcyLCAxMjMyNzgsIDEyMzI4NCwgMTIzMjkwLCAxMjMyOTYsIAorICAgIDEyMzMwMiwgMTIzMzA4LCAxMjMzMTQsIDEyMzMyMCwgMTIzMzI2LCAxMjMzMzIsIDEyMzMzOCwgMTIzMzQ0LCAxMjMzNTAsIAorICAgIDEyMzM1NiwgMTIzMzYyLCAxMjMzNjgsIDEyMzM3NCwgMTIzMzgwLCAxMjMzODYsIDEyMzM5MiwgMTIzMzk4LCAxMjM0MDQsIAorICAgIDEyMzQxMCwgMTIzNDE2LCAxMjM0MjIsIDEyMzQyOCwgMTIzNDM0LCAxMjM0NDAsIDEyMzQ0NiwgMTIzNDUyLCAxMjM0NTgsIAorICAgIDEyMzQ2NCwgMTIzNDcwLCAxMjM0NzYsIDEyMzQ4MiwgMTIzNDg4LCAwLCAwLCAwLCAwLCAwLCAxMjM0OTQsIDEyMzUwNSwgCisgICAgMTIzNTE2LCAxMjM1MjcsIDEyMzUzOCwgMTIzNTQ5LCAxMjM1NjAsIDEyMzU3MSwgMTIzNTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjM1OTMsIDEyMzU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTIzNjAxLCAxMjM2MDMsIDEyMzYwNSwgMTIzNjA5LCAxMjM2MTQsIDEyMzYxOSwgMTIzNjIxLCAKKyAgICAxMjM2MjcsIDEyMzYzMiwgMTIzNjM0LCAxMjM2NDAsIDEyMzY0NCwgMTIzNjQ2LCAxMjM2NTAsIDEyMzY1NiwgMTIzNjYyLCAKKyAgICAxMjM2NjgsIDEyMzY3MywgMTIzNjc3LCAxMjM2ODQsIDEyMzY5MSwgMTIzNjk4LCAxMjM3MDMsIDEyMzcxMCwgMTIzNzE3LCAKKyAgICAxMjM3MjQsIDEyMzcyOCwgMTIzNzM0LCAxMjM3NDMsIDEyMzc1MiwgMTIzNzU5LCAxMjM3NjQsIDEyMzc2OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNzcyLCAxMjM3NzQsIDEyMzc3NiwgMTIzNzgwLCAKKyAgICAxMjM3ODQsIDEyMzc4OCwgMCwgMTIzNzkwLCAxMjM3OTIsIDEyMzc5NiwgMTIzNzk4LCAxMjM4MDAsIDEyMzgwMiwgCisgICAgMTIzODA0LCAxMjM4MDksIDEyMzgxNCwgMTIzODE2LCAxMjM4MjIsIDEyMzgyNiwgMTIzODMwLCAxMjM4MzgsIDEyMzg0MCwgCisgICAgMTIzODQyLCAxMjM4NDQsIDEyMzg0NiwgMTIzODQ4LCAxMjM4NTAsIDEyMzg1MiwgMTIzODU0LCAxMjM4NTYsIDEyMzg1OCwgCisgICAgMTIzODYyLCAxMjM4NjYsIDEyMzg2OCwgMTIzODcwLCAxMjM4NzIsIDEyMzg3NCwgMTIzODc2LCAxMjM4ODEsIDEyMzg4NywgCisgICAgMTIzODkxLCAxMjM4OTUsIDEyMzg5OSwgMTIzOTAzLCAxMjM5MDgsIDEyMzkxMiwgMTIzOTE0LCAxMjM5MTYsIDEyMzkyMCwgCisgICAgMTIzOTI2LCAxMjM5MjgsIDEyMzkzMCwgMTIzOTMyLCAxMjM5MzYsIDEyMzk0NSwgMTIzOTUxLCAxMjM5NTUsIDEyMzk1OSwgCisgICAgMTIzOTYxLCAxMjM5NjMsIDEyMzk2NiwgMTIzOTY4LCAxMjM5NzAsIDEyMzk3MiwgMTIzOTc2LCAxMjM5NzgsIDEyMzk4MiwgCisgICAgMTIzOTg3LCAxMjM5ODksIDEyMzk5NCwgMTI0MDAwLCAxMjQwMDcsIDEyNDAxMSwgMTI0MDE1LCAxMjQwMTksIDEyNDAyMywgCisgICAgMTI0MDI5LCAwLCAwLCAwLCAxMjQwMzMsIDEyNDAzNSwgMTI0MDM5LCAxMjQwNDMsIDEyNDA0NSwgMTI0MDQ5LCAxMjQwNTMsIAorICAgIDEyNDA1NSwgMTI0MDU5LCAxMjQwNjEsIDEyNDA2NSwgMTI0MDY5LCAxMjQwNzMsIDEyNDA3NywgMTI0MDgxLCAxMjQwODUsIAorICAgIDEyNDA4OSwgMTI0MDkzLCAxMjQwOTksIDEyNDEwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI0MTA3LCAxMjQxMTEsIDEyNDExNSwgMTI0MTE5LCAxMjQxMjYsIDEyNDEyOCwgMTI0MTMyLCAxMjQxMzQsIDEyNDEzNiwgCisgICAgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgMTI0MTUwLCAxMjQxNTQsIDEyNDE1OCwgMTI0MTYyLCAxMjQxNjYsIDEyNDE3MCwgCisgICAgMTI0MTcyLCAxMjQxNzYsIDEyNDE3OCwgMTI0MTg0LCAxMjQxODcsIDEyNDE5MiwgMTI0MTk0LCAxMjQxOTYsIDEyNDE5OSwgCisgICAgMTI0MjAxLCAxMjQyMDMsIDEyNDIwNiwgMTI0MjEzLCAxMjQyMjAsIDEyNDIyNywgMTI0MjMyLCAxMjQyMzYsIDEyNDIzOCwgCisgICAgMTI0MjQwLCAwLCAxMjQyNDIsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0MjU4LCAxMjQyNjIsIDEyNDI2NywgMTI0MjcxLCAKKyAgICAxMjQyNzcsIDEyNDI4MywgMTI0Mjg1LCAxMjQyODcsIDEyNDI5MywgMTI0Mjk1LCAxMjQyOTksIDEyNDMwMywgMTI0MzA1LCAKKyAgICAxMjQzMDksIDEyNDMxMSwgMTI0MzE1LCAxMjQzMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNDMyMywgMTI0MzI1LCAxMjQzMjcsIDEyNDMyOSwgMTI0MzMzLCAxMjQzMzUsIDEyNDMzNywgMTI0MzM5LCAKKyAgICAxMjQzNDEsIDEyNDM0MywgMTI0MzQ1LCAxMjQzNDcsIDEyNDM0OSwgMTI0MzUxLCAxMjQzNTMsIDEyNDM1NSwgMTI0MzU3LCAKKyAgICAxMjQzNTksIDEyNDM2MSwgMTI0MzYzLCAxMjQzNjUsIDEyNDM2NywgMTI0MzY5LCAxMjQzNzEsIDEyNDM3MywgMTI0Mzc1LCAKKyAgICAxMjQzNzcsIDEyNDM4MSwgMTI0MzgzLCAxMjQzODUsIDEyNDM4NywgMTI0MzkxLCAxMjQzOTMsIDEyNDM5NywgMTI0Mzk5LCAKKyAgICAxMjQ0MDEsIDEyNDQwNSwgMTI0NDA5LCAxMjQ0MTUsIDEyNDQxNywgMTI0NDE5LCAxMjQ0MjEsIDEyNDQyMywgMTI0NDI3LCAKKyAgICAxMjQ0MzEsIDEyNDQzMywgMTI0NDM3LCAxMjQ0NDEsIDEyNDQ0NSwgMTI0NDQ5LCAxMjQ0NTMsIDEyNDQ1NywgMTI0NDYxLCAKKyAgICAxMjQ0NjUsIDEyNDQ2OSwgMTI0NDczLCAxMjQ0NzcsIDEyNDQ4MSwgMTI0NDg1LCAxMjQ0ODksIDEyNDQ5MywgMTI0NDk3LCAKKyAgICAxMjQ1MDEsIDAsIDEyNDUwNSwgMCwgMTI0NTA3LCAxMjQ1MDksIDEyNDUxMSwgMTI0NTEzLCAxMjQ1MTUsIDEyNDUyMywgCisgICAgMTI0NTMxLCAxMjQ1MzksIDEyNDU0NywgMTI0NTUyLCAxMjQ1NTcsIDEyNDU2MiwgMTI0NTY2LCAxMjQ1NzAsIDEyNDU3NSwgCisgICAgMTI0NTc5LCAxMjQ1ODEsIDEyNDU4NSwgMTI0NTg3LCAxMjQ1ODksIDEyNDU5MSwgMTI0NTkzLCAxMjQ1OTUsIDEyNDU5NywgCisgICAgMTI0NTk5LCAxMjQ2MDMsIDEyNDYwNSwgMTI0NjA3LCAxMjQ2MDksIDEyNDYxMywgMTI0NjE3LCAxMjQ2MjEsIDEyNDYyNSwgCisgICAgMTI0NjI5LCAxMjQ2MzEsIDEyNDYzNywgMTI0NjQzLCAxMjQ2NDUsIDEyNDY0NywgMTI0NjQ5LCAxMjQ2NTEsIDEyNDY1MywgCisgICAgMTI0NjYyLCAxMjQ2NjksIDEyNDY3NiwgMTI0NjgwLCAxMjQ2ODcsIDEyNDY5MiwgMTI0Njk5LCAxMjQ3MDgsIDEyNDcxMywgCisgICAgMTI0NzE3LCAxMjQ3MjEsIDEyNDcyMywgMTI0NzI3LCAxMjQ3MjksIDEyNDczMywgMTI0NzM3LCAxMjQ3MzksIDEyNDc0MywgCisgICAgMTI0NzQ3LCAxMjQ3NTEsIDEyNDc1MywgMTI0NzU1LCAxMjQ3NjEsIDEyNDc2MywgMTI0NzY1LCAxMjQ3NjcsIDEyNDc3MSwgCisgICAgMTI0Nzc1LCAxMjQ3NzcsIDEyNDc4MSwgMTI0NzgzLCAxMjQ3ODUsIDEyNDc4OCwgMTI0NzkyLCAxMjQ3OTQsIDEyNDc5OCwgCisgICAgMTI0ODAwLCAxMjQ4MDIsIDEyNDgwNywgMTI0ODA5LCAxMjQ4MTMsIDEyNDgxNywgMTI0ODIwLCAxMjQ4MjQsIDEyNDgyOCwgCisgICAgMTI0ODMyLCAxMjQ4MzYsIDEyNDg0MCwgMTI0ODQ0LCAxMjQ4NDgsIDEyNDg1MywgMTI0ODU3LCAxMjQ4NjEsIDEyNDg3MCwgCisgICAgMTI0ODc1LCAxMjQ4NzgsIDEyNDg4MCwgMTI0ODgzLCAxMjQ4ODYsIDEyNDg5MSwgMTI0ODkzLCAxMjQ4OTYsIDEyNDkwMSwgCisgICAgMTI0OTA1LCAxMjQ5MDgsIDEyNDkxMiwgMTI0OTE2LCAxMjQ5MTksIDEyNDkyNCwgMTI0OTI4LCAxMjQ5MzIsIDEyNDkzNiwgCisgICAgMTI0OTQwLCAxMjQ5NDYsIDEyNDk1MiwgMTI0OTU4LCAxMjQ5NjQsIDEyNDk2OSwgMTI0OTgwLCAxMjQ5ODIsIDEyNDk4NiwgCisgICAgMTI0OTg4LCAxMjQ5OTAsIDEyNDk5NCwgMTI0OTk4LCAxMjUwMDAsIDEyNTAwNCwgMTI1MDA5LCAxMjUwMTQsIDEyNTAyMCwgCisgICAgMTI1MDIyLCAxMjUwMjYsIDEyNTAzMCwgMTI1MDM3LCAxMjUwNDQsIDEyNTA0OCwgMTI1MDUwLCAxMjUwNTIsIDEyNTA1NiwgCisgICAgMTI1MDU4LCAxMjUwNjIsIDEyNTA2NiwgMTI1MDcwLCAxMjUwNzIsIDEyNTA3NCwgMTI1MDgxLCAxMjUwODUsIDEyNTA4OCwgCisgICAgMTI1MDkyLCAxMjUwOTYsIDEyNTEwMCwgMTI1MTAyLCAxMjUxMDYsIDEyNTEwOCwgMTI1MTEwLCAxMjUxMTQsIDEyNTExNiwgCisgICAgMTI1MTIwLCAxMjUxMjQsIDEyNTEzMCwgMTI1MTM0LCAxMjUxMzgsIDEyNTE0MiwgMTI1MTQ0LCAxMjUxNDcsIDEyNTE1MSwgCisgICAgMTI1MTU4LCAxMjUxNjcsIDEyNTE3NiwgMTI1MTg0LCAxMjUxOTIsIDEyNTE5NCwgMTI1MTk4LCAxMjUyMDAsIDEyNTIwNCwgCisgICAgMTI1MjE1LCAxMjUyMTksIDEyNTIyNSwgMTI1MjMxLCAxMjUyMzYsIDAsIDEyNTIzOCwgMTI1MjQyLCAxMjUyNDQsIAorICAgIDEyNTI0NiwgMCwgMCwgMCwgMTI1MjQ4LCAxMjUyNTMsIDEyNTI2MywgMTI1Mjc4LCAxMjUyOTAsIDEyNTMwMiwgMTI1MzA2LCAKKyAgICAxMjUzMTAsIDEyNTMxNiwgMTI1MzE4LCAxMjUzMjYsIDEyNTMzNCwgMTI1MzM2LCAxMjUzNDAsIDEyNTM0NiwgMTI1MzUyLCAKKyAgICAxMjUzNTksIDEyNTM2NiwgMTI1MzY4LCAxMjUzNzAsIDEyNTM3MywgMTI1Mzc1LCAxMjUzODEsIDEyNTM4MywgMTI1Mzg2LCAKKyAgICAxMjUzOTAsIDEyNTM5NiwgMTI1NDAyLCAxMjU0MTMsIDEyNTQxOSwgMTI1NDI2LCAxMjU0MzQsIDEyNTQzOCwgMTI1NDQ2LCAKKyAgICAxMjU0NTQsIDEyNTQ2MCwgMTI1NDY2LCAxMjU0NzMsIDEyNTQ3NSwgMTI1NDc5LCAxMjU0ODEsIDEyNTQ4MywgMTI1NDg4LCAKKyAgICAxMjU0OTAsIDEyNTQ5MiwgMTI1NDk0LCAxMjU0OTYsIDEyNTUwMCwgMTI1NTExLCAxMjU1MTcsIDEyNTUyMSwgMTI1NTI1LCAKKyAgICAxMjU1MjksIDEyNTUzNSwgMTI1NTQxLCAxMjU1NDcsIDEyNTU1MywgMTI1NTU4LCAxMjU1NjMsIDEyNTU2OSwgMTI1NTc1LCAKKyAgICAxMjU1ODIsIDAsIDAsIDEyNTU4OSwgMTI1NTk0LCAxMjU2MDIsIDEyNTYwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTI1NjE1LCAxMjU2MjIsIDEyNTYyOSwgMTI1NjM2LCAxMjU2NDQsIDEyNTY1MiwgMTI1NjYwLCAxMjU2NjgsIAorICAgIDEyNTY3NiwgMTI1Njg0LCAxMjU2OTIsIDEyNTcwMCwgMTI1NzA4LCAxMjU3MTQsIDEyNTcyMCwgMTI1NzI2LCAxMjU3MzIsIAorICAgIDEyNTczOCwgMTI1NzQ0LCAxMjU3NTAsIDEyNTc1NiwgMTI1NzYyLCAxMjU3NjgsIDEyNTc3NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1NzgwLCAKKyAgICAxMjU3ODQsIDEyNTc4OCwgMTI1NzkzLCAxMjU3OTgsIDEyNTgwMCwgMTI1ODA0LCAxMjU4MTMsIDEyNTgyMSwgMTI1ODI5LCAKKyAgICAxMjU4NDIsIDEyNTg1NSwgMTI1ODY4LCAxMjU4NzUsIDEyNTg4MiwgMTI1ODg2LCAxMjU4OTUsIDEyNTkwMywgMTI1OTA3LCAKKyAgICAxMjU5MTYsIDEyNTkyMywgMTI1OTI3LCAxMjU5MzEsIDEyNTkzNSwgMTI1OTM5LCAxMjU5NDYsIDEyNTk1MCwgMTI1OTU0LCAKKyAgICAxMjU5NTgsIDEyNTk2MiwgMTI1OTY5LCAxMjU5NzgsIDEyNTk4NywgMTI1OTk0LCAxMjYwMDYsIDEyNjAxOCwgMTI2MDIyLCAKKyAgICAxMjYwMjYsIDEyNjAzMCwgMTI2MDM0LCAxMjYwMzgsIDEyNjA0MiwgMTI2MDUwLCAxMjYwNTgsIDEyNjA2NiwgMTI2MDcwLCAKKyAgICAxMjYwNzQsIDEyNjA3OCwgMTI2MDgyLCAxMjYwODYsIDEyNjA5MCwgMTI2MDk2LCAxMjYxMDIsIDEyNjEwNiwgMTI2MTE3LCAKKyAgICAxMjYxMjUsIDEyNjEyOSwgMTI2MTMzLCAxMjYxMzcsIDEyNjE0MSwgMTI2MTQ3LCAxMjYxNTQsIDEyNjE2NSwgMTI2MTc1LCAKKyAgICAxMjYxODUsIDEyNjE5NiwgMTI2MjA1LCAxMjYyMTYsIDEyNjIyMiwgMTI2MjI4LCAwLCAwLCAwLCAwLCAxMjYyMzQsIAorICAgIDEyNjI0MywgMTI2MjUwLCAxMjYyNTYsIDEyNjI2MCwgMTI2MjY0LCAxMjYyNjgsIDEyNjI3NywgMTI2Mjg5LCAxMjYyOTMsIAorICAgIDEyNjMwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTI2MzA3LCAxMjYzMDksIDEyNjMxMSwgMTI2MzE1LCAxMjYzMTksIDEyNjMyMywgMTI2MzMyLCAxMjYzMzQsIAorICAgIDEyNjMzNiwgMTI2MzM5LCAxMjYzNDEsIDEyNjM0MywgMTI2MzQ3LCAxMjYzNDksIDEyNjM1MywgMTI2MzU1LCAxMjYzNTksIAorICAgIDEyNjM2MSwgMTI2MzYzLCAxMjYzNjcsIDEyNjM3MSwgMTI2Mzc3LCAxMjYzNzksIDEyNjM4MywgMTI2Mzg1LCAxMjYzODksIAorICAgIDEyNjM5MywgMTI2Mzk3LCAxMjY0MDEsIDEyNjQwMywgMTI2NDA1LCAxMjY0MDksIDEyNjQxMywgMTI2NDE3LCAxMjY0MjEsIAorICAgIDEyNjQyMywgMTI2NDI1LCAxMjY0MjcsIDEyNjQzMiwgMTI2NDM3LCAxMjY0NDAsIDEyNjQ0OCwgMTI2NDU2LCAxMjY0NTgsIAorICAgIDEyNjQ2MywgMTI2NDY2LCAxMjY0NzEsIDEyNjQ4MiwgMTI2NDg5LCAxMjY0OTQsIDEyNjQ5OSwgMTI2NTAxLCAxMjY1MDUsIAorICAgIDEyNjUwNywgMTI2NTExLCAxMjY1MTMsIDEyNjUxNywgMTI2NTIxLCAxMjY1MjQsIDEyNjUyNywgMTI2NTI5LCAxMjY1MzIsIAorICAgIDEyNjUzNCwgMTI2NTM4LCAxMjY1NDAsIDEyNjU0MiwgMTI2NTQ0LCAxMjY1NDgsIDEyNjU1MCwgMTI2NTU0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY1NTcsIDEyNjU2MiwgMTI2NTY3LCAxMjY1NzIsIDEyNjU3NywgMTI2NTgyLCAKKyAgICAxMjY1ODcsIDEyNjU5NCwgMTI2NjAxLCAxMjY2MDgsIDEyNjYxNSwgMTI2NjIwLCAxMjY2MjUsIDEyNjYzMCwgMTI2NjM1LCAKKyAgICAxMjY2NDIsIDEyNjY0OCwgMTI2NjU1LCAxMjY2NjIsIDEyNjY2OSwgMTI2Njc0LCAxMjY2NzksIDEyNjY4NCwgMTI2Njg5LCAKKyAgICAxMjY2OTQsIDEyNjcwMSwgMTI2NzA4LCAxMjY3MTMsIDEyNjcxOCwgMTI2NzI1LCAxMjY3MzIsIDEyNjc0MCwgMTI2NzQ4LCAKKyAgICAxMjY3NTUsIDEyNjc2MiwgMTI2NzcwLCAxMjY3NzgsIDEyNjc4NiwgMTI2NzkzLCAxMjY4MDMsIDEyNjgxNCwgMTI2ODE5LCAKKyAgICAxMjY4MjYsIDEyNjgzMywgMTI2ODQwLCAxMjY4NDgsIDEyNjg1NiwgMTI2ODY3LCAxMjY4NzUsIDEyNjg4MywgMTI2ODkxLCAKKyAgICAxMjY4OTYsIDEyNjkwMSwgMTI2OTA2LCAxMjY5MTEsIDEyNjkxNiwgMTI2OTIxLCAxMjY5MjYsIDEyNjkzMSwgMTI2OTM2LCAKKyAgICAxMjY5NDEsIDEyNjk0NiwgMTI2OTUxLCAxMjY5NTgsIDEyNjk2MywgMTI2OTY4LCAxMjY5NzUsIDEyNjk4MCwgMTI2OTg1LCAKKyAgICAxMjY5OTAsIDEyNjk5NSwgMTI3MDAwLCAxMjcwMDUsIDEyNzAxMCwgMTI3MDE1LCAxMjcwMjAsIDEyNzAyNSwgMTI3MDMwLCAKKyAgICAxMjcwMzUsIDEyNzA0MiwgMTI3MDUwLCAxMjcwNTUsIDEyNzA2MCwgMTI3MDY3LCAxMjcwNzIsIDEyNzA3NywgMTI3MDgyLCAKKyAgICAxMjcwODksIDEyNzA5NCwgMTI3MTAxLCAxMjcxMDYsIDEyNzExMywgMTI3MTE4LCAxMjcxMjcsIDEyNzEzNiwgMTI3MTQxLCAKKyAgICAxMjcxNDYsIDEyNzE1MSwgMTI3MTU2LCAxMjcxNjEsIDEyNzE2NiwgMTI3MTcxLCAxMjcxNzYsIDEyNzE4MSwgMTI3MTg2LCAKKyAgICAxMjcxOTEsIDEyNzE5NiwgMTI3MjAxLCAxMjcyMDksIDEyNzIxNywgMTI3MjIyLCAxMjcyMjcsIDEyNzIzMiwgMTI3MjM3LCAKKyAgICAxMjcyNDIsIDEyNzI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjU0LCAxMjcyNTgsIAorICAgIDEyNzI2MiwgMTI3MjY2LCAxMjcyNzAsIDEyNzI3NCwgMTI3Mjc4LCAxMjcyODIsIDEyNzI4NiwgMTI3MjkwLCAxMjcyOTQsIAorICAgIDEyNzI5OCwgMTI3MzAyLCAxMjczMDYsIDEyNzMxMCwgMTI3MzE0LCAxMjczMTgsIDEyNzMyMiwgMTI3MzI2LCAxMjczMzAsIAorICAgIDEyNzMzNCwgMTI3MzM4LCAxMjczNDIsIDEyNzM0NiwgMTI3MzUwLCAxMjczNTQsIDEyNzM1OCwgMTI3MzYyLCAxMjczNjYsIAorICAgIDEyNzM3MCwgMTI3Mzc0LCAxMjczNzgsIDEyNzM4MiwgMTI3Mzg2LCAxMjczOTAsIDEyNzM5NCwgMTI3Mzk4LCAxMjc0MDIsIAorICAgIDEyNzQwNiwgMTI3NDEwLCAxMjc0MTQsIDEyNzQxOCwgMTI3NDIyLCAxMjc0MjYsIDEyNzQzMCwgMTI3NDM0LCAxMjc0MzgsIAorICAgIDEyNzQ0MiwgMTI3NDQ2LCAxMjc0NTAsIDEyNzQ1NCwgMTI3NDU4LCAxMjc0NjIsIDEyNzQ2NiwgMTI3NDcwLCAxMjc0NzQsIAorICAgIDEyNzQ3OCwgMTI3NDgyLCAxMjc0ODYsIDEyNzQ5MCwgMTI3NDk0LCAxMjc0OTgsIDEyNzUwMiwgMTI3NTA2LCAxMjc1MTAsIAorICAgIDEyNzUxNCwgMTI3NTE4LCAxMjc1MjIsIDEyNzUyNiwgMTI3NTMwLCAxMjc1MzQsIDEyNzUzOCwgMTI3NTQyLCAxMjc1NDYsIAorICAgIDEyNzU1MCwgMTI3NTU0LCAxMjc1NTgsIDEyNzU2MiwgMTI3NTY2LCAxMjc1NzAsIDEyNzU3NCwgMTI3NTc4LCAxMjc1ODIsIAorICAgIDEyNzU4NiwgMTI3NTkwLCAxMjc1OTQsIDEyNzU5OCwgMTI3NjAyLCAxMjc2MDYsIDEyNzYxMCwgMTI3NjE0LCAxMjc2MTgsIAorICAgIDEyNzYyMiwgMTI3NjI2LCAxMjc2MzAsIDEyNzYzNCwgMTI3NjM4LCAxMjc2NDIsIDEyNzY0NiwgMTI3NjUwLCAxMjc2NTQsIAorICAgIDEyNzY1OCwgMTI3NjYyLCAxMjc2NjYsIDEyNzY3MCwgMTI3Njc0LCAxMjc2NzgsIDEyNzY4MiwgMTI3Njg2LCAxMjc2OTAsIAorICAgIDEyNzY5NCwgMTI3Njk4LCAxMjc3MDIsIDEyNzcwNiwgMTI3NzEwLCAxMjc3MTQsIDEyNzcxOCwgMTI3NzIyLCAxMjc3MjYsIAorICAgIDEyNzczMCwgMTI3NzM0LCAxMjc3MzgsIDEyNzc0MiwgMTI3NzQ2LCAxMjc3NTAsIDEyNzc1NCwgMTI3NzU4LCAxMjc3NjIsIAorICAgIDEyNzc2NiwgMTI3NzcwLCAxMjc3NzQsIDEyNzc3OCwgMTI3NzgyLCAxMjc3ODYsIDEyNzc5MCwgMTI3Nzk0LCAxMjc3OTgsIAorICAgIDEyNzgwMiwgMTI3ODA2LCAxMjc4MTAsIDEyNzgxNCwgMTI3ODE4LCAxMjc4MjIsIDEyNzgyNiwgMTI3ODMwLCAxMjc4MzQsIAorICAgIDEyNzgzOCwgMTI3ODQyLCAxMjc4NDYsIDEyNzg1MCwgMTI3ODU0LCAxMjc4NTgsIDEyNzg2MiwgMTI3ODY2LCAxMjc4NzAsIAorICAgIDEyNzg3NCwgMTI3ODc4LCAxMjc4ODIsIDEyNzg4NiwgMTI3ODkwLCAxMjc4OTQsIDEyNzg5OCwgMTI3OTAyLCAxMjc5MDYsIAorICAgIDEyNzkxMCwgMTI3OTE0LCAxMjc5MTgsIDEyNzkyMiwgMTI3OTI2LCAxMjc5MzAsIDEyNzkzNCwgMTI3OTM4LCAxMjc5NDIsIAorICAgIDEyNzk0NiwgMTI3OTUwLCAxMjc5NTQsIDEyNzk1OCwgMTI3OTYyLCAxMjc5NjYsIDEyNzk3MCwgMTI3OTc0LCAxMjc5NzgsIAorICAgIDEyNzk4MiwgMTI3OTg2LCAxMjc5OTAsIDEyNzk5NCwgMTI3OTk4LCAxMjgwMDIsIDEyODAwNiwgMTI4MDEwLCAxMjgwMTQsIAorICAgIDEyODAxOCwgMTI4MDIyLCAxMjgwMjYsIDEyODAzMCwgMTI4MDM0LCAxMjgwMzgsIDEyODA0MiwgMTI4MDQ2LCAxMjgwNTAsIAorICAgIDEyODA1NCwgMTI4MDU4LCAxMjgwNjIsIDEyODA2NiwgMTI4MDcwLCAxMjgwNzQsIDEyODA3OCwgMTI4MDgyLCAxMjgwODYsIAorICAgIDEyODA5MCwgMTI4MDk0LCAxMjgwOTgsIDEyODEwMiwgMTI4MTA2LCAxMjgxMTAsIDEyODExNCwgMTI4MTE4LCAxMjgxMjIsIAorICAgIDEyODEyNiwgMTI4MTMwLCAxMjgxMzQsIDEyODEzOCwgMTI4MTQyLCAxMjgxNDYsIDEyODE1MCwgMTI4MTU0LCAxMjgxNTgsIAorICAgIDEyODE2MiwgMTI4MTY2LCAxMjgxNzAsIDEyODE3NCwgMTI4MTc4LCAxMjgxODIsIDEyODE4NiwgMTI4MTkwLCAxMjgxOTQsIAorICAgIDEyODE5OCwgMTI4MjAyLCAxMjgyMDYsIDEyODIxMCwgMTI4MjE0LCAxMjgyMTgsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzAsIAorICAgIDEyODIzNCwgMTI4MjM4LCAxMjgyNDIsIDEyODI0NiwgMTI4MjUwLCAxMjgyNTQsIDEyODI1OCwgMTI4MjYyLCAxMjgyNjYsIAorICAgIDEyODI3MCwgMTI4Mjc0LCAxMjgyNzgsIDEyODI4MiwgMTI4Mjg2LCAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIAorICAgIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOCwgMTI4MzIyLCAxMjgzMjYsIDEyODMzMCwgMTI4MzM0LCAxMjgzMzgsIAorICAgIDEyODM0MiwgMTI4MzQ2LCAxMjgzNTAsIDEyODM1NCwgMTI4MzU4LCAxMjgzNjIsIDEyODM2NiwgMTI4MzcwLCAxMjgzNzQsIAorICAgIDEyODM3OCwgMTI4MzgyLCAxMjgzODYsIDEyODM5MCwgMTI4Mzk0LCAxMjgzOTgsIDEyODQwMiwgMTI4NDA2LCAxMjg0MTAsIAorICAgIDEyODQxNCwgMTI4NDE4LCAxMjg0MjIsIDEyODQyNiwgMTI4NDMwLCAxMjg0MzQsIDEyODQzOCwgMTI4NDQyLCAxMjg0NDYsIAorICAgIDEyODQ1MCwgMTI4NDU0LCAxMjg0NTgsIDEyODQ2MiwgMTI4NDY2LCAxMjg0NzAsIDEyODQ3NCwgMTI4NDc4LCAxMjg0ODIsIAorICAgIDEyODQ4NiwgMTI4NDkwLCAxMjg0OTQsIDEyODQ5OCwgMTI4NTAyLCAxMjg1MDYsIDEyODUxMCwgMTI4NTE0LCAxMjg1MTgsIAorICAgIDEyODUyMiwgMTI4NTI2LCAxMjg1MzAsIDEyODUzNCwgMTI4NTM4LCAxMjg1NDIsIDEyODU0NiwgMTI4NTUwLCAxMjg1NTQsIAorICAgIDEyODU1OCwgMTI4NTYyLCAxMjg1NjYsIDEyODU3MCwgMTI4NTc0LCAxMjg1NzgsIDEyODU4MiwgMTI4NTg2LCAxMjg1OTAsIAorICAgIDEyODU5NCwgMTI4NTk4LCAxMjg2MDIsIDEyODYwNiwgMTI4NjEwLCAxMjg2MTQsIDEyODYxOCwgMTI4NjIyLCAxMjg2MjYsIAorICAgIDEyODYzMCwgMTI4NjM0LCAxMjg2MzgsIDEyODY0MiwgMTI4NjQ2LCAxMjg2NTAsIDEyODY1NCwgMTI4NjU4LCAxMjg2NjIsIAorICAgIDEyODY2NiwgMTI4NjcwLCAxMjg2NzQsIDEyODY3OCwgMTI4NjgyLCAxMjg2ODYsIDEyODY5MCwgMTI4Njk0LCAxMjg2OTgsIAorICAgIDEyODcwMiwgMTI4NzA2LCAxMjg3MTAsIDEyODcxNCwgMTI4NzE4LCAxMjg3MjIsIDEyODcyNiwgMTI4NzMwLCAxMjg3MzQsIAorICAgIDEyODczOCwgMTI4NzQyLCAxMjg3NDYsIDEyODc1MCwgMTI4NzU0LCAxMjg3NTgsIDEyODc2MiwgMTI4NzY2LCAxMjg3NzAsIAorICAgIDEyODc3NCwgMTI4Nzc4LCAxMjg3ODIsIDEyODc4NiwgMTI4NzkwLCAxMjg3OTQsIDEyODc5OCwgMTI4ODAyLCAxMjg4MDYsIAorICAgIDEyODgxMCwgMTI4ODE0LCAxMjg4MTgsIDEyODgyMiwgMTI4ODI2LCAxMjg4MzAsIDEyODgzNCwgMTI4ODM4LCAxMjg4NDIsIAorICAgIDEyODg0NiwgMTI4ODUwLCAxMjg4NTQsIDEyODg1OCwgMTI4ODYyLCAxMjg4NjYsIDEyODg3MCwgMTI4ODc0LCAxMjg4NzgsIAorICAgIDEyODg4MiwgMTI4ODg2LCAxMjg4OTAsIDEyODg5NCwgMTI4ODk4LCAxMjg5MDIsIDEyODkwNiwgMTI4OTEwLCAxMjg5MTQsIAorICAgIDEyODkxOCwgMTI4OTIyLCAxMjg5MjYsIDEyODkzMCwgMTI4OTM0LCAxMjg5MzgsIDEyODk0MiwgMTI4OTQ2LCAxMjg5NTAsIAorICAgIDEyODk1NCwgMTI4OTU4LCAxMjg5NjIsIDEyODk2NiwgMTI4OTcwLCAxMjg5NzQsIDEyODk3OCwgMTI4OTgyLCAxMjg5ODYsIAorICAgIDEyODk5MCwgMTI4OTk0LCAxMjg5OTgsIDEyOTAwMiwgMTI5MDA2LCAxMjkwMTAsIDEyOTAxNCwgMTI5MDE4LCAxMjkwMjIsIAorICAgIDEyOTAyNiwgMTI5MDMwLCAxMjkwMzQsIDEyOTAzOCwgMTI5MDQyLCAxMjkwNDYsIDEyOTA1MCwgMTI5MDU0LCAxMjkwNTgsIAorICAgIDEyOTA2MiwgMTI5MDY2LCAxMjkwNzAsIDEyOTA3NCwgMTI5MDc4LCAxMjkwODIsIDEyOTA4NiwgMTI5MDkwLCAxMjkwOTQsIAorICAgIDEyOTA5OCwgMTI5MTAyLCAxMjkxMDYsIDEyOTExMCwgMTI5MTE0LCAxMjkxMTgsIDEyOTEyMiwgMTI5MTI2LCAxMjkxMzAsIAorICAgIDEyOTEzNCwgMTI5MTM4LCAxMjkxNDIsIDEyOTE0NiwgMTI5MTUwLCAxMjkxNTQsIDEyOTE1OCwgMTI5MTYyLCAxMjkxNjYsIAorICAgIDEyOTE3MCwgMTI5MTc0LCAxMjkxNzgsIDEyOTE4MiwgMTI5MTg2LCAxMjkxOTAsIDEyOTE5NCwgMTI5MTk4LCAxMjkyMDIsIAorICAgIDEyOTIwNiwgMTI5MjEwLCAxMjkyMTQsIDEyOTIxOCwgMTI5MjIyLCAxMjkyMjYsIDEyOTIzMCwgMTI5MjM0LCAxMjkyMzgsIAorICAgIDEyOTI0MiwgMTI5MjQ2LCAxMjkyNTAsIDEyOTI1NCwgMTI5MjU4LCAxMjkyNjIsIDEyOTI2NiwgMTI5MjcwLCAxMjkyNzQsIAorICAgIDEyOTI3OCwgMTI5MjgyLCAxMjkyODYsIDEyOTI5MCwgMTI5Mjk0LCAxMjkyOTgsIDEyOTMwMiwgMTI5MzA2LCAxMjkzMTAsIAorICAgIDEyOTMxNCwgMTI5MzE4LCAxMjkzMjIsIDEyOTMyNiwgMTI5MzMwLCAxMjkzMzQsIDEyOTMzOCwgMTI5MzQyLCAxMjkzNDYsIAorICAgIDEyOTM1MCwgMTI5MzU0LCAxMjkzNTgsIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzAsIDEyOTM3NCwgMTI5Mzc4LCAxMjkzODIsIAorICAgIDEyOTM4NiwgMTI5MzkwLCAxMjkzOTQsIDEyOTM5OCwgMTI5NDAyLCAxMjk0MDYsIDEyOTQxMCwgMTI5NDE0LCAxMjk0MTgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyOTQyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NDI2LCAxMjk0MjksIDEyOTQzMywgMTI5NDM3LCAxMjk0NDAsIAorICAgIDEyOTQ0NCwgMTI5NDQ4LCAxMjk0NTEsIDEyOTQ1NCwgMTI5NDU4LCAxMjk0NjIsIDEyOTQ2NSwgMTI5NDY4LCAxMjk0NzEsIAorICAgIDEyOTQ3NCwgMTI5NDc5LCAxMjk0ODIsIDEyOTQ4NiwgMTI5NDg5LCAxMjk0OTIsIDEyOTQ5NSwgMTI5NDk4LCAxMjk1MDEsIAorICAgIDEyOTUwNCwgMTI5NTA3LCAxMjk1MTAsIDEyOTUxMywgMTI5NTE2LCAxMjk1MTksIDEyOTUyMywgMTI5NTI3LCAxMjk1MzEsIAorICAgIDEyOTUzNSwgMTI5NTQwLCAxMjk1NDUsIDEyOTU1MSwgMTI5NTU3LCAxMjk1NjMsIDEyOTU2OCwgMTI5NTc0LCAxMjk1ODAsIAorICAgIDEyOTU4NiwgMTI5NTkxLCAxMjk1OTcsIDEyOTYwMywgMTI5NjA4LCAxMjk2MTMsIDEyOTYxOSwgMTI5NjI0LCAxMjk2MzAsIAorICAgIDEyOTYzNiwgMTI5NjQxLCAxMjk2NDcsIDEyOTY1MywgMTI5NjU4LCAxMjk2NjQsIDEyOTY3MCwgMTI5Njc2LCAxMjk2ODIsIAorICAgIDEyOTY4OCwgMTI5NjkyLCAxMjk2OTcsIDEyOTcwMSwgMTI5NzA2LCAxMjk3MTAsIDEyOTcxNSwgMTI5NzIwLCAxMjk3MjYsIAorICAgIDEyOTczMiwgMTI5NzM4LCAxMjk3NDMsIDEyOTc0OSwgMTI5NzU1LCAxMjk3NjEsIDEyOTc2NiwgMTI5NzcyLCAxMjk3NzgsIAorICAgIDEyOTc4MywgMTI5Nzg4LCAxMjk3OTQsIDEyOTc5OSwgMTI5ODA1LCAxMjk4MTEsIDEyOTgxNiwgMTI5ODIyLCAxMjk4MjgsIAorICAgIDEyOTgzMywgMTI5ODM5LCAxMjk4NDUsIDEyOTg1MSwgMTI5ODU3LCAxMjk4NjMsIDEyOTg2OCwgMTI5ODcyLCAxMjk4NzcsIAorICAgIDEyOTg3OSwgMTI5ODgzLCAxMjk4ODYsIDEyOTg4OSwgMTI5ODkyLCAxMjk4OTUsIDEyOTg5OCwgMTI5OTAxLCAxMjk5MDQsIAorICAgIDEyOTkwNywgMTI5OTEwLCAxMjk5MTMsIDEyOTkxNiwgMTI5OTE5LCAxMjk5MjIsIDEyOTkyNSwgMTI5OTI4LCAxMjk5MzEsIAorICAgIDEyOTkzNCwgMTI5OTM3LCAxMjk5NDAsIDEyOTk0MywgMTI5OTQ2LCAxMjk5NDksIDEyOTk1MiwgMTI5OTU1LCAxMjk5NTgsIAorICAgIDEyOTk2MSwgMTI5OTY0LCAxMjk5NjcsIDEyOTk3MCwgMTI5OTczLCAxMjk5NzYsIDEyOTk3OSwgMTI5OTgyLCAxMjk5ODUsIAorICAgIDEyOTk4OCwgMTI5OTkxLCAxMjk5OTQsIDEyOTk5NywgMTMwMDAwLCAxMzAwMDMsIDEzMDAwNiwgMTMwMDA5LCAxMzAwMTIsIAorICAgIDEzMDAxNSwgMTMwMDE4LCAxMzAwMjEsIDEzMDAyNCwgMTMwMDI3LCAxMzAwMzAsIDEzMDAzMywgMTMwMDM2LCAxMzAwMzksIAorICAgIDEzMDA0MiwgMTMwMDQ1LCAxMzAwNDgsIDEzMDA1MSwgMTMwMDU0LCAxMzAwNTcsIDEzMDA2MCwgMTMwMDYzLCAxMzAwNjYsIAorICAgIDEzMDA2OSwgMTMwMDcyLCAxMzAwNzUsIDEzMDA3OCwgMTMwMDgxLCAxMzAwODQsIDEzMDA4NywgMTMwMDkwLCAxMzAwOTMsIAorICAgIDEzMDA5NiwgMTMwMDk5LCAxMzAxMDIsIDEzMDEwNSwgMTMwMTA4LCAxMzAxMTEsIDEzMDExNCwgMTMwMTE3LCAxMzAxMjAsIAorICAgIDEzMDEyMywgMTMwMTI2LCAxMzAxMjksIDEzMDEzMiwgMTMwMTM1LCAxMzAxMzgsIDEzMDE0MSwgMTMwMTQ0LCAxMzAxNDcsIAorICAgIDEzMDE1MCwgMTMwMTUzLCAxMzAxNTYsIDEzMDE1OSwgMTMwMTYyLCAxMzAxNjUsIDEzMDE2OCwgMTMwMTcxLCAxMzAxNzQsIAorICAgIDEzMDE3NywgMTMwMTgwLCAxMzAxODMsIDEzMDE4NiwgMTMwMTg5LCAxMzAxOTIsIDEzMDE5NSwgMTMwMTk4LCAxMzAyMDEsIAorICAgIDEzMDIwNCwgMTMwMjA3LCAxMzAyMTAsIDEzMDIxMywgMTMwMjE2LCAxMzAyMTksIDEzMDIyMiwgMTMwMjI1LCAxMzAyMjgsIAorICAgIDEzMDIzMSwgMTMwMjM0LCAxMzAyMzcsIDEzMDI0MCwgMTMwMjQzLCAxMzAyNDYsIDEzMDI0OSwgMTMwMjUyLCAxMzAyNTUsIAorICAgIDEzMDI1OCwgMTMwMjYxLCAxMzAyNjQsIDEzMDI2NywgMTMwMjcwLCAxMzAyNzMsIDEzMDI3NiwgMTMwMjc5LCAxMzAyODIsIAorICAgIDEzMDI4NSwgMTMwMjg4LCAxMzAyOTEsIDEzMDI5NCwgMTMwMjk3LCAxMzAzMDAsIDEzMDMwMywgMTMwMzA2LCAxMzAzMDksIAorICAgIDEzMDMxMiwgMTMwMzE1LCAxMzAzMTgsIDEzMDMyMSwgMTMwMzI0LCAxMzAzMjcsIDEzMDMzMCwgMTMwMzMzLCAxMzAzMzYsIAorICAgIDEzMDMzOSwgMTMwMzQyLCAxMzAzNDUsIDEzMDM0OCwgMTMwMzUxLCAxMzAzNTQsIDEzMDM1NywgMTMwMzYwLCAxMzAzNjMsIAorICAgIDEzMDM2NiwgMTMwMzY5LCAxMzAzNzIsIDEzMDM3NSwgMTMwMzc4LCAxMzAzODEsIDEzMDM4NCwgMTMwMzg3LCAxMzAzOTAsIAorICAgIDEzMDM5MywgMTMwMzk2LCAxMzAzOTksIDEzMDQwMiwgMTMwNDA1LCAxMzA0MDgsIDEzMDQxMSwgMTMwNDE0LCAxMzA0MTcsIAorICAgIDEzMDQyMCwgMTMwNDIzLCAxMzA0MjYsIDEzMDQyOSwgMTMwNDMyLCAxMzA0MzUsIDEzMDQzOCwgMTMwNDQxLCAxMzA0NDQsIAorICAgIDEzMDQ0NywgMTMwNDUwLCAxMzA0NTMsIDEzMDQ1NiwgMTMwNDU5LCAxMzA0NjIsIDEzMDQ2NSwgMTMwNDY4LCAxMzA0NzEsIAorICAgIDEzMDQ3NCwgMTMwNDc3LCAxMzA0ODAsIDEzMDQ4MywgMTMwNDg2LCAxMzA0ODksIDEzMDQ5MiwgMTMwNDk1LCAxMzA0OTgsIAorICAgIDEzMDUwMSwgMTMwNTA0LCAxMzA1MDcsIDEzMDUxMCwgMTMwNTEzLCAxMzA1MTYsIDEzMDUxOSwgMTMwNTIyLCAxMzA1MjUsIAorICAgIDEzMDUyOCwgMTMwNTMxLCAxMzA1MzQsIDEzMDUzNywgMTMwNTQwLCAxMzA1NDMsIDEzMDU0NiwgMTMwNTQ5LCAxMzA1NTIsIAorICAgIDEzMDU1NSwgMTMwNTU4LCAxMzA1NjEsIDEzMDU2NCwgMTMwNTY3LCAxMzA1NzAsIDEzMDU3MywgMTMwNTc2LCAxMzA1NzksIAorICAgIDEzMDU4MiwgMTMwNTg1LCAxMzA1ODgsIDEzMDU5MSwgMTMwNTk0LCAxMzA1OTcsIDEzMDYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjAzLCAxMzA2MDUsIDEzMDYwNywgMTMwNjEyLCAxMzA2MTQsIAorICAgIDEzMDYxOSwgMTMwNjIxLCAxMzA2MjYsIDEzMDYyOCwgMTMwNjMzLCAxMzA2MzUsIDEzMDYzNywgMTMwNjM5LCAxMzA2NDEsIAorICAgIDEzMDY0MywgMTMwNjQ1LCAxMzA2NDcsIDEzMDY0OSwgMTMwNjUxLCAxMzA2NTQsIDEzMDY1NywgMTMwNjU5LCAxMzA2NjEsIAorICAgIDEzMDY2NSwgMTMwNjY4LCAxMzA2NzMsIDEzMDY3NSwgMTMwNjc3LCAxMzA2NzksIDEzMDY4MywgMTMwNjg2LCAxMzA2ODgsIAorICAgIDEzMDY5MiwgMTMwNjk0LCAxMzA2OTgsIDEzMDcwMCwgMTMwNzA0LCAxMzA3MDcsIDEzMDcwOSwgMTMwNzEzLCAxMzA3MTcsIAorICAgIDEzMDcxOSwgMTMwNzI1LCAxMzA3MjcsIDEzMDczMiwgMTMwNzM0LCAxMzA3MzksIDEzMDc0MSwgMTMwNzQ2LCAxMzA3NDgsIAorICAgIDEzMDc1MywgMTMwNzU1LCAxMzA3NTgsIDEzMDc2MCwgMTMwNzY0LCAxMzA3NjYsIDEzMDc3MywgMTMwNzc1LCAxMzA3NzcsIAorICAgIDEzMDc3OSwgMTMwNzg0LCAxMzA3ODYsIDEzMDc4OCwgMTMwNzkwLCAxMzA3OTIsIDEzMDc5NCwgMTMwNzk5LCAxMzA4MDMsIAorICAgIDEzMDgwNSwgMTMwODEwLCAxMzA4MTQsIDEzMDgxNiwgMTMwODIxLCAxMzA4MjUsIDEzMDgyNywgMTMwODMyLCAxMzA4MzYsIAorICAgIDEzMDgzOCwgMTMwODQwLCAxMzA4NDIsIDEzMDg0NCwgMTMwODQ4LCAxMzA4NTAsIDEzMDg1NSwgMTMwODU3LCAxMzA4NjMsIAorICAgIDEzMDg2NSwgMTMwODcxLCAxMzA4NzMsIDEzMDg3NSwgMTMwODc3LCAxMzA4ODEsIDEzMDg4MywgMTMwODkwLCAxMzA4OTIsIAorICAgIDEzMDg5OSwgMTMwOTAxLCAxMzA5MDYsIDEzMDkxMSwgMTMwOTEzLCAxMzA5MTksIDEzMDkyNSwgMTMwOTI3LCAxMzA5MzMsIAorICAgIDEzMDkzOCwgMTMwOTQwLCAxMzA5NDYsIDEzMDk1MiwgMTMwOTU0LCAxMzA5NjAsIDEzMDk2NiwgMTMwOTY4LCAxMzA5NzQsIAorICAgIDEzMDk3OCwgMTMwOTgwLCAxMzA5ODUsIDEzMDk4NywgMTMwOTg5LCAxMzA5OTQsIDEzMDk5NiwgMTMwOTk4LCAxMzEwMDQsIAorICAgIDEzMTAwNiwgMTMxMDExLCAxMzEwMTUsIDEzMTAxNywgMTMxMDIyLCAxMzEwMjYsIDEzMTAyOCwgMTMxMDM0LCAxMzEwMzYsIAorICAgIDEzMTA0MCwgMTMxMDQyLCAxMzEwNDYsIDEzMTA0OCwgMTMxMDU1LCAxMzEwNjIsIDEzMTA2NCwgMTMxMDcxLCAxMzEwNzgsIAorICAgIDEzMTA4MCwgMTMxMDg1LCAxMzEwODcsIDEzMTA5NCwgMTMxMDk2LCAxMzExMDEsIDEzMTEwMywgMTMxMTA5LCAxMzExMTEsIAorICAgIDEzMTExNSwgMTMxMTE3LCAxMzExMjMsIDEzMTEyNSwgMTMxMTI5LCAxMzExMzEsIDEzMTEzNywgMTMxMTM5LCAxMzExNDEsIAorICAgIDEzMTE0MywgMTMxMTQ4LCAxMzExNTMsIDEzMTE1NSwgMTMxMTU5LCAxMzExNjYsIDEzMTE3MywgMTMxMTc4LCAxMzExODMsIAorICAgIDEzMTE5NSwgMTMxMTk3LCAxMzExOTksIDEzMTIwMSwgMTMxMjAzLCAxMzEyMDUsIDEzMTIwNywgMTMxMjA5LCAxMzEyMTEsIAorICAgIDEzMTIxMywgMTMxMjE1LCAxMzEyMTcsIDEzMTIxOSwgMTMxMjIxLCAxMzEyMjMsIDEzMTIyNSwgMTMxMjI3LCAxMzEyMjksIAorICAgIDEzMTIzNSwgMTMxMjQyLCAxMzEyNDcsIDEzMTI1MiwgMTMxMjYzLCAxMzEyNjUsIDEzMTI2NywgMTMxMjY5LCAxMzEyNzEsIAorICAgIDEzMTI3MywgMTMxMjc1LCAxMzEyNzcsIDEzMTI3OSwgMTMxMjgxLCAxMzEyODMsIDEzMTI4NSwgMTMxMjg3LCAxMzEyODksIAorICAgIDEzMTI5MSwgMTMxMjkzLCAxMzEyOTUsIDEzMTMwMCwgMTMxMzAyLCAxMzEzMDQsIDEzMTMxNSwgMTMxMzE3LCAxMzEzMTksIAorICAgIDEzMTMyMSwgMTMxMzIzLCAxMzEzMjUsIDEzMTMyNywgMTMxMzI5LCAxMzEzMzEsIDEzMTMzMywgMTMxMzM1LCAxMzEzMzcsIAorICAgIDEzMTMzOSwgMTMxMzQxLCAxMzEzNDMsIDEzMTM0NSwgMTMxMzQ3LCAxMzEzNDksIDEzMTM1MSwgMTMxMzUzLCAxMzEzNTUsIAorICAgIDEzMTM1NywgMTMxMzU5LCAxMzEzNjEsIDEzMTM2MywgMTMxMzY1LCAxMzEzNjcsIDEzMTM2OSwgMTMxMzcxLCAxMzEzNzMsIAorICAgIDEzMTM3NSwgMTMxMzc3LCAxMzEzNzksIDEzMTM4MSwgMTMxMzgzLCAxMzEzODUsIDEzMTM4NywgMTMxMzg5LCAxMzEzOTEsIAorICAgIDEzMTM5MywgMTMxMzk1LCAxMzEzOTcsIDEzMTM5OSwgMTMxNDAxLCAxMzE0MDMsIDEzMTQwNSwgMTMxNDA3LCAxMzE0MDksIAorICAgIDEzMTQxMSwgMTMxNDEzLCAxMzE0MTUsIDEzMTQxNywgMTMxNDE5LCAxMzE0MjEsIDEzMTQyMywgMTMxNDI1LCAxMzE0MjcsIAorICAgIDEzMTQyOSwgMTMxNDMxLCAxMzE0MzMsIDEzMTQzNSwgMTMxNDM3LCAxMzE0MzksIDEzMTQ0MSwgMTMxNDQzLCAxMzE0NDUsIAorICAgIDEzMTQ0NywgMTMxNDQ5LCAxMzE0NTEsIDEzMTQ1MywgMTMxNDU1LCAxMzE0NTcsIDEzMTQ1OSwgMTMxNDYxLCAxMzE0NjMsIAorICAgIDEzMTQ2NSwgMTMxNDY3LCAxMzE0NjksIDEzMTQ3MSwgMTMxNDczLCAxMzE0NzUsIDEzMTQ3NywgMTMxNDc5LCAxMzE0ODEsIAorICAgIDEzMTQ4MywgMTMxNDg1LCAxMzE0ODcsIDEzMTQ4OSwgMTMxNDkxLCAxMzE0OTMsIDEzMTQ5NSwgMTMxNDk3LCAxMzE0OTksIAorICAgIDEzMTUwMSwgMTMxNTAzLCAxMzE1MDUsIDEzMTUwNywgMTMxNTA5LCAxMzE1MTEsIDEzMTUxMywgMTMxNTE1LCAxMzE1MTcsIAorICAgIDEzMTUxOSwgMTMxNTIxLCAxMzE1MjMsIDEzMTUyNSwgMTMxNTI3LCAxMzE1MjksIDEzMTUzMSwgMTMxNTMzLCAxMzE1MzUsIAorICAgIDEzMTUzNywgMTMxNTM5LCAxMzE1NDEsIDEzMTU0MywgMTMxNTQ1LCAxMzE1NDcsIDEzMTU0OSwgMTMxNTUxLCAxMzE1NTMsIAorICAgIDEzMTU1NSwgMTMxNTU3LCAxMzE1NTksIDEzMTU2MSwgMTMxNTYzLCAxMzE1NjUsIDEzMTU2NywgMTMxNTY5LCAxMzE1NzEsIAorICAgIDEzMTU3MywgMTMxNTc1LCAxMzE1NzcsIDEzMTU3OSwgMTMxNTgxLCAxMzE1ODMsIDEzMTU4NSwgMTMxNTg3LCAxMzE1ODksIAorICAgIDEzMTU5MSwgMTMxNTkzLCAxMzE1OTUsIDEzMTU5NywgMTMxNTk5LCAxMzE2MDEsIDEzMTYwMywgMTMxNjA1LCAxMzE2MDcsIAorICAgIDEzMTYwOSwgMTMxNjExLCAxMzE2MTMsIDEzMTYxNSwgMTMxNjE3LCAxMzE2MTksIDEzMTYyMSwgMTMxNjIzLCAxMzE2MjUsIAorICAgIDEzMTYyNywgMTMxNjI5LCAxMzE2MzEsIDEzMTYzMywgMTMxNjM1LCAxMzE2MzcsIDEzMTYzOSwgMTMxNjQxLCAxMzE2NDMsIAorICAgIDEzMTY0NSwgMTMxNjQ3LCAxMzE2NDksIDEzMTY1MSwgMTMxNjUzLCAxMzE2NTUsIDEzMTY1NywgMTMxNjU5LCAxMzE2NjEsIAorICAgIDEzMTY2MywgMTMxNjY1LCAxMzE2NjcsIDEzMTY2OSwgMTMxNjcxLCAxMzE2NzMsIDEzMTY3NSwgMTMxNjc3LCAxMzE2NzksIAorICAgIDEzMTY4MSwgMTMxNjgzLCAxMzE2ODUsIDEzMTY4NywgMTMxNjg5LCAxMzE2OTEsIDEzMTY5MywgMTMxNjk1LCAxMzE2OTcsIAorICAgIDEzMTY5OSwgMTMxNzAxLCAxMzE3MDMsIDEzMTcwNSwgMTMxNzA3LCAxMzE3MDksIDEzMTcxMSwgMTMxNzEzLCAxMzE3MTUsIAorICAgIDEzMTcxNywgMTMxNzE5LCAxMzE3MjEsIDEzMTcyMywgMTMxNzI1LCAxMzE3MjcsIDEzMTcyOSwgMTMxNzMxLCAxMzE3MzMsIAorICAgIDEzMTczNSwgMTMxNzM3LCAxMzE3MzksIDEzMTc0MSwgMTMxNzQzLCAxMzE3NDUsIDEzMTc0NywgMTMxNzQ5LCAxMzE3NTEsIAorICAgIDEzMTc1MywgMTMxNzU1LCAxMzE3NTcsIDEzMTc1OSwgMTMxNzYxLCAxMzE3NjMsIDEzMTc2NSwgMTMxNzY3LCAxMzE3NjksIAorICAgIDEzMTc3MSwgMTMxNzczLCAxMzE3NzUsIDEzMTc3NywgMTMxNzc5LCAxMzE3ODEsIDEzMTc4MywgMTMxNzg1LCAxMzE3ODcsIAorICAgIDEzMTc4OSwgMTMxNzkxLCAxMzE3OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMTc5NSwgMTMxODA1LCAxMzE4MTUsIDEzMTgyNCwgMTMxODMzLCAxMzE4NDYsIDEzMTg1OSwgMTMxODcxLCAxMzE4ODMsIAorICAgIDEzMTg5MywgMTMxOTAzLCAxMzE5MTMsIDEzMTkyMywgMTMxOTM0LCAxMzE5NDUsIDEzMTk1NSwgMTMxOTY0LCAxMzE5NzMsIAorICAgIDEzMTk4MiwgMTMxOTk1LCAxMzIwMDgsIDEzMjAyMCwgMTMyMDMyLCAxMzIwNDIsIDEzMjA1MiwgMTMyMDYyLCAxMzIwNzIsIAorICAgIDEzMjA4MSwgMTMyMDkwLCAxMzIwOTksIDEzMjEwOCwgMTMyMTE3LCAxMzIxMjYsIDEzMjEzNSwgMTMyMTQ0LCAxMzIxNTMsIAorICAgIDEzMjE2MiwgMTMyMTcxLCAxMzIxODAsIDEzMjE5MSwgMTMyMjAxLCAxMzIyMTEsIDEzMjIyNCwgMTMyMjM0LCAxMzIyNDcsIAorICAgIDEzMjI1NCwgMTMyMjY0LCAxMzIyNzEsIDEzMjI3OCwgMTMyMjg1LCAxMzIyOTIsIDEzMjI5OSwgMTMyMzA2LCAxMzIzMTUsIAorICAgIDEzMjMyNCwgMTMyMzMzLCAxMzIzNDIsIDEzMjM1MSwgMTMyMzYwLCAxMzIzNjksIDEzMjM3OCwgMTMyMzg2LCAxMzIzOTQsIAorICAgIDEzMjQwMSwgMTMyNDExLCAxMzI0MjAsIDEzMjQyOCwgMTMyNDM1LCAxMzI0NDUsIDEzMjQ1NCwgMTMyNDU4LCAxMzI0NjIsIAorICAgIDEzMjQ2NiwgMTMyNDcwLCAxMzI0NzQsIDEzMjQ3OCwgMTMyNDgyLCAxMzI0ODYsIDEzMjQ5MCwgMTMyNDk0LCAxMzI0OTcsIAorICAgIDEzMjUwMSwgMTMyNTA0LCAxMzI1MDcsIDEzMjUxMSwgMTMyNTE1LCAxMzI1MTksIDEzMjUyMywgMTMyNTI3LCAxMzI1MzEsIAorICAgIDEzMjUzNSwgMTMyNTM5LCAxMzI1NDMsIDEzMjU0NywgMTMyNTUxLCAxMzI1NTUsIDEzMjU1OSwgMTMyNTYzLCAxMzI1NjcsIAorICAgIDEzMjU3MSwgMTMyNTc1LCAxMzI1NzksIDEzMjU4MywgMTMyNTg3LCAxMzI1OTEsIDEzMjU5NSwgMTMyNTk5LCAxMzI2MDMsIAorICAgIDEzMjYwNywgMTMyNjExLCAxMzI2MTUsIDEzMjYxOSwgMTMyNjIzLCAxMzI2MjcsIDEzMjYzMSwgMTMyNjM1LCAxMzI2MzksIAorICAgIDEzMjY0MywgMTMyNjQ3LCAxMzI2NTEsIDEzMjY1NSwgMTMyNjU5LCAxMzI2NjMsIDEzMjY2NywgMTMyNjcxLCAxMzI2NzUsIAorICAgIDEzMjY3OSwgMTMyNjgzLCAxMzI2ODcsIDEzMjY5MSwgMTMyNjk1LCAxMzI2OTksIDEzMjcwMywgMTMyNzA3LCAxMzI3MTEsIAorICAgIDEzMjcxNSwgMTMyNzE5LCAxMzI3MjMsIDEzMjcyNywgMTMyNzMxLCAxMzI3MzUsIDEzMjczOSwgMTMyNzQzLCAxMzI3NDcsIAorICAgIDEzMjc1MSwgMTMyNzU1LCAxMzI3NTksIDEzMjc2MywgMTMyNzY3LCAxMzI3NzEsIDEzMjc3NSwgMTMyNzc5LCAxMzI3ODMsIAorICAgIDEzMjc4NywgMTMyNzkxLCAxMzI3OTUsIDEzMjc5OSwgMTMyODAzLCAxMzI4MDcsIDEzMjgxMSwgMTMyODE1LCAxMzI4MTksIAorICAgIDEzMjgyMywgMTMyODI3LCAxMzI4MzEsIDEzMjgzNSwgMTMyODM5LCAxMzI4NDMsIDEzMjg0NywgMTMyODUwLCAxMzI4NTQsIAorICAgIDEzMjg1OCwgMTMyODYyLCAxMzI4NjYsIDEzMjg3MCwgMTMyODc0LCAxMzI4NzgsIDEzMjg4MiwgMTMyODg2LCAxMzI4OTAsIAorICAgIDEzMjg5NCwgMTMyODk4LCAxMzI5MDIsIDEzMjkwNiwgMTMyOTEwLCAxMzI5MTQsIDEzMjkxOCwgMTMyOTIyLCAxMzI5MjYsIAorICAgIDEzMjkzMCwgMTMyOTM0LCAxMzI5MzgsIDEzMjk0MiwgMTMyOTQ2LCAxMzI5NTAsIDEzMjk1NCwgMTMyOTU4LCAxMzI5NjIsIAorICAgIDEzMjk2NiwgMTMyOTcwLCAxMzI5NzQsIDEzMjk3OCwgMTMyOTgyLCAxMzI5ODYsIDEzMjk5MCwgMTMyOTk0LCAxMzI5OTgsIAorICAgIDEzMzAwMiwgMTMzMDA2LCAxMzMwMTAsIDEzMzAxNCwgMTMzMDE4LCAxMzMwMjIsIDEzMzAyNiwgMTMzMDMwLCAxMzMwMzQsIAorICAgIDEzMzAzOCwgMTMzMDQyLCAxMzMwNDYsIDEzMzA1MCwgMTMzMDU0LCAxMzMwNTgsIDEzMzA2MiwgMTMzMDY2LCAxMzMwNzAsIAorICAgIDEzMzA3NCwgMTMzMDc4LCAxMzMwODIsIDEzMzA4NiwgMTMzMDkwLCAxMzMwOTQsIDEzMzA5OCwgMTMzMTAyLCAxMzMxMDYsIAorICAgIDEzMzExMCwgMTMzMTE0LCAxMzMxMTgsIDEzMzEyMiwgMTMzMTI2LCAxMzMxMzAsIDEzMzEzNCwgMTMzMTM4LCAxMzMxNDIsIAorICAgIDEzMzE0NiwgMTMzMTUwLCAxMzMxNTQsIDEzMzE1OCwgMTMzMTYyLCAxMzMxNjYsIDEzMzE3MCwgMTMzMTc0LCAxMzMxNzgsIAorICAgIDEzMzE4MiwgMTMzMTg2LCAxMzMxOTAsIDEzMzE5NCwgMTMzMTk4LCAxMzMyMDIsIDEzMzIwNiwgMTMzMjEwLCAxMzMyMTQsIAorICAgIDEzMzIxOCwgMTMzMjIyLCAxMzMyMjYsIDEzMzIzMCwgMTMzMjM0LCAxMzMyMzgsIDEzMzI0MiwgMTMzMjQ2LCAxMzMyNTAsIAorICAgIDEzMzI1NCwgMTMzMjU4LCAxMzMyNjIsIDEzMzI2NiwgMTMzMjcwLCAxMzMyNzQsIDEzMzI3OCwgMTMzMjgyLCAxMzMyODYsIAorICAgIDEzMzI5MCwgMTMzMjk0LCAxMzMyOTgsIDEzMzMwMiwgMTMzMzA2LCAxMzMzMTAsIDEzMzMxNCwgMTMzMzE4LCAxMzMzMjIsIAorICAgIDEzMzMyNiwgMTMzMzMwLCAxMzMzMzQsIDEzMzMzOCwgMTMzMzQyLCAxMzMzNDYsIDEzMzM1MCwgMTMzMzU0LCAxMzMzNTgsIAorICAgIDEzMzM2MiwgMTMzMzY2LCAxMzMzNzAsIDEzMzM3NCwgMTMzMzc4LCAxMzMzODIsIDEzMzM4NiwgMTMzMzkwLCAxMzMzOTQsIAorICAgIDEzMzM5OCwgMTMzNDAyLCAxMzM0MDYsIDEzMzQxMCwgMTMzNDE0LCAxMzM0MTgsIDEzMzQyMiwgMTMzNDI2LCAxMzM0MzAsIAorICAgIDEzMzQzNCwgMTMzNDM4LCAxMzM0NDIsIDEzMzQ0NiwgMTMzNDUwLCAxMzM0NTQsIDEzMzQ1OCwgMTMzNDYyLCAxMzM0NjYsIAorICAgIDEzMzQ3MCwgMTMzNDc0LCAxMzM0NzgsIDEzMzQ4MiwgMTMzNDg2LCAxMzM0OTAsIDEzMzQ5NCwgMTMzNDk4LCAxMzM1MDIsIAorICAgIDEzMzUwNiwgMTMzNTEwLCAxMzM1MTQsIDEzMzUxOCwgMTMzNTIyLCAxMzM1MjYsIDEzMzUzMCwgMTMzNTM0LCAxMzM1MzgsIAorICAgIDEzMzU0MiwgMTMzNTQ2LCAxMzM1NTAsIDEzMzU1NCwgMTMzNTU4LCAxMzM1NjIsIDEzMzU2NiwgMTMzNTcwLCAxMzM1NzQsIAorICAgIDEzMzU3OCwgMTMzNTgyLCAxMzM1ODYsIDEzMzU5MCwgMTMzNTk0LCAxMzM1OTgsIDEzMzYwMiwgMTMzNjA2LCAxMzM2MTAsIAorICAgIDEzMzYxNCwgMTMzNjE5LCAxMzM2MjQsIDEzMzYyOSwgMTMzNjMzLCAxMzM2MzksIDEzMzY0NiwgMTMzNjUzLCAxMzM2NjAsIAorICAgIDEzMzY2NywgMTMzNjc0LCAxMzM2ODEsIDEzMzY4OCwgMTMzNjk1LCAxMzM3MDIsIDEzMzcwOSwgMTMzNzE2LCAxMzM3MjMsIAorICAgIDEzMzczMCwgMTMzNzM2LCAxMzM3NDMsIDEzMzc1MCwgMTMzNzU2LCAxMzM3NjMsIDEzMzc3MCwgMTMzNzc3LCAxMzM3ODQsIAorICAgIDEzMzc5MSwgMTMzNzk4LCAxMzM4MDUsIDEzMzgxMiwgMTMzODE5LCAxMzM4MjYsIDEzMzgzMywgMTMzODQwLCAxMzM4NDcsIAorICAgIDEzMzg1MywgMTMzODU5LCAxMzM4NjYsIDEzMzg3MywgMTMzODgyLCAxMzM4OTEsIDEzMzkwMCwgMTMzOTA5LCAxMzM5MTQsIAorICAgIDEzMzkxOSwgMTMzOTI1LCAxMzM5MzEsIDEzMzkzNywgMTMzOTQzLCAxMzM5NDksIDEzMzk1NSwgMTMzOTYxLCAxMzM5NjcsIAorICAgIDEzMzk3MywgMTMzOTc5LCAxMzM5ODUsIDEzMzk5MSwgMTMzOTk2LCAxMzQwMDIsIDEzNDAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29kZV9oYXNoW10gPSB7CiAgICAgNzQyMjQsIDQ4NTEsIDAsIDc4MTU2LCA3ODQ5OSwgMTI4Njg1LCA3OTI5LCAwLCAxOTQ2ODIsIDEyNzc2NiwgNzg1MDAsIAotICAgIDY2NDgwLCAwLCA0MjgzMywgNzQ1MjksIDEyMDY0LCAwLCA1OTYsIDAsIDEyODEwMywgMTMxOTIsIDg2NTEsIDAsIDAsIAorICAgIDY2NDgwLCAwLCA0MjgzMywgNzQ1MjksIDEyMDY0LCAwLCA1OTYsIDk4MzgxMiwgNjk4NTAsIDEzMTkyLCA4NjUxLCAwLCAwLCAKICAgICAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgMCwgMCwgNTgxNiwgMTE5MDY3LCA2NDgxMCwgNDIzMSwgNjgyNSwgNDI4OTcsIAogICAgIDQyMzMsIDQyMzQsIDQyMzIsIDkxNzgzNiwgNzQ0MTUsIDEyMDIxMCwgNjM4NCwgOTE3ODQwLCA3ODEwOCwgODg1MSwgMCwgCi0gICAgMTI4NTUzLCAwLCA0MTYwMSwgODg3NCwgMCwgNzc0OCwgMCwgMCwgMCwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgCi0gICAgNDE2MDAsIDAsIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAwLCAwLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIDM0MDQsIAotICAgIDAsIDAsIDAsIDE3NTksIDAsIDQxMDc2LCA2ODM4MywgMTIwNTcyLCAxMTkyMDUsIDY2NTc3LCAwLCAxMjc3NjQsIDY1ODU5LCAKLSAgICAwLCA3NDA0LCAwLCAwLCAwLCAwLCA2NTkwOCwgOTgzNCwgMzA1NSwgOTg1MiwgMCwgNjUyODgsIDAsIDExMzk4LCAwLCAKLSAgICA5MjQxNywgMTE5MjU1LCAwLCAwLCA2MDMsIDc0Mzk4LCA0MzU0OCwgMCwgMCwgOTE3ODI0LCAzMzUwLCAxMjA4MTcsIAotICAgIDY0MzE4LCA5MTc4MjgsIDEyNzA4OSwgMzM5MCwgNzQ0ODMsIDQzMjY1LCAxMjA1OTksIDkxNzgzMCwgNzg1NzMsIDAsIAotICAgIDE5MTksIDM0MDAsIDEyMDY1MSwgMTI3OTQ0LCAxMTY0NywgOTE3NTQwLCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIAotICAgIDY0MTM4LCA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIDExMjk3LCAwLCAwLCAxMTk2NiwgNjQxMjgsIDEyODU4NywgMCwgMCwgCi0gICAgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDAsIDQzMzc0LCA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDAsIAotICAgIDY2MDIxLCAwLCAwLCA1NDU3LCA1NDQwLCA4ODU3LCAxMjg3NzEsIDY1MjgyLCAyODQzLCA1MzU1LCAxMjc5MjgsIDAsIDAsIAotICAgIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAwLCAwLCAwLCAwLCAxMjcwMjcsIDEwNzE3LCA2NDU3MCwgNTYzMCwgCi0gICAgNzQzNTAsIDY0MTQzLCAxMDY4MiwgMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAwLCAwLCA2NDkzMCwgMTE2MzEsIAotICAgIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDExODg1OSwgMTk0NjYxLCA2NDQ2OCwgMTA5MDYsIDEzNTMsIAotICAgIDY5NjAsIDAsIDAsIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIAotICAgIDY0MTA4LCA4MDkwLCAwLCA3NDQwMSwgOTE3ODExLCA1ODcsIDAsIDEyODEzMSwgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIAotICAgIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgMCwgMTIyMTMsIDE5NDY3OCwgMjc2MCwgMCwgMCwgMCwgMTk0Nzk0LCA2NDE1NiwgCi0gICAgNjQxNTUsIDQyNDk2LCAwLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIAotICAgIDAsIDAsIDQ4MzksIDAsIDAsIDE4NzQsIDExOTAxNiwgMCwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCAKLSAgICA5MjUzNCwgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIDkyNTUwLCA2NDEyMiwgNzQ0MjIsIDY2NjA5LCAwLCA2NDExNywgCi0gICAgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCAKLSAgICA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgMTI3MzA2LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCAKLSAgICA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgMCwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIDEyODY3MSwgCi0gICAgNDQwMTcsIDExNDI5LCAwLCAwLCAwLCA5MTc5OTAsIDczODQxLCAwLCAwLCA5MDU2LCA2NDMxMywgNjE4OCwgMTIwMDE5LCAKLSAgICA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIDYzLCA3MjMzLCA5MjIxMiwgMCwgNDE5MDQsIAotICAgIDY2MzksIDY0MDY0LCAwLCAxMjgzNDQsIDAsIDExNzYsIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjg2NjcsIDAsIDAsIAotICAgIDEyMDUxOSwgNjYzNzYsIDY2MjQyLCAxMTQxNSwgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCAKLSAgICA3NzE0LCA2NjIyMiwgMCwgNzc2OCwgMCwgNDE5OSwgNjQ3MDgsIDAsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCi0gICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDAsIDAsIDAsIDY0NjE1LCA0MTkxNSwgMCwgCi0gICAgMTIwNzUsIDkyMjExLCAwLCA1MTc0LCAwLCAwLCAxMjc1NTcsIDMxMjMsIDAsIDEyNjg1LCAxMjc5MDQsIDg0MDgsIDY0NzA0LCAKLSAgICAwLCAwLCA5MjIzLCAwLCA0MTYxNiwgMCwgNzM3OTcsIDAsIDExMTYsIDEyODIwNCwgNDMwNDksIDcxMzYsIDQzMDUwLCAKLSAgICA4NTQ4LCAxMjA0ODUsIDAsIDExOTA2MSwgOTE3OTk5LCAwLCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCAwLCAxMjA1OTUsIAotICAgIDY0MDk1LCA2NDA5NCwgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDAsIDAsIDExNDM0LCA2NDA4MywgCi0gICAgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgMTk0ODE3LCA5OTI3LCA0MTMzNSwgCi0gICAgNDExOCwgMTc5NywgMCwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgMTI3ODgxLCAyOTgsIDAsIDEyODExNCwgMCwgNDI2MjcsIDAsIAotICAgIDMyLCA2MTg3LCAxMTkwNTIsIDExNDk1LCAxMTQ1OSwgMzY2NSwgMCwgNDI4NzEsIDAsIDE5OTIzLCA3NDMzNSwgMCwgCi0gICAgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA5MjQ5NSwgMCwgMCwgNjU3NTgsIDEyNzUwLCA0MTgxLCAKLSAgICA4NTQ0LCAwLCAxMjAxOTksIDkxNzg5NywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgNjUwMTQsIDAsIDAsIDAsIDM2MzksIAotICAgIDExOTU4OCwgMCwgMCwgMTE4OTA0LCAxMDA3MywgMTIwMjA2LCAxMjg4NjIsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAKLSAgICAxMDk4LCA5MjU2NSwgMTIwMjA1LCAwLCAwLCAxMDIwNywgODc4OSwgMCwgMCwgMCwgMCwgOTIzNCwgMCwgNjE4MiwgMCwgCi0gICAgNjUwNTgsIDAsIDAsIDAsIDAsIDU0NzEsIDk0NjEsIDU1NzMsIDExODkzNiwgNTQ3MywgNDQsIDAsIDY2MjQ0LCAxMTg5MDcsIAotICAgIDAsIDY2MjM4LCAxMjg0NCwgMCwgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAwLCAwLCA2NTgxLCA1NTc2LCAwLCAKLSAgICA2NDQwNSwgNDEzMzcsIDAsIDQxNjMxLCA4OTQ3LCA2ODM5MCwgMTI3ODQ0LCA0MTY5NCwgMCwgMCwgNzkwOCwgMCwgMTA0MDgsIAotICAgIDY1NzksIDAsIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDEyNzAxMCwgMTIwNTA0LCAxOTQ4MjgsIDAsIAotICAgIDUwNTgsIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDAsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgCi0gICAgNzg2MDYsIDAsIDE0MzcsIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMCwgMCwgCi0gICAgMCwgMTIxMTMsIDQyMzYsIDQ3MjcsIDAsIDAsIDc2OTMsIDEwNzQ5LCAwLCA3NDg4LCA1NzczLCA5NzgsIDEyODEzNCwgMCwgCi0gICAgNDE2MTksIDEwMjM5LCA2ODYxMSwgMCwgNjYyMDksIDAsIDEyODcwMCwgOTc0OCwgMCwgMTI3NTI0LCAwLCAwLCAwLCAwLCAKLSAgICAxOTUwODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzNDEsIDExOTU5NiwgMjM3OSwgMTEzMjUsIDAsIDY0NjY4LCA2Nzg1NCwgCi0gICAgODEyNSwgMTIwNTQ1LCA2NzQzLCAxMTkxNzUsIDkxNzk0MCwgMjM2OSwgMCwgMCwgMCwgMTE5MjM1LCA3NDA5MiwgNzM5MzYsIAotICAgIDcwMDgsIDQzNjYwLCAwLCAwLCAwLCAyMzY3LCAxMjc4MjcsIDAsIDI2NCwgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAKLSAgICAxODQ0LCAxMTkwODQsIDAsIDYwMTksIDAsIDAsIDY5NjEsIDAsIDExODgzOSwgMCwgODgwMCwgMCwgNDI4NjIsIDQ0NjMsIAotICAgIDY1NTgxLCA2MTkyLCAxOTQ2NzYsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCA2NTA0MiwgMTE4Nzk3LCAxMjA4MDAsIDAsIAotICAgIDEyODkyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyNjEsIDEyMDcwNywgMCwgMCwgNTA3NCwgNTA3MywgMTI4NzkwLCA4OTgzLCAKLSAgICAxMTg5ODEsIDc0NDkzLCAwLCA1MDcyLCAxMjgwNzEsIDYxOTgsIDExNjE0LCAwLCAxOTYsIDAsIDAsIDAsIDQ5MjksIAotICAgIDEyMDM0MiwgMCwgMCwgMCwgMCwgNDI4NDcsIDAsIDAsIDAsIDQ5MzQsIDAsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgCi0gICAgMTI3OTE3LCA0MjU4NCwgMCwgNDMyOSwgNDEzMjEsIDQ5NzksIDMwNDgsIDc3NTIsIDQxMzIwLCAwLCA3NDQxOCwgMTI4MTksIAotICAgIDAsIDUwNzEsIDAsIDM2NDIsIDAsIDUwNzAsIDEwMDQyLCAxMTg4MzUsIDM5ODcsIDUwNjgsIDAsIDg5MDksIDc4NjUwLCAKLSAgICA3ODY0OSwgMCwgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIDEyNDUsIDkxMDUsIDY2NDYzLCA0OTIxLCAKLSAgICAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTk0NjE5LCAwLCAwLCA2NDcwOSwgMCwgMTk0NjIwLCA3ODg4MCwgNDkyMiwgCi0gICAgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgMCwgMCwgOTUyNiwgNDkyMCwgMCwgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDAsIAotICAgIDkyMTc1LCAxMjAyNzUsIDQ5MzMsIDAsIDAsIDExODk4NSwgNDkyOCwgMCwgMCwgNzQ3NzAsIDEyMDE5NCwgMCwgNzIyLCAKLSAgICAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgMTI3NDg1LCAxMTk4NTUsIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDEyNzQ3NCwgCi0gICAgMTI3NDc3LCAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgOTIzMTAsIDEyNzQ2NiwgNzg1NTUsIDEyNzQ2OCwgCi0gICAgNzM4NjMsIDEyNzQ3MCwgMTI3NDczLCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgMTIwMTEzLCAKLSAgICAxMjc0NjIsIDcwMDUsIDQxNjA5LCA5NTgwLCAwLCA0MDEsIDAsIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDAsIAotICAgIDgxNDMsIDEyNzExNSwgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAKLSAgICAwLCA1MDc2LCAwLCAxOTQ2MDksIDAsIDEyMDA5NywgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMCwgOTI1MjMsIAotICAgIDEyMDEwMiwgNzEzOCwgMTIwNTUyLCAwLCAxOTQ2MTEsIDc4NzUyLCAwLCAxMjUyMCwgODA1OCwgOTczMiwgMCwgNTA4MCwgCi0gICAgNjQ3NzUsIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDAsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCAKKyAgICAxMjg1NTMsIDAsIDQxNjAxLCA4ODc0LCA5ODM3NzQsIDc3NDgsIDAsIDAsIDAsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIAorICAgIDkxODgsIDQxNjAwLCAwLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMCwgMCwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAKKyAgICAzNDA0LCAwLCAwLCAwLCAxNzU5LCAwLCA0MTA3NiwgNjgzODMsIDEyMDU3MiwgMTE5MjA1LCA2NjU3NywgOTQwMTQsIAorICAgIDEyNzc2NCwgNjU4NTksIDAsIDc0MDQsIDAsIDAsIDAsIDAsIDY1OTA4LCA5ODM0LCAzMDU1LCA5ODUyLCA5ODM4NTEsIAorICAgIDY1Mjg4LCAwLCAxMTM5OCwgMCwgOTI0MTcsIDExOTI1NSwgMCwgMCwgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDAsIDkxNzgyNCwgCisgICAgMzM1MCwgMTIwODE3LCA2NDMxOCwgOTE3ODI4LCAxMjcwODksIDMzOTAsIDc0NDgzLCA0MzI2NSwgMTIwNTk5LCA5MTc4MzAsIAorICAgIDc4NTczLCAwLCAxOTE5LCAzNDAwLCAxMjA2NTEsIDEyNzk0NCwgMTE2NDcsIDkxNzU0MCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAKKyAgICAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgOTgzNjc5LCA5ODMxNTIsIDExOTY2LCAKKyAgICA2NDEyOCwgMTI4NTg3LCAwLCAwLCA2NDEzMiwgMTA4NjcsIDY0MTMwLCA2NDEyOSwgOTgzODM1LCA0MzM3NCwgOTc3OSwgCisgICAgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCAwLCA2NjAyMSwgMCwgMCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIDY1MjgyLCAKKyAgICAyODQzLCA1MzU1LCAxMjc5MjgsIDk4Mzk1NiwgMCwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDAsIDk4MzYyMCwgMCwgCisgICAgMCwgMTI3MDI3LCAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgMCwgMTA2MDIsIDgwMCwgNDI0OTksIAorICAgIDY2MTg2LCAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDExODg1OSwgCisgICAgMTk0NjYxLCA2NDQ2OCwgMTA5MDYsIDEzNTMsIDY5NjAsIDAsIDAsIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgCisgICAgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCAwLCA3NDQwMSwgOTE3ODExLCA1ODcsIDAsIDEyODEzMSwgCisgICAgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgOTgzOTQwLCAxMjIxMywgMTk0Njc4LCAKKyAgICAyNzYwLCAwLCAwLCAwLCAxOTQ3OTQsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDAsIDY0MTUxLCA2NDE1MCwgMTI2NzksIAorICAgIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMCwgMCwgNDgzOSwgMCwgMCwgMTg3NCwgMTE5MDE2LCAwLCAKKyAgICA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgCisgICAgOTI1NTAsIDY0MTIyLCA3NDQyMiwgNjY2MDksIDAsIDY0MTE3LCA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCAKKyAgICA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCAxMjczMDYsIAorICAgIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIAorICAgIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg2NzEsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgCisgICAgOTE3OTkwLCA3Mzg0MSwgMCwgMCwgOTA1NiwgNjQzMTMsIDYxODgsIDEyMDAxOSwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCAKKyAgICA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgOTIyMTIsIDAsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzY2LCAKKyAgICAxMjgzNDQsIDAsIDExNzYsIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjg2NjcsIDk4MzgyMiwgMCwgMTIwNTE5LCA2NjM3NiwgCisgICAgNjYyNDIsIDExNDE1LCA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDAsIDAsIDc3MTQsIDY2MjIyLCAKKyAgICA2OTkwMiwgNzc2OCwgMCwgNDE5OSwgNjQ3MDgsIDk4MzQxMywgMCwgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKKyAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgMCwgMTI2NTcwLCAwLCA2NDYxNSwgNDE5MTUsIAorICAgIDAsIDEyMDc1LCA3MDA2MiwgMCwgNTE3NCwgOTgzMjE1LCAwLCAxMjc1NTcsIDMxMjMsIDAsIDEyNjg1LCAxMjc5MDQsIAorICAgIDg0MDgsIDY0NzA0LCAwLCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIDczNzk3LCAwLCAxMTE2LCAxMjgyMDQsIDQzMDQ5LCAKKyAgICA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCAxMTkwNjEsIDkxNzk5OSwgMCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgCisgICAgOTMyMiwgMCwgMTIwNTk1LCA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCAwLCAKKyAgICAwLCAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDE5NDgxNywgCisgICAgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIAorICAgIDAsIDQyNjI3LCAwLCAzMiwgNjE4NywgMTE5MDUyLCAxMTQ5NSwgMTE0NTksIDM2NjUsIDk4MzYwMCwgNDI4NzEsIDAsIAorICAgIDE5OTIzLCA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA5MjQ5NSwgMCwgCisgICAgOTgzNDU4LCA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDAsIDEyMDE5OSwgOTE3ODk3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKKyAgICA2NTAxNCwgMCwgMCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDAsIDAsIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgMTI4ODYyLCAKKyAgICAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgOTgzMTE4LCAxMDIwNywgODc4OSwgCisgICAgOTgzMjIzLCAwLCAwLCA5ODM0NjQsIDkyMzQsIDAsIDYxODIsIDk4MzQ2NiwgNjUwNTgsIDAsIDk4MzQ3MCwgOTgzNDY3LCAwLCAKKyAgICA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgMCwgCisgICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAwLCAwLCA2NTgxLCA1NTc2LCAwLCA2NDQwNSwgNDEzMzcsIDAsIAorICAgIDQxNjMxLCA4OTQ3LCA2ODM5MCwgMTI3ODQ0LCA0MTY5NCwgMCwgMCwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDAsIDY0NjE4LCAKKyAgICAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDEyNzAxMCwgMTIwNTA0LCAxOTQ4MjgsIDAsIDUwNTgsIDQxMDEwLCAKKyAgICA5OTkyLCAxMjgyOTksIDUwNTcsIDAsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIDAsIDE0MzcsIAorICAgIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAwLCAxMjg1MjksIAorICAgIDEyMTEzLCA0MjM2LCA0NzI3LCAwLCAwLCA3NjkzLCAxMDc0OSwgMCwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDAsIAorICAgIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDAsIDY2MjA5LCAwLCAxMjg3MDAsIDk3NDgsIDk4Mzk0NywgMTI3NTI0LCAwLCAwLCAwLCAKKyAgICAwLCAxOTUwODMsIDAsIDk4MzgzNCwgMCwgMCwgMCwgMCwgMCwgOTM0MSwgMTE5NTk2LCAyMzc5LCAxMTMyNSwgMCwgNjQ2NjgsIAorICAgIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIDExOTE3NSwgOTE3OTQwLCAyMzY5LCAwLCA5ODM5NjMsIDk4Mzk2NCwgCisgICAgMTE5MjM1LCA3NDA5MiwgNzM5MzYsIDcwMDgsIDQzNjYwLCAwLCAwLCAwLCAyMzY3LCAxMjc4MjcsIDk4Mzg0OCwgMjY0LCAKKyAgICAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMCwgNjAxOSwgMCwgMCwgNjk2MSwgMCwgMTE4ODM5LCAKKyAgICAwLCA4ODAwLCAwLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIDYxOTIsIDE5NDY3NiwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIAorICAgIDY1MDQyLCAxMTg3OTcsIDEyMDgwMCwgOTgzMDQwLCAxMjg5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjA3MDcsIAorICAgIDk4MzEyOCwgMCwgNTA3NCwgNTA3MywgMTI4NzkwLCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA5ODM1NjEsIDUwNzIsIDkzOTc3LCAKKyAgICA2MTk4LCAxMTYxNCwgMCwgMTk2LCAwLCAwLCAwLCA0OTI5LCAxMjAzNDIsIDAsIDAsIDAsIDAsIDQyODQ3LCAwLCAwLCAwLCAKKyAgICA0OTM0LCAwLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIDEyNzkxNywgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAKKyAgICAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA3NDQxOCwgMTI4MTksIDAsIDUwNzEsIDAsIDM2NDIsIDAsIDUwNzAsIAorICAgIDEwMDQyLCAxMTg4MzUsIDM5ODcsIDUwNjgsIDAsIDg5MDksIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgCisgICAgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIAorICAgIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDAsIAorICAgIDAsIDk1MjYsIDQ5MjAsIDAsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAwLCA5MjE3NSwgMTIwMjc1LCA0OTMzLCAxMjAyMTEsIAorICAgIDAsIDExODk4NSwgNDkyOCwgMCwgMCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAKKyAgICAxMjc0ODUsIDExOTg1NSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgMTI3NDc0LCAxMjc0NzcsIDE2NzIsIDYyMDUsIAorICAgIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgMTI3NDY2LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgMTI2NTc3LCAKKyAgICAxMjY1MDMsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCAxMjAxMTMsIDEyNzQ2MiwgNzAwNSwgNDE2MDksIAorICAgIDk1ODAsIDAsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDAsIDgxNDMsIDEyNzExNSwgCisgICAgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAwLCA1MDc2LCAwLCAKKyAgICAxOTQ2MDksIDAsIDEyMDA5NywgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMCwgOTI1MjMsIDEyMDEwMiwgCisgICAgNzEzOCwgMTIwNTUyLCAwLCAxOTQ2MTEsIDc4NzUyLCAwLCAxMjUyMCwgODA1OCwgOTczMiwgMCwgNTA4MCwgNjQ3NzUsIAorICAgIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDk4MzY0NywgMCwgODA3NCwgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIAogICAgIDQ0MzIsIDEyNzI3MSwgNTAzMywgMTI3MjczLCAxMjcyNzIsIDQ4MzYsIDM4ODgsIDczNzkyLCAxMDcyOSwgNjQ1NDYsIAogICAgIDEyNzI2MiwgNDM3MDQsIDEyNzI2NCwgMTI3MjUxLCA2NzU4OCwgMTE5MDAwLCAxMjcyNTIsIDEyNzI1NSwgODg1OCwgNjQwOSwgCiAgICAgMTI3MjU2LCAxMjAyNTIsIDEyODEwMCwgMCwgMCwgNjYzMjEsIDAsIDEyODE0LCAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCAKLSAgICA2MDk0LCA3NjQxLCA0MjQ0NSwgMCwgOTI0ODcsIDQyNDA2LCAxNjc2LCA3NDMyMCwgMTk0NjA3LCAwLCA1MDMwLCAwLCAwLCAKLSAgICAwLCA3Mzg2OSwgOTYyMiwgMCwgMCwgNjc4NywgMCwgMCwgMCwgMCwgMTA1NDQsIDEyOTE5LCAwLCA5MjIxOCwgMCwgMCwgMCwgCi0gICAgMTIwNzg5LCAwLCA5NDcsIDExOTgzNSwgMTk0NTg2LCAxOTQ1ODUsIDEwOTY5LCAxMTk5MzUsIDc2MTMsIDkyNTYyLCAKLSAgICAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMCwgNDM1NjcsIAotICAgIDc0MDU2LCA5MTc5MTAsIDExODk2MywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCA3MjE4LCA3ODk1LCA0Mzk1LCAKLSAgICA0MzUzOCwgMTE5OTI2LCAxMTk5MjksIDExOTkyOCwgNzIxMywgMTE5OTIyLCA3MjE0LCA3MjE1LCAwLCA3NDE0MSwgODg4MCwgCi0gICAgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDExOTYxOCwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgNzIzNiwgNzkxNSwgCi0gICAgMzYzMCwgMTIwMTc2LCA4MTc5LCA3NDI2NCwgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgODE1MCwgMTM1OSwgCi0gICAgNjc2NTIsIDEyNzMyOSwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAxMjczMjQsIDEyNzMyMSwgCi0gICAgOTIyNzksIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyNzMxOCwgMTI3MzE1LCAxMjI4MywgMTYxNiwgMzc5NSwgMCwgCi0gICAgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMCwgMCwgMzIzOSwgMTI3MzExLCAwLCAwLCA4NDMxLCAKLSAgICAwLCA0MjE2NCwgMCwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgMTE5MDczLCA1MDQwLCAwLCAwLCAwLCA3ODQyMCwgMCwgCi0gICAgNTAzOSwgMCwgNzg0MTgsIDAsIDUwMzgsIDAsIDAsIDEzMTg0LCA3NDI5MywgMCwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCAwLCAKLSAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCAwLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIDQzMDksIAotICAgIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAwLCA3MzgxMywgNzExLCA0Mzg5LCA3MTMzLCAKLSAgICAwLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAxOTQ1NzAsIDQxMzMxLCAxMDA2LCA3NDI0MCwgMCwgMTU1MCwgODIwMSwgCi0gICAgNzM3MzcsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgNjU3ODQsIDc3OTA3LCA2NTI2NywgMzc1OCwgMCwgCi0gICAgNjU3ODEsIDY0NzM0LCAwLCAyNDQwLCA2NTc4MCwgNzc5MTMsIDg0NDksIDAsIDUwMDgsIDAsIDIxMTgsIDAsIDEyMTIxLCAKLSAgICA4MjU1LCA1NTEyLCA3Mzg3NSwgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgMjEzMywgMTExOSwgMTI3MDY4LCAyMTE0LCAKLSAgICAyMTE2LCAyNDU1LCAwLCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAwLCA4NzE0LCAwLCAyMTEzLCAwLCAyMTE1LCAxMjgxNzcsIAotICAgIDEyNzkwNywgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCAKLSAgICA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIAotICAgIDkxMTcsIDAsIDEyMDAzLCA1NTEzLCA2NjY2LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCAKKyAgICA2MDk0LCA3NjQxLCA0MjQ0NSwgMCwgOTI0ODcsIDQyNDA2LCAxNjc2LCA3NDMyMCwgMTk0NjA3LCA5ODMxNzcsIDUwMzAsIDAsIAorICAgIDAsIDAsIDczODY5LCA5NjIyLCAwLCA2OTk0NCwgNjc4NywgMCwgMCwgMCwgOTgzNTgzLCAxMDU0NCwgMTI5MTksIDAsIAorICAgIDkyMjE4LCAwLCAwLCA2OTkwNiwgMTIwNzg5LCAwLCA5NDcsIDExOTgzNSwgMTk0NTg2LCAxOTQ1ODUsIDEwOTY5LCAKKyAgICAxMTk5MzUsIDc2MTMsIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIAorICAgIDEyMDI2OCwgMCwgNDM1NjcsIDc0MDU2LCA5MTc5MTAsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIAorICAgIDcyMTgsIDc4OTUsIDQzOTUsIDQzNTM4LCAxMTk5MjYsIDExOTkyOSwgMTE5OTI4LCA3MjEzLCAxMTk5MjIsIDcyMTQsIAorICAgIDcyMTUsIDk4MzgyNywgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCAxMTk2MTgsIDYyNSwgODE4NywgCisgICAgNDI4NjEsIDExMTMsIDcyMzYsIDc5MTUsIDM2MzAsIDEyMDE3NiwgODE3OSwgNzQyNjQsIDY3ODg2LCA5MzE2LCAxMDk4MCwgCisgICAgMjQ4OSwgNjU2MjQsIDgxNTAsIDEzNTksIDY3NjUyLCAxMjczMjksIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAKKyAgICAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIDkyMjc5LCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjczMTgsIDEyNzMxNSwgCisgICAgMTIyODMsIDE2MTYsIDM3OTUsIDAsIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDAsIDAsIAorICAgIDMyMzksIDEyNzMxMSwgMCwgMCwgODQzMSwgMCwgNDIxNjQsIDAsIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDExOTA3MywgCisgICAgNTA0MCwgMCwgMCwgOTgzNDM1LCA3ODQyMCwgMCwgNTAzOSwgMCwgNzg0MTgsIDAsIDUwMzgsIDAsIDAsIDEzMTg0LCAKKyAgICA3NDI5MywgMCwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCAwLCAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCAwLCAzODYzLCAKKyAgICA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIDQzMDksIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAKKyAgICAwLCA0MjU4OSwgNTY5LCAwLCA3MzgxMywgNzExLCA0Mzg5LCA3MTMzLCAwLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAKKyAgICAxOTQ1NzAsIDQxMzMxLCAxMDA2LCA3NDI0MCwgMCwgMTU1MCwgODIwMSwgNzM3MzcsIDc2MjcsIDU0OTksIDUwMzEsIAorICAgIDc3OTA4LCA0MjczOCwgNjU3ODQsIDc3OTA3LCA2NTI2NywgMzc1OCwgMCwgNjU3ODEsIDY0NzM0LCA3MDA3MywgMjQ0MCwgCisgICAgNjU3ODAsIDc3OTEzLCA4NDQ5LCAwLCA1MDA4LCA5ODM1NzIsIDIxMTgsIDAsIDEyMTIxLCA4MjU1LCA1NTEyLCA3Mzg3NSwgCisgICAgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgMjEzMywgMTExOSwgMTI3MDY4LCAyMTE0LCAyMTE2LCAyNDU1LCAwLCAyMTIyLCAKKyAgICAyMTIzLCAyMTI0LCAyMTI1LCAxMjc0ODYsIDg3MTQsIDk4MzgxMSwgMjExMywgMCwgMjExNSwgMTI4MTc3LCAxMjc5MDcsIAorICAgIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgNDI2NDcsIAorICAgIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCA5MTE3LCAKKyAgICA5ODMxODEsIDEyMDAzLCA1NTEzLCA2NjY2LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCAKICAgICA3ODQzNywgMCwgMTkyNSwgMCwgOTIyMzcsIDc0ODA3LCAwLCA1MDQ4LCA1MDQ3LCAwLCAwLCAwLCA5MjMxMywgMCwgNzQ0OTcsIAotICAgIDkyMzk1LCA4MDg5LCA2OTI5LCA2MzksIDAsIDY4MTc5LCA2NDQ0MiwgMCwgOTIzNDgsIDQ1OTksIDQxNDAyLCA2Njc0LCAKLSAgICA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCA2OTUxLCAwLCAwLCAzNTMwLCAKLSAgICA5NzUwLCAxMjgzMTcsIDAsIDY2NTYsIDkyMzY3LCAwLCA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIAotICAgIDAsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDAsIDc4NTMsIDc0MDY4LCA3NDAwNCwgCi0gICAgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAwLCAxMTkwNzAsIDkxNzYwMCwgNDE3NTAsIDM1ODYsIDY0NTA4LCA0MzE0OCwgCi0gICAgMCwgMCwgMTE5NjA2LCAwLCAxMzI5NiwgNTE3LCAwLCAxMjg1MzQsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDAsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDAsIDE5NDU5MSwgMCwgCi0gICAgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDEyMDQzOSwgNDg5LCAwLCA0MjUwLCAxMjA0NDEsIDEyMDQ1MiwgNDMxNTEsIDAsIAotICAgIDE5NDg1MSwgNjYyMDAsIDAsIDAsIDAsIDc4NDIzLCAwLCAwLCA4NzExLCA2MTgzLCAwLCAwLCAwLCAxMjA0NDgsIDc2MjMsIAotICAgIDExODkyNSwgMTk0ODUzLCA5MjM1LCAxMjc2MCwgNzQxNzYsIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAKLSAgICAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAwLCAwLCAxMjA0MzUsIDAsIDc3MjYsIDAsIDE5OTIyLCAyNjcsIDMzOTMsIAotICAgIDQyMTk4LCAxMzcxLCAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCAKLSAgICA0MTA3NywgMzQwMiwgOTA1MCwgMzM5OCwgMCwgMCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIAotICAgIDAsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgMTI3NTM3LCAxMzAxNCwgMTMwMTMsIDAsIDY2NzMsIDAsIAotICAgIDAsIDAsIDEyNDM4LCAwLCAwLCAwLCAwLCAwLCA5MDUzLCAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDAsIAotICAgIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDkxNzc5MywgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCAwLCAKLSAgICAxMjc5NDAsIDAsIDc0NTQ3LCAwLCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIAotICAgIDc4MDk5LCAxMjcwODUsIDAsIDAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDAsIDc4NDU4LCA2NjcyOCwgMTgxNiwgMCwgCi0gICAgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCAwLCAwLCA0OTAxLCAxODIxLCAwLCA1NzgsIDM2NTMsIDAsIDc5MSwgCi0gICAgOTE2MiwgNjk3NywgMCwgMTE5Mjk4LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIDAsIDc1NTcsIAotICAgIDExOTMzOSwgMTE5MzAxLCA4MjM0LCA3MjQxLCAwLCAxOTQ5OTQsIDExOTE2NywgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIAotICAgIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgMTI4Mjc2LCA3NDU5OSwgNzg0NDksIAotICAgIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIDI0NTIsIDc4MDgzLCAxOTQ4NjQsIAotICAgIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCA5MTc5MTcsIDc4NjkyLCA0NDA4LCA0MTIyLCA2NzcyLCAxMTAzOSwgODcyMywgCi0gICAgMTk0OTkwLCAxMjc4MzMsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDkyMjg2LCAyNDM4LCA2NDg1NSwgMTE5MzAwLCAxMTkyOTksIAotICAgIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAwLCAwLCAwLCA0MTk1MiwgMCwgCi0gICAgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgCi0gICAgMTI5NjMsIDEyNzg2NCwgNjE4OSwgNDEyNSwgMTMxNCwgMTIxMzMsIDAsIDExODg3MywgMTI3MSwgMCwgMCwgNjYwMjQsIAotICAgIDQxNDgyLCAzODY0LCA3NDUzOSwgMCwgMzg3OSwgMCwgMTI5NzgsIDQxNjYsIDQ1NzQsIDAsIDc1NjcsIDc0NTksIDAsIAotICAgIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIDkyNTQ4LCA1NzU5LCAwLCAwLCA0MTM4OCwgOTIzNjIsIDQxMzkyLCA2NDI4OCwgCi0gICAgNDEzODcsIDAsIDg3MDYsIDU1NTIsIDAsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNzgxMTAsIDY2NTk2LCAKLSAgICAwLCAwLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMCwgMCwgNzYxOCwgODUxNywgMTE0NTUsIAotICAgIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIDQyODAzLCA2NTAzMywgOTE0MywgCi0gICAgNjY2OCwgMTk1MDY3LCAxOTUwNjYsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCA2NDYyNCwgMCwgMCwgMCwgCi0gICAgMCwgNDI2OSwgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIDkyMjczLCA2NjU4MCwgMTE4ODk1LCAKLSAgICA2NjY4MywgMTA1NTQsIDkxNzc3OCwgMTE5MTIxLCAwLCA1MDk4LCA5MTc3NzAsIDAsIDExOTA5OSwgNTA5NywgNDkzNSwgCi0gICAgOTg0OCwgMTAzODEsIDAsIDEyODg3MCwgMCwgMzY1MSwgMCwgMTk0NjEwLCAxMjc1NTYsIDUxMDIsIDUxMDEsIDEwMjY5LCAKLSAgICAxMjk4MywgODEzOCwgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgMTIwOTMsIDEyNDcsIDEwMDM0LCAxOTUwNjQsIDUwOTksIAotICAgIDc4MzczLCAxNDQxLCA0MjA4NywgMzA2MywgNjUwLCAwLCA3ODM4LCAwLCAxOTUwNDEsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCAKLSAgICAxMjA3OTAsIDEyODU4MiwgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgMCwgOTE1NCwgOTExOCwgMCwgMCwgMjY3NiwgCi0gICAgNzc1MCwgMCwgNzM4MTIsIDYxOTAsIDg1OTksIDE5NTA1MywgMCwgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgCisgICAgOTIzOTUsIDgwODksIDY5MjksIDYzOSwgOTgzNTYzLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgCisgICAgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgOTQwMTcsIAorICAgIDk4Mzk2NywgMzUzMCwgOTc1MCwgMTI4MzE3LCAwLCA2NjU2LCA0MjYxOCwgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCAKKyAgICA4OTY3LCAwLCA1MDQ1LCA0MjAyNiwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMCwgCisgICAgNzg1MywgNzQwNjgsIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIDAsIDExOTA3MCwgOTE3NjAwLCA0MTc1MCwgCisgICAgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAwLCAwLCAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg1MzQsIDE5NDk0NiwgCisgICAgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDAsIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgCisgICAgMTEyNiwgNzM4OTUsIDAsIDE5NDU5MSwgMCwgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDEyMDQzOSwgNDg5LCAwLCA0MjUwLCAKKyAgICAxMjA0NDEsIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgMTk0ODUxLCA2NjIwMCwgMCwgMCwgMCwgNzg0MjMsIDAsIDAsIDg3MTEsIAorICAgIDYxODMsIDAsIDAsIDAsIDEyMDQ0OCwgNzYyMywgMTE4OTI1LCAxMTg4ODksIDkyMzUsIDEyNzYwLCA3NDE3NiwgNjk2NjIsIAorICAgIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDAsIDEyNjU5NywgMTIwNDM1LCAwLCAKKyAgICA3NzI2LCAwLCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgCisgICAgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDk4MzM0MCwgMCwgMzM5MSwgCisgICAgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIDAsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgCisgICAgMTI3NTM3LCAxMzAxNCwgMTMwMTMsIDAsIDY2NzMsIDAsIDAsIDAsIDEyNDM4LCAwLCA5ODMzMzQsIDAsIDk4Mzg3MSwgCisgICAgMTI2NjM4LCA5MDUzLCAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDk4MzgxOSwgNjY2MCwgNzg3NTgsIAorICAgIDkxNzc2MCwgOTE3NzkzLCA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDAsIDEyNzk0MCwgOTgzMzMzLCAKKyAgICA3NDU0NywgMTI2NTg1LCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIAorICAgIDc4MDk5LCAxMjcwODUsIDAsIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgMCwgNzg0NTgsIDY2NzI4LCAxODE2LCAKKyAgICAwLCA0MjUzMywgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDk4MzE0MSwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAKKyAgICAwLCA3OTEsIDkxNjIsIDY5NzcsIDAsIDc4ODg5LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIAorICAgIDk4MzQ0MSwgNzU1NywgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDEyMDY3MSwgMTE5MTY3LCAxOTQ5OTYsIAorICAgIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIAorICAgIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgCisgICAgNzgwODMsIDEyODgyNCwgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDkxNzkxNywgNzEzMDIsIDQ0MDgsIDQxMjIsIDY3NzIsIAorICAgIDExMDM5LCA4NzIzLCAxOTQ5OTAsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIAorICAgIDExOTMwMCwgMTE5Mjk5LCAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgCisgICAgMCwgMCwgNDE5NTIsIDAsIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgCisgICAgMTk5MTUsIDUyNzcsIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgCisgICAgMTI3MSwgOTgzNjMxLCAwLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDc0NTM5LCAwLCAzODc5LCAwLCAxMjk3OCwgNDE2NiwgCisgICAgNDU3NCwgMCwgNzU2NywgNzQ1OSwgOTgzMTYwLCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgCisgICAgOTgzOTAzLCAwLCA0MTM4OCwgNjQ0NDYsIDQxMzkyLCA2NDI4OCwgNDEzODcsIDAsIDg3MDYsIDU1NTIsIDk4MzE4NywgNzAwLCAKKyAgICAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCAwLCAxMDI2MywgNTU1NCwgMCwgCisgICAgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgOTI2MjYsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIAorICAgIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDE5NTA2NywgCisgICAgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCA2NDYyNCwgMCwgMCwgMCwgOTgzNjQwLCA0MjY5LCAKKyAgICA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMCwgOTIyNzMsIDY2NTgwLCAxMTg4OTUsIDY2NjgzLCAxMDU1NCwgCisgICAgOTE3Nzc4LCAxMTkxMjEsIDAsIDUwOTgsIDkxNzc3MCwgMCwgMTE5MDk5LCA1MDk3LCA0OTM1LCA5ODQ4LCAxMDM4MSwgMCwgCisgICAgMTI4ODcwLCA5ODM2OTIsIDM2NTEsIDAsIDEyMDczMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIAorICAgIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCA3ODM3MywgMTQ0MSwgCisgICAgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgMTIwNzkwLCAKKyAgICAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDEyNjU0MywgMCwgMjY3NiwgMjI3NywgCisgICAgMCwgNzM4MTIsIDYxOTAsIDg1OTksIDE5NTA1MywgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIAogICAgIDkyNjIwLCAxMjEyOSwgMCwgODQ4MSwgMCwgNjIwMiwgMTk1MDM1LCAxMDkyMCwgMTI4MjM3LCA1MjAzLCAxOTUwMzksIAogICAgIDE5NTAzOCwgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCA5NzYyLCAwLCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIAotICAgIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDAsIDUxMDMsIDEyNzg2MSwgCi0gICAgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgMCwgMTAxNTcsIDAsIDQzMDM0LCAxMTQzOCwgMCwgMCwgCi0gICAgOTI2OTQsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgNTEwNSwgMTk1MDMwLCAKLSAgICA2OTcyMCwgNjQ3NiwgNTEwNCwgMCwgMzA0LCAzMTc2LCAwLCAwLCA5MzIsIDEyODY2MywgNjU2NywgMjM4LCA2OTY1NiwgCi0gICAgMTk1MDExLCAxOTQ1OTUsIDE5OTA1LCAxMjA1NzcsIDE5NTAxNSwgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgMTk0OTAyLCAKLSAgICA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCAxOTUwMTksIDg4MDMsIDMwOSwgCi0gICAgNjYyMiwgODE1MSwgMTA4NTgsIDE5NDU5NiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCAKLSAgICA5NzEyLCA2ODY4MCwgNDM5NzAsIDAsIDY1MTY1LCA5MjcyNSwgMCwgNjY0NjYsIDAsIDAsIDAsIDY2NzI1LCA2MTkxLCAKLSAgICAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgMCwgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIAotICAgIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIAotICAgIDAsIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxOTUwMjAsIDAsIDc3ODEsIDQxMzgzLCA2NDU2OCwgMCwgMTIwNzM4LCAxMjA3NywgCi0gICAgMCwgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCAxMjgwMzUsIDI0NzksIDAsIDM2MzIsIDEyMDcyOCwgCi0gICAgMTA2OTgsIDgzNzYsIDM2NDgsIDE5NDk2MCwgNzQ4NDQsIDY3NjM5LCAzNjM2LCA2Nzg5NCwgMzY1MCwgODgzNywgNjUyMjksIAotICAgIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA5MTc2MzAsIDM2NDAsIDEyNzE5MCwgNDIzMjEsIAotICAgIDcyODQsIDE5NDk3NCwgMTk0OTczLCAxOTQ5NTAsIDE5NDk0OSwgMTk0OTUyLCAxOTQ5NTEsIDAsIDE5NDk1MywgNDIwODAsIAotICAgIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCAKLSAgICA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDAsIDY1MjY0LCAwLCAwLCA5MjU0NSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIAotICAgIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyODgyMSwgOTI1LCAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMCwgCi0gICAgNDE5ODQsIDkyMTcsIDAsIDAsIDAsIDkxODYsIDIwNjcsIDQwMTYsIDAsIDAsIDM4MSwgMCwgMCwgNDIwNzcsIDAsIAotICAgIDEyNzQ4MywgNTE4NCwgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAKLSAgICAwLCA4MTIsIDM2MTUsIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCA3NDI4NywgNjc2MjksIDM2MDUsIAotICAgIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDAsIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDc4Nzg5LCAKLSAgICA2NzYzMiwgOTE3OTI0LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCAwLCA3MzkzMywgNjc2MjYsIDQyNDAxLCAwLCAwLCAxMjczNzMsIAotICAgIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCAKLSAgICA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCAKLSAgICA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgMCwgMCwgMCwgNjYzMjUsIDM0NjUsIDI0MDUsIDkyNDAsIAotICAgIDAsIDEyNzU2LCA2NTI1OSwgMCwgMCwgMTI3NTIsIDU4MzMsIDE0MzIsIDAsIDQxODgzLCA3MzkxMiwgOTc5OSwgMCwgCi0gICAgNDE4ODYsIDI0ODAsIDAsIDIwNjIsIDEyNzI5MywgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMCwgMTIxMSwgMCwgCi0gICAgMCwgMCwgMTE4ODMyLCAxMjMxOCwgMCwgMCwgMCwgMTA2MjIsIDAsIDAsIDc4NjU0LCA2NTY2LCA3ODY1OSwgMCwgNzM3ODAsIAotICAgIDAsIDY0ODY0LCAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgCi0gICAgNDI2NSwgNjY0MiwgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIAotICAgIDEyOTI2LCAwLCA3NTI4LCAxMDU1MCwgMCwgOTI3MDYsIDAsIDExNDM5LCAwLCAxMzc0LCA2NDg3OCwgMTE5MDE0LCAwLCAKLSAgICA0MjM4OSwgNDEzNzQsIDAsIDAsIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAwLCA0MDAsIDEyNTk3LCAxMjA1ODYsIDAsIDAsIAotICAgIDY2NjEsIDAsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAwLCA3NDc1NSwgMCwgMzQ3MywgNzcxOCwgMCwgMCwgMCwgNTUyODUsIAotICAgIDAsIDAsIDAsIDExOTY5LCAwLCAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDAsIDgwODAsIDcwMDYsIDAsIDAsIDY3NTcsIAotICAgIDY0MzUxLCAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCAwLCA2MTQ2LCAwLCA3NzEsIDAsIDAsIDEyODEyLCAxMzE2OCwgCi0gICAgNDIyNzIsIDEyMjAwLCA5MTc5MjcsIDc5MDQsIDAsIDk1MywgMTI5MTcsIDExOTU2MCwgMTIzMDAsIDAsIDExNDkxLCA5NzI0LCAKLSAgICAxMDM0MSwgMCwgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIDQ3MSwgNzQ4NCwgNzQ4MiwgCi0gICAgNjc1MywgNzQ4MCwgNzQ3OSwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgCi0gICAgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDc4ODg0LCAzNTQ0LCAwLCA2MDE3LCAKLSAgICA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIDEyMDU0NCwgMCwgMCwgCi0gICAgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIAotICAgIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgMTIwMDAwLCAKLSAgICAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAwLCAwLCAwLCAwLCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCAKLSAgICAxMjgzMDgsIDAsIDAsIDgzMzAsIDAsIDAsIDQyNzk3LCAwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIDE3NzAsIDAsIDEyODg2NiwgCi0gICAgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDExODkyOCwgMTExOCwgOTIyMDksIAotICAgIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCA3MjUyLCAwLCA1OTk2LCAwLCA0OTAzLCAwLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAKLSAgICAxMzMwLCAwLCA3MTM5LCAwLCAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCA2NDc3NywgCi0gICAgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMCwgMCwgMTI3MTUsIDEyODM0OSwgMCwgMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCAKLSAgICA2NjY4NSwgMTE5MTU3LCAwLCA5MjQ2NCwgMCwgMTI2OTg0LCAwLCA5MzM0LCA5MjcwNSwgOTIzMTUsIDAsIDc5NzUsIDAsIAotICAgIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgMCwgMCwgMCwgMCwgMjM0NSwgCi0gICAgNDM2OTcsIDQ2MywgMCwgMCwgMTE5NjA3LCAzMTE3LCA1NDYwLCAwLCAwLCAwLCAwLCA0MjI3OSwgMTk0NTc3LCAwLCAKLSAgICA3ODQxNSwgMCwgMTk1MDA4LCAwLCAxMzI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2MywgMCwgMCwgMCwgMCwgMjQ4MiwgCi0gICAgMTQ3MSwgMCwgMCwgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDAsIDEyMzc0LCAwLCAwLCAwLCAwLCAyNDYwLCAwLCAKLSAgICAxMTk0NCwgMTIzNzYsIDEyNzg2OCwgNjQ2NzksIDAsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIDU4NzAsIDAsIDIwMjQsIAotICAgIDEyNzE4MCwgMCwgMCwgNTM5LCAwLCAxMjc3NjUsIDAsIDM4NTMsIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCAKLSAgICA5MjMyNCwgMCwgODY1OSwgMCwgMTI0NzQsIDkyNTc5LCA5NTAzLCAxOTQ5NjksIDI0NzgsIDAsIDQxNjIsIDAsIDQyNjAsIAotICAgIDEyOTUzLCA2OTYzMywgMTIwMDg5LCAxMjQ3MCwgMCwgNzQxODksIDI3NDIsIDEyNDc2LCAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgCi0gICAgNTAwMCwgMCwgMCwgMCwgNjk2NzIsIDgyMTMsIDc0MDE3LCA3NzcxLCA2MTYxLCAwLCA2NzA5LCAwLCA3ODg4NSwgMCwgCi0gICAgMTI3OTcxLCAxMjA1ODIsIDc4NTQ3LCAwLCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAwLCAwLCA3Mzc5MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCAwLCAwLCAxMjIxMCwgNzIyMSwgCi0gICAgNDIxNDcsIDAsIDc0NTUwLCA3NDQ2NSwgNjQ3NDcsIDExODg0MSwgMCwgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgCi0gICAgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgNDE5NzMsIDM1OTEsIDQxOTY5LCAwLCAyNDUzLCAxMjg1NDksIAotICAgIDkyNjY2LCA2NDcwNSwgMCwgMCwgMTAzNDksIDEwNDEzLCA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAwLCA4MzE2LCAwLCAKLSAgICAwLCAwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAxMTk4MDksIDQ4ODMsIDI4NSwgNDcyMywgNzc5MjcsIAotICAgIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgMCwgNDIzMjMsIDAsIDk3NDMsIAotICAgIDEyMDIzMiwgMTMxMzQsIDAsIDAsIDAsIDAsIDAsIDQyNjM0LCAwLCA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMCwgCi0gICAgMTA0NDUsIDAsIDAsIDY2NzE3LCAyNjE0LCA5MTI1LCAxMTkwMjMsIDE3MjksIDAsIDEyMDIzNiwgNjUyMjEsIDYzODgzLCAKLSAgICA0MzMzNCwgNjQ4NTIsIDAsIDEyMDIzNSwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIAotICAgIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzQxODIsIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgCi0gICAgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIDAsIDAsIDAsIDQ1MzAsIDQyNDA5LCA3MTI2LCAKLSAgICAxOTQ1NzUsIDI3MjEsIDEyMDA3NCwgMTE5MDk2LCAxOTkyOSwgMCwgMTk0NTc0LCAwLCA0MjQyLCA0MjY0LCAxMjAwNzcsIAotICAgIDEyODEzMiwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgMCwgOTc1NCwgMTE5MTAyLCAKLSAgICA0NDM3LCA3Mzk0OCwgMTI4NjkyLCAwLCA1NTI4MCwgNDIxNzQsIDE5NDkyNSwgNDI0MzAsIDAsIDAsIDQyMzU1LCA2NjAyNiwgCi0gICAgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgMCwgNjY2NjcsIDEyNzMwOSwgMCwgMCwgNDIyMDAsIDQyNTY2LCAwLCAwLCAKLSAgICA1MDg4LCA2OTQ4LCAwLCA4NTI0LCAwLCAwLCAxMjM4NSwgMCwgMCwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgCi0gICAgNjUwMzksIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIDAsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgCi0gICAgNzc5OTksIDExNjYzLCAxNjY2LCA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMCwgCi0gICAgNjM4OTYsIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAwLCAwLCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIDEyNDQsIAotICAgIDMzMSwgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDAsIDEyMzc5LCAxOTQ4NzcsIDEyMDgxOCwgCi0gICAgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDAsIDY1ODY2LCA0MzI3LCAwLCA2Mzg0MCwgNzg1NDksIDQxMjIwLCAKLSAgICAxMzAzMiwgMCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCAwLCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDAsIAotICAgIDE5MzAsIDAsIDc4MjI5LCAxMjQyNywgNjY1MTQsIDAsIDEzMDMxLCAwLCA2MzkwMSwgMCwgMzY1NywgMTI4NTcyLCA2NTIwMiwgCisgICAgNjY1NywgMjA3LCAxMjg4MDYsIDQyNzUsIDc0ODE5LCA4NTQsIDY4MTQ3LCA3NDM4MSwgMCwgNzg3ODYsIDUxMDMsIAorICAgIDEyNzg2MSwgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAwLCA0MzAzNCwgCisgICAgMTE0MzgsIDY0Njc0LCAwLCA5MjY5NCwgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIAorICAgIDQxMzY3LCA1MTA1LCAxMjc1MDksIDY5NzIwLCA2NDc2LCA1MTA0LCA5ODM3NDAsIDMwNCwgMzE3NiwgMTE5MDEwLCAwLCAKKyAgICA5MzIsIDEyMDYzMywgNjU2NywgMjM4LCA2OTY1NiwgMTk1MDExLCAxOTQ1OTUsIDE5OTA1LCAxMjA1NzcsIDE5NTAxNSwgCisgICAgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgMTk0OTAyLCA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIAorICAgIDEyNTUyLCAxOTUwMTksIDg4MDMsIDMwOSwgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgMCwgMTI1NjgsIDAsIAorICAgIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgOTgzMTk4LCA2NTE2NSwgOTI3MjUsIDAsIAorICAgIDY2NDY2LCAwLCAwLCAwLCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAwLCA0MTc1NCwgCisgICAgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDk3NSwgNjg0NjIsIDgyMzIsIDExODgxNywgMCwgMzIyMiwgMCwgMCwgMCwgNjY2NjMsIAorICAgIDAsIDAsIDEwODM0LCAwLCAwLCA2NTczMiwgOTQwOTUsIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxOTUwMjAsIDAsIDc3ODEsIAorICAgIDQxMzgzLCA2NDU2OCwgMCwgMTIwNzM4LCAxMjA3NywgMCwgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCAKKyAgICAxMjgwMzUsIDI0NzksIDAsIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDE5NDk2MCwgNzQ4NDQsIDY3NjM5LCAKKyAgICAzNjM2LCA2Nzg5NCwgMzY1MCwgODgzNywgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCAKKyAgICA5MTc2MzAsIDM2NDAsIDEyNzE5MCwgNDIzMjEsIDcyODQsIDE5NDk3NCwgMTk0OTczLCAxOTQ5NTAsIDE5NDk0OSwgCisgICAgMTk0OTUyLCAxOTQ5NTEsIDEyNjY0OSwgMTk0OTUzLCA0MjA4MCwgMjUyOSwgMCwgMCwgMCwgNDIwODMsIDEyMDY3OCwgCisgICAgNjgzOTgsIDE5NDk1NywgNjc2MTksIDY2MzY3LCAxOTQ5NTgsIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgCisgICAgNDI5NSwgNjUyNjQsIDY4MDA2LCAwLCA5MjU0NSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgCisgICAgNjQzODMsIDEyMDI2NSwgOTI1LCAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMCwgNDE5ODQsIDkyMTcsIDAsIDAsIAorICAgIDAsIDkxODYsIDIwNjcsIDQwMTYsIDk4Mzc5NCwgMCwgMzgxLCAxMjkzNiwgMCwgNDIwNzcsIDAsIDY5ODgwLCA1MTg0LCAKKyAgICA0MjA3OCwgMTk0OTQ3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAxOTk0MywgNTg2MCwgNjc2MzMsIDAsIDAsIDgxMiwgMzYxNSwgCisgICAgMCwgNTE3OCwgNDQwMDAsIDEyMDU0OCwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgMTA2OTIsIDExNjYsIAorICAgIDY0NDI5LCA0MjYzOSwgOTI0LCAwLCA2NzYzMSwgNDI2MTYsIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDc4Nzg5LCA2NzYzMiwgCisgICAgOTE3OTI0LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMCwgNjk4NzIsIAorICAgIDEyNzM3MywgNDIyODgsIDEyNzUxLCAwLCA4NTQyLCAxMzE0NSwgMTk0OTYzLCAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIAorICAgIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgMCwgNDExMTcsIDAsIDkyNTgwLCAwLCAwLCA2NzYyNCwgMCwgMTI5MCwgMCwgNjU1ODUsIAorICAgIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCA5MTc4ODMsIDEzMTgsIDY0NzMxLCAxMjY1NzgsIDAsIDAsIDY2MzI1LCAzNDY1LCAKKyAgICAyNDA1LCA5MjQwLCAwLCAxMjc1NiwgNjUyNTksIDAsIDk4Mzc3MiwgMTI3NTIsIDU4MzMsIDE0MzIsIDAsIDQxODgzLCAKKyAgICA3MzkxMiwgOTc5OSwgMCwgNDE4ODYsIDI0ODAsIDAsIDIwNjIsIDEyNzI5MywgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIAorICAgIDE5NDU4NywgMCwgMTIxMSwgMCwgMCwgMCwgMTE4ODMyLCAxMjMxOCwgMCwgMCwgNjgwMDUsIDEwNjIyLCA5ODM3NzAsIDAsIAorICAgIDc4NjU0LCA2NTY2LCA3ODY1OSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAwLCA4Mjg0LCAxMzA4MSwgMCwgCisgICAgMzU4OSwgNDIwNTEsIDQwMzUsIDY0OTIsIDkyMjM2LCA0MjY1LCA2NjQyLCAzOTc3LCA3NDE4NiwgNDE3NzgsIDgzNiwgCisgICAgMTE5MjE2LCAyNDg4LCAwLCA0NTgyLCAwLCAwLCA0MTc3NywgMTI5MjYsIDk4MzM2OSwgNzUyOCwgMTA1NTAsIDAsIDkyNzA2LCAKKyAgICAwLCAxMDk2MSwgMCwgMTM3NCwgNjQ4NzgsIDExOTAxNCwgMCwgNDIzODksIDQxMzc0LCAyMjg2LCAwLCA3ODQ5MiwgNDEzNzcsIAorICAgIDEyNzkwOSwgMCwgNDAwLCAxMjU5NywgMTIwNTg2LCAwLCAwLCA2NjYxLCA5ODMxNDUsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAKKyAgICAwLCA3MTMwMSwgOTgzODUzLCAzNDczLCA3NzE4LCAwLCAwLCAwLCA1NTI4NSwgMCwgMCwgMCwgMTE5NjksIDk4MzM4MiwgCisgICAgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCA5ODMzNjIsIDgwODAsIDcwMDYsIDAsIDk4MzM2MywgNjc1NywgNjQzNTEsIAorICAgIDE1NDQsIDAsIDY3NjYsIDY0Njc3LCAxMjA3MTYsIDk4MzM2NCwgNjE0NiwgMCwgNzcxLCA5ODMzNjUsIDAsIDEyODEyLCAKKyAgICAxMzE2OCwgNDIyNzIsIDEyMjAwLCA5MTc5MjcsIDc5MDQsIDAsIDk1MywgMTI5MTcsIDExOTU2MCwgMTIzMDAsIDAsIAorICAgIDExNDkxLCA5NzI0LCAxMDM0MSwgOTgzNzY0LCA5NTI0LCA3NDkwLCAxMTM4OSwgNzQ4OSwgMzM3OSwgMCwgNzQ4NywgMCwgCisgICAgNDcxLCA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCAKKyAgICA3NDcyLCAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIAorICAgIDM1NDQsIDAsIDYwMTcsIDY1MzExLCAxMjc0ODEsIDEyMDIxNiwgMTMzMDYsIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgMCwgCisgICAgMTIwNTQ0LCAwLCAwLCA5MjY2MCwgMCwgMCwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMCwgMjEzOSwgNDI1NiwgCisgICAgMTIwNzc2LCA3NDM4MCwgMCwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgMCwgMCwgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIAorICAgIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAwLCAwLCAwLCAwLCA3MTg2LCAwLCAxMjA1NTUsIDAsIAorICAgIDQ0NSwgMTIwNTY2LCAxMjgzMDgsIDAsIDAsIDgzMzAsIDAsIDAsIDQyNzk3LCA5ODMxNTAsIDEyMDIxNSwgMCwgMzkwMiwgMCwgCisgICAgMTc3MCwgMCwgMTI4ODY2LCAxNTYwLCAxMjAyMDksIDE5NDk3MiwgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgCisgICAgMTE4OTI4LCAxMTE4LCA3MTMzNCwgMCwgMCwgMTA4MSwgNzQzNiwgNjg0MjAsIDcyNTIsIDAsIDU5OTYsIDY5OTIxLCA0OTAzLCAKKyAgICAwLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAxMzMwLCAwLCA3MTM5LCAwLCAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIAorICAgIDYzMjQsIDQxOTc1LCA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMCwgOTgzNzMyLCAxMjcxNSwgNjgwMDIsIAorICAgIDk4MzQ3MSwgMTI2NjMwLCAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA5MjQ2NCwgMCwgCisgICAgMTI2OTg0LCA2ODAwMSwgOTMzNCwgOTI3MDUsIDkyMzE1LCA3MDEwMSwgNzk3NSwgMCwgNzc5NTcsIDAsIDY2NjIxLCA0ODg0LCAKKyAgICA2NjU5NywgNjk3MzIsIDAsIDAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMCwgCisgICAgMTE5NjA3LCAzMTE3LCA1NDYwLCAwLCAwLCA5ODMzNzksIDAsIDQyMjc5LCAxOTQ1NzcsIDAsIDc4NDE1LCAwLCAxOTUwMDgsIAorICAgIDk4MzM3NiwgMTMyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NjMsIDAsIDAsIDAsIDAsIDI0ODIsIDE0NzEsIDAsIDAsIAorICAgIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCAwLCAxMjM3NCwgMCwgMCwgMCwgOTgzNjg1LCAyNDYwLCAwLCAxMTk0NCwgCisgICAgMTIzNzYsIDEyNzg2OCwgNjQ2NzksIDAsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIDU4NzAsIDAsIDIwMjQsIDEyNzE4MCwgMCwgCisgICAgMCwgNTM5LCAwLCAxMjc3NjUsIDk0MDUyLCAzODUzLCA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgOTIzMjQsIDAsIAorICAgIDg2NTksIDAsIDEyNDc0LCA5MjU3OSwgOTUwMywgMTk0OTY5LCAyNDc4LCAwLCA0MTYyLCAwLCA0MjYwLCAxMjk1MywgCisgICAgNjk2MzMsIDEyMDA4OSwgMTI0NzAsIDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIAorICAgIDAsIDk4MzU3OSwgMCwgNjk2NzIsIDgyMTMsIDc0MDE3LCA3NzcxLCA2MTYxLCA2ODAxOCwgNjcwOSwgMCwgNzg4ODUsIAorICAgIDk4MzY5OSwgMTI3OTcxLCAxMjA1ODIsIDc4NTQ3LCAwLCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAwLCAwLCA3Mzc5MSwgMCwgMCwgCisgICAgMCwgMCwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIDk4MzI1NiwgMCwgCisgICAgMTIyMTAsIDcyMjEsIDQyMTQ3LCAwLCA3NDU1MCwgNzQ0NjUsIDY0NzQ3LCAxMTg4NDEsIDAsIDEyNTE2LCA0NDQ0LCAwLCAKKyAgICA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAzNTkxLCA0MTk2OSwgMCwgCisgICAgMjQ1MywgMTI4NTQ5LCA5MjY2NiwgNjQ3MDUsIDAsIDAsIDEwMzQ5LCAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCAKKyAgICA3NDM1MywgMCwgODMxNiwgMCwgMCwgOTQwNjAsIDY4NywgMCwgMCwgMCwgMTg0MCwgMCwgNjg2NzEsIDExOTgwOSwgNDg4MywgCisgICAgMjg1LCA0NzIzLCA3MDA5OSwgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCAKKyAgICA0MjMyMywgMCwgOTc0MywgMTIwMjMyLCAxMzEzNCwgMTI2NTM1LCAwLCAwLCAwLCAwLCA0MjYzNCwgOTgzMzM1LCA0MzQzNywgCisgICAgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMCwgMTA0NDUsIDAsIDAsIDY2NzE3LCAyNjE0LCA5MTI1LCAxMTkwMjMsIDE3MjksIAorICAgIDAsIDEyMDIzNiwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDAsIDY1MTk0LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIAorICAgIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3NDE4MiwgCisgICAgMTI3OTE1LCA2NDMsIDMwODYsIDAsIDQyNDQ4LCA0MjI5OSwgNTgsIDAsIDkxNzk1MiwgMTIwMDgzLCA2Mzg3MywgODQ5MSwgCisgICAgMCwgMCwgMCwgNDUzMCwgNDI0MDksIDcxMjYsIDE5NDU3NSwgMjcyMSwgMTIwMDc0LCAxMTkwOTYsIDE5OTI5LCAwLCAKKyAgICAxOTQ1NzQsIDAsIDQyNDIsIDQyNjQsIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIAorICAgIDEwNzQwLCAzMDk0LCAwLCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzIzMiwgNTUyODAsIDQyMTc0LCAKKyAgICAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAKKyAgICAxMjczMDksIDAsIDEyNjUyMSwgNDIyMDAsIDQyNTY2LCAwLCAwLCA1MDg4LCA2OTQ4LCAwLCA4NTI0LCAwLCAwLCAxMjM4NSwgCisgICAgMCwgMCwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgNjUwMzksIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIAorICAgIDAsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIDExNjYzLCAxNjY2LCA0MjA5MSwgMTE5NjU3LCAKKyAgICAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMCwgNjM4OTYsIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIAorICAgIDEyMzc3LCA5ODM4MjMsIDk4MzgyNSwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgCisgICAgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAxMjA4MTgsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIAorICAgIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDc4NTQ5LCA0MTIyMCwgMTMwMzIsIDAsIDU4NCwgCisgICAgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCA4Njk4LCAxMjY2NSwgMCwgMTkzMCwgMCwgCisgICAgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCA2MzkwMSwgMCwgMzY1NywgMTI4NTcyLCA2NTIwMiwgCiAgICAgNjAwMCwgMTE5MjA2LCAxMjQyNiwgMTI3MTgxLCAwLCA0MTc0MCwgMTI0MjgsIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAwLCAwLCAKICAgICAxMjQyOSwgNjcyNywgMCwgNzU2MiwgMCwgNTE3MCwgMCwgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCAKICAgICA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIDYxNjIsIDAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAKQEAgLTE2NDIxLDcwNiArMTczMzEsNzMxIEBACiAgICAgMCwgNjM4NjcsIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDAsIDc0NTYwLCA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCAKICAgICA3ODUwNCwgNjcwNCwgNDU5MSwgMTI4MDI5LCAwLCAwLCA5NjgwLCAwLCAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgNzg1MDgsIAogICAgIDQxNTAxLCAwLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIDAsIDQxNDk5LCAwLCAwLCA0MjI0MiwgNDE0OTgsIAotICAgIDkxNzc5NCwgNDIwMjUsIDc4NTY3LCA2NTgwNSwgNDI0NjMsIDAsIDI5MjQsIDAsIDEyMDUxMCwgMCwgMCwgMTE5MjEzLCAKKyAgICA5MTc3OTQsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCAwLCAyOTI0LCAwLCAxMjA1MTAsIDAsIDAsIDExOTIxMywgCiAgICAgNzM5NDEsIDAsIDQyMzMwLCA5MTc3ODQsIDM5NjksIDAsIDAsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCAKLSAgICA0MjA4NiwgOTE3NzkwLCA5MTc3ODksIDAsIDAsIDEyODgwMSwgMCwgMCwgMzI3LCAwLCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgCi0gICAgNjUxNDgsIDEyNDMzLCA5MTc3ODEsIDEyNzI3NiwgOTE3Nzc5LCAxMjQzMSwgODY2OCwgMTI0MzQsIDAsIDkxNzc4MiwgCi0gICAgNTk5OSwgMCwgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDAsIDgyMTIsIDAsIDEyODAxNCwgCi0gICAgNDI0MjMsIDExOTA2NiwgMCwgMTI4MTA4LCA2NjcwOSwgMCwgODgxMSwgOTI3LCAwLCAwLCAxMjQzNiwgMCwgNDIwMjEsIDAsIAotICAgIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIDE5NTAxNiwgMCwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgCi0gICAgMCwgMCwgMTk5MTQsIDEyMTc5LCAwLCA5NjQ4LCAxOTQ5MjMsIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIAotICAgIDI1OTQsIDM0NDQsIDYzODE3LCA2NDY1MSwgMCwgNDE1MDMsIDEyNzQ3OCwgMTEyNjUsIDAsIDEyMDc1NiwgMTk0OTIyLCAwLCAKLSAgICA1NjY0LCAzOTcyLCAwLCAwLCAwLCAxMjg1MDgsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgMTA4MTYsIDkxNzc2OSwgCi0gICAgOTE3NzY4LCAxMjQxOCwgNzQxMTEsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgMTI4NjQ4LCAxMTk4NDcsIDQ1OTYsIAotICAgIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxOTQ3ODIsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgCi0gICAgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgMCwgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDAsIAotICAgIDExNzI0LCAwLCAwLCAxMjcxMDQsIDEyODUyNiwgMCwgMCwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAxMTQwMCwgCi0gICAgNzQxOTcsIDE5NDc5OSwgMCwgMTI4MjM5LCAwLCAxMjg4ODEsIDExOTYwNCwgMTI3NTIzLCAxMjAxOTAsIDE5NDc3MywgCi0gICAgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDAsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIDY4NjUxLCAwLCAwLCAKLSAgICAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIDM4ODksIDg1MjEsIDUwODMsIAotICAgIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCAwLCAzMDE0LCA1MDgxLCA2NTg1MywgMTIwNzE1LCAwLCAxMjAxODMsIAotICAgIDc4MjE5LCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIDY1NTMyLCA3ODQ0NCwgMTIwMTg1LCAxMjM3MSwgMCwgODQwNywgMCwgCi0gICAgMTA4MDUsIDg1MTgsIDEwNzc5LCAxMjAxODgsIDAsIDAsIDEyMzY3LCA0MjE3MCwgMCwgOTI1NTcsIDYyOSwgMTkyNCwgMCwgCi0gICAgMTIwMzcsIDc0MzY2LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAKLSAgICAxMDY0OSwgMCwgNTA3NywgMTI3MTA4LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDkxNzg4MSwgMCwgNjUwNzUsIDAsIDExMDA3LCAKLSAgICAwLCA2NjY1OSwgOTI2MDcsIDAsIDY2Njg0LCAwLCAzNDM0LCA0OTU0LCAxOTA0LCAwLCA1MjY2LCAxMjY5ODAsIDUyNzIsIAotICAgIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxOTQ5MjYsIDQ2MSwgOTgwMywgMCwgCi0gICAgNDUwNCwgMTUwNSwgMCwgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDAsIDY2NDYxLCA1MTc3LCAKLSAgICA0MTMyNCwgMTIwNTUsIDg3MjIsIDAsIDQxMzI3LCAwLCA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCAKLSAgICA0MTMyNSwgMCwgNzIxLCAxMDE4MiwgOTEwOCwgMCwgMCwgMTE5MTg1LCA0MjIyOSwgMTk0OTEyLCAwLCA1OTk4LCAwLCAKLSAgICA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCAwLCA3ODU3MSwgMCwgMCwgMTk0NTYyLCA0MTU3NiwgNDIyMTUsIDc4NTcwLCAKLSAgICAxMTkyMDcsIDAsIDg1NzgsIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIAotICAgIDI2NzAsIDQxNjcsIDAsIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgCi0gICAgMCwgMCwgMCwgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIAotICAgIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIAotICAgIDQyMDAyLCAxMjQwNCwgMCwgMCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAwLCA4NjEsIDAsIDAsIAotICAgIDAsIDAsIDY1NTc3LCA0MzM3MCwgMCwgMCwgMTE5NTYsIDAsIDAsIDAsIDk2MTYsIDY2MzEsIDAsIDEyODE2LCA3NDU4MywgCisgICAgNDIwODYsIDEyNjYxNSwgMjIxOSwgMCwgMCwgMTI4ODAxLCAxOTQ4MzcsIDAsIDMyNywgMCwgOTA0MiwgOTE3Nzc3LCAKKyAgICA5MTc3NzYsIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjcyNzYsIDkxNzc3OSwgMTI0MzEsIDg2NjgsIDEyNDM0LCA5ODM4MjYsIAorICAgIDkxNzc4MiwgNTk5OSwgMCwgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDAsIDgyMTIsIDAsIAorICAgIDEyODAxNCwgNDI0MjMsIDExOTA2NiwgMCwgMTI4MTA4LCA2NjcwOSwgMCwgODgxMSwgOTI3LCAwLCAwLCAxMjQzNiwgCisgICAgOTgzMjM5LCA0MjAyMSwgMCwgMCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAwLCA3ODE5NywgCisgICAgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCA5ODMxODQsIDAsIDE5OTE0LCAxMjE3OSwgOTgzODAzLCAyMjk2LCAxOTQ5MjMsIAorICAgIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIDI1OTQsIDM0NDQsIDYzODE3LCA2NDY1MSwgMCwgNDE1MDMsIAorICAgIDEyNzQ3OCwgMTEyNjUsIDAsIDEyMDc1NiwgMTk0OTIyLCAwLCA1NjY0LCAzOTcyLCAwLCAwLCAwLCAxMjg1MDgsIDEyNDE2LCAKKyAgICA5MTc3NjQsIDExOTYwOCwgMTA4MTYsIDkxNzc2OSwgOTE3NzY4LCAxMjQxOCwgNzQxMTEsIDM4ODIsIDg1MzIsIDkxNzc3MSwgCisgICAgMTU3MywgMTI4NjQ4LCAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCAKKyAgICA4Mjg3LCA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgMCwgCisgICAgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDAsIDExNzI0LCAwLCAwLCAxMjcxMDQsIDEyNjYxOSwgMCwgMCwgODAyNywgMTA5OTcsIAorICAgIDkxNzEsIDEyNzQxLCAxMTQwMCwgNzEzMDUsIDE5NDc5OSwgMCwgMTI4MjM5LCAwLCAxMjg4ODEsIDExOTYwNCwgMTI3NTIzLCAKKyAgICAxMjAxOTAsIDE5NDc3MywgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDAsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIAorICAgIDY4NjUxLCAwLCA5ODM4ODYsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIDMwMTgsIDE5NDgwOSwgCisgICAgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCAxMjAxODQsIDg1MTksIDk4MzIzNSwgMzAxNCwgNTA4MSwgNjU4NTMsIAorICAgIDEyMDcxNSwgMCwgNjgwMTQsIDY5OTUxLCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAKKyAgICAxMjM3MSwgMCwgODQwNywgMCwgMTA4MDUsIDg1MTgsIDEwNzc5LCAxMjAxODgsIDcxMzAzLCA5ODM5MjQsIDEyMzY3LCAKKyAgICA0MjE3MCwgMCwgOTI1NTcsIDYyOSwgMTkyNCwgMCwgMTIwMzcsIDc0MzY2LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgCisgICAgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAxMDY0OSwgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCAKKyAgICA1MDc1LCA5MTc4ODEsIDAsIDY1MDc1LCAwLCAxMTAwNywgOTgzNjk2LCA2NjY1OSwgOTI2MDcsIDAsIDY2Njg0LCAwLCAKKyAgICAzNDM0LCA0OTU0LCAxOTA0LCAwLCA1MjY2LCAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgCisgICAgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxOTQ5MjYsIDQ2MSwgOTgwMywgMCwgNDUwNCwgMTUwNSwgMCwgNjMyNSwgCisgICAgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDAsIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDAsIAorICAgIDQxMzI3LCAwLCA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgMCwgNzIxLCAxMDE4MiwgOTEwOCwgCisgICAgNzEzMTEsIDAsIDExOTE4NSwgNDIyMjksIDE5NDkxMiwgMCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgCisgICAgOTQxMDQsIDc4NTcxLCAwLCA3MTMyOCwgMTk0NTYyLCA0MTU3NiwgNDIyMTUsIDc4NTcwLCAxMTkyMDcsIDAsIDg1NzgsIAorICAgIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgCisgICAgMTE3MjMsIDAsIDc0MTIwLCAwLCA2NTA3NiwgOTM4LCA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCAwLCAwLCAwLCAKKyAgICAxMTc0MiwgMjQxOSwgMCwgMTE0OTMsIDEyMzM0LCAxOTQ5MTMsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgMTI0MDcsIAorICAgIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMCwgNDIwMDIsIAorICAgIDEyNDA0LCA5ODM1NTMsIDAsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCA4NjEsIDAsIAorICAgIDAsIDAsIDAsIDQzNzU3LCA0MzM3MCwgMCwgMCwgMTE5NTYsIDAsIDAsIDAsIDk2MTYsIDY2MzEsIDAsIDEyODE2LCA0Mzc1OSwgCiAgICAgNDIyMTgsIDEyNzEwLCA2ODY3NCwgMTI3MjEsIDQxMDEsIDY2MTg1LCAwLCA1OTkyLCA3NjE2LCAxOTUwNDQsIDAsIDEyNTc3LCAKLSAgICAwLCAwLCA4NTMsIDQyNjkzLCAxOTUwMTQsIDAsIDAsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIDk0OTEsIDkxNzkxMywgCi0gICAgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgMTIwNzk3LCA5OTAwLCAwLCAwLCAxOTQ5MTksIDAsIAotICAgIDEyNzgzMCwgMCwgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgMCwgMCwgMCwgNzc4MjQsIDAsIDQ5MDAsIAotICAgIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCA3NDc2OCwgODk3MSwgNzg1OTMsIDQzMTEzLCA5NzAyLCA3ODU5NCwgCi0gICAgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDAsIAotICAgIDEzMDU0LCAxMjM5NCwgMCwgMCwgMCwgMTMwNTMsIDAsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCA1MDEwLCAxNjgwLCAxMDUwNywgCi0gICAgNzg1OTAsIDc4NTgzLCAwLCAwLCAwLCAxOTQ5MTUsIDcyNjcsIDAsIDc0ODMzLCAxMjgxODEsIDU5OTMsIDI4MTksIDAsIAotICAgIDEyNzA2LCA3Nzg0MCwgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDAsIDYzOTk3LCA2MzkxMCwgCi0gICAgNjM5OTYsIDMwNzcsIDAsIDAsIDE1MTIsIDAsIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAwLCA0MzMzOSwgMCwgOTgzNiwgCi0gICAgMTIwNzI3LCAwLCA0MTQ4MSwgNDMzMzUsIDc4MzIsIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCAKLSAgICAxMjg4NDEsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIDEyNzE0MCwgMTIwMDIwLCA0MjMwNywgMTIzODYsIDQyMzA0LCAKLSAgICA5MTc1NTUsIDAsIDEyMzg5LCAwLCA5MjM2NiwgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNjM5OTIsIAotICAgIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgMCwgNDkzOSwgCi0gICAgMTIzODQsIDAsIDAsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAxOTQ2ODgsIDAsIDAsIDEyNjQ5LCAwLCAwLCA4MjQ3LCA1MDcsIAotICAgIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAKLSAgICAxMTk4MzEsIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgMCwgMTE5NjAwLCAwLCAKLSAgICAwLCA3NzE5LCA2MDI2LCAyNDg2LCAxMjgzMTIsIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIDk2ODcsIDQxNjgxLCAKLSAgICA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxOTQ4ODEsIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIDAsIDc1MzQsIAotICAgIDEyMjE5LCAwLCAxMjc1MjgsIDQyODEwLCAxMDQ5MiwgMCwgMCwgMCwgNDMxMTksIDAsIDEyMDc1MywgMTI0MDMsIDI1MDAsIAotICAgIDE5NTAxMywgMCwgNDg5OSwgMTI3MjksIDAsIDAsIDc0MTEzLCAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAKLSAgICAxMzExMiwgMCwgMTk1MDEyLCAxMjg1OSwgMCwgMTIwMTQ4LCA2NjM2OSwgNTg2MSwgMTI3NzU4LCAxMTk5OSwgMTI0MDAsIDAsIAotICAgIDAsIDEyNjQ1LCA1MTQ2LCAxMTMyMCwgNjg0MTAsIDY3NDgsIDY1MDQwLCAwLCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgCi0gICAgMTIwNjQ1LCA1MTQ3LCAwLCAwLCA3NDUyNCwgMCwgMTkyOCwgMCwgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCA0OTc2LCAKLSAgICA2NDE3NiwgMCwgNjc2MTAsIDgyNDEsIDAsIDc3ODY4LCA0MjA2LCAwLCAwLCAwLCAxMjgyOTgsIDAsIDEwMTM4LCAwLCAwLCAKLSAgICA4ODk3LCAwLCAwLCA4MzU3LCA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgCi0gICAgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIAotICAgIDc5NDUsIDAsIDQ0MDIsIDk5NzAsIDEyNDAyLCAwLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDAsIDQ0MDA3LCAwLCAwLCA0MTQ2NCwgCi0gICAgMTI0MTEsIDEyOTY5LCAxMjA4MjQsIDQxNDY1LCAwLCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgCi0gICAgMTE5MTYzLCAwLCA5MDkzLCAwLCA5MTQ3LCAwLCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDczNzc2LCA2NzUwLCAKLSAgICAxOTUwMTgsIDAsIDk1OTQsIDAsIDAsIDQzNTI3LCAwLCA3MjcsIDE5NDcwMywgMCwgNTgwNSwgMCwgNjcyNiwgMCwgNDIxNzYsIAotICAgIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMTIzNjQsIDAsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgMCwgOTIzNDMsIAotICAgIDAsIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMCwgNjQ0NzgsIDE5NDcwMSwgMTA4MDMsIAotICAgIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCAwLCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgCisgICAgMCwgOTgzODc1LCA4NTMsIDQyNjkzLCAxOTUwMTQsIDAsIDk4MzYzOCwgNTAxNiwgNDM1MzUsIDYzODkzLCA0MjgzNSwgCisgICAgOTQ5MSwgOTE3OTEzLCAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCAxMjA3OTcsIDk5MDAsIAorICAgIDc3NTAsIDAsIDE5NDkxOSwgMCwgMTI3ODMwLCAwLCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAxMjgxNTEsIDEyMTc3LCAwLCAwLCAKKyAgICAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIDc0NzY4LCA4OTcxLCA3ODU5MywgCisgICAgNDMxMTMsIDk3MDIsIDc4NTk0LCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIAorICAgIDEyMzk3LCA3NzgyNywgMCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAwLCAxMzA1MywgMCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIAorICAgIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIDAsIDAsIDAsIDE5NDkxNSwgNzI2NywgMCwgNzQ4MzMsIDEyODE4MSwgCisgICAgNTk5MywgMjgxOSwgMCwgMTI3MDYsIDc3ODQwLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgMCwgCisgICAgNjM5OTcsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAwLCAKKyAgICA0MzMzOSwgMCwgOTgzNiwgMTIwNzI3LCAwLCA0MTQ4MSwgNDMzMzUsIDc4MzIsIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAKKyAgICAxNjY0LCAxODUwLCAxMjg4NDEsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIDEyNzE0MCwgMTIwMDIwLCA0MjMwNywgCisgICAgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDAsIDEyMzg5LCAwLCA5MjM2NiwgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgCisgICAgMTE0NywgNjM5OTIsIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgCisgICAgMCwgNDkzOSwgMTIzODQsIDAsIDAsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAxOTQ2ODgsIDk4MzE5MCwgMCwgMTI2NDksIDAsIAorICAgIDAsIDgyNDcsIDUwNywgOTEsIDIwNDIsIDEyMDc3NSwgNDM2NDMsIDE5NDY4OSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgCisgICAgMTE5ODEzLCA3NzQsIDExOTgyOSwgMCwgMTE5ODE1LCA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCAKKyAgICA5ODMxMDUsIDExOTYwMCwgMCwgMCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIAorICAgIDQxMDczLCA5Njg3LCA0MTY4MSwgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIAorICAgIDQyMzc5LCAwLCA3NTM0LCAxMjIxOSwgMCwgMTI3NTI4LCA0MjgxMCwgMTA0OTIsIDAsIDk4MzY1MiwgMCwgNDMxMTksIDAsIAorICAgIDEyMDc1MywgMTI0MDMsIDI1MDAsIDE5NTAxMywgMCwgNDg5OSwgMTI3MjksIDAsIDAsIDc0MTEzLCAyMzQzLCA0MTAzLCAKKyAgICAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMCwgMTk1MDEyLCAxMjg1OSwgNzAwODcsIDEyMDE0OCwgNjYzNjksIDU4NjEsIAorICAgIDEyNzc1OCwgMTE5OTksIDEyNDAwLCAwLCA5ODM4MzAsIDEyNjQ1LCA1MTQ2LCAxMTMyMCwgNjg0MTAsIDY3NDgsIDY1MDQwLCAKKyAgICAwLCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCA1MTQ3LCAwLCAwLCA3NDUyNCwgMCwgMTkyOCwgMCwgCisgICAgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCA0OTc2LCA2NDE3NiwgMCwgNjc2MTAsIDgyNDEsIDAsIDc3ODY4LCA0MjA2LCAwLCAKKyAgICAwLCAwLCAxMjgyOTgsIDAsIDEwMTM4LCAwLCAwLCA4ODk3LCAxMjAyMzQsIDAsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgCisgICAgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAwLCAxMTIzLCA5NjMsIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgCisgICAgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgMCwgNDQwMiwgOTk3MCwgMTI0MDIsIAorICAgIDk4MzEzNiwgNDIzOTIsIDEzMDUsIDEyNDA4LCAwLCA0NDAwNywgMCwgMCwgNDE0NjQsIDEyNDExLCAxMjk2OSwgMTIwODI0LCAKKyAgICA0MTQ2NSwgOTgzNTY1LCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgMTE5MTYzLCAwLCA5MDkzLCAKKyAgICAwLCA5MTQ3LCAxMjg3ODcsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgNzM3NzYsIDY3NTAsIDE5NTAxOCwgMCwgCisgICAgOTU5NCwgMCwgMCwgNDM1MjcsIDAsIDcyNywgMTk0NzAzLCAxOTUwMjMsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAKKyAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDAsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgMCwgOTIzNDMsIDAsIAorICAgIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMCwgNjQ0NzgsIDE5NDcwMSwgMTA4MDMsIDQxMzIsIAorICAgIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCA5ODMzMDUsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCAKICAgICA2Mzk2NSwgMCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgCiAgICAgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCAwLCA4Nzc0LCAwLCAxMjcwODYsIDk5NDEsIDEyMDE3MiwgMCwgMTkzMywgCiAgICAgNjk2NTUsIDk1NjQsIDAsIDkyNDM1LCA3Mzg2NiwgMCwgMCwgMjQ4NywgNjc2MTQsIDMxMjEsIDE4MDQsIDMzMTEsIDY3NjE1LCAKLSAgICAwLCA3ODMwMiwgMTIyMjAsIDY3NjE2LCAxMjA1OTgsIDEyNzQ3NSwgMCwgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIAotICAgIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCA1MTAsIDY0NjYzLCAwLCAwLCA0NTYxLCAyMTAxLCAKLSAgICAxMzk4LCAwLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAwLCA4NDAsIDAsIDAsIDAsIAotICAgIDY5NjcsIDAsIDAsIDk3OTYsIDAsIDMzMywgMCwgMCwgODE0NCwgMjExNywgMCwgMCwgMTI0MDYsIDAsIDE5OTMxLCAKLSAgICAxMTkwODksIDY2NzgsIDc3NjksIDAsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCA0MzEwMSwgOTk4MSwgMCwgCi0gICAgNDA5ODYsIDQxMjcsIDY2NDg3LCAwLCA0MjIwMiwgMTI3NTQsIDE5NTAyMiwgMCwgMCwgMCwgNjc1OTQsIDIwNDgsIDEyOTQ0LCAKLSAgICA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDEyOTg1LCA0NTMzLCAxOTUwMjEsIDc0MDAzLCA2NDkwLCAwLCAKLSAgICAxMjAzOCwgMCwgMCwgMTIwNzA0LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDAsIDE5NDgsIDExOTAwNywgMCwgOTUyLCAxMjgyMzUsIAotICAgIDAsIDAsIDEyMDgwMiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAwLCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIAotICAgIDY0MTcwLCAwLCAwLCAzNDM2LCAxMTk5NzMsIDAsIDEyODE3LCA2NzU5NywgNjY3NiwgMzkzMCwgNjY3MDgsIDAsIDAsIAotICAgIDY3NTk4LCAwLCAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAwLCAwLCAwLCA4NTAwLCA0MjIyMiwgMTIwMTQyLCAKLSAgICA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAwLCA2NzYwNiwgMTE5MDgzLCAwLCA0MjIxNywgCi0gICAgMTMxMDIsIDAsIDY2MDAzLCA2NjcyLCAwLCAwLCAwLCAwLCA2Mzg0MSwgOTYxMywgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCAKLSAgICA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIDY0OTU3LCAxMTI4MSwgMCwgNjQyMTMsIDE0NjksIAotICAgIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIAotICAgIDg0NTMsIDQxMzQsIDAsIDc0ODQ3LCA2NjU3NiwgMTI3OTE2LCAwLCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAKLSAgICAxMjg0NiwgMTI3MjkxLCAxMjcyOTIsIDExOTE5LCA2NDk2MiwgMTI3Mjg3LCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCAKLSAgICA4MjMsIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCAKLSAgICA0Mjc4MywgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAxMTk1ODUsIDExNjA2LCA2NDc4NCwgMTE3MDIsIAotICAgIDY2NDk4LCA5ODIxLCA2NDMwNCwgMCwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIAotICAgIDEyMDA2MiwgOTI2NjksIDAsIDEyNzA1MiwgNDI1ODcsIDQyMjE0LCA0MTM5NCwgMCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCAKLSAgICA1MjYwLCA0MzE0MywgMCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAwLCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxOTQ5MjQsIAotICAgIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCA0MTM5NiwgMTIwNTI0LCA0MjcyMCwgMTIxNDAsIAotICAgIDk1NzIsIDAsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDAsIDE5NDg4NSwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCAKLSAgICA5OTc3LCAwLCAwLCA2NTc1OSwgMTA3NjUsIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIDk1MjEsIAotICAgIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgMCwgMTA0NjQsIDAsIDAsIDE5NDg2OSwgNjQ1MTQsIDExNTI4LCA2NDAyNCwgCi0gICAgMTI4MDcyLCA2NzksIDY0MDEzLCAwLCA1ODUwLCA3NTgsIDc1MzYsIDAsIDkyMjM0LCA0MTQ0MSwgMTA2OTMsIDY0MDA2LCAwLCAKLSAgICA2NDAwNSwgNDA1OCwgMTE5MDE5LCAwLCA2NDY2MCwgMCwgMTE5MDUwLCAwLCAwLCAxMTM5LCA0MzI5OCwgNjQwMjcsIAotICAgIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAwLCAxMDc3NCwgMTI4MDIwLCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMCwgMTg1MiwgCi0gICAgMzA1NywgMTI4MTEzLCA3Mzc0NCwgNjQwMzQsIDY0MDM5LCAwLCAwLCAwLCAwLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAKLSAgICAzNDk2LCAwLCAwLCAwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgMTMzMDksIAotICAgIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxOTQ5MDksIDE5NDg5NywgMTY4MiwgCi0gICAgMTk0ODk2LCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDAsIDAsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIAotICAgIDE5NDgzMCwgMTE5MDEwLCAxMTg4NjMsIDQzMzExLCA2NDk2NiwgMTE1NzcsIDAsIDQzMDQwLCAxODMzLCAxMTU3NiwgMCwgCi0gICAgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTk0ODQ4LCA3NTM1LCA4MDg1LCA0MjUyNSwgMTIwMzg3LCAKKyAgICA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDAsIAorICAgIDY3NTkyLCAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCA2NDY2MywgMCwgMCwgNDU2MSwgCisgICAgMjEwMSwgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAKKyAgICAxMjY1MTgsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMCwgMzMzLCA2OTg5MSwgMCwgODE0NCwgMjExNywgMCwgCisgICAgOTgzNTk1LCAxMjQwNiwgMCwgMTk5MzEsIDExOTA4OSwgNjY3OCwgNzc2OSwgMCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIAorICAgIDQ3NjQsIDQzMTAxLCA5OTgxLCAwLCA0MDk4NiwgNDEyNywgNjY0ODcsIDAsIDQyMjAyLCAxMjc1NCwgMTk1MDIyLCAwLCAwLCAKKyAgICA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDEyOTg1LCAKKyAgICA0NTMzLCAxOTUwMjEsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgMTIwNzA0LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDAsIAorICAgIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMCwgMCwgMTIwODAyLCA2NDQ5LCA5NDk0LCAxMjAzMTMsIDAsIDQzMDk4LCAKKyAgICA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDAsIDAsIDM0MzYsIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCAKKyAgICA2Njc2LCAzOTMwLCA0MjYxNSwgMCwgMCwgNjc1OTgsIDAsIDAsIDAsIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDAsIDAsIAorICAgIDAsIDg1MDAsIDQyMjIyLCAxMjAxNDIsIDczNzQzLCAxMjA0MDAsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDAsIAorICAgIDY3NjA2LCAxMTkwODMsIDAsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDAsIDk4MzczOCwgNjM4NDEsIAorICAgIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCAKKyAgICA2NDk1NywgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCAKKyAgICA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDAsIDc0ODQ3LCA2NjU3NiwgMTI3OTE2LCAwLCAKKyAgICAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgMTI3MjkxLCAxMjcyOTIsIDExOTE5LCA2NDk2MiwgCisgICAgMTI3Mjg3LCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCA4MjMsIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgCisgICAgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAKKyAgICAxMTk1ODUsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCA5ODIxLCA2NDMwNCwgMCwgNTE1MiwgMTEwNDgsIDc1MzMsIAorICAgIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDEyMDA2MiwgOTI2NjksIDcxMzMyLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgCisgICAgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIDEyMDEzMSwgNjg0MjMsIAorICAgIDAsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIDE5NDkyNCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCAKKyAgICA0NTMsIDQxMzk2LCAxMjA1MjQsIDQyNzIwLCAxMjE0MCwgOTU3MiwgMCwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgCisgICAgMTI2NDkwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCAKKyAgICA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIAorICAgIDEyNjYwNCwgMTA0NjQsIDAsIDAsIDE5NDg2OSwgNjQ1MTQsIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCAwLCAKKyAgICA1ODUwLCA3NTgsIDc1MzYsIDAsIDkyMjM0LCA0MTQ0MSwgMTA2OTMsIDY0MDA2LCA5ODM1NjcsIDY0MDA1LCA0MDU4LCAKKyAgICAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDAsIDExOTA1MCwgMCwgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCAKKyAgICA4OTcwLCAwLCA5OTM0LCA5ODMwOTQsIDEwNzc0LCAxMjgwMjAsIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAwLCAxODUyLCAKKyAgICAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgMTk0ODk5LCA5MjMyMiwgNzY0NSwgMTI4NTQsIAorICAgIDc0MzM4LCAzNDk2LCAwLCAwLCAwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgCisgICAgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxOTQ5MDksIDE5NDg5NywgCisgICAgMTY4MiwgMTk0ODk2LCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDAsIDAsIDczODE0LCAxMTQxMiwgNjc2OCwgCisgICAgMTA3MjgsIDE5NDgzMCwgNzEzMTYsIDExODg2MywgNDMzMTEsIDY0OTY2LCAxMTU3NywgMCwgNDMwNDAsIDE4MzMsIDExNTc2LCAKKyAgICAwLCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxOTQ4NDgsIDc1MzUsIDgwODUsIDQyNTI1LCAxMjAzODcsIAogICAgIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDE5NDcxMSwgNjQ0ODMsIDY1NjkzLCAwLCAwLCAKLSAgICAwLCA2OTY5NSwgNDIyNDAsIDAsIDAsIDQyODY0LCAwLCA2NDY2NywgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIAotICAgIDEyNzUzNSwgNjc4NDAsIDAsIDAsIDEyODc5MywgMCwgMTA5ODYsIDY0NjgzLCAwLCAwLCAxOTQ3MDksIDAsIDAsIDk4NzksIAotICAgIDAsIDAsIDQxNTgsIDEyODA1MCwgNjgxNjYsIDAsIDAsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgMCwgNTE0MiwgMjQwNywgCi0gICAgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDAsIDU1MjE3LCAwLCA2Mzg3MCwgNDMxNjMsIDAsIDAsIDkyMzkwLCAKLSAgICA0Mjg2NywgMTgzNCwgMCwgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDExOTA0MCwgODY2MiwgMCwgMCwgMjY1MiwgCi0gICAgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgOTIyMzMsIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCAKKyAgICAwLCA2OTY5NSwgNDIyNDAsIDAsIDEyNjY1MSwgNDI4NjQsIDEyNjQ5OCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIAorICAgIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NDIsIDAsIDY2MTk3LCAwLCAxMDk4NiwgNjQ2ODMsIDk4Mzc3NiwgMCwgMzQ1NSwgCisgICAgMCwgMCwgOTg3OSwgMCwgMCwgNDE1OCwgMTI4MDUwLCA2ODE2NiwgMCwgMCwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCAwLCAKKyAgICA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDAsIDkyNDA0LCA3NDM3MywgMCwgNTUyMTcsIDAsIDYzODcwLCA0MzE2MywgMCwgCisgICAgMCwgOTIzOTAsIDQyODY3LCAxODM0LCAwLCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgMTE5MDQwLCA4NjYyLCAwLCAwLCAKKyAgICAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA5MjIzMywgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIAogICAgIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIDEyMDMyNywgNzg2MjAsIDg1MzEsIDEyNDk5LCA2MjgwLCAxMjMyNCwgMTE4ODU0LCAKICAgICA2NTIzOCwgNjgzNzQsIDQ4MzIsIDY1NTczLCAwLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIDEyNTAyLCA5MTYxLCAwLCAxNjIwLCAKLSAgICA2NDQzNiwgMzYwMSwgMTk1MDk0LCAxMjgwNzMsIDAsIDYwOSwgMTE1NTUsIDAsIDEyNDk2LCAxMjc4MzksIDc0MTgxLCAKLSAgICA0MzQzLCAxMjUwNSwgMCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAwLCA2MzcsIDAsIDAsIDQyNjcxLCAwLCAwLCAwLCAKLSAgICA0MzU2NSwgMTI3MDgyLCAwLCAxMjY5NiwgMTI4MjU2LCAwLCAxOTQ3OTYsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDAsIAotICAgIDQyODE4LCAxMjg2ODgsIDAsIDEyMDQ5MCwgMCwgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMCwgMCwgMCwgMTI2NTEsIDAsIAotICAgIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAxMTg4NDQsIDAsIAotICAgIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAwLCA2OTc2MCwgCi0gICAgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCA5MDgwLCAxMjcwMDAsIAotICAgIDEyMDM1MiwgMCwgNjgyMDksIDAsIDExMDgyLCAwLCA1Njk5LCAxOTUxMDAsIDY2MDAwLCA5NDg4LCA2NTE2NiwgMTE5MTEyLCAKLSAgICAwLCAwLCAwLCAwLCAxMjgyMDgsIDAsIDUyNjUsIDY5MjM1LCAwLCAxMTQ4NywgNjc4NTgsIDEyNDY0LCAwLCA0MzA0NSwgMCwgCi0gICAgMCwgNDMzNDUsIDAsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgMCwgNzQzNDgsIDAsIDQzMzQ2LCA4MTE2LCAKLSAgICA3OTUsIDAsIDAsIDEyNDYyLCAxMDkzMCwgMTA4MzEsIDAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCAwLCAxMjA4MTEsIDAsIAotICAgIDEyNDY4LCA4NjA3LCAxMDA4LCAwLCAxMDA5MiwgMTk1MDc4LCA5MTc4NDIsIDY3ODU1LCA1NTI1NywgNzM3NzEsIDE3NjYsIAotICAgIDExMjgyLCAxMTk5NiwgMTgyMCwgNDU0NywgMCwgMCwgMCwgMCwgMTMyMjMsIDEyODY2NSwgNjQ1OTUsIDEyNzI5NCwgMCwgCi0gICAgOTIzMTEsIDQzNDUsIDEyNjE2LCAwLCAwLCAwLCA3NDQ2NywgMCwgMCwgMCwgNTM4MiwgMCwgMCwgMCwgMTE5MDYwLCAKLSAgICA2NDk1MywgNTQwNiwgMTk5MjAsIDkyMjE2LCA2NjUxMCwgMzU5MCwgMCwgMTEzMCwgMCwgMCwgNDIwMTYsIDExODIzLCAKLSAgICA0MzAyMywgMCwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgMCwgOTMyNiwgNzM4MjYsIDUzMTAsIDc0ODEyLCA3ODU4NCwgCi0gICAgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgMCwgODU2OCwgMCwgMTIwNDk2LCA3MzgxNiwgMTIwODAzLCAwLCAKLSAgICA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAwLCAxMjA2MzEsIDAsIDQzMDYzLCA3NDUxOSwgMTI3MTgyLCAwLCAwLCAwLCAKLSAgICA2OTc4MywgMTE2ODksIDU0MTAsIDU3ODMsIDEwNDY4LCA4NDAzLCA1NDAwLCAxMTU5NCwgMTI4MjQ3LCAwLCAxMTg5OTAsIAotICAgIDEwNDkxLCAwLCA2NDQxMiwgMCwgMCwgNTU4NywgNDI4NjUsIDY0NDA0LCA4MjY4LCA0OTIzLCA2NTA4NiwgODk4MSwgCi0gICAgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAwLCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCAwLCAKLSAgICA0Mjc2NiwgMCwgNjY1NjYsIDk5ODMsIDAsIDExOTEwNSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIDExODAyLCA4MDQxLCAKLSAgICAxNDYxLCA5MTAsIDExOTEzMywgMCwgNjc0OSwgMzY1OCwgMCwgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAwLCAKLSAgICA2NzY2OCwgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCAwLCA0MTUxNywgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIAotICAgIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIAotICAgIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgMCwgNjU0LCAxMTM0NSwgNjUzLCA2NTIsIAotICAgIDAsIDY0NywgMCwgNjMzLCAxMjA3NDQsIDAsIDAsIDEyNDgwLCA0MzI0MywgMCwgMzksIDEyNDg3LCAwLCAxMjA1MjksIAotICAgIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDAsIDMxOTUsIDU1NTAsIDAsIDc4OTcsIDAsIDEyMDMsIDc0Mzk2LCAxODEzLCAKLSAgICA2NDU0NCwgNDEzMTEsIDEyMDkwLCAwLCAyODc3LCAwLCAwLCAxNjc1LCAwLCAwLCAwLCAwLCAxMDA3MCwgMTA1OTUsIDAsIAotICAgIDExOTA3NywgMCwgMCwgMCwgMCwgMCwgNDMyNDQsIDAsIDAsIDAsIDExOTU2MSwgMCwgMCwgMTk0OTIxLCAxMjgxNjAsIAotICAgIDk5MzksIDAsIDAsIDc3ODYwLCAwLCAwLCAyNzAsIDAsIDEwNzE0LCAwLCAwLCAwLCAwLCAwLCA2NTM3MiwgMCwgNzQwMzgsIAotICAgIDExOTU1OCwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgMTk0OTA4LCAwLCAwLCA3MDcsIDAsIDAsIDkyODIsIDY2NDg5LCAKLSAgICAyMjQsIDAsIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgMCwgNjg2NDQsIDAsIDM4NDEsIDY4NjM0LCAwLCAxMDczMiwgCi0gICAgNjg2NDAsIDg1MCwgNDk3MiwgMCwgNjQ2OTksIDI5MDksIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDAsIDExNTQ0LCAxMDIwMywgCi0gICAgOTYwOCwgMCwgMCwgMTE5NjIsIDE5NDY5NCwgMTI1MDcsIDExOTYsIDEyODY4NywgMTI4MzExLCA3NzcsIDEyMDE4NywgCi0gICAgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAxMjE5OCwgMCwgNjQ4MjQsIDExOTM0MywgMCwgOTQ1NCwgNjM3NzgsIDg2NTgsIAotICAgIDQyNTI4LCA3ODAwMCwgMjcwNSwgOTE3OTc1LCA0MTUyMCwgMCwgMCwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCAwLCAKLSAgICAyNzAxLCAwLCAwLCA1NzY3LCAwLCAwLCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCAwLCA2Mzc0NSwgMTc0OCwgCi0gICAgNjM3NzAsIDAsIDAsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIDAsIDYzNzY0LCA2Mzc4NywgOTA2NywgNjA5NiwgCi0gICAgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAwLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDAsIAotICAgIDYzODYsIDYzNzgzLCAwLCAwLCAxMjcxNzMsIDAsIDAsIDAsIDc0NTc1LCAwLCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgCi0gICAgMCwgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAxMDk5NiwgOTIyNDcsIDE5MjIsIDAsIDEyNDk4LCAxMDk4NywgCi0gICAgMCwgMCwgMzg5NCwgNjU1NDMsIDAsIDE5NDg0MiwgMCwgNDkzLCAwLCA0MzE5NywgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgCi0gICAgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAwLCAxMjcwMzksIDEyNDkzLCAKLSAgICA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDAsIDY0OTExLCA5MjYxNSwgMjA5NiwgNjUxMjAsIDAsIDAsIDAsIDExNjExLCAKLSAgICAxMTYzMiwgMTI3MDQxLCA2NjIxMywgNjM4NjQsIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIAotICAgIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCAwLCA3OTA5LCAKLSAgICA2NjIzNCwgMTE2MDUsIDYzNzU5LCAwLCA2NjIwOCwgNzM5OTksIDYzNzk5LCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIAotICAgIDEyNDk0LCA3Mzc2MSwgMTI0OTIsIDEyNjY5LCAwLCAwLCA3NDE1MywgMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAKLSAgICAwLCA4NjEyLCA0ODg1LCA3NDA1MywgMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIDAsIDYzNzk3LCAKLSAgICA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIDc4MDQwLCA0NzAsIAotICAgIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDAsIDc4MDM0LCA0NTc5LCAxMjgwOTAsIDAsIDEyNTExLCA3NDQ1MywgMTI1MTQsIDAsIAotICAgIDc0NTc5LCA3MjM5LCA3MDAxLCA4NjIzLCAwLCAxMjgwNTIsIDEyODA0OCwgNzM3OCwgMTI1MTIsIDExNjE1LCA2MTA0LCAwLCAKLSAgICAwLCA2NTksIDYwOTgsIDAsIDEyMjM0LCAxMjczMDcsIDEyNzA2NywgODMxMSwgMTI1MTAsIDQxODAzLCAxMzAzOSwgCi0gICAgMTI3MDcyLCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCAwLCAwLCAwLCAyMzIzLCAwLCAyMzE5LCA3NzkxNywgCi0gICAgMTI0NzcsIDc3OTE2LCAyMzExLCAwLCA0NDE1LCAyMzcsIDYyODEsIDEyNzI4MCwgMCwgMCwgMjMwOSwgMTMxMiwgODE3MywgCi0gICAgMTI4ODcxLCAxMjQ2OSwgMCwgNzg1MDUsIDY0MzM1LCAxMDYwOSwgMCwgMTI4MTExLCA5Mzk3LCAxMTUyNCwgOTM5NSwgCi0gICAgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgOTM4NiwgOTM4MywgCi0gICAgOTM4NCwgNjc0MCwgMCwgNjU0NTEsIDgxODUsIDAsIDkxNzgzMiwgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCAKLSAgICA3OTQ4LCA5MjM2LCAwLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCAwLCAwLCAxMTk5OCwgMTIwODIsIAotICAgIDEwOTI0LCAzMTQ3LCAwLCAxMjA2ODQsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCAKLSAgICA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCAwLCA5MzcyLCAxMjQ0NCwgMCwgMCwgMTMwMTYsIAotICAgIDgyMTAsIDAsIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCAwLCA0MTU1LCAwLCAwLCAKLSAgICA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMjc4MDUsIDEyNzI0MCwgMCwgOTkyMiwgNDMzMDksIDAsIAotICAgIDEyNTI1LCAwLCAxMjAxNiwgNjU3NzAsIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMCwgMCwgMTEwMzAsIDAsIAotICAgIDkyNTY3LCA2NTY5MSwgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDE5NDY2OCwgMCwgMTI1MDYsIDAsIAotICAgIDEyMjMxLCAwLCAxMjUwMCwgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCA0MTA0NywgCi0gICAgMTIwMzIxLCA3ODM5NSwgNzgzOTQsIDc0MDY5LCA3Nzk5NSwgNzgzOTEsIDM2MDgsIDgyODEsIDEyMDMyMCwgMTEwNywgMCwgCi0gICAgOTA3NiwgODg2MiwgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCAKLSAgICAxMjg4MTcsIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDAsIDQ5OCwgNjQ0NzEsIDEyMDMyNCwgCisgICAgNjQ0MzYsIDM2MDEsIDE5NTA5NCwgMTI4MDczLCA5ODM1NjIsIDYwOSwgMTE1NTUsIDk4MzA5OSwgMTI0OTYsIDEyNzgzOSwgCisgICAgNzQxODEsIDQzNDMsIDEyNTA1LCAwLCAxMjc4NjMsIDAsIDExMzc3LCAyMzksIDAsIDYzNywgMCwgMCwgNDI2NzEsIDAsIDAsIAorICAgIDAsIDQzNTY1LCA3MTMwNiwgMTI2NDkzLCAxMjY5NiwgMTI4MjU2LCAwLCA5NDA2MiwgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgCisgICAgOTgzMjA0LCA0MjgxOCwgMTI2NjMyLCAwLCAxMjA0OTAsIDAsIDExOTEzNywgMTUwNiwgNDM1NjIsIDAsIDkyNDkxLCAwLCAKKyAgICAxMjY1MSwgMCwgNjQ2MjgsIDc0NTE3LCAxMjA1OCwgNzQwODQsIDkxNzgzOCwgNzQ5NCwgMCwgNDkyNCwgNjU1OTIsIAorICAgIDExODg0NCwgMCwgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAwLCAwLCAxMjAzMywgNDIxNzgsIAorICAgIDAsIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDAsIDAsIDAsIDAsIDAsIDEyNzE3NiwgMzE3OCwgMCwgMCwgOTI3MDQsIDAsIAorICAgIDkwODAsIDEyNzAwMCwgMTIwMzUyLCAwLCA2ODIwOSwgMCwgMTEwODIsIDAsIDU2OTksIDE5NTEwMCwgNjYwMDAsIDk0ODgsIAorICAgIDY1MTY2LCAxMTkxMTIsIDAsIDAsIDAsIDAsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgMCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgCisgICAgMCwgNDMwNDUsIDAsIDAsIDQzMzQ1LCAwLCAxMDc3MCwgMTE4OTk0LCA2ODA3LCA0NjUsIDk4MjksIDAsIDc0MzQ4LCAwLCAKKyAgICA0MzM0NiwgODExNiwgNzk1LCAwLCAwLCAxMjQ2MiwgMTA5MzAsIDEwODMxLCAwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgCisgICAgOTgzNjAyLCAxMjA4MTEsIDAsIDEyNDY4LCA4NjA3LCAxMDA4LCAwLCAxMDA5MiwgMTk1MDc4LCA5MTc4NDIsIDY3ODU1LCAKKyAgICA1NTI1NywgNzM3NzEsIDE3NjYsIDExMjgyLCAxMTk5NiwgMTgyMCwgNDU0NywgMCwgMCwgMCwgMCwgMTMyMjMsIDEyODY2NSwgCisgICAgNjQ1OTUsIDEyNzI5NCwgMCwgOTIzMTEsIDQzNDUsIDEyNjE2LCAwLCAwLCAwLCA3NDQ2NywgMCwgMCwgMCwgNTM4MiwgMCwgCisgICAgMCwgMCwgMTE5MDYwLCA2NDk1MywgNTQwNiwgMTk5MjAsIDY5ODk3LCA2NjUxMCwgMzU5MCwgMTk0ODY0LCAxMTMwLCAwLCAwLCAKKyAgICA0MjAxNiwgMTE4MjMsIDQzMDIzLCAwLCAxMTg4OTYsIDc3NDIsIDAsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIAorICAgIDc0ODEyLCA3ODU4NCwgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgMCwgODU2OCwgMCwgMTIwNDk2LCA3MzgxNiwgCisgICAgMTIwODAzLCA5ODM4MzksIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDAsIDEyMDYzMSwgMCwgNDMwNjMsIDc0NTE5LCAKKyAgICAxMjcxODIsIDAsIDczOTE3LCA3ODQzLCA2OTc4MywgMTE2ODksIDU0MTAsIDU3ODMsIDEwNDY4LCA4NDAzLCA1NDAwLCAKKyAgICAxMTU5NCwgMTI4MjQ3LCAwLCAxMTg5OTAsIDEwNDkxLCA2OTg0MiwgNjQ0MTIsIDAsIDAsIDU1ODcsIDQyODY1LCA2NDQwNCwgCisgICAgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgMCwgNjY2MTAsIAorICAgIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgMCwgNDI3NjYsIDk4Mzg1NywgMjIxMCwgOTk4MywgMCwgOTQwMDksIDAsIDAsIDAsIAorICAgIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgMTQ2MSwgOTEwLCAxMTkxMzMsIDAsIDY3NDksIDM2NTgsIDkzOTY0LCAKKyAgICAxMjA1MjUsIDAsIDc2MTcsIDE5NDg0MSwgMTI4ODgsIDEyNzk4MywgNjc2NjgsIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgCisgICAgNTcwMywgMCwgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgCisgICAgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgCisgICAgNDM0NDksIDAsIDAsIDgyMjUsIDAsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAwLCA2NDcsIDAsIDYzMywgMTIwNzQ0LCAwLCAKKyAgICAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMCwgMzksIDEyNDg3LCAwLCAxMjA1MjksIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDAsIAorICAgIDMxOTUsIDU1NTAsIDk4MzU1NCwgNzg5NywgMCwgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDAsIAorICAgIDI4NzcsIDAsIDAsIDE2NzUsIDY5ODQwLCAwLCAwLCAwLCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgMTk0Nzc3LCAKKyAgICA5ODM2MTEsIDAsIDAsIDAsIDQzMjQ0LCAwLCAwLCA5ODM5MDcsIDExOTU2MSwgOTgzMDc4LCAwLCAxOTQ5MjEsIDEyODE2MCwgCisgICAgOTkzOSwgMCwgOTgzMTUxLCA3Nzg2MCwgMCwgMCwgMjcwLCAwLCAxMDcxNCwgMCwgMCwgMCwgMCwgMCwgNjUzNzIsIDAsIAorICAgIDc0MDM4LCAxMTk1NTgsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDE5NDkwOCwgMCwgMCwgNzA3LCAwLCAwLCA5MjgyLCAKKyAgICA2NjQ4OSwgMjI0LCAwLCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDAsIDY4NjQ0LCAwLCAzODQxLCA2ODYzNCwgMCwgCisgICAgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDAsIDEyODkwLCAyOTA5LCA2ODYxOSwgNDQwMDgsIDY4NjI3LCA5ODM3MDksIAorICAgIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgMCwgMTE5NjIsIDE5NDY5NCwgMTI1MDcsIDExOTYsIDEyODY4NywgMTI4MzExLCAKKyAgICA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAxMjE5OCwgMCwgNjQ4MjQsIDExOTM0MywgOTgzMjMwLCAKKyAgICA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDc4MDAwLCAyNzA1LCA5MTc5NzUsIDQxNTIwLCAwLCAwLCAxMTk4NiwgNzc2NSwgCisgICAgNDI1MDIsIDgyODAsIDc0NTIwLCAyNzAxLCAwLCAxMjcwMDIsIDU3NjcsIDAsIDAsIDk4MDksIDgzNTMsIDYzNzQ3LCAKKyAgICA2NjcwMSwgNjM3NzIsIDk4MzgwNSwgNjM3NDUsIDE3NDgsIDYzNzcwLCAwLCAwLCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAKKyAgICAzMDYxLCAwLCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgCisgICAgMCwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCA2Mzg2LCA2Mzc4MywgMCwgMCwgOTI1MzUsIDAsIDAsIDAsIAorICAgIDc0NTc1LCAwLCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgMCwgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAKKyAgICAxMDk5NiwgOTIyNDcsIDE5MjIsIDAsIDEyNDk4LCAxMDk4NywgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMCwgCisgICAgMTk0ODQyLCA5ODM1ODgsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIAorICAgIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgMCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIAorICAgIDEyNDkxLCAwLCA2NDkxMSwgOTI2MTUsIDIwOTYsIDY1MTIwLCAwLCA3ODIxOSwgOTgzMDgxLCAxMTYxMSwgMTE2MzIsIAorICAgIDEyNzA0MSwgNjYyMTMsIDYzODY0LCA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCA4NTA3LCAKKyAgICA2NjIzNiwgNjYyMTEsIDY2MjE4LCA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgOTgzNTUyLCA3OTA5LCAKKyAgICA2NjIzNCwgMTE2MDUsIDYzNzU5LCA5ODM2NDUsIDY2MjA4LCA3Mzk5OSwgNjM3OTksIDYzODAzLCAyNDQsIDExNTQyLCAKKyAgICAxMjg5OCwgMTI0OTQsIDczNzYxLCAxMjQ5MiwgMTI2NjksIDAsIDAsIDc0MTUzLCAwLCAxMjgyNzgsIDEyMDY4MCwgNDg4MiwgCisgICAgMTMwNDAsIDAsIDg2MTIsIDQ4ODUsIDc0MDUzLCAwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgMCwgCisgICAgNjM3OTcsIDkyMzk0LCA0MjM1OCwgMCwgNzI5MiwgMCwgNjM3NTYsIDQyNzg2LCA2NjY5MywgMCwgMTg3MCwgNzgwNDAsIAorICAgIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgNzAwMjgsIDc4MDM0LCA0NTc5LCAxMjgwOTAsIDAsIDEyNTExLCA3NDQ1MywgCisgICAgMTI1MTQsIDAsIDc0NTc5LCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI4MDUyLCAxMjgwNDgsIDczNzgsIDEyNTEyLCAKKyAgICAxMTYxNSwgNjEwNCwgMCwgMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgMTI3MzA3LCAxMjcwNjcsIDgzMTEsIDEyNTEwLCAKKyAgICA0MTgwMywgMTMwMzksIDEyNzA3MiwgMTI1MTMsIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgOTgzOTExLCAwLCAwLCAyMzIzLCAKKyAgICAwLCAyMzE5LCA3NzkxNywgMTI0NzcsIDc3OTE2LCAyMzExLCAwLCA0NDE1LCAyMzcsIDYyODEsIDEyNzI4MCwgMCwgMCwgCisgICAgMjMwOSwgMTMxMiwgODE3MywgMTI4ODcxLCAxMjQ2OSwgMCwgNzg1MDUsIDY0MzM1LCAxMDYwOSwgMCwgMTI4MTExLCA5Mzk3LCAKKyAgICAxMTUyNCwgOTM5NSwgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgCisgICAgOTM4NiwgOTM4MywgOTM4NCwgNjc0MCwgMCwgNjU0NTEsIDgxODUsIDAsIDkxNzgzMiwgNDMwMjQsIDQzMzM2LCA2NzY1OSwgCisgICAgMjMxMywgMTI4MTY3LCA3OTQ4LCA5MjM2LCA5MjU3MSwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgMCwgMCwgCisgICAgMTE5OTgsIDEyMDgyLCAxMDkyNCwgMzE0NywgMCwgMTIwNjg0LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgCisgICAgOTM4MiwgOTM3OSwgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzY5LCA5MzcyLCAKKyAgICAxMjQ0NCwgMCwgMCwgMTMwMTYsIDgyMTAsIDk4Mzk0OSwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCAKKyAgICA4NzQ0LCA3MjYsIDAsIDk4MzgyOCwgNDE1NSwgMCwgMCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgCisgICAgMTI3ODA1LCAxMjcyNDAsIDAsIDk5MjIsIDQzMzA5LCA5ODM4MzIsIDEyNTI1LCA5ODM0NjMsIDEyMDE2LCA2NTc3MCwgCisgICAgOTU0OCwgNjc2NjUsIDQwMywgNzgyMzAsIDEyNTAzLCAwLCAwLCAxMTAzMCwgMCwgOTI1NjcsIDY1NjkxLCA2Mzk5OCwgCisgICAgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTk0NjY4LCAwLCAxMjUwNiwgMCwgMTIyMzEsIDAsIDEyNTAwLCAKKyAgICA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIDQxMDQ3LCAxMjAzMjEsIDc4Mzk1LCAKKyAgICA3ODM5NCwgNzQwNjksIDc3OTk1LCA3ODM5MSwgMzYwOCwgODI4MSwgMTIwMzIwLCAxMTA3LCAwLCA5MDc2LCA4ODYyLCAKKyAgICA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIDEzMjIyLCA3NDE2NSwgNzQ3ODIsIDEyNjUxNCwgCisgICAgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgOTgzOTM4LCA0OTgsIDY0NDcxLCAxMjAzMjQsIAogICAgIDEyODU2NywgMTI1MjksIDgwNDIsIDAsIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCAwLCA2OTcxOSwgMzIzMSwgMCwgNjQyMiwgCiAgICAgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgCiAgICAgNDE0MzMsIDQ3MTksIDQ2OSwgMCwgNDM2MywgMzMxMywgNDE0MjgsIDc4NDA3LCAyMDIzLCAxNzcyLCA3ODIyNCwgNzgyMjUsIAogICAgIDY1NzA2LCAxMDA1MSwgNjQ4MTIsIDc4MjIwLCAwLCA5OTIwLCAxMjIxNSwgMCwgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgCiAgICAgOTYwNywgMCwgOTY2MywgMCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgMCwgMTQ5MSwgMCwgMCwgMTI3MzA0LCA0MTA2MSwgMCwgCi0gICAgMCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDc4NjAyLCA2NjQ3NiwgNDExMDgsIDk3MzgsIAotICAgIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgNDE5OTIsIDQxNTA2LCAwLCA0MTY4NywgMCwgMTIwNzE3LCAxMjc3NzYsIAotICAgIDk5NDAsIDEyNzI5OSwgNzY5MiwgMCwgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDQxMTMzLCA5ODE2LCAKLSAgICAxMjgwNzQsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDAsIDEyNzI5OCwgNjQxMzksIAorICAgIDE5NDgzOCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDc4NjAyLCA2NjQ3NiwgNDExMDgsIAorICAgIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgNDE5OTIsIDQxNTA2LCAwLCA0MTY4NywgMCwgMTIwNzE3LCAKKyAgICAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODI0LCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNDExMzMsIAorICAgIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgMCwgMTI3Mjk4LCA2NDEzOSwgCiAgICAgNzgyMzEsIDY0MTEsIDEyOTEwLCA3ODU1NCwgNjY2NDQsIDEzMDI4LCA2NzM3LCAxMjUzNywgMCwgMCwgNjQxMzYsIDEyNTM2LCAKLSAgICAyMzUwLCAxMzAyOSwgNzgyMzMsIDAsIDAsIDEzMDMwLCA2NzAyLCA0NTI3LCAwLCAxMjUzOCwgMTI4ODEwLCAwLCA2NTU5OSwgCi0gICAgNjU3MTcsIDk5NjYsIDAsIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjgxNDksIDEyNjIzLCAwLCA2MjA3LCAwLCA2MTE3LCAKLSAgICA2NTkzMCwgODQxMiwgMCwgNzQzOCwgMTI5NiwgMjMyNSwgNDE1MTEsIDAsIDEwMTQ5LCA3NDExOCwgMCwgMTI3Mjg2LCAKLSAgICAxMjQ4MSwgMCwgMTI0ODgsIDAsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCAxMjg1NzEsIDczNzY2LCAwLCAKLSAgICA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCA2NTAzMiwgNDE1MTMsIDAsIDExOTI3LCA2NjU4NCwgNzg1NTksIDc4NTYwLCAKLSAgICA3ODU1NywgNzg1NTgsIDAsIDc4NTU2LCA4NDgsIDk4NjgsIDAsIDY0MjQsIDc4NTY4LCAxMTkzMzgsIDc4NTY1LCA3NDAzMSwgCi0gICAgNzg1NjMsIDc4NTY0LCAyMzUyLCA3ODU3MiwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDAsIDAsIDEzMDI2LCA2NzYyLCAKLSAgICA3ODU3OSwgNzg1ODAsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMCwgMCwgMTM0MywgMCwgMCwgCi0gICAgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDAsIDAsIDAsIDExNzQxLCAwLCAwLCA5MjE2LCA4MjYzLCAxMTI3OSwgMTk0NzUyLCAKLSAgICAwLCAxOTQ3NTQsIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCAKLSAgICA5OTU2LCAwLCAwLCA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCAxOTQ3NjcsIAotICAgIDc0MzQwLCA2OTY4MSwgMCwgNjQ5NDUsIDgwMjksIDAsIDAsIDAsIDMzMzUsIDAsIDAsIDk3NzYsIDEyMDUyNiwgMTk0NzQ4LCAKLSAgICA1MjE1LCA0MjY0NCwgMzMzMywgMTYzMiwgMTk0NzUxLCA2NDg0OSwgMzM0MiwgNzg1ODIsIDUzNjMsIDEyOTU3LCA3ODU4MSwgCi0gICAgNDE1NiwgMCwgMCwgNjQyMSwgNzg1OTEsIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCA3NDU0MiwgMzMzNywgCi0gICAgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAwLCAxMzA0NiwgODgzOCwgCi0gICAgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCAwLCAwLCA2ODE5LCAxMzA0OSwgNjQ5OSwgCi0gICAgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNzM5NDQsIDEzMDUwLCA5OTI0LCAxOTQ3NDUsIDY1MDcsIDEyNzkxOSwgMCwgMTI4MDY5LCAKLSAgICAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgCi0gICAgNzc1MSwgMTk0NzI3LCA4MzcxLCAxOTQ3MjksIDM5OTcsIDEyODA2LCA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIAotICAgIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgMCwgMCwgMCwgMCwgMCwgOTIyMTAsIDkyNDExLCAwLCAKLSAgICA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgMTE5MTEsIDAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDAsIDk2NDYsIDM3NzMsIAotICAgIDQzMTgzLCA2NDAxLCA1ODMxLCAwLCAwLCAxMzA0MywgODA1NiwgOTI0OTQsIDY1NjgxLCAyMDgsIDEyNzM4MiwgNDE1MTQsIAotICAgIDAsIDAsIDAsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgMCwgMTIwNjMwLCAzNjAzLCA0MTEwOSwgMjM5OCwgCi0gICAgMzU0OCwgMCwgMCwgMTE5OTMzLCAwLCAzMTE1LCA5OTE4LCAwLCAxMTMyMSwgNDI5MTIsIDAsIDAsIDE5NDcyNiwgNDg3NiwgCi0gICAgNjU4MDQsIDAsIDAsIDQzNDY4LCAwLCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAKLSAgICAxMzA1MSwgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY2MjU2LCAxMzA1MiwgMTk0NjgwLCAKLSAgICA1NjY1LCAwLCAxMTkwNzEsIDcwMjUsIDYzOTc0LCAwLCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgCi0gICAgNTY2MiwgNDIzODIsIDE5NDY4NiwgNzM5MjQsIDExMjEsIDE5NDY2NSwgNjM5NTksIDAsIDk5NDIsIDEzMjMxLCAwLCAKLSAgICA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgMTE5OTMxLCA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCA2NDc3MiwgCi0gICAgNDIwMjQsIDY0MjAsIDQyMDI4LCAwLCAxMDUwOSwgMjc5NSwgNDkxMCwgMTk0NzI4LCA2OTIzMSwgNjQ3NTMsIDYyNzUsIAotICAgIDkxNzgwOCwgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIDY0MjMsIDQyNzc0LCAwLCAwLCAwLCAxMjgyMywgMjMzMSwgCi0gICAgOTE3ODEwLCA0MjAyNiwgNjEzNywgMCwgNzUyNCwgMCwgOTE3ODA5LCA4MzQ2LCAwLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCAwLCAKLSAgICA4MjIsIDEyNzk4NCwgOTkwMywgNjQ3MjEsIDQyNzIyLCAxOTQ2NTYsIDE5NDY1OSwgNzg2NTUsIDc4NjYxLCAxOTQ2NjAsIAotICAgIDc4NjYyLCA0MTI2NSwgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA3ODA1NSwgMTEyNzgsIDc4NjMyLCAKLSAgICAxOTQ2NDAsIDAsIDEyOTQ2LCAxOTQ2NDEsIDExOTM0MSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxOTQ2NDgsIDE5NDY0NywgCi0gICAgNjUwMTksIDE5NDY0OSwgNzM5OTAsIDAsIDAsIDc0OCwgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDE5NDY1MiwgCi0gICAgMTk0NjI5LCAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCAwLCAwLCAyMzQyLCAwLCAKLSAgICAxOTQ2MzQsIDY1MjA2LCA0ODk0LCAxOTQ2MzUsIDQ4OTAsIDE5NDYzNywgOTE3ODA0LCA1ODEsIDQ4OTMsIDAsIDY1NzEsIAotICAgIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzgwNDksIDc4MDQ2LCA3ODA0NywgMCwgMTAxMTksIDY0MTUsIDQyODkzLCAwLCAKLSAgICA2OTcwMiwgMCwgMCwgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNjQ5MzIsIDQyODgwLCA0MzU4NywgCi0gICAgMCwgMCwgMCwgMCwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCA2NTg1NCwgNDg3NSwgNjU4MTEsIAotICAgIDEyMDM4MSwgMTIwMzg5LCAxMTg4ODgsIDkzNDQsIDg4MjYsIDEyMDM4NiwgMTIwMzk1LCAxMzEwNCwgNzQ3ODEsIDExOTk3LCAKLSAgICAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCAwLCA2NTY5NiwgOTIzMzEsIDAsIDY2MjE3LCAwLCA4MzM0LCAxMTkzNDQsIDAsIAotICAgIDM0NDksIDAsIDAsIDc4NDE0LCA3ODQxMywgMTE4OTUwLCA3NDAxMSwgMCwgMCwgMCwgMCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAKLSAgICAxMDczNCwgMTI3MDE0LCAwLCAxMjc5MTQsIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCAKLSAgICAwLCA3ODA1NCwgNDkxNywgNzQ1MTYsIDc0MjA4LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCAxMTg4OTMsIDIzNjEsIAotICAgIDc5NzEsIDc4MDcyLCA3ODA3MywgNTUyNDMsIDc4MDcxLCAwLCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgCi0gICAgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDAsIDQwOTgwLCAwLCAxMzIwMiwgMCwgMTI1ODIsIDc4MjgyLCAwLCAKLSAgICAwLCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgCi0gICAgNzQwNDUsIDEyMDE2NSwgMCwgMCwgNDkxMywgMCwgMCwgMCwgNDIzMjYsIDEyODE5NCwgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgCi0gICAgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgMCwgMCwgMTI1ODgsIDg4MjEsIDYxNTMsIDI4NjcsIDE5NDcwOCwgCi0gICAgNjYzMTIsIDY5OCwgMTI4MDA3LCAxOTQ2MDYsIDEwMzU2LCA3NDA3NSwgMTk0NzEzLCA2NTEsIDEyNjQxLCAwLCAwLCAwLCAwLCAKLSAgICA0MTU1MiwgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc4NDY0LCAxMjg4NTEsIDc4NDYxLCAxOTQ2OTcsIDc0MzU2LCAKLSAgICA5MjYyNiwgNDcxNiwgNDMyNzcsIDAsIDc4NDc0LCAxMjM0MCwgMTIwNTY4LCAwLCAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgCi0gICAgMTIwNjc2LCA4NzAzLCA1NDYyLCA5MTc2MjksIDAsIDEwMTAxLCAwLCAwLCA4NDc5LCA0MTUxLCA0MTkzMywgMCwgMCwgCi0gICAgNjYyNTQsIDEyMDgyMSwgMCwgMCwgMTI4NjU0LCAwLCAxMTkxOTQsIDc0MDUwLCA5MjcwMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIyNzgsIDAsIDAsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgMCwgMCwgMjY5OSwgMCwgNzM4NDUsIDI5ODUsIAotICAgIDkyNTY4LCAwLCA5MTc4NDUsIDEyMTkyLCAxMTkzMTQsIDAsIDExOTMxMiwgOTgyNywgMTE5MzEwLCAxMTkzMTEsIDExOTMwOCwgCi0gICAgMTE5MzA5LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzg0ODEsIDc4NDgyLCA2NjY5NCwgNjg0NzksIAotICAgIDc4NDc3LCA3ODQ3OCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA3ODQ4MywgCi0gICAgNDI3MiwgMCwgNDA5NjcsIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgCi0gICAgNzkzMCwgMCwgNDMzMDMsIDY4MjE2LCAwLCA5MTc4MjYsIDUyNDQsIDQxODksIDEyNzA5OCwgNjc1OTYsIDEyNzUwNCwgCi0gICAgNDE4OCwgMTg3OSwgMCwgOTY4LCAwLCA0Mzc0MywgMCwgODg3MywgMCwgMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIDAsIAotICAgIDAsIDc0NDkwLCAxMjcwOTksIDQzNjU3LCAwLCAwLCAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCA0MTIyNywgMCwgCi0gICAgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDAsIDAsIDcyNTEsIDAsIDAsIDExODg1MCwgMTE5MTQxLCAxMjg1NDYsIDY2MDE1LCAwLCAKLSAgICA5NTksIDg4ODUsIDEyNTY0LCA2NjQ1NywgNzg4MDgsIDk0NjksIDk2MzIsIDkyMzIzLCA3NDc2MSwgNjQzMjMsIDAsIDAsIDAsIAotICAgIDAsIDMxMCwgMCwgNDEyODEsIDEwOTc2LCAwLCA5MjE5MCwgMCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAwLCA5MDEyLCAKLSAgICAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA3NDA0NCwgMzc0LCA0MzE5NSwgODE2LCAwLCAwLCAKLSAgICAwLCA0MTkzNCwgNzQ2NSwgMCwgMTI4MTY4LCAwLCA0NzE1LCA2MTAxLCAwLCA0MTkzNiwgMCwgNDg3OSwgMCwgNjU0NDYsIDAsIAotICAgIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAwLCAxMjgwNTksIDAsIDAsIDAsIDAsIDAsIDY1NTY3LCAxMjA2MTQsIDE5MjksIAotICAgIDAsIDEyMTQyLCAwLCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgMTk0NjIzLCA1Mzc4LCA3ODc5MSwgCi0gICAgMTI4Njc5LCA0MTQyMSwgMCwgNDQ2MiwgMCwgMCwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIDU4MDAsIDEyMDE1NywgMCwgCi0gICAgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIAotICAgIDEwNjI4LCA3NDgwOCwgMTk0NTcyLCA3OTk5LCA0Mzk3MSwgMCwgMCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCAKLSAgICA2NDM3NCwgNDM4MCwgMTk0NjA4LCAxMTkwNDQsIDk5ODIsIDY0MzI0LCA0MTI0MCwgODYyLCA2NTYyNiwgNzg0NjIsIDE4MTAsIAotICAgIDM2NzMsIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDAsIDc1NjYsIDY0Njg4LCAxOTQ1OTMsIDE5NDU5MiwgCi0gICAgNzgwOTIsIDc0MzU3LCAxOTQ1OTcsIDQ3NDgsIDkyMjI4LCAxOTQ1OTgsIDE5NDYwMSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgCi0gICAgMCwgNzQ1NzYsIDQ0MDE5LCAwLCAxMjgxODksIDM5NjcsIDE5NDYwNCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgCi0gICAgMCwgODQxMCwgNDQ1NCwgNzIzLCAxMjc4ODIsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCAwLCA3ODE5LCAyMzIwLCAKLSAgICAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCAwLCA4MDQ3LCAwLCA3ODgyNywgMTI2MzQsIAotICAgIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAwLCA3NDQ1MiwgMCwgMTU4NCwgNjY2NDUsIDYwNDUsIAotICAgIDY3MjksIDEyMDY0MCwgNjUyMTgsIDc4Nzc3LCAwLCA3ODA2MiwgNzUzNywgMCwgMTEzNzAsIDAsIDEwMzMwLCAwLCAxMDM5NCwgCi0gICAgMCwgNzQxOTQsIDAsIDEyNzkyOSwgOTc4MCwgMCwgMTMwOTIsIDE5NDU3NiwgMTE5NjA1LCAxOTQ1NzgsIDcwNzQsIDkyNjQ4LCAKLSAgICAxOTQ1NzksIDE5NDU4MiwgMTE0MTQsIDEyODg2OCwgMjUzMSwgMTMwMzQsIDAsIDAsIDQyMTEsIDEyNTksIDc1MTcsIDAsIDAsIAotICAgIDE5NDU2MSwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDE5NDU2NywgMTk0NTY2LCAxMTA2NCwgNDExMjksIDAsIAotICAgIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDEyODE1MywgMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAxOTQ1NzMsIAotICAgIDQyNzEsIDc4NDE3LCAxMjgzNTcsIDY3NjksIDQxNDEwLCAwLCA2NDI2MiwgNjc2NywgNDE0MDcsIDAsIDAsIDY3NTUsIAotICAgIDExODg2NCwgOTA0NiwgMTI3OTM0LCAwLCAwLCAwLCAwLCAwLCA2NzY3NSwgMCwgMCwgMCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAKLSAgICAyNDcsIDExODkxNSwgMCwgMTIzMzgsIDQ2NTEsIDAsIDExMjcwLCAwLCAwLCAxMTkzMywgMCwgMCwgNDE5MDMsIDQzNDQ3LCAKLSAgICAxMTAwMSwgMCwgNDIyNTUsIDAsIDkyNjYxLCA2OTgyMSwgNDE5MDUsIDAsIDAsIDEwNzc1LCA5NzkzLCA1MDA5LCAwLCAKLSAgICA0MjI2OSwgNjQ1ODcsIDAsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCA0Mjg1MywgMzg3NywgMTIwNzk1LCA0MjY3NCwgCi0gICAgODE0NywgNDM1NjYsIDExOTAyMSwgMCwgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgMCwgMCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIAotICAgIDQ3NDcsIDEyODA1OCwgMCwgNDMyMDAsIDU4MzIsIDAsIDAsIDUxNDEsIDQyNjAwLCAwLCA0MzIwMywgMCwgMCwgNDMyODYsIAotICAgIDAsIDEyODIxMSwgNDM3NzgsIDAsIDQxMzA1LCA3ODc3NiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMCwgNzAzMSwgODU5LCAwLCAKLSAgICAwLCAwLCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAwLCA4NTM1LCAwLCA2NTE5NiwgMTk0Nzg3LCA2NjAzMiwgMTE0ODgsIDAsIAotICAgIDEyMDc4NiwgNDIyMzMsIDY0MTQwLCA5OTQ2LCA2Mzg4NSwgMCwgMTE4MjIsIDAsIDQzMTg5LCAwLCAwLCAxNzg4LCAxNTc5LCAKLSAgICAxMjA0ODIsIDkxNzgxNywgMCwgMCwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgMCwgMCwgMTI4NSwgNjQ4ODIsIDQxMjQyLCAKLSAgICAwLCAwLCAxMjY0MCwgMCwgNzQwMSwgMCwgMTI2MjUsIDY4MTk4LCAwLCA5MjI1NCwgMzk0MCwgNDE1OTcsIDU1MjYwLCAKLSAgICAzMzk2LCAxMjY0MiwgODY2NSwgMCwgMCwgMTI2MzAsIDE2NTMsIDkxNzgxNSwgMTAxNTMsIDAsIDYxNjYsIDEyMDUxNiwgCi0gICAgMTIwNTIzLCAwLCA4ODE1LCA2NjY3MywgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExOTMxNywgMTE5MzE4LCAyMTQyLCAKLSAgICA2ODQ1NCwgNDI0ODUsIDExODgzNywgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAwLCA5MjY0MywgMCwgMTk0NjczLCAKKyAgICAyMzUwLCAxMzAyOSwgNzgyMzMsIDAsIDk4MzEwMywgMTMwMzAsIDY3MDIsIDQ1MjcsIDAsIDEyNTM4LCAxMjg4MTAsIAorICAgIDk4MzYzNiwgNjU1OTksIDY1NzE3LCA5OTY2LCAwLCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgCisgICAgMCwgNjExNywgNjU5MzAsIDg0MTIsIDAsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAxMjY2MjUsIDEwMTQ5LCA3NDExOCwgCisgICAgMCwgMTI3Mjg2LCAxMjQ4MSwgMCwgMTI0ODgsIDY2NzEzLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIAorICAgIDczNzY2LCAwLCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCA2NTAzMiwgNDE1MTMsIDk4MzE2NiwgMTE5MjcsIDY2NTg0LCAKKyAgICA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3ODU1OCwgMCwgNzg1NTYsIDg0OCwgOTg2OCwgMCwgNjQyNCwgNzg1NjgsIDExOTMzOCwgCisgICAgNjk5MjIsIDc0MDMxLCA3ODU2MywgNzg1NjQsIDIzNTIsIDc4NTcyLCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgNjc5NzMsIAorICAgIDAsIDEzMDI2LCA2NzYyLCA3ODU3OSwgNzg1ODAsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMCwgMCwgCisgICAgMTM0MywgOTgzODE0LCAwLCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgOTgzOTI1LCAwLCAxMTc0MSwgMCwgMCwgCisgICAgOTIxNiwgODI2MywgMTEyNzksIDE5NDc1MiwgOTgzODE2LCAxOTQ3NTQsIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAKKyAgICAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAwLCAwLCA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIAorICAgIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgNzQzNDAsIDY5NjgxLCAwLCA0MzAwMSwgODAyOSwgMCwgMCwgOTgzNzcxLCAKKyAgICAzMzM1LCAwLCAwLCA5Nzc2LCAxMjA1MjYsIDE5NDc0OCwgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIAorICAgIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIDQxNTYsIDAsIDAsIDY0MjEsIDc4NTkxLCAxNjExLCA3ODU4OSwgCisgICAgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIAorICAgIDQyMTQsIDczNzkwLCAxMTk0NSwgMCwgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAKKyAgICAxMzA0NywgMCwgMCwgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDczOTQ0LCAxMzA1MCwgOTkyNCwgCisgICAgMTk0NzQ1LCA2NTA3LCAxMjc5MTksIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIAorICAgIDE5NDcyMSwgMTk0NzI0LCAxMzA0NSwgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDE5NDcyOSwgMzk5NywgCisgICAgMTI4MDYsIDg3NjgsIDEzMDQ0LCAwLCAxMjQyMCwgNDAyNCwgMTk0NzMwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIAorICAgIDQxMDU3LCAwLCAwLCAwLCAwLCA5ODM3ODIsIDkyMjEwLCA5MjQxMSwgMCwgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIDExOTExLCAKKyAgICAwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCA0MzE4MywgNjQwMSwgNTgzMSwgMCwgMCwgCisgICAgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgCisgICAgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDEyNjU5NiwgMCwgMTE5OTMzLCAKKyAgICAwLCAzMTE1LCA5OTE4LCAwLCAxMTMyMSwgNDI5MTIsIDAsIDAsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCAKKyAgICA5ODMyNjYsIDQxNTU4LCA0MTQ3MSwgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCA3ODY4OSwgCisgICAgMzE0MywgMTk0Njc0LCA2NzAxLCA0MTU1OSwgMTg5NiwgNjYyNTYsIDEzMDUyLCAxOTQ2ODAsIDU2NjUsIDAsIDExOTA3MSwgCisgICAgNzAyNSwgNjM5NzQsIDAsIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCA1NjYyLCA0MjM4MiwgCisgICAgMTk0Njg2LCA3MzkyNCwgMTEyMSwgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgMCwgNjQ3NTIsIDQ3MzIsIAorICAgIDE5NDY2NiwgMTE1OTYsIDExOTkzMSwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIDQyMDI0LCA2NDIwLCAKKyAgICA0MjAyOCwgMCwgMTA1MDksIDI3OTUsIDQ5MTAsIDE5NDcyOCwgNjkyMzEsIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCAKKyAgICA2Mzk3OCwgMTEwNDQsIDMyMjksIDY0MjMsIDQyNzc0LCAwLCAwLCAwLCAxMjgyMywgMjMzMSwgOTE3ODEwLCA3MDg1LCAKKyAgICA2MTM3LCAwLCA3NTI0LCAwLCA5MTc4MDksIDgzNDYsIDAsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDAsIDgyMiwgMTI3OTg0LCAKKyAgICA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCAxOTQ2NTksIDc4NjU1LCA3ODY2MSwgMTk0NjYwLCA3ODY2MiwgNDEyNjUsIAorICAgIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNzgwNTUsIDExMjc4LCA3ODYzMiwgMTk0NjQwLCAwLCAxMjk0NiwgCisgICAgMTk0NjQxLCAxMTkzNDEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTk0NjQ4LCAxOTQ2NDcsIDY1MDE5LCAxOTQ2NDksIDczOTkwLCAKKyAgICAwLCA5ODM5NTEsIDc0OCwgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIDEwNTU2LCAKKyAgICAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgNjc4NjMsIDM1OTMsIDAsIDAsIDIzNDIsIDAsIDE5NDYzNCwgNjUyMDYsIDQ4OTQsIAorICAgIDE5NDYzNSwgNDg5MCwgMTk0NjM3LCA5MTc4MDQsIDU4MSwgNDg5MywgOTgzNjE2LCA2NTcxLCA2NTU0NSwgNDg4OCwgNDE1NywgCisgICAgNzgwNDgsIDc4MDQ5LCA3ODA0NiwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgNjk3MDIsIDAsIDAsIDExMzc1LCAKKyAgICA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDY0OTMyLCA0Mjg4MCwgNDM1ODcsIDAsIDAsIDAsIDAsIDY1MTk3LCAKKyAgICA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAxMjAzODEsIDEyMDM4OSwgCisgICAgMTE4ODg4LCA5MzQ0LCA4ODI2LCAxMjAzODYsIDEyMDM5NSwgMTMxMDQsIDc0NzgxLCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgCisgICAgMCwgMzEzNCwgMCwgNjU2OTYsIDkyMzMxLCAwLCA2NjIxNywgMCwgODMzNCwgMTE5MzQ0LCAwLCAzNDQ5LCAwLCAwLCAKKyAgICA3ODQxNCwgNzg0MTMsIDExODk1MCwgNzQwMTEsIDAsIDAsIDAsIDAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIAorICAgIDEyNzAxNCwgMCwgMTI3OTE0LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgMCwgCisgICAgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCA3OTcxLCAKKyAgICA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAKKyAgICAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCA5ODM2MDgsIDQwOTgwLCA5ODM5NTUsIDEzMjAyLCAwLCAxMjU4MiwgNzgyODIsIAorICAgIDk4MzA0OCwgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCAKKyAgICA3Njk4LCA1NjU4LCA3NDA0NSwgNzAwMzksIDAsIDAsIDQ5MTMsIDAsIDk4Mzk1MCwgNzEzMzMsIDQyMzI2LCAxMjgxOTQsIAorICAgIDEyNzI4LCA5MjY4NSwgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDAsIDAsIDEyNTg4LCA4ODIxLCAKKyAgICA2MTUzLCAyODY3LCAxOTQ3MDgsIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzAwMTcsIDE5NDcxMywgCisgICAgNjUxLCAxMjY0MSwgMCwgMCwgMCwgMCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCAKKyAgICA3ODQ2MSwgMTk0Njk3LCA3NDM1NiwgNjQ5NDUsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgCisgICAgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCA5ODM0ODcsIDEwMTAxLCAwLCAKKyAgICA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIDAsIDAsIDY2MjU0LCAxMjA4MjEsIDAsIDAsIDEyODY1NCwgMCwgMTE5MTk0LCAKKyAgICA3NDA1MCwgOTI3MDEsIDAsIDAsIDAsIDAsIDAsIDEyMjc4LCAwLCAwLCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDAsIAorICAgIDAsIDI2OTksIDAsIDczODQ1LCAyOTg1LCA5MjU2OCwgMTI2NDc1LCA5MTc4NDUsIDEyMTkyLCAxMTkzMTQsIDAsIDExOTMxMiwgCisgICAgOTgyNywgMTE5MzEwLCAxMTkzMTEsIDExOTMwOCwgMTE5MzA5LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAwLCAKKyAgICAzNSwgNzg0ODEsIDc4NDgyLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA3ODQ3OCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAKKyAgICAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgMCwgNDA5NjcsIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCAKKyAgICA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgNjgyMTYsIDAsIDkxNzgyNiwgNTI0NCwgCisgICAgNDE4OSwgOTQxMDgsIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIDAsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIAorICAgIDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAwLCAwLCA3NDQ5MCwgMTI3MDk5LCA0MzY1NywgMCwgMCwgMCwgNDI2ODIsIAorICAgIDEyNTc4LCAxMjcyMCwgMCwgNDEyMjcsIDAsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCAwLCAwLCA3MjUxLCAwLCAwLCAKKyAgICAxMTg4NTAsIDExOTE0MSwgMTI4NTQ2LCA2NjAxNSwgMCwgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCAKKyAgICA5NjMyLCA5MjMyMywgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDAsIDAsIDAsIDMxMCwgMCwgNDEyODEsIDEwOTc2LCAwLCAKKyAgICA3MTMyNSwgMCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAwLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgCisgICAgMTI3MzAsIDY1MTYzLCA3NDA0NCwgMzc0LCA0MzE5NSwgODE2LCAxMjAxNjEsIDAsIDAsIDQxOTM0LCA3NDY1LCAwLCAKKyAgICAxMjgxNjgsIDk4MzI2MCwgNDcxNSwgNjEwMSwgOTQxMDYsIDQxOTM2LCAwLCA0ODc5LCAwLCA2NTQ0NiwgMCwgMzA3LCAKKyAgICAxMjcxNDcsIDk1ODUsIDUzNzQsIDk4MzI1OSwgMTI4MDU5LCAwLCAwLCAxMjY2MTgsIDEyMDM5MCwgMCwgNjU1NjcsIAorICAgIDEyMDYxNCwgMTkyOSwgMCwgMTIxNDIsIDAsIDEyMjM2LCA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCAxOTQ2MjMsIAorICAgIDUzNzgsIDc4NzkxLCAxMjg2NzksIDQxNDIxLCAwLCA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAwLCAyNDk4LCAKKyAgICA1ODAwLCAxMjAxNTcsIDk4MzExNSwgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAKKyAgICAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgMTk0NTcyLCA3OTk5LCA0Mzk3MSwgMCwgMCwgMTA2MzQsIAorICAgIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgNDM4MCwgMTk0NjA4LCAxMTkwNDQsIDk5ODIsIDY0MzI0LCA0MTI0MCwgCisgICAgODYyLCA2NTYyNiwgNzg0NjIsIDE4MTAsIDM2NzMsIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDAsIDc1NjYsIAorICAgIDY0Njg4LCAxOTQ1OTMsIDE5NDU5MiwgNzgwOTIsIDc0MzU3LCAxOTQ1OTcsIDQ3NDgsIDkyMjI4LCAxOTQ1OTgsIDE5NDYwMSwgCisgICAgNDIyNjAsIDU4NzEsIDExOTA3NSwgMCwgNzQ1NzYsIDQ0MDE5LCAwLCAxMjgxODksIDM5NjcsIDE5NDYwNCwgMTMxMzcsIAorICAgIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgMCwgODQxMCwgNDQ1NCwgNzIzLCAxMjc4ODIsIDk2NiwgNDQ0OSwgOTIzMzAsIAorICAgIDkyMjM4LCAwLCA3ODE5LCAyMzIwLCAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCAwLCAKKyAgICA4MDQ3LCAwLCA3ODgyNywgMTI2MzQsIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAwLCA3NDQ1MiwgCisgICAgOTgzNzU0LCAxNTg0LCA2NjY0NSwgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDAsIDc4MDYyLCA3NTM3LCAwLCAKKyAgICAxMTM3MCwgMCwgMTAzMzAsIDAsIDEwMzk0LCAwLCA3NDE5NCwgMCwgMTI3OTI5LCA5NzgwLCAwLCAxMzA5MiwgMTk0NTc2LCAKKyAgICA3Nzk1MCwgMTk0NTc4LCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIDExNDE0LCAxMjg4NjgsIDI1MzEsIDEzMDM0LCAKKyAgICAwLCAwLCA0MjExLCAxMjU5LCA3NTE3LCAwLCAwLCAxOTQ1NjEsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCAKKyAgICA5NDAzNCwgMTk0NTY2LCAxMTA2NCwgNDExMjksIDAsIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDEyODE1MywgCisgICAgMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAxOTQ1NzMsIDQyNzEsIDc4NDE3LCAxMjgzNTcsIDY3NjksIDQxNDEwLCA5ODM0NDQsIAorICAgIDY0MjYyLCA2NzY3LCA0MTQwNywgMCwgMCwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjc5MzQsIDEyNjYwOCwgMCwgMCwgMCwgMCwgCisgICAgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCA2OTg5NSwgCisgICAgMTEyNzAsIDAsIDAsIDExOTMzLCAwLCAwLCA0MTkwMywgNDM0NDcsIDExMDAxLCAwLCA0MjI1NSwgMCwgOTI2NjEsIDY5ODIxLCAKKyAgICA0MTkwNSwgMCwgMCwgMTA3NzUsIDk3OTMsIDUwMDksIDAsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIAorICAgIDY0NTI5LCA0MTQwOCwgNDI4NTMsIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDk4Mzc2NywgCisgICAgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgMCwgMCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDEyODA1OCwgNjk4NDQsIAorICAgIDQzMjAwLCA1ODMyLCAwLCAwLCA1MTQxLCA0MjYwMCwgMCwgNDMyMDMsIDAsIDk4Mzc5MCwgNDMyODYsIDAsIDEyODIxMSwgCisgICAgNDM3NzgsIDAsIDQxMzA1LCA3ODc3NiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMCwgNzAzMSwgODU5LCAwLCAwLCAwLCA2MDU5LCAKKyAgICAxMjY5ODUsIDU1MjM1LCAwLCA4NTM1LCAwLCA2NTE5NiwgMTk0Nzg3LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCAKKyAgICA0MjIzMywgNjQxNDAsIDk5NDYsIDYzODg1LCAxOTQ3OTIsIDExODIyLCAwLCA0MzE4OSwgOTgzODg5LCAwLCAxNzg4LCAKKyAgICAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAwLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA5NDA1NSwgMCwgMTI4NSwgNjQ4ODIsIAorICAgIDQxMjQyLCA3MDA4NiwgMCwgMTI2NDAsIDAsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCAKKyAgICA0Mzc1NCwgMzM5NiwgMTI2NDIsIDg2NjUsIDAsIDAsIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAKKyAgICAxMjA1MTYsIDExODk4OSwgMCwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTkzMTcsIDExOTMxOCwgCisgICAgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAwLCA5MjY0MywgMCwgMTk0NjczLCAKICAgICAxMjAzMiwgMCwgOTcyNSwgMCwgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIAotICAgIDQyNzc3LCAxMDEzOSwgOTgwLCA0MzY5OCwgNjUzODYsIDAsIDAsIDQzNzAxLCA0MzE5OCwgNzE4NCwgMTIwNjczLCAKKyAgICA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAyMjA4LCAwLCA0MzcwMSwgNDMxOTgsIDcxODQsIDEyMDY3MywgCiAgICAgMTk0Nzk3LCA5MTc4MTksIDEwMDg1LCAxMTk5OTIsIDAsIDExOTk5MywgNjYzNCwgOTIzNzMsIDAsIDExOTMyMywgODA3MiwgCiAgICAgMTE5MzIxLCA0MzcwMCwgMCwgODg3MiwgNzc4MywgOTE3OTkyLCAxMjM5OCwgODIzNywgMCwgMCwgMTIzOTUsIDAsIAotICAgIDEyNjk3NywgMTIwNTY1LCA5OTE0LCAxMjcwMTEsIDkxNzg1NCwgNzM5NzUsIDYzNjcsIDYzNTEsIDY2Njg4LCAwLCA3ODEwNywgCisgICAgMTI2OTc3LCAxMjA1NjUsIDk5MTQsIDIyMTcsIDkxNzg1NCwgNzM5NzUsIDYzNjcsIDYzNTEsIDY2Njg4LCAwLCA3ODEwNywgCiAgICAgMCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMCwgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAKICAgICAxMjA0MjIsIDAsIDE3MTAsIDAsIDAsIDY1NjA3LCAwLCA0OSwgNjYyNywgMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCAKICAgICA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCA2NDQxOCwgMTY0MywgNjUyMTMsIDg0MDUsIDM0NzAsIDEyODIyNSwgMTMyMTMsIAotICAgIDQyNDUyLCA3ODMzMSwgMCwgNzg0NDUsIDAsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgCi0gICAgNjU2NzUsIDEwODAsIDEyMDAwMiwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDAsIDEyNjMyLCAKLSAgICAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIAotICAgIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDAsIDAsIDE0OTQsIDAsIDAsIDAsIDExNjkzLCAwLCAxMDQ5NCwgCi0gICAgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDAsIDAsIDAsIDAsIDY0NTgyLCAwLCA3Mzc5NCwgMCwgODAyMiwgMCwgCi0gICAgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDE5NDgyOSwgOTE3OTk0LCAwLCA5MTc5OTUsIDU1NzAsIDE4ODEsIDcyMTAsIDAsIAotICAgIDEwMTIsIDY2NjMwLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCA1NTY5LCAwLCA0MjMzOSwgMCwgNjA2MywgMCwgMCwgCi0gICAgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgOTIyMDEsIDY0NzI3LCA5MTYwLCAxOTQ4MjcsIDAsIDAsIDkyMTgwLCAxMDUwMywgCi0gICAgMTE4ODEwLCA2MDU1LCAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCAKLSAgICA5MjIwNCwgMCwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgMTIwMTAwLCA2NTA4NywgNTU3MSwgCi0gICAgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgMTIwMTA3LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAKLSAgICAxMjAxMDEsIDU4OSwgNzA1MCwgMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMCwgNzQwOTksIAotICAgIDQyNjQ1LCAwLCAxOTQ4MTUsIDg1ODMsIDAsIDU4NDcsIDY5MjgsIDAsIDAsIDAsIDAsIDAsIDY2NTkyLCAxMjIwNCwgCi0gICAgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDAsIDAsIDgxMjAsIDEyMDcwMSwgMCwgMCwgMTI4MDEyLCAKLSAgICA0MTA2MywgMCwgMTA2NjQsIDAsIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgMCwgMCwgOTY3MywgNjYzMzQsIAotICAgIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgMCwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCAKLSAgICAxOTUwMjUsIDc0MDk0LCAwLCAwLCA3Nzk3MCwgMCwgMCwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIAotICAgIDY3ODkzLCA1NDkyLCA2OTIzLCAxMjgwOTksIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCAKLSAgICA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDkxNzk1OSwgNTg1MywgMTMwNjMsIAotICAgIDEwMzYzLCAwLCAxMjk1NiwgMTI4MTY5LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIDEyMDYwLCAwLCA3ODM5MiwgMTI4MjYsIAotICAgIDYzMjksIDAsIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCAKLSAgICA0MzQyMCwgNzgzOTYsIDEyNzA1NywgMjY5NSwgNDIxNzEsIDAsIDAsIDAsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIAotICAgIDEyMTI1LCAxMjc2NiwgMCwgMTE2NCwgMCwgMCwgNDE5MTgsIDAsIDEyNzU0MiwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCAKLSAgICAxMjgwMDEsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCAxMjA1MzgsIDY0MjcsIDQyODg0LCA0MTEyMywgMCwgMCwgNDI4NzMsIAotICAgIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgMCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCAKLSAgICA0Mjg0MywgNjU5MSwgOTM0MCwgMCwgMTU4OSwgMCwgMjk2LCA3NDQzOCwgNzg4NTIsIDAsIDY3ODQxLCA3NDM3MCwgMCwgCi0gICAgODkyMiwgMTI4MDY4LCA3NDYwMCwgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIAotICAgIDEzMjYyLCA2NTU5MCwgNTI5OSwgMCwgMTE0NzMsIDU0NDksIDEyNTIsIDAsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCAKLSAgICA1Mjk1LCA5MTc1NjksIDc0MTE0LCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgCi0gICAgNDE0MTMsIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDEyNzAyOSwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCAKLSAgICA4MDcwLCA2MTUwLCA2NjM2LCA0MzcwLCAwLCAwLCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAwLCAwLCAwLCA0OTg2LCAxMjE4OSwgCi0gICAgMCwgNjc2NDgsIDEyMDQ5OSwgOTE3NTUzLCA0MjU3LCAxMjEwNCwgNzc5NDIsIDYyMjAsIDkwMDQsIDY1NTYxLCAwLCAKLSAgICA3Nzk0OSwgMCwgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDAsIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCAKLSAgICA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgMCwgMTE4OTAwLCA5MTc4OTQsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCAwLCAKLSAgICAwLCAwLCA2NDY5LCA3NDIyNywgMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDAsIDAsIAotICAgIDAsIDAsIDQyOTE2LCAwLCAwLCAwLCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDEyNzEzOCwgMTI4MDgyLCAzNDk0LCAKLSAgICA3NDYwNiwgNjU1NSwgMCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCAwLCA2NTg5OCwgMCwgNjUzMTIsIDU0NDcsIDAsIAorICAgIDQyNDUyLCA3ODMzMSwgMTIwNjY0LCA3ODQ0NSwgMCwgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIAorICAgIDQxMTMyLCA2NTY3NSwgMTA4MCwgMTIwMDAyLCA5ODg2LCA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgMCwgCisgICAgMTI2MzIsIDEwODYsIDE4NjksIDc4Njg1LCA3NjgwLCAwLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgCisgICAgMTA5MSwgMTI2MzgsIDc5NzcsIDQ1MDEsIDQxMDk5LCAwLCA2NjMwOSwgMCwgMCwgMTQ5NCwgOTgzMTQ2LCAxMjY2MTMsIDAsIAorICAgIDExNjkzLCAxMjY1MTMsIDEwNDk0LCA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMCwgMCwgMCwgMCwgNjQ1ODIsIDAsIAorICAgIDczNzk0LCAwLCA4MDIyLCAwLCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgOTQwNjksIDkxNzk5NCwgOTE3OTkzLCA5MTc5OTUsIAorICAgIDU1NzAsIDE4ODEsIDcyMTAsIDAsIDEwMTIsIDQzNzUyLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCA1NTY5LCA5ODMyMzYsIAorICAgIDQyMzM5LCAwLCA2MDYzLCAwLCA3ODM4MywgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgOTIyMDEsIDY0NzI3LCA5MTYwLCAKKyAgICAxOTQ4MjcsIDAsIDAsIDkyMTgwLCAxMDUwMywgMTE4ODEwLCA2MDU1LCAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIAorICAgIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgOTgzMTE2LCAwLCAxMjAxMTksIDc4MzMzLCAxMjAxMTcsIAorICAgIDEyMDExOCwgMTIwMDk5LCAxMjAxMDAsIDY1MDg3LCA1NTcxLCAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCAxMjAxMDcsIAorICAgIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIDEyMDEwMSwgNTg5LCA3MDUwLCA5ODM3OTEsIDQzMjgxLCAKKyAgICAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCAwLCAxOTQ4MTUsIDg1ODMsIAorICAgIDAsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgMCwgMCwgMCwgNjY1OTIsIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgCisgICAgNDI1NjEsIDEyMDYyNiwgOTgzMjQ1LCAwLCA4MTIwLCAxMjA3MDEsIDAsIDAsIDEyODAxMiwgNDEwNjMsIDAsIDEwNjY0LCAwLCAKKyAgICA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIDAsIDAsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIDExODk2MCwgCisgICAgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDk4MzY2MiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCAxOTUwMjUsIDc0MDk0LCAwLCAKKyAgICAwLCA3Nzk3MCwgOTgzNTYwLCAwLCAxMjgxNzUsIDEyMTExLCAzOTI3LCAwLCAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIAorICAgIDY5MjMsIDkyMjgxLCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgNjY2MzUsIDEyMDE5LCAwLCAKKyAgICAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCA5MTc5NTksIDU4NTMsIDEzMDYzLCAxMDM2MywgMCwgMTI5NTYsIAorICAgIDEyODE2OSwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMCwgNzgzOTIsIDEyODI2LCA2MzI5LCAwLCAxMDUxNCwgCisgICAgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIDc4Mzk2LCAKKyAgICAxMjcwNTcsIDI2OTUsIDQyMTcxLCAwLCAwLCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAxMjEyNSwgMTI3NjYsIDAsIAorICAgIDExNjQsIDEyODgxNywgMCwgNDE5MTgsIDk4MzE2OCwgMTI3NTQyLCA4Njg3LCA2NjAwOSwgMTIxNzgsIDcwNTMsIDEyODAwMSwgCisgICAgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDEyMDUzOCwgNjQyNywgNDI4ODQsIDQxMTIzLCAwLCAwLCA0Mjg3MywgNDExMjYsIAorICAgIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCAwLCA5ODczLCAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIDQyODQzLCAKKyAgICA2NTkxLCA5MzQwLCAwLCAxNTg5LCAwLCAyOTYsIDc0NDM4LCA3ODg1MiwgMCwgNjc4NDEsIDc0MzcwLCAwLCA4OTIyLCAKKyAgICAxMjgwNjgsIDc0NjAwLCAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIAorICAgIDY1NTkwLCA1Mjk5LCAwLCAxMTQ3MywgNTQ0OSwgMTI1MiwgMCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIAorICAgIDkxNzU2OSwgNzQxMTQsIDEyMjMsIDE2NDIsIDE3NCwgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgCisgICAgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgMTI3MDI5LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIAorICAgIDYxNTAsIDY2MzYsIDQzNzAsIDAsIDAsIDc0MTc4LCA3NDU4NywgNzQxMTcsIDAsIDAsIDAsIDQ5ODYsIDEyMTg5LCAwLCAKKyAgICA2NzY0OCwgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDc3OTQyLCA2MjIwLCA5MDA0LCA2NTU2MSwgMCwgNzc5NDksIDAsIAorICAgIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCAwLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIDkyNTU2LCAKKyAgICA3Mzg5OCwgMTE5NzksIDcwMDUxLCAxMTg5MDAsIDkxNzg5NCwgMCwgOTYzNSwgMTI2MDAsIDg4NzEsIDAsIDAsIDAsIDY0NjksIAorICAgIDc0MjI3LCAwLCA2NTMwNCwgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgMCwgMCwgMCwgMCwgCisgICAgNDI5MTYsIDAsIDAsIDAsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgMTI3MTM4LCAxMjgwODIsIDM0OTQsIDc0NjA2LCAKKyAgICA2NTU1LCAwLCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzIzOCwgNjUzMTIsIDU0NDcsIDAsIAogICAgIDEyODk1LCA2NTU5MywgNDAxMCwgMCwgNDExMDYsIDAsIDY0NDQ4LCAwLCA0MTEwNSwgMCwgNjU4MjAsIDYyMzIsIDAsIAogICAgIDEyODI4MCwgMCwgNDM2MDgsIDExOTA5MSwgMCwgNjUzOCwgNDMzNSwgNzgzNjQsIDM5NDEsIDQxMTIyLCAxMTA2MSwgCi0gICAgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAxMjE1NSwgMCwgNDI4NzgsIDExNTAwLCAwLCAwLCA3NDU3OCwgMCwgNjU4MzIsIAotICAgIDAsIDAsIDAsIDc3OTc1LCAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgMCwgMCwgOTIzMDcsIDAsIDAsIAotICAgIDUxMzMsIDAsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCA5MzU0LCAwLCAwLCAwLCAyNDk2LCAxMTUxNiwgOTQ0LCAKLSAgICAxMTg4NTEsIDM4OTAsIDEyMTY4LCAxNDM4LCAwLCAwLCAwLCA0MTk0NywgMTIyMCwgMTIwODI4LCAxMjg1NTUsIDAsIDAsIAotICAgIDE1NzEsIDQyNjMwLCA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAwLCAzMTIsIDQxOTgwLCAwLCAwLCA3ODEyMCwgCi0gICAgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgCi0gICAgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgMCwgMCwgMTkwNiwgOTE3OTg2LCAxMTUzMiwgNzQwNzMsIDAsIAotICAgIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDkxNzg5NSwgNjQyODcsIDAsIDc4MTE1LCAxMTQyOCwgMTczMCwgMjQ1NywgMCwgCi0gICAgMTk5MTgsIDEwNDY5LCAwLCAwLCA3NzAzLCA4ODQwLCA4MDM1LCAwLCAwLCA5MjQ5MSwgMCwgNjEyOSwgMCwgMCwgMTI4MjY4LCAKLSAgICAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDAsIDEzMTM2LCAwLCAwLCA3NDI3OCwgNjM4ODYsIDExODg4MSwgOTYwNSwgNzM4OTIsIAotICAgIDEzMjIwLCAxMjg3NzYsIDEyMDI3NCwgNTUxNCwgMCwgOTIyOCwgMCwgMCwgMCwgNTI0MCwgOTgxMSwgMTAwMTIsIDMwOTYsIAotICAgIDAsIDAsIDAsIDY2Njc2LCA2NTg3MywgMCwgMCwgMCwgOTUwMSwgMCwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgCi0gICAgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCAwLCA5MTc4MTIsIDAsIDExODg5OSwgMTIxOTMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE5OTM1LCAwLCA5MjE2MiwgNjk2NzYsIDAsIDAsIDAsIDUyNzUsIDAsIDAsIDg2MzcsIDAsIDAsIDM3ODksIDYzODgwLCAKLSAgICAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCAxMjgxMzgsIDI0MjYsIDEyMDQyLCA5MjE5NCwgMCwgCi0gICAgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDAsIDAsIDYzODc2LCAKLSAgICAxMTY2NywgNDI2ODYsIDc3OTczLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIDQxNjQ5LCA3NTg5LCAwLCAwLCAzMjM3LCAwLCAKLSAgICA2ODIxNSwgMCwgODU0MSwgNzgyOTgsIDAsIDQxODY2LCAwLCAwLCAwLCAwLCAwLCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIAotICAgIDQxOTQwLCA4Mjk5LCA0MTk0NSwgNzEzMiwgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIAotICAgIDAsIDQxNjk5LCAxMDc2MiwgNDM3ODAsIDEyOTk5LCAwLCAwLCA4MTA2LCA0MTI4LCAwLCAwLCA0NDk0LCAwLCA0MDEyLCAKLSAgICAxMDM5NSwgMCwgNDM2MzMsIDY1NDQ3LCAwLCAwLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgMCwgNDI3NTUsIAotICAgIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA5MjI4MSwgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIDc1MTUsIDM4NjgsIDY4OCwgCi0gICAgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDkxNzkxMSwgMCwgMCwgMzk4NSwgOTE3OTEyLCAKLSAgICA2NTg2MCwgNjM5MjEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA5MTc4MDUsIDEyODA5LCA2NDA2LCA0Njg1LCA5MjUwNSwgMTA4NzksIAotICAgIDEwMzQ3LCA0NjgwLCA2MzQxLCAwLCAzODUxLCA4MTMyLCA3NDMyNSwgMCwgOTE3OTA3LCAwLCA0MTk1OCwgMTE5MTc2LCAKLSAgICA5MTc5MDgsIDAsIDAsIDQyNjU3LCA5MjQ2OCwgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDAsIDExNzE3LCAKLSAgICA3NjUwLCAxMDU5NCwgNjQ5NTEsIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDAsIDM4OTEsIDAsIAotICAgIDAsIDIzMzcsIDE3MzUsIDc0MzI0LCA2Nzg2MCwgMjM2MywgMCwgMCwgNDM1NjEsIDAsIDAsIDc0MTQ2LCAxODYwLCA3NDk1LCAKLSAgICA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgMCwgMTIwMzQ3LCA3NzI3LCAwLCA4NDk4LCA2OTgxOCwgCi0gICAgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIDAsIDEyNTMzLCAwLCAKLSAgICA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMCwgNzQ4MDAsIDAsIDAsIDExOTgwLCAxMjg2NTAsIDAsIDYzODk0LCAxMjA3NjAsIAotICAgIDEyMjgyLCA2NjE5MiwgMCwgNzQ1OTIsIDg4NTAsIDc0Mjc1LCA5MjM4LCAxMDYxNywgOTE3NTQ1LCAwLCA5MjYyNSwgMCwgCi0gICAgMTI3OTEsIDAsIDAsIDAsIDQ0NDcsIDczNzMyLCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMCwgNzgwODcsIDEyNzkwLCAKLSAgICA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxOTQ5MzgsIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIAotICAgIDQxMzEwLCAwLCA0MTM5OSwgMCwgMCwgNTUyNTgsIDAsIDEyNjkwLCAwLCAwLCA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgCi0gICAgOTAxMCwgMTEzMTUsIDAsIDI3OCwgMCwgNDE0MDUsIDExOTI1NCwgMCwgMTAwNzcsIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIAotICAgIDAsIDYwMDIsIDAsIDQzNTUzLCAwLCA2NzkwMywgMCwgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMCwgMCwgMCwgODY0NiwgCi0gICAgMCwgNzc4MjksIDAsIDAsIDY0MTMsIDY1NTAsIDAsIDE5NDAsIDAsIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIAotICAgIDEwMDQ0LCAwLCAwLCAwLCA2ODY1OSwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDAsIDAsIAorICAgIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDk4MzY2NSwgNDI4NzgsIDExNTAwLCAwLCAwLCA3NDU3OCwgMCwgCisgICAgNjU4MzIsIDAsIDAsIDAsIDc3OTc1LCAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgMCwgMCwgOTIzMDcsIAorICAgIDAsIDAsIDUxMzMsIDAsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDAsIDAsIDI0OTYsIAorICAgIDExNTE2LCA5NDQsIDExODg1MSwgMzg5MCwgMTIxNjgsIDE0MzgsIDAsIDk4MzExNywgMCwgNDE5NDcsIDEyMjAsIDEyMDgyOCwgCisgICAgMTI4NTU1LCAwLCAwLCAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgCisgICAgOTgzOTM1LCAwLCA3ODEyMCwgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIAorICAgIDY1MTIxLCAxMDg2MiwgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgMCwgMCwgMTkwNiwgOTE3OTg2LCAKKyAgICAxMTUzMiwgNzQwNzMsIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgOTE3ODk1LCA2NDI4NywgMCwgNzgxMTUsIAorICAgIDExNDI4LCAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgCisgICAgOTIyMzAsIDAsIDYxMjksIDAsIDEyODUyOCwgMTI4MjY4LCAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDAsIDEzMTM2LCAwLCAwLCAKKyAgICA3MDEwMiwgNjM4ODYsIDExODg4MSwgOTYwNSwgNzEzMDgsIDEzMjIwLCAxMjg3NzYsIDEyMDI3NCwgNTUxNCwgMCwgOTIyOCwgCisgICAgMCwgMCwgMCwgNTI0MCwgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDk4MzM0MywgNjY2NzYsIDY1ODczLCAwLCAwLCAwLCAKKyAgICA5NTAxLCAwLCAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIAorICAgIDAsIDkxNzgxMiwgMCwgMTE4ODk5LCAxMjE5MywgMCwgMCwgMCwgMCwgOTgzMzQ1LCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAKKyAgICAwLCAwLCAwLCA1Mjc1LCAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIAorICAgIDY2MzMyLCA2NjYwMywgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkwMiwgOTUzNywgMzk2MSwgMTIxMTUsIAorICAgIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDAsIDAsIDYzODc2LCAxMTY2NywgNDI2ODYsIDc3OTczLCAKKyAgICA0MjM2MiwgNjQ2ODYsIDQ0OTksIDQxNjQ5LCA3NTg5LCAwLCAwLCAzMjM3LCAwLCA2ODIxNSwgOTE3OTA0LCA4NTQxLCAKKyAgICA3ODI5OCwgNzAwMzQsIDQxODY2LCAwLCAwLCAwLCAwLCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgCisgICAgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAwLCAKKyAgICA0MTY5OSwgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMCwgMCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgMCwgNDAxMiwgCisgICAgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCAxMjY1MTEsIDAsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAwLCAKKyAgICA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgNzUxNSwgMzg2OCwgCisgICAgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgOTE3OTExLCAwLCAxMjg2ODgsIDM5ODUsIAorICAgIDkxNzkxMiwgNjU4NjAsIDYzOTIxLCA3MDUxLCA2OTc3NywgNDY4MiwgOTE3ODA1LCAxMjgwOSwgNjQwNiwgNDY4NSwgCisgICAgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIDAsIDkxNzkwNywgMCwgCisgICAgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAwLCAwLCA0MjY1NywgOTI0NjgsIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIAorICAgIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgCisgICAgNzgwODIsIDk2NTEsIDAsIDM4OTEsIDAsIDAsIDIzMzcsIDE3MzUsIDc0MzI0LCA2Nzg2MCwgMjM2MywgOTgzMTM1LCAwLCAKKyAgICA0MzU2MSwgMCwgMCwgNzQxNDYsIDE4NjAsIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCAKKyAgICAwLCAxMjAzNDcsIDc3MjcsIDAsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIAorICAgIDEyNTM0LCAxMjEyNCwgNzY5MCwgMCwgMTI1MzMsIDk4Mzg3MCwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDAsIDc0ODAwLCAKKyAgICAwLCA2Nzk3NCwgMTE5ODAsIDEyODY1MCwgOTgzNzkyLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCAKKyAgICA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDkxNzU0NSwgMCwgOTI2MjUsIDAsIDEyNzkxLCAwLCAwLCAxMjc4NDMsIDQ0NDcsIAorICAgIDczNzMyLCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMCwgNzgwODcsIDEyNzkwLCA0MTQwMCwgMTE5MTI4LCA2NjYwNywgCisgICAgMTI3OTIsIDQyMjMyLCAxOTQ5MzgsIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIDQxMzEwLCA5ODM4NjAsIDQxMzk5LCAwLCAKKyAgICAwLCA1NTI1OCwgMCwgMTI2OTAsIDAsIDAsIDQzNjcyLCAxMjc4NDAsIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgMCwgCisgICAgMjc4LCAwLCA0MTQwNSwgMTE5MjU0LCAwLCAxMDA3NywgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgMCwgNjAwMiwgMCwgCisgICAgNDM1NTMsIDAsIDY3OTAzLCAwLCAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAwLCAwLCAwLCA4NjQ2LCA5ODMxODYsIAorICAgIDc3ODI5LCA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMCwgMTk0MCwgMCwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAxMDY3OCwgCisgICAgMTAwNDQsIDEyODMyMiwgMCwgMCwgNjg2NTksIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAwLCAwLCAKICAgICAxMDI5NywgMCwgMzc0MiwgMCwgMzk1OSwgMCwgMCwgMCwgMjQ2NywgMCwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDAsIAotICAgIDYzODQ1LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCAwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAKLSAgICAxMTU0MCwgNDM1NDYsIDY2OTIsIDAsIDQxMDYwLCAwLCAwLCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIAotICAgIDEyMDI2MCwgMCwgNjUyNTYsIDAsIDc0MDcwLCAwLCAwLCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgCisgICAgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDAsIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgOTIzNjEsIAorICAgIDExNTQwLCA0MzU0NiwgNjY5MiwgMCwgNDEwNjAsIDAsIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgCisgICAgOTY3NywgMTIwMjYwLCAwLCA2NTI1NiwgMCwgNzQwNzAsIDAsIDAsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAKICAgICAxMjgyMzYsIDAsIDEyMDQ3MiwgNTUxNiwgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDczODI3LCA1NDQsIDEyMDQ1LCAKLSAgICA2Mjc4LCAwLCA1NTE1LCAwLCAwLCAwLCA2NTMzOSwgNDMyMjEsIDY1MTk0LCAwLCA1NTE3LCAwLCAwLCA3NDg0MSwgNjc4ODQsIAotICAgIDAsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDAsIDAsIDY3ODc5LCAxMjcxODgsIDE5MDIsIAotICAgIDY3ODg3LCA5NjM4LCAxMjk3NiwgMCwgMTI0ODMsIDEyMzY4LCA0MTc2OSwgNDI3MjYsIDQxNzY1LCAxMjg4MTksIDY2NjcsIAotICAgIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCA2Nzg4OSwgMCwgMTMxMSwgOTE3OTY2LCAKLSAgICA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMCwgOTQ5LCA3ODE2MiwgMCwgCi0gICAgNjE0OCwgODYwNSwgNDIyNTMsIDc4MTc3LCAwLCAwLCA0MjcxNSwgMCwgMCwgMCwgNjM4NzEsIDAsIDQxNzk2LCAxMjY5LCAKLSAgICA2NTMwLCAwLCA2NTA1NywgMCwgNTE0NCwgMTIyMjEsIDQyNzE2LCAwLCA0NDMxLCA0MzMxLCAwLCAxMjg2NzUsIDQxODM0LCAKLSAgICA1Mjc5LCAwLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDEyODgyNSwgMCwgNzgxNjUsIDY2MDM2LCAwLCAwLCA2NDI4LCAKLSAgICA0MjI3MCwgMCwgMCwgNDMwNTksIDQyNjY2LCA1MjU2LCAxMDY3LCAyNTUsIDEyMTMxLCAwLCA5NDkzLCAwLCA0MTAxNCwgCi0gICAgMTE3OTMsIDAsIDAsIDc0Mzk0LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCAwLCAxMTk2MzIsIDAsIDY1NjAsIDcwMTYsIDc0Mjc0LCAKLSAgICAwLCA0MzU1NiwgMzkyOSwgNzM5MDAsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgMTI3OTYsIAotICAgIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKLSAgICAxMjc3NTMsIDc0MzE1LCA3NDM2MSwgODI1MywgODgxNywgMTEzNiwgMCwgNDM1NjMsIDkyMjMyLCAwLCAxOTQ3NTAsIDczOTIsIAotICAgIDgyMzAsIDkzNjUsIDAsIDAsIDAsIDAsIDAsIDQwNDEsIDAsIDIzNTcsIDQzMjQwLCAxMjc4NiwgMjI5LCAxMTk4ODUsIAotICAgIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIDY1NTU0LCAxMTk4ODIsIDExOTg3NywgMTE5ODc2LCAxMjc4NSwgCi0gICAgNjM4NjMsIDQzNzk1LCA3NzcwLCAxMDcxMiwgNjQ4NTMsIDEyNjg2LCAxMTg5MTYsIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAKLSAgICAxMDQ3MCwgMCwgMTEwNTksIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMCwgMCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgCi0gICAgMTIzMywgMCwgNDQwMDksIDc4Mjg0LCA2NjMzOCwgMCwgMCwgMTgzOSwgMTE4Nzk5LCAwLCAxMDkyNywgMTcwMSwgMCwgCisgICAgNjI3OCwgMCwgNTUxNSwgMCwgMCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDAsIDAsIDc0ODQxLCAKKyAgICA2Nzg4NCwgMCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMCwgMCwgNjc4NzksIDEyNzE4OCwgCisgICAgMTkwMiwgNjc4ODcsIDk2MzgsIDEyOTc2LCAxMjY1NDYsIDEyNDgzLCAxMjM2OCwgNDE3NjksIDQyNzI2LCA0MTc2NSwgCisgICAgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIDY3ODg5LCAwLCAxMzExLCAKKyAgICA5MTc5NjYsIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAxMjg4ODAsIDY5MTcsIDc4MTU1LCAwLCA5NDksIAorICAgIDc4MTYyLCAwLCA2MTQ4LCA4NjA1LCA0MjI1MywgNzgxNzcsIDAsIDAsIDQyNzE1LCAwLCAwLCAwLCA2Mzg3MSwgMCwgCisgICAgNDE3OTYsIDEyNjksIDY1MzAsIDAsIDY1MDU3LCAwLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDAsIDQ0MzEsIDQzMzEsIAorICAgIDk4MzcyMCwgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMCwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCAxMjg4MjUsIDAsIDc4MTY1LCAKKyAgICA2NjAzNiwgMCwgMCwgNjQyOCwgNDIyNzAsIDAsIDk4MzU5NiwgNDMwNTksIDQyNjY2LCA1MjU2LCAxMDY3LCAyNTUsIAorICAgIDEyMTMxLCA5ODM3MTMsIDk0OTMsIDk4Mzk1OSwgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIDAsIDc0Mzk0LCA0MzQ2MCwgCisgICAgMTA2NTMsIDQyNzIzLCA5ODM4NDUsIDExOTYzMiwgMCwgNjU2MCwgNzAxNiwgNzQyNzQsIDk4MzYxNSwgNDM1NTYsIDM5MjksIAorICAgIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAxMTk1MywgMCwgNjk3NjEsIAorICAgIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgMTI3NzUzLCA3NDMxNSwgNzQzNjEsIAorICAgIDgyNTMsIDg4MTcsIDExMzYsIDAsIDQzNTYzLCA5MjIzMiwgMCwgMTk0NzUwLCA3MzkyLCA4MjMwLCA5MzY1LCAwLCAwLCAKKyAgICA5ODM2MDcsIDAsIDAsIDQwNDEsIDAsIDIzNTcsIDQzMjQwLCAxMjc4NiwgMjI5LCAxMTk4ODUsIDExOTg4NCwgNDQwMDQsIAorICAgIDcxNDIsIDExOTg4MSwgMTIzNTAsIDY1NTU0LCAxMTk4ODIsIDExOTg3NywgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCAKKyAgICA3NzcwLCAxMDcxMiwgNjQ4NTMsIDEyNjg2LCAxMTg5MTYsIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAxMDQ3MCwgMCwgCisgICAgMTEwNTksIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAwLCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCAKKyAgICA0NDAwOSwgNzgyODQsIDY2MzM4LCAwLCAwLCAxODM5LCAxMTg3OTksIDk4MzIxNywgMTA5MjcsIDE3MDEsIDk4MzY1NSwgCiAgICAgMjM4OCwgNDE3NDksIDQxNzYxLCA1NDUzLCA4MzYxLCAxMTk4NjUsIDQxNzU4LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIAotICAgIDkyNDkzLCA3ODY3NywgMCwgOTI0MjksIDc4MTc0LCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgMCwgMCwgNjU4MTIsIAotICAgIDkxNzgzMSwgMCwgNDE4MjQsIDAsIDEyMDIwMywgMTk0ODAwLCAxOTQ4MDMsIDQyNzAwLCAxOTQ4MDUsIDEyNzk4MCwgCisgICAgOTI0OTMsIDc4Njc3LCAwLCA5MjQyOSwgNzgxNzQsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIDAsIDY1ODEyLCAKKyAgICA5MTc4MzEsIDAsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCAxOTQ4MDAsIDE5NDgwMywgNDI3MDAsIDE5NDgwNSwgMTI3OTgwLCAKICAgICAxOTQ4MDcsIDc4Njc2LCA5MjM1NiwgMTk0ODA4LCAwLCAwLCA0NDkzLCA0MzM2LCAwLCAyMzE0LCA0MzYwMiwgNzg4MjYsIAotICAgIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgNDQ4OSwgMTk0NzkxLCAwLCAxOTQ3OTMsIAotICAgIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDAsIDg4NjcsIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzg4MjEsIAotICAgIDE0MTAsIDkyNjcxLCAwLCAxMTg4NzgsIDAsIDAsIDk5MTksIDAsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTI3OTc1LCA3ODE4OCwgCi0gICAgNDg5MiwgNzQwMTYsIDE5NDc4MSwgNjU0MiwgNDE5NTcsIDEyODg2NSwgNTc3NywgMCwgNzU5LCA2NTc0OSwgMjA3OSwgCi0gICAgNjUyNDgsIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDAsIDEwMjIzLCA0MjA2MiwgMCwgMCwgMCwgMzY2OCwgNjU3NTQsIDQzNTYwLCAKLSAgICAxMjIyNiwgMCwgNjUxNDksIDIzNDAsIDQxOTU5LCAxOTQ3ODYsIDE5NDc4NSwgMTk0Nzg4LCA0MzYxOCwgNjU3NDcsIAotICAgIDEwOTM3LCAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgOTI0MzYsIDg5MjEsIDk5NTIsIDAsIDAsIDQyNzE0LCA5OTUxLCAKLSAgICA0MzQwOSwgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCA0MTgyMCwgNDMwMzgsIAotICAgIDIzOTUsIDAsIDk5NzYsIDEyMDA0MywgMTIwMDUwLCAxMjAwNTgsIDY4MjIwLCAxMjgxNDMsIDQyODA5LCA0MjgwNywgMCwgCi0gICAgMTIwMDQ2LCAxMDE5OCwgNDE1MCwgNjQzNzEsIDgzMTgsIDQxNzkwLCAwLCA0MTg5OCwgMjM2MCwgNDE3OTQsIDkxNzk0MiwgCi0gICAgMCwgMTI3ODE4LCAwLCAwLCAyNDE4LCAwLCAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgCi0gICAgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCA5MjIwMywgMCwgMTAzODQsIDAsIDAsIAotICAgIDAsIDc3NTMsIDIzNTEsIDY2NTUsIDY0NDg5LCAwLCAwLCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIAotICAgIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgCi0gICAgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgCi0gICAgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIDQ4NjIsIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIAotICAgIDkyMTc4LCAwLCA5MDY1LCAxMjk2MSwgMCwgMCwgOTIyNTMsIDAsIDI4OSwgMCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIAotICAgIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCAwLCA0MjcyNCwgMCwgNDY4OCwgMTIwNDU0LCAwLCAwLCAxMTk2MjksIDgyMzgsIAotICAgIDMxMTAsIDEyMDE2MiwgMCwgMTIwMTYzLCA2NTI4LCAxMjc1NTMsIDQzMDM1LCAxMjAxNjEsIDIxOCwgMCwgMTUyMCwgMCwgCi0gICAgNDc4NiwgMCwgNDMyMjUsIDQ2MDIsIDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMCwgMTIwMTU2LCA0Mzk3OCwgODk4OCwgCi0gICAgODg4OCwgMCwgMCwgMCwgMCwgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMCwgMCwgOTk3NSwgMCwgMTE5OTAyLCA0Njg5LCAKLSAgICA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCA3NDQ0MSwgNzg4MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDY1LCAKLSAgICA4MjA3LCAwLCA5MjYxMywgMTI4MDExLCAwLCA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCAwLCAwLCAwLCAwLCAKLSAgICA0MTkyOSwgMCwgMCwgNjY2NzQsIDQxOTI2LCAxMjA0MDgsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAxOTQ4NjIsIDAsIDUyLCAKLSAgICAxMzExOCwgNjQ3NSwgMCwgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCAwLCA3NDA4NSwgMCwgMzk3OCwgCi0gICAgMCwgOTE3OTQ1LCAxMjc4MjMsIDExNTgyLCAxMjA3NjEsIDEyMjgxLCAwLCA2NTQ0LCAxMzI0MSwgMCwgNjk3ODIsIAorICAgIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgNDQ4OSwgNzEzMzEsIDAsIDE5NDc5MywgMTkxMiwgCisgICAgNDIzODUsIDEwMzA2LCAxMDM3MCwgMCwgMCwgODg2NywgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3ODgyMSwgMTQxMCwgCisgICAgOTI2NzEsIDk4MzI0NCwgMTE4ODc4LCAwLCAwLCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTI3OTc1LCAKKyAgICA3ODE4OCwgNDg5MiwgNzQwMTYsIDE5NDc4MSwgNjU0MiwgNDE5NTcsIDEyODg2NSwgNTc3NywgMCwgNzU5LCA2NTc0OSwgCisgICAgMjA3OSwgNjUyNDgsIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDAsIDEwMjIzLCA0MjA2MiwgMCwgMCwgMTI2NTczLCAzNjY4LCAKKyAgICA2NTc1NCwgNDM1NjAsIDEyMjI2LCA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCAxOTQ3ODYsIDE5NDc4NSwgMTk0Nzg4LCAKKyAgICA0MzYxOCwgNjU3NDcsIDEwOTM3LCAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgOTI0MzYsIDg5MjEsIDk5NTIsIDAsIDAsIAorICAgIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKKyAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTI4NTYzLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgMTIwMDU4LCA2ODIyMCwgMTI4MTQzLCAKKyAgICA0MjgwOSwgNDI4MDcsIDAsIDEyMDA0NiwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIDQxODk4LCAKKyAgICAyMzYwLCA0MTc5NCwgOTE3OTQyLCA3MTMxNCwgMTI3ODE4LCAwLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIDExMzM2LCA3OTksIAorICAgIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgMTAyNjAsIDExODk4MCwgCisgICAgNTUyODQsIDkyMjAzLCAwLCAxMDM4NCwgOTgzMjE4LCAwLCAwLCA3NzUzLCAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDAsIAorICAgIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAwLCAwLCA0MzU0OSwgNDg1NSwgNDIxNTAsIDY1NzM5LCA1NDQxLCA0MTg5NiwgCisgICAgMTAyODgsIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIDY1MDQ1LCA2MzgzOSwgNzgxOTgsIDIwNDksIDEwMDk4LCAwLCAKKyAgICA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCAwLCAwLCAwLCA0MTg4NywgMCwgCisgICAgNDg2MiwgOTczNSwgNjUzNywgMTIwNTkxLCA3NDI4NiwgMzkxNCwgOTIxNzgsIDkzOTc2LCA5MDY1LCAxMjk2MSwgMCwgMCwgCisgICAgOTIyNTMsIDAsIDI4OSwgMCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCA3Mzg5MywgCisgICAgNDI3MjQsIDAsIDQ2ODgsIDEyMDQ1NCwgMCwgMCwgNjc5OTQsIDgyMzgsIDMxMTAsIDEyMDE2MiwgOTgzODk5LCAxMjAxNjMsIAorICAgIDY1MjgsIDEyNzU1MywgNDMwMzUsIDY5ODk4LCAyMTgsIDAsIDE1MjAsIDAsIDQ3ODYsIDAsIDQzMjI1LCA0NjAyLCAwLCAKKyAgICA3ODE2NywgMTAwODgsIDY1NDgsIDAsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIDg4ODgsIDAsIDAsIDAsIDAsIDEwNjY2LCAwLCAKKyAgICA3MzkwMiwgNjk3NDAsIDAsIDAsIDk5NzUsIDEyODAzOSwgMTE5OTAyLCA0Njg5LCA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCAKKyAgICA3NDQ0MSwgNzg4MTAsIDAsIDAsIDY3OTg3LCAwLCAwLCAwLCA2Nzk4OSwgMCwgMTAwNjUsIDgyMDcsIDAsIDkyNjEzLCAKKyAgICAxMjgwMTEsIDAsIDY2MiwgMCwgOTI0NCwgMTk0ODYzLCAwLCAxMTkyNjEsIDk4MzQyMCwgMCwgMCwgMCwgNDE5MjksIDAsIDAsIAorICAgIDY2Njc0LCA0MTkyNiwgMTIwNDA4LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCAKKyAgICA2NDc1LCAwLCAxMjAzNDEsIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDAsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMCwgCisgICAgOTE3OTQ1LCAxMjc4MjMsIDExNTgyLCAxMjA3NjEsIDEyMjgxLCAwLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAKICAgICAxMjg1NTcsIDE5NDg2MCwgMTE3NjUsIDY1MjU4LCAxMDM2OSwgMCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgMTUwMCwgCiAgICAgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCA3NDAyMSwgCi0gICAgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDkyMjY2LCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgOTE3OTMzLCAKKyAgICA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgOTIyNjYsIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3NDE5MSwgCiAgICAgMTIwNDEwLCAwLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIDc0MTMxLCAxMjQyLCAKICAgICA2NTUxNCwgMCwgNjM5NDAsIDEyODcwNiwgNjQ1MzMsIDEyMDEyOSwgMCwgNjc4NDIsIDExOTkwLCA5MjQzMCwgNjM5MzksIAotICAgIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCAwLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIDAsIAotICAgIDc0Mjk0LCAwLCA2OTIzOSwgMCwgMTE5MDI3LCAxMjk5MiwgMjc1MywgMTkzNiwgNzQ0OTEsIDkyNTc0LCAyNzUxLCAxMjY2MiwgCi0gICAgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCAwLCAwLCAwLCA2MzkyMCwgNzQxMjgsIAotICAgIDI4NTYsIDExOTkxMCwgNDcsIDExOTkxMSwgMTI2OTg2LCA2NTg1OCwgMCwgMCwgMCwgNzg5OSwgMCwgODQxNywgNDM3OTgsIAotICAgIDcwNzIsIDAsIDAsIDQwMzMsIDEyODE2NCwgNDM5OTIsIDAsIDAsIDIxMiwgNjQ2MDAsIDE5MDMsIDEyMzIwLCAwLCAwLCAwLCAKLSAgICAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDAsIDAsIDAsIDAsIDEyOTEsIDc0ODI4LCAwLCAwLCA5NTMxLCAxMzE1NSwgCi0gICAgODUwNSwgNjgzNzksIDEyMDYyLCAwLCAwLCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDEyMDQzMiwgMCwgMCwgMCwgCi0gICAgMTIwNDMzLCAwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgMCwgMTk0OTQ4LCAwLCAwLCAKLSAgICA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCAwLCAxMjYyNCwgMCwgMTY3MywgCi0gICAgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgOTgyMCwgMCwgCi0gICAgMTIxODcsIDAsIDAsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCAwLCAwLCAwLCAwLCAwLCA3NDgyNiwgNjQ3MzMsIDAsIDAsIAotICAgIDM0OTEsIDAsIDAsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDAsIDc0OTIsIDAsIDc0NjA1LCA5MjQ4MywgNzUxNCwgMCwgMCwgCi0gICAgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgMCwgMCwgNjM5MjUsIDAsIDc2MTAsIDIxOSwgMCwgMCwgNjkyLCA0MzU4OCwgCi0gICAgNzQ0MzMsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgMCwgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgCi0gICAgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgMCwgOTIzMDEsIDAsIDg4OTUsIDUyNTMsIDAsIDU0NTgsIDAsIDI4NjYsIDAsIAotICAgIDEyNzg2MCwgNjUxMTEsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDAsIDAsIDAsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgCi0gICAgNzA1OSwgMCwgMCwgOTYwNCwgNzg3MDAsIDc0NDEsIDYzODI2LCA3ODcwNiwgMTE4OTQxLCA2NDM5MiwgMTk0NzM1LCAwLCAKLSAgICAyODQ0LCAwLCA0MTk3NCwgMCwgMTIxMzksIDAsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIAotICAgIDE5NDc2NSwgMCwgNTMwOCwgMCwgMjkwLCAwLCAwLCAyODYyLCAyNzkyLCAxOTUwODgsIDAsIDAsIDMyNjgsIDY2NTkxLCAwLCAKLSAgICA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAxODE0LCAwLCAxMDI0MCwgOTIzMzgsIDc0MzA1LCAwLCA3NDUyOCwgCi0gICAgNjU5MDMsIDAsIDQyNjQ2LCA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA3Nzk1NiwgNjQ0ODIsIDEyNzMzNywgODE2MywgCi0gICAgNjUyNzAsIDAsIDAsIDAsIDkxMTIsIDc0NDMxLCA4NjMsIDk0OTAsIDExOTg5OCwgOTE3ODM3LCA0MzMyMywgMTIwNTEzLCAKLSAgICAxMTk4OTcsIDkwNzEsIDEyNzMzMywgMCwgMzY1NCwgNzc4OSwgOTYzNywgMCwgMjUzNSwgNjU1MDQsIDc2NTMsIDQwOTkzLCAKLSAgICAxMTk4OTksIDY2NTg3LCAxOTUwOTgsIDAsIDkyNDAxLCAwLCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDAsIDEwNjI5LCAKLSAgICAwLCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyODc5NywgMTI3MzI3LCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCA0Mzk2OSwgCi0gICAgNDMxOTMsIDEwNzM3LCAzNDYzLCAwLCAwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIDEyMzQ1LCA3MDQ5LCAwLCAKLSAgICA1MTk1LCAxOTUwODEsIDAsIDY2NjM5LCAwLCAwLCAwLCAxMjgwNDEsIDAsIDkyMzg1LCAxMjYyLCAwLCA2NTYxLCAxOTkzOSwgCi0gICAgMCwgMCwgMCwgMTE5OTA2LCAwLCAwLCAwLCAwLCAwLCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMCwgMCwgMCwgMTUwMiwgMCwgCi0gICAgMCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgODQzMCwgMCwgNzQxMzIsIDEyMDc1OCwgMCwgNzQwNTcsIAotICAgIDk2MDMsIDAsIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgMCwgNTkwLCA3NTc5LCAKLSAgICA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAxMTcyMSwgMCwgNDc5OCwgMCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgCi0gICAgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgMCwgNjg2MjYsIDg5NCwgMzAwLCA5MTc4MTMsIDEyMzA2LCAKLSAgICA2NjIzNSwgODAwNCwgMCwgMCwgMjU2MiwgMCwgMCwgNDI1MDMsIDAsIDExNjUyLCAwLCAwLCAxMTkyNDEsIDkyNjQ5LCAwLCAKLSAgICA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCAxMTk2MzgsIDAsIDEzMTU2LCAwLCAKLSAgICAxMDgzMiwgNTA5MywgMCwgMCwgMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAxNzYsIDAsIDkxNTMsIDQxMDQsIAotICAgIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgMCwgMTI3MzcxLCA0Mjg4MSwgMCwgCisgICAgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDk4MzkwMSwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAKKyAgICA5ODMzNTMsIDc0Mjk0LCA5ODM5MDUsIDY5MjM5LCAwLCAxMTkwMjcsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgOTI1NzQsIAorICAgIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDAsIDAsIDAsIAorICAgIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIAorICAgIDg0MTcsIDQzNzk4LCA3MDcyLCAwLCAwLCA0MDMzLCAxMjgxNjQsIDQzOTkyLCAwLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKKyAgICAxMjMyMCwgMCwgMCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDAsIDAsIDAsIDAsIDEyOTEsIDc0ODI4LCAKKyAgICAwLCAwLCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAwLCAwLCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIAorICAgIDEyMDQzMiwgMCwgMCwgMCwgMTIwNDMzLCAwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgCisgICAgMCwgMTk0OTQ4LCAwLCAwLCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCAwLCAKKyAgICAxMjYyNCwgMCwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIAorICAgIDExOTU5OCwgOTgyMCwgMCwgMTIxODcsIDAsIDAsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgMCwgMCwgMCwgMCwgCisgICAgNzQ4MjYsIDY0NzMzLCAwLCAwLCAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgCisgICAgOTI0ODMsIDc1MTQsIDk4MzM1OSwgMCwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgMCwgMCwgNjM5MjUsIDAsIDc2MTAsIAorICAgIDIxOSwgMCwgMCwgNjkyLCA0MzU4OCwgNzQ0MzMsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgOTM5OTEsIAorICAgIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDAsIDkyMzAxLCAwLCA4ODk1LCAKKyAgICA1MjUzLCA3MDAyNSwgNTQ1OCwgMCwgMjg2NiwgMCwgMTI3ODYwLCA2NTExMSwgNjg0MzMsIDY3MDAsIDEyMDQ4NCwgMCwgCisgICAgMTIwNTgzLCAwLCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY2OCwgMCwgOTYwNCwgNzg3MDAsIDc0NDEsIAorICAgIDYzODI2LCA2Nzk3MCwgMTE4OTQxLCA2NDM5MiwgMTk0NzM1LCA5ODM2NzgsIDI4NDQsIDk4MzkzMiwgNDE5NzQsIDAsIAorICAgIDEyMTM5LCA2Nzk3MSwgMCwgMCwgMzM1OCwgNjUyOTUsIDAsIDMxMDQsIDE5NDczNCwgMCwgMTk0NzY1LCA5ODMyMjcsIAorICAgIDUzMDgsIDAsIDI5MCwgMCwgMCwgMjg2MiwgMjc5MiwgMTk1MDg4LCA5ODMwNzAsIDAsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCAKKyAgICA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAxODE0LCAwLCAxMDI0MCwgOTIzMzgsIDc0MzA1LCAwLCA3NDUyOCwgNjU5MDMsIAorICAgIDAsIDQyNjQ2LCA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA3Nzk1NiwgNjQ0ODIsIDEyNzMzNywgODE2MywgNjUyNzAsIDAsIAorICAgIDc3OTMyLCAwLCA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCAxMTk4OTgsIDEyODM0OSwgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCAKKyAgICA5MDcxLCAxMjczMzMsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDAsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgMTE5ODk5LCAKKyAgICA2NjU4NywgMTk1MDk4LCAwLCA5MjQwMSwgOTgzODg1LCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDAsIDEwNjI5LCAwLCAKKyAgICA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyODc5NywgMTI3MzI3LCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCA0Mzk2OSwgCisgICAgNDMxOTMsIDEwNzM3LCAzNDYzLCA5ODMwNjUsIDAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgMTIzNDUsIAorICAgIDcwNDksIDExOTkxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgMCwgMCwgMCwgMTI4MDQxLCAwLCA5MjM4NSwgMTI2MiwgMCwgCisgICAgNjU2MSwgMTk5MzksIDAsIDAsIDEyODUzNSwgMTE5OTA2LCAwLCAwLCA5ODMwOTcsIDAsIDk4MzY1OCwgMTE5OTA3LCAKKyAgICA2NDYxMiwgMTE5OTEsIDAsIDAsIDAsIDE1MDIsIDkxNzU2OCwgMCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgCisgICAgODQzMCwgMCwgNzQxMzIsIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDAsIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIAorICAgIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgMCwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAKKyAgICAxMTcyMSwgMCwgNDc5OCwgMCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCAKKyAgICA2ODYxMCwgMCwgNjg2MjYsIDg5NCwgMzAwLCA5MTc4MTMsIDEyMzA2LCA2NjIzNSwgODAwNCwgMCwgMCwgMjU2MiwgCisgICAgMTI2NTU1LCAwLCA0MjUwMywgMCwgMTE2NTIsIDAsIDAsIDExOTI0MSwgNjQ2OTksIDEyNjU2OSwgNTA5NiwgNTA5NSwgCisgICAgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgMTE5NjM4LCAwLCAxMzE1NiwgMCwgMTA4MzIsIDUwOTMsIAorICAgIDAsIDY5ODUyLCAwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMCwgOTE1MywgNDEwNCwgNzg1OTksIAorICAgIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCA3MTI5OSwgMTI3MzcxLCA0Mjg4MSwgMCwgCiAgICAgODk4MCwgMTE4OTg4LCA2Nzg2MSwgODg0NCwgNzIwOSwgMCwgMCwgNDI3OCwgMCwgMCwgMTk0Nzg5LCAwLCA5MDc0LCA0MzQ4LCAKLSAgICAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMCwgMCwgMCwgNzQ0MjMsIDAsIDU4NiwgCi0gICAgNzQ0MTQsIDY0MzU5LCAxMjY3LCAwLCA2NTQ2OCwgMCwgNjU3MzEsIDAsIDEyNzE3OSwgMzYyMSwgMTIwNDczLCA2NjY2NiwgCi0gICAgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCAwLCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDAsIDAsIDE3MTQsIDc0NDA2LCAKLSAgICAxMjc4MzEsIDAsIDAsIDAsIDY2MjI1LCAwLCAwLCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAxMjA2OTQsIDAsIDEwMjkxLCAKLSAgICAxMDMyMywgMjgyNiwgMCwgMCwgMCwgNDIwMDgsIDk3MDgsIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgCi0gICAgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIDAsIDAsIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgMCwgMCwgNjU1ODgsIAotICAgIDAsIDAsIDAsIDg0MDEsIDAsIDQyMDE0LCAwLCA3MDMwLCAxOTQ3MDQsIDEwNDc5LCA2NDk1OSwgMjg1MiwgMCwgMCwgMCwgMCwgCi0gICAgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDAsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIDEwMTQ3LCAxMjkzNSwgMTI3NTY4LCAwLCAwLCAKLSAgICAwLCAwLCA3ODc1NywgMCwgMCwgMCwgMCwgOTk5NCwgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIAotICAgIDQxNjc1LCAwLCAyNzY1LCAwLCAwLCAwLCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgCi0gICAgMTk0Njg1LCA3NDQxNiwgMCwgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODcsIDAsIDc3OTg2LCAKLSAgICAwLCA2OTMxLCA2OTcyMiwgNjQzNTUsIDcxNzcsIDEyMDUzMCwgMCwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgCi0gICAgMCwgNjgwNiwgNjk5MiwgNDIwMTksIDAsIDQxMjkwLCAwLCA3NTAsIDAsIDAsIDEwMTYzLCA2MzkxMywgNzQwNjYsIDcwMzIsIAotICAgIDU5NTQsIDY0OTMxLCA0MzE0LCAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIDc3OTkzLCA3ODg5MSwgCi0gICAgMTMxNjUsIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI4Nzg0LCA0MTM3OCwgMTEwMDgsIDY5MzgsIAotICAgIDkyMjIyLCA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgMCwgMCwgMCwgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCAKLSAgICA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCAwLCAwLCA2NDgwMSwgMCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIAotICAgIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCAwLCAwLCAwLCAxMDY3NywgNjA0LCA0MTA5NywgCi0gICAgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIDM0MjUsIDEyNzQ4OCwgMCwgMjgzNiwgMCwgMCwgOTcwNywgMCwgNDMyMDIsIDAsIDAsIAotICAgIDY1MTk5LCAxNzM4LCA5MTc4MTgsIDEyODE1OCwgMjgzMiwgOTI3MDIsIDk2NzAsIDEyOTM3LCAwLCA2NjM3NCwgOTE3OTU2LCAKLSAgICAwLCAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDAsIDczNzUyLCAwLCA2NDg3MiwgOTIzNDAsIDEzMzEsIDAsIDAsIDAsIAotICAgIDEyNzA4LCAwLCA1MDkwLCA1MDg5LCAwLCAwLCAxMTkxMDksIDAsIDEyODY4MSwgMzE5LCAxMTg4NDcsIDQzNDc5LCA5NDc3LCAKLSAgICAwLCAwLCA1MDg3LCA5MjMyNSwgNzY0MCwgOTYsIDUwODYsIDAsIDkyMzc5LCAwLCA1MDg1LCA2NDI4NiwgOTI2NjUsIDAsIAotICAgIDQxNDIyLCAwLCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAwLCAwLCA1MDExLCAwLCAwLCAwLCAwLCAxMjcxNjUsIDEyNzI0MSwgCi0gICAgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMCwgMTE4OTIzLCA3MzczNCwgMCwgMTA5MzksIAotICAgIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCAxMTk5MDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDAsIDY1NTc0LCAwLCA5MjI0LCAKLSAgICAwLCAzNjcxLCA4OTc2LCAwLCAwLCA0MTI3NSwgNjM3MiwgMTI4MDg0LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCAwLCAKLSAgICA0MTI3MywgMCwgMCwgNjcyOCwgMCwgOTcxNSwgMCwgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAxMTg5MTksIDQyLCAKLSAgICAwLCA0MzY4OCwgMCwgMCwgNzQ1OCwgMCwgMCwgNjUzODUsIDExOTkwMCwgMCwgMTE5NTgsIDAsIDkxNzgyMiwgMCwgNjI1NCwgCi0gICAgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMCwgMCwgMCwgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIAotICAgIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCA1NTU4LCA4ODc4LCAxMjgxMzYsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIAotICAgIDkwODYsIDY0NTY2LCAwLCA2NDU4NCwgNzQzNywgNzQ1NCwgMTI1OTQsIDEyODY5MCwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIAotICAgIDExOTkwOSwgNzQyNDMsIDAsIDM4MDUsIDAsIDE5NDU2NSwgNDQwMDEsIDQxMDA4LCAwLCA2MzA3LCAxOTk0OSwgMCwgNzU0NCwgCi0gICAgMCwgNDM0NjksIDAsIDAsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDExOTExMywgNzYwMiwgNjQ3MjksIDAsIDQzNTIxLCAwLCAKLSAgICA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgMCwgODcwNCwgMjM5NywgNTU1NiwgMCwgMCwgMCwgOTAxMSwgCi0gICAgOTYzMCwgOTI2MzMsIDAsIDAsIDU1MDYsIDAsIDE5MTEsIDY2NjUyLCAwLCA5OTYxLCA4ODQ1LCA2NjY5OCwgMCwgMTA3OTIsIAotICAgIDg4ODksIDAsIDIwOTgsIDAsIDY0NzUxLCAwLCA2NjYyMiwgMCwgMCwgNzQzNjQsIDAsIDAsIDAsIDc0MzY1LCA3NTUyLCAwLCAKLSAgICAwLCA2NTM4NCwgNzIyMywgNDU1OSwgMCwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA2NDUwMSwgMTIxMCwgMTk1MDc3LCAKLSAgICA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgMCwgMCwgMzgsIDg1MzMsIDY2NjY5LCAxMTkxMjQsIDAsIDAsIDAsIAotICAgIDQzNTcsIDAsIDExOTgzNywgMCwgNzQyMzMsIDk5NjcsIDExOTg1MiwgNDI4NjAsIDExOTgzOCwgMTA5NDEsIDY1NzIxLCAKLSAgICA2OTYyLCAwLCAwLCAxMTkzMjQsIDAsIDExMDE0LCAxMjc5NzIsIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgCi0gICAgMTE5NzQsIDkyMjEzLCA0Mjc3MiwgMTI3NTE4LCAxMTY1MCwgNTAxMywgOTI2NjMsIDEyODY3NywgNjYyMTAsIDExODkxNCwgCi0gICAgNjYxMywgOTI0NzYsIDAsIDQzODE5LCAwLCAwLCA2NDcxNCwgMCwgMCwgMTIxNjIsIDEyMTIwLCA0MzQ3NiwgMCwgMTEwMjQsIAotICAgIDc0ODExLCA2NjIyOCwgMTA1NjMsIDAsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIDAsIDE4MzcsIDAsIDYzOTcyLCA2OTU3LCAwLCAKLSAgICAxMjA1NTksIDQ5NTIsIDY1NzE4LCA2NTgyNywgNTUwNCwgNjU3MjAsIDY1NzE0LCA2NTcxNSwgNjU3MTYsIDAsIDEyNzAwNSwgCi0gICAgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDAsIDgxMDcsIDExOTIzNCwgMTEyNywgNDU1LCAwLCA2Mzk2OCwgMTI3OTI0LCAKLSAgICAzNDgzLCAxMTk1OTMsIDE5ODksIDAsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgOTI1MDksIDY2OTQsIDQyNjMzLCAKLSAgICAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDAsIDc0MDY0LCAwLCAxMDUyMSwgMCwgNDIxNzMsIDk3MDUsIAotICAgIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgCi0gICAgMTI3ODYyLCAxNDAzLCAxMjg4MzksIDEzNDcsIDk2MzEsIDc0NDQ0LCAwLCAwLCAwLCAwLCA4NjQwLCAwLCAyNTgsIDE2NTQsIAotICAgIDAsIDAsIDAsIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgCi0gICAgMTA4NjEsIDAsIDYzOTc2LCAwLCA2ODYyMywgMCwgNzQ1ODUsIDQxMzkxLCAwLCA5MTc5MDMsIDM3NiwgNjk4NywgOTIyMSwgCi0gICAgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIDQxODY5LCAxMjYxOSwgMCwgMTAxNTQsIDAsIDc0NDM5LCAyMDM5LCAKLSAgICAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgMTIwNjIwLCAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIAotICAgIDAsIDY5NjcxLCA0MjExNSwgMCwgMTIyODgsIDc4MDU3LCAwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAKLSAgICAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCAwLCAwLCAwLCA4Nzk0LCA0MTI3OCwgCi0gICAgNDE2MjksIDEyMTU0LCAxMjgxOTIsIDQxMjc3LCA2NDY1OCwgMCwgNjQzODAsIDY2MjUsIDc0MzU0LCAxOTkwNCwgMCwgMCwgCi0gICAgMCwgNjUzNzEsIDcwNzgsIDAsIDgzMywgMCwgNjM2OSwgMCwgMTA5NzksIDQxOTUzLCAwLCA0MTQzNCwgNjA2MiwgMCwgMCwgCi0gICAgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIDAsIDAsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIAotICAgIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIDAsIDQxNjIyLCAwLCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAKLSAgICAxOTk1NCwgOTgwNSwgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMCwgMCwgMzYxMiwgMCwgNjQzNzYsIDAsIDUzODksIDkyNTk3LCAKLSAgICAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDAsIDAsIDY5NTYsIAotICAgIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgMCwgOTE3NTY2LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgCi0gICAgNzU5OCwgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCAwLCAKLSAgICA2Mzk1MiwgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIDExODg5NCwgMCwgNjk3OTYsIDQxMTgzLCAxMjkwNywgMTAyNzEsIAotICAgIDEwMjg3LCA2ODQsIDQzNTI1LCAwLCAyODU0LCAxMTk1ODYsIDQ1OTIsIDY1NzU1LCAwLCA5MjI1NiwgMTE5NjMsIDQzNjIwLCAKLSAgICAwLCA3ODg4OSwgMCwgMCwgMTI4ODA5LCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDAsIDAsIDg2NDgsIDAsIDY3NDEsIAotICAgIDQzMDQ3LCAwLCAxMzE4MCwgMTI4NTE3LCA0MTgsIDkxNzk3MiwgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIDQxNzUyLCAKLSAgICA3NDMzOSwgODY0MSwgNDE0NDksIDAsIDc0MTAwLCAwLCAxMDkxMSwgNjk0MiwgMCwgMTAyNCwgNDI4NDksIDQxNzUxLCAKLSAgICA2OTc3NiwgODk0MSwgMCwgNDU1NCwgMCwgOTAyMywgMTE2ODUsIDAsIDk5MjgsIDc4NjE3LCAwLCAxMTQzNywgNDM3NDEsIAotICAgIDkyMTYzLCAxMjA3MDAsIDYzOTY3LCAwLCA0MTIwNiwgMTIwNzI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDAsIDExNjgwLCAKLSAgICA5MjYxOSwgMTE2ODYsIDc4NTQ0LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAwLCA5MjE4MywgNjQ1MjMsIDEwMzQzLCAKLSAgICAxMDQwNywgMCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCAwLCAxMjA1MCwgNjgyMDEsIDI4NjAsIDAsIDAsIDAsIAotICAgIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAwLCA5MjM0MiwgMCwgODg3NSwgMCwgMCwgOTE3OTkxLCA3NTMxLCAKLSAgICAxMjg0NywgMjQxMywgMCwgNzg2MzUsIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMCwgMTU4MiwgMCwgNTUwOCwgMCwgCi0gICAgMCwgMCwgMTA4MDEsIDAsIDkyMzU0LCAwLCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIDAsIAotICAgIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIDg0MDYsIDExNTMsIAotICAgIDkyMTczLCA2NDc4OCwgMCwgODA1NCwgOTE3NCwgMTI4NjUyLCA5MTc5NzYsIDk5NjQsIDAsIDQxNjExLCA0NjQyLCA2NjU3NCwgCi0gICAgMTE1NTYsIDkxNzk4MiwgMCwgNzg4NTcsIDQyMDg5LCA3ODg1NSwgOTAwOCwgMCwgMCwgMTk1MDk2LCA0MjA3OSwgOTE3OTgxLCAKLSAgICA3NzkyNCwgNDI1MTMsIDAsIDQyODQyLCA3Mzk4NSwgNjUyODUsIDExODk3NCwgMTI3MDAzLCAwLCAwLCAwLCAwLCAxMTMzNSwgCi0gICAgNjQwNjksIDQyMDkzLCAzOTIwLCAwLCAwLCAwLCAwLCA0NTgwLCA0MTk2NywgMCwgNjQzODQsIDkyMTY3LCAxMTkxNTgsIAotICAgIDMwMjEsIDQyMDA0LCAwLCAwLCA0MjMxNywgNDE5OTgsIDAsIDY5NDYsIDAsIDAsIDAsIDEyODE5MywgNjUyMDQsIDAsIAotICAgIDY4MTEzLCA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAxMjc4ODAsIDY4Mzk5LCAKLSAgICA0Mzk5OCwgMTEzNjAsIDAsIDAsIDAsIDExODgyNiwgNDIxNDksIDAsIDAsIDAsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAKLSAgICAxMjgwNzcsIDAsIDU1MjQ3LCA0MTEwLCA2NjAwNSwgNjk1OSwgMTA5MjksIDExOTExMCwgMCwgNjY3MDMsIDc3OTIxLCAKLSAgICA4NjE3LCA0MTk4MiwgNjAyNSwgNjkyNDIsIDAsIDAsIDAsIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgMCwgMTAxMTcsIDAsIAorICAgIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgMTc4NiwgNjYxLCAwLCAwLCAwLCA3NDQyMywgNzEzNDUsIDU4NiwgCisgICAgNzQ0MTQsIDY0MzU5LCAxMjY3LCAxMjgyNjksIDY1NDY4LCAwLCA2NTczMSwgMCwgMTI3MTc5LCAzNjIxLCAxMjA0NzMsIAorICAgIDY2NjY2LCA2NDIxMSwgMCwgNjU2MiwgMTI5MjgsIDAsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMCwgMCwgMTcxNCwgCisgICAgNzQ0MDYsIDEyNzgzMSwgMCwgOTgzOTEyLCAwLCA2NjIyNSwgMCwgMCwgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAKKyAgICAwLCAxMDI5MSwgMTAzMjMsIDI4MjYsIDAsIDAsIDAsIDQyMDA4LCA5NzA4LCA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCAKKyAgICA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAwLCA5ODM5NjAsIDY1ODMzLCA3Nzg0OCwgMCwgCisgICAgMTc2NSwgMCwgMCwgNjU1ODgsIDAsIDAsIDAsIDg0MDEsIDAsIDQyMDE0LCAwLCA3MDMwLCAxOTQ3MDQsIDEwNDc5LCAKKyAgICA2NDk1OSwgMjg1MiwgMCwgMCwgMCwgMCwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDAsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIAorICAgIDEwMTQ3LCAxMjkzNSwgMTI3NTY4LCAxMjY0ODMsIDAsIDAsIDAsIDc4NzU3LCAwLCAwLCAwLCAwLCA5OTk0LCAxMjQ2NywgCisgICAgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIDcwODQsIDI3NjUsIDAsIDQzMzgyLCAwLCAxMjA3MTksIAorICAgIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMCwgMCwgNzc5ODgsIDI2MywgCisgICAgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODcsIDk4MzczMywgNzc5ODYsIDAsIDY5MzEsIDY5NzIyLCA2NDM1NSwgCisgICAgNzE3NywgNzAxMDUsIDAsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIDEyNjU3NSwgNjgwNiwgNjk5MiwgCisgICAgNDIwMTksIDAsIDQxMjkwLCA5ODM3MDcsIDc1MCwgMCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgNzEzMDAsIDcwMzIsIDU5NTQsIAorICAgIDY0OTMxLCA0MzE0LCAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIDc3OTkzLCA3ODg5MSwgMTMxNjUsIAorICAgIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI4Nzg0LCA0MTM3OCwgMTEwMDgsIDY5MzgsIDcwMDI2LCAKKyAgICA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgMCwgMCwgMCwgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgCisgICAgNDE0NzAsIDY0ODA1LCAwLCAwLCAxMjgyMTUsIDY0ODAxLCAwLCA0OTcsIDEyMTAwLCA1OTUzLCA5MjY2NywgNzc5NiwgCisgICAgNjk2NjksIDQzMjU0LCA3MzgzMSwgMCwgMTAyOTMsIDU5NTIsIDEyODEsIDQzNzQ3LCAwLCAwLCAxMDY3NywgNjA0LCAKKyAgICA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIDM0MjUsIDEyNzQ4OCwgMCwgMjgzNiwgMCwgMCwgOTcwNywgMCwgNDMyMDIsIAorICAgIDAsIDAsIDY1MTk5LCAxNzM4LCA5MTc4MTgsIDEyODE1OCwgMjgzMiwgOTI3MDIsIDk2NzAsIDEyOTM3LCAwLCA2NjM3NCwgCisgICAgOTE3OTU2LCAwLCAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDk4MzcxNCwgNzM3NTIsIDAsIDY0ODcyLCA5MjM0MCwgCisgICAgMTMzMSwgMCwgMCwgMCwgMTI3MDgsIDAsIDUwOTAsIDUwODksIDEyNzk3NywgMCwgMTE5MTA5LCAwLCAxMjg2ODEsIDMxOSwgCisgICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMCwgNTA4NywgOTIzMjUsIDc2NDAsIDk2LCA1MDg2LCAwLCA5MjM3OSwgMCwgCisgICAgNTA4NSwgNjQyODYsIDkyNjY1LCAwLCA0MTQyMiwgMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMCwgMCwgNTAxMSwgMCwgMCwgCisgICAgMTI2NTg3LCAwLCAxMjcxNjUsIDEyNzI0MSwgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMCwgCisgICAgMTE4OTIzLCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCA3MTM0MywgNDUzNCwgNDEyNzAsIAorICAgIDEyODg3NiwgMCwgNjU1NzQsIDAsIDkyMjQsIDY5ODUzLCAzNjcxLCA4OTc2LCAxMjY0NzQsIDAsIDQxMjc1LCA2MzcyLCAKKyAgICAxMjgwODQsIDU1MjYxLCA3OTYzLCA2MzcxLCAwLCA1NjgsIDAsIDQxMjczLCA5ODM3MjEsIDAsIDY3MjgsIDAsIDk3MTUsIDAsIAorICAgIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgMTE4OTE5LCA0MiwgMCwgNDM2ODgsIDAsIDAsIDc0NTgsIDAsIDAsIAorICAgIDY1Mzg1LCAxMTk5MDAsIDAsIDExOTU4LCAwLCA5MTc4MjIsIDAsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIAorICAgIDAsIDAsIDk4MzU5NywgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKKyAgICA1NTU4LCA4ODc4LCAxMjgxMzYsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIDkwODYsIDY0NTY2LCAwLCA2NDU4NCwgCisgICAgNzQzNywgNzQ1NCwgMTI1OTQsIDEyODY5MCwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgMCwgMzgwNSwgCisgICAgMCwgMTk0NTY1LCA0NDAwMSwgNDEwMDgsIDAsIDYzMDcsIDE5OTQ5LCA5ODM3ODEsIDc1NDQsIDk4MzA0NSwgNDM0NjksIDAsIAorICAgIDAsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDExOTExMywgNzYwMiwgNjQ3MjksIDAsIDQzNTIxLCAwLCA0MjMwMiwgNDM3MTEsIAorICAgIDQzNTIzLCA0MTQ0NywgNTU1OSwgMCwgODcwNCwgMjM5NywgNTU1NiwgMCwgMCwgMCwgOTAxMSwgOTYzMCwgOTI2MzMsIDAsIAorICAgIDkzOTk4LCA1NTA2LCAwLCAxOTExLCA2NjY1MiwgMCwgOTk2MSwgODg0NSwgNjY2OTgsIDAsIDEwNzkyLCA4ODg5LCAwLCAKKyAgICAyMDk4LCAwLCA2NDc1MSwgMCwgNjY2MjIsIDAsIDAsIDc0MzY0LCAwLCAwLCA5ODM3OTYsIDc0MzY1LCA3NTUyLCAwLCAwLCAKKyAgICA2NTM4NCwgNzIyMywgNDU1OSwgMCwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA2NDUwMSwgMTIxMCwgMTk1MDc3LCAKKyAgICA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgMCwgMCwgMzgsIDg1MzMsIDY2NjY5LCAxMTkxMjQsIDk4MzI4NSwgCisgICAgOTgzNzgzLCAwLCA0MzU3LCAwLCAxMTk4MzcsIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCA0Mjg2MCwgMTE5ODM4LCAKKyAgICAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDAsIDExOTMyNCwgMCwgMTEwMTQsIDEyNzk3MiwgODk0MiwgMTIwMDAsIDY5MjI0LCAKKyAgICA5MjI2NywgMTI4NTM2LCAxMTk3NCwgOTIyMTMsIDQyNzcyLCAxMjc1MTgsIDExNjUwLCA1MDEzLCA5MjY2MywgMTI2NTgzLCAKKyAgICA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgNDM4MTksIDk4Mzc2MSwgMCwgNjQ3MTQsIDAsIDAsIDEyMTYyLCAKKyAgICAxMjEyMCwgNDM0NzYsIDk4Mzc1NywgMTEwMjQsIDc0ODExLCA2NjIyOCwgMTA1NjMsIDAsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIAorICAgIDAsIDE4MzcsIDAsIDYzOTcyLCA2OTU3LCAwLCAxMjA1NTksIDQ5NTIsIDY1NzE4LCA2NTgyNywgNTUwNCwgNjU3MjAsIAorICAgIDY1NzE0LCA2NTcxNSwgNjU3MTYsIDAsIDEyNzAwNSwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDAsIDgxMDcsIAorICAgIDExOTIzNCwgMTEyNywgNDU1LCAwLCA2Mzk2OCwgMTI3OTI0LCAzNDgzLCAxMTk1OTMsIDE5ODksIDAsIDY5Njc4LCA5MTA0LCAKKyAgICAzNTAzLCA2NTM3NSwgOTI1MDksIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDAsIAorICAgIDc0MDY0LCAwLCAxMDUyMSwgMCwgNDIxNzMsIDk3MDUsIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIAorICAgIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgMTI3ODYyLCAxNDAzLCAxMjg4MzksIDEzNDcsIDk2MzEsIAorICAgIDc0NDQ0LCAwLCAwLCAwLCAwLCA4NjQwLCAwLCAyNTgsIDE2NTQsIDAsIDAsIDAsIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgCisgICAgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgMTA4NjEsIDAsIDYzOTc2LCAwLCA2ODYyMywgMCwgNzQ1ODUsIAorICAgIDQxMzkxLCAwLCA5MTc5MDMsIDM3NiwgNjk4NywgOTIyMSwgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIAorICAgIDQxODY5LCAxMjYxOSwgMCwgMTAxNTQsIDk4MzA0MywgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgCisgICAgNDU4LCAxMjA2MjAsIDAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCA5ODMxMzMsIAorICAgIDEyMjg4LCA3ODA1NywgMCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCAKKyAgICA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgMCwgOTgzNDIzLCAwLCA4Nzk0LCA0MTI3OCwgNDE2MjksIDEyMTU0LCAxMjgxOTIsIAorICAgIDQxMjc3LCA2NDY1OCwgMCwgNjQzODAsIDY2MjUsIDc0MzU0LCAxOTkwNCwgMCwgMCwgMCwgNjUzNzEsIDcwNzgsIDAsIDgzMywgCisgICAgMCwgNjM2OSwgMCwgMTA5NzksIDQxOTUzLCAwLCA0MTQzNCwgNjA2MiwgMCwgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgCisgICAgOTg0MiwgNjcyMCwgNjU3NDQsIDAsIDk4MzU5MiwgMTI4Mjk1LCAwLCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCAKKyAgICA3NDkzLCA1NTI5MCwgMCwgNDE2MjIsIDAsIDAsIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCAKKyAgICA1OTkwLCA5MDAsIDAsIDYzOTU3LCAwLCAwLCAzNjEyLCAwLCA2NDM3NiwgOTM5ODcsIDUzODksIDkyNTk3LCAwLCA2NTkzOCwgCisgICAgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDAsIDAsIDY5NTYsIDQ0MDMsIAorICAgIDE5OTYyLCA2NTU1OSwgMzI5OSwgMCwgOTE3NTY2LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgCisgICAgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCAwLCA2Mzk1MiwgCisgICAgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIDExODg5NCwgMCwgNjk3OTYsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCAKKyAgICA2ODQsIDQzNTI1LCAwLCAyODU0LCAxMTk1ODYsIDQ1OTIsIDY1NzU1LCAwLCA5MjI1NiwgMTE5NjMsIDQzNjIwLCAwLCAKKyAgICA3ODI0OSwgMCwgMTI4NTUxLCAxMjg4MDksIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgMTE5MTMxLCAwLCA4NjQ4LCAwLCAKKyAgICA2NzQxLCA0MzA0NywgMCwgMTMxODAsIDEyODUxNywgNDE4LCA5MTc5NzIsIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCAKKyAgICA0MTc1MiwgNzQzMzksIDg2NDEsIDQxNDQ5LCAwLCA3NDEwMCwgMCwgMTA5MTEsIDY5NDIsIDAsIDEwMjQsIDQyODQ5LCAKKyAgICA0MTc1MSwgNjk3NzYsIDg5NDEsIDk4MzU1NiwgNDU1NCwgMCwgOTAyMywgMTE2ODUsIDAsIDk5MjgsIDc4NjE3LCAwLCAKKyAgICAxMTQzNywgNDM3NDEsIDkyMTYzLCAxMjA3MDAsIDYzOTY3LCA5ODM0NzUsIDQxMjA2LCAxMjA3MjQsIDkwNDksIDQxMTg1LCAKKyAgICA0MzE2NiwgMCwgMTE2ODAsIDkyNjE5LCAxMTY4NiwgNzg1NDQsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDAsIAorICAgIDkyMTgzLCA2NDUyMywgMTAzNDMsIDEwNDA3LCAwLCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDc0MDEzLCAKKyAgICAxMjA1MCwgNjgyMDEsIDI4NjAsIDAsIDAsIDAsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAwLCA5MjM0MiwgCisgICAgMCwgODg3NSwgMCwgMCwgOTE3OTkxLCA3NTMxLCAxMjg0NywgMjQxMywgMCwgNzg2MzUsIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCAKKyAgICA0MjU2NCwgMCwgMTU4MiwgOTgzNzA2LCA1NTA4LCAwLCAwLCAwLCAxMDgwMSwgNjk4NzYsIDkyMzU0LCAwLCA3MTczLCA0OTYsIAorICAgIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIDAsIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgCisgICAgNzk4LCA2NDY5NCwgMTI4MDEsIDg0MDYsIDExNTMsIDkyMTczLCA2NDc4OCwgMCwgODA1NCwgOTE3NCwgMTI4NjUyLCAKKyAgICA5MTc5NzYsIDk5NjQsIDc0NDA5LCA0MTYxMSwgNDY0MiwgNjY1NzQsIDExNTU2LCA5MTc5ODIsIDAsIDc4ODU3LCA0MjA4OSwgCisgICAgNzg4NTUsIDkwMDgsIDAsIDEyNjU5MiwgMTk1MDk2LCA0MjA3OSwgOTE3OTgxLCA3NzkyNCwgNDI1MTMsIDc3OTI3LCAKKyAgICA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAxMTg5NzQsIDEyNzAwMywgOTgzNjkzLCAwLCAwLCAwLCAxMTMzNSwgNjQwNjksIAorICAgIDQyMDkzLCAzOTIwLCAwLCAwLCAwLCAwLCA0NTgwLCA0MTk2NywgOTgzNzIzLCA2NDM4NCwgOTIxNjcsIDkzOTg0LCAzMDIxLCAKKyAgICA0MjAwNCwgMCwgMCwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAwLCAwLCAwLCAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgCisgICAgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgMTI3ODgwLCA2ODM5OSwgNDM5OTgsIAorICAgIDExMzYwLCAwLCAwLCAwLCAxMTg4MjYsIDQyMTQ5LCAwLCAwLCAwLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCAwLCAKKyAgICA1NTI0NywgNDExMCwgNjYwMDUsIDY5NTksIDEwOTI5LCAxMTkxMTAsIDAsIDY2NzAzLCA3NzkyMSwgODYxNywgNDE5ODIsIAorICAgIDYwMjUsIDY5MjQyLCA5ODMxNzYsIDAsIDAsIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzY4LCAxMDExNywgOTgzMTY5LCAKICAgICA5MjI5NywgNDE2MzYsIDAsIDAsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAwLCA2NTY2OSwgMTI4MzM5LCA0OTYzLCAwLCAKLSAgICAxMjc1MTcsIDAsIDg5NjQsIDY1Njc2LCA2NTc4NSwgMCwgNDE5NDgsIDAsIDAsIDAsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgCi0gICAgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjgyMTAsIDQxNzY2LCAwLCA2NTg4MiwgNzg4NDksIDQxNzYwLCAKLSAgICAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCAKLSAgICA3ODg4LCAwLCAzOTgwLCAwLCA0MjY1NiwgNDE1MDcsIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgNzg2NywgCi0gICAgNjkyMTgsIDYyMzYsIDAsIDAsIDEwNTA1LCAwLCAxMjg1MSwgMTE4OTQ4LCAzNDgsIDU0NzQsIDEyODg0MywgMzEwMywgMCwgCi0gICAgNDE3NTMsIDEyODU0MCwgMCwgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIAotICAgIDQzMzQ3LCA0MjU2MCwgNTM5MSwgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA3NDM2MCwgMjY5MSwgMCwgCi0gICAgNjU1NTMsIDc5MzMsIDU1NjIsIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIDAsIAotICAgIDAsIDM5NzksIDAsIDAsIDc0ODEzLCAwLCAwLCAwLCAwLCA5MjUyNCwgNDEyNjYsIDAsIDAsIDEyODgzNiwgMTA1ODUsIAotICAgIDY1NzQxLCA0MTczNywgOTU3NCwgMjY2NiwgMCwgNDE3MzgsIDgzMSwgNDE5LCAxMzEyNiwgMTA3MTYsIDAsIDQyODIyLCAwLCAKLSAgICA2NDM0LCAwLCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIDAsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCAKLSAgICA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgMCwgNDQ5NywgMzc1NCwgMTI3MDU2LCAKLSAgICAxMjA0MjQsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAxNTk1LCA0MTYxNSwgMCwgMCwgNzQyNjAsIDAsIDQyODU0LCAKLSAgICA0MzIxOSwgMTI4NzA5LCAwLCAxMjE4NSwgMTI4ODc5LCAwLCA2ODM1NSwgNjgzNTcsIDAsIDQyODU2LCA4NjM0LCAwLCAwLCAKLSAgICA0MjA5LCAxMjA3MDIsIDAsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIDEyNzU0MywgNjY5LCA1Njc5LCAwLCA2OTc4NiwgOTI1NDAsIAotICAgIDAsIDAsIDU2NzgsIDExODIxLCAwLCA2NzExLCA0NjAsIDAsIDAsIDAsIDAsIDEyMDc0NywgMCwgMCwgNzgwNTAsIDExOTAyMiwgCi0gICAgMCwgMCwgMCwgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIAotICAgIDEyODA3OSwgNTc5MiwgMCwgMCwgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCAwLCA1NjgzLCAwLCAwLCA3ODExOSwgMTU0OSwgMCwgCi0gICAgMCwgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgOTE3NTY4LCAxMDAwMSwgMCwgNjk3NjgsIDE0NDksIAotICAgIDEwMjQxLCA3ODI5MCwgMTI4MjI4LCAwLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCAxMjg1NDgsIDg1ODQsIDAsIDU1NjcsIAotICAgIDI3MTcsIDAsIDAsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIDAsIDEyODAyNiwgMCwgNjU3MDgsIDY1NzA5LCAKLSAgICA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgCisgICAgMTI3NTE3LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgMCwgNDE5NDgsIDAsIDAsIDAsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgCisgICAgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjgyMTAsIDQxNzY2LCAxMTkxMTQsIDY1ODgyLCA3ODg0OSwgCisgICAgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgCisgICAgNzM4MzUsIDc4ODgsIDAsIDM5ODAsIDAsIDQyNjU2LCA0MTUwNywgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCAKKyAgICA3ODY3LCA2OTIxOCwgNjIzNiwgOTgzMTM0LCAwLCAxMDUwNSwgMCwgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIAorICAgIDMxMDMsIDAsIDQxNzUzLCAxMjg1NDAsIDAsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIAorICAgIDQxNzU2LCA0MzM0NywgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIAorICAgIDI2OTEsIDAsIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIAorICAgIDQxMjUxLCAwLCAwLCAzOTc5LCAwLCAwLCA3NDgxMywgOTgzNzMwLCAwLCAwLCAwLCA5MjUyNCwgNDEyNjYsIDAsIDY2NTY2LCAKKyAgICAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIAorICAgIDEwNzE2LCAwLCA0MjgyMiwgMCwgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCA2OTkzMiwgOTE2LCA3NjksIAorICAgIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAKKyAgICAxMjY1MzcsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIAorICAgIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgNDMyMTksIDEyODcwOSwgOTgzNDUyLCAxMjE4NSwgMTI4ODc5LCA3MDA3MiwgCisgICAgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgOTgzMzg5LCA0MjA5LCAxMjA3MDIsIDAsIDY1ODc5LCA0MTUzOCwgCisgICAgNjU2MTIsIDEyNzU0MywgNjY5LCA1Njc5LCAwLCA2OTc4NiwgOTI1NDAsIDAsIDk4MzQ1NiwgNTY3OCwgMTE4MjEsIDAsIAorICAgIDY3MTEsIDQ2MCwgMCwgMCwgOTgzNDUzLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIDAsIDk4MzQ1NCwgMCwgCisgICAgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyODA3OSwgCisgICAgNTc5MiwgMCwgMCwgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCAwLCA1NjgzLCA5ODMzODQsIDAsIDc4MTE5LCAxNTQ5LCAwLCAwLCAKKyAgICAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDEyODUxMiwgNjk3NjgsIDE0NDksIAorICAgIDEwMjQxLCA3ODI5MCwgMTI4MjI4LCAwLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCAxMjg1NDgsIDg1ODQsIDY4MDMwLCA1NTY3LCAKKyAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5ODMyNDgsIDEyODAyNiwgMCwgNjU3MDgsIAorICAgIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgCiAgICAgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDAsIDY2NTk4LCAwLCA2NDY2NCwgMTA2NDcsIAotICAgIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCA0MzAwNiwgMCwgODgwMiwgNzg3MTAsIAorICAgIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCA0MzAwNiwgMTE5OTAzLCA4ODAyLCA3ODcxMCwgCiAgICAgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCAKICAgICA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgNzg3MjUsIDc4NzIyLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAwLCAKLSAgICA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAwLCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDAsIDcyNTYsIDAsIDAsIDE2NjcsIAotICAgIDQyMTYxLCAwLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgMzYxMCwgMCwgCi0gICAgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgMTA4NzUsIAotICAgIDEyODY2MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDkxNzk1NCwgMCwgMzg3NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjU2MDMsIDAsIDY1Njg3LCAwLCA0MTAzOCwgNzQwMDksIDExOTU3MCwgNDIyMzksIDg1MzYsIAotICAgIDc4NzQwLCAwLCA3ODcyNiwgNzQ0MzIsIDcyNCwgMCwgMTQ1NSwgNzg3NDksIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIAotICAgIDQxNzUsIDc4NzQxLCA0MzYxNCwgNjk4MDEsIDkzOSwgMCwgNDM1MjAsIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3ODc2MywgCi0gICAgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAxOTAsIDAsIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgCi0gICAgMCwgNDQxNywgMCwgOTIyNjEsIDYzNzAsIDAsIDc4MjcsIDY4NDQxLCA2OTY1LCAwLCAwLCAxMzIwMSwgMTI4MjA1LCAwLCAwLCAKLSAgICA3NDM4MiwgNzM3ODEsIDc5MTgsIDczOTg4LCAwLCAwLCA5MTc4ODQsIDE3MjgsIDAsIDEyMDcxMCwgMTc4LCAxMjk3MiwgCi0gICAgOTI2NzksIDAsIDkxNzg4NywgOTI1NjMsIDAsIDAsIDc4MzI3LCAxMjA0MDUsIDY1NjkwLCAwLCAwLCAxMTkwNTQsIDAsIAotICAgIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIDAsIDAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMCwgMTE3NjMsIDAsIAotICAgIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIDAsIDAsIDgzMzMsIDAsIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgCi0gICAgOTIzMjAsIDc0MDgwLCAwLCAwLCAxMTkxMCwgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgMCwgNjUzNDQsIAotICAgIDEyMDUxNywgNDE3NDcsIDAsIDAsIDg2NzcsIDAsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgCi0gICAgMTI3NDcsIDgzMDAsIDAsIDAsIDc0OTEsIDg4NTYsIDEyODA2NCwgMCwgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCA2NTM4OSwgCi0gICAgMTIwNDAyLCAxMjA0MDMsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDEyMDI0NCwgNjUzNiwgMTIwMjM4LCAKLSAgICAxMjAyMzksIDY1NTE2LCAxMjMyMSwgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAxMDAwNywgMTIwMjQ2LCA5NTg4LCAxMjAyNDgsIAotICAgIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMjg4MDgsIDAsIDY2NTcyLCAwLCAwLCAxMDYxMywgNjY5NywgMTI4MDUsIAotICAgIDQxOTI4LCA0MDk4MSwgNzg0MDMsIDc4NDA5LCA1MDA2LCA2NDMyOCwgMCwgOTkzMSwgMCwgODgyNSwgNzQ1NTUsIDY1OTQwLCAKLSAgICA0MzI1OSwgMCwgNjEwNywgMCwgMTE5MTc3LCAwLCA3ODQwMSwgMTI4NjQxLCAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCAKLSAgICA0MzgsIDQ1MTAsIDU3NjUsIDg3MjEsIDEyMDIzMywgMTE5MjI3LCA2MDkyLCAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgCi0gICAgODA5NiwgMTAyODQsIDEyODUxNSwgMCwgMCwgMTAzODAsIDg3MzMsIDAsIDEyODI0MCwgNDE2MDIsIDAsIDkyMzA4LCAKLSAgICA3NDgzMSwgOTE3OTAxLCAwLCA3Mzc0NywgNjUzOTksIDAsIDY0NTkxLCA0MjQwNSwgMCwgMTIwODIwLCA4NDMsIDExNTQxLCAKLSAgICAwLCA5MTc4OTgsIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDAsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgCi0gICAgMTk1MywgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDAsIDQxMjU3LCA0MTkwMCwgODY3NSwgCi0gICAgMTA3MDAsIDg4MDUsIDE3NDIsIDAsIDkzMzMsIDgyMDIsIDEyNzc1MCwgMCwgMCwgMCwgMCwgNzM4ODIsIDQ5OSwgMCwgCi0gICAgNDM0NjcsIDAsIDQzODE4LCAwLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDAsIDAsIDExOTY3LCAxNzc1LCAwLCAwLCAwLCAKLSAgICAwLCAxMjgwMDksIDk0NTgsIDAsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDAsIDAsIDQyNzgyLCAwLCAwLCAwLCAKLSAgICAxMjgzMDksIDc0Nzc3LCAxMjA2NjksIDk0MTQsIDEyMDM4MiwgNzM3ODIsIDczOTY5LCA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIAotICAgIDI2NjIsIDQyMjkyLCAwLCA4MjU0LCAwLCAxMDk3NSwgMCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgCi0gICAgNzQyNDcsIDAsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDAsIDQzMTQ5LCAwLCA2NTAzMSwgNzk2MSwgMTYzNiwgMCwgCi0gICAgNjUwMjksIDY1MDI0LCAwLCAxMjQ3MywgNjUzNCwgMCwgOTksIDk4LCA5NywgMTIwNTcxLCA2NzU4NCwgNDA0OSwgNzQxNjMsIAotICAgIDEyNzA2NSwgNzA5MCwgMCwgNzg5MiwgOTE3OTY5LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIDY2NTk5LCA2NjcyMiwgCi0gICAgMCwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAwLCAwLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgNTU5MywgCi0gICAgMTE5MTQ4LCAxMjA3MTEsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgMTI5OTgsIAotICAgIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgMTAxLCAKLSAgICAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDc3OTMxLCAxNTM2LCA2NDA5MywgCi0gICAgNzM5NzAsIDc3OTMwLCAxMjcxNTcsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgMTMyNjYsIAotICAgIDEyNzgxMywgMTI3MTExLCAwLCA3MzkyNiwgMCwgMTA2NDUsIDEyMTIsIDY1NDMsIDAsIDgxMzQsIDEyODAyOCwgMjkxMywgCi0gICAgNzM4NzAsIDEyNzExMywgMTg2NiwgMCwgMTk1MDk1LCAwLCA4OTIzLCAxNjQ1LCAxMjA1OSwgNjY1ODUsIDc4Nzg2LCAzMTk2LCAKLSAgICAwLCAwLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIAotICAgIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMCwgMTI4NzgxLCA0MTE2OSwgODkzOSwgCi0gICAgNDEyNDUsIDAsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDAsIDAsIDAsIDQxMTcyLCA3ODU1LCAwLCAwLCAKLSAgICAxMDQ4MCwgMCwgMCwgNzc5MzYsIDgyNjQsIDEyNjEwLCAwLCA2NDUsIDAsIDc2MDksIDQwOTczLCAwLCA3MzgzMywgNzgyNDksIAotICAgIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCA3Mzk4MiwgMTIwNTE4LCAwLCAxOTUwODYsIDQzMzY5LCAKLSAgICAwLCAxMjgxNDAsIDY4NDE1LCAwLCA0NTM4LCAxMjA0MDYsIDQzMTQxLCAwLCAwLCA3NDIxNCwgNzM4ODYsIDAsIDAsIAotICAgIDExODkwMiwgNDMwMDUsIDc4NDQ4LCA5NTUyLCAwLCAwLCAwLCAxMjk5NywgMCwgMCwgMCwgMCwgMjM4MSwgMTI4ODMsIAotICAgIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDAsIDAsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIDQxNDc4LCAKLSAgICA4NTgyLCAxMDA2NCwgNzM5MzAsIDAsIDAsIDAsIDY0ODk2LCAxMTkxNjIsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgCi0gICAgMTE1NzUsIDAsIDExOTU2NiwgMCwgMTI4MDgsIDEyMTgzLCA2MTQ1LCAxMTg5NTUsIDY0OTI5LCA5MjQzMywgMCwgMCwgCi0gICAgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCA5MTg3LCAwLCAwLCAxMDE5MSwgMTE5MDU3LCAxMTc1MiwgMzM1MywgOTM1OCwgMCwgCi0gICAgOTE3OTU3LCA2NjY4MCwgMTIwMDkwLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMCwgMCwgMTIwMDgyLCAKLSAgICAxMjAwODEsIDEyMDA4NCwgNDEwMjcsIDEyMDA4NiwgMCwgMTIwMDg4LCAxMjAwODcsIDcwMTksIDEyMDA3MywgMCwgMTE3NTEsIAotICAgIDEyMDA3OCwgNzgyOTQsIDY0NjU3LCA4NjU3LCAxMjAwNDgsIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIAotICAgIDEyMDA3MSwgMCwgMCwgNDMxNTQsIDQxMDI5LCAwLCAxMTMzMiwgNjUzODAsIDc3MjgsIDAsIDExMjk0LCAwLCA2NjY2NSwgCi0gICAgNzg1MSwgMCwgODM3NSwgODY5OSwgMCwgNDI1MjQsIDAsIDkwODUsIDAsIDc1MDQsIDkzMjcsIDYxNjAsIDEyODA5NSwgMCwgCi0gICAgMCwgODA4OCwgMCwgNzQwMTIsIDkyNTAwLCAwLCA0NDM5LCA2OTI2LCAwLCAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgMCwgCi0gICAgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgMCwgMCwgMCwgNjU4MjUsIDk1NzcsIAotICAgIDY4MTk5LCAwLCA2NDY3MCwgMCwgNzgwNTYsIDY3OTMsIDExMjk1LCAwLCA3ODA1MywgNzM4NzIsIDAsIDAsIDEwOTAyLCAwLCAKLSAgICAwLCA3ODA3MCwgNzgwNjgsIDEwNDcyLCAyOTk1LCAwLCAwLCA2NDY4MiwgMjM3MSwgNzgwNjksIDEyMDgwOCwgMjU5LCAKLSAgICAxMDA5LCA5MjE3MSwgMjQwMiwgMjMzMywgNjQ0MCwgMCwgMCwgNjUxMjUsIDQxMjQ0LCAwLCAxMzI3MSwgOTEwMywgNDExODAsIAotICAgIDAsIDAsIDAsIDAsIDEwMjE5LCAwLCAwLCAwLCAwLCA0MzE3OCwgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgCi0gICAgMCwgMTE4OTg5LCA2NzM2LCAxOTUwOTIsIDQxNDkyLCAxMjAwNSwgMTI3ODg5LCAwLCAxODkwLCAxMjAwNTYsIDAsIDAsIDAsIAotICAgIDcyOTMsIDc5OTEsIDAsIDEwNTc4LCAwLCA3ODA3NiwgMTk0NzM4LCA3ODA3NywgMCwgMCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgCi0gICAgNDI2NjgsIDY2MzUsIDAsIDYxNjQsIDY1MTcwLCAwLCAwLCA3Njc2LCAxMTY2NCwgMCwgMCwgNjk3MDcsIDAsIDExODgxMiwgCi0gICAgMCwgMCwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgNzgwNDUsIDkwODgsIDAsIDY0NTQ1LCAxMzk2LCAwLCA3NTQ2LCAzODQ3LCAwLCAKLSAgICAxMjc4MzUsIDQ5ODUsIDEzMjg4LCA2NzIsIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDAsIDEyODEyNiwgMCwgNzQwNDMsIAotICAgIDY1MDcyLCAxNTc3LCAxMTc3MiwgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDAsIAotICAgIDEyODU4NCwgMTI2MjIsIDAsIDAsIDAsIDE5NDcxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgCi0gICAgMTI2OTgzLCA0MjczMSwgOTIyMDUsIDAsIDAsIDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCAwLCAxMjA0MTEsIDMyNTAsIAotICAgIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCAwLCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAKLSAgICAzNTA1LCA4NzA3LCA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgOTE3OTcwLCA1NDc5LCA4ODIsIAotICAgIDY2ODYsIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDAsIDAsIDkyNjk2LCAwLCAwLCAwLCAxMjg1MjMsIDMyMjUsIAorICAgIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDAsIDcyNTYsIDAsIDAsIAorICAgIDE2NjcsIDQyMTYxLCAwLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgCisgICAgMzYxMCwgOTgzMTk5LCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAKKyAgICAxMDg3NSwgMTI4NjYyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgOTE3OTU0LCAwLCAKKyAgICAzODc0LCAwLCAwLCA5ODM2MTksIDEyMDMzMSwgMCwgMCwgNjU2MDMsIDAsIDY1Njg3LCAwLCA0MTAzOCwgNzQwMDksIAorICAgIDExOTU3MCwgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDAsIDE0NTUsIDc4NzQ5LCAKKyAgICA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDAsIDQzNTIwLCAKKyAgICA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzg3NjMsIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgCisgICAgMTkwLCAwLCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIDk4MzIxMSwgOTIyNjEsIDYzNzAsIDAsIDc4MjcsIAorICAgIDY4NDQxLCA2OTY1LCAwLCAwLCAxMzIwMSwgMTI4MjA1LCA2OTg5NiwgMCwgNzQzODIsIDczNzgxLCA3OTE4LCA3Mzk4OCwgMCwgCisgICAgMCwgOTE3ODg0LCAxNzI4LCAwLCA0Mzc2NCwgMTc4LCAxMjk3MiwgOTI2NzksIDAsIDkxNzg4NywgOTI1NjMsIDk4MzM3MywgCisgICAgMCwgNzgzMjcsIDEyMDQwNSwgNjU2OTAsIDAsIDAsIDExOTA1NCwgMCwgOTI1MiwgOTE3ODg5LCA0NjUyLCA2ODM3MSwgMCwgCisgICAgMCwgMCwgMTMwNjUsIDk5MjMsIDEwODA2LCAwLCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIAorICAgIDAsIDAsIDgzMzMsIDAsIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMDcsIDY5OTExLCAxMTkxMCwgCisgICAgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgMCwgNjUzNDQsIDEyMDUxNywgNDE3NDcsIDAsIDAsIDg2NzcsIDAsIAorICAgIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgMTI3NDcsIDgzMDAsIDk4Mzc0MSwgMCwgNzQ5MSwgCisgICAgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgCisgICAgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCAxMjAyNDQsIDY1MzYsIDEyMDIzOCwgMTIwMjM5LCA2NTUxNiwgMTIzMjEsIAorICAgIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgMTIwMjQ4LCAxNTk2LCAxMjAzODMsIDQxOTk0LCAKKyAgICA2NTgwMSwgMTI4ODA4LCAwLCA2NjU3MiwgMCwgMCwgMTA2MTMsIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDc4NDAzLCAKKyAgICA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIDc0NTU1LCA2NTk0MCwgNDMyNTksIDAsIDYxMDcsIDAsIAorICAgIDExOTE3NywgMCwgNzg0MDEsIDEyODY0MSwgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgNDM4LCA0NTEwLCA1NzY1LCAKKyAgICA4NzIxLCAxMjAyMzMsIDExOTIyNywgNjA5MiwgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAKKyAgICAxMjg1MTUsIDAsIDAsIDEwMzgwLCA4NzMzLCA5ODMwNzIsIDEyODI0MCwgNDE2MDIsIDAsIDkyMzA4LCA3NDgzMSwgCisgICAgOTE3OTAxLCAwLCA3Mzc0NywgNjUzOTksIDAsIDY0NTkxLCA0MjQwNSwgMCwgMTIwODIwLCA4NDMsIDExNTQxLCAwLCAKKyAgICA5MTc4OTgsIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDAsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgMTk1MywgCisgICAgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDk4MzEwMCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKKyAgICAxMDcwMCwgODgwNSwgMTc0MiwgMCwgOTMzMywgODIwMiwgMTI3NzUwLCAwLCA5ODMxOTcsIDAsIDAsIDczODgyLCA0OTksIAorICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCAwLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDk4MzEwNCwgMCwgMTE5NjcsIAorICAgIDE3NzUsIDAsIDAsIDAsIDAsIDEyODAwOSwgOTQ1OCwgMCwgNjQ3MCwgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMCwgMCwgCisgICAgNDI3ODIsIDAsIDAsIDAsIDEyODMwOSwgNzQ3NzcsIDEyMDY2OSwgOTQxNCwgMTIwMzgyLCA3Mzc4MiwgNzM5NjksIDU2NSwgCisgICAgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIDAsIDgyNTQsIDAsIDEwOTc1LCAwLCAxMjA2MjUsIDc0NzYzLCAxMDIyLCAKKyAgICA0MTA4LCAzODgwLCA3NDI0NywgMCwgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgMCwgNDMxNDksIDAsIDY1MDMxLCA3OTYxLCAKKyAgICAxNjM2LCAwLCA2NTAyOSwgNjUwMjQsIDAsIDEyNDczLCA2NTM0LCAwLCA5OSwgOTgsIDk3LCAxMjA1NzEsIDY3NTg0LCAKKyAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCAwLCA3ODkyLCA5MTc5NjksIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgCisgICAgNjY1OTksIDY2NzIyLCAwLCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDAsIDAsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIAorICAgIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDcxMSwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgCisgICAgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgCisgICAgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNzc5MzEsIDE1MzYsIAorICAgIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyNzE1NywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAKKyAgICAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDAsIDczOTI2LCAwLCAxMDY0NSwgMTIxMiwgNjU0MywgOTgzMjk5LCA4MTM0LCAKKyAgICAxMjgwMjgsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDAsIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIAorICAgIDY2NTg1LCA3MTI5NywgMzE5NiwgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCAKKyAgICA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIAorICAgIDEyODc4MSwgNDExNjksIDg5MzksIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCAKKyAgICA0MTE3MiwgNzg1NSwgMCwgMCwgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzAwLCA2NDUsIDEyNjYxNiwgCisgICAgNzYwOSwgNDA5NzMsIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCAKKyAgICA3Mzk4MiwgMTIwNTE4LCAwLCAxOTUwODYsIDQzMzY5LCAwLCAxMjgxNDAsIDY4NDE1LCA5ODMwOTMsIDQ1MzgsIDEyMDQwNiwgCisgICAgNDMxNDEsIDAsIDk4MzIwOCwgNzQyMTQsIDczODg2LCAwLCAwLCAxMTg5MDIsIDQzMDA1LCA3ODQ0OCwgOTU1MiwgMCwgMCwgCisgICAgOTgzMTU5LCAxMjk5NywgMCwgMCwgMCwgMCwgMjM4MSwgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDAsIDAsIAorICAgIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDAsIDAsIDAsIAorICAgIDY0ODk2LCAxMTkxNjIsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDk4MzQ4MiwgMTE5NTY2LCAwLCAxMjgwOCwgCisgICAgMTIxODMsIDYxNDUsIDExODk1NSwgNjQ5MjksIDkyNDMzLCAwLCA5ODMxOTMsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgCisgICAgOTE4NywgOTgzNjE0LCAwLCAxMDE5MSwgMTE5MDU3LCAxMTc1MiwgMzM1MywgOTM1OCwgMCwgNzEzNjYsIDY2NjgwLCAKKyAgICAxMjAwOTAsIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCA5ODMyODksIDAsIDEyMDA4MiwgMTIwMDgxLCAxMjAwODQsIAorICAgIDQxMDI3LCAxMjAwODYsIDAsIDEyMDA4OCwgNzM2NiwgNzAxOSwgMTIwMDczLCAwLCAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgCisgICAgNjQ2NTcsIDg2NTcsIDEyMDA0OCwgODU5NCwgMTIwMDY4LCAwLCAwLCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAwLCAKKyAgICA0MzE1NCwgNDEwMjksIDAsIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgNzg1MSwgMCwgCisgICAgODM3NSwgODY5OSwgMCwgNDI1MjQsIDAsIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAxMjgwOTUsIDk4Mzg1NSwgCisgICAgMCwgODA4OCwgMCwgNzQwMTIsIDkyNTAwLCAwLCA0NDM5LCA2OTI2LCA5ODMwNDcsIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCAKKyAgICA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDAsIDExMjk2LCA5ODMyNzUsIDAsIDAsIAorICAgIDY1ODI1LCA5NTc3LCA2ODE5OSwgMCwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCAwLCA3ODA1MywgCisgICAgNzM4NzIsIDAsIDAsIDEwOTAyLCAwLCAwLCA3ODA3MCwgNzgwNjgsIDEwNDcyLCAyOTk1LCAwLCAwLCA2NDY4MiwgMjM3MSwgCisgICAgNzgwNjksIDEyMDgwOCwgMjU5LCAxMDA5LCA5MjE3MSwgMjQwMiwgMjMzMywgNjQ0MCwgMTk0NzQxLCAwLCA2NTEyNSwgCisgICAgNDEyNDQsIDAsIDEzMjcxLCA5MTAzLCAyMjc4LCAwLCAwLCAwLCAwLCAxMDIxOSwgMCwgMCwgMCwgMCwgNDMxNzgsIAorICAgIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCAxOTUwOTIsIDQxNDkyLCAxMjAwNSwgCisgICAgNjk5MjcsIDAsIDE4OTAsIDEyMDA1NiwgMCwgMCwgMCwgNzI5MywgNzk5MSwgMCwgMTA1NzgsIDAsIDc4MDc2LCAxOTQ3MzgsIAorICAgIDc4MDc3LCA2OTkyOCwgMCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgNDI2NjgsIDY2MzUsIDAsIDYxNjQsIDY1MTcwLCAwLCAwLCAKKyAgICA3Njc2LCAxMTY2NCwgMCwgOTgzNjQ5LCA2OTcwNywgMCwgMTE4ODEyLCAwLCAwLCAxMjgwNDUsIDkxNzUsIDExOTI1LCAKKyAgICA3ODA0NSwgOTA4OCwgMCwgNjQ1NDUsIDEzOTYsIDAsIDc1NDYsIDM4NDcsIDEyNzE3NywgMTI3ODM1LCA0OTg1LCAxMzI4OCwgCisgICAgNjcyLCA4MDk4LCA0MzE5NiwgMTk0NzQ2LCA5ODMwOTYsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgCisgICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAxMjg1ODQsIDEyNjIyLCAwLCAKKyAgICAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDEyNjk4MywgNDI3MzEsIDY3OTcyLCAKKyAgICAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCAKKyAgICA5NTEwLCA2NjIzNywgOTgzMjk0LCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAzNTA1LCA4NzA3LCAKKyAgICA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgOTE3OTcwLCA1NDc5LCA4ODIsIDY2ODYsIAorICAgIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDAsIDk4MzI5OCwgOTI2OTYsIDAsIDAsIDAsIDEyODUyMywgMzIyNSwgCiAgICAgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCAwLCAxMDkyNiwgMTE3NTYsIDExNzU3LCAKICAgICA2NDg3OSwgOTE3OTQ5LCA5MTc5NTAsIDEyNzg0OCwgMTMyMjcsIDAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MTc5NTMsIAogICAgIDQxNDE4LCAwLCA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgOTE3OTYxLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAKLSAgICAxMTkyNTcsIDQyNzQsIDAsIDQxNDgzLCAwLCA0MTI1MCwgMCwgNDIxNzksIDAsIDU5MzEsIDExNzQ0LCA2OTIzMiwgMCwgCi0gICAgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCAwLCAwLCA0Mzk3LCAKKyAgICAxMTkyNTcsIDQyNzQsIDk4MzI5MiwgNDE0ODMsIDAsIDQxMjUwLCAwLCA0MjE3OSwgMCwgNTkzMSwgMTE3NDQsIDY5MjMyLCAKKyAgICAwLCA0MTI1MiwgNjY2ODIsIDAsIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDAsIDAsIDQzOTcsIAogICAgIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyODA0OSwgMCwgNDE0ODUsIDM1MTEsIDQxMjgyLCA1OTIzLCAKICAgICAxMDQwMCwgMCwgMTI4ODE4LCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCAwLCA0MjI1NiwgMTE5ODY5LCAxMTk4NjAsIDQxNywgCi0gICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDAsIDU5MzQsIDExOTg2NywgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDAsIDY0NDgxLCAKKyAgICA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgMCwgNTkzNCwgMTE5ODY3LCA2NjU4MywgMTE5MjMxLCA2NDg3NywgMjI4NCwgNjQ0ODEsIAogICAgIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCAxMjY5OTUsIDAsIDAsIDAsIDQyMjczLCA1ODE5LCAwLCA5MTc1NTYsIDAsIAotICAgIDAsIDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDAsIDEyMzcsIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDAsIDAsIAotICAgIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDQyMDYzLCAwLCA0MjgxMSwgMTAzMTIsIDc0MTkyLCAxMjA3OTQsIDc4NDAsIAotICAgIDAsIDQzNjMwLCAxMDI1MiwgMCwgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMCwgMTE5ODgwLCAxMDc2OSwgOTY3NiwgCi0gICAgMTE5MDQxLCAwLCA5NzUzLCAwLCA4OTQ0LCAwLCAwLCAxMDQ3MywgMCwgMCwgNjA3MiwgNDMwMjUsIDEwMjk5LCAwLCAwLCAKLSAgICAxMjA2MDgsIDY2MzI2LCAwLCAwLCAwLCA0MzgxMSwgOTMzMCwgMCwgNzIyMiwgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgCi0gICAgMCwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIDAsIDc4MzQ3LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIAotICAgIDY0ODA2LCA0MzE4MCwgNzc5MjgsIDY4MDk2LCA3NzkyOSwgNDM5ODIsIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAKLSAgICAxNjAyLCAwLCAwLCA4NTIsIDAsIDEyMTYwLCAwLCAxMDIxMiwgNjU0MzUsIDAsIDEyMDcxLCA5NjA5LCAxMjE1NiwgCi0gICAgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAxMTAzNSwgMTA0MTEsIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAKLSAgICAxMDM3NSwgOTE3OTkzLCAwLCA0MzE1LCAxMjY0NCwgMTI3NTE2LCA3NzkzNywgNDM2MzksIDQzMzQzLCAwLCA5MTc5OTgsIAotICAgIDExNTAxLCA0MTE3NywgMTI4Njg5LCAwLCA5MTc3OTIsIDAsIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgMCwgNDMzMTMsIDAsIAotICAgIDQxMTc2LCAwLCA5OTQsIDAsIDg0NTIsIDEyNzEwMywgNzM5NjYsIDAsIDAsIDU5MjEsIDAsIDI1OTcsIDAsIDU5MjIsIAotICAgIDExODkwMywgNzc5NDMsIDQxODYsIDkyNTMxLCAxMjcxMDYsIDEyNzEwNSwgNjcxOCwgMCwgNDQwNiwgNzQ2MDEsIDg0ODAsIAotICAgIDkxOTIsIDk3NDcsIDEyODY5OSwgNDQxMywgOTIxOTYsIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgCi0gICAgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIDQzMTY5LCAxMDE3NiwgMCwgNzQyLCAwLCAyODkzLCAxMDc3MiwgCi0gICAgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCA2NzU2LCAxMjg1OTAsIDEyODY0NiwgODM2MywgMCwgMjk5MywgCi0gICAgNzc3MiwgMzkxNiwgMCwgMTIwNDk0LCAxMTQxLCA0MjQwNywgODE1OSwgNzE4LCA3NTcyLCA5NzMsIDAsIDEyMDcxOCwgCi0gICAgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgCi0gICAgNjUzOTAsIDEwMDY3LCAwLCAxMjAyLCAwLCAwLCA2NTg2MywgMCwgMCwgMCwgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgCi0gICAgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDAsIDAsIDU1MjM3LCAxNDMxLCAKLSAgICAwLCA2NjU2NSwgMTA4MjEsIDAsIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIAotICAgIDQ1NDQsIDAsIDAsIDAsIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgCi0gICAgMCwgMTAxNDEsIDAsIDYzNzYxLCA4Nzg1LCA0NDc2LCA3ODEwOSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA3ODEwNSwgNzgxMDYsIAotICAgIDc4MTAzLCA3ODEwNCwgMCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAwLCAxMjcxNjAsIDAsIDQxNTczLCAwLCAKLSAgICAzOTMxLCAxMjAyOTUsIDc0MTQzLCAwLCAwLCAwLCAwLCAxMTk4MiwgMCwgMCwgMCwgMTI4MDE2LCA2NDQ4NCwgMCwgNDExNjcsIAotICAgIDAsIDQxNzM1LCAwLCA3MTcsIDEwNzU0LCAwLCAwLCAxMjc5NzksIDAsIDYzNzY3LCAwLCAxNzgwLCA2OTM2LCAwLCAwLCAKLSAgICA4MTksIDEwNjExLCA5Njk0LCAxMjY5NzgsIDAsIDAsIDAsIDAsIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIAorICAgIDEyNjY0MywgMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgNjU3ODUsIDEyMzcsIDEwMjc0LCA0NTUyLCAKKyAgICAxMTk1NzYsIDAsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDQyMDYzLCAwLCA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAKKyAgICAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMCwgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMCwgMTE5ODgwLCAKKyAgICAxMDc2OSwgOTY3NiwgMTE5MDQxLCAwLCA5NzUzLCAwLCA4OTQ0LCAwLCAwLCAxMDQ3MywgMCwgMCwgNjA3MiwgNDMwMjUsIAorICAgIDEwMjk5LCAwLCAwLCAxMjA2MDgsIDY2MzI2LCA5ODM0MzksIDEyNzc5NCwgMCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCisgICAgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgOTgzNzczLCAxMzI4MSwgNjY1MTcsIDc4NjUsIDEwMDg3LCA3ODM0MywgMCwgCisgICAgNzgzNDcsIDAsIDAsIDc1NjUsIDY2MzYzLCAxMjk1MiwgNjQ4MDYsIDQzMTgwLCA3NzkyOCwgNzQxNCwgNzc5MjksIDQzOTgyLCAKKyAgICA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgMCwgODUyLCAwLCAxMjE2MCwgMCwgMTAyMTIsIAorICAgIDY1NDM1LCAwLCAxMjA3MSwgOTYwOSwgMTIxNTYsIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgMTEwMzUsIDEwNDExLCAKKyAgICA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgMTAzNzUsIDczOTAwLCAwLCA0MzE1LCAxMjY0NCwgMTI3NTE2LCAKKyAgICA3NzkzNywgNDM2MzksIDQzMzQzLCA3ODc3NywgOTE3OTk4LCAxMTUwMSwgNDExNzcsIDEyODY4OSwgMCwgOTE3NzkyLCAwLCAKKyAgICA5MjQxMywgODcxNSwgMCwgNDExNzksIDAsIDQzMzEzLCAwLCA0MTE3NiwgMCwgOTk0LCAwLCA4NDUyLCAxMjcxMDMsIAorICAgIDczOTY2LCAwLCAwLCA1OTIxLCAwLCAyNTk3LCAwLCA1OTIyLCAxMTg5MDMsIDc3OTQzLCA0MTg2LCA5MjUzMSwgMTI3MTA2LCAKKyAgICAxMjcxMDUsIDY3MTgsIDAsIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjY1MzAsIDQ0MTMsIDkyMTk2LCAKKyAgICA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCAKKyAgICA0MzE2OSwgMTAxNzYsIDAsIDc0MiwgMCwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgCisgICAgNjc1NiwgMTI4NTkwLCAxMjg2NDYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgCisgICAgNDI0MDcsIDgxNTksIDcxOCwgNzU3MiwgOTczLCAwLCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCAKKyAgICA0MjMzMywgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIDY1MzkwLCAxMDA2NywgMCwgMTIwMiwgMCwgMCwgCisgICAgNjU4NjMsIDAsIDAsIDk0MDEzLCA3ODE4MiwgNjQ1NDIsIDMyNjAsIDczODI5LCA2NTM4OCwgOTk0NSwgODQxOSwgNzgwNDIsIAorICAgIDY3MzgsIDAsIDQzNjgxLCA2OTcyOCwgMjA1OSwgMCwgMCwgNTUyMzcsIDE0MzEsIDAsIDY2NTY1LCAxMDgyMSwgMCwgCisgICAgMTI4MDQsIDEyODA3NiwgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgNDU0NCwgMCwgMCwgMCwgCisgICAgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgMTIwNjgsIDc4MTAyLCAwLCAxMDE0MSwgMCwgCisgICAgNjM3NjEsIDg3ODUsIDQ0NzYsIDc4MTA5LCA2Mzc2MywgMTI2NTUsIDg5MDcsIDc4MTA1LCA3ODEwNiwgNzgxMDMsIDc4MTA0LCAKKyAgICAwLCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgNDE1NzIsIDAsIDEyNzE2MCwgMCwgNDE1NzMsIDAsIDM5MzEsIDEyMDI5NSwgCisgICAgNzQxNDMsIDAsIDAsIDAsIDc4NDYwLCAxMTk4MiwgMCwgMCwgMCwgMTI4MDE2LCA2NDQ4NCwgMCwgNDExNjcsIDAsIDQxNzM1LCAKKyAgICA5NDAxOSwgNzE3LCAxMDc1NCwgMCwgMCwgMTI3OTc5LCAwLCA2Mzc2NywgMCwgMTc4MCwgNjkzNiwgMCwgOTIyNTQsIDgxOSwgCisgICAgMTA2MTEsIDk2OTQsIDEyNjk3OCwgMCwgMCwgMCwgMCwgODM0MywgODM0MiwgODM0NSwgODM0NCwgNjU3OCwgNzAwOSwgCiAgICAgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgMzM0NiwgODMzOSwgMTI4MTY1LCAxMjgzMzgsIDU3NSwgMjY4LCAKICAgICA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgNjU1NjUsIDgzMzYsIDU5MzYsIDcyOTAsIDc4MTE3LCA4MzM3LCAKICAgICA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCAxMjA3MjEsIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIDY5NTMsIDAsIDEyMDM0NiwgMCwgCkBAIC0xNzEyOCwxNjg2ICsxODA2MywyNjQyIEBACiAgICAgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgMCwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgCiAgICAgMTI4MzUwLCA4NTk1LCAwLCA5MTc5NDcsIDQzNzAzLCAxMzA5NywgMCwgNjQ2NDMsIDEzMjgzLCAxMjY5NywgMCwgMTIzODEsIAogICAgIDM0ODgsIDU5MzMsIDEwMDMzLCA3MzczOCwgNjYyNDEsIDY1NTcwLCAwLCAxMjI5NywgMTE5MTUzLCAxOTU1LCAwLCA1MzQ5LCAKLSAgICA0MjUzOCwgMCwgMCwgNjUzMDgsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDAsIDc2MzgsIAotICAgIDQxNjQyLCA0Mjc2NCwgMCwgNDMxMDksIDc2MzcsIDU3NTIsIDEyMDYwMCwgMCwgNzM4MzIsIDEyODgyNywgMTIwNjM1LCAKLSAgICAxMjgyMzEsIDc4MzM0LCAwLCA3NjM2LCA2NTE3MSwgOTEyNCwgMCwgNzg4OTIsIDAsIDI5MSwgMCwgMCwgMjAyNywgNjYyMzAsIAotICAgIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKKyAgICA0MjUzOCwgMCwgMCwgNzQxMSwgOTQ2MiwgOTE3NTU0LCAwLCAwLCAwLCA0MjczNiwgMCwgNTc1NiwgOTgzMjE5LCA3NjM4LCAKKyAgICA0MTY0MiwgNDI3NjQsIDAsIDQzMTA5LCA3NjM3LCA1NzUyLCA3NDAzNywgMCwgNzM4MzIsIDEyODgyNywgMTIwNjM1LCAKKyAgICAxMjgyMzEsIDc4MzM0LCAwLCA3NjM2LCA2NTE3MSwgOTEyNCwgMCwgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCAwLCAyMDI3LCAKKyAgICA2NjIzMCwgMTAwODAsIDc4MTM2LCAxMDQwMywgMCwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDQyNTEyLCAxMjA0MzEsIAogICAgIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIDEyNzE0OCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIAogICAgIDAsIDQxMjc0LCA1Nzc4LCA2MzAyLCAwLCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA3Nzg4OSwgMTk0OTE0LCA5NDUyLCAwLCAKLSAgICA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMCwgNjUzOTEsIDAsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCA3ODY1OCwgCi0gICAgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgMTIwNDEyLCAKLSAgICA0MTI2NywgNDY0NiwgMTIwNDI1LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCA3ODI3MCwgCi0gICAgMTI3OTgyLCAwLCA2NDcyOCwgMCwgNzg2NzMsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAxOTUwODksIDYwNjksIAotICAgIDkyMTksIDE5NTA5MCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIDExOTE0MywgMCwgMCwgMCwgCi0gICAgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCAxOTUxMDEsIDkyNTYxLCA0MTQ2MiwgCi0gICAgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgMCwgMCwgMCwgMTAyMjksIDEwNjM1LCA4MjYsIDEyODA4MSwgMTk1MDgyLCAKLSAgICAxOTUwODUsIDE5NTA4NCwgMTk1MDg3LCA2NDgzLCAwLCAxODA4LCA3ODQ4LCAwLCA4MTAwLCA3ODIyNywgNzg2NjksIAotICAgIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCA3ODg3MiwgMCwgMTEwMDMsIDk5MDQsIDAsIDAsIDEyMDY5MCwgCi0gICAgOTE0NCwgMTA5MjEsIDAsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDc3ODQxLCAxMDMxMywgMCwgMCwgNjQzMjAsIAotICAgIDEwMjY1LCA3ODY4NiwgMTA5NjIsIDc4Njg0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDAsIDQxLCAxOTUwNzIsIDE3OTIsIAotICAgIDEyMDUxNSwgMTk1MDczLCA4NjU1LCAxOTUwNzUsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDAsIDM4NSwgNDE1MiwgMjU4NSwgCi0gICAgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDAsIDc0MTM2LCAxMDk1NywgMCwgNDMyNTgsIDAsIDEyNzg3MywgMTMxNTcsIDAsIDAsIAotICAgIDM1NzAsIDAsIDc0NDMsIDAsIDQ0MDA2LCA2OTk3LCAwLCAwLCA3ODc5LCA4NzM5LCAxMTA3NSwgMCwgNjUyMTYsIDAsIAotICAgIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCA5MTc4NjIsIDc4MzksIDExOTkxMywgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgCi0gICAgNzg4MDIsIDAsIDAsIDQzNDQyLCA3ODc5OSwgNjUyNTQsIDEwMDY2LCAwLCAwLCAwLCAwLCAxMzA2MSwgODAxNiwgNzg2ODcsIAotICAgIDE5OTMyLCA2NDgzMSwgMCwgMTE5OTIzLCAxMjM5MCwgMTE5MTcxLCAxNjM0LCA2ODExNSwgMCwgMTEwNTYsIDAsIDExOTkyNSwgCi0gICAgMCwgNDExNjUsIDExMzI4LCAxMjQ1MCwgMCwgNDExNjYsIDAsIDEyNDU2LCAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIAotICAgIDkxNzU0NCwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTI3NTY5LCAxMjA0ODMsIDk5NjksIAotICAgIDAsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDAsIDAsIDAsIDUyMDksIDI5NywgCi0gICAgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgCi0gICAgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAwLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgMTI3NTA1LCAKLSAgICA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3ODg3MywgNTg0NCwgNzg4NzQsIDExODgzOCwgMCwgCi0gICAgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDAsIDAsIDAsIDg4OTIsIDAsIAotICAgIDkyMzM5LCAwLCAwLCA1NzgyLCA0MjAsIDAsIDAsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDAsIDAsIDY0ODE0LCA2Mzc5NiwgCi0gICAgNzc5NjUsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAwLCAwLCA2Mzc5MiwgNDY1OSwgMTIwNzg4LCAwLCA0MzY3NiwgMCwgCi0gICAgNjk2NzMsIDAsIDAsIDAsIDMyOSwgNzc5NjgsIDkyNzA3LCA5MTc1NDgsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgMTIwNDY2LCAKLSAgICA0MjE2NywgNzQzNSwgNzgxOTMsIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIDExMzY1LCA0MzEyNiwgNzc5NzIsIDAsIAotICAgIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgNDI3NjUsIDYzNzUyLCAwLCA3OTg3LCAwLCAxMTcyLCA2OTc5OSwgNjc4NiwgCi0gICAgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIDU2MDMsIDAsIDQ0NzMsIDAsIDE5NDgyMywgMCwgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgCi0gICAgMCwgMTI3Mzg0LCA1MzQ3LCA2OTgwMiwgMCwgNzM4NjgsIDExODk0NCwgMTA1ODgsIDAsIDAsIDYzNzU1LCAwLCA1MzQzLCAKLSAgICA3ODQyMiwgMCwgNDU1NSwgNTM0MSwgMCwgMCwgMTI4NjcwLCA1MzUxLCAwLCA0MzEwNCwgNjUyNDQsIDkxNzg5MiwgNjQ1NDEsIAotICAgIDQyNTE5LCA3NDQ3MiwgMCwgMCwgNzQ3NjUsIDkxNzg4OCwgMTk0ODkyLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgCi0gICAgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgCi0gICAgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCA2NTM1NSwgNTM0NSwgNjUzNTMsIDY1MzUyLCA2NTM1MSwgNzYxLCAKLSAgICA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgMCwgMjQyMywgNzc5NTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDAsIAotICAgIDAsIDAsIDAsIDY0NjA1LCAwLCAwLCAwLCA0OTE2LCAwLCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAKLSAgICAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA5MTc4OTMsIDEwNjg0LCAwLCA5MTc4OTYsIDAsIAotICAgIDc5NDYsIDEyNTQxLCA4MTgyLCA2NzU4NiwgNjk3ODAsIDAsIDAsIDAsIDAsIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDAsIAotICAgIDAsIDg4NDcsIDAsIDY1ODc2LCA1NTM1LCA4MzI5LCA3NDU5MCwgMCwgOTI2MDksIDAsIDAsIDMxMjcsIDI1OTUsIDY1NzEzLCAKLSAgICA0MjAxMywgMCwgNTYwNywgNDEwODksIDAsIDAsIDc0MjU2LCAyNjY1LCAxMTMwNCwgMCwgNzQyMDAsIDQ5NzAsIDg3NjQsIAorICAgIDc0MzkzLCAxMTU1MiwgMCwgMTI3ODU1LCAxMjgyMTcsIDY1MzkxLCAwLCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgCisgICAgNzg2NTgsIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIAorICAgIDEyMDQxMiwgNDEyNjcsIDQ2NDYsIDEyMDQyNSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgCisgICAgNzgyNzAsIDEyNzk4MiwgOTgzMTcyLCA2NDcyOCwgMCwgNzg2NzMsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAKKyAgICAxOTUwODksIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIAorICAgIDExOTE0MywgMCwgMCwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgCisgICAgMTk1MTAxLCA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDAsIDAsIDAsIDEwMjI5LCAKKyAgICAxMDYzNSwgODI2LCAxMjgwODEsIDE5NTA4MiwgMTk1MDg1LCAxOTUwODQsIDE5NTA4NywgNjQ4MywgOTIyMTEsIDE4MDgsIAorICAgIDc4NDgsIDAsIDgxMDAsIDc4MjI3LCA3ODY2OSwgNzg2NzAsIDEzMzAxLCA3ODY2NywgOTY2NywgNzg2NjUsIDc4ODcyLCAwLCAKKyAgICAxMTAwMywgOTkwNCwgMCwgMCwgMTIwNjkwLCA5MTQ0LCAxMDkyMSwgMCwgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgCisgICAgNzc4NDEsIDEwMzEzLCAwLCAwLCA2NDMyMCwgMTAyNjUsIDc4Njg2LCAxMDk2MiwgNzg2ODQsIDQzMDA4LCA4OTQ1LCAKKyAgICA3ODY4MywgMCwgNDEsIDE5NTA3MiwgMTc5MiwgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDE5NTA3NSwgOTI1NDQsIDc3OTUxLCAKKyAgICAxMjA2NiwgMCwgMzg1LCA0MTUyLCAyNTg1LCAxMjc4MDQsIDExOTA2OCwgMzEyNiwgMCwgNzQxMzYsIDEwOTU3LCA5ODM2OTQsIAorICAgIDQzMjU4LCAxMTkxMTYsIDEyNzg3MywgMTMxNTcsIDAsIDkxNzU0NCwgMzU3MCwgMCwgNzQ0MywgMCwgNDQwMDYsIDY5OTcsIAorICAgIDY4MDA0LCAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCAwLCA2NTIxNiwgMCwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAorICAgIDkxNzg2MiwgNzgzOSwgMTE5OTEzLCA3ODgwNiwgMTE5OTEyLCA5NjkxLCA0NDExLCA3ODgwMiwgMCwgMCwgNDM0NDIsIAorICAgIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDk4Mzg4MCwgMCwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAxOTkzMiwgNjQ4MzEsIAorICAgIDAsIDExOTkyMywgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDAsIDExMDU2LCA5ODM1NzQsIDExOTkyNSwgMCwgCisgICAgNDExNjUsIDExMzI4LCAxMjQ1MCwgMCwgNDExNjYsIDAsIDEyNDU2LCAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIAorICAgIDE5NDcwOSwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTI3NTY5LCAxMjA0ODMsIDk5NjksIAorICAgIDEyMDc2NywgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgMCwgMCwgMCwgNTIwOSwgCisgICAgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIAorICAgIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIDAsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAKKyAgICAxMjc1MDUsIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc4ODczLCA1ODQ0LCA2ODAzMSwgCisgICAgMTE4ODM4LCAwLCAxMjY1NCwgNDY2MywgMTg5OSwgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgMCwgMCwgMCwgCisgICAgODg5MiwgMCwgOTIzMzksIDAsIDk4MzA3MywgNTc4MiwgNDIwLCAwLCAwLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAwLCAKKyAgICA2NDgxNCwgNjM3OTYsIDc3OTY1LCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMCwgMCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgCisgICAgMCwgNDM2NzYsIDAsIDY5NjczLCAwLCAwLCAwLCAzMjksIDc3OTY4LCA5MjcwNywgOTE3NTQ4LCA3Mzk5LCAwLCA0MTE4OCwgCisgICAgMTMyNDQsIDEyMDQ2NiwgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgCisgICAgNDMxMjYsIDc3OTcyLCAwLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgMTI4NTQzLCAKKyAgICAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIDU2MDMsIDAsIDQ0NzMsIDAsIDE5NDgyMywgMCwgCisgICAgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMCwgMTI3Mzg0LCA1MzQ3LCA2OTgwMiwgOTgzNjIzLCA3Mzg2OCwgMTE4OTQ0LCAKKyAgICAxMDU4OCwgMCwgMCwgNjM3NTUsIDAsIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDAsIDcwMDcxLCAxMjg2NzAsIAorICAgIDUzNTEsIDc4Njc1LCA0MzEwNCwgNjUyNDQsIDkxNzg5MiwgNjQ1NDEsIDQyNTE5LCA3NDQ3MiwgMCwgMCwgNzQ3NjUsIAorICAgIDkxNzg4OCwgMTI3NTEwLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgCisgICAgNjUzNjYsIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIAorICAgIDExODAwLCA2NTM1NSwgNTM0NSwgNjUzNTMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgCisgICAgMTI2NjM1LCAyNDIzLCA3Nzk1OCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMCwgMCwgMCwgMCwgNjQ2MDUsIDAsIDAsIAorICAgIDAsIDQ5MTYsIDAsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIAorICAgIDczOTgwLCA2OTI0NSwgNzgyNTQsIDkxNzg5MywgMTA2ODQsIDAsIDkxNzg5NiwgMCwgNzk0NiwgMTI1NDEsIDgxODIsIAorICAgIDY3NTg2LCA2OTc4MCwgMCwgMCwgMCwgMCwgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMCwgNjgwMTEsIDg4NDcsIDAsIAorICAgIDY1ODc2LCA1NTM1LCA4MzI5LCA3NDU5MCwgOTgzMjA2LCA5MjYwOSwgMCwgMCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAKKyAgICA5ODM4NDksIDU2MDcsIDQxMDg5LCAwLCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgODc2NCwgCiAgICAgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDAsIDY1MDExLCA0MTA5MCwgMCwgMCwgMTE4OCwgNzI1NCwgCi0gICAgMTEwMCwgMCwgMTI4MzAxLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY5NzkyLCAwLCAwLCAzNTcyLCAxMDAyMywgNDk1OSwgCi0gICAgMTMwNzksIDAsIDAsIDk3MjksIDAsIDAsIDAsIDQzMzYxLCAwLCAwLCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCAKLSAgICAxMjgyOTAsIDEyNzI2MCwgNDE0NTEsIDAsIDExMDk1LCA4MjczLCAxMjc1MzMsIDM0NTEsIDAsIDk3MiwgNDE0NTMsIDAsIDAsIAotICAgIDczODgzLCA5MjQwOCwgNzM5NDUsIDAsIDM0NTUsIDE5OTU1LCA5NTM4LCAwLCA2OTgwNywgMCwgMCwgMCwgMCwgMTEzOTYsIAotICAgIDAsIDExMDE5LCAwLCAwLCAwLCAxMjA1MDcsIDQxMDc4LCAwLCAyNjEsIDU5MjcsIDc3OTEsIDAsIDY0NDQ2LCAwLCAxMDY5NiwgCi0gICAgMCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCAxMjg1NjMsIDI4MiwgMCwgNjQzNywgNzQwNzgsIDEyODAwMCwgCi0gICAgOTgwMSwgMCwgMCwgMCwgMCwgMzQ3NCwgMTE4Nzg3LCAwLCAxMjA2NTUsIDYwODEsIDAsIDEyNzg0MywgNzQwNzYsIDc4ODc5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4NzUxLCAxMTQ5OSwgMTIwMjczLCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIAotICAgIDkyNjA4LCAxMjAyNzIsIDAsIDk2NDIsIDEwOTEyLCA5NTgsIDAsIDExMzg3LCA3ODg3OCwgNDY2NiwgMCwgNDkxNSwgMCwgCi0gICAgNDY2OSwgMCwgNjgwOTksIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCAwLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDAsIAotICAgIDkxNzg3NSwgODY2NCwgOTY5NywgMzYwNiwgOTE3ODczLCAwLCAwLCA2NDgxNSwgMTA2MywgMTIwMjUwLCAxMjAyNTEsIAotICAgIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEyNzkzMiwgMTIwMjU3LCAxMjAyNTgsIDEyMDI1OSwgMTI5NDEsIDQyNjYxLCAKLSAgICA5MjM4MSwgMTIwMjU1LCAxMjAyNTYsIDEyMzAxLCAxMjAyNjYsIDY5ODIwLCA0MTEwMiwgNjY2MDQsIDEyMDI2MiwgCi0gICAgMTIwMjYzLCAxMjAyNjQsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDAsIDAsIDg2MDgsIDQyNzg5LCAKLSAgICAxMjA2MTMsIDEyODcwNCwgMCwgMTE5MTk2LCAxMTMwNywgNjY3MDcsIDkxNzg3MSwgMTI3NzUxLCAxMTc0NSwgNzkxOSwgMCwgCi0gICAgMTY0MSwgMCwgMCwgODk2NiwgMCwgMCwgNTkwOCwgMCwgMCwgNjc0NCwgMTI4MzU1LCAxNjk5LCA3NDE5MSwgNzQ4NDMsIDAsIAotICAgIDAsIDYzMDYsIDEwMTY5LCAwLCAxMTkyNTEsIDEwMDY4LCAzNzY2LCAyMzg5LCAxMjA0NTYsIDEyMDQ1NSwgNjYxMSwgMjU3LCAKLSAgICA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCAwLCA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIAotICAgIDExNDQ3LCAxMDU0MSwgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgMCwgCi0gICAgNDE0MzUsIDQzNTIsIDAsIDI0MzUsIDEyMDgwOSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCAKLSAgICA0MjA0LCAxMjA0NDcsIDM3NjgsIDY4MTQyLCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIAotICAgIDEyOTQ3LCA0NTY0LCAwLCAwLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDAsIDAsIDY4MjksIDUyMjUsIDEyODgwNywgMTI3Mzg1LCAKLSAgICAwLCAwLCAxMTk2MTUsIDAsIDc0NzkzLCA1NjI2LCA3MzgwNywgMTE3NzEsIDAsIDEyNzIzNiwgMTI4MDE5LCAwLCA1MzUzLCAKLSAgICA1NjI1LCA3NDE3OSwgMCwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIDAsIDY5NTIsIDAsIDEyMDc1MiwgCi0gICAgNzg3NjIsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAKLSAgICAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgMjQwMCwgNTYyNywgMTIwMDE3LCAKLSAgICAxMjAwMTgsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgMTA5NjEsIDAsIDIwMywgMCwgMCwgMCwgMCwgNzgzNTAsIDAsIAotICAgIDY0Mzc4LCA0MjA1NCwgMCwgMCwgNTU0LCAxMTk2NDksIDExMzU4LCAwLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAxMjc4NzgsIAotICAgIDczODkxLCAwLCAwLCA1Njk0LCA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMCwgMCwgCi0gICAgNjk3NjQsIDAsIDAsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCAwLCA2OTc3MCwgNDM2NTEsIDAsIDY4MTE4LCAxMjgwMjQsIAotICAgIDExMjksIDAsIDAsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgOTE3NzcyLCA2NTI1NSwgMCwgMzg0NSwgNDQ5MCwgCi0gICAgMTE4OTY5LCA2NjQ5LCA3NDQwMCwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIDAsIDc3NTYsIDEyMzQyLCAKLSAgICAxMjg1NjgsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgOTE3ODYzLCA0NTYsIDcwMjYsIDgxNDUsIDExNjgsIDkyNTEsIAotICAgIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgMCwgNDE0OTQsIAotICAgIDkyMzE2LCA0NjYwLCAwLCAxMDQwNSwgMCwgNzg4MDMsIDAsIDAsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgCi0gICAgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgNzg4NjcsIDgyMTQsIDAsIDAsIDAsIDQxNDU3LCAwLCAKLSAgICAxMTk1ODksIDE5NjksIDIzODQsIDgwOTcsIDkxNzg2NCwgMCwgMTI3MzgwLCA3ODAyOSwgODc2NiwgMCwgNzgwNzksIDU4NTQsIAotICAgIDEyNzk3NCwgMTA1ODMsIDAsIDExOTk4OSwgMCwgMTA0MTYsIDkxNzg2OSwgMzg3MiwgOTE3ODY4LCAwLCA4NDI5LCAwLCAKLSAgICAxMTg4MDYsIDI4MzgsIDEyODgwMiwgMCwgOTE3ODY2LCAwLCAwLCAwLCAwLCAwLCAxMTA5NiwgMTIwODEzLCAxMDU1MywgCi0gICAgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDAsIDczNzQyLCA2NiwgNjUsIDY4LCA2NywgNzAsIDY5LCAKLSAgICA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgODIsIDgxLCA4NCwgODMsIDg2LCA4NSwgODgsIDg3LCAKLSAgICA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIDg1NTYsIDAsIDk2NTksIDAsIDAsIDAsIDk1NTYsIDAsIAotICAgIDQ1MDMsIDExMzUzLCA5NjQ3LCAwLCA3ODE4NSwgMCwgMCwgOTI3MTMsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIAotICAgIDY0MzgsIDkxNzk3OSwgOTEwOSwgNzg4ODIsIDEyODksIDY0NTk5LCAwLCAwLCAwLCA2NTUwNywgMjQ0NywgMCwgMCwgCi0gICAgMTI4MDQyLCAwLCAwLCAwLCA2MzM0LCAwLCAwLCAxOTkzNywgMCwgOTIzNjgsIDAsIDU2NzUsIDI1NCwgMCwgMCwgNjk2ODYsIAotICAgIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDAsIDY5NzIsIDQyODI2LCAwLCA0MjQ2NCwgMTIwNTY3LCAwLCAKLSAgICA5MjY0NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMCwgNzc4NjEsIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgMCwgCi0gICAgMTE3ODUsIDAsIDY0NjcxLCA0MTk3OCwgMTQxMiwgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIDc3NzUsIAotICAgIDEyODI5MywgMCwgNzQ1ODgsIDEyMDc0OCwgMzE0MCwgMTI4ODU0LCA3OTYwLCA0MzI3MSwgMCwgMTI1MTgsIDEwOTA5LCAKLSAgICAxMjc1MDgsIDE0MjgsIDEyNDcyLCAwLCAxMjg3ODcsIDc2OTksIDEyMzkzLCAwLCAwLCAwLCA3NDUxOCwgODIyMywgMCwgCi0gICAgNDI2MSwgMCwgMCwgMCwgMCwgMCwgMTI4MzAyLCAwLCAxMjgwNDYsIDQzNDE5LCAwLCA2NDU1NCwgMTA1NzQsIDM4NzgsIDAsIAotICAgIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMCwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDAsIDAsIDAsIDY1OTE5LCAwLCA2Njk1LCAKLSAgICA3MjAsIDMyNCwgMCwgMCwgNDM0MDYsIDAsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgMCwgNjQ0ODgsIDAsIDAsIAotICAgIDY0MDQxLCA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMCwgNzg4NjMsIDAsIDEzMDIsIDAsIDc4ODYxLCAwLCAwLCAKLSAgICAwLCA1MjA0LCA3NDc3NCwgNDM0MDQsIDQzMzk2LCAwLCAzOTk1LCA2ODM2MCwgNjU2MDgsIDM3MTQsIDAsIDAsIDAsIAorICAgIDExMDAsIDAsIDEyODMwMSwgNDEwODEsIDI5MTIsIDExNzQ5LCA2OTc5MiwgMCwgNjgwMTksIDM1NzIsIDEwMDIzLCA0OTU5LCAKKyAgICAxMzA3OSwgMCwgOTgzMjY4LCA5NzI5LCAwLCAwLCAwLCA0MzM2MSwgMCwgMCwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAKKyAgICAxMzMwNCwgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAxMTA5NSwgODI3MywgMTI3NTMzLCAzNDUxLCA5ODMzMDEsIDk3MiwgCisgICAgNDE0NTMsIDk4MzQzNCwgMCwgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgOTgzNzI2LCAyMjg4LCAxOTk1NSwgOTUzOCwgMCwgCisgICAgNjk4MDcsIDAsIDAsIDAsIDAsIDExMzk2LCA5ODM0MzIsIDExMDE5LCAwLCAwLCAwLCA2ODAyMCwgNDEwNzgsIDcxMzY1LCAKKyAgICAyNjEsIDU5MjcsIDc3OTEsIDAsIDczNjIsIDAsIDEwNjk2LCAwLCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIAorICAgIDkzOTk1LCAyODIsIDEyNjUxMCwgNjQzNywgNzQwNzgsIDEyODAwMCwgOTgwMSwgMCwgNzQxNzcsIDAsIDAsIDM0NzQsIAorICAgIDExODc4NywgMCwgMTIwNjU1LCA2MDgxLCAwLCA3ODg3NCwgNzQwNzYsIDc4ODc5LCAwLCAwLCAwLCAwLCAwLCA4NzUxLCAKKyAgICAxMTQ5OSwgMTIwMjczLCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDkyNjA4LCAxMjAyNzIsIDY4MDE3LCAKKyAgICA5NjQyLCAxMDkxMiwgOTU4LCAwLCAxMTM4NywgNzg4NzgsIDQ2NjYsIDAsIDQ5MTUsIDAsIDQ2NjksIDAsIDY4MDk5LCAKKyAgICAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgMCwgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAwLCA5MTc4NzUsIDg2NjQsIAorICAgIDk2OTcsIDM2MDYsIDkxNzg3MywgMCwgMCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgMTIwMjUxLCA5NzcyLCA3MjU1LCA4ODg2LCAKKyAgICAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgOTIzODEsIDEyMDI1NSwgCisgICAgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIDEyMDI2MywgMTIwMjY0LCAxMDE3LCAKKyAgICA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCAwLCAwLCA4NjA4LCA0Mjc4OSwgMTIwNjEzLCAxMjg3MDQsIDAsIAorICAgIDczODU1LCAxMTMwNywgNjY3MDcsIDkxNzg3MSwgMTI3NzUxLCAxMTc0NSwgNzkxOSwgMCwgMTY0MSwgMCwgMCwgODk2NiwgMCwgCisgICAgMCwgNTkwOCwgMCwgMCwgNjc0NCwgMTI4MzU1LCAxNjk5LCA2OTg2MSwgNzQ4NDMsIDkxNzkzMywgMCwgNjMwNiwgMTAxNjksIAorICAgIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAzNzY2LCAyMzg5LCAxMjA0NTYsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgCisgICAgMTMxNTMsIDAsIDQyMzg2LCAwLCA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAKKyAgICAxMDU0MSwgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgMCwgNDE0MzUsIDQzNTIsIAorICAgIDk4MzYxMCwgMjQzNSwgMTIwODA5LCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIAorICAgIDEyMDQ0NywgMzc2OCwgNjgxNDIsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIAorICAgIDQ1NjQsIDAsIDAsIDc0MjcxLCA3Mzc1MywgODM3NCwgOTgzMTU2LCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgMCwgCisgICAgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCA3NDA3NSwgMTI3MjM2LCAxMjgwMTksIDQyNjE0LCAKKyAgICA1MzUzLCA1NjI1LCA3NDE3OSwgMCwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIDY5OTQyLCA2OTUyLCAKKyAgICA5ODMyNjQsIDEyMDc1MiwgNzg3NjIsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIAorICAgIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgMjQwMCwgCisgICAgNTYyNywgMTIwMDE3LCAxMjAwMTgsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMCwgMjAzLCAwLCAwLCAwLCAwLCAKKyAgICA3ODM1MCwgMCwgNjQzNzgsIDQyMDU0LCAwLCAwLCA1NTQsIDExOTY0OSwgMTEzNTgsIDAsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIAorICAgIDEyNjQ2NCwgNzM4OTEsIDAsIDAsIDU2OTQsIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAwLCAKKyAgICAwLCA2OTc2NCwgMCwgMCwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDAsIDY5NzcwLCA0MzY1MSwgMCwgNjgxMTgsIAorICAgIDEyODAyNCwgMTEyOSwgMTI2NTc0LCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDkxNzc3MiwgNjUyNTUsIAorICAgIDAsIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQ0MDAsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCAKKyAgICA3NzU2LCAxMjM0MiwgMTI4NTY4LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIDgxNDUsIAorICAgIDExNjgsIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgCisgICAgMCwgNDE0OTQsIDkyMzE2LCA0NjYwLCAwLCAxMDQwNSwgMCwgNzg4MDMsIDAsIDAsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCAKKyAgICA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgNzg4NjcsIDgyMTQsIDAsIDAsIDAsIAorICAgIDQxNDU3LCA5ODM5NjEsIDExOTU4OSwgMTk2OSwgMjM4NCwgODA5NywgOTE3ODY0LCA3NDEzLCA2ODAxMiwgNzgwMjksIAorICAgIDg3NjYsIDAsIDc4MDc5LCA1ODU0LCAxMjc5NzQsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIAorICAgIDkxNzg2OCwgMCwgODQyOSwgMCwgMTE4ODA2LCAyODM4LCAxMjg4MDIsIDAsIDkxNzg2NiwgMCwgMCwgMCwgOTgzOTU4LCAKKyAgICA5NDAwNSwgMTEwOTYsIDEyMDgxMywgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCAKKyAgICA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIAorICAgIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCAKKyAgICA4NTU2LCAwLCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMCwgNzgxODUsIDAsIDAsIAorICAgIDkyNzEzLCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCA2NDM4LCA5MTc5NzksIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgCisgICAgMCwgNjgwMDksIDAsIDY1NTA3LCAyNDQ3LCAwLCAwLCAxMjgwNDIsIDEyNjU0NSwgOTgzMTM3LCAwLCA2MzM0LCAwLCAwLCAKKyAgICAxOTkzNywgMCwgOTIzNjgsIDAsIDU2NzUsIDI1NCwgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgCisgICAgNDIzMTIsIDAsIDAsIDY5NzIsIDQyODI2LCAwLCA0MjQ2NCwgMTIwNTY3LCAwLCA5MjY0NSwgNzQ3OTYsIDY0NDAwLCAKKyAgICA2NDY5MywgMCwgNzc4NjEsIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCAKKyAgICA2NDY3MSwgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIAorICAgIDc0NTg4LCAxMjA3NDgsIDMxNDAsIDEyODg1NCwgNzk2MCwgNDMyNzEsIDAsIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAKKyAgICAxMjQ3MiwgMCwgNjk4NjQsIDc2OTksIDEyMzkzLCAwLCAwLCAwLCA3NDUxOCwgODIyMywgMCwgNDI2MSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTI4MzAyLCAwLCAxMjgwNDYsIDQzNDE5LCAwLCA2NDU1NCwgMTA1NzQsIDM4NzgsIDAsIDQyMzUyLCAxNzUyLCAKKyAgICA3Mzc4NSwgMCwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDAsIDAsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIAorICAgIDAsIDQzNDA2LCA5ODM3MjcsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgMCwgNjQ0ODgsIDAsIDAsIDY0MDQxLCAKKyAgICA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMCwgNzg4NjMsIDAsIDEzMDIsIDAsIDc4ODYxLCAxMTkxMzQsIDAsIDAsIAorICAgIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDAsIDM5OTUsIDY4MzYwLCA2NTYwOCwgMzcxNCwgOTIxOTAsIDAsIDAsIAogICAgIDEwOTk5LCAxMTc1MCwgMCwgNDMyNTEsIDY4NjYwLCA0MzMwMSwgMCwgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgCi0gICAgMTE5NjQsIDAsIDAsIDAsIDAsIDY4NDU1LCA0Mjg2MywgNzM4MzksIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OCwgNjEyLCAwLCAKLSAgICA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCAwLCAxMjI4MCwgMCwgNTQwLCA3NDU2NCwgMTE5MDE3LCAKLSAgICAwLCA4NDMyLCAwLCAxMTA3MywgMCwgNjQzMTYsIDAsIDAsIDgyMCwgNDE3NDEsIDAsIDEyMDY2NywgMCwgNjQ2ODQsIAotICAgIDEyNjk5MiwgMzM1OSwgNzgwMCwgMTI4NjQ0LCA2NTE3NywgNjIyNiwgMzUzLCAxMjM5NiwgMCwgMTE5NjEyLCA2NDc0MiwgCi0gICAgMTI4NjgyLCAxMjAyODIsIDAsIDAsIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3ODg0NywgMTg4NCwgOTQ4MSwgNDI0MTgsIAotICAgIDAsIDQxMTU3LCAwLCAxMTk1LCA2NDg5OCwgNzkyNCwgMCwgNDExNTEsIDIwMTAsIDAsIDQxMzI4LCA0MjM0NCwgMCwgCi0gICAgMTI0MDksIDAsIDQzNjAsIDEyNzAwOSwgOTczOSwgMCwgNzQzOTIsIDczOTIxLCAwLCA0MjUyMSwgODUzOSwgMCwgMCwgCi0gICAgMTE4OTg2LCAwLCA0Nzg4LCAwLCAwLCA2NTczNCwgMCwgNDM3OTAsIDAsIDEzMDc1LCA3NDQyOSwgMCwgNjQ1NjksIDQzNTMyLCAKLSAgICAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgCi0gICAgMTE5NjE3LCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgMCwgCi0gICAgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIDEyNzA5LCA2OTg2LCA5MjM2NCwgMCwgMCwgNDEzNDksIDExOTEyMywgCi0gICAgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgMTAyNTQsIDAsIDEwMjc4LCAxMDI2MiwgNzc5NTAsIDQxMzQ2LCAwLCAKLSAgICA2MDcsIDAsIDExOTg1MywgMTI4ODQ2LCAxMjkyMywgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIAotICAgIDgyNjUsIDAsIDExOTgzNCwgNDA5NzUsIDU4NDAsIDQyODM4LCAwLCA0MDk3OCwgMCwgMTE5ODQwLCAwLCAwLCAwLCA2NjQ0NCwgCi0gICAgMTA1MzgsIDAsIDI1NTAsIDExOTgzNiwgNjc3OSwgMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCAwLCAwLCA1NjE5LCAKLSAgICA2NTgyMiwgMCwgMTk0ODgyLCA3NDU1LCAwLCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDAsIAotICAgIDEyMDU1MSwgNDIzODAsIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIAotICAgIDE5NDg4NywgMCwgMTEzNTAsIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDEyODA2MCwgMTMzOCwgCi0gICAgMTIwNTgxLCAwLCAxMjczOSwgNDYwMywgMzA4NCwgMCwgOTI0ODQsIDk4NTgsIDYwMzcsIDAsIDM5NzQsIDc4MjEzLCAKLSAgICAxMDI5MCwgMCwgMzA4MywgMTAzMjIsIDAsIDAsIDAsIDQxMDM2LCAwLCAwLCA0MzMyMSwgNjU2MDYsIDAsIDQxMDMyLCAKLSAgICA0MjM4OCwgMCwgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTk0ODkzLCAwLCA0MDk2MCwgMCwgMTk0ODkxLCAwLCAKLSAgICA0MDk2MywgNjQ5NTIsIDEwNDAyLCAwLCAwLCA5MjMwNCwgMTA2MDMsIDAsIDAsIDAsIDAsIDY3MTQsIDEwMDgzLCAxMjcwNjksIAotICAgIDE5NDg5NSwgNzgzNjcsIDEyNzM3NywgMCwgMCwgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIDAsIAotICAgIDc0ODI5LCAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCAwLCA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAwLCAKLSAgICA5MTc2MjQsIDQzNzQwLCAwLCA0MDk2NiwgOTE3NjIzLCAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDc0MjM3LCAKKyAgICAxMTk2NCwgMCwgOTgzMTg1LCAwLCAwLCA2ODQ1NSwgNDI4NjMsIDczODM5LCAwLCAwLCAwLCAwLCAxMjY2MjksIDAsIDQ2OCwgCisgICAgNjEyLCAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCA5ODMxNjMsIDEyMjgwLCAwLCA1NDAsIAorICAgIDc0NTY0LCAxMTkwMTcsIDAsIDg0MzIsIDAsIDExMDczLCAwLCA2NDMxNiwgMCwgMCwgODIwLCA0MTc0MSwgMCwgMTIwNjY3LCAKKyAgICAwLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIDYyMjYsIDM1MywgMTIzOTYsIDAsIDExOTYxMiwgCisgICAgNjQ3NDIsIDEyODY4MiwgMTIwMjgyLCAwLCA5ODM0NDIsIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3ODg0NywgMTg4NCwgCisgICAgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgMCwgMTE5NSwgNjQ4OTgsIDc5MjQsIDAsIDQxMTUxLCAyMDEwLCAwLCAKKyAgICA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAwLCA0MzYwLCAxMjcwMDksIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCAwLCAKKyAgICA0MjUyMSwgODUzOSwgOTgzNzE2LCAwLCAxMTg5ODYsIDAsIDQ3ODgsIDAsIDY4MDIzLCA2NTczNCwgOTgzNDQ3LCA0Mzc5MCwgCisgICAgMCwgMTMwNzUsIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCAKKyAgICA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTE5NjE3LCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIAorICAgIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgOTE3ODM3LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgCisgICAgMTI3MDksIDY5ODYsIDkyMzY0LCA2ODAxNSwgMCwgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIDczODA2LCAKKyAgICAxMDI1NCwgMCwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDAsIDYwNywgMCwgMTE5ODUyLCAxMjg4NDYsIDEyOTIzLCAKKyAgICAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgMCwgMTE5ODM0LCA0MDk3NSwgNTg0MCwgCisgICAgNDI4MzgsIDAsIDQwOTc4LCA5ODM4ODgsIDExOTg0MCwgMCwgOTgzMDcxLCAwLCA2NjQ0NCwgMTA1MzgsIDAsIDI1NTAsIAorICAgIDExOTgzNiwgNjc3OSwgMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCAwLCAwLCA1NjE5LCA2NTgyMiwgMTI2NTY3LCAKKyAgICAxOTQ4ODIsIDc0NTUsIDAsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAxMDcyNywgNTYxNSwgMCwgMTIwNTUxLCA0MjM4MCwgCisgICAgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAxMTM0NywgMCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAxMTM1MCwgCisgICAgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgOTE0NSwgMTI4MDYwLCAxMzM4LCAxMjA1ODEsIDk4MzE1OCwgMTI3MzksIAorICAgIDQ2MDMsIDMwODQsIDk4MzE1NSwgOTI0ODQsIDk4NTgsIDYwMzcsIDAsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNjk1LCAKKyAgICAzMDgzLCAxMDMyMiwgMCwgMCwgMCwgNDEwMzYsIDAsIDAsIDQzMzIxLCA2NTYwNiwgMCwgNDEwMzIsIDQyMzg4LCAwLCAKKyAgICA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAxMTkxMDUsIDAsIDQwOTYwLCAwLCAxOTQ4OTEsIDAsIDQwOTYzLCAKKyAgICA2NDk1MiwgMTA0MDIsIDAsIDAsIDkyMzA0LCAxMDYwMywgMCwgMCwgOTgzMTEzLCAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKKyAgICAxOTQ4OTUsIDc4MzY3LCAxMjczNzcsIDAsIDkzOTYzLCA5MDczLCA0MjU4NSwgNjQzMDIsIDEwNzA0LCA2NTAzMCwgNDc4NywgCisgICAgMCwgNzQ4MjksIDAsIDY1NDIzLCAwLCAxMjgxMTgsIDk1NzAsIDU1MjYwLCA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAwLCAKKyAgICA5MTc2MjQsIDQzNzQwLCAwLCA0MDk2NiwgOTE3NjIyLCAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDc0MjM3LCAKICAgICA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgNDE5NTQsIDkxNzYxNywgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCAKICAgICA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCA0MzMyMCwgMTE5MTU5LCAxMjgxODMsIDE5NDg3NCwgNjQ2OCwgCi0gICAgNDE5NzYsIDk3MjAsIDkxNzYwNiwgMTE3NjcsIDQxOTcwLCAwLCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgMTIxODAsIAotICAgIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgCi0gICAgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgNDE0NjYsIDAsIDkyNTg4LCAxMTQ1MCwgMCwgMzYzOCwgCi0gICAgMTIzNTQsIDAsIDMyMTYsIDAsIDIzNTgsIDkyNjA2LCA4NjMzLCAwLCAwLCAxMTkxODIsIDY5MjQ0LCAwLCAwLCAxMTc1OSwgCi0gICAgMTk0OTAzLCA2MzY4LCA3NDgyMywgMCwgNDE0MjMsIDgwNzgsIDEwNTA0LCAwLCA0MTY5OCwgNDIyMzcsIDAsIDcwMDIsIDAsIAotICAgIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCAwLCA0MTA1MCwgNDE0NzMsIDEwNDY2LCAxMzA5OSwgMCwgMCwgMCwgCi0gICAgNjQzNSwgMCwgMTEzNjIsIDAsIDAsIDY1MzgyLCAwLCA0MTQyMCwgMCwgMzYyNSwgNzgxNTcsIDQxNDA5LCAwLCA2OTYzOSwgCi0gICAgMjA0MSwgOTE3OCwgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgMCwgMCwgMCwgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAKLSAgICAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgCi0gICAgMCwgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNzQ3NTksIDAsIDAsIDAsIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCAKLSAgICAwLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDAsIAotICAgIDM5MTcsIDAsIDExNzMyLCAwLCAwLCA0MTQ0OCwgNDE0NjEsIDEyODgyMywgMCwgMTI3OTEyLCAwLCA4ODE5LCAxMjY2MywgMCwgCi0gICAgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCAwLCAwLCA5MDk0LCAwLCAxMTc1OCwgCi0gICAgNjg0MjUsIDAsIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDAsIDc4NjIsIDY0NTUxLCAKLSAgICAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDAsIDI5MTEsIDAsIAotICAgIDQxMTc4LCA1NDI3LCA2NDgyMywgMCwgMCwgMzc4NywgNDExNzQsIDAsIDQxNDU4LCAwLCA0MTQ2MywgNDI0MTMsIDExMjkyLCAKLSAgICAyNDA2LCA3NzUsIDAsIDY1NTg0LCAwLCA2MDc0LCA5NjE4LCAxMjg2NjgsIDAsIDQzNDQwLCAwLCAxOTQ5MDEsIDQxNDM2LCAKLSAgICAzNjU2LCAwLCAxOTQ4OTksIDQxNDU2LCAwLCAxNTk5LCAxMTMzMywgMCwgNjcwMywgODUxMywgMCwgMTYxMywgMCwgNjg0NTYsIAotICAgIDEyNTk4LCAwLCAxMjA3MzQsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDAsIAorICAgIDQxOTc2LCA5NzIwLCA5MTc2MDYsIDExNzY3LCA0MTk3MCwgMTk0NTk2LCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgCisgICAgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAKKyAgICAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgNDE0NjYsIDAsIDkyNTg4LCAxMTQ1MCwgMCwgCisgICAgMzYzOCwgMTIzNTQsIDAsIDMyMTYsIDAsIDIzNTgsIDkyNjA2LCA4NjMzLCAwLCA5ODM3MzYsIDExOTE4MiwgNjkyNDQsIDAsIAorICAgIDAsIDExNzU5LCAxOTQ5MDMsIDYzNjgsIDc0ODIzLCAwLCA0MTQyMywgODA3OCwgMTA1MDQsIDEyNzU1OCwgNDE2OTgsIAorICAgIDQyMjM3LCAwLCA3MDAyLCA5ODM2NjksIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCAwLCA0MTA1MCwgNDE0NzMsIAorICAgIDEwNDY2LCAxMzA5OSwgMCwgMCwgMCwgNjQzNSwgMCwgMTEzNjIsIDAsIDAsIDY1MzgyLCAwLCA0MTQyMCwgMCwgMzYyNSwgCisgICAgNzgxNTcsIDQxNDA5LCAwLCA2OTYzOSwgMjA0MSwgOTE3OCwgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgMCwgMCwgMCwgCisgICAgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCAKKyAgICA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgMCwgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNzQ3NTksIDAsIDAsIDAsIAorICAgIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCA5ODMxNDAsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIAorICAgIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMCwgMzkxNywgMCwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIAorICAgIDQxNDYxLCAxMjg4MjMsIDAsIDEyNzkxMiwgMCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCisgICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgMCwgMCwgOTA5NCwgMCwgMTE3NTgsIDY4NDI1LCAwLCAxMDY0LCA0MjQ2NywgCisgICAgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgCisgICAgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCA5ODMyNjEsIDI5MTEsIDAsIDQxMTc4LCA1NDI3LCA2NDgyMywgMCwgMCwgCisgICAgMzc4NywgNDExNzQsIDAsIDQxNDU4LCAwLCA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCAKKyAgICA2OTkyMywgNjA3NCwgOTYxOCwgMTI4NjY4LCA5ODM5NDMsIDQzNDQwLCAwLCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCAwLCAKKyAgICAxMjA2MDAsIDQxNDU2LCAwLCAxNTk5LCAxMTMzMywgMCwgNjcwMywgODUxMywgMCwgMTYxMywgMCwgNjg0NTYsIDEyNTk4LCAKKyAgICA5ODMxOTEsIDEyMDczNCwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNzAwMjksIAogICAgIDk5MDUsIDAsIDY1NzMwLCAwLCAxMjAzNzQsIDg0MjcsIDEyMDM3NSwgNTUyNDYsIDEyMDM3NiwgMCwgMTE0OTcsIDY0Njg3LCAKICAgICA3NDAwOCwgNDI1OTIsIDM4NzEsIDAsIDEyODMwNSwgOTExMSwgNTc0MSwgMCwgMTk0ODQ2LCAxMjAzNjYsIDExOTExMSwgCiAgICAgMTIwNzQ1LCAwLCAxMjAzNjgsIDAsIDExNjQ4LCAwLCAxOTQ4NzMsIDEyMDM2NCwgNDE1ODcsIDEyMDM2NSwgMCwgNzQzMjIsIAogICAgIDQyMTEzLCAwLCAxMjcxNTUsIDEyMTcyLCAwLCA3NDUzMCwgNjUyOTgsIDY1NzIzLCAxOTQ4NDAsIDczODcxLCA2NTcyNCwgCi0gICAgNzkyOCwgMTIwMzU0LCAwLCA0MTU5NSwgNzM3MzAsIDAsIDQyMTE4LCA3MzgzMCwgNjYwNDIsIDEwMzU1LCAwLCA3ODc1LCAwLCAKLSAgICA0MTU5OCwgMzk5MywgMCwgMTU0NSwgNDA5NzEsIDUzNiwgMTI4NTIxLCA0MzAyOSwgMCwgMCwgNjUxNzMsIDY1Mjg2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MTM3NSwgNTQwMiwgMCwgMCwgMTY4NywgMTIwNTAzLCAwLCAwLCA3ODE5NCwgNjQzMjYsIAotICAgIDQwOTY5LCAxMDUyNiwgNzg3NTMsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDAsIDY1NDYwLCAxMjI0MiwgCi0gICAgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDAsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgMCwgMTA3MTAsIDAsIAotICAgIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDE5NTA5MSwgMCwgMTE5NjM2LCA2Nzg1NywgMTIwNjg3LCAwLCAwLCAKLSAgICAxMTc1NSwgNjYzMDUsIDAsIDAsIDEwOTE3LCAxMjA3NjcsIDAsIDExMjcyLCAyMDQwLCA0MTI0NywgNDEzMjYsIDE5NTA2MCwgCi0gICAgMTc0MSwgNDIzNzAsIDEyMjcsIDAsIDAsIDExNDEzLCAwLCAwLCA1MjgzLCAxNTg2LCA0OTc4LCAwLCAxOTg0LCAxOTQ2MjEsIAotICAgIDAsIDkyMjkzLCA0MDk4NCwgMTI4MzA2LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMCwgNDE2NjMsIDAsIDAsIDAsIDkyMzcsIAotICAgIDkzODUsIDQxNjQ4LCAwLCAwLCAwLCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIDQxMjg3LCA5MjYxMCwgMCwgMCwgCi0gICAgNDIyMTksIDEyODI1NywgMCwgNDE5ODcsIDQxNjc2LCAwLCAxMjA4MjMsIDAsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgCi0gICAgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgMCwgMTE0NTEsIDAsIDEyODgyMiwgNDI2MzEsIDIzNTksIDAsIDY3ODQ0LCAKLSAgICA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCA2NDM2OCwgMCwgMTI4Nzk1LCAwLCAzOTcsIDQzNjIyLCA0MjEzOSwgCi0gICAgOTU0NywgOTU5MCwgMTI4MjM4LCAxNjE0LCA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAwLCA0MjgsIDk2MjAsIAotICAgIDE0NjYsIDc4MTEyLCAxMDk4MiwgMTE4ODMxLCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDAsIDAsIAotICAgIDAsIDU4MDQsIDExOTc2LCA4NTU0LCA5MjcyMSwgMCwgMCwgOTA1NywgNDIyOTQsIDQxMjE4LCAwLCAwLCA3ODEzNywgMTg4MywgCi0gICAgMTA5NTIsIDgwNDgsIDc4MTQyLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAwLCAxMjg2ODQsIDAsIDQ0MDcsIDAsIDY1ODA5LCAKLSAgICAxMTkwNzQsIDE5NDgyMSwgODQ0OCwgNzE0MSwgNzQxODMsIDAsIDEyNjc1LCAxMjY1OSwgMCwgNDIzNjMsIDEyMDYyNCwgCi0gICAgMTk0ODI0LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgCi0gICAgMTIwNTAwLCAwLCA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgCi0gICAgODcwOSwgMTI4MjgzLCAwLCAxMjA2MzcsIDQyNDE5LCA2NDc5OSwgNDIwNDcsIDAsIDAsIDg0NzAsIDExODA3LCA2NTg5NywgCi0gICAgNTc3LCAwLCAwLCA3NDMwMCwgMCwgMTI3MzA4LCA3NDg0MCwgMCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgCi0gICAgNDI2NDMsIDk2ODMsIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgMCwgNjYzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MzE3LCAKLSAgICA5MTc2MTIsIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgCi0gICAgNjYzMjQsIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIAotICAgIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAKLSAgICAxMjAzNzEsIDAsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgMzU0NywgMCwgMCwgMCwgMCwgNDMyMTYsIDYwODksIAotICAgIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCA3NDQsIDAsIAotICAgIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCAwLCA2NTEzNiwgCi0gICAgMTI3MTM2LCAwLCAwLCAxMDg1MSwgMCwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCAxMjA3NzgsIDc4NjQ4LCAKLSAgICAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgMCwgMCwgNjE3NywgCi0gICAgOTAyMCwgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgMTI4MDI3LCA2NzY3MywgNzUxOCwgODc1NCwgMCwgCi0gICAgMTIwMjM3LCAyMTM3LCA0MzA4MSwgMCwgMCwgOTEzNiwgMTIwMjQwLCA0NDAxLCA0MTI4MCwgMCwgODk3NCwgMjMwOCwgMCwgCi0gICAgNzQxNDksIDAsIDIzMTgsIDAsIDY2MzYxLCA4MTk4LCAwLCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA2NTI2NiwgMTIwODI3LCAKLSAgICA3NDMwNywgMCwgNjk3MCwgNTQwNCwgNDMzMzIsIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDAsIDAsIAotICAgIDExODk0OSwgMTA4NzQsIDY1NTA1LCAxMjgwODMsIDAsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIDQyMDUyLCAwLCAwLCAKLSAgICA2NzY1MSwgMCwgOTY2NSwgOTIzMDAsIDAsIDEzMTgxLCAwLCAwLCAwLCAwLCA3NDE0OCwgMCwgMCwgMTIwMjI1LCAxMjAyMjksIAotICAgIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCAwLCAwLCAwLCA0MTE0OCwgODY4MywgNzU5NCwgMTI3NTE5LCAwLCAxMTkwOTAsIAotICAgIDEwODY5LCA0MzQ1OCwgNDExNDYsIDkyNDA3LCAxMTQ0MSwgMCwgMzUxMiwgMTE5NjMzLCAwLCA4MTAzLCAwLCAwLCA2NTE4NCwgCi0gICAgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgMCwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgMCwgMCwgMCwgMCwgMTk5NDIsIDAsIAotICAgIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIDAsIDAsIDAsIDM4MDQsIDEzMDcwLCAKLSAgICAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIDAsIDM1OTksIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgCi0gICAgNjY2OTcsIDAsIDExNjg0LCAwLCA5MjQ4NiwgMCwgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgMCwgNDIwNDYsIDc4MjQxLCAKLSAgICA0MDM2LCAwLCAwLCAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDAsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgCi0gICAgOTI3MjIsIDAsIDAsIDEyNzc3MiwgMCwgOTE3NTQyLCAwLCAwLCA2NTM5LCAwLCAwLCAwLCAxOTQ4NTYsIDAsIDEyMDQ5MiwgCi0gICAgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgMCwgMTI3MTk0LCAwLCAxOTQ4NTQsIDY1NzkyLCAKLSAgICAwLCAxMTg5NjgsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDE5NDg1MCwgMCwgMCwgNDkxOSwgMTA1OTAsIDAsIDc3NTUsIDAsIAotICAgIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgMCwgMTYxNywgODA1MCwgCi0gICAgMCwgNTAxNSwgMCwgMTE5MTc0LCA0MjU5MCwgMTk0ODcxLCAxNzU2LCA3ODE4MSwgMCwgNjU3NjgsIDYzNTIsIDQxODkyLCAwLCAKLSAgICA3NTU1LCAxMzEwMywgNTQwOCwgMjgxNywgMTIxNCwgMCwgOTIzMzUsIDAsIDAsIDAsIDAsIDEyNzE5NSwgNzk1NywgODY4OSwgCi0gICAgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMTk0ODEzLCAwLCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCAwLCAKLSAgICAxMTkwMjgsIDAsIDAsIDAsIDIzNDEsIDg0NTAsIDg0ODQsIDg0NzQsIDAsIDAsIDAsIDg0NjEsIDEyODEwMiwgMTIxNTMsIAotICAgIDEyNzk5LCAwLCA0MzcwOSwgNDM3MDgsIDk0NTEsIDc1NzEsIDEzMDczLCAwLCAwLCA2ODEsIDAsIDcwMywgMCwgMzI3MiwgCi0gICAgODc4MSwgMTI4OTQsIDAsIDExNzA5LCA5MjI4OCwgNzQ0NDYsIDAsIDkyNTMyLCAwLCAxMTMzOCwgMTIwNzY4LCAzMjc2LCAwLCAKLSAgICAwLCA2NTkyOCwgMCwgMCwgNjUwMjEsIDY0Nzk1LCA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIAotICAgIDAsIDAsIDY4NDc4LCAxNjMsIDU3NiwgOTg5NSwgMTY1NSwgNzg4MTcsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIDAsIDAsIDAsIAotICAgIDAsIDEwMDM5LCAwLCAwLCA1NjIzLCA1NzE3LCA1Nzc2LCAwLCAwLCAwLCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgCi0gICAgMCwgMCwgNjc4NDgsIDAsIDAsIDAsIDg4ODcsIDAsIDcyOTUsIDExMDMxLCAwLCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIAotICAgIDEwNDEyLCA4NzU1LCAwLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDAsIDAsIDg4MTAsIDc0NDk5LCA2ODYsIDAsIAotICAgIDAsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCA2NTExOCwgMCwgCi0gICAgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDAsIDI0MDEsIDY4MTQ0LCA4NzkyLCAwLCAwLCA2NTQ1NSwgMCwgOTIyNDYsIDAsIAotICAgIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3NDEzNSwgMCwgCi0gICAgMTE4OTQ1LCA3ODExOCwgNzM4NTEsIDMwMTAsIDY0NDEsIDc4MTIyLCAxNDU4LCA0MTQ3NSwgMTI4NjcyLCAwLCAwLCAKLSAgICAxMTQ3OSwgMCwgMCwgNjM1MCwgMTI4NjQsIDY5Njc0LCA3ODExNCwgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgCi0gICAgMTI4Njg2LCA0MDUyLCAwLCA3NjI2LCAwLCAwLCAxMDQ1LCAwLCA1NjMxLCA0MTExMywgMCwgMCwgNDM3MDcsIDc0MTI3LCAwLCAKLSAgICAwLCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgMCwgMCwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIAotICAgIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIAotICAgIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIAotICAgIDAsIDQzNDQ2LCAwLCA2NjUxMywgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDAsIDYzNzUsIDI2NzMsIDAsIDExODE0LCAKLSAgICAwLCA0NDg4LCAwLCAxMjczMzYsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIAotICAgIDQ0ODcsIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAwLCA2MTQsIDc4MTkxLCAKLSAgICAxMjczMjUsIDEyMDYxNSwgMCwgNzgyNjIsIDEyODY2OSwgMTI3MzIzLCAwLCA0MzEyMSwgMCwgMCwgOTI1MTMsIDEwNTAsIAotICAgIDc1NDksIDAsIDAsIDkzMTQsIDAsIDAsIDEyMDYxNiwgMCwgMTAwNTcsIDAsIDEyNzMxMywgMCwgNjY1MDQsIDAsIDAsIAotICAgIDIzMDcsIDAsIDY0MzMzLCAxMjczMTIsIDEyODU0NywgNzM4NzMsIDAsIDAsIDAsIDEyNzk3MywgMTI4NzA4LCAwLCAxMDM2MCwgCi0gICAgNjc0NiwgMCwgOTIyNDUsIDQ0MCwgMCwgMTMwODUsIDkyMzMsIDc0MjE2LCAwLCAwLCA5OTU3LCAwLCA2NjQ0NywgODA0NiwgCi0gICAgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMCwgMTUyMSwgOTg5NiwgMCwgMTA0ODcsIDAsIAotICAgIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgMCwgMCwgNTIzNywgCi0gICAgNjk3MTQsIDAsIDEwMTAzLCA1MjQ3LCA0NzY5LCAwLCAxMTg5NzcsIDEyODczLCA1NzY0LCAwLCAwLCAzMDA4LCA0ODk2LCAwLCAKLSAgICAxMjA4NywgMCwgNTUyMzEsIDQxMTAzLCAwLCA2NDU2NSwgNDc3MywgMCwgOTI3MTcsIDAsIDQ3NzAsIDAsIDkxNzU2NywgCi0gICAgODczMSwgNjUzNzgsIDEyNzM2MiwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDAsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCAKLSAgICA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAwLCAwLCAwLCAwLCA3NDc3NiwgNDI4MSwgNDc2OCwgMCwgNDE1MzUsIDQwOTksIDkwMTcsIAotICAgIDAsIDAsIDc4MDk1LCAwLCA3ODA5NiwgMCwgMCwgMCwgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDAsIDAsIDEyODAyMSwgMjEzNCwgCi0gICAgMCwgMTAxMTYsIDk4NzcsIDkyMzI5LCAwLCAwLCA3MDk1LCAwLCA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIDI0MjcsIAotICAgIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIDE5NTAwMywgOTk2MiwgMCwgMTIyMjMsIDAsIDAsIDE0MzQsIDEyMDI1NCwgNTYzNywgCi0gICAgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCAwLCA3ODEyMSwgMCwgMCwgNTUyODMsIDAsIDAsIDc0NDM3LCAxMTU2LCA4NzQwLCAKLSAgICA5MjQxNSwgMzc4MiwgNjQzMzEsIDAsIDQxMzcwLCAxMDE0LCA4MjYxLCAwLCAwLCAxMDgzNSwgMCwgNjU1MzYsIDAsIAotICAgIDEyMDQ2MywgMCwgNzcwMiwgMTE4ODI0LCAwLCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgCi0gICAgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgMCwgMTI4NTc2LCAwLCA0MjI1NywgNTY5NiwgCi0gICAgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgMCwgMCwgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIAotICAgIDQxNDkwLCAwLCAxNDI2LCA2ODIxNywgMCwgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgCi0gICAgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAKLSAgICAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDAsIAotICAgIDM5NDUsIDkyNTg5LCAwLCAwLCAwLCAwLCA3ODIxMiwgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgMCwgNzg3MzEsIDU2NDgsIAotICAgIDY0NzQ4LCAxOTQ5MTAsIDAsIDEwMjA1LCAzNTQ1LCAwLCA2OTg0LCAwLCA3NDA1MSwgMCwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgCi0gICAgMCwgMCwgMCwgOTkxMSwgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgMCwgMTE4ODM2LCAwLCA3ODQyNywgCi0gICAgMTE0MCwgNzg0MjYsIDAsIDEwMTU5LCAwLCAwLCA4MTI4LCAwLCAwLCA5MTc5NjUsIDE4MTUsIDE5OTEwLCA4OTAsIDAsIAotICAgIDMyNjcsIDkyMjkxLCAwLCAxMDEyMywgMCwgNDQxMCwgMTA0MSwgMTA1NzYsIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCAwLCAKKyAgICA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAwLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgCisgICAgOTgzMTEwLCA3ODc1LCAwLCA0MTU5OCwgMzk5MywgMCwgMTU0NSwgNDA5NzEsIDUzNiwgMTI4NTIxLCA0MzAyOSwgMCwgMCwgCisgICAgNjUxNzMsIDY1Mjg2LCAwLCAwLCAwLCAwLCAwLCAwLCA0MTM3NSwgNTQwMiwgMCwgMCwgMTY4NywgMTIwNTAzLCA5MTc4MTcsIAorICAgIDAsIDc4MTk0LCA2NDMyNiwgNDA5NjksIDEwNTI2LCA3ODc1MywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCA3ODc1NiwgMCwgCisgICAgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgMCwgMCwgODI2NiwgNDEwMDYsIDY1NzIyLCAwLCAKKyAgICAxMDcxMCwgMCwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgMTk1MDkxLCAwLCAxMTk2MzYsIDY3ODU3LCAxMjA2ODcsIAorICAgIDAsIDk4MzA2NiwgMTE3NTUsIDY2MzA1LCAwLCAwLCAxMDkxNywgOTM5NzksIDAsIDExMjcyLCAyMDQwLCA0MTI0NywgCisgICAgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDAsIDAsIDExNDEzLCAwLCAwLCA1MjgzLCAxNTg2LCA0OTc4LCAwLCAKKyAgICAxOTg0LCAxMTgzMCwgMCwgOTIyOTMsIDQwOTg0LCAxMjgzMDYsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAwLCA0MTY2MywgMCwgCisgICAgMCwgMCwgOTIzNywgOTM4NSwgNDE2NDgsIDAsIDE5NDU4MCwgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCAKKyAgICA0MTI4NywgOTI2MTAsIDAsIDAsIDQyMjE5LCAxMjgyNTcsIDAsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAxMjA4MjMsIAorICAgIDk4MzE0NCwgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgMTE0NTEsIAorICAgIDk4MzExMSwgMTI4ODIyLCA0MjYzMSwgMjM1OSwgMCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgMTMxMzMsIAorICAgIDY0MzY4LCA5ODMyMzMsIDEyODc5NSwgMCwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgCisgICAgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMCwgNDI4LCA5NjIwLCAxNDY2LCA3ODExMiwgMTA5ODIsIAorICAgIDExODgzMSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAwLCAwLCAwLCA1ODA0LCAxMTk3NiwgODU1NCwgCisgICAgOTI3MjEsIDAsIDAsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMCwgMCwgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3ODE0MiwgCisgICAgNDEyMjUsIDkyNjIxLCA0MjkxNSwgOTgzNjY3LCAxMjg2ODQsIDAsIDQ0MDcsIDAsIDY1ODA5LCAxMTkwNzQsIDE5NDgyMSwgCisgICAgODQ0OCwgNzE0MSwgNzQxODMsIDAsIDEyNjc1LCAxMjY1OSwgMCwgNDIzNjMsIDEyMDYyNCwgMTk0ODI0LCA1NTI3MywgCisgICAgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTIwNTAwLCAxMTkxNTgsIAorICAgIDcxNDAsIDEwOTc3LCAxMjczNzgsIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIAorICAgIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgNjQ3OTksIDQyMDQ3LCAwLCAwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgCisgICAgOTgzNzUxLCA3NDMwMCwgMCwgMTI3MzA4LCA3NDg0MCwgMCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIAorICAgIDk2ODMsIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgMCwgNjYzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MzE3LCA2OTk0NSwgCisgICAgNjYzMTUsIDIxMDYsIDEyMDIyMiwgMTEyNzMsIDAsIDQzMDA0LCA3NTQxLCAwLCAwLCA5NjEsIDY0MzA3LCA2NjMyNCwgCisgICAgNjQ5MDYsIDEyODU5MSwgMzEwNiwgNjU5MTcsIDQxMjg0LCAxNjk2LCAwLCA4OTEsIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIAorICAgIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDAsIDAsIDAsIDE5NDgyNiwgOTI2ODgsIDAsIDIzMjIsIDEyMDM3MSwgCisgICAgOTgzNTg0LCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDAsIDAsIDEyODc5MywgOTgzMzkwLCA0MzIxNiwgCisgICAgNjA4OSwgNzg2ODIsIDAsIDEyMDU3OCwgNDE3MCwgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIAorICAgIDc0NCwgMCwgMCwgMCwgNjU4MjMsIDEyNzgyNiwgMCwgMzU1MSwgMCwgMCwgNDYyMywgNTUyNjgsIDAsIDQ1OTgsIDk4MzE2MiwgCisgICAgNjUxMzYsIDEyNzEzNiwgMCwgMCwgMTA4NTEsIDAsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgMTIwNzc4LCAKKyAgICA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDAsIDAsIAorICAgIDYxNzcsIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDIyMTQsIAorICAgIDg3NTQsIDAsIDEyMDIzNywgMjEzNywgNDMwODEsIDAsIDAsIDkxMzYsIDEyMDI0MCwgNDQwMSwgNDEyODAsIDAsIDg5NzQsIAorICAgIDIzMDgsIDAsIDc0MTQ5LCAwLCAyMzE4LCA5ODMxODMsIDY2MzYxLCA4MTk4LCAwLCA2NDM2MCwgMTI2MDEsIDQyNTM2LCAKKyAgICA2NTI2NiwgMTIwODI3LCA3NDMwNywgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgCisgICAgMTI2OTg5LCA2Mzg1LCAwLCAwLCAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTI4MDgzLCAwLCA0MjA1MywgMjA3NSwgNDIwNTcsIAorICAgIDExMDgzLCA0MjA1MiwgMCwgMCwgNjc2NTEsIDAsIDk2NjUsIDkyMzAwLCA5ODM2NTcsIDEzMTgxLCAwLCAwLCAwLCA3MDA4OCwgCisgICAgNzQxNDgsIDAsIDAsIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgMCwgOTQwOTYsIDk4MzkzNywgCisgICAgNDExNDgsIDg2ODMsIDc1OTQsIDEyNzUxOSwgMCwgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIAorICAgIDAsIDM1MTIsIDExOTYzMywgOTgzNzAwLCA4MTAzLCAwLCAwLCA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgMCwgCisgICAgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgMCwgMCwgMCwgMCwgMTk5NDIsIDAsIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAKKyAgICAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIDk0MDY0LCAwLCAwLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAKKyAgICAwLCAzNTk5LCAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIDY2Njk3LCAwLCAxMTY4NCwgMCwgCisgICAgOTI0ODYsIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgMCwgNDIwNDYsIDc4MjQxLCA0MDM2LCAxMjY0ODEsIDAsIAorICAgIDEyODIxMywgMTk0ODYxLCAwLCAxMTk1NCwgOTM5NzgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIDAsIAorICAgIDAsIDEyNzc3MiwgMCwgOTE3NTQyLCAwLCAwLCA2NTM5LCAwLCAwLCAwLCAxOTQ4NTYsIDAsIDEyMDQ5MiwgNDExOTAsIAorICAgIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgMCwgMTI3MTk0LCAwLCAxOTQ4NTQsIDY1NzkyLCAwLCAKKyAgICAxMTg5NjgsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDE5NDg1MCwgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgCisgICAgMCwgMCwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIDY1MTI2LCAwLCAxMjcwMDQsIDAsIDEyMTg4LCA5ODM2NTksIAorICAgIDE2MTcsIDgwNTAsIDAsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDE5NDg3MSwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCAKKyAgICA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgOTgzMTI1LCAwLCAKKyAgICAwLCAwLCAxMjcxOTUsIDc5NTcsIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDE5NDgxMywgMCwgNTUyODYsIAorICAgIDcwNzMsIDY1ODUwLCAxMjMyNywgOTgzOTM5LCAxMTkwMjgsIDAsIDAsIDAsIDIzNDEsIDg0NTAsIDg0ODQsIDg0NzQsIAorICAgIDk4MzI1MiwgMCwgNzAwNzksIDg0NjEsIDEyODEwMiwgMTIxNTMsIDEyNzk5LCAwLCA0MzcwOSwgNDM3MDgsIDk0NTEsIAorICAgIDc1NzEsIDEzMDczLCAwLCAwLCA2ODEsIDk4MzI0NiwgNzAzLCAwLCAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCAKKyAgICA5MjI4OCwgNzQ0NDYsIDAsIDkyNTMyLCAwLCAxMTMzOCwgMTIwNzY4LCAzMjc2LCAwLCAwLCA2NTkyOCwgMCwgMCwgNjUwMjEsIAorICAgIDY0Nzk1LCA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIDAsIDAsIDY4NDc4LCAxNjMsIDU3NiwgCisgICAgOTg5NSwgMTY1NSwgNzg4MTcsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIDk4MzEyMiwgMCwgMCwgMCwgMTAwMzksIDAsIAorICAgIDk4MzkzNiwgNTYyMywgNTcxNywgNTc3NiwgMCwgMCwgMCwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIDAsIDAsIAorICAgIDY3ODQ4LCAwLCAwLCAwLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCAwLCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIAorICAgIDEwNDEyLCA4NzU1LCAwLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDAsIDk4MzcwMiwgODgxMCwgNzQ0OTksIDY4NiwgCisgICAgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKKyAgICA2NTExOCwgMCwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDAsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2MzksIDAsIDY1NDU1LCAKKyAgICAwLCA5MjI0NiwgMCwgMTE5MTI5LCAwLCAxMjg4NiwgMTI3OTIwLCA2NjYyNCwgMCwgNDM1NTcsIDEwMzAwLCAxMDE2MSwgCisgICAgMTAzOTYsIDc0MTM1LCA5ODM0NDUsIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgCisgICAgNDE0NzUsIDEyODY3MiwgOTM5NzUsIDAsIDExNDc5LCAwLCAxMjAzNTYsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzgxMTQsIAorICAgIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIDEyODY4NiwgNDA1MiwgMCwgNzYyNiwgMCwgMCwgMTA0NSwgMCwgCisgICAgNTYzMSwgNDExMTMsIDAsIDAsIDQzNzA3LCA3NDEyNywgMCwgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIAorICAgIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgMCwgNDI2MjUsIDkxNzYyNywgNzgwODQsIDQxNDQzLCAwLCAxMjgyMDYsIAorICAgIDAsIDE3NzQsIDE1MjMsIDAsIDAsIDQxNDQ1LCA3ODIzNiwgMCwgODU2NywgNDE0NDIsIDM5ODgsIDAsIDc4MjM3LCAKKyAgICAxMTg5MTAsIDAsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMCwgMCwgNDM0NDYsIDAsIDY2NTEzLCAKKyAgICA2MjU2LCAwLCA1NzksIDU1MjE4LCAxMDIwNiwgOTgzMDc1LCA2Mzc1LCAyNjczLCAwLCAxMTgxNCwgMCwgNDQ4OCwgMCwgCisgICAgMTI3MzM2LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAxMjc4NDksIAorICAgIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMCwgNjE0LCA3ODE5MSwgMTI3MzI1LCAxMjA2MTUsIAorICAgIDAsIDc4MjYyLCAxMjg2NjksIDEyNzMyMywgMCwgNDMxMjEsIDAsIDAsIDkyNTEzLCAxMDUwLCA3NTQ5LCAwLCAwLCA5MzE0LCAKKyAgICAwLCAwLCAxMjA2MTYsIDAsIDEwMDU3LCAwLCAxMjczMTMsIDAsIDY2NTA0LCA5ODMxNzEsIDAsIDIzMDcsIDAsIDY0MzMzLCAKKyAgICAxMjczMTIsIDEyODU0NywgNzM4NzMsIDAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgMCwgMTAzNjAsIDY3NDYsIDAsIAorICAgIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMCwgOTk1NywgMTI4Mjg1LCA2NjQ0NywgODA0NiwgCisgICAgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMCwgMTUyMSwgOTg5NiwgOTM5NjUsIDEwNDg3LCAKKyAgICA2OTg3OCwgMTI1MjcsIDAsIDc5NzAsIDAsIDEyODY2MCwgMCwgNjU3NjksIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAKKyAgICA5ODMyMjksIDAsIDUyMzcsIDY5NzE0LCAwLCAxMDEwMywgNTI0NywgNDc2OSwgMCwgMTE4OTc3LCAxMjg3MywgMjI4MywgCisgICAgOTgzMjMxLCAwLCAzMDA4LCA0ODk2LCAwLCAxMjA4NywgMCwgNTUyMzEsIDQxMTAzLCAwLCA2NDU2NSwgNDc3MywgMCwgCisgICAgOTI3MTcsIDcwMDc0LCA0NzcwLCAwLCA5MTc1NjcsIDg3MzEsIDY1Mzc4LCAxMjczNjIsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAKKyAgICAxMjY2MDAsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAwLCAwLCAwLCAwLCAKKyAgICA3NDc3NiwgNDI4MSwgNDc2OCwgMCwgNDE1MzUsIDQwOTksIDkwMTcsIDAsIDAsIDc4MDk1LCAwLCA3ODA5NiwgMCwgMCwgMCwgCisgICAgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDAsIDAsIDEyODAyMSwgMjEzNCwgMCwgMTAxMTYsIDk4NzcsIDkyMzI5LCAwLCAwLCAKKyAgICA3MDk1LCAwLCA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIDI0MjcsIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIAorICAgIDE5NTAwMywgOTk2MiwgMCwgMTIyMjMsIDAsIDAsIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCAKKyAgICAwLCA3ODEyMSwgMCwgMCwgNTUyODMsIDAsIDAsIDc0NDM3LCAxMTU2LCA4NzQwLCA5MjQxNSwgMzc4MiwgNjQzMzEsIDAsIAorICAgIDQxMzcwLCAxMDE0LCA4MjYxLCAwLCAwLCAxMDgzNSwgMCwgNjU1MzYsIDAsIDEyMDQ2MywgMCwgNzcwMiwgMTE4ODI0LCAwLCAKKyAgICA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIAorICAgIDU2OTcsIDExODc4OCwgMCwgMTI4NTc2LCAwLCA0MjI1NywgNTY5NiwgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgMCwgMCwgCisgICAgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCA5ODMxNTMsIDE0MjYsIDY4MjE3LCAwLCAKKyAgICA2ODQ0NywgNDIyMDQsIDU1MjcwLCA4NTcxLCAxOTQ5OTEsIDc4MDY3LCAwLCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgCisgICAgMCwgNDIwMjIsIDAsIDEwMjgxLCAwLCA1NjUwLCA0MzE5NCwgNjQ3MTIsIDEwNzQ0LCAwLCA5OTAsIDU2NDcsIDAsIDczODcsIAorICAgIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIDEyODc5LCAxMTAxOCwgOTgzOTIxLCAzOTQ1LCA5MjU4OSwgMCwgMCwgMCwgMCwgCisgICAgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDAsIDc4NzMxLCA1NjQ4LCA2NDc0OCwgMTk0OTEwLCA3ODczMywgMTAyMDUsIAorICAgIDM1NDUsIDk4MzU4NSwgNjk4NCwgMCwgNzQwNTEsIDk4MzY0NiwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMCwgMCwgMCwgOTkxMSwgCisgICAgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgOTgzNjUzLCAxMTg4MzYsIDk4MzczOSwgNzg0MjcsIDExNDAsIAorICAgIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMCwgMCwgOTE3OTY1LCAxODE1LCAxOTkxMCwgODkwLCAwLCAzMjY3LCAKKyAgICA5MjI5MSwgMCwgMTAxMjMsIDAsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgMCwgCiAgICAgMTI4MzQ3LCAwLCAwLCAwLCAxOTkzOCwgNjU5MDYsIDEyNzgxOSwgMCwgMCwgMzI5OCwgNTM3NSwgMTAxNDIsIDAsIDgyMTUsIAotICAgIDAsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgMCwgMTI4MjE1LCAwLCAwLCAwLCA0MTM4MiwgMCwgMTI4NjUzLCA1MTczLCA2NTM0OCwgCisgICAgMCwgNjEzNCwgNDEyNDYsIDY0NDAyLCAwLCA2OTg5OSwgMCwgMCwgMCwgNDEzODIsIDAsIDEyODY1MywgNTE3MywgNjUzNDgsIAogICAgIDUyNywgMCwgMCwgOTI2MTIsIDEyODI1MCwgNzg3OTcsIDExOTE1LCAwLCAwLCAxMDA3MiwgMCwgNDI2OTUsIDIzMjksIAotICAgIDQyMjUwLCAwLCAxMjg4NjQsIDY5NjY3LCAxMjI0NSwgMTU2OCwgMCwgMCwgMCwgMTI4MTIwLCAwLCA3NDMyOCwgOTI3MDgsIAotICAgIDc0NzY5LCAwLCAxMTkwODcsIDkwNjksIDYxNDQsIDAsIDAsIDczODIyLCAwLCAxMjgwMTAsIDY0OTE3LCA0MTUyMSwgCi0gICAgMTE4OTM0LCA0OTQsIDEzMjUwLCAwLCA2NTA5OCwgNjM2NCwgOTU2LCAwLCAxMjgzMCwgMTA0NjIsIDczNzQwLCAwLCAwLCAwLCAKLSAgICAwLCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMCwgMCwgOTIyOTQsIDAsIDEwNDQsIAotICAgIDQxMjc2LCAwLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDAsIDAsIDAsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgOTE3ODQ3LCAKLSAgICA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCAwLCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDAsIDAsIDAsIDAsIDEwNTcsIDU2NiwgCi0gICAgNDI2OTYsIDAsIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIDkyNTEwLCAzMDA2LCAKLSAgICA0NjIwLCAxMjcyMzcsIDAsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCAwLCAwLCAKLSAgICA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgMCwgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAKLSAgICAwLCAwLCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIDc0MzQ5LCA2NjQ3OSwgMCwgMCwgMCwgMCwgNDI0OTAsIDY4OSwgNjUwOCwgCi0gICAgNDE2MywgNDIyOTgsIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCAwLCAxMjEzMCwgMCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgCi0gICAgNjY0ODEsIDEyNzg1MCwgMCwgMCwgNjM1OSwgMCwgNDM0NzEsIDAsIDAsIDAsIDEyNzI3NCwgMCwgNjM1OCwgNjM2MSwgCi0gICAgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMCwgNDM2ODUsIDAsIDAsIDAsIAotICAgIDAsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDAsIDEyMDQxMywgMCwgMTI3MjU3LCA2NTg5NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE5MTg3LCAyMTM1LCA3ODg2OCwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgMCwgMCwgMCwgMCwgNTU3OCwgCi0gICAgNDE3NzQsIDEyODExNSwgNDIwMjMsIDYyMzQsIDU2NjksIDkyMjc1LCAwLCAwLCAwLCAxMjc1MDYsIDY4MjAyLCA1NTgzLCAwLCAKLSAgICAwLCA0MjQyNiwgNTU4MCwgNDIyNzYsIDI5MjMsIDg5MiwgNTU4MiwgNDI0NjUsIDQxMzMwLCAxOTQ5ODcsIDU3OTUsIAotICAgIDY1NTEyLCAxMTkwMDYsIDY1NzAyLCAwLCAxMjA4MDEsIDY1MjUxLCAwLCA2NTcxMCwgMCwgMCwgNjc2NzIsIDAsIDUzNzAsIAotICAgIDAsIDI5MzEsIDE2MzgsIDEwOTY2LCAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDAsIDEyODgzMCwgODE3MiwgCi0gICAgNDIwMTcsIDAsIDEwODQ0LCAwLCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAwLCAwLCAyODYsIDc4MDIzLCAxMDYyLCAwLCAKLSAgICAxMTk5OTksIDAsIDczOTUsIDAsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMCwgMzAxNSwgMTI4MDIzLCAKLSAgICA5MTc3NjMsIDUyMTEsIDAsIDY0MDAsIDAsIDE5NDk4MywgMCwgODE4OSwgMTEyNzYsIDAsIDAsIDM3MiwgMTI4ODI5LCAwLCAKLSAgICAxMTg4NzQsIDQyMTAyLCA0MTU4NSwgMTI4MjAyLCAwLCA0MjEwMSwgMjc2LCA3ODQwMiwgMCwgMzMsIDc0MjI2LCAxMjczMDMsIAotICAgIDkwMDcsIDExODc5NiwgNDE1ODgsIDY2MDMzLCA0MjcsIDEwNzYzLCAxMTg4MTksIDAsIDEyNzg4NCwgMCwgMTAzMSwgNjI1NywgCi0gICAgMCwgNDIxMDQsIDAsIDAsIDIzMjgsIDkyNDA5LCAxMDcxLCAwLCAwLCA3NDg0OCwgMCwgMCwgMCwgMTA0NywgMCwgMCwgCi0gICAgNjQ3OTAsIDAsIDY5NzIzLCAxMDY1MSwgMCwgMCwgMCwgMCwgOTIyMDYsIDExOTE4MSwgNTcxMSwgNDE2MzMsIDEyMDk4LCAKLSAgICA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMCwgNjc5MCwgNjUxNjgsIDEzMjE2LCAwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCAKLSAgICA0MTYyMywgMTk1MDAxLCA1NzE1LCA2OTY1NCwgMCwgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAKLSAgICAwLCA4NjQzLCA3Mzc2OCwgMCwgMTE4OTA2LCAyNzU3LCAxMTA2NywgOTcxOCwgNzQ0OTgsIDg5MTAsIDEwNjg5LCA2NDc5LCAKLSAgICAwLCAwLCAwLCA3ODYwNywgOTE5NiwgNjk2NzAsIDAsIDAsIDAsIDAsIDExODkxMSwgMCwgMCwgMCwgMCwgMCwgMTIwMDEwLCAKLSAgICAwLCA4NzAxLCA2ODEzMCwgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAwLCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDAsIDAsIAotICAgIDY0OTQ2LCAxMDk5MiwgMCwgMTIwMDA5LCAwLCAwLCA5MzE4LCAxMjA2NjEsIDEzMjQ5LCA2NTY3OSwgNzM4MDgsIDAsIAotICAgIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgMTk0OTk3LCAxMjAwMDUsIDAsIAotICAgIDAsIDUwODQsIDAsIDAsIDExODg2MSwgMCwgNzMzLCA5MTc4NzYsIDc4MDE0LCA3ODQzNiwgNzg0MzUsIDQxNjc3LCAwLCAKLSAgICA5MjE4LCAxNzMxLCAwLCAwLCAwLCAxOTUwMTAsIDAsIDAsIDAsIDEyMDAwMSwgMTI3MDE4LCA5MjQ5MiwgNTE1NSwgMCwgCi0gICAgNTM1OCwgMCwgMCwgOTE3NzY3LCA2NDQyNCwgMCwgMzg0MCwgNjQzMTQsIDQxNDMyLCAwLCAwLCA2ODQzMCwgMTE5MTE2LCAKLSAgICA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAxMTU4MCwgMCwgNjQ2MDEsIAotICAgIDEyMjA1LCAwLCAwLCA2NDUwNywgODg2OCwgMzk5LCAwLCA3NDg0MiwgMCwgMCwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIAotICAgIDEwMTU2LCAxMjExOSwgOTI1NzIsIDAsIDI1NDQsIDY1MDc0LCAxMTkyMTEsIDAsIDAsIDc4MDExLCAzNTEsIDExOTE0OSwgMCwgCi0gICAgMCwgNTUyMjksIDAsIDc0MjY4LCAwLCAwLCAwLCA0MjM3NywgMCwgMCwgMCwgMCwgMCwgOTAxMywgNDA1NCwgMCwgMCwgMCwgCi0gICAgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgMCwgMCwgNTU4NCwgODM1OCwgMCwgNzQ0MTEsIDkyMjE5LCAKLSAgICAxMDkxOSwgMCwgNzk4MCwgMCwgMCwgMCwgNDE4MDAsIDU1ODksIDAsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIAotICAgIDExMzU2LCAwLCAwLCA0MzQ1MiwgNzg2MDksIDAsIDQyNTczLCA2Nzg1NiwgMCwgNzgxMjksIDAsIDAsIDkyNTM1LCA4MTM1LCAKLSAgICA2NDUwLCAxMDA1NSwgNzc5OTYsIDAsIDAsIDAsIDU2NTcsIDAsIDk2MjYsIDAsIDc3OTk0LCAxMDE3OSwgNTY1NCwgMTI5MzksIAotICAgIDkyNTczLCAxMjA3OTksIDAsIDAsIDU2NTIsIDEwOTQ1LCAwLCA2NjQ4NiwgMCwgMzY2MSwgNzg2MywgMCwgMCwgMCwgCi0gICAgNzQ1MDksIDAsIDU2NTksIDAsIDEyNzUxMCwgNjY3MjksIDU2NTUsIDAsIDQyMTY4LCAwLCAxMDU1LCA5MTc2MjgsIAotICAgIDEyNzc5MiwgNjYzMTAsIDc0MDMwLCAwLCAxMjE0NiwgNzM5NTUsIDczOTU2LCAxMTYxOCwgMCwgMTI2OTkwLCAwLCAxMDI3MiwgCi0gICAgMTAzMDQsIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDAsIDY0ODcwLCAwLCAzNDY3LCAwLCAwLCAKLSAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCAwLCA2OTY5NiwgCi0gICAgNjk3NjksIDY0NjU2LCAwLCAwLCAxOTQ4MzcsIDAsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgMCwgOTA5MSwgMTA3OTgsIAotICAgIDAsIDEyODE2NiwgMTAxODYsIDAsIDc3MzIsIDAsIDY0NTU2LCAwLCAwLCA1NjY4LCA3NDQ0NSwgMCwgMCwgNTY3MCwgMCwgCi0gICAgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgMCwgMTI3NDksIDc0NTUxLCAwLCAwLCAKLSAgICA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAwLCAwLCAwLCAwLCAzNTcxLCAxMzI0NywgMCwgNzk3MywgCi0gICAgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCAwLCA3ODI2NSwgNTUzLCAxMjA2NTMsIDAsIDEyODU1NCwgCi0gICAgNTgyOSwgMCwgNDU4NywgNzgyODUsIDY1OTEyLCAwLCAxMjc0NiwgMCwgMCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDAsIDAsIAotICAgIDAsIDY0OTA1LCAwLCA5NTEyLCAxMjA2NzEsIDEyNzQyLCA2NDQzLCAwLCAwLCA5MTM1LCAwLCA0MTU2NCwgMCwgNTUyMTksIAotICAgIDEyODgzMiwgMCwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIAotICAgIDEyNzI3MCwgMCwgMTE4ODgwLCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMCwgMCwgCi0gICAgNjk4MTUsIDU2MzYsIDAsIDUzMjksIDAsIDU2MzgsIDExOTkxOCwgNzk0MCwgNjQ5MzgsIDQzMjIzLCAwLCA1NjM1LCAzMzczLCAKLSAgICAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDc4MjkxLCA2MjAzLCA0MjQ3LCAwLCAxMTkyMCwgODI3NCwgMCwgMCwgMTY1NywgCi0gICAgNDE1NjEsIDc4Mjk5LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDAsIDc4MzAwLCA0MjIyNywgMCwgCi0gICAgMCwgNDE2MzcsIDY3ODcyLCAwLCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAxMTcwNSwgNTY0MiwgMCwgCi0gICAgNTQ4NiwgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCAwLCAwLCA1NjQxLCA4MjU5LCAwLCAxMDU4LCAwLCA2NzYzMCwgMCwgCi0gICAgMCwgMTE0NCwgNzg3NTAsIDAsIDQyMjI4LCAwLCA3Mzg5MCwgMTE4OTcyLCAwLCA2NTMyMiwgMCwgNTY0NSwgNjQ5NjQsIAotICAgIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMCwgNTYwOCwgNjU4OTAsIDQzODA4LCAwLCA2NzYyMSwgMTE5OTM0LCA5MDAwLCAKLSAgICAwLCAwLCA5MjY3MywgMTg2NSwgMCwgNTYxMywgNzQyNjcsIDAsIDAsIDU2MTAsIDAsIDAsIDY1ODI2LCAyMDY5LCAwLCAKLSAgICAxMDc4NywgNDM5OTksIDI5OTcsIDAsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA2NTM3NiwgMjQxMiwgMCwgCi0gICAgODE4NiwgOTgwNywgNzQyNjksIDAsIDEzMTMwLCA2NTg3NCwgMCwgNTgwNywgMCwgMTAwMzAsIDUzMDYsIDEyOTM2LCAwLCAwLCAKLSAgICAxMTcwNCwgMCwgOTI1ODMsIDEwMjExLCAwLCAwLCAwLCAwLCAxMTcwNiwgOTcxMCwgMCwgMCwgMCwgNDEzLCA2NTYyMywgCi0gICAgNzExOCwgMCwgOTEzMywgNzQyNjIsIDAsIDEwNDIsIDAsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgCi0gICAgNDk4NCwgMCwgNzA4LCAxMTM5MSwgMCwgMTIyNDEsIDkyNzIwLCAwLCAxMzA4LCAwLCAyNTM0LCA4MTAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE5MTcsIDMwMDAsIDAsIDAsIDEyMDczOSwgMjM2NCwgOTI0NDMsIDc0NDcwLCA2NjYxOCwgNjU2ODAsIDAsIDEwMDI3LCAKLSAgICAwLCAxMjgxNTQsIDEyMzM3LCAxMjA3MjIsIDEyNzM2OCwgMCwgMjk4MCwgNzU1LCA2OTc3NCwgOTMxLCAxMzEyNCwgNjgxODIsIAotICAgIDYzNjMsIDI3NDgsIDAsIDAsIDY1MDQxLCAwLCA0NDAxMSwgODczMCwgMCwgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCAKLSAgICAwLCA3Mjc1LCA3ODMwNCwgOTM1LCAwLCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAKLSAgICAxMjg4MzUsIDc4MzA4LCA0MjM0MSwgNjUyODQsIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDAsIAotICAgIDE5NDk5OCwgMCwgMTA2NzMsIDExOTIxNywgNzI0OCwgMCwgMTI4MzQ2LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgMTY0OSwgMCwgCi0gICAgOTY0LCAwLCAxMjc4NzYsIDc4MjI2LCAxMjg3NzUsIDEyNzUxMiwgMCwgMCwgMCwgMCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIAotICAgIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDc0MDM3LCA0MzU0NywgMCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIAotICAgIDAsIDc5NDksIDAsIDAsIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA5MjcyNCwgCi0gICAgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCAwLCA2MjM4LCAwLCAxMDU0OCwgMTI3MDQ5LCAKLSAgICA0NDA5LCAwLCAwLCA2NDc5OCwgMCwgNTM0NiwgMCwgMTIwNTI4LCA2MjM3LCA0ODc0LCAwLCA5MTc2LCAwLCAwLCA2NTIzMSwgCisgICAgNDIyNTAsIDAsIDEyODg2NCwgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgMCwgMCwgMTI4MTIwLCAwLCA3NDMyOCwgCisgICAgOTI3MDgsIDc0NzY5LCAwLCAxMTkwODcsIDkwNjksIDYxNDQsIDAsIDAsIDczODIyLCAwLCAxMjgwMTAsIDY0OTE3LCAKKyAgICA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCAwLCA2NTA5OCwgNjM2NCwgOTU2LCAwLCAxMjgzMCwgMTA0NjIsIDczNzQwLCAKKyAgICA3MzczNCwgMCwgMCwgMCwgNjY0NDksIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDAsIDAsIDkyMjk0LCAKKyAgICAwLCAxMDQ0LCA0MTI3NiwgMCwgMCwgMCwgNDIwNjgsIDExNzk1LCAwLCAwLCAwLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIAorICAgIDExODI5LCA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCAwLCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDk4MzQ0NiwgNzA5OCwgMCwgCisgICAgMCwgMTA1NywgNTY2LCA0MjY5NiwgMCwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIDY2NTcxLCA3ODQ3MiwgCisgICAgOTI1MTAsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzNTc4LCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCA1NTI1MywgNjM1NywgCisgICAgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIDAsIDY0NDc3LCAwLCAKKyAgICA0MzgxMywgMTA1MywgMCwgNzgyNjksIDAsIDEyNjU4NiwgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDAsIAorICAgIDAsIDAsIDAsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgMCwgMTIxMzAsIAorICAgIDAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAxMjc4NTAsIDAsIDAsIDYzNTksIDAsIDQzNDcxLCA5ODM3NTksIDAsIAorICAgIDAsIDEyNzI3NCwgMCwgNjM1OCwgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgCisgICAgNTgzMCwgMCwgNDM2ODUsIDAsIDAsIDAsIDAsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDk4Mzc5OSwgMTIwNDEzLCAwLCAKKyAgICAxMjcyNTcsIDY1ODk0LCAwLCAwLCAwLCA5ODM5MTQsIDAsIDAsIDExOTE4NywgMjEzNSwgNzg4NjgsIDAsIDAsIDc4ODY5LCAKKyAgICA0MjMxMywgNTU3OSwgOTI0MTIsIDAsIDk4MzA4MiwgOTQwMDIsIDAsIDU1NzgsIDQxNzc0LCAxMjgxMTUsIDQyMDIzLCAKKyAgICA2MjM0LCA1NjY5LCA5MjI3NSwgMCwgMCwgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIAorICAgIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgCisgICAgMCwgMTIwODAxLCA2NTI1MSwgMCwgNjU3MTAsIDAsIDAsIDY3NjcyLCAwLCA1MzcwLCAwLCAyOTMxLCAxNjM4LCAxMDk2NiwgCisgICAgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgMTI4ODMwLCA4MTcyLCA0MjAxNywgMCwgMTA4NDQsIDAsIAorICAgIDEyODE5NSwgOTI0MjQsIDYzNzQsIDAsIDAsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIDExOTk5OSwgMCwgNzM5NSwgMCwgMTA3MCwgCisgICAgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAwLCAzMDE1LCAxMjgwMjMsIDEyNjQ2NSwgNTIxMSwgOTgzMDgzLCA2NDAwLCAwLCAKKyAgICAxOTQ5ODMsIDcwMDU0LCA4MTg5LCAxMTI3NiwgMCwgMCwgMzcyLCAxMjg4MjksIDAsIDExODg3NCwgNDIxMDIsIDQxNTg1LCAKKyAgICAxMjgyMDIsIDAsIDQyMTAxLCAyNzYsIDc4NDAyLCAwLCAzMywgNzQyMjYsIDEyNzMwMywgOTAwNywgMTE4Nzk2LCA0MTU4OCwgCisgICAgNjYwMzMsIDQyNywgMTA3NjMsIDExODgxOSwgMCwgMTI3ODg0LCAwLCAxMDMxLCA2MjU3LCAwLCA0MjEwNCwgMCwgOTgzOTcxLCAKKyAgICAyMzI4LCA5MjQwOSwgMTA3MSwgNDI4OTksIDAsIDc0ODQ4LCAwLCA5ODM1ODAsIDAsIDEwNDcsIDAsIDAsIDY0NzkwLCAwLCAKKyAgICA2OTcyMywgMTA2NTEsIDAsIDAsIDAsIDAsIDkyMjA2LCAxMTkxODEsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIAorICAgIDAsIDU3MTAsIDAsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgCisgICAgNTcxNSwgNjk2NTQsIDAsIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNzM3NjgsIAorICAgIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDc0NDk4LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgMCwgNzg2MDcsIAorICAgIDkxOTYsIDY5NjcwLCAwLCAwLCAwLCAwLCAxMTg5MTEsIDAsIDAsIDAsIDAsIDAsIDEyMDAxMCwgMCwgODcwMSwgNjgxMzAsIAorICAgIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMTk0OTk0LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDAsIDAsIDY0OTQ2LCAKKyAgICAxMDk5MiwgMCwgMTIwMDA5LCAwLCAwLCA5MzE4LCA5Mzk4NiwgMTMyNDksIDY1Njc5LCA3MzgwOCwgMCwgNjU0NTcsIAorICAgIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAxOTQ5OTcsIDEyMDAwNSwgMCwgOTgzOTU3LCAKKyAgICA1MDg0LCAwLCAwLCAxMTg4NjEsIDAsIDczMywgOTE3ODc2LCA3ODAxNCwgNzg0MzYsIDc4NDM1LCA0MTY3NywgMCwgOTIxOCwgCisgICAgMTczMSwgMCwgOTgzNzM3LCAwLCA2Nzk5MCwgMCwgMCwgMCwgMTIwMDAxLCAxMjcwMTgsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIAorICAgIDUzNTgsIDk4MzczNSwgMCwgOTE3NzY3LCA2NDQyNCwgOTgzMjI1LCAzODQwLCA2NDMxNCwgNDE0MzIsIDAsIDc4MzE1LCAKKyAgICA2ODQzMCwgNjc5ODAsIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIAorICAgIDExNTgwLCAwLCA2NDYwMSwgMTIyMDUsIDAsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjc2LCAKKyAgICA5ODM3MTIsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAwLCAyNTQ0LCA2NTA3NCwgCisgICAgMTE5MjExLCAwLCAwLCA3ODAxMSwgMzUxLCAxMTkxNDksIDAsIDAsIDU1MjI5LCAwLCA3NDI2OCwgMCwgMCwgMCwgNDIzNzcsIAorICAgIDAsIDAsIDAsIDk4MzkxNSwgMCwgOTAxMywgNDA1NCwgMCwgOTgzNTcwLCAwLCAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIAorICAgIDI1NDksIDc0NDY5LCAwLCAwLCA1NTg0LCA4MzU4LCAwLCA2NDIxNSwgOTIyMTksIDEwOTE5LCAwLCA3OTgwLCAxMjY2MDEsIAorICAgIDk4Mzc3NSwgMjIxOCwgNDE4MDAsIDU1ODksIDAsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIDExMzU2LCAwLCAwLCAKKyAgICA0MzQ1MiwgNzg2MDksIDAsIDQyNTczLCA2Nzg1NiwgMCwgNzgxMjksIDAsIDAsIDc0MzkyLCA4MTM1LCA2NDUwLCAxMDA1NSwgCisgICAgNzc5OTYsIDAsIDAsIDExOTIyNSwgNTY1NywgMCwgOTYyNiwgMCwgNzc5OTQsIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIAorICAgIDEyMDc5OSwgMCwgMCwgNTY1MiwgMTA5NDUsIDAsIDY2NDg2LCAwLCAzNjYxLCA3ODYzLCAwLCAwLCAwLCA3NDUwOSwgCisgICAgOTgzODQzLCA1NjU5LCAwLCA3ODY5MiwgNjY3MjksIDU2NTUsIDAsIDQyMTY4LCAwLCAxMDU1LCA5MTc2MjgsIDEyNzc5MiwgCisgICAgNjYzMTAsIDc0MDMwLCAwLCAxMjE0NiwgNzM5NTUsIDczOTU2LCAxMTYxOCwgMCwgMTI2OTkwLCAwLCAxMDI3MiwgMTAzMDQsIAorICAgIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDk4Mzg3OCwgNjQ4NzAsIDAsIDM0NjcsIDk4Mzg4MiwgMCwgCisgICAgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgNzAwMzYsIAorICAgIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDk4MzcxNywgMCwgOTQwMjAsIDcwMDU2LCA1NjY2LCA2NTIyNywgNTMxOCwgNjM5OTQsIAorICAgIDAsIDkwOTEsIDEwNzk4LCAwLCAxMjgxNjYsIDEwMTg2LCAwLCA3NzMyLCA5ODM3MTUsIDY0NTU2LCAwLCAwLCA1NjY4LCAKKyAgICA3NDQ0NSwgMCwgMTI4NjYzLCA1NjcwLCAxMjY2MTAsIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAKKyAgICAxMjA4MDcsIDAsIDEyNzQ5LCA3NDU1MSwgMCwgMCwgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgCisgICAgMTI4Mjg2LCA5NDAwNCwgMCwgMCwgMzU3MSwgMTMyNDcsIDAsIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCAKKyAgICA0MzE5MiwgMCwgNzgyNjUsIDU1MywgMTIwNjUzLCAwLCAxMjg1NTQsIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMCwgCisgICAgMTI3NDYsIDAsIDAsIDExOTkyNCwgNTYzMywgMTE5OTI3LCA5NDEwMSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgOTQxMDUsIAorICAgIDk1MTIsIDk0MTAzLCAxMjc0MiwgNjQ0MywgOTgzNzk3LCAwLCA5MTM1LCAwLCA0MTU2NCwgMCwgNTUyMTksIDEyODgzMiwgCisgICAgOTgzODQyLCAwLCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgMCwgMTI3MjcwLCAKKyAgICAwLCAxMTg4ODAsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgMzI4LCAwLCA5ODM4MDAsIAorICAgIDY5ODE1LCA1NjM2LCAwLCA1MzI5LCAwLCA1NjM4LCAxMTk5MTgsIDc5NDAsIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIAorICAgIDMzNzMsIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNzgyOTEsIDYyMDMsIDQyNDcsIDAsIDExOTIwLCA4Mjc0LCAwLCAwLCAKKyAgICAxNjU3LCA0MTU2MSwgNzgyOTksIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgOTgzNjc2LCA3ODMwMCwgCisgICAgNDIyMjcsIDAsIDAsIDQxNjM3LCA2Nzg3MiwgMCwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIAorICAgIDU2NDIsIDAsIDU0ODYsIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDAsIDEwNTgsIAorICAgIDAsIDY3NjMwLCAwLCAwLCAxMTQ0LCA3ODc1MCwgMCwgNDIyMjgsIDAsIDczODkwLCAxMTg5NzIsIDAsIDI4MDAsIDAsIAorICAgIDU2NDUsIDY0OTY0LCA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDAsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMCwgNjc2MjEsIAorICAgIDExOTkzNCwgOTAwMCwgMCwgMCwgOTI2NzMsIDE4NjUsIDAsIDU2MTMsIDY5OTUwLCAwLCAwLCA1NjEwLCAwLCAwLCA2NTgyNiwgCisgICAgMjA2OSwgMCwgMTA3ODcsIDQzOTk5LCAyOTk3LCAwLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNjUzNzYsIAorICAgIDI0MTIsIDAsIDgxODYsIDk4MDcsIDc0MjY5LCA5MjU0NywgMTMxMzAsIDY1ODc0LCAwLCA1ODA3LCAwLCAxMDAzMCwgNTMwNiwgCisgICAgMTIzNjQsIDEyODA2NCwgMCwgMTE3MDQsIDAsIDkyNTgzLCAxMDIxMSwgMCwgMCwgMCwgMCwgMTE3MDYsIDk3MTAsIDAsIDAsIAorICAgIDAsIDQxMywgNjU2MjMsIDcxMTgsIDAsIDkxMzMsIDc0MjYyLCAwLCAxMDQyLCAwLCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgCisgICAgNjE4NSwgNjQ3NzYsIDQ5ODQsIDAsIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgOTgzODkwLCAxMzA4LCAwLCAyNTM0LCAKKyAgICA4MTAsIDAsIDAsIDAsIDAsIDAsIDE5MTcsIDMwMDAsIDAsIDAsIDEyMDczOSwgMjM2NCwgOTI0NDMsIDc0NDcwLCA2NjYxOCwgCisgICAgNjU2ODAsIDEyMDc3OSwgMTAwMjcsIDAsIDEyODE1NCwgMTIzMzcsIDEyMDcyMiwgMTI3MzY4LCA5ODMxNjcsIDI5ODAsIAorICAgIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MTgyLCA2MzYzLCAyNzQ4LCAwLCAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCAKKyAgICA4NzMwLCA5ODMwNjcsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgMCwgNzI3NSwgNzgzMDQsIDkzNSwgMCwgNjU4NDAsIAorICAgIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAKKyAgICAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCAwLCAxOTQ5OTgsIDAsIDEwNjczLCAxMTkyMTcsIDcyNDgsIDAsIAorICAgIDEyODM0NiwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIDE2NDksIDAsIDk2NCwgMCwgMTI3ODc2LCA3ODIyNiwgMTI4Nzc1LCAKKyAgICAxMjc1MTIsIDAsIDAsIDAsIDAsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCAKKyAgICA2OTkwOSwgNDM1NDcsIDAsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgOTgzOTA5LCAKKyAgICAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgOTI3MjQsIDY0NzgsIDk4OTgsIAorICAgIDQzNjczLCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgOTgzNzg2LCA2MjM4LCAwLCAxMDU0OCwgMTI3MDQ5LCA0NDA5LCAwLCAKKyAgICAwLCA2NDc5OCwgMCwgNTM0NiwgMCwgOTQwNDcsIDYyMzcsIDQ4NzQsIDAsIDkxNzYsIDAsIDEyNjU1MywgNjUyMzEsIAogICAgIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMCwgMCwgNTY4NSwgCiAgICAgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIDUzNDIsIDgzMTcsIDAsIDY4MTYzLCA1MzQwLCAwLCAxMjc4MjAsIDQzNjM1LCAKLSAgICA3MzkyOCwgMTI3NTI5LCAwLCAwLCAwLCAxMjg1MTAsIDY1NDgyLCAwLCA5MTQyLCAwLCAwLCAwLCAxMDkzOCwgMCwgCisgICAgNzM5MjgsIDEyNzUyOSwgMCwgMCwgMCwgMTI4NTEwLCA2NTQ4MiwgMCwgOTE0MiwgMCwgMTI2NDcwLCAwLCAxMDkzOCwgMCwgCiAgICAgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAwLCAxMjgxNzYsIDUyOSwgODU4MCwgMCwgMCwgMTA1ODYsIDEwNzkwLCAKLSAgICAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgMCwgMCwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDAsIDAsIDExMzc2LCAKKyAgICAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgMCwgMCwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDAsIDk4MzkyOSwgMTEzNzYsIAogICAgIDc0Mzc5LCAxMDcyMSwgNjc2NjQsIDM0MzgsIDQyMDk3LCAxMjcyNjcsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgCi0gICAgMCwgNDE4NzMsIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODg0NCwgNDE4NzEsIDQxMzM4LCAKLSAgICAzNzM0LCA3NzM0LCA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCAwLCA0MDk2NSwgMTI3OTM3LCAwLCA1MTYxLCAxMDU3MiwgCi0gICAgMCwgMCwgMCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMjc1NTIsIDAsIDAsIDExOTQ4LCA2OTIyMCwgMTIzNTksIDQzNDI5LCAKLSAgICA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIDAsIDk4NzAsIDY4NjQ1LCAKLSAgICA4NjIwLCA2NTgyNCwgMCwgMTE5MzgsIDAsIDcyODUsIDAsIDExOTU3NywgNDI2NzgsIDAsIDQzNjc3LCA0MTU4MywgMCwgCi0gICAgNjU3OTksIDkyNjIzLCAwLCAwLCAwLCA3ODE2OSwgNjYxOTksIDAsIDM2MDksIDY4NjI0LCAwLCA4MzIsIDEyMDY5MywgCi0gICAgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgMCwgMCwgNDI3MzIsIDUxODAsIDkyNjk5LCA0MTM5NSwgCi0gICAgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAwLCAwLCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDAsIAotICAgIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCA0MzY4NywgMCwgMCwgNDI4NSwgNjYxOTUsIAotICAgIDAsIDQyMzAsIDAsIDEzMzA3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCAwLCA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAKLSAgICAyMTQsIDAsIDAsIDc4NDY2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDAsIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MDIyLCAwLCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDAsIDY2NDUzLCAxMDE2LCA0MTEwNywgMCwgCi0gICAgNDExMjEsIDM4ODUsIDkyLCA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCAwLCAyMDc0LCAwLCA3ODI4MywgMCwgMTI0NTMsIAotICAgIDEyODEyOCwgMCwgNzQyNDEsIDAsIDY3OTEsIDEyNDU3LCA3ODI2OCwgMCwgMCwgMCwgNzgyNzksIDAsIDAsIDkyMzU4LCAKLSAgICA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAxMjQ0OSwgMTI4NTUyLCAwLCAwLCA4NzUyLCAzMTk3LCA0NzIwLCAKLSAgICAxMDE2NSwgMCwgMTE5MjQ5LCAwLCAxMTU5NSwgNjQ4OTMsIDAsIDQzNDM1LCAwLCAwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgCi0gICAgMTk0NiwgNzQxLCAwLCA1NDk0LCA0NjM5LCAwLCAxOTkwLCA2NjU4OSwgNDQ5OCwgNzg2NjQsIDExOTE4MywgMCwgMCwgCi0gICAgNjk3MzQsIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAxMjgxMTcsIDQzNDI0LCAxMjcwNTksIDAsIDI5NTAsIDExOTU3OSwgCi0gICAgNjIxMCwgNjU3NTMsIDM3MCwgMCwgMCwgMCwgNDk1MywgMCwgMCwgMCwgMCwgNjkyMzAsIDAsIDAsIDY1Njg4LCAwLCA1MDYzLCAKLSAgICAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCAKLSAgICA2NjAxNiwgNzgyNTMsIDAsIDAsIDY0OTIzLCAxMjgwNDAsIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIDQxMjE1LCAKLSAgICAwLCA2NTg4MywgMCwgOTE3Nzc0LCAxMjA2MDIsIDM3NjEsIDAsIDAsIDAsIDAsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIAotICAgIDEyODE5MSwgMCwgMCwgMCwgMCwgOTA4LCAwLCA4NjExLCAwLCAwLCAxMjc1NTUsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgCi0gICAgMTIwNTQwLCAxMTkxMzUsIDQxNTg2LCAxMDUyNywgMCwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgMTk0OTM3LCAxMjc1MzYsIAotICAgIDY1MjQxLCA1MzM2LCAwLCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCAwLCAxMjcxNjMsIDY4MTkzLCAKLSAgICAzNDcsIDAsIDAsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA3ODc2OSwgMTIxNDMsIAorICAgIDEyMDE4MywgNDE4NzMsIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODg0NCwgNDE4NzEsIAorICAgIDQxMzM4LCAzNzM0LCA3NzM0LCA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIDEyNzkzNywgMCwgCisgICAgNTE2MSwgMTA1NzIsIDAsIDAsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTI3NTUyLCAwLCAxMjY2MDUsIDExOTQ4LCAKKyAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAorICAgIDAsIDk4NzAsIDY4NjQ1LCA4NjIwLCA2NTgyNCwgMCwgMTE5MzgsIDAsIDcyODUsIDAsIDExOTU3NywgNDI2NzgsIDAsIAorICAgIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAwLCA5ODM5MjcsIDc4MTY5LCA2NjE5OSwgMCwgMzYwOSwgCisgICAgNjg2MjQsIDAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgNzg0NzEsIDY1NzAzLCAwLCAwLCA0MjczMiwgCisgICAgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIDY0NzczLCA5MjIxNCwgNzQwMDIsIDAsIDAsIDEyODY0NSwgCisgICAgNjM0OCwgMjQzLCAxMzIwMCwgOTgzODA0LCA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgCisgICAgNDM2ODcsIDAsIDAsIDQyODUsIDY2MTk1LCAwLCA0MjMwLCAwLCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCAwLCAKKyAgICA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAyMTQsIDAsIDAsIDc4NDY2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDAsIDY2MzExLCAKKyAgICA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCAwLCAwLCA3MDA0NywgMCwgNjAyMiwgMCwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAKKyAgICAwLCA2NjQ1MywgMTAxNiwgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgMCwgCisgICAgMjA3NCwgMCwgNzgyODMsIDAsIDEyNDUzLCAxMjgxMjgsIDk4MzgxNywgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIAorICAgIDc4MjY4LCAwLCAwLCAwLCA3ODI3OSwgMCwgMCwgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgNzgyNzcsIAorICAgIDEyNDQ5LCAxMjg1NTIsIDAsIDAsIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAwLCAxMTkyNDksIDAsIDExNTk1LCA2NDg5MywgCisgICAgMCwgNDM0MzUsIDAsIDAsIDQ5OTMsIDAsIDYxNjgsIDEwOTM0LCAxOTQ2LCA3NDEsIDAsIDU0OTQsIDQ2MzksIDk4MzE0NywgCisgICAgMTk5MCwgNjY1ODksIDQ0OTgsIDc4NjY0LCAxMTkxODMsIDAsIDAsIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgCisgICAgMTI4MTE3LCA0MzQyNCwgMTI3MDU5LCAwLCAyOTUwLCAxMTk1NzksIDYyMTAsIDY1NzUzLCAzNzAsIDAsIDAsIDAsIDQ5NTMsIAorICAgIDk4MzY3MywgMCwgMCwgMCwgNjkyMzAsIDAsIDAsIDY1Njg4LCA5ODMyNDAsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCAKKyAgICA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgCisgICAgNzEzMTcsIDY0OTIzLCAxMjgwNDAsIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIDQxMjE1LCAwLCA2NTg4MywgMCwgCisgICAgOTE3Nzc0LCAxMjA2MDIsIDM3NjEsIDAsIDAsIDcwMDY4LCAwLCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDAsIDAsIAorICAgIDAsIDAsIDkwOCwgMCwgODYxMSwgMCwgMCwgMTI3NTU1LCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCAKKyAgICA0MTU4NiwgMTA1MjcsIDAsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDE5NDkzNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgCisgICAgOTgzMjUxLCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCA5ODMyNDksIDEyNzE2MywgNjgxOTMsIDM0NywgCisgICAgMCwgMCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDc4NzY5LCAxMjE0MywgCiAgICAgNjk2NTcsIDc4NTEyLCAwLCA0MzQ0MSwgNDE4MDQsIDc4NTIzLCAwLCA3ODUyNSwgMCwgMTI4ODU5LCA0MTU4NCwgMTA2ODEsIAotICAgIDAsIDAsIDczOTM4LCAwLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIDc4NTM0LCA5NTE4LCA2NjA5LCAKLSAgICAxMDQzNCwgMCwgMTEzMTksIDEwOTcsIDAsIDkxNzg1MCwgNDE3MzAsIDAsIDAsIDczODQ3LCA3ODc2MSwgNjUxNzIsIAotICAgIDQxNzI4LCA0MTcyMSwgMCwgMCwgMCwgNDEyMDMsIDAsIDEzMTEwLCA0MTcyNiwgMCwgMCwgMTAwMCwgNjk2NTEsIDAsIAotICAgIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMCwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgMCwgNjgyMTMsIDAsIAotICAgIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTI3MDYyLCA2NzY3MSwgNTUyNDgsIDEyMjM3LCA3ODc4NywgNjYzMTQsIAotICAgIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIDAsIDAsIDY0Mzk4LCAwLCAKLSAgICAxMTk5NzAsIDEyMzExLCAwLCA3ODc5NiwgNzg3OTgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMCwgMCwgCi0gICAgMTIyOTAsIDEyMDE2OSwgMCwgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgMCwgOTYyNywgNzg1MzYsIAotICAgIDc4NTQyLCA3ODUzNSwgMCwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgCi0gICAgMTEzMDgsIDExOTk5NSwgMCwgMTE5OTk3LCAxMTk5OTgsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgCi0gICAgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgCi0gICAgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDAsIDQxODk5LCAwLCA4MDAyLCAwLCA0MzY0LCAwLCAwLCA2NDMzMiwgMCwgNzgxMywgCi0gICAgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNzg0NTUsIDcyNzksIDEyMDQxLCAxNDE4LCAxMDg4NSwgCi0gICAgMTI2NzMsIDAsIDAsIDk2NjAsIDAsIDEzMDEyLCA0NTcxLCAwLCAwLCAwLCAxMjA3OCwgMjk3MCwgMCwgMTA5MzMsIDAsIAotICAgIDc3ODcwLCAwLCAwLCAwLCA0MTU5OSwgMCwgMTI4ODMxLCAwLCAxMjk1MCwgOTIxNjAsIDM0ODYsIDAsIDc4MzExLCA0MjM5LCAKLSAgICAwLCAxMjc3OTksIDY2NTExLCAwLCAyNjM3LCA2NDYyOSwgODQ2MCwgMTI3MDUzLCA4NDc2LCAwLCAwLCAwLCAwLCA2NTY3MywgCi0gICAgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgMCwgNTQxMiwgNjYyNDMsIDk5MzUsIDAsIAotICAgIDczODY0LCAwLCA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCAKLSAgICA0MTczNiwgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIAotICAgIDEyNzI4NCwgMCwgNzM5NjMsIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgCi0gICAgNzExNSwgNjYwMzAsIDczOTMyLCA1NDk4LCA3Mzk0MiwgNDE1MzYsIDAsIDY4MjA0LCA5MjU4NywgMzQ1OSwgODk5NywgMCwgCi0gICAgMCwgMCwgMCwgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgMCwgNzg1MTEsIDMxNjEsIDI5NSwgMTIwMjA3LCAwLCAKLSAgICA5MjIyMywgMTI3ODU2LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM2NDEsIDAsIDM5NzEsIDAsIAotICAgIDczOTcyLCAyOTUyLCA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCAwLCA2NjcsIDEyMzMyLCAKLSAgICA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDAsIDQxNTksIDAsIDAsIDk4MTUsIDYzODg0LCAxOTkzNCwgNjM4ODIsIAotICAgIDQxMTk4LCA4NTU1LCA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIDYzODcyLCAwLCA0MjQyMSwgMCwgCi0gICAgNDE3MjMsIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIDQxOTEzLCA2Mzg1MiwgMCwgMCwgNDIzNDgsIDAsIAorICAgIDAsIDk4MzY4NiwgNzM5MzgsIDAsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgNzg1MzQsIDk1MTgsIAorICAgIDY2MDksIDEwNDM0LCAwLCAxMTMxOSwgMTA5NywgMCwgOTE3ODUwLCA0MTczMCwgOTgzMjEyLCAwLCA3Mzg0NywgNzg3NjEsIAorICAgIDY1MTcyLCA0MTcyOCwgNDE3MjEsIDAsIDAsIDAsIDQxMjAzLCA5MTc2MTIsIDEzMTEwLCA0MTcyNiwgOTgzODQ2LCAwLCAKKyAgICAxMDAwLCA2OTY1MSwgMCwgNDExNDAsIDEyMDksIDczOTc4LCAwLCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCAKKyAgICAwLCA2ODIxMywgMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMjcwNjIsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIAorICAgIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgMCwgMCwgCisgICAgNjQzOTgsIDAsIDExOTk3MCwgMTIzMTEsIDk4MzcxOCwgNzg3OTYsIDc4Nzk4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCAKKyAgICA3ODc5MywgNjY2NzAsIDAsIDAsIDEyMjkwLCAxMjAxNjksIDAsIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIAorICAgIDAsIDk2MjcsIDc4NTM2LCA3ODU0MiwgNzg1MzUsIDk4MzIxMCwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAKKyAgICAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgMTEzMDgsIDExOTk5NSwgMCwgMTE5OTk3LCAxMTk5OTgsIDY1MzA1LCA2NTEwMCwgCisgICAgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIAorICAgIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDAsIDQxODk5LCAwLCA4MDAyLCAwLCA0MzY0LCAKKyAgICAwLCAwLCA2NDMzMiwgMCwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNzg0NTUsIDcyNzksIAorICAgIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDAsIDAsIDk2NjAsIDk4MzI3MiwgMTMwMTIsIDQ1NzEsIDAsIDAsIDEyMDE2NCwgCisgICAgMTIwNzgsIDI5NzAsIDAsIDEwOTMzLCAwLCA3Nzg3MCwgMCwgMTI3MDE1LCAwLCA0MTU5OSwgMCwgMTI4ODMxLCAwLCAKKyAgICAxMjk1MCwgOTIxNjAsIDM0ODYsIDAsIDc4MzExLCA0MjM5LCAwLCAxMjc3OTksIDY2NTExLCAwLCAyNjM3LCA2NDYyOSwgCisgICAgODQ2MCwgMTI3MDUzLCA4NDc2LCA5ODM5NjYsIDAsIDAsIDAsIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgMTIyODksIAorICAgIDAsIDQzMTYsIDAsIDEzMTE5LCA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgMCwgNzM4NjQsIDk4MzIwMSwgNDE3MzQsIAorICAgIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCAKKyAgICA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDAsIDczOTYzLCAKKyAgICA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIDcxMTUsIDY2MDMwLCAKKyAgICA3MzkzMiwgNTQ5OCwgNzM5NDIsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDAsIDAsIDAsIDAsIAorICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDk4MzY5MCwgNzg1MTEsIDMxNjEsIDI5NSwgMTIwMjA3LCAwLCA5MjIyMywgCisgICAgMTI3ODU2LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM2NDEsIDAsIDM5NzEsIDAsIDcwMDYzLCAyOTUyLCAKKyAgICA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCA5NDA0MywgNjY3LCAxMjMzMiwgNjM4ODcsIDYwODYsIAorICAgIDQxNzIyLCAwLCA1MTcyLCAwLCAwLCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgCisgICAgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIDQxNzIzLCAKKyAgICA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDEyNjYzNiwgMCwgNDIzNDgsIDczODkyLCAKICAgICA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDYsIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDAsIDYzODQ2LCAyOTcyLCAxMjkzMiwgCiAgICAgNzI2MiwgMCwgNjM4NDksIDYzODQ4LCA2Mzg0NywgMTI4MDcwLCA2NTcwLCA4MzAyLCA3MjU5LCA2Mzg0MiwgNDE3OCwgCiAgICAgMTA3NDYsIDcyNTAsIDEzMjE0LCAxMDA0MSwgODEwNSwgNjM4OTIsIDAsIDExODk4MywgMTEwNSwgNDE4MCwgMCwgMTIwOTQsIAogICAgIDk0OTcsIDAsIDYzODkxLCA2Mzg5MCwgNjM4ODksIDYzODg4LCA1NTM4LCA5OTg3LCAwLCAxMTg5MzIsIDE2NzgsIDEzMjc0LCAKICAgICA1NTIsIDEyMDY1NCwgNDQwMTAsIDEwNzg1LCAwLCAxMTkxNzAsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIAogICAgIDYzODYwLCA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIAotICAgIDYzODU3LCAxMzg4LCA3NDE2OSwgMCwgMTA3NywgMCwgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCAwLCAwLCA0Mjc3MywgMCwgCi0gICAgMCwgMCwgMTE5MjIwLCAwLCAzNjYzLCAwLCAxMTEyLCAxMTkxMjIsIDg2ODYsIDAsIDUzMzQsIDY1MDgxLCA0MzI0OSwgCi0gICAgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDAsIDY1MDksIDAsIDUzMjcsIDAsIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgNzU4MywgCi0gICAgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgMCwgNzM3NDgsIDYzODY2LCAwLCAxOTE1LCA0ODQ2LCAwLCAKLSAgICA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIDY5MjM4LCA2NDQzOCwgMTIwNzAsIDg3NjAsIDExMTcsIAotICAgIDExODk4NywgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCA2MzgzNSwgNjM4MzQsIDAsIDc4MjQwLCAxMjIyNSwgCi0gICAgNjM4MzgsIDYzODM3LCAwLCAwLCA2MzgzMywgNjA0MiwgNjYzNjAsIDgwODMsIDAsIDAsIDYzODIxLCA2MzgyMCwgNjM4MTksIAotICAgIDYzODE4LCAwLCA1MjI3LCA5MDQ3LCA2MzgyMiwgMTI3MTYyLCA2MDkxLCAwLCAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAKLSAgICAxMTk1NzgsIDYzODEyLCA2MzgxMSwgNjM4MTAsIDYzODA5LCA1NTQyLCA2MzgxNSwgNjM4MTQsIDYzODEzLCA2MDQ3LCAKLSAgICAxNTk3LCAxMjAxNDMsIDc4MCwgMjA2LCA3NzkyNSwgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCAKLSAgICA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIDEyODE1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDc3OTM0LCA5ODA2LCA0MzQ3MiwgCi0gICAgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgMCwgNDYxOCwgNDIyMDksIAotICAgIDQzNDMxLCAxMzE2OSwgNTI5MCwgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCAKLSAgICA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIDAsIDYzOTcwLCAxMjgzNTgsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIAotICAgIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAwLCA3NDA4LCAxMTgwOSwgMCwgMCwgMCwgMjk2NSwgNzI1OCwgODgwOCwgMCwgMTA4OSwgCi0gICAgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMCwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDAsIDc0NDk0LCAxMjQ2MywgCi0gICAgMjk5NCwgMCwgMTE4ODI3LCAwLCA5NjY0LCA3NzkzOSwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgNzQzNDMsIDAsIDAsIDY2MCwgCi0gICAgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDc3OTQxLCA3ODUwNywgNjExOCwgMjIyLCA5NzksIDM4ODQsIAotICAgIDAsIDc0MTUxLCA5MjY1MiwgNjUwMiwgMCwgMTI3MTE4LCAxMjg2OTUsIDYzOTUxLCAxMjQ2NSwgMCwgMCwgMTI4NzgyLCAKLSAgICA2Mzk0NiwgMTcwNywgNjM5MjQsIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCA2Mzk0NywgNjM5NDUsIDYwMzgsIAotICAgIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIDYzODk1LCA2NTgzOCwgMCwgNzc3NiwgMCwgMCwgMTI3NzczLCAxMjA0NDQsIDY5NzMwLCAKLSAgICA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIAotICAgIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAKLSAgICAyNTM5LCAwLCA0Mzk4MCwgNTQ4NSwgMCwgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCAwLCAyNTMsIDAsIAotICAgIDY4MjA4LCAwLCA5MjAzLCA3NDIzMSwgMCwgMTE1MzAsIDkyNTQyLCA2ODY2OCwgMCwgMTI4ODE2LCAwLCAxMDQ3NCwgCi0gICAgNDM0MjYsIDEzMjU3LCA0MjM1NCwgMCwgMCwgMCwgMTk1MDY1LCAwLCA4NDEzLCAwLCAwLCA1NjkzLCA3MjcyLCAwLCAKLSAgICAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3ODQ2MCwgMTk1MDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgxMzMsIDEyNzc2NywgCi0gICAgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgOTIxODcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAKLSAgICAxNDM2LCA3Mzg0NCwgNTUyMjYsIDEyODM1MywgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIAotICAgIDYzOTA0LCAwLCAwLCA0MTcyOSwgNDQyMywgMTMwNywgMCwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDAsIDYyMTgsIDAsIAotICAgIDE0MzAsIDAsIDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIAotICAgIDQxNzQzLCA3MzkzNywgNjgwMSwgMCwgNDUxOCwgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCAwLCAyNzEwLCAwLCAKLSAgICA2OTI0MywgNDE3MjQsIDAsIDQzMDczLCA0MTY5MCwgMTI0NzksIDAsIDAsIDAsIDAsIDExOTY1OSwgMTYyOCwgMTI3MTQ5LCAKLSAgICAwLCAwLCA2NTI2MiwgNjMzMywgMTA3ODMsIDQyMzE1LCAwLCA2Mzg1NSwgMTIwNjgzLCAwLCAwLCA1MzM5LCA3NDMyMywgMCwgCi0gICAgMTMwMDQsIDAsIDQ0NTcsIDAsIDAsIDAsIDAsIDU2ODQsIDg2NzgsIDEwOTE0LCAwLCA1Njg5LCA2NTgwNywgMCwgNjg0NjQsIAotICAgIDEyNjMzLCAxMjg3MCwgNjk3MDUsIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMCwgNzQyNTEsIDAsIAotICAgIDEyMDY0NywgMCwgNTAsIDEwNTU4LCA5ODcxLCAwLCA0MzY1NSwgMCwgMCwgMCwgNjY0NjgsIDAsIDEzMjU5LCA0NDQ4LCAwLCAKLSAgICAwLCAwLCAwLCA2Nzg1MywgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAwLCA5MTc2MDcsIDEyNzU0NCwgMTI3MDc5LCAxOTUwNTAsIAotICAgIDEyNzg1MiwgMCwgMCwgMCwgMTI1MDEsIDY0NjA0LCAwLCAxMTUyNywgMTE4ODcwLCA4ODEyLCAwLCAxMTUzOCwgODY3MywgCi0gICAgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgMjEwNSwgODA4NywgNzgxNjMsIDY5NjMyLCA5ODk0LCAwLCAwLCAwLCA0NjM2LCAKLSAgICA1NTI2MiwgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgMCwgMTIwNDk1LCAwLCAxMjgyODQsIDEyMjc3LCAxOTQ2MjcsIAotICAgIDExOTk1LCA5MjU1MywgMCwgMTIxNTgsIDAsIDg3NDEsIDEwMTk3LCAwLCA5MjQyNiwgMCwgNjUzMSwgMCwgMTI3ODQ2LCAKLSAgICA0NzMsIDQzNDE1LCAwLCAwLCAxODczLCAxMDg3LCAwLCAwLCAwLCA3ODUyNywgNjY0MzksIDQzMjE4LCAwLCAxOTQ3MTYsIAotICAgIDcyMzcsIDEyNTA0LCA3NDI4MiwgMCwgMCwgMCwgOTQ4OSwgMCwgMCwgNDM4NCwgNzQyMjAsIDE5NTA1NSwgMjA1OCwgCi0gICAgMTI4ODYzLCAxMzI5NSwgNDMxOTEsIDEyODAzMCwgMCwgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgMTMxMDAsIDEyOTU4LCAKLSAgICAxMjA3MDYsIDc0MTY4LCAwLCAwLCA0NDIxLCAxMDU5MiwgMCwgNDk1LCAwLCA0MTcxMiwgNzk4MywgMCwgMTIwNzc5LCAwLCAKLSAgICA2MzQ3LCAwLCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgNDM3LCA0MTcwOSwgNzM3NzIsIDAsIDAsIDk0NjUsIDEzMjkwLCAKLSAgICAxMTkxODAsIDQ5OTcsIDY0MzA2LCAwLCAwLCA0OTk5LCAxOTQ2NDIsIDAsIDAsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgCi0gICAgODA0NCwgNzQ4MzQsIDE5NDY0MywgNDE3ODksIDEyODE0MiwgMTA4MDksIDAsIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIAotICAgIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgMCwgOTIxODYsIDEzMjI5LCAwLCAxMDU3NSwgCi0gICAgNDMzOTksIDAsIDAsIDQxNzkxLCAxMTA0LCAwLCAwLCAxMDY1NSwgMCwgMCwgMCwgMCwgMTA4MiwgMTk1MDQ5LCA4NDI4LCAKLSAgICA2NTY5LCAwLCAwLCAwLCAwLCA2NzgzLCAwLCAxMjk5MywgODA0OSwgNDE1NDgsIDQ0MDIxLCA2NDU4LCAwLCAxMjg4ODIsIAotICAgIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIDAsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCAKLSAgICA2MzIyLCAxMDQ4MywgMCwgNDE1NDUsIDAsIDkyNDQ5LCAwLCAwLCAwLCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIAotICAgIDg1MDMsIDUxMjIsIDQxNTI3LCAwLCA2NjMyMCwgMCwgMCwgMCwgMCwgNDE1MzcsIDY5NjgzLCA4MzAzLCA4MjgyLCAxMTgxNywgCi0gICAgNzM4NTcsIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDE5NDY2MywgMTY4NiwgMCwgNzg0MDYsIDExNDY3LCAzNjY0LCA2NTkyMSwgCi0gICAgNjQyOTksIDE5NDY2NCwgMCwgMCwgNDMyNCwgMTI2LCA0MjI0NiwgMTE5MTUyLCAwLCA3NDM3OCwgNjU5MjYsIDc3NDQsIAotICAgIDE5NDYzNiwgNzQyNzcsIDc0MzAyLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgMTYzMywgMCwgCi0gICAgMCwgNDc2MiwgMTEwMywgMCwgMCwgNDc2NSwgMCwgMTMwNzgsIDAsIDQ3NjAsIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIAotICAgIDExMDIsIDAsIDQyMjM2LCAxMjg4NjcsIDE5NDY2NywgMTE1NDYsIDc0Nzk0LCAzMzcsIDAsIDQyNTkxLCA4NjI3LCAxMjI3OSwgCi0gICAgMTExMSwgMCwgOTIxNjEsIDQ3MDcsIDY4MjA2LCAxMDE0MywgNzg4MywgMTI3MDgxLCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAKLSAgICAxMzAxMCwgMCwgODMwNCwgOTE3NTYxLCAwLCAxMTk1NzUsIDAsIDAsIDY2NjU0LCAwLCA5MjY3NiwgMCwgMTMwMDgsIDAsIAotICAgIDQzODUsIDAsIDEzMDExLCAwLCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCAwLCAwLCA0MTc5MywgNjU3NjMsIAotICAgIDc0MjIxLCAxMjAxNDEsIDQxNzkyLCA0Mjc3MCwgMCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIDU3MDksIDAsIDEyNzE3NywgCi0gICAgNDM4MTYsIDAsIDAsIDEwNzksIDM4NjcsIDU3MDgsIDAsIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgCi0gICAgNDAwNSwgMCwgMTAyMzcsIDEwOTkxLCAwLCA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgCi0gICAgOTE3NTc3LCA0MjYwNSwgMTIwNzY1LCA5MTc1NzAsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCAwLCA3NDg2NywgMTk0NjU0LCAKLSAgICAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCA5MTc1ODcsIDkxNzU4NiwgCi0gICAgOTE3NTg5LCA5MTc1ODgsIDEyMDU0MSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgCi0gICAgODY0LCAwLCAxMTg5MjYsIDg5NzIsIDAsIDc4NDksIDEyMDA5MiwgOTI1MzMsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIAotICAgIDAsIDEwOTQ4LCA5MTc2MDEsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDEyMDE2NCwgCi0gICAgMCwgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIDYzNzgwLCAKLSAgICA2Mzc3OSwgMTU4MywgMCwgMTMyNjAsIDQ1NTAsIDAsIDY0MjA1LCAwLCAwLCA0MTUyMiwgMCwgOTIxNjgsIDAsIDkxNzg1OCwgCi0gICAgMTEzNTQsIDAsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIAotICAgIDAsIDQ0NzksIDExNzgsIDY1NTg2LCAxMjA2NjMsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDAsIDAsIDAsIDAsIDE5NDY1OCwgCi0gICAgMCwgNjgwOSwgNjM3ODYsIDYwMzEsIDAsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCA0MzE1MywgCi0gICAgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgMCwgMTA3NDcsIDEyNSwgMCwgNjQ4OTAsIDAsIDAsIAotICAgIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgMTMyNTgsIDk1MzYsIDc0MDc3LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIAotICAgIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgNjM3NDksIDAsIDAsIDAsIDYzNzUzLCA2MzgwMiwgCi0gICAgNDEwODQsIDEyMDYyMiwgNjgxMzMsIDQxOTMwLCA2MzgwNSwgNjM4MDQsIDQzNjMyLCA2MzgwMSwgNDEwODIsIDgxNDAsIAotICAgIDYzNzk4LCA2MjYwLCAwLCAwLCAxMTkyMjUsIDYzNzkzLCAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIAotICAgIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIAotICAgIDAsIDQyMjAzLCA3OTUwLCAxMDgwNCwgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMjIyNCwgNjk3MywgMjc5MywgMTI0NzUsIDAsIAotICAgIDAsIDYzNzY5LCA5NTMwLCAwLCAxMjIzMiwgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCA0NTk1LCA2Mzc2MCwgNzkyLCAwLCAKLSAgICA2NDgwMywgMCwgODc0MiwgMCwgMTEwNTMsIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMCwgNzU4OCwgNjM3NDgsIDE2OTMsIAotICAgIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIDkxNzg1MywgMTA5MCwgMTIwNjc5LCAxMjgzNTYsIDExNjY1LCA3NDEzMywgCi0gICAgNDU1OCwgNjU2ODUsIDk1MjMsIDAsIDAsIDc4NjgxLCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCA2Mzc3MywgCi0gICAgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCAwLCAzMTcwLCAxMjQ4NSwgMCwgMTA4NzIsIDc4MjcxLCAxMzAwNiwgNjQ0MzMsIAotICAgIDAsIDAsIDk0MSwgMCwgMCwgMCwgNjU1NDEsIDExMDYzLCAwLCA4MjI4LCAwLCA0MjA2NSwgMCwgMCwgMCwgMCwgOTI0NTUsIAotICAgIDczODYsIDAsIDY0NDQ0LCAwLCAxMTk4NjMsIDQzNjAzLCAwLCA2NTM5NywgMjg4LCAwLCAwLCAwLCAxMDAyNSwgOTE3OTE2LCAKLSAgICAyOTE4LCAwLCA2NTMwMCwgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDAsIDEyNzgyOSwgNjUzOTMsIAotICAgIDAsIDc0MTM4LCAwLCAwLCAwLCA3NDEzOSwgOTI3MTIsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMCwgNjUzOTYsIDAsIDY1ODEzLCAKLSAgICAxMzI1NiwgMTI4MiwgMTIwNzcxLCAwLCAwLCAxMDg4OCwgMCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc0MjU5LCAzMzA0LCA0Mjc1MywgMCwgMCwgMCwgMTYyNywgMCwgMCwgMCwgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgCi0gICAgMCwgNDMwOTQsIDAsIDQzNjUwLCAwLCAwLCA5MDM1LCAwLCAwLCAxMjgwMDUsIDAsIDkyMjA3LCA2ODEyNSwgMCwgMTY0LCAwLCAKLSAgICAwLCAwLCA2OTU4LCAwLCA0MzExNiwgMCwgMCwgMTMyNDUsIDAsIDAsIDEyNzM3NiwgMCwgNzM4OTMsIDEyNzc1NiwgMTI2NjYsIAotICAgIDEzMTc1LCAxMzIwNywgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMCwgNzQ0OSwgCi0gICAgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAwLCA2MzgwOCwgOTA1NCwgOTcxLCAxMzA2MiwgMCwgMCwgNjUxOTUsIDEwMTY0LCAKLSAgICA5MjI1MiwgNzQ0MjgsIDAsIDc4MTQ2LCA5MjYxMSwgMCwgMCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMTI4MTYxLCAKLSAgICAxMTA1NywgMCwgMTMyNzYsIDAsIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDAsIDAsIDAsIDEyMjI5LCA0MTUyMywgMCwgCi0gICAgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMCwgMCwgMTA0NzYsIDM4NTgsIDAsIDM5MzIsIDY0OTU4LCAwLCAwLCA3Mzk4OSwgCi0gICAgNjgxOTIsIDAsIDAsIDM2OSwgMCwgNDE3ODQsIDAsIDY0MTYzLCAwLCAwLCAwLCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDAsIAotICAgIDY1NDc5LCAwLCA0MTc4MSwgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgMCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgCi0gICAgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMCwgNzQ2LCAxMjA3ODQsIDAsIAotICAgIDAsIDEyMDE4LCA2NTI5NCwgMCwgMCwgMCwgMCwgNDQyMiwgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMCwgNzQ0MzAsIAotICAgIDAsIDExNzAwLCA0Mzc0LCAwLCAxMjgxNzksIDEzNjQsIDAsIDgwMzgsIDAsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCAwLCAKLSAgICA2NzM1LCA3Mzk3OSwgMTMxNzQsIDczOTY4LCAxMzIyNSwgMCwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCAwLCAKLSAgICA0Mjg1NSwgMTE4ODU2LCA0Mjg2NiwgMCwgMCwgMCwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAKLSAgICAxMTkzNTQsIDAsIDAsIDAsIDAsIDkyNDAyLCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgMTAzNDAsIAotICAgIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCAwLCAxMjY5OTQsIDQxMzczLCAKLSAgICA3ODAzOSwgMTIzMDMsIDAsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCA0MTM3MSwgMTE2NTYsIDAsIDEyMDcwMywgCi0gICAgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDEyODAxOCwgMTA5NiwgMCwgMCwgNDI2ODgsIDEyNDQxLCAKLSAgICAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAwLCA4MDMyLCAxMzI0MywgMTMyMzcsIDEyNzE5LCAwLCAKLSAgICAxMTkxMDEsIDAsIDY0ODg0LCAxMTk4NzIsIDExOTM0NSwgODU5NywgMCwgMCwgOTg2NCwgMCwgMTIwNzg1LCAxMTk4NzQsIDAsIAotICAgIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDAsIDExOTg3OSwgNjY1OTAsIDEyODEyMywgCi0gICAgNDE1MzMsIDY2MzM3LCAwLCA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNzM4NDksIDAsIDQzNjM4LCA3ODUzNywgCi0gICAgMTI4Mjg3LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAKLSAgICAxMjg4MjgsIDAsIDI5MjUsIDczODA5LCAxMzA1NiwgMTI3NTU5LCAxMzIxMiwgNDMyMzgsIDAsIDEzMTkwLCAxMzE4NywgCi0gICAgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgNjQ0NzYsIDE2OTQsIDgyMTYsIDAsIDY3NzAsIDQzMzMxLCAKLSAgICAwLCA2NTYyMCwgMCwgNDM1NDQsIDAsIDAsIDQxNDQ0LCA2NTYyMSwgMTIwMzI1LCA5MTk3LCA1MjQ2LCAxMTkxMDYsIAotICAgIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgMTIzMTQsIDY1NjE2LCA1MjM4LCAxMTkzMzMsIDAsIDExOTMzNywgNTIzNiwgCi0gICAgNDA5NzksIDAsIDc0MjAxLCA4Mjg2LCAwLCAzOTM2LCAxMTkzMzEsIDExNjk5LCA0MTM0NywgMTI3MjQ5LCAxMzIzNSwgCi0gICAgODg0MiwgNDEyNDgsIDAsIDQzNzksIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCAxMjcyNTAsIDAsIAotICAgIDEyMDUwOSwgMCwgNjYyMjQsIDczNCwgMjk3OSwgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgCi0gICAgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDEyMDMxMCwgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCAKLSAgICA1Mzc5LCAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgMTIwMzE1LCAxMjAzMTQsIDEyODAyNSwgMCwgNDI4NDEsIDEzMjY3LCAwLCAKLSAgICAwLCA0MTc3NSwgMCwgNzEzMCwgNDE3NzMsIDAsIDEwNjYzLCAwLCAwLCAwLCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCAKLSAgICA2NTI5MywgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDAsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgMCwgCi0gICAgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCAwLCAwLCA2ODA5NywgNjQ1NzUsIDEyODUyNCwgMTE5NjUsIDAsIDY4MzU4LCAwLCAKLSAgICA2OTc4OSwgMCwgOTIyNjAsIDY4MTAyLCA5Njk4LCA3ODE0LCA3NDQ3NiwgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAKLSAgICAxMTg4NTgsIDk3NTYsIDY5ODUsIDExOTI1OCwgNzg0OTAsIDc0MjE5LCAwLCAwLCAxMTg5OTcsIDgwMTIsIDU2NzQsIAotICAgIDEyMzUzLCAwLCAxMjM2MSwgNTY3NywgNTU4OCwgMCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDEyMDUzNCwgNTY3NiwgCi0gICAgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIDEyOTQsIDAsIDc4MDU5LCAwLCA0MjUxMSwgMTcyNywgMTIwNzI1LCAKLSAgICA0MjQzNiwgMCwgMCwgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDEwMzE2LCA3NDA5MCwgNTgyNiwgCi0gICAgNTUyMzIsIDU4MTMsIDAsIDEyMDcxMiwgNTg0MSwgNTgzNywgNTUyMzQsIDAsIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCAwLCAKLSAgICAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCA1ODY1LCAxMjAwOTEsIDc5NTYsIDU5OCwgMCwgNjQ2NDksIAotICAgIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDAsIDAsIDAsIDEyODg1NSwgMCwgODQ3LCAxMjgyNDIsIAotICAgIDk1MjksIDAsIDY2NjU3LCA2OTgwLCAwLCAxMjAwMzUsIDc4NDg0LCAwLCAwLCAxMjAwMzMsIDc4NDg2LCAwLCAwLCAKLSAgICAxMjAwMzksIDQyNjgzLCAwLCAwLCA3MTE0LCAwLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgCi0gICAgNTY1MSwgMjkyOSwgNjc5MiwgNDMyMDEsIDAsIDE5OTYzLCA1Njk4LCAwLCAwLCAwLCAwLCA1NjQ0LCAxMDI5MiwgNjU1NDYsIAotICAgIDY5NzI3LCA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDEyMDAyMiwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgMCwgNDEwMTMsIAotICAgIDEwNTY4LCAwLCAwLCAyODY5LCAwLCA0MTAxNSwgMTk0NjkyLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIDAsIAorICAgIDYzODU3LCAxMzg4LCA3NDE2OSwgMCwgMTA3NywgOTgzNTc3LCA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDAsIDAsIDAsIAorICAgIDQyNzczLCAwLCAwLCAwLCAxMTkyMjAsIDAsIDM2NjMsIDAsIDExMTIsIDExOTEyMiwgODY4NiwgMCwgNTMzNCwgNjUwODEsIAorICAgIDQzMjQ5LCA3NDc3OCwgMTI3OTY4LCAxMTA3NywgMCwgNjUwOSwgMCwgNTMyNywgMCwgMTk5MDcsIDYzODY5LCAzNDc4LCAKKyAgICA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIDYzODY2LCA3ODYyNiwgMTkxNSwgCisgICAgNDg0NiwgMCwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIDEyMDcwLCAKKyAgICA4NzYwLCAxMTE3LCAxMTg5ODcsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAwLCA3ODI0MCwgCisgICAgMTIyMjUsIDYzODM4LCA2MzgzNywgOTgzODQ0LCA5ODM3OTUsIDYzODMzLCA2MDQyLCA2NjM2MCwgODA4MywgMCwgMCwgCisgICAgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4Mzg5NSwgNTIyNywgOTA0NywgNjM4MjIsIDEyNzE2MiwgNjA5MSwgMCwgCisgICAgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIAorICAgIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgMTIwMTQzLCA3ODAsIDIwNiwgNzc5MjUsIDQ5MzYsIDY1MTQ3LCA4MTY4LCAKKyAgICA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAxMjgxNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCAKKyAgICA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIAorICAgIDAsIDQ2MTgsIDQyMjA5LCA0MzQzMSwgMTMxNjksIDUyOTAsIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgCisgICAgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAwLCA2Mzk3MCwgMTI4MzU4LCAxMDkyLCA0NzU0LCA3MjczLCAKKyAgICA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgMCwgNzQwOCwgMTE4MDksIDkxNzYxOCwgMCwgMCwgMjk2NSwgNzI1OCwgCisgICAgODgwOCwgMCwgMTA4OSwgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMCwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDAsIAorICAgIDc0NDk0LCAxMjQ2MywgMjk5NCwgMCwgMTE4ODI3LCAwLCA5NjY0LCA3NzkzOSwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgCisgICAgNzQzNDMsIDAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDc3OTQxLCA3ODUwNywgCisgICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDAsIDc0MTUxLCA5MjY1MiwgNjUwMiwgMCwgMTI3MTE4LCAxMjg2OTUsIDYzOTUxLCAKKyAgICAxMjQ2NSwgMCwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCAKKyAgICA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgOTQwNzYsIAorICAgIDAsIDEyNzc3MywgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIAorICAgIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgCisgICAgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMCwgNDM5ODAsIDU0ODUsIDAsIDQyNjk3LCA5MDYxLCA1NTM0LCAKKyAgICAxMDY3MiwgNDUwMiwgMCwgMjUzLCAwLCA2ODIwOCwgMCwgOTIwMywgNzQyMzEsIDAsIDExNTMwLCA5MjU0MiwgNjg2NjgsIDAsIAorICAgIDExODkwNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgNDIzNTQsIDEyODA5OSwgOTgzNjg5LCA3MDA0NCwgMTk1MDY1LCAwLCAKKyAgICA4NDEzLCA5ODM4MDcsIDAsIDU2OTMsIDcyNzIsIDAsIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAxOTUwNjMsIDAsIDAsIAorICAgIDAsIDEyNjYzOSwgMCwgMCwgOTQwNzgsIDEyODEzMywgMTI3NzY3LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCAKKyAgICA5MjE4NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCAKKyAgICA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgNjM5MDQsIDAsIDAsIDQxNzI5LCA0NDIzLCAxMzA3LCAKKyAgICAwLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMCwgNjIxOCwgMCwgMTQzMCwgMCwgMCwgMTIwNjA2LCA3ODc1NCwgNTQxMywgCisgICAgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MjQsIDQ1MTgsIAorICAgIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgMTIwMTU4LCAyNzEwLCAwLCA2OTI0MywgNDE3MjQsIDAsIDQzMDczLCAKKyAgICA0MTY5MCwgMTI0NzksIDk4MzYyNiwgMCwgMCwgOTgzODA5LCA3MDA0NiwgMTYyOCwgMTI3MTQ5LCA5ODM0NzksIDk4MzcyMiwgCisgICAgNjUyNjIsIDYzMzMsIDEwNzgzLCA0MjMxNSwgMCwgNjM4NTUsIDk0MDU2LCAwLCAwLCA1MzM5LCA3NDMyMywgMCwgMTMwMDQsIAorICAgIDAsIDQ0NTcsIDAsIDAsIDAsIDAsIDU2ODQsIDg2NzgsIDEwOTE0LCAwLCA1Njg5LCA2NTgwNywgMCwgNjg0NjQsIDEyNjMzLCAKKyAgICAxMjg3MCwgNjk3MDUsIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMCwgNzQyNTEsIDAsIDEyMDY0NywgCisgICAgMCwgNTAsIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDAsIDAsIDAsIDY2NDY4LCAwLCAxMzI1OSwgNDQ0OCwgMCwgCisgICAgOTgzODM2LCAwLCA3MDA0MywgNjc4NTMsIDAsIDEwNjQwLCAxMTUzOSwgMTE1MSwgMCwgOTE3NjA3LCAxMjc1NDQsIAorICAgIDEyNzA3OSwgMTk1MDUwLCAxMjc4NTIsIDAsIDAsIDAsIDEyNTAxLCA2NDYwNCwgMCwgMTE1MjcsIDExODg3MCwgODgxMiwgMCwgCisgICAgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMCwgCisgICAgMCwgMCwgNDYzNiwgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDAsIDEyMDQ5NSwgMCwgMTI4Mjg0LCAKKyAgICAxMjI3NywgMTk0NjI3LCAxMTk5NSwgOTI1NTMsIDAsIDEyMTU4LCAwLCA4NzQxLCAxMDE5NywgMCwgOTI0MjYsIDAsIDY1MzEsIAorICAgIDAsIDEyNzg0NiwgNDczLCA0MzQxNSwgMCwgOTgzNjQxLCAxODczLCAxMDg3LCAwLCAwLCAwLCA3ODUyNywgNjY0MzksIAorICAgIDQzMjE4LCA5ODMxMjMsIDE5NDcxNiwgNzIzNywgMTI1MDQsIDc0MjgyLCAwLCA5ODM1NzEsIDAsIDk0ODksIDAsIDAsIAorICAgIDQzODQsIDc0MjIwLCA2Mzg0NSwgMjA1OCwgMTI4ODYzLCAxMzI5NSwgNDMxOTEsIDEyODAzMCwgMCwgMTE1NCwgMzg1NywgCisgICAgMTIwNSwgMCwgMCwgMTMxMDAsIDEyOTU4LCAxMjA3MDYsIDc0MTY4LCAwLCAwLCA0NDIxLCAxMDU5MiwgMCwgNDk1LCAKKyAgICAxMTkwMDcsIDQxNzEyLCA3OTgzLCAwLCA5Mzk5NywgMCwgNjM0NywgMTIwMTY1LCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgCisgICAgNDM3LCA0MTcwOSwgNzM3NzIsIDAsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIDY0MzA2LCAwLCAwLCA0OTk5LCAKKyAgICAxOTQ2NDIsIDAsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAwLCAyNzM5LCAwLCA4MDQ0LCA3NDgzNCwgMTk0NjQzLCA0MTc4OSwgCisgICAgMTI4MTQyLCAxMDgwOSwgMCwgMCwgMCwgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIDEzMDU4LCAKKyAgICAxMjA0NDksIDEyODc1LCAwLCA5MjE4NiwgMTMyMjksIDAsIDEwNTc1LCA0MzM5OSwgMCwgMCwgNDE3OTEsIDExMDQsIDAsIDAsIAorICAgIDEwNjU1LCAwLCAwLCAwLCAwLCAxMDgyLCAxOTUwNDksIDg0MjgsIDY1NjksIDAsIDAsIDAsIDY5ODQ5LCA2NzgzLCAwLCAKKyAgICAxMjk5MywgODA0OSwgNDE1NDgsIDQ0MDIxLCA2NDU4LCA5ODM3OTgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIAorICAgIDY0NjIzLCAxMjczLCA0MzQwNywgMCwgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCA5ODM2MDMsIAorICAgIDQxNTQ1LCAwLCA5MjQ0OSwgMCwgMCwgMCwgMCwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCAwLCA4NTAzLCA1MTIyLCA0MTUyNywgCisgICAgMCwgNjYzMjAsIDk4MzgwMiwgMCwgMCwgMCwgNDE1MzcsIDY5NjgzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIDEwMDAzLCAKKyAgICA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDc4NDA2LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAxOTQ2NjQsIDAsIAorICAgIDAsIDQzMjQsIDEyNiwgNDIyNDYsIDExOTE1MiwgMCwgNzQzNzgsIDY1OTI2LCA3NzQ0LCAxOTQ2MzYsIDc0Mjc3LCA3NDMwMiwgCisgICAgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIDE2MzMsIDAsIDAsIDQ3NjIsIDExMDMsIDAsIDAsIAorICAgIDQ3NjUsIDk4MzQ4NCwgMTMwNzgsIDAsIDQ3NjAsIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDAsIDQyMjM2LCAKKyAgICAxMjg4NjcsIDE5NDY2NywgMTE1NDYsIDc0Nzk0LCAzMzcsIDAsIDQyNTkxLCA4NjI3LCAxMjI3OSwgMTExMSwgMCwgOTIxNjEsIAorICAgIDQ3MDcsIDY4MjA2LCAxMDE0MywgNzg4MywgMTI3MDgxLCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAxMzAxMCwgMCwgODMwNCwgCisgICAgOTE3NTYxLCAwLCAxMTk1NzUsIDIyOTMsIDAsIDY2NjU0LCAwLCA5MjY3NiwgMCwgMTMwMDgsIDAsIDQzODUsIDAsIDEzMDExLCAKKyAgICAwLCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCAwLCAwLCA0MTc5MywgNjU3NjMsIDc0MjIxLCAxMjAxNDEsIAorICAgIDQxNzkyLCA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIDQzODIxLCA1NzA5LCAwLCA5NDA1MywgNDM4MTYsIDAsIDAsIAorICAgIDEwNzksIDM4NjcsIDU3MDgsIDAsIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgMCwgMTAyMzcsIAorICAgIDEwOTkxLCAxMjg4MTYsIDQzNDU5LCA5MTczLCA5MTc1ODEsIDkxNzU4MCwgMTMxNzAsIDEyNTQwLCA5MTc1NzcsIDQyNjA1LCAKKyAgICAxMjA3NjUsIDEyNjYxNywgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDAsIDc0ODY3LCAxOTQ2NTQsIDEyNzA3OCwgMzMzOSwgCisgICAgMTE0NDgsIDExMDYsIDkxNzU5MSwgOTE3NTkwLCA5MTc1OTMsIDMzNDAsIDkxNzU4NywgOTE3NTg2LCA5MTc1ODksIAorICAgIDkxNzU4OCwgMTIwNTQxLCAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCA4NjQsIDAsIAorICAgIDExODkyNiwgODk3MiwgMCwgNzg0OSwgMTIwMDkyLCA5MjUzMywgMTMyNDAsIDE5NTA2OCwgNTE5MiwgNDMzOCwgNjc5ODIsIAorICAgIDEwOTQ4LCA5MTc2MDEsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDkzOTkzLCAwLCAKKyAgICA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIDYzNzgyLCA2Mzc4MSwgNjM3ODAsIAorICAgIDYzNzc5LCAxNTgzLCAwLCAxMzI2MCwgNDU1MCwgMCwgNjQyMDUsIDAsIDAsIDQxNTIyLCA5ODM5MDYsIDkyMTY4LCAKKyAgICA5ODM3NjMsIDkxNzg1OCwgMTEzNTQsIDk0MDcxLCAwLCA0Mjc5NSwgMCwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgCisgICAgMTMyNzIsIDEzMTk0LCAxMzM0LCA2OTkyNiwgNDQ3OSwgMTE3OCwgNjU1ODYsIDEyMDY2MywgNjY2ODEsIDExOTE5MywgCisgICAgNDYwMSwgMCwgMCwgOTgzNzU2LCAwLCAwLCAxOTQ2NTgsIDAsIDY4MDksIDYzNzg2LCA2MDMxLCAwLCA2Mzc5MSwgNjM3OTAsIAorICAgIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIAorICAgIDAsIDAsIDEwNzQ3LCAxMjUsIDAsIDY0ODkwLCAwLCA5ODMxMzEsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgCisgICAgMTMyNTgsIDk1MzYsIDc0MDc3LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAKKyAgICAxMzQ5LCA2Mzc1MCwgNjM3NDksIDAsIDAsIDAsIDYzNzUzLCA2MzgwMiwgNDEwODQsIDEyMDYyMiwgNjgxMzMsIDQxOTMwLCAKKyAgICA2MzgwNSwgNjM4MDQsIDQzNjMyLCA2MzgwMSwgNDEwODIsIDgxNDAsIDYzNzk4LCA2MjYwLCAwLCAwLCA5NDA3NCwgNjM3OTMsIAorICAgIDExOTg4LCAzODk4LCAxMjgyNDEsIDEwMjAxLCAxMjIzOCwgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIDEwNDMxLCAKKyAgICA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgOTgzMzIxLCA0MjIwMywgNzk1MCwgMTA4MDQsIDYzNzcxLCAKKyAgICA0Mjc4NywgNDM4NiwgMTIyMjQsIDY5NzMsIDI3OTMsIDEyNDc1LCAwLCAwLCA2Mzc2OSwgOTUzMCwgOTgzMTE5LCAxMjIzMiwgCisgICAgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCA0NTk1LCA2Mzc2MCwgNzkyLCAwLCA2NDgwMywgMCwgODc0MiwgMCwgMTEwNTMsIAorICAgIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMCwgNzU4OCwgNjM3NDgsIDE2OTMsIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIAorICAgIDkxNzg1MywgMTA5MCwgMTIwNjc5LCAxMjgzNTYsIDExNjY1LCA3NDEzMywgNDU1OCwgNjU2ODUsIDk1MjMsIDAsIDAsIAorICAgIDc4NjgxLCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCAwLCAKKyAgICAzMTcwLCAxMjQ4NSwgMCwgMTA4NzIsIDc4MjcxLCAxMzAwNiwgNjQ0MzMsIDAsIDAsIDk0MSwgMCwgMCwgMCwgNjU1NDEsIAorICAgIDExMDYzLCAwLCA4MjI4LCAwLCA0MjA2NSwgMCwgMCwgOTQwMzksIDAsIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgMCwgCisgICAgMTE5ODYzLCA0MzYwMywgOTQwNzUsIDY1Mzk3LCAyODgsIDAsIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgMCwgNjUzMDAsIAorICAgIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCAwLCAxMjc4MjksIDY1MzkzLCAwLCA3NDEzOCwgMCwgMCwgCisgICAgMCwgNzQxMzksIDkyNzEyLCA2NTM5NCwgMTE1NDgsIDUyNzAsIDAsIDY1Mzk2LCAwLCA2NTgxMywgMTMyNTYsIDEyODIsIAorICAgIDEyMDc3MSwgMCwgMCwgMTA4ODgsIDk4MzYwNCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDk4Mzk2NSwgMCwgMCwgNzQyNTksIAorICAgIDMzMDQsIDQyNzUzLCAwLCAwLCAwLCAxNjI3LCAwLCAwLCAwLCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAwLCAKKyAgICA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgMCwgOTAzNSwgMCwgMCwgMTI4MDA1LCAwLCA5MjIwNywgNjgxMjUsIDAsIAorICAgIDE2NCwgMCwgOTQwNjcsIDk0MDAwLCA2OTU4LCAwLCA0MzExNiwgMCwgNzAwMTksIDEzMjQ1LCAwLCAwLCAxMjczNzYsIDAsIAorICAgIDcwMDMxLCAxMjc3NTYsIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgCisgICAgNjU1MDksIDAsIDc0NDksIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMCwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDAsIDAsIAorICAgIDY1MTk1LCAxMDE2NCwgOTIyNTIsIDc0NDI4LCAwLCA3ODE0NiwgOTI2MTEsIDAsIDAsIDAsIDEwMDQ1LCAxMjg4MiwgCisgICAgMTMyNzUsIDEyODE2MSwgMTEwNTcsIDAsIDEzMjc2LCAwLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAwLCAwLCAwLCAKKyAgICAxMjIyOSwgNDE1MjMsIDAsIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDAsIDAsIDEwNDc2LCAzODU4LCAwLCAzOTMyLCAKKyAgICA2NDk1OCwgMCwgMCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCAwLCA0MTc4NCwgMCwgNjQxNjMsIDAsIDAsIDAsIAorICAgIDY1NDc0LCA0Nzk2LCAxMjI5MiwgMTI2NTk1LCA2NTQ3OSwgMCwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIAorICAgIDAsIDAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIDU3ODgsIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIAorICAgIDAsIDQzODgsIDAsIDc0NiwgMTIwNzg0LCAwLCAwLCAxMjAxOCwgNjUyOTQsIDAsIDAsIDAsIDAsIDQ0MjIsIDQ3MDgsIAorICAgIDM3OTksIDc0MjkyLCAxMTkzNTcsIDAsIDc0NDMwLCAwLCAxMTcwMCwgNDM3NCwgMCwgMTI4MTc5LCAxMzY0LCAwLCA4MDM4LCAKKyAgICAwLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgMCwgNjczNSwgNzM5NzksIDEzMTc0LCA3Mzk2OCwgMTMyMjUsIDAsIDY5ODA4LCAKKyAgICA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgMCwgNDI4NTUsIDExODg1NiwgNDI4NjYsIDAsIDAsIDAsIDY2NDM4LCA0MTc4NSwgCisgICAgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAwLCA5ODM1NjgsIDAsIDAsIDkyNDAyLCAxMjgwNjIsIDEyOTY1LCAKKyAgICAzODQsIDY0NTEyLCAxMDQwNCwgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIAorICAgIDQxNzg3LCA5ODMyMzcsIDEyNjk5NCwgNDEzNzMsIDc4MDM5LCAxMjMwMywgMCwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIAorICAgIDQxMzcxLCAxMTY1NiwgMCwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgMTI4MDE4LCAxMDk2LCAKKyAgICAwLCAwLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIDAsIDgwMzIsIDEzMjQzLCAKKyAgICAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAwLCA2NDg4NCwgMTE5ODcyLCAxMTkzNDUsIDg1OTcsIDAsIDAsIDk4NjQsIAorICAgIDAsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgMCwgMTA0NTksIDExOTg3OCwgMCwgCisgICAgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCA0MTUzMywgNjYzMzcsIDAsIDkyMTg0LCAwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCAKKyAgICA3Mzg0OSwgMCwgNDM2MzgsIDc4NTM3LCAxMjgyODcsIDYyNjEsIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgCisgICAgOTgyLCAyNzU2LCAxMzI5MiwgMTMyMDYsIDEyODgyOCwgMCwgMjkyNSwgNzM4MDksIDEzMDU2LCAxMjc1NTksIDEzMjEyLCAKKyAgICA0MzIzOCwgMCwgMTMxOTAsIDEzMTg3LCA5MjU0MSwgMTMxOTgsIDExODc5MywgMCwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgCisgICAgMTY5NCwgODIxNiwgNzEzNjksIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgOTgzNzE5LCA0MzU0NCwgMTI2NDY2LCAwLCAKKyAgICA0MTQ0NCwgNjU2MjEsIDY5OTU1LCA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgCisgICAgMTIzMTQsIDY1NjE2LCA1MjM4LCAxMTkzMzMsIDAsIDExOTMzNywgNTIzNiwgNDA5NzksIDAsIDc0MjAxLCA4Mjg2LCAKKyAgICAxMjg1MzcsIDM5MzYsIDExOTMzMSwgMTE2OTksIDQxMzQ3LCAxMjcyNDksIDEzMjM1LCA4ODQyLCA0MTI0OCwgMCwgNDM3OSwgCisgICAgMTMyMzksIDEyNjkyLCA3OTY5LCAxMjcyNjYsIDcyMTksIDEyNzI1MCwgMTI4MjUxLCAxMjA1MDksIDAsIDY2MjI0LCA3MzQsIAorICAgIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCAKKyAgICAxMjAzMTAsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgCisgICAgNzQ4MzIsIDEyMDMxNSwgMTIwMzE0LCAxMTUwNiwgMCwgNDI4NDEsIDEzMjY3LCAwLCAwLCA0MTc3NSwgMCwgNzEzMCwgCisgICAgNDE3NzMsIDAsIDEwNjYzLCAwLCAwLCAwLCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgNjUyNTAsIDEzMjY1LCAKKyAgICAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDAsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgMCwgMTI5NjcsIDY2MDQxLCA1NjEyLCAKKyAgICA0NTgzLCAwLCAwLCA2ODA5NywgNjQ1NzUsIDEyNjYzNywgMTE5NjUsIDAsIDY4MzU4LCAwLCA2OTc4OSwgMCwgOTIyNjAsIAorICAgIDY4MTAyLCA5Njk4LCA3ODE0LCA3NDQ3NiwgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIAorICAgIDExOTI1OCwgNzg0OTAsIDc0MjE5LCAwLCAwLCAxMTg5OTcsIDgwMTIsIDU2NzQsIDEyMzUzLCAwLCAxMjM2MSwgNTY3NywgCisgICAgNTU4OCwgMCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDEyMDUzNCwgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIAorICAgIDU2NzIsIDEyOTQsIDAsIDc4MDU5LCAwLCA0MjUxMSwgMTcyNywgMTIwNzI1LCA0MjQzNiwgMCwgMCwgMCwgNzQyMjIsIAorICAgIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDEwMzE2LCA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIDAsIDEyMDcxMiwgCisgICAgNTg0MSwgNTgzNywgNTUyMzQsIDAsIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCAwLCAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIAorICAgIDU3OTcsIDQxMDExLCA1ODY1LCAxMjAwOTEsIDc5NTYsIDU5OCwgMCwgNjQ2NDksIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCAKKyAgICA1NjcxLCAxMjAwNDEsIDAsIDAsIDAsIDEyODg1NSwgMCwgODQ3LCAxMjgyNDIsIDk1MjksIDAsIDY2NjU3LCA2OTgwLCAKKyAgICA3ODQ4MywgMTIwMDM1LCA3ODQ4NCwgOTgzNDgzLCAwLCAxMjAwMzMsIDc4NDg2LCAwLCAwLCAxMjAwMzksIDQyNjgzLCAwLCAKKyAgICA5ODMwNTUsIDcxMTQsIDAsIDAsIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCAKKyAgICA2NzkyLCA0MzIwMSwgMCwgMTk5NjMsIDU2OTgsIDAsIDAsIDAsIDAsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIAorICAgIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgMTIwMDIyLCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIAorICAgIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDAsIDQxMDE1LCAxOTQ2OTIsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCA0MTgwMiwgMCwgCiAgICAgNDI2MDgsIDc4NDY5LCA5ODg0LCA0NzU5LCAwLCAwLCAxMDI2NiwgNDEzNTksIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIAogICAgIDE2MDksIDkwMiwgMCwgNjM5MzYsIDEyODg3NSwgMTE2NjEsIDgxMjIsIDU4MTgsIDAsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAKLSAgICAyNTU0LCA1MTU4LCA1NzE0LCAxMjcwMTUsIDAsIDAsIDgwNywgNDMwNzksIDAsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAKLSAgICAwLCA0MjE1NSwgMCwgNDEzNTYsIDc0MTEwLCAxMTg4MDEsIDAsIDAsIDg2NzYsIDAsIDAsIDExMDY2LCA0NTEsIDYzOTQxLCAKLSAgICA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAwLCAwLCA0MzYwOSwgNTkwNiwgMTIwNTUzLCAxNDQwLCAwLCAxMjg4NTMsIAotICAgIDEyMDAxNiwgNzQyODMsIDExMDA1LCAwLCA2NjY1NiwgNjYwNDQsIDAsIDE5NDY5OCwgMCwgMCwgNDMzOTMsIDEwMDk0LCAwLCAKLSAgICAxMTUyOSwgMTA4NTcsIDEyMDY0MywgNjY0MzYsIDY1NDYsIDkzLCA4MTAyLCAwLCA2ODQwNSwgMCwgMCwgODE3MSwgMCwgCi0gICAgMTE5MDk3LCAxMjcwNjQsIDkxNzU0MywgMzgzLCA3MTU0LCA0MTY1NiwgOTI2MzQsIDAsIDAsIDUxODcsIDAsIDEyNzI3NywgCi0gICAgMTEyODYsIDY4NjIwLCA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDAsIDQxMDA1LCAwLCAwLCAwLCA4MjkyLCAxOTUwNzQsIAotICAgIDQ5ODAsIDg4NjAsIDczOTQ3LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDAsIDAsIDEwNjMxLCA2NjAzMSwgCi0gICAgNzk3MiwgMCwgNzg3ODUsIDAsIDc5MDAsIDAsIDExMzA5LCA3ODMxOSwgNDE5OCwgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCAKLSAgICA5MjU1MiwgMCwgMTI5MzEsIDAsIDQyNjg0LCA3NDI4NSwgMjA4OCwgMCwgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgCi0gICAgNzQ3NzEsIDAsIDAsIDEyODM2LCAwLCAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAwLCAwLCA3NDY0LCAwLCAKLSAgICA2NTg2NSwgMCwgMTk0NjUwLCAxMjcxNDQsIDAsIDkzNDIsIDEyMDQ2NCwgMCwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCi0gICAgNDEwMDcsIDc0Mzc1LCAwLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAxMTkxMzYsIDAsIDAsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIAotICAgIDEyNzE1MywgNjg2NTMsIDQzNTU4LCA1NTIyLCAwLCA2MSwgMCwgNzQxMDUsIDM2MzMsIDAsIDY1MTYyLCA0MTIzNCwgCi0gICAgMTIwODksIDc4MjgxLCA5NzcxLCAwLCAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgMCwgODEyNiwgCi0gICAgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAKLSAgICAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTkxMDMsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgMCwgMCwgCi0gICAgODkzMCwgNjY2NzgsIDc0MjQ5LCAxMTkzLCAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAwLCAwLCA3NzQzLCAwLCAKLSAgICAwLCA3NzkwNCwgOTI2NDAsIDc3OTA1LCA5MDM0LCA2MDM5LCAwLCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgCi0gICAgNjY0NjksIDAsIDAsIDAsIDQyODE1LCAwLCA0MTk2NiwgMCwgMCwgMCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCAKLSAgICAwLCAwLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgMCwgNTUyMCwgMTE2NjIsIDAsIDY1MzMwLCA0MjgxMiwgMCwgMCwgCi0gICAgMTIzMjYsIDAsIDAsIDQyODA4LCAxMjgzMzcsIDkzNDgsIDY0OTAxLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTc1ODQsIDQzNzAyLCAKLSAgICAwLCA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgMTIwMDc5LCA4NjQ0LCAwLCAwLCAwLCA3NDI5NiwgNDE5MDksIDAsIAotICAgIDEyMDMzMiwgMjc5MSwgNjk2NjMsIDE4OTEsIDY5ODI0LCAwLCA0MTkwNywgNjY2NDcsIDExODkzOSwgODc2MSwgMTI5NDIsIAotICAgIDU3NDgsIDAsIDEwNzczLCAwLCAwLCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgMTMxNDYsIDEyNzE4NSwgCi0gICAgNjM5MzEsIDAsIDY1OTAyLCAyODgyLCAwLCAwLCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgMCwgMCwgMCwgNzM4NjAsIAotICAgIDAsIDAsIDY0MzQ1LCAwLCA5MjAxLCAxMjgzMTQsIDE5NDk0MCwgMCwgMCwgNDM2NzksIDkxNzU4NSwgNjUxMTcsIDkyMjcwLCAKLSAgICAwLCAxMDQyNywgMCwgMzg0NCwgMTIwNjc1LCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgMCwgMTI4Nzg5LCAwLCAwLCA3ODMsIAotICAgIDE5NDkzNSwgMCwgMCwgMCwgMTk0NzIwLCA2NTA1NiwgMzYyMCwgMCwgNjgzNzgsIDQ1NTYsIDAsIDAsIDE5NDkzMywgCi0gICAgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDAsIDAsIDEyNzUyNywgOTE3NywgODkwMiwgMCwgOTgzOSwgCi0gICAgMCwgMTI4OTEsIDAsIDAsIDYzOTk5LCAyMDE2LCA0MTkxNywgOTc4OCwgNjM5MjgsIDAsIDE4NjIsIDY1ODAwLCA5MTU1LCAKLSAgICA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgNjYwMTcsIDQ1MDgsIDY0ODgzLCAKLSAgICA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMCwgNjQ1OTIsIDc0Mjc2LCAxMjAwODAsIDY3ODQsIDc4Nzg4LCA2ODE4MSwgMCwgMCwgCi0gICAgMCwgMTI3NTM0LCAxMjE0NywgOTAyNCwgNjYzNzgsIDY2NDcyLCAwLCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgCi0gICAgMTk0OTI5LCA2NDUwOSwgNzgxNTIsIDAsIDAsIDExMDUxLCAwLCAwLCAxMTM1NSwgNjU4ODUsIDAsIDEyODMxMCwgNDEyMTQsIAotICAgIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgMCwgNDA0MCwgMTIwNTcwLCA2MTY3LCAKLSAgICAwLCA2MzkyMiwgNjU5NCwgMCwgMCwgMCwgMzYyNCwgNDMwMzYsIDAsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIAotICAgIDQxOTU1LCAwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIDAsIDY4MDMsIDAsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIAotICAgIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIAotICAgIDQyNzQyLCA5NTE3LCAxMTUxOCwgMCwgNzg3OTAsIDAsIDE5NDc3NywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIAotICAgIDYzOTYwLCA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTEzOTcsIDI4ODAsIDAsIDAsIDI4NzIsIDAsIDAsIDM0OTgsIDQzNzgsIDkxNzUzOSwgNDI3MCwgMCwgCi0gICAgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMCwgMCwgMCwgMCwgMCwgODE2MSwgMzkzLCAxMjAxMywgMCwgCi0gICAgMCwgMCwgNDE1LCA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCAwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgMCwgNjM5NjEsIAotICAgIDQ0NzIsIDAsIDAsIDc4MTU5LCA2OTY5OSwgOTE3OTM2LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgCi0gICAgMTAzMzEsIDYzODMwLCAxMTk2MjUsIDE5NDk0NSwgNDIxMDMsIDg2MjgsIDk4MTMsIDAsIDQyNDUzLCAxNjA0LCA5NTY1LCAKLSAgICAxMDUzOSwgNjk3MDEsIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDAsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAKLSAgICAwLCAwLCA2Mzk4MCwgMTE4MDEsIDM2MjIsIDAsIDY0MzM2LCAxMjAxNywgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgCi0gICAgMTk2NiwgNDM2MjgsIDAsIDAsIDAsIDAsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgCi0gICAgNDAyLCAwLCAxMzE0NywgMCwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgMCwgCi0gICAgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCAwLCAxOTQ2NzAsIDAsIDkyMzUxLCAwLCA3NDQyNSwgMTEyOTksIDE1NjEsIDAsIAotICAgIDkyMzU5LCA2NDk0MiwgMCwgMTk0NzMzLCAwLCAxOTQ3MzIsIDAsIDc0MzAxLCAwLCAxMTI4MCwgMCwgNjk3ODQsIDc0MDYwLCAKLSAgICAwLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTk0NjY5LCA3NDAyLCAKLSAgICA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY4NDIxLCAwLCAwLCA1NDA1LCAxMjc4NzUsIAotICAgIDY0ODY2LCAwLCAxMTk1ODMsIDEyODM0NSwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCA2NDY5MCwgMzI1NCwgMCwgMCwgCi0gICAgMCwgNDIzOTAsIDQzNjc4LCAxOTQ3MjUsIDAsIDY1MDc3LCAwLCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAKLSAgICAxMTUyMCwgNTYxMSwgMCwgMzM3NywgMCwgMCwgMCwgMCwgNzgyMjgsIDAsIDAsIDQyNjkxLCA5MTc4ODYsIDEyNzE5OCwgCi0gICAgNzQ3NjcsIDAsIDEyNzA3NSwgMTM3OSwgMjQ2LCAwLCAwLCAzNzg4LCAwLCAxMTA0MSwgOTI1NDksIDY2MzA0LCAwLCAwLCAKLSAgICA4OTE3LCA0MjQwMywgMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDY1NiwgMCwgNjUyMTQsIDExOTI0MiwgNDI1NjcsIAotICAgIDkyMjE3LCAxMzE2MywgMCwgMTIwODMxLCA3NDU5NywgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgNDc1NSwgCi0gICAgNzQyNDQsIDAsIDExNDQzLCAwLCA2NjMxOSwgNzQ1OTgsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIAotICAgIDc0NTEwLCAwLCA3NDQ4NSwgNDI0NDIsIDY1NDcwLCAwLCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDEyODAwNiwgCi0gICAgMCwgOTgyOCwgMCwgMCwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgCi0gICAgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIDAsIDExODk0NiwgMCwgMCwgNzQwNDEsIDAsIDEyMDYzMywgNDM1MzksIDU0MTEsIAotICAgIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCAwLCA0MjM5MywgMTMwODYsIDEzMTAsIDE5NDY4NywgOTMzNywgMTIwNTIsIDEwNjQzLCAKLSAgICA1NTI3MSwgMCwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCAwLCAwLCAxOTQ3NTYsIDc0MzEwLCAKKyAgICAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCAwLCAwLCA4MDcsIDQzMDc5LCAwLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMCwgCisgICAgNDIxNTUsIDAsIDQxMzU2LCA3NDExMCwgMTE4ODAxLCAxMjY2MTQsIDAsIDg2NzYsIDk4MzI4MywgMCwgNTU4MiwgNDUxLCAKKyAgICA2Mzk0MSwgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMCwgMCwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgCisgICAgMTI4ODUzLCAxMjAwMTYsIDc0MjgzLCAxMTAwNSwgMCwgNjY2NTYsIDY2MDQ0LCAwLCAxOTQ2OTgsIDAsIDAsIDQzMzkzLCAKKyAgICAxMDA5NCwgMCwgMTE1MjksIDEwODU3LCAxMjA2NDMsIDY2NDM2LCA2NTQ2LCA5MywgODEwMiwgMCwgNjg0MDUsIDAsIDAsIAorICAgIDgxNzEsIDAsIDExOTA5NywgMTI3MDY0LCA5MTc1NDMsIDM4MywgNzE1NCwgNDE2NTYsIDkyNjM0LCA5NDA0MCwgMCwgNTE4NywgCisgICAgNzEyOTYsIDEyNzI3NywgMTEyODYsIDY4NjIwLCA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDAsIDQxMDA1LCAwLCAwLCAKKyAgICA5ODM4MTgsIDgyOTIsIDE5NTA3NCwgNDk4MCwgODg2MCwgNzM5NDcsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIAorICAgIDE5NDcwNSwgMCwgMCwgMTA2MzEsIDY2MDMxLCA3OTcyLCAwLCA3ODc4NSwgMCwgNzkwMCwgMCwgMTEzMDksIDM4MDYsIAorICAgIDQxOTgsIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgOTI1NTIsIDAsIDEyOTMxLCAwLCA0MjY4NCwgNzQyODUsIDIwODgsIAorICAgIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMCwgMCwgMTI4MzYsIDAsIDAsIDc0MzQyLCA4NTkzLCAKKyAgICAwLCAwLCA2ODQ0NSwgMTMyNTUsIDAsIDAsIDc0NjQsIDAsIDY1ODY1LCAwLCAxOTQ2NTAsIDEyNzE0NCwgMCwgOTM0MiwgCisgICAgMTIwNDY0LCAwLCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCA0MTAwNywgNzQzNzUsIDAsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIAorICAgIDExOTEzNiwgMCwgMCwgNjk3MjQsIDQwOTkyLCA5MjI2NCwgMTI3MTUzLCA2ODY1MywgNDM1NTgsIDU1MjIsIDAsIDYxLCAwLCAKKyAgICA3NDEwNSwgMzYzMywgOTgzODkxLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgOTgzODk2LCAxMzI1MSwgCisgICAgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgMCwgODEyNiwgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIAorICAgIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAKKyAgICAxMTkxMDMsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgMCwgOTgzNjUwLCA4OTMwLCA2NjY3OCwgNzQyNDksIDExOTMsIAorICAgIDEwMDU2LCAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDAsIDAsIDc3NDMsIDAsIDAsIDc3OTA0LCA5MjY0MCwgNzc5MDUsIAorICAgIDkwMzQsIDYwMzksIDAsIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgMCwgMCwgMCwgNDI4MTUsIDAsIAorICAgIDQxOTY2LCAwLCAxMjc0NzEsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgMCwgMCwgMTIwMzM5LCA2NTE1OSwgCisgICAgNjQzOTAsIDAsIDAsIDU1MjAsIDExNjYyLCAwLCA2NTMzMCwgNDI4MTIsIDAsIDAsIDEyMzI2LCA5ODM4NDcsIDAsIDQyODA4LCAKKyAgICAxMjgzMzcsIDkzNDgsIDY0OTAxLCA5ODM4NTIsIDAsIDAsIDAsIDAsIDAsIDkxNzU4NCwgNDM3MDIsIDk4MzU3NiwgNTg1NywgCisgICAgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDEyMDA3OSwgODY0NCwgMCwgMCwgMCwgNzQyOTYsIDQxOTA5LCAwLCAxMjAzMzIsIAorICAgIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgMCwgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIDg3NjEsIDEyOTQyLCA1NzQ4LCAwLCAKKyAgICAxMDc3MywgMCwgMCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIDEzMTQ2LCAxMjcxODUsIDYzOTMxLCAwLCAKKyAgICA2NTkwMiwgMjg4MiwgMCwgMCwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIDAsIDk4MzY1MSwgMCwgNzM4NjAsIDAsIDAsIAorICAgIDY0MzQ1LCAwLCA5MjAxLCAxMjgzMTQsIDE5NDk0MCwgMCwgMCwgNDM2NzksIDkxNzU4NSwgNjUxMTcsIDkyMjcwLCAwLCAKKyAgICAxMDQyNywgMCwgMzg0NCwgMTIwNjc1LCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgMCwgMTI4Nzg5LCAwLCAwLCA3ODMsIAorICAgIDE5NDkzNSwgMCwgMCwgOTgzMDY0LCAxOTQ3MjAsIDY1MDU2LCAzNjIwLCA0MTE4MCwgNjgzNzgsIDQ1NTYsIDAsIDAsIAorICAgIDE5NDkzMywgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDAsIDAsIDEyNzUyNywgOTE3NywgODkwMiwgCisgICAgOTM5NTgsIDk4MzksIDAsIDEyODkxLCA5ODM3NDYsIDk4MzYyNywgNjM5OTksIDIwMTYsIDQxOTE3LCA5Nzg4LCA2MzkyOCwgCisgICAgMCwgMTg2MiwgNjU4MDAsIDkxNTUsIDY2NjIzLCA5Nzg2LCA2NTA4MiwgNDE5MTksIDg1NzksIDQxOTE0LCA3OTgxLCAwLCAKKyAgICA2NjAxNywgNDUwOCwgNjQ4ODMsIDkyNDU2LCA5MjUyMiwgMTI3ODE0LCAwLCA2NDU5MiwgNzQyNzYsIDEyMDA4MCwgNjc4NCwgCisgICAgNzg3ODgsIDY4MTgxLCAwLCAwLCAwLCAxMjc1MzQsIDEyMTQ3LCA5MDI0LCA2NjM3OCwgNjY0NzIsIDk4MzkyMCwgNjQyODksIAorICAgIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIDE5NDkyOSwgNjQ1MDksIDc4MTUyLCAwLCAxMjY1MDUsIDExMDUxLCA5ODMyODgsIDAsIAorICAgIDExMzU1LCA2NTg4NSwgMCwgMTI4MzEwLCA0MTIxNCwgMCwgMTIyOTksIDAsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIAorICAgIDk5NjMsIDY4NjQ5LCAxMjY2MDksIDQwNDAsIDEyMDU3MCwgNjE2NywgMCwgNjM5MjIsIDY1OTQsIDk4MzczMSwgMCwgMCwgCisgICAgMzYyNCwgNDMwMzYsIDAsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIAorICAgIDY1NjA1LCA2ODAzLCAwLCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCAKKyAgICA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgMTE1MTgsIDAsIDc4NzkwLCAKKyAgICAwLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDYzOTYwLCA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIAorICAgIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgMCwgMCwgMCwgMCwgMTEzOTcsIDI4ODAsIDAsIDAsIAorICAgIDI4NzIsIDAsIDAsIDM0OTgsIDQzNzgsIDkxNzUzOSwgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgCisgICAgNTIzMCwgMCwgMCwgMCwgMCwgMCwgODE2MSwgMzkzLCAxMjAxMywgMCwgMCwgMTI2NDc5LCA0MTUsIDYzOTY0LCA2Mzk2MywgCisgICAgNDIzNDUsIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgMCwgNjM5NjEsIDQ0NzIsIDAsIDAsIDc4MTU5LCAKKyAgICA2OTY5OSwgOTE3OTM2LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAKKyAgICAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgMCwgNDI0NTMsIDE2MDQsIDk1NjUsIDEwNTM5LCA2OTcwMSwgCisgICAgNjU3NjQsIDQxNDE1LCA2NTc2NywgMCwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIDAsIDAsIDYzOTgwLCAKKyAgICAxMTgwMSwgMzYyMiwgOTgzMTI0LCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIDE5NjYsIAorICAgIDQzNjI4LCAwLCA5ODMyODQsIDAsIDAsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgCisgICAgNDAyLCAwLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCAKKyAgICAwLCAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDAsIDE5NDY3MCwgMCwgOTIzNTEsIDAsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMCwgCisgICAgOTIzNTksIDY0OTQyLCA5ODM1NTksIDE5NDczMywgOTgzNjc3LCAxOTQ3MzIsIDAsIDc0MzAxLCAwLCAxMTI4MCwgMCwgCisgICAgNjk3ODQsIDc0MDYwLCAwLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgCisgICAgMTk0NjY5LCA3NDAyLCA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY4NDIxLCA5ODM5MTAsIDAsIAorICAgIDU0MDUsIDEyNzg3NSwgNjQ4NjYsIDAsIDExOTU4MywgMTI4MzQ1LCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIAorICAgIDY0NjkwLCAzMjU0LCAwLCAwLCAxMjgyMDcsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCA5ODM5MDAsIDY1MDc3LCAwLCA2Mzg4LCAKKyAgICAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAxMTUyMCwgNTYxMSwgMCwgMzM3NywgMCwgMCwgMCwgMCwgNzgyMjgsIDAsIAorICAgIDk4Mzc1MywgNDI2OTEsIDkxNzg4NiwgMTI3MTk4LCA3NDc2NywgMCwgMTI3MDc1LCAxMzc5LCAyNDYsIDAsIDk4Mzc1MiwgCisgICAgMzc4OCwgOTgzMTA2LCAxMTA0MSwgOTI1NDksIDY2MzA0LCAwLCAwLCA4OTE3LCA0MjQwMywgMzAxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5ODM2ODgsIDEwNjU2LCAwLCA2NTIxNCwgMTE5MjQyLCA0MjU2NywgOTIyMTcsIDEzMTYzLCA5ODMyMDIsIDEyMDgzMSwgCisgICAgNzQ1OTcsIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCAxOTQ2MjEsIDExNDQzLCAwLCAKKyAgICA2NjMxOSwgNzQ1OTgsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAwLCA3NDQ4NSwgCisgICAgNDI0NDIsIDY1NDcwLCA5ODM4OTgsIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgMTI4MDA2LCAwLCA5ODI4LCAwLCAKKyAgICAwLCA0MjI4MCwgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAxMTk2MzEsIAorICAgIDExMDAyLCA0MjQ3MCwgMCwgMTE4OTQ2LCAwLCAwLCA3NDA0MSwgMCwgNzAwNDUsIDQzNTM5LCA1NDExLCA0MjE5NiwgMCwgMCwgCisgICAgMCwgOTE1MCwgMCwgNDIzOTMsIDEzMDg2LCAxMzEwLCAxOTQ2ODcsIDkzMzcsIDEyMDUyLCAxMDY0MywgNTUyNzEsIAorICAgIDk4MzE3OSwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCAwLCAwLCAxOTQ3NTYsIDc0MzEwLCAKICAgICA2NTU0LCAwLCAxMTkxNCwgNTQ1MiwgMCwgMCwgMCwgMCwgMCwgMTk0NjgxLCA5MjU2MCwgMjcxMywgMCwgOTY1MCwgNDMzMzAsIAogICAgIDAsIDE5NDY3NSwgMTQwNiwgMCwgMCwgOTI2NTksIDAsIDY4MjIzLCA0MTQzLCAxOTQ2NzcsIDAsIDY1NzQ4LCA0MTQxLCAKICAgICA5NjgyLCA2NTI4NywgMTUwOCwgMTI3MDEzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIAogICAgIDQxNDUsIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgMCwgNDM0MDMsIDAsIAotICAgIDAsIDAsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCAwLCAxMjk1NSwgMTA1OTYsIDI4ODgsIDAsIDAsIDAsIDk2NTcsIAotICAgIDkwMTksIDE5NDc2NiwgMCwgMjg3OCwgNTM5MCwgMCwgMTk0OTYxLCAwLCA2ODY3OSwgNDM1NTIsIDc1MDEsIDYzMjgsIDAsIAotICAgIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgNjgzODEsIDAsIDAsIDg5ODYsIDAsIDEwNjMyLCAKLSAgICAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDAsIDAsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDAsIAotICAgIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDAsIDg4NTQsIAotICAgIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIDAsIDE3ODQsIDEzNjEsIDE5NTA0NywgMCwgNzkwNSwgMCwgNjQ4NjgsIAotICAgIDEyODgxMywgMTMxNTgsIDkyMTY2LCA3MjExLCAwLCA5MzcxLCA3Mzk3MywgMCwgNjgyOCwgMTYyNSwgOTIzMDIsIDAsIAotICAgIDEzNDIsIDY4NDQwLCA2NDE3MSwgMCwgMTA5MDMsIDAsIDAsIDAsIDAsIDAsIDQ0ODIsIDQxNjA2LCAwLCAxMjg1NjksIDAsIAotICAgIDAsIDY0MzgxLCAwLCAwLCAwLCA0MjI0NSwgMCwgNDE5NzIsIDAsIDQ0NCwgMCwgOTEyNywgNjY2ODcsIDY2NjE5LCAwLCAKLSAgICA3ODAyNSwgMCwgMTEzNDksIDQwOTkxLCAwLCAwLCAxMTk1OTksIDEyMDgzMCwgMCwgMTE5NywgMTI4MjgyLCAxMTQ5LCAKLSAgICAxOTQ5NzAsIDAsIDAsIDQwOTkwLCAwLCAwLCAzNDkyLCAwLCAxMjc5NDIsIDAsIDAsIDAsIDEyODM4LCAwLCAxOTk0OCwgMCwgCi0gICAgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDAsIDExOTA1OSwgMTIwMzYsIDQxMzA5LCAwLCAwLCA4MTUyLCAwLCA2NDQyOCwgCi0gICAgMTIyMjcsIDAsIDAsIDEyODI4LCAxMjc1MTEsIDAsIDAsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDExOTU3NCwgMCwgMCwgCi0gICAgOTI2ODAsIDAsIDY4MTU0LCAwLCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDAsIDAsIDk2MDYsIDAsIDAsIDY0NDM5LCAwLCAKLSAgICAwLCA5MjY4NiwgMCwgMCwgMTk0OTY3LCAwLCAwLCAzMzk1LCA5MzYyLCAxMDg3OCwgMCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAKLSAgICAwLCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgMCwgMCwgNDczNSwgMTI3MDE3LCA2MTE5LCAxMjgyMiwgNDI2OTksIDAsIDAsIAotICAgIDc0ODE4LCA1Mzk2LCAwLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgMCwgMTE4ODkyLCAwLCA5NDcyLCAwLCAKLSAgICAxMTkyOSwgMCwgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIDE5NDc0MSwgMCwgMTk0NzQwLCAKLSAgICAxMjg2OTEsIDkyMTg1LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzcsIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIAotICAgIDY4NDE0LCAwLCA0MzYxOSwgNDMzODIsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDEyNzE1OCwgCi0gICAgNjU2MjcsIDAsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgMCwgMCwgMCwgNjUzNjUsIDczODc3LCA2NTYyOCwgCi0gICAgNzgwMTksIDAsIDAsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAxMDM1MiwgNzM5MTcsIDEwMDYxLCAKLSAgICA0MzIzNywgMCwgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgNDMwNzgsIDEyODEyNSwgMTE4ODA5LCAwLCAKLSAgICAxMDg5OSwgNjU0NjksIDAsIDAsIDAsIDI0MTAsIDk5MywgMCwgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAKLSAgICAwLCAxMTkyNTMsIDAsIDcxMTAsIDc0NDYyLCAyMDY2LCAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgMCwgCi0gICAgNDIyNCwgMTMzNiwgNDE1MTgsIDAsIDAsIDAsIDAsIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgCi0gICAgMCwgMCwgMjcyLCA0MjYzLCA4NzkzLCAwLCAwLCA0MTUwMiwgMCwgOTgzLCAxMjU0OSwgMCwgMCwgMTE5MCwgNDEwOSwgCi0gICAgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAwLCAwLCAyMDk5LCA1MTIwLCAyNDA5LCAKLSAgICA3Nzk5LCAwLCA3NDQyNCwgMCwgMCwgNDczMSwgMCwgNjY2MjksIDAsIDAsIDEyNTUsIDQxNDksIDkyNDcsIDAsIDk5MTMsIDAsIAotICAgIDAsIDY0OTE0LCA5MTc3ODcsIDY1MTAxLCAwLCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAKLSAgICAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCAwLCA4MTgwLCAwLCAKLSAgICAwLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCAwLCAwLCAxMjg4NTgsIDAsIDAsIDEwNjk1LCAwLCAKLSAgICA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCAwLCAwLCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgCi0gICAgODM1OSwgMCwgMTI2ODksIDAsIDE5NDU5NCwgMCwgMCwgMCwgNjgxODMsIDAsIDAsIDEyODcsIDU0MzYsIDAsIDAsIDc0MTQyLCAKLSAgICA5MjMyOCwgNzQxNTIsIDExOTA3OCwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzY1MiwgMTA1MzcsIDAsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgMjc5LCA3Mzc0NSwgMCwgMCwgMCwgMTQ4OSwgMCwgMCwgMCwgCi0gICAgMzg5OSwgMTAwNywgNDIxMjQsIDAsIDQyMTIyLCA5MjMzNywgMCwgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAwLCAwLCA4OTU2LCAKLSAgICA0MzA4MywgMTE5ODMwLCA0MjEzOCwgNzg2MTAsIDAsIDEyMTUxLCA3ODYwOCwgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgCi0gICAgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAwLCAwLCAwLCA3ODYyMiwgNDM3MTIsIDI1ODIsIDExNDcwLCAKLSAgICA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCA0MTU1MCwgMCwgNzM4MzcsIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIAotICAgIDI3OTksIDkyNTk0LCA0MTk0NCwgMTIwMjc2LCA5OTMzLCAwLCA2NjUxNSwgNzY3LCA1NTI0LCA3MDI4LCAwLCAwLCAKLSAgICAxMTk4MjcsIDExOTgxNywgMTE5ODI4LCA3ODYzMywgMTA4OTYsIDAsIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIAotICAgIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDI0MzQsIDAsIDAsIDEyMDU3OSwgMCwgNDYzMSwgMCwgMCwgNjQwNywgCi0gICAgMCwgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIDMxOTIsIDAsIDg0MTQsIDAsIDAsIDAsIDAsIDAsIDkxNjQsIDY2NjEyLCAwLCAKLSAgICAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgMCwgCi0gICAgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCAKLSAgICA0MTIwOCwgMCwgNDExNjgsIDgxNzgsIDAsIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCA3ODYzNCwgCi0gICAgMTk0NywgMCwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIDY1MzU5LCAwLCAKLSAgICA4MDE3LCAwLCA2NTA5NiwgNjY3MjAsIDAsIDQzNDc1LCAwLCA0OTA5LCAxMjEyNiwgMTI4NjczLCAxMjA2OTYsIDQ5MDQsIDAsIAorICAgIDAsIDAsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA5ODMyMDMsIDEyOTU1LCAxMDU5NiwgMjg4OCwgMTk0NjQ1LCAwLCAKKyAgICAwLCA5NjU3LCA5MDE5LCAxOTQ3NjYsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgMCwgNjg2NzksIDQzNTUyLCA3NTAxLCAKKyAgICA2MzI4LCAwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAwLCA4OTg2LCAKKyAgICAxMjY1NDIsIDEwNjMyLCAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDAsIDEyNjY0NywgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCAKKyAgICA5Mjg4LCA2NDgyMiwgMjg5MiwgMCwgNDMzOTQsIDU1NSwgMCwgMCwgNjY2NDYsIDAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCAKKyAgICA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIDAsIDE3ODQsIDEzNjEsIAorICAgIDE5NTA0NywgMCwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgMTMxNTgsIDkyMTY2LCA3MjExLCAwLCA5MzcxLCA3Mzk3MywgCisgICAgOTE3NTUzLCA2ODI4LCAxNjI1LCA5MjMwMiwgMCwgMTM0MiwgNjg0NDAsIDY0MTcxLCAxMjY3MDQsIDEwOTAzLCA5ODM0ODYsIAorICAgIDAsIDAsIDAsIDAsIDQ0ODIsIDQxNjA2LCAwLCAxMjg1NjksIDk4MzExMiwgMCwgNjQzODEsIDAsIDAsIDE5NTA5MCwgCisgICAgNDIyNDUsIDEyNjQ2NywgNDE5NzIsIDAsIDQ0NCwgMCwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAwLCAKKyAgICAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMCwgMTE5NTk5LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgMTk0OTcwLCAKKyAgICAwLCAwLCA0MDk5MCwgNDM3NjUsIDAsIDM0OTIsIDAsIDEyNzk0MiwgMCwgMCwgMCwgMTI4MzgsIDk4Mzk2OSwgMTk5NDgsIDAsIAorICAgIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCAwLCAxMTkwNTksIDEyMDM2LCA0MTMwOSwgMCwgMCwgODE1MiwgMCwgNDE1NTAsIAorICAgIDEyMjI3LCA5ODM2MTMsIDAsIDEyODI4LCAxMjc1MTEsIDAsIDAsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDExOTU3NCwgMCwgMCwgCisgICAgOTI2ODAsIDk4Mzc4MCwgNjgxNTQsIDAsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCAwLCAKKyAgICA2NDQzOSwgMCwgMCwgOTI2ODYsIDAsIDAsIDE5NDk2NywgMCwgMCwgMzM5NSwgOTM2MiwgMTA4NzgsIDAsIDAsIDc4MzYyLCAKKyAgICA2NDgzMCwgMCwgMTI2NTU3LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgMCwgMCwgNDczNSwgMTI3MDE3LCA2MTE5LCAKKyAgICAxMjgyMiwgNDI2OTksIDAsIDk4MzgxNSwgNzQ4MTgsIDE0MjMsIDAsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAKKyAgICAwLCAxMTg4OTIsIDAsIDk0NzIsIDAsIDExOTI5LCAwLCA3MTcwLCA5NTk2LCA2MTMwLCAxMjg4MjYsIDQzNjI5LCAxMTU3OSwgCisgICAgNzg3MTMsIDAsIDE5NDc0MCwgMTI4NjkxLCA5MjE4NSwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM3LCAKKyAgICA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCA2ODQxNCwgMCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIAorICAgIDExNzc2LCA3NTU4LCAxMjcxNTgsIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDAsIDAsIDAsIAorICAgIDY1MzY1LCA3Mzg3NywgNjU2MjgsIDc4MDE5LCAxMjAzMTksIDAsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCAKKyAgICA1NDAzLCAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMCwgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgCisgICAgNDMwNzgsIDEyODEyNSwgMTE4ODA5LCAwLCAxMDg5OSwgNjU0NjksIDkyMzYyLCAwLCAwLCAyNDEwLCA5OTMsIDAsIAorICAgIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgMCwgMTE5MjUzLCAwLCA3MTEwLCA3NDQ2MiwgMjA2NiwgCisgICAgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDAsIDQyMjQsIDEzMzYsIDQxNTE4LCAwLCAwLCAwLCAwLCAKKyAgICA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDAsIDAsIDI3MiwgNDI2MywgODc5MywgMCwgMCwgCisgICAgNDE1MDIsIDAsIDk4MywgMTI1NDksIDAsIDAsIDExOTAsIDQxMDksIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCAKKyAgICA5NTQ0LCA0MzQ4MSwgMCwgMTk0ODA2LCA3MDAyNywgMjA5OSwgNTEyMCwgMjQwOSwgNzc5OSwgMCwgNzQ0MjQsIDAsIDAsIAorICAgIDQ3MzEsIDAsIDY2NjI5LCAwLCAwLCAxMjU1LCA0MTQ5LCA5MjQ3LCAwLCA5OTEzLCAwLCAwLCA2NDkxNCwgOTE3Nzg3LCAKKyAgICA2NTEwMSwgMCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgMTA4NDIsIDQxMzU0LCA0MjEyMywgCisgICAgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgMCwgODE4MCwgMCwgMCwgOTk3MiwgNzM4NjUsIDQ1MTksIAorICAgIDYxMTQsIDEwODk4LCA0MzA3MiwgMCwgMCwgOTM5NjAsIDk4MzMxNCwgMTI2NTgxLCAxMDY5NSwgMCwgNzU0MCwgMCwgODgxLCAKKyAgICA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgMCwgMCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgNjQzMjEsIDgzNTksIDAsIDEyNjg5LCAKKyAgICAwLCAxOTQ1OTQsIDAsIDk4MzMwNCwgOTgzODcyLCA2ODE4MywgMCwgOTgzMzA2LCAxMjg3LCA1NDM2LCAwLCA5ODMzMDksIAorICAgIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDExOTA3OCwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgOTgzMzE1LCAwLCAKKyAgICAxMjcyNDIsIDAsIDAsIDM2NTIsIDEwNTM3LCAwLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDAsIDAsIAorICAgIDE0ODksIDAsIDAsIDAsIDM4OTksIDEwMDcsIDQyMTI0LCA5ODM1NTcsIDQyMTIyLCA5MjMzNywgOTIzNjcsIDAsIDExOTg1LCAKKyAgICAxMzQ1LCA3ODYwMCwgMCwgMCwgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDAsIDEyMTUxLCA3ODYwOCwgCisgICAgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAwLCA5ODM3NTAsIDAsIAorICAgIDc4NjIyLCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDIyOTcsIDAsIDczODM3LCAKKyAgICAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDEyMDI3NiwgOTkzMywgMCwgNjY1MTUsIAorICAgIDc2NywgNTUyNCwgNzAyOCwgMCwgMCwgMTE5ODI3LCAxMTk4MTcsIDExOTgyOCwgNzg2MzMsIDEwODk2LCAwLCAxNzk5LCAKKyAgICAxMjA0OTcsIDY5NzEsIDc0MzM2LCAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCA5NDAxOCwgMCwgCisgICAgMTIwNTc5LCAwLCA0NjMxLCAwLCAwLCA2NDA3LCAwLCA2MzM4LCA0MzIxNCwgMCwgNzU3MCwgMCwgMzE5MiwgMCwgODQxNCwgCisgICAgMCwgOTM5ODMsIDAsIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgCisgICAgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCAKKyAgICA3ODYyNywgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgMTA5NDQsIDQxMjA4LCA5ODM3MDQsIDQxMTY4LCAKKyAgICA4MTc4LCAwLCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCA3ODYzNiwgNjgwNCwgNzg2MzQsIDE5NDcsIDAsIDAsIAorICAgIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMCwgODAxNywgMTE5ODMxLCAKKyAgICA2NTA5NiwgNjY3MjAsIDAsIDQzNDc1LCAwLCA0OTA5LCAxMjEyNiwgMTI4NjczLCAxMjA2OTYsIDQ5MDQsIDk4MzMyNSwgCiAgICAgNjk2NTAsIDEzNjUsIDkyNTMsIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMCwgMCwgMCwgMCwgMTE5NTg3LCA2NDQxNSwgMCwgMCwgCi0gICAgNTM5OCwgMCwgMTI3Mzg2LCAwLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIDAsIDEyNzYzLCAwLCAzNjI5LCAwLCAKLSAgICAxMzAwNSwgMCwgMzYyOCwgMCwgMCwgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgCi0gICAgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAwLCA2NDY2NSwgNDMwODYsIDkxMTQsIDAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAKLSAgICAzODUyLCAyODQ3LCAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCAKLSAgICA0MzIyMiwgMTI2NDYsIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCAwLCA2MDE4LCA5MjI5MCwgMCwgMTIyNzYsIDAsIAotICAgIDY4MzcyLCAwLCA5MjI1OSwgMTE5MjQ0LCAwLCAwLCAxMDQ2NywgMCwgMjQ0MywgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIAotICAgIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgCi0gICAgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgCi0gICAgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAKLSAgICAxOTY4LCAwLCAxOTUwMjMsIDEzMzcsIDY0OTY3LCAxNjI5LCAwLCA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDAsIAotICAgIDQyMzE0LCA0MzM4OCwgMCwgNzQ0MDMsIDYxMjAsIDQ3OCwgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCAKLSAgICA0MjI4NCwgMTI4NTA3LCA0Mjc2LCAxMjA2LCAzNjE5LCA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAKLSAgICAwLCA0OTAsIDEwNzE1LCA3NTc4LCA2ODM4NCwgMCwgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNzQzMTQsIDQyNDM1LCAKLSAgICA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgNDIzOTcsIDMzNCwgMCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNzc5ODcsIAotICAgIDY5NjY2LCA0NDQyLCAxMDM2NCwgMCwgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCAwLCAxMjcyNzUsIAotICAgIDczOTgzLCAyOTE1LCAxMTUwMiwgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3ODMyMCwgMCwgNjk3NSwgMCwgNTQxNSwgCi0gICAgMTIxNzYsIDAsIDc0MTkzLCAzNDYyLCA2NTIxNSwgNDI2MjksIDc4NjkxLCA3Mzc4NCwgMCwgMCwgOTc1OSwgMCwgNzgzMjQsIAotICAgIDEyNzI1NCwgODExNCwgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIDQyNDk1LCAxMTg5NTYsIDAsIDQwNTEsIAotICAgIDEwNDYwLCA0MzM2NCwgMTE4OTE3LCAxMzU2LCAxMjE2MSwgNDI3MTMsIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCAKLSAgICA0MzE1MiwgNDI0ODksIDQyMTEyLCAwLCAxODc1LCAxMDgwOCwgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgCi0gICAgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDAsIDU1NzUsIDk2NzUsIDAsIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgMCwgCi0gICAgMCwgNDMyMzYsIDMzODIsIDQyNDQ5LCA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDAsIDExMjY5LCAxMDE1MSwgNzM3NTksIAotICAgIDQzMTAwLCA3NDQ0OSwgNjU1MDgsIDAsIDAsIDAsIDg5MzUsIDkxNzk4NSwgMCwgMCwgMCwgNjE2LCA3NDc1MywgNjUxNzgsIAotICAgIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDAsIDAsIDAsIDYwNDgsIDc0NDYwLCA0MjExMCwgNzM5NjUsIDEwODcwLCA4NTU3LCAKLSAgICAxMTA1NCwgNjg2NjQsIDExOTA0OSwgOTY4MSwgNDQ3NSwgMCwgNDExNDIsIDIxMDAsIDAsIDEyMDczMSwgNjAzNSwgMCwgCi0gICAgNzY1MSwgMTAyOTYsIDY0NDQzLCAwLCAwLCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAwLCAxMDM5MiwgCi0gICAgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDExOTEzMSwgNDEwMDAsIDAsIDExOTIzOSwgCi0gICAgNjQ4NywgMzM4NiwgMCwgMTAzNDQsIDAsIDY1Mjk5LCA1Mzk0LCA0MzI0NiwgNzgyNDMsIDEwMjIwLCA2NjUwNSwgNDEyMDAsIAotICAgIDEyODU4MywgNDQyNSwgMCwgMCwgMCwgNDMwNzQsIDczNzk5LCAwLCA3ODE0NywgMCwgMTIxNzMsIDc4NTQ1LCAwLCAwLCAKLSAgICA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMCwgMTU4NywgMCwgMTI3MzcyLCA2NDQ3NSwgMTI4MDk4LCAKLSAgICAxMzY5LCAwLCA5OTU5LCA3OTI3LCAwLCA0NTYwLCAwLCAwLCA5MjI3NywgMCwgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgCi0gICAgNDUxNCwgNjY0MzQsIDAsIDgxOTQsIDY1NDYyLCAxMDYyNiwgMTA5NjUsIDAsIDg4OTMsIDAsIDEyNTQyLCAwLCA2NTM0MSwgCi0gICAgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDAsIDAsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDAsIDY1Mjc5LCAKLSAgICAxMjcxMDIsIDY4MjA3LCAxMjcxMDAsIDY1NjA1LCA2MDQwLCAxMjcwOTcsIDEwMDcxLCAwLCA5MzM2LCAxMjg4MjQsIDAsIAotICAgIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgMCwgNjUxODgsIDc4MjAsIDQzMDE4LCAwLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgCi0gICAgMTA4ODQsIDc3OTgyLCAwLCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIAotICAgIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgMCwgMCwgCi0gICAgNjMyMywgMTk0Njg0LCA4MjI0LCAwLCA4OTM4LCA2MDQzLCAxMjczOCwgMCwgMCwgNTMyMSwgMCwgMTk0Nzk4LCAwLCAyNTg5LCAKLSAgICA3NDMzMiwgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCAxMjAyOTYsIDExOTA1LCAwLCAwLCAxMjg1MTYsIAotICAgIDEyODE2MywgNzQ1MTMsIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAwLCAxNTAzLCAwLCAwLCAwLCA1NzMxLCAKLSAgICAxMzgxLCAyMzg3LCAwLCAwLCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCA5NjY4LCAKLSAgICA5NzY2LCAwLCA1NzI5LCA5MTc4MzMsIDc0NDEwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAyODg3LCAwLCAKLSAgICAzNTI2LCA2Mjk4LCAwLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzc4OTUsIAorICAgIDUzOTgsIDAsIDEyNzM4NiwgOTM5NTMsIDAsIDAsIDExOTAxNSwgMCwgMCwgOTQ3NiwgMCwgOTgzNzY4LCAxMjc2MywgCisgICAgMTI2NjAzLCAzNjI5LCAwLCAxMzAwNSwgMCwgMzYyOCwgMCwgMCwgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCAKKyAgICA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAwLCA2NDY2NSwgNDMwODYsIDkxMTQsIDAsIDQyNTgzLCAKKyAgICA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgCisgICAgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCAwLCA2MDE4LCAKKyAgICA5MjI5MCwgMCwgMTIyNzYsIDAsIDY4MzcyLCAwLCA5MjI1OSwgMTE5MjQ0LCAwLCA5ODMyMjQsIDEwNDY3LCAwLCAyNDQzLCAKKyAgICAxMDkxOCwgNzgyMTcsIDExOTgyNSwgMTAwMSwgOTI0MSwgMTkyNywgMCwgMCwgNzM5ODcsIDEyNzg4NSwgMCwgMCwgCisgICAgMTE4ODI4LCAxMjAyNzEsIDY1Njc4LCAxMjg2NywgMCwgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgCisgICAgNTE4LCA2NTg1NywgMCwgMTI4Njc0LCAxMzIwNCwgNDM4NywgODU3LCAwLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKKyAgICAxMjA1OTIsIDAsIDAsIDAsIDAsIDUxMzYsIDE5NjgsIDk4MzA0MSwgMTI2NjI3LCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgCisgICAgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgMCwgNzQ0MDMsIDYxMjAsIDQ3OCwgCisgICAgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgMTI4NTA3LCA0Mjc2LCAxMjA2LCAzNjE5LCAKKyAgICA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAwLCA0OTAsIDEwNzE1LCA3NTc4LCA2ODM4NCwgMCwgCisgICAgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNzQzMTQsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgCisgICAgNDIzOTcsIDMzNCwgMCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNzc5ODcsIDY5NjY2LCA0NDQyLCAxMDM2NCwgMCwgNzc4LCAKKyAgICA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgMTI3Mjc1LCA3Mzk4MywgMjkxNSwgMTE1MDIsIAorICAgIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzgzMjAsIDAsIDY5NzUsIDAsIDU0MTUsIDEyMTc2LCAwLCA3NDE5MywgCisgICAgMzQ2MiwgNjUyMTUsIDQyNjI5LCA3ODY5MSwgNzM3ODQsIDAsIDAsIDk3NTksIDAsIDcwMDU3LCAxMjcyNTQsIDgxMTQsIAorICAgIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgMTE4OTU2LCAwLCA0MDUxLCAxMDQ2MCwgNDMzNjQsIAorICAgIDExODkxNywgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCAKKyAgICA0MjExMiwgMTI3OTc4LCAxODc1LCAxMDgwOCwgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIAorICAgIDUyODksIDEzMTQ0LCAxMjg2NTgsIDAsIDU1NzUsIDk2NzUsIDAsIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjY5LCAKKyAgICAxMTk4MzAsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAwLCAxMTI2OSwgMTAxNTEsIAorICAgIDczNzU5LCA0MzEwMCwgNjk4ODgsIDY1NTA4LCAwLCAwLCAwLCA4OTM1LCA5MTc5ODUsIDAsIDAsIDAsIDYxNiwgNzQ3NTMsIAorICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCAwLCAxMjY1NTEsIDAsIDYwNDgsIDc0NDYwLCA0MjExMCwgNzM5NjUsIAorICAgIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDExOTA0OSwgOTY4MSwgNDQ3NSwgMCwgNDExNDIsIDIxMDAsIDAsIDEyMDczMSwgCisgICAgNjAzNSwgMCwgNzY1MSwgMTAyOTYsIDY0NDQzLCAwLCA5ODMyODcsIDkxNzk4NywgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIAorICAgIDAsIDEwMzkyLCAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgMCwgOTgwMCwgODk3OSwgMCwgMTMzMDcsIDQxMDAwLCAwLCAKKyAgICAxMTkyMzksIDY0ODcsIDMzODYsIDAsIDEwMzQ0LCAwLCA2NTI5OSwgNTM5NCwgNDMyNDYsIDc4MjQzLCAxMDIyMCwgNjY1MDUsIAorICAgIDQxMjAwLCAxMjg1ODMsIDQ0MjUsIDAsIDAsIDAsIDQzMDc0LCA3Mzc5OSwgOTgzMjAwLCA3ODE0NywgMCwgMTIxNzMsIAorICAgIDc4NTQ1LCAwLCAxMjcwMTEsIDY1MzM4LCAwLCAwLCAxMTk1ODIsIDQ0NzQsIDAsIDQzMDkzLCAxMjg2NDQsIDE1ODcsIDAsIAorICAgIDEyNzM3MiwgNjQ0NzUsIDEyODA5OCwgMTM2OSwgOTgzNjYzLCA5OTU5LCA3OTI3LCAwLCA0NTYwLCAwLCAwLCA5MjI3NywgMCwgCisgICAgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAKKyAgICAwLCA4ODkzLCA5ODMyOTMsIDEyNTQyLCAwLCA2NTM0MSwgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDAsIDAsIAorICAgIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEyNzEwMiwgNjgyMDcsIDEyNzEwMCwgNzA5OSwgCisgICAgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgNDM3NTAsIDAsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIAorICAgIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc3OTgyLCAwLCA1MTI3LCAKKyAgICAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCAKKyAgICA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgMCwgMCwgNjMyMywgMTk0Njg0LCA4MjI0LCAwLCAKKyAgICA4OTM4LCA2MDQzLCAxMjczOCwgMCwgOTgzMDc2LCA1MzIxLCAwLCAxOTQ3OTgsIDAsIDI1ODksIDc0MzMyLCAxNjg5LCAKKyAgICA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDEyMDI5NiwgMTE5MDUsIDAsIDAsIDEyODUxNiwgMTI4MTYzLCA3NDUxMywgCisgICAgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDAsIDE1MDMsIDAsIDAsIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAKKyAgICAwLCAwLCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCAKKyAgICA1NzI5LCA5MTc4MzMsIDc0NDEwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAyODg3LCAwLCAzNTI2LCAKKyAgICA2Mjk4LCAwLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzc4OTUsIAogICAgIDQzMTU1LCAwLCAxMTk4NDksIDMxNDYsIDEwOTU5LCA5NDgzLCAwLCA3Nzg5MywgMTA5ODEsIDE2NiwgOTE3ODQxLCA4NjM1LCAKLSAgICAwLCAxMDYyMywgNDA4LCAxMTkwNTgsIDEyNzUwNywgMTMyOTgsIDAsIDc0MjYsIDQxNjQxLCAxMjcxNywgMCwgNzYwNywgCi0gICAgMTA2MzksIDY2NzEzLCAwLCAwLCA0MTY0MywgNzQxMzQsIDAsIDg3MTMsIDQxNjQwLCAxMDIyMSwgNDE2NDUsIDY2NzEyLCAKLSAgICA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDAsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA3NDU3MiwgMCwgNDIxMzYsIDAsIDAsIDAsIDAsIDMyNDcsIDExOTg1NCwgCi0gICAgNjUwMTcsIDAsIDY4NDI4LCA2NjY2OCwgMCwgMCwgMTA5ODMsIDAsIDAsIDAsIDQxNTY3LCAwLCAwLCAwLCAxOTQ2MjQsIDAsIAotICAgIDAsIDAsIDgyODUsIDAsIDQ1MDksIDAsIDY2NDcxLCAxMjIxNiwgMCwgNDA5ODgsIDkyNTkyLCAwLCA0MTcyNywgMCwgCi0gICAgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAKLSAgICAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDkxNzU3MSwgNDI0OSwgMCwgOTE3NTk0LCAxMTcwNywgODIyMiwgMCwgNzkzOSwgCi0gICAgOTI0NTQsIDkyNDYwLCAxMjc4MDEsIDkxNzU5MiwgMTI4MzU5LCA4NTM0LCAxMjcxNTQsIDQwOTgzLCAwLCAwLCAwLCA3MjAxLCAKLSAgICAxMjU2MSwgMCwgNDIzNzEsIDEyNTU4LCAwLCA5MTc1NDksIDEwMDUyLCA0MDk4MiwgMCwgMCwgMTQ4OCwgMCwgMCwgMCwgCi0gICAgOTE3NTU5LCAwLCAwLCAxNTYzLCAxMjgwMzQsIDk2MTksIDAsIDAsIDAsIDEyNzg3MiwgMCwgNTgwMywgNzc5NywgNjA3MCwgCi0gICAgMTAwMDYsIDAsIDI5MjIsIDYwODIsIDAsIDY1MDA5LCAwLCAxMjU2NywgMTI4NzAzLCAwLCA0MTQxMiwgMCwgMCwgMzYwNywgCi0gICAgOTIwMCwgMTAwNDYsIDk2MTIsIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDMwODUsIDYwNTcsIDUwOCwgMTI4NTg1LCAxMjgwMTUsIDEyMDI2NSwgMCwgOTI0MDUsIDAsIDAsIDYzOCwgNjA4MywgCi0gICAgMTE5MDcyLCAwLCAwLCAyMzA1LCA3ODM0OCwgMCwgMCwgNjA1NiwgNjY1OSwgMCwgMCwgNjA4NSwgMCwgMCwgMzkxNSwgCi0gICAgNDE2MzQsIDAsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIDAsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgOTI2OTAsIDMyNDksIAotICAgIDE3NjgsIDAsIDEyMzI4LCA1MDEsIDEyNzA3NCwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCAxMTkzNTAsIAotICAgIDY1MDUsIDc0MDEwLCAwLCAxMzA2NCwgNTUyNjcsIDEyMDgxMCwgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDczNzY0LCAwLCAKLSAgICA5MjM3NiwgMTI3NDUsIDk2NzgsIDAsIDEyMDU4NywgOTg2OSwgMTI4ODE1LCAxNzcxLCAwLCA4OTM2LCAwLCAwLCA0MjA4LCAKLSAgICA3ODM0MSwgMTE5MTE1LCA3ODM0MiwgMCwgMCwgNzQxMDEsIDAsIDExNzYyLCAwLCA5MjQyMiwgNzc5OTcsIDEyODc4OCwgCi0gICAgNjY0NzUsIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgCi0gICAgNTAyNiwgMCwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAKLSAgICAxMTkzNjEsIDAsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgNjg0MjQsIDQxMDcwLCA3NzkwMywgMCwgMzQ0MCwgCi0gICAgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIDE3MTYsIDAsIDEwNjAwLCA5MTc4NjcsIDYyMCwgNDEwMDEsIAotICAgIDYwMjgsIDAsIDQyODkyLCAwLCA3NDgyMiwgNTAyNCwgMTIwODI5LCA0MTAwMywgMCwgNTAyNSwgMTI4MjY5LCAwLCAwLCAKLSAgICAxMTkzMjgsIDAsIDY1NTU3LCAwLCA3NDU0MSwgMCwgMTE1OTksIDEyODIwOSwgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgCi0gICAgMTE1OTcsIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzQxOTUsIDExNTY5LCA2NTI3NSwgODkwNiwgMTI3MDk2LCA1NzU1LCAKLSAgICAyNjM2LCAwLCAxMDgxNSwgMTE2MTksIDc4NzE3LCA0MTU0MCwgNzgxNSwgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAKLSAgICAxMTYwNCwgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgMCwgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDAsIAotICAgIDEyODIxNywgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIAotICAgIDQzNjA2LCAwLCA2ODM5NywgNjYzNzAsIDc0NTA2LCA0MjMzNSwgMCwgMCwgMCwgNzUzOCwgNTMxNSwgMTIwNjQ0LCA0MjQ5MSwgCi0gICAgMCwgNDIwNjEsIDEyODA4OCwgNDU3NiwgMCwgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCA0MDM5LCA2NDQ3MiwgNDIzMzgsIAotICAgIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgNzgyMDksIDkxNzgyMCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAKLSAgICAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIDQxMTYwLCAwLCAzNjE4LCA3ODMzOCwgCi0gICAgMCwgNDMzMDAsIDUxNTYsIDkyNjI5LCAwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIAotICAgIDAsIDQxNjYyLCAwLCAwLCAwLCAwLCAwLCA0NTc4LCA2NDUxMywgNDE2NjQsIDAsIDQyNTc4LCAxMjg3OTQsIDQxNjYxLCAKLSAgICA3ODcxNSwgNDMyNjcsIDkzNTYsIDAsIDAsIDAsIDEyODYsIDEwMTY2LCAwLCAwLCA2NDcwNywgMCwgNDI0NzYsIDc3MzAsIDAsIAotICAgIDEyODUyMiwgNDI0ODMsIDAsIDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCAwLCA2NjQxLCA1MjUsIDQxNjI3LCAKLSAgICA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIAotICAgIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAwLCAxMjAyMzQsIDAsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIDg2NzksIDQxOTI0LCAKLSAgICAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIDAsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgCi0gICAgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDczODQyLCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAwLCAKLSAgICA3Nzk0OCwgMzYzLCAxMTAxNSwgNzc5NDcsIDc3OTQ0LCA2NDI5NiwgMTI3MDkwLCA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgCi0gICAgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgNjQ0MzQsIDkyNTIwLCAxMjcwOTUsIDk0OTIsIAotICAgIDExNzgyLCA2NDM4MiwgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgNjMwLCAxMjcwOTQsIDAsIDEyMDc3NCwgCi0gICAgOTI0NjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyODY2NCwgMzEzLCA5MTc1NjMsIDQxODgxLCAwLCAKLSAgICA0MjMxMSwgNzQ0NSwgMCwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIAotICAgIDkzOTksIDk0MjIsIDAsIDY2NDk1LCAwLCAwLCAxMjcyMzksIDQxNzE4LCAxMDcwNywgMTYwMywgMCwgMTE5MDAzLCAwLCAKLSAgICA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCAwLCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAxMTYwMCwgNzc5NjEsIAotICAgIDI3OTcsIDczODIxLCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAxMjM1MSwgNDIzOTUsIAotICAgIDAsIDExNjA3LCAwLCA0MjI4MiwgNzc5NzEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgCi0gICAgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAzNjIsIDkyNDM5LCAwLCA4MDM3LCAKLSAgICA0Mzc3NywgMTE1MzUsIDAsIDc0ODQ1LCA1MTg1LCA3MTY1LCA1NTIxLCAxMDMzNCwgMjA5MywgNzc5ODMsIDEwMzAyLCAKLSAgICAxMjgxMTIsIDEwMTA0LCAxMDI3LCA1MTgxLCAwLCAwLCAxMDUyMywgMTQ0NiwgNDIzMjAsIDQxNjQ2LCA5OTEsIDUxODksIAotICAgIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCA3Nzk3OSwgMzQwNSwgMCwgMTk0NjQ0LCA1NTIzLCAwLCA0MjYyMCwgCi0gICAgOTI0NDcsIDAsIDk1NDksIDAsIDEwNTQ5LCA1NTI4MiwgOTY2MSwgNDM2ODIsIDAsIDc3OTEwLCAxMjAwMjYsIDc4NzA4LCAwLCAKLSAgICA3NzkxMSwgMCwgNDE5OTEsIDAsIDAsIDc2MzAsIDk4NDYsIDc2ODQsIDEwMzUwLCAwLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIAotICAgIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA2NTY2NywgMTI3MDM3LCAxMjMzMCwgCi0gICAgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIDAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNzc5ODQsIDc0NDQzLCAwLCAKLSAgICAxMDIwOSwgODMxMywgNDE5NSwgNzQ0MzUsIDEzMTYsIDY2NjkwLCAxMjAwMzIsIDYzMzIsIDY0ODk0LCAwLCA2NTg3MSwgCi0gICAgNzgwNjAsIDE3MzYsIDAsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzg4NDEsIDY5MywgCi0gICAgOTEzMCwgMzE0LCA2NDE0OSwgNDI0MjAsIDExOTQ5LCAwLCAxMjAxNTIsIDExMDI2LCAwLCA1MzMyLCA2OTQwLCA2NDE1NCwgCi0gICAgMTI2MzUsIDEyNzAwNywgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDEyMDc2MywgNzg4NDAsIDAsIDEyODI0LCAwLCAKLSAgICA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgMzc1NywgMCwgCi0gICAgMCwgMCwgNjU4NjksIDczNzYwLCAyNTY5LCAwLCAyMzI2LCA2NTc0MCwgMjU2NSwgNDI0NTksIDc1OTYsIDc5MjEsIDAsIAotICAgIDc0MDk1LCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgMCwgNDA0NCwgOTI2NDYsIDAsIDEyMjMzLCAwLCAxMDIzLCAKLSAgICA0NzQsIDAsIDExOTgxOCwgMCwgMCwgNDI0ODcsIDY1NTU2LCAwLCAwLCA0MjI5NSwgMCwgMCwgMCwgOTI1MTgsIDk4MzUsIAotICAgIDY2NDk5LCAwLCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgMCwgMTg1OCwgMCwgMCwgNTUyNTEsIDEwMTE4LCAzMTMzLCAKLSAgICAxMjgwMDgsIDczNzk1LCAwLCA5NjEwLCA4MDY4LCA4MTk3LCAwLCA2OTksIDAsIDQxNjY1LCA1ODY4LCAwLCA5MjY5NSwgCi0gICAgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgNjU1ODMsIDY1ODAyLCAwLCAKLSAgICA2NDU5NywgNDM0NDQsIDExOTE4NCwgOTIxOTcsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIDE5MzcsIDAsIDAsIDQxODM1LCAKLSAgICA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDAsIDAsIDExMDE3LCAwLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIAotICAgIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCAwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAKLSAgICAxOTQxLCAzOTAwLCAwLCAxNzEzLCA3Nzk2OSwgMCwgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgCi0gICAgNjQxMDUsIDEyODA4MCwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDAsIDY0MTAzLCA5NjksIDAsIDkzNTIsIAotICAgIDAsIDYxNjUsIDY0MTAwLCAwLCA2NjMyLCA3Mzg2MSwgNDI0MDIsIDc0MzI3LCA3ODA2LCAwLCA4OTE0LCAwLCAwLCAzMTgzLCAKLSAgICAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIDY3ODQ5LCA1NzQ2LCA3Mzc0OSwgMCwgNjQ0MTYsIAotICAgIDQyNDIyLCAwLCAwLCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxOTQ3MTksIDAsIDQyMzI4LCAxMDc2NywgMCwgODExNSwgMCwgCi0gICAgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDAsIDAsIDY1ODQ4LCAwLCAwLCAwLCAwLCAxMjY5ODcsIDQ0ODYsIDAsIDAsIAotICAgIDAsIDEwOTI1LCAwLCAwLCAwLCAwLCA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgMCwgMTAzMDUsIDQyNDYxLCAwLCAKLSAgICA0MjM0OSwgODgzMiwgNzgwNTEsIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgCi0gICAgOTE3ODU3LCA3Nzk0LCAwLCA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDAsIDY5NjU4LCAKLSAgICAwLCA2NTQwMiwgMTE5NTgxLCAwLCAwLCA2NDkzMywgMCwgNDE5NjAsIDY2OTksIDAsIDAsIDEyODM1NCwgNjgyMywgNDIzOTEsIAotICAgIDE1ODgsIDY1NDAwLCA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDAsIDkxNzkzOSwgMTI3NzQ0LCA2MTE1LCAKLSAgICAyMDc4LCA0MTY1NCwgNDI0ODAsIDAsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCAwLCAwLCAwLCA2NDQsIDY1NTAwLCAKLSAgICA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDc0NDU3LCAKLSAgICAwLCAwLCA0MTU1NCwgMCwgODIyMCwgOTE3OTQzLCA0MTU1NywgMCwgMCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgCi0gICAgNzM4NTgsIDQxNTU1LCA5NTE0LCA2NDgxOCwgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDAsIDc0Mzc3LCAKLSAgICAxMTAyOSwgNjY2NTEsIDAsIDAsIDExODkzMCwgNjQ1MjcsIDAsIDc4NzcsIDczODAzLCAwLCAxMjczNDgsIDEyMDA5NiwgCi0gICAgNzQ2MDIsIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgCi0gICAgMCwgNzg2MzEsIDk1MDIsIDY1NDI3LCAwLCA2NTQyNCwgMTI2MDcsIDAsIDk3MzQsIDY1NDI1LCAwLCAwLCAxMjczNTcsIAotICAgIDc4ODM1LCA5MjQxMCwgMTAxMTIsIDEwODI3LCAwLCA5ODY2LCA3NDUyNywgNjY2NzUsIDAsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgCi0gICAgMTA0NzcsIDAsIDg2MzYsIDAsIDgzMTUsIDY1NDQ0LCAwLCAwLCA3NDU5NSwgNjE1MiwgMCwgMCwgNjYyOSwgMTI4MjUxLCAKKyAgICA5ODM2MDYsIDEwNjIzLCA0MDgsIDExOTA1OCwgMTI3NTA3LCAxMzI5OCwgMCwgNzQyNiwgNDE2NDEsIDEyNzE3LCAwLCAKKyAgICA3NjA3LCAxMDYzOSwgNDMzOTYsIDAsIDAsIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIAorICAgIDQxNjQ1LCA2NjcxMiwgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA5Mzk5NCwgNzc5MDEsIDM0NzIsIDg2OTcsIAorICAgIDAsIDAsIDk4MzgwNiwgMCwgMCwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAwLCAwLCAKKyAgICAwLCAwLCAzMjQ3LCAxMTk4NTQsIDY1MDE3LCA5ODM5NDQsIDY4NDI4LCA2NjY2OCwgMCwgMCwgMTA5ODMsIDAsIDAsIDAsIAorICAgIDQxNTY3LCAwLCAwLCAwLCAxOTQ2MjQsIDExOTg1MywgMCwgMCwgODI4NSwgMCwgNDUwOSwgMCwgNjY0NzEsIDEyMjE2LCAwLCAKKyAgICA0MDk4OCwgOTI1OTIsIDc0ODA5LCA0MTcyNywgMCwgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgCisgICAgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCAwLCAKKyAgICA5MTc1OTQsIDExNzA3LCA4MjIyLCAwLCA3OTM5LCA5MjQ1NCwgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIAorICAgIDEyNzE1NCwgNDA5ODMsIDAsIDk4MzIzNCwgMCwgNzIwMSwgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAKKyAgICAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKKyAgICA5ODM5MzEsIDAsIDAsIDEyNzg3MiwgNzEzNjMsIDU4MDMsIDc3OTcsIDYwNzAsIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCAKKyAgICA2NTAwOSwgOTgzOTMzLCAxMjU2NywgMTI4NzAzLCAwLCA0MTQxMiwgMCwgMCwgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIAorICAgIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgMCwgMCwgMCwgMCwgMCwgNDMwODUsIDYwNTcsIDUwOCwgCisgICAgOTM5NjgsIDEyODAxNSwgNjc5NjgsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIDExOTA3MiwgMCwgMCwgMjMwNSwgCisgICAgNzgzNDgsIDY4MDk2LCAwLCA2MDU2LCA2NjU5LCA2Nzk2OSwgMCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCAKKyAgICA2MzkxMiwgMTE5NDEsIDAsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAKKyAgICAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCAxMTkzNTAsIDY1MDUsIAorICAgIDc0MDEwLCAwLCAxMzA2NCwgNTUyNjcsIDEyMDgxMCwgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDczNzY0LCAwLCA5MjM3NiwgCisgICAgMTI3NDUsIDk2NzgsIDAsIDEyMDU4NywgOTg2OSwgMTI4ODE1LCAxNzcxLCAwLCA4OTM2LCAwLCAwLCA0MjA4LCA3ODM0MSwgCisgICAgNzg1NjcsIDc4MzQyLCAwLCA5ODM0NDgsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCA2ODAxMCwgNjY0NzUsIAorICAgIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgNTAyNiwgCisgICAgOTgzMjQ3LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCA3NDc5MCwgNzgxMzgsIAorICAgIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDAsIAorICAgIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCA5ODM2NzAsIDEwNjAwLCA5MTc4NjcsIAorICAgIDYyMCwgNDEwMDEsIDYwMjgsIDAsIDQyODkyLCAwLCA3NDgyMiwgNTAyNCwgMTIwODI5LCA0MTAwMywgMCwgNTAyNSwgCisgICAgNjk4OTIsIDk4MzIwNywgMCwgMTE4ODg1LCAwLCA2NTU1NywgMCwgNzQ1NDEsIDk4MzU4NywgMTE1OTksIDEyODIwOSwgCisgICAgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzQxOTUsIDExNTY5LCAKKyAgICA2NTI3NSwgODkwNiwgMTI3MDk2LCA1NzU1LCAyNjM2LCAwLCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAKKyAgICAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCAKKyAgICA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCAwLCAxMjY0ODIsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgCisgICAgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCA0MzYwNiwgMCwgNjgzOTcsIDY2MzcwLCA3NDUwNiwgNDIzMzUsIAorICAgIDk4MzE4OCwgMCwgMCwgNzUzOCwgNTMxNSwgMTIwNjQ0LCA0MjQ5MSwgMCwgNDIwNjEsIDEyODA4OCwgNDU3NiwgMCwgCisgICAgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCA0MDM5LCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAKKyAgICAxMTMzNywgNzgyMDksIDkxNzgyMCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgCisgICAgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIDQxMTYwLCAwLCAzNjE4LCA3ODMzOCwgMCwgNDMzMDAsIDUxNTYsIDkyNjI5LCAKKyAgICAwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIDIyMTUsIDQxNjYyLCA5NDAxMCwgMCwgCisgICAgMCwgMCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzI1LCA0MjU3OCwgMTI4Nzk0LCA0MTY2MSwgNzg3MTUsIAorICAgIDQzMjY3LCA5MzU2LCAwLCAwLCAwLCAxMjg2LCAxMDE2NiwgMCwgMCwgNjQ3MDcsIDk4MzEyNywgNDI0NzYsIDc3MzAsIAorICAgIDk4Mzg1MCwgMTI4NTIyLCA0MjQ4MywgMCwgMCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDAsIDY2NDEsIDUyNSwgCisgICAgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCAKKyAgICA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDAsIDc0MzYwLCAwLCAxMzE5MywgNjQzNTAsIDExNjY2LCAKKyAgICA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCA5ODMwOTIsIDExMzc0LCA3ODA0MywgMTA4ODksIAorICAgIDQzNDYxLCA3NzU3LCA0MjQ2MiwgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDczODQyLCAxMzMwOCwgCisgICAgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAwLCA3Nzk0OCwgMzYzLCAxMTAxNSwgNzc5NDcsIDc3OTQ0LCA2NDI5NiwgMTI3MDkwLCAKKyAgICA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgCisgICAgNjQ0MzQsIDkyNTIwLCAxMjcwOTUsIDk0OTIsIDExNzgyLCA2NDM4MiwgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgCisgICAgNjMwLCAxMjcwOTQsIDAsIDEyMDc3NCwgOTI0NjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyODY2NCwgMzEzLCAKKyAgICA5MTc1NjMsIDQxODgxLCAwLCA0MjMxMSwgNzQ0NSwgMCwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgCisgICAgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIDk0MjIsIDAsIDY2NDk1LCAwLCAwLCAxMjcyMzksIDQxNzE4LCAxMDcwNywgCisgICAgMTYwMywgMCwgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCAwLCAxMDU0NiwgNzQyMTAsIAorICAgIDc4MTAxLCAxMTYwMCwgNzc5NjEsIDI3OTcsIDczODIxLCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgCisgICAgMTI3MDgwLCAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAwLCA0MjI4MiwgNzc5NzEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgCisgICAgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCAKKyAgICA4MjQ0LCAzNjIsIDkyNDM5LCAwLCA4MDM3LCA0Mzc3NywgMTE1MzUsIDAsIDc0ODQ1LCA1MTg1LCA3MTY1LCA1NTIxLCAKKyAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjgxMTIsIDEwMTA0LCAxMDI3LCA1MTgxLCAwLCAwLCAxMDUyMywgMTQ0NiwgCisgICAgNDIzMjAsIDQxNjQ2LCA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCA0Mjg5OCwgMzQwNSwgCisgICAgMCwgMTk0NjQ0LCA1NTIzLCAwLCA0MjYyMCwgOTI0NDcsIDk4MzgxMCwgOTU0OSwgMCwgMTA1NDksIDU1MjgyLCA5NjYxLCAKKyAgICA0MzY4MiwgMCwgNzc5MTAsIDEyMDAyNiwgNzg3MDgsIDAsIDc3OTExLCAwLCA0MTk5MSwgOTgzODg0LCAwLCA3NjMwLCAKKyAgICA5ODQ2LCA3Njg0LCAxMDM1MCwgMCwgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgNzc5ODAsIDY2NDg1LCA3Nzk3NywgCisgICAgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNjU2NjcsIDEyNzAzNywgMTIzMzAsIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAKKyAgICA2NjYzMCwgNDEzNDQsIDYyOTMsIDAsIDY2MjUyLCA3Nzk4NCwgNzQ0NDMsIDAsIDEwMjA5LCA4MzEzLCA0MTk1LCA3NDQzNSwgCisgICAgMTMxNiwgNjY2OTAsIDEyMDAzMiwgNjMzMiwgNjQ4OTQsIDAsIDY1ODcxLCA3ODA2MCwgMTczNiwgOTgzNjc1LCAzOTAxLCAKKyAgICAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4ODQxLCA2OTMsIDkxMzAsIDMxNCwgNjQxNDksIDQyNDIwLCAKKyAgICAxMTk0OSwgOTgzNjYwLCAxMjAxNTIsIDExMDI2LCAxMjg3ODgsIDUzMzIsIDY5NDAsIDY0MTU0LCAxMjYzNSwgMTI3MDA3LCAKKyAgICA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgMTIwNzYzLCA3ODg0MCwgNzEzNjgsIDEyODI0LCAwLCA0NTI4LCAKKyAgICA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgMzc1NywgMCwgMCwgMCwgCisgICAgNjU4NjksIDczNzYwLCAyNTY5LCAwLCAyMzI2LCA2NTc0MCwgMjU2NSwgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg1OSwgCisgICAgNzQwOTUsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCAwLCA0MDQ0LCA5MjY0NiwgMCwgMTIyMzMsIDk4Mzg2MiwgCisgICAgMTAyMywgNDc0LCAwLCAxMTk4MTgsIDAsIDAsIDQyNDg3LCA2NTU1NiwgMCwgMTI3ODY2LCA0MjI5NSwgMCwgMCwgNzEzMjIsIAorICAgIDkyNTE4LCA5ODM1LCA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDAsIDAsIDU1MjUxLCAKKyAgICAxMDExOCwgMzEzMywgMTI4MDA4LCA3Mzc5NSwgMCwgOTYxMCwgODA2OCwgODE5NywgMCwgNjk5LCAwLCA0MTY2NSwgNTg2OCwgCisgICAgMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIDY1NTgzLCAKKyAgICA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgMTE5MTg0LCA5MjE5NywgMCwgNjQ2NCwgNzAzNiwgMjk5NiwgMTkzNywgCisgICAgOTgzNzQyLCAwLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCAwLCAwLCAxMTAxNywgMTIwNjAxLCAwLCAyOTMsIAorICAgIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCA3MTM1MCwgNjU0MTMsIAorICAgIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMCwgMTcxMywgNzc5NjksIDAsIDczOTU3LCAxMTQwNywgCisgICAgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIDY0MTA1LCAxMjgwODAsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIAorICAgIDQyMjg5LCAwLCA2NDEwMywgOTY5LCAwLCA5MzUyLCAwLCA2MTY1LCA2NDEwMCwgMCwgNjYzMiwgNzM4NjEsIDQyNDAyLCAKKyAgICA3NDMyNywgNzgwNiwgMCwgODkxNCwgMCwgMCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCAKKyAgICA2Nzg0OSwgNTc0NiwgNzM3NDksIDAsIDY0NDE2LCA0MjQyMiwgMCwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAKKyAgICAxOTQ3MTksIDAsIDQyMzI4LCAxMDc2NywgMCwgODExNSwgMCwgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgCisgICAgMCwgNjU4NDgsIDAsIDAsIDY5ODYzLCAwLCAxMjY5ODcsIDQ0ODYsIDAsIDAsIDAsIDEwOTI1LCAwLCAwLCAwLCA5ODM1ODYsIAorICAgIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCAwLCAxMDMwNSwgNDI0NjEsIDAsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgCisgICAgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMCwgNDI0MjksIAorICAgIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDAsIDY1NDAyLCAxMTk1ODEsIAorICAgIDAsIDAsIDY0OTMzLCAwLCA0MTk2MCwgNjY5OSwgMCwgMCwgMTI4MzU0LCA2ODIzLCA0MjM5MSwgMTU4OCwgNjU0MDAsIAorICAgIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIDkxNzkzOSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgCisgICAgNDI0ODAsIDAsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCAwLCAwLCAwLCA2NDQsIDY1NTAwLCA0MTY1NywgMTA3NzgsIAorICAgIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDc0NDU3LCAwLCAwLCA0MTU1NCwgMCwgCisgICAgODIyMCwgOTE3OTQzLCA0MTU1NywgMCwgMCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCAKKyAgICA2NDgxOCwgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDAsIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgCisgICAgMCwgMTE4OTMwLCA2NDUyNywgMCwgNzg3NywgNzM4MDMsIDk4Mzc4OSwgMTI3MzQ4LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAKKyAgICAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDAsIDc4NjMxLCAKKyAgICA5NTAyLCA2NTQyNywgMCwgNjU0MjQsIDEyNjA3LCAwLCA5NzM0LCA2NTQyNSwgMCwgMCwgMTI3MzU3LCA3ODgzNSwgOTI0MTAsIAorICAgIDEwMTEyLCAxMDgyNywgMCwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAwLCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCAwLCAKKyAgICA4NjM2LCA5ODM5MTgsIDgzMTUsIDY1NDQ0LCA5ODM3ODQsIDAsIDc0NTk1LCA2MTUyLCAwLCAwLCA2NjI5LCAxMjcxMDgsIAogICAgIDEyMDE3MSwgMCwgNzQ1ODksIDQzOTkzLCAwLCA2OTc5MCwgNjQ0MzUsIDAsIDQzNjkwLCAxMTA0NiwgMTE0OTAsIDQyNzMwLCAKICAgICA0NDg1LCAxMjcxMDcsIDAsIDY0OTI2LCAwLCAwLCAwLCA1ODY5LCAxMjQzNywgNDI3MjgsIDAsIDcwNDAsIDM1ODgsIDAsIAogICAgIDEyODI1LCAwLCAwLCAxMjcyNSwgMCwgMCwgNzg2NDIsIDIyMywgMCwgNjk2NzUsIDEyMDE2NiwgNDI0NDQsIDAsIDY0NDk5LCAKICAgICA2NTI0NSwgMCwgMTE3MSwgMCwgNjk3MTcsIDAsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgNzg2MTksIAogICAgIDEyMDExMSwgMjMzOCwgMCwgMTE4ODUzLCAwLCA0MjY3NiwgMCwgNjQ4MDAsIDY1MjM2LCA2NzY0NCwgNjgxMjYsIDEyMTMsIAotICAgIDAsIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCAwLCA2NDM4NywgNDExNSwgMCwgNTAwNSwgNjQwNzAsIDY0MDczLCAKLSAgICAxMDY3OSwgMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDAsIDAsIDgyNTEsIDEwMTM2LCA2NTQzNiwgMCwgMjEyMCwgCi0gICAgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCAxMjAxNTgsIDEwNzAxLCAxNzY0LCAzMTAxLCAxMjc4MTUsIDEyODU4LCAxMjAxNTksIAotICAgIDAsIDExMzczLCA2Mzc4LCAxMjc4NTksIDEyMDEwMywgODY2MywgOTMxMiwgNDE2NDQsIDQ1MzksIDIxMjksIDAsIDkyMjIsIAotICAgIDAsIDAsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgMCwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIAotICAgIDEyOTMsIDc5NDcsIDIxMzIsIDAsIDc0NTkzLCAxMjAzMDgsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDAsIDAsIAotICAgIDY1ODg4LCA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCAwLCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgMCwgODgyMiwgMCwgCi0gICAgMTE1NywgNjQ5MDMsIDg2MzgsIDAsIDAsIDAsIDAsIDEyMDMxOSwgODIzNSwgMTIwMzE2LCA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAKLSAgICAwLCA2OTIxNiwgMCwgNjU0MzAsIDc0MDEzLCA2MDc5LCA2ODE3LCAxMDc2NCwgMTI3OTEwLCA2NDI5MSwgMTI4MDUxLCA5OTgsIAotICAgIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAwLCAxOTkxLCA3ODgyLCA0MjI1NCwgMCwgNDE3MDAsIDUzMCwgMCwgCi0gICAgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgCi0gICAgNTAwNCwgMTE5MzM0LCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDAsIDY2MzczLCAwLCAwLCA2NDkwOCwgOTI2OTEsIDYzMTEsIAotICAgIDAsIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgMTIwMzI2LCAwLCA0MTcwNSwgOTIxODgsIDY1OTgsIDAsIDY1OTksIAotICAgIDEyMDMzNCwgMCwgNDIxNDgsIDExODgyNSwgNjYwMjcsIDAsIDY1OTcsIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMCwgMCwgCi0gICAgMCwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAwLCAxMjAyNDMsIDIzMzYsIDAsIDAsIDc4ODcxLCAxMjA0NDIsIAotICAgIDAsIDE5MjEsIDEwOTQ3LCAxOTkyNywgMCwgNjU0MDYsIDAsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCAKLSAgICA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAwLCA1Nzc0LCA4MzI1LCAwLCAKLSAgICA2NTQwMywgMCwgMTg1NCwgMTA3OTQsIDAsIDY3NjYwLCAwLCAwLCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIAotICAgIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgCi0gICAgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAKLSAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAwLCAwLCA4NDIxLCAxMjc0NzIsIDY5NjgyLCAKLSAgICA0MzcwNSwgNTAyLCAwLCA2NTQzMSwgMTE5MDU2LCAwLCAxMjA0MywgMTMwMywgMzE2LCA5MjQ2MiwgMjAyOSwgMjEzNiwgCi0gICAgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgMTk0NjQ1LCAxMjc4NzcsIDQyNDg4LCAwLCA5NTgzLCAKLSAgICAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAwLCAwLCAwLCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIAotICAgIDc3OTg5LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIAotICAgIDY1NDUyLCAwLCAxMTMwMSwgNzgwMTMsIDc4MDA4LCA3ODAxMCwgOTg3NCwgNzgwMDcsIDAsIDEzMTksIDMwNTAsIDY1NDEwLCAKLSAgICAwLCAwLCA3ODAxNiwgNzgwMTcsIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDEyODEzNywgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgCi0gICAgOTI3MDksIDEyODIyMiwgMCwgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgCi0gICAgMTA1NDUsIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgMTE5NjExLCA3OTIzLCAzNzE2LCAKLSAgICA5MjM2MywgOTk5NiwgODUwOCwgMCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCAwLCA0MTcwNywgODQ5MywgCi0gICAgNTQ1LCA5NTc1LCA0MTM3OSwgMTAwNTAsIDEyNzE4LCAwLCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMCwgCi0gICAgMCwgOTExOSwgMjc4NywgNzkyMCwgMTE4ODIzLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDAsIDAsIDc4MDIxLCAKLSAgICA3ODAyMiwgNDEwLCA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCAwLCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAKLSAgICAxMDEyNiwgMTIxMTYsIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3ODE0MSwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCAKLSAgICA0MTM0NSwgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgCi0gICAgNjQ4NTgsIDM2MSwgMTIwMzU3LCA4NDUsIDAsIDQxNTYwLCAxMTk3MCwgNDU2MiwgOTE3OTIwLCAyOTI2LCA5MTc5MTksIAotICAgIDQ1NjksIDc0MTMwLCAwLCA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCA2NTYyOSwgMCwgCi0gICAgMTk0ODU4LCAwLCAwLCAxMjc1NDUsIDEyMDU0MywgMCwgMCwgNjI5MSwgMCwgNzg2MzksIDQxNjY5LCA3MDk0LCA5MTc5MjEsIAotICAgIDAsIDAsIDc0MDU0LCAxMjc3NTQsIDE5NTAyOSwgMCwgODM5LCAwLCA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgMCwgNDg1OSwgCi0gICAgNjQ0NjcsIDAsIDAsIDExODk5OCwgNzIwNiwgMCwgNjY0NywgNDM5ODYsIDAsIDY5NzY2LCAwLCA2NDc2NCwgNDIxMCwgMCwgCi0gICAgMTI3OTM2LCA4MDQsIDAsIDAsIDEyMjk4LCAwLCA2NjY1MywgMCwgNjQ5MjQsIDEwMDkxLCA3MzkzMSwgOTQ2OCwgNzQyNDUsIAotICAgIDAsIDAsIDc0MjQ2LCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgMCwgMTI3OSwgMTQyNSwgNjIyNCwgMTE5MjI5LCAKLSAgICAxMTA0OSwgMCwgOTI2OTcsIDQzMjM5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgNjk2NzcsIDExOTQwLCA2Nzg4OCwgNjY0LCAKLSAgICAxMjA0MzcsIDUwMzQsIDAsIDAsIDEyNzUyNSwgNDI3MDIsIDczODg4LCAwLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCAKLSAgICAwLCA5MTE1LCA3NDMwLCAxMjAzNzcsIDAsIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgNzM5MTMsIDEyMDE3MCwgNDExNjEsIAotICAgIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgMTIwMTYwLCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgCi0gICAgNDExNjQsIDY0NzQ0LCA5NTI4LCAxMTg4NjcsIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgNzg4LCA3NDAyNywgMCwgMTk0NjM4LCAKLSAgICAwLCAxNjYzLCAxMDQxOSwgNzQwMjUsIDQyNjM2LCAwLCA2OTcyNSwgMCwgMTIwNjU2LCAwLCA2Nzg3NiwgMCwgMCwgMCwgCi0gICAgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDAsIDAsIDEwODU1LCA1NDQ1LCAKLSAgICA5MzU1LCAwLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgMCwgMCwgODAxMCwgNzE5MSwgNDk2MiwgNjk3NzIsIAotICAgIDg4NTUsIDAsIDAsIDY0NDY5LCAxMjA0MjYsIDEwNTU1LCAwLCA0MzMzMywgOTIyOTksIDAsIDEyMDQyNywgMTA0NTEsIDAsIAotICAgIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDAsIDEyMDE0NiwgCi0gICAgNDM0MzMsIDQzNjQ5LCAxMTk4NywgMCwgMCwgMTEwMTAsIDEyNzIzLCA3NDA1OSwgNzQwNjIsIDYyMTcsIDU4OTYsIDAsIAotICAgIDc2ODIsIDc0MDQ5LCAxNDYyLCAxMDIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDI1OTUsIDAsIDc0NDAyLCAxMTg4NjAsIDAsIAotICAgIDEyMDQxOSwgOTI0OTcsIDc0MDUyLCAwLCAwLCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgNjQ3NjUsIAotICAgIDczOTIzLCAxMjA0MTcsIDEyMDY2MiwgMTIwNzMwLCAxOTQ3MDIsIDYyMTYsIDAsIDEwNzU1LCA5NDU1LCAwLCA4MTI0LCAKLSAgICAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyNzU0MCwgMCwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIDAsIDAsIDAsIAotICAgIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAwLCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgNzg1NjIsIDE5OTM2LCAKLSAgICA3ODMzLCAxMjA2OTEsIDAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDEyMDQwOSwgMTI3MDQ0LCAwLCA4NTM3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MTE5OSwgMTAxMjEsIDIwMjgsIDAsIDAsIDY5NzE1LCAwLCAzMDYyLCAwLCA3NDQ0NywgMTI2MDgsIDAsIAotICAgIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMjU4MCwgMCwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCAwLCA3NDA3MSwgMCwgMCwgCi0gICAgMTI3MTMsIDAsIDAsIDAsIDc4NzcyLCAwLCAxNzM0LCAwLCAwLCAxMjcwNDAsIDY0NTk0LCAyNDU2LCAyMzEsIDAsIDc0MTY3LCAKLSAgICA1NDIsIDAsIDExODc4NiwgMCwgMCwgMTIzMCwgMCwgMCwgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgCi0gICAgMTI3OTM4LCA4MzUyLCAwLCA1Njg3LCAwLCA2NDUxNSwgMCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCAwLCAKLSAgICAwLCA3NDI4NCwgMTI4Mjg1LCAwLCA4NjYwLCAwLCAwLCAwLCA3ODc3MywgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCAKLSAgICA5OTA5LCA2MDgwLCAwLCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIDAsIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDAsIAotICAgIDQ0ODAsIDExMjY2LCAxMjgxNTIsIDEyMjYsIDY5MzAsIDAsIDAsIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCAwLCA3NDc4NSwgCi0gICAgMTIwMzU2LCAwLCAwLCA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA3NDI4MCwgMTA4NzcsIAotICAgIDExODg2OCwgNjQ4ODUsIDc0MjcyLCAwLCAwLCAwLCAxMjA3MzYsIDc0MzEyLCAzNDUsIDAsIDc0NDU2LCA2NDYwNiwgOTkxNywgCi0gICAgMCwgOTIyMzEsIDUwMzcsIDAsIDE3NzYsIDg0MjIsIDAsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIDQzMzI4LCAwLCAKLSAgICA0MjY5OCwgMTI5NSwgMCwgNDYyNSwgMCwgNDYzMCwgMTMxMTcsIDAsIDEyODc3MiwgNjUxMjMsIDExMjkzLCAyNjY4LCAKLSAgICAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCA0MjUyLCA1MDQ5LCA0MjY1OSwgCi0gICAgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCAwLCA2NTQxOSwgMCwgMCwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDAsIAotICAgIDEyNjcwLCAxMDEzLCAwLCA2NDkxOSwgNzA1LCAwLCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAwLCA3MDE3LCA0Mjg1MiwgMCwgCi0gICAgODE1NywgOTczNiwgNjQ1MDMsIDY1NDE4LCAwLCAwLCA3NDAzNSwgMCwgMTE5MTMsIDczODc0LCA2Njk2LCAwLCA4OTIwLCAwLCAKLSAgICAwLCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDAsIDAsIDEwMTc3LCA3Mzc3NywgMTg1NywgMCwgCi0gICAgNDYyNiwgODQ2NCwgODQ3MiwgMCwgNDYyOSwgODQ5OSwgNzgzMjEsIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTkxNzMsIDAsIDAsIAotICAgIDc4MDUsIDAsIDAsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgNDM5ODksIDExOTA0NiwgODQ5MiwgCi0gICAgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgMCwgMCwgNzgzMzYsIDc4MzM5LCA5NTQzLCA3ODMzNSwgNzgzMzIsIDc3ODMyLCAKLSAgICA2NTg0OSwgNzc4MzEsIDAsIDAsIDEyNDUxLCAwLCA4Njg0LCAwLCA2MTAyLCAwLCA1Mjk4LCAwLCA1Mjk0LCAwLCAwLCAwLCAKLSAgICAxOTUwNjIsIDk5NDksIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgCi0gICAgMTIwNjE3LCA3NDM5NywgNDE0NjgsIDAsIDAsIDUyOTIsIDU1MjcyLCAwLCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzksIAotICAgIDEyNDU1LCAxNzkzLCAwLCAwLCAwLCA2NjQzLCA5MjQ3NywgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCAKLSAgICAwLCAxMzIxOSwgOTU2OSwgMCwgNzQzODMsIDAsIDAsIDAsIDU1MDAsIDg4MTMsIDAsIDAsIDc0NTY2LCA1MzIyLCAwLCAKLSAgICA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgNDMzMjQsIAotICAgIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIDk5MjYsIDcxOTcsIDAsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIAotICAgIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCAKLSAgICA0MTgxNSwgNDExNTAsIDAsIDEwNTcxLCAxMDA5NiwgMCwgMCwgNzgwNzQsIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIAotICAgIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA3NDQ2NiwgMCwgNjY3MCwgNzc4ODIsIDAsIDAsIDQzMDkyLCA0MzMyNSwgMCwgCi0gICAgMTAxNjgsIDAsIDk3ODEsIDEyODY1NSwgOTE5MCwgMCwgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIAotICAgIDEyNzM4MywgMzE1LCAxMjgxMywgMCwgNzg0MzIsIDc4MjU2LCA3ODM1MSwgNzgzNTIsIDAsIDAsIDAsIDAsIDEzNzgsIAotICAgIDk1MDksIDAsIDAsIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCA3ODM2NSwgODc4NywgMTIwMzc5LCAKLSAgICAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAxOTQ2MTIsIDAsIDc4MzY2LCAKLSAgICA0MjA4OCwgMCwgMTk1MDYxLCA3MTc2LCAxMjg4MzMsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIDc0NTM0LCA4MTE5LCAKLSAgICA2NDg3NCwgOTE3ODE2LCAxMjcxOTksIDE5NDkzOSwgMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAxMzk0LCA3NDUxNCwgMCwgCi0gICAgNzQ1MTUsIDAsIDExODgwNCwgMjk5OCwgOTUyNywgMTIwNjU5LCA2NTE5MCwgMTI5NzcsIDQyMDkwLCAxMTkxNjUsIDAsIAotICAgIDExOTEwMCwgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCA1ODQ4LCAwLCAwLCAzNjcwLCAxMjg2NTcsIAotICAgIDE5NDYwMCwgMCwgMCwgNzg5MCwgMCwgMTEyOTgsIDQzMzE1LCAwLCA2MjI5LCAxNTkzLCAwLCAwLCA2MTksIDQ2MzUsIAotICAgIDY1MDgwLCAwLCAxMjgwMDIsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMCwgMTE4MDgsIDExOTIxNCwgNzQxMTUsIDkzNjYsIAotICAgIDQyNzkwLCA0MjAwNiwgMCwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIAotICAgIDY1MzM1LCA2NTMzNCwgNjUzMzMsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIAotICAgIDExODg4NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCAwLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAotICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDAsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIDQzNTMzLCAKLSAgICA3ODQ1OSwgNzE4OSwgMCwgMCwgMCwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgMCwgNDYxNSwgMTI2OTUsIAotICAgIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAwLCA1NjIsIDEyMTY5LCA2NTkwLCA2OTc2MiwgCi0gICAgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMCwgMCwgMTAzNywgMCwgMjAyNSwgMTI4MjYzLCAxMzA5OCwgNzg0NDIsIAotICAgIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIDAsIDI4MzUsIDAsIDEwNjI0LCA0MzYyMywgMTEwNzIsIDEyNzE5MSwgMCwgMCwgCi0gICAgMTI2MDYsIDc4NDMzLCAyODI1LCAwLCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCAwLCAwLCAxMjA1OTMsIAotICAgIDEzMDcxLCAwLCA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCAwLCAKLSAgICA2NDcwMywgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCAwLCAxNjY4LCAwLCAwLCAwLCAxMTg3LCAKLSAgICAwLCA0MjYyOCwgNzg1NzUsIDAsIDEyODc3NywgMCwgMzI0MCwgMTI4NTE4LCAxMjE5NCwgMCwgMTE1OTEsIDQxMDY1LCAKLSAgICA1MzIzLCA4MTY2LCAwLCAwLCAwLCA3NDUzNSwgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAKLSAgICAxMjcyOTUsIDg5MTYsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCAwLCAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCAxMjczMDAsIAotICAgIDkyMjk2LCA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDAsIDc4ODEsIDcwMSwgNjU5MzYsIDM0ODksIDAsIDAsIDEyMDc1MSwgCi0gICAgMTE0MDMsIDAsIDAsIDEyNzE0NiwgMzc5NiwgNjgwMCwgMCwgMzk5NCwgMTE0MjEsIDAsIDE5NTA3NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgNjQwNzUsIDc5NywgNjQwNzQsIDg3MzQsIDQyMTIsIDEyNzM2OSwgNjQzODcsIDQxMTUsIDAsIDUwMDUsIDY0MDcwLCAKKyAgICA2NDA3MywgMTA2NzksIDAsIDc3OTU0LCA5NDAyLCA2NDI3NiwgNDI2LCAwLCAwLCA4MjUxLCAxMDEzNiwgNjU0MzYsIDAsIAorICAgIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzQxOTIsIDEwNzAxLCAxNzY0LCAzMTAxLCAxMjc4MTUsIDEyODU4LCAKKyAgICAxMjAxNTksIDAsIDExMzczLCA2Mzc4LCAxMjc4NTksIDEyMDEwMywgODY2MywgOTMxMiwgNDE2NDQsIDQ1MzksIDIxMjksIDAsIAorICAgIDkyMjIsIDk4MzcyOSwgMCwgNDI1OSwgOTA5MiwgNzQ1NjcsIDQxOTYxLCAwLCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgCisgICAgMCwgMCwgMTI5MywgNzk0NywgMjEzMiwgOTgzNzU4LCA3NDU5MywgMTIwMzA4LCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCAKKyAgICAwLCAwLCA2NTg4OCwgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgMCwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIAorICAgIDk4MzExNCwgODgyMiwgMCwgMTE1NywgNjQ5MDMsIDg2MzgsIDAsIDAsIDAsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIAorICAgIDQ0MDUsIDEwMDg2LCAxMjAyNDcsIDAsIDY5MjE2LCAwLCA2NTQzMCwgNzEzMjEsIDYwNzksIDY4MTcsIDEwNzY0LCAKKyAgICAxMjc5MTAsIDY0MjkxLCAxMjgwNTEsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDAsIDE5OTEsIAorICAgIDc4ODIsIDQyMjU0LCAwLCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgCisgICAgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCAxMTkzMzQsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCAKKyAgICA2NjM3MywgMCwgMCwgNjQ5MDgsIDkyNjkxLCA2MzExLCAwLCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgNDMxMDgsIDEyMDMyNiwgCisgICAgMCwgNDE3MDUsIDkyMTg4LCA2NTk4LCAwLCA2NTk5LCAxMjAzMzQsIDAsIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAwLCA2NTk3LCAKKyAgICA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIDY5OTA0LCAwLCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIAorICAgIDAsIDEyMDI0MywgMjMzNiwgOTgzODk0LCAwLCA3ODg3MSwgMTIwNDQyLCA5ODM3NjAsIDE5MjEsIDEwOTQ3LCAxOTkyNywgMCwgCisgICAgNjU0MDYsIDAsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAKKyAgICAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAwLCA1Nzc0LCA4MzI1LCAwLCA2NTQwMywgOTgzMDg5LCAxODU0LCAxMDc5NCwgCisgICAgMCwgNjc2NjAsIDY5ODQ2LCAwLCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIDY1NDMzLCA2MDc2LCA2NDc5MywgCisgICAgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgCisgICAgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAKKyAgICAxMjc0NjMsIDY5Nzk3LCAxOTQ2NTIsIDEyNzQ3MywgODQyMSwgMTI3NDcyLCA2OTY4MiwgNDM3MDUsIDUwMiwgMCwgNjU0MzEsIAorICAgIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAxMzAzLCAzMTYsIDczNjQsIDIwMjksIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCAKKyAgICA0MzQ4MCwgOTI2MzksIDQ4NjAsIDEyNjY0OCwgMTI3ODc3LCA0MjQ4OCwgMCwgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCAKKyAgICA3Mzg1NiwgMCwgMCwgMCwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCA3Nzk4OSwgNjM3NTEsIDEyMTM3LCAKKyAgICA1NTQ4LCA3Nzk4NSwgMCwgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMCwgMTEzMDEsIAorICAgIDc4MDEzLCA3ODAwOCwgNzgwMTAsIDk4NzQsIDc4MDA3LCAwLCAxMzE5LCAzMDUwLCA2NTQxMCwgMCwgMCwgNzgwMTYsIAorICAgIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCAxMjgxMzcsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIDkyNzA5LCAKKyAgICAxMjgyMjIsIDAsIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAKKyAgICAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDExOTYxMSwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIAorICAgIDg1MDgsIDAsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgCisgICAgNDEzNzksIDEwMDUwLCAxMjcxOCwgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAwLCAwLCA5MTE5LCAKKyAgICAyNzg3LCA3OTIwLCAxMTg4MjMsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgMCwgMCwgNzgwMjEsIDc4MDIyLCA0MTAsIAorICAgIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDAsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgNjQzOTYsIDEwMTI2LCAxMjExNiwgCisgICAgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDc4MTQxLCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIDQxMzQ1LCAxMjAzNjIsIAorICAgIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCA2NDg1OCwgMzYxLCAKKyAgICAxMjAzNTcsIDg0NSwgMCwgNDE1NjAsIDExOTcwLCA0NTYyLCA5MTc5MjAsIDI5MjYsIDkxNzkxOSwgNDU2OSwgNzQxMzAsIDAsIAorICAgIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIDY1NjI5LCAwLCAxOTQ4NTgsIDAsIDAsIDEyNzU0NSwgCisgICAgMTIwNTQzLCAwLCAwLCA2MjkxLCAwLCA3ODYzOSwgNDE2NjksIDcwOTQsIDkxNzkyMSwgMCwgOTgzNTgxLCA3NDA1NCwgCisgICAgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgOTgzMzExLCA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgMTk0NjYzLCA0ODU5LCAKKyAgICA2NDQ2NywgMCwgOTgzOTU0LCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIAorICAgIDk4Mzg1NCwgMTI3OTM2LCA4MDQsIDAsIDAsIDEyMjk4LCAwLCA2NjY1MywgMCwgNjQ5MjQsIDEwMDkxLCA3MzkzMSwgOTQ2OCwgCisgICAgNzQyNDUsIDAsIDAsIDc0MjQ2LCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgMCwgMTI3OSwgMTQyNSwgNjIyNCwgCisgICAgMTE5MjI5LCAxMTA0OSwgMCwgOTI2OTcsIDQzMjM5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgNjk2NzcsIDExOTQwLCAKKyAgICA2Nzg4OCwgNjY0LCAxMjA0MzcsIDUwMzQsIDAsIDAsIDEyNzUyNSwgNDI3MDIsIDczODg4LCA5ODMxNDksIDEzMjk0LCAKKyAgICA2Nzg3MywgNjQ4NjksIDYwMzIsIDAsIDkxMTUsIDc0MzAsIDEyMDM3NywgMCwgMTIwODE5LCA2ODM4NywgMTIwMTY4LCAKKyAgICA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIDQxMTYyLCAxMjAxNjAsIDY0NTI4LCAxMTY5LCA0MzQsIAorICAgIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDExODg2NywgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCAKKyAgICA3ODgsIDc0MDI3LCAwLCAxOTQ2MzgsIDAsIDE2NjMsIDEwNDE5LCA3NDAyNSwgNDI2MzYsIDAsIDY5NzI1LCAwLCAxMjA2NTYsIAorICAgIDAsIDY3ODc2LCAwLCAwLCAwLCA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMCwgCisgICAgMCwgMTA4NTUsIDU0NDUsIDkzNTUsIDAsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIDY1Njg2LCAwLCAwLCA4MDEwLCA3MTkxLCAKKyAgICA0OTYyLCA2OTc3MiwgODg1NSwgMCwgMCwgNjQ0NjksIDEyMDQyNiwgMTA1NTUsIDAsIDQzMzMzLCA5MjI5OSwgMCwgCisgICAgMTIwNDI3LCAxMDQ1MSwgMCwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgCisgICAgODM2NywgMCwgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCAwLCAwLCAxMTAxMCwgMTI3MjMsIDc0MDU5LCA3NDA2MiwgCisgICAgNjIxNywgNTg5NiwgMCwgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCAwLCAwLCAwLCAwLCAwLCAwLCA0MjU5NSwgMCwgCisgICAgNzQ0MDIsIDExODg2MCwgMCwgMTIwNDE5LCA5MjQ5NywgNzQwNTIsIDAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIAorICAgIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCAxMjA0MTcsIDEyMDY2MiwgNjk5MjAsIDE5NDcwMiwgNjIxNiwgMCwgMTA3NTUsIAorICAgIDk0NTUsIDAsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTI3NTQwLCAwLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgCisgICAgMCwgMCwgMCwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDAsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgCisgICAgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgMTIwNDA5LCAxMjcwNDQsIDAsIDg1MzcsIDAsIAorICAgIDAsIDkzNTQsIDk4MzE2NCwgMTI4ODMzLCA0MTE5OSwgMTAxMjEsIDIwMjgsIDAsIDk4MzE5NCwgNjk3MTUsIDAsIDMwNjIsIAorICAgIDAsIDc0NDQ3LCAxMjYwOCwgMCwgNjY0NDAsIDc1NDUsIDk3MDAsIDEyNTgwLCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIAorICAgIDQxMTU1LCAwLCA3NDA3MSwgMCwgOTgzNDQ5LCAxMjcxMywgMCwgMCwgMCwgNzg3NzIsIDAsIDE3MzQsIDAsIDAsIDEyNzA0MCwgCisgICAgNjQ1OTQsIDI0NTYsIDIzMSwgMCwgNzQxNjcsIDU0MiwgMCwgMTE4Nzg2LCAwLCA5ODM5NzAsIDEyMzAsIDAsIDAsIDM1OTcsIAorICAgIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIDEyNzkzOCwgODM1MiwgMCwgNTY4NywgMCwgNjQ1MTUsIDAsIAorICAgIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgMCwgMCwgNzAwODAsIDcxMzM4LCAwLCA4NjYwLCAxMjY0OTUsIAorICAgIDAsIDAsIDc4NzczLCA3NDQ4MiwgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIDYwODAsIDAsIDEyMDM1OCwgMTc0NiwgMTMxNSwgCisgICAgODY2NywgMCwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgMTEyNjYsIDEyODE1MiwgMTIyNiwgNjkzMCwgCisgICAgNjc5NzksIDk4MzY4MSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDAsIDc0Nzg1LCA2OTg3NSwgMCwgMCwgNDE1MDAsIDAsIAorICAgIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNzQyODAsIDEwODc3LCAxMTg4NjgsIDY0ODg1LCA3NDI3MiwgMCwgMCwgCisgICAgMTI4NTU5LCAxMjA3MzYsIDc0MzEyLCAzNDUsIDAsIDc0NDU2LCA2NDYwNiwgOTkxNywgMCwgOTIyMzEsIDUwMzcsIDAsIAorICAgIDE3NzYsIDg0MjIsIDAsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIDQzMzI4LCAwLCA0MjY5OCwgMTI5NSwgMTk0ODUzLCAKKyAgICA0NjI1LCAwLCA0NjMwLCAxMzExNywgMCwgMTI4NzcyLCA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgCisgICAgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgCisgICAgNzc1NCwgMTA4NTQsIDg3MzgsIDAsIDY1NDE5LCAwLCAwLCA2NDksIDY1NDIxLCAwLCA2NjcwMiwgMCwgMTI2NzAsIDEwMTMsIAorICAgIDAsIDY0OTE5LCA3MDUsIDAsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIDAsIDgxNTcsIAorICAgIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgOTgzODY5LCA3NDAzNSwgMCwgMTE5MTMsIDczODc0LCA2Njk2LCAwLCA4OTIwLCAKKyAgICAxMTkyOTgsIDAsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgMCwgMCwgMTAxNzcsIDczNzc3LCAKKyAgICAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCA3ODMyMiwgNDYyNCwgNzgxOCwgCisgICAgMTE5MTczLCAwLCAwLCA3ODA1LCAwLCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCA3ODMyNiwgNzgzMjMsIDQzMzI3LCAKKyAgICA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCAwLCAwLCA3ODMzNiwgNzgzMzksIDk1NDMsIAorICAgIDc4MzM1LCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgOTgzOTUyLCAwLCAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgCisgICAgNTI5OCwgMCwgNTI5NCwgMCwgMCwgOTgzNDUxLCAxOTUwNjIsIDk5NDksIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgCisgICAgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgNDE0NjgsIDk4Mzc0OCwgMCwgNTI5MiwgNTUyNzIsIAorICAgIDk4Mzg3NCwgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAxMjQ1NSwgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIAorICAgIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgMCwgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCA3NDE5NywgCisgICAgMCwgNTUwMCwgODgxMywgMCwgMCwgNzQ1NjYsIDUzMjIsIDAsIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIAorICAgIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCA0MzMyNCwgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgCisgICAgOTkyNiwgNzE5NywgMCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIAorICAgIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIDQxODE1LCA0MTE1MCwgMCwgMTA1NzEsIDEwMDk2LCAKKyAgICAwLCAwLCA3ODA3NCwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIAorICAgIDc0NDY2LCA5Mzk2NiwgNjY3MCwgNzc4ODIsIDAsIDAsIDQzMDkyLCA0MzMyNSwgMCwgMTAxNjgsIDAsIDk3ODEsIDEyODY1NSwgCisgICAgOTE5MCwgMCwgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAKKyAgICA5ODM0NTAsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCA5ODM2NDgsIDAsIDAsIDEzNzgsIDk1MDksIDAsIDAsIAorICAgIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCA3ODM2NSwgODc4NywgMTIwMzc5LCAxOTQ2MTYsIAorICAgIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAxOTQ2MTIsIDAsIDc4MzY2LCA0MjA4OCwgMCwgCisgICAgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzQ1MzQsIDgxMTksIDY0ODc0LCAKKyAgICA5MTc4MTYsIDEyNzE5OSwgMTk0OTM5LCAwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIDEzOTQsIDc0NTE0LCAwLCA3NDUxNSwgMCwgCisgICAgMTE4ODA0LCAyOTk4LCA5NTI3LCAxMjA2NTksIDY1MTkwLCAxMjk3NywgNDIwOTAsIDExOTE2NSwgMCwgMTE5MTAwLCAKKyAgICA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIDU4NDgsIDAsIDAsIDM2NzAsIDEyODY1NywgMTk0NjAwLCAwLCAKKyAgICAwLCA3ODkwLCAwLCAxMTI5OCwgNDMzMTUsIDAsIDYyMjksIDE1OTMsIDAsIDAsIDYxOSwgNDYzNSwgNjUwODAsIDAsIAorICAgIDEyODAwMiwgNDEyMCwgNjUzMzcsIDY1MzM2LCAwLCAxMTgwOCwgMTE5MjE0LCA3NDExNSwgOTM2NiwgNDI3OTAsIDQyMDA2LCAKKyAgICAxMTkxMTUsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgNjUzMjEsIDY1MzIwLCA2NTMzNSwgCisgICAgNjUzMzQsIDY1MzMzLCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIDkyNDI3LCA5MTI4LCA5NDA0NSwgCisgICAgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODM4MjEsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgNjUzMTQsIAorICAgIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMCwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgNDM1MzMsIDc4NDU5LCAKKyAgICA3MTg5LCAwLCAwLCAwLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCA5MTMxLCAwLCA0NjE1LCAxMjY5NSwgMTI3NzUyLCAKKyAgICAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDAsIDU2MiwgMTIxNjksIDY1OTAsIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIAorICAgIDMyMTksIDY4NjU0LCA5ODM3NzgsIDAsIDEwMzcsIDAsIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgCisgICAgNTQ5LCAxNTcwLCAwLCAyODM1LCAwLCAxMDYyNCwgNDM2MjMsIDExMDcyLCAxMjcxOTEsIDAsIDAsIDEyNjA2LCA3ODQzMywgCisgICAgMjgyNSwgMCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgNzM2NSwgOTgzNzQ0LCAxMjA1OTMsIDEzMDcxLCAwLCAKKyAgICA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCAwLCA2NDcwMywgCisgICAgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCAwLCAxNjY4LCAwLCAwLCAwLCAxMTg3LCA5ODMzNzcsIAorICAgIDQyNjI4LCA3ODU3NSwgMCwgMTI4Nzc3LCAwLCAzMjQwLCAxMjg1MTgsIDEyMTk0LCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIAorICAgIDgxNjYsIDAsIDAsIDAsIDc0NTM1LCAxNjIzLCA2NTI5NywgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgCisgICAgODkxNiwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDAsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDEyNzMwMCwgOTIyOTYsIAorICAgIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgMCwgNzg4MSwgNzAxLCA2NTkzNiwgMzQ4OSwgMCwgMCwgMTIwNzUxLCAxMTQwMywgCisgICAgMCwgMCwgMTI3MTQ2LCAzNzk2LCA2ODAwLCAwLCAzOTk0LCAxMTQyMSwgMCwgMTk1MDc2LCAwLCA5ODM5MTMsIDAsIDAsIAogICAgIDY0ODU3LCAxMjgxMDUsIDI4NTUsIDEyNzgyOCwgNjYzMDgsIDQxNjIxLCA2ODIxNCwgMTI3MjgzLCAxMjc4MTcsIDEwNjU0LCAKICAgICAwLCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCAxOTQ4MjIsIAotICAgIDc0MjcwLCAxMjgyODksIDAsIDAsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAyMzc4LCA0MzEzNiwgMTI3OTA1LCA4NDY2LCAwLCAKLSAgICA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAxMTYxNywgMCwgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAwLCA2NDYzNCwgCi0gICAgMTI4Mjc5LCAwLCAxMTYxMiwgMCwgNjc2MDAsIDIzNzQsIDAsIDg0NzUsIDExNjA5LCA2NjMxMywgMCwgMCwgNTI4NiwgCi0gICAgMTE5Mjk3LCAwLCAwLCA2NDkyNSwgMTIwMjgzLCAxOTQ1ODQsIDExODk4MiwgMTk0NTgzLCA3NzA1LCAxMTk0MiwgMTEzMDUsIAotICAgIDE5NDU4MSwgMzMwOSwgMCwgMCwgMCwgMCwgNjgwMiwgMCwgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCAKLSAgICA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCAwLCAwLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCAwLCAxMjkxNCwgNDE0OTEsIAotICAgIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIDAsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIDQxMDYyLCAKLSAgICAwLCAwLCAzMjU2LCAxMjg2NDAsIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDkxNzkwNiwgODcyNywgMCwgNjU4NzUsIDAsIDAsIAotICAgIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgMCwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDAsIDAsIDM2MzUsIAotICAgIDY0MzM3LCAwLCAwLCAwLCA3MTk1LCAwLCAyMDA3LCA2NDQzMSwgMCwgMCwgMCwgMCwgNjM1LCAwLCAwLCA2NTYxMywgCi0gICAgNzc5MDksIDkyNDIwLCA3Mzk5NywgMCwgMCwgMTE5MjE4LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCA0MTc2LCAwLCAKLSAgICAyMDM0LCA5MjU1MSwgMTIwODA1LCA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODg2MCwgNzg1OTYsIDAsIDM2NDksIAotICAgIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgMTE4OTI3LCA2NzY3NywgMTIwMTI0LCA3ODY2LCAwLCAxMTQwMiwgCi0gICAgNDIxNDYsIDEyMDEzNCwgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAxMTgxMiwgCi0gICAgNjUzNzksIDY4Mzg2LCAxMjgxODUsIDExNTksIDAsIDY5NzI5LCAwLCAwLCA3MTc4LCAxOTQ2MzIsIDAsIDQxNjgwLCAwLCAKLSAgICAxMjgyMDMsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDAsIDY3ODc3LCAwLCAxMjk4OSwgNjY0NzQsIAotICAgIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgMTk0NTYzLCAxMDgxOCwgMTI4MjA3LCA5OTUzLCAwLCA3ODQyMSwgMTE5NCwgCi0gICAgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIAotICAgIDQyNzUyLCAxMTkwMjUsIDAsIDY3ODc1LCAxMjAzMDEsIDM0OTUsIDY2NjQ4LCAxOTQ3NjgsIDAsIDY4MzY0LCAwLCA0ODkxLCAKLSAgICAwLCAxMDY0MSwgMCwgNzM3NDYsIDAsIDY4MzUyLCAwLCA3Mzc4NywgMCwgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgCi0gICAgMTM2MiwgMTMyOTcsIDAsIDEyODA5NCwgMCwgMCwgNzM3ODksIDAsIDY2NTgsIDQ0MjYsIDAsIDkyNjI4LCAwLCA5MjMxOSwgCi0gICAgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDAsIDAsIDI0MTYsIDMzMTAsIDQyNzAzLCAwLCAzNzksIDAsIDEyNzk3NywgMCwgMCwgCi0gICAgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgNDU0OSwgMCwgMCwgMCwgMTI3NzYzLCAxMDgwNywgOTU1OCwgMTk0NjEzLCAwLCAKLSAgICA4NTE1LCA4Njg4LCAxMjg2NiwgMCwgMzI5NCwgMCwgODUyOSwgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDAsIAotICAgIDkyNDU4LCA3Mzc1NywgNjY0NTYsIDQyMzU5LCAwLCAyMDMxLCAwLCA3MjAyLCAwLCAxMjY3NiwgNDI3MjksIDkyMTk4LCAKLSAgICAzMjE1LCAwLCA3NzEwLCAxNjEwLCA3MzgwMSwgMCwgMCwgNjU2ODIsIDAsIDEyMDUzNywgNjU5MjQsIDk5NzQsIDIyOCwgCi0gICAgNjYzNTQsIDE1MDEsIDAsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAwLCA2NTc5NCwgMTcyNSwgNjU1MzMsIDgxOTYsIAotICAgIDc0NzYsIDc0Mzk5LCAwLCAwLCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCA3NDgzLCAwLCAwLCA4MTA0LCAwLCA3NDc0LCAKLSAgICA5MjU3MSwgMCwgMCwgMTA0MTQsIDEzMDAxLCA4MTQxLCAwLCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgCi0gICAgNjgwNSwgODYzMSwgMjU0NSwgMTIwNjcyLCAxMjcxNjYsIDAsIDc0MTkwLCAwLCAwLCAwLCA0Mjc2MiwgMCwgNDI5MTQsIAotICAgIDE2NTAsIDI2MiwgMTYzNywgMCwgNzkwMSwgMzIzOCwgMTI4MTczLCA0MTg2MSwgMCwgMCwgNjUxNTgsIDEwODYwLCAwLCAKLSAgICA0MzY1OCwgNzUyNywgMCwgNDMzMTksIDY0MTksIDAsIDQ1LCAwLCA2NDU4OCwgMCwgMCwgMTE5ODEwLCA3MTk0LCA1MjkxLCAKLSAgICAwLCA0MzY2NiwgMTMxMjksIDAsIDkwODQsIDAsIDg3MzcsIDAsIDEyODgxLCAwLCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgCi0gICAgMCwgMCwgMCwgMCwgMTc5LCA2NTg5NiwgMCwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDAsIDExODk5NiwgMTE5MDA5LCAKLSAgICAyODUwLCA4MDg0LCAwLCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCAxMTk4NDEsIDQyMDcyLCAKLSAgICAxMTk4NDMsIDExOTg0MiwgMTAzOTgsIDAsIDAsIDgzNzcsIDEyNzExNiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAKLSAgICAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDExOTg1NiwgMjkyLCAxMzAwMiwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAotICAgIDkyNDYzLCA0NjEyLCAxMTk4NTEsIDExOTg1MCwgNzI1MywgMTI3MTEwLCA2ODM5MSwgMCwgMTA3ODIsIDM2MzcsIDEyOTk2LCAKLSAgICA0MzU0MiwgMCwgNjQ1NzgsIDAsIDMyMjgsIDY5NjM2LCA4NzgzLCAwLCAxMTk2MTQsIDI3MzEsIDAsIDAsIDc4NTg1LCAKLSAgICA0MTAyLCA3Njk2LCA3Mzg3OCwgMCwgMCwgNzg1ODYsIDQzMzE2LCA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIDAsIAotICAgIDY0NTAwLCA0MzY3NCwgMCwgNjQ5NDcsIDE4NTYsIDAsIDAsIDYzNzksIDAsIDAsIDAsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMCwgCi0gICAgMCwgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMCwgMCwgMjAzMywgNzg1NzcsIDc4NTc2LCAxOTUwMjYsIDU1MjU0LCA3NzQwLCAKLSAgICAwLCAwLCAwLCA3Mzk2NCwgMCwgMCwgNjc2MTIsIDY1Njc0LCAwLCAwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAKLSAgICAxMTc5MCwgNzQwMTksIDAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAwLCA1MzI2LCAwLCAxMjA2MDUsIDcyMzAsIAotICAgIDgyNTcsIDAsIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgMCwgNzYyOCwgNjUwOTIsIDczOTAzLCAKLSAgICA2NjcyMSwgMTEzNDIsIDEyODU2MSwgMCwgMCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgCi0gICAgMCwgMCwgMTE5NDYsIDAsIDMyNTcsIDAsIDEyMzA3LCAxODQ1LCAwLCA0MzUyNiwgMCwgMCwgMTg4NiwgNDIzNDIsIDEwMDg5LCAKLSAgICA4NzAsIDc2NDgsIDM0OTksIDg2MDksIDc2NTIsIDg3NiwgODcxLCA4NzcsIDAsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIAotICAgIDQ1NjMsIDAsIDAsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgMCwgODY4LCA4NzMsIDc2NDIsIDAsIDg2OSwgODc0LCAKLSAgICA3NjQ0LCAwLCA4NzUsIDc5MCwgMTI4MzAzLCAwLCAwLCAwLCA2NjE4MiwgMCwgNTQyOSwgMCwgNjYxODAsIDAsIDY2MTgxLCAKLSAgICA2ODQ1MiwgMCwgMCwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAxOTQ2MjIsIDE1NDcsIDY2MTc2LCA0MjAxMiwgCi0gICAgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAwLCA2NzYzNywgMCwgOTY3OSwgNzQxMjIsIDAsIAotICAgIDAsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAwLCAxODUxLCAwLCAxMjcxODksIAotICAgIDExOTA4LCAwLCA5MzYwLCAxMTg4OTcsIDAsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDkyNzE0LCAwLCAKLSAgICA5MjMyMSwgNDMzMTgsIDAsIDg4MDksIDExOTk3NCwgMCwgMCwgMTIwNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCA3NDI3LCAKLSAgICA5OTU4LCA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDAsIDI0MzMsIDAsIDExOTYyMiwgMzM1MiwgNzQzNjMsIDAsIDAsIDc5MywgCi0gICAgNzQ0MDQsIDAsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAxMjg1MTksIDgyMDgsIDAsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDAsIAotICAgIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCA5MTc2MjIsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgOTE3NjE4LCAxMjA1OTQsIAotICAgIDc0MDg2LCA5MTc2MTUsIDkxNzYxNCwgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAKLSAgICAxMjU0LCA5MTc2MDUsIDkxNzYwNCwgOTE3NjAzLCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMCwgMCwgMjg0MCwgMCwgCi0gICAgMTE5OTgyLCAwLCAwLCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDAsIDAsIDEyOTkxLCAwLCAyNjUxLCAxMjg1MjgsIDAsIAotICAgIDkxNzYxMSwgMTI3MDI2LCAxMjg4ODMsIDAsIDAsIDQzNjQ4LCAxMjA4MTIsIDAsIDQzMzIyLCA5MjY2MiwgMCwgMCwgCi0gICAgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgMTI4Nzc5LCAxMjc4MjEsIAotICAgIDExOTk4OCwgNjU2MTAsIDIzOTEsIDAsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIAotICAgIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgMCwgMTI4MjY2LCAKLSAgICA2NDc0OSwgNjc4NTAsIDIxMDcsIDAsIDAsIDQ2MDUsIDEyODE3NCwgMCwgNDMzNzIsIDY1OTQ1LCAxMjg4MzgsIDAsIAotICAgIDExOTU5MCwgMCwgMCwgMCwgOTg3LCA2OTI3LCAxMTU3MiwgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCAwLCAKLSAgICAxMjgyOTcsIDAsIDAsIDAsIDAsIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgCi0gICAgNDYyNywgMCwgNTIwOCwgMCwgMTI4ODQyLCAxMDMzMiwgNTIxOCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIAotICAgIDczODk0LCAxMjg4NTIsIDU0MzIsIDY0OTY1LCA1NTI3LCA3NDAzMywgMTA1MTYsIDc3OTAsIDU1MjgsIDAsIDQyMTQwLCAKLSAgICAxMjAyODEsIDAsIDAsIDQzNTQ1LCA5ODg3LCAwLCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIDEyMDI3OCwgCi0gICAgNzg4NCwgMCwgMTI4NTY2LCA5MTc5ODksIDEyODY2NiwgMjExLCAyNTA5LCAwLCAxMjA1NzMsIDY4NjcyLCAzMjIwLCAKLSAgICA0MjIzNSwgMCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIDU4NTIsIDAsIAotICAgIDAsIDEyNzI1OSwgMTcwOCwgMCwgMCwgMjYyMywgMTE5NDMsIDAsIDY5MjI2LCAwLCA0Njk4LCA2NjUwOSwgMTA2NiwgCi0gICAgMTE5OTIxLCA0NzAxLCAwLCAxMjAyODUsIDc0MjI1LCAxMTkxMTQsIDgyNjcsIDAsIDEyNzI2NSwgMCwgNzUxNiwgMCwgCi0gICAgMjYyNSwgMCwgODAzNCwgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAKLSAgICAxMjY2MCwgMCwgMCwgMCwgNzQ4NTAsIDQxMDY5LCAwLCAxMjgxNTYsIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCAKLSAgICA3OTkwLCAwLCAzOTkwLCAwLCAwLCA2NjM2OCwgNTAxNywgNjQ5NTYsIDcwNzEsIDAsIDExOTE0NCwgMTAzMCwgMTE4ODAwLCAKLSAgICAwLCA5NTEzLCA0MTA1OSwgOTM1NywgMCwgMTc3MywgMCwgMTIwMzUwLCAwLCA2MzM5LCA3NzQ1LCA5ODQ0LCAwLCA2NDY1MCwgCi0gICAgOTQsIDE4ODAsIDc0NzY2LCAwLCA4OTA4LCAwLCAxMjg3MDcsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCAwLCAwLCAKLSAgICA0MTMwNywgODczMiwgMTIwMzM4LCAwLCAxNzU3LCA2OTY0LCA0Njk2LCAwLCAwLCA2NDc4NSwgNzM5NCwgMzY0MSwgNTQxOSwgCi0gICAgMTI4MDU1LCAwLCAxMjc4ODMsIDAsIDEyMDM0NCwgNDM5ODgsIDAsIDg2MTAsIDQzMDYyLCA3NTkyLCA4NTYsIDc0Mjk5LCAKLSAgICA5MzYsIDEzMjg5LCAxMjc1MjEsIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAxNTA0LCAxMTkxMDgsIAotICAgIDAsIDEyOTEzLCA3NDIwNiwgNzUyOSwgMCwgMCwgMCwgMTIwNzgyLCA0MTEzLCAwLCAyMzcyLCAzMzYsIDAsIDc1MDksIAotICAgIDEyMTUyLCAwLCA2ODIsIDY2NDU4LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAwLCAwLCA4MDMzLCAwLCAwLCAKLSAgICA5ODEwLCAxMjcyNjksIDAsIDEyOTcwLCAwLCA0MjM1MSwgMTAxMDksIDAsIDAsIDE5NDY5MywgMCwgMTE5MjQ3LCAwLCAwLCAKLSAgICA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDAsIAotICAgIDAsIDc0MjM5LCA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCAwLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMCwgCi0gICAgMTA0OTgsIDIwODMsIDc3ODg4LCAwLCAwLCAxMTkyMzYsIDYzNCwgMCwgMCwgMCwgNjk3NzksIDQxNjUsIDg3NDYsIDAsIAotICAgIDk2NTQsIDEyODU2LCA2OTI0LCAwLCA3MDY2LCAwLCAwLCAxMjgxMzUsIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIAotICAgIDQxMDM5LCAwLCAwLCA2ODAsIDYyNzQsIDEyODIwMCwgMTE4MSwgNzA1NiwgMzE3NCwgMCwgMCwgOTI2NjgsIDY1NjY1LCAKLSAgICAxMjczNzUsIDAsIDY5MjAsIDAsIDkyMjk1LCAwLCAxMTg5NjUsIDAsIDY0NjQ0LCAxMjY5ODEsIDAsIDAsIDQxMDI4LCAwLCAKLSAgICA2MjMxLCAyNjEzLCA2NTMwMiwgNDA5ODksIDAsIDE5NDY5NiwgMCwgNDI3NjAsIDAsIDAsIDAsIDQwOTg3LCA0NjY3LCAwLCAKLSAgICAwLCA4ODI4LCAwLCAwLCAxMjQ2LCA0NzQ2LCAwLCAwLCAxMTAyMSwgNDc0OSwgOTI2NzUsIDAsIDkyMSwgNDc0NCwgMCwgCi0gICAgMTI3MDIsIDI0MiwgMCwgMTU2NiwgODIxNywgMCwgNjQ2NTMsIDc4Mzg2LCAxMjgxMjEsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIAotICAgIDUzMTMsIDk1MSwgMCwgMCwgMCwgNzYwNCwgMCwgNDAwOSwgMTI3ODE2LCAwLCAxMjA1NjIsIDAsIDAsIDY0ODYwLCAKLSAgICAxMTkxMzgsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCAwLCAwLCAxMjA1OTYsIDE2NDYsIDc3ODkwLCA2NDUzNCwgNzM5OTUsIAotICAgIDEyMDcwNSwgMCwgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIAotICAgIDI5NzUsIDc0NDQyLCA5ODIyLCAwLCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIDkxNzU2MiwgMCwgMzM5OSwgCi0gICAgOTg1MSwgMCwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDAsIDAsIDAsIDAsIDAsIDAsIDE3NzcsIDkxNTEsIAotICAgIDExMzcsIDY5NzY3LCA3NDksIDQyMzY2LCAwLCA1Mzg1LCAxMjg1NzQsIDEyODIxOCwgMCwgMCwgNTk4OSwgMCwgMCwgCi0gICAgMTI4MDkxLCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAwLCA1MTksIDAsIDExNzQwLCA1NzY2LCAwLCAwLCAKLSAgICAyNjAwLCA4ODQ4LCAxMjAxMzgsIDQxMjk3LCAwLCAzNjY2LCA3NDQ3MywgNDEzMDAsIDc0NDY4LCA2NTE2MCwgMCwgNjk2ODgsIAotICAgIDY5NzcxLCA3NDQ3OSwgMCwgNjU1OCwgMCwgMCwgNjk3NjUsIDEyMDc1MCwgMjUyLCAwLCA0MTMwMiwgMCwgMCwgMCwgCi0gICAgNjk3NjMsIDAsIDExNzI5LCA4NzE5LCA5MDYwLCAwLCAxMjAxMzksIDEwNzYxLCAwLCAwLCAwLCAxMTg3OTIsIDExNzM0LCAwLCAKLSAgICAxMTczMCwgMCwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDAsIDAsIDc3NjQsIDAsIAotICAgIDExMDk0LCAxMjA4MjUsIDAsIDAsIDQyODIsIDgyOTgsIDAsIDAsIDAsIDAsIDAsIDY0NDQ5LCAwLCAxMjc1MDksIDYzODU0LCAKLSAgICA4NDU2LCAwLCA3NDc4MywgNjU2NzAsIDAsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMCwgMCwgMCwgMCwgCi0gICAgMTIwNzY0LCAwLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDAsIDAsIDM2NDcsIDAsIDI2MDIsIDEyODM0MSwgMCwgCi0gICAgMTk0NzA3LCA0MTEzNSwgMCwgMCwgMCwgNjQ2MzEsIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAKLSAgICAwLCA5MjE5MywgNzU5NywgMTA1MjgsIDAsIDAsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDAsIDQzMzY2LCA0MzM2MywgCi0gICAgOTA2MiwgMTE5MjUyLCAwLCAwLCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIDAsIDAsIDE5NDcxMiwgMTA5MDAsIDQxNTMxLCAKLSAgICAxMjYzLCAzNzIwLCAxMjA0OCwgMCwgNjQyOTIsIDQxNTI0LCA3MjI3LCAxMTk2MzUsIDYwOTksIDQxNTM0LCAwLCAxMjczNTQsIAotICAgIDEyNzM0NSwgMjk5LCAwLCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCA5MjU2NCwgMzA3NSwgCi0gICAgNjc4NjcsIDEyNzM1MiwgMCwgNjYzNjIsIDAsIDY0MzUzLCAwLCAwLCA1ODQ1LCAwLCAwLCAwLCAyNTgxLCA4MjAwLCAKLSAgICA2NTExNCwgNjg0NjAsIDAsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDAsIDYzNDAsIDExODg1NSwgMCwgNzgxMzQsIDg2ODAsIAotICAgIDcyMDQsIDAsIDI1ODgsIDI5MTQsIDcwMTEsIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgCisgICAgNzQyNzAsIDEyODI4OSwgMCwgMCwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCAxMjc5MDUsIDg0NjYsIAorICAgIDk4MzU3NSwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDAsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMCwgCisgICAgNjQ2MzQsIDEyODI3OSwgMCwgMTE2MTIsIDAsIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgMTE2MDksIDY2MzEzLCAwLCAwLCAKKyAgICA1Mjg2LCAxMTkyOTcsIDAsIDAsIDY0OTI1LCAxMjAyODMsIDE5NDU4NCwgMTE4OTgyLCAxOTQ1ODMsIDc3MDUsIDExOTQyLCAKKyAgICAxMTMwNSwgMTk0NTgxLCAzMzA5LCAwLCAwLCAwLCAwLCA2ODAyLCAwLCA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIAorICAgIDAsIDY2NjE1LCA0MjU2NSwgNDE2NTEsIDAsIDAsIDAsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDAsIDEyOTE0LCA0MTQ5MSwgCisgICAgNjYwMTAsIDExOTU1MiwgNjA3OCwgOTk1NCwgMCwgMTQ3NSwgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCAKKyAgICA0MTA2MiwgMCwgMCwgMzI1NiwgMTAxODksIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDkxNzkwNiwgODcyNywgMCwgNjU4NzUsIDAsIAorICAgIDAsIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgMCwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDcxMzUxLCAwLCAKKyAgICAzNjM1LCA2NDMzNywgOTgzMjczLCAwLCAwLCA3MTk1LCAwLCAyMDA3LCA2NDQzMSwgMCwgMCwgMCwgMCwgNjM1LCAwLCAwLCAKKyAgICA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgMCwgMCwgMTE5MjE4LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCAKKyAgICA0MTc2LCA3MDA1MCwgMjAzNCwgOTI1NTEsIDEyMDgwNSwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg4NjAsIAorICAgIDc4NTk2LCAwLCAzNjQ5LCAxMzE0OSwgNDIxNDUsIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDExODkyNywgNjc2NzcsIDEyMDEyNCwgCisgICAgNzg2NiwgMCwgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAKKyAgICAxNzYxLCAxMTgxMiwgNjUzNzksIDY4Mzg2LCAxMjgxODUsIDExNTksIDAsIDY5NzI5LCAwLCAwLCA3MTc4LCAxOTQ2MzIsIDAsIAorICAgIDQxNjgwLCAwLCAxMjgyMDMsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDAsIDY3ODc3LCAKKyAgICAxOTQ1NjcsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgMTA4MTgsIDEyNjY0NCwgCisgICAgOTk1MywgMCwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIDE1NTEsIAorICAgIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCAwLCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTk0NzY4LCAKKyAgICAwLCA2ODM2NCwgOTgzMjIyLCA0ODkxLCAwLCAxMDY0MSwgMCwgNzM3NDYsIDAsIDY4MzUyLCAwLCA3Mzc4NywgMTk0ODI5LCAKKyAgICAxOTQ2MzMsIDcxOTksIDY0OTU1LCAwLCAwLCAwLCAwLCAwLCA0MjY4NSwgNDI2NzksIDE5MywgMCwgMCwgMCwgNDI2NjcsIDAsIAorICAgIDUyNzEsIDkyMzE4LCA5MjUxNywgMTE4ODgyLCAxMzYyLCAxMzI5NywgMCwgMTI4MDk0LCAwLCA5ODMzMjMsIDczNzg5LCAwLCAKKyAgICA2NjU4LCA0NDI2LCAwLCA5MjYyOCwgOTgzODMzLCA5MjMxOSwgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDAsIDk4MzMyMiwgCisgICAgMjQxNiwgMzMxMCwgNDI3MDMsIDAsIDM3OSwgMCwgNDM3NTUsIDAsIDAsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIAorICAgIDQ1NDksIDAsIDAsIDk4MzE1NCwgMTI3NzYzLCAxMDgwNywgOTU1OCwgMTk0NjEzLCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCisgICAgNjUzMDgsIDMyOTQsIDk4MzMyNCwgODUyOSwgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDAsIDkyNDU4LCAKKyAgICA3Mzc1NywgNjY0NTYsIDQyMzU5LCAwLCAyMDMxLCAwLCA3MjAyLCAwLCAxMjY3NiwgNDI3MjksIDkyMTk4LCAzMjE1LCAwLCAKKyAgICA3NzEwLCAxNjEwLCA3MzgwMSwgMCwgMCwgNjU2ODIsIDAsIDEyMDUzNywgNjU5MjQsIDk5NzQsIDIyOCwgNjYzNTQsIDE1MDEsIAorICAgIDAsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAwLCA2NTc5NCwgMTcyNSwgNjU1MzMsIDgxOTYsIDc0NzYsIDc0Mzk5LCAwLCAKKyAgICAwLCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCA3NDgzLCAwLCAwLCA4MTA0LCAwLCA3NDc0LCA3Nzk3OSwgMCwgMTI2NTA3LCAKKyAgICAxMDQxNCwgMTMwMDEsIDgxNDEsIDAsIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAKKyAgICAyNTQ1LCA3MDA1MiwgMTI3MTY2LCAwLCA3NDE5MCwgMCwgMCwgOTgzNzc3LCA0Mjc2MiwgMCwgNDI5MTQsIDE2NTAsIDI2MiwgCisgICAgMTYzNywgMCwgNzkwMSwgMzIzOCwgMTI4MTczLCA0MTg2MSwgMCwgMTI4NTg1LCA2NTE1OCwgMTA4NjAsIDk0MDU5LCAKKyAgICA0MzY1OCwgNzUyNywgMCwgNDMzMTksIDY0MTksIDAsIDQ1LCAwLCA2NDU4OCwgOTM5ODksIDAsIDExOTgxMCwgNzE5NCwgCisgICAgNTI5MSwgMCwgNDM2NjYsIDEzMTI5LCAwLCA5MDg0LCAwLCA4NzM3LCAwLCAxMjg4MSwgMCwgMTI5MDYsIDk2MzksIDc5MTIsIAorICAgIDI2MjAsIDAsIDAsIDAsIDk4Mzg2NiwgMTc5LCA2NTg5NiwgMCwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDk4Mzg4MSwgCisgICAgMTE4OTk2LCAxMTkwMDksIDI4NTAsIDgwODQsIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCAKKyAgICA3NDc1NCwgMTE5ODQxLCA0MjA3MiwgMTE5ODQzLCAxMTk4NDIsIDEwMzk4LCA5ODMwNTYsIDAsIDgzNzcsIDEyNzExNiwgCisgICAgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDExOTg1NiwgMjkyLCAxMzAwMiwgCisgICAgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIDkyNDYzLCA0NjEyLCAxMTk4NTEsIDExOTg1MCwgNzI1MywgMTI3MTEwLCAKKyAgICA2ODM5MSwgMCwgMTA3ODIsIDM2MzcsIDEyOTk2LCA0MzU0MiwgMCwgNjQ1NzgsIDk4MzY2NiwgMzIyOCwgNjk2MzYsIDg3ODMsIAorICAgIDAsIDExOTYxNCwgMjczMSwgMCwgMCwgNzg1ODUsIDQxMDIsIDc2OTYsIDczODc4LCAwLCAwLCA3ODU4NiwgNDMzMTYsIAorICAgIDQxNzcsIDExMjgzLCA5MDg5LCAwLCA3Mzk5NiwgOTgzMTczLCA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAwLCAwLCAKKyAgICA2Mzc5LCAwLCAwLCAwLCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDEyNzM4MCwgOTgzOTIyLCA5MjM4OSwgNzQwNzIsIDU1MjY5LCAKKyAgICAwLCAwLCA5ODM2NzQsIDIwMzMsIDc4NTc3LCA3ODU3NiwgMTk1MDI2LCA1NTI1NCwgNzc0MCwgMCwgMCwgMCwgNzM5NjQsIDAsIAorICAgIDkzOTg4LCA2NzYxMiwgNjU2NzQsIDEyODI0NCwgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCAKKyAgICA3NDAxOSwgMCwgMTI4MDY2LCAxMjgwMzEsIDg1NjEsIDQ1NzMsIDAsIDUzMjYsIDAsIDEyMDYwNSwgNzIzMCwgODI1NywgMCwgCisgICAgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCAwLCA3NjI4LCA2NTA5MiwgNzM5MDMsIDY2NzIxLCAKKyAgICAxMTM0MiwgMTI4NTYxLCAwLCAwLCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgOTY3LCA5ODM5NDIsIAorICAgIDEyNjQ2OSwgMTE5NDYsIDAsIDMyNTcsIDAsIDEyMzA3LCAxODQ1LCA5ODMxNTcsIDQzNTI2LCAwLCAwLCAxODg2LCA0MjM0MiwgCisgICAgMTAwODksIDg3MCwgNzY0OCwgMzQ5OSwgODYwOSwgNzY1MiwgODc2LCA4NzEsIDg3NywgMCwgODc4LCA0MjAxNSwgODc5LCAKKyAgICA0MzY5MiwgNDU2MywgMCwgMCwgNzU5MSwgNjU4ODcsIDg2NywgOTUyMCwgODcyLCAxMjY2MDcsIDg2OCwgODczLCA3NjQyLCAKKyAgICAwLCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIDc5MCwgMTI4MzAzLCAwLCAwLCAwLCA2NjE4MiwgOTgzMjUwLCAKKyAgICA1NDI5LCAxOTUwNTUsIDY2MTgwLCAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjgxLCA5ODMyNDIsIDQyMDY3LCAwLCAKKyAgICA1NDMzLCAxMDY1NywgNzkxMSwgMTk0NjIyLCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgCisgICAgNTMxNywgNTQyMywgNDYxMSwgMCwgNjc2MzcsIDAsIDk2NzksIDc0MTIyLCAwLCAwLCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIAorICAgIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMCwgMTg1MSwgMCwgMTI3MTg5LCAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAKKyAgICA5ODMyNzAsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDkyNzE0LCAwLCA5MjMyMSwgNDMzMTgsIDAsIDg4MDksIAorICAgIDY5ODgxLCAwLCA5ODMxNDIsIDEyMDYwNCwgOTgzMDUyLCA5ODM4NzMsIDAsIDk4MzI2MiwgMCwgMCwgNzQyNywgOTk1OCwgCisgICAgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxOTQ5NjgsIDI0MzMsIDAsIDExOTYyMiwgMzM1MiwgNzQzNjMsIDk4Mzg3NiwgMCwgCisgICAgNzkzLCA3NDQwNCwgMCwgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIDEyODUxOSwgODIwOCwgMCwgNDE2OTUsIDE2NDcsIAorICAgIDExODg3NywgMCwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIDE5NDYyOCwgOTE3NjIxLCA0MTM3NiwgMTE5OTc4LCAKKyAgICAxMjY1NzYsIDEyMDU5NCwgNzQwODYsIDkxNzYxNSwgOTE3NjE0LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgMTM3MiwgCisgICAgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDkxNzYwNSwgOTE3NjA0LCA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIAorICAgIDEyNjYxMiwgMCwgMjg0MCwgMCwgMTE5OTgyLCA5ODM5MzAsIDAsIDMyNDUsIDkwNjgsIDY4MTk0LCA2NDcyNSwgMCwgMCwgCisgICAgMTI5OTEsIDAsIDI2NTEsIDY4MDE2LCA5ODMyNTcsIDkxNzYxMSwgMTI3MDI2LCAxMjg4ODMsIDAsIDAsIDQzNjQ4LCAKKyAgICAxMjA4MTIsIDAsIDQzMzIyLCA5MjY2MiwgMCwgMCwgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgCisgICAgNzQ1MiwgMzI4NSwgMTI4Nzc5LCAxMjc4MjEsIDExOTk4OCwgNjU2MTAsIDIzOTEsIDAsIDkyMjQ4LCA2NzEsIDI1MCwgCisgICAgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgCisgICAgNjI4LCAzOTA1LCA3MzgxMCwgMCwgMTI4MjY2LCA2NDc0OSwgNjc4NTAsIDIxMDcsIDAsIDAsIDQ2MDUsIDEyODE3NCwgCisgICAgOTgzMTkyLCA0MzM3MiwgNjU5NDUsIDEyODgzOCwgMCwgMTE5NTkwLCAwLCAwLCAwLCA5ODcsIDY5MjcsIDExNTcyLCAKKyAgICA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDAsIDEyODI5NywgMCwgMCwgMCwgMCwgMTEzMzQsIDQzMzI2LCAxMjYwOSwgCisgICAgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCA5ODM4ODMsIDUyMDgsIDAsIDEyODg0MiwgMTAzMzIsIDUyMTgsIAorICAgIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgCisgICAgNzQwMzMsIDEwNTE2LCA3NzkwLCA1NTI4LCAwLCA0MjE0MCwgMTIwMjgxLCAwLCAwLCA0MzU0NSwgOTg4NywgMCwgNDAwMCwgCisgICAgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIDc4ODQsIDAsIDEyODU2NiwgOTE3OTg5LCAxMjg2NjYsIAorICAgIDIxMSwgMjUwOSwgMTI4ODU4LCAxMjA1NzMsIDY4NjcyLCAzMjIwLCA0MjIzNSwgMCwgMTA2OTAsIDg5NTEsIDUyMTQsIAorICAgIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIDU4NTIsIDAsIDAsIDEyNzI1OSwgMTcwOCwgMCwgOTgzMTY1LCAKKyAgICAyNjIzLCAxMTk0MywgMCwgNjkyMjYsIDAsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg2NywgCisgICAgMTIwMjg1LCA3NDIyNSwgOTQxMTEsIDgyNjcsIDAsIDEyNzI2NSwgMCwgNzUxNiwgMCwgMjYyNSwgOTgzOTY4LCA4MDM0LCAKKyAgICA3NDMwOSwgMCwgMzYzMSwgMTA5NTUsIDc4NTAsIDEyMDI5MywgODQxNiwgMCwgMCwgMCwgNDMzODQsIDEyNjYwLCAwLCAwLCAKKyAgICAwLCA3NDg1MCwgNDEwNjksIDAsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDAsIDM5OTAsIAorICAgIDAsIDk4MzI1NCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCAxMTkxNDQsIDEwMzAsIDExODgwMCwgOTgzMTIwLCAKKyAgICA5NTEzLCA0MTA1OSwgOTM1NywgMCwgMTc3MywgMCwgMTIwMzUwLCAwLCA2MzM5LCA3NzQ1LCA5ODQ0LCAwLCA2NDY1MCwgOTQsIAorICAgIDE4ODAsIDc0NzY2LCA5ODM4MjksIDg5MDgsIDAsIDEyODcwNywgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDAsIAorICAgIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzOCwgMCwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMTIwMzM1LCA2NDc4NSwgNzM5NCwgCisgICAgMzY0MSwgNTQxOSwgMTI4MDU1LCAwLCAxMjc4ODMsIDAsIDEyMDM0NCwgNDM5ODgsIDAsIDg2MTAsIDQzMDYyLCA3NTkyLCAKKyAgICA4NTYsIDc0Mjk5LCA5MzYsIDEzMjg5LCA2OTg5NCwgNDMxNzEsIDE0NTksIDAsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDAsIAorICAgIDE1MDQsIDcwMDY0LCAwLCAxMjkxMywgNzQyMDYsIDc1MjksIDAsIDEyODY5OSwgOTgzOTQ4LCAxMjA3ODIsIDQxMTMsIDAsIAorICAgIDIzNzIsIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDAsIDY4MiwgNjY0NTgsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIAorICAgIDAsIDk4Mzk0NiwgODAzMywgNjk5NTMsIDAsIDk4MTAsIDEyNzI2OSwgMCwgMTI5NzAsIDAsIDQyMzUxLCAxMDEwOSwgCisgICAgOTE3NjIzLCAwLCAxOTQ2OTMsIDAsIDkyNjkwLCAwLCAwLCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAwLCAKKyAgICAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDAsIDAsIDc0MjM5LCA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAKKyAgICAyMDkwLCAwLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMCwgMTA0OTgsIDIwODMsIDc3ODg4LCAwLCAwLCAxMTkyMzYsIAorICAgIDYzNCwgMCwgMCwgMCwgNjk3NzksIDQxNjUsIDg3NDYsIDAsIDk2NTQsIDEyODU2LCA2OTI0LCAwLCA3MDY2LCA5ODM3MTAsIAorICAgIDAsIDEyODEzNSwgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgNDEwMzksIDEyNzQ4MywgMCwgNjgwLCAyMzAyLCAKKyAgICAxMjgyMDAsIDExODEsIDcwNTYsIDMxNzQsIDEyNjUxNiwgMCwgOTI2NjgsIDY1NjY1LCAxMjczNzUsIDEyNjUwNiwgNjkyMCwgCisgICAgMCwgOTIyOTUsIDAsIDExODk2NSwgMCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDAsIDQxMDI4LCAwLCA2MjMxLCAyNjEzLCAKKyAgICA2NTMwMiwgNDA5ODksIDAsIDE5NDY5NiwgMCwgNDI3NjAsIDAsIDk4MzU2NiwgMCwgNDA5ODcsIDQ2NjcsIDAsIDk4MzkyMywgCisgICAgODgyOCwgMCwgMCwgMTI0NiwgNDc0NiwgMCwgMCwgMTEwMjEsIDQ3NDksIDkyNjc1LCAwLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAKKyAgICAyNDIsIDAsIDE1NjYsIDgyMTcsIDAsIDY0NjUzLCA3ODM4NiwgMTI4MTIxLCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCAKKyAgICA5NTEsIDAsIDAsIDk4Mzg1OCwgNzYwNCwgOTgzMjgyLCA0MDA5LCAxMjc4MTYsIDk4MzcwMSwgMTIwNTYyLCAwLCA5ODM3MTEsIAorICAgIDY0ODYwLCAxMTkxMzgsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDAsIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgCisgICAgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIDAsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgCisgICAgMzQ0MSwgMTE5ODk0LCAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTI2LCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIAorICAgIDkxNzU2MiwgMTk0NjEwLCAzMzk5LCA5ODUxLCA5ODM3MDgsIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAwLCAwLCAKKyAgICAwLCA3MTM2NywgMCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjk3NjcsIDc0OSwgNDIzNjYsIDAsIDUzODUsIDEyODU3NCwgCisgICAgMTI4MjE4LCAwLCAwLCA1OTg5LCAwLCAwLCAxMjgwOTEsIDAsIDQxNjg1LCA2OTIyMywgMCwgOTc2OSwgNDE2ODQsIAorICAgIDk4MzIxNCwgNTE5LCAwLCAxMTc0MCwgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgMTIwMTM4LCA0MTI5NywgMCwgMzY2NiwgCisgICAgNzQ0NzMsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDAsIDAsIDY5NzY1LCAKKyAgICAxMjA3NTAsIDI1MiwgMCwgNDEzMDIsIDAsIDAsIDAsIDY5NzYzLCAwLCAxMTcyOSwgODcxOSwgOTA2MCwgMCwgMTIwMTM5LCAKKyAgICAxMDc2MSwgMCwgMCwgMCwgMTE4NzkyLCAxMTczNCwgOTgzMjIxLCAxMTczMCwgMCwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIAorICAgIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDAsIDAsIDc3NjQsIDk4MzcwNSwgMTEwOTQsIDEyMDgyNSwgMCwgMCwgNDI4MiwgCisgICAgODI5OCwgMCwgMCwgMCwgMCwgMCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDAsIDc0NzgzLCA2NTY3MCwgMCwgCisgICAgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAwLCAwLCAwLCAwLCAxMjA3NjQsIDAsIDEwMDE5LCA3NDc2MiwgMCwgCisgICAgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcwMywgMzY0NywgMCwgMjYwMiwgMTI4MzQxLCAwLCAxOTQ3MDcsIDQxMTM1LCAwLCAwLCAKKyAgICAwLCA2NDYzMSwgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgOTIxOTMsIDc1OTcsIAorICAgIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgMCwgCisgICAgMCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCAwLCAwLCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIAorICAgIDAsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgCisgICAgOTE3OTU3LCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCA5MjU2NCwgMzA3NSwgNjc4NjcsIAorICAgIDEyNzM1MiwgMCwgNjYzNjIsIDAsIDY0MzUzLCAwLCAwLCA1ODQ1LCAwLCAwLCAwLCAyNTgxLCA4MjAwLCA2NTExNCwgCisgICAgNjg0NjAsIDAsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDAsIDYzNDAsIDExODg1NSwgMCwgNzgxMzQsIDg2ODAsIDcyMDQsIAorICAgIDcwMDY1LCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIAogICAgIDczNzc0LCAxMDkxMywgMCwgMCwgODY2NiwgNjc1LCA0MjQ5MywgMCwgNDM1NzEsIDAsIDYyMTksIDAsIDk5ODAsIDQxMjMyLCAKLSAgICAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDEyNzM2OSwgMCwgMTI3MTEsIDMxODEsIDY2MjEyLCAKLSAgICA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCAwLCAwLCAwLCAwLCA0MjM0NywgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCAKLSAgICAwLCAwLCA2NDY3NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCAwLCAKLSAgICA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgMTE5MzIsIAotICAgIDczNzI4LCAzMjE0LCAxMjA0NjEsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgNzg3MjcsIAotICAgIDEyNzMyNiwgMTIwNDYwLCA3NDI1LCAzMjA1LCAwLCA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgNzg3MzMsIDY1NDU5LCAKLSAgICAyNjA2LCA3ODczMCwgNzM4OTcsIDAsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCAwLCAwLCAwLCAxMjA3MzcsIDAsIAotICAgIDAsIDAsIDM3OCwgMjYxMCwgMCwgNjUwNzksIDAsIDY1Njk1LCAwLCAzNywgNzA2OCwgMCwgMTIwNDgwLCAxMjA0NzksIAotICAgIDMyMDksIDEyMDQ3NywgMCwgMTA2MzgsIDk3NjgsIDEyMDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNjU1MTAsIDAsIDAsIAotICAgIDUyMzMsIDAsIDY0NzkyLCAwLCAwLCAwLCAwLCA3MDYwLCA5ODQ3LCAxMjAxNDQsIDE2ODUsIDU5NSwgMCwgNzM5NzEsIAotICAgIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAwLCA2NTQxLCAwLCAwLCAwLCAzMjQzLCA5MDE0LCAKLSAgICA1NjA2LCAwLCA1MzgsIDY0NjIwLCA1NjAyLCA4NDY3LCA3NDM5MSwgNjU0NywgMCwgODIwMywgNzg0ODgsIDAsIDg0NTgsIAotICAgIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDAsIDgxOTMsIDU1Mjc5LCAKLSAgICA5NzMwLCA5MjgwLCAwLCA3MDY1LCA3NDE1NSwgNDM0NiwgMCwgNzM3OTgsIDUwNCwgMCwgOTI0MTQsIDg5ODIsIDAsIDAsIDAsIAotICAgIDc4MiwgMCwgMTA4ODMsIDAsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjcyNTMsIDE1NDgsIDY4NjUwLCAwLCAxODMyLCA1NjA0LCAKLSAgICA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCAwLCAxMTc4NywgMzc0NSwgMCwgMCwgNDI4ODgsIDY1NzEyLCAwLCAzODY5LCAKLSAgICAxMTkzNywgNTcyNSwgMTI3NTM5LCAxNzgzLCA2ODY0OCwgNTcyOCwgMCwgMCwgMCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAwLCAKLSAgICA1NzI3LCA3ODUyMSwgMCwgMCwgNzY0LCAwLCAxMjgxMTYsIDQzNTMxLCAwLCA5MDMzLCAwLCA0MjUzMiwgNjIyMywgMTEwNDIsIAotICAgIDEyMDc0OSwgMTE0MjMsIDAsIDExOTg2MSwgMCwgNDM0NjUsIDAsIDEyODI2NywgNjU1OSwgNjQ1NTcsIDAsIDAsIDEyMDY0OCwgCi0gICAgNDMwMTksIDQzNDc3LCAxMDIzOCwgMCwgMCwgNDMzNzcsIDkyMjgyLCAwLCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgCi0gICAgNjQ3NDAsIDAsIDc3MzksIDc0NTQzLCAwLCAwLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMCwgMCwgNDExNDQsIDAsIDkyNDM4LCAKLSAgICA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgMCwgMCwgODgyMCwgMzk0NywgMCwgMCwgMTE1MTUsIDUyNiwgMCwgCi0gICAgNDEyOTUsIDE5NDYwMywgOTE3Nzg1LCAxOTQ5MzIsIDAsIDc2ODgsIDkxNzc4NiwgNzY4NiwgODI4OCwgMTE4MTUsIDAsIDAsIAotICAgIDAsIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgNDIyODEsIDkxNzc4OCwgNzQwMjQsIDEyMjkzLCAwLCA2NDM1NywgCi0gICAgMTE3OTQsIDQyMDgyLCAwLCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgMCwgOTMzNSwgMTI4NTAsIDExOTg3MCwgCi0gICAgNjU1MywgNzA1NSwgMCwgODI3NywgMCwgMCwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDAsIDAsIDEyOTkwLCAxMTYwLCA0MjA4NCwgCi0gICAgMTE5NjUwLCA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAwLCAwLCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgMCwgCi0gICAgNDEyMTYsIDc4NDQsIDI2MTYsIDExOTE5MCwgNjg0NjEsIDY1MjM0LCAwLCAxMzA3NiwgMzEzNSwgMCwgNzgxNDMsIAotICAgIDExOTEzOSwgMzE0MiwgOTI0NTEsIDAsIDEwODE5LCAxMTk1ODAsIDEwMTgzLCAwLCAyNjA4LCAxNDcwLCA3Mzk2NywgMCwgCi0gICAgNjIyNywgMCwgMCwgNjk3NDEsIDAsIDYxNjMsIDAsIDAsIDEyNzMxNCwgMCwgMCwgODYwMywgMCwgMTE5ODY2LCAzMzA2LCAKLSAgICAxMDg3NiwgNDMzOTIsIDExOTU3MywgMTI3OTMxLCA1NzUxLCAwLCA2MjIyLCAwLCAwLCAxMjA4NiwgNzQwMywgMTYwMCwgCi0gICAgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAwLCAyNTcwLCA3MDIxLCAwLCAwLCAKLSAgICA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgMCwgMCwgMCwgNTAwMiwgMCwgNDEyODYsIDAsIDEyNzAxOSwgMCwgNDM1ODUsIAotICAgIDAsIDY1NTEsIDAsIDEyODIyOSwgMCwgNDEyODksIDAsIDE5NDYwMiwgMCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODc3OCwgCi0gICAgMTI4NjYxLCAwLCAwLCA0MTI3OSwgMCwgMCwgMCwgMTEwODEsIDQzNjE1LCAwLCAwLCAwLCAwLCAxMjcyNywgMCwgMCwgCi0gICAgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDAsIDE5NDU3MSwgMCwgCi0gICAgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIDI1OTYsIDQzNTg0LCAwLCAxMzExMywgCi0gICAgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA3NDA2NywgNjg2NzMsIDQxNTc0LCA3ODMzNywgMCwgNzQwNTgsIDYzNzYsIAotICAgIDAsIDAsIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDAsIDEyODIyMCwgMCwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgCi0gICAgNjUyOSwgNzA2MywgMCwgMzc1MSwgOTEyMCwgMCwgMCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgCi0gICAgMTI0MzAsIDgxMzcsIDAsIDkyNjQyLCAwLCAwLCAyNDUsIDEyODA5NywgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCAwLCA2MTM2LCAKLSAgICA5MTc2MDksIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCA5ODA0LCAwLCA0MzIsIDM1OTUsIDAsIDY1NDM3LCAKLSAgICAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgODc5NywgMCwgOTA1MiwgCi0gICAgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAwLCA2NDY0MCwgMCwgMTE5MTA0LCAwLCAKLSAgICA3NDEzNywgMCwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgOTI0ODAsIDAsIDI1NjYsIDExOTcxLCAwLCAwLCAxMDY1LCAwLCAwLCAKLSAgICA0MzQwMCwgMjU3NiwgNjY2OTYsIDAsIDAsIDQzNjA0LCAwLCAwLCA3NDA4MiwgNTE0LCA3NDUwMiwgMCwgMjkyMSwgNDMyMTUsIAotICAgIDY0NDkzLCA1NzcyLCAxMjk2OCwgMCwgMTk0OTQ0LCA3NDU4MCwgNDMzOTgsIDI1ODAsIDAsIDQxMzQxLCA0MTIyMywgNjU2NCwgCi0gICAgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDAsIDAsIDM3MzMsIDExMzQ2LCAwLCAxMjA1NCwgMCwgNzQwOTgsIDQyODI3LCAwLCAKLSAgICAxMzA5MSwgMCwgMCwgMCwgOTE3OTE1LCAwLCAxMjcwMjUsIDAsIDc0ODIxLCAwLCAwLCAxMTkwNDIsIDAsIDEyNzg2NSwgCi0gICAgMTMwOTAsIDY2NjQzLCAwLCAxMjcwLCAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCAwLCAKLSAgICA2NDc2MSwgMCwgNDEwMjEsIDg1MTAsIDQyNDMyLCAwLCAwLCAwLCAwLCA2NDQ5NiwgNzQxMDksIDAsIDk5MTUsIDAsIDAsIAotICAgIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCAwLCA3MDY3LCAKLSAgICA2ODIyMSwgMCwgMCwgMTI3MTcxLCAwLCAwLCAxMjc3OTcsIDkwMjksIDQzNTQzLCAxMTkzMTUsIDIzNTMsIDYzMDgsIDAsIAotICAgIDc0NzkyLCAyNjExLCAxMTkxODYsIDAsIDAsIDAsIDQzNjY0LCA5MjM5OSwgNjY2MjcsIDAsIDQ0ODQsIDg1MDksIDExODk3NiwgCi0gICAgNzgxMTYsIDY1MjMzLCAwLCA0MTIyNCwgNDEwMTcsIDAsIDM3NDcsIDEwNTIyLCAwLCAwLCAxNjkxLCA0MTIyNiwgMCwgCi0gICAgMTIxMDcsIDQ0MDAyLCAxMDkwNSwgNjUwMTAsIDE5NDk4NiwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgMCwgMCwgOTI2NDQsIAotICAgIDEzMTIxLCAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMCwgMCwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIAotICAgIDAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAxMTg3ODQsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDEyODAzOSwgCi0gICAgNzEyMywgMCwgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAKLSAgICAxMjgyNTgsIDAsIDAsIDAsIDEzMTIyLCAwLCAxOTEsIDc0MTE5LCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgCisgICAgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgMCwgMTI3MTEsIDMxODEsIDY2MjEyLCAKKyAgICA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCA5ODMzNzEsIDAsIDk4MzIyMCwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCAKKyAgICA3MjM0LCA3NDA0NywgOTgzMDg4LCAwLCA0Mzc0NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgCisgICAgNDM5ODMsIDc0NTA3LCA5ODMxMjYsIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIAorICAgIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIDEyMDQ2MSwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIAorICAgIDc4NzI5LCAxOTAxLCA3ODcyNywgMTI3MzI2LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIAorICAgIDc4NzM1LCA0MzM4MywgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDAsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgCisgICAgMTE5NjYxLCAwLCAwLCA5ODMzMTMsIDEyMDczNywgMCwgOTgzOTYyLCA5ODMzMTIsIDM3OCwgMjYxMCwgMCwgNjUwNzksIAorICAgIDk4MzMxNywgNjU2OTUsIDEyNjU1OSwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgMTIwNDc5LCAzMjA5LCAxMjA0NzcsIDAsIAorICAgIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA5ODMzOTEsIDAsIDAsIDAsIDAsIDY1NTEwLCAwLCAwLCA1MjMzLCAKKyAgICA5ODMzMjcsIDY0NzkyLCA5ODMzMjYsIDAsIDEyNjYzMywgMCwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIAorICAgIDczOTcxLCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgMCwgMCwgMCwgMzI0MywgCisgICAgOTAxNCwgNTYwNiwgMCwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgNzQzOTEsIDY1NDcsIDEyODEzMiwgODIwMywgNzg0ODgsIAorICAgIDk4MzA5MCwgODQ1OCwgNjUyMTEsIDg0OTUsIDExOTkwNCwgMCwgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgCisgICAgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAwLCA3MDY1LCA3NDE1NSwgNDM0NiwgMCwgNzM3OTgsIDUwNCwgMCwgCisgICAgOTI0MTQsIDg5ODIsIDAsIDAsIDAsIDc4MiwgMCwgMTA4ODMsIDAsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjcyNTMsIDE1NDgsIAorICAgIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgMCwgMTE3ODcsIDM3NDUsIDAsIAorICAgIDAsIDQyODg4LCA2NTcxMiwgOTgzMjk2LCAzODY5LCAxMTkzNywgNTcyNSwgMTI3NTM5LCAxNzgzLCA2ODY0OCwgNTcyOCwgMCwgCisgICAgMCwgMCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAwLCA1NzI3LCA3ODUyMSwgMCwgMCwgNzY0LCAwLCAxMjgxMTYsIDQzNTMxLCAwLCAKKyAgICA5MDMzLCAwLCA0MjUzMiwgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDAsIDExOTg2MSwgNzEzNDQsIDQzNDY1LCAwLCAKKyAgICAxMjgyNjcsIDY1NTksIDY0NTU3LCA3MTM0OCwgOTI2NDksIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDAsIAorICAgIDQzMzc3LCA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMCwgNzczOSwgNzQ1NDMsIDAsIAorICAgIDAsIDAsIDYxMzIsIDAsIDYzNzY1LCAwLCA3MDA1OCwgNDExNDQsIDAsIDkyNDM4LCA0MzUzNywgNjc2MSwgMTAwOTMsIAorICAgIDQzNjksIDkxNzc5MSwgMCwgOTgzMTQ4LCA4ODIwLCAzOTQ3LCAwLCAwLCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAKKyAgICAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAwLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCAwLCAwLCA5ODMzNzQsIAorICAgIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgNDIyODEsIDkxNzc4OCwgNzQwMjQsIDEyMjkzLCAwLCA2NDM1NywgMTE3OTQsIAorICAgIDQyMDgyLCAwLCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgMCwgOTMzNSwgMTI4NTAsIDExOTg3MCwgNjU1MywgNzA1NSwgCisgICAgMCwgODI3NywgMCwgMCwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDAsIDAsIDEyOTkwLCAxMTYwLCA0MjA4NCwgMTE5NjUwLCAKKyAgICA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAwLCAwLCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgOTgzMTcwLCAKKyAgICA0MTIxNiwgNzg0NCwgMjYxNiwgMTE5MTkwLCA2ODQ2MSwgNjUyMzQsIDk4MzI4NiwgMTMwNzYsIDMxMzUsIDk4MzI3OSwgCisgICAgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgMCwgMjYwOCwgMTQ3MCwgCisgICAgNzM5NjcsIDk0MDA4LCA2MjI3LCAwLCAxMjcxNzMsIDY5NzQxLCA5ODM1ODIsIDYxNjMsIDk4MzU1OCwgMCwgMTI3MzE0LCAwLCAKKyAgICAwLCA4NjAzLCAwLCAxMTk4NjYsIDMzMDYsIDEwODc2LCA0MzM5MiwgMTE5NTczLCAxMjc5MzEsIDU3NTEsIDAsIDYyMjIsIDAsIAorICAgIDAsIDEyMDg2LCA3NDAzLCAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDAsIAorICAgIDAsIDI1NzAsIDcwMjEsIDAsIDAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCAwLCAwLCA5ODMyMDksIDUwMDIsIDAsIAorICAgIDQxMjg2LCA2OTk0NiwgMTI3MDE5LCAwLCA0MzU4NSwgMCwgNjU1MSwgOTgzOTUzLCAxMjgyMjksIDAsIDQxMjg5LCAwLCAKKyAgICAxOTQ2MDIsIDAsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIDEyODY2MSwgMCwgOTgzMzY3LCA0MTI3OSwgMCwgMCwgCisgICAgMCwgMTEwODEsIDQzNjE1LCAwLCAwLCAwLCA5ODM2MTIsIDEyNzI3LCAwLCAwLCA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIAorICAgIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgNzgzMSwgOTgzODIwLCAxOTQ1NzEsIDAsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgCisgICAgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAyNTk2LCA0MzU4NCwgMCwgMTMxMTMsIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgCisgICAgOTA4NywgNzQwNjcsIDY4NjczLCA0MTU3NCwgNzgzMzcsIDAsIDc0MDU4LCA2Mzc2LCAwLCAwLCAwLCAwLCA5ODU0LCAKKyAgICAxMjc3NDgsIDY0Njk2LCAwLCAxMjgyMjAsIDAsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIDY1MjksIDcwNjMsIDk4MzE4MiwgCisgICAgMzc1MSwgOTEyMCwgOTgzNDc3LCAwLCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAxMjQzMCwgCisgICAgODEzNywgOTQwOTgsIDkyNjQyLCAwLCAwLCAyNDUsIDEyODA5NywgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgCisgICAgNjEzNiwgOTE3NjA5LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMTE4OTYzLCA0MzIsIDM1OTUsIAorICAgIDE5NDk0NSwgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgMCwgMCwgMTI4Mjc0LCAwLCAxMTk2NTgsIDAsIDAsIDAsIDc3ODk0LCAKKyAgICA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIDAsIDY0NjQwLCAKKyAgICAwLCA5NDEwOSwgMCwgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCA5MjQ4MCwgMCwgMjU2NiwgMTE5NzEsIAorICAgIDk4MzcyOCwgMCwgMTA2NSwgMCwgMCwgNDM0MDAsIDI1NzYsIDY2Njk2LCA5Mzk5OSwgMCwgNDM2MDQsIDAsIDAsIDc0MDgyLCAKKyAgICA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgNDMyMTUsIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzQ1ODAsIAorICAgIDQzMzk4LCAyNTgwLCA5ODM4MDEsIDQxMzQxLCA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDcwMDIwLCAwLCAKKyAgICAzNzMzLCAxMTM0NiwgMCwgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMCwgMTMwOTEsIDAsIDAsIDAsIDkxNzkxNSwgMCwgCisgICAgMTI3MDI1LCAwLCA3NDgyMSwgMCwgOTgzNzI0LCAxMTkwNDIsIDAsIDEyNzg2NSwgMTMwOTAsIDY2NjQzLCAwLCAxMjcwLCAKKyAgICAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCAwLCA2NDc2MSwgMCwgNDEwMjEsIDg1MTAsIAorICAgIDQyNDMyLCAwLCAwLCAxOTQ3ODIsIDAsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIDk5MTUsIDAsIDk4MzIxNiwgNzA2MSwgCisgICAgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCA0MjMxOSwgMTMwODIsIDAsIDcwNjcsIDY4MjIxLCAwLCAKKyAgICAxMjczODMsIDEyNzE3MSwgMCwgMCwgMTI3Nzk3LCA5MDI5LCA0MzU0MywgMTE5MzE1LCAyMzUzLCA2MzA4LCAwLCA3NDc5MiwgCisgICAgMjYxMSwgMTE5MTg2LCAwLCAwLCAwLCA0MzY2NCwgOTIzOTksIDY2NjI3LCAwLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCAKKyAgICA2NTIzMywgMCwgNDEyMjQsIDQxMDE3LCAwLCAzNzQ3LCAxMDUyMiwgMCwgMCwgMTY5MSwgNDEyMjYsIDAsIDEyMTA3LCAKKyAgICA3MTAwLCAxMDkwNSwgNjUwMTAsIDE5NDk4NiwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgMCwgMCwgOTI2NDQsIDEzMTIxLCAKKyAgICAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMCwgMCwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIDAsIAorICAgIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAxMTg3ODQsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCAKKyAgICA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAKKyAgICAxMjgyNTgsIDAsIDAsIDAsIDEzMTIyLCAwLCAxOTEsIDcwMDYwLCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgCiAgICAgNjQ4NTAsIDQxMDcyLCA0MTU3OCwgMCwgNDE1NzcsIDAsIDEwMDAyLCAwLCA2NTMzLCA3MzgwMiwgNDE1NzAsIDAsIDY4MywgCiAgICAgMzk2LCA0MTU4MCwgNjgxNDYsIDAsIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIDc4MTU0LCAwLCAKLSAgICA0NzQzLCAwLCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgMCwgMzczOSwgNjI2MywgOTI1MTQsIAotICAgIDAsIDM5NjQsIDY1OTIsIDAsIDEyODY5MywgNjYwNDAsIDAsIDQyNTY4LCA2OTgwNiwgMCwgMTc3OCwgMzk1NiwgMCwgCi0gICAgNDIwNzAsIDY1NjMsIDQzMDc1LCA5MDE4LCAwLCAwLCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAxMjc5NjksIDAsIAotICAgIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIDExODgyMiwgMTc1MCwgCi0gICAgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDAsIDkyMjk4LCAwLCA1ODg5LCAwLCA3MTgwLCAwLCAxMTkxNDUsIDAsIDkxNzU1OCwgCi0gICAgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCA3ODkxLCA0MjI0MywgNDIxNjAsIDI1ODMsIDQ1MTIsIDExOTM2MCwgNjUyMzAsIAotICAgIDEyODEwOSwgMCwgMCwgMzg1NSwgMCwgMCwgMCwgMCwgNzQyOTUsIDAsIDAsIDkyNDE2LCAzOTc1LCAwLCA3NDA4NywgMCwgCi0gICAgMTI2NzIsIDM3OTgsIDI3MDMsIDAsIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDAsIDQxMDk1LCAzOTYyLCAwLCAyOTMyLCAKLSAgICA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgMCwgMCwgNzM5OTQsIDczOTkyLCAxNDY4LCAwLCAwLCA0MTg1MSwgMTI4MjMwLCAKLSAgICA0MTg0NiwgMCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgMzIyNCwgMCwgMTI4MDMyLCAwLCA0MjUzMSwgMCwgCi0gICAgMTUxMCwgMCwgODI1NiwgMCwgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIDAsIDAsIDc4Mzc3LCAxOTEwLCAKLSAgICA4NjcxLCA3ODM3NCwgNDI4MywgMCwgMTI3MTE3LCA2ODM2MSwgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNywgMCwgMCwgMCwgCi0gICAgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAwLCAwLCAKLSAgICAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCA3Mzk2LCA3MTE2LCAwLCAKLSAgICA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMCwgMCwgOTIzNDcsIDAsIDQxMzUwLCA5MTI5LCAwLCAwLCAwLCAwLCA5MjQ4OSwgMCwgCi0gICAgMTA0ODEsIDAsIDEyNzQ4NiwgNzE3MSwgMCwgMzQwLCA5MjQ5OCwgMCwgMCwgMCwgOTIyMDAsIDAsIDAsIDY3NjQsIAotICAgIDEyNzQ4NywgMCwgMCwgMCwgMCwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMCwgMzIxMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI3OTcwLCA5MTc2MTksIDAsIDAsIDEwMDQzLCAwLCAxMTg2LCA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjgyNDQsIAotICAgIDM2NzUsIDUyMDcsIDY1MDYyLCA1MjEzLCAxOTQ3NjksIDI2MTcsIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAKLSAgICAxMjA1MzUsIDAsIDg2MzAsIDEyODU0NCwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgMjU4NiwgNjQ4ODcsIDAsIDUyMTcsIDAsIDAsIAotICAgIDAsIDAsIDY0MjkzLCA2ODA5OCwgMjYzNSwgMCwgMCwgMCwgMCwgMCwgNzgzNSwgMCwgMCwgMTk0OTg4LCA5MjI4NSwgCi0gICAgNjQ1NTgsIDEyNzEyMiwgMCwgMTI3MTIxLCAwLCAxMjc5MTMsIDAsIDU3ODQsIDAsIDAsIDAsIDAsIDQwMTEsIDkxNzYxNiwgCi0gICAgNjgxMDEsIDAsIDc4NjQsIDQyNTQsIDY1MDk1LCAwLCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCA1NTk4LCAxMjA3LCAKLSAgICAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIAotICAgIDkzMjEsIDAsIDAsIDAsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIAotICAgIDAsIDc2MzEsIDU0ODgsIDcxMjgsIDEyMDUzMiwgMCwgNTQ5MSwgMCwgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCAKLSAgICA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAwLCA3MTIyLCAwLCA0MzkwLCA0NTQsIDQxMzk3LCAwLCAKLSAgICA5ODc1LCA3NTkzLCAxOTQ3OTIsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIDAsIDY1OTAxLCAyMzk0LCAyNTc1LCAwLCAzNzQ2LCAKLSAgICAxMTAxNiwgNjU3NTIsIDEyMDAzNywgMCwgNDM0MjMsIDEyODY4MywgMTE5ODksIDAsIDAsIDAsIDAsIDAsIDgyNDksIAotICAgIDEyODE3MiwgMCwgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCA1MTMsIDAsIDY1ODYsIDg2NTYsIDAsIDEyNzAwMiwgCi0gICAgNjUwMDgsIDAsIDE5NDc4NCwgMTk0OTg5LCAxOTQ3OTUsIDAsIDkyNTE1LCA2ODQ3NSwgMCwgMCwgMCwgNzg2MzcsIDEyNjQ3LCAKLSAgICAwLCAxMjgwNDMsIDAsIDEwMzYsIDAsIDkyNDE5LCAxNzIzLCAxMjgwNTYsIDAsIDAsIDQxNTc5LCAyNDQ0LCAwLCAxMDcwNSwgCi0gICAgNzM4NzYsIDAsIDc0NDg2LCAwLCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCAKLSAgICA2ODQzNywgNzgxNDAsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA1NTI2MywgCi0gICAgMTE5MDcsIDE5NTAwMCwgNTY5MCwgOTIyNTUsIDAsIDAsIDQzMTgxLCAxMzA5NSwgMCwgMTI3ODU3LCA2NDQ5OCwgMCwgCi0gICAgOTUwNiwgNjk3OCwgMTk0OTkzLCA3Nzk5MiwgMCwgMCwgMTk0OTkyLCAwLCAxMjc4NDUsIDExMjIsIDMxNywgMCwgMCwgMCwgCi0gICAgMCwgMTkyMCwgMCwgMTAxNzMsIDgyNywgMCwgMCwgNzgzNzgsIDEyMDEyNiwgNTIyMywgMTMwNCwgMCwgMTE5NTY0LCA1MjI2LCAKLSAgICAxMjYwMiwgMCwgMCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCAKKyAgICA0NzQzLCAwLCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgMCwgMzczOSwgNjI2MywgNzEzNDksIAorICAgIDAsIDM5NjQsIDY1OTIsIDAsIDEyODY5MywgNjYwNDAsIDAsIDQyNTY4LCA2OTgwNiwgMTI4MTEzLCAxNzc4LCAzOTU2LCAwLCAKKyAgICA0MjA3MCwgNjU2MywgNDMwNzUsIDkwMTgsIDk0MDA2LCA5ODMzODgsIDEyMDY3LCA0MTMxMiwgMCwgNTU0NywgNzQ1MzEsIAorICAgIDEyNzk2OSwgMCwgODE3NSwgMCwgMjg0LCA4MTA4LCA5MzQsIDAsIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgCisgICAgMTE4ODIyLCAxNzUwLCAwLCA0Mzk0LCA2ODM2OCwgMTgwNywgOTgzODc5LCA5MjI5OCwgMCwgNTg4OSwgMCwgNzE4MCwgMCwgCisgICAgMTE5MTQ1LCAwLCA5MTc1NTgsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCAKKyAgICA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDAsIDAsIDM4NTUsIDAsIDAsIDAsIDAsIDc0Mjk1LCAwLCAwLCA5MjQxNiwgCisgICAgMzk3NSwgMCwgNzQwODcsIDAsIDEyNjcyLCAzNzk4LCAyNzAzLCA5ODM1OTksIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDAsIAorICAgIDQxMDk1LCAzOTYyLCAwLCAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgMCwgMCwgNzM5OTQsIDczOTkyLCAxNDY4LCAKKyAgICAwLCAwLCA0MTg1MSwgMTI4MjMwLCA0MTg0NiwgMCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgMzIyNCwgMCwgCisgICAgMTI4MDMyLCAwLCA0MjUzMSwgMTE5MTA4LCAxNTEwLCAwLCA4MjU2LCAwLCAxMTM5MywgMCwgODg3OSwgMTI4MDc1LCAKKyAgICA5MjQ3NCwgODc3MCwgMCwgMCwgNzgzNzcsIDE5MTAsIDg2NzEsIDc4Mzc0LCA0MjgzLCAwLCAxMjcxMTcsIDY4MzYxLCAKKyAgICA3ODMxOCwgMjY1NCwgNzg5MywgMTk1MDA3LCAwLCAwLCAwLCA2NTEwNiwgNDI3NjEsIDEyODU3LCA0NTgxLCA4NDExLCAKKyAgICA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIDAsIDAsIDAsIDE3MzMsIDQzOTIsIDI1NjgsIDEwNzg2LCAKKyAgICA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDAsIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAwLCA3MTg1LCA3OTY1LCAwLCAwLCAKKyAgICA5MjM0NywgOTgzMDg3LCA0MTM1MCwgOTEyOSwgMCwgMCwgMjI5NCwgMCwgOTI0ODksIDAsIDEwNDgxLCAwLCA3MDAyMiwgCisgICAgNzE3MSwgMCwgMzQwLCA5MjQ5OCwgOTM5NzIsIDAsIDAsIDkyMjAwLCAwLCAwLCA2NzY0LCAxMjc0ODcsIDAsIDAsIDAsIDAsIAorICAgIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDAsIDMyMTAsIDAsIDAsIDExODc5NSwgMCwgMCwgMTI3OTcwLCAKKyAgICA5MTc2MTksIDAsIDAsIDEwMDQzLCAwLCAxMTg2LCA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjY2NDIsIDM2NzUsIDUyMDcsIAorICAgIDY1MDYyLCA1MjEzLCAxOTQ3NjksIDI2MTcsIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIAorICAgIDEyODU0NCwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgMjU4NiwgNjQ4ODcsIDAsIDUyMTcsIDcxMzM2LCAwLCAwLCAwLCA2NDI5MywgCisgICAgNjgwOTgsIDI2MzUsIDAsIDAsIDk4MzgzNywgMCwgOTgzNjMyLCA3ODM1LCA3MDA0MCwgMCwgMTk0OTg4LCA5MjI4NSwgCisgICAgNjQ1NTgsIDEyNzEyMiwgMCwgMTI3MTIxLCAwLCAxMjc5MTMsIDAsIDU3ODQsIDk4MzEwMiwgMCwgMCwgNzAwMzMsIDQwMTEsIAorICAgIDkxNzYxNiwgNjgxMDEsIDAsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0ODgsIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIAorICAgIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgMTk0NzgwLCAwLCAxMTI0LCA1NTk3LCAKKyAgICAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDc2LCA5ODM0NzMsIDk4MzQ3NCwgMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCAKKyAgICA5NjcxLCAxMTI1LCA0Mzk5LCAxMjc0NzksIDkxNzYxMCwgOTgzNDgwLCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIAorICAgIDU0OTEsIDAsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgCisgICAgNjMwMCwgMCwgNzEyMiwgMCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCAKKyAgICA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgMTEwMTYsIDY1NzUyLCAxMjAwMzcsIDAsIDQzNDIzLCAKKyAgICAxMjg2ODMsIDExOTg5LCAwLCAwLCAwLCAwLCAwLCA4MjQ5LCAxMjgxNzIsIDAsIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCisgICAgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjA3MTAsIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCA5ODM0NjUsIAorICAgIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDAsIDAsIDc4NjM3LCAxMjY0NywgMCwgMTI4MDQzLCA2OTg5MywgMTAzNiwgOTgzNDY5LCAKKyAgICA5MjQxOSwgMTcyMywgMTI4MDU2LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIDAsIDEwNzA1LCA3Mzg3NiwgOTgzNDYxLCAKKyAgICA3NDQ4NiwgOTgzNDU5LCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA2ODQzNywgCisgICAgNzgxNDAsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA1NTI2MywgMTE5MDcsIAorICAgIDE5NTAwMCwgNTY5MCwgOTIyNTUsIDkzOTkyLCAwLCA0MzE4MSwgMTMwOTUsIDAsIDEyNzg1NywgNjQ0OTgsIDAsIDk1MDYsIAorICAgIDY5NzgsIDE5NDk5MywgNzc5OTIsIDAsIDAsIDE5NDk5MiwgMCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDAsIDAsIDAsIAorICAgIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIDc4Mzc4LCAxMjAxMjYsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgCisgICAgMTI2MDIsIDk0MDQ0LCAwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIAogICAgIDY5MjI5LCA5Njc0LCA1Njk1LCA0MTcxMSwgNjQ2MjcsIDE5OTA5LCAwLCA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgCi0gICAgMTI3NDkwLCAwLCA0MjgxNiwgMCwgNjUxNDAsIDc0Nzk3LCAwLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIDQxMTc1LCAwLCAKLSAgICAwLCAwLCA1Mjk2LCAwLCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCAKLSAgICA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCA0Mzk3NiwgMCwgMTc4NSwgOTI1MDcsIDY4NjIyLCAKLSAgICA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAwLCAwLCA0NTQwLCA0MTE4MSwgMCwgNjIwMCwgMCwgNTEzNCwgMCwgMzIyLCAKLSAgICA0NjQzLCA1MTMyLCAwLCA2Mzg5LCAwLCA1MTQzLCAwLCA4NzkwLCAxMjg2OTQsIDAsIDE5NDgwMiwgMCwgODg2OSwgCi0gICAgMTIwNjAxLCAwLCA0MjA2MCwgMCwgMCwgMTk0ODA0LCAxMjcwMTIsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCAKLSAgICA0MzUyOSwgNjY0NzcsIDAsIDAsIDc0MTcwLCAwLCAzMjM0LCAwLCAwLCA3NDM3NiwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAKLSAgICAxMjA2MjcsIDg3NjcsIDAsIDc0NDg5LCA5Njk1LCAxMjA3NDYsIDUyMDEsIDAsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgCi0gICAgMCwgMTk0OTk5LCA2NTI2OCwgMCwgMCwgMCwgMTEwMjcsIDAsIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgCi0gICAgMTc0OSwgNzg4OTAsIDEyNzA3MSwgMCwgMzIwLCAwLCA4NjQ3LCAwLCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIAotICAgIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIAotICAgIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAKLSAgICAxMjczNDQsIDk1NTQsIDAsIDEyNzc5NCwgMTI3MTA5LCA2NjUzLCAxMjg4MTEsIDAsIDY0NTEwLCA2MjEzLCAxMjg4NSwgMCwgCi0gICAgMTE5MDQ1LCA2NDcyMCwgMCwgMTIwNzU5LCA3Mzc0MSwgMTI2MDMsIDcxMzEsIDExNDMwLCA0NTY2LCA3ODQzLCA5MzE3LCAKLSAgICAzODAxLCAxMDM0MiwgMTA0MDYsIDAsIDExOTI1OSwgNDI1NzYsIDAsIDUyMDAsIDAsIDkxNzk0OCwgMCwgOTE4MywgCi0gICAgMTI3MzYxLCA3NDQ1OCwgNzM4MjUsIDM5NSwgNTQ4MiwgNTE5OCwgODc4NiwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgCi0gICAgNjExMywgNDIwMDksIDUyMDUsIDAsIDQzMzA3LCAwLCAxMTg5NzMsIDAsIDEyMTM0LCAwLCAwLCAxMTg4NDMsIDkxMjYsIAotICAgIDQzNSwgMCwgMTIwMTQsIDEwMzc3LCA4MDkzLCA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAwLCA2NDQzMCwgNTM4MywgCi0gICAgMTAyOTQsIDEwMzI2LCAxMjgxNzgsIDU3MzgsIDAsIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgMCwgNjgxMTIsIAotICAgIDc4NzIsIDg1ODEsIDAsIDEyNjAsIDMxNDksIDUzNTksIDAsIDAsIDc5MTQsIDUzNTcsIDkyMTcwLCAxMjg2NTksIDI2MjQsIAotICAgIDUzNjQsIDAsIDExNDMxLCAxMjAwMzAsIDkxMDEsIDExMDU4LCA3ODI4OCwgMCwgNzgyOTMsIDQyMjcxLCA3ODI4OSwgCi0gICAgNDI5MTcsIDEyMDc5MywgMCwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgzODUsIDc4Mzg0LCA3ODM4MywgNzgzODIsIAotICAgIDc4MzgxLCA3ODM4MCwgNzgzNzksIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCA3NDU4MSwgCi0gICAgMTIwNjMyLCAwLCAwLCA0MTg4OSwgOTI0NTMsIDAsIDExNjEsIDQxODk1LCA3NDEwMywgOTcwMSwgODYyMiwgMCwgMCwgCi0gICAgNzM4MTksIDEyMDU4OCwgNTAxMiwgNzc5MTIsIDQxMzYyLCAwLCA3ODI5NiwgMTE5MjEsIDAsIDExNzY5LCAwLCA2ODYwOSwgCi0gICAgNDEzNjQsIDAsIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDAsIDQxMzY2LCAwLCAzMzU2LCAwLCA5MTcsIDY4NDIyLCAxMTk5MTUsIAotICAgIDcxMzQsIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCi0gICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMCwgMTAxOTAsIDEyMDY5OCwgCi0gICAgNjU4MzcsIDEyODgyMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgMTA4NTIsIDAsIAotICAgIDAsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIDEwNDYsIDcxMjQsIDAsIDAsIDU4MTUsIDUxNzEsIAotICAgIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzgzMTUsIDQyMzk0LCA0MTg3OCwgNzQ4NDksIDEyMDYyMSwgMCwgNTE2OSwgMTE5MzUsIAotICAgIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgMTIwODA0LCA1MTc2LCA4OTA1LCA0MTM2LCA0ODcxLCA3ODI4NywgMCwgOTgzMywgCi0gICAgMCwgMCwgMTEyOCwgNjU5MjAsIDAsIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIAotICAgIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIAotICAgIDQxMzg1LCAwLCA0MTM4OSwgOTE3OTM4LCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAzNTA3LCAKLSAgICA5NDA2LCA3NjI5LCAwLCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCAwLCAxMDYyNywgNDExMzAsIAotICAgIDc4MjYwLCAzOTk2LCAwLCA3ODc3MSwgMCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCA0MzMyLCA2NDgyNSwgCi0gICAgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCA5MTc5MTgsIDEyMDg1LCAwLCA1NzQsIDkxNzkyMiwgCi0gICAgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjk3MDksIDQxMzIyLCA0MjIxMSwgNTQ0MiwgNDE5MCwgNzc4MzQsIAotICAgIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDc3ODM3LCA3NzgzOCwgNzcwOCwgNzc4MzYsIDEwODU5LCA2NTg2NywgCi0gICAgMTAzNDUsIDEwNDA5LCA0MTkxLCAwLCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIDIwNjAsIDAsIDcxMTEsIAotICAgIDExNzg4LCA2NTU4NywgNjgxMjksIDEwNDE1LCA3NDEwMiwgMCwgMjA1LCAwLCAxMDM1MSwgMTE5MDc2LCAwLCA5ODYyLCAKLSAgICA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgMTE5MTU0LCA1NTAzLCA4MDIxLCAwLCA3MTI1LCAKLSAgICA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCA5MjYzNiwgMCwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIAotICAgIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCA3ODI2NywgNDI4NzQsIDg1NTAsIDQyODc2LCAKLSAgICA1NTkyLCAyOTE5LCAwLCAyNjc1LCA1NTk1LCA3ODQxMSwgMCwgNDM2NywgMCwgMCwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgCi0gICAgNzQxNTAsIDcyOTEsIDU1OTAsIDc3ODQ5LCAxMzA2NywgMTE4OTA5LCAxMjAzNzIsIDAsIDk3MzEsIDY5NzMxLCA2NDYzMywgCi0gICAgNzc4NTcsIDc3ODU0LCA3Nzg1NSwgNzc4NTIsIDc3ODUzLCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgCi0gICAgMTI4Mjk2LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIAotICAgIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDAsIDE0NDIsIDAsIDU4OTQsIAotICAgIDAsIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAzMzM0LCAwLCAxMTg4MDMsIDc3ODgxLCA2NjAyMiwgMCwgCi0gICAgMCwgMTY1MSwgMCwgODg2MSwgMCwgMCwgMTE0MiwgMCwgODI3MSwgMCwgMCwgMCwgMTI5MDMsIDAsIDQwMDIsIDQzNjI2LCAKLSAgICAxMDQ0MiwgMTA2NzYsIDMzNDQsIDAsIDAsIDEyOTIwLCAxOTQ1NjAsIDAsIDAsIDY2NjQyLCAxMjc3LCAwLCA3ODcxLCAwLCAKLSAgICAwLCA3ODg1MywgMCwgNzg4NTQsIDEyMDM2MCwgMCwgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCA2NjM2NiwgNzg4NTgsIAotICAgIDEyMDM1OSwgMTEwMTIsIDAsIDc4ODU2LCA5MjQwMCwgNzc4NzksIDQ5NzMsIDg3ODQsIDc3ODc3LCA3NDgwNCwgNzc4NzQsIAotICAgIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDAsIDQzMTE4LCAwLCA0MjM2NCwgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIAotICAgIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAzMzcyLCAwLCA2MjQ3LCA0MzExNywgCi0gICAgNzQ1MjYsIDcxMjEsIDc0MTY2LCAwLCAxMjAzNTUsIDkyNTM3LCAwLCAwLCAxOTUwMzQsIDAsIDAsIDAsIDc0MjE3LCAzMzU0LCAKLSAgICAxOTUwMzcsIDQxOTIsIDkyODksIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDEyNzk4MywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIAotICAgIDAsIDAsIDAsIDAsIDExNjAzLCAwLCAwLCA2NTg5LCAxMjg1ODgsIDE5NDY3OSwgMCwgMCwgMCwgMCwgMCwgNDI1NzIsIAotICAgIDEyODI2NCwgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTg4ODksIDEyNzk3OCwgMTE2NTQsIDAsIDc1NTAsIDEwNjg2LCA1OTAzLCAKLSAgICAwLCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCAwLCAwLCAxMTAxMywgMTI3OTI3LCAKLSAgICAxMjgzMDAsIDAsIDc4NjIxLCAxOTQ2NzIsIDY5MjUsIDAsIDAsIDkxNzkyOSwgMCwgMTE1NjgsIDAsIDQzMzY3LCA2NDU3OSwgCisgICAgMTI3NDkwLCA5ODM0MzMsIDQyODE2LCA5NDAzNiwgNjUxNDAsIDc0Nzk3LCAwLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIAorICAgIDQxMTc1LCA5ODM0NDAsIDk4MzQzNywgOTgzNDM4LCA1Mjk2LCA5ODM0MzYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIAorICAgIDAsIDAsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDAsIDAsIDEyMTIyLCAxMTk2MDIsIAorICAgIDQzOTc2LCAwLCAxNzg1LCA2OTkyNSwgNjg2MjIsIDY1MTUzLCAxOTQ4MTAsIDUxMzgsIDAsIDAsIDExODg2OSwgMCwgNDU0MCwgCisgICAgNDExODEsIDAsIDYyMDAsIDAsIDUxMzQsIDAsIDMyMiwgNDY0MywgNTEzMiwgMCwgNjM4OSwgMTI4NTMzLCA1MTQzLCAwLCAKKyAgICA4NzkwLCAxMjg2OTQsIDAsIDE5NDgwMiwgMCwgODg2OSwgNjk5MTYsIDAsIDQyMDYwLCA3MTMyNiwgOTY0OCwgMTk0ODA0LCAKKyAgICAxMjcwMTIsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDAsIDAsIDc0MTcwLCAwLCAzMjM0LCAKKyAgICAwLCAwLCA3NDM3NiwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDAsIDc0NDg5LCA5Njk1LCAxMjA3NDYsIAorICAgIDUyMDEsIDAsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMCwgMTk0OTk5LCA2NTI2OCwgMCwgMCwgMCwgMTEwMjcsIDAsIAorICAgIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIDEyNzA3MSwgOTgzNjYxLCAzMjAsIDAsIAorICAgIDg2NDcsIDAsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgMTI3MzU2LCAxMjczNTUsIDY2NDc4LCA0OTYwLCAKKyAgICA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgNTQxOCwgMTI3MzUwLCAzMzUxLCAxMjcwMDYsIDEyNzM1MSwgCisgICAgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIDEyNzM0NCwgOTU1NCwgMCwgOTQwNDgsIDEyNzEwOSwgCisgICAgNjY1MywgMTI4ODExLCAwLCA2NDUxMCwgNjIxMywgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDAsIDEyMDc1OSwgNzM3NDEsIAorICAgIDEyNjAzLCA3MTMxLCAxMTQzMCwgNDU2NiwgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAwLCAxMTkyNTksIAorICAgIDQyNTc2LCAwLCA1MjAwLCAxMjY2MTEsIDkxNzk0OCwgMCwgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNzM4MjUsIDM5NSwgNTQ4MiwgCisgICAgNTE5OCwgNDM0OSwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDAsIDQzMzA3LCAwLCAKKyAgICAxMTg5NzMsIDAsIDEyMTM0LCAwLCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgMCwgMTIwMTQsIDEwMzc3LCA4MDkzLCA5MDc5LCAKKyAgICAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAwLCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjgxNzgsIDU3MzgsIAorICAgIDk4MzIxMywgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCAwLCA2ODExMiwgNzg3MiwgODU4MSwgMCwgMTI2MCwgCisgICAgMzE0OSwgNTM1OSwgMTIwMTM0LCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCA1MzY0LCAwLCAxMTQzMSwgCisgICAgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIDQyOTE3LCAxMjA3OTMsIDAsIAorICAgIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgMTE4MzIsIDc4MzgyLCA3ODM4MSwgNzgzODAsIAorICAgIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIDEyMDYzMiwgMCwgMCwgCisgICAgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIDczODE5LCAxMjA1ODgsIAorICAgIDUwMTIsIDc3OTEyLCA0MTM2MiwgNjk4NjIsIDc4Mjk2LCAxMTkyMSwgMCwgMTE3NjksIDAsIDY4NjA5LCA0MTM2NCwgMCwgCisgICAgNzQyMjgsIDQxMzUyLCA0MTM2MSwgMCwgNDEzNjYsIDAsIDMzNTYsIDAsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgCisgICAgODE5OSwgNzgzODksIDExOTkxNywgNjc3LCAxMTk5MTYsIDAsIDExOTkzMiwgMTI3MTY5LCAwLCAwLCAwLCAzMzQ5LCAKKyAgICA3NDEyNSwgNzAyMiwgODkyNywgNDczOSwgMCwgNTgwMiwgMCwgODYxNSwgMCwgMCwgNDkxLCAxMjg4MTksIDEwMTkwLCAKKyAgICAxMjA2OTgsIDY1ODM3LCAxMjg4MjAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIAorICAgIDEwODUyLCAwLCAwLCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAwLCAwLCAKKyAgICA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIDc0ODQ5LCAxMjA2MjEsIDAsIAorICAgIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgODkwNSwgNDEzNiwgNDg3MSwgCisgICAgNzgyODcsIDAsIDk4MzMsIDAsIDAsIDExMjgsIDY1OTIwLCAwLCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAKKyAgICAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCAKKyAgICA1MTY1LCA1MTI2LCA0MTM4NSwgMCwgNDEzODksIDkxNzkzOCwgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgCisgICAgOTQwNCwgMzUwNywgOTQwNiwgNzYyOSwgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCAwLCAKKyAgICAxMDYyNywgNDExMzAsIDc4MjYwLCAzOTk2LCAwLCA3ODc3MSwgMCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCAKKyAgICA0MzMyLCA2NDgyNSwgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCA5MTc5MTgsIDEyMDg1LCAwLCAKKyAgICA1NzQsIDkxNzkyMiwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjk3MDksIDQxMzIyLCA0MjIxMSwgNTQ0MiwgCisgICAgNDE5MCwgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDc3ODM3LCA3NzgzOCwgNzcwOCwgNzc4MzYsIAorICAgIDEwODU5LCA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAwLCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIAorICAgIDIwNjAsIDAsIDcxMTEsIDExNzg4LCA2NTU4NywgNjgxMjksIDEwNDE1LCA3NDEwMiwgMCwgMjA1LCAwLCAxMDM1MSwgCisgICAgMTE5MDc2LCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgMTE5MTU0LCA1NTAzLCAKKyAgICA4MDIxLCAwLCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCA5MjYzNiwgMCwgMTAwMjYsIAorICAgIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCA3ODI2NywgCisgICAgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAwLCAyNjc1LCA1NTk1LCA3ODQxMSwgNDM3NjIsIDQzNjcsIDAsIDAsIAorICAgIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCA0Mzc2MSwgMTMwNjcsIDExODkwOSwgMTIwMzcyLCAKKyAgICA5ODMxMDgsIDk3MzEsIDY5NzMxLCA2NDYzMywgNzc4NTcsIDc3ODU0LCA3Nzg1NSwgNzc4NTIsIDc3ODUzLCA3Nzg1MCwgCisgICAgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgMTI4Mjk2LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCAKKyAgICA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgCisgICAgNTUyNTIsIDczOTcyLCAxNDQyLCAwLCA1ODk0LCA3MDA2OSwgMCwgNDExNzEsIDkyNTExLCA3NDMxMywgMCwgMTMxNjIsIDAsIAorICAgIDMzMzQsIDE5NTAxMCwgMTE4ODAzLCA3Nzg4MSwgNjYwMjIsIDAsIDAsIDE2NTEsIDEyODc3MSwgODg2MSwgMCwgMCwgMTE0MiwgCisgICAgMCwgODI3MSwgMCwgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCAwLCA0MDAyLCA0MzYyNiwgMTA0NDIsIDEwNjc2LCAzMzQ0LCAwLCAKKyAgICAwLCAxMjkyMCwgMTk0NTYwLCAwLCAwLCA2NjY0MiwgMTI3NywgMCwgNzg3MSwgMCwgMCwgNzg4NTMsIDAsIDc4ODU0LCAKKyAgICAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgCisgICAgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCAKKyAgICA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAKKyAgICAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCAKKyAgICA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3MDA4MywgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIAorICAgIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgMCwgMCwgMTE2MDMsIAorICAgIDk4Mzk0NSwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDk4MzY5MSwgMCwgMCwgNDI1NzIsIDEyODI2NCwgCisgICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTI3MDk4LCAxMTY1NCwgMCwgNzU1MCwgMTA2ODYsIDU5MDMsIDAsIDc4MDA5LCAKKyAgICA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDAsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDEyODMwMCwgCisgICAgMCwgNzg2MjEsIDE5NDY3MiwgNjkyNSwgMCwgMCwgOTE3OTI5LCAwLCAxMTU2OCwgOTgzNjY0LCA0MzM2NywgNjQ1NzksIAogICAgIDkxNzkzMCwgNzg1MiwgMCwgMCwgNjc1NCwgNjMxMiwgMCwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgCi0gICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCAwLCA5NTMyLCAKLSAgICA2NjM1NSwgMCwgMCwgOTE3OTI1LCA2NDM0MywgMTk1MDMyLCAxMjgyODEsIDE5NTAzMSwgMCwgMCwgMTk1MDU3LCAxMTQ0NSwgCi0gICAgMCwgMjExMiwgMTk1MDU2LCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCA3NDU0NCwgODAyMywgCi0gICAgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIDAsIDEyMDQ5MywgMzM0MywgNDQyNCwgCi0gICAgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODYyNiwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgNDM5MSwgNjgxMzksIDAsIAotICAgIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAwLCA2NDc1NywgMCwgMzkxMywgMCwgMCwgCi0gICAgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgMCwgMCwgODIyMSwgCi0gICAgNzgzMDcsIDQxODY0LCAwLCAwLCAwLCAwLCAxNjcsIDAsIDc4MzAxLCAwLCA3NDIxMSwgNDE4OTcsIDY4NDc3LCAwLCAKLSAgICA5MTc1ODMsIDAsIDAsIDI0OTMsIDAsIDExODgxMSwgMCwgMCwgNjQzNTQsIDAsIDg3NzcsIDAsIDQwNiwgODg4NCwgMjM4NSwgCi0gICAgMCwgOTI0NTAsIDAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAxMjExNCwgMCwgOTE3NTc5LCA2NDkzNiwgMTk0Njk1LCAwLCAKLSAgICAxMjA2MjksIDEwNTYxLCAwLCA4MzY1LCAxMjA1MzksIDAsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMCwgCi0gICAgOTE3NTc1LCA3ODM0LCA3NDE1OSwgMCwgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTk2LCAxNjM5LCAwLCAwLCAKLSAgICA3NDE1NywgNjMyNywgNjcyNCwgMCwgMTI4MDg2LCA5MjU2NiwgMCwgNDgxNywgNzg0NDYsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIAotICAgIDk2MDAsIDExMDIyLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTk0NzYxLCAKLSAgICAxMjM0MywgNjU3LCAxOTUwNTQsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgMCwgMCwgCi0gICAgMCwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDAsIDkxNzU5NSwgNjU1NTAsIDI2MCwgNDgxNiwgCi0gICAgNjc2NTgsIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDE5NTA0OCwgNDE0MDMsIDExOTk3NywgMCwgCi0gICAgMCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgMTE5OTgzLCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgCi0gICAgMTE2NSwgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzM4NTUsIDY1MTU1LCA0MzAxNCwgNTQzOSwgCi0gICAgOTM2MywgMTI3NTU4LCAzMzc1LCAxMjg4NjksIDU5MDAsIDAsIDc4ODksIDI3MjIsIDQyMjYyLCAwLCAwLCAxMjg3NzQsIDAsIAotICAgIDAsIDAsIDEyNzgxMCwgMTE0MDEsIDAsIDAsIDY4NDU5LCAwLCAwLCAwLCAwLCA2NTQzOCwgMCwgNzI4MCwgMTI3ODg3LCAwLCAKLSAgICAxMjczODEsIDQ4NjgsIDExOTk2NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgMCwgNTE4MiwgMCwgCi0gICAgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMjA3OTgsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCAwLCA5NzcsIDQ0NTgsIDAsIDAsIAotICAgIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxOTQ3OTAsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMCwgNzg2LCAwLCA0MzE3NCwgCi0gICAgNjQzNDAsIDAsIDAsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgNjUwMjUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY4NDQ0LCAwLCA5MjQzNywgMCwgMTE5MTYwLCAxMDIwNCwgOTI2NTYsIDAsIDEyNzgwOSwgMCwgMTM5OSwgMCwgNjUyMTcsIAotICAgIDAsIDg4NTIsIDAsIDI0MSwgMTI4NzgwLCA0OTA3LCAwLCAwLCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAKLSAgICAwLCAwLCAwLCA0Mjc4MCwgMCwgMCwgMCwgNDIxNywgMCwgODY1MCwgMCwgMCwgMCwgMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgCi0gICAgMTE5MTE5LCA2NzE5LCAwLCAxMzMwMCwgNzg0MzksIDEyODI2MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIDAsIDAsIDczODE1LCAKLSAgICA0NDIwLCAwLCA2NDEwLCA3NzYwLCAwLCAwLCAwLCAwLCAwLCA3Mjk0LCAwLCAwLCAwLCA5MDY2LCAwLCAxMTk5MywgNDMxODgsIAotICAgIDI2MjYsIDc3NjIsIDAsIDAsIDAsIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDAsIDc4NTE2LCA2OTE5LCA4NjE5LCAKLSAgICAxMTk2NTUsIDEwMDM4LCA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyNjk5MywgMTU0MiwgOTIzMDMsIDAsIDAsIDAsIDAsIAotICAgIDc0MzExLCA3ODQ5NywgMCwgMTAxODEsIDAsIDQzNjI0LCAwLCA3Nzc5LCAwLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMCwgCi0gICAgOTIyNjgsIDk2ODksIDAsIDAsIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCAKLSAgICA2OTc4NywgMjAzMCwgMCwgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDAsIDAsIDAsIDAsIDI3MzUsIDQyODMxLCAKLSAgICA3NzkzNSwgMTI3MTIwLCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAwLCAwLCA3Mzk0NiwgMCwgMCwgMCwgNjgxNDAsIDAsIDk1NzYsIAotICAgIDEyODg3MiwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAxMjcwNjMsIDc3MDksIDQxMTEyLCAKLSAgICAwLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgMCwgNjc1OCwgMCwgMTYxNSwgNTg1NSwgODA5LCAwLCAKLSAgICA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIDAsIDAsIDAsIDcyNjAsIDAsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIAotICAgIDc4ODE5LCA2NDM4NiwgNjUyNTcsIDAsIDY4NjE2LCAxMjA2MDcsIDkzNDcsIDEyODA2NywgNjUzMiwgMCwgMCwgMCwgCi0gICAgMTI3MDYwLCA2NTgyOCwgMCwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NjMsIDAsIDAsIDEyMDYwOSwgMCwgMzM3MCwgCi0gICAgMCwgMTEzNjEsIDU0NDMsIDc4Nzc4LCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIDAsIDAsIDAsIDAsIDY1NDk1LCA2NDcwNiwgCi0gICAgMCwgNDMzNDQsIDAsIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCAwLCAwLCAwLCAwLCA5MTUsIDQzNDI1LCAwLCAwLCAwLCAwLCAKLSAgICAxMjcxNzgsIDQzMjY0LCAwLCAwLCAwLCAwLCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgNTE4NiwgMTI4OTAsIAotICAgIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCA3NzgyNiwgMCwgCi0gICAgNDI1NjIsIDAsIDAsIDAsIDEyODUyMCwgMTE0ODUsIDYxMDMsIDEyNzEyMywgMCwgMTE3MTgsIDAsIDEyODg5LCA5MjY1NywgCi0gICAgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAKLSAgICAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgCi0gICAgNjgyMTAsIDAsIDAsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgNDI1MjksIDc4NTg3LCAwLCA1OTU3LCAxMTA1OTMsIAotICAgIDg5MjYsIDAsIDAsIDEyODI3MywgMTA3NDUsIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgCi0gICAgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDAsIDEyODAzOCwgCi0gICAgMCwgMCwgMTI3MTc0LCA2NDI3OCwgOTIzNzAsIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzM4NzksIDE4MDEsIDEyODM1LCAKLSAgICAxMTkwMjksIDAsIDczODIzLCAwLCA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIAotICAgIDAsIDAsIDEyODU3MCwgMTIxMDYsIDAsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCAKLSAgICA5NTIyLCA3NDA3OSwgNzgyNjYsIDEyMDY3NCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCisgICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCA5ODM2MDUsIAorICAgIDk1MzIsIDY2MzU1LCAwLCA5ODMyMjgsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDE5NTAzMCwgCisgICAgMTk1MDU3LCAxMTQ0NSwgMCwgMjExMiwgMTk1MDU2LCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKKyAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIDAsIDEyMDQ5MywgCisgICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCisgICAgNDM5MSwgNjgxMzksIDk4MzA2MiwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDAsIDY0NzU3LCAKKyAgICAwLCAzOTEzLCAwLCAwLCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIAorICAgIDExNzkxLCAwLCAwLCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIDAsIDAsIDE2NywgOTgzODk3LCA3ODMwMSwgOTgzNjQ0LCAKKyAgICA3NDIxMSwgNDE4OTcsIDY4NDc3LCAwLCA5MTc1ODMsIDk4MzYyNSwgOTQwNjUsIDI0OTMsIDAsIDExODgxMSwgMCwgMCwgCisgICAgNjQzNTQsIDAsIDg3NzcsIDAsIDQwNiwgODg4NCwgMjM4NSwgMCwgOTI0NTAsIDAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAKKyAgICAxMjExNCwgMCwgOTE3NTc5LCA2NDkzNiwgMTk0Njk1LCAwLCAxMjA2MjksIDEwNTYxLCAwLCA4MzY1LCAxMjA1MzksIAorICAgIDk4Mzc2NSwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAwLCA5MTc1NzUsIDc4MzQsIDc0MTU5LCAwLCAKKyAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1OTYsIDE2MzksIDAsIDAsIDc0MTU3LCA2MzI3LCA2NzI0LCAwLCAKKyAgICAxMjgwODYsIDkyNTY2LCA2OTkxMCwgNDgxNywgNzg0NDYsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIDExMDIyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTk0NzYxLCAxMjM0MywgNjU3LCAKKyAgICAxOTUwNTQsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgMCwgMCwgMCwgNDQ1NiwgCisgICAgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDAsIDkxNzU5NSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIAorICAgIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDE5NTA0OCwgNDE0MDMsIDExOTk3NywgMCwgMCwgCisgICAgNDE0MDYsIDQzMjczLCA3NDE2MCwgMTE5OTgzLCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgCisgICAgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgCisgICAgNzAwNzAsIDMzNzUsIDEyODg2OSwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAwLCAwLCAxMjg3NzQsIDAsIAorICAgIDIyODIsIDAsIDEyNzgxMCwgMTE0MDEsIDk4MzgxMywgMCwgNjg0NTksIDAsIDAsIDAsIDAsIDY1NDM4LCAwLCA3MjgwLCAKKyAgICAxMjc4ODcsIDAsIDEyNzM4MSwgNDg2OCwgMTE5OTY3LCAxMTk5NjYsIDExODc5OCwgMCwgMCwgNDMxNjEsIDAsIDkyMzYwLCAKKyAgICAwLCA1MTgyLCAwLCAxMjA1NDIsIDAsIDAsIDQyMjYsIDExOTI0MywgMTIxMzUsIDU3MzIsIDQ0NjQsIDAsIDcxMzMwLCA5NzcsIAorICAgIDQ0NTgsIDAsIDAsIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxOTQ3OTAsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMCwgCisgICAgNzg2LCAwLCA0MzE3NCwgNjQzNDAsIDAsIDE5NDc2NywgMTIwNzIzLCA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCAKKyAgICA2NTAyNSwgMCwgMCwgMCwgOTM5NTYsIDAsIDY4NDQ0LCAwLCA5MjQzNywgMCwgMTE5MTYwLCAxMDIwNCwgOTI2NTYsIDAsIAorICAgIDEyNzgwOSwgOTgzNjM1LCAxMzk5LCA5ODM2NDMsIDY1MjE3LCAwLCA4ODUyLCAxMjg1NzEsIDI0MSwgMTI4NzgwLCA0OTA3LCAKKyAgICAwLCA5ODM2MzAsIDc5MzIsIDk3MjcsIDEyODg3MywgNzQyNTUsIDg3NDgsIDAsIDAsIDk4MzYzNCwgMCwgNDI3ODAsIDAsIDAsIAorICAgIDAsIDQyMTcsIDAsIDg2NTAsIDAsIDAsIDAsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAzOTY1LCAxMTkxMTksIDY3MTksIDAsIAorICAgIDEzMzAwLCA3ODQzOSwgOTM5NzEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAwLCAwLCA3MzgxNSwgNDQyMCwgMCwgNjQxMCwgCisgICAgNzc2MCwgMCwgMCwgMCwgMCwgMCwgNzI5NCwgMCwgMCwgMCwgOTA2NiwgMCwgMTE5OTMsIDQzMTg4LCAyNjI2LCA3NzYyLCAwLCAKKyAgICAwLCAwLCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCAwLCA3ODUxNiwgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgCisgICAgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjY5OTMsIDE1NDIsIDkyMzAzLCAwLCAwLCAwLCAwLCA3NDMxMSwgNzg0OTcsIDAsIAorICAgIDEwMTgxLCAwLCA0MzYyNCwgMCwgNzc3OSwgMCwgMTAxOTUsIDk0NzksIDYwMjksIDAsIDkyMjY4LCA5Njg5LCAwLCA2NTU3NywgCisgICAgODk5MywgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDEyNzAzMCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCAwLCAKKyAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgOTgzMzMxLCA5ODMzMzAsIDk4MzMyOSwgOTgzMzI4LCAyNzM1LCAKKyAgICA0MjgzMSwgNzc5MzUsIDEyNzEyMCwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgMCwgNzM5NDYsIDAsIDAsIDAsIDY4MTQwLCAKKyAgICA5ODM5MTksIDk1NzYsIDEyODg3MiwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAxMjcwNjMsIAorICAgIDc3MDksIDQxMTEyLCA5ODMxMzIsIDY2NTYwLCA0MjA0MSwgNDU3MiwgMTI4NzYsIDY2NTYxLCA5ODM3NDksIDY3NTgsIAorICAgIDk4MzkxNywgMTYxNSwgNTg1NSwgODA5LCAwLCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIDk4MzMyMCwgNzAxMDAsIAorICAgIDk4MzMxOCwgNzI2MCwgOTgzMzE2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgCisgICAgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDAsIDAsIDEyNzA2MCwgNjU4MjgsIDAsIDI4MywgNjg2NjUsIDc4ODEzLCAKKyAgICA1MzIsIDc4NjYzLCAwLCA5ODM3ODcsIDEyMDYwOSwgMCwgMzM3MCwgMCwgMTEzNjEsIDU0NDMsIDc4Nzc4LCA4MTUzLCAKKyAgICA3Mzc2NywgMCwgMTA3NDEsIDAsIDIyOTgsIDAsIDk4MzkwOCwgNjU0OTUsIDY0NzA2LCA5ODMzMTAsIDQzMzQ0LCA5ODMzMDgsIAorICAgIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCA5ODMzMDMsIDk4MzMwMiwgMCwgMCwgOTE1LCA0MzQyNSwgMCwgMCwgMCwgMCwgCisgICAgMTI3MTc4LCA0MzI2NCwgNzAwOTYsIDAsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgCisgICAgNTE4NiwgNzM2MCwgMTI3ODM3LCAwLCAxMjEwOCwgMCwgNjUxMjQsIDQzMTI3LCA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIAorICAgIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAwLCAxMjg1MjAsIDExNDg1LCA2MTAzLCAxMjcxMjMsIDk4MzI5NywgCisgICAgMTE3MTgsIDk4MzI5NSwgMTI4ODksIDkyNjU3LCAxMjcxMzcsIDAsIDAsIDAsIDU1MjQ1LCAwLCAxNjMwLCAxMjgyMzIsIAorICAgIDY1NDgzLCAwLCAxMjU2NSwgMCwgNjU0NzYsIDEyMDAxMywgMCwgMTE5NTU0LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIAorICAgIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAzMzc2LCA2ODIxMCwgMCwgMTI4Njc3LCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIAorICAgIDQyNTI5LCA3ODU4NywgMCwgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMyOTEsIDk4MzI5MCwgMTI4MjczLCAxMDc0NSwgCisgICAgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIAorICAgIDEyMDc3MywgMCwgOTgxMiwgMCwgNDQ2MCwgMCwgMCwgNzEzMDcsIDEyODAzOCwgMCwgMCwgMTI3MTc0LCA2NDI3OCwgCisgICAgOTIzNzAsIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzM4NzksIDE4MDEsIDEyODM1LCAxMTkwMjksIDAsIDczODIzLCAwLCAKKyAgICA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDk4MzI3OCwgOTgzMjc3LCAKKyAgICAxMjg1NzAsIDEyMTA2LCA5ODMyNzQsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCAKKyAgICA5NTIyLCA3NDA3OSwgNzgyNjYsIDY2NjA0LCAwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIDc3ODk5LCAKICAgICA3NzkwMCwgODQ1MSwgMCwgMCwgMCwgNjk3MzksIDAsIDAsIDAsIDAsIDI5MDgsIDAsIDQzMzg2LCA2NDkwMiwgNDI0MywgMCwgCi0gICAgMTIyMzksIDAsIDAsIDQ0NDEsIDAsIDAsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAwLCA0MTEsIDAsIDkxOTksIDAsIDQwNTYsIAotICAgIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCAwLCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCA2NDQzNywgCi0gICAgMTI3OTM1LCAxMTg4MTYsIDE5NDc0MiwgOTY4NCwgMjE2LCAwLCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCAwLCAwLCA5MjU4NSwgCi0gICAgOTE1OCwgNzc4NDIsIDEyMDY2NCwgNTc2OCwgMCwgMCwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIDY1ODk1LCAwLCAwLCAzMzM4LCAKLSAgICA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgMCwgMTI4NjgwLCAyNzk0LCA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIAotICAgIDUyMjIsIDUzODEsIDQzMTE0LCAwLCA1MTkzLCA1MTI1LCA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCAwLCAwLCAKLSAgICAwLCAzNDMwLCAwLCAwLCAwLCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCAKLSAgICA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIDEyODI1OSwgNjc0LCA2Mzk5MSwgMCwgMjk0NiwgCi0gICAgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIDgzNjQsIDUxMjMsIDExOTYyOCwgNTI4MSwgNTQ2OSwgCi0gICAgNTEyMSwgMTE5MjQ1LCAxMTg5OTMsIDAsIDUxMzAsIDAsIDAsIDc3OTkwLCAwLCAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCAKLSAgICA3Nzk5MSwgNTIxNiwgMCwgMCwgMCwgMCwgMzQ2OCwgNzAzMywgOTIzMCwgNTkzOSwgMTk1MDUyLCAwLCAwLCAxMjA2NzcsIAotICAgIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDAsIDAsIDExNzM5LCAwLCAKLSAgICA0MTk4MSwgMCwgNTkzOCwgMCwgMCwgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDAsIDEzMDU3LCAwLCAKLSAgICAxMjY5NzYsIDAsIDEwMDA5LCAwLCA0MTcwMywgMCwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgCi0gICAgMCwgMCwgOTI0NTcsIDAsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIAotICAgIDAsIDAsIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCAKLSAgICA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgCi0gICAgNzgyODYsIDExOTk0MywgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIAotICAgIDkxNDEsIDAsIDc4ODUwLCAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgCi0gICAgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAKLSAgICAwLCAwLCAyNzQ0LCAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgCi0gICAgNjYxOTgsIDQxODgwLCA2NjE4OCwgNjYxOTcsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIAotICAgIDczNzg4LCA3Nzg4LCA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCAKLSAgICA3ODE2MCwgNTUyNTksIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCAwLCA2ODYyNSwgMCwgNzI2OSwgCi0gICAgMCwgNTk2NCwgMTI5MDgsIDAsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDAsIDQ0MywgMCwgCi0gICAgNDk0NCwgNTQ2NywgMTE5NjAzLCAwLCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIDQxMzAzLCAwLCAxOTQ5MzEsIAotICAgIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAKLSAgICAxMjg2NzYsIDEyMDkxLCA3ODg5MywgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCAKLSAgICA2NTA1OSwgMCwgNjczOSwgMCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCAxMTk4MjksIDExOTgzMiwgNDY3NywgCi0gICAgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgNzgxNjYsIAotICAgIDQ2NzQsIDQ1NDgsIDQ0MDA1LCAxMTk5NDksIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIDE4NTUsIDAsIAotICAgIDY4NjY5LCAwLCA5MjQ0NSwgMTI3NTU0LCAwLCAwLCAxMTk2NTIsIDI3NDUsIDExNzk3LCAwLCAxMjgxNTksIDkyMDIsIAotICAgIDQ2NTQsIDAsIDAsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIDQ2NDksIDY1MjA5LCAwLCAwLCA0NjQ4LCA0MzA4MCwgMCwgMCwgMCwgCi0gICAgNjI0NiwgNjQ5NTAsIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDc4MDA1LCA5MjM4NCwgCi0gICAgNDMxODcsIDg2NjksIDAsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgMCwgMCwgMCwgNjgzNjksIDEyMDA1NCwgCisgICAgMTIyMzksIDAsIDAsIDQ0NDEsIDAsIDk4MzI3MSwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDk4MzI2NywgNDExLCA5ODMyNjUsIAorICAgIDkxOTksIDk4MzI2MywgNDA1NiwgMTE4OTkyLCA0MTg5MCwgMCwgMjczMCwgNDE2MDQsIDk4MzkyOCwgNTQyOCwgMTk0NzQzLCAKKyAgICAzMzY0LCA0MjI2NSwgNjQ0MzcsIDEyNzkzNSwgMTE4ODE2LCAxOTQ3NDIsIDk2ODQsIDIxNiwgMCwgMTQwMSwgMTI4MDUzLCAKKyAgICA0NDAxMiwgMCwgMCwgOTI1ODUsIDkxNTgsIDc3ODQyLCA2OTkwNSwgNTc2OCwgMCwgMCwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIAorICAgIDY1ODk1LCAwLCAwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgOTgzMjU1LCA5Mzk2MiwgMjc5NCwgCisgICAgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgCisgICAgNzc4NDYsIDE5NDc0NywgOTUzNCwgMCwgMCwgMCwgMzQzMCwgMCwgMCwgNzg3MTcsIDAsIDk4MSwgMCwgNDMzMCwgNzM5MjksIAorICAgIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDAsIDcwMzQsIDQxNjgzLCA2NDYxNywgMCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgCisgICAgMTI4MjU5LCA2NzQsIDYzOTkxLCA5ODMyNDMsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCAKKyAgICA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIDUxMjEsIDExOTI0NSwgMTE4OTkzLCAwLCA1MTMwLCAwLCAwLCAKKyAgICA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDAsIDAsIDAsIDAsIDM0NjgsIDcwMzMsIAorICAgIDkyMzAsIDU5MzksIDE5NTA1MiwgMCwgMCwgMTIwNjc3LCA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgCisgICAgMTAzODUsIDQxNzA2LCAwLCAwLCA5ODM0MDUsIDAsIDExNzM5LCA5ODM0MTgsIDQxOTgxLCAwLCA1OTM4LCAwLCA0Mzc2NiwgCisgICAgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDAsIDEzMDU3LCAwLCAxMjY5NzYsIDAsIDEwMDA5LCAwLCAKKyAgICA0MTcwMywgOTgzNjI5LCAxMjE2NSwgMCwgMCwgOTg4NSwgMCwgODA3NywgMCwgMTI3OTA4LCAwLCAwLCAwLCA5MjQ1NywgMCwgCisgICAgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgNDk4NywgNjQ1MTksIDAsIDEyODM0MCwgMCwgMCwgMCwgMTA5NzAsIAorICAgIDExNzMzLCAwLCAxMjA3OTIsIDAsIDE5OTQ0LCAwLCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAKKyAgICAyNzI0LCAwLCAwLCAxMjMxMywgMTEwNTkyLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAKKyAgICAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgMCwgNzg4NTAsIAorICAgIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTg0LCA4NjA2LCAzMzAzLCA0MTM3MiwgCisgICAgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIDExNTkzLCA0MzAwNywgNDQ3OCwgNjYxNzgsIDAsIDAsIDI3NDQsIAorICAgIDAsIDQ0NzcsIDExODk2NCwgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgMTE5OTYxLCA2NjE5OCwgNDE4ODAsIAorICAgIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCA2NjE4OSwgNzM3ODgsIDc3ODgsIAorICAgIDQ4NDcsIDAsIDEyNzc1OSwgMCwgMCwgMCwgMTU4MSwgNjUzNSwgNzgxNjEsIDEyOTU0LCA0MzAsIDc4MTYwLCA1NTI1OSwgCisgICAgNzgxNTgsIDEyODAzNiwgNTI3OCwgNDk0NSwgNDI4ODMsIDQ5NTAsIDk4MzQzMCwgNjg2MjUsIDk4MzQyOCwgNzI2OSwgMCwgCisgICAgNTk2NCwgMTI5MDgsIDk4MzU1NSwgMCwgNzQ3NjQsIDc0NDc3LCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDIxLCA0NDMsIAorICAgIDk4MzQxOSwgNDk0NCwgNTQ2NywgMTE5NjAzLCAwLCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIDQxMzAzLCAwLCAKKyAgICAxOTQ5MzEsIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgCisgICAgODI0LCAxMjg2NzYsIDEyMDkxLCA3ODg5MywgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgCisgICAgMTE5ODE5LCA2NTA1OSwgMCwgNjczOSwgMCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgMTE5ODMyLCAKKyAgICA0Njc3LCAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCAKKyAgICA3ODE2NiwgNDY3NCwgNDU0OCwgNDQwMDUsIDExOTk0OSwgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgCisgICAgMTg1NSwgOTgzNDA0LCA2ODY2OSwgOTgzNDAyLCA5MjQ0NSwgMTI3NTU0LCAwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgCisgICAgMTE3OTcsIDk4MzQxMCwgMTI4MTU5LCA5MjAyLCA0NjU0LCA5ODM0MDYsIDk4MzQwOCwgNjg2MzgsIDczOTkzLCAxMDUyNSwgCisgICAgNDY0OSwgNjUyMDksIDk4MzQwOSwgMCwgNDY0OCwgNDMwODAsIDk4MzM5OCwgOTgzMzk5LCA5ODMzOTYsIDYyNDYsIDY0OTUwLCAKKyAgICA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIDQzMTg3LCA4NjY5LCAKKyAgICA5ODM0MDcsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgOTgzMDYwLCA5ODM0MTEsIDAsIDY4MzY5LCAxMjAwNTQsIAogICAgIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA3OTkyLCAwLCAwLCA0NjYyLCA3ODAzMywgNzgwMzIsIAogICAgIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIDEwMTMwLCA2ODQ1MCwgNzgxMSwgCi0gICAgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIDAsIDAsIDAsIAotICAgIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIDQ4NjcsIDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCAKLSAgICA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCAwLCAwLCAwLCAwLCAwLCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIAotICAgIDc4ODg3LCAxMjg4MCwgNjUzMDcsIDQ2MTcsIDc4ODgzLCAwLCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgMCwgCi0gICAgNTk1OCwgMCwgMCwgNDIxNSwgOTc4OSwgOTE3OTQxLCA0MzIxLCA0NjIxLCAwLCA0MTMxMywgNTIyLCA1MzY4LCAwLCAKLSAgICA2NTgwMywgMCwgNTM2NiwgMTIyMDEsIDUzNzIsIDAsIDAsIDAsIDc3MjAsIDczOTAsIDI2OTYsIDAsIDAsIDQ2MzgsIDAsIAotICAgIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCAxOTQ5NjgsIDUzNzYsIDE4MzUsIDUzMzUsIDE5NDk2NiwgCisgICAgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIDk4MzQwMywgCisgICAgMCwgMCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgNDg2NywgMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAKKyAgICAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIDk4MzM4NywgOTQwNzAsIDk4MzM4NSwgOTgzMzg2LCAKKyAgICA5ODMzODMsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNzg4ODcsIDEyODgwLCA2NTMwNywgNDYxNywgNzg4ODMsIAorICAgIDk4MzM3OCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDk4MzM3MiwgNTk1OCwgMCwgOTgzNDI1LCA0MjE1LCAKKyAgICA5Nzg5LCA5MTc5NDEsIDQzMjEsIDQ2MjEsIDk4MzM4MSwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgNjU4MDMsIDAsIDUzNjYsIAorICAgIDEyMjAxLCA1MzcyLCAwLCA5ODM0MDEsIDAsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzM5MiwgMCwgNDYzOCwgOTgzMzk3LCAKKyAgICAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTI3ODMzLCA1Mzc2LCAxODM1LCA1MzM1LCAxOTQ5NjYsIAogICAgIDEyODA4OSwgNDYzMywgMCwgNjgxMTksIDExODAsIDQ2MzIsIDEyODA5MywgNTM4NywgNTMzMywgMCwgMCwgNDIwOTQsIAotICAgIDUzMzEsIDQ2MzQsIDExOTI4LCAwLCA1MzM4LCA0NjM3LCAxMjgxNzAsIDU5NzEsIDQyNDE0LCAwLCAxMjY4LCA2NTA5NywgCi0gICAgNDIzNjEsIDAsIDAsIDczODUzLCAxNDI3LCAwLCAwLCA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIDAsIAotICAgIDE2MDgsIDI3MzgsIDAsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIDc0Mzg0LCAwLCAKLSAgICA2ODM3NywgNjI0OCwgMCwgMCwgMCwgNDIzMTgsIDkyNTgyLCA1MjI5LCA0NzU3LCAwLCAwLCAyNzI4LCA0NzUyLCA2NDU2MywgCi0gICAgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMCwgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDEyNzMwMiwgMCwgMCwgCi0gICAgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA5MjIzMCwgMTAxMDgsIDEwMTEsIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCAKLSAgICA1NTc3LCAwLCAwLCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgCi0gICAgMCwgNTMxMiwgMCwgNTUyNSwgNTMzMCwgNTMxOSwgMCwgMCwgMTk0OTA3LCA0NDAwMywgMCwgMCwgMCwgMTIwNDk4LCAKLSAgICAxMjc4NTEsIDE5NTAwOSwgMCwgNzQwMjIsIDAsIDY0NjA5LCA2ODY0MywgMTIwNjM0LCAwLCA1NzIxLCAwLCA1NTE5LCAKLSAgICA4NjMyLCA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgMCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCi0gICAgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgMCwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIDU2LCAKLSAgICA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMCwgMCwgOTIyNzYsIDQ2MDgsIDY0MjYwLCA0MTEyNCwgNTE5MCwgCi0gICAgNjc2MjgsIDAsIDY4MTQ1LCA3MDg2LCAwLCAxMTkyNDMsIDY3NjIwLCAwLCAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAKLSAgICAwLCA2NzYyNSwgNTk2MCwgMCwgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAxMTk5MzksIDAsIAotICAgIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIDYyMzksIDExOTk1NiwgCi0gICAgNDEyNTYsIDAsIDY4MTM0LCAwLCA3NDIwOSwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIAotICAgIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY4MTM3LCAwLCAKLSAgICA1NzM5LCA0MTAyNCwgNDg2NiwgMCwgNzM5MDQsIDAsIDQ4NjksIDEyMDU2MywgMCwgNDIyMywgMTI4MjAxLCA2NjUwLCAwLCAKLSAgICAwLCAwLCAxMjc4OTAsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIDc4MTc2LCA2ODY2NywgNjgzODIsIDY4Njc2LCAKLSAgICAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgMCwgNjI0NSwgNjg2NTIsIDI3MzIsIDQyNzM0LCA3NDUsIAotICAgIDAsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDAsIDY4NjMxLCA0Mjc3NSwgMCwgMTk0OTU0LCAwLCAzMDk3LCAwLCAKLSAgICA1OTY2LCAwLCA0Nzc4LCAwLCAxMDg2MywgMCwgNDc4MSwgMCwgNjQ0MDcsIDAsIDAsIDg1NzcsIDEyODU2MiwgNjgxOTYsIAotICAgIDQzMjg1LCAxMDIxNiwgNDc4MiwgMCwgMCwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCA0Nzc2LCAKLSAgICA3MzgxOCwgMTE0OTIsIDg3MDAsIDAsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDAsIDkxNzU5OSwgMTAzNjIsIDE5NDcwNiwgCi0gICAgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIDQzMjc4LCA0MjYzNSwgMCwgMCwgNTk2MywgOTE3OTI2LCAwLCAwLCAKLSAgICA0ODUwLCAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgMTI3OTE4LCA1MTY0LCAwLCAxMzUwLCA1MTI0LCAKLSAgICA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgOTI0NzEsIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDAsIDQxMjY4LCAKLSAgICA0ODQ4LCAyNTMwLCA5MTc5MDksIDIwNjgsIDE5NjQsIDAsIDczNzYyLCAxMDQ1OCwgMCwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIAotICAgIDQ3OTQsIDAsIDY4MjExLCA4MzIyLCA0Nzk3LCA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIAotICAgIDAsIDMwMywgMCwgOTI2MjIsIDAsIDI0MzcsIDAsIDQyMjEsIDQ4NDQsIDExODg2OSwgMCwgMCwgMCwgMCwgMCwgNDMyOTIsIAotICAgIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMCwgMTE5MzI3LCAwLCAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCAKKyAgICA1MzMxLCA0NjM0LCAxMTkyOCwgOTgzNTk0LCA1MzM4LCA0NjM3LCAxMjgxNzAsIDU5NzEsIDQyNDE0LCAwLCAxMjY4LCAKKyAgICA2NTA5NywgNDIzNjEsIDAsIDAsIDczODUzLCAxNDI3LCAwLCAwLCA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIAorICAgIDk4MzM2NiwgMTYwOCwgMjczOCwgMCwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCisgICAgNzQzODQsIDk4MzM3MCwgNjgzNzcsIDYyNDgsIDk4MzM1NCwgOTgzMzU1LCA5ODMzNTIsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCisgICAgNDc1NywgMCwgMCwgMjcyOCwgNDc1MiwgNjQ1NjMsIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDAsIDEwNzEzLCA3MTY2LCAwLCAKKyAgICAyNjIyLCA3NDYwLCAxMjczMDIsIDAsIDAsIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCAKKyAgICA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMCwgMCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIAorICAgIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAwLCA1NTI1LCA1MzMwLCA1MzE5LCA5ODM0MTIsIAorICAgIDk4Mzg2MywgMTk0OTA3LCA0NDAwMywgMCwgOTgzNDcyLCA5ODM0MTUsIDEyMDQ5OCwgMTI3ODUxLCAxOTUwMDksIDk4Mzg1NiwgCisgICAgNzQwMjIsIDk4MzQxNCwgNjQ2MDksIDY4NjQzLCAxMjA2MzQsIDk4MzQ4MSwgNTcyMSwgOTgzMzkzLCA1NTE5LCA4NjMyLCAKKyAgICA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgOTgzMzQ0LCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAKKyAgICAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMzNDcsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCAKKyAgICA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDk4MzM0MSwgOTgzMzM4LCA3Nzg0OSwgNDYwOCwgNjQyNjAsIAorICAgIDQxMTI0LCA1MTkwLCA2NzYyOCwgMCwgNjgxNDUsIDcwODYsIDAsIDY3OTk4LCA2NzYyMCwgMCwgMjczNCwgMTEwNzQsIDAsIAorICAgIDY3NjI3LCA0MzU5MywgMCwgNjc2MjUsIDU5NjAsIDAsIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgCisgICAgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCAKKyAgICA2MjM5LCAxMTk5NTYsIDQxMjU2LCAwLCA2ODEzNCwgMCwgNzQyMDksIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAKKyAgICAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCAKKyAgICA3MTkzLCA2ODEzNywgMCwgNTczOSwgNDEwMjQsIDQ4NjYsIDAsIDczOTA0LCA5ODM4MzEsIDQ4NjksIDEyMDU2MywgMCwgCisgICAgNDIyMywgMTI4MjAxLCA2NjUwLCAxMjY1MDksIDAsIDk4MzQ1NSwgMTI3ODkwLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCAKKyAgICA3ODE3NiwgNjg2NjcsIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDAsIAorICAgIDYyNDUsIDY4NjUyLCAyNzMyLCA0MjczNCwgNzQ1LCAwLCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAwLCA2ODYzMSwgCisgICAgNDI3NzUsIDAsIDE5NDk1NCwgMCwgMzA5NywgMCwgNTk2NiwgOTgzNDc4LCA0Nzc4LCAwLCAxMDg2MywgMCwgNDc4MSwgMCwgCisgICAgNjQ0MDcsIDAsIDEyODMyMywgODU3NywgMTI4NTYyLCA2ODE5NiwgNDMyODUsIDEwMjE2LCA0NzgyLCAwLCAwLCAxMjA3NTcsIAorICAgIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMCwgMTMxNzYsIAorICAgIDY4MzYzLCAxMDQyNiwgMCwgOTE3NTk5LCAxMDM2MiwgMTk0NzA2LCAxNzE1LCA0ODQ5LCA4MjQyLCA5NTYxLCA3MzkyMiwgCisgICAgNDMyNzgsIDQyNjM1LCAwLCAwLCA1OTYzLCA5MTc5MjYsIDAsIDAsIDQ4NTAsIDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCAKKyAgICA0ODU0LCAxMjc5MTgsIDUxNjQsIDk4Mzg2MSwgMTM1MCwgNTEyNCwgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIAorICAgIDkyNDcxLCAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAwLCA0MTI2OCwgNDg0OCwgMjUzMCwgOTE3OTA5LCAyMDY4LCAxOTY0LCAKKyAgICAwLCA3Mzc2MiwgMTA0NTgsIDAsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAwLCA2ODIxMSwgODMyMiwgNDc5NywgCisgICAgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MTYsIDMwMywgOTgzMTAxLCA5MjYyMiwgCisgICAgOTgzNDE3LCAyNDM3LCAwLCA0MjIxLCA0ODQ0LCA5MjIxNiwgMCwgMCwgMCwgNzAwNDIsIDAsIDQzMjkyLCAwLCAyNDQxLCAKKyAgICAxMDczOSwgNjUwOTAsIDAsIDExOTMyNywgMTI2NTQxLCAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCAKICAgICA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgNDI4NzksIDExNzI1LCAwLCAwLCAKICAgICAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgNjQ5MzcsIDExOTIzMywgOTE0MCwgMTQwOCwgNTI2MSwgNDYwNywgMCwgMTgxLCAKLSAgICAwLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDAsIDAsIDQ5NjQsIAotICAgIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCA2NDE3OSwgOTQ4MiwgNDg3MywgCi0gICAgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgMCwgMCwgNzgwMjgsIDAsIAotICAgIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIAotICAgIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIDExNDk0LCAwLCA5NTYzLCAxMDg2NSwgCi0gICAgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgMCwgNzg3MTQsIDY0MTkxLCA2NDE5MCwgODg5OCwgNjQxODgsIDAsIDQxMDMwLCAKLSAgICA3ODgzNiwgMCwgOTE3ODM1LCA3ODgyMCwgOTE3ODM0LCAwLCA3ODgwNSwgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgCi0gICAgMzA4MiwgMCwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIAotICAgIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgCi0gICAgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgCi0gICAgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAwLCA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgCi0gICAgNjUyMjMsIDk5NDMsIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAxMzI4MiwgNjQxNzUsIDY0MTc0LCA2NDE3MywgCi0gICAgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDAsIDAsIDAsIDAsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgCi0gICAgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgCi0gICAgMTAyNDcsIDQyNzY4LCA3MTUsIDY0MTYxLCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIDEyMDM3OCwgMCwgMTEzNTIsIAotICAgIDU1MCwgOTkxMCwgMCwgMCwgNjY1NzksIDExNTUxLCAwLCAxOTUwODAsIDk1MDQsIDcxODcsIDAsIDEwMzczLCAwLCAKLSAgICAxMjA3OTEsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIDY5OTgsIAotICAgIDc4MTgwLCAwLCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIDExNDYsIDUwNjUsIAotICAgIDc4MTk2LCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgMCwgNzgyMDAsIAotICAgIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAwLCA5Nzg1LCA2NDcxNiwgMCwgMzkzMywgNzQ1NTksIAotICAgIDQ3NDAsIDc5NTQsIDAsIDAsIDQyNjA5LCAwLCA3NDE3NSwgMCwgMTI3MDE2LCAwLCAwLCA0MjEzMCwgMCwgNTE1MSwgCi0gICAgOTE3ODI5LCA5MTc4MjMsIDAsIDAsIDAsIDc2MjAsIDM4MDAsIDY1MTIyLCAwLCAwLCA4MzU1LCA3ODU0LCAwLCA5NTQsIAotICAgIDY0OTI3LCA0MTg1LCA0MTA0NSwgMTI3MTQxLCA0MTQzOCwgNDE0MzksIDY4NjY2LCAxMDcxMSwgNDU5MywgMTI3NzQ1LCAKLSAgICAxMjA1ODQsIDAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDAsIDAsIDAsIDY0NzU5LCA2MzgxLCA1MTY2LCA5ODg4LCAKLSAgICAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCA3ODIwNCwgNjQxMzEsIDMxMTksIDkxNzgxNCwgCi0gICAgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDAsIDc3ODc2LCA2MzYsIDExNjk4LCAwLCAwLCA5OTE2LCAxMTcwMSwgNzgzNiwgCi0gICAgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgOTI0MzEsIDExOTk2MCwgMTQ3NywgNDMyODksIDAsIDc0MzU4LCAKLSAgICA4NjE4LCAwLCA5OTA4LCAwLCAwLCAwLCAzOTM3LCAxMjMxMiwgMCwgMCwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgCi0gICAgMTE5OTYzLCA3NDUzMiwgMCwgNjI0NCwgMCwgMTk0NTgwLCAzOTM1LCAxMjA2NjUsIDAsIDAsIDExOTUwLCA1MzkyLCAKLSAgICA0MjI0OCwgNjUxMjksIDY4NjU2LCA1Mzk3LCAwLCAxMjA0NiwgMTI1OTksIDAsIDAsIDUzOTUsIDAsIDUzOTMsIDM1NCwgCi0gICAgNjg2MTUsIDExOTk0OCwgNzg1MDMsIDAsIDAsIDQyMDM5LCAwLCAwLCA2NDE0MiwgNjI2LCAwLCA1ODk1LCAwLCAwLCA1NzgwLCAKLSAgICAwLCAwLCAxMjg4NzQsIDAsIDAsIDQzMjk3LCAwLCA0MzExLCA0NjQ0LCA4ODE4LCAwLCAxMjgxODYsIDAsIDcxNDUsIDM5MTgsIAotICAgIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIAotICAgIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDExOTk0MiwgNjI0OSwgNDIxMTcsIAotICAgIDkyMjg3LCAxMjgyMjQsIDAsIDAsIDc0MDQ2LCAxMjA1ODMsIDQ5MTEsIDk4OCwgOTE3ODA3LCAwLCAwLCA0MzA2MSwgNzA1NCwgCisgICAgOTgzNDIyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIAorICAgIDk4MzYwMSwgMCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIAorICAgIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIDEyODU4MSwgMTI3NTgsIDM4NjUsIDAsIDAsIDEwNTAwLCAKKyAgICAwLCAxMTkwMjQsIDc4MDI4LCA5MjQwOCwgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgCisgICAgNTQ2MywgMCwgMzEyNSwgOTU2NywgMCwgNDg3OCwgNTQ1OSwgNDYwNCwgOTE3OTMxLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgCisgICAgMTE0OTQsIDEyNjQ5MiwgOTU2MywgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDk4MzQzMSwgNzg3MTQsIDY0MTkxLCAKKyAgICA2NDE5MCwgODg5OCwgNjQxODgsIDAsIDQxMDMwLCA3ODgzNiwgMCwgOTE3ODM1LCA3ODgyMCwgOTE3ODM0LCAwLCA3ODgwNSwgCisgICAgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzNDI5LCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgCisgICAgNzA3OSwgNTg1NiwgMTI3MDQzLCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDAsIDEwNTY0LCAKKyAgICA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIAorICAgIDQyNDgsIDAsIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCisgICAgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgCisgICAgMTMyODIsIDY0MTc1LCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCAwLCAwLCAwLCAwLCAyNTQzLCAKKyAgICAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIAorICAgIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIAorICAgIDEyMDM3OCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI2NzA1LCAwLCA2NjU3OSwgMTE1NTEsIDAsIDE5NTA4MCwgOTUwNCwgCisgICAgNzE4NywgMCwgMTAzNzMsIDAsIDEyMDc5MSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCAKKyAgICA2NTIyMiwgNjk5OCwgNzgxODAsIDAsIDMxMjgsIDQ3ODksIDUwNjcsIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgCisgICAgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAKKyAgICAwLCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgOTc4NSwgNjQ3MTYsIDAsIAorICAgIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAwLCAwLCA0MjYwOSwgMCwgNzQxNzUsIDAsIDEyNzAxNiwgMCwgOTgzODY0LCAKKyAgICA0MjEzMCwgMCwgNTE1MSwgOTE3ODI5LCA5MTc4MjMsIDAsIDkzOTgwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMCwgCisgICAgODM1NSwgNzg1NCwgMCwgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgCisgICAgMTA3MTEsIDQ1OTMsIDEyNzc0NSwgMTIwNTg0LCA5ODM0MDAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDAsIDAsIDAsIAorICAgIDY0NzU5LCA2MzgxLCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKKyAgICA3ODIwNCwgNjQxMzEsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDAsIDc3ODc2LCA2MzYsIDExNjk4LCAKKyAgICAwLCA5ODM0NDMsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCA5MjQzMSwgCisgICAgMTE5OTYwLCAxNDc3LCA0MzI4OSwgMCwgNzQzNTgsIDg2MTgsIDk4MzM5NCwgOTkwOCwgOTgzOTcyLCAwLCAwLCAzOTM3LCAKKyAgICAxMjMxMiwgMCwgOTgzMzk1LCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIDEyNjU5NCwgNjI0NCwgCisgICAgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDk4MzQ2OCwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCA2NTEyOSwgNjg2NTYsIAorICAgIDUzOTcsIDAsIDEyMDQ2LCAxMjU5OSwgMCwgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAzNTQsIDY4NjE1LCAxMTk5NDgsIAorICAgIDc4NTAzLCAwLCAwLCA0MjAzOSwgMCwgMCwgNjQxNDIsIDYyNiwgMCwgNTg5NSwgMCwgMCwgNTc4MCwgMCwgMCwgMTI4ODc0LCAKKyAgICAwLCAwLCA0MzI5NywgOTgzMDc5LCA0MzExLCA0NjQ0LCA4ODE4LCAwLCAxMjgxODYsIDAsIDcxNDUsIDM5MTgsIDY2NDUyLCAKKyAgICAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgCisgICAgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDExOTk0MiwgNjI0OSwgNDIxMTcsIDkyMjg3LCAKKyAgICAxMjgyMjQsIDAsIDAsIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA5MTc4MDcsIDAsIDk4MzQ2MCwgNDMwNjEsIDcwNTQsIAogICAgIDY0MTQ3LCAwLCA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDEyMDAwNiwgMTE5ODEsIDEyMjAyLCAwLCAKICAgICAxMTAzMiwgNjc2NTQsIDYwOTMsIDExNjA4LCA5NzUsIDY4NjYyLCA2NTg0MywgMTcwLCAwLCAwLCA0MTY5LCAwLCA0MTg1OSwgCiAgICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCAwLCAwLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCiAgICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCA5MTc4NjUsIDQ3MzcsIDExNzc5LCA0NzQyLCAxMjA1NjQsIDkyMzkxLCAKLSAgICA3MzczNiwgMCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCAwLCA5MjUyNSwgMCwgNTMwMCwgNDc0MSwgNDIxMDgsIAotICAgIDAsIDY0MTU5LCA0NzM2LCA2NDE0OCwgMCwgODQ5LCA5MjE5MSwgNzg0OTEsIDQzMjg4LCAwLCA2NjYyMCwgMCwgMTI3MzMxLCAKLSAgICA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgMCwgNzg3NiwgNjgxMzIsIDkxNzg3MiwgMzkyOCwgOTE3ODcwLCA0MzM3OCwgCi0gICAgMTA3MDYsIDcxOTgsIDAsIDQ4NDIsIDEyMDUzLCAxMjgxMjksIDAsIDQ4NDEsIDAsIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAKLSAgICAxNDkwLCAwLCAxMTk1OTEsIDAsIDQwOTcyLCA1MjQ1LCAwLCAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCAKLSAgICA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA5MTc4NDksIDQ4MjUsIDY5MjQwLCA5MTc4NTIsIAotICAgIDY4NjU1LCAwLCAwLCAwLCAwLCA2ODYyOCwgMCwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgNjY4NywgMTI3NCwgCi0gICAgMCwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIDExMDIzLCAxMTk1NTksIDQ4MzAsIDkxMzQsIAotICAgIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDAsIDAsIDY0MTAxLCAwLCAwLCA0ODI0LCAxMDYxNCwgMTIwMzkwLCAwLCAxODg4LCAKLSAgICAxOTYwLCA3ODYxLCA5MTc4NTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDAsIAotICAgIDYyMTEsIDAsIDM1OCwgNDE5OTcsIDQxODMzLCAxMTQ0MiwgMTA3NTgsIDY1Nzc0LCAwLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgCi0gICAgMCwgMCwgMCwgMTE5MDUzLCAwLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDAsIDAsIDQwMTcsIDEyODI3LCA1MjQxLCAKLSAgICAxMjAzOTIsIDAsIDQxMTE4LCAzOTI0LCAwLCAxMTM2NiwgOTE3ODQzLCAwLCAwLCA5MTc4NDYsIDQxMTE2LCA5MTc4NDQsIAotICAgIDkxNzU2NCwgMCwgMTEzNjMsIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDAsIDY2MjAyLCA4OTU3LCA0MTM5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAxMjc3OTMsIDEyNzU5LCA0NzI1LCAwLCA0NzI2LCAKLSAgICAwLCAwLCAwLCA5MTc5MDQsIDkxNzkwNSwgMCwgMTI3NTUsIDEyNzYyLCA0MDE1LCAwLCA4MDUyLCA0NzYsIDAsIDAsIAotICAgIDEyODI5NCwgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDY0MjE1LCA2NDIxNCwgMTY1NiwgNDE4MzEsIDAsIAorICAgIDczNzM2LCA5ODMzNTYsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgMCwgOTI1MjUsIDAsIDUzMDAsIDQ3NDEsIAorICAgIDQyMTA4LCA5ODMzNDYsIDY0MTU5LCA0NzM2LCA2NDE0OCwgMCwgODQ5LCA5MjE5MSwgNzg0OTEsIDQzMjg4LCAwLCA2NjYyMCwgCisgICAgOTE3OTE2LCAxMjczMzEsIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCA5ODMzNTgsIDc4NzYsIDY4MTMyLCA5MTc4NzIsIAorICAgIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAwLCA0ODQyLCAxMjA1MywgMTI4MTI5LCAwLCA0ODQxLCAwLCAKKyAgICA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgMCwgMTE5NTkxLCAxMjY1MTIsIDQwOTcyLCA1MjQ1LCAwLCAxMDExNCwgCisgICAgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA5MTc4NDksIAorICAgIDQ4MjUsIDY5MjQwLCA5MTc4NTIsIDY4NjU1LCAwLCA5ODMzODAsIDAsIDAsIDY4NjI4LCA5ODMzMzksIDk4NTAsIDExODkzNywgCisgICAgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAKKyAgICAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCAxMjY2MjYsIDY0MTAxLCAwLCAwLCAKKyAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAwLCAxODg4LCAxOTYwLCA3ODYxLCA5MTc4NTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIAorICAgIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDAsIDYyMTEsIDAsIDM1OCwgNDE5OTcsIDQxODMzLCAxMTQ0MiwgCisgICAgMTA3NTgsIDY1Nzc0LCAwLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDAsIDAsIDExOTA1MywgMCwgMTI3NjUsIAorICAgIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAKKyAgICAzOTI0LCAwLCAxMTM2NiwgOTE3ODQzLCAwLCAwLCA5MTc4NDYsIDQxMTE2LCA5MTc4NDQsIDkxNzU2NCwgMCwgMTEzNjMsIAorICAgIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDEyNjY0MSwgNjYyMDIsIDg5NTcsIDQxMzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNzQwLCAxMjg3MDIsIDQ3MjIsIDY4MTYsIDEyNzc5MywgMTI3NTksIDQ3MjUsIDk4MzM3NSwgNDcyNiwgMCwgCisgICAgMTk0ODkyLCAwLCAxMjgzMjEsIDkxNzkwNSwgMCwgMTI3NTUsIDEyNzYyLCA0MDE1LCAwLCA4MDUyLCA0NzYsIDAsIDAsIAorICAgIDEyODI5NCwgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDAsIAogICAgIDAsIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgMCwgNjQwNjcsIDEyNzMyOCwgODU1MiwgNjQxMTMsIDQxODQ1LCAKICAgICAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgMCwgMCwgCi0gICAgNzkzNSwgMjQyMCwgMCwgMTExNCwgOTI1OTksIDY3NTg1LCA3ODY3NSwgMTIwMDUzLCA5MjM1MCwgMTIwMDUxLCAzOTM4LCAKKyAgICA3OTM1LCAyNDIwLCAwLCAxMTE0LCA5MjU5OSwgNjc1ODUsIDcwMTA0LCAxMjAwNTMsIDkyMzUwLCAxMjAwNTEsIDM5MzgsIAogICAgIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDEyMDA2MSwgNjU0MTUsIDEyMDA1OSwgNjI5MiwgNjUzMDMsIDc5NTUsIAogICAgIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgOTE3ODkwLCA5MTc4OTEsIDY1MTUyLCA3MTksIDEyMDA0NCwgCiAgICAgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgNjY0NTAsIAogICAgIDQ3MTIsIDkxNzkwMiwgOTE3ODk5LCA5MTc5MDAsIDY1NDE2LCA4MTU1LCA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCAwLCAKLSAgICA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDAsIDAsIDAsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAwLCA2NjQzNywgCi0gICAgNjYwMjUsIDc4Njk5LCAwLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCA5MTc4NzQsIDc4Njk0LCA5MTc4ODAsIAorICAgIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMCwgMCwgMCwgMCwgNjU0MTQsIDY0NTQsIDEyMjksIDEyNjYwNiwgCisgICAgNjY0MzcsIDY2MDI1LCA3ODY5OSwgMCwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgOTE3ODc0LCA3ODY5NCwgOTE3ODgwLCAKICAgICA5MTc4NzcsIDkxNzg3OCwgNjU0MDUsIDY4MTU5LCAxMjg5MywgOTE3ODgyLCA1MzY1LCA0NTQ1LCA4OTAxLCA5MjQyMSwgCiAgICAgMTE5NTU1LCA0ODEzLCAxMjgyNjIsIDAsIDU5MjUsIDQ4MDgsIDY0MzMwLCAwLCA2NTQ3NSwgMTE4OTQwLCAxOTUwMjgsIAotICAgIDQ4MTQsIDAsIDQ4MTAsIDAsIDAsIDY0OTI4LCAxMDU0MywgMCwgMzUyMiwgMCwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKKyAgICA0ODE0LCAwLCA0ODEwLCAwLCAwLCA2NDkyOCwgMTA1NDMsIDAsIDM1MjIsIDcxMzM1LCA0MTQsIDY1NDA0LCAwLCAxOTUwMjcsIAogICAgIDY0NTYsIDczODIwLCAwLCA2NjkxLCA0MjE5MywgOTIyMjUsIDEyODE3MSwgMCwgNzQ0OTUsIDAsIDAsIDAsIDExODgyMCwgCiAgICAgOTc1MSwgNjU0MDcsIDEyODA4NSwgMTE3NzAsIDM5MTksIDAsIDAsIDY1MDYxLCAwLCAwLCAwLCAxMjIzNSwgMCwgMCwgCi0gICAgMTI3MjMzLCA2NDA5MiwgMCwgNjQwODAsIDAsIDY0MDkwLCAwLCAwLCAxMDE2MiwgMTAzMTAsIDAsIDg0NTQsIDEyNzg4OCwgCi0gICAgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDAsIDAsIDAsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgCi0gICAgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMCwgNDUyOSwgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgMTE5MTk5LCAKLSAgICA2OTY5MiwgMCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMCwgMCwgMCwgMTI5MDIsIDAsIDQyODkxLCA2NjMyNywgNzQyOTgsIDAsIAotICAgIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDAsIDQxOTMsIDkyMjUwLCA0MjQxLCAwLCA3OTk4LCAwLCAwLCAwLCAwLCAKLSAgICAyMzE2LCAxMTg4MjEsIDAsIDAsIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAwLCA1MzczLCAwLCAwLCAzNzYyLCAKLSAgICAxMDAxNSwgMTI3MzM1LCAxMTkyMzIsIDAsIDQxNTkwLCAwLCA5MjM3OCwgMzc4MCwgNzQ4NSwgNTc3OSwgMCwgNDIwMzcsIDAsIAotICAgIDM5MDYsIDEyMzQ5LCAwLCA4MzI2LCAwLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgMCwgNDM2MTMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4MCwgNzQ1NTgsIDEyNzMzMiwgNjgxMzgsIDEzMDcyLCAxODk0LCAwLCAwLCA2NTQ3OCwgCi0gICAgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAwLCAwLCAwLCAwLCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgMCwgMTE5MjM3LCAKLSAgICAwLCAxMjg4MDUsIDQ0NzAsIDExOTYxMywgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDAsIDUzNjcsIDg3NTYsIAotICAgIDEyNzE0MywgMCwgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDAsIDY5Njg1LCAwLCAwLCAwLCA0NDAyMCwgCi0gICAgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDQ2NjgsIDAsIDExOTYyNCwgMTQ2NSwgMTA4NTAsIAorICAgIDEyNzIzMywgNjQwOTIsIDk4MzQ2MiwgNjQwODAsIDAsIDY0MDkwLCAwLCA2OTkxMywgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAKKyAgICAxMjc4ODgsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgCisgICAgNzgxMTYsIDAsIDk4MzEzOSwgMCwgOTgzMDc0LCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDk4Mzg2NSwgCisgICAgMCwgOTgzNDI2LCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIAorICAgIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDk4MzQyNCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMCwgMCwgCisgICAgMjI5MSwgMTI5MDIsIDAsIDQyODkxLCA2NjMyNywgNzQyOTgsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgCisgICAgMCwgNDE5MywgOTIyNTAsIDQyNDEsIDk4MzA1NywgNzk5OCwgMCwgMCwgMCwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDAsIAorICAgIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAwLCA1MzczLCAwLCA5ODM4NzcsIDM3NjIsIDEwMDE1LCAxMjA2NzIsIAorICAgIDExOTIzMiwgMCwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCAwLCA0MjAzNywgMCwgMzkwNiwgMTIzNDksIAorICAgIDAsIDgzMjYsIDAsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAwLCA0MzYxMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjgwLCA3NDU1OCwgMTI3MzMyLCA2ODEzOCwgMTMwNzIsIDE4OTQsIDAsIDAsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgCisgICAgMTE3NzMsIDAsIDAsIDAsIDAsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NDMsIDExOTIzNywgMCwgMTI4ODA1LCAKKyAgICA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDAsIDUzNjcsIDg3NTYsIDEyNzE0MywgMCwgCisgICAgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDk4MzM0OCwgNjk2ODUsIDk4Mzc0NywgMCwgMCwgNDQwMjAsIAorICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAyMjkwLCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKICAgICAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMCwgMCwgNTM1MiwgMCwgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIAogICAgIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgOTIyNDEsIDQzNjA3LCAwLCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMCwgCiAgICAgNzQ0MTcsIDQwMTgsIDcxNTAsIDY4MTI3LCAwLCAwLCAwLCAwLCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKICAgICAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgMTcwNiwgMCwgNzg3NTEsIDcxNDYsIDAsIDY1MTUwLCAKLSAgICA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgMCwgNjk2NDEsIDEwNzUzLCAKKyAgICA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgOTgzNDI3LCA2OTY0MSwgMTA3NTMsIAogICAgIDEwODMwLCAwLCA2MTUsIDY0NDkwLCA3NTc0LCA5MjYxNywgNzc5MjIsIDAsIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgCi0gICAgMCwgMCwgMCwgMjAyMCwgMCwgNDAyMiwgMTI4NzgzLCAwLCA3NzkyMywgMCwgNDE2OTEsIDAsIDAsIDc0MzI5LCAwLCAKLSAgICA2NDYyMiwgOTA3MCwgMCwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDAsIDcwMDAsIDM5MDQsIDAsIAotICAgIDEyODE5OCwgMCwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIDAsIAotICAgIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDAsIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgOTM2NywgCi0gICAgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgMCwgNjQ0MDksIDM1OTYsIDAsIDAsIDk3NjMsIAorICAgIDAsIDAsIDY3OTk2LCAyMDIwLCAwLCA0MDIyLCAxMjg3ODMsIDAsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCAwLCA3NDMyOSwgCisgICAgMCwgNjQ2MjIsIDkwNzAsIDAsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAwLCA3MDAwLCAzOTA0LCAKKyAgICAwLCAxMjgxOTgsIDAsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAKKyAgICAwLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAwLCA5NjM2LCAwLCAxMDczOCwgNjk2MzQsIAorICAgIDkzNjcsIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIDAsIDY0NDA5LCAzNTk2LCAwLCAwLCA5NzYzLCAKICAgICAxMjAyODAsIDkyMTkyLCAxMjM0NywgMTI0LCAxMjk4MSwgNDExMjcsIDIwOTIsIDkyNjg3LCAwLCAwLCAwLCAxMDgyMCwgCi0gICAgNDM5ODcsIDAsIDAsIDE3NjksIDQxNzE1LCAyNDYzLCA3ODQ4OSwgMCwgMTI3NzAsIDAsIDE1MzgsIDAsIDQzMTI0LCAwLCAKLSAgICAxOTUwNTgsIDc3OTUsIDEyMDMwMCwgMCwgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAwLCA5NDk4LCAxMjcwMzIsIAorICAgIDQzOTg3LCAwLCAwLCAxNzY5LCA0MTcxNSwgMjQ2MywgNzg0ODksIDAsIDEyNzcwLCAxMjY1MDAsIDE1MzgsIDAsIDQzMTI0LCAKKyAgICAwLCAxOTUwNTgsIDc3OTUsIDEyMDMwMCwgMCwgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAwLCA5NDk4LCAxMjcwMzIsIAogICAgIDEyNzAzMywgMTIwMjg5LCAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgMTIwMjg3LCAxMjAyODYsIDI2NTAsIAogICAgIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIDU1MjI4LCAxMTc3NCwgNDEwMTYsIDAsIAogICAgIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgNjYzMzEsIDM0NTQsIDE5OTMwLCAwLCA0MTAxOSwgMCwgCiAgICAgMCwgNjUyOTIsIDY4MjIsIDEyODYyLCAwLCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgNzgyMDgsIDExODg3OSwgCi0gICAgNTUyMjMsIDAsIDAsIDQxODI2LCA4ODY1LCA2NDAyLCAwLCAxMzI3OSwgNzkxNywgMTIwMzQwLCAwLCA3NzMzLCAwLCA0OTk4LCAKLSAgICAwLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDAsIDAsIDAsIDQwMTMsIDAsIDEwODgxLCAwLCAwLCAwLCA3NDc4OCwgMjAxNCwgCi0gICAgMCwgMCwgOTc2NSwgMCwgMCwgMCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIDAsIDAsIDIwMTUsIAotICAgIDAsIDAsIDAsIDY2MzE4LCA0MzIzMywgMCwgNDI1MTcsIDAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIAotICAgIDY0NzQsIDc5NCwgMCwgMTI2NTYsIDEyODEyMiwgMTE5MzUzLCAxMjgyNzAsIDE2NjUsIDAsIDQ4MzMsIDAsIDExOTM1MSwgCi0gICAgMTI3MzY3LCAwLCAxODksIDEyNjExLCAwLCAwLCAyODU5LCA0ODM4LCAwLCA0ODM0LCA2NTA3OCwgMCwgMCwgNDgzNywgCi0gICAgMTI3MDYxLCA3NzAsIDAsIDgxMSwgMCwgNDEwNDIsIDkxNzU1MSwgNDEzMTgsIDY0NDI3LCAwLCAwLCA3ODg0OCwgMzg5NSwgCi0gICAgMCwgNzQzNDEsIDM5NzYsIDAsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgMCwgMCwgMCwgMCwgMCwgNDM2ODYsIDc4ODQ2LCAKLSAgICA0MTg3NywgMCwgMjg3MSwgNjQ2MTQsIDEyODc4NSwgOTk5LCAwLCA2MzQ1LCA0MTg3NiwgMjY2MywgMjAxNywgMCwgMCwgCi0gICAgMTEwNDAsIDEwMTUwLCAwLCA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgCi0gICAgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDAsIAotICAgIDEwODEyLCA3ODg1MSwgMCwgMCwgMzA3OCwgMTQwMiwgMCwgMTI4Mjc1LCAwLCAwLCAxMTkyNDgsIDM5NCwgMzA4OCwgMCwgCi0gICAgOTIxNzIsIDAsIDM5OTEsIDY0MzkxLCAwLCAwLCA0MjQsIDY2MzI4LCAxOTk5LCA2OTY1OSwgNzM5MTQsIDAsIDAsIDAsIDAsIAotICAgIDQyMjMxLCA4MjQ2LCAwLCAwLCAwLCA0MTg0MCwgMCwgMjM3NywgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIAotICAgIDEyNTU5LCAxMjU3MCwgODQ4OCwgMTAwMywgMjM3MywgOTQ0NiwgNzQ4MSwgOTQ0OCwgNDgsIDAsIDk0ODAsIDQ4MSwgMCwgCi0gICAgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgCi0gICAgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMCwgMCwgOTQyNCwgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIAotICAgIDIzNjIsIDk2NTUsIDAsIDIwMDQsIDkwOTYsIDk3ODIsIDEyODg0OCwgOTE3MiwgMTI4NTQ1LCAxOTk2NSwgMCwgNTk1NSwgCi0gICAgNjc2NjYsIDExMDgsIDAsIDc0NzczLCAwLCAwLCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgCi0gICAgMTM5MiwgMCwgMCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDAsIDAsIDY0NTI0LCAKLSAgICA5MjQxOCwgNDAxOSwgMCwgMCwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAwLCAwLCAwLCAwLCA0MjQxMCwgNzQ0NDgsIAotICAgIDExOTEzMiwgNjA1NCwgMTA2OTcsIDMxNjksIDQyMjk3LCA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDAsIDEyODEzOSwgMCwgCi0gICAgNjg2NzgsIDAsIDAsIDEwNDksIDAsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgCi0gICAgNjQ3NjAsIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAKLSAgICAzNiwgMCwgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgMCwgMjAwOSwgMCwgMCwgMTI3MTQyLCAKLSAgICA5NjQwLCAxMTk5NTEsIDAsIDEyMDY5NSwgODYyMSwgMCwgMTI4NTIsIDMwMzEsIDAsIDY0MzYxLCAwLCAxODIsIDE5NDcxOCwgCi0gICAgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDAsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIDEwODQ4LCA0NTcwLCAKLSAgICA2NTMwMSwgNDQwMTMsIDQyNTUsIDAsIDEwMTAyLCA0MTE4OSwgNDAwMywgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIAotICAgIDY5NjM1LCAwLCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgMCwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMCwgCi0gICAgNjU1MDYsIDAsIDY1ODYxLCA3NDA4MywgOTI2MDAsIDk5MzIsIDAsIDkyNDIzLCAxMTk5NTUsIDAsIDk4MTcsIDAsIAotICAgIDEyMDE0MCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIDkwNjMsIDEyNzA0NSwgMCwgMTE5OTU0LCAwLCAKLSAgICAxMjg5NywgMzc5MiwgMjAxMSwgMCwgNjA2NSwgNDMxNjAsIDAsIDE5NDcxNSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgCi0gICAgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIDc4MDAyLCAwLCA3NTEzLCAxODYzLCA0NzEwLCAKLSAgICAwLCA1OTU2LCA3NjIxLCA3ODAwNiwgOTI2MjQsIDQ3MDUsIDcxNiwgNzgwMDQsIDAsIDQ3MDQsIDEyMDA0MCwgMTIwMjcwLCAKLSAgICA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCAwLCAwLCA0MjY3MiwgNDcwOSwgMTA2ODAsIDAsIAotICAgIDQzMjkzLCAxMTk5NDQsIDAsIDExOTE2NCwgMTIwMzI4LCA5MjQ2NywgMCwgMTcwMCwgMTE5MjIzLCAwLCAwLCAxMjgxMTksIAotICAgIDQwMDQsIDAsIDEwOTY4LCA0MzI5NiwgMCwgODUwNiwgMCwgMCwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAKLSAgICAyODcwLCAwLCA3ODIxOCwgMCwgNzQ2MywgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCAwLCAxMjA0MjAsIDkyNDkwLCAKLSAgICAxMjAzMzEsIDgxMDksIDQzMTA1LCAwLCA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDAsIDAsIAotICAgIDQyNTI3LCAxMjkxMSwgNDM0MjcsIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCAKLSAgICA3OTkzLCA0Mjg4LCAxMjA0MTYsIDI2NzQsIDEzMjM4LCAxMTkyMiwgMCwgMTIwMzMwLCAzNTEwLCAxMzIzNCwgMCwgCi0gICAgMTIwNDA3LCA1NjA1LCA0MjA5NSwgMTEzNjQsIDAsIDEzODAsIDY1NjE3LCAxMjAyNTMsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAKLSAgICAxMjAzMDksIDEyMDY4MiwgOTQ5NSwgMTE5MzQ2LCAwLCA1OTU5LCAwLCA3Mzk3NiwgMTIwMzA1LCA0MzM3MSwgNjk0MSwgCi0gICAgMTE5MzQ5LCAxMzIwNSwgMTMyMTEsIDU4MDEsIDEyNzY5LCA2NTkwNSwgNDE2OTcsIDEyODMsIDEyMDMwMiwgNDc3OSwgMCwgCi0gICAgMzcxOSwgNDAwNiwgMCwgMTk5NTcsIDEyODc3MywgMjAyMSwgMTE5MzMyLCAxMjA2OTksIDExOTE1MCwgNDMwMjgsIDY1NDkzLCAKLSAgICA0MTgzOCwgMzg3NSwgNTk2MiwgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgNzc4NywgNzgyMzQsIAotICAgIDY1NDk0LCA2ODE1MywgMCwgMCwgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgCi0gICAgNTc3MSwgNDEyOTgsIDAsIDk3NDIsIDUyMSwgMCwgMTA4MDAsIDAsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCAKLSAgICA2NjMyMywgOTI4LCAwLCAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDAsIDY1NzgyLCA5ODQxLCAKLSAgICA4ODQzLCAxMjE0NSwgOTI0NzAsIDEwMDc0LCA3ODU0OCwgMCwgMzc2OSwgMCwgMCwgMCwgMCwgOTU3MywgMCwgNjUyOTAsIAotICAgIDg4NDksIDAsIDY1ODU1LCA2NTExMiwgMTc5NiwgMTIwNTA1LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDAsIAotICAgIDczODgsIDEwNjIxLCA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgMCwgMTIwNDU3LCAxMjY2MSwgNzYwOCwgCi0gICAgMTAzNTQsIDEwNDE4LCA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIAotICAgIDEzOTAsIDAsIDAsIDQyMSwgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgCi0gICAgMTIwMTIxLCA2NjAzNSwgMCwgMCwgNjU4NTEsIDQyNjA3LCAxMjgxOTAsIDkyNDAzLCAzMTY4LCAwLCA0MjEzNCwgMCwgCi0gICAgMjM3MCwgMjg0NiwgOTI2MDUsIDAsIDAsIDEyMDEzMiwgMCwgMTgzNiwgMCwgMCwgOTI1NTgsIDM3NDAsIDkyNTQ3LCA2MjkwLCAKKyAgICA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMCwgMTMyNzksIDc5MTcsIDc0NzU1LCAwLCA3NzMzLCAwLCAKKyAgICA0OTk4LCA5ODM4ODcsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMCwgMCwgNzAwNjEsIDQwMTMsIDAsIDEwODgxLCAwLCAwLCAKKyAgICAwLCA3NDc4OCwgMjAxNCwgMCwgMCwgOTc2NSwgMCwgMCwgMCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIAorICAgIDAsIDAsIDAsIDIwMTUsIDAsIDAsIDAsIDY2MzE4LCA0MzIzMywgMCwgNDI1MTcsIDAsIDAsIDAsIDEyNjk4LCA4MDk0LCAKKyAgICAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgMCwgMTI2NTYsIDEyODEyMiwgMTE5MzUzLCAxMjgyNzAsIDE2NjUsIDAsIDQ4MzMsIAorICAgIDk4MzA1MywgMTE5MzUxLCAxMjczNjcsIDAsIDE4OSwgMTI2MTEsIDAsIDAsIDI4NTksIDQ4MzgsIDAsIDQ4MzQsIDY1MDc4LCAKKyAgICAwLCAwLCA0ODM3LCAxMjcwNjEsIDc3MCwgMCwgODExLCAwLCA0MTA0MiwgOTE3NTUxLCA0MTMxOCwgNjQ0MjcsIDAsIAorICAgIDEyODIwOCwgNzg4NDgsIDM4OTUsIDAsIDc0MzQxLCAzOTc2LCAwLCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDAsIDI4NzEsIDY0NjE0LCAxMjg3ODUsIDk5OSwgMCwgNjM0NSwgCisgICAgNDE4NzYsIDI2NjMsIDIwMTcsIDAsIDAsIDExMDQwLCAxMDE1MCwgMCwgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIAorICAgIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAKKyAgICAxMjU2NiwgMTI1NjksIDEyNTU0LCAwLCAxMDgxMiwgNzg4NTEsIDAsIDAsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgMCwgMCwgCisgICAgMTE5MjQ4LCAzOTQsIDMwODgsIDAsIDkyMTcyLCAwLCAzOTkxLCA2NDM5MSwgMCwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCAKKyAgICA2OTY1OSwgNzM5MTQsIDAsIDAsIDAsIDAsIDQyMjMxLCA4MjQ2LCAwLCAwLCAwLCA0MTg0MCwgOTgzNjA5LCAyMzc3LCAKKyAgICAxMjk4LCA2NDAxMSwgMTI1NzIsIDExMzE4LCAxMjU1NywgMTI1NTksIDEyNTcwLCA3NDc5LCAxMDAzLCAyMzczLCA5NDQ2LCAKKyAgICA3NDgxLCA5NDQ4LCA0OCwgMCwgOTQ4MCwgNDgxLCAwLCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCAKKyAgICA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAwLCAwLCA5NDI0LCAKKyAgICA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgMjM2MiwgOTY1NSwgMCwgMjAwNCwgOTA5NiwgOTc4MiwgCisgICAgMTI4ODQ4LCA5MTcyLCAxMjg1NDUsIDE5OTY1LCAwLCA1OTU1LCA2NzY2NiwgMTEwOCwgMCwgNzQ3NzMsIDAsIDAsIDY0NzgyLCAKKyAgICAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAxMzkyLCAwLCAwLCAxMjczNjQsIDEwNjA2LCA4MDY1LCAKKyAgICAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMCwgMCwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCA5ODMyODAsIDQzMjgwLCA4MjE5LCAKKyAgICA2ODQwMiwgMTgxMiwgMTE5OTYzLCA5ODM2ODMsIDAsIDEyNjQ4OCwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIAorICAgIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDk4MzI1MywgNjg2NzgsIAorICAgIDAsIDAsIDEwNDksIDAsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAorICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCisgICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgOTgzMTMwLCAyMDA5LCAwLCAwLCAxMjcxNDIsIAorICAgIDk2NDAsIDExOTk1MSwgMCwgMTIwNjk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAwLCAKKyAgICAxODIsIDE5NDcxOCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIAorICAgIDExNzU0LCAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIDEwMTAyLCA0MTE4OSwgNDAwMywgCisgICAgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAwLCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgCisgICAgNjEyOCwgMCwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMCwgNjU1MDYsIDAsIDY1ODYxLCA3NDA4MywgOTI2MDAsIDk5MzIsIDAsIAorICAgIDkyNDIzLCAxMTk5NTUsIDAsIDk4MTcsIDAsIDEyMDE0MCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIAorICAgIDkwNjMsIDEyNzA0NSwgMCwgMTE5OTU0LCAwLCAxMjg5NywgMzc5MiwgMjAxMSwgMCwgNjA2NSwgNDMxNjAsIDAsIDE5NDcxNSwgCisgICAgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIAorICAgIDc4MDAyLCAwLCA3NTEzLCAxODYzLCA0NzEwLCAwLCA1OTU2LCA3NjIxLCA3ODAwNiwgOTI2MjQsIDQ3MDUsIDcxNiwgCisgICAgNzgwMDQsIDAsIDQ3MDQsIDEyMDA0MCwgMTIwMjcwLCA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCAwLCAKKyAgICA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAxMTkwNjUsIDQzMjkzLCAxMTk5NDQsIDAsIDExOTE2NCwgMTIwMzI4LCAKKyAgICA5MjQ2NywgMTAxODcsIDE3MDAsIDExOTIyMywgMCwgMCwgMTI4MTE5LCA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDk4MzYzMywgCisgICAgODUwNiwgMCwgMCwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAwLCA3ODIxOCwgOTgzMTA5LCA3NDYzLCAKKyAgICA0NzI5LCAwLCAyMzUsIDEzODQsIDQ3MjgsIDAsIDEyMDQyMCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgOTgzMTc0LCAKKyAgICA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDAsIDAsIDQyNTI3LCAxMjkxMSwgNDM0MjcsIDEzODMsIAorICAgIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAxMjA0MTYsIDI2NzQsIAorICAgIDEzMjM4LCAxMTkyMiwgMCwgMTIwMzMwLCAzNTEwLCAxMzIzNCwgMCwgMTIwNDA3LCA1NjA1LCA0MjA5NSwgMTEzNjQsIDAsIAorICAgIDEzODAsIDY1NjE3LCAxMjAyNTMsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIDEyMDY4MiwgOTQ5NSwgMTE5MzQ2LCAKKyAgICAwLCA1OTU5LCA2Nzk4NCwgNzM5NzYsIDEyMDMwNSwgNDMzNzEsIDY5NDEsIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAKKyAgICAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIDM3MTksIDQwMDYsIDk4MzU2OSwgMTk5NTcsIAorICAgIDEyODc3MywgMjAyMSwgMTE5MzMyLCAxMjA2OTksIDExOTE1MCwgNDMwMjgsIDY1NDkzLCA0MTgzOCwgMzg3NSwgNTk2MiwgCisgICAgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgNzc4NywgNzgyMzQsIDY1NDk0LCA2ODE1MywgMCwgMCwgCisgICAgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc4NSwgCisgICAgOTc0MiwgNTIxLCAwLCAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAKKyAgICAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAorICAgIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDk4MzEwNywgOTU3MywgMCwgNjUyOTAsIDg4NDksIDAsIAorICAgIDY1ODU1LCA2NTExMiwgMTc5NiwgMTIwNTA1LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDAsIDczODgsIDEwNjIxLCAKKyAgICA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgMCwgMTIwNDU3LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCAKKyAgICA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIDEzOTAsIDAsIDAsIDQyMSwgCisgICAgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgMTIwMTIxLCA2NjAzNSwgCisgICAgOTgzOTA0LCAwLCA2NTg1MSwgNDI2MDcsIDEyODE5MCwgOTI0MDMsIDMxNjgsIDAsIDQyMTM0LCAxMTgzMSwgMjM3MCwgCisgICAgMjg0NiwgOTI2MDUsIDAsIDAsIDEyMDEzMiwgMCwgMTgzNiwgMCwgMCwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKICAgICA2NTM3NCwgMTIwNDUxLCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTIwNDM0LCAwLCA2MTM1LCAzMTE4LCA3NDI2NSwgMTE5MDkzLCAKLSAgICAxMjA0NDYsIDAsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCAwLCAwLCAxMDYxOCwgMjU4NCwgMCwgMCwgMCwgOTk5OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjIwNCwgMCwgMCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDc0ODA5LCAxMjAxMzAsIDQyNjcsIAotICAgIDE2MzEsIDQyMjA2LCAxMjc4NjYsIDAsIDE5NTA0NiwgNjU3MDAsIDY2NTYyLCAwLCA2NDY0NSwgMCwgMCwgMCwgMTI1ODYsIAotICAgIDAsIDkyNDIsIDEyNzkyMiwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDAsIDc3OTMsIDc4Mjc1LCA5MzI4LCAwLCAKLSAgICA3ODM5MywgMTI2MDQsIDAsIDY2MTUsIDY3NjUwLCA5MjM0NCwgMzk4NiwgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCAKLSAgICAwLCAwLCA5NTQxLCA3ODI3NiwgMCwgMTEyNzUsIDg1NDAsIDExNDk4LCAwLCAwLCA0MTA0MCwgMjQ1OSwgMCwgMTMwNjAsIAotICAgIDQxMDQxLCA3NDQxMywgMCwgMCwgMCwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgMCwgCi0gICAgMCwgMTYwNiwgMTIwMzQ4LCAxMjAzNTEsIDMwOTMsIDY4NDM2LCAwLCAwLCAxMjA2NDksIDAsIDAsIDQzMTIsIDc0MDkxLCAKLSAgICAxMjAzMzcsIDEyMDMzNiwgMTE5MjMsIDQwMjMsIDEyMDMzMywgNTc2MywgMTIwMzM1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIAotICAgIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDAsIDAsIDAsIDExOTczLCAKKyAgICAxMjA0NDYsIDAsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCA5ODM3MzQsIDAsIDEwNjE4LCAyNTg0LCAwLCAwLCAwLCAKKyAgICA5OTk4LCAxMjg1NjQsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgCisgICAgMTIwMTMwLCA0MjY3LCAxNjMxLCA0MjIwNiwgNzc5ODMsIDAsIDE5NTA0NiwgNjU3MDAsIDY2NTYyLCAwLCA2NDY0NSwgMCwgCisgICAgMCwgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTI3OTIyLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzg4LCAKKyAgICA3NzkzLCA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDAsIDY2MTUsIDIyODUsIDkyMzQ0LCAzOTg2LCAKKyAgICA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDAsIDk4MzM1MCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAKKyAgICAxMTQ5OCwgMCwgOTgzMzQ5LCA0MTA0MCwgMjQ1OSwgMCwgMTMwNjAsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCAwLCAKKyAgICA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCA5ODMzNDIsIDAsIDE2MDYsIDEyMDM0OCwgCisgICAgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgOTgzMDYxLCAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIAorICAgIDEyMDMzNiwgMTE5MjMsIDQwMjMsIDEyMDMzMywgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgNjQ0MDYsIAorICAgIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgMCwgMCwgMTE4ODM3LCAxMTk3MywgCiAgICAgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDAsIAotICAgIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgMCwgMTAzODksIDAsIDAsIDQ4OTUsIAotICAgIDY1MzU4LCAwLCA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDE5NDkyMCwgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDAsIDAsIAotICAgIDcwMDQsIDAsIDY1ODgwLCAxMjc4ODYsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIDAsIDIzNzYsIDAsIDExOTMyMCwgMCwgCi0gICAgNTE5NywgMTI3MDQ2LCAxMjcwNDcsIDEyNzA0OCwgMjM2NiwgMTI3MDUwLCAxMjcwNTEsIDEyMDU1NCwgMTIwMDQ1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NDE4OCwgMTIwMjQxLCAwLCAwLCAxMjAwNDcsIDEyODU3NSwgMCwgMCwgMTIwMDQ5LCAwLCAKLSAgICAxODQ3LCAwLCAxMDMzOSwgMCwgNDIzODQsIDAsIDQyMjcsIDc0MTU4LCAwLCA5MjUwMSwgNDMwMzIsIDAsIDQyMzY1LCAwLCAKLSAgICAxMjY3MSwgMTEzODQsIDAsIDAsIDAsIDY0Nzk3LCAwLCA1ODIwLCAwLCAxMjAwNTIsIDEyMDA2NSwgMCwgMTIwMDY0LCAKLSAgICAxMjA2NTAsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgMTIwMDYzLCAwLCA3Mzc3LCAxMjc4NjcsIDQxNzk5LCA2NTUzMCwgCi0gICAgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAwLCAxMTg5MzgsIDAsIDEwODUzLCA5MjYsIDAsIDc0MTg0LCAwLCAKLSAgICAxMjAwNTUsIDAsIDQzMTc1LCAwLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAKLSAgICAwLCA1MjAsIDQyMDAsIDEyNjk5LCA4MzMxLCAwLCAzMDkxLCA0MTAzNCwgMTI3MzUzLCAwLCA4MzYwLCAwLCA3ODA0NCwgCi0gICAgMzIxLCA0MjI5LCA2NDU0MywgOTE3OTQ2LCA2NTU2MywgMCwgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDAsIDkxOTUsIAotICAgIDkyMzg2LCAxODYxLCAwLCA3MzczMywgMCwgMCwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIDM4NTksIDEyMTgxLCA0MTY2MCwgCi0gICAgODIwOSwgMCwgNzM4NjcsIDEyOTczLCAwLCA3NDc1NywgMTI3NTE0LCA0MTY1OCwgMCwgMCwgNTc2MCwgMCwgNzQzLCA0NDE0LCAKKyAgICAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIDAsIDEwMzg5LCAxMjY0ODUsIDAsIDQ4OTUsIAorICAgIDY1MzU4LCAwLCA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEyNzU0NiwgMCwgMCwgCisgICAgNzAwNCwgMCwgNjU4ODAsIDEyNzg4NiwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgMCwgOTM5OTYsIDIzNzYsIDAsIDExOTMyMCwgCisgICAgMCwgNTE5NywgMTI3MDQ2LCAxMjcwNDcsIDEyNzA0OCwgMjM2NiwgMTI3MDUwLCAxMjcwNTEsIDEyMDU1NCwgMTIwMDQ1LCAwLCAKKyAgICAwLCAwLCA5ODMwODQsIDAsIDAsIDAsIDc0MTg4LCA3MTM0MiwgOTgzMDg2LCA5ODM1NzMsIDEyMDA0NywgMTI4NTc1LCAwLCAKKyAgICAwLCAxMjAwNDksIDAsIDE4NDcsIDAsIDEwMzM5LCA5ODMzNTcsIDQyMzg0LCAwLCA0MjI3LCA3NDE1OCwgMCwgOTI1MDEsIAorICAgIDQzMDMyLCAwLCA0MjM2NSwgMCwgMTI2NzEsIDExMzg0LCAwLCA5ODM0NTcsIDAsIDY0Nzk3LCA5ODMzMzcsIDU4MjAsIAorICAgIDk4MzMzNiwgMTIwMDUyLCAxMjAwNjUsIDAsIDEyMDA2NCwgMTIwNjUwLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIAorICAgIDEyMDA2MywgMCwgNzM3NywgMTI3ODY3LCA0MTc5OSwgNjU1MzAsIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgCisgICAgOTgzMzMyLCAxMTg5MzgsIDAsIDEwODUzLCA5MjYsIDk4MzM2MSwgNzQxODQsIDk4MzM2MCwgMTIwMDU1LCAwLCA0MzE3NSwgCisgICAgMCwgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgMTE5NjA1LCA1MjAsIDQyMDAsIAorICAgIDEyNjk5LCA4MzMxLCAwLCAzMDkxLCA0MTAzNCwgMTI3MzUzLCA5ODM2NzIsIDgzNjAsIDAsIDc4MDQ0LCAzMjEsIDQyMjksIAorICAgIDY0NTQzLCA5MTc5NDYsIDY1NTYzLCAwLCA5MTc5NzQsIDI4NjEsIDQzNzkzLCAxMDA5NSwgMCwgOTE5NSwgOTIzODYsIAorICAgIDE4NjEsIDAsIDczNzMzLCAwLCAwLCA0MzA0MSwgMCwgNDM3OTQsIDEyODUzMCwgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCAKKyAgICAwLCA3Mzg2NywgMTI5NzMsIDAsIDc0NzU3LCAxMjc1MTQsIDQxNjU4LCAwLCAwLCA1NzYwLCAwLCA3NDMsIDQ0MTQsIAogICAgIDEyMDc2NiwgMCwgNDI2MzIsIDkxNzk3MywgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIDExOTA2MywgNDMyMjAsIAogICAgIDQzMzQxLCAwLCAxOTkxOSwgMCwgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMCwgMCwgMzUxMywgMCwgMTE4ODgzLCA0MzM0MiwgCiAgICAgMTE5MDY0LCA2NTUyOSwgNjUzNjQsIDEyODE5NywgMCwgNjQ4NSwgMTM5NywgMCwgNDE5ODYsIDkyNjc4LCAwLCAwLCAKLSAgICA3NDA5NywgMCwgNzQ3MSwgMTIwNzksIDAsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDAsIDAsIDAsIDAsIDEwOTksIAotICAgIDEwNDkwLCAwLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAwLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAKLSAgICAwLCA5MTc2MzEsIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgMCwgODI3MiwgMTI3ODEyLCAxOTkxMSwgNDIxOCwgCi0gICAgMzA4NywgNjQ5NjAsIDEyNzIzNCwgNDM1NjQsIDAsIDAsIDk1ODQsIDEwNDY1LCAwLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIAotICAgIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCA0MTc5NSwgNjQ2NjYsIDAsIDQzNTMwLCAKLSAgICAyNzUyLCAwLCAwLCAwLCA1OSwgMCwgMCwgMCwgOTIzNzEsIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIAotICAgIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAKLSAgICAxMzEyNywgMTIwMDY3LCAwLCAwLCAwLCA5MTc5NzcsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgCi0gICAgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIAotICAgIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgCi0gICAgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIAotICAgIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIAotICAgIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgCi0gICAgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAyODUxLCA0MzAxNywgMCwgMCwgNDM3MywgNzgwNTgsIDAsIAotICAgIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIDAsIDkyMzY1LCAwLCA2NDkyMiwgMCwgODE5MCwgCi0gICAgMTIwODMsIDAsIDAsIDY1MDYsIDY0MzEyLCA3NDM3NCwgMjM2OCwgMCwgNDQxOSwgMCwgMTE5MTI1LCAzNDM5LCAxODI1LCAKLSAgICAxMTkyLCAxMjAxMDYsIDg4OTEsIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCAKLSAgICA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCAKLSAgICA2NDgyNiwgMCwgOTE3Nzk4LCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDAsIAotICAgIDEyMTEyLCAwLCAwLCAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgCi0gICAgNzgyNTgsIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIAotICAgIDQxODk0LCAwLCA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCAwLCA2OTgxNiwgCisgICAgNzQwOTcsIDAsIDc0NzEsIDEyMDc5LCA2Nzk5NywgMTI2ODIsIDQzMjg3LCA5MjMxNywgMCwgOTgzMTQzLCA5ODM2OTgsIDAsIAorICAgIDAsIDEwOTksIDEwNDkwLCAwLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAwLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIAorICAgIDc4MjIyLCAxMzQ2LCAwLCA5MTc2MzEsIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgMCwgODI3MiwgMTI3ODEyLCAKKyAgICAxOTkxMSwgNDIxOCwgMzA4NywgNjQ5NjAsIDEyNzIzNCwgNDM1NjQsIDAsIDAsIDk1ODQsIDEwNDY1LCA5ODM4OTMsIAorICAgIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgNDI2NDIsIDEyMDIzMCwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAwLCAwLCAyNjUsIAorICAgIDQxNzk1LCA2NDY2NiwgMTI2NTA4LCA0MzUzMCwgMjc1MiwgMCwgMCwgOTgzNDg1LCA1OSwgMCwgOTgzNTkzLCAwLCA5MjM3MSwgCisgICAgNzc4NzMsIDQxODEwLCAwLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIDExOTM2NCwgMCwgNDIyNTIsIDQyMjEzLCA4MDA5LCAKKyAgICAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNjYyNTUsIDEzMTI3LCAxMjAwNjcsIDAsIDc0Mzk3LCAxMjAyMzUsIDkxNzk3NywgCisgICAgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgMTk0ODcwLCAyMTAzLCAxMDM4NywgNDQ1MywgNDMyNzYsIDkxNzc4MywgCisgICAgMTMxNTksIDAsIDY0ODEsIDQxMjEzLCAwLCAwLCAwLCAwLCA0MTk4MywgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgMCwgCisgICAgNDYyLCA2ODExMCwgMTA0OTMsIDAsIDgxMjksIDAsIDAsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAKKyAgICAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgMTE5MDEzLCA0MzM0MCwgMCwgNDEwMzMsIDY0OTMsIDQyNjI2LCAwLCAwLCAKKyAgICAxMTQyNiwgNzc4ODcsIDE2ODEsIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAKKyAgICAwLCA0MTg0MSwgNDMzMzgsIDAsIDAsIDU3MjYsIDY0OTE1LCA0MjE3NSwgMCwgMCwgNDE0OTcsIDY1MDQ0LCAxMjAxMDksIAorICAgIDI4NTEsIDQzMDE3LCA5ODM1ODksIDAsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIAorICAgIDAsIDY1MzYwLCAwLCA5MjM2NSwgOTE3Nzg5LCA2NDkyMiwgMCwgODE5MCwgMTIwODMsIDAsIDAsIDY1MDYsIDY0MzEyLCAKKyAgICA3NDM3NCwgMjM2OCwgMCwgNDQxOSwgOTgzODM4LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEyMDEwNiwgODg5MSwgCisgICAgMzA4MCwgMTIwMjI4LCAyMzQ3LCA1NDMwLCAwLCA4OTkwLCAyODQ4LCAwLCAxMjgyMjMsIDkyNTI4LCAyNDksIDAsIDAsIDAsIAorICAgIDEyMDY1OCwgMCwgMCwgODg4MywgOTE3ODAyLCA3MjgsIDY4MTc4LCA5OTUsIDAsIDAsIDY0ODI2LCAwLCA5MTc3OTgsIAorICAgIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgMCwgMTIyNzMsIDE5NDgxNCwgOTgzODQxLCAxMjExMiwgNjk5MTIsIDAsIAorICAgIDAsIDc0NDE5LCAxMjMzNSwgMTIwMTA0LCA5MTc3OTUsIDM0NDMsIDMxMjksIDAsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgCisgICAgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCA3ODI1NSwgMCwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMCwgNDE4OTQsIDAsIAorICAgIDYyNzcsIDQxNjcyLCA0MTg5MywgMTAwMTAsIDEyODY3OCwgMzU0MCwgMTI4NjQ5LCA4MzUsIDcxMzQwLCA2OTgxNiwgCiAgICAgMTE5ODY4LCA3NDQwOCwgMCwgNzM5NTksIDU0MjYsIDQyNTgsIDAsIDAsIDU0MjQsIDEyODEyNywgODI4MywgMCwgNTQzNCwgCi0gICAgMCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgNjQ4NiwgCi0gICAgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDAsIDQzMSwgMCwgMCwgCi0gICAgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCAwLCAxMzA5NiwgMTI4NjQzLCAwLCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCAKLSAgICA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAKLSAgICAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIDY2MDM5LCAwLCA3ODcxOCwgCi0gICAgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgOTA5NywgMCwgNDMwMTUsIAotICAgIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDAsIDAsIDAsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgCi0gICAgMTE4ODE4LCAwLCA1ODcyLCA2NDk1LCAwLCAwLCAwLCA5MjU0MywgMCwgMTIwNzMzLCAxMjg0OSwgMzk1MywgMTg5NywgMCwgCi0gICAgNjUwOTQsIDExOTk0LCA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAwLCAwLCAwLCA2ODQ3MywgNzQxMDQsIDUyMjgsIAotICAgIDEyODgwNCwgNzg2OCwgNDMxODQsIDAsIDAsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIDAsIDExNjIsIDAsIDI2NzEsIDAsIAotICAgIDAsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgMCwgMTk1MDA1LCAwLCAwLCAxOTkyMSwgNzQzMzEsIAotICAgIDExNDI0LCAxOTUwMDYsIDQ1NjcsIDQxODkxLCAwLCAwLCA1NTI0OSwgNDgyMCwgNjUyMzksIDE5NDY2MiwgMCwgMCwgCi0gICAgNDMwNDIsIDExOTIxMiwgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCAwLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgCi0gICAgMTEzMzEsIDYxNDcsIDE5NDk0MSwgNDMyODIsIDg4MzMsIDAsIDAsIDY1MDQsIDc4NDA4LCAxMjY5NzksIDEwNzE5LCAwLCAKLSAgICAxODk4LCAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMCwgMTk0NjcxLCA2NjQ4LCAxMDY3MSwgMjUyOCwgMCwgNjQ3ODksIAotICAgIDkxNjksIDgzOCwgMTI3MDkyLCAxMjA2OTcsIDg0NCwgNTAxNCwgMCwgMjU2LCAwLCA5OTkwLCAwLCA0MjczOSwgOTE3ODUxLCAKLSAgICA3NTQyLCA2NTQ2NCwgOTcyNiwgMCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCA3ODcxOSwgNjY1NzMsIDAsIDc4NzI0LCA3ODcxMiwgCi0gICAgMTE3NjEsIDE5NDY1NSwgMCwgNDEwOTQsIDAsIDAsIDAsIDAsIDkyNjg5LCA2MTk2LCA2OTQ1LCAxOTQ2MjgsIDE5NDg5MCwgCi0gICAgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgCi0gICAgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIDAsIDE2NjAsIDczOTE2LCAwLCAxMTg5MDUsIDc0MzYyLCAKLSAgICAwLCA5MjQ4NSwgMTk0NjUxLCAwLCAwLCAzMzk0LCAxOTQ4OTQsIDEyMDY2OCwgMCwgMCwgMTI3MzU4LCA2NjIxOSwgCi0gICAgMTI3MTgzLCA0MzI4NCwgMTk0NjU3LCA3ODE3LCAxODQxLCAxMTA1NSwgMTIwNTMzLCAxOTQ5NzksIDE5NDk4MiwgMTY2OSwgCi0gICAgMTA3NzYsIDE5NDk4MSwgNzcwMSwgMTk0OTgwLCAwLCAxOTQ5OTUsIDE3MzIsIDQwMzAsIDAsIDM5NjMsIDY2NjExLCAKLSAgICAxMjc1MzAsIDQxNzY4LCA2NDkxLCAwLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgMCwgNzg3MTMsIDY1MzI4LCAKLSAgICA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIAotICAgIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgCi0gICAgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIAotICAgIDY0NDg2LCAxMjczNzQsIDAsIDAsIDAsIDAsIDAsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIAotICAgIDExOTc1LCAxOTQ4NzgsIDAsIDkyNjA0LCAyNTU1LCA4NjI5LCAwLCA0MzE2OCwgNDE4NzIsIDQzNzA2LCA0NDk2LCAKLSAgICAxOTQ4NzksIDEyODE0OCwgMCwgMCwgMCwgMCwgMCwgNjQ3MzAsIDAsIDY2NzE0LCA2ODIyMiwgMCwgMCwgNjU1OTYsIAotICAgIDkyMzA2LCAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjcyNDIsIDY3ODcxLCA3NDM4NiwgCi0gICAgMCwgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCAKLSAgICA0MjgyMCwgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCAwLCAKLSAgICAzNDA2LCAxMDU0LCAxMTkwNjUsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAotICAgIDEyODcwNSwgMCwgMCwgOTY5MywgNDE5NDMsIDAsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDAsIDEwNTksIDk3OTAsIAotICAgIDg5OTUsIDEyODI4NiwgMCwgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCA5MjM3MiwgMCwgNzQ4MzAsIAotICAgIDc4NTY5LCAxMjc0MywgMCwgNjQ4MCwgOTE3NzYxLCA0MTc3OSwgNDI1ODAsIDY2NjAxLCAxMjIwNywgMTE5NjE5LCA2MzM1LCAKLSAgICA2NjYwMiwgMTEzMTIsIDY0ODA3LCAwLCAwLCA0MTc2NywgMCwgMCwgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDAsIAotICAgIDkxNzg2MSwgMCwgNzc5MjYsIDk3NzAsIDkyNDYsIDEyMjMwLCAwLCAwLCAwLCAxMDQ0OCwgNDE3ODMsIDQxNzg2LCAKLSAgICAxMjcwOTMsIDEyNzk3LCAyNzU1LCA2NDU3MSwgNzg1NzgsIDE5NDkyNywgNDg1NywgMCwgNDQyOCwgMTI3OTQsIDczNzU1LCAKLSAgICAxMjgwNjEsIDc4NTc0LCAwLCAwLCAwLCA1NzQ3LCA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgCi0gICAgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAwLCAxMjc5OCwgMTEyNzEsIDU3LCAwLCAwLCA5MTc4NjAsIAotICAgIDExOTA0MywgMCwgMTE5MTM0LCA0MzEzNywgNjk0LCAwLCA5ODc2LCAwLCAxMTkxNjgsIDAsIDc4ODIyLCA2NDUzNywgMCwgCi0gICAgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDAsIDAsIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDAsIDE1NzQsIDczODEsIAotICAgIDAsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIAotICAgIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCAKLSAgICA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCA4MDUxLCAwLCAxMTk2MDksIDAsIDk2NDQsIDAsIDAsIDAsIDE5NDkxNiwgCi0gICAgMTIwNzMyLCA2NjcxMCwgMTE4ODM0LCAwLCA3MzkwNiwgMCwgMTI3MTE0LCAwLCAxMDIzNCwgNTg0MywgMTE5MzksIDAsIAotICAgIDQyMTU3LCAwLCAzMTU3LCAxOTQ5MTgsIDY4MzkzLCAwLCAzNTA0LCAxMTkxNzgsIDAsIDEwODIyLCA1MTQ5LCA2NjAyOSwgCi0gICAgMTAyMjYsIDY1MTQyLCAwLCAzNTk0LCA0MjQyNCwgMTk0OTU5LCA0MCwgMTI2NTcsIDAsIDAsIDM4NiwgMCwgODgzNCwgMCwgCi0gICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNzc5MzIsIDQzMDQsIAotICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAwLCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDAsIDEzMzAzLCAwLCAKLSAgICA5MjM5MiwgMTk0NzU1LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDAsIDAsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIAotICAgIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCAxOTQ3NjIsIAotICAgIDI2NzIsIDM3MzUsIDEyNzQ3MSwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDExOTAyNCwgMCwgNDM3NDIsIAotICAgIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgMTI3OTc2LCAKLSAgICAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIDE5NDg1NSwgCi0gICAgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDAsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIDQyNTA3LCAxOTYyLCAKLSAgICA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMCwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCA1NDM3LCA3NDE3NCwgCi0gICAgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCAwLCAxOTksIDE5NDg0MywgNDEwNSwgMTk0ODQ1LCAxOTQ2OTksIDE5NDg0NywgCi0gICAgMTk0NzEwLCAxMTk4NzUsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0ODAsIDE5NTA3MCwgNjQ3MiwgNjU4MTQsIAotICAgIDczOTU0LCAwLCA0NzI0LCAwLCAwLCA5MTkxLCAwLCA2NDQzMiwgMCwgMCwgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgCi0gICAgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDAsIAotICAgIDAsIDEyNzg5MSwgMTI3NDg0LCAxOTQ4MzMsIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgCi0gICAgMTk0ODM4LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIAotICAgIDAsIDE5NDgxOCwgMTI4ODQ1LCAxOTQ4MjAsIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDE5NDgyNSwgCi0gICAgNzM5MjcsIDkyNDQ0LCAxOTQ3MzYsIDY1NzQ2LCAxMjc0NzYsIDc0NDA5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgCi0gICAgMTk0ODMxLCAxNjc3LCAwLCAwLCAxOTQ4MDYsIDkxNzg1NSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIAotICAgIDEwMTYwLCAwLCAwLCA3NTg1LCA2NTE2OSwgMjA1MiwgNDMwOCwgOTIxNzQsIDc0MTc3LCA3NTA1LCA1NDMsIDY0OTE2LCAKLSAgICA2NDczNiwgMCwgMCwgNjQ2NTUsIDAsIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIDAsIDY1MjY1LCAxOTQ2MzksIDAsIAotICAgIDEyNzE3MCwgMCwgMCwgMCwgMCwgMTI5OTQsIDkyNzI4LCAxMDgyOCwgMCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCAwLCAKLSAgICAwLCAwLCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMCwgODg0MSwgMCwgCi0gICAgNTE2LCAwLCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAotICAgIDc0NTIwLCA3NDMwOCwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDEyMDE3NCwgNjU4NCwgNzc0OSwgCi0gICAgMTEwMzcsIDAsIDE3NTgsIDAsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIDEyMDE5MywgCisgICAgOTgzNTkwLCAwLCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAwLCAxNDA0LCAzMDk1LCAxMTQzMiwgMTI4MzA3LCAzNDY0LCAKKyAgICA2NDg2LCA0ODE5LCAxMjgyMzMsIDAsIDU3MCwgODA5NSwgMzY3MiwgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgMTI4NTM5LCAKKyAgICA0MzEsIDAsIDAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgOTgzNjU0LCAxMzA5NiwgMTI4NjQzLCAwLCA0MzQwOCwgOTUxNiwgCisgICAgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgCisgICAgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDE5NTA2NiwgMCwgMCwgMCwgMCwgNjQ4NCwgMjU0MSwgCisgICAgNjYwMzksIDAsIDc4NzE4LCA5MjcyMywgMzU0OSwgMCwgOTExMCwgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTk0ODEyLCAKKyAgICA5MDk3LCAwLCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCA0MjcwNywgODU3MywgMCwgMTI2NDk0LCAwLCAwLCA0MjY5NCwgCisgICAgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgMCwgNTg3MiwgNjQ5NSwgMCwgMCwgMCwgOTI1NDMsIDAsIDEyMDczMywgCisgICAgMTI4NDksIDM5NTMsIDE4OTcsIDAsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMCwgCisgICAgNjg0NzMsIDc0MTA0LCA1MjI4LCAxMjg4MDQsIDc4NjgsIDQzMTg0LCAwLCAwLCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAwLCAKKyAgICAxMTYyLCA5MTc4NDcsIDI2NzEsIDAsIDAsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgMCwgMTk1MDA1LCAKKyAgICAwLCAwLCAxOTkyMSwgNzQzMzEsIDExNDI0LCAxOTUwMDYsIDQ1NjcsIDQxODkxLCAwLCA5ODM3NzksIDU1MjQ5LCA0ODIwLCAKKyAgICA2NTIzOSwgMTk0NjYyLCAwLCAxOTQ2NjUsIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgCisgICAgMCwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAxOTQ5NDEsIDQzMjgyLCA4ODMzLCAwLCAwLCA2NTA0LCAKKyAgICA3ODQwOCwgMTI2OTc5LCAxMDcxOSwgMCwgMTg5OCwgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDAsIDE5NDY3MSwgCisgICAgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCA5MTY5LCA4MzgsIDEyMDA4NywgMTIwNjk3LCA4NDQsIDUwMTQsIDAsIAorICAgIDI1NiwgMCwgOTk5MCwgMCwgNDI3MzksIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDAsIDY0ODksIDEwMDQ4LCA3NDMyNiwgCisgICAgNzg3MTksIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxOTQ2NTUsIDAsIDQxMDk0LCAwLCAwLCAxOTQ4OTMsIDAsIAorICAgIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTk0ODkwLCAxMjgxODQsIDEyMDQ5MSwgMTE4MTYsIDE5NDk0MywgNTczMywgCisgICAgMjkzMCwgMCwgMCwgNDEwOTgsIDAsIDQxMDkzLCAwLCA2NjYyNiwgNTg4LCA5NzYwLCAwLCAxOTQ3MTcsIDEyMzgsIDIwMCwgCisgICAgOTgzMjA1LCAxNjYwLCA3MzkxNiwgMCwgMTE4OTA1LCA3NDM2MiwgMCwgOTI0ODUsIDE5NDY1MSwgMCwgOTgzNjk3LCAzMzk0LCAKKyAgICAxOTQ4OTQsIDEyMDY2OCwgMCwgMCwgMTI3MzU4LCA2NjIxOSwgMTI3MTgzLCA0MzI4NCwgMTk0NjU2LCA3ODE3LCAxODQxLCAKKyAgICAxMTA1NSwgMTIwNTMzLCAxOTQ5NzksIDE5NDk4MiwgMTY2OSwgMTA3NzYsIDE5NDk4MSwgNzcwMSwgMTk0OTgwLCAwLCAKKyAgICAxOTQ5OTUsIDE3MzIsIDQwMzAsIDAsIDM5NjMsIDY2NjExLCAxMjc1MzAsIDQxNzY4LCA2NDkxLCAwLCA2NTMyNCwgOTE0LCAKKyAgICA2NTMyMywgODA3MSwgMzUzOCwgMCwgMjI4NywgNjUzMjgsIDkyNDQxLCA3NDM2NywgNzYxNCwgMCwgMTE4MTksIDAsIAorICAgIDEyMDA5LCAxMjM5OSwgMCwgNjc4NTIsIDY1NTM3LCAwLCAxMDg0MSwgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCAKKyAgICA4OTYwLCAwLCA5MjUyNywgNjUzMTcsIDc3ODgwLCAwLCAwLCAwLCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIAorICAgIDAsIDAsIDAsIDExOTYyMSwgOTI1MjksIDc0NTM2LCAxMjQ0NywgNjQ0ODYsIDEyNzM3NCwgMTI2NTYyLCA5ODMxMjksIDAsIAorICAgIDAsIDk4Mzc5MywgNDI3NjcsIDEwOTE1LCAwLCAxMjAwNywgNDM2OTUsIDEyMDUyMCwgMTE5NzUsIDE5NDg3OCwgMCwgCisgICAgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDMxNjgsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCAxMjgxNDgsIAorICAgIDEyMDI0MSwgMCwgMCwgMCwgMCwgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCA2NTU5NiwgOTIzMDYsIAorICAgIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDEyNjQ3MywgNjc4NzEsIDc0Mzg2LCAwLCAKKyAgICA4MjMzLCAxMjgyMCwgMCwgNjY4MywgMTk0ODc2LCAzNDQyLCAxMjE0NCwgMjg0MSwgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCAKKyAgICA2NDMyOSwgMTI3ODMyLCAwLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCA0MTEwMCwgMCwgNDExMDQsIDk0MDAzLCAzNDA2LCAKKyAgICAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDAsIDQ0MzQsIDEwNjksIDAsIDExODg2MiwgNjU3MzcsIDkxNzc2NSwgCisgICAgMTI4NzA1LCAwLCA5ODM2ODQsIDk2OTMsIDQxOTQzLCAxMjY1NjQsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDAsIAorICAgIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgOTgzNjg3LCA2NTkzNywgMCwgNDE3NjQsIDEwNjQ2LCAwLCAxMTg4MzMsIAorICAgIDkyMzcyLCAwLCA3NDgzMCwgNzg1NjksIDEyNzQzLCA5ODM2ODAsIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgCisgICAgMTIyMDcsIDExOTYxOSwgNjMzNSwgNjY2MDIsIDExMzEyLCA2NDgwNywgMCwgMCwgNDE3NjcsIDExOTYyOSwgOTgzNzU1LCAKKyAgICA0MzAyMCwgMTI4MjcxLCAzOTU1LCA3NDI1NCwgMCwgOTgzNzQ1LCA5MTc4NjEsIDAsIDc3OTI2LCA5NzcwLCA5MjQ2LCAKKyAgICAxMjIzMCwgMCwgMCwgMCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAKKyAgICAxOTQ5MjcsIDQ4NTcsIDAsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTI4MDYxLCA3ODU3NCwgMCwgNzQyODQsIDAsIDU3NDcsIAorICAgIDc4ODI1LCAwLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIAorICAgIDk4MzY4MiwgMTI3OTgsIDExMjcxLCA1NywgMCwgMCwgOTE3ODYwLCAxMTkwNDMsIDAsIDk0MDUxLCA0MzEzNywgNjk0LCAwLCAKKyAgICA5ODc2LCAwLCAxMTkxNjgsIDAsIDc4ODIyLCA2NDUzNywgMCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDAsIDAsIAorICAgIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDEyNjQ3OCwgMTU3NCwgNzM4MSwgMCwgMjUyNSwgNDg1MiwgNTc0OSwgCisgICAgNjg0NjUsIDEzMDI3LCA0MjgyNCwgMTIwNTc0LCAxMDM5LCA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIAorICAgIDAsIDc0MDE1LCA5MDU1LCA0MTg1MywgNDg1OCwgOTE3NzgwLCAwLCA0MzYsIDQ3NzEsIDAsIDI3ODYsIDAsIDQ4NTYsIAorICAgIDgwNTEsIDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDAsIDAsIDAsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgMTE4ODM0LCAKKyAgICA5ODMzNTEsIDczOTA2LCAxMjg2ODAsIDEyNzExNCwgMCwgMTAyMzQsIDU4NDMsIDExOTM5LCAwLCA0MjE1NywgMCwgMzE1NywgCisgICAgMTk0OTE4LCA2ODM5MywgMCwgMzUwNCwgMTE5MTc4LCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIDEwMjI2LCA2NTE0MiwgCisgICAgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTk0OTU5LCA0MCwgMTI2NTcsIDk4MzY1NiwgMCwgMzg2LCAwLCA4ODM0LCAwLCAKKyAgICAxMjgxNSwgNDM1NzQsIDAsIDczOTA3LCAwLCA3NDE5NiwgNzIyMCwgNzQ1MDQsIDAsIDc0MzE2LCAwLCA2NTMyMiwgNDMwNCwgCisgICAgNzQ1MDMsIDgxNjAsIDc4NzA3LCAxOTQ3NTMsIDAsIDAsIDEyODUyNiwgMTM0OCwgOTIzNDksIDc4NTk3LCAxMjY1MzksIAorICAgIDEzMzAzLCAwLCA5MjM5MiwgMTk0NzU1LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDAsIDAsIDc0Mzg3LCA3ODE3OSwgCisgICAgNzg1OTgsIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCAKKyAgICAxOTQ3NjIsIDI2NzIsIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAwLCAKKyAgICA0Mzc0MiwgMCwgOTQ4NywgMTE5OTU5LCAxMTkxMTcsIDM4NDIsIDEyODc2OCwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAKKyAgICAxMjc5NzYsIDAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNzg0NjgsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCisgICAgMTk0ODU1LCAxOTQ2OTAsIDE5NDg1NywgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCAKKyAgICA0MjUwNywgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDAsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgCisgICAgNTQzNywgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMCwgMTk5LCAxOTQ4NDMsIDQxMDUsIDE5NDg0NSwgCisgICAgMTk0Njk5LCAxOTQ4NDcsIDE5NDcxMCwgMTE5ODc1LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDgwLCAxOTUwNzAsIAorICAgIDY0NzIsIDY1ODE0LCA3Mzk1NCwgMCwgNDcyNCwgMCwgMCwgOTE5MSwgMCwgNjQ0MzIsIDk4MzgwOCwgOTgzMjQxLCAKKyAgICAxOTUwMjQsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDAsIDE5NTA1MSwgNjY3OSwgNzQ0MTIsIAorICAgIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgOTgzNjIyLCA5ODM2MjgsIDEyNzg5MSwgMTI3NDg0LCAxOTQ4MzMsIAorICAgIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIDEyODI1MiwgNzgxOTUsIDY1NDQyLCAKKyAgICAxMTk2MTAsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMCwgMTk0ODE4LCAxMjg4NDUsIDE5NDgyMCwgCisgICAgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgMTk0ODI1LCA3MzkyNywgOTI0NDQsIDE5NDczNiwgCisgICAgNjU3NDYsIDEyNzQ3NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxOTQ4MzEsIDE2NzcsIDAsIDAsIAorICAgIDEyNjU5MCwgOTE3ODU1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIDAsIDc1ODUsIAorICAgIDY1MTY5LCAyMDUyLCA0MzA4LCA5MjE3NCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAwLCAwLCA2NDY1NSwgMCwgCisgICAgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgMCwgNjUyNjUsIDE5NDYzOSwgMCwgMTI3MTcwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjk5NCwgOTI3MjgsIDEwODI4LCA5ODM5MzQsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgMCwgMCwgMCwgNTA2LCAKKyAgICA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDk4MzY3MSwgODg0MSwgMCwgNTE2LCAKKyAgICA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKKyAgICAxMTgyNywgNzQzMDgsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgNjU4NCwgNzc0OSwgCisgICAgMTEwMzcsIDAsIDE3NTgsIDEyNzA5MiwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAxOTM1LCAxMTUxNywgMTIwMTkzLCAKICAgICAxMjAxOTYsIDEyMDE5NSwgMTkzMSwgMTIwMTg5LCA3NDgzOSwgMTIwMTkxLCAxMjE3LCA2NDcwMiwgMTI2NDMsIDgyNSwgCiAgICAgMTI3ODM4LCAxOTQ5MDUsIDEyMjk0LCA5MjQyOCwgNzg4MzQsIDkxMzgsIDc4ODMxLCA3ODgzMywgMTI2MzEsIDc4ODI5LCAKICAgICAxMTA4MCwgNzQ1NTQsIDY0MDAwLCA1NTkxLCAxMjM5LCAwLCAxMTMxMywgMCwgMzQwMywgMCwgMCwgNjQzNjQsIDkyMjY5LCAKLSAgICAwLCA3NDU4MiwgODk5OCwgMTI5ODgsIDAsIDkxNTIsIDAsIDAsIDE5NDg5OCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgCi0gICAgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgNjkxNCwgNjc2MDMsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgCi0gICAgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAKLSAgICAxMjY2OCwgMTk0OTA0LCAyNDc3LCAxMjcyODUsIDAsIDEyNzMwMSwgMCwgNjc2MDQsIDE5NDg4MCwgMTI3MjM1LCA1NzMsIAotICAgIDEyNzI4MiwgMTk0ODg0LCAxMTQxNywgMTk0ODg2LCAxMTk4MTQsIDE5NDg4OCwgNjc1OTksIDAsIDE5NDg4OSwgNjc2MDcsIAotICAgIDExNDgyLCAwLCAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg4NDIsIDc4ODM5LCA2ODQxOSwgNzg4MzcsIAotICAgIDExNTg5LCA0MjE5NSwgMTk0ODcyLCAxOTQ1OTksIDEyNzI2MywgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMCwgNDI3ODgsIAotICAgIDY4NDE2LCA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY4NDc2LCA5NzE3LCAwLCAwLCA5OTcsIDAsIDAsIAotICAgIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgCi0gICAgNzM3OTYsIDAsIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDAsIDczNzkzLCAwLCA0MTcyLCAwLCAwLCA4MzczLCAKKyAgICAwLCA3NDU4MiwgODk5OCwgMTI5ODgsIDAsIDkxNTIsIDk4Mzg0MCwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAKKyAgICAzNDMzLCA5MjM5MywgMTI2MTUsIDE1OTQsIDQyMTkyLCA2OTE0LCA2NzYwMywgMCwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIAorICAgIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgMTI3Mjk2LCA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgCisgICAgNDEzOTMsIDEyNjY4LCAxOTQ5MDQsIDI0NzcsIDEyNzI4NSwgMCwgMTI3MzAxLCAwLCA2NzYwNCwgMTk0ODgwLCAxMjcyMzUsIAorICAgIDU3MywgMTI3MjgyLCAxOTQ4ODQsIDExNDE3LCAxOTQ4ODYsIDExOTgxNCwgMTk0ODg4LCA2NzU5OSwgMCwgMTk0ODg5LCAKKyAgICA2NzYwNywgMTE0ODIsIDAsIDM5ODEsIDMzNTcsIDAsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODg0MiwgNzg4MzksIDY4NDE5LCAKKyAgICA3ODgzNywgMTE1ODksIDQyMTk1LCAxOTQ4NzIsIDE5NDU5OSwgMTI3MjYzLCA2NDYwMiwgNjc2MTgsIDkyNTM5LCAwLCAKKyAgICA0Mjc4OCwgNjg0MTYsIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjg0NzYsIDk3MTcsIDAsIDAsIDk5NywgMCwgCisgICAgMCwgOTI1NzcsIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgMTI3NzYwLCAKKyAgICA3Mzc5NiwgMCwgMTE5MjI4LCAxMjAzNSwgMCwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCAwLCA0MTcyLCAwLCAwLCA4MzczLCAKICAgICAxMDg3MywgMTIxOTcsIDAsIDAsIDkyMjY1LCA2OTcwNiwgMCwgNzgyMTAsIDAsIDEyODExMCwgMTk0ODY1LCAxMjY5ODIsIAogICAgIDc0NTYzLCA2NDgyOCwgMTE0MTksIDE5NDg2OCwgNzY2LCAxMjU3LCAwLCAxMTg4NDUsIDExMzgxLCAzMjY1LCA2NjYxNywgCi0gICAgMzI3NCwgMTI3MzY1LCAwLCAwLCAwLCA3NDUyMiwgNDE5ODksIDAsIDAsIDEyODc5OCwgMzI2MywgMCwgNjU2NzIsIDAsIAotICAgIDMyNzAsIDY0NTM5LCAxMTQ4OSwgMCwgMCwgMCwgMCwgOTUwNSwgNjU1MTgsIDE5NDc3NiwgNzU2LCAxOTQ2MDUsIDAsIDAsIAotICAgIDAsIDcyNjEsIDAsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIAotICAgIDEyODAwLCAwLCA3NDIwMywgNjQ3MTgsIDAsIDAsIDkyNDM0LCAxMTg5MjksIDAsIDExNTc4LCAwLCAxMTkyOTYsIDAsIDAsIAotICAgIDAsIDAsIDc0NTY4LCA5MjU0LCAwLCAxNzk0LCAxMjAyMTcsIDY0NTIxLCA1NjI0LCAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAKLSAgICAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgMTIwMjExLCAxMjAyMTIsIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgCi0gICAgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgMCwgOTI1MjYsIDQ1MTEsIDAsIDAsIDY0Njc4LCAKLSAgICAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDE5NDc4MywgMCwgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIAotICAgIDg2OTQsIDk1NDYsIDAsIDAsIDEyMDQ3OCwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIAotICAgIDExOTYyNiwgNzgyMDIsIDY0MDU4LCA4Nzk5LCA0MjEzMSwgMCwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgODM3LCAKLSAgICAxMDU2NywgMCwgNDMxMDMsIDAsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNjY0NjQsIDEwNzU2LCAwLCAKLSAgICA0MjYwNiwgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAKLSAgICAxMjc3NzEsIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgCi0gICAgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgCi0gICAgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAKLSAgICAyMDQsIDAsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDAsIAotICAgIDAsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAxMTMzLCA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgCi0gICAgNDEzNDAsIDExODk3NSwgMTk0ODM1LCAxMDAwNSwgMTIzMjksIDQxMzMzLCAwLCA4NDg5LCAxOTQyLCAwLCAxOTQ4MzQsIAotICAgIDQyNTIwLCAxMjgyNDksIDAsIDAsIDEwNzYwLCA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMCwgNjQwMjUsIAotICAgIDkxNjcsIDQyMTUxLCA3ODI0NCwgMCwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAwLCA3NTgyLCAKLSAgICA3ODI1MiwgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDAsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCAKLSAgICA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIAotICAgIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAwLCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCA2NDAzMCwgCi0gICAgMjk0LCA0MTg3NCwgMCwgMTI2OTkxLCA2NTkyOSwgMCwgMCwgMCwgMCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgCi0gICAgMTk0ODQ0LCAwLCAxMTg3OTUsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIDAsIDExOTg4NiwgMTE5ODkxLCAxMTk4OTIsIAotICAgIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgMTE5ODk2LCAwLCA3ODAxLCA2NTU3OCwgMTk0ODM5LCAxMjkxNSwgNDM5NjgsIAotICAgIDMyOTcsIDk2OTksIDE5NDk1NSwgMTEzNSwgMCwgMCwgMTI4NTI1LCAxOTk1LCA2NzIyLCAwLCAwLCAyNTUyLCA0MTU0NiwgCi0gICAgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgNzg0OTYsIDAsIDAsIDY2ODIsIDAsIDc4Njc5LCA2NDcxMCwgNDE1NDcsIDAsIAotICAgIDIwMTMsIDEyODI5MSwgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgCi0gICAgMTE5OTA4LCA5MTM3LCA3MTU1LCA4OTk5LCAwLCA3ODUzMywgMzQ2NiwgMCwgMCwgMTk5NiwgMCwgMzQ1MywgNjI4MiwgMCwgCi0gICAgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDAsIDQxNzksIDY1MTE5LCAxOTk4LCAwLCAxODQyLCAwLCA5MjY3NCwgOTYyOCwgCi0gICAgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgMCwgMCwgMTIwMjAxLCAwLCAwLCAwLCAzMDU5LCA0NDAyNCwgCi0gICAgMTIwMjA0LCAxMTk5NTMsIDkyNjkzLCAwLCAwLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCAwLCAwLCAzNTkyLCAKLSAgICAxMDA3OCwgMCwgMCwgMCwgODU5MiwgNjU4NzAsIDY4MTY0LCAxMjg3OTIsIDEwNzQyLCAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgCi0gICAgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDMyNzQsIDEyNzM2NSwgMTI2NTIzLCA5NDA0MiwgOTgzOTQxLCA3NDUyMiwgNDE5ODksIDAsIDAsIDEyODc5OCwgMzI2MywgMCwgCisgICAgNjU2NzIsIDAsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgMCwgMCwgMCwgMCwgOTUwNSwgNjU1MTgsIDE5NDc3NiwgNzU2LCAKKyAgICAxOTQ2MDUsIDAsIDAsIDAsIDcyNjEsIDAsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAKKyAgICAxMjk0OSwgNjQ4NTYsIDEyODAwLCA5ODM4OTIsIDc0MjAzLCA2NDcxOCwgMTE1MDcsIDAsIDkyNDM0LCAxMTg5MjksIDAsIAorICAgIDExNTc4LCAwLCAxMTkyOTYsIDAsIDAsIDAsIDAsIDc0NTY4LCA5MjU0LCAwLCAxNzk0LCAxMjAyMTcsIDY0NTIxLCA1NjI0LCAKKyAgICAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgOTQwNjEsIDEyMDIxMiwgCisgICAgMTIwMjEzLCAxMjAyMTQsIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgMTE5MzMwLCA0NDUyLCAwLCAKKyAgICA5ODM3NjIsIDkyNTI2LCA0NTExLCAwLCA5ODM4NjgsIDY0Njc4LCAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDE5NDc4MywgCisgICAgNjk5MDMsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCA5NTQ2LCAwLCAwLCAxMjA0NzgsIAorICAgIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgCisgICAgNDIxMzEsIDAsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgMTA1NjcsIDAsIDQzMTAzLCAwLCAxMjA3NTQsIAorICAgIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAxMDc1NiwgNjQwNDcsIDQyNjA2LCA2NDA0NSwgNjQwNDQsIAorICAgIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIDEwMzQsIDMzOTIsIDEyNzc3MSwgNDMwOTEsIDY0MDMzLCAKKyAgICA2NDAzMiwgNDI3MzUsIDY0MDM4LCA2NDAzNywgNjQwMzYsIDY0MDM1LCA0MjkxLCAxOTQ5MjgsIDY0MDE1LCA2NDAxNCwgCisgICAgNjQ2ODEsIDE5NDkzMCwgMCwgNzgxNDUsIDAsIDQzMDkwLCAwLCAzNDc2LCA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCAKKyAgICA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIDIwNCwgMCwgNDgwMiwgNDExMSwgCisgICAgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgOTgzMjU4LCAwLCA0NzY3LCA5MzQzLCAKKyAgICA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIAorICAgIDE5NDgzNSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgMCwgODQ4OSwgMTk0MiwgMCwgMTk0ODM0LCA0MjUyMCwgMTI4MjQ5LCAwLCAKKyAgICAwLCAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDAsIDY0MDI1LCA5MTY3LCA0MjE1MSwgNzgyNDQsIAorICAgIDk4MzIyNiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAwLCA3NTgyLCA3ODI1MiwgNzgyNDgsIAorICAgIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDAsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCA3NTMyLCA0MTQxNCwgCisgICAgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIDEwNzUxLCA5MDUxLCAKKyAgICAxMjA3MjAsIDY3MDgsIDEwNTM1LCAwLCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCA2NDAzMCwgMjk0LCA0MTg3NCwgMCwgCisgICAgMTI2OTkxLCA2NTkyOSwgMCwgMCwgMCwgMCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAwLCA0MzUxLCAKKyAgICA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAxMTk4ODksIDExNDMzLCAxMTk4OTUsIAorICAgIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCAxOTQ5NTUsIDExMzUsIAorICAgIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgOTgzOTE2LCAwLCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgCisgICAgNzg0OTYsIDk4MzMxOSwgMCwgNjY4MiwgMCwgNzg2NzksIDY0NzEwLCA0MTU0NywgOTgzNjIxLCAyMDEzLCAxMjgyOTEsIAorICAgIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIDExOTkwOCwgOTEzNywgCisgICAgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIDIwMDIsIDIwMDAsIAorICAgIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgCisgICAgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgOTgzNjM3LCAwLCAwLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCAKKyAgICAxMTk5NTMsIDkyNjkzLCAwLCAwLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCAwLCAwLCAzNTkyLCAxMDA3OCwgMCwgCisgICAgMCwgMCwgODU5MiwgNjU4NzAsIDY4MTY0LCAxMjg3OTIsIDEwNzQyLCAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgMzI5NiwgCisgICAgMTI4NjUsIDE5OTcsIDE4OTUsIAogfTsKIAogI2RlZmluZSBjb2RlX21hZ2ljIDQ3CiAjZGVmaW5lIGNvZGVfc2l6ZSAzMjc2OAogI2RlZmluZSBjb2RlX3BvbHkgMzI3NzEKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX3N0YXJ0ID0gMHhmMDAwMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19lbmQgPSAweGYwMWMxOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lX2FsaWFzZXNbXSA9IHsKKyAgICAweDAwMDAsCisgICAgMHgwMDAwLAorICAgIDB4MDAwMSwKKyAgICAweDAwMDEsCisgICAgMHgwMDAyLAorICAgIDB4MDAwMiwKKyAgICAweDAwMDMsCisgICAgMHgwMDAzLAorICAgIDB4MDAwNCwKKyAgICAweDAwMDQsCisgICAgMHgwMDA1LAorICAgIDB4MDAwNSwKKyAgICAweDAwMDYsCisgICAgMHgwMDA2LAorICAgIDB4MDAwNywKKyAgICAweDAwMDcsCisgICAgMHgwMDA4LAorICAgIDB4MDAwOCwKKyAgICAweDAwMDksCisgICAgMHgwMDA5LAorICAgIDB4MDAwOSwKKyAgICAweDAwMDksCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBCLAorICAgIDB4MDAwQiwKKyAgICAweDAwMEIsCisgICAgMHgwMDBDLAorICAgIDB4MDAwQywKKyAgICAweDAwMEQsCisgICAgMHgwMDBELAorICAgIDB4MDAwRSwKKyAgICAweDAwMEUsCisgICAgMHgwMDBFLAorICAgIDB4MDAwRiwKKyAgICAweDAwMEYsCisgICAgMHgwMDBGLAorICAgIDB4MDAxMCwKKyAgICAweDAwMTAsCisgICAgMHgwMDExLAorICAgIDB4MDAxMSwKKyAgICAweDAwMTIsCisgICAgMHgwMDEyLAorICAgIDB4MDAxMywKKyAgICAweDAwMTMsCisgICAgMHgwMDE0LAorICAgIDB4MDAxNCwKKyAgICAweDAwMTUsCisgICAgMHgwMDE1LAorICAgIDB4MDAxNiwKKyAgICAweDAwMTYsCisgICAgMHgwMDE3LAorICAgIDB4MDAxNywKKyAgICAweDAwMTgsCisgICAgMHgwMDE4LAorICAgIDB4MDAxOSwKKyAgICAweDAwMTksCisgICAgMHgwMDFBLAorICAgIDB4MDAxQSwKKyAgICAweDAwMUIsCisgICAgMHgwMDFCLAorICAgIDB4MDAxQywKKyAgICAweDAwMUMsCisgICAgMHgwMDFDLAorICAgIDB4MDAxRCwKKyAgICAweDAwMUQsCisgICAgMHgwMDFELAorICAgIDB4MDAxRSwKKyAgICAweDAwMUUsCisgICAgMHgwMDFFLAorICAgIDB4MDAxRiwKKyAgICAweDAwMUYsCisgICAgMHgwMDFGLAorICAgIDB4MDAyMCwKKyAgICAweDAwN0YsCisgICAgMHgwMDdGLAorICAgIDB4MDA4MCwKKyAgICAweDAwODAsCisgICAgMHgwMDgxLAorICAgIDB4MDA4MSwKKyAgICAweDAwODIsCisgICAgMHgwMDgyLAorICAgIDB4MDA4MywKKyAgICAweDAwODMsCisgICAgMHgwMDg0LAorICAgIDB4MDA4NCwKKyAgICAweDAwODUsCisgICAgMHgwMDg1LAorICAgIDB4MDA4NiwKKyAgICAweDAwODYsCisgICAgMHgwMDg3LAorICAgIDB4MDA4NywKKyAgICAweDAwODgsCisgICAgMHgwMDg4LAorICAgIDB4MDA4OCwKKyAgICAweDAwODksCisgICAgMHgwMDg5LAorICAgIDB4MDA4OSwKKyAgICAweDAwOEEsCisgICAgMHgwMDhBLAorICAgIDB4MDA4QSwKKyAgICAweDAwOEIsCisgICAgMHgwMDhCLAorICAgIDB4MDA4QiwKKyAgICAweDAwOEMsCisgICAgMHgwMDhDLAorICAgIDB4MDA4QywKKyAgICAweDAwOEQsCisgICAgMHgwMDhELAorICAgIDB4MDA4RCwKKyAgICAweDAwOEUsCisgICAgMHgwMDhFLAorICAgIDB4MDA4RSwKKyAgICAweDAwOEYsCisgICAgMHgwMDhGLAorICAgIDB4MDA4RiwKKyAgICAweDAwOTAsCisgICAgMHgwMDkwLAorICAgIDB4MDA5MSwKKyAgICAweDAwOTEsCisgICAgMHgwMDkxLAorICAgIDB4MDA5MiwKKyAgICAweDAwOTIsCisgICAgMHgwMDkyLAorICAgIDB4MDA5MywKKyAgICAweDAwOTMsCisgICAgMHgwMDk0LAorICAgIDB4MDA5NCwKKyAgICAweDAwOTUsCisgICAgMHgwMDk1LAorICAgIDB4MDA5NiwKKyAgICAweDAwOTYsCisgICAgMHgwMDk2LAorICAgIDB4MDA5NywKKyAgICAweDAwOTcsCisgICAgMHgwMDk3LAorICAgIDB4MDA5OCwKKyAgICAweDAwOTgsCisgICAgMHgwMDk5LAorICAgIDB4MDA5OSwKKyAgICAweDAwOUEsCisgICAgMHgwMDlBLAorICAgIDB4MDA5QiwKKyAgICAweDAwOUIsCisgICAgMHgwMDlDLAorICAgIDB4MDA5QywKKyAgICAweDAwOUQsCisgICAgMHgwMDlELAorICAgIDB4MDA5RSwKKyAgICAweDAwOUUsCisgICAgMHgwMDlGLAorICAgIDB4MDA5RiwKKyAgICAweDAwQTAsCisgICAgMHgwMEFELAorICAgIDB4MDFBMiwKKyAgICAweDAxQTMsCisgICAgMHgwMzRGLAorICAgIDB4MENERSwKKyAgICAweDBFOUQsCisgICAgMHgwRTlGLAorICAgIDB4MEVBMywKKyAgICAweDBFQTUsCisgICAgMHgwRkQwLAorICAgIDB4MTgwQiwKKyAgICAweDE4MEMsCisgICAgMHgxODBELAorICAgIDB4MTgwRSwKKyAgICAweDIwMEIsCisgICAgMHgyMDBDLAorICAgIDB4MjAwRCwKKyAgICAweDIwMEUsCisgICAgMHgyMDBGLAorICAgIDB4MjAyQSwKKyAgICAweDIwMkIsCisgICAgMHgyMDJDLAorICAgIDB4MjAyRCwKKyAgICAweDIwMkUsCisgICAgMHgyMDJGLAorICAgIDB4MjA1RiwKKyAgICAweDIwNjAsCisgICAgMHgyMTE4LAorICAgIDB4MjQ0OCwKKyAgICAweDI0NDksCisgICAgMHhBMDE1LAorICAgIDB4RkUxOCwKKyAgICAweEZFMDAsCisgICAgMHhGRTAxLAorICAgIDB4RkUwMiwKKyAgICAweEZFMDMsCisgICAgMHhGRTA0LAorICAgIDB4RkUwNSwKKyAgICAweEZFMDYsCisgICAgMHhGRTA3LAorICAgIDB4RkUwOCwKKyAgICAweEZFMDksCisgICAgMHhGRTBBLAorICAgIDB4RkUwQiwKKyAgICAweEZFMEMsCisgICAgMHhGRTBELAorICAgIDB4RkUwRSwKKyAgICAweEZFMEYsCisgICAgMHhGRUZGLAorICAgIDB4RkVGRiwKKyAgICAweEZFRkYsCisgICAgMHgxRDBDNSwKKyAgICAweEUwMTAwLAorICAgIDB4RTAxMDEsCisgICAgMHhFMDEwMiwKKyAgICAweEUwMTAzLAorICAgIDB4RTAxMDQsCisgICAgMHhFMDEwNSwKKyAgICAweEUwMTA2LAorICAgIDB4RTAxMDcsCisgICAgMHhFMDEwOCwKKyAgICAweEUwMTA5LAorICAgIDB4RTAxMEEsCisgICAgMHhFMDEwQiwKKyAgICAweEUwMTBDLAorICAgIDB4RTAxMEQsCisgICAgMHhFMDEwRSwKKyAgICAweEUwMTBGLAorICAgIDB4RTAxMTAsCisgICAgMHhFMDExMSwKKyAgICAweEUwMTEyLAorICAgIDB4RTAxMTMsCisgICAgMHhFMDExNCwKKyAgICAweEUwMTE1LAorICAgIDB4RTAxMTYsCisgICAgMHhFMDExNywKKyAgICAweEUwMTE4LAorICAgIDB4RTAxMTksCisgICAgMHhFMDExQSwKKyAgICAweEUwMTFCLAorICAgIDB4RTAxMUMsCisgICAgMHhFMDExRCwKKyAgICAweEUwMTFFLAorICAgIDB4RTAxMUYsCisgICAgMHhFMDEyMCwKKyAgICAweEUwMTIxLAorICAgIDB4RTAxMjIsCisgICAgMHhFMDEyMywKKyAgICAweEUwMTI0LAorICAgIDB4RTAxMjUsCisgICAgMHhFMDEyNiwKKyAgICAweEUwMTI3LAorICAgIDB4RTAxMjgsCisgICAgMHhFMDEyOSwKKyAgICAweEUwMTJBLAorICAgIDB4RTAxMkIsCisgICAgMHhFMDEyQywKKyAgICAweEUwMTJELAorICAgIDB4RTAxMkUsCisgICAgMHhFMDEyRiwKKyAgICAweEUwMTMwLAorICAgIDB4RTAxMzEsCisgICAgMHhFMDEzMiwKKyAgICAweEUwMTMzLAorICAgIDB4RTAxMzQsCisgICAgMHhFMDEzNSwKKyAgICAweEUwMTM2LAorICAgIDB4RTAxMzcsCisgICAgMHhFMDEzOCwKKyAgICAweEUwMTM5LAorICAgIDB4RTAxM0EsCisgICAgMHhFMDEzQiwKKyAgICAweEUwMTNDLAorICAgIDB4RTAxM0QsCisgICAgMHhFMDEzRSwKKyAgICAweEUwMTNGLAorICAgIDB4RTAxNDAsCisgICAgMHhFMDE0MSwKKyAgICAweEUwMTQyLAorICAgIDB4RTAxNDMsCisgICAgMHhFMDE0NCwKKyAgICAweEUwMTQ1LAorICAgIDB4RTAxNDYsCisgICAgMHhFMDE0NywKKyAgICAweEUwMTQ4LAorICAgIDB4RTAxNDksCisgICAgMHhFMDE0QSwKKyAgICAweEUwMTRCLAorICAgIDB4RTAxNEMsCisgICAgMHhFMDE0RCwKKyAgICAweEUwMTRFLAorICAgIDB4RTAxNEYsCisgICAgMHhFMDE1MCwKKyAgICAweEUwMTUxLAorICAgIDB4RTAxNTIsCisgICAgMHhFMDE1MywKKyAgICAweEUwMTU0LAorICAgIDB4RTAxNTUsCisgICAgMHhFMDE1NiwKKyAgICAweEUwMTU3LAorICAgIDB4RTAxNTgsCisgICAgMHhFMDE1OSwKKyAgICAweEUwMTVBLAorICAgIDB4RTAxNUIsCisgICAgMHhFMDE1QywKKyAgICAweEUwMTVELAorICAgIDB4RTAxNUUsCisgICAgMHhFMDE1RiwKKyAgICAweEUwMTYwLAorICAgIDB4RTAxNjEsCisgICAgMHhFMDE2MiwKKyAgICAweEUwMTYzLAorICAgIDB4RTAxNjQsCisgICAgMHhFMDE2NSwKKyAgICAweEUwMTY2LAorICAgIDB4RTAxNjcsCisgICAgMHhFMDE2OCwKKyAgICAweEUwMTY5LAorICAgIDB4RTAxNkEsCisgICAgMHhFMDE2QiwKKyAgICAweEUwMTZDLAorICAgIDB4RTAxNkQsCisgICAgMHhFMDE2RSwKKyAgICAweEUwMTZGLAorICAgIDB4RTAxNzAsCisgICAgMHhFMDE3MSwKKyAgICAweEUwMTcyLAorICAgIDB4RTAxNzMsCisgICAgMHhFMDE3NCwKKyAgICAweEUwMTc1LAorICAgIDB4RTAxNzYsCisgICAgMHhFMDE3NywKKyAgICAweEUwMTc4LAorICAgIDB4RTAxNzksCisgICAgMHhFMDE3QSwKKyAgICAweEUwMTdCLAorICAgIDB4RTAxN0MsCisgICAgMHhFMDE3RCwKKyAgICAweEUwMTdFLAorICAgIDB4RTAxN0YsCisgICAgMHhFMDE4MCwKKyAgICAweEUwMTgxLAorICAgIDB4RTAxODIsCisgICAgMHhFMDE4MywKKyAgICAweEUwMTg0LAorICAgIDB4RTAxODUsCisgICAgMHhFMDE4NiwKKyAgICAweEUwMTg3LAorICAgIDB4RTAxODgsCisgICAgMHhFMDE4OSwKKyAgICAweEUwMThBLAorICAgIDB4RTAxOEIsCisgICAgMHhFMDE4QywKKyAgICAweEUwMThELAorICAgIDB4RTAxOEUsCisgICAgMHhFMDE4RiwKKyAgICAweEUwMTkwLAorICAgIDB4RTAxOTEsCisgICAgMHhFMDE5MiwKKyAgICAweEUwMTkzLAorICAgIDB4RTAxOTQsCisgICAgMHhFMDE5NSwKKyAgICAweEUwMTk2LAorICAgIDB4RTAxOTcsCisgICAgMHhFMDE5OCwKKyAgICAweEUwMTk5LAorICAgIDB4RTAxOUEsCisgICAgMHhFMDE5QiwKKyAgICAweEUwMTlDLAorICAgIDB4RTAxOUQsCisgICAgMHhFMDE5RSwKKyAgICAweEUwMTlGLAorICAgIDB4RTAxQTAsCisgICAgMHhFMDFBMSwKKyAgICAweEUwMUEyLAorICAgIDB4RTAxQTMsCisgICAgMHhFMDFBNCwKKyAgICAweEUwMUE1LAorICAgIDB4RTAxQTYsCisgICAgMHhFMDFBNywKKyAgICAweEUwMUE4LAorICAgIDB4RTAxQTksCisgICAgMHhFMDFBQSwKKyAgICAweEUwMUFCLAorICAgIDB4RTAxQUMsCisgICAgMHhFMDFBRCwKKyAgICAweEUwMUFFLAorICAgIDB4RTAxQUYsCisgICAgMHhFMDFCMCwKKyAgICAweEUwMUIxLAorICAgIDB4RTAxQjIsCisgICAgMHhFMDFCMywKKyAgICAweEUwMUI0LAorICAgIDB4RTAxQjUsCisgICAgMHhFMDFCNiwKKyAgICAweEUwMUI3LAorICAgIDB4RTAxQjgsCisgICAgMHhFMDFCOSwKKyAgICAweEUwMUJBLAorICAgIDB4RTAxQkIsCisgICAgMHhFMDFCQywKKyAgICAweEUwMUJELAorICAgIDB4RTAxQkUsCisgICAgMHhFMDFCRiwKKyAgICAweEUwMUMwLAorICAgIDB4RTAxQzEsCisgICAgMHhFMDFDMiwKKyAgICAweEUwMUMzLAorICAgIDB4RTAxQzQsCisgICAgMHhFMDFDNSwKKyAgICAweEUwMUM2LAorICAgIDB4RTAxQzcsCisgICAgMHhFMDFDOCwKKyAgICAweEUwMUM5LAorICAgIDB4RTAxQ0EsCisgICAgMHhFMDFDQiwKKyAgICAweEUwMUNDLAorICAgIDB4RTAxQ0QsCisgICAgMHhFMDFDRSwKKyAgICAweEUwMUNGLAorICAgIDB4RTAxRDAsCisgICAgMHhFMDFEMSwKKyAgICAweEUwMUQyLAorICAgIDB4RTAxRDMsCisgICAgMHhFMDFENCwKKyAgICAweEUwMUQ1LAorICAgIDB4RTAxRDYsCisgICAgMHhFMDFENywKKyAgICAweEUwMUQ4LAorICAgIDB4RTAxRDksCisgICAgMHhFMDFEQSwKKyAgICAweEUwMURCLAorICAgIDB4RTAxREMsCisgICAgMHhFMDFERCwKKyAgICAweEUwMURFLAorICAgIDB4RTAxREYsCisgICAgMHhFMDFFMCwKKyAgICAweEUwMUUxLAorICAgIDB4RTAxRTIsCisgICAgMHhFMDFFMywKKyAgICAweEUwMUU0LAorICAgIDB4RTAxRTUsCisgICAgMHhFMDFFNiwKKyAgICAweEUwMUU3LAorICAgIDB4RTAxRTgsCisgICAgMHhFMDFFOSwKKyAgICAweEUwMUVBLAorICAgIDB4RTAxRUIsCisgICAgMHhFMDFFQywKKyAgICAweEUwMUVELAorICAgIDB4RTAxRUUsCisgICAgMHhFMDFFRiwKK307CisKK3R5cGVkZWYgc3RydWN0IE5hbWVkU2VxdWVuY2UgeworICAgIGludCBzZXFsZW47CisgICAgUHlfVUNTMiBzZXFbNF07Cit9IG5hbWVkX3NlcXVlbmNlOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19zdGFydCA9IDB4ZjAyMDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19lbmQgPSAweGYwM2E1Oworc3RhdGljIGNvbnN0IG5hbWVkX3NlcXVlbmNlIG5hbWVkX3NlcXVlbmNlc1tdID0geworICAgIHsyLCB7MHgwMTAwLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDEwMSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAwNDUsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDY1LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBDOCwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRTgsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEM5LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBFOSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwQ0EsIDB4MDMwNH19LAorICAgIHsyLCB7MHgwMEVBLCAweDAzMDR9fSwKKyAgICB7MiwgezB4MDBDQSwgMHgwMzBDfX0sCisgICAgezIsIHsweDAwRUEsIDB4MDMwQ319LAorICAgIHsyLCB7MHgwMTJBLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDEyQiwgMHgwMzAwfX0sCisgICAgezMsIHsweDAwNjksIDB4MDMwNywgMHgwMzAxfX0sCisgICAgezMsIHsweDAwNkUsIDB4MDM2MCwgMHgwMDY3fX0sCisgICAgezIsIHsweDAwNEYsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDZGLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBEMiwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRjIsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEQzLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBGMywgMHgwMzI5fX0sCisgICAgezIsIHsweDAwNTMsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDczLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDE2QSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxNkIsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMTA0LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDEwNSwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMDQsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTA1LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDExOCwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMTksIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE4LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDExOSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTYsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE3LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExNiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTcsIDB4MDMwM319LAorICAgIHszLCB7MHgwMDY5LCAweDAzMDcsIDB4MDMwMH19LAorICAgIHszLCB7MHgwMDY5LCAweDAzMDcsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTJFLCAweDAzMDF9fSwKKyAgICB7MywgezB4MDEyRiwgMHgwMzA3LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDEyRSwgMHgwMzAzfX0sCisgICAgezMsIHsweDAxMkYsIDB4MDMwNywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNEEsIDB4MDMwM319LAorICAgIHszLCB7MHgwMDZBLCAweDAzMDcsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRDLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA2QywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNEQsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDZELCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA1MiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNzIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTcyLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDE3MywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNzIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTczLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE2QSwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNkIsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTZBLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE2QiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwRTYsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjU0LCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1NCwgMHgwMzAxfX0sCisgICAgezIsIHsweDAyOEMsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjhDLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDI1OSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNTksIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMjVBLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1QSwgMHgwMzAxfX0sCisgICAgezMsIHsweDA5OTUsIDB4MDlDRCwgMHgwOUI3fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0R9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0N9fSwKKyAgICB7MywgezB4MEI5NSwgMHgwQkNELCAweDBCQjd9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJCRX19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkJGfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzB9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDMX19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkMyfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzZ9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDN319LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkM4fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0F9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDQn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkNDfX0sCisgICAgezQsIHsweDBCQjYsIDB4MEJDRCwgMHgwQkIwLCAweDBCQzB9fSwKKyAgICB7MywgezB4MERDQSwgMHgyMDBELCAweDBEQkF9fSwKKyAgICB7MywgezB4MERDQSwgMHgyMDBELCAweDBEQkJ9fSwKKyAgICB7MywgezB4MERCQiwgMHgwRENBLCAweDIwMER9fSwKKyAgICB7MiwgezB4MTBFMywgMHgwMzAyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4MH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzgyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4M319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODR9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg1fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Nn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODd9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg4fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4OX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhCfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Q319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OER9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhFfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Rn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTB9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkxfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5Mn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk0fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5NX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk3fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5OH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTl9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlBfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5Qn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlEfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5RX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0EwfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBMX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QTJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0E3fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBQn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QUN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0FGfX0sCisgICAgezIsIHsweDE3QkIsIDB4MTdDNn19LAorICAgIHsyLCB7MHgxN0I2LCAweDE3QzZ9fSwKKyAgICB7MiwgezB4MzA0QiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNEQsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDRGLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzA1MSwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNTMsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEFCLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBBRCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQUYsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEIxLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBCMywgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQkIsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEM0LCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBDOCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMxRjcsIDB4MzA5QX19LAorICAgIHsyLCB7MHgwMkU1LCAweDAyRTl9fSwKKyAgICB7MiwgezB4MDJFOSwgMHgwMkU1fX0sCit9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eGxpbWl0ZWQuYyBiL01vZHVsZXMveHhsaW1pdGVkLmMKaW5kZXggZWM5MjRmMi4uNjYxYjZlMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eGxpbWl0ZWQuYworKysgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCkBAIC0xODcsOCArMTg3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBudWxsX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeVR5cGVfU2xvdCBOdWxsX1R5cGVfc2xvdHNbXSA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvemlwaW1wb3J0LmMgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCmluZGV4IDdhZTRmMGEuLjJmZWIyYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemlwaW1wb3J0LmMKKysrIGIvTW9kdWxlcy96aXBpbXBvcnQuYwpAQCAtNDksNyArNDksNyBAQAogLyogZm9yd2FyZCBkZWNscyAqLwogc3RhdGljIFB5T2JqZWN0ICpyZWFkX2RpcmVjdG9yeShQeU9iamVjdCAqYXJjaGl2ZSk7CiBzdGF0aWMgUHlPYmplY3QgKmdldF9kYXRhKFB5T2JqZWN0ICphcmNoaXZlLCBQeU9iamVjdCAqdG9jX2VudHJ5KTsKLXN0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSwKK3N0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBfaXNwYWNrYWdlLCBQeU9iamVjdCAqKnBfbW9kcGF0aCk7CiAKIApAQCAtNjMsMTA5ICs2MywxMDkgQEAKIHN0YXRpYyBpbnQKIHppcGltcG9ydGVyX2luaXQoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqcGF0aG9iaiwgKmZpbGVzOwotICAgIFB5X1VOSUNPREUgKnBhdGgsICpwLCAqcHJlZml4LCBidWZbTUFYUEFUSExFTisyXTsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZpbGVzLCAqdG1wOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4sIGZsZW47CisjaWZkZWYgQUxUU0VQCisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisjZW5kaWYKIAogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoInppcGltcG9ydGVyKCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp6aXBpbXBvcnRlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZwYXRob2JqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGgpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjb3B5IHBhdGggdG8gYnVmICovCi0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOwogICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJhcmNoaXZlIHBhdGggaXMgZW1wdHkiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhaaXBJbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmNoaXZlIHBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkoYnVmLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKSk7CiAKICNpZmRlZiBBTFRTRVAKLSAgICBmb3IgKHAgPSBidWY7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKCpwID09IEFMVFNFUCkKLSAgICAgICAgICAgICpwID0gU0VQOwotICAgIH0KKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBhdGgsICZQeUlkX3JlcGxhY2UsICJDQyIsIEFMVFNFUCwgU0VQKTsKKyAgICBpZiAoIXRtcCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgcGF0aCA9IHRtcDsKICNlbmRpZgogCi0gICAgcGF0aCA9IE5VTEw7Ci0gICAgcHJlZml4ID0gTlVMTDsKKyAgICBmaWxlbmFtZSA9IHBhdGg7CisgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICBmbGVuID0gbGVuOwogICAgIGZvciAoOzspIHsKICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKICAgICAgICAgaW50IHJ2OwogCi0gICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIHBhdGhvYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYnVmLCBsZW4pOwotICAgICAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIHJ2ID0gX1B5X3N0YXQocGF0aG9iaiwgJnN0YXRidWYpOworICAgICAgICBydiA9IF9QeV9zdGF0KGZpbGVuYW1lLCAmc3RhdGJ1Zik7CisgICAgICAgIGlmIChydiA9PSAtMikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmIChydiA9PSAwKSB7CiAgICAgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIGlmIChTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCi0gICAgICAgICAgICAgICAgLyogaXQncyBhIGZpbGUgKi8KLSAgICAgICAgICAgICAgICBwYXRoID0gYnVmOworICAgICAgICAgICAgaWYgKCFTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCisgICAgICAgICAgICAgICAgLyogaXQncyBhIG5vdCBmaWxlICovCisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoZmlsZW5hbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X0NMRUFSKGZpbGVuYW1lKTsKICAgICAgICAgLyogYmFjayB1cCBvbmUgcGF0aCBlbGVtZW50ICovCi0gICAgICAgIHAgPSBQeV9VTklDT0RFX3N0cnJjaHIoYnVmLCBTRVApOwotICAgICAgICBpZiAocHJlZml4ICE9IE5VTEwpCi0gICAgICAgICAgICAqcHJlZml4ID0gU0VQOwotICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBmbGVuID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhdGgsIFNFUCwgMCwgZmxlbiwgLTEpOworICAgICAgICBpZiAoZmxlbiA9PSAtMSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgIGxlbiA9IHAgLSBidWY7Ci0gICAgICAgIHByZWZpeCA9IHA7Ci0gICAgICAgIFB5X0NMRUFSKHBhdGhvYmopOworICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgMCwgZmxlbik7CiAgICAgfQotICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZSIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGZpbGVzID0gUHlEaWN0X0dldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgcGF0aG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmaWxlbmFtZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZmlsZXMgPSBQeURpY3RfR2V0SXRlbSh6aXBfZGlyZWN0b3J5X2NhY2hlLCBmaWxlbmFtZSk7CiAgICAgaWYgKGZpbGVzID09IE5VTEwpIHsKLSAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShwYXRob2JqKTsKKyAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAgICAgIGlmIChmaWxlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHppcF9kaXJlY3RvcnlfY2FjaGUsIHBhdGhvYmosIGZpbGVzKSAhPSAwKQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgZmlsZW5hbWUsIGZpbGVzKSAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYoZmlsZXMpOwogICAgIHNlbGYtPmZpbGVzID0gZmlsZXM7CiAKLSAgICBzZWxmLT5hcmNoaXZlID0gcGF0aG9iajsKLSAgICBwYXRob2JqID0gTlVMTDsKKyAgICAvKiBUcmFuc2ZlciByZWZlcmVuY2UgKi8KKyAgICBzZWxmLT5hcmNoaXZlID0gZmlsZW5hbWU7CisgICAgZmlsZW5hbWUgPSBOVUxMOwogCi0gICAgaWYgKHByZWZpeCAhPSBOVUxMKSB7Ci0gICAgICAgIHByZWZpeCsrOwotICAgICAgICBsZW4gPSBQeV9VTklDT0RFX3N0cmxlbihwcmVmaXgpOwotICAgICAgICBpZiAocHJlZml4W2xlbi0xXSAhPSBTRVApIHsKKyAgICAvKiBDaGVjayBpZiB0aGVyZSBpcyBhIHByZWZpeCBkaXJlY3RvcnkgZm9sbG93aW5nIHRoZSBmaWxlbmFtZS4gKi8KKyAgICBpZiAoZmxlbiAhPSBsZW4pIHsKKyAgICAgICAgdG1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYXRoLCBmbGVuKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCkpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzZWxmLT5wcmVmaXggPSB0bXA7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHBhdGgsIGxlbi0xKSAhPSBTRVApIHsKICAgICAgICAgICAgIC8qIGFkZCB0cmFpbGluZyBTRVAgKi8KLSAgICAgICAgICAgIHByZWZpeFtsZW5dID0gU0VQOwotICAgICAgICAgICAgcHJlZml4W2xlbiArIDFdID0gJ1wwJzsKLSAgICAgICAgICAgIGxlbisrOworICAgICAgICAgICAgdG1wID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMiLCBzZWxmLT5wcmVmaXgsIFNFUCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5wcmVmaXgpOworICAgICAgICAgICAgc2VsZi0+cHJlZml4ID0gdG1wOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgbGVuID0gMDsKLSAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocHJlZml4LCBsZW4pOwotICAgIGlmIChzZWxmLT5wcmVmaXggPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQorICAgICAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihwYXRob2JqKTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgUHlfWERFQ1JFRihmaWxlbmFtZSk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0xOTMsNyArMTkzLDcgQEAKIHsKICAgICBpZiAoc2VsZi0+YXJjaGl2ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjx6aXBpbXBvcnRlciBvYmplY3QgXCI/Pz9cIj4iKTsKLSAgICBlbHNlIGlmIChzZWxmLT5wcmVmaXggIT0gTlVMTCAmJiBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+cHJlZml4KSAhPSAwKQorICAgIGVsc2UgaWYgKHNlbGYtPnByZWZpeCAhPSBOVUxMICYmIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPnByZWZpeCkgIT0gMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8emlwaW1wb3J0ZXIgb2JqZWN0IFwiJVUlYyVVXCI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwgc2VsZi0+cHJlZml4KTsKICAgICBlbHNlCkBAIC0yMDIsNDkgKzIwMiw1OCBAQAogfQogCiAvKiByZXR1cm4gZnVsbG5hbWUuc3BsaXQoIi4iKVstMV0gKi8KLXN0YXRpYyBjaGFyICoKLWdldF9zdWJuYW1lKGNoYXIgKmZ1bGxuYW1lKQorc3RhdGljIFB5T2JqZWN0ICoKK2dldF9zdWJuYW1lKFB5T2JqZWN0ICpmdWxsbmFtZSkKIHsKLSAgICBjaGFyICpzdWJuYW1lID0gc3RycmNocihmdWxsbmFtZSwgJy4nKTsKLSAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQotICAgICAgICBzdWJuYW1lID0gZnVsbG5hbWU7Ci0gICAgZWxzZQotICAgICAgICBzdWJuYW1lKys7Ci0gICAgcmV0dXJuIHN1Ym5hbWU7CisgICAgUHlfc3NpemVfdCBsZW4sIGRvdDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZ1bGxuYW1lKTsKKyAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIoZnVsbG5hbWUsICcuJywgMCwgbGVuLCAtMSk7CisgICAgaWYgKGRvdCA9PSAtMSkgeworICAgICAgICBQeV9JTkNSRUYoZnVsbG5hbWUpOworICAgICAgICByZXR1cm4gZnVsbG5hbWU7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKGZ1bGxuYW1lLCBkb3QrMSwgbGVuKTsKIH0KIAogLyogR2l2ZW4gYSAoc3ViKW1vZHVsZW5hbWUsIHdyaXRlIHRoZSBwb3RlbnRpYWwgZmlsZSBwYXRoIGluIHRoZQogICAgYXJjaGl2ZSAod2l0aG91dCBleHRlbnNpb24pIHRvIHRoZSBwYXRoIGJ1ZmZlci4gUmV0dXJuIHRoZQotICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLiAqLwotc3RhdGljIGludAotbWFrZV9maWxlbmFtZShQeU9iamVjdCAqcHJlZml4X29iaiwgY2hhciAqbmFtZSwgY2hhciAqcGF0aCwgc2l6ZV90IHBhdGhzaXplKQorICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLgorCisgICByZXR1cm4gc2VsZi5wcmVmaXggKyBuYW1lLnJlcGxhY2UoJy4nLCBvcy5zZXApICovCitzdGF0aWMgUHlPYmplY3QqCittYWtlX2ZpbGVuYW1lKFB5T2JqZWN0ICpwcmVmaXgsIFB5T2JqZWN0ICpuYW1lKQogewotICAgIHNpemVfdCBsZW47Ci0gICAgY2hhciAqcDsKLSAgICBQeU9iamVjdCAqcHJlZml4OworICAgIFB5T2JqZWN0ICpwYXRob2JqOworICAgIFB5X1VDUzQgKnAsICpidWY7CisgICAgUHlfc3NpemVfdCBsZW47CiAKLSAgICBwcmVmaXggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHByZWZpeF9vYmopOwotICAgIGlmIChwcmVmaXggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUocHJlZml4KTsKLQotICAgIC8qIHNlbGYucHJlZml4ICsgbmFtZSBbKyBTRVAgKyAiX19pbml0X18iXSArICIucHlbY29dIiAqLwotICAgIGlmIChsZW4gKyBzdHJsZW4obmFtZSkgKyAxMyA+PSBwYXRoc2l6ZSAtIDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYocHJlZml4KTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByZWZpeCkgKyBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSArIDE7CisgICAgcCA9IGJ1ZiA9IFB5TWVtX01hbGxvYyhzaXplb2YoUHlfVUNTNCkgKiBsZW4pOworICAgIGlmIChidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBzdHJjcHkocGF0aCwgUHlCeXRlc19BU19TVFJJTkcocHJlZml4KSk7Ci0gICAgUHlfREVDUkVGKHByZWZpeCk7Ci0gICAgc3RyY3B5KHBhdGggKyBsZW4sIG5hbWUpOwotICAgIGZvciAocCA9IHBhdGggKyBsZW47ICpwOyBwKyspIHsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQocHJlZml4LCBwLCBsZW4sIDApKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBsZW4gLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQobmFtZSwgcCwgbGVuLCAxKSkgeworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKDsgKnA7IHArKykgewogICAgICAgICBpZiAoKnAgPT0gJy4nKQogICAgICAgICAgICAgKnAgPSBTRVA7CiAgICAgfQotICAgIGxlbiArPSBzdHJsZW4obmFtZSk7Ci0gICAgYXNzZXJ0KGxlbiA8IElOVF9NQVgpOwotICAgIHJldHVybiAoaW50KWxlbjsKKyAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIHAtYnVmKTsKKyAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgcmV0dXJuIHBhdGhvYmo7CiB9CiAKIGVudW0gemlfbW9kdWxlX2luZm8gewpAQCAtMjU0LDMyICsyNjMsMTEzIEBACiAgICAgTUlfUEFDS0FHRQogfTsKIAorLyogRG9lcyB0aGlzIHBhdGggcmVwcmVzZW50IGEgZGlyZWN0b3J5PworICAgb24gZXJyb3IsIHJldHVybiA8IDAKKyAgIGlmIG5vdCBhIGRpciwgcmV0dXJuIDAKKyAgIGlmIGEgZGlyLCByZXR1cm4gMQorKi8KK3N0YXRpYyBpbnQKK2NoZWNrX2lzX2RpcmVjdG9yeShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QqIHByZWZpeCwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgUHlPYmplY3QgKmRpcnBhdGg7CisgICAgaW50IHJlczsKKworICAgIC8qIFNlZSBpZiB0aGlzIGlzIGEgImRpcmVjdG9yeSIuIElmIHNvLCBpdCdzIGVsaWdpYmxlIHRvIGJlIHBhcnQKKyAgICAgICBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiBXZSB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgbmFtZSwgd2l0aCBhbgorICAgICAgIGFwcGVuZGVkIHBhdGggc2VwYXJhdG9yLCBleGlzdHMuICovCisgICAgZGlycGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVVJWMiLCBwcmVmaXgsIHBhdGgsIFNFUCk7CisgICAgaWYgKGRpcnBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIElmIGRpcnBhdGggaXMgcHJlc2VudCBpbiBzZWxmLT5maWxlcywgd2UgaGF2ZSBhIGRpcmVjdG9yeS4gKi8KKyAgICByZXMgPSBQeURpY3RfQ29udGFpbnMoc2VsZi0+ZmlsZXMsIGRpcnBhdGgpOworICAgIFB5X0RFQ1JFRihkaXJwYXRoKTsKKyAgICByZXR1cm4gcmVzOworfQorCiAvKiBSZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBhYm91dCBhIG1vZHVsZS4gKi8KIHN0YXRpYyBlbnVtIHppX21vZHVsZV9pbmZvCi1nZXRfbW9kdWxlX2luZm8oWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKmZ1bGxuYW1lKQorZ2V0X21vZHVsZV9pbmZvKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUpCiB7Ci0gICAgY2hhciAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOICsgMV07Ci0gICAgaW50IGxlbjsKKyAgICBQeU9iamVjdCAqc3VibmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZ1bGxwYXRoLCAqaXRlbTsKICAgICBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyICp6c287CiAKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOworICAgIGlmIChzdWJuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAotICAgIGxlbiA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lLCBwYXRoLCBzaXplb2YocGF0aCkpOwotICAgIGlmIChsZW4gPCAwKQorICAgIHBhdGggPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSk7CisgICAgUHlfREVDUkVGKHN1Ym5hbWUpOworICAgIGlmIChwYXRoID09IE5VTEwpCiAgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAogICAgIGZvciAoenNvID0gemlwX3NlYXJjaG9yZGVyOyAqenNvLT5zdWZmaXg7IHpzbysrKSB7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCB6c28tPnN1ZmZpeCk7Ci0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCkgIT0gTlVMTCkgeworICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVzIiwgcGF0aCwgenNvLT5zdWZmaXgpOworICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE1JX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGl0ZW0gPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgZnVsbHBhdGgpOworICAgICAgICBQeV9ERUNSRUYoZnVsbHBhdGgpOworICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICBpZiAoenNvLT50eXBlICYgSVNfUEFDS0FHRSkKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfUEFDS0FHRTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfTU9EVUxFOwogICAgICAgICB9CiAgICAgfQorICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gTUlfTk9UX0ZPVU5EOwogfQogCit0eXBlZGVmIGVudW0geworICAgIEZMX0VSUk9SLAorICAgIEZMX05PVF9GT1VORCwKKyAgICBGTF9NT0RVTEVfRk9VTkQsCisgICAgRkxfTlNfRk9VTkQKK30gZmluZF9sb2FkZXJfcmVzdWx0OworCisvKiBUaGUgZ3V0cyBvZiAiZmluZF9sb2FkZXIiIGFuZCAiZmluZF9tb2R1bGUiLiBSZXR1cm4gdmFsdWVzOgorICAgLTE6IGVycm9yCisgICAgMDogbm8gbG9hZGVyIG9yIG5hbWVzcGFjZSBwb3J0aW9ucyBmb3VuZAorICAgIDE6IG1vZHVsZS9wYWNrYWdlIGZvdW5kCisgICAgMjogbmFtZXNwYWNlIHBvcnRpb24gZm91bmQ6ICpuYW1lc3BhY2VfcG9ydGlvbiB3aWxsIHBvaW50IHRvIHRoZSBuYW1lCisqLworc3RhdGljIGZpbmRfbG9hZGVyX3Jlc3VsdAorZmluZF9sb2FkZXIoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpmdWxsbmFtZSwgUHlPYmplY3QgKipuYW1lc3BhY2VfcG9ydGlvbikKK3sKKyAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOworCisgICAgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKworICAgIG1pID0gZ2V0X21vZHVsZV9pbmZvKHNlbGYsIGZ1bGxuYW1lKTsKKyAgICBpZiAobWkgPT0gTUlfRVJST1IpCisgICAgICAgIHJldHVybiBGTF9FUlJPUjsKKyAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7CisgICAgICAgIC8qIE5vdCBhIG1vZHVsZSBvciByZWd1bGFyIHBhY2thZ2UuIFNlZSBpZiB0aGlzIGlzIGEgZGlyZWN0b3J5LCBhbmQKKyAgICAgICAgICAgdGhlcmVmb3JlIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiAqLworICAgICAgICBpbnQgaXNfZGlyID0gY2hlY2tfaXNfZGlyZWN0b3J5KHNlbGYsIHNlbGYtPnByZWZpeCwgZnVsbG5hbWUpOworICAgICAgICBpZiAoaXNfZGlyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGlzX2RpcikgeworICAgICAgICAgICAgLyogVGhpcyBpcyBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgICAgICAgICAgICAgIHBhY2thZ2UuIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBpdHMgcGF0aCwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgYSB0cmFpbGluZyBzZXBhcmF0b3IuICovCisgICAgICAgICAgICAqbmFtZXNwYWNlX3BvcnRpb24gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJVUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgU0VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBmdWxsbmFtZSk7CisgICAgICAgICAgICBpZiAoKm5hbWVzcGFjZV9wb3J0aW9uID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZMX0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIEZMX05TX0ZPVU5EOworICAgICAgICB9CisgICAgICAgIHJldHVybiBGTF9OT1RfRk9VTkQ7CisgICAgfQorICAgIC8qIFRoaXMgaXMgYSBtb2R1bGUgb3IgcGFja2FnZS4gKi8KKyAgICByZXR1cm4gRkxfTU9EVUxFX0ZPVU5EOworfQorCisKIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIHNhdGlzZnkgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5CiAgICAnZnVsbG5hbWUnLiBSZXR1cm4gc2VsZiBpZiB3ZSBjYW4sIE5vbmUgaWYgd2UgY2FuJ3QuICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg3LDIyICszNzcsNjQgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgY2hhciAqZnVsbG5hbWU7Ci0gICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xPOnppcGltcG9ydGVyLmZpbmRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfE86emlwaW1wb3J0ZXIuZmluZF9tb2R1bGUiLCAmZnVsbG5hbWUsICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7Ci0gICAgaWYgKG1pID09IE1JX0VSUk9SKQorICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgY2FzZSBGTF9OU19GT1VORDoKKyAgICAgICAgLyogQSBuYW1lc3BhY2UgcG9ydGlvbiBpcyBub3QgYWxsb3dlZCB2aWEgZmluZF9tb2R1bGUsIHNvIHJldHVybiBOb25lLiAqLworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKyAgICBjYXNlIEZMX05PVF9GT1VORDoKKyAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGTF9NT0RVTEVfRk9VTkQ6CisgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBzYXRpc2Z5IHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSBuYW1lZCBieQorICAgJ2Z1bGxuYW1lJywgb3Igd2hldGhlciBpdCBjb3VsZCBiZSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgIHBhY2thZ2UuIFJldHVybiBzZWxmIGlmIHdlIGNhbiBsb2FkIGl0LCBhIHN0cmluZyBjb250YWluaW5nIHRoZQorICAgZnVsbCBwYXRoIGlmIGl0J3MgYSBwb3NzaWJsZSBuYW1lc3BhY2UgcG9ydGlvbiwgTm9uZSBpZiB3ZQorICAgY2FuJ3QgbG9hZCBpdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCit6aXBpbXBvcnRlcl9maW5kX2xvYWRlcihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Tzp6aXBpbXBvcnRlci5maW5kX21vZHVsZSIsICZmdWxsbmFtZSwgJnBhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjYXNlIEZMX05PVF9GT1VORDogICAgICAgIC8qIE5vdCBmb3VuZCwgcmV0dXJuIChOb25lLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgUHlfTm9uZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTU9EVUxFX0ZPVU5EOiAgICAgLyogUmV0dXJuIChzZWxmLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgc2VsZik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTlNfRk9VTkQ6ICAgICAgICAgLyogUmV0dXJuIChOb25lLCBbbmFtZXNwYWNlX3BvcnRpb25dKSAqLworICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPW09dIiwgUHlfTm9uZSwgbmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBMb2FkIGFuZCByZXR1cm4gdGhlIG1vZHVsZSBuYW1lZCBieSAnZnVsbG5hbWUnLiAqLwpAQCAtMzExLDE5ICs0NDMsMjEgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqY29kZSA9IE5VTEwsICptb2QsICpkaWN0OwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTCwgKm1vZHBhdGhfYnl0ZXM7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTDsKICAgICBpbnQgaXNwYWNrYWdlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmxvYWRfbW9kdWxlIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIubG9hZF9tb2R1bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjb2RlID0gZ2V0X21vZHVsZV9jb2RlKHNlbGYsIGZ1bGxuYW1lLCAmaXNwYWNrYWdlLCAmbW9kcGF0aCk7CiAgICAgaWYgKGNvZGUgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShmdWxsbmFtZSk7CisgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KGZ1bGxuYW1lKTsKICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKQEAgLTMzNiwxNyArNDcwLDE3IEBACiAgICAgICAgIC8qIGFkZCBfX3BhdGhfXyB0byB0aGUgbW9kdWxlICpiZWZvcmUqIHRoZSBjb2RlIGdldHMKICAgICAgICAgICAgZXhlY3V0ZWQgKi8KICAgICAgICAgUHlPYmplY3QgKnBrZ3BhdGgsICpmdWxscGF0aDsKLSAgICAgICAgY2hhciAqc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKnN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CiAgICAgICAgIGludCBlcnI7CiAKLSAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJXMiLAorICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVjJVUlVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHN1Ym5hbWUpOwogICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZ1bGxwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKKyAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltOXSIsIGZ1bGxwYXRoKTsKICAgICAgICAgaWYgKHBrZ3BhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX3BhdGhfXyIsIHBrZ3BhdGgpOwpAQCAtMzU0LDE4ICs0ODgsMTMgQEAKICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgbW9kcGF0aF9ieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQobW9kcGF0aCk7Ci0gICAgaWYgKG1vZHBhdGhfYnl0ZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KGZ1bGxuYW1lLCBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aF9ieXRlcykpOwotICAgIFB5X0RFQ1JFRihtb2RwYXRoX2J5dGVzKTsKKyAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChmdWxsbmFtZSwgY29kZSwgbW9kcGF0aCwgTlVMTCk7CiAgICAgUHlfQ0xFQVIoY29kZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlcyAjIGxvYWRlZCBmcm9tIFppcCAlVVxuIiwKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJVUgIyBsb2FkZWQgZnJvbSBaaXAgJVVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgbW9kcGF0aCk7CiAgICAgUHlfREVDUkVGKG1vZHBhdGgpOwogICAgIHJldHVybiBtb2Q7CkBAIC0zODAsMTIgKzUwOSwxMCBAQAogemlwaW1wb3J0ZXJfZ2V0X2ZpbGVuYW1lKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIFB5T2JqZWN0ICpjb2RlOwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZSwgKmNvZGUsICptb2RwYXRoOwogICAgIGludCBpc3BhY2thZ2U7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQwNCwxMCArNTMxLDEwIEBACiB6aXBpbXBvcnRlcl9pc19wYWNrYWdlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIGNoYXIgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmlzX3BhY2thZ2UiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5pc19wYWNrYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQxNSw3MSArNTQyLDcwIEBACiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhtaSA9PSBNSV9QQUNLQUdFKTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2RhdGEoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgUHlPYmplY3QgKnBhdGhvYmosICprZXk7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqcGF0aDsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmtleTsKICNpZmRlZiBBTFRTRVAKLSAgICBQeV9VTklDT0RFICpwLCBidWZbTUFYUEFUSExFTiArIDFdOworICAgIF9QeV9JREVOVElGSUVSKHJlcGxhY2UpOwogI2VuZGlmCi0gICAgUHlfVU5JQ09ERSAqYXJjaGl2ZTsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIFB5X3NzaXplX3QgcGF0aF9sZW4sIGxlbjsKKyAgICBQeV9zc2l6ZV90IHBhdGhfc3RhcnQsIHBhdGhfbGVuLCBsZW47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2RhdGEiLCAmcGF0aG9iaikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9kYXRhIiwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBhdGhfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKTsKICNpZmRlZiBBTFRTRVAKLSAgICBpZiAocGF0aF9sZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJwYXRoIHRvbyBsb25nIik7CisgICAgcGF0aCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocGF0aCwgJlB5SWRfcmVwbGFjZSwgIkNDIiwgQUxUU0VQLCBTRVApOworICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X1VOSUNPREVfc3RyY3B5KGJ1ZiwgcGF0aCk7Ci0gICAgZm9yIChwID0gYnVmOyAqcDsgcCsrKSB7Ci0gICAgICAgIGlmICgqcCA9PSBBTFRTRVApCi0gICAgICAgICAgICAqcCA9IFNFUDsKLSAgICB9Ci0gICAgcGF0aCA9IGJ1ZjsKKyNlbHNlCisgICAgUHlfSU5DUkVGKHBhdGgpOwogI2VuZGlmCi0gICAgYXJjaGl2ZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYtPmFyY2hpdmUpOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5hcmNoaXZlKTsKLSAgICBpZiAoKHNpemVfdClsZW4gPCBQeV9VTklDT0RFX3N0cmxlbihwYXRoKSAmJgotICAgICAgICBQeV9VTklDT0RFX3N0cm5jbXAocGF0aCwgYXJjaGl2ZSwgbGVuKSA9PSAwICYmCi0gICAgICAgIHBhdGhbbGVuXSA9PSBTRVApIHsKLSAgICAgICAgcGF0aCArPSBsZW4gKyAxOwotICAgICAgICBwYXRoX2xlbiAtPSBsZW4gKyAxOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBwYXRoX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+YXJjaGl2ZSk7CisgICAgcGF0aF9zdGFydCA9IDA7CisgICAgaWYgKFB5VW5pY29kZV9UYWlsbWF0Y2gocGF0aCwgc2VsZi0+YXJjaGl2ZSwgMCwgbGVuLCAtMSkKKyAgICAgICAgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihwYXRoLCBsZW4pID09IFNFUCkgeworICAgICAgICBwYXRoX3N0YXJ0ID0gbGVuICsgMTsKICAgICB9CiAKLSAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocGF0aCwgcGF0aF9sZW4pOworICAgIGtleSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgcGF0aF9zdGFydCwgcGF0aF9sZW4pOwogICAgIGlmIChrZXkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGtleSk7CiAgICAgaWYgKHRvY19lbnRyeSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19JT0Vycm9yLCBrZXkpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIFB5X0RFQ1JFRihrZXkpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gZ2V0X2RhdGEoc2VsZi0+YXJjaGl2ZSwgdG9jX2VudHJ5KTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2NvZGUoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgY2hhciAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9jb2RlIiwgJmZ1bGxuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2NvZGUiLCAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBnZXRfbW9kdWxlX2NvZGUoc2VsZiwgZnVsbG5hbWUsIE5VTEwsIE5VTEwpOwpAQCAtNDkwLDM0ICs2MTYsMzkgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIGNoYXIgKmZ1bGxuYW1lLCAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lLCAqc3VibmFtZSwgKnBhdGgsICpmdWxscGF0aDsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9zb3VyY2UiLCAmZnVsbG5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5nZXRfc291cmNlIiwgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7CiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOwotCi0gICAgbGVuID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKGxlbiA8IDApCisgICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkgewotICAgICAgICBwYXRoW2xlbl0gPSBTRVA7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuICsgMSwgIl9faW5pdF9fLnB5Iik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgc3RyY3B5KHBhdGggKyBsZW4sICIucHkiKTsKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlY19faW5pdF9fLnB5IiwgcGF0aCwgU0VQKTsKKyAgICBlbHNlCisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLnB5IiwgcGF0aCk7CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIGlmIChmdWxscGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBmdWxscGF0aCk7CisgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKICAgICBpZiAodG9jX2VudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcywgKmJ5dGVzOwogICAgICAgICBieXRlcyA9IGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CkBAIC01NDMsNiArNjc0LDE2IEBACiBUaGUgb3B0aW9uYWwgJ3BhdGgnIGFyZ3VtZW50IGlzIGlnbm9yZWQgLS0gaXQncyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eVxuXAogd2l0aCB0aGUgaW1wb3J0ZXIgcHJvdG9jb2wuIik7CiAKK1B5RG9jX1NUUlZBUihkb2NfZmluZF9sb2FkZXIsCisiZmluZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGg9Tm9uZSkgLT4gc2VsZiwgc3RyIG9yIE5vbmUuXG5cCitcblwKK1NlYXJjaCBmb3IgYSBtb2R1bGUgc3BlY2lmaWVkIGJ5ICdmdWxsbmFtZScuICdmdWxsbmFtZScgbXVzdCBiZSB0aGVcblwKK2Z1bGx5IHF1YWxpZmllZCAoZG90dGVkKSBtb2R1bGUgbmFtZS4gSXQgcmV0dXJucyB0aGUgemlwaW1wb3J0ZXJcblwKK2luc3RhbmNlIGl0c2VsZiBpZiB0aGUgbW9kdWxlIHdhcyBmb3VuZCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGVcblwKK2Z1bGwgcGF0aCBuYW1lIGlmIGl0J3MgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UsXG5cCitvciBOb25lIG90aGVyd2lzZS4gVGhlIG9wdGlvbmFsICdwYXRoJyBhcmd1bWVudCBpcyBpZ25vcmVkIC0tIGl0J3NcblwKKyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBpbXBvcnRlciBwcm90b2NvbC4iKTsKKwogUHlEb2NfU1RSVkFSKGRvY19sb2FkX21vZHVsZSwKICJsb2FkX21vZHVsZShmdWxsbmFtZSkgLT4gbW9kdWxlLlxuXAogXG5cCkBAIC01ODQsNiArNzI1LDggQEAKIHN0YXRpYyBQeU1ldGhvZERlZiB6aXBpbXBvcnRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJmaW5kX21vZHVsZSIsIHppcGltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19maW5kX21vZHVsZX0sCisgICAgeyJmaW5kX2xvYWRlciIsIHppcGltcG9ydGVyX2ZpbmRfbG9hZGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgIGRvY19maW5kX2xvYWRlcn0sCiAgICAgeyJsb2FkX21vZHVsZSIsIHppcGltcG9ydGVyX2xvYWRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19sb2FkX21vZHVsZX0sCiAgICAgeyJnZXRfZGF0YSIsIHppcGltcG9ydGVyX2dldF9kYXRhLCBNRVRIX1ZBUkFSR1MsCkBAIC03MDgsNTUgKzg1MSw0NiBAQAogICAgZGF0YV9zaXplIGFuZCBmaWxlX29mZnNldCBhcmUgMC4KICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmVfb2JqKQorcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmUpCiB7Ci0gICAgLyogRklYTUU6IHdvcmsgb24gUHlfVU5JQ09ERSogaW5zdGVhZCBvZiBjaGFyKiAqLwogICAgIFB5T2JqZWN0ICpmaWxlcyA9IE5VTEw7CiAgICAgRklMRSAqZnA7CiAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiAgICAgc2hvcnQgY29tcHJlc3MsIHRpbWUsIGRhdGUsIG5hbWVfc2l6ZTsKICAgICBsb25nIGNyYywgZGF0YV9zaXplLCBmaWxlX3NpemUsIGhlYWRlcl9zaXplOwogICAgIFB5X3NzaXplX3QgZmlsZV9vZmZzZXQsIGhlYWRlcl9wb3NpdGlvbiwgaGVhZGVyX29mZnNldDsKLSAgICBsb25nIGksIGwsIGNvdW50OwotICAgIHNpemVfdCBsZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSBwYXRoW01BWFBBVEhMRU4gKyA1XTsKKyAgICBsb25nIGwsIGNvdW50OworICAgIFB5X3NzaXplX3QgaTsKICAgICBjaGFyIG5hbWVbTUFYUEFUSExFTiArIDVdOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqID0gTlVMTDsKICAgICBjaGFyICpwLCBlbmRvZl9jZW50cmFsX2RpclsyMl07CiAgICAgUHlfc3NpemVfdCBhcmNfb2Zmc2V0OyAgLyogQWJzb2x1dGUgb2Zmc2V0IHRvIHN0YXJ0IG9mIHRoZSB6aXAtYXJjaGl2ZS4gKi8KLSAgICBQeU9iamVjdCAqcGF0aG9iajsKKyAgICBQeU9iamVjdCAqcGF0aDsKICAgICBjb25zdCBjaGFyICpjaGFyc2V0OwogICAgIGludCBib290c3RyYXA7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGFyY2hpdmVfb2JqKSA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiWmlwIHBhdGggbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkocGF0aCwgUHlVbmljb2RlX0FTX1VOSUNPREUoYXJjaGl2ZV9vYmopKTsKLQotICAgIGZwID0gX1B5X2ZvcGVuKGFyY2hpdmVfb2JqLCAicmIiKTsKKyAgICBmcCA9IF9QeV9mb3BlbihhcmNoaXZlLCAicmIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBvcGVuIFppcCBmaWxlOiAnJVUnIiwgYXJjaGl2ZV9vYmopOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGZzZWVrKGZwLCAtMjIsIFNFRUtfRU5EKSA9PSAtMSkgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGhlYWRlcl9wb3NpdGlvbiA9IGZ0ZWxsKGZwKTsKICAgICBpZiAoZnJlYWQoZW5kb2ZfY2VudHJhbF9kaXIsIDEsIDIyLCBmcCkgIT0gMjIpIHsKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChnZXRfbG9uZygodW5zaWduZWQgY2hhciAqKWVuZG9mX2NlbnRyYWxfZGlyKSAhPSAweDA2MDU0QjUwKSB7CiAgICAgICAgIC8qIEJhZDogRW5kIG9mIENlbnRyYWwgRGlyIHNpZ25hdHVyZSAqLwogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAibm90IGEgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzY5LDkgKzkwMyw2IEBACiAgICAgaWYgKGZpbGVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBsZW5ndGggPSBQeV9VTklDT0RFX3N0cmxlbihwYXRoKTsKLSAgICBwYXRoW2xlbmd0aF0gPSBTRVA7Ci0KICAgICAvKiBTdGFydCBvZiBDZW50cmFsIERpcmVjdG9yeSAqLwogICAgIGNvdW50ID0gMDsKICAgICBmb3IgKDs7KSB7CkBAIC04MDMsNyArOTM0LDcgQEAKICAgICAgICAgICAgIG5hbWVfc2l6ZSA9IE1BWFBBVEhMRU47CiAKICAgICAgICAgcCA9IG5hbWU7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lX3NpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKFB5X3NzaXplX3QpbmFtZV9zaXplOyBpKyspIHsKICAgICAgICAgICAgICpwID0gKGNoYXIpZ2V0YyhmcCk7CiAgICAgICAgICAgICBpZiAoKnAgPT0gJy8nKQogICAgICAgICAgICAgICAgICpwID0gU0VQOwpAQCAtODM2LDEyICs5NjcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIFB5X1VOSUNPREVfc3RybmNweShwYXRoICsgbGVuZ3RoICsgMSwgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaiksIE1BWFBBVEhMRU4gLSBsZW5ndGggLSAxKTsKLQotICAgICAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHBhdGgsIFB5X1VOSUNPREVfc3RybGVuKHBhdGgpKTsKLSAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lb2JqKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHQgPSBQeV9CdWlsZFZhbHVlKCJOaGxsbmhobCIsIHBhdGhvYmosIGNvbXByZXNzLCBkYXRhX3NpemUsCisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVIiwgYXJjaGl2ZSwgU0VQLCBuYW1lb2JqKTsKKyAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHQgPSBQeV9CdWlsZFZhbHVlKCJOaGxsbmhobCIsIHBhdGgsIGNvbXByZXNzLCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSwgZmlsZV9vZmZzZXQsIHRpbWUsIGRhdGUsIGNyYyk7CiAgICAgICAgIGlmICh0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtODU0LDE0ICs5ODUsMTQgQEAKICAgICB9CiAgICAgZmNsb3NlKGZwKTsKICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlVVxuIiwKLSAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlUlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlKTsKICAgICByZXR1cm4gZmlsZXM7CiBmc2Vla19lcnJvcjoKICAgICBmY2xvc2UoZnApOwogICAgIFB5X1hERUNSRUYoZmlsZXMpOwogICAgIFB5X1hERUNSRUYobmFtZW9iaik7Ci0gICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVUiLCBhcmNoaXZlX29iaik7CisgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICByZXR1cm4gTlVMTDsKIGVycm9yOgogICAgIGZjbG9zZShmcCk7CkBAIC04NzksNiArMTAxMCw3IEBACiAgICAgc3RhdGljIGludCBpbXBvcnRpbmdfemxpYiA9IDA7CiAgICAgUHlPYmplY3QgKnpsaWI7CiAgICAgUHlPYmplY3QgKmRlY29tcHJlc3M7CisgICAgX1B5X0lERU5USUZJRVIoZGVjb21wcmVzcyk7CiAKICAgICBpZiAoaW1wb3J0aW5nX3psaWIgIT0gMCkKICAgICAgICAgLyogU29tZW9uZSBoYXMgYSB6bGliLnB5W2NvXSBpbiB0aGVpciBaaXAgZmlsZTsKQEAgLTg4OCw4ICsxMDIwLDggQEAKICAgICB6bGliID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiemxpYiIpOwogICAgIGltcG9ydGluZ196bGliID0gMDsKICAgICBpZiAoemxpYiAhPSBOVUxMKSB7Ci0gICAgICAgIGRlY29tcHJlc3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHpsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzIik7CisgICAgICAgIGRlY29tcHJlc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHpsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2RlY29tcHJlc3MpOwogICAgICAgICBQeV9ERUNSRUYoemxpYik7CiAgICAgfQogICAgIGVsc2UgewpAQCAtOTM0LDcgKzEwNjYsNyBAQAogICAgIC8qIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgbG9jYWwgZmlsZSBoZWFkZXIgaXMgY29ycmVjdCAqLwogICAgIGlmIChmc2VlayhmcCwgZmlsZV9vZmZzZXQsIDApID09IC0xKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVVIiwgYXJjaGl2ZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTQ5LDcgKzEwODEsNyBAQAogICAgIH0KICAgICBpZiAoZnNlZWsoZnAsIGZpbGVfb2Zmc2V0ICsgMjYsIDApID09IC0xKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVVIiwgYXJjaGl2ZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTczLDcgKzExMDUsNyBAQAogICAgICAgICBieXRlc19yZWFkID0gZnJlYWQoYnVmLCAxLCBkYXRhX3NpemUsIGZwKTsKICAgICB9IGVsc2UgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZmNsb3NlKGZwKTsKQEAgLTEwMzAsNyArMTE2Miw3IEBACiAgICB0byAucHkgaWYgYXZhaWxhYmxlIGFuZCB3ZSBkb24ndCB3YW50IHRvIG1hc2sgb3RoZXIgZXJyb3JzKS4KICAgIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXVubWFyc2hhbF9jb2RlKGNoYXIgKnBhdGhuYW1lLCBQeU9iamVjdCAqZGF0YSwgdGltZV90IG10aW1lKQordW5tYXJzaGFsX2NvZGUoUHlPYmplY3QgKnBhdGhuYW1lLCBQeU9iamVjdCAqZGF0YSwgdGltZV90IG10aW1lKQogewogICAgIFB5T2JqZWN0ICpjb2RlOwogICAgIGNoYXIgKmJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcoZGF0YSk7CkBAIC0xMDQ0LDggKzExNzYsOCBAQAogCiAgICAgaWYgKGdldF9sb25nKCh1bnNpZ25lZCBjaGFyICopYnVmKSAhPSBQeUltcG9ydF9HZXRNYWdpY051bWJlcigpKSB7CiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbWFnaWNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgJVIgaGFzIGJhZCBtYWdpY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7ICAvKiBzaWduYWwgY2FsbGVyIHRvIHRyeSBhbHRlcm5hdGl2ZSAqLwogICAgIH0KQEAgLTEwNTMsMTkgKzExODUsMjEgQEAKICAgICBpZiAobXRpbWUgIT0gMCAmJiAhZXFfbXRpbWUoZ2V0X2xvbmcoKHVuc2lnbmVkIGNoYXIgKilidWYgKyA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRpbWUpKSB7CiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbXRpbWVcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgJVIgaGFzIGJhZCBtdGltZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7ICAvKiBzaWduYWwgY2FsbGVyIHRvIHRyeSBhbHRlcm5hdGl2ZSAqLwogICAgIH0KIAotICAgIGNvZGUgPSBQeU1hcnNoYWxfUmVhZE9iamVjdEZyb21TdHJpbmcoYnVmICsgOCwgc2l6ZSAtIDgpOworICAgIC8qIFhYWCB0aGUgcHljJ3Mgc2l6ZSBmaWVsZCBpcyBpZ25vcmVkOyB0aW1lc3RhbXAgY29sbGlzaW9ucyBhcmUgcHJvYmFibHkKKyAgICAgICB1bmltcG9ydGFudCB3aXRoIHppcCBmaWxlcy4gKi8KKyAgICBjb2RlID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKGJ1ZiArIDEyLCBzaXplIC0gMTIpOwogICAgIGlmIChjb2RlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAiY29tcGlsZWQgbW9kdWxlICVzIGlzIG5vdCBhIGNvZGUgb2JqZWN0IiwKKyAgICAgICAgICAgICAiY29tcGlsZWQgbW9kdWxlICVSIGlzIG5vdCBhIGNvZGUgb2JqZWN0IiwKICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNzksMTEgKzEyMTMsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBub3JtYWxpemVfbGluZV9lbmRpbmdzKFB5T2JqZWN0ICpzb3VyY2UpCiB7Ci0gICAgY2hhciAqYnVmLCAqcSwgKnAgPSBQeUJ5dGVzX0FzU3RyaW5nKHNvdXJjZSk7CisgICAgY2hhciAqYnVmLCAqcSwgKnA7CiAgICAgUHlPYmplY3QgKmZpeGVkX3NvdXJjZTsKICAgICBpbnQgbGVuID0gMDsKIAotICAgIGlmICghcCkgeworICAgIHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHNvdXJjZSk7CisgICAgaWYgKHAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiXG5cMCIsIDIpOwogICAgIH0KIApAQCAtMTExNiwxNiArMTI1MSwyNCBAQAogLyogR2l2ZW4gYSBzdHJpbmcgYnVmZmVyIGNvbnRhaW5pbmcgUHl0aG9uIHNvdXJjZSBjb2RlLCBjb21waWxlIGl0CiAgICByZXR1cm4gYW5kIHJldHVybiBhIGNvZGUgb2JqZWN0IGFzIGEgbmV3IHJlZmVyZW5jZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1jb21waWxlX3NvdXJjZShjaGFyICpwYXRobmFtZSwgUHlPYmplY3QgKnNvdXJjZSkKK2NvbXBpbGVfc291cmNlKFB5T2JqZWN0ICpwYXRobmFtZSwgUHlPYmplY3QgKnNvdXJjZSkKIHsKLSAgICBQeU9iamVjdCAqY29kZSwgKmZpeGVkX3NvdXJjZTsKKyAgICBQeU9iamVjdCAqY29kZSwgKmZpeGVkX3NvdXJjZSwgKnBhdGhieXRlczsKIAotICAgIGZpeGVkX3NvdXJjZSA9IG5vcm1hbGl6ZV9saW5lX2VuZGluZ3Moc291cmNlKTsKLSAgICBpZiAoZml4ZWRfc291cmNlID09IE5VTEwpCisgICAgcGF0aGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRobmFtZSk7CisgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nKFB5Qnl0ZXNfQXNTdHJpbmcoZml4ZWRfc291cmNlKSwgcGF0aG5hbWUsCisgICAgZml4ZWRfc291cmNlID0gbm9ybWFsaXplX2xpbmVfZW5kaW5ncyhzb3VyY2UpOworICAgIGlmIChmaXhlZF9zb3VyY2UgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmcoUHlCeXRlc19Bc1N0cmluZyhmaXhlZF9zb3VyY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcocGF0aGJ5dGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0KTsKKyAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKICAgICBQeV9ERUNSRUYoZml4ZWRfc291cmNlKTsKICAgICByZXR1cm4gY29kZTsKIH0KQEAgLTExNTQsMTQgKzEyOTcsMjIgQEAKICAgIG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBtYXRjaGluZyAucHkgZmlsZSwgb3IgMCBpZiBubyBzb3VyY2UKICAgIGlzIGF2YWlsYWJsZS4gKi8KIHN0YXRpYyB0aW1lX3QKLWdldF9tdGltZV9vZl9zb3VyY2UoWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKnBhdGgpCitnZXRfbXRpbWVfb2Zfc291cmNlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIHRpbWVfdCBtdGltZSA9IDA7Ci0gICAgUHlfc3NpemVfdCBsYXN0Y2hhciA9IHN0cmxlbihwYXRoKSAtIDE7Ci0gICAgY2hhciBzYXZlY2hhciA9IHBhdGhbbGFzdGNoYXJdOwotICAgIHBhdGhbbGFzdGNoYXJdID0gJ1wwJzsgIC8qIHN0cmlwICdjJyBvciAnbycgZnJvbSAqLnB5W2NvXSAqLwotICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICBQeU9iamVjdCAqdG9jX2VudHJ5LCAqc3RyaXBwZWQ7CisgICAgdGltZV90IG10aW1lOworCisgICAgLyogc3RyaXAgJ2MnIG9yICdvJyBmcm9tICoucHlbY29dICovCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShwYXRoKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuICh0aW1lX3QpLTE7CisgICAgc3RyaXBwZWQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV9LSU5EKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCkgLSAxKTsKKyAgICBpZiAoc3RyaXBwZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICh0aW1lX3QpLTE7CisKKyAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgc3RyaXBwZWQpOworICAgIFB5X0RFQ1JFRihzdHJpcHBlZCk7CiAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2sodG9jX2VudHJ5KSAmJgogICAgICAgICBQeVR1cGxlX1NpemUodG9jX2VudHJ5KSA9PSA4KSB7CiAgICAgICAgIC8qIGZldGNoIHRoZSB0aW1lIHN0YW1wIG9mIHRoZSAucHkgZmlsZSBmb3IgY29tcGFyaXNvbgpAQCAtMTE3MCw4ICsxMzIxLDggQEAKICAgICAgICAgdGltZSA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgNSkpOwogICAgICAgICBkYXRlID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCA2KSk7CiAgICAgICAgIG10aW1lID0gcGFyc2VfZG9zdGltZSh0aW1lLCBkYXRlKTsKLSAgICB9Ci0gICAgcGF0aFtsYXN0Y2hhcl0gPSBzYXZlY2hhcjsKKyAgICB9IGVsc2UKKyAgICAgICAgbXRpbWUgPSAwOwogICAgIHJldHVybiBtdGltZTsKIH0KIApAQCAtMTE4MSwyNCArMTMzMiwxNyBAQAogZ2V0X2NvZGVfZnJvbV9kYXRhKFppcEltcG9ydGVyICpzZWxmLCBpbnQgaXNwYWNrYWdlLCBpbnQgaXNieXRlY29kZSwKICAgICAgICAgICAgICAgICAgICB0aW1lX3QgbXRpbWUsIFB5T2JqZWN0ICp0b2NfZW50cnkpCiB7Ci0gICAgUHlPYmplY3QgKmRhdGEsICpjb2RlOwotICAgIFB5T2JqZWN0ICptb2RwYXRoOworICAgIFB5T2JqZWN0ICpkYXRhLCAqbW9kcGF0aCwgKmNvZGU7CiAKICAgICBkYXRhID0gZ2V0X2RhdGEoc2VsZi0+YXJjaGl2ZSwgdG9jX2VudHJ5KTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1vZHBhdGggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApKTsKLSAgICBpZiAobW9kcGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCisgICAgbW9kcGF0aCA9IFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApOwogICAgIGlmIChpc2J5dGVjb2RlKQotICAgICAgICBjb2RlID0gdW5tYXJzaGFsX2NvZGUoUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aCksIGRhdGEsIG10aW1lKTsKKyAgICAgICAgY29kZSA9IHVubWFyc2hhbF9jb2RlKG1vZHBhdGgsIGRhdGEsIG10aW1lKTsKICAgICBlbHNlCi0gICAgICAgIGNvZGUgPSBjb21waWxlX3NvdXJjZShQeUJ5dGVzX0FTX1NUUklORyhtb2RwYXRoKSwgZGF0YSk7Ci0gICAgUHlfREVDUkVGKG1vZHBhdGgpOworICAgICAgICBjb2RlID0gY29tcGlsZV9zb3VyY2UobW9kcGF0aCwgZGF0YSk7CiAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgIHJldHVybiBjb2RlOwogfQpAQCAtMTIwNiwzNSArMTM1MCw0NSBAQAogLyogR2V0IHRoZSBjb2RlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIG1vZHVsZSBzcGVjaWZpZWQgYnkKICAgICdmdWxsbmFtZScuICovCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSwKK2dldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmZ1bGxuYW1lLAogICAgICAgICAgICAgICAgIGludCAqcF9pc3BhY2thZ2UsIFB5T2JqZWN0ICoqcF9tb2RwYXRoKQogewotICAgIFB5T2JqZWN0ICp0b2NfZW50cnk7Ci0gICAgY2hhciAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOICsgMV07Ci0gICAgaW50IGxlbjsKKyAgICBQeU9iamVjdCAqY29kZSA9IE5VTEwsICp0b2NfZW50cnksICpzdWJuYW1lOworICAgIFB5T2JqZWN0ICpwYXRoLCAqZnVsbHBhdGggPSBOVUxMOwogICAgIHN0cnVjdCBzdF96aXBfc2VhcmNob3JkZXIgKnpzbzsKIAogICAgIHN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CisgICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBsZW4gPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBpZiAobGVuIDwgMCkKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoenNvID0gemlwX3NlYXJjaG9yZGVyOyAqenNvLT5zdWZmaXg7IHpzbysrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpjb2RlID0gTlVMTDsKKyAgICAgICAgY29kZSA9IE5VTEw7CiAKLSAgICAgICAgc3RyY3B5KHBhdGggKyBsZW4sIHpzby0+c3VmZml4KTsKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlcyIsIHBhdGgsIHpzby0+c3VmZml4KTsKKyAgICAgICAgaWYgKGZ1bGxwYXRoID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkKLSAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB0cnlpbmcgJVUlYyVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIChpbnQpU0VQLCBwYXRoKTsKLSAgICAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoc2VsZi0+ZmlsZXMsIHBhdGgpOworICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIHRyeWluZyAlVSVjJVVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgKGludClTRVAsIGZ1bGxwYXRoKTsKKyAgICAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGZ1bGxwYXRoKTsKICAgICAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMKSB7CiAgICAgICAgICAgICB0aW1lX3QgbXRpbWUgPSAwOwogICAgICAgICAgICAgaW50IGlzcGFja2FnZSA9IHpzby0+dHlwZSAmIElTX1BBQ0tBR0U7CiAgICAgICAgICAgICBpbnQgaXNieXRlY29kZSA9IHpzby0+dHlwZSAmIElTX0JZVEVDT0RFOwogCi0gICAgICAgICAgICBpZiAoaXNieXRlY29kZSkKLSAgICAgICAgICAgICAgICBtdGltZSA9IGdldF9tdGltZV9vZl9zb3VyY2Uoc2VsZiwgcGF0aCk7CisgICAgICAgICAgICBpZiAoaXNieXRlY29kZSkgeworICAgICAgICAgICAgICAgIG10aW1lID0gZ2V0X210aW1lX29mX3NvdXJjZShzZWxmLCBmdWxscGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKG10aW1lID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIoZnVsbHBhdGgpOwogICAgICAgICAgICAgaWYgKHBfaXNwYWNrYWdlICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgKnBfaXNwYWNrYWdlID0gaXNwYWNrYWdlOwogICAgICAgICAgICAgY29kZSA9IGdldF9jb2RlX2Zyb21fZGF0YShzZWxmLCBpc3BhY2thZ2UsCkBAIC0xMjUwLDExICsxNDA0LDE2IEBACiAgICAgICAgICAgICAgICAgKnBfbW9kcGF0aCA9IFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRigqcF9tb2RwYXRoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb2RlOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0NMRUFSKGZ1bGxwYXRoKTsKICAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgZmluZCBtb2R1bGUgJyVzJyIsIGZ1bGxuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAlUiIsIGZ1bGxuYW1lKTsKK2V4aXQ6CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIFB5X1hERUNSRUYoZnVsbHBhdGgpOworICAgIHJldHVybiBjb2RlOwogfQogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYm1vZHVsZS5jIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKaW5kZXggYTFlNjA1Yi4uNjUxOTE5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGlibW9kdWxlLmMKKysrIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKQEAgLTQzLDcgKzQzLDkgQEAKICAgICB6X3N0cmVhbSB6c3Q7CiAgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOwogICAgIFB5T2JqZWN0ICp1bmNvbnN1bWVkX3RhaWw7CisgICAgY2hhciBlb2Y7CiAgICAgaW50IGlzX2luaXRpYWxpc2VkOworICAgIFB5T2JqZWN0ICp6ZGljdDsKICAgICAjaWZkZWYgV0lUSF9USFJFQUQKICAgICAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CiAgICAgI2VuZGlmCkBAIC03OSwxNCArODEsMzQgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGNvbXByZXNzb2JqX19kb2NfXywKLSJjb21wcmVzc29iaihbbGV2ZWxdKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKKyJjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtbGV2ZWw9OCxcbiIKKyIgICAgICAgICAgICBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pXG4iCisiIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogIlxuIgotIk9wdGlvbmFsIGFyZyBsZXZlbCBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwsIGluIDEtOS4iKTsKKyJsZXZlbCBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwgKGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOTsgZGVmYXVsdCBpcyA2KS5cbiIKKyJIaWdoZXIgY29tcHJlc3Npb24gbGV2ZWxzIGFyZSBzbG93ZXIsIGJ1dCBwcm9kdWNlIHNtYWxsZXIgcmVzdWx0cy5cbiIKKyJcbiIKKyJtZXRob2QgaXMgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gSWYgZ2l2ZW4sIHRoaXMgbXVzdCBiZSBERUZMQVRFRC5cbiIKKyJcbiIKKyJ3Yml0cyBpcyB0aGUgYmFzZSB0d28gbG9nYXJpdGhtIG9mIHRoZSB3aW5kb3cgc2l6ZSAocmFuZ2U6IDguLjE1KS5cbiIKKyJcbiIKKyJtZW1sZXZlbCBjb250cm9scyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS5cbiIKKyJWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSAxIHRvIDkuIEhpZ2hlciB2YWx1ZXMgcmVzdWx0IGluIGhpZ2hlciBtZW1vcnkgdXNhZ2UsXG4iCisiZmFzdGVyIGNvbXByZXNzaW9uLCBhbmQgc21hbGxlciBvdXRwdXQuXG4iCisiXG4iCisic3RyYXRlZ3kgaXMgdXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIFBvc3NpYmxlIHZhbHVlcyBhcmVcbiIKKyJaX0RFRkFVTFRfU1RSQVRFR1ksIFpfRklMVEVSRUQsIGFuZCBaX0hVRkZNQU5fT05MWS5cbiIKKyJcbiIKKyJ6ZGljdCBpcyB0aGUgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IC0gYSBzZXF1ZW5jZSBvZiBieXRlc1xuIgorImNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGxpa2VseSB0byBvY2N1ciBpbiB0aGUgaW5wdXQgZGF0YS4iKTsKIAogUHlEb2NfU1RSVkFSKGRlY29tcHJlc3NvYmpfX2RvY19fLAotImRlY29tcHJlc3NvYmooW3diaXRzXSkgLS0gUmV0dXJuIGEgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKKyJkZWNvbXByZXNzb2JqKFt3Yml0c1ssIHpkaWN0XV0pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCiAiXG4iCi0iT3B0aW9uYWwgYXJnIHdiaXRzIGlzIHRoZSB3aW5kb3cgYnVmZmVyIHNpemUuIik7CisiT3B0aW9uYWwgYXJnIHdiaXRzIGlzIHRoZSB3aW5kb3cgYnVmZmVyIHNpemUuXG4iCisiXG4iCisiT3B0aW9uYWwgYXJnIHpkaWN0IGlzIHRoZSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIFRoaXMgbXVzdCBiZVxuIgorInRoZSBzYW1lIGRpY3Rpb25hcnkgYXMgdXNlZCBieSB0aGUgY29tcHJlc3NvciB0aGF0IHByb2R1Y2VkIHRoZSBpbnB1dCBkYXRhLiIpOwogCiBzdGF0aWMgY29tcG9iamVjdCAqCiBuZXdjb21wb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKQEAgLTk1LDcgKzExNyw5IEBACiAgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhjb21wb2JqZWN0LCB0eXBlKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWxmLT5lb2YgPSAwOwogICAgIHNlbGYtPmlzX2luaXRpYWxpc2VkID0gMDsKKyAgICBzZWxmLT56ZGljdCA9IE5VTEw7CiAgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKICAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CkBAIC0yOTcsNyArMzIxLDcgQEAKIAogICAgIGVyciA9IGluZmxhdGVFbmQoJnpzdCk7CiAgICAgaWYgKGVyciAhPSBaX09LKSB7Ci0gICAgICAgIHpsaWJfZXJyb3IoenN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgZGF0YSBkZWNvbXByZXNzaW9uIik7CisgICAgICAgIHpsaWJfZXJyb3IoenN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgZGVjb21wcmVzc2lvbiIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMzE0LDE5ICszMzgsMjQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5WmxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitQeVpsaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKnNlbGZwdHIsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGNvbXBvYmplY3QgKnNlbGY7CiAgICAgaW50IGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTiwgbWV0aG9kPURFRkxBVEVEOwogICAgIGludCB3Yml0cz1NQVhfV0JJVFMsIG1lbUxldmVsPURFRl9NRU1fTEVWRUwsIHN0cmF0ZWd5PTAsIGVycjsKKyAgICBQeV9idWZmZXIgemRpY3Q7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGlpaWlpOmNvbXByZXNzb2JqIiwgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1MZXZlbCwgJnN0cmF0ZWd5KSkKKyAgICB6ZGljdC5idWYgPSBOVUxMOyAvKiBTZW50aW5lbCwgc28gd2UgY2FuIHRlbGwgd2hldGhlciB6ZGljdCB3YXMgc3VwcGxpZWQuICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IG5ld2NvbXBvYmplY3QoJkNvbXB0eXBlKTsKICAgICBpZiAoc2VsZj09TlVMTCkKLSAgICAgICAgcmV0dXJuKE5VTEwpOworICAgICAgICBnb3RvIGVycm9yOwogICAgIHNlbGYtPnpzdC56YWxsb2MgPSAoYWxsb2NfZnVuYylOVUxMOwogICAgIHNlbGYtPnpzdC56ZnJlZSA9IChmcmVlX2Z1bmMpWl9OVUxMOwogICAgIHNlbGYtPnpzdC5uZXh0X2luID0gTlVMTDsKQEAgLTMzNSwzMCArMzY0LDU4IEBACiAgICAgc3dpdGNoKGVycikgewogICAgIGNhc2UgKFpfT0spOgogICAgICAgICBzZWxmLT5pc19pbml0aWFsaXNlZCA9IDE7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CisgICAgICAgIGlmICh6ZGljdC5idWYgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBzdWNjZXNzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJyID0gZGVmbGF0ZVNldERpY3Rpb25hcnkoJnNlbGYtPnpzdCwgemRpY3QuYnVmLCB6ZGljdC5sZW4pOworICAgICAgICAgICAgc3dpdGNoIChlcnIpIHsKKyAgICAgICAgICAgIGNhc2UgKFpfT0spOgorICAgICAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKKyAgICAgICAgICAgIGNhc2UgKFpfU1RSRUFNX0VSUk9SKToKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZGljdGlvbmFyeSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZGVmbGF0ZVNldERpY3Rpb25hcnkoKSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgfQogICAgIGNhc2UgKFpfTUVNX0VSUk9SKToKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBjb21wcmVzc2lvbiBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgY2FzZShaX1NUUkVBTV9FUlJPUik6Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGluaXRpYWxpemF0aW9uIG9wdGlvbiIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBkZWZhdWx0OgogICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgY3JlYXRpbmcgY29tcHJlc3Npb24gb2JqZWN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorCisgZXJyb3I6CisgICAgUHlfWERFQ1JFRihzZWxmKTsKKyAgICBzZWxmID0gTlVMTDsKKyBzdWNjZXNzOgorICAgIGlmICh6ZGljdC5idWYgIT0gTlVMTCkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmemRpY3QpOworICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVpsaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitQeVpsaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJ3Yml0cyIsICJ6ZGljdCIsIE5VTEx9OwogICAgIGludCB3Yml0cz1ERUZfV0JJVFMsIGVycjsKICAgICBjb21wb2JqZWN0ICpzZWxmOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZGVjb21wcmVzc29iaiIsICZ3Yml0cykpCisgICAgUHlPYmplY3QgKnpkaWN0PU5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmd2JpdHMsICZ6ZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh6ZGljdCAhPSBOVUxMICYmICFQeU9iamVjdF9DaGVja0J1ZmZlcih6ZGljdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ6ZGljdCBhcmd1bWVudCBtdXN0IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBzZWxmID0gbmV3Y29tcG9iamVjdCgmRGVjb21wdHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKQEAgLTM2Nyw2ICs0MjQsMTAgQEAKICAgICBzZWxmLT56c3QuemZyZWUgPSAoZnJlZV9mdW5jKVpfTlVMTDsKICAgICBzZWxmLT56c3QubmV4dF9pbiA9IE5VTEw7CiAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKKyAgICBpZiAoemRpY3QgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoemRpY3QpOworICAgICAgICBzZWxmLT56ZGljdCA9IHpkaWN0OworICAgIH0KICAgICBlcnIgPSBpbmZsYXRlSW5pdDIoJnNlbGYtPnpzdCwgd2JpdHMpOwogICAgIHN3aXRjaChlcnIpIHsKICAgICBjYXNlIChaX09LKToKQEAgLTM5Niw2ICs0NTcsNyBAQAogI2VuZGlmCiAgICAgUHlfWERFQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hERUNSRUYoc2VsZi0+emRpY3QpOwogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKIH0KIApAQCAtNDgyLDcgKzU0NCw3IEBACiAgICAgKi8KIAogICAgIGlmIChlcnIgIT0gWl9PSyAmJiBlcnIgIT0gWl9CVUZfRVJST1IpIHsKLSAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGNvbXByZXNzaW5nIik7CisgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBjb21wcmVzc2luZyBkYXRhIik7CiAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICBSZXRWYWwgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNTU1LDYgKzYxNywyNyBAQAogICAgIGVyciA9IGluZmxhdGUoJihzZWxmLT56c3QpLCBaX1NZTkNfRkxVU0gpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKKyAgICBpZiAoZXJyID09IFpfTkVFRF9ESUNUICYmIHNlbGYtPnpkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfYnVmZmVyIHpkaWN0X2J1ZjsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZWxmLT56ZGljdCwgJnpkaWN0X2J1ZiwgUHlCVUZfU0lNUExFKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CisgICAgICAgICAgICBSZXRWYWwgPSBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlcnIgPSBpbmZsYXRlU2V0RGljdGlvbmFyeSgmKHNlbGYtPnpzdCksIHpkaWN0X2J1Zi5idWYsIHpkaWN0X2J1Zi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ6ZGljdF9idWYpOworICAgICAgICBpZiAoZXJyICE9IFpfT0spIHsKKyAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOworICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgLyogUmVwZWF0IHRoZSBjYWxsIHRvIGluZmxhdGUuICovCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJyID0gaW5mbGF0ZSgmKHNlbGYtPnpzdCksIFpfU1lOQ19GTFVTSCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCiAgICAgLyogV2hpbGUgWl9PSyBhbmQgdGhlIG91dHB1dCBidWZmZXIgaXMgZnVsbCwgdGhlcmUgbWlnaHQgYmUgbW9yZSBvdXRwdXQuCiAgICAgICAgU28gZXh0ZW5kIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCB0cnkgYWdhaW4uCiAgICAgKi8KQEAgLTYxNywxMiArNzAwLDEzIEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KKyAgICAgICAgc2VsZi0+ZW9mID0gMTsKICAgICAgICAgLyogV2Ugd2lsbCBvbmx5IGdldCBaX0JVRl9FUlJPUiBpZiB0aGUgb3V0cHV0IGJ1ZmZlciB3YXMgZnVsbAogICAgICAgICAgICBidXQgdGhlcmUgd2Fzbid0IG1vcmUgb3V0cHV0IHdoZW4gd2UgdHJpZWQgYWdhaW4sIHNvIGl0IGlzCiAgICAgICAgICAgIG5vdCBhbiBlcnJvciBjb25kaXRpb24uCiAgICAgICAgICovCiAgICAgfSBlbHNlIGlmIChlcnIgIT0gWl9PSyAmJiBlcnIgIT0gWl9CVUZfRVJST1IpIHsKLSAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGRlY29tcHJlc3NpbmciKTsKKyAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSIpOwogICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKICAgICAgICAgUmV0VmFsID0gTlVMTDsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTcwMyw3ICs3ODcsNyBAQAogICAgIGlmIChlcnIgPT0gWl9TVFJFQU1fRU5EICYmIGZsdXNobW9kZSA9PSBaX0ZJTklTSCkgewogICAgICAgICBlcnIgPSBkZWZsYXRlRW5kKCYoc2VsZi0+enN0KSk7CiAgICAgICAgIGlmIChlcnIgIT0gWl9PSykgewotICAgICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgImZyb20gZGVmbGF0ZUVuZCgpIik7CisgICAgICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZmluaXNoaW5nIGNvbXByZXNzaW9uIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKICAgICAgICAgICAgIFJldFZhbCA9IE5VTEw7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtNzY3LDEwICs4NTEsMTQgQEAKICAgICB9CiAgICAgUHlfSU5DUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKICAgICBQeV9JTkNSRUYoc2VsZi0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9YSU5DUkVGKHNlbGYtPnpkaWN0KTsKICAgICBQeV9YREVDUkVGKHJldHZhbC0+dW51c2VkX2RhdGEpOwogICAgIFB5X1hERUNSRUYocmV0dmFsLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hERUNSRUYocmV0dmFsLT56ZGljdCk7CiAgICAgcmV0dmFsLT51bnVzZWRfZGF0YSA9IHNlbGYtPnVudXNlZF9kYXRhOwogICAgIHJldHZhbC0+dW5jb25zdW1lZF90YWlsID0gc2VsZi0+dW5jb25zdW1lZF90YWlsOworICAgIHJldHZhbC0+emRpY3QgPSBzZWxmLT56ZGljdDsKKyAgICByZXR2YWwtPmVvZiA9IHNlbGYtPmVvZjsKIAogICAgIC8qIE1hcmsgaXQgYXMgYmVpbmcgaW5pdGlhbGl6ZWQgKi8KICAgICByZXR2YWwtPmlzX2luaXRpYWxpc2VkID0gMTsKQEAgLTgxOCwxMCArOTA2LDE0IEBACiAKICAgICBQeV9JTkNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwogICAgIFB5X0lOQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hJTkNSRUYoc2VsZi0+emRpY3QpOwogICAgIFB5X1hERUNSRUYocmV0dmFsLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWERFQ1JFRihyZXR2YWwtPnpkaWN0KTsKICAgICByZXR2YWwtPnVudXNlZF9kYXRhID0gc2VsZi0+dW51c2VkX2RhdGE7CiAgICAgcmV0dmFsLT51bmNvbnN1bWVkX3RhaWwgPSBzZWxmLT51bmNvbnN1bWVkX3RhaWw7CisgICAgcmV0dmFsLT56ZGljdCA9IHNlbGYtPnpkaWN0OworICAgIHJldHZhbC0+ZW9mID0gc2VsZi0+ZW9mOwogCiAgICAgLyogTWFyayBpdCBhcyBiZWluZyBpbml0aWFsaXplZCAqLwogICAgIHJldHZhbC0+aXNfaW5pdGlhbGlzZWQgPSAxOwpAQCAtODg3LDE0ICs5NzksMTMgQEAKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CiAKLSAgICAvKiBJZiBmbHVzaG1vZGUgaXMgWl9GSU5JU0gsIHdlIGFsc28gaGF2ZSB0byBjYWxsIGRlZmxhdGVFbmQoKSB0byBmcmVlCi0gICAgICAgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMuIE5vdGUgd2Ugc2hvdWxkIG9ubHkgZ2V0IFpfU1RSRUFNX0VORCB3aGVuCi0gICAgICAgZmx1c2htb2RlIGlzIFpfRklOSVNIICovCisgICAgLyogSWYgYXQgZW5kIG9mIHN0cmVhbSwgY2xlYW4gdXAgYW55IG1lbW9yeSBhbGxvY2F0ZWQgYnkgemxpYi4gKi8KICAgICBpZiAoZXJyID09IFpfU1RSRUFNX0VORCkgewotICAgICAgICBlcnIgPSBpbmZsYXRlRW5kKCYoc2VsZi0+enN0KSk7CisgICAgICAgIHNlbGYtPmVvZiA9IDE7CiAgICAgICAgIHNlbGYtPmlzX2luaXRpYWxpc2VkID0gMDsKKyAgICAgICAgZXJyID0gaW5mbGF0ZUVuZCgmKHNlbGYtPnpzdCkpOwogICAgICAgICBpZiAoZXJyICE9IFpfT0spIHsKLSAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJmcm9tIGluZmxhdGVFbmQoKSIpOworICAgICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGZpbmlzaGluZyBkZWNvbXByZXNzaW9uIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtOTQyLDYgKzEwMzMsNyBAQAogc3RhdGljIFB5TWVtYmVyRGVmIERlY29tcF9tZW1iZXJzW10gPSB7CiAgICAgeyJ1bnVzZWRfZGF0YSIsICAgICBUX09CSkVDVCwgQ09NUF9PRkYodW51c2VkX2RhdGEpLCBSRUFET05MWX0sCiAgICAgeyJ1bmNvbnN1bWVkX3RhaWwiLCBUX09CSkVDVCwgQ09NUF9PRkYodW5jb25zdW1lZF90YWlsKSwgUkVBRE9OTFl9LAorICAgIHsiZW9mIiwgICAgICAgICAgICAgVF9CT09MLCAgIENPTVBfT0ZGKGVvZiksIFJFQURPTkxZfSwKICAgICB7TlVMTH0sCiB9OwogCkBAIC0xMDI3LDEzICsxMTE5LDEzIEBACiAgICAgICAgICAgICAgICAgYWRsZXIzMl9fZG9jX199LAogICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NvbXByZXNzLCAgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICBjb21wcmVzc19fZG9jX199LAotICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1MsCisgICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29ial9fZG9jX199LAogICAgIHsiY3JjMzIiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NyYzMyLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgIGNyYzMyX19kb2NfX30sCiAgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc19fZG9jX199LAotICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTLAorICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc29ial9fZG9jX199LAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTExMDcsMTAgKzExOTksMTAgQEAKICJcbiIKICJhZGxlcjMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhbiBBZGxlci0zMiBjaGVja3N1bS5cbiIKICJjb21wcmVzcyhzdHJpbmdbLCBsZXZlbF0pIC0tIENvbXByZXNzIHN0cmluZywgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCBpbiAxLTkuXG4iCi0iY29tcHJlc3NvYmooW2xldmVsXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCisiY29tcHJlc3NvYmooW2xldmVsWywgLi4uXV0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogImNyYzMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhIENSQy0zMiBjaGVja3N1bS5cbiIKICJkZWNvbXByZXNzKHN0cmluZyxbd2JpdHNdLFtidWZzaXplXSkgLS0gRGVjb21wcmVzc2VzIGEgY29tcHJlc3NlZCBzdHJpbmcuXG4iCi0iZGVjb21wcmVzc29iaihbd2JpdHNdKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorImRlY29tcHJlc3NvYmooW3diaXRzWywgemRpY3RdXV0pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCiAiXG4iCiAiJ3diaXRzJyBpcyB3aW5kb3cgYnVmZmVyIHNpemUuXG4iCiAiQ29tcHJlc3NvciBvYmplY3RzIHN1cHBvcnQgY29tcHJlc3MoKSBhbmQgZmx1c2goKSBtZXRob2RzOyBkZWNvbXByZXNzb3JcbiIKQEAgLTExNjQsNiArMTI1NiwxMCBAQAogICAgIGlmICh2ZXIgIT0gTlVMTCkKICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJaTElCX1ZFUlNJT04iLCB2ZXIpOwogCisgICAgdmVyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoemxpYlZlcnNpb24oKSk7CisgICAgaWYgKHZlciAhPSBOVUxMKQorICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlpMSUJfUlVOVElNRV9WRVJTSU9OIiwgdmVyKTsKKwogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICIxLjAiKTsKIAogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDc3MDVkMDUuLmEyNzM3ZGQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTc0LDcgKzc0LDcgQEAKIFB5X3NzaXplX3QKIF9QeU9iamVjdF9MZW5ndGhIaW50KFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGRlZmF1bHR2YWx1ZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmhpbnRzdHJvYmogPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fbGVuZ3RoX2hpbnRfXyk7CiAgICAgUHlPYmplY3QgKnJvLCAqaGludG1ldGg7CiAgICAgUHlfc3NpemVfdCBydjsKIApAQCAtODksNyArODksNyBAQAogICAgIH0KIAogICAgIC8qIHRyeSBvLl9fbGVuZ3RoX2hpbnRfXygpICovCi0gICAgaGludG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAiX19sZW5ndGhfaGludF9fIiwgJmhpbnRzdHJvYmopOworICAgIGhpbnRtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19sZW5ndGhfaGludF9fKTsKICAgICBpZiAoaGludG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTIzNyw3ICsyMzcsOCBAQAogICAgIHBiID0gb2JqLT5vYl90eXBlLT50cF9hc19idWZmZXI7CiAgICAgaWYgKHBiID09IE5VTEwgfHwgcGItPmJmX2dldGJ1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gb2JqZWN0IHdpdGggdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBieXRlcywgYnl0ZWFycmF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvciBidWZmZXIgY29tcGF0aWJsZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoKCpwYi0+YmZfZ2V0YnVmZmVyKShvYmosICZ2aWV3LCBQeUJVRl9TSU1QTEUpKSByZXR1cm4gLTE7CkBAIC0zMzEsNyArMzMyLDcgQEAKIHsKICAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKG9iaikpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJTEwMHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMzOSw3ICszNDAsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1fSXNGb3J0cmFuQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcpCitfSXNGb3J0cmFuQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgUHlfc3NpemVfdCBzZCwgZGltOwogICAgIGludCBpOwpAQCAtMzYwLDcgKzM2MSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9Jc0NDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldykKK19Jc0NDb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CkBAIC0zODEsMTYgKzM4MiwxNiBAQAogfQogCiBpbnQKLVB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCkKK1B5QnVmZmVyX0lzQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgb3JkZXIpCiB7CiAKICAgICBpZiAodmlldy0+c3Vib2Zmc2V0cyAhPSBOVUxMKSByZXR1cm4gMDsKIAotICAgIGlmIChmb3J0ID09ICdDJykKKyAgICBpZiAob3JkZXIgPT0gJ0MnKQogICAgICAgICByZXR1cm4gX0lzQ0NvbnRpZ3VvdXModmlldyk7Ci0gICAgZWxzZSBpZiAoZm9ydCA9PSAnRicpCisgICAgZWxzZSBpZiAob3JkZXIgPT0gJ0YnKQogICAgICAgICByZXR1cm4gX0lzRm9ydHJhbkNvbnRpZ3VvdXModmlldyk7Ci0gICAgZWxzZSBpZiAoZm9ydCA9PSAnQScpCisgICAgZWxzZSBpZiAob3JkZXIgPT0gJ0EnKQogICAgICAgICByZXR1cm4gKF9Jc0NDb250aWd1b3VzKHZpZXcpIHx8IF9Jc0ZvcnRyYW5Db250aWd1b3VzKHZpZXcpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ0NCw2MiArNDQ1LDYgQEAKICAgICB9CiB9CiAKLSAgLyogdmlldyBpcyBub3QgY2hlY2tlZCBmb3IgY29uc2lzdGVuY3kgaW4gZWl0aGVyIG9mIHRoZXNlLiAgSXQgaXMKLSAgICAgYXNzdW1lZCB0aGF0IHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaXMgdmlldy0+bGVuIGluCi0gICAgIHZpZXctPmxlbiAvIHZpZXctPml0ZW1zaXplIGVsZW1lbnRzLgotICAqLwotCi1pbnQKLVB5QnVmZmVyX1RvQ29udGlndW91cyh2b2lkICpidWYsIFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCkKLXsKLSAgICBpbnQgazsKLSAgICB2b2lkICgqYWRkb25lKShpbnQsIFB5X3NzaXplX3QgKiwgY29uc3QgUHlfc3NpemVfdCAqKTsKLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzLCBlbGVtZW50czsKLSAgICBjaGFyICpkZXN0LCAqcHRyOwotCi0gICAgaWYgKGxlbiA+IHZpZXctPmxlbikgewotICAgICAgICBsZW4gPSB2aWV3LT5sZW47Ci0gICAgfQotCi0gICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCBmb3J0KSkgewotICAgICAgICAvKiBzaW1wbGVzdCBjb3B5IGlzIGFsbCB0aGF0IGlzIG5lZWRlZCAqLwotICAgICAgICBtZW1jcHkoYnVmLCB2aWV3LT5idWYsIGxlbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIE90aGVyd2lzZSBhIG1vcmUgZWxhYm9yYXRlIHNjaGVtZSBpcyBuZWVkZWQgKi8KLQotICAgIC8qIFhYWChubm9yd2l0eik6IG5lZWQgdG8gY2hlY2sgZm9yIG92ZXJmbG93ISAqLwotICAgIGluZGljZXMgPSAoUHlfc3NpemVfdCAqKVB5TWVtX01hbGxvYyhzaXplb2YoUHlfc3NpemVfdCkqKHZpZXctPm5kaW0pKTsKLSAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZm9yIChrPTA7IGs8dmlldy0+bmRpbTtrKyspIHsKLSAgICAgICAgaW5kaWNlc1trXSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKGZvcnQgPT0gJ0YnKSB7Ci0gICAgICAgIGFkZG9uZSA9IF9QeV9hZGRfb25lX3RvX2luZGV4X0Y7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBhZGRvbmUgPSBfUHlfYWRkX29uZV90b19pbmRleF9DOwotICAgIH0KLSAgICBkZXN0ID0gYnVmOwotICAgIC8qIFhYWCA6IFRoaXMgaXMgbm90IGdvaW5nIHRvIGJlIHRoZSBmYXN0ZXN0IGNvZGUgaW4gdGhlIHdvcmxkCi0gICAgICAgICAgICAgc2V2ZXJhbCBvcHRpbWl6YXRpb25zIGFyZSBwb3NzaWJsZS4KLSAgICAgKi8KLSAgICBlbGVtZW50cyA9IGxlbiAvIHZpZXctPml0ZW1zaXplOwotICAgIHdoaWxlIChlbGVtZW50cy0tKSB7Ci0gICAgICAgIGFkZG9uZSh2aWV3LT5uZGltLCBpbmRpY2VzLCB2aWV3LT5zaGFwZSk7Ci0gICAgICAgIHB0ciA9IFB5QnVmZmVyX0dldFBvaW50ZXIodmlldywgaW5kaWNlcyk7Ci0gICAgICAgIG1lbWNweShkZXN0LCBwdHIsIHZpZXctPml0ZW1zaXplKTsKLSAgICAgICAgZGVzdCArPSB2aWV3LT5pdGVtc2l6ZTsKLSAgICB9Ci0gICAgUHlNZW1fRnJlZShpbmRpY2VzKTsKLSAgICByZXR1cm4gMDsKLX0KLQogaW50CiBQeUJ1ZmZlcl9Gcm9tQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCkKIHsKQEAgLTY0OCw5ICs1OTMsOSBAQAogCiBpbnQKIFB5QnVmZmVyX0ZpbGxJbmZvKFB5X2J1ZmZlciAqdmlldywgUHlPYmplY3QgKm9iaiwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgaW50IHJlYWRvbmx5LCBpbnQgZmxhZ3MpCisgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9ubHksIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsKKyAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsgLyogWFhYIHdoeSBub3QgLTE/ICovCiAgICAgaWYgKCgoZmxhZ3MgJiBQeUJVRl9XUklUQUJMRSkgPT0gUHlCVUZfV1JJVEFCTEUpICYmCiAgICAgICAgIChyZWFkb25seSA9PSAxKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCkBAIC02OTYsMTYgKzY0MSwxNiBAQAogICAgIFB5T2JqZWN0ICptZXRoOwogICAgIFB5T2JqZWN0ICplbXB0eSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXRfY2FjaGUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZm9ybWF0X18pOwogCiAgICAgLyogSWYgbm8gZm9ybWF0X3NwZWMgaXMgcHJvdmlkZWQsIHVzZSBhbiBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCkgewotICAgICAgICBlbXB0eSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICBmb3JtYXRfc3BlYyA9IGVtcHR5OwogICAgIH0KIAogICAgIC8qIEZpbmQgdGhlICh1bmJvdW5kISkgX19mb3JtYXRfXyBtZXRob2QgKGEgYm9ycm93ZWQgcmVmZXJlbmNlKSAqLwotICAgIG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICJfX2Zvcm1hdF9fIiwgJmZvcm1hdF9jYWNoZSk7CisgICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19mb3JtYXRfXyk7CiAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtNzkyLDggKzczNyw3IEBACiAgICAgICAgICAgICByZXR1cm4geDsKICAgICAgICAgUHlfREVDUkVGKHgpOyAvKiBjYW4ndCBkbyBpdCAqLwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjY4LDM3ICsxMjEyLDMxIEBACiB9CiAKIAotUHlPYmplY3QgKgotX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KFB5T2JqZWN0ICppbnRlZ3JhbCwgY29uc3QgY2hhciogZXJyb3JfZm9ybWF0KQorLyoKKyAgUmV0dXJucyB0aGUgSW50ZWdyYWwgaW5zdGFuY2UgY29udmVydGVkIHRvIGFuIGludC4gVGhlIGluc3RhbmNlIGlzIGV4cGVjdGVkCisgIHRvIGJlIGFuIGludCBvciBoYXZlIGFuIF9faW50X18gbWV0aG9kLiBTdGVhbHMgaW50ZWdyYWwncworICByZWZlcmVuY2UuIGVycm9yX2Zvcm1hdCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBUeXBlRXJyb3IgaWYgaW50ZWdyYWwKKyAgaXNuJ3QgYWN0dWFsbHkgYW4gSW50ZWdyYWwgaW5zdGFuY2UuIGVycm9yX2Zvcm1hdCBzaG91bGQgYmUgYSBmb3JtYXQgc3RyaW5nCisgIHRoYXQgY2FuIGFjY2VwdCBhIGNoYXIqIG5hbWluZyBpbnRlZ3JhbCdzIHR5cGUuIAorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjb252ZXJ0X2ludGVncmFsX3RvX2ludChQeU9iamVjdCAqaW50ZWdyYWwsIGNvbnN0IGNoYXIgKmVycm9yX2Zvcm1hdCkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmludF9uYW1lID0gTlVMTDsKLSAgICBpZiAoaW50X25hbWUgPT0gTlVMTCkgewotICAgICAgICBpbnRfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2ludF9fIik7Ci0gICAgICAgIGlmIChpbnRfbmFtZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGludGVncmFsICYmICFQeUxvbmdfQ2hlY2soaW50ZWdyYWwpKSB7Ci0gICAgICAgIC8qIERvbid0IGdvIHRocm91Z2ggdHBfYXNfbnVtYmVyLT5uYl9pbnQgdG8gYXZvaWQKLSAgICAgICAgICAgaGl0dGluZyB0aGUgY2xhc3NpYyBjbGFzcyBmYWxsYmFjayB0byBfX3RydW5jX18uICovCi0gICAgICAgIFB5T2JqZWN0ICppbnRfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIoaW50ZWdyYWwsIGludF9uYW1lKTsKLSAgICAgICAgaWYgKGludF9mdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIFJhaXNlIGEgZGlmZmVyZW50IGVycm9yLiAqLwotICAgICAgICAgICAgZ290byBub25faW50ZWdyYWxfZXJyb3I7CisgICAgUHlOdW1iZXJNZXRob2RzICpuYjsKKyAgICBpZiAoUHlMb25nX0NoZWNrKGludGVncmFsKSkKKyAgICAgICAgcmV0dXJuIGludGVncmFsOworICAgIG5iID0gUHlfVFlQRShpbnRlZ3JhbCktPnRwX2FzX251bWJlcjsKKyAgICBpZiAobmItPm5iX2ludCkgeworICAgICAgICBQeU9iamVjdCAqYXNfaW50ID0gbmItPm5iX2ludChpbnRlZ3JhbCk7CisgICAgICAgIGlmICghYXNfaW50IHx8IFB5TG9uZ19DaGVjayhhc19pbnQpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZWdyYWwpOworICAgICAgICAgICAgcmV0dXJuIGFzX2ludDsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoaW50ZWdyYWwpOwotICAgICAgICBpbnRlZ3JhbCA9IFB5RXZhbF9DYWxsT2JqZWN0KGludF9mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGludF9mdW5jKTsKLSAgICAgICAgaWYgKGludGVncmFsICYmICFQeUxvbmdfQ2hlY2soaW50ZWdyYWwpKSB7Ci0gICAgICAgICAgICBnb3RvIG5vbl9pbnRlZ3JhbF9lcnJvcjsKLSAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoYXNfaW50KTsKICAgICB9Ci0gICAgcmV0dXJuIGludGVncmFsOwotCi1ub25faW50ZWdyYWxfZXJyb3I6CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgZXJyb3JfZm9ybWF0LCBQeV9UWVBFKGludGVncmFsKS0+dHBfbmFtZSk7CiAgICAgUHlfREVDUkVGKGludGVncmFsKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gTlVMTDsgICAgCiB9CiAKIApAQCAtMTMyNSwxNiArMTI2MywxMCBAQAogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07Ci0gICAgc3RhdGljIFB5T2JqZWN0ICp0cnVuY19uYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBjb25zdCBjaGFyICpidWZmZXI7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfbGVuOwotCi0gICAgaWYgKHRydW5jX25hbWUgPT0gTlVMTCkgewotICAgICAgICB0cnVuY19uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fdHJ1bmNfXyIpOwotICAgICAgICBpZiAodHJ1bmNfbmFtZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIF9QeV9JREVOVElGSUVSKF9fdHJ1bmNfXyk7CiAKICAgICBpZiAobyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwpAQCAtMTM1NiwzMiArMTI4OCwzMCBAQAogICAgIH0KICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKSAvKiBBbiBpbnQgc3ViY2xhc3Mgd2l0aG91dCBuYl9pbnQgKi8KICAgICAgICAgcmV0dXJuIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopbyk7Ci0gICAgdHJ1bmNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIobywgdHJ1bmNfbmFtZSk7CisgICAgdHJ1bmNfZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jX2Z1bmMpIHsKICAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwogICAgICAgICBQeU9iamVjdCAqaW50X2luc3RhbmNlOwogICAgICAgICBQeV9ERUNSRUYodHJ1bmNfZnVuYyk7CiAgICAgICAgIC8qIF9fdHJ1bmNfXyBpcyBzcGVjaWZpZWQgdG8gcmV0dXJuIGFuIEludGVncmFsIHR5cGUsCi0gICAgICAgICAgIGJ1dCBsb25nKCkgbmVlZHMgdG8gcmV0dXJuIGEgbG9uZy4gKi8KLSAgICAgICAgaW50X2luc3RhbmNlID0gX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KAotICAgICAgICAgICAgdHJ1bmNhdGVkLAorICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGEgaW50LiAqLworICAgICAgICBpbnRfaW5zdGFuY2UgPSBjb252ZXJ0X2ludGVncmFsX3RvX2ludCh0cnVuY2F0ZWQsCiAgICAgICAgICAgICAiX190cnVuY19fIHJldHVybmVkIG5vbi1JbnRlZ3JhbCAodHlwZSAlLjIwMHMpIik7CiAgICAgICAgIHJldHVybiBpbnRfaW5zdGFuY2U7CiAgICAgfQotICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBJdCdzIG5vdCBhbiBlcnJvciBpZiAgby5fX3RydW5jX18gZG9lc24ndCBleGlzdC4gKi8KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlCeXRlc19DaGVjayhvKSkKICAgICAgICAgLyogbmVlZCB0byBkbyBleHRyYSBlcnJvciBjaGVja2luZyB0aGF0IFB5TG9uZ19Gcm9tU3RyaW5nKCkKLSAgICAgICAgICogZG9lc24ndCBkby4gIEluIHBhcnRpY3VsYXIgbG9uZygnOS41JykgbXVzdCByYWlzZSBhbgorICAgICAgICAgKiBkb2Vzbid0IGRvLiAgSW4gcGFydGljdWxhciBpbnQoJzkuNScpIG11c3QgcmFpc2UgYW4KICAgICAgICAgICogZXhjZXB0aW9uLCBub3QgdHJ1bmNhdGUgdGhlIGZsb2F0LgogICAgICAgICAgKi8KICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUobykpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobykpCiAgICAgICAgIC8qIFRoZSBhYm92ZSBjaGVjayBpcyBkb25lIGluIFB5TG9uZ19Gcm9tVW5pY29kZSgpLiAqLwotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKG8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QobywgMTApOwogICAgIGlmICghUHlPYmplY3RfQXNDaGFyQnVmZmVyKG8sICZidWZmZXIsICZidWZmZXJfbGVuKSkKICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoYnVmZmVyLCBidWZmZXJfbGVuKTsKIApAQCAtMTk4Niw3ICsxOTE2LDcgQEAKIGludAogUHlNYXBwaW5nX0NoZWNrKFB5T2JqZWN0ICpvKQogewotICAgIHJldHVybiAgICAgIG8gJiYgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZyAmJgorICAgIHJldHVybiBvICYmIG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmcgJiYKICAgICAgICAgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZy0+bXBfc3Vic2NyaXB0OwogfQogCkBAIC0yMDg0LDEwICsyMDE0LDExIEBACiB7CiAgICAgUHlPYmplY3QgKmtleXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfS2V5cyhvKTsKLSAgICBrZXlzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAia2V5cyIsIE5VTEwpOworICAgIGtleXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG8sICZQeUlkX2tleXMsIE5VTEwpOwogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3Qoa2V5cywgIm8ua2V5cygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMDAsMTAgKzIwMzEsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG8pKQogICAgICAgICByZXR1cm4gUHlEaWN0X0l0ZW1zKG8pOwotICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAiaXRlbXMiLCBOVUxMKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfaXRlbXMsIE5VTEwpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGl0ZW1zLCAiby5pdGVtcygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMTYsMTAgKzIwNDgsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqdmFsdWVzOwogICAgIFB5T2JqZWN0ICpmYXN0OworICAgIF9QeV9JREVOVElGSUVSKHZhbHVlcyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfVmFsdWVzKG8pOwotICAgIHZhbHVlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgInZhbHVlcyIsIE5VTEwpOworICAgIHZhbHVlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfdmFsdWVzLCBOVUxMKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3QodmFsdWVzLCAiby52YWx1ZXMoKSBhcmUgbm90IGl0ZXJhYmxlIik7CkBAIC0yMjI1LDIyICsyMTU4LDExIEBACiAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5T2JqZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQorc3RhdGljIFB5T2JqZWN0KgorY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBQeU9iamVjdCAqYXJnczsKIAogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICB0eXBlX2Vycm9yKCJhdHRyaWJ1dGUgb2YgdHlwZSAnJS4yMDBzJyBpcyBub3QgY2FsbGFibGUiLCBmdW5jKTsKQEAgLTIyNDgsOSArMjE3MCwxMCBAQAogICAgIH0KIAogICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGlzX3NpemVfdCkKKyAgICAgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKQEAgLTIyNjUsNDQgKzIxODgsODYgQEAKIH0KIAogUHlPYmplY3QgKgorUHlPYmplY3RfQ2FsbE1ldGhvZChQeU9iamVjdCAqbywgY2hhciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKworICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKICAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7Ci0gICAgICAgIHR5cGVfZXJyb3IoImF0dHJpYnV0ZSBvZiB0eXBlICclLjIwMHMnIGlzIG5vdCBjYWxsYWJsZSIsIGZ1bmMpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0KLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7Ci0KLSAgZXhpdDoKLSAgICAvKiBhcmdzIGdldHMgY29uc3VtZWQgaW4gY2FsbF9mdW5jdGlvbl90YWlsICovCi0gICAgUHlfWERFQ1JFRihmdW5jKTsKLQorICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CisgICAgdmFfZW5kKHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmphcmdzX21rdHVwbGUodmFfbGlzdCB2YSkKQEAgLTIzNTUsNiArMjMyMCwzNSBAQAogfQogCiBQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCisgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSwgLi4uKQoreworICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIHZhX2xpc3QgdmFyZ3M7CisKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisKKyAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2FsbGFibGUsIG5hbWUpOworICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvdW50IHRoZSBhcmdzICovCisgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOworICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHZhX2VuZCh2YXJncyk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisKKyAgICByZXR1cm4gdG1wOworfQorCitQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uKQogewogICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOwpAQCAtMjM3OCwxMCArMjM3Miw4IEBACiAKIC8qIGlzaW5zdGFuY2UoKSwgaXNzdWJjbGFzcygpICovCiAKLS8qIGFic3RyYWN0X2dldF9iYXNlcygpIGhhcyBsb2dpY2FsbHkgNCByZXR1cm4gc3RhdGVzLCB3aXRoIGEgc29ydCBvZiAwdGgKLSAqIHN0YXRlIHRoYXQgd2lsbCBhbG1vc3QgbmV2ZXIgaGFwcGVuLgorLyogYWJzdHJhY3RfZ2V0X2Jhc2VzKCkgaGFzIGxvZ2ljYWxseSA0IHJldHVybiBzdGF0ZXM6CiAgKgotICogMC4gY3JlYXRpbmcgdGhlIF9fYmFzZXNfXyBzdGF0aWMgc3RyaW5nIGNvdWxkIGdldCBhIE1lbW9yeUVycm9yCiAgKiAxLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yCiAgKiAyLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIHNvbWUgb3RoZXIgZXhjZXB0aW9uCiAgKiAzLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJldHVybiBhIHR1cGxlCkBAIC0yNDA3LDE2ICsyMzk5LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWJzdHJhY3RfZ2V0X2Jhc2VzKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2Jhc2VzX18gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fYmFzZXNfXyk7CiAgICAgUHlPYmplY3QgKmJhc2VzOwogCi0gICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fYmFzZXNfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2Jhc2VzX18iKTsKLSAgICAgICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgIGJhc2VzID0gUHlPYmplY3RfR2V0QXR0cihjbHMsIF9fYmFzZXNfXyk7CisgICAgYmFzZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19iYXNlc19fKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCiAgICAgaWYgKGJhc2VzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQpAQCAtMjQ4NiwxOSArMjQ3MywxMyBAQAogcmVjdXJzaXZlX2lzaW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7CiAgICAgUHlPYmplY3QgKmljbHM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2NsYXNzX18gPSBOVUxMOwogICAgIGludCByZXR2YWwgPSAwOwotCi0gICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fY2xhc3NfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOwogCiAgICAgaWYgKFB5VHlwZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X1R5cGVDaGVjayhpbnN0LCAoUHlUeXBlT2JqZWN0ICopY2xzKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYyA9IFB5T2JqZWN0X0dldEF0dHIoaW5zdCwgX19jbGFzc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICAgICAgaWYgKGMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MTksNyArMjUwMCw3IEBACiAgICAgICAgIGlmICghY2hlY2tfY2xhc3MoY2xzLAogICAgICAgICAgICAgImlzaW5zdGFuY2UoKSBhcmcgMiBtdXN0IGJlIGEgdHlwZSBvciB0dXBsZSBvZiB0eXBlcyIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpY2xzID0gUHlPYmplY3RfR2V0QXR0cihpbnN0LCBfX2NsYXNzX18pOworICAgICAgICBpY2xzID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoaWNscyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MzgsNyArMjUxOSw3IEBACiBpbnQKIFB5T2JqZWN0X0lzSW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2luc3RhbmNlY2hlY2tfXyk7CiAgICAgUHlPYmplY3QgKmNoZWNrZXI7CiAKICAgICAvKiBRdWljayB0ZXN0IGZvciBhbiBleGFjdCBtYXRjaCAqLwpAQCAtMjU2NCw3ICsyNTQ1LDcgQEAKICAgICAgICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgY2hlY2tlciA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKGNscywgIl9faW5zdGFuY2VjaGVja19fIiwgJm5hbWUpOworICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICZQeUlkX19faW5zdGFuY2VjaGVja19fKTsKICAgICBpZiAoY2hlY2tlciAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIGludCBvayA9IC0xOwpAQCAtMjYwNyw3ICsyNTg4LDcgQEAKIGludAogUHlPYmplY3RfSXNTdWJjbGFzcyhQeU9iamVjdCAqZGVyaXZlZCwgUHlPYmplY3QgKmNscykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fc3ViY2xhc3NjaGVja19fKTsKICAgICBQeU9iamVjdCAqY2hlY2tlcjsKIAogICAgIGlmIChQeVR1cGxlX0NoZWNrKGNscykpIHsKQEAgLTI2MjksNyArMjYxMCw3IEBACiAgICAgICAgIHJldHVybiByOwogICAgIH0KIAotICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICJfX3N1YmNsYXNzY2hlY2tfXyIsICZuYW1lKTsKKyAgICBjaGVja2VyID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoY2xzLCAmUHlJZF9fX3N1YmNsYXNzY2hlY2tfXyk7CiAgICAgaWYgKGNoZWNrZXIgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwogICAgICAgICBpbnQgb2sgPSAtMTsKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDU1YjRkZjYuLjJiYjNhMjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhbGxvYyA9IHNpemUgKyAxOwotICAgICAgICBuZXctPm9iX2J5dGVzID0gUHlNZW1fTWFsbG9jKGFsbG9jKTsKKyAgICAgICAgbmV3LT5vYl9ieXRlcyA9IFB5T2JqZWN0X01hbGxvYyhhbGxvYyk7CiAgICAgICAgIGlmIChuZXctPm9iX2J5dGVzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0yMDksNyArMjA5LDcgQEAKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKICAgICB9CiAKLSAgICBzdmFsID0gUHlNZW1fUmVhbGxvYygoKFB5Qnl0ZUFycmF5T2JqZWN0ICopc2VsZiktPm9iX2J5dGVzLCBhbGxvYyk7CisgICAgc3ZhbCA9IFB5T2JqZWN0X1JlYWxsb2MoKChQeUJ5dGVBcnJheU9iamVjdCAqKXNlbGYpLT5vYl9ieXRlcywgYWxsb2MpOwogICAgIGlmIChzdmFsID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNzg5LDcgKzc4OSw3IEBACiAgICAgICAgIHNpemUgPSB2aWV3LmxlbjsKICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBzaXplKSA8IDApIGdvdG8gZmFpbDsKICAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cyhzZWxmLT5vYl9ieXRlcywgJnZpZXcsIHNpemUsICdDJykgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIGZhaWw6CkBAIC04NTAsODcgKzg1MCw4MiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZXByKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgY29uc3QgY2hhciAqcXVvdGVfcHJlZml4ID0gImJ5dGVhcnJheShiIjsKICAgICBjb25zdCBjaGFyICpxdW90ZV9wb3N0Zml4ID0gIikiOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gUHlfU0laRShzZWxmKTsKLSAgICAvKiAxNCA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKi8KKyAgICAvKiAxNSA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKyAxICovCiAgICAgc2l6ZV90IG5ld3NpemU7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxlbmd0aCA+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+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaXRlcl9zZXRzdGF0ZShzdHJpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgc3RyaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pc3RyaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXN0cml0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pc3RyaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKaW5kZXggZjk1Njg1Mi4uY2RjOWIxYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGFzc29iamVjdC5jCisrKyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwpAQCAtMTQsNiArMTQsOCBAQAogI2RlZmluZSBQeU1ldGhvZF9NQVhGUkVFTElTVCAyNTYKICNlbmRpZgogCitfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisKIFB5T2JqZWN0ICoKIFB5TWV0aG9kX0Z1bmN0aW9uKFB5T2JqZWN0ICppbSkKIHsKQEAgLTE5MCw4ICsxOTIsNyBAQAogICAgICAgICAhUHlNZXRob2RfQ2hlY2soc2VsZikgfHwKICAgICAgICAgIVB5TWV0aG9kX0NoZWNrKG90aGVyKSkKICAgICB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBhID0gKFB5TWV0aG9kT2JqZWN0ICopc2VsZjsKICAgICBiID0gKFB5TWV0aG9kT2JqZWN0ICopb3RoZXI7CkBAIC0yMjgsNyArMjI5LDcgQEAKICAgICB9CiAgICAga2xhc3MgPSAoUHlPYmplY3QqKVB5X1RZUEUoc2VsZik7CiAKLSAgICBmdW5jbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuYywgIl9fbmFtZV9fIik7CisgICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDIsNyArMjQzLDcgQEAKICAgICBpZiAoa2xhc3MgPT0gTlVMTCkKICAgICAgICAga2xhc3NuYW1lID0gTlVMTDsKICAgICBlbHNlIHsKLSAgICAgICAga2xhc3NuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhrbGFzcywgIl9fbmFtZV9fIik7CisgICAgICAgIGtsYXNzbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoa2xhc3MsICZQeUlkX19fbmFtZV9fKTsKICAgICAgICAgaWYgKGtsYXNzbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmdW5jbmFtZSk7CkBAIC00MDIsNiArNDAzLDE1IEBACiAgICAgKHZvaWQpUHlNZXRob2RfQ2xlYXJGcmVlTGlzdCgpOwogfQogCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlNZXRob2RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeU1ldGhvZE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlNZXRob2RPYmplY3QpKTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBpbnN0YW5jZSBtZXRob2QKICAqLwpAQCAtNTE5LDggKzUyOSw3IEBACiAgICAgICAgICFQeUluc3RhbmNlTWV0aG9kX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeUluc3RhbmNlTWV0aG9kX0NoZWNrKG90aGVyKSkKICAgICB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBhID0gKFB5SW5zdGFuY2VNZXRob2RPYmplY3QgKilzZWxmOwogICAgIGIgPSAoUHlJbnN0YW5jZU1ldGhvZE9iamVjdCAqKW90aGVyOwpAQCAtNTQ3LDcgKzU1Niw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGZ1bmNuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmdW5jLCAiX19uYW1lX18iKTsKKyAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChmdW5jbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggYmI5MzhlYS4uOTcxM2Y2MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTgsMTkgKzgsMjQgQEAKIC8qIGFsbF9uYW1lX2NoYXJzKHMpOiB0cnVlIGlmZiBhbGwgY2hhcnMgaW4gcyBhcmUgdmFsaWQgTkFNRV9DSEFSUyAqLwogCiBzdGF0aWMgaW50Ci1hbGxfbmFtZV9jaGFycyhQeV9VTklDT0RFICpzKQorYWxsX25hbWVfY2hhcnMoUHlPYmplY3QgKm8pCiB7CiAgICAgc3RhdGljIGNoYXIgb2tfbmFtZV9jaGFyWzI1Nl07CiAgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKm5hbWVfY2hhcnMgPSAodW5zaWduZWQgY2hhciAqKU5BTUVfQ0hBUlM7CisgICAgUHlVbmljb2RlT2JqZWN0ICp1ID0gKFB5VW5pY29kZU9iamVjdCAqKW87CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqczsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG8pIHx8IFB5VW5pY29kZV9SRUFEWSh1KSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSkgPj0gMTI4KQorICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChva19uYW1lX2NoYXJbKm5hbWVfY2hhcnNdID09IDApIHsKICAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKICAgICAgICAgZm9yIChwID0gbmFtZV9jaGFyczsgKnA7IHArKykKICAgICAgICAgICAgIG9rX25hbWVfY2hhclsqcF0gPSAxOwogICAgIH0KKyAgICBzID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodSk7CiAgICAgd2hpbGUgKCpzKSB7Ci0gICAgICAgIGlmICgqcyA+PSAxMjgpCi0gICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKG9rX25hbWVfY2hhclsqcysrXSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTEsNyArNTYsOCBAQAogICAgICAgICAgICBQeU9iamVjdCAqbG5vdGFiKQogewogICAgIFB5Q29kZU9iamVjdCAqY287Ci0gICAgUHlfc3NpemVfdCBpOworICAgIHVuc2lnbmVkIGNoYXIgKmNlbGwyYXJnID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5fY2VsbHZhcnM7CiAKICAgICAvKiBDaGVjayBhcmd1bWVudCB0eXBlcyAqLwogICAgIGlmIChhcmdjb3VudCA8IDAgfHwga3dvbmx5YXJnY291bnQgPCAwIHx8IG5sb2NhbHMgPCAwIHx8CkBAIC02OCw0OCArNzQsNzkgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBuX2NlbGx2YXJzID0gUHlUdXBsZV9HRVRfU0laRShjZWxsdmFycyk7CiAgICAgaW50ZXJuX3N0cmluZ3MobmFtZXMpOwogICAgIGludGVybl9zdHJpbmdzKHZhcm5hbWVzKTsKICAgICBpbnRlcm5fc3RyaW5ncyhmcmVldmFycyk7CiAgICAgaW50ZXJuX3N0cmluZ3MoY2VsbHZhcnMpOwogICAgIC8qIEludGVybiBzZWxlY3RlZCBzdHJpbmcgY29uc3RhbnRzICovCi0gICAgZm9yIChpID0gUHlUdXBsZV9TaXplKGNvbnN0cyk7IC0taSA+PSAwOyApIHsKKyAgICBmb3IgKGkgPSBQeVR1cGxlX0dFVF9TSVpFKGNvbnN0cyk7IC0taSA+PSAwOyApIHsKICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dldEl0ZW0oY29uc3RzLCBpKTsKLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFhbGxfbmFtZV9jaGFycyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkpCisgICAgICAgIGlmICghYWxsX25hbWVfY2hhcnModikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJlB5VHVwbGVfR0VUX0lURU0oY29uc3RzLCBpKSk7CiAgICAgfQotICAgIGNvID0gUHlPYmplY3RfTkVXKFB5Q29kZU9iamVjdCwgJlB5Q29kZV9UeXBlKTsKLSAgICBpZiAoY28gIT0gTlVMTCkgewotICAgICAgICBjby0+Y29fYXJnY291bnQgPSBhcmdjb3VudDsKLSAgICAgICAgY28tPmNvX2t3b25seWFyZ2NvdW50ID0ga3dvbmx5YXJnY291bnQ7Ci0gICAgICAgIGNvLT5jb19ubG9jYWxzID0gbmxvY2FsczsKLSAgICAgICAgY28tPmNvX3N0YWNrc2l6ZSA9IHN0YWNrc2l6ZTsKLSAgICAgICAgY28tPmNvX2ZsYWdzID0gZmxhZ3M7Ci0gICAgICAgIFB5X0lOQ1JFRihjb2RlKTsKLSAgICAgICAgY28tPmNvX2NvZGUgPSBjb2RlOwotICAgICAgICBQeV9JTkNSRUYoY29uc3RzKTsKLSAgICAgICAgY28tPmNvX2NvbnN0cyA9IGNvbnN0czsKLSAgICAgICAgUHlfSU5DUkVGKG5hbWVzKTsKLSAgICAgICAgY28tPmNvX25hbWVzID0gbmFtZXM7Ci0gICAgICAgIFB5X0lOQ1JFRih2YXJuYW1lcyk7Ci0gICAgICAgIGNvLT5jb192YXJuYW1lcyA9IHZhcm5hbWVzOwotICAgICAgICBQeV9JTkNSRUYoZnJlZXZhcnMpOwotICAgICAgICBjby0+Y29fZnJlZXZhcnMgPSBmcmVldmFyczsKLSAgICAgICAgUHlfSU5DUkVGKGNlbGx2YXJzKTsKLSAgICAgICAgY28tPmNvX2NlbGx2YXJzID0gY2VsbHZhcnM7Ci0gICAgICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7Ci0gICAgICAgIGNvLT5jb19maWxlbmFtZSA9IGZpbGVuYW1lOwotICAgICAgICBQeV9JTkNSRUYobmFtZSk7Ci0gICAgICAgIGNvLT5jb19uYW1lID0gbmFtZTsKLSAgICAgICAgY28tPmNvX2ZpcnN0bGluZW5vID0gZmlyc3RsaW5lbm87Ci0gICAgICAgIFB5X0lOQ1JFRihsbm90YWIpOwotICAgICAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOwotICAgICAgICBjby0+Y29fem9tYmllZnJhbWUgPSBOVUxMOwotICAgICAgICBjby0+Y29fd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIC8qIENyZWF0ZSBtYXBwaW5nIGJldHdlZW4gY2VsbHMgYW5kIGFyZ3VtZW50cyBpZiBuZWVkZWQuICovCisgICAgaWYgKG5fY2VsbHZhcnMpIHsKKyAgICAgICAgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gYXJnY291bnQgKyBrd29ubHlhcmdjb3VudCArCisgICAgICAgICAgICAoKGZsYWdzICYgQ09fVkFSQVJHUykgIT0gMCkgKyAoKGZsYWdzICYgQ09fVkFSS0VZV09SRFMpICE9IDApOworICAgICAgICBQeV9zc2l6ZV90IGFsbG9jX3NpemUgPSBzaXplb2YodW5zaWduZWQgY2hhcikgKiBuX2NlbGx2YXJzOworICAgICAgICBpbnQgdXNlZF9jZWxsMmFyZyA9IDA7CisgICAgICAgIGNlbGwyYXJnID0gUHlNZW1fTUFMTE9DKGFsbG9jX3NpemUpOworICAgICAgICBpZiAoY2VsbDJhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtZW1zZXQoY2VsbDJhcmcsIENPX0NFTExfTk9UX0FOX0FSRywgYWxsb2Nfc2l6ZSk7CisgICAgICAgIC8qIEZpbmQgY2VsbHMgd2hpY2ggYXJlIGFsc28gYXJndW1lbnRzLiAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9jZWxsdmFyczsgaSsrKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGo7CisgICAgICAgICAgICBQeU9iamVjdCAqY2VsbCA9IFB5VHVwbGVfR0VUX0lURU0oY2VsbHZhcnMsIGkpOworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKHZhcm5hbWVzLCBqKTsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNlbGwsIGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgY2VsbDJhcmdbaV0gPSBqOworICAgICAgICAgICAgICAgICAgICB1c2VkX2NlbGwyYXJnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghdXNlZF9jZWxsMmFyZykgeworICAgICAgICAgICAgUHlNZW1fRlJFRShjZWxsMmFyZyk7CisgICAgICAgICAgICBjZWxsMmFyZyA9IE5VTEw7CisgICAgICAgIH0KICAgICB9CisgICAgY28gPSBQeU9iamVjdF9ORVcoUHlDb2RlT2JqZWN0LCAmUHlDb2RlX1R5cGUpOworICAgIGlmIChjbyA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjZWxsMmFyZykKKyAgICAgICAgICAgIFB5TWVtX0ZSRUUoY2VsbDJhcmcpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY28tPmNvX2FyZ2NvdW50ID0gYXJnY291bnQ7CisgICAgY28tPmNvX2t3b25seWFyZ2NvdW50ID0ga3dvbmx5YXJnY291bnQ7CisgICAgY28tPmNvX25sb2NhbHMgPSBubG9jYWxzOworICAgIGNvLT5jb19zdGFja3NpemUgPSBzdGFja3NpemU7CisgICAgY28tPmNvX2ZsYWdzID0gZmxhZ3M7CisgICAgUHlfSU5DUkVGKGNvZGUpOworICAgIGNvLT5jb19jb2RlID0gY29kZTsKKyAgICBQeV9JTkNSRUYoY29uc3RzKTsKKyAgICBjby0+Y29fY29uc3RzID0gY29uc3RzOworICAgIFB5X0lOQ1JFRihuYW1lcyk7CisgICAgY28tPmNvX25hbWVzID0gbmFtZXM7CisgICAgUHlfSU5DUkVGKHZhcm5hbWVzKTsKKyAgICBjby0+Y29fdmFybmFtZXMgPSB2YXJuYW1lczsKKyAgICBQeV9JTkNSRUYoZnJlZXZhcnMpOworICAgIGNvLT5jb19mcmVldmFycyA9IGZyZWV2YXJzOworICAgIFB5X0lOQ1JFRihjZWxsdmFycyk7CisgICAgY28tPmNvX2NlbGx2YXJzID0gY2VsbHZhcnM7CisgICAgY28tPmNvX2NlbGwyYXJnID0gY2VsbDJhcmc7CisgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICBjby0+Y29fZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgY28tPmNvX25hbWUgPSBuYW1lOworICAgIGNvLT5jb19maXJzdGxpbmVubyA9IGZpcnN0bGluZW5vOworICAgIFB5X0lOQ1JFRihsbm90YWIpOworICAgIGNvLT5jb19sbm90YWIgPSBsbm90YWI7CisgICAgY28tPmNvX3pvbWJpZWZyYW1lID0gTlVMTDsKKyAgICBjby0+Y29fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIHJldHVybiBjbzsKIH0KIApAQCAtMjEyLDkgKzI0OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pKTsKKyAgICAgICAgICAgIGl0ZW0gPSBfUHlVbmljb2RlX0NvcHkoaXRlbSk7CiAgICAgICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3R1cGxlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMCw2ICszNjUsOCBAQAogICAgIFB5X1hERUNSRUYoY28tPmNvX2ZpbGVuYW1lKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19uYW1lKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19sbm90YWIpOworICAgIGlmIChjby0+Y29fY2VsbDJhcmcgIT0gTlVMTCkKKyAgICAgICAgUHlNZW1fRlJFRShjby0+Y29fY2VsbDJhcmcpOwogICAgIGlmIChjby0+Y29fem9tYmllZnJhbWUgIT0gTlVMTCkKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKGNvLT5jb196b21iaWVmcmFtZSk7CiAgICAgaWYgKGNvLT5jb193ZWFrcmVmbGlzdCAhPSBOVUxMKQpAQCAtMzM4LDYgKzM3NSwxNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorY29kZV9zaXplb2YoUHlDb2RlT2JqZWN0ICpjbywgdm9pZCAqdW51c2VkKQoreworICAgIFB5X3NzaXplX3QgcmVzOworCisgICAgcmVzID0gc2l6ZW9mKFB5Q29kZU9iamVjdCk7CisgICAgaWYgKGNvLT5jb19jZWxsMmFyZyAhPSBOVUxMICYmIGNvLT5jb19jZWxsdmFycyAhPSBOVUxMKQorICAgICAgICByZXMgKz0gUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICogc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvZGVfcmVwcihQeUNvZGVPYmplY3QgKmNvKQogewogICAgIGludCBsaW5lbm87CkBAIC0zNjYsOCArNDE0LDcgQEAKICAgICBpZiAoKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB8fAogICAgICAgICAhUHlDb2RlX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeUNvZGVfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGNvID0gKFB5Q29kZU9iamVjdCAqKXNlbGY7CkBAIC00NDQsNiArNDkxLDExIEBACiAKIC8qIFhYWCBjb2RlIG9iamVjdHMgbmVlZCB0byBwYXJ0aWNpcGF0ZSBpbiBHQz8gKi8KIAorc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBjb2RlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pY29kZV9zaXplb2YsIE1FVEhfTk9BUkdTfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5VHlwZU9iamVjdCBQeUNvZGVfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJjb2RlIiwKQEAgLTQ3Miw3ICs1MjQsNyBAQAogICAgIG9mZnNldG9mKFB5Q29kZU9iamVjdCwgY29fd2Vha3JlZmxpc3QpLCAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY29kZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIGNvZGVfbWVtYmVybGlzdCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCmluZGV4IGUyNDdiYTkuLjQwM2M2MGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29tcGxleG9iamVjdC5jCisrKyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCkBAIC0yNjUsOSArMjY1LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0cnlfY29tcGxleF9zcGVjaWFsX21ldGhvZChQeU9iamVjdCAqb3ApIHsKICAgICBQeU9iamVjdCAqZjsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNvbXBsZXhzdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19jb21wbGV4X18pOwogCi0gICAgZiA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9wLCAiX19jb21wbGV4X18iLCAmY29tcGxleHN0cik7CisgICAgZiA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9wLCAmUHlJZF9fX2NvbXBsZXhfXyk7CiAgICAgaWYgKGYpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZiwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmKTsKQEAgLTMzMCwxMiArMzMwLDEwIEBACiAgICAgaW50IHByZWNpc2lvbiA9IDA7CiAgICAgY2hhciBmb3JtYXRfY29kZSA9ICdyJzsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIC8qIElmIHRoZXNlIGFyZSBub24tTlVMTCwgdGhleSdsbCBuZWVkIHRvIGJlIGZyZWVkLiAqLwogICAgIGNoYXIgKnByZSA9IE5VTEw7CiAgICAgY2hhciAqaW0gPSBOVUxMOwotICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CiAKICAgICAvKiBUaGVzZSBkbyBub3QgbmVlZCB0byBiZSBmcmVlZC4gcmUgaXMgZWl0aGVyIGFuIGFsaWFzCiAgICAgICAgZm9yIHByZSBvciBhIHBvaW50ZXIgdG8gYSBjb25zdGFudC4gIGxlYWQgYW5kIHRhaWwKQEAgLTM3NCwyMCArMzcyLDEwIEBACiAgICAgICAgIGxlYWQgPSAiKCI7CiAgICAgICAgIHRhaWwgPSAiKSI7CiAgICAgfQotICAgIC8qIEFsbG9jIHRoZSBmaW5hbCBidWZmZXIuIEFkZCBvbmUgZm9yIHRoZSAiaiIgaW4gdGhlIGZvcm1hdCBzdHJpbmcsCi0gICAgICAgYW5kIG9uZSBmb3IgdGhlIHRyYWlsaW5nIHplcm8gYnl0ZS4gKi8KLSAgICBsZW4gPSBzdHJsZW4obGVhZCkgKyBzdHJsZW4ocmUpICsgc3RybGVuKGltKSArIHN0cmxlbih0YWlsKSArIDI7Ci0gICAgYnVmID0gUHlNZW1fTWFsbG9jKGxlbik7Ci0gICAgaWYgKCFidWYpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgbGVuLCAiJXMlcyVzaiVzIiwgbGVhZCwgcmUsIGltLCB0YWlsKTsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyVzJXNqJXMiLCBsZWFkLCByZSwgaW0sIHRhaWwpOwogICBkb25lOgogICAgIFB5TWVtX0ZyZWUoaW0pOwogICAgIFB5TWVtX0ZyZWUocHJlKTsKLSAgICBQeU1lbV9GcmVlKGJ1Zik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNjYyLDggKzY1MCw3IEBACiAgICAgcmV0dXJuIHJlczsKIAogVW5pbXBsZW1lbnRlZDoKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03MTIsMTIgKzY5OSwyMiBAQAogY29tcGxleF9fZm9ybWF0X18oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQotICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZm9ybWF0X3NwZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogI2lmIDAKQEAgLTc2OCwyMCArNzY1LDEwIEBACiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHYpOwotICAgICAgICBQeV9VTklDT0RFICpidWZwdHI7Ci0gICAgICAgIHNfYnVmZmVyID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodiksIGJ1Zmxlbik7CisgICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwogICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiBSZXBsYWNlIG5vbi1BU0NJSSB3aGl0ZXNwYWNlIHdpdGggJyAnICovCi0gICAgICAgIGJ1ZnB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNfYnVmZmVyKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ1ZmxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gYnVmcHRyW2ldOwotICAgICAgICAgICAgaWYgKGNoID4gMTI3ICYmIFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgYnVmcHRyW2ldID0gJyAnOwotICAgICAgICB9Ci0gICAgICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCA5OTM0ZjIzLi5hYmNjMDAyIDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC05LDYgKzksNyBAQAogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGRlc2NyKTsKICAgICBQeV9YREVDUkVGKGRlc2NyLT5kX3R5cGUpOwogICAgIFB5X1hERUNSRUYoZGVzY3ItPmRfbmFtZSk7CisgICAgUHlfWERFQ1JFRihkZXNjci0+ZF9xdWFsbmFtZSk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGRlc2NyKTsKIH0KIApAQCAtMzU5LDYgKzM2MCw0NCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhkZXNjci0+ZF9tZXRob2QtPm1sX2RvYyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjYWxjdWxhdGVfcXVhbG5hbWUoUHlEZXNjck9iamVjdCAqZGVzY3IpCit7CisgICAgUHlPYmplY3QgKnR5cGVfcXVhbG5hbWUsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKKworICAgIGlmIChkZXNjci0+ZF9uYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhkZXNjci0+ZF9uYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIjxkZXNjcmlwdG9yPi5fX25hbWVfXyBpcyBub3QgYSB1bmljb2RlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB0eXBlX3F1YWxuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilkZXNjci0+ZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fcXVhbG5hbWVfXyk7CisgICAgaWYgKHR5cGVfcXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0eXBlX3F1YWxuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiPGRlc2NyaXB0b3I+Ll9fb2JqY2xhc3NfXy4iCisgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIGlzIG5vdCBhIHVuaWNvZGUgb2JqZWN0Iik7CisgICAgICAgIFB5X1hERUNSRUYodHlwZV9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUy4lUyIsIHR5cGVfcXVhbG5hbWUsIGRlc2NyLT5kX25hbWUpOworICAgIFB5X0RFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVzY3JfZ2V0X3F1YWxuYW1lKFB5RGVzY3JPYmplY3QgKmRlc2NyKQoreworICAgIGlmIChkZXNjci0+ZF9xdWFsbmFtZSA9PSBOVUxMKQorICAgICAgICBkZXNjci0+ZF9xdWFsbmFtZSA9IGNhbGN1bGF0ZV9xdWFsbmFtZShkZXNjcik7CisgICAgUHlfWElOQ1JFRihkZXNjci0+ZF9xdWFsbmFtZSk7CisgICAgcmV0dXJuIGRlc2NyLT5kX3F1YWxuYW1lOworfQorCiBzdGF0aWMgUHlNZW1iZXJEZWYgZGVzY3JfbWVtYmVyc1tdID0gewogICAgIHsiX19vYmpjbGFzc19fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RGVzY3JPYmplY3QsIGRfdHlwZSksIFJFQURPTkxZfSwKICAgICB7Il9fbmFtZV9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RGVzY3JPYmplY3QsIGRfbmFtZSksIFJFQURPTkxZfSwKQEAgLTM2Nyw2ICs0MDYsNyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgbWV0aG9kX2dldHNldFtdID0gewogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpbWV0aG9kX2dldF9kb2N9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilkZXNjcl9nZXRfcXVhbG5hbWV9LAogICAgIHswfQogfTsKIApAQCAtMzgyLDYgKzQyMiw3IEBACiAKIHN0YXRpYyBQeUdldFNldERlZiBtZW1iZXJfZ2V0c2V0W10gPSB7CiAgICAgeyJfX2RvY19fIiwgKGdldHRlciltZW1iZXJfZ2V0X2RvY30sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWRlc2NyX2dldF9xdWFsbmFtZX0sCiAgICAgezB9CiB9OwogCkBAIC0zOTcsNiArNDM4LDcgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIGdldHNldF9nZXRzZXRbXSA9IHsKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKWdldHNldF9nZXRfZG9jfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZGVzY3JfZ2V0X3F1YWxuYW1lfSwKICAgICB7MH0KIH07CiAKQEAgLTQxMiw2ICs0NTQsNyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgd3JhcHBlcmRlc2NyX2dldHNldFtdID0gewogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpd3JhcHBlcmRlc2NyX2dldF9kb2N9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilkZXNjcl9nZXRfcXVhbG5hbWV9LAogICAgIHswfQogfTsKIApAQCAtNjIzLDYgKzY2Niw5IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoZGVzY3IpOwogICAgICAgICAgICAgZGVzY3IgPSBOVUxMOwogICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVzY3ItPmRfcXVhbG5hbWUgPSBOVUxMOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBkZXNjcjsKIH0KQEAgLTY5MCw0MSArNzM2LDQ0IEBACiB9CiAKIAotLyogLS0tIFJlYWRvbmx5IHByb3h5IGZvciBkaWN0aW9uYXJpZXMgKGFjdHVhbGx5IGFueSBtYXBwaW5nKSAtLS0gKi8KKy8qIC0tLSBtYXBwaW5ncHJveHk6IHJlYWQtb25seSBwcm94eSBmb3IgbWFwcGluZ3MgLS0tICovCiAKIC8qIFRoaXMgaGFzIG5vIHJlYXNvbiB0byBiZSBpbiB0aGlzIGZpbGUgZXhjZXB0IHRoYXQgYWRkaW5nIG5ldyBmaWxlcyBpcyBhCiAgICBiaXQgb2YgYSBwYWluICovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKmRpY3Q7Ci19IHByb3h5b2JqZWN0OworICAgIFB5T2JqZWN0ICptYXBwaW5nOworfSBtYXBwaW5ncHJveHlvYmplY3Q7CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1wcm94eV9sZW4ocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2xlbihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9TaXplKHBwLT5kaWN0KTsKKyAgICByZXR1cm4gUHlPYmplY3RfU2l6ZShwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9nZXRpdGVtKHByb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmtleSkKK21hcHBpbmdwcm94eV9nZXRpdGVtKG1hcHBpbmdwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZW0ocHAtPmRpY3QsIGtleSk7CisgICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZW0ocHAtPm1hcHBpbmcsIGtleSk7CiB9CiAKLXN0YXRpYyBQeU1hcHBpbmdNZXRob2RzIHByb3h5X2FzX21hcHBpbmcgPSB7Ci0gICAgKGxlbmZ1bmMpcHJveHlfbGVuLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KLSAgICAoYmluYXJ5ZnVuYylwcm94eV9nZXRpdGVtLCAgICAgICAgICAgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbWFwcGluZ3Byb3h5X2FzX21hcHBpbmcgPSB7CisgICAgKGxlbmZ1bmMpbWFwcGluZ3Byb3h5X2xlbiwgICAgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KKyAgICAoYmluYXJ5ZnVuYyltYXBwaW5ncHJveHlfZ2V0aXRlbSwgICAgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbXBfYXNzX3N1YnNjcmlwdCAqLwogfTsKIAogc3RhdGljIGludAotcHJveHlfY29udGFpbnMocHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqa2V5KQorbWFwcGluZ3Byb3h5X2NvbnRhaW5zKG1hcHBpbmdwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgcmV0dXJuIFB5RGljdF9Db250YWlucyhwcC0+ZGljdCwga2V5KTsKKyAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QocHAtPm1hcHBpbmcpKQorICAgICAgICByZXR1cm4gUHlEaWN0X0NvbnRhaW5zKHBwLT5tYXBwaW5nLCBrZXkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5U2VxdWVuY2VfQ29udGFpbnMocHAtPm1hcHBpbmcsIGtleSk7CiB9CiAKLXN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBwcm94eV9hc19zZXF1ZW5jZSA9IHsKK3N0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBtYXBwaW5ncHJveHlfYXNfc2VxdWVuY2UgPSB7CiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2NvbmNhdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCkBAIC03MzIsMTQ3ICs3ODEsMTk5IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9zbGljZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfYXNzX2l0ZW0gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2Fzc19zbGljZSAqLwotICAgIChvYmpvYmpwcm9jKXByb3h5X2NvbnRhaW5zLCAgICAgICAgICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KKyAgICAob2Jqb2JqcHJvYyltYXBwaW5ncHJveHlfY29udGFpbnMsICAgICAgICAgICAgICAgICAvKiBzcV9jb250YWlucyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfaW5wbGFjZV9jb25jYXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2lucGxhY2VfcmVwZWF0ICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfZ2V0KHByb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmFyZ3MpCittYXBwaW5ncHJveHlfZ2V0KG1hcHBpbmdwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICprZXksICpkZWYgPSBQeV9Ob25lOworICAgIF9QeV9JREVOVElGSUVSKGdldCk7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZGVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJnZXQiLCAiKE9PKSIsIGtleSwgZGVmKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfZ2V0LCAiKE9PKSIsIGtleSwgZGVmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2tleXMocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2tleXMobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgImtleXMiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihrZXlzKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfa2V5cywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV92YWx1ZXMocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X3ZhbHVlcyhtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAidmFsdWVzIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIodmFsdWVzKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfdmFsdWVzLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2l0ZW1zKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9pdGVtcyhtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAiaXRlbXMiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2l0ZW1zLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2NvcHkocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2NvcHkobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgImNvcHkiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihjb3B5KTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfY29weSwgTlVMTCk7CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBwcm94eV9tZXRob2RzW10gPSB7Ci0gICAgeyJnZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pcHJveHlfZ2V0LCAgICAgICAgTUVUSF9WQVJBUkdTLAorLyogV0FSTklORzogbWFwcGluZ3Byb3h5IG1ldGhvZHMgbXVzdCBub3QgZ2l2ZSBhY2Nlc3MKKyAgICAgICAgICAgIHRvIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcgKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIG1hcHBpbmdwcm94eV9tZXRob2RzW10gPSB7CisgICAgeyJnZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X2dldCwgICAgICAgIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJELmdldChrWyxkXSkgLT4gRFtrXSBpZiBrIGluIEQsIGVsc2UgZC4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBkIGRlZmF1bHRzIHRvIE5vbmUuIil9LAotICAgIHsia2V5cyIsICAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2tleXMsICAgICAgIE1FVEhfTk9BUkdTLAorICAgICAgICAgICAgICAgIiAgZCBkZWZhdWx0cyB0byBOb25lLiIpfSwKKyAgICB7ImtleXMiLCAgICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfa2V5cywgICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiRC5rZXlzKCkgLT4gbGlzdCBvZiBEJ3Mga2V5cyIpfSwKLSAgICB7InZhbHVlcyIsICAgIChQeUNGdW5jdGlvbilwcm94eV92YWx1ZXMsICAgICBNRVRIX05PQVJHUywKKyAgICB7InZhbHVlcyIsICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfdmFsdWVzLCAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiRC52YWx1ZXMoKSAtPiBsaXN0IG9mIEQncyB2YWx1ZXMiKX0sCi0gICAgeyJpdGVtcyIsICAgICAoUHlDRnVuY3Rpb24pcHJveHlfaXRlbXMsICAgICAgTUVUSF9OT0FSR1MsCisgICAgeyJpdGVtcyIsICAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X2l0ZW1zLCAgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIkQuaXRlbXMoKSAtPiBsaXN0IG9mIEQncyAoa2V5LCB2YWx1ZSkgcGFpcnMsIGFzIDItdHVwbGVzIil9LAotICAgIHsiY29weSIsICAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2NvcHksICAgICAgIE1FVEhfTk9BUkdTLAorICAgIHsiY29weSIsICAgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV9jb3B5LCAgICAgICBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJELmNvcHkoKSAtPiBhIHNoYWxsb3cgY29weSBvZiBEIil9LAogICAgIHswfQogfTsKIAogc3RhdGljIHZvaWQKLXByb3h5X2RlYWxsb2MocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2RlYWxsb2MobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhwcCk7Ci0gICAgUHlfREVDUkVGKHBwLT5kaWN0KTsKKyAgICBQeV9ERUNSRUYocHAtPm1hcHBpbmcpOwogICAgIFB5T2JqZWN0X0dDX0RlbChwcCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9nZXRpdGVyKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9nZXRpdGVyKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZXIocHAtPmRpY3QpOworICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVyKHBwLT5tYXBwaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X3N0cihwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfc3RyKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1N0cihwcC0+ZGljdCk7CisgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9yZXByKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9yZXByKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkaWN0X3Byb3h5KCVSKSIsIHBwLT5kaWN0KTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIm1hcHBpbmdwcm94eSglUikiLCBwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBpbnQKLXByb3h5X3RyYXZlcnNlKFB5T2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK21hcHBpbmdwcm94eV90cmF2ZXJzZShQeU9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgcHJveHlvYmplY3QgKnBwID0gKHByb3h5b2JqZWN0ICopc2VsZjsKLSAgICBQeV9WSVNJVChwcC0+ZGljdCk7CisgICAgbWFwcGluZ3Byb3h5b2JqZWN0ICpwcCA9IChtYXBwaW5ncHJveHlvYmplY3QgKilzZWxmOworICAgIFB5X1ZJU0lUKHBwLT5tYXBwaW5nKTsKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X3JpY2hjb21wYXJlKHByb3h5b2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQorbWFwcGluZ3Byb3h5X3JpY2hjb21wYXJlKG1hcHBpbmdwcm94eW9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmUodi0+ZGljdCwgdywgb3ApOworICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZSh2LT5tYXBwaW5nLCB3LCBvcCk7Cit9CisKK3N0YXRpYyBpbnQKK21hcHBpbmdwcm94eV9jaGVja19tYXBwaW5nKFB5T2JqZWN0ICptYXBwaW5nKQoreworICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKG1hcHBpbmcpCisgICAgICAgIHx8IFB5TGlzdF9DaGVjayhtYXBwaW5nKQorICAgICAgICB8fCBQeVR1cGxlX0NoZWNrKG1hcHBpbmcpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJtYXBwaW5ncHJveHkoKSBhcmd1bWVudCBtdXN0IGJlIGEgbWFwcGluZywgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShtYXBwaW5nKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK21hcHBpbmdwcm94eV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJtYXBwaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1hcHBpbmc7CisgICAgbWFwcGluZ3Byb3h5b2JqZWN0ICptYXBwaW5ncHJveHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzptYXBwaW5ncHJveHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm1hcHBpbmcpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChtYXBwaW5ncHJveHlfY2hlY2tfbWFwcGluZyhtYXBwaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtYXBwaW5ncHJveHkgPSBQeU9iamVjdF9HQ19OZXcobWFwcGluZ3Byb3h5b2JqZWN0LCAmUHlEaWN0UHJveHlfVHlwZSk7CisgICAgaWYgKG1hcHBpbmdwcm94eSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYobWFwcGluZyk7CisgICAgbWFwcGluZ3Byb3h5LT5tYXBwaW5nID0gbWFwcGluZzsKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0sobWFwcGluZ3Byb3h5KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbWFwcGluZ3Byb3h5OwogfQogCiBQeVR5cGVPYmplY3QgUHlEaWN0UHJveHlfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICJkaWN0X3Byb3h5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihwcm94eW9iamVjdCksICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgIm1hcHBpbmdwcm94eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKG1hcHBpbmdwcm94eW9iamVjdCksICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXByb3h5X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKW1hcHBpbmdwcm94eV9kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKXByb3h5X3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgKHJlcHJmdW5jKW1hcHBpbmdwcm94eV9yZXByLCAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAmcHJveHlfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgJnByb3h5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgJm1hcHBpbmdwcm94eV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZtYXBwaW5ncHJveHlfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIChyZXByZnVuYylwcm94eV9zdHIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKHJlcHJmdW5jKW1hcHBpbmdwcm94eV9zdHIsICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgcHJveHlfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIG1hcHBpbmdwcm94eV90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgKHJpY2hjbXBmdW5jKXByb3h5X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIChyaWNoY21wZnVuYyltYXBwaW5ncHJveHlfcmljaGNvbXBhcmUsICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgKGdldGl0ZXJmdW5jKXByb3h5X2dldGl0ZXIsICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGdldGl0ZXJmdW5jKW1hcHBpbmdwcm94eV9nZXRpdGVyLCAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIHByb3h5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hcHBpbmdwcm94eV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBtYXBwaW5ncHJveHlfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgKgotUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICpkaWN0KQorUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICptYXBwaW5nKQogewotICAgIHByb3h5b2JqZWN0ICpwcDsKKyAgICBtYXBwaW5ncHJveHlvYmplY3QgKnBwOwogCi0gICAgcHAgPSBQeU9iamVjdF9HQ19OZXcocHJveHlvYmplY3QsICZQeURpY3RQcm94eV9UeXBlKTsKKyAgICBpZiAobWFwcGluZ3Byb3h5X2NoZWNrX21hcHBpbmcobWFwcGluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcHAgPSBQeU9iamVjdF9HQ19OZXcobWFwcGluZ3Byb3h5b2JqZWN0LCAmUHlEaWN0UHJveHlfVHlwZSk7CiAgICAgaWYgKHBwICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKGRpY3QpOwotICAgICAgICBwcC0+ZGljdCA9IGRpY3Q7CisgICAgICAgIFB5X0lOQ1JFRihtYXBwaW5nKTsKKyAgICAgICAgcHAtPm1hcHBpbmcgPSBtYXBwaW5nOwogICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0socHApOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopcHA7CkBAIC0xMDIwLDkgKzExMjEsMTYgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit3cmFwcGVyX3F1YWxuYW1lKHdyYXBwZXJvYmplY3QgKndwKQoreworICAgIHJldHVybiBkZXNjcl9nZXRfcXVhbG5hbWUoKFB5RGVzY3JPYmplY3QgKil3cC0+ZGVzY3IpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgd3JhcHBlcl9nZXRzZXRzW10gPSB7CiAgICAgeyJfX29iamNsYXNzX18iLCAoZ2V0dGVyKXdyYXBwZXJfb2JqY2xhc3N9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKXdyYXBwZXJfbmFtZX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKXdyYXBwZXJfcXVhbG5hbWV9LAogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpd3JhcHBlcl9kb2N9LAogICAgIHswfQogfTsKQEAgLTEzMzIsNyArMTQ0MCw4IEBACiAKICAgICAvKiBpZiBubyBkb2NzdHJpbmcgZ2l2ZW4gYW5kIHRoZSBnZXR0ZXIgaGFzIG9uZSwgdXNlIHRoYXQgb25lICovCiAgICAgaWYgKChkb2MgPT0gTlVMTCB8fCBkb2MgPT0gUHlfTm9uZSkgJiYgZ2V0ICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmdldF9kb2MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGdldCwgIl9fZG9jX18iKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19kb2NfXyk7CisgICAgICAgIFB5T2JqZWN0ICpnZXRfZG9jID0gX1B5T2JqZWN0X0dldEF0dHJJZChnZXQsICZQeUlkX19fZG9jX18pOwogICAgICAgICBpZiAoZ2V0X2RvYykgewogICAgICAgICAgICAgaWYgKFB5X1RZUEUoc2VsZikgPT0gJlB5UHJvcGVydHlfVHlwZSkgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocHJvcC0+cHJvcF9kb2MpOwpAQCAtMTM0Myw3ICsxNDUyLDcgQEAKICAgICAgICAgICAgICAgICBpbiBkaWN0IG9mIHRoZSBzdWJjbGFzcyBpbnN0YW5jZSBpbnN0ZWFkLAogICAgICAgICAgICAgICAgIG90aGVyd2lzZSBpdCBnZXRzIHNoYWRvd2VkIGJ5IF9fZG9jX18gaW4gdGhlCiAgICAgICAgICAgICAgICAgY2xhc3MncyBkaWN0LiAqLwotICAgICAgICAgICAgICAgIGludCBlcnIgPSBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJfX2RvY19fIiwgZ2V0X2RvYyk7CisgICAgICAgICAgICAgICAgaW50IGVyciA9IF9QeU9iamVjdF9TZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kb2NfXywgZ2V0X2RvYyk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGdldF9kb2MpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xMzYxLDYgKzE0NzAsNDMgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Byb3BlcnR5X2dldF9fX2lzYWJzdHJhY3RtZXRob2RfXyhwcm9wZXJ0eW9iamVjdCAqcHJvcCwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QocHJvcC0+cHJvcF9nZXQpOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHJlcykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisKKyAgICByZXMgPSBfUHlPYmplY3RfSXNBYnN0cmFjdChwcm9wLT5wcm9wX3NldCk7CisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVzKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKworICAgIHJlcyA9IF9QeU9iamVjdF9Jc0Fic3RyYWN0KHByb3AtPnByb3BfZGVsKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHByb3BlcnR5X2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlcilwcm9wZXJ0eV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHByb3BlcnR5X2RvYywKICJwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkgLT4gcHJvcGVydHkgYXR0cmlidXRlXG4iCiAiXG4iCkBAIC0xNDI2LDcgKzE1NzIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBwcm9wZXJ0eV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBwcm9wZXJ0eV9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIHByb3BlcnR5X2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgcHJvcGVydHlfZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG5vdGVzLnR4dCBiL09iamVjdHMvZGljdG5vdGVzLnR4dAppbmRleCBkM2FhNzc0Li5mODk3MjBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3Rub3Rlcy50eHQKKysrIGIvT2JqZWN0cy9kaWN0bm90ZXMudHh0CkBAIC0xLDcgKzEsNiBAQAotTk9URVMgT04gT1BUSU1JWklORyBESUNUSU9OQVJJRVMKK05PVEVTIE9OIERJQ1RJT05BUklFUwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotCiBQcmluY2lwYWwgVXNlIENhc2VzIGZvciBEaWN0aW9uYXJpZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMSw3ICsyMCw3IEBACiAKIEJ1aWx0aW5zCiAgICAgRnJlcXVlbnQgcmVhZHMuICBBbG1vc3QgbmV2ZXIgd3JpdHRlbi4KLSAgICBTaXplIDEyNiBpbnRlcm5lZCBzdHJpbmdzIChhcyBvZiBQeTIuM2IxKS4KKyAgICBBYm91dCAxNTAgaW50ZXJuZWQgc3RyaW5ncyAoYXMgb2YgUHkzLjMpLgogICAgIEEgZmV3IGtleXMgYXJlIGFjY2Vzc2VkIG11Y2ggbW9yZSBmcmVxdWVudGx5IHRoYW4gb3RoZXJzLgogCiBVbmlxdWlmaWNhdGlvbgpAQCAtNTksNTUgKzU4LDIwIEBACiAgICAgQ2hhcmFjdGVyaXplZCBieSBkZWxldGlvbnMgaW50ZXJzcGVyc2VkIHdpdGggYWRkcyBhbmQgcmVwbGFjZW1lbnRzLgogICAgIFBlcmZvcm1hbmNlIGJlbmVmaXRzIGdyZWF0bHkgZnJvbSB0aGUgcmUtdXNlIG9mIGR1bW15IGVudHJpZXMuCiAKK0RhdGEgTGF5b3V0CistLS0tLS0tLS0tLQogCi1EYXRhIExheW91dCAoYXNzdW1pbmcgYSAzMi1iaXQgYm94IHdpdGggNjQgYnl0ZXMgcGVyIGNhY2hlIGxpbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNtYWxsZGljdHMgKDggZW50cmllcykgYXJlIGF0dGFjaGVkIHRvIHRoZSBkaWN0b2JqZWN0IHN0cnVjdHVyZQotYW5kIHRoZSB3aG9sZSBncm91cCBuZWFybHkgZmlsbHMgdHdvIGNvbnNlY3V0aXZlIGNhY2hlIGxpbmVzLgotCi1MYXJnZXIgZGljdHMgdXNlIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSBkaWN0b2JqZWN0IHN0cnVjdHVyZSAob25lIGNhY2hlCi1saW5lKSBhbmQgYSBzZXBhcmF0ZSwgY29udGludW91cyBibG9jayBvZiBlbnRyaWVzIChhdCAxMiBieXRlcyBlYWNoCi1mb3IgYSB0b3RhbCBvZiA1LjMzMyBlbnRyaWVzIHBlciBjYWNoZSBsaW5lKS4KK0RpY3Rpb25hcmllcyBhcmUgY29tcG9zZWQgb2YgMyBjb21wb25lbnRzOgorVGhlIGRpY3RvYmplY3Qgc3RydWN0IGl0c2VsZgorQSBkaWN0LWtleXMgb2JqZWN0IChrZXlzICYgaGFzaGVzKQorQSB2YWx1ZXMgYXJyYXkKIAogCiBUdW5hYmxlIERpY3Rpb25hcnkgUGFyYW1ldGVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotKiBQeURpY3RfTUlOU0laRS4gIEN1cnJlbnRseSBzZXQgdG8gOC4KLSAgICBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiAgTmV3IGRpY3RzIGhhdmUgdG8gemVyby1vdXQgZXZlcnkgY2VsbC4KLSAgICBFYWNoIGFkZGl0aW9uYWwgOCBjb25zdW1lcyAxLjUgY2FjaGUgbGluZXMuICBJbmNyZWFzaW5nIGltcHJvdmVzCi0gICAgdGhlIHNwYXJzZW5lc3Mgb2Ygc21hbGwgZGljdGlvbmFyaWVzIGJ1dCBjb3N0cyB0aW1lIHRvIHJlYWQgaW4KLSAgICB0aGUgYWRkaXRpb25hbCBjYWNoZSBsaW5lcyBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBpbiBjYWNoZS4KLSAgICBUaGF0IGNhc2UgaXMgY29tbW9uIHdoZW4ga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZC4KLQotKiBNYXhpbXVtIGRpY3Rpb25hcnkgbG9hZCBpbiBQeURpY3RfU2V0SXRlbS4gIEN1cnJlbnRseSBzZXQgdG8gMi8zLgotICAgIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZSBkZW5zZSByZXN1bHRpbmcKLSAgICBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MgYXQgdGhlCi0gICAgZXhwZW5zZSBvZiBzcHJlYWRpbmcgZW50cmllcyBvdmVyIG1vcmUgY2FjaGUgbGluZXMgYW5kIGF0IHRoZQotICAgIGNvc3Qgb2YgdG90YWwgbWVtb3J5IGNvbnN1bWVkLgotCi0gICAgVGhlIGxvYWQgdGVzdCBvY2N1cnMgaW4gaGlnaGx5IHRpbWUgc2Vuc2l0aXZlIGNvZGUuICBFZmZvcnRzCi0gICAgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIGNvbXBsZXggKGZvciBleGFtcGxlLCB2YXJ5aW5nIHRoZSBsb2FkCi0gICAgZm9yIGRpZmZlcmVudCBzaXplcykgaGF2ZSBkZWdyYWRlZCBwZXJmb3JtYW5jZS4KLQotKiBHcm93dGggcmF0ZSB1cG9uIGhpdHRpbmcgbWF4aW11bSBsb2FkLiAgQ3VycmVudGx5IHNldCB0byAqMi4KLSAgICBSYWlzaW5nIHRoaXMgdG8gKjQgcmVzdWx0cyBpbiBoYWxmIHRoZSBudW1iZXIgb2YgcmVzaXplcywKLSAgICBsZXNzIGVmZm9ydCB0byByZXNpemUsIGJldHRlciBzcGFyc2VuZXNzIGZvciBzb21lIChidXQgbm90Ci0gICAgYWxsIGRpY3Qgc2l6ZXMpLCBhbmQgcG90ZW50aWFsbHkgZG91YmxlcyBtZW1vcnkgY29uc3VtcHRpb24KLSAgICBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgdGhlIGRpY3Rpb25hcnkuICBTZXR0aW5nIHRvICo0Ci0gICAgZWxpbWluYXRlcyBldmVyeSBvdGhlciByZXNpemUgc3RlcC4KLQotKiBNYXhpbXVtIHNwYXJzZW5lc3MgKG1pbmltdW0gZGljdGlvbmFyeSBsb2FkKS4gIFdoYXQgcGVyY2VudGFnZQotICAgIG9mIGVudHJpZXMgY2FuIGJlIHVudXNlZCBiZWZvcmUgdGhlIGRpY3Rpb25hcnkgc2hyaW5rcyB0bwotICAgIGZyZWUgdXAgbWVtb3J5IGFuZCBzcGVlZCB1cCBpdGVyYXRpb24/ICAoVGhlIGN1cnJlbnQgQ1B5dGhvbgotICAgIGNvZGUgZG9lcyBub3QgcmVwcmVzZW50IHRoaXMgcGFyYW1ldGVyIGRpcmVjdGx5LikKLQotKiBTaHJpbmthZ2UgcmF0ZSB1cG9uIGV4Y2VlZGluZyBtYXhpbXVtIHNwYXJzZW5lc3MuICBUaGUgY3VycmVudAotICAgIENQeXRob24gY29kZSBuZXZlciBldmVuIGNoZWNrcyBzcGFyc2VuZXNzIHdoZW4gZGVsZXRpbmcgYQotICAgIGtleS4gIFdoZW4gYSBuZXcga2V5IGlzIGFkZGVkLCBpdCByZXNpemVzIGJhc2VkIG9uIHRoZSBudW1iZXIKLSAgICBvZiBhY3RpdmUga2V5cywgc28gdGhhdCB0aGUgYWRkaXRpb24gbWF5IHRyaWdnZXIgc2hyaW5rYWdlCi0gICAgcmF0aGVyIHRoYW4gZ3Jvd3RoLgorU2VlIGNvbW1lbnRzIGZvciBQeURpY3RfTUlOU0laRV9TUExJVCwgUHlEaWN0X01JTlNJWkVfQ09NQklORUQsCitVU0FCTEVfRlJBQ1RJT04gYW5kIEdST1dUSF9SQVRFIGluIGRpY3RvYmplY3QuYwogCiBUdW5lLXVwcyBzaG91bGQgYmUgbWVhc3VyZWQgYWNyb3NzIGEgYnJvYWQgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIGFuZAogdXNlIGNhc2VzLiAgQSBjaGFuZ2UgdG8gYW55IHBhcmFtZXRlciB3aWxsIGhlbHAgaW4gc29tZSBzaXR1YXRpb25zIGFuZApAQCAtMTI2LDggKzkwLDggQEAKIEFsc28sIGV2ZXJ5IGRpY3Rpb25hcnkgaXRlcmF0ZXMgYXQgbGVhc3QgdHdpY2UsIG9uY2UgZm9yIHRoZSBtZW1zZXQoKQogd2hlbiBpdCBpcyBjcmVhdGVkIGFuZCBvbmNlIGJ5IGRlYWxsb2MoKS4KIAotRGljdGlvbmFyeSBvcGVyYXRpb25zIGludm9sdmluZyBvbmx5IGEgc2luZ2xlIGtleSBjYW4gYmUgTygxKSB1bmxlc3MgCi1yZXNpemluZyBpcyBwb3NzaWJsZS4gIEJ5IGNoZWNraW5nIGZvciBhIHJlc2l6ZSBvbmx5IHdoZW4gdGhlIAorRGljdGlvbmFyeSBvcGVyYXRpb25zIGludm9sdmluZyBvbmx5IGEgc2luZ2xlIGtleSBjYW4gYmUgTygxKSB1bmxlc3MKK3Jlc2l6aW5nIGlzIHBvc3NpYmxlLiAgQnkgY2hlY2tpbmcgZm9yIGEgcmVzaXplIG9ubHkgd2hlbiB0aGUKIGRpY3Rpb25hcnkgY2FuIGdyb3cgKGFuZCBtYXkgKnJlcXVpcmUqIHJlc2l6aW5nKSwgb3RoZXIgb3BlcmF0aW9ucwogcmVtYWluIE8oMSksIGFuZCB0aGUgb2RkcyBvZiByZXNpemUgdGhyYXNoaW5nIG9yIG1lbW9yeSBmcmFnbWVudGF0aW9uCiBhcmUgcmVkdWNlZC4gSW4gcGFydGljdWxhciwgYW4gYWxnb3JpdGhtIHRoYXQgZW1wdGllcyBhIGRpY3Rpb25hcnkKQEAgLTEzNSwxMzYgKzk5LDUxIEBACiBub3QgYmUgbmVjZXNzYXJ5IGF0IGFsbCBiZWNhdXNlIHRoZSBkaWN0aW9uYXJ5IGlzIGV2ZW50dWFsbHkKIGRpc2NhcmRlZCBlbnRpcmVseS4KIAorVGhlIGtleSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoaXMgaW1wbGVtZW50YXRpb24gYW5kIGVhcmxpZXIgdmVyc2lvbnMgYXJlOgorICAgIDEuIFRoZSB0YWJsZSBjYW4gYmUgc3BsaXQgaW50byB0d28gcGFydHMsIHRoZSBrZXlzIGFuZCB0aGUgdmFsdWVzLgorCisgICAgMi4gVGhlcmUgaXMgYW4gYWRkaXRpb25hbCBrZXktdmFsdWUgY29tYmluYXRpb246IChrZXksIE5VTEwpLgorICAgICAgIFVubGlrZSAoPGR1bW15PiwgTlVMTCkgd2hpY2ggcmVwcmVzZW50cyBhIGRlbGV0ZWQgdmFsdWUsIChrZXksIE5VTEwpCisgICAgICAgcmVwcmVzZW50ZWQgYSB5ZXQgdG8gYmUgaW5zZXJ0ZWQgdmFsdWUuIFRoaXMgY29tYmluYXRpb24gY2FuIG9ubHkgb2NjdXIKKyAgICAgICB3aGVuIHRoZSB0YWJsZSBpcyBzcGxpdC4KKworICAgIDMuIE5vIHNtYWxsIHRhYmxlIGVtYmVkZGVkIGluIHRoZSBkaWN0LAorICAgICAgIGFzIHRoaXMgd291bGQgbWFrZSBzaGFyaW5nIG9mIGtleS10YWJsZXMgaW1wb3NzaWJsZS4KKworCitUaGVzZSBjaGFuZ2VzIGhhdmUgdGhlIGZvbGxvd2luZyBjb25zZXF1ZW5jZXMuCisgICAxLiBHZW5lcmFsIGRpY3Rpb25hcmllcyBhcmUgc2xpZ2h0bHkgbGFyZ2VyLgorCisgICAyLiBBbGwgb2JqZWN0IGRpY3Rpb25hcmllcyBvZiBhIHNpbmdsZSBjbGFzcyBjYW4gc2hhcmUgYSBzaW5nbGUga2V5LXRhYmxlLAorICAgICAgc2F2aW5nIGFib3V0IDYwJSBtZW1vcnkgZm9yIHN1Y2ggY2FzZXMuCiAKIFJlc3VsdHMgb2YgQ2FjaGUgTG9jYWxpdHkgRXhwZXJpbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoZW4gYW4gZW50cnkgaXMgcmV0cmlldmVkIGZyb20gbWVtb3J5LCA0LjMzMyBhZGphY2VudCBlbnRyaWVzIGFyZSBhbHNvCi1yZXRyaWV2ZWQgaW50byBhIGNhY2hlIGxpbmUuICBTaW5jZSBhY2Nlc3NpbmcgaXRlbXMgaW4gY2FjaGUgaXMgKm11Y2gqCi1jaGVhcGVyIHRoYW4gYSBjYWNoZSBtaXNzLCBhbiBlbnRpY2luZyBpZGVhIGlzIHRvIHByb2JlIHRoZSBhZGphY2VudAotZW50cmllcyBhcyBhIGZpcnN0IHN0ZXAgaW4gY29sbGlzaW9uIHJlc29sdXRpb24uICBVbmZvcnR1bmF0ZWx5LCB0aGUKLWludHJvZHVjdGlvbiBvZiBhbnkgcmVndWxhcml0eSBpbnRvIGNvbGxpc2lvbiBzZWFyY2hlcyByZXN1bHRzIGluIG1vcmUKLWNvbGxpc2lvbnMgdGhhbiB0aGUgY3VycmVudCByYW5kb20gY2hhaW5pbmcgYXBwcm9hY2guCitFeHBlcmltZW50cyBvbiBhbiBlYXJsaWVyIGRlc2lnbiBvZiBkaWN0aW9uYXJ5LCBpbiB3aGljaCBhbGwgdGFibGVzIHdlcmUKK2NvbWJpbmVkLCBzaG93ZWQgdGhlIGZvbGxvd2luZzoKIAotRXhwbG9pdGluZyBjYWNoZSBsb2NhbGl0eSBhdCB0aGUgZXhwZW5zZSBvZiBhZGRpdGlvbmFsIGNvbGxpc2lvbnMgZmFpbHMKLXRvIHBheW9mZiB3aGVuIHRoZSBlbnRyaWVzIGFyZSBhbHJlYWR5IGxvYWRlZCBpbiBjYWNoZSAodGhlIGV4cGVuc2UKLWlzIHBhaWQgd2l0aCBubyBjb21wZW5zYXRpbmcgYmVuZWZpdCkuICBUaGlzIG9jY3VycyBpbiBzbWFsbCBkaWN0aW9uYXJpZXMKLXdoZXJlIHRoZSB3aG9sZSBkaWN0aW9uYXJ5IGZpdHMgaW50byBhIHBhaXIgb2YgY2FjaGUgbGluZXMuICBJdCBhbHNvCi1vY2N1cnMgZnJlcXVlbnRseSBpbiBsYXJnZSBkaWN0aW9uYXJpZXMgd2hpY2ggaGF2ZSBhIGNvbW1vbiBhY2Nlc3MgcGF0dGVybgotd2hlcmUgc29tZSBrZXlzIGFyZSBhY2Nlc3NlZCBtdWNoIG1vcmUgZnJlcXVlbnRseSB0aGFuIG90aGVycy4gIFRoZQotbW9yZSBwb3B1bGFyIGVudHJpZXMgKmFuZCogdGhlaXIgY29sbGlzaW9uIGNoYWlucyB0ZW5kIHRvIHJlbWFpbiBpbiBjYWNoZS4KKyAgV2hlbiBhbiBlbnRyeSBpcyByZXRyaWV2ZWQgZnJvbSBtZW1vcnksIHNldmVyYWwgYWRqYWNlbnQgZW50cmllcyBhcmUgYWxzbworICByZXRyaWV2ZWQgaW50byBhIGNhY2hlIGxpbmUuICBTaW5jZSBhY2Nlc3NpbmcgaXRlbXMgaW4gY2FjaGUgaXMgKm11Y2gqCisgIGNoZWFwZXIgdGhhbiBhIGNhY2hlIG1pc3MsIGFuIGVudGljaW5nIGlkZWEgaXMgdG8gcHJvYmUgdGhlIGFkamFjZW50CisgIGVudHJpZXMgYXMgYSBmaXJzdCBzdGVwIGluIGNvbGxpc2lvbiByZXNvbHV0aW9uLiAgVW5mb3J0dW5hdGVseSwgdGhlCisgIGludHJvZHVjdGlvbiBvZiBhbnkgcmVndWxhcml0eSBpbnRvIGNvbGxpc2lvbiBzZWFyY2hlcyByZXN1bHRzIGluIG1vcmUKKyAgY29sbGlzaW9ucyB0aGFuIHRoZSBjdXJyZW50IHJhbmRvbSBjaGFpbmluZyBhcHByb2FjaC4KIAotVG8gZXhwbG9pdCBjYWNoZSBsb2NhbGl0eSwgY2hhbmdlIHRoZSBjb2xsaXNpb24gcmVzb2x1dGlvbiBzZWN0aW9uCi1pbiBsb29rZGljdCgpIGFuZCBsb29rZGljdF9zdHJpbmcoKS4gIFNldCBpXj0xIGF0IHRoZSB0b3Agb2YgdGhlCi1sb29wIGFuZCBtb3ZlIHRoZSAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxIHRvIGFuIHVucm9sbGVkCi12ZXJzaW9uIG9mIHRoZSBsb29wLgorICBFeHBsb2l0aW5nIGNhY2hlIGxvY2FsaXR5IGF0IHRoZSBleHBlbnNlIG9mIGFkZGl0aW9uYWwgY29sbGlzaW9ucyBmYWlscworICB0byBwYXlvZmYgd2hlbiB0aGUgZW50cmllcyBhcmUgYWxyZWFkeSBsb2FkZWQgaW4gY2FjaGUgKHRoZSBleHBlbnNlCisgIGlzIHBhaWQgd2l0aCBubyBjb21wZW5zYXRpbmcgYmVuZWZpdCkuICBUaGlzIG9jY3VycyBpbiBzbWFsbCBkaWN0aW9uYXJpZXMKKyAgd2hlcmUgdGhlIHdob2xlIGRpY3Rpb25hcnkgZml0cyBpbnRvIGEgcGFpciBvZiBjYWNoZSBsaW5lcy4gIEl0IGFsc28KKyAgb2NjdXJzIGZyZXF1ZW50bHkgaW4gbGFyZ2UgZGljdGlvbmFyaWVzIHdoaWNoIGhhdmUgYSBjb21tb24gYWNjZXNzIHBhdHRlcm4KKyAgd2hlcmUgc29tZSBrZXlzIGFyZSBhY2Nlc3NlZCBtdWNoIG1vcmUgZnJlcXVlbnRseSB0aGFuIG90aGVycy4gIFRoZQorICBtb3JlIHBvcHVsYXIgZW50cmllcyAqYW5kKiB0aGVpciBjb2xsaXNpb24gY2hhaW5zIHRlbmQgdG8gcmVtYWluIGluIGNhY2hlLgogCi1UaGlzIG9wdGltaXphdGlvbiBzdHJhdGVneSBjYW4gYmUgbGV2ZXJhZ2VkIGluIHNldmVyYWwgd2F5czoKKyAgVG8gZXhwbG9pdCBjYWNoZSBsb2NhbGl0eSwgY2hhbmdlIHRoZSBjb2xsaXNpb24gcmVzb2x1dGlvbiBzZWN0aW9uCisgIGluIGxvb2tkaWN0KCkgYW5kIGxvb2tkaWN0X3N0cmluZygpLiAgU2V0IGlePTEgYXQgdGhlIHRvcCBvZiB0aGUKKyAgbG9vcCBhbmQgbW92ZSB0aGUgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSB0byBhbiB1bnJvbGxlZAorICB2ZXJzaW9uIG9mIHRoZSBsb29wLgogCi0qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIGtlcHQgc3BhcnNlICh0aHJvdWdoIHRoZSB0dW5hYmxlIHBhcmFtZXRlcnMpLAotdGhlbiB0aGUgb2NjdXJyZW5jZSBvZiBhZGRpdGlvbmFsIGNvbGxpc2lvbnMgaXMgbGVzc2VuZWQuCi0KLSogSWYgbG9va2RpY3QoKSBhbmQgbG9va2RpY3Rfc3RyaW5nKCkgYXJlIHNwZWNpYWxpemVkIGZvciBzbWFsbCBkaWN0cwotYW5kIGZvciBsYXJnZWRpY3RzLCB0aGVuIHRoZSB2ZXJzaW9ucyBmb3IgbGFyZ2VfZGljdHMgY2FuIGJlIGdpdmVuCi1hbiBhbHRlcm5hdGUgc2VhcmNoIHN0cmF0ZWd5IHdpdGhvdXQgaW5jcmVhc2luZyBjb2xsaXNpb25zIGluIHNtYWxsIGRpY3RzCi13aGljaCBhbHJlYWR5IGhhdmUgdGhlIG1heGltdW0gYmVuZWZpdCBvZiBjYWNoZSBsb2NhbGl0eS4KLQotKiBJZiB0aGUgdXNlIGNhc2UgZm9yIGEgZGljdGlvbmFyeSBpcyBrbm93biB0byBoYXZlIGEgcmFuZG9tIGtleQotYWNjZXNzIHBhdHRlcm4gKGFzIG9wcG9zZWQgdG8gYSBtb3JlIGNvbW1vbiBwYXR0ZXJuIHdpdGggYSBaaXBmJ3MgbGF3Ci1kaXN0cmlidXRpb24pLCB0aGVuIHRoZXJlIHdpbGwgYmUgbW9yZSBiZW5lZml0IGZvciBsYXJnZSBkaWN0aW9uYXJpZXMKLWJlY2F1c2UgYW55IGdpdmVuIGtleSBpcyBubyBtb3JlIGxpa2VseSB0aGFuIGFub3RoZXIgdG8gYWxyZWFkeSBiZQotaW4gY2FjaGUuCi0KLSogSW4gdXNlIGNhc2VzIHdpdGggcGFpcmVkIGFjY2Vzc2VzIHRvIHRoZSBzYW1lIGtleSwgdGhlIHNlY29uZCBhY2Nlc3MKLWlzIGFsd2F5cyBpbiBjYWNoZSBhbmQgZ2V0cyBubyBiZW5lZml0IGZyb20gZWZmb3J0cyB0byBmdXJ0aGVyIGltcHJvdmUKLWNhY2hlIGxvY2FsaXR5LgotCi1PcHRpbWl6aW5nIHRoZSBTZWFyY2ggb2YgU21hbGwgRGljdGlvbmFyaWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUlmIGxvb2tkaWN0KCkgYW5kIGxvb2tkaWN0X3N0cmluZygpIGFyZSBzcGVjaWFsaXplZCBmb3Igc21hbGxlciBkaWN0aW9uYXJpZXMsCi10aGVuIGEgY3VzdG9tIHNlYXJjaCBhcHByb2FjaCBjYW4gYmUgaW1wbGVtZW50ZWQgdGhhdCBleHBsb2l0cyB0aGUgc21hbGwKLXNlYXJjaCBzcGFjZSBhbmQgY2FjaGUgbG9jYWxpdHkuCi0KLSogVGhlIHNpbXBsZXN0IGV4YW1wbGUgaXMgYSBsaW5lYXIgc2VhcmNoIG9mIGNvbnRpZ3VvdXMgZW50cmllcy4gIFRoaXMgaXMKLSAgc2ltcGxlIHRvIGltcGxlbWVudCwgZ3VhcmFudGVlZCB0byB0ZXJtaW5hdGUgcmFwaWRseSwgbmV2ZXIgc2VhcmNoZXMKLSAgdGhlIHNhbWUgZW50cnkgdHdpY2UsIGFuZCBwcmVjbHVkZXMgdGhlIG5lZWQgdG8gY2hlY2sgZm9yIGR1bW15IGVudHJpZXMuCi0KLSogQSBtb3JlIGFkdmFuY2VkIGV4YW1wbGUgaXMgYSBzZWxmLW9yZ2FuaXppbmcgc2VhcmNoIHNvIHRoYXQgdGhlIG1vc3QKLSAgZnJlcXVlbnRseSBhY2Nlc3NlZCBlbnRyaWVzIGdldCBwcm9iZWQgZmlyc3QuICBUaGUgb3JnYW5pemF0aW9uCi0gIGFkYXB0cyBpZiB0aGUgYWNjZXNzIHBhdHRlcm4gY2hhbmdlcyBvdmVyIHRpbWUuICBUcmVhcHMgYXJlIGlkZWFsbHkKLSAgc3VpdGVkIGZvciBzZWxmLW9yZ2FuaXphdGlvbiB3aXRoIHRoZSBtb3N0IGNvbW1vbiBlbnRyaWVzIGF0IHRoZQotICB0b3Agb2YgdGhlIGhlYXAgYW5kIGEgcmFwaWQgYmluYXJ5IHNlYXJjaCBwYXR0ZXJuLiAgTW9zdCBwcm9iZXMgYW5kCi0gIHJlc3VsdHMgYXJlIGFsbCBsb2NhdGVkIGF0IHRoZSB0b3Agb2YgdGhlIHRyZWUgYWxsb3dpbmcgdGhlbSBhbGwgdG8KLSAgYmUgbG9jYXRlZCBpbiBvbmUgb3IgdHdvIGNhY2hlIGxpbmVzLgotCi0qIEFsc28sIHNtYWxsIGRpY3Rpb25hcmllcyBtYXkgYmUgbWFkZSBtb3JlIGRlbnNlLCBwZXJoYXBzIGZpbGxpbmcgYWxsCi0gIGVpZ2h0IGNlbGxzIHRvIHRha2UgdGhlIG1heGltdW0gYWR2YW50YWdlIG9mIHR3byBjYWNoZSBsaW5lcy4KK0ZvciBzcGxpdCB0YWJsZXMsIHRoZSBhYm92ZSB3aWxsIGFwcGx5IHRvIHRoZSBrZXlzLCBidXQgdGhlIHZhbHVlIHdpbGwKK2Fsd2F5cyBiZSBpbiBhIGRpZmZlcmVudCBjYWNoZSBsaW5lIGZyb20gdGhlIGtleS4KIAogCi1TdHJhdGVneSBQYXR0ZXJuCi0tLS0tLS0tLS0tLS0tLS0tCi0KLUNvbnNpZGVyIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNldCB0aGUgdHVuYWJsZSBwYXJhbWV0ZXJzIG9yIHRvIHNlbGVjdCBhCi1wYXJ0aWN1bGFyIHNlYXJjaCBtZXRob2QuICBTaW5jZSBzb21lIGRpY3Rpb25hcnkgdXNlIGNhc2VzIGhhdmUga25vd24KLXNpemVzIGFuZCBhY2Nlc3MgcGF0dGVybnMsIHRoZSB1c2VyIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUgdXNlZnVsIGhpbnRzLgotCi0xKSBGb3IgZXhhbXBsZSwgaWYgbWVtYmVyc2hpcCB0ZXN0aW5nIG9yIGxvb2t1cHMgZG9taW5hdGUgcnVudGltZSBhbmQgbWVtb3J5Ci0gICBpcyBub3QgYXQgYSBwcmVtaXVtLCB0aGUgdXNlciBtYXkgYmVuZWZpdCBmcm9tIHNldHRpbmcgdGhlIG1heGltdW0gbG9hZAotICAgcmF0aW8gYXQgNSUgb3IgMTAlIGluc3RlYWQgb2YgdGhlIHVzdWFsIDY2LjclLiAgVGhpcyB3aWxsIHNoYXJwbHkKLSAgIGN1cnRhaWwgdGhlIG51bWJlciBvZiBjb2xsaXNpb25zIGJ1dCB3aWxsIGluY3JlYXNlIGl0ZXJhdGlvbiB0aW1lLgotICAgVGhlIGJ1aWx0aW4gbmFtZXNwYWNlIGlzIGEgcHJpbWUgZXhhbXBsZSBvZiBhIGRpY3Rpb25hcnkgdGhhdCBjYW4KLSAgIGJlbmVmaXQgZnJvbSBiZWluZyBoaWdobHkgc3BhcnNlLgotCi0yKSBEaWN0aW9uYXJ5IGNyZWF0aW9uIHRpbWUgY2FuIGJlIHNob3J0ZW5lZCBpbiBjYXNlcyB3aGVyZSB0aGUgdWx0aW1hdGUKLSAgIHNpemUgb2YgdGhlIGRpY3Rpb25hcnkgaXMga25vd24gaW4gYWR2YW5jZS4gIFRoZSBkaWN0aW9uYXJ5IGNhbiBiZQotICAgcHJlLXNpemVkIHNvIHRoYXQgbm8gcmVzaXplIG9wZXJhdGlvbnMgYXJlIHJlcXVpcmVkIGR1cmluZyBjcmVhdGlvbi4KLSAgIE5vdCBvbmx5IGRvZXMgdGhpcyBzYXZlIHJlc2l6ZXMsIGJ1dCB0aGUga2V5IGluc2VydGlvbiB3aWxsIGdvCi0gICBtb3JlIHF1aWNrbHkgYmVjYXVzZSB0aGUgZmlyc3QgaGFsZiBvZiB0aGUga2V5cyB3aWxsIGJlIGluc2VydGVkIGludG8KLSAgIGEgbW9yZSBzcGFyc2UgZW52aXJvbm1lbnQgdGhhbiBiZWZvcmUuICBUaGUgcHJlY29uZGl0aW9ucyBmb3IgdGhpcwotICAgc3RyYXRlZ3kgYXJpc2Ugd2hlbmV2ZXIgYSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgZnJvbSBhIGtleSBvciBpdGVtCi0gICBzZXF1ZW5jZSBhbmQgdGhlIG51bWJlciBvZiAqdW5pcXVlKiBrZXlzIGlzIGtub3duLgotCi0zKSBJZiB0aGUga2V5IHNwYWNlIGlzIGxhcmdlIGFuZCB0aGUgYWNjZXNzIHBhdHRlcm4gaXMga25vd24gdG8gYmUgcmFuZG9tLAotICAgdGhlbiBzZWFyY2ggc3RyYXRlZ2llcyBleHBsb2l0aW5nIGNhY2hlIGxvY2FsaXR5IGNhbiBiZSBmcnVpdGZ1bC4KLSAgIFRoZSBwcmVjb25kaXRpb25zIGZvciB0aGlzIHN0cmF0ZWd5IGFyaXNlIGluIHNpbXVsYXRpb25zIGFuZAotICAgbnVtZXJpY2FsIGFuYWx5c2lzLgotCi00KSBJZiB0aGUga2V5cyBhcmUgZml4ZWQgYW5kIHRoZSBhY2Nlc3MgcGF0dGVybiBzdHJvbmdseSBmYXZvcnMgc29tZSBvZgotICAgdGhlIGtleXMsIHRoZW4gdGhlIGVudHJpZXMgY2FuIGJlIHN0b3JlZCBjb250aWd1b3VzbHkgYW5kIGFjY2Vzc2VkCi0gICB3aXRoIGEgbGluZWFyIHNlYXJjaCBvciB0cmVhcC4gIFRoaXMgZXhwbG9pdHMga25vd2xlZGdlIG9mIHRoZSBkYXRhLAotICAgY2FjaGUgbG9jYWxpdHksIGFuZCBhIHNpbXBsaWZpZWQgc2VhcmNoIHJvdXRpbmUuICBJdCBhbHNvIGVsaW1pbmF0ZXMKLSAgIHRoZSBuZWVkIHRvIHRlc3QgZm9yIGR1bW15IGVudHJpZXMgb24gZWFjaCBwcm9iZS4gIFRoZSBwcmVjb25kaXRpb25zCi0gICBmb3IgdGhpcyBzdHJhdGVneSBhcmlzZSBpbiBzeW1ib2wgdGFibGVzIGFuZCBpbiB0aGUgYnVpbHRpbiBkaWN0aW9uYXJ5LgotCi0KLVJlYWRvbmx5IERpY3Rpb25hcmllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Tb21lIGRpY3Rpb25hcnkgdXNlIGNhc2VzIHBhc3MgdGhyb3VnaCBhIGJ1aWxkIHN0YWdlIGFuZCB0aGVuIG1vdmUgdG8gYQotbW9yZSBoZWF2aWx5IGV4ZXJjaXNlZCBsb29rdXAgc3RhZ2Ugd2l0aCBubyBmdXJ0aGVyIGNoYW5nZXMgdG8gdGhlCi1kaWN0aW9uYXJ5LgotCi1BbiBpZGVhIHRoYXQgZW1lcmdlZCBvbiBweXRob24tZGV2IGlzIHRvIGJlIGFibGUgdG8gY29udmVydCBhIGRpY3Rpb25hcnkKLXRvIGEgcmVhZC1vbmx5IHN0YXRlLiAgVGhpcyBjYW4gaGVscCBwcmV2ZW50IHByb2dyYW1taW5nIGVycm9ycyBhbmQgYWxzbwotcHJvdmlkZSBrbm93bGVkZ2UgdGhhdCBjYW4gYmUgZXhwbG9pdGVkIGZvciBsb29rdXAgb3B0aW1pemF0aW9uLgotCi1UaGUgZGljdGlvbmFyeSBjYW4gYmUgaW1tZWRpYXRlbHkgcmVidWlsdCAoZWxpbWluYXRpbmcgZHVtbXkgZW50cmllcyksCi1yZXNpemVkICh0byBhbiBhcHByb3ByaWF0ZSBsZXZlbCBvZiBzcGFyc2VuZXNzKSwgYW5kIHRoZSBrZXlzIGNhbiBiZQotam9zdGxlZCAodG8gbWluaW1pemUgY29sbGlzaW9ucykuICBUaGUgbG9va2RpY3QoKSByb3V0aW5lIGNhbiB0aGVuCi1lbGltaW5hdGUgdGhlIHRlc3QgZm9yIGR1bW15IGVudHJpZXMgKHNhdmluZyBhYm91dCAxLzQgb2YgdGhlIHRpbWUKLXNwZW50IGluIHRoZSBjb2xsaXNpb24gcmVzb2x1dGlvbiBsb29wKS4KLQotQW4gYWRkaXRpb25hbCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgbGlua3MgaW50byB0aGUgZW1wdHkgc3BhY2VzCi1zbyB0aGF0IGRpY3Rpb25hcnkgaXRlcmF0aW9uIGNhbiBwcm9jZWVkIGluIGxlbihkKSBzdGVwcyBpbnN0ZWFkIG9mCi0obXAtPm1hc2sgKyAxKSBzdGVwcy4gIEFsdGVybmF0aXZlbHksIGEgc2VwYXJhdGUgdHVwbGUgb2Yga2V5cyBjYW4gYmUKLWtlcHQganVzdCBmb3IgaXRlcmF0aW9uLgotCi0KLUNhY2hpbmcgTG9va3VwcwotLS0tLS0tLS0tLS0tLS0tCi1UaGUgaWRlYSBpcyB0byBleHBsb2l0IGtleSBhY2Nlc3MgcGF0dGVybnMgYnkgYW50aWNpcGF0aW5nIGZ1dHVyZSBsb29rdXBzCi1iYXNlZCBvbiBwcmV2aW91cyBsb29rdXBzLgotCi1UaGUgc2ltcGxlc3QgaW5jYXJuYXRpb24gaXMgdG8gc2F2ZSB0aGUgbW9zdCByZWNlbnRseSBhY2Nlc3NlZCBlbnRyeS4KLVRoaXMgZ2l2ZXMgb3B0aW1hbCBwZXJmb3JtYW5jZSBmb3IgdXNlIGNhc2VzIHdoZXJlIGV2ZXJ5IGdldCBpcyBmb2xsb3dlZAotYnkgYSBzZXQgb3IgZGVsIHRvIHRoZSBzYW1lIGtleS4KZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG9iamVjdC5jIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKaW5kZXggMjdkZTEwZC4uYWVmOGQxMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKQEAgLTcsOSArNyw5MyBAQAogICAgdHVuaW5nIGRpY3Rpb25hcmllcywgYW5kIHNldmVyYWwgaWRlYXMgZm9yIHBvc3NpYmxlIG9wdGltaXphdGlvbnMuCiAqLwogCisKKy8qCitUaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGU6CisKKzEuIFVudXNlZC4gIG1lX2tleSA9PSBtZV92YWx1ZSA9PSBOVUxMCisgICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KKyAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaAorICAgbWVfa2V5IGlzIE5VTEwsIGFuZCBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgorCisyLiBBY3RpdmUuICBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfa2V5ICE9IGR1bW15IGFuZCBtZV92YWx1ZSAhPSBOVUxMCisgICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgb3IKKyAgIFBlbmRpbmcgdXBvbiBrZXkgZGVsZXRpb24gKGZvciBjb21iaW5lZCBhbmQgc3BsaXQgdGFibGVzIHJlc3BlY3RpdmVseSkuCisgICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggbWVfdmFsdWUgIT0gTlVMTC4KKworMy4gRHVtbXkuICBtZV9rZXkgPT0gZHVtbXkgYW5kIG1lX3ZhbHVlID09IE5VTEwKKyAgIFByZXZpb3VzbHkgaGVsZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIsIGJ1dCB0aGF0IHdhcyBkZWxldGVkIGFuZCBhbgorICAgYWN0aXZlIHBhaXIgaGFzIG5vdCB5ZXQgb3ZlcndyaXR0ZW4gdGhlIHNsb3QuICBEdW1teSBjYW4gdHJhbnNpdGlvbiB0bworICAgQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIER1bW15IHNsb3RzIGNhbm5vdCBiZSBtYWRlIFVudXNlZCBhZ2FpbgorICAgKGNhbm5vdCBoYXZlIG1lX2tleSBzZXQgdG8gTlVMTCksIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YKKyAgIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93IHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KKworNC4gUGVuZGluZy4gTm90IHlldCBpbnNlcnRlZCBvciBkZWxldGVkIGZyb20gYSBzcGxpdC10YWJsZS4KKyAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwKKworVGhlIERpY3RPYmplY3QgY2FuIGJlIGluIG9uZSBvZiB0d28gZm9ybXMuCitFaXRoZXI6CisgIEEgY29tYmluZWQgdGFibGU6CisgICAgbWFfdmFsdWVzID09IE5VTEwsIGRrX3JlZmNudCA9PSAxLgorICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtZV92YWx1ZSBmaWVsZCBvZiB0aGUgUHlEaWN0S2V5c09iamVjdC4KKyAgICBTbG90IGtpbmQgNCBpcyBub3QgYWxsb3dlZCBpLmUuCisgICAgICAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwgaXMgaWxsZWdhbC4KK09yOgorICBBIHNwbGl0IHRhYmxlOgorICAgIG1hX3ZhbHVlcyAhPSBOVUxMLCBka19yZWZjbnQgPj0gMQorICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtYV92YWx1ZXMgYXJyYXkuCisgICAgT25seSBzdHJpbmcgKHVuaWNvZGUpIGtleXMgYXJlIGFsbG93ZWQsIG5vIDxkdW1teT4ga2V5cyBhcmUgcHJlc2VudC4KKworTm90ZTogLnBvcGl0ZW0oKSBhYnVzZXMgdGhlIG1lX2hhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KK2hvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIG1lX2hhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcyBubworbWVhbmluZyBvdGhlcndpc2UuIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcyBwb3BpdGVtIGFsd2F5cyBjb252ZXJ0cyB0aGUgZGljdAordG8gdGhlIGNvbWJpbmVkLXRhYmxlIGZvcm0uCisqLworCisvKiBQeURpY3RfTUlOU0laRV9TUExJVCBpcyB0aGUgbWluaW11bSBzaXplIG9mIGEgc3BsaXQgZGljdGlvbmFyeS4KKyAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4KKyAqIFJlc2l6aW5nIG9mIHNwbGl0IGRpY3Rpb25hcmllcyBpcyB2ZXJ5IHJhcmUsIHNvIHRoZSBzYXZpbmcgbWVtb3J5IGlzIG1vcmUKKyAqIGltcG9ydGFudCB0aGFuIHRoZSBjb3N0IG9mIHJlc2l6aW5nLgorICovCisjZGVmaW5lIFB5RGljdF9NSU5TSVpFX1NQTElUIDQKKworLyogUHlEaWN0X01JTlNJWkVfQ09NQklORUQgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcsIG5vbi1zcGxpdCBkaWN0LgorICogOCBhbGxvd3MgZGljdHMgd2l0aCBubyBtb3JlIHRoYW4gNSBhY3RpdmUgZW50cmllczsgZXhwZXJpbWVudHMgc3VnZ2VzdGVkCisgKiB0aGlzIHN1ZmZpY2VzIGZvciB0aGUgbWFqb3JpdHkgb2YgZGljdHMgKGNvbnNpc3RpbmcgbW9zdGx5IG9mIHVzdWFsbHktc21hbGwKKyAqIGRpY3RzIGNyZWF0ZWQgdG8gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cykuCisgKiBNYWtpbmcgdGhpcyA4LCByYXRoZXIgdGhhbiA0IHJlZHVjZXMgdGhlIG51bWJlciBvZiByZXNpemVzIGZvciBtb3N0CisgKiBkaWN0aW9uYXJpZXMsIHdpdGhvdXQgYW55IHNpZ25pZmljYW50IGV4dHJhIG1lbW9yeSB1c2UuCisgKi8KKyNkZWZpbmUgUHlEaWN0X01JTlNJWkVfQ09NQklORUQgOAorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIG1lX2tleS4gKi8KKyAgICBQeV9oYXNoX3QgbWVfaGFzaDsKKyAgICBQeU9iamVjdCAqbWVfa2V5OworICAgIFB5T2JqZWN0ICptZV92YWx1ZTsgLyogVGhpcyBmaWVsZCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIGNvbWJpbmVkIHRhYmxlcyAqLworfSBQeURpY3RLZXlFbnRyeTsKKwordHlwZWRlZiBQeURpY3RLZXlFbnRyeSAqKCpkaWN0X2xvb2t1cF9mdW5jKQorKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKKworc3RydWN0IF9kaWN0a2V5c29iamVjdCB7CisgICAgUHlfc3NpemVfdCBka19yZWZjbnQ7CisgICAgUHlfc3NpemVfdCBka19zaXplOworICAgIGRpY3RfbG9va3VwX2Z1bmMgZGtfbG9va3VwOworICAgIFB5X3NzaXplX3QgZGtfdXNhYmxlOworICAgIFB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbMV07Cit9OworCisKKy8qCitUbyBlbnN1cmUgdGhlIGxvb2t1cCBhbGdvcml0aG0gdGVybWluYXRlcywgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgVW51c2VkCitzbG90IChOVUxMIGtleSkgaW4gdGhlIHRhYmxlLgorVG8gYXZvaWQgc2xvd2luZyBkb3duIGxvb2t1cHMgb24gYSBuZWFyLWZ1bGwgdGFibGUsIHdlIHJlc2l6ZSB0aGUgdGFibGUgd2hlbgoraXQncyBVU0FCTEVfRlJBQ1RJT04gKGN1cnJlbnRseSB0d28tdGhpcmRzKSBmdWxsLgorKi8KIAogLyogU2V0IGEga2V5IGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudCwgd3JhcHBpbmcgaXQgaW4gYQogICogdHVwbGUgYXV0b21hdGljYWxseSBzbyB0aGF0IHR1cGxlIGtleXMgYXJlIG5vdCB1bnBhY2tlZCBhcyB0aGUKQEAgLTI1LDEwICsxMDksNiBAQAogICAgIFB5X0RFQ1JFRih0dXApOwogfQogCi0vKiBEZWZpbmUgdGhpcyBvdXQgaWYgeW91IGRvbid0IHdhbnQgY29udmVyc2lvbiBzdGF0aXN0aWNzIG9uIGV4aXQuICovCi0jdW5kZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotCi0vKiBTZWUgbGFyZ2UgY29tbWVudCBibG9jayBiZWxvdy4gIFRoaXMgbXVzdCBiZSA+PSAxLiAqLwogI2RlZmluZSBQRVJUVVJCX1NISUZUIDUKIAogLyoKQEAgLTEyNiw4ICsyMDYsMTMgQEAKIAogKi8KIAotLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzICovCi1zdGF0aWMgUHlPYmplY3QgKmR1bW15ID0gTlVMTDsgLyogSW5pdGlhbGl6ZWQgYnkgZmlyc3QgY2FsbCB0byBuZXdQeURpY3RPYmplY3QoKSAqLworLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzCisgKiBUaGlzIGNvdWxkIGJlIGFueSB1bmlxdWUgb2JqZWN0LAorICogdXNlIGEgY3VzdG9tIHR5cGUgaW4gb3JkZXIgdG8gbWluaW1pc2UgY291cGxpbmcuCisqLworc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7CisKKyNkZWZpbmUgZHVtbXkgKCZfZHVtbXlfc3RydWN0KQogCiAjaWZkZWYgUHlfUkVGX0RFQlVHCiBQeU9iamVjdCAqCkBAIC0xMzgsNzcgKzIyMywxNyBAQAogI2VuZGlmCiAKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlEaWN0RW50cnkgKgotbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCk7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF91bmljb2RlX25vZHVtbXkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKIAotI2lmZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLXN0YXRpYyBsb25nIGNyZWF0ZWQgPSAwTDsKLXN0YXRpYyBsb25nIGNvbnZlcnRlZCA9IDBMOwotCi1zdGF0aWMgdm9pZAotc2hvd19jb3VudHModm9pZCkKLXsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImNyZWF0ZWQgJWxkIHN0cmluZyBkaWN0c1xuIiwgY3JlYXRlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICJjb252ZXJ0ZWQgJWxkIHRvIG5vcm1hbCBkaWN0c1xuIiwgY29udmVydGVkKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiUuMmYlJSBjb252ZXJzaW9uIHJhdGVcbiIsICgxMDAuMCpjb252ZXJ0ZWQpL2NyZWF0ZWQpOwotfQotI2VuZGlmCi0KLS8qIERlYnVnIHN0YXRpc3RpYyB0byBjb21wYXJlIGFsbG9jYXRpb25zIHdpdGggcmV1c2UgdGhyb3VnaCB0aGUgZnJlZSBsaXN0ICovCi0jdW5kZWYgU0hPV19BTExPQ19DT1VOVAotI2lmZGVmIFNIT1dfQUxMT0NfQ09VTlQKLXN0YXRpYyBzaXplX3QgY291bnRfYWxsb2MgPSAwOwotc3RhdGljIHNpemVfdCBjb3VudF9yZXVzZSA9IDA7Ci0KLXN0YXRpYyB2b2lkCi1zaG93X2FsbG9jKHZvaWQpCi17Ci0gICAgZnByaW50ZihzdGRlcnIsICJEaWN0IGFsbG9jYXRpb25zOiAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLAotICAgICAgICBjb3VudF9hbGxvYyk7Ci0gICAgZnByaW50ZihzdGRlcnIsICJEaWN0IHJldXNlIHRocm91Z2ggZnJlZWxpc3Q6ICUiIFBZX0ZPUk1BVF9TSVpFX1QKLSAgICAgICAgImRcbiIsIGNvdW50X3JldXNlKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiUuMmYlJSByZXVzZSByYXRlXG5cbiIsCi0gICAgICAgICgxMDAuMCpjb3VudF9yZXVzZS8oY291bnRfYWxsb2MrY291bnRfcmV1c2UpKSk7Ci19Ci0jZW5kaWYKLQotLyogRGVidWcgc3RhdGlzdGljIHRvIGNvdW50IEdDIHRyYWNraW5nIG9mIGRpY3RzICovCi0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotc3RhdGljIFB5X3NzaXplX3QgY291bnRfdW50cmFja2VkID0gMDsKLXN0YXRpYyBQeV9zc2l6ZV90IGNvdW50X3RyYWNrZWQgPSAwOwotCi1zdGF0aWMgdm9pZAotc2hvd190cmFjayh2b2lkKQotewotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdHMgY3JlYXRlZDogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKLSAgICAgICAgY291bnRfdHJhY2tlZCArIGNvdW50X3VudHJhY2tlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICJEaWN0cyB0cmFja2VkIGJ5IHRoZSBHQzogJSIgUFlfRk9STUFUX1NJWkVfVAotICAgICAgICAiZFxuIiwgY291bnRfdHJhY2tlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlLjJmJSUgZGljdCB0cmFja2luZyByYXRlXG5cbiIsCi0gICAgICAgICgxMDAuMCpjb3VudF90cmFja2VkLyhjb3VudF91bnRyYWNrZWQrY291bnRfdHJhY2tlZCkpKTsKLX0KLSNlbmRpZgotCi0KLS8qIEluaXRpYWxpemF0aW9uIG1hY3Jvcy4KLSAgIFRoZXJlIGFyZSB0d28gd2F5cyB0byBjcmVhdGUgYSBkaWN0OiAgUHlEaWN0X05ldygpIGlzIHRoZSBtYWluIEMgQVBJCi0gICBmdW5jdGlvbiwgYW5kIHRoZSB0cF9uZXcgc2xvdCBtYXBzIHRvIGRpY3RfbmV3KCkuICBJbiB0aGUgbGF0dGVyIGNhc2Ugd2UKLSAgIGNhbiBzYXZlIGEgbGl0dGxlIHRpbWUgb3ZlciB3aGF0IFB5RGljdF9OZXcgZG9lcyBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZAotICAgdGhhdCB0aGUgUHlEaWN0T2JqZWN0IHN0cnVjdCBpcyBhbHJlYWR5IHplcm9lZCBvdXQuCi0gICBFdmVyeW9uZSBleGNlcHQgZGljdF9uZXcoKSBzaG91bGQgdXNlIEVNUFRZX1RPX01JTlNJWkUgKHVubGVzcyB0aGV5IGhhdmUKLSAgIGFuIGV4Y2VsbGVudCByZWFzb24gbm90IHRvKS4KLSovCi0KLSNkZWZpbmUgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMobXApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAobXApLT5tYV90YWJsZSA9IChtcCktPm1hX3NtYWxsdGFibGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAobXApLT5tYV9tYXNrID0gUHlEaWN0X01JTlNJWkUgLSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCi0KLSNkZWZpbmUgRU1QVFlfVE9fTUlOU0laRShtcCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBtZW1zZXQoKG1wKS0+bWFfc21hbGx0YWJsZSwgMCwgc2l6ZW9mKChtcCktPm1hX3NtYWxsdGFibGUpKTsgICAgICAgIFwKLSAgICAobXApLT5tYV91c2VkID0gKG1wKS0+bWFfZmlsbCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBJTklUX05PTlpFUk9fRElDVF9TTE9UUyhtcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCitzdGF0aWMgaW50IGRpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW51c2VkKTsKIAogLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MsIGZyZWUsIGFuZCBtZW1zZXQgKi8KICNpZm5kZWYgUHlEaWN0X01BWEZSRUVMSVNUCkBAIC0yMTcsNzMgKzI0MiwxOTQgQEAKIHN0YXRpYyBQeURpY3RPYmplY3QgKmZyZWVfbGlzdFtQeURpY3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKIAotdm9pZAotUHlEaWN0X0Zpbmkodm9pZCkKK2ludAorUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeURpY3RPYmplY3QgKm9wOwotCisgICAgaW50IHJldCA9IG51bWZyZWU7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHJldHVybiByZXQ7CiB9CiAKLVB5T2JqZWN0ICoKLVB5RGljdF9OZXcodm9pZCkKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeURpY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCiB7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBpZiAoZHVtbXkgPT0gTlVMTCkgeyAvKiBBdXRvLWluaXRpYWxpemUgZHVtbXkgKi8KLSAgICAgICAgZHVtbXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPGR1bW15IGtleT4iKTsKLSAgICAgICAgaWYgKGR1bW15ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgICAgIFB5X0F0RXhpdChzaG93X2NvdW50cyk7Ci0jZW5kaWYKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi0gICAgICAgIFB5X0F0RXhpdChzaG93X2FsbG9jKTsKLSNlbmRpZgotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSAgICAgICAgUHlfQXRFeGl0KHNob3dfdHJhY2spOwotI2VuZGlmCisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeURpY3RPYmplY3QiLCBudW1mcmVlLCBzaXplb2YoUHlEaWN0T2JqZWN0KSk7Cit9CisKKwordm9pZAorUHlEaWN0X0Zpbmkodm9pZCkKK3sKKyAgICBQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOworfQorCisjZGVmaW5lIERLX0RFQlVHX0lOQ1JFRiBfUHlfSU5DX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKKyNkZWZpbmUgREtfREVCVUdfREVDUkVGIF9QeV9ERUNfUkVGVE9UQUwgX1B5X1JFRl9ERUJVR19DT01NQQorCisjZGVmaW5lIERLX0lOQ1JFRihkaykgKERLX0RFQlVHX0lOQ1JFRiArKyhkayktPmRrX3JlZmNudCkKKyNkZWZpbmUgREtfREVDUkVGKGRrKSBpZiAoREtfREVCVUdfREVDUkVGICgtLShkayktPmRrX3JlZmNudCkgPT0gMCkgZnJlZV9rZXlzX29iamVjdChkaykKKyNkZWZpbmUgREtfU0laRShkaykgKChkayktPmRrX3NpemUpCisjZGVmaW5lIERLX01BU0soZGspICgoKGRrKS0+ZGtfc2l6ZSktMSkKKyNkZWZpbmUgSVNfUE9XRVJfT0ZfMih4KSAoKCh4KSAmICh4LTEpKSA9PSAwKQorCisvKiBVU0FCTEVfRlJBQ1RJT04gaXMgdGhlIG1heGltdW0gZGljdGlvbmFyeSBsb2FkLgorICogQ3VycmVudGx5IHNldCB0byAoMm4rMSkvMy4gSW5jcmVhc2luZyB0aGlzIHJhdGlvIG1ha2VzIGRpY3Rpb25hcmllcyBtb3JlCisgKiBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZSBjb2xsaXNpb25zLiAgRGVjcmVhc2luZyBpdCBpbXByb3ZlcyBzcGFyc2VuZXNzCisgKiBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcgZW50cmllcyBvdmVyIG1vcmUgY2FjaGUgbGluZXMgYW5kIGF0IHRoZQorICogY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCisgKgorICogVVNBQkxFX0ZSQUNUSU9OIG11c3Qgb2JleSB0aGUgZm9sbG93aW5nOgorICogICAgICgwIDwgVVNBQkxFX0ZSQUNUSU9OKG4pIDwgbikgZm9yIGFsbCBuID49IDIKKyAqCisgKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHZlcnkgcXVpY2sgdG8gY2FsY3VsYXRlLgorICogRnJhY3Rpb25zIGFyb3VuZCA1LzggdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgorICovCisKKy8qIFVzZSAoMm4rMSkvMyByYXRoZXIgdGhhbiAybiszIGJlY2F1c2U6IGl0IG1ha2VzIG5vIGRpZmZlcmVuY2UgZm9yCisgKiBjb21iaW5lZCB0YWJsZXMgKHRoZSB0d28gZnJhY3Rpb25zIHJvdW5kIHRvIHRoZSBzYW1lIG51bWJlciBuIDwgKSwKKyAqIGJ1dCAyKjQvMyBpcyAyIHdoZXJlYXMgKDIqNCsxKS8zIGlzIDMgd2hpY2ggcG90ZW50aWFsbHkgc2F2ZXMgcXVpdGUKKyAqIGEgbG90IG9mIHNwYWNlIGZvciBzbWFsbCwgc3BsaXQgdGFibGVzICovCisjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKCgobikgPDwgMSkrMSkvMykKKworLyogQWx0ZXJuYXRpdmUgZnJhY3Rpb24gdGhhdCBpcyBvdGhlcndpc2UgY2xvc2UgZW5vdWdoIHRvICgybisxKS8zIHRvIG1ha2UKKyAqIGxpdHRsZSBkaWZmZXJlbmNlLiA4ICogMi8zID09IDggKiA1LzggPT0gNS4gMTYgKiAyLzMgPT0gMTYgKiA1LzggPT0gMTAuCisgKiAzMiAqIDIvMyA9IDIxLCAzMiAqIDUvOCA9IDIwLgorICogSXRzIGFkdmFudGFnZSBpcyB0aGF0IGl0IGlzIGZhc3RlciB0byBjb21wdXRlIG9uIG1hY2hpbmVzIHdpdGggc2xvdyBkaXZpc2lvbi4KKyAqICNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pID4+IDEpICsgKChuKSA+PiAyKSAtICgobikgPj4gMykpCisqLworCisvKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4gIEN1cnJlbnRseSBzZXQgdG8gKjIuCisgKiBSYWlzaW5nIHRoaXMgdG8gKjQgZG91YmxlcyBtZW1vcnkgY29uc3VtcHRpb24gZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mCisgKiB0aGUgZGljdGlvbmFyeSwgYnV0IHJlc3VsdHMgaW4gaGFsZiB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMsIGxlc3MgZWZmb3J0IHRvCisgKiByZXNpemUgYW5kIGJldHRlciBzcGFyc2VuZXNzIGZvciBzb21lIChidXQgbm90IGFsbCBkaWN0IHNpemVzKS4KKyAqIFNldHRpbmcgdG8gKjQgZWxpbWluYXRlcyBldmVyeSBvdGhlciByZXNpemUgc3RlcC4KKyAqIEdST1dUSF9SQVRFIHdhcyBzZXQgdG8gKjQgdXAgdG8gdmVyc2lvbiAzLjIuCisgKi8KKyNkZWZpbmUgR1JPV1RIX1JBVEUoeCkgKCh4KSAqIDIpCisKKyNkZWZpbmUgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMoZCkgXAorICAgIGlmICgoZCktPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpIHsgXAorICAgICAgICAoZCktPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGU7IFwKICAgICB9CisKKy8qIFRoaXMgaW1tdXRhYmxlLCBlbXB0eSBQeURpY3RLZXlzT2JqZWN0IGlzIHVzZWQgZm9yIFB5RGljdF9DbGVhcigpCisgKiAod2hpY2ggY2Fubm90IGZhaWwgYW5kIHRodXMgY2FuIGRvIG5vIGFsbG9jYXRpb24pLgorICovCitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCBlbXB0eV9rZXlzX3N0cnVjdCA9IHsKKyAgICAgICAgMiwgLyogZGtfcmVmY250IDEgZm9yIHRoaXMgc3RydWN0LCAxIGZvciBkdW1teV9zdHJ1Y3QgKi8KKyAgICAgICAgMSwgLyogZGtfc2l6ZSAqLworICAgICAgICBsb29rZGljdF9zcGxpdCwgLyogZGtfbG9va3VwICovCisgICAgICAgIDAsIC8qIGRrX3VzYWJsZSAoaW1tdXRhYmxlKSAqLworICAgICAgICB7CisgICAgICAgICAgICB7IDAsIDAsIDAgfSAvKiBka19lbnRyaWVzIChlbXB0eSkgKi8KKyAgICAgICAgfQorfTsKKworc3RhdGljIFB5T2JqZWN0ICplbXB0eV92YWx1ZXNbMV0gPSB7IE5VTEwgfTsKKworI2RlZmluZSBQeV9FTVBUWV9LRVlTICZlbXB0eV9rZXlzX3N0cnVjdAorCitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXNfb2JqZWN0KFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpkazsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKworICAgIGFzc2VydChzaXplID49IFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBhc3NlcnQoSVNfUE9XRVJfT0ZfMihzaXplKSk7CisgICAgZGsgPSBQeU1lbV9NQUxMT0Moc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsKKyAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogKHNpemUtMSkpOworICAgIGlmIChkayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBES19ERUJVR19JTkNSRUYgZGstPmRrX3JlZmNudCA9IDE7CisgICAgZGstPmRrX3NpemUgPSBzaXplOworICAgIGRrLT5ka191c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisgICAgZXAwID0gJmRrLT5ka19lbnRyaWVzWzBdOworICAgIC8qIEhhc2ggdmFsdWUgb2Ygc2xvdCAwIGlzIHVzZWQgYnkgcG9waXRlbSwgc28gaXQgbXVzdCBiZSBpbml0aWFsaXplZCAqLworICAgIGVwMC0+bWVfaGFzaCA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBlcDBbaV0ubWVfa2V5ID0gTlVMTDsKKyAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gTlVMTDsKKyAgICB9CisgICAgZGstPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teTsKKyAgICByZXR1cm4gZGs7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX2tleXNfb2JqZWN0KFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSAma2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBQeV9zc2l6ZV90IGksIG47CisgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUoa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX2tleSk7CisgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgfQorICAgIFB5TWVtX0ZSRUUoa2V5cyk7Cit9CisKKyNkZWZpbmUgbmV3X3ZhbHVlcyhzaXplKSBQeU1lbV9ORVcoUHlPYmplY3QgKiwgc2l6ZSkKKworI2RlZmluZSBmcmVlX3ZhbHVlcyh2YWx1ZXMpIFB5TWVtX0ZSRUUodmFsdWVzKQorCisvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZXdfZGljdChQeURpY3RLZXlzT2JqZWN0ICprZXlzLCBQeU9iamVjdCAqKnZhbHVlcykKK3sKKyAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIGlmIChudW1mcmVlKSB7CiAgICAgICAgIG1wID0gZnJlZV9saXN0Wy0tbnVtZnJlZV07CiAgICAgICAgIGFzc2VydCAobXAgIT0gTlVMTCk7CiAgICAgICAgIGFzc2VydCAoUHlfVFlQRShtcCkgPT0gJlB5RGljdF9UeXBlKTsKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKiltcCk7Ci0gICAgICAgIGlmIChtcC0+bWFfZmlsbCkgewotICAgICAgICAgICAgRU1QVFlfVE9fTUlOU0laRShtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBBdCBsZWFzdCBzZXQgbWFfdGFibGUgYW5kIG1hX21hc2s7IHRoZXNlIGFyZSB3cm9uZwotICAgICAgICAgICAgICAgaWYgYW4gZW1wdHkgYnV0IHByZXNpemVkIGRpY3QgaXMgYWRkZWQgdG8gZnJlZWxpc3QgKi8KLSAgICAgICAgICAgIElOSVRfTk9OWkVST19ESUNUX1NMT1RTKG1wKTsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQgKG1wLT5tYV91c2VkID09IDApOwotICAgICAgICBhc3NlcnQgKG1wLT5tYV90YWJsZSA9PSBtcC0+bWFfc21hbGx0YWJsZSk7Ci0gICAgICAgIGFzc2VydCAobXAtPm1hX21hc2sgPT0gUHlEaWN0X01JTlNJWkUgLSAxKTsKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi0gICAgICAgIGNvdW50X3JldXNlKys7Ci0jZW5kaWYKLSAgICB9IGVsc2UgewotICAgICAgICBtcCA9IFB5T2JqZWN0X0dDX05ldyhQeURpY3RPYmplY3QsICZQeURpY3RfVHlwZSk7Ci0gICAgICAgIGlmIChtcCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIEVNUFRZX1RPX01JTlNJWkUobXApOwotI2lmZGVmIFNIT1dfQUxMT0NfQ09VTlQKLSAgICAgICAgY291bnRfYWxsb2MrKzsKLSNlbmRpZgogICAgIH0KLSAgICBtcC0+bWFfbG9va3VwID0gbG9va2RpY3RfdW5pY29kZTsKLSNpZmRlZiBTSE9XX1RSQUNLX0NPVU5UCi0gICAgY291bnRfdW50cmFja2VkKys7Ci0jZW5kaWYKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgKytjcmVhdGVkOwotI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIG1wID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKKyAgICAgICAgaWYgKG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKKyAgICAgICAgICAgIGZyZWVfdmFsdWVzKHZhbHVlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBtcC0+bWFfa2V5cyA9IGtleXM7CisgICAgbXAtPm1hX3ZhbHVlcyA9IHZhbHVlczsKKyAgICBtcC0+bWFfdXNlZCA9IDA7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1wOwogfQogCisvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgUHlPYmplY3QgKip2YWx1ZXM7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworCisgICAgc2l6ZSA9IERLX1NJWkUoa2V5cyk7CisgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKKyAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKKyAgICAgICAgREtfREVDUkVGKGtleXMpOworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICB2YWx1ZXNbaV0gPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gbmV3X2RpY3Qoa2V5cywgdmFsdWVzKTsKK30KKworUHlPYmplY3QgKgorUHlEaWN0X05ldyh2b2lkKQoreworICAgIHJldHVybiBuZXdfZGljdChuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfQ09NQklORUQpLCBOVUxMKTsKK30KKwogLyoKIFRoZSBiYXNpYyBsb29rdXAgZnVuY3Rpb24gdXNlZCBieSBhbGwgb3BlcmF0aW9ucy4KIFRoaXMgaXMgYmFzZWQgb24gQWxnb3JpdGhtIEQgZnJvbSBLbnV0aCBWb2wuIDMsIFNlYy4gNi40LgpAQCAtMzAyLDI5ICs0NDgsMzUgQEAKIGxvb2tkaWN0KCkgaXMgZ2VuZXJhbC1wdXJwb3NlLCBhbmQgbWF5IHJldHVybiBOVUxMIGlmIChhbmQgb25seSBpZikgYQogY29tcGFyaXNvbiByYWlzZXMgYW4gZXhjZXB0aW9uICh0aGlzIHdhcyBuZXcgaW4gUHl0aG9uIDIuNSkuCiBsb29rZGljdF91bmljb2RlKCkgYmVsb3cgaXMgc3BlY2lhbGl6ZWQgdG8gc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2Ygd2hpY2ggY2FuCi1uZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLiAgRm9yIGJvdGgsIHdoZW4KLXRoZSBrZXkgaXNuJ3QgZm91bmQgYSBQeURpY3RFbnRyeSogaXMgcmV0dXJuZWQgZm9yIHdoaWNoIHRoZSBtZV92YWx1ZSBmaWVsZCBpcwotTlVMTDsgdGhpcyBpcyB0aGUgc2xvdCBpbiB0aGUgZGljdCBhdCB3aGljaCB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgYW5kCi10aGUgY2FsbGVyIGNhbiAoaWYgaXQgd2lzaGVzKSBhZGQgdGhlIDxrZXksIHZhbHVlPiBwYWlyIHRvIHRoZSByZXR1cm5lZAotUHlEaWN0RW50cnkqLgorbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gTlVMTC4KK2xvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSBpcyBmdXJ0aGVyIHNwZWNpYWxpemVkIGZvciBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZQordGhlIDxkdW1teT4gdmFsdWUuCitGb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkCit3aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgKnZhbHVlX2FkZHIgcG9pbnRzIHRvIHRoZSBtYXRjaGluZyB2YWx1ZQorc2xvdC4KICovCi1zdGF0aWMgUHlEaWN0RW50cnkgKgotbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2gpCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQogewogICAgIHJlZ2lzdGVyIHNpemVfdCBpOwogICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICpmcmVlc2xvdDsKLSAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IChzaXplX3QpbXAtPm1hX21hc2s7Ci0gICAgUHlEaWN0RW50cnkgKmVwMCA9IG1wLT5tYV90YWJsZTsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OworICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIHJlZ2lzdGVyIGludCBjbXA7CiAgICAgUHlPYmplY3QgKnN0YXJ0a2V5OwogCit0b3A6CisgICAgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIGVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBlcCA9ICZlcDBbaV07Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgcmV0dXJuIGVwOwotCisgICAgfQogICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQogICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIGVsc2UgewpAQCAtMzM1LDE3ICs0ODcsMTUgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX3RhYmxlICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIFRoZSBjb21wYXJlIGRpZCBtYWpvciBuYXN0eSBzdHVmZiB0byB0aGUKLSAgICAgICAgICAgICAgICAgKiBkaWN0OiAgc3RhcnQgb3Zlci4KLSAgICAgICAgICAgICAgICAgKiBYWFggQSBjbGV2ZXIgYWR2ZXJzYXJ5IGNvdWxkIHByZXZlbnQgdGhpcwotICAgICAgICAgICAgICAgICAqIFhYWCBmcm9tIHRlcm1pbmF0aW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLworICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZyZWVzbG90ID0gTlVMTDsKQEAgLTM1NiwyOCArNTA2LDM3IEBACiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKICAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZXAgOiBmcmVlc2xvdDsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5KQorICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5KSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgZXAtPm1lX2tleSAhPSBkdW1teSkgewogICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OwogICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICBpZiAoY21wIDwgMCkgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX3RhYmxlICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIFRoZSBjb21wYXJlIGRpZCBtYWpvciBuYXN0eSBzdHVmZiB0byB0aGUKLSAgICAgICAgICAgICAgICAgKiBkaWN0OiAgc3RhcnQgb3Zlci4KLSAgICAgICAgICAgICAgICAgKiBYWFggQSBjbGV2ZXIgYWR2ZXJzYXJ5IGNvdWxkIHByZXZlbnQgdGhpcwotICAgICAgICAgICAgICAgICAqIFhYWCBmcm9tIHRlcm1pbmF0aW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLworICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKQEAgLTM4Nyw0NiArNTQ2LDM5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qCi0gKiBIYWNrZWQgdXAgdmVyc2lvbiBvZiBsb29rZGljdCB3aGljaCBjYW4gYXNzdW1lIGtleXMgYXJlIGFsd2F5cwotICogdW5pY29kZXM7IHRoaXMgYXNzdW1wdGlvbiBhbGxvd3MgdGVzdGluZyBmb3IgZXJyb3JzIGR1cmluZwotICogUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCkgdG8gYmUgZHJvcHBlZDsgdW5pY29kZS11bmljb2RlCi0gKiBjb21wYXJpc29ucyBuZXZlciByYWlzZSBleGNlcHRpb25zLiAgVGhpcyBhbHNvIG1lYW5zIHdlIGRvbid0IG5lZWQKLSAqIHRvIGdvIHRocm91Z2ggUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCk7IHdlIGNhbiBhbHdheXMgdXNlCi0gKiB1bmljb2RlX2VxKCkgZGlyZWN0bHkuCi0gKgotICogVGhpcyBpcyB2YWx1YWJsZSBiZWNhdXNlIGRpY3RzIHdpdGggb25seSB1bmljb2RlIGtleXMgYXJlIHZlcnkgY29tbW9uLgotICovCi1zdGF0aWMgUHlEaWN0RW50cnkgKgotbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCByZWdpc3RlciBQeV9oYXNoX3QgaGFzaCkKKy8qIFNwZWNpYWxpemVkIHZlcnNpb24gZm9yIHN0cmluZy1vbmx5IGtleXMgKi8KK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQogewogICAgIHJlZ2lzdGVyIHNpemVfdCBpOwogICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICpmcmVlc2xvdDsKLSAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IChzaXplX3QpbXAtPm1hX21hc2s7Ci0gICAgUHlEaWN0RW50cnkgKmVwMCA9IG1wLT5tYV90YWJsZTsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OworICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZXA7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotI2lmZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLSAgICAgICAgKytjb252ZXJ0ZWQ7Ci0jZW5kaWYKLSAgICAgICAgbXAtPm1hX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCk7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOwogICAgIH0KLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpCisgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgIHJldHVybiBlcDsKKyAgICB9CiAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpCiAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkKKyAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KICAgICAgICAgZnJlZXNsb3QgPSBOVUxMOwogICAgIH0KIApAQCAtNDM1LDEzICs1ODcsMjIgQEAKICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwogICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90ID09IE5VTEwgPyBlcCA6IGZyZWVzbG90OworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5CiAgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaAogICAgICAgICAgICAgJiYgZXAtPm1lX2tleSAhPSBkdW1teQotICAgICAgICAgICAgJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkKKyAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgfQogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQogICAgICAgICAgICAgZnJlZXNsb3QgPSBlcDsKICAgICB9CkBAIC00NDksNiArNjEwLDkyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIEZhc3RlciB2ZXJzaW9uIG9mIGxvb2tkaWN0X3VuaWNvZGUgd2hlbiBpdCBpcyBrbm93biB0aGF0IG5vIDxkdW1teT4ga2V5cworICogd2lsbCBiZSBwcmVzZW50LiAqLworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQoreworICAgIHJlZ2lzdGVyIHNpemVfdCBpOworICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOworICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZXA7CisKKyAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCisgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCisgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCisgICAgICAgdGhhdCBoZXJlLiAqLworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CisgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICB9CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisgICAgZXAgPSAmZXAwW2ldOworICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgIHJldHVybiBlcDsKKyAgICB9CisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKKyAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFZlcnNpb24gb2YgbG9va2RpY3QgZm9yIHNwbGl0IHRhYmxlcy4KKyAqIEFsbCBzcGxpdCB0YWJsZXMgYW5kIG9ubHkgc3BsaXQgdGFibGVzIHVzZSB0aGlzIGxvb2t1cCBmdW5jdGlvbi4KKyAqIFNwbGl0IHRhYmxlcyBvbmx5IGNvbnRhaW4gdW5pY29kZSBrZXlzIGFuZCBubyBkdW1teSBrZXlzLAorICogc28gYWxnb3JpdGhtIGlzIHRoZSBzYW1lIGFzIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teS4KKyAqLworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKK3sKKyAgICByZWdpc3RlciBzaXplX3QgaTsKKyAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CisgICAgICAgIGVwID0gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7CisgICAgICAgIC8qIGxvb2tkaWN0IGV4cGVjdHMgYSBjb21iaW5lZC10YWJsZSwgc28gZml4IHZhbHVlX2FkZHIgKi8KKyAgICAgICAgaSA9IGVwIC0gZXAwOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICByZXR1cm4gZXA7CisgICAgfQorICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOworICAgIGVwID0gJmVwMFtpXTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgcmV0dXJuIGVwOworICAgIH0KKyAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKKyAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOworICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107CisgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiAwOworfQorCiBpbnQKIF9QeURpY3RfSGFzT25seVN0cmluZ0tleXMoUHlPYmplY3QgKmRpY3QpCiB7CkBAIC00NTYsNyArNzAzLDcgQEAKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgICAgYXNzZXJ0KFB5RGljdF9DaGVjayhkaWN0KSk7CiAgICAgLyogU2hvcnRjdXQgKi8KLSAgICBpZiAoKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGUpCisgICAgaWYgKCgoUHlEaWN0T2JqZWN0ICopZGljdCktPm1hX2tleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGRpY3QsICZwb3MsICZrZXksICZ2YWx1ZSkpCiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpCkBAIC00NjQsMjMgKzcxMSwxMiBAQAogICAgIHJldHVybiAxOwogfQogCi0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotI2RlZmluZSBJTkNSRUFTRV9UUkFDS19DT1VOVCBcCi0gICAgKGNvdW50X3RyYWNrZWQrKywgY291bnRfdW50cmFja2VkLS0pOwotI2RlZmluZSBERUNSRUFTRV9UUkFDS19DT1VOVCBcCi0gICAgKGNvdW50X3RyYWNrZWQtLSwgY291bnRfdW50cmFja2VkKyspOwotI2Vsc2UKLSNkZWZpbmUgSU5DUkVBU0VfVFJBQ0tfQ09VTlQKLSNkZWZpbmUgREVDUkVBU0VfVFJBQ0tfQ09VTlQKLSNlbmRpZgotCiAjZGVmaW5lIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKSBcCiAgICAgZG8geyBcCiAgICAgICAgIGlmICghX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQobXApKSB7IFwKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoa2V5KSB8fCBcCiAgICAgICAgICAgICAgICAgX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSkgeyBcCiAgICAgICAgICAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1wKTsgXAotICAgICAgICAgICAgICAgIElOQ1JFQVNFX1RSQUNLX0NPVU5UIFwKICAgICAgICAgICAgIH0gXAogICAgICAgICB9IFwKICAgICB9IHdoaWxlKDApCkBAIC00OTAsNzggKzcyNiwxMzYgQEAKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIGk7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qob3ApIHx8ICFfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChvcCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKSBvcDsKLSAgICBlcCA9IG1wLT5tYV90YWJsZTsKLSAgICBtYXNrID0gbXAtPm1hX21hc2s7Ci0gICAgZm9yIChpID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKCh2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlKSA9PSBOVUxMKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8Ci0gICAgICAgICAgICBfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoZXBbaV0ubWVfa2V5KSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IG1wLT5tYV92YWx1ZXNbaV0pID09IE5VTEwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKAorICAgICAgICAgICAgICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgREVDUkVBU0VfVFJBQ0tfQ09VTlQKKyAgICBlbHNlIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IGVwMFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8CisgICAgICAgICAgICAgICAgX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwMFtpXS5tZV9rZXkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhvcCk7CiB9CiAKLS8qCi1JbnRlcm5hbCByb3V0aW5lIHRvIGluc2VydCBhIG5ldyBpdGVtIGludG8gdGhlIHRhYmxlIHdoZW4geW91IGhhdmUgZW50cnkgb2JqZWN0LgotVXNlZCBieSBpbnNlcnRkaWN0LgotKi8KLXN0YXRpYyBpbnQKLWluc2VydGRpY3RfYnlfZW50cnkocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCi0gICAgICAgICAgICAgICAgICAgIFB5RGljdEVudHJ5ICplcCwgUHlPYmplY3QgKnZhbHVlKQorLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZmluZCBzbG90IGZvciBhbiBpdGVtIGZyb20gaXRzIGhhc2gKKyAqIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkaWN0LgorICovCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCiB7Ci0gICAgUHlPYmplY3QgKm9sZF92YWx1ZTsKKyAgICBzaXplX3QgaTsKKyAgICBzaXplX3QgcGVydHVyYjsKKyAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCi0gICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOwotICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICBvbGRfdmFsdWUgPSBlcC0+bWVfdmFsdWU7Ci0gICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwotICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAqLwotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OworICAgIGkgPSBoYXNoICYgbWFzazsKKyAgICBlcCA9ICZlcDBbaV07CisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKKyAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpCi0gICAgICAgICAgICBtcC0+bWFfZmlsbCsrOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IGR1bW15KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7Ci0gICAgICAgIH0KLSAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgbXAtPm1hX3VzZWQrKzsKLSAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107CisgICAgZWxzZQorICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgcmV0dXJuIGVwOwogfQogCitzdGF0aWMgaW50CitpbnNlcnRpb25fcmVzaXplKFB5RGljdE9iamVjdCAqbXApCit7CisgICAgcmV0dXJuIGRpY3RyZXNpemUobXAsIEdST1dUSF9SQVRFKG1wLT5tYV91c2VkKSk7Cit9CiAKIC8qCiBJbnRlcm5hbCByb3V0aW5lIHRvIGluc2VydCBhIG5ldyBpdGVtIGludG8gdGhlIHRhYmxlLgogVXNlZCBib3RoIGJ5IHRoZSBpbnRlcm5hbCByZXNpemUgcm91dGluZSBhbmQgYnkgdGhlIHB1YmxpYyBpbnNlcnQgcm91dGluZS4KLUVhdHMgYSByZWZlcmVuY2UgdG8ga2V5IGFuZCBvbmUgdG8gdmFsdWUuCiBSZXR1cm5zIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLCBvciAwIG9uIHN1Y2Nlc3MuCiAqLwogc3RhdGljIGludAotaW5zZXJ0ZGljdChyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKnZhbHVlKQoraW5zZXJ0ZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgYXNzZXJ0KGtleSAhPSBkdW1teSk7CiAKLSAgICBhc3NlcnQobXAtPm1hX2xvb2t1cCAhPSBOVUxMKTsKLSAgICBlcCA9IG1wLT5tYV9sb29rdXAobXAsIGtleSwgaGFzaCk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2xvb2t1cChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIGluc2VydGRpY3RfYnlfZW50cnkobXAsIGtleSwgaGFzaCwgZXAsIHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKTsKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgeworICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXAgPSBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7CisgICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OworICAgICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OworICAgICAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbXAtPm1hX3VzZWQrKzsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICB9CisgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KTsKKyAgICByZXR1cm4gMDsKIH0KIAogLyoKQEAgLTU3MSwxOCArODY1LDI1IEBACiB1c2luZyBpbnNlcnRkaWN0KCkgaW4gZGljdHJlc2l6ZSgpIGlzIGRhbmdlcm91cyAoU0YgYnVnICMxNDU2MjA5KS4KIE5vdGUgdGhhdCBubyByZWZjb3VudHMgYXJlIGNoYW5nZWQgYnkgdGhpcyByb3V0aW5lOyBpZiBuZWVkZWQsIHRoZSBjYWxsZXIKIGlzIHJlc3BvbnNpYmxlIGZvciBpbmNyZWYnaW5nIGBrZXlgIGFuZCBgdmFsdWVgLgorTmVpdGhlciBtcC0+bWFfdXNlZCBub3Igay0+ZGtfdXNhYmxlIGFyZSBtb2RpZmllZCBieSB0aGlzIHJvdXRpbmU7IHRoZSBjYWxsZXIKK211c3Qgc2V0IHRoZW0gY29ycmVjdGx5CiAqLwogc3RhdGljIHZvaWQKLWluc2VydGRpY3RfY2xlYW4ocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCitpbnNlcnRkaWN0X2NsZWFuKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IGk7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KW1wLT5tYV9tYXNrOwotICAgIFB5RGljdEVudHJ5ICplcDAgPSBtcC0+bWFfdGFibGU7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHNpemVfdCBpOworICAgIHNpemVfdCBwZXJ0dXJiOworICAgIFB5RGljdEtleXNPYmplY3QgKmsgPSBtcC0+bWFfa2V5czsKKyAgICBzaXplX3QgbWFzayA9IChzaXplX3QpREtfU0laRShrKS0xOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmay0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAKLSAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CisgICAgYXNzZXJ0KGstPmRrX2xvb2t1cCAhPSBOVUxMKTsKKyAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBrLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIGkgPSBoYXNoICYgbWFzazsKICAgICBlcCA9ICZlcDBbaV07CiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CkBAIC01OTAsMzEgKzg5MSwzMSBAQAogICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwogICAgIH0KICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOwotICAgIG1wLT5tYV9maWxsKys7CiAgICAgZXAtPm1lX2tleSA9IGtleTsKICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CiAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7Ci0gICAgbXAtPm1hX3VzZWQrKzsKIH0KIAogLyoKIFJlc3RydWN0dXJlIHRoZSB0YWJsZSBieSBhbGxvY2F0aW5nIGEgbmV3IHRhYmxlIGFuZCByZWluc2VydGluZyBhbGwKIGl0ZW1zIGFnYWluLiAgV2hlbiBlbnRyaWVzIGhhdmUgYmVlbiBkZWxldGVkLCB0aGUgbmV3IHRhYmxlIG1heQogYWN0dWFsbHkgYmUgc21hbGxlciB0aGFuIHRoZSBvbGQgb25lLgorSWYgYSB0YWJsZSBpcyBzcGxpdCAoaXRzIGtleXMgYW5kIGhhc2hlcyBhcmUgc2hhcmVkLCBpdHMgdmFsdWVzIGFyZSBub3QpLAordGhlbiB0aGUgdmFsdWVzIGFyZSB0ZW1wb3JhcmlseSBjb3BpZWQgaW50byB0aGUgdGFibGUsIGl0IGlzIHJlc2l6ZWQgYXMKK2EgY29tYmluZWQgdGFibGUsIHRoZW4gdGhlIG1lX3ZhbHVlIHNsb3RzIGluIHRoZSBvbGQgdGFibGUgYXJlIE5VTExlZCBvdXQuCitBZnRlciByZXNpemluZyBhIHRhYmxlIGlzIGFsd2F5cyBjb21iaW5lZCwKK2J1dCBjYW4gYmUgcmVzcGxpdCBieSBtYWtlX2tleXNfc2hhcmVkKCkuCiAqLwogc3RhdGljIGludAogZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpCiB7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwotICAgIFB5RGljdEVudHJ5ICpvbGR0YWJsZSwgKm5ld3RhYmxlLCAqZXA7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKLSAgICBQeURpY3RFbnRyeSBzbWFsbF9jb3B5W1B5RGljdF9NSU5TSVpFXTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpvbGRrZXlzOworICAgIFB5T2JqZWN0ICoqb2xkdmFsdWVzOworICAgIFB5X3NzaXplX3QgaSwgb2xkc2l6ZTsKIAotICAgIGFzc2VydChtaW51c2VkID49IDApOwotCi0gICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCi0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CisvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKQEAgLTYyMiw4MyArOTIzLDEyNSBAQAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotCi0gICAgLyogR2V0IHNwYWNlIGZvciBhIG5ldyB0YWJsZS4gKi8KLSAgICBvbGR0YWJsZSA9IG1wLT5tYV90YWJsZTsKLSAgICBhc3NlcnQob2xkdGFibGUgIT0gTlVMTCk7Ci0gICAgaXNfb2xkdGFibGVfbWFsbG9jZWQgPSBvbGR0YWJsZSAhPSBtcC0+bWFfc21hbGx0YWJsZTsKLQotICAgIGlmIChuZXdzaXplID09IFB5RGljdF9NSU5TSVpFKSB7Ci0gICAgICAgIC8qIEEgbGFyZ2UgdGFibGUgaXMgc2hyaW5raW5nLCBvciB3ZSBjYW4ndCBnZXQgYW55IHNtYWxsZXIuICovCi0gICAgICAgIG5ld3RhYmxlID0gbXAtPm1hX3NtYWxsdGFibGU7Ci0gICAgICAgIGlmIChuZXd0YWJsZSA9PSBvbGR0YWJsZSkgewotICAgICAgICAgICAgaWYgKG1wLT5tYV9maWxsID09IG1wLT5tYV91c2VkKSB7Ci0gICAgICAgICAgICAgICAgLyogTm8gZHVtbWllcywgc28gbm8gcG9pbnQgZG9pbmcgYW55dGhpbmcuICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgb2xka2V5cyA9IG1wLT5tYV9rZXlzOworICAgIG9sZHZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CisgICAgLyogQWxsb2NhdGUgYSBuZXcgdGFibGUuICovCisgICAgbXAtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QobmV3c2l6ZSk7CisgICAgaWYgKG1wLT5tYV9rZXlzID09IE5VTEwpIHsKKyAgICAgICAgbXAtPm1hX2tleXMgPSBvbGRrZXlzOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChvbGRrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpCisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKKyAgICBvbGRzaXplID0gREtfU0laRShvbGRrZXlzKTsKKyAgICBtcC0+bWFfdmFsdWVzID0gTlVMTDsKKyAgICAvKiBJZiBlbXB0eSB0aGVuIG5vdGhpbmcgdG8gY29weSBzbyBqdXN0IHJldHVybiAqLworICAgIGlmIChvbGRzaXplID09IDEpIHsKKyAgICAgICAgYXNzZXJ0KG9sZGtleXMgPT0gUHlfRU1QVFlfS0VZUyk7CisgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC8qIE1haW4gbG9vcCBiZWxvdyBhc3N1bWVzIHdlIGNhbiB0cmFuc2ZlciByZWZjb3VudCB0byBuZXcga2V5cworICAgICAqIGFuZCB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiBtZV92YWx1ZS4KKyAgICAgKiBJbmNyZW1lbnQgcmVmLWNvdW50cyBhbmQgY29weSB2YWx1ZXMgaGVyZSB0byBjb21wZW5zYXRlCisgICAgICogVGhpcyAocmVzaXppbmcgYSBzcGxpdCB0YWJsZSkgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcmFyZSAqLworICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAob2xkdmFsdWVzW2ldICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYob2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpOworICAgICAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBvbGR2YWx1ZXNbaV07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBXZSdyZSBub3QgZ29pbmcgdG8gcmVzaXplIGl0LCBidXQgcmVidWlsZCB0aGUKLSAgICAgICAgICAgICAgIHRhYmxlIGFueXdheSB0byBwdXJnZSBvbGQgZHVtbXkgZW50cmllcy4KLSAgICAgICAgICAgICAgIFN1YnRsZTogIFRoaXMgaXMgKm5lY2Vzc2FyeSogaWYgZmlsbD09c2l6ZSwKLSAgICAgICAgICAgICAgIGFzIGxvb2tkaWN0IG5lZWRzIGF0IGxlYXN0IG9uZSB2aXJnaW4gc2xvdCB0bwotICAgICAgICAgICAgICAgdGVybWluYXRlIGZhaWxpbmcgc2VhcmNoZXMuICBJZiBmaWxsIDwgc2l6ZSwgaXQncwotICAgICAgICAgICAgICAgbWVyZWx5IGRlc2lyYWJsZSwgYXMgZHVtbWllcyBzbG93IHNlYXJjaGVzLiAqLwotICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV9maWxsID4gbXAtPm1hX3VzZWQpOwotICAgICAgICAgICAgbWVtY3B5KHNtYWxsX2NvcHksIG9sZHRhYmxlLCBzaXplb2Yoc21hbGxfY29weSkpOwotICAgICAgICAgICAgb2xkdGFibGUgPSBzbWFsbF9jb3B5OwogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBuZXd0YWJsZSA9IFB5TWVtX05FVyhQeURpY3RFbnRyeSwgbmV3c2l6ZSk7Ci0gICAgICAgIGlmIChuZXd0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogTWFrZSB0aGUgZGljdCBlbXB0eSwgdXNpbmcgdGhlIG5ldyB0YWJsZS4gKi8KLSAgICBhc3NlcnQobmV3dGFibGUgIT0gb2xkdGFibGUpOwotICAgIG1wLT5tYV90YWJsZSA9IG5ld3RhYmxlOwotICAgIG1wLT5tYV9tYXNrID0gbmV3c2l6ZSAtIDE7Ci0gICAgbWVtc2V0KG5ld3RhYmxlLCAwLCBzaXplb2YoUHlEaWN0RW50cnkpICogbmV3c2l6ZSk7Ci0gICAgbXAtPm1hX3VzZWQgPSAwOwotICAgIGkgPSBtcC0+bWFfZmlsbDsKLSAgICBtcC0+bWFfZmlsbCA9IDA7Ci0KLSAgICAvKiBDb3B5IHRoZSBkYXRhIG92ZXI7IHRoaXMgaXMgcmVmY291bnQtbmV1dHJhbCBmb3IgYWN0aXZlIGVudHJpZXM7Ci0gICAgICAgZHVtbXkgZW50cmllcyBhcmVuJ3QgY29waWVkIG92ZXIsIG9mIGNvdXJzZSAqLwotICAgIGZvciAoZXAgPSBvbGR0YWJsZTsgaSA+IDA7IGVwKyspIHsKLSAgICAgICAgaWYgKGVwLT5tZV92YWx1ZSAhPSBOVUxMKSB7ICAgICAgICAgICAgIC8qIGFjdGl2ZSBlbnRyeSAqLwotICAgICAgICAgICAgLS1pOworICAgIC8qIE1haW4gbG9vcCAqLworICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJm9sZGtleXMtPmRrX2VudHJpZXNbaV07CisgICAgICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gZHVtbXkpOwogICAgICAgICAgICAgaW5zZXJ0ZGljdF9jbGVhbihtcCwgZXAtPm1lX2tleSwgZXAtPm1lX2hhc2gsIGVwLT5tZV92YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXAtPm1lX2tleSAhPSBOVUxMKSB7ICAgICAgICAgIC8qIGR1bW15IGVudHJ5ICovCi0gICAgICAgICAgICAtLWk7Ci0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBkdW1teSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZXAtPm1lX2tleSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogZWxzZSBrZXkgPT0gdmFsdWUgPT0gTlVMTDogIG5vdGhpbmcgdG8gZG8gKi8KICAgICB9Ci0KLSAgICBpZiAoaXNfb2xkdGFibGVfbWFsbG9jZWQpCi0gICAgICAgIFB5TWVtX0RFTChvbGR0YWJsZSk7CisgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZSAtPSBtcC0+bWFfdXNlZDsKKyAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKKyAgICAgICAgLyogTlVMTCBvdXQgbWVfdmFsdWUgc2xvdCBpbiBvbGRrZXlzLCBpbiBjYXNlIGl0IHdhcyBzaGFyZWQgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykKKyAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBOVUxMOworICAgICAgICBhc3NlcnQob2xkdmFsdWVzICE9IGVtcHR5X3ZhbHVlcyk7CisgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3Rfc3BsaXQpOworICAgICAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSkgeworICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzWzBdOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChlcDBbaV0ubWVfa2V5ID09IGR1bW15KQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgICAgIERLX0RFQlVHX0RFQ1JFRiBQeU1lbV9GUkVFKG9sZGtleXMpOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotLyogQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgcHJlLXNpemVkIHRvIGhvbGQgYW4gZXN0aW1hdGVkIG51bWJlciBvZiBlbGVtZW50cy4KLSAgIFVuZGVyZXN0aW1hdGVzIGFyZSBva2F5IGJlY2F1c2UgdGhlIGRpY3Rpb25hcnkgd2lsbCByZXNpemUgYXMgbmVjZXNzYXJ5LgotICAgT3ZlcmVzdGltYXRlcyBqdXN0IG1lYW4gdGhlIGRpY3Rpb25hcnkgd2lsbCBiZSBtb3JlIHNwYXJzZSB0aGFuIHVzdWFsLgotKi8KKy8qIFJldHVybnMgTlVMTCBpZiB1bmFibGUgdG8gc3BsaXQgdGFibGUuCisgKiBBIE5VTEwgcmV0dXJuIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGluZGljYXRlIGFuIGVycm9yICovCitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqCittYWtlX2tleXNfc2hhcmVkKFB5T2JqZWN0ICpvcCkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisKKyAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVzOworICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZSkgeworICAgICAgICAgICAgLyogUmVtb3ZlIGR1bW15IGtleXMgKi8KKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KTsKKyAgICAgICAgLyogQ29weSB2YWx1ZXMgaW50byBhIG5ldyBhcnJheSAqLworICAgICAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKKyAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCisgICAgICAgICAgICAgICAgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIG5ldyB2YWx1ZXMgYXJyYXkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIHZhbHVlc1tpXSA9IGVwMFtpXS5tZV92YWx1ZTsKKyAgICAgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3NwbGl0OworICAgICAgICBtcC0+bWFfdmFsdWVzID0gdmFsdWVzOworICAgIH0KKyAgICBES19JTkNSRUYobXAtPm1hX2tleXMpOworICAgIHJldHVybiBtcC0+bWFfa2V5czsKK30KIAogUHlPYmplY3QgKgogX1B5RGljdF9OZXdQcmVzaXplZChQeV9zc2l6ZV90IG1pbnVzZWQpCiB7Ci0gICAgUHlPYmplY3QgKm9wID0gUHlEaWN0X05ldygpOwotCi0gICAgaWYgKG1pbnVzZWQ+NSAmJiBvcCAhPSBOVUxMICYmIGRpY3RyZXNpemUoKFB5RGljdE9iamVjdCAqKW9wLCBtaW51c2VkKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYob3ApOworICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpuZXdfa2V5czsKKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKKyAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKKyAgICAgICAgIG5ld3NpemUgPDw9IDEpCisgICAgICAgIDsKKyAgICBuZXdfa2V5cyA9IG5ld19rZXlzX29iamVjdChuZXdzaXplKTsKKyAgICBpZiAobmV3X2tleXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBvcDsKKyAgICByZXR1cm4gbmV3X2RpY3QobmV3X2tleXMsIE5VTEwpOwogfQogCiAvKiBOb3RlIHRoYXQsIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIFB5RGljdF9HZXRJdGVtKCkgc3VwcHJlc3NlcyBhbGwgZXJyb3JzCkBAIC03MTYsMTIgKzEwNTksMTQgQEAKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKwogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQogICAgIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKQEAgLTc0MSwyMCArMTA4NiwyMCBAQAogICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCiAgICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLwogICAgICAgICBQeUVycl9SZXN0b3JlKGVycl90eXBlLCBlcnJfdmFsdWUsIGVycl90Yik7CiAgICAgICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgICAgICBpZiAoZXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBlcC0+bWVfdmFsdWU7CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCiAvKiBWYXJpYW50IG9mIFB5RGljdF9HZXRJdGVtKCkgdGhhdCBkb2Vzbid0IHN1cHByZXNzIGV4Y2VwdGlvbnMuCkBAIC03NjYsMTQgKzExMTEsMTUgQEAKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCiAgICAgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewpAQCAtNzgxLDQ5ICsxMTI3LDU1IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBlcC0+bWVfdmFsdWU7CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCi1zdGF0aWMgaW50Ci1kaWN0X3NldF9pdGVtX2J5X2hhc2hfb3JfZW50cnkocmVnaXN0ZXIgUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeURpY3RFbnRyeSAqZXAsIFB5T2JqZWN0ICp2YWx1ZSkKK1B5T2JqZWN0ICoKK19QeURpY3RfR2V0SXRlbUlkV2l0aEVycm9yKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpCiB7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcDsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IG5fdXNlZDsKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoZHAsIGt2KTsKK30KIAotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGFzc2VydChtcC0+bWFfZmlsbCA8PSBtcC0+bWFfbWFzayk7ICAvKiBhdCBsZWFzdCBvbmUgZW1wdHkgc2xvdCAqLwotICAgIG5fdXNlZCA9IG1wLT5tYV91c2VkOwotICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKGVwID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7CisvKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cC4KKyAqIExvb2t1cCBpbiBnbG9iYWxzLCB0aGVuIGJ1aWx0aW5zLgorICovCitQeU9iamVjdCAqCitfUHlEaWN0X0xvYWRHbG9iYWwoUHlEaWN0T2JqZWN0ICpnbG9iYWxzLCBQeURpY3RPYmplY3QgKmJ1aWx0aW5zLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5T2JqZWN0ICp4OworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKilrZXkpLT5oYXNoOworICAgICAgICBpZiAoaGFzaCAhPSAtMSkgeworICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmU7CisgICAgICAgICAgICBlID0gZ2xvYmFscy0+bWFfa2V5cy0+ZGtfbG9va3VwKGdsb2JhbHMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOworICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIGUgPSBidWlsdGlucy0+bWFfa2V5cy0+ZGtfbG9va3VwKGJ1aWx0aW5zLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoaW5zZXJ0ZGljdF9ieV9lbnRyeShtcCwga2V5LCBoYXNoLCBlcCwgdmFsdWUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIElmIHdlIGFkZGVkIGEga2V5LCB3ZSBjYW4gc2FmZWx5IHJlc2l6ZS4gIE90aGVyd2lzZSBqdXN0IHJldHVybiEKLSAgICAgKiBJZiBmaWxsID49IDIvMyBzaXplLCBhZGp1c3Qgc2l6ZS4gIE5vcm1hbGx5LCB0aGlzIGRvdWJsZXMgb3IKLSAgICAgKiBxdWFkdXBsZXMgdGhlIHNpemUsIGJ1dCBpdCdzIGFsc28gcG9zc2libGUgZm9yIHRoZSBkaWN0IHRvIHNocmluawotICAgICAqIChpZiBtYV9maWxsIGlzIG11Y2ggbGFyZ2VyIHRoYW4gbWFfdXNlZCwgbWVhbmluZyBhIGxvdCBvZiBkaWN0Ci0gICAgICoga2V5cyBoYXZlIGJlZW4gKiBkZWxldGVkKS4KLSAgICAgKgotICAgICAqIFF1YWRydXBsaW5nIHRoZSBzaXplIGltcHJvdmVzIGF2ZXJhZ2UgZGljdGlvbmFyeSBzcGFyc2VuZXNzCi0gICAgICogKHJlZHVjaW5nIGNvbGxpc2lvbnMpIGF0IHRoZSBjb3N0IG9mIHNvbWUgbWVtb3J5IGFuZCBpdGVyYXRpb24KLSAgICAgKiBzcGVlZCAod2hpY2ggbG9vcHMgb3ZlciBldmVyeSBwb3NzaWJsZSBlbnRyeSkuICBJdCBhbHNvIGhhbHZlcwotICAgICAqIHRoZSBudW1iZXIgb2YgZXhwZW5zaXZlIHJlc2l6ZSBvcGVyYXRpb25zIGluIGEgZ3Jvd2luZyBkaWN0aW9uYXJ5LgotICAgICAqCi0gICAgICogVmVyeSBsYXJnZSBkaWN0aW9uYXJpZXMgKG92ZXIgNTBLIGl0ZW1zKSB1c2UgZG91YmxpbmcgaW5zdGVhZC4KLSAgICAgKiBUaGlzIG1heSBoZWxwIGFwcGxpY2F0aW9ucyB3aXRoIHNldmVyZSBtZW1vcnkgY29uc3RyYWludHMuCi0gICAgICovCi0gICAgaWYgKCEobXAtPm1hX3VzZWQgPiBuX3VzZWQgJiYgbXAtPm1hX2ZpbGwqMyA+PSAobXAtPm1hX21hc2srMSkqMikpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBkaWN0cmVzaXplKG1wLCAobXAtPm1hX3VzZWQgPiA1MDAwMCA/IDIgOiA0KSAqIG1wLT5tYV91c2VkKTsKKyAgICB4ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopZ2xvYmFscywga2V5KTsKKyAgICBpZiAoeCAhPSBOVUxMKQorICAgICAgICByZXR1cm4geDsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWJ1aWx0aW5zLCBrZXkpOwogfQogCiAvKiBDQVVUSU9OOiBQeURpY3RfU2V0SXRlbSgpIG11c3QgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgcmVzaXplIHRoZQpAQCAtODMzLDM2ICsxMTg1LDM3IEBACiAgKiByZW1vdmUgdGhlbS4KICAqLwogaW50Ci1QeURpY3RfU2V0SXRlbShyZWdpc3RlciBQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK1B5RGljdF9TZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoOwotCisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgYXNzZXJ0KGtleSk7CiAgICAgYXNzZXJ0KHZhbHVlKTsKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaDsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIGRpY3Rfc2V0X2l0ZW1fYnlfaGFzaF9vcl9lbnRyeShvcCwga2V5LCBoYXNoLCBOVUxMLCB2YWx1ZSk7CisKKyAgICAvKiBpbnNlcnRkaWN0KCkgaGFuZGxlcyBhbnkgcmVzaXppbmcgdGhhdCBtaWdodCBiZSBuZWNlc3NhcnkgKi8KKyAgICByZXR1cm4gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7CiB9CiAKIGludAogUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewotICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2g7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICpvbGRfa2V5LCAqb2xkX3ZhbHVlOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKQEAgLTg3MCwyNyArMTIyMywzMCBAQAogICAgIH0KICAgICBhc3NlcnQoa2V5KTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgaWYgKCp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgc2V0X2tleV9lcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgIG9sZF92YWx1ZSA9IGVwLT5tZV92YWx1ZTsKLSAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOworICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOworICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CisgICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKyAgICB9CiAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7Ci0gICAgUHlfREVDUkVGKG9sZF9rZXkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04OTgsNjkgKzEyNTQsNzAgQEAKIFB5RGljdF9DbGVhcihQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeURpY3RFbnRyeSAqZXAsICp0YWJsZTsKLSAgICBpbnQgdGFibGVfaXNfbWFsbG9jZWQ7Ci0gICAgUHlfc3NpemVfdCBmaWxsOwotICAgIFB5RGljdEVudHJ5IHNtYWxsX2NvcHlbUHlEaWN0X01JTlNJWkVdOwotI2lmZGVmIFB5X0RFQlVHCisgICAgUHlEaWN0S2V5c09iamVjdCAqb2xka2V5czsKKyAgICBQeU9iamVjdCAqKm9sZHZhbHVlczsKICAgICBQeV9zc2l6ZV90IGksIG47Ci0jZW5kaWYKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKICAgICAgICAgcmV0dXJuOworICAgIG1wID0gKChQeURpY3RPYmplY3QgKilvcCk7CisgICAgb2xka2V5cyA9IG1wLT5tYV9rZXlzOworICAgIG9sZHZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CisgICAgaWYgKG9sZHZhbHVlcyA9PSBlbXB0eV92YWx1ZXMpCisgICAgICAgIHJldHVybjsKKyAgICAvKiBFbXB0eSB0aGUgZGljdC4uLiAqLworICAgIERLX0lOQ1JFRihQeV9FTVBUWV9LRVlTKTsKKyAgICBtcC0+bWFfa2V5cyA9IFB5X0VNUFRZX0tFWVM7CisgICAgbXAtPm1hX3ZhbHVlcyA9IGVtcHR5X3ZhbHVlczsKKyAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgLyogLi4udGhlbiBjbGVhciB0aGUga2V5cyBhbmQgdmFsdWVzICovCisgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgIG4gPSBES19TSVpFKG9sZGtleXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgUHlfQ0xFQVIob2xkdmFsdWVzW2ldKTsKKyAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKKyAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICB9Cit9CisKKy8qIFJldHVybnMgLTEgaWYgbm8gbW9yZSBpdGVtcyAob3Igb3AgaXMgbm90IGEgZGljdCksCisgKiBpbmRleCBvZiBpdGVtIG90aGVyd2lzZS4gU3RvcmVzIHZhbHVlIGluIHB2YWx1ZQorICovCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK2RpY3RfbmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKipwdmFsdWUpCit7CisgICAgUHlfc3NpemVfdCBtYXNrLCBvZmZzZXQ7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKKworCisgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQorICAgICAgICByZXR1cm4gLTE7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBuID0gbXAtPm1hX21hc2sgKyAxOwotICAgIGkgPSAwOwotI2VuZGlmCi0KLSAgICB0YWJsZSA9IG1wLT5tYV90YWJsZTsKLSAgICBhc3NlcnQodGFibGUgIT0gTlVMTCk7Ci0gICAgdGFibGVfaXNfbWFsbG9jZWQgPSB0YWJsZSAhPSBtcC0+bWFfc21hbGx0YWJsZTsKLQotICAgIC8qIFRoaXMgaXMgZGVsaWNhdGUuICBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgdGhlIGRpY3QsCi0gICAgICogZGVjcmVmcyBjYW4gY2F1c2UgdGhlIGRpY3QgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uCi0gICAgICogKHZvaWNlIG9mIGV4cGVyaWVuY2UpLCB3ZSBoYXZlIHRvIG1ha2UgdGhlIGRpY3QgZW1wdHkgYmVmb3JlCi0gICAgICogY2xlYXJpbmcgdGhlIHNsb3RzLCBhbmQgbmV2ZXIgcmVmZXIgdG8gYW55dGhpbmcgdmlhIG1wLT54eHggd2hpbGUKLSAgICAgKiBjbGVhcmluZy4KLSAgICAgKi8KLSAgICBmaWxsID0gbXAtPm1hX2ZpbGw7Ci0gICAgaWYgKHRhYmxlX2lzX21hbGxvY2VkKQotICAgICAgICBFTVBUWV9UT19NSU5TSVpFKG1wKTsKLQotICAgIGVsc2UgaWYgKGZpbGwgPiAwKSB7Ci0gICAgICAgIC8qIEl0J3MgYSBzbWFsbCB0YWJsZSB3aXRoIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGNsZWFyZWQuCi0gICAgICAgICAqIEFmcmFpZCB0aGUgb25seSBzYWZlIHdheSBpcyB0byBjb3B5IHRoZSBkaWN0IGVudHJpZXMgaW50bwotICAgICAgICAgKiBhbm90aGVyIHNtYWxsIHRhYmxlIGZpcnN0LgotICAgICAgICAgKi8KLSAgICAgICAgbWVtY3B5KHNtYWxsX2NvcHksIHRhYmxlLCBzaXplb2Yoc21hbGxfY29weSkpOwotICAgICAgICB0YWJsZSA9IHNtYWxsX2NvcHk7Ci0gICAgICAgIEVNUFRZX1RPX01JTlNJWkUobXApOworICAgIGlmIChpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQotICAgIC8qIGVsc2UgaXQncyBhIHNtYWxsIHRhYmxlIHRoYXQncyBhbHJlYWR5IGVtcHR5ICovCi0KLSAgICAvKiBOb3cgd2UgY2FuIGZpbmFsbHkgY2xlYXIgdGhpbmdzLiAgSWYgQyBoYWQgcmVmY291bnRzLCB3ZSBjb3VsZAotICAgICAqIGFzc2VydCB0aGF0IHRoZSByZWZjb3VudCBvbiB0YWJsZSBpcyAxIG5vdywgaS5lLiB0aGF0IHRoaXMgZnVuY3Rpb24KLSAgICAgKiBoYXMgdW5pcXVlIGFjY2VzcyB0byBpdCwgc28gZGVjcmVmIHNpZGUtZWZmZWN0cyBjYW4ndCBhbHRlciBpdC4KLSAgICAgKi8KLSAgICBmb3IgKGVwID0gdGFibGU7IGZpbGwgPiAwOyArK2VwKSB7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgYXNzZXJ0KGkgPCBuKTsKLSAgICAgICAgKytpOwotI2VuZGlmCi0gICAgICAgIGlmIChlcC0+bWVfa2V5KSB7Ci0gICAgICAgICAgICAtLWZpbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZXAtPm1lX2tleSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGVwLT5tZV92YWx1ZSk7Ci0gICAgICAgIH0KLSNpZmRlZiBQeV9ERUJVRwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOwotI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKICAgICB9Ci0KLSAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCi0gICAgICAgIFB5TWVtX0RFTCh0YWJsZSk7CisgICAgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CisgICAgICAgIGkrKzsKKyAgICB9CisgICAgaWYgKGkgPiBtYXNrKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHB2YWx1ZSkKKyAgICAgICAgKnB2YWx1ZSA9ICp2YWx1ZV9wdHI7CisgICAgcmV0dXJuIGk7CiB9CiAKIC8qCkBAIC05ODEsNzUgKzEzMzgsNTkgQEAKIGludAogUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksIFB5T2JqZWN0ICoqcHZhbHVlKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpID0gKnBwb3M7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZXAgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfdGFibGU7Ci0gICAgbWFzayA9ICgoUHlEaWN0T2JqZWN0ICopb3ApLT5tYV9tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgZXBbaV0ubWVfdmFsdWUgPT0gTlVMTCkKLSAgICAgICAgaSsrOworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwogICAgICpwcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gZXBbaV0ubWVfa2V5OwotICAgIGlmIChwdmFsdWUpCi0gICAgICAgICpwdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbiB0byB0aGUga2V5IGFuZCB2YWx1ZS4qLworLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfTmV4dCB0aGF0IHJldHVybnMgYSBoYXNoIHZhbHVlIGluIGFkZGl0aW9uCisgKiB0byB0aGUga2V5IGFuZCB2YWx1ZS4KKyAqLwogaW50Ci1fUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQorX1B5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LAorICAgICAgICAgICAgIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpID0gKnBwb3M7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZXAgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfdGFibGU7Ci0gICAgbWFzayA9ICgoUHlEaWN0T2JqZWN0ICopb3ApLT5tYV9tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgZXBbaV0ubWVfdmFsdWUgPT0gTlVMTCkKLSAgICAgICAgaSsrOworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwogICAgICpwcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgKnBoYXNoID0gZXBbaV0ubWVfaGFzaDsKKyAgICAqcGhhc2ggPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9oYXNoOwogICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IGVwW2ldLm1lX2tleTsKLSAgICBpZiAocHZhbHVlKQotICAgICAgICAqcHZhbHVlID0gZXBbaV0ubWVfdmFsdWU7CisgICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwogICAgIHJldHVybiAxOwogfQogCiAvKiBNZXRob2RzICovCiAKIHN0YXRpYyB2b2lkCi1kaWN0X2RlYWxsb2MocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCkKK2RpY3RfZGVhbGxvYyhQeURpY3RPYmplY3QgKm1wKQogewotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeV9zc2l6ZV90IGZpbGwgPSBtcC0+bWFfZmlsbDsKKyAgICBQeU9iamVjdCAqKnZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG1wLT5tYV9rZXlzOworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKG1wKTsKICAgICBQeV9UUkFTSENBTl9TQUZFX0JFR0lOKG1wKQotICAgIGZvciAoZXAgPSBtcC0+bWFfdGFibGU7IGZpbGwgPiAwOyBlcCsrKSB7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5KSB7Ci0gICAgICAgICAgICAtLWZpbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZXAtPm1lX2tleSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGVwLT5tZV92YWx1ZSk7CisgICAgaWYgKHZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgIGlmICh2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbHVlc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyh2YWx1ZXMpOwogICAgICAgICB9CisgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKICAgICB9Ci0gICAgaWYgKG1wLT5tYV90YWJsZSAhPSBtcC0+bWFfc21hbGx0YWJsZSkKLSAgICAgICAgUHlNZW1fREVMKG1wLT5tYV90YWJsZSk7CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChrZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKKyAgICB9CiAgICAgaWYgKG51bWZyZWUgPCBQeURpY3RfTUFYRlJFRUxJU1QgJiYgUHlfVFlQRShtcCkgPT0gJlB5RGljdF9UeXBlKQogICAgICAgICBmcmVlX2xpc3RbbnVtZnJlZSsrXSA9IG1wOwogICAgIGVsc2UKQEAgLTEwNTcsNiArMTM5OCw3IEBACiAgICAgUHlfVFJBU0hDQU5fU0FGRV9FTkQobXApCiB9CiAKKwogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfcmVwcihQeURpY3RPYmplY3QgKm1wKQogewpAQCAtMTA4OCwxMSArMTQzMCwxMyBAQAogICAgIGkgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dCgoUHlPYmplY3QgKiltcCwgJmksICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaW50IHN0YXR1czsKLSAgICAgICAgLyogUHJldmVudCByZXByIGZyb20gZGVsZXRpbmcgdmFsdWUgZHVyaW5nIGtleSBmb3JtYXQuICovCisgICAgICAgIC8qIFByZXZlbnQgcmVwciBmcm9tIGRlbGV0aW5nIGtleSBvciB2YWx1ZSBkdXJpbmcga2V5IGZvcm1hdC4gKi8KKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgICAgIHMgPSBQeU9iamVjdF9SZXByKGtleSk7CiAgICAgICAgIFB5VW5pY29kZV9BcHBlbmQoJnMsIGNvbG9uKTsKICAgICAgICAgUHlVbmljb2RlX0FwcGVuZEFuZERlbCgmcywgUHlPYmplY3RfUmVwcih2YWx1ZSkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTExNDcsMjYgKzE0OTEsMjUgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7Ci0gICAgYXNzZXJ0KG1wLT5tYV90YWJsZSAhPSBOVUxMKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gZXAtPm1lX3ZhbHVlOworICAgIHYgPSAqdmFsdWVfYWRkcjsKICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3QobXApKSB7CiAgICAgICAgICAgICAvKiBMb29rIHVwIF9fbWlzc2luZ19fIG1ldGhvZCBpZiB3ZSdyZSBhIHN1YmNsYXNzLiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1pc3NpbmcsICpyZXM7Ci0gICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKm1pc3Npbmdfc3RyID0gTlVMTDsKLSAgICAgICAgICAgIG1pc3NpbmcgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCgoUHlPYmplY3QgKiltcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19taXNzaW5nX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaXNzaW5nX3N0cik7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX21pc3NpbmdfXyk7CisgICAgICAgICAgICBtaXNzaW5nID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoKFB5T2JqZWN0ICopbXAsICZQeUlkX19fbWlzc2luZ19fKTsKICAgICAgICAgICAgIGlmIChtaXNzaW5nICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKG1pc3NpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIE5VTEwpOwpAQCAtMTIwNCw4ICsxNTQ3LDkgQEAKIHsKICAgICByZWdpc3RlciBQeU9iamVjdCAqdjsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIGo7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwotICAgIFB5X3NzaXplX3QgbWFzaywgbjsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBzaXplLCBuLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgYWdhaW46CiAgICAgbiA9IG1wLT5tYV91c2VkOwpAQCAtMTIxOSwxNSArMTU2MywyNCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIGVwID0gbXAtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBtcC0+bWFfbWFzazsKLSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKGVwW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKKyAgICBlcCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmVwWzBdLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAoKnZhbHVlX3B0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gZXBbaV0ubWVfa2V5OwogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0odiwgaiwga2V5KTsKICAgICAgICAgICAgIGorKzsKICAgICAgICAgfQorICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgIH0KICAgICBhc3NlcnQoaiA9PSBuKTsKICAgICByZXR1cm4gdjsKQEAgLTEyMzgsOCArMTU5MSw4IEBACiB7CiAgICAgcmVnaXN0ZXIgUHlPYmplY3QgKnY7CiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBqOwotICAgIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIG47CisgICAgUHlfc3NpemVfdCBzaXplLCBuLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgYWdhaW46CiAgICAgbiA9IG1wLT5tYV91c2VkOwpAQCAtMTI1MywxMSArMTYwNiwxOSBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIGVwID0gbXAtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBtcC0+bWFfbWFzazsKLSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKGVwW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlOworICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9ICp2YWx1ZV9wdHI7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHYsIGosIHZhbHVlKTsKICAgICAgICAgICAgIGorKzsKQEAgLTEyNzIsOSArMTYzMywxMCBAQAogewogICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICp2OwogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgaiwgbjsKLSAgICBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgUHlPYmplY3QgKml0ZW0sICprZXksICp2YWx1ZTsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBzaXplLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKml0ZW0sICprZXk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgLyogUHJlYWxsb2NhdGUgdGhlIGxpc3Qgb2YgdHVwbGVzLCB0byBhdm9pZCBhbGxvY2F0aW9ucyBkdXJpbmcKICAgICAgKiB0aGUgbG9vcCBvdmVyIHRoZSBpdGVtcywgd2hpY2ggY291bGQgdHJpZ2dlciBHQywgd2hpY2gKQEAgLTEzMDEsMTAgKzE2NjMsMjAgQEAKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9CiAgICAgLyogTm90aGluZyB3ZSBkbyBiZWxvdyBtYWtlcyBhbnkgZnVuY3Rpb24gY2FsbHMuICovCi0gICAgZXAgPSBtcC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IG1wLT5tYV9tYXNrOwotICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDw9IG1hc2s7IGkrKykgewotICAgICAgICBpZiAoKHZhbHVlPWVwW2ldLm1lX3ZhbHVlKSAhPSBOVUxMKSB7CisgICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllczsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmVwWzBdLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSAqdmFsdWVfcHRyOworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOworICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgewogICAgICAgICAgICAga2V5ID0gZXBbaV0ubWVfa2V5OwogICAgICAgICAgICAgaXRlbSA9IFB5TGlzdF9HRVRfSVRFTSh2LCBqKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwpAQCAtMTM0OCw4ICsxNzIwLDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQoc2VxLCAmcG9zLCAma2V5LCAmb2xkdmFsdWUsICZoYXNoKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM3MCw4ICsxNzQwLDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlIChfUHlTZXRfTmV4dEVudHJ5KHNlcSwgJnBvcywgJmtleSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDIzLDcgKzE3OTEsOCBAQAogICAgICAgICByZXN1bHQgPSAtMTsKIAogICAgIGVsc2UgaWYgKGFyZyAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGFyZywgImtleXMiKSkKKyAgICAgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKGFyZywgJlB5SWRfa2V5cykpCiAgICAgICAgICAgICByZXN1bHQgPSBQeURpY3RfTWVyZ2Uoc2VsZiwgYXJnLCAxKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gUHlEaWN0X01lcmdlRnJvbVNlcTIoc2VsZiwgYXJnLCAxKTsKQEAgLTE1MzUsOCArMTkwNCw4IEBACiBQeURpY3RfTWVyZ2UoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCiB7CiAgICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgKm90aGVyOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICBQeURpY3RFbnRyeSAqZW50cnk7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBuOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyeTsKIAogICAgIC8qIFdlIGFjY2VwdCBmb3IgdGhlIGFyZ3VtZW50IGVpdGhlciBhIGNvbmNyZXRlIGRpY3Rpb25hcnkgb2JqZWN0LAogICAgICAqIG9yIGFuIGFic3RyYWN0ICJtYXBwaW5nIiBvYmplY3QuICBGb3IgdGhlIGZvcm1lciwgd2UgY2FuIGRvCkBAIC0xNTYzLDIwICsxOTMyLDIzIEBACiAgICAgICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBpdGVtcy4gIEV4cGVjdAogICAgICAgICAgKiB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gKG9yIGZldykgb3ZlcmxhcHBpbmcga2V5cy4KICAgICAgICAgICovCi0gICAgICAgIGlmICgobXAtPm1hX2ZpbGwgKyBvdGhlci0+bWFfdXNlZCkqMyA+PSAobXAtPm1hX21hc2srMSkqMikgewotICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKjIpICE9IDApCisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlICogMyA8IG90aGVyLT5tYV91c2VkICogMikKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCAobXAtPm1hX3VzZWQgKyBvdGhlci0+bWFfdXNlZCkqMikgIT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYV9tYXNrOyBpKyspIHsKLSAgICAgICAgICAgIGVudHJ5ID0gJm90aGVyLT5tYV90YWJsZVtpXTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+bWVfdmFsdWUgIT0gTlVMTCAmJgorICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShvdGhlci0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgICAgIGVudHJ5ID0gJm90aGVyLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgICAgICAgICAgaWYgKG90aGVyLT5tYV92YWx1ZXMpCisgICAgICAgICAgICAgICAgdmFsdWUgPSBvdGhlci0+bWFfdmFsdWVzW2ldOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhbHVlID0gZW50cnktPm1lX3ZhbHVlOworCisgICAgICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCAmJgogICAgICAgICAgICAgICAgIChvdmVycmlkZSB8fAogICAgICAgICAgICAgICAgICBQeURpY3RfR2V0SXRlbShhLCBlbnRyeS0+bWVfa2V5KSA9PSBOVUxMKSkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihlbnRyeS0+bWVfa2V5KTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZW50cnktPm1lX3ZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwgZW50cnktPm1lX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bWVfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bWVfdmFsdWUpICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpICE9IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTYzOCwxMSArMjAxMCwzNyBAQAogUHlEaWN0X0NvcHkoUHlPYmplY3QgKm8pCiB7CiAgICAgUHlPYmplY3QgKmNvcHk7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAKICAgICBpZiAobyA9PSBOVUxMIHx8ICFQeURpY3RfQ2hlY2sobykpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvOworICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIFB5RGljdE9iamVjdCAqc3BsaXRfY29weTsKKyAgICAgICAgUHlPYmplY3QgKipuZXd2YWx1ZXMgPSBuZXdfdmFsdWVzKERLX1NJWkUobXAtPm1hX2tleXMpKTsKKyAgICAgICAgaWYgKG5ld3ZhbHVlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHNwbGl0X2NvcHkgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOworICAgICAgICBpZiAoc3BsaXRfY29weSA9PSBOVUxMKSB7CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyhuZXd2YWx1ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzID0gbmV3dmFsdWVzOworICAgICAgICBzcGxpdF9jb3B5LT5tYV9rZXlzID0gbXAtPm1hX2tleXM7CisgICAgICAgIHNwbGl0X2NvcHktPm1hX3VzZWQgPSBtcC0+bWFfdXNlZDsKKyAgICAgICAgREtfSU5DUkVGKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICAgICAgUHlfWElOQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBzcGxpdF9jb3B5LT5tYV92YWx1ZXNbaV0gPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQobXApKQorICAgICAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKHNwbGl0X2NvcHkpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc3BsaXRfY29weTsKKyAgICB9CiAgICAgY29weSA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAoY29weSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE3MDQsMTQgKzIxMDIsMTggQEAKICAgICBpZiAoYS0+bWFfdXNlZCAhPSBiLT5tYV91c2VkKQogICAgICAgICAvKiBjYW4ndCBiZSBlcXVhbCBpZiAjIG9mIGVudHJpZXMgZGlmZmVyICovCiAgICAgICAgIHJldHVybiAwOwotCiAgICAgLyogU2FtZSAjIG9mIGVudHJpZXMgLS0gY2hlY2sgYWxsIG9mICdlbS4gIEV4aXQgZWFybHkgb24gYW55IGRpZmYuICovCi0gICAgZm9yIChpID0gMDsgaSA8PSBhLT5tYV9tYXNrOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKmF2YWwgPSBhLT5tYV90YWJsZVtpXS5tZV92YWx1ZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShhLT5tYV9rZXlzKTsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZhLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgICAgICBQeU9iamVjdCAqYXZhbDsKKyAgICAgICAgaWYgKGEtPm1hX3ZhbHVlcykKKyAgICAgICAgICAgIGF2YWwgPSBhLT5tYV92YWx1ZXNbaV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGF2YWwgPSBlcC0+bWVfdmFsdWU7CiAgICAgICAgIGlmIChhdmFsICE9IE5VTEwpIHsKICAgICAgICAgICAgIGludCBjbXA7CiAgICAgICAgICAgICBQeU9iamVjdCAqYnZhbDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBhLT5tYV90YWJsZVtpXS5tZV9rZXk7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIC8qIHRlbXBvcmFyaWx5IGJ1bXAgYXZhbCdzIHJlZmNvdW50IHRvIGVuc3VyZSBpdCBzdGF5cwogICAgICAgICAgICAgICAgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoIGl0ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoYXZhbCk7CkBAIC0xNzMyLDcgKzIxMzQsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAxOwotIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCkBAIC0xNzUzLDI0ICsyMTU1LDI1IEBACiAgICAgICAgIHJlcyA9IFB5X05vdEltcGxlbWVudGVkOwogICAgIFB5X0lOQ1JFRihyZXMpOwogICAgIHJldHVybiByZXM7Ci0gfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9jb250YWlucyhyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGVwLT5tZV92YWx1ZSAhPSBOVUxMKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTc4MCwyOCArMjE4MywyOCBAQAogICAgIFB5T2JqZWN0ICpmYWlsb2JqID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsIDEsIDIsICZrZXksICZmYWlsb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbCA9IGVwLT5tZV92YWx1ZTsKKyAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICBpZiAodmFsID09IE5VTEwpCiAgICAgICAgIHZhbCA9IGZhaWxvYmo7CiAgICAgUHlfSU5DUkVGKHZhbCk7CiAgICAgcmV0dXJuIHZhbDsKIH0KIAotCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9zZXRkZWZhdWx0KHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTgwOSwyNyArMjIxMiw0MCBAQAogICAgIFB5T2JqZWN0ICpmYWlsb2JqID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGRlZmF1bHQiLCAxLCAyLCAma2V5LCAmZmFpbG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSBlcC0+bWVfdmFsdWU7CisgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChkaWN0X3NldF9pdGVtX2J5X2hhc2hfb3JfZW50cnkoKFB5T2JqZWN0KiltcCwga2V5LCBoYXNoLCBlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb2JqKSA9PSAwKQotICAgICAgICAgICAgdmFsID0gZmFpbG9iajsKKyAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgeworICAgICAgICAgICAgLyogTmVlZCB0byByZXNpemUuICovCisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZXAgPSBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICB9CisgICAgICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIGZhaWxvYmopOworICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OworICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgICp2YWx1ZV9hZGRyID0gZmFpbG9iajsKKyAgICAgICAgdmFsID0gZmFpbG9iajsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBtcC0+bWFfdXNlZCsrOwogICAgIH0KLSAgICBQeV9YSU5DUkVGKHZhbCk7CisgICAgUHlfSU5DUkVGKHZhbCk7CiAgICAgcmV0dXJuIHZhbDsKIH0KIApAQCAtMTg0NSw5ICsyMjYxLDEwIEBACiBkaWN0X3BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CiAgICAgUHlPYmplY3QgKmtleSwgKmRlZmx0ID0gTlVMTDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3AiLCAxLCAyLCAma2V5LCAmZGVmbHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4NjAsMTUgKzIyNzcsMTYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgaWYgKG9sZF92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChkZWZsdCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmx0KTsKICAgICAgICAgICAgIHJldHVybiBkZWZsdDsKQEAgLTE4NzYsMTMgKzIyOTQsMTUgQEAKICAgICAgICAgc2V0X2tleV9lcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgb2xkX3ZhbHVlID0gZXAtPm1lX3ZhbHVlOwotICAgIGVwLT5tZV92YWx1ZSA9IE5VTEw7CisgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgUHlfREVDUkVGKG9sZF9rZXkpOworICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOworICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CisgICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKyAgICB9CiAgICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIApAQCAtMTg5MCw5ICsyMzEwLDEwIEBACiBkaWN0X3BvcGl0ZW0oUHlEaWN0T2JqZWN0ICptcCkKIHsKICAgICBQeV9oYXNoX3QgaSA9IDA7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqcmVzOwogCisKICAgICAvKiBBbGxvY2F0ZSB0aGUgcmVzdWx0IHR1cGxlIGJlZm9yZSBjaGVja2luZyB0aGUgc2l6ZS4gIEJlbGlldmUgaXQKICAgICAgKiBvciBub3QsIHRoaXMgYWxsb2NhdGlvbiBjb3VsZCB0cmlnZ2VyIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIHdoaWNoCiAgICAgICogY291bGQgZW1wdHkgdGhlIGRpY3QsIHNvIGlmIHdlIGNoZWNrZWQgdGhlIHNpemUgZmlyc3QgYW5kIHRoYXQKQEAgLTE5MTEsMjUgKzIzMzIsMzQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3BpdGVtKCk6IGRpY3Rpb25hcnkgaXMgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIC8qIENvbnZlcnQgc3BsaXQgdGFibGUgdG8gY29tYmluZWQgdGFibGUgKi8KKyAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdF9zcGxpdCkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKICAgICAvKiBTZXQgZXAgdG8gInRoZSBmaXJzdCIgZGljdCBlbnRyeSB3aXRoIGEgdmFsdWUuICBXZSBhYnVzZSB0aGUgaGFzaAogICAgICAqIGZpZWxkIG9mIHNsb3QgMCB0byBob2xkIGEgc2VhcmNoIGZpbmdlcjoKICAgICAgKiBJZiBzbG90IDAgaGFzIGEgdmFsdWUsIHVzZSBzbG90IDAuCiAgICAgICogRWxzZSBzbG90IDAgaXMgYmVpbmcgdXNlZCB0byBob2xkIGEgc2VhcmNoIGZpbmdlciwKICAgICAgKiBhbmQgd2UgdXNlIGl0cyBoYXNoIHZhbHVlIGFzIHRoZSBmaXJzdCBpbmRleCB0byBsb29rLgogICAgICAqLwotICAgIGVwID0gJm1wLT5tYV90YWJsZVswXTsKKyAgICBlcCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKICAgICBpZiAoZXAtPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlfc3NpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CiAgICAgICAgIGkgPSBlcC0+bWVfaGFzaDsKICAgICAgICAgLyogVGhlIGhhc2ggZmllbGQgbWF5IGJlIGEgcmVhbCBoYXNoIHZhbHVlLCBvciBpdCBtYXkgYmUgYQogICAgICAgICAgKiBsZWdpdCBzZWFyY2ggZmluZ2VyLCBvciBpdCBtYXkgYmUgYSBvbmNlLWxlZ2l0IHNlYXJjaAogICAgICAgICAgKiBmaW5nZXIgdGhhdCdzIG91dCBvZiBib3VuZHMgbm93IGJlY2F1c2UgaXQgd3JhcHBlZCBhcm91bmQKICAgICAgICAgICogb3IgdGhlIHRhYmxlIHNocnVuayAtLSBzaW1wbHkgbWFrZSBzdXJlIGl0J3MgaW4gYm91bmRzIG5vdy4KICAgICAgICAgICovCi0gICAgICAgIGlmIChpID4gbXAtPm1hX21hc2sgfHwgaSA8IDEpCisgICAgICAgIGlmIChpID4gbWFzayB8fCBpIDwgMSkKICAgICAgICAgICAgIGkgPSAxOyAgICAgICAgICAgICAgLyogc2tpcCBzbG90IDAgKi8KLSAgICAgICAgd2hpbGUgKChlcCA9ICZtcC0+bWFfdGFibGVbaV0pLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0pLT5tZV92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBpZiAoaSA+IG1wLT5tYV9tYXNrKQorICAgICAgICAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICB9CiAgICAgfQpAQCAtMTkzOSwyMSArMjM2OSwzNCBAQAogICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKICAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgYXNzZXJ0KG1wLT5tYV90YWJsZVswXS5tZV92YWx1ZSA9PSBOVUxMKTsKLSAgICBtcC0+bWFfdGFibGVbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLworICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXS5tZV92YWx1ZSA9PSBOVUxMKTsKKyAgICBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXS5tZV9oYXNoID0gaSArIDE7ICAvKiBuZXh0IHBsYWNlIHRvIHN0YXJ0ICovCiAgICAgcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIGludAogZGljdF90cmF2ZXJzZShQeU9iamVjdCAqb3AsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFB5X3NzaXplX3QgaSA9IDA7Ci0gICAgUHlPYmplY3QgKnBrOwotICAgIFB5T2JqZWN0ICpwdjsKLQotICAgIHdoaWxlIChQeURpY3RfTmV4dChvcCwgJmksICZwaywgJnB2KSkgewotICAgICAgICBQeV9WSVNJVChwayk7Ci0gICAgICAgIFB5X1ZJU0lUKHB2KTsKKyAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKKyAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShtcC0+bWFfa2V5cyk7IGkrKykgeworICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV92YWx1ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtMTk3MCwxNCArMjQxMywyNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3Rfc2l6ZW9mKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfc3NpemVfdCByZXM7CisgICAgUHlfc3NpemVfdCBzaXplLCByZXM7CiAKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CiAgICAgcmVzID0gc2l6ZW9mKFB5RGljdE9iamVjdCk7Ci0gICAgaWYgKG1wLT5tYV90YWJsZSAhPSBtcC0+bWFfc21hbGx0YWJsZSkKLSAgICAgICAgcmVzID0gcmVzICsgKG1wLT5tYV9tYXNrICsgMSkgKiBzaXplb2YoUHlEaWN0RW50cnkpOworICAgIGlmIChtcC0+bWFfdmFsdWVzKQorICAgICAgICByZXMgKz0gc2l6ZSAqIHNpemVvZihQeU9iamVjdCopOworICAgIC8qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIHNwbGl0LCB0aGUga2V5cyBwb3J0aW9uIGlzIGFjY291bnRlZC1mb3IKKyAgICAgICBpbiB0aGUgdHlwZSBvYmplY3QuICovCisgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSkKKyAgICAgICAgcmVzICs9IHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChzaXplLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKK1B5X3NzaXplX3QKK19QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKK3sKKyAgICByZXR1cm4gc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsgKERLX1NJWkUoa2V5cyktMSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworfQorCiBQeURvY19TVFJWQVIoY29udGFpbnNfX2RvY19fLAogIkQuX19jb250YWluc19fKGspIC0+IFRydWUgaWYgRCBoYXMgYSBrZXkgaywgZWxzZSBGYWxzZSIpOwogCkBAIC0yMDY2LDE2ICsyNTIwLDE3IEBACiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKLSAgICByZXR1cm4gZXAgPT0gTlVMTCA/IC0xIDogKGVwLT5tZV92YWx1ZSAhPSBOVUxMKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgcmV0dXJuIChlcCA9PSBOVUxMKSA/IC0xIDogKCp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9Db250YWlucyB1c2VkIHdoZW4gdGhlIGhhc2ggdmFsdWUgaXMgYWxyZWFkeSBrbm93biAqLwpAQCAtMjA4MywxMCArMjUzOCwxMSBAQAogX1B5RGljdF9Db250YWlucyhQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKLSAgICByZXR1cm4gZXAgPT0gTlVMTCA/IC0xIDogKGVwLT5tZV92YWx1ZSAhPSBOVUxMKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgcmV0dXJuIChlcCA9PSBOVUxMKSA/IC0xIDogKCp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBIYWNrIHRvIGltcGxlbWVudCAia2V5IGluIGRpY3QiICovCkBAIC0yMTEyLDIyICsyNTY4LDE3IEBACiAgICAgc2VsZiA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgUHlEaWN0T2JqZWN0ICpkID0gKFB5RGljdE9iamVjdCAqKXNlbGY7Ci0gICAgICAgIC8qIEl0J3MgZ3VhcmFudGVlZCB0aGF0IHRwLT5hbGxvYyB6ZXJvZWQgb3V0IHRoZSBzdHJ1Y3QuICovCi0gICAgICAgIGFzc2VydChkLT5tYV90YWJsZSA9PSBOVUxMICYmIGQtPm1hX2ZpbGwgPT0gMCAmJiBkLT5tYV91c2VkID09IDApOwotICAgICAgICBJTklUX05PTlpFUk9fRElDVF9TTE9UUyhkKTsKLSAgICAgICAgZC0+bWFfbG9va3VwID0gbG9va2RpY3RfdW5pY29kZTsKKyAgICAgICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgICAgIC8qIFhYWCAtIFNob3VsZCB3ZSByYWlzZSBhIG5vLW1lbW9yeSBlcnJvcj8gKi8KKyAgICAgICAgaWYgKGQtPm1hX2tleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgREtfSU5DUkVGKFB5X0VNUFRZX0tFWVMpOworICAgICAgICAgICAgZC0+bWFfa2V5cyA9IFB5X0VNUFRZX0tFWVM7CisgICAgICAgICAgICBkLT5tYV92YWx1ZXMgPSBlbXB0eV92YWx1ZXM7CisgICAgICAgIH0KKyAgICAgICAgZC0+bWFfdXNlZCA9IDA7CiAgICAgICAgIC8qIFRoZSBvYmplY3QgaGFzIGJlZW4gaW1wbGljaXRseSB0cmFja2VkIGJ5IHRwX2FsbG9jICovCiAgICAgICAgIGlmICh0eXBlID09ICZQeURpY3RfVHlwZSkKICAgICAgICAgICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGQpOwotI2lmZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLSAgICAgICAgKytjcmVhdGVkOwotI2VuZGlmCi0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQoZCkpCi0gICAgICAgICAgICBjb3VudF90cmFja2VkKys7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvdW50X3VudHJhY2tlZCsrOwotI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMjE5OCw2ICsyNjQ5LDE2IEBACiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCitQeU9iamVjdCAqCitfUHlEaWN0X0dldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KQoreworICAgIFB5T2JqZWN0ICprdjsKKyAgICBrdiA9IF9QeVVuaWNvZGVfRnJvbUlkKGtleSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKGt2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeURpY3RfR2V0SXRlbShkcCwga3YpOworfQorCiAvKiBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBkaWN0aW9uYXJ5IGludGVyZmFjZSAqLwogCiBQeU9iamVjdCAqCkBAIC0yMjEzLDYgKzI2NzQsMTYgQEAKIH0KIAogaW50CitfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqdiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXksIFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICprdjsKKyAgICBrdiA9IF9QeVVuaWNvZGVfRnJvbUlkKGtleSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKGt2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gUHlEaWN0X1NldEl0ZW0odiwga3YsIGl0ZW0pOworfQorCitpbnQKIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICp2LCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKQogewogICAgIFB5T2JqZWN0ICprdjsKQEAgLTIzMDMsMTggKzI3NzQsMjYgQEAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsCiAgICAgICAgICAgICAgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorZGljdGl0ZXJfcmVkdWNlKGRpY3RpdGVyb2JqZWN0ICpkaSk7CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIGRpY3RpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilkaWN0aXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZGljdGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRrZXkoZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICByZWdpc3RlciBQeURpY3RLZXlzT2JqZWN0ICprOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzMwLDE1ICsyODA5LDI1IEBACiAgICAgaSA9IGRpLT5kaV9wb3M7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgZXAgPSBkLT5tYV90YWJsZTsKLSAgICBtYXNrID0gZC0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCisgICAgayA9IGQtPm1hX2tleXM7CisgICAgaWYgKGQtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmay0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgbWFzayA9IERLX1NJWkUoayktMTsKKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgICAgICBpKys7CisgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgZGktPmxlbi0tOwotICAgIGtleSA9IGVwW2ldLm1lX2tleTsKKyAgICBrZXkgPSBrLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICByZXR1cm4ga2V5OwogCkBAIC0yMzg0LDkgKzI4NzMsOSBAQAogc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dHZhbHVlKGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQwMCwxNyArMjg4OSwyNiBAQAogICAgIH0KIAogICAgIGkgPSBkaS0+ZGlfcG9zOwotICAgIG1hc2sgPSBkLT5tYV9tYXNrOworICAgIG1hc2sgPSBES19TSVpFKGQtPm1hX2tleXMpLTE7CiAgICAgaWYgKGkgPCAwIHx8IGkgPiBtYXNrKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgZXAgPSBkLT5tYV90YWJsZTsKLSAgICB3aGlsZSAoKHZhbHVlPWVwW2ldLm1lX3ZhbHVlKSA9PSBOVUxMKSB7CisgICAgaWYgKGQtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaSA+IG1hc2spCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgZGktPmxlbi0tOworICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIApAQCAtMjQ1Niw5ICsyOTU0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRpdGVtKGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpyZXN1bHQgPSBkaS0+ZGlfcmVzdWx0OwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NzQsMTAgKzI5NzIsMTkgQEAKICAgICBpID0gZGktPmRpX3BvczsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICBlcCA9IGQtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBkLT5tYV9tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgZXBbaV0ubWVfdmFsdWUgPT0gTlVMTCkKKyAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOworICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgICAgIGkrKzsKKyAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKICAgICBpZiAoaSA+IG1hc2spCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTI0OTIsOCArMjk5OSw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZGktPmxlbi0tOwotICAgIGtleSA9IGVwW2ldLm1lX2tleTsKLSAgICB2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlOworICAgIGtleSA9IGQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OworICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOwpAQCAtMjU0MCw2ICszMDQ3LDUyIEBACiB9OwogCiAKK3N0YXRpYyBQeU9iamVjdCAqCitkaWN0aXRlcl9yZWR1Y2UoZGljdGl0ZXJvYmplY3QgKmRpKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIGRpY3RpdGVyb2JqZWN0IHRtcDsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBjb3B5IHRoZSBpdGVydG9yIHN0YXRlICovCisgICAgdG1wID0gKmRpOworICAgIFB5X1hJTkNSRUYodG1wLmRpX2RpY3QpOworCisgICAgLyogaXRlcmF0ZSB0aGUgdGVtcG9yYXJ5IGludG8gYSBsaXN0ICovCisgICAgZm9yKDs7KSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gMDsKKyAgICAgICAgaWYgKFB5X1RZUEUoZGkpID09ICZQeURpY3RJdGVySXRlbV9UeXBlKQorICAgICAgICAgICAgZWxlbWVudCA9IGRpY3RpdGVyX2l0ZXJuZXh0aXRlbSgmdG1wKTsKKyAgICAgICAgZWxzZSBpZiAoUHlfVFlQRShkaSkgPT0gJlB5RGljdEl0ZXJLZXlfVHlwZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkaWN0aXRlcl9pdGVybmV4dGtleSgmdG1wKTsKKyAgICAgICAgZWxzZSBpZiAoUHlfVFlQRShkaSkgPT0gJlB5RGljdEl0ZXJWYWx1ZV9UeXBlKQorICAgICAgICAgICAgZWxlbWVudCA9IGRpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoJnRtcCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcC5kaV9kaWN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgUHlfWERFQ1JFRih0bXAuZGlfZGljdCk7CisgICAgLyogY2hlY2sgZm9yIGVycm9yICovCisgICAgaWYgKHRtcC5kaV9kaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgLyogd2UgaGF2ZSBhbiBlcnJvciAqLworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBWaWV3IG9iamVjdHMgZm9yIGtleXMoKSwgaXRlbXMoKSwgdmFsdWVzKCkuICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0yNjQ0LDEwICszMTk3LDggQEAKICAgICBhc3NlcnQoUHlEaWN0Vmlld1NldF9DaGVjayhzZWxmKSk7CiAgICAgYXNzZXJ0KG90aGVyICE9IE5VTEwpOwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikgJiYgIVB5RGljdFZpZXdTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikgJiYgIVB5RGljdFZpZXdTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICBsZW5fc2VsZiA9IFB5T2JqZWN0X1NpemUoc2VsZik7CiAgICAgaWYgKGxlbl9zZWxmIDwgMCkKQEAgLTI3NDUsMTAgKzMyOTYsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTZXRfTmV3KHNlbGYpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoZGlmZmVyZW5jZV91cGRhdGUpOworCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiZGlmZmVyZW5jZV91cGRhdGUiLCAiTyIsIG90aGVyKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfZGlmZmVyZW5jZV91cGRhdGUsICJPIiwgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzYzLDEwICszMzE2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKGludGVyc2VjdGlvbl91cGRhdGUpOworCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiaW50ZXJzZWN0aW9uX3VwZGF0ZSIsICJPIiwgb3RoZXIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9pbnRlcnNlY3Rpb25fdXBkYXRlLCAiTyIsIG90aGVyKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjc4MSwxMCArMzMzNiwxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVNldF9OZXcoc2VsZik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUih1cGRhdGUpOworCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAidXBkYXRlIiwgIk8iLCBvdGhlcik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX3VwZGF0ZSwgIk8iLCBvdGhlcik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3OTksMTAgKzMzNTYsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTZXRfTmV3KHNlbGYpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgInN5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZSIsICJPIiwKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlLCAiTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtMzA4MSwzICszNjQwLDE1MSBAQAogewogICAgIHJldHVybiBkaWN0dmlld19uZXcoZGljdCwgJlB5RGljdFZhbHVlc19UeXBlKTsKIH0KKworLyogUmV0dXJucyBOVUxMIGlmIGNhbm5vdCBhbGxvY2F0ZSBhIG5ldyBQeURpY3RLZXlzT2JqZWN0LAorICAgYnV0IGRvZXMgbm90IHNldCBhbiBlcnJvciAqLworUHlEaWN0S2V5c09iamVjdCAqCitfUHlEaWN0X05ld0tleXNGb3JDbGFzcyh2b2lkKQoreworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfU1BMSVQpOworICAgIGlmIChrZXlzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBrZXlzLT5ka19sb29rdXAgPSBsb29rZGljdF9zcGxpdDsKKyAgICByZXR1cm4ga2V5czsKK30KKworI2RlZmluZSBDQUNIRURfS0VZUyh0cCkgKCgoUHlIZWFwVHlwZU9iamVjdCopdHApLT5odF9jYWNoZWRfa2V5cykKKworUHlPYmplY3QgKgorUHlPYmplY3RfR2VuZXJpY0dldERpY3QoUHlPYmplY3QgKm9iaiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGRpY3QgPSAqZGljdHB0cjsKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5VHlwZU9iamVjdCAqdHAgPSBQeV9UWVBFKG9iaik7CisgICAgICAgIGlmICgodHAtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgJiYgQ0FDSEVEX0tFWVModHApKSB7CisgICAgICAgICAgICBES19JTkNSRUYoQ0FDSEVEX0tFWVModHApKTsKKyAgICAgICAgICAgICpkaWN0cHRyID0gZGljdCA9IG5ld19kaWN0X3dpdGhfc2hhcmVkX2tleXMoQ0FDSEVEX0tFWVModHApKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICpkaWN0cHRyID0gZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9YSU5DUkVGKGRpY3QpOworICAgIHJldHVybiBkaWN0OworfQorCitpbnQKK19QeU9iamVjdERpY3RfU2V0SXRlbShQeVR5cGVPYmplY3QgKnRwLCBQeU9iamVjdCAqKmRpY3RwdHIsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlPYmplY3QgKmRpY3Q7CisgICAgaW50IHJlczsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpjYWNoZWQ7CisKKyAgICBhc3NlcnQoZGljdHB0ciAhPSBOVUxMKTsKKyAgICBpZiAoKHRwLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpICYmIChjYWNoZWQgPSBDQUNIRURfS0VZUyh0cCkpKSB7CisgICAgICAgIGFzc2VydChkaWN0cHRyICE9IE5VTEwpOworICAgICAgICBkaWN0ID0gKmRpY3RwdHI7CisgICAgICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIERLX0lOQ1JFRihjYWNoZWQpOworICAgICAgICAgICAgZGljdCA9IG5ld19kaWN0X3dpdGhfc2hhcmVkX2tleXMoY2FjaGVkKTsKKyAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgKmRpY3RwdHIgPSBkaWN0OworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBrZXkpOworICAgICAgICAgICAgaWYgKGNhY2hlZCAhPSAoKFB5RGljdE9iamVjdCAqKWRpY3QpLT5tYV9rZXlzKSB7CisgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gTlVMTDsKKyAgICAgICAgICAgICAgICBES19ERUNSRUYoY2FjaGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKGRpY3QsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGNhY2hlZCAhPSAoKFB5RGljdE9iamVjdCAqKWRpY3QpLT5tYV9rZXlzKSB7CisgICAgICAgICAgICAgICAgLyogRWl0aGVyIHVwZGF0ZSB0cC0+aHRfY2FjaGVkX2tleXMgb3IgZGVsZXRlIGl0ICovCisgICAgICAgICAgICAgICAgaWYgKGNhY2hlZC0+ZGtfcmVmY250ID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gbWFrZV9rZXlzX3NoYXJlZChkaWN0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBDQUNIRURfS0VZUyh0cCkgPSBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBES19ERUNSRUYoY2FjaGVkKTsKKyAgICAgICAgICAgICAgICBpZiAoQ0FDSEVEX0tFWVModHApID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGljdCA9ICpkaWN0cHRyOworICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3Q7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcyA9IFB5RGljdF9EZWxJdGVtKGRpY3QsIGtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBrZXksIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCit2b2lkCitfUHlEaWN0S2V5c19EZWNSZWYoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKK3sKKyAgICBES19ERUNSRUYoa2V5cyk7Cit9CisKKworLyogQVJHU1VTRUQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkdW1teV9yZXByKFB5T2JqZWN0ICpvcCkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxkdW1teSBrZXk+Iik7Cit9CisKKy8qIEFSR1VTRUQgKi8KK3N0YXRpYyB2b2lkCitkdW1teV9kZWFsbG9jKFB5T2JqZWN0KiBpZ25vcmUpCit7CisgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgZ2V0IGNhbGxlZCwgYnV0IHdlIGFsc28gZG9uJ3Qgd2FudCB0byBTRUdWIGlmCisgICAgICogd2UgYWNjaWRlbnRhbGx5IGRlY3JlZiBkdW1teS1rZXkgb3V0IG9mIGV4aXN0ZW5jZS4KKyAgICAgKi8KKyAgICBQeV9GYXRhbEVycm9yKCJkZWFsbG9jYXRpbmcgPGR1bW15IGtleT4iKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCBQeURpY3REdW1teV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIjxkdW1teSBrZXk+IHR5cGUiLAorICAgIDAsCisgICAgMCwKKyAgICBkdW1teV9kZWFsbG9jLCAgICAgIC8qdHBfZGVhbGxvYyovIC8qbmV2ZXIgY2FsbGVkKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KKyAgICBkdW1teV9yZXByLCAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCit9OworCitzdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdCA9IHsKKyAgX1B5T2JqZWN0X0VYVFJBX0lOSVQKKyAgMiwgJlB5RGljdER1bW15X1R5cGUKK307CisKZGlmZiAtLWdpdCBhL09iamVjdHMvZW51bW9iamVjdC5jIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKaW5kZXggMDBhMzM0Ni4uYzQ1OGNmZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9lbnVtb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKQEAgLTE1OCw2ICsxNTgsMjIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZW51bV9yZWR1Y2UoZW51bW9iamVjdCAqZW4pCit7CisgICAgaWYgKGVuLT5lbl9sb25naW5kZXggIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShlbiksIGVuLT5lbl9zaXQsIGVuLT5lbl9sb25naW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShlbiksIGVuLT5lbl9zaXQsIGVuLT5lbl9pbmRleCk7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworc3RhdGljIFB5TWV0aG9kRGVmIGVudW1fbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbillbnVtX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZW51bV9kb2MsCiAiZW51bWVyYXRlKGl0ZXJhYmxlWywgc3RhcnRdKSAtPiBpdGVyYXRvciBmb3IgaW5kZXgsIHZhbHVlIG9mIGl0ZXJhYmxlXG4iCiAiXG4iCkBAIC0xOTcsNyArMjEzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZW51bV9uZXh0LCAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBlbnVtX21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjI0LDggKzI0MCw4IEBACiB7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIFB5T2JqZWN0ICpzZXEsICpyZXZlcnNlZF9tZXRoOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcmV2ZXJzZWRfY2FjaGUgPSBOVUxMOwogICAgIHJldmVyc2Vkb2JqZWN0ICpybzsKKyAgICBfUHlfSURFTlRJRklFUihfX3JldmVyc2VkX18pOwogCiAgICAgaWYgKHR5cGUgPT0gJlB5UmV2ZXJzZWRfVHlwZSAmJiAhX1B5QXJnX05vS2V5d29yZHMoInJldmVyc2VkKCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzMsNyArMjQ5LDcgQEAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZXZlcnNlZCIsIDEsIDEsICZzZXEpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXZlcnNlZF9tZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoc2VxLCAiX19yZXZlcnNlZF9fIiwgJnJldmVyc2VkX2NhY2hlKTsKKyAgICByZXZlcnNlZF9tZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoc2VxLCAmUHlJZF9fX3JldmVyc2VkX18pOwogICAgIGlmIChyZXZlcnNlZF9tZXRoICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocmV2ZXJzZWRfbWV0aCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXZlcnNlZF9tZXRoKTsKQEAgLTMxOSw4ICszMzUsNDAgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorcmV2ZXJzZWRfcmVkdWNlKHJldmVyc2Vkb2JqZWN0ICpybykKK3sKKyAgICBpZiAocm8tPnNlcSkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTyluIiwgUHlfVFlQRShybyksIHJvLT5zZXEsIHJvLT5pbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKSkiLCBQeV9UWVBFKHJvKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityZXZlcnNlZF9zZXRzdGF0ZShyZXZlcnNlZG9iamVjdCAqcm8sIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChyby0+c2VxICE9IDApIHsKKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlTZXF1ZW5jZV9TaXplKHJvLT5zZXEpOworICAgICAgICBpZiAobiA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKGluZGV4IDwgLTEpCisgICAgICAgICAgICBpbmRleCA9IC0xOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4tMSkKKyAgICAgICAgICAgIGluZGV4ID0gbi0xOworICAgICAgICByby0+aW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiByZXZlcnNlZGl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXJldmVyc2VkX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXJldmVyc2VkX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXJldmVyc2VkX3NldHN0YXRlLCBNRVRIX08sIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZXhjZXB0aW9ucy5jIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKaW5kZXggOWRhYTEyYS4uNmIwNDcwMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9leGNlcHRpb25zLmMKKysrIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKQEAgLTEwLDYgKzEwLDIwIEBACiAjaW5jbHVkZSAib3NkZWZzLmgiCiAKIAorLyogQ29tcGF0aWJpbGl0eSBhbGlhc2VzICovCitQeU9iamVjdCAqUHlFeGNfRW52aXJvbm1lbnRFcnJvciA9IE5VTEw7CitQeU9iamVjdCAqUHlFeGNfSU9FcnJvciA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworUHlPYmplY3QgKlB5RXhjX1dpbmRvd3NFcnJvciA9IE5VTEw7CisjZW5kaWYKKyNpZmRlZiBfX1ZNUworUHlPYmplY3QgKlB5RXhjX1ZNU0Vycm9yID0gTlVMTDsKKyNlbmRpZgorCisvKiBUaGUgZGljdCBtYXAgZnJvbSBlcnJubyBjb2RlcyB0byBPU0Vycm9yIHN1YmNsYXNzZXMgKi8KK3N0YXRpYyBQeU9iamVjdCAqZXJybm9tYXAgPSBOVUxMOworCisKIC8qIE5PVEU6IElmIHRoZSBleGNlcHRpb24gY2xhc3MgaGllcmFyY2h5IGNoYW5nZXMsIGRvbid0IGZvcmdldCB0byB1cGRhdGUKICAqIExpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CiAgKi8KQEAgLTI4LDYgKzQyLDEzIEBACiAgICAgLyogdGhlIGRpY3QgaXMgY3JlYXRlZCBvbiB0aGUgZmx5IGluIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyICovCiAgICAgc2VsZi0+ZGljdCA9IE5VTEw7CiAgICAgc2VsZi0+dHJhY2ViYWNrID0gc2VsZi0+Y2F1c2UgPSBzZWxmLT5jb250ZXh0ID0gTlVMTDsKKyAgICBzZWxmLT5zdXBwcmVzc19jb250ZXh0ID0gMDsKKworICAgIGlmIChhcmdzKSB7CisgICAgICAgIHNlbGYtPmFyZ3MgPSBhcmdzOworICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgIH0KIAogICAgIHNlbGYtPmFyZ3MgPSBQeVR1cGxlX05ldygwKTsKICAgICBpZiAoIXNlbGYtPmFyZ3MpIHsKQEAgLTQxLDEyICs2MiwxNSBAQAogc3RhdGljIGludAogQmFzZUV4Y2VwdGlvbl9pbml0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIFB5T2JqZWN0ICp0bXA7CisKICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIGt3ZHMpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBQeV9ERUNSRUYoc2VsZi0+YXJncyk7CisgICAgdG1wID0gc2VsZi0+YXJnczsKICAgICBzZWxmLT5hcmdzID0gYXJnczsKICAgICBQeV9JTkNSRUYoc2VsZi0+YXJncyk7CisgICAgUHlfWERFQ1JFRih0bXApOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xNjMsMzYgKzE4Nyw2IEBACiAgICB7TlVMTCwgTlVMTCwgMCwgTlVMTH0sCiB9OwogCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1CYXNlRXhjZXB0aW9uX2dldF9kaWN0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+ZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIHNlbGYtPmRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmICghc2VsZi0+ZGljdCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZi0+ZGljdCk7Ci0gICAgcmV0dXJuIHNlbGYtPmRpY3Q7Ci19Ci0KLXN0YXRpYyBpbnQKLUJhc2VFeGNlcHRpb25fc2V0X2RpY3QoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsKQotewotICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19kaWN0X18gbWF5IG5vdCBiZSBkZWxldGVkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19kaWN0X18gbXVzdCBiZSBhIGRpY3Rpb25hcnkiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKLSAgICBQeV9JTkNSRUYodmFsKTsKLSAgICBzZWxmLT5kaWN0ID0gdmFsOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogQmFzZUV4Y2VwdGlvbl9nZXRfYXJncyhQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYpCiB7CkBAIC0zMDYsNyArMzAwLDcgQEAKIAogCiBzdGF0aWMgUHlHZXRTZXREZWYgQmFzZUV4Y2VwdGlvbl9nZXRzZXRbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilCYXNlRXhjZXB0aW9uX2dldF9kaWN0LCAoc2V0dGVyKUJhc2VFeGNlcHRpb25fc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHsiYXJncyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfYXJncywgKHNldHRlcilCYXNlRXhjZXB0aW9uX3NldF9hcmdzfSwKICAgICB7Il9fdHJhY2ViYWNrX18iLCAoZ2V0dGVyKUJhc2VFeGNlcHRpb25fZ2V0X3RiLCAoc2V0dGVyKUJhc2VFeGNlcHRpb25fc2V0X3RifSwKICAgICB7Il9fY29udGV4dF9fIiwgKGdldHRlcilCYXNlRXhjZXB0aW9uX2dldF9jb250ZXh0LApAQCAtMzQyLDYgKzMzNiw3IEBACiBQeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNhdXNlKSB7CiAgICAgUHlPYmplY3QgKm9sZF9jYXVzZSA9ICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlOwogICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlID0gY2F1c2U7CisgICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+c3VwcHJlc3NfY29udGV4dCA9IDE7CiAgICAgUHlfWERFQ1JFRihvbGRfY2F1c2UpOwogfQogCkBAIC0zNjEsNiArMzU2LDEzIEBACiB9CiAKIAorc3RhdGljIHN0cnVjdCBQeU1lbWJlckRlZiBCYXNlRXhjZXB0aW9uX21lbWJlcnNbXSA9IHsKKyAgICB7Il9fc3VwcHJlc3NfY29udGV4dF9fIiwgVF9CT09MLAorICAgICBvZmZzZXRvZihQeUJhc2VFeGNlcHRpb25PYmplY3QsIHN1cHByZXNzX2NvbnRleHQpfSwKKyAgICB7TlVMTH0KK307CisKKwogc3RhdGljIFB5VHlwZU9iamVjdCBfUHlFeGNfQmFzZUV4Y2VwdGlvbiA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiQmFzZUV4Y2VwdGlvbiIsIC8qdHBfbmFtZSovCkBAIC0zOTEsNyArMzkzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIEJhc2VFeGNlcHRpb25fbWV0aG9kcywgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBCYXNlRXhjZXB0aW9uX21lbWJlcnMsICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIEJhc2VFeGNlcHRpb25fZ2V0c2V0LCAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCkBAIC00MzYsMTEgKzQzOCwxMyBAQAogICAgIFB5RG9jX1NUUihFWENET0MpLCAodHJhdmVyc2Vwcm9jKUVYQ1NUT1JFICMjIF90cmF2ZXJzZSwgXAogICAgIChpbnF1aXJ5KUVYQ1NUT1JFICMjIF9jbGVhciwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgJl8gIyMgRVhDQkFTRSwgXAogICAgIDAsIDAsIDAsIG9mZnNldG9mKFB5ICMjIEVYQ1NUT1JFICMjIE9iamVjdCwgZGljdCksIFwKLSAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIEJhc2VFeGNlcHRpb25fbmV3LFwKKyAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIDAsIFwKIH07IFwKIFB5T2JqZWN0ICpQeUV4Y18gIyMgRVhDTkFNRSA9IChQeU9iamVjdCAqKSZfUHlFeGNfICMjIEVYQ05BTUUKIAotI2RlZmluZSBDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihFWENCQVNFLCBFWENOQU1FLCBFWENTVE9SRSwgRVhDREVBTExPQywgRVhDTUVUSE9EUywgRVhDTUVNQkVSUywgRVhDU1RSLCBFWENET0MpIFwKKyNkZWZpbmUgQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oRVhDQkFTRSwgRVhDTkFNRSwgRVhDU1RPUkUsIEVYQ05FVywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENNRVRIT0RTLCBFWENNRU1CRVJTLCBFWENHRVRTRVQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDU1RSLCBFWENET0MpIFwKIHN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjXyAjIyBFWENOQU1FID0geyBcCiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApIFwKICAgICAjIEVYQ05BTUUsIFwKQEAgLTQ1MCw5ICs0NTQsOSBAQAogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIFwKICAgICBQeURvY19TVFIoRVhDRE9DKSwgKHRyYXZlcnNlcHJvYylFWENTVE9SRSAjIyBfdHJhdmVyc2UsIFwKICAgICAoaW5xdWlyeSlFWENTVE9SRSAjIyBfY2xlYXIsIDAsIDAsIDAsIDAsIEVYQ01FVEhPRFMsIFwKLSAgICBFWENNRU1CRVJTLCAwLCAmXyAjIyBFWENCQVNFLCBcCisgICAgRVhDTUVNQkVSUywgRVhDR0VUU0VULCAmXyAjIyBFWENCQVNFLCBcCiAgICAgMCwgMCwgMCwgb2Zmc2V0b2YoUHkgIyMgRVhDU1RPUkUgIyMgT2JqZWN0LCBkaWN0KSwgXAotICAgIChpbml0cHJvYylFWENTVE9SRSAjIyBfaW5pdCwgMCwgQmFzZUV4Y2VwdGlvbl9uZXcsXAorICAgIChpbml0cHJvYylFWENTVE9SRSAjIyBfaW5pdCwgMCwgRVhDTkVXLFwKIH07IFwKIFB5T2JqZWN0ICpQeUV4Y18gIyMgRVhDTkFNRSA9IChQeU9iamVjdCAqKSZfUHlFeGNfICMjIEVYQ05BTUUKIApAQCAtNDc0LDggKzQ3OCw2NCBAQAogLyoKICAqICAgIFN0b3BJdGVyYXRpb24gZXh0ZW5kcyBFeGNlcHRpb24KICAqLwotU2ltcGxlRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIFN0b3BJdGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICJTaWduYWwgdGhlIGVuZCBmcm9tIGl0ZXJhdG9yLl9fbmV4dF9fKCkuIik7CisKK3N0YXRpYyBQeU1lbWJlckRlZiBTdG9wSXRlcmF0aW9uX21lbWJlcnNbXSA9IHsKKyAgICB7InZhbHVlIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5U3RvcEl0ZXJhdGlvbk9iamVjdCwgdmFsdWUpLCAwLAorICAgICAgICBQeURvY19TVFIoImdlbmVyYXRvciByZXR1cm4gdmFsdWUiKX0sCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIGludAorU3RvcEl0ZXJhdGlvbl9pbml0KFB5U3RvcEl0ZXJhdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgaWYgKEJhc2VFeGNlcHRpb25faW5pdCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeV9DTEVBUihzZWxmLT52YWx1ZSk7CisgICAgaWYgKHNpemUgPiAwKQorICAgICAgICB2YWx1ZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT52YWx1ZSA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitTdG9wSXRlcmF0aW9uX2NsZWFyKFB5U3RvcEl0ZXJhdGlvbk9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT52YWx1ZSk7CisgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fY2xlYXIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgdm9pZAorU3RvcEl0ZXJhdGlvbl9kZWFsbG9jKFB5U3RvcEl0ZXJhdGlvbk9iamVjdCAqc2VsZikKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICBTdG9wSXRlcmF0aW9uX2NsZWFyKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK1N0b3BJdGVyYXRpb25fdHJhdmVyc2UoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT52YWx1ZSk7CisgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fdHJhdmVyc2UoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIHZpc2l0LCBhcmcpOworfQorCitDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbigKKyAgICBQeUV4Y19FeGNlcHRpb24sICAgICAgIC8qIGJhc2UgKi8KKyAgICBTdG9wSXRlcmF0aW9uLCAgICAgICAgIC8qIG5hbWUgKi8KKyAgICBTdG9wSXRlcmF0aW9uLCAgICAgICAgIC8qIHByZWZpeCBmb3IgKl9pbml0LCBldGMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIG5ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogbWV0aG9kcyAqLworICAgIFN0b3BJdGVyYXRpb25fbWVtYmVycywgLyogbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBzdHIgKi8KKyAgICAiU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX25leHRfXygpLiIKKyk7CiAKIAogLyoKQEAgLTUwMiw3ICs1NjIsNyBAQAogICAgIFB5X0NMRUFSKHNlbGYtPmNvZGUpOwogICAgIGlmIChzaXplID09IDEpCiAgICAgICAgIHNlbGYtPmNvZGUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwotICAgIGVsc2UgaWYgKHNpemUgPiAxKQorICAgIGVsc2UgLyogc2l6ZSA+IDEgKi8KICAgICAgICAgc2VsZi0+Y29kZSA9IGFyZ3M7CiAgICAgUHlfSU5DUkVGKHNlbGYtPmNvZGUpOwogICAgIHJldHVybiAwOwpAQCAtNTM3LDcgKzU5Nyw3IEBACiB9OwogCiBDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19CYXNlRXhjZXB0aW9uLCBTeXN0ZW1FeGl0LCBTeXN0ZW1FeGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtRXhpdF9kZWFsbG9jLCAwLCBTeXN0ZW1FeGl0X21lbWJlcnMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBTeXN0ZW1FeGl0X21lbWJlcnMsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWVzdCB0byBleGl0IGZyb20gdGhlIGludGVycHJldGVyLiIpOwogCiAvKgpAQCAtNTUwLDEyOSArNjEwLDQ0MSBAQAogLyoKICAqICAgIEltcG9ydEVycm9yIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KLVNpbXBsZUV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBJbXBvcnRFcnJvciwKLSAgICAgICAgICAiSW1wb3J0IGNhbid0IGZpbmQgbW9kdWxlLCBvciBjYW4ndCBmaW5kIG5hbWUgaW4gbW9kdWxlLiIpOwogCitzdGF0aWMgaW50CitJbXBvcnRFcnJvcl9pbml0KFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqbXNnID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworCisvKiBNYWNybyByZXBsYWNlbWVudCBkb2Vzbid0IGFsbG93ICMjIHRvIHN0YXJ0IHRoZSBmaXJzdCBsaW5lIG9mIGEgbWFjcm8sCisgICBzbyB3ZSBtb3ZlIHRoZSBhc3NpZ25tZW50IGFuZCBOVUxMIGNoZWNrIGludG8gdGhlIGlmLXN0YXRlbWVudC4gKi8KKyNkZWZpbmUgR0VUX0tXRChrd2QpIHsgXAorICAgIGt3ZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGt3ZHMsICNrd2QpOyBcCisgICAgaWYgKGt3ZCkgeyBcCisgICAgICAgIFB5X0NMRUFSKHNlbGYtPmt3ZCk7IFwKKyAgICAgICAgc2VsZi0+a3dkID0ga3dkOyAgIFwKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmt3ZCk7XAorICAgICAgICBpZiAoUHlEaWN0X0RlbEl0ZW1TdHJpbmcoa3dkcywgI2t3ZCkpIFwKKyAgICAgICAgICAgIHJldHVybiAtMTsgXAorICAgIH0gXAorICAgIH0KKworICAgIGlmIChrd2RzKSB7CisgICAgICAgIEdFVF9LV0QobmFtZSk7CisgICAgICAgIEdFVF9LV0QocGF0aCk7CisgICAgfQorCisgICAgaWYgKEJhc2VFeGNlcHRpb25faW5pdCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSAhPSAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJJbXBvcnRFcnJvciIsIDEsIDEsICZtc2cpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9DTEVBUihzZWxmLT5tc2cpOyAgICAgICAgICAvKiByZXBsYWNpbmcgKi8KKyAgICBzZWxmLT5tc2cgPSBtc2c7CisgICAgUHlfSU5DUkVGKHNlbGYtPm1zZyk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorSW1wb3J0RXJyb3JfY2xlYXIoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5tc2cpOworICAgIFB5X0NMRUFSKHNlbGYtPm5hbWUpOworICAgIFB5X0NMRUFSKHNlbGYtPnBhdGgpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIHZvaWQKK0ltcG9ydEVycm9yX2RlYWxsb2MoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZikKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICBJbXBvcnRFcnJvcl9jbGVhcihzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgaW50CitJbXBvcnRFcnJvcl90cmF2ZXJzZShQeUltcG9ydEVycm9yT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5tc2cpOworICAgIFB5X1ZJU0lUKHNlbGYtPm5hbWUpOworICAgIFB5X1ZJU0lUKHNlbGYtPnBhdGgpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0ltcG9ydEVycm9yX3N0cihQeUltcG9ydEVycm9yT2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5tc2cgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZi0+bXNnKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZi0+bXNnKTsKKyAgICAgICAgcmV0dXJuIHNlbGYtPm1zZzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3N0cigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7CisgICAgfQorfQorCitzdGF0aWMgUHlNZW1iZXJEZWYgSW1wb3J0RXJyb3JfbWVtYmVyc1tdID0geworICAgIHsibXNnIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5SW1wb3J0RXJyb3JPYmplY3QsIG1zZyksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIG1lc3NhZ2UiKX0sCisgICAgeyJuYW1lIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5SW1wb3J0RXJyb3JPYmplY3QsIG5hbWUpLCAwLAorICAgICAgICBQeURvY19TVFIoIm1vZHVsZSBuYW1lIil9LAorICAgIHsicGF0aCIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUltcG9ydEVycm9yT2JqZWN0LCBwYXRoKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJtb2R1bGUgcGF0aCIpfSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgSW1wb3J0RXJyb3JfbWV0aG9kc1tdID0geworICAgIHtOVUxMfQorfTsKKworQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBJbXBvcnRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydEVycm9yLCAwIC8qIG5ldyAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydEVycm9yX21ldGhvZHMsIEltcG9ydEVycm9yX21lbWJlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGdldHNldCAqLywgSW1wb3J0RXJyb3Jfc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgIkltcG9ydCBjYW4ndCBmaW5kIG1vZHVsZSwgb3IgY2FuJ3QgZmluZCBuYW1lIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUuIik7CiAKIC8qCi0gKiAgICBFbnZpcm9ubWVudEVycm9yIGV4dGVuZHMgRXhjZXB0aW9uCisgKiAgICBPU0Vycm9yIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJlcnJtYXAuaCIKKyNlbmRpZgorCiAvKiBXaGVyZSBhIGZ1bmN0aW9uIGhhcyBhIHNpbmdsZSBmaWxlbmFtZSwgc3VjaCBhcyBvcGVuKCkgb3Igc29tZQogICogb2YgdGhlIG9zIG1vZHVsZSBmdW5jdGlvbnMsIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZSgpIGlzCiAgKiBjYWxsZWQsIGdpdmluZyBhIHRoaXJkIGFyZ3VtZW50IHdoaWNoIGlzIHRoZSBmaWxlbmFtZS4gIEJ1dCwgc28KICAqIHRoYXQgb2xkIGNvZGUgdXNpbmcgaW4tcGxhY2UgdW5wYWNraW5nIGRvZXNuJ3QgYnJlYWssIGUuZy46CiAgKgotICogZXhjZXB0IElPRXJyb3IsIChlcnJubywgc3RyZXJyb3IpOgorICogZXhjZXB0IE9TRXJyb3IsIChlcnJubywgc3RyZXJyb3IpOgogICoKICAqIHdlIGhhY2sgYXJncyBzbyB0aGF0IGl0IG9ubHkgY29udGFpbnMgdHdvIGl0ZW1zLiAgVGhpcyBhbHNvCiAgKiBtZWFucyB3ZSBuZWVkIG91ciBvd24gX19zdHJfXygpIHdoaWNoIHByaW50cyBvdXQgdGhlIGZpbGVuYW1lCiAgKiB3aGVuIGl0IHdhcyBzdXBwbGllZC4KICAqLworCisvKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2xlYW51cCBvbiBlcnJvciwgdGhlIGNhbGxlciBzaG91bGQgKi8KIHN0YXRpYyBpbnQKLUVudmlyb25tZW50RXJyb3JfaW5pdChQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLAotICAgIFB5T2JqZWN0ICprd2RzKQorb3NlcnJvcl9wYXJzZV9hcmdzKFB5T2JqZWN0ICoqcF9hcmdzLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqbXllcnJubywgUHlPYmplY3QgKipzdHJlcnJvciwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICwgUHlPYmplY3QgKip3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICAgICAgICAgICApCiB7Ci0gICAgUHlPYmplY3QgKm15ZXJybm8gPSBOVUxMLCAqc3RyZXJyb3IgPSBOVUxMLCAqZmlsZW5hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzdWJzbGljZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKyAgICBQeU9iamVjdCAqYXJncyA9ICpwX2FyZ3M7CiAKLSAgICBpZiAoQmFzZUV4Y2VwdGlvbl9pbml0KChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCBhcmdzLCBrd2RzKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKIAotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDw9IDEgfHwgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA+IDMpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiRW52aXJvbm1lbnRFcnJvciIsIDIsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmbXllcnJubywgJnN0cmVycm9yLCAmZmlsZW5hbWUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfQ0xFQVIoc2VsZi0+bXllcnJubyk7ICAgICAgIC8qIHJlcGxhY2luZyAqLwotICAgIHNlbGYtPm15ZXJybm8gPSBteWVycm5vOwotICAgIFB5X0lOQ1JFRihzZWxmLT5teWVycm5vKTsKLQotICAgIFB5X0NMRUFSKHNlbGYtPnN0cmVycm9yKTsgICAgICAvKiByZXBsYWNpbmcgKi8KLSAgICBzZWxmLT5zdHJlcnJvciA9IHN0cmVycm9yOwotICAgIFB5X0lOQ1JFRihzZWxmLT5zdHJlcnJvcik7Ci0KLSAgICAvKiBzZWxmLT5maWxlbmFtZSB3aWxsIHJlbWFpbiBQeV9Ob25lIG90aGVyd2lzZSAqLwotICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0NMRUFSKHNlbGYtPmZpbGVuYW1lKTsgICAgICAvKiByZXBsYWNpbmcgKi8KLSAgICAgICAgc2VsZi0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmZpbGVuYW1lKTsKLQotICAgICAgICBzdWJzbGljZSA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMCwgMik7Ci0gICAgICAgIGlmICghc3Vic2xpY2UpCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChuYXJncyA+PSAyICYmIG5hcmdzIDw9IDQpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiT1NFcnJvciIsIDIsIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXllcnJubywgc3RyZXJyb3IsIGZpbGVuYW1lLCB3aW5lcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmICgqd2luZXJyb3IgJiYgUHlMb25nX0NoZWNrKCp3aW5lcnJvcikpIHsKKyAgICAgICAgICAgIGxvbmcgZXJyY29kZSwgd2luZXJyY29kZTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdhcmdzOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgICAgIFB5X0RFQ1JFRihzZWxmLT5hcmdzKTsgIC8qIHJlcGxhY2luZyBhcmdzICovCi0gICAgICAgIHNlbGYtPmFyZ3MgPSBzdWJzbGljZTsKKyAgICAgICAgICAgIHdpbmVycmNvZGUgPSBQeUxvbmdfQXNMb25nKCp3aW5lcnJvcik7CisgICAgICAgICAgICBpZiAod2luZXJyY29kZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIC8qIFNldCBlcnJubyB0byB0aGUgY29ycmVzcG9uZGluZyBQT1NJWCBlcnJubyAob3ZlcnJpZGluZworICAgICAgICAgICAgICAgZmlyc3QgYXJndW1lbnQpLiAgV2luZG93cyBTb2NrZXQgZXJyb3IgY29kZXMgKD49IDEwMDAwKQorICAgICAgICAgICAgICAgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGVpciBQT1NJWCBjb3VudGVycGFydHMuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHdpbmVycmNvZGUgPCAxMDAwMCkKKyAgICAgICAgICAgICAgICBlcnJjb2RlID0gd2luZXJyb3JfdG9fZXJybm8od2luZXJyY29kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyY29kZSA9IHdpbmVycmNvZGU7CisgICAgICAgICAgICAqbXllcnJubyA9IFB5TG9uZ19Gcm9tTG9uZyhlcnJjb2RlKTsKKyAgICAgICAgICAgIGlmICghKm15ZXJybm8pCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KG5hcmdzKTsKKyAgICAgICAgICAgIGlmICghbmV3YXJncykKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsICpteWVycm5vKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbCk7CisgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpLCB2YWwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgYXJncyA9ICpwX2FyZ3MgPSBuZXdhcmdzOworICAgICAgICB9CiAgICAgfQorI2Vsc2UKKyAgICBpZiAobmFyZ3MgPj0gMiAmJiBuYXJncyA8PSAzKSB7CisgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIk9TRXJyb3IiLCAyLCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ZXJybm8sIHN0cmVycm9yLCBmaWxlbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAotRW52aXJvbm1lbnRFcnJvcl9jbGVhcihQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitvc2Vycm9yX2luaXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKnBfYXJncywKKyAgICAgICAgICAgICBQeU9iamVjdCAqbXllcnJubywgUHlPYmplY3QgKnN0cmVycm9yLAorICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAsIFB5T2JqZWN0ICp3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICAgICAgKQoreworICAgIFB5T2JqZWN0ICphcmdzID0gKnBfYXJnczsKKyAgICBQeV9zc2l6ZV90IG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKworICAgIC8qIHNlbGYtPmZpbGVuYW1lIHdpbGwgcmVtYWluIFB5X05vbmUgb3RoZXJ3aXNlICovCisgICAgaWYgKGZpbGVuYW1lICYmIGZpbGVuYW1lICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKFB5X1RZUEUoc2VsZikgPT0gKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19CbG9ja2luZ0lPRXJyb3IgJiYKKyAgICAgICAgICAgIFB5TnVtYmVyX0NoZWNrKGZpbGVuYW1lKSkgeworICAgICAgICAgICAgLyogQmxvY2tpbmdJT0Vycm9yJ3MgM3JkIGFyZ3VtZW50IGNhbiBiZSB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXJzIHdyaXR0ZW4uCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNlbGYtPndyaXR0ZW4gPSBQeU51bWJlcl9Bc1NzaXplX3QoZmlsZW5hbWUsIFB5RXhjX1ZhbHVlRXJyb3IpOworICAgICAgICAgICAgaWYgKHNlbGYtPndyaXR0ZW4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOworICAgICAgICAgICAgc2VsZi0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKKworICAgICAgICAgICAgaWYgKG5hcmdzID49IDIgJiYgbmFyZ3MgPD0gMykgeworICAgICAgICAgICAgICAgIC8qIGZpbGVuYW1lIGlzIHJlbW92ZWQgZnJvbSB0aGUgYXJncyB0dXBsZSAoZm9yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgICAgICBwdXJwb3Nlcywgc2VlIHRlc3RfZXhjZXB0aW9ucy5weSkgKi8KKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic2xpY2UgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDAsIDIpOworICAgICAgICAgICAgICAgIGlmICghc3Vic2xpY2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsgIC8qIHJlcGxhY2luZyBhcmdzICovCisgICAgICAgICAgICAgICAgKnBfYXJncyA9IGFyZ3MgPSBzdWJzbGljZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9YSU5DUkVGKG15ZXJybm8pOworICAgIHNlbGYtPm15ZXJybm8gPSBteWVycm5vOworCisgICAgUHlfWElOQ1JFRihzdHJlcnJvcik7CisgICAgc2VsZi0+c3RyZXJyb3IgPSBzdHJlcnJvcjsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeV9YSU5DUkVGKHdpbmVycm9yKTsKKyAgICBzZWxmLT53aW5lcnJvciA9IHdpbmVycm9yOworI2VuZGlmCisKKyAgICAvKiBTdGVhbHMgdGhlIHJlZmVyZW5jZSB0byBhcmdzICovCisgICAgUHlfQ0xFQVIoc2VsZi0+YXJncyk7CisgICAgc2VsZi0+YXJncyA9IGFyZ3M7CisgICAgYXJncyA9IE5VTEw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK09TRXJyb3JfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKK3N0YXRpYyBpbnQKK09TRXJyb3JfaW5pdChQeU9TRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CisKK3N0YXRpYyBpbnQKK29zZXJyb3JfdXNlX2luaXQoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIC8qIFdoZW4gX19pbml0X18gaXMgZGVmaW5lZCBpbiBhIE9TRXJyb3Igc3ViY2xhc3MsIHdlIHdhbnQgYW55CisgICAgICAgZXh0cmFuZW91cyBhcmd1bWVudCB0byBfX25ld19fIHRvIGJlIGlnbm9yZWQuICBUaGUgb25seSByZWFzb25hYmxlCisgICAgICAgc29sdXRpb24sIGdpdmVuIF9fbmV3X18gdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzLAorICAgICAgIGlzIHRvIGRlZmVyIGFyZyBwYXJzaW5nIGFuZCBpbml0aWFsaXphdGlvbiB0byBfX2luaXRfXy4KKworICAgICAgIEJ1dCB3aGVuIF9fbmV3X18gaXMgb3ZlcnJpZGVuIGFzIHdlbGwsIGl0IHNob3VsZCBjYWxsIG91ciBfX25ld19fCisgICAgICAgd2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLgorCisgICAgICAgKHNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTI1NTUjbXNnMTQ4ODI5ICkKKyAgICAqLworICAgIGlmICh0eXBlLT50cF9pbml0ICE9IChpbml0cHJvYykgT1NFcnJvcl9pbml0ICYmCisgICAgICAgIHR5cGUtPnRwX25ldyA9PSAobmV3ZnVuYykgT1NFcnJvcl9uZXcpIHsKKyAgICAgICAgYXNzZXJ0KChQeU9iamVjdCAqKSB0eXBlICE9IFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitPU0Vycm9yX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9TRXJyb3JPYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5T2JqZWN0ICpteWVycm5vID0gTlVMTCwgKnN0cmVycm9yID0gTlVMTCwgKmZpbGVuYW1lID0gTlVMTDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKndpbmVycm9yID0gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKCFvc2Vycm9yX3VzZV9pbml0KHR5cGUpKSB7CisgICAgICAgIGlmICghX1B5QXJnX05vS2V5d29yZHModHlwZS0+dHBfbmFtZSwga3dkcykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgICAgIGlmIChvc2Vycm9yX3BhcnNlX2FyZ3MoJmFyZ3MsICZteWVycm5vLCAmc3RyZXJyb3IsICZmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICZ3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICAgICApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAobXllcnJubyAmJiBQeUxvbmdfQ2hlY2sobXllcnJubykgJiYKKyAgICAgICAgICAgIGVycm5vbWFwICYmIChQeU9iamVjdCAqKSB0eXBlID09IFB5RXhjX09TRXJyb3IpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuZXd0eXBlOworICAgICAgICAgICAgbmV3dHlwZSA9IFB5RGljdF9HZXRJdGVtKGVycm5vbWFwLCBteWVycm5vKTsKKyAgICAgICAgICAgIGlmIChuZXd0eXBlKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VHlwZV9DaGVjayhuZXd0eXBlKSk7CisgICAgICAgICAgICAgICAgdHlwZSA9IChQeVR5cGVPYmplY3QgKikgbmV3dHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNlbGYgPSAoUHlPU0Vycm9yT2JqZWN0ICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmICghc2VsZikKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHNlbGYtPmRpY3QgPSBOVUxMOworICAgIHNlbGYtPnRyYWNlYmFjayA9IHNlbGYtPmNhdXNlID0gc2VsZi0+Y29udGV4dCA9IE5VTEw7CisgICAgc2VsZi0+d3JpdHRlbiA9IC0xOworCisgICAgaWYgKCFvc2Vycm9yX3VzZV9pbml0KHR5cGUpKSB7CisgICAgICAgIGlmIChvc2Vycm9yX2luaXQoc2VsZiwgJmFyZ3MsIG15ZXJybm8sIHN0cmVycm9yLCBmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAsIHdpbmVycm9yCisjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2VsZi0+YXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICBpZiAoc2VsZi0+YXJncyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgUHlfWERFQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAorT1NFcnJvcl9pbml0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpteWVycm5vID0gTlVMTCwgKnN0cmVycm9yID0gTlVMTCwgKmZpbGVuYW1lID0gTlVMTDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKndpbmVycm9yID0gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKCFvc2Vycm9yX3VzZV9pbml0KFB5X1RZUEUoc2VsZikpKQorICAgICAgICAvKiBFdmVyeXRoaW5nIGFscmVhZHkgZG9uZSBpbiBPU0Vycm9yX25ldyAqLworICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwga3dkcykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICBpZiAob3NlcnJvcl9wYXJzZV9hcmdzKCZhcmdzLCAmbXllcnJubywgJnN0cmVycm9yLCAmZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAsICZ3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAob3NlcnJvcl9pbml0KHNlbGYsICZhcmdzLCBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAsIHdpbmVycm9yCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludAorT1NFcnJvcl9jbGVhcihQeU9TRXJyb3JPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlfQ0xFQVIoc2VsZi0+bXllcnJubyk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RyZXJyb3IpOwogICAgIFB5X0NMRUFSKHNlbGYtPmZpbGVuYW1lKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQ0xFQVIoc2VsZi0+d2luZXJyb3IpOworI2VuZGlmCiAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fY2xlYXIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwogfQogCiBzdGF0aWMgdm9pZAotRW52aXJvbm1lbnRFcnJvcl9kZWFsbG9jKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZikKK09TRXJyb3JfZGVhbGxvYyhQeU9TRXJyb3JPYmplY3QgKnNlbGYpCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7Ci0gICAgRW52aXJvbm1lbnRFcnJvcl9jbGVhcihzZWxmKTsKKyAgICBPU0Vycm9yX2NsZWFyKHNlbGYpOwogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKIHN0YXRpYyBpbnQKLUVudmlyb25tZW50RXJyb3JfdHJhdmVyc2UoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsCitPU0Vycm9yX3RyYXZlcnNlKFB5T1NFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LAogICAgICAgICB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoc2VsZi0+bXllcnJubyk7CiAgICAgUHlfVklTSVQoc2VsZi0+c3RyZXJyb3IpOwogICAgIFB5X1ZJU0lUKHNlbGYtPmZpbGVuYW1lKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfVklTSVQoc2VsZi0+d2luZXJyb3IpOworI2VuZGlmCiAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fdHJhdmVyc2UoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIHZpc2l0LCBhcmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotRW52aXJvbm1lbnRFcnJvcl9zdHIoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmKQorT1NFcnJvcl9zdHIoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBJZiBhdmFpbGFibGUsIHdpbmVycm9yIGhhcyB0aGUgcHJpb3JpdHkgb3ZlciBteWVycm5vICovCisgICAgaWYgKHNlbGYtPndpbmVycm9yICYmIHNlbGYtPmZpbGVuYW1lKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltXaW5FcnJvciAlU10gJVM6ICVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPndpbmVycm9yID8gc2VsZi0+d2luZXJyb3I6IFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmlsZW5hbWUpOworICAgIGlmIChzZWxmLT53aW5lcnJvciAmJiBzZWxmLT5zdHJlcnJvcikKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbV2luRXJyb3IgJVNdICVTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPndpbmVycm9yID8gc2VsZi0+d2luZXJyb3I6IFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lKTsKKyNlbmRpZgogICAgIGlmIChzZWxmLT5maWxlbmFtZSkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbRXJybm8gJVNdICVTOiAlUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vID8gc2VsZi0+bXllcnJubzogUHlfTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5maWxlbmFtZSk7Ci0gICAgZWxzZSBpZiAoc2VsZi0+bXllcnJubyAmJiBzZWxmLT5zdHJlcnJvcikKKyAgICBpZiAoc2VsZi0+bXllcnJubyAmJiBzZWxmLT5zdHJlcnJvcikKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbRXJybm8gJVNdICVTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm15ZXJybm8gPyBzZWxmLT5teWVycm5vOiBQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3N0cigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7CiB9CiAKLXN0YXRpYyBQeU1lbWJlckRlZiBFbnZpcm9ubWVudEVycm9yX21lbWJlcnNbXSA9IHsKLSAgICB7ImVycm5vIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCwgbXllcnJubyksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIGVycm5vIil9LAotICAgIHsic3RyZXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0LCBzdHJlcnJvciksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIHN0cmVycm9yIil9LAotICAgIHsiZmlsZW5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0LCBmaWxlbmFtZSksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIGZpbGVuYW1lIil9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLQogc3RhdGljIFB5T2JqZWN0ICoKLUVudmlyb25tZW50RXJyb3JfcmVkdWNlKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZikKK09TRXJyb3JfcmVkdWNlKFB5T1NFcnJvck9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqYXJncyA9IHNlbGYtPmFyZ3M7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEwsICp0bXA7CiAKICAgICAvKiBzZWxmLT5hcmdzIGlzIG9ubHkgdGhlIGZpcnN0IHR3byByZWFsIGFyZ3VtZW50cyBpZiB0aGVyZSB3YXMgYQotICAgICAqIGZpbGUgbmFtZSBnaXZlbiB0byBFbnZpcm9ubWVudEVycm9yLiAqLworICAgICAqIGZpbGUgbmFtZSBnaXZlbiB0byBPU0Vycm9yLiAqLwogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDIgJiYgc2VsZi0+ZmlsZW5hbWUpIHsKICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDMpOwogICAgICAgICBpZiAoIWFyZ3MpCkBAIC02OTksMTQ0ICsxMDcxLDkzIEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK09TRXJyb3Jfd3JpdHRlbl9nZXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCB2b2lkICpjb250ZXh0KQoreworICAgIGlmIChzZWxmLT53cml0dGVuID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgImNoYXJhY3RlcnNfd3JpdHRlbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT53cml0dGVuKTsKK30KIAotc3RhdGljIFB5TWV0aG9kRGVmIEVudmlyb25tZW50RXJyb3JfbWV0aG9kc1tdID0gewotICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilFbnZpcm9ubWVudEVycm9yX3JlZHVjZSwgTUVUSF9OT0FSR1N9LAorc3RhdGljIGludAorT1NFcnJvcl93cml0dGVuX3NldChQeU9TRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcsIHZvaWQgKmNvbnRleHQpCit7CisgICAgUHlfc3NpemVfdCBuOworICAgIG4gPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICBpZiAobiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc2VsZi0+d3JpdHRlbiA9IG47CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1lbWJlckRlZiBPU0Vycm9yX21lbWJlcnNbXSA9IHsKKyAgICB7ImVycm5vIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T1NFcnJvck9iamVjdCwgbXllcnJubyksIDAsCisgICAgICAgIFB5RG9jX1NUUigiUE9TSVggZXhjZXB0aW9uIGNvZGUiKX0sCisgICAgeyJzdHJlcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9TRXJyb3JPYmplY3QsIHN0cmVycm9yKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gc3RyZXJyb3IiKX0sCisgICAgeyJmaWxlbmFtZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9TRXJyb3JPYmplY3QsIGZpbGVuYW1lKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gZmlsZW5hbWUiKX0sCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsid2luZXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCB3aW5lcnJvciksIDAsCisgICAgICAgIFB5RG9jX1NUUigiV2luMzIgZXhjZXB0aW9uIGNvZGUiKX0sCisjZW5kaWYKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgT1NFcnJvcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKU9TRXJyb3JfcmVkdWNlLCBNRVRIX05PQVJHU30sCiAgICAge05VTEx9CiB9OwogCi1Db21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIEVudmlyb25tZW50RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudEVycm9yLCBFbnZpcm9ubWVudEVycm9yX2RlYWxsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudEVycm9yX21ldGhvZHMsIEVudmlyb25tZW50RXJyb3JfbWVtYmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50RXJyb3Jfc3RyLAorc3RhdGljIFB5R2V0U2V0RGVmIE9TRXJyb3JfZ2V0c2V0W10gPSB7CisgICAgeyJjaGFyYWN0ZXJzX3dyaXR0ZW4iLCAoZ2V0dGVyKSBPU0Vycm9yX3dyaXR0ZW5fZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRlcikgT1NFcnJvcl93cml0dGVuX3NldCwgTlVMTH0sCisgICAge05VTEx9Cit9OworCisKK0NvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3IsIE9TRXJyb3JfbmV3LAorICAgICAgICAgICAgICAgICAgICAgICAgT1NFcnJvcl9tZXRob2RzLCBPU0Vycm9yX21lbWJlcnMsIE9TRXJyb3JfZ2V0c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgT1NFcnJvcl9zdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQmFzZSBjbGFzcyBmb3IgSS9PIHJlbGF0ZWQgZXJyb3JzLiIpOwogCiAKIC8qCi0gKiAgICBJT0Vycm9yIGV4dGVuZHMgRW52aXJvbm1lbnRFcnJvcgorICogICAgVmFyaW91cyBPU0Vycm9yIHN1YmNsYXNzZXMKICAqLwotTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Vudmlyb25tZW50RXJyb3IsIElPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvciwgIkkvTyBvcGVyYXRpb24gZmFpbGVkLiIpOwotCi0KLS8qCi0gKiAgICBPU0Vycm9yIGV4dGVuZHMgRW52aXJvbm1lbnRFcnJvcgotICovCi1NaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudEVycm9yLCAiT1Mgc3lzdGVtIGNhbGwgZmFpbGVkLiIpOwotCi0KLS8qCi0gKiAgICBXaW5kb3dzRXJyb3IgZXh0ZW5kcyBPU0Vycm9yCi0gKi8KLSNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSAiZXJybWFwLmgiCi0KLXN0YXRpYyBpbnQKLVdpbmRvd3NFcnJvcl9jbGVhcihQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZikKLXsKLSAgICBQeV9DTEVBUihzZWxmLT5teWVycm5vKTsKLSAgICBQeV9DTEVBUihzZWxmLT5zdHJlcnJvcik7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZmlsZW5hbWUpOwotICAgIFB5X0NMRUFSKHNlbGYtPndpbmVycm9yKTsKLSAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9jbGVhcigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1XaW5kb3dzRXJyb3JfZGVhbGxvYyhQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZikKLXsKLSAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKLSAgICBXaW5kb3dzRXJyb3JfY2xlYXIoc2VsZik7Ci0gICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKLX0KLQotc3RhdGljIGludAotV2luZG93c0Vycm9yX3RyYXZlcnNlKFB5V2luZG93c0Vycm9yT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKLXsKLSAgICBQeV9WSVNJVChzZWxmLT5teWVycm5vKTsKLSAgICBQeV9WSVNJVChzZWxmLT5zdHJlcnJvcik7Ci0gICAgUHlfVklTSVQoc2VsZi0+ZmlsZW5hbWUpOwotICAgIFB5X1ZJU0lUKHNlbGYtPndpbmVycm9yKTsKLSAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl90cmF2ZXJzZSgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgdmlzaXQsIGFyZyk7Ci19Ci0KLXN0YXRpYyBpbnQKLVdpbmRvd3NFcnJvcl9pbml0KFB5V2luZG93c0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgUHlPYmplY3QgKm9fZXJyY29kZSA9IE5VTEw7Ci0gICAgbG9uZyBlcnJjb2RlOwotICAgIGxvbmcgcG9zaXhfZXJybm87Ci0KLSAgICBpZiAoRW52aXJvbm1lbnRFcnJvcl9pbml0KChQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKilzZWxmLCBhcmdzLCBrd2RzKQotICAgICAgICAgICAgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmIChzZWxmLT5teWVycm5vID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLyogU2V0IGVycm5vIHRvIHRoZSBQT1NJWCBlcnJubywgYW5kIHdpbmVycm9yIHRvIHRoZSBXaW4zMgotICAgICAgIGVycm9yIGNvZGUuICovCi0gICAgZXJyY29kZSA9IFB5TG9uZ19Bc0xvbmcoc2VsZi0+bXllcnJubyk7Ci0gICAgaWYgKGVycmNvZGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHBvc2l4X2Vycm5vID0gd2luZXJyb3JfdG9fZXJybm8oZXJyY29kZSk7Ci0KLSAgICBQeV9DTEVBUihzZWxmLT53aW5lcnJvcik7Ci0gICAgc2VsZi0+d2luZXJyb3IgPSBzZWxmLT5teWVycm5vOwotCi0gICAgb19lcnJjb2RlID0gUHlMb25nX0Zyb21Mb25nKHBvc2l4X2Vycm5vKTsKLSAgICBpZiAoIW9fZXJyY29kZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgc2VsZi0+bXllcnJubyA9IG9fZXJyY29kZTsKLQotICAgIHJldHVybiAwOwotfQotCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1XaW5kb3dzRXJyb3Jfc3RyKFB5V2luZG93c0Vycm9yT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5maWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbRXJyb3IgJVNdICVTOiAlUiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lKTsKLSAgICBlbHNlIGlmIChzZWxmLT53aW5lcnJvciAmJiBzZWxmLT5zdHJlcnJvcikKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbRXJyb3IgJVNdICVTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPndpbmVycm9yID8gc2VsZi0+d2luZXJyb3I6IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBFbnZpcm9ubWVudEVycm9yX3N0cigoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICopc2VsZik7Ci19Ci0KLXN0YXRpYyBQeU1lbWJlckRlZiBXaW5kb3dzRXJyb3JfbWVtYmVyc1tdID0gewotICAgIHsiZXJybm8iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlXaW5kb3dzRXJyb3JPYmplY3QsIG15ZXJybm8pLCAwLAotICAgICAgICBQeURvY19TVFIoIlBPU0lYIGV4Y2VwdGlvbiBjb2RlIil9LAotICAgIHsic3RyZXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlXaW5kb3dzRXJyb3JPYmplY3QsIHN0cmVycm9yKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gc3RyZXJyb3IiKX0sCi0gICAgeyJmaWxlbmFtZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVdpbmRvd3NFcnJvck9iamVjdCwgZmlsZW5hbWUpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBmaWxlbmFtZSIpfSwKLSAgICB7IndpbmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCB3aW5lcnJvciksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiV2luMzIgZXhjZXB0aW9uIGNvZGUiKX0sCi0gICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotfTsKLQotQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgV2luZG93c0Vycm9yLCBXaW5kb3dzRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dzRXJyb3JfZGVhbGxvYywgMCwgV2luZG93c0Vycm9yX21lbWJlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dzRXJyb3Jfc3RyLCAiTVMtV2luZG93cyBPUyBzeXN0ZW0gY2FsbCBmYWlsZWQuIik7Ci0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCi0KLQotLyoKLSAqICAgIFZNU0Vycm9yIGV4dGVuZHMgT1NFcnJvciAoSSB0aGluaykKLSAqLwotI2lmZGVmIF9fVk1TCi1NaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgVk1TRXJyb3IsIEVudmlyb25tZW50RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5WTVMgT1Mgc3lzdGVtIGNhbGwgZmFpbGVkLiIpOwotI2VuZGlmCi0KK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBCbG9ja2luZ0lPRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gd291bGQgYmxvY2suIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIGVycm9yLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIENoaWxkUHJvY2Vzc0Vycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDaGlsZCBwcm9jZXNzIGVycm9yLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Nvbm5lY3Rpb25FcnJvciwgQnJva2VuUGlwZUVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJCcm9rZW4gcGlwZS4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Db25uZWN0aW9uRXJyb3IsIENvbm5lY3Rpb25BYm9ydGVkRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gYWJvcnRlZC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Db25uZWN0aW9uRXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gcmVmdXNlZC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Db25uZWN0aW9uRXJyb3IsIENvbm5lY3Rpb25SZXNldEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHJlc2V0LiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIEZpbGVFeGlzdHNFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmlsZSBhbHJlYWR5IGV4aXN0cy4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBGaWxlTm90Rm91bmRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmlsZSBub3QgZm91bmQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgSXNBRGlyZWN0b3J5RXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZXJhdGlvbiBkb2Vzbid0IHdvcmsgb24gZGlyZWN0b3JpZXMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgTm90QURpcmVjdG9yeUVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVyYXRpb24gb25seSB3b3JrcyBvbiBkaXJlY3Rvcmllcy4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBJbnRlcnJ1cHRlZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcnJ1cHRlZCBieSBzaWduYWwuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgUGVybWlzc2lvbkVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgZW5vdWdoIHBlcm1pc3Npb25zLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFByb2Nlc3NMb29rdXBFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvY2VzcyBub3QgZm91bmQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgVGltZW91dEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJUaW1lb3V0IGV4cGlyZWQuIik7CiAKIC8qCiAgKiAgICBFT0ZFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgpAQCAtOTY3LDIxICsxMjg4LDIzIEBACiBzdGF0aWMgUHlPYmplY3QqCiBteV9iYXNlbmFtZShQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBQeV9VTklDT0RFICp1bmljb2RlOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZSwgb2Zmc2V0OworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSk7Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShuYW1lKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobmFtZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKG5hbWUpOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKTsKICAgICBvZmZzZXQgPSAwOwogICAgIGZvcihpPTA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgaWYgKHVuaWNvZGVbaV0gPT0gU0VQKQorICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gU0VQKQogICAgICAgICAgICAgb2Zmc2V0ID0gaSArIDE7CiAgICAgfQotICAgIGlmIChvZmZzZXQgIT0gMCkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSkgKyBvZmZzZXQsCi0gICAgICAgICAgICBzaXplIC0gb2Zmc2V0KTsKLSAgICB9IGVsc2UgeworICAgIGlmIChvZmZzZXQgIT0gMCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcobmFtZSwgb2Zmc2V0LCBzaXplKTsKKyAgICBlbHNlIHsKICAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwogICAgICAgICByZXR1cm4gbmFtZTsKICAgICB9CkBAIC0xMDQ5LDcgKzEzNzIsNyBAQAogfTsKIAogQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBTeW50YXhFcnJvciwgU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBTeW50YXhFcnJvcl9kZWFsbG9jLCAwLCBTeW50YXhFcnJvcl9tZW1iZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgU3ludGF4RXJyb3JfbWVtYmVycywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheEVycm9yX3N0ciwgIkludmFsaWQgc3ludGF4LiIpOwogCiAKQEAgLTExMDMsNyArMTQyNiw3IEBACiB9CiAKIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0xvb2t1cEVycm9yLCBLZXlFcnJvciwgQmFzZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIEtleUVycm9yX3N0ciwgIk1hcHBpbmcga2V5IG5vdCBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIEtleUVycm9yX3N0ciwgIk1hcHBpbmcga2V5IG5vdCBmb3VuZC4iKTsKIAogCiAvKgpAQCAtMTIwMiw3ICsxNTI1LDcgQEAKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuIC0xOwogICAgICpzdGFydCA9ICgoUHlVbmljb2RlRXJyb3JPYmplY3QgKilleGMpLT5zdGFydDsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgaWYgKCpzdGFydDwwKQogICAgICAgICAqc3RhcnQgPSAwOyAvKlhYWCBjaGVjayBmb3IgdmFsdWVzIDwwKi8KICAgICBpZiAoKnN0YXJ0Pj1zaXplKQpAQCAtMTI3MCw3ICsxNTkzLDcgQEAKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuIC0xOwogICAgICplbmQgPSAoKFB5VW5pY29kZUVycm9yT2JqZWN0ICopZXhjKS0+ZW5kOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICBpZiAoKmVuZDwxKQogICAgICAgICAqZW5kID0gMTsKICAgICBpZiAoKmVuZD5zaXplKQpAQCAtMTQ0Miw2ICsxNzY1LDExIEBACiAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZXJyLT5vYmplY3QpIDwgLTEpIHsKKyAgICAgICAgZXJyLT5lbmNvZGluZyA9IE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKICAgICBQeV9JTkNSRUYoZXJyLT5lbmNvZGluZyk7CiAgICAgUHlfSU5DUkVGKGVyci0+b2JqZWN0KTsKICAgICBQeV9JTkNSRUYoZXJyLT5yZWFzb24pOwpAQCAtMTQ2Niw4ICsxNzk0LDggQEAKICAgICBpZiAoZW5jb2Rpbmdfc3RyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKIAotICAgIGlmICh1c2VsZi0+c3RhcnQgPCBQeVVuaWNvZGVfR0VUX1NJWkUodXNlbGYtPm9iamVjdCkgJiYgdXNlbGYtPmVuZCA9PSB1c2VsZi0+c3RhcnQrMSkgewotICAgICAgICBpbnQgYmFkY2hhciA9IChpbnQpUHlVbmljb2RlX0FTX1VOSUNPREUodXNlbGYtPm9iamVjdClbdXNlbGYtPnN0YXJ0XTsKKyAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9MRU5HVEgodXNlbGYtPm9iamVjdCkgJiYgdXNlbGYtPmVuZCA9PSB1c2VsZi0+c3RhcnQrMSkgeworICAgICAgICBQeV9VQ1M0IGJhZGNoYXIgPSBQeVVuaWNvZGVfUmVhZENoYXIodXNlbGYtPm9iamVjdCwgdXNlbGYtPnN0YXJ0KTsKICAgICAgICAgY29uc3QgY2hhciAqZm10OwogICAgICAgICBpZiAoYmFkY2hhciA8PSAweGZmKQogICAgICAgICAgICAgZm10ID0gIiclVScgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciAnXFx4JTAyeCcgaW4gcG9zaXRpb24gJXpkOiAlVSI7CkBAIC0xNDc4LDcgKzE4MDYsNyBAQAogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKICAgICAgICAgICAgIGZtdCwKICAgICAgICAgICAgIGVuY29kaW5nX3N0ciwKLSAgICAgICAgICAgIGJhZGNoYXIsCisgICAgICAgICAgICAoaW50KWJhZGNoYXIsCiAgICAgICAgICAgICB1c2VsZi0+c3RhcnQsCiAgICAgICAgICAgICByZWFzb25fc3RyKTsKICAgICB9CkBAIC0xNjc1LDggKzIwMDMsOCBAQAogICAgIGlmIChyZWFzb25fc3RyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKIAotICAgIGlmICh1c2VsZi0+c3RhcnQgPCBQeVVuaWNvZGVfR0VUX1NJWkUodXNlbGYtPm9iamVjdCkgJiYgdXNlbGYtPmVuZCA9PSB1c2VsZi0+c3RhcnQrMSkgewotICAgICAgICBpbnQgYmFkY2hhciA9IChpbnQpUHlVbmljb2RlX0FTX1VOSUNPREUodXNlbGYtPm9iamVjdClbdXNlbGYtPnN0YXJ0XTsKKyAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9MRU5HVEgodXNlbGYtPm9iamVjdCkgJiYgdXNlbGYtPmVuZCA9PSB1c2VsZi0+c3RhcnQrMSkgeworICAgICAgICBQeV9VQ1M0IGJhZGNoYXIgPSBQeVVuaWNvZGVfUmVhZENoYXIodXNlbGYtPm9iamVjdCwgdXNlbGYtPnN0YXJ0KTsKICAgICAgICAgY29uc3QgY2hhciAqZm10OwogICAgICAgICBpZiAoYmFkY2hhciA8PSAweGZmKQogICAgICAgICAgICAgZm10ID0gImNhbid0IHRyYW5zbGF0ZSBjaGFyYWN0ZXIgJ1xceCUwMngnIGluIHBvc2l0aW9uICV6ZDogJVUiOwpAQCAtMTY4Niw3ICsyMDE0LDcgQEAKICAgICAgICAgICAgIGZtdCA9ICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXFUlMDh4JyBpbiBwb3NpdGlvbiAlemQ6ICVVIjsKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCiAgICAgICAgICAgICBmbXQsCi0gICAgICAgICAgICBiYWRjaGFyLAorICAgICAgICAgICAgKGludCliYWRjaGFyLAogICAgICAgICAgICAgdXNlbGYtPnN0YXJ0LAogICAgICAgICAgICAgcmVhc29uX3N0cgogICAgICAgICApOwpAQCAtMTcxNyw2ICsyMDQ1LDcgQEAKIH07CiBQeU9iamVjdCAqUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yID0gKFB5T2JqZWN0ICopJl9QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I7CiAKKy8qIERlcHJlY2F0ZWQuICovCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqb2JqZWN0LCBQeV9zc2l6ZV90IGxlbmd0aCwKQEAgLTE3MjYsNiArMjA1NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LCBsZW5ndGgsIHN0YXJ0LCBlbmQsIHJlYXNvbik7CiB9CiAKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUoCisgICAgUHlPYmplY3QgKm9iamVjdCwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgY29uc3QgY2hhciAqcmVhc29uKQoreworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yLCAiT25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCwgc3RhcnQsIGVuZCwgcmVhc29uKTsKK30KIAogLyoKICAqICAgIEFzc2VydGlvbkVycm9yIGV4dGVuZHMgRXhjZXB0aW9uCkBAIC0xOTc1LDExICsyMzEyLDgwIEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGJkaWN0LCAjIFRZUEUsIFB5RXhjXyAjIyBUWVBFKSkgXAogICAgICAgICBQeV9GYXRhbEVycm9yKCJNb2R1bGUgZGljdGlvbmFyeSBpbnNlcnRpb24gcHJvYmxlbS4iKTsKIAorI2RlZmluZSBJTklUX0FMSUFTKE5BTUUsIFRZUEUpIFB5X0lOQ1JFRihQeUV4Y18gIyMgVFlQRSk7IFwKKyAgICBQeV9YREVDUkVGKFB5RXhjXyAjIyBOQU1FKTsgXAorICAgIFB5RXhjXyAjIyBOQU1FID0gUHlFeGNfICMjIFRZUEU7IFwKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoYmRpY3QsICMgTkFNRSwgUHlFeGNfICMjIE5BTUUpKSBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIk1vZHVsZSBkaWN0aW9uYXJ5IGluc2VydGlvbiBwcm9ibGVtLiIpOworCisjZGVmaW5lIEFERF9FUlJOTyhUWVBFLCBDT0RFKSB7IFwKKyAgICBQeU9iamVjdCAqX2NvZGUgPSBQeUxvbmdfRnJvbUxvbmcoQ09ERSk7IFwKKyAgICBhc3NlcnQoX1B5T2JqZWN0X1JlYWxJc1N1YmNsYXNzKFB5RXhjXyAjIyBUWVBFLCBQeUV4Y19PU0Vycm9yKSk7IFwKKyAgICBpZiAoIV9jb2RlIHx8IFB5RGljdF9TZXRJdGVtKGVycm5vbWFwLCBfY29kZSwgUHlFeGNfICMjIFRZUEUpKSBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImVycm1hcCBpbnNlcnRpb24gcHJvYmxlbS4iKTsgXAorICAgIFB5X0RFQ1JFRihfY29kZSk7IFwKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8V2luc29jazIuaD4KKy8qIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIHdlcmUgYWRkZWQgdG8gZXJybm8uaCBpbiBWUzIwMTAgYnV0IGhhdmUKKyAgIHByZWZlcnJlZCBXU0EgZXF1aXZhbGVudHMuICovCisjdW5kZWYgRUFERFJJTlVTRQorI3VuZGVmIEVBRERSTk9UQVZBSUwKKyN1bmRlZiBFQUZOT1NVUFBPUlQKKyN1bmRlZiBFQUxSRUFEWQorI3VuZGVmIEVDT05OQUJPUlRFRAorI3VuZGVmIEVDT05OUkVGVVNFRAorI3VuZGVmIEVDT05OUkVTRVQKKyN1bmRlZiBFREVTVEFERFJSRVEKKyN1bmRlZiBFSE9TVFVOUkVBQ0gKKyN1bmRlZiBFSU5QUk9HUkVTUworI3VuZGVmIEVJU0NPTk4KKyN1bmRlZiBFTE9PUAorI3VuZGVmIEVNU0dTSVpFCisjdW5kZWYgRU5FVERPV04KKyN1bmRlZiBFTkVUUkVTRVQKKyN1bmRlZiBFTkVUVU5SRUFDSAorI3VuZGVmIEVOT0JVRlMKKyN1bmRlZiBFTk9QUk9UT09QVAorI3VuZGVmIEVOT1RDT05OCisjdW5kZWYgRU5PVFNPQ0sKKyN1bmRlZiBFT1BOT1RTVVBQCisjdW5kZWYgRVBST1RPTk9TVVBQT1JUCisjdW5kZWYgRVBST1RPVFlQRQorI3VuZGVmIEVUSU1FRE9VVAorI3VuZGVmIEVXT1VMREJMT0NLCisKKyNpZiBkZWZpbmVkKFdTQUVBTFJFQURZKSAmJiAhZGVmaW5lZChFQUxSRUFEWSkKKyNkZWZpbmUgRUFMUkVBRFkgV1NBRUFMUkVBRFkKKyNlbmRpZgorI2lmIGRlZmluZWQoV1NBRUNPTk5BQk9SVEVEKSAmJiAhZGVmaW5lZChFQ09OTkFCT1JURUQpCisjZGVmaW5lIEVDT05OQUJPUlRFRCBXU0FFQ09OTkFCT1JURUQKKyNlbmRpZgorI2lmIGRlZmluZWQoV1NBRUNPTk5SRUZVU0VEKSAmJiAhZGVmaW5lZChFQ09OTlJFRlVTRUQpCisjZGVmaW5lIEVDT05OUkVGVVNFRCBXU0FFQ09OTlJFRlVTRUQKKyNlbmRpZgorI2lmIGRlZmluZWQoV1NBRUNPTk5SRVNFVCkgJiYgIWRlZmluZWQoRUNPTk5SRVNFVCkKKyNkZWZpbmUgRUNPTk5SRVNFVCBXU0FFQ09OTlJFU0VUCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVJTlBST0dSRVNTKSAmJiAhZGVmaW5lZChFSU5QUk9HUkVTUykKKyNkZWZpbmUgRUlOUFJPR1JFU1MgV1NBRUlOUFJPR1JFU1MKKyNlbmRpZgorI2lmIGRlZmluZWQoV1NBRVNIVVRET1dOKSAmJiAhZGVmaW5lZChFU0hVVERPV04pCisjZGVmaW5lIEVTSFVURE9XTiBXU0FFU0hVVERPV04KKyNlbmRpZgorI2lmIGRlZmluZWQoV1NBRVRJTUVET1VUKSAmJiAhZGVmaW5lZChFVElNRURPVVQpCisjZGVmaW5lIEVUSU1FRE9VVCBXU0FFVElNRURPVVQKKyNlbmRpZgorI2lmIGRlZmluZWQoV1NBRVdPVUxEQkxPQ0spICYmICFkZWZpbmVkKEVXT1VMREJMT0NLKQorI2RlZmluZSBFV09VTERCTE9DSyBXU0FFV09VTERCTE9DSworI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiB2b2lkCi1fUHlFeGNfSW5pdCh2b2lkKQorX1B5RXhjX0luaXQoUHlPYmplY3QgKmJsdGlubW9kKQogewotICAgIFB5T2JqZWN0ICpibHRpbm1vZCwgKmJkaWN0OworICAgIFB5T2JqZWN0ICpiZGljdDsKIAogICAgIFBSRV9JTklUKEJhc2VFeGNlcHRpb24pCiAgICAgUFJFX0lOSVQoRXhjZXB0aW9uKQpAQCAtMTk4OSwxNSArMjM5NSw3IEBACiAgICAgUFJFX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQUkVfSU5JVChLZXlib2FyZEludGVycnVwdCkKICAgICBQUkVfSU5JVChJbXBvcnRFcnJvcikKLSAgICBQUkVfSU5JVChFbnZpcm9ubWVudEVycm9yKQotICAgIFBSRV9JTklUKElPRXJyb3IpCiAgICAgUFJFX0lOSVQoT1NFcnJvcikKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUFJFX0lOSVQoV2luZG93c0Vycm9yKQotI2VuZGlmCi0jaWZkZWYgX19WTVMKLSAgICBQUkVfSU5JVChWTVNFcnJvcikKLSNlbmRpZgogICAgIFBSRV9JTklUKEVPRkVycm9yKQogICAgIFBSRV9JTklUKFJ1bnRpbWVFcnJvcikKICAgICBQUkVfSU5JVChOb3RJbXBsZW1lbnRlZEVycm9yKQpAQCAtMjAzNyw5ICsyNDM1LDI0IEBACiAgICAgUFJFX0lOSVQoQnl0ZXNXYXJuaW5nKQogICAgIFBSRV9JTklUKFJlc291cmNlV2FybmluZykKIAotICAgIGJsdGlubW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOwotICAgIGlmIChibHRpbm1vZCA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJleGNlcHRpb25zIGJvb3RzdHJhcHBpbmcgZXJyb3IuIik7CisgICAgLyogT1NFcnJvciBzdWJjbGFzc2VzICovCisgICAgUFJFX0lOSVQoQ29ubmVjdGlvbkVycm9yKTsKKworICAgIFBSRV9JTklUKEJsb2NraW5nSU9FcnJvcik7CisgICAgUFJFX0lOSVQoQnJva2VuUGlwZUVycm9yKTsKKyAgICBQUkVfSU5JVChDaGlsZFByb2Nlc3NFcnJvcik7CisgICAgUFJFX0lOSVQoQ29ubmVjdGlvbkFib3J0ZWRFcnJvcik7CisgICAgUFJFX0lOSVQoQ29ubmVjdGlvblJlZnVzZWRFcnJvcik7CisgICAgUFJFX0lOSVQoQ29ubmVjdGlvblJlc2V0RXJyb3IpOworICAgIFBSRV9JTklUKEZpbGVFeGlzdHNFcnJvcik7CisgICAgUFJFX0lOSVQoRmlsZU5vdEZvdW5kRXJyb3IpOworICAgIFBSRV9JTklUKElzQURpcmVjdG9yeUVycm9yKTsKKyAgICBQUkVfSU5JVChOb3RBRGlyZWN0b3J5RXJyb3IpOworICAgIFBSRV9JTklUKEludGVycnVwdGVkRXJyb3IpOworICAgIFBSRV9JTklUKFBlcm1pc3Npb25FcnJvcik7CisgICAgUFJFX0lOSVQoUHJvY2Vzc0xvb2t1cEVycm9yKTsKKyAgICBQUkVfSU5JVChUaW1lb3V0RXJyb3IpOworCiAgICAgYmRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KGJsdGlubW9kKTsKICAgICBpZiAoYmRpY3QgPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiZXhjZXB0aW9ucyBib290c3RyYXBwaW5nIGVycm9yLiIpOwpAQCAtMjA1MiwxNCArMjQ2NSwxNCBAQAogICAgIFBPU1RfSU5JVChTeXN0ZW1FeGl0KQogICAgIFBPU1RfSU5JVChLZXlib2FyZEludGVycnVwdCkKICAgICBQT1NUX0lOSVQoSW1wb3J0RXJyb3IpCi0gICAgUE9TVF9JTklUKEVudmlyb25tZW50RXJyb3IpCi0gICAgUE9TVF9JTklUKElPRXJyb3IpCiAgICAgUE9TVF9JTklUKE9TRXJyb3IpCisgICAgSU5JVF9BTElBUyhFbnZpcm9ubWVudEVycm9yLCBPU0Vycm9yKQorICAgIElOSVRfQUxJQVMoSU9FcnJvciwgT1NFcnJvcikKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgUE9TVF9JTklUKFdpbmRvd3NFcnJvcikKKyAgICBJTklUX0FMSUFTKFdpbmRvd3NFcnJvciwgT1NFcnJvcikKICNlbmRpZgogI2lmZGVmIF9fVk1TCi0gICAgUE9TVF9JTklUKFZNU0Vycm9yKQorICAgIElOSVRfQUxJQVMoVk1TRXJyb3IsIE9TRXJyb3IpCiAjZW5kaWYKICAgICBQT1NUX0lOSVQoRU9GRXJyb3IpCiAgICAgUE9TVF9JTklUKFJ1bnRpbWVFcnJvcikKQEAgLTIxMDAsNiArMjUxMyw0OSBAQAogICAgIFBPU1RfSU5JVChCeXRlc1dhcm5pbmcpCiAgICAgUE9TVF9JTklUKFJlc291cmNlV2FybmluZykKIAorICAgIGlmICghZXJybm9tYXApIHsKKyAgICAgICAgZXJybm9tYXAgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmICghZXJybm9tYXApCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgYWxsb2NhdGUgbWFwIGZyb20gZXJybm9zIHRvIE9TRXJyb3Igc3ViY2xhc3NlcyIpOworICAgIH0KKworICAgIC8qIE9TRXJyb3Igc3ViY2xhc3NlcyAqLworICAgIFBPU1RfSU5JVChDb25uZWN0aW9uRXJyb3IpOworCisgICAgUE9TVF9JTklUKEJsb2NraW5nSU9FcnJvcik7CisgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRUFHQUlOKTsKKyAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFQUxSRUFEWSk7CisgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRUlOUFJPR1JFU1MpOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVXT1VMREJMT0NLKTsKKyAgICBQT1NUX0lOSVQoQnJva2VuUGlwZUVycm9yKTsKKyAgICBBRERfRVJSTk8oQnJva2VuUGlwZUVycm9yLCBFUElQRSk7CisgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVNIVVRET1dOKTsKKyAgICBQT1NUX0lOSVQoQ2hpbGRQcm9jZXNzRXJyb3IpOworICAgIEFERF9FUlJOTyhDaGlsZFByb2Nlc3NFcnJvciwgRUNISUxEKTsKKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvbkFib3J0ZWRFcnJvcik7CisgICAgQUREX0VSUk5PKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IsIEVDT05OQUJPUlRFRCk7CisgICAgUE9TVF9JTklUKENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IpOworICAgIEFERF9FUlJOTyhDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBFQ09OTlJFRlVTRUQpOworICAgIFBPU1RfSU5JVChDb25uZWN0aW9uUmVzZXRFcnJvcik7CisgICAgQUREX0VSUk5PKENvbm5lY3Rpb25SZXNldEVycm9yLCBFQ09OTlJFU0VUKTsKKyAgICBQT1NUX0lOSVQoRmlsZUV4aXN0c0Vycm9yKTsKKyAgICBBRERfRVJSTk8oRmlsZUV4aXN0c0Vycm9yLCBFRVhJU1QpOworICAgIFBPU1RfSU5JVChGaWxlTm90Rm91bmRFcnJvcik7CisgICAgQUREX0VSUk5PKEZpbGVOb3RGb3VuZEVycm9yLCBFTk9FTlQpOworICAgIFBPU1RfSU5JVChJc0FEaXJlY3RvcnlFcnJvcik7CisgICAgQUREX0VSUk5PKElzQURpcmVjdG9yeUVycm9yLCBFSVNESVIpOworICAgIFBPU1RfSU5JVChOb3RBRGlyZWN0b3J5RXJyb3IpOworICAgIEFERF9FUlJOTyhOb3RBRGlyZWN0b3J5RXJyb3IsIEVOT1RESVIpOworICAgIFBPU1RfSU5JVChJbnRlcnJ1cHRlZEVycm9yKTsKKyAgICBBRERfRVJSTk8oSW50ZXJydXB0ZWRFcnJvciwgRUlOVFIpOworICAgIFBPU1RfSU5JVChQZXJtaXNzaW9uRXJyb3IpOworICAgIEFERF9FUlJOTyhQZXJtaXNzaW9uRXJyb3IsIEVBQ0NFUyk7CisgICAgQUREX0VSUk5PKFBlcm1pc3Npb25FcnJvciwgRVBFUk0pOworICAgIFBPU1RfSU5JVChQcm9jZXNzTG9va3VwRXJyb3IpOworICAgIEFERF9FUlJOTyhQcm9jZXNzTG9va3VwRXJyb3IsIEVTUkNIKTsKKyAgICBQT1NUX0lOSVQoVGltZW91dEVycm9yKTsKKyAgICBBRERfRVJSTk8oVGltZW91dEVycm9yLCBFVElNRURPVVQpOworCiAgICAgcHJlYWxsb2NhdGVfbWVtZXJyb3JzKCk7CiAKICAgICBpZiAoIVB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCkgewpAQCAtMjEyNiw3ICsyNTgyLDYgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzX3R1cGxlKTsKICAgICAgICAgfQogICAgIH0KLSAgICBQeV9ERUNSRUYoYmx0aW5tb2QpOwogfQogCiB2b2lkCkBAIC0yMTM0LDQgKzI1ODksNSBAQAogewogICAgIFB5X0NMRUFSKFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCk7CiAgICAgZnJlZV9wcmVhbGxvY2F0ZWRfbWVtZXJyb3JzKCk7CisgICAgUHlfQ0xFQVIoZXJybm9tYXApOwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9maWxlb2JqZWN0LmMgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwppbmRleCBkMjBmMTk2Li5lMWM0N2NlIDEwMDY0NAotLS0gYS9PYmplY3RzL2ZpbGVvYmplY3QuYworKysgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwpAQCAtMzAsMTEgKzMwLDEyIEBACiAgICAgICAgICAgICAgIGNoYXIgKmVycm9ycywgY2hhciAqbmV3bGluZSwgaW50IGNsb3NlZmQpCiB7CiAgICAgUHlPYmplY3QgKmlvLCAqc3RyZWFtOworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOwogCiAgICAgaW8gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImlvIik7CiAgICAgaWYgKGlvID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cmVhbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgImlzaXNzc2kiLCBmZCwgbW9kZSwKKyAgICBzdHJlYW0gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpc3NzaSIsIGZkLCBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyaW5nLCBlbmNvZGluZywgZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZSwgY2xvc2VmZCk7CiAgICAgUHlfREVDUkVGKGlvKTsKQEAgLTU4LDggKzU5LDkgQEAKICAgICB7CiAgICAgICAgIFB5T2JqZWN0ICpyZWFkZXI7CiAgICAgICAgIFB5T2JqZWN0ICphcmdzOworICAgICAgICBfUHlfSURFTlRJRklFUihyZWFkbGluZSk7CiAKLSAgICAgICAgcmVhZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmLCAicmVhZGxpbmUiKTsKKyAgICAgICAgcmVhZGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChmLCAmUHlJZF9yZWFkbGluZSk7CiAgICAgICAgIGlmIChyZWFkZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAobiA8PSAwKQpAQCAtMTAzLDIzICsxMDUsMTggQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAobiA8IDAgJiYgcmVzdWx0ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKICAgICAgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVPRiB3aGVuIHJlYWRpbmcgYSBsaW5lIik7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc1tsZW4tMV0gPT0gJ1xuJykgewotICAgICAgICAgICAgaWYgKHJlc3VsdC0+b2JfcmVmY250ID09IDEpCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBsZW4tMSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIGxlbi0xKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB2OwotICAgICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHJlc3VsdCwgbGVuLTEpID09ICdcbicpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2OworICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9TdWJzdHJpbmcocmVzdWx0LCAwLCBsZW4tMSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHY7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzMSwxMSArMTI4LDEzIEBACiBQeUZpbGVfV3JpdGVPYmplY3QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpmLCBpbnQgZmxhZ3MpCiB7CiAgICAgUHlPYmplY3QgKndyaXRlciwgKnZhbHVlLCAqYXJncywgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKICAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJ3cml0ZW9iamVjdCB3aXRoIE5VTEwgZmlsZSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHdyaXRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZiwgIndyaXRlIik7CisgICAgd3JpdGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChmLCAmUHlJZF93cml0ZSk7CiAgICAgaWYgKHdyaXRlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKGZsYWdzICYgUHlfUFJJTlRfUkFXKSB7CkBAIC0xOTgsMTEgKzE5NywxMiBAQAogewogICAgIGludCBmZDsKICAgICBQeU9iamVjdCAqbWV0aDsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbm8pOwogCiAgICAgaWYgKFB5TG9uZ19DaGVjayhvKSkgewogICAgICAgICBmZCA9IFB5TG9uZ19Bc0xvbmcobyk7CiAgICAgfQotICAgIGVsc2UgaWYgKChtZXRoID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCAiZmlsZW5vIikpICE9IE5VTEwpCisgICAgZWxzZSBpZiAoKG1ldGggPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sICZQeUlkX2ZpbGVubykpICE9IE5VTEwpCiAgICAgewogICAgICAgICBQeU9iamVjdCAqZm5vID0gUHlFdmFsX0NhbGxPYmplY3QobWV0aCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKQEAgLTI5Nyw4ICsyOTcsOCBAQAogICAgICAgICAqcCsrID0gYzsKICAgICAgICAgaWYgKGMgPT0gJ1xuJykgYnJlYWs7CiAgICAgfQotICAgIGlmICggYyA9PSBFT0YgJiYgc2tpcG5leHRsZiApCi0gICAgICAgIG5ld2xpbmV0eXBlcyB8PSBORVdMSU5FX0NSOworICAgIC8qIGlmICggYyA9PSBFT0YgJiYgc2tpcG5leHRsZiApCisgICAgICAgIG5ld2xpbmV0eXBlcyB8PSBORVdMSU5FX0NSOyAqLwogICAgIEZVTkxPQ0tGSUxFKHN0cmVhbSk7CiAgICAgKnAgPSAnXDAnOwogICAgIGlmICggc2tpcG5leHRsZiApIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvZmxvYXRvYmplY3QuYyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwppbmRleCBlMTQ2YTRmLi5hNDJiZTcxIDEwMDY0NAotLS0gYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCkBAIC0xNSw1OSArMTUsMTcgQEAKICNkZWZpbmUgTUlOKHgsIHkpICgoeCkgPCAoeSkgPyAoeCkgOiAoeSkpCiAKIAotI2lmZGVmIF9PU0ZfU09VUkNFCi0vKiBPU0YxIDUuMSBkb2Vzbid0IG1ha2UgdGhpcyBhdmFpbGFibGUgd2l0aCBYT1BFTl9TT1VSQ0VfRVhURU5ERUQgZGVmaW5lZCAqLwotZXh0ZXJuIGludCBmaW5pdGUoZG91YmxlKTsKLSNlbmRpZgotCiAvKiBTcGVjaWFsIGZyZWUgbGlzdAotCi0gICBTaW5jZSBzb21lIFB5dGhvbiBwcm9ncmFtcyBjYW4gc3BlbmQgbXVjaCBvZiB0aGVpciB0aW1lIGFsbG9jYXRpbmcKLSAgIGFuZCBkZWFsbG9jYXRpbmcgZmxvYXRzLCB0aGVzZSBvcGVyYXRpb25zIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCi0gICBUaGVyZWZvcmUgd2UgdXNlIGEgZGVkaWNhdGVkIGFsbG9jYXRpb24gc2NoZW1lIHdpdGggYSBtdWNoIGxvd2VyCi0gICBvdmVyaGVhZCAoaW4gc3BhY2UgYW5kIHRpbWUpIHRoYW4gc3RyYWlnaHQgbWFsbG9jKCk6IGEgc2ltcGxlCi0gICBkZWRpY2F0ZWQgZnJlZSBsaXN0LCBmaWxsZWQgd2hlbiBuZWNlc3Nhcnkgd2l0aCBtZW1vcnkgZnJvbSBtYWxsb2MoKS4KLQotICAgYmxvY2tfbGlzdCBpcyBhIHNpbmdseS1saW5rZWQgbGlzdCBvZiBhbGwgUHlGbG9hdEJsb2NrcyBldmVyIGFsbG9jYXRlZCwKLSAgIGxpbmtlZCB2aWEgdGhlaXIgbmV4dCBtZW1iZXJzLiAgUHlGbG9hdEJsb2NrcyBhcmUgbmV2ZXIgcmV0dXJuZWQgdG8gdGhlCi0gICBzeXN0ZW0gYmVmb3JlIHNodXRkb3duIChQeUZsb2F0X0ZpbmkpLgotCiAgICBmcmVlX2xpc3QgaXMgYSBzaW5nbHktbGlua2VkIGxpc3Qgb2YgYXZhaWxhYmxlIFB5RmxvYXRPYmplY3RzLCBsaW5rZWQKICAgIHZpYSBhYnVzZSBvZiB0aGVpciBvYl90eXBlIG1lbWJlcnMuCiAqLwogCi0jZGVmaW5lIEJMT0NLX1NJWkUgICAgICAxMDAwICAgIC8qIDFLIGxlc3MgdHlwaWNhbCBtYWxsb2Mgb3ZlcmhlYWQgKi8KLSNkZWZpbmUgQkhFQURfU0laRSAgICAgIDggICAgICAgLyogRW5vdWdoIGZvciBhIDY0LWJpdCBwb2ludGVyICovCi0jZGVmaW5lIE5fRkxPQVRPQkpFQ1RTICAoKEJMT0NLX1NJWkUgLSBCSEVBRF9TSVpFKSAvIHNpemVvZihQeUZsb2F0T2JqZWN0KSkKLQotc3RydWN0IF9mbG9hdGJsb2NrIHsKLSAgICBzdHJ1Y3QgX2Zsb2F0YmxvY2sgKm5leHQ7Ci0gICAgUHlGbG9hdE9iamVjdCBvYmplY3RzW05fRkxPQVRPQkpFQ1RTXTsKLX07Ci0KLXR5cGVkZWYgc3RydWN0IF9mbG9hdGJsb2NrIFB5RmxvYXRCbG9jazsKLQotc3RhdGljIFB5RmxvYXRCbG9jayAqYmxvY2tfbGlzdCA9IE5VTEw7CisjaWZuZGVmIFB5RmxvYXRfTUFYRlJFRUxJU1QKKyNkZWZpbmUgUHlGbG9hdF9NQVhGUkVFTElTVCAgICAxMDAKKyNlbmRpZgorc3RhdGljIGludCBudW1mcmVlID0gMDsKIHN0YXRpYyBQeUZsb2F0T2JqZWN0ICpmcmVlX2xpc3QgPSBOVUxMOwogCi1zdGF0aWMgUHlGbG9hdE9iamVjdCAqCi1maWxsX2ZyZWVfbGlzdCh2b2lkKQotewotICAgIFB5RmxvYXRPYmplY3QgKnAsICpxOwotICAgIC8qIFhYWCBGbG9hdCBibG9ja3MgZXNjYXBlIHRoZSBvYmplY3QgaGVhcC4gVXNlIFB5T2JqZWN0X01BTExPQyA/Pz8gKi8KLSAgICBwID0gKFB5RmxvYXRPYmplY3QgKikgUHlNZW1fTUFMTE9DKHNpemVvZihQeUZsb2F0QmxvY2spKTsKLSAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gKFB5RmxvYXRPYmplY3QgKikgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAoKFB5RmxvYXRCbG9jayAqKXApLT5uZXh0ID0gYmxvY2tfbGlzdDsKLSAgICBibG9ja19saXN0ID0gKFB5RmxvYXRCbG9jayAqKXA7Ci0gICAgcCA9ICYoKFB5RmxvYXRCbG9jayAqKXApLT5vYmplY3RzWzBdOwotICAgIHEgPSBwICsgTl9GTE9BVE9CSkVDVFM7Ci0gICAgd2hpbGUgKC0tcSA+IHApCi0gICAgICAgIFB5X1RZUEUocSkgPSAoc3RydWN0IF90eXBlb2JqZWN0ICopKHEtMSk7Ci0gICAgUHlfVFlQRShxKSA9IE5VTEw7Ci0gICAgcmV0dXJuIHAgKyBOX0ZMT0FUT0JKRUNUUyAtIDE7Ci19Ci0KIGRvdWJsZQogUHlGbG9hdF9HZXRNYXgodm9pZCkKIHsKQEAgLTE1NiwxNCArMTE0LDE2IEBACiBQeU9iamVjdCAqCiBQeUZsb2F0X0Zyb21Eb3VibGUoZG91YmxlIGZ2YWwpCiB7Ci0gICAgcmVnaXN0ZXIgUHlGbG9hdE9iamVjdCAqb3A7Ci0gICAgaWYgKGZyZWVfbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmICgoZnJlZV9saXN0ID0gZmlsbF9mcmVlX2xpc3QoKSkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlZ2lzdGVyIFB5RmxvYXRPYmplY3QgKm9wID0gZnJlZV9saXN0OworICAgIGlmIChvcCAhPSBOVUxMKSB7CisgICAgICAgIGZyZWVfbGlzdCA9IChQeUZsb2F0T2JqZWN0ICopIFB5X1RZUEUob3ApOworICAgICAgICBudW1mcmVlLS07CisgICAgfSBlbHNlIHsKKyAgICAgICAgb3AgPSAoUHlGbG9hdE9iamVjdCopIFB5T2JqZWN0X01BTExPQyhzaXplb2YoUHlGbG9hdE9iamVjdCkpOworICAgICAgICBpZiAoIW9wKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogICAgIC8qIElubGluZSBQeU9iamVjdF9OZXcgKi8KLSAgICBvcCA9IGZyZWVfbGlzdDsKLSAgICBmcmVlX2xpc3QgPSAoUHlGbG9hdE9iamVjdCAqKVB5X1RZUEUob3ApOwogICAgIFB5T2JqZWN0X0lOSVQob3AsICZQeUZsb2F0X1R5cGUpOwogICAgIG9wLT5vYl9mdmFsID0gZnZhbDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwpAQCAtMTc5LDI1ICsxMzksMTQgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpLCBidWZsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodik7Ci0gICAgICAgIFB5X1VOSUNPREUgKmJ1ZnB0cjsKLSAgICAgICAgc19idWZmZXIgPSBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSwgYnVmbGVuKTsKKyAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7CiAgICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qIFJlcGxhY2Ugbm9uLUFTQ0lJIHdoaXRlc3BhY2Ugd2l0aCAnICcgKi8KLSAgICAgICAgYnVmcHRyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc19idWZmZXIpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYnVmbGVuOyBpKyspIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2ggPSBidWZwdHJbaV07Ci0gICAgICAgICAgICBpZiAoY2ggPiAxMjcgJiYgUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkKLSAgICAgICAgICAgICAgICBidWZwdHJbaV0gPSAnICc7Ci0gICAgICAgIH0KLSAgICAgICAgcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHNfYnVmZmVyLCAmbGVuKTsKKyAgICAgICAgcyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHNfYnVmZmVyLCAmbGVuKTsKICAgICAgICAgaWYgKHMgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNfYnVmZmVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGxhc3QgPSBzICsgbGVuOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Bc0NoYXJCdWZmZXIodiwgJnMsICZsZW4pKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC0yMzMsNiArMTgyLDExIEBACiBmbG9hdF9kZWFsbG9jKFB5RmxvYXRPYmplY3QgKm9wKQogewogICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3Qob3ApKSB7CisgICAgICAgIGlmIChudW1mcmVlID49IFB5RmxvYXRfTUFYRlJFRUxJU1QpICB7CisgICAgICAgICAgICBQeU9iamVjdF9GUkVFKG9wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBudW1mcmVlKys7CiAgICAgICAgIFB5X1RZUEUob3ApID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKWZyZWVfbGlzdDsKICAgICAgICAgZnJlZV9saXN0ID0gb3A7CiAgICAgfQpAQCAtMzEzLDEzICsyNjcsMTUgQEAKIGZsb2F0X3JlcHIoUHlGbG9hdE9iamVjdCAqdikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGNoYXIgKmJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhQeUZsb2F0X0FTX0RPVUJMRSh2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3InLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9EVFNGX0FERF9ET1RfMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgY2hhciAqYnVmOworCisgICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKFB5RmxvYXRfQVNfRE9VQkxFKHYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncicsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RUU0ZfQUREX0RPVF8wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICBpZiAoIWJ1ZikKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICByZXN1bHQgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShidWYsIHN0cmxlbihidWYpKTsKICAgICBQeU1lbV9GcmVlKGJ1Zik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUyMyw4ICs0NzksNyBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocik7CiAKICBVbmltcGxlbWVudGVkOgotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5X2hhc2hfdApAQCAtMTA4MCw3ICsxMDM1LDcgQEAKIGNoYXJfZnJvbV9oZXgoaW50IHgpCiB7CiAgICAgYXNzZXJ0KDAgPD0geCAmJiB4IDwgMTYpOwotICAgIHJldHVybiAiMDEyMzQ1Njc4OWFiY2RlZiJbeF07CisgICAgcmV0dXJuIFB5X2hleGRpZ2l0c1t4XTsKIH0KIAogc3RhdGljIGludApAQCAtMTc1MCwxMiArMTcwNSwyMiBAQAogZmxvYXRfX2Zvcm1hdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWM7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgaW50IHJldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdF9zcGVjKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGZvcm1hdF9zcGVjKSk7CisKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgMCk7CisgICAgcmV0ID0gX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgICAgICZ3cml0ZXIsCisgICAgICAgIHNlbGYsCisgICAgICAgIGZvcm1hdF9zcGVjLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiBQeURvY19TVFJWQVIoZmxvYXRfX2Zvcm1hdF9fZG9jLApAQCAtMTk1MCw5OCArMTkxNSwzNCBAQAogaW50CiBQeUZsb2F0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKLSAgICBQeUZsb2F0T2JqZWN0ICpwOwotICAgIFB5RmxvYXRCbG9jayAqbGlzdCwgKm5leHQ7Ci0gICAgaW50IGk7Ci0gICAgaW50IHU7ICAgICAgICAgICAgICAgICAgICAgIC8qIHJlbWFpbmluZyB1bmZyZWVkIGZsb2F0cyBwZXIgYmxvY2sgKi8KLSAgICBpbnQgZnJlZWxpc3Rfc2l6ZSA9IDA7Ci0KLSAgICBsaXN0ID0gYmxvY2tfbGlzdDsKLSAgICBibG9ja19saXN0ID0gTlVMTDsKLSAgICBmcmVlX2xpc3QgPSBOVUxMOwotICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsKLSAgICAgICAgdSA9IDA7Ci0gICAgICAgIGZvciAoaSA9IDAsIHAgPSAmbGlzdC0+b2JqZWN0c1swXTsKLSAgICAgICAgICAgICBpIDwgTl9GTE9BVE9CSkVDVFM7Ci0gICAgICAgICAgICAgaSsrLCBwKyspIHsKLSAgICAgICAgICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QocCkgJiYgUHlfUkVGQ05UKHApICE9IDApCi0gICAgICAgICAgICAgICAgdSsrOwotICAgICAgICB9Ci0gICAgICAgIG5leHQgPSBsaXN0LT5uZXh0OwotICAgICAgICBpZiAodSkgewotICAgICAgICAgICAgbGlzdC0+bmV4dCA9IGJsb2NrX2xpc3Q7Ci0gICAgICAgICAgICBibG9ja19saXN0ID0gbGlzdDsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIHAgPSAmbGlzdC0+b2JqZWN0c1swXTsKLSAgICAgICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgICAgICBpKyssIHArKykgewotICAgICAgICAgICAgICAgIGlmICghUHlGbG9hdF9DaGVja0V4YWN0KHApIHx8Ci0gICAgICAgICAgICAgICAgICAgIFB5X1JFRkNOVChwKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocCkgPSAoc3RydWN0IF90eXBlb2JqZWN0ICopCi0gICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2xpc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWVfbGlzdCA9IHA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlNZW1fRlJFRShsaXN0KTsKLSAgICAgICAgfQotICAgICAgICBmcmVlbGlzdF9zaXplICs9IHU7Ci0gICAgICAgIGxpc3QgPSBuZXh0OworICAgIFB5RmxvYXRPYmplY3QgKmYgPSBmcmVlX2xpc3QsICpuZXh0OworICAgIGludCBpID0gbnVtZnJlZTsKKyAgICB3aGlsZSAoZikgeworICAgICAgICBuZXh0ID0gKFB5RmxvYXRPYmplY3QqKSBQeV9UWVBFKGYpOworICAgICAgICBQeU9iamVjdF9GUkVFKGYpOworICAgICAgICBmID0gbmV4dDsKICAgICB9Ci0gICAgcmV0dXJuIGZyZWVsaXN0X3NpemU7CisgICAgZnJlZV9saXN0ID0gTlVMTDsKKyAgICBudW1mcmVlID0gMDsKKyAgICByZXR1cm4gaTsKIH0KIAogdm9pZAogUHlGbG9hdF9GaW5pKHZvaWQpCiB7Ci0gICAgUHlGbG9hdE9iamVjdCAqcDsKLSAgICBQeUZsb2F0QmxvY2sgKmxpc3Q7Ci0gICAgaW50IGk7Ci0gICAgaW50IHU7ICAgICAgICAgICAgICAgICAgICAgIC8qIHRvdGFsIHVuZnJlZWQgZmxvYXRzIHBlciBibG9jayAqLwotCi0gICAgdSA9IFB5RmxvYXRfQ2xlYXJGcmVlTGlzdCgpOwotCi0gICAgaWYgKCFQeV9WZXJib3NlRmxhZykKLSAgICAgICAgcmV0dXJuOwotICAgIGZwcmludGYoc3RkZXJyLCAiIyBjbGVhbnVwIGZsb2F0cyIpOwotICAgIGlmICghdSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICI6ICVkIHVuZnJlZWQgZmxvYXQlc1xuIiwKLSAgICAgICAgICAgIHUsIHUgPT0gMSA/ICIiIDogInMiKTsKLSAgICB9Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkgewotICAgICAgICBsaXN0ID0gYmxvY2tfbGlzdDsKLSAgICAgICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewotICAgICAgICAgICAgZm9yIChpID0gMCwgcCA9ICZsaXN0LT5vYmplY3RzWzBdOwotICAgICAgICAgICAgICAgICBpIDwgTl9GTE9BVE9CSkVDVFM7Ci0gICAgICAgICAgICAgICAgIGkrKywgcCsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RmxvYXRfQ2hlY2tFeGFjdChwKSAmJgotICAgICAgICAgICAgICAgICAgICBQeV9SRUZDTlQocCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUZsb2F0X0FTX0RPVUJMRShwKSwgJ3InLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChidWYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCh0d291dGVycykgY2FzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmY291bnQgdG8gbG9uZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgJXpkIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgICIjICAgPGZsb2F0IGF0ICVwLCByZWZjbnQ9JWxkLCB2YWw9JXM+XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgKGxvbmcpUHlfUkVGQ05UKHApLCBidWYpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaXN0ID0gbGlzdC0+bmV4dDsKLSAgICAgICAgfQotICAgIH0KKyAgICAodm9pZClQeUZsb2F0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5RmxvYXRfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeUZsb2F0T2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeUZsb2F0T2JqZWN0KSk7Cit9CisKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBfUHlGbG9hdF97UGFjayxVbnBhY2t9ezQsOH0uICBTZWUgZmxvYXRvYmplY3QuaC4KICAqLwpAQCAtMjI1MSw3ICsyMTUyLDcgQEAKIAogICAgICAgICAvKiBFaWdodGggYnl0ZSAqLwogICAgICAgICAqcCA9IGZsbyAmIDB4RkY7Ci0gICAgICAgIHAgKz0gaW5jcjsKKyAgICAgICAgLyogcCArPSBpbmNyOyAqLwogCiAgICAgICAgIC8qIERvbmUgKi8KICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggYWRjZTQyYi4uODA4ZTU5NSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTUsMTEgKzE1LDExIEBACiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeUZyYW1lT2JqZWN0LCB4KQogCiBzdGF0aWMgUHlNZW1iZXJEZWYgZnJhbWVfbWVtYmVybGlzdFtdID0gewotICAgIHsiZl9iYWNrIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2JhY2spLCAgICBSRUFET05MWX0sCi0gICAgeyJmX2NvZGUiLCAgICAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfY29kZSksICAgIFJFQURPTkxZfSwKLSAgICB7ImZfYnVpbHRpbnMiLCAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9idWlsdGlucyksUkVBRE9OTFl9LAotICAgIHsiZl9nbG9iYWxzIiwgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2dsb2JhbHMpLCBSRUFET05MWX0sCi0gICAgeyJmX2xhc3RpIiwgICAgICAgICBUX0lOVCwgICAgICAgICAgT0ZGKGZfbGFzdGkpLCAgIFJFQURPTkxZfSwKKyAgICB7ImZfYmFjayIsICAgICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9iYWNrKSwgICAgICBSRUFET05MWX0sCisgICAgeyJmX2NvZGUiLCAgICAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfY29kZSksICAgICAgUkVBRE9OTFl9LAorICAgIHsiZl9idWlsdGlucyIsICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2J1aWx0aW5zKSwgIFJFQURPTkxZfSwKKyAgICB7ImZfZ2xvYmFscyIsICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9nbG9iYWxzKSwgICBSRUFET05MWX0sCisgICAgeyJmX2xhc3RpIiwgICAgICAgICBUX0lOVCwgICAgICAgICAgT0ZGKGZfbGFzdGkpLCAgICAgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC02MTQsMTAgKzYxNCw4IEBACiAgICAgICAgIGlmIChidWlsdGlucykgewogICAgICAgICAgICAgaWYgKFB5TW9kdWxlX0NoZWNrKGJ1aWx0aW5zKSkgewogICAgICAgICAgICAgICAgIGJ1aWx0aW5zID0gUHlNb2R1bGVfR2V0RGljdChidWlsdGlucyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFidWlsdGlucyB8fCBQeURpY3RfQ2hlY2soYnVpbHRpbnMpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYnVpbHRpbnMgIT0gTlVMTCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICghUHlEaWN0X0NoZWNrKGJ1aWx0aW5zKSkKLSAgICAgICAgICAgICAgICBidWlsdGlucyA9IE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpIHsKICAgICAgICAgICAgIC8qIE5vIGJ1aWx0aW5zISAgICAgICAgICAgICAgTWFrZSB1cCBhIG1pbmltYWwgb25lCkBAIC02MzYsNyArNjM0LDcgQEAKICAgICAgICAgLyogSWYgd2Ugc2hhcmUgdGhlIGdsb2JhbHMsIHdlIHNoYXJlIHRoZSBidWlsdGlucy4KICAgICAgICAgICAgU2F2ZSBhIGxvb2t1cCBhbmQgYSBjYWxsLiAqLwogICAgICAgICBidWlsdGlucyA9IGJhY2stPmZfYnVpbHRpbnM7Ci0gICAgICAgIGFzc2VydChidWlsdGlucyAhPSBOVUxMICYmIFB5RGljdF9DaGVjayhidWlsdGlucykpOworICAgICAgICBhc3NlcnQoYnVpbHRpbnMgIT0gTlVMTCk7CiAgICAgICAgIFB5X0lOQ1JFRihidWlsdGlucyk7CiAgICAgfQogICAgIGlmIChjb2RlLT5jb196b21iaWVmcmFtZSAhPSBOVUxMKSB7CkBAIC02NjUsMTEgKzY2MywxMyBAQAogICAgICAgICAgICAgZiA9IGZyZWVfbGlzdDsKICAgICAgICAgICAgIGZyZWVfbGlzdCA9IGZyZWVfbGlzdC0+Zl9iYWNrOwogICAgICAgICAgICAgaWYgKFB5X1NJWkUoZikgPCBleHRyYXMpIHsKLSAgICAgICAgICAgICAgICBmID0gUHlPYmplY3RfR0NfUmVzaXplKFB5RnJhbWVPYmplY3QsIGYsIGV4dHJhcyk7Ci0gICAgICAgICAgICAgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKm5ld19mID0gUHlPYmplY3RfR0NfUmVzaXplKFB5RnJhbWVPYmplY3QsIGYsIGV4dHJhcyk7CisgICAgICAgICAgICAgICAgaWYgKG5ld19mID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3RfR0NfRGVsKGYpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYnVpbHRpbnMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZiA9IG5ld19mOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKilmKTsKICAgICAgICAgfQpAQCAtOTU1LDMgKzk1NSwxMyBAQAogICAgIFB5X1hERUNSRUYoYnVpbHRpbl9vYmplY3QpOwogICAgIGJ1aWx0aW5fb2JqZWN0ID0gTlVMTDsKIH0KKworLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5RnJhbWVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeUZyYW1lT2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeUZyYW1lT2JqZWN0KSk7Cit9CisKZGlmZiAtLWdpdCBhL09iamVjdHMvZnVuY29iamVjdC5jIGIvT2JqZWN0cy9mdW5jb2JqZWN0LmMKaW5kZXggMjI5MmE5ZS4uNDk0MTViOSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mdW5jb2JqZWN0LmMKQEAgLTYsNyArNiw3IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKIFB5T2JqZWN0ICoKLVB5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqZ2xvYmFscykKK1B5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5RnVuY3Rpb25PYmplY3QgKm9wID0gUHlPYmplY3RfR0NfTmV3KFB5RnVuY3Rpb25PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RnVuY3Rpb25fVHlwZSk7CkBAIC01NCw2ICs1NCwxMSBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKG1vZHVsZSk7CiAgICAgICAgICAgICBvcC0+ZnVuY19tb2R1bGUgPSBtb2R1bGU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHF1YWxuYW1lKQorICAgICAgICAgICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSBxdWFsbmFtZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSBvcC0+ZnVuY19uYW1lOworICAgICAgICBQeV9JTkNSRUYob3AtPmZ1bmNfcXVhbG5hbWUpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjIsNiArNjcsMTIgQEAKIH0KIAogUHlPYmplY3QgKgorUHlGdW5jdGlvbl9OZXcoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpnbG9iYWxzKQoreworICAgIHJldHVybiBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2RlLCBnbG9iYWxzLCBOVUxMKTsKK30KKworUHlPYmplY3QgKgogUHlGdW5jdGlvbl9HZXRDb2RlKFB5T2JqZWN0ICpvcCkKIHsKICAgICBpZiAoIVB5RnVuY3Rpb25fQ2hlY2sob3ApKSB7CkBAIC0yMzQsNDIgKzI0NSw2IEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgotZnVuY19nZXRfZGljdChQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKLXsKLSAgICBpZiAob3AtPmZ1bmNfZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIG9wLT5mdW5jX2RpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChvcC0+ZnVuY19kaWN0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKG9wLT5mdW5jX2RpY3QpOwotICAgIHJldHVybiBvcC0+ZnVuY19kaWN0OwotfQotCi1zdGF0aWMgaW50Ci1mdW5jX3NldF9kaWN0KFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnRtcDsKLQotICAgIC8qIEl0IGlzIGlsbGVnYWwgdG8gZGVsIGYuZnVuY19kaWN0ICovCi0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbidzIGRpY3Rpb25hcnkgbWF5IG5vdCBiZSBkZWxldGVkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogQ2FuIG9ubHkgc2V0IGZ1bmNfZGljdCB0byBhIGRpY3Rpb25hcnkgKi8KLSAgICBpZiAoIVB5RGljdF9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzZXR0aW5nIGZ1bmN0aW9uJ3MgZGljdGlvbmFyeSB0byBhIG5vbi1kaWN0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfZGljdDsKLSAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2RpY3QgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBmdW5jX2dldF9jb2RlKFB5RnVuY3Rpb25PYmplY3QgKm9wKQogewogICAgIFB5X0lOQ1JFRihvcC0+ZnVuY19jb2RlKTsKQEAgLTMzNCw2ICszMDksMzIgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2Z1bmNfZ2V0X3F1YWxuYW1lKFB5RnVuY3Rpb25PYmplY3QgKm9wKQoreworICAgIFB5X0lOQ1JFRihvcC0+ZnVuY19xdWFsbmFtZSk7CisgICAgcmV0dXJuIG9wLT5mdW5jX3F1YWxuYW1lOworfQorCitzdGF0aWMgaW50CitmdW5jX3NldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisKKyAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZworICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLworICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRtcCA9IG9wLT5mdW5jX3F1YWxuYW1lOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSB2YWx1ZTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGZ1bmNfZ2V0X2RlZmF1bHRzKFB5RnVuY3Rpb25PYmplY3QgKm9wKQogewogICAgIGlmIChvcC0+ZnVuY19kZWZhdWx0cyA9PSBOVUxMKSB7CkBAIC00MzksOCArNDQwLDkgQEAKICAgICAgKHNldHRlcilmdW5jX3NldF9rd2RlZmF1bHRzfSwKICAgICB7Il9fYW5ub3RhdGlvbnNfXyIsIChnZXR0ZXIpZnVuY19nZXRfYW5ub3RhdGlvbnMsCiAgICAgIChzZXR0ZXIpZnVuY19zZXRfYW5ub3RhdGlvbnN9LAotICAgIHsiX19kaWN0X18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X2RpY3QsIChzZXR0ZXIpZnVuY19zZXRfZGljdH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpZnVuY19nZXRfbmFtZSwgKHNldHRlcilmdW5jX3NldF9uYW1lfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZnVuY19nZXRfcXVhbG5hbWUsIChzZXR0ZXIpZnVuY19zZXRfcXVhbG5hbWV9LAogICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtNTYxLDYgKzU2Myw3IEBACiAgICAgUHlfWERFQ1JFRihvcC0+ZnVuY19kaWN0KTsKICAgICBQeV9YREVDUkVGKG9wLT5mdW5jX2Nsb3N1cmUpOwogICAgIFB5X1hERUNSRUYob3AtPmZ1bmNfYW5ub3RhdGlvbnMpOworICAgIFB5X1hERUNSRUYob3AtPmZ1bmNfcXVhbG5hbWUpOwogICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiB9CiAKQEAgLTU2OCw3ICs1NzEsNyBAQAogZnVuY19yZXByKFB5RnVuY3Rpb25PYmplY3QgKm9wKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGZ1bmN0aW9uICVVIGF0ICVwPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AtPmZ1bmNfbmFtZSwgb3ApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lLCBvcCk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTU4NCw2ICs1ODcsNyBAQAogICAgIFB5X1ZJU0lUKGYtPmZ1bmNfZGljdCk7CiAgICAgUHlfVklTSVQoZi0+ZnVuY19jbG9zdXJlKTsKICAgICBQeV9WSVNJVChmLT5mdW5jX2Fubm90YXRpb25zKTsKKyAgICBQeV9WSVNJVChmLT5mdW5jX3F1YWxuYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjY3LDggKzY3MSw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgZnVuY3Rpb25fY2FsbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsLyogdHBfZmxhZ3MgKi8KICAgICBmdW5jX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwpAQCAtNzE0LDYgKzcxOCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpjbV9jYWxsYWJsZTsKKyAgICBQeU9iamVjdCAqY21fZGljdDsKIH0gY2xhc3NtZXRob2Q7CiAKIHN0YXRpYyB2b2lkCkBAIC03MjEsNiArNzI2LDcgQEAKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKiljbSk7CiAgICAgUHlfWERFQ1JFRihjbS0+Y21fY2FsbGFibGUpOworICAgIFB5X1hERUNSRUYoY20tPmNtX2RpY3QpOwogICAgIFB5X1RZUEUoY20pLT50cF9mcmVlKChQeU9iamVjdCAqKWNtKTsKIH0KIApAQCAtNzI4LDYgKzczNCw3IEBACiBjbV90cmF2ZXJzZShjbGFzc21ldGhvZCAqY20sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewogICAgIFB5X1ZJU0lUKGNtLT5jbV9jYWxsYWJsZSk7CisgICAgUHlfVklTSVQoY20tPmNtX2RpY3QpOwogICAgIHJldHVybiAwOwogfQogCkBAIC03MzUsNiArNzQyLDcgQEAKIGNtX2NsZWFyKGNsYXNzbWV0aG9kICpjbSkKIHsKICAgICBQeV9DTEVBUihjbS0+Y21fY2FsbGFibGUpOworICAgIFB5X0NMRUFSKGNtLT5jbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzc0LDYgKzc4MiwyOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18oY2xhc3NtZXRob2QgKmNtLCB2b2lkICpjbG9zdXJlKQoreworICAgIGludCByZXMgPSBfUHlPYmplY3RfSXNBYnN0cmFjdChjbS0+Y21fY2FsbGFibGUpOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHJlcykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgUHlfUkVUVVJOX0ZBTFNFOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgY21fZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19pc2Fic3RyYWN0bWV0aG9kX18iLAorICAgICAoZ2V0dGVyKWNtX2dldF9fX2lzYWJzdHJhY3RtZXRob2RfXywgTlVMTCwKKyAgICAgTlVMTCwKKyAgICAgTlVMTH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY2xhc3NtZXRob2RfZG9jLAogImNsYXNzbWV0aG9kKGZ1bmN0aW9uKSAtPiBtZXRob2RcblwKIFxuXApAQCAtODEyLDcgKzg0Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCkBAIC04MjUsMTIgKzg1NSwxMiBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBjbV9tZW1iZXJsaXN0LCAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgY21fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICBjbV9kZXNjcl9nZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoY2xhc3NtZXRob2QsIGNtX2RpY3QpLCAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgY21faW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCkBAIC04NjksNiArODk5LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKnNtX2NhbGxhYmxlOworICAgIFB5T2JqZWN0ICpzbV9kaWN0OwogfSBzdGF0aWNtZXRob2Q7CiAKIHN0YXRpYyB2b2lkCkBAIC04NzYsNiArOTA3LDcgQEAKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKilzbSk7CiAgICAgUHlfWERFQ1JFRihzbS0+c21fY2FsbGFibGUpOworICAgIFB5X1hERUNSRUYoc20tPnNtX2RpY3QpOwogICAgIFB5X1RZUEUoc20pLT50cF9mcmVlKChQeU9iamVjdCAqKXNtKTsKIH0KIApAQCAtODgzLDYgKzkxNSw3IEBACiBzbV90cmF2ZXJzZShzdGF0aWNtZXRob2QgKnNtLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKICAgICBQeV9WSVNJVChzbS0+c21fY2FsbGFibGUpOworICAgIFB5X1ZJU0lUKHNtLT5zbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtODkwLDYgKzkyMyw3IEBACiBzbV9jbGVhcihzdGF0aWNtZXRob2QgKnNtKQogewogICAgIFB5X0NMRUFSKHNtLT5zbV9jYWxsYWJsZSk7CisgICAgUHlfQ0xFQVIoc20tPnNtX2RpY3QpOwogICAgIHJldHVybiAwOwogfQogCkBAIC05MjcsNiArOTYxLDI4IEBACiAgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwogfTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3NtX2dldF9fX2lzYWJzdHJhY3RtZXRob2RfXyhzdGF0aWNtZXRob2QgKnNtLCB2b2lkICpjbG9zdXJlKQoreworICAgIGludCByZXMgPSBfUHlPYmplY3RfSXNBYnN0cmFjdChzbS0+c21fY2FsbGFibGUpOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHJlcykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgUHlfUkVUVVJOX0ZBTFNFOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgc21fZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19pc2Fic3RyYWN0bWV0aG9kX18iLAorICAgICAoZ2V0dGVyKXNtX2dldF9fX2lzYWJzdHJhY3RtZXRob2RfXywgTlVMTCwKKyAgICAgTlVMTCwKKyAgICAgTlVMTH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoc3RhdGljbWV0aG9kX2RvYywKICJzdGF0aWNtZXRob2QoZnVuY3Rpb24pIC0+IG1ldGhvZFxuXAogXG5cCkBAIC05NjIsNyArMTAxOCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCkBAIC05NzUsMTIgKzEwMzEsMTIgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgc21fbWVtYmVybGlzdCwgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIHNtX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgc21fZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKHN0YXRpY21ldGhvZCwgc21fZGljdCksICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIHNtX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9nZW5vYmplY3QuYyBiL09iamVjdHMvZ2Vub2JqZWN0LmMKaW5kZXggNmUyNWYxMy4uNTk3YWVkMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9nZW5vYmplY3QuYworKysgYi9PYmplY3RzL2dlbm9iamVjdC5jCkBAIC01LDYgKzUsOCBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgogCitzdGF0aWMgUHlPYmplY3QgKmdlbl9jbG9zZShQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncyk7CisKIHN0YXRpYyBpbnQKIGdlbl90cmF2ZXJzZShQeUdlbk9iamVjdCAqZ2VuLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKQEAgLTUxLDcgKzUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgYWxyZWFkeSBleGVjdXRpbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChmPT1OVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgeworICAgIGlmIChmID09IE5VTEwgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CiAgICAgICAgIC8qIE9ubHkgc2V0IGV4Y2VwdGlvbiBpZiBjYWxsZWQgZnJvbSBzZW5kKCkgKi8KICAgICAgICAgaWYgKGFyZyAmJiAhZXhjKQogICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKQEAgLTkwLDEyICs5MiwxOSBAQAogCiAgICAgLyogSWYgdGhlIGdlbmVyYXRvciBqdXN0IHJldHVybmVkIChhcyBvcHBvc2VkIHRvIHlpZWxkaW5nKSwgc2lnbmFsCiAgICAgICogdGhhdCB0aGUgZ2VuZXJhdG9yIGlzIGV4aGF1c3RlZC4gKi8KLSAgICBpZiAocmVzdWx0ID09IFB5X05vbmUgJiYgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgICAgICAvKiBTZXQgZXhjZXB0aW9uIGlmIG5vdCBjYWxsZWQgYnkgZ2VuX2l0ZXJuZXh0KCkgKi8KLSAgICAgICAgaWYgKGFyZykKKyAgICBpZiAocmVzdWx0ICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgeworICAgICAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIC8qIERlbGF5IGV4Y2VwdGlvbiBpbnN0YW50aWF0aW9uIGlmIHdlIGNhbiAqLwogICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19TdG9wSXRlcmF0aW9uLCByZXN1bHQsIE5VTEwpOworICAgICAgICAgICAgaWYgKGUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlfQ0xFQVIocmVzdWx0KTsKICAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKQEAgLTExMSw4ICsxMjAsOCBAQAogICAgICAgICBQeV9YREVDUkVGKHQpOwogICAgICAgICBQeV9YREVDUkVGKHYpOwogICAgICAgICBQeV9YREVDUkVGKHRiKTsKLSAgICAgICAgUHlfREVDUkVGKGYpOwogICAgICAgICBnZW4tPmdpX2ZyYW1lID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKGYpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMjIsOCArMTMxLDggQEAKICJzZW5kKGFyZykgLT4gc2VuZCAnYXJnJyBpbnRvIGdlbmVyYXRvcixcblwKIHJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLWdlbl9zZW5kKFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmcpCitQeU9iamVjdCAqCitfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJnKQogewogICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIGFyZywgMCk7CiB9CkBAIC0xMzEsMTEgKzE0MCw3MiBAQAogUHlEb2NfU1RSVkFSKGNsb3NlX2RvYywKICJjbG9zZSgpIC0+IHJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGdlbmVyYXRvci4iKTsKIAorLyoKKyAqICAgVGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZCBieSBnZW5fY2xvc2UgYW5kIGdlbl90aHJvdyB0bworICogICBjbG9zZSBhIHN1Yml0ZXJhdG9yIGJlaW5nIGRlbGVnYXRlZCB0byBieSB5aWVsZC1mcm9tLgorICovCisKK3N0YXRpYyBpbnQKK2dlbl9jbG9zZV9pdGVyKFB5T2JqZWN0ICp5ZikKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisKKyAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICAgICAgcmV0dmFsID0gZ2VuX2Nsb3NlKChQeUdlbk9iamVjdCAqKXlmLCBOVUxMKTsKKyAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICptZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZCh5ZiwgJlB5SWRfY2xvc2UpOworICAgICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQorICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh5Zik7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKG1ldGgsICIiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKKyAgICAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfWERFQ1JFRihyZXR2YWwpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2VuX3lmKFB5R2VuT2JqZWN0ICpnZW4pCit7CisgICAgUHlPYmplY3QgKnlmID0gTlVMTDsKKyAgICBQeUZyYW1lT2JqZWN0ICpmID0gZ2VuLT5naV9mcmFtZTsKKworICAgIGlmIChmKSB7CisgICAgICAgIFB5T2JqZWN0ICpieXRlY29kZSA9IGYtPmZfY29kZS0+Y29fY29kZTsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqY29kZSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcoYnl0ZWNvZGUpOworCisgICAgICAgIGlmIChjb2RlW2YtPmZfbGFzdGkgKyAxXSAhPSBZSUVMRF9GUk9NKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHlmID0gZi0+Zl9zdGFja3RvcFstMV07CisgICAgICAgIFB5X0lOQ1JFRih5Zik7CisgICAgfQorCisgICAgcmV0dXJuIHlmOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19HZW5lcmF0b3JFeGl0KTsKKyAgICBQeU9iamVjdCAqeWYgPSBnZW5feWYoZ2VuKTsKKyAgICBpbnQgZXJyID0gMDsKKworICAgIGlmICh5ZikgeworICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOworICAgICAgICBlcnIgPSBnZW5fY2xvc2VfaXRlcih5Zik7CisgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgfQorICAgIGlmIChlcnIgPT0gMCkKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19HZW5lcmF0b3JFeGl0KTsKICAgICByZXR2YWwgPSBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEpOwogICAgIGlmIChyZXR2YWwpIHsKICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CkBAIC0xNDQsOCArMjE0LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pCi0gICAgICAgIHx8IFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfR2VuZXJhdG9yRXhpdCkpCi0gICAgeworICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7ICAgICAgICAgIC8qIGlnbm9yZSB0aGVzZSBlcnJvcnMgKi8KICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTE5Niw3ICsyNjUsNyBAQAogICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKHNlbGYpOwogICAgICAgICBzZWxmLT5vYl9yZWZjbnQgPSByZWZjbnQ7CiAgICAgfQotICAgIGFzc2VydChQeVR5cGVfSVNfR0Moc2VsZi0+b2JfdHlwZSkgJiYKKyAgICBhc3NlcnQoUHlUeXBlX0lTX0dDKFB5X1RZUEUoc2VsZikpICYmCiAgICAgICAgICAgIF9QeV9BU19HQyhzZWxmKS0+Z2MuZ2NfcmVmcyAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCk7CiAKICAgICAvKiBJZiBQeV9SRUZfREVCVUcsIF9QeV9OZXdSZWZlcmVuY2UgYnVtcGVkIF9QeV9SZWZUb3RhbCwgc28KQEAgLTIwOSw4ICsyNzgsOCBAQAogICAgICAqIHVuZG9uZS4KICAgICAgKi8KICNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICAtLXNlbGYtPm9iX3R5cGUtPnRwX2ZyZWVzOwotICAgIC0tc2VsZi0+b2JfdHlwZS0+dHBfYWxsb2NzOworICAgIC0tKFB5X1RZUEUoc2VsZiktPnRwX2ZyZWVzKTsKKyAgICAtLShQeV9UWVBFKHNlbGYpLT50cF9hbGxvY3MpOwogI2VuZGlmCiB9CiAKQEAgLTIyNiwxMCArMjk1LDY0IEBACiAgICAgUHlPYmplY3QgKnR5cDsKICAgICBQeU9iamVjdCAqdGIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICp5ZiA9IGdlbl95ZihnZW4pOworICAgIF9QeV9JREVOVElGSUVSKHRocm93KTsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRocm93IiwgMSwgMywgJnR5cCwgJnZhbCwgJnRiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoeWYpIHsKKyAgICAgICAgUHlPYmplY3QgKnJldDsKKyAgICAgICAgaW50IGVycjsKKyAgICAgICAgaWYgKFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh0eXAsIFB5RXhjX0dlbmVyYXRvckV4aXQpKSB7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOworICAgICAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOworICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKKyAgICAgICAgICAgIGdvdG8gdGhyb3dfaGVyZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7CisgICAgICAgICAgICByZXQgPSBnZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopeWYsIGFyZ3MpOworICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICptZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZCh5ZiwgJlB5SWRfdGhyb3cpOworICAgICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHlmKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHlmKTsKKyAgICAgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOworICAgICAgICAgICAgcmV0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChtZXRoLCBhcmdzKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHlmKTsKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWw7CisgICAgICAgICAgICAvKiBQb3Agc3ViaXRlcmF0b3IgZnJvbSBzdGFjayAqLworICAgICAgICAgICAgcmV0ID0gKigtLWdlbi0+Z2lfZnJhbWUtPmZfc3RhY2t0b3ApOworICAgICAgICAgICAgYXNzZXJ0KHJldCA9PSB5Zik7CisgICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKKyAgICAgICAgICAgIC8qIFRlcm1pbmF0aW9uIHJlcGV0aXRpb24gb2YgWUlFTERfRlJPTSAqLworICAgICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9sYXN0aSsrOworICAgICAgICAgICAgaWYgKF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCB2YWwsIDApOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXQgPSBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCit0aHJvd19oZXJlOgogICAgIC8qIEZpcnN0LCBjaGVjayB0aGUgdHJhY2ViYWNrIGFyZ3VtZW50LCByZXBsYWNpbmcgTm9uZSB3aXRoCiAgICAgICAgTlVMTC4gKi8KICAgICBpZiAodGIgPT0gUHlfTm9uZSkgewpAQCAtMjcyLDcgKzM5NSw3IEBACiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9ucyBtdXN0IGJlIGNsYXNzZXMgb3IgaW5zdGFuY2VzICIKICAgICAgICAgICAgICAgICAgICAgICJkZXJpdmluZyBmcm9tIEJhc2VFeGNlcHRpb24sIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICB0eXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh0eXApLT50cF9uYW1lKTsKICAgICAgICAgICAgIGdvdG8gZmFpbGVkX3Rocm93OwogICAgIH0KIApAQCAtMjkxLDkgKzQxNCw0NiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9pdGVybmV4dChQeUdlbk9iamVjdCAqZ2VuKQogewotICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIE5VTEwsIDApOworICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCB2YWwsIDApOworICAgIFB5X1hERUNSRUYodmFsKTsKKyAgICByZXR1cm4gcmV0OwogfQogCisvKgorICogICBJZiBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbiBpcyBzZXQsIGZldGNoZXMgaXRzICd2YWx1ZScKKyAqICAgYXR0cmlidXRlIGlmIGFueSwgb3RoZXJ3aXNlIHNldHMgcHZhbHVlIHRvIE5vbmUuCisgKgorICogICBSZXR1cm5zIDAgaWYgbm8gZXhjZXB0aW9uIG9yIFN0b3BJdGVyYXRpb24gaXMgc2V0LgorICogICBJZiBhbnkgb3RoZXIgZXhjZXB0aW9uIGlzIHNldCwgcmV0dXJucyAtMSBhbmQgbGVhdmVzCisgKiAgIHB2YWx1ZSB1bmNoYW5nZWQuCisgKi8KKworaW50CitfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoUHlPYmplY3QgKipwdmFsdWUpIHsKKyAgICBQeU9iamVjdCAqZXQsICpldiwgKnRiOworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgeworICAgICAgICBQeUVycl9GZXRjaCgmZXQsICZldiwgJnRiKTsKKyAgICAgICAgUHlfWERFQ1JFRihldCk7CisgICAgICAgIFB5X1hERUNSRUYodGIpOworICAgICAgICBpZiAoZXYpIHsKKyAgICAgICAgICAgIHZhbHVlID0gKChQeVN0b3BJdGVyYXRpb25PYmplY3QgKilldiktPnZhbHVlOworICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihldik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgfQorICAgICpwdmFsdWUgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9yZXByKFB5R2VuT2JqZWN0ICpnZW4pCkBAIC0zMjQsMTMgKzQ4NCwxMyBAQAogCiBzdGF0aWMgUHlNZW1iZXJEZWYgZ2VuX21lbWJlcmxpc3RbXSA9IHsKICAgICB7ImdpX2ZyYW1lIiwgICAgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfZnJhbWUpLCAgICAgIFJFQURPTkxZfSwKLSAgICB7ImdpX3J1bm5pbmciLCAgICAgIFRfSU5ULCAgICBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfcnVubmluZyksICAgIFJFQURPTkxZfSwKKyAgICB7ImdpX3J1bm5pbmciLCAgICAgIFRfQk9PTCwgICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgICBSRUFET05MWX0sCiAgICAgeyJnaV9jb2RlIiwgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfY29kZSksICBSRUFET05MWX0sCiAgICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBnZW5fbWV0aG9kc1tdID0gewotICAgIHsic2VuZCIsKFB5Q0Z1bmN0aW9uKWdlbl9zZW5kLCBNRVRIX08sIHNlbmRfZG9jfSwKKyAgICB7InNlbmQiLChQeUNGdW5jdGlvbilfUHlHZW5fU2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCiAgICAgeyJ0aHJvdyIsKFB5Q0Z1bmN0aW9uKWdlbl90aHJvdywgTUVUSF9WQVJBUkdTLCB0aHJvd19kb2N9LAogICAgIHsiY2xvc2UiLChQeUNGdW5jdGlvbilnZW5fY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KQEAgLTQxMCwxNSArNTcwLDEzIEBACiAgICAgaW50IGk7CiAgICAgUHlGcmFtZU9iamVjdCAqZiA9IGdlbi0+Z2lfZnJhbWU7CiAKLSAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCB8fCBmLT5mX2libG9jayA8PSAwKQorICAgIGlmIChmID09IE5VTEwgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsgLyogbm8gZnJhbWUgb3IgZW1wdHkgYmxvY2tzdGFjayA9PSBubyBmaW5hbGl6YXRpb24gKi8KIAogICAgIC8qIEFueSBibG9jayB0eXBlIGJlc2lkZXMgYSBsb29wIHJlcXVpcmVzIGNsZWFudXAuICovCi0gICAgaSA9IGYtPmZfaWJsb2NrOwotICAgIHdoaWxlICgtLWkgPj0gMCkgeworICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKQogICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSAhPSBTRVRVUF9MT09QKQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQogCiAgICAgLyogTm8gYmxvY2tzIGV4Y2VwdCBsb29wcywgaXQncyBzYWZlIHRvIHNraXAgZmluYWxpemF0aW9uLiAqLwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwppbmRleCA5MWE5M2Y1Li4zY2ZiZWFmIDEwMDY0NAotLS0gYS9PYmplY3RzL2l0ZXJvYmplY3QuYworKysgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwpAQCAtODgsOCArODgsMzggQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgoraXRlcl9yZWR1Y2Uoc2VxaXRlcm9iamVjdCAqaXQpCit7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKCgpKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIikpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitpdGVyX3NldHN0YXRlKHNlcWl0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHNlcWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24paXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilpdGVyX3NldHN0YXRlLCBNRVRIX08sIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE5NSw2ICsyMjUsMjEgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NhbGxpdGVyX3JlZHVjZShjYWxsaXRlcm9iamVjdCAqaXQpCit7CisgICAgaWYgKGl0LT5pdF9jYWxsYWJsZSAhPSBOVUxMICYmIGl0LT5pdF9zZW50aW5lbCAhPSBOVUxMKQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPTykiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfY2FsbGFibGUsIGl0LT5pdF9zZW50aW5lbCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGNhbGxpdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pY2FsbGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5VHlwZU9iamVjdCBQeUNhbGxJdGVyX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiY2FsbGFibGVfaXRlcmF0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KQEAgLTIyNCw3ICsyNjksNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWNhbGxpdGVyX2l0ZXJuZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY2FsbGl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvbGlzdG9iamVjdC5jIGIvT2JqZWN0cy9saXN0b2JqZWN0LmMKaW5kZXggYjllZjBkMC4uNmUwZDA5NCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9saXN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9saXN0b2JqZWN0LmMKQEAgLTk4LDE2ICs5OCwzMiBAQAogc3RhdGljIFB5TGlzdE9iamVjdCAqZnJlZV9saXN0W1B5TGlzdF9NQVhGUkVFTElTVF07CiBzdGF0aWMgaW50IG51bWZyZWUgPSAwOwogCi12b2lkCi1QeUxpc3RfRmluaSh2b2lkKQoraW50CitQeUxpc3RfQ2xlYXJGcmVlTGlzdCh2b2lkKQogewogICAgIFB5TGlzdE9iamVjdCAqb3A7Ci0KKyAgICBpbnQgcmV0ID0gbnVtZnJlZTsKICAgICB3aGlsZSAobnVtZnJlZSkgewogICAgICAgICBvcCA9IGZyZWVfbGlzdFstLW51bWZyZWVdOwogICAgICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3Qob3ApKTsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKG9wKTsKICAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZAorUHlMaXN0X0Zpbmkodm9pZCkKK3sKKyAgICBQeUxpc3RfQ2xlYXJGcmVlTGlzdCgpOworfQorCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlMaXN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlMaXN0T2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeUxpc3RPYmplY3QpKTsKIH0KIAogUHlPYmplY3QgKgpAQCAtNzM3LDYgKzc1MywxOSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorbGlzdGNsZWFyKFB5TGlzdE9iamVjdCAqc2VsZikKK3sKKyAgICBsaXN0X2NsZWFyKHNlbGYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdGNvcHkoUHlMaXN0T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBsaXN0X3NsaWNlKHNlbGYsIDAsIFB5X1NJWkUoc2VsZikpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogbGlzdGFwcGVuZChQeUxpc3RPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChhcHAxKHNlbGYsIHYpID09IDApCkBAIC0yMTA5LDggKzIxMzgsNyBAQAogbGlzdGluZGV4KFB5TGlzdE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCBpLCBzdGFydD0wLCBzdG9wPVB5X1NJWkUoc2VsZik7Ci0gICAgUHlPYmplY3QgKnYsICpmb3JtYXRfdHVwbGUsICplcnJfc3RyaW5nOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZXJyX2Zvcm1hdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyZPJjppbmRleCIsICZ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXgsICZzdGFydCwKQEAgLTIxMzMsMjAgKzIxNjEsNyBAQAogICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChlcnJfZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZXJyX2Zvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlciBpcyBub3QgaW4gbGlzdCIpOwotICAgICAgICBpZiAoZXJyX2Zvcm1hdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGZvcm1hdF90dXBsZSA9IFB5VHVwbGVfUGFjaygxLCB2KTsKLSAgICBpZiAoZm9ybWF0X3R1cGxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGVycl9zdHJpbmcgPSBQeVVuaWNvZGVfRm9ybWF0KGVycl9mb3JtYXQsIGZvcm1hdF90dXBsZSk7Ci0gICAgUHlfREVDUkVGKGZvcm1hdF90dXBsZSk7Ci0gICAgaWYgKGVycl9zdHJpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1ZhbHVlRXJyb3IsIGVycl9zdHJpbmcpOwotICAgIFB5X0RFQ1JFRihlcnJfc3RyaW5nKTsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIiVSIGlzIG5vdCBpbiBsaXN0Iiwgdik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTIyMDIsMTAgKzIyMTcsOCBAQAogICAgIFB5TGlzdE9iamVjdCAqdmwsICp3bDsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBpZiAoIVB5TGlzdF9DaGVjayh2KSB8fCAhUHlMaXN0X0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUxpc3RfQ2hlY2sodikgfHwgIVB5TGlzdF9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgdmwgPSAoUHlMaXN0T2JqZWN0ICopdjsKICAgICB3bCA9IChQeUxpc3RPYmplY3QgKil3OwpAQCAtMjMxNCwxNyArMjMyNywyMSBAQAogIkwuX19yZXZlcnNlZF9fKCkgLS0gcmV0dXJuIGEgcmV2ZXJzZSBpdGVyYXRvciBvdmVyIHRoZSBsaXN0Iik7CiBQeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKICJMLl9fc2l6ZW9mX18oKSAtLSBzaXplIG9mIEwgaW4gbWVtb3J5LCBpbiBieXRlcyIpOworUHlEb2NfU1RSVkFSKGNsZWFyX2RvYywKKyJMLmNsZWFyKCkgLT4gTm9uZSAtLSByZW1vdmUgYWxsIGl0ZW1zIGZyb20gTCIpOworUHlEb2NfU1RSVkFSKGNvcHlfZG9jLAorIkwuY29weSgpIC0+IGxpc3QgLS0gYSBzaGFsbG93IGNvcHkgb2YgTCIpOwogUHlEb2NfU1RSVkFSKGFwcGVuZF9kb2MsCi0iTC5hcHBlbmQob2JqZWN0KSAtLSBhcHBlbmQgb2JqZWN0IHRvIGVuZCIpOworIkwuYXBwZW5kKG9iamVjdCkgLT4gTm9uZSAtLSBhcHBlbmQgb2JqZWN0IHRvIGVuZCIpOwogUHlEb2NfU1RSVkFSKGV4dGVuZF9kb2MsCi0iTC5leHRlbmQoaXRlcmFibGUpIC0tIGV4dGVuZCBsaXN0IGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZSIpOworIkwuZXh0ZW5kKGl0ZXJhYmxlKSAtPiBOb25lIC0tIGV4dGVuZCBsaXN0IGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZSIpOwogUHlEb2NfU1RSVkFSKGluc2VydF9kb2MsCiAiTC5pbnNlcnQoaW5kZXgsIG9iamVjdCkgLS0gaW5zZXJ0IG9iamVjdCBiZWZvcmUgaW5kZXgiKTsKIFB5RG9jX1NUUlZBUihwb3BfZG9jLAogIkwucG9wKFtpbmRleF0pIC0+IGl0ZW0gLS0gcmVtb3ZlIGFuZCByZXR1cm4gaXRlbSBhdCBpbmRleCAoZGVmYXVsdCBsYXN0KS5cbiIKICJSYWlzZXMgSW5kZXhFcnJvciBpZiBsaXN0IGlzIGVtcHR5IG9yIGluZGV4IGlzIG91dCBvZiByYW5nZS4iKTsKIFB5RG9jX1NUUlZBUihyZW1vdmVfZG9jLAotIkwucmVtb3ZlKHZhbHVlKSAtLSByZW1vdmUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2YWx1ZS5cbiIKKyJMLnJlbW92ZSh2YWx1ZSkgLT4gTm9uZSAtLSByZW1vdmUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2YWx1ZS5cbiIKICJSYWlzZXMgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuIik7CiBQeURvY19TVFJWQVIoaW5kZXhfZG9jLAogIkwuaW5kZXgodmFsdWUsIFtzdGFydCwgW3N0b3BdXSkgLT4gaW50ZWdlciAtLSByZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUuXG4iCkBAIC0yMzM0LDcgKzIzNTEsNyBAQAogUHlEb2NfU1RSVkFSKHJldmVyc2VfZG9jLAogIkwucmV2ZXJzZSgpIC0tIHJldmVyc2UgKklOIFBMQUNFKiIpOwogUHlEb2NfU1RSVkFSKHNvcnRfZG9jLAotIkwuc29ydChrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkgLS0gc3RhYmxlIHNvcnQgKklOIFBMQUNFKiIpOworIkwuc29ydChrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkgLT4gTm9uZSAtLSBzdGFibGUgc29ydCAqSU4gUExBQ0UqIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqbGlzdF9zdWJzY3JpcHQoUHlMaXN0T2JqZWN0KiwgUHlPYmplY3QqKTsKIApAQCAtMjM0Miw5ICsyMzU5LDExIEBACiAgICAgeyJfX2dldGl0ZW1fXyIsIChQeUNGdW5jdGlvbilsaXN0X3N1YnNjcmlwdCwgTUVUSF9PfE1FVEhfQ09FWElTVCwgZ2V0aXRlbV9kb2N9LAogICAgIHsiX19yZXZlcnNlZF9fIiwoUHlDRnVuY3Rpb24pbGlzdF9yZXZlcnNlZCwgTUVUSF9OT0FSR1MsIHJldmVyc2VkX2RvY30sCiAgICAgeyJfX3NpemVvZl9fIiwgIChQeUNGdW5jdGlvbilsaXN0X3NpemVvZiwgTUVUSF9OT0FSR1MsIHNpemVvZl9kb2N9LAorICAgIHsiY2xlYXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RjbGVhciwgICBNRVRIX05PQVJHUywgY2xlYXJfZG9jfSwKKyAgICB7ImNvcHkiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0Y29weSwgICBNRVRIX05PQVJHUywgY29weV9kb2N9LAogICAgIHsiYXBwZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RhcHBlbmQsICBNRVRIX08sIGFwcGVuZF9kb2N9LAogICAgIHsiaW5zZXJ0IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RpbnNlcnQsICBNRVRIX1ZBUkFSR1MsIGluc2VydF9kb2N9LAotICAgIHsiZXh0ZW5kIiwgICAgICAoUHlDRnVuY3Rpb24pbGlzdGV4dGVuZCwgIE1FVEhfTywgZXh0ZW5kX2RvY30sCisgICAgeyJleHRlbmQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdGV4dGVuZCwgIE1FVEhfTywgZXh0ZW5kX2RvY30sCiAgICAgeyJwb3AiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdHBvcCwgICAgIE1FVEhfVkFSQVJHUywgcG9wX2RvY30sCiAgICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdHJlbW92ZSwgIE1FVEhfTywgcmVtb3ZlX2RvY30sCiAgICAgeyJpbmRleCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdGluZGV4LCAgIE1FVEhfVkFSQVJHUywgaW5kZXhfZG9jfSwKQEAgLTI0MDcsNyArMjQyNiw3IEBACiAgICAgICAgICAgICBzcmMgPSBzZWxmLT5vYl9pdGVtOwogICAgICAgICAgICAgZGVzdCA9ICgoUHlMaXN0T2JqZWN0ICopcmVzdWx0KS0+b2JfaXRlbTsKICAgICAgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7Ci0gICAgICAgICAgICAgICAgIGN1ciArPSBzdGVwLCBpKyspIHsKKyAgICAgICAgICAgICAgICAgY3VyICs9IChzaXplX3Qpc3RlcCwgaSsrKSB7CiAgICAgICAgICAgICAgICAgaXQgPSBzcmNbY3VyXTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXQpOwogICAgICAgICAgICAgICAgIGRlc3RbaV0gPSBpdDsKQEAgLTI0OTgsNyArMjUxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyBjdXIgKyAxLAogICAgICAgICAgICAgICAgICAgICBsaW0gKiBzaXplb2YoUHlPYmplY3QgKikpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY3VyID0gc3RhcnQgKyBzbGljZWxlbmd0aCpzdGVwOworICAgICAgICAgICAgY3VyID0gc3RhcnQgKyAoc2l6ZV90KXNsaWNlbGVuZ3RoICogc3RlcDsKICAgICAgICAgICAgIGlmIChjdXIgPCAoc2l6ZV90KVB5X1NJWkUoc2VsZikpIHsKICAgICAgICAgICAgICAgICBtZW1tb3ZlKHNlbGYtPm9iX2l0ZW0gKyBjdXIgLSBzbGljZWxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSArIGN1ciwKQEAgLTI1NjIsNyArMjU4MSw3IEBACiAgICAgICAgICAgICBzZWxmaXRlbXMgPSBzZWxmLT5vYl9pdGVtOwogICAgICAgICAgICAgc2VxaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoc2VxKTsKICAgICAgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7Ci0gICAgICAgICAgICAgICAgIGN1ciArPSBzdGVwLCBpKyspIHsKKyAgICAgICAgICAgICAgICAgY3VyICs9IChzaXplX3Qpc3RlcCwgaSsrKSB7CiAgICAgICAgICAgICAgICAgZ2FyYmFnZVtpXSA9IHNlbGZpdGVtc1tjdXJdOwogICAgICAgICAgICAgICAgIGlucyA9IHNlcWl0ZW1zW2ldOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpbnMpOwpAQCAtMjY1MCwxMSArMjY2OSwxOCBAQAogc3RhdGljIGludCBsaXN0aXRlcl90cmF2ZXJzZShsaXN0aXRlcm9iamVjdCAqLCB2aXNpdHByb2MsIHZvaWQgKik7CiBzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX25leHQobGlzdGl0ZXJvYmplY3QgKik7CiBzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX2xlbihsaXN0aXRlcm9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqbGlzdGl0ZXJfcmVkdWNlX2dlbmVyYWwodm9pZCAqX2l0LCBpbnQgZm9yd2FyZCk7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3JlZHVjZShsaXN0aXRlcm9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqbGlzdGl0ZXJfc2V0c3RhdGUobGlzdGl0ZXJvYmplY3QgKiwgUHlPYmplY3QgKnN0YXRlKTsKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGxpc3RpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilsaXN0aXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilsaXN0aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilsaXN0aXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yNzYxLDYgKzI3ODcsMjcgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK2xpc3RpdGVyX3JlZHVjZShsaXN0aXRlcm9iamVjdCAqaXQpCit7CisgICAgcmV0dXJuIGxpc3RpdGVyX3JlZHVjZV9nZW5lcmFsKGl0LCAxKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xpc3RpdGVyX3NldHN0YXRlKGxpc3RpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIGxvbmcgaW5kZXggPSBQeUxvbmdfQXNMb25nKHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKiBMaXN0IFJldmVyc2UgSXRlcmF0b3IgKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTI3NzQsOSArMjgyMSwxMyBAQAogc3RhdGljIGludCBsaXN0cmV2aXRlcl90cmF2ZXJzZShsaXN0cmV2aXRlcm9iamVjdCAqLCB2aXNpdHByb2MsIHZvaWQgKik7CiBzdGF0aWMgUHlPYmplY3QgKmxpc3RyZXZpdGVyX25leHQobGlzdHJldml0ZXJvYmplY3QgKik7CiBzdGF0aWMgUHlPYmplY3QgKmxpc3RyZXZpdGVyX2xlbihsaXN0cmV2aXRlcm9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqbGlzdHJldml0ZXJfcmVkdWNlKGxpc3RyZXZpdGVyb2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9zZXRzdGF0ZShsaXN0cmV2aXRlcm9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGxpc3RyZXZpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilsaXN0cmV2aXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilsaXN0cmV2aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilsaXN0cmV2aXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yODczLDMgKzI5MjQsNTEgQEAKICAgICAgICAgbGVuID0gMDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7CiB9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0cmV2aXRlcl9yZWR1Y2UobGlzdHJldml0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbChpdCwgMCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0cmV2aXRlcl9zZXRzdGF0ZShsaXN0cmV2aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgLTEpCisgICAgICAgICAgICBpbmRleCA9IC0xOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IFB5TGlzdF9HRVRfU0laRShpdC0+aXRfc2VxKSAtIDEpCisgICAgICAgICAgICBpbmRleCA9IFB5TGlzdF9HRVRfU0laRShpdC0+aXRfc2VxKSAtIDE7CisgICAgICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogY29tbW9uIHBpY2tsaW5nIHN1cHBvcnQgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2xpc3RpdGVyX3JlZHVjZV9nZW5lcmFsKHZvaWQgKl9pdCwgaW50IGZvcndhcmQpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisKKyAgICAvKiB0aGUgb2JqZWN0cyBhcmUgbm90IHRoZSBzYW1lLCBpbmRleCBpcyBvZiBkaWZmZXJlbnQgdHlwZXMhICovCisgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAgbGlzdGl0ZXJvYmplY3QgKml0ID0gKGxpc3RpdGVyb2JqZWN0ICopX2l0OworICAgICAgICBpZiAoaXQtPml0X3NlcSkKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbCIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxpc3RyZXZpdGVyb2JqZWN0ICppdCA9IChsaXN0cmV2aXRlcm9iamVjdCAqKV9pdDsKKyAgICAgICAgaWYgKGl0LT5pdF9zZXEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigicmV2ZXJzZWQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgfQorICAgIC8qIGVtcHR5IGl0ZXJhdG9yLCBjcmVhdGUgYW4gZW1wdHkgbGlzdCAqLworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChsaXN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgbGlzdCk7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2xvbmdvYmplY3QuYyBiL09iamVjdHMvbG9uZ29iamVjdC5jCmluZGV4IDNhNjc1YzQuLjg3MTUwYTkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG9uZ29iamVjdC5jCisrKyBiL09iamVjdHMvbG9uZ29iamVjdC5jCkBAIC0zMjAsOCArMzIwLDE1IEBACiAjZGVmaW5lIFBZX0FCU19MT05HX01JTiAgICAgICAgICgwLSh1bnNpZ25lZCBsb25nKUxPTkdfTUlOKQogI2RlZmluZSBQWV9BQlNfU1NJWkVfVF9NSU4gICAgICAoMC0oc2l6ZV90KVBZX1NTSVpFX1RfTUlOKQogCi0vKiBHZXQgYSBDIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3QuCi0gICBSZXR1cm5zIC0xIGFuZCBzZXRzIGFuIGVycm9yIGNvbmRpdGlvbiBpZiBvdmVyZmxvdyBvY2N1cnMuICovCisvKiBHZXQgYSBDIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbiBfX2ludF9fCisgICBtZXRob2QuCisKKyAgIE9uIG92ZXJmbG93LCByZXR1cm4gLTEgYW5kIHNldCAqb3ZlcmZsb3cgdG8gMSBvciAtMSBkZXBlbmRpbmcgb24gdGhlIHNpZ24gb2YKKyAgIHRoZSByZXN1bHQuICBPdGhlcndpc2UgKm92ZXJmbG93IGlzIDAuCisKKyAgIEZvciBvdGhlciBlcnJvcnMgKGUuZy4sIFR5cGVFcnJvciksIHJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGNvbmRpdGlvbi4KKyAgIEluIHRoaXMgY2FzZSAqb3ZlcmZsb3cgd2lsbCBiZSAwLgorKi8KIAogbG9uZwogUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICp2diwgaW50ICpvdmVyZmxvdykKQEAgLTQxMCw2ICs0MTcsOSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qIEdldCBhIEMgbG9uZyBpbnQgZnJvbSBhIGxvbmcgaW50IG9iamVjdCBvciBhbnkgb2JqZWN0IHRoYXQgaGFzIGFuIF9faW50X18KKyAgIG1ldGhvZC4gIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KKwogbG9uZwogUHlMb25nX0FzTG9uZyhQeU9iamVjdCAqb2JqKQogewpAQCAtNjU4LDEwICs2NjgsOSBAQAogICAgIGFzc2VydChuZGlnaXRzID09IDAgfHwgdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdICE9IDApOwogICAgIGlmIChuZGlnaXRzID4gMCkgewogICAgICAgICBkaWdpdCBtc2QgPSB2LT5vYl9kaWdpdFtuZGlnaXRzIC0gMV07Ci0KLSAgICAgICAgcmVzdWx0ID0gKG5kaWdpdHMgLSAxKSAqIFB5TG9uZ19TSElGVDsKLSAgICAgICAgaWYgKHJlc3VsdCAvIFB5TG9uZ19TSElGVCAhPSAoc2l6ZV90KShuZGlnaXRzIC0gMSkpCisgICAgICAgIGlmICgoc2l6ZV90KShuZGlnaXRzIC0gMSkgPiBQWV9TSVpFX01BWCAvIChzaXplX3QpUHlMb25nX1NISUZUKQogICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgcmVzdWx0ID0gKHNpemVfdCkobmRpZ2l0cyAtIDEpICogKHNpemVfdClQeUxvbmdfU0hJRlQ7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgICsrcmVzdWx0OwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAwKQpAQCAtOTIxLDcgKzkzMCw3IEBACiAKIH0KIAotLyogQ3JlYXRlIGEgbmV3IGxvbmcgKG9yIGludCkgb2JqZWN0IGZyb20gYSBDIHBvaW50ZXIgKi8KKy8qIENyZWF0ZSBhIG5ldyBsb25nIGludCBvYmplY3QgZnJvbSBhIEMgcG9pbnRlciAqLwogCiBQeU9iamVjdCAqCiBQeUxvbmdfRnJvbVZvaWRQdHIodm9pZCAqcCkKQEAgLTk0NywxNSArOTU2LDExIEBACiAKIH0KIAotLyogR2V0IGEgQyBwb2ludGVyIGZyb20gYSBsb25nIG9iamVjdCAob3IgYW4gaW50IG9iamVjdCBpbiBzb21lIGNhc2VzKSAqLworLyogR2V0IGEgQyBwb2ludGVyIGZyb20gYSBsb25nIGludCBvYmplY3QuICovCiAKIHZvaWQgKgogUHlMb25nX0FzVm9pZFB0cihQeU9iamVjdCAqdnYpCiB7Ci0gICAgLyogVGhpcyBmdW5jdGlvbiB3aWxsIGFsbG93IGludCBvciBsb25nIG9iamVjdHMuIElmIHZ2IGlzIG5laXRoZXIsCi0gICAgICAgdGhlbiB0aGUgUHlMb25nX0FzTG9uZyooKSBmdW5jdGlvbnMgd2lsbCByYWlzZSB0aGUgZXhjZXB0aW9uOgotICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLCAiYmFkIGFyZ3VtZW50IHRvIGludGVybmFsIGZ1bmN0aW9uIgotICAgICovCiAjaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwogICAgIGxvbmcgeDsKIApAQCAtMTEzNiw4ICsxMTQxLDggQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKIH0KIAotLyogR2V0IGEgQyBQWV9MT05HX0xPTkcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3QuCi0gICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCisvKiBHZXQgYSBDIGxvbmcgbG9uZyBpbnQgZnJvbSBhIGxvbmcgaW50IG9iamVjdCBvciBhbnkgb2JqZWN0IHRoYXQgaGFzIGFuCisgICBfX2ludF9fIG1ldGhvZC4gIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KIAogUFlfTE9OR19MT05HCiBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqdnYpCkBAIC0xMTk5LDEwICsxMjA0LDE0IEBACiAgICAgaW50IG9uZSA9IDE7CiAgICAgaW50IHJlczsKIAotICAgIGlmICh2diA9PSBOVUxMIHx8ICFQeUxvbmdfQ2hlY2sodnYpKSB7CisgICAgaWYgKHZ2ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOwogICAgIH0KKyAgICBpZiAoIVB5TG9uZ19DaGVjayh2dikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgfQogCiAgICAgdiA9IChQeUxvbmdPYmplY3QqKXZ2OwogICAgIHN3aXRjaChQeV9TSVpFKHYpKSB7CkBAIC0xMjg5LDEyICsxMjk4LDE0IEBACiB9CiAjdW5kZWYgSVNfTElUVExFX0VORElBTgogCi0vKiBHZXQgYSBDIGxvbmcgbG9uZyBpbnQgZnJvbSBhIFB5dGhvbiBsb25nIG9yIFB5dGhvbiBpbnQgb2JqZWN0LgotICAgT24gb3ZlcmZsb3csIHJldHVybnMgLTEgYW5kIHNldHMgKm92ZXJmbG93IHRvIDEgb3IgLTEgZGVwZW5kaW5nCi0gICBvbiB0aGUgc2lnbiBvZiB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlICpvdmVyZmxvdyBpcyAwLgorLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgorICAgX19pbnRfXyBtZXRob2QuCiAKLSAgIEZvciBvdGhlciBlcnJvcnMgKGUuZy4sIHR5cGUgZXJyb3IpLCByZXR1cm5zIC0xIGFuZCBzZXRzIGFuIGVycm9yCi0gICBjb25kaXRpb24uCisgICBPbiBvdmVyZmxvdywgcmV0dXJuIC0xIGFuZCBzZXQgKm92ZXJmbG93IHRvIDEgb3IgLTEgZGVwZW5kaW5nIG9uIHRoZSBzaWduIG9mCisgICB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlICpvdmVyZmxvdyBpcyAwLgorCisgICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCBUeXBlRXJyb3IpLCByZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBjb25kaXRpb24uCisgICBJbiB0aGlzIGNhc2UgKm92ZXJmbG93IHdpbGwgYmUgMC4KICovCiAKIFBZX0xPTkdfTE9ORwpAQCAtMTM4OCwxMCArMTM5OSw4IEBACiAKICNkZWZpbmUgQ0hFQ0tfQklOT1Aodix3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpIHx8ICFQeUxvbmdfQ2hlY2sodykpIHsgICAgIFwKLSAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikgfHwgIVB5TG9uZ19DaGVjayh3KSkgICAgICAgXAorICAgICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOyAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSgwKQogCiAvKiBiaXRzX2luX2RpZ2l0KGQpIHJldHVybnMgdGhlIHVuaXF1ZSBpbnRlZ2VyIGsgc3VjaCB0aGF0IDIqKihrLTEpIDw9IGQgPApAQCAtMTU0OCwyMCArMTU1NywyMiBAQAogICAgc3RyaW5nLiAgKFJldHVybiB2YWx1ZSBpcyBub24tc2hhcmVkIHNvIHRoYXQgY2FsbGVycyBjYW4gbW9kaWZ5IHRoZQogICAgcmV0dXJuZWQgdmFsdWUgaWYgbmVjZXNzYXJ5LikgKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWxvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQorc3RhdGljIGludAorbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqYWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBQeUxvbmdPYmplY3QgKnNjcmF0Y2gsICphOwogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgUHlfc3NpemVfdCBzaXplLCBzdHJsZW4sIHNpemVfYSwgaSwgajsKICAgICBkaWdpdCAqcG91dCwgKnBpbiwgcmVtLCB0ZW5wb3c7Ci0gICAgUHlfVU5JQ09ERSAqcDsKICAgICBpbnQgbmVnYXRpdmU7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwogCiAgICAgYSA9IChQeUxvbmdPYmplY3QgKilhYTsKICAgICBpZiAoYSA9PSBOVUxMIHx8ICFQeUxvbmdfQ2hlY2soYSkpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKTsKICAgICBuZWdhdGl2ZSA9IFB5X1NJWkUoYSkgPCAwOwpAQCAtMTU3OCwxMyArMTU4OSwxMyBAQAogICAgIGlmIChzaXplX2EgPiBQWV9TU0laRV9UX01BWCAvIFB5TG9uZ19TSElGVCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsb25nIGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgLyogdGhlIGV4cHJlc3Npb24gc2l6ZV9hICogUHlMb25nX1NISUZUIGlzIG5vdyBzYWZlIGZyb20gb3ZlcmZsb3cgKi8KICAgICBzaXplID0gMSArIHNpemVfYSAqIFB5TG9uZ19TSElGVCAvICgzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKTsKICAgICBzY3JhdGNoID0gX1B5TG9uZ19OZXcoc2l6ZSk7CiAgICAgaWYgKHNjcmF0Y2ggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8qIGNvbnZlcnQgYXJyYXkgb2YgYmFzZSBfUHlMb25nX0JBU0UgZGlnaXRzIGluIHBpbiB0byBhbiBhcnJheSBvZgogICAgICAgIGJhc2UgX1B5TG9uZ19ERUNJTUFMX0JBU0UgZGlnaXRzIGluIHBvdXQsIGZvbGxvd2luZyBLbnV0aCAoVEFPQ1AsCkBAIC0xNjA3LDcgKzE2MTgsNyBAQAogICAgICAgICAvKiBjaGVjayBmb3Iga2V5Ym9hcmQgaW50ZXJydXB0ICovCiAgICAgICAgIFNJR0NIRUNLKHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIC8qIHBvdXQgc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb25lIGRpZ2l0LCBzbyB0aGF0IHRoZSBjYXNlIHdoZW4gYSA9IDAKQEAgLTE2MjMsNjQgKzE2MzQsMTE4IEBACiAgICAgICAgIHRlbnBvdyAqPSAxMDsKICAgICAgICAgc3RybGVuKys7CiAgICAgfQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzdHJsZW4pOwotICAgIGlmIChzdHIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0cmxlbiwgJzknKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSB3cml0ZXItPmtpbmQ7CisgICAgICAgIHN0ciA9IE5VTEw7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdHIgPSBQeVVuaWNvZGVfTmV3KHN0cmxlbiwgJzknKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgfQorCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3RybGVuOyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQShzdHIpICsgc3RybGVuOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICpwID0gJ1wwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseSAgICAgICAgICAgIFwKKyAgICAgICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmVtID0gcG91dFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBfUHlMb25nX0RFQ0lNQUxfU0hJRlQ7IGorKykgeyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKi0tcCA9ICcwJyArIHJlbSAlIDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHJlbSAvPSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBwb3V0W3NpemUtMV06IGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IG9uZSBkZWNpbWFsIGRpZ2l0ICovIFwKKyAgICAgICAgcmVtID0gcG91dFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICcwJyArIHJlbSAlIDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlbSAvPSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gd2hpbGUgKHJlbSAhPSAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogYW5kIHNpZ24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChuZWdhdGl2ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIGNoZWNrIHdlJ3ZlIGNvdW50ZWQgY29ycmVjdGx5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09ICgoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09IChUWVBFKilQeVVuaWNvZGVfREFUQShzdHIpKTsgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKIAogICAgIC8qIGZpbGwgdGhlIHN0cmluZyByaWdodC10by1sZWZ0ICovCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikgKyBzdHJsZW47Ci0gICAgKnAgPSAnXDAnOwotICAgIC8qIHBvdXRbMF0gdGhyb3VnaCBwb3V0W3NpemUtMl0gY29udHJpYnV0ZSBleGFjdGx5Ci0gICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovCi0gICAgZm9yIChpPTA7IGkgPCBzaXplIC0gMTsgaSsrKSB7Ci0gICAgICAgIHJlbSA9IHBvdXRbaV07Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBfUHlMb25nX0RFQ0lNQUxfU0hJRlQ7IGorKykgewotICAgICAgICAgICAgKi0tcCA9ICcwJyArIHJlbSAlIDEwOwotICAgICAgICAgICAgcmVtIC89IDEwOwotICAgICAgICB9CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMSAqcDsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOwogICAgIH0KLSAgICAvKiBwb3V0W3NpemUtMV06IGFsd2F5cyBwcm9kdWNlIGF0IGxlYXN0IG9uZSBkZWNpbWFsIGRpZ2l0ICovCi0gICAgcmVtID0gcG91dFtpXTsKLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsKLSAgICAgICAgcmVtIC89IDEwOwotICAgIH0gd2hpbGUgKHJlbSAhPSAwKTsKKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzIgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1VDUzQgKnA7CisgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICB9CisjdW5kZWYgV1JJVEVfRElHSVRTCiAKLSAgICAvKiBhbmQgc2lnbiAqLwotICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgKi0tcCA9ICctJzsKLQotICAgIC8qIGNoZWNrIHdlJ3ZlIGNvdW50ZWQgY29ycmVjdGx5ICovCi0gICAgYXNzZXJ0KHAgPT0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSk7CiAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilzdHI7CisgICAgaWYgKHdyaXRlcikgeworICAgICAgICB3cml0ZXItPnBvcyArPSBzdHJsZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOworICAgICAgICAqcF9vdXRwdXQgPSAoUHlPYmplY3QgKilzdHI7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbG9uZ190b19kZWNpbWFsX3N0cmluZyhQeU9iamVjdCAqYWEpCit7CisgICAgUHlPYmplY3QgKnY7CisgICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHY7CiB9CiAKIC8qIENvbnZlcnQgYSBsb25nIGludCBvYmplY3QgdG8gYSBzdHJpbmcsIHVzaW5nIGEgZ2l2ZW4gY29udmVyc2lvbiBiYXNlLAotICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiAyLCA4LCAxMCBvciAxNi4gIFJldHVybiBhIHN0cmluZyBvYmplY3QuCi0gICBJZiBiYXNlIGlzIDIsIDggb3IgMTYsIGFkZCB0aGUgcHJvcGVyIHByZWZpeCAnMGInLCAnMG8nIG9yICcweCcuICovCisgICB3aGljaCBzaG91bGQgYmUgb25lIG9mIDIsIDggb3IgMTYuICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0LgorICAgSWYgYmFzZSBpcyAyLCA4IG9yIDE2LCBhZGQgdGhlIHByb3BlciBwcmVmaXggJzBiJywgJzBvJyBvciAnMHgnCisgICBpZiBhbHRlcm5hdGUgaXMgbm9uemVyby4gKi8KIAotUHlPYmplY3QgKgotX1B5TG9uZ19Gb3JtYXQoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSkKK3N0YXRpYyBpbnQKK2xvbmdfZm9ybWF0X2JpbmFyeShQeU9iamVjdCAqYWEsIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICByZWdpc3RlciBQeUxvbmdPYmplY3QgKmEgPSAoUHlMb25nT2JqZWN0ICopYWE7Ci0gICAgUHlPYmplY3QgKnN0cjsKLSAgICBQeV9zc2l6ZV90IGksIHN6OworICAgIFB5T2JqZWN0ICp2OworICAgIFB5X3NzaXplX3Qgc3o7CiAgICAgUHlfc3NpemVfdCBzaXplX2E7Ci0gICAgUHlfVU5JQ09ERSAqcCwgc2lnbiA9ICdcMCc7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGludCBuZWdhdGl2ZTsKICAgICBpbnQgYml0czsKIAotICAgIGFzc2VydChiYXNlID09IDIgfHwgYmFzZSA9PSA4IHx8IGJhc2UgPT0gMTAgfHwgYmFzZSA9PSAxNik7Ci0gICAgaWYgKGJhc2UgPT0gMTApCi0gICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nKChQeU9iamVjdCAqKWEpOwotCisgICAgYXNzZXJ0KGJhc2UgPT0gMiB8fCBiYXNlID09IDggfHwgYmFzZSA9PSAxNik7CiAgICAgaWYgKGEgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKGEpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CisgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKIAogICAgIC8qIENvbXB1dGUgYSByb3VnaCB1cHBlciBib3VuZCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nICovCiAgICAgc3dpdGNoIChiYXNlKSB7CkBAIC0xNjk3LDcwICsxNzYyLDEzNyBAQAogICAgICAgICBhc3NlcnQoMCk7IC8qIHNob3VsZG4ndCBldmVyIGdldCBoZXJlICovCiAgICAgICAgIGJpdHMgPSAwOyAvKiB0byBzaWxlbmNlIGdjYyB3YXJuaW5nICovCiAgICAgfQotICAgIC8qIGNvbXB1dGUgbGVuZ3RoIG9mIG91dHB1dCBzdHJpbmc6IGFsbG93IDIgY2hhcmFjdGVycyBmb3IgcHJlZml4IGFuZAotICAgICAgIDEgZm9yIHBvc3NpYmxlICctJyBzaWduLiAqLwotICAgIGlmIChzaXplX2EgPiAoUFlfU1NJWkVfVF9NQVggLSAzKSAvIFB5TG9uZ19TSElGVCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgaXMgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgLyogbm93IHNpemVfYSAqIFB5TG9uZ19TSElGVCArIDMgPD0gUFlfU1NJWkVfVF9NQVgsIHNvIHRoZSBSSFMgYmVsb3cKLSAgICAgICBpcyBzYWZlIGZyb20gb3ZlcmZsb3cgKi8KLSAgICBzeiA9IDMgKyAoc2l6ZV9hICogUHlMb25nX1NISUZUICsgKGJpdHMgLSAxKSkgLyBiaXRzOwotICAgIGFzc2VydChzeiA+PSAwKTsKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3opOwotICAgIGlmIChzdHIgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikgKyBzejsKLSAgICAqcCA9ICdcMCc7Ci0gICAgaWYgKFB5X1NJWkUoYSkgPCAwKQotICAgICAgICBzaWduID0gJy0nOwogCi0gICAgaWYgKFB5X1NJWkUoYSkgPT0gMCkgewotICAgICAgICAqLS1wID0gJzAnOworICAgIC8qIENvbXB1dGUgZXhhY3QgbGVuZ3RoICdzeicgb2Ygb3V0cHV0IHN0cmluZy4gKi8KKyAgICBpZiAoc2l6ZV9hID09IDApIHsKKyAgICAgICAgc3ogPSAxOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogSlJIOiBzcGVjaWFsIGNhc2UgZm9yIHBvd2VyLW9mLTIgYmFzZXMgKi8KLSAgICAgICAgdHdvZGlnaXRzIGFjY3VtID0gMDsKLSAgICAgICAgaW50IGFjY3VtYml0cyA9IDA7ICAgICAgICAgICAgICAvKiAjIG9mIGJpdHMgaW4gYWNjdW0gKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVfYTsgKytpKSB7Ci0gICAgICAgICAgICBhY2N1bSB8PSAodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W2ldIDw8IGFjY3VtYml0czsKLSAgICAgICAgICAgIGFjY3VtYml0cyArPSBQeUxvbmdfU0hJRlQ7Ci0gICAgICAgICAgICBhc3NlcnQoYWNjdW1iaXRzID49IGJpdHMpOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgY2RpZ2l0OwotICAgICAgICAgICAgICAgIGNkaWdpdCA9IChQeV9VTklDT0RFKShhY2N1bSAmIChiYXNlIC0gMSkpOwotICAgICAgICAgICAgICAgIGNkaWdpdCArPSAoY2RpZ2l0IDwgMTApID8gJzAnIDogJ2EnLTEwOwotICAgICAgICAgICAgICAgIGFzc2VydChwID4gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSk7Ci0gICAgICAgICAgICAgICAgKi0tcCA9IGNkaWdpdDsKLSAgICAgICAgICAgICAgICBhY2N1bWJpdHMgLT0gYml0czsKLSAgICAgICAgICAgICAgICBhY2N1bSA+Pj0gYml0czsKLSAgICAgICAgICAgIH0gd2hpbGUgKGkgPCBzaXplX2EtMSA/IGFjY3VtYml0cyA+PSBiaXRzIDogYWNjdW0gPiAwKTsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplX2FfaW5fYml0czsKKyAgICAgICAgLyogRW5zdXJlIG92ZXJmbG93IGRvZXNuJ3Qgb2NjdXIgZHVyaW5nIGNvbXB1dGF0aW9uIG9mIHN6LiAqLworICAgICAgICBpZiAoc2l6ZV9hID4gKFBZX1NTSVpFX1RfTUFYIC0gMykgLyBQeUxvbmdfU0hJRlQpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgaXMgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CisgICAgICAgIHNpemVfYV9pbl9iaXRzID0gKHNpemVfYSAtIDEpICogUHlMb25nX1NISUZUICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzX2luX2RpZ2l0KGEtPm9iX2RpZ2l0W3NpemVfYSAtIDFdKTsKKyAgICAgICAgLyogQWxsb3cgMSBjaGFyYWN0ZXIgZm9yIGEgJy0nIHNpZ24uICovCisgICAgICAgIHN6ID0gbmVnYXRpdmUgKyAoc2l6ZV9hX2luX2JpdHMgKyAoYml0cyAtIDEpKSAvIGJpdHM7CisgICAgfQorICAgIGlmIChhbHRlcm5hdGUpIHsKKyAgICAgICAgLyogMiBjaGFyYWN0ZXJzIGZvciBwcmVmaXggICovCisgICAgICAgIHN6ICs9IDI7CiAgICAgfQogCi0gICAgaWYgKGJhc2UgPT0gMTYpCi0gICAgICAgICotLXAgPSAneCc7Ci0gICAgZWxzZSBpZiAoYmFzZSA9PSA4KQotICAgICAgICAqLS1wID0gJ28nOwotICAgIGVsc2UgLyogKGJhc2UgPT0gMikgKi8KLSAgICAgICAgKi0tcCA9ICdiJzsKLSAgICAqLS1wID0gJzAnOwotICAgIGlmIChzaWduKQotICAgICAgICAqLS1wID0gc2lnbjsKLSAgICBpZiAocCAhPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpOwotICAgICAgICBhc3NlcnQocCA+IHEpOwotICAgICAgICBkbyB7Ci0gICAgICAgIH0gd2hpbGUgKCgqcSsrID0gKnArKykgIT0gJ1wwJyk7Ci0gICAgICAgIHEtLTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnN0ciwoUHlfc3NpemVfdCkgKHEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN6LCAneCcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOworICAgICAgICB2ID0gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXN0cjsKKyAgICBlbHNlIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc3osICd4Jyk7CisgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICB9CisKKyNkZWZpbmUgV1JJVEVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoc2l6ZV9hID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICcwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLyogSlJIOiBzcGVjaWFsIGNhc2UgZm9yIHBvd2VyLW9mLTIgYmFzZXMgKi8gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdHdvZGlnaXRzIGFjY3VtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50IGFjY3VtYml0cyA9IDA7ICAgLyogIyBvZiBiaXRzIGluIGFjY3VtICovICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVfYTsgKytpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGFjY3VtIHw9ICh0d29kaWdpdHMpYS0+b2JfZGlnaXRbaV0gPDwgYWNjdW1iaXRzOyAgICAgICAgXAorICAgICAgICAgICAgICAgIGFjY3VtYml0cyArPSBQeUxvbmdfU0hJRlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGFzc2VydChhY2N1bWJpdHMgPj0gYml0cyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBjaGFyIGNkaWdpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBjZGlnaXQgPSAoY2hhcikoYWNjdW0gJiAoYmFzZSAtIDEpKTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBjZGlnaXQgKz0gKGNkaWdpdCA8IDEwKSA/ICcwJyA6ICdhJy0xMDsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAqLS1wID0gY2RpZ2l0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhY2N1bWJpdHMgLT0gYml0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhY2N1bSA+Pj0gYml0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gd2hpbGUgKGkgPCBzaXplX2EtMSA/IGFjY3VtYml0cyA+PSBiaXRzIDogYWNjdW0gPiAwKTsgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoYWx0ZXJuYXRlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKGJhc2UgPT0gMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAneCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZWxzZSBpZiAoYmFzZSA9PSA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnbyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZWxzZSAvKiAoYmFzZSA9PSAyKSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnYic7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICcwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcykpOyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpwOworICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgfQorI3VuZGVmIFdSSVRFX0RJR0lUUworCisgICAgaWYgKHdyaXRlcikgeworICAgICAgICB3cml0ZXItPnBvcyArPSBzejsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodiwgMSkpOworICAgICAgICAqcF9vdXRwdXQgPSB2OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworUHlPYmplY3QgKgorX1B5TG9uZ19Gb3JtYXQoUHlPYmplY3QgKm9iaiwgaW50IGJhc2UpCit7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBpbnQgZXJyOworICAgIGlmIChiYXNlID09IDEwKQorICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMKTsKKyAgICBpZiAoZXJyID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gc3RyOworfQorCitpbnQKK19QeUxvbmdfRm9ybWF0V3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSkKK3sKKyAgICBpZiAoYmFzZSA9PSAxMCkKKyAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyKTsKIH0KIAogLyogVGFibGUgb2YgZGlnaXQgdmFsdWVzIGZvciA4LWJpdCBzdHJpbmcgLT4gaW50ZWdlciBjb252ZXJzaW9uLgpAQCAtMjEzOCwyMyArMjI3MCwyNiBAQAogUHlPYmplY3QgKgogUHlMb25nX0Zyb21Vbmljb2RlKFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3QgbGVuZ3RoLCBpbnQgYmFzZSkKIHsKKyAgICBQeU9iamVjdCAqdiwgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodSwgbGVuZ3RoKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB2ID0gUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KHVuaWNvZGUsIGJhc2UpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gdjsKK30KKworUHlPYmplY3QgKgorUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KFB5T2JqZWN0ICp1LCBpbnQgYmFzZSkKK3sKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICphc2NpaWRpZzsKICAgICBjaGFyICpidWZmZXIsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBpLCBidWZsZW47Ci0gICAgUHlfVU5JQ09ERSAqcHRyOworICAgIFB5X3NzaXplX3QgYnVmbGVuOwogCi0gICAgYXNjaWlkaWcgPSBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkodSwgbGVuZ3RoKTsKKyAgICBhc2NpaWRpZyA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh1KTsKICAgICBpZiAoYXNjaWlkaWcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgLyogUmVwbGFjZSBub24tQVNDSUkgd2hpdGVzcGFjZSB3aXRoICcgJyAqLwotICAgIHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFzY2lpZGlnKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHB0cltpXTsKLSAgICAgICAgaWYgKGNoID4gMTI3ICYmIFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICBwdHJbaV0gPSAnICc7Ci0gICAgfQotICAgIGJ1ZmZlciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKGFzY2lpZGlnLCAmYnVmbGVuKTsKKyAgICBidWZmZXIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhc2NpaWRpZywgJmJ1Zmxlbik7CiAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhc2NpaWRpZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ1MSw4ICsyNTg2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgIH0KLSAgICBhc3NlcnQoMSA8PSB4X3NpemUgJiYKLSAgICAgICAgICAgeF9zaXplIDw9IChQeV9zc2l6ZV90KShzaXplb2YoeF9kaWdpdHMpL3NpemVvZihkaWdpdCkpKTsKKyAgICBhc3NlcnQoMSA8PSB4X3NpemUgJiYgeF9zaXplIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSCh4X2RpZ2l0cykpOwogCiAgICAgLyogUm91bmQsIGFuZCBjb252ZXJ0IHRvIGRvdWJsZS4gKi8KICAgICB4X2RpZ2l0c1swXSArPSBoYWxmX2V2ZW5fY29ycmVjdGlvblt4X2RpZ2l0c1swXSAmIDddOwpAQCAtMjQ4OSwxMCArMjYyMywxNCBAQAogICAgIFB5X3NzaXplX3QgZXhwb25lbnQ7CiAgICAgZG91YmxlIHg7CiAKLSAgICBpZiAodiA9PSBOVUxMIHx8ICFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTEuMDsKICAgICB9CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xLjA7CisgICAgfQogICAgIHggPSBfUHlMb25nX0ZyZXhwKChQeUxvbmdPYmplY3QgKil2LCAmZXhwb25lbnQpOwogICAgIGlmICgoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHx8IGV4cG9uZW50ID4gREJMX01BWF9FWFApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCkBAIC0zNjE3LDggKzM3NTUsNyBAQAogICAgIGVsc2UgewogICAgICAgICBQeV9ERUNSRUYoYSk7CiAgICAgICAgIFB5X0RFQ1JFRihiKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgaWYgKFB5X1NJWkUoYikgPCAwKSB7ICAvKiBpZiBleHBvbmVudCBpcyBuZWdhdGl2ZSAqLwpAQCAtNDE0NSw5ICs0MjgyLDcgQEAKICAgICB9CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHgpKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKHgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWJhc2UpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KHgsIChpbnQpYmFzZSk7CiAgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soeCkgfHwgUHlCeXRlc19DaGVjayh4KSkgewogICAgICAgICAvKiBTaW5jZSBQeUxvbmdfRnJvbVN0cmluZyBkb2Vzbid0IGhhdmUgYSBsZW5ndGggcGFyYW1ldGVyLAogICAgICAgICAgKiBjaGVjayBoZXJlIGZvciBwb3NzaWJsZSBOVUxzIGluIHRoZSBzdHJpbmcuICovCkBAIC00MjI2LDEyICs0MzYxLDIyIEBACiBsb25nX19mb3JtYXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZm9ybWF0X3NwZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeUxvbmdfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgICAgICZ3cml0ZXIsCisgICAgICAgIHNlbGYsCisgICAgICAgIGZvcm1hdF9zcGVjLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiAvKiBSZXR1cm4gYSBwYWlyIChxLCByKSBzdWNoIHRoYXQgYSA9IGIgKiBxICsgciwgYW5kCmRpZmYgLS1naXQgYS9PYmplY3RzL21lbW9yeW9iamVjdC5jIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwppbmRleCA0MDNhYTY4Li5kNTZmYWY4IDEwMDY0NAotLS0gYS9PYmplY3RzL21lbW9yeW9iamVjdC5jCisrKyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKQEAgLTEsMTI2ICsxLDk1NCBAQAotCiAvKiBNZW1vcnl2aWV3IG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+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+dmlldzsKKworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIGlmICh2aWV3LT5vYmogPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgcmV0dXJuIHZpZXctPm9iajsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9uYnl0ZXNfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnZpZXcubGVuKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9mb3JtYXRfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKIHsKQEAgLTM0MywzMSArMjgwNiw2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fSW50VHVwbGVGcm9tU3NpemV0KGludCBsZW4sIFB5X3NzaXplX3QgKnZhbHMpCi17Ci0gICAgaW50IGk7Ci0gICAgUHlPYmplY3QgKm87Ci0gICAgUHlPYmplY3QgKmludFR1cGxlOwotCi0gICAgaWYgKHZhbHMgPT0gTlVMTCkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSAgICBpbnRUdXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7Ci0gICAgaWYgKCFpbnRUdXBsZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKLSAgICAgICAgbyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh2YWxzW2ldKTsKLSAgICAgICAgaWYgKCFvKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaW50VHVwbGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbnRUdXBsZSwgaSwgbyk7Ci0gICAgfQotICAgIHJldHVybiBpbnRUdXBsZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9zaGFwZV9nZXQoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQogewogICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOwpAQCAtNDAyLDExICsyODQwLDQyIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT52aWV3Lm5kaW0pOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2NfY29udGlndW91cyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKE1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2ZfY29udGlndW91cyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKE1WX0ZfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2NvbnRpZ3VvdXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhNVl9BTllfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitQeURvY19TVFJWQVIobWVtb3J5X29ial9kb2MsCisgICAgICAgICAgICAgIlRoZSB1bmRlcmx5aW5nIG9iamVjdCBvZiB0aGUgbWVtb3J5dmlldy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfbmJ5dGVzX2RvYywKKyAgICAgICAgICAgICAiVGhlIGFtb3VudCBvZiBzcGFjZSBpbiBieXRlcyB0aGF0IHRoZSBhcnJheSB3b3VsZCB1c2UgaW5cbiIKKyAgICAgICAgICAgICAiIGEgY29udGlndW91cyByZXByZXNlbnRhdGlvbi4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfcmVhZG9ubHlfZG9jLAorICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgcmVhZCBvbmx5LiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9pdGVtc2l6ZV9kb2MsCisgICAgICAgICAgICAgIlRoZSBzaXplIGluIGJ5dGVzIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUgbWVtb3J5dmlldy4iKTsKIFB5RG9jX1NUUlZBUihtZW1vcnlfZm9ybWF0X2RvYywKICAgICAgICAgICAgICAiQSBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0IChpbiBzdHJ1Y3QgbW9kdWxlIHN0eWxlKVxuIgogICAgICAgICAgICAgICIgZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgdmlldy4iKTsKLVB5RG9jX1NUUlZBUihtZW1vcnlfaXRlbXNpemVfZG9jLAotICAgICAgICAgICAgICJUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXcuIik7CitQeURvY19TVFJWQVIobWVtb3J5X25kaW1fZG9jLAorICAgICAgICAgICAgICJBbiBpbnRlZ2VyIGluZGljYXRpbmcgaG93IG1hbnkgZGltZW5zaW9ucyBvZiBhIG11bHRpLWRpbWVuc2lvbmFsXG4iCisgICAgICAgICAgICAgIiBhcnJheSB0aGUgbWVtb3J5IHJlcHJlc2VudHMuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3NoYXBlX2RvYywKICAgICAgICAgICAgICAiQSB0dXBsZSBvZiBuZGltIGludGVnZXJzIGdpdmluZyB0aGUgc2hhcGUgb2YgdGhlIG1lbW9yeVxuIgogICAgICAgICAgICAgICIgYXMgYW4gTi1kaW1lbnNpb25hbCBhcnJheS4iKTsKQEAgLTQxNSw5NSArMjg4NCwyOSBAQAogICAgICAgICAgICAgICIgZWFjaCBlbGVtZW50IGZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3N1Ym9mZnNldHNfZG9jLAogICAgICAgICAgICAgICJBIHR1cGxlIG9mIGludGVnZXJzIHVzZWQgaW50ZXJuYWxseSBmb3IgUElMLXN0eWxlIGFycmF5cy4iKTsKLVB5RG9jX1NUUlZBUihtZW1vcnlfcmVhZG9ubHlfZG9jLAotICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgcmVhZCBvbmx5LiIpOwotUHlEb2NfU1RSVkFSKG1lbW9yeV9uZGltX2RvYywKLSAgICAgICAgICAgICAiQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbFxuIgotICAgICAgICAgICAgICIgYXJyYXkgdGhlIG1lbW9yeSByZXByZXNlbnRzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9jX2NvbnRpZ3VvdXNfZG9jLAorICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgQyBjb250aWd1b3VzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9mX2NvbnRpZ3VvdXNfZG9jLAorICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgRm9ydHJhbiBjb250aWd1b3VzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9jb250aWd1b3VzX2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIGNvbnRpZ3VvdXMuIik7CiAKIHN0YXRpYyBQeUdldFNldERlZiBtZW1vcnlfZ2V0c2V0bGlzdFtdID0gewotICAgIHsiZm9ybWF0IiwgICAgICAgICAgKGdldHRlciltZW1vcnlfZm9ybWF0X2dldCwgICAgICBOVUxMLCBtZW1vcnlfZm9ybWF0X2RvY30sCi0gICAgeyJpdGVtc2l6ZSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9pdGVtc2l6ZV9nZXQsICAgIE5VTEwsIG1lbW9yeV9pdGVtc2l6ZV9kb2N9LAotICAgIHsic2hhcGUiLCAgICAgICAgICAgKGdldHRlciltZW1vcnlfc2hhcGVfZ2V0LCAgICAgICBOVUxMLCBtZW1vcnlfc2hhcGVfZG9jfSwKLSAgICB7InN0cmlkZXMiLCAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3N0cmlkZXNfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X3N0cmlkZXNfZG9jfSwKLSAgICB7InN1Ym9mZnNldHMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X3N1Ym9mZnNldHNfZ2V0LCAgTlVMTCwgbWVtb3J5X3N1Ym9mZnNldHNfZG9jfSwKLSAgICB7InJlYWRvbmx5IiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X3JlYWRvbmx5X2dldCwgICAgTlVMTCwgbWVtb3J5X3JlYWRvbmx5X2RvY30sCi0gICAgeyJuZGltIiwgICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uZGltX2dldCwgICAgICAgIE5VTEwsIG1lbW9yeV9uZGltX2RvY30sCisgICAgeyJvYmoiLCAgICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9vYmpfZ2V0LCAgICAgICAgTlVMTCwgbWVtb3J5X29ial9kb2N9LAorICAgIHsibmJ5dGVzIiwgICAgICAgICAgKGdldHRlciltZW1vcnlfbmJ5dGVzX2dldCwgICAgIE5VTEwsIG1lbW9yeV9uYnl0ZXNfZG9jfSwKKyAgICB7InJlYWRvbmx5IiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X3JlYWRvbmx5X2dldCwgICBOVUxMLCBtZW1vcnlfcmVhZG9ubHlfZG9jfSwKKyAgICB7Iml0ZW1zaXplIiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X2l0ZW1zaXplX2dldCwgICBOVUxMLCBtZW1vcnlfaXRlbXNpemVfZG9jfSwKKyAgICB7ImZvcm1hdCIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X2Zvcm1hdF9nZXQsICAgICBOVUxMLCBtZW1vcnlfZm9ybWF0X2RvY30sCisgICAgeyJuZGltIiwgICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uZGltX2dldCwgICAgICAgTlVMTCwgbWVtb3J5X25kaW1fZG9jfSwKKyAgICB7InNoYXBlIiwgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3NoYXBlX2dldCwgICAgICBOVUxMLCBtZW1vcnlfc2hhcGVfZG9jfSwKKyAgICB7InN0cmlkZXMiLCAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3N0cmlkZXNfZ2V0LCAgICBOVUxMLCBtZW1vcnlfc3RyaWRlc19kb2N9LAorICAgIHsic3Vib2Zmc2V0cyIsICAgICAgKGdldHRlciltZW1vcnlfc3Vib2Zmc2V0c19nZXQsIE5VTEwsIG1lbW9yeV9zdWJvZmZzZXRzX2RvY30sCisgICAgeyJjX2NvbnRpZ3VvdXMiLCAgICAoZ2V0dGVyKW1lbW9yeV9jX2NvbnRpZ3VvdXMsICAgTlVMTCwgbWVtb3J5X2NfY29udGlndW91c19kb2N9LAorICAgIHsiZl9jb250aWd1b3VzIiwgICAgKGdldHRlciltZW1vcnlfZl9jb250aWd1b3VzLCAgIE5VTEwsIG1lbW9yeV9mX2NvbnRpZ3VvdXNfZG9jfSwKKyAgICB7ImNvbnRpZ3VvdXMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X2NvbnRpZ3VvdXMsICAgICBOVUxMLCBtZW1vcnlfY29udGlndW91c19kb2N9LAogICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwKIH07CiAKLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV90b2J5dGVzKFB5TWVtb3J5Vmlld09iamVjdCAqbWVtLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIENIRUNLX1JFTEVBU0VEKG1lbSk7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCi0gICAgICAgICAgICAoUHlPYmplY3QgKikgJlB5Qnl0ZXNfVHlwZSwgbWVtLCBOVUxMKTsKLX0KLQotLyogVE9ETzogcmV3cml0ZSB0aGlzIGZ1bmN0aW9uIHVzaW5nIHRoZSBzdHJ1Y3QgbW9kdWxlIHRvIHVucGFjawotICAgZWFjaCBidWZmZXIgaXRlbSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X3RvbGlzdChQeU1lbW9yeVZpZXdPYmplY3QgKm1lbSwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICBQeV9idWZmZXIgKnZpZXcgPSAmKG1lbS0+dmlldyk7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5T2JqZWN0ICpyZXMsICppdGVtOwotICAgIGNoYXIgKmJ1ZjsKLQotICAgIENIRUNLX1JFTEVBU0VEKG1lbSk7Ci0gICAgaWYgKHN0cmNtcCh2aWV3LT5mb3JtYXQsICJCIikgfHwgdmlldy0+aXRlbXNpemUgIT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwgCi0gICAgICAgICAgICAgICAgInRvbGlzdCgpIG9ubHkgc3VwcG9ydHMgYnl0ZSB2aWV3cyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHZpZXctPm5kaW0gIT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwgCi0gICAgICAgICAgICAgICAgInRvbGlzdCgpIG9ubHkgc3VwcG9ydHMgb25lLWRpbWVuc2lvbmFsIG9iamVjdHMiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlcyA9IFB5TGlzdF9OZXcodmlldy0+bGVuKTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IHZpZXctPmJ1ZjsKLSAgICBmb3IgKGkgPSAwOyBpIDwgdmlldy0+bGVuOyBpKyspIHsKLSAgICAgICAgaXRlbSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBjaGFyKSAqYnVmKTsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeUxpc3RfU0VUX0lURU0ocmVzLCBpLCBpdGVtKTsKLSAgICAgICAgYnVmKys7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1kb19yZWxlYXNlKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+dmlldy5vYmogIT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCYoc2VsZi0+dmlldykpOwotICAgIH0KLSAgICBzZWxmLT52aWV3Lm9iaiA9IE5VTEw7Ci0gICAgc2VsZi0+dmlldy5idWYgPSBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfZXhpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgZG9fcmVsZWFzZSgoUHlNZW1vcnlWaWV3T2JqZWN0ICopIHNlbGYpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCiBQeURvY19TVFJWQVIobWVtb3J5X3JlbGVhc2VfZG9jLAogIk0ucmVsZWFzZSgpIC0+IE5vbmVcblwKIFxuXApAQCAtNTE2LDM0MyArMjkxOSwyNyBAQAogIk0udG9saXN0KCkgLT4gbGlzdFxuXAogXG5cCiBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgZWxlbWVudHMuIik7CitQeURvY19TVFJWQVIobWVtb3J5X2Nhc3RfZG9jLAorIk0uY2FzdChmb3JtYXRbLCBzaGFwZV0pIC0+IG1lbW9yeXZpZXdcblwKK1xuXAorQ2FzdCBhIG1lbW9yeXZpZXcgdG8gYSBuZXcgZm9ybWF0IG9yIHNoYXBlLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgbWVtb3J5X21ldGhvZHNbXSA9IHsKLSAgICB7InJlbGVhc2UiLCBtZW1vcnlfZXhpdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCi0gICAgeyJ0b2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKW1lbW9yeV90b2J5dGVzLCBNRVRIX05PQVJHUywgbWVtb3J5X3RvYnl0ZXNfZG9jfSwKLSAgICB7InRvbGlzdCIsIChQeUNGdW5jdGlvbiltZW1vcnlfdG9saXN0LCBNRVRIX05PQVJHUywgbWVtb3J5X3RvbGlzdF9kb2N9LAotICAgIHsiX19lbnRlcl9fIiwgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHU30sCi0gICAgeyJfX2V4aXRfXyIsIG1lbW9yeV9leGl0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHtOVUxMLCAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotc3RhdGljIHZvaWQKLW1lbW9yeV9kZWFsbG9jKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKLSAgICBkb19yZWxlYXNlKHNlbGYpOwotICAgIFB5T2JqZWN0X0dDX0RlbChzZWxmKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9yZXByKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoSVNfUkVMRUFTRUQoc2VsZikpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHJlbGVhc2VkIG1lbW9yeSBhdCAlcD4iLCBzZWxmKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1lbW9yeSBhdCAlcD4iLCBzZWxmKTsKLX0KLQotLyogU2VxdWVuY2UgbWV0aG9kcyAqLwotc3RhdGljIFB5X3NzaXplX3QKLW1lbW9yeV9sZW5ndGgoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQotewotICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKLSAgICByZXR1cm4gZ2V0X3NoYXBlMCgmc2VsZi0+dmlldyk7Ci19Ci0KLS8qIEFsdGVybmF0ZSB2ZXJzaW9uIG9mIG1lbW9yeV9zdWJjcmlwdCB0aGF0IG9ubHkgYWNjZXB0cyBpbmRpY2VzLgotICAgVXNlZCBieSBQeVNlcUl0ZXJfTmV3KCkuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9pdGVtKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfc3NpemVfdCByZXN1bHQpCi17Ci0gICAgUHlfYnVmZmVyICp2aWV3ID0gJihzZWxmLT52aWV3KTsKLQotICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOwotICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICh2aWV3LT5uZGltID09IDEpIHsKLSAgICAgICAgLyogUmV0dXJuIGEgYnl0ZXMgb2JqZWN0ICovCi0gICAgICAgIGNoYXIgKnB0cjsKLSAgICAgICAgcHRyID0gKGNoYXIgKil2aWV3LT5idWY7Ci0gICAgICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gZ2V0X3NoYXBlMCh2aWV3KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKHJlc3VsdCA8IDApIHx8IChyZXN1bHQgPj0gZ2V0X3NoYXBlMCh2aWV3KSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIHB0ciArPSB2aWV3LT5pdGVtc2l6ZSAqIHJlc3VsdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHRyICs9IHZpZXctPnN0cmlkZXNbMF0gKiByZXN1bHQ7Ci0gICAgICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzICE9IE5VTEwgJiYKLSAgICAgICAgICAgIHZpZXctPnN1Ym9mZnNldHNbMF0gPj0gMCkgewotICAgICAgICAgICAgcHRyID0gKigoY2hhciAqKilwdHIpICsgdmlldy0+c3Vib2Zmc2V0c1swXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwdHIsIHZpZXctPml0ZW1zaXplKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBSZXR1cm4gYSBuZXcgbWVtb3J5LXZpZXcgb2JqZWN0ICovCi0gICAgICAgIFB5X2J1ZmZlciBuZXd2aWV3OwotICAgICAgICBtZW1zZXQoJm5ld3ZpZXcsIDAsIHNpemVvZihuZXd2aWV3KSk7Ci0gICAgICAgIC8qIFhYWDogIFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgc28gaXQgYWN0dWFsbHkgcmV0dXJucyBhIHN1Yi12aWV3ICovCi0gICAgICAgIHJldHVybiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigmbmV3dmlldyk7Ci0gICAgfQotfQotCi0vKgotICBtZW1bb2JqXSByZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIGRhdGEgZm9yIG9uZSBlbGVtZW50IGlmCi0gICAgICAgICAgIG9iaiBmdWxseSBpbmRleGVzIHRoZSBtZW1vcnkgdmlldyBvciBhbm90aGVyIG1lbW9yeS12aWV3IG9iamVjdAotICAgICAgICAgICBpZiBpdCBkb2VzIG5vdC4KLQotICAgICAgICAgICAwLWQgbWVtb3J5LXZpZXcgb2JqZWN0cyBjYW4gYmUgcmVmZXJlbmNlZCB1c2luZyAuLi4gb3IgKCkgYnV0Ci0gICAgICAgICAgIG5vdCB3aXRoIGFueXRoaW5nIGVsc2UuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfc3Vic2NyaXB0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKLXsKLSAgICBQeV9idWZmZXIgKnZpZXc7Ci0gICAgdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0gICAgCi0gICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7Ci0gICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgewotICAgICAgICBpZiAoa2V5ID09IFB5X0VsbGlwc2lzIHx8Ci0gICAgICAgICAgICAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KT09MCkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewotICAgICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGtleSwgTlVMTCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIG1lbW9yeV9pdGVtKHNlbGYsIHJlc3VsdCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgewotICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKLQotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBnZXRfc2hhcGUwKHZpZXcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIAotICAgICAgICBpZiAoc3RlcCA9PSAxICYmIHZpZXctPm5kaW0gPT0gMSkgewotICAgICAgICAgICAgUHlfYnVmZmVyIG5ld3ZpZXc7Ci0gICAgICAgICAgICB2b2lkICpuZXdidWYgPSAoY2hhciAqKSB2aWV3LT5idWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3RhcnQgKiB2aWV3LT5pdGVtc2l6ZTsKLSAgICAgICAgICAgIGludCBuZXdmbGFncyA9IHZpZXctPnJlYWRvbmx5Ci0gICAgICAgICAgICAgICAgICAgID8gUHlCVUZfQ09OVElHX1JPIDogUHlCVUZfQ09OVElHOwotICAgIAotICAgICAgICAgICAgLyogWFhYIFRoZXJlIHNob3VsZCBiZSBhbiBBUEkgdG8gY3JlYXRlIGEgc3ViYnVmZmVyICovCi0gICAgICAgICAgICBpZiAodmlldy0+b2JqICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHZpZXctPm9iaiwgJm5ld3ZpZXcsIG5ld2ZsYWdzKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZXd2aWV3ID0gKnZpZXc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuZXd2aWV3LmJ1ZiA9IG5ld2J1ZjsKLSAgICAgICAgICAgIG5ld3ZpZXcubGVuID0gc2xpY2VsZW5ndGggKiBuZXd2aWV3Lml0ZW1zaXplOwotICAgICAgICAgICAgbmV3dmlldy5mb3JtYXQgPSB2aWV3LT5mb3JtYXQ7Ci0gICAgICAgICAgICBuZXd2aWV3LnNoYXBlID0gJihuZXd2aWV3LnNtYWxsdGFibGVbMF0pOwotICAgICAgICAgICAgbmV3dmlldy5zaGFwZVswXSA9IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgbmV3dmlldy5zdHJpZGVzID0gJihuZXd2aWV3Lml0ZW1zaXplKTsKLSAgICAgICAgICAgIHJldHVybiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigmbmV3dmlldyk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICJjYW5ub3QgaW5kZXggbWVtb3J5IHVzaW5nIFwiJS4yMDBzXCIiLCAKLSAgICAgICAga2V5LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotCi0vKiBOZWVkIHRvIHN1cHBvcnQgYXNzaWduaW5nIG1lbW9yeSBpZiB3ZSBjYW4gKi8KLXN0YXRpYyBpbnQKLW1lbW9yeV9hc3Nfc3ViKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQotewotICAgIFB5X3NzaXplX3Qgc3RhcnQsIGxlbiwgYnl0ZWxlbjsKLSAgICBQeV9idWZmZXIgc3JjdmlldzsKLSAgICBQeV9idWZmZXIgKnZpZXcgPSAmKHNlbGYtPnZpZXcpOwotICAgIGNoYXIgKnNyY2J1ZiwgKmRlc3RidWY7Ci0KLSAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7Ci0gICAgaWYgKHZpZXctPnJlYWRvbmx5KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY2Fubm90IG1vZGlmeSByZWFkLW9ubHkgbWVtb3J5Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZGVsZXRlIG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICh2aWV3LT5uZGltICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7Ci0gICAgICAgIHN0YXJ0ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGtleSwgTlVMTCk7Ci0gICAgICAgIGlmIChzdGFydCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoc3RhcnQgPCAwKSB7Ci0gICAgICAgICAgICBzdGFydCArPSBnZXRfc2hhcGUwKHZpZXcpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoc3RhcnQgPCAwKSB8fCAoc3RhcnQgPj0gZ2V0X3NoYXBlMCh2aWV3KSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgbGVuID0gMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3Qgc3RvcCwgc3RlcDsKLQotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBnZXRfc2hhcGUwKHZpZXcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmbGVuKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3RlcCAhPSAxKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBpbmRleCBtZW1vcnkgdXNpbmcgXCIlLjIwMHNcIiIsIAotICAgICAgICAgICAga2V5LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHZhbHVlLCAmc3JjdmlldywgUHlCVUZfQ09OVElHX1JPKSA9PSAtMSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIFhYWCBzaG91bGQgd2UgYWxsb3cgYXNzaWdubWVudCBvZiBkaWZmZXJlbnQgaXRlbSBzaXplcwotICAgICAgIGFzIGxvbmcgYXMgdGhlIGJ5dGUgbGVuZ3RoIGlzIHRoZSBzYW1lPwotICAgICAgIChlLmcuIGFzc2lnbiAyIHNob3J0cyB0byBhIDQtYnl0ZSBzbGljZSkgKi8KLSAgICBpZiAoc3Jjdmlldy5pdGVtc2l6ZSAhPSB2aWV3LT5pdGVtc2l6ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgIm1pc21hdGNoaW5nIGl0ZW0gc2l6ZXMgZm9yIFwiJS4yMDBzXCIgYW5kIFwiJS4yMDBzXCIiLCAKLSAgICAgICAgICAgIHZpZXctPm9iai0+b2JfdHlwZS0+dHBfbmFtZSwgc3Jjdmlldy5vYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0gICAgYnl0ZWxlbiA9IGxlbiAqIHZpZXctPml0ZW1zaXplOwotICAgIGlmIChieXRlbGVuICE9IHNyY3ZpZXcubGVuKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBtb2RpZnkgc2l6ZSBvZiBtZW1vcnl2aWV3IG9iamVjdCIpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0gICAgLyogRG8gdGhlIGFjdHVhbCBjb3B5ICovCi0gICAgZGVzdGJ1ZiA9IChjaGFyICopIHZpZXctPmJ1ZiArIHN0YXJ0ICogdmlldy0+aXRlbXNpemU7Ci0gICAgc3JjYnVmID0gKGNoYXIgKikgc3Jjdmlldy5idWY7Ci0gICAgaWYgKGRlc3RidWYgKyBieXRlbGVuIDwgc3JjYnVmIHx8IHNyY2J1ZiArIGJ5dGVsZW4gPCBkZXN0YnVmKQotICAgICAgICAvKiBObyBvdmVybGFwcGluZyAqLwotICAgICAgICBtZW1jcHkoZGVzdGJ1Ziwgc3JjYnVmLCBieXRlbGVuKTsKLSAgICBlbHNlCi0gICAgICAgIG1lbW1vdmUoZGVzdGJ1Ziwgc3JjYnVmLCBieXRlbGVuKTsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyY3ZpZXcpOwotICAgIHJldHVybiAwOwotCi1fZXJyb3I6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc3Jjdmlldyk7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQotewotICAgIFB5X2J1ZmZlciB2diwgd3c7Ci0gICAgaW50IGVxdWFsID0gMDsKLSAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgdnYub2JqID0gTlVMTDsKLSAgICB3dy5vYmogPSBOVUxMOwotICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkKLSAgICAgICAgZ290byBfbm90aW1wbDsKLSAgICBpZiAoKFB5TWVtb3J5Vmlld19DaGVjayh2KSAmJiBJU19SRUxFQVNFRCh2KSkgfHwKLSAgICAgICAgKFB5TWVtb3J5Vmlld19DaGVjayh3KSAmJiBJU19SRUxFQVNFRCh3KSkpIHsKLSAgICAgICAgZXF1YWwgPSAodiA9PSB3KTsKLSAgICAgICAgZ290byBfZW5kOwotICAgIH0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHYsICZ2diwgUHlCVUZfQ09OVElHX1JPKSA9PSAtMSkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBnb3RvIF9ub3RpbXBsOwotICAgIH0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHcsICZ3dywgUHlCVUZfQ09OVElHX1JPKSA9PSAtMSkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBnb3RvIF9ub3RpbXBsOwotICAgIH0KLQotICAgIGlmICh2di5pdGVtc2l6ZSAhPSB3dy5pdGVtc2l6ZSB8fCB2di5sZW4gIT0gd3cubGVuKQotICAgICAgICBnb3RvIF9lbmQ7Ci0KLSAgICBlcXVhbCA9ICFtZW1jbXAodnYuYnVmLCB3dy5idWYsIHZ2Lmxlbik7Ci0KLV9lbmQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdnYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnd3KTsKLSAgICBpZiAoKGVxdWFsICYmIG9wID09IFB5X0VRKSB8fCAoIWVxdWFsICYmIG9wID09IFB5X05FKSkKLSAgICAgICAgcmVzID0gUHlfVHJ1ZTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IFB5X0ZhbHNlOwotICAgIFB5X0lOQ1JFRihyZXMpOwotICAgIHJldHVybiByZXM7Ci0KLV9ub3RpbXBsOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZ2KTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3dyk7Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci19Ci0KLQotc3RhdGljIGludAotbWVtb3J5X3RyYXZlcnNlKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCi17Ci0gICAgaWYgKHNlbGYtPnZpZXcub2JqICE9IE5VTEwpCi0gICAgICAgIFB5X1ZJU0lUKHNlbGYtPnZpZXcub2JqKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotbWVtb3J5X2NsZWFyKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZWxmLT52aWV3KTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi0vKiBBcyBtYXBwaW5nICovCi1zdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtZW1vcnlfYXNfbWFwcGluZyA9IHsKLSAgICAobGVuZnVuYyltZW1vcnlfbGVuZ3RoLCAgICAgICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLwotICAgIChiaW5hcnlmdW5jKW1lbW9yeV9zdWJzY3JpcHQsICAgICAgICAgLyogbXBfc3Vic2NyaXB0ICovCi0gICAgKG9iam9iamFyZ3Byb2MpbWVtb3J5X2Fzc19zdWIsICAgICAgICAvKiBtcF9hc3Nfc3Vic2NyaXB0ICovCi19OwotCi1zdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgbWVtb3J5X2FzX3NlcXVlbmNlID0gewotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLwotICAgICAgICAoc3NpemVhcmdmdW5jKW1lbW9yeV9pdGVtLCAgICAgICAgICAvKiBzcV9pdGVtICovCi19OwotCi0vKiBCdWZmZXIgbWV0aG9kcyAqLwotCi1zdGF0aWMgUHlCdWZmZXJQcm9jcyBtZW1vcnlfYXNfYnVmZmVyID0gewotICAgIChnZXRidWZmZXJwcm9jKW1lbW9yeV9nZXRidWYsICAgICAgICAgLyogYmZfZ2V0YnVmZmVyICovCi0gICAgKHJlbGVhc2VidWZmZXJwcm9jKW1lbW9yeV9yZWxlYXNlYnVmLCAvKiBiZl9yZWxlYXNlYnVmZmVyICovCisgICAgeyJyZWxlYXNlIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfcmVsZWFzZSwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCisgICAgeyJ0b2J5dGVzIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCisgICAgeyJ0b2xpc3QiLCAgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9saXN0LCBNRVRIX05PQVJHUywgbWVtb3J5X3RvbGlzdF9kb2N9LAorICAgIHsiY2FzdCIsICAgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X2Nhc3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBtZW1vcnlfY2FzdF9kb2N9LAorICAgIHsiX19lbnRlcl9fIiwgICBtZW1vcnlfZW50ZXIsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7Il9fZXhpdF9fIiwgICAgbWVtb3J5X2V4aXQsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgIE5VTEx9CiB9OwogCiAKIFB5VHlwZU9iamVjdCBQeU1lbW9yeVZpZXdfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICJtZW1vcnl2aWV3IiwKLSAgICBzaXplb2YoUHlNZW1vcnlWaWV3T2JqZWN0KSwKLSAgICAwLAorICAgICJtZW1vcnl2aWV3IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBvZmZzZXRvZihQeU1lbW9yeVZpZXdPYmplY3QsIG9iX2FycmF5KSwgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICBzaXplb2YoUHlfc3NpemVfdCksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIChkZXN0cnVjdG9yKW1lbW9yeV9kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KQEAgLTg2Miw3ICsyOTQ5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAmbWVtb3J5X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgICZtZW1vcnlfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgKGhhc2hmdW5jKW1lbW9yeV9oYXNoLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwpAQCAtODczLDcgKzI5NjAsNyBAQAogICAgICh0cmF2ZXJzZXByb2MpbWVtb3J5X3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpbWVtb3J5X2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICBtZW1vcnlfcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoUHlNZW1vcnlWaWV3T2JqZWN0LCB3ZWFrcmVmbGlzdCksLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBtZW1vcnlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCmRpZmYgLS1naXQgYS9PYmplY3RzL21ldGhvZG9iamVjdC5jIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwppbmRleCBmMWE5ZjRiLi4xZDE0M2Y5IDEwMDY0NAotLS0gYS9PYmplY3RzL21ldGhvZG9iamVjdC5jCisrKyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBtX21sIC0+IG1sX21ldGg7CisgICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihvcCk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBtX3NlbGY7CisgICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKG9wKTsKIH0KIAogaW50CkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybiAoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopb3ApIC0+IG1fbWwgLT4gbWxfZmxhZ3M7CisgICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhvcCk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTE1MSw2ICsxNTEsNDEgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcobS0+bV9tbC0+bWxfbmFtZSk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittZXRoX2dldF9fcXVhbG5hbWVfXyhQeUNGdW5jdGlvbk9iamVjdCAqbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICAvKiBJZiBfX3NlbGZfXyBpcyBhIG1vZHVsZSBvciBOVUxMLCByZXR1cm4gbS5fX25hbWVfXworICAgICAgIChlLmcuIGxlbi5fX3F1YWxuYW1lX18gPT0gJ2xlbicpCisKKyAgICAgICBJZiBfX3NlbGZfXyBpcyBhIHR5cGUsIHJldHVybiBtLl9fc2VsZl9fLl9fcXVhbG5hbWVfXyArICcuJyArIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBkaWN0LmZyb21rZXlzLl9fcXVhbG5hbWVfXyA9PSAnZGljdC5mcm9ta2V5cycpCisKKyAgICAgICBPdGhlcndpc2UgcmV0dXJuIHR5cGUobS5fX3NlbGZfXykuX19xdWFsbmFtZV9fICsgJy4nICsgbS5fX25hbWVfXworICAgICAgIChlLmcuIFtdLmFwcGVuZC5fX3F1YWxuYW1lX18gPT0gJ2xpc3QuYXBwZW5kJykgKi8KKyAgICBQeU9iamVjdCAqdHlwZSwgKnR5cGVfcXVhbG5hbWUsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKKworICAgIGlmIChtLT5tX3NlbGYgPT0gTlVMTCB8fCBQeU1vZHVsZV9DaGVjayhtLT5tX3NlbGYpKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcobS0+bV9tbC0+bWxfbmFtZSk7CisKKyAgICB0eXBlID0gUHlUeXBlX0NoZWNrKG0tPm1fc2VsZikgPyBtLT5tX3NlbGYgOiAoUHlPYmplY3QqKVB5X1RZUEUobS0+bV9zZWxmKTsKKworICAgIHR5cGVfcXVhbG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHR5cGUsICZQeUlkX19fcXVhbG5hbWVfXyk7CisgICAgaWYgKHR5cGVfcXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0eXBlX3F1YWxuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiPG1ldGhvZD4uX19jbGFzc19fLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gaXMgbm90IGEgdW5pY29kZSBvYmplY3QiKTsKKyAgICAgICAgUHlfWERFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTLiVzIiwgdHlwZV9xdWFsbmFtZSwgbS0+bV9tbC0+bWxfbmFtZSk7CisgICAgUHlfREVDUkVGKHR5cGVfcXVhbG5hbWUpOworICAgIHJldHVybiByZXM7Cit9CisKIHN0YXRpYyBpbnQKIG1ldGhfdHJhdmVyc2UoUHlDRnVuY3Rpb25PYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewpAQCAtMTY0LDcgKzE5OSw3IEBACiB7CiAgICAgUHlPYmplY3QgKnNlbGY7CiAKLSAgICBzZWxmID0gbS0+bV9zZWxmOworICAgIHNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihtKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICBzZWxmID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoc2VsZik7CkBAIC0xNzQsNiArMjA5LDcgQEAKIHN0YXRpYyBQeUdldFNldERlZiBtZXRoX2dldHNldHMgW10gPSB7CiAgICAgeyJfX2RvY19fIiwgIChnZXR0ZXIpbWV0aF9nZXRfX2RvY19fLCAgTlVMTCwgTlVMTH0sCiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpbWV0aF9nZXRfX25hbWVfXywgTlVMTCwgTlVMTH0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKW1ldGhfZ2V0X19xdWFsbmFtZV9fLCBOVUxMLCBOVUxMfSwKICAgICB7Il9fc2VsZl9fIiwgKGdldHRlciltZXRoX2dldF9fc2VsZl9fLCBOVUxMLCBOVUxMfSwKICAgICB7MH0KIH07CkBAIC0yMDgsOCArMjQ0LDcgQEAKICAgICAgICAgIVB5Q0Z1bmN0aW9uX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeUNGdW5jdGlvbl9DaGVjayhvdGhlcikpCiAgICAgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYSA9IChQeUNGdW5jdGlvbk9iamVjdCAqKXNlbGY7CiAgICAgYiA9IChQeUNGdW5jdGlvbk9iamVjdCAqKW90aGVyOwpAQCAtMzAzLDYgKzMzOCwxNSBAQAogICAgICh2b2lkKVB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5Q0Z1bmN0aW9uX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlDRnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZnJlZSwgc2l6ZW9mKFB5Q0Z1bmN0aW9uKSk7Cit9CisKIC8qIFB5Q0Z1bmN0aW9uX05ldygpIGlzIG5vdyBqdXN0IGEgbWFjcm8gdGhhdCBjYWxscyBQeUNGdW5jdGlvbl9OZXdFeCgpLAogICAgYnV0IGl0J3MgcGFydCBvZiB0aGUgQVBJIHNvIHdlIG5lZWQgdG8ga2VlcCBhIGZ1bmN0aW9uIGFyb3VuZCB0aGF0CiAgICBleGlzdGluZyBDIGV4dGVuc2lvbnMgY2FuIGNhbGwuCmRpZmYgLS1naXQgYS9PYmplY3RzL21vZHVsZW9iamVjdC5jIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwppbmRleCA1MzNkYjQ2Li4yZjJiZDM2IDEwMDY0NAotLS0gYS9PYmplY3RzL21vZHVsZW9iamVjdC5jCisrKyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKQEAgLTI3LDM2ICsyNyw0NSBAQAogCiAKIFB5T2JqZWN0ICoKLVB5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQorUHlNb2R1bGVfTmV3T2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5TW9kdWxlT2JqZWN0ICptOwotICAgIFB5T2JqZWN0ICpuYW1lb2JqOwogICAgIG0gPSBQeU9iamVjdF9HQ19OZXcoUHlNb2R1bGVPYmplY3QsICZQeU1vZHVsZV9UeXBlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtLT5tZF9kZWYgPSBOVUxMOwogICAgIG0tPm1kX3N0YXRlID0gTlVMTDsKLSAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CiAgICAgbS0+bWRfZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAobS0+bWRfZGljdCA9PSBOVUxMIHx8IG5hbWVvYmogPT0gTlVMTCkKKyAgICBpZiAobS0+bWRfZGljdCA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX25hbWVfXyIsIG5hbWVvYmopICE9IDApCisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX25hbWVfXyIsIG5hbWUpICE9IDApCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fZG9jX18iLCBQeV9Ob25lKSAhPSAwKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX3BhY2thZ2VfXyIsIFB5X05vbmUpICE9IDApCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICBQeV9ERUNSRUYobmFtZW9iaik7CiAgICAgUHlPYmplY3RfR0NfVHJhY2sobSk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW07CiAKICBmYWlsOgotICAgIFB5X1hERUNSRUYobmFtZW9iaik7CiAgICAgUHlfREVDUkVGKG0pOwogICAgIHJldHVybiBOVUxMOwogfQogCiBQeU9iamVjdCAqCitQeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKm1vZHVsZTsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbW9kdWxlID0gUHlNb2R1bGVfTmV3T2JqZWN0KG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gbW9kdWxlOworfQorCisKK1B5T2JqZWN0ICoKIFB5TW9kdWxlX0NyZWF0ZTIoc3RydWN0IFB5TW9kdWxlRGVmKiBtb2R1bGUsIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pCiB7CiAgICAgUHlPYmplY3QgKmQsICp2LCAqbjsKQEAgLTE3NSwyNCArMTg0LDM1IEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLWNvbnN0IGNoYXIgKgotUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbSkKK1B5T2JqZWN0KgorUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqbSkKIHsKICAgICBQeU9iamVjdCAqZDsKLSAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpZiAoIVB5TW9kdWxlX0NoZWNrKG0pKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBkID0gKChQeU1vZHVsZU9iamVjdCAqKW0pLT5tZF9kaWN0OwogICAgIGlmIChkID09IE5VTEwgfHwKLSAgICAgICAgKG5hbWVvYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19uYW1lX18iKSkgPT0gTlVMTCB8fAotICAgICAgICAhUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQorICAgICAgICAobmFtZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX25hbWVfXyIpKSA9PSBOVUxMIHx8CisgICAgICAgICFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpCiAgICAgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJuYW1lbGVzcyBtb2R1bGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOworICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworY29uc3QgY2hhciAqCitQeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICptKQoreworICAgIFB5T2JqZWN0ICpuYW1lID0gUHlNb2R1bGVfR2V0TmFtZU9iamVjdChtKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9ERUNSRUYobmFtZSk7ICAgLyogbW9kdWxlIGRpY3QgaGFzIHN0aWxsIGEgcmVmZXJlbmNlICovCisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CiB9CiAKIFB5T2JqZWN0KgpAQCAtMjI1LDcgKzI0NSw3IEBACiAgICAgaWYgKGZpbGVvYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdXRmOCA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZmlsZW9iaik7Ci0gICAgUHlfREVDUkVGKGZpbGVvYmopOworICAgIFB5X0RFQ1JFRihmaWxlb2JqKTsgICAvKiBtb2R1bGUgZGljdCBoYXMgc3RpbGwgYSByZWZlcmVuY2UgKi8KICAgICByZXR1cm4gdXRmODsKIH0KIApAQCAtMjcxLDggKzI5MSw4IEBACiAgICAgcG9zID0gMDsKICAgICB3aGlsZSAoUHlEaWN0X05leHQoZCwgJnBvcywgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiBQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGtleSk7Ci0gICAgICAgICAgICBpZiAodVswXSA9PSAnXycgJiYgdVsxXSAhPSAnXycpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKGtleSwgMCkgPT0gJ18nICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDEpICE9ICdfJykgewogICAgICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHMgIT0gTlVMTCkKQEAgLTI4OSw5ICszMDksOCBAQAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGQsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpOwotICAgICAgICAgICAgaWYgKHVbMF0gIT0gJ18nCi0gICAgICAgICAgICAgICAgfHwgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAiX19idWlsdGluc19fIikgIT0gMCkKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKGtleSwgMCkgIT0gJ18nIHx8CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAiX19idWlsdGluc19fIikgIT0gMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CkBAIC0zNTMsMjEgKzM3Miw1NCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1vZHVsZV9yZXByKFB5TW9kdWxlT2JqZWN0ICptKQogewotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lLCAqcmVwcjsKKyAgICBQeU9iamVjdCAqbmFtZSwgKmZpbGVuYW1lLCAqcmVwciwgKmxvYWRlciA9IE5VTEw7CiAKLSAgICBuYW1lID0gUHlNb2R1bGVfR2V0TmFtZSgoUHlPYmplY3QgKiltKTsKKyAgICAvKiBTZWUgaWYgdGhlIG1vZHVsZSBoYXMgYW4gX19sb2FkZXJfXy4gIElmIGl0IGRvZXMsIGdpdmUgdGhlIGxvYWRlciB0aGUKKyAgICAgKiBmaXJzdCBzaG90IGF0IHByb2R1Y2luZyBhIHJlcHIgZm9yIHRoZSBtb2R1bGUuCisgICAgICovCisgICAgaWYgKG0tPm1kX2RpY3QgIT0gTlVMTCkgeworICAgICAgICBsb2FkZXIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19sb2FkZXJfXyIpOworICAgIH0KKyAgICBpZiAobG9hZGVyICE9IE5VTEwpIHsKKyAgICAgICAgcmVwciA9IFB5T2JqZWN0X0NhbGxNZXRob2QobG9hZGVyLCAibW9kdWxlX3JlcHIiLCAiKE8pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopbSwgTlVMTCk7CisgICAgICAgIGlmIChyZXByID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcmVwcjsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBfX2xvYWRlcl9fLm1vZHVsZV9yZXByKG0pIGRpZCBub3QgcHJvdmlkZSB1cyB3aXRoIGEgcmVwci4gIE5leHQsIHNlZSBpZgorICAgICAqIHRoZSBtb2R1bGUgaGFzIGFuIF9fZmlsZV9fLiAgSWYgaXQgZG9lc24ndCB0aGVuIHVzZSByZXByKF9fbG9hZGVyX18pIGlmCisgICAgICogaXQgZXhpc3RzLCBvdGhlcndpc2UsIGp1c3QgdXNlIG1vZHVsZS5fX25hbWVfXy4KKyAgICAgKi8KKyAgICBuYW1lID0gUHlNb2R1bGVfR2V0TmFtZU9iamVjdCgoUHlPYmplY3QgKiltKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIG5hbWUgPSAiPyI7CisgICAgICAgIG5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoIj8iLCAxKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBmaWxlbmFtZSA9IFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KChQeU9iamVjdCAqKW0pOwogICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAnJXMnIChidWlsdC1pbik+IiwgbmFtZSk7CisgICAgICAgIC8qIFRoZXJlJ3Mgbm8gbS5fX2ZpbGVfXywgc28gaWYgdGhlcmUgd2FzIGFuIF9fbG9hZGVyX18sIHVzZSB0aGF0IGluCisgICAgICAgICAqIHRoZSByZXByLCBvdGhlcndpc2UsIHRoZSBvbmx5IHRoaW5nIHlvdSBjYW4gdXNlIGlzIG0uX19uYW1lX18KKyAgICAgICAgICovCisgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICVSPiIsIG5hbWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICVSICglUik+IiwgbmFtZSwgbG9hZGVyKTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJyVzJyBmcm9tICclVSc+IiwgbmFtZSwgZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgLyogRmluYWxseSwgdXNlIG0uX19maWxlX18gKi8KKyAgICBlbHNlIHsKKyAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICVSIGZyb20gJVI+IiwgbmFtZSwgZmlsZW5hbWUpOworICAgICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIH0KKyAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTM5NSw2ICs0NDcsMzUgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21vZHVsZV9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOworCisgICAgaWYgKGRpY3QgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlEaWN0X0NoZWNrKGRpY3QpKQorICAgICAgICAgICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUoc2VsZik7CisgICAgICAgICAgICBpZiAobmFtZSkKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzLl9fZGljdF9fIGlzIG5vdCBhIGRpY3Rpb25hcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CisgICAgeyJfX2Rpcl9fIiwgbW9kdWxlX2RpciwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiX19kaXJfXygpIC0+IGxpc3RcbnNwZWNpYWxpemVkIGRpcigpIGltcGxlbWVudGF0aW9uIil9LAorICAgIHswfQorfTsKKwogCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJtb2R1bGUobmFtZVssIGRvY10pXG5cCkBAIC00MzEsNyArNTEyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1vZHVsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIG1vZHVsZV9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCmRpZmYgLS1naXQgYS9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jIGIvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjI3OGQzCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYwpAQCAtMCwwICsxLDIyNSBAQAorLyogbmFtZXNwYWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqbnNfZGljdDsKK30gX1B5TmFtZXNwYWNlT2JqZWN0OworCisKK3N0YXRpYyBQeU1lbWJlckRlZiBuYW1lc3BhY2VfbWVtYmVyc1tdID0geworICAgIHsiX19kaWN0X18iLCBUX09CSkVDVCwgb2Zmc2V0b2YoX1B5TmFtZXNwYWNlT2JqZWN0LCBuc19kaWN0KSwgUkVBRE9OTFl9LAorICAgIHtOVUxMfQorfTsKKworCisvKiBNZXRob2RzICovCisKK3N0YXRpYyBQeU9iamVjdCAqCituYW1lc3BhY2VfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpzZWxmOworCisgICAgYXNzZXJ0KHR5cGUgIT0gTlVMTCAmJiB0eXBlLT50cF9hbGxvYyAhPSBOVUxMKTsKKyAgICBzZWxmID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYgIT0gTlVMTCkgeworICAgICAgICBfUHlOYW1lc3BhY2VPYmplY3QgKm5zID0gKF9QeU5hbWVzcGFjZU9iamVjdCAqKXNlbGY7CisgICAgICAgIG5zLT5uc19kaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAobnMtPm5zX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5zKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCisKK3N0YXRpYyBpbnQKK25hbWVzcGFjZV9pbml0KF9QeU5hbWVzcGFjZU9iamVjdCAqbnMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICAvKiBpZ25vcmUgYXJncyBpZiBpdCdzIE5VTEwgb3IgZW1wdHkgKi8KKyAgICBpZiAoYXJncyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgYXJnY291bnQgPSBQeU9iamVjdF9TaXplKGFyZ3MpOworICAgICAgICBpZiAoYXJnY291bnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGFyZ2NvdW50OworICAgICAgICBlbHNlIGlmIChhcmdjb3VudCA+IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJubyBwb3NpdGlvbmFsIGFyZ3VtZW50cyBleHBlY3RlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmIChrd2RzID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBQeURpY3RfVXBkYXRlKG5zLT5uc19kaWN0LCBrd2RzKTsKK30KKworCitzdGF0aWMgdm9pZAorbmFtZXNwYWNlX2RlYWxsb2MoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKG5zKTsKKyAgICBQeV9DTEVBUihucy0+bnNfZGljdCk7CisgICAgUHlfVFlQRShucyktPnRwX2ZyZWUoKFB5T2JqZWN0ICopbnMpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituYW1lc3BhY2VfcmVwcihfUHlOYW1lc3BhY2VPYmplY3QgKm5zKQoreworICAgIGludCBpLCBsb29wX2Vycm9yID0gMDsKKyAgICBQeU9iamVjdCAqcGFpcnMgPSBOVUxMLCAqZCA9IE5VTEwsICprZXlzID0gTlVMTCwgKmtleXNfaXRlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqc2VwYXJhdG9yLCAqcGFpcnNyZXByLCAqcmVwciA9IE5VTEw7CisKKyAgICBpID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKW5zKTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgIHJldHVybiBpID4gMCA/IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJuYW1lc3BhY2UoLi4uKSIpIDogTlVMTDsKKyAgICB9CisKKyAgICBwYWlycyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKHBhaXJzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBkID0gKChfUHlOYW1lc3BhY2VPYmplY3QgKilucyktPm5zX2RpY3Q7CisgICAgYXNzZXJ0KGQgIT0gTlVMTCk7CisgICAgUHlfSU5DUkVGKGQpOworCisgICAga2V5cyA9IFB5RGljdF9LZXlzKGQpOworICAgIGlmIChrZXlzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5TGlzdF9Tb3J0KGtleXMpICE9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBrZXlzX2l0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGtleXMpOworICAgIGlmIChrZXlzX2l0ZXIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoa2V5c19pdGVyKSkgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlVbmljb2RlX0dFVF9TSVpFKGtleSkgPiAwKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUsICppdGVtOworCisgICAgICAgICAgICB2YWx1ZSA9IFB5RGljdF9HZXRJdGVtKGQsIGtleSk7CisgICAgICAgICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CisKKyAgICAgICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVM9JVIiLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBsb29wX2Vycm9yID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxvb3BfZXJyb3IgPSBQeUxpc3RfQXBwZW5kKHBhaXJzLCBpdGVtKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKGxvb3BfZXJyb3IpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHNlcGFyYXRvciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIsICIpOworICAgIGlmIChzZXBhcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHBhaXJzcmVwciA9IFB5VW5pY29kZV9Kb2luKHNlcGFyYXRvciwgcGFpcnMpOworICAgIFB5X0RFQ1JFRihzZXBhcmF0b3IpOworICAgIGlmIChwYWlyc3JlcHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeU9iamVjdCAqKW5zKS0+b2JfdHlwZS0+dHBfbmFtZSwgcGFpcnNyZXByKTsKKyAgICBQeV9ERUNSRUYocGFpcnNyZXByKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihwYWlycyk7CisgICAgUHlfWERFQ1JFRihkKTsKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIFB5X1hERUNSRUYoa2V5c19pdGVyKTsKKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbnMpOworCisgICAgcmV0dXJuIHJlcHI7Cit9CisKKworc3RhdGljIGludAorbmFtZXNwYWNlX3RyYXZlcnNlKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG5zLT5uc19kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50CituYW1lc3BhY2VfY2xlYXIoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBQeV9DTEVBUihucy0+bnNfZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworUHlEb2NfU1RSVkFSKG5hbWVzcGFjZV9kb2MsCisiQSBzaW1wbGUgYXR0cmlidXRlLWJhc2VkIG5hbWVzcGFjZS5cblwKK1xuXAorbmFtZXNwYWNlKCoqa3dhcmdzKSIpOworCitQeVR5cGVPYmplY3QgX1B5TmFtZXNwYWNlX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAibmFtZXNwYWNlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoX1B5TmFtZXNwYWNlT2JqZWN0KSwgICAgICAgICAgICAgICAgIC8qIHRwX3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpbmFtZXNwYWNlX2RlYWxsb2MsICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpbmFtZXNwYWNlX3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAorICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBuYW1lc3BhY2VfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpbmFtZXNwYWNlX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSluYW1lc3BhY2VfY2xlYXIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbmFtZXNwYWNlX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YoX1B5TmFtZXNwYWNlT2JqZWN0LCBuc19kaWN0KSwgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKW5hbWVzcGFjZV9pbml0LCAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIChuZXdmdW5jKW5hbWVzcGFjZV9uZXcsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKK1B5T2JqZWN0ICoKK19QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm5zID0gbmFtZXNwYWNlX25ldygmX1B5TmFtZXNwYWNlX1R5cGUsIE5VTEwsIE5VTEwpOworICAgIGlmIChucyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChrd2RzID09IE5VTEwpCisgICAgICAgIHJldHVybiBuczsKKyAgICBpZiAoUHlEaWN0X1VwZGF0ZSgoKF9QeU5hbWVzcGFjZU9iamVjdCAqKW5zKS0+bnNfZGljdCwga3dkcykgIT0gMCkgeworICAgICAgICBQeV9ERUNSRUYobnMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbnM7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCA0NzMwYTY2Li5mNDE3MTg0IDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTEsNSArMSw1IEBACiAKLS8qIEdlbmVyaWMgb2JqZWN0IG9wZXJhdGlvbnM7IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBOb25lIChOb09iamVjdCkgKi8KKy8qIEdlbmVyaWMgb2JqZWN0IG9wZXJhdGlvbnM7IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBOb25lICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgpAQCAtMjksOCArMjksNiBAQAogfQogI2VuZGlmIC8qIFB5X1JFRl9ERUJVRyAqLwogCi1pbnQgUHlfRGl2aXNpb25XYXJuaW5nRmxhZzsKLQogLyogT2JqZWN0IGFsbG9jYXRpb24gcm91dGluZXMgdXNlZCBieSBORVdPQkogYW5kIE5FV1ZBUk9CSiBtYWNyb3MuCiAgICBUaGVzZSBhcmUgdXNlZCBieSB0aGUgaW5kaXZpZHVhbCByb3V0aW5lcyBmb3Igb2JqZWN0IGNyZWF0aW9uLgogICAgRG8gbm90IGNhbGwgdGhlbSBvdGhlcndpc2UsIHRoZXkgZG8gbm90IGluaXRpYWxpemUgdGhlIG9iamVjdCEgKi8KQEAgLTI5Nyw5ICsyOTUsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHMpKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnQ7Ci0gICAgICAgICAgICAgICAgdCA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUocyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIik7CisgICAgICAgICAgICAgICAgdCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcocywgInV0Zi04IiwgImJhY2tzbGFzaHJlcGxhY2UiKTsKICAgICAgICAgICAgICAgICBpZiAodCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXQgPSAwOwogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMzgyLDEzICszNzgsMTkgQEAKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgb2JqZWN0IGF0ICVwPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lLCB2KTsKICAgICByZXMgPSAoKnYtPm9iX3R5cGUtPnRwX3JlcHIpKHYpOwotICAgIGlmIChyZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKHJlcykpIHsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHJlcykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJfX3JlcHJfXyByZXR1cm5lZCBub24tc3RyaW5nICh0eXBlICUuMjAwcykiLAogICAgICAgICAgICAgICAgICAgICAgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZm5kZWYgUHlfREVCVUcKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTQwNyw2ICs0MDksMTAgQEAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxOVUxMPiIpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSkgeworI2lmbmRlZiBQeV9ERUJVRworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCiAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQpAQCAtNDI4LDYgKzQzNCwxMSBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2lmbmRlZiBQeV9ERUJVRworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC00NDEsMTEgKzQ1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogcmVwciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgUHlVbmljb2RlIG9iamVjdCBieSBQeU9iamVjdF9SZXByICovCi0gICAgYXNjaWkgPSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpLAotICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUocmVwciksCi0gICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIik7Ci0KKyAgICBhc2NpaSA9IF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhyZXByLCAiYmFja3NsYXNocmVwbGFjZSIpOwogICAgIFB5X0RFQ1JFRihyZXByKTsKICAgICBpZiAoYXNjaWkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NjMsNyArNDcwLDcgQEAKIFB5T2JqZWN0X0J5dGVzKFB5T2JqZWN0ICp2KQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpmdW5jOwotICAgIHN0YXRpYyBQeU9iamVjdCAqYnl0ZXNzdHJpbmcgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fYnl0ZXNfXyk7CiAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKCI8TlVMTD4iKTsKQEAgLTQ3Myw3ICs0ODAsNyBAQAogICAgICAgICByZXR1cm4gdjsKICAgICB9CiAKLSAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwodiwgIl9fYnl0ZXNfXyIsICZieXRlc3N0cmluZyk7CisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICZQeUlkX19fYnl0ZXNfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CkBAIC03NDcsNiArNzU0LDMzIEBACiB9CiAKIFB5X2hhc2hfdAorX1B5X0hhc2hCeXRlcyh1bnNpZ25lZCBjaGFyICpwLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBQeV91aGFzaF90IHg7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgLyoKKyAgICAgIFdlIG1ha2UgdGhlIGhhc2ggb2YgdGhlIGVtcHR5IHN0cmluZyBiZSAwLCByYXRoZXIgdGhhbiB1c2luZworICAgICAgKHByZWZpeCBeIHN1ZmZpeCksIHNpbmNlIHRoaXMgc2xpZ2h0bHkgb2JmdXNjYXRlcyB0aGUgaGFzaCBzZWNyZXQKKyAgICAqLworI2lmZGVmIFB5X0RFQlVHCisgICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKKyNlbmRpZgorICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgeCA9IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7CisgICAgeCBePSAoUHlfdWhhc2hfdCkgKnAgPDwgNzsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSICogeCkgXiAoUHlfdWhhc2hfdCkgKnArKzsKKyAgICB4IF49IChQeV91aGFzaF90KSBsZW47CisgICAgeCBePSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQuc3VmZml4OworICAgIGlmICh4ID09IC0xKQorICAgICAgICB4ID0gLTI7CisgICAgcmV0dXJuIHg7Cit9CisKK1B5X2hhc2hfdAogUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkKFB5T2JqZWN0ICp2KQogewogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJ1bmhhc2hhYmxlIHR5cGU6ICclLjIwMHMnIiwKQEAgLTc4OCw3ICs4MjIsNyBAQAogICAgIGlmICh3ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IFB5T2JqZWN0X0dldEF0dHIodiwgdyk7Ci0gICAgUHlfWERFQ1JFRih3KTsKKyAgICBQeV9ERUNSRUYodyk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtODIwLDYgKzg1NCw2MiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK2ludAorX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKm9iaikKK3sKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0KiBpc2Fic3RyYWN0OworICAgIF9QeV9JREVOVElGSUVSKF9faXNhYnN0cmFjdG1ldGhvZF9fKTsKKworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpc2Fic3RyYWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19faXNhYnN0cmFjdG1ldGhvZF9fKTsKKyAgICBpZiAoaXNhYnN0cmFjdCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzID0gUHlPYmplY3RfSXNUcnVlKGlzYWJzdHJhY3QpOworICAgIFB5X0RFQ1JFRihpc2Fic3RyYWN0KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfR2V0QXR0cklkKFB5T2JqZWN0ICp2LCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpvbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKG5hbWUpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmICghb25hbWUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEF0dHIodiwgb25hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqdiwgX1B5X0lkZW50aWZpZXIgKm5hbWUpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfSGFzQXR0cih2LCBvbmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfUHlPYmplY3RfU2V0QXR0cklkKFB5T2JqZWN0ICp2LCBfUHlfSWRlbnRpZmllciAqbmFtZSwgUHlPYmplY3QgKncpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfU2V0QXR0cih2LCBvbmFtZSwgdyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUHlPYmplY3QgKgogUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqdiwgUHlPYmplY3QgKm5hbWUpCiB7CkBAIC05MzgsNiArMTAyOCwxOSBAQAogICAgIHJldHVybiBvYmo7CiB9CiAKKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBhIGJ1aWx0aW4gZnJvbSBpdHMgbmFtZSAqLworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dldEJ1aWx0aW4oY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbW9kLCAqYXR0cjsKKyAgICBtb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CisgICAgaWYgKG1vZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhdHRyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsIG5hbWUpOworICAgIFB5X0RFQ1JFRihtb2QpOworICAgIHJldHVybiBhdHRyOworfQorCiAvKiBIZWxwZXIgdXNlZCB3aGVuIHRoZSBfX25leHRfXyBtZXRob2QgaXMgcmVtb3ZlZCBmcm9tIGEgdHlwZToKICAgIHRwX2l0ZXJuZXh0IGlzIG5ldmVyIE5VTEwgYW5kIGNhbiBiZSBzYWZlbHkgY2FsbGVkIHdpdGhvdXQgY2hlY2tpbmcKICAgIG9uIGV2ZXJ5IGl0ZXJhdGlvbi4KQEAgLTk4Niw3ICsxMDg5LDYgQEAKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9nZXQ7CiAgICAgICAgIGlmIChmICE9IE5VTEwgJiYgUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKSB7CiAgICAgICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKW9iai0+b2JfdHlwZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZGVzY3IpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAgICAgfQpAQCAtMTAxNyw3ICsxMTE5LDYgQEAKICAgICAgICAgcmVzID0gUHlEaWN0X0dldEl0ZW0oZGljdCwgbmFtZSk7CiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQpAQCAtMTAyNiwxMyArMTEyNywxMiBAQAogCiAgICAgaWYgKGYgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKVB5X1RZUEUob2JqKSk7Ci0gICAgICAgIFB5X0RFQ1JFRihkZXNjcik7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBkZXNjcjsKLSAgICAgICAgLyogZGVzY3Igd2FzIGFscmVhZHkgaW5jcmVmZWQgYWJvdmUgKi8KKyAgICAgICAgZGVzY3IgPSBOVUxMOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCkBAIC0xMDQwLDYgKzExNDAsNyBAQAogICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwKICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgorICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTA2NiwxNSArMTE2NywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgbmFtZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYobmFtZSk7CiAKLSAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHRwKSA8IDApCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQorICAgIGlmICh0cC0+dHBfZGljdCA9PSBOVUxMICYmIFB5VHlwZV9SZWFkeSh0cCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHRwLCBuYW1lKTsKKyAgICBQeV9YSU5DUkVGKGRlc2NyKTsKKwogICAgIGYgPSBOVUxMOwogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3Jfc2V0OwpAQCAtMTA4NywxMyArMTE4OCwxMCBAQAogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CiAgICAgICAgIGlmIChkaWN0cHRyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwgJiYgdmFsdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgICpkaWN0cHRyID0gZGljdDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbShQeV9UWVBFKG9iaiksIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRpY3QgIT0gTlVMTCkgewpAQCAtMTEwMiw5ICsxMjAwLDkgQEAKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9EZWxJdGVtKGRpY3QsIG5hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKQEAgLTExMjQsNiArMTIyMiw3IEBACiAgICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkiLAogICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CiAgIGRvbmU6CisgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC0xMTM0LDYgKzEyMzMsMzIgQEAKICAgICByZXR1cm4gX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3Qob2JqLCBuYW1lLCB2YWx1ZSwgTlVMTCk7CiB9CiAKK2ludAorUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIF9fZGljdF9fIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19kaWN0X18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0aW9uYXJ5LCAiCisgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZGljdCA9ICpkaWN0cHRyOworICAgIFB5X1hJTkNSRUYodmFsdWUpOworICAgICpkaWN0cHRyID0gdmFsdWU7CisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKwogCiAvKiBUZXN0IGEgdmFsdWUgdXNlZCBhcyBjb25kaXRpb24sIGUuZy4sIGluIGEgZm9yIG9yIGlmIHN0YXRlbWVudC4KICAgIFJldHVybiAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAqLwpAQCAtMTE4Niw2NiArMTMxMSw2IEBACiAgICAgcmV0dXJuIHgtPm9iX3R5cGUtPnRwX2NhbGwgIT0gTlVMTDsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQeU9iamVjdF9EaXIoKSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIuCi0gICBNZXJnZSB0aGUgX19kaWN0X18gb2YgYWNsYXNzIGludG8gZGljdCwgYW5kIHJlY3Vyc2l2ZWx5IGFsc28gYWxsCi0gICB0aGUgX19kaWN0X19zIG9mIGFjbGFzcydzIGJhc2UgY2xhc3Nlcy4gIFRoZSBvcmRlciBvZiBtZXJnaW5nIGlzbid0Ci0gICBkZWZpbmVkLCBhcyBpdCdzIGV4cGVjdGVkIHRoYXQgb25seSB0aGUgZmluYWwgc2V0IG9mIGRpY3Qga2V5cyBpcwotICAgaW50ZXJlc3RpbmcuCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4KLSovCi0KLXN0YXRpYyBpbnQKLW1lcmdlX2NsYXNzX2RpY3QoUHlPYmplY3QqIGRpY3QsIFB5T2JqZWN0KiBhY2xhc3MpCi17Ci0gICAgUHlPYmplY3QgKmNsYXNzZGljdDsKLSAgICBQeU9iamVjdCAqYmFzZXM7Ci0KLSAgICBhc3NlcnQoUHlEaWN0X0NoZWNrKGRpY3QpKTsKLSAgICBhc3NlcnQoYWNsYXNzKTsKLQotICAgIC8qIE1lcmdlIGluIHRoZSB0eXBlJ3MgZGljdCAoaWYgYW55KS4gKi8KLSAgICBjbGFzc2RpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGFjbGFzcywgIl9fZGljdF9fIik7Ci0gICAgaWYgKGNsYXNzZGljdCA9PSBOVUxMKQotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UgewotICAgICAgICBpbnQgc3RhdHVzID0gUHlEaWN0X1VwZGF0ZShkaWN0LCBjbGFzc2RpY3QpOwotICAgICAgICBQeV9ERUNSRUYoY2xhc3NkaWN0KTsKLSAgICAgICAgaWYgKHN0YXR1cyA8IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgLyogUmVjdXJzaXZlbHkgbWVyZ2UgaW4gdGhlIGJhc2UgdHlwZXMnIChpZiBhbnkpIGRpY3RzLiAqLwotICAgIGJhc2VzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhhY2xhc3MsICJfX2Jhc2VzX18iKTsKLSAgICBpZiAoYmFzZXMgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLyogV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCBiYXNlcyBpcyBhIHJlYWwgdHVwbGUgKi8KLSAgICAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgICAgICBuID0gUHlTZXF1ZW5jZV9TaXplKGJhc2VzKTsgLyogVGhpcyBiZXR0ZXIgYmUgcmlnaHQgKi8KLSAgICAgICAgaWYgKG4gPCAwKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXR1czsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYmFzZSA9IFB5U2VxdWVuY2VfR2V0SXRlbShiYXNlcywgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXR1cyA9IG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19CiAKIC8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIHdpdGhvdXQgYXJndW1lbnRzOiByZXR1cm5zIHRoZSBsb2NhbCBzY29wZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjY5LDE0MCArMTMzNCw0MyBAQAogICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5TGlzdF9Tb3J0KG5hbWVzKSkgeworICAgICAgICBQeV9ERUNSRUYobmFtZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgLyogdGhlIGxvY2FscyBkb24ndCBuZWVkIHRvIGJlIERFQ1JFRidkICovCiAgICAgcmV0dXJuIG5hbWVzOwogfQogCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciBvZiB0eXBlIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18gYW5kIF9fYmFzZXNfXy4KLSAgIFdlIGRlbGliZXJhdGVseSBkb24ndCBzdWNrIHVwIGl0cyBfX2NsYXNzX18sIGFzIG1ldGhvZHMgYmVsb25naW5nIHRvIHRoZQotICAgbWV0YWNsYXNzIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgY29uZnVzaW5nIHRoYW4gaGVscGZ1bC4KLSovCi1zdGF0aWMgUHlPYmplY3QgKgotX3NwZWNpYWxpemVkX2Rpcl90eXBlKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeURpY3RfTmV3KCk7Ci0KLSAgICBpZiAoZGljdCAhPSBOVUxMICYmIG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgb2JqKSA9PSAwKQotICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLQotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIgb2YgbW9kdWxlIG9iamVjdHM6IHJldHVybnMgdGhlIG1vZHVsZSdzIF9fZGljdF9fLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLV9zcGVjaWFsaXplZF9kaXJfbW9kdWxlKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0KLSAgICBpZiAoZGljdCAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2soZGljdCkpCi0gICAgICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShvYmopOwotICAgICAgICAgICAgaWYgKG5hbWUpCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIG9mIGdlbmVyaWMgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXywgX19jbGFzc19fLAotICAgYW5kIHJlY3Vyc2l2ZWx5IHVwIHRoZSBfX2NsYXNzX18uX19iYXNlc19fIGNoYWluLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1fZ2VuZXJpY19kaXIoUHlPYmplY3QgKm9iaikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0c2NsYXNzID0gTlVMTDsKLQotICAgIC8qIEdldCBfX2RpY3RfXyAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgYSByZWFsIGRpY3QuLi4pICovCi0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19kaWN0X18iKTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKCFQeURpY3RfQ2hlY2soZGljdCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ29weSBfX2RpY3RfXyB0byBhdm9pZCBtdXRhdGluZyBpdC4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeURpY3RfQ29weShkaWN0KTsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBkaWN0ID0gdGVtcDsKLSAgICB9Ci0KLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgLyogTWVyZ2UgaW4gYXR0cnMgcmVhY2hhYmxlIGZyb20gaXRzIGNsYXNzLiAqLwotICAgIGl0c2NsYXNzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2NsYXNzX18iKTsKLSAgICBpZiAoaXRzY2xhc3MgPT0gTlVMTCkKLSAgICAgICAgLyogWFhYKHRvbWVyKTogUGVyaGFwcyBmYWxsIGJhY2sgdG8gb2JqLT5vYl90eXBlIGlmIG5vCi0gICAgICAgICAgICAgICAgICAgICAgIF9fY2xhc3NfXyBleGlzdHM/ICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGl0c2NsYXNzKSAhPSAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLSAgICAvKiBmYWxsIHRocm91Z2ggKi8KLWVycm9yOgotICAgIFB5X1hERUNSRUYoaXRzY2xhc3MpOwotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXI6IG9iamVjdCBpbnRyb3NwZWN0aW9uLgotICAgVGhpcyBjYWxscyBvbmUgb2YgdGhlIGFib3ZlIHNwZWNpYWxpemVkIHZlcnNpb25zIGlmIG5vIF9fZGlyX18gbWV0aG9kCi0gICBleGlzdHMuICovCisvKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0Rpcjogb2JqZWN0IGludHJvc3BlY3Rpb24uICovCiBzdGF0aWMgUHlPYmplY3QgKgogX2Rpcl9vYmplY3QoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRpcl9zdHIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaXJmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAiX19kaXJfXyIsICZkaXJfc3RyKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqc29ydGVkOworICAgIF9QeV9JREVOVElGSUVSKF9fZGlyX18pOworICAgIFB5T2JqZWN0ICpkaXJmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAmUHlJZF9fX2Rpcl9fKTsKIAogICAgIGFzc2VydChvYmopOwogICAgIGlmIChkaXJmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogdXNlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gKi8KLSAgICAgICAgaWYgKFB5TW9kdWxlX0NoZWNrKG9iaikpCi0gICAgICAgICAgICByZXN1bHQgPSBfc3BlY2lhbGl6ZWRfZGlyX21vZHVsZShvYmopOwotICAgICAgICBlbHNlIGlmIChQeVR5cGVfQ2hlY2sob2JqKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IF9zcGVjaWFsaXplZF9kaXJfdHlwZShvYmopOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBfZ2VuZXJpY19kaXIob2JqKTsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm9iamVjdCBkb2VzIG5vdCBwcm92aWRlIF9fZGlyX18iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiB1c2UgX19kaXJfXyAqLwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGRpcmZ1bmMsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoZGlyZnVuYyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIC8qIHJlc3VsdCBtdXN0IGJlIGEgbGlzdCAqLwotICAgICAgICAvKiBYWFgoZ2JyYW5kbCk6IGNvdWxkIGFsc28gY2hlY2sgaWYgYWxsIGl0ZW1zIGFyZSBzdHJpbmdzICovCi0gICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHJlc3VsdCkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIl9fZGlyX18oKSBtdXN0IHJldHVybiBhIGxpc3QsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzdWx0KS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgICAgIH0KKyAgICAvKiB1c2UgX19kaXJfXyAqLworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZGlyZnVuYywgTlVMTCk7CisgICAgUHlfREVDUkVGKGRpcmZ1bmMpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogcmV0dXJuIHNvcnRlZChyZXN1bHQpICovCisgICAgc29ydGVkID0gUHlTZXF1ZW5jZV9MaXN0KHJlc3VsdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgaWYgKHNvcnRlZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlMaXN0X1NvcnQoc29ydGVkKSkgeworICAgICAgICBQeV9ERUNSRUYoc29ydGVkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc29ydGVkOwogfQogCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiBkaXIoKSAtLSBpZiBvYmogaXMgTlVMTCwgcmV0dXJucyB0aGUgbmFtZXMgaW4gdGhlIGN1cnJlbnQKQEAgLTE0MTIsMzEgKzEzODAsMTMgQEAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0RpcihQeU9iamVjdCAqb2JqKQogewotICAgIFB5T2JqZWN0ICogcmVzdWx0OwotCi0gICAgaWYgKG9iaiA9PSBOVUxMKQotICAgICAgICAvKiBubyBvYmplY3QgLS0gaW50cm9zcGVjdCB0aGUgbG9jYWxzICovCi0gICAgICAgIHJlc3VsdCA9IF9kaXJfbG9jYWxzKCk7Ci0gICAgZWxzZQotICAgICAgICAvKiBvYmplY3QgLS0gaW50cm9zcGVjdCB0aGUgb2JqZWN0ICovCi0gICAgICAgIHJlc3VsdCA9IF9kaXJfb2JqZWN0KG9iaik7Ci0KLSAgICBhc3NlcnQocmVzdWx0ID09IE5VTEwgfHwgUHlMaXN0X0NoZWNrKHJlc3VsdCkpOwotCi0gICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIFB5TGlzdF9Tb3J0KHJlc3VsdCkgIT0gMCkgewotICAgICAgICAvKiBzb3J0aW5nIHRoZSBsaXN0IGZhaWxlZCAqLwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAob2JqID09IE5VTEwpID8gX2Rpcl9sb2NhbHMoKSA6IF9kaXJfb2JqZWN0KG9iaik7CiB9CiAKIC8qCi1Ob09iamVjdCBpcyB1c2FibGUgYXMgYSBub24tTlVMTCB1bmRlZmluZWQgdmFsdWUsIHVzZWQgYnkgdGhlIG1hY3JvIE5vbmUuCitOb25lIGlzIGEgbm9uLU5VTEwgdW5kZWZpbmVkIHZhbHVlLgogVGhlcmUgaXMgKGFuZCBzaG91bGQgYmUhKSBubyB3YXkgdG8gY3JlYXRlIG90aGVyIG9iamVjdHMgb2YgdGhpcyB0eXBlLAogc28gdGhlcmUgaXMgZXhhY3RseSBvbmUgKHdoaWNoIGlzIGluZGVzdHJ1Y3RpYmxlLCBieSB0aGUgd2F5KS4KLShYWFggVGhpcyB0eXBlIGFuZCB0aGUgdHlwZSBvZiBOb3RJbXBsZW1lbnRlZCBiZWxvdyBzaG91bGQgYmUgdW5pZmllZC4pCiAqLwogCiAvKiBBUkdTVVNFRCAqLwpAQCAtMTQ1Niw2ICsxNDA2LDU4IEBACiAgICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIE5vbmUiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK25vbmVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgfHwgKGt3YXJncyAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiTm9uZVR5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorbm9uZV9ib29sKFB5T2JqZWN0ICp2KQoreworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIG5vbmVfYXNfbnVtYmVyID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hZGQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbXVsdGlwbHkgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVtYWluZGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Rpdm1vZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3dlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9uZWdhdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3NpdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hYnNvbHV0ZSAqLworICAgIChpbnF1aXJ5KW5vbmVfYm9vbCwgICAgICAgICAvKiBuYl9ib29sICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludmVydCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9sc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcnNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2FuZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl94b3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfb3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Zsb2F0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2Vfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfbHNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcnNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfYW5kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfeG9yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2Vfb3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZmxvb3JfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3RydWVfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfZmxvb3JfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5kZXggKi8KK307CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlOb25lX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKQEAgLTE0NjgsMTAgKzE0NzAsMzQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KICAgICBub25lX3JlcHIsICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgJm5vbmVfYXNfbnVtYmVyLCAgICAvKnRwX2FzX251bWJlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jICovCisgICAgbm9uZV9uZXcsICAgICAgICAgICAvKnRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X05vbmVTdHJ1Y3QgPSB7CkBAIC0xNDg4LDYgKzE1MTQsMTYgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIk5vdEltcGxlbWVudGVkIik7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitub3RpbXBsZW1lbnRlZF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSB8fCAoa3dhcmdzICYmIFB5RGljdF9TaXplKGt3YXJncykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJOb3RJbXBsZW1lbnRlZFR5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Cit9CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlOb3RJbXBsZW1lbnRlZF9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIk5vdEltcGxlbWVudGVkVHlwZSIsCkBAIC0xNTAzLDYgKzE1MzksMzAgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MgKi8KKyAgICBub3RpbXBsZW1lbnRlZF9uZXcsIC8qdHBfbmV3ICovCiB9OwogCiBQeU9iamVjdCBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgPSB7CkBAIC0xNTg1LDYgKzE2NDUsOSBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5UHJvcGVydHlfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHByb3BlcnR5IHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU1hbmFnZWRCdWZmZXJfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG1hbmFnZWQgYnVmZmVyIHR5cGUiKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TWVtb3J5Vmlld19UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbWVtb3J5dmlldyB0eXBlIik7CiAKQEAgLTE2NDQsNiArMTcwNyw5IEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVppcF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgemlwIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU5hbWVzcGFjZV9UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbmFtZXNwYWNlIHR5cGUiKTsKIH0KIAogCkBAIC0xNzg2LDYgKzE4NTIsMTggQEAKICAgICBQeU1lbV9GUkVFKHApOwogfQogCit2b2lkCitfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5RGljdF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5RmxvYXRfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlMaXN0X0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlNZXRob2RfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeVNldF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworfQogCiAvKiBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIHRvIGNvbnRyb2wgaW5maW5pdGUgcmVjdXJzaW9uIGluIHJlcHIsIHN0ciwgcHJpbnQsCiAgICBldGMuICBDb250YWluZXIgb2JqZWN0cyB0aGF0IG1heSByZWN1cnNpdmVseSBjb250YWluIHRoZW1zZWx2ZXMsCmRpZmYgLS1naXQgYS9PYmplY3RzL29ibWFsbG9jLmMgYi9PYmplY3RzL29ibWFsbG9jLmMKaW5kZXggMzkxNjI2Mi4uNjIyNWViYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYm1hbGxvYy5jCisrKyBiL09iamVjdHMvb2JtYWxsb2MuYwpAQCAtMiw2ICsyLDEzIEBACiAKICNpZmRlZiBXSVRIX1BZTUFMTE9DCiAKKyNpZmRlZiBIQVZFX01NQVAKKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAjaWZkZWYgTUFQX0FOT05ZTU9VUworICAjZGVmaW5lIEFSRU5BU19VU0VfTU1BUAorICNlbmRpZgorI2VuZGlmCisKICNpZmRlZiBXSVRIX1ZBTEdSSU5ECiAjaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KIApAQCAtNzUsNyArODIsOCBAQAogICogQWxsb2NhdGlvbiBzdHJhdGVneSBhYnN0cmFjdDoKICAqCiAgKiBGb3Igc21hbGwgcmVxdWVzdHMsIHRoZSBhbGxvY2F0b3Igc3ViLWFsbG9jYXRlcyA8QmlnPiBibG9ja3Mgb2YgbWVtb3J5LgotICogUmVxdWVzdHMgZ3JlYXRlciB0aGFuIDI1NiBieXRlcyBhcmUgcm91dGVkIHRvIHRoZSBzeXN0ZW0ncyBhbGxvY2F0b3IuCisgKiBSZXF1ZXN0cyBncmVhdGVyIHRoYW4gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgYnl0ZXMgYXJlIHJvdXRlZCB0byB0aGUKKyAqIHN5c3RlbSdzIGFsbG9jYXRvci4KICAqCiAgKiBTbWFsbCByZXF1ZXN0cyBhcmUgZ3JvdXBlZCBpbiBzaXplIGNsYXNzZXMgc3BhY2VkIDggYnl0ZXMgYXBhcnQsIGR1ZQogICogdG8gdGhlIHJlcXVpcmVkIHZhbGlkIGFsaWdubWVudCBvZiB0aGUgcmV0dXJuZWQgYWRkcmVzcy4gUmVxdWVzdHMgb2YKQEAgLTEwNywxMCArMTE1LDExIEBACiAgKiAgICAgICA1Ny02NCAgICAgICAgICAgICAgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAgNwogICogICAgICAgNjUtNzIgICAgICAgICAgICAgICAgICAgNzIgICAgICAgICAgICAgICAgICAgICAgIDgKICAqICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgLi4uCi0gKiAgICAgIDI0MS0yNDggICAgICAgICAgICAgICAgIDI0OCAgICAgICAgICAgICAgICAgICAgICAzMAotICogICAgICAyNDktMjU2ICAgICAgICAgICAgICAgICAyNTYgICAgICAgICAgICAgICAgICAgICAgMzEKKyAqICAgICAgNDk3LTUwNCAgICAgICAgICAgICAgICAgNTA0ICAgICAgICAgICAgICAgICAgICAgIDYyCisgKiAgICAgIDUwNS01MTIgICAgICAgICAgICAgICAgIDUxMiAgICAgICAgICAgICAgICAgICAgICA2MwogICoKLSAqICAgICAgMCwgMjU3IGFuZCB1cDogcm91dGVkIHRvIHRoZSB1bmRlcmx5aW5nIGFsbG9jYXRvci4KKyAqICAgICAgMCwgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgKyAxIGFuZCB1cDogcm91dGVkIHRvIHRoZSB1bmRlcmx5aW5nCisgKiAgICAgIGFsbG9jYXRvci4KICAqLwogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTEyOSw3ICsxMzgsNiBAQAogICovCiAjZGVmaW5lIEFMSUdOTUVOVCAgICAgICAgICAgICAgIDggICAgICAgICAgICAgICAvKiBtdXN0IGJlIDJeTiAqLwogI2RlZmluZSBBTElHTk1FTlRfU0hJRlQgICAgICAgICAzCi0jZGVmaW5lIEFMSUdOTUVOVF9NQVNLICAgICAgICAgIChBTElHTk1FTlQgLSAxKQogCiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiBzaXplIGNsYXNzIEksIGFzIGEgdWludC4gKi8KICNkZWZpbmUgSU5ERVgyU0laRShJKSAoKCh1aW50KShJKSArIDEpIDw8IEFMSUdOTUVOVF9TSElGVCkKQEAgLTEzOSwxNCArMTQ3LDE3IEBACiAgKiBzbWFsbCBlbm91Z2ggaW4gb3JkZXIgdG8gdXNlIHByZWFsbG9jYXRlZCBtZW1vcnkgcG9vbHMuIFlvdSBjYW4gdHVuZQogICogdGhpcyB2YWx1ZSBhY2NvcmRpbmcgdG8geW91ciBhcHBsaWNhdGlvbiBiZWhhdmlvdXIgYW5kIG1lbW9yeSBuZWVkcy4KICAqCisgKiBOb3RlOiBhIHNpemUgdGhyZXNob2xkIG9mIDUxMiBndWFyYW50ZWVzIHRoYXQgbmV3bHkgY3JlYXRlZCBkaWN0aW9uYXJpZXMKKyAqIHdpbGwgYmUgYWxsb2NhdGVkIGZyb20gcHJlYWxsb2NhdGVkIG1lbW9yeSBwb29scyBvbiA2NC1iaXQuCisgKgogICogVGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgaG9sZDoKLSAqICAgICAgMSkgQUxJR05NRU5UIDw9IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDw9IDI1NgorICogICAgICAxKSBBTElHTk1FTlQgPD0gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgPD0gNTEyCiAgKiAgICAgIDIpIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIGlzIGV2ZW5seSBkaXZpc2libGUgYnkgQUxJR05NRU5UCiAgKgogICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBzcGFjZSBlZmZpY2llbmN5LAogICogaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCBpcyBzZXQgdG8gYSBwb3dlciBvZiAyLgogICovCi0jZGVmaW5lIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDI1NgorI2RlZmluZSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA1MTIKICNkZWZpbmUgTkJfU01BTExfU0laRV9DTEFTU0VTICAgKFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIC8gQUxJR05NRU5UKQogCiAvKgpAQCAtMTc0LDE1ICsxODUsMTUgQEAKIC8qCiAgKiBUaGUgYWxsb2NhdG9yIHN1Yi1hbGxvY2F0ZXMgPEJpZz4gYmxvY2tzIG9mIG1lbW9yeSAoY2FsbGVkIGFyZW5hcykgYWxpZ25lZAogICogb24gYSBwYWdlIGJvdW5kYXJ5LiBUaGlzIGlzIGEgcmVzZXJ2ZWQgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGZvciB0aGUKLSAqIGN1cnJlbnQgcHJvY2VzcyAob2J0YWluZWQgdGhyb3VnaCBhIG1hbGxvYyBjYWxsKS4gSW4gbm8gd2F5IHRoaXMgbWVhbnMKLSAqIHRoYXQgdGhlIG1lbW9yeSBhcmVuYXMgd2lsbCBiZSB1c2VkIGVudGlyZWx5LiBBIG1hbGxvYyg8QmlnPikgaXMgdXN1YWxseQotICogYW4gYWRkcmVzcyByYW5nZSByZXNlcnZhdGlvbiBmb3IgPEJpZz4gYnl0ZXMsIHVubGVzcyBhbGwgcGFnZXMgd2l0aGluIHRoaXMKLSAqIHNwYWNlIGFyZSByZWZlcmVuY2VkIHN1YnNlcXVlbnRseS4gU28gbWFsbG9jJ2luZyBiaWcgYmxvY2tzIGFuZCBub3QgdXNpbmcKLSAqIHRoZW0gZG9lcyBub3QgbWVhbiAid2FzdGluZyBtZW1vcnkiLiBJdCdzIGFuIGFkZHJlc3NhYmxlIHJhbmdlIHdhc3RhZ2UuLi4KKyAqIGN1cnJlbnQgcHJvY2VzcyAob2J0YWluZWQgdGhyb3VnaCBhIG1hbGxvYygpL21tYXAoKSBjYWxsKS4gSW4gbm8gd2F5IHRoaXMKKyAqIG1lYW5zIHRoYXQgdGhlIG1lbW9yeSBhcmVuYXMgd2lsbCBiZSB1c2VkIGVudGlyZWx5LiBBIG1hbGxvYyg8QmlnPikgaXMKKyAqIHVzdWFsbHkgYW4gYWRkcmVzcyByYW5nZSByZXNlcnZhdGlvbiBmb3IgPEJpZz4gYnl0ZXMsIHVubGVzcyBhbGwgcGFnZXMgd2l0aGluCisgKiB0aGlzIHNwYWNlIGFyZSByZWZlcmVuY2VkIHN1YnNlcXVlbnRseS4gU28gbWFsbG9jJ2luZyBiaWcgYmxvY2tzIGFuZCBub3QKKyAqIHVzaW5nIHRoZW0gZG9lcyBub3QgbWVhbiAid2FzdGluZyBtZW1vcnkiLiBJdCdzIGFuIGFkZHJlc3NhYmxlIHJhbmdlCisgKiB3YXN0YWdlLi4uCiAgKgotICogVGhlcmVmb3JlLCBhbGxvY2F0aW5nIGFyZW5hcyB3aXRoIG1hbGxvYyBpcyBub3Qgb3B0aW1hbCwgYmVjYXVzZSB0aGVyZSBpcwotICogc29tZSBhZGRyZXNzIHNwYWNlIHdhc3RhZ2UsIGJ1dCB0aGlzIGlzIHRoZSBtb3N0IHBvcnRhYmxlIHdheSB0byByZXF1ZXN0Ci0gKiBtZW1vcnkgZnJvbSB0aGUgc3lzdGVtIGFjcm9zcyB2YXJpb3VzIHBsYXRmb3Jtcy4KKyAqIEFyZW5hcyBhcmUgYWxsb2NhdGVkIHdpdGggbW1hcCgpIG9uIHN5c3RlbXMgc3VwcG9ydGluZyBhbm9ueW1vdXMgbWVtb3J5CisgKiBtYXBwaW5ncyB0byByZWR1Y2UgaGVhcCBmcmFnbWVudGF0aW9uLgogICovCiAjZGVmaW5lIEFSRU5BX1NJWkUgICAgICAgICAgICAgICgyNTYgPDwgMTApICAgICAvKiAyNTZLQiAqLwogCkBAIC0zMDIsMTQgKzMxMywxMiBAQAogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIHByZXZhcmVuYTsKIH07CiAKLSN1bmRlZiAgUk9VTkRVUAotI2RlZmluZSBST1VORFVQKHgpICAgICAgICAgICAgICAoKCh4KSArIEFMSUdOTUVOVF9NQVNLKSAmIH5BTElHTk1FTlRfTUFTSykKLSNkZWZpbmUgUE9PTF9PVkVSSEVBRCAgICAgICAgICAgUk9VTkRVUChzaXplb2Yoc3RydWN0IHBvb2xfaGVhZGVyKSkKKyNkZWZpbmUgUE9PTF9PVkVSSEVBRCAgIF9QeV9TSVpFX1JPVU5EX1VQKHNpemVvZihzdHJ1Y3QgcG9vbF9oZWFkZXIpLCBBTElHTk1FTlQpCiAKICNkZWZpbmUgRFVNTVlfU0laRV9JRFggICAgICAgICAgMHhmZmZmICAvKiBzaXplIGNsYXNzIG9mIG5ld2x5IGNhY2hlZCBwb29scyAqLwogCiAvKiBSb3VuZCBwb2ludGVyIFAgZG93biB0byB0aGUgY2xvc2VzdCBwb29sLWFsaWduZWQgYWRkcmVzcyA8PSBQLCBhcyBhIHBvb2xwICovCi0jZGVmaW5lIFBPT0xfQUREUihQKSAoKHBvb2xwKSgodXB0cikoUCkgJiB+KHVwdHIpUE9PTF9TSVpFX01BU0spKQorI2RlZmluZSBQT09MX0FERFIoUCkgKChwb29scClfUHlfQUxJR05fRE9XTigoUCksIFBPT0xfU0laRSkpCiAKIC8qIFJldHVybiB0b3RhbCBudW1iZXIgb2YgYmxvY2tzIGluIHBvb2wgb2Ygc2l6ZSBpbmRleCBJLCBhcyBhIHVpbnQuICovCiAjZGVmaW5lIE5VTUJMT0NLUyhJKSAoKHVpbnQpKFBPT0xfU0laRSAtIFBPT0xfT1ZFUkhFQUQpIC8gSU5ERVgyU0laRShJKSkKQEAgLTQ0MCw2ICs0NDksOSBAQAogICAgICwgUFQoNDgpLCBQVCg0OSksIFBUKDUwKSwgUFQoNTEpLCBQVCg1MiksIFBUKDUzKSwgUFQoNTQpLCBQVCg1NSkKICNpZiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA1NgogICAgICwgUFQoNTYpLCBQVCg1NyksIFBUKDU4KSwgUFQoNTkpLCBQVCg2MCksIFBUKDYxKSwgUFQoNjIpLCBQVCg2MykKKyNpZiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA2NAorI2Vycm9yICJOQl9TTUFMTF9TSVpFX0NMQVNTRVMgc2hvdWxkIGJlIGxlc3MgdGhhbiA2NCIKKyNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA2NCAqLwogI2VuZGlmIC8qIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDU2ICovCiAjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNDggKi8KICNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA0MCAqLwpAQCAtNTA4LDEyICs1MjAsMTAgQEAKIC8qIE51bWJlciBvZiBhcmVuYXMgYWxsb2NhdGVkIHRoYXQgaGF2ZW4ndCBiZWVuIGZyZWUoKSdkLiAqLwogc3RhdGljIHNpemVfdCBuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQgPSAwOwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKIC8qIFRvdGFsIG51bWJlciBvZiB0aW1lcyBtYWxsb2MoKSBjYWxsZWQgdG8gYWxsb2NhdGUgYW4gYXJlbmEuICovCiBzdGF0aWMgc2l6ZV90IG50aW1lc19hcmVuYV9hbGxvY2F0ZWQgPSAwOwogLyogSGlnaCB3YXRlciBtYXJrIChtYXggdmFsdWUgZXZlciBzZWVuKSBmb3IgbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkLiAqLwogc3RhdGljIHNpemVfdCBuYXJlbmFzX2hpZ2h3YXRlciA9IDA7Ci0jZW5kaWYKIAogLyogQWxsb2NhdGUgYSBuZXcgYXJlbmEuICBJZiB3ZSBydW4gb3V0IG9mIG1lbW9yeSwgcmV0dXJuIE5VTEwuICBFbHNlCiAgKiBhbGxvY2F0ZSBhIG5ldyBhcmVuYSwgYW5kIHJldHVybiB0aGUgYWRkcmVzcyBvZiBhbiBhcmVuYV9vYmplY3QKQEAgLTUyNSwxMCArNTM1LDEyIEBACiB7CiAgICAgc3RydWN0IGFyZW5hX29iamVjdCogYXJlbmFvYmo7CiAgICAgdWludCBleGNlc3M7ICAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgYWJvdmUgcG9vbCBhbGlnbm1lbnQgKi8KKyAgICB2b2lkICphZGRyZXNzOworICAgIGludCBlcnI7CiAKICNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCi0gICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKCk7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CiAjZW5kaWYKICAgICBpZiAodW51c2VkX2FyZW5hX29iamVjdHMgPT0gTlVMTCkgewogICAgICAgICB1aW50IGk7CkBAIC01NzcsOCArNTg5LDE1IEBACiAgICAgYXJlbmFvYmogPSB1bnVzZWRfYXJlbmFfb2JqZWN0czsKICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFyZW5hb2JqLT5uZXh0YXJlbmE7CiAgICAgYXNzZXJ0KGFyZW5hb2JqLT5hZGRyZXNzID09IDApOwotICAgIGFyZW5hb2JqLT5hZGRyZXNzID0gKHVwdHIpbWFsbG9jKEFSRU5BX1NJWkUpOwotICAgIGlmIChhcmVuYW9iai0+YWRkcmVzcyA9PSAwKSB7CisjaWZkZWYgQVJFTkFTX1VTRV9NTUFQCisgICAgYWRkcmVzcyA9IG1tYXAoTlVMTCwgQVJFTkFfU0laRSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKTsKKyAgICBlcnIgPSAoYWRkcmVzcyA9PSBNQVBfRkFJTEVEKTsKKyNlbHNlCisgICAgYWRkcmVzcyA9IG1hbGxvYyhBUkVOQV9TSVpFKTsKKyAgICBlcnIgPSAoYWRkcmVzcyA9PSAwKTsKKyNlbmRpZgorICAgIGlmIChlcnIpIHsKICAgICAgICAgLyogVGhlIGFsbG9jYXRpb24gZmFpbGVkOiByZXR1cm4gTlVMTCBhZnRlciBwdXR0aW5nIHRoZQogICAgICAgICAgKiBhcmVuYW9iaiBiYWNrLgogICAgICAgICAgKi8KQEAgLTU4NiwxMyArNjA1LDEyIEBACiAgICAgICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYXJlbmFvYmo7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1cHRyKWFkZHJlc3M7CiAKICAgICArK25hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgICsrbnRpbWVzX2FyZW5hX2FsbG9jYXRlZDsKICAgICBpZiAobmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkID4gbmFyZW5hc19oaWdod2F0ZXIpCiAgICAgICAgIG5hcmVuYXNfaGlnaHdhdGVyID0gbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkOwotI2VuZGlmCiAgICAgYXJlbmFvYmotPmZyZWVwb29scyA9IE5VTEw7CiAgICAgLyogcG9vbF9hZGRyZXNzIDwtIGZpcnN0IHBvb2wtYWxpZ25lZCBhZGRyZXNzIGluIHRoZSBhcmVuYQogICAgICAgIG5mcmVlcG9vbHMgPC0gbnVtYmVyIG9mIHdob2xlIHBvb2xzIHRoYXQgZml0IGFmdGVyIGFsaWdubWVudCAqLwpAQCAtMTA1NCw3ICsxMDcyLDExIEBACiAgICAgICAgICAgICAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhbzsKIAogICAgICAgICAgICAgICAgIC8qIEZyZWUgdGhlIGVudGlyZSBhcmVuYS4gKi8KKyNpZmRlZiBBUkVOQVNfVVNFX01NQVAKKyAgICAgICAgICAgICAgICBtdW5tYXAoKHZvaWQgKilhby0+YWRkcmVzcywgQVJFTkFfU0laRSk7CisjZWxzZQogICAgICAgICAgICAgICAgIGZyZWUoKHZvaWQgKilhby0+YWRkcmVzcyk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBhby0+YWRkcmVzcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWFyayB1bmFzc29jaWF0ZWQgKi8KICAgICAgICAgICAgICAgICAtLW5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKIApAQCAtMTY5NCwxNyArMTcxNiwxOSBAQAogICAgIH0KIH0KIAorI2VuZGlmICAvKiBQWU1BTExPQ19ERUJVRyAqLworCiBzdGF0aWMgc2l6ZV90Ci1wcmludG9uZShjb25zdCBjaGFyKiBtc2csIHNpemVfdCB2YWx1ZSkKK3ByaW50b25lKEZJTEUgKm91dCwgY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCiB7CiAgICAgaW50IGksIGs7CiAgICAgY2hhciBidWZbMTAwXTsKICAgICBzaXplX3Qgb3JpZ3ZhbHVlID0gdmFsdWU7CiAKLSAgICBmcHV0cyhtc2csIHN0ZGVycik7CisgICAgZnB1dHMobXNnLCBvdXQpOwogICAgIGZvciAoaSA9IChpbnQpc3RybGVuKG1zZyk7IGkgPCAzNTsgKytpKQotICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7Ci0gICAgZnB1dGMoJz0nLCBzdGRlcnIpOworICAgICAgICBmcHV0YygnICcsIG91dCk7CisgICAgZnB1dGMoJz0nLCBvdXQpOwogCiAgICAgLyogV3JpdGUgdGhlIHZhbHVlIHdpdGggY29tbWFzLiAqLwogICAgIGkgPSAyMjsKQEAgLTE3MjUsMTcgKzE3NDksMzMgQEAKIAogICAgIHdoaWxlIChpID49IDApCiAgICAgICAgIGJ1ZltpLS1dID0gJyAnOwotICAgIGZwdXRzKGJ1Ziwgc3RkZXJyKTsKKyAgICBmcHV0cyhidWYsIG91dCk7CiAKICAgICByZXR1cm4gb3JpZ3ZhbHVlOwogfQogCi0vKiBQcmludCBzdW1tYXJ5IGluZm8gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZiBweW1hbGxvYydzIHN0cnVjdHVyZXMuCit2b2lkCitfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKEZJTEUgKm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmxvY2tfbmFtZSwgaW50IG51bV9ibG9ja3MsIHNpemVfdCBzaXplb2ZfYmxvY2spCit7CisgICAgY2hhciBidWYxWzEyOF07CisgICAgY2hhciBidWYyWzEyOF07CisgICAgUHlPU19zbnByaW50ZihidWYxLCBzaXplb2YoYnVmMSksCisgICAgICAgICAgICAgICAgICAiJWQgJXNzICogJXpkIGJ5dGVzIGVhY2giLAorICAgICAgICAgICAgICAgICAgbnVtX2Jsb2NrcywgYmxvY2tfbmFtZSwgc2l6ZW9mX2Jsb2NrKTsKKyAgICBQeU9TX3NucHJpbnRmKGJ1ZjIsIHNpemVvZihidWYyKSwKKyAgICAgICAgICAgICAgICAgICIlNDhzICIsIGJ1ZjEpOworICAgICh2b2lkKXByaW50b25lKG91dCwgYnVmMiwgbnVtX2Jsb2NrcyAqIHNpemVvZl9ibG9jayk7Cit9CisKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisKKy8qIFByaW50IHN1bW1hcnkgaW5mbyB0byAib3V0IiBhYm91dCB0aGUgc3RhdGUgb2YgcHltYWxsb2MncyBzdHJ1Y3R1cmVzLgogICogSW4gUHlfREVCVUcgbW9kZSwgYWxzbyBwZXJmb3JtIHNvbWUgZXhwZW5zaXZlIGludGVybmFsIGNvbnNpc3RlbmN5CiAgKiBjaGVja3MuCiAgKi8KIHZvaWQKLV9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHZvaWQpCitfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCiB7CiAgICAgdWludCBpOwogICAgIGNvbnN0IHVpbnQgbnVtY2xhc3NlcyA9IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEID4+IEFMSUdOTUVOVF9TSElGVDsKQEAgLTE3NjQsNyArMTgwNCw3IEBACiAgICAgc2l6ZV90IHRvdGFsOwogICAgIGNoYXIgYnVmWzEyOF07CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNtYWxsIGJsb2NrIHRocmVzaG9sZCA9ICVkLCBpbiAldSBzaXplIGNsYXNzZXMuXG4iLAorICAgIGZwcmludGYob3V0LCAiU21hbGwgYmxvY2sgdGhyZXNob2xkID0gJWQsIGluICV1IHNpemUgY2xhc3Nlcy5cbiIsCiAgICAgICAgICAgICBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCwgbnVtY2xhc3Nlcyk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtY2xhc3NlczsgKytpKQpAQCAtMTc3NSw3ICsxODE1LDYgQEAKICAgICAgKiB3aWxsIGJlIGxpdmluZyBpbiBmdWxsIHBvb2xzIC0tIHdvdWxkIGJlIGEgc2hhbWUgdG8gbWlzcyB0aGVtLgogICAgICAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBtYXhhcmVuYXM7ICsraSkgewotICAgICAgICB1aW50IHBvb2xzaW5hcmVuYTsKICAgICAgICAgdWludCBqOwogICAgICAgICB1cHRyIGJhc2UgPSBhcmVuYXNbaV0uYWRkcmVzczsKIApAQCAtMTc4NCw3ICsxODIzLDYgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBuYXJlbmFzICs9IDE7CiAKLSAgICAgICAgcG9vbHNpbmFyZW5hID0gYXJlbmFzW2ldLm50b3RhbHBvb2xzOwogICAgICAgICBudW1mcmVlcG9vbHMgKz0gYXJlbmFzW2ldLm5mcmVlcG9vbHM7CiAKICAgICAgICAgLyogcm91bmQgdXAgdG8gcG9vbCBhbGlnbm1lbnQgKi8KQEAgLTE4MjAsMTAgKzE4NTgsMTAgQEAKICAgICB9CiAgICAgYXNzZXJ0KG5hcmVuYXMgPT0gbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkKTsKIAotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgb3V0KTsKICAgICBmcHV0cygiY2xhc3MgICBzaXplICAgbnVtIHBvb2xzICAgYmxvY2tzIGluIHVzZSAgYXZhaWwgYmxvY2tzXG4iCiAgICAgICAgICAgIi0tLS0tICAgLS0tLSAgIC0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLVxuIiwKLSAgICAgICAgICBzdGRlcnIpOworICAgICAgICAgIG91dCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtY2xhc3NlczsgKytpKSB7CiAgICAgICAgIHNpemVfdCBwID0gbnVtcG9vbHNbaV07CkBAIC0xODM0LDcgKzE4NzIsNyBAQAogICAgICAgICAgICAgYXNzZXJ0KGIgPT0gMCAmJiBmID09IDApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlNXUgJTZ1ICIKKyAgICAgICAgZnByaW50ZihvdXQsICIlNXUgJTZ1ICIKICAgICAgICAgICAgICAgICAgICAgICAgICIlMTEiIFBZX0ZPUk1BVF9TSVpFX1QgInUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIiUxNSIgUFlfRk9STUFUX1NJWkVfVCAidSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiJTEzIiBQWV9GT1JNQVRfU0laRV9UICJ1XG4iLApAQCAtMTg0NCwzNSArMTg4MiwzNiBAQAogICAgICAgICBwb29sX2hlYWRlcl9ieXRlcyArPSBwICogUE9PTF9PVkVSSEVBRDsKICAgICAgICAgcXVhbnRpemF0aW9uICs9IHAgKiAoKFBPT0xfU0laRSAtIFBPT0xfT1ZFUkhFQUQpICUgc2l6ZSk7CiAgICAgfQotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7Ci0KLSAgICAodm9pZClwcmludG9uZSgiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIHJlY2xhaW1lZCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQgLSBuYXJlbmFzKTsKLSAgICAodm9pZClwcmludG9uZSgiIyBhcmVuYXMgaGlnaHdhdGVyIG1hcmsiLCBuYXJlbmFzX2hpZ2h3YXRlcik7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGFsbG9jYXRlZCBjdXJyZW50IiwgbmFyZW5hcyk7CisgICAgZnB1dGMoJ1xuJywgb3V0KTsKKyNpZmRlZiBQWU1BTExPQ19ERUJVRworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7CisjZW5kaWYKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBhbGxvY2F0ZWQgdG90YWwiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyByZWNsYWltZWQiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkIC0gbmFyZW5hcyk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgaGlnaHdhdGVyIG1hcmsiLCBuYXJlbmFzX2hpZ2h3YXRlcik7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIGN1cnJlbnQiLCBuYXJlbmFzKTsKIAogICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUgYXJlbmFzICogJWQgYnl0ZXMvYXJlbmEiLAogICAgICAgICBuYXJlbmFzLCBBUkVOQV9TSVpFKTsKLSAgICAodm9pZClwcmludG9uZShidWYsIG5hcmVuYXMgKiBBUkVOQV9TSVpFKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZiwgbmFyZW5hcyAqIEFSRU5BX1NJWkUpOwogCi0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBmcHV0YygnXG4nLCBvdXQpOwogCi0gICAgdG90YWwgPSBwcmludG9uZSgiIyBieXRlcyBpbiBhbGxvY2F0ZWQgYmxvY2tzIiwgYWxsb2NhdGVkX2J5dGVzKTsKLSAgICB0b3RhbCArPSBwcmludG9uZSgiIyBieXRlcyBpbiBhdmFpbGFibGUgYmxvY2tzIiwgYXZhaWxhYmxlX2J5dGVzKTsKKyAgICB0b3RhbCA9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgaW4gYWxsb2NhdGVkIGJsb2NrcyIsIGFsbG9jYXRlZF9ieXRlcyk7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBpbiBhdmFpbGFibGUgYmxvY2tzIiwgYXZhaWxhYmxlX2J5dGVzKTsKIAogICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKICAgICAgICAgIiV1IHVudXNlZCBwb29scyAqICVkIGJ5dGVzIiwgbnVtZnJlZXBvb2xzLCBQT09MX1NJWkUpOwotICAgIHRvdGFsICs9IHByaW50b25lKGJ1ZiwgKHNpemVfdCludW1mcmVlcG9vbHMgKiBQT09MX1NJWkUpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgYnVmLCAoc2l6ZV90KW51bWZyZWVwb29scyAqIFBPT0xfU0laRSk7CiAKLSAgICB0b3RhbCArPSBwcmludG9uZSgiIyBieXRlcyBsb3N0IHRvIHBvb2wgaGVhZGVycyIsIHBvb2xfaGVhZGVyX2J5dGVzKTsKLSAgICB0b3RhbCArPSBwcmludG9uZSgiIyBieXRlcyBsb3N0IHRvIHF1YW50aXphdGlvbiIsIHF1YW50aXphdGlvbik7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBhcmVuYSBhbGlnbm1lbnQiLCBhcmVuYV9hbGlnbm1lbnQpOwotICAgICh2b2lkKXByaW50b25lKCJUb3RhbCIsIHRvdGFsKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gcG9vbCBoZWFkZXJzIiwgcG9vbF9oZWFkZXJfYnl0ZXMpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgbG9zdCB0byBxdWFudGl6YXRpb24iLCBxdWFudGl6YXRpb24pOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgbG9zdCB0byBhcmVuYSBhbGlnbm1lbnQiLCBhcmVuYV9hbGlnbm1lbnQpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIlRvdGFsIiwgdG90YWwpOwogfQogCi0jZW5kaWYgIC8qIFBZTUFMTE9DX0RFQlVHICovCisjZW5kaWYgLyogI2lmZGVmIFdJVEhfUFlNQUxMT0MgKi8KIAogI2lmZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgogLyogTWFrZSB0aGlzIGZ1bmN0aW9uIGxhc3Qgc28gZ2NjIHdvbid0IGlubGluZSBpdCBzaW5jZSB0aGUgZGVmaW5pdGlvbiBpcwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCmluZGV4IGI2N2I5NjkuLjY4ZDU2MzYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvcmFuZ2VvYmplY3QuYworKysgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKQEAgLTEsNiArMSw3IEBACiAvKiBSYW5nZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiAvKiBTdXBwb3J0IG9iamVjdHMgd2hvc2UgbGVuZ3RoIGlzID4gUFlfU1NJWkVfVF9NQVguCiAKQEAgLTYxMCw2ICs2MTEsMTM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9JVEVSU0VBUkNIX0NPTlRBSU5TKTsKIH0KIAorLyogQ29tcGFyZSB0d28gcmFuZ2Ugb2JqZWN0cy4gIFJldHVybiAxIGZvciBlcXVhbCwgMCBmb3Igbm90IGVxdWFsCisgICBhbmQgLTEgb24gZXJyb3IuICBUaGUgYWxnb3JpdGhtIGlzIHJvdWdobHkgdGhlIEMgZXF1aXZhbGVudCBvZgorCisgICBpZiByMCBpcyByMToKKyAgICAgICByZXR1cm4gVHJ1ZQorICAgaWYgbGVuKHIwKSAhPSBsZW4ocjEpOgorICAgICAgIHJldHVybiBGYWxzZQorICAgaWYgbm90IGxlbihyMCk6CisgICAgICAgcmV0dXJuIFRydWUKKyAgIGlmIHIwLnN0YXJ0ICE9IHIxLnN0YXJ0OgorICAgICAgIHJldHVybiBGYWxzZQorICAgaWYgbGVuKHIwKSA9PSAxOgorICAgICAgIHJldHVybiBUcnVlCisgICByZXR1cm4gcjAuc3RlcCA9PSByMS5zdGVwCisqLworc3RhdGljIGludAorcmFuZ2VfZXF1YWxzKHJhbmdlb2JqZWN0ICpyMCwgcmFuZ2VvYmplY3QgKnIxKQoreworICAgIGludCBjbXBfcmVzdWx0OworICAgIFB5T2JqZWN0ICpvbmU7CisKKyAgICBpZiAocjAgPT0gcjEpCisgICAgICAgIHJldHVybiAxOworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPmxlbmd0aCwgcjEtPmxlbmd0aCwgUHlfRVEpOworICAgIC8qIFJldHVybiBGYWxzZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDEpCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9Ob3QocjAtPmxlbmd0aCk7CisgICAgLyogUmV0dXJuIFRydWUgb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5zdGFydCwgcjEtPnN0YXJ0LCBQeV9FUSk7CisgICAgLyogUmV0dXJuIEZhbHNlIG9yIGVycm9yIHRvIHRoZSBjYWxsZXIuICovCisgICAgaWYgKGNtcF9yZXN1bHQgIT0gMSkKKyAgICAgICAgcmV0dXJuIGNtcF9yZXN1bHQ7CisgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgIGlmICghb25lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyMC0+bGVuZ3RoLCBvbmUsIFB5X0VRKTsKKyAgICBQeV9ERUNSRUYob25lKTsKKyAgICAvKiBSZXR1cm4gVHJ1ZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPnN0ZXAsIHIxLT5zdGVwLCBQeV9FUSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZV9yaWNoY29tcGFyZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghUHlSYW5nZV9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBQeV9ORToKKyAgICBjYXNlIFB5X0VROgorICAgICAgICByZXN1bHQgPSByYW5nZV9lcXVhbHMoKHJhbmdlb2JqZWN0KilzZWxmLCAocmFuZ2VvYmplY3QqKW90aGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAob3AgPT0gUHlfTkUpCisgICAgICAgICAgICByZXN1bHQgPSAhcmVzdWx0OworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICBjYXNlIFB5X0xFOgorICAgIGNhc2UgUHlfR0U6CisgICAgY2FzZSBQeV9MVDoKKyAgICBjYXNlIFB5X0dUOgorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisvKiBIYXNoIGZ1bmN0aW9uIGZvciByYW5nZSBvYmplY3RzLiAgUm91Z2ggQyBlcXVpdmFsZW50IG9mCisKKyAgIGlmIG5vdCBsZW4ocik6CisgICAgICAgcmV0dXJuIGhhc2goKGxlbihyKSwgTm9uZSwgTm9uZSkpCisgICBpZiBsZW4ocikgPT0gMToKKyAgICAgICByZXR1cm4gaGFzaCgobGVuKHIpLCByLnN0YXJ0LCBOb25lKSkKKyAgIHJldHVybiBoYXNoKChsZW4ociksIHIuc3RhcnQsIHIuc3RlcCkpCisqLworc3RhdGljIFB5X2hhc2hfdAorcmFuZ2VfaGFzaChyYW5nZW9iamVjdCAqcikKK3sKKyAgICBQeU9iamVjdCAqdDsKKyAgICBQeV9oYXNoX3QgcmVzdWx0ID0gLTE7CisgICAgaW50IGNtcF9yZXN1bHQ7CisKKyAgICB0ID0gUHlUdXBsZV9OZXcoMyk7CisgICAgaWYgKCF0KQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfSU5DUkVGKHItPmxlbmd0aCk7CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAwLCByLT5sZW5ndGgpOworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9Ob3Qoci0+bGVuZ3RoKTsKKyAgICBpZiAoY21wX3Jlc3VsdCA9PSAtMSkKKyAgICAgICAgZ290byBlbmQ7CisgICAgaWYgKGNtcF9yZXN1bHQgPT0gMSkgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAxLCBQeV9Ob25lKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAyLCBQeV9Ob25lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICpvbmU7CisgICAgICAgIFB5X0lOQ1JFRihyLT5zdGFydCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMSwgci0+c3RhcnQpOworICAgICAgICBvbmUgPSBQeUxvbmdfRnJvbUxvbmcoMSk7CisgICAgICAgIGlmICghb25lKQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woci0+bGVuZ3RoLCBvbmUsIFB5X0VRKTsKKyAgICAgICAgUHlfREVDUkVGKG9uZSk7CisgICAgICAgIGlmIChjbXBfcmVzdWx0ID09IC0xKQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIGlmIChjbXBfcmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMiwgUHlfTm9uZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoci0+c3RlcCk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDIsIHItPnN0ZXApOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdCA9IFB5T2JqZWN0X0hhc2godCk7CisgIGVuZDoKKyAgICBQeV9ERUNSRUYodCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmdlX2NvdW50KHJhbmdlb2JqZWN0ICpyLCBQeU9iamVjdCAqb2IpCiB7CkBAIC03NTAsNiArODgyLDEzIEBACiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeU1lbWJlckRlZiByYW5nZV9tZW1iZXJzW10gPSB7CisgICAgeyJzdGFydCIsICAgVF9PQkpFQ1RfRVgsICAgIG9mZnNldG9mKHJhbmdlb2JqZWN0LCBzdGFydCksICAgUkVBRE9OTFl9LAorICAgIHsic3RvcCIsICAgIFRfT0JKRUNUX0VYLCAgICBvZmZzZXRvZihyYW5nZW9iamVjdCwgc3RvcCksICAgIFJFQURPTkxZfSwKKyAgICB7InN0ZXAiLCAgICBUX09CSkVDVF9FWCwgICAgb2Zmc2V0b2YocmFuZ2VvYmplY3QsIHN0ZXApLCAgICBSRUFET05MWX0sCisgICAgezB9Cit9OworCiBQeVR5cGVPYmplY3QgUHlSYW5nZV9UeXBlID0gewogICAgICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICAgICAicmFuZ2UiLCAgICAgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLwpAQCAtNzY0LDcgKzkwMyw3IEBACiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICAgICAmcmFuZ2VfYXNfc2VxdWVuY2UsICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgICAgICAmcmFuZ2VfYXNfbWFwcGluZywgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAgICAgKGhhc2hmdW5jKXJhbmdlX2hhc2gsICAgLyogdHBfaGFzaCAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwogICAgICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgIC8qIHRwX2dldGF0dHJvICovCkBAIC03NzQsMTIgKzkxMywxMiBAQAogICAgICAgICByYW5nZV9kb2MsICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAgICAgcmFuZ2VfcmljaGNvbXBhcmUsICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAgICAgcmFuZ2VfaXRlciwgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgICAgICByYW5nZV9tZXRob2RzLCAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAgICAgcmFuZ2VfbWVtYmVycywgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCkBAIC04MjYsOSArOTY1LDU5IEBACiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLAogICAgICAgICAgICAgICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3JhbmdlaXRlcl9yZWR1Y2UocmFuZ2VpdGVyb2JqZWN0ICpyKQoreworICAgIFB5T2JqZWN0ICpzdGFydD1OVUxMLCAqc3RvcD1OVUxMLCAqc3RlcD1OVUxMOworICAgIFB5T2JqZWN0ICpyYW5nZTsKKworICAgIC8qIGNyZWF0ZSBhIHJhbmdlIG9iamVjdCBmb3IgcGlja2xpbmcgKi8KKyAgICBzdGFydCA9IFB5TG9uZ19Gcm9tTG9uZyhyLT5zdGFydCk7CisgICAgaWYgKHN0YXJ0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyOworICAgIHN0b3AgPSBQeUxvbmdfRnJvbUxvbmcoci0+c3RhcnQgKyByLT5sZW4gKiByLT5zdGVwKTsKKyAgICBpZiAoc3RvcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICBzdGVwID0gUHlMb25nX0Zyb21Mb25nKHItPnN0ZXApOworICAgIGlmIChzdGVwID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyOworICAgIHJhbmdlID0gKFB5T2JqZWN0KiltYWtlX3JhbmdlX29iamVjdCgmUHlSYW5nZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBzdG9wLCBzdGVwKTsKKyAgICBpZiAocmFuZ2UgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgLyogcmV0dXJuIHRoZSByZXN1bHQgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKWkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCByYW5nZSwgci0+aW5kZXgpOworZXJyOgorICAgIFB5X1hERUNSRUYoc3RhcnQpOworICAgIFB5X1hERUNSRUYoc3RvcCk7CisgICAgUHlfWERFQ1JFRihzdGVwKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3JhbmdlaXRlcl9zZXRzdGF0ZShyYW5nZWl0ZXJvYmplY3QgKnIsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gci0+bGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByLT5pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgcmFuZ2VpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilyYW5nZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pcmFuZ2VpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXJhbmdlaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC05NTcsOSArMTE0Niw1MSBAQAogICAgIHJldHVybiBQeU51bWJlcl9TdWJ0cmFjdChyLT5sZW4sIHItPmluZGV4KTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2xvbmdyYW5nZWl0ZXJfcmVkdWNlKGxvbmdyYW5nZWl0ZXJvYmplY3QgKnIpCit7CisgICAgUHlPYmplY3QgKnByb2R1Y3QsICpzdG9wPU5VTEw7CisgICAgUHlPYmplY3QgKnJhbmdlOworCisgICAgLyogY3JlYXRlIGEgcmFuZ2Ugb2JqZWN0IGZvciBwaWNrbGluZy4gIE11c3QgY2FsY3VsYXRlIHRoZSAic3RvcCIgdmFsdWUgKi8KKyAgICBwcm9kdWN0ID0gUHlOdW1iZXJfTXVsdGlwbHkoci0+bGVuLCByLT5zdGVwKTsKKyAgICBpZiAocHJvZHVjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdG9wID0gUHlOdW1iZXJfQWRkKHItPnN0YXJ0LCBwcm9kdWN0KTsKKyAgICBQeV9ERUNSRUYocHJvZHVjdCk7CisgICAgaWYgKHN0b3AgPT0gIE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihyLT5zdGFydCk7CisgICAgUHlfSU5DUkVGKHItPnN0ZXApOworICAgIHJhbmdlID0gIChQeU9iamVjdCopbWFrZV9yYW5nZV9vYmplY3QoJlB5UmFuZ2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLT5zdGFydCwgc3RvcCwgci0+c3RlcCk7CisgICAgaWYgKHJhbmdlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHItPnN0YXJ0KTsKKyAgICAgICAgUHlfREVDUkVGKHN0b3ApOworICAgICAgICBQeV9ERUNSRUYoci0+c3RlcCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHJldHVybiB0aGUgcmVzdWx0ICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTilPIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgcmFuZ2UsIHItPmluZGV4KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xvbmdyYW5nZWl0ZXJfc2V0c3RhdGUobG9uZ3JhbmdlaXRlcm9iamVjdCAqciwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X0NMRUFSKHItPmluZGV4KTsKKyAgICByLT5pbmRleCA9IHN0YXRlOworICAgIFB5X0lOQ1JFRihyLT5pbmRleCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiBsb25ncmFuZ2VpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilsb25ncmFuZ2VpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWxvbmdyYW5nZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbG9uZ3JhbmdlaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL3NldG9iamVjdC5jIGIvT2JqZWN0cy9zZXRvYmplY3QuYwppbmRleCAzYWJlZWZiLi43MjM2NzlhIDEwMDY0NAotLS0gYS9PYmplY3RzL3NldG9iamVjdC5jCisrKyBiL09iamVjdHMvc2V0b2JqZWN0LmMKQEAgLTc3LDcgKzc3LDcgQEAKIHN0YXRpYyBzZXRlbnRyeSAqCiBzZXRfbG9va2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKKyAgICByZWdpc3RlciBzaXplX3QgaTsKICAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKICAgICByZWdpc3RlciBzZXRlbnRyeSAqZnJlZXNsb3Q7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSBzby0+bWFzazsKQEAgLTg2LDcgKzg2LDcgQEAKICAgICByZWdpc3RlciBpbnQgY21wOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAotICAgIGkgPSBoYXNoICYgbWFzazsKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXkgPT0ga2V5KQogICAgICAgICByZXR1cm4gZW50cnk7CkBAIC0xNTksNyArMTU5LDcgQEAKIHN0YXRpYyBzZXRlbnRyeSAqCiBzZXRfbG9va2tleV91bmljb2RlKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOworICAgIHJlZ2lzdGVyIHNpemVfdCBpOwogICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwogICAgIHJlZ2lzdGVyIHNldGVudHJ5ICpmcmVlc2xvdDsKICAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IHNvLT5tYXNrOwpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgICAgIHNvLT5sb29rdXAgPSBzZXRfbG9va2tleTsKICAgICAgICAgcmV0dXJuIHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOwogICAgIH0KLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGtleSkKICAgICAgICAgcmV0dXJuIGVudHJ5OwpAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwogICAgIHJlZ2lzdGVyIHNldGVudHJ5ICplbnRyeTsKIAotICAgIGkgPSBoYXNoICYgbWFzazsKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBlbnRyeS0+a2V5ICE9IE5VTEw7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwpAQCAtMzg2LDcgKzM4Niw3IEBACiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBuX3VzZWQ7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNTc5LDExICs1NzksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9yZXByKFB5U2V0T2JqZWN0ICpzbykKIHsKLSAgICBQeU9iamVjdCAqa2V5cywgKnJlc3VsdD1OVUxMOwotICAgIFB5X1VOSUNPREUgKnU7CisgICAgUHlPYmplY3QgKnJlc3VsdD1OVUxMLCAqa2V5cywgKmxpc3RyZXByLCAqdG1wOwogICAgIGludCBzdGF0dXMgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0Kilzbyk7Ci0gICAgUHlPYmplY3QgKmxpc3RyZXByOwotICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKIAogICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICBpZiAoc3RhdHVzIDwgMCkKQEAgLTYwMSwyOSArNTk4LDI0IEBACiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCisgICAgLyogcmVwcihrZXlzKVsxOi0xXSAqLwogICAgIGxpc3RyZXByID0gUHlPYmplY3RfUmVwcihrZXlzKTsKICAgICBQeV9ERUNSRUYoa2V5cyk7CiAgICAgaWYgKGxpc3RyZXByID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBuZXdzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKGxpc3RyZXByKTsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbmV3c2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAgICAgKnUrKyA9ICd7JzsKLSAgICAgICAgLyogT21pdCB0aGUgYnJhY2tldHMgZnJvbSB0aGUgbGlzdHJlcHIgKi8KLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUsIFB5VW5pY29kZV9BU19VTklDT0RFKGxpc3RyZXByKSsxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGxpc3RyZXByKS0yKTsKLSAgICAgICAgdSArPSBuZXdzaXplLTI7Ci0gICAgICAgICp1KysgPSAnfSc7Ci0gICAgfQorICAgIHRtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGlzdHJlcHIsIDEsIFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpc3RyZXByKS0xKTsKICAgICBQeV9ERUNSRUYobGlzdHJlcHIpOwotICAgIGlmIChQeV9UWVBFKHNvKSAhPSAmUHlTZXRfVHlwZSkgewotICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVVKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNvKS0+dHBfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSB0bXA7Ci0gICAgfQorICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGxpc3RyZXByID0gdG1wOworCisgICAgaWYgKFB5X1RZUEUoc28pICE9ICZQeVNldF9UeXBlKQorICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoeyVVfSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNvKS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdHJlcHIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoInslVX0iLCBsaXN0cmVwcik7CisgICAgUHlfREVDUkVGKGxpc3RyZXByKTsKIGRvbmU6CiAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCopc28pOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02ODIsNyArNjc0LDcgQEAKICAgICBzZXRlbnRyeSAqZW50cnk7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTc2OCwxNCArNzYwLDE0IEBACiBmcm96ZW5zZXRfaGFzaChQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeVNldE9iamVjdCAqc28gPSAoUHlTZXRPYmplY3QgKilzZWxmOwotICAgIFB5X2hhc2hfdCBoLCBoYXNoID0gMTkyNzg2ODIzN0w7CisgICAgUHlfdWhhc2hfdCBoLCBoYXNoID0gMTkyNzg2ODIzN1U7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKIAogICAgIGlmIChzby0+aGFzaCAhPSAtMSkKICAgICAgICAgcmV0dXJuIHNvLT5oYXNoOwogCi0gICAgaGFzaCAqPSBQeVNldF9HRVRfU0laRShzZWxmKSArIDE7CisgICAgaGFzaCAqPSAoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDE7CiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7CiAgICAgICAgIC8qIFdvcmsgdG8gaW5jcmVhc2UgdGhlIGJpdCBkaXNwZXJzaW9uIGZvciBjbG9zZWx5IHNwYWNlZCBoYXNoCiAgICAgICAgICAgIHZhbHVlcy4gIFRoZSBpcyBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHVzZSBjYXNlcyBoYXZlIG1hbnkKQEAgLTc4MywxMSArNzc1LDExIEBACiAgICAgICAgICAgIGhhc2hlcyBzbyB0aGF0IG1hbnkgZGlzdGluY3QgY29tYmluYXRpb25zIGNvbGxhcHNlIHRvIG9ubHkKICAgICAgICAgICAgYSBoYW5kZnVsIG9mIGRpc3RpbmN0IGhhc2ggdmFsdWVzLiAqLwogICAgICAgICBoID0gZW50cnktPmhhc2g7Ci0gICAgICAgIGhhc2ggXj0gKGggXiAoaCA8PCAxNikgXiA4OTg2OTc0N0wpICAqIDM2NDQ3OTgxNjd1OworICAgICAgICBoYXNoIF49IChoIF4gKGggPDwgMTYpIF4gODk4Njk3NDdVKSAgKiAzNjQ0Nzk4MTY3VTsKICAgICB9Ci0gICAgaGFzaCA9IGhhc2ggKiA2OTA2OUwgKyA5MDcxMzM5MjNMOworICAgIGhhc2ggPSBoYXNoICogNjkwNjlVICsgOTA3MTMzOTIzVTsKICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgaGFzaCA9IDU5MDkyMzcxM0w7CisgICAgICAgIGhhc2ggPSA1OTA5MjM3MTNVOwogICAgIHNvLT5oYXNoID0gaGFzaDsKICAgICByZXR1cm4gaGFzaDsKIH0KQEAgLTgyNyw4ICs4MTksNTEgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKnNldGl0ZXJfaXRlcm5leHQoc2V0aXRlcm9iamVjdCAqc2kpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2V0aXRlcl9yZWR1Y2Uoc2V0aXRlcm9iamVjdCAqc2kpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgc2V0aXRlcm9iamVjdCB0bXA7CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogY29weSB0aGUgaXRlcmF0b3Igc3RhdGUgKi8KKyAgICB0bXAgPSAqc2k7CisgICAgUHlfWElOQ1JFRih0bXAuc2lfc2V0KTsKKworICAgIC8qIGl0ZXJhdGUgdGhlIHRlbXBvcmFyeSBpbnRvIGEgbGlzdCAqLworICAgIGZvcig7OykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IHNldGl0ZXJfaXRlcm5leHQoJnRtcCk7CisgICAgICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXAuc2lfc2V0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgUHlfWERFQ1JFRih0bXAuc2lfc2V0KTsKKyAgICAvKiBjaGVjayBmb3IgZXJyb3IgKi8KKyAgICBpZiAodG1wLnNpX3NldCAhPSBOVUxMKSB7CisgICAgICAgIC8qIHdlIGhhdmUgYW4gZXJyb3IgKi8KKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCBsaXN0KTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgc2V0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pc2V0aXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilzZXRpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMDc2LDkgKzExMTEsMTAgQEAKICAgICByZXR1cm4gZW1wdHlmcm96ZW5zZXQ7CiB9CiAKLXZvaWQKLVB5U2V0X0Zpbmkodm9pZCkKK2ludAorUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKQogeworICAgIGludCBmcmVlbGlzdF9zaXplID0gbnVtZnJlZTsKICAgICBQeVNldE9iamVjdCAqc287CiAKICAgICB3aGlsZSAobnVtZnJlZSkgewpAQCAtMTA4NiwxMCArMTEyMiwyNyBAQAogICAgICAgICBzbyA9IGZyZWVfbGlzdFtudW1mcmVlXTsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKHNvKTsKICAgICB9CisgICAgcmV0dXJuIGZyZWVsaXN0X3NpemU7Cit9CisKK3ZvaWQKK1B5U2V0X0Zpbmkodm9pZCkKK3sKKyAgICBQeVNldF9DbGVhckZyZWVMaXN0KCk7CiAgICAgUHlfQ0xFQVIoZHVtbXkpOwogICAgIFB5X0NMRUFSKGVtcHR5ZnJvemVuc2V0KTsKIH0KIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5U2V0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlTZXRPYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZnJlZSwgc2l6ZW9mKFB5U2V0T2JqZWN0KSk7Cit9CisKKwogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xMjEwLDEwICsxMjYzLDggQEAKIHsKICAgICBQeVNldE9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHJlc3VsdCA9IChQeVNldE9iamVjdCAqKXNldF9jb3B5KHNvKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCkBAIC0xMjMwLDEwICsxMjgxLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfaW9yKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzbyk7CkBAIC0xMzgzLDEwICsxNDMzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfYW5kKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIHNldF9pbnRlcnNlY3Rpb24oc28sIG90aGVyKTsKIH0KIApAQCAtMTM5NSwxMCArMTQ0Myw4IEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXN1bHQgPSBzZXRfaW50ZXJzZWN0aW9uX3VwZGF0ZShzbywgb3RoZXIpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNjI1LDIwICsxNjcxLDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3N1YihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBzZXRfZGlmZmVyZW5jZShzbywgb3RoZXIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2lzdWIoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKQEAgLTE3MzYsMTAgKzE3NzgsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF94b3IoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKHNvLCBvdGhlcik7CiB9CiAKQEAgLTE3NDgsMTAgKzE3ODgsOCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmVzdWx0ID0gc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZShzbywgb3RoZXIpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODEzLDEwICsxODUxLDkgQEAKIHsKICAgICBQeU9iamVjdCAqcjEsICpyMjsKIAotICAgIGlmKCFQeUFueVNldF9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmKCFQeUFueVNldF9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgUHlfRVE6CiAgICAgICAgIGlmIChQeVNldF9HRVRfU0laRSh2KSAhPSBQeVNldF9HRVRfU0laRSh3KSkKQEAgLTE4NDYsOCArMTg4Myw3IEBACiAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgICAgIHJldHVybiBzZXRfaXNzdXBlcnNldCh2LCB3KTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk1OSw2ICsxOTk1LDcgQEAKIHNldF9yZWR1Y2UoUHlTZXRPYmplY3QgKnNvKQogewogICAgIFB5T2JqZWN0ICprZXlzPU5VTEwsICphcmdzPU5VTEwsICpyZXN1bHQ9TlVMTCwgKmRpY3Q9TlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKICAgICBrZXlzID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKXNvKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQpAQCAtMTk2Niw3ICsyMDAzLDcgQEAKICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIGtleXMpOwogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilzbywgIl9fZGljdF9fIik7CisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc28sICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGRpY3QgPSBQeV9Ob25lOwpAQCAtMTk4MCw4ICsyMDE3LDYgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfc2l6ZW9mKFB5U2V0T2JqZWN0ICpzbykKIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvc2xpY2VvYmplY3QuYyBiL09iamVjdHMvc2xpY2VvYmplY3QuYwppbmRleCAwZjRiNjQ3Li4xNTkzMzM1IDEwMDY0NAotLS0gYS9PYmplY3RzL3NsaWNlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zbGljZW9iamVjdC5jCkBAIC0xNyw2ICsxNywxNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiBzdGF0aWMgUHlPYmplY3QgKgorZWxsaXBzaXNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgfHwgKGt3YXJncyAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiRWxsaXBzaXNUeXBlIHRha2VzIG5vIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKFB5X0VsbGlwc2lzKTsKKyAgICByZXR1cm4gUHlfRWxsaXBzaXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBlbGxpcHNpc19yZXByKFB5T2JqZWN0ICpvcCkKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkVsbGlwc2lzIik7CkBAIC00Myw2ICs1NCwyNCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZWxsaXBzaXNfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiB9OwogCiBQeU9iamVjdCBfUHlfRWxsaXBzaXNPYmplY3QgPSB7CkBAIC01MSwxOSArODAsMzggQEAKIH07CiAKIAotLyogU2xpY2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uCisvKiBTbGljZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAotICAgc3RhcnQsIHN0b3AsIGFuZCBzdGVwIGFyZSBweXRob24gb2JqZWN0cyB3aXRoIE5vbmUgaW5kaWNhdGluZyBubworLyogVXNpbmcgYSBjYWNoZSBpcyB2ZXJ5IGVmZmVjdGl2ZSBzaW5jZSB0eXBpY2FsbHkgb25seSBhIHNpbmdsZSBzbGljZSBpcworICogY3JlYXRlZCBhbmQgdGhlbiBkZWxldGVkIGFnYWluCisgKi8KK3N0YXRpYyBQeVNsaWNlT2JqZWN0ICpzbGljZV9jYWNoZSA9IE5VTEw7Cit2b2lkIFB5U2xpY2VfRmluaSh2b2lkKQoreworICAgIFB5U2xpY2VPYmplY3QgKm9iaiA9IHNsaWNlX2NhY2hlOworICAgIGlmIChvYmogIT0gTlVMTCkgeworICAgICAgICBzbGljZV9jYWNoZSA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0X0RlbChvYmopOworICAgIH0KK30KKworLyogc3RhcnQsIHN0b3AsIGFuZCBzdGVwIGFyZSBweXRob24gb2JqZWN0cyB3aXRoIE5vbmUgaW5kaWNhdGluZyBubwogICAgaW5kZXggaXMgcHJlc2VudC4KICovCiAKIFB5T2JqZWN0ICoKIFB5U2xpY2VfTmV3KFB5T2JqZWN0ICpzdGFydCwgUHlPYmplY3QgKnN0b3AsIFB5T2JqZWN0ICpzdGVwKQogewotICAgIFB5U2xpY2VPYmplY3QgKm9iaiA9IFB5T2JqZWN0X05ldyhQeVNsaWNlT2JqZWN0LCAmUHlTbGljZV9UeXBlKTsKLQotICAgIGlmIChvYmogPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlTbGljZU9iamVjdCAqb2JqOworICAgIGlmIChzbGljZV9jYWNoZSAhPSBOVUxMKSB7CisgICAgICAgIG9iaiA9IHNsaWNlX2NhY2hlOworICAgICAgICBzbGljZV9jYWNoZSA9IE5VTEw7CisgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopb2JqKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvYmogPSBQeU9iamVjdF9OZXcoUHlTbGljZU9iamVjdCwgJlB5U2xpY2VfVHlwZSk7CisgICAgICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmIChzdGVwID09IE5VTEwpIHN0ZXAgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihzdGVwKTsKQEAgLTIzMiw3ICsyODAsMTAgQEAKICAgICBQeV9ERUNSRUYoci0+c3RlcCk7CiAgICAgUHlfREVDUkVGKHItPnN0YXJ0KTsKICAgICBQeV9ERUNSRUYoci0+c3RvcCk7Ci0gICAgUHlPYmplY3RfRGVsKHIpOworICAgIGlmIChzbGljZV9jYWNoZSA9PSBOVUxMKQorICAgICAgICBzbGljZV9jYWNoZSA9IHI7CisgICAgZWxzZQorICAgICAgICBQeU9iamVjdF9EZWwocik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yOTgsMTAgKzM0OSw4IEBACiAgICAgUHlPYmplY3QgKnQyOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoIVB5U2xpY2VfQ2hlY2sodikgfHwgIVB5U2xpY2VfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5U2xpY2VfQ2hlY2sodikgfHwgIVB5U2xpY2VfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIGlmICh2ID09IHcpIHsKICAgICAgICAgLyogWFhYIERvIHdlIHJlYWxseSBuZWVkIHRoaXMgc2hvcnRjdXQ/CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjI4MTNkCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaApAQCAtMCwwICsxLDMwIEBACisvKiB0aGlzIGlzIHNvcnQgb2YgYSBoYWNrLiAgdGhlcmUncyBhdCBsZWFzdCBvbmUgcGxhY2UgKGZvcm1hdHRpbmcKKyAgIGZsb2F0cykgd2hlcmUgc29tZSBzdHJpbmdsaWIgY29kZSB0YWtlcyBhIGRpZmZlcmVudCBwYXRoIGlmIGl0J3MKKyAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCisjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCisKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIGFzY2lpbGliX2Zhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIGFzY2lpbGliXyMjRgorI2RlZmluZSBTVFJJTkdMSUJfT0JKRUNUICAgICAgICAgUHlVbmljb2RlT2JqZWN0CisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAgICAxCisjZGVmaW5lIFNUUklOR0xJQl9NQVhfQ0hBUiAgICAgICAweDdGdQorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVUNTMQorI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCisjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKKyNkZWZpbmUgU1RSSU5HTElCX0VNUFRZICAgICAgICAgIHVuaWNvZGVfZW1wdHkKKyNkZWZpbmUgU1RSSU5HTElCX0lTU1BBQ0UgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRQorI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCisjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBCisjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSAorI2RlZmluZSBTVFJJTkdMSUJfTkVXKFNUUixMRU4pICAgX1B5VW5pY29kZV9Gcm9tQVNDSUkoKGNoYXIqKShTVFIpLChMRU4pKQorI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgbm90X3N1cHBvcnRlZAorI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAorCisjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKKyNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X0FTQ0lJCisKKyNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfYXNjaWlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTAxMDg5Ci0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKQEAgLTAsMCArMSw2MjkgQEAKKy8qIHN0cmluZ2xpYjogY29kZWMgaW1wbGVtZW50YXRpb25zICovCisKKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorCisvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKKyAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCisjaWYgKFNJWkVPRl9MT05HID09IDgpCisjIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MDgwODA4MDgwVUwKKyNlbGlmIChTSVpFT0ZfTE9ORyA9PSA0KQorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODBVTAorI2Vsc2UKKyMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKKyNlbmRpZgorCisvKiAxMHh4eHh4eCAqLworI2RlZmluZSBJU19DT05USU5VQVRJT05fQllURShjaCkgKChjaCkgPj0gMHg4MCAmJiAoY2gpIDwgMHhDMCkKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIodXRmOF9kZWNvZGUpKGNvbnN0IGNoYXIgKippbnB0ciwgY29uc3QgY2hhciAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqb3V0cG9zKQoreworICAgIFB5X1VDUzQgY2g7CisgICAgY29uc3QgY2hhciAqcyA9ICppbnB0cjsKKyAgICBjb25zdCBjaGFyICphbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopIF9QeV9BTElHTl9ET1dOKGVuZCwgU0laRU9GX0xPTkcpOworICAgIFNUUklOR0xJQl9DSEFSICpwID0gZGVzdCArICpvdXRwb3M7CisKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOworCisgICAgICAgIGlmIChjaCA8IDB4ODApIHsKKyAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBBU0NJSSBjaGFyYWN0ZXJzLiBHaXZlbiB0aGF0IGNvbW1vbiBVVEYtOAorICAgICAgICAgICAgICAgaW5wdXQgd2lsbCBjb25zaXN0IG9mIGFuIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBBU0NJSQorICAgICAgICAgICAgICAgY2hhcmFjdGVycywgd2UgdHJ5IHRvIG9wdGltaXplIGZvciB0aGlzIGNhc2UgYnkgY2hlY2tpbmcKKyAgICAgICAgICAgICAgIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBhIEMgJ2xvbmcnIGNhbiBjb250YWluLgorICAgICAgICAgICAgICAgRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBkbyBhbiBhbGlnbmVkIHJlYWQsIGFzIG1vc3QgQ1BVcyBoYXZlCisgICAgICAgICAgICAgICBhIHBlbmFsdHkgZm9yIHVuYWxpZ25lZCByZWFkcy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoX1B5X0lTX0FMSUdORUQocywgU0laRU9GX0xPTkcpKSB7CisgICAgICAgICAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY2hhciAqX3MgPSBzOworICAgICAgICAgICAgICAgIHJlZ2lzdGVyIFNUUklOR0xJQl9DSEFSICpfcCA9IHA7CisgICAgICAgICAgICAgICAgd2hpbGUgKF9zIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogUmVhZCBhIHdob2xlIGxvbmcgYXQgYSB0aW1lIChlaXRoZXIgNCBvciA4IGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIGRvIGEgZmFzdCB1bnJvbGxlZCBjb3B5IGlmIGl0IG9ubHkgY29udGFpbnMgQVNDSUkKKyAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy4gKi8KKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSA9ICoodW5zaWduZWQgbG9uZyAqKSBfczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYgQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KKyAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAoU1RSSU5HTElCX0NIQVIpKHZhbHVlICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDE2KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAyNCkgJiAweEZGdSk7CisjIGlmIFNJWkVPRl9MT05HID09IDgKKyAgICAgICAgICAgICAgICAgICAgX3BbNF0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAzMikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzVdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNDApICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs2XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDQ4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbN10gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA1NikgJiAweEZGdSk7CisjIGVuZGlmCisjZWxzZQorIyBpZiBTSVpFT0ZfTE9ORyA9PSA4CisgICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNTYpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDQ4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA0MCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzNdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMzIpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs0XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDI0KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAxNikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzZdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gOCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzddID0gKFNUUklOR0xJQl9DSEFSKSh2YWx1ZSAmIDB4RkZ1KTsKKyMgZWxzZQorICAgICAgICAgICAgICAgICAgICBfcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDI0KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAxNikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gOCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzNdID0gKFNUUklOR0xJQl9DSEFSKSh2YWx1ZSAmIDB4RkZ1KTsKKyMgZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBfcyArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHMgPSBfczsKKyAgICAgICAgICAgICAgICBwID0gX3A7CisgICAgICAgICAgICAgICAgaWYgKHMgPT0gZW5kKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoIDwgMHg4MCkgeworICAgICAgICAgICAgICAgIHMrKzsKKyAgICAgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2ggPCAweEMyKSB7CisgICAgICAgICAgICAvKiBpbnZhbGlkIHNlcXVlbmNlCisgICAgICAgICAgICAgICBceDgwLVx4QkYgLS0gY29udGludWF0aW9uIGJ5dGUKKyAgICAgICAgICAgICAgIFx4QzAtXHhDMSAtLSBmYWtlIDAwMDAtMDA3RiAqLworICAgICAgICAgICAgZ290byBJbnZhbGlkU3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2ggPCAweEUwKSB7CisgICAgICAgICAgICAvKiBceEMyXHg4MC1ceERGXHhCRiAtLSAwMDgwLTA3RkYgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2gyOworICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCAyKSB7CisgICAgICAgICAgICAgICAgLyogdW5leHBlY3RlZCBlbmQgb2YgZGF0YTogdGhlIGNhbGxlciB3aWxsIGRlY2lkZSB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgaXQncyBhbiBlcnJvciBvciBub3QgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoMiA9ICh1bnNpZ25lZCBjaGFyKXNbMV07CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikpCisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIGNoID0gKGNoIDw8IDYpICsgY2gyIC0KKyAgICAgICAgICAgICAgICAgKCgweEMwIDw8IDYpICsgMHg4MCk7CisgICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOworICAgICAgICAgICAgcyArPSAyOworICAgICAgICAgICAgaWYgKFNUUklOR0xJQl9NQVhfQ0hBUiA8PSAweDAwN0YgfHwKKyAgICAgICAgICAgICAgICAoU1RSSU5HTElCX01BWF9DSEFSIDwgMHgwN0ZGICYmIGNoID4gU1RSSU5HTElCX01BWF9DSEFSKSkKKyAgICAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2ggPCAweEYwKSB7CisgICAgICAgICAgICAvKiBceEUwXHhBMFx4ODAtXHhFRlx4QkZceEJGIC0tIDA4MDAtRkZGRiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaDIsIGNoMzsKKyAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgMykgeworICAgICAgICAgICAgICAgIC8qIHVuZXhwZWN0ZWQgZW5kIG9mIGRhdGE6IHRoZSBjYWxsZXIgd2lsbCBkZWNpZGUgd2hldGhlcgorICAgICAgICAgICAgICAgICAgIGl0J3MgYW4gZXJyb3Igb3Igbm90ICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaDIgPSAodW5zaWduZWQgY2hhcilzWzFdOworICAgICAgICAgICAgY2gzID0gKHVuc2lnbmVkIGNoYXIpc1syXTsKKyAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gyKSB8fAorICAgICAgICAgICAgICAgICFJU19DT05USU5VQVRJT05fQllURShjaDMpKSB7CisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAweEUwKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoMiA8IDB4QTApCisgICAgICAgICAgICAgICAgICAgIC8qIGludmFsaWQgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgXHhFMFx4ODBceDgwLVx4RTBceDlGXHhCRiAtLSBmYWtlIDAwMDAtMDgwMCAqLworICAgICAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAweEVEICYmIGNoMiA+IDB4OUYpIHsKKyAgICAgICAgICAgICAgICAvKiBEZWNvZGluZyBVVEYtOCBzZXF1ZW5jZXMgaW4gcmFuZ2UgXHhFRFx4QTBceDgwLVx4RURceEJGXHhCRgorICAgICAgICAgICAgICAgICAgIHdpbGwgcmVzdWx0IGluIHN1cnJvZ2F0ZXMgaW4gcmFuZ2UgRDgwMC1ERkZGLiBTdXJyb2dhdGVzIGFyZQorICAgICAgICAgICAgICAgICAgIG5vdCB2YWxpZCBVVEYtOCBzbyB0aGV5IGFyZSByZWplY3RlZC4KKyAgICAgICAgICAgICAgICAgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy9Vbmljb2RlNS4yLjAvY2gwMy5wZGYKKyAgICAgICAgICAgICAgICAgICAodGFibGUgMy03KSBhbmQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzYyOS50eHQgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaCA9IChjaCA8PCAxMikgKyAoY2gyIDw8IDYpICsgY2gzIC0KKyAgICAgICAgICAgICAgICAgKCgweEUwIDw8IDEyKSArICgweDgwIDw8IDYpICsgMHg4MCk7CisgICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDdGRikgJiYgKGNoIDw9IDB4RkZGRikpOworICAgICAgICAgICAgcyArPSAzOworICAgICAgICAgICAgaWYgKFNUUklOR0xJQl9NQVhfQ0hBUiA8PSAweDA3RkYgfHwKKyAgICAgICAgICAgICAgICAoU1RSSU5HTElCX01BWF9DSEFSIDwgMHhGRkZGICYmIGNoID4gU1RSSU5HTElCX01BWF9DSEFSKSkKKyAgICAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2ggPCAweEY1KSB7CisgICAgICAgICAgICAvKiBceEYwXHg5MFx4ODBceDgwLVx4RjRceDhGXHhCRlx4QkYgLS0gMTAwMDAtMTBGRkZGICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoMiwgY2gzLCBjaDQ7CisgICAgICAgICAgICBpZiAoZW5kIC0gcyA8IDQpIHsKKyAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVuZCBvZiBkYXRhOiB0aGUgY2FsbGVyIHdpbGwgZGVjaWRlIHdoZXRoZXIKKyAgICAgICAgICAgICAgICAgICBpdCdzIGFuIGVycm9yIG9yIG5vdCAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2gyID0gKHVuc2lnbmVkIGNoYXIpc1sxXTsKKyAgICAgICAgICAgIGNoMyA9ICh1bnNpZ25lZCBjaGFyKXNbMl07CisgICAgICAgICAgICBjaDQgPSAodW5zaWduZWQgY2hhcilzWzNdOworICAgICAgICAgICAgaWYgKCFJU19DT05USU5VQVRJT05fQllURShjaDIpIHx8CisgICAgICAgICAgICAgICAgIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMykgfHwKKyAgICAgICAgICAgICAgICAhSVNfQ09OVElOVUFUSU9OX0JZVEUoY2g0KSkgeworICAgICAgICAgICAgICAgIC8qIGludmFsaWQgY29udGludWF0aW9uIGJ5dGUgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPT0gMHhGMCkgeworICAgICAgICAgICAgICAgIGlmIChjaDIgPCAweDkwKQorICAgICAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgICAgIFx4RjBceDgwXHg4MFx4ODAtXHhGMFx4ODBceEJGXHhCRiAtLSBmYWtlIDAwMDAtRkZGRiAqLworICAgICAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAweEY0ICYmIGNoMiA+IDB4OEYpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgXHhGNFx4OTBceDgwXDgwLSAtLSAxMTAwMDAtIG92ZXJmbG93ICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2ggPSAoY2ggPDwgMTgpICsgKGNoMiA8PCAxMikgKyAoY2gzIDw8IDYpICsgY2g0IC0KKyAgICAgICAgICAgICAgICAgKCgweEYwIDw8IDE4KSArICgweDgwIDw8IDEyKSArICgweDgwIDw8IDYpICsgMHg4MCk7CisgICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4RkZGRikgJiYgKGNoIDw9IDB4MTBGRkZGKSk7CisgICAgICAgICAgICBzICs9IDQ7CisgICAgICAgICAgICBpZiAoU1RSSU5HTElCX01BWF9DSEFSIDw9IDB4RkZGRiB8fAorICAgICAgICAgICAgICAgIChTVFJJTkdMSUJfTUFYX0NIQVIgPCAweDEwRkZGRiAmJiBjaCA+IFNUUklOR0xJQl9NQVhfQ0hBUikpCisgICAgICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGdvdG8gSW52YWxpZFN0YXJ0OworICAgIH0KKyAgICBjaCA9IDA7CitPdmVyZmxvdzoKK1JldHVybjoKKyAgICAqaW5wdHIgPSBzOworICAgICpvdXRwb3MgPSBwIC0gZGVzdDsKKyAgICByZXR1cm4gY2g7CitJbnZhbGlkU3RhcnQ6CisgICAgY2ggPSAxOworICAgIGdvdG8gUmV0dXJuOworSW52YWxpZENvbnRpbnVhdGlvbjoKKyAgICBjaCA9IDI7CisgICAgZ290byBSZXR1cm47Cit9CisKKyN1bmRlZiBBU0NJSV9DSEFSX01BU0sKKyN1bmRlZiBJU19DT05USU5VQVRJT05fQllURQorCisKKy8qIFVURi04IGVuY29kZXIgc3BlY2lhbGl6ZWQgZm9yIGEgVW5pY29kZSBraW5kIHRvIGF2b2lkIHRoZSBzbG93CisgICBQeVVuaWNvZGVfUkVBRCgpIG1hY3JvLiBEZWxldGUgc29tZSBwYXJ0cyBvZiB0aGUgY29kZSBkZXBlbmRpbmcgb24gdGhlIGtpbmQ6CisgICBVQ1MtMSBzdHJpbmdzIGRvbid0IG5lZWQgdG8gaGFuZGxlIHN1cnJvZ2F0ZXMgZm9yIGV4YW1wbGUuICovCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK1NUUklOR0xJQih1dGY4X2VuY29kZXIpKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisjZGVmaW5lIE1BWF9TSE9SVF9VTklDSEFSUyAzMDAgIC8qIGxhcmdlc3Qgc2l6ZSB3ZSdsbCBkbyBvbiB0aGUgc3RhY2sgKi8KKworICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBzIG9mIG5leHQgaW5wdXQgYnl0ZSAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgLyogcmVzdWx0IHN0cmluZyBvYmplY3QgKi8KKyAgICBjaGFyICpwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgZnJlZSBieXRlIGluIG91dHB1dCBidWZmZXIgKi8KKyAgICBQeV9zc2l6ZV90IG5hbGxvY2F0ZWQ7ICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBhbGxvY2F0ZWQgKi8KKyAgICBQeV9zc2l6ZV90IG5uZWVkZWQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBuZWVkZWQgKi8KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisjZW5kaWYKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDI7CisgICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAyXTsKKyNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gMzsKKyAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDNdOworI2Vsc2UgLyogIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSA0ICovCisgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gNDsKKyAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDRdOworI2VuZGlmCisKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplIDw9IE1BWF9TSE9SVF9VTklDSEFSUykgeworICAgICAgICAvKiBXcml0ZSBpbnRvIHRoZSBzdGFjayBidWZmZXI7IG5hbGxvY2F0ZWQgY2FuJ3Qgb3ZlcmZsb3cuCisgICAgICAgICAqIEF0IHRoZSBlbmQsIHdlJ2xsIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBoZWFwIHNwYWNlIGFzIGl0CisgICAgICAgICAqIHR1cm5zIG91dCB3ZSBuZWVkLgorICAgICAgICAgKi8KKyAgICAgICAgbmFsbG9jYXRlZCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2l6ZW9mKHN0YWNrYnVmKSwgc2l6ZV90LCBpbnQpOworICAgICAgICByZXN1bHQgPSBOVUxMOyAgIC8qIHdpbGwgYWxsb2NhdGUgYWZ0ZXIgd2UncmUgZG9uZSAqLworICAgICAgICBwID0gc3RhY2tidWY7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gbWF4X2NoYXJfc2l6ZSkgeworICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIH0KKyAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KKyAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiBtYXhfY2hhcl9zaXplOworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7KSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBkYXRhW2krK107CisKKyAgICAgICAgaWYgKGNoIDwgMHg4MCkgeworICAgICAgICAgICAgLyogRW5jb2RlIEFTQ0lJICovCisgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworCisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgaWYgKGNoIDwgMHgwODAwKQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEVuY29kZSBMYXRpbi0xICovCisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4YzAgfCAoY2ggPj4gNikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOworICAgICAgICB9CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBrLCBzdGFydHBvczsKKyAgICAgICAgICAgIHN0YXJ0cG9zID0gaS0xOworICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsICJ1dGYtOCIsICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIiwKKyAgICAgICAgICAgICAgICAgIHVuaWNvZGUsICZleGMsIHN0YXJ0cG9zLCBzdGFydHBvcysxLCAmbmV3cG9zKTsKKyAgICAgICAgICAgIGlmICghcmVwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpCisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKTsKKworICAgICAgICAgICAgaWYgKHJlcHNpemUgPiBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQ7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBzdGFja2J1ZjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworCisgICAgICAgICAgICAgICAgaWYgKG5hbGxvY2F0ZWQgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUgKyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmFsbG9jYXRlZCArPSByZXBzaXplIC0gbWF4X2NoYXJfc2l6ZTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBuYWxsb2NhdGVkKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLCBzdGFja2J1Ziwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyICpwcmVwID0gUHlCeXRlc19BU19TVFJJTkcocmVwKTsKKyAgICAgICAgICAgICAgICBmb3IoayA9IHJlcHNpemU7IGsgPiAwOyBrLS0pCisgICAgICAgICAgICAgICAgICAgICpwKysgPSAqcHJlcCsrOworICAgICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKKyAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIHJlcGtpbmQ7CisgICAgICAgICAgICAgICAgdm9pZCAqcmVwZGF0YTsKKworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVwa2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcCk7CisgICAgICAgICAgICAgICAgcmVwZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcCk7CisKKyAgICAgICAgICAgICAgICBmb3Ioaz0wOyBrPHJlcHNpemU7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChyZXBraW5kLCByZXBkYXRhLCBrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKDB4ODAgPD0gYykgeworICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAidXRmLTgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLTEsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhciljOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDIKKyAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZTAgfCAoY2ggPj4gMTIpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgIH0KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyCisgICAgICAgIGVsc2UgLyogY2ggPj0gMHgxMDAwMCAqLworICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgLyogRW5jb2RlIFVDUzQgVW5pY29kZSBvcmRpbmFscyAqLworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGYwIHwgKGNoID4+IDE4KSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDEyKSAmIDB4M2YpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgIH0KKyNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyICovCisjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMSAqLworICAgIH0KKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAvKiBUaGlzIHdhcyBzdGFjayBhbGxvY2F0ZWQuICovCisgICAgICAgIG5uZWVkZWQgPSBwIC0gc3RhY2tidWY7CisgICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHN0YWNrYnVmLCBubmVlZGVkKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEN1dCBiYWNrIHRvIHNpemUgYWN0dWFsbHkgbmVlZGVkLiAqLworICAgICAgICBubmVlZGVkID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOworICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbm5lZWRlZCk7CisgICAgfQorCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorIGVycm9yOgorICAgIFB5X1hERUNSRUYocmVwKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisjdW5kZWYgTUFYX1NIT1JUX1VOSUNIQVJTCit9CisKKy8qIFRoZSBwYXR0ZXJuIGZvciBjb25zdHJ1Y3RpbmcgVUNTMi1yZXBlYXRlZCBtYXNrcy4gKi8KKyNpZiBTSVpFT0ZfTE9ORyA9PSA4CisjIGRlZmluZSBVQ1MyX1JFUEVBVF9NQVNLIDB4MDAwMTAwMDEwMDAxMDAwMXVsCisjZWxpZiBTSVpFT0ZfTE9ORyA9PSA0CisjIGRlZmluZSBVQ1MyX1JFUEVBVF9NQVNLIDB4MDAwMTAwMDF1bAorI2Vsc2UKKyMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKKyNlbmRpZgorCisvKiBUaGUgbWFzayBmb3IgZmFzdCBjaGVja2luZy4gKi8KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorLyogVGhlIG1hc2sgZm9yIGZhc3QgY2hlY2tpbmcgb2Ygd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKKyAgIG5vbi1BU0NJSSBvciBub24tTGF0aW4xIFVURjE2LWVuY29kZWQgY2hhcmFjdGVycy4gKi8KKyMgZGVmaW5lIEZBU1RfQ0hBUl9NQVNLICAgICAgICAgKFVDUzJfUkVQRUFUX01BU0sgKiAoMHhGRkZGdSAmIH5TVFJJTkdMSUJfTUFYX0NIQVIpKQorI2Vsc2UKKy8qIFRoZSBtYXNrIGZvciBmYXN0IGNoZWNraW5nIG9mIHdoZXRoZXIgYSBDICdsb25nJyBtYXkgY29udGFpbgorICAgVVRGMTYtZW5jb2RlZCBzdXJyb2dhdGUgY2hhcmFjdGVycy4gVGhpcyBpcyBhbiBlZmZpY2llbnQgaGV1cmlzdGljLAorICAgYXNzdW1pbmcgdGhhdCBub24tc3Vycm9nYXRlIGNoYXJhY3RlcnMgd2l0aCBhIGNvZGUgcG9pbnQgPj0gMHg4MDAwIGFyZQorICAgcmFyZSBpbiBtb3N0IGlucHV0LgorKi8KKyMgZGVmaW5lIEZBU1RfQ0hBUl9NQVNLICAgICAgICAgKFVDUzJfUkVQRUFUX01BU0sgKiAweDgwMDB1KQorI2VuZGlmCisvKiBUaGUgbWFzayBmb3IgZmFzdCBieXRlLXN3YXBwaW5nLiAqLworI2RlZmluZSBTVFJJUFBFRF9NQVNLICAgICAgICAgICAoVUNTMl9SRVBFQVRfTUFTSyAqIDB4MDBGRnUpCisvKiBTd2FwIGJ5dGVzLiAqLworI2RlZmluZSBTV0FCKHZhbHVlKSAgICAgICAgICAgICAoKCgodmFsdWUpID4+IDgpICYgU1RSSVBQRURfTUFTSykgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh2YWx1ZSkgJiBTVFJJUFBFRF9NQVNLKSA8PCA4KSkKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIodXRmMTZfZGVjb2RlKShjb25zdCB1bnNpZ25lZCBjaGFyICoqaW5wdHIsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmUsCisgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGVzdCwgUHlfc3NpemVfdCAqb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hdGl2ZV9vcmRlcmluZykKK3sKKyAgICBQeV9VQ1M0IGNoOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFsaWduZWRfZW5kID0KKyAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopIF9QeV9BTElHTl9ET1dOKGUsIFNJWkVPRl9MT05HKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxID0gKmlucHRyOworICAgIFNUUklOR0xJQl9DSEFSICpwID0gZGVzdCArICpvdXRwb3M7CisgICAgLyogT2Zmc2V0cyBmcm9tIHEgZm9yIHJldHJpZXZpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCisjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KKyAgICBpbnQgaWhpID0gISFuYXRpdmVfb3JkZXJpbmcsIGlsbyA9ICFuYXRpdmVfb3JkZXJpbmc7CisjZWxzZQorICAgIGludCBpaGkgPSAhbmF0aXZlX29yZGVyaW5nLCBpbG8gPSAhIW5hdGl2ZV9vcmRlcmluZzsKKyNlbmRpZgorICAgIC0tZTsKKworICAgIHdoaWxlIChxIDwgZSkgeworICAgICAgICBQeV9VQ1M0IGNoMjsKKyAgICAgICAgLyogRmlyc3QgY2hlY2sgZm9yIHBvc3NpYmxlIGFsaWduZWQgcmVhZCBvZiBhIEMgJ2xvbmcnLiBVbmFsaWduZWQKKyAgICAgICAgICAgcmVhZHMgYXJlIG1vcmUgZXhwZW5zaXZlLCBiZXR0ZXIgdG8gZGVmZXIgdG8gYW5vdGhlciBpdGVyYXRpb24uICovCisgICAgICAgIGlmIChfUHlfSVNfQUxJR05FRChxLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBpbi1yYW5nZSBub24tc3Vycm9nYXRlIGNoYXJzLiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3EgPSBxOworICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJsb2NrID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIENhbiB1c2UgYnVmZmVyIGRpcmVjdGx5ICovCisgICAgICAgICAgICAgICAgICAgIGlmIChibG9jayAmIEZBU1RfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIGJ5dGUtc3dhcCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2sgJiBTV0FCKEZBU1RfQ0hBUl9NQVNLKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgICAgICAgICAgICAgIGJsb2NrID4+PSA4OworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBTV0FCKGJsb2NrKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorIyBpZiBTSVpFT0ZfTE9ORyA9PSA0CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiAxNik7CisjIGVsaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDE2KSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbMl0gPSAoU1RSSU5HTElCX0NIQVIpKChibG9jayA+PiAzMikgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzNdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiA0OCk7CisjIGVuZGlmCisjZWxzZQorIyBpZiBTSVpFT0ZfTE9ORyA9PSA0CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgPj4gMTYpOworICAgICAgICAgICAgICAgIHBbMV0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisjIGVsaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrID4+IDQ4KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKSgoYmxvY2sgPj4gMzIpICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDE2KSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbM10gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisjIGVuZGlmCisjZW5kaWYKKyAgICAgICAgICAgICAgICBfcSArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgICAgICBwICs9IFNJWkVPRl9MT05HIC8gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHEgPSBfcTsKKyAgICAgICAgICAgIGlmIChxID49IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjaCA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107CisgICAgICAgIHEgKz0gMjsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPCAyCisgICAgICAgICAgICBpZiAoY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpCisgICAgICAgICAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgICAgICAgICAgZ290byBSZXR1cm47CisjZW5kaWYKKyAgICAgICAgICAgICpwKysgPSAoU1RSSU5HTElCX0NIQVIpY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFVURi0xNiBjb2RlIHBhaXI6ICovCisgICAgICAgIGlmIChxID49IGUpCisgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRFbmQ7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkpCisgICAgICAgICAgICBnb3RvIElsbGVnYWxFbmNvZGluZzsKKyAgICAgICAgY2gyID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKKyAgICAgICAgcSArPSAyOworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaDIpKQorICAgICAgICAgICAgZ290byBJbGxlZ2FsU3Vycm9nYXRlOworICAgICAgICBjaCA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGNoLCBjaDIpOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA8IDQKKyAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgIGdvdG8gUmV0dXJuOworI2Vsc2UKKyAgICAgICAgKnArKyA9IChTVFJJTkdMSUJfQ0hBUiljaDsKKyNlbmRpZgorICAgIH0KKyAgICBjaCA9IDA7CitSZXR1cm46CisgICAgKmlucHRyID0gcTsKKyAgICAqb3V0cG9zID0gcCAtIGRlc3Q7CisgICAgcmV0dXJuIGNoOworVW5leHBlY3RlZEVuZDoKKyAgICBjaCA9IDE7CisgICAgZ290byBSZXR1cm47CitJbGxlZ2FsRW5jb2Rpbmc6CisgICAgY2ggPSAyOworICAgIGdvdG8gUmV0dXJuOworSWxsZWdhbFN1cnJvZ2F0ZToKKyAgICBjaCA9IDM7CisgICAgZ290byBSZXR1cm47Cit9CisjdW5kZWYgVUNTMl9SRVBFQVRfTUFTSworI3VuZGVmIEZBU1RfQ0hBUl9NQVNLCisjdW5kZWYgU1RSSVBQRURfTUFTSworI3VuZGVmIFNXQUIKKworCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK1NUUklOR0xJQih1dGYxNl9lbmNvZGUpKHVuc2lnbmVkIHNob3J0ICpvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBuYXRpdmVfb3JkZXJpbmcpCit7CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmVuZCA9IGluICsgbGVuOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisjIGRlZmluZSBTV0FCMihDSCkgICgoQ0gpIDw8IDgpCisjZWxzZQorIyBkZWZpbmUgU1dBQjIoQ0gpICAoKChDSCkgPDwgOCkgfCAoKENIKSA+PiA4KSkKKyNlbmRpZgorI2lmIFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4MTAwMDAKKyAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisjIGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisgICAgICAgIFB5X01FTUNQWShvdXQsIGluLCAyICogbGVuKTsKKyMgZWxzZQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoU1RSSU5HTElCX0NIQVIsIHVuc2lnbmVkIHNob3J0LCBpbiwgZW5kLCBvdXQpOworIyBlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICp1bnJvbGxlZF9lbmQgPSBpbiArIF9QeV9TSVpFX1JPVU5EX0RPV04obGVuLCA0KTsKKyAgICAgICAgd2hpbGUgKGluIDwgdW5yb2xsZWRfZW5kKSB7CisgICAgICAgICAgICBvdXRbMF0gPSBTV0FCMihpblswXSk7CisgICAgICAgICAgICBvdXRbMV0gPSBTV0FCMihpblsxXSk7CisgICAgICAgICAgICBvdXRbMl0gPSBTV0FCMihpblsyXSk7CisgICAgICAgICAgICBvdXRbM10gPSBTV0FCMihpblszXSk7CisgICAgICAgICAgICBpbiArPSA0OyBvdXQgKz0gNDsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgICpvdXQrKyA9IFNXQUIyKCppbik7CisgICAgICAgICAgICArK2luOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9ICppbisrOworICAgICAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkKKyAgICAgICAgICAgICAgICAqb3V0KysgPSBjaDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG91dFswXSA9IFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgICAgIG91dFsxXSA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURShjaCk7CisgICAgICAgICAgICAgICAgb3V0ICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqaW4rKzsKKyAgICAgICAgICAgIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICAgICAgKm91dCsrID0gU1dBQjIoKFB5X1VDUzIpY2gpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfVUNTMiBjaDEgPSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgICAgICBQeV9VQ1MyIGNoMiA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURShjaCk7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gU1dBQjIoY2gxKTsKKyAgICAgICAgICAgICAgICBvdXRbMV0gPSBTV0FCMihjaDIpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisjdW5kZWYgU1dBQjIKK30KKyNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaCBiL09iamVjdHMvc3RyaW5nbGliL2NvdW50LmgKaW5kZXggZGUzNGY5Ni4uZjQ4NTAwYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb3VudC5oCkBAIC0xLDE0ICsxLDExIEBACiAvKiBzdHJpbmdsaWI6IGNvdW50IGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX0NPVU5UX0gKLSNkZWZpbmUgU1RSSU5HTElCX0NPVU5UX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfY291bnQoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKGNvdW50KShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CkBAIC0xOSw3ICsxNiw3IEBACiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIChzdHJfbGVuIDwgbWF4Y291bnQpID8gc3RyX2xlbiArIDEgOiBtYXhjb3VudDsKIAotICAgIGNvdW50ID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgbWF4Y291bnQsIEZBU1RfQ09VTlQpOworICAgIGNvdW50ID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgbWF4Y291bnQsIEZBU1RfQ09VTlQpOwogCiAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgcmV0dXJuIDA7IC8qIG5vIG1hdGNoICovCkBAIC0yNyw0ICsyNCw0IEBACiAgICAgcmV0dXJuIGNvdW50OwogfQogCi0jZW5kaWYKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCBiL09iamVjdHMvc3RyaW5nbGliL2VxLmgKaW5kZXggM2U3ZjVlOC4uOGU3OWE0MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCkBAIC05LDEzICs5LDI2IEBACiAgICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICphID0gKFB5VW5pY29kZU9iamVjdCAqKWFhOwogICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqYiA9IChQeVVuaWNvZGVPYmplY3QgKiliYjsKIAotICAgIGlmIChhLT5sZW5ndGggIT0gYi0+bGVuZ3RoKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYSkgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKGIpID09IC0xKSB7CisgICAgICAgIGFzc2VydCgwICYmICJ1bmljb2RlX2VxIHJlYWR5IGZhaWwiKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGEtPmxlbmd0aCA9PSAwKQotICAgICAgICByZXR1cm4gMTsKLSAgICBpZiAoYS0+c3RyWzBdICE9IGItPnN0clswXSkKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYikpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhLT5sZW5ndGggPT0gMSkKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgPT0gMCkKICAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJuIG1lbWNtcChhLT5zdHIsIGItPnN0ciwgYS0+bGVuZ3RoICogc2l6ZW9mKFB5X1VOSUNPREUpKSA9PSAwOworICAgIGlmIChQeVVuaWNvZGVfS0lORChhKSAhPSBQeVVuaWNvZGVfS0lORChiKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLyogSnVzdCBjb21wYXJpbmcgdGhlIGZpcnN0IGJ5dGUgaXMgZW5vdWdoIHRvIHNlZSBpZiBhIGFuZCBiIGRpZmZlci4KKyAgICAgKiBJZiB0aGV5IGFyZSAyIGJ5dGUgb3IgNCBieXRlIGNoYXJhY3RlciBtb3N0IGRpZmZlcmVuY2VzIHdpbGwgaGFwcGVuIGluCisgICAgICogdGhlIGxvd2VyIGJ5dGVzIGFueXdheXMuCisgICAgICovCisgICAgaWYgKFB5VW5pY29kZV8xQllURV9EQVRBKGEpWzBdICE9IFB5VW5pY29kZV8xQllURV9EQVRBKGIpWzBdKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlVbmljb2RlX0tJTkQoYSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgJiYKKyAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgPT0gMSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIG1lbWNtcChQeVVuaWNvZGVfMUJZVEVfREFUQShhKSwgUHlVbmljb2RlXzFCWVRFX0RBVEEoYiksCisgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChhKSAqIFB5VW5pY29kZV9LSU5EKGEpKSA9PSAwOwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCmluZGV4IGUyMzFjNTguLmVjZjg4NWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKQEAgLTEsNiArMSw1IEBACiAvKiBzdHJpbmdsaWI6IGZhc3RzZWFyY2ggaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZGVmaW5lIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKIAogLyogZmFzdCBzZWFyY2gvY291bnQgaW1wbGVtZW50YXRpb24sIGJhc2VkIG9uIGEgbWl4IGJldHdlZW4gYm95ZXItCkBAIC0zMyw4ICszMiw2MSBAQAogI2RlZmluZSBTVFJJTkdMSUJfQkxPT00obWFzaywgY2gpICAgICBcCiAgICAgKChtYXNrICYgICgxVUwgPDwgKChjaCkgJiAoU1RSSU5HTElCX0JMT09NX1dJRFRIIC0xKSkpKSkKIAorCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWZhc3RzZWFyY2goY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKK1NUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgY2gsIHVuc2lnbmVkIGNoYXIgbmVlZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50LCBpbnQgbW9kZSkKK3sKKyAgICB2b2lkICpjYW5kaWRhdGU7CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmZvdW5kOworCisjZGVmaW5lIERPX01FTUNIUihtZW1jaHIsIHMsIG5lZWRsZSwgbmNoYXJzKSBkbyB7IFwKKyAgICBjYW5kaWRhdGUgPSBtZW1jaHIoKGNvbnN0IHZvaWQgKikgKHMpLCAobmVlZGxlKSwgKG5jaGFycykgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsgXAorICAgIGZvdW5kID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisgICAgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpIHsKKyAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnB0ciA9IHM7CisgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICplID0gcyArIG47CisgICAgICAgIHdoaWxlIChwdHIgPCBlKSB7CisgICAgICAgICAgICBET19NRU1DSFIobWVtY2hyLCBwdHIsIG5lZWRsZSwgZSAtIHB0cik7CisgICAgICAgICAgICBpZiAoZm91bmQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpmb3VuZCA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZvdW5kIC0gcyk7CisgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICAgICAgcHRyID0gZm91bmQgKyAxOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjaWZkZWYgSEFWRV9NRU1SQ0hSCisgICAgLyogbWVtcmNocigpIGlzIGEgR05VIGV4dGVuc2lvbiwgYXZhaWxhYmxlIHNpbmNlIGdsaWJjIDIuMS45MS4KKyAgICAgICBpdCBkb2Vzbid0IHNlZW0gYXMgb3B0aW1pemVkIGFzIG1lbWNocigpLCBidXQgaXMgc3RpbGwgcXVpdGUKKyAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgaW4gRkFTVFNFQVJDSCBiZWxvdyAqLworICAgIGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9SU0VBUkNIKSB7CisgICAgICAgIHdoaWxlIChuID4gMCkgeworICAgICAgICAgICAgRE9fTUVNQ0hSKG1lbXJjaHIsIHMsIG5lZWRsZSwgbik7CisgICAgICAgICAgICBpZiAoZm91bmQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBuID0gZm91bmQgLSBzOworICAgICAgICAgICAgaWYgKHNpemVvZihTVFJJTkdMSUJfQ0hBUikgPT0gMSB8fCAqZm91bmQgPT0gY2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KDApOyAvKiBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisjdW5kZWYgRE9fTUVNQ0hSCit9CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorRkFTVFNFQVJDSChjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAogICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogcCwgUHlfc3NpemVfdCBtLAogICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50LCBpbnQgbW9kZSkKIHsKQEAgLTUyLDYgKzEwNCwyNCBAQAogICAgICAgICBpZiAobSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAvKiB1c2Ugc3BlY2lhbCBjYXNlIGZvciAxLWNoYXJhY3RlciBzdHJpbmdzICovCisgICAgICAgIGlmIChuID4gMTAgJiYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gKKyNpZmRlZiBIQVZFX01FTVJDSFIKKyAgICAgICAgICAgICAgICAgICAgfHwgbW9kZSA9PSBGQVNUX1JTRUFSQ0gKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICApKSB7CisgICAgICAgICAgICAvKiB1c2UgbWVtY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKKyAgICAgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGU7CisgICAgICAgICAgICBuZWVkbGUgPSBwWzBdICYgMHhmZjsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbworICAgICAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCisgICAgICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgICAgICBpZiAobmVlZGxlICE9IDApCisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAocywgbiwgcFswXSwgbmVlZGxlLCBtYXhjb3VudCwgbW9kZSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9DT1VOVCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKSB7CkBAIC0xNTcsNCArMjI3LDMgQEAKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCmluZGV4IGNlNjE1ZGMuLjUxOGUwMTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKQEAgLTEsMTQgKzEsMTEgQEAKIC8qIHN0cmluZ2xpYjogZmluZC9pbmRleCBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9GSU5EX0gKLSNkZWZpbmUgU1RSSU5HTElCX0ZJTkRfSAotCiAjaWZuZGVmIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKICNlcnJvciBtdXN0IGluY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBtb2R1bGUKICNlbmRpZgogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9maW5kKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKK1NUUklOR0xJQihmaW5kKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCkKIHsKQEAgLTE5LDcgKzE2LDcgQEAKICAgICBpZiAoc3ViX2xlbiA9PSAwKQogICAgICAgICByZXR1cm4gb2Zmc2V0OwogCi0gICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKKyAgICBwb3MgPSBGQVNUU0VBUkNIKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOwogCiAgICAgaWYgKHBvcyA+PSAwKQogICAgICAgICBwb3MgKz0gb2Zmc2V0OwpAQCAtMjgsNyArMjUsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9yZmluZChjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIocmZpbmQpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQpCiB7CkBAIC0zOSw3ICszNiw3IEBACiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIHN0cl9sZW4gKyBvZmZzZXQ7CiAKLSAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKKyAgICBwb3MgPSBGQVNUU0VBUkNIKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKIAogICAgIGlmIChwb3MgPj0gMCkKICAgICAgICAgcG9zICs9IG9mZnNldDsKQEAgLTYzLDI5ICs2MCwyOSBAQAogICAgIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfZmluZF9zbGljZShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIoZmluZF9zbGljZSkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX2xlbik7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9maW5kKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CisgICAgcmV0dXJuIFNUUklOR0xJQihmaW5kKShzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOwogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9yZmluZF9zbGljZShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIocmZpbmRfc2xpY2UpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX2xlbik7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9yZmluZChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOworICAgIHJldHVybiBTVFJJTkdMSUIocmZpbmQpKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CiB9CiAKICNpZmRlZiBTVFJJTkdMSUJfV0FOVF9DT05UQUlOU19PQkoKIAogUHlfTE9DQUxfSU5MSU5FKGludCkKLXN0cmluZ2xpYl9jb250YWluc19vYmooUHlPYmplY3QqIHN0ciwgUHlPYmplY3QqIHN1YikKK1NUUklOR0xJQihjb250YWluc19vYmopKFB5T2JqZWN0KiBzdHIsIFB5T2JqZWN0KiBzdWIpCiB7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9maW5kKAorICAgIHJldHVybiBTVFJJTkdMSUIoZmluZCkoCiAgICAgICAgIFNUUklOR0xJQl9TVFIoc3RyKSwgU1RSSU5HTElCX0xFTihzdHIpLAogICAgICAgICBTVFJJTkdMSUJfU1RSKHN1YiksIFNUUklOR0xJQl9MRU4oc3ViKSwgMAogICAgICAgICApICE9IC0xOwpAQCAtOTgsMTQgKzk1LDE0IEBACiByaW5kZXgpIGFuZCBmb3IgY291bnQsIHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoLCBiZWNhdXNlIHRoZXkgYWxsIGhhdmUKIHRoZSBzYW1lIGJlaGF2aW91ciBmb3IgdGhlIGFyZ3VtZW50cy4KIAotSXQgZG9lcyBub3QgdG91Y2ggdGhlIHZhcmlhYmxlcyByZWNlaXZlZCB1bnRpbCBpdCBrbm93cyBldmVyeXRoaW5nIAorSXQgZG9lcyBub3QgdG91Y2ggdGhlIHZhcmlhYmxlcyByZWNlaXZlZCB1bnRpbCBpdCBrbm93cyBldmVyeXRoaW5nCiBpcyBvay4KICovCiAKICNkZWZpbmUgRk9STUFUX0JVRkZFUl9TSVpFIDUwCiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1zdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCitTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQogewpAQCAtMTQ4LDI4ICsxNDUsNzYgQEAKIAogTm90ZSB0aGF0IHdlIHJlY2VpdmUgYSBwb2ludGVyIHRvIHRoZSBwb2ludGVyIG9mIHRoZSBzdWJzdHJpbmcgb2JqZWN0LAogc28gd2hlbiB3ZSBjcmVhdGUgdGhhdCBvYmplY3QgaW4gdGhpcyBmdW5jdGlvbiB3ZSBkb24ndCBERUNSRUYgaXQsCi1iZWNhdXNlIGl0IGNvbnRpbnVlcyBsaXZpbmcgaW4gdGhlIGNhbGxlciBmdW5jdGlvbnMgKHRob3NlIGZ1bmN0aW9ucywgCitiZWNhdXNlIGl0IGNvbnRpbnVlcyBsaXZpbmcgaW4gdGhlIGNhbGxlciBmdW5jdGlvbnMgKHRob3NlIGZ1bmN0aW9ucywKIGFmdGVyIGZpbmlzaGluZyB1c2luZyB0aGUgc3Vic3RyaW5nLCBtdXN0IERFQ1JFRiBpdCkuCiAqLwogCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqKnN1YnN0cmluZywKK1NUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUpKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCiB7CiAgICAgUHlPYmplY3QgKnRtcF9zdWJzdHJpbmc7CiAKLSAgICBpZihzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1YnN0cmluZywKKyAgICBpZihTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpIHsKICAgICAgICAgdG1wX3N1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHRtcF9zdWJzdHJpbmcpOwogICAgICAgICBpZiAoIXRtcF9zdWJzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgKnN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKil0bXBfc3Vic3RyaW5nOworICAgICAgICAqc3Vic3RyaW5nID0gdG1wX3N1YnN0cmluZzsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KKyNlbHNlIC8qICFTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwogCi0jZW5kaWYgLyogU1RSSU5HTElCX0ZJTkRfSCAqLworLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2hldGhlciB0aGUKK2ZpcnN0IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgaW4gcmFuZ2UoMCwgMjU2KS4KKworSWYgdGhpcyBpcyB0aGUgY2FzZSwgd3JpdGVzIHRoZSBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBieXRlIHBhcmFtZXRlcgorYW5kIHNldHMgc3Vib2JqIHRvIE5VTEwuIE90aGVyd2lzZSwgc2V0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc3Vib2JqCithbmQgZG9lc24ndCB0b3VjaCBieXRlLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZgorc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKS4KKyovCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc19ieXRlKShjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLCBjaGFyICpieXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wX3N1Ym9iajsKKyAgICBQeV9zc2l6ZV90IGl2YWw7CisgICAgUHlPYmplY3QgKmVycjsKKworICAgIGlmKCFTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHRtcF9zdWJvYmopKSB7CisgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KHRtcF9zdWJvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgIGlmIChpdmFsID09IC0xKSB7CisgICAgICAgIGVyciA9IFB5RXJyX09jY3VycmVkKCk7CisgICAgICAgIGlmIChlcnIgJiYgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhlcnIsIFB5RXhjX092ZXJmbG93RXJyb3IpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKnN1Ym9iaiA9IE5VTEw7CisgICAgKmJ5dGUgPSAoY2hhcilpdmFsOworICAgIHJldHVybiAxOworfQorCisjZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjU1OWM4Ci0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKiBGaW5kaW5nIHRoZSBvcHRpbWFsIHdpZHRoIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpbiBhIGJ1ZmZlciAqLworCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKworLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCisgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLworI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQorIyBkZWZpbmUgVUNTMV9BU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MDgwODA4MDgwVUwKKyNlbGlmIChTSVpFT0ZfTE9ORyA9PSA0KQorIyBkZWZpbmUgVUNTMV9BU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MFVMCisjZWxzZQorIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQorI2VuZGlmCisKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK1NUUklOR0xJQihmaW5kX21heF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiAqYmVnaW4sIGNvbnN0IFNUUklOR0xJQl9DSEFSICplbmQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIGJlZ2luOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFsaWduZWRfZW5kID0KKyAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopIF9QeV9BTElHTl9ET1dOKGVuZCwgU0laRU9GX0xPTkcpOworCisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHAsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgICAgICByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpfcCA9IHA7CisgICAgICAgICAgICB3aGlsZSAoX3AgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYgVUNTMV9BU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyNTU7CisgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwID0gX3A7CisgICAgICAgICAgICBpZiAocCA9PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpwKysgJiAweDgwKQorICAgICAgICAgICAgcmV0dXJuIDI1NTsKKyAgICB9CisgICAgcmV0dXJuIDEyNzsKK30KKworI3VuZGVmIEFTQ0lJX0NIQVJfTUFTSworCisjZWxzZSAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMSAqLworCisjZGVmaW5lIE1BU0tfQVNDSUkgMHhGRkZGRkY4MAorI2RlZmluZSBNQVNLX1VDUzEgMHhGRkZGRkYwMAorI2RlZmluZSBNQVNLX1VDUzIgMHhGRkZGMDAwMAorCisjZGVmaW5lIE1BWF9DSEFSX0FTQ0lJIDB4N2YKKyNkZWZpbmUgTUFYX0NIQVJfVUNTMSAgMHhmZgorI2RlZmluZSBNQVhfQ0hBUl9VQ1MyICAweGZmZmYKKyNkZWZpbmUgTUFYX0NIQVJfVUNTNCAgMHgxMGZmZmYKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIoZmluZF9tYXhfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIgKmJlZ2luLCBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kKQoreworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisgICAgY29uc3QgUHlfVUNTNCBtYXNrX2xpbWl0ID0gTUFTS19VQ1MxOworICAgIGNvbnN0IFB5X1VDUzQgbWF4X2NoYXJfbGltaXQgPSBNQVhfQ0hBUl9VQ1MyOworI2VsaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDQKKyAgICBjb25zdCBQeV9VQ1M0IG1hc2tfbGltaXQgPSBNQVNLX1VDUzI7CisgICAgY29uc3QgUHlfVUNTNCBtYXhfY2hhcl9saW1pdCA9IE1BWF9DSEFSX1VDUzQ7CisjZWxzZQorI2Vycm9yIEludmFsaWQgU1RSSU5HTElCX1NJWkVPRl9DSEFSIChtdXN0IGJlIDEsIDIgb3IgNCkKKyNlbmRpZgorICAgIHJlZ2lzdGVyIFB5X1VDUzQgbWFzazsKKyAgICBQeV9zc2l6ZV90IG4gPSBlbmQgLSBiZWdpbjsKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcCA9IGJlZ2luOworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICp1bnJvbGxlZF9lbmQgPSBiZWdpbiArIF9QeV9TSVpFX1JPVU5EX0RPV04obiwgNCk7CisgICAgUHlfVUNTNCBtYXhfY2hhcjsKKworICAgIG1heF9jaGFyID0gTUFYX0NIQVJfQVNDSUk7CisgICAgbWFzayA9IE1BU0tfQVNDSUk7CisgICAgd2hpbGUgKHAgPCB1bnJvbGxlZF9lbmQpIHsKKyAgICAgICAgU1RSSU5HTElCX0NIQVIgYml0cyA9IHBbMF0gfCBwWzFdIHwgcFsyXSB8IHBbM107CisgICAgICAgIGlmIChiaXRzICYgbWFzaykgeworICAgICAgICAgICAgaWYgKG1hc2sgPT0gbWFza19saW1pdCkgeworICAgICAgICAgICAgICAgIC8qIExpbWl0IHJlYWNoZWQgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gbWF4X2NoYXJfbGltaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWFzayA9PSBNQVNLX0FTQ0lJKSB7CisgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBNQVhfQ0hBUl9VQ1MxOworICAgICAgICAgICAgICAgIG1hc2sgPSBNQVNLX1VDUzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBtYXNrIGNhbid0IGJlIE1BU0tfVUNTMiBiZWNhdXNlIG9mIG1hc2tfbGltaXQgYWJvdmUgKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQobWFzayA9PSBNQVNLX1VDUzEpOworICAgICAgICAgICAgICAgIG1heF9jaGFyID0gTUFYX0NIQVJfVUNTMjsKKyAgICAgICAgICAgICAgICBtYXNrID0gTUFTS19VQ1MyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogV2UgY2hlY2sgdGhlIG5ldyBtYXNrIG9uIHRoZSBzYW1lIGNoYXJzIGluIHRoZSBuZXh0IGl0ZXJhdGlvbiAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgcCArPSA0OworICAgIH0KKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICBpZiAocFswXSAmIG1hc2spIHsKKyAgICAgICAgICAgIGlmIChtYXNrID09IG1hc2tfbGltaXQpIHsKKyAgICAgICAgICAgICAgICAvKiBMaW1pdCByZWFjaGVkICovCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heF9jaGFyX2xpbWl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1hc2sgPT0gTUFTS19BU0NJSSkgeworICAgICAgICAgICAgICAgIG1heF9jaGFyID0gTUFYX0NIQVJfVUNTMTsKKyAgICAgICAgICAgICAgICBtYXNrID0gTUFTS19VQ1MxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbWFzayBjYW4ndCBiZSBNQVNLX1VDUzIgYmVjYXVzZSBvZiBtYXNrX2xpbWl0IGFib3ZlICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KG1hc2sgPT0gTUFTS19VQ1MxKTsKKyAgICAgICAgICAgICAgICBtYXhfY2hhciA9IE1BWF9DSEFSX1VDUzI7CisgICAgICAgICAgICAgICAgbWFzayA9IE1BU0tfVUNTMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFdlIGNoZWNrIHRoZSBuZXcgbWFzayBvbiB0aGUgc2FtZSBjaGFycyBpbiB0aGUgbmV4dCBpdGVyYXRpb24gKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHArKzsKKyAgICB9CisgICAgcmV0dXJuIG1heF9jaGFyOworfQorCisjdW5kZWYgTUFTS19BU0NJSQorI3VuZGVmIE1BU0tfVUNTMQorI3VuZGVmIE1BU0tfVUNTMgorI3VuZGVmIE1BWF9DSEFSX0FTQ0lJCisjdW5kZWYgTUFYX0NIQVJfVUNTMQorI3VuZGVmIE1BWF9DSEFSX1VDUzIKKyN1bmRlZiBNQVhfQ0hBUl9VQ1M0CisKKyNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMSAqLworI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZGM2MmQuLjAwMDAwMDAKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTE4ICswLDAgQEAKLS8qIGltcGxlbWVudHMgdGhlIHN0cmluZywgbG9uZywgYW5kIGZsb2F0IGZvcm1hdHRlcnMuICB0aGF0IGlzLAotICAgc3RyaW5nLl9fZm9ybWF0X18sIGV0Yy4gKi8KLQotI2luY2x1ZGUgPGxvY2FsZS5oPgotCi0vKiBCZWZvcmUgaW5jbHVkaW5nIHRoaXMsIHlvdSBtdXN0IGluY2x1ZGUgZWl0aGVyOgotICAgc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKLSAgIHN0cmluZ2xpYi9zdHJpbmdkZWZzLmgKLQotICAgQWxzbywgeW91IHNob3VsZCBkZWZpbmUgdGhlIG5hbWVzOgotICAgRk9STUFUX1NUUklORwotICAgRk9STUFUX0xPTkcKLSAgIEZPUk1BVF9GTE9BVAotICAgRk9STUFUX0NPTVBMRVgKLSAgIHRvIGJlIHdoYXRldmVyIHlvdSB3YW50IHRoZSBwdWJsaWMgbmFtZXMgb2YgdGhlc2UgZnVuY3Rpb25zIHRvCi0gICBiZS4gIFRoZXNlIGFyZSB0aGUgb25seSBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIGhlcmUuCi0qLwotCi0vKiBSYWlzZXMgYW4gZXhjZXB0aW9uIGFib3V0IGFuIHVua25vd24gcHJlc2VudGF0aW9uIHR5cGUgZm9yIHRoaXMKLSAqIHR5cGUuICovCi0KLXN0YXRpYyB2b2lkCi11bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKFNUUklOR0xJQl9DSEFSIHByZXNlbnRhdGlvbl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX25hbWUpCi17Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICAvKiBJZiBTVFJJTkdMSUJfQ0hBUiBpcyBQeV9VTklDT0RFLCAlYyBtaWdodCBiZSBvdXQtb2YtcmFuZ2UsCi0gICAgICAgaGVuY2UgdGhlIHR3byBjYXNlcy4gSWYgaXQgaXMgY2hhciwgZ2NjIGNvbXBsYWlucyB0aGF0IHRoZQotICAgICAgIGNvbmRpdGlvbiBiZWxvdyBpcyBhbHdheXMgdHJ1ZSwgaGVuY2UgdGhlIGlmZGVmLiAqLwotICAgIGlmIChwcmVzZW50YXRpb25fdHlwZSA+IDMyICYmIHByZXNlbnRhdGlvbl90eXBlIDwgMTI4KQotI2VuZGlmCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJyVjJyAiCi0gICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKLSAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lKTsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmb3JtYXQgY29kZSAnXFx4JXgnICIKLSAgICAgICAgICAgICAgICAgICAgICJmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcyciLAotICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZvaWQKLWludmFsaWRfY29tbWFfdHlwZShTVFJJTkdMSUJfQ0hBUiBwcmVzZW50YXRpb25fdHlwZSkKLXsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIC8qIFNlZSBjb21tZW50IGluIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUgKi8KLSAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKLSNlbmRpZgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnJWMnLiIsCi0gICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSk7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICdcXHgleCcuIiwKLSAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUpOwotI2VuZGlmCi19Ci0KLS8qCi0gICAgZ2V0X2ludGVnZXIgY29uc3VtZXMgMCBvciBtb3JlIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBmcm9tIGFuCi0gICAgaW5wdXQgc3RyaW5nLCB1cGRhdGVzICpyZXN1bHQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGl2ZQotICAgIGludGVnZXIsIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlnaXRzIGNvbnN1bWVkLgotCi0gICAgcmV0dXJucyAtMSBvbiBlcnJvci4KLSovCi1zdGF0aWMgaW50Ci1nZXRfaW50ZWdlcihTVFJJTkdMSUJfQ0hBUiAqKnB0ciwgU1RSSU5HTElCX0NIQVIgKmVuZCwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnJlc3VsdCkKLXsKLSAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbCwgb2xkYWNjdW11bGF0b3I7Ci0gICAgaW50IG51bWRpZ2l0czsKLSAgICBhY2N1bXVsYXRvciA9IG51bWRpZ2l0cyA9IDA7Ci0gICAgZm9yICg7OygqcHRyKSsrLCBudW1kaWdpdHMrKykgewotICAgICAgICBpZiAoKnB0ciA+PSBlbmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlnaXR2YWwgPSBTVFJJTkdMSUJfVE9ERUNJTUFMKCoqcHRyKTsKLSAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvKgotICAgICAgICAgICBUaGlzIHRyaWNrIHdhcyBjb3BpZWQgZnJvbSBvbGQgVW5pY29kZSBmb3JtYXQgY29kZS4gIEl0J3MgY3V0ZSwKLSAgICAgICAgICAgYnV0IHdvdWxkIHJlYWxseSBzdWNrIG9uIGFuIG9sZCBtYWNoaW5lIHdpdGggYSBzbG93IGRpdmlkZQotICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4gIEZvcnR1bmF0ZWx5LCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2UgZG8gbm90Ci0gICAgICAgICAgIGV4cGVjdCB0b28gbWFueSBkaWdpdHMuCi0gICAgICAgICovCi0gICAgICAgIG9sZGFjY3VtdWxhdG9yID0gYWNjdW11bGF0b3I7Ci0gICAgICAgIGFjY3VtdWxhdG9yICo9IDEwOwotICAgICAgICBpZiAoKGFjY3VtdWxhdG9yKzEwKS8xMCAhPSBvbGRhY2N1bXVsYXRvcisxKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZGVjaW1hbCBkaWdpdHMgaW4gZm9ybWF0IHN0cmluZyIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGFjY3VtdWxhdG9yICs9IGRpZ2l0dmFsOwotICAgIH0KLSAgICAqcmVzdWx0ID0gYWNjdW11bGF0b3I7Ci0gICAgcmV0dXJuIG51bWRpZ2l0czsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyIHBhcnNpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiByZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBzcGVjaWZpZXIgYWxpZ25tZW50IHRva2VuICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQotaXNfYWxpZ25tZW50X3Rva2VuKFNUUklOR0xJQl9DSEFSIGMpCi17Ci0gICAgc3dpdGNoIChjKSB7Ci0gICAgY2FzZSAnPCc6IGNhc2UgJz4nOiBjYXNlICc9JzogY2FzZSAnXic6Ci0gICAgICAgIHJldHVybiAxOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotLyogcmV0dXJucyB0cnVlIGlmIHRoaXMgY2hhcmFjdGVyIGlzIGEgc2lnbiBlbGVtZW50ICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQotaXNfc2lnbl9lbGVtZW50KFNUUklOR0xJQl9DSEFSIGMpCi17Ci0gICAgc3dpdGNoIChjKSB7Ci0gICAgY2FzZSAnICc6IGNhc2UgJysnOiBjYXNlICctJzoKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBTVFJJTkdMSUJfQ0hBUiBmaWxsX2NoYXI7Ci0gICAgU1RSSU5HTElCX0NIQVIgYWxpZ247Ci0gICAgaW50IGFsdGVybmF0ZTsKLSAgICBTVFJJTkdMSUJfQ0hBUiBzaWduOwotICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgaW50IHRob3VzYW5kc19zZXBhcmF0b3JzOwotICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uOwotICAgIFNUUklOR0xJQl9DSEFSIHR5cGU7Ci19IEludGVybmFsRm9ybWF0U3BlYzsKLQotCi0jaWYgMAotLyogT2NjYXNzaW9uYWxseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gU2hvdWxkIG5vcm1hbGx5IGJlIGNvbW1lbnRlZCBvdXQuICovCi1zdGF0aWMgdm9pZAotREVCVUdfUFJJTlRfRk9STUFUX1NQRUMoSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCi17Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogZmlsbF9jaGFyICVkXG4iLCBmb3JtYXQtPmZpbGxfY2hhcik7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogYWxpZ24gJWRcbiIsIGZvcm1hdC0+YWxpZ24pOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGFsdGVybmF0ZSAlZFxuIiwgZm9ybWF0LT5hbHRlcm5hdGUpOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHNpZ24gJWRcbiIsIGZvcm1hdC0+c2lnbik7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogd2lkdGggJXpkXG4iLCBmb3JtYXQtPndpZHRoKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB0aG91c2FuZHNfc2VwYXJhdG9ycyAlZFxuIiwKLSAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyk7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogcHJlY2lzaW9uICV6ZFxuIiwgZm9ybWF0LT5wcmVjaXNpb24pOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHR5cGUgJWNcbiIsIGZvcm1hdC0+dHlwZSk7Ci0gICAgcHJpbnRmKCJcbiIpOwotfQotI2VuZGlmCi0KLQotLyoKLSAgcHRyIHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIGZvcm1hdF9zcGVjLCBlbmQgcG9pbnRzIGp1c3QgcGFzdCBpdHMgZW5kLgotICBmaWxscyBpbiBmb3JtYXQgd2l0aCB0aGUgcGFyc2VkIGluZm9ybWF0aW9uLgotICByZXR1cm5zIDEgb24gc3VjY2VzcywgMCBvbiBmYWlsdXJlLgotICBpZiBmYWlsdXJlLCBzZXRzIHRoZSBleGNlcHRpb24KLSovCi1zdGF0aWMgaW50Ci1wYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF9hbGlnbikKLXsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcHRyID0gZm9ybWF0X3NwZWM7Ci0gICAgU1RSSU5HTElCX0NIQVIgKmVuZCA9IGZvcm1hdF9zcGVjICsgZm9ybWF0X3NwZWNfbGVuOwotCi0gICAgLyogZW5kLXB0ciBpcyB1c2VkIHRocm91Z2hvdXQgdGhpcyBjb2RlIHRvIHNwZWNpZnkgdGhlIGxlbmd0aCBvZgotICAgICAgIHRoZSBpbnB1dCBzdHJpbmcgKi8KLQotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgaW50IGFsaWduX3NwZWNpZmllZCA9IDA7Ci0KLSAgICBmb3JtYXQtPmZpbGxfY2hhciA9ICdcMCc7Ci0gICAgZm9ybWF0LT5hbGlnbiA9IGRlZmF1bHRfYWxpZ247Ci0gICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAwOwotICAgIGZvcm1hdC0+c2lnbiA9ICdcMCc7Ci0gICAgZm9ybWF0LT53aWR0aCA9IC0xOwotICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAwOwotICAgIGZvcm1hdC0+cHJlY2lzaW9uID0gLTE7Ci0gICAgZm9ybWF0LT50eXBlID0gZGVmYXVsdF90eXBlOwotCi0gICAgLyogSWYgdGhlIHNlY29uZCBjaGFyIGlzIGFuIGFsaWdubWVudCB0b2tlbiwKLSAgICAgICB0aGVuIHBhcnNlIHRoZSBmaWxsIGNoYXIgKi8KLSAgICBpZiAoZW5kLXB0ciA+PSAyICYmIGlzX2FsaWdubWVudF90b2tlbihwdHJbMV0pKSB7Ci0gICAgICAgIGZvcm1hdC0+YWxpZ24gPSBwdHJbMV07Ci0gICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gcHRyWzBdOwotICAgICAgICBhbGlnbl9zcGVjaWZpZWQgPSAxOwotICAgICAgICBwdHIgKz0gMjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZW5kLXB0ciA+PSAxICYmIGlzX2FsaWdubWVudF90b2tlbihwdHJbMF0pKSB7Ci0gICAgICAgIGZvcm1hdC0+YWxpZ24gPSBwdHJbMF07Ci0gICAgICAgIGFsaWduX3NwZWNpZmllZCA9IDE7Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8qIFBhcnNlIHRoZSB2YXJpb3VzIHNpZ24gb3B0aW9ucyAqLwotICAgIGlmIChlbmQtcHRyID49IDEgJiYgaXNfc2lnbl9lbGVtZW50KHB0clswXSkpIHsKLSAgICAgICAgZm9ybWF0LT5zaWduID0gcHRyWzBdOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBJZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgIywgd2UncmUgaW4gYWx0ZXJuYXRlIG1vZGUuICBUaGlzIG9ubHkKLSAgICAgICBhcHBsaWVzIHRvIGludGVnZXJzLiAqLwotICAgIGlmIChlbmQtcHRyID49IDEgJiYgcHRyWzBdID09ICcjJykgewotICAgICAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDE7Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8qIFRoZSBzcGVjaWFsIGNhc2UgZm9yIDAtcGFkZGluZyAoYmFja3dhcmRzIGNvbXBhdCkgKi8KLSAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyAmJiBlbmQtcHRyID49IDEgJiYgcHRyWzBdID09ICcwJykgewotICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9ICcwJzsKLSAgICAgICAgaWYgKCFhbGlnbl9zcGVjaWZpZWQpIHsKLSAgICAgICAgICAgIGZvcm1hdC0+YWxpZ24gPSAnPSc7Ci0gICAgICAgIH0KLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgY29uc3VtZWQgPSBnZXRfaW50ZWdlcigmcHRyLCBlbmQsICZmb3JtYXQtPndpZHRoKTsKLSAgICBpZiAoY29uc3VtZWQgPT0gLTEpCi0gICAgICAgIC8qIE92ZXJmbG93IGVycm9yLiBFeGNlcHRpb24gYWxyZWFkeSBzZXQuICovCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLyogSWYgY29uc3VtZWQgaXMgMCwgd2UgZGlkbid0IGNvbnN1bWUgYW55IGNoYXJhY3RlcnMgZm9yIHRoZQotICAgICAgIHdpZHRoLiBJbiB0aGF0IGNhc2UsIHJlc2V0IHRoZSB3aWR0aCB0byAtMSwgYmVjYXVzZQotICAgICAgIGdldF9pbnRlZ2VyKCkgd2lsbCBoYXZlIHNldCBpdCB0byB6ZXJvLiAtMSBpcyBob3cgd2UgcmVjb3JkCi0gICAgICAgdGhhdCB0aGUgd2lkdGggd2Fzbid0IHNwZWNpZmllZC4gKi8KLSAgICBpZiAoY29uc3VtZWQgPT0gMCkKLSAgICAgICAgZm9ybWF0LT53aWR0aCA9IC0xOwotCi0gICAgLyogQ29tbWEgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLwotICAgIGlmIChlbmQtcHRyICYmIHB0clswXSA9PSAnLCcpIHsKLSAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDE7Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8qIFBhcnNlIGZpZWxkIHByZWNpc2lvbiAqLwotICAgIGlmIChlbmQtcHRyICYmIHB0clswXSA9PSAnLicpIHsKLSAgICAgICAgKytwdHI7Ci0KLSAgICAgICAgY29uc3VtZWQgPSBnZXRfaW50ZWdlcigmcHRyLCBlbmQsICZmb3JtYXQtPnByZWNpc2lvbik7Ci0gICAgICAgIGlmIChjb25zdW1lZCA9PSAtMSkKLSAgICAgICAgICAgIC8qIE92ZXJmbG93IGVycm9yLiBFeGNlcHRpb24gYWxyZWFkeSBzZXQuICovCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICAvKiBOb3QgaGF2aW5nIGEgcHJlY2lzaW9uIGFmdGVyIGEgZG90IGlzIGFuIGVycm9yLiAqLwotICAgICAgICBpZiAoY29uc3VtZWQgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZvcm1hdCBzcGVjaWZpZXIgbWlzc2luZyBwcmVjaXNpb24iKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICB9Ci0KLSAgICAvKiBGaW5hbGx5LCBwYXJzZSB0aGUgdHlwZSBmaWVsZC4gKi8KLQotICAgIGlmIChlbmQtcHRyID4gMSkgewotICAgICAgICAvKiBNb3JlIHRoYW4gb25lIGNoYXIgcmVtYWluLCBpbnZhbGlkIGNvbnZlcnNpb24gc3BlYy4gKi8KLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbiIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoZW5kLXB0ciA9PSAxKSB7Ci0gICAgICAgIGZvcm1hdC0+dHlwZSA9IHB0clswXTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogRG8gYXMgbXVjaCB2YWxpZGF0aW5nIGFzIHdlIGNhbiwganVzdCBieSBsb29raW5nIGF0IHRoZSBmb3JtYXQKLSAgICAgICBzcGVjaWZpZXIuICBEbyBub3QgdGFrZSBpbnRvIGFjY291bnQgd2hhdCB0eXBlIG9mIGZvcm1hdHRpbmcKLSAgICAgICB3ZSdyZSBkb2luZyAoaW50LCBmbG9hdCwgc3RyaW5nKS4gKi8KLQotICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzKSB7Ci0gICAgICAgIHN3aXRjaCAoZm9ybWF0LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgJ2QnOgotICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgY2FzZSAnZic6Ci0gICAgICAgIGNhc2UgJ2cnOgotICAgICAgICBjYXNlICdFJzoKLSAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgIGNhc2UgJyUnOgotICAgICAgICBjYXNlICdGJzoKLSAgICAgICAgY2FzZSAnXDAnOgotICAgICAgICAgICAgLyogVGhlc2UgYXJlIGFsbG93ZWQuIFNlZSBQRVAgMzc4LiovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGludmFsaWRfY29tbWFfdHlwZShmb3JtYXQtPnR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gMTsKLX0KLQotLyogQ2FsY3VsYXRlIHRoZSBwYWRkaW5nIG5lZWRlZC4gKi8KLXN0YXRpYyB2b2lkCi1jYWxjX3BhZGRpbmcoUHlfc3NpemVfdCBuY2hhcnMsIFB5X3NzaXplX3Qgd2lkdGgsIFNUUklOR0xJQl9DSEFSIGFsaWduLAotICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fbHBhZGRpbmcsIFB5X3NzaXplX3QgKm5fcnBhZGRpbmcsCi0gICAgICAgICAgICAgUHlfc3NpemVfdCAqbl90b3RhbCkKLXsKLSAgICBpZiAod2lkdGggPj0gMCkgewotICAgICAgICBpZiAobmNoYXJzID4gd2lkdGgpCi0gICAgICAgICAgICAqbl90b3RhbCA9IG5jaGFyczsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKm5fdG90YWwgPSB3aWR0aDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIG5vdCBzcGVjaWZpZWQsIHVzZSBhbGwgb2YgdGhlIGNoYXJzIGFuZCBubyBtb3JlICovCi0gICAgICAgICpuX3RvdGFsID0gbmNoYXJzOwotICAgIH0KLQotICAgIC8qIEZpZ3VyZSBvdXQgaG93IG11Y2ggbGVhZGluZyBzcGFjZSB3ZSBuZWVkLCBiYXNlZCBvbiB0aGUKLSAgICAgICBhbGlnbmluZyAqLwotICAgIGlmIChhbGlnbiA9PSAnPicpCi0gICAgICAgICpuX2xwYWRkaW5nID0gKm5fdG90YWwgLSBuY2hhcnM7Ci0gICAgZWxzZSBpZiAoYWxpZ24gPT0gJ14nKQotICAgICAgICAqbl9scGFkZGluZyA9ICgqbl90b3RhbCAtIG5jaGFycykgLyAyOwotICAgIGVsc2UgaWYgKGFsaWduID09ICc8JyB8fCBhbGlnbiA9PSAnPScpCi0gICAgICAgICpuX2xwYWRkaW5nID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgLyogV2Ugc2hvdWxkIG5ldmVyIGhhdmUgYW4gdW5zcGVjaWZpZWQgYWxpZ25tZW50LiAqLwotICAgICAgICAqbl9scGFkZGluZyA9IDA7Ci0gICAgICAgIGFzc2VydCgwKTsKLSAgICB9Ci0KLSAgICAqbl9ycGFkZGluZyA9ICpuX3RvdGFsIC0gbmNoYXJzIC0gKm5fbHBhZGRpbmc7Ci19Ci0KLS8qIERvIHRoZSBwYWRkaW5nLCBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgY2FsbGVyLXN1cHBsaWVkCi0gICBjb250ZW50IGdvZXMuICovCi1zdGF0aWMgU1RSSU5HTElCX0NIQVIgKgotZmlsbF9wYWRkaW5nKFNUUklOR0xJQl9DSEFSICpwLCBQeV9zc2l6ZV90IG5jaGFycywgU1RSSU5HTElCX0NIQVIgZmlsbF9jaGFyLAotICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9scGFkZGluZywgUHlfc3NpemVfdCBuX3JwYWRkaW5nKQotewotICAgIC8qIFBhZCBvbiBsZWZ0LiAqLwotICAgIGlmIChuX2xwYWRkaW5nKQotICAgICAgICBTVFJJTkdMSUJfRklMTChwLCBmaWxsX2NoYXIsIG5fbHBhZGRpbmcpOwotCi0gICAgLyogUGFkIG9uIHJpZ2h0LiAqLwotICAgIGlmIChuX3JwYWRkaW5nKQotICAgICAgICBTVFJJTkdMSUJfRklMTChwICsgbmNoYXJzICsgbl9scGFkZGluZywgZmlsbF9jaGFyLCBuX3JwYWRkaW5nKTsKLQotICAgIC8qIFBvaW50ZXIgdG8gdGhlIHVzZXIgY29udGVudC4gKi8KLSAgICByZXR1cm4gcCArIG5fbHBhZGRpbmc7Ci19Ci0KLSNpZiBkZWZpbmVkIEZPUk1BVF9GTE9BVCB8fCBkZWZpbmVkIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0NPTVBMRVgKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogY29tbW9uIHJvdXRpbmVzIGZvciBudW1lcmljIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogTG9jYWxlIHR5cGUgY29kZXMuICovCi0jZGVmaW5lIExUX0NVUlJFTlRfTE9DQUxFIDAKLSNkZWZpbmUgTFRfREVGQVVMVF9MT0NBTEUgMQotI2RlZmluZSBMVF9OT19MT0NBTEUgMgotCi0vKiBMb2NhbGUgaW5mbyBuZWVkZWQgZm9yIGZvcm1hdHRpbmcgaW50ZWdlcnMgYW5kIHRoZSBwYXJ0IG9mIGZsb2F0cwotICAgYmVmb3JlIGFuZCBpbmNsdWRpbmcgdGhlIGRlY2ltYWwuIE5vdGUgdGhhdCBsb2NhbGVzIG9ubHkgc3VwcG9ydAotICAgOC1iaXQgY2hhcnMsIG5vdCB1bmljb2RlLiAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGNoYXIgKmRlY2ltYWxfcG9pbnQ7Ci0gICAgY2hhciAqdGhvdXNhbmRzX3NlcDsKLSAgICBjaGFyICpncm91cGluZzsKLX0gTG9jYWxlSW5mbzsKLQotLyogZGVzY3JpYmVzIHRoZSBsYXlvdXQgZm9yIGFuIGludGVnZXIsIHNlZSB0aGUgY29tbWVudCBpbgotICAgY2FsY19udW1iZXJfd2lkdGhzKCkgZm9yIGRldGFpbHMgKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeV9zc2l6ZV90IG5fbHBhZGRpbmc7Ci0gICAgUHlfc3NpemVfdCBuX3ByZWZpeDsKLSAgICBQeV9zc2l6ZV90IG5fc3BhZGRpbmc7Ci0gICAgUHlfc3NpemVfdCBuX3JwYWRkaW5nOwotICAgIGNoYXIgc2lnbjsKLSAgICBQeV9zc2l6ZV90IG5fc2lnbjsgICAgICAvKiBudW1iZXIgb2YgZGlnaXRzIG5lZWRlZCBmb3Igc2lnbiAoMC8xKSAqLwotICAgIFB5X3NzaXplX3Qgbl9ncm91cGVkX2RpZ2l0czsgLyogU3BhY2UgdGFrZW4gdXAgYnkgdGhlIGRpZ2l0cywgaW5jbHVkaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgZ3JvdXBpbmcgY2hhcnMuICovCi0gICAgUHlfc3NpemVfdCBuX2RlY2ltYWw7ICAgLyogMCBpZiBvbmx5IGFuIGludGVnZXIgKi8KLSAgICBQeV9zc2l6ZV90IG5fcmVtYWluZGVyOyAvKiBEaWdpdHMgaW4gZGVjaW1hbCBhbmQvb3IgZXhwb25lbnQgcGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRpbmcgdGhlIGRlY2ltYWwgaXRzZWxmLCBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQuICovCi0KLSAgICAvKiBUaGVzZSAyIGFyZSBub3QgdGhlIHdpZHRocyBvZiBmaWVsZHMsIGJ1dCBhcmUgbmVlZGVkIGJ5Ci0gICAgICAgU1RSSU5HTElCX0dST1VQSU5HLiAqLwotICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7ICAgIC8qIFRoZSBudW1iZXIgb2YgZGlnaXRzIGJlZm9yZSBhIGRlY2ltYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBleHBvbmVudC4gKi8KLSAgICBQeV9zc2l6ZV90IG5fbWluX3dpZHRoOyAvKiBUaGUgbWluX3dpZHRoIHdlIHVzZWQgd2hlbiB3ZSBjb21wdXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuX2dyb3VwZWRfZGlnaXRzIHdpZHRoLiAqLwotfSBOdW1iZXJGaWVsZFdpZHRoczsKLQotCi0vKiBHaXZlbiBhIG51bWJlciBvZiB0aGUgZm9ybToKLSAgIGRpZ2l0c1tyZW1haW5kZXJdCi0gICB3aGVyZSBwdHIgcG9pbnRzIHRvIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyB0byB0aGUgZW5kLCBmaW5kIHdoZXJlCi0gICAgdGhlIGludGVnZXIgcGFydCBlbmRzLiBUaGlzIGNvdWxkIGJlIGEgZGVjaW1hbCwgYW4gZXhwb25lbnQsIGJvdGgsCi0gICAgb3IgbmVpdGhlci4KLSAgIElmIGEgZGVjaW1hbCBwb2ludCBpcyBwcmVzZW50LCBzZXQgKmhhc19kZWNpbWFsIGFuZCBpbmNyZW1lbnQKLSAgICByZW1haW5kZXIgYmV5b25kIGl0LgotICAgUmVzdWx0cyBhcmUgdW5kZWZpbmVkIChidXQgc2hvdWxkbid0IGNyYXNoKSBmb3IgaW1wcm9wZXJseQotICAgIGZvcm1hdHRlZCBzdHJpbmdzLgotKi8KLXN0YXRpYyB2b2lkCi1wYXJzZV9udW1iZXIoU1RSSU5HTElCX0NIQVIgKnB0ciwgUHlfc3NpemVfdCBsZW4sCi0gICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9yZW1haW5kZXIsIGludCAqaGFzX2RlY2ltYWwpCi17Ci0gICAgU1RSSU5HTElCX0NIQVIgKmVuZCA9IHB0ciArIGxlbjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcmVtYWluZGVyOwotCi0gICAgd2hpbGUgKHB0cjxlbmQgJiYgaXNkaWdpdCgqcHRyKSkKLSAgICAgICAgKytwdHI7Ci0gICAgcmVtYWluZGVyID0gcHRyOwotCi0gICAgLyogRG9lcyByZW1haW5kZXIgc3RhcnQgd2l0aCBhIGRlY2ltYWwgcG9pbnQ/ICovCi0gICAgKmhhc19kZWNpbWFsID0gcHRyPGVuZCAmJiAqcmVtYWluZGVyID09ICcuJzsKLQotICAgIC8qIFNraXAgdGhlIGRlY2ltYWwgcG9pbnQuICovCi0gICAgaWYgKCpoYXNfZGVjaW1hbCkKLSAgICAgICAgcmVtYWluZGVyKys7Ci0KLSAgICAqbl9yZW1haW5kZXIgPSBlbmQgLSByZW1haW5kZXI7Ci19Ci0KLS8qIG5vdCBhbGwgZmllbGRzIG9mIGZvcm1hdCBhcmUgdXNlZC4gIGZvciBleGFtcGxlLCBwcmVjaXNpb24gaXMKLSAgIHVudXNlZC4gIHNob3VsZCB0aGlzIHRha2UgZGlzY3JldGUgcGFyYW1zIGluIG9yZGVyIHRvIGJlIG1vcmUgY2xlYXIKLSAgIGFib3V0IHdoYXQgaXQgZG9lcz8gIG9yIGlzIHBhc3NpbmcgYSBzaW5nbGUgZm9ybWF0IHBhcmFtZXRlciBlYXNpZXIKLSAgIGFuZCBtb3JlIGVmZmljaWVudCBlbm91Z2ggdG8ganVzdGlmeSBhIGxpdHRsZSBvYmZ1c2NhdGlvbj8gKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jYWxjX251bWJlcl93aWR0aHMoTnVtYmVyRmllbGRXaWR0aHMgKnNwZWMsIFB5X3NzaXplX3Qgbl9wcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgc2lnbl9jaGFyLCBTVFJJTkdMSUJfQ0hBUiAqbnVtYmVyLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9udW1iZXIsIFB5X3NzaXplX3Qgbl9yZW1haW5kZXIsCi0gICAgICAgICAgICAgICAgICAgaW50IGhhc19kZWNpbWFsLCBjb25zdCBMb2NhbGVJbmZvICpsb2NhbGUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCi17Ci0gICAgUHlfc3NpemVfdCBuX25vbl9kaWdpdF9ub25fcGFkZGluZzsKLSAgICBQeV9zc2l6ZV90IG5fcGFkZGluZzsKLQotICAgIHNwZWMtPm5fZGlnaXRzID0gbl9udW1iZXIgLSBuX3JlbWFpbmRlciAtIChoYXNfZGVjaW1hbD8xOjApOwotICAgIHNwZWMtPm5fbHBhZGRpbmcgPSAwOwotICAgIHNwZWMtPm5fcHJlZml4ID0gbl9wcmVmaXg7Ci0gICAgc3BlYy0+bl9kZWNpbWFsID0gaGFzX2RlY2ltYWwgPyBzdHJsZW4obG9jYWxlLT5kZWNpbWFsX3BvaW50KSA6IDA7Ci0gICAgc3BlYy0+bl9yZW1haW5kZXIgPSBuX3JlbWFpbmRlcjsKLSAgICBzcGVjLT5uX3NwYWRkaW5nID0gMDsKLSAgICBzcGVjLT5uX3JwYWRkaW5nID0gMDsKLSAgICBzcGVjLT5zaWduID0gJ1wwJzsKLSAgICBzcGVjLT5uX3NpZ24gPSAwOwotCi0gICAgLyogdGhlIG91dHB1dCB3aWxsIGxvb2sgbGlrZToKLSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgfCA8bHBhZGRpbmc+IDxzaWduPiA8cHJlZml4PiA8c3BhZGRpbmc+IDxncm91cGVkX2RpZ2l0cz4gPGRlY2ltYWw+IDxyZW1haW5kZXI+IDxycGFkZGluZz4gfAotICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQotICAgICAgIHNpZ24gaXMgY29tcHV0ZWQgZnJvbSBmb3JtYXQtPnNpZ24gYW5kIHRoZSBhY3R1YWwKLSAgICAgICBzaWduIG9mIHRoZSBudW1iZXIKLQotICAgICAgIHByZWZpeCBpcyBnaXZlbiAoaXQncyBmb3IgdGhlICcweCcgcHJlZml4KQotCi0gICAgICAgZGlnaXRzIGlzIGFscmVhZHkga25vd24KLQotICAgICAgIHRoZSB0b3RhbCB3aWR0aCBpcyBlaXRoZXIgZ2l2ZW4sIG9yIGNvbXB1dGVkIGZyb20gdGhlCi0gICAgICAgYWN0dWFsIGRpZ2l0cwotCi0gICAgICAgb25seSBvbmUgb2YgbHBhZGRpbmcsIHNwYWRkaW5nLCBhbmQgcnBhZGRpbmcgY2FuIGJlIG5vbi16ZXJvLAotICAgICAgIGFuZCBpdCdzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgd2lkdGggYW5kIG90aGVyIGZpZWxkcwotICAgICovCi0KLSAgICAvKiBjb21wdXRlIHRoZSB2YXJpb3VzIHBhcnRzIHdlJ3JlIGdvaW5nIHRvIHdyaXRlICovCi0gICAgc3dpdGNoIChmb3JtYXQtPnNpZ24pIHsKLSAgICBjYXNlICcrJzoKLSAgICAgICAgLyogYWx3YXlzIHB1dCBhICsgb3IgLSAqLwotICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOwotICAgICAgICBzcGVjLT5zaWduID0gKHNpZ25fY2hhciA9PSAnLScgPyAnLScgOiAnKycpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICcgJzoKLSAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKLSAgICAgICAgc3BlYy0+c2lnbiA9IChzaWduX2NoYXIgPT0gJy0nID8gJy0nIDogJyAnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogTm90IHNwZWNpZmllZCwgb3IgdGhlIGRlZmF1bHQgKC0pICovCi0gICAgICAgIGlmIChzaWduX2NoYXIgPT0gJy0nKSB7Ci0gICAgICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOwotICAgICAgICAgICAgc3BlYy0+c2lnbiA9ICctJzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIFRoZSBudW1iZXIgb2YgY2hhcnMgdXNlZCBmb3Igbm9uLWRpZ2l0cyBhbmQgbm9uLXBhZGRpbmcuICovCi0gICAgbl9ub25fZGlnaXRfbm9uX3BhZGRpbmcgPSBzcGVjLT5uX3NpZ24gKyBzcGVjLT5uX3ByZWZpeCArIHNwZWMtPm5fZGVjaW1hbCArCi0gICAgICAgIHNwZWMtPm5fcmVtYWluZGVyOwotCi0gICAgLyogbWluX3dpZHRoIGNhbiBnbyBuZWdhdGl2ZSwgdGhhdCdzIG9rYXkuIGZvcm1hdC0+d2lkdGggPT0gLTEgbWVhbnMKLSAgICAgICB3ZSBkb24ndCBjYXJlLiAqLwotICAgIGlmIChmb3JtYXQtPmZpbGxfY2hhciA9PSAnMCcgJiYgZm9ybWF0LT5hbGlnbiA9PSAnPScpCi0gICAgICAgIHNwZWMtPm5fbWluX3dpZHRoID0gZm9ybWF0LT53aWR0aCAtIG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nOwotICAgIGVsc2UKLSAgICAgICAgc3BlYy0+bl9taW5fd2lkdGggPSAwOwotCi0gICAgaWYgKHNwZWMtPm5fZGlnaXRzID09IDApCi0gICAgICAgIC8qIFRoaXMgY2FzZSBvbmx5IG9jY3VycyB3aGVuIHVzaW5nICdjJyBmb3JtYXR0aW5nLCB3ZSBuZWVkCi0gICAgICAgICAgIHRvIHNwZWNpYWwgY2FzZSBpdCBiZWNhdXNlIHRoZSBncm91cGluZyBjb2RlIGFsd2F5cyB3YW50cwotICAgICAgICAgICB0byBoYXZlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIuICovCi0gICAgICAgIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMgPSAwOwotICAgIGVsc2UKLSAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyA9IFNUUklOR0xJQl9HUk9VUElORyhOVUxMLCAwLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMtPm5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMtPm5fbWluX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS0+Z3JvdXBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLT50aG91c2FuZHNfc2VwKTsKLQotICAgIC8qIEdpdmVuIHRoZSBkZXNpcmVkIHdpZHRoIGFuZCB0aGUgdG90YWwgb2YgZGlnaXQgYW5kIG5vbi1kaWdpdAotICAgICAgIHNwYWNlIHdlIGNvbnN1bWUsIHNlZSBpZiB3ZSBuZWVkIGFueSBwYWRkaW5nLiBmb3JtYXQtPndpZHRoIGNhbgotICAgICAgIGJlIG5lZ2F0aXZlIChtZWFuaW5nIG5vIHBhZGRpbmcpLCBidXQgdGhpcyBjb2RlIHN0aWxsIHdvcmtzIGluCi0gICAgICAgdGhhdCBjYXNlLiAqLwotICAgIG5fcGFkZGluZyA9IGZvcm1hdC0+d2lkdGggLQotICAgICAgICAgICAgICAgICAgICAgICAgKG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nICsgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyk7Ci0gICAgaWYgKG5fcGFkZGluZyA+IDApIHsKLSAgICAgICAgLyogU29tZSBwYWRkaW5nIGlzIG5lZWRlZC4gRGV0ZXJtaW5lIGlmIGl0J3MgbGVmdCwgc3BhY2UsIG9yIHJpZ2h0LiAqLwotICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+YWxpZ24pIHsKLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAgICBzcGVjLT5uX3JwYWRkaW5nID0gbl9wYWRkaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ14nOgotICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZyAvIDI7Ci0gICAgICAgICAgICBzcGVjLT5uX3JwYWRkaW5nID0gbl9wYWRkaW5nIC0gc3BlYy0+bl9scGFkZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICc9JzoKLSAgICAgICAgICAgIHNwZWMtPm5fc3BhZGRpbmcgPSBuX3BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAvKiBTaG91bGRuJ3QgZ2V0IGhlcmUsIGJ1dCB0cmVhdCBpdCBhcyAnPicgKi8KLSAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmc7Ci0gICAgICAgICAgICBhc3NlcnQoMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc3BlYy0+bl9scGFkZGluZyArIHNwZWMtPm5fc2lnbiArIHNwZWMtPm5fcHJlZml4ICsKLSAgICAgICAgc3BlYy0+bl9zcGFkZGluZyArIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMgKyBzcGVjLT5uX2RlY2ltYWwgKwotICAgICAgICBzcGVjLT5uX3JlbWFpbmRlciArIHNwZWMtPm5fcnBhZGRpbmc7Ci19Ci0KLS8qIEZpbGwgaW4gdGhlIGRpZ2l0IHBhcnRzIG9mIGEgbnVtYmVycydzIHN0cmluZyByZXByZXNlbnRhdGlvbiwKLSAgIGFzIGRldGVybWluZWQgaW4gY2FsY19udW1iZXJfd2lkdGhzKCkuCi0gICBObyBlcnJvciBjaGVja2luZywgc2luY2Ugd2Uga25vdyB0aGUgYnVmZmVyIGlzIHRoZSBjb3JyZWN0IHNpemUuICovCi1zdGF0aWMgdm9pZAotZmlsbF9udW1iZXIoU1RSSU5HTElCX0NIQVIgKmJ1ZiwgY29uc3QgTnVtYmVyRmllbGRXaWR0aHMgKnNwZWMsCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGlnaXRzLCBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKnByZWZpeCwgU1RSSU5HTElCX0NIQVIgZmlsbF9jaGFyLAotICAgICAgICAgICAgTG9jYWxlSW5mbyAqbG9jYWxlLCBpbnQgdG91cHBlcikKLXsKLSAgICAvKiBVc2VkIHRvIGtlZXAgdHJhY2sgb2YgZGlnaXRzLCBkZWNpbWFsLCBhbmQgcmVtYWluZGVyLiAqLwotICAgIFNUUklOR0xJQl9DSEFSICpwID0gZGlnaXRzOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFB5X3NzaXplX3QgcjsKLSNlbmRpZgotCi0gICAgaWYgKHNwZWMtPm5fbHBhZGRpbmcpIHsKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwoYnVmLCBmaWxsX2NoYXIsIHNwZWMtPm5fbHBhZGRpbmcpOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9scGFkZGluZzsKLSAgICB9Ci0gICAgaWYgKHNwZWMtPm5fc2lnbiA9PSAxKSB7Ci0gICAgICAgICpidWYrKyA9IHNwZWMtPnNpZ247Ci0gICAgfQotICAgIGlmIChzcGVjLT5uX3ByZWZpeCkgewotICAgICAgICBtZW1tb3ZlKGJ1ZiwKLSAgICAgICAgICAgICAgICBwcmVmaXgsCi0gICAgICAgICAgICAgICAgc3BlYy0+bl9wcmVmaXggKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgaWYgKHRvdXBwZXIpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdDsKLSAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX3ByZWZpeDsgKyt0KQotICAgICAgICAgICAgICAgIGJ1Zlt0XSA9IFNUUklOR0xJQl9UT1VQUEVSKGJ1Zlt0XSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmICs9IHNwZWMtPm5fcHJlZml4OwotICAgIH0KLSAgICBpZiAoc3BlYy0+bl9zcGFkZGluZykgewotICAgICAgICBTVFJJTkdMSUJfRklMTChidWYsIGZpbGxfY2hhciwgc3BlYy0+bl9zcGFkZGluZyk7Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX3NwYWRkaW5nOwotICAgIH0KLQotICAgIC8qIE9ubHkgZm9yIHR5cGUgJ2MnIHNwZWNpYWwgY2FzZSwgaXQgaGFzIG5vIGRpZ2l0cy4gKi8KLSAgICBpZiAoc3BlYy0+bl9kaWdpdHMgIT0gMCkgewotICAgICAgICAvKiBGaWxsIHRoZSBkaWdpdHMgd2l0aCBJbnNlcnRUaG91c2FuZHNHcm91cGluZy4gKi8KLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIHIgPQotI2VuZGlmCi0gICAgICAgICAgICBTVFJJTkdMSUJfR1JPVVBJTkcoYnVmLCBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzLCBkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+bl9kaWdpdHMsIHNwZWMtPm5fbWluX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS0+Z3JvdXBpbmcsIGxvY2FsZS0+dGhvdXNhbmRzX3NlcCk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBhc3NlcnQociA9PSBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzKTsKLSNlbmRpZgotICAgICAgICBwICs9IHNwZWMtPm5fZGlnaXRzOwotICAgIH0KLSAgICBpZiAodG91cHBlcikgewotICAgICAgICBQeV9zc2l6ZV90IHQ7Ci0gICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzOyArK3QpCi0gICAgICAgICAgICBidWZbdF0gPSBTVFJJTkdMSUJfVE9VUFBFUihidWZbdF0pOwotICAgIH0KLSAgICBidWYgKz0gc3BlYy0+bl9ncm91cGVkX2RpZ2l0czsKLQotICAgIGlmIChzcGVjLT5uX2RlY2ltYWwpIHsKLSAgICAgICAgUHlfc3NpemVfdCB0OwotICAgICAgICBmb3IgKHQgPSAwOyB0IDwgc3BlYy0+bl9kZWNpbWFsOyArK3QpCi0gICAgICAgICAgICBidWZbdF0gPSBsb2NhbGUtPmRlY2ltYWxfcG9pbnRbdF07Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX2RlY2ltYWw7Ci0gICAgICAgIHAgKz0gMTsKLSAgICB9Ci0KLSAgICBpZiAoc3BlYy0+bl9yZW1haW5kZXIpIHsKLSAgICAgICAgbWVtY3B5KGJ1ZiwgcCwgc3BlYy0+bl9yZW1haW5kZXIgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fcmVtYWluZGVyOwotICAgICAgICBwICs9IHNwZWMtPm5fcmVtYWluZGVyOwotICAgIH0KLQotICAgIGlmIChzcGVjLT5uX3JwYWRkaW5nKSB7Ci0gICAgICAgIFNUUklOR0xJQl9GSUxMKGJ1ZiwgZmlsbF9jaGFyLCBzcGVjLT5uX3JwYWRkaW5nKTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fcnBhZGRpbmc7Ci0gICAgfQotfQotCi1zdGF0aWMgY2hhciBub19ncm91cGluZ1sxXSA9IHtDSEFSX01BWH07Ci0KLS8qIEZpbmQgdGhlIGRlY2ltYWwgcG9pbnQgY2hhcmFjdGVyKHM/KSwgdGhvdXNhbmRzX3NlcGFyYXRvcihzPyksIGFuZAotICAgZ3JvdXBpbmcgZGVzY3JpcHRpb24sIGVpdGhlciBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIGlmIHR5cGUgaXMKLSAgIExUX0NVUlJFTlRfTE9DQUxFLCBhIGhhcmQtY29kZWQgbG9jYWxlIGlmIExUX0RFRkFVTFRfTE9DQUxFLCBvcgotICAgbm9uZSBpZiBMVF9OT19MT0NBTEUuICovCi1zdGF0aWMgdm9pZAotZ2V0X2xvY2FsZV9pbmZvKGludCB0eXBlLCBMb2NhbGVJbmZvICpsb2NhbGVfaW5mbykKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIExUX0NVUlJFTlRfTE9DQUxFOiB7Ci0gICAgICAgIHN0cnVjdCBsY29udiAqbG9jYWxlX2RhdGEgPSBsb2NhbGVjb252KCk7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gbG9jYWxlX2RhdGEtPmRlY2ltYWxfcG9pbnQ7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gbG9jYWxlX2RhdGEtPnRob3VzYW5kc19zZXA7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9IGxvY2FsZV9kYXRhLT5ncm91cGluZzsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgTFRfREVGQVVMVF9MT0NBTEU6Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gIi4iOwotICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9ICIsIjsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbXBsaWNpdCkgdHJhaWxpbmcgMCBtZWFucyByZXBlYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVseS4gKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMVF9OT19MT0NBTEU6Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gIi4iOwotICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9ICIiOwotICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSBub19ncm91cGluZzsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KDApOwotICAgIH0KLX0KLQotI2VuZGlmIC8qIEZPUk1BVF9GTE9BVCB8fCBGT1JNQVRfTE9ORyB8fCBGT1JNQVRfQ09NUExFWCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIHN0cmluZyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRfc3RyaW5nX2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCi17Ci0gICAgUHlfc3NpemVfdCBscGFkOwotICAgIFB5X3NzaXplX3QgcnBhZDsKLSAgICBQeV9zc2l6ZV90IHRvdGFsOwotICAgIFNUUklOR0xJQl9DSEFSICpwOwotICAgIFB5X3NzaXplX3QgbGVuID0gU1RSSU5HTElCX0xFTih2YWx1ZSk7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICAvKiBzaWduIGlzIG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KLSAgICBpZiAoZm9ybWF0LT5zaWduICE9ICdcMCcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiU2lnbiBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogYWx0ZXJuYXRlIGlzIG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KLSAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQWx0ZXJuYXRlIGZvcm0gKCMpIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogJz0nIGFsaWdubWVudCBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCi0gICAgaWYgKGZvcm1hdC0+YWxpZ24gPT0gJz0nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIic9JyBhbGlnbm1lbnQgbm90IGFsbG93ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgImluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBpZiBwcmVjaXNpb24gaXMgc3BlY2lmaWVkLCBvdXRwdXQgbm8gbW9yZSB0aGF0IGZvcm1hdC5wcmVjaXNpb24KLSAgICAgICBjaGFyYWN0ZXJzICovCi0gICAgaWYgKGZvcm1hdC0+cHJlY2lzaW9uID49IDAgJiYgbGVuID49IGZvcm1hdC0+cHJlY2lzaW9uKSB7Ci0gICAgICAgIGxlbiA9IGZvcm1hdC0+cHJlY2lzaW9uOwotICAgIH0KLQotICAgIGNhbGNfcGFkZGluZyhsZW4sIGZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+YWxpZ24sICZscGFkLCAmcnBhZCwgJnRvdGFsKTsKLQotICAgIC8qIGFsbG9jYXRlIHRoZSByZXN1bHRpbmcgc3RyaW5nICovCi0gICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCB0b3RhbCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiBXcml0ZSBpbnRvIHRoYXQgc3BhY2UuIEZpcnN0IHRoZSBwYWRkaW5nLiAqLwotICAgIHAgPSBmaWxsX3BhZGRpbmcoU1RSSU5HTElCX1NUUihyZXN1bHQpLCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhcj09J1wwJz8nICc6Zm9ybWF0LT5maWxsX2NoYXIsCi0gICAgICAgICAgICAgICAgICAgICBscGFkLCBycGFkKTsKLQotICAgIC8qIFRoZW4gdGhlIHNvdXJjZSBzdHJpbmcuICovCi0gICAgbWVtY3B5KHAsIFNUUklOR0xJQl9TVFIodmFsdWUpLCBsZW4gKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLQotZG9uZToKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogbG9uZyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmIGRlZmluZWQgRk9STUFUX0xPTkcgfHwgZGVmaW5lZCBGT1JNQVRfSU5UCi10eXBlZGVmIFB5T2JqZWN0KgotKCpJbnRPckxvbmdUb1N0cmluZykoUHlPYmplY3QgKnZhbHVlLCBpbnQgYmFzZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRfaW50X29yX2xvbmdfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLCBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRPckxvbmdUb1N0cmluZyB0b3N0cmluZykKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcG51bWVyaWNfY2hhcnM7Ci0gICAgU1RSSU5HTElCX0NIQVIgbnVtZXJpY19jaGFyOwotICAgIFNUUklOR0xJQl9DSEFSIHNpZ25fY2hhciA9ICdcMCc7Ci0gICAgUHlfc3NpemVfdCBuX2RpZ2l0czsgICAgICAgLyogY291bnQgb2YgZGlnaXRzIG5lZWQgZnJvbSB0aGUgY29tcHV0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKi8KLSAgICBQeV9zc2l6ZV90IG5fcmVtYWluZGVyID0gMDsgLyogVXNlZCBvbmx5IGZvciAnYycgZm9ybWF0dGluZywgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXMgbm9uLWRpZ2l0cyAqLwotICAgIFB5X3NzaXplX3Qgbl9wcmVmaXggPSAwOyAgIC8qIENvdW50IG9mIHByZWZpeCBjaGFycywgKGUuZy4sICcweCcpICovCi0gICAgUHlfc3NpemVfdCBuX3RvdGFsOwotICAgIFNUUklOR0xJQl9DSEFSICpwcmVmaXggPSBOVUxMOwotICAgIE51bWJlckZpZWxkV2lkdGhzIHNwZWM7Ci0gICAgbG9uZyB4OwotCi0gICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgotICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLwotICAgIExvY2FsZUluZm8gbG9jYWxlOwotCi0gICAgLyogbm8gcHJlY2lzaW9uIGFsbG93ZWQgb24gaW50ZWdlcnMgKi8KLSAgICBpZiAoZm9ybWF0LT5wcmVjaXNpb24gIT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHJlY2lzaW9uIG5vdCBhbGxvd2VkIGluIGludGVnZXIgZm9ybWF0IHNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogc3BlY2lhbCBjYXNlIGZvciBjaGFyYWN0ZXIgZm9ybWF0dGluZyAqLwotICAgIGlmIChmb3JtYXQtPnR5cGUgPT0gJ2MnKSB7Ci0gICAgICAgIC8qIGVycm9yIHRvIHNwZWNpZnkgYSBzaWduICovCi0gICAgICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJ1wwJykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNpZ24gbm90IGFsbG93ZWQgd2l0aCBpbnRlZ2VyIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZm9ybWF0IHNwZWNpZmllciAnYyciKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jIGZvcm1hdGNoYXIoKSAqLwotICAgICAgICAvKiBJbnRlZ2VyIGlucHV0IHRydW5jYXRlZCB0byBhIGNoYXJhY3RlciAqLwotLyogWFhYOiB3b24ndCB3b3JrIGZvciBpbnQgKi8KLSAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcodmFsdWUpOwotICAgICAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgZ290byBkb25lOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4MTBmZmZmKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIod2lkZSBQeXRob24gYnVpbGQpIik7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGlmICh4IDwgMCB8fCB4ID4gMHhmZmZmKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDEwMDAwKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIihuYXJyb3cgUHl0aG9uIGJ1aWxkKSIpOwotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgbnVtZXJpY19jaGFyID0gKFNUUklOR0xJQl9DSEFSKXg7Ci0gICAgICAgIHBudW1lcmljX2NoYXJzID0gJm51bWVyaWNfY2hhcjsKLSAgICAgICAgbl9kaWdpdHMgPSAxOwotCi0gICAgICAgIC8qIEFzIGEgc29ydC1vZiBoYWNrLCB3ZSB0ZWxsIGNhbGNfbnVtYmVyX3dpZHRocyB0aGF0IHdlIG9ubHkKLSAgICAgICAgICAgaGF2ZSAicmVtYWluZGVyIiBjaGFyYWN0ZXJzLiBjYWxjX251bWJlcl93aWR0aHMgdGhpbmtzCi0gICAgICAgICAgIHRoZXNlIGFyZSBjaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgZ2V0IGZvcm1hdHRlZCwgb25seSBjb3BpZWQKLSAgICAgICAgICAgaW50byB0aGUgb3V0cHV0IHN0cmluZy4gV2UgZG8gdGhpcyBmb3IgJ2MnIGZvcm1hdHRpbmcsCi0gICAgICAgICAgIGJlY2F1c2UgdGhlIGNoYXJhY3RlcnMgYXJlIGxpa2VseSB0byBiZSBub24tZGlnaXRzLiAqLwotICAgICAgICBuX3JlbWFpbmRlciA9IDE7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpbnQgYmFzZTsKLSAgICAgICAgaW50IGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDA7ICAvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBhZGRlZCBieQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TnVtYmVyX1RvQmFzZSB0aGF0IHdlIHdhbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwIG92ZXIuICovCi0KLSAgICAgICAgLyogQ29tcHV0ZSB0aGUgYmFzZSBhbmQgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIGFkZGVkIGJ5Ci0gICAgICAgICAgIFB5TnVtYmVyX1RvQmFzZSAqLwotICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+dHlwZSkgewotICAgICAgICBjYXNlICdiJzoKLSAgICAgICAgICAgIGJhc2UgPSAyOwotICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMGIgKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdvJzoKLSAgICAgICAgICAgIGJhc2UgPSA4OwotICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMG8gKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgY2FzZSAnWCc6Ci0gICAgICAgICAgICBiYXNlID0gMTY7Ci0gICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAweCAqLwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6ICAvKiBzaG91bGRuJ3QgYmUgbmVlZGVkLCBidXQgc3RvcHMgYSBjb21waWxlciB3YXJuaW5nICovCi0gICAgICAgIGNhc2UgJ2QnOgotICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgIGJhc2UgPSAxMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogVGhlIG51bWJlciBvZiBwcmVmaXggY2hhcnMgaXMgdGhlIHNhbWUgYXMgdGhlIGxlYWRpbmcKLSAgICAgICAgICAgY2hhcnMgdG8gc2tpcCAqLwotICAgICAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCi0gICAgICAgICAgICBuX3ByZWZpeCA9IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKLQotICAgICAgICAvKiBEbyB0aGUgaGFyZCBwYXJ0LCBjb252ZXJ0aW5nIHRvIGEgc3RyaW5nIGluIGEgZ2l2ZW4gYmFzZSAqLwotICAgICAgICB0bXAgPSB0b3N0cmluZyh2YWx1ZSwgYmFzZSk7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLQotICAgICAgICBwbnVtZXJpY19jaGFycyA9IFNUUklOR0xJQl9TVFIodG1wKTsKLSAgICAgICAgbl9kaWdpdHMgPSBTVFJJTkdMSUJfTEVOKHRtcCk7Ci0KLSAgICAgICAgcHJlZml4ID0gcG51bWVyaWNfY2hhcnM7Ci0KLSAgICAgICAgLyogUmVtZW1iZXIgbm90IHRvIG1vZGlmeSB3aGF0IHBudW1lcmljX2NoYXJzIHBvaW50cyB0by4gIGl0Ci0gICAgICAgICAgIG1pZ2h0IGJlIGludGVybmVkLiAgT25seSBtb2RpZnkgaXQgYWZ0ZXIgd2UgY29weSBpdCBpbnRvIGEKLSAgICAgICAgICAgbmV3bHkgYWxsb2NhdGVkIG91dHB1dCBidWZmZXIuICovCi0KLSAgICAgICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKLSAgICAgICAgICAgYW5kIHNraXAgaXQgKi8KLSAgICAgICAgaWYgKHBudW1lcmljX2NoYXJzWzBdID09ICctJykgewotICAgICAgICAgICAgc2lnbl9jaGFyID0gcG51bWVyaWNfY2hhcnNbMF07Ci0gICAgICAgICAgICArK3ByZWZpeDsKLSAgICAgICAgICAgICsrbGVhZGluZ19jaGFyc190b19za2lwOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2tpcCBvdmVyIHRoZSBsZWFkaW5nIGNoYXJzICgweCwgMGIsIGV0Yy4pICovCi0gICAgICAgIG5fZGlnaXRzIC09IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKLSAgICAgICAgcG51bWVyaWNfY2hhcnMgKz0gbGVhZGluZ19jaGFyc190b19za2lwOwotICAgIH0KLQotICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KLSAgICBnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKLSAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSk7Ci0KLSAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCi0gICAgbl90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmc3BlYywgbl9wcmVmaXgsIHNpZ25fY2hhciwgcG51bWVyaWNfY2hhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgIG5fZGlnaXRzLCBuX3JlbWFpbmRlciwgMCwgJmxvY2FsZSwgZm9ybWF0KTsKLQotICAgIC8qIEFsbG9jYXRlIHRoZSBtZW1vcnkuICovCi0gICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBuX3RvdGFsKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gKi8KLSAgICBmaWxsX251bWJlcihTVFJJTkdMSUJfU1RSKHJlc3VsdCksICZzcGVjLCBwbnVtZXJpY19jaGFycywgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgcHJlZml4LCBmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCi0gICAgICAgICAgICAgICAgJmxvY2FsZSwgZm9ybWF0LT50eXBlID09ICdYJyk7Ci0KLWRvbmU6Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogZGVmaW5lZCBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9JTlQgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBmbG9hdCBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgRk9STUFUX0ZMT0FUCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLXN0YXRpYyB2b2lkCi1zdHJ0b3VuaWNvZGUoUHlfVU5JQ09ERSAqYnVmZmVyLCBjb25zdCBjaGFyICpjaGFyYnVmZmVyLCBQeV9zc2l6ZV90IGxlbikKLXsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQotICAgICAgICBidWZmZXJbaV0gPSAoUHlfVU5JQ09ERSljaGFyYnVmZmVyW2ldOwotfQotI2VuZGlmCi0KLS8qIG11Y2ggb2YgdGhpcyBpcyB0YWtlbiBmcm9tIHVuaWNvZGVvYmplY3QuYyAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdF9mbG9hdF9pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCi17Ci0gICAgY2hhciAqYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCi0gICAgUHlfc3NpemVfdCBuX2RpZ2l0czsKLSAgICBQeV9zc2l6ZV90IG5fcmVtYWluZGVyOwotICAgIFB5X3NzaXplX3Qgbl90b3RhbDsKLSAgICBpbnQgaGFzX2RlY2ltYWw7Ci0gICAgZG91YmxlIHZhbDsKLSAgICBQeV9zc2l6ZV90IHByZWNpc2lvbiA9IGZvcm1hdC0+cHJlY2lzaW9uOwotICAgIFB5X3NzaXplX3QgZGVmYXVsdF9wcmVjaXNpb24gPSA2OwotICAgIFNUUklOR0xJQl9DSEFSIHR5cGUgPSBmb3JtYXQtPnR5cGU7Ci0gICAgaW50IGFkZF9wY3QgPSAwOwotICAgIFNUUklOR0xJQl9DSEFSICpwOwotICAgIE51bWJlckZpZWxkV2lkdGhzIHNwZWM7Ci0gICAgaW50IGZsYWdzID0gMDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBTVFJJTkdMSUJfQ0hBUiBzaWduX2NoYXIgPSAnXDAnOwotICAgIGludCBmbG9hdF90eXBlOyAvKiBVc2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbmFuLCBpbmYsIG9yIHJlZ3VsYXIgZmxvYXQuICovCi0KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIFB5X1VOSUNPREUgKnVuaWNvZGVfdG1wID0gTlVMTDsKLSNlbmRpZgotCi0gICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgotICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLwotICAgIExvY2FsZUluZm8gbG9jYWxlOwotCi0gICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQotICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FMVDsKLQotICAgIGlmICh0eXBlID09ICdcMCcpIHsKLSAgICAgICAgLyogT21pdHRlZCB0eXBlIHNwZWNpZmllci4gIEJlaGF2ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHJlcHIoeCkKLSAgICAgICAgICAgYW5kIHN0cih4KSBpZiBubyBwcmVjaXNpb24gaXMgZ2l2ZW4sIGVsc2UgbGlrZSAnZycsIGJ1dCB3aXRoCi0gICAgICAgICAgIGF0IGxlYXN0IG9uZSBkaWdpdCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4gKi8KLSAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BRERfRE9UXzA7Ci0gICAgICAgIHR5cGUgPSAncic7Ci0gICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSAnbicpCi0gICAgICAgIC8qICduJyBpcyB0aGUgc2FtZSBhcyAnZycsIGV4Y2VwdCBmb3IgdGhlIGxvY2FsZSB1c2VkIHRvCi0gICAgICAgICAgIGZvcm1hdCB0aGUgcmVzdWx0LiBXZSB0YWtlIGNhcmUgb2YgdGhhdCBsYXRlci4gKi8KLSAgICAgICAgdHlwZSA9ICdnJzsKLQotICAgIHZhbCA9IFB5RmxvYXRfQXNEb3VibGUodmFsdWUpOwotICAgIGlmICh2YWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBpZiAodHlwZSA9PSAnJScpIHsKLSAgICAgICAgdHlwZSA9ICdmJzsKLSAgICAgICAgdmFsICo9IDEwMDsKLSAgICAgICAgYWRkX3BjdCA9IDE7Ci0gICAgfQotCi0gICAgaWYgKHByZWNpc2lvbiA8IDApCi0gICAgICAgIHByZWNpc2lvbiA9IGRlZmF1bHRfcHJlY2lzaW9uOwotICAgIGVsc2UgaWYgKHR5cGUgPT0gJ3InKQotICAgICAgICB0eXBlID0gJ2cnOwotCi0gICAgLyogQ2FzdCAidHlwZSIsIGJlY2F1c2UgaWYgd2UncmUgaW4gdW5pY29kZSB3ZSBuZWVkIHRvIHBhc3MgYQotICAgICAgIDgtYml0IGNoYXIuIFRoaXMgaXMgc2FmZSwgYmVjYXVzZSB3ZSd2ZSByZXN0cmljdGVkIHdoYXQgInR5cGUiCi0gICAgICAgY2FuIGJlLiAqLwotICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh2YWwsIChjaGFyKXR5cGUsIHByZWNpc2lvbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmbG9hdF90eXBlKTsKLSAgICBpZiAoYnVmID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLSAgICBuX2RpZ2l0cyA9IHN0cmxlbihidWYpOwotCi0gICAgaWYgKGFkZF9wY3QpIHsKLSAgICAgICAgLyogV2Uga25vdyB0aGF0IGJ1ZiBoYXMgYSB0cmFpbGluZyB6ZXJvIChzaW5jZSB3ZSBqdXN0IGNhbGxlZAotICAgICAgICAgICBzdHJsZW4oKSBvbiBpdCksIGFuZCB3ZSBkb24ndCB1c2UgdGhhdCBmYWN0IGFueSBtb3JlLiBTbyB3ZQotICAgICAgICAgICBjYW4ganVzdCB3cml0ZSBvdmVyIHRoZSB0cmFpbGluZyB6ZXJvLiAqLwotICAgICAgICBidWZbbl9kaWdpdHNdID0gJyUnOwotICAgICAgICBuX2RpZ2l0cyArPSAxOwotICAgIH0KLQotICAgIC8qIFNpbmNlIHRoZXJlIGlzIG5vIHVuaWNvZGUgdmVyc2lvbiBvZiBQeU9TX2RvdWJsZV90b19zdHJpbmcsCi0gICAgICAganVzdCB1c2UgdGhlIDggYml0IHZlcnNpb24gYW5kIHRoZW4gY29udmVydCB0byB1bmljb2RlLiAqLwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgdW5pY29kZV90bXAgPSAoUHlfVU5JQ09ERSopUHlNZW1fTWFsbG9jKChuX2RpZ2l0cykqc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICBpZiAodW5pY29kZV90bXAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotICAgIHN0cnRvdW5pY29kZSh1bmljb2RlX3RtcCwgYnVmLCBuX2RpZ2l0cyk7Ci0gICAgcCA9IHVuaWNvZGVfdG1wOwotI2Vsc2UKLSAgICBwID0gYnVmOwotI2VuZGlmCi0KLSAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAotICAgICAgIGFuZCBza2lwIGl0ICovCi0gICAgaWYgKCpwID09ICctJykgewotICAgICAgICBzaWduX2NoYXIgPSAqcDsKLSAgICAgICAgKytwOwotICAgICAgICAtLW5fZGlnaXRzOwotICAgIH0KLQotICAgIC8qIERldGVybWluZSBpZiB3ZSBoYXZlIGFueSAicmVtYWluZGVyIiAoYWZ0ZXIgdGhlIGRpZ2l0cywgbWlnaHQgaW5jbHVkZQotICAgICAgIGRlY2ltYWwgb3IgZXhwb25lbnQgb3IgYm90aCAob3IgbmVpdGhlcikpICovCi0gICAgcGFyc2VfbnVtYmVyKHAsIG5fZGlnaXRzLCAmbl9yZW1haW5kZXIsICZoYXNfZGVjaW1hbCk7Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCi0gICAgZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCi0gICAgICAgICAgICAgICAgICAgICZsb2NhbGUpOwotCi0gICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLwotICAgIG5fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnNwZWMsIDAsIHNpZ25fY2hhciwgcCwgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3JlbWFpbmRlciwgaGFzX2RlY2ltYWwsICZsb2NhbGUsIGZvcm1hdCk7Ci0KLSAgICAvKiBBbGxvY2F0ZSB0aGUgbWVtb3J5LiAqLwotICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgbl90b3RhbCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiAqLwotICAgIGZpbGxfbnVtYmVyKFNUUklOR0xJQl9TVFIocmVzdWx0KSwgJnNwZWMsIHAsIG5fZGlnaXRzLCBOVUxMLAotICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwgJmxvY2FsZSwKLSAgICAgICAgICAgICAgICAwKTsKLQotZG9uZToKLSAgICBQeU1lbV9GcmVlKGJ1Zik7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBQeU1lbV9GcmVlKHVuaWNvZGVfdG1wKTsKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0ZMT0FUICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogY29tcGxleCBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIEZPUk1BVF9DT01QTEVYCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRfY29tcGxleF9pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBkb3VibGUgcmU7Ci0gICAgZG91YmxlIGltOwotICAgIGNoYXIgKnJlX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLwotICAgIGNoYXIgKmltX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLwotCi0gICAgSW50ZXJuYWxGb3JtYXRTcGVjIHRtcF9mb3JtYXQgPSAqZm9ybWF0OwotICAgIFB5X3NzaXplX3Qgbl9yZV9kaWdpdHM7Ci0gICAgUHlfc3NpemVfdCBuX2ltX2RpZ2l0czsKLSAgICBQeV9zc2l6ZV90IG5fcmVfcmVtYWluZGVyOwotICAgIFB5X3NzaXplX3Qgbl9pbV9yZW1haW5kZXI7Ci0gICAgUHlfc3NpemVfdCBuX3JlX3RvdGFsOwotICAgIFB5X3NzaXplX3Qgbl9pbV90b3RhbDsKLSAgICBpbnQgcmVfaGFzX2RlY2ltYWw7Ci0gICAgaW50IGltX2hhc19kZWNpbWFsOwotICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247Ci0gICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7Ci0gICAgU1RSSU5HTElCX0NIQVIgdHlwZSA9IGZvcm1hdC0+dHlwZTsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcF9yZTsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcF9pbTsKLSAgICBOdW1iZXJGaWVsZFdpZHRocyByZV9zcGVjOwotICAgIE51bWJlckZpZWxkV2lkdGhzIGltX3NwZWM7Ci0gICAgaW50IGZsYWdzID0gMDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcDsKLSAgICBTVFJJTkdMSUJfQ0hBUiByZV9zaWduX2NoYXIgPSAnXDAnOwotICAgIFNUUklOR0xJQl9DSEFSIGltX3NpZ25fY2hhciA9ICdcMCc7Ci0gICAgaW50IHJlX2Zsb2F0X3R5cGU7IC8qIFVzZWQgdG8gc2VlIGlmIHdlIGhhdmUgYSBuYW4sIGluZiwgb3IgcmVndWxhciBmbG9hdC4gKi8KLSAgICBpbnQgaW1fZmxvYXRfdHlwZTsKLSAgICBpbnQgYWRkX3BhcmVucyA9IDA7Ci0gICAgaW50IHNraXBfcmUgPSAwOwotICAgIFB5X3NzaXplX3QgbHBhZDsKLSAgICBQeV9zc2l6ZV90IHJwYWQ7Ci0gICAgUHlfc3NpemVfdCB0b3RhbDsKLQotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgUHlfVU5JQ09ERSAqcmVfdW5pY29kZV90bXAgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKmltX3VuaWNvZGVfdG1wID0gTlVMTDsKLSNlbmRpZgotCi0gICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgotICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLwotICAgIExvY2FsZUluZm8gbG9jYWxlOwotCi0gICAgLyogWmVybyBwYWRkaW5nIGlzIG5vdCBhbGxvd2VkLiAqLwotICAgIGlmIChmb3JtYXQtPmZpbGxfY2hhciA9PSAnMCcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiWmVybyBwYWRkaW5nIGlzIG5vdCBhbGxvd2VkIGluIGNvbXBsZXggZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIE5laXRoZXIgaXMgJz0nIGFsaWdubWVudCAuICovCi0gICAgaWYgKGZvcm1hdC0+YWxpZ24gPT0gJz0nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIic9JyBhbGlnbm1lbnQgZmxhZyBpcyBub3QgYWxsb3dlZCBpbiBjb21wbGV4IGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICByZSA9IFB5Q29tcGxleF9SZWFsQXNEb3VibGUodmFsdWUpOwotICAgIGlmIChyZSA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gZG9uZTsKLSAgICBpbSA9IFB5Q29tcGxleF9JbWFnQXNEb3VibGUodmFsdWUpOwotICAgIGlmIChpbSA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKLSAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BTFQ7Ci0KLSAgICBpZiAodHlwZSA9PSAnXDAnKSB7Ci0gICAgICAgIC8qIE9taXR0ZWQgdHlwZSBzcGVjaWZpZXIuIFNob3VsZCBiZSBsaWtlIHN0cihzZWxmKS4gKi8KLSAgICAgICAgdHlwZSA9ICdyJzsKLSAgICAgICAgZGVmYXVsdF9wcmVjaXNpb24gPSAwOwotICAgICAgICBpZiAocmUgPT0gMC4wICYmIGNvcHlzaWduKDEuMCwgcmUpID09IDEuMCkKLSAgICAgICAgICAgIHNraXBfcmUgPSAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRfcGFyZW5zID0gMTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSAnbicpCi0gICAgICAgIC8qICduJyBpcyB0aGUgc2FtZSBhcyAnZycsIGV4Y2VwdCBmb3IgdGhlIGxvY2FsZSB1c2VkIHRvCi0gICAgICAgICAgIGZvcm1hdCB0aGUgcmVzdWx0LiBXZSB0YWtlIGNhcmUgb2YgdGhhdCBsYXRlci4gKi8KLSAgICAgICAgdHlwZSA9ICdnJzsKLQotICAgIGlmIChwcmVjaXNpb24gPCAwKQotICAgICAgICBwcmVjaXNpb24gPSBkZWZhdWx0X3ByZWNpc2lvbjsKLSAgICBlbHNlIGlmICh0eXBlID09ICdyJykKLSAgICAgICAgdHlwZSA9ICdnJzsKLQotICAgIC8qIENhc3QgInR5cGUiLCBiZWNhdXNlIGlmIHdlJ3JlIGluIHVuaWNvZGUgd2UgbmVlZCB0byBwYXNzIGEKLSAgICAgICA4LWJpdCBjaGFyLiBUaGlzIGlzIHNhZmUsIGJlY2F1c2Ugd2UndmUgcmVzdHJpY3RlZCB3aGF0ICJ0eXBlIgotICAgICAgIGNhbiBiZS4gKi8KLSAgICByZV9idWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcocmUsIChjaGFyKXR5cGUsIHByZWNpc2lvbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZV9mbG9hdF90eXBlKTsKLSAgICBpZiAocmVfYnVmID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLSAgICBpbV9idWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoaW0sIChjaGFyKXR5cGUsIHByZWNpc2lvbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbV9mbG9hdF90eXBlKTsKLSAgICBpZiAoaW1fYnVmID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIG5fcmVfZGlnaXRzID0gc3RybGVuKHJlX2J1Zik7Ci0gICAgbl9pbV9kaWdpdHMgPSBzdHJsZW4oaW1fYnVmKTsKLQotICAgIC8qIFNpbmNlIHRoZXJlIGlzIG5vIHVuaWNvZGUgdmVyc2lvbiBvZiBQeU9TX2RvdWJsZV90b19zdHJpbmcsCi0gICAgICAganVzdCB1c2UgdGhlIDggYml0IHZlcnNpb24gYW5kIHRoZW4gY29udmVydCB0byB1bmljb2RlLiAqLwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgcmVfdW5pY29kZV90bXAgPSAoUHlfVU5JQ09ERSopUHlNZW1fTWFsbG9jKChuX3JlX2RpZ2l0cykqc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICBpZiAocmVfdW5pY29kZV90bXAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotICAgIHN0cnRvdW5pY29kZShyZV91bmljb2RlX3RtcCwgcmVfYnVmLCBuX3JlX2RpZ2l0cyk7Ci0gICAgcF9yZSA9IHJlX3VuaWNvZGVfdG1wOwotCi0gICAgaW1fdW5pY29kZV90bXAgPSAoUHlfVU5JQ09ERSopUHlNZW1fTWFsbG9jKChuX2ltX2RpZ2l0cykqc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICBpZiAoaW1fdW5pY29kZV90bXAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotICAgIHN0cnRvdW5pY29kZShpbV91bmljb2RlX3RtcCwgaW1fYnVmLCBuX2ltX2RpZ2l0cyk7Ci0gICAgcF9pbSA9IGltX3VuaWNvZGVfdG1wOwotI2Vsc2UKLSAgICBwX3JlID0gcmVfYnVmOwotICAgIHBfaW0gPSBpbV9idWY7Ci0jZW5kaWYKLQotICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0Ci0gICAgICAgYW5kIHNraXAgaXQgKi8KLSAgICBpZiAoKnBfcmUgPT0gJy0nKSB7Ci0gICAgICAgIHJlX3NpZ25fY2hhciA9ICpwX3JlOwotICAgICAgICArK3BfcmU7Ci0gICAgICAgIC0tbl9yZV9kaWdpdHM7Ci0gICAgfQotICAgIGlmICgqcF9pbSA9PSAnLScpIHsKLSAgICAgICAgaW1fc2lnbl9jaGFyID0gKnBfaW07Ci0gICAgICAgICsrcF9pbTsKLSAgICAgICAgLS1uX2ltX2RpZ2l0czsKLSAgICB9Ci0KLSAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKLSAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLwotICAgIHBhcnNlX251bWJlcihwX3JlLCBuX3JlX2RpZ2l0cywgJm5fcmVfcmVtYWluZGVyLCAmcmVfaGFzX2RlY2ltYWwpOwotICAgIHBhcnNlX251bWJlcihwX2ltLCBuX2ltX2RpZ2l0cywgJm5faW1fcmVtYWluZGVyLCAmaW1faGFzX2RlY2ltYWwpOwotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwotICAgIGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAotICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKTsKLQotICAgIC8qIFR1cm4gb2ZmIGFueSBwYWRkaW5nLiBXZSdsbCBkbyBpdCBsYXRlciBhZnRlciB3ZSd2ZSBjb21wb3NlZAotICAgICAgIHRoZSBudW1iZXJzIHdpdGhvdXQgcGFkZGluZy4gKi8KLSAgICB0bXBfZm9ybWF0LmZpbGxfY2hhciA9ICdcMCc7Ci0gICAgdG1wX2Zvcm1hdC5hbGlnbiA9ICc8JzsKLSAgICB0bXBfZm9ybWF0LndpZHRoID0gLTE7Ci0KLSAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCi0gICAgbl9yZV90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmcmVfc3BlYywgMCwgcmVfc2lnbl9jaGFyLCBwX3JlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZV9kaWdpdHMsIG5fcmVfcmVtYWluZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVfaGFzX2RlY2ltYWwsICZsb2NhbGUsICZ0bXBfZm9ybWF0KTsKLQotICAgIC8qIFNhbWUgZm9ybWF0dGluZywgYnV0IGFsd2F5cyBpbmNsdWRlIGEgc2lnbiwgdW5sZXNzIHRoZSByZWFsIHBhcnQgaXMKLSAgICAgKiBnb2luZyB0byBiZSBvbWl0dGVkLCBpbiB3aGljaCBjYXNlIHdlIHVzZSB3aGF0ZXZlciBzaWduIGNvbnZlbnRpb24gd2FzCi0gICAgICogcmVxdWVzdGVkIGJ5IHRoZSBvcmlnaW5hbCBmb3JtYXQuICovCi0gICAgaWYgKCFza2lwX3JlKQotICAgICAgICB0bXBfZm9ybWF0LnNpZ24gPSAnKyc7Ci0gICAgbl9pbV90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmaW1fc3BlYywgMCwgaW1fc2lnbl9jaGFyLCBwX2ltLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9pbV9kaWdpdHMsIG5faW1fcmVtYWluZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1faGFzX2RlY2ltYWwsICZsb2NhbGUsICZ0bXBfZm9ybWF0KTsKLQotICAgIGlmIChza2lwX3JlKQotICAgICAgICBuX3JlX3RvdGFsID0gMDsKLQotICAgIC8qIEFkZCAxIGZvciB0aGUgJ2onLCBhbmQgb3B0aW9uYWxseSAyIGZvciBwYXJlbnMuICovCi0gICAgY2FsY19wYWRkaW5nKG5fcmVfdG90YWwgKyBuX2ltX3RvdGFsICsgMSArIGFkZF9wYXJlbnMgKiAyLAotICAgICAgICAgICAgICAgICBmb3JtYXQtPndpZHRoLCBmb3JtYXQtPmFsaWduLCAmbHBhZCwgJnJwYWQsICZ0b3RhbCk7Ci0KLSAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHRvdGFsKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuIEZpcnN0LCB0aGUgcGFkZGluZy4gKi8KLSAgICBwID0gZmlsbF9wYWRkaW5nKFNUUklOR0xJQl9TVFIocmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgIG5fcmVfdG90YWwgKyBuX2ltX3RvdGFsICsgMSArIGFkZF9wYXJlbnMgKiAyLAotICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXI9PSdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKLSAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOwotCi0gICAgaWYgKGFkZF9wYXJlbnMpCi0gICAgICAgICpwKysgPSAnKCc7Ci0KLSAgICBpZiAoIXNraXBfcmUpIHsKLSAgICAgICAgZmlsbF9udW1iZXIocCwgJnJlX3NwZWMsIHBfcmUsIG5fcmVfZGlnaXRzLCBOVUxMLCAwLCAmbG9jYWxlLCAwKTsKLSAgICAgICAgcCArPSBuX3JlX3RvdGFsOwotICAgIH0KLSAgICBmaWxsX251bWJlcihwLCAmaW1fc3BlYywgcF9pbSwgbl9pbV9kaWdpdHMsIE5VTEwsIDAsICZsb2NhbGUsIDApOwotICAgIHAgKz0gbl9pbV90b3RhbDsKLSAgICAqcCsrID0gJ2onOwotCi0gICAgaWYgKGFkZF9wYXJlbnMpCi0gICAgICAgICpwKysgPSAnKSc7Ci0KLWRvbmU6Ci0gICAgUHlNZW1fRnJlZShyZV9idWYpOwotICAgIFB5TWVtX0ZyZWUoaW1fYnVmKTsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIFB5TWVtX0ZyZWUocmVfdW5pY29kZV90bXApOwotICAgIFB5TWVtX0ZyZWUoaW1fdW5pY29kZV90bXApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfQ09NUExFWCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGJ1aWx0IGluIGZvcm1hdHRlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1QeU9iamVjdCAqCi1GT1JNQVRfU1RSSU5HKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pCi17Ci0gICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCi0gICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLwotICAgIGlmIChmb3JtYXRfc3BlY19sZW4gPT0gMCkgewotICAgICAgICByZXN1bHQgPSBTVFJJTkdMSUJfVE9TVFIob2JqKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLwotICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ3MnLCAnPCcpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCi0gICAgc3dpdGNoIChmb3JtYXQudHlwZSkgewotICAgIGNhc2UgJ3MnOgotICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGEgc3RyaW5nLiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0X3N0cmluZ19pbnRlcm5hbChvYmosICZmb3JtYXQpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duICovCi0gICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLWRvbmU6Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmIGRlZmluZWQgRk9STUFUX0xPTkcgfHwgZGVmaW5lZCBGT1JNQVRfSU5UCi1zdGF0aWMgUHlPYmplY3QqCi1mb3JtYXRfaW50X29yX2xvbmcoUHlPYmplY3QqIG9iaiwKLSAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgSW50T3JMb25nVG9TdHJpbmcgdG9zdHJpbmcpCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7Ci0gICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKLQotICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCi0gICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLwotICAgIGlmIChmb3JtYXRfc3BlY19sZW4gPT0gMCkgewotICAgICAgICByZXN1bHQgPSBTVFJJTkdMSUJfVE9TVFIob2JqKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLwotICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnZCcsICc+JykpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7Ci0gICAgY2FzZSAnYic6Ci0gICAgY2FzZSAnYyc6Ci0gICAgY2FzZSAnZCc6Ci0gICAgY2FzZSAnbyc6Ci0gICAgY2FzZSAneCc6Ci0gICAgY2FzZSAnWCc6Ci0gICAgY2FzZSAnbic6Ci0gICAgICAgIC8qIG5vIHR5cGUgY29udmVyc2lvbiBuZWVkZWQsIGFscmVhZHkgYW4gaW50IChvciBsb25nKS4gIGRvCi0gICAgICAgICAgIHRoZSBmb3JtYXR0aW5nICovCi0gICAgICAgICAgICByZXN1bHQgPSBmb3JtYXRfaW50X29yX2xvbmdfaW50ZXJuYWwob2JqLCAmZm9ybWF0LCB0b3N0cmluZyk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSAnZSc6Ci0gICAgY2FzZSAnRSc6Ci0gICAgY2FzZSAnZic6Ci0gICAgY2FzZSAnRic6Ci0gICAgY2FzZSAnZyc6Ci0gICAgY2FzZSAnRyc6Ci0gICAgY2FzZSAnJSc6Ci0gICAgICAgIC8qIGNvbnZlcnQgdG8gZmxvYXQgKi8KLSAgICAgICAgdG1wID0gUHlOdW1iZXJfRmxvYXQob2JqKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICByZXN1bHQgPSBmb3JtYXRfZmxvYXRfaW50ZXJuYWwodG1wLCAmZm9ybWF0KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duICovCi0gICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLWRvbmU6Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0xPTkcgfHwgZGVmaW5lZCBGT1JNQVRfSU5UICovCi0KLSNpZmRlZiBGT1JNQVRfTE9ORwotLyogTmVlZCB0byBkZWZpbmUgbG9uZ19mb3JtYXQgYXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgY29udmVydCBhIGxvbmcKLSAgIHRvIGEgc3RyaW5nLiAgSW4gMy4wLCBfUHlMb25nX0Zvcm1hdCBoYXMgdGhlIGNvcnJlY3Qgc2lnbmF0dXJlLiAgSW4KLSAgIDIueCwgd2UgbmVlZCB0byBmdWRnZSBhIGZldyBwYXJhbWV0ZXJzICovCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotI2RlZmluZSBsb25nX2Zvcm1hdCBfUHlMb25nX0Zvcm1hdAotI2Vsc2UKLXN0YXRpYyBQeU9iamVjdCoKLWxvbmdfZm9ybWF0KFB5T2JqZWN0KiB2YWx1ZSwgaW50IGJhc2UpCi17Ci0gICAgLyogQ29udmVydCB0byBiYXNlLCBkb24ndCBhZGQgdHJhaWxpbmcgJ0wnLCBhbmQgdXNlIHRoZSBuZXcgb2N0YWwKLSAgICAgICBmb3JtYXQuIFdlIGFscmVhZHkga25vdyB0aGlzIGlzIGEgbG9uZyBvYmplY3QgKi8KLSAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHZhbHVlKSk7Ci0gICAgLyogY29udmVydCB0byBiYXNlLCBkb24ndCBhZGQgJ0wnLCBhbmQgdXNlIHRoZSBuZXcgb2N0YWwgZm9ybWF0ICovCi0gICAgcmV0dXJuIF9QeUxvbmdfRm9ybWF0KHZhbHVlLCBiYXNlLCAwLCAxKTsKLX0KLSNlbmRpZgotCi1QeU9iamVjdCAqCi1GT1JNQVRfTE9ORyhQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pCi17Ci0gICAgcmV0dXJuIGZvcm1hdF9pbnRfb3JfbG9uZyhvYmosIGZvcm1hdF9zcGVjLCBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX2Zvcm1hdCk7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0xPTkcgKi8KLQotI2lmZGVmIEZPUk1BVF9JTlQKLS8qIHRoaXMgaXMgb25seSB1c2VkIGZvciAyLngsIG5vdCAzLjAgKi8KLXN0YXRpYyBQeU9iamVjdCoKLWludF9mb3JtYXQoUHlPYmplY3QqIHZhbHVlLCBpbnQgYmFzZSkKLXsKLSAgICAvKiBDb252ZXJ0IHRvIGJhc2UsIGFuZCB1c2UgdGhlIG5ldyBvY3RhbCBmb3JtYXQuIFdlIGFscmVhZHkKLSAgICAgICBrbm93IHRoaXMgaXMgYW4gaW50IG9iamVjdCAqLwotICAgIGFzc2VydChQeUludF9DaGVjayh2YWx1ZSkpOwotICAgIHJldHVybiBfUHlJbnRfRm9ybWF0KChQeUludE9iamVjdCopdmFsdWUsIGJhc2UsIDEpOwotfQotCi1QeU9iamVjdCAqCi1GT1JNQVRfSU5UKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pCi17Ci0gICAgcmV0dXJuIGZvcm1hdF9pbnRfb3JfbG9uZyhvYmosIGZvcm1hdF9zcGVjLCBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfZm9ybWF0KTsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfSU5UICovCi0KLSNpZmRlZiBGT1JNQVRfRkxPQVQKLVB5T2JqZWN0ICoKLUZPUk1BVF9GTE9BVChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OwotCi0gICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKLSAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCi0gICAgaWYgKGZvcm1hdF9zcGVjX2xlbiA9PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IFNUUklOR0xJQl9UT1NUUihvYmopOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCi0gICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7Ci0gICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLwotICAgIGNhc2UgJ2UnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgotICAgIGNhc2UgJ2cnOgotICAgIGNhc2UgJ0cnOgotICAgIGNhc2UgJ24nOgotICAgIGNhc2UgJyUnOgotICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgZmxvYXQuICBkbyB0aGUgZm9ybWF0dGluZyAqLwotICAgICAgICByZXN1bHQgPSBmb3JtYXRfZmxvYXRfaW50ZXJuYWwob2JqLCAmZm9ybWF0KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duICovCi0gICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLWRvbmU6Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfRkxPQVQgKi8KLQotI2lmZGVmIEZPUk1BVF9DT01QTEVYCi1QeU9iamVjdCAqCi1GT1JNQVRfQ09NUExFWChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKLQotICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCi0gICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLwotICAgIGlmIChmb3JtYXRfc3BlY19sZW4gPT0gMCkgewotICAgICAgICByZXN1bHQgPSBTVFJJTkdMSUJfVE9TVFIob2JqKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLwotICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnXDAnLCAnPicpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCi0gICAgc3dpdGNoIChmb3JtYXQudHlwZSkgewotICAgIGNhc2UgJ1wwJzogLyogTm8gZm9ybWF0IGNvZGU6IGxpa2UgJ2cnLCBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbC4gKi8KLSAgICBjYXNlICdlJzoKLSAgICBjYXNlICdFJzoKLSAgICBjYXNlICdmJzoKLSAgICBjYXNlICdGJzoKLSAgICBjYXNlICdnJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICduJzoKLSAgICAgICAgLyogbm8gY29udmVyc2lvbiwgYWxyZWFkeSBhIGNvbXBsZXguICBkbyB0aGUgZm9ybWF0dGluZyAqLwotICAgICAgICByZXN1bHQgPSBmb3JtYXRfY29tcGxleF9pbnRlcm5hbChvYmosICZmb3JtYXQpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gKi8KLSAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotZG9uZToKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9DT01QTEVYICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggYi9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKaW5kZXggZjU0ODEzMy4uNmUyZjA3MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaApAQCAtMSwyMSArMSwxOSBAQAogLyogc3RyaW5nbGliOiBsb2NhbGUgcmVsYXRlZCBoZWxwZXJzIGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX0xPQ0FMRVVUSUxfSAotI2RlZmluZSBTVFJJTkdMSUJfTE9DQUxFVVRJTF9ICi0KICNpbmNsdWRlIDxsb2NhbGUuaD4KIAotI2RlZmluZSBNQVgoeCwgeSkgKCh4KSA8ICh5KSA/ICh5KSA6ICh4KSkKLSNkZWZpbmUgTUlOKHgsIHkpICgoeCkgPCAoeSkgPyAoeCkgOiAoeSkpCisjaWZuZGVmIFNUUklOR0xJQl9JU19VTklDT0RFCisjICAgZXJyb3IgImxvY2FsZXV0aWwgaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY29uc3QgY2hhciAqZ3JvdXBpbmc7CiAgICAgY2hhciBwcmV2aW91czsKICAgICBQeV9zc2l6ZV90IGk7IC8qIFdoZXJlIHdlJ3JlIGN1cnJlbnRseSBwb2ludGluZyBpbiBncm91cGluZy4gKi8KLX0gR3JvdXBHZW5lcmF0b3I7Cit9IFNUUklOR0xJQihHcm91cEdlbmVyYXRvcik7CiAKIHN0YXRpYyB2b2lkCi1fR3JvdXBHZW5lcmF0b3JfaW5pdChHcm91cEdlbmVyYXRvciAqc2VsZiwgY29uc3QgY2hhciAqZ3JvdXBpbmcpCitTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3JfaW5pdCkoU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yKSAqc2VsZiwgY29uc3QgY2hhciAqZ3JvdXBpbmcpCiB7CiAgICAgc2VsZi0+Z3JvdXBpbmcgPSBncm91cGluZzsKICAgICBzZWxmLT5pID0gMDsKQEAgLTI0LDcgKzIyLDcgQEAKIAogLyogUmV0dXJucyB0aGUgbmV4dCBncm91cGluZywgb3IgMCB0byBzaWduaWZ5IGVuZC4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci1fR3JvdXBHZW5lcmF0b3JfbmV4dChHcm91cEdlbmVyYXRvciAqc2VsZikKK1NUUklOR0xJQihHcm91cEdlbmVyYXRvcl9uZXh0KShTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3IpICpzZWxmKQogewogICAgIC8qIE5vdGUgdGhhdCB3ZSBkb24ndCByZWFsbHkgZG8gbXVjaCBlcnJvciBjaGVja2luZyBoZXJlLiBJZiBhCiAgICAgICAgZ3JvdXBpbmcgc3RyaW5nIGNvbnRhaW5zIGp1c3QgQ0hBUl9NQVgsIGZvciBleGFtcGxlLCB0aGVuIGp1c3QKQEAgLTQ4LDI3ICs0NiwxOCBAQAogLyogRmlsbCBpbiBzb21lIGRpZ2l0cywgbGVhZGluZyB6ZXJvcywgYW5kIHRob3VzYW5kcyBzZXBhcmF0b3IuIEFsbAogICAgYXJlIG9wdGlvbmFsLCBkZXBlbmRpbmcgb24gd2hlbiB3ZSdyZSBjYWxsZWQuICovCiBzdGF0aWMgdm9pZAotZmlsbChTVFJJTkdMSUJfQ0hBUiAqKmRpZ2l0c19lbmQsIFNUUklOR0xJQl9DSEFSICoqYnVmZmVyX2VuZCwKLSAgICAgUHlfc3NpemVfdCBuX2NoYXJzLCBQeV9zc2l6ZV90IG5femVyb3MsIGNvbnN0IGNoYXIqIHRob3VzYW5kc19zZXAsCitTVFJJTkdMSUIoZmlsbCkoU1RSSU5HTElCX0NIQVIgKipkaWdpdHNfZW5kLCBTVFJJTkdMSUJfQ0hBUiAqKmJ1ZmZlcl9lbmQsCisgICAgIFB5X3NzaXplX3Qgbl9jaGFycywgUHlfc3NpemVfdCBuX3plcm9zLCBTVFJJTkdMSUJfQ0hBUiogdGhvdXNhbmRzX3NlcCwKICAgICAgUHlfc3NpemVfdCB0aG91c2FuZHNfc2VwX2xlbikKIHsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQogICAgIFB5X3NzaXplX3QgaTsKLSNlbmRpZgogCiAgICAgaWYgKHRob3VzYW5kc19zZXApIHsKICAgICAgICAgKmJ1ZmZlcl9lbmQgLT0gdGhvdXNhbmRzX3NlcF9sZW47CiAKICAgICAgICAgLyogQ29weSB0aGUgdGhvdXNhbmRzX3NlcCBjaGFycyBpbnRvIHRoZSBidWZmZXIuICovCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICAgICAgLyogQ29udmVydCBmcm9tIHRoZSBjaGFyJ3Mgb2YgdGhlIHRob3VzYW5kc19zZXAgZnJvbQotICAgICAgICAgICB0aGUgbG9jYWxlIGludG8gdW5pY29kZS4gKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHRob3VzYW5kc19zZXBfbGVuOyArK2kpCi0gICAgICAgICAgICAoKmJ1ZmZlcl9lbmQpW2ldID0gdGhvdXNhbmRzX3NlcFtpXTsKLSNlbHNlCi0gICAgICAgIC8qIE5vIGNvbnZlcnNpb24sIGp1c3QgbWVtY3B5IHRoZSB0aG91c2FuZHNfc2VwLiAqLwotICAgICAgICBtZW1jcHkoKmJ1ZmZlcl9lbmQsIHRob3VzYW5kc19zZXAsIHRob3VzYW5kc19zZXBfbGVuKTsKLSNlbmRpZgorICAgICAgICBtZW1jcHkoKmJ1ZmZlcl9lbmQsIHRob3VzYW5kc19zZXAsCisgICAgICAgICAgICAgICB0aG91c2FuZHNfc2VwX2xlbiAqIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUik7CiAgICAgfQogCiAgICAgKmJ1ZmZlcl9lbmQgLT0gbl9jaGFyczsKQEAgLTc2LDExICs2NSwxMiBAQAogICAgIG1lbWNweSgqYnVmZmVyX2VuZCwgKmRpZ2l0c19lbmQsIG5fY2hhcnMgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKIAogICAgICpidWZmZXJfZW5kIC09IG5femVyb3M7Ci0gICAgU1RSSU5HTElCX0ZJTEwoKmJ1ZmZlcl9lbmQsICcwJywgbl96ZXJvcyk7CisgICAgZm9yIChpID0gMDsgaSA8IG5femVyb3M7IGkrKykKKyAgICAgICAgKCpidWZmZXJfZW5kKVtpXSA9ICcwJzsKIH0KIAogLyoqCi0gKiBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmc6CisgKiBJbnNlcnRUaG91c2FuZHNHcm91cGluZzoKICAqIEBidWZmZXI6IEEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuCiAgKiBAbl9idWZmZXI6IE51bWJlciBvZiBjaGFyYWN0ZXJzIGluIEBidWZmZXIuCiAgKiBAZGlnaXRzOiBBIHBvaW50ZXIgdG8gdGhlIGRpZ2l0cyB3ZSdyZSByZWFkaW5nIGZyb20uIElmIGNvdW50CkBAIC0xMDksMTQgKzk5LDE2IEBACiAgKiBBcyBjbG9zZWx5IGFzIHBvc3NpYmxlLCB0aGlzIGNvZGUgbWltaWNzIHRoZSBsb2dpYyBpbiBkZWNpbWFsLnB5J3MKICAgICBfaW5zZXJ0X3Rob3VzYW5kc19zZXAoKS4KICAqKi8KLVB5X3NzaXplX3QKLV9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyhTVFJJTkdMSUJfQ0hBUiAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRob3VzYW5kc19zZXApCitzdGF0aWMgUHlfc3NpemVfdAorU1RSSU5HTElCKEluc2VydFRob3VzYW5kc0dyb3VwaW5nKSgKKyAgICBTVFJJTkdMSUJfQ0hBUiAqYnVmZmVyLAorICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCisgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0cywKKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAorICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAorICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nLAorICAgIFNUUklOR0xJQl9DSEFSICp0aG91c2FuZHNfc2VwLAorICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW4pCiB7CiAgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CiAgICAgUHlfc3NpemVfdCBuX3plcm9zOwpAQCAtMTI4LDIzICsxMjAsMjIgQEAKICAgICBTVFJJTkdMSUJfQ0hBUiAqZGlnaXRzX2VuZCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsOwogICAgIFB5X3NzaXplX3Qgbl9jaGFyczsKLSAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuID0gc3RybGVuKHRob3VzYW5kc19zZXApOwogICAgIFB5X3NzaXplX3QgcmVtYWluaW5nID0gbl9kaWdpdHM7IC8qIE51bWJlciBvZiBjaGFycyByZW1haW5pbmcgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBsb29rZWQgYXQgKi8KICAgICAvKiBBIGdlbmVyYXRvciB0aGF0IHJldHVybnMgYWxsIG9mIHRoZSBncm91cGluZyB3aWR0aHMsIHVudGlsIGl0CiAgICAgICAgcmV0dXJucyAwLiAqLwotICAgIEdyb3VwR2VuZXJhdG9yIGdyb3VwZ2VuOwotICAgIF9Hcm91cEdlbmVyYXRvcl9pbml0KCZncm91cGdlbiwgZ3JvdXBpbmcpOworICAgIFNUUklOR0xJQihHcm91cEdlbmVyYXRvcikgZ3JvdXBnZW47CisgICAgU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yX2luaXQpKCZncm91cGdlbiwgZ3JvdXBpbmcpOwogCiAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICBidWZmZXJfZW5kID0gYnVmZmVyICsgbl9idWZmZXI7CiAgICAgICAgIGRpZ2l0c19lbmQgPSBkaWdpdHMgKyBuX2RpZ2l0czsKICAgICB9CiAKLSAgICB3aGlsZSAoKGwgPSBfR3JvdXBHZW5lcmF0b3JfbmV4dCgmZ3JvdXBnZW4pKSA+IDApIHsKLSAgICAgICAgbCA9IE1JTihsLCBNQVgoTUFYKHJlbWFpbmluZywgbWluX3dpZHRoKSwgMSkpOwotICAgICAgICBuX3plcm9zID0gTUFYKDAsIGwgLSByZW1haW5pbmcpOwotICAgICAgICBuX2NoYXJzID0gTUFYKDAsIE1JTihyZW1haW5pbmcsIGwpKTsKKyAgICB3aGlsZSAoKGwgPSBTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3JfbmV4dCkoJmdyb3VwZ2VuKSkgPiAwKSB7CisgICAgICAgIGwgPSBQeV9NSU4obCwgUHlfTUFYKFB5X01BWChyZW1haW5pbmcsIG1pbl93aWR0aCksIDEpKTsKKyAgICAgICAgbl96ZXJvcyA9IFB5X01BWCgwLCBsIC0gcmVtYWluaW5nKTsKKyAgICAgICAgbl9jaGFycyA9IFB5X01BWCgwLCBQeV9NSU4ocmVtYWluaW5nLCBsKSk7CiAKICAgICAgICAgLyogVXNlIG5femVybyB6ZXJvJ3MgYW5kIG5fY2hhcnMgY2hhcnMgKi8KIApAQCAtMTUzLDcgKzE0NCw3IEBACiAKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgLyogQ29weSBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyLiAqLwotICAgICAgICAgICAgZmlsbCgmZGlnaXRzX2VuZCwgJmJ1ZmZlcl9lbmQsIG5fY2hhcnMsIG5femVyb3MsCisgICAgICAgICAgICBTVFJJTkdMSUIoZmlsbCkoJmRpZ2l0c19lbmQsICZidWZmZXJfZW5kLCBuX2NoYXJzLCBuX3plcm9zLAogICAgICAgICAgICAgICAgICB1c2Vfc2VwYXJhdG9yID8gdGhvdXNhbmRzX3NlcCA6IE5VTEwsIHRob3VzYW5kc19zZXBfbGVuKTsKICAgICAgICAgfQogCkBAIC0xNzIsNDEgKzE2MywxOCBAQAogICAgIGlmICghbG9vcF9icm9rZW4pIHsKICAgICAgICAgLyogV2UgbGVmdCB0aGUgbG9vcCB3aXRob3V0IHVzaW5nIGEgYnJlYWsgc3RhdGVtZW50LiAqLwogCi0gICAgICAgIGwgPSBNQVgoTUFYKHJlbWFpbmluZywgbWluX3dpZHRoKSwgMSk7Ci0gICAgICAgIG5femVyb3MgPSBNQVgoMCwgbCAtIHJlbWFpbmluZyk7Ci0gICAgICAgIG5fY2hhcnMgPSBNQVgoMCwgTUlOKHJlbWFpbmluZywgbCkpOworICAgICAgICBsID0gUHlfTUFYKFB5X01BWChyZW1haW5pbmcsIG1pbl93aWR0aCksIDEpOworICAgICAgICBuX3plcm9zID0gUHlfTUFYKDAsIGwgLSByZW1haW5pbmcpOworICAgICAgICBuX2NoYXJzID0gUHlfTUFYKDAsIFB5X01JTihyZW1haW5pbmcsIGwpKTsKIAogICAgICAgICAvKiBVc2Ugbl96ZXJvIHplcm8ncyBhbmQgbl9jaGFycyBjaGFycyAqLwogICAgICAgICBjb3VudCArPSAodXNlX3NlcGFyYXRvciA/IHRob3VzYW5kc19zZXBfbGVuIDogMCkgKyBuX3plcm9zICsgbl9jaGFyczsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgLyogQ29weSBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyLiAqLwotICAgICAgICAgICAgZmlsbCgmZGlnaXRzX2VuZCwgJmJ1ZmZlcl9lbmQsIG5fY2hhcnMsIG5femVyb3MsCisgICAgICAgICAgICBTVFJJTkdMSUIoZmlsbCkoJmRpZ2l0c19lbmQsICZidWZmZXJfZW5kLCBuX2NoYXJzLCBuX3plcm9zLAogICAgICAgICAgICAgICAgICB1c2Vfc2VwYXJhdG9yID8gdGhvdXNhbmRzX3NlcCA6IE5VTEwsIHRob3VzYW5kc19zZXBfbGVuKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gY291bnQ7CiB9CiAKLS8qKgotICogX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlOgotICogQGJ1ZmZlcjogQSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHN0cmluZy4KLSAqIEBuX2RpZ2l0czogVGhlIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIHN0cmluZywgaW4gd2hpY2ggd2Ugd2FudAotICogICAgICAgICAgICB0byBwdXQgdGhlIGdyb3VwaW5nIGNoYXJzLgotICoKLSAqIFJlYWRzIHRoZWUgY3VycmVudCBsb2NhbGUgYW5kIGNhbGxzIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZygpLgotICoqLwotUHlfc3NpemVfdAotX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlKFNUUklOR0xJQl9DSEFSICpidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgpCi17Ci0gICAgICAgIHN0cnVjdCBsY29udiAqbG9jYWxlX2RhdGEgPSBsb2NhbGVjb252KCk7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nID0gbG9jYWxlX2RhdGEtPmdyb3VwaW5nOwotICAgICAgICBjb25zdCBjaGFyICp0aG91c2FuZHNfc2VwID0gbG9jYWxlX2RhdGEtPnRob3VzYW5kc19zZXA7Ci0KLSAgICAgICAgcmV0dXJuIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyhidWZmZXIsIG5fYnVmZmVyLCBkaWdpdHMsIG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsIHRob3VzYW5kc19zZXApOwotfQotI2VuZGlmIC8qIFNUUklOR0xJQl9MT0NBTEVVVElMX0ggKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmgKaW5kZXggMDE3MGJkZC4uNDBjYjUxMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmgKQEAgLTEsMTQgKzEsMTEgQEAKIC8qIHN0cmluZ2xpYjogcGFydGl0aW9uIGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX1BBUlRJVElPTl9ICi0jZGVmaW5lIFNUUklOR0xJQl9QQVJUSVRJT05fSAotCiAjaWZuZGVmIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKICNlcnJvciBtdXN0IGluY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBtb2R1bGUKICNlbmRpZgogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QqKQotc3RyaW5nbGliX3BhcnRpdGlvbihQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihwYXJ0aXRpb24pKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBzZXBfb2JqLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc2VwLCBQeV9zc2l6ZV90IHNlcF9sZW4pCkBAIC0yNSw3ICsyMiw3IEBACiAgICAgaWYgKCFvdXQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKKyAgICBwb3MgPSBGQVNUU0VBUkNIKHN0ciwgc3RyX2xlbiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOwogCiAgICAgaWYgKHBvcyA8IDApIHsKICNpZiBTVFJJTkdMSUJfTVVUQUJMRQpAQCAtNTgsNyArNTUsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QqKQotc3RyaW5nbGliX3JwYXJ0aXRpb24oUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocnBhcnRpdGlvbikoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCogc2VwX29iaiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzZXAsIFB5X3NzaXplX3Qgc2VwX2xlbikKQEAgLTc1LDcgKzcyLDcgQEAKICAgICBpZiAoIW91dCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgc3RyX2xlbiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKKyAgICBwb3MgPSBGQVNUU0VBUkNIKHN0ciwgc3RyX2xlbiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKIAogICAgIGlmIChwb3MgPCAwKSB7CiAjaWYgU1RSSU5HTElCX01VVEFCTEUKQEAgLTEwNyw0ICsxMDQsMyBAQAogICAgIHJldHVybiBvdXQ7CiB9CiAKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaCBiL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmgKaW5kZXggNjBlNzc2Ny4uOTQ3ZGQyOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oCkBAIC0xLDggKzEsNSBAQAogLyogc3RyaW5nbGliOiBzcGxpdCBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9TUExJVF9ICi0jZGVmaW5lIFNUUklOR0xJQl9TUExJVF9ICi0KICNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2Vycm9yIG11c3QgaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIgYmVmb3JlIGluY2x1ZGluZyB0aGlzIG1vZHVsZQogI2VuZGlmCkBAIC01NCw3ICs1MSw3IEBACiAjZGVmaW5lIEZJWF9QUkVBTExPQ19TSVpFKGxpc3QpIFB5X1NJWkUobGlzdCkgPSBjb3VudAogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9zcGxpdF93aGl0ZXNwYWNlKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHNwbGl0X3doaXRlc3BhY2UpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKQEAgLTEwMiw3ICs5OSw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3NwbGl0X2NoYXIoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIoc3BsaXRfY2hhcikoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiBjaCwKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCkBAIC0xNDUsNyArMTQyLDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfc3BsaXQoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIoc3BsaXQpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc2VwLCBQeV9zc2l6ZV90IHNlcF9sZW4sCiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKQEAgLTE1OCw3ICsxNTUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoc2VwX2xlbiA9PSAxKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0X2NoYXIoc3RyX29iaiwgc3RyLCBzdHJfbGVuLCBzZXBbMF0sIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFNUUklOR0xJQihzcGxpdF9jaGFyKShzdHJfb2JqLCBzdHIsIHN0cl9sZW4sIHNlcFswXSwgbWF4Y291bnQpOwogCiAgICAgbGlzdCA9IFB5TGlzdF9OZXcoUFJFQUxMT0NfU0laRShtYXhjb3VudCkpOwogICAgIGlmIChsaXN0ID09IE5VTEwpCkBAIC0xNjYsNyArMTYzLDcgQEAKIAogICAgIGkgPSBqID0gMDsKICAgICB3aGlsZSAobWF4Y291bnQtLSA+IDApIHsKLSAgICAgICAgcG9zID0gZmFzdHNlYXJjaChzdHIraSwgc3RyX2xlbi1pLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CisgICAgICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyK2ksIHN0cl9sZW4taSwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOwogICAgICAgICBpZiAocG9zIDwgMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBqID0gaSArIHBvczsKQEAgLTE5Myw3ICsxOTAsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9yc3BsaXRfd2hpdGVzcGFjZShQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihyc3BsaXRfd2hpdGVzcGFjZSkoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CkBAIC0yNDMsNyArMjQwLDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfcnNwbGl0X2NoYXIoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocnNwbGl0X2NoYXIpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiBjaCwKICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMjg3LDcgKzI4NCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3JzcGxpdChQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihyc3BsaXQpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzZXAsIFB5X3NzaXplX3Qgc2VwX2xlbiwKICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKQEAgLTMwMCw3ICsyOTcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoc2VwX2xlbiA9PSAxKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdF9jaGFyKHN0cl9vYmosIHN0ciwgc3RyX2xlbiwgc2VwWzBdLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBTVFJJTkdMSUIocnNwbGl0X2NoYXIpKHN0cl9vYmosIHN0ciwgc3RyX2xlbiwgc2VwWzBdLCBtYXhjb3VudCk7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldyhQUkVBTExPQ19TSVpFKG1heGNvdW50KSk7CiAgICAgaWYgKGxpc3QgPT0gTlVMTCkKQEAgLTMwOCw3ICszMDUsNyBAQAogCiAgICAgaiA9IHN0cl9sZW47CiAgICAgd2hpbGUgKG1heGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBqLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOworICAgICAgICBwb3MgPSBGQVNUU0VBUkNIKHN0ciwgaiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKICAgICAgICAgaWYgKHBvcyA8IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgU1BMSVRfQUREKHN0ciwgcG9zICsgc2VwX2xlbiwgaik7CkBAIC0zMzYsNyArMzMzLDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfc3BsaXRsaW5lcyhQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihzcGxpdGxpbmVzKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGludCBrZWVwZW5kcykKIHsKQEAgLTM5MSw0ICszODgsMyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0jZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaCBiL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaAppbmRleCAxYzQ5NDI2Li43YmI5MWE3IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oCkBAIC02LDcgKzYsMTAgQEAKICAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCiAjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAwCiAKKyNkZWZpbmUgRkFTVFNFQVJDSCBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSBzdHJpbmdsaWJfIyNGCiAjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeUJ5dGVzT2JqZWN0CisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAgICAxCiAjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBjaGFyCiAjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAic3RyaW5nIgogI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlMiCkBAIC0xNSw5ICsxOCw2IEBACiAjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyh4KSAoKHggPT0gJ1xuJykgfHwgKHggPT0gJ1xyJykpCiAjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwoeCkgICAoKHggPj0gJzAnKSAmJiAoeCA8PSAnOScpKQogI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMKHgpICAgKFNUUklOR0xJQl9JU0RFQ0lNQUwoeCkgPyAoeCAtICcwJykgOiAtMSkKLSNkZWZpbmUgU1RSSU5HTElCX1RPVVBQRVIgICAgICAgIFB5X1RPVVBQRVIKLSNkZWZpbmUgU1RSSU5HTElCX1RPTE9XRVIgICAgICAgIFB5X1RPTE9XRVIKLSNkZWZpbmUgU1RSSU5HTElCX0ZJTEwgICAgICAgICAgIG1lbXNldAogI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcKICNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUKICNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKQEAgLTI1LDcgKzI1LDUgQEAKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5Qnl0ZXNfQ2hlY2sKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5Qnl0ZXNfQ2hlY2tFeGFjdAogI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCi0jZGVmaW5lIFNUUklOR0xJQl9HUk9VUElORyAgICAgICBfUHlCeXRlc19JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkdfTE9DQUxFIF9QeUJ5dGVzX0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlCiAjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9SZXByCiAjZW5kaWYgLyogIVNUUklOR0xJQl9TVFJJTkdERUZTX0ggKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VjczFsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL3VjczFsaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGM2ZmNiCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qIHRoaXMgaXMgc29ydCBvZiBhIGhhY2suICB0aGVyZSdzIGF0IGxlYXN0IG9uZSBwbGFjZSAoZm9ybWF0dGluZworICAgZmxvYXRzKSB3aGVyZSBzb21lIHN0cmluZ2xpYiBjb2RlIHRha2VzIGEgZGlmZmVyZW50IHBhdGggaWYgaXQncworICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KKyNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDEKKworI2RlZmluZSBGQVNUU0VBUkNIICAgICAgICAgICAgICAgdWNzMWxpYl9mYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICB1Y3MxbGliXyMjRgorI2RlZmluZSBTVFJJTkdMSUJfT0JKRUNUICAgICAgICAgUHlVbmljb2RlT2JqZWN0CisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAgICAxCisjZGVmaW5lIFNUUklOR0xJQl9NQVhfQ0hBUiAgICAgICAweEZGdQorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVUNTMQorI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCisjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKKyNkZWZpbmUgU1RSSU5HTElCX0VNUFRZICAgICAgICAgIHVuaWNvZGVfZW1wdHkKKyNkZWZpbmUgU1RSSU5HTElCX0lTU1BBQ0UgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRQorI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCisjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBCisjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSAorI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgX1B5VW5pY29kZV9Gcm9tVUNTMQorI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgbm90X3N1cHBvcnRlZAorI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAorCisjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKKyNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X0FTQ0lJCisKKyNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfdWNzMV9JbnNlcnRUaG91c2FuZHNHcm91cGluZworCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VjczJsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL3VjczJsaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWU1NzI5Ci0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHRoaXMgaXMgc29ydCBvZiBhIGhhY2suICB0aGVyZSdzIGF0IGxlYXN0IG9uZSBwbGFjZSAoZm9ybWF0dGluZworICAgZmxvYXRzKSB3aGVyZSBzb21lIHN0cmluZ2xpYiBjb2RlIHRha2VzIGEgZGlmZmVyZW50IHBhdGggaWYgaXQncworICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KKyNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDEKKworI2RlZmluZSBGQVNUU0VBUkNIICAgICAgICAgICAgICAgdWNzMmxpYl9mYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICB1Y3MybGliXyMjRgorI2RlZmluZSBTVFJJTkdMSUJfT0JKRUNUICAgICAgICAgUHlVbmljb2RlT2JqZWN0CisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAgICAyCisjZGVmaW5lIFNUUklOR0xJQl9NQVhfQ0hBUiAgICAgICAweEZGRkZ1CisjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VQ1MyCisjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKKyNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgorI2RlZmluZSBTVFJJTkdMSUJfRU1QVFkgICAgICAgICAgdW5pY29kZV9lbXB0eQorI2RlZmluZSBTVFJJTkdMSUJfSVNTUEFDRSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFCisjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKKyNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEKKyNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICisjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBfUHlVbmljb2RlX0Zyb21VQ1MyCisjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CisKKyNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgorI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfQVNDSUkKKworI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV91Y3MyX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDdhMjdlCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHRoaXMgaXMgc29ydCBvZiBhIGhhY2suICB0aGVyZSdzIGF0IGxlYXN0IG9uZSBwbGFjZSAoZm9ybWF0dGluZworICAgZmxvYXRzKSB3aGVyZSBzb21lIHN0cmluZ2xpYiBjb2RlIHRha2VzIGEgZGlmZmVyZW50IHBhdGggaWYgaXQncworICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KKyNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDEKKworI2RlZmluZSBGQVNUU0VBUkNIICAgICAgICAgICAgICAgdWNzNGxpYl9mYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICB1Y3M0bGliXyMjRgorI2RlZmluZSBTVFJJTkdMSUJfT0JKRUNUICAgICAgICAgUHlVbmljb2RlT2JqZWN0CisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAgICA0CisjZGVmaW5lIFNUUklOR0xJQl9NQVhfQ0hBUiAgICAgICAweDEwRkZGRnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzQKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIF9QeVVuaWNvZGVfRnJvbVVDUzQKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX3VjczRfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaCBiL09iamVjdHMvc3RyaW5nbGliL3VuZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMxMTdlYwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VuZGVmLmgKQEAgLTAsMCArMSwxMiBAQAorI3VuZGVmICBGQVNUU0VBUkNICisjdW5kZWYgIFNUUklOR0xJQgorI3VuZGVmICBTVFJJTkdMSUJfU0laRU9GX0NIQVIKKyN1bmRlZiAgU1RSSU5HTElCX01BWF9DSEFSCisjdW5kZWYgIFNUUklOR0xJQl9DSEFSCisjdW5kZWYgIFNUUklOR0xJQl9TVFIKKyN1bmRlZiAgU1RSSU5HTElCX0xFTgorI3VuZGVmICBTVFJJTkdMSUJfTkVXCisjdW5kZWYgIFNUUklOR0xJQl9SRVNJWkUKKyN1bmRlZiAgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisjdW5kZWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaApzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBPYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmgKcmVuYW1lIHRvIE9iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKaW5kZXggNmM3YWRjYi4uYmU1ODBjNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKQEAgLTEsMTYgKzEsNyBAQAogLyoKLSAgICBzdHJpbmdfZm9ybWF0LmggLS0gaW1wbGVtZW50YXRpb24gb2Ygc3RyaW5nLmZvcm1hdCgpLgotCi0gICAgSXQgdXNlcyB0aGUgT2JqZWN0cy9zdHJpbmdsaWIgY29udmVudGlvbnMsIHNvIHRoYXQgaXQgY2FuIGJlCi0gICAgY29tcGlsZWQgZm9yIGJvdGggdW5pY29kZSBhbmQgc3RyaW5nIG9iamVjdHMuCisgICAgdW5pY29kZV9mb3JtYXQuaCAtLSBpbXBsZW1lbnRhdGlvbiBvZiBzdHIuZm9ybWF0KCkuCiAqLwogCi0KLS8qIERlZmluZXMgZm9yIFB5dGhvbiAyLjYgY29tcGF0aWJpbGl0eSAqLwotI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMzAwMDAwMAotI2RlZmluZSBQeUxvbmdfRnJvbVNzaXplX3QgX1B5TG9uZ19Gcm9tU3NpemVfdAotI2VuZGlmCi0KIC8qIERlZmluZXMgZm9yIG1vcmUgZWZmaWNpZW50bHkgcmVhbGxvY2F0aW5nIHRoZSBzdHJpbmcgYnVmZmVyICovCiAjZGVmaW5lIElOSVRJQUxfU0laRV9JTkNSRU1FTlQgMTAwCiAjZGVmaW5lIFNJWkVfTVVMVElQTElFUiAyCkBAIC0yNiw4ICsxNyw4IEBACiAgICB1bmljb2RlIHBvaW50ZXJzLgogKi8KIHR5cGVkZWYgc3RydWN0IHsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcHRyOwotICAgIFNUUklOR0xJQl9DSEFSICplbmQ7CisgICAgUHlPYmplY3QgKnN0cjsgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCisgICAgUHlfc3NpemVfdCBzdGFydCwgZW5kOwogfSBTdWJTdHJpbmc7CiAKIApAQCAtNjQsMzQgKzU1LDMyIEBACiAKIC8qIGZpbGwgaW4gYSBTdWJTdHJpbmcgZnJvbSBhIHBvaW50ZXIgYW5kIGxlbmd0aCAqLwogUHlfTE9DQUxfSU5MSU5FKHZvaWQpCi1TdWJTdHJpbmdfaW5pdChTdWJTdHJpbmcgKnN0ciwgU1RSSU5HTElCX0NIQVIgKnAsIFB5X3NzaXplX3QgbGVuKQorU3ViU3RyaW5nX2luaXQoU3ViU3RyaW5nICpzdHIsIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIHsKLSAgICBzdHItPnB0ciA9IHA7Ci0gICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgc3RyLT5lbmQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgc3RyLT5lbmQgPSBzdHItPnB0ciArIGxlbjsKKyAgICBzdHItPnN0ciA9IHM7CisgICAgc3RyLT5zdGFydCA9IHN0YXJ0OworICAgIHN0ci0+ZW5kID0gZW5kOwogfQogCi0vKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5wdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KKy8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnN0ciBpcyBOVUxMLCByZXR1cm4gTm9uZSAqLwogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCiBTdWJTdHJpbmdfbmV3X29iamVjdChTdWJTdHJpbmcgKnN0cikKIHsKLSAgICBpZiAoc3RyLT5wdHIgPT0gTlVMTCkgeworICAgIGlmIChzdHItPnN0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKHN0ci0+cHRyLCBzdHItPmVuZCAtIHN0ci0+cHRyKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzdHItPnN0ciwgc3RyLT5zdGFydCwgc3RyLT5lbmQpOwogfQogCi0vKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5wdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KKy8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnN0ciBpcyBOVUxMLCByZXR1cm4gTm9uZSAqLwogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCiBTdWJTdHJpbmdfbmV3X29iamVjdF9vcl9lbXB0eShTdWJTdHJpbmcgKnN0cikKIHsKLSAgICBpZiAoc3RyLT5wdHIgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhOVUxMLCAwKTsKKyAgICBpZiAoc3RyLT5zdHIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICB9Ci0gICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoc3RyLT5wdHIsIHN0ci0+ZW5kIC0gc3RyLT5wdHIpOworICAgIHJldHVybiBTdWJTdHJpbmdfbmV3X29iamVjdChzdHIpOwogfQogCiAvKiBSZXR1cm4gMSBpZiBhbiBlcnJvciBoYXMgYmVlbiBkZXRlY3RlZCBzd2l0Y2hpbmcgYmV0d2VlbiBhdXRvbWF0aWMKQEAgLTEyMSw3NCArMTEwLDYgQEAKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqICAgIE91dHB1dCBzdHJpbmcgbWFuYWdlbWVudCBmdW5jdGlvbnMgICAgICAgKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcHRyOwotICAgIFNUUklOR0xJQl9DSEFSICplbmQ7Ci0gICAgUHlPYmplY3QgKm9iajsKLSAgICBQeV9zc2l6ZV90IHNpemVfaW5jcmVtZW50OwotfSBPdXRwdXRTdHJpbmc7Ci0KLS8qIGluaXRpYWxpemUgYW4gT3V0cHV0U3RyaW5nIG9iamVjdCwgcmVzZXJ2aW5nIHNpemUgY2hhcmFjdGVycyAqLwotc3RhdGljIGludAotb3V0cHV0X2luaXRpYWxpemUoT3V0cHV0U3RyaW5nICpvdXRwdXQsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBvdXRwdXQtPm9iaiA9IFNUUklOR0xJQl9ORVcoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKG91dHB1dC0+b2JqID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgb3V0cHV0LT5wdHIgPSBTVFJJTkdMSUJfU1RSKG91dHB1dC0+b2JqKTsKLSAgICBvdXRwdXQtPmVuZCA9IFNUUklOR0xJQl9MRU4ob3V0cHV0LT5vYmopICsgb3V0cHV0LT5wdHI7Ci0gICAgb3V0cHV0LT5zaXplX2luY3JlbWVudCA9IElOSVRJQUxfU0laRV9JTkNSRU1FTlQ7Ci0KLSAgICByZXR1cm4gMTsKLX0KLQotLyoKLSAgICBvdXRwdXRfZXh0ZW5kIHJlYWxsb2NhdGVzIHRoZSBvdXRwdXQgc3RyaW5nIGJ1ZmZlci4KLSAgICBJdCByZXR1cm5zIGEgc3RhdHVzOiAgMCBmb3IgYSBmYWlsZWQgcmVhbGxvY2F0aW9uLAotICAgIDEgZm9yIHN1Y2Nlc3MuCi0qLwotCi1zdGF0aWMgaW50Ci1vdXRwdXRfZXh0ZW5kKE91dHB1dFN0cmluZyAqb3V0cHV0LCBQeV9zc2l6ZV90IGNvdW50KQotewotICAgIFNUUklOR0xJQl9DSEFSICpzdGFydHB0ciA9IFNUUklOR0xJQl9TVFIob3V0cHV0LT5vYmopOwotICAgIFB5X3NzaXplX3QgY3VybGVuID0gb3V0cHV0LT5wdHIgLSBzdGFydHB0cjsKLSAgICBQeV9zc2l6ZV90IG1heGxlbiA9IGN1cmxlbiArIGNvdW50ICsgb3V0cHV0LT5zaXplX2luY3JlbWVudDsKLQotICAgIGlmIChTVFJJTkdMSUJfUkVTSVpFKCZvdXRwdXQtPm9iaiwgbWF4bGVuKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0YXJ0cHRyID0gU1RSSU5HTElCX1NUUihvdXRwdXQtPm9iaik7Ci0gICAgb3V0cHV0LT5wdHIgPSBzdGFydHB0ciArIGN1cmxlbjsKLSAgICBvdXRwdXQtPmVuZCA9IHN0YXJ0cHRyICsgbWF4bGVuOwotICAgIGlmIChvdXRwdXQtPnNpemVfaW5jcmVtZW50IDwgTUFYX1NJWkVfSU5DUkVNRU5UKQotICAgICAgICBvdXRwdXQtPnNpemVfaW5jcmVtZW50ICo9IFNJWkVfTVVMVElQTElFUjsKLSAgICByZXR1cm4gMTsKLX0KLQotLyoKLSAgICBvdXRwdXRfZGF0YSBkdW1wcyBjaGFyYWN0ZXJzIGludG8gb3VyIG91dHB1dCBzdHJpbmcKLSAgICBidWZmZXIuCi0KLSAgICBJbiBzb21lIGNhc2VzLCBpdCBoYXMgdG8gcmVhbGxvY2F0ZSB0aGUgc3RyaW5nLgotCi0gICAgSXQgcmV0dXJucyBhIHN0YXR1czogIDAgZm9yIGEgZmFpbGVkIHJlYWxsb2NhdGlvbiwKLSAgICAxIGZvciBzdWNjZXNzLgotKi8KLXN0YXRpYyBpbnQKLW91dHB1dF9kYXRhKE91dHB1dFN0cmluZyAqb3V0cHV0LCBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcywgUHlfc3NpemVfdCBjb3VudCkKLXsKLSAgICBpZiAoKGNvdW50ID4gb3V0cHV0LT5lbmQgLSBvdXRwdXQtPnB0cikgJiYgIW91dHB1dF9leHRlbmQob3V0cHV0LCBjb3VudCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIG1lbWNweShvdXRwdXQtPnB0ciwgcywgY291bnQgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICBvdXRwdXQtPnB0ciArPSBjb3VudDsKLSAgICByZXR1cm4gMTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKioqKioqKioqKiAgRm9ybWF0IHN0cmluZyBwYXJzaW5nIC0tIGludGVnZXJzIGFuZCBpZGVudGlmaWVycyAqKioqKioqKiovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xOTcsMzEgKzExOCwyOCBAQAogewogICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IgPSAwOwogICAgIFB5X3NzaXplX3QgZGlnaXR2YWw7Ci0gICAgUHlfc3NpemVfdCBvbGRhY2N1bXVsYXRvcjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcDsKKyAgICBQeV9zc2l6ZV90IGk7CiAKICAgICAvKiBlbXB0eSBzdHJpbmcgaXMgYW4gZXJyb3IgKi8KLSAgICBpZiAoc3RyLT5wdHIgPj0gc3RyLT5lbmQpCisgICAgaWYgKHN0ci0+c3RhcnQgPj0gc3RyLT5lbmQpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGZvciAocCA9IHN0ci0+cHRyOyBwIDwgc3RyLT5lbmQ7IHArKykgewotICAgICAgICBkaWdpdHZhbCA9IFNUUklOR0xJQl9UT0RFQ0lNQUwoKnApOworICAgIGZvciAoaSA9IHN0ci0+c3RhcnQ7IGkgPCBzdHItPmVuZDsgaSsrKSB7CisgICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQURfQ0hBUihzdHItPnN0ciwgaSkpOwogICAgICAgICBpZiAoZGlnaXR2YWwgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAvKgotICAgICAgICAgICBUaGlzIHRyaWNrIHdhcyBjb3BpZWQgZnJvbSBvbGQgVW5pY29kZSBmb3JtYXQgY29kZS4gIEl0J3MgY3V0ZSwKLSAgICAgICAgICAgYnV0IHdvdWxkIHJlYWxseSBzdWNrIG9uIGFuIG9sZCBtYWNoaW5lIHdpdGggYSBzbG93IGRpdmlkZQotICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4gIEZvcnR1bmF0ZWx5LCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2UgZG8gbm90Ci0gICAgICAgICAgIGV4cGVjdCB0b28gbWFueSBkaWdpdHMuCisgICAgICAgICAgIERldGVjdCBwb3NzaWJsZSBvdmVyZmxvdyBiZWZvcmUgaXQgaGFwcGVuczoKKworICAgICAgICAgICAgICBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWwgPiBQWV9TU0laRV9UX01BWCBpZiBhbmQgb25seSBpZgorICAgICAgICAgICAgICBhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwLgogICAgICAgICAqLwotICAgICAgICBvbGRhY2N1bXVsYXRvciA9IGFjY3VtdWxhdG9yOwotICAgICAgICBhY2N1bXVsYXRvciAqPSAxMDsKLSAgICAgICAgaWYgKChhY2N1bXVsYXRvcisxMCkvMTAgIT0gb2xkYWNjdW11bGF0b3IrMSkgeworICAgICAgICBpZiAoYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGRlY2ltYWwgZGlnaXRzIGluIGZvcm1hdCBzdHJpbmciKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBhY2N1bXVsYXRvciArPSBkaWdpdHZhbDsKKyAgICAgICAgYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWw7CiAgICAgfQogICAgIHJldHVybiBhY2N1bXVsYXRvcjsKIH0KQEAgLTI4MiwzNCArMjAwLDM2IEBACiAgICAgICAgbGlmZXRpbWUgb2YgdGhlIGl0ZXJhdG9yLiAgY2FuIGJlIGVtcHR5ICovCiAgICAgU3ViU3RyaW5nIHN0cjsKIAotICAgIC8qIHBvaW50ZXIgdG8gd2hlcmUgd2UgYXJlIGluc2lkZSBmaWVsZF9uYW1lICovCi0gICAgU1RSSU5HTElCX0NIQVIgKnB0cjsKKyAgICAvKiBpbmRleCB0byB3aGVyZSB3ZSBhcmUgaW5zaWRlIGZpZWxkX25hbWUgKi8KKyAgICBQeV9zc2l6ZV90IGluZGV4OwogfSBGaWVsZE5hbWVJdGVyYXRvcjsKIAogCiBzdGF0aWMgaW50Ci1GaWVsZE5hbWVJdGVyYXRvcl9pbml0KEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBTVFJJTkdMSUJfQ0hBUiAqcHRyLAotICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbikKK0ZpZWxkTmFtZUl0ZXJhdG9yX2luaXQoRmllbGROYW1lSXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIHsKLSAgICBTdWJTdHJpbmdfaW5pdCgmc2VsZi0+c3RyLCBwdHIsIGxlbik7Ci0gICAgc2VsZi0+cHRyID0gc2VsZi0+c3RyLnB0cjsKKyAgICBTdWJTdHJpbmdfaW5pdCgmc2VsZi0+c3RyLCBzLCBzdGFydCwgZW5kKTsKKyAgICBzZWxmLT5pbmRleCA9IHN0YXJ0OwogICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50CiBfRmllbGROYW1lSXRlcmF0b3JfYXR0cihGaWVsZE5hbWVJdGVyYXRvciAqc2VsZiwgU3ViU3RyaW5nICpuYW1lKQogewotICAgIFNUUklOR0xJQl9DSEFSIGM7CisgICAgUHlfVUNTNCBjOwogCi0gICAgbmFtZS0+cHRyID0gc2VsZi0+cHRyOworICAgIG5hbWUtPnN0ciA9IHNlbGYtPnN0ci5zdHI7CisgICAgbmFtZS0+c3RhcnQgPSBzZWxmLT5pbmRleDsKIAogICAgIC8qIHJldHVybiBldmVyeXRoaW5nIHVudGlsICcuJyBvciAnWycgKi8KLSAgICB3aGlsZSAoc2VsZi0+cHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqc2VsZi0+cHRyKyspIHsKKyAgICB3aGlsZSAoc2VsZi0+aW5kZXggPCBzZWxmLT5zdHIuZW5kKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPmluZGV4KyspOworICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgY2FzZSAnWyc6CiAgICAgICAgIGNhc2UgJy4nOgogICAgICAgICAgICAgLyogYmFja3VwIHNvIHRoYXQgd2UgdGhpcyBjaGFyYWN0ZXIgd2lsbCBiZSBzZWVuIG5leHQgdGltZSAqLwotICAgICAgICAgICAgc2VsZi0+cHRyLS07CisgICAgICAgICAgICBzZWxmLT5pbmRleC0tOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMxNyw3ICsyMzcsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgLyogZW5kIG9mIHN0cmluZyBpcyBva2F5ICovCi0gICAgbmFtZS0+ZW5kID0gc2VsZi0+cHRyOworICAgIG5hbWUtPmVuZCA9IHNlbGYtPmluZGV4OwogICAgIHJldHVybiAxOwogfQogCkBAIC0zMjUsMTMgKzI0NSwxNSBAQAogX0ZpZWxkTmFtZUl0ZXJhdG9yX2l0ZW0oRmllbGROYW1lSXRlcmF0b3IgKnNlbGYsIFN1YlN0cmluZyAqbmFtZSkKIHsKICAgICBpbnQgYnJhY2tldF9zZWVuID0gMDsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjOworICAgIFB5X1VDUzQgYzsKIAotICAgIG5hbWUtPnB0ciA9IHNlbGYtPnB0cjsKKyAgICBuYW1lLT5zdHIgPSBzZWxmLT5zdHIuc3RyOworICAgIG5hbWUtPnN0YXJ0ID0gc2VsZi0+aW5kZXg7CiAKICAgICAvKiByZXR1cm4gZXZlcnl0aGluZyB1bnRpbCAnXScgKi8KLSAgICB3aGlsZSAoc2VsZi0+cHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqc2VsZi0+cHRyKyspIHsKKyAgICB3aGlsZSAoc2VsZi0+aW5kZXggPCBzZWxmLT5zdHIuZW5kKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPmluZGV4KyspOworICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgY2FzZSAnXSc6CiAgICAgICAgICAgICBicmFja2V0X3NlZW4gPSAxOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNDgsNyArMjcwLDcgQEAKIAogICAgIC8qIGVuZCBvZiBzdHJpbmcgaXMgb2theSAqLwogICAgIC8qIGRvbid0IGluY2x1ZGUgdGhlICddJyAqLwotICAgIG5hbWUtPmVuZCA9IHNlbGYtPnB0ci0xOworICAgIG5hbWUtPmVuZCA9IHNlbGYtPmluZGV4LTE7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTM1OCwxMCArMjgwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5hbWVfaWR4LCBTdWJTdHJpbmcgKm5hbWUpCiB7CiAgICAgLyogY2hlY2sgYXQgZW5kIG9mIGlucHV0ICovCi0gICAgaWYgKHNlbGYtPnB0ciA+PSBzZWxmLT5zdHIuZW5kKQorICAgIGlmIChzZWxmLT5pbmRleCA+PSBzZWxmLT5zdHIuZW5kKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIHN3aXRjaCAoKnNlbGYtPnB0cisrKSB7CisgICAgc3dpdGNoIChQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPmluZGV4KyspKSB7CiAgICAgY2FzZSAnLic6CiAgICAgICAgICppc19hdHRyaWJ1dGUgPSAxOwogICAgICAgICBpZiAoX0ZpZWxkTmFtZUl0ZXJhdG9yX2F0dHIoc2VsZiwgbmFtZSkgPT0gMCkKQEAgLTM4NCw3ICszMDYsNyBAQAogICAgIH0KIAogICAgIC8qIGVtcHR5IHN0cmluZyBpcyBhbiBlcnJvciAqLwotICAgIGlmIChuYW1lLT5wdHIgPT0gbmFtZS0+ZW5kKSB7CisgICAgaWYgKG5hbWUtPnN0YXJ0ID09IG5hbWUtPmVuZCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkVtcHR5IGF0dHJpYnV0ZSBpbiBmb3JtYXQgc3RyaW5nIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQwMCwyNCArMzIyLDIzIEBACiAgICAgICAgICAgICdyZXN0JyBpcyBhbiBpdGVyYXRvciB0byByZXR1cm4gdGhlIHJlc3QKICovCiBzdGF0aWMgaW50Ci1maWVsZF9uYW1lX3NwbGl0KFNUUklOR0xJQl9DSEFSICpwdHIsIFB5X3NzaXplX3QgbGVuLCBTdWJTdHJpbmcgKmZpcnN0LAorZmllbGRfbmFtZV9zcGxpdChQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgU3ViU3RyaW5nICpmaXJzdCwKICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqZmlyc3RfaWR4LCBGaWVsZE5hbWVJdGVyYXRvciAqcmVzdCwKICAgICAgICAgICAgICAgICAgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7Ci0gICAgU1RSSU5HTElCX0NIQVIgYzsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IHB0cjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gcHRyICsgbGVuOworICAgIFB5X1VDUzQgYzsKKyAgICBQeV9zc2l6ZV90IGkgPSBzdGFydDsKICAgICBpbnQgZmllbGRfbmFtZV9pc19lbXB0eTsKICAgICBpbnQgdXNpbmdfbnVtZXJpY19pbmRleDsKIAogICAgIC8qIGZpbmQgdGhlIHBhcnQgdXAgdW50aWwgdGhlIGZpcnN0ICcuJyBvciAnWycgKi8KLSAgICB3aGlsZSAocCA8IGVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqcCsrKSB7CisgICAgd2hpbGUgKGkgPCBlbmQpIHsKKyAgICAgICAgc3dpdGNoIChjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHIsIGkrKykpIHsKICAgICAgICAgY2FzZSAnWyc6CiAgICAgICAgIGNhc2UgJy4nOgogICAgICAgICAgICAgLyogYmFja3VwIHNvIHRoYXQgd2UgdGhpcyBjaGFyYWN0ZXIgaXMgYXZhaWxhYmxlIHRvIHRoZQogICAgICAgICAgICAgICAgInJlc3QiIGl0ZXJhdG9yICovCi0gICAgICAgICAgICBwLS07CisgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDI2LDE1ICszNDcsMTUgQEAKICAgICB9CiAKICAgICAvKiBzZXQgdXAgdGhlIHJldHVybiB2YWx1ZXMgKi8KLSAgICBTdWJTdHJpbmdfaW5pdChmaXJzdCwgcHRyLCBwIC0gcHRyKTsKLSAgICBGaWVsZE5hbWVJdGVyYXRvcl9pbml0KHJlc3QsIHAsIGVuZCAtIHApOworICAgIFN1YlN0cmluZ19pbml0KGZpcnN0LCBzdHIsIHN0YXJ0LCBpKTsKKyAgICBGaWVsZE5hbWVJdGVyYXRvcl9pbml0KHJlc3QsIHN0ciwgaSwgZW5kKTsKIAogICAgIC8qIHNlZSBpZiAiZmlyc3QiIGlzIGFuIGludGVnZXIsIGluIHdoaWNoIGNhc2UgaXQncyB1c2VkIGFzIGFuIGluZGV4ICovCiAgICAgKmZpcnN0X2lkeCA9IGdldF9pbnRlZ2VyKGZpcnN0KTsKICAgICBpZiAoKmZpcnN0X2lkeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZpZWxkX25hbWVfaXNfZW1wdHkgPSBmaXJzdC0+cHRyID49IGZpcnN0LT5lbmQ7CisgICAgZmllbGRfbmFtZV9pc19lbXB0eSA9IGZpcnN0LT5zdGFydCA+PSBmaXJzdC0+ZW5kOwogCiAgICAgLyogSWYgdGhlIGZpZWxkIG5hbWUgaXMgb21pdHRlZCBvciBpZiB3ZSBoYXZlIGEgbnVtZXJpYyBpbmRleAogICAgICAgIHNwZWNpZmllZCwgdGhlbiB3ZSdyZSBkb2luZyBudW1lcmljIGluZGV4aW5nIGludG8gYXJncy4gKi8KQEAgLTQ4OSw3ICs0MTAsNyBAQAogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgRmllbGROYW1lSXRlcmF0b3IgcmVzdDsKIAotICAgIGlmICghZmllbGRfbmFtZV9zcGxpdChpbnB1dC0+cHRyLCBpbnB1dC0+ZW5kIC0gaW5wdXQtPnB0ciwgJmZpcnN0LAorICAgIGlmICghZmllbGRfbmFtZV9zcGxpdChpbnB1dC0+c3RyLCBpbnB1dC0+c3RhcnQsIGlucHV0LT5lbmQsICZmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZGV4LCAmcmVzdCwgYXV0b19udW1iZXIpKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtNTczLDM5ICs0OTQsNDEgQEAKICAgICBhcHBlbmRzIHRvIHRoZSBvdXRwdXQuCiAqLwogc3RhdGljIGludAotcmVuZGVyX2ZpZWxkKFB5T2JqZWN0ICpmaWVsZG9iaiwgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgT3V0cHV0U3RyaW5nICpvdXRwdXQpCityZW5kZXJfZmllbGQoUHlPYmplY3QgKmZpZWxkb2JqLCBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgaW50IG9rID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWNfb2JqZWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqKCpmb3JtYXR0ZXIpKFB5T2JqZWN0ICosIFNUUklOR0xJQl9DSEFSICosIFB5X3NzaXplX3QpID0gTlVMTDsKLSAgICBTVFJJTkdMSUJfQ0hBUiogZm9ybWF0X3NwZWNfc3RhcnQgPSBmb3JtYXRfc3BlYy0+cHRyID8KLSAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5wdHIgOiBOVUxMOwotICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuID0gZm9ybWF0X3NwZWMtPnB0ciA/Ci0gICAgICAgICAgICBmb3JtYXRfc3BlYy0+ZW5kIC0gZm9ybWF0X3NwZWMtPnB0ciA6IDA7CisgICAgaW50ICgqZm9ybWF0dGVyKSAoX1B5VW5pY29kZVdyaXRlciosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5X3NzaXplX3QsIFB5X3NzaXplX3QpID0gTlVMTDsKKyAgICBpbnQgZXJyOwogCiAgICAgLyogSWYgd2Uga25vdyB0aGUgdHlwZSBleGFjdGx5LCBza2lwIHRoZSBsb29rdXAgb2YgX19mb3JtYXRfXyBhbmQganVzdAogICAgICAgIGNhbGwgdGhlIGZvcm1hdHRlciBkaXJlY3RseS4gKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoZmllbGRvYmopKQotICAgICAgICBmb3JtYXR0ZXIgPSBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkOworICAgICAgICBmb3JtYXR0ZXIgPSBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkV3JpdGVyOwogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVja0V4YWN0KGZpZWxkb2JqKSkKLSAgICAgICAgZm9ybWF0dGVyID1fUHlMb25nX0Zvcm1hdEFkdmFuY2VkOworICAgICAgICBmb3JtYXR0ZXIgPSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyOwogICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2tFeGFjdChmaWVsZG9iaikpCi0gICAgICAgIGZvcm1hdHRlciA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkOwotCi0gICAgLyogWFhYOiBmb3IgMi42LCBjb252ZXJ0IGZvcm1hdF9zcGVjIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlCi0gICAgICAgKHVuaWNvZGUsIHN0cikgKi8KKyAgICAgICAgZm9ybWF0dGVyID0gX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWRXcml0ZXI7CisgICAgZWxzZSBpZiAoUHlDb21wbGV4X0NoZWNrRXhhY3QoZmllbGRvYmopKQorICAgICAgICBmb3JtYXR0ZXIgPSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyOwogCiAgICAgaWYgKGZvcm1hdHRlcikgewogICAgICAgICAvKiB3ZSBrbm93IGV4YWN0bHkgd2hpY2ggZm9ybWF0dGVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gX19mb3JtYXRfXyBpcwogICAgICAgICAgICBsb29rZWQgdXAsIHNvIGNhbGwgaXQgZGlyZWN0bHksIGluc3RlYWQuICovCi0gICAgICAgIHJlc3VsdCA9IGZvcm1hdHRlcihmaWVsZG9iaiwgZm9ybWF0X3NwZWNfc3RhcnQsIGZvcm1hdF9zcGVjX2xlbik7CisgICAgICAgIGVyciA9IGZvcm1hdHRlcih3cml0ZXIsIGZpZWxkb2JqLCBmb3JtYXRfc3BlYy0+c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0LCBmb3JtYXRfc3BlYy0+ZW5kKTsKKyAgICAgICAgcmV0dXJuIChlcnIgPT0gMCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBXZSBuZWVkIHRvIGNyZWF0ZSBhbiBvYmplY3Qgb3V0IG9mIHRoZSBwb2ludGVycyB3ZSBoYXZlLCBiZWNhdXNlCiAgICAgICAgICAgIF9fZm9ybWF0X18gdGFrZXMgYSBzdHJpbmcvdW5pY29kZSBvYmplY3QgZm9yIGZvcm1hdF9zcGVjLiAqLwotICAgICAgICBmb3JtYXRfc3BlY19vYmplY3QgPSBTVFJJTkdMSUJfTkVXKGZvcm1hdF9zcGVjX3N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX2xlbik7CisgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+c3RyKQorICAgICAgICAgICAgZm9ybWF0X3NwZWNfb2JqZWN0ID0gUHlVbmljb2RlX1N1YnN0cmluZyhmb3JtYXRfc3BlYy0+c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYy0+c3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5lbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmb3JtYXRfc3BlY19vYmplY3QgPSBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICBpZiAoZm9ybWF0X3NwZWNfb2JqZWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKQEAgLTYxNCwyNCArNTM3LDEwIEBACiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDAwMDAwCi0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhyZXN1bHQpKTsKLSNlbHNlCi0gICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socmVzdWx0KSB8fCBQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSk7CisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCByZXN1bHQpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgb2sgPSAxOwogCi0gICAgLyogQ29udmVydCByZXN1bHQgdG8gb3VyIHR5cGUuICBXZSBjb3VsZCBiZSBzdHIsIGFuZCByZXN1bHQgY291bGQKLSAgICAgICBiZSB1bmljb2RlICovCi0gICAgewotICAgICAgICBQeU9iamVjdCAqdG1wID0gU1RSSU5HTElCX1RPU1RSKHJlc3VsdCk7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IHRtcDsKLSAgICB9Ci0jZW5kaWYKLQotICAgIG9rID0gb3V0cHV0X2RhdGEob3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX1NUUihyZXN1bHQpLCBTVFJJTkdMSUJfTEVOKHJlc3VsdCkpOwogZG9uZToKICAgICBQeV9YREVDUkVGKGZvcm1hdF9zcGVjX29iamVjdCk7CiAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwpAQCAtNjQwLDIzICs1NDksMjQgQEAKIAogc3RhdGljIGludAogcGFyc2VfZmllbGQoU3ViU3RyaW5nICpzdHIsIFN1YlN0cmluZyAqZmllbGRfbmFtZSwgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpjb252ZXJzaW9uKQorICAgICAgICAgICAgUHlfVUNTNCAqY29udmVyc2lvbikKIHsKICAgICAvKiBOb3RlIHRoaXMgZnVuY3Rpb24gd29ya3MgaWYgdGhlIGZpZWxkIG5hbWUgaXMgemVybyBsZW5ndGgsCiAgICAgICAgd2hpY2ggaXMgZ29vZC4gIFplcm8gbGVuZ3RoIGZpZWxkIG5hbWVzIGFyZSBoYW5kbGVkIGxhdGVyLCBpbgogICAgICAgIGZpZWxkX25hbWVfc3BsaXQuICovCiAKLSAgICBTVFJJTkdMSUJfQ0hBUiBjID0gMDsKKyAgICBQeV9VQ1M0IGMgPSAwOwogCiAgICAgLyogaW5pdGlhbGl6ZSB0aGVzZSwgYXMgdGhleSBtYXkgYmUgZW1wdHkgKi8KICAgICAqY29udmVyc2lvbiA9ICdcMCc7Ci0gICAgU3ViU3RyaW5nX2luaXQoZm9ybWF0X3NwZWMsIE5VTEwsIDApOworICAgIFN1YlN0cmluZ19pbml0KGZvcm1hdF9zcGVjLCBOVUxMLCAwLCAwKTsKIAogICAgIC8qIFNlYXJjaCBmb3IgdGhlIGZpZWxkIG5hbWUuICBpdCdzIHRlcm1pbmF0ZWQgYnkgdGhlIGVuZCBvZgogICAgICAgIHRoZSBzdHJpbmcsIG9yIGEgJzonIG9yICchJyAqLwotICAgIGZpZWxkX25hbWUtPnB0ciA9IHN0ci0+cHRyOwotICAgIHdoaWxlIChzdHItPnB0ciA8IHN0ci0+ZW5kKSB7Ci0gICAgICAgIHN3aXRjaCAoYyA9ICooc3RyLT5wdHIrKykpIHsKKyAgICBmaWVsZF9uYW1lLT5zdHIgPSBzdHItPnN0cjsKKyAgICBmaWVsZF9uYW1lLT5zdGFydCA9IHN0ci0+c3RhcnQ7CisgICAgd2hpbGUgKHN0ci0+c3RhcnQgPCBzdHItPmVuZCkgeworICAgICAgICBzd2l0Y2ggKChjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHItPnN0ciwgc3RyLT5zdGFydCsrKSkpIHsKICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgIGNhc2UgJyEnOgogICAgICAgICAgICAgYnJlYWs7CkBAIC02NjksMjYgKzU3OSwyNyBAQAogICAgIGlmIChjID09ICchJyB8fCBjID09ICc6JykgewogICAgICAgICAvKiB3ZSBoYXZlIGEgZm9ybWF0IHNwZWNpZmllciBhbmQvb3IgYSBjb252ZXJzaW9uICovCiAgICAgICAgIC8qIGRvbid0IGluY2x1ZGUgdGhlIGxhc3QgY2hhcmFjdGVyICovCi0gICAgICAgIGZpZWxkX25hbWUtPmVuZCA9IHN0ci0+cHRyLTE7CisgICAgICAgIGZpZWxkX25hbWUtPmVuZCA9IHN0ci0+c3RhcnQtMTsKIAogICAgICAgICAvKiB0aGUgZm9ybWF0IHNwZWNpZmllciBpcyB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nICovCi0gICAgICAgIGZvcm1hdF9zcGVjLT5wdHIgPSBzdHItPnB0cjsKKyAgICAgICAgZm9ybWF0X3NwZWMtPnN0ciA9IHN0ci0+c3RyOworICAgICAgICBmb3JtYXRfc3BlYy0+c3RhcnQgPSBzdHItPnN0YXJ0OwogICAgICAgICBmb3JtYXRfc3BlYy0+ZW5kID0gc3RyLT5lbmQ7CiAKICAgICAgICAgLyogc2VlIGlmIHRoZXJlJ3MgYSBjb252ZXJzaW9uIHNwZWNpZmllciAqLwogICAgICAgICBpZiAoYyA9PSAnIScpIHsKICAgICAgICAgICAgIC8qIHRoZXJlIG11c3QgYmUgYW5vdGhlciBjaGFyYWN0ZXIgcHJlc2VudCAqLwotICAgICAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5wdHIgPj0gZm9ybWF0X3NwZWMtPmVuZCkgeworICAgICAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5zdGFydCA+PSBmb3JtYXRfc3BlYy0+ZW5kKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQgb2YgZm9ybWF0IHdoaWxlIGxvb2tpbmcgZm9yIGNvbnZlcnNpb24gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqY29udmVyc2lvbiA9ICooZm9ybWF0X3NwZWMtPnB0cisrKTsKKyAgICAgICAgICAgICpjb252ZXJzaW9uID0gUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYy0+c3RyLCBmb3JtYXRfc3BlYy0+c3RhcnQrKyk7CiAKICAgICAgICAgICAgIC8qIGlmIHRoZXJlIGlzIGFub3RoZXIgY2hhcmFjdGVyLCBpdCBtdXN0IGJlIGEgY29sb24gKi8KLSAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+cHRyIDwgZm9ybWF0X3NwZWMtPmVuZCkgewotICAgICAgICAgICAgICAgIGMgPSAqKGZvcm1hdF9zcGVjLT5wdHIrKyk7CisgICAgICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnN0YXJ0IDwgZm9ybWF0X3NwZWMtPmVuZCkgeworICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGZvcm1hdF9zcGVjLT5zdHIsIGZvcm1hdF9zcGVjLT5zdGFydCsrKTsKICAgICAgICAgICAgICAgICBpZiAoYyAhPSAnOicpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJzonIGFmdGVyIGZvcm1hdCBzcGVjaWZpZXIiKTsKQEAgLTY5OSw3ICs2MTAsNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgICAgIC8qIGVuZCBvZiBzdHJpbmcsIHRoZXJlJ3Mgbm8gZm9ybWF0X3NwZWMgb3IgY29udmVyc2lvbiAqLwotICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnB0cjsKKyAgICAgICAgZmllbGRfbmFtZS0+ZW5kID0gc3RyLT5zdGFydDsKIAogICAgIHJldHVybiAxOwogfQpAQCAtNzE4LDkgKzYyOSwxMCBAQAogfSBNYXJrdXBJdGVyYXRvcjsKIAogc3RhdGljIGludAotTWFya3VwSXRlcmF0b3JfaW5pdChNYXJrdXBJdGVyYXRvciAqc2VsZiwgU1RSSU5HTElCX0NIQVIgKnB0ciwgUHlfc3NpemVfdCBsZW4pCitNYXJrdXBJdGVyYXRvcl9pbml0KE1hcmt1cEl0ZXJhdG9yICpzZWxmLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIHsKLSAgICBTdWJTdHJpbmdfaW5pdCgmc2VsZi0+c3RyLCBwdHIsIGxlbik7CisgICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgc3RyLCBzdGFydCwgZW5kKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNzI5LDMwICs2NDEsMzAgQEAKIHN0YXRpYyBpbnQKIE1hcmt1cEl0ZXJhdG9yX25leHQoTWFya3VwSXRlcmF0b3IgKnNlbGYsIFN1YlN0cmluZyAqbGl0ZXJhbCwKICAgICAgICAgICAgICAgICAgICAgaW50ICpmaWVsZF9wcmVzZW50LCBTdWJTdHJpbmcgKmZpZWxkX25hbWUsCi0gICAgICAgICAgICAgICAgICAgIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsIFNUUklOR0xJQl9DSEFSICpjb252ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLCBQeV9VQ1M0ICpjb252ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICBpbnQgKmZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZykKIHsKICAgICBpbnQgYXRfZW5kOwotICAgIFNUUklOR0xJQl9DSEFSIGMgPSAwOwotICAgIFNUUklOR0xJQl9DSEFSICpzdGFydDsKKyAgICBQeV9VQ1M0IGMgPSAwOworICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgaW50IGNvdW50OwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGludCBtYXJrdXBfZm9sbG93cyA9IDA7CiAKICAgICAvKiBpbml0aWFsaXplIGFsbCBvZiB0aGUgb3V0cHV0IHZhcmlhYmxlcyAqLwotICAgIFN1YlN0cmluZ19pbml0KGxpdGVyYWwsIE5VTEwsIDApOwotICAgIFN1YlN0cmluZ19pbml0KGZpZWxkX25hbWUsIE5VTEwsIDApOwotICAgIFN1YlN0cmluZ19pbml0KGZvcm1hdF9zcGVjLCBOVUxMLCAwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChsaXRlcmFsLCBOVUxMLCAwLCAwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmaWVsZF9uYW1lLCBOVUxMLCAwLCAwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCwgMCk7CiAgICAgKmNvbnZlcnNpb24gPSAnXDAnOwogICAgICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcgPSAwOwogICAgICpmaWVsZF9wcmVzZW50ID0gMDsKIAogICAgIC8qIE5vIG1vcmUgaW5wdXQsIGVuZCBvZiBpdGVyYXRvci4gIFRoaXMgaXMgdGhlIG5vcm1hbCBleGl0CiAgICAgICAgcGF0aC4gKi8KLSAgICBpZiAoc2VsZi0+c3RyLnB0ciA+PSBzZWxmLT5zdHIuZW5kKQorICAgIGlmIChzZWxmLT5zdHIuc3RhcnQgPj0gc2VsZi0+c3RyLmVuZCkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBzdGFydCA9IHNlbGYtPnN0ci5wdHI7CisgICAgc3RhcnQgPSBzZWxmLT5zdHIuc3RhcnQ7CiAKICAgICAvKiBGaXJzdCByZWFkIGFueSBsaXRlcmFsIHRleHQuIFJlYWQgdW50aWwgdGhlIGVuZCBvZiBzdHJpbmcsIGFuCiAgICAgICAgZXNjYXBlZCAneycgb3IgJ30nLCBvciBhbiB1bmVzY2FwZWQgJ3snLiAgSW4gb3JkZXIgdG8gbmV2ZXIKQEAgLTc2MSw4ICs2NzMsOCBAQAogICAgICAgIGluY2x1ZGluZyB0aGUgYnJhY2UsIGJ1dCBubyBmb3JtYXQgb2JqZWN0LiAgVGhlIG5leHQgdGltZQogICAgICAgIHRocm91Z2gsIHdlJ2xsIHJldHVybiB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbCwgc2tpcHBpbmcgcGFzdAogICAgICAgIHRoZSBzZWNvbmQgY29uc2VjdXRpdmUgYnJhY2UuICovCi0gICAgd2hpbGUgKHNlbGYtPnN0ci5wdHIgPCBzZWxmLT5zdHIuZW5kKSB7Ci0gICAgICAgIHN3aXRjaCAoYyA9ICooc2VsZi0+c3RyLnB0cisrKSkgeworICAgIHdoaWxlIChzZWxmLT5zdHIuc3RhcnQgPCBzZWxmLT5zdHIuZW5kKSB7CisgICAgICAgIHN3aXRjaCAoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc2VsZi0+c3RyLnN0ciwgc2VsZi0+c3RyLnN0YXJ0KyspKSB7CiAgICAgICAgIGNhc2UgJ3snOgogICAgICAgICBjYXNlICd9JzoKICAgICAgICAgICAgIG1hcmt1cF9mb2xsb3dzID0gMTsKQEAgLTc3MywxMCArNjg1LDEyIEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGF0X2VuZCA9IHNlbGYtPnN0ci5wdHIgPj0gc2VsZi0+c3RyLmVuZDsKLSAgICBsZW4gPSBzZWxmLT5zdHIucHRyIC0gc3RhcnQ7CisgICAgYXRfZW5kID0gc2VsZi0+c3RyLnN0YXJ0ID49IHNlbGYtPnN0ci5lbmQ7CisgICAgbGVuID0gc2VsZi0+c3RyLnN0YXJ0IC0gc3RhcnQ7CiAKLSAgICBpZiAoKGMgPT0gJ30nKSAmJiAoYXRfZW5kIHx8IChjICE9ICpzZWxmLT5zdHIucHRyKSkpIHsKKyAgICBpZiAoKGMgPT0gJ30nKSAmJiAoYXRfZW5kIHx8CisgICAgICAgICAgICAgICAgICAgICAgIChjICE9IFB5VW5pY29kZV9SRUFEX0NIQVIoc2VsZi0+c3RyLnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHIuc3RhcnQpKSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTaW5nbGUgJ30nIGVuY291bnRlcmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBmb3JtYXQgc3RyaW5nIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNzg3LDEwICs3MDEsMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghYXRfZW5kKSB7Ci0gICAgICAgIGlmIChjID09ICpzZWxmLT5zdHIucHRyKSB7CisgICAgICAgIGlmIChjID09IFB5VW5pY29kZV9SRUFEX0NIQVIoc2VsZi0+c3RyLnN0ciwgc2VsZi0+c3RyLnN0YXJ0KSkgewogICAgICAgICAgICAgLyogZXNjYXBlZCB9IG9yIHssIHNraXAgaXQgaW4gdGhlIGlucHV0LiAgdGhlcmUgaXMgbm8KICAgICAgICAgICAgICAgIG1hcmt1cCBvYmplY3QgZm9sbG93aW5nIHVzLCBqdXN0IHRoaXMgbGl0ZXJhbCB0ZXh0ICovCi0gICAgICAgICAgICBzZWxmLT5zdHIucHRyKys7CisgICAgICAgICAgICBzZWxmLT5zdHIuc3RhcnQrKzsKICAgICAgICAgICAgIG1hcmt1cF9mb2xsb3dzID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC03OTgsNyArNzEyLDggQEAKICAgICB9CiAKICAgICAvKiByZWNvcmQgdGhlIGxpdGVyYWwgdGV4dCAqLwotICAgIGxpdGVyYWwtPnB0ciA9IHN0YXJ0OworICAgIGxpdGVyYWwtPnN0ciA9IHNlbGYtPnN0ci5zdHI7CisgICAgbGl0ZXJhbC0+c3RhcnQgPSBzdGFydDsKICAgICBsaXRlcmFsLT5lbmQgPSBzdGFydCArIGxlbjsKIAogICAgIGlmICghbWFya3VwX2ZvbGxvd3MpCkBAIC04MTAsMTIgKzcyNSwxMiBAQAogICAgICpmaWVsZF9wcmVzZW50ID0gMTsKICAgICBjb3VudCA9IDE7CiAKLSAgICBzdGFydCA9IHNlbGYtPnN0ci5wdHI7CisgICAgc3RhcnQgPSBzZWxmLT5zdHIuc3RhcnQ7CiAKICAgICAvKiB3ZSBrbm93IHdlIGNhbid0IGhhdmUgYSB6ZXJvIGxlbmd0aCBzdHJpbmcsIHNvIGRvbid0IHdvcnJ5CiAgICAgICAgYWJvdXQgdGhhdCBjYXNlICovCi0gICAgd2hpbGUgKHNlbGYtPnN0ci5wdHIgPCBzZWxmLT5zdHIuZW5kKSB7Ci0gICAgICAgIHN3aXRjaCAoYyA9ICooc2VsZi0+c3RyLnB0cisrKSkgeworICAgIHdoaWxlIChzZWxmLT5zdHIuc3RhcnQgPCBzZWxmLT5zdHIuZW5kKSB7CisgICAgICAgIHN3aXRjaCAoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc2VsZi0+c3RyLnN0ciwgc2VsZi0+c3RyLnN0YXJ0KyspKSB7CiAgICAgICAgIGNhc2UgJ3snOgogICAgICAgICAgICAgLyogdGhlIGZvcm1hdCBzcGVjIG5lZWRzIHRvIGJlIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkLgogICAgICAgICAgICAgICAgdGhpcyBpcyBhbiBvcHRpbWl6YXRpb24sIGFuZCBub3Qgc3RyaWN0bHkgbmVlZGVkICovCkBAIC04MjgsNyArNzQzLDcgQEAKICAgICAgICAgICAgICAgICAvKiB3ZSdyZSBkb25lLiAgcGFyc2UgYW5kIGdldCBvdXQgKi8KICAgICAgICAgICAgICAgICBTdWJTdHJpbmcgczsKIAotICAgICAgICAgICAgICAgIFN1YlN0cmluZ19pbml0KCZzLCBzdGFydCwgc2VsZi0+c3RyLnB0ciAtIDEgLSBzdGFydCk7CisgICAgICAgICAgICAgICAgU3ViU3RyaW5nX2luaXQoJnMsIHNlbGYtPnN0ci5zdHIsIHN0YXJ0LCBzZWxmLT5zdHIuc3RhcnQgLSAxKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VfZmllbGQoJnMsIGZpZWxkX25hbWUsIGZvcm1hdF9zcGVjLCBjb252ZXJzaW9uKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtODQ3LDcgKzc2Miw3IEBACiAKIC8qIGRvIHRoZSAhciBvciAhcyBjb252ZXJzaW9uIG9uIG9iaiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRvX2NvbnZlcnNpb24oUHlPYmplY3QgKm9iaiwgU1RSSU5HTElCX0NIQVIgY29udmVyc2lvbikKK2RvX2NvbnZlcnNpb24oUHlPYmplY3QgKm9iaiwgUHlfVUNTNCBjb252ZXJzaW9uKQogewogICAgIC8qIFhYWCBpbiBwcmUtMy4wLCBkbyB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhpcyB0byB1bmljb2RlLCBzaW5jZSBpdAogICAgICAgIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBzdHJpbmc/ICovCkBAIC04NTUsMTEgKzc3MCw5IEBACiAgICAgY2FzZSAncic6CiAgICAgICAgIHJldHVybiBQeU9iamVjdF9SZXByKG9iaik7CiAgICAgY2FzZSAncyc6Ci0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfVE9TVFIob2JqKTsKLSNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDAwMDAwCisgICAgICAgIHJldHVybiBQeU9iamVjdF9TdHIob2JqKTsKICAgICBjYXNlICdhJzoKLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9UT0FTQ0lJKG9iaik7Ci0jZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0FTQ0lJKG9iaik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYgKGNvbnZlcnNpb24gPiAzMiAmJiBjb252ZXJzaW9uIDwgMTI3KSB7CiAgICAgICAgICAgICAgICAgLyogSXQncyB0aGUgQVNDSUkgc3VicmFuZ2U7IGNhc3RpbmcgdG8gY2hhciBpcyBzYWZlCkBAIC04OTEsOCArODA0LDggQEAKIAogc3RhdGljIGludAogb3V0cHV0X21hcmt1cChTdWJTdHJpbmcgKmZpZWxkX25hbWUsIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcsIFNUUklOR0xJQl9DSEFSIGNvbnZlcnNpb24sCi0gICAgICAgICAgICAgIE91dHB1dFN0cmluZyAqb3V0cHV0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKKyAgICAgICAgICAgICAgaW50IGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgUHlfVUNTNCBjb252ZXJzaW9uLAorICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAogICAgICAgICAgICAgICBpbnQgcmVjdXJzaW9uX2RlcHRoLCBBdXRvTnVtYmVyICphdXRvX251bWJlcikKIHsKICAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKQEAgLTkwOCw3ICs4MjEsNyBAQAogCiAgICAgaWYgKGNvbnZlcnNpb24gIT0gJ1wwJykgewogICAgICAgICB0bXAgPSBkb19jb252ZXJzaW9uKGZpZWxkb2JqLCBjb252ZXJzaW9uKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICBpZiAodG1wID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHRtcCkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKICAgICAgICAgLyogZG8gdGhlIGFzc2lnbm1lbnQsIHRyYW5zZmVycmluZyBvd25lcnNoaXA6IGZpZWxkb2JqID0gdG1wICovCkBAIC05MjEsMjAgKzgzNCwxOSBAQAogICAgIGlmIChmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcpIHsKICAgICAgICAgdG1wID0gYnVpbGRfc3RyaW5nKGZvcm1hdF9zcGVjLCBhcmdzLCBrd2FyZ3MsIHJlY3Vyc2lvbl9kZXB0aC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b19udW1iZXIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIGlmICh0bXAgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkodG1wKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgICAgICAvKiBub3RlIHRoYXQgaW4gdGhlIGNhc2Ugd2UncmUgZXhwYW5kaW5nIHRoZSBmb3JtYXQgc3RyaW5nLAogICAgICAgICAgICB0bXAgbXVzdCBiZSBrZXB0IGFyb3VuZCB1bnRpbCBhZnRlciB0aGUgY2FsbCB0bwogICAgICAgICAgICByZW5kZXJfZmllbGQuICovCi0gICAgICAgIFN1YlN0cmluZ19pbml0KCZleHBhbmRlZF9mb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX1NUUih0bXApLCBTVFJJTkdMSUJfTEVOKHRtcCkpOworICAgICAgICBTdWJTdHJpbmdfaW5pdCgmZXhwYW5kZWRfZm9ybWF0X3NwZWMsIHRtcCwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodG1wKSk7CiAgICAgICAgIGFjdHVhbF9mb3JtYXRfc3BlYyA9ICZleHBhbmRlZF9mb3JtYXRfc3BlYzsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBhY3R1YWxfZm9ybWF0X3NwZWMgPSBmb3JtYXRfc3BlYzsKIAotICAgIGlmIChyZW5kZXJfZmllbGQoZmllbGRvYmosIGFjdHVhbF9mb3JtYXRfc3BlYywgb3V0cHV0KSA9PSAwKQorICAgIGlmIChyZW5kZXJfZmllbGQoZmllbGRvYmosIGFjdHVhbF9mb3JtYXRfc3BlYywgd3JpdGVyKSA9PSAwKQogICAgICAgICBnb3RvIGRvbmU7CiAKICAgICByZXN1bHQgPSAxOwpAQCAtOTU0LDcgKzg2Niw3IEBACiAqLwogc3RhdGljIGludAogZG9fbWFya3VwKFN1YlN0cmluZyAqaW5wdXQsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAotICAgICAgICAgIE91dHB1dFN0cmluZyAqb3V0cHV0LCBpbnQgcmVjdXJzaW9uX2RlcHRoLCBBdXRvTnVtYmVyICphdXRvX251bWJlcikKKyAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIGludCByZWN1cnNpb25fZGVwdGgsIEF1dG9OdW1iZXIgKmF1dG9fbnVtYmVyKQogewogICAgIE1hcmt1cEl0ZXJhdG9yIGl0ZXI7CiAgICAgaW50IGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZzsKQEAgLTk2MywyMCArODc1LDM1IEBACiAgICAgU3ViU3RyaW5nIGxpdGVyYWw7CiAgICAgU3ViU3RyaW5nIGZpZWxkX25hbWU7CiAgICAgU3ViU3RyaW5nIGZvcm1hdF9zcGVjOwotICAgIFNUUklOR0xJQl9DSEFSIGNvbnZlcnNpb247CisgICAgUHlfVUNTNCBjb252ZXJzaW9uLCBtYXhjaGFyOworICAgIFB5X3NzaXplX3Qgc3VibGVuOworICAgIGludCBlcnI7CiAKLSAgICBNYXJrdXBJdGVyYXRvcl9pbml0KCZpdGVyLCBpbnB1dC0+cHRyLCBpbnB1dC0+ZW5kIC0gaW5wdXQtPnB0cik7CisgICAgTWFya3VwSXRlcmF0b3JfaW5pdCgmaXRlciwgaW5wdXQtPnN0ciwgaW5wdXQtPnN0YXJ0LCBpbnB1dC0+ZW5kKTsKICAgICB3aGlsZSAoKHJlc3VsdCA9IE1hcmt1cEl0ZXJhdG9yX25leHQoJml0ZXIsICZsaXRlcmFsLCAmZmllbGRfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpZWxkX25hbWUsICZmb3JtYXRfc3BlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcpKSA9PSAyKSB7Ci0gICAgICAgIGlmICghb3V0cHV0X2RhdGEob3V0cHV0LCBsaXRlcmFsLnB0ciwgbGl0ZXJhbC5lbmQgLSBsaXRlcmFsLnB0cikpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKGZpZWxkX3ByZXNlbnQpCisgICAgICAgIHN1YmxlbiA9IGxpdGVyYWwuZW5kIC0gbGl0ZXJhbC5zdGFydDsKKyAgICAgICAgaWYgKHN1YmxlbikgeworICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIobGl0ZXJhbC5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsLnN0YXJ0LCBsaXRlcmFsLmVuZCk7CisgICAgICAgICAgICBlcnIgPSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdWJsZW4sIG1heGNoYXIpOworICAgICAgICAgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWwuc3RyLCBsaXRlcmFsLnN0YXJ0LCBzdWJsZW4pOworICAgICAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3VibGVuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpZWxkX3ByZXNlbnQpIHsKKyAgICAgICAgICAgIGlmIChpdGVyLnN0ci5zdGFydCA9PSBpdGVyLnN0ci5lbmQpCisgICAgICAgICAgICAgICAgd3JpdGVyLT5vdmVyYWxsb2NhdGUgPSAwOwogICAgICAgICAgICAgaWYgKCFvdXRwdXRfbWFya3VwKCZmaWVsZF9uYW1lLCAmZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nLCBjb252ZXJzaW9uLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nLCBjb252ZXJzaW9uLCB3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywga3dhcmdzLCByZWN1cnNpb25fZGVwdGgsIGF1dG9fbnVtYmVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTkwLDQzICs5MTcsMjYgQEAKIGJ1aWxkX3N0cmluZyhTdWJTdHJpbmcgKmlucHV0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKICAgICAgICAgICAgICBpbnQgcmVjdXJzaW9uX2RlcHRoLCBBdXRvTnVtYmVyICphdXRvX251bWJlcikKIHsKLSAgICBPdXRwdXRTdHJpbmcgb3V0cHV0OwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0KLSAgICBvdXRwdXQub2JqID0gTlVMTDsgLyogbmVlZGVkIHNvIGNsZWFudXAgY29kZSBhbHdheXMgd29ya3MgKi8KKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBQeV9zc2l6ZV90IG1pbmxlbjsKIAogICAgIC8qIGNoZWNrIHRoZSByZWN1cnNpb24gbGV2ZWwgKi8KICAgICBpZiAocmVjdXJzaW9uX2RlcHRoIDw9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiTWF4IHN0cmluZyByZWN1cnNpb24gZXhjZWVkZWQiKTsKLSAgICAgICAgZ290byBkb25lOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBpbml0aWFsIHNpemUgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZm9ybWF0IHN0cmluZywgcGx1cyB0aGUgc2l6ZQotICAgICAgIGluY3JlbWVudC4gIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGRlZmF1bHQgKi8KLSAgICBpZiAoIW91dHB1dF9pbml0aWFsaXplKCZvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC0+ZW5kIC0gaW5wdXQtPnB0ciArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJTklUSUFMX1NJWkVfSU5DUkVNRU5UKSkKLSAgICAgICAgZ290byBkb25lOworICAgIG1pbmxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0LT5zdHIpICsgMTAwOworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCBtaW5sZW4pOwogCi0gICAgaWYgKCFkb19tYXJrdXAoaW5wdXQsIGFyZ3MsIGt3YXJncywgJm91dHB1dCwgcmVjdXJzaW9uX2RlcHRoLAorICAgIGlmICghZG9fbWFya3VwKGlucHV0LCBhcmdzLCBrd2FyZ3MsICZ3cml0ZXIsIHJlY3Vyc2lvbl9kZXB0aCwKICAgICAgICAgICAgICAgICAgICBhdXRvX251bWJlcikpIHsKLSAgICAgICAgZ290byBkb25lOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGNvdW50ID0gb3V0cHV0LnB0ciAtIFNUUklOR0xJQl9TVFIob3V0cHV0Lm9iaik7Ci0gICAgaWYgKFNUUklOR0xJQl9SRVNJWkUoJm91dHB1dC5vYmosIGNvdW50KSA8IDApIHsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHRyYW5zZmVyIG93bmVyc2hpcCB0byByZXN1bHQgKi8KLSAgICByZXN1bHQgPSBvdXRwdXQub2JqOwotICAgIG91dHB1dC5vYmogPSBOVUxMOwotCi1kb25lOgotICAgIFB5X1hERUNSRUYob3V0cHV0Lm9iaik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMDQ3LDggKzk1NywxMSBAQAogCiAgICAgQXV0b051bWJlciBhdXRvX251bWJlcjsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgQXV0b051bWJlcl9Jbml0KCZhdXRvX251bWJlcik7Ci0gICAgU3ViU3RyaW5nX2luaXQoJmlucHV0LCBTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKKyAgICBTdWJTdHJpbmdfaW5pdCgmaW5wdXQsIHNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKICAgICByZXR1cm4gYnVpbGRfc3RyaW5nKCZpbnB1dCwgYXJncywga3dhcmdzLCByZWN1cnNpb25fZGVwdGgsICZhdXRvX251bWJlcik7CiB9CiAKQEAgLTEwNzAsOSArOTgzLDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLQotICAgIFNUUklOR0xJQl9PQkpFQ1QgKnN0cjsKLQorICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgTWFya3VwSXRlcmF0b3IgaXRfbWFya3VwOwogfSBmb3JtYXR0ZXJpdGVyb2JqZWN0OwogCkBAIC0xMDk3LDcgKzEwMDgsNyBAQAogICAgIFN1YlN0cmluZyBsaXRlcmFsOwogICAgIFN1YlN0cmluZyBmaWVsZF9uYW1lOwogICAgIFN1YlN0cmluZyBmb3JtYXRfc3BlYzsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uOworICAgIFB5X1VDUzQgY29udmVyc2lvbjsKICAgICBpbnQgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nOwogICAgIGludCBmaWVsZF9wcmVzZW50OwogICAgIGludCByZXN1bHQgPSBNYXJrdXBJdGVyYXRvcl9uZXh0KCZpdC0+aXRfbWFya3VwLCAmbGl0ZXJhbCwgJmZpZWxkX3ByZXNlbnQsCkBAIC0xMTQxLDcgKzEwNTIsOCBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKGNvbnZlcnNpb25fc3RyKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb252ZXJzaW9uX3N0ciA9IFNUUklOR0xJQl9ORVcoJmNvbnZlcnNpb24sIDEpOworICAgICAgICAgICAgY29udmVyc2lvbl9zdHIgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb252ZXJzaW9uLCAxKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25fc3RyID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKQEAgLTExOTgsNyArMTExMCw3IEBACiAgICBkZXNjcmliaW5nIHRoZSBwYXJzZWQgZWxlbWVudHMuICBJdCdzIGEgd3JhcHBlciBhcm91bmQKICAgIHN0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmgncyBNYXJrdXBJdGVyYXRvciAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdHRlcl9wYXJzZXIoUHlPYmplY3QgKmlnbm9yZWQsIFNUUklOR0xJQl9PQkpFQ1QgKnNlbGYpCitmb3JtYXR0ZXJfcGFyc2VyKFB5T2JqZWN0ICppZ25vcmVkLCBQeU9iamVjdCAqc2VsZikKIHsKICAgICBmb3JtYXR0ZXJpdGVyb2JqZWN0ICppdDsKIApAQCAtMTIwNyw2ICsxMTE5LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpdCA9IFB5T2JqZWN0X05ldyhmb3JtYXR0ZXJpdGVyb2JqZWN0LCAmUHlGb3JtYXR0ZXJJdGVyX1R5cGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyMTYsMTAgKzExMzEsNyBAQAogICAgIGl0LT5zdHIgPSBzZWxmOwogCiAgICAgLyogaW5pdGlhbGl6ZSB0aGUgY29udGFpbmVkIE1hcmt1cEl0ZXJhdG9yICovCi0gICAgTWFya3VwSXRlcmF0b3JfaW5pdCgmaXQtPml0X21hcmt1cCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLQorICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0LT5pdF9tYXJrdXAsIChQeU9iamVjdCopc2VsZiwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKIH0KIApAQCAtMTIzNSw5ICsxMTQ3LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLQotICAgIFNUUklOR0xJQl9PQkpFQ1QgKnN0cjsKLQorICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgRmllbGROYW1lSXRlcmF0b3IgaXRfZmllbGQ7CiB9IGZpZWxkbmFtZWl0ZXJvYmplY3Q7CiAKQEAgLTEzMzgsNyArMTI0OCw3IEBACiAgICBmaWVsZF9uYW1lX3NwbGl0LiAgVGhlIGl0ZXJhdG9yIGl0IHJldHVybnMgaXMgYQogICAgRmllbGROYW1lSXRlcmF0b3IgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdChQeU9iamVjdCAqaWdub3JlZCwgU1RSSU5HTElCX09CSkVDVCAqc2VsZikKK2Zvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0KFB5T2JqZWN0ICppZ25vcmVkLCBQeU9iamVjdCAqc2VsZikKIHsKICAgICBTdWJTdHJpbmcgZmlyc3Q7CiAgICAgUHlfc3NpemVfdCBmaXJzdF9pZHg7CkBAIC0xMzUyLDYgKzEyNjIsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGl0ID0gUHlPYmplY3RfTmV3KGZpZWxkbmFtZWl0ZXJvYmplY3QsICZQeUZpZWxkTmFtZUl0ZXJfVHlwZSk7CiAgICAgaWYgKGl0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM2Myw4ICsxMjc2LDcgQEAKIAogICAgIC8qIFBhc3MgaW4gYXV0b19udW1iZXIgPSBOVUxMLiBXZSdsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGZvcgogICAgICAgIGZpcnN0X29iaiBpbiB0aGF0IGNhc2UuICovCi0gICAgaWYgKCFmaWVsZF9uYW1lX3NwbGl0KFNUUklOR0xJQl9TVFIoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZiksCisgICAgaWYgKCFmaWVsZF9uYW1lX3NwbGl0KChQeU9iamVjdCopc2VsZiwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmZpcnN0X2lkeCwgJml0LT5pdF9maWVsZCwgTlVMTCkpCiAgICAgICAgIGdvdG8gZG9uZTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaCBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKaW5kZXggMDlkYWU2ZC4uZjE2ZjIxZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCkBAIC02LDcgKzYsMTAgQEAKICAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCiAjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCiAKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIHN0cmluZ2xpYl8jI0YKICNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgUHlfVU5JQ09ERV9TSVpFCiAjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VTklDT0RFCiAjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKICNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgpAQCAtMTUsMTcgKzE4LDEyIEBACiAjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKICNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCiAjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAotI2RlZmluZSBTVFJJTkdMSUJfVE9VUFBFUiAgICAgICAgUHlfVU5JQ09ERV9UT1VQUEVSCi0jZGVmaW5lIFNUUklOR0xJQl9UT0xPV0VSICAgICAgICBQeV9VTklDT0RFX1RPTE9XRVIKLSNkZWZpbmUgU1RSSU5HTElCX0ZJTEwgICAgICAgICAgIFB5X1VOSUNPREVfRklMTAogI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUKICNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Vbmljb2RlCiAjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBQeVVuaWNvZGVfUmVzaXplCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0Ci0jZGVmaW5lIFNUUklOR0xJQl9HUk9VUElORyAgICAgICBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCi0jZGVmaW5lIFNUUklOR0xJQl9HUk9VUElOR19MT0NBTEUgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZQogCiAjaWYgUFlfVkVSU0lPTl9IRVggPCAweDAzMDAwMDAwCiAjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9Vbmljb2RlCmRpZmYgLS1naXQgYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKaW5kZXggYjM0NTQ2MC4uOWM4NDNmYSAxMDA2NDQKLS0tIGEvT2JqZWN0cy90dXBsZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwpAQCAtNDUsNiArNDUsMjIgQEAKIH0KICNlbmRpZgogCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlUdXBsZV9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyNpZiBQeVR1cGxlX01BWFNBVkVTSVpFID4gMAorICAgIGludCBpOworICAgIGNoYXIgYnVmWzEyOF07CisgICAgZm9yIChpID0gMTsgaSA8IFB5VHVwbGVfTUFYU0FWRVNJWkU7IGkrKykgeworICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgImZyZWUgJWQtc2l6ZWQgUHlUdXBsZU9iamVjdCIsIGkpOworICAgICAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZnJlZVtpXSwgX1B5T2JqZWN0X1ZBUl9TSVpFKCZQeVR1cGxlX1R5cGUsIGkpKTsKKyAgICB9CisjZW5kaWYKK30KIAogUHlPYmplY3QgKgogUHlUdXBsZV9OZXcocmVnaXN0ZXIgUHlfc3NpemVfdCBzaXplKQpAQCAtODAsMTUgKzk2LDExIEBACiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBQeV9zc2l6ZV90IG5ieXRlcyA9IHNpemUgKiBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgICAgICBpZiAobmJ5dGVzIC8gc2l6ZW9mKFB5T2JqZWN0ICopICE9IChzaXplX3Qpc2l6ZSB8fAotICAgICAgICAgICAgKG5ieXRlcyA+IFBZX1NTSVpFX1RfTUFYIC0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0gc2l6ZW9mKFB5T2JqZWN0ICopKSkKLSAgICAgICAgeworICAgICAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIHNpemVvZihQeVR1cGxlT2JqZWN0KSAtCisgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeU9iamVjdCAqKSkgLyBzaXplb2YoUHlPYmplY3QgKikpIHsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICB9Ci0gICAgICAgIG5ieXRlcyArPSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLSBzaXplb2YoUHlPYmplY3QgKik7Ci0KICAgICAgICAgb3AgPSBQeU9iamVjdF9HQ19OZXdWYXIoUHlUdXBsZU9iamVjdCwgJlB5VHVwbGVfVHlwZSwgc2l6ZSk7CiAgICAgICAgIGlmIChvcCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMTUsMTEgKzMyNywxMiBAQAogc3RhdGljIFB5X2hhc2hfdAogdHVwbGVoYXNoKFB5VHVwbGVPYmplY3QgKnYpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfaGFzaF90IHgsIHk7CisgICAgcmVnaXN0ZXIgUHlfdWhhc2hfdCB4OworICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCB5OwogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgbGVuID0gUHlfU0laRSh2KTsKICAgICByZWdpc3RlciBQeU9iamVjdCAqKnA7Ci0gICAgUHlfaGFzaF90IG11bHQgPSBfUHlIQVNIX01VTFRJUExJRVI7Ci0gICAgeCA9IDB4MzQ1Njc4TDsKKyAgICBQeV91aGFzaF90IG11bHQgPSBfUHlIQVNIX01VTFRJUExJRVI7CisgICAgeCA9IDB4MzQ1Njc4OwogICAgIHAgPSB2LT5vYl9pdGVtOwogICAgIHdoaWxlICgtLWxlbiA+PSAwKSB7CiAgICAgICAgIHkgPSBQeU9iamVjdF9IYXNoKCpwKyspOwpAQCAtMzMwLDcgKzM0Myw3IEBACiAgICAgICAgIG11bHQgKz0gKFB5X2hhc2hfdCkoODI1MjBMICsgbGVuICsgbGVuKTsKICAgICB9CiAgICAgeCArPSA5NzUzMUw7Ci0gICAgaWYgKHggPT0gLTEpCisgICAgaWYgKHggPT0gKFB5X3VoYXNoX3QpLTEpCiAgICAgICAgIHggPSAtMjsKICAgICByZXR1cm4geDsKIH0KQEAgLTQ2NCw5ICs0NzcsOSBAQAogICAgICAgICBpZiAoUHlfU0laRShhKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5VHVwbGVfTmV3KDApOwogICAgIH0KLSAgICBzaXplID0gUHlfU0laRShhKSAqIG47Ci0gICAgaWYgKHNpemUvUHlfU0laRShhKSAhPSBuKQorICAgIGlmIChuID4gUFlfU1NJWkVfVF9NQVggLyBQeV9TSVpFKGEpKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBzaXplID0gUHlfU0laRShhKSAqIG47CiAgICAgbnAgPSAoUHlUdXBsZU9iamVjdCAqKSBQeVR1cGxlX05ldyhzaXplKTsKICAgICBpZiAobnAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDYsMTAgKzU1OSw4IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgdmxlbiwgd2xlbjsKIAotICAgIGlmICghUHlUdXBsZV9DaGVjayh2KSB8fCAhUHlUdXBsZV9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlUdXBsZV9DaGVjayh2KSB8fCAhUHlUdXBsZV9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgdnQgPSAoUHlUdXBsZU9iamVjdCAqKXY7CiAgICAgd3QgPSAoUHlUdXBsZU9iamVjdCAqKXc7CkBAIC05NzAsOCArOTgxLDM5IEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3R1cGxlaXRlcl9yZWR1Y2UodHVwbGVpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBpZiAoaXQtPml0X3NlcSkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTylsIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKCgpKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIikpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHVwbGVpdGVyX3NldHN0YXRlKHR1cGxlaXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaXQtPml0X3NlcSAhPSBOVUxMICYmIGluZGV4ID4gUHlUdXBsZV9HRVRfU0laRShpdC0+aXRfc2VxKSkKKyAgICAgICAgICAgIGluZGV4ID0gUHlUdXBsZV9HRVRfU0laRShpdC0+aXRfc2VxKTsKKyAgICAgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgdHVwbGVpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbil0dXBsZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pdHVwbGVpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXR1cGxlaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVvYmplY3QuYyBiL09iamVjdHMvdHlwZW9iamVjdC5jCmluZGV4IGZkMmFlNjcuLjVkNjI1YTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHlwZW9iamVjdC5jCkBAIC0xNCwxNiArMTQsMTcgQEAKICAgIE1DQUNIRV9NQVhfQVRUUl9TSVpFLCBzaW5jZSBpdCBtaWdodCBiZSBhIHByb2JsZW0gaWYgdmVyeSBsYXJnZQogICAgc3RyaW5ncyBhcmUgdXNlZCBhcyBhdHRyaWJ1dGUgbmFtZXMuICovCiAjZGVmaW5lIE1DQUNIRV9NQVhfQVRUUl9TSVpFICAgIDEwMAotI2RlZmluZSBNQ0FDSEVfU0laRV9FWFAgICAgICAgICAxMAorI2RlZmluZSBNQ0FDSEVfU0laRV9FWFAgICAgICAgICA5CiAjZGVmaW5lIE1DQUNIRV9IQVNIKHZlcnNpb24sIG5hbWVfaGFzaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICgoKHVuc2lnbmVkIGludCkodmVyc2lvbikgKiAodW5zaWduZWQgaW50KShuYW1lX2hhc2gpKSAgICAgICAgICBcCiAgICAgICAgICA+PiAoOCpzaXplb2YodW5zaWduZWQgaW50KSAtIE1DQUNIRV9TSVpFX0VYUCkpCiAjZGVmaW5lIE1DQUNIRV9IQVNIX01FVEhPRCh0eXBlLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE1DQUNIRV9IQVNIKCh0eXBlKS0+dHBfdmVyc2lvbl90YWcsICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAoKFB5VW5pY29kZU9iamVjdCAqKShuYW1lKSktPmhhc2gpCisgICAgICAgICAgICAgICAgICAgICgoUHlBU0NJSU9iamVjdCAqKShuYW1lKSktPmhhc2gpCiAjZGVmaW5lIE1DQUNIRV9DQUNIRUFCTEVfTkFNRShuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFB5VW5pY29kZV9DaGVja0V4YWN0KG5hbWUpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG5hbWUpIDw9IE1DQUNIRV9NQVhfQVRUUl9TSVpFCisgICAgICAgIFB5VW5pY29kZV9SRUFEWShuYW1lKSAhPSAtMSAmJiAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpIDw9IE1DQUNIRV9NQVhfQVRUUl9TSVpFCiAKIHN0cnVjdCBtZXRob2RfY2FjaGVfZW50cnkgewogICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwpAQCAtMzQsNiArMzUsMjIgQEAKIHN0YXRpYyBzdHJ1Y3QgbWV0aG9kX2NhY2hlX2VudHJ5IG1ldGhvZF9jYWNoZVsxIDw8IE1DQUNIRV9TSVpFX0VYUF07CiBzdGF0aWMgdW5zaWduZWQgaW50IG5leHRfdmVyc2lvbl90YWcgPSAwOwogCitfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOworX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworX1B5X0lERU5USUZJRVIoX19kb2NfXyk7CitfUHlfSURFTlRJRklFUihfX2dldGl0ZW1fXyk7CitfUHlfSURFTlRJRklFUihfX2dldGF0dHJpYnV0ZV9fKTsKK19QeV9JREVOVElGSUVSKF9faGFzaF9fKTsKK19QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOworX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlUeXBlX0xvb2t1cElkKFB5VHlwZU9iamVjdCAqdHlwZSwgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKKwogdW5zaWduZWQgaW50CiBQeVR5cGVfQ2xlYXJDYWNoZSh2b2lkKQogewpAQCAtOTYsMTUgKzExMywxMyBAQAogc3RhdGljIHZvaWQKIHR5cGVfbXJvX21vZGlmaWVkKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmJhc2VzKSB7CiAgICAgLyoKLSAgICAgICBDaGVjayB0aGF0IGFsbCBiYXNlIGNsYXNzZXMgb3IgZWxlbWVudHMgb2YgdGhlIG1ybyBvZiB0eXBlIGFyZQorICAgICAgIENoZWNrIHRoYXQgYWxsIGJhc2UgY2xhc3NlcyBvciBlbGVtZW50cyBvZiB0aGUgTVJPIG9mIHR5cGUgYXJlCiAgICAgICAgYWJsZSB0byBiZSBjYWNoZWQuICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGUgYmFzZQogICAgICAgIGNsYXNzZXMgb3IgbXJvIG9mIHRoZSB0eXBlIGFyZSBhbHRlcmVkLgogCiAgICAgICAgVW5zZXQgSEFWRV9WRVJTSU9OX1RBRyBhbmQgVkFMSURfVkVSU0lPTl9UQUcgaWYgdGhlIHR5cGUKLSAgICAgICBpbmhlcml0cyBmcm9tIGFuIG9sZC1zdHlsZSBjbGFzcywgZWl0aGVyIGRpcmVjdGx5IG9yIGlmIGl0Ci0gICAgICAgYXBwZWFycyBpbiB0aGUgTVJPIG9mIGEgbmV3LXN0eWxlIGNsYXNzLiAgTm8gc3VwcG9ydCBlaXRoZXIgZm9yCi0gICAgICAgY3VzdG9tIE1ST3MgdGhhdCBpbmNsdWRlIHR5cGVzIHRoYXQgYXJlIG5vdCBvZmZpY2lhbGx5IHN1cGVyCi0gICAgICAgdHlwZXMuCisgICAgICAgaGFzIGEgY3VzdG9tIE1STyB0aGF0IGluY2x1ZGVzIGEgdHlwZSB3aGljaCBpcyBub3Qgb2ZmaWNpYWxseQorICAgICAgIHN1cGVyIHR5cGUuCiAKICAgICAgICBDYWxsZWQgZnJvbSBtcm9faW50ZXJuYWwsIHdoaWNoIHdpbGwgc3Vic2VxdWVudGx5IGJlIGNhbGxlZCBvbgogICAgICAgIGVhY2ggc3ViY2xhc3Mgd2hlbiB0aGVpciBtcm8gaXMgcmVjdXJzaXZlbHkgdXBkYXRlZC4KQEAgLTEyMCwxMSArMTM1LDcgQEAKICAgICAgICAgUHlPYmplY3QgKmIgPSBQeVR1cGxlX0dFVF9JVEVNKGJhc2VzLCBpKTsKICAgICAgICAgUHlUeXBlT2JqZWN0ICpjbHM7CiAKLSAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYikgKSB7Ci0gICAgICAgICAgICBjbGVhciA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCisgICAgICAgIGFzc2VydChQeVR5cGVfQ2hlY2soYikpOwogICAgICAgICBjbHMgPSAoUHlUeXBlT2JqZWN0ICopYjsKIAogICAgICAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKGNscywgUHlfVFBGTEFHU19IQVZFX1ZFUlNJT05fVEFHKSB8fApAQCAtMjAxLDYgKzIxMiwyMiBAQAogICAgIHswfQogfTsKIAorc3RhdGljIGludAorY2hlY2tfc2V0X3NwZWNpYWxfdHlwZV9hdHRyKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuJXMiLCB0eXBlLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBkZWxldGUgJXMuJXMiLCB0eXBlLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9uYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgdm9pZCAqY29udGV4dCkKIHsKQEAgLTIyMiw2ICsyNDksMTkgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0eXBlX3F1YWxuYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB7CisgICAgICAgIFB5SGVhcFR5cGVPYmplY3QqIGV0ID0gKFB5SGVhcFR5cGVPYmplY3QqKXR5cGU7CisgICAgICAgIFB5X0lOQ1JFRihldC0+aHRfcXVhbG5hbWUpOworICAgICAgICByZXR1cm4gZXQtPmh0X3F1YWxuYW1lOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHR5cGVfbmFtZSh0eXBlLCBjb250ZXh0KTsKKyAgICB9Cit9CisKIHN0YXRpYyBpbnQKIHR5cGVfc2V0X25hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yMjksMTYgKzI2OSw4IEBACiAgICAgY2hhciAqdHBfbmFtZTsKICAgICBQeU9iamVjdCAqdG1wOwogCi0gICAgaWYgKCEodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNldCAlcy5fX25hbWVfXyIsIHR5cGUtPnRwX25hbWUpOworICAgIGlmICghY2hlY2tfc2V0X3NwZWNpYWxfdHlwZV9hdHRyKHR5cGUsIHZhbHVlLCAiX19uYW1lX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fbmFtZV9fIiwgdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiY2FuIG9ubHkgYXNzaWduIHN0cmluZyB0byAlcy5fX25hbWVfXywgbm90ICclcyciLApAQCAtMjc0LDYgKzMwNiwyNSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50Cit0eXBlX3NldF9xdWFsbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBQeUhlYXBUeXBlT2JqZWN0KiBldDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBzdHJpbmcgdG8gJXMuX19xdWFsbmFtZV9fLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7CisgICAgZXQtPmh0X3F1YWxuYW1lID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yODEsNyArMzMyLDcgQEAKICAgICBjaGFyICpzOwogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgewotICAgICAgICBtb2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIl9fbW9kdWxlX18iKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzAxLDIwICszNTIsMTIgQEAKIHN0YXRpYyBpbnQKIHR5cGVfc2V0X21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fbW9kdWxlX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAogICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKIAotICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIsIHZhbHVlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgdmFsdWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDM1LDE2ICs0NzgsOCBAQAogICAgIFB5VHlwZU9iamVjdCAqbmV3X2Jhc2UsICpvbGRfYmFzZTsKICAgICBQeU9iamVjdCAqb2xkX2Jhc2VzLCAqb2xkX21ybzsKIAotICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuX19iYXNlc19fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX2Jhc2VzX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fYmFzZXNfXyIsIHR5cGUtPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmICghUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAiY2FuIG9ubHkgYXNzaWduIHR1cGxlIHRvICVzLl9fYmFzZXNfXywgbm90ICVzIiwKQEAgLTQ2MSw4ICs0OTYsNyBAQAogICAgICAgICBvYiA9IFB5VHVwbGVfR0VUX0lURU0odmFsdWUsIGkpOwogICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhvYikpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVzLl9fYmFzZXNfXyBtdXN0IGJlIHR1cGxlIG9mIG9sZC0gb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJuZXctc3R5bGUgY2xhc3Nlcywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2Jhc2VzX18gbXVzdCBiZSB0dXBsZSBvZiBjbGFzc2VzLCBub3QgJyVzJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgUHlfVFlQRShvYiktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC01ODAsNyArNjE0LDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgJiYgdHlwZS0+dHBfZG9jICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwotICAgIHJlc3VsdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIik7CisgICAgcmVzdWx0ID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwpAQCAtNTk1LDYgKzYyOSwxNSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3R5cGVfc2V0X2RvYyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fZG9jX18iKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXywgdmFsdWUpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9fX2luc3RhbmNlY2hlY2tfXyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmluc3QpCiB7CkBAIC02MjUsMTIgKzY2OCwxMyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgdHlwZV9nZXRzZXRzW10gPSB7CiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpdHlwZV9uYW1lLCAoc2V0dGVyKXR5cGVfc2V0X25hbWUsIE5VTEx9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcil0eXBlX3F1YWxuYW1lLCAoc2V0dGVyKXR5cGVfc2V0X3F1YWxuYW1lLCBOVUxMfSwKICAgICB7Il9fYmFzZXNfXyIsIChnZXR0ZXIpdHlwZV9nZXRfYmFzZXMsIChzZXR0ZXIpdHlwZV9zZXRfYmFzZXMsIE5VTEx9LAogICAgIHsiX19tb2R1bGVfXyIsIChnZXR0ZXIpdHlwZV9tb2R1bGUsIChzZXR0ZXIpdHlwZV9zZXRfbW9kdWxlLCBOVUxMfSwKICAgICB7Il9fYWJzdHJhY3RtZXRob2RzX18iLCAoZ2V0dGVyKXR5cGVfYWJzdHJhY3RtZXRob2RzLAogICAgICAoc2V0dGVyKXR5cGVfc2V0X2Fic3RyYWN0bWV0aG9kcywgTlVMTH0sCiAgICAgeyJfX2RpY3RfXyIsICAoZ2V0dGVyKXR5cGVfZGljdCwgIE5VTEwsIE5VTEx9LAotICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpdHlwZV9nZXRfZG9jLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2RvYywgKHNldHRlcil0eXBlX3NldF9kb2MsIE5VTEx9LAogICAgIHswfQogfTsKIApAQCAtNjQ2LDcgKzY5MCw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KLSAgICBuYW1lID0gdHlwZV9uYW1lKHR5cGUsIE5VTEwpOworICAgIG5hbWUgPSB0eXBlX3F1YWxuYW1lKHR5cGUsIE5VTEwpOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlfWERFQ1JFRihtb2QpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxMSw3ICs5NTUsNyBAQAogCiAgICAgLyogRmluZCB0aGUgbmVhcmVzdCBiYXNlIHdpdGggYSBkaWZmZXJlbnQgdHBfZGVhbGxvYyAqLwogICAgIGJhc2UgPSB0eXBlOwotICAgIHdoaWxlICgoYmFzZWRlYWxsb2MgPSBiYXNlLT50cF9kZWFsbG9jKSA9PSBzdWJ0eXBlX2RlYWxsb2MpIHsKKyAgICB3aGlsZSAoKC8qYmFzZWRlYWxsb2MgPSovIGJhc2UtPnRwX2RlYWxsb2MpID09IHN1YnR5cGVfZGVhbGxvYykgewogICAgICAgICBiYXNlID0gYmFzZS0+dHBfYmFzZTsKICAgICAgICAgYXNzZXJ0KGJhc2UpOwogICAgIH0KQEAgLTExMzYsMTYgKzExODAsMTEgQEAKICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb29rdXBfbWF5YmUoUHlPYmplY3QgKnNlbGYsIGNoYXIgKmF0dHJzdHIsIFB5T2JqZWN0ICoqYXR0cm9iaikKK2xvb2t1cF9tYXliZShQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCphdHRyb2JqID09IE5VTEwpIHsKLSAgICAgICAgKmF0dHJvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhhdHRyc3RyKTsKLSAgICAgICAgaWYgKCphdHRyb2JqID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgKmF0dHJvYmopOworICAgIHJlcyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgYXR0cmlkKTsKICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgZGVzY3JnZXRmdW5jIGY7CiAgICAgICAgIGlmICgoZiA9IFB5X1RZUEUocmVzKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQpAQCAtMTE1NywxOCArMTE5NiwxOCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKLSAgICBQeU9iamVjdCAqcmVzID0gbG9va3VwX21heWJlKHNlbGYsIGF0dHJzdHIsIGF0dHJvYmopOworICAgIFB5T2JqZWN0ICpyZXMgPSBsb29rdXBfbWF5YmUoc2VsZiwgYXR0cmlkKTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgKmF0dHJvYmopOworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIGF0dHJpZC0+b2JqZWN0KTsKICAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCi1fUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKnNlbGYsIF9QeV9JZGVudGlmaWVyICphdHRyaWQpCiB7Ci0gICAgcmV0dXJuIGxvb2t1cF9tYXliZShzZWxmLCBhdHRyc3RyLCBhdHRyb2JqKTsKKyAgICByZXR1cm4gbG9va3VwX21heWJlKHNlbGYsIGF0dHJpZCk7CiB9CiAKIC8qIEEgdmFyaWF0aW9uIG9mIFB5T2JqZWN0X0NhbGxNZXRob2QgdGhhdCB1c2VzIGxvb2t1cF9tZXRob2QoKQpAQCAtMTE3NiwxNyArMTIxNSwxNyBAQAogICAgYXMgbG9va3VwX21ldGhvZCB0byBjYWNoZSB0aGUgaW50ZXJuZWQgbmFtZSBzdHJpbmcgb2JqZWN0LiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKICAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1lLCBuYW1lb2JqKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsICpuYW1lb2JqKTsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZWlkLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTEyMTIsMTkgKzEyNTEsMTcgQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7CiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWUsIG5hbWVvYmopOworICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHZhX2VuZCh2YSk7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICAgICAgfQorICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTI5MCw3ICsxMzI3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjbGFzc19uYW1lKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNscywgIl9fbmFtZV9fIik7CisgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKQEAgLTE1NDUsOSArMTU4Miw5IEBACiAgICAgICAgIHJlc3VsdCA9IG1yb19pbXBsZW1lbnRhdGlvbih0eXBlKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbXJvX3N0cjsKKyAgICAgICAgX1B5X0lERU5USUZJRVIobXJvKTsKICAgICAgICAgY2hlY2tpdCA9IDE7Ci0gICAgICAgIG1ybyA9IGxvb2t1cF9tZXRob2QoKFB5T2JqZWN0ICopdHlwZSwgIm1ybyIsICZtcm9fc3RyKTsKKyAgICAgICAgbXJvID0gbG9va3VwX21ldGhvZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9tcm8pOwogICAgICAgICBpZiAobXJvID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobXJvLCBOVUxMKTsKQEAgLTE1OTEsNyArMTYyOCw3IEBACiAgICAgdHlwZS0+dHBfbXJvID0gdHVwbGU7CiAKICAgICB0eXBlX21yb19tb2RpZmllZCh0eXBlLCB0eXBlLT50cF9tcm8pOwotICAgIC8qIGNvcm5lciBjYXNlOiB0aGUgb2xkLXN0eWxlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KKyAgICAvKiBjb3JuZXIgY2FzZTogdGhlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KICAgICAgICBmcm9tIHRoZSBjdXN0b20gTVJPICovCiAgICAgdHlwZV9tcm9fbW9kaWZpZWQodHlwZSwgdHlwZS0+dHBfYmFzZXMpOwogCkBAIC0xNjQ4LDkgKzE2ODUsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJhIG5ldy1zdHlsZSBjbGFzcyBjYW4ndCBoYXZlIG9ubHkgY2xhc3NpYyBiYXNlcyIpOworICAgIGFzc2VydCAoYmFzZSAhPSBOVUxMKTsKKwogICAgIHJldHVybiBiYXNlOwogfQogCkBAIC0xNzE4LDE1ICsxNzU0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfZGljdF9kZXNjcmlwdG9yKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRpY3Rfc3RyOwogICAgIFB5T2JqZWN0ICpkZXNjcjsKIAotICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGRpY3Rfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHlwZSwgZGljdF9zdHIpOworICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXBJZCh0eXBlLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRlc2NyID09IE5VTEwgfHwgIVB5RGVzY3JfSXNEYXRhKGRlc2NyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NDQsOCArMTc3NCw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3VidHlwZV9kaWN0KFB5T2JqZWN0ICpvYmosIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKipkaWN0cHRyOwotICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5VHlwZU9iamVjdCAqYmFzZTsKIAogICAgIGJhc2UgPSBnZXRfYnVpbHRpbl9iYXNlX3dpdGhfZGljdChQeV9UWVBFKG9iaikpOwpAQCAtMTc2MywyNSArMTc5MSwxMyBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmdW5jKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKShQeV9UWVBFKG9iaikpKTsKICAgICB9Ci0KLSAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKLSAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgUHlfWElOQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gZGljdDsKKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldERpY3Qob2JqLCBjb250ZXh0KTsKIH0KIAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHI7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTE3OTksNyArMTgxNSw3IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZ1bmMoZGVzY3IsIG9iaiwgdmFsdWUpOwogICAgIH0KLQorICAgIC8qIEFsbW9zdCBsaWtlIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0LCBidXQgYWxsb3cgX19kaWN0X18gdG8gYmUgZGVsZXRlZC4gKi8KICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKQEAgLTE5NjAsMTQgKzE5NzYsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX25ldyhQeVR5cGVPYmplY3QgKm1ldGF0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcywgKmRpY3Q7CisgICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcyA9IE5VTEwsICpvcmlnX2RpY3QsICpkaWN0ID0gTlVMTDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiYmFzZXMiLCAiZGljdCIsIDB9OwotICAgIFB5T2JqZWN0ICpzbG90cywgKnRtcCwgKm5ld3Nsb3RzOwotICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CiAgICAgUHlfc3NpemVfdCBpLCBuYmFzZXMsIG5zbG90cywgc2xvdG9mZnNldCwgYWRkX2RpY3QsIGFkZF93ZWFrOwogICAgIGludCBqLCBtYXlfYWRkX2RpY3QsIG1heV9hZGRfd2VhazsKKyAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2xvdHNfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKQEAgLTE5OTcsNyArMjAxNSw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgbWV0YXR5cGUgdG8gZGVhbCB3aXRoIHRoaXM6ICovCkBAIC0yMDE3LDMwICsyMDM1LDMwIEBACiAgICAgaWYgKG5iYXNlcyA9PSAwKSB7CiAgICAgICAgIGJhc2VzID0gUHlUdXBsZV9QYWNrKDEsICZQeUJhc2VPYmplY3RfVHlwZSk7CiAgICAgICAgIGlmIChiYXNlcyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBuYmFzZXMgPSAxOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihiYXNlcyk7CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgYWxsb2NhdGVkLCAicmV0dXJuIE5VTEwiIGxlYWtzIGJhc2VzISAqLwotCiAgICAgLyogQ2FsY3VsYXRlIGJlc3QgYmFzZSwgYW5kIGNoZWNrIHRoYXQgYWxsIGJhc2VzIGFyZSB0eXBlIG9iamVjdHMgKi8KICAgICBiYXNlID0gYmVzdF9iYXNlKGJhc2VzKTsKICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKGJhc2UsIFB5X1RQRkxBR1NfQkFTRVRZUEUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZSAnJS4xMDBzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSBiYXNlIHR5cGUiLAogICAgICAgICAgICAgICAgICAgICAgYmFzZS0+dHBfbmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAorICAgIGRpY3QgPSBQeURpY3RfQ29weShvcmlnX2RpY3QpOworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAvKiBDaGVjayBmb3IgYSBfX3Nsb3RzX18gc2VxdWVuY2UgdmFyaWFibGUgaW4gZGljdCwgYW5kIGNvdW50IGl0ICovCi0gICAgc2xvdHMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19zbG90c19fIik7CisgICAgc2xvdHMgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3Nsb3RzX18pOwogICAgIG5zbG90cyA9IDA7CiAgICAgYWRkX2RpY3QgPSAwOwogICAgIGFkZF93ZWFrID0gMDsKQEAgLTIwNjIsMTAgKzIwODAsOCBAQAogICAgICAgICAgICAgc2xvdHMgPSBQeVR1cGxlX1BhY2soMSwgc2xvdHMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzbG90cyA9IFB5U2VxdWVuY2VfVHVwbGUoc2xvdHMpOwotICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soc2xvdHMpKTsKIAogICAgICAgICAvKiBBcmUgc2xvdHMgYWxsb3dlZD8gKi8KQEAgLTIwNzUsMjQgKzIwOTEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uZW1wdHkgX19zbG90c19fICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHN1cHBvcnRlZCBmb3Igc3VidHlwZSBvZiAnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKLSAgICAgICAgICBiYWRfc2xvdHM6Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENoZWNrIGZvciB2YWxpZCBzbG90IG5hbWVzIGFuZCB0d28gc3BlY2lhbCBjYXNlcyAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICghdmFsaWRfaWRlbnRpZmllcih0bXApKQotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHRtcCkpOwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIl9fZGljdF9fIikgPT0gMCkgewogICAgICAgICAgICAgICAgIGlmICghbWF5X2FkZF9kaWN0IHx8IGFkZF9kaWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kaWN0X18gc2xvdCBkaXNhbGxvd2VkOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAid2UgYWxyZWFkeSBnb3Qgb25lIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRfZGljdCsrOwogICAgICAgICAgICAgfQpAQCAtMjEwMiw3ICsyMTE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3dlYWtyZWZfXyBzbG90IGRpc2FsbG93ZWQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgd2UgYWxyZWFkeSBnb3Qgb25lLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgX19pdGVtc2l6ZV9fICE9IDAiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZF93ZWFrKys7CiAgICAgICAgICAgICB9CkBAIC0yMTE0LDcgKzIxMjcsNyBAQAogICAgICAgICAqLwogICAgICAgICBuZXdzbG90cyA9IFB5TGlzdF9OZXcobnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIGlmIChuZXdzbG90cyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IG5zbG90czsgaSsrKSB7CiAgICAgICAgICAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICgoYWRkX2RpY3QgJiYKQEAgLTIxMjUsMjUgKzIxMzgsMjkgQEAKICAgICAgICAgICAgIHRtcCA9X1B5X01hbmdsZShuYW1lLCB0bXApOwogICAgICAgICAgICAgaWYgKCF0bXApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOwotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obmV3c2xvdHMsIGosIHRtcCk7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oZGljdCwgdG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgaW4gX19zbG90c19fIGNvbmZsaWN0cyB3aXRoIGNsYXNzIHZhcmlhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBqKys7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGogPT0gbnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIG5zbG90cyA9IGo7Ci0gICAgICAgIFB5X0RFQ1JFRihzbG90cyk7CisgICAgICAgIFB5X0NMRUFSKHNsb3RzKTsKICAgICAgICAgaWYgKFB5TGlzdF9Tb3J0KG5ld3Nsb3RzKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgc2xvdHMgPSBQeUxpc3RfQXNUdXBsZShuZXdzbG90cyk7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgIGlmIChzbG90cyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIC8qIFNlY29uZGFyeSBiYXNlcyBtYXkgcHJvdmlkZSB3ZWFrcmVmcyBvciBkaWN0ICovCiAgICAgICAgIGlmIChuYmFzZXMgPiAxICYmCkBAIC0yMTcxLDIyICsyMTg4LDE3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgc2FmZWx5IGFsbG9jYXRlZCwKLSAgICAgICAicmV0dXJuIE5VTEwiIG1heSBsZWFrIHNsb3RzISAqLwotCiAgICAgLyogQWxsb2NhdGUgdGhlIHR5cGUgb2JqZWN0ICovCiAgICAgdHlwZSA9IChQeVR5cGVPYmplY3QgKiltZXRhdHlwZS0+dHBfYWxsb2MobWV0YXR5cGUsIG5zbG90cyk7Ci0gICAgaWYgKHR5cGUgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHNsb3RzKTsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICh0eXBlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBLZWVwIG5hbWUgYW5kIHNsb3RzIGFsaXZlIGluIHRoZSBleHRlbmRlZCB0eXBlIG9iamVjdCAqLwogICAgIGV0ID0gKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlOwogICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICBldC0+aHRfbmFtZSA9IG5hbWU7CiAgICAgZXQtPmh0X3Nsb3RzID0gc2xvdHM7CisgICAgc2xvdHMgPSBOVUxMOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9mbGFncyAqLwogICAgIHR5cGUtPnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IRUFQVFlQRSB8CkBAIC0yMjAwLDU5ICsyMjEyLDY5IEBACiAgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZldC0+YXNfbWFwcGluZzsKICAgICB0eXBlLT50cF9hc19idWZmZXIgPSAmZXQtPmFzX2J1ZmZlcjsKICAgICB0eXBlLT50cF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKLSAgICBpZiAoIXR5cGUtPnRwX25hbWUpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKCF0eXBlLT50cF9uYW1lKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2Jhc2UgYW5kIHRwX2Jhc2VzICovCiAgICAgdHlwZS0+dHBfYmFzZXMgPSBiYXNlczsKKyAgICBiYXNlcyA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKGJhc2UpOwogICAgIHR5cGUtPnRwX2Jhc2UgPSBiYXNlOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9kaWN0IGZyb20gcGFzc2VkLWluIGRpY3QgKi8KLSAgICB0eXBlLT50cF9kaWN0ID0gZGljdCA9IFB5RGljdF9Db3B5KGRpY3QpOwotICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgUHlfSU5DUkVGKGRpY3QpOworICAgIHR5cGUtPnRwX2RpY3QgPSBkaWN0OwogCiAgICAgLyogU2V0IF9fbW9kdWxlX18gaW4gdGhlIGRpY3QgKi8KLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iKSA9PSBOVUxMKSB7CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18pID09IE5VTEwpIHsKICAgICAgICAgdG1wID0gUHlFdmFsX0dldEdsb2JhbHMoKTsKICAgICAgICAgaWYgKHRtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICB0bXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0bXAsICJfX25hbWVfXyIpOworICAgICAgICAgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQodG1wLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgICAgICBpZiAodG1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAgLyogU2V0IGh0X3F1YWxuYW1lIHRvIGRpY3RbJ19fcXVhbG5hbWVfXyddIGlmIGF2YWlsYWJsZSwgZWxzZSB0bworICAgICAgIF9fbmFtZV9fLiAgVGhlIF9fcXVhbG5hbWVfXyBhY2Nlc3NvciB3aWxsIGxvb2sgZm9yIGh0X3F1YWxuYW1lLgorICAgICovCisgICAgcXVhbG5hbWUgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHF1YWxuYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSBfX3F1YWxuYW1lX18gbXVzdCBiZSBhIHN0ciwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHF1YWxuYW1lKS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBxdWFsbmFtZSA9IGV0LT5odF9uYW1lOworICAgIH0KKyAgICBQeV9JTkNSRUYocXVhbG5hbWUpOworICAgIGV0LT5odF9xdWFsbmFtZSA9IHF1YWxuYW1lOworCiAgICAgLyogU2V0IHRwX2RvYyB0byBhIGNvcHkgb2YgZGljdFsnX19kb2NfXyddLCBpZiB0aGUgbGF0dGVyIGlzIHRoZXJlCiAgICAgICAgYW5kIGlzIGEgc3RyaW5nLiAgVGhlIF9fZG9jX18gYWNjZXNzb3Igd2lsbCBmaXJzdCBsb29rIGZvciB0cF9kb2M7CiAgICAgICAgaWYgdGhhdCBmYWlscywgaXQgd2lsbCBzdGlsbCBsb29rIGludG8gX19kaWN0X18uCiAgICAgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpkb2MgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19kb2NfXyIpOworICAgICAgICBQeU9iamVjdCAqZG9jID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19kb2NfXyk7CiAgICAgICAgIGlmIChkb2MgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soZG9jKSkgewogICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICBjaGFyICpkb2Nfc3RyOwogICAgICAgICAgICAgY2hhciAqdHBfZG9jOwogCiAgICAgICAgICAgICBkb2Nfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhkb2MpOwotICAgICAgICAgICAgaWYgKGRvY19zdHIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkb2Nfc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIC8qIFNpbGVudGx5IHRydW5jYXRlIHRoZSBkb2NzdHJpbmcgaWYgaXQgY29udGFpbnMgbnVsbCBieXRlcy4gKi8KICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihkb2Nfc3RyKTsKICAgICAgICAgICAgIHRwX2RvYyA9IChjaGFyICopUHlPYmplY3RfTUFMTE9DKGxlbiArIDEpOwotICAgICAgICAgICAgaWYgKHRwX2RvYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRwX2RvYyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBtZW1jcHkodHBfZG9jLCBkb2Nfc3RyLCBsZW4gKyAxKTsKICAgICAgICAgICAgIHR5cGUtPnRwX2RvYyA9IHRwX2RvYzsKICAgICAgICAgfQpAQCAtMjI2MCwyOCArMjI4MiwyNSBAQAogCiAgICAgLyogU3BlY2lhbC1jYXNlIF9fbmV3X186IGlmIGl0J3MgYSBwbGFpbiBmdW5jdGlvbiwKICAgICAgICBtYWtlIGl0IGEgc3RhdGljIGZ1bmN0aW9uICovCi0gICAgdG1wID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fbmV3X18iKTsKKyAgICB0bXAgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX25ld19fKTsKICAgICBpZiAodG1wICE9IE5VTEwgJiYgUHlGdW5jdGlvbl9DaGVjayh0bXApKSB7CiAgICAgICAgIHRtcCA9IFB5U3RhdGljTWV0aG9kX05ldyh0bXApOwotICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX25ld19fIiwgdG1wKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbmV3X18sIHRtcCkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCiAgICAgLyogQWRkIGRlc2NyaXB0b3JzIGZvciBjdXN0b20gc2xvdHMgZnJvbSBfX3Nsb3RzX18sIG9yIGZvciBfX2RpY3RfXyAqLwogICAgIG1wID0gUHlIZWFwVHlwZV9HRVRfTUVNQkVSUyhldCk7CiAgICAgc2xvdG9mZnNldCA9IGJhc2UtPnRwX2Jhc2ljc2l6ZTsKLSAgICBpZiAoc2xvdHMgIT0gTlVMTCkgeworICAgIGlmIChldC0+aHRfc2xvdHMgIT0gTlVMTCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyssIG1wKyspIHsKICAgICAgICAgICAgIG1wLT5uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZygKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKSk7Ci0gICAgICAgICAgICBpZiAobXAtPm5hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKGV0LT5odF9zbG90cywgaSkpOworICAgICAgICAgICAgaWYgKG1wLT5uYW1lID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIG1wLT50eXBlID0gVF9PQkpFQ1RfRVg7CiAgICAgICAgICAgICBtcC0+b2Zmc2V0ID0gc2xvdG9mZnNldDsKIApAQCAtMjI5OSw2ICsyMzE4LDkgQEAKICAgICAgICAgICAgIHR5cGUtPnRwX2RpY3RvZmZzZXQgPSBzbG90b2Zmc2V0OwogICAgICAgICBzbG90b2Zmc2V0ICs9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9CisgICAgaWYgKHR5cGUtPnRwX2RpY3RvZmZzZXQpIHsKKyAgICAgICAgZXQtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKKyAgICB9CiAgICAgaWYgKGFkZF93ZWFrKSB7CiAgICAgICAgIGFzc2VydCghYmFzZS0+dHBfaXRlbXNpemUpOwogICAgICAgICB0eXBlLT50cF93ZWFrbGlzdG9mZnNldCA9IHNsb3RvZmZzZXQ7CkBAIC0yMzQyLDE1ICsyMzY0LDIxIEBACiAgICAgICAgIHR5cGUtPnRwX2ZyZWUgPSBQeU9iamVjdF9EZWw7CiAKICAgICAvKiBJbml0aWFsaXplIHRoZSByZXN0ICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBQdXQgdGhlIHByb3BlciBzbG90cyBpbiBwbGFjZSAqLwogICAgIGZpeHVwX3Nsb3RfZGlzcGF0Y2hlcnModHlwZSk7CiAKKyAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXR5cGU7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfWERFQ1JFRihiYXNlcyk7CisgICAgUHlfWERFQ1JFRihzbG90cyk7CisgICAgUHlfWERFQ1JFRih0eXBlKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CkBAIC0yMzU5LDMwICsyMzg3LDg5IEBACiB9OwogCiBQeU9iamVjdCAqCi1QeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMgKnNwZWMpCitQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoUHlUeXBlX1NwZWMgKnNwZWMsIFB5T2JqZWN0ICpiYXNlcykKIHsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpyZXMgPSAoUHlIZWFwVHlwZU9iamVjdCopUHlUeXBlX0dlbmVyaWNBbGxvYygmUHlUeXBlX1R5cGUsIDApOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2U7CisgICAgY2hhciAqczsKICAgICBjaGFyICpyZXNfc3RhcnQgPSAoY2hhciopcmVzOwogICAgIFB5VHlwZV9TbG90ICpzbG90OworICAgIAorICAgIC8qIFNldCB0aGUgdHlwZSBuYW1lIGFuZCBxdWFsbmFtZSAqLworICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgcyA9IChjaGFyKilzcGVjLT5uYW1lOworICAgIGVsc2UKKyAgICAgICAgcysrOwogCiAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzLT5odF9uYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3BlYy0+bmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIHR5cGUgPSAmcmVzLT5odF90eXBlOworICAgIC8qIFRoZSBmbGFncyBtdXN0IGJlIGluaXRpYWxpemVkIGVhcmx5LCBiZWZvcmUgdGhlIEdDIHRyYXZlcnNlcyB1cyAqLworICAgIHR5cGUtPnRwX2ZsYWdzID0gc3BlYy0+ZmxhZ3MgfCBQeV9UUEZMQUdTX0hFQVBUWVBFOworICAgIHJlcy0+aHRfbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHMpOwogICAgIGlmICghcmVzLT5odF9uYW1lKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgcmVzLT5odF90eXBlLnRwX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHJlcy0+aHRfbmFtZSk7Ci0gICAgaWYgKCFyZXMtPmh0X3R5cGUudHBfbmFtZSkKKyAgICByZXMtPmh0X3F1YWxuYW1lID0gcmVzLT5odF9uYW1lOworICAgIFB5X0lOQ1JFRihyZXMtPmh0X3F1YWxuYW1lKTsKKyAgICB0eXBlLT50cF9uYW1lID0gc3BlYy0+bmFtZTsKKyAgICBpZiAoIXR5cGUtPnRwX25hbWUpCiAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAKKyAgICAvKiBBZGp1c3QgZm9yIGVtcHR5IHR1cGxlIGJhc2VzICovCisgICAgaWYgKCFiYXNlcykgeworICAgICAgICBiYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworICAgICAgICAvKiBTZWUgd2hldGhlciBQeV90cF9iYXNlKHMpIHdhcyBzcGVjaWZpZWQgKi8KKyAgICAgICAgZm9yIChzbG90ID0gc3BlYy0+c2xvdHM7IHNsb3QtPnNsb3Q7IHNsb3QrKykgeworICAgICAgICAgICAgaWYgKHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZSkKKyAgICAgICAgICAgICAgICBiYXNlID0gc2xvdC0+cGZ1bmM7CisgICAgICAgICAgICBlbHNlIGlmIChzbG90LT5zbG90ID09IFB5X3RwX2Jhc2VzKSB7CisgICAgICAgICAgICAgICAgYmFzZXMgPSBzbG90LT5wZnVuYzsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYmFzZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghYmFzZXMpCisgICAgICAgICAgICBiYXNlcyA9IFB5VHVwbGVfUGFjaygxLCBiYXNlKTsKKyAgICAgICAgaWYgKCFiYXNlcykKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBQeV9JTkNSRUYoYmFzZXMpOwogCi0gICAgcmVzLT5odF90eXBlLnRwX2Jhc2ljc2l6ZSA9IHNwZWMtPmJhc2ljc2l6ZTsKLSAgICByZXMtPmh0X3R5cGUudHBfaXRlbXNpemUgPSBzcGVjLT5pdGVtc2l6ZTsKLSAgICByZXMtPmh0X3R5cGUudHBfZmxhZ3MgPSBzcGVjLT5mbGFncyB8IFB5X1RQRkxBR1NfSEVBUFRZUEU7CisgICAgLyogQ2FsY3VsYXRlIGJlc3QgYmFzZSwgYW5kIGNoZWNrIHRoYXQgYWxsIGJhc2VzIGFyZSB0eXBlIG9iamVjdHMgKi8KKyAgICBiYXNlID0gYmVzdF9iYXNlKGJhc2VzKTsKKyAgICBpZiAoYmFzZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZShiYXNlLCBQeV9UUEZMQUdTX0JBU0VUWVBFKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInR5cGUgJyUuMTAwcycgaXMgbm90IGFuIGFjY2VwdGFibGUgYmFzZSB0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgIGJhc2UtPnRwX25hbWUpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBlc3NlbnRpYWwgZmllbGRzICovCisgICAgdHlwZS0+dHBfYXNfbnVtYmVyID0gJnJlcy0+YXNfbnVtYmVyOworICAgIHR5cGUtPnRwX2FzX3NlcXVlbmNlID0gJnJlcy0+YXNfc2VxdWVuY2U7CisgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZyZXMtPmFzX21hcHBpbmc7CisgICAgdHlwZS0+dHBfYXNfYnVmZmVyID0gJnJlcy0+YXNfYnVmZmVyOworICAgIC8qIFNldCB0cF9iYXNlIGFuZCB0cF9iYXNlcyAqLworICAgIHR5cGUtPnRwX2Jhc2VzID0gYmFzZXM7CisgICAgYmFzZXMgPSBOVUxMOworICAgIFB5X0lOQ1JFRihiYXNlKTsKKyAgICB0eXBlLT50cF9iYXNlID0gYmFzZTsKKworICAgIHR5cGUtPnRwX2Jhc2ljc2l6ZSA9IHNwZWMtPmJhc2ljc2l6ZTsKKyAgICB0eXBlLT50cF9pdGVtc2l6ZSA9IHNwZWMtPml0ZW1zaXplOwogCiAgICAgZm9yIChzbG90ID0gc3BlYy0+c2xvdHM7IHNsb3QtPnNsb3Q7IHNsb3QrKykgewotICAgICAgICBpZiAoc2xvdC0+c2xvdCA+PSBzaXplb2Yoc2xvdG9mZnNldHMpL3NpemVvZihzbG90b2Zmc2V0c1swXSkpIHsKKyAgICAgICAgaWYgKHNsb3QtPnNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgc2xvdCBvZmZzZXQiKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQorICAgICAgICBpZiAoc2xvdC0+c2xvdCA9PSBQeV90cF9iYXNlIHx8IHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZXMpCisgICAgICAgICAgICAvKiBQcm9jZXNzZWQgYWJvdmUgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAqKHZvaWQqKikocmVzX3N0YXJ0ICsgc2xvdG9mZnNldHNbc2xvdC0+c2xvdF0pID0gc2xvdC0+cGZ1bmM7CiAKICAgICAgICAgLyogbmVlZCB0byBtYWtlIGEgY29weSBvZiB0aGUgZG9jc3RyaW5nIHNsb3QsIHdoaWNoIHVzdWFsbHkKQEAgLTIzOTMsMTkgKzI0ODAsMjkgQEAKICAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICBtZW1jcHkodHBfZG9jLCBzbG90LT5wZnVuYywgbGVuKTsKLSAgICAgICAgICAgIHJlcy0+aHRfdHlwZS50cF9kb2MgPSB0cF9kb2M7CisgICAgICAgICAgICB0eXBlLT50cF9kb2MgPSB0cF9kb2M7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHJlcy0+aHRfdHlwZS50cF9kZWFsbG9jID09IE5VTEwpIHsKKyAgICBpZiAodHlwZS0+dHBfZGljdG9mZnNldCkgeworICAgICAgICByZXMtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKKyAgICB9CisgICAgaWYgKHR5cGUtPnRwX2RlYWxsb2MgPT0gTlVMTCkgewogICAgICAgICAvKiBJdCdzIGEgaGVhcCB0eXBlLCBzbyBuZWVkcyB0aGUgaGVhcCB0eXBlcycgZGVhbGxvYy4KICAgICAgICAgICAgc3VidHlwZV9kZWFsbG9jIHdpbGwgY2FsbCB0aGUgYmFzZSB0eXBlJ3MgdHBfZGVhbGxvYywgaWYKICAgICAgICAgICAgbmVjZXNzYXJ5LiAqLwotICAgICAgICByZXMtPmh0X3R5cGUudHBfZGVhbGxvYyA9IHN1YnR5cGVfZGVhbGxvYzsKKyAgICAgICAgdHlwZS0+dHBfZGVhbGxvYyA9IHN1YnR5cGVfZGVhbGxvYzsKICAgICB9CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZyZXMtPmh0X3R5cGUpIDwgMCkKKyAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCisgICAgLyogU2V0IHR5cGUuX19tb2R1bGVfXyAqLworICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CisgICAgaWYgKHMgIT0gTlVMTCkKKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgCisgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgc3BlYy0+bmFtZSwgKFB5X3NzaXplX3QpKHMgLSBzcGVjLT5uYW1lKSkpOworCiAgICAgcmV0dXJuIChQeU9iamVjdCopcmVzOwogCiAgZmFpbDoKQEAgLTI0MTMsNiArMjUxMCwxMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitQeU9iamVjdCAqCitQeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcyhzcGVjLCBOVUxMKTsKK30KKwogCiAvKiBJbnRlcm5hbCBBUEkgdG8gbG9vayBmb3IgYSBuYW1lIHRocm91Z2ggdGhlIE1STy4KICAgIFRoaXMgcmV0dXJucyBhIGJvcnJvd2VkIHJlZmVyZW5jZSwgYW5kIGRvZXNuJ3Qgc2V0IGFuIGV4Y2VwdGlvbiEgKi8KQEAgLTI0NDIsNiArMjU0NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmVzID0gTlVMTDsKKyAgICAvKiBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBtcm8gYmVjYXVzZSB0eXBlLT50cF9tcm8gY2FuIGJlIHJlcGxhY2VkCisgICAgICAgZHVyaW5nIFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpICAqLworICAgIFB5X0lOQ1JFRihtcm8pOwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKG1ybykpOwogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKG1ybyk7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewpAQCAtMjQ1Myw2ICsyNTU5LDcgQEAKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIFB5X0RFQ1JFRihtcm8pOwogCiAgICAgaWYgKE1DQUNIRV9DQUNIRUFCTEVfTkFNRShuYW1lKSAmJiBhc3NpZ25fdmVyc2lvbl90YWcodHlwZSkpIHsKICAgICAgICAgaCA9IE1DQUNIRV9IQVNIX01FVEhPRCh0eXBlLCBuYW1lKTsKQEAgLTI0NjUsNiArMjU3MiwxNiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlUeXBlX0xvb2t1cElkKFB5VHlwZU9iamVjdCAqdHlwZSwgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpvbmFtZTsKKyAgICBvbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKG5hbWUpOyAgIC8qIGJvcnJvd2VkICovCisgICAgaWYgKG9uYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlUeXBlX0xvb2t1cCh0eXBlLCBvbmFtZSk7Cit9CisKIC8qIFRoaXMgaXMgc2ltaWxhciB0byBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigpLAogICAgYnV0IHVzZXMgX1B5VHlwZV9Mb29rdXAoKSBpbnN0ZWFkIG9mIGp1c3QgbG9va2luZyBpbiB0eXBlLT50cF9kaWN0LiAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI1NjQsNiArMjY4MSw5IEBACiAgICAgcmV0dXJuIHVwZGF0ZV9zbG90KHR5cGUsIG5hbWUpOwogfQogCitleHRlcm4gdm9pZAorX1B5RGljdEtleXNfRGVjUmVmKFB5RGljdEtleXNPYmplY3QgKmtleXMpOworCiBzdGF0aWMgdm9pZAogdHlwZV9kZWFsbG9jKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKQEAgLTI1ODUsNyArMjcwNSwxMCBAQAogICAgICAqLwogICAgIFB5T2JqZWN0X0ZyZWUoKGNoYXIgKil0eXBlLT50cF9kb2MpOwogICAgIFB5X1hERUNSRUYoZXQtPmh0X25hbWUpOworICAgIFB5X1hERUNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKICAgICBQeV9YREVDUkVGKGV0LT5odF9zbG90cyk7CisgICAgaWYgKGV0LT5odF9jYWNoZWRfa2V5cykKKyAgICAgICAgX1B5RGljdEtleXNfRGVjUmVmKGV0LT5odF9jYWNoZWRfa2V5cyk7CiAgICAgUHlfVFlQRSh0eXBlKS0+dHBfZnJlZSgoUHlPYmplY3QgKil0eXBlKTsKIH0KIApAQCAtMjYyMyw2ICsyNzQ2LDk5IEBACiAgICAgcmV0dXJuIFB5RGljdF9OZXcoKTsKIH0KIAorLyoKKyAgIE1lcmdlIHRoZSBfX2RpY3RfXyBvZiBhY2xhc3MgaW50byBkaWN0LCBhbmQgcmVjdXJzaXZlbHkgYWxzbyBhbGwKKyAgIHRoZSBfX2RpY3RfX3Mgb2YgYWNsYXNzJ3MgYmFzZSBjbGFzc2VzLiAgVGhlIG9yZGVyIG9mIG1lcmdpbmcgaXNuJ3QKKyAgIGRlZmluZWQsIGFzIGl0J3MgZXhwZWN0ZWQgdGhhdCBvbmx5IHRoZSBmaW5hbCBzZXQgb2YgZGljdCBrZXlzIGlzCisgICBpbnRlcmVzdGluZy4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLgorKi8KKworc3RhdGljIGludAorbWVyZ2VfY2xhc3NfZGljdChQeU9iamVjdCAqZGljdCwgUHlPYmplY3QgKmFjbGFzcykKK3sKKyAgICBQeU9iamVjdCAqY2xhc3NkaWN0OworICAgIFB5T2JqZWN0ICpiYXNlczsKKyAgICBfUHlfSURFTlRJRklFUihfX2Jhc2VzX18pOworCisgICAgYXNzZXJ0KFB5RGljdF9DaGVjayhkaWN0KSk7CisgICAgYXNzZXJ0KGFjbGFzcyk7CisKKyAgICAvKiBNZXJnZSBpbiB0aGUgdHlwZSdzIGRpY3QgKGlmIGFueSkuICovCisgICAgY2xhc3NkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChhY2xhc3MsICZQeUlkX19fZGljdF9fKTsKKyAgICBpZiAoY2xhc3NkaWN0ID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSB7CisgICAgICAgIGludCBzdGF0dXMgPSBQeURpY3RfVXBkYXRlKGRpY3QsIGNsYXNzZGljdCk7CisgICAgICAgIFB5X0RFQ1JFRihjbGFzc2RpY3QpOworICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBSZWN1cnNpdmVseSBtZXJnZSBpbiB0aGUgYmFzZSB0eXBlcycgKGlmIGFueSkgZGljdHMuICovCisgICAgYmFzZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGFjbGFzcywgJlB5SWRfX19iYXNlc19fKTsKKyAgICBpZiAoYmFzZXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLyogV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCBiYXNlcyBpcyBhIHJlYWwgdHVwbGUgKi8KKyAgICAgICAgUHlfc3NpemVfdCBpLCBuOworICAgICAgICBuID0gUHlTZXF1ZW5jZV9TaXplKGJhc2VzKTsgLyogVGhpcyBiZXR0ZXIgYmUgcmlnaHQgKi8KKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgaW50IHN0YXR1czsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYmFzZSA9IFB5U2VxdWVuY2VfR2V0SXRlbShiYXNlcywgaSk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXR1cyA9IG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgYmFzZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2UpOworICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIF9fZGlyX18gZm9yIHR5cGUgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXyBhbmQgX19iYXNlc19fLgorICAgV2UgZGVsaWJlcmF0ZWx5IGRvbid0IHN1Y2sgdXAgaXRzIF9fY2xhc3NfXywgYXMgbWV0aG9kcyBiZWxvbmdpbmcgdG8gdGhlCisgICBtZXRhY2xhc3Mgd291bGQgcHJvYmFibHkgYmUgbW9yZSBjb25mdXNpbmcgdGhhbiBoZWxwZnVsLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCit0eXBlX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRpY3QgPSBQeURpY3RfTmV3KCk7CisKKyAgICBpZiAoZGljdCAhPSBOVUxMICYmIG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgc2VsZikgPT0gMCkKKyAgICAgICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7CisKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3R5cGVfc2l6ZW9mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnc191bnVzZWQpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IChQeVR5cGVPYmplY3QqKXNlbGY7CisgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgeworICAgICAgICBQeUhlYXBUeXBlT2JqZWN0KiBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgICAgICBzaXplID0gc2l6ZW9mKFB5SGVhcFR5cGVPYmplY3QpOworICAgICAgICBpZiAoZXQtPmh0X2NhY2hlZF9rZXlzKQorICAgICAgICAgICAgc2l6ZSArPSBfUHlEaWN0X0tleXNTaXplKGV0LT5odF9jYWNoZWRfa2V5cyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeVR5cGVPYmplY3QpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiB0eXBlX21ldGhvZHNbXSA9IHsKICAgICB7Im1ybyIsIChQeUNGdW5jdGlvbiltcm9fZXh0ZXJuYWwsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIm1ybygpIC0+IGxpc3RcbnJldHVybiBhIHR5cGUncyBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciIpfSwKQEAgLTI2MzYsNiArMjg1MiwxMCBAQAogICAgICBQeURvY19TVFIoIl9faW5zdGFuY2VjaGVja19fKCkgLT4gYm9vbFxuY2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIil9LAogICAgIHsiX19zdWJjbGFzc2NoZWNrX18iLCB0eXBlX19fc3ViY2xhc3NjaGVja19fLCBNRVRIX08sCiAgICAgIFB5RG9jX1NUUigiX19zdWJjbGFzc2NoZWNrX18oKSAtPiBib29sXG5jaGVjayBpZiBhIGNsYXNzIGlzIGEgc3ViY2xhc3MiKX0sCisgICAgeyJfX2Rpcl9fIiwgdHlwZV9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5zcGVjaWFsaXplZCBfX2Rpcl9fIGltcGxlbWVudGF0aW9uIGZvciB0eXBlcyIpfSwKKyAgICB7Il9fc2l6ZW9mX18iLCAgICAgIHR5cGVfc2l6ZW9mLCAgICAgICBNRVRIX05PQVJHUywKKyAgICAgIl9fc2l6ZW9mX18oKSAtPiBpbnRcbnJldHVybiBtZW1vcnkgY29uc3VtcHRpb24gb2YgdGhlIHR5cGUgb2JqZWN0In0sCiAgICAgezB9CiB9OwogCkBAIC0yNjQ4LDcgKzI4NjgsMTIgQEAKIHsKICAgICAvKiBCZWNhdXNlIG9mIHR5cGVfaXNfZ2MoKSwgdGhlIGNvbGxlY3RvciBvbmx5IGNhbGxzIHRoaXMKICAgICAgICBmb3IgaGVhcHR5cGVzLiAqLwotICAgIGFzc2VydCh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpOworICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICAgICAgY2hhciBtc2dbMjAwXTsKKyAgICAgICAgc3ByaW50Zihtc2csICJ0eXBlX3RyYXZlcnNlKCkgY2FsbGVkIGZvciBub24taGVhcCB0eXBlICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKKyAgICAgICAgUHlfRmF0YWxFcnJvcihtc2cpOworICAgIH0KIAogICAgIFB5X1ZJU0lUKHR5cGUtPnRwX2RpY3QpOwogICAgIFB5X1ZJU0lUKHR5cGUtPnRwX2NhY2hlKTsKQEAgLTI2NjcsNiArMjg5Miw3IEBACiBzdGF0aWMgaW50CiB0eXBlX2NsZWFyKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpjYWNoZWRfa2V5czsKICAgICAvKiBCZWNhdXNlIG9mIHR5cGVfaXNfZ2MoKSwgdGhlIGNvbGxlY3RvciBvbmx5IGNhbGxzIHRoaXMKICAgICAgICBmb3IgaGVhcHR5cGVzLiAqLwogICAgIGFzc2VydCh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpOwpAQCAtMjY5OCw2ICsyOTI0LDExIEBACiAgICAgKi8KIAogICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKKyAgICBjYWNoZWRfa2V5cyA9ICgoUHlIZWFwVHlwZU9iamVjdCAqKXR5cGUpLT5odF9jYWNoZWRfa2V5czsKKyAgICBpZiAoY2FjaGVkX2tleXMgIT0gTlVMTCkgeworICAgICAgICAoKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlKS0+aHRfY2FjaGVkX2tleXMgPSBOVUxMOworICAgICAgICBfUHlEaWN0S2V5c19EZWNSZWYoY2FjaGVkX2tleXMpOworICAgIH0KICAgICBpZiAodHlwZS0+dHBfZGljdCkKICAgICAgICAgUHlEaWN0X0NsZWFyKHR5cGUtPnRwX2RpY3QpOwogICAgIFB5X0NMRUFSKHR5cGUtPnRwX21ybyk7CkBAIC0yODEzLDIyICszMDQ0LDExIEBACiBvYmplY3RfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBlcnIgPSAwOwotICAgIGlmIChleGNlc3NfYXJncyhhcmdzLCBrd2RzKSkgewotICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKHNlbGYpOwotICAgICAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCAmJgotICAgICAgICAgICAgdHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVyciA9IFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QuX19pbml0X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgMSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCB8fAotICAgICAgICAgICAgICAgICB0eXBlLT50cF9uZXcgPT0gb2JqZWN0X25ldykKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAib2JqZWN0Ll9faW5pdF9fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIpOwotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKHNlbGYpOworICAgIGlmIChleGNlc3NfYXJncyhhcmdzLCBrd2RzKSAmJgorICAgICAgICAodHlwZS0+dHBfbmV3ID09IG9iamVjdF9uZXcgfHwgdHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm9iamVjdC5fX2luaXRfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKKyAgICAgICAgZXJyID0gLTE7CiAgICAgfQogICAgIHJldHVybiBlcnI7CiB9CkBAIC0yODM2LDMzICszMDU2LDIxIEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpbnQgZXJyID0gMDsKLSAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykpIHsKLSAgICAgICAgaWYgKHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3ICYmCi0gICAgICAgICAgICB0eXBlLT50cF9pbml0ICE9IG9iamVjdF9pbml0KQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9fbmV3X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgMSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcgfHwKLSAgICAgICAgICAgICAgICAgdHlwZS0+dHBfaW5pdCA9PSBvYmplY3RfaW5pdCkKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAib2JqZWN0Ll9fbmV3X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7Ci0gICAgICAgICAgICBlcnIgPSAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZXJyIDwgMCkKKyAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykgJiYKKyAgICAgICAgKHR5cGUtPnRwX2luaXQgPT0gb2JqZWN0X2luaXQgfHwgdHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QuX19uZXdfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19JU19BQlNUUkFDVCkgewotICAgICAgICBzdGF0aWMgUHlPYmplY3QgKmNvbW1hID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmFic3RyYWN0X21ldGhvZHMgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqYnVpbHRpbnM7CiAgICAgICAgIFB5T2JqZWN0ICpzb3J0ZWQ7CiAgICAgICAgIFB5T2JqZWN0ICpzb3J0ZWRfbWV0aG9kcyA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpqb2luZWQgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqY29tbWE7CisgICAgICAgIF9QeV9zdGF0aWNfc3RyaW5nKGNvbW1hX2lkLCAiLCAiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc29ydGVkKTsKIAogICAgICAgICAvKiBDb21wdXRlICIsICIuam9pbihzb3J0ZWQodHlwZS5fX2Fic3RyYWN0bWV0aG9kc19fKSkKICAgICAgICAgICAgaW50byBqb2luZWQuICovCkBAIC0yODcyLDcgKzMwODAsNyBAQAogICAgICAgICBidWlsdGlucyA9IFB5RXZhbF9HZXRCdWlsdGlucygpOwogICAgICAgICBpZiAoYnVpbHRpbnMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHNvcnRlZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGJ1aWx0aW5zLCAic29ydGVkIik7CisgICAgICAgIHNvcnRlZCA9IF9QeURpY3RfR2V0SXRlbUlkKGJ1aWx0aW5zLCAmUHlJZF9zb3J0ZWQpOwogICAgICAgICBpZiAoc29ydGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBzb3J0ZWRfbWV0aG9kcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc29ydGVkLApAQCAtMjg4MCwxMyArMzA4OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgICAgIGlmIChzb3J0ZWRfbWV0aG9kcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbW1hID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIiwgIik7Ci0gICAgICAgICAgICBpZiAoY29tbWEgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGpvaW5lZCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY29tbWEsICJqb2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTyIsICBzb3J0ZWRfbWV0aG9kcyk7CisgICAgICAgIGNvbW1hID0gX1B5VW5pY29kZV9Gcm9tSWQoJmNvbW1hX2lkKTsKKyAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBqb2luZWQgPSBQeVVuaWNvZGVfSm9pbihjb21tYSwgc29ydGVkX21ldGhvZHMpOwogICAgICAgICBpZiAoam9pbmVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yOTI0LDcgKzMxMjksNyBAQAogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICAgICAgbW9kID0gTlVMTDsKICAgICB9Ci0gICAgbmFtZSA9IHR5cGVfbmFtZSh0eXBlLCBOVUxMKTsKKyAgICBuYW1lID0gdHlwZV9xdWFsbmFtZSh0eXBlLCBOVUxMKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1hERUNSRUYobW9kKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMDg5LDcgKzMyOTQsNyBAQAogICAgIH0KICAgICBpZiAoIVB5VHlwZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAiX19jbGFzc19fIG11c3QgYmUgc2V0IHRvIG5ldy1zdHlsZSBjbGFzcywgbm90ICclcycgb2JqZWN0IiwKKyAgICAgICAgICAiX19jbGFzc19fIG11c3QgYmUgc2V0IHRvIGEgY2xhc3MsIG5vdCAnJXMnIG9iamVjdCIsCiAgICAgICAgICAgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzEzMCwxNCArMzMzNSwxOSBAQAogaW1wb3J0X2NvcHlyZWcodm9pZCkKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKmNvcHlyZWdfc3RyOworICAgIHN0YXRpYyBQeU9iamVjdCAqbW9kX2NvcHlyZWcgPSBOVUxMOwogCiAgICAgaWYgKCFjb3B5cmVnX3N0cikgewogICAgICAgICBjb3B5cmVnX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJjb3B5cmVnIik7CiAgICAgICAgIGlmIChjb3B5cmVnX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmICghbW9kX2NvcHlyZWcpIHsKKyAgICAgICAgbW9kX2NvcHlyZWcgPSBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOworICAgIH0KIAotICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOworICAgIFB5X1hJTkNSRUYobW9kX2NvcHlyZWcpOworICAgIHJldHVybiBtb2RfY29weXJlZzsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMxNDYsMTQgKzMzNTYsMTEgQEAKICAgICBQeU9iamVjdCAqY2xzZGljdDsKICAgICBQeU9iamVjdCAqY29weXJlZzsKICAgICBQeU9iamVjdCAqc2xvdG5hbWVzOwotCi0gICAgaWYgKCFQeVR5cGVfQ2hlY2soY2xzKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBfUHlfSURFTlRJRklFUihfX3Nsb3RuYW1lc19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfc2xvdG5hbWVzKTsKIAogICAgIGNsc2RpY3QgPSAoKFB5VHlwZU9iamVjdCAqKWNscyktPnRwX2RpY3Q7Ci0gICAgc2xvdG5hbWVzID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoY2xzZGljdCwgIl9fc2xvdG5hbWVzX18iKTsKKyAgICBzbG90bmFtZXMgPSBfUHlEaWN0X0dldEl0ZW1JZChjbHNkaWN0LCAmUHlJZF9fX3Nsb3RuYW1lc19fKTsKICAgICBpZiAoc2xvdG5hbWVzICE9IE5VTEwgJiYgUHlMaXN0X0NoZWNrKHNsb3RuYW1lcykpIHsKICAgICAgICAgUHlfSU5DUkVGKHNsb3RuYW1lcyk7CiAgICAgICAgIHJldHVybiBzbG90bmFtZXM7CkBAIC0zMTYzLDcgKzMzNzAsNyBAQAogICAgIGlmIChjb3B5cmVnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2xvdG5hbWVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjb3B5cmVnLCAiX3Nsb3RuYW1lcyIsICJPIiwgY2xzKTsKKyAgICBzbG90bmFtZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGNvcHlyZWcsICZQeUlkX19zbG90bmFtZXMsICJPIiwgY2xzKTsKICAgICBQeV9ERUNSRUYoY29weXJlZyk7CiAgICAgaWYgKHNsb3RuYW1lcyAhPSBOVUxMICYmCiAgICAgICAgIHNsb3RuYW1lcyAhPSBQeV9Ob25lICYmCkBAIC0zMTg3LDEyICszMzk0LDEzIEBACiAgICAgUHlPYmplY3QgKnNsb3RzID0gTlVMTCwgKmxpc3RpdGVtcyA9IE5VTEwsICpkaWN0aXRlbXMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnID0gTlVMTCwgKm5ld29iaiA9IE5VTEwsICpyZXMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldG5ld2FyZ3NfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRzdGF0ZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKIAotICAgIGNscyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19jbGFzc19fIik7Ci0gICAgaWYgKGNscyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOwogCi0gICAgZ2V0bmV3YXJncyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19nZXRuZXdhcmdzX18iKTsKKyAgICBnZXRuZXdhcmdzID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fZ2V0bmV3YXJnc19fKTsKICAgICBpZiAoZ2V0bmV3YXJncyAhPSBOVUxMKSB7CiAgICAgICAgIGFyZ3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldG5ld2FyZ3MsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoZ2V0bmV3YXJncyk7CkBAIC0zMjEwLDcgKzM0MTgsNyBAQAogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOwogCi0gICAgZ2V0c3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZ2V0c3RhdGVfXyIpOworICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fZ2V0c3RhdGVfXyk7CiAgICAgaWYgKGdldHN0YXRlICE9IE5VTEwpIHsKICAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldHN0YXRlLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKQEAgLTMyMTgsMTcgKzM0MjYsMTggQEAKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKipkaWN0OwogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19kaWN0X18iKTsKLSAgICAgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgICAgICBpZiAoZGljdCAmJiAqZGljdCkKKyAgICAgICAgICAgIHN0YXRlID0gKmRpY3Q7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0YXRlID0gUHlfTm9uZTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHN0YXRlKTsKICAgICAgICAgbmFtZXMgPSBzbG90bmFtZXMoY2xzKTsKICAgICAgICAgaWYgKG5hbWVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgICAgaWYgKG5hbWVzICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKG5hbWVzICE9IFB5X05vbmUgJiYgUHlMaXN0X0dFVF9TSVpFKG5hbWVzKSA+IDApIHsKICAgICAgICAgICAgIGFzc2VydChQeUxpc3RfQ2hlY2sobmFtZXMpKTsKICAgICAgICAgICAgIHNsb3RzID0gUHlEaWN0X05ldygpOwogICAgICAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpCkBAIC0zMjc1LDcgKzM0ODQsOCBAQAogICAgICAgICBQeV9JTkNSRUYoZGljdGl0ZW1zKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiaXRlbXMiLCAiIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKyAgICAgICAgUHlPYmplY3QgKml0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCAiIik7CiAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIGRpY3RpdGVtcyA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbXMpOwpAQCAtMzI4Nyw3ICszNDk3LDcgQEAKICAgICBjb3B5cmVnID0gaW1wb3J0X2NvcHlyZWcoKTsKICAgICBpZiAoY29weXJlZyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKLSAgICBuZXdvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNvcHlyZWcsICJfX25ld29ial9fIik7CisgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9fKTsKICAgICBpZiAobmV3b2JqID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOwogCkBAIC0zMjk1LDggKzM1MDUsOCBAQAogICAgIGFyZ3MyID0gUHlUdXBsZV9OZXcobisxKTsKICAgICBpZiAoYXJnczIgPT0gTlVMTCkKICAgICAgICAgZ290byBlbmQ7CisgICAgUHlfSU5DUkVGKGNscyk7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzMiwgMCwgY2xzKTsKLSAgICBjbHMgPSBOVUxMOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwogICAgICAgICBQeV9JTkNSRUYodik7CkBAIC0zMzA2LDcgKzM1MTYsNiBAQAogICAgIHJlcyA9IFB5VHVwbGVfUGFjayg1LCBuZXdvYmosIGFyZ3MyLCBzdGF0ZSwgbGlzdGl0ZW1zLCBkaWN0aXRlbXMpOwogCiAgIGVuZDoKLSAgICBQeV9YREVDUkVGKGNscyk7CiAgICAgUHlfWERFQ1JFRihhcmdzKTsKICAgICBQeV9YREVDUkVGKGFyZ3MyKTsKICAgICBQeV9YREVDUkVGKHNsb3RzKTsKQEAgLTMzNjYsMzEgKzM1NzUsMzQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmplY3RfcmVkdWNlX2V4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBzdGF0aWMgUHlPYmplY3QgKm9ianJlZHVjZTsKICAgICBQeU9iamVjdCAqcmVkdWNlLCAqcmVzOwogICAgIGludCBwcm90byA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoX19yZWR1Y2VfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlZHVjZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fcmVkdWNlX18iKTsKKyAgICBpZiAob2JqcmVkdWNlID09IE5VTEwpIHsKKyAgICAgICAgb2JqcmVkdWNlID0gX1B5RGljdF9HZXRJdGVtSWQoUHlCYXNlT2JqZWN0X1R5cGUudHBfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19yZWR1Y2VfXyk7CisgICAgICAgIGlmIChvYmpyZWR1Y2UgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlZHVjZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19yZWR1Y2VfXyk7CiAgICAgaWYgKHJlZHVjZSA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqY2xzLCAqY2xzcmVkdWNlLCAqb2JqcmVkdWNlOworICAgICAgICBQeU9iamVjdCAqY2xzLCAqY2xzcmVkdWNlOwogICAgICAgICBpbnQgb3ZlcnJpZGU7Ci0gICAgICAgIGNscyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fY2xhc3NfXyIpOwotICAgICAgICBpZiAoY2xzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZWR1Y2UpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgY2xzcmVkdWNlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjbHMsICJfX3JlZHVjZV9fIik7Ci0gICAgICAgIFB5X0RFQ1JFRihjbHMpOworCisgICAgICAgIGNscyA9IChQeU9iamVjdCAqKSBQeV9UWVBFKHNlbGYpOworICAgICAgICBjbHNyZWR1Y2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19yZWR1Y2VfXyk7CiAgICAgICAgIGlmIChjbHNyZWR1Y2UgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlZHVjZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBvYmpyZWR1Y2UgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhQeUJhc2VPYmplY3RfVHlwZS50cF9kaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19yZWR1Y2VfXyIpOwogICAgICAgICBvdmVycmlkZSA9IChjbHNyZWR1Y2UgIT0gb2JqcmVkdWNlKTsKICAgICAgICAgUHlfREVDUkVGKGNsc3JlZHVjZSk7CiAgICAgICAgIGlmIChvdmVycmlkZSkgewpAQCAtMzQwOCw4ICszNjIwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmplY3Rfc3ViY2xhc3Nob29rKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogUHlEb2NfU1RSVkFSKG9iamVjdF9zdWJjbGFzc2hvb2tfZG9jLApAQCAtMzQ0MCwyMSArMzY1MSwyMSBAQAogICAgIHNlbGZfYXNfc3RyID0gUHlPYmplY3RfU3RyKHNlbGYpOwogICAgIGlmIChzZWxmX2FzX3N0ciAhPSBOVUxMKSB7CiAgICAgICAgIC8qIElzc3VlIDc5OTQ6IElmIHdlJ3JlIGNvbnZlcnRpbmcgdG8gYSBzdHJpbmcsIHdlCi0JICAgc2hvdWxkIHJlamVjdCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgKi8KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykgPiAwKSB7Ci0JICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKLQkJCSAgICAgIm9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0ICIKLQkJCSAgICAgInN0cmluZyBpcyBkZXByZWNhdGVkIiwgMSkgPCAwKSB7Ci0JICAgICAgZ290byBkb25lOwotCSAgICB9Ci0JICAgIC8qIEV2ZW50dWFsbHkgdGhpcyB3aWxsIGJlY29tZSBhbiBlcnJvcjoKLQkgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLQkgICAgICAgIm5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIHBhc3NlZCB0byBvYmplY3QuX19mb3JtYXRfXyIpOwotCSAgICAgICBnb3RvIGRvbmU7Ci0JICAgICovCi0JfQorICAgICAgICAgICBzaG91bGQgcmVqZWN0IGZvcm1hdCBzcGVjaWZpY2F0aW9ucyAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpID4gMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkgeworICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBFdmVudHVhbGx5IHRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3I6CisgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgIm5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIHBhc3NlZCB0byBvYmplY3QuX19mb3JtYXRfXyIpOworICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgKi8KKyAgICAgICAgfQogCi0JcmVzdWx0ID0gUHlPYmplY3RfRm9ybWF0KHNlbGZfYXNfc3RyLCBmb3JtYXRfc3BlYyk7CisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdChzZWxmX2FzX3N0ciwgZm9ybWF0X3NwZWMpOwogICAgIH0KIAogZG9uZToKQEAgLTM0NzcsNiArMzY4OCw1MyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KIAorLyogX19kaXJfXyBmb3IgZ2VuZXJpYyBvYmplY3RzOiByZXR1cm5zIF9fZGljdF9fLCBfX2NsYXNzX18sCisgICBhbmQgcmVjdXJzaXZlbHkgdXAgdGhlIF9fY2xhc3NfXy5fX2Jhc2VzX18gY2hhaW4uCisqLworc3RhdGljIFB5T2JqZWN0ICoKK29iamVjdF9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRzY2xhc3MgPSBOVUxMOworCisgICAgLyogR2V0IF9fZGljdF9fICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBhIHJlYWwgZGljdC4uLikgKi8KKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOworICAgIH0KKyAgICBlbHNlIGlmICghUHlEaWN0X0NoZWNrKGRpY3QpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIENvcHkgX19kaWN0X18gdG8gYXZvaWQgbXV0YXRpbmcgaXQuICovCisgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlEaWN0X0NvcHkoZGljdCk7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgZGljdCA9IHRlbXA7CisgICAgfQorCisgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIE1lcmdlIGluIGF0dHJzIHJlYWNoYWJsZSBmcm9tIGl0cyBjbGFzcy4gKi8KKyAgICBpdHNjbGFzcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19jbGFzc19fKTsKKyAgICBpZiAoaXRzY2xhc3MgPT0gTlVMTCkKKyAgICAgICAgLyogWFhYKHRvbWVyKTogUGVyaGFwcyBmYWxsIGJhY2sgdG8gb2JqLT5vYl90eXBlIGlmIG5vCisgICAgICAgICAgICAgICAgICAgICAgIF9fY2xhc3NfXyBleGlzdHM/ICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSBpZiAobWVyZ2VfY2xhc3NfZGljdChkaWN0LCBpdHNjbGFzcykgIT0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworICAgIC8qIGZhbGwgdGhyb3VnaCAqLworZXJyb3I6CisgICAgUHlfWERFQ1JFRihpdHNjbGFzcyk7CisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgb2JqZWN0X21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX2V4X18iLCBvYmplY3RfcmVkdWNlX2V4LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiaGVscGVyIGZvciBwaWNrbGUiKX0sCkBAIC0zNDg4LDYgKzM3NDYsOCBAQAogICAgICBQeURvY19TVFIoImRlZmF1bHQgb2JqZWN0IGZvcm1hdHRlciIpfSwKICAgICB7Il9fc2l6ZW9mX18iLCBvYmplY3Rfc2l6ZW9mLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfX3NpemVvZl9fKCkgLT4gaW50XG5zaXplIG9mIG9iamVjdCBpbiBtZW1vcnksIGluIGJ5dGVzIil9LAorICAgIHsiX19kaXJfXyIsIG9iamVjdF9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5kZWZhdWx0IGRpcigpIGltcGxlbWVudGF0aW9uIil9LAogICAgIHswfQogfTsKIApAQCAtMzU1Nyw3ICszODE3LDcgQEAKICAgICAgICAgICAgIGRlc2NyID0gUHlEZXNjcl9OZXdDbGFzc01ldGhvZCh0eXBlLCBtZXRoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChtZXRoLT5tbF9mbGFncyAmIE1FVEhfU1RBVElDKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqY2Z1bmMgPSBQeUNGdW5jdGlvbl9OZXcobWV0aCwgTlVMTCk7CisgICAgICAgICAgICBQeU9iamVjdCAqY2Z1bmMgPSBQeUNGdW5jdGlvbl9OZXcobWV0aCwgKFB5T2JqZWN0Kil0eXBlKTsKICAgICAgICAgICAgIGlmIChjZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGRlc2NyID0gUHlTdGF0aWNNZXRob2RfTmV3KGNmdW5jKTsKQEAgLTM2MzgsOCArMzg5OCw4IEBACiAgICAgICAgICAgIHRoYXQgdGhlIGV4dGVuc2lvbiB0eXBlJ3Mgb3duIGZhY3RvcnkgZnVuY3Rpb24gZW5zdXJlcykuCiAgICAgICAgICAgIEhlYXAgdHlwZXMsIG9mIGNvdXJzZSwgYXJlIHVuZGVyIG91ciBjb250cm9sLCBzbyB0aGV5IGRvCiAgICAgICAgICAgIGluaGVyaXQgdHBfbmV3OyBzdGF0aWMgZXh0ZW5zaW9uIHR5cGVzIHRoYXQgc3BlY2lmeSBzb21lCi0gICAgICAgICAgIG90aGVyIGJ1aWx0LWluIHR5cGUgYXMgdGhlIGRlZmF1bHQgYXJlIGNvbnNpZGVyZWQKLSAgICAgICAgICAgbmV3LXN0eWxlLWF3YXJlIHNvIHRoZXkgYWxzbyBpbmhlcml0IG9iamVjdC5fX25ld19fLiAqLworICAgICAgICAgICBvdGhlciBidWlsdC1pbiB0eXBlIGFzIHRoZSBkZWZhdWx0IGFsc28KKyAgICAgICAgICAgaW5oZXJpdCBvYmplY3QuX19uZXdfXy4gKi8KICAgICAgICAgaWYgKGJhc2UgIT0gJlB5QmFzZU9iamVjdF9UeXBlIHx8CiAgICAgICAgICAgICAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgewogICAgICAgICAgICAgaWYgKHR5cGUtPnRwX25ldyA9PSBOVUxMKQpAQCAtMzY3OCwyMyArMzkzOCwxNyBAQAogICAgICAgICB0eXBlLT50cF9mbGFncyB8PSBQeV9UUEZMQUdTX0RJQ1RfU1VCQ0xBU1M7CiB9CiAKLXN0YXRpYyBjaGFyICpoYXNoX25hbWVfb3BbXSA9IHsKLSAgICAiX19lcV9fIiwKLSAgICAiX19oYXNoX18iLAotICAgIE5VTEwKLX07Ci0KIHN0YXRpYyBpbnQKIG92ZXJyaWRlc19oYXNoKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKLSAgICBjaGFyICoqcDsKICAgICBQeU9iamVjdCAqZGljdCA9IHR5cGUtPnRwX2RpY3Q7CisgICAgX1B5X0lERU5USUZJRVIoX19lcV9fKTsKIAogICAgIGFzc2VydChkaWN0ICE9IE5VTEwpOwotICAgIGZvciAocCA9IGhhc2hfbmFtZV9vcDsgKnA7IHArKykgewotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgKnApICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICB9CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fZXFfXykgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19faGFzaF9fKSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzk4MCwxNiArNDIzNCwxNiBAQAogICAgIC8qIGlmIHRoZSB0eXBlIGRpY3Rpb25hcnkgZG9lc24ndCBjb250YWluIGEgX19kb2NfXywgc2V0IGl0IGZyb20KICAgICAgICB0aGUgdHBfZG9jIHNsb3QuCiAgICAgICovCi0gICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIikgPT0gTlVMTCkgeworICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2RvY19fKSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICh0eXBlLT50cF9kb2MgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmRvYyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHR5cGUtPnRwX2RvYyk7CiAgICAgICAgICAgICBpZiAoZG9jID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIiwgZG9jKTsKKyAgICAgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fZG9jX18sIGRvYyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZG9jKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19kb2NfXyIsIFB5X05vbmUpOworICAgICAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fZG9jX18sIFB5X05vbmUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MDAwLDggKzQyNTQsOCBAQAogICAgICAgIFRoaXMgc2lnbmFscyB0aGF0IF9faGFzaF9fIGlzIG5vdCBpbmhlcml0ZWQuCiAgICAgICovCiAgICAgaWYgKHR5cGUtPnRwX2hhc2ggPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9faGFzaF9fIikgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2hhc2hfXyIsIFB5X05vbmUpIDwgMCkKKyAgICAgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19faGFzaF9fKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19oYXNoX18sIFB5X05vbmUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgdHlwZS0+dHBfaGFzaCA9IFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQpAQCAtNDU5OCw3ICs0ODUyLDcgQEAKICAgICAgICBvYmplY3QuX19uZXdfXyhkaWN0KS4gIFRvIGRvIHRoaXMsIHdlIGNoZWNrIHRoYXQgdGhlCiAgICAgICAgbW9zdCBkZXJpdmVkIGJhc2UgdGhhdCdzIG5vdCBhIGhlYXAgdHlwZSBpcyB0aGlzIHR5cGUuICovCiAgICAgc3RhdGljYmFzZSA9IHN1YnR5cGU7Ci0gICAgd2hpbGUgKHN0YXRpY2Jhc2UgJiYgKHN0YXRpY2Jhc2UtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpCisgICAgd2hpbGUgKHN0YXRpY2Jhc2UgJiYgKHN0YXRpY2Jhc2UtPnRwX25ldyA9PSBzbG90X3RwX25ldykpCiAgICAgICAgIHN0YXRpY2Jhc2UgPSBzdGF0aWNiYXNlLT50cF9iYXNlOwogICAgIC8qIElmIHN0YXRpY2Jhc2UgaXMgTlVMTCBub3csIGl0IGlzIGEgcmVhbGx5IHdlaXJkIHR5cGUuCiAgICAgICAgSW4gdGhlIHNwaXJpdCBvZiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAoPyksIGp1c3Qgc2h1dCB1cC4gKi8KQEAgLTQ2MzEsMTIgKzQ4ODUsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqZnVuYzsKIAotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19uZXdfXyIpICE9IE5VTEwpCisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbmV3X18pICE9IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXcodHBfbmV3X21ldGhvZGRlZiwgKFB5T2JqZWN0ICopdHlwZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19uZXdfXyIsIGZ1bmMpKSB7CisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbmV3X18sIGZ1bmMpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTQ2NTEsMzQgKzQ5MDUsMzQgQEAKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsgXAotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCBPUFNUUiwgJmNhY2hlX3N0ciwgIigpIik7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigpIik7IFwKIH0KIAogI2RlZmluZSBTTE9UMShGVU5DTkFNRSwgT1BTVFIsIEFSRzFUWVBFLCBBUkdDT0RFUykgXAogc3RhdGljIFB5T2JqZWN0ICogXAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYsIEFSRzFUWVBFIGFyZzEpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxKTsgXAorICAgIF9QeV9zdGF0aWNfc3RyaW5nKGlkLCBPUFNUUik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxKTsgXAogfQogCiAvKiBCb29sZWFuIGhlbHBlciBmb3IgU0xPVDFCSU5GVUxMKCkuCiAgICByaWdodC5fX2NsYXNzX18gaXMgYSBub250cml2aWFsIHN1YmNsYXNzIG9mIGxlZnQuX19jbGFzc19fLiAqLwogc3RhdGljIGludAotbWV0aG9kX2lzX292ZXJsb2FkZWQoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCwgY2hhciAqbmFtZSkKK21ldGhvZF9pc19vdmVybG9hZGVkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqYSwgKmI7CiAgICAgaW50IG9rOwogCi0gICAgYiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopKFB5X1RZUEUocmlnaHQpKSwgbmFtZSk7CisgICAgYiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopKFB5X1RZUEUocmlnaHQpKSwgbmFtZSk7CiAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAvKiBJZiByaWdodCBkb2Vzbid0IGhhdmUgaXQsIGl0J3Mgbm90IG92ZXJsb2FkZWQgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopKFB5X1RZUEUobGVmdCkpLCBuYW1lKTsKKyAgICBhID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikoUHlfVFlQRShsZWZ0KSksIG5hbWUpOwogICAgIGlmIChhID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfREVDUkVGKGIpOwpAQCAtNDcwMiw3ICs0OTU2LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyLCAqcmNhY2hlX3N0cjsgXAorICAgIF9QeV9zdGF0aWNfc3RyaW5nKG9wX2lkLCBPUFNUUik7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhyb3BfaWQsIFJPUFNUUik7IFwKICAgICBpbnQgZG9fb3RoZXIgPSBQeV9UWVBFKHNlbGYpICE9IFB5X1RZUEUob3RoZXIpICYmIFwKICAgICAgICAgUHlfVFlQRShvdGhlciktPnRwX2FzX251bWJlciAhPSBOVUxMICYmIFwKICAgICAgICAgUHlfVFlQRShvdGhlciktPnRwX2FzX251bWJlci0+U0xPVE5BTUUgPT0gVEVTVEZVTkM7IFwKQEAgLTQ3MTEsMjcgKzQ5NjYsMjMgQEAKICAgICAgICAgUHlPYmplY3QgKnI7IFwKICAgICAgICAgaWYgKGRvX290aGVyICYmIFwKICAgICAgICAgICAgIFB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvdGhlciksIFB5X1RZUEUoc2VsZikpICYmIFwKLSAgICAgICAgICAgIG1ldGhvZF9pc19vdmVybG9hZGVkKHNlbGYsIG90aGVyLCBST1BTVFIpKSB7IFwKLSAgICAgICAgICAgIHIgPSBjYWxsX21heWJlKCBcCi0gICAgICAgICAgICAgICAgb3RoZXIsIFJPUFNUUiwgJnJjYWNoZV9zdHIsICIoTykiLCBzZWxmKTsgXAorICAgICAgICAgICAgbWV0aG9kX2lzX292ZXJsb2FkZWQoc2VsZiwgb3RoZXIsICZyb3BfaWQpKSB7IFwKKyAgICAgICAgICAgIHIgPSBjYWxsX21heWJlKG90aGVyLCAmcm9wX2lkLCAiKE8pIiwgc2VsZik7IFwKICAgICAgICAgICAgIGlmIChyICE9IFB5X05vdEltcGxlbWVudGVkKSBcCiAgICAgICAgICAgICAgICAgcmV0dXJuIHI7IFwKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsgXAogICAgICAgICAgICAgZG9fb3RoZXIgPSAwOyBcCiAgICAgICAgIH0gXAotICAgICAgICByID0gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsICIoTykiLCBvdGhlcik7IFwKKyAgICAgICAgciA9IGNhbGxfbWF5YmUoc2VsZiwgJm9wX2lkLCAiKE8pIiwgb3RoZXIpOyBcCiAgICAgICAgIGlmIChyICE9IFB5X05vdEltcGxlbWVudGVkIHx8IFwKICAgICAgICAgICAgIFB5X1RZUEUob3RoZXIpID09IFB5X1RZUEUoc2VsZikpIFwKICAgICAgICAgICAgIHJldHVybiByOyBcCiAgICAgICAgIFB5X0RFQ1JFRihyKTsgXAogICAgIH0gXAogICAgIGlmIChkb19vdGhlcikgeyBcCi0gICAgICAgIHJldHVybiBjYWxsX21heWJlKCBcCi0gICAgICAgICAgICBvdGhlciwgUk9QU1RSLCAmcmNhY2hlX3N0ciwgIihPKSIsIHNlbGYpOyBcCisgICAgICAgIHJldHVybiBjYWxsX21heWJlKG90aGVyLCAmcm9wX2lkLCAiKE8pIiwgc2VsZik7IFwKICAgICB9IFwKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOyBcCi0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOyBcCisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOyBcCiB9CiAKICNkZWZpbmUgU0xPVDFCSU4oRlVOQ05BTUUsIFNMT1ROQU1FLCBPUFNUUiwgUk9QU1RSKSBcCkBAIC00NzQxLDE2ICs0OTkyLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZiwgQVJHMVRZUEUgYXJnMSwgQVJHMlRZUEUgYXJnMikgXAogeyBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIigiIEFSR0NPREVTICIpIiwgYXJnMSwgYXJnMik7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgI09QU1RSKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsICIoIiBBUkdDT0RFUyAiKSIsIGFyZzEsIGFyZzIpOyBcCiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90CiBzbG90X3NxX2xlbmd0aChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmxlbl9zdHI7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX2xlbl9fIiwgJmxlbl9zdHIsICIoKSIpOworICAgIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOworICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCAiKCkiKTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTQ3NzEsMTYgKzUwMjEsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3NxX2l0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGl0ZW1fc3RyOwogICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncyA9IE5VTEwsICppdmFsID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CiAgICAgZGVzY3JnZXRmdW5jIGY7CiAKLSAgICBpZiAoZ2V0aXRlbV9zdHIgPT0gTlVMTCkgewotICAgICAgICBnZXRpdGVtX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2dldGl0ZW1fXyIpOwotICAgICAgICBpZiAoZ2V0aXRlbV9zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmdW5jID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgZ2V0aXRlbV9zdHIpOworICAgIGZ1bmMgPSBfUHlUeXBlX0xvb2t1cElkKFB5X1RZUEUoc2VsZiksICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CiAgICAgICAgIGlmICgoZiA9IFB5X1RZUEUoZnVuYyktPnRwX2Rlc2NyX2dldCkgPT0gTlVMTCkKICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKQEAgLTQ4MDMsNiArNTA0Nyw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICpnZXRpdGVtX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBnZXRpdGVtX3N0cik7CiAgICAgfQogICAgIFB5X1hERUNSRUYoYXJncyk7CkBAIC00ODE1LDE0ICs1MDYwLDEzIEBACiBzbG90X3NxX2Fzc19pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGl0ZW1fc3RyLCAqc2V0aXRlbV9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxpdGVtX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0aXRlbV9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxpdGVtX18iLCAmZGVsaXRlbV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIobikiLCBpbmRleCk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fZGVsaXRlbV9fLCAiKG4pIiwgaW5kZXgpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0aXRlbV9fIiwgJnNldGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKG5PKSIsIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0aXRlbV9fLCAiKG5PKSIsIGluZGV4LCB2YWx1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC00ODM0LDEwICs1MDc4LDkgQEAKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlcywgKmFyZ3M7CiAgICAgaW50IHJlc3VsdCA9IC0xOworICAgIF9QeV9JREVOVElGSUVSKF9fY29udGFpbnNfXyk7CiAKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNvbnRhaW5zX3N0cjsKLQotICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgIl9fY29udGFpbnNfXyIsICZjb250YWluc19zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19jb250YWluc19fKTsKICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwogICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQpAQCAtNDg2OCwxNCArNTExMSwxNCBAQAogc2xvdF9tcF9hc3Nfc3Vic2NyaXB0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGl0ZW1fc3RyLCAqc2V0aXRlbV9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxpdGVtX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0aXRlbV9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxpdGVtX18iLCAmZGVsaXRlbV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBrZXkpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGl0ZW1fXywgIihPKSIsIGtleSk7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19zZXRpdGVtX18iLCAmc2V0aXRlbV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBrZXksIHZhbHVlKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19zZXRpdGVtX18sICIoT08pIiwga2V5LCB2YWx1ZSk7CisKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTQ4OTYsNyArNTEzOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9uYl9wb3dlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBQeU9iamVjdCAqbW9kdWx1cykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnBvd19zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19wb3dfXyk7CiAKICAgICBpZiAobW9kdWx1cyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc2xvdF9uYl9wb3dlcl9iaW5hcnkoc2VsZiwgb3RoZXIpOwpAQCAtNDkwNSwxMSArNTE0OCw5IEBACiAgICAgICAgc2xvdF9uYl9wb3dlciwgc28gY2hlY2sgYmVmb3JlIGNhbGxpbmcgc2VsZi5fX3Bvd19fLiAqLwogICAgIGlmIChQeV9UWVBFKHNlbGYpLT50cF9hc19udW1iZXIgIT0gTlVMTCAmJgogICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9hc19udW1iZXItPm5iX3Bvd2VyID09IHNsb3RfbmJfcG93ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX3Bvd19fIiwgJnBvd19zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIG90aGVyLCBtb2R1bHVzKTsKKyAgICAgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fcG93X18sICIoT08pIiwgb3RoZXIsIG1vZHVsdXMpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIFNMT1QwKHNsb3RfbmJfbmVnYXRpdmUsICJfX25lZ19fIikKQEAgLTQ5MjAsMTUgKzUxNjEsMTYgQEAKIHNsb3RfbmJfYm9vbChQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3M7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpib29sX3N0ciwgKmxlbl9zdHI7CiAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgIGludCB1c2luZ19sZW4gPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fYm9vbF9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgIl9fYm9vbF9fIiwgJmJvb2xfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fYm9vbF9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2xlbl9fIiwgJmxlbl9zdHIpOworICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fbGVuX18pOwogICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDE7CiAgICAgICAgIHVzaW5nX2xlbiA9IDE7CkBAIC00OTYzLDggKzUyMDUsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfaW5kZXgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppbmRleF9zdHI7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX2luZGV4X18iLCAmaW5kZXhfc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2luZGV4X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sICIoKSIpOwogfQogCiAKQEAgLTQ5ODUsOCArNTIyNyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9uYl9pbnBsYWNlX3Bvd2VyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqIGFyZzEsIFB5T2JqZWN0ICphcmcyKQogewotICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsKLSAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX2lwb3dfXyIsICZjYWNoZV9zdHIsICIoIiAiTyIgIikiLCBhcmcxKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2lwb3dfXyk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faXBvd19fLCAiKCIgIk8iICIpIiwgYXJnMSk7CiB9CiBTTE9UMShzbG90X25iX2lucGxhY2VfbHNoaWZ0LCAiX19pbHNoaWZ0X18iLCBQeU9iamVjdCAqLCAiTyIpCiBTTE9UMShzbG90X25iX2lucGxhY2VfcnNoaWZ0LCAiX19pcnNoaWZ0X18iLCBQeU9iamVjdCAqLCAiTyIpCkBAIC01MDAzLDkgKzUyNDUsOSBAQAogc2xvdF90cF9yZXByKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcmVwcl9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19yZXByX18pOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fcmVwcl9fIiwgJnJlcHJfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX3JlcHJfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNTAyMCwyMyArNTI2MiwzMCBAQAogc2xvdF90cF9zdHIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpzdHJfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fc3RyX18pOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fc3RyX18iLCAmc3RyX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19zdHJfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3M7CisgICAgICAgIC8qIFB5T2JqZWN0ICpyZXNzOyAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXMgPSBzbG90X3RwX3JlcHIoc2VsZik7CiAgICAgICAgIGlmICghcmVzKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3MgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocmVzLCBOVUxMKTsKKyAgICAgICAgLyogWFhYIHRoaXMgaXMgbm9uLXNlbnNpY2FsLiBXaHkgc2hvdWxkIHdlIHJldHVybgorICAgICAgICAgICBhIGJ5dGVzIG9iamVjdCBmcm9tIF9fc3RyX18uIElzIHRoaXMgY29kZSBldmVuCisgICAgICAgICAgIHVzZWQ/IC0gbXZsICovCisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyoKKyAgICAgICAgcmVzcyA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhyZXMpOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIHJlc3M7CisgICAgICAgICovCiAgICAgfQogfQogCkBAIC01MDQ0LDEwICs1MjkzLDkgQEAKIHNsb3RfdHBfaGFzaChQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmhhc2hfc3RyOwogICAgIFB5X3NzaXplX3QgaDsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2hhc2hfXyIsICZoYXNoX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19oYXNoX18pOwogCiAgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CkBAIC01MDkxLDggKzUzMzksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfY2FsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FsbF9zdHI7Ci0gICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2NhbGxfXyIsICZjYWxsX3N0cik7CisgICAgX1B5X0lERU5USUZJRVIoX19jYWxsX18pOworICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2NhbGxfXyk7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChtZXRoID09IE5VTEwpCkBAIC01MTE4LDkgKzUzNjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfZ2V0YXR0cm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cmlidXRlX3N0ciA9IE5VTEw7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX2dldGF0dHJpYnV0ZV9fIiwgJmdldGF0dHJpYnV0ZV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBuYW1lKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19nZXRhdHRyaWJ1dGVfXywgIihPKSIsIG5hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTE0NiwyNiArNTM5MiwxNCBAQAogewogICAgIFB5VHlwZU9iamVjdCAqdHAgPSBQeV9UWVBFKHNlbGYpOwogICAgIFB5T2JqZWN0ICpnZXRhdHRyLCAqZ2V0YXR0cmlidXRlLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cmlidXRlX3N0ciA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRhdHRyX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRhdHRyX18pOwogCi0gICAgaWYgKGdldGF0dHJfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0YXR0cl9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRhdHRyX18iKTsKLSAgICAgICAgaWYgKGdldGF0dHJfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKGdldGF0dHJpYnV0ZV9zdHIgPT0gTlVMTCkgewotICAgICAgICBnZXRhdHRyaWJ1dGVfc3RyID0KLSAgICAgICAgICAgIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2dldGF0dHJpYnV0ZV9fIik7Ci0gICAgICAgIGlmIChnZXRhdHRyaWJ1dGVfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgLyogc3BlZWQgaGFjazogd2UgY291bGQgdXNlIGxvb2t1cF9tYXliZSwgYnV0IHRoYXQgd291bGQgcmVzb2x2ZSB0aGUKICAgICAgICBtZXRob2QgZnVsbHkgZm9yIGVhY2ggYXR0cmlidXRlIGxvb2t1cCBmb3IgY2xhc3NlcyB3aXRoCiAgICAgICAgX19nZXRhdHRyX18sIGV2ZW4gd2hlbiB0aGUgYXR0cmlidXRlIGlzIHByZXNlbnQuIFNvIHdlIHVzZQogICAgICAgIF9QeVR5cGVfTG9va3VwIGFuZCBjcmVhdGUgdGhlIG1ldGhvZCBvbmx5IHdoZW4gbmVlZGVkLCB3aXRoCiAgICAgICAgY2FsbF9hdHRyaWJ1dGUuICovCi0gICAgZ2V0YXR0ciA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRhdHRyX3N0cik7CisgICAgZ2V0YXR0ciA9IF9QeVR5cGVfTG9va3VwSWQodHAsICZQeUlkX19fZ2V0YXR0cl9fKTsKICAgICBpZiAoZ2V0YXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIC8qIE5vIF9fZ2V0YXR0cl9fIGhvb2s6IHVzZSBhIHNpbXBsZXIgZGlzcGF0Y2hlciAqLwogICAgICAgICB0cC0+dHBfZ2V0YXR0cm8gPSBzbG90X3RwX2dldGF0dHJvOwpAQCAtNTE3Nyw3ICs1NDExLDcgQEAKICAgICAgICBfX2dldGF0dHJfXywgZXZlbiB3aGVuIHNlbGYgaGFzIHRoZSBkZWZhdWx0IF9fZ2V0YXR0cmlidXRlX18KICAgICAgICBtZXRob2QuIFNvIHdlIHVzZSBfUHlUeXBlX0xvb2t1cCBhbmQgY3JlYXRlIHRoZSBtZXRob2Qgb25seSB3aGVuCiAgICAgICAgbmVlZGVkLCB3aXRoIGNhbGxfYXR0cmlidXRlLiAqLwotICAgIGdldGF0dHJpYnV0ZSA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRhdHRyaWJ1dGVfc3RyKTsKKyAgICBnZXRhdHRyaWJ1dGUgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldGF0dHJpYnV0ZV9fKTsKICAgICBpZiAoZ2V0YXR0cmlidXRlID09IE5VTEwgfHwKICAgICAgICAgKFB5X1RZUEUoZ2V0YXR0cmlidXRlKSA9PSAmUHlXcmFwcGVyRGVzY3JfVHlwZSAmJgogICAgICAgICAgKChQeVdyYXBwZXJEZXNjck9iamVjdCAqKWdldGF0dHJpYnV0ZSktPmRfd3JhcHBlZCA9PQpAQCAtNTIwMCw0MCArNTQzNCwzNyBAQAogc2xvdF90cF9zZXRhdHRybyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZGVsYXR0cl9zdHIsICpzZXRhdHRyX3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbGF0dHJfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19zZXRhdHRyX18pOwogCiAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX2RlbGF0dHJfXyIsICZkZWxhdHRyX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihPKSIsIG5hbWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGF0dHJfXywgIihPKSIsIG5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0YXR0cl9fIiwgJnNldGF0dHJfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19zZXRhdHRyX18sICIoT08pIiwgbmFtZSwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgY2hhciAqbmFtZV9vcFtdID0gewotICAgICJfX2x0X18iLAotICAgICJfX2xlX18iLAotICAgICJfX2VxX18iLAotICAgICJfX25lX18iLAotICAgICJfX2d0X18iLAotICAgICJfX2dlX18iLAorc3RhdGljIF9QeV9JZGVudGlmaWVyIG5hbWVfb3BbXSA9IHsKKyAgICB7MCwgIl9fbHRfXyIsIDB9LAorICAgIHswLCAiX19sZV9fIiwgMH0sCisgICAgezAsICJfX2VxX18iLCAwfSwKKyAgICB7MCwgIl9fbmVfXyIsIDB9LAorICAgIHswLCAiX19ndF9fIiwgMH0sCisgICAgezAsICJfX2dlX18iLCAwfQogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm9wX3N0cls2XTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsIG5hbWVfb3Bbb3BdLCAmb3Bfc3RyW29wXSk7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJm5hbWVfb3Bbb3BdKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG90aGVyKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQpAQCAtNTI1MCw5ICs1NDgxLDkgQEAKIHNsb3RfdHBfaXRlcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKml0ZXJfc3RyLCAqZ2V0aXRlbV9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19pdGVyX18pOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9faXRlcl9fIiwgJml0ZXJfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2l0ZXJfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYXJnczsKICAgICAgICAgYXJncyA9IHJlcyA9IFB5VHVwbGVfTmV3KDApOwpAQCAtNTI2NCw3ICs1NDk1LDcgQEAKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19nZXRpdGVtX18iLCAmZ2V0aXRlbV9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIsCkBAIC01Mjc4LDggKzU1MDksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfaXRlcm5leHQoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuZXh0X3N0cjsKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgIl9fbmV4dF9fIiwgJm5leHRfc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25leHRfXyk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCAiKCkiKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUyODcsMTQgKzU1MTgsOSBAQAogewogICAgIFB5VHlwZU9iamVjdCAqdHAgPSBQeV9UWVBFKHNlbGYpOwogICAgIFB5T2JqZWN0ICpnZXQ7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldF9fKTsKIAotICAgIGlmIChnZXRfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0X3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2dldF9fIik7Ci0gICAgICAgIGlmIChnZXRfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZ2V0ID0gX1B5VHlwZV9Mb29rdXAodHAsIGdldF9zdHIpOworICAgIGdldCA9IF9QeVR5cGVfTG9va3VwSWQodHAsICZQeUlkX19fZ2V0X18pOwogICAgIGlmIChnZXQgPT0gTlVMTCkgewogICAgICAgICAvKiBBdm9pZCBmdXJ0aGVyIHNsb3dkb3ducyAqLwogICAgICAgICBpZiAodHAtPnRwX2Rlc2NyX2dldCA9PSBzbG90X3RwX2Rlc2NyX2dldCkKQEAgLTUzMTMsMTQgKzU1MzksMTMgQEAKIHNsb3RfdHBfZGVzY3Jfc2V0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFyZ2V0LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbF9zdHIsICpzZXRfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsZXRlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0X18pOwogCiAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX2RlbGV0ZV9fIiwgJmRlbF9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCB0YXJnZXQpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGV0ZV9fLCAiKE8pIiwgdGFyZ2V0KTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldF9fIiwgJnNldF9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoT08pIiwgdGFyZ2V0LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0X18sICIoT08pIiwgdGFyZ2V0LCB2YWx1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC01MzMwLDggKzU1NTUsOCBAQAogc3RhdGljIGludAogc2xvdF90cF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppbml0X3N0cjsKLSAgICBQeU9iamVjdCAqbWV0aCA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9faW5pdF9fIiwgJmluaXRfc3RyKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2luaXRfXyk7CisgICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19faW5pdF9fKTsKICAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgaWYgKG1ldGggPT0gTlVMTCkKQEAgLTUzNTQsMTcgKzU1NzksMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5ld19zdHI7CiAgICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgUHlPYmplY3QgKm5ld2FyZ3MsICp4OwogICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBfUHlfSURFTlRJRklFUihfX25ld19fKTsKIAotICAgIGlmIChuZXdfc3RyID09IE5VTEwpIHsKLSAgICAgICAgbmV3X3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25ld19fIik7Ci0gICAgICAgIGlmIChuZXdfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIoKFB5T2JqZWN0ICopdHlwZSwgbmV3X3N0cik7CisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopdHlwZSwgJlB5SWRfX19uZXdfXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtNTM4OCw3ICs1NjA4LDcgQEAKIHN0YXRpYyB2b2lkCiBzbG90X3RwX2RlbChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbF9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsX18pOwogICAgIFB5T2JqZWN0ICpkZWwsICpyZXM7CiAgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKIApAQCAtNTQwMCw3ICs1NjIwLDcgQEAKICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKIAogICAgIC8qIEV4ZWN1dGUgX19kZWxfXyBtZXRob2QsIGlmIGFueS4gKi8KLSAgICBkZWwgPSBsb29rdXBfbWF5YmUoc2VsZiwgIl9fZGVsX18iLCAmZGVsX3N0cik7CisgICAgZGVsID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fZGVsX18pOwogICAgIGlmIChkZWwgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChkZWwsIE5VTEwpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCkBAIC02MTE1LDcgKzYzMzUsNyBAQAogICAgICAgICAvKiBXZSB3YW50IF9fY2xhc3NfXyB0byByZXR1cm4gdGhlIGNsYXNzIG9mIHRoZSBzdXBlciBvYmplY3QKICAgICAgICAgICAgKGkuZS4gc3VwZXIsIG9yIGEgc3ViY2xhc3MpLCBub3QgdGhlIGNsYXNzIG9mIHN1LT5vYmouICovCiAgICAgICAgIHNraXAgPSAoUHlVbmljb2RlX0NoZWNrKG5hbWUpICYmCi0gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUobmFtZSkgPT0gOSAmJgorICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gOSAmJgogICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgIl9fY2xhc3NfXyIpID09IDApOwogICAgIH0KIApAQCAtNjE0MCw2ICs2MzYwLDkgQEAKICAgICAgICAgfQogICAgICAgICBpKys7CiAgICAgICAgIHJlcyA9IE5VTEw7CisgICAgICAgIC8qIGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIG1ybyBiZWNhdXNlIHN0YXJ0dHlwZS0+dHBfbXJvIGNhbiBiZQorICAgICAgICAgICByZXBsYWNlZCBkdXJpbmcgUHlEaWN0X0dldEl0ZW0oZGljdCwgbmFtZSkgICovCisgICAgICAgIFB5X0lOQ1JFRihtcm8pOwogICAgICAgICBmb3IgKDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShtcm8sIGkpOwogICAgICAgICAgICAgaWYgKFB5VHlwZV9DaGVjayh0bXApKQpAQCAtNjE2NCw5ICs2Mzg3LDExIEBACiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgICAgICAgICByZXMgPSB0bXA7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtcm8pOwogICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG1ybyk7CiAgICAgfQogICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0QXR0cihzZWxmLCBuYW1lKTsKIH0KQEAgLTYxNzYsNyArNjQwMSw3IEBACiB7CiAgICAgLyogQ2hlY2sgdGhhdCBhIHN1cGVyKCkgY2FsbCBtYWtlcyBzZW5zZS4gIFJldHVybiBhIHR5cGUgb2JqZWN0LgogCi0gICAgICAgb2JqIGNhbiBiZSBhIG5ldy1zdHlsZSBjbGFzcywgb3IgYW4gaW5zdGFuY2Ugb2Ygb25lOgorICAgICAgIG9iaiBjYW4gYmUgYSBjbGFzcywgb3IgYW4gaW5zdGFuY2Ugb2Ygb25lOgogCiAgICAgICAgLSBJZiBpdCBpcyBhIGNsYXNzLCBpdCBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgJ3R5cGUnLiAgICAgIFRoaXMgY2FzZSBpcwogICAgICAgICAgdXNlZCBmb3IgY2xhc3MgbWV0aG9kczsgdGhlIHJldHVybiB2YWx1ZSBpcyBvYmouCkBAIC02MjAyLDE3ICs2NDI3LDkgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIFRyeSB0aGUgc2xvdyB3YXkgKi8KLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpjbGFzc19zdHIgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqY2xhc3NfYXR0cjsKIAotICAgICAgICBpZiAoY2xhc3Nfc3RyID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNsYXNzX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKLSAgICAgICAgICAgIGlmIChjbGFzc19zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIGNsYXNzX2F0dHIgPSBQeU9iamVjdF9HZXRBdHRyKG9iaiwgY2xhc3Nfc3RyKTsKLQorICAgICAgICBjbGFzc19hdHRyID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fY2xhc3NfXyk7CiAgICAgICAgIGlmIChjbGFzc19hdHRyICE9IE5VTEwgJiYKICAgICAgICAgICAgIFB5VHlwZV9DaGVjayhjbGFzc19hdHRyKSAmJgogICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKWNsYXNzX2F0dHIgIT0gUHlfVFlQRShvYmopKQpAQCAtNjI4OSwxOCArNjUwNiwxOCBAQAogICAgICAgICBQeUNvZGVPYmplY3QgKmNvID0gZi0+Zl9jb2RlOwogICAgICAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgICAgIGlmIChjbyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBubyBjb2RlIG9iamVjdCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChjby0+Y29fYXJnY291bnQgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogbm8gYXJndW1lbnRzIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgb2JqID0gZi0+Zl9sb2NhbHNwbHVzWzBdOwogICAgICAgICBpZiAob2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGFyZ1swXSBkZWxldGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTYzMTksMTggKzY1MzYsMTggQEAKICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2VsbCA9IGYtPmZfbG9jYWxzcGx1c1tpbmRleF07CiAgICAgICAgICAgICAgICAgaWYgKGNlbGwgPT0gTlVMTCB8fCAhUHlDZWxsX0NoZWNrKGNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogYmFkIF9fY2xhc3NfXyBjZWxsIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdHlwZSA9IChQeVR5cGVPYmplY3QgKikgUHlDZWxsX0dFVChjZWxsKTsKICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogZW1wdHkgX19jbGFzc19fIGNlbGwiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayh0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IF9fY2xhc3NfXyBpcyBub3QgYSB0eXBlICglcykiLAogICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodHlwZSktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC02MzM5LDcgKzY1NTYsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICh0eXBlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IF9fY2xhc3NfXyBjZWxsIG5vdCBmb3VuZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVzbG90cy5pbmMgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKaW5kZXggNTE4NmRjZi4uY2FhMWUwMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jCisrKyBiL09iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtMSw0ICsxLDQgQEAKLS8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgJFJldmlzaW9uJCAqLworLyogR2VuZXJhdGVkIGJ5IHR5cGVzbG90cy5weSAqLwogMCwKIDAsCiBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19tYXBwaW5nLm1wX2Fzc19zdWJzY3JpcHQpLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlc2xvdHMucHkgYi9PYmplY3RzL3R5cGVzbG90cy5weQppbmRleCAyZTAwYzgwLi5iMjRjN2Y0IDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVzbG90cy5weQorKysgYi9PYmplY3RzL3R5cGVzbG90cy5weQpAQCAtMyw3ICszLDcgQEAKIAogaW1wb3J0IHN5cywgcmUKIAotcHJpbnQoIi8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgJFJldmlzaW9uJCAqLyIpCitwcmludCgiLyogR2VuZXJhdGVkIGJ5IHR5cGVzbG90cy5weSAqLyIpCiByZXMgPSB7fQogZm9yIGxpbmUgaW4gc3lzLnN0ZGluOgogICAgIG0gPSByZS5tYXRjaCgiI2RlZmluZSBQeV8oW2Etel9dKykgKFswLTldKykiLCBsaW5lKQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYyBiL09iamVjdHMvdW5pY29kZWN0eXBlLmMKaW5kZXggOWY2YWM4OS4uYTU3MmMxMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYworKysgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCkBAIC0yMSwxMyArMjEsMjAgQEAKICNkZWZpbmUgWElEX1NUQVJUX01BU0sgMHgxMDAKICNkZWZpbmUgWElEX0NPTlRJTlVFX01BU0sgMHgyMDAKICNkZWZpbmUgUFJJTlRBQkxFX01BU0sgMHg0MDAKLSNkZWZpbmUgTk9ERUxUQV9NQVNLIDB4ODAwCi0jZGVmaW5lIE5VTUVSSUNfTUFTSyAweDEwMDAKKyNkZWZpbmUgTlVNRVJJQ19NQVNLIDB4ODAwCisjZGVmaW5lIENBU0VfSUdOT1JBQkxFX01BU0sgMHgxMDAwCisjZGVmaW5lIENBU0VEX01BU0sgMHgyMDAwCisjZGVmaW5lIEVYVEVOREVEX0NBU0VfTUFTSyAweDQwMDAKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGNvbnN0IFB5X1VDUzQgdXBwZXI7Ci0gICAgY29uc3QgUHlfVUNTNCBsb3dlcjsKLSAgICBjb25zdCBQeV9VQ1M0IHRpdGxlOworICAgIC8qIAorICAgICAgIFRoZXNlIGFyZSBlaXRoZXIgZGVsdGFzIHRvIHRoZSBjaGFyYWN0ZXIgb3Igb2Zmc2V0cyBpbgorICAgICAgIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlLgorICAgICovCisgICAgY29uc3QgaW50IHVwcGVyOworICAgIGNvbnN0IGludCBsb3dlcjsKKyAgICBjb25zdCBpbnQgdGl0bGU7CisgICAgLyogTm90ZSBpZiBtb3JlIGZsYWcgc3BhY2UgaXMgbmVlZGVkLCBkZWNpbWFsIGFuZCBkaWdpdCBjb3VsZCBiZSB1bmlmaWVkLiAqLwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVjaW1hbDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRpZ2l0OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IGZsYWdzOwpAQCAtNTcsMTUgKzY0LDEwIEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9UaXRsZWNhc2UocmVnaXN0ZXIgUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPnRpdGxlOwogCi0gICAgaWYgKGN0eXBlLT5mbGFncyAmIE5PREVMVEFfTUFTSykKLSAgICAgICAgcmV0dXJuIGRlbHRhOwotCi0gICAgaWYgKGRlbHRhID49IDMyNzY4KQotICAgICAgICAgICAgZGVsdGEgLT0gNjU1MzY7Ci0KLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbY3R5cGUtPnRpdGxlICYgMHhGRkZGXTsKKyAgICByZXR1cm4gY2ggKyBjdHlwZS0+dGl0bGU7CiB9CiAKIC8qIFJldHVybnMgMSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzIGhhdmluZyB0aGUgY2F0ZWdvcnkgJ0x0JywgMApAQCAtMTg4LDEyICsxOTAsMTAgQEAKIFB5X1VDUzQgX1B5VW5pY29kZV9Ub1VwcGVyY2FzZShQeV9VQ1M0IGNoKQogewogICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKLSAgICBpbnQgZGVsdGEgPSBjdHlwZS0+dXBwZXI7Ci0gICAgaWYgKGN0eXBlLT5mbGFncyAmIE5PREVMVEFfTUFTSykKLSAgICAgICAgcmV0dXJuIGRlbHRhOwotICAgIGlmIChkZWx0YSA+PSAzMjc2OCkKLSAgICAgICAgICAgIGRlbHRhIC09IDY1NTM2OwotICAgIHJldHVybiBjaCArIGRlbHRhOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2N0eXBlLT51cHBlciAmIDB4RkZGRl07CisgICAgcmV0dXJuIGNoICsgY3R5cGUtPnVwcGVyOwogfQogCiAvKiBSZXR1cm5zIHRoZSBsb3dlcmNhc2UgVW5pY29kZSBjaGFyYWN0ZXJzIGNvcnJlc3BvbmRpbmcgdG8gY2ggb3IganVzdApAQCAtMjAyLDEyICsyMDIsODcgQEAKIFB5X1VDUzQgX1B5VW5pY29kZV9Ub0xvd2VyY2FzZShQeV9VQ1M0IGNoKQogewogICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKLSAgICBpbnQgZGVsdGEgPSBjdHlwZS0+bG93ZXI7Ci0gICAgaWYgKGN0eXBlLT5mbGFncyAmIE5PREVMVEFfTUFTSykKLSAgICAgICAgcmV0dXJuIGRlbHRhOwotICAgIGlmIChkZWx0YSA+PSAzMjc2OCkKLSAgICAgICAgICAgIGRlbHRhIC09IDY1NTM2OwotICAgIHJldHVybiBjaCArIGRlbHRhOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2N0eXBlLT5sb3dlciAmIDB4RkZGRl07CisgICAgcmV0dXJuIGNoICsgY3R5cGUtPmxvd2VyOworfQorCitpbnQgX1B5VW5pY29kZV9Ub0xvd2VyRnVsbChQeV9VQ1M0IGNoLCBQeV9VQ1M0ICpyZXMpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykgeworICAgICAgICBpbnQgaW5kZXggPSBjdHlwZS0+bG93ZXIgJiAweEZGRkY7CisgICAgICAgIGludCBuID0gY3R5cGUtPmxvd2VyID4+IDI0OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXNbMF0gPSBjaCArIGN0eXBlLT5sb3dlcjsKKyAgICByZXR1cm4gMTsKK30KKworaW50IF9QeVVuaWNvZGVfVG9UaXRsZUZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spIHsKKyAgICAgICAgaW50IGluZGV4ID0gY3R5cGUtPnRpdGxlICYgMHhGRkZGOworICAgICAgICBpbnQgbiA9IGN0eXBlLT50aXRsZSA+PiAyNDsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmVzWzBdID0gY2ggKyBjdHlwZS0+dGl0bGU7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludCBfUHlVbmljb2RlX1RvVXBwZXJGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKSB7CisgICAgICAgIGludCBpbmRleCA9IGN0eXBlLT51cHBlciAmIDB4RkZGRjsKKyAgICAgICAgaW50IG4gPSBjdHlwZS0+dXBwZXIgPj4gMjQ7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgcmVzW2ldID0gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbaW5kZXggKyBpXTsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJlc1swXSA9IGNoICsgY3R5cGUtPnVwcGVyOworICAgIHJldHVybiAxOworfQorCitpbnQgX1B5VW5pY29kZV9Ub0ZvbGRlZEZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0sgJiYgKGN0eXBlLT5sb3dlciA+PiAyMCkgJiA3KSB7CisgICAgICAgIGludCBpbmRleCA9IChjdHlwZS0+bG93ZXIgJiAweEZGRkYpICsgKGN0eXBlLT5sb3dlciA+PiAyNCk7CisgICAgICAgIGludCBuID0gKGN0eXBlLT5sb3dlciA+PiAyMCkgJiA3OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZV9Ub0xvd2VyRnVsbChjaCwgcmVzKTsKK30KKworaW50IF9QeVVuaWNvZGVfSXNDYXNlZChQeV9VQ1M0IGNoKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIHJldHVybiAoY3R5cGUtPmZsYWdzICYgQ0FTRURfTUFTSykgIT0gMDsKK30KKworaW50IF9QeVVuaWNvZGVfSXNDYXNlSWdub3JhYmxlKFB5X1VDUzQgY2gpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgcmV0dXJuIChjdHlwZS0+ZmxhZ3MgJiBDQVNFX0lHTk9SQUJMRV9NQVNLKSAhPSAwOwogfQogCiAvKiBSZXR1cm5zIDEgZm9yIFVuaWNvZGUgY2hhcmFjdGVycyBoYXZpbmcgdGhlIGNhdGVnb3J5ICdMbCcsICdMdScsICdMdCcsCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCmluZGV4IDFkZDNhODUuLjZjOGZlMmQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCkBAIC0xLDggKzEsNyBAQAogLyoKIAogVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBvcmlnaW5hbCBjb2RlIGJ5IEZyZWRyaWsgTHVuZGgsCi1tb2RpZmllZCBieSBNYXJjLUFuZHJlIExlbWJ1cmcgPG1hbEBsZW1idXJnLmNvbT4gYWNjb3JkaW5nIHRvIHRoZQotVW5pY29kZSBJbnRlZ3JhdGlvbiBQcm9wb3NhbCAoc2VlIGZpbGUgTWlzYy91bmljb2RlLnR4dCkuCittb2RpZmllZCBieSBNYXJjLUFuZHJlIExlbWJ1cmcgPG1hbEBsZW1idXJnLmNvbT4uCiAKIE1ham9yIHNwZWVkIHVwZ3JhZGVzIHRvIHRoZSBtZXRob2QgaW1wbGVtZW50YXRpb25zIGF0IHRoZSBSZXlramF2aWsKIE5lZWRGb3JTcGVlZCBzcHJpbnQsIGJ5IEZyZWRyaWsgTHVuZGggYW5kIEFuZHJldyBEYWxrZS4KQEAgLTQyLDM0ICs0MSwxMiBAQAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAidWNuaGFzaC5oIgorI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAotLyogTGltaXQgZm9yIHRoZSBVbmljb2RlIG9iamVjdCBmcmVlIGxpc3QgKi8KLQotI2RlZmluZSBQeVVuaWNvZGVfTUFYRlJFRUxJU1QgICAgICAgMTAyNAotCi0vKiBMaW1pdCBmb3IgdGhlIFVuaWNvZGUgb2JqZWN0IGZyZWUgbGlzdCBzdGF5IGFsaXZlIG9wdGltaXphdGlvbi4KLQotICAgVGhlIGltcGxlbWVudGF0aW9uIHdpbGwga2VlcCBhbGxvY2F0ZWQgVW5pY29kZSBtZW1vcnkgaW50YWN0IGZvcgotICAgYWxsIG9iamVjdHMgb24gdGhlIGZyZWUgbGlzdCBoYXZpbmcgYSBzaXplIGxlc3MgdGhhbiB0aGlzCi0gICBsaW1pdC4gVGhpcyByZWR1Y2VzIG1hbGxvYygpIG92ZXJoZWFkIGZvciBzbWFsbCBVbmljb2RlIG9iamVjdHMuCi0KLSAgIEF0IHdvcnN0IHRoaXMgd2lsbCByZXN1bHQgaW4gUHlVbmljb2RlX01BWEZSRUVMSVNUICoKLSAgIChzaXplb2YoUHlVbmljb2RlT2JqZWN0KSArIEtFRVBBTElWRV9TSVpFX0xJTUlUICsKLSAgIG1hbGxvYygpLW92ZXJoZWFkKSBieXRlcyBvZiB1bnVzZWQgZ2FyYmFnZS4KLQotICAgU2V0dGluZyB0aGUgbGltaXQgdG8gMCBlZmZlY3RpdmVseSB0dXJucyB0aGUgZmVhdHVyZSBvZmYuCi0KLSAgIE5vdGU6IFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgISBJZiB5b3UgZ2V0IGNvcmUgZHVtcHMgd2hlbgotICAgdXNpbmcgVW5pY29kZSBvYmplY3RzLCB0dXJuIHRoaXMgZmVhdHVyZSBvZmYuCi0KLSovCi0KLSNkZWZpbmUgS0VFUEFMSVZFX1NJWkVfTElNSVQgICAgICAgOQotCiAvKiBFbmRpYW5uZXNzIHN3aXRjaGVzOyBkZWZhdWx0cyB0byBsaXR0bGUgZW5kaWFuICovCiAKICNpZmRlZiBXT1JEU19CSUdFTkRJQU4KQEAgLTkwLDYgKzY3LDExMCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLyogTWF4aW11bSBjb2RlIHBvaW50IG9mIFVuaWNvZGUgNi4wOiAweDEwZmZmZiAoMSwxMTQsMTExKSAqLworI2RlZmluZSBNQVhfVU5JQ09ERSAweDEwZmZmZgorCisjaWZkZWYgUHlfREVCVUcKKyMgIGRlZmluZSBfUHlVbmljb2RlX0NIRUNLKG9wKSBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kob3AsIDApCisjZWxzZQorIyAgZGVmaW5lIF9QeVVuaWNvZGVfQ0hFQ0sob3ApIFB5VW5pY29kZV9DaGVjayhvcCkKKyNlbmRpZgorCisjZGVmaW5lIF9QeVVuaWNvZGVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApKS0+dXRmOCkKKyNkZWZpbmUgUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgKChjaGFyKikoKFB5QVNDSUlPYmplY3QqKShvcCkgKyAxKSkgOiAgICAgICAgICBcCisgICAgICAgICBfUHlVbmljb2RlX1VURjgob3ApKQorI2RlZmluZSBfUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPnV0ZjhfbGVuZ3RoKQorI2RlZmluZSBQeVVuaWNvZGVfVVRGOF9MRU5HVEgob3ApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgICAgICAgICAgXAorICAgICBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkgPyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAoKFB5QVNDSUlPYmplY3QqKShvcCkpLT5sZW5ndGggOiAgICAgICAgICAgICAgIFwKKyAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgob3ApKQorI2RlZmluZSBfUHlVbmljb2RlX1dTVFIob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCopKG9wKSktPndzdHIpCisjZGVmaW5lIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApKS0+d3N0cl9sZW5ndGgpCisjZGVmaW5lIF9QeVVuaWNvZGVfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPmxlbmd0aCkKKyNkZWZpbmUgX1B5VW5pY29kZV9TVEFURShvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+c3RhdGUpCisjZGVmaW5lIF9QeVVuaWNvZGVfSEFTSChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPmhhc2gpCisjZGVmaW5lIF9QeVVuaWNvZGVfS0lORChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+c3RhdGUua2luZCkKKyNkZWZpbmUgX1B5VW5pY29kZV9HRVRfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisjZGVmaW5lIF9QeVVuaWNvZGVfREFUQV9BTlkob3ApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeVVuaWNvZGVPYmplY3QqKShvcCkpLT5kYXRhLmFueSkKKworLyogT3B0aW1pemVkIHZlcnNpb24gb2YgUHlfTUFYKCkgdG8gY29tcHV0ZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXI6CisgICB1c2UgaXQgd2hlbiB5b3VyIGFyZSBjb21wdXRpbmcgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBQeVVuaWNvZGVfTmV3KCkgKi8KKyNkZWZpbmUgTUFYX01BWENIQVIobWF4Y2hhcjEsIG1heGNoYXIyKSAgICAgICAgICAgICAgICAgXAorICAgICgobWF4Y2hhcjEpIHwgKG1heGNoYXIyKSkKKworI3VuZGVmIFB5VW5pY29kZV9SRUFEWQorI2RlZmluZSBQeVVuaWNvZGVfUkVBRFkob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKFB5VW5pY29kZV9JU19SRUFEWShvcCkgPyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgMCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfUHlVbmljb2RlX1JlYWR5KG9wKSkpCisKKyNkZWZpbmUgX1B5VW5pY29kZV9TSEFSRV9VVEY4KG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApKSwgICAgICAgICAgIFwKKyAgICAgKF9QeVVuaWNvZGVfVVRGOChvcCkgPT0gUHlVbmljb2RlX0RBVEEob3ApKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9TSEFSRV9XU1RSKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPT0gUHlVbmljb2RlX0RBVEEob3ApKSkKKworLyogdHJ1ZSBpZiB0aGUgVW5pY29kZSBvYmplY3QgaGFzIGFuIGFsbG9jYXRlZCBVVEYtOCBtZW1vcnkgYmxvY2sKKyAgIChub3Qgc2hhcmVkIHdpdGggb3RoZXIgZGF0YSkgKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkob3ApICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICYmIF9QeVVuaWNvZGVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgJiYgX1B5VW5pY29kZV9VVEY4KG9wKSAhPSBQeVVuaWNvZGVfREFUQShvcCkpKQorCisvKiB0cnVlIGlmIHRoZSBVbmljb2RlIG9iamVjdCBoYXMgYW4gYWxsb2NhdGVkIHdzdHIgbWVtb3J5IGJsb2NrCisgICAobm90IHNoYXJlZCB3aXRoIG90aGVyIGRhdGEpICovCisjZGVmaW5lIF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoX1B5VW5pY29kZV9XU1RSKG9wKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoIVB5VW5pY29kZV9JU19SRUFEWShvcCkgfHwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBfUHlVbmljb2RlX1dTVFIob3ApICE9IFB5VW5pY29kZV9EQVRBKG9wKSkpKQorCisvKiBHZW5lcmljIGhlbHBlciBtYWNybyB0byBjb252ZXJ0IGNoYXJhY3RlcnMgb2YgZGlmZmVyZW50IHR5cGVzLgorICAgZnJvbV90eXBlIGFuZCB0b190eXBlIGhhdmUgdG8gYmUgdmFsaWQgdHlwZSBuYW1lcywgYmVnaW4gYW5kIGVuZAorICAgYXJlIHBvaW50ZXJzIHRvIHRoZSBzb3VyY2UgY2hhcmFjdGVycyB3aGljaCBzaG91bGQgYmUgb2YgdHlwZQorICAgImZyb21fdHlwZSAqIi4gIHRvIGlzIGEgcG9pbnRlciBvZiB0eXBlICJ0b190eXBlICoiIGFuZCBwb2ludHMgdG8gdGhlCisgICBidWZmZXIgd2hlcmUgdGhlIHJlc3VsdCBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIHRvLiAqLworI2RlZmluZSBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoZnJvbV90eXBlLCB0b190eXBlLCBiZWdpbiwgZW5kLCB0bykgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRvX3R5cGUgKl90byA9ICh0b190eXBlICopIHRvOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgZnJvbV90eXBlICpfaXRlciA9IChiZWdpbik7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBmcm9tX3R5cGUgKl9lbmQgPSAoZW5kKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgbiA9IChfZW5kKSAtIChfaXRlcik7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgZnJvbV90eXBlICpfdW5yb2xsZWRfZW5kID0gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX2l0ZXIgKyBfUHlfU0laRV9ST1VORF9ET1dOKG4sIDQpOyAgICAgICAgICBcCisgICAgICAgIHdoaWxlIChfaXRlciA8IChfdW5yb2xsZWRfZW5kKSkgeyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1swXSA9ICh0b190eXBlKSBfaXRlclswXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3RvWzFdID0gKHRvX3R5cGUpIF9pdGVyWzFdOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bMl0gPSAodG9fdHlwZSkgX2l0ZXJbMl07ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1szXSA9ICh0b190eXBlKSBfaXRlclszXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX2l0ZXIgKz0gNDsgX3RvICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgd2hpbGUgKF9pdGVyIDwgKF9lbmQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKl90bysrID0gKHRvX3R5cGUpICpfaXRlcisrOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKwogLyogVGhpcyBkaWN0aW9uYXJ5IGhvbGRzIGFsbCBpbnRlcm5lZCB1bmljb2RlIHN0cmluZ3MuICBOb3RlIHRoYXQgcmVmZXJlbmNlcwogICAgdG8gc3RyaW5ncyBpbiB0aGlzIGRpY3Rpb25hcnkgYXJlICpub3QqIGNvdW50ZWQgaW4gdGhlIHN0cmluZydzIG9iX3JlZmNudC4KICAgIFdoZW4gdGhlIGludGVybmVkIHN0cmluZyByZWFjaGVzIGEgcmVmY250IG9mIDAgdGhlIHN0cmluZyBkZWFsbG9jYXRpb24KQEAgLTEwMCwxNiArMTgxLDE1IEBACiAqLwogc3RhdGljIFB5T2JqZWN0ICppbnRlcm5lZDsKIAotLyogRnJlZSBsaXN0IGZvciBVbmljb2RlIG9iamVjdHMgKi8KLXN0YXRpYyBQeVVuaWNvZGVPYmplY3QgKmZyZWVfbGlzdDsKLXN0YXRpYyBpbnQgbnVtZnJlZTsKLQogLyogVGhlIGVtcHR5IFVuaWNvZGUgb2JqZWN0IGlzIHNoYXJlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiAqLwotc3RhdGljIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZV9lbXB0eTsKK3N0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbXB0eTsKKworLyogTGlzdCBvZiBzdGF0aWMgc3RyaW5ncy4gKi8KK3N0YXRpYyBfUHlfSWRlbnRpZmllciAqc3RhdGljX3N0cmluZ3M7CiAKIC8qIFNpbmdsZSBjaGFyYWN0ZXIgVW5pY29kZSBzdHJpbmdzIGluIHRoZSBMYXRpbi0xIHJhbmdlIGFyZSBiZWluZwogICAgc2hhcmVkIGFzIHdlbGwuICovCi1zdGF0aWMgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlX2xhdGluMVsyNTZdOworc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2xhdGluMVsyNTZdOwogCiAvKiBGYXN0IGRldGVjdGlvbiBvZiB0aGUgbW9zdCBmcmVxdWVudCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKi8KIGNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X2FzY2lpX3doaXRlc3BhY2VbXSA9IHsKQEAgLTE0MiwxNiArMjIyLDMxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAogfTsKIAotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCisvKiBmb3J3YXJkICovCitzdGF0aWMgUHlVbmljb2RlT2JqZWN0ICpfUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IGxlbmd0aCk7CitzdGF0aWMgUHlPYmplY3QqIGdldF9sYXRpbjFfY2hhcih1bnNpZ25lZCBjaGFyIGNoKTsKK3N0YXRpYyBpbnQgdW5pY29kZV9tb2RpZmlhYmxlKFB5T2JqZWN0ICp1bmljb2RlKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tVUNTMShjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpOworc3RhdGljIFB5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbVVDUzIoY29uc3QgUHlfVUNTMiAqcywgUHlfc3NpemVfdCBzaXplKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21VQ1M0KGNvbnN0IFB5X1VDUzQgKnMsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCiAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywgUHlfc3NpemVfdCAqbmV3cG9zKTsKIAotc3RhdGljIHZvaWQgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CitzdGF0aWMgdm9pZAorcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKIAogLyogU2FtZSBmb3IgbGluZWJyZWFrcyAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CkBAIC0xODEsNyArMjc2LDggQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiB9OwogCi0KKy8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgorICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCiBQeVVuaWNvZGVfR2V0TWF4KHZvaWQpCiB7CkBAIC0xOTQsNiArMjkwLDIyNCBAQAogI2VuZGlmCiB9CiAKKyNpZmRlZiBQeV9ERUJVRworaW50CitfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koUHlPYmplY3QgKm9wLCBpbnQgY2hlY2tfY29udGVudCkKK3sKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKTsKKworICAgIGFzY2lpID0gKFB5QVNDSUlPYmplY3QgKilvcDsKKyAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7CisKKyAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpID09IDEgJiYgYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMSkgeworICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICpjb21wYWN0ID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvcDsKKyAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMSkgeworICAgICAgICAgICAgZGF0YSA9IGNvbXBhY3QgKyAxOworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmFzY2lpID09IDApOworICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAxKTsKKyAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOCAhPSBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSA9IChQeVVuaWNvZGVPYmplY3QgKilvcDsKKworICAgICAgICAgICAgZGF0YSA9IHVuaWNvZGUtPmRhdGEuYW55OworICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPmxlbmd0aCA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPmhhc2ggPT0gLTEpOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmFzY2lpID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5pbnRlcm5lZCA9PSBTU1RBVEVfTk9UX0lOVEVSTkVEKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPndzdHIgIT0gTlVMTCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGRhdGEgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPnV0ZjggPT0gTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDEpOworICAgICAgICAgICAgICAgIGFzc2VydChkYXRhICE9IE5VTEwpOworICAgICAgICAgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4ID09IGRhdGEpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjhfbGVuZ3RoID09IGFzY2lpLT5sZW5ndGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOCAhPSBkYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICAgICAgaWYgKAorI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgICAgICAgICBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisjZWxzZQorICAgICAgICAgICAgICAgIGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQKKyNlbmRpZgorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+d3N0ciA9PSBkYXRhKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+d3N0cl9sZW5ndGggPT0gYXNjaWktPmxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPndzdHIgIT0gZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29tcGFjdC0+dXRmOCA9PSBOVUxMKQorICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPnV0ZjhfbGVuZ3RoID09IDApOworICAgICAgICBpZiAoYXNjaWktPndzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT53c3RyX2xlbmd0aCA9PSAwKTsKKyAgICB9CisgICAgLyogY2hlY2sgdGhhdCB0aGUgYmVzdCBraW5kIGlzIHVzZWQgKi8KKyAgICBpZiAoY2hlY2tfY29udGVudCAmJiBraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgIHsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBQeV9VQ1M0IG1heGNoYXIgPSAwOworICAgICAgICB2b2lkICpkYXRhOworICAgICAgICBQeV9VQ1M0IGNoOworCisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShhc2NpaSk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgYXNjaWktPmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgaWYgKGNoID4gbWF4Y2hhcikKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gY2g7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMCkgeworICAgICAgICAgICAgICAgIGFzc2VydChtYXhjaGFyID49IDEyOCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPD0gMjU1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8IDEyOCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPj0gMHgxMDApOworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPD0gMHhGRkZGKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyID49IDB4MTAwMDApOworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPD0gTUFYX1VOSUNPREUpOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBhc2NpaS0+bGVuZ3RoKSA9PSAwKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHRfd2NoYXIoUHlPYmplY3QgKnVuaWNvZGUpCit7CisjaWZuZGVmIFB5X0RFQlVHCisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBhc3NlcnQoUHlfUkVGQ05UKHVuaWNvZGUpID09IDEpOworCisgICAgbGVuID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICB3Y2hhcl90IGNoID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpWzBdOworICAgICAgICBpZiAoY2ggPCAyNTYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsYXRpbjFfY2hhciA9IGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gbGF0aW4xX2NoYXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoX1B5VW5pY29kZV9SZWFkeSh1bmljb2RlKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2Vsc2UKKyAgICAvKiBkb24ndCBtYWtlIHRoZSByZXN1bHQgcmVhZHkgaW4gZGVidWcgbW9kZSB0byBlbnN1cmUgdGhhdCB0aGUgY2FsbGVyCisgICAgICAgbWFrZXMgdGhlIHN0cmluZyByZWFkeSBiZWZvcmUgdXNpbmcgaXQgKi8KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyNlbmRpZgorICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdF9yZWFkeShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICBpZiAodW5pY29kZSAhPSB1bmljb2RlX2VtcHR5KSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIDApOworICAgICAgICBpZiAoY2ggPCAyNTYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsYXRpbjFfY2hhciA9IHVuaWNvZGVfbGF0aW4xW2NoXTsKKyAgICAgICAgICAgIGlmIChsYXRpbjFfY2hhciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgIT0gbGF0aW4xX2NoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGxhdGluMV9jaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbGF0aW4xX2NoYXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7CisgICAgICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbY2hdID0gdW5pY29kZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdChQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgaWYgKFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3JlYWR5KHVuaWNvZGUpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3djaGFyKHVuaWNvZGUpOworfQorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHVuaWNvZGUpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICAvKiBTdWJ0eXBlIC0tIHJldHVybiBnZW51aW5lIHVuaWNvZGUgc3RyaW5nIHdpdGggdGhlIHNhbWUgdmFsdWUuICovCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0NvcHkodW5pY29kZSk7Cit9CisKKyNpZmRlZiBIQVZFX01CQ1MKK3N0YXRpYyBPU1ZFUlNJT05JTkZPRVggd2ludmVyOworI2VuZGlmCisKIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC0yMjMsNyArNTM3LDggQEAKICAgICAoKGNoKSA8IDEyOFUgPyBhc2NpaV9saW5lYnJlYWtbKGNoKV0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKEJMT09NKGJsb29tX2xpbmVicmVhaywgKGNoKSkgJiYgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkpKQogCi1QeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykgbWFrZV9ibG9vbV9tYXNrKFB5X1VOSUNPREUqIHB0ciwgUHlfc3NpemVfdCBsZW4pCitQeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykKK21ha2VfYmxvb21fbWFzayhpbnQga2luZCwgdm9pZCogcHRyLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICAvKiBjYWxjdWxhdGUgc2ltcGxlIGJsb29tLXN0eWxlIGJpdG1hc2sgZm9yIGEgZ2l2ZW4gdW5pY29kZSBzdHJpbmcgKi8KIApAQCAtMjMyLDc2ICs1NDcsMjUzIEBACiAKICAgICBtYXNrID0gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICAgIEJMT09NX0FERChtYXNrLCBwdHJbaV0pOworICAgICAgICBCTE9PTV9BREQobWFzaywgUHlVbmljb2RlX1JFQUQoa2luZCwgcHRyLCBpKSk7CiAKICAgICByZXR1cm4gbWFzazsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGludCkgdW5pY29kZV9tZW1iZXIoUHlfVU5JQ09ERSBjaHIsIFB5X1VOSUNPREUqIHNldCwgUHlfc3NpemVfdCBzZXRsZW4pCi17Ci0gICAgUHlfc3NpemVfdCBpOworI2RlZmluZSBCTE9PTV9NRU1CRVIobWFzaywgY2hyLCBzdHIpIFwKKyAgICAoQkxPT00obWFzaywgY2hyKSBcCisgICAgICYmIChQeVVuaWNvZGVfRmluZENoYXIoc3RyLCBjaHIsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0ciksIDEpID49IDApKQogCi0gICAgZm9yIChpID0gMDsgaSA8IHNldGxlbjsgaSsrKQotICAgICAgICBpZiAoc2V0W2ldID09IGNocikKLSAgICAgICAgICAgIHJldHVybiAxOworLyogQ29tcGlsYXRpb24gb2YgdGVtcGxhdGVkIHJvdXRpbmVzICovCiAKLSAgICByZXR1cm4gMDsKLX0KKyNpbmNsdWRlICJzdHJpbmdsaWIvYXNjaWlsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKIAotI2RlZmluZSBCTE9PTV9NRU1CRVIobWFzaywgY2hyLCBzZXQsIHNldGxlbikgICAgICAgICAgICAgICAgICAgIFwKLSAgICBCTE9PTShtYXNrLCBjaHIpICYmIHVuaWNvZGVfbWVtYmVyKGNociwgc2V0LCBzZXRsZW4pCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczFsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MybGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzNGxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VuaWNvZGVkZWZzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgogCiAvKiAtLS0gVW5pY29kZSBPYmplY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljCi1pbnQgdW5pY29kZV9yZXNpemUocmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQorc3RhdGljIFB5T2JqZWN0ICoKK2ZpeHVwKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0ICgqZml4ZmN0KShQeU9iamVjdCAqcykpOworCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIodm9pZCAqcywgaW50IGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgdm9pZCAqb2xkc3RyOworICAgIGludCBtb2RlID0gKGRpcmVjdGlvbiA9PSAxKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwogCi0gICAgLyogU2hvcnRjdXQgaWYgdGhlcmUncyBub3RoaW5nIG11Y2ggdG8gZG8uICovCi0gICAgaWYgKHVuaWNvZGUtPmxlbmd0aCA9PSBsZW5ndGgpCi0gICAgICAgIGdvdG8gcmVzZXQ7Ci0KLSAgICAvKiBSZXNpemluZyBzaGFyZWQgb2JqZWN0ICh1bmljb2RlX2VtcHR5IG9yIHNpbmdsZSBjaGFyYWN0ZXIKLSAgICAgICBvYmplY3RzKSBpbi1wbGFjZSBpcyBub3QgYWxsb3dlZC4gVXNlIFB5VW5pY29kZV9SZXNpemUoKQotICAgICAgIGluc3RlYWQgISAqLwotCi0gICAgaWYgKHVuaWNvZGUgPT0gdW5pY29kZV9lbXB0eSB8fAotICAgICAgICAodW5pY29kZS0+bGVuZ3RoID09IDEgJiYKLSAgICAgICAgIHVuaWNvZGUtPnN0clswXSA8IDI1NlUgJiYKLSAgICAgICAgIHVuaWNvZGVfbGF0aW4xW3VuaWNvZGUtPnN0clswXV0gPT0gdW5pY29kZSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHJlc2l6ZSBzaGFyZWQgc3RyIG9iamVjdHMiKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICB7CisgICAgICAgICAgICBQeV9VQ1MxIGNoMSA9IChQeV9VQ1MxKSBjaDsKKyAgICAgICAgICAgIGlmIChjaDEgPT0gY2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMSAqKSBzLCBzaXplLCAmY2gxLCAxLCAwLCBtb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICB7CisgICAgICAgICAgICBQeV9VQ1MyIGNoMiA9IChQeV9VQ1MyKSBjaDsKKyAgICAgICAgICAgIGlmIChjaDIgPT0gY2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMiAqKSBzLCBzaXplLCAmY2gyLCAxLCAwLCBtb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9mYXN0c2VhcmNoKChQeV9VQ1M0ICopIHMsIHNpemUsICZjaCwgMSwgMCwgbW9kZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorfQogCi0gICAgLyogV2UgYWxsb2NhdGUgb25lIG1vcmUgYnl0ZSB0byBtYWtlIHN1cmUgdGhlIHN0cmluZyBpcyBVeDAwMDAgdGVybWluYXRlZC4KLSAgICAgICBUaGUgb3ZlcmFsbG9jYXRpb24gaXMgYWxzbyB1c2VkIGJ5IGZhc3RzZWFyY2gsIHdoaWNoIGFzc3VtZXMgdGhhdCBpdCdzCi0gICAgICAgc2FmZSB0byBsb29rIGF0IHN0cltsZW5ndGhdICh3aXRob3V0IG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdAotICAgICAgIGl0IGNvbnRhaW5zKS4gKi8KK3N0YXRpYyBQeU9iamVjdCoKK3Jlc2l6ZV9jb21wYWN0KFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBQeV9zc2l6ZV90IGNoYXJfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHN0cnVjdF9zaXplOworICAgIFB5X3NzaXplX3QgbmV3X3NpemU7CisgICAgaW50IHNoYXJlX3dzdHI7CisgICAgUHlPYmplY3QgKm5ld191bmljb2RlOworICAgIGFzc2VydCh1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSk7CiAKLSAgICBvbGRzdHIgPSB1bmljb2RlLT5zdHI7Ci0gICAgdW5pY29kZS0+c3RyID0gUHlPYmplY3RfUkVBTExPQyh1bmljb2RlLT5zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkgKiAobGVuZ3RoICsgMSkpOwotICAgIGlmICghdW5pY29kZS0+c3RyKSB7Ci0gICAgICAgIHVuaWNvZGUtPnN0ciA9IChQeV9VTklDT0RFICopb2xkc3RyOworICAgIGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5QVNDSUlPYmplY3QpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlDb21wYWN0VW5pY29kZU9iamVjdCk7CisgICAgc2hhcmVfd3N0ciA9IF9QeVVuaWNvZGVfU0hBUkVfV1NUUih1bmljb2RlKTsKKworICAgIGlmIChsZW5ndGggPiAoKFBZX1NTSVpFX1RfTUFYIC0gc3RydWN0X3NpemUpIC8gY2hhcl9zaXplIC0gMSkpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5ld19zaXplID0gKHN0cnVjdF9zaXplICsgKGxlbmd0aCArIDEpICogY2hhcl9zaXplKTsKKworICAgIF9QeV9ERUNfUkVGVE9UQUw7CisgICAgX1B5X0ZvcmdldFJlZmVyZW5jZSh1bmljb2RlKTsKKworICAgIG5ld191bmljb2RlID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQygoY2hhciAqKXVuaWNvZGUsIG5ld19zaXplKTsKKyAgICBpZiAobmV3X3VuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKHVuaWNvZGUpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdW5pY29kZSA9IG5ld191bmljb2RlOworICAgIF9QeV9OZXdSZWZlcmVuY2UodW5pY29kZSk7CisKKyAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICBpZiAoc2hhcmVfd3N0cikgeworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIH0KKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodW5pY29kZSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIDApOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgaW50CityZXNpemVfaW5wbGFjZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgd2NoYXJfdCAqd3N0cjsKKyAgICBQeV9zc2l6ZV90IG5ld19zaXplOworICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpOworICAgIGFzc2VydChQeV9SRUZDTlQodW5pY29kZSkgPT0gMSk7CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKSB7CisgICAgICAgIFB5X3NzaXplX3QgY2hhcl9zaXplOworICAgICAgICBpbnQgc2hhcmVfd3N0ciwgc2hhcmVfdXRmODsKKyAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICBkYXRhID0gX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKTsKKyAgICAgICAgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIHNoYXJlX3dzdHIgPSBfUHlVbmljb2RlX1NIQVJFX1dTVFIodW5pY29kZSk7CisgICAgICAgIHNoYXJlX3V0ZjggPSBfUHlVbmljb2RlX1NIQVJFX1VURjgodW5pY29kZSk7CisKKyAgICAgICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAvIGNoYXJfc2l6ZSAtIDEpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG5ld19zaXplID0gKGxlbmd0aCArIDEpICogY2hhcl9zaXplOworCisgICAgICAgIGlmICghc2hhcmVfdXRmOCAmJiBfUHlVbmljb2RlX0hBU19VVEY4X01FTU9SWSh1bmljb2RlKSkKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSk7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBkYXRhID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQyhkYXRhLCBuZXdfc2l6ZSk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IGRhdGE7CisgICAgICAgIGlmIChzaGFyZV93c3RyKSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBkYXRhOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hhcmVfdXRmOCkgeworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gZGF0YTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgZGF0YSwgbGVuZ3RoLCAwKTsKKyAgICAgICAgaWYgKHNoYXJlX3dzdHIgfHwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSAhPSBOVUxMKTsKKworICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHVuaWNvZGUtPnN0cltsZW5ndGhdID0gMDsKLSAgICB1bmljb2RlLT5sZW5ndGggPSBsZW5ndGg7Ci0KLSAgcmVzZXQ6Ci0gICAgLyogUmVzZXQgdGhlIG9iamVjdCBjYWNoZXMgKi8KLSAgICBpZiAodW5pY29kZS0+ZGVmZW5jKSB7Ci0gICAgICAgIFB5X0NMRUFSKHVuaWNvZGUtPmRlZmVuYyk7CisgICAgbmV3X3NpemUgPSBzaXplb2Yod2NoYXJfdCkgKiAobGVuZ3RoICsgMSk7CisgICAgd3N0ciA9ICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgd3N0ciA9IFB5T2JqZWN0X1JFQUxMT0Mod3N0ciwgbmV3X3NpemUpOworICAgIGlmICghd3N0cikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHVuaWNvZGUtPmhhc2ggPSAtMTsKLQorICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IHdzdHI7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpW2xlbmd0aF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAwKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK3Jlc2l6ZV9jb3B5KFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBQeV9zc2l6ZV90IGNvcHlfbGVuZ3RoOworICAgIGlmIChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGNvcHkgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKTsKKyAgICAgICAgaWYgKGNvcHkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGNvcHlfbGVuZ3RoID0gUHlfTUlOKGxlbmd0aCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhjb3B5LCAwLCB1bmljb2RlLCAwLCBjb3B5X2xlbmd0aCk7CisgICAgICAgIHJldHVybiBjb3B5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnc7CisKKyAgICAgICAgdyA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcobGVuZ3RoKTsKKyAgICAgICAgaWYgKHcgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjb3B5X2xlbmd0aCA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIGNvcHlfbGVuZ3RoID0gUHlfTUlOKGNvcHlfbGVuZ3RoLCBsZW5ndGgpOworICAgICAgICBQeV9VTklDT0RFX0NPUFkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2xlbmd0aCk7CisgICAgICAgIHJldHVybiB3OworICAgIH0KK30KKwogLyogV2UgYWxsb2NhdGUgb25lIG1vcmUgYnl0ZSB0byBtYWtlIHN1cmUgdGhlIHN0cmluZyBpcwogICAgVXgwMDAwIHRlcm1pbmF0ZWQ7IHNvbWUgY29kZSAoZS5nLiBuZXdfaWRlbnRpZmllcikKICAgIHJlbGllcyBvbiB0aGF0LgpAQCAtMzExLDU1ICs4MDMsMzkgQEAKIAogKi8KIAotc3RhdGljCi1QeVVuaWNvZGVPYmplY3QgKl9QeVVuaWNvZGVfTmV3KFB5X3NzaXplX3QgbGVuZ3RoKQorc3RhdGljIFB5VW5pY29kZU9iamVjdCAqCitfUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IGxlbmd0aCkKIHsKICAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7CisgICAgc2l6ZV90IG5ld19zaXplOwogCiAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCiAgICAgaWYgKGxlbmd0aCA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICByZXR1cm4gKFB5VW5pY29kZU9iamVjdCopdW5pY29kZV9lbXB0eTsKICAgICB9CiAKICAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCiAgICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVPYmplY3QgKilQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KLQotICAgIC8qIFVuaWNvZGUgZnJlZWxpc3QgJiBtZW1vcnkgYWxsb2NhdGlvbiAqLwotICAgIGlmIChmcmVlX2xpc3QpIHsKLSAgICAgICAgdW5pY29kZSA9IGZyZWVfbGlzdDsKLSAgICAgICAgZnJlZV9saXN0ID0gKihQeVVuaWNvZGVPYmplY3QgKiopdW5pY29kZTsKLSAgICAgICAgbnVtZnJlZS0tOwotICAgICAgICBpZiAodW5pY29kZS0+c3RyKSB7Ci0gICAgICAgICAgICAvKiBLZWVwLUFsaXZlIG9wdGltaXphdGlvbjogd2Ugb25seSB1cHNpemUgdGhlIGJ1ZmZlciwKLSAgICAgICAgICAgICAgIG5ldmVyIGRvd25zaXplIGl0LiAqLwotICAgICAgICAgICAgaWYgKCh1bmljb2RlLT5sZW5ndGggPCBsZW5ndGgpICYmCi0gICAgICAgICAgICAgICAgdW5pY29kZV9yZXNpemUodW5pY29kZSwgbGVuZ3RoKSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdF9ERUwodW5pY29kZS0+c3RyKTsKLSAgICAgICAgICAgICAgICB1bmljb2RlLT5zdHIgPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpICogKChzaXplX3QpbGVuZ3RoICsgMSk7Ci0gICAgICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlPYmplY3RfSU5JVCh1bmljb2RlLCAmUHlVbmljb2RlX1R5cGUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc2l6ZV90IG5ld19zaXplOwotICAgICAgICB1bmljb2RlID0gUHlPYmplY3RfTmV3KFB5VW5pY29kZU9iamVjdCwgJlB5VW5pY29kZV9UeXBlKTsKLSAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBuZXdfc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKSAqICgoc2l6ZV90KWxlbmd0aCArIDEpOwotICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7CisgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIF9QeVVuaWNvZGVfTmV3Iik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghdW5pY29kZS0+c3RyKSB7CisgICAgdW5pY29kZSA9IFB5T2JqZWN0X05ldyhQeVVuaWNvZGVPYmplY3QsICZQeVVuaWNvZGVfVHlwZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbmV3X3NpemUgPSBzaXplb2YoUHlfVU5JQ09ERSkgKiAoKHNpemVfdClsZW5ndGggKyAxKTsKKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7CisgICAgaWYgKCFfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpIHsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIC8qIEluaXRpYWxpemUgdGhlIGZpcnN0IGVsZW1lbnQgdG8gZ3VhcmQgYWdhaW5zdCBjYXNlcyB3aGVyZQogICAgICAqIHRoZSBjYWxsZXIgZmFpbHMgYmVmb3JlIGluaXRpYWxpemluZyBzdHIgLS0gdW5pY29kZV9yZXNpemUoKQogICAgICAqIHJlYWRzIHN0clswXSwgYW5kIHRoZSBLZWVwLUFsaXZlIG9wdGltaXphdGlvbiBjYW4ga2VlcCBtZW1vcnkKQEAgLTM2NywyNCArODQzLDY1OCBAQAogICAgICAqIFdlIGRvbid0IHdhbnQgdW5pY29kZV9yZXNpemUgdG8gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbgogICAgICAqIHRoYXQgY2FzZS4KICAgICAgKi8KLSAgICB1bmljb2RlLT5zdHJbMF0gPSAwOwotICAgIHVuaWNvZGUtPnN0cltsZW5ndGhdID0gMDsKLSAgICB1bmljb2RlLT5sZW5ndGggPSBsZW5ndGg7Ci0gICAgdW5pY29kZS0+aGFzaCA9IC0xOwotICAgIHVuaWNvZGUtPnN0YXRlID0gMDsKLSAgICB1bmljb2RlLT5kZWZlbmMgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVswXSA9IDA7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpW2xlbmd0aF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpID0gLTE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmNvbXBhY3QgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAwOworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKFB5T2JqZWN0ICopdW5pY29kZSwgMCkpOwogICAgIHJldHVybiB1bmljb2RlOwotCi0gIG9uRXJyb3I6Ci0gICAgLyogWFhYIFVOUkVGL05FV1JFRiBpbnRlcmZhY2Ugc2hvdWxkIGJlIG1vcmUgc3ltbWV0cmljYWwgKi8KLSAgICBfUHlfREVDX1JFRlRPVEFMOwotICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2UoKFB5T2JqZWN0ICopdW5pY29kZSk7Ci0gICAgUHlPYmplY3RfRGVsKHVuaWNvZGUpOwotICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMKLXZvaWQgdW5pY29kZV9kZWFsbG9jKHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSkKK3N0YXRpYyBjb25zdCBjaGFyKgordW5pY29kZV9raW5kX25hbWUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgLyogZG9uJ3QgY2hlY2sgY29uc2lzdGVuY3k6IHVuaWNvZGVfa2luZF9uYW1lKCkgaXMgY2FsbGVkIGZyb20KKyAgICAgICBfUHlVbmljb2RlX0R1bXAoKSAqLworICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpCisgICAgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiAid3N0ciI7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuICJsZWdhY3kgYXNjaWkiOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAibGVnYWN5IGxhdGluMSI7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBVQ1MyIjsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiAibGVnYWN5IFVDUzQiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICI8bGVnYWN5IGludmFsaWQga2luZD4iOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgcmV0dXJuICJhc2NpaSI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAibGF0aW4xIjsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gIlVDUzIiOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAiVUNTNCI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICI8aW52YWxpZCBjb21wYWN0IGtpbmQ+IjsKKyAgICB9Cit9CisKKyNpZmRlZiBQeV9ERUJVRworLyogRnVuY3Rpb25zIHdyYXBwaW5nIG1hY3JvcyBmb3IgdXNlIGluIGRlYnVnZ2VyICovCitjaGFyICpfUHlVbmljb2RlX3V0Zjgodm9pZCAqdW5pY29kZSl7CisgICAgcmV0dXJuIFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpOworfQorCit2b2lkICpfUHlVbmljb2RlX2NvbXBhY3RfZGF0YSh2b2lkICp1bmljb2RlKSB7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKHVuaWNvZGUpOworfQordm9pZCAqX1B5VW5pY29kZV9kYXRhKHZvaWQgKnVuaWNvZGUpeworICAgIHByaW50Zigib2JqICVwXG4iLCB1bmljb2RlKTsKKyAgICBwcmludGYoImNvbXBhY3QgJWRcbiIsIFB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKKyAgICBwcmludGYoImNvbXBhY3QgYXNjaWkgJWRcbiIsIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICBwcmludGYoImFzY2lpIG9wICVwXG4iLCAoKHZvaWQqKSgoUHlBU0NJSU9iamVjdCopKHVuaWNvZGUpICsgMSkpKTsKKyAgICBwcmludGYoImNvbXBhY3Qgb3AgJXBcbiIsICgodm9pZCopKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0KikodW5pY29kZSkgKyAxKSkpOworICAgIHByaW50ZigiY29tcGFjdCBkYXRhICVwXG4iLCBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQSh1bmljb2RlKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworfQorCit2b2lkCitfUHlVbmljb2RlX0R1bXAoUHlPYmplY3QgKm9wKQoreworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKilvcDsKKyAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICpjb21wYWN0ID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvcDsKKyAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUgPSAoUHlVbmljb2RlT2JqZWN0ICopb3A7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkKKyAgICB7CisgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpCisgICAgICAgICAgICBkYXRhID0gKGFzY2lpICsgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEgPSAoY29tcGFjdCArIDEpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGRhdGEgPSB1bmljb2RlLT5kYXRhLmFueTsKKyAgICBwcmludGYoIiVzOiBsZW49JXp1LCAiLHVuaWNvZGVfa2luZF9uYW1lKG9wKSwgYXNjaWktPmxlbmd0aCk7CisKKyAgICBpZiAoYXNjaWktPndzdHIgPT0gZGF0YSkKKyAgICAgICAgcHJpbnRmKCJzaGFyZWQgIik7CisgICAgcHJpbnRmKCJ3c3RyPSVwIiwgYXNjaWktPndzdHIpOworCisgICAgaWYgKCEoYXNjaWktPnN0YXRlLmFzY2lpID09IDEgJiYgYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMSkpIHsKKyAgICAgICAgcHJpbnRmKCIgKCV6dSksICIsIGNvbXBhY3QtPndzdHJfbGVuZ3RoKTsKKyAgICAgICAgaWYgKCFhc2NpaS0+c3RhdGUuY29tcGFjdCAmJiBjb21wYWN0LT51dGY4ID09IHVuaWNvZGUtPmRhdGEuYW55KQorICAgICAgICAgICAgcHJpbnRmKCJzaGFyZWQgIik7CisgICAgICAgIHByaW50ZigidXRmOD0lcCAoJXp1KSIsIGNvbXBhY3QtPnV0ZjgsIGNvbXBhY3QtPnV0ZjhfbGVuZ3RoKTsKKyAgICB9CisgICAgcHJpbnRmKCIsIGRhdGE9JXBcbiIsIGRhdGEpOworfQorI2VuZGlmCisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IG1heGNoYXIpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICp1bmljb2RlOworICAgIHZvaWQgKmRhdGE7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGludCBpc19zaGFyaW5nLCBpc19hc2NpaTsKKyAgICBQeV9zc2l6ZV90IGNoYXJfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHN0cnVjdF9zaXplOworCisgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBpc19hc2NpaSA9IDA7CisgICAgaXNfc2hhcmluZyA9IDA7CisgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlDb21wYWN0VW5pY29kZU9iamVjdCk7CisgICAgaWYgKG1heGNoYXIgPCAxMjgpIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBjaGFyX3NpemUgPSAxOworICAgICAgICBpc19hc2NpaSA9IDE7CisgICAgICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5QVNDSUlPYmplY3QpOworICAgIH0KKyAgICBlbHNlIGlmIChtYXhjaGFyIDwgMjU2KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDY1NTM2KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMkJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMjsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSAyKQorICAgICAgICAgICAgaXNfc2hhcmluZyA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobWF4Y2hhciA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbWF4aW11bSBjaGFyYWN0ZXIgcGFzc2VkIHRvIFB5VW5pY29kZV9OZXciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfNEJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gNDsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSA0KQorICAgICAgICAgICAgaXNfc2hhcmluZyA9IDE7CisgICAgfQorCisgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlVbmljb2RlX05ldyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNpemUgPiAoKFBZX1NTSVpFX1RfTUFYIC0gc3RydWN0X3NpemUpIC8gY2hhcl9zaXplIC0gMSkpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgLyogRHVwbGljYXRlZCBhbGxvY2F0aW9uIGNvZGUgZnJvbSBfUHlPYmplY3RfTmV3KCkgaW5zdGVhZCBvZiBhIGNhbGwgdG8KKyAgICAgKiBQeU9iamVjdF9OZXcoKSBzbyB3ZSBhcmUgYWJsZSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG9iamVjdCBhbmQKKyAgICAgKiBpdCdzIGRhdGEgYnVmZmVyLgorICAgICAqLworICAgIG9iaiA9IChQeU9iamVjdCAqKSBQeU9iamVjdF9NQUxMT0Moc3RydWN0X3NpemUgKyAoc2l6ZSArIDEpICogY2hhcl9zaXplKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG9iaiA9IFB5T2JqZWN0X0lOSVQob2JqLCAmUHlVbmljb2RlX1R5cGUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1bmljb2RlID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvYmo7CisgICAgaWYgKGlzX2FzY2lpKQorICAgICAgICBkYXRhID0gKChQeUFTQ0lJT2JqZWN0KilvYmopICsgMTsKKyAgICBlbHNlCisgICAgICAgIGRhdGEgPSB1bmljb2RlICsgMTsKKyAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IHNpemU7CisgICAgX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpID0gLTE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0ga2luZDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmNvbXBhY3QgPSAxOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAxOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSBpc19hc2NpaTsKKyAgICBpZiAoaXNfYXNjaWkpIHsKKyAgICAgICAgKChjaGFyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgKChjaGFyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICB1bmljb2RlLT51dGY4ID0gTlVMTDsKKyAgICAgICAgdW5pY29kZS0+dXRmOF9sZW5ndGggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdW5pY29kZS0+dXRmOCA9IE5VTEw7CisgICAgICAgIHVuaWNvZGUtPnV0ZjhfbGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgICAgICAgICAoKFB5X1VDUzIqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgZWxzZSAvKiBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EICovCisgICAgICAgICAgICAoKFB5X1VDUzQqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgaWYgKGlzX3NoYXJpbmcpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBzaXplOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKHdjaGFyX3QgKilkYXRhOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICB9CisgICAgfQorI2lmZGVmIFB5X0RFQlVHCisgICAgLyogRmlsbCB0aGUgZGF0YSB3aXRoIGludmFsaWQgY2hhcmFjdGVycyB0byBkZXRlY3QgYnVncyBlYXJsaWVyLgorICAgICAgIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpIGRldGVjdHMgaW52YWxpZCBjaGFyYWN0ZXJzLAorICAgICAgIGF0IGxlYXN0IGZvciBBU0NJSSBhbmQgVUNTLTQgc3RyaW5ncy4gVSswMEZGIGlzIGludmFsaWQgaW4gQVNDSUkKKyAgICAgICBhbmQgVStGRkZGRkZGRiBpcyBhbiBpbnZhbGlkIGNoYXJhY3RlciBpbiBVbmljb2RlIDYuMC4gKi8KKyAgICBtZW1zZXQoZGF0YSwgMHhmZiwgc2l6ZSAqIGtpbmQpOworI2VuZGlmCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgoUHlPYmplY3QqKXVuaWNvZGUsIDApKTsKKyAgICByZXR1cm4gb2JqOworfQorCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSAxNi1iaXRzIHdjaGFyX3QgcmVwcmVzZW50YXRpb24gdG8gVUNTNCwgdGhpcworICAgd2lsbCBkZWNvZGUgc3Vycm9nYXRlIHBhaXJzLCB0aGUgb3RoZXIgY29udmVyc2lvbnMgYXJlIGltcGxlbWVudGVkIGFzIG1hY3JvcworICAgZm9yIGVmZmljaWVuY3kuCisKKyAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHVuaWNvZGUgY2FuIGhvbGQgb25lIG1vcmUgY29kZSBwb2ludCB0aGFuIHdzdHIKKyAgIGNoYXJhY3RlcnMgZm9yIGEgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIuICovCitzdGF0aWMgdm9pZAordW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoY29uc3Qgd2NoYXJfdCAqYmVnaW4sIGNvbnN0IHdjaGFyX3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGNvbnN0IHdjaGFyX3QgKml0ZXI7CisgICAgUHlfVUNTNCAqdWNzNF9vdXQ7CisKKyAgICBhc3NlcnQodW5pY29kZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgdWNzNF9vdXQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKworICAgIGZvciAoaXRlciA9IGJlZ2luOyBpdGVyIDwgZW5kOyApIHsKKyAgICAgICAgYXNzZXJ0KHVjczRfb3V0IDwgKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkpOworICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShpdGVyWzBdKQorICAgICAgICAgICAgJiYgKGl0ZXIrMSkgPCBlbmQKKyAgICAgICAgICAgICYmIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShpdGVyWzFdKSkKKyAgICAgICAgeworICAgICAgICAgICAgKnVjczRfb3V0KysgPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhpdGVyWzBdLCBpdGVyWzFdKTsKKyAgICAgICAgICAgIGl0ZXIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICp1Y3M0X291dCsrID0gKml0ZXI7CisgICAgICAgICAgICBpdGVyKys7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KHVjczRfb3V0ID09IChQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSArCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpKTsKKworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVfY2hlY2tfbW9kaWZpYWJsZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIXVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IG1vZGlmeSBhIHN0cmluZyBjdXJyZW50bHkgdXNlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY29weV9jaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb20sIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBob3dfbWFueSwgaW50IGNoZWNrX21heGNoYXIpCit7CisgICAgdW5zaWduZWQgaW50IGZyb21fa2luZCwgdG9fa2luZDsKKyAgICB2b2lkICpmcm9tX2RhdGEsICp0b19kYXRhOworCisgICAgYXNzZXJ0KDAgPD0gaG93X21hbnkpOworICAgIGFzc2VydCgwIDw9IGZyb21fc3RhcnQpOworICAgIGFzc2VydCgwIDw9IHRvX3N0YXJ0KTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGZyb20pKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKGZyb20pKTsKKyAgICBhc3NlcnQoZnJvbV9zdGFydCArIGhvd19tYW55IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb20pKTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodG8pKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHRvKSk7CisgICAgYXNzZXJ0KHRvX3N0YXJ0ICsgaG93X21hbnkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKTsKKworICAgIGlmIChob3dfbWFueSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZyb21fa2luZCA9IFB5VW5pY29kZV9LSU5EKGZyb20pOworICAgIGZyb21fZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZyb20pOworICAgIHRvX2tpbmQgPSBQeVVuaWNvZGVfS0lORCh0byk7CisgICAgdG9fZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRvKTsKKworI2lmZGVmIFB5X0RFQlVHCisgICAgaWYgKCFjaGVja19tYXhjaGFyCisgICAgICAgICYmIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShmcm9tKSA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0bykpCisgICAgeworICAgICAgICBjb25zdCBQeV9VQ1M0IHRvX21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pOworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgaG93X21hbnk7IGkrKykgeworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChmcm9tX2tpbmQsIGZyb21fZGF0YSwgZnJvbV9zdGFydCArIGkpOworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IHRvX21heGNoYXIpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoZnJvbV9raW5kID09IHRvX2tpbmQpIHsKKyAgICAgICAgaWYgKGNoZWNrX21heGNoYXIKKyAgICAgICAgICAgICYmICFQeVVuaWNvZGVfSVNfQVNDSUkoZnJvbSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHRvKSkKKyAgICAgICAgeworICAgICAgICAgICAgLyogV3JpdGluZyBMYXRpbi0xIGNoYXJhY3RlcnMgaW50byBhbiBBU0NJSSBzdHJpbmcgcmVxdWlyZXMgdG8KKyAgICAgICAgICAgICAgIGNoZWNrIHRoYXQgYWxsIHdyaXR0ZW4gY2hhcmFjdGVycyBhcmUgcHVyZSBBU0NJSSAqLworICAgICAgICAgICAgUHlfVUNTNCBtYXhfY2hhcjsKKyAgICAgICAgICAgIG1heF9jaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKGZyb21fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VQ1MxKilmcm9tX2RhdGEgKyBob3dfbWFueSk7CisgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9NRU1DUFkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCisgICAgICAgICAgICAgICAgICAoY2hhciopZnJvbV9kYXRhICsgZnJvbV9raW5kICogZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgIHRvX2tpbmQgKiBob3dfbWFueSk7CisgICAgfQorICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgeworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1MyLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKKyAgICB7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzEsIFB5X1VDUzQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICApOworICAgIH0KKyAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQorICAgIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTNCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShmcm9tKSA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0bykpOworCisgICAgICAgIGlmICghY2hlY2tfbWF4Y2hhcikgeworICAgICAgICAgICAgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1MyLCBQeV9VQ1MxLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCwgUHlfVUNTMSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQsIFB5X1VDUzIsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgUHlfVUNTNCB0b19tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRvKTsKKyAgICAgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgaG93X21hbnk7IGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoZnJvbV9raW5kLCBmcm9tX2RhdGEsIGZyb21fc3RhcnQgKyBpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiB0b19tYXhjaGFyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHRvX2tpbmQsIHRvX2RhdGEsIHRvX3N0YXJ0ICsgaSwgY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkCitfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgUHlPYmplY3QgKmZyb20sIFB5X3NzaXplX3QgZnJvbV9zdGFydCwgUHlfc3NpemVfdCBob3dfbWFueSkKK3sKKyAgICAodm9pZClfY29weV9jaGFyYWN0ZXJzKHRvLCB0b19zdGFydCwgZnJvbSwgZnJvbV9zdGFydCwgaG93X21hbnksIDApOworfQorCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMoUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBob3dfbWFueSkKK3sKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZnJvbSkgfHwgIVB5VW5pY29kZV9DaGVjayh0bykpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZyb20pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0bykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChmcm9tX3N0YXJ0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodG9fc3RhcnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGhvd19tYW55ID0gUHlfTUlOKFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb20pLCBob3dfbWFueSk7CisgICAgaWYgKHRvX3N0YXJ0ICsgaG93X21hbnkgPiBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB3cml0ZSAlemkgY2hhcmFjdGVycyBhdCAlemkgIgorICAgICAgICAgICAgICAgICAgICAgImluIGEgc3RyaW5nIG9mICV6aSBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgIGhvd19tYW55LCB0b19zdGFydCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChob3dfbWFueSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh1bmljb2RlX2NoZWNrX21vZGlmaWFibGUodG8pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBlcnIgPSBfY29weV9jaGFyYWN0ZXJzKHRvLCB0b19zdGFydCwgZnJvbSwgZnJvbV9zdGFydCwgaG93X21hbnksIDEpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjb3B5ICVzIGNoYXJhY3RlcnMgIgorICAgICAgICAgICAgICAgICAgICAgImludG8gYSBzdHJpbmcgb2YgJXMgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2tpbmRfbmFtZShmcm9tKSwKKyAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfa2luZF9uYW1lKHRvKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGhvd19tYW55OworfQorCisvKiBGaW5kIHRoZSBtYXhpbXVtIGNvZGUgcG9pbnQgYW5kIGNvdW50IHRoZSBudW1iZXIgb2Ygc3Vycm9nYXRlIHBhaXJzIHNvIGEKKyAgIGNvcnJlY3Qgc3RyaW5nIGxlbmd0aCBjYW4gYmUgY29tcHV0ZWQgYmVmb3JlIGNvbnZlcnRpbmcgYSBzdHJpbmcgdG8gVUNTNC4KKyAgIFRoaXMgZnVuY3Rpb24gY291bnRzIHNpbmdsZSBzdXJyb2dhdGVzIGFzIGEgY2hhcmFjdGVyIGFuZCBub3QgYXMgYSBwYWlyLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCBvciAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK2ZpbmRfbWF4Y2hhcl9zdXJyb2dhdGVzKGNvbnN0IHdjaGFyX3QgKmJlZ2luLCBjb25zdCB3Y2hhcl90ICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0ICptYXhjaGFyLCBQeV9zc2l6ZV90ICpudW1fc3Vycm9nYXRlcykKK3sKKyAgICBjb25zdCB3Y2hhcl90ICppdGVyOworICAgIFB5X1VDUzQgY2g7CisKKyAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgIT0gTlVMTCAmJiBtYXhjaGFyICE9IE5VTEwpOworICAgICpudW1fc3Vycm9nYXRlcyA9IDA7CisgICAgKm1heGNoYXIgPSAwOworCisgICAgZm9yIChpdGVyID0gYmVnaW47IGl0ZXIgPCBlbmQ7ICkgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoaXRlclswXSkKKyAgICAgICAgICAgICYmIChpdGVyKzEpIDwgZW5kCisgICAgICAgICAgICAmJiBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoaXRlclsxXSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaXRlclswXSwgaXRlclsxXSk7CisgICAgICAgICAgICArKygqbnVtX3N1cnJvZ2F0ZXMpOworICAgICAgICAgICAgaXRlciArPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBjaCA9ICppdGVyOworICAgICAgICAgICAgaXRlcisrOworICAgICAgICB9CisgICAgICAgIGlmIChjaCA+ICptYXhjaGFyKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IGNoOworICAgICAgICAgICAgaWYgKCptYXhjaGFyID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBVKyV4IGlzIG5vdCBpbiByYW5nZSBbVSswMDAwOyBVKzEwZmZmZl0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQKK19QeVVuaWNvZGVfUmVhZHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgd2NoYXJfdCAqZW5kOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDA7CisgICAgUHlfc3NpemVfdCBudW1fc3Vycm9nYXRlczsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgUHlfc3NpemVfdCBsZW5ndGhfd29fc3Vycm9nYXRlczsKKyNlbmRpZgorCisgICAgLyogX1B5VW5pY29kZV9SZWFkeSgpIGlzIG9ubHkgaW50ZW5kZWQgZm9yIG9sZC1zdHlsZSBBUEkgdXNhZ2Ugd2hlcmUKKyAgICAgICBzdHJpbmdzIHdlcmUgY3JlYXRlZCB1c2luZyBfUHlPYmplY3RfTmV3KCkgYW5kIHdoZXJlIG5vIGNhbm9uaWNhbAorICAgICAgIHJlcHJlc2VudGF0aW9uICh0aGUgc3RyIGZpZWxkKSBoYXMgYmVlbiBzZXQgeWV0IGFrYSBzdHJpbmdzCisgICAgICAgd2hpY2ggYXJlIG5vdCB5ZXQgcmVhZHkuICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpOworICAgIGFzc2VydChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgIT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKTsKKyAgICAvKiBBY3R1YWxseSwgaXQgc2hvdWxkIG5laXRoZXIgYmUgaW50ZXJuZWQgbm9yIGJlIGFueXRoaW5nIGVsc2U6ICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuaW50ZXJuZWQgPT0gU1NUQVRFX05PVF9JTlRFUk5FRCk7CisKKyAgICBlbmQgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgKyBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChmaW5kX21heGNoYXJfc3Vycm9nYXRlcyhfUHlVbmljb2RlX1dTVFIodW5pY29kZSksIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIsICZudW1fc3Vycm9nYXRlcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChtYXhjaGFyIDwgMjU2KSB7CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSArIDEpOworICAgICAgICBpZiAoIV9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKHdjaGFyX3QsIHVuc2lnbmVkIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgaWYgKG1heGNoYXIgPCAxMjgpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAxOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5hc2NpaSA9IDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICB9CisgICAgLyogSW4gdGhpcyBjYXNlIHdlIG1pZ2h0IGhhdmUgdG8gY29udmVydCBkb3duIGZyb20gNC1ieXRlIG5hdGl2ZQorICAgICAgIHdjaGFyX3QgdG8gMi1ieXRlIHVuaWNvZGUuICovCisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDY1NTM2KSB7CisgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwICYmCisgICAgICAgICAgICAgICAiRmluZE1heENoYXJBbmROdW1TdXJyb2dhdGVQYWlycygpIG1lc3NlZCB1cCIpOworCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAvKiBXZSBjYW4gc2hhcmUgcmVwcmVzZW50YXRpb25zIGFuZCBhcmUgZG9uZS4gKi8KKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV8yQllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbHNlCisgICAgICAgIC8qIHNpemVvZih3Y2hhcl90KSA9PSA0ICovCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoCisgICAgICAgICAgICAyICogKF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgKyAxKSk7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMod2NoYXJfdCwgUHlfVUNTMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV8yQllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbmRpZgorICAgIH0KKyAgICAvKiBtYXhjaGFyIGV4ZWVkcyAxNiBiaXQsIHdlZSBuZWVkIDQgYnl0ZXMgZm9yIHVuaWNvZGUgY2hhcmFjdGVycyAqLworICAgIGVsc2UgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogaW4gY2FzZSB0aGUgbmF0aXZlIHJlcHJlc2VudGF0aW9uIGlzIDItYnl0ZXMsIHdlIG5lZWQgdG8gYWxsb2NhdGUgYQorICAgICAgICAgICBuZXcgbm9ybWFsaXplZCA0LWJ5dGUgdmVyc2lvbi4gKi8KKyAgICAgICAgbGVuZ3RoX3dvX3N1cnJvZ2F0ZXMgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpIC0gbnVtX3N1cnJvZ2F0ZXM7CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoNCAqIChsZW5ndGhfd29fc3Vycm9nYXRlcyArIDEpKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoX3dvX3N1cnJvZ2F0ZXM7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV80QllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgLyogdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoKSByZXF1aXJlcyBhIHJlYWR5IHN0cmluZyAqLworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMTsKKyAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsIHVuaWNvZGUpOworICAgICAgICBQeU9iamVjdF9GUkVFKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOworCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV80QllURV9LSU5EOworI2VuZGlmCisgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpXSA9ICdcMCc7CisgICAgfQorICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAxOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAordW5pY29kZV9kZWFsbG9jKHJlZ2lzdGVyIFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIHN3aXRjaCAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHVuaWNvZGUpKSB7CiAgICAgY2FzZSBTU1RBVEVfTk9UX0lOVEVSTkVEOgpAQCAtMzkzLDcgKzE1MDMsNyBAQAogICAgIGNhc2UgU1NUQVRFX0lOVEVSTkVEX01PUlRBTDoKICAgICAgICAgLyogcmV2aXZlIGRlYWQgb2JqZWN0IHRlbXBvcmFyaWx5IGZvciBEZWxJdGVtICovCiAgICAgICAgIFB5X1JFRkNOVCh1bmljb2RlKSA9IDM7Ci0gICAgICAgIGlmIChQeURpY3RfRGVsSXRlbShpbnRlcm5lZCwgKFB5T2JqZWN0ICopdW5pY29kZSkgIT0gMCkKKyAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtKGludGVybmVkLCB1bmljb2RlKSAhPSAwKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgICAiZGVsZXRpb24gb2YgaW50ZXJuZWQgc3RyaW5nIGZhaWxlZCIpOwogICAgICAgICBicmVhazsKQEAgLTQwNSwyNDAgKzE1MTUsNzQxIEBACiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkluY29uc2lzdGVudCBpbnRlcm5lZCBzdHJpbmcgc3RhdGUuIik7CiAgICAgfQogCi0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHVuaWNvZGUpICYmCi0gICAgICAgIG51bWZyZWUgPCBQeVVuaWNvZGVfTUFYRlJFRUxJU1QpIHsKLSAgICAgICAgLyogS2VlcC1BbGl2ZSBvcHRpbWl6YXRpb24gKi8KLSAgICAgICAgaWYgKHVuaWNvZGUtPmxlbmd0aCA+PSBLRUVQQUxJVkVfU0laRV9MSU1JVCkgewotICAgICAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgICAgICB1bmljb2RlLT5zdHIgPSBOVUxMOwotICAgICAgICAgICAgdW5pY29kZS0+bGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAodW5pY29kZS0+ZGVmZW5jKSB7Ci0gICAgICAgICAgICBQeV9DTEVBUih1bmljb2RlLT5kZWZlbmMpOwotICAgICAgICB9Ci0gICAgICAgIC8qIEFkZCB0byBmcmVlIGxpc3QgKi8KLSAgICAgICAgKihQeVVuaWNvZGVPYmplY3QgKiopdW5pY29kZSA9IGZyZWVfbGlzdDsKLSAgICAgICAgZnJlZV9saXN0ID0gdW5pY29kZTsKLSAgICAgICAgbnVtZnJlZSsrOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgIFB5X1hERUNSRUYodW5pY29kZS0+ZGVmZW5jKTsKLSAgICAgICAgUHlfVFlQRSh1bmljb2RlKS0+dHBfZnJlZSgoUHlPYmplY3QgKil1bmljb2RlKTsKLSAgICB9CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKHVuaWNvZGUpKQorICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkodW5pY29kZSkpCisgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX1VURjgodW5pY29kZSkpOworICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkgJiYgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkKKyAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpOworCisgICAgUHlfVFlQRSh1bmljb2RlKS0+dHBfZnJlZSh1bmljb2RlKTsKIH0KIAotc3RhdGljCi1pbnQgX1B5VW5pY29kZV9SZXNpemUoUHlVbmljb2RlT2JqZWN0ICoqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCisjaWZkZWYgUHlfREVCVUcKK3N0YXRpYyBpbnQKK3VuaWNvZGVfaXNfc2luZ2xldG9uKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdjsKLQotICAgIC8qIEFyZ3VtZW50IGNoZWNrcyAqLwotICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAodW5pY29kZSA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoYXNjaWktPnN0YXRlLmtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQgJiYgYXNjaWktPmxlbmd0aCA9PSAxKQorICAgIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgMCk7CisgICAgICAgIGlmIChjaCA8IDI1NiAmJiB1bmljb2RlX2xhdGluMVtjaF0gPT0gdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICB2ID0gKnVuaWNvZGU7Ci0gICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHYpIHx8IFB5X1JFRkNOVCh2KSAhPSAxIHx8IGxlbmd0aCA8IDApIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKIAotICAgIC8qIFJlc2l6aW5nIHVuaWNvZGVfZW1wdHkgYW5kIHNpbmdsZSBjaGFyYWN0ZXIgb2JqZWN0cyBpcyBub3QKLSAgICAgICBwb3NzaWJsZSBzaW5jZSB0aGVzZSBhcmUgYmVpbmcgc2hhcmVkLiBXZSBzaW1wbHkgcmV0dXJuIGEgZnJlc2gKLSAgICAgICBjb3B5IHdpdGggdGhlIHNhbWUgVW5pY29kZSBjb250ZW50LiAqLwotICAgIGlmICh2LT5sZW5ndGggIT0gbGVuZ3RoICYmCi0gICAgICAgICh2ID09IHVuaWNvZGVfZW1wdHkgfHwgdi0+bGVuZ3RoID09IDEpKSB7Ci0gICAgICAgIFB5VW5pY29kZU9iamVjdCAqdyA9IF9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7Ci0gICAgICAgIGlmICh3ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh3LT5zdHIsIHYtPnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA8IHYtPmxlbmd0aCA/IGxlbmd0aCA6IHYtPmxlbmd0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRigqdW5pY29kZSk7Ci0gICAgICAgICp1bmljb2RlID0gdzsKK3N0YXRpYyBpbnQKK3VuaWNvZGVfbW9kaWZpYWJsZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgaWYgKFB5X1JFRkNOVCh1bmljb2RlKSAhPSAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpICE9IC0xKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIHNpbmdsZXRvbiByZWZjb3VudCBpcyBncmVhdGVyIHRoYW4gMSAqLworICAgIGFzc2VydCghdW5pY29kZV9pc19zaW5nbGV0b24odW5pY29kZSkpOworI2VuZGlmCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3VuaWNvZGVfcmVzaXplKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IG9sZF9sZW5ndGg7CisKKyAgICBhc3NlcnQocF91bmljb2RlICE9IE5VTEwpOworICAgIHVuaWNvZGUgPSAqcF91bmljb2RlOworCisgICAgYXNzZXJ0KHVuaWNvZGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh1bmljb2RlKSk7CisgICAgYXNzZXJ0KDAgPD0gbGVuZ3RoKTsKKworICAgIGlmIChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgICAgIG9sZF9sZW5ndGggPSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgZWxzZQorICAgICAgICBvbGRfbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKG9sZF9sZW5ndGggPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgICAgICpwX3VuaWNvZGUgPSB1bmljb2RlX2VtcHR5OworICAgICAgICBQeV9JTkNSRUYoKnBfdW5pY29kZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIC8qIE5vdGUgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIG1vZGlmeSAqdW5pY29kZSBmb3IgdW5zaGFyZWQgVW5pY29kZQotICAgICAgIG9iamVjdHMsIHNpbmNlIHdlIGNhbiBtb2RpZnkgdGhlbSBpbi1wbGFjZS4gKi8KLSAgICByZXR1cm4gdW5pY29kZV9yZXNpemUodiwgbGVuZ3RoKTsKKyAgICBpZiAoIXVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSkgeworICAgICAgICBQeU9iamVjdCAqY29weSA9IHJlc2l6ZV9jb3B5KHVuaWNvZGUsIGxlbmd0aCk7CisgICAgICAgIGlmIChjb3B5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKKyAgICAgICAgKnBfdW5pY29kZSA9IGNvcHk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSkgeworICAgICAgICBQeU9iamVjdCAqbmV3X3VuaWNvZGUgPSByZXNpemVfY29tcGFjdCh1bmljb2RlLCBsZW5ndGgpOworICAgICAgICBpZiAobmV3X3VuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgKnBfdW5pY29kZSA9IG5ld191bmljb2RlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc2l6ZV9pbnBsYWNlKHVuaWNvZGUsIGxlbmd0aCk7CiB9CiAKLWludCBQeVVuaWNvZGVfUmVzaXplKFB5T2JqZWN0ICoqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCitpbnQKK1B5VW5pY29kZV9SZXNpemUoUHlPYmplY3QgKipwX3VuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQogewotICAgIHJldHVybiBfUHlVbmljb2RlX1Jlc2l6ZSgoUHlVbmljb2RlT2JqZWN0ICoqKXVuaWNvZGUsIGxlbmd0aCk7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaWYgKHBfdW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHVuaWNvZGUgPSAqcF91bmljb2RlOworICAgIGlmICh1bmljb2RlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCBsZW5ndGggPCAwKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzaXplKHBfdW5pY29kZSwgbGVuZ3RoKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tVW5pY29kZShjb25zdCBQeV9VTklDT0RFICp1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCitzdGF0aWMgaW50Cit1bmljb2RlX3dpZGVuKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heGNoYXIpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSgqcF91bmljb2RlKSk7CisgICAgYXNzZXJ0KGxlbmd0aCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcF91bmljb2RlKSk7CisgICAgaWYgKG1heGNoYXIgPD0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKCpwX3VuaWNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KFB5VW5pY29kZV9HRVRfTEVOR1RIKCpwX3VuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y2hhcik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzdWx0LCAwLCAqcF91bmljb2RlLCAwLCBsZW5ndGgpOworICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKKyAgICAqcF91bmljb2RlID0gcmVzdWx0OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit1bmljb2RlX3B1dGNoYXIoUHlPYmplY3QgKipwX3VuaWNvZGUsIFB5X3NzaXplX3QgKnBvcywKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoKQoreworICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgaWYgKHVuaWNvZGVfd2lkZW4ocF91bmljb2RlLCAqcG9zLCBjaCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKCpwX3VuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQSgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgKCpwb3MpKyssIGNoKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29weSBhIEFTQ0lJIG9yIGxhdGluMSBjaGFyKiBzdHJpbmcgaW50byBhIFB5dGhvbiBVbmljb2RlIHN0cmluZy4KKworICAgV0FSTklORzogVGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY29weSB0aGUgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIgYW5kCisgICBkb2Vzbid0IGNoZWNrIHRoZSBtYXhpbXVtIGNoYXJhY3RlciAobWF5IHdyaXRlIGEgbGF0aW4xIGNoYXJhY3RlciBpbiBhbgorICAgQVNDSUkgc3RyaW5nKS4gKi8KK3N0YXRpYyB2b2lkCit1bmljb2RlX3dyaXRlX2NzdHIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgY29uc3QgY2hhciAqZW5kID0gc3RyICsgbGVuOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeworICAgICAgICBhc3NlcnQoaW5kZXggKyBsZW4gPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBtZW1jcHkoKGNoYXIgKikgZGF0YSArIGluZGV4LCBzdHIsIGxlbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7CisgICAgICAgIFB5X1VDUzIgKnN0YXJ0ID0gKFB5X1VDUzIgKilkYXRhICsgaW5kZXg7CisgICAgICAgIFB5X1VDUzIgKnVjczIgPSBzdGFydDsKKyAgICAgICAgYXNzZXJ0KGluZGV4IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKworICAgICAgICBmb3IgKDsgc3RyIDwgZW5kOyArK3VjczIsICsrc3RyKQorICAgICAgICAgICAgKnVjczIgPSAoUHlfVUNTMikqc3RyOworCisgICAgICAgIGFzc2VydCgodWNzMiAtIHN0YXJ0KSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFB5X1VDUzQgKnN0YXJ0ID0gKFB5X1VDUzQgKilkYXRhICsgaW5kZXg7CisgICAgICAgIFB5X1VDUzQgKnVjczQgPSBzdGFydDsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBhc3NlcnQoaW5kZXggPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworCisgICAgICAgIGZvciAoOyBzdHIgPCBlbmQ7ICsrdWNzNCwgKytzdHIpCisgICAgICAgICAgICAqdWNzNCA9IChQeV9VQ1M0KSpzdHI7CisKKyAgICAgICAgYXNzZXJ0KCh1Y3M0IC0gc3RhcnQpIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICB9CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCoKK2dldF9sYXRpbjFfY2hhcih1bnNpZ25lZCBjaGFyIGNoKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gdW5pY29kZV9sYXRpbjFbY2hdOworICAgIGlmICghdW5pY29kZSkgeworICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKVswXSA9IGNoOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICAgICAgdW5pY29kZV9sYXRpbjFbY2hdID0gdW5pY29kZTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDA7CisgICAgUHlfc3NpemVfdCBudW1fc3Vycm9nYXRlczsKKworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiAoUHlPYmplY3QqKV9QeVVuaWNvZGVfTmV3KHNpemUpOwogCiAgICAgLyogSWYgdGhlIFVuaWNvZGUgZGF0YSBpcyBrbm93biBhdCBjb25zdHJ1Y3Rpb24gdGltZSwgd2UgY2FuIGFwcGx5CiAgICAgICAgc29tZSBvcHRpbWl6YXRpb25zIHdoaWNoIHNoYXJlIGNvbW1vbmx5IHVzZWQgb2JqZWN0cy4gKi8KLSAgICBpZiAodSAhPSBOVUxMKSB7CiAKLSAgICAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgICAgIGlmIChzaXplID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZV9lbXB0eTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNpbmdsZSBjaGFyYWN0ZXIgVW5pY29kZSBvYmplY3RzIGluIHRoZSBMYXRpbi0xIHJhbmdlIGFyZQotICAgICAgICAgICBzaGFyZWQgd2hlbiB1c2luZyB0aGlzIGNvbnN0cnVjdG9yICovCi0gICAgICAgIGlmIChzaXplID09IDEgJiYgKnUgPCAyNTYpIHsKLSAgICAgICAgICAgIHVuaWNvZGUgPSB1bmljb2RlX2xhdGluMVsqdV07Ci0gICAgICAgICAgICBpZiAoIXVuaWNvZGUpIHsKLSAgICAgICAgICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB1bmljb2RlLT5zdHJbMF0gPSAqdTsKLSAgICAgICAgICAgICAgICB1bmljb2RlX2xhdGluMVsqdV0gPSB1bmljb2RlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7Ci0gICAgICAgIH0KKyAgICAvKiBPcHRpbWl6YXRpb24gZm9yIGVtcHR5IHN0cmluZ3MgKi8KKyAgICBpZiAoc2l6ZSA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICAvKiBTaW5nbGUgY2hhcmFjdGVyIFVuaWNvZGUgb2JqZWN0cyBpbiB0aGUgTGF0aW4tMSByYW5nZSBhcmUKKyAgICAgICBzaGFyZWQgd2hlbiB1c2luZyB0aGlzIGNvbnN0cnVjdG9yICovCisgICAgaWYgKHNpemUgPT0gMSAmJiAqdSA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhcikqdSk7CisKKyAgICAvKiBJZiBub3QgZW1wdHkgYW5kIG5vdCBzaW5nbGUgY2hhcmFjdGVyLCBjb3B5IHRoZSBVbmljb2RlIGRhdGEKKyAgICAgICBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCisgICAgaWYgKGZpbmRfbWF4Y2hhcl9zdXJyb2dhdGVzKHUsIHUgKyBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhciwgJm51bV9zdXJyb2dhdGVzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplIC0gbnVtX3N1cnJvZ2F0ZXMsIG1heGNoYXIpOwogICAgIGlmICghdW5pY29kZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBDb3B5IHRoZSBVbmljb2RlIGRhdGEgaW50byB0aGUgbmV3IG9iamVjdCAqLwotICAgIGlmICh1ICE9IE5VTEwpCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh1bmljb2RlLT5zdHIsIHUsIHNpemUpOworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgdW5zaWduZWQgY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyNpZiBQeV9VTklDT0RFX1NJWkUgPT0gMgorICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKKyNlbHNlCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VTklDT0RFLCBQeV9VQ1MyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSkpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAvKiBUaGlzIGlzIHRoZSBvbmx5IGNhc2Ugd2hpY2ggaGFzIHRvIHByb2Nlc3Mgc3Vycm9nYXRlcywgdGh1cworICAgICAgICAgICBhIHNpbXBsZSBjb3B5IGxvb3AgaXMgbm90IGVub3VnaCBhbmQgd2UgbmVlZCBhIGZ1bmN0aW9uLiAqLworICAgICAgICB1bmljb2RlX2NvbnZlcnRfd2NoYXJfdG9fdWNzNCh1LCB1ICsgc2l6ZSwgdW5pY29kZSk7CisjZWxzZQorICAgICAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgPT0gMCk7CisgICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDQpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwICYmICJJbXBvc3NpYmxlIHN0YXRlIik7CisgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICp1LCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotCiAgICAgaWYgKHNpemUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgLyogSWYgdGhlIFVuaWNvZGUgZGF0YSBpcyBrbm93biBhdCBjb25zdHJ1Y3Rpb24gdGltZSwgd2UgY2FuIGFwcGx5Ci0gICAgICAgc29tZSBvcHRpbWl6YXRpb25zIHdoaWNoIHNoYXJlIGNvbW1vbmx5IHVzZWQgb2JqZWN0cy4KLSAgICAgICBBbHNvLCB0aGlzIG1lYW5zIHRoZSBpbnB1dCBtdXN0IGJlIFVURi04LCBzbyBmYWxsIGJhY2sgdG8gdGhlCi0gICAgICAgVVRGLTggZGVjb2RlciBhdCB0aGUgZW5kLiAqLwotICAgIGlmICh1ICE9IE5VTEwpIHsKLQotICAgICAgICAvKiBPcHRpbWl6YXRpb24gZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICAgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlX2VtcHR5OwotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2luZ2xlIGNoYXJhY3RlcnMgYXJlIHNoYXJlZCB3aGVuIHVzaW5nIHRoaXMgY29uc3RydWN0b3IuCi0gICAgICAgICAgIFJlc3RyaWN0IHRvIEFTQ0lJLCBzaW5jZSB0aGUgaW5wdXQgbXVzdCBiZSBVVEYtOC4gKi8KLSAgICAgICAgaWYgKHNpemUgPT0gMSAmJiBQeV9DSEFSTUFTSygqdSkgPCAxMjgpIHsKLSAgICAgICAgICAgIHVuaWNvZGUgPSB1bmljb2RlX2xhdGluMVtQeV9DSEFSTUFTSygqdSldOwotICAgICAgICAgICAgaWYgKCF1bmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KDEpOwotICAgICAgICAgICAgICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgdW5pY29kZS0+c3RyWzBdID0gUHlfQ0hBUk1BU0soKnUpOwotICAgICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xW1B5X0NIQVJNQVNLKCp1KV0gPSB1bmljb2RlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjgodSwgc2l6ZSwgTlVMTCk7Ci0gICAgfQotCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAodSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bCh1LCBzaXplLCBOVUxMLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilfUHlVbmljb2RlX05ldyhzaXplKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQogewogICAgIHNpemVfdCBzaXplID0gc3RybGVuKHUpOwogICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJpbnB1dCB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwodSwgKFB5X3NzaXplX3Qpc2l6ZSwgTlVMTCwgTlVMTCk7Cit9CiAKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHUsIHNpemUpOworUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tSWQoX1B5X0lkZW50aWZpZXIgKmlkKQoreworICAgIGlmICghaWQtPm9iamVjdCkgeworICAgICAgICBpZC0+b2JqZWN0ID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChpZC0+c3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oaWQtPnN0cmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIWlkLT5vYmplY3QpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJmlkLT5vYmplY3QpOworICAgICAgICBhc3NlcnQoIWlkLT5uZXh0KTsKKyAgICAgICAgaWQtPm5leHQgPSBzdGF0aWNfc3RyaW5nczsKKyAgICAgICAgc3RhdGljX3N0cmluZ3MgPSBpZDsKKyAgICB9CisgICAgcmV0dXJuIGlkLT5vYmplY3Q7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKCkKK3sKKyAgICBfUHlfSWRlbnRpZmllciAqaTsKKyAgICBmb3IgKGkgPSBzdGF0aWNfc3RyaW5nczsgaTsgaSA9IGktPm5leHQpIHsKKyAgICAgICAgUHlfREVDUkVGKGktPm9iamVjdCk7CisgICAgICAgIGktPm9iamVjdCA9IE5VTEw7CisgICAgICAgIGktPm5leHQgPSBOVUxMOworICAgIH0KK30KKworLyogSW50ZXJuYWwgZnVuY3Rpb24sIGRvZXNuJ3QgY2hlY2sgbWF4aW11bSBjaGFyYWN0ZXIgKi8KKworUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21BU0NJSShjb25zdCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilidWZmZXI7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaWYgKHNpemUgPT0gMSkgeworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIGFzc2VydChzWzBdIDwgMTI4KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKHNbMF0pOworICAgIH0KKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtY3B5KFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCBzLCBzaXplKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIFB5X1VDUzQKK2tpbmRfbWF4Y2hhcl9saW1pdCh1bnNpZ25lZCBpbnQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXR1cm4gMHg4MDsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gMHgxMDA7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIDB4MTAwMDA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDAgJiYgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gTUFYX1VOSUNPREU7CisgICAgfQorfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK2FsaWduX21heGNoYXIoUHlfVUNTNCBtYXhjaGFyKQoreworICAgIGlmIChtYXhjaGFyIDw9IDEyNykKKyAgICAgICAgcmV0dXJuIDEyNzsKKyAgICBlbHNlIGlmIChtYXhjaGFyIDw9IDI1NSkKKyAgICAgICAgcmV0dXJuIDI1NTsKKyAgICBlbHNlIGlmIChtYXhjaGFyIDw9IDY1NTM1KQorICAgICAgICByZXR1cm4gNjU1MzU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gTUFYX1VOSUNPREU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzEoY29uc3QgdW5zaWduZWQgY2hhciogdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgdW5zaWduZWQgY2hhciBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBpZiAoc2l6ZSA9PSAxKQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKHVbMF0pOworCisgICAgbWF4X2NoYXIgPSB1Y3MxbGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIHNpemUpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgbWF4X2NoYXIpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtZW1jcHkoUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSwgdSwgc2l6ZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21VQ1MyKGNvbnN0IFB5X1VDUzIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5X1VDUzIgbWF4X2NoYXI7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorICAgIGFzc2VydChzaXplID4gMCk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gdVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KQorICAgICAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzKSwgUHlVbmljb2RlX0RBVEEocmVzKSwgMCwgY2gpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIG1heF9jaGFyID0gdWNzMmxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBzaXplKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHNpemUsIG1heF9jaGFyKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG1heF9jaGFyID49IDI1NikKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV8yQllURV9EQVRBKHJlcyksIHUsIHNpemVvZihQeV9VQ1MyKSpzaXplKTsKKyAgICBlbHNlIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTMSwgdSwgdSArIHNpemUsIFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykpOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzQoY29uc3QgUHlfVUNTNCAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfVUNTNCBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSB1WzBdOworICAgICAgICBpZiAoY2ggPCAyNTYpCisgICAgICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKWNoKTsKKworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORChyZXMpLCBQeVVuaWNvZGVfREFUQShyZXMpLCAwLCBjaCk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgbWF4X2NoYXIgPSB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIHNpemUpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgbWF4X2NoYXIpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobWF4X2NoYXIgPCAyNTYpCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MxLCB1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykpOworICAgIGVsc2UgaWYgKG1heF9jaGFyIDwgMHgxMDAwMCkKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VDUzQsIFB5X1VDUzIsIHUsIHUgKyBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocmVzKSk7CisgICAgZWxzZQorICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzRCWVRFX0RBVEEocmVzKSwgdSwgc2l6ZW9mKFB5X1VDUzQpKnNpemUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QqCitQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGludCBraW5kLCBjb25zdCB2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzaXplIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MxKGJ1ZmZlciwgc2l6ZSk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbVVDUzIoYnVmZmVyLCBzaXplKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTNChidWZmZXIsIHNpemUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK1B5X1VDUzQKK19QeVVuaWNvZGVfRmluZE1heENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpzdGFydHB0ciwgKmVuZHB0cjsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGFzc2VydCgwIDw9IHN0YXJ0KTsKKyAgICBhc3NlcnQoZW5kIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoc3RhcnQgPD0gZW5kKTsKKworICAgIGlmIChzdGFydCA9PSAwICYmIGVuZCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKTsKKworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiAxMjc7CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gMTI3OworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIHN0YXJ0cHRyID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgZW5kcHRyID0gKGNoYXIgKilzdGFydHB0ciArIGVuZCAqIGtpbmQ7CisgICAgc3RhcnRwdHIgPSAoY2hhciAqKXN0YXJ0cHRyICsgc3RhcnQgKiBraW5kOworICAgIHN3aXRjaChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczFsaWJfZmluZF9tYXhfY2hhcihzdGFydHB0ciwgZW5kcHRyKTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl9maW5kX21heF9jaGFyKHN0YXJ0cHRyLCBlbmRwdHIpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIoc3RhcnRwdHIsIGVuZHB0cik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIEVuc3VyZSB0aGF0IGEgc3RyaW5nIHVzZXMgdGhlIG1vc3QgZWZmaWNpZW50IHN0b3JhZ2UsIGlmIGl0IGlzIG5vdCB0aGUKKyAgIGNhc2U6IGNyZWF0ZSBhIG5ldyBzdHJpbmcgd2l0aCBvZiB0aGUgcmlnaHQga2luZC4gV3JpdGUgTlVMTCBpbnRvICpwX3VuaWNvZGUKKyAgIG9uIGVycm9yLiAqLworc3RhdGljIHZvaWQKK3VuaWNvZGVfYWRqdXN0X21heGNoYXIoUHlPYmplY3QgKipwX3VuaWNvZGUpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpjb3B5OworICAgIFB5X1VDUzQgbWF4X2NoYXI7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisKKyAgICBhc3NlcnQocF91bmljb2RlICE9IE5VTEwpOworICAgIHVuaWNvZGUgPSAqcF91bmljb2RlOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBjb25zdCBQeV9VQ1MxICp1ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIG1heF9jaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBsZW4pOworICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzIgKnUgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgbWF4X2NoYXIgPSB1Y3MybGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIGxlbik7CisgICAgICAgIGlmIChtYXhfY2hhciA+PSAyNTYpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjb25zdCBQeV9VQ1M0ICp1ID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgbWF4X2NoYXIgPSB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIGxlbik7CisgICAgICAgIGlmIChtYXhfY2hhciA+PSAweDEwMDAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb3B5ID0gUHlVbmljb2RlX05ldyhsZW4sIG1heF9jaGFyKTsKKyAgICBpZiAoY29weSAhPSBOVUxMKQorICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhjb3B5LCAwLCB1bmljb2RlLCAwLCBsZW4pOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAqcF91bmljb2RlID0gY29weTsKK30KKworUHlPYmplY3QqCitfUHlVbmljb2RlX0NvcHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgY29weSA9IFB5VW5pY29kZV9OZXcobGVuZ3RoLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpOworICAgIGlmICghY29weSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGNvcHkpID09IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKKworICAgIFB5X01FTUNQWShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgIGxlbmd0aCAqIFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KGNvcHksIDEpKTsKKyAgICByZXR1cm4gY29weTsKK30KKworCisvKiBXaWRlbiBVbmljb2RlIG9iamVjdHMgdG8gbGFyZ2VyIGJ1ZmZlcnMuIERvbid0IHdyaXRlIHRlcm1pbmF0aW5nIG51bGwKKyAgIGNoYXJhY3Rlci4gUmV0dXJuIE5VTEwgb24gZXJyb3IuICovCisKK3ZvaWQqCitfUHlVbmljb2RlX0FzS2luZChQeU9iamVjdCAqcywgdW5zaWduZWQgaW50IGtpbmQpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgdm9pZCAqcmVzdWx0OworICAgIHVuc2lnbmVkIGludCBza2luZDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocyk7CisgICAgc2tpbmQgPSBQeVVuaWNvZGVfS0lORChzKTsKKyAgICBpZiAoc2tpbmQgPj0ga2luZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIHdpZGVuaW5nIGF0dGVtcHQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTMikpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBhc3NlcnQoc2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1MyLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocyksCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSArIGxlbiwKKyAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gUHlNZW1fTWFsbG9jKGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGlmIChza2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgIFB5X1VDUzIsIFB5X1VDUzQsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocykgKyBsZW4sCisgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChza2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTNCwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSArIGxlbiwKKyAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQga2luZCIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlfVUNTNCoKK2FzX3VjczQoUHlPYmplY3QgKnN0cmluZywgUHlfVUNTNCAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldHNpemUsCisgICAgICAgIGludCBjb3B5X251bGwpCit7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgdGFyZ2V0bGVuOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKKyAgICB0YXJnZXRsZW4gPSBsZW47CisgICAgaWYgKGNvcHlfbnVsbCkKKyAgICAgICAgdGFyZ2V0bGVuKys7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VDUzQpIDwgdGFyZ2V0bGVuKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ID0gUHlNZW1fTWFsbG9jKHRhcmdldGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0YXJnZXRzaXplIDwgdGFyZ2V0bGVuKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBpcyBsb25nZXIgdGhhbiB0aGUgYnVmZmVyIik7CisgICAgICAgICAgICBpZiAoY29weV9udWxsICYmIDAgPCB0YXJnZXRzaXplKQorICAgICAgICAgICAgICAgIHRhcmdldFswXSA9IDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpzdGFydCA9IChQeV9VQ1MxICopIGRhdGE7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1MxLCBQeV9VQ1M0LCBzdGFydCwgc3RhcnQgKyBsZW4sIHRhcmdldCk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqc3RhcnQgPSAoUHlfVUNTMiAqKSBkYXRhOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTMiwgUHlfVUNTNCwgc3RhcnQsIHN0YXJ0ICsgbGVuLCB0YXJnZXQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBQeV9NRU1DUFkodGFyZ2V0LCBkYXRhLCBsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgIH0KKyAgICBpZiAoY29weV9udWxsKQorICAgICAgICB0YXJnZXRbbGVuXSA9IDA7CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworUHlfVUNTNCoKK1B5VW5pY29kZV9Bc1VDUzQoUHlPYmplY3QgKnN0cmluZywgUHlfVUNTNCAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldHNpemUsCisgICAgICAgICAgICAgICAgIGludCBjb3B5X251bGwpCit7CisgICAgaWYgKHRhcmdldCA9PSBOVUxMIHx8IHRhcmdldHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzX3VjczQoc3RyaW5nLCB0YXJnZXQsIHRhcmdldHNpemUsIGNvcHlfbnVsbCk7Cit9CisKK1B5X1VDUzQqCitQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqc3RyaW5nKQoreworICAgIHJldHVybiBhc191Y3M0KHN0cmluZywgTlVMTCwgMCwgMSk7CiB9CiAKICNpZmRlZiBIQVZFX1dDSEFSX0gKIAotI2lmIChQeV9VTklDT0RFX1NJWkUgPT0gMikgJiYgZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgJiYgKFNJWkVPRl9XQ0hBUl9UID09IDQpCi0jIGRlZmluZSBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMKLSNlbmRpZgotCi0jaWZkZWYgQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTCi0KLS8qIEhlcmUgc2l6ZW9mKHdjaGFyX3QpIGlzIDQgYnV0IFB5X1VOSUNPREVfU0laRSA9PSAyLCBzbyB3ZSBuZWVkCi0gICB0byBjb252ZXJ0IGZyb20gVVRGMzIgdG8gVVRGMTYuICovCi0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIFB5X3NzaXplX3QgYWxsb2M7Ci0gICAgY29uc3Qgd2NoYXJfdCAqb3JpZ193OwotCiAgICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChzaXplID09IC0xKSB7Ci0gICAgICAgIHNpemUgPSB3Y3NsZW4odyk7Ci0gICAgfQotCi0gICAgYWxsb2MgPSBzaXplOwotICAgIG9yaWdfdyA9IHc7Ci0gICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkgewotICAgICAgICBpZiAoKncgPiAweEZGRkYpCi0gICAgICAgICAgICBhbGxvYysrOwotICAgICAgICB3Kys7Ci0gICAgfQotICAgIHcgPSBvcmlnX3c7Ci0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KGFsbG9jKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogQ29weSB0aGUgd2NoYXJfdCBkYXRhIGludG8gdGhlIG5ldyBvYmplY3QgKi8KLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnU7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICAgICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkgewotICAgICAgICAgICAgaWYgKCp3ID4gMHhGRkZGKSB7Ci0gICAgICAgICAgICAgICAgd2NoYXJfdCBvcmRpbmFsID0gKncrKzsKLSAgICAgICAgICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgKnUrKyA9IDB4RDgwMCB8IChvcmRpbmFsID4+IDEwKTsKLSAgICAgICAgICAgICAgICAqdSsrID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKnUrKyA9ICp3Kys7CisgICAgICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotfQotCi0jZWxzZQotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZWdpc3RlciBjb25zdCB3Y2hhcl90ICp3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQotewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLQotICAgIGlmICh3ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02NDcsMjkgKzIyNTgsMTAgQEAKICAgICAgICAgc2l6ZSA9IHdjc2xlbih3KTsKICAgICB9CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENvcHkgdGhlIHdjaGFyX3QgZGF0YSBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgbWVtY3B5KHVuaWNvZGUtPnN0ciwgdywgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqdTsKLSAgICAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgICAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgICAgIGZvciAoaSA9IHNpemU7IGkgPiAwOyBpLS0pCi0gICAgICAgICAgICAqdSsrID0gKncrKzsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodywgc2l6ZSk7CiB9CiAKLSNlbmRpZiAvKiBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMgKi8KLQotI3VuZGVmIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUworI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCiBzdGF0aWMgdm9pZAogbWFrZWZtdChjaGFyICpmbXQsIGludCBsb25nZmxhZywgaW50IGxvbmdsb25nZmxhZywgaW50IHNpemVfdGZsYWcsCkBAIC03MDcsMTAgKzIyOTksNzEgQEAKICAgICAqZm10ID0gJ1wwJzsKIH0KIAotI2RlZmluZSBhcHBlbmRzdHJpbmcoc3RyaW5nKSB7Zm9yIChjb3B5ID0gc3RyaW5nOypjb3B5OykgKnMrKyA9ICpjb3B5Kys7fQorLyogaGVscGVyIGZvciBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSAqLwogCi0vKiBzaXplIG9mIGZpeGVkLXNpemUgYnVmZmVyIGZvciBmb3JtYXR0aW5nIHNpbmdsZSBhcmd1bWVudHMgKi8KLSNkZWZpbmUgSVRFTV9CVUZGRVJfTEVOIDIxCitzdGF0aWMgY29uc3QgY2hhcioKK3BhcnNlX2Zvcm1hdF9mbGFncyhjb25zdCBjaGFyICpmLAorICAgICAgICAgICAgICAgICAgIGludCAqcF93aWR0aCwgaW50ICpwX3ByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICBpbnQgKnBfbG9uZ2ZsYWcsIGludCAqcF9sb25nbG9uZ2ZsYWcsIGludCAqcF9zaXplX3RmbGFnKQoreworICAgIGludCB3aWR0aCwgcHJlY2lzaW9uLCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnOworCisgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0LCBlLmcuICIlMi41cyIgPT4gd2lkdGg9MiwgcHJlY2lzaW9uPTUgKi8KKyAgICBmKys7CisgICAgd2lkdGggPSAwOworICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCisgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7CisgICAgcHJlY2lzaW9uID0gMDsKKyAgICBpZiAoKmYgPT0gJy4nKSB7CisgICAgICAgIGYrKzsKKyAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKKyAgICAgICAgICAgIHByZWNpc2lvbiA9IChwcmVjaXNpb24qMTApICsgKmYrKyAtICcwJzsKKyAgICAgICAgaWYgKCpmID09ICclJykgeworICAgICAgICAgICAgLyogIiUuMyVzIiA9PiBmIHBvaW50cyB0byAiMyIgKi8KKyAgICAgICAgICAgIGYtLTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoKmYgPT0gJ1wwJykgeworICAgICAgICAvKiBib2d1cyBmb3JtYXQgIiUuMSIgPT4gZ28gYmFja3dhcmQsIGYgcG9pbnRzIHRvICIxIiAqLworICAgICAgICBmLS07CisgICAgfQorICAgIGlmIChwX3dpZHRoICE9IE5VTEwpCisgICAgICAgICpwX3dpZHRoID0gd2lkdGg7CisgICAgaWYgKHBfcHJlY2lzaW9uICE9IE5VTEwpCisgICAgICAgICpwX3ByZWNpc2lvbiA9IHByZWNpc2lvbjsKKworICAgIC8qIEhhbmRsZSAlbGQsICVsdSwgJWxsZCBhbmQgJWxsdS4gKi8KKyAgICBsb25nZmxhZyA9IDA7CisgICAgbG9uZ2xvbmdmbGFnID0gMDsKKyAgICBzaXplX3RmbGFnID0gMDsKKworICAgIGlmICgqZiA9PSAnbCcpIHsKKyAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSB7CisgICAgICAgICAgICBsb25nZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICBlbHNlIGlmIChmWzFdID09ICdsJyAmJgorICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScgfHwgZlsyXSA9PSAnaScpKSB7CisgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOworICAgICAgICAgICAgZiArPSAyOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KKyAgICBlbHNlIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSkgeworICAgICAgICBzaXplX3RmbGFnID0gMTsKKyAgICAgICAgKytmOworICAgIH0KKyAgICBpZiAocF9sb25nZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9sb25nZmxhZyA9IGxvbmdmbGFnOworICAgIGlmIChwX2xvbmdsb25nZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9sb25nbG9uZ2ZsYWcgPSBsb25nbG9uZ2ZsYWc7CisgICAgaWYgKHBfc2l6ZV90ZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9zaXplX3RmbGFnID0gc2l6ZV90ZmxhZzsKKyAgICByZXR1cm4gZjsKK30KKwogLyogbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCBmb3Igb3V0cHV0IG9mICVsZC4gIDIxIGNoYXJhY3RlcnMKICAgIGFsbG93cyBmb3IgNjQtYml0IGludGVnZXJzIChpbiBkZWNpbWFsKSBhbmQgYW4gb3B0aW9uYWwgc2lnbi4gKi8KICNkZWZpbmUgTUFYX0xPTkdfQ0hBUlMgMjEKQEAgLTczMSwxMDYgKzIzODQsMzUgQEAKICAgICBpbnQgcHJlY2lzaW9uID0gMDsKICAgICBpbnQgemVyb3BhZDsKICAgICBjb25zdCBjaGFyKiBmOwotICAgIFB5X1VOSUNPREUgKnM7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICAvKiB1c2VkIGJ5IHNwcmludGYgKi8KLSAgICBjaGFyIGJ1ZmZlcltJVEVNX0JVRkZFUl9MRU4rMV07Ci0gICAgLyogdXNlIGFidWZmZXIgaW5zdGVhZCBvZiBidWZmZXIsIGlmIHdlIG5lZWQgbW9yZSBzcGFjZQotICAgICAqICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoZXJlJ3MgYSBmb3JtYXQgc3BlY2lmaWVyIHdpdGggd2lkdGgpLiAqLwotICAgIGNoYXIgKmFidWZmZXIgPSBOVUxMOwotICAgIGNoYXIgKnJlYWxidWZmZXI7Ci0gICAgUHlfc3NpemVfdCBhYnVmZmVyc2l6ZSA9IDA7CiAgICAgY2hhciBmbXRbNjFdOyAvKiBzaG91bGQgYmUgZW5vdWdoIGZvciAlMHdpZHRoLnByZWNpc2lvbmxsZCAqLwotICAgIGNvbnN0IGNoYXIgKmNvcHk7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OyAvKiByZXN1bHQgaXMgQVNDSUkgYnkgZGVmYXVsdCAqLworICAgIFB5X1VDUzQgYXJnbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IG51bWJlcnNpemUgPSAwOworICAgIGNoYXIgKm51bWJlcnJlc3VsdHMgPSBOVUxMOworICAgIGNoYXIgKm51bWJlcnJlc3VsdCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBQeV9WQV9DT1BZKGNvdW50LCB2YXJncyk7CiAgICAgLyogc3RlcCAxOiBjb3VudCB0aGUgbnVtYmVyIG9mICVTLyVSLyVBLyVzIGZvcm1hdCBzcGVjaWZpY2F0aW9ucwogICAgICAqICh3ZSBjYWxsIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeU9iamVjdF9BU0NJSSgpLwogICAgICAqIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkgZm9yIHRoZXNlIG9iamVjdHMgb25jZSBkdXJpbmcgc3RlcCAzIGFuZCBwdXQgdGhlCi0gICAgICogcmVzdWx0IGluIGFuIGFycmF5KSAqLwotICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgIGlmICgqKGYrMSk9PSclJykKLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgaWYgKCooZisxKT09J1MnIHx8ICooZisxKT09J1InIHx8ICooZisxKT09J0EnIHx8ICooZisxKSA9PSAnVicpCi0gICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwotICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICAgd2hpbGUgKCorK2YgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgICBpZiAoKmYgPT0gJ3MnKQotICAgICAgICAgICAgICAgICArK2NhbGxjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYgKDEyOCA8PSAodW5zaWduZWQgY2hhcikqZikgewotICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAic3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHglMDJ4IiwKLSAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcikqZik7Ci0gICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICB9Ci0gICAgfQotICAgIC8qIHN0ZXAgMjogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZgotICAgICAqIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeVVuaWNvZGVfRGVjb2RlVVRGOCgpIGNhbGxzICovCi0gICAgaWYgKGNhbGxjb3VudCkgewotICAgICAgICBjYWxscmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUHlPYmplY3QgKikqY2FsbGNvdW50KTsKLSAgICAgICAgaWYgKCFjYWxscmVzdWx0cykgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKLSAgICB9Ci0gICAgLyogc3RlcCAzOiBmaWd1cmUgb3V0IGhvdyBsYXJnZSBhIGJ1ZmZlciB3ZSBuZWVkICovCisgICAgICogcmVzdWx0IGluIGFuIGFycmF5KQorICAgICAqIGFsc28gZXN0aW1hdGUgYSB1cHBlciBib3VuZCBmb3IgYWxsIHRoZSBudW1iZXIgZm9ybWF0cyBpbiB0aGUgc3RyaW5nLAorICAgICAqIG51bWJlcnMgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gc3RlcCAzIGFuZCBiZSBrZXB0IGluIGEgJ1wwJy1zZXBhcmF0ZWQKKyAgICAgKiBidWZmZXIgYmVmb3JlIHB1dHRpbmcgZXZlcnl0aGluZyB0b2dldGhlci4gKi8KICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKICAgICAgICAgaWYgKCpmID09ICclJykgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnID0gMDsKLSNlbmRpZgotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGY7Ci0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnOworICAgICAgICAgICAgLyogc2tpcCB3aWR0aCBvciB3aWR0aC5wcmVjaXNpb24gKGVnLiAiMS4yIiBvZiAiJTEuMmYiKSAqLworICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCAmd2lkdGgsIE5VTEwsIE5VTEwsICZsb25nbG9uZ2ZsYWcsIE5VTEwpOworICAgICAgICAgICAgaWYgKCpmID09ICdzJyB8fCAqZj09J1MnIHx8ICpmPT0nUicgfHwgKmY9PSdBJyB8fCAqZj09J1YnKQorICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwogCi0gICAgICAgICAgICAvKiBza2lwIHRoZSAnbCcgb3IgJ3onIGluIHslbGQsICV6ZCwgJWx1LCAlenV9IHNpbmNlCi0gICAgICAgICAgICAgKiB0aGV5IGRvbid0IGFmZmVjdCB0aGUgYW1vdW50IG9mIHNwYWNlIHdlIHJlc2VydmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgICAgIH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICBmICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGludCBvcmRpbmFsID0gdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKQotICAgICAgICAgICAgICAgICAgICBuICs9IDI7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBuKys7Ci0jZWxzZQotICAgICAgICAgICAgICAgICh2b2lkKXZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICBuKys7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICd1JzogY2FzZSAnaSc6IGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7CisgICAgICAgICAgICBlbHNlIGlmICgqZiA9PSAnZCcgfHwgKmY9PSd1JyB8fCAqZj09J2knIHx8ICpmPT0neCcgfHwgKmY9PSdwJykgewogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICAgICAgaWYgKGxvbmdsb25nZmxhZykgewogICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCBNQVhfTE9OR19MT05HX0NIQVJTKQpAQCAtODQ0LDE5ICsyNDI2LDE1NSBAQAogICAgICAgICAgICAgICAgICAgICAgICBuZWVkIG1vcmUgKHdoaWNoIHdlIGFsbG9jYXRlIGxhdGVyKS4gKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgTUFYX0xPTkdfQ0hBUlMpCiAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IE1BWF9MT05HX0NIQVJTOwotICAgICAgICAgICAgICAgIG4gKz0gd2lkdGg7Ci0gICAgICAgICAgICAgICAgLyogWFhYIHNob3VsZCBhbGxvdyBmb3IgbGFyZ2UgcHJlY2lzaW9uIGhlcmUgdG9vLiAqLwotICAgICAgICAgICAgICAgIGlmIChhYnVmZmVyc2l6ZSA8IHdpZHRoKQotICAgICAgICAgICAgICAgICAgICBhYnVmZmVyc2l6ZSA9IHdpZHRoOworCisgICAgICAgICAgICAgICAgLyogYWNjb3VudCBmb3IgdGhlIHNpemUgKyAnXDAnIHRvIHNlcGFyYXRlIG51bWJlcnMKKyAgICAgICAgICAgICAgICAgICBpbnNpZGUgb2YgdGhlIG51bWJlcnJlc3VsdHMgYnVmZmVyICovCisgICAgICAgICAgICAgICAgbnVtYmVyc2l6ZSArPSAod2lkdGggKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgodW5zaWduZWQgY2hhcikqZiA+IDEyNykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICJzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweCUwMngiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSpmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIC8qIHN0ZXAgMjogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZgorICAgICAqIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeVVuaWNvZGVfRGVjb2RlVVRGOCgpIGNhbGxzICovCisgICAgaWYgKGNhbGxjb3VudCkgeworICAgICAgICBjYWxscmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUHlPYmplY3QgKikgKiBjYWxsY291bnQpOworICAgICAgICBpZiAoIWNhbGxyZXN1bHRzKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgY2FsbHJlc3VsdCA9IGNhbGxyZXN1bHRzOworICAgIH0KKyAgICAvKiBzdGVwIDIuNTogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZiBmb3JtYXRpbmcgbnVtYmVycyAqLworICAgIGlmIChudW1iZXJzaXplKSB7CisgICAgICAgIG51bWJlcnJlc3VsdHMgPSBQeU9iamVjdF9NYWxsb2MobnVtYmVyc2l6ZSk7CisgICAgICAgIGlmICghbnVtYmVycmVzdWx0cykgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBudW1iZXJyZXN1bHQgPSBudW1iZXJyZXN1bHRzOworICAgIH0KKworICAgIC8qIHN0ZXAgMzogZm9ybWF0IG51bWJlcnMgYW5kIGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KKyAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKKyAgICAgICAgaWYgKCpmID09ICclJykgeworICAgICAgICAgICAgY29uc3QgY2hhciogcDsKKyAgICAgICAgICAgIGludCBsb25nZmxhZzsKKyAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWc7CisgICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICAgICAgICAgIGludCBudW1wcmludGVkOworCisgICAgICAgICAgICBwID0gZjsKKyAgICAgICAgICAgIHplcm9wYWQgPSAoZlsxXSA9PSAnMCcpOworICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCAmd2lkdGgsICZwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb25nZmxhZywgJmxvbmdsb25nZmxhZywgJnNpemVfdGZsYWcpOworICAgICAgICAgICAgc3dpdGNoICgqZikgeworICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBvcmRpbmFsID0gdmFfYXJnKGNvdW50LCBpbnQpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBvcmRpbmFsKTsKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgKmYpOworICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgbG9uZykpOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBQWV9MT05HX0xPTkcpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIFB5X3NzaXplX3QpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIGludCkpOworICAgICAgICAgICAgICAgIG4gKz0gbnVtcHJpbnRlZDsKKyAgICAgICAgICAgICAgICAvKiBhZHZhbmNlIGJ5ICsxIHRvIHNraXAgb3ZlciB0aGUgJ1wwJyAqLworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAndScpOworICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgdW5zaWduZWQgbG9uZykpOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHNpemVfdCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgdW5zaWduZWQgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsIHplcm9wYWQsIHdpZHRoLCBwcmVjaXNpb24sICd4Jyk7CisgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsIHZhX2FyZyhjb3VudCwgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCAiJXAiLCB2YV9hcmcoY291bnQsIHZvaWQqKSk7CisgICAgICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KKyAgICAgICAgICAgICAgICBpZiAobnVtYmVycmVzdWx0WzFdID09ICdYJykKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0WzFdID0gJ3gnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bWJlcnJlc3VsdFsxXSAhPSAneCcpIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShudW1iZXJyZXN1bHQgKyAyLCBudW1iZXJyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG51bWJlcnJlc3VsdCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0WzBdID0gJzAnOworICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMV0gPSAneCc7CisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgKz0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogVVRGLTggKi8KICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gdmFfYXJnKGNvdW50LCBjb25zdCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHN0cmxlbihzKSwgInJlcGxhY2UiKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzdHJsZW4ocyksICJyZXBsYWNlIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHIpOworICAgICAgICAgICAgICAgIC8qIHNpbmNlIFB5VW5pY29kZV9EZWNvZGVVVEY4IHJldHVybnMgYWxyZWFkeSBmbGV4aWJsZQorICAgICAgICAgICAgICAgICAgIHVuaWNvZGUgb2JqZWN0cywgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHJlYWR5IG9uIHRoZW0gKi8KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgc3RyIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NjQsOCArMjU4MiwxMiBAQAogICAgICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyhjb3VudCwgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG9iaiAmJiBQeVVuaWNvZGVfQ2hlY2sob2JqKSk7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQob2JqICYmIF9QeVVuaWNvZGVfQ0hFQ0sob2JqKSk7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShvYmopOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdWJzoKQEAgLTg3NCwxNiArMjU5NiwyNiBAQAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IHZhX2FyZyhjb3VudCwgY29uc3QgY2hhciAqKTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyX29iajsKICAgICAgICAgICAgICAgICBhc3NlcnQob2JqIHx8IHN0cik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFvYmogfHwgUHlVbmljb2RlX0NoZWNrKG9iaikpOworICAgICAgICAgICAgICAgIGFzc2VydCghb2JqIHx8IF9QeVVuaWNvZGVfQ0hFQ0sob2JqKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9iaikgewotICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHN0ciwgc3RybGVuKHN0ciksICJyZXBsYWNlIik7CisgICAgICAgICAgICAgICAgICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHN0ciwgc3RybGVuKHN0ciksICJyZXBsYWNlIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyX29iaikKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaik7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cl9vYmopOworICAgICAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CiAgICAgICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHJfb2JqOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg5Niw3ICsyNjI4LDEzIEBACiAgICAgICAgICAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHIpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgc3RyIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MDksNyArMjY0NywxMyBAQAogICAgICAgICAgICAgICAgIHJlcHIgPSBQeU9iamVjdF9SZXByKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXByKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwcik7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXByKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyZXByKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgcmVwciBhbmQgc3dpdGNoIHRvIHRoZSBuZXh0IHNsb3QgKi8KICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gcmVwcjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkyMiwyMCArMjY2NiwxNyBAQAogICAgICAgICAgICAgICAgIGFzY2lpID0gUHlPYmplY3RfQVNDSUkob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoIWFzY2lpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoYXNjaWkpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXNjaWkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhc2NpaSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShhc2NpaSk7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYXNjaWkpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSByZXByIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBhc2NpaTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogbWF4aW11bSA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgKiAweGZmZmZmZmZmZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgKiBzbyAxOSBjaGFyYWN0ZXJzIGlzIGVub3VnaC4KLSAgICAgICAgICAgICAgICAgKiBYWFggSSBjb3VudCAxOCAtLSB3aGF0J3MgdGhlIGV4dHJhIGZvcj8KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuICs9IDE5OwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAvKiBpZiB3ZSBzdHVtYmxlIHVwb24gYW4gdW5rbm93bgogICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdCBvZgpAQCAtOTUwLDEyNyArMjY5MSw2OCBAQAogICAgICAgICAgICAgbisrOwogICAgIH0KICAgZXhwYW5kOgotICAgIGlmIChhYnVmZmVyc2l6ZSA+IElURU1fQlVGRkVSX0xFTikgewotICAgICAgICAvKiBhZGQgMSBmb3Igc3ByaW50ZidzIHRyYWlsaW5nIG51bGwgYnl0ZSAqLwotICAgICAgICBhYnVmZmVyID0gUHlPYmplY3RfTWFsbG9jKGFidWZmZXJzaXplICsgMSk7Ci0gICAgICAgIGlmICghYWJ1ZmZlcikgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICByZWFsYnVmZmVyID0gYWJ1ZmZlcjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZWFsYnVmZmVyID0gYnVmZmVyOwogICAgIC8qIHN0ZXAgNDogZmlsbCB0aGUgYnVmZmVyICovCi0gICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCBmb3IgdGhlIHdvcnN0IGNhc2UsCisgICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCwKICAgICAgICB3ZSBkb24ndCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nLgogICAgICAgIFRoZXJlIGNhbiBiZSBubyBlcnJvcnMgYmV5b25kIHRoaXMgcG9pbnQuICovCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG4pOworICAgIHN0cmluZyA9IFB5VW5pY29kZV9OZXcobiwgbWF4Y2hhcik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIGdvdG8gZmFpbDsKLQotICAgIHMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwogICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKKyAgICBudW1iZXJyZXN1bHQgPSBudW1iZXJyZXN1bHRzOwogCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7CisgICAgZm9yIChpID0gMCwgZiA9IGZvcm1hdDsgKmY7IGYrKykgewogICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZisrOwotICAgICAgICAgICAgaW50IGxvbmdmbGFnID0gMDsKLSAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IHNpemVfdGZsYWcgPSAwOwotICAgICAgICAgICAgemVyb3BhZCA9ICgqZiA9PSAnMCcpOwotICAgICAgICAgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0ICovCi0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICBwcmVjaXNpb24gPSAwOwotICAgICAgICAgICAgaWYgKCpmID09ICcuJykgewotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSAocHJlY2lzaW9uKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBIYW5kbGUgJWxkLCAlbHUsICVsbGQgYW5kICVsbHUuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ2wnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgICAgIH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICBmICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgY2hhciogcDsKKworICAgICAgICAgICAgcCA9IGY7CisgICAgICAgICAgICBmID0gcGFyc2VfZm9ybWF0X2ZsYWdzKGYsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgLyogY2hlY2tpbmcgZm9yID09IGJlY2F1c2UgdGhlIGxhc3QgYXJndW1lbnQgY291bGQgYmUgYSBlbXB0eQorICAgICAgICAgICAgICAgc3RyaW5nLCB3aGljaCBjYXVzZXMgaSB0byBwb2ludCB0byBlbmQsIHRoZSBhc3NlcnQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgdGhlIGxvb3AgKi8KKyAgICAgICAgICAgIGFzc2VydChpIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogCiAgICAgICAgICAgICBzd2l0Y2ggKCpmKSB7CiAgICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgb3JkaW5hbCA9IHZhX2FyZyh2YXJncywgaW50KTsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKG9yZGluYWwgPiAweGZmZmYpIHsKLSAgICAgICAgICAgICAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcysrID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICAgICAgICAgICAgICAqcysrID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAqcysrID0gb3JkaW5hbDsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgb3JkaW5hbCA9IHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSsrLCBvcmRpbmFsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgJ2QnKTsKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICd1Jyk7Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCAwLCAwLCAwLCB6ZXJvcGFkLCB3aWR0aCwgcHJlY2lzaW9uLCAnaScpOwotICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgemVyb3BhZCwgd2lkdGgsIHByZWNpc2lvbiwgJ3gnKTsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCisgICAgICAgICAgICAgICAgaWYgKCpmID09ICdwJykKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGludCk7CisgICAgICAgICAgICAgICAgLyogZXh0cmFjdCB0aGUgcmVzdWx0IGZyb20gbnVtYmVycmVzdWx0cyBhbmQgYXBwZW5kLiAqLworICAgICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihudW1iZXJyZXN1bHQpOworICAgICAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cihzdHJpbmcsIGksIG51bWJlcnJlc3VsdCwgbGVuKTsKKyAgICAgICAgICAgICAgICAvKiBza2lwIG92ZXIgdGhlIHNlcGFyYXRpbmcgJ1wwJyAqLworICAgICAgICAgICAgICAgIGkgKz0gbGVuOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSBsZW47CisgICAgICAgICAgICAgICAgYXNzZXJ0KCpudW1iZXJyZXN1bHQgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0Kys7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOwogICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGNoYXIgKik7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKCpjYWxscmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB1bmljb2RlKCkvcmVwcigpID0+IGZvcmdldCBpdCAqLwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogc3dpdGNoIHRvIG5leHQgdW5pY29kZSgpL3JlcHIoKSByZXN1bHQgKi8KQEAgLTEwODAsMjMgKzI3NjIsMjkgQEAKICAgICAgICAgICAgIGNhc2UgJ1UnOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLCBzaXplKTsKLSAgICAgICAgICAgICAgICBzICs9IHNpemU7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChvYmopIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgb2JqLCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdWJzoKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyh2YXJncywgUHlPYmplY3QgKik7CiAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgICAgIGlmIChvYmopIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLCBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgcyArPSBzaXplOworICAgICAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKG9iaikgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgb2JqLCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqY2FsbHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICAgICAgcyArPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCAqY2FsbHJlc3VsdCwgMCwgc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgKytjYWxscmVzdWx0OwpAQCAtMTEwNiw1MiArMjc5NCw0NCBAQAogICAgICAgICAgICAgY2FzZSAnUic6CiAgICAgICAgICAgICBjYXNlICdBJzoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFICp1Y29weTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVzaXplOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdXBvczsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogdW51c2VkLCBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCAqLwogICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIHVjb3B5ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKmNhbGxyZXN1bHQpOwotICAgICAgICAgICAgICAgIHVzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICBmb3IgKHVwb3MgPSAwOyB1cG9zPHVzaXplOykKLSAgICAgICAgICAgICAgICAgICAgKnMrKyA9IHVjb3B5W3Vwb3MrK107CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCAgc2l6ZSk7CisgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgdW5pY29kZSgpL3JlcHIoKSA9PiBmb3JnZXQgaXQgKi8KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoKmNhbGxyZXN1bHQpOwogICAgICAgICAgICAgICAgIC8qIHN3aXRjaCB0byBuZXh0IHVuaWNvZGUoKS9yZXByKCkgcmVzdWx0ICovCiAgICAgICAgICAgICAgICAgKytjYWxscmVzdWx0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKLSAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLwotICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ1gnKQotICAgICAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYnVmZmVyWzFdICE9ICd4JykgewotICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlcisyLCBidWZmZXIsIHN0cmxlbihidWZmZXIpKzEpOwotICAgICAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICAqcysrID0gJyUnOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssICclJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhwKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IHN0cmxlbihwKTsKKyAgICAgICAgICAgICAgICB1bmljb2RlX3dyaXRlX2NzdHIoc3RyaW5nLCBpLCBwLCBsZW4pOworICAgICAgICAgICAgICAgIGkgKz0gbGVuOworICAgICAgICAgICAgICAgIGFzc2VydChpID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGkrKywgKmYpOworICAgICAgICB9CiAgICAgfQorICAgIGFzc2VydChpID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogCiAgIGVuZDoKICAgICBpZiAoY2FsbHJlc3VsdHMpCiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoY2FsbHJlc3VsdHMpOwotICAgIGlmIChhYnVmZmVyKQotICAgICAgICBQeU9iamVjdF9GcmVlKGFidWZmZXIpOwotICAgIFB5VW5pY29kZV9SZXNpemUoJnN0cmluZywgcyAtIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cmluZykpOwotICAgIHJldHVybiBzdHJpbmc7CisgICAgaWYgKG51bWJlcnJlc3VsdHMpCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobnVtYmVycmVzdWx0cyk7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHN0cmluZyk7CiAgIGZhaWw6CiAgICAgaWYgKGNhbGxyZXN1bHRzKSB7CiAgICAgICAgIFB5T2JqZWN0ICoqY2FsbHJlc3VsdDIgPSBjYWxscmVzdWx0czsKQEAgLTExNjEsMTMgKzI4NDEsMTEgQEAKICAgICAgICAgfQogICAgICAgICBQeU9iamVjdF9GcmVlKGNhbGxyZXN1bHRzKTsKICAgICB9Ci0gICAgaWYgKGFidWZmZXIpCi0gICAgICAgIFB5T2JqZWN0X0ZyZWUoYWJ1ZmZlcik7CisgICAgaWYgKG51bWJlcnJlc3VsdHMpCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobnVtYmVycmVzdWx0cyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBhcHBlbmRzdHJpbmcKLQogUHlPYmplY3QgKgogUHlVbmljb2RlX0Zyb21Gb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CkBAIC0xMTg0LDYgKzI4NjIsOCBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKKyNpZmRlZiBIQVZFX1dDSEFSX0gKKwogLyogSGVscGVyIGZ1bmN0aW9uIGZvciBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpIGFuZCBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZygpOgogICAgY29udmVydCBhIFVuaWNvZGUgb2JqZWN0IHRvIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLgogCkBAIC0xMTk0LDEwMyArMjg3NCwyNyBAQAogICAgICBjaGFyYWN0ZXIpIHdyaXR0ZW4gaW50byB3LiBXcml0ZSBhdCBtb3N0IHNpemUgd2lkZSBjaGFyYWN0ZXJzIChpbmNsdWRpbmcKICAgICAgdGhlIG51bGwgY2hhcmFjdGVyKS4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci11bmljb2RlX2Fzd2lkZWNoYXIoUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlLAordW5pY29kZV9hc3dpZGVjaGFyKFB5T2JqZWN0ICp1bmljb2RlLAogICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKncsCiAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAogICAgIFB5X3NzaXplX3QgcmVzOworICAgIGNvbnN0IHdjaGFyX3QgKndzdHI7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgJnJlcyk7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCiAgICAgaWYgKHcgIT0gTlVMTCkgewotICAgICAgICByZXMgPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7CiAgICAgICAgIGlmIChzaXplID4gcmVzKQogICAgICAgICAgICAgc2l6ZSA9IHJlcyArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IHNpemU7Ci0gICAgICAgIG1lbWNweSh3LCB1bmljb2RlLT5zdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBQeV9NRU1DUFkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSArIDE7Ci0jZWxpZiBQeV9VTklDT0RFX1NJWkUgPT0gMiAmJiBTSVpFT0ZfV0NIQVJfVCA9PSA0Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqdTsKLSAgICBjb25zdCBQeV9VTklDT0RFICp1ZW5kOwotICAgIGNvbnN0IHdjaGFyX3QgKndvcmlnLCAqd2VuZDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyOwotCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIHVlbmQgPSB1ICsgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpOwotICAgIGlmICh3ICE9IE5VTEwpIHsKLSAgICAgICAgd29yaWcgPSB3OwotICAgICAgICB3ZW5kID0gdyArIHNpemU7Ci0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQgJiYgdyAhPSB3ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IHVbMF0gJiYgdVswXSA8PSAweERCRkYKLSAgICAgICAgICAgICAgICAmJiAweERDMDAgPD0gdVsxXSAmJiB1WzFdIDw9IDB4REZGRikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqdyA9ICgoKHVbMF0gJiAweDNGRikgPDwgMTApIHwgKHVbMV0gJiAweDNGRikpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICB1ICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdyA9ICp1OwotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHcrKzsKLSAgICAgICAgfQotICAgICAgICBpZiAodyAhPSB3ZW5kKQotICAgICAgICAgICAgKncgPSBMJ1wwJzsKLSAgICAgICAgcmV0dXJuIHcgLSB3b3JpZzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG5jaGFyID0gMTsgLyogbnVsbCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCAqLwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IHVbMF0gJiYgdVswXSA8PSAweERCRkYKLSAgICAgICAgICAgICAgICAmJiAweERDMDAgPD0gdVsxXSAmJiB1WzFdIDw9IDB4REZGRikKLSAgICAgICAgICAgICAgICB1ICs9IDI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdSsrOwotICAgICAgICAgICAgbmNoYXIrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbmNoYXI7Ci0jZWxpZiBQeV9VTklDT0RFX1NJWkUgPT0gNCAmJiBTSVpFT0ZfV0NIQVJfVCA9PSAyCi0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqdSwgKnVlbmQsIG9yZGluYWw7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIHdjaGFyX3QgKndvcmlnLCAqd2VuZDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyOwotCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIHVlbmQgPSB1ICsgUHlVbmljb2RlX0dFVF9TSVpFKHUpOwotICAgIGlmICh3ICE9IE5VTEwpIHsKLSAgICAgICAgd29yaWcgPSB3OwotICAgICAgICB3ZW5kID0gdyArIHNpemU7Ci0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQgJiYgdyAhPSB3ZW5kKSB7Ci0gICAgICAgICAgICBvcmRpbmFsID0gKnU7Ci0gICAgICAgICAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICAgICAgICAgIG9yZGluYWwgLT0gMHgxMDAwMDsKLSAgICAgICAgICAgICAgICAqdysrID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICAgICAgICAgICp3KysgPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqdysrID0gb3JkaW5hbDsKLSAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICBpZiAodyAhPSB3ZW5kKQotICAgICAgICAgICAgKncgPSAwOwotICAgICAgICByZXR1cm4gdyAtIHdvcmlnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbmNoYXIgPSAxOyAvKiBudWxsIGNoYXJhY3RlciAqLwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoKnUgPiAweGZmZmYpCi0gICAgICAgICAgICAgICAgbmNoYXIgKz0gMjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuY2hhcisrOwotICAgICAgICAgICAgdSsrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuY2hhcjsKLSAgICB9Ci0jZWxzZQotIyAgZXJyb3IgInVuc3VwcG9ydGVkIHdjaGFyX3QgYW5kIFB5X1VOSUNPREUgc2l6ZXMsIHNlZSBpc3N1ZSAjODY3MCIKLSNlbmRpZgorICAgICAgICByZXR1cm4gcmVzICsgMTsKIH0KIAogUHlfc3NpemVfdApAQCAtMTMwMiw3ICsyOTA2LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIHVuaWNvZGVfYXN3aWRlY2hhcigoUHlVbmljb2RlT2JqZWN0Kil1bmljb2RlLCB3LCBzaXplKTsKKyAgICByZXR1cm4gdW5pY29kZV9hc3dpZGVjaGFyKHVuaWNvZGUsIHcsIHNpemUpOwogfQogCiB3Y2hhcl90KgpAQCAtMTMxNyw3ICsyOTIxLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlLCBOVUxMLCAwKTsKKyAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIodW5pY29kZSwgTlVMTCwgMCk7CisgICAgaWYgKGJ1ZmxlbiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIDwgYnVmbGVuKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMyOCw1MCArMjkzNCw1NCBAQAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlLCBidWZmZXIsIGJ1Zmxlbik7CisgICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKHVuaWNvZGUsIGJ1ZmZlciwgYnVmbGVuKTsKKyAgICBpZiAoYnVmbGVuID09IC0xKSB7CisgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChzaXplICE9IE5VTEwpCiAgICAgICAgICpzaXplID0gYnVmbGVuOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21PcmRpbmFsKGludCBvcmRpbmFsKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21PcmRpbmFsKGludCBvcmRpbmFsKQogewotICAgIFB5X1VOSUNPREUgc1syXTsKLQotICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gMHgxMGZmZmYpIHsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBpZiAob3JkaW5hbCA8IDAgfHwgb3JkaW5hbCA+IE1BWF9VTklDT0RFKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNocigpIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgIHNbMF0gPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgIHNbMV0gPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCAyKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAob3JkaW5hbCA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcihvcmRpbmFsKTsKIAotICAgIHNbMF0gPSAoUHlfVU5JQ09ERSlvcmRpbmFsOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgMSk7CisgICAgdiA9IFB5VW5pY29kZV9OZXcoMSwgb3JkaW5hbCk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHYpLCBQeVVuaWNvZGVfREFUQSh2KSwgMCwgb3JkaW5hbCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbU9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21PYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaikKIHsKICAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgbWFrZSB0aGlzIEFQSSBhbiBhbGlhcyBvZgogICAgICAgIFB5T2JqZWN0X1N0cigpIGluc3RlYWQgPyEgKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfSU5DUkVGKG9iaik7CiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewogICAgICAgICAvKiBGb3IgYSBVbmljb2RlIHN1YnR5cGUgdGhhdCdzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LAogICAgICAgICAgICByZXR1cm4gYSB0cnVlIFVuaWNvZGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0YS4gKi8KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvYmopKTsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weShvYmopOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAiQ2FuJ3QgY29udmVydCAnJS4xMDBzJyBvYmplY3QgdG8gc3RyIGltcGxpY2l0bHkiLApAQCAtMTM3OSw5ICsyOTg5LDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeV9idWZmZXIgYnVmZmVyOwogICAgIFB5T2JqZWN0ICp2OwpAQCAtMTM5NSw3ICszMDA2LDcgQEAKICAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKG9iaikgPT0gMCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICAgICAgdiA9IChQeU9iamVjdCAqKSB1bmljb2RlX2VtcHR5OworICAgICAgICAgICAgdiA9IHVuaWNvZGVfZW1wdHk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZSgKQEAgLTE0MjIsNyArMzAzMyw3IEBACiAKICAgICBpZiAoYnVmZmVyLmxlbiA9PSAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgdiA9IChQeU9iamVjdCAqKSB1bmljb2RlX2VtcHR5OworICAgICAgICB2ID0gdW5pY29kZV9lbXB0eTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZSgoY2hhciopIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMTQ0Myw2ICszMDU0LDEwIEBACiAgICAgY2hhciAqbDsKICAgICBjaGFyICpsX2VuZDsKIAorICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHN0cmNweShsb3dlciwgInV0Zi04Iik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KICAgICBlID0gZW5jb2Rpbmc7CiAgICAgbCA9IGxvd2VyOwogICAgIGxfZW5kID0gJmxvd2VyW2xvd2VyX2xlbiAtIDFdOwpAQCAtMTQ2NCwyNiArMzA3OSwyNiBAQAogICAgIHJldHVybiAxOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTCwgKnVuaWNvZGU7CiAgICAgUHlfYnVmZmVyIGluZm87CiAgICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLwogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpCi0gICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KICAgICBpZiAobm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzaXplLCBlcnJvcnMpOworICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKKyAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwogICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8CisgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAogICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApKQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKICNlbmRpZgpAQCAtMTUxMywxNiArMzEyOCwxNyBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogICAgIFB5X0RFQ1JFRihidWZmZXIpOwotICAgIHJldHVybiB1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoYnVmZmVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE1MzgsMTUgKzMxNTQsMTYgQEAKICAgICB2ID0gUHlDb2RlY19EZWNvZGUodW5pY29kZSwgZW5jb2RpbmcsIGVycm9ycyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIHJldHVybiB2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTU2OSwxNiArMzE4NiwxNyBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2LCAqdW5pY29kZTsKIApAQCAtMTU5MCw5ICszMjA4LDEwIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNjE0LDE3ICszMjMzLDE5MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgc2l6ZV90Cit3Y3N0b21ic19lcnJvcnBvcyhjb25zdCB3Y2hhcl90ICp3c3RyKQoreworICAgIHNpemVfdCBsZW47CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgIHdjaGFyX3QgYnVmWzNdOworI2Vsc2UKKyAgICB3Y2hhcl90IGJ1ZlsyXTsKKyNlbmRpZgorICAgIGNoYXIgb3V0YnVmW01CX0xFTl9NQVhdOworICAgIGNvbnN0IHdjaGFyX3QgKnN0YXJ0LCAqcHJldmlvdXM7CisKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgYnVmWzJdID0gMDsKKyNlbHNlCisgICAgYnVmWzFdID0gMDsKKyNlbmRpZgorICAgIHN0YXJ0ID0gd3N0cjsKKyAgICB3aGlsZSAoKndzdHIgIT0gTCdcMCcpCisgICAgeworICAgICAgICBwcmV2aW91cyA9IHdzdHI7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSh3c3RyWzBdKQorICAgICAgICAgICAgJiYgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKHdzdHJbMV0pKQorICAgICAgICB7CisgICAgICAgICAgICBidWZbMF0gPSB3c3RyWzBdOworICAgICAgICAgICAgYnVmWzFdID0gd3N0clsxXTsKKyAgICAgICAgICAgIHdzdHIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZlswXSA9ICp3c3RyOworICAgICAgICAgICAgYnVmWzFdID0gMDsKKyAgICAgICAgICAgIHdzdHIrKzsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgYnVmWzBdID0gKndzdHI7CisgICAgICAgIHdzdHIrKzsKKyNlbmRpZgorICAgICAgICBsZW4gPSB3Y3N0b21icyhvdXRidWYsIGJ1Ziwgc2l6ZW9mKG91dGJ1ZikpOworICAgICAgICBpZiAobGVuID09IChzaXplX3QpLTEpCisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXMgLSBzdGFydDsKKyAgICB9CisKKyAgICAvKiBmYWlsZWQgdG8gZmluZCB0aGUgdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2xvY2FsZV9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpzdXJyb2dhdGVlc2NhcGUpCit7CisgICAgaWYgKGVycm9ycyA9PSBOVUxMKSB7CisgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZWVzY2FwZSIpID09IDApIHsKKyAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDE7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKKyAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVMb2NhbGUoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IHdsZW4sIHdsZW4yOworICAgIHdjaGFyX3QgKndzdHI7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKKyAgICBjaGFyICplcnJtc2c7CisgICAgUHlPYmplY3QgKnJlYXNvbjsKKyAgICBQeU9iamVjdCAqZXhjOworICAgIHNpemVfdCBlcnJvcl9wb3M7CisgICAgaW50IHN1cnJvZ2F0ZWVzY2FwZTsKKworICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodW5pY29kZSwgJndsZW4pOworICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd2xlbjIgPSB3Y3NsZW4od3N0cik7CisgICAgaWYgKHdsZW4yICE9IHdsZW4pIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpIHsKKyAgICAgICAgLyogbG9jYWxlIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlICovCisgICAgICAgIGNoYXIgKnN0cjsKKworICAgICAgICBzdHIgPSBfUHlfd2NoYXIyY2hhcih3c3RyLCAmZXJyb3JfcG9zKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZXJyb3JfcG9zID09IChzaXplX3QpLTEpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVuY29kZV9lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nKHN0cik7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBsZW4sIGxlbjI7CisKKyAgICAgICAgbGVuID0gd2NzdG9tYnMoTlVMTCwgd3N0ciwgMCk7CisgICAgICAgIGlmIChsZW4gPT0gKHNpemVfdCktMSkgeworICAgICAgICAgICAgZXJyb3JfcG9zID0gKHNpemVfdCktMTsKKyAgICAgICAgICAgIGdvdG8gZW5jb2RlX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbik7CisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBsZW4yID0gd2NzdG9tYnMoUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCB3c3RyLCBsZW4rMSk7CisgICAgICAgIGlmIChsZW4yID09IChzaXplX3QpLTEgfHwgbGVuMiA+IGxlbikgeworICAgICAgICAgICAgZXJyb3JfcG9zID0gKHNpemVfdCktMTsKKyAgICAgICAgICAgIGdvdG8gZW5jb2RlX2Vycm9yOworICAgICAgICB9CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQorICAgIHJldHVybiBieXRlczsKKworZW5jb2RlX2Vycm9yOgorICAgIGVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKyAgICBhc3NlcnQoZXJybXNnICE9IE5VTEwpOworCisgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKQorICAgICAgICBlcnJvcl9wb3MgPSB3Y3N0b21ic19lcnJvcnBvcyh3c3RyKTsKKworICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgUHlfWERFQ1JFRihieXRlcyk7CisKKyAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZV90IGVycmxlbjsKKyAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIGlmICh3c3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgZXJybGVuKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXJybXNnID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGVycm1zZyA9PSBOVUxMKQorICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICJ3Y3N0b21icygpIGVuY291bnRlcmVkIGFuIHVuZW5jb2RhYmxlICIKKyAgICAgICAgICAgICJ3aWRlIGNoYXJhY3RlciIpOworICAgIGlmIChyZWFzb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfVW5pY29kZUVuY29kZUVycm9yLCAic09ubk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxlIiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpZXJyb3JfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZXJyb3JfcG9zKzEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24pOworICAgIFB5X0RFQ1JFRihyZWFzb24pOworICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogewotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyNpZmRlZiBIQVZFX01CQ1MKKyAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMTY0Miw0NiArMzQzNiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBsb2NhbGUgZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUgKi8KLSAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgIGNoYXIgKmJ5dGVzOwotICAgICAgICBQeU9iamVjdCAqYnl0ZXNfb2JqOwotICAgICAgICBzaXplX3QgZXJyb3JfcG9zOwotCi0gICAgICAgIHdjaGFyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGJ5dGVzID0gX1B5X3djaGFyMmNoYXIod2NoYXIsICZlcnJvcl9wb3MpOwotICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGVycm9yX3BvcyAhPSAoc2l6ZV90KS0xKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqZXJybXNnID0gc3RyZXJyb3IoZXJybm8pOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZXJybXNnID0gIlB5X3djaGFyMmNoYXIoKSBmYWlsZWQiOwotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywKLSAgICAgICAgICAgICAgICAgICAgImZpbGVzeXN0ZW1lbmNvZGluZyIsCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLCBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgIGVycm9yX3BvcywgZXJyb3JfcG9zKzEsCi0gICAgICAgICAgICAgICAgICAgIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOwotCi0gICAgICAgIGJ5dGVzX29iaiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhieXRlcyk7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnl0ZXMpOwotICAgICAgICByZXR1cm4gYnl0ZXNfb2JqOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogI2VuZGlmCiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KQEAgLTE2OTEsNDYgKzM0NTQsMjcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpCi0gICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KICAgICBpZiAobm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8CisgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8CiAgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxhdGluMShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworI2lmZGVmIEhBVkVfTUJDUwogICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBlcnJvcnMpOwogI2VuZGlmCiAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKICAgICB9Ci0gICAgLyogRHVyaW5nIGJvb3RzdHJhcCwgd2UgbWF5IG5lZWQgdG8gZmluZCB0aGUgZW5jb2RpbmdzCi0gICAgICAgcGFja2FnZSwgdG8gbG9hZCB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcsIGFuZCByZXF1aXJlIHRoZQotICAgICAgIGZpbGUgc3lzdGVtIGVuY29kaW5nIGluIG9yZGVyIHRvIGxvYWQgdGhlIGVuY29kaW5ncwotICAgICAgIHBhY2thZ2UuCi0KLSAgICAgICBCcmVhayBvdXQgb2YgdGhpcyBkZXBlbmRlbmN5IGJ5IGFzc3VtaW5nIHRoYXQgdGhlIHBhdGggdG8KLSAgICAgICB0aGUgZW5jb2RpbmdzIG1vZHVsZSBpcyBBU0NJSS1vbmx5LiAgWFhYIGNvdWxkIHRyeSB3Y3N0b21icwotICAgICAgIGluc3RlYWQsIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyB0aGUgbG9jYWxlJ3MKLSAgICAgICBlbmNvZGluZy4gKi8KLSAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJgotICAgICAgICAgICAgIHN0cmNtcChlbmNvZGluZywgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgPT0gMCAmJgotICAgICAgICAgICAgICFQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnAtPmNvZGVjc19pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVBU0NJSShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKIAogICAgIC8qIEVuY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCiAgICAgdiA9IFB5Q29kZWNfRW5jb2RlKHVuaWNvZGUsIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMTc2Niw5ICszNTEwLDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNzk3LDI0ICszNTQyLDE1MSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitzdGF0aWMgc2l6ZV90CittYnN0b3djc19lcnJvcnBvcyhjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCiB7Ci0gICAgUHlPYmplY3QgKnYgPSAoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUpLT5kZWZlbmM7Ci0gICAgaWYgKHYpCi0gICAgICAgIHJldHVybiB2OwotICAgIGlmIChlcnJvcnMgIT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigibm9uLU5VTEwgZW5jb2RpbmcgaW4gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIik7Ci0gICAgdiA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgIGlmICghdikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlKS0+ZGVmZW5jID0gdjsKLSAgICByZXR1cm4gdjsKKyNpZmRlZiBIQVZFX01CUlRPV0MKKyAgICBjb25zdCBjaGFyICpzdGFydCA9IHN0cjsKKyAgICBtYnN0YXRlX3QgbWJzOworICAgIHNpemVfdCBjb252ZXJ0ZWQ7CisgICAgd2NoYXJfdCBjaDsKKworICAgIG1lbXNldCgmbWJzLCAwLCBzaXplb2YgbWJzKTsKKyAgICB3aGlsZSAobGVuKQorICAgIHsKKyAgICAgICAgY29udmVydGVkID0gbWJydG93YygmY2gsIChjaGFyKilzdHIsIGxlbiwgJm1icyk7CisgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gMCkKKyAgICAgICAgICAgIC8qIFJlYWNoZWQgZW5kIG9mIHN0cmluZyAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gKHNpemVfdCktMSB8fCBjb252ZXJ0ZWQgPT0gKHNpemVfdCktMikgeworICAgICAgICAgICAgLyogQ29udmVyc2lvbiBlcnJvciBvciBpbmNvbXBsZXRlIGNoYXJhY3RlciAqLworICAgICAgICAgICAgcmV0dXJuIHN0ciAtIHN0YXJ0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RyICs9IGNvbnZlcnRlZDsKKyAgICAgICAgICAgIGxlbiAtPSBjb252ZXJ0ZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogZmFpbGVkIHRvIGZpbmQgdGhlIHVuZGVjb2RhYmxlIGJ5dGUgc2VxdWVuY2UgKi8KKyAgICByZXR1cm4gMDsKKyNlbmRpZgorICAgIHJldHVybiAwOwogfQogCiBQeU9iamVjdCoKK1B5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgd2NoYXJfdCBzbWFsbGJ1ZlsyNTZdOworICAgIHNpemVfdCBzbWFsbGJ1Zl9sZW4gPSBQeV9BUlJBWV9MRU5HVEgoc21hbGxidWYpOworICAgIHdjaGFyX3QgKndzdHI7CisgICAgc2l6ZV90IHdsZW4sIHdsZW4yOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGludCBzdXJyb2dhdGVlc2NhcGU7CisgICAgc2l6ZV90IGVycm9yX3BvczsKKyAgICBjaGFyICplcnJtc2c7CisgICAgUHlPYmplY3QgKnJlYXNvbiwgKmV4YzsKKworICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc3RyW2xlbl0gIT0gJ1wwJyB8fCBsZW4gIT0gc3RybGVuKHN0cikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpCisgICAgeworICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoc3RyLCAmd2xlbik7CisgICAgICAgIGlmICh3c3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICh3bGVuID09IChzaXplX3QpLTEpCisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIHdsZW4pOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KKyAgICBlbHNlIHsKKyNpZm5kZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKKyAgICAgICAgd2xlbiA9IG1ic3Rvd2NzKE5VTEwsIHN0ciwgMCk7CisjZWxzZQorICAgICAgICB3bGVuID0gbGVuOworI2VuZGlmCisgICAgICAgIGlmICh3bGVuID09IChzaXplX3QpLTEpCisgICAgICAgICAgICBnb3RvIGRlY29kZV9lcnJvcjsKKyAgICAgICAgaWYgKHdsZW4rMSA8PSBzbWFsbGJ1Zl9sZW4pIHsKKyAgICAgICAgICAgIHdzdHIgPSBzbWFsbGJ1ZjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICh3bGVuID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgLSAxKQorICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgICAgICAgICB3c3RyID0gUHlNZW1fTWFsbG9jKCh3bGVuKzEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghd3N0cikKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFRoaXMgc2hvdWxkbid0IGZhaWwgbm93ICovCisgICAgICAgIHdsZW4yID0gbWJzdG93Y3Mod3N0ciwgc3RyLCB3bGVuKzEpOworICAgICAgICBpZiAod2xlbjIgPT0gKHNpemVfdCktMSkgeworICAgICAgICAgICAgaWYgKHdzdHIgIT0gc21hbGxidWYpCisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgICAgIGdvdG8gZGVjb2RlX2Vycm9yOworICAgICAgICB9CisjaWZkZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKKyAgICAgICAgYXNzZXJ0KHdsZW4yID09IHdsZW4pOworI2VuZGlmCisgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIHdsZW4yKTsKKyAgICAgICAgaWYgKHdzdHIgIT0gc21hbGxidWYpCisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KKyAgICByZXR1cm4gdW5pY29kZTsKKworZGVjb2RlX2Vycm9yOgorICAgIGVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKyAgICBhc3NlcnQoZXJybXNnICE9IE5VTEwpOworCisgICAgZXJyb3JfcG9zID0gbWJzdG93Y3NfZXJyb3Jwb3Moc3RyLCBsZW4pOworICAgIGlmIChlcnJtc2cgIT0gTlVMTCkgeworICAgICAgICBzaXplX3QgZXJybGVuOworICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoZXJybXNnLCAmZXJybGVuKTsKKyAgICAgICAgaWYgKHdzdHIgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCBlcnJsZW4pOworICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlcnJtc2cgPSBOVUxMOworICAgIH0KKyAgICBpZiAoZXJybXNnID09IE5VTEwpCisgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgIm1ic3Rvd2NzKCkgZW5jb3VudGVyZWQgYW4gaW52YWxpZCBtdWx0aWJ5dGUgc2VxdWVuY2UiKTsKKyAgICBpZiAocmVhc29uID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciwgInN5I25uTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbGUiLCBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpZXJyb3JfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZXJyb3JfcG9zKzEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24pOworICAgIFB5X0RFQ1JFRihyZWFzb24pOworICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCoKK1B5VW5pY29kZV9EZWNvZGVMb2NhbGUoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlfc3NpemVfdCBzaXplID0gKFB5X3NzaXplX3Qpc3RybGVuKHN0cik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHN0ciwgc2l6ZSwgZXJyb3JzKTsKK30KKworCitQeU9iamVjdCoKIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoY29uc3QgY2hhciAqcykgewogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IChQeV9zc2l6ZV90KXN0cmxlbihzKTsKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUocywgc2l6ZSk7CkBAIC0xODIzLDEwICszNjk1LDEwIEBACiBQeU9iamVjdCoKIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgTlVMTCk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjgocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiLCBOVUxMKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0xODQ0LDIzICszNzE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogbG9jYWxlIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlICovCi0gICAgICAgIHdjaGFyX3QgKndjaGFyOwotICAgICAgICBQeU9iamVjdCAqdW5pY29kZTsKLSAgICAgICAgc2l6ZV90IGxlbjsKLQotICAgICAgICBpZiAoc1tzaXplXSAhPSAnXDAnIHx8IHNpemUgIT0gc3RybGVuKHMpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICB3Y2hhciA9IF9QeV9jaGFyMndjaGFyKHMsICZsZW4pOwotICAgICAgICBpZiAod2NoYXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdjaGFyLCBsZW4pOwotICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKLSAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xOTIzLDEzICszNzc5LDEzIEBACiBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzaXplOwotICAgIHZvaWQgKmRhdGE7CiAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRigqKFB5T2JqZWN0KiopYWRkcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIG91dHB1dCA9IGFyZzsKICAgICAgICAgUHlfSU5DUkVGKG91dHB1dCk7CiAgICAgfQpAQCAtMTk0OCw5ICszODA0LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCk7Ci0gICAgaWYgKHNpemUgIT0gUHlfVU5JQ09ERV9zdHJsZW4oZGF0YSkpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG91dHB1dCkgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoZmluZGNoYXIoUHlVbmljb2RlX0RBVEEob3V0cHV0KSwgUHlVbmljb2RlX0tJTkQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob3V0cHV0KSwgMCwgMSkgPj0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTYxLDQwICszODIwLDE2NiBAQAogCiAKIGNoYXIqCi1fUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqcHNpemUpCitQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqcHNpemUpCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzOworCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHVuaWNvZGUsIE5VTEwpOwotICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChwc2l6ZSAhPSBOVUxMKQotICAgICAgICAqcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKLSAgICByZXR1cm4gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOworCisgICAgaWYgKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSk7CisgICAgICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN0cmljdCIpOworICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoUHlCeXRlc19HRVRfU0laRShieXRlcykgKyAxKTsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOworICAgICAgICBQeV9NRU1DUFkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSArIDEpOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIH0KKworICAgIGlmIChwc2l6ZSkKKyAgICAgICAgKnBzaXplID0gUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpOworICAgIHJldHVybiBQeVVuaWNvZGVfVVRGOCh1bmljb2RlKTsKIH0KIAogY2hhcioKLV9QeVVuaWNvZGVfQXNTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSh1bmljb2RlLCBOVUxMKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUodW5pY29kZSwgTlVMTCk7CiB9CiAKLVB5X1VOSUNPREUgKlB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCitQeV9VTklDT0RFICoKK1B5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpzaXplKQogeworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9uZV9ieXRlOworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICBjb25zdCBQeV9VQ1MyICp0d29fYnl0ZXM7CisjZWxzZQorICAgIGNvbnN0IFB5X1VDUzQgKmZvdXJfYnl0ZXM7CisgICAgY29uc3QgUHlfVUNTNCAqdWNzNF9lbmQ7CisgICAgUHlfc3NpemVfdCBudW1fc3Vycm9nYXRlczsKKyNlbmRpZgorICAgIHdjaGFyX3QgKnc7CisgICAgd2NoYXJfdCAqd2NoYXJfZW5kOworCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKLSAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOworICAgIGlmIChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPT0gTlVMTCkgeworICAgICAgICAvKiBOb24tQVNDSUkgY29tcGFjdCB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpICE9IDApOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKIAotICBvbkVycm9yOgotICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgICAgICBmb3VyX2J5dGVzID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICB1Y3M0X2VuZCA9IGZvdXJfYnl0ZXMgKyBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgICAgIG51bV9zdXJyb2dhdGVzID0gMDsKKworICAgICAgICAgICAgZm9yICg7IGZvdXJfYnl0ZXMgPCB1Y3M0X2VuZDsgKytmb3VyX2J5dGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKCpmb3VyX2J5dGVzID4gMHhGRkZGKQorICAgICAgICAgICAgICAgICAgICArK251bV9zdXJyb2dhdGVzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAod2NoYXJfdCAqKSBQeU9iamVjdF9NQUxMT0MoCisgICAgICAgICAgICAgICAgICAgIHNpemVvZih3Y2hhcl90KSAqIChfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSArIDEgKyBudW1fc3Vycm9nYXRlcykpOworICAgICAgICAgICAgaWYgKCFfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpICsgbnVtX3N1cnJvZ2F0ZXM7CisKKyAgICAgICAgICAgIHcgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgICAgICB3Y2hhcl9lbmQgPSB3ICsgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgICAgIGZvdXJfYnl0ZXMgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgIGZvciAoOyBmb3VyX2J5dGVzIDwgdWNzNF9lbmQ7ICsrZm91cl9ieXRlcywgKyt3KSB7CisgICAgICAgICAgICAgICAgaWYgKCpmb3VyX2J5dGVzID4gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCgqZm91cl9ieXRlcyA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICAgICAgICAgIC8qIGVuY29kZSBzdXJyb2dhdGUgcGFpciBpbiB0aGlzIGNhc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgKncrKyA9IFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoKmZvdXJfYnl0ZXMpOworICAgICAgICAgICAgICAgICAgICAqdyAgID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKCpmb3VyX2J5dGVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAqdyA9ICpmb3VyX2J5dGVzOworCisgICAgICAgICAgICAgICAgaWYgKHcgPiB3Y2hhcl9lbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIk1pc2NhbGN1bGF0ZWQgc3RyaW5nIGVuZCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp3ID0gMDsKKyNlbHNlCisgICAgICAgICAgICAvKiBzaXplb2Yod2NoYXJfdCkgPT0gNCAqLworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiSW1wb3NzaWJsZSB1bmljb2RlIG9iamVjdCBzdGF0ZSwgd3N0ciBhbmQgc3RyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZCBzaGFyZSBtZW1vcnkgYWxyZWFkeS4iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAod2NoYXJfdCAqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKHdjaGFyX3QpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpICsgMSkpOworICAgICAgICAgICAgaWYgKCFfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSk7CisgICAgICAgICAgICB3ID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgICAgICAgICAgd2NoYXJfZW5kID0gdyArIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpOworCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBvbmVfYnl0ZSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGZvciAoOyB3IDwgd2NoYXJfZW5kOyArK29uZV9ieXRlLCArK3cpCisgICAgICAgICAgICAgICAgICAgICp3ID0gKm9uZV9ieXRlOworICAgICAgICAgICAgICAgIC8qIG51bGwtdGVybWluYXRlIHRoZSB3c3RyICovCisgICAgICAgICAgICAgICAgKncgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0CisgICAgICAgICAgICAgICAgdHdvX2J5dGVzID0gUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICAgICAgZm9yICg7IHcgPCB3Y2hhcl9lbmQ7ICsrdHdvX2J5dGVzLCArK3cpCisgICAgICAgICAgICAgICAgICAgICp3ID0gKnR3b19ieXRlczsKKyAgICAgICAgICAgICAgICAvKiBudWxsLXRlcm1pbmF0ZSB0aGUgd3N0ciAqLworICAgICAgICAgICAgICAgICp3ID0gMDsKKyNlbHNlCisgICAgICAgICAgICAgICAgLyogc2l6ZW9mKHdjaGFyX3QpID09IDIgKi8KKyAgICAgICAgICAgICAgICBQeU9iamVjdF9GUkVFKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJJbXBvc3NpYmxlIHVuaWNvZGUgb2JqZWN0IHN0YXRlLCB3c3RyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgc3RyIHNob3VsZCBzaGFyZSBtZW1vcnkgYWxyZWFkeS4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIlRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2l6ZSAhPSBOVUxMKQorICAgICAgICAqc2l6ZSA9IFB5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRTaXplKFB5T2JqZWN0ICp1bmljb2RlKQorUHlfVU5JQ09ERSAqCitQeVVuaWNvZGVfQXNVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCBOVUxMKTsKK30KKworCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwpAQCAtMjAwNiw3ICszOTkxLDU3IEBACiAgICAgcmV0dXJuIC0xOwogfQogCi1jb25zdCBjaGFyICpQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKHZvaWQpCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfR2V0TGVuZ3RoKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKK30KKworUHlfVUNTNAorUHlVbmljb2RlX1JlYWRDaGFyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8IFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAoUHlfVUNTNCktMTsKKyAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgaW5kZXgpOworfQorCitpbnQKK1B5VW5pY29kZV9Xcml0ZUNoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsIFB5X1VDUzQgY2gpCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodW5pY29kZV9jaGVja19tb2RpZmlhYmxlKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGNoID4gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiY2hhcmFjdGVyIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgIGluZGV4LCBjaCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IGNoYXIgKgorUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyh2b2lkKQogewogICAgIHJldHVybiAidXRmLTgiOwogfQpAQCAtMjA0NSwyNiArNDA4MCwyOSBAQAogICAgcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKICovCiAKLXN0YXRpYwotaW50IHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqaW5wdXQsIGNvbnN0IGNoYXIgKippbmVuZCwgUHlfc3NpemVfdCAqc3RhcnRpbnBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcywgUHlfVU5JQ09ERSAqKm91dHB0cikKK3N0YXRpYyBpbnQKK3VuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmlucHV0LCBjb25zdCBjaGFyICoqaW5lbmQsIFB5X3NzaXplX3QgKnN0YXJ0aW5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlPYmplY3QgKnJlc3R1cGxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBvdXRzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpvdXRwdXQpOworICAgIFB5X3NzaXplX3Qgb3V0c2l6ZTsKICAgICBQeV9zc2l6ZV90IGluc2l6ZTsKICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICBQeV9VTklDT0RFICpyZXBwdHI7CiAgICAgUHlPYmplY3QgKmlucHV0b2JqID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlcHNpemU7CiAgICAgaW50IHJlcyA9IC0xOwogCisgICAgaWYgKF9QeVVuaWNvZGVfS0lORCgqb3V0cHV0KSAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKKyAgICAgICAgb3V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpvdXRwdXQpOworICAgIGVsc2UKKyAgICAgICAgb3V0c2l6ZSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgoKm91dHB1dCk7CisKICAgICBpZiAoKmVycm9ySGFuZGxlciA9PSBOVUxMKSB7CiAgICAgICAgICplcnJvckhhbmRsZXIgPSBQeUNvZGVjX0xvb2t1cEVycm9yKGVycm9ycyk7CiAgICAgICAgIGlmICgqZXJyb3JIYW5kbGVyID09IE5VTEwpCkBAIC0yMDg4LDYgKzQxMjYsOCBAQAogICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUocmVzdHVwbGUsIGFyZ3BhcnNlLCAmUHlVbmljb2RlX1R5cGUsICZyZXB1bmljb2RlLCAmbmV3cG9zKSkKICAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIC8qIENvcHkgYmFjayB0aGUgYnl0ZXMgdmFyaWFibGVzLCB3aGljaCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQgYnkgdGhlCiAgICAgICAgY2FsbGJhY2sgKi8KQEAgLTIxMTEsMjUgKzQxNTEsNDcgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQotICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCi0gICAgICAgYXQgdGhlIG5ldyBpbnB1dCBwb3NpdGlvbiksIHNvIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UKLSAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZykgKi8KLSAgICByZXBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTsKLSAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgIHJlcXVpcmVkc2l6ZSA9ICpvdXRwb3MgKyByZXBzaXplICsgaW5zaXplLW5ld3BvczsKLSAgICBpZiAocmVxdWlyZWRzaXplID4gb3V0c2l6ZSkgewotICAgICAgICBpZiAocmVxdWlyZWRzaXplPDIqb3V0c2l6ZSkKLSAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKLSAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKG91dHB1dCwgcmVxdWlyZWRzaXplKSA8IDApCisgICAgaWYgKF9QeVVuaWNvZGVfS0lORCgqb3V0cHV0KSAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKKyAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAoc3RhcnRpbmcKKyAgICAgICAgICAgYXQgdGhlIG5ldyBpbnB1dCBwb3NpdGlvbiksIHNvIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UKKyAgICAgICAgICAgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcpICovCisgICAgICAgIFB5X3NzaXplX3QgcmVwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgIHJlcXVpcmVkc2l6ZSA9ICpvdXRwb3MgKyByZXBsZW4gKyBpbnNpemUtbmV3cG9zOworICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gb3V0c2l6ZSkgeworICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKm91dHNpemUpCisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipvdXRzaXplOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKG91dHB1dCwgcmVxdWlyZWRzaXplKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgICAgIGlmICh1bmljb2RlX3dpZGVuKG91dHB1dCwgKm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJlcHVuaWNvZGUpKSA8IDApCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICpvdXRwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0cHV0KSArICpvdXRwb3M7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKCpvdXRwdXQsICpvdXRwb3MsIHJlcHVuaWNvZGUsIDAsIHJlcGxlbik7CisgICAgICAgICpvdXRwb3MgKz0gcmVwbGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2NoYXJfdCAqcmVwd3N0cjsKKyAgICAgICAgUHlfc3NpemVfdCByZXB3bGVuOworICAgICAgICByZXB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUocmVwdW5pY29kZSwgJnJlcHdsZW4pOworICAgICAgICBpZiAocmVwd3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKKyAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAoc3RhcnRpbmcKKyAgICAgICAgICAgYXQgdGhlIG5ldyBpbnB1dCBwb3NpdGlvbiksIHNvIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UKKyAgICAgICAgICAgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcpICovCisgICAgICAgIHJlcXVpcmVkc2l6ZSA9ICpvdXRwb3MgKyByZXB3bGVuICsgaW5zaXplLW5ld3BvczsKKyAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG91dHNpemUpIHsKKyAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPCAyKm91dHNpemUpCisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipvdXRzaXplOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKG91dHB1dCwgcmVxdWlyZWRzaXplKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgICAgIHdjc25jcHkoX1B5VW5pY29kZV9XU1RSKCpvdXRwdXQpICsgKm91dHBvcywgcmVwd3N0ciwgcmVwd2xlbik7CisgICAgICAgICpvdXRwb3MgKz0gcmVwd2xlbjsKICAgICB9CiAgICAgKmVuZGlucG9zID0gbmV3cG9zOwogICAgICppbnB0ciA9ICppbnB1dCArIG5ld3BvczsKLSAgICBQeV9VTklDT0RFX0NPUFkoKm91dHB0ciwgcmVwcHRyLCByZXBzaXplKTsKLSAgICAqb3V0cHRyICs9IHJlcHNpemU7Ci0gICAgKm91dHBvcyArPSByZXBzaXplOwogCiAgICAgLyogd2UgbWFkZSBpdCEgKi8KICAgICByZXMgPSAwOwpAQCAtMjIyMCw5ICs0MjgyLDEwIEBACiAgICAgICAoZGlyZWN0V1MgJiYgKHV0ZjdfY2F0ZWdvcnlbKGMpXSA9PSAyKSkgfHwgICAgICAgIFwKICAgICAgIChkaXJlY3RPICYmICh1dGY3X2NhdGVnb3J5WyhjKV0gPT0gMSkpKSkKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY3KGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVVEY3KGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKIH0KQEAgLTIyMzQsNDIgKzQyOTcsNDIgQEAKICAqIGFsbCB0aGUgc2hpZnQgc3RhdGUgKHNlZW4gYml0cywgbnVtYmVyIG9mIGJpdHMgc2VlbiwgaGlnaAogICogc3Vycm9nYXRlKS4gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKICAgICBjb25zdCBjaGFyICplOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp1bmljb2RlOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwogICAgIGludCBpblNoaWZ0ID0gMDsKLSAgICBQeV9VTklDT0RFICpzaGlmdE91dFN0YXJ0OworICAgIFB5X3NzaXplX3Qgc2hpZnRPdXRTdGFydDsKICAgICB1bnNpZ25lZCBpbnQgYmFzZTY0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyBiYXNlNjRidWZmZXIgPSAwOwotICAgIFB5X1VOSUNPREUgc3Vycm9nYXRlID0gMDsKKyAgICBQeV9VQ1M0IHN1cnJvZ2F0ZSA9IDA7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7CisgICAgLyogU3RhcnQgb2ZmIGFzc3VtaW5nIGl0J3MgYWxsIEFTQ0lJLiBXaWRlbiBsYXRlciBhcyBuZWNlc3NhcnkuICovCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKICAgICBpZiAoIXVuaWNvZGUpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAgICAgKmNvbnN1bWVkID0gMDsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgICAgIHJldHVybiB1bmljb2RlOwogICAgIH0KIAotICAgIHAgPSB1bmljb2RlLT5zdHI7Ci0gICAgc2hpZnRPdXRTdGFydCA9IHA7CisgICAgc2hpZnRPdXRTdGFydCA9IG91dHBvcyA9IDA7CiAgICAgZSA9IHMgKyBzaXplOwogCiAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2g7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICByZXN0YXJ0OgogICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSAqczsKIApAQCAtMjI4MCwzNCArNDM0MywzMSBAQAogICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgICBpZiAoYmFzZTY0Yml0cyA+PSAxNikgewogICAgICAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlIGVub3VnaCBiaXRzIGZvciBhIFVURi0xNiB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIG91dENoID0gKFB5X1VOSUNPREUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZTY0YnVmZmVyID4+IChiYXNlNjRiaXRzLTE2KSk7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgb3V0Q2ggPSAoUHlfVUNTNCkoYmFzZTY0YnVmZmVyID4+IChiYXNlNjRiaXRzLTE2KSk7CiAgICAgICAgICAgICAgICAgICAgIGJhc2U2NGJpdHMgLT0gMTY7CiAgICAgICAgICAgICAgICAgICAgIGJhc2U2NGJ1ZmZlciAmPSAoMSA8PCBiYXNlNjRiaXRzKSAtIDE7IC8qIGNsZWFyIGhpZ2ggYml0cyAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoc3Vycm9nYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBleHBlY3RpbmcgYSBzZWNvbmQgc3Vycm9nYXRlICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Q2ggPj0gMHhEQzAwICYmIG91dENoIDw9IDB4REZGRikgewotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAoKChzdXJyb2dhdGUgJiAweDNGRik8PDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAob3V0Q2ggJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN1cnJvZ2F0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gb3V0Q2g7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUob3V0Q2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaDIgPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhzdXJyb2dhdGUsIG91dENoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaDIpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3Vycm9nYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIHN1cnJvZ2F0ZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAob3V0Q2ggPj0gMHhEODAwICYmIG91dENoIDw9IDB4REJGRikgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShvdXRDaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpcnN0IHN1cnJvZ2F0ZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gb3V0Q2g7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gb3V0Q2g7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBvdXRDaCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIzMTUsNyArNDM3NSw4IEBACiAgICAgICAgICAgICAgICAgaW5TaGlmdCA9IDA7CiAgICAgICAgICAgICAgICAgcysrOwogICAgICAgICAgICAgICAgIGlmIChzdXJyb2dhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN1cnJvZ2F0ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgc3Vycm9nYXRlKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChiYXNlNjRiaXRzID4gMCkgeyAvKiBsZWZ0LW92ZXIgYml0cyAqLwpAQCAtMjMzNSw3ICs0Mzk2LDggQEAKICAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJy0nKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qICctJyBpcyBhYnNvcmJlZDsgb3RoZXIgdGVybWluYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBhcmUgcHJlc2VydmVkICovCi0gICAgICAgICAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzNDQsMTYgKzQ0MDYsMTggQEAKICAgICAgICAgICAgIHMrKzsgLyogY29uc3VtZSAnKycgKi8KICAgICAgICAgICAgIGlmIChzIDwgZSAmJiAqcyA9PSAnLScpIHsgLyogJystJyBlbmNvZGVzICcrJyAqLwogICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJysnOworICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsICcrJykgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYmVnaW4gYmFzZTY0LWVuY29kZWQgc2VjdGlvbiAqLwogICAgICAgICAgICAgICAgIGluU2hpZnQgPSAxOwotICAgICAgICAgICAgICAgIHNoaWZ0T3V0U3RhcnQgPSBwOworICAgICAgICAgICAgICAgIHNoaWZ0T3V0U3RhcnQgPSBvdXRwb3M7CiAgICAgICAgICAgICAgICAgYmFzZTY0Yml0cyA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoREVDT0RFX0RJUkVDVChjaCkpIHsgLyogY2hhcmFjdGVyIGRlY29kZXMgYXMgaXRzZWxmICovCi0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIHMrKzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTIzNjQsMTMgKzQ0MjgsMTIgQEAKICAgICAgICAgfQogICAgICAgICBjb250aW51ZTsKIHV0ZjdFcnJvcjoKLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidXRmNyIsIGVycm1zZywKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCkBAIC0yMzgxLDEzICs0NDQ0LDEyIEBACiAgICAgICAgIGlmIChzdXJyb2dhdGUgfHwKICAgICAgICAgICAgICAgICAoYmFzZTY0Yml0cyA+PSA2KSB8fAogICAgICAgICAgICAgICAgIChiYXNlNjRiaXRzID4gMCAmJiBiYXNlNjRidWZmZXIgIT0gMCkpIHsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHNpemU7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInV0ZjciLCAidW50ZXJtaW5hdGVkIHNoaWZ0IHNlcXVlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgaWYgKHMgPCBlKQogICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKQEAgLTIzOTcsNyArNDQ1OSw3IEBACiAgICAgLyogcmV0dXJuIHN0YXRlICovCiAgICAgaWYgKGNvbnN1bWVkKSB7CiAgICAgICAgIGlmIChpblNoaWZ0KSB7Ci0gICAgICAgICAgICBwID0gc2hpZnRPdXRTdGFydDsgLyogYmFjayBvZmYgb3V0cHV0ICovCisgICAgICAgICAgICBvdXRwb3MgPSBzaGlmdE91dFN0YXJ0OyAvKiBiYWNrIG9mZiBvdXRwdXQgKi8KICAgICAgICAgICAgICpjb25zdW1lZCA9IHN0YXJ0aW5wb3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0yNDA1LDEyICs0NDY3LDEyIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSkgPCAwKQorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwpAQCAtMjQyMCwzNSArNDQ4Miw0MiBAQAogfQogCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0U2V0TywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0VuY29kZVVURjcoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0U2V0TywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKLSAgICAvKiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byB0aWdodGVuIHRoaXMgd29yc3QgY2FzZSAqLwotICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkID0gOCAqIHNpemU7CiAgICAgaW50IGluU2hpZnQgPSAwOwotICAgIFB5X3NzaXplX3QgaSA9IDA7CisgICAgUHlfc3NpemVfdCBpOwogICAgIHVuc2lnbmVkIGludCBiYXNlNjRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBsb25nIGJhc2U2NGJ1ZmZlciA9IDA7CiAgICAgY2hhciAqIG91dDsKICAgICBjaGFyICogc3RhcnQ7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBpZiAoYWxsb2NhdGVkIC8gOCAhPSBzaXplKQorICAgIC8qIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIHRpZ2h0ZW4gdGhpcyB3b3JzdCBjYXNlICovCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gOCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOworICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbiAqIDgpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RhcnQgPSBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBmb3IgKDtpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKGluU2hpZnQpIHsKICAgICAgICAgICAgIGlmIChFTkNPREVfRElSRUNUKGNoLCAhYmFzZTY0U2V0TywgIWJhc2U2NFdoaXRlU3BhY2UpKSB7CkBAIC0yNDg2LDggKzQ1NTUsOSBAQAogICAgICAgICB9CiAgICAgICAgIGNvbnRpbnVlOwogZW5jb2RlX2NoYXI6Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworCiAgICAgICAgICAgICAvKiBjb2RlIGZpcnN0IHN1cnJvZ2F0ZSAqLwogICAgICAgICAgICAgYmFzZTY0Yml0cyArPSAxNjsKICAgICAgICAgICAgIGJhc2U2NGJ1ZmZlciA9IChiYXNlNjRidWZmZXIgPDwgMTYpIHwgMHhkODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7CkBAIC0yNDk2LDkgKzQ1NjYsOCBAQAogICAgICAgICAgICAgICAgIGJhc2U2NGJpdHMgLT0gNjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIHByZXBhcmUgc2Vjb25kIHN1cnJvZ2F0ZSAqLwotICAgICAgICAgICAgY2ggPSAgMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKKyAgICAgICAgICAgIGNoID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGJhc2U2NGJpdHMgKz0gMTY7CiAgICAgICAgIGJhc2U2NGJ1ZmZlciA9IChiYXNlNjRidWZmZXIgPDwgMTYpIHwgY2g7CiAgICAgICAgIHdoaWxlIChiYXNlNjRiaXRzID49IDYpIHsKQEAgLTI1MTQsNiArNDU4MywyMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gdjsKIH0KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0U2V0TywKKyAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGNyh0bXAsIGJhc2U2NFNldE8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NFdoaXRlU3BhY2UsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogI3VuZGVmIElTX0JBU0U2NAogI3VuZGVmIEZST01fQkFTRTY0CkBAIC0yNTIzLDI3MiArNDYwOCwyMDYgQEAKIAogLyogLS0tIFVURi04IENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYwotY2hhciB1dGY4X2NvZGVfbGVuZ3RoWzI1Nl0gPSB7Ci0gICAgLyogTWFwIFVURi04IGVuY29kZWQgcHJlZml4IGJ5dGUgdG8gc2VxdWVuY2UgbGVuZ3RoLiAgWmVybyBtZWFucwotICAgICAgIGlsbGVnYWwgcHJlZml4LiAgU2VlIFJGQyAzNjI5IGZvciBkZXRhaWxzICovCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgLyogMDAtMEYgKi8KLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAvKiA3MC03RiAqLwotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC8qIDgwLThGICovCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC8qIEIwLUJGICovCi0gICAgMCwgMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgLyogQzAtQzEgKyBDMi1DRiAqLwotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIC8qIEQwLURGICovCi0gICAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgLyogRTAtRUYgKi8KLSAgICA0LCA0LCA0LCA0LCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwICAvKiBGMC1GNCArIEY1LUZGICovCi19OwotCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjgoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjgoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwogfQogCi0vKiBNYXNrIHRvIGNoZWNrIG9yIGZvcmNlIGFsaWdubWVudCBvZiBhIHBvaW50ZXIgdG8gQyAnbG9uZycgYm91bmRhcmllcyAqLwotI2RlZmluZSBMT05HX1BUUl9NQVNLIChzaXplX3QpIChTSVpFT0ZfTE9ORyAtIDEpCisjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczFsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMmxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3M0bGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgogCiAvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKICAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCiAjaWYgKFNJWkVPRl9MT05HID09IDgpCi0jIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MDgwODA4MDgwTAorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCiAjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKLSMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwTAorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODBVTAogI2Vsc2UKICMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKICNlbmRpZgogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCitzdGF0aWMgUHlfc3NpemVfdAorYXNjaWlfZGVjb2RlKGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsIFB5X1VDUzEgKmRlc3QpCiB7CisgICAgY29uc3QgY2hhciAqcCA9IHN0YXJ0OworICAgIGNvbnN0IGNoYXIgKmFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgX1B5X0FMSUdOX0RPV04oZW5kLCBTSVpFT0ZfTE9ORyk7CisKKyNpZiBTSVpFT0ZfTE9ORyA8PSBTSVpFT0ZfVk9JRF9QCisgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKGRlc3QsIFNJWkVPRl9MT05HKSk7CisgICAgaWYgKF9QeV9JU19BTElHTkVEKHAsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAvKiBGYXN0IHBhdGgsIHNlZSBpbiBTVFJJTkdMSUIodXRmOF9kZWNvZGUpIGZvcgorICAgICAgICAgICBhbiBleHBsYW5hdGlvbi4gKi8KKyAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9wID0gcDsKKyAgICAgICAgcmVnaXN0ZXIgUHlfVUNTMSAqIHEgPSBkZXN0OworICAgICAgICB3aGlsZSAoX3AgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKSBfcDsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAmIEFTQ0lJX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICooKHVuc2lnbmVkIGxvbmcgKilxKSA9IHZhbHVlOworICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICBxICs9IFNJWkVPRl9MT05HOworICAgICAgICB9CisgICAgICAgIHAgPSBfcDsKKyAgICAgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgICAgIGlmICgodW5zaWduZWQgY2hhcikqcCAmIDB4ODApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAqcSsrID0gKnArKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcCAtIHN0YXJ0OworICAgIH0KKyNlbmRpZgorICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aCwgc2VlIGluIFNUUklOR0xJQih1dGY4X2RlY29kZSkgaW4gc3RyaW5nbGliL2NvZGVjcy5oCisgICAgICAgICAgIGZvciBhbiBleHBsYW5hdGlvbi4gKi8KKyAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHAsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcCA9IHA7CisgICAgICAgICAgICB3aGlsZSAoX3AgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYgQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHAgPSBfcDsKKyAgICAgICAgICAgIGlmIChfcCA9PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKSpwICYgMHg4MCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICArK3A7CisgICAgfQorICAgIG1lbWNweShkZXN0LCBzdGFydCwgcCAtIHN0YXJ0KTsKKyAgICByZXR1cm4gcCAtIHN0YXJ0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIGludCBuOwotICAgIGludCBrOworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHMgKyBzaXplOworICAgIFB5X3NzaXplX3Qgb3V0cG9zOworCiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgY29uc3QgY2hhciAqZSwgKmFsaWduZWRfZW5kOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKLSAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgICAgICpjb25zdW1lZCA9IDA7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIC8qIFVucGFjayBVVEYtOCBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZS0+c3RyOwotICAgIGUgPSBzICsgc2l6ZTsKLSAgICBhbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOworICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLworICAgIGlmIChzaXplID09IDEgJiYgKHVuc2lnbmVkIGNoYXIpc1swXSA8IDEyOCkgeworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgPSAxOworICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKXNbMF0pOworICAgIH0KIAotICAgIHdoaWxlIChzIDwgZSkgewotICAgICAgICBQeV9VQ1M0IGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBBU0NJSSBjaGFyYWN0ZXJzLiBHaXZlbiB0aGF0IGNvbW1vbiBVVEYtOAotICAgICAgICAgICAgICAgaW5wdXQgd2lsbCBjb25zaXN0IG9mIGFuIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBBU0NJSQotICAgICAgICAgICAgICAgY2hhcmFjdGVycywgd2UgdHJ5IHRvIG9wdGltaXplIGZvciB0aGlzIGNhc2UgYnkgY2hlY2tpbmcKLSAgICAgICAgICAgICAgIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBhIEMgJ2xvbmcnIGNhbiBjb250YWluLgotICAgICAgICAgICAgICAgRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBkbyBhbiBhbGlnbmVkIHJlYWQsIGFzIG1vc3QgQ1BVcyBoYXZlCi0gICAgICAgICAgICAgICBhIHBlbmFsdHkgZm9yIHVuYWxpZ25lZCByZWFkcy4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoISgoc2l6ZV90KSBzICYgTE9OR19QVFJfTUFTSykpIHsKLSAgICAgICAgICAgICAgICAvKiBIZWxwIHJlZ2lzdGVyIGFsbG9jYXRpb24gKi8KLSAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcyA9IHM7Ci0gICAgICAgICAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqX3AgPSBwOwotICAgICAgICAgICAgICAgIHdoaWxlIChfcyA8IGFsaWduZWRfZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgYSB3aG9sZSBsb25nIGF0IGEgdGltZSAoZWl0aGVyIDQgb3IgOCBieXRlcyksCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBkbyBhIGZhc3QgdW5yb2xsZWQgY29weSBpZiBpdCBvbmx5IGNvbnRhaW5zIEFTQ0lJCi0gICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuICovCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICoodW5zaWduZWQgbG9uZyAqKSBfczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBBU0NJSV9DSEFSX01BU0spCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAodW5zaWduZWQgY2hhcikgX3NbMF07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzFdOwotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1syXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAodW5zaWduZWQgY2hhcikgX3NbM107Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgIF9wWzRdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzRdOwotICAgICAgICAgICAgICAgICAgICBfcFs1XSA9ICh1bnNpZ25lZCBjaGFyKSBfc1s1XTsKLSAgICAgICAgICAgICAgICAgICAgX3BbNl0gPSAodW5zaWduZWQgY2hhcikgX3NbNl07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzddID0gKHVuc2lnbmVkIGNoYXIpIF9zWzddOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIF9zICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyA9IF9zOwotICAgICAgICAgICAgICAgIHAgPSBfcDsKLSAgICAgICAgICAgICAgICBpZiAocyA9PSBlKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgfQorICAgIG91dHBvcyA9IGFzY2lpX2RlY29kZShzLCBlbmQsIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICBzICs9IG91dHBvczsKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2ggPSB1Y3MxbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIGNoID0gdWNzNGxpYl91dGY4X2RlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY2ggPCAweDgwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpY2g7Ci0gICAgICAgICAgICBzKys7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgaWYgKHMgPT0gZW5kIHx8IGNvbnN1bWVkKQorICAgICAgICAgICAgICAgIGdvdG8gRW5kOworICAgICAgICAgICAgZXJybXNnID0gInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOworICAgICAgICAgICAgd2hpbGUgKGVuZGlucG9zIDwgc2l6ZSAmJiAoc3RhcnRzW2VuZGlucG9zXSAmIDB4QzApID09IDB4ODApCisgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBzdGFydCBieXRlIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CisgICAgICAgICAgICB3aGlsZSAoZW5kaW5wb3MgPCBzaXplICYmIChzdGFydHNbZW5kaW5wb3NdICYgMHhDMCkgPT0gMHg4MCkKKyAgICAgICAgICAgICAgICBlbmRpbnBvcysrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgbiA9IHV0ZjhfY29kZV9sZW5ndGhbY2hdOwotCi0gICAgICAgIGlmIChzICsgbiA+IGUpIHsKLSAgICAgICAgICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICAgICAgZm9yIChrPTE7IChrIDwgc2l6ZS1zdGFydGlucG9zKSAmJiAoKHNba10mMHhDMCkgPT0gMHg4MCk7IGsrKykKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAobikgewotCi0gICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIHN0YXJ0IGJ5dGUiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLQotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBlcnJtc2cgPSAiaW50ZXJuYWwgZXJyb3IiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLQotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDFmKSA8PCA2KSArIChzWzFdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4ZWRceGEwXHg4MC1ceGVkXHhiZlx4YmYKLSAgICAgICAgICAgICAgIHdpbGwgcmVzdWx0IGluIHN1cnJvZ2F0ZXMgaW4gcmFuZ2UgZDgwMC1kZmZmLiBTdXJyb2dhdGVzIGFyZQotICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgotICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCi0gICAgICAgICAgICAgICAodGFibGUgMy03KSBhbmQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzYyOS50eHQgKi8KLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEUwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweEEwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RUQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OUYpKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotCi0gICAgICAgICAgICAgICAgLyogaWYgc1sxXSBmaXJzdCB0d28gYml0cyBhcmUgMSBhbmQgMCwgdGhlbiB0aGUgaW52YWxpZAotICAgICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiBieXRlIGlzIHNbMl0sIHNvIGluY3JlbWVudCBlbmRpbnBvcyBieSAxLAotICAgICAgICAgICAgICAgICAgIGlmIG5vdCwgc1sxXSBpcyBpbnZhbGlkIGFuZCBlbmRpbnBvcyBkb2Vzbid0IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICBiZSBpbmNyZW1lbnRlZC4gKi8KLSAgICAgICAgICAgICAgICBpZiAoKHNbMV0gJiAweEMwKSA9PSAweDgwKQotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcysrOwotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDBmKSA8PCAxMikgKyAoKHNbMV0gJiAweDNmKSA8PCA2KSArIChzWzJdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDdGRikgJiYgKGNoIDw9IDB4RkZGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzNdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4OTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhGNCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg4RikpIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7Ci0gICAgICAgICAgICAgICAgaWYgKChzWzFdICYgMHhDMCkgPT0gMHg4MCkgewotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAoKHNbMl0gJiAweEMwKSA9PSAweDgwKQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4NykgPDwgMTgpICsgKChzWzFdICYgMHgzZikgPDwgMTIpICsKLSAgICAgICAgICAgICAgICAgKChzWzJdICYgMHgzZikgPDwgNikgKyAoc1szXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwZmZmZikpOwotCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpY2g7Ci0jZWxzZQotICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCi0KLSAgICAgICAgICAgIC8qICB0cmFuc2xhdGUgZnJvbSAxMDAwMC4uMTBGRkZGIHRvIDAuLkZGRkYgKi8KLSAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7Ci0KLSAgICAgICAgICAgIC8qICBoaWdoIHN1cnJvZ2F0ZSA9IHRvcCAxMCBiaXRzIGFkZGVkIHRvIEQ4MDAgKi8KLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkoMHhEODAwICsgKGNoID4+IDEwKSk7Ci0KLSAgICAgICAgICAgIC8qICBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSgweERDMDAgKyAoY2ggJiAweDAzRkYpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcyArPSBuOwotICAgICAgICBjb250aW51ZTsKLQotICAgICAgdXRmOEVycm9yOgotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKLSAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CiAgICAgfQotICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgKmNvbnN1bWVkID0gcy1zdGFydHM7CiAKLSAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gdW5pY29kZS0+c3RyKSA8IDApCitFbmQ6CisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICpjb25zdW1lZCA9IHMgLSBzdGFydHM7CiAKLSAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKKworb25FcnJvcjoKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIFB5X1hERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBBU0NJSV9DSEFSX01BU0sKLQogI2lmZGVmIF9fQVBQTEVfXwogCiAvKiBTaW1wbGlmaWVkIFVURi04IGRlY29kZXIgdXNpbmcgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsCkBAIC0yNzk3LDkgKzQ4MTYsOSBAQAogd2NoYXJfdCoKIF9QeV9EZWNvZGVVVEY4X3N1cnJvZ2F0ZWVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaW50IG47CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICB3Y2hhcl90ICp1bmljb2RlLCAqcDsKKyAgICB3Y2hhcl90ICp1bmljb2RlOworICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogCiAgICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKICAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KQEAgLTI4MTIsMjc3ICs0ODMxLDEwMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFVucGFjayBVVEYtOCBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZTsKICAgICBlID0gcyArIHNpemU7CisgICAgb3V0cG9zID0gMDsKICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgICpwKysgPSAod2NoYXJfdCljaDsKLSAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgbiA9IHV0ZjhfY29kZV9sZW5ndGhbY2hdOwotICAgICAgICBpZiAocyArIG4gPiBlKSB7Ci0gICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAobikgewotICAgICAgICBjYXNlIDA6Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotCi0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODApCi0gICAgICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4MWYpIDw8IDYpICsgKHNbMV0gJiAweDNmKTsKLSAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHgwMDdGKSAmJiAoY2ggPD0gMHgwN0ZGKSk7Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAvKiBEZWNvZGluZyBVVEYtOCBzZXF1ZW5jZXMgaW4gcmFuZ2UgXHhlZFx4YTBceDgwLVx4ZWRceGJmXHhiZgotICAgICAgICAgICAgICAgd2lsbCByZXN1bHQgaW4gc3Vycm9nYXRlcyBpbiByYW5nZSBkODAwLWRmZmYuIFN1cnJvZ2F0ZXMgYXJlCi0gICAgICAgICAgICAgICBub3QgdmFsaWQgVVRGLTggc28gdGhleSBhcmUgcmVqZWN0ZWQuCi0gICAgICAgICAgICAgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy9Vbmljb2RlNS4yLjAvY2gwMy5wZGYKLSAgICAgICAgICAgICAgICh0YWJsZSAzLTcpIGFuZCBodHRwOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMzNjI5LnR4dCAqLwotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RTAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4QTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhFRCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg5RikpIHsKLQotICAgICAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDBmKSA8PCAxMikgKyAoKHNbMV0gJiAweDNmKSA8PCA2KSArIChzWzJdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDdGRikgJiYgKGNoIDw9IDB4RkZGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzNdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4OTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhGNCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg4RikpIHsKLSAgICAgICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHg3KSA8PCAxOCkgKyAoKHNbMV0gJiAweDNmKSA8PCAxMikgKwotICAgICAgICAgICAgICAgICAoKHNbMl0gJiAweDNmKSA8PCA2KSArIChzWzNdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4RkZGRikgJiYgKGNoIDw9IDB4MTBmZmZmKSk7Ci0KKyAgICAgICAgUHlfVUNTNCBjaDsKICNpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7CisgICAgICAgIGNoID0gdWNzNGxpYl91dGY4X2RlY29kZSgmcywgZSwgKFB5X1VDUzQgKil1bmljb2RlLCAmb3V0cG9zKTsKICNlbHNlCi0gICAgICAgICAgICAvKiAgY29tcHV0ZSBhbmQgYXBwZW5kIHRoZSB0d28gc3Vycm9nYXRlczogKi8KLQotICAgICAgICAgICAgLyogIHRyYW5zbGF0ZSBmcm9tIDEwMDAwLi4xMEZGRkYgdG8gMC4uRkZGRiAqLwotICAgICAgICAgICAgY2ggLT0gMHgxMDAwMDsKLQotICAgICAgICAgICAgLyogIGhpZ2ggc3Vycm9nYXRlID0gdG9wIDEwIGJpdHMgYWRkZWQgdG8gRDgwMCAqLwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KSgweEQ4MDAgKyAoY2ggPj4gMTApKTsKLQotICAgICAgICAgICAgLyogIGxvdyBzdXJyb2dhdGUgPSBib3R0b20gMTAgYml0cyBhZGRlZCB0byBEQzAwICovCi0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpKDB4REMwMCArIChjaCAmIDB4MDNGRikpOworICAgICAgICBjaCA9IHVjczJsaWJfdXRmOF9kZWNvZGUoJnMsIGUsIChQeV9VQ1MyICopdW5pY29kZSwgJm91dHBvcyk7CiAjZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2ggPiAweEZGKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAorICAgICAgICAgICAgYXNzZXJ0KDApOworI2Vsc2UKKyAgICAgICAgICAgIGFzc2VydChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpOworICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCisgICAgICAgICAgICB1bmljb2RlW291dHBvcysrXSA9ICh3Y2hhcl90KVB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAod2NoYXJfdClQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOworI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAgcyArPSBuOwotICAgICAgICBjb250aW51ZTsKLQotICAgICAgc3Vycm9nYXRlZXNjYXBlOgotICAgICAgICAqcCsrID0gMHhEQzAwICsgY2g7Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIWNoICYmIHMgPT0gZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qIHN1cnJvZ2F0ZWVzY2FwZSAqLworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAweERDMDAgKyAodW5zaWduZWQgY2hhcikqcysrOworICAgICAgICB9CiAgICAgfQotICAgICpwID0gTCdcMCc7CisgICAgdW5pY29kZVtvdXRwb3NdID0gTCdcMCc7CiAgICAgcmV0dXJuIHVuaWNvZGU7CiB9CiAKICNlbmRpZiAvKiBfX0FQUExFX18gKi8KIAotLyogQWxsb2NhdGlvbiBzdHJhdGVneTogIGlmIHRoZSBzdHJpbmcgaXMgc2hvcnQsIGNvbnZlcnQgaW50byBhIHN0YWNrIGJ1ZmZlcgorLyogUHJpbWFyeSBpbnRlcm5hbCBmdW5jdGlvbiB3aGljaCBjcmVhdGVzIHV0ZjggZW5jb2RlZCBieXRlcyBvYmplY3RzLgorCisgICBBbGxvY2F0aW9uIHN0cmF0ZWd5OiAgaWYgdGhlIHN0cmluZyBpcyBzaG9ydCwgY29udmVydCBpbnRvIGEgc3RhY2sgYnVmZmVyCiAgICBhbmQgYWxsb2NhdGUgZXhhY3RseSBhcyBtdWNoIHNwYWNlIG5lZWRlZCBhdCB0aGUgZW5kLiAgRWxzZSBhbGxvY2F0ZSB0aGUKICAgIG1heGltdW0gcG9zc2libGUgbmVlZGVkICg0IHJlc3VsdCBieXRlcyBwZXIgVW5pY29kZSBjaGFyYWN0ZXIpLCBhbmQgcmV0dXJuCiAgICB0aGUgZXhjZXNzIG1lbW9yeSBhdCB0aGUgZW5kLgogKi8KIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitfUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQogewotI2RlZmluZSBNQVhfU0hPUlRfVU5JQ0hBUlMgMzAwICAvKiBsYXJnZXN0IHNpemUgd2UnbGwgZG8gb24gdGhlIHN0YWNrICovCisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHMgb2YgbmV4dCBpbnB1dCBieXRlICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAvKiByZXN1bHQgc3RyaW5nIG9iamVjdCAqLwotICAgIGNoYXIgKnA7ICAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBmcmVlIGJ5dGUgaW4gb3V0cHV0IGJ1ZmZlciAqLwotICAgIFB5X3NzaXplX3QgbmFsbG9jYXRlZDsgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIGFsbG9jYXRlZCAqLwotICAgIFB5X3NzaXplX3Qgbm5lZWRlZDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIG5lZWRlZCAqLwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogNF07Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0KLSAgICBhc3NlcnQocyAhPSBOVUxMKTsKLSAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKLQotICAgIGlmIChzaXplIDw9IE1BWF9TSE9SVF9VTklDSEFSUykgewotICAgICAgICAvKiBXcml0ZSBpbnRvIHRoZSBzdGFjayBidWZmZXI7IG5hbGxvY2F0ZWQgY2FuJ3Qgb3ZlcmZsb3cuCi0gICAgICAgICAqIEF0IHRoZSBlbmQsIHdlJ2xsIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBoZWFwIHNwYWNlIGFzIGl0Ci0gICAgICAgICAqIHR1cm5zIG91dCB3ZSBuZWVkLgotICAgICAgICAgKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2l6ZW9mKHN0YWNrYnVmKSwgc2l6ZV90LCBpbnQpOwotICAgICAgICByZXN1bHQgPSBOVUxMOyAgIC8qIHdpbGwgYWxsb2NhdGUgYWZ0ZXIgd2UncmUgZG9uZSAqLwotICAgICAgICBwID0gc3RhY2tidWY7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBPdmVyYWxsb2NhdGUgb24gdGhlIGhlYXAsIGFuZCBnaXZlIHRoZSBleGNlc3MgYmFjayBhdCB0aGUgZW5kLiAqLwotICAgICAgICBuYWxsb2NhdGVkID0gc2l6ZSAqIDQ7Ci0gICAgICAgIGlmIChuYWxsb2NhdGVkIC8gNCAhPSBzaXplKSAgLyogb3ZlcmZsb3chICovCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIH0KLQotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgewotICAgICAgICBQeV9VQ1M0IGNoID0gc1tpKytdOwotCi0gICAgICAgIGlmIChjaCA8IDB4ODApCi0gICAgICAgICAgICAvKiBFbmNvZGUgQVNDSUkgKi8KLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7Ci0KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAweDA4MDApIHsKLSAgICAgICAgICAgIC8qIEVuY29kZSBMYXRpbi0xICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4YzAgfCAoY2ggPj4gNikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9IGVsc2UgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IGNoZWNrIGZvciBoaWdoIGFuZCBsb3cgc3Vycm9nYXRlICovCi0gICAgICAgICAgICBpZiAoY2ggPD0gMHhEQkZGICYmIGkgIT0gc2l6ZSAmJiAweERDMDAgPD0gc1tpXSAmJiBzW2ldIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIFB5X1VDUzQgY2gyID0gc1tpXTsKLSAgICAgICAgICAgICAgICAvKiBDb21iaW5lIHRoZSB0d28gc3Vycm9nYXRlcyB0byBmb3JtIGEgVUNTNCB2YWx1ZSAqLwotICAgICAgICAgICAgICAgIGNoID0gKChjaCAtIDB4RDgwMCkgPDwgMTAgfCAoY2gyIC0gMHhEQzAwKSkgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgIGkrKzsKLQotICAgICAgICAgICAgICAgIC8qIEVuY29kZSBVQ1M0IFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDEyKSAmIDB4M2YpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgazsKLSAgICAgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCi0gICAgICAgICAgICAgICAgICAgICBzLCBzaXplLCAmZXhjLCBpLTEsIGksICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmICghcmVwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKLSAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwKTsKLQotICAgICAgICAgICAgICAgIGlmIChyZXBzaXplID4gNCkgewotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChuYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplICsgNCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbmFsbG9jYXRlZCArPSByZXBzaXplIC0gNDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgb2Zmc2V0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqcHJlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAqcHJlcCsrOwotICAgICAgICAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnByZXAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXApOwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwcmVwW2tdOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDB4ODAgPD0gYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04Iiwgcywgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktMSwgaSwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKXByZXBba107Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0gZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZTAgfCAoY2ggPj4gMTIpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7Ci0gICAgICAgIH0gZWxzZSAvKiBjaCA+PSAweDEwMDAwICovIHsKLSAgICAgICAgICAgIC8qIEVuY29kZSBVQ1M0IFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhmMCB8IChjaCA+PiAxOCkpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKLSAgICB9Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotIGVycm9yOgotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgIHJldHVybiBOVUxMOwotCi0jdW5kZWYgTUFYX1NIT1JUX1VOSUNIQVJTCi19Ci0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSk7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAvKiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBBU0NJSSwgb3IgUHlVbmljb2RlX1VURjgoKSB3b3VsZCBiZSBzZXQgKi8KKyAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpOworICAgICAgICByZXR1cm4gdWNzMWxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICB9Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnYsICp1bmljb2RlOworCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB2ID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHY7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogfQogCiAvKiAtLS0gVVRGLTMyIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTMxMDcsMTQgKzQ5NTAsNyBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpbnQgcGFpcnMgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnFxOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlPYmplY3QgKnVuaWNvZGU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7CiAgICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7CkBAIC0zMTc4LDIzICs1MDE0LDEzIEBACiAgICAgICAgIGlvcmRlclszXSA9IDA7CiAgICAgfQogCi0gICAgLyogT24gbmFycm93IGJ1aWxkcyB3ZSBzcGxpdCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJNUCBpbnRvIHR3bwotICAgICAgIGNvZGVwb2ludHMgPT4gY291bnQgaG93IG11Y2ggZXh0cmEgc3BhY2Ugd2UgbmVlZC4gKi8KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZm9yIChxcSA9IHE7IHFxIDwgZTsgcXEgKz0gNCkKLSAgICAgICAgaWYgKHFxW2lvcmRlclsyXV0gIT0gMCB8fCBxcVtpb3JkZXJbM11dICE9IDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0KICAgICAvKiBUaGlzIG1pZ2h0IGJlIG9uZSB0byBtdWNoLCBiZWNhdXNlIG9mIGEgQk9NICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KChzaXplKzMpLzQrcGFpcnMpOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChzaXplKzMpLzQsIDEyNyk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMzIgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgb3V0cG9zID0gMDsKIAogICAgIHdoaWxlIChxIDwgZSkgewogICAgICAgICBQeV9VQ1M0IGNoOwpAQCAtMzIxOSwyNCArNTA0NSwxNiBAQAogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzQ7CiAgICAgICAgICAgICBnb3RvIHV0ZjMyRXJyb3I7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgICAgICAqcCsrID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgcSArPSA0OwogICAgICAgICBjb250aW51ZTsKICAgICAgIHV0ZjMyRXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjMyIiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsIChjb25zdCBjaGFyICoqKSZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAoY29uc3QgY2hhciAqKikmcSwKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTMyNDcsMTIgKzUwNjUsMTIgQEAKICAgICAgICAgKmNvbnN1bWVkID0gKGNvbnN0IGNoYXIgKilxLXN0YXJ0czsKIAogICAgIC8qIEFkanVzdCBsZW5ndGggKi8KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSB1bmljb2RlLT5zdHIpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKQEAgLTMyNjIsMTkgKzUwODAsMTYgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQorX1B5VW5pY29kZV9FbmNvZGVVVEYzMihQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGJ5dGVzaXplOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9zc2l6ZV90IGksIHBhaXJzOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlfc3NpemVfdCBuc2l6ZSwgaTsKICAgICAvKiBPZmZzZXRzIGZyb20gcCBmb3Igc3RvcmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KICNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgogICAgIGludCBpb3JkZXJbXSA9IHswLCAxLCAyLCAzfTsKQEAgLTMyOTEsMjYgKzUxMDYsMjcgQEAKICAgICAgICAgcCArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlKDApCiAKLSAgICAvKiBJbiBuYXJyb3cgYnVpbGRzIHdlIGNhbiBvdXRwdXQgc3Vycm9nYXRlIHBhaXJzIGFzIG9uZSBjb2RlcG9pbnQsCi0gICAgICAgc28gd2UgbmVlZCBsZXNzIHNwYWNlLiAqLwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBmb3IgKGkgPSBwYWlycyA9IDA7IGkgPCBzaXplLTE7IGkrKykKLSAgICAgICAgaWYgKDB4RDgwMCA8PSBzW2ldICYmIHNbaV0gPD0gMHhEQkZGICYmCi0gICAgICAgICAgICAweERDMDAgPD0gc1tpKzFdICYmIHNbaSsxXSA8PSAweERGRkYpCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0gICAgbnNpemUgPSAoc2l6ZSAtIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKSk7Ci0gICAgYnl0ZXNpemUgPSBuc2l6ZSAqIDQ7Ci0gICAgaWYgKGJ5dGVzaXplIC8gNCAhPSBuc2l6ZSkKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHIpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBuc2l6ZSA9IGxlbiArIChieXRlb3JkZXIgPT0gMCk7CisgICAgaWYgKG5zaXplID4gUFlfU1NJWkVfVF9NQVggLyA0KQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7CisgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiA0KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgIGlmIChieXRlb3JkZXIgPT0gMCkKICAgICAgICAgU1RPUkVDSEFSKDB4RkVGRik7Ci0gICAgaWYgKHNpemUgPT0gMCkKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgIGlmIChieXRlb3JkZXIgPT0gLTEpIHsKQEAgLTMzMjgsMzYgKzUxNDQsMzMgQEAKICAgICAgICAgaW9yZGVyWzNdID0gMDsKICAgICB9CiAKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VQ1M0IGNoID0gKnMrKzsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGICYmIHNpemUgPiAwKSB7Ci0gICAgICAgICAgICBQeV9VQ1M0IGNoMiA9ICpzOwotICAgICAgICAgICAgaWYgKDB4REMwMCA8PSBjaDIgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIGNoID0gKCgoY2ggJiAweDNGRik8PDEwKSB8IChjaDIgJiAweDNGRikpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICBTVE9SRUNIQVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogCiAgIGRvbmU6CiAgICAgcmV0dXJuIHY7CiAjdW5kZWYgU1RPUkVDSEFSCiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVvcmRlcikKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodG1wLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodW5pY29kZSwgTlVMTCwgMCk7CiB9CiAKIC8qIC0tLSBVVEYtMTYgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMzM3MSwyMyArNTE4NCw2IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgYnl0ZW9yZGVyLCBOVUxMKTsKIH0KIAotLyogVHdvIG1hc2tzIGZvciBmYXN0IGNoZWNraW5nIG9mIHdoZXRoZXIgYSBDICdsb25nJyBtYXkgY29udGFpbgotICAgVVRGMTYtZW5jb2RlZCBzdXJyb2dhdGUgY2hhcmFjdGVycy4gVGhpcyBpcyBhbiBlZmZpY2llbnQgaGV1cmlzdGljLAotICAgYXNzdW1pbmcgdGhhdCBub24tc3Vycm9nYXRlIGNoYXJhY3RlcnMgd2l0aCBhIGNvZGUgcG9pbnQgPj0gMHg4MDAwIGFyZQotICAgcmFyZSBpbiBtb3N0IGlucHV0LgotICAgRkFTVF9DSEFSX01BU0sgaXMgdXNlZCB3aGVuIHRoZSBpbnB1dCBpcyBpbiBuYXRpdmUgYnl0ZSBvcmRlcmluZywKLSAgIFNXQVBQRURfRkFTVF9DSEFSX01BU0sgd2hlbiB0aGUgaW5wdXQgaXMgaW4gYnl0ZXN3YXBwZWQgb3JkZXJpbmcuCi0qLwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAweDgwMDA4MDAwODAwMDgwMDBMCi0jIGRlZmluZSBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLIDB4MDA4MDAwODAwMDgwMDA4MEwKLSNlbGlmIChTSVpFT0ZfTE9ORyA9PSA0KQotIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAweDgwMDA4MDAwTAotIyBkZWZpbmUgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSyAweDAwODAwMDgwTAotI2Vsc2UKLSMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKLSNlbmRpZgotCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLApAQCAtMzM5OSwzMSArNTE5NSwxNCBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEsICplLCAqYWxpZ25lZF9lbmQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7CiAgICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCi0gICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IDA7CisgICAgaW50IG5hdGl2ZV9vcmRlcmluZzsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKLSAgICAvKiBPZmZzZXRzIGZyb20gcSBmb3IgcmV0cmlldmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIGludCBpaGkgPSAxLCBpbG8gPSAwOwotI2Vsc2UKLSAgICBpbnQgaWhpID0gMCwgaWxvID0gMTsKLSNlbmRpZgogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKLSAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMTYgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKICAgICBxID0gKHVuc2lnbmVkIGNoYXIgKilzOwogICAgIGUgPSBxICsgc2l6ZTsKIApAQCAtMzQzNCwxNzYgKzUyMTMsOTggQEAKICAgICAgICBieXRlIG9yZGVyIHNldHRpbmcgYWNjb3JkaW5nbHkuIEluIG5hdGl2ZSBtb2RlLCB0aGUgbGVhZGluZyBCT00KICAgICAgICBtYXJrIGlzIHNraXBwZWQsIGluIGFsbCBvdGhlciBtb2RlcywgaXQgaXMgY29waWVkIHRvIHRoZSBvdXRwdXQKICAgICAgICBzdHJlYW0gYXMtaXMgKGdpdmluZyBhIFpXTkJTUCBjaGFyYWN0ZXIpLiAqLwotICAgIGlmIChibyA9PSAwKSB7Ci0gICAgICAgIGlmIChzaXplID49IDIpIHsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgYm9tID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgICAgICAgICAgaWYgKGJvbSA9PSAweEZFRkYpIHsKLSAgICAgICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICAgICAgYm8gPSAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJvbSA9PSAweEZGRkUpIHsKLSAgICAgICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICAgICAgYm8gPSAxOwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGlmIChib20gPT0gMHhGRUZGKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJvbSA9PSAweEZGRkUpIHsKLSAgICAgICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICAgICAgYm8gPSAtMTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgorICAgIGlmIChibyA9PSAwICYmIHNpemUgPj0gMikgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGJvbSA9IChxWzFdIDw8IDgpIHwgcVswXTsKKyAgICAgICAgaWYgKGJvbSA9PSAweEZFRkYpIHsKKyAgICAgICAgICAgIHEgKz0gMjsKKyAgICAgICAgICAgIGJvID0gLTE7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYm9tID09IDB4RkZGRSkgeworICAgICAgICAgICAgcSArPSAyOworICAgICAgICAgICAgYm8gPSAxOworICAgICAgICB9CisgICAgICAgIGlmIChieXRlb3JkZXIpCisgICAgICAgICAgICAqYnl0ZW9yZGVyID0gYm87CiAgICAgfQogCi0gICAgaWYgKGJvID09IC0xKSB7Ci0gICAgICAgIC8qIGZvcmNlIExFICovCi0gICAgICAgIGloaSA9IDE7Ci0gICAgICAgIGlsbyA9IDA7CisgICAgaWYgKHEgPT0gZSkgeworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgPSBzaXplOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KLSAgICBlbHNlIGlmIChibyA9PSAxKSB7Ci0gICAgICAgIC8qIGZvcmNlIEJFICovCi0gICAgICAgIGloaSA9IDA7Ci0gICAgICAgIGlsbyA9IDE7Ci0gICAgfQorCiAjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KLSAgICBuYXRpdmVfb3JkZXJpbmcgPSBpbG8gPCBpaGk7CisgICAgbmF0aXZlX29yZGVyaW5nID0gYm8gPD0gMDsKICNlbHNlCi0gICAgbmF0aXZlX29yZGVyaW5nID0gaWxvID4gaWhpOworICAgIG5hdGl2ZV9vcmRlcmluZyA9IGJvID49IDA7CiAjZW5kaWYKIAotICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CisgICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKKyAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldygoZSAtIHEgKyAxKSAvIDIsIDEyNyk7CisgICAgaWYgKCF1bmljb2RlKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG91dHBvcyA9IDA7CiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaDsKLSAgICAgICAgaWYgKGUgLSBxIDwgMikgeworICAgICAgICBQeV9VQ1M0IGNoID0gMDsKKyAgICAgICAgaWYgKGUgLSBxID49IDIpIHsKKyAgICAgICAgICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgICAgIGNoID0gYXNjaWlsaWJfdXRmMTZfZGVjb2RlKCZxLCBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjaCA9IHVjczFsaWJfdXRmMTZfZGVjb2RlKCZxLCBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBjaCA9IHVjczJsaWJfdXRmMTZfZGVjb2RlKCZxLCBlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgY2ggPSB1Y3M0bGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoY2gpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgLyogcmVtYWluaW5nIGJ5dGUgYXQgdGhlIGVuZD8gKHNpemUgc2hvdWxkIGJlIGV2ZW4pICovCiAgICAgICAgICAgICBpZiAocSA9PSBlIHx8IGNvbnN1bWVkKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGdvdG8gRW5kOwogICAgICAgICAgICAgZXJybXNnID0gInRydW5jYXRlZCBkYXRhIjsKICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIHN0YXJ0czsKICAgICAgICAgICAgIGVuZGlucG9zID0gKChjb25zdCBjaGFyICopZSkgLSBzdGFydHM7Ci0gICAgICAgICAgICBvdXRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgICAgICAgICBnb3RvIHV0ZjE2RXJyb3I7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8qIFRoZSByZW1haW5pbmcgaW5wdXQgY2hhcnMgYXJlIGlnbm9yZWQgaWYgdGhlIGNhbGxiYWNrCiAgICAgICAgICAgICAgICBjaG9vc2VzIHRvIHNraXAgdGhlIGlucHV0ICovCi0gICAgICAgIH0KLSAgICAgICAgLyogRmlyc3QgY2hlY2sgZm9yIHBvc3NpYmxlIGFsaWduZWQgcmVhZCBvZiBhIEMgJ2xvbmcnLiBVbmFsaWduZWQKLSAgICAgICAgICAgcmVhZHMgYXJlIG1vcmUgZXhwZW5zaXZlLCBiZXR0ZXIgdG8gZGVmZXIgdG8gYW5vdGhlciBpdGVyYXRpb24uICovCi0gICAgICAgIGlmICghKChzaXplX3QpIHEgJiBMT05HX1BUUl9NQVNLKSkgewotICAgICAgICAgICAgLyogRmFzdCBwYXRoIGZvciBydW5zIG9mIG5vbi1zdXJyb2dhdGUgY2hhcnMuICovCi0gICAgICAgICAgICByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpfcSA9IHE7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpfcCA9IHA7Ci0gICAgICAgICAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7Ci0gICAgICAgICAgICAgICAgLyogTmF0aXZlIG9yZGVyaW5nIGlzIHNpbXBsZTogYXMgbG9uZyBhcyB0aGUgaW5wdXQgY2Fubm90Ci0gICAgICAgICAgICAgICAgICAgcG9zc2libHkgY29udGFpbiBhIHN1cnJvZ2F0ZSBjaGFyLCBkbyBhbiB1bnJvbGxlZCBjb3B5Ci0gICAgICAgICAgICAgICAgICAgb2Ygc2V2ZXJhbCAxNi1iaXQgY29kZSBwb2ludHMgdG8gdGhlIHRhcmdldCBvYmplY3QuCi0gICAgICAgICAgICAgICAgICAgVGhlIG5vbi1zdXJyb2dhdGUgY2hlY2sgaXMgZG9uZSBvbiBzZXZlcmFsIGlucHV0IGJ5dGVzCi0gICAgICAgICAgICAgICAgICAgYXQgYSB0aW1lIChhcyBtYW55IGFzIGEgQyAnbG9uZycgY2FuIGNvbnRhaW4pLiAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChfcSA8IGFsaWduZWRfZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICogKHVuc2lnbmVkIGxvbmcgKikgX3E7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhICYgRkFTVF9DSEFSX01BU0spCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAoKHVuc2lnbmVkIHNob3J0ICopIF9xKVswXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAoKHVuc2lnbmVkIHNob3J0ICopIF9xKVsxXTsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAoKHVuc2lnbmVkIHNob3J0ICopIF9xKVsyXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAoKHVuc2lnbmVkIHNob3J0ICopIF9xKVszXTsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBfcSArPSBTSVpFT0ZfTE9ORzsKLSAgICAgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkcgLyAyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIEJ5dGVzd2FwcGVkIG9yZGVyaW5nIGlzIHNpbWlsYXIsIGJ1dCB3ZSBtdXN0IGRlY29tcG9zZQotICAgICAgICAgICAgICAgICAgIHRoZSBjb3B5IGJ5dGV3aXNlLCBhbmQgdGFrZSBjYXJlIG9mIHplcm8naW5nIG91dCB0aGUKLSAgICAgICAgICAgICAgICAgICB1cHBlciBieXRlcyBpZiB0aGUgdGFyZ2V0IG9iamVjdCBpcyBpbiAzMi1iaXQgdW5pdHMKLSAgICAgICAgICAgICAgICAgICAodGhhdCBpcywgaW4gVUNTLTQgYnVpbGRzKS4gKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoX3EgPCBhbGlnbmVkX2VuZCkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSAqICh1bnNpZ25lZCBsb25nICopIF9xOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmIFNXQVBQRURfRkFTVF9DSEFSX01BU0spCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgLyogWmVybyB1cHBlciBieXRlcyBpbiBVQ1MtNCBidWlsZHMgKi8KLSNpZiAoUHlfVU5JQ09ERV9TSVpFID4gMikKLSAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAwOwotICAgICAgICAgICAgICAgICAgICBfcFsxXSA9IDA7Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgIF9wWzJdID0gMDsKLSAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAwOwotI2VuZGlmCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgLyogSXNzdWUgIzQ5MTY7IFVDUy00IGJ1aWxkcyBvbiBiaWcgZW5kaWFuIG1hY2hpbmVzIG11c3QKLSAgICAgICAgICAgICAgICAgICAgICAgZmlsbCB0aGUgdHdvIGxhc3QgYnl0ZXMgb2YgZWFjaCA0LWJ5dGUgdW5pdC4gKi8KLSNpZiAoIWRlZmluZWQoQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4pICYmIFB5X1VOSUNPREVfU0laRSA+IDIpCi0jIGRlZmluZSBPRkYgMgotI2Vsc2UKLSMgZGVmaW5lIE9GRiAwCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxXSA9IF9xWzBdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDBdID0gX3FbMV07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMSArIFB5X1VOSUNPREVfU0laRV0gPSBfcVsyXTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAwICsgUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzNdOwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDEgKyAyICogUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzRdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDAgKyAyICogUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzVdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDEgKyAzICogUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzZdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDAgKyAzICogUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzddOwotI2VuZGlmCi0jdW5kZWYgT0ZGCi0gICAgICAgICAgICAgICAgICAgIF9xICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORyAvIDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcCA9IF9wOwotICAgICAgICAgICAgcSA9IF9xOwotICAgICAgICAgICAgaWYgKGUgLSBxIDwgMikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBjaCA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107Ci0KLSAgICAgICAgcSArPSAyOwotCi0gICAgICAgIGlmIChjaCA8IDB4RDgwMCB8fCBjaCA+IDB4REZGRikgewotICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSAyIC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSAoKGNvbnN0IGNoYXIgKillKSAtIHN0YXJ0czsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBlbmNvZGluZyI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSAyIC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBVVEYtMTYgc3Vycm9nYXRlIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIDQgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLyogVVRGLTE2IGNvZGUgcGFpcjogKi8KLSAgICAgICAgaWYgKGUgLSBxIDwgMikgewotICAgICAgICAgICAgZXJybXNnID0gInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoKGNvbnN0IGNoYXIgKilxKSAtIDIpIC0gc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSAoKGNvbnN0IGNoYXIgKillKSAtIHN0YXJ0czsKLSAgICAgICAgICAgIGdvdG8gdXRmMTZFcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDIgPSAocVtpaGldIDw8IDgpIHwgcVtpbG9dOwotICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgaWYgKDB4REMwMCA8PSBjaDIgJiYgY2gyIDw9IDB4REZGRikgewotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAqcCsrID0gY2g7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGNoMjsKLSNlbHNlCi0gICAgICAgICAgICAgICAgKnArKyA9ICgoKGNoICYgMHgzRkYpPDwxMCkgfCAoY2gyICYgMHgzRkYpKSArIDB4MTAwMDA7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIFVURi0xNiBzdXJyb2dhdGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKChjb25zdCBjaGFyICopcSktNCktc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysyOwotICAgICAgICAgICAgICAgIGdvdG8gdXRmMTZFcnJvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB9Ci0gICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIGVuY29kaW5nIjsKLSAgICAgICAgc3RhcnRpbnBvcyA9ICgoKGNvbnN0IGNoYXIgKilxKS0yKS1zdGFydHM7Ci0gICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysyOwotICAgICAgICAvKiBGYWxsIHRocm91Z2ggdG8gcmVwb3J0IHRoZSBlcnJvciAqLwotCi0gICAgICB1dGYxNkVycm9yOgotICAgICAgICBvdXRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsCiAgICAgICAgICAgICAgICAgJmVycm9ySGFuZGxlciwKQEAgLTM2MTUsMjcgKzUzMTYsMjEgQEAKICAgICAgICAgICAgICAgICAmZXhjLAogICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICoqKSZxLAogICAgICAgICAgICAgICAgICZ1bmljb2RlLAotICAgICAgICAgICAgICAgICZvdXRwb3MsCi0gICAgICAgICAgICAgICAgJnApKQorICAgICAgICAgICAgICAgICZvdXRwb3MpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAvKiBVcGRhdGUgZGF0YSBiZWNhdXNlIHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyIG1pZ2h0IGhhdmUKLSAgICAgICAgICAgY2hhbmdlZCB0aGUgaW5wdXQgb2JqZWN0LiAqLwotICAgICAgICBhbGlnbmVkX2VuZCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOwogICAgIH0KIAotICAgIGlmIChieXRlb3JkZXIpCi0gICAgICAgICpieXRlb3JkZXIgPSBibzsKLQorRW5kOgogICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgKmNvbnN1bWVkID0gKGNvbnN0IGNoYXIgKilxLXN0YXJ0czsKIAogICAgIC8qIEFkanVzdCBsZW5ndGggKi8KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSB1bmljb2RlLT5zdHIpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKQEAgLTM2NDQsOCArNTMzOSw3NyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0jdW5kZWYgRkFTVF9DSEFSX01BU0sKLSN1bmRlZiBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0VuY29kZVVURjE2KFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVvcmRlcikKK3sKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgY29uc3Qgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqdjsKKyAgICB1bnNpZ25lZCBzaG9ydCAqb3V0OworICAgIFB5X3NzaXplX3QgYnl0ZXNpemU7CisgICAgUHlfc3NpemVfdCBwYWlyczsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyID49IDA7CisjZWxzZQorICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPD0gMDsKKyNlbmRpZgorCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3RyKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworCisgICAgcGFpcnMgPSAwOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgKmluID0gKGNvbnN0IFB5X1VDUzQgKilkYXRhOworICAgICAgICBjb25zdCBQeV9VQ1M0ICplbmQgPSBpbiArIGxlbjsKKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKQorICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApCisgICAgICAgICAgICAgICAgcGFpcnMrKzsKKyAgICB9CisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMiAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgYnl0ZXNpemUgPSAobGVuICsgcGFpcnMgKyAoYnl0ZW9yZGVyID09IDApKSAqIDI7CisgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNpemUpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyAyLWJ5dGVzIGFsaWduZWQgKi8KKyAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDIpKTsKKyAgICBvdXQgPSAodW5zaWduZWQgc2hvcnQgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICBpZiAoYnl0ZW9yZGVyID09IDApCisgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsKKyAgICAgICAgdWNzMWxpYl91dGYxNl9lbmNvZGUob3V0LCAoY29uc3QgUHlfVUNTMSAqKWRhdGEsIGxlbiwgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsKKyAgICAgICAgdWNzMmxpYl91dGYxNl9lbmNvZGUob3V0LCAoY29uc3QgUHlfVUNTMiAqKWRhdGEsIGxlbiwgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IHsKKyAgICAgICAgdWNzNGxpYl91dGYxNl9lbmNvZGUob3V0LCAoY29uc3QgUHlfVUNTNCAqKWRhdGEsIGxlbiwgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CisKKyAgZG9uZToKKyAgICByZXR1cm4gdjsKK30KIAogUHlPYmplY3QgKgogUHlVbmljb2RlX0VuY29kZVVURjE2KGNvbnN0IFB5X1VOSUNPREUgKnMsCkBAIC0zNjUzLDEzNiArNTQxNywxNDEgQEAKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVvcmRlcikKIHsKLSAgICBQeU9iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGJ5dGVzaXplOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIFB5X3NzaXplX3QgaSwgcGFpcnM7Ci0jZWxzZQotICAgIGNvbnN0IGludCBwYWlycyA9IDA7Ci0jZW5kaWYKLSAgICAvKiBPZmZzZXRzIGZyb20gcCBmb3Igc3RvcmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIGludCBpaGkgPSAxLCBpbG8gPSAwOwotI2Vsc2UKLSAgICBpbnQgaWhpID0gMCwgaWxvID0gMTsKLSNlbmRpZgotCi0jZGVmaW5lIFNUT1JFQ0hBUihDSCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHBbaWhpXSA9ICgoQ0gpID4+IDgpICYgMHhmZjsgICAgICAgICAgICBcCi0gICAgICAgIHBbaWxvXSA9IChDSCkgJiAweGZmOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHAgKz0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZm9yIChpID0gcGFpcnMgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAgICBpZiAoc1tpXSA+PSAweDEwMDAwKQotICAgICAgICAgICAgcGFpcnMrKzsKLSNlbmRpZgotICAgIC8qIDIgKiAoc2l6ZSArIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKSkgKi8KLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIHx8Ci0gICAgICAgIHNpemUgPiBQWV9TU0laRV9UX01BWCAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgbnNpemUgPSBzaXplICsgcGFpcnMgKyAoYnl0ZW9yZGVyID09IDApOwotICAgIGJ5dGVzaXplID0gbnNpemUgKiAyOwotICAgIGlmIChieXRlc2l6ZSAvIDIgIT0gbnNpemUpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcodik7Ci0gICAgaWYgKGJ5dGVvcmRlciA9PSAwKQotICAgICAgICBTVE9SRUNIQVIoMHhGRUZGKTsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBpZiAoYnl0ZW9yZGVyID09IC0xKSB7Ci0gICAgICAgIC8qIGZvcmNlIExFICovCi0gICAgICAgIGloaSA9IDE7Ci0gICAgICAgIGlsbyA9IDA7Ci0gICAgfQotICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA9PSAxKSB7Ci0gICAgICAgIC8qIGZvcmNlIEJFICovCi0gICAgICAgIGloaSA9IDA7Ci0gICAgICAgIGlsbyA9IDE7Ci0gICAgfQotCi0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7Ci0gICAgICAgIFB5X1VOSUNPREUgY2gyID0gMDsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgIGNoMiA9IDB4REMwMCB8ICgoY2gtMHgxMDAwMCkgJiAweDNGRik7Ci0gICAgICAgICAgICBjaCAgPSAweEQ4MDAgfCAoKGNoLTB4MTAwMDApID4+IDEwKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIFNUT1JFQ0hBUihjaCk7Ci0gICAgICAgIGlmIChjaDIpCi0gICAgICAgICAgICBTVE9SRUNIQVIoY2gyKTsKLSAgICB9Ci0KLSAgZG9uZToKLSAgICByZXR1cm4gdjsKLSN1bmRlZiBTVE9SRUNIQVIKKyAgICByZXN1bHQgPSBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRtcCwgZXJyb3JzLCBieXRlb3JkZXIpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VURjE2U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHVuaWNvZGUsIE5VTEwsIDApOwogfQogCiAvKiAtLS0gVW5pY29kZSBFc2NhcGUgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyogSGVscGVyIGZ1bmN0aW9uIGZvciBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSwgZGV0ZXJtaW5lcworICAgaWYgYWxsIHRoZSBlc2NhcGVzIGluIHRoZSBzdHJpbmcgbWFrZSBpdCBzdGlsbCBhIHZhbGlkIEFTQ0lJIHN0cmluZy4KKyAgIFJldHVybnMgLTEgaWYgYW55IGVzY2FwZXMgd2VyZSBmb3VuZCB3aGljaCBjYXVzZSB0aGUgc3RyaW5nIHRvCisgICBwb3Agb3V0IG9mIEFTQ0lJIHJhbmdlLiAgT3RoZXJ3aXNlIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUKKyAgIHJlcXVpcmVkIGJ1ZmZlciB0byBob2xkIHRoZSBzdHJpbmcuCisgICAqLworc3RhdGljIFB5X3NzaXplX3QKK2xlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopczsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbmQgPSBwICsgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IDA7CisKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGZvciAoOyBwIDwgZW5kOyArK3ApIHsKKyAgICAgICAgaWYgKCpwID4gMTI3KSB7CisgICAgICAgICAgICAvKiBOb24tQVNDSUkgKi8KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgqcCAhPSAnXFwnKSB7CisgICAgICAgICAgICAvKiBOb3JtYWwgY2hhcmFjdGVyICovCisgICAgICAgICAgICArK2xlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEJhY2tzbGFzaC1lc2NhcGUsIGNoZWNrIG5leHQgY2hhciAqLworICAgICAgICAgICAgKytwOworICAgICAgICAgICAgLyogRXNjYXBlIHNlcXVlbmNlIHJlYWNoZXMgdGlsbCBlbmQgb2Ygc3RyaW5nIG9yCisgICAgICAgICAgICAgICBub24tQVNDSUkgZm9sbG93LXVwLiAqLworICAgICAgICAgICAgaWYgKHAgPj0gZW5kIHx8ICpwID4gMTI3KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgICAgICAvKiBiYWNrc2xhc2ggKyBcbiByZXN1bHQgaW4gemVybyBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1wnJzogY2FzZSAnXCInOgorICAgICAgICAgICAgY2FzZSAnYic6IGNhc2UgJ2YnOiBjYXNlICd0JzoKKyAgICAgICAgICAgIGNhc2UgJ24nOiBjYXNlICdyJzogY2FzZSAndic6IGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgICsrbGVuZ3RoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CisgICAgICAgICAgICBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzoKKyAgICAgICAgICAgIGNhc2UgJ3gnOiBjYXNlICd1JzogY2FzZSAnVSc6IGNhc2UgJ04nOgorICAgICAgICAgICAgICAgIC8qIHRoZXNlIGRvIG5vdCBndWFyYW50ZWUgQVNDSUkgY2hhcmFjdGVycyAqLworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgLyogY291bnQgdGhlIGJhY2tzbGFzaCArIHRoZSBvdGhlciBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgICAgICBsZW5ndGggKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbGVuZ3RoOworfQorCiBzdGF0aWMgX1B5VW5pY29kZV9OYW1lX0NBUEkgKnVjbmhhc2hfQ0FQSSA9IE5VTEw7CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgaW50IGk7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgaW50IGo7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNoYXIqIG1lc3NhZ2U7CiAgICAgUHlfVUNTNCBjaHIgPSAweGZmZmZmZmZmOyAvKiBpbiBjYXNlICdnZXRjb2RlJyBtZXNzZXMgdXAgKi8KICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwotICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCi0gICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCi0gICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCi0gICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLwotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuID0gbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKHMsIHNpemUpOworCisgICAgLyogQWZ0ZXIgbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKCkgdGhlcmUgYXJlIHR3byBhbHRlcm5hdGl2ZXMsCisgICAgICAgZWl0aGVyIHRoZSBzdHJpbmcgaXMgcHVyZSBBU0NJSSB3aXRoIG5hbWVkIGVzY2FwZXMgbGlrZSBcbiwgZXRjLgorICAgICAgIGFuZCB3ZSBkZXRlcm1pbmVkIGl0J3MgZXhhY3Qgc2l6ZSAoY29tbW9uIGNhc2UpCisgICAgICAgb3IgaXQgY29udGFpbnMgXHgsIFx1LCAuLi4gZXNjYXBlIHNlcXVlbmNlcy4gIHRoZW4gd2UgY3JlYXRlIGEKKyAgICAgICBsZWdhY3kgd2NoYXIgc3RyaW5nIGFuZCByZXNpemUgaXQgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLiAqLworICAgIGlmIChsZW4gPj0gMCkgeworICAgICAgICB2ID0gUHlVbmljb2RlX05ldyhsZW4sIDEyNyk7CisgICAgICAgIGlmICghdikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHYpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCisgICAgICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgorICAgICAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKKyAgICAgICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLworICAgICAgICB2ID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgICAgICBpZiAoIXYpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGxlbiA9IHNpemU7CisgICAgfQorCiAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0KLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIHJldHVybiB2OworICAgIGkgPSAwOwogICAgIGVuZCA9IHMgKyBzaXplOwogCiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBQeV9VTklDT0RFIHg7CisgICAgICAgIFB5X1VDUzQgeDsKICAgICAgICAgaW50IGRpZ2l0czsKIAorICAgICAgICAvKiBUaGUgb25seSBjYXNlIGluIHdoaWNoIGkgPT0gYXNjaWlfbGVuZ3RoIGlzIGEgYmFja3NsYXNoCisgICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgbmV3bGluZS4gKi8KKyAgICAgICAgYXNzZXJ0KGkgPD0gbGVuKTsKKwogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZpLCAodW5zaWduZWQgY2hhcikgKnMrKykgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTM3OTIsMjAgKzU1NjEsMzQgQEAKICAgICAgICAgYyA9ICpzKys7CiAgICAgICAgIGlmIChzID4gZW5kKQogICAgICAgICAgICAgYyA9ICdcMCc7IC8qIEludmFsaWQgYWZ0ZXIgXCAqLworCisgICAgICAgIC8qIFRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggaSA9PSBhc2NpaV9sZW5ndGggaXMgYSBiYWNrc2xhc2gKKyAgICAgICAgICAgZm9sbG93ZWQgYnkgYSBuZXdsaW5lLiAqLworICAgICAgICBhc3NlcnQoaSA8IGxlbiB8fCAoaSA9PSBsZW4gJiYgYyA9PSAnXG4nKSk7CisKICAgICAgICAgc3dpdGNoIChjKSB7CiAKICAgICAgICAgICAgIC8qIFx4IGVzY2FwZXMgKi8KKyNkZWZpbmUgV1JJVEVDSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJmksIGNoKSA8IDApICAgIFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfXdoaWxlKDApCisKICAgICAgICAgY2FzZSAnXG4nOiBicmVhazsKLSAgICAgICAgY2FzZSAnXFwnOiAqcCsrID0gJ1xcJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wnJzogKnArKyA9ICdcJyc7IGJyZWFrOwotICAgICAgICBjYXNlICdcIic6ICpwKysgPSAnXCInOyBicmVhazsKLSAgICAgICAgY2FzZSAnYic6ICpwKysgPSAnXGInOyBicmVhazsKLSAgICAgICAgY2FzZSAnZic6ICpwKysgPSAnXDAxNCc7IGJyZWFrOyAvKiBGRiAqLwotICAgICAgICBjYXNlICd0JzogKnArKyA9ICdcdCc7IGJyZWFrOwotICAgICAgICBjYXNlICduJzogKnArKyA9ICdcbic7IGJyZWFrOwotICAgICAgICBjYXNlICdyJzogKnArKyA9ICdccic7IGJyZWFrOwotICAgICAgICBjYXNlICd2JzogKnArKyA9ICdcMDEzJzsgYnJlYWs7IC8qIFZUICovCi0gICAgICAgIGNhc2UgJ2EnOiAqcCsrID0gJ1wwMDcnOyBicmVhazsgLyogQkVMLCBub3QgY2xhc3NpYyBDICovCisgICAgICAgIGNhc2UgJ1xcJzogV1JJVEVDSEFSKCdcXCcpOyBicmVhazsKKyAgICAgICAgY2FzZSAnXCcnOiBXUklURUNIQVIoJ1wnJyk7IGJyZWFrOworICAgICAgICBjYXNlICdcIic6IFdSSVRFQ0hBUignXCInKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2InOiBXUklURUNIQVIoJ1xiJyk7IGJyZWFrOworICAgICAgICAvKiBGRiAqLworICAgICAgICBjYXNlICdmJzogV1JJVEVDSEFSKCdcMDE0Jyk7IGJyZWFrOworICAgICAgICBjYXNlICd0JzogV1JJVEVDSEFSKCdcdCcpOyBicmVhazsKKyAgICAgICAgY2FzZSAnbic6IFdSSVRFQ0hBUignXG4nKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ3InOiBXUklURUNIQVIoJ1xyJyk7IGJyZWFrOworICAgICAgICAvKiBWVCAqLworICAgICAgICBjYXNlICd2JzogV1JJVEVDSEFSKCdcMDEzJyk7IGJyZWFrOworICAgICAgICAvKiBCRUwsIG5vdCBjbGFzc2ljIEMgKi8KKyAgICAgICAgY2FzZSAnYSc6IFdSSVRFQ0hBUignXDAwNycpOyBicmVhazsKIAogICAgICAgICAgICAgLyogXE9PTyAob2N0YWwpIGVzY2FwZXMgKi8KICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CkBAIC0zODE2LDcgKzU1OTksNyBAQAogICAgICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmICcwJyA8PSAqcyAmJiAqcyA8PSAnNycpCiAgICAgICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnArKyA9IHg7CisgICAgICAgICAgICBXUklURUNIQVIoeCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgLyogaGV4IGVzY2FwZXMgKi8KQEAgLTM4MzgsMjcgKzU2MjEsMjcgQEAKICAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcVVhYWFhYWFhYIGVzY2FwZSI7CiAgICAgICAgIGhleGVzY2FwZToKICAgICAgICAgICAgIGNociA9IDA7Ci0gICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgaWYgKHMrZGlnaXRzPmVuZCkgewogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc2l6ZTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsICJlbmQgb2Ygc3RyaW5nIGluIGVzY2FwZSBzZXF1ZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgZ290byBuZXh0Qnl0ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkaWdpdHM7ICsraSkgewotICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikgc1tpXTsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkaWdpdHM7ICsraikgeworICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikgc1tqXTsKICAgICAgICAgICAgICAgICBpZiAoIVB5X0lTWERJR0lUKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVuZGlucG9zID0gKHMraSsxKS1zdGFydHM7CisgICAgICAgICAgICAgICAgICAgIGVuZGlucG9zID0gKHMraisxKS1zdGFydHM7CiAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNociA9IChjaHI8PDQpICYgfjB4RjsKQEAgLTM4NjksMzQgKzU2NTIsMjIgQEAKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNociArPSAxMCArIGMgLSAnQSc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzICs9IGk7CisgICAgICAgICAgICBzICs9IGo7CiAgICAgICAgICAgICBpZiAoY2hyID09IDB4ZmZmZmZmZmYgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICAvKiBfZGVjb2RpbmdfZXJyb3Igd2lsbCBoYXZlIGFscmVhZHkgd3JpdHRlbiBpbnRvIHRoZQogICAgICAgICAgICAgICAgICAgIHRhcmdldCBidWZmZXIuICovCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHN0b3JlOgogICAgICAgICAgICAgLyogd2hlbiB3ZSBnZXQgaGVyZSwgY2hyIGlzIGEgMzItYml0IHVuaWNvZGUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBpZiAoY2hyIDw9IDB4ZmZmZikKLSAgICAgICAgICAgICAgICAvKiBVQ1MtMiBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpIGNocjsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNociA8PSAweDEwZmZmZikgewotICAgICAgICAgICAgICAgIC8qIFVDUy00IGNoYXJhY3Rlci4gRWl0aGVyIHN0b3JlIGRpcmVjdGx5LCBvciBhcwotICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSBwYWlyLiAqLwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICpwKysgPSBjaHI7Ci0jZWxzZQotICAgICAgICAgICAgICAgIGNociAtPSAweDEwMDAwTDsKLSAgICAgICAgICAgICAgICAqcCsrID0gMHhEODAwICsgKFB5X1VOSUNPREUpIChjaHIgPj4gMTApOwotICAgICAgICAgICAgICAgICpwKysgPSAweERDMDAgKyAoUHlfVU5JQ09ERSkgKGNociAmIDB4MDNGRik7Ci0jZW5kaWYKKyAgICAgICAgICAgIGlmIChjaHIgPD0gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBXUklURUNIQVIoY2hyKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgImlsbGVnYWwgVW5pY29kZSBjaGFyYWN0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zOTA2LDcgKzU2NzcsOCBAQAogICAgICAgICAgICAgbWVzc2FnZSA9ICJtYWxmb3JtZWQgXFxOIGNoYXJhY3RlciBlc2NhcGUiOwogICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgLyogbG9hZCB0aGUgdW5pY29kZSBkYXRhIG1vZHVsZSAqLwotICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSSA9IChfUHlVbmljb2RlX05hbWVfQ0FQSSAqKVB5Q2Fwc3VsZV9JbXBvcnQoUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOworICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSSA9IChfUHlVbmljb2RlX05hbWVfQ0FQSSAqKVB5Q2Fwc3VsZV9JbXBvcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVEYXRhX0NBUFNVTEVfTkFNRSwgMSk7CiAgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIHVjbmhhc2hFcnJvcjsKICAgICAgICAgICAgIH0KQEAgLTM5MTksMTcgKzU2OTEsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgLyogZm91bmQgYSBuYW1lLiAgbG9vayBpdCB1cCBpbiB0aGUgdW5pY29kZSBkYXRhYmFzZSAqLwogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gInVua25vd24gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZSI7CiAgICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCkocy1zdGFydC0xKSwgJmNocikpCisgICAgICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpKHMtc3RhcnQtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNociwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0b3JlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTM5MzgsMjggKzU3MTAsMjkgQEAKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOwogICAgICAgICAgICAgICAgIHMtLTsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKXNbLTFdOworICAgICAgICAgICAgICAgIFdSSVRFQ0hBUignXFwnKTsKKyAgICAgICAgICAgICAgICBXUklURUNIQVIoc1stMV0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgIG5leHRCeXRlOgogICAgICAgICA7CiAgICAgfQotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCisjdW5kZWYgV1JJVEVDSEFSCisKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIGkpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIHVjbmhhc2hFcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoCkBAIC0zOTg1LDcwICs1NzU4LDU2IEBACiAKICovCiAKLVB5X0xPQ0FMX0lOTElORShjb25zdCBQeV9VTklDT0RFICopIGZpbmRjaGFyKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICAvKiBsaWtlIHdjc2NociwgYnV0IGRvZXNuJ3Qgc3RvcCBhdCBOVUxMIGNoYXJhY3RlcnMgKi8KLQotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIGlmICgqcyA9PSBjaCkKLSAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICBzKys7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7Ci0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKLXsKKyAgICBQeV9zc2l6ZV90IGksIGxlbjsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBleHBhbmRzaXplID0gMDsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDEwOwotI2Vsc2UKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSA2OwotI2VuZGlmCi0KLSAgICAvKiBYWFgobm5vcndpdHopOiByYXRoZXIgdGhhbiBvdmVyLWFsbG9jYXRpbmcsIGl0IHdvdWxkIGJlCi0gICAgICAgYmV0dGVyIHRvIGNob29zZSBhIGRpZmZlcmVudCBzY2hlbWUuICBQZXJoYXBzIHNjYW4gdGhlCi0gICAgICAgZmlyc3QgTi1jaGFycyBvZiB0aGUgc3RyaW5nIGFuZCBhbGxvY2F0ZSBiYXNlZCBvbiB0aGF0IHNpemUuCi0gICAgKi8KLSAgICAvKiBJbml0aWFsIGFsbG9jYXRpb24gaXMgYmFzZWQgb24gdGhlIGxvbmdlc3QtcG9zc2libGUgdW5pY2hyCisgICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIGNoYXJhY3RlcgogICAgICAgIGVzY2FwZS4KIAotICAgICAgIEluIHdpZGUgKFVURi0zMikgYnVpbGRzICdcVTAweHh4eHh4JyBpcyAxMCBjaGFycyBwZXIgc291cmNlCi0gICAgICAgdW5pY2hyLCBzbyBpbiB0aGlzIGNhc2UgaXQncyB0aGUgbG9uZ2VzdCB1bmljaHIgZXNjYXBlLiBJbgotICAgICAgIG5hcnJvdyAoVVRGLTE2KSBidWlsZHMgdGhpcyBpcyBmaXZlIGNoYXJzIHBlciBzb3VyY2UgdW5pY2hyCi0gICAgICAgc2luY2UgdGhlcmUgYXJlIHR3byB1bmljaHJzIGluIHRoZSBzdXJyb2dhdGUgcGFpciwgc28gaW4gbmFycm93Ci0gICAgICAgKFVURi0xNikgYnVpbGRzIGl0J3Mgbm90IHRoZSBsb25nZXN0IHVuaWNociBlc2NhcGUuCi0KLSAgICAgICBJbiB3aWRlIG9yIG5hcnJvdyBidWlsZHMgJ1x1eHh4eCcgaXMgNiBjaGFycyBwZXIgc291cmNlIHVuaWNociwKLSAgICAgICBzbyBpbiB0aGUgbmFycm93IChVVEYtMTYpIGJ1aWxkIGNhc2UgaXQncyB0aGUgbG9uZ2VzdCB1bmljaHIKLSAgICAgICBlc2NhcGUuCisgICAgICAgRm9yIFVDUzEgc3RyaW5ncyBpdCdzICdceHh4JywgNCBieXRlcyBwZXIgc291cmNlIGNoYXJhY3Rlci4KKyAgICAgICBGb3IgVUNTMiBzdHJpbmdzIGl0J3MgJ1x1eHh4eCcsIDYgYnl0ZXMgcGVyIHNvdXJjZSBjaGFyYWN0ZXIuCisgICAgICAgRm9yIFVDUzQgc3RyaW5ncyBpdCdzICdcVTAweHh4eHh4JywgMTAgYnl0ZXMgcGVyIHNvdXJjZSBjaGFyYWN0ZXIuCiAgICAgKi8KIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDQ7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA2OyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiBleHBhbmRzaXplID0gMTA7IGJyZWFrOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCisgICAgaWYgKGxlbiA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKnNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGV4cGFuZHNpemUqbGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKIAotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgLyogRXNjYXBlIGJhY2tzbGFzaGVzICovCiAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CkBAIC00MDU3LDU3ICs1ODE2LDMwIEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0jZWxzZQotICAgICAgICAvKiBNYXAgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMjsKLSAgICAgICAgICAgIFB5X1VDUzQgdWNzOwotCi0gICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgaWYgKGNoMiA+PSAweERDMDAgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoOiBpc29sYXRlZCBzdXJyb2dhdGVzIGFyZSBjb3BpZWQgYXMtaXMgKi8KLSAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgIHNpemUrKzsKLSAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAyNTYpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCkBAIC00MTI4LDggKzU4NjAsOCBAQAogICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA+PSAweDdGKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwogICAgICAgICB9CiAKICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KQEAgLTQxNDMsMzAgKzU4NzUsMzEgQEAKICAgICByZXR1cm4gcmVwcjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpzOwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHMgPSBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpKTsKLSAgICByZXR1cm4gczsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogLS0tIFJhdyBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNvbnN0IGNoYXIgKmJzOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwpAQCAtNDE3NiwxMiArNTkwOSwxMiBAQAogICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCiAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuIChCdXQgZGVjb2RpbmcgZXJyb3IKICAgICAgICBoYW5kbGVyIG1pZ2h0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcpICovCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgb3V0cG9zID0gMDsKICAgICBlbmQgPSBzICsgc2l6ZTsKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CkBAIC00MTkxLDcgKzU5MjQsOCBAQAogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCAodW5zaWduZWQgY2hhcikqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwpAQCAtNDIwMiwxOSArNTkzNiwxOSBAQAogICAgICAgICBmb3IgKDtzIDwgZW5kOykgewogICAgICAgICAgICAgaWYgKCpzICE9ICdcXCcpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsICh1bnNpZ25lZCBjaGFyKSpzKyspIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgocyAtIGJzKSAmIDEpID09IDAgfHwKICAgICAgICAgICAgIHMgPj0gZW5kIHx8CiAgICAgICAgICAgICAoKnMgIT0gJ3UnICYmICpzICE9ICdVJykpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHAtLTsKKyAgICAgICAgb3V0cG9zLS07CiAgICAgICAgIGNvdW50ID0gKnM9PSd1JyA/IDQgOiA4OwogICAgICAgICBzKys7CiAKICAgICAgICAgLyogXHVYWFhYIHdpdGggNCBoZXggZGlnaXRzLCBcVXh4eHh4eHh4IHdpdGggOCAqLwotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICBmb3IgKHggPSAwLCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsrcykgewogICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewpAQCAtNDIyMyw3ICs1OTU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgInRydW5jYXRlZCBcXHVYWFhYIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7CiAgICAgICAgICAgICB9CkBAIC00MjM1LDM3ICs1OTY5LDI2IEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHggPD0gMHhmZmZmKQotICAgICAgICAgICAgLyogVUNTLTIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpIHg7Ci0gICAgICAgIGVsc2UgaWYgKHggPD0gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgIC8qIFVDUy00IGNoYXJhY3Rlci4gRWl0aGVyIHN0b3JlIGRpcmVjdGx5LCBvciBhcwotICAgICAgICAgICAgICAgc3Vycm9nYXRlIHBhaXIuICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpIHg7Ci0jZWxzZQotICAgICAgICAgICAgeCAtPSAweDEwMDAwTDsKLSAgICAgICAgICAgICpwKysgPSAweEQ4MDAgKyAoUHlfVU5JQ09ERSkgKHggPj4gMTApOwotICAgICAgICAgICAgKnArKyA9IDB4REMwMCArIChQeV9VTklDT0RFKSAoeCAmIDB4MDNGRik7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHggPD0gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIHgpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQogICAgICAgbmV4dEJ5dGU6CiAgICAgICAgIDsKICAgICB9Ci0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNDI3NCwxNDQgKzU5OTcsMTM5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwogICAgIGNoYXIgKnE7CisgICAgUHlfc3NpemVfdCBleHBhbmRzaXplLCBwb3M7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDEwOwotI2Vsc2UKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSA2OwotI2VuZGlmCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKKyAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCisgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKIAotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCi0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOworICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBsZW4pOwogICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gcmVwcjsKIAogICAgIHAgPSBxID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBsZW47IHBvcysrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSNlbHNlCi0gICAgICAgICAgICAvKiBNYXAgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPCAweERDMDApIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoMjsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IHVjczsKLQotICAgICAgICAgICAgICAgIGNoMiA9ICpzKys7Ci0gICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgICAgIGlmIChjaDIgPj0gMHhEQzAwICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgdWNzID0gKCgoY2ggJiAweDAzRkYpIDw8IDEwKSB8IChjaDIgJiAweDAzRkYpKSArIDB4MDAwMTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbdWNzICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaDogaXNvbGF0ZWQgc3Vycm9nYXRlcyBhcmUgY29waWVkIGFzLWlzICovCi0gICAgICAgICAgICAgICAgcy0tOwotICAgICAgICAgICAgICAgIHNpemUrKzsKLSAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDI1NikgeworICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBxOwogCi0gICAgYXNzZXJ0KHNpemUgPiAwKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCisgICAgYXNzZXJ0KHAgPiBxKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gcSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gcmVwcjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpzOwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHMgPSBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpKTsKLQotICAgIHJldHVybiBzOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiAtLS0gVW5pY29kZSBJbnRlcm5hbCBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVJbnRlcm5hbChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVJbnRlcm5hbChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNvbnN0IGNoYXIgKnJlYXNvbjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIFB5X1VOSUNPREUgdW5pbWF4ID0gUHlVbmljb2RlX0dldE1heCgpOwotI2VuZGlmCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgIHYgPSBfUHlVbmljb2RlX05ldygoc2l6ZStQeV9VTklDT0RFX1NJWkUtMSkvIFB5X1VOSUNPREVfU0laRSk7CisgICAgdiA9IFB5VW5pY29kZV9OZXcoKHNpemUrUHlfVU5JQ09ERV9TSVpFLTEpLyBQeV9VTklDT0RFX1NJWkUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZSgoUHlPYmplY3QgKil2KSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpID09IDApCisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICBtZW1jcHkocCwgcywgc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgUHlfVU5JQ09ERSB1Y2g7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIC8qIFdlIGNvcHkgdGhlIHJhdyByZXByZXNlbnRhdGlvbiBvbmUgYnl0ZSBhdCBhIHRpbWUgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgcG9pbnRlciBtYXkgYmUgdW5hbGlnbmVkIChzZWUgdGVzdF9jb2RlY2NhbGxiYWNrcykuICovCisgICAgICAgICgoY2hhciAqKSAmdWNoKVswXSA9IHNbMF07CisgICAgICAgICgoY2hhciAqKSAmdWNoKVsxXSA9IHNbMV07CisjaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgICAgICgoY2hhciAqKSAmdWNoKVsyXSA9IHNbMl07CisgICAgICAgICgoY2hhciAqKSAmdWNoKVszXSA9IHNbM107CisjZW5kaWYKKyAgICAgICAgY2ggPSB1Y2g7CisKICAgICAgICAgLyogV2UgaGF2ZSB0byBzYW5pdHkgY2hlY2sgdGhlIHJhdyBkYXRhLCBvdGhlcndpc2UgZG9vbSBsb29tcyBmb3IKICAgICAgICAgICAgc29tZSBtYWxmb3JtZWQgVUNTLTQgZGF0YS4gKi8KICAgICAgICAgaWYgKAogI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnAgPiB1bmltYXggfHwgKnAgPCAwIHx8CisgICAgICAgICAgICBjaCA+IDB4MTBmZmZmIHx8CiAjZW5kaWYKICAgICAgICAgICAgIGVuZC1zIDwgUHlfVU5JQ09ERV9TSVpFCiAgICAgICAgICAgICApCkBAIC00NDI1LDI2ICs2MTQzLDM5IEBACiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzIC0gc3RhcnRzICsgUHlfVU5JQ09ERV9TSVpFOwogICAgICAgICAgICAgICAgIHJlYXNvbiA9ICJpbGxlZ2FsIGNvZGUgcG9pbnQgKD4gMHgxMEZGRkYpIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIsIHJlYXNvbiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcyArPSBQeV9VTklDT0RFX1NJWkU7CisjaWZuZGVmIFB5X1VOSUNPREVfV0lERQorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgJiYgcyA8IGVuZCkKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVU5JQ09ERSB1Y2gyOworICAgICAgICAgICAgKChjaGFyICopICZ1Y2gyKVswXSA9IHNbMF07CisgICAgICAgICAgICAoKGNoYXIgKikgJnVjaDIpWzFdID0gc1sxXTsKKyAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUodWNoMikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2ggPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyh1Y2gsIHVjaDIpOworICAgICAgICAgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgcyArPSBQeV9VTklDT0RFX1NJWkU7Ci0gICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNDQ1NSw1NyArNjE4NiwyNyBAQAogCiAvKiAtLS0gTGF0aW4tMSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgY29uc3QgY2hhciAqZSwgKnVucm9sbGVkX2VuZDsKLQogICAgIC8qIExhdGluLTEgaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgMjU2IG9yZGluYWxzIGluIFVuaWNvZGUuICovCi0gICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICBQeV9VTklDT0RFIHIgPSAqKHVuc2lnbmVkIGNoYXIqKXM7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnIsIDEpOwotICAgIH0KLQotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgIGUgPSBzICsgc2l6ZTsKLSAgICAvKiBVbnJvbGxpbmcgdGhlIGNvcHkgbWFrZXMgaXQgbXVjaCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIGxvb3BpbmcKLSAgICAgICBvdmVyaGVhZC4gVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgbWFueSBtZW1jcHkoKSBpbXBsZW1lbnRhdGlvbnMgZG8uICovCi0gICAgdW5yb2xsZWRfZW5kID0gZSAtIDQ7Ci0gICAgd2hpbGUgKHMgPCB1bnJvbGxlZF9lbmQpIHsKLSAgICAgICAgcFswXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzBdOwotICAgICAgICBwWzFdID0gKHVuc2lnbmVkIGNoYXIpIHNbMV07Ci0gICAgICAgIHBbMl0gPSAodW5zaWduZWQgY2hhcikgc1syXTsKLSAgICAgICAgcFszXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzNdOwotICAgICAgICBzICs9IDQ7Ci0gICAgICAgIHAgKz0gNDsKLSAgICB9Ci0gICAgd2hpbGUgKHMgPCBlKQotICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpICpzKys7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MxKCh1bnNpZ25lZCBjaGFyKilzLCBzaXplKTsKIH0KIAogLyogY3JlYXRlIG9yIGFkanVzdCBhIFVuaWNvZGVFbmNvZGVFcnJvciAqLwotc3RhdGljIHZvaWQgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKSB7Ci0gICAgICAgICpleGNlcHRpb25PYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9DcmVhdGUoCi0gICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciwgInNPbm5zIiwKKyAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0KCpleGNlcHRpb25PYmplY3QsIHN0YXJ0cG9zKSkKQEAgLTQ1MjIsMTQgKzYyMjMsMTUgQEAKIH0KIAogLyogcmFpc2VzIGEgVW5pY29kZUVuY29kZUVycm9yICovCi1zdGF0aWMgdm9pZCByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK3JhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBtYWtlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgIT0gTlVMTCkKICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CkBAIC00NTM4LDE1ICs2MjQwLDE2IEBACiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgcHV0IHRoZSByZXN1bHQgaW50byBuZXdwb3MgYW5kIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aGljaAogICAgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgKi8KLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKLQorICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqcmVzdW5pY29kZTsKIApAQCAtNDU1Niw4ICs2MjU5LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKwogICAgIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzaXplLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDU4MSw4ICs2Mjg4LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgqbmV3cG9zPDApCi0gICAgICAgICpuZXdwb3MgPSBzaXplKypuZXdwb3M7Ci0gICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPnNpemUpIHsKKyAgICAgICAgKm5ld3BvcyA9IGxlbiArICpuZXdwb3M7CisgICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW5kZXhFcnJvciwgInBvc2l0aW9uICV6ZCBmcm9tIGVycm9yIGhhbmRsZXIgb3V0IG9mIGJvdW5kcyIsICpuZXdwb3MpOwogICAgICAgICBQeV9ERUNSRUYocmVzdHVwbGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ1OTIsMTggKzYyOTksMTcgQEAKICAgICByZXR1cm4gcmVzdW5pY29kZTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VuY29kZV91Y3MxKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfdWNzMShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGltaXQpCiB7CisgICAgLyogaW5wdXQgc3RhdGUgKi8KKyAgICBQeV9zc2l6ZV90IHBvcz0wLCBzaXplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgLyogb3V0cHV0IG9iamVjdCAqLwogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgLyogcG9pbnRlcnMgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kKzEgb2YgaW5wdXQgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzdGFydHAgPSBwOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmVuZHAgPSBwICsgc2l6ZTsKLSAgICAvKiBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgKi8KLSAgICAvKiBjb25zdCBQeV9VTklDT0RFICpiYWRwID0gTlVMTDsgKi8KICAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwogICAgIGNoYXIgKnN0cjsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwpAQCAtNDYxNiw2ICs2MzIyLDExIEBACiAgICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSBlbmNvZGluZyB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwogICAgIGlmIChzaXplID09IDApCkBAIC00NjI2LDI4ICs2MzM3LDI0IEBACiAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKICAgICByZXNzaXplID0gc2l6ZTsKIAotICAgIHdoaWxlIChwPGVuZHApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gKnA7CisgICAgd2hpbGUgKHBvcyA8IHNpemUpIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKIAogICAgICAgICAvKiBjYW4gd2UgZW5jb2RlIHRoaXM/ICovCiAgICAgICAgIGlmIChjPGxpbWl0KSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwogICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpYzsKLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICsrcG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfc3NpemVfdCB1bmljb2RlcG9zID0gcC1zdGFydHA7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlc3BvczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG5ld3BvcywgcmVzcG9zLCBpOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxzdGFydCA9IHA7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsZW5kID0gcDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gcG9zOwogICAgICAgICAgICAgLyogZmluZCBhbGwgdW5lY29kYWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoKGNvbGxlbmQgPCBlbmRwKSAmJiAoKCpjb2xsZW5kKT49bGltaXQpKQorICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgc2l6ZSkgJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpPj1saW1pdCkpCiAgICAgICAgICAgICAgICAgKytjb2xsZW5kOwogICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAgKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KICAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7CkBAIC00NjY0LDM5ICs2MzcxLDM3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewogICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCwgcmVhc29uKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAoY29sbHN0YXJ0Kys8Y29sbGVuZCkKICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOyAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICAgICAgcCA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQsIHJlcHNpemUgPSAwOyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgqcDwxMCkKKyAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydCwgcmVwc2l6ZSA9IDA7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMisxKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMysxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis0KzE7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzUrMTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis1KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis2KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzcrMTsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhlbmRwLWNvbGxlbmQpOworICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhzaXplLWNvbGxlbmQpOwogICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipyZXNzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwpAQCAtNDcwNSwxNyArNjQxMCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwogICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0OyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgKGludCkqcCk7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCB8fCAoUHlVbmljb2RlX0NoZWNrKHJlcHVuaWNvZGUpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcHVuaWNvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KQEAgLTQ3MzIsNyArNjQzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgUHlCeXRlc19Bc1N0cmluZyhyZXB1bmljb2RlKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0ciArPSByZXBzaXplOwotICAgICAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDc0MCw4ICs2NDQ2LDggQEAKICAgICAgICAgICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBzbwogICAgICAgICAgICAgICAgICAgIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UgZm9yIGVuY29kYWJsZSBjaGFyYWN0ZXJzKSAqLwogICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoZW5kcC1jb2xsZW5kKTsKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zK3JlcHNpemUrKHNpemUtY29sbGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKnJlc3NpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7CkBAIC00NzU0LDE3ICs2NDYwLDE3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZSByZXBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHVuaTIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTtyZXBzaXplLS0+MDsgKyt1bmkyLCArK3N0cikgewotICAgICAgICAgICAgICAgICAgICBjID0gKnVuaTI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgaSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVwb3MsIHVuaWNvZGVwb3MrMSwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWM7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDc4OCwzMyArNjQ5NCw1NyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMShwLCBzaXplLCBlcnJvcnMsIDI1Nik7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIEZhc3QgcGF0aDogaWYgaXQgaXMgYSBvbmUtYnl0ZSBzdHJpbmcsIGNvbnN0cnVjdAorICAgICAgIGJ5dGVzIG9iamVjdCBkaXJlY3RseS4gKi8KKyAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgLyogTm9uLUxhdGluLTEgY2hhcmFjdGVycyBwcmVzZW50LiBEZWZlciB0byBhYm92ZSBmdW5jdGlvbiB0bworICAgICAgIHJhaXNlIHRoZSBleGNlcHRpb24uICovCisgICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEodW5pY29kZSwgZXJyb3JzLCAyNTYpOworfQorCitQeU9iamVjdCoKK1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAogLyogLS0tIDctYml0IEFTQ0lJIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKQEAgLTQ4MjIsNzAgKzY1NTIsOTkgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLwotICAgIGlmIChzaXplID09IDEgJiYgKih1bnNpZ25lZCBjaGFyKilzIDwgMTI4KSB7Ci0gICAgICAgIFB5X1VOSUNPREUgciA9ICoodW5zaWduZWQgY2hhciopczsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmciwgMSk7CisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLworICAgIGlmIChzaXplID09IDEgJiYgKHVuc2lnbmVkIGNoYXIpc1swXSA8IDEyOCkKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhcilzWzBdKTsKKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKwogICAgIGUgPSBzICsgc2l6ZTsKKyAgICBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgb3V0cG9zID0gYXNjaWlfZGVjb2RlKHMsIGUsIChQeV9VQ1MxICopZGF0YSk7CisgICAgaWYgKG91dHBvcyA9PSBzaXplKQorICAgICAgICByZXR1cm4gdW5pY29kZTsKKworICAgIHMgKz0gb3V0cG9zOworICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKICAgICB3aGlsZSAocyA8IGUpIHsKICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpKnM7CiAgICAgICAgIGlmIChjIDwgMTI4KSB7Ci0gICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvdXRwb3MrKywgYyk7CiAgICAgICAgICAgICArK3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgb3V0cG9zID0gcCAtIChQeV9VTklDT0RFICopUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiwgIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSA8IFB5VW5pY29kZV9HRVRfU0laRSh2KSkKLSAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYodik7CisgICAgUHlfWERFQ1JFRih1bmljb2RlKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMShwLCBzaXplLCBlcnJvcnMsIDEyOCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMTI4KTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBGYXN0IHBhdGg6IGlmIGl0IGlzIGFuIEFTQ0lJLW9ubHkgc3RyaW5nLCBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0CisgICAgICAgZGlyZWN0bHkuIEVsc2UgZGVmZXIgdG8gYWJvdmUgZnVuY3Rpb24gdG8gcmFpc2UgdGhlIGV4Y2VwdGlvbi4gKi8KKyAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpIDwgMTI4KQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMTI4KTsKIH0KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBOVUxMKTsKK30KKworI2lmZGVmIEhBVkVfTUJDUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNDg5MywzMzYgKzY2NTIsODQyIEBACiAjZGVmaW5lIE5FRURfUkVUUlkKICNlbmRpZgogCi0vKiBYWFggVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywgYXMKLSAgIGEpIGl0IGFzc3VtZXMgYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUgYnl0ZSwgYW5kCi0gICBiKSBJc0RCQ1NMZWFkQnl0ZSAocHJvYmFibHkpIGRvZXMgbm90IHdvcmsgZm9yIG5vbi1EQkNTIG11bHRpLWJ5dGUKLSAgIGVuY29kaW5ncywgc2VlIElzREJDU0xlYWRCeXRlRXggZG9jdW1lbnRhdGlvbi4gKi8KKyNpZm5kZWYgV0NfRVJSX0lOVkFMSURfQ0hBUlMKKyMgIGRlZmluZSBXQ19FUlJfSU5WQUxJRF9DSEFSUyAweDAwODAKKyNlbmRpZgogCi1zdGF0aWMgaW50IGlzX2RiY3NfbGVhZF9ieXRlKGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCitzdGF0aWMgY2hhcioKK2NvZGVfcGFnZV9uYW1lKFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm9iaikKK3sKKyAgICAqb2JqID0gTlVMTDsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX0FDUCkKKyAgICAgICAgcmV0dXJuICJtYmNzIjsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX1VURjcpCisgICAgICAgIHJldHVybiAiQ1BfVVRGNyI7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KQorICAgICAgICByZXR1cm4gIkNQX1VURjgiOworCisgICAgKm9iaiA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiY3AldSIsIGNvZGVfcGFnZSk7CisgICAgaWYgKCpvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvYmopOworfQorCitzdGF0aWMgaW50Citpc19kYmNzX2xlYWRfYnl0ZShVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqcywgaW50IG9mZnNldCkKIHsKICAgICBjb25zdCBjaGFyICpjdXJyID0gcyArIG9mZnNldDsKKyAgICBjb25zdCBjaGFyICpwcmV2OwogCi0gICAgaWYgKElzREJDU0xlYWRCeXRlKCpjdXJyKSkgewotICAgICAgICBjb25zdCBjaGFyICpwcmV2ID0gQ2hhclByZXYocywgY3Vycik7Ci0gICAgICAgIHJldHVybiAocHJldiA9PSBjdXJyKSB8fCAhSXNEQkNTTGVhZEJ5dGUoKnByZXYpIHx8IChjdXJyIC0gcHJldiA9PSAyKTsKLSAgICB9CisgICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKmN1cnIpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHByZXYgPSBDaGFyUHJldkV4QShjb2RlX3BhZ2UsIHMsIGN1cnIsIDApOworICAgIGlmIChwcmV2ID09IGN1cnIpCisgICAgICAgIHJldHVybiAxOworICAgIC8qIEZJWE1FOiBUaGlzIGNvZGUgaXMgbGltaXRlZCB0byAidHJ1ZSIgZG91YmxlLWJ5dGUgZW5jb2RpbmdzLAorICAgICAgIGFzIGl0IGFzc3VtZXMgYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUKKyAgICAgICBieXRlLiAqLworICAgIGlmIChjdXJyIC0gcHJldiA9PSAyKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoIUlzREJDU0xlYWRCeXRlRXgoY29kZV9wYWdlLCAqcHJldikpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiAwOwogfQogCi0vKgotICogRGVjb2RlIE1CQ1Mgc3RyaW5nIGludG8gdW5pY29kZSBvYmplY3QuIElmICdmaW5hbCcgaXMgc2V0LCBjb252ZXJ0cwotICogdHJhaWxpbmcgbGVhZC1ieXRlIHRvby4gUmV0dXJucyBjb25zdW1lZCBzaXplIGlmIHN1Y2NlZWQsIC0xIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGludCBkZWNvZGVfbWJjcyhQeVVuaWNvZGVPYmplY3QgKip2LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzLCAvKiBNQkNTIHN0cmluZyAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgLyogc2l6ZW9mIE1CQ1Mgc3RyaW5nICovCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorc3RhdGljIERXT1JECitkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlKQogewotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfc3NpemVfdCBuOwotICAgIERXT1JEIHVzaXplOwotICAgIERXT1JEIGZsYWdzOwotCi0gICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0KLSAgICAvKiBjaGVjayBhbmQgaGFuZGxlICdlcnJvcnMnIGFyZyAqLwotICAgIGlmIChlcnJvcnM9PU5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpPT0wKQotICAgICAgICBmbGFncyA9IE1CX0VSUl9JTlZBTElEX0NIQVJTOwotICAgIGVsc2UgaWYgKHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKT09MCkKLSAgICAgICAgZmxhZ3MgPSAwOwotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJtYmNzIGVuY29kaW5nIGRvZXMgbm90IHN1cHBvcnQgZXJyb3JzPSclcyciLAotICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGNykgeworICAgICAgICAvKiBUaGUgQ1BfVVRGNyBkZWNvZGVyIG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCAqLworICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gTUJfRVJSX0lOVkFMSURfQ0hBUlM7Cit9CiAKLSAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KLSAgICBpZiAoIWZpbmFsICYmIHNpemUgPj0gMSAmJiBpc19kYmNzX2xlYWRfYnl0ZShzLCBzaXplIC0gMSkpCi0gICAgICAgIC0tc2l6ZTsKKy8qCisgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byB1bmljb2RlIG9iamVjdCBpbiBzdHJpY3QKKyAqIG1vZGUuCisgKgorICogUmV0dXJucyBjb25zdW1lZCBzaXplIGlmIHN1Y2NlZWQsIHJldHVybnMgLTIgb24gZGVjb2RlIGVycm9yLCBvciByYWlzZSBhCisgKiBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMgLTEgb24gb3RoZXIgZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK2RlY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KFVJTlQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zaXplKQoreworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UpOworICAgIHdjaGFyX3QgKm91dDsKKyAgICBEV09SRCBvdXRzaXplOwogCiAgICAgLyogRmlyc3QgZ2V0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgKi8KLSAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgdXNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgZmxhZ3MsIHMsIHNpemUsIE5VTEwsIDApOwotICAgICAgICBpZiAodXNpemU9PTApCi0gICAgICAgICAgICBnb3RvIG1iY3NfZGVjb2RlX2Vycm9yOwotICAgIH0gZWxzZQotICAgICAgICB1c2l6ZSA9IDA7CisgICAgYXNzZXJ0KGluc2l6ZSA+IDApOworICAgIG91dHNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVfcGFnZSwgZmxhZ3MsIGluLCBpbnNpemUsIE5VTEwsIDApOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoKnYgPT0gTlVMTCkgewogICAgICAgICAvKiBDcmVhdGUgdW5pY29kZSBvYmplY3QgKi8KLSAgICAgICAgKnYgPSBfUHlVbmljb2RlX05ldyh1c2l6ZSk7CisgICAgICAgIC8qIEZJWE1FOiBkb24ndCB1c2UgX1B5VW5pY29kZV9OZXcoKSwgYnV0IGFsbG9jYXRlIGEgd2NoYXJfdCogYnVmZmVyICovCisgICAgICAgICp2ID0gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhvdXRzaXplKTsKICAgICAgICAgaWYgKCp2ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG4gPSAwOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBFeHRlbmQgdW5pY29kZSBvYmplY3QgKi8KLSAgICAgICAgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7Ci0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSh2LCBuICsgdXNpemUpIDwgMCkKKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlVbmljb2RlX0dFVF9TSVpFKCp2KTsKKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHYsIG4gKyBvdXRzaXplKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KSArIG47CiAgICAgfQogCiAgICAgLyogRG8gdGhlIGNvbnZlcnNpb24gKi8KLSAgICBpZiAodXNpemUgPiAwKSB7Ci0gICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBuOwotICAgICAgICBpZiAoMCA9PSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgZmxhZ3MsIHMsIHNpemUsIHAsIHVzaXplKSkgewotICAgICAgICAgICAgZ290byBtYmNzX2RlY29kZV9lcnJvcjsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc2l6ZTsKKyAgICBvdXRzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlX3BhZ2UsIGZsYWdzLCBpbiwgaW5zaXplLCBvdXQsIG91dHNpemUpOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIGluc2l6ZTsKIAotbWJjc19kZWNvZGVfZXJyb3I6Ci0gICAgLyogSWYgdGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4KLSAgICAgICB3ZSByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvciAtIGVsc2UgaXQgaXMgYSAnZ2VuZXJpYycKLSAgICAgICB3aW5kb3dzIGVycm9yCi0gICAgICovCi0gICAgaWYgKEdldExhc3RFcnJvcigpPT1FUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKSB7Ci0gICAgICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZSAtIHRoaXMKLSAgICAgICAgICAgaXMgdGhlIFdpbmRvd3MgMjAwMCBFbmdsaXNoIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UKLSAgICAgICAgKi8KLSAgICAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJObyBtYXBwaW5nIGZvciB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZXhpc3RzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHRoZSB0YXJnZXQgbXVsdGktYnl0ZSBjb2RlIHBhZ2UuIjsKLSAgICAgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKCZleGMsICJtYmNzIiwgcywgc2l6ZSwgMCwgMCwgcmVhc29uKTsKLSAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOwotICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgwLCBOVUxMKTsKLSAgICB9CitlcnJvcjoKKyAgICBpZiAoR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTikKKyAgICAgICAgcmV0dXJuIC0yOworICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgIHJldHVybiAtMTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLyoKKyAqIERlY29kZSBhIGJ5dGUgc3RyaW5nIGZyb20gYSBjb2RlIHBhZ2UgaW50byB1bmljb2RlIG9iamVjdCB3aXRoIGFuIGVycm9yCisgKiBoYW5kbGVyLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCBvciByYWlzZSBhIFdpbmRvd3NFcnJvciBvcgorICogVW5pY29kZURlY29kZUVycm9yIGV4Y2VwdGlvbiBhbmQgcmV0dXJucyAtMSBvbiBlcnJvci4KKyAqLworc3RhdGljIGludAorZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoVUlOVCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnYsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbiwgY29uc3QgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2ID0gTlVMTDsKLSAgICBpbnQgZG9uZTsKKyAgICBjb25zdCBjaGFyICpzdGFydGluID0gaW47CisgICAgY29uc3QgY2hhciAqZW5kaW4gPSBpbiArIHNpemU7CisgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSk7CisgICAgLyogSWRlYWxseSwgd2Ugc2hvdWxkIGdldCByZWFzb24gZnJvbSBGb3JtYXRNZXNzYWdlLiBUaGlzIGlzIHRoZSBXaW5kb3dzCisgICAgICAgMjAwMCBFbmdsaXNoIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UuICovCisgICAgY29uc3QgY2hhciAqcmVhc29uID0gIk5vIG1hcHBpbmcgZm9yIHRoZSBVbmljb2RlIGNoYXJhY3RlciBleGlzdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgdGFyZ2V0IGNvZGUgcGFnZS4iOworICAgIC8qIGVhY2ggc3RlcCBjYW5ub3QgZGVjb2RlIG1vcmUgdGhhbiAxIGNoYXJhY3RlciwgYnV0IGEgY2hhcmFjdGVyIGNhbiBiZQorICAgICAgIHJlcHJlc2VudGVkIGFzIGEgc3Vycm9nYXRlIHBhaXIgKi8KKyAgICB3Y2hhcl90IGJ1ZmZlclsyXSwgKnN0YXJ0b3V0LCAqb3V0OworICAgIGludCBpbnNpemUsIG91dHNpemU7CisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7CisgICAgY2hhciAqZW5jb2Rpbmc7CisgICAgRFdPUkQgZXJyOworICAgIGludCByZXQgPSAtMTsKKworICAgIGFzc2VydChzaXplID4gMCk7CisKKyAgICBlbmNvZGluZyA9IGNvZGVfcGFnZV9uYW1lKGNvZGVfcGFnZSwgJmVuY29kaW5nX29iaik7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICAvKiBUaGUgbGFzdCBlcnJvciB3YXMgRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTiwgdGhlbiB3ZSByYWlzZSBhCisgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvci4gKi8KKyAgICAgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBpbiwgc2l6ZSwgMCwgMCwgcmVhc29uKTsKKyAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICAgICAgUHlfQ0xFQVIoZXhjKTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqdiA9PSBOVUxMKSB7CisgICAgICAgIC8qIENyZWF0ZSB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIC8qIEZJWE1FOiBkb24ndCB1c2UgX1B5VW5pY29kZV9OZXcoKSwgYnV0IGFsbG9jYXRlIGEgd2NoYXJfdCogYnVmZmVyICovCisgICAgICAgICp2ID0gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhzaXplICogUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpOworICAgICAgICBpZiAoKnYgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHN0YXJ0b3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7CisgICAgICAgIGlmIChzaXplID4gKFBZX1NTSVpFX1RfTUFYIC0gbikgLyAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHYsIG4gKyBzaXplICogUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHN0YXJ0b3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgbjsKKyAgICB9CisKKyAgICAvKiBEZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGNoYXJhY3RlciBwZXIgY2hhcmFjdGVyICovCisgICAgb3V0ID0gc3RhcnRvdXQ7CisgICAgd2hpbGUgKGluIDwgZW5kaW4pCisgICAgeworICAgICAgICAvKiBEZWNvZGUgYSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgaW5zaXplID0gMTsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgb3V0c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoY29kZV9wYWdlLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLCBpbnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKTsKKyAgICAgICAgICAgIGlmIChvdXRzaXplID4gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OCisgICAgICAgICAgICAgICAgJiYgZXJyICE9IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluc2l6ZSsrOworICAgICAgICB9CisgICAgICAgIC8qIDQ9bWF4aW11bSBsZW5ndGggb2YgYSBVVEYtOCBzZXF1ZW5jZSAqLworICAgICAgICB3aGlsZSAoaW5zaXplIDw9IDQgJiYgKGluICsgaW5zaXplKSA8PSBlbmRpbik7CisKKyAgICAgICAgaWYgKG91dHNpemUgPD0gMCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zLCBlbmRpbnBvcywgb3V0cG9zOworCisgICAgICAgICAgICBzdGFydGlucG9zID0gaW4gLSBzdGFydGluOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKKyAgICAgICAgICAgIG91dHBvcyA9IG91dCAtIFB5VW5pY29kZV9BU19VTklDT0RFKCp2KTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAmc3RhcnRpbiwgJmVuZGluLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmaW4sCisgICAgICAgICAgICAgICAgICAgIHYsICZvdXRwb3MpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBvdXRwb3M7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbiArPSBpbnNpemU7CisgICAgICAgICAgICBtZW1jcHkob3V0LCBidWZmZXIsIG91dHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgb3V0ICs9IG91dHNpemU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB3cml0ZSBhIE5VTCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCAqLworICAgICpvdXQgPSAwOworCisgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCisgICAgb3V0c2l6ZSA9IG91dCAtIHN0YXJ0b3V0OworICAgIGFzc2VydChvdXRzaXplIDw9IFB5VW5pY29kZV9XU1RSX0xFTkdUSCgqdikpOworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBvdXRzaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0ID0gc2l6ZTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29kZV9jb2RlX3BhZ2Vfc3RhdGVmdWwoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKyAgICBpbnQgY2h1bmtfc2l6ZSwgZmluYWwsIGNvbnZlcnRlZCwgZG9uZTsKKworICAgIGlmIChjb2RlX3BhZ2UgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBjb2RlIHBhZ2UgbnVtYmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgKmNvbnN1bWVkID0gMDsKIAorICAgIGRvCisgICAgewogI2lmZGVmIE5FRURfUkVUUlkKLSAgcmV0cnk6Ci0gICAgaWYgKHNpemUgPiBJTlRfTUFYKQotICAgICAgICBkb25lID0gZGVjb2RlX21iY3MoJnYsIHMsIElOVF9NQVgsIDAsIGVycm9ycyk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoc2l6ZSA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBJTlRfTUFYOworICAgICAgICAgICAgZmluYWwgPSAwOworICAgICAgICAgICAgZG9uZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGRvbmUgPSBkZWNvZGVfbWJjcygmdiwgcywgKGludClzaXplLCAhY29uc3VtZWQsIGVycm9ycyk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSAoaW50KXNpemU7CisgICAgICAgICAgICBmaW5hbCA9IChjb25zdW1lZCA9PSBOVUxMKTsKKyAgICAgICAgICAgIGRvbmUgPSAxOworICAgICAgICB9CiAKLSAgICBpZiAoZG9uZSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgICAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KKyAgICAgICAgaWYgKCFmaW5hbCAmJiBpc19kYmNzX2xlYWRfYnl0ZShjb2RlX3BhZ2UsIHMsIGNodW5rX3NpemUgLSAxKSkKKyAgICAgICAgICAgIC0tY2h1bmtfc2l6ZTsKIAotICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgKmNvbnN1bWVkICs9IGRvbmU7CisgICAgICAgIGlmIChjaHVua19zaXplID09IDAgJiYgZG9uZSkgeworICAgICAgICAgICAgaWYgKHYgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICB9CiAKLSNpZmRlZiBORUVEX1JFVFJZCi0gICAgaWYgKHNpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgIHMgKz0gZG9uZTsKLSAgICAgICAgc2l6ZSAtPSBkb25lOwotICAgICAgICBnb3RvIHJldHJ5OwotICAgIH0KLSNlbmRpZgogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KGNvZGVfcGFnZSwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUpOworICAgICAgICBpZiAoY29udmVydGVkID09IC0yKQorICAgICAgICAgICAgY29udmVydGVkID0gZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoY29kZV9wYWdlLCAmdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICBhc3NlcnQoY29udmVydGVkICE9IDApOworCisgICAgICAgIGlmIChjb252ZXJ0ZWQgPCAwKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKHYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgKz0gY29udmVydGVkOworCisgICAgICAgIHMgKz0gY29udmVydGVkOworICAgICAgICBzaXplIC09IGNvbnZlcnRlZDsKKyAgICB9IHdoaWxlICghZG9uZSk7CisKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTUJDUyhjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bChpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIHJldHVybiBkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKGNvZGVfcGFnZSwgcywgc2l6ZSwgZXJyb3JzLCBjb25zdW1lZCk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIHJldHVybiBkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKENQX0FDUCwgcywgc2l6ZSwgZXJyb3JzLCBjb25zdW1lZCk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVNQkNTKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKIH0KIAorc3RhdGljIERXT1JECitlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlLCBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KSB7CisgICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikKKyAgICAgICAgICAgIC8qIENQX1VURjggc3VwcG9ydHMgV0NfRVJSX0lOVkFMSURfQ0hBUlMgb24gV2luZG93cyBWaXN0YQorICAgICAgICAgICAgICAgYW5kIGxhdGVyICovCisgICAgICAgICAgICByZXR1cm4gV0NfRVJSX0lOVkFMSURfQ0hBUlM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8qIENQX1VURjggb25seSBzdXBwb3J0cyBmbGFncz0wIG9uIFdpbmRvd3Mgb2xkZXIgdGhhbiBWaXN0YSAqLworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY3KSB7CisgICAgICAgIC8qIENQX1VURjcgb25seSBzdXBwb3J0cyBmbGFncz0wICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGVycm9ycyAhPSBOVUxMICYmIHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gV0NfTk9fQkVTVF9GSVRfQ0hBUlM7CisgICAgfQorfQorCiAvKgotICogQ29udmVydCB1bmljb2RlIGludG8gc3RyaW5nIG9iamVjdCAoTUJDUykuCi0gKiBSZXR1cm5zIDAgaWYgc3VjY2VlZCwgLTEgb3RoZXJ3aXNlLgorICogRW5jb2RlIGEgVW5pY29kZSBzdHJpbmcgdG8gYSBXaW5kb3dzIGNvZGUgcGFnZSBpbnRvIGEgYnl0ZSBzdHJpbmcgaW4gc3RyaWN0CisgKiBtb2RlLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgY2hhcmFjdGVycyBpZiBzdWNjZWVkLCByZXR1cm5zIC0yIG9uIGVuY29kZSBlcnJvciwgb3IgcmFpc2UKKyAqIGEgV2luZG93c0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgogICovCi1zdGF0aWMgaW50IGVuY29kZV9tYmNzKFB5T2JqZWN0ICoqcmVwciwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqcCwgLyogdW5pY29kZSAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgLyogc2l6ZSBvZiB1bmljb2RlICovCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9ycykKK3N0YXRpYyBpbnQKK2VuY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgb2Zmc2V0LCBpbnQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JzKQogewogICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0U7Ci0gICAgQk9PTCAqcHVzZWREZWZhdWx0Q2hhcjsKLSAgICBpbnQgbWJjc3NpemU7Ci0gICAgUHlfc3NpemVfdCBuOworICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOworICAgIGludCBvdXRzaXplOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIERXT1JEIGZsYWdzOworICAgIHdjaGFyX3QgKnA7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UsIE5VTEwpOworICAgIGNoYXIgKm91dDsKKyAgICAvKiBDcmVhdGUgYSBzdWJzdHJpbmcgc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBVVEYtMTYgcmVwcmVzZW50YXRpb24KKyAgICAgICBvZiBqdXN0IHRoZSBzbGljZSB1bmRlciBjb25zaWRlcmF0aW9uLiAqLworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAKLSAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKyAgICBhc3NlcnQobGVuID4gMCk7CiAKLSAgICAvKiBjaGVjayBhbmQgaGFuZGxlICdlcnJvcnMnIGFyZyAqLwotICAgIGlmIChlcnJvcnM9PU5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpPT0wKSB7Ci0gICAgICAgIGZsYWdzID0gV0NfTk9fQkVTVF9GSVRfQ0hBUlM7CisgICAgaWYgKGNvZGVfcGFnZSAhPSBDUF9VVEY4ICYmIGNvZGVfcGFnZSAhPSBDUF9VVEY3KQogICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIik9PTApIHsKLSAgICAgICAgZmxhZ3MgPSAwOworICAgIGVsc2UKICAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9IE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJtYmNzIGVuY29kaW5nIGRvZXMgbm90IHN1cHBvcnQgZXJyb3JzPSclcyciLAotICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHVuaWNvZGUsIG9mZnNldCwgb2Zmc2V0K2xlbik7CisgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHN1YnN0cmluZywgJnNpemUpOworICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBGaXJzdCBnZXQgdGhlIHNpemUgb2YgdGhlIHJlc3VsdCAqLwotICAgIGlmIChzaXplID4gMCkgewotICAgICAgICBtYmNzc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCBmbGFncywgcCwgc2l6ZSwgTlVMTCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOwotICAgICAgICBpZiAobWJjc3NpemUgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyogSWYgd2UgdXNlZCBhIGRlZmF1bHQgY2hhciwgdGhlbiB3ZSBmYWlsZWQhICovCi0gICAgICAgIGlmIChwdXNlZERlZmF1bHRDaGFyICYmICpwdXNlZERlZmF1bHRDaGFyKQotICAgICAgICAgICAgZ290byBtYmNzX2VuY29kZV9lcnJvcjsKLSAgICB9IGVsc2UgewotICAgICAgICBtYmNzc2l6ZSA9IDA7CisgICAgb3V0c2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoY29kZV9wYWdlLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgaWYgKG91dHNpemUgPD0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAvKiBJZiB3ZSB1c2VkIGEgZGVmYXVsdCBjaGFyLCB0aGVuIHdlIGZhaWxlZCEgKi8KKyAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIAotICAgIGlmICgqcmVwciA9PSBOVUxMKSB7CisgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIENyZWF0ZSBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgICpyZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBtYmNzc2l6ZSk7Ci0gICAgICAgIGlmICgqcmVwciA9PSBOVUxMKQorICAgICAgICAqb3V0Ynl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dHNpemUpOworICAgICAgICBpZiAoKm91dGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBuID0gMDsKKyAgICAgICAgfQorICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogRXh0ZW5kIHN0cmluZyBvYmplY3QgKi8KLSAgICAgICAgbiA9IFB5Qnl0ZXNfU2l6ZSgqcmVwcik7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUocmVwciwgbiArIG1iY3NzaXplKSA8IDApCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbiA9IFB5Qnl0ZXNfU2l6ZSgqb3V0Ynl0ZXMpOworICAgICAgICBpZiAob3V0c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG4gKyBvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBuOwogICAgIH0KIAogICAgIC8qIERvIHRoZSBjb252ZXJzaW9uICovCi0gICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgIGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORygqcmVwcikgKyBuOwotICAgICAgICBpZiAoMCA9PSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgZmxhZ3MsIHAsIHNpemUsIHMsIG1iY3NzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgwLCBOVUxMKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKLSAgICAgICAgICAgIGdvdG8gbWJjc19lbmNvZGVfZXJyb3I7Ci0gICAgfQorICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIG91dHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgUHlfQ0xFQVIoc3Vic3RyaW5nKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChwdXNlZERlZmF1bHRDaGFyICYmICpwdXNlZERlZmF1bHRDaGFyKQorICAgICAgICByZXR1cm4gLTI7CiAgICAgcmV0dXJuIDA7CiAKLW1iY3NfZW5jb2RlX2Vycm9yOgotICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgIm1iY3MiLCBwLCBzaXplLCAwLCAwLCAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7CitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pCisgICAgICAgIHJldHVybiAtMjsKKyAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKgorICogRW5jb2RlIGEgVW5pY29kZSBzdHJpbmcgdG8gYSBXaW5kb3dzIGNvZGUgcGFnZSBpbnRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcgYQorICogZXJyb3IgaGFuZGxlci4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIGNoYXJhY3RlcnMgaWYgc3VjY2VlZCwgb3IgcmFpc2UgYSBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMKKyAqIC0xIG9uIG90aGVyIGVycm9yLgorICovCitzdGF0aWMgaW50CitlbmNvZGVfY29kZV9wYWdlX2Vycm9ycyhVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHVuaWNvZGVfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbnNpemUsIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKLSAgICBQeU9iamVjdCAqcmVwciA9IE5VTEw7Ci0gICAgaW50IHJldDsKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBlcnJvcnMpOworICAgIFB5X3NzaXplX3QgcG9zID0gdW5pY29kZV9vZmZzZXQ7CisgICAgUHlfc3NpemVfdCBlbmRpbiA9IHVuaWNvZGVfb2Zmc2V0ICsgaW5zaXplOworICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZS4gVGhpcyBpcyB0aGUgV2luZG93cworICAgICAgIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLiAqLworICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJpbnZhbGlkIGNoYXJhY3RlciI7CisgICAgLyogND1tYXhpbXVtIGxlbmd0aCBvZiBhIFVURi04IHNlcXVlbmNlICovCisgICAgY2hhciBidWZmZXJbNF07CisgICAgQk9PTCB1c2VkRGVmYXVsdENoYXIgPSBGQUxTRSwgKnB1c2VkRGVmYXVsdENoYXI7CisgICAgUHlfc3NpemVfdCBvdXRzaXplOworICAgIGNoYXIgKm91dDsKKyAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKKyAgICBjaGFyICplbmNvZGluZzsKKyAgICBQeV9zc2l6ZV90IG5ld3BvcywgbmV3b3V0c2l6ZTsKKyAgICBQeU9iamVjdCAqcmVwOworICAgIGludCByZXQgPSAtMTsKIAotI2lmZGVmIE5FRURfUkVUUlkKLSAgcmV0cnk6Ci0gICAgaWYgKHNpemUgPiBJTlRfTUFYKQotICAgICAgICByZXQgPSBlbmNvZGVfbWJjcygmcmVwciwgcCwgSU5UX01BWCwgZXJyb3JzKTsKKyAgICBhc3NlcnQoaW5zaXplID4gMCk7CisKKyAgICBlbmNvZGluZyA9IGNvZGVfcGFnZV9uYW1lKGNvZGVfcGFnZSwgJmVuY29kaW5nX29iaik7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICAvKiBUaGUgbGFzdCBlcnJvciB3YXMgRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTiwKKyAgICAgICAgICAgdGhlbiB3ZSByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gKi8KKyAgICAgICAgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCAwLCAwLCByZWFzb24pOworICAgICAgICBpZiAoZXhjICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKGV4Yyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKGVuY29kaW5nX29iaik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoY29kZV9wYWdlICE9IENQX1VURjggJiYgY29kZV9wYWdlICE9IENQX1VURjcpCisgICAgICAgIHB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOwogICAgIGVsc2UKLSNlbmRpZgotICAgICAgICByZXQgPSBlbmNvZGVfbWJjcygmcmVwciwgcCwgKGludClzaXplLCBlcnJvcnMpOworICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gTlVMTDsKIAotICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYocmVwcik7CisgICAgaWYgKFB5X0FSUkFZX0xFTkdUSChidWZmZXIpID4gUFlfU1NJWkVfVF9NQVggLyBpbnNpemUpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgb3V0c2l6ZSA9IGluc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpOworCisgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIC8qIENyZWF0ZSBzdHJpbmcgb2JqZWN0ICovCisgICAgICAgICpvdXRieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0c2l6ZSk7CisgICAgICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBFeHRlbmQgc3RyaW5nIG9iamVjdCAqLworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeUJ5dGVzX1NpemUoKm91dGJ5dGVzKTsKKyAgICAgICAgaWYgKG4gPiBQWV9TU0laRV9UX01BWCAtIG91dHNpemUpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG4gKyBvdXRzaXplKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgbjsKKyAgICB9CisKKyAgICAvKiBFbmNvZGUgdGhlIHN0cmluZyBjaGFyYWN0ZXIgcGVyIGNoYXJhY3RlciAqLworICAgIHdoaWxlIChwb3MgPCBlbmRpbikKKyAgICB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIHBvcyk7CisgICAgICAgIHdjaGFyX3QgY2hhcnNbMl07CisgICAgICAgIGludCBjaGFyc2l6ZTsKKyAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkgeworICAgICAgICAgICAgY2hhcnNbMF0gPSAod2NoYXJfdCljaDsKKyAgICAgICAgICAgIGNoYXJzaXplID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7CisgICAgICAgICAgICBjaGFyc1swXSA9IDB4ZDgwMCArIChjaCA+PiAxMCk7CisgICAgICAgICAgICBjaGFyc1sxXSA9IDB4ZGMwMCArIChjaCAmIDB4M2ZmKTsKKyAgICAgICAgICAgIGNoYXJzaXplID0gMjsKKyAgICAgICAgfQorCisgICAgICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzLCBjaGFyc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgICAgIGlmIChvdXRzaXplID4gMCkgeworICAgICAgICAgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgPT0gTlVMTCB8fCAhKCpwdXNlZERlZmF1bHRDaGFyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICBtZW1jcHkob3V0LCBidWZmZXIsIG91dHNpemUpOworICAgICAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCBlbmNvZGluZywgcmVhc29uLAorICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4YywKKyAgICAgICAgICAgICAgICAgIHBvcywgcG9zICsgMSwgJm5ld3Bvcyk7CisgICAgICAgIGlmIChyZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHBvcyA9IG5ld3BvczsKKworICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7CisgICAgICAgICAgICBvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOworICAgICAgICAgICAgaWYgKG91dHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gb3V0IC0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKKyAgICAgICAgICAgICAgICBuZXdvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpICsgKG91dHNpemUgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuZXdvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1jcHkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCBvdXRzaXplKTsKKyAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgICAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApID09IC0xKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb3V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CisgICAgICAgICAgICBpZiAob3V0c2l6ZSAhPSAxKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQgPSBvdXQgLSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgICAgICAgICAgICAgIG5ld291dHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpvdXRieXRlcykgKyAob3V0c2l6ZSAtIDEpOworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG5ld291dHNpemUpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKSArIG9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXApOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcCk7CisgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IG91dHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiAxMjcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcyArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGVuY29kZSBlcnJvciBoYW5kbGVyIHJlc3VsdCB0byBBU0NJSSIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKm91dCA9ICh1bnNpZ25lZCBjaGFyKWNoOworICAgICAgICAgICAgICAgIG91dCsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgIH0KKyAgICAvKiB3cml0ZSBhIE5VTCBieXRlICovCisgICAgKm91dCA9IDA7CisgICAgb3V0c2l6ZSA9IG91dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgYXNzZXJ0KG91dHNpemUgPD0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBvdXRzaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0ID0gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2VuY29kZV9jb2RlX3BhZ2UoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqb3V0Ynl0ZXMgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIGludCBjaHVua19sZW4sIHJldCwgZG9uZTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCisgICAgaWYgKGNvZGVfcGFnZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGNvZGUgcGFnZSBudW1iZXIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0jaWZkZWYgTkVFRF9SRVRSWQotICAgIGlmIChzaXplID4gSU5UX01BWCkgewotICAgICAgICBwICs9IElOVF9NQVg7Ci0gICAgICAgIHNpemUgLT0gSU5UX01BWDsKLSAgICAgICAgZ290byByZXRyeTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgcmV0dXJuIHJlcHI7CisgICAgb2Zmc2V0ID0gMDsKKyAgICBkbworICAgIHsKKyNpZmRlZiBORUVEX1JFVFJZCisgICAgICAgIC8qIFVURi0xNiBlbmNvZGluZyBtYXkgZG91YmxlIHRoZSBzaXplLCBzbyB1c2Ugb25seSBJTlRfTUFYLzIKKyAgICAgICAgICAgY2h1bmtzLiAqLworICAgICAgICBpZiAobGVuID4gSU5UX01BWC8yKSB7CisgICAgICAgICAgICBjaHVua19sZW4gPSBJTlRfTUFYLzI7CisgICAgICAgICAgICBkb25lID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgY2h1bmtfbGVuID0gKGludClsZW47CisgICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldCA9IGVuY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KGNvZGVfcGFnZSwgJm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBvZmZzZXQsIGNodW5rX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgaWYgKHJldCA9PSAtMikKKyAgICAgICAgICAgIHJldCA9IGVuY29kZV9jb2RlX3BhZ2VfZXJyb3JzKGNvZGVfcGFnZSwgJm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVuLCBlcnJvcnMpOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihvdXRieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCArPSBjaHVua19sZW47CisgICAgICAgIGxlbiAtPSBjaHVua19sZW47CisgICAgfSB3aGlsZSAoIWRvbmUpOworCisgICAgcmV0dXJuIG91dGJ5dGVzOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVNQkNTKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpyZXM7CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBlbmNvZGVfY29kZV9wYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIHJldHVybiBlbmNvZGVfY29kZV9wYWdlKGNvZGVfcGFnZSwgdW5pY29kZSwgZXJyb3JzKTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVNQkNTKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKIH0KIAogI3VuZGVmIE5FRURfUkVUUlkKIAotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKICAgICBjb25zdCBjaGFyICplOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIFB5X3NzaXplX3QgZXh0cmFjaGFycyA9IDA7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqbWFwc3RyaW5nID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IG1hcGxlbiA9IDA7CiAKICAgICAvKiBEZWZhdWx0IHRvIExhdGluLTEgKi8KICAgICBpZiAobWFwcGluZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOwogCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgb3V0cG9zID0gMDsKICAgICBlID0gcyArIHNpemU7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG1hcHBpbmcpKSB7Ci0gICAgICAgIG1hcHN0cmluZyA9IFB5VW5pY29kZV9BU19VTklDT0RFKG1hcHBpbmcpOwotICAgICAgICBtYXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUobWFwcGluZyk7CisgICAgICAgIFB5X3NzaXplX3QgbWFwbGVuOworICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIG1hcGtpbmQ7CisgICAgICAgIHZvaWQgKm1hcGRhdGE7CisgICAgICAgIFB5X1VDUzQgeDsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG1hcHBpbmcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgbWFwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobWFwcGluZyk7CisgICAgICAgIG1hcGRhdGEgPSBQeVVuaWNvZGVfREFUQShtYXBwaW5nKTsKKyAgICAgICAgbWFwa2luZCA9IFB5VW5pY29kZV9LSU5EKG1hcHBpbmcpOwogICAgICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgeCA9IDB4ZmZmZTsgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaDsKKyAgICAgICAgICAgIGlmIChtYXBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EICYmIG1hcGxlbiA+PSAyNTYpIHsKKyAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIG91dGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICAgICAgICAgICAgICBpZiAob3V0a2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgICAgICB2b2lkICpvdXRkYXRhID0gUHlVbmljb2RlX0RBVEEodik7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG1hcGRhdGEsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID4gbWF4Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV8xQllURV9LSU5ELCBvdXRkYXRhLCBvdXRwb3MrKywgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG91dGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHYpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChQeVVuaWNvZGVfMkJZVEVfS0lORCwgbWFwZGF0YSwgY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gMHhGRkZFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG91dGRhdGEsIG91dHBvcysrLCB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaCA9ICpzOwogCiAgICAgICAgICAgICBpZiAoY2ggPCBtYXBsZW4pCi0gICAgICAgICAgICAgICAgeCA9IG1hcHN0cmluZ1tjaF07Ci0KLSAgICAgICAgICAgIGlmICh4ID09IDB4ZmZmZSkgeworICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChtYXBraW5kLCBtYXBkYXRhLCBjaCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeCA9IDB4ZmZmZTsgLyogaW52YWxpZCB2YWx1ZSAqLworRXJyb3I6CisgICAgICAgICAgICBpZiAoeCA9PSAweGZmZmUpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogdW5kZWZpbmVkIG1hcHBpbmcgKi8KLSAgICAgICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcm1hcCIsICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwKysgPSB4OworCisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB4KSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgKytzOwogICAgICAgICB9CiAgICAgfQpAQCAtNTI1MCw0OCArNzUxNSwyNSBAQAogICAgICAgICAgICAgLyogQXBwbHkgbWFwcGluZyAqLwogICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh4KSkgewogICAgICAgICAgICAgICAgIGxvbmcgdmFsdWUgPSBQeUxvbmdfQVNfTE9ORyh4KTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMHgxMEZGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IGJlIGluIHJhbmdlKDB4MTEwMDAwKSIpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHglbHgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKU1BWF9VTklDT0RFICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiAweEZGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogc2VlIHRoZSBjb2RlIGZvciAxLW4gbWFwcGluZyBiZWxvdyAqLwotICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmFjaGFycyA8IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2l6ZSBmaXJzdCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvbGRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5lZWRlZCA9IDEwIC0gZXh0cmFjaGFyczsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY2hhcnMgKz0gbmVlZGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYIG92ZXJmbG93IGRldGVjdGlvbiBtaXNzaW5nICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHYpICsgbmVlZGVkKSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpICsgb2xkcG9zOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAweEQ4MDAgfCAodmFsdWUgPj4gMTApOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gMHhEQzAwIHwgKHZhbHVlICYgMHgzRkYpOwotICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzIC09IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSl2YWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB2YWx1ZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh4ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICAvKiB1bmRlZmluZWQgbWFwcGluZyAqLwotICAgICAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwogICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFybWFwIiwgImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CkBAIC01Mjk5LDMyICs3NTQxLDM3IEBACiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHRhcmdldHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoeCk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCB0YXJnZXRzaXplOwogCi0gICAgICAgICAgICAgICAgaWYgKHRhcmdldHNpemUgPT0gMSkKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHgpID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgdGFyZ2V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHgpOworCisgICAgICAgICAgICAgICAgaWYgKHRhcmdldHNpemUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAvKiAxLTEgbWFwcGluZyAqLwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKlB5VW5pY29kZV9BU19VTklDT0RFKHgpOwotCisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUih4LCAwKSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmICh0YXJnZXRzaXplID4gMSkgewogICAgICAgICAgICAgICAgICAgICAvKiAxLW4gbWFwcGluZyAqLwogICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0c2l6ZSA+IGV4dHJhY2hhcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2l6ZSBmaXJzdCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvbGRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5lZWRlZCA9ICh0YXJnZXRzaXplIC0gZXh0cmFjaGFycykgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldHNpemUgPDwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzICs9IG5lZWRlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh2KSArIG5lZWRlZCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyBuZWVkZWQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpICsgb2xkcG9zOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSB0YXJnZXRzaXplOworICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV93aWRlbigmdiwgb3V0cG9zLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoeCkpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKHYsIG91dHBvcywgeCwgMCwgdGFyZ2V0c2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIG91dHBvcyArPSB0YXJnZXRzaXplOwogICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzIC09IHRhcmdldHNpemU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIDEtMCBtYXBwaW5nOiBza2lwIHRoZSBjaGFyYWN0ZXIgKi8KQEAgLTUzNDAsMTIgKzc1ODcsMTEgQEAKICAgICAgICAgICAgICsrczsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHYpKQotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwgb3V0cG9zKSA8IDApCisgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKQEAgLTUzNTYsNyArNzYwMiw3IEBACiAKIC8qIENoYXJtYXAgZW5jb2Rpbmc6IHRoZSBsb29rdXAgdGFibGUgKi8KIAotc3RydWN0IGVuY29kaW5nX21hcHsKK3N0cnVjdCBlbmNvZGluZ19tYXAgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICB1bnNpZ25lZCBjaGFyIGxldmVsMVszMl07CiAgICAgaW50IGNvdW50MiwgY291bnQzOwpAQCAtNTQzMCw3ICs3Njc2LDYgQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAoUHlPYmplY3QqIHN0cmluZykKIHsKLSAgICBQeV9VTklDT0RFICpkZWNvZGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBzdHJ1Y3QgZW5jb2RpbmdfbWFwICptcmVzdWx0OwogICAgIGludCBpOwpAQCAtNTQzOSwzNSArNzY4NCwzOSBAQAogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwyWzUxMl07CiAgICAgdW5zaWduZWQgY2hhciAqbWxldmVsMSwgKm1sZXZlbDIsICptbGV2ZWwzOwogICAgIGludCBjb3VudDIgPSAwLCBjb3VudDMgPSAwOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlfVUNTNCBjaDsKIAotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cmluZykgfHwgUHlVbmljb2RlX0dldFNpemUoc3RyaW5nKSAhPSAyNTYpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHJpbmcpIHx8ICFQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkZWNvZGUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CisgICAgbGVuZ3RoID0gUHlfTUlOKGxlbmd0aCwgMjU2KTsKICAgICBtZW1zZXQobGV2ZWwxLCAweEZGLCBzaXplb2YgbGV2ZWwxKTsKICAgICBtZW1zZXQobGV2ZWwyLCAweEZGLCBzaXplb2YgbGV2ZWwyKTsKIAogICAgIC8qIElmIHRoZXJlIGlzbid0IGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIE5VTEwgdG8gXDAsCiAgICAgICAgb3IgaWYgdGhlcmUgYXJlIG5vbi1CTVAgY2hhcmFjdGVycywgd2UgbmVlZCB0byB1c2UKICAgICAgICBhIG1hcHBpbmcgZGljdGlvbmFyeS4gKi8KLSAgICBpZiAoZGVjb2RlWzBdICE9IDApCisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApICE9IDApCiAgICAgICAgIG5lZWRfZGljdCA9IDE7Ci0gICAgZm9yIChpID0gMTsgaSA8IDI1NjsgaSsrKSB7CisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGludCBsMSwgbDI7Ci0gICAgICAgIGlmIChkZWNvZGVbaV0gPT0gMAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgfHwgZGVjb2RlW2ldID4gMHhGRkZGCi0jZW5kaWYKLSAgICAgICAgICAgICkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gMCB8fCBjaCA+IDB4RkZGRikgewogICAgICAgICAgICAgbmVlZF9kaWN0ID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvZGVbaV0gPT0gMHhGRkZFKQorICAgICAgICBpZiAoY2ggPT0gMHhGRkZFKQogICAgICAgICAgICAgLyogdW5tYXBwZWQgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbDEgPSBkZWNvZGVbaV0gPj4gMTE7Ci0gICAgICAgIGwyID0gZGVjb2RlW2ldID4+IDc7CisgICAgICAgIGwxID0gY2ggPj4gMTE7CisgICAgICAgIGwyID0gY2ggPj4gNzsKICAgICAgICAgaWYgKGxldmVsMVtsMV0gPT0gMHhGRikKICAgICAgICAgICAgIGxldmVsMVtsMV0gPSBjb3VudDIrKzsKICAgICAgICAgaWYgKGxldmVsMltsMl0gPT0gMHhGRikKQEAgLTU0ODIsOSArNzczMSw4IEBACiAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAgICAgICBrZXkgPSB2YWx1ZSA9IE5VTEw7Ci0gICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoZGVjb2RlW2ldKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoaSk7CiAgICAgICAgICAgICBpZiAoIWtleSB8fCAhdmFsdWUpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQxOwpAQCAtNTUxNywxNyArNzc2NSwxOCBAQAogICAgIG1lbXNldChtbGV2ZWwyLCAweEZGLCAxNipjb3VudDIpOwogICAgIG1lbXNldChtbGV2ZWwzLCAwLCAxMjgqY291bnQzKTsKICAgICBjb3VudDMgPSAwOwotICAgIGZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgeworICAgIGZvciAoaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBpbnQgbzEsIG8yLCBvMywgaTIsIGkzOwotICAgICAgICBpZiAoZGVjb2RlW2ldID09IDB4RkZGRSkKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gMHhGRkZFKQogICAgICAgICAgICAgLyogdW5tYXBwZWQgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbzEgPSBkZWNvZGVbaV0+PjExOwotICAgICAgICBvMiA9IChkZWNvZGVbaV0+PjcpICYgMHhGOworICAgICAgICBvMSA9IGNoPj4xMTsKKyAgICAgICAgbzIgPSAoY2g+PjcpICYgMHhGOwogICAgICAgICBpMiA9IDE2Km1sZXZlbDFbbzFdICsgbzI7CiAgICAgICAgIGlmIChtbGV2ZWwyW2kyXSA9PSAweEZGKQogICAgICAgICAgICAgbWxldmVsMltpMl0gPSBjb3VudDMrKzsKLSAgICAgICAgbzMgPSBkZWNvZGVbaV0gJiAweDdGOworICAgICAgICBvMyA9IGNoICYgMHg3RjsKICAgICAgICAgaTMgPSAxMjgqbWxldmVsMltpMl0gKyBvMzsKICAgICAgICAgbWxldmVsM1tpM10gPSBpOwogICAgIH0KQEAgLTU1MzUsNyArNzc4NCw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWVuY29kaW5nX21hcF9sb29rdXAoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZykKK2VuY29kaW5nX21hcF9sb29rdXAoUHlfVUNTNCBjLCBQeU9iamVjdCAqbWFwcGluZykKIHsKICAgICBzdHJ1Y3QgZW5jb2RpbmdfbWFwICptYXAgPSAoc3RydWN0IGVuY29kaW5nX21hcCopbWFwcGluZzsKICAgICBpbnQgbDEgPSBjPj4xMTsKQEAgLTU1NDMsMTEgKzc3OTIsOCBAQAogICAgIGludCBsMyA9IGMgJiAweDdGOwogICAgIGludCBpOwogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaWYgKGMgPiAweEZGRkYpIHsKKyAgICBpZiAoYyA+IDB4RkZGRikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgogICAgIGlmIChjID09IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIGxldmVsIDEqLwpAQCAtNTU3MSw3ICs3ODE3LDggQEAKIC8qIExvb2t1cCB0aGUgY2hhcmFjdGVyIGNoIGluIHRoZSBtYXBwaW5nLiBJZiB0aGUgY2hhcmFjdGVyCiAgICBjYW4ndCBiZSBmb3VuZCwgUHlfTm9uZSBpcyByZXR1cm5lZCAob3IgTlVMTCwgaWYgYW5vdGhlcgogICAgZXJyb3Igb2NjdXJyZWQpLiAqLwotc3RhdGljIFB5T2JqZWN0ICpjaGFybWFwZW5jb2RlX2xvb2t1cChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nKQorc3RhdGljIFB5T2JqZWN0ICoKK2NoYXJtYXBlbmNvZGVfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcpCiB7CiAgICAgUHlPYmplY3QgKncgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpYyk7CiAgICAgUHlPYmplY3QgKng7CkBAIC01NjI4LDE2ICs3ODc1LDE2IEBACiAKIHR5cGVkZWYgZW51bSBjaGFybWFwZW5jb2RlX3Jlc3VsdCB7CiAgICAgZW5jX1NVQ0NFU1MsIGVuY19GQUlMRUQsIGVuY19FWENFUFRJT04KLX1jaGFybWFwZW5jb2RlX3Jlc3VsdDsKK30gY2hhcm1hcGVuY29kZV9yZXN1bHQ7CiAvKiBsb29rdXAgdGhlIGNoYXJhY3RlciwgcHV0IHRoZSByZXN1bHQgaW4gdGhlIG91dHB1dCBzdHJpbmcgYW5kIGFkanVzdAogICAgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuIFJlc2l6ZSB0aGUgb3V0cHV0IGJ5dGVzIG9iamVjdCBpZiBub3QgZW5vdWdoCiAgICBzcGFjZSBpcyBhdmFpbGFibGUuIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCB0aGF0CiAgICB3YXMgcHV0IGluIHRoZSBvdXRwdXQgYnVmZmVyLCBvciBQeV9Ob25lLCBpZiB0aGUgbWFwcGluZyB3YXMgdW5kZWZpbmVkCiAgICAoaW4gd2hpY2ggY2FzZSBubyBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4pIG9yIE5VTEwsIGlmIGEKICAgIHJlYWxsb2NhdGlvbiBlcnJvciBvY2N1cnJlZC4gVGhlIGNhbGxlciBtdXN0IGRlY3JlZiB0aGUgcmVzdWx0ICovCi1zdGF0aWMKLWNoYXJtYXBlbmNvZGVfcmVzdWx0IGNoYXJtYXBlbmNvZGVfb3V0cHV0KFB5X1VOSUNPREUgYywgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm91dG9iaiwgUHlfc3NpemVfdCAqb3V0cG9zKQorc3RhdGljIGNoYXJtYXBlbmNvZGVfcmVzdWx0CitjaGFybWFwZW5jb2RlX291dHB1dChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvdXRvYmosIFB5X3NzaXplX3QgKm91dHBvcykKIHsKICAgICBQeU9iamVjdCAqcmVwOwogICAgIGNoYXIgKm91dHN0YXJ0OwpAQCAtNTY5MywxNyArNzk0MCwxOSBAQAogCiAvKiBoYW5kbGUgYW4gZXJyb3IgaW4gUHlVbmljb2RlX0VuY29kZUNoYXJtYXAKICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwX2VuY29kaW5nX2Vycm9yKAotICAgIGNvbnN0IFB5X1VOSUNPREUgKnAsIFB5X3NzaXplX3Qgc2l6ZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAorc3RhdGljIGludAorY2hhcm1hcF9lbmNvZGluZ19lcnJvcigKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAogICAgIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAogICAgIGludCAqa25vd25fZXJyb3JIYW5kbGVyLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwgY29uc3QgY2hhciAqZXJyb3JzLAogICAgIFB5T2JqZWN0ICoqcmVzLCBQeV9zc2l6ZV90ICpyZXNwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KLSAgICBQeV9zc2l6ZV90IHJlcHNpemU7CisgICAgUHlfc3NpemVfdCBzaXplLCByZXBzaXplOwogICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bmVuY29kYWJsZSBjaGFycyAqLwogICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0cG9zID0gKmlucG9zOwogICAgIFB5X3NzaXplX3QgY29sbGVuZHBvcyA9ICppbnBvcysxOwpAQCAtNTcxMSwxOSArNzk2MCwyNiBAQAogICAgIGNoYXIgKmVuY29kaW5nID0gImNoYXJtYXAiOwogICAgIGNoYXIgKnJlYXNvbiA9ICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiI7CiAgICAgY2hhcm1hcGVuY29kZV9yZXN1bHQgeDsKKyAgICBQeV9VQ1M0IGNoOworICAgIGludCB2YWw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOwogICAgIC8qIGZpbmQgYWxsIHVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgKi8KICAgICB3aGlsZSAoY29sbGVuZHBvcyA8IHNpemUpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcDsKICAgICAgICAgaWYgKFB5X1RZUEUobWFwcGluZykgPT0gJkVuY29kaW5nTWFwVHlwZSkgewotICAgICAgICAgICAgaW50IHJlcyA9IGVuY29kaW5nX21hcF9sb29rdXAocFtjb2xsZW5kcG9zXSwgbWFwcGluZyk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IC0xKQorICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxlbmRwb3MpOworICAgICAgICAgICAgdmFsID0gZW5jb2RpbmdfbWFwX2xvb2t1cChjaCwgbWFwcGluZyk7CisgICAgICAgICAgICBpZiAodmFsICE9IC0xKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgKytjb2xsZW5kcG9zOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICByZXAgPSBjaGFybWFwZW5jb2RlX2xvb2t1cChwW2NvbGxlbmRwb3NdLCBtYXBwaW5nKTsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxlbmRwb3MpOworICAgICAgICByZXAgPSBjaGFybWFwZW5jb2RlX2xvb2t1cChjaCwgbWFwcGluZyk7CiAgICAgICAgIGlmIChyZXA9PU5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVsc2UgaWYgKHJlcCE9UHlfTm9uZSkgewpAQCAtNTc0OSw3ICs4MDA1LDcgQEAKICAgICB9CiAgICAgc3dpdGNoICgqa25vd25fZXJyb3JIYW5kbGVyKSB7CiAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvczxjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKQEAgLTU3NTgsNyArODAxNCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoeD09ZW5jX0ZBSUxFRCkgewotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTc3MSwxMyArODAyNywxMyBAQAogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3MgPCBjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKICAgICAgICAgICAgIGNoYXIgKmNwOwotICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIChpbnQpcFtjb2xscG9zXSk7CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiYjJWQ7IiwgKGludClQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxwb3MpKTsKICAgICAgICAgICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgKytjcCkgewogICAgICAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgqY3AsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKICAgICAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHg9PWVuY19GQUlMRUQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTc4Niw3ICs4MDQyLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgcCwgc2l6ZSwgZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgZXhjZXB0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCAmbmV3cG9zKTsKICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU4MTAsMTUgKzgwNjYsMjMgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLwotICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICBmb3IgKHVuaTIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTsgcmVwc2l6ZS0tPjA7ICsrdW5pMikgewotICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KCp1bmkyLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXB1bmljb2RlKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcHVuaWNvZGUpOworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCByZXBzaXplOyBpbmRleCsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IHJlcGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpOworICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KHJlcGNoLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh4PT1lbmNfRkFJTEVEKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTgyOCwxNSArODA5MiwxNiBAQAogICAgIHJldHVybiAwOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICAvKiBvdXRwdXQgb2JqZWN0ICovCiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgLyogY3VycmVudCBpbnB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgaW5wb3MgPSAwOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKQEAgLTU4NDYsOSArODExMSwxMyBAQAogICAgICAqIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEocCwgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEodW5pY29kZSwgZXJyb3JzLCAyNTYpOwogCiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSBlbmNvZGluZyB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwpAQCAtNTg1OSwxMiArODEyOCwxMyBAQAogICAgICAgICByZXR1cm4gcmVzOwogCiAgICAgd2hpbGUgKGlucG9zPHNpemUpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgaW5wb3MpOwogICAgICAgICAvKiB0cnkgdG8gZW5jb2RlIGl0ICovCi0gICAgICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHggPSBjaGFybWFwZW5jb2RlX291dHB1dChwW2lucG9zXSwgbWFwcGluZywgJnJlcywgJnJlc3Bvcyk7CisgICAgICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHggPSBjaGFybWFwZW5jb2RlX291dHB1dChjaCwgbWFwcGluZywgJnJlcywgJnJlc3Bvcyk7CiAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKSAvKiBlcnJvciAqLwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICBpZiAoeD09ZW5jX0ZBSUxFRCkgeyAvKiB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHAsIHNpemUsICZpbnBvcywgbWFwcGluZywKKyAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHVuaWNvZGUsICZpbnBvcywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25fZXJyb3JIYW5kbGVyLCAmZXJyb3JIYW5kbGVyLCBlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzLCAmcmVzcG9zKSkgewpAQCAtNTg5MiwyOCArODE2Miw0MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8IG1hcHBpbmcgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAodW5pY29kZSwgbWFwcGluZywgTlVMTCk7CiB9CiAKIC8qIGNyZWF0ZSBvciBhZGp1c3QgYSBVbmljb2RlVHJhbnNsYXRlRXJyb3IgKi8KLXN0YXRpYyB2b2lkIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK21ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkgewotICAgICAgICAqZXhjZXB0aW9uT2JqZWN0ID0gUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAotICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IF9QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUoCisgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0KCpleGNlcHRpb25PYmplY3QsIHN0YXJ0cG9zKSkKQEAgLTU5MzAsMTMgKzgyMTUsMTQgQEAKIH0KIAogLyogcmFpc2VzIGEgVW5pY29kZVRyYW5zbGF0ZUVycm9yICovCi1zdGF0aWMgdm9pZCByYWlzZV90cmFuc2xhdGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCAhPSBOVUxMKQogICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycygqZXhjZXB0aW9uT2JqZWN0KTsKIH0KQEAgLTU5NDUsMTIgKzgyMzEsMTMgQEAKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBwdXQgdGhlIHJlc3VsdCBpbnRvIG5ld3BvcyBhbmQgcmV0dXJuIHRoZSByZXBsYWNlbWVudCBzdHJpbmcsIHdoaWNoCiAgICBoYXMgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlciAqLwotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX3RyYW5zbGF0ZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKQEAgLTU5NjUsNyArODI1Miw3IEBACiAgICAgfQogCiAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNTk4NCwxMCArODI3MSwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGlfbmV3cG9zPDApCi0gICAgICAgICpuZXdwb3MgPSBzaXplK2lfbmV3cG9zOworICAgICAgICAqbmV3cG9zID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkraV9uZXdwb3M7CiAgICAgZWxzZQogICAgICAgICAqbmV3cG9zID0gaV9uZXdwb3M7Ci0gICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPnNpemUpIHsKKyAgICBpZiAoKm5ld3BvczwwIHx8ICpuZXdwb3M+UHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0luZGV4RXJyb3IsICJwb3NpdGlvbiAlemQgZnJvbSBlcnJvciBoYW5kbGVyIG91dCBvZiBib3VuZHMiLCAqbmV3cG9zKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3R1cGxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MDAwLDggKzgyODcsOCBAQAogLyogTG9va3VwIHRoZSBjaGFyYWN0ZXIgY2ggaW4gdGhlIG1hcHBpbmcgYW5kIHB1dCB0aGUgcmVzdWx0IGluIHJlc3VsdCwKICAgIHdoaWNoIG11c3QgYmUgZGVjcmVmZWQgYnkgdGhlIGNhbGxlci4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKnJlc3VsdCkKK3N0YXRpYyBpbnQKK2NoYXJtYXB0cmFuc2xhdGVfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcsIFB5T2JqZWN0ICoqcmVzdWx0KQogewogICAgIFB5T2JqZWN0ICp3ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWMpOwogICAgIFB5T2JqZWN0ICp4OwpAQCAtNjA1MCwyMCArODMzNywyMSBAQAogLyogZW5zdXJlIHRoYXQgKm91dG9iaiBpcyBhdCBsZWFzdCByZXF1aXJlZHNpemUgY2hhcmFjdGVycyBsb25nLAogICAgaWYgbm90IHJlYWxsb2NhdGUgYW5kIGFkanVzdCB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcy4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShQeU9iamVjdCAqKm91dG9iaiwgUHlfVU5JQ09ERSAqKm91dHAsCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShQeV9VQ1M0ICoqb3V0b2JqLCBQeV9zc2l6ZV90ICpwc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSkKIHsKLSAgICBQeV9zc2l6ZV90IG9sZHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKm91dG9iaik7CisgICAgUHlfc3NpemVfdCBvbGRzaXplID0gKnBzaXplOworICAgIFB5X1VDUzQgKm5ld19vdXRvYmo7CiAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG9sZHNpemUpIHsKLSAgICAgICAgLyogcmVtZW1iZXIgb2xkIG91dHB1dCBwb3NpdGlvbiAqLwotICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9ICpvdXRwLVB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRvYmopOwogICAgICAgICAvKiBleHBvbmVudGlhbGx5IG92ZXJhbGxvY2F0ZSB0byBtaW5pbWl6ZSByZWFsbG9jYXRpb25zICovCiAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPCAyICogb2xkc2l6ZSkKICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIgKiBvbGRzaXplOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZShvdXRvYmosIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgICAgICBuZXdfb3V0b2JqID0gUHlNZW1fUmVhbGxvYygqb3V0b2JqLCByZXF1aXJlZHNpemUgKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBpZiAobmV3X291dG9iaiA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqb3V0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRvYmopICsgb3V0cG9zOworICAgICAgICAqb3V0b2JqID0gbmV3X291dG9iajsKKyAgICAgICAgKnBzaXplID0gcmVxdWlyZWRzaXplOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTYwNzMsMzggKzgzNjEsNDQgQEAKICAgIHVuZGVmaW5lZCAoaW4gd2hpY2ggY2FzZSBubyBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4pLgogICAgVGhlIGNhbGxlZCBtdXN0IGRlY3JlZiByZXN1bHQuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KLXN0YXRpYwotaW50IGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KGNvbnN0IFB5X1VOSUNPREUgKnN0YXJ0aW5wLCBjb25zdCBQeV9VTklDT0RFICpjdXJpbnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbnNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKm91dG9iaiwgUHlfVU5JQ09ERSAqKm91dHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipyZXMpCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX291dHB1dChQeU9iamVjdCAqaW5wdXQsIFB5X3NzaXplX3QgaXBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLCBQeV9VQ1M0ICoqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqb3NpemUsIFB5X3NzaXplX3QgKm9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnJlcykKIHsKLSAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKmN1cmlucCwgbWFwcGluZywgcmVzKSkKKyAgICBQeV9VQ1M0IGN1cmlucCA9IFB5VW5pY29kZV9SRUFEX0NIQVIoaW5wdXQsIGlwb3MpOworICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChjdXJpbnAsIG1hcHBpbmcsIHJlcykpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoKnJlcz09TlVMTCkgewogICAgICAgICAvKiBub3QgZm91bmQgPT4gZGVmYXVsdCB0byAxOjEgbWFwcGluZyAqLwotICAgICAgICAqKCpvdXRwKSsrID0gKmN1cmlucDsKKyAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBjdXJpbnA7CiAgICAgfQogICAgIGVsc2UgaWYgKCpyZXM9PVB5X05vbmUpCiAgICAgICAgIDsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soKnJlcykpIHsKICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgKigqb3V0cCkrKyA9IChQeV9VTklDT0RFKVB5TG9uZ19BU19MT05HKCpyZXMpOworICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IChQeV9VQ1M0KVB5TG9uZ19BU19MT05HKCpyZXMpOwogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soKnJlcykpIHsKLSAgICAgICAgUHlfc3NpemVfdCByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpyZXMpOworICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoKnJlcykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcmVzKTsKICAgICAgICAgaWYgKHJlcHNpemU9PTEpIHsKICAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAqKCpvdXRwKSsrID0gKlB5VW5pY29kZV9BU19VTklDT0RFKCpyZXMpOworICAgICAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKCpyZXMsIDApOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHJlcHNpemUhPTApIHsKICAgICAgICAgICAgIC8qIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSA9ICgqb3V0cC1QeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0b2JqKSkgKwotICAgICAgICAgICAgICAgIChpbnNpemUgLSAoY3VyaW5wLXN0YXJ0aW5wKSkgKworICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUgPSAqb3BvcyArCisgICAgICAgICAgICAgICAgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KSAtIGlwb3MpICsKICAgICAgICAgICAgICAgICByZXBzaXplIC0gMTsKLSAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShvdXRvYmosIG91dHAsIHJlcXVpcmVkc2l6ZSkpCisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2Uob3V0cHV0LCBvc2l6ZSwgcmVxdWlyZWRzaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBtZW1jcHkoKm91dHAsIFB5VW5pY29kZV9BU19VTklDT0RFKCpyZXMpLCBzaXplb2YoUHlfVU5JQ09ERSkqcmVwc2l6ZSk7Ci0gICAgICAgICAgICAqb3V0cCArPSByZXBzaXplOworICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVwc2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUigqcmVzLCBpKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC02MTEyLDIwICs4NDA2LDIxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICAvKiBvdXRwdXQgb2JqZWN0ICovCi0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgLyogcG9pbnRlcnMgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kKzEgb2YgaW5wdXQgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzdGFydHAgPSBwOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmVuZHAgPSBwICsgc2l6ZTsKLSAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwotICAgIFB5X1VOSUNPREUgKnN0cjsKKyAgICAvKiBpbnB1dCBvYmplY3QgKi8KKyAgICBjaGFyICppZGF0YTsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgaW50IGtpbmQ7CisgICAgLyogb3V0cHV0IGJ1ZmZlciAqLworICAgIFB5X1VDUzQgKm91dHB1dCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBvc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzOwogICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgUHlfc3NpemVfdCByZXNwb3MgPSAwOworICAgIFB5X3NzaXplX3Qgb3BvczsKICAgICBjaGFyICpyZWFzb24gPSAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwpAQCAtNjEzOSwzOCArODQzNCw1MiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWRhdGEgPSAoY2hhciopUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKKyAgICBpID0gMDsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKKyAgICAgICAgcmV0dXJuIGlucHV0OworICAgIH0KKwogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgMToxIHRyYW5zbGF0aW9uIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCi0gICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICBvc2l6ZSA9IHNpemU7CisgICAgb3V0cHV0ID0gUHlNZW1fTWFsbG9jKG9zaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICBvcG9zID0gMDsKKyAgICBpZiAob3V0cHV0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiByZXM7Ci0gICAgc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKKyAgICB9CiAKLSAgICB3aGlsZSAocDxlbmRwKSB7CisgICAgd2hpbGUgKGk8c2l6ZSkgewogICAgICAgICAvKiB0cnkgdG8gZW5jb2RlIGl0ICovCiAgICAgICAgIFB5T2JqZWN0ICp4ID0gTlVMTDsKLSAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KHN0YXJ0cCwgcCwgc2l6ZSwgbWFwcGluZywgJnJlcywgJnN0ciwgJngpKSB7CisgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX291dHB1dChpbnB1dCwgaSwgbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXQsICZvc2l6ZSwgJm9wb3MsICZ4KSkgewogICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHgpOwogICAgICAgICBpZiAoeCE9UHlfTm9uZSkgLyogaXQgd29ya2VkID0+IGFkanVzdCBpbnB1dCBwb2ludGVyICovCi0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICArK2k7CiAgICAgICAgIGVsc2UgeyAvKiB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaTI7CiAgICAgICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bnRyYW5zbGF0YWJsZSBjaGFycyAqLwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbHN0YXJ0ID0gcDsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxlbmQgPSBwKzE7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQgPSBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gaSsxOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsOwogCiAgICAgICAgICAgICAvKiBmaW5kIGFsbCB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoY29sbGVuZCA8IGVuZHApIHsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKmNvbGxlbmQsIG1hcHBpbmcsICZ4KSkKKyAgICAgICAgICAgIHdoaWxlIChjb2xsZW5kIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeVVuaWNvZGVfUkVBRChraW5kLGlkYXRhLCBjb2xsZW5kKSwgbWFwcGluZywgJngpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgICAgICAgICBpZiAoeCE9UHlfTm9uZSkKQEAgLTYxOTMsMjYxICs4NTAyLDQxOSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKICAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgICAgICAgICAgcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbigmZXhjLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4YywgaW5wdXQsIGNvbGxzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgICAgICAgICAgLyogTm8gbmVlZCB0byBjaGVjayBmb3Igc3BhY2UsIHRoaXMgaXMgYSAxOjEgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGNvbGwgPSBjb2xsc3RhcnQ7IGNvbGw8Y29sbGVuZDsgKytjb2xsKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnPyc7CisgICAgICAgICAgICAgICAgZm9yIChjb2xsID0gY29sbHN0YXJ0OyBjb2xsPGNvbGxlbmQ7IGNvbGwrKykKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAnPyc7CiAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApIHsKKyAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIGkpICovCisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3A7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCAoaW50KSpwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKCZyZXMsICZzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3N0cmxlbihidWZmZXIpKyhlbmRwLWNvbGxlbmQpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGlkYXRhLCBpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3N0cmxlbihidWZmZXIpKyhzaXplLWNvbGxlbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgZm9yIChjcCA9IGJ1ZmZlcjsgKmNwOyArK2NwKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gKmNwOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAqY3A7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIGlucHV0LCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOwogICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAgKi8KLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmcmVzLCAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3JlcHNpemUrKGVuZHAtY29sbGVuZCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpCi0gICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICp1bmkyOwotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IDA7IHJlcHNpemUtLT4wOyArK3VuaTIpCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCB1bmkyKTsKKyAgICAgICAgICAgICAgICBpID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAvKiBSZXNpemUgaWYgd2UgYWxsb2NhdGVkIHRvIG11Y2ggKi8KLSAgICByZXNwb3MgPSBzdHItUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICBpZiAocmVzcG9zPFB5VW5pY29kZV9HRVRfU0laRShyZXMpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZyZXMsIHJlc3BvcykgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgIH0KKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIG9wb3MpOworICAgIGlmICghcmVzKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZC4gVXNlIFB5VW5pY29kZV9UcmFuc2xhdGUgaW5zdGVhZC4gKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIHNpemUpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gcmVzdWx0OworfQogCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihzdHIpOwotICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5X1VDUzQKK2ZpeF9kZWNpbWFsX2FuZF9zcGFjZV90b19hc2NpaShQeU9iamVjdCAqc2VsZikKK3sKKyAgICAvKiBObyBuZWVkIHRvIGNhbGwgUHlVbmljb2RlX1JFQURZKHNlbGYpIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5CisgICAgICAgY2FsbGVkIGFzIGEgY2FsbGJhY2sgZnJvbSBmaXh1cCgpIHdoaWNoIGRvZXMgaXQgYWxyZWFkeS4gKi8KKyAgICBjb25zdCBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGNvbnN0IGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNywgY2gsIGZpeGVkOworICAgIGludCBtb2RpZmllZCA9IDA7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGZpeGVkID0gMDsKKyAgICAgICAgaWYgKGNoID4gMTI3KSB7CisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkKKyAgICAgICAgICAgICAgICBmaXhlZCA9ICcgJzsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOworICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCisgICAgICAgICAgICAgICAgICAgIGZpeGVkID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaXhlZCAhPSAwKSB7CisgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBmaXhlZCk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksIGZpeGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgY2gpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIChtb2RpZmllZCkgPyBtYXhjaGFyIDogMDsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8PSAxMjcpIHsKKyAgICAgICAgLyogSWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IEFTQ0lJLCBqdXN0IHJldHVybiB0aGUgc2FtZSBzdHJpbmcgKi8KKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICB9CisgICAgcmV0dXJuIGZpeHVwKHVuaWNvZGUsIGZpeF9kZWNpbWFsX2FuZF9zcGFjZV90b19hc2NpaSk7CiB9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfVU5JQ09ERSAqcDsgLyogd3JpdGUgcG9pbnRlciBpbnRvIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpkZWNpbWFsOwogICAgIFB5X3NzaXplX3QgaTsKLSAgICAvKiBDb3B5IHRvIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKV9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCksIHMsIGxlbmd0aCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgIC8qIEl0ZXJhdGUgb3ZlciBjb2RlIHBvaW50cyAqLworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIG1heGNoYXIgPSAxMjc7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPXNbaV07CisgICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOwogICAgICAgICBpZiAoY2ggPiAxMjcpIHsKICAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKLSAgICAgICAgICAgICAgICBwW2ldID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgICAgICAgICBjaCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgY2gpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvKiBDb3B5IHRvIGEgbmV3IHN0cmluZyAqLworICAgIGRlY2ltYWwgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgbWF4Y2hhcik7CisgICAgaWYgKGRlY2ltYWwgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGRlY2ltYWw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGRlY2ltYWwpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShkZWNpbWFsKTsKKyAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgICAgIGlmIChjaCA+IDEyNykgeworICAgICAgICAgICAgaW50IGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7CisgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQorICAgICAgICAgICAgICAgIGNoID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgfQorICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgY2gpOworICAgIH0KKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQoZGVjaW1hbCk7CiB9CiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotaW50IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK2ludAorUHlVbmljb2RlX0VuY29kZURlY2ltYWwoUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5X1VOSUNPREUgKnAsICplbmQ7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiZGVjaW1hbCI7Ci0gICAgY29uc3QgY2hhciAqcmVhc29uID0gImludmFsaWQgZGVjaW1hbCBVbmljb2RlIHN0cmluZyI7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAob3V0cHV0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHAgPSBzOwotICAgIGVuZCA9IHMgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgbGVuZ3RoKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgZm9yIChpPTA7IGkgPCBsZW5ndGg7ICkgeworICAgICAgICBQeU9iamVjdCAqZXhjOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQgZGVjaW1hbDsKLSAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGU7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKLSAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgIFB5X1VOSUNPREUgKnVuaTI7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNvbGxzdGFydDsKLSAgICAgICAgUHlfVU5JQ09ERSAqY29sbGVuZDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvczsKKworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKSB7CiAgICAgICAgICAgICAqb3V0cHV0KysgPSAnICc7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKSB7CiAgICAgICAgICAgICAqb3V0cHV0KysgPSAnMCcgKyBkZWNpbWFsOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKDAgPCBjaCAmJiBjaCA8IDI1NikgewogICAgICAgICAgICAgKm91dHB1dCsrID0gKGNoYXIpY2g7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICAvKiBBbGwgb3RoZXIgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZCB1bmVuY29kYWJsZSAqLwotICAgICAgICBjb2xsc3RhcnQgPSBwOwotICAgICAgICBmb3IgKGNvbGxlbmQgPSBwKzE7IGNvbGxlbmQgPCBlbmQ7IGNvbGxlbmQrKykgewotICAgICAgICAgICAgaWYgKCgwIDwgKmNvbGxlbmQgJiYgKmNvbGxlbmQgPCAyNTYpIHx8Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFKCpjb2xsZW5kKSB8fAotICAgICAgICAgICAgICAgIDAgPD0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoKmNvbGxlbmQpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCi0gICAgICAgICAqIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewotICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgcywgbGVuZ3RoLCBjb2xsc3RhcnQtcywgY29sbGVuZC1zLCByZWFzb24pOwotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KLSAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkKLSAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnPyc7Ci0gICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KLSAgICAgICAgICAgIHAgPSBjb2xsZW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkKLSAgICAgICAgICAgICAgICBvdXRwdXQgKz0gc3ByaW50ZihvdXRwdXQsICImIyVkOyIsIChpbnQpKnApOwotICAgICAgICAgICAgcCA9IGNvbGxlbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgcywgbGVuZ3RoLCAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydC1zLCBjb2xsZW5kLXMsICZuZXdwb3MpOwotICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXB1bmljb2RlKSkgewotICAgICAgICAgICAgICAgIC8qIEJ5dGUgcmVzdWx0cyBub3Qgc3VwcG9ydGVkLCBzaW5jZSB0aGV5IGhhdmUgbm8gZGVjaW1hbCBwcm9wZXJ0eS4gKi8KLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXJyb3IgaGFuZGxlciBzaG91bGQgcmV0dXJuIHVuaWNvZGUiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gKnVuaTI7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9ICcgJzsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9ICcwJyArIGRlY2ltYWw7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKDAgPCBjaCAmJiBjaCA8IDI1NikKLSAgICAgICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKWNoOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGxlbmd0aCwgY29sbHN0YXJ0LXMsIGNvbGxlbmQtcywgcmVhc29uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAgPSBzICsgbmV3cG9zOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICB9CisKKyAgICAgICAgc3RhcnRwb3MgPSBpOworICAgICAgICBleGMgPSBOVUxMOworICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJkZWNpbWFsIiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHBvcywgc3RhcnRwb3MrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBkZWNpbWFsIFVuaWNvZGUgc3RyaW5nIik7CisgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIDAtdGVybWluYXRlIHRoZSBvdXRwdXQgc3RyaW5nICovCiAgICAgKm91dHB1dCsrID0gJ1wwJzsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICByZXR1cm4gMDsKLQotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgcmV0dXJuIC0xOwogfQogCiAvKiAtLS0gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotI2luY2x1ZGUgInN0cmluZ2xpYi91bmljb2RlZGVmcy5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCitzdGF0aWMgUHlfc3NpemVfdAorYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCit7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIHJlc3VsdDsKIAotI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoczEpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoczIpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoczEpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzMik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzMSwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICByZXR1cm4gLTI7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzMiwga2luZCk7CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMSk7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMyKTsKIAotI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZQotI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisgICAgaWYgKGRpcmVjdGlvbiA+IDApIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdWNzMWxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3MybGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOyByZXN1bHQgPSAtMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gLTI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5X3NzaXplX3QKK19QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICB2b2lkICpkaWdpdHMsIFB5X3NzaXplX3Qgbl9kaWdpdHMsCisgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsIFB5T2JqZWN0ICp0aG91c2FuZHNfc2VwLAorICAgIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgdW5zaWduZWQgaW50IGtpbmQsIHRob3VzYW5kc19zZXBfa2luZDsKKyAgICBjaGFyICpkYXRhLCAqdGhvdXNhbmRzX3NlcF9kYXRhOworICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW47CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBpZiAodW5pY29kZSAhPSBOVUxMKSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgZGF0YSA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpICsgaW5kZXggKiBraW5kOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBkYXRhID0gTlVMTDsKKyAgICB9CisgICAgdGhvdXNhbmRzX3NlcF9raW5kID0gUHlVbmljb2RlX0tJTkQodGhvdXNhbmRzX3NlcCk7CisgICAgdGhvdXNhbmRzX3NlcF9kYXRhID0gUHlVbmljb2RlX0RBVEEodGhvdXNhbmRzX3NlcCk7CisgICAgdGhvdXNhbmRzX3NlcF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0aG91c2FuZHNfc2VwKTsKKyAgICBpZiAodW5pY29kZSAhPSBOVUxMICYmIHRob3VzYW5kc19zZXBfa2luZCAhPSBraW5kKSB7CisgICAgICAgIGlmICh0aG91c2FuZHNfc2VwX2tpbmQgPCBraW5kKSB7CisgICAgICAgICAgICB0aG91c2FuZHNfc2VwX2RhdGEgPSBfUHlVbmljb2RlX0FzS2luZCh0aG91c2FuZHNfc2VwLCBraW5kKTsKKyAgICAgICAgICAgIGlmICghdGhvdXNhbmRzX3NlcF9kYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRhdGEgPSBfUHlVbmljb2RlX0FzS2luZCh1bmljb2RlLCB0aG91c2FuZHNfc2VwX2tpbmQpOworICAgICAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmICh1bmljb2RlICE9IE5VTEwgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgbGVuID0gYXNjaWlsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MxICopIGRpZ2l0cywgbl9kaWdpdHMsCisgICAgICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywKKyAgICAgICAgICAgICAgICAoUHlfVUNTMSAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuID0gdWNzMWxpYl9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgICAgICAoUHlfVUNTMSopZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MxKilkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIGxlbiA9IHVjczJsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAoUHlfVUNTMiAqKSBkYXRhLCBuX2J1ZmZlciwgKFB5X1VDUzIgKikgZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAoUHlfVUNTMiAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgbGVuID0gdWNzNGxpYl9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgIChQeV9VQ1M0ICopIGRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTNCAqKSBkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywKKyAgICAgICAgICAgIChQeV9VQ1M0ICopIHRob3VzYW5kc19zZXBfZGF0YSwgdGhvdXNhbmRzX3NlcF9sZW4pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCAmJiB0aG91c2FuZHNfc2VwX2tpbmQgIT0ga2luZCkgeworICAgICAgICBpZiAodGhvdXNhbmRzX3NlcF9raW5kIDwga2luZCkKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUodGhvdXNhbmRzX3NlcF9kYXRhKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlNZW1fRnJlZShkYXRhKTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICAqbWF4Y2hhciA9IDEyNzsKKyAgICAgICAgaWYgKGxlbiAhPSBuX2RpZ2l0cykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRob3VzYW5kc19zZXApKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbGVuOworfQorCiAKIC8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCiAjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCkBAIC02NDY0LDcyICs4OTMxLDEwMiBAQAogICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotLyogX1B5X1VOSUNPREVfTkVYVCBpcyBhIHByaXZhdGUgbWFjcm8gdXNlZCB0byByZXRyaWV2ZSB0aGUgY2hhcmFjdGVyIHBvaW50ZWQKLSAqIGJ5ICdwdHInLCBwb3NzaWJseSBjb21iaW5pbmcgc3Vycm9nYXRlIHBhaXJzIG9uIG5hcnJvdyBidWlsZHMuCi0gKiAncHRyJyBhbmQgJ2VuZCcgbXVzdCBiZSBQeV9VTklDT0RFKiwgd2l0aCAncHRyJyBwb2ludGluZyBhdCB0aGUgY2hhcmFjdGVyCi0gKiB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhbmQgJ2VuZCcgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgotICogKCdlbmQnIGlzIHVzZWQgb24gbmFycm93IGJ1aWxkcyB0byBkZXRlY3QgYSBsb25lIHN1cnJvZ2F0ZSBhdCB0aGUKLSAqIGVuZCBvZiB0aGUgYnVmZmVyIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIHVuY2hhbmdlZC4pCi0gKiBUaGUgcHRyIGFuZCBlbmQgYXJndW1lbnRzIHNob3VsZCBiZSBzaWRlLWVmZmVjdCBmcmVlIGFuZCBwdHIgbXVzdCBhbiBsdmFsdWUuCi0gKiBUaGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgY2hhciBpcyBhbHdheXMgUHlfVUNTNC4KLSAqCi0gKiBOb3RlOiB0aGUgbWFjcm8gYWR2YW5jZXMgcHRyIHRvIG5leHQgY2hhciwgc28gaXQgbWlnaHQgaGF2ZSBzaWRlLWVmZmVjdHMKLSAqICAgICAgIChlc3BlY2lhbGx5IGlmIHVzZWQgd2l0aCBvdGhlciBtYWNyb3MpLgotICovCi0KLS8qIGhlbHBlciBtYWNyb3MgdXNlZCBieSBfUHlfVU5JQ09ERV9ORVhUICovCi0jZGVmaW5lIF9QeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikKLSNkZWZpbmUgX1B5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkgKDB4REMwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpCi0vKiBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuICovCi0jZGVmaW5lIF9QeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhoaWdoLCBsb3cpICBcCi0gICAgKCgoKChQeV9VQ1M0KShoaWdoKSAmIDB4MDNGRikgPDwgMTApIHwgICAgICBcCi0gICAgICAoKFB5X1VDUzQpKGxvdykgJiAweDAzRkYpKSArIDB4MTAwMDApCi0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSNkZWZpbmUgX1B5X1VOSUNPREVfTkVYVChwdHIsIGVuZCkgKihwdHIpKysKLSNlbHNlCi0jZGVmaW5lIF9QeV9VTklDT0RFX05FWFQocHRyLCBlbmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICgoKF9QeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKCoocHRyKSkgJiYgKHB0cikgPCAoZW5kKSkgJiYgICAgICBcCi0gICAgICAgIF9QeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoKHB0cilbMV0pKSA/ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgKChwdHIpICs9IDIsX1B5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKChwdHIpWy0yXSwgKHB0cilbLTFdKSkgOiBcCi0gICAgICAgKFB5X1VDUzQpKihwdHIpKyspCi0jZW5kaWYKLQotUHlfc3NpemVfdCBQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlVbmljb2RlT2JqZWN0KiBzdHJfb2JqOwotICAgIFB5VW5pY29kZU9iamVjdCogc3ViX29iajsKKyAgICBQeU9iamVjdCogc3RyX29iajsKKyAgICBQeU9iamVjdCogc3ViX29iajsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IChQeVVuaWNvZGVPYmplY3QqKSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOworICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmICghc3RyX29iaikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1Yl9vYmogPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKKyAgICBzdWJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKICAgICBpZiAoIXN1Yl9vYmopIHsKICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX29iai0+bGVuZ3RoKTsKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfY291bnQoCi0gICAgICAgIHN0cl9vYmotPnN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViX29iai0+c3RyLCBzdWJfb2JqLT5sZW5ndGgsCi0gICAgICAgIFBZX1NTSVpFX1RfTUFYCi0gICAgICAgICk7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOworICAgIGtpbmQgPSBraW5kMTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kKSB7CisgICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kKTsKKyAgICB9CisgICAgaWYgKCFidWYyKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJfb2JqKTsKKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1Yl9vYmopKQorICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfY291bnQoCisgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfY291bnQoCisgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzIqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzQqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc3ViX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogCisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKICAgICByZXR1cm4gcmVzdWx0OworICBvbkVycm9yOgorICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gLTE7CiB9CiAKLVB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKQEAgLTY1NDEsMTkgKzkwMzgsMTUgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWIpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KIAotICAgIGlmIChkaXJlY3Rpb24gPiAwKQotICAgICAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3ViKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YiksCi0gICAgICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICAgICApOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWIpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3ViKSwKLSAgICAgICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgICAgICk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoZGlyZWN0aW9uLAorICAgICAgICBzdHIsIHN1Yiwgc3RhcnQsIGVuZAorICAgICAgICApOwogCiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1Yik7CkBAIC02NTYxLDM3ICs5MDU0LDEwNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYwotaW50IHRhaWxtYXRjaChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKLSAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9GaW5kQ2hhcihQeU9iamVjdCAqc3RyLCBQeV9VQ1M0IGNoLAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKHN1YnN0cmluZy0+bGVuZ3RoID09IDApCisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gLTI7CisgICAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorICAgIGlmIChlbmQgPiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKQorICAgICAgICBlbmQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIHJlc3VsdCA9IGZpbmRjaGFyKFB5VW5pY29kZV8xQllURV9EQVRBKHN0cikgKyBraW5kKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgIGtpbmQsIGVuZC1zdGFydCwgY2gsIGRpcmVjdGlvbik7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHN0YXJ0ICsgcmVzdWx0OworfQorCitzdGF0aWMgaW50Cit0YWlsbWF0Y2goUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKKyAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgIGludCBkaXJlY3Rpb24pCit7CisgICAgaW50IGtpbmRfc2VsZjsKKyAgICBpbnQga2luZF9zdWI7CisgICAgdm9pZCAqZGF0YV9zZWxmOworICAgIHZvaWQgKmRhdGFfc3ViOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IGVuZF9zdWI7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpID09IDApCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc2VsZi0+bGVuZ3RoKTsKLSAgICBlbmQgLT0gc3Vic3RyaW5nLT5sZW5ndGg7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOworICAgIGVuZCAtPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwogICAgIGlmIChlbmQgPCBzdGFydCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoZGlyZWN0aW9uID4gMCkgewotICAgICAgICBpZiAoUHlfVU5JQ09ERV9NQVRDSChzZWxmLCBlbmQsIHN1YnN0cmluZykpCisgICAga2luZF9zZWxmID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YV9zZWxmID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAga2luZF9zdWIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGRhdGFfc3ViID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBlbmRfc3ViID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSAtIDE7CisKKyAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgb2Zmc2V0ID0gZW5kOworICAgIGVsc2UKKyAgICAgICAgb2Zmc2V0ID0gc3RhcnQ7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCkgPT0KKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zdWIsIGRhdGFfc3ViLCAwKSAmJgorICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kX3NlbGYsIGRhdGFfc2VsZiwgb2Zmc2V0ICsgZW5kX3N1YikgPT0KKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zdWIsIGRhdGFfc3ViLCBlbmRfc3ViKSkgeworICAgICAgICAvKiBJZiBib3RoIGFyZSBvZiB0aGUgc2FtZSBraW5kLCBtZW1jbXAgaXMgc3VmZmljaWVudCAqLworICAgICAgICBpZiAoa2luZF9zZWxmID09IGtpbmRfc3ViKSB7CisgICAgICAgICAgICByZXR1cm4gISBtZW1jbXAoKGNoYXIgKilkYXRhX3NlbGYgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2Zmc2V0ICogUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZykpOworICAgICAgICB9CisgICAgICAgIC8qIG90aGVyd2lzZSB3ZSBoYXZlIHRvIGNvbXBhcmUgZWFjaCBjaGFyYWN0ZXIgYnkgZmlyc3QgYWNjZXNpbmcgaXQgKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBXZSBkbyBub3QgbmVlZCB0byBjb21wYXJlIDAgYW5kIGxlbihzdWJzdHJpbmcpLTEgYmVjYXVzZQorICAgICAgICAgICAgICAgdGhlIGlmIHN0YXRlbWVudCBhYm92ZSBlbnN1cmVkIGFscmVhZHkgdGhhdCB0aGV5IGFyZSBlcXVhbAorICAgICAgICAgICAgICAgd2hlbiB3ZSBlbmQgdXAgaGVyZS4gKi8KKyAgICAgICAgICAgIC8qIFRPRE86IGhvbm9yIGRpcmVjdGlvbiBhbmQgZG8gYSBmb3J3YXJkIG9yIGJhY2t3YXJkcyBzZWFyY2ggKi8KKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBlbmRfc3ViOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCArIGkpICE9CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgaSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKFB5X1VOSUNPREVfTUFUQ0goc2VsZiwgc3RhcnQsIHN1YnN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKQEAgLTY2MDQsOCArOTE2NCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goKFB5VW5pY29kZU9iamVjdCAqKXN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN1YnN0ciwKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1YnN0cik7CkBAIC02NjE1LDE2OCArOTE3NCwzMTIgQEAKIC8qIEFwcGx5IGZpeGZjdCBmaWx0ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0IHNlbGYgYW5kIHJldHVybiBhCiAgICByZWZlcmVuY2UgdG8gdGhlIG1vZGlmaWVkIG9iamVjdCAqLwogCi1zdGF0aWMKLVB5T2JqZWN0ICpmaXh1cChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgaW50ICgqZml4ZmN0KShQeVVuaWNvZGVPYmplY3QgKnMpKQorc3RhdGljIFB5T2JqZWN0ICoKK2ZpeHVwKFB5T2JqZWN0ICpzZWxmLAorICAgICAgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKQogeworICAgIFB5T2JqZWN0ICp1OworICAgIFB5X1VDUzQgbWF4Y2hhcl9vbGQsIG1heGNoYXJfbmV3ID0gMDsKKyAgICBQeU9iamVjdCAqdjsKIAotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLQotICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNlbGYtPmxlbmd0aCk7CisgICAgdSA9IF9QeVVuaWNvZGVfQ29weShzZWxmKTsKICAgICBpZiAodSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYXhjaGFyX29sZCA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKIAotICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKKyAgICAvKiBmaXggZnVuY3Rpb25zIHJldHVybiB0aGUgbmV3IG1heGltdW0gY2hhcmFjdGVyIGluIGEgc3RyaW5nLAorICAgICAgIGlmIHRoZSBraW5kIG9mIHRoZSByZXN1bHRpbmcgdW5pY29kZSBvYmplY3QgZG9lcyBub3QgY2hhbmdlLAorICAgICAgIGV2ZXJ5dGhpbmcgaXMgZmluZS4gIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgc3RyaW5nIGtpbmQKKyAgICAgICBhbmQgcmUtcnVuIHRoZSBmaXggZnVuY3Rpb24uICovCisgICAgbWF4Y2hhcl9uZXcgPSBmaXhmY3QodSk7CiAKLSAgICBpZiAoIWZpeGZjdCh1KSAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICAvKiBmaXhmY3Qgc2hvdWxkIHJldHVybiBUUlVFIGlmIGl0IG1vZGlmaWVkIHRoZSBidWZmZXIuIElmCi0gICAgICAgICAgIEZBTFNFLCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIGJ1ZmZlciBpbnN0ZWFkCi0gICAgICAgICAgICh0byBzYXZlIHNwYWNlLCBub3QgdGltZSkgKi8KLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIGlmIChtYXhjaGFyX25ldyA9PSAwKSB7CisgICAgICAgIC8qIG5vIGNoYW5nZXMgKi87CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHU7CisgICAgfQorCisgICAgbWF4Y2hhcl9uZXcgPSBhbGlnbl9tYXhjaGFyKG1heGNoYXJfbmV3KTsKKworICAgIGlmIChtYXhjaGFyX25ldyA9PSBtYXhjaGFyX29sZCkKKyAgICAgICAgcmV0dXJuIHU7CisKKyAgICAvKiBJbiBjYXNlIHRoZSBtYXhpbXVtIGNoYXJhY3RlciBjaGFuZ2VkLCB3ZSBuZWVkIHRvCisgICAgICAgY29udmVydCB0aGUgc3RyaW5nIHRvIHRoZSBuZXcgY2F0ZWdvcnkuICovCisgICAgdiA9IFB5VW5pY29kZV9OZXcoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNoYXJfbmV3KTsKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBpZiAobWF4Y2hhcl9uZXcgPiBtYXhjaGFyX29sZCkgeworICAgICAgICAvKiBJZiB0aGUgbWF4Y2hhciBpbmNyZWFzZWQgc28gdGhhdCB0aGUga2luZCBjaGFuZ2VkLCBub3QgYWxsCisgICAgICAgICAgIGNoYXJhY3RlcnMgYXJlIHJlcHJlc2VudGFibGUgYW55bW9yZSBhbmQgd2UgbmVlZCB0byBmaXggdGhlCisgICAgICAgICAgIHN0cmluZyBhZ2Fpbi4gVGhpcyBvbmx5IGhhcHBlbnMgaW4gdmVyeSBmZXcgY2FzZXMuICovCisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHYsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICAgICAgbWF4Y2hhcl9vbGQgPSBmaXhmY3Qodik7CisgICAgICAgIGFzc2VydChtYXhjaGFyX29sZCA+IDAgJiYgbWF4Y2hhcl9vbGQgPD0gbWF4Y2hhcl9uZXcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOworICAgIH0KKyAgICBQeV9ERUNSRUYodSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYwotaW50IGZpeHVwcGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBQeU9iamVjdCAqCithc2NpaV91cHBlcl9vcl9sb3dlcihQeU9iamVjdCAqc2VsZiwgaW50IGxvd2VyKQogewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBjaGFyICpyZXNkYXRhLCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2g7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhsZW4sIDEyNyk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXNkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBpZiAobG93ZXIpCisgICAgICAgIF9QeV9ieXRlc19sb3dlcihyZXNkYXRhLCBkYXRhLCBsZW4pOworICAgIGVsc2UKKyAgICAgICAgX1B5X2J5dGVzX3VwcGVyKHJlc2RhdGEsIGRhdGEsIGxlbik7CisgICAgcmV0dXJuIHJlczsKK30KIAotICAgICAgICBjaCA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgIGlmIChjaCAhPSAqcykgewotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgICAgICpzID0gY2g7CitzdGF0aWMgUHlfVUNTNAoraGFuZGxlX2NhcGl0YWxfc2lnbWEoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9zc2l6ZV90IGkpCit7CisgICAgUHlfc3NpemVfdCBqOworICAgIGludCBmaW5hbF9zaWdtYTsKKyAgICBQeV9VQ1M0IGM7CisgICAgLyogVSswM0EzIGlzIGluIHRoZSBGaW5hbF9TaWdtYSBjb250ZXh0IHdoZW4sIGl0IGlzIGZvdW5kIGxpa2UgdGhpczoKKworICAgICBccHtjYXNlZH1ccHtjYXNlLWlnbm9yYWJsZX0qVSswM0EzIShccHtjYXNlLWlnbm9yYWJsZX0qXHB7Y2FzZWR9KQorCisgICAgd2hlcmUgISBpcyBhIG5lZ2F0aW9uIGFuZCBccHt4eHh9IGlzIGEgY2hhcmFjdGVyIHdpdGggcHJvcGVydHkgeHh4LgorICAgICovCisgICAgZm9yIChqID0gaSAtIDE7IGogPj0gMDsgai0tKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZShjKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBmaW5hbF9zaWdtYSA9IGogPj0gMCAmJiBfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CisgICAgaWYgKGZpbmFsX3NpZ21hKSB7CisgICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcysrOworICAgICAgICBmaW5hbF9zaWdtYSA9IGogPT0gbGVuZ3RoIHx8ICFfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CiAgICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gKGZpbmFsX3NpZ21hKSA/IDB4M0MyIDogMHgzQzM7CiB9CiAKLXN0YXRpYwotaW50IGZpeGxvd2VyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBpbnQKK2xvd2VyX3VjczQoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9zc2l6ZV90IGksCisgICAgICAgICAgIFB5X1VDUzQgYywgUHlfVUNTNCAqbWFwcGVkKQogewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CisgICAgLyogT2JzY3VyZSBzcGVjaWFsIGNhc2UuICovCisgICAgaWYgKGMgPT0gMHgzQTMpIHsKKyAgICAgICAgbWFwcGVkWzBdID0gaGFuZGxlX2NhcGl0YWxfc2lnbWEoa2luZCwgZGF0YSwgbGVuZ3RoLCBpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlX1RvTG93ZXJGdWxsKGMsIG1hcHBlZCk7Cit9CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2g7CitzdGF0aWMgUHlfc3NpemVfdAorZG9fY2FwaXRhbGl6ZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOworICAgIGludCBuX3JlcywgajsKKyAgICBQeV9VQ1M0IGMsIG1hcHBlZFszXTsKIAotICAgICAgICBjaCA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgIGlmIChjaCAhPSAqcykgewotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgICAgICpzID0gY2g7CisgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChjLCBtYXBwZWQpOworICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgIH0KKyAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKICAgICB9Ci0KLSAgICByZXR1cm4gc3RhdHVzOworICAgIHJldHVybiBrOwogfQogCi1zdGF0aWMKLWludCBmaXhzd2FwY2FzZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzZWxmLT5sZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IHNlbGYtPnN0cjsKLSAgICBpbnQgc3RhdHVzID0gMDsKK3N0YXRpYyBQeV9zc2l6ZV90Citkb19zd2FwY2FzZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikgeworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOwotICAgICAgICB9IGVsc2UgaWYgKFB5X1VOSUNPREVfSVNMT1dFUigqcykpIHsKLSAgICAgICAgICAgICpzID0gUHlfVU5JQ09ERV9UT1VQUEVSKCpzKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNVUFBFUihjKSkgeworICAgICAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKICAgICAgICAgfQotICAgICAgICBzKys7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKLX0KLQotc3RhdGljCi1pbnQgZml4Y2FwaXRhbGl6ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzZWxmLT5sZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IHNlbGYtPnN0cjsKLSAgICBpbnQgc3RhdHVzID0gMDsKLQotICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFQeV9VTklDT0RFX0lTVVBQRVIoKnMpKSB7Ci0gICAgICAgICpzID0gUHlfVU5JQ09ERV9UT1VQUEVSKCpzKTsKLSAgICAgICAgc3RhdHVzID0gMTsKLSAgICB9Ci0gICAgcysrOwotICAgIHdoaWxlICgtLWxlbiA+IDApIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTTE9XRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOworICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoYykpIHsKKyAgICAgICAgICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChjLCBtYXBwZWQpOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuX3JlcyA9IDE7CisgICAgICAgICAgICBtYXBwZWRbMF0gPSBjOworICAgICAgICB9CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gazsKIH0KIAotc3RhdGljCi1pbnQgZml4dGl0bGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQorc3RhdGljIFB5X3NzaXplX3QKK2RvX3VwcGVyX29yX2xvd2VyKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLAorICAgICAgICAgICAgICAgICAgUHlfVUNTNCAqbWF4Y2hhciwgaW50IGxvd2VyKQogewotICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSksIG1hcHBlZFszXTsKKyAgICAgICAgaW50IG5fcmVzLCBqOworICAgICAgICBpZiAobG93ZXIpCisgICAgICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fcmVzOyBqKyspIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gazsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2RvX3VwcGVyKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIHJldHVybiBkb191cHBlcl9vcl9sb3dlcihraW5kLCBkYXRhLCBsZW5ndGgsIHJlcywgbWF4Y2hhciwgMCk7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb19sb3dlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICByZXR1cm4gZG9fdXBwZXJfb3JfbG93ZXIoa2luZCwgZGF0YSwgbGVuZ3RoLCByZXMsIG1heGNoYXIsIDEpOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fY2FzZWZvbGQoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgUHlfVUNTNCBtYXBwZWRbM107CisgICAgICAgIGludCBqLCBuX3JlcyA9IF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKGMsIG1hcHBlZCk7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb190aXRsZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOwogICAgIGludCBwcmV2aW91c19pc19jYXNlZDsKIAotICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IFB5X1VOSUNPREVfVE9USVRMRSgqcCk7Ci0gICAgICAgIGlmICgqcCAhPSBjaCkgewotICAgICAgICAgICAgKnAgPSBjaDsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKLSAgICBmb3IgKDsgcCA8IGU7IHArKykgewotICAgICAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFIGNoID0gKnA7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBQeV9VQ1M0IG1hcHBlZFszXTsKKyAgICAgICAgaW50IG5fcmVzLCBqOwogCiAgICAgICAgIGlmIChwcmV2aW91c19pc19jYXNlZCkKLSAgICAgICAgICAgICpwID0gUHlfVU5JQ09ERV9UT0xPV0VSKGNoKTsKKyAgICAgICAgICAgIG5fcmVzID0gbG93ZXJfdWNzNChraW5kLCBkYXRhLCBsZW5ndGgsIGksIGMsIG1hcHBlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwID0gUHlfVU5JQ09ERV9UT1RJVExFKGNoKTsKKyAgICAgICAgICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1RpdGxlRnVsbChjLCBtYXBwZWQpOwogCi0gICAgICAgIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoY2gpIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0lTVVBQRVIoY2gpIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0lTVElUTEUoY2gpKQotICAgICAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKworICAgICAgICBwcmV2aW91c19pc19jYXNlZCA9IF9QeVVuaWNvZGVfSXNDYXNlZChjKTsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjYXNlX29wZXJhdGlvbihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKCpwZXJmb3JtKShpbnQsIHZvaWQgKiwgUHlfc3NpemVfdCwgUHlfVUNTNCAqLCBQeV9VQ1M0ICopKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBuZXdsZW5ndGggPSAwOworICAgIGludCBraW5kLCBvdXRraW5kOworICAgIHZvaWQgKmRhdGEsICpvdXRkYXRhOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDAsICp0bXAsICp0bXBlbmQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHNlbGYpKTsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgdG1wID0gUHlNZW1fTUFMTE9DKHNpemVvZihQeV9VQ1M0KSAqIDMgKiBsZW5ndGgpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbmV3bGVuZ3RoID0gcGVyZm9ybShraW5kLCBkYXRhLCBsZW5ndGgsIHRtcCwgJm1heGNoYXIpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobmV3bGVuZ3RoLCBtYXhjaGFyKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIGdvdG8gbGVhdmU7CisgICAgdG1wZW5kID0gdG1wICsgbmV3bGVuZ3RoOworICAgIG91dGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgIG91dGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgIHN3aXRjaCAob3V0a2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MxLCB0bXAsIHRtcGVuZCwgb3V0ZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MyLCB0bXAsIHRtcGVuZCwgb3V0ZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG1lbWNweShvdXRkYXRhLCB0bXAsIHNpemVvZihQeV9VQ1M0KSAqIG5ld2xlbmd0aCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICBsZWF2ZToKKyAgICBQeU1lbV9GUkVFKHRtcCk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogUHlPYmplY3QgKgogUHlVbmljb2RlX0pvaW4oUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKnNlcSkKIHsKLSAgICBjb25zdCBQeV9VTklDT0RFIGJsYW5rID0gJyAnOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnNlcCA9ICZibGFuazsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbiA9IDE7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCi0gICAgUHlfVU5JQ09ERSAqcmVzX3A7ICAgICAgIC8qIHBvaW50ZXIgdG8gZnJlZSBieXRlIGluIHJlcydzIHN0cmluZyBhcmVhICovCisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzZXBsZW47CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KICAgICBQeU9iamVjdCAqZnNlcTsgICAgICAgICAgLyogUHlTZXF1ZW5jZV9GYXN0KHNlcSkgKi8KICAgICBQeV9zc2l6ZV90IHNlcWxlbjsgICAgICAgLyogbGVuKGZzZXEpIC0tIG51bWJlciBvZiBpdGVtcyBpbiBzZXF1ZW5jZSAqLwogICAgIFB5T2JqZWN0ICoqaXRlbXM7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBzeiwgaTsKKyAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKKyAgICBpbnQgdXNlX21lbWNweTsKKyAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxhc3Rfb2JqOworICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKIAogICAgIGZzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxLCAiIik7CiAgICAgaWYgKGZzZXEgPT0gTlVMTCkgewpAQCAtNjc5MCwyNCArOTQ5MywzNCBAQAogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmc2VxKTsKICAgICAvKiBJZiBlbXB0eSBzZXF1ZW5jZSwgcmV0dXJuIHUiIi4gKi8KICAgICBpZiAoc2VxbGVuID09IDApIHsKLSAgICAgICAgcmVzID0gX1B5VW5pY29kZV9OZXcoMCk7ICAvKiBlbXB0eSBzZXF1ZW5jZTsgcmV0dXJuIHUiIiAqLwotICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXMgPSB1bmljb2RlX2VtcHR5OworICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KLSAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKKwogICAgIC8qIElmIHNpbmdsZXRvbiBzZXF1ZW5jZSB3aXRoIGFuIGV4YWN0IFVuaWNvZGUsIHJldHVybiB0aGF0LiAqLworICAgIGxhc3Rfb2JqID0gTlVMTDsKKyAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKICAgICBpZiAoc2VxbGVuID09IDEpIHsKLSAgICAgICAgaXRlbSA9IGl0ZW1zWzBdOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoaXRlbSkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKLSAgICAgICAgICAgIHJlcyA9IChQeVVuaWNvZGVPYmplY3QgKilpdGVtOwotICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoaXRlbXNbMF0pKSB7CisgICAgICAgICAgICByZXMgPSBpdGVtc1swXTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGZzZXEpOworICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgfQorICAgICAgICBzZXBsZW4gPSAwOworICAgICAgICBtYXhjaGFyID0gMDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIFNldCB1cCBzZXAgYW5kIHNlcGxlbiAqLwogICAgICAgICBpZiAoc2VwYXJhdG9yID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNlcCA9ICZibGFuazsKKyAgICAgICAgICAgIC8qIGZhbGwgYmFjayB0byBhIGJsYW5rIHNwYWNlIHNlcGFyYXRvciAqLworICAgICAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcgJyk7CisgICAgICAgICAgICBpZiAoIXNlcCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBzZXBsZW4gPSAxOworICAgICAgICAgICAgbWF4Y2hhciA9IDMyOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc2VwYXJhdG9yKSkgewpAQCAtNjgxNyw5ICs5NTMwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VwYXJhdG9yKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VwYXJhdG9yKTsKLSAgICAgICAgICAgIHNlcGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZXBhcmF0b3IpOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBhcmF0b3IpKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHNlcCA9IHNlcGFyYXRvcjsKKyAgICAgICAgICAgIHNlcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcGFyYXRvcik7CisgICAgICAgICAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlcGFyYXRvcik7CisgICAgICAgICAgICAvKiBpbmMgcmVmY291bnQgdG8ga2VlcCB0aGlzIGNvZGUgcGF0aCBzeW1tZXRyaWMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgIGFib3ZlIGNhc2Ugb2YgYSBibGFuayBzZXBhcmF0b3IgKi8KKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZXApOwogICAgICAgICB9CisgICAgICAgIGxhc3Rfb2JqID0gc2VwOwogICAgIH0KIAogICAgIC8qIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gdGhpbmdzIHRvIGpvaW4sIG9yIGVsc2Ugd2UgaGF2ZSBhIHN1YmNsYXNzCkBAIC02ODI4LDYgKzk1NDgsMTEgQEAKICAgICAgKiBuZWVkIChzeiksIGFuZCBzZWUgd2hldGhlciBhbGwgYXJndW1lbnQgYXJlIHN0cmluZ3MuCiAgICAgICovCiAgICAgc3ogPSAwOworI2lmZGVmIFB5X0RFQlVHCisgICAgdXNlX21lbWNweSA9IDA7CisjZWxzZQorICAgIHVzZV9tZW1jcHkgPSAxOworI2VuZGlmCiAgICAgZm9yIChpID0gMDsgaSA8IHNlcWxlbjsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3Qgb2xkX3N6ID0gc3o7CiAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTsKQEAgLTY4MzgsNyArOTU2MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGksIFB5X1RZUEUoaXRlbSktPnRwX25hbWUpOwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9Ci0gICAgICAgIHN6ICs9IFB5VW5pY29kZV9HRVRfU0laRShpdGVtKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpdGVtKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgc3ogKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CisgICAgICAgIGl0ZW1fbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShpdGVtKTsKKyAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGl0ZW1fbWF4Y2hhcik7CiAgICAgICAgIGlmIChpICE9IDApCiAgICAgICAgICAgICBzeiArPSBzZXBsZW47CiAgICAgICAgIGlmIChzeiA8IG9sZF9zeiB8fCBzeiA+IFBZX1NTSVpFX1RfTUFYKSB7CkBAIC02ODQ2LDI2NiArOTU3NSw3MjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiam9pbigpIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHVzZV9tZW1jcHkgJiYgbGFzdF9vYmogIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKGxhc3Rfb2JqKSAhPSBQeVVuaWNvZGVfS0lORChpdGVtKSkKKyAgICAgICAgICAgICAgICB1c2VfbWVtY3B5ID0gMDsKKyAgICAgICAgfQorICAgICAgICBsYXN0X29iaiA9IGl0ZW07CiAgICAgfQogCi0gICAgcmVzID0gX1B5VW5pY29kZV9OZXcoc3opOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc3osIG1heGNoYXIpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgLyogQ2F0ZW5hdGUgZXZlcnl0aGluZy4gKi8KLSAgICByZXNfcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IHNlcWxlbjsgKytpKSB7CisjaWZkZWYgUHlfREVCVUcKKyAgICB1c2VfbWVtY3B5ID0gMDsKKyNlbHNlCisgICAgaWYgKHVzZV9tZW1jcHkpIHsKKyAgICAgICAgcmVzX2RhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICAgICAgaWYgKHNlcGxlbiAhPSAwKQorICAgICAgICAgICAgc2VwX2RhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzZXApOworICAgIH0KKyNlbmRpZgorICAgIGZvciAoaSA9IDAsIHJlc19vZmZzZXQgPSAwOyBpIDwgc2VxbGVuOyArK2kpIHsKICAgICAgICAgUHlfc3NpemVfdCBpdGVtbGVuOwogICAgICAgICBpdGVtID0gaXRlbXNbaV07Ci0gICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSk7CiAgICAgICAgIC8qIENvcHkgaXRlbSwgYW5kIG1heWJlIHRoZSBzZXBhcmF0b3IuICovCi0gICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocmVzX3AsIHNlcCwgc2VwbGVuKTsKLSAgICAgICAgICAgIHJlc19wICs9IHNlcGxlbjsKKyAgICAgICAgaWYgKGkgJiYgc2VwbGVuICE9IDApIHsKKyAgICAgICAgICAgIGlmICh1c2VfbWVtY3B5KSB7CisgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIHNlcGxlbik7CisgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIHNlcGxlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgcmVzX29mZnNldCwgc2VwLCAwLCBzZXBsZW4pOworICAgICAgICAgICAgICAgIHJlc19vZmZzZXQgKz0gc2VwbGVuOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWShyZXNfcCwgUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSksIGl0ZW1sZW4pOwotICAgICAgICByZXNfcCArPSBpdGVtbGVuOworICAgICAgICBpdGVtbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CisgICAgICAgIGlmIChpdGVtbGVuICE9IDApIHsKKyAgICAgICAgICAgIGlmICh1c2VfbWVtY3B5KSB7CisgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShpdGVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIGl0ZW1sZW4pOworICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBpdGVtbGVuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCByZXNfb2Zmc2V0LCBpdGVtLCAwLCBpdGVtbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfb2Zmc2V0ICs9IGl0ZW1sZW47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKHVzZV9tZW1jcHkpCisgICAgICAgIGFzc2VydChyZXNfZGF0YSA9PSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICArIGtpbmQgKiBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKKyAgICBlbHNlCisgICAgICAgIGFzc2VydChyZXNfb2Zmc2V0ID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcykpOwogCi0gIERvbmU6CiAgICAgUHlfREVDUkVGKGZzZXEpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXM7CisgICAgUHlfWERFQ1JFRihzZXApOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICBQeV9YREVDUkVGKHNlcCk7CiAgICAgUHlfWERFQ1JFRihyZXMpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMKLVB5VW5pY29kZU9iamVjdCAqcGFkKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGZpbGwpCisjZGVmaW5lIEZJTEwoa2luZCwgZGF0YSwgdmFsdWUsIHN0YXJ0LCBsZW5ndGgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgUHlfc3NpemVfdCBpXyA9IDA7IFwKKyAgICAgICAgYXNzZXJ0KGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpOyBcCisgICAgICAgIHN3aXRjaCAoKGtpbmQpKSB7IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeyBcCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICogdG9fID0gKHVuc2lnbmVkIGNoYXIgKikoKGRhdGEpKSArIChzdGFydCk7IFwKKyAgICAgICAgICAgIG1lbXNldCh0b18sICh1bnNpZ25lZCBjaGFyKXZhbHVlLCAobGVuZ3RoKSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgIFB5X1VDUzIgKiB0b18gPSAoUHlfVUNTMiAqKSgoZGF0YSkpICsgKHN0YXJ0KTsgXAorICAgICAgICAgICAgZm9yICg7IGlfIDwgKGxlbmd0aCk7ICsraV8sICsrdG9fKSAqdG9fID0gKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgUHlfVUNTNCAqIHRvXyA9IChQeV9VQ1M0ICopKChkYXRhKSkgKyAoc3RhcnQpOyBcCisgICAgICAgICAgICBmb3IgKDsgaV8gPCAobGVuZ3RoKTsgKytpXywgKyt0b18pICp0b18gPSAodmFsdWUpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICBkZWZhdWx0OiBhc3NlcnQoMCk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisKK3ZvaWQKK19QeVVuaWNvZGVfRmFzdEZpbGwoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhcikKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgY29uc3QgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgY29uc3Qgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGFzc2VydCh1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpOworICAgIGFzc2VydChmaWxsX2NoYXIgPD0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoc3RhcnQgPj0gMCk7CisgICAgYXNzZXJ0KHN0YXJ0ICsgbGVuZ3RoIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICBGSUxMKGtpbmQsIGRhdGEsIGZpbGxfY2hhciwgc3RhcnQsIGxlbmd0aCk7Cit9CisKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9GaWxsKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgIFB5X1VDUzQgZmlsbF9jaGFyKQoreworICAgIFB5X3NzaXplX3QgbWF4bGVuOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh1bmljb2RlX2NoZWNrX21vZGlmaWFibGUodW5pY29kZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGZpbGxfY2hhciA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsbCBjaGFyYWN0ZXIgaXMgYmlnZ2VyIHRoYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgc3RyaW5nIG1heGltdW0gY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtYXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSAtIHN0YXJ0OworICAgIGxlbmd0aCA9IFB5X01JTihtYXhsZW4sIGxlbmd0aCk7CisgICAgaWYgKGxlbmd0aCA8PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwodW5pY29kZSwgc3RhcnQsIGxlbmd0aCwgZmlsbF9jaGFyKTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcGFkKFB5T2JqZWN0ICpzZWxmLAorICAgIFB5X3NzaXplX3QgbGVmdCwKKyAgICBQeV9zc2l6ZV90IHJpZ2h0LAorICAgIFB5X1VDUzQgZmlsbCkKK3sKKyAgICBQeU9iamVjdCAqdTsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIGlmIChsZWZ0IDwgMCkKICAgICAgICAgbGVmdCA9IDA7CiAgICAgaWYgKHJpZ2h0IDwgMCkKICAgICAgICAgcmlnaHQgPSAwOwogCi0gICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfQorICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKIAotICAgIGlmIChsZWZ0ID4gUFlfU1NJWkVfVF9NQVggLSBzZWxmLT5sZW5ndGggfHwKLSAgICAgICAgcmlnaHQgPiBQWV9TU0laRV9UX01BWCAtIChsZWZ0ICsgc2VsZi0+bGVuZ3RoKSkgeworICAgIGlmIChsZWZ0ID4gUFlfU1NJWkVfVF9NQVggLSBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSB8fAorICAgICAgICByaWdodCA+IFBZX1NTSVpFX1RfTUFYIC0gKGxlZnQgKyBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJwYWRkZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB1ID0gX1B5VW5pY29kZV9OZXcobGVmdCArIHNlbGYtPmxlbmd0aCArIHJpZ2h0KTsKLSAgICBpZiAodSkgewotICAgICAgICBpZiAobGVmdCkKLSAgICAgICAgICAgIFB5X1VOSUNPREVfRklMTCh1LT5zdHIsIGZpbGwsIGxlZnQpOwotICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyICsgbGVmdCwgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgpOwotICAgICAgICBpZiAocmlnaHQpCi0gICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwodS0+c3RyICsgbGVmdCArIHNlbGYtPmxlbmd0aCwgZmlsbCwgcmlnaHQpOwotICAgIH0KKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpOworICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBmaWxsKTsKKyAgICB1ID0gUHlVbmljb2RlX05ldyhsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikgKyByaWdodCwgbWF4Y2hhcik7CisgICAgaWYgKCF1KQorICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgaWYgKGxlZnQpCisgICAgICAgIEZJTEwoa2luZCwgZGF0YSwgZmlsbCwgMCwgbGVmdCk7CisgICAgaWYgKHJpZ2h0KQorICAgICAgICBGSUxMKGtpbmQsIGRhdGEsIGZpbGwsIGxlZnQgKyBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSwgcmlnaHQpOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHUsIGxlZnQsIHNlbGYsIDAsIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKICAgICByZXR1cm4gdTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9TcGxpdGxpbmVzKFB5T2JqZWN0ICpzdHJpbmcsIGludCBrZWVwZW5kcykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9TcGxpdGxpbmVzKFB5T2JqZWN0ICpzdHJpbmcsIGludCBrZWVwZW5kcykKIHsKICAgICBQeU9iamVjdCAqbGlzdDsKIAogICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cmluZyk7CiAgICAgaWYgKHN0cmluZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN0cmluZyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGxpc3QgPSBzdHJpbmdsaWJfc3BsaXRsaW5lcygKLSAgICAgICAgKFB5T2JqZWN0Kikgc3RyaW5nLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpLAotICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyaW5nKSwga2VlcGVuZHMpOwotCisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzdHJpbmcpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJpbmcpKQorICAgICAgICAgICAgbGlzdCA9IGFzY2lpbGliX3NwbGl0bGluZXMoCisgICAgICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGlzdCA9IHVjczFsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgICAgICBzdHJpbmcsIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSwga2VlcGVuZHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBsaXN0ID0gdWNzMmxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfMkJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSwga2VlcGVuZHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBsaXN0ID0gdWNzNGxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfNEJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSwga2VlcGVuZHMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGxpc3QgPSAwOworICAgIH0KICAgICBQeV9ERUNSRUYoc3RyaW5nKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljCi1QeU9iamVjdCAqc3BsaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitzdGF0aWMgUHlPYmplY3QgKgorc3BsaXQoUHlPYmplY3QgKnNlbGYsCisgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAorICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKKyAgICBQeU9iamVjdCogb3V0OworCiAgICAgaWYgKG1heGNvdW50IDwgMCkKICAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0X3doaXRlc3BhY2UoCi0gICAgICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIG1heGNvdW50Ci0gICAgICAgICAgICApOworICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHNlbGYpKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICAgICAgICAgIHJldHVybiBhc2NpaWxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX3NwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMkJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzRCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKLSAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0KAotICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsCi0gICAgICAgIHN1YnN0cmluZy0+c3RyLCBzdWJzdHJpbmctPmxlbmd0aCwKLSAgICAgICAgbWF4Y291bnQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7CisgICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9zcGxpdCgKKyAgICAgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQgPSB1Y3MxbGliX3NwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczJsaWJfc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3M0bGliX3NwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgb3V0ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIG91dDsKIH0KIAotc3RhdGljCi1QeU9iamVjdCAqcnNwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitzdGF0aWMgUHlPYmplY3QgKgorcnNwbGl0KFB5T2JqZWN0ICpzZWxmLAorICAgICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcsCisgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKKyAgICBQeU9iamVjdCogb3V0OworCiAgICAgaWYgKG1heGNvdW50IDwgMCkKICAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdF93aGl0ZXNwYWNlKAotICAgICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBtYXhjb3VudAotICAgICAgICAgICAgKTsKKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzZWxmKSkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9yc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzJCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfNEJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICApOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAotICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0KAotICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsCi0gICAgICAgIHN1YnN0cmluZy0+c3RyLCBzdWJzdHJpbmctPmxlbmd0aCwKLSAgICAgICAgbWF4Y291bnQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7CisgICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9yc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9yc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzMmxpYl9yc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3M0bGliX3JzcGxpdCgKKyAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG91dCA9IE5VTEw7CisgICAgfQorICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnJlcGxhY2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICpzdHIxLAotICAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICpzdHIyLAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3N0YXRpYyBQeV9zc2l6ZV90CithbnlsaWJfZmluZChpbnQga2luZCwgUHlPYmplY3QgKnN0cjEsIHZvaWQgKmJ1ZjEsIFB5X3NzaXplX3QgbGVuMSwKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIyLCB2b2lkICpidWYyLCBQeV9zc2l6ZV90IGxlbjIsIFB5X3NzaXplX3Qgb2Zmc2V0KQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cjEpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdHIyKSkKKyAgICAgICAgICAgIHJldHVybiBhc2NpaWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgb2Zmc2V0KTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgIH0KKyAgICBhc3NlcnQoMCk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorYW55bGliX2NvdW50KGludCBraW5kLCBQeU9iamVjdCAqc3N0ciwgdm9pZCogc2J1ZiwgUHlfc3NpemVfdCBzbGVuLAorICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIxLCB2b2lkICpidWYxLCBQeV9zc2l6ZV90IGxlbjEsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzc3RyKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3RyMSkpCisgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9jb3VudChzYnVmLCBzbGVuLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICB9CisgICAgYXNzZXJ0KDApOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cjEsCisgICAgICAgIFB5T2JqZWN0ICpzdHIyLCBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIFB5T2JqZWN0ICp1OworICAgIGNoYXIgKnNidWYgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBjaGFyICpidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyMSk7CisgICAgY2hhciAqYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN0cjIpOworICAgIGludCBzcmVsZWFzZSA9IDAsIHJlbGVhc2UxID0gMCwgcmVsZWFzZTIgPSAwOworICAgIGludCBza2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGludCBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cjEpOworICAgIGludCBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN0cjIpOworICAgIFB5X3NzaXplX3Qgc2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIFB5X3NzaXplX3QgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjEpOworICAgIFB5X3NzaXplX3QgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpOworICAgIGludCBtYXlzaHJpbms7CisgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyX3N0cjI7CiAKICAgICBpZiAobWF4Y291bnQgPCAwKQogICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgc2VsZi0+bGVuZ3RoID09IDApCisgICAgZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBzbGVuID09IDApCiAgICAgICAgIGdvdG8gbm90aGluZzsKIAotICAgIGlmIChzdHIxLT5sZW5ndGggPT0gc3RyMi0+bGVuZ3RoKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICBpZiAoc3RyMSA9PSBzdHIyKQorICAgICAgICBnb3RvIG5vdGhpbmc7CisgICAgaWYgKHNraW5kIDwga2luZDEpCisgICAgICAgIC8qIHN1YnN0cmluZyB0b28gd2lkZSB0byBiZSBwcmVzZW50ICovCisgICAgICAgIGdvdG8gbm90aGluZzsKKworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc2VsZik7CisgICAgbWF4Y2hhcl9zdHIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cjIpOworICAgIC8qIFJlcGxhY2luZyBzdHIxIHdpdGggc3RyMiBtYXkgY2F1c2UgYSBtYXhjaGFyIHJlZHVjdGlvbiBpbiB0aGUKKyAgICAgICByZXN1bHQgc3RyaW5nLiAqLworICAgIG1heXNocmluayA9IChtYXhjaGFyX3N0cjIgPCBtYXhjaGFyKTsKKyAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgbWF4Y2hhcl9zdHIyKTsKKworICAgIGlmIChsZW4xID09IGxlbjIpIHsKICAgICAgICAgLyogc2FtZSBsZW5ndGggKi8KLSAgICAgICAgaWYgKHN0cjEtPmxlbmd0aCA9PSAwKQorICAgICAgICBpZiAobGVuMSA9PSAwKQogICAgICAgICAgICAgZ290byBub3RoaW5nOwotICAgICAgICBpZiAoc3RyMS0+bGVuZ3RoID09IDEpIHsKKyAgICAgICAgaWYgKGxlbjEgPT0gMSkgewogICAgICAgICAgICAgLyogcmVwbGFjZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICBQeV9VTklDT0RFIHUxLCB1MjsKLSAgICAgICAgICAgIGlmICghZmluZGNoYXIoc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIHN0cjEtPnN0clswXSkpCisgICAgICAgICAgICBQeV9VQ1M0IHUxLCB1MjsKKyAgICAgICAgICAgIGludCBya2luZDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaW5kZXgsIHBvczsKKyAgICAgICAgICAgIGNoYXIgKnNyYzsKKworICAgICAgICAgICAgdTEgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0cjEsIDApOworICAgICAgICAgICAgcG9zID0gZmluZGNoYXIoc2J1ZiwgUHlVbmljb2RlX0tJTkQoc2VsZiksIHNsZW4sIHUxLCAxKTsKKyAgICAgICAgICAgIGlmIChwb3MgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNlbGYtPmxlbmd0aCk7CisgICAgICAgICAgICB1MiA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyMiwgMCk7CisgICAgICAgICAgICB1ID0gUHlVbmljb2RlX05ldyhzbGVuLCBtYXhjaGFyKTsKICAgICAgICAgICAgIGlmICghdSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKLSAgICAgICAgICAgIHUxID0gc3RyMS0+c3RyWzBdOwotICAgICAgICAgICAgdTIgPSBzdHIyLT5zdHJbMF07Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdS0+bGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgaWYgKHUtPnN0cltpXSA9PSB1MSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoLS1tYXhjb3VudCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgdS0+c3RyW2ldID0gdTI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaSA9IHN0cmluZ2xpYl9maW5kKAotICAgICAgICAgICAgICAgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwgMAotICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHUsIDAsIHNlbGYsIDAsIHNsZW4pOworICAgICAgICAgICAgcmtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCBQeVVuaWNvZGVfREFUQSh1KSwgcG9zLCB1Mik7CisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgICAgICBzcmMgPSBzYnVmOworICAgICAgICAgICAgd2hpbGUgKC0tbWF4Y291bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgc3JjICs9IHBvcyAqIFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICAgICAgICAgIHNsZW4gLT0gcG9zOworICAgICAgICAgICAgICAgIGluZGV4ICs9IHBvczsKKyAgICAgICAgICAgICAgICBwb3MgPSBmaW5kY2hhcihzcmMsIFB5VW5pY29kZV9LSU5EKHNlbGYpLCBzbGVuLCB1MSwgMSk7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA8IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgUHlVbmljb2RlX0RBVEEodSksIGluZGV4ICsgcG9zLCB1Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgcmtpbmQgPSBza2luZDsKKyAgICAgICAgICAgIGNoYXIgKnJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgaWYgKGtpbmQxIDwgcmtpbmQpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiBzdWJzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMSwgcmtpbmQpOworICAgICAgICAgICAgICAgIGlmICghYnVmMSkgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpID0gYW55bGliX2ZpbmQocmtpbmQsIHNlbGYsIHNidWYsIHNsZW4sIHN0cjEsIGJ1ZjEsIGxlbjEsIDApOwogICAgICAgICAgICAgaWYgKGkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNlbGYtPmxlbmd0aCk7CisgICAgICAgICAgICBpZiAocmtpbmQgPiBraW5kMikgeworICAgICAgICAgICAgICAgIC8qIHdpZGVuIHJlcGxhY2VtZW50ICovCisgICAgICAgICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjIsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjIpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTIgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocmtpbmQgPCBraW5kMikgeworICAgICAgICAgICAgICAgIC8qIHdpZGVuIHNlbGYgYW5kIGJ1ZjEgKi8KKyAgICAgICAgICAgICAgICBya2luZCA9IGtpbmQyOworICAgICAgICAgICAgICAgIGlmIChyZWxlYXNlMSkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgICAgICAgICBzYnVmID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwgcmtpbmQpOworICAgICAgICAgICAgICAgIGlmICghc2J1ZikgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBzcmVsZWFzZSA9IDE7CisgICAgICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcoc2xlbiwgbWF4Y2hhcik7CiAgICAgICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh1KSA9PSBya2luZCk7CisgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfREFUQSh1KTsKIAorICAgICAgICAgICAgbWVtY3B5KHJlcywgc2J1ZiwgcmtpbmQgKiBzbGVuKTsKICAgICAgICAgICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyK2ksIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGkgKz0gc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICBpICs9IGxlbjE7CiAKICAgICAgICAgICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgICAgICAgICBpID0gc3RyaW5nbGliX2ZpbmQoc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICAgICAgICAgICAgaSA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmK3JraW5kKmksIHNsZW4taSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMSwgYnVmMSwgbGVuMSwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKGkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIraSwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGkgKz0gc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICAgICAgaSArPSBsZW4xOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X3NzaXplX3QgbiwgaSwgaiwgaXJlczsKKyAgICAgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKKyAgICAgICAgaW50IHJraW5kID0gc2tpbmQ7CisgICAgICAgIGNoYXIgKnJlczsKIAotICAgICAgICBQeV9zc2l6ZV90IG4sIGksIGo7Ci0gICAgICAgIFB5X3NzaXplX3QgcHJvZHVjdCwgbmV3X3NpemUsIGRlbHRhOwotICAgICAgICBQeV9VTklDT0RFICpwOwotCi0gICAgICAgIC8qIHJlcGxhY2Ugc3RyaW5ncyAqLwotICAgICAgICBuID0gc3RyaW5nbGliX2NvdW50KHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisgICAgICAgIGlmIChraW5kMSA8IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiBzdWJzdHJpbmcgKi8KKyAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgbiA9IGFueWxpYl9jb3VudChya2luZCwgc2VsZiwgc2J1Ziwgc2xlbiwgc3RyMSwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOwogICAgICAgICBpZiAobiA9PSAwKQogICAgICAgICAgICAgZ290byBub3RoaW5nOwotICAgICAgICAvKiBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aCArIG4gKiAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKSk7ICovCi0gICAgICAgIGRlbHRhID0gKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCk7Ci0gICAgICAgIGlmIChkZWx0YSA9PSAwKSB7Ci0gICAgICAgICAgICBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByb2R1Y3QgPSBuICogKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoKHByb2R1Y3QgLyAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKSkgIT0gbikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5ld19zaXplID0gc2VsZi0+bGVuZ3RoICsgcHJvZHVjdDsKLSAgICAgICAgICAgIGlmIChuZXdfc2l6ZSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChraW5kMiA8IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiByZXBsYWNlbWVudCAqLworICAgICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjIsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghYnVmMikgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlbGVhc2UyID0gMTsKICAgICAgICAgfQotICAgICAgICB1ID0gX1B5VW5pY29kZV9OZXcobmV3X3NpemUpOworICAgICAgICBlbHNlIGlmIChraW5kMiA+IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiBzZWxmIGFuZCBidWYxICovCisgICAgICAgICAgICBya2luZCA9IGtpbmQyOworICAgICAgICAgICAgc2J1ZiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghc2J1ZikgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHNyZWxlYXNlID0gMTsKKyAgICAgICAgICAgIGlmIChyZWxlYXNlMSkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgLyogbmV3X3NpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSArIG4gKiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMikgLQorICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKSkpOyAqLworICAgICAgICBpZiAobGVuMiA+IGxlbjEgJiYgbGVuMiAtIGxlbjEgPiAoUFlfU1NJWkVfVF9NQVggLSBzbGVuKSAvIG4pIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBuZXdfc2l6ZSA9IHNsZW4gKyBuICogKGxlbjIgLSBsZW4xKTsKKyAgICAgICAgaWYgKG5ld19zaXplID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHUgPSB1bmljb2RlX2VtcHR5OworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgICAgIGlmIChuZXdfc2l6ZSA+IChQWV9TU0laRV9UX01BWCA+PiAocmtpbmQtMSkpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcobmV3X3NpemUsIG1heGNoYXIpOwogICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaSA9IDA7Ci0gICAgICAgIHAgPSB1LT5zdHI7Ci0gICAgICAgIGlmIChzdHIxLT5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodSkgPT0gcmtpbmQpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICAgICAgaXJlcyA9IGkgPSAwOworICAgICAgICBpZiAobGVuMSA+IDApIHsKICAgICAgICAgICAgIHdoaWxlIChuLS0gPiAwKSB7CiAgICAgICAgICAgICAgICAgLyogbG9vayBmb3IgbmV4dCBtYXRjaCAqLwotICAgICAgICAgICAgICAgIGogPSBzdHJpbmdsaWJfZmluZChzZWxmLT5zdHIraSwgc2VsZi0+bGVuZ3RoLWksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEtPnN0ciwgc3RyMS0+bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKTsKKyAgICAgICAgICAgICAgICBqID0gYW55bGliX2ZpbmQocmtpbmQsIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksIHNsZW4taSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMSwgYnVmMSwgbGVuMSwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKGogPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGogPiBpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHkgdW5jaGFuZ2VkIHBhcnQgW2k6al0gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHNlbGYtPnN0citpLCBqLWkpOwotICAgICAgICAgICAgICAgICAgICBwICs9IGogLSBpOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogKGotaSkpOworICAgICAgICAgICAgICAgICAgICBpcmVzICs9IGogLSBpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBjb3B5IHN1YnN0aXR1dGlvbiBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICBpZiAoc3RyMi0+bGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICBwICs9IHN0cjItPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpZiAobGVuMiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgICAgICAgICBpcmVzICs9IGxlbjI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGkgPSBqICsgc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGkgPSBqICsgbGVuMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpIDwgc2VsZi0+bGVuZ3RoKQorICAgICAgICAgICAgaWYgKGkgPCBzbGVuKQogICAgICAgICAgICAgICAgIC8qIGNvcHkgdGFpbCBbaTpdICovCi0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiAoc2xlbi1pKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBpbnRlcmxlYXZlICovCiAgICAgICAgICAgICB3aGlsZSAobiA+IDApIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgICAgIHAgKz0gc3RyMi0+bGVuZ3RoOworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICAgICAgaXJlcyArPSBsZW4yOwogICAgICAgICAgICAgICAgIGlmICgtLW4gPD0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKnArKyA9IHNlbGYtPnN0cltpKytdOworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpcmVzKys7CisgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSk7CisgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgcmtpbmQgKiAoc2xlbi1pKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKSB1OworCisgICAgaWYgKG1heXNocmluaykgeworICAgICAgICB1bmljb2RlX2FkanVzdF9tYXhjaGFyKCZ1KTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgIGRvbmU6CisgICAgaWYgKHNyZWxlYXNlKQorICAgICAgICBQeU1lbV9GUkVFKHNidWYpOworICAgIGlmIChyZWxlYXNlMSkKKyAgICAgICAgUHlNZW1fRlJFRShidWYxKTsKKyAgICBpZiAocmVsZWFzZTIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMik7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CisgICAgcmV0dXJuIHU7CiAKICAgbm90aGluZzoKICAgICAvKiBub3RoaW5nIHRvIHJlcGxhY2U7IHJldHVybiBvcmlnaW5hbCBzdHJpbmcgKHdoZW4gcG9zc2libGUpICovCi0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKKyAgICBpZiAoc3JlbGVhc2UpCisgICAgICAgIFB5TWVtX0ZSRUUoc2J1Zik7CisgICAgaWYgKHJlbGVhc2UxKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjEpOworICAgIGlmIChyZWxlYXNlMikKKyAgICAgICAgUHlNZW1fRlJFRShidWYyKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgIGVycm9yOgorICAgIGlmIChzcmVsZWFzZSAmJiBzYnVmKQorICAgICAgICBQeU1lbV9GUkVFKHNidWYpOworICAgIGlmIChyZWxlYXNlMSAmJiBidWYxKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjEpOworICAgIGlmIChyZWxlYXNlMiAmJiBidWYyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjIpOworICAgIHJldHVybiBOVUxMOwogfQogCiAvKiAtLS0gVW5pY29kZSBPYmplY3QgTWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTcxMTcsOSArMTAzMDUsMTEgQEAKIGNoYXJhY3RlcnMsIGFsbCByZW1haW5pbmcgY2FzZWQgY2hhcmFjdGVycyBoYXZlIGxvd2VyIGNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfdGl0bGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV90aXRsZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4dGl0bGUpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb190aXRsZSk7CiB9CiAKIFB5RG9jX1NUUlZBUihjYXBpdGFsaXplX19kb2NfXywKQEAgLTcxMjksNTcgKzEwMzE5LDM4IEBACiBoYXZlIHVwcGVyIGNhc2UgYW5kIHRoZSByZXN0IGxvd2VyIGNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfY2FwaXRhbGl6ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2NhcGl0YWxpemUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeGNhcGl0YWxpemUpOwotfQotCi0jaWYgMAotUHlEb2NfU1RSVkFSKGNhcHdvcmRzX19kb2NfXywKLSAgICAgICAgICAgICAiUy5jYXB3b3JkcygpIC0+IHN0clxuXAotXG5cCi1BcHBseSAuY2FwaXRhbGl6ZSgpIHRvIGFsbCB3b3JkcyBpbiBTIGFuZCByZXR1cm4gdGhlIHJlc3VsdCB3aXRoXG5cCi1ub3JtYWxpemVkIHdoaXRlc3BhY2UgKGFsbCB3aGl0ZXNwYWNlIHN0cmluZ3MgYXJlIHJlcGxhY2VkIGJ5ICcgJykuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfY2Fwd29yZHMoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3QgaTsKLQotICAgIC8qIFNwbGl0IGludG8gd29yZHMgKi8KLSAgICBsaXN0ID0gc3BsaXQoc2VsZiwgTlVMTCwgLTEpOwotICAgIGlmICghbGlzdCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENhcGl0YWxpemUgZWFjaCB3b3JkICovCi0gICAgZm9yIChpID0gMDsgaSA8IFB5TGlzdF9HRVRfU0laRShsaXN0KTsgaSsrKSB7Ci0gICAgICAgIGl0ZW0gPSBmaXh1cCgoUHlVbmljb2RlT2JqZWN0ICopUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpLAotICAgICAgICAgICAgICAgICAgICAgZml4Y2FwaXRhbGl6ZSk7Ci0gICAgICAgIGlmIChpdGVtID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0obGlzdCwgaSkpOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgaXRlbSk7Ci0gICAgfQotCi0gICAgLyogSm9pbiB0aGUgd29yZHMgdG8gZm9ybSBhIG5ldyBzdHJpbmcgKi8KLSAgICBpdGVtID0gUHlVbmljb2RlX0pvaW4oTlVMTCwgbGlzdCk7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKWl0ZW07CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID09IDApCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX2NhcGl0YWxpemUpOwogfQotI2VuZGlmCisKK1B5RG9jX1NUUlZBUihjYXNlZm9sZF9fZG9jX18sCisgICAgICAgICAgICAgIlMuY2FzZWZvbGQoKSAtPiBzdHJcblwKK1xuXAorUmV0dXJuIGEgdmVyc2lvbiBvZiBTIHN1aXRhYmxlIGZvciBjYXNlbGVzcyBjb21wYXJpc29ucy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfY2FzZWZvbGQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgcmV0dXJuIGFzY2lpX3VwcGVyX29yX2xvd2VyKHNlbGYsIDEpOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19jYXNlZm9sZCk7Cit9CisKIAogLyogQXJndW1lbnQgY29udmVydGVyLiAgQ29lcmNlcyB0byBhIHNpbmdsZSB1bmljb2RlIGNoYXJhY3RlciAqLwogCiBzdGF0aWMgaW50CiBjb252ZXJ0X3VjKFB5T2JqZWN0ICpvYmosIHZvaWQgKmFkZHIpCiB7Ci0gICAgUHlfVU5JQ09ERSAqZmlsbGNoYXJsb2MgPSAoUHlfVU5JQ09ERSAqKWFkZHI7CisgICAgUHlfVUNTNCAqZmlsbGNoYXJsb2MgPSAoUHlfVUNTNCAqKWFkZHI7CiAgICAgUHlPYmplY3QgKnVuaW9iajsKLSAgICBQeV9VTklDT0RFICp1bmlzdHI7CiAKICAgICB1bmlvYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwogICAgIGlmICh1bmlvYmogPT0gTlVMTCkgewpAQCAtNzE4NywxNCArMTAzNTgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBVbmljb2RlIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHVuaW9iaikgIT0gMSkgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmlvYmopICE9IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBleGFjdGx5IG9uZSBjaGFyYWN0ZXIgbG9uZyIpOwogICAgICAgICBQeV9ERUNSRUYodW5pb2JqKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHVuaXN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaW9iaik7Ci0gICAgKmZpbGxjaGFybG9jID0gdW5pc3RyWzBdOworICAgICpmaWxsY2hhcmxvYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pb2JqLCAwKTsKICAgICBQeV9ERUNSRUYodW5pb2JqKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTcyMDYsMTEyICsxMDM3Niw2NCBAQAogZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2NlbnRlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9jZW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgbWFyZywgbGVmdDsKICAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIFB5X1VOSUNPREUgZmlsbGNoYXIgPSAnICc7CisgICAgUHlfVUNTNCBmaWxsY2hhciA9ICcgJzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxPJjpjZW50ZXIiLCAmd2lkdGgsIGNvbnZlcnRfdWMsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1hcmcgPSB3aWR0aCAtIHNlbGYtPmxlbmd0aDsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICBtYXJnID0gd2lkdGggLSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZWZ0ID0gbWFyZyAvIDIgKyAobWFyZyAmIHdpZHRoICYgMSk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgcGFkKHNlbGYsIGxlZnQsIG1hcmcgLSBsZWZ0LCBmaWxsY2hhcik7CisgICAgcmV0dXJuIHBhZChzZWxmLCBsZWZ0LCBtYXJnIC0gbGVmdCwgZmlsbGNoYXIpOwogfQogCi0jaWYgMAotCi0vKiBUaGlzIGNvZGUgc2hvdWxkIGdvIGludG8gc29tZSBmdXR1cmUgVW5pY29kZSBjb2xsYXRpb24gc3VwcG9ydAotICAgbW9kdWxlLiBUaGUgYmFzaWMgY29tcGFyaXNvbiBzaG91bGQgY29tcGFyZSBvcmRpbmFscyBvbiBhIG5haXZlCi0gICBiYXNpcyAodGhpcyBpcyB3aGF0IEphdmEgZG9lcyBhbmQgdGh1cyBKeXRob24gdG9vKS4gKi8KLQotLyogc3BlZWR5IFVURi0xNiBjb2RlIHBvaW50IG9yZGVyIGNvbXBhcmlzb24gKi8KLS8qIGdsZWFuZWQgZnJvbTogKi8KLS8qIGh0dHA6Ly93d3ctNC5pYm0uY29tL3NvZnR3YXJlL2RldmVsb3Blci9saWJyYXJ5L3V0ZjE2Lmh0bWw/ZHd6b25lPXVuaWNvZGUgKi8KLQotc3RhdGljIHNob3J0IHV0ZjE2Rml4dXBbMzJdID0KLXsKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAweDIwMDAsIC0weDgwMCwgLTB4ODAwLCAtMHg4MDAsIC0weDgwMAotfTsKKy8qIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHN0cjEgYW5kIHN0cjIgYXJlIHJlYWRpZWQgYnkgdGhlIGNhbGxlci4gKi8KIAogc3RhdGljIGludAotdW5pY29kZV9jb21wYXJlKFB5VW5pY29kZU9iamVjdCAqc3RyMSwgUHlVbmljb2RlT2JqZWN0ICpzdHIyKQordW5pY29kZV9jb21wYXJlKFB5T2JqZWN0ICpzdHIxLCBQeU9iamVjdCAqc3RyMikKIHsKLSAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgaW50IGtpbmQxLCBraW5kMjsKKyAgICB2b2lkICpkYXRhMSwgKmRhdGEyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgaTsKIAotICAgIFB5X1VOSUNPREUgKnMxID0gc3RyMS0+c3RyOwotICAgIFB5X1VOSUNPREUgKnMyID0gc3RyMi0+c3RyOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyMSk7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdHIyKTsKKyAgICBkYXRhMSA9IFB5VW5pY29kZV9EQVRBKHN0cjEpOworICAgIGRhdGEyID0gUHlVbmljb2RlX0RBVEEoc3RyMik7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjEpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIyKTsKIAotICAgIGxlbjEgPSBzdHIxLT5sZW5ndGg7Ci0gICAgbGVuMiA9IHN0cjItPmxlbmd0aDsKLQotICAgIHdoaWxlIChsZW4xID4gMCAmJiBsZW4yID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMxLCBjMjsKLQotICAgICAgICBjMSA9ICpzMSsrOwotICAgICAgICBjMiA9ICpzMisrOwotCi0gICAgICAgIGlmIChjMSA+ICgxPDwxMSkgKiAyNikKLSAgICAgICAgICAgIGMxICs9IHV0ZjE2Rml4dXBbYzE+PjExXTsKLSAgICAgICAgaWYgKGMyID4gKDE8PDExKSAqIDI2KQotICAgICAgICAgICAgYzIgKz0gdXRmMTZGaXh1cFtjMj4+MTFdOwotICAgICAgICAvKiBub3cgYzEgYW5kIGMyIGFyZSBpbiBVVEYtMzItY29tcGF0aWJsZSBvcmRlciAqLworICAgIGZvciAoaSA9IDA7IGkgPCBsZW4xICYmIGkgPCBsZW4yOyArK2kpIHsKKyAgICAgICAgUHlfVUNTNCBjMSwgYzI7CisgICAgICAgIGMxID0gUHlVbmljb2RlX1JFQUQoa2luZDEsIGRhdGExLCBpKTsKKyAgICAgICAgYzIgPSBQeVVuaWNvZGVfUkVBRChraW5kMiwgZGF0YTIsIGkpOwogCiAgICAgICAgIGlmIChjMSAhPSBjMikKICAgICAgICAgICAgIHJldHVybiAoYzEgPCBjMikgPyAtMSA6IDE7Ci0KLSAgICAgICAgbGVuMS0tOyBsZW4yLS07CiAgICAgfQogCiAgICAgcmV0dXJuIChsZW4xIDwgbGVuMikgPyAtMSA6IChsZW4xICE9IGxlbjIpOwogfQogCi0jZWxzZQotCi1zdGF0aWMgaW50Ci11bmljb2RlX2NvbXBhcmUoUHlVbmljb2RlT2JqZWN0ICpzdHIxLCBQeVVuaWNvZGVPYmplY3QgKnN0cjIpCitpbnQKK1B5VW5pY29kZV9Db21wYXJlKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwotCi0gICAgUHlfVU5JQ09ERSAqczEgPSBzdHIxLT5zdHI7Ci0gICAgUHlfVU5JQ09ERSAqczIgPSBzdHIyLT5zdHI7Ci0KLSAgICBsZW4xID0gc3RyMS0+bGVuZ3RoOwotICAgIGxlbjIgPSBzdHIyLT5sZW5ndGg7Ci0KLSAgICB3aGlsZSAobGVuMSA+IDAgJiYgbGVuMiA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjMSwgYzI7Ci0KLSAgICAgICAgYzEgPSAqczErKzsKLSAgICAgICAgYzIgPSAqczIrKzsKLQotICAgICAgICBpZiAoYzEgIT0gYzIpCi0gICAgICAgICAgICByZXR1cm4gKGMxIDwgYzIpID8gLTEgOiAxOwotCi0gICAgICAgIGxlbjEtLTsgbGVuMi0tOworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobGVmdCkgJiYgUHlVbmljb2RlX0NoZWNrKHJpZ2h0KSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xIHx8CisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXJlKGxlZnQsIHJpZ2h0KTsKICAgICB9Ci0KLSAgICByZXR1cm4gKGxlbjEgPCBsZW4yKSA/IC0xIDogKGxlbjEgIT0gbGVuMik7Ci19Ci0KLSNlbmRpZgotCi1pbnQgUHlVbmljb2RlX0NvbXBhcmUoUHlPYmplY3QgKmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0KQotewotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobGVmdCkgJiYgUHlVbmljb2RlX0NoZWNrKHJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29tcGFyZSgoUHlVbmljb2RlT2JqZWN0ICopbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopcmlnaHQpOwogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJDYW4ndCBjb21wYXJlICUuMTAwcyBhbmQgJS4xMDBzIiwKICAgICAgICAgICAgICAgICAgbGVmdC0+b2JfdHlwZS0+dHBfbmFtZSwKQEAgLTczMjIsMTcgKzEwNDQ0LDIzIEBACiBpbnQKIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKFB5T2JqZWN0KiB1bmksIGNvbnN0IGNoYXIqIHN0cikKIHsKLSAgICBpbnQgaTsKLSAgICBQeV9VTklDT0RFICppZDsKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHVuaSkpOwotICAgIGlkID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pKTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9VQ1M0IGNocjsKKworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaSkpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmkpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmkpOwogICAgIC8qIENvbXBhcmUgVW5pY29kZSBzdHJpbmcgYW5kIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IHN0cmluZyAqLwotICAgIGZvciAoaSA9IDA7IGlkW2ldICYmIHN0cltpXTsgaSsrKQotICAgICAgICBpZiAoaWRbaV0gIT0gc3RyW2ldKQotICAgICAgICAgICAgcmV0dXJuICgoaW50KWlkW2ldIDwgKGludClzdHJbaV0pID8gLTEgOiAxOworICAgIGZvciAoaSA9IDA7IChjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkgJiYgc3RyW2ldOyBpKyspCisgICAgICAgIGlmIChjaHIgIT0gc3RyW2ldKQorICAgICAgICAgICAgcmV0dXJuIChjaHIgPCAodW5zaWduZWQgY2hhcikoc3RyW2ldKSkgPyAtMSA6IDE7CiAgICAgLyogVGhpcyBjaGVjayBrZWVwcyBQeXRob24gc3RyaW5ncyB0aGF0IGVuZCBpbiAnXDAnIGZyb20gY29tcGFyaW5nIGVxdWFsCiAgICAgIHRvIEMgc3RyaW5ncyBpZGVudGljYWwgdXAgdG8gdGhhdCBwb2ludC4gKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHVuaSkgIT0gaSB8fCBpZFtpXSkKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pKSAhPSBpIHx8IGNocikKICAgICAgICAgcmV0dXJuIDE7IC8qIHVuaSBpcyBsb25nZXIgKi8KICAgICBpZiAoc3RyW2ldKQogICAgICAgICByZXR1cm4gLTE7IC8qIHN0ciBpcyBsb25nZXIgKi8KQEAgLTczNDMsMTYgKzEwNDcxLDE4IEBACiAjZGVmaW5lIFRFU1RfQ09ORChjb25kKSAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKChjb25kKSA/IFB5X1RydWUgOiBQeV9GYWxzZSkKIAotUHlPYmplY3QgKlB5VW5pY29kZV9SaWNoQ29tcGFyZShQeU9iamVjdCAqbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ApCitQeU9iamVjdCAqCitQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCwgaW50IG9wKQogewogICAgIGludCByZXN1bHQ7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGxlZnQpICYmIFB5VW5pY29kZV9DaGVjayhyaWdodCkpIHsKICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgIGlmICgoKFB5VW5pY29kZU9iamVjdCAqKSBsZWZ0KS0+bGVuZ3RoICE9Ci0gICAgICAgICAgICAoKFB5VW5pY29kZU9iamVjdCAqKSByaWdodCktPmxlbmd0aCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xIHx8CisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCkgfHwKKyAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKGxlZnQpICE9IFB5VW5pY29kZV9LSU5EKHJpZ2h0KSkgewogICAgICAgICAgICAgaWYgKG9wID09IFB5X0VRKSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfRmFsc2U7CkBAIC03MzY1LDggKzEwNDk1LDcgQEAKICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCiAgICAgICAgICAgICByZXN1bHQgPSAwOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB1bmljb2RlX2NvbXBhcmUoKFB5VW5pY29kZU9iamVjdCAqKWxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXJpZ2h0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHVuaWNvZGVfY29tcGFyZShsZWZ0LCByaWdodCk7CiAKICAgICAgICAgLyogQ29udmVydCB0aGUgcmV0dXJuIHZhbHVlIHRvIGEgQm9vbGVhbiAqLwogICAgICAgICBzd2l0Y2ggKG9wKSB7CkBAIC03Mzk2LDE0ICsxMDUyNSwxNiBAQAogICAgICAgICByZXR1cm4gdjsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKLWludCBQeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKmNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQpCitpbnQKK1B5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLCBQeU9iamVjdCAqZWxlbWVudCkKIHsKICAgICBQeU9iamVjdCAqc3RyLCAqc3ViOworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIGludCByZXN1bHQ7CiAKICAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KQEAgLTc0MjAsNTAgKzEwNTUxLDEwNiBAQAogICAgICAgICBQeV9ERUNSRUYoc3ViKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgIH0KIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9jb250YWluc19vYmooc3RyLCBzdWIpOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yik7CisgICAga2luZCA9IGtpbmQxOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOworICAgIGlmIChraW5kMiAhPSBraW5kKSB7CisgICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kKTsKKyAgICB9CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCAwKSAhPSAtMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gdWNzMmxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIDApICE9IC0xOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgMCkgIT0gLTE7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdCA9IC0xOworICAgICAgICBhc3NlcnQoMCk7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1Yik7CiAKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIENvbmNhdCB0byBzdHJpbmcgb3IgVW5pY29kZSBvYmplY3QgZ2l2aW5nIGEgbmV3IFVuaWNvZGUgb2JqZWN0LiAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0NvbmNhdChQeU9iamVjdCAqbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Db25jYXQoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEwsICp3OworICAgIFB5T2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMLCAqdzsKKyAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXIyOworICAgIFB5X3NzaXplX3QgdV9sZW4sIHZfbGVuLCBuZXdfbGVuOwogCiAgICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgdSA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKKyAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7CiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIHYgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOworICAgIHYgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgLyogU2hvcnRjdXRzICovCiAgICAgaWYgKHYgPT0gdW5pY29kZV9lbXB0eSkgewogICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1OworICAgICAgICByZXR1cm4gdTsKICAgICB9CiAgICAgaWYgKHUgPT0gdW5pY29kZV9lbXB0eSkgewogICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgICAgICByZXR1cm4gdjsKICAgICB9CiAKKyAgICB1X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpOworICAgIHZfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodik7CisgICAgaWYgKHVfbGVuID4gUFlfU1NJWkVfVF9NQVggLSB2X2xlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisgICAgbmV3X2xlbiA9IHVfbGVuICsgdl9sZW47CisKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHUpOworICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHYpOworICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBtYXhjaGFyMik7CisKICAgICAvKiBDb25jYXQgdGhlIHR3byBVbmljb2RlIHN0cmluZ3MgKi8KLSAgICB3ID0gX1B5VW5pY29kZV9OZXcodS0+bGVuZ3RoICsgdi0+bGVuZ3RoKTsKKyAgICB3ID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKICAgICBpZiAodyA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKHctPnN0ciwgdS0+c3RyLCB1LT5sZW5ndGgpOwotICAgIFB5X1VOSUNPREVfQ09QWSh3LT5zdHIgKyB1LT5sZW5ndGgsIHYtPnN0ciwgdi0+bGVuZ3RoKTsKLQorICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIDAsIHUsIDAsIHVfbGVuKTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCB1X2xlbiwgdiwgMCwgdl9sZW4pOwogICAgIFB5X0RFQ1JFRih1KTsKICAgICBQeV9ERUNSRUYodik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXc7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3LCAxKSk7CisgICAgcmV0dXJuIHc7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHUpOwpAQCAtNzQ3MiwxOSArMTA2NTksODkgQEAKIH0KIAogdm9pZAotUHlVbmljb2RlX0FwcGVuZChQeU9iamVjdCAqKnBsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCitQeVVuaWNvZGVfQXBwZW5kKFB5T2JqZWN0ICoqcF9sZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgUHlPYmplY3QgKm5ldzsKLSAgICBpZiAoKnBsZWZ0ID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAocmlnaHQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKCpwbGVmdCkpIHsKLSAgICAgICAgUHlfREVDUkVGKCpwbGVmdCk7Ci0gICAgICAgICpwbGVmdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxlZnQsICpyZXM7CisgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyMjsKKyAgICBQeV9zc2l6ZV90IGxlZnRfbGVuLCByaWdodF9sZW4sIG5ld19sZW47CisKKyAgICBpZiAocF9sZWZ0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbmV3ID0gUHlVbmljb2RlX0NvbmNhdCgqcGxlZnQsIHJpZ2h0KTsKLSAgICBQeV9ERUNSRUYoKnBsZWZ0KTsKLSAgICAqcGxlZnQgPSBuZXc7CisgICAgbGVmdCA9ICpwX2xlZnQ7CisgICAgaWYgKHJpZ2h0ID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhsZWZ0KSkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogU2hvcnRjdXRzICovCisgICAgaWYgKGxlZnQgPT0gdW5pY29kZV9lbXB0eSkgeworICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgIFB5X0lOQ1JFRihyaWdodCk7CisgICAgICAgICpwX2xlZnQgPSByaWdodDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmlnaHQgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGVmdF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KTsKKyAgICByaWdodF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCk7CisgICAgaWYgKGxlZnRfbGVuID4gUFlfU1NJWkVfVF9NQVggLSByaWdodF9sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBuZXdfbGVuID0gbGVmdF9sZW4gKyByaWdodF9sZW47CisKKyAgICBpZiAodW5pY29kZV9tb2RpZmlhYmxlKGxlZnQpCisgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHJpZ2h0KQorICAgICAgICAmJiBQeVVuaWNvZGVfS0lORChyaWdodCkgPD0gUHlVbmljb2RlX0tJTkQobGVmdCkKKyAgICAgICAgLyogRG9uJ3QgcmVzaXplIGZvciBhc2NpaSArPSBsYXRpbjEuIENvbnZlcnQgYXNjaWkgdG8gbGF0aW4xIHJlcXVpcmVzCisgICAgICAgICAgIHRvIGNoYW5nZSB0aGUgc3RydWN0dXJlIHNpemUsIGJ1dCBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQganVzdCBhZnRlcgorICAgICAgICAgICB0aGUgc3RydWN0dXJlLCBhbmQgc28gaXQgcmVxdWlyZXMgdG8gbW92ZSBhbGwgY2hhcmFjdGVycyB3aGljaCBpcworICAgICAgICAgICBub3Qgc28gZGlmZmVyZW50IHRoYW4gZHVwbGljYXRpbmcgdGhlIHN0cmluZy4gKi8KKyAgICAgICAgJiYgIShQeVVuaWNvZGVfSVNfQVNDSUkobGVmdCkgJiYgIVB5VW5pY29kZV9JU19BU0NJSShyaWdodCkpKQorICAgIHsKKyAgICAgICAgLyogYXBwZW5kIGlucGxhY2UgKi8KKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHBfbGVmdCwgbmV3X2xlbikgIT0gMCkgeworICAgICAgICAgICAgLyogWFhYIGlmIF9QeVVuaWNvZGVfUmVzaXplKCkgZmFpbHMsICdsZWZ0JyBoYXMgYmVlbgorICAgICAgICAgICAgICogZGVhbGxvY2F0ZWQgc28gaXQgY2Fubm90IGJlIHB1dCBiYWNrIGludG8KKyAgICAgICAgICAgICAqICd2YXJpYWJsZScuICBUaGUgTWVtb3J5RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlcmUKKyAgICAgICAgICAgICAqIGlzIG5vIHZhbHVlIGluICd2YXJpYWJsZScsIHdoaWNoIG1pZ2h0ICh2ZXJ5CisgICAgICAgICAgICAgKiByZW1vdGVseSkgYmUgYSBjYXVzZSBvZiBpbmNvbXBhdGliaWxpdGllcy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAvKiBjb3B5ICdyaWdodCcgaW50byB0aGUgbmV3bHkgYWxsb2NhdGVkIGFyZWEgb2YgJ2xlZnQnICovCisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKCpwX2xlZnQsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUobGVmdCk7CisgICAgICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJpZ2h0KTsKKyAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXIyKTsKKworICAgICAgICAvKiBDb25jYXQgdGhlIHR3byBVbmljb2RlIHN0cmluZ3MgKi8KKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCAwLCBsZWZ0LCAwLCBsZWZ0X2xlbik7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICpwX2xlZnQgPSByZXM7CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKnBfbGVmdCwgMSkpOworICAgIHJldHVybjsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoKnBfbGVmdCk7CiB9CiAKIHZvaWQKQEAgLTc1MDIsMjMgKzEwNzU5LDY0IEBACiBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfY291bnQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfY291bnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpcmVzdWx0OwogCiAgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc2VsZi0+bGVuZ3RoKTsKLSAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVNzaXplX3QoCi0gICAgICAgIHN0cmluZ2xpYl9jb3VudChzZWxmLT5zdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDIgPiBraW5kMSkKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpcmVzdWx0ID0gdWNzMWxpYl9jb3VudCgKKyAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgaXJlc3VsdCA9IHVjczJsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzIqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIGlyZXN1bHQgPSB1Y3M0bGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1M0KilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7IGlyZXN1bHQgPSAwOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpcmVzdWx0KTsKKworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKQEAgLTc1MzYsNyArMTA4MzQsNyBAQAogY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9lbmNvZGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3VuaWNvZGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIDB9OwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKQEAgLTc1NDUsNyArMTA4NDMsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczplbmNvZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmVuY29kaW5nLCAmZXJyb3JzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKIFB5RG9jX1NUUlZBUihleHBhbmR0YWJzX19kb2NfXywKQEAgLTc1NTUsODIgKzEwODUzLDgyIEBACiBJZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9leHBhbmR0YWJzKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2V4cGFuZHRhYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKmU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9VTklDT0RFICpxOwotICAgIFB5X1VOSUNPREUgKnFlOwotICAgIFB5X3NzaXplX3QgaSwgaiwgaW5jcjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgUHlfc3NpemVfdCBpLCBqLCBsaW5lX3Bvcywgc3JjX2xlbiwgaW5jcjsKKyAgICBQeV9VQ1M0IGNoOworICAgIFB5T2JqZWN0ICp1OworICAgIHZvaWQgKnNyY19kYXRhLCAqZGVzdF9kYXRhOwogICAgIGludCB0YWJzaXplID0gODsKKyAgICBpbnQga2luZDsKKyAgICBpbnQgZm91bmQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmV4cGFuZHRhYnMiLCAmdGFic2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBGaXJzdCBwYXNzOiBkZXRlcm1pbmUgc2l6ZSBvZiBvdXRwdXQgc3RyaW5nICovCi0gICAgaSA9IDA7IC8qIGNoYXJzIHVwIHRvIGFuZCBpbmNsdWRpbmcgbW9zdCByZWNlbnQgXG4gb3IgXHIgKi8KLSAgICBqID0gMDsgLyogY2hhcnMgc2luY2UgbW9zdCByZWNlbnQgXG4gb3IgXHIgKHVzZSBpbiB0YWIgY2FsY3VsYXRpb25zKSAqLwotICAgIGUgPSBzZWxmLT5zdHIgKyBzZWxmLT5sZW5ndGg7IC8qIGVuZCBvZiBpbnB1dCAqLwotICAgIGZvciAocCA9IHNlbGYtPnN0cjsgcCA8IGU7IHArKykKLSAgICAgICAgaWYgKCpwID09ICdcdCcpIHsKKyAgICBzcmNfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgaSA9IGogPSBsaW5lX3BvcyA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIHNyY19kYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgZm91bmQgPSAwOworICAgIGZvciAoOyBpIDwgc3JjX2xlbjsgaSsrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgc3JjX2RhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaW5jciA9IHRhYnNpemUgLSAoaiAlIHRhYnNpemUpOyAvKiBjYW5ub3Qgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICBpbmNyID0gdGFic2l6ZSAtIChsaW5lX3BvcyAlIHRhYnNpemUpOyAvKiBjYW5ub3Qgb3ZlcmZsb3cgKi8KICAgICAgICAgICAgICAgICBpZiAoaiA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgICAgICAgICAgICAgbGluZV9wb3MgKz0gaW5jcjsKICAgICAgICAgICAgICAgICBqICs9IGluY3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoaiA+IFBZX1NTSVpFX1RfTUFYIC0gMSkKLSAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICAgICAgbGluZV9wb3MrKzsKICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nIHx8ICpwID09ICdccicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA+IFBZX1NTSVpFX1RfTUFYIC0gaikKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzE7Ci0gICAgICAgICAgICAgICAgaSArPSBqOwotICAgICAgICAgICAgICAgIGogPSAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJykKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyA9IDA7CiAgICAgICAgIH0KLQotICAgIGlmIChpID4gUFlfU1NJWkVfVF9NQVggLSBqKQotICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKIAogICAgIC8qIFNlY29uZCBwYXNzOiBjcmVhdGUgb3V0cHV0IHN0cmluZyBhbmQgZmlsbCBpdCAqLwotICAgIHUgPSBfUHlVbmljb2RlX05ldyhpICsgaik7CisgICAgdSA9IFB5VW5pY29kZV9OZXcoaiwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGRlc3RfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOwogCi0gICAgaiA9IDA7IC8qIHNhbWUgYXMgaW4gZmlyc3QgcGFzcyAqLwotICAgIHEgPSB1LT5zdHI7IC8qIG5leHQgb3V0cHV0IGNoYXIgKi8KLSAgICBxZSA9IHUtPnN0ciArIHUtPmxlbmd0aDsgLyogZW5kIG9mIG91dHB1dCAqLworICAgIGkgPSBqID0gbGluZV9wb3MgPSAwOwogCi0gICAgZm9yIChwID0gc2VsZi0+c3RyOyBwIDwgZTsgcCsrKQotICAgICAgICBpZiAoKnAgPT0gJ1x0JykgeworICAgIGZvciAoOyBpIDwgc3JjX2xlbjsgaSsrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgc3JjX2RhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gJ1x0JykgewogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaSA9IHRhYnNpemUgLSAoaiAlIHRhYnNpemUpOwotICAgICAgICAgICAgICAgIGogKz0gaTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChxID49IHFlKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzI7Ci0gICAgICAgICAgICAgICAgICAgICpxKysgPSAnICc7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGluY3IgPSB0YWJzaXplIC0gKGxpbmVfcG9zICUgdGFic2l6ZSk7CisgICAgICAgICAgICAgICAgbGluZV9wb3MgKz0gaW5jcjsKKyAgICAgICAgICAgICAgICBGSUxMKGtpbmQsIGRlc3RfZGF0YSwgJyAnLCBqLCBpbmNyKTsKKyAgICAgICAgICAgICAgICBqICs9IGluY3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAocSA+PSBxZSkKLSAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MjsKLSAgICAgICAgICAgICpxKysgPSAqcDsKKyAgICAgICAgICAgIGxpbmVfcG9zKys7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGVzdF9kYXRhLCBqLCBjaCk7CiAgICAgICAgICAgICBqKys7Ci0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInKQotICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgaWYgKGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJykKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyA9IDA7CiAgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0IChqID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodSk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKLQotICBvdmVyZmxvdzI6Ci0gICAgUHlfREVDUkVGKHUpOwotICBvdmVyZmxvdzE6CisgIG92ZXJmbG93OgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibmV3IHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNzY0NSw5ICsxMDk0Myw5IEBACiBSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZmluZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9maW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC03NjU2LDYzICsxMDk1NCwxMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2dldGl0ZW0oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQordW5pY29kZV9nZXRpdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQogewotICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+bGVuZ3RoKSB7CisgICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgUHlfVUNTNCBjaDsKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc2VsZikgfHwgUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KTsKKyAgICBpZiAoY2ggPCAyNTYpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoY2gpOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmc2VsZi0+c3RyW2luZGV4XSwgMSk7CisgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgMCwgY2gpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogLyogQmVsaWV2ZSBpdCBvciBub3QsIHRoaXMgcHJvZHVjZXMgdGhlIHNhbWUgdmFsdWUgZm9yIEFTQ0lJIHN0cmluZ3MKLSAgIGFzIHN0cmluZ19oYXNoKCkuICovCisgICBhcyBieXRlc19oYXNoKCkuICovCiBzdGF0aWMgUHlfaGFzaF90Ci11bmljb2RlX2hhc2goUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9oYXNoKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfaGFzaF90IHg7CisgICAgUHlfdWhhc2hfdCB4OwogCiAjaWZkZWYgUHlfREVCVUcKICAgICBhc3NlcnQoX1B5X0hhc2hTZWNyZXRfSW5pdGlhbGl6ZWQpOwogI2VuZGlmCi0gICAgaWYgKHNlbGYtPmhhc2ggIT0gLTEpCi0gICAgICAgIHJldHVybiBzZWxmLT5oYXNoOwotICAgIGxlbiA9IFB5X1NJWkUoc2VsZik7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTSChzZWxmKSAhPSAtMSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfSEFTSChzZWxmKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgLyoKICAgICAgIFdlIG1ha2UgdGhlIGhhc2ggb2YgdGhlIGVtcHR5IHN0cmluZyBiZSAwLCByYXRoZXIgdGhhbiB1c2luZwogICAgICAgKHByZWZpeCBeIHN1ZmZpeCksIHNpbmNlIHRoaXMgc2xpZ2h0bHkgb2JmdXNjYXRlcyB0aGUgaGFzaCBzZWNyZXQKICAgICAqLwogICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICBzZWxmLT5oYXNoID0gMDsKKyAgICAgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0gMDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHAgPSBzZWxmLT5zdHI7Ci0gICAgeCA9IF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKLSAgICB4IF49ICpwIDw8IDc7Ci0gICAgd2hpbGUgKC0tbGVuID49IDApCi0gICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSKngpIF4gKnArKzsKLSAgICB4IF49IFB5X1NJWkUoc2VsZik7Ci0gICAgeCBePSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7CisKKyAgICAvKiBUaGUgaGFzaCBmdW5jdGlvbiBhcyBhIG1hY3JvLCBnZXRzIGV4cGFuZGVkIHRocmVlIHRpbWVzIGJlbG93LiAqLworI2RlZmluZSBIQVNIKFApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeCBePSAoUHlfdWhhc2hfdCkgKlAgPDwgNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB3aGlsZSAoLS1sZW4gPj0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUiAqIHgpIF4gKFB5X3VoYXNoX3QpICpQKys7ICBcCisKKyAgICB4ID0gKFB5X3VoYXNoX3QpIF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHNlbGYpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIEhBU0goYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7CisgICAgICAgIGNvbnN0IFB5X1VDUzIgKnMgPSBQeVVuaWNvZGVfMkJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgSEFTSChzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgUHlfVUNTNCAqbDsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHNlbGYpID09IFB5VW5pY29kZV80QllURV9LSU5EICYmCisgICAgICAgICAgICAgICAiSW1wb3NzaWJsZSBzd2l0Y2ggY2FzZSBpbiB1bmljb2RlX2hhc2giKTsKKyAgICAgICAgbCA9IFB5VW5pY29kZV80QllURV9EQVRBKHNlbGYpOworICAgICAgICBIQVNIKGwpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAgIHggXj0gKFB5X3VoYXNoX3QpIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHggXj0gKFB5X3VoYXNoX3QpIF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKKwogICAgIGlmICh4ID09IC0xKQogICAgICAgICB4ID0gLTI7Ci0gICAgc2VsZi0+aGFzaCA9IHg7CisgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0geDsKICAgICByZXR1cm4geDsKIH0KKyN1bmRlZiBIQVNICiAKIFB5RG9jX1NUUlZBUihpbmRleF9fZG9jX18sCiAgICAgICAgICAgICAgIlMuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCkBAIC03NzIwLDEwICsxMTA2OSwxMCBAQAogTGlrZSBTLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9pbmRleChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9pbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogCkBAIC03NzMxLDE0ICsxMTA4MCwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChyZXN1bHQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic3Vic3RyaW5nIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3NTQsMjQgKzExMTA3LDMxIEBACiBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2xvd2VyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNsb3dlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIGludCBjYXNlZDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNMT1dFUigqcCkpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNMT1dFUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIGNhc2VkID0gMDsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSB8fCBQeV9VTklDT0RFX0lTVElUTEUoY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKQEAgLTc3ODgsMjQgKzExMTQ4LDMxIEBACiBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc3VwcGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXN1cHBlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIGludCBjYXNlZDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNVUFBFUigqcCkgIT0gMCk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1VQUEVSKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSAhPSAwKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBjYXNlZCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNMT1dFUihjaCkgfHwgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CkBAIC03ODI0LDI2ICsxMTE5MSwzNCBAQAogUmV0dXJuIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc3RpdGxlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXN0aXRsZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIGludCBjYXNlZCwgcHJldmlvdXNfaXNfY2FzZWQ7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygoUHlfVU5JQ09ERV9JU1RJVExFKCpwKSAhPSAwKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VTklDT0RFX0lTVVBQRVIoKnApICE9IDApKTsKKyAgICBpZiAobGVuZ3RoID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChQeV9VTklDT0RFX0lTVElUTEUoY2gpICE9IDApIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X1VOSUNPREVfSVNVUFBFUihjaCkgIT0gMCkpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBjYXNlZCA9IDA7CiAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAwOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoY2gpIHx8IFB5X1VOSUNPREVfSVNUSVRMRShjaCkpIHsKICAgICAgICAgICAgIGlmIChwcmV2aW91c19pc19jYXNlZCkKQEAgLTc4NzAsMjMgKzExMjQ1LDI5IEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNzcGFjZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzc3BhY2UoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRSgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQpAQCAtNzkwMCwyMyArMTEyODEsMjkgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2FscGhhKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNhbHBoYShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0FMUEhBKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTQUxQSEEoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTQUxQSEEoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0FMUEhBKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC03OTI5LDIzICsxMTMxNiwzMSBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzYWxudW0oUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2FsbnVtKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW4sIGk7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNBTE5VTSgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbiA9PSAxKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTQUxOVU0oY2gpKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0FMTlVNKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQpAQCAtNzk1OSwyMyArMTEzNTQsMjkgQEAKIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2RlY2ltYWwoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2RlY2ltYWwoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNERUNJTUFMKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNERUNJTUFMKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC03OTg4LDIzICsxMTM4OSwzMCBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzZGlnaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2RpZ2l0KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTRElHSVQoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU0RJR0lUKGNoKSk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNESUdJVChfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTRElHSVQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTgwMTcsMjMgKzExNDI1LDI5IEBACiBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNudW1lcmljKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNudW1lcmljKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTTlVNRVJJQygqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTTlVNRVJJQyhfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTTlVNRVJJQyhQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtODA0MiwxMyArMTE0NTYsMjEgQEAKIGludAogUHlVbmljb2RlX0lzSWRlbnRpZmllcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKFB5VW5pY29kZU9iamVjdCopc2VsZik7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9VQ1M0IGZpcnN0OwogCi0gICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiaWRlbnRpZmllciBub3QgcmVhZHkiKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBQRVAgMzEzMSBzYXlzIHRoYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGluCiAgICAgICAgWElEX1N0YXJ0IGFuZCBzdWJzZXF1ZW50IGNoYXJhY3RlcnMgaW4gWElEX0NvbnRpbnVlLApAQCAtODA1OCwxMyArMTE0ODAsMTIgQEAKICAgICAgICBkZWZpbml0aW9uIG9mIFhJRF9TdGFydCBhbmQgWElEX0NvbnRpbnVlLCBpdCBpcyBzdWZmaWNpZW50CiAgICAgICAgdG8gY2hlY2sganVzdCBmb3IgdGhlc2UsIGV4Y2VwdCB0aGF0IF8gbXVzdCBiZSBhbGxvd2VkCiAgICAgICAgYXMgc3RhcnRpbmcgYW4gaWRlbnRpZmllci4gICovCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgZmlyc3QgPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZpcnN0ID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CiAgICAgaWYgKCFfUHlVbmljb2RlX0lzWGlkU3RhcnQoZmlyc3QpICYmIGZpcnN0ICE9IDB4NUYgLyogTE9XIExJTkUgKi8pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgd2hpbGUgKHAgPCBlKQotICAgICAgICBpZiAoIV9QeVVuaWNvZGVfSXNYaWRDb250aW51ZShfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAxOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7IGkrKykKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0lzWGlkQ29udGludWUoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC04MDkwLDE3ICsxMTUxMSwyMyBAQAogc3RhdGljIFB5T2JqZWN0KgogdW5pY29kZV9pc3ByaW50YWJsZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYgUHlfVU5JQ09ERV9JU1BSSU5UQUJMRSgqcCkpIHsKLSAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgfQorICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNQUklOVEFCTEUoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNQUklOVEFCTEUoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkgewogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgICAgICB9CiAgICAgfQpAQCAtODEyMCw5ICsxMTU0NywxMSBAQAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotdW5pY29kZV9sZW5ndGgoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIHNlbGYtPmxlbmd0aDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogfQogCiBQeURvY19TVFJWQVIobGp1c3RfX2RvY19fLApAQCAtODEzMiwyMCArMTE1NjEsMjEgQEAKIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbGp1c3QoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfbGp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgUHlfVU5JQ09ERSBmaWxsY2hhciA9ICcgJzsKKyAgICBQeV9VQ1M0IGZpbGxjaGFyID0gJyAnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufE8mOmxqdXN0IiwgJndpZHRoLCBjb252ZXJ0X3VjLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGggJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgcGFkKHNlbGYsIDAsIHdpZHRoIC0gc2VsZi0+bGVuZ3RoLCBmaWxsY2hhcik7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID49IHdpZHRoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgcmV0dXJuIHBhZChzZWxmLCAwLCB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBmaWxsY2hhcik7CiB9CiAKIFB5RG9jX1NUUlZBUihsb3dlcl9fZG9jX18sCkBAIC04MTU0LDkgKzExNTg0LDEzIEBACiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgUyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2xvd2VyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfbG93ZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeGxvd2VyKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICByZXR1cm4gYXNjaWlfdXBwZXJfb3JfbG93ZXIoc2VsZiwgMSk7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX2xvd2VyKTsKIH0KIAogI2RlZmluZSBMRUZUU1RSSVAgMApAQCAtODE3MCwxOSArMTE2MDQsMjcgQEAKIAogLyogZXh0ZXJuYWxseSB2aXNpYmxlIGZvciBzdHIuc3RyaXAodW5pY29kZSkgKi8KIFB5T2JqZWN0ICoKLV9QeVVuaWNvZGVfWFN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKnNlcG9iaikKK19QeVVuaWNvZGVfWFN0cmlwKFB5T2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqc2Vwb2JqKQogewotICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICBQeV9VTklDT0RFICpzZXAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXBvYmopOwotICAgIFB5X3NzaXplX3Qgc2VwbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlcG9iaik7Ci0gICAgUHlfc3NpemVfdCBpLCBqOworICAgIHZvaWQgKmRhdGE7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBpLCBqLCBsZW47CisgICAgQkxPT01fTUFTSyBzZXBtYXNrOwogCi0gICAgQkxPT01fTUFTSyBzZXBtYXNrID0gbWFrZV9ibG9vbV9tYXNrKHNlcCwgc2VwbGVuKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzZXBvYmopID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgc2VwbWFzayA9IG1ha2VfYmxvb21fbWFzayhQeVVuaWNvZGVfS0lORChzZXBvYmopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoc2Vwb2JqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcG9iaikpOwogCiAgICAgaSA9IDA7CiAgICAgaWYgKHN0cmlwdHlwZSAhPSBSSUdIVFNUUklQKSB7Ci0gICAgICAgIHdoaWxlIChpIDwgbGVuICYmIEJMT09NX01FTUJFUihzZXBtYXNrLCBzW2ldLCBzZXAsIHNlcGxlbikpIHsKKyAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYKKyAgICAgICAgICAgICAgIEJMT09NX01FTUJFUihzZXBtYXNrLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSwgc2Vwb2JqKSkgewogICAgICAgICAgICAgaSsrOwogICAgICAgICB9CiAgICAgfQpAQCAtODE5MSwyOCArMTE2MzMsNzAgQEAKICAgICBpZiAoc3RyaXB0eXBlICE9IExFRlRTVFJJUCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBqLS07Ci0gICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJiBCTE9PTV9NRU1CRVIoc2VwbWFzaywgc1tqXSwgc2VwLCBzZXBsZW4pKTsKKyAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmCisgICAgICAgICAgICAgICAgIEJMT09NX01FTUJFUihzZXBtYXNrLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKSwgc2Vwb2JqKSk7CiAgICAgICAgIGorKzsKICAgICB9CiAKLSAgICBpZiAoaSA9PSAwICYmIGogPT0gbGVuICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopc2VsZjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMraSwgai1pKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLCBpLCBqKTsKIH0KIAorUHlPYmplY3QqCitQeVVuaWNvZGVfU3Vic3RyaW5nKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBlbmQgPSBQeV9NSU4oZW5kLCBsZW5ndGgpOworCisgICAgaWYgKHN0YXJ0ID09IDAgJiYgZW5kID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIGlmIChzdGFydCA8IDAgfHwgZW5kIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzdGFydCA+PSBsZW5ndGggfHwgZW5kIDwgc3RhcnQpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBsZW5ndGggPSBlbmQgLSBzdGFydDsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKSB7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKChjaGFyKikoZGF0YSArIHN0YXJ0KSwgbGVuZ3RoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICsga2luZCAqIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpOworICAgIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX3N0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSkKK2RvX3N0cmlwKFB5T2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlKQogewotICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwgaSwgajsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuLCBpLCBqOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogCiAgICAgaSA9IDA7CiAgICAgaWYgKHN0cmlwdHlwZSAhPSBSSUdIVFNUUklQKSB7Ci0gICAgICAgIHdoaWxlIChpIDwgbGVuICYmIFB5X1VOSUNPREVfSVNTUEFDRShzW2ldKSkgeworICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0KICAgICB9CkBAIC04MjIxLDIxICsxMTcwNSwxNiBAQAogICAgIGlmIChzdHJpcHR5cGUgIT0gTEVGVFNUUklQKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGotLTsKLSAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmIFB5X1VOSUNPREVfSVNTUEFDRShzW2pdKSk7CisgICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaikpKTsKICAgICAgICAgaisrOwogICAgIH0KIAotICAgIGlmIChpID09IDAgJiYgaiA9PSBsZW4gJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilzZWxmOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocytpLCBqLWkpOworICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNlbGYsIGksIGopOwogfQogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kb19hcmdzdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICphcmdzKQorZG9fYXJnc3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOwogCkBAIC04MjY1LDcgKzExNzQ0LDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfc3RyaXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCiAgICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBCT1RIU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwpAQCAtODI4MSw3ICsxMTc2MCw3IEBACiBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2xzdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9sc3RyaXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCiAgICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBMRUZUU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwpAQCAtODI5Nyw3ICsxMTc3Niw3IEBACiBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JzdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yc3RyaXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCiAgICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBSSUdIVFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KQEAgLTgzMDcsNjQgKzExNzg2LDc2IEBACiAKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9yZXBlYXQoUHlVbmljb2RlT2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgbGVuKQordW5pY29kZV9yZXBlYXQoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBsZW4pCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfc3NpemVfdCBuY2hhcnM7Ci0gICAgc2l6ZV90IG5ieXRlczsKKyAgICBQeU9iamVjdCAqdTsKKyAgICBQeV9zc2l6ZV90IG5jaGFycywgbjsKIAogICAgIGlmIChsZW4gPCAxKSB7CiAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGVfZW1wdHk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIGlmIChsZW4gPT0gMSAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdHIpKSB7Ci0gICAgICAgIC8qIG5vIHJlcGVhdCwgcmV0dXJuIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICBQeV9JTkNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHN0cjsKLSAgICB9CisgICAgLyogbm8gcmVwZWF0LCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nICovCisgICAgaWYgKGxlbiA9PSAxKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHN0cik7CiAKLSAgICAvKiBlbnN1cmUgIyBvZiBjaGFycyBuZWVkZWQgZG9lc24ndCBvdmVyZmxvdyBpbnQgYW5kICMgb2YgYnl0ZXMKLSAgICAgKiBuZWVkZWQgZG9lc24ndCBvdmVyZmxvdyBzaXplX3QKLSAgICAgKi8KLSAgICBuY2hhcnMgPSBsZW4gKiBzdHItPmxlbmd0aDsKLSAgICBpZiAobmNoYXJzIC8gbGVuICE9IHN0ci0+bGVuZ3RoKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID4gUFlfU1NJWkVfVF9NQVggLyBsZW4pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVwZWF0ZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuYnl0ZXMgPSAobmNoYXJzICsgMSkgKiBzaXplb2YoUHlfVU5JQ09ERSk7Ci0gICAgaWYgKG5ieXRlcyAvIHNpemVvZihQeV9VTklDT0RFKSAhPSAoc2l6ZV90KShuY2hhcnMgKyAxKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBlYXRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHUgPSBfUHlVbmljb2RlX05ldyhuY2hhcnMpOworICAgIG5jaGFycyA9IGxlbiAqIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICB1ID0gUHlVbmljb2RlX05ldyhuY2hhcnMsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh1KSA9PSBQeVVuaWNvZGVfS0lORChzdHIpKTsKIAotICAgIHAgPSB1LT5zdHI7Ci0KLSAgICBpZiAoc3RyLT5sZW5ndGggPT0gMSkgewotICAgICAgICBQeV9VTklDT0RFX0ZJTEwocCwgc3RyLT5zdHJbMF0sIGxlbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlfc3NpemVfdCBkb25lID0gc3RyLT5sZW5ndGg7IC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvcGllZCB0aGlzIGZhciAqLwotICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc3RyLT5zdHIsIHN0ci0+bGVuZ3RoKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSA9PSAxKSB7CisgICAgICAgIGNvbnN0IGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBmaWxsX2NoYXIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBQeVVuaWNvZGVfREFUQShzdHIpLCAwKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIHZvaWQgKnRvID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgICAgICAgICBtZW1zZXQodG8sICh1bnNpZ25lZCBjaGFyKWZpbGxfY2hhciwgbGVuKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBQeV9VQ1MyICp1Y3MyID0gUHlVbmljb2RlXzJCWVRFX0RBVEEodSk7CisgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgbGVuOyArK24pCisgICAgICAgICAgICAgICAgdWNzMltuXSA9IGZpbGxfY2hhcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1VDUzQgKnVjczQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1KTsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBsZW47ICsrbikKKyAgICAgICAgICAgICAgICB1Y3M0W25dID0gZmlsbF9jaGFyOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyBjb3BpZWQgdGhpcyBmYXIgKi8KKyAgICAgICAgUHlfc3NpemVfdCBkb25lID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICAgICAgY29uc3QgUHlfc3NpemVfdCBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgICAgICBjaGFyICp0byA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHUpOworICAgICAgICBQeV9NRU1DUFkodG8sIFB5VW5pY29kZV9EQVRBKHN0ciksCisgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICogY2hhcl9zaXplKTsKICAgICAgICAgd2hpbGUgKGRvbmUgPCBuY2hhcnMpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IChkb25lIDw9IG5jaGFycy1kb25lKSA/IGRvbmUgOiBuY2hhcnMtZG9uZTsKLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwK2RvbmUsIHAsIG4pOworICAgICAgICAgICAgbiA9IChkb25lIDw9IG5jaGFycy1kb25lKSA/IGRvbmUgOiBuY2hhcnMtZG9uZTsKKyAgICAgICAgICAgIFB5X01FTUNQWSh0byArIChkb25lICogY2hhcl9zaXplKSwgdG8sIG4gKiBjaGFyX3NpemUpOwogICAgICAgICAgICAgZG9uZSArPSBuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CisgICAgcmV0dXJuIHU7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vib2JqLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxvYmosCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwogICAgIFB5T2JqZWN0ICpzdHIxOwpAQCAtODM4NSwxMCArMTE4NzYsMTIgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gcmVwbGFjZSgoUHlVbmljb2RlT2JqZWN0ICopc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilzdHIxLAotICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN0cjIsCi0gICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwKKyAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQorICAgICAgICByZXN1bHQgPSBOVUxMOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CiAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgIFB5X0RFQ1JFRihzdHIxKTsKICAgICBQeV9ERUNSRUYoc3RyMik7CkBAIC04NDAzLDE3NyArMTE4OTYsMTgxIEBACiBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JlcGxhY2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdHIxOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMjsKKyAgICBQeU9iamVjdCAqc3RyMTsKKyAgICBQeU9iamVjdCAqc3RyMjsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KChQeU9iamVjdCAqKXN0cjEpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIxKTsKICAgICBpZiAoc3RyMSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIyID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KChQeU9iamVjdCAqKXN0cjIpOworICAgIHN0cjIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIyKTsKICAgICBpZiAoc3RyMiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdHIxKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKIAogICAgIFB5X0RFQ1JFRihzdHIxKTsKICAgICBQeV9ERUNSRUYoc3RyMik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljCi1QeU9iamVjdCAqdW5pY29kZV9yZXByKFB5T2JqZWN0ICp1bmljb2RlKQorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfcmVwcihQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7CisgICAgUHlfc3NpemVfdCBpc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG9zaXplLCBzcXVvdGUsIGRxdW90ZSwgaSwgbzsKKyAgICBQeV9VQ1M0IG1heCwgcXVvdGU7CisgICAgaW50IGlraW5kLCBva2luZDsKKyAgICB2b2lkICppZGF0YSwgKm9kYXRhOwogCi0gICAgLyogWFhYKG5ub3J3aXR6KTogcmF0aGVyIHRoYW4gb3Zlci1hbGxvY2F0aW5nLCBpdCB3b3VsZCBiZQotICAgICAgIGJldHRlciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgc2NoZW1lLiAgUGVyaGFwcyBzY2FuIHRoZQotICAgICAgIGZpcnN0IE4tY2hhcnMgb2YgdGhlIHN0cmluZyBhbmQgYWxsb2NhdGUgYmFzZWQgb24gdGhhdCBzaXplLgotICAgICovCi0gICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIHVuaWNocgotICAgICAgIGVzY2FwZS4KLQotICAgICAgIEluIHdpZGUgKFVURi0zMikgYnVpbGRzICdcVTAweHh4eHh4JyBpcyAxMCBjaGFycyBwZXIgc291cmNlCi0gICAgICAgdW5pY2hyLCBzbyBpbiB0aGlzIGNhc2UgaXQncyB0aGUgbG9uZ2VzdCB1bmljaHIgZXNjYXBlLiBJbgotICAgICAgIG5hcnJvdyAoVVRGLTE2KSBidWlsZHMgdGhpcyBpcyBmaXZlIGNoYXJzIHBlciBzb3VyY2UgdW5pY2hyCi0gICAgICAgc2luY2UgdGhlcmUgYXJlIHR3byB1bmljaHJzIGluIHRoZSBzdXJyb2dhdGUgcGFpciwgc28gaW4gbmFycm93Ci0gICAgICAgKFVURi0xNikgYnVpbGRzIGl0J3Mgbm90IHRoZSBsb25nZXN0IHVuaWNociBlc2NhcGUuCi0KLSAgICAgICBJbiB3aWRlIG9yIG5hcnJvdyBidWlsZHMgJ1x1eHh4eCcgaXMgNiBjaGFycyBwZXIgc291cmNlIHVuaWNociwKLSAgICAgICBzbyBpbiB0aGUgbmFycm93IChVVEYtMTYpIGJ1aWxkIGNhc2UgaXQncyB0aGUgbG9uZ2VzdCB1bmljaHIKLSAgICAgICBlc2NhcGUuCi0gICAgKi8KLQotICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLyogcXVvdGVzICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEwKnNpemUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDYqc2l6ZQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEpOwotICAgIGlmIChyZXByID09IE5VTEwpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcik7CisgICAgaXNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogCi0gICAgLyogQWRkIHF1b3RlICovCi0gICAgKnArKyA9IChmaW5kY2hhcihzLCBzaXplLCAnXCcnKSAmJgotICAgICAgICAgICAgIWZpbmRjaGFyKHMsIHNpemUsICciJykpID8gJyInIDogJ1wnJzsKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKKyAgICAvKiBDb21wdXRlIGxlbmd0aCBvZiBvdXRwdXQsIHF1b3RlIGNoYXJhY3RlcnMsIGFuZAorICAgICAgIG1heGltdW0gY2hhcmFjdGVyICovCisgICAgb3NpemUgPSAyOyAvKiBxdW90ZXMgKi8KKyAgICBtYXggPSAxMjc7CisgICAgc3F1b3RlID0gZHF1b3RlID0gMDsKKyAgICBpa2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBpc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChpa2luZCwgaWRhdGEsIGkpOworICAgICAgICBzd2l0Y2ggKGNoKSB7CisgICAgICAgIGNhc2UgJ1wnJzogc3F1b3RlKys7IG9zaXplKys7IGJyZWFrOworICAgICAgICBjYXNlICciJzogIGRxdW90ZSsrOyBvc2l6ZSsrOyBicmVhazsKKyAgICAgICAgY2FzZSAnXFwnOiBjYXNlICdcdCc6IGNhc2UgJ1xyJzogY2FzZSAnXG4nOgorICAgICAgICAgICAgb3NpemUgKz0gMjsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiBGYXN0LXBhdGggQVNDSUkgKi8KKyAgICAgICAgICAgIGlmIChjaCA8ICcgJyB8fCBjaCA9PSAweDdmKQorICAgICAgICAgICAgICAgIG9zaXplICs9IDQ7IC8qIFx4SEggKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHg3ZikKKyAgICAgICAgICAgICAgICBvc2l6ZSsrOworICAgICAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShjaCkpIHsKKyAgICAgICAgICAgICAgICBvc2l6ZSsrOworICAgICAgICAgICAgICAgIG1heCA9IGNoID4gbWF4ID8gY2ggOiBtYXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwKQorICAgICAgICAgICAgICAgIG9zaXplICs9IDQ7IC8qIFx4SEggKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSA2OyAvKiBcdUhISEggKi8KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSAxMDsgLyogXHVISEhISEhISCAqLworICAgICAgICB9CisgICAgfQorCisgICAgcXVvdGUgPSAnXCcnOworICAgIGlmIChzcXVvdGUpIHsKKyAgICAgICAgaWYgKGRxdW90ZSkKKyAgICAgICAgICAgIC8qIEJvdGggc3F1b3RlIGFuZCBkcXVvdGUgcHJlc2VudC4gVXNlIHNxdW90ZSwKKyAgICAgICAgICAgICAgIGFuZCBlc2NhcGUgdGhlbSAqLworICAgICAgICAgICAgb3NpemUgKz0gc3F1b3RlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBxdW90ZSA9ICciJzsKKyAgICB9CisKKyAgICByZXByID0gUHlVbmljb2RlX05ldyhvc2l6ZSwgbWF4KTsKKyAgICBpZiAocmVwciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBva2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcHIpOworICAgIG9kYXRhID0gUHlVbmljb2RlX0RBVEEocmVwcik7CisKKyAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCAwLCBxdW90ZSk7CisgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgb3NpemUtMSwgcXVvdGUpOworCisgICAgZm9yIChpID0gMCwgbyA9IDE7IGkgPCBpc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChpa2luZCwgaWRhdGEsIGkpOwogCiAgICAgICAgIC8qIEVzY2FwZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzICovCi0gICAgICAgIGlmICgoY2ggPT0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcilbMF0pIHx8IChjaCA9PSAnXFwnKSkgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgIGlmICgoY2ggPT0gcXVvdGUpIHx8IChjaCA9PSAnXFwnKSkgeworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwogICAgICAgICBpZiAoY2ggPT0gJ1x0JykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3QnOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3QnKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnbic7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnbicpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdyJzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdyJyk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSB0byAnXHhoaCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPT0gMHg3RikgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAneCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl0pOwogICAgICAgICB9CiAKICAgICAgICAgLyogQ29weSBBU0NJSSBjaGFyYWN0ZXJzIGFzLWlzICovCiAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHg3RikgewotICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBjaCk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBOb24tQVNDSUkgY2hhcmFjdGVycyAqLwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X1VDUzQgdWNzID0gY2g7Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMiA9IDA7Ci0gICAgICAgICAgICAvKiBHZXQgY29kZSBwb2ludCBmcm9tIHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBjaDIgPSAqczsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwICYmIGNoMiA+PSAweERDMDAKLSAgICAgICAgICAgICAgICAgICAgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgICAgICB1Y3MgPSAoKChjaCAmIDB4MDNGRikgPDwgMTApIHwgKGNoMiAmIDB4MDNGRikpCi0gICAgICAgICAgICAgICAgICAgICAgICArIDB4MDAwMTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgLyogTWFwIFVuaWNvZGUgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAoY2F0ZWdvcmllcyBaKiBhbmQgQyogZXhjZXB0IEFTQ0lJIHNwYWNlKQogICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRSh1Y3MpKSB7CisgICAgICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNQUklOVEFCTEUoY2gpKSB7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKICAgICAgICAgICAgICAgICAvKiBNYXAgOC1iaXQgY2hhcmFjdGVycyB0byAnXHhoaCcgKi8KLSAgICAgICAgICAgICAgICBpZiAodWNzIDw9IDB4ZmYpIHsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgICAgICAgICBlbHNlIGlmICh1Y3MgPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gMHhmZikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd4Jyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAndScpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbY2ggJiAweEZdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDEyKSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA4KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbdWNzICYgMHgwMDBGXTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnVScpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4Rl0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIENvcHkgY2hhcmFjdGVycyBhcy1pcyAqLwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGNoOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAodWNzID49IDB4MTAwMDApCi0gICAgICAgICAgICAgICAgICAgICpwKysgPSBjaDI7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIGNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAvKiBBZGQgcXVvdGUgKi8KLSAgICAqcCsrID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcilbMF07Ci0KLSAgICAqcCA9ICdcMCc7Ci0gICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVwciwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpKTsKKyAgICAvKiBDbG9zaW5nIHF1b3RlIGFscmVhZHkgYWRkZWQgYXQgdGhlIGJlZ2lubmluZyAqLworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVwciwgMSkpOwogICAgIHJldHVybiByZXByOwogfQogCkBAIC04NTg3LDkgKzEyMDg0LDkgQEAKIFJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yZmluZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yZmluZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwpAQCAtODU5OCwxNCArMTIwOTUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YnN0cmluZyksIFB5VW5pY29kZV9HRVRfU0laRShzdWJzdHJpbmcpLAotICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKC0xLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKIH0KIApAQCAtODYxNSw5ICsxMjExNiw5IEBACiBMaWtlIFMucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yaW5kZXgoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcmluZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC04NjI2LDE4ICsxMjEyNywyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHJlc3VsdCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzdWJzdHJpbmcgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKIH0KIApAQCAtODY0OCwyNSArMTIxNTQsMjUgQEAKIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfcmp1c3QoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcmp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgUHlfVU5JQ09ERSBmaWxsY2hhciA9ICcgJzsKKyAgICBQeV9VQ1M0IGZpbGxjaGFyID0gJyAnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufE8mOnJqdXN0IiwgJndpZHRoLCBjb252ZXJ0X3VjLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGggJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgcGFkKHNlbGYsIHdpZHRoIC0gc2VsZi0+bGVuZ3RoLCAwLCBmaWxsY2hhcik7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID49IHdpZHRoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgcmV0dXJuIHBhZChzZWxmLCB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCAwLCBmaWxsY2hhcik7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfU3BsaXQoUHlPYmplY3QgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIApAQCAtODY4MSw3ICsxMjE4Nyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHQgPSBzcGxpdCgoUHlVbmljb2RlT2JqZWN0ICopcywgKFB5VW5pY29kZU9iamVjdCAqKXNlcCwgbWF4c3BsaXQpOworICAgIHJlc3VsdCA9IHNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwogCiAgICAgUHlfREVDUkVGKHMpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKQEAgLTg2ODksNyArMTIxOTUsNyBAQAogfQogCiBQeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotICAgICAgICAgICAgICJTLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKKyAgICAgICAgICAgICAiUy5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAogXG5cCiBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiBTLCB1c2luZyBzZXAgYXMgdGhlXG5cCiBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXRcblwKQEAgLTg2OTgsMjAgKzEyMjA0LDIyIEBACiByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9zcGxpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhjb3VudCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246c3BsaXQiLCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246c3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1YnN0cmluZywgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCi0gICAgICAgIHJldHVybiBzcGxpdChzZWxmLCAoUHlVbmljb2RlT2JqZWN0ICopc3Vic3RyaW5nLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXQoKFB5T2JqZWN0ICopc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTg3MjAsNiArMTIyMjgsOSBAQAogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwogICAgIGlmICghc3RyX29iaikKQEAgLTg3MjksMTYgKzEyMjQwLDYyIEBACiAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBvdXQgPSBzdHJpbmdsaWJfcGFydGl0aW9uKAotICAgICAgICBzdHJfb2JqLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJfb2JqKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN0cl9vYmopLAotICAgICAgICBzZXBfb2JqLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXBfb2JqKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlcF9vYmopCi0gICAgICAgICk7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOworICAgIGtpbmQgPSBQeV9NQVgoa2luZDEsIGtpbmQyKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHJfb2JqLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc2VwX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcF9vYmopOworCisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzdHJfb2JqKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQgPSB1Y3MxbGliX3BhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzMmxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczRsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIG91dCA9IDA7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHNlcF9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7CisgIG9uRXJyb3I6CisgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCAmJiBidWYxKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIApAQCAtODc0OCw2ICsxMjMwNSw5IEBACiAgICAgUHlPYmplY3QqIHN0cl9vYmo7CiAgICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CiAgICAgaWYgKCFzdHJfb2JqKQpAQCAtODc1OCwxNSArMTIzMTgsNTYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgb3V0ID0gc3RyaW5nbGliX3JwYXJ0aXRpb24oCi0gICAgICAgIHN0cl9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cl9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaiksCi0gICAgICAgIHNlcF9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHNlcF9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwX29iaikKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9pbik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKKyAgICBraW5kID0gUHlfTUFYKGtpbmQxLCBraW5kMik7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9pbik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHJfaW4sIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOworICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cl9pbikpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzZXBfb2JqKSkKKyAgICAgICAgICAgIG91dCA9IGFzY2lpbGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzMmxpYl9ycGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3M0bGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgb3V0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc2VwX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHBhcnRpdGlvbl9fZG9jX18sCkBAIC04Nzc3LDkgKzEyMzc4LDkgQEAKIGZvdW5kLCByZXR1cm4gUyBhbmQgdHdvIGVtcHR5IHN0cmluZ3MuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcGFydGl0aW9uKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcGFyYXRvcikKK3VuaWNvZGVfcGFydGl0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfUGFydGl0aW9uKChQeU9iamVjdCAqKXNlbGYsIHNlcGFyYXRvcik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9QYXJ0aXRpb24oc2VsZiwgc2VwYXJhdG9yKTsKIH0KIAogUHlEb2NfU1RSVkFSKHJwYXJ0aXRpb25fX2RvY19fLApAQCAtODc5MCwxNCArMTIzOTEsMTMgQEAKIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybiB0d28gZW1wdHkgc3RyaW5ncyBhbmQgUy4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9ycGFydGl0aW9uKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcGFyYXRvcikKK3VuaWNvZGVfcnBhcnRpdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcGFyYXRvcikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1JQYXJ0aXRpb24oKFB5T2JqZWN0ICopc2VsZiwgc2VwYXJhdG9yKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1JQYXJ0aXRpb24oc2VsZiwgc2VwYXJhdG9yKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9SU3BsaXQoUHlPYmplY3QgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9SU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIApAQCAtODgxMiw3ICsxMjQxMiw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHQgPSByc3BsaXQoKFB5VW5pY29kZU9iamVjdCAqKXMsIChQeVVuaWNvZGVPYmplY3QgKilzZXAsIG1heHNwbGl0KTsKKyAgICByZXN1bHQgPSByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiAKICAgICBQeV9ERUNSRUYocyk7CiAgICAgUHlfWERFQ1JFRihzZXApOwpAQCAtODgyMCw3ICsxMjQyMCw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotICAgICAgICAgICAgICJTLnJzcGxpdChbc2VwWywgbWF4c3BsaXRdXSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCisgICAgICAgICAgICAgIlMucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIFMsIHVzaW5nIHNlcCBhcyB0aGVcblwKIGRlbGltaXRlciBzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBhbmRcblwKQEAgLTg4MjksMjAgKzEyNDI5LDIyIEBACiBpcyBhIHNlcGFyYXRvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9yc3BsaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcnNwbGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpyc3BsaXQiLCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246cnNwbGl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCAoUHlVbmljb2RlT2JqZWN0ICopc3Vic3RyaW5nLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdCgoUHlPYmplY3QgKilzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKQEAgLTg4NTMsMjYgKzEyNDU1LDIyIEBACiBpcyBnaXZlbiBhbmQgdHJ1ZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zcGxpdGxpbmVzKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtlZXBlbmRzIiwgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6c3BsaXRsaW5lcyIsICZrZWVwZW5kcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0bGluZXMoKFB5T2JqZWN0ICopc2VsZiwga2VlcGVuZHMpOworICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXRsaW5lcyhzZWxmLCBrZWVwZW5kcyk7CiB9CiAKIHN0YXRpYwogUHlPYmplY3QgKnVuaWNvZGVfc3RyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBzZWxmOwotICAgIH0gZWxzZQotICAgICAgICAvKiBTdWJ0eXBlIC0tIHJldHVybiBnZW51aW5lIHVuaWNvZGUgc3RyaW5nIHdpdGggdGhlIHNhbWUgdmFsdWUuICovCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOwogfQogCiBQeURvY19TVFJWQVIoc3dhcGNhc2VfX2RvY19fLApAQCAtODg4Miw5ICsxMjQ4MCwxMSBAQAogYW5kIHZpY2UgdmVyc2EuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfc3dhcGNhc2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9zd2FwY2FzZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4c3dhcGNhc2UpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19zd2FwY2FzZSk7CiB9CiAKIFB5RG9jX1NUUlZBUihtYWtldHJhbnNfX2RvY19fLApAQCAtODkwMCw3ICsxMjUwMCw3IEBACiBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvIE5vbmUgaW4gdGhlIHJlc3VsdC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9tYWtldHJhbnMoUHlVbmljb2RlT2JqZWN0ICpudWxsLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfbWFrZXRyYW5zKFB5T2JqZWN0ICpudWxsLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqeCwgKnkgPSBOVUxMLCAqeiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5ldyA9IE5VTEwsICprZXksICp2YWx1ZTsKQEAgLTg5MTMsMjQgKzEyNTEzLDMwIEBACiAgICAgaWYgKCFuZXcpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh5ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IHhfa2luZCwgeV9raW5kLCB6X2tpbmQ7CisgICAgICAgIHZvaWQgKnhfZGF0YSwgKnlfZGF0YSwgKnpfZGF0YTsKKwogICAgICAgICAvKiB4IG11c3QgYmUgYSBzdHJpbmcgdG9vLCBvZiBlcXVhbCBsZW5ndGggKi8KLSAgICAgICAgUHlfc3NpemVfdCB5bGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHkpOwogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh4KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImZpcnN0IG1ha2V0cmFucyBhcmd1bWVudCBtdXN0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgYSBzdHJpbmcgaWYgdGhlcmUgaXMgYSBzZWNvbmQgYXJndW1lbnQiKTsKICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoeCkgIT0geWxlbikgeworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoeCkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoeSkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGhlIGZpcnN0IHR3byBtYWtldHJhbnMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudHMgbXVzdCBoYXZlIGVxdWFsIGxlbmd0aCIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KICAgICAgICAgLyogY3JlYXRlIGVudHJpZXMgZm9yIHRyYW5zbGF0aW5nIGNoYXJzIGluIHggdG8gdGhvc2UgaW4geSAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KVtpXSk7CisgICAgICAgIHhfa2luZCA9IFB5VW5pY29kZV9LSU5EKHgpOworICAgICAgICB5X2tpbmQgPSBQeVVuaWNvZGVfS0lORCh5KTsKKyAgICAgICAgeF9kYXRhID0gUHlVbmljb2RlX0RBVEEoeCk7CisgICAgICAgIHlfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHkpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoeCk7IGkrKykgeworICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKHhfa2luZCwgeF9kYXRhLCBpKSk7CiAgICAgICAgICAgICBpZiAoIWtleSkKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKHkpW2ldKTsKKyAgICAgICAgICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKHlfa2luZCwgeV9kYXRhLCBpKSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC04OTQzLDggKzEyNTQ5LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgLyogY3JlYXRlIGVudHJpZXMgZm9yIGRlbGV0aW5nIGNoYXJzIGluIHogKi8KICAgICAgICAgaWYgKHogIT0gTlVMTCkgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VW5pY29kZV9HRVRfU0laRSh6KTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKHopW2ldKTsKKyAgICAgICAgICAgIHpfa2luZCA9IFB5VW5pY29kZV9LSU5EKHopOworICAgICAgICAgICAgel9kYXRhID0gUHlVbmljb2RlX0RBVEEoeik7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoeik7IGkrKykgeworICAgICAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfUkVBRCh6X2tpbmQsIHpfZGF0YSwgaSkpOwogICAgICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShuZXcsIGtleSwgUHlfTm9uZSk7CkBAIC04OTU0LDYgKzEyNTYyLDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOworCiAgICAgICAgIC8qIHggbXVzdCBiZSBhIGRpY3QgKi8KICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdCh4KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImlmIHlvdSBnaXZlIG9ubHkgb25lIGFyZ3VtZW50ICIKQEAgLTg5NjUsMTIgKzEyNTc2LDE0IEBACiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKICAgICAgICAgICAgICAgICAvKiBjb252ZXJ0IHN0cmluZyBrZXlzIHRvIGludGVnZXIga2V5cyAqLwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdrZXk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShrZXkpICE9IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoa2V5KSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic3RyaW5nIGtleXMgaW4gdHJhbnNsYXRlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YWJsZSBtdXN0IGJlIG9mIGxlbmd0aCAxIik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuZXdrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoa2V5KVswXSk7CisgICAgICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGtleSk7CisgICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGtleSk7CisgICAgICAgICAgICAgICAgbmV3a2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKTsKICAgICAgICAgICAgICAgICBpZiAoIW5ld2tleSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0obmV3LCBuZXdrZXksIHZhbHVlKTsKQEAgLTkwMDQsOSArMTI2MTcsOSBAQAogYXJlIGRlbGV0ZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfdHJhbnNsYXRlKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlKQordW5pY29kZV90cmFuc2xhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIHRhYmxlLCAiaWdub3JlIik7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzZWxmLCB0YWJsZSwgImlnbm9yZSIpOwogfQogCiBQeURvY19TVFJWQVIodXBwZXJfX2RvY19fLApAQCAtOTAxNSw5ICsxMjYyOCwxMyBAQAogUmV0dXJuIGEgY29weSBvZiBTIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfdXBwZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV91cHBlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4dXBwZXIpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgIHJldHVybiBhc2NpaV91cHBlcl9vcl9sb3dlcihzZWxmLCAwKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fdXBwZXIpOwogfQogCiBQeURvY19TVFJWQVIoemZpbGxfX2RvY19fLApAQCAtOTAyNyw1NSArMTI2NDQsNTAgQEAKIG9mIHRoZSBzcGVjaWZpZWQgd2lkdGguIFRoZSBzdHJpbmcgUyBpcyBuZXZlciB0cnVuY2F0ZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3pmaWxsKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3pmaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IGZpbGw7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OwotCisgICAgUHlPYmplY3QgKnU7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgY2hyOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnpmaWxsIiwgJndpZHRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+bGVuZ3RoID49IHdpZHRoKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikKLSAgICAgICAgICAgICAgICApOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGwgPSB3aWR0aCAtIHNlbGYtPmxlbmd0aDsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICBmaWxsID0gd2lkdGggLSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIAogICAgIHUgPSBwYWQoc2VsZiwgZmlsbCwgMCwgJzAnKTsKIAogICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHUtPnN0cltmaWxsXSA9PSAnKycgfHwgdS0+c3RyW2ZpbGxdID09ICctJykgeworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgZmlsbCk7CisKKyAgICBpZiAoY2hyID09ICcrJyB8fCBjaHIgPT0gJy0nKSB7CiAgICAgICAgIC8qIG1vdmUgc2lnbiB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nICovCi0gICAgICAgIHUtPnN0clswXSA9IHUtPnN0cltmaWxsXTsKLSAgICAgICAgdS0+c3RyW2ZpbGxdID0gJzAnOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgMCwgY2hyKTsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGZpbGwsICcwJyk7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CisgICAgcmV0dXJuIHU7CiB9CiAKICNpZiAwCi1zdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2ZyZWVsaXN0c2l6ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhudW1mcmVlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfX2RlY2ltYWwyYXNjaWkoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHNlbGYpOwogfQogI2VuZGlmCiAKQEAgLTkwODgsMTEgKzEyNzAwLDExIEBACiBwcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdHJpbmdzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfc3RhcnRzd2l0aChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCit1bmljb2RlX3N0YXJ0c3dpdGgoUHlPYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgaW50IHJlc3VsdDsKQEAgLTkxMDIsOCArMTI3MTQsNyBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdCgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOworICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKICAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKQEAgLTkxMTUsNyArMTI3MjYsNyBAQAogICAgICAgICAvKiBub3RoaW5nIG1hdGNoZWQgKi8KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKKyAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKQEAgLTkxMzcsMTEgKzEyNzQ4LDExIEBACiBzdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdHJpbmdzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZW5kc3dpdGgoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAordW5pY29kZV9lbmRzd2l0aChQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgaW50IHJlc3VsdDsKQEAgLTkxNTEsNyArMTI3NjIsNyBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdCgKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KAogICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7CiAgICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MTYzLDcgKzEyNzc0LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOworICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKQEAgLTkxNzUsNyArMTI3ODYsMTYwIEBACiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwogfQogCi0jaW5jbHVkZSAic3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaCIKK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIHdyaXRlci0+c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3QgbWluX2xlbmd0aCkKK3sKKyAgICBtZW1zZXQod3JpdGVyLCAwLCBzaXplb2YoKndyaXRlcikpOworI2lmZGVmIFB5X0RFQlVHCisgICAgd3JpdGVyLT5raW5kID0gNTsgICAgLyogaW52YWxpZCBraW5kICovCisjZW5kaWYKKyAgICB3cml0ZXItPm1pbl9sZW5ndGggPSBQeV9NQVgobWluX2xlbmd0aCwgMTAwKTsKKyAgICB3cml0ZXItPm92ZXJhbGxvY2F0ZSA9IChtaW5fbGVuZ3RoID4gMCk7Cit9CisKK2ludAorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IG5ld2xlbjsKKyAgICBQeU9iamVjdCAqbmV3YnVmZmVyOworCisgICAgYXNzZXJ0KGxlbmd0aCA+IDApOworCisgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC0gd3JpdGVyLT5wb3MpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBuZXdsZW4gPSB3cml0ZXItPnBvcyArIGxlbmd0aDsKKworICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgLyogb3ZlcmFsbG9jYXRlIDI1JSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJlc2l6ZSAqLworICAgICAgICAgICAgaWYgKG5ld2xlbiA8PSAoUFlfU1NJWkVfVF9NQVggLSBuZXdsZW4gLyA0KSkKKyAgICAgICAgICAgICAgICBuZXdsZW4gKz0gbmV3bGVuIC8gNDsKKyAgICAgICAgICAgIGlmIChuZXdsZW4gPCB3cml0ZXItPm1pbl9sZW5ndGgpCisgICAgICAgICAgICAgICAgbmV3bGVuID0gd3JpdGVyLT5taW5fbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gUHlVbmljb2RlX05ldyhuZXdsZW4sIG1heGNoYXIpOworICAgICAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG5ld2xlbiA+IHdyaXRlci0+c2l6ZSkgeworICAgICAgICBpZiAod3JpdGVyLT5vdmVyYWxsb2NhdGUpIHsKKyAgICAgICAgICAgIC8qIG92ZXJhbGxvY2F0ZSAyNSUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZXNpemUgKi8KKyAgICAgICAgICAgIGlmIChuZXdsZW4gPD0gKFBZX1NTSVpFX1RfTUFYIC0gbmV3bGVuIC8gNCkpCisgICAgICAgICAgICAgICAgbmV3bGVuICs9IG5ld2xlbiAvIDQ7CisgICAgICAgICAgICBpZiAobmV3bGVuIDwgd3JpdGVyLT5taW5fbGVuZ3RoKQorICAgICAgICAgICAgICAgIG5ld2xlbiA9IHdyaXRlci0+bWluX2xlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IHdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgICAgIC8qIHJlc2l6ZSArIHdpZGVuICovCisgICAgICAgICAgICBuZXdidWZmZXIgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbiwgbWF4Y2hhcik7CisgICAgICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMobmV3YnVmZmVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIDAsIHdyaXRlci0+cG9zKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXItPnJlYWRvbmx5ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG5ld2J1ZmZlciA9IHJlc2l6ZV9jb21wYWN0KHdyaXRlci0+YnVmZmVyLCBuZXdsZW4pOworICAgICAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKKyAgICB9CisgICAgZWxzZSBpZiAobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhcikgeworICAgICAgICBhc3NlcnQoIXdyaXRlci0+cmVhZG9ubHkpOworICAgICAgICBuZXdidWZmZXIgPSBQeVVuaWNvZGVfTmV3KHdyaXRlci0+c2l6ZSwgbWF4Y2hhcik7CisgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMobmV3YnVmZmVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgMCwgd3JpdGVyLT5wb3MpOworICAgICAgICBQeV9ERUNSRUYod3JpdGVyLT5idWZmZXIpOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICpzdHIpCit7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKTsKKyAgICBpZiAobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhciB8fCBsZW4gPiB3cml0ZXItPnNpemUgLSB3cml0ZXItPnBvcykgeworICAgICAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCAmJiAhd3JpdGVyLT5vdmVyYWxsb2NhdGUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzdHIpOworICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBzdHI7CisgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgICAgICAgICAgd3JpdGVyLT5yZWFkb25seSA9IDE7CisgICAgICAgICAgICB3cml0ZXItPnNpemUgPSAwOworICAgICAgICAgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKHdyaXRlciwgbGVuLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgMCwgbGVuKTsKKyAgICB3cml0ZXItPnBvcyArPSBsZW47CisgICAgcmV0dXJuIDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVXcml0ZXJfRmluaXNoKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBpZiAod3JpdGVyLT5wb3MgPT0gMCkgeworICAgICAgICBQeV9YREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgaWYgKHdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSA9PSB3cml0ZXItPnBvcyk7CisgICAgICAgIHJldHVybiB3cml0ZXItPmJ1ZmZlcjsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSAhPSB3cml0ZXItPnBvcykgeworICAgICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOworICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MpOworICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXItPmJ1ZmZlciwgMSkpOworICAgIHJldHVybiB3cml0ZXItPmJ1ZmZlcjsKK30KKwordm9pZAorX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7Cit9CisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaCIKIAogUHlEb2NfU1RSVkFSKGZvcm1hdF9fZG9jX18sCiAgICAgICAgICAgICAgIlMuZm9ybWF0KCphcmdzLCAqKmt3YXJncykgLT4gc3RyXG5cCkBAIC05MTkzLDEzICsxMjk1NywyMyBAQAogdW5pY29kZV9fZm9ybWF0X18oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZm9ybWF0X3NwZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKCZ3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBmb3JtYXRfc3BlYywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSk7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiB9CiAKIFB5RG9jX1NUUlZBUihwX2Zvcm1hdF9fZG9jX18sCkBAIC05MjA4LDI4ICsxMjk4Miw1NSBAQAogUmV0dXJuIGEgZm9ybWF0dGVkIHZlcnNpb24gb2YgUyBhcyBkZXNjcmliZWQgYnkgZm9ybWF0X3NwZWMuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX19zaXplb2ZfXyhQeVVuaWNvZGVPYmplY3QgKnYpCit1bmljb2RlX19zaXplb2ZfXyhQeU9iamVjdCAqdikKIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemVvZihQeVVuaWNvZGVPYmplY3QpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeV9VTklDT0RFKSAqICh2LT5sZW5ndGggKyAxKSk7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgLyogSWYgaXQncyBhIGNvbXBhY3Qgb2JqZWN0LCBhY2NvdW50IGZvciBiYXNlIHN0cnVjdHVyZSArCisgICAgICAgY2hhcmFjdGVyIGRhdGEuICovCisgICAgaWYgKFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHYpKQorICAgICAgICBzaXplID0gc2l6ZW9mKFB5QVNDSUlPYmplY3QpICsgUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyAxOworICAgIGVsc2UgaWYgKFB5VW5pY29kZV9JU19DT01QQUNUKHYpKQorICAgICAgICBzaXplID0gc2l6ZW9mKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QpICsKKyAgICAgICAgICAgIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIDEpICogUHlVbmljb2RlX0tJTkQodik7CisgICAgZWxzZSB7CisgICAgICAgIC8qIElmIGl0IGlzIGEgdHdvLWJsb2NrIG9iamVjdCwgYWNjb3VudCBmb3IgYmFzZSBvYmplY3QsIGFuZAorICAgICAgICAgICBmb3IgY2hhcmFjdGVyIGJsb2NrIGlmIHByZXNlbnQuICovCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlVbmljb2RlT2JqZWN0KTsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVfREFUQV9BTlkodikpCisgICAgICAgICAgICBzaXplICs9IChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIDEpICoKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICB9CisgICAgLyogSWYgdGhlIHdzdHIgcG9pbnRlciBpcyBwcmVzZW50LCBhY2NvdW50IGZvciBpdCB1bmxlc3MgaXQgaXMgc2hhcmVkCisgICAgICAgd2l0aCB0aGUgZGF0YSBwb2ludGVyLiBDaGVjayBpZiB0aGUgZGF0YSBpcyBub3Qgc2hhcmVkLiAqLworICAgIGlmIChfUHlVbmljb2RlX0hBU19XU1RSX01FTU9SWSh2KSkKKyAgICAgICAgc2l6ZSArPSAoUHlVbmljb2RlX1dTVFJfTEVOR1RIKHYpICsgMSkgKiBzaXplb2Yod2NoYXJfdCk7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKHYpKQorICAgICAgICBzaXplICs9IFB5VW5pY29kZV9VVEY4X0xFTkdUSCh2KSArIDE7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOwogfQogCiBQeURvY19TVFJWQVIoc2l6ZW9mX19kb2NfXywKICAgICAgICAgICAgICAiUy5fX3NpemVvZl9fKCkgLT4gc2l6ZSBvZiBTIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZ2V0bmV3YXJncyhQeVVuaWNvZGVPYmplY3QgKnYpCit1bmljb2RlX2dldG5ld2FyZ3MoUHlPYmplY3QgKnYpCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1IykiLCB2LT5zdHIsIHYtPmxlbmd0aCk7CisgICAgUHlPYmplY3QgKmNvcHkgPSBfUHlVbmljb2RlX0NvcHkodik7CisgICAgaWYgKCFjb3B5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE4pIiwgY29weSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiB1bmljb2RlX21ldGhvZHNbXSA9IHsKICAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9lbmNvZGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGVuY29kZV9fZG9jX199LAogICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIHJlcGxhY2VfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0LCBNRVRIX1ZBUkFSR1MsIHNwbGl0X19kb2NfX30sCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnNwbGl0LCBNRVRIX1ZBUkFSR1MsIHJzcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnNwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCByc3BsaXRfX2RvY19ffSwKICAgICB7ImpvaW4iLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfam9pbiwgTUVUSF9PLCBqb2luX19kb2NfX30sCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLCBjYXBpdGFsaXplX19kb2NfX30sCisgICAgeyJjYXNlZm9sZCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jYXNlZm9sZCwgTUVUSF9OT0FSR1MsIGNhc2Vmb2xkX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV90aXRsZSwgTUVUSF9OT0FSR1MsIHRpdGxlX19kb2NfX30sCiAgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAogICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKQEAgLTkyNDUsNyArMTMwNDYsNyBAQAogICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKICAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yc3RyaXAsIE1FVEhfVkFSQVJHUywgcnN0cmlwX19kb2NfX30sCiAgICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JwYXJ0aXRpb24sIE1FVEhfTywgcnBhcnRpdGlvbl9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MsIHNwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRsaW5lc19fZG9jX199LAogICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKICAgICB7InN3YXBjYXNlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3N3YXBjYXNlLCBNRVRIX05PQVJHUywgc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV90cmFuc2xhdGUsIE1FVEhfTywgdHJhbnNsYXRlX19kb2NfX30sCkBAIC05MjcxLDEyICsxMzA3Miw3IEBACiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfU1RBVElDLCBtYWtldHJhbnNfX2RvY19ffSwKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfX3NpemVvZl9fLCBNRVRIX05PQVJHUywgc2l6ZW9mX19kb2NfX30sCiAjaWYgMAotICAgIHsiY2Fwd29yZHMiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2Fwd29yZHMsIE1FVEhfTk9BUkdTLCBjYXB3b3Jkc19fZG9jX199LAotI2VuZGlmCi0KLSNpZiAwCiAgICAgLyogVGhlc2UgbWV0aG9kcyBhcmUganVzdCB1c2VkIGZvciBkZWJ1Z2dpbmcgdGhlIGltcGxlbWVudGF0aW9uLiAqLwotICAgIHsiZnJlZWxpc3RzaXplIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2ZyZWVsaXN0c2l6ZSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX2RlY2ltYWwyYXNjaWkiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfX2RlY2ltYWwyYXNjaWksIE1FVEhfTk9BUkdTfSwKICNlbmRpZgogCkBAIC05Mjg3LDEwICsxMzA4Myw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQogewotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zvcm1hdCh2LCB3KTsKIH0KIApAQCAtOTMxMyw1MCArMTMxMDcsNjkgQEAKIH07CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfc3Vic2NyaXB0KFB5VW5pY29kZU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGl0ZW0pCit1bmljb2RlX3N1YnNjcmlwdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGl0ZW0pCiB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfSW5kZXhFcnJvcik7CiAgICAgICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGkgPCAwKQotICAgICAgICAgICAgaSArPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CisgICAgICAgICAgICBpICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgICAgICByZXR1cm4gdW5pY29kZV9nZXRpdGVtKHNlbGYsIGkpOwogICAgIH0gZWxzZSBpZiAoUHlTbGljZV9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aCwgY3VyLCBpOwotICAgICAgICBQeV9VTklDT0RFKiBzb3VyY2VfYnVmOwotICAgICAgICBQeV9VTklDT0RFKiByZXN1bHRfYnVmOwotICAgICAgICBQeU9iamVjdCogcmVzdWx0OworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICB2b2lkICpzcmNfZGF0YSwgKmRlc3RfZGF0YTsKKyAgICAgICAgaW50IHNyY19raW5kLCBkZXN0X2tpbmQ7CisgICAgICAgIFB5X1VDUzQgY2gsIG1heF9jaGFyLCBraW5kX2xpbWl0OwogCi0gICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCisgICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2xpY2VsZW5ndGggPD0gMCkgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PSAwICYmIHN0ZXAgPT0gMSAmJiBzbGljZWxlbmd0aCA9PSBzZWxmLT5sZW5ndGggJiYKLSAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PSAwICYmIHN0ZXAgPT0gMSAmJgorICAgICAgICAgICAgICAgICAgIHNsaWNlbGVuZ3RoID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKSB7CisgICAgICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzZWxmLT5zdHIgKyBzdGFydCwgc2xpY2VsZW5ndGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc291cmNlX2J1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKChQeU9iamVjdCopc2VsZik7Ci0gICAgICAgICAgICByZXN1bHRfYnVmID0gKFB5X1VOSUNPREUgKilQeU9iamVjdF9NQUxMT0Moc2xpY2VsZW5ndGgqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpKTsKLQotICAgICAgICAgICAgaWYgKHJlc3VsdF9idWYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgICAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGkgPCBzbGljZWxlbmd0aDsgY3VyICs9IHN0ZXAsIGkrKykgewotICAgICAgICAgICAgICAgIHJlc3VsdF9idWZbaV0gPSBzb3VyY2VfYnVmW2N1cl07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShyZXN1bHRfYnVmLCBzbGljZWxlbmd0aCk7Ci0gICAgICAgICAgICBQeU9iamVjdF9GUkVFKHJlc3VsdF9idWYpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgc3RhcnQgKyBzbGljZWxlbmd0aCk7CiAgICAgICAgIH0KKyAgICAgICAgLyogR2VuZXJhbCBjYXNlICovCisgICAgICAgIHNyY19raW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgICAgIHNyY19kYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKSB7CisgICAgICAgICAgICBraW5kX2xpbWl0ID0ga2luZF9tYXhjaGFyX2xpbWl0KHNyY19raW5kKTsKKyAgICAgICAgICAgIG1heF9jaGFyID0gMDsKKyAgICAgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7IGN1ciArPSBzdGVwLCBpKyspIHsKKyAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKHNyY19raW5kLCBzcmNfZGF0YSwgY3VyKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiBtYXhfY2hhcikgeworICAgICAgICAgICAgICAgICAgICBtYXhfY2hhciA9IGNoOworICAgICAgICAgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0ga2luZF9saW1pdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBtYXhfY2hhciA9IDEyNzsKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhzbGljZWxlbmd0aCwgbWF4X2NoYXIpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZGVzdF9raW5kID0gUHlVbmljb2RlX0tJTkQocmVzdWx0KTsKKyAgICAgICAgZGVzdF9kYXRhID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKKworICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOyBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoc3JjX2tpbmQsIHNyY19kYXRhLCBjdXIpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGRlc3Rfa2luZCwgZGVzdF9kYXRhLCBpLCBjaCk7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXN1bHQsIDEpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAic3RyaW5nIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkzOTAsMTYgKzEzMjAzLDE3IEBACiAKIC8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlVbmljb2RlIG9iamVjdCwgb3IgTlVMTCBvbiBmYWlsdXJlLiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQorc3RhdGljIGludAorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlLAorICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIGNoYXIgKnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwogICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChwcmVjIDwgMCkKICAgICAgICAgcHJlYyA9IDY7CkBAIC05NDA3LDU0ICsxMzIyMSwxNzAgQEAKICAgICBwID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsIHR5cGUsIHByZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxhZ3MgJiBGX0FMVCkgPyBQeV9EVFNGX0FMVCA6IDAsIE5VTEwpOwogICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShwLCBzdHJsZW4ocCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgbGVuID0gc3RybGVuKHApOworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIGxlbiwgMTI3KSA9PSAtMSkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB1bmljb2RlX3dyaXRlX2NzdHIod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLCBwLCBsZW4pOworICAgICAgICB3cml0ZXItPnBvcyArPSBsZW47CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgKnBfb3V0cHV0ID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkocCwgbGVuKTsKICAgICBQeU1lbV9GcmVlKHApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIDA7CiB9CiAKKy8qIGZvcm1hdGxvbmcoKSBlbXVsYXRlcyB0aGUgZm9ybWF0IGNvZGVzIGQsIHUsIG8sIHggYW5kIFgsIGFuZAorICogdGhlIEZfQUxUIGZsYWcsIGZvciBQeXRob24ncyBsb25nICh1bmJvdW5kZWQpIGludHMuICBJdCdzIG5vdCB1c2VkIGZvcgorICogUHl0aG9uJ3MgcmVndWxhciBpbnRzLgorICogUmV0dXJuIHZhbHVlOiAgYSBuZXcgUHlVbmljb2RlT2JqZWN0Kiwgb3IgTlVMTCBpZiBlcnJvci4KKyAqICAgICBUaGUgb3V0cHV0IHN0cmluZyBpcyBvZiB0aGUgZm9ybQorICogICAgICAgICAiLSI/ICgiMHgiIHwgIjBYIik/IGRpZ2l0KworICogICAgICIweCIvIjBYIiBhcmUgcHJlc2VudCBvbmx5IGZvciB4IGFuZCBYIGNvbnZlcnNpb25zLCB3aXRoIEZfQUxUCisgKiAgICAgICAgIHNldCBpbiBmbGFncy4gIFRoZSBjYXNlIG9mIGhleCBkaWdpdHMgd2lsbCBiZSBjb3JyZWN0LAorICogICAgIFRoZXJlIHdpbGwgYmUgYXQgbGVhc3QgcHJlYyBkaWdpdHMsIHplcm8tZmlsbGVkIG9uIHRoZSBsZWZ0IGlmCisgKiAgICAgICAgIG5lY2Vzc2FyeSB0byBnZXQgdGhhdCBtYW55LgorICogdmFsICAgICAgICAgIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQKKyAqIGZsYWdzICAgICAgICBiaXRtYXNrIG9mIGZvcm1hdCBmbGFnczsgb25seSBGX0FMVCBpcyBsb29rZWQgYXQKKyAqIHByZWMgICAgICAgICBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHM7IDAtZmlsbCBvbiBsZWZ0IGlmIG5lZWRlZAorICogdHlwZSAgICAgICAgIGEgY2hhcmFjdGVyIGluIFtkdW94WF07IHUgYWN0cyB0aGUgc2FtZSBhcyBkCisgKgorICogQ0FVVElPTjogIG8sIHggYW5kIFggY29udmVyc2lvbnMgb24gcmVndWxhciBpbnRzIGNhbiBuZXZlcgorICogcHJvZHVjZSBhICctJyBzaWduLCBidXQgY2FuIGZvciBQeXRob24ncyB1bmJvdW5kZWQgaW50cy4KKyAqLwogc3RhdGljIFB5T2JqZWN0KgogZm9ybWF0bG9uZyhQeU9iamVjdCAqdmFsLCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKIHsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBjaGFyICpidWY7Ci0gICAgaW50IGxlbjsKLSAgICBQeU9iamVjdCAqc3RyOyAvKiB0ZW1wb3Jhcnkgc3RyaW5nIG9iamVjdC4gKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgc2lnbjsgICAgICAgICAgIC8qIDEgaWYgJy0nLCBlbHNlIDAgKi8KKyAgICBpbnQgbGVuOyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzICovCisgICAgUHlfc3NpemVfdCBsbGVuOworICAgIGludCBudW1kaWdpdHM7ICAgICAgLyogbGVuID09IG51bW5vbmRpZ2l0cyArIG51bWRpZ2l0cyAqLworICAgIGludCBudW1ub25kaWdpdHMgPSAwOwogCi0gICAgc3RyID0gX1B5Qnl0ZXNfRm9ybWF0TG9uZyh2YWwsIGZsYWdzLCBwcmVjLCB0eXBlLCAmYnVmLCAmbGVuKTsKLSAgICBpZiAoIXN0cikKKyAgICAvKiBBdm9pZCBleGNlZWRpbmcgU1NJWkVfVF9NQVggKi8KKyAgICBpZiAocHJlYyA+IElOVF9NQVgtMykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjaXNpb24gdG9vIGxhcmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7Ci0gICAgUHlfREVDUkVGKHN0cik7CisgICAgfQorCisgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2YWwpKTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ3UnOgorICAgICAgICAvKiBTcGVjaWFsLWNhc2UgYm9vbGVhbjogd2Ugd2FudCAwLzEgKi8KKyAgICAgICAgaWYgKFB5Qm9vbF9DaGVjayh2YWwpKQorICAgICAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgMTApOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBQeV9UWVBFKHZhbCktPnRwX3N0cih2YWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdvJzoKKyAgICAgICAgbnVtbm9uZGlnaXRzID0gMjsKKyAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgOCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ3gnOgorICAgIGNhc2UgJ1gnOgorICAgICAgICBudW1ub25kaWdpdHMgPSAyOworICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCAxNik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCghIid0eXBlJyBub3QgaW4gW2R1b3hYXSIpOworICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBhc3NlcnQodW5pY29kZV9tb2RpZmlhYmxlKHJlc3VsdCkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkocmVzdWx0KSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19BU0NJSShyZXN1bHQpKTsKKworICAgIC8qIFRvIG1vZGlmeSB0aGUgc3RyaW5nIGluLXBsYWNlLCB0aGVyZSBjYW4gb25seSBiZSBvbmUgcmVmZXJlbmNlLiAqLworICAgIGlmIChQeV9SRUZDTlQocmVzdWx0KSAhPSAxKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgYnVmID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKKyAgICBsbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKKyAgICBpZiAobGxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsYXJnZSBpbiBfUHlCeXRlc19Gb3JtYXRMb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4gPSAoaW50KWxsZW47CisgICAgc2lnbiA9IGJ1ZlswXSA9PSAnLSc7CisgICAgbnVtbm9uZGlnaXRzICs9IHNpZ247CisgICAgbnVtZGlnaXRzID0gbGVuIC0gbnVtbm9uZGlnaXRzOworICAgIGFzc2VydChudW1kaWdpdHMgPiAwKTsKKworICAgIC8qIEdldCByaWQgb2YgYmFzZSBtYXJrZXIgdW5sZXNzIEZfQUxUICovCisgICAgaWYgKCgoZmxhZ3MgJiBGX0FMVCkgPT0gMCAmJgorICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpKSkgeworICAgICAgICBhc3NlcnQoYnVmW3NpZ25dID09ICcwJyk7CisgICAgICAgIGFzc2VydChidWZbc2lnbisxXSA9PSAneCcgfHwgYnVmW3NpZ24rMV0gPT0gJ1gnIHx8CisgICAgICAgICAgICAgICBidWZbc2lnbisxXSA9PSAnbycpOworICAgICAgICBudW1ub25kaWdpdHMgLT0gMjsKKyAgICAgICAgYnVmICs9IDI7CisgICAgICAgIGxlbiAtPSAyOworICAgICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgIGJ1ZlswXSA9ICctJzsKKyAgICAgICAgYXNzZXJ0KGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMpOworICAgICAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7CisgICAgfQorCisgICAgLyogRmlsbCB3aXRoIGxlYWRpbmcgemVyb2VzIHRvIG1lZXQgbWluaW11bSB3aWR0aC4gKi8KKyAgICBpZiAocHJlYyA+IG51bWRpZ2l0cykgeworICAgICAgICBQeU9iamVjdCAqcjEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bW5vbmRpZ2l0cyArIHByZWMpOworICAgICAgICBjaGFyICpiMTsKKyAgICAgICAgaWYgKCFyMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBiMSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHIxKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bW5vbmRpZ2l0czsgKytpKQorICAgICAgICAgICAgKmIxKysgPSAqYnVmKys7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmVjIC0gbnVtZGlnaXRzOyBpKyspCisgICAgICAgICAgICAqYjErKyA9ICcwJzsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWRpZ2l0czsgaSsrKQorICAgICAgICAgICAgKmIxKysgPSAqYnVmKys7CisgICAgICAgICpiMSA9ICdcMCc7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXN1bHQgPSByMTsKKyAgICAgICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgbGVuID0gbnVtbm9uZGlnaXRzICsgcHJlYzsKKyAgICB9CisKKyAgICAvKiBGaXggdXAgY2FzZSBmb3IgaGV4IGNvbnZlcnNpb25zLiAqLworICAgIGlmICh0eXBlID09ICdYJykgeworICAgICAgICAvKiBOZWVkIHRvIGNvbnZlcnQgYWxsIGxvd2VyIGNhc2UgbGV0dGVycyB0byB1cHBlciBjYXNlLgorICAgICAgICAgICBhbmQgbmVlZCB0byBjb252ZXJ0IDB4IHRvIDBYIChhbmQgLTB4IHRvIC0wWCkuICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgICAgICAgICAgIGlmIChidWZbaV0gPj0gJ2EnICYmIGJ1ZltpXSA8PSAneCcpCisgICAgICAgICAgICAgICAgYnVmW2ldIC09ICdhJy0nQSc7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkgfHwgbGVuICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCkpIHsKKyAgICAgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShidWYsIGxlbik7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXN1bHQgPSB1bmljb2RlOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgaW50Ci1mb3JtYXRjaGFyKFB5X1VOSUNPREUgKmJ1ZiwKLSAgICAgICAgICAgc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgUHlPYmplY3QgKnYpCitzdGF0aWMgUHlfVUNTNAorZm9ybWF0Y2hhcihQeU9iamVjdCAqdikKIHsKICAgICAvKiBwcmVzdW1lIHRoYXQgdGhlIGJ1ZmZlciBpcyBhdCBsZWFzdCAzIGNoYXJhY3RlcnMgbG9uZyAqLwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh2KSA9PSAxKSB7Ci0gICAgICAgICAgICBidWZbMF0gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KVswXTsKLSAgICAgICAgICAgIGJ1ZlsxXSA9ICdcMCc7Ci0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpID09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRF9DSEFSKHYsIDApOwogICAgICAgICB9Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHYpID09IDIpIHsKLSAgICAgICAgICAgIC8qIERlY29kZSBhIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICBpbnQgYzAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KVswXTsKLSAgICAgICAgICAgIGludCBjMSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpWzFdOwotICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSBjMCAmJiBjMCA8PSAweERCRkYgJiYKLSAgICAgICAgICAgICAgICAweERDMDAgPD0gYzEgJiYgYzEgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgYnVmWzBdID0gYzA7Ci0gICAgICAgICAgICAgICAgYnVmWzFdID0gYzE7Ci0gICAgICAgICAgICAgICAgYnVmWzJdID0gJ1wwJzsKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAgICAgZWxzZSB7CkBAIC05NDY0LDQ1ICsxMzM5NCwzNSBAQAogICAgICAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwogCi0gICAgICAgIGlmICh4IDwgMCB8fCB4ID4gMHgxMGZmZmYpIHsKKyAgICAgICAgaWYgKHggPCAwIHx8IHggPiBNQVhfVU5JQ09ERSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICByZXR1cm4gKFB5X1VDUzQpIC0xOwogICAgICAgICB9CiAKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmICh4ID4gMHhmZmZmKSB7Ci0gICAgICAgICAgICB4IC09IDB4MTAwMDA7Ci0gICAgICAgICAgICBidWZbMF0gPSAoUHlfVU5JQ09ERSkoMHhEODAwIHwgKHggPj4gMTApKTsKLSAgICAgICAgICAgIGJ1ZlsxXSA9IChQeV9VTklDT0RFKSgweERDMDAgfCAoeCAmIDB4M0ZGKSk7Ci0gICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGJ1ZlswXSA9IChQeV9VTklDT0RFKSB4OwotICAgICAgICBidWZbMV0gPSAnXDAnOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KSB4OwogICAgIH0KIAogICBvbkVycm9yOgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICIlYyByZXF1aXJlcyBpbnQgb3IgY2hhciIpOwotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gKFB5X1VDUzQpIC0xOwogfQogCi0vKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikKLSAgIEZPUk1BVEJVRkxFTiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgaW4gd2hpY2ggY2hhcnMgYXJlIGZvcm1hdHRlZC4KLSovCi0jZGVmaW5lIEZPUk1BVEJVRkxFTiAoc2l6ZV90KTEwCi0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSAqZm10LCAqcmVzOwotICAgIFB5X3NzaXplX3QgZm10Y250LCByZXNjbnQsIHJlc2xlbiwgYXJnbGVuLCBhcmdpZHg7CisgICAgUHlfc3NpemVfdCBmbXRjbnQsIGZtdHBvcywgYXJnbGVuLCBhcmdpZHg7CiAgICAgaW50IGFyZ3Nfb3duZWQgPSAwOwotICAgIFB5VW5pY29kZU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzZWNvbmQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp1Zm9ybWF0OworICAgIHZvaWQgKmZtdDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQsIGZtdGtpbmQ7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgUHlfc3NpemVfdCBzdWJsZW47CisgICAgUHlfVUNTNCBtYXhjaGFyOwogCiAgICAgaWYgKGZvcm1hdCA9PSBOVUxMIHx8IGFyZ3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKQEAgLTk1MTEsMTQgKzEzNDMxLDE3IEBACiAgICAgdWZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGZvcm1hdCk7CiAgICAgaWYgKHVmb3JtYXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm10ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodWZvcm1hdCk7Ci0gICAgZm10Y250ID0gUHlVbmljb2RlX0dFVF9TSVpFKHVmb3JtYXQpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodWZvcm1hdCkgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHVmb3JtYXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICByZXNsZW4gPSByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgcmVzdWx0ID0gX1B5VW5pY29kZV9OZXcocmVzbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIGZtdCA9IFB5VW5pY29kZV9EQVRBKHVmb3JtYXQpOworICAgIGZtdGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1Zm9ybWF0KTsKKyAgICBmbXRjbnQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1Zm9ybWF0KTsKKyAgICBmbXRwb3MgPSAwOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIGZtdGNudCArIDEwMCk7CiAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICBhcmdsZW4gPSBQeVR1cGxlX1NpemUoYXJncyk7CkBAIC05NTMyLDM1ICsxMzQ1NSw0NiBAQAogICAgICAgICBkaWN0ID0gYXJnczsKIAogICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgIGlmICgqZm10ICE9ICclJykgewotICAgICAgICAgICAgaWYgKC0tcmVzY250IDwgMCkgewotICAgICAgICAgICAgICAgIHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkgKyByZXNsZW4gLSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcykgIT0gJyUnKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG5vbmZtdHBvczsKKyAgICAgICAgICAgIG5vbmZtdHBvcyA9IGZtdHBvcysrOworICAgICAgICAgICAgd2hpbGUgKGZtdGNudCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpICE9ICclJykgeworICAgICAgICAgICAgICAgIGZtdHBvcysrOworICAgICAgICAgICAgICAgIGZtdGNudC0tOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnJlcysrID0gKmZtdCsrOworICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApCisgICAgICAgICAgICAgICAgZm10cG9zLS07CisgICAgICAgICAgICBzdWJsZW4gPSBmbXRwb3MgLSBub25mbXRwb3M7CisgICAgICAgICAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih1Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZm10cG9zLCBub25mbXRwb3MgKyBzdWJsZW4pOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzdWJsZW4sIG1heGNoYXIpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLmJ1ZmZlciwgd3JpdGVyLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVmb3JtYXQsIG5vbmZtdHBvcywgc3VibGVuKTsKKyAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gc3VibGVuOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogR290IGEgZm9ybWF0IHNwZWNpZmllciAqLwogICAgICAgICAgICAgaW50IGZsYWdzID0gMDsKICAgICAgICAgICAgIFB5X3NzaXplX3Qgd2lkdGggPSAtMTsKICAgICAgICAgICAgIGludCBwcmVjID0gLTE7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGMgPSAnXDAnOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBmaWxsOworICAgICAgICAgICAgUHlfVUNTNCBjID0gJ1wwJzsKKyAgICAgICAgICAgIFB5X1VDUzQgZmlsbDsKKyAgICAgICAgICAgIGludCBzaWduOworICAgICAgICAgICAgUHlfVUNTNCBzaWduY2hhcjsKICAgICAgICAgICAgIGludCBpc251bW9rOwogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcGJ1ZjsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgc2lnbjsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBmb3JtYXRidWZbRk9STUFUQlVGTEVOXTsgLyogRm9yIGZvcm1hdGNoYXIoKSAqLworICAgICAgICAgICAgdm9pZCAqcGJ1ZiA9IE5VTEw7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBpbmRleCwgbGVuOworICAgICAgICAgICAgUHlfVUNTNCBidWZtYXhjaGFyOworICAgICAgICAgICAgUHlfc3NpemVfdCBidWZsZW47CiAKLSAgICAgICAgICAgIGZtdCsrOwotICAgICAgICAgICAgaWYgKCpmbXQgPT0gJygnKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqa2V5c3RhcnQ7CisgICAgICAgICAgICBmbXRwb3MrKzsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcyk7CisgICAgICAgICAgICBpZiAoYyA9PSAnKCcpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleXN0YXJ0OwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qga2V5bGVuOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICAgICAgaW50IHBjb3VudCA9IDE7CkBAIC05NTcwLDM0ICsxMzUwNCwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCByZXF1aXJlcyBhIG1hcHBpbmciKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICArK2ZtdDsKKyAgICAgICAgICAgICAgICArK2ZtdHBvczsKICAgICAgICAgICAgICAgICAtLWZtdGNudDsKLSAgICAgICAgICAgICAgICBrZXlzdGFydCA9IGZtdDsKKyAgICAgICAgICAgICAgICBrZXlzdGFydCA9IGZtdHBvczsKICAgICAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgYmFsYW5jZWQgcGFyZW50aGVzZXMgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAocGNvdW50ID4gMCAmJiAtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcpJykKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyknKQogICAgICAgICAgICAgICAgICAgICAgICAgLS1wY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJygnKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICcoJykKICAgICAgICAgICAgICAgICAgICAgICAgICsrcGNvdW50OwotICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgZm10cG9zKys7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGtleWxlbiA9IGZtdCAtIGtleXN0YXJ0IC0gMTsKKyAgICAgICAgICAgICAgICBrZXlsZW4gPSBmbXRwb3MgLSBrZXlzdGFydCAtIDE7CiAgICAgICAgICAgICAgICAgaWYgKGZtdGNudCA8IDAgfHwgcGNvdW50ID4gMCkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCBrZXkiKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KLSNpZiAwCi0gICAgICAgICAgICAgICAgLyoga2V5cyBhcmUgY29udmVydGVkIHRvIHN0cmluZ3MgdXNpbmcgVVRGLTggYW5kCi0gICAgICAgICAgICAgICAgICAgdGhlbiBsb29rZWQgdXAgc2luY2UgUHl0aG9uIHVzZXMgc3RyaW5ncyB0byBob2xkCi0gICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIG5hbWVzIGV0Yy4gaW4gaXRzIG5hbWVzcGFjZXMgYW5kIHdlCi0gICAgICAgICAgICAgICAgICAgd291bGRuJ3Qgd2FudCB0byBicmVhayBjb21tb24gaWRpb21zLiAqLwotICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KGtleXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAga2V5ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGtleXN0YXJ0LCBrZXlsZW4pOwotI2VuZGlmCisgICAgICAgICAgICAgICAga2V5ID0gUHlVbmljb2RlX1N1YnN0cmluZyh1Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5c3RhcnQsIGtleXN0YXJ0ICsga2V5bGVuKTsKICAgICAgICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBpZiAoYXJnc19vd25lZCkgewpAQCAtOTYxNCw3ICsxMzU0MCw4IEBACiAgICAgICAgICAgICAgICAgYXJnaWR4ID0gLTI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAoYyA9ICpmbXQrKykgeworICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgICAgICBjYXNlICctJzogZmxhZ3MgfD0gRl9MSlVTVDsgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FzZSAnKyc6IGZsYWdzIHw9IEZfU0lHTjsgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FzZSAnICc6IGZsYWdzIHw9IEZfQkxBTks7IGNvbnRpbnVlOwpAQCAtOTY0MCwxNSArMTM1NjcsMTggQEAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAtd2lkdGg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQotICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgewogICAgICAgICAgICAgICAgIHdpZHRoID0gYyAtICcwJzsKICAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPiAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh3aWR0aCoxMCkgLyAxMCAhPSB3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICAvKiBTaW5jZSBjIGlzIHVuc2lnbmVkLCB0aGUgUkhTIHdvdWxkIGVuZCB1cCBhcyB1bnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5nIHNpZ25lZCBhbmQgdW5zaWduZWQgY29tcGFyaXNvbi4gU2luY2UgYyBpcyBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICcwJyBhbmQgJzknLCBjYXN0aW5nIHRvIGludCBpcyBzYWZlLiAqLworICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoUFlfU1NJWkVfVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIHRvbyBiaWciKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKQEAgLTk2NTksNyArMTM1ODksNyBAQAogICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTk2NzUsMTUgKzEzNjA1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CiAgICAgICAgICAgICAgICAgICAgIHByZWMgPSBjIC0gJzAnOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPiAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHByZWMqMTApIC8gMTAgIT0gcHJlYykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPiAoSU5UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjIHRvbyBiaWciKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CkBAIC05Njk1LDcgKzEzNjI1LDcgQEAKICAgICAgICAgICAgIGlmIChmbXRjbnQgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChjID09ICdoJyB8fCBjID09ICdsJyB8fCBjID09ICdMJykgewogICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApIHsKQEAgLTk3MDMsMjUgKzEzNjMzLDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjICE9ICclJykgewotICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPT0gMCkKKyAgICAgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKworICAgICAgICAgICAgaWYgKGMgPT0gJyUnKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCAxLCAnJScpID09IC0xKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgJyUnKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CisgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKwogICAgICAgICAgICAgc2lnbiA9IDA7CisgICAgICAgICAgICBzaWduY2hhciA9ICdcMCc7CiAgICAgICAgICAgICBmaWxsID0gJyAnOwogICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAKLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIHBidWYgPSBmb3JtYXRidWY7Ci0gICAgICAgICAgICAgICAgLyogcHJlc3VtZSB0aGF0IGJ1ZmZlciBsZW5ndGggaXMgYXQgbGVhc3QgMSAqLwotICAgICAgICAgICAgICAgIHBidWZbMF0gPSAnJSc7Ci0gICAgICAgICAgICAgICAgbGVuID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2KSAmJiB3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoX1B5TG9uZ19Gb3JtYXRXcml0ZXIoJndyaXRlciwgdiwgMTAsIGZsYWdzICYgRl9BTFQpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpICYmIGMgPT0gJ3MnKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB2OwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGVtcCk7CkBAIC05NzMzLDIxICsxMzY3NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gUHlPYmplY3RfUmVwcih2KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X0FTQ0lJKHYpOwotICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRlbXApKQotICAgICAgICAgICAgICAgICAgICAgICAgLyogbm90aGluZyB0byBkbyAqLzsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBhcmd1bWVudCBoYXMgbm9uLXN0cmluZyBzdHIoKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZW1wKTsKLSAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodGVtcCk7Ci0gICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQotICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICdpJzoKQEAgLTk3NTYsNiArMTM2ODMsMzIgQEAKICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikKKyAgICAgICAgICAgICAgICAgICAgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDEwLCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDE2LCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDgsIGZsYWdzICYgRl9BTFQpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaXNudW1vayA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKHYpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppb2JqPU5VTEw7CkBAIC05NzcwLDEzICsxMzcyMyw5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChpb2JqIT1OVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrKGlvYmopKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNudW1vayA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGxvbmcoaW9iaiwgZmxhZ3MsIHByZWMsIChjID09ICdpJz8gJ2QnOiBjKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVtcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW9iaik7CkBAIC05Nzk5LDIyICsxMzc0OCwzOCBAQAogICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgIGNhc2UgJ0cnOgotICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYyk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRlbXApOwotICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh0ZW1wKTsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsIE5VTEwsICZ3cml0ZXIpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgc2lnbiA9IDE7CiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOworICAgICAgICAgICAgICAgIGlmIChmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgJnRlbXAsIE5VTEwpID09IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZW1wID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9IGZvcm1hdGJ1ZjsKLSAgICAgICAgICAgICAgICBsZW4gPSBmb3JtYXRjaGFyKHBidWYsIHNpemVvZihmb3JtYXRidWYpL3NpemVvZihQeV9VTklDT0RFKSwgdik7Ci0gICAgICAgICAgICAgICAgaWYgKGxlbiA8IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IGZvcm1hdGNoYXIodik7CisgICAgICAgICAgICAgICAgaWYgKGNoID09IChQeV9VQ1M0KSAtMSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIDEsIGNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgY2gpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVtcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC05ODIyLDkwICsxMzc4NywxMzkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0IGluZGV4ICV6ZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzMTw9YyAmJiBjPD0xMjYpID8gKGNoYXIpYyA6ICc/JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1Zm9ybWF0KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXRwb3MgLSAxKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKHRlbXApKTsKKworICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cigmd3JpdGVyLCB0ZW1wKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0ZW1wKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHRlbXApOworICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh0ZW1wKTsKKyAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfREFUQSh0ZW1wKTsKKyAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRlbXApOworCisgICAgICAgICAgICBpZiAoYyA9PSAncycgfHwgYyA9PSAncicgfHwgYyA9PSAnYScpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCisgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHBidWYgaXMgaW5pdGlhbGl6ZWQgaGVyZS4gKi8KKyAgICAgICAgICAgIHBpbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoc2lnbikgewotICAgICAgICAgICAgICAgIGlmICgqcGJ1ZiA9PSAnLScgfHwgKnBidWYgPT0gJysnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnLScgfHwgY2ggPT0gJysnKSB7CisgICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gY2g7CiAgICAgICAgICAgICAgICAgICAgIGxlbi0tOworICAgICAgICAgICAgICAgICAgICBwaW5kZXgrKzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBGX1NJR04pCi0gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnKyc7CisgICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gJysnOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9CTEFOSykKLSAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcgJzsKKyAgICAgICAgICAgICAgICAgICAgc2lnbmNoYXIgPSAnICc7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzaWduID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKICAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKLSAgICAgICAgICAgIGlmIChyZXNjbnQgLSAoc2lnbiAhPSAwKSA8IHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgcmVzbGVuIC09IHJlc2NudDsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSB3aWR0aCArIGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChyZXNsZW4gPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgLyogQ29tcHV0ZSB0aGUgbGVuZ3RoIGFuZCBtYXhpbXVtIGNoYXJhY3RlciBvZiB0aGUKKyAgICAgICAgICAgICAgIHdyaXR0ZW4gY2hhcmFjdGVycyAqLworICAgICAgICAgICAgYnVmbWF4Y2hhciA9IDEyNzsKKyAgICAgICAgICAgIGlmICghKGZsYWdzICYgRl9MSlVTVCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoKHdpZHRoLTEpID4gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmbWF4Y2hhciA9IE1BWF9NQVhDSEFSKGJ1Zm1heGNoYXIsIGZpbGwpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBidWZtYXhjaGFyID0gTUFYX01BWENIQVIoYnVmbWF4Y2hhciwgZmlsbCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih0ZW1wLCAwLCBwaW5kZXgrbGVuKTsKKyAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSBNQVhfTUFYQ0hBUihidWZtYXhjaGFyLCBtYXhjaGFyKTsKKworICAgICAgICAgICAgYnVmbGVuID0gd2lkdGg7CisgICAgICAgICAgICBpZiAoc2lnbiAmJiBsZW4gPT0gd2lkdGgpCisgICAgICAgICAgICAgICAgYnVmbGVuKys7CisKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgYnVmbGVuLCBidWZtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIC8qIFdyaXRlIGNoYXJhY3RlcnMgKi8KICAgICAgICAgICAgIGlmIChzaWduKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKQotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwotICAgICAgICAgICAgICAgIHJlc2NudC0tOworICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCBzaWduY2hhcik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQogICAgICAgICAgICAgICAgICAgICB3aWR0aC0tOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcgfHwgYyA9PSAnbycpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXggKyAxKSA9PSBjKTsKICAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysxLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAyOworICAgICAgICAgICAgICAgICAgICBwaW5kZXggKz0gMjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzY250IC09IDI7CiAgICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CiAgICAgICAgICAgICAgICAgbGVuIC09IDI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7Ci0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gZmlsbDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLXdpZHRoID4gbGVuKTsKKyAgICAgICAgICAgICAgICBzdWJsZW4gPSB3aWR0aCAtIGxlbjsKKyAgICAgICAgICAgICAgICBGSUxMKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgZmlsbCwgd3JpdGVyLnBvcywgc3VibGVuKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmaWxsID09ICcgJykgewotICAgICAgICAgICAgICAgIGlmIChzaWduKQotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOworICAgICAgICAgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIHNpZ25jaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJyB8fCBjID09ICdvJykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgpID09ICcwJyk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgrMSkgPT0gYyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICcwJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrMSwgYyk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4ICs9IDI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHJlcywgcGJ1ZiwgbGVuKTsKLSAgICAgICAgICAgIHJlcyArPSBsZW47Ci0gICAgICAgICAgICByZXNjbnQgLT0gbGVuOwotICAgICAgICAgICAgd2hpbGUgKC0td2lkdGggPj0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgKnJlcysrID0gJyAnOworCisgICAgICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLmJ1ZmZlciwgd3JpdGVyLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLCBwaW5kZXgsIGxlbik7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBsZW47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pIHsKKyAgICAgICAgICAgICAgICBzdWJsZW4gPSB3aWR0aCAtIGxlbjsKKyAgICAgICAgICAgICAgICBGSUxMKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgJyAnLCB3cml0ZXIucG9zLCBzdWJsZW4pOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gc3VibGVuOworICAgICAgICAgICAgfQorCituZXh0YXJnOgogICAgICAgICAgICAgaWYgKGRpY3QgJiYgKGFyZ2lkeCA8IGFyZ2xlbikgJiYgYyAhPSAnJScpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZyIpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRlbXApOwogICAgICAgICB9IC8qICclJyAqLwogICAgIH0gLyogdW50aWwgZW5kICovCiAgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgewpAQCAtOTkxNCwxNyArMTM5MjgsMTkgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4gLSByZXNjbnQpIDwgMCkKLSAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CiAgICAgUHlfREVDUkVGKHVmb3JtYXQpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICBQeV9YREVDUkVGKHNlY29uZCk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihyZXN1bHQpOwogICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKKyAgICBQeV9YREVDUkVGKHRlbXApOworICAgIFB5X1hERUNSRUYoc2Vjb25kKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KQEAgLTk5NDcsOCArMTM5NjMsMTAgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9zczpzdHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJngsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh4ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilfUHlVbmljb2RlX05ldygwKTsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMICYmIGVycm9ycyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKHgpOwogICAgIGVsc2UKQEAgLTk5NTgsMzEgKzEzOTc2LDEwMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfc3VidHlwZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp0bXAsICpwbmV3OwotICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgKnNlbGY7CisgICAgUHlfc3NpemVfdCBsZW5ndGgsIGNoYXJfc2l6ZTsKKyAgICBpbnQgc2hhcmVfd3N0ciwgc2hhcmVfdXRmODsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgYXNzZXJ0KFB5VHlwZV9Jc1N1YnR5cGUodHlwZSwgJlB5VW5pY29kZV9UeXBlKSk7Ci0gICAgdG1wID0gKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGVfbmV3KCZQeVVuaWNvZGVfVHlwZSwgYXJncywga3dkcyk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQorCisgICAgdW5pY29kZSA9IHVuaWNvZGVfbmV3KCZQeVVuaWNvZGVfVHlwZSwgYXJncywga3dkcyk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh0bXApKTsKLSAgICBwbmV3ID0gKFB5VW5pY29kZU9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCBuID0gdG1wLT5sZW5ndGgpOwotICAgIGlmIChwbmV3ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcG5ldy0+c3RyID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKFB5X1VOSUNPREUpICogKG4rMSkpOwotICAgIGlmIChwbmV3LT5zdHIgPT0gTlVMTCkgewotICAgICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKChQeU9iamVjdCAqKXBuZXcpOwotICAgICAgICBQeU9iamVjdF9EZWwocG5ldyk7Ci0gICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIHNlbGYgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1VOSUNPREVfQ09QWShwbmV3LT5zdHIsIHRtcC0+c3RyLCBuKzEpOwotICAgIHBuZXctPmxlbmd0aCA9IG47Ci0gICAgcG5ldy0+aGFzaCA9IHRtcC0+aGFzaDsKLSAgICBQeV9ERUNSRUYodG1wKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcG5ldzsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKKyAgICBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyNpZmRlZiBQeV9ERUJVRworICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IC0xOworI2Vsc2UKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSBfUHlVbmljb2RlX0hBU0godW5pY29kZSk7CisjZW5kaWYKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmludGVybmVkID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmtpbmQgPSBraW5kOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikuY29tcGFjdCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5hc2NpaSA9IF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWk7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5yZWFkeSA9IDE7CisgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHNlbGYpID0gMDsKKyAgICBfUHlVbmljb2RlX1VURjgoc2VsZikgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgoc2VsZikgPSAwOworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkoc2VsZikgPSBOVUxMOworCisgICAgc2hhcmVfdXRmOCA9IDA7CisgICAgc2hhcmVfd3N0ciA9IDA7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8IDEyOCkKKyAgICAgICAgICAgIHNoYXJlX3V0ZjggPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIGNoYXJfc2l6ZSA9IDI7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gMikKKyAgICAgICAgICAgIHNoYXJlX3dzdHIgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBjaGFyX3NpemUgPSA0OworICAgICAgICBpZiAoc2l6ZW9mKHdjaGFyX3QpID09IDQpCisgICAgICAgICAgICBzaGFyZV93c3RyID0gMTsKKyAgICB9CisKKyAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIGxlbmd0aC4gKi8KKyAgICBpZiAobGVuZ3RoID4gKFBZX1NTSVpFX1RfTUFYIC8gY2hhcl9zaXplIC0gMSkpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKyAgICBkYXRhID0gUHlPYmplY3RfTUFMTE9DKChsZW5ndGggKyAxKSAqIGNoYXJfc2l6ZSk7CisgICAgaWYgKGRhdGEgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorCisgICAgX1B5VW5pY29kZV9EQVRBX0FOWShzZWxmKSA9IGRhdGE7CisgICAgaWYgKHNoYXJlX3V0ZjgpIHsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHNlbGYpID0gZGF0YTsKKyAgICB9CisgICAgaWYgKHNoYXJlX3dzdHIpIHsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gKHdjaGFyX3QgKilkYXRhOworICAgIH0KKworICAgIFB5X01FTUNQWShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAga2luZCAqIChsZW5ndGggKyAxKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzZWxmLCAxKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSBfUHlVbmljb2RlX0hBU0godW5pY29kZSk7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHNlbGY7CisKK29uRXJyb3I6CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHVuaWNvZGVfZG9jLApAQCAtMTAwNDUsMTIgKzE0MTMzLDEyIEBACiAKIC8qIEluaXRpYWxpemUgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KIAotdm9pZCBfUHlVbmljb2RlX0luaXQodm9pZCkKK2ludCBfUHlVbmljb2RlX0luaXQodm9pZCkKIHsKICAgICBpbnQgaTsKIAogICAgIC8qIFhYWCAtIG1vdmUgdGhpcyBhcnJheSB0byB1bmljb2RlY3R5cGUuYyA/ICovCi0gICAgUHlfVU5JQ09ERSBsaW5lYnJlYWtbXSA9IHsKKyAgICBQeV9VQ1MyIGxpbmVicmVha1tdID0gewogICAgICAgICAweDAwMEEsIC8qIExJTkUgRkVFRCAqLwogICAgICAgICAweDAwMEQsIC8qIENBUlJJQUdFIFJFVFVSTiAqLwogICAgICAgICAweDAwMUMsIC8qIEZJTEUgU0VQQVJBVE9SICovCkBAIC0xMDA2MiwxMSArMTQxNTAsMTAgQEAKICAgICB9OwogCiAgICAgLyogSW5pdCB0aGUgaW1wbGVtZW50YXRpb24gKi8KLSAgICBmcmVlX2xpc3QgPSBOVUxMOwotICAgIG51bWZyZWUgPSAwOwotICAgIHVuaWNvZGVfZW1wdHkgPSBfUHlVbmljb2RlX05ldygwKTsKKyAgICB1bmljb2RlX2VtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICBpZiAoIXVuaWNvZGVfZW1wdHkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgY3JlYXRlIGVtcHR5IHN0cmluZyIpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZV9lbXB0eSwgMSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICB1bmljb2RlX2xhdGluMVtpXSA9IE5VTEw7CkBAIC0xMDA3NSwxMCArMTQxNjIsMTkgQEAKIAogICAgIC8qIGluaXRpYWxpemUgdGhlIGxpbmVicmVhayBibG9vbSBmaWx0ZXIgKi8KICAgICBibG9vbV9saW5lYnJlYWsgPSBtYWtlX2Jsb29tX21hc2soCi0gICAgICAgIGxpbmVicmVhaywgc2l6ZW9mKGxpbmVicmVhaykgLyBzaXplb2YobGluZWJyZWFrWzBdKQotICAgICAgICApOworICAgICAgICBQeVVuaWNvZGVfMkJZVEVfS0lORCwgbGluZWJyZWFrLAorICAgICAgICBQeV9BUlJBWV9MRU5HVEgobGluZWJyZWFrKSk7CiAKICAgICBQeVR5cGVfUmVhZHkoJkVuY29kaW5nTWFwVHlwZSk7CisKKyNpZmRlZiBIQVZFX01CQ1MKKyAgICB3aW52ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih3aW52ZXIpOworICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAwOwogfQogCiAvKiBGaW5hbGl6ZSB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwpAQCAtMTAwODYsMjEgKzE0MTgyLDcgQEAKIGludAogUHlVbmljb2RlX0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKLSAgICBpbnQgZnJlZWxpc3Rfc2l6ZSA9IG51bWZyZWU7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OwotCi0gICAgZm9yICh1ID0gZnJlZV9saXN0OyB1ICE9IE5VTEw7KSB7Ci0gICAgICAgIFB5VW5pY29kZU9iamVjdCAqdiA9IHU7Ci0gICAgICAgIHUgPSAqKFB5VW5pY29kZU9iamVjdCAqKil1OwotICAgICAgICBpZiAodi0+c3RyKQotICAgICAgICAgICAgUHlPYmplY3RfREVMKHYtPnN0cik7Ci0gICAgICAgIFB5X1hERUNSRUYodi0+ZGVmZW5jKTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHYpOwotICAgICAgICBudW1mcmVlLS07Ci0gICAgfQotICAgIGZyZWVfbGlzdCA9IE5VTEw7Ci0gICAgYXNzZXJ0KG51bWZyZWUgPT0gMCk7Ci0gICAgcmV0dXJuIGZyZWVsaXN0X3NpemU7CisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQKQEAgLTEwMTE3LDE3ICsxNDE5OSwyMiBAQAogICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbaV0gPSBOVUxMOwogICAgICAgICB9CiAgICAgfQorICAgIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKCk7CiAgICAgKHZvaWQpUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QoKTsKIH0KIAogdm9pZAogUHlVbmljb2RlX0ludGVybkluUGxhY2UoUHlPYmplY3QgKipwKQogewotICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqcyA9IChQeVVuaWNvZGVPYmplY3QgKikoKnApOworICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICpzID0gKnA7CiAgICAgUHlPYmplY3QgKnQ7CisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQocyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhzKSk7CisjZWxzZQogICAgIGlmIChzID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhzKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigKLSAgICAgICAgICAgICJQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZTogdW5pY29kZSBzdHJpbmdzIG9ubHkgcGxlYXNlISIpOworICAgICAgICByZXR1cm47CisjZW5kaWYKICAgICAvKiBJZiBpdCdzIGEgc3ViY2xhc3MsIHdlIGRvbid0IHJlYWxseSBrbm93IHdoYXQgcHV0dGluZwogICAgICAgIGl0IGluIHRoZSBpbnRlcm5lZCBkaWN0IG1pZ2h0IGRvLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3QocykpCkBAIC0xMDE0NSw3ICsxNDIzMiw3IEBACiAgICAgICAgdGhvdWdoIHRoZSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSwKICAgICAgICBuYW1lbHkgd2hlbiB0aGlzIGhhcHBlbnMgZHVyaW5nIGEgc3RhY2sgb3ZlcmZsb3cuICovCiAgICAgUHlfQUxMT1dfUkVDVVJTSU9OCi0gICAgICAgIHQgPSBQeURpY3RfR2V0SXRlbShpbnRlcm5lZCwgKFB5T2JqZWN0ICopcyk7CisgICAgdCA9IFB5RGljdF9HZXRJdGVtKGludGVybmVkLCBzKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCiAKICAgICAgICAgaWYgKHQpIHsKQEAgLTEwMTU2LDcgKzE0MjQzLDcgQEAKICAgICAgICAgfQogCiAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIChQeU9iamVjdCAqKXMsIChQeU9iamVjdCAqKXMpIDwgMCkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShpbnRlcm5lZCwgcywgcykgPCAwKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDA7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMTY1LDcgKzE0MjUyLDcgQEAKICAgICAvKiBUaGUgdHdvIHJlZmVyZW5jZXMgaW4gaW50ZXJuZWQgYXJlIG5vdCBjb3VudGVkIGJ5IHJlZmNudC4KICAgICAgICBUaGUgZGVhbGxvY2F0b3Igd2lsbCB0YWtlIGNhcmUgb2YgdGhpcyAqLwogICAgIFB5X1JFRkNOVChzKSAtPSAyOwotICAgIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChzKSA9IFNTVEFURV9JTlRFUk5FRF9NT1JUQUw7CisgICAgX1B5VW5pY29kZV9TVEFURShzKS5pbnRlcm5lZCA9IFNTVEFURV9JTlRFUk5FRF9NT1JUQUw7CiB9CiAKIHZvaWQKQEAgLTEwMTczLDcgKzE0MjYwLDcgQEAKIHsKICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShwKTsKICAgICBpZiAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKCpwKSAhPSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwpIHsKLSAgICAgICAgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKCpwKSA9IFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTDsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSgqcCkuaW50ZXJuZWQgPSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUw7CiAgICAgICAgIFB5X0lOQ1JFRigqcCk7CiAgICAgfQogfQpAQCAtMTAxODgsMTAgKzE0Mjc1LDExIEBACiAgICAgcmV0dXJuIHM7CiB9CiAKLXZvaWQgX1B5X1JlbGVhc2VJbnRlcm5lZFVuaWNvZGVTdHJpbmdzKHZvaWQpCit2b2lkCitfUHlfUmVsZWFzZUludGVybmVkVW5pY29kZVN0cmluZ3Modm9pZCkKIHsKICAgICBQeU9iamVjdCAqa2V5czsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnM7CisgICAgUHlPYmplY3QgKnM7CiAgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5X3NzaXplX3QgaW1tb3J0YWxfc2l6ZSA9IDAsIG1vcnRhbF9zaXplID0gMDsKIApAQCAtMTAyMTIsMjMgKzE0MzAwLDI3IEBACiAgICAgZnByaW50ZihzdGRlcnIsICJyZWxlYXNpbmcgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBpbnRlcm5lZCBzdHJpbmdzXG4iLAogICAgICAgICAgICAgbik7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBzID0gKFB5VW5pY29kZU9iamVjdCAqKSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7Ci0gICAgICAgIHN3aXRjaCAocy0+c3RhdGUpIHsKKyAgICAgICAgcyA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzKSA9PSAtMSkgeworICAgICAgICAgICAgYXNzZXJ0KDAgJiYgImNvdWxkIG5vdCByZWFkeSBzdHJpbmciKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IHJlYWR5IHN0cmluZ1xuIik7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQocykpIHsKICAgICAgICAgY2FzZSBTU1RBVEVfTk9UX0lOVEVSTkVEOgogICAgICAgICAgICAgLyogWFhYIFNob3VsZG4ndCBoYXBwZW4gKi8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTDoKICAgICAgICAgICAgIFB5X1JFRkNOVChzKSArPSAxOwotICAgICAgICAgICAgaW1tb3J0YWxfc2l6ZSArPSBzLT5sZW5ndGg7CisgICAgICAgICAgICBpbW1vcnRhbF9zaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NUQVRFX0lOVEVSTkVEX01PUlRBTDoKICAgICAgICAgICAgIFB5X1JFRkNOVChzKSArPSAyOwotICAgICAgICAgICAgbW9ydGFsX3NpemUgKz0gcy0+bGVuZ3RoOworICAgICAgICAgICAgbW9ydGFsX3NpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkluY29uc2lzdGVudCBpbnRlcm5lZCBzdHJpbmcgc3RhdGUuIik7CiAgICAgICAgIH0KLSAgICAgICAgcy0+c3RhdGUgPSBTU1RBVEVfTk9UX0lOVEVSTkVEOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHMpLmludGVybmVkID0gU1NUQVRFX05PVF9JTlRFUk5FRDsKICAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJ0b3RhbCBzaXplIG9mIGFsbCBpbnRlcm5lZCBzdHJpbmdzOiAiCiAgICAgICAgICAgICAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZC8lIiBQWV9GT1JNQVRfU0laRV9UICJkICIKQEAgLTEwMjQ1LDcgKzE0MzM3LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlfc3NpemVfdCBpdF9pbmRleDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKml0X3NlcTsgLyogU2V0IHRvIE5VTEwgd2hlbiBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KKyAgICBQeU9iamVjdCAqaXRfc2VxOyAgICAvKiBTZXQgdG8gTlVMTCB3aGVuIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSB1bmljb2RlaXRlcm9iamVjdDsKIAogc3RhdGljIHZvaWQKQEAgLTEwMjY2LDE4ICsxNDM1OCwxOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVpdGVyX25leHQodW5pY29kZWl0ZXJvYmplY3QgKml0KQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc2VxOwotICAgIFB5T2JqZWN0ICppdGVtOworICAgIFB5T2JqZWN0ICpzZXEsICppdGVtOwogCiAgICAgYXNzZXJ0KGl0ICE9IE5VTEwpOwogICAgIHNlcSA9IGl0LT5pdF9zZXE7CiAgICAgaWYgKHNlcSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHNlcSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHNlcSkpOwogCi0gICAgaWYgKGl0LT5pdF9pbmRleCA8IFB5VW5pY29kZV9HRVRfU0laRShzZXEpKSB7Ci0gICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXEpK2l0LT5pdF9pbmRleCwgMSk7CisgICAgaWYgKGl0LT5pdF9pbmRleCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcSkpIHsKKyAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZXEpOworICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VxKTsKKyAgICAgICAgUHlfVUNTNCBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpdC0+aXRfaW5kZXgpOworICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNocik7CiAgICAgICAgIGlmIChpdGVtICE9IE5VTEwpCiAgICAgICAgICAgICArK2l0LT5pdF9pbmRleDsKICAgICAgICAgcmV0dXJuIGl0ZW07CkBAIC0xMDI5MywxNSArMTQzODYsNDkgQEAKIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAgICAgaWYgKGl0LT5pdF9zZXEpCi0gICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShpdC0+aXRfc2VxKSAtIGl0LT5pdF9pbmRleDsKKyAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXQtPml0X3NlcSkgLSBpdC0+aXRfaW5kZXg7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOwogfQogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlaXRlcl9yZWR1Y2UodW5pY29kZWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWl0ZXJfc2V0c3RhdGUodW5pY29kZWl0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7CisgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiB1bmljb2RlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pdW5pY29kZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil1bmljb2RlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil1bmljb2RlaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgIE5VTEx9ICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMDM0NywxNiArMTQ0NzQsMTkgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlcSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGl0ID0gUHlPYmplY3RfR0NfTmV3KHVuaWNvZGVpdGVyb2JqZWN0LCAmUHlVbmljb2RlSXRlcl9UeXBlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaXQtPml0X2luZGV4ID0gMDsKICAgICBQeV9JTkNSRUYoc2VxKTsKLSAgICBpdC0+aXRfc2VxID0gKFB5VW5pY29kZU9iamVjdCAqKXNlcTsKKyAgICBpdC0+aXRfc2VxID0gc2VxOwogICAgIF9QeU9iamVjdF9HQ19UUkFDSyhpdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQogCisKIHNpemVfdAogUHlfVU5JQ09ERV9zdHJsZW4oY29uc3QgUHlfVU5JQ09ERSAqdSkKIHsKQEAgLTEwNDQ4LDI1ICsxNDU3OCwzMSBAQAogfQogCiBQeV9VTklDT0RFKgotUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKm9iamVjdCkKK1B5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSA9IChQeVVuaWNvZGVPYmplY3QgKilvYmplY3Q7Ci0gICAgUHlfVU5JQ09ERSAqY29weTsKLSAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlfVU5JQ09ERSAqdSwgKmNvcHk7CisgICAgUHlfc3NpemVfdCBsZW4sIHNpemU7CiAKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaWNvZGUsICZsZW4pOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpID4gKChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgeworICAgIGlmIChsZW4gPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpICsgMTsgLyogY29weSB0aGUgbnVsIGNoYXJhY3RlciAqLworICAgIHNpemUgPSBsZW4gKyAxOyAvKiBjb3B5IHRoZSBudWxsIGNoYXJhY3RlciAqLwogICAgIHNpemUgKj0gc2l6ZW9mKFB5X1VOSUNPREUpOwogICAgIGNvcHkgPSBQeU1lbV9NYWxsb2Moc2l6ZSk7CiAgICAgaWYgKGNvcHkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtY3B5KGNvcHksIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLCBzaXplKTsKKyAgICBtZW1jcHkoY29weSwgdSwgc2l6ZSk7CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaCBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAppbmRleCA4OGE3OTEyLi40NmE5MmJiIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKKysrIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCkBAIC04LDE4NCArOCw5OTIgQEAKICAgICB7MCwgMCwgMCwgMCwgMCwgNDh9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMDU2fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNH0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDU2Mzh9LAotICAgIHswLCAwLCAwLCAxLCAxLCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgMiwgMiwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDMsIDMsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA0LCA0LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgNSwgNSwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDYsIDYsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA3LCA3LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgOCwgOCwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDksIDksIDU2Mzh9LAotICAgIHswLCAzMiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE1MzZ9LAotICAgIHs2NTUwNCwgMCwgNjU1MDQsIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMiwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDMsIDUxMjR9LAotICAgIHs3NDMsIDAsIDc0MywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDAsIDAsIDAsIDEsIDUxMjR9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1MTIwfSwKLSAgICB7MTIxLCAwLCAxMjEsIDAsIDAsIDE4MDF9LAotICAgIHswLCAxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU1MzUsIDAsIDY1NTM1LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjUzMzcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTMwNCwgMCwgNjUzMDQsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQxNSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1MjM2LCAwLCA2NTIzNiwgMCwgMCwgMTgwMX0sCi0gICAgezE5NSwgMCwgMTk1LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMjEwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjA2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjA1LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNzksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDIsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs5NywgMCwgOTcsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyMTEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDksIDAsIDAsIDAsIDE5MjF9LAotICAgIHsxNjMsIDAsIDE2MywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDIxMywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezEzMCwgMCwgMTMwLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMjE0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjE4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjE3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjE5LCAwLCAwLCAwLCAxOTIxfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzU5MH0sCisgICAgezAsIDAsIDAsIDEsIDEsIDM1OTB9LAorICAgIHswLCAwLCAwLCAyLCAyLCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgMywgMywgMzU5MH0sCisgICAgezAsIDAsIDAsIDQsIDQsIDM1OTB9LAorICAgIHswLCAwLCAwLCA1LCA1LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgNiwgNiwgMzU5MH0sCisgICAgezAsIDAsIDAsIDcsIDcsIDM1OTB9LAorICAgIHswLCAwLCAwLCA4LCA4LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgOSwgOSwgMzU5MH0sCisgICAgezAsIDMyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDAsIDAsIDAsIDAsIDE1MzZ9LAorICAgIHstMzIsIDAsIC0zMiwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCA0MDk2fSwKKyAgICB7MCwgMCwgMCwgMCwgMiwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDMsIDMwNzZ9LAorICAgIHsxNjc3NzIxOCwgMTc4MjU3OTIsIDE2Nzc3MjE4LCAwLCAwLCAyNjM3N30sCisgICAgezAsIDAsIDAsIDAsIDAsIDU2MzJ9LAorICAgIHswLCAwLCAwLCAwLCAxLCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzA3Mn0sCisgICAgezMzNTU0NDM4LCAxODg3NDM3MSwgMzM1NTQ0NDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTIxLCAwLCAxMjEsIDAsIDAsIDk5OTN9LAorICAgIHswLCAxLCAwLCAwLCAwLCAxMDExM30sCisgICAgey0xLCAwLCAtMSwgMCwgMCwgOTk5M30sCisgICAgezE2Nzc3MjI4LCAzMzU1NDQ0MiwgMTY3NzcyMjgsIDAsIDAsIDI2NDk3fSwKKyAgICB7LTIzMiwgMCwgLTIzMiwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NDQ4LCAxODg3NDM4MSwgMzM1NTQ0NDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTEyMSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzIzNiwgMTc4MjU4MTAsIDE2Nzc3MjM2LCAwLCAwLCAyNjM3N30sCisgICAgezE5NSwgMCwgMTk1LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjEwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwNiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNzksIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjAyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwMywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7OTcsIDAsIDk3LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjExLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwOSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjMsIDAsIDE2MywgMCwgMCwgOTk5M30sCisgICAgezAsIDIxMywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxMzAsIDAsIDEzMCwgMCwgMCwgOTk5M30sCisgICAgezAsIDIxNCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMTgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjE3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIxOSwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxNzkzfSwKLSAgICB7NTYsIDAsIDU2LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMiwgMSwgMCwgMCwgMTkyMX0sCi0gICAgezY1NTM1LCAxLCAwLCAwLCAwLCAxODU3fSwKLSAgICB7NjU1MzQsIDAsIDY1NTM1LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NTcsIDAsIDY1NDU3LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU0MzksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQ4MCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDA2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMTA3OTUsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTM3MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDEwNzkyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MTA4MTUsIDAsIDEwODE1LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjUzNDEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2OSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDcxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MTA3ODMsIDAsIDEwNzgzLCAwLCAwLCAxODAxfSwKLSAgICB7MTA3ODAsIDAsIDEwNzgwLCAwLCAwLCAxODAxfSwKLSAgICB7MTA3ODIsIDAsIDEwNzgyLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMjYsIDAsIDY1MzI2LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzAsIDAsIDY1MzMwLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzEsIDAsIDY1MzMxLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzQsIDAsIDY1MzM0LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMzMsIDAsIDY1MzMzLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMjksIDAsIDY1MzI5LCAwLCAwLCAxODAxfSwKLSAgICB7NDI4OTMsIDYxMywgNDI4OTMsIDAsIDAsIDM4NDl9LAotICAgIHs2NTMyNywgMCwgNjUzMjcsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyNSwgMCwgNjUzMjUsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc0MywgMCwgMTA3NDMsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc0OSwgMCwgMTA3NDksIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyMywgMCwgNjUzMjMsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyMiwgMCwgNjUzMjIsIDAsIDAsIDE4MDF9LAotICAgIHsxMDcyNywgMCwgMTA3MjcsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMxOCwgMCwgNjUzMTgsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ2NywgMCwgNjU0NjcsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMxOSwgMCwgNjUzMTksIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ2NSwgMCwgNjU0NjUsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMxNywgMCwgNjUzMTcsIDAsIDAsIDE4MDF9LAotICAgIHs4NCwgMCwgODQsIDAsIDAsIDE1MzZ9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxMDI1fSwKLSAgICB7MCwgMzgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAzNywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ5OCwgMCwgNjU0OTgsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ5OSwgMCwgNjU0OTksIDAsIDAsIDE4MDF9LAotICAgIHs2NTUwNSwgMCwgNjU1MDUsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ3MiwgMCwgNjU0NzIsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ3MywgMCwgNjU0NzMsIDAsIDAsIDE4MDF9LAotICAgIHswLCA4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0NzQsIDAsIDY1NDc0LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NzksIDAsIDY1NDc5LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDg5LCAwLCA2NTQ4OSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDgyLCAwLCA2NTQ4MiwgMCwgMCwgMTgwMX0sCi0gICAgezY1NTI4LCAwLCA2NTUyOCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDUwLCAwLCA2NTQ1MCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDU2LCAwLCA2NTQ1NiwgMCwgMCwgMTgwMX0sCi0gICAgezcsIDAsIDcsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQ3NiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDQwLCAwLCA2NTQ0MCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NTI5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgODAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAxNSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NTIxLCAwLCA2NTUyMSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDQ4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0ODgsIDAsIDY1NDg4LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTUzN30sCi0gICAgezAsIDcyNjQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAwLCAwLCAwLCAxLCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgMiwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDMsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA0LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgNSwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDYsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA3LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgOCwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDksIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCAwLCA1ODg4fSwKLSAgICB7NDI4NzcsIDc1NDUsIDQyODc3LCAwLCAwLCAzODQ5fSwKLSAgICB7MzgxNCwgMCwgMzgxNCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDc3LCAwLCA2NTQ3NywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDU3OTIxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7OCwgMCwgOCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NTI4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NzQsIDAsIDc0LCAwLCAwLCAxODAxfSwKLSAgICB7ODYsIDAsIDg2LCAwLCAwLCAxODAxfSwKLSAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDE4MDF9LAotICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgMTgwMX0sCi0gICAgezExMiwgMCwgMTEyLCAwLCAwLCAxODAxfSwKLSAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTUyOCwgMCwgMCwgMCwgMTg1N30sCi0gICAgezksIDAsIDksIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQ2MiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NTI3LCAwLCAwLCAwLCAxODU3fSwKLSAgICB7NTgzMzEsIDAsIDU4MzMxLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU0NTAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQzNiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDI0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MDgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQxMCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA0LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgNSwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDYsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA3LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgOCwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDksIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxNzkyfSwKLSAgICB7MCwgNTgwMTksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NzE1MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU3Mjc0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTUwOCwgMCwgNjU1MDgsIDAsIDAsIDE4MDF9LAotICAgIHswLCAxNiwgMCwgMCwgMCwgNTg4OH0sCi0gICAgezY1NTIwLCAwLCA2NTUyMCwgMCwgMCwgNTg4OH0sCi0gICAgezAsIDI2LCAwLCAwLCAwLCAxMDI0fSwKLSAgICB7NjU1MTAsIDAsIDY1NTEwLCAwLCAwLCAxMDI0fSwKLSAgICB7MCwgNTQ3OTMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2MTcyMiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0ODA5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NTQ3NDEsIDAsIDU0NzQxLCAwLCAwLCAxODAxfSwKLSAgICB7NTQ3NDQsIDAsIDU0NzQ0LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNTQ3NTYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDc4NywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0NzUzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ3NTQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDcyMSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezU4MjcyLCAwLCA1ODI3MiwgMCwgMCwgMTgwMX0sCisgICAgezU2LCAwLCA1NiwgMCwgMCwgOTk5M30sCisgICAgezAsIDIsIDEsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTEsIDEsIDAsIDAsIDAsIDEwMDQ5fSwKKyAgICB7LTIsIDAsIC0xLCAwLCAwLCA5OTkzfSwKKyAgICB7LTc5LCAwLCAtNzksIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDQ1NiwgMTg4NzQzODksIDMzNTU0NDU2LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC05NywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNTYsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEzMCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAxMDc5NSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTYzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDEwNzkyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezEwODE1LCAwLCAxMDgxNSwgMCwgMCwgOTk5M30sCisgICAgezAsIC0xOTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNjksIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNzEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTA3ODMsIDAsIDEwNzgzLCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3ODAsIDAsIDEwNzgwLCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3ODIsIDAsIDEwNzgyLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxMCwgMCwgLTIxMCwgMCwgMCwgOTk5M30sCisgICAgey0yMDYsIDAsIC0yMDYsIDAsIDAsIDk5OTN9LAorICAgIHstMjA1LCAwLCAtMjA1LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwMiwgMCwgLTIwMiwgMCwgMCwgOTk5M30sCisgICAgey0yMDMsIDAsIC0yMDMsIDAsIDAsIDk5OTN9LAorICAgIHstMjA3LCAwLCAtMjA3LCAwLCAwLCA5OTkzfSwKKyAgICB7NDIyODAsIDAsIDQyMjgwLCAwLCAwLCA5OTkzfSwKKyAgICB7NDIzMDgsIDAsIDQyMzA4LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwOSwgMCwgLTIwOSwgMCwgMCwgOTk5M30sCisgICAgey0yMTEsIDAsIC0yMTEsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc0MywgMCwgMTA3NDMsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc0OSwgMCwgMTA3NDksIDAsIDAsIDk5OTN9LAorICAgIHstMjEzLCAwLCAtMjEzLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxNCwgMCwgLTIxNCwgMCwgMCwgOTk5M30sCisgICAgezEwNzI3LCAwLCAxMDcyNywgMCwgMCwgOTk5M30sCisgICAgey0yMTgsIDAsIC0yMTgsIDAsIDAsIDk5OTN9LAorICAgIHstNjksIDAsIC02OSwgMCwgMCwgOTk5M30sCisgICAgey0yMTcsIDAsIC0yMTcsIDAsIDAsIDk5OTN9LAorICAgIHstNzEsIDAsIC03MSwgMCwgMCwgOTk5M30sCisgICAgey0yMTksIDAsIC0yMTksIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxNDA4OX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU4ODl9LAotICAgIHs0Mjg3NywgNzU0NSwgNDI4NzcsIDAsIDAsIDM5Njl9LAotICAgIHs0Mjg5MywgNjEzLCA0Mjg5MywgMCwgMCwgMzk2OX0sCi0gICAgezAsIDQwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0OTYsIDAsIDY1NDk2LCAwLCAwLCAxODAxfSwKKyAgICB7MTY3NzcyNDQsIDE3ODI1ODE4LCAxNjc3NzI0NCwgMCwgMCwgMzAyMTZ9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxMzMyMX0sCisgICAgezAsIDM4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDM3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDY0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDYzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezUwMzMxNjgxLCAxOTkyMjk3MywgNTAzMzE2ODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7LTM4LCAwLCAtMzgsIDAsIDAsIDk5OTN9LAorICAgIHstMzcsIDAsIC0zNywgMCwgMCwgOTk5M30sCisgICAgezUwMzMxNjg4LCAxOTkyMjk4MCwgNTAzMzE2ODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzcyNjEsIDE3ODI1ODM1LCAxNjc3NzI2MSwgMCwgMCwgMjYzNzd9LAorICAgIHstNjQsIDAsIC02NCwgMCwgMCwgOTk5M30sCisgICAgey02MywgMCwgLTYzLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzI2NCwgMTc4MjU4MzgsIDE2Nzc3MjY0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MjY3LCAxNzgyNTg0MSwgMTY3NzcyNjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzI3MCwgMTc4MjU4NDQsIDE2Nzc3MjcwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MjczLCAxNzgyNTg0NywgMTY3NzcyNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7LTgsIDAsIC04LCAwLCAwLCA5OTkzfSwKKyAgICB7MTY3NzcyNzYsIDE3ODI1ODUwLCAxNjc3NzI3NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzI3OSwgMTc4MjU4NTMsIDE2Nzc3Mjc5LCAwLCAwLCAyNjM3N30sCisgICAgezcsIDAsIDcsIDAsIDAsIDk5OTN9LAorICAgIHswLCAtNjAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTY3NzcyODIsIDE3ODI1ODU2LCAxNjc3NzI4MiwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA4MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstODAsIDAsIC04MCwgMCwgMCwgOTk5M30sCisgICAgezAsIDE1LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0xNSwgMCwgLTE1LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgNDgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTQ4LCAwLCAtNDgsIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDUwMiwgMTg4NzQ0MzUsIDMzNTU0NTA0LCAwLCAwLCAyNjM3N30sCisgICAgezAsIDAsIDAsIDAsIDAsIDE1Mzd9LAorICAgIHswLCA3MjY0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDAsIDAsIDAsIDEsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCAyLCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgMywgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDQsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA1LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgNiwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDcsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA4LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgOSwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDAsIDM4NDB9LAorICAgIHszNTMzMiwgMCwgMzUzMzIsIDAsIDAsIDk5OTN9LAorICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ1MDksIDE4ODc0NDQyLCAzMzU1NDUwOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDUxNCwgMTg4NzQ0NDcsIDMzNTU0NTE0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTE5LCAxODg3NDQ1MiwgMzM1NTQ1MTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1MjQsIDE4ODc0NDU3LCAzMzU1NDUyNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDUyOSwgMTg4NzQ0NjIsIDMzNTU0NTI5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MzE3LCAxNzgyNTg5MSwgMTY3NzczMTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzczMjEsIDE4ODc0NDcwLCAxNjc3NzMyMSwgMCwgMCwgMjY0OTd9LAorICAgIHs4LCAwLCA4LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgLTgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ1NDEsIDE4ODc0NDc0LCAzMzU1NDU0MSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMTc2MywgMTk5MjMwNTUsIDUwMzMxNzYzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMxNzcwLCAxOTkyMzA2MiwgNTAzMzE3NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzE3NzcsIDE5OTIzMDY5LCA1MDMzMTc3NywgMCwgMCwgMjYzNzd9LAorICAgIHs3NCwgMCwgNzQsIDAsIDAsIDk5OTN9LAorICAgIHs4NiwgMCwgODYsIDAsIDAsIDk5OTN9LAorICAgIHsxMDAsIDAsIDEwMCwgMCwgMCwgOTk5M30sCisgICAgezEyOCwgMCwgMTI4LCAwLCAwLCA5OTkzfSwKKyAgICB7MTEyLCAwLCAxMTIsIDAsIDAsIDk5OTN9LAorICAgIHsxMjYsIDAsIDEyNiwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NTY3LCAxODg3NDUwMCwgMTY3NzczNTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1NzMsIDE4ODc0NTA2LCAxNjc3NzM1OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU3OSwgMTg4NzQ1MTIsIDE2Nzc3MzY1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTg1LCAxODg3NDUxOCwgMTY3NzczNzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1OTEsIDE4ODc0NTI0LCAxNjc3NzM3NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU5NywgMTg4NzQ1MzAsIDE2Nzc3MzgzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjAzLCAxODg3NDUzNiwgMTY3NzczODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2MDksIDE4ODc0NTQyLCAxNjc3NzM5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDYxNSwgMTg4NzQ1NDgsIDE2Nzc3NDAxLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjIxLCAxODg3NDU1NCwgMTY3Nzc0MDcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2MjcsIDE4ODc0NTYwLCAxNjc3NzQxMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDYzMywgMTg4NzQ1NjYsIDE2Nzc3NDE5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjM5LCAxODg3NDU3MiwgMTY3Nzc0MjUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2NDUsIDE4ODc0NTc4LCAxNjc3NzQzMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDY1MSwgMTg4NzQ1ODQsIDE2Nzc3NDM3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjU3LCAxODg3NDU5MCwgMTY3Nzc0NDMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2NjMsIDE4ODc0NTk2LCAxNjc3NzQ0OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY2OSwgMTg4NzQ2MDIsIDE2Nzc3NDU1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Njc1LCAxODg3NDYwOCwgMTY3Nzc0NjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2ODEsIDE4ODc0NjE0LCAxNjc3NzQ2NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY4NywgMTg4NzQ2MjAsIDE2Nzc3NDczLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjkzLCAxODg3NDYyNiwgMTY3Nzc0NzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2OTksIDE4ODc0NjMyLCAxNjc3NzQ4NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDcwNSwgMTg4NzQ2MzgsIDE2Nzc3NDkxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzExLCAxODg3NDY0NCwgMTY3Nzc0OTcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3MTcsIDE4ODc0NjUwLCAxNjc3NzUwMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDcyMywgMTg4NzQ2NTYsIDE2Nzc3NTA5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzI5LCAxODg3NDY2MiwgMTY3Nzc1MTUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3MzUsIDE4ODc0NjY4LCAxNjc3NzUyMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDc0MSwgMTg4NzQ2NzQsIDE2Nzc3NTI3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzQ3LCAxODg3NDY4MCwgMTY3Nzc1MzMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3NTMsIDE4ODc0Njg2LCAxNjc3NzUzOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDc1OSwgMTg4NzQ2OTIsIDE2Nzc3NTQ1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzY1LCAxODg3NDY5OCwgMTY3Nzc1NTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3NzEsIDE4ODc0NzA0LCAxNjc3NzU1NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc3NywgMTg4NzQ3MTAsIDE2Nzc3NTYzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzgzLCAxODg3NDcxNiwgMTY3Nzc1NjksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3ODksIDE4ODc0NzIyLCAxNjc3NzU3NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc5NSwgMTg4NzQ3MjgsIDE2Nzc3NTgxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODAxLCAxODg3NDczNCwgMTY3Nzc1ODcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MDcsIDE4ODc0NzQwLCAxNjc3NzU5MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgxMywgMTg4NzQ3NDYsIDE2Nzc3NTk5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODE5LCAxODg3NDc1MiwgMTY3Nzc2MDUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MjUsIDE4ODc0NzU4LCAxNjc3NzYxMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgzMSwgMTg4NzQ3NjQsIDE2Nzc3NjE3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODM3LCAxODg3NDc3MCwgMTY3Nzc2MjMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4NDMsIDE4ODc0Nzc2LCAxNjc3NzYyOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDg0OSwgMTg4NzQ3ODIsIDE2Nzc3NjM1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODU1LCAxODg3NDc4OCwgMzM1NTQ4NTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NjIsIDE4ODc0Nzk1LCAxNjc3NzY0OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg2OCwgMTg4NzQ4MDEsIDMzNTU0ODcwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODc1LCAxODg3NDgwOCwgMzM1NTQ4NzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwOTcsIDE5OTIzMzg5LCA1MDMzMjEwMCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtNzQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ4OTAsIDE4ODc0ODIzLCAxNjc3NzY3NiwgMCwgMCwgMjY0MzN9LAorICAgIHsxNjc3NzY3OSwgMTc4MjYyNTMsIDE2Nzc3Njc5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODk5LCAxODg3NDgzMiwgMzM1NTQ5MDEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDYsIDE4ODc0ODM5LCAxNjc3NzY5MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxMiwgMTg4NzQ4NDUsIDMzNTU0OTE0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTE5LCAxODg3NDg1MiwgMzM1NTQ5MTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIxNDEsIDE5OTIzNDMzLCA1MDMzMjE0NCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtODYsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ5MzQsIDE4ODc0ODY3LCAxNjc3NzcyMCwgMCwgMCwgMjY0MzN9LAorICAgIHs1MDMzMjE1NywgMTk5MjM0NDksIDUwMzMyMTU3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMTY0LCAxOTkyMzQ1NiwgNTAzMzIxNjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NTQsIDE4ODc0ODg3LCAzMzU1NDk1NCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjE3NiwgMTk5MjM0NjgsIDUwMzMyMTc2LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC0xMDAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7NTAzMzIxODMsIDE5OTIzNDc1LCA1MDMzMjE4MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjE5MCwgMTk5MjM0ODIsIDUwMzMyMTkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTgwLCAxODg3NDkxMywgMzM1NTQ5ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODUsIDE4ODc0OTE4LCAzMzU1NDk4NSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjIwNywgMTk5MjM0OTksIDUwMzMyMjA3LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC0xMTIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTQ5OTcsIDE4ODc0OTMwLCAzMzU1NDk5OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAwNCwgMTg4NzQ5MzcsIDE2Nzc3NzkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDEwLCAxODg3NDk0MywgMzM1NTUwMTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMTcsIDE4ODc0OTUwLCAzMzU1NTAxNywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjIzOSwgMTk5MjM1MzEsIDUwMzMyMjQyLCAwLCAwLCAyNjM3N30sCisgICAgezAsIC0xMjgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEyNiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NTAzMiwgMTg4NzQ5NjUsIDE2Nzc3ODE4LCAwLCAwLCAyNjQzM30sCisgICAgezAsIDAsIDAsIDAsIDAsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA0LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgNSwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDYsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA3LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgOCwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDksIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxNzkyfSwKKyAgICB7MCwgLTc1MTcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTgzODMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTgyNjIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTI4LCAwLCAtMjgsIDAsIDAsIDk5OTN9LAorICAgIHswLCAxNiwgMCwgMCwgMCwgMTIxNjB9LAorICAgIHstMTYsIDAsIC0xNiwgMCwgMCwgMTIwNDB9LAorICAgIHswLCAyNiwgMCwgMCwgMCwgOTM0NH0sCisgICAgey0yNiwgMCwgLTI2LCAwLCAwLCA5MjI0fSwKKyAgICB7MCwgLTEwNzQzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0zODE0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDcyNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMTA3OTUsIDAsIC0xMDc5NSwgMCwgMCwgOTk5M30sCisgICAgey0xMDc5MiwgMCwgLTEwNzkyLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgLTEwNzgwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDc0OSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTA3ODMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwNzgyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDgxNSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstNzI2NCwgMCwgLTcyNjQsIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCA1MTIxfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzg0MX0sCisgICAgezAsIC0zNTMzMiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIyODAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMzA4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU1MDM4LCAxODg3NDk3MSwgMzM1NTUwNDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNDUsIDE4ODc0OTc4LCAzMzU1NTA0NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA1MiwgMTg4NzQ5ODUsIDMzNTU1MDU0LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMjc2LCAxOTkyMzU2OCwgNTAzMzIyNzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIyODYsIDE5OTIzNTc4LCA1MDMzMjI4OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA3OSwgMTg4NzUwMTIsIDMzNTU1MDgxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDg2LCAxODg3NTAxOSwgMzM1NTUwODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwOTMsIDE4ODc1MDI2LCAzMzU1NTA5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEwMCwgMTg4NzUwMzMsIDMzNTU1MTAyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTA3LCAxODg3NTA0MCwgMzM1NTUxMDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMTQsIDE4ODc1MDQ3LCAzMzU1NTExNiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEyMSwgMTg4NzUwNTQsIDMzNTU1MTIzLCAwLCAwLCAyNjM3N30sCisgICAgezAsIDAsIDAsIDAsIDAsIDEwMjV9LAorICAgIHswLCAwLCAwLCAwLCAwLCA1NjMzfSwKKyAgICB7MCwgNDAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTQwLCAwLCAtNDAsIDAsIDAsIDk5OTN9LAorfTsKKworLyogZXh0ZW5kZWQgY2FzZSBtYXBwaW5ncyAqLworCitjb25zdCBQeV9VQ1M0IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW10gPSB7CisgICAgMTgxLAorICAgIDk1NiwKKyAgICA5MjQsCisgICAgMjIzLAorICAgIDExNSwKKyAgICAxMTUsCisgICAgODMsCisgICAgODMsCisgICAgODMsCisgICAgMTE1LAorICAgIDEwNSwKKyAgICA3NzUsCisgICAgMzA0LAorICAgIDMyOSwKKyAgICA3MDAsCisgICAgMTEwLAorICAgIDcwMCwKKyAgICA3OCwKKyAgICAzODMsCisgICAgMTE1LAorICAgIDgzLAorICAgIDQ5NiwKKyAgICAxMDYsCisgICAgNzgwLAorICAgIDc0LAorICAgIDc4MCwKKyAgICA4MzcsCisgICAgOTUzLAorICAgIDkyMSwKKyAgICA5MTIsCisgICAgOTUzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTIxLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTQ0LAorICAgIDk2NSwKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDkzMywKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDk2MiwKKyAgICA5NjMsCisgICAgOTMxLAorICAgIDk3NiwKKyAgICA5NDYsCisgICAgOTE0LAorICAgIDk3NywKKyAgICA5NTIsCisgICAgOTIwLAorICAgIDk4MSwKKyAgICA5NjYsCisgICAgOTM0LAorICAgIDk4MiwKKyAgICA5NjAsCisgICAgOTI4LAorICAgIDEwMDgsCisgICAgOTU0LAorICAgIDkyMiwKKyAgICAxMDA5LAorICAgIDk2MSwKKyAgICA5MjksCisgICAgMTAxMywKKyAgICA5NDksCisgICAgOTE3LAorICAgIDE0MTUsCisgICAgMTM4MSwKKyAgICAxNDEwLAorICAgIDEzMzMsCisgICAgMTM2MiwKKyAgICAxMzMzLAorICAgIDE0MTAsCisgICAgNzgzMCwKKyAgICAxMDQsCisgICAgODE3LAorICAgIDcyLAorICAgIDgxNywKKyAgICA3ODMxLAorICAgIDExNiwKKyAgICA3NzYsCisgICAgODQsCisgICAgNzc2LAorICAgIDc4MzIsCisgICAgMTE5LAorICAgIDc3OCwKKyAgICA4NywKKyAgICA3NzgsCisgICAgNzgzMywKKyAgICAxMjEsCisgICAgNzc4LAorICAgIDg5LAorICAgIDc3OCwKKyAgICA3ODM0LAorICAgIDk3LAorICAgIDcwMiwKKyAgICA2NSwKKyAgICA3MDIsCisgICAgNzgzNSwKKyAgICA3Nzc3LAorICAgIDc3NzYsCisgICAgMjIzLAorICAgIDExNSwKKyAgICAxMTUsCisgICAgNzgzOCwKKyAgICA4MDE2LAorICAgIDk2NSwKKyAgICA3ODcsCisgICAgOTMzLAorICAgIDc4NywKKyAgICA4MDE4LAorICAgIDk2NSwKKyAgICA3ODcsCisgICAgNzY4LAorICAgIDkzMywKKyAgICA3ODcsCisgICAgNzY4LAorICAgIDgwMjAsCisgICAgOTY1LAorICAgIDc4NywKKyAgICA3NjksCisgICAgOTMzLAorICAgIDc4NywKKyAgICA3NjksCisgICAgODAyMiwKKyAgICA5NjUsCisgICAgNzg3LAorICAgIDgzNCwKKyAgICA5MzMsCisgICAgNzg3LAorICAgIDgzNCwKKyAgICA4MDY0LAorICAgIDc5MzYsCisgICAgOTUzLAorICAgIDc5NDQsCisgICAgOTIxLAorICAgIDgwNzIsCisgICAgODA2NSwKKyAgICA3OTM3LAorICAgIDk1MywKKyAgICA3OTQ1LAorICAgIDkyMSwKKyAgICA4MDczLAorICAgIDgwNjYsCisgICAgNzkzOCwKKyAgICA5NTMsCisgICAgNzk0NiwKKyAgICA5MjEsCisgICAgODA3NCwKKyAgICA4MDY3LAorICAgIDc5MzksCisgICAgOTUzLAorICAgIDc5NDcsCisgICAgOTIxLAorICAgIDgwNzUsCisgICAgODA2OCwKKyAgICA3OTQwLAorICAgIDk1MywKKyAgICA3OTQ4LAorICAgIDkyMSwKKyAgICA4MDc2LAorICAgIDgwNjksCisgICAgNzk0MSwKKyAgICA5NTMsCisgICAgNzk0OSwKKyAgICA5MjEsCisgICAgODA3NywKKyAgICA4MDcwLAorICAgIDc5NDIsCisgICAgOTUzLAorICAgIDc5NTAsCisgICAgOTIxLAorICAgIDgwNzgsCisgICAgODA3MSwKKyAgICA3OTQzLAorICAgIDk1MywKKyAgICA3OTUxLAorICAgIDkyMSwKKyAgICA4MDc5LAorICAgIDgwNjQsCisgICAgNzkzNiwKKyAgICA5NTMsCisgICAgNzk0NCwKKyAgICA5MjEsCisgICAgODA3MiwKKyAgICA4MDY1LAorICAgIDc5MzcsCisgICAgOTUzLAorICAgIDc5NDUsCisgICAgOTIxLAorICAgIDgwNzMsCisgICAgODA2NiwKKyAgICA3OTM4LAorICAgIDk1MywKKyAgICA3OTQ2LAorICAgIDkyMSwKKyAgICA4MDc0LAorICAgIDgwNjcsCisgICAgNzkzOSwKKyAgICA5NTMsCisgICAgNzk0NywKKyAgICA5MjEsCisgICAgODA3NSwKKyAgICA4MDY4LAorICAgIDc5NDAsCisgICAgOTUzLAorICAgIDc5NDgsCisgICAgOTIxLAorICAgIDgwNzYsCisgICAgODA2OSwKKyAgICA3OTQxLAorICAgIDk1MywKKyAgICA3OTQ5LAorICAgIDkyMSwKKyAgICA4MDc3LAorICAgIDgwNzAsCisgICAgNzk0MiwKKyAgICA5NTMsCisgICAgNzk1MCwKKyAgICA5MjEsCisgICAgODA3OCwKKyAgICA4MDcxLAorICAgIDc5NDMsCisgICAgOTUzLAorICAgIDc5NTEsCisgICAgOTIxLAorICAgIDgwNzksCisgICAgODA4MCwKKyAgICA3OTY4LAorICAgIDk1MywKKyAgICA3OTc2LAorICAgIDkyMSwKKyAgICA4MDg4LAorICAgIDgwODEsCisgICAgNzk2OSwKKyAgICA5NTMsCisgICAgNzk3NywKKyAgICA5MjEsCisgICAgODA4OSwKKyAgICA4MDgyLAorICAgIDc5NzAsCisgICAgOTUzLAorICAgIDc5NzgsCisgICAgOTIxLAorICAgIDgwOTAsCisgICAgODA4MywKKyAgICA3OTcxLAorICAgIDk1MywKKyAgICA3OTc5LAorICAgIDkyMSwKKyAgICA4MDkxLAorICAgIDgwODQsCisgICAgNzk3MiwKKyAgICA5NTMsCisgICAgNzk4MCwKKyAgICA5MjEsCisgICAgODA5MiwKKyAgICA4MDg1LAorICAgIDc5NzMsCisgICAgOTUzLAorICAgIDc5ODEsCisgICAgOTIxLAorICAgIDgwOTMsCisgICAgODA4NiwKKyAgICA3OTc0LAorICAgIDk1MywKKyAgICA3OTgyLAorICAgIDkyMSwKKyAgICA4MDk0LAorICAgIDgwODcsCisgICAgNzk3NSwKKyAgICA5NTMsCisgICAgNzk4MywKKyAgICA5MjEsCisgICAgODA5NSwKKyAgICA4MDgwLAorICAgIDc5NjgsCisgICAgOTUzLAorICAgIDc5NzYsCisgICAgOTIxLAorICAgIDgwODgsCisgICAgODA4MSwKKyAgICA3OTY5LAorICAgIDk1MywKKyAgICA3OTc3LAorICAgIDkyMSwKKyAgICA4MDg5LAorICAgIDgwODIsCisgICAgNzk3MCwKKyAgICA5NTMsCisgICAgNzk3OCwKKyAgICA5MjEsCisgICAgODA5MCwKKyAgICA4MDgzLAorICAgIDc5NzEsCisgICAgOTUzLAorICAgIDc5NzksCisgICAgOTIxLAorICAgIDgwOTEsCisgICAgODA4NCwKKyAgICA3OTcyLAorICAgIDk1MywKKyAgICA3OTgwLAorICAgIDkyMSwKKyAgICA4MDkyLAorICAgIDgwODUsCisgICAgNzk3MywKKyAgICA5NTMsCisgICAgNzk4MSwKKyAgICA5MjEsCisgICAgODA5MywKKyAgICA4MDg2LAorICAgIDc5NzQsCisgICAgOTUzLAorICAgIDc5ODIsCisgICAgOTIxLAorICAgIDgwOTQsCisgICAgODA4NywKKyAgICA3OTc1LAorICAgIDk1MywKKyAgICA3OTgzLAorICAgIDkyMSwKKyAgICA4MDk1LAorICAgIDgwOTYsCisgICAgODAzMiwKKyAgICA5NTMsCisgICAgODA0MCwKKyAgICA5MjEsCisgICAgODEwNCwKKyAgICA4MDk3LAorICAgIDgwMzMsCisgICAgOTUzLAorICAgIDgwNDEsCisgICAgOTIxLAorICAgIDgxMDUsCisgICAgODA5OCwKKyAgICA4MDM0LAorICAgIDk1MywKKyAgICA4MDQyLAorICAgIDkyMSwKKyAgICA4MTA2LAorICAgIDgwOTksCisgICAgODAzNSwKKyAgICA5NTMsCisgICAgODA0MywKKyAgICA5MjEsCisgICAgODEwNywKKyAgICA4MTAwLAorICAgIDgwMzYsCisgICAgOTUzLAorICAgIDgwNDQsCisgICAgOTIxLAorICAgIDgxMDgsCisgICAgODEwMSwKKyAgICA4MDM3LAorICAgIDk1MywKKyAgICA4MDQ1LAorICAgIDkyMSwKKyAgICA4MTA5LAorICAgIDgxMDIsCisgICAgODAzOCwKKyAgICA5NTMsCisgICAgODA0NiwKKyAgICA5MjEsCisgICAgODExMCwKKyAgICA4MTAzLAorICAgIDgwMzksCisgICAgOTUzLAorICAgIDgwNDcsCisgICAgOTIxLAorICAgIDgxMTEsCisgICAgODA5NiwKKyAgICA4MDMyLAorICAgIDk1MywKKyAgICA4MDQwLAorICAgIDkyMSwKKyAgICA4MTA0LAorICAgIDgwOTcsCisgICAgODAzMywKKyAgICA5NTMsCisgICAgODA0MSwKKyAgICA5MjEsCisgICAgODEwNSwKKyAgICA4MDk4LAorICAgIDgwMzQsCisgICAgOTUzLAorICAgIDgwNDIsCisgICAgOTIxLAorICAgIDgxMDYsCisgICAgODA5OSwKKyAgICA4MDM1LAorICAgIDk1MywKKyAgICA4MDQzLAorICAgIDkyMSwKKyAgICA4MTA3LAorICAgIDgxMDAsCisgICAgODAzNiwKKyAgICA5NTMsCisgICAgODA0NCwKKyAgICA5MjEsCisgICAgODEwOCwKKyAgICA4MTAxLAorICAgIDgwMzcsCisgICAgOTUzLAorICAgIDgwNDUsCisgICAgOTIxLAorICAgIDgxMDksCisgICAgODEwMiwKKyAgICA4MDM4LAorICAgIDk1MywKKyAgICA4MDQ2LAorICAgIDkyMSwKKyAgICA4MTEwLAorICAgIDgxMDMsCisgICAgODAzOSwKKyAgICA5NTMsCisgICAgODA0NywKKyAgICA5MjEsCisgICAgODExMSwKKyAgICA4MTE0LAorICAgIDgwNDgsCisgICAgOTUzLAorICAgIDgxMjIsCisgICAgOTIxLAorICAgIDgxMjIsCisgICAgODM3LAorICAgIDgxMTUsCisgICAgOTQ1LAorICAgIDk1MywKKyAgICA5MTMsCisgICAgOTIxLAorICAgIDgxMjQsCisgICAgODExNiwKKyAgICA5NDAsCisgICAgOTUzLAorICAgIDkwMiwKKyAgICA5MjEsCisgICAgOTAyLAorICAgIDgzNywKKyAgICA4MTE4LAorICAgIDk0NSwKKyAgICA4MzQsCisgICAgOTEzLAorICAgIDgzNCwKKyAgICA4MTE5LAorICAgIDk0NSwKKyAgICA4MzQsCisgICAgOTUzLAorICAgIDkxMywKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDkxMywKKyAgICA4MzQsCisgICAgODM3LAorICAgIDgxMTUsCisgICAgOTQ1LAorICAgIDk1MywKKyAgICA5MTMsCisgICAgOTIxLAorICAgIDgxMjQsCisgICAgODEyNiwKKyAgICA5NTMsCisgICAgOTIxLAorICAgIDgxMzAsCisgICAgODA1MiwKKyAgICA5NTMsCisgICAgODEzOCwKKyAgICA5MjEsCisgICAgODEzOCwKKyAgICA4MzcsCisgICAgODEzMSwKKyAgICA5NTEsCisgICAgOTUzLAorICAgIDkxOSwKKyAgICA5MjEsCisgICAgODE0MCwKKyAgICA4MTMyLAorICAgIDk0MiwKKyAgICA5NTMsCisgICAgOTA1LAorICAgIDkyMSwKKyAgICA5MDUsCisgICAgODM3LAorICAgIDgxMzQsCisgICAgOTUxLAorICAgIDgzNCwKKyAgICA5MTksCisgICAgODM0LAorICAgIDgxMzUsCisgICAgOTUxLAorICAgIDgzNCwKKyAgICA5NTMsCisgICAgOTE5LAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgOTE5LAorICAgIDgzNCwKKyAgICA4MzcsCisgICAgODEzMSwKKyAgICA5NTEsCisgICAgOTUzLAorICAgIDkxOSwKKyAgICA5MjEsCisgICAgODE0MCwKKyAgICA4MTQ2LAorICAgIDk1MywKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDkyMSwKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDgxNDcsCisgICAgOTUzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTIxLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgODE1MCwKKyAgICA5NTMsCisgICAgODM0LAorICAgIDkyMSwKKyAgICA4MzQsCisgICAgODE1MSwKKyAgICA5NTMsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA4MTYyLAorICAgIDk2NSwKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDkzMywKKyAgICA3NzYsCisgICAgNzY4LAorICAgIDgxNjMsCisgICAgOTY1LAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTMzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgODE2NCwKKyAgICA5NjEsCisgICAgNzg3LAorICAgIDkyOSwKKyAgICA3ODcsCisgICAgODE2NiwKKyAgICA5NjUsCisgICAgODM0LAorICAgIDkzMywKKyAgICA4MzQsCisgICAgODE2NywKKyAgICA5NjUsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA5MzMsCisgICAgNzc2LAorICAgIDgzNCwKKyAgICA4MTc4LAorICAgIDgwNjAsCisgICAgOTUzLAorICAgIDgxODYsCisgICAgOTIxLAorICAgIDgxODYsCisgICAgODM3LAorICAgIDgxNzksCisgICAgOTY5LAorICAgIDk1MywKKyAgICA5MzcsCisgICAgOTIxLAorICAgIDgxODgsCisgICAgODE4MCwKKyAgICA5NzQsCisgICAgOTUzLAorICAgIDkxMSwKKyAgICA5MjEsCisgICAgOTExLAorICAgIDgzNywKKyAgICA4MTgyLAorICAgIDk2OSwKKyAgICA4MzQsCisgICAgOTM3LAorICAgIDgzNCwKKyAgICA4MTgzLAorICAgIDk2OSwKKyAgICA4MzQsCisgICAgOTUzLAorICAgIDkzNywKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDkzNywKKyAgICA4MzQsCisgICAgODM3LAorICAgIDgxNzksCisgICAgOTY5LAorICAgIDk1MywKKyAgICA5MzcsCisgICAgOTIxLAorICAgIDgxODgsCisgICAgNjQyNTYsCisgICAgMTAyLAorICAgIDEwMiwKKyAgICA3MCwKKyAgICA3MCwKKyAgICA3MCwKKyAgICAxMDIsCisgICAgNjQyNTcsCisgICAgMTAyLAorICAgIDEwNSwKKyAgICA3MCwKKyAgICA3MywKKyAgICA3MCwKKyAgICAxMDUsCisgICAgNjQyNTgsCisgICAgMTAyLAorICAgIDEwOCwKKyAgICA3MCwKKyAgICA3NiwKKyAgICA3MCwKKyAgICAxMDgsCisgICAgNjQyNTksCisgICAgMTAyLAorICAgIDEwMiwKKyAgICAxMDUsCisgICAgNzAsCisgICAgNzAsCisgICAgNzMsCisgICAgNzAsCisgICAgMTAyLAorICAgIDEwNSwKKyAgICA2NDI2MCwKKyAgICAxMDIsCisgICAgMTAyLAorICAgIDEwOCwKKyAgICA3MCwKKyAgICA3MCwKKyAgICA3NiwKKyAgICA3MCwKKyAgICAxMDIsCisgICAgMTA4LAorICAgIDY0MjYxLAorICAgIDExNSwKKyAgICAxMTYsCisgICAgODMsCisgICAgODQsCisgICAgODMsCisgICAgMTE2LAorICAgIDY0MjYyLAorICAgIDExNSwKKyAgICAxMTYsCisgICAgODMsCisgICAgODQsCisgICAgODMsCisgICAgMTE2LAorICAgIDY0Mjc1LAorICAgIDEzOTYsCisgICAgMTM5OCwKKyAgICAxMzQ4LAorICAgIDEzNTAsCisgICAgMTM0OCwKKyAgICAxMzk4LAorICAgIDY0Mjc2LAorICAgIDEzOTYsCisgICAgMTM4MSwKKyAgICAxMzQ4LAorICAgIDEzMzMsCisgICAgMTM0OCwKKyAgICAxMzgxLAorICAgIDY0Mjc3LAorICAgIDEzOTYsCisgICAgMTM4NywKKyAgICAxMzQ4LAorICAgIDEzMzksCisgICAgMTM0OCwKKyAgICAxMzg3LAorICAgIDY0Mjc4LAorICAgIDE0MDYsCisgICAgMTM5OCwKKyAgICAxMzU4LAorICAgIDEzNTAsCisgICAgMTM1OCwKKyAgICAxMzk4LAorICAgIDY0Mjc5LAorICAgIDEzOTYsCisgICAgMTM4OSwKKyAgICAxMzQ4LAorICAgIDEzNDEsCisgICAgMTM0OCwKKyAgICAxMzg5LAogfTsKIAogLyogdHlwZSBpbmRleGVzICovCkBAIC0xOTUsNzIgKzEwMDMsNzIgQEAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM0LCAzNSwgMzYsIDM3LCAKICAgICAzOCwgMzksIDM0LCAzNCwgMzQsIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCAKICAgICA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NCwgNjQsIDY1LCA2NiwgNjcsIDY0LCAKLSAgICA2NCwgNjQsIDY0LCA2OCwgNjksIDY0LCA2NCwgNjQsIDY0LCA2NCwgNjQsIDcwLCAxNywgNzEsIDcyLCA3MywgNzQsIDc1LCAKLSAgICA3NiwgNjQsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA2NCwgNjQsIDg0LCA4NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgODYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICA2NCwgNjQsIDY0LCA2OCwgNjksIDY0LCA2NCwgNjQsIDY0LCA2NCwgNjQsIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCAKKyAgICA3NywgNjQsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA2NCwgNjQsIDg1LCA4NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgODcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODgsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg4LCA4OSwgOTAsIDkxLCAzNCwgMzQsIDM0LCA5MiwgMzQsIDM0LCAKLSAgICAzNCwgOTMsIDk0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDk1LCAzNCwgMzQsIDM0LCA5NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDk3LCA5OCwgOTksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMCwgMTAxLCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAxMDMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMTAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDEwMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA2LCAxMDcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA4LCAxMDksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTEwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAxMTEsIDM0LCAzNCwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg5LCA5MCwgOTEsIDkyLCAzNCwgMzQsIDM0LCA5MywgMzQsIDM0LCAKKyAgICAzNCwgOTQsIDk1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDk2LCAzNCwgMzQsIDM0LCA5NywgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDk4LCA5OSwgMTAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDEsIDEwMiwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMTA0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNSwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDEwMSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAxMDQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNywgMTA4LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwOSwgMTEwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDExMSwgMTEyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDExMywgMzQsIDM0LCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCAKKyAgICAxMjMsIDEyNCwgMTI1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAxMjQsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNiwgMTI3LCAxMjgsIAotICAgIDEyOSwgMTMwLCAxMzEsIDEzMiwgMzQsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgCi0gICAgMTcsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNDgsIDE3LCAxNDksIDE3LCAKLSAgICAxNTAsIDE3LCAxNTEsIDE3LCAxNTIsIDE3LCAxNywgMTcsIDE1MywgMTcsIDE3LCAxNywgMTU0LCAxNTUsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1NiwgMTcsIDE1NywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1OCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAzNCwgMzQsIDM0LCAxNTksIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDY0LCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE3LCAxNjUsIDE3LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAKLSAgICAxNzIsIDE3MywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTc0LCAxNzUsIDE3NiwgCi0gICAgMTc3LCAxNzgsIDE3LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgNjUsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTg3LCAxODgsIDE4OSwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODYsIDE5MCwgMzQsIDE5MSwgCi0gICAgMTkyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAxMjYsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIAorICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCisgICAgNzEsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNTAsIDcxLCAxNTEsIDE1MiwgCisgICAgMTUzLCA3MSwgMTU0LCA3MSwgMTU1LCA3MSwgNzEsIDcxLCAxNTYsIDcxLCA3MSwgNzEsIDE1NywgMTU4LCAxNTksIDE2MCwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTYxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjIsIDcxLCAKKyAgICAxNjMsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjQsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMTY1LCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjYsIDE2NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjgsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDY0LCAxNjksIDE3MCwgMTcxLCAxNzIsIDcxLCAxNzMsIDcxLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCisgICAgMTc5LCAxODAsIDE4MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxODIsIDE4MywgNzEsIDcxLCAxODQsIAorICAgIDE4NSwgMTg2LCAxODcsIDE4OCwgNzEsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCA2NSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxOTcsIDE5OCwgCisgICAgMTk5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjAwLCAKKyAgICAzNCwgMjAxLCAyMDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTMsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTk0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjAzLCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNiwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCkBAIC0yNjgsODYwICsxMDc2LDg2MiBAQAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTk3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAxOTgsIDM0LCAxOTksIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAzNCwgMTkzLCAzNCwgMzQsIDE5OSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMjAwLCAxNywgMjAxLCAyMDIsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDIwMywgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAyMDMsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMDgsIDM0LCAyMDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMjAzLCAzNCwgMzQsIDIwOSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgMjEwLCA3MSwgMjExLCAyMTIsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDIxMywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyMTMsIAogfTsKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgaW5kZXgyW10gPSB7CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgMywgMywgMywgMywgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMywgMywgMywgMiwgNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCA1LCA1LCA1LCA1LCAxNywgNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1LCA1LCAKKyAgICAxLCAxLCAxLCAxLCAzLCAzLCAzLCAyLCA0LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA2LCAxOCwgNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCA1LCAKICAgICA1LCA1LCAxLCAxLCAxLCAxLCAxLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOSwgNSwgNSwgCi0gICAgMSwgNSwgNSwgNSwgNSwgMjAsIDIxLCA1LCAyMiwgNSwgMTcsIDUsIDIzLCAxOSwgNSwgMjQsIDI0LCAyNCwgNSwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCA1LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTksIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyOCwgMjksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAzMCwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMzEsIDMyLCAzMywgMjYsIDI3LCAyNiwgMjcsIDM0LCAyNiwgCi0gICAgMjcsIDM1LCAzNSwgMjYsIDI3LCAxOSwgMzYsIDM3LCAzOCwgMjYsIDI3LCAzNSwgMzksIDQwLCA0MSwgNDIsIDI2LCAyNywgCi0gICAgNDMsIDE5LCA0MSwgNDQsIDQ1LCA0NiwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNDcsIDI2LCAyNywgNDcsIDE5LCAxOSwgCi0gICAgMjYsIDI3LCA0NywgMjYsIDI3LCA0OCwgNDgsIDI2LCAyNywgMjYsIDI3LCA0OSwgMjYsIDI3LCAxOSwgNTAsIDI2LCAyNywgCi0gICAgMTksIDUxLCA1MCwgNTAsIDUwLCA1MCwgNTIsIDUzLCA1NCwgNTIsIDUzLCA1NCwgNTIsIDUzLCA1NCwgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDU1LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgNTIsIDUzLCA1NCwgCi0gICAgMjYsIDI3LCA1NiwgNTcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA1OCwgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDU5LCAyNiwgCi0gICAgMjcsIDYwLCA2MSwgNjIsIDYyLCAyNiwgMjcsIDYzLCA2NCwgNjUsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDE5LCA3MSwgNzEsIDE5LCA3MiwgMTksIDczLCAxOSwgMTksIDE5LCAxOSwgCi0gICAgNzEsIDE5LCAxOSwgNzQsIDE5LCA3NSwgMTksIDE5LCA3NiwgNzcsIDE5LCA3OCwgMTksIDE5LCAxOSwgNzcsIDE5LCA3OSwgCi0gICAgODAsIDE5LCAxOSwgODEsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA4MiwgMTksIDE5LCA4MywgMTksIDE5LCA4MywgCi0gICAgMTksIDE5LCAxOSwgMTksIDgzLCA4NCwgODUsIDg1LCA4NiwgMTksIDE5LCAxOSwgMTksIDE5LCA4NywgMTksIDUwLCAxOSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgMjAsIDUsIDUsIAorICAgIDIxLCA1LCA2LCA1LCA1LCAyMiwgMjMsIDYsIDI0LCA1LCAyNSwgNiwgMjYsIDIwLCA1LCAyNywgMjcsIDI3LCA1LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyOCwgMTksIDE5LCAxOSwgMTksIDE5LCAKICAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAyOSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzIsIDMzLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM0LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM2LCAzNywgMzgsIDMwLCAzMSwgMzAsIDMxLCAzOSwgCisgICAgMzAsIDMxLCA0MCwgNDAsIDMwLCAzMSwgMjAsIDQxLCA0MiwgNDMsIDMwLCAzMSwgNDAsIDQ0LCA0NSwgNDYsIDQ3LCAzMCwgCisgICAgMzEsIDQ4LCAyMCwgNDYsIDQ5LCA1MCwgNTEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDUyLCAzMCwgMzEsIDUyLCAyMCwgCisgICAgMjAsIDMwLCAzMSwgNTIsIDMwLCAzMSwgNTMsIDUzLCAzMCwgMzEsIDMwLCAzMSwgNTQsIDMwLCAzMSwgMjAsIDU1LCAzMCwgCisgICAgMzEsIDIwLCA1NiwgNTUsIDU1LCA1NSwgNTUsIDU3LCA1OCwgNTksIDU3LCA1OCwgNTksIDU3LCA1OCwgNTksIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2MCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNjEsIDU3LCA1OCwgCisgICAgNTksIDMwLCAzMSwgNjIsIDYzLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNjQsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2NSwgCisgICAgMzAsIDMxLCA2NiwgNjcsIDY4LCA2OCwgMzAsIDMxLCA2OSwgNzAsIDcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgNzIsIDczLCA3NCwgNzUsIDc2LCAyMCwgNzcsIDc3LCAyMCwgNzgsIDIwLCA3OSwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDc3LCAyMCwgMjAsIDgwLCAyMCwgODEsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDIwLCAyMCwgMjAsIDg0LCAyMCwgCisgICAgODYsIDg3LCAyMCwgMjAsIDg4LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgODksIDIwLCAyMCwgOTAsIDIwLCAyMCwgCisgICAgOTAsIDIwLCAyMCwgMjAsIDIwLCA5MCwgOTEsIDkyLCA5MiwgOTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTQsIDIwLCA1NSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk1LCA5NSwgNiwgNiwgNiwgNiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgCisgICAgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NiwgNiwgOTYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDk3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgOTYsIDYsIDMwLCAzMSwgMCwgMCwgCisgICAgOTgsIDUwLCA1MCwgNTAsIDUsIDAsIDAsIDAsIDAsIDAsIDYsIDYsIDk5LCAyNSwgMTAwLCAxMDAsIDEwMCwgMCwgMTAxLCAwLCAKKyAgICAxMDIsIDEwMiwgMTAzLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEwNCwgMTA1LCAxMDUsIDEwNSwgCisgICAgMTA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDEwNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTA4LCAxMDksIDEwOSwgMTEwLCAxMTEsIDExMiwgCisgICAgMTEzLCAxMTMsIDExMywgMTE0LCAxMTUsIDExNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTE3LCAxMTgsIDExOSwgMjAsIAorICAgIDEyMCwgMTIxLCA1LCAzMCwgMzEsIDEyMiwgMzAsIDMxLCAyMCwgNjQsIDY0LCA2NCwgMTIzLCAxMjMsIDEyMywgMTIzLCAKKyAgICAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxNywgMTcsIDE3LCAKICAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgODgsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDI2LCAyNywgMjYsIDI3LCA1MCwgNSwgMjYsIDI3LCAwLCAwLCA4OSwgCi0gICAgNDUsIDQ1LCA0NSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgOTAsIDE3LCA5MSwgOTEsIDkxLCAwLCA5MiwgMCwgOTMsIDkzLCAKLSAgICAxOSwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAwLCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCA5NCwgOTUsIDk1LCA5NSwgMTksIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgOTYsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDk3LCA5OCwgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDIsIDEwMiwgMTAzLCAKLSAgICAxMDQsIDEwNSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTA2LCAxMDcsIDEwOCwgMTksIDEwOSwgMTEwLCA1LCAyNiwgMjcsIAotICAgIDExMSwgMjYsIDI3LCAxOSwgNTgsIDU4LCA1OCwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgCi0gICAgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxMTMsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMTE0LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDAsIDAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTksIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDE3LCA1LCAxNywgMTcsIDUsIDE3LCAxNywgNSwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgMCwgMCwgNSwgNSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDUsIDUsIDUsIDUsIDUwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCAxNywgMTcsIDUsIAotICAgIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgNTAsIAotICAgIDUsIDUsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAxLCA1MCwgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgNTAsIDUwLCA1LCA1LCA1LCA1LCA1MCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDE3LCAxNywgMTcsIDUwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgCisgICAgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMjUsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDAsIDk2LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI5LCAwLCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCA1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgNSwgMjUsIDI1LCA1LCAyNSwgMjUsIAorICAgIDUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDcsIDgsIAorICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDIxLCA1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA5NiwgOTYsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAyMSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA5NiwgOTYsIDUsIDUsIDUsIDUsIDk2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDI1LCAwLCAxOCwgCisgICAgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIAorICAgIDE4LCAwLCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMjUsIDI1LCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMTgsIDE4LCAwLCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAKKyAgICAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgCisgICAgMTMwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDk2LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgCisgICAgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDk2LCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMjUsIDI1LCAyNSwgMiwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxMzIsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDk2LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgCisgICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCA1LCA1LCA2LCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMCwgMCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgCi0gICAgMTcsIDE3LCAwLCAwLCAxNywgMTcsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgMCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgCi0gICAgNTAsIDUsIDUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCAwLCAxNywgMCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAxNywgMTcsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE3LCAxNywgNTAsIDUwLCA1MCwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAKLSAgICAxNywgMTcsIDE3LCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAwLCAwLCAxNywgMTcsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgCi0gICAgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDUsIDUwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNywgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAxNywgMCwgMCwgNTAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNywgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgMCwgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDUwLCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDAsIDAsIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMCwgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDExNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDAsIDAsIAotICAgIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCAxMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIAotICAgIDAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNywgOCwgCi0gICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDE3LCAKLSAgICA1LCAxNywgNSwgMTcsIDUsIDUsIDUsIDUsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKLSAgICAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDUsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCAxNDIsIDIwLCAyMCwgMjAsIDE0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDE0NCwgCisgICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDIwLCAyMCwgMTUwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTUxLCAxNTEsIAorICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKKyAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAwLCAwLCAKKyAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCisgICAgMTUyLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAorICAgIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMCwgMCwgMTUyLCAxNTIsIDE1MiwgCisgICAgMTUyLCAxNTIsIDE1MiwgMCwgMCwgMTUzLCAxNTEsIDE1NCwgMTUxLCAxNTUsIDE1MSwgMTU2LCAxNTEsIDAsIDE1MiwgMCwgCisgICAgMTUyLCAwLCAxNTIsIDAsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAKKyAgICAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTcsIDE1NywgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTksIDE1OSwgCisgICAgMTYwLCAxNjAsIDE2MSwgMTYxLCAxNjIsIDE2MiwgMCwgMCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAKKyAgICAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgCisgICAgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIAorICAgIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMTUxLCAKKyAgICAxNTEsIDIxMSwgMjEyLCAyMTMsIDAsIDIxNCwgMjE1LCAxNTIsIDE1MiwgMjE2LCAyMTYsIDIxNywgNiwgMjE4LCA2LCA2LCAKKyAgICA2LCAyMTksIDIyMCwgMjIxLCAwLCAyMjIsIDIyMywgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDYsIDYsIDYsIDE1MSwgCisgICAgMTUxLCAyMjYsIDIyNywgMCwgMCwgMjI4LCAyMjksIDE1MiwgMTUyLCAyMzAsIDIzMCwgMCwgNiwgNiwgNiwgMTUxLCAxNTEsIAorICAgIDIzMSwgMjMyLCAyMzMsIDExOSwgMjM0LCAyMzUsIDE1MiwgMTUyLCAyMzYsIDIzNiwgMTIyLCA2LCA2LCA2LCAwLCAwLCAKKyAgICAyMzcsIDIzOCwgMjM5LCAwLCAyNDAsIDI0MSwgMjQyLCAyNDIsIDI0MywgMjQzLCAyNDQsIDYsIDYsIDAsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI0NSwgOTUsIDAsIDAsIAorICAgIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDUsIDUsIDUsIDUsIDUsIDk1LCAyNDUsIDI2LCAyMiwgMjMsIDI0NiwgCisgICAgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDUsIDUsIDUsIDUsIDUsIDAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAotICAgIDE0LCAxNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMTcsIDYsIDcsIDgsIAotICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTE5LCAxMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDEyOCwgMTI4LCAxMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgNSwgNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMSwgMSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgNSwgNSwgNSwgNTAsIDUsIDUsIDUsIDUsIDUwLCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDIsIDAsIDYsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMTE5LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAxNywgNiwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAxNywgMTcsIDE3LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgNTAsIDUwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA2LCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCA1LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTAsIDEyOSwgCi0gICAgMTksIDE5LCAxOSwgMTMwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDE5LCAxOSwgMTksIDE5LCAxMzEsIDE5LCAxOSwgMTMyLCAKLSAgICAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzNCwgCi0gICAgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAwLCAwLCAKLSAgICAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAwLCAwLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIAotICAgIDEzMywgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTMzLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzMsIDEzMywgMCwgMCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMCwgMCwgMTksIDEzMywgMTksIAotICAgIDEzMywgMTksIDEzMywgMTksIDEzMywgMCwgMTM0LCAwLCAxMzQsIDAsIDEzNCwgMCwgMTM0LCAxMzMsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNSwgCi0gICAgMTM1LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNywgMTM3LCAxMzgsIDEzOCwgMTM5LCAxMzksIDE0MCwgMTQwLCAwLCAwLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxMzMsIDEzMywgMTksIDE0MiwgMTksIDAsIDE5LCAxOSwgMTM0LCAxMzQsIAotICAgIDE0MywgMTQzLCAxNDQsIDUsIDE0NSwgNSwgNSwgNSwgMTksIDE0MiwgMTksIDAsIDE5LCAxOSwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDQsIDUsIDUsIDUsIDEzMywgMTMzLCAxOSwgMTksIDAsIDAsIDE5LCAxOSwgMTM0LCAxMzQsIDE0NywgMTQ3LCAwLCAKLSAgICA1LCA1LCA1LCAxMzMsIDEzMywgMTksIDE5LCAxOSwgMTA4LCAxOSwgMTksIDEzNCwgMTM0LCAxNDgsIDE0OCwgMTExLCA1LCAKLSAgICA1LCA1LCAwLCAwLCAxOSwgMTQyLCAxOSwgMCwgMTksIDE5LCAxNDksIDE0OSwgMTUwLCAxNTAsIDE0NCwgNSwgNSwgMCwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMSwgMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMywgMywgMSwgMSwgMSwgMSwgMSwgMiwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMTUxLCA1MCwgMCwgMCwgMTUyLCAxNTMsIAotICAgIDE1NCwgMTU1LCAxNTYsIDE1NywgNSwgNSwgNSwgNSwgNSwgNTAsIDE1MSwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgCi0gICAgMTU1LCAxNTYsIDE1NywgNSwgNSwgNSwgNSwgNSwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1LCA1LCA1LCA1LCAxNywgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCAxMDIsIAotICAgIDUsIDUsIDE5LCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDE5LCA1LCAxMDIsIDUsIDUsIDE1OCwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgNSwgMTU5LCA1LCAxMDIsIDUsIDE2MCwgCi0gICAgMTYxLCAxMDIsIDEwMiwgMTU4LCAxOSwgMTAyLCAxMDIsIDE2MiwgMTAyLCAxOSwgNTAsIDUwLCA1MCwgNTAsIDE5LCA1LCA1LCAKLSAgICAxOSwgMTksIDEwMiwgMTAyLCA1LCA1LCA1LCA1LCA1LCAxMDIsIDE5LCAxOSwgMTksIDE5LCA1LCA1LCA1LCA1LCAxNjMsIDUsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAxNjQsIDE2NCwgCi0gICAgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIAotICAgIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAKLSAgICAxNjUsIDE2NSwgMTI4LCAxMjgsIDEyOCwgMjYsIDI3LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDI0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNiwgNiwgNiwgNiwgMjUsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDExMywgNSwgNSwgCisgICAgNSwgNSwgMTEzLCA1LCA1LCAyMCwgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAyMCwgNSwgMTEzLCA1LCAKKyAgICA1LCAyNTIsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCA1LCA1LCA1LCA1LCA1LCAxMTMsIDUsIDI1MywgNSwgMTEzLCAKKyAgICA1LCAyNTQsIDI1NSwgMTEzLCAxMTMsIDI1MiwgMjAsIDExMywgMTEzLCAyNTYsIDExMywgMjAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyMCwgNSwgNSwgMjAsIDIwLCAxMTMsIDExMywgNSwgNSwgNSwgNSwgNSwgMTEzLCAyMCwgMjAsIDIwLCAyMCwgNSwgNSwgNSwgCisgICAgNSwgMjU3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIAorICAgIDI1OCwgMjU4LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKKyAgICAyNTksIDI1OSwgMjU5LCAyNTksIDE0MSwgMTQxLCAxNDEsIDMwLCAzMSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0xMTM1LDYzMiArMTk0NSw2ODQgQEAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgCi0gICAgMTU2LCAxNTcsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAKLSAgICAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgCi0gICAgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY3LCAxNjcsIAotICAgIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAKLSAgICAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE1MSwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAKLSAgICAxNTEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAKKyAgICAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIAorICAgIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIAorICAgIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgCisgICAgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjQ1LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIAorICAgIDI0NSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjMsIAotICAgIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgCi0gICAgMTU2LCAxNTcsIDI0LCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIAorICAgIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgCisgICAgMjUwLCAyNTEsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDAsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAwLCAyNiwgMjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE5LCAyNiwgMjcsIDE5LCAyNiwgMjcsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDUwLCAxNzcsIDE3NywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAyNiwgMjcsIDI2LCAyNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjQsIAotICAgIDUsIDUsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgCi0gICAgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIAotICAgIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDg5LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAyLCA1LCA1LCA1LCA1LCA1MCwgNTAsIDEyOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAxMjgsIDEyOCwgCi0gICAgMTI4LCA1MCwgNTAsIDUsIDUsIDUsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgMTcsIDE3LCA1LCA1LCA1MCwgNTAsIDUwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3OSwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCAxNzksIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgMTc5LCAKLSAgICAxNzksIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgMTc5LCAxNzksIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgMTc5LCAxNzksIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMzAsIDMxLCAyNjIsIDI2MywgCisgICAgMjY0LCAyNjUsIDI2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjY3LCAyNjgsIDI2OSwgMjcwLCAyMCwgMzAsIDMxLCAKKyAgICAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgMjcxLCAyNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAyMCwgNSwgNSwgNSwgNSwgNSwgNSwgMzAsIDMxLCAzMCwgMzEsIDI1LCAyNSwgMjUsIDMwLCAzMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5NiwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3MywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNTAsIDE3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNywgMTcsIDUsIDUwLCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDUwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDI2LCAyNywgMjYsIDI3LCAxODAsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA1MCwgNSwgNSwgMjYsIDI3LCAxODEsIDE5LCAwLCAyNiwgMjcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgNTAsIAotICAgIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTAsIAotICAgIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDUsIDUsIAotICAgIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNTAsIDE3LCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDE3LCAxNywgMTcsIDUwLCA1MCwgMTcsIDE3LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3LCAxNywgNTAsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgMTcsIDE3LCAwLCAwLCAKLSAgICA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA4OSwgODksIDg5LCA4OSwgODksIDg5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDg5LCA4OSwgNSwgNSwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAxNywgMTcsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgCi0gICAgMTcsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDg5LCA1MCwgODksIDUwLCA4OSwgMCwgODksIDUwLCA4OSwgNTAsIDg5LCA1MCwgCi0gICAgODksIDUwLCA4OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCA1LCA1LCA1LCA1LCAxNywgNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDExNywgMTE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMSwgMSwgMSwgNSwgNSwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAyNCwgMjQsIDI0LCAyNCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDIsIDUsIDUsIDUsIDUsIDk2LCA1NSwgMTQxLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1LCA5NiwgCisgICAgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDk2LCA1NSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDYsIDYsIDk2LCA5NiwgNTUsIAorICAgIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDUsIDk2LCA5NiwgOTYsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1LCA1LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjc0LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI3NCwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDI3NCwgMjc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDI0LCAyNCwgMjQsIDI0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDEyOCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxMjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1NSwgMjUsIDYsIDYsIDYsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA5NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgNiwgNiwgNiwgNiwgNiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNiwgNiwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDI3NSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDk2LCA2LCA2LCAzMCwgMzEsIDI3NiwgMjAsIDAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NSwgOTUsIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgCisgICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDk2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIAotICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAKLSAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgCi0gICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKLSAgICAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgNSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIAotICAgIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDE3LCAyMywgMjAsIDIxLCAxNTIsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDI0LCAyNCwgNSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgOTYsIDUsIDUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMTgsIDE4LCA1LCA1LCA1NSwgOTYsIDk2LCAKKyAgICAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAKKyAgICAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDE3LCAxNywgMTcsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDEsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI3OCwgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI5MCwgMjkwLCAyOTAsIDI5MCwgMjkwLCAyOTAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTU4LCAxNTgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTU4LCAxNTgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyOTAsIDI5MCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgCisgICAgMTgsIDUsIDUsIDYsIDAsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI5MCwgNTUsIDI5MCwgNTUsIDI5MCwgMCwgMjkwLCA1NSwgMjkwLCA1NSwgCisgICAgMjkwLCA1NSwgMjkwLCA1NSwgMjkwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNiwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNiwgMTgsIDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyOTEsIDI5MSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDUsIDUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDI3LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKKyAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgCisgICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkzLCAyOTMsIAorICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKKyAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgCisgICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI2LCAyMiwgMjMsIDI0NiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgCisgICAgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1MiwgMjUyLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDI1MiwgMjUyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE3NzUsMjcyICsyNjM3LDI4NiBAQAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMCwgMTAyLCAxMDIsIDAsIDAsIDEwMiwgMCwgMCwgMTAyLCAxMDIsIDAsIDAsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgCi0gICAgMTksIDE5LCAwLCAxOSwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMCwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMTAyLCAwLCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxMDIsIDE5LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MSwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIAotICAgIDE1NCwgMTU1LCAxNTYsIDE1NywgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAwLCAxMTMsIDExMywgMCwgMCwgMTEzLCAwLCAwLCAKKyAgICAxMTMsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMjAsIDIwLCAyMCwgMjAsIDAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMCwgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAwLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDAsIDAsIDAsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMjAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ1LCAyNDUsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgCisgICAgMjUwLCAyNTEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAogICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCAwLCA1LCAwLCA1LCAwLCA1LCAwLCA1LCAKLSAgICA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCAwLCA1LCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMjEwMCw2ICsyOTc2LDEwIEBACiAgICAgY2FzZSAweDEwMThBOgogICAgIGNhc2UgMHgxMDRBMDoKICAgICBjYXNlIDB4MTEwNjY6CisgICAgY2FzZSAweDExMEYwOgorICAgIGNhc2UgMHgxMTEzNjoKKyAgICBjYXNlIDB4MTExRDA6CisgICAgY2FzZSAweDExNkMwOgogICAgIGNhc2UgMHgxRDdDRToKICAgICBjYXNlIDB4MUQ3RDg6CiAgICAgY2FzZSAweDFEN0UyOgpAQCAtMjE4Nyw2ICszMDY3LDEwIEBACiAgICAgY2FzZSAweDEwRTYwOgogICAgIGNhc2UgMHgxMTA1MjoKICAgICBjYXNlIDB4MTEwNjc6CisgICAgY2FzZSAweDExMEYxOgorICAgIGNhc2UgMHgxMTEzNzoKKyAgICBjYXNlIDB4MTExRDE6CisgICAgY2FzZSAweDExNkMxOgogICAgIGNhc2UgMHgxMjQxNToKICAgICBjYXNlIDB4MTI0MUU6CiAgICAgY2FzZSAweDEyNDJDOgpAQCAtMjI2Myw2ICszMTQ3LDcgQEAKICAgICBjYXNlIDB4Mjc5MzoKICAgICBjYXNlIDB4MzAzODoKICAgICBjYXNlIDB4MzIyOToKKyAgICBjYXNlIDB4MzI0ODoKICAgICBjYXNlIDB4MzI4OToKICAgICBjYXNlIDB4NEVDMDoKICAgICBjYXNlIDB4NTM0MToKQEAgLTI0ODMsNiArMzM2OCwxMCBAQAogICAgIGNhc2UgMHgxMEU2MToKICAgICBjYXNlIDB4MTEwNTM6CiAgICAgY2FzZSAweDExMDY4OgorICAgIGNhc2UgMHgxMTBGMjoKKyAgICBjYXNlIDB4MTExMzg6CisgICAgY2FzZSAweDExMUQyOgorICAgIGNhc2UgMHgxMTZDMjoKICAgICBjYXNlIDB4MTI0MDA6CiAgICAgY2FzZSAweDEyNDE2OgogICAgIGNhc2UgMHgxMjQxRjoKQEAgLTI1MTUsNiArMzQwNCw3IEBACiAgICAgY2FzZSAweDI0OUI6CiAgICAgY2FzZSAweDI0RjQ6CiAgICAgY2FzZSAweDMwMzk6CisgICAgY2FzZSAweDMyNDk6CiAgICAgY2FzZSAweDUzNDQ6CiAgICAgY2FzZSAweDVFRkY6CiAgICAgY2FzZSAweDEwMTExOgpAQCAtMjYyNiw2ICszNTE2LDEwIEBACiAgICAgY2FzZSAweDEwRTYyOgogICAgIGNhc2UgMHgxMTA1NDoKICAgICBjYXNlIDB4MTEwNjk6CisgICAgY2FzZSAweDExMEYzOgorICAgIGNhc2UgMHgxMTEzOToKKyAgICBjYXNlIDB4MTExRDM6CisgICAgY2FzZSAweDExNkMzOgogICAgIGNhc2UgMHgxMjQwMToKICAgICBjYXNlIDB4MTI0MDg6CiAgICAgY2FzZSAweDEyNDE3OgpAQCAtMjY3MSw2ICszNTY1LDcgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84LjA7CiAgICAgY2FzZSAweDEzNzQ6CiAgICAgY2FzZSAweDMwM0E6CisgICAgY2FzZSAweDMyNEE6CiAgICAgY2FzZSAweDMyNUE6CiAgICAgY2FzZSAweDUzNDU6CiAgICAgY2FzZSAweDEwMTEyOgpAQCAtMjc3MCw2ICszNjY1LDEwIEBACiAgICAgY2FzZSAweDEwRTYzOgogICAgIGNhc2UgMHgxMTA1NToKICAgICBjYXNlIDB4MTEwNkE6CisgICAgY2FzZSAweDExMEY0OgorICAgIGNhc2UgMHgxMTEzQToKKyAgICBjYXNlIDB4MTExRDQ6CisgICAgY2FzZSAweDExNkM0OgogICAgIGNhc2UgMHgxMjQwMjoKICAgICBjYXNlIDB4MTI0MDk6CiAgICAgY2FzZSAweDEyNDBGOgpAQCAtMjc5OSw2ICszNjk4LDcgQEAKICAgICBjYXNlIDB4MjE1ODoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDQuMC81LjA7CiAgICAgY2FzZSAweDEzNzU6CisgICAgY2FzZSAweDMyNEI6CiAgICAgY2FzZSAweDMyQjU6CiAgICAgY2FzZSAweDUzNEM6CiAgICAgY2FzZSAweDEwMTEzOgpAQCAtMjkwMCw2ICszODAwLDEwIEBACiAgICAgY2FzZSAweDEwRTY0OgogICAgIGNhc2UgMHgxMTA1NjoKICAgICBjYXNlIDB4MTEwNkI6CisgICAgY2FzZSAweDExMEY1OgorICAgIGNhc2UgMHgxMTEzQjoKKyAgICBjYXNlIDB4MTExRDU6CisgICAgY2FzZSAweDExNkM1OgogICAgIGNhc2UgMHgxMjQwMzoKICAgICBjYXNlIDB4MTI0MEE6CiAgICAgY2FzZSAweDEyNDEwOgpAQCAtMjkzMSw2ICszODM1LDcgQEAKICAgICBjYXNlIDB4MjE2QzoKICAgICBjYXNlIDB4MjE3QzoKICAgICBjYXNlIDB4MjE4NjoKKyAgICBjYXNlIDB4MzI0QzoKICAgICBjYXNlIDB4MzJCRjoKICAgICBjYXNlIDB4MTAxMTQ6CiAgICAgY2FzZSAweDEwMTQ0OgpAQCAtMzAzNCw2ICszOTM5LDEwIEBACiAgICAgY2FzZSAweDEwRTY1OgogICAgIGNhc2UgMHgxMTA1NzoKICAgICBjYXNlIDB4MTEwNkM6CisgICAgY2FzZSAweDExMEY2OgorICAgIGNhc2UgMHgxMTEzQzoKKyAgICBjYXNlIDB4MTExRDY6CisgICAgY2FzZSAweDExNkM2OgogICAgIGNhc2UgMHgxMjQwNDoKICAgICBjYXNlIDB4MTI0MEI6CiAgICAgY2FzZSAweDEyNDExOgpAQCAtMzA1MSw2ICszOTYwLDcgQEAKICAgICBjYXNlIDB4MjBBRUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjA7CiAgICAgY2FzZSAweDEzNzc6CisgICAgY2FzZSAweDMyNEQ6CiAgICAgY2FzZSAweDEwMTE1OgogICAgIGNhc2UgMHgxMEU2RToKICAgICBjYXNlIDB4MTEwNjA6CkBAIC0zMTI0LDYgKzQwMzQsMTAgQEAKICAgICBjYXNlIDB4MTBFNjY6CiAgICAgY2FzZSAweDExMDU4OgogICAgIGNhc2UgMHgxMTA2RDoKKyAgICBjYXNlIDB4MTEwRjc6CisgICAgY2FzZSAweDExMTNEOgorICAgIGNhc2UgMHgxMTFENzoKKyAgICBjYXNlIDB4MTE2Qzc6CiAgICAgY2FzZSAweDEyNDA1OgogICAgIGNhc2UgMHgxMjQwQzoKICAgICBjYXNlIDB4MTI0MTI6CkBAIC0zMTQ2LDYgKzQwNjAsNyBAQAogICAgIGNhc2UgMHgyMTVFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wLzguMDsKICAgICBjYXNlIDB4MTM3ODoKKyAgICBjYXNlIDB4MzI0RToKICAgICBjYXNlIDB4MTAxMTY6CiAgICAgY2FzZSAweDEwRTZGOgogICAgIGNhc2UgMHgxMTA2MToKQEAgLTMyMTcsNiArNDEzMiwxMCBAQAogICAgIGNhc2UgMHgxMEU2NzoKICAgICBjYXNlIDB4MTEwNTk6CiAgICAgY2FzZSAweDExMDZFOgorICAgIGNhc2UgMHgxMTBGODoKKyAgICBjYXNlIDB4MTExM0U6CisgICAgY2FzZSAweDExMUQ4OgorICAgIGNhc2UgMHgxMTZDODoKICAgICBjYXNlIDB4MTI0MDY6CiAgICAgY2FzZSAweDEyNDBEOgogICAgIGNhc2UgMHgxMjQxMzoKQEAgLTMyMzMsNiArNDE1Miw3IEBACiAgICAgY2FzZSAweDFGMTA5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOC4wOwogICAgIGNhc2UgMHgxMzc5OgorICAgIGNhc2UgMHgzMjRGOgogICAgIGNhc2UgMHgxMDExNzoKICAgICBjYXNlIDB4MTBFNzA6CiAgICAgY2FzZSAweDExMDYyOgpAQCAtMzMwNSw2ICs0MjI1LDEwIEBACiAgICAgY2FzZSAweDEwRTY4OgogICAgIGNhc2UgMHgxMTA1QToKICAgICBjYXNlIDB4MTEwNkY6CisgICAgY2FzZSAweDExMEY5OgorICAgIGNhc2UgMHgxMTEzRjoKKyAgICBjYXNlIDB4MTExRDk6CisgICAgY2FzZSAweDExNkM5OgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwppbmRleCAxMzMyM2NmLi5lMDdhZGIyIDEwMDY0NAotLS0gYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYworKysgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwpAQCAtMTU2LDI4ICsxNTYsMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3ZWFrcmVmX3JlcHIoUHlXZWFrUmVmZXJlbmNlICpzZWxmKQogewotICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0gICAgaWYgKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiPHdlYWtyZWYgYXQgJXA7IGRlYWQ+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+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ogYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMzZkNjQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCkBAIC0wLDAgKzEsMjM0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/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+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVhMmZjOAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5ODM0NjA3Ny05MDBjLTRjN2EtODUyZi1hMjM0NzBlMzdiNDB9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnByb3BzIGIvUENidWlsZC9zcWxpdGUzLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZWUwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDE8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFmMDEwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCkBAIC0wLDAgKzEsMjQwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+c3FsaXRlMzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+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+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTNleHQuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ia2lsbF9weXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57NmRlMTA3NDQtZTM5Ni00MGE1LWI0ZTItMWI2OWFhN2M4ZDMxfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjY4MGMxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjZTViNjQ5ZC1hNmY3LTQ0NTktOTQyNS1jODgzNzk1ZDc5ZGZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswZTg0MmZlMi0xNzZiLTRlODMtOWQxZi0wYWQxM2E4NTllZmR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTNleHQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3NsLnZjeHByb2ogYi9QQ2J1aWxkL3NzbC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZmQ3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NzbC52Y3hwcm9qCkBAIC0wLDAgKzEsMjIxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+c3NsPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPk1ha2VGaWxlUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiMTFkNzUwZi1jZDFmLTRhOTYtODVjZS1lNjlhNWM1MjU5Zjl9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvaiBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWQ1Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCkBAIC0wLDAgKzEsMjIyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dW5pY29kZWRhdGE8L1Jvb3ROYW1lc3BhY2U+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+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlNjQwZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2I5MzlhOGYxLWNjZDctNDIwYS05NzRhLTI0MzYwNmRjY2Q3NH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2UyYzA1NWJiLWVjNjItNGJiYy1hYTFjLWQ4OGRhNGQ0YWQxY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC92czl0bzEwLnB5IGIvUENidWlsZC92czl0bzEwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZjgzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3ZzOXRvMTAucHkKQEAgLTAsMCArMSw1NiBAQAorI1J1biB0aGlzIGZpbGUgYWZ0ZXIgYXV0b21hdGljIGNvbnZlcnRzaW9uIG9mIHRoZSBWaXN1YWxTdHVkaW8gMjAwOCBzb2x1dGlvbiBieSBWaXN1YWxTdHVkaW8gMjAxMC4KKyNUaGlzIGNhbiBiZSBkb25lIHdoZW5ldmVyIHRoZSAyMDA4IHNvbHV0aW9uIGNoYW5nZXMuCisjSXQgd2lsbCBtYWtlIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBhbmQgdXBkYXRlcyB0byB0aGUgdmN4cHJvaiBmaWxlcworI3RoZSAucHJvcHMgZmlsZXMgbmVlZCB0byBiZSBtYWludGFpbmVkIGJ5IGhhbmQgaWYgdGhlIC52c3Byb3BzIGZpbGVzIGNoYW5nZQorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCisKK2RlZiB2czl0bzEwKHNyYywgZGVzdCk6CisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihzcmMpOgorICAgICAgICBwYXRoLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIGV4dC5sb3dlcigpIG5vdCBpbiAoJy52Y3hwcm9qJywpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNyYywgbmFtZSkpCisgICAgICAgIGRlc3RuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGVzdCwgbmFtZSkpCisgICAgICAgIHByaW50KCIlcyAtPiAlcyIgJSAoZmlsZW5hbWUsIGRlc3RuYW1lKSkKKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxhc3RsaW5lID0gYiIiCisgICAgICAgIGltcG9ydGdyb3VwID0gRmFsc2UKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmaW46CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46CisgICAgICAgICAgICAgICAgI3JlbW92ZSByZWR1bmRhbnQgbGlua2VyIG91dHB1dCBpbmZvCisgICAgICAgICAgICAgICAgaWYgYiI8T3V0cHV0TGluZT4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgYiI8UHJvZ3JhbURhdGFiYXNlRmlsZT4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgYiI8SW1wb3J0TGlicmFyeT4iIGluIGxpbmUgYW5kIGIiPC9JbXBvcnRMaWJyYXJ5PiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICNhZGQgbmV3IHByb3BlcnR5IHNoZWV0IHRvIHRoZSBweXRob25jb3JlCisgICAgICAgICAgICAgICAgaWYgaW1wb3J0Z3JvdXAgYW5kICJweXRob25jb3JlIiBpbiBuYW1lLmxvd2VyKCk6CisgICAgICAgICAgICAgICAgICAgIGlmIGIiPC9JbXBvcnRHcm91cD4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBiImRlYnVnLnByb3BzIiBpbiBsYXN0bGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoYicgICAgPEltcG9ydCBQcm9qZWN0PSJweXRob25jb3JlX2QucHJvcHMiIC8+XHJcbicpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGIicHl0aG9uY29yZSIgbm90IGluIGxhc3RsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChiJyAgICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbmNvcmUucHJvcHMiIC8+XHJcbicpCisgICAgICAgICAgICAgICAgaWYgYiI8SW1wb3J0R3JvdXAgQ29uZGl0aW9uIiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRncm91cCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIGIiPC9JbXBvcnRHcm91cD4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydGdyb3VwID0gRmFsc2UKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICBsYXN0bGluZSA9IGxpbmUKKyAgICAgICAgd2l0aCBvcGVuKGRlc3RuYW1lLCAnd2InKSBhcyBmb3V0OgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHNyYyA9ICIuIiBpZiBsZW4oc3lzLmFyZ3YpIDwgMiBlbHNlIHN5cy5hcmd2WzFdCisgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5hYnNwYXRoKHNyYykpCisgICAgZGVzdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjLCAiLi4iLCBuYW1lICsgIlVwZCIpKQorICAgIG9zLm1ha2VkaXJzKGRlc3QpCisgICAgdnM5dG8xMChzcmMsIGRlc3QpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ogYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFhZmUyMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvagpAQCAtMCwwICsxLDI4NyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnc5eHBvcGVuPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHc5eHBvcGVuLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjNjdhZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2FiYzJkZmZkLTNmMmEtNDdiZC1iODliLTAzMTRjOTllZjIxZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcdzl4cG9wZW4uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ogYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y1MThlOQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvagpAQCAtMCwwICsxLDIxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPndpbnNvdW5kPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+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+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5zb3VuZC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDA4OTMxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnNvdW5kLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC94NjQucHJvcHMgYi9QQ2J1aWxkL3g2NC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODlkOTViCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC94NjQucHJvcHMKQEAgLTAsMCArMSwyMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgQ29uZGl0aW9uPSInJChIT1NUX1BZVEhPTiknIT0nJyI+CisgICAgPFB5dGhvbkV4ZT4kKEhPU1RfUFlUSE9OKTwvUHl0aG9uRXhlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1VTRUNMOk1TX09QVEVST04gL0dTLSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTjY0O19NX1g2NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5dGhvbkV4ZSI+CisgICAgICA8VmFsdWU+JChQeXRob25FeGUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvaiBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZiYzIwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKQEAgLTAsMCArMSwxOTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnh4bGltaXRlZDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfV0lOMzI7X1dJTkRMTDtQeV9MSU1JVEVEX0FQSTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfTElNSVRFRF9BUEk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfTElNSVRFRF9BUEk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZGI0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWI1ZWViYzctMzc4Ny00ZjhmLWIyODItMjA0ZGIyOTYyY2MzfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHh4bGltaXRlZC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BhcnNlci9QeXRob24uYXNkbCBiL1BhcnNlci9QeXRob24uYXNkbAppbmRleCA5NDA3YjJmLi42YjA2ZGVjIDEwMDY0NAotLS0gYS9QYXJzZXIvUHl0aG9uLmFzZGwKKysrIGIvUGFyc2VyL1B5dGhvbi5hc2RsCkBAIC0xLDExOSArMSwxMjAgQEAKLS0tIEFTREwncyBmb3VyIGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBvYmplY3QKKy0tIEFTREwncyBmaXZlIGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0CiAKLW1vZHVsZSBQeXRob24gdmVyc2lvbiAiJFJldmlzaW9uJCIKK21vZHVsZSBQeXRob24KIHsKLQltb2QgPSBNb2R1bGUoc3RtdCogYm9keSkKLQkgICAgfCBJbnRlcmFjdGl2ZShzdG10KiBib2R5KQotCSAgICB8IEV4cHJlc3Npb24oZXhwciBib2R5KQorICAgIG1vZCA9IE1vZHVsZShzdG10KiBib2R5KQorICAgICAgICB8IEludGVyYWN0aXZlKHN0bXQqIGJvZHkpCisgICAgICAgIHwgRXhwcmVzc2lvbihleHByIGJvZHkpCiAKLQkgICAgLS0gbm90IHJlYWxseSBhbiBhY3R1YWwgbm9kZSBidXQgdXNlZnVsIGluIEp5dGhvbidzIHR5cGVzeXN0ZW0uCi0JICAgIHwgU3VpdGUoc3RtdCogYm9keSkKKyAgICAgICAgLS0gbm90IHJlYWxseSBhbiBhY3R1YWwgbm9kZSBidXQgdXNlZnVsIGluIEp5dGhvbidzIHR5cGVzeXN0ZW0uCisgICAgICAgIHwgU3VpdGUoc3RtdCogYm9keSkKIAotCXN0bXQgPSBGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLCAKKyAgICBzdG10ID0gRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10KiBib2R5LCBleHByKiBkZWNvcmF0b3JfbGlzdCwgZXhwcj8gcmV0dXJucykKLQkgICAgICB8IENsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgCi0JCQkgZXhwciogYmFzZXMsCi0JCQkga2V5d29yZCoga2V5d29yZHMsCi0JCQkgZXhwcj8gc3RhcmFyZ3MsCi0JCQkgZXhwcj8ga3dhcmdzLAotCQkJIHN0bXQqIGJvZHksCi0JCQkgZXhwciogZGVjb3JhdG9yX2xpc3QpCi0JICAgICAgfCBSZXR1cm4oZXhwcj8gdmFsdWUpCisgICAgICAgICAgfCBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIAorICAgICAgICAgICAgIGV4cHIqIGJhc2VzLAorICAgICAgICAgICAgIGtleXdvcmQqIGtleXdvcmRzLAorICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLAorICAgICAgICAgICAgIGV4cHI/IGt3YXJncywKKyAgICAgICAgICAgICBzdG10KiBib2R5LAorICAgICAgICAgICAgIGV4cHIqIGRlY29yYXRvcl9saXN0KQorICAgICAgICAgIHwgUmV0dXJuKGV4cHI/IHZhbHVlKQogCi0JICAgICAgfCBEZWxldGUoZXhwciogdGFyZ2V0cykKLQkgICAgICB8IEFzc2lnbihleHByKiB0YXJnZXRzLCBleHByIHZhbHVlKQotCSAgICAgIHwgQXVnQXNzaWduKGV4cHIgdGFyZ2V0LCBvcGVyYXRvciBvcCwgZXhwciB2YWx1ZSkKKyAgICAgICAgICB8IERlbGV0ZShleHByKiB0YXJnZXRzKQorICAgICAgICAgIHwgQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUpCisgICAgICAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQogCi0JICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcwotCSAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IFdoaWxlKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgSWYoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBXaXRoKGV4cHIgY29udGV4dF9leHByLCBleHByPyBvcHRpb25hbF92YXJzLCBzdG10KiBib2R5KQorICAgICAgICAgIC0tIHVzZSAnb3JlbHNlJyBiZWNhdXNlIGVsc2UgaXMgYSBrZXl3b3JkIGluIHRhcmdldCBsYW5ndWFnZXMKKyAgICAgICAgICB8IEZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCisgICAgICAgICAgfCBXaGlsZShleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IElmKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQorICAgICAgICAgIHwgV2l0aCh3aXRoaXRlbSogaXRlbXMsIHN0bXQqIGJvZHkpCiAKLQkgICAgICB8IFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpCi0JICAgICAgfCBUcnlFeGNlcHQoc3RtdCogYm9keSwgZXhjZXB0aGFuZGxlciogaGFuZGxlcnMsIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IFRyeUZpbmFsbHkoc3RtdCogYm9keSwgc3RtdCogZmluYWxib2R5KQotCSAgICAgIHwgQXNzZXJ0KGV4cHIgdGVzdCwgZXhwcj8gbXNnKQorICAgICAgICAgIHwgUmFpc2UoZXhwcj8gZXhjLCBleHByPyBjYXVzZSkKKyAgICAgICAgICB8IFRyeShzdG10KiBib2R5LCBleGNlcHRoYW5kbGVyKiBoYW5kbGVycywgc3RtdCogb3JlbHNlLCBzdG10KiBmaW5hbGJvZHkpCisgICAgICAgICAgfCBBc3NlcnQoZXhwciB0ZXN0LCBleHByPyBtc2cpCiAKLQkgICAgICB8IEltcG9ydChhbGlhcyogbmFtZXMpCi0JICAgICAgfCBJbXBvcnRGcm9tKGlkZW50aWZpZXI/IG1vZHVsZSwgYWxpYXMqIG5hbWVzLCBpbnQ/IGxldmVsKQorICAgICAgICAgIHwgSW1wb3J0KGFsaWFzKiBuYW1lcykKKyAgICAgICAgICB8IEltcG9ydEZyb20oaWRlbnRpZmllcj8gbW9kdWxlLCBhbGlhcyogbmFtZXMsIGludD8gbGV2ZWwpCiAKLQkgICAgICB8IEdsb2JhbChpZGVudGlmaWVyKiBuYW1lcykKLQkgICAgICB8IE5vbmxvY2FsKGlkZW50aWZpZXIqIG5hbWVzKQotCSAgICAgIHwgRXhwcihleHByIHZhbHVlKQotCSAgICAgIHwgUGFzcyB8IEJyZWFrIHwgQ29udGludWUKKyAgICAgICAgICB8IEdsb2JhbChpZGVudGlmaWVyKiBuYW1lcykKKyAgICAgICAgICB8IE5vbmxvY2FsKGlkZW50aWZpZXIqIG5hbWVzKQorICAgICAgICAgIHwgRXhwcihleHByIHZhbHVlKQorICAgICAgICAgIHwgUGFzcyB8IEJyZWFrIHwgQ29udGludWUKIAotCSAgICAgIC0tIFhYWCBKeXRob24gd2lsbCBiZSBkaWZmZXJlbnQKLQkgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCi0JICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCisgICAgICAgICAgLS0gWFhYIEp5dGhvbiB3aWxsIGJlIGRpZmZlcmVudAorICAgICAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKKyAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIAotCSAgICAgIC0tIEJvb2xPcCgpIGNhbiB1c2UgbGVmdCAmIHJpZ2h0PwotCWV4cHIgPSBCb29sT3AoYm9vbG9wIG9wLCBleHByKiB2YWx1ZXMpCi0JICAgICB8IEJpbk9wKGV4cHIgbGVmdCwgb3BlcmF0b3Igb3AsIGV4cHIgcmlnaHQpCi0JICAgICB8IFVuYXJ5T3AodW5hcnlvcCBvcCwgZXhwciBvcGVyYW5kKQotCSAgICAgfCBMYW1iZGEoYXJndW1lbnRzIGFyZ3MsIGV4cHIgYm9keSkKLQkgICAgIHwgSWZFeHAoZXhwciB0ZXN0LCBleHByIGJvZHksIGV4cHIgb3JlbHNlKQotCSAgICAgfCBEaWN0KGV4cHIqIGtleXMsIGV4cHIqIHZhbHVlcykKLQkgICAgIHwgU2V0KGV4cHIqIGVsdHMpCi0JICAgICB8IExpc3RDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgfCBTZXRDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgfCBEaWN0Q29tcChleHByIGtleSwgZXhwciB2YWx1ZSwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIHwgR2VuZXJhdG9yRXhwKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgLS0gdGhlIGdyYW1tYXIgY29uc3RyYWlucyB3aGVyZSB5aWVsZCBleHByZXNzaW9ucyBjYW4gb2NjdXIKLQkgICAgIHwgWWllbGQoZXhwcj8gdmFsdWUpCi0JICAgICAtLSBuZWVkIHNlcXVlbmNlcyBmb3IgY29tcGFyZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCi0JICAgICAtLSB4IDwgNCA8IDMgYW5kICh4IDwgNCkgPCAzCi0JICAgICB8IENvbXBhcmUoZXhwciBsZWZ0LCBjbXBvcCogb3BzLCBleHByKiBjb21wYXJhdG9ycykKLQkgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzLAotCQkJIGV4cHI/IHN0YXJhcmdzLCBleHByPyBrd2FyZ3MpCi0JICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KLQkgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/Ci0JICAgICB8IEJ5dGVzKHN0cmluZyBzKQotCSAgICAgfCBFbGxpcHNpcwotCSAgICAgLS0gb3RoZXIgbGl0ZXJhbHM/IGJvb2xzPworICAgICAgICAgIC0tIEJvb2xPcCgpIGNhbiB1c2UgbGVmdCAmIHJpZ2h0PworICAgIGV4cHIgPSBCb29sT3AoYm9vbG9wIG9wLCBleHByKiB2YWx1ZXMpCisgICAgICAgICB8IEJpbk9wKGV4cHIgbGVmdCwgb3BlcmF0b3Igb3AsIGV4cHIgcmlnaHQpCisgICAgICAgICB8IFVuYXJ5T3AodW5hcnlvcCBvcCwgZXhwciBvcGVyYW5kKQorICAgICAgICAgfCBMYW1iZGEoYXJndW1lbnRzIGFyZ3MsIGV4cHIgYm9keSkKKyAgICAgICAgIHwgSWZFeHAoZXhwciB0ZXN0LCBleHByIGJvZHksIGV4cHIgb3JlbHNlKQorICAgICAgICAgfCBEaWN0KGV4cHIqIGtleXMsIGV4cHIqIHZhbHVlcykKKyAgICAgICAgIHwgU2V0KGV4cHIqIGVsdHMpCisgICAgICAgICB8IExpc3RDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgfCBTZXRDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgfCBEaWN0Q29tcChleHByIGtleSwgZXhwciB2YWx1ZSwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIHwgR2VuZXJhdG9yRXhwKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgLS0gdGhlIGdyYW1tYXIgY29uc3RyYWlucyB3aGVyZSB5aWVsZCBleHByZXNzaW9ucyBjYW4gb2NjdXIKKyAgICAgICAgIHwgWWllbGQoZXhwcj8gdmFsdWUpCisgICAgICAgICAgICAgfCBZaWVsZEZyb20oZXhwcj8gdmFsdWUpCisgICAgICAgICAtLSBuZWVkIHNlcXVlbmNlcyBmb3IgY29tcGFyZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgICAtLSB4IDwgNCA8IDMgYW5kICh4IDwgNCkgPCAzCisgICAgICAgICB8IENvbXBhcmUoZXhwciBsZWZ0LCBjbXBvcCogb3BzLCBleHByKiBjb21wYXJhdG9ycykKKyAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzLAorICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLCBleHByPyBrd2FyZ3MpCisgICAgICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KKyAgICAgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/CisgICAgICAgICB8IEJ5dGVzKGJ5dGVzIHMpCisgICAgICAgICB8IEVsbGlwc2lzCisgICAgICAgICAtLSBvdGhlciBsaXRlcmFscz8gYm9vbHM/CiAKLQkgICAgIC0tIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYW4gYXBwZWFyIGluIGFzc2lnbm1lbnQgY29udGV4dAotCSAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBTdWJzY3JpcHQoZXhwciB2YWx1ZSwgc2xpY2Ugc2xpY2UsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IFN0YXJyZWQoZXhwciB2YWx1ZSwgZXhwcl9jb250ZXh0IGN0eCkKLQkgICAgIHwgTmFtZShpZGVudGlmaWVyIGlkLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpIAotCSAgICAgfCBUdXBsZShleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0CisgICAgICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IFN1YnNjcmlwdChleHByIHZhbHVlLCBzbGljZSBzbGljZSwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgU3RhcnJlZChleHByIHZhbHVlLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgfCBOYW1lKGlkZW50aWZpZXIgaWQsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IExpc3QoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkgCisgICAgICAgICB8IFR1cGxlKGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCiAKLQkgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCi0JICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCisgICAgICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcworICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JZXhwcl9jb250ZXh0ID0gTG9hZCB8IFN0b3JlIHwgRGVsIHwgQXVnTG9hZCB8IEF1Z1N0b3JlIHwgUGFyYW0KKyAgICBleHByX2NvbnRleHQgPSBMb2FkIHwgU3RvcmUgfCBEZWwgfCBBdWdMb2FkIHwgQXVnU3RvcmUgfCBQYXJhbQogCi0Jc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAotCSAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAotCSAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCisgICAgc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAorICAgICAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAorICAgICAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCiAKLQlib29sb3AgPSBBbmQgfCBPciAKKyAgICBib29sb3AgPSBBbmQgfCBPciAKIAotCW9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IERpdiB8IE1vZCB8IFBvdyB8IExTaGlmdCAKKyAgICBvcGVyYXRvciA9IEFkZCB8IFN1YiB8IE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQgCiAgICAgICAgICAgICAgICAgIHwgUlNoaWZ0IHwgQml0T3IgfCBCaXRYb3IgfCBCaXRBbmQgfCBGbG9vckRpdgogCi0JdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViCisgICAgdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViCiAKLQljbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KKyAgICBjbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KIAotCWNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQorICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQogCi0JLS0gbm90IHN1cmUgd2hhdCB0byBjYWxsIHRoZSBmaXJzdCBhcmd1bWVudCBmb3IgcmFpc2UgYW5kIGV4Y2VwdAotCWV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCi0JICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQorICAgIGV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JYXJndW1lbnRzID0gKGFyZyogYXJncywgaWRlbnRpZmllcj8gdmFyYXJnLCBleHByPyB2YXJhcmdhbm5vdGF0aW9uLAorICAgIGFyZ3VtZW50cyA9IChhcmcqIGFyZ3MsIGlkZW50aWZpZXI/IHZhcmFyZywgZXhwcj8gdmFyYXJnYW5ub3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGFyZyoga3dvbmx5YXJncywgaWRlbnRpZmllcj8ga3dhcmcsCiAgICAgICAgICAgICAgICAgICAgICBleHByPyBrd2FyZ2Fubm90YXRpb24sIGV4cHIqIGRlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgZXhwcioga3dfZGVmYXVsdHMpCi0JYXJnID0gKGlkZW50aWZpZXIgYXJnLCBleHByPyBhbm5vdGF0aW9uKQorICAgIGFyZyA9IChpZGVudGlmaWVyIGFyZywgZXhwcj8gYW5ub3RhdGlvbikKIAotICAgICAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCi0gICAgICAgIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcsIGV4cHIgdmFsdWUpCisgICAgLS0ga2V5d29yZCBhcmd1bWVudHMgc3VwcGxpZWQgdG8gY2FsbAorICAgIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcsIGV4cHIgdmFsdWUpCiAKLSAgICAgICAgLS0gaW1wb3J0IG5hbWUgd2l0aCBvcHRpb25hbCAnYXMnIGFsaWFzLgotICAgICAgICBhbGlhcyA9IChpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXI/IGFzbmFtZSkKKyAgICAtLSBpbXBvcnQgbmFtZSB3aXRoIG9wdGlvbmFsICdhcycgYWxpYXMuCisgICAgYWxpYXMgPSAoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyPyBhc25hbWUpCisKKyAgICB3aXRoaXRlbSA9IChleHByIGNvbnRleHRfZXhwciwgZXhwcj8gb3B0aW9uYWxfdmFycykKIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCA3YjRlMmRjLi4wOGFhMDViIDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMTE0LDI4ICsxMTQsMjAgQEAKICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKHRvay5saW5lbm8sIHRvaykKIAogICAgIGRlZiBwX21vZHVsZV8wKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgdmVyc2lvbiB7IH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIHZlcnNpb24sIF8wLCBfMSA9IGluZm8KKyAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHsgfSAiCisgICAgICAgIG1vZHVsZSwgbmFtZSwgXzAsIF8xID0gaW5mbwogICAgICAgICBpZiBtb2R1bGUudmFsdWUgIT0gIm1vZHVsZSI6CiAgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IobW9kdWxlLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkICdtb2R1bGUnLCBmb3VuZCAlcyIgJSBtb2R1bGUpCi0gICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgTm9uZSwgdmVyc2lvbikKKyAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBOb25lKQogCiAgICAgZGVmIHBfbW9kdWxlKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgdmVyc2lvbiB7IGRlZmluaXRpb25zIH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIHZlcnNpb24sIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCisgICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IGRlZmluaXRpb25zIH0gIgorICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCiAgICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKICAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZpbml0aW9ucywgdmVyc2lvbikKLQotICAgIGRlZiBwX3ZlcnNpb24oc2VsZiwgaW5mbyk6Ci0gICAgICAgICJ2ZXJzaW9uIDo6PSBJZCBTdHJpbmciCi0gICAgICAgIHZlcnNpb24sIFYgPSBpbmZvCi0gICAgICAgIGlmIHZlcnNpb24udmFsdWUgIT0gInZlcnNpb24iOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKHZlcnNpb24ubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ3ZlcnNpb24nLCBmb3VuZCAlIiAlIHZlcnNpb24pCi0gICAgICAgIHJldHVybiBWCisgICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgZGVmaW5pdGlvbnMpCiAKICAgICBkZWYgcF9kZWZpbml0aW9uXzAoc2VsZiwgZGVmaW5pdGlvbik6CiAgICAgICAgICIgZGVmaW5pdGlvbnMgOjo9IGRlZmluaXRpb24gIgpAQCAtMTY0LDE1ICsxNTYsMTEgQEAKICAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgogICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQotICAgICAgICBpZiBhdHRyaWJ1dGVzOgotICAgICAgICAgICAgYXR0cmlidXRlcy5yZXZlcnNlKCkKICAgICAgICAgcmV0dXJuIFN1bShzdW0sIGF0dHJpYnV0ZXMpCiAKICAgICBkZWYgcF9wcm9kdWN0KHNlbGYsIGluZm8pOgogICAgICAgICAiIHByb2R1Y3QgOjo9ICggZmllbGRzICkgIgogICAgICAgICBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgIyBYWFggY2FuJ3QgSSBqdXN0IGNvbnN0cnVjdCB0aGluZ3MgaW4gdGhlIHJpZ2h0IG9yZGVyPwotICAgICAgICBmaWVsZHMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBQcm9kdWN0KGZpZWxkcykKIAogICAgIGRlZiBwX3N1bV8wKHNlbGYsIGNvbnN0cnVjdG9yKToKQEAgLTE5Niw4ICsxODQsNiBAQAogICAgIGRlZiBwX2NvbnN0cnVjdG9yXzEoc2VsZiwgaW5mbyk6CiAgICAgICAgICIgY29uc3RydWN0b3IgOjo9IElkICggZmllbGRzICkgIgogICAgICAgICBpZCwgXzAsIGZpZWxkcywgXzEgPSBpbmZvCi0gICAgICAgICMgWFhYIGNhbid0IEkganVzdCBjb25zdHJ1Y3QgdGhpbmdzIGluIHRoZSByaWdodCBvcmRlcj8KLSAgICAgICAgZmllbGRzLnJldmVyc2UoKQogICAgICAgICByZXR1cm4gQ29uc3RydWN0b3IoaWQsIGZpZWxkcykKIAogICAgIGRlZiBwX2ZpZWxkc18wKHNlbGYsIGZpZWxkKToKQEAgLTIwNSw4ICsxOTEsOCBAQAogICAgICAgICByZXR1cm4gW2ZpZWxkWzBdXQogCiAgICAgZGVmIHBfZmllbGRzXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGRzIDo6PSBmaWVsZCAsIGZpZWxkcyAiCi0gICAgICAgIGZpZWxkLCBfLCBmaWVsZHMgPSBpbmZvCisgICAgICAgICIgZmllbGRzIDo6PSBmaWVsZHMgLCBmaWVsZCAiCisgICAgICAgIGZpZWxkcywgXywgZmllbGQgPSBpbmZvCiAgICAgICAgIHJldHVybiBmaWVsZHMgKyBbZmllbGRdCiAKICAgICBkZWYgcF9maWVsZF8wKHNlbGYsIHR5cGVfKToKQEAgLTIzNiw3ICsyMjIsNyBAQAogICAgICAgICAiIGZpZWxkIDo6PSBJZCA/ICIKICAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVbMF0sIG9wdD1UcnVlKQogCi1idWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJpbnQiLCAiYm9vbCIsICJvYmplY3QiKQorYnVpbHRpbl90eXBlcyA9ICgiaWRlbnRpZmllciIsICJzdHJpbmciLCAiYnl0ZXMiLCAiaW50IiwgIm9iamVjdCIpCiAKICMgYmVsb3cgaXMgYSBjb2xsZWN0aW9uIG9mIGNsYXNzZXMgdG8gY2FwdHVyZSB0aGUgQVNUIG9mIGFuIEFTVCA6LSkKICMgbm90IHN1cmUgaWYgYW55IG9mIHRoZSBtZXRob2RzIGFyZSB1c2VmdWwgeWV0LCBidXQgSSdtIGFkZGluZyB0aGVtCkBAIC0yNDYsMTAgKzIzMiw5IEBACiAgICAgcGFzcyAjIGEgbWFya2VyIGNsYXNzCiAKIGNsYXNzIE1vZHVsZShBU1QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZm5zLCB2ZXJzaW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZGZucyk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5kZm5zID0gZGZucwotICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCiAgICAgICAgIHNlbGYudHlwZXMgPSB7fSAjIG1hcHMgdHlwZSBuYW1lIHRvIHZhbHVlIChmcm9tIGRmbnMpCiAgICAgICAgIGZvciB0eXBlIGluIGRmbnM6CiAgICAgICAgICAgICBzZWxmLnR5cGVzW3R5cGUubmFtZS52YWx1ZV0gPSB0eXBlLnZhbHVlCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQppbmRleCA3ZjYxM2RiLi5hOWU2NjI2IDEwMDc1NQotLS0gYS9QYXJzZXIvYXNkbF9jLnB5CisrKyBiL1BhcnNlci9hc2RsX2MucHkKQEAgLTg0LDggKzg0LDE2IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSk6CiAgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKKyAgICAgICAgc2VsZi5pZGVudGlmaWVycyA9IHNldCgpCiAgICAgICAgIHN1cGVyKEVtaXRWaXNpdG9yLCBzZWxmKS5fX2luaXRfXygpCiAKKyAgICBkZWYgZW1pdF9pZGVudGlmaWVyKHNlbGYsIG5hbWUpOgorICAgICAgICBuYW1lID0gc3RyKG5hbWUpCisgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5pZGVudGlmaWVyczoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmVtaXQoIl9QeV9JREVOVElGSUVSKCVzKTsiICUgbmFtZSwgMCkKKyAgICAgICAgc2VsZi5pZGVudGlmaWVycy5hZGQobmFtZSkKKwogICAgIGRlZiBlbWl0KHNlbGYsIHMsIGRlcHRoLCByZWZsb3c9VHJ1ZSk6CiAgICAgICAgICMgWFhYIHJlZmxvdyBsb25nIGxpbmVzPwogICAgICAgICBpZiByZWZsb3c6CkBAIC00ODUsMTIgKzQ5MywxMiBAQAogCiAgICAgZGVmIHZpc2l0RmllbGQoc2VsZiwgZmllbGQsIG5hbWUsIHN1bT1Ob25lLCBwcm9kPU5vbmUsIGRlcHRoPTApOgogICAgICAgICBjdHlwZSA9IGdldF9jX3R5cGUoZmllbGQudHlwZSkKLSAgICAgICAgc2VsZi5lbWl0KCJpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosIFwiJXNcIikpIHsiICUgZmllbGQubmFtZSwgZGVwdGgpCisgICAgICAgIHNlbGYuZW1pdCgiaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF8lcykpIHsiICUgZmllbGQubmFtZSwgZGVwdGgpCiAgICAgICAgIHNlbGYuZW1pdCgiaW50IHJlczsiLCBkZXB0aCsxKQogICAgICAgICBpZiBmaWVsZC5zZXE6CiAgICAgICAgICAgICBzZWxmLmVtaXQoIlB5X3NzaXplX3QgbGVuOyIsIGRlcHRoKzEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoIlB5X3NzaXplX3QgaTsiLCBkZXB0aCsxKQotICAgICAgICBzZWxmLmVtaXQoInRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBcIiVzXCIpOyIgJSBmaWVsZC5uYW1lLCBkZXB0aCsxKQorICAgICAgICBzZWxmLmVtaXQoInRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF8lcyk7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKzEpCiAgICAgICAgIHNlbGYuZW1pdCgiaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsiLCBkZXB0aCsxKQogICAgICAgICBpZiBmaWVsZC5zZXE6CiAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsiLCBkZXB0aCsxKQpAQCAtNTUyLDYgKzU2MCw4IEBACiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5VHlwZU9iamVjdCAqJXNfdHlwZTsiICUgbmFtZSwgMCkKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfJXModm9pZCopOyIgJSBuYW1lLCAwKQogICAgICAgICBpZiBwcm9kLmZpZWxkczoKKyAgICAgICAgICAgIGZvciBmIGluIHByb2QuZmllbGRzOgorICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKGYubmFtZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIGNoYXIgKiVzX2ZpZWxkc1tdPXsiICUgbmFtZSwwKQogICAgICAgICAgICAgZm9yIGYgaW4gcHJvZC5maWVsZHM6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCciJXMiLCcgJSBmLm5hbWUsIDEpCkBAIC01NjAsNiArNTcwLDggQEAKICAgICBkZWYgdmlzaXRTdW0oc2VsZiwgc3VtLCBuYW1lKToKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlUeXBlT2JqZWN0IColc190eXBlOyIgJSBuYW1lLCAwKQogICAgICAgICBpZiBzdW0uYXR0cmlidXRlczoKKyAgICAgICAgICAgIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKGEubmFtZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIGNoYXIgKiVzX2F0dHJpYnV0ZXNbXSA9IHsiICUgbmFtZSwgMCkKICAgICAgICAgICAgIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgnIiVzIiwnICUgYS5uYW1lLCAxKQpAQCAtNTc5LDYgKzU5MSw4IEBACiAgICAgZGVmIHZpc2l0Q29uc3RydWN0b3Ioc2VsZiwgY29ucywgbmFtZSk6CiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5VHlwZU9iamVjdCAqJXNfdHlwZTsiICUgY29ucy5uYW1lLCAwKQogICAgICAgICBpZiBjb25zLmZpZWxkczoKKyAgICAgICAgICAgIGZvciB0IGluIGNvbnMuZmllbGRzOgorICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKHQubmFtZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIGNoYXIgKiVzX2ZpZWxkc1tdPXsiICUgY29ucy5uYW1lLCAwKQogICAgICAgICAgICAgZm9yIHQgaW4gY29ucy5maWVsZHM6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCciJXMiLCcgJSB0Lm5hbWUsIDEpCkBAIC01ODgsMTMgKzYwMiwzOSBAQAogCiAgICAgZGVmIHZpc2l0TW9kdWxlKHNlbGYsIG1vZCk6CiAgICAgICAgIHNlbGYuZW1pdCgiIiIKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmRpY3Q7Cit9IEFTVF9vYmplY3Q7CisKK3N0YXRpYyB2b2lkCithc3RfZGVhbGxvYyhBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK2FzdF90cmF2ZXJzZShBU1Rfb2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2FzdF9jbGVhcihBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworfQorCiBzdGF0aWMgaW50CiBhc3RfdHlwZV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogeworICAgIF9QeV9JREVOVElGSUVSKF9maWVsZHMpOwogICAgIFB5X3NzaXplX3QgaSwgbnVtZmllbGRzID0gMDsKICAgICBpbnQgcmVzID0gLTE7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZmllbGRzOwotICAgIGZpZWxkcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAiX2ZpZWxkcyIpOworICAgIGZpZWxkcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAmUHlJZF9fZmllbGRzKTsKICAgICBpZiAoIWZpZWxkcykKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBpZiAoZmllbGRzKSB7CkBAIC02NDQsNyArNjg0LDggQEAKIGFzdF90eXBlX3JlZHVjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLCAiX19kaWN0X18iKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC02NjQsMTIgKzcwNSwxNyBAQAogICAgIHtOVUxMfQogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIGFzdF90eXBlX2dldHNldHNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgQVNUX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiX2FzdC5BU1QiLAotICAgIHNpemVvZihQeU9iamVjdCksCisgICAgc2l6ZW9mKEFTVF9vYmplY3QpLAogICAgIDAsCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3RfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTY4NCwyNiArNzMwLDI2IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsIC8qIHRwX2dldGF0dHJvICovCiAgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgKHRyYXZlcnNlcHJvYylhc3RfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpYXN0X2NsZWFyLCAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBhc3RfdHlwZV9tZXRob2RzLCAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGFzdF90eXBlX2dldHNldHMsICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKEFTVF9vYmplY3QsIGRpY3QpLC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAoaW5pdHByb2MpYXN0X3R5cGVfaW5pdCwgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTczMCw2ICs3NzYsNyBAQAogc3RhdGljIGludCBhZGRfYXR0cmlidXRlcyhQeVR5cGVPYmplY3QqIHR5cGUsIGNoYXIqKmF0dHJzLCBpbnQgbnVtX2ZpZWxkcykKIHsKICAgICBpbnQgaSwgcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9hdHRyaWJ1dGVzKTsKICAgICBQeU9iamVjdCAqcywgKmwgPSBQeVR1cGxlX05ldyhudW1fZmllbGRzKTsKICAgICBpZiAoIWwpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzQxLDcgKzc4OCw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShsLCBpLCBzKTsKICAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfU2V0QXR0clN0cmluZygoUHlPYmplY3QqKXR5cGUsICJfYXR0cmlidXRlcyIsIGwpID49IDA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X1NldEF0dHJJZCgoUHlPYmplY3QqKXR5cGUsICZQeUlkX19hdHRyaWJ1dGVzLCBsKSA+PSAwOwogICAgIFB5X0RFQ1JFRihsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzUwLDcgKzc5Nyw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9saXN0KGFzZGxfc2VxICpzZXEsIFB5T2JqZWN0KiAoKmZ1bmMpKHZvaWQqKSkKIHsKLSAgICBpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUxpc3RfTmV3KG4pOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTc3NSw2ICs4MjIsNyBAQAogfQogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfaW50KGxvbmcgYikKIHsKQEAgLTgxMiw2ICs4NjAsMTUgQEAKICAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2J5dGVzKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJBU1QgYnl0ZXMgbXVzdCBiZSBvZiB0eXBlIGJ5dGVzIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2ludChQeU9iamVjdCogb2JqLCBpbnQqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaW50IGk7CkBAIC05MTAsMTAgKzk2Nyw2IEBACiAgICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBU1QiLCAoUHlPYmplY3QqKSZBU1RfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsnLCAxKQogICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlDRl9PTkxZX0FTVCIsIFB5Q0ZfT05MWV9BU1QpIDwgMCknLCAxKQogICAgICAgICBzZWxmLmVtaXQoInJldHVybiBOVUxMOyIsIDIpCi0gICAgICAgICMgVmFsdWUgb2YgdmVyc2lvbjogIiRSZXZpc2lvbiQiCi0gICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICIlcyIpIDwgMCknCi0gICAgICAgICAgICAgICAgJSBtb2QudmVyc2lvbiwgMSkKLSAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gTlVMTDsiLCAyKQogICAgICAgICBmb3IgZGZuIGluIG1vZC5kZm5zOgogICAgICAgICAgICAgc2VsZi52aXNpdChkZm4pCiAgICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIG07IiwgMSkKQEAgLTk5Nyw3ICsxMDUwLDcgQEAKICAgICAgICAgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXM6CiAgICAgICAgICAgICBzZWxmLmVtaXQoInZhbHVlID0gYXN0Mm9ial8lcyhvLT4lcyk7IiAlIChhLnR5cGUsIGEubmFtZSksIDEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICghdmFsdWUpIGdvdG8gZmFpbGVkOyIsIDEpCi0gICAgICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIiVzIiwgdmFsdWUpIDwgMCknICUgYS5uYW1lLCAxKQorICAgICAgICAgICAgc2VsZi5lbWl0KCdpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkXyVzLCB2YWx1ZSkgPCAwKScgJSBhLm5hbWUsIDEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoJ2dvdG8gZmFpbGVkOycsIDIpCiAgICAgICAgICAgICBzZWxmLmVtaXQoJ1B5X0RFQ1JFRih2YWx1ZSk7JywgMSkKICAgICAgICAgc2VsZi5mdW5jX2VuZCgpCkBAIC0xMDQzLDcgKzEwOTYsNyBAQAogICAgICAgICAgICAgdmFsdWUgPSAiby0+di4lcy4lcyIgJSAobmFtZSwgZmllbGQubmFtZSkKICAgICAgICAgc2VsZi5zZXQoZmllbGQsIHZhbHVlLCBkZXB0aCkKICAgICAgICAgZW1pdCgiaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7IiwgMCkKLSAgICAgICAgZW1pdCgnaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiJXMiLCB2YWx1ZSkgPT0gLTEpJyAlIGZpZWxkLm5hbWUsIDApCisgICAgICAgIGVtaXQoJ2lmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfJXMsIHZhbHVlKSA9PSAtMSknICUgZmllbGQubmFtZSwgMCkKICAgICAgICAgZW1pdCgiZ290byBmYWlsZWQ7IiwgMSkKICAgICAgICAgZW1pdCgiUHlfREVDUkVGKHZhbHVlKTsiLCAwKQogCkBAIC0xMDY2LDcgKzExMTksNyBAQAogICAgICAgICAgICAgICAgICMgV2hpbGUgdGhlIHNlcXVlbmNlIGVsZW1lbnRzIGFyZSBzdG9yZWQgYXMgdm9pZCosCiAgICAgICAgICAgICAgICAgIyBhc3Qyb2JqX2NtcG9wIGV4cGVjdHMgYW4gZW51bQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgieyIsIGRlcHRoKQotICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oJXMpOyIgJSB2YWx1ZSwgZGVwdGgrMSkKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXQoIlB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTiglcyk7IiAlIHZhbHVlLCBkZXB0aCsxKQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgidmFsdWUgPSBQeUxpc3RfTmV3KG4pOyIsIGRlcHRoKzEpCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsiLCBkZXB0aCsxKQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiZm9yKGkgPSAwOyBpIDwgbjsgaSsrKSIsIGRlcHRoKzEpCkBAIC0xMTM0LDI0ICsxMTg3LDEyIEBACiAKIGNvbW1vbl9tc2cgPSAiLyogRmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSAlcy4gKi9cblxuIgogCi1jX2ZpbGVfbXNnID0gIiIiCi0vKgotICAgX192ZXJzaW9uX18gJXMuCi0KLSAgIFRoaXMgbW9kdWxlIG11c3QgYmUgY29tbWl0dGVkIHNlcGFyYXRlbHkgYWZ0ZXIgZWFjaCBBU1QgZ3JhbW1hciBjaGFuZ2U7Ci0gICBUaGUgX192ZXJzaW9uX18gbnVtYmVyIGlzIHNldCB0byB0aGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjb21taXQKLSAgIGNvbnRhaW5pbmcgdGhlIGdyYW1tYXIgY2hhbmdlLgotKi8KLQotIiIiCi0KIGRlZiBtYWluKHNyY2ZpbGUpOgogICAgIGFyZ3YwID0gc3lzLmFyZ3ZbMF0KICAgICBjb21wb25lbnRzID0gYXJndjAuc3BsaXQob3Muc2VwKQogICAgIGFyZ3YwID0gb3Muc2VwLmpvaW4oY29tcG9uZW50c1stMjpdKQogICAgIGF1dG9fZ2VuX21zZyA9IGNvbW1vbl9tc2cgJSBhcmd2MAogICAgIG1vZCA9IGFzZGwucGFyc2Uoc3JjZmlsZSkKLSAgICBtb2QudmVyc2lvbiA9ICI4MjE2MyIKICAgICBpZiBub3QgYXNkbC5jaGVjayhtb2QpOgogICAgICAgICBzeXMuZXhpdCgxKQogICAgIGlmIElOQ19ESVI6CkBAIC0xMTczLDcgKzEyMTQsOCBAQAogICAgICAgICBwID0gb3MucGF0aC5qb2luKFNSQ19ESVIsIHN0cihtb2QubmFtZSkgKyAiLWFzdC5jIikKICAgICAgICAgZiA9IG9wZW4ocCwgInciKQogICAgICAgICBmLndyaXRlKGF1dG9fZ2VuX21zZykKLSAgICAgICAgZi53cml0ZShjX2ZpbGVfbXNnICUgbW9kLnZlcnNpb24pCisgICAgICAgIGYud3JpdGUoJyNpbmNsdWRlIDxzdGRkZWYuaD5cbicpCisgICAgICAgIGYud3JpdGUoJ1xuJykKICAgICAgICAgZi53cml0ZSgnI2luY2x1ZGUgIlB5dGhvbi5oIlxuJykKICAgICAgICAgZi53cml0ZSgnI2luY2x1ZGUgIiVzLWFzdC5oIlxuJyAlIG1vZC5uYW1lKQogICAgICAgICBmLndyaXRlKCdcbicpCmRpZmYgLS1naXQgYS9QYXJzZXIvaW50cmNoZWNrLmMgYi9QYXJzZXIvaW50cmNoZWNrLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Mzk4NjQuLjAwMDAwMDAKLS0tIGEvUGFyc2VyL2ludHJjaGVjay5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLQotLyogQ2hlY2sgZm9yIGludGVycnVwdHMgKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0KLSNpZmRlZiBRVUlDS1dJTgotCi0jaW5jbHVkZSA8aW8uaD4KLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIF93eWllbGQoKTsKLX0KLQotI2RlZmluZSBPSwotCi0jZW5kaWYgLyogUVVJQ0tXSU4gKi8KLQotI2lmIGRlZmluZWQoX01fSVg4NikgJiYgIWRlZmluZWQoX19RTlhfXykKLSNpbmNsdWRlIDxpby5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE1TRE9TKSAmJiAhZGVmaW5lZChRVUlDS1dJTikKLQotI2lmZGVmIF9fR05VQ19fCi0KLS8qIFRoaXMgaXMgZm9yIERKR1BQJ3MgR08zMiBleHRlbmRlci4gIEkgZG9uJ3Qga25vdyBob3cgdG8gdHJhcAotICogY29udHJvbC1DICAoVGhlcmUncyBubyBBUEkgZm9yIGN0cmwtQywgYW5kIEkgZG9uJ3Qgd2FudCB0byBtZXNzIHdpdGgKLSAqIHRoZSBpbnRlcnJ1cHQgdmVjdG9ycy4pICBIb3dldmVyLCB0aGlzIERPRVMgY2F0Y2ggY29udHJvbC1icmVhay4KLSAqIC0tQW1yaXQKLSAqLwotCi0jaW5jbHVkZSA8Z28zMi5oPgotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci0gICAgX2dvMzJfd2FudF9jdHJsX2JyZWFrKDEgLyogVFJVRSAqLyk7Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgcmV0dXJuIF9nbzMyX3dhc19jdHJsX2JyZWFrX2hpdCgpOwotfQotCi0jZWxzZSAvKiAhX19HTlVDX18gKi8KLQotLyogVGhpcyBtaWdodCB3b3JrIGZvciBNUy1ET1MgKHVudGVzdGVkIHRob3VnaCk6ICovCi0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICBpbnQgaW50ZXJydXB0ZWQgPSAwOwotICAgIHdoaWxlIChrYmhpdCgpKSB7Ci0gICAgICAgIGlmIChnZXRjaCgpID09ICdcMDAzJykKLSAgICAgICAgICAgIGludGVycnVwdGVkID0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGludGVycnVwdGVkOwotfQotCi0jZW5kaWYgLyogX19HTlVDX18gKi8KLQotI2RlZmluZSBPSwotCi0jZW5kaWYgLyogTVNET1MgJiYgIVFVSUNLV0lOICovCi0KLQotI2lmbmRlZiBPSwotCi0vKiBEZWZhdWx0IHZlcnNpb24gLS0gZm9yIHJlYWwgb3BlcmF0aW5nIHN5c3RlbXMgYW5kIGZvciBTdGFuZGFyZCBDICovCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotCi1zdGF0aWMgaW50IGludGVycnVwdGVkOwotCi12b2lkCi1QeUVycl9TZXRJbnRlcnJ1cHQodm9pZCkKLXsKLSAgICBpbnRlcnJ1cHRlZCA9IDE7Ci19Ci0KLWV4dGVybiBpbnQgUHlFcnJfQ2hlY2tTaWduYWxzKHZvaWQpOwotCi1zdGF0aWMgaW50Ci1jaGVja3NpZ25hbHNfd2l0aGFyZyh2b2lkICogYXJnKQotewotICAgIHJldHVybiBQeUVycl9DaGVja1NpZ25hbHMoKTsKLX0KLQotc3RhdGljIHZvaWQKLWludGNhdGNoZXIoaW50IHNpZykKLXsKLSAgICBleHRlcm4gdm9pZCBQeV9FeGl0KGludCk7Ci0gICAgc3RhdGljIGNoYXIgbWVzc2FnZVtdID0KLSJweXRob246IHRvIGludGVycnVwdCBhIHRydWx5IGhhbmdpbmcgUHl0aG9uIHByb2dyYW0sIGludGVycnVwdCBvbmNlIG1vcmUuXG4iOwotICAgIHN3aXRjaCAoaW50ZXJydXB0ZWQrKykgewotICAgIGNhc2UgMDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICB3cml0ZSgyLCBtZXNzYWdlLCBzdHJsZW4obWVzc2FnZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIGludGVycnVwdGVkID0gMDsKLSAgICAgICAgUHlfRXhpdCgxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgaW50Y2F0Y2hlcik7Ci0gICAgUHlfQWRkUGVuZGluZ0NhbGwoY2hlY2tzaWduYWxzX3dpdGhhcmcsIE5VTEwpOwotfQotCi1zdGF0aWMgdm9pZCAoKm9sZF9zaWdpbnRoYW5kbGVyKShpbnQpID0gU0lHX0RGTDsKLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotICAgIGlmICgob2xkX3NpZ2ludGhhbmRsZXIgPSBQeU9TX3NldHNpZyhTSUdJTlQsIFNJR19JR04pKSAhPSBTSUdfSUdOKQotICAgICAgICBQeU9TX3NldHNpZyhTSUdJTlQsIGludGNhdGNoZXIpOwotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci0gICAgUHlPU19zZXRzaWcoU0lHSU5ULCBvbGRfc2lnaW50aGFuZGxlcik7Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIGlmICghaW50ZXJydXB0ZWQpCi0gICAgICAgIHJldHVybiAwOwotICAgIGludGVycnVwdGVkID0gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotI2VuZGlmIC8qICFPSyAqLwotCi12b2lkCi1QeU9TX0FmdGVyRm9yayh2b2lkKQotewotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlFdmFsX1JlSW5pdFRocmVhZHMoKTsKLSAgICBQeVRocmVhZF9SZUluaXRUTFMoKTsKLSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvUGFyc2VyL215cmVhZGxpbmUuYyBiL1BhcnNlci9teXJlYWRsaW5lLmMKaW5kZXggOTNlZGQ3Zi4uZDg2NDYyMyAxMDA2NDQKLS0tIGEvUGFyc2VyL215cmVhZGxpbmUuYworKysgYi9QYXJzZXIvbXlyZWFkbGluZS5jCkBAIC0zNSwxMiArMzUsMTEgQEAKIHN0YXRpYyBpbnQKIG15X2ZnZXRzKGNoYXIgKmJ1ZiwgaW50IGxlbiwgRklMRSAqZnApCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQ7CisjZW5kaWYKICAgICBjaGFyICpwOwogICAgIGludCBlcnI7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGludCBpOwotI2VuZGlmCi0KICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAoUHlPU19JbnB1dEhvb2sgIT0gTlVMTCkKICAgICAgICAgICAgICh2b2lkKShQeU9TX0lucHV0SG9vaykoKTsKQEAgLTU3LDIwICs1NiwyNCBAQAogICAgICAgICAvKiBDdHJsLUMgYW55d2hlcmUgb24gdGhlIGxpbmUgb3IgQ3RybC1aIGlmIHRoZSBvbmx5IGNoYXJhY3RlcgogICAgICAgICAgICBvbiBhIGxpbmUgd2lsbCBzZXQgRVJST1JfT1BFUkFUSU9OX0FCT1JURUQuIFVuZGVyIG5vcm1hbAogICAgICAgICAgICBjaXJjdW1zdGFuY2VzIEN0cmwtQyB3aWxsIGFsc28gaGF2ZSBjYXVzZWQgdGhlIFNJR0lOVCBoYW5kbGVyCi0gICAgICAgICAgIHRvIGZpcmUuIFRoaXMgc2lnbmFsIGZpcmVzIGluIGFub3RoZXIgdGhyZWFkIGFuZCBpcyBub3QKLSAgICAgICAgICAgZ3VhcmFudGVlZCB0byBoYXZlIG9jY3VycmVkIGJlZm9yZSB0aGlzIHBvaW50IGluIHRoZSBjb2RlLgorICAgICAgICAgICB0byBmaXJlIHdoaWNoIHdpbGwgaGF2ZSBzZXQgdGhlIGV2ZW50IG9iamVjdCByZXR1cm5lZCBieQorICAgICAgICAgICBfUHlPU19TaWdpbnRFdmVudC4gVGhpcyBzaWduYWwgZmlyZXMgaW4gYW5vdGhlciB0aHJlYWQgYW5kCisgICAgICAgICAgIGlzIG5vdCBndWFyYW50ZWVkIHRvIGhhdmUgb2NjdXJyZWQgYmVmb3JlIHRoaXMgcG9pbnQgaW4gdGhlCisgICAgICAgICAgIGNvZGUuCiAKLSAgICAgICAgICAgVGhlcmVmb3JlOiBjaGVjayBpbiBhIHNtYWxsIGxvb3AgdG8gc2VlIGlmIHRoZSB0cmlnZ2VyIGhhcwotICAgICAgICAgICBmaXJlZCwgaW4gd2hpY2ggY2FzZSBhc3N1bWUgdGhpcyBpcyBhIEN0cmwtQyBldmVudC4gSWYgaXQKLSAgICAgICAgICAgaGFzbid0IGZpcmVkIHdpdGhpbiAxMG1zIGFzc3VtZSB0aGF0IHRoaXMgaXMgYSBDdHJsLVogb24gaXRzCi0gICAgICAgICAgIG93biBvciB0aGF0IHRoZSBzaWduYWwgaXNuJ3QgZ29pbmcgdG8gZmlyZSBmb3Igc29tZSBvdGhlcgotICAgICAgICAgICByZWFzb24gYW5kIGRyb3AgdGhyb3VnaCB0byBjaGVjayBmb3IgRU9GLgorICAgICAgICAgICBUaGVyZWZvcmU6IGNoZWNrIHdoZXRoZXIgdGhlIGV2ZW50IGlzIHNldCB3aXRoIGEgc21hbGwgdGltZW91dC4KKyAgICAgICAgICAgSWYgaXQgaXMsIGFzc3VtZSB0aGlzIGlzIGEgQ3RybC1DIGFuZCByZXNldCB0aGUgZXZlbnQuIElmIGl0CisgICAgICAgICAgIGlzbid0IHNldCBhc3N1bWUgdGhhdCB0aGlzIGlzIGEgQ3RybC1aIG9uIGl0cyBvd24gYW5kIGRyb3AKKyAgICAgICAgICAgdGhyb3VnaCB0byBjaGVjayBmb3IgRU9GLgogICAgICAgICAqLwogICAgICAgICBpZiAoR2V0TGFzdEVycm9yKCk9PUVSUk9SX09QRVJBVElPTl9BQk9SVEVEKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChQeU9TX0ludGVycnVwdE9jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgU2xlZXAoMSk7CisgICAgICAgICAgICBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICAgICAgc3dpdGNoIChXYWl0Rm9yU2luZ2xlT2JqZWN0KGhJbnRlcnJ1cHRFdmVudCwgMTApKSB7CisgICAgICAgICAgICBjYXNlIFdBSVRfT0JKRUNUXzA6CisgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiBJbnRlcnJ1cHQgKi8KKyAgICAgICAgICAgIGNhc2UgV0FJVF9GQUlMRUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0yOyAvKiBFcnJvciAqLwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwpAQCAtOTAsNyArOTMsNyBAQAogI2VuZGlmCiAgICAgICAgICAgICBpZiAocyA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotCSAgICAvKiB0cnkgYWdhaW4gKi8KKyAgICAgICAgLyogdHJ5IGFnYWluICovCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9QYXJzZXIvbm9kZS5jIGIvUGFyc2VyL25vZGUuYwppbmRleCAwZGVhMzBmLi4xZTRmMGRhIDEwMDY0NAotLS0gYS9QYXJzZXIvbm9kZS5jCisrKyBiL1BhcnNlci9ub2RlLmMKQEAgLTcxLDcgKzcxLDcgQEAKICAqIGNhcGFjaXR5LiAgVGhlIGNvZGUgaXMgdHJpY2t5IHRvIGF2b2lkIHRoYXQuCiAgKi8KICNkZWZpbmUgWFhYUk9VTkRVUChuKSAoKG4pIDw9IDEgPyAobikgOiAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgKG4pIDw9IDEyOCA/ICgoKG4pICsgMykgJiB+MykgOiAgICAgICAgICBcCisgICAgICAgICAgICAgICAobikgPD0gMTI4ID8gX1B5X1NJWkVfUk9VTkRfVVAoKG4pLCA0KSA6IFwKICAgICAgICAgICAgICAgIGZhbmN5X3JvdW5kdXAobikpCiAKIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNldG9rLmMgYi9QYXJzZXIvcGFyc2V0b2suYwppbmRleCBiYjlhZmM0Li43YmViNzM1IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2V0b2suYworKysgYi9QYXJzZXIvcGFyc2V0b2suYwpAQCAtMTMsNyArMTMsNyBAQAogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgbm9kZSAqcGFyc2V0b2soc3RydWN0IHRva19zdGF0ZSAqLCBncmFtbWFyICosIGludCwgcGVycmRldGFpbCAqLCBpbnQgKik7Ci1zdGF0aWMgdm9pZCBpbml0ZXJyKHBlcnJkZXRhaWwgKmVycl9yZXQsIGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKK3N0YXRpYyBpbnQgaW5pdGVycihwZXJyZGV0YWlsICplcnJfcmV0LCBjb25zdCBjaGFyKiBmaWxlbmFtZSk7CiAKIC8qIFBhcnNlIGlucHV0IGNvbWluZyBmcm9tIGEgc3RyaW5nLiAgUmV0dXJuIGVycm9yIGNvZGUsIHByaW50IHNvbWUgZXJyb3JzLiAqLwogbm9kZSAqCkBAIC00OCw3ICs0OCw4IEBACiAgICAgc3RydWN0IHRva19zdGF0ZSAqdG9rOwogICAgIGludCBleGVjX2lucHV0ID0gc3RhcnQgPT0gZmlsZV9pbnB1dDsKIAotICAgIGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpOworICAgIGlmIChpbml0ZXJyKGVycl9yZXQsIGZpbGVuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCpmbGFncyAmIFB5UEFSU0VfSUdOT1JFX0NPT0tJRSkKICAgICAgICAgdG9rID0gUHlUb2tlbml6ZXJfRnJvbVVURjgocywgZXhlY19pbnB1dCk7CkBAIC01OSw3ICs2MCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0b2stPmZpbGVuYW1lID0gZmlsZW5hbWUgPyBmaWxlbmFtZSA6ICI8c3RyaW5nPiI7CisjaWZuZGVmIFBHRU4KKyAgICBQeV9JTkNSRUYoZXJyX3JldC0+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/IFB5X1RPTE9XRVIoYykgOiAwKQogICAgICAgICAvKiBpZiBmaWxlbmFtZS5sb3dlcigpLmVuZHN3aXRoKCgiLnB5YyIsICIucHlvIikpOiAqLwogICAgICAgICBpZiAobGVuID49IDQgJiYKLSAgICAgICAgICAgIHVuaWNvZGVbbGVuLTRdID09ICcuJyAmJgotICAgICAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTNdKSA9PSAncCcgJiYKLSAgICAgICAgICAgIFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0yXSkgPT0gJ3knICYmCi0gICAgICAgICAgICAoUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTFdKSA9PSAnYycgfHwKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tMV0pID09ICdvJykpCisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tNCkgPT0gJy4nICYmCisgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMykpID09ICdwJyAmJgorICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTIpKSA9PSAneScgJiYKKyAgICAgICAgICAgIChhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMSkpID09ICdjJyB8fAorICAgICAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ28nKSkKICAgICAgICAgewotICAgICAgICAgICAgKmZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHVuaWNvZGUsIGxlbi0xKTsKKyAgICAgICAgICAgICpmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoKmZpbGVuYW1lLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqZmlsZW5hbWUpLTEpOwogICAgICAgICAgICAgaWYgKCpmaWxlbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwogICAgICAgICB9CkBAIC02NDMsOCArNjU1LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAobW9kdWxlX2dsb2JhbHMpIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpnZXRfc291cmNlX25hbWUgPSBOVUxMOwotICAgICAgICBzdGF0aWMgUHlPYmplY3QgKnNwbGl0bGluZXNfbmFtZSA9IE5VTEw7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGdldF9zb3VyY2UpOworICAgICAgICBfUHlfSURFTlRJRklFUihzcGxpdGxpbmVzKTsKKyAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgUHlPYmplY3QgKmxvYWRlcjsKICAgICAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lOwogICAgICAgICBQeU9iamVjdCAqc291cmNlOwpAQCAtNjUyLDE2ICs2NjUsMTAgQEAKICAgICAgICAgUHlPYmplY3QgKnNvdXJjZV9saW5lOwogICAgICAgICBQeU9iamVjdCAqcmV0dXJuZWQ7CiAKLSAgICAgICAgaWYgKGdldF9zb3VyY2VfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnZXRfc291cmNlX25hbWUgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiZ2V0X3NvdXJjZSIpOwotICAgICAgICAgICAgaWYgKCFnZXRfc291cmNlX25hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNwbGl0bGluZXNfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzcGxpdGxpbmVzX25hbWUgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygic3BsaXRsaW5lcyIpOwotICAgICAgICAgICAgaWYgKCFzcGxpdGxpbmVzX25hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCh0bXAgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9nZXRfc291cmNlKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoKHRtcCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX3NwbGl0bGluZXMpKSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAgICAgLyogQ2hlY2svZ2V0IHRoZSByZXF1aXNpdGUgcGllY2VzIG5lZWRlZCBmb3IgdGhlIGxvYWRlci4gKi8KICAgICAgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlX2dsb2JhbHMsICJfX2xvYWRlcl9fIik7CkBAIC02NzEsMTEgKzY3OCwxMSBAQAogICAgICAgICAgICAgZ290byBzdGFuZGFyZF9jYWxsOwogCiAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgbG9hZGVyIGltcGxlbWVudHMgdGhlIG9wdGlvbmFsIGdldF9zb3VyY2UoKSBtZXRob2QuICovCi0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyhsb2FkZXIsICJnZXRfc291cmNlIikpCisgICAgICAgIGlmICghX1B5T2JqZWN0X0hhc0F0dHJJZChsb2FkZXIsICZQeUlkX2dldF9zb3VyY2UpKQogICAgICAgICAgICAgICAgIGdvdG8gc3RhbmRhcmRfY2FsbDsKICAgICAgICAgLyogQ2FsbCBnZXRfc291cmNlKCkgdG8gZ2V0IHRoZSBzb3VyY2UgY29kZS4gKi8KLSAgICAgICAgc291cmNlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MobG9hZGVyLCBnZXRfc291cmNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZSwgTlVMTCk7CisgICAgICAgIHNvdXJjZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKGxvYWRlciwgUHlJZF9nZXRfc291cmNlLm9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIE5VTEwpOwogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gUHlfTm9uZSkgewpAQCAtNjg0LDggKzY5MSw5IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKiBTcGxpdCB0aGUgc291cmNlIGludG8gbGluZXMuICovCi0gICAgICAgIHNvdXJjZV9saXN0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc291cmNlLCBzcGxpdGxpbmVzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHNvdXJjZV9saXN0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5SWRfc3BsaXRsaW5lcy5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihzb3VyY2UpOwogICAgICAgICBpZiAoIXNvdXJjZV9saXN0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05NTAsMjMgKzk1OCwzMCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgX2ZpbHRlcnMgPSBpbml0X2ZpbHRlcnMoKTsKLSAgICBpZiAoX2ZpbHRlcnMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9maWx0ZXJzID09IE5VTEwpIHsKKyAgICAgICAgX2ZpbHRlcnMgPSBpbml0X2ZpbHRlcnMoKTsKKyAgICAgICAgaWYgKF9maWx0ZXJzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgUHlfSU5DUkVGKF9maWx0ZXJzKTsKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJmaWx0ZXJzIiwgX2ZpbHRlcnMpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBfb25jZV9yZWdpc3RyeSA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoX29uY2VfcmVnaXN0cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9vbmNlX3JlZ2lzdHJ5ID09IE5VTEwpIHsKKyAgICAgICAgX29uY2VfcmVnaXN0cnkgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChfb25jZV9yZWdpc3RyeSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5X0lOQ1JFRihfb25jZV9yZWdpc3RyeSk7CiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX29uY2VyZWdpc3RyeSIsIF9vbmNlX3JlZ2lzdHJ5KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgX2RlZmF1bHRfYWN0aW9uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImRlZmF1bHQiKTsKLSAgICBpZiAoX2RlZmF1bHRfYWN0aW9uID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfZGVmYXVsdF9hY3Rpb24gPT0gTlVMTCkgeworICAgICAgICBfZGVmYXVsdF9hY3Rpb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZGVmYXVsdCIpOworICAgICAgICBpZiAoX2RlZmF1bHRfYWN0aW9uID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKF9kZWZhdWx0X2FjdGlvbik7CiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlZmF1bHRhY3Rpb24iLCBfZGVmYXVsdF9hY3Rpb24pIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIG07CmRpZmYgLS1naXQgYS9QeXRob24vYXNkbC5jIGIvUHl0aG9uL2FzZGwuYwppbmRleCBjMzBkN2QyMC4uZTdlMzI4MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzZGwuYworKysgYi9QeXRob24vYXNkbC5jCkBAIC0yLDcgKzIsNyBAQAogI2luY2x1ZGUgImFzZGwuaCIKIAogYXNkbF9zZXEgKgotYXNkbF9zZXFfbmV3KGludCBzaXplLCBQeUFyZW5hICphcmVuYSkKK2FzZGxfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFzZGxfc2VxICpzZXEgPSBOVUxMOwogICAgIHNpemVfdCBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwpAQCAtMzMsNyArMzMsNyBAQAogfQogCiBhc2RsX2ludF9zZXEgKgotYXNkbF9pbnRfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCithc2RsX2ludF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgYXNkbF9pbnRfc2VxICpzZXEgPSBOVUxMOwogICAgIHNpemVfdCBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IGQyZjA2M2IuLjBjMGMxYTYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTEsMjQgKzEsNTA3IEBACiAvKgogICogVGhpcyBmaWxlIGluY2x1ZGVzIGZ1bmN0aW9ucyB0byB0cmFuc2Zvcm0gYSBjb25jcmV0ZSBzeW50YXggdHJlZSAoQ1NUKSB0bwotICogYW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgKEFTVCkuICBUaGUgbWFpbiBmdW5jdGlvbiBpcyBQeUFTVF9Gcm9tTm9kZSgpLgorICogYW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgKEFTVCkuIFRoZSBtYWluIGZ1bmN0aW9uIGlzIFB5QVNUX0Zyb21Ob2RlKCkuCiAgKgogICovCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiUHl0aG9uLWFzdC5oIgotI2luY2x1ZGUgImdyYW1tYXIuaCIKICNpbmNsdWRlICJub2RlLmgiCiAjaW5jbHVkZSAiYXN0LmgiCiAjaW5jbHVkZSAidG9rZW4uaCIKLSNpbmNsdWRlICJwYXJzZXRvay5oIgotI2luY2x1ZGUgImdyYW1pbml0LmgiCiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KIAorc3RhdGljIGludCB2YWxpZGF0ZV9zdG10cyhhc2RsX3NlcSAqKTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfZXhwcnMoYXNkbF9zZXEgKiwgZXhwcl9jb250ZXh0X3R5LCBpbnQpOworc3RhdGljIGludCB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoYXNkbF9zZXEgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworc3RhdGljIGludCB2YWxpZGF0ZV9zdG10KHN0bXRfdHkpOworc3RhdGljIGludCB2YWxpZGF0ZV9leHByKGV4cHJfdHksIGV4cHJfY29udGV4dF90eSk7CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2NvbXByZWhlbnNpb24oYXNkbF9zZXEgKmdlbnMpCit7CisgICAgaW50IGk7CisgICAgaWYgKCFhc2RsX3NlcV9MRU4oZ2VucykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihnZW5zKTsgaSsrKSB7CisgICAgICAgIGNvbXByZWhlbnNpb25fdHkgY29tcCA9IGFzZGxfc2VxX0dFVChnZW5zLCBpKTsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGNvbXAtPnRhcmdldCwgU3RvcmUpIHx8CisgICAgICAgICAgICAhdmFsaWRhdGVfZXhwcihjb21wLT5pdGVyLCBMb2FkKSB8fAorICAgICAgICAgICAgIXZhbGlkYXRlX2V4cHJzKGNvbXAtPmlmcywgTG9hZCwgMCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3NsaWNlKHNsaWNlX3R5IHNsaWNlKQoreworICAgIHN3aXRjaCAoc2xpY2UtPmtpbmQpIHsKKyAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgIHJldHVybiAoIXNsaWNlLT52LlNsaWNlLmxvd2VyIHx8IHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuU2xpY2UubG93ZXIsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFzbGljZS0+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+di5JbnRlcmFjdGl2ZS5ib2R5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uX2tpbmQ6CisgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHIobW9kLT52LkV4cHJlc3Npb24uYm9keSwgTG9hZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VpdGVfa2luZDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdWl0ZSBpcyBub3QgdmFsaWQgaW4gdGhlIENQeXRob24gY29tcGlsZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiaW1wb3NzaWJsZSBtb2R1bGUgbm9kZSIpOworICAgICAgICByZXMgPSAwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyogVGhpcyBpcyBkb25lIGhlcmUsIHNvIGRlZmluZXMgbGlrZSAidGVzdCIgZG9uJ3QgaW50ZXJmZXJlIHdpdGggQVNUIHVzZSBhYm92ZS4gKi8KKyNpbmNsdWRlICJncmFtbWFyLmgiCisjaW5jbHVkZSAicGFyc2V0b2suaCIKKyNpbmNsdWRlICJncmFtaW5pdC5oIgorCiAvKiBEYXRhIHN0cnVjdHVyZSB1c2VkIGludGVybmFsbHkgKi8KIHN0cnVjdCBjb21waWxpbmcgewogICAgIGNoYXIgKmNfZW5jb2Rpbmc7IC8qIHNvdXJjZSBlbmNvZGluZyAqLwogICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIGFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbWVvcnkgKi8KICAgICBjb25zdCBjaGFyICpjX2ZpbGVuYW1lOyAvKiBmaWxlbmFtZSAqLworICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZTsgLyogTm9ybWFsaXphdGlvbiBmdW5jdGlvbiBmcm9tIHVuaWNvZGVkYXRhLiAqLworICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZV9hcmdzOyAvKiBOb3JtYWxpemF0aW9uIGFyZ3VtZW50IHR1cGxlLiAqLwogfTsKIAogc3RhdGljIGFzZGxfc2VxICpzZXFfZm9yX3Rlc3RsaXN0KHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqKTsKQEAgLTM4LDEyNyArNTIxLDk2IEBACiBzdGF0aWMgUHlPYmplY3QgKnBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmJ5dGVzbW9kZSk7CiAKLSNpZm5kZWYgTElORU5PCi0jZGVmaW5lIExJTkVOTyhuKSAgICAgICAoKG4pLT5uX2xpbmVubykKLSNlbmRpZgotCiAjZGVmaW5lIENPTVBfR0VORVhQICAgMAogI2RlZmluZSBDT01QX0xJU1RDT01QIDEKICNkZWZpbmUgQ09NUF9TRVRDT01QICAyCiAKK3N0YXRpYyBpbnQKK2luaXRfbm9ybWFsaXphdGlvbihzdHJ1Y3QgY29tcGlsaW5nICpjKQoreworICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidW5pY29kZWRhdGEiKTsKKyAgICBpZiAoIW0pCisgICAgICAgIHJldHVybiAwOworICAgIGMtPmNfbm9ybWFsaXplID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtLCAibm9ybWFsaXplIik7CisgICAgUHlfREVDUkVGKG0pOworICAgIGlmICghYy0+Y19ub3JtYWxpemUpCisgICAgICAgIHJldHVybiAwOworICAgIGMtPmNfbm9ybWFsaXplX2FyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoc04pIiwgIk5GS0MiLCBQeV9Ob25lKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGMtPmNfbm9ybWFsaXplX2FyZ3MsIDEsIE5VTEwpOworICAgIGlmICghYy0+Y19ub3JtYWxpemVfYXJncykgeworICAgICAgICBQeV9DTEVBUihjLT5jX25vcm1hbGl6ZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIGlkZW50aWZpZXIKLW5ld19pZGVudGlmaWVyKGNvbnN0IGNoYXIgKm4sIFB5QXJlbmEgKmFyZW5hKQorbmV3X2lkZW50aWZpZXIoY29uc3QgY2hhciAqbiwgc3RydWN0IGNvbXBpbGluZyAqYykKIHsKICAgICBQeU9iamVjdCAqaWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChuLCBzdHJsZW4obiksIE5VTEwpOwotICAgIFB5X1VOSUNPREUgKnU7CiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlkKTsKKyAgICAvKiBQeVVuaWNvZGVfRGVjb2RlVVRGOCBzaG91bGQgYWx3YXlzIHJldHVybiBhIHJlYWR5IHN0cmluZy4gKi8KKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKGlkKSk7CiAgICAgLyogQ2hlY2sgd2hldGhlciB0aGVyZSBhcmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlCiAgICAgICAgaWRlbnRpZmllcjsgaWYgc28sIG5vcm1hbGl6ZSB0byBORktDLiAqLwotICAgIGZvciAoOyAqdTsgdSsrKSB7Ci0gICAgICAgIGlmICgqdSA+PSAxMjgpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidW5pY29kZWRhdGEiKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppZDI7Ci0gICAgICAgICAgICBpZiAoIW0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZDIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG0sICJub3JtYWxpemUiLCAic08iLCAiTkZLQyIsIGlkKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKLSAgICAgICAgICAgIGlmICghaWQyKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGlkKSkgeworICAgICAgICBQeU9iamVjdCAqaWQyOworICAgICAgICBpZiAoIWMtPmNfbm9ybWFsaXplICYmICFpbml0X25vcm1hbGl6YXRpb24oYykpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpZCk7Ci0gICAgICAgICAgICBpZCA9IGlkMjsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjLT5jX25vcm1hbGl6ZV9hcmdzLCAxLCBpZCk7CisgICAgICAgIGlkMiA9IFB5T2JqZWN0X0NhbGwoYy0+Y19ub3JtYWxpemUsIGMtPmNfbm9ybWFsaXplX2FyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoaWQpOworICAgICAgICBpZiAoIWlkMikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZCA9IGlkMjsKICAgICB9CiAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJmlkKTsKLSAgICBQeUFyZW5hX0FkZFB5T2JqZWN0KGFyZW5hLCBpZCk7CisgICAgUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBpZCk7CiAgICAgcmV0dXJuIGlkOwogfQogCi0jZGVmaW5lIE5FV19JREVOVElGSUVSKG4pIG5ld19pZGVudGlmaWVyKFNUUihuKSwgYy0+Y19hcmVuYSkKLQotLyogVGhpcyByb3V0aW5lIHByb3ZpZGVzIGFuIGludmFsaWQgb2JqZWN0IGZvciB0aGUgc3ludGF4IGVycm9yLgotICAgVGhlIG91dGVybW9zdCByb3V0aW5lIG11c3QgdW5wYWNrIHRoaXMgZXJyb3IgYW5kIGNyZWF0ZSB0aGUKLSAgIHByb3BlciBvYmplY3QuICBXZSBkbyB0aGlzIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBwYXNzCi0gICB0aGUgZmlsZW5hbWUgdG8gZXZlcnl0aGluZyBmdW5jdGlvbi4KLQotICAgWFhYIE1heWJlIHdlIHNob3VsZCBqdXN0IHBhc3MgdGhlIGZpbGVuYW1lLi4uCi0qLworI2RlZmluZSBORVdfSURFTlRJRklFUihuKSBuZXdfaWRlbnRpZmllcihTVFIobiksIGMpCiAKIHN0YXRpYyBpbnQKLWFzdF9lcnJvcihjb25zdCBub2RlICpuLCBjb25zdCBjaGFyICplcnJzdHIpCithc3RfZXJyb3Ioc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgY29uc3QgY2hhciAqZXJybXNnKQogewotICAgIFB5T2JqZWN0ICp1ID0gUHlfQnVpbGRWYWx1ZSgiemlpIiwgZXJyc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCksICpzYXZlOwotICAgIGlmICghdSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgLyoKLSAgICAgKiBQcmV2ZW50IHRoZSBlcnJvciBmcm9tIGJlaW5nIGNoYWluZWQuIFB5RXJyX1NldE9iamVjdCB3aWxsIG5vcm1hbGl6ZSB0aGUKLSAgICAgKiBleGNlcHRpb24gaW4gb3JkZXIgdG8gY2hhaW4gaXQuIGFzdF9lcnJvcl9maW5pc2gsIGhvd2V2ZXIsIHJlcXVpcmVzIHRoZQotICAgICAqIGVycm9yIG5vdCB0byBiZSBub3JtYWxpemVkLgotICAgICAqLwotICAgIHNhdmUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5leGNfdmFsdWU7Ci0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+ZXhjX3ZhbHVlID0gTlVMTDsKLSAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3ludGF4RXJyb3IsIHUpOwotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPmV4Y192YWx1ZSA9IHNhdmU7Ci0gICAgUHlfREVDUkVGKHUpOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZAotYXN0X2Vycm9yX2ZpbmlzaChjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdGJhY2ssICplcnJzdHIsICpvZmZzZXQsICpsb2MsICp0bXA7CisgICAgUHlPYmplY3QgKnZhbHVlLCAqZXJyc3RyLCAqbG9jLCAqdG1wOwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmo7Ci0gICAgbG9uZyBsaW5lbm87CiAKLSAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7Ci0gICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5bnRheEVycm9yKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRiYWNrKTsKLSAgICBlcnJzdHIgPSBQeVR1cGxlX0dldEl0ZW0odmFsdWUsIDApOwotICAgIGlmICghZXJyc3RyKQotICAgICAgICByZXR1cm47Ci0gICAgUHlfSU5DUkVGKGVycnN0cik7Ci0gICAgbGluZW5vID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dldEl0ZW0odmFsdWUsIDEpKTsKLSAgICBpZiAobGluZW5vID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG9mZnNldCA9IFB5VHVwbGVfR2V0SXRlbSh2YWx1ZSwgMik7Ci0gICAgaWYgKCFvZmZzZXQpIHsKLSAgICAgICAgUHlfREVDUkVGKGVycnN0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKLQotICAgIGxvYyA9IFB5RXJyX1Byb2dyYW1UZXh0KGZpbGVuYW1lLCBsaW5lbm8pOworICAgIGxvYyA9IFB5RXJyX1Byb2dyYW1UZXh0KGMtPmNfZmlsZW5hbWUsIExJTkVOTyhuKSk7CiAgICAgaWYgKCFsb2MpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBsb2MgPSBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgZmlsZW5hbWVfb2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7Ci0gICAgZWxzZSB7CisgICAgaWYgKGMtPmNfZmlsZW5hbWUpIHsKKyAgICAgICAgZmlsZW5hbWVfb2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjLT5jX2ZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCFmaWxlbmFtZV9vYmopIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsb2MpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIGZpbGVuYW1lX29iaiA9IFB5X05vbmU7CiAgICAgfQotICAgIGlmIChmaWxlbmFtZV9vYmogIT0gTlVMTCkKLSAgICAgICAgdG1wID0gUHlfQnVpbGRWYWx1ZSgiKE5sT08pIiwgZmlsZW5hbWVfb2JqLCBsaW5lbm8sIG9mZnNldCwgbG9jKTsKLSAgICBlbHNlCi0gICAgICAgIHRtcCA9IE5VTEw7Ci0gICAgUHlfREVDUkVGKGxvYyk7Ci0gICAgaWYgKCF0bXApIHsKLSAgICAgICAgUHlfREVDUkVGKGVycnN0cik7Ci0gICAgICAgIHJldHVybjsKKyAgICB0bXAgPSBQeV9CdWlsZFZhbHVlKCIoTmlpTikiLCBmaWxlbmFtZV9vYmosIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBsb2MpOworICAgIGlmICghdG1wKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlcnJzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJtc2cpOworICAgIGlmICghZXJyc3RyKSB7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgdmFsdWUgPSBQeVR1cGxlX1BhY2soMiwgZXJyc3RyLCB0bXApOwogICAgIFB5X0RFQ1JFRihlcnJzdHIpOwogICAgIFB5X0RFQ1JFRih0bXApOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBQeUVycl9SZXN0b3JlKHR5cGUsIHZhbHVlLCB0YmFjayk7CisgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TeW50YXhFcnJvciwgdmFsdWUpOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogLyogbnVtX3N0bXRzKCkgcmV0dXJucyBudW1iZXIgb2YgY29udGFpbmVkIHN0YXRlbWVudHMuCkBAIC0yMzQsMTMgKzY4NiwxNyBAQAogICAgIHN0bXRfdHkgczsKICAgICBub2RlICpjaDsKICAgICBzdHJ1Y3QgY29tcGlsaW5nIGM7CisgICAgbW9kX3R5IHJlcyA9IE5VTEw7CiAKKyAgICBjLmNfYXJlbmEgPSBhcmVuYTsKKyAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICBjLmNfbm9ybWFsaXplID0gYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKICAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmNmX2ZsYWdzICYgUHlDRl9TT1VSQ0VfSVNfVVRGOCkgewogICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwogICAgICAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7CiAjaWYgMAotICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJlbmNvZGluZyBkZWNsYXJhdGlvbiBpbiBVbmljb2RlIHN0cmluZyIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OwogI2VuZGlmCiAgICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7CiAgICAgICAgIH0KQEAgLTI1MSwxNSArNzA3LDEzIEBACiAgICAgICAgIC8qIFBFUCAzMTIwICovCiAgICAgICAgIGMuY19lbmNvZGluZyA9ICJ1dGYtOCI7CiAgICAgfQotICAgIGMuY19hcmVuYSA9IGFyZW5hOwotICAgIGMuY19maWxlbmFtZSA9IGZpbGVuYW1lOwogCiAgICAgayA9IDA7CiAgICAgc3dpdGNoIChUWVBFKG4pKSB7CiAgICAgICAgIGNhc2UgZmlsZV9pbnB1dDoKICAgICAgICAgICAgIHN0bXRzID0gYXNkbF9zZXFfbmV3KG51bV9zdG10cyhuKSwgYXJlbmEpOwogICAgICAgICAgICAgaWYgKCFzdG10cykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobikgLSAxOyBpKyspIHsKICAgICAgICAgICAgICAgICBjaCA9IENISUxEKG4sIGkpOwogICAgICAgICAgICAgICAgIGlmIChUWVBFKGNoKSA9PSBORVdMSU5FKQpAQCAtMjY5LDcgKzcyMyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG51bSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIGNoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIGsrKywgcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMjc4LDQyICs3MzIsNDQgQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBDSElMRChjaCwgaiAqIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBrKyssIHMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIE1vZHVsZShzdG10cywgYXJlbmEpOworICAgICAgICAgICAgcmVzID0gTW9kdWxlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBldmFsX2lucHV0OiB7CiAgICAgICAgICAgICBleHByX3R5IHRlc3RsaXN0X2FzdDsKIAogICAgICAgICAgICAgLyogWFhYIFdoeSBub3QgY29tcF9mb3IgaGVyZT8gKi8KICAgICAgICAgICAgIHRlc3RsaXN0X2FzdCA9IGFzdF9mb3JfdGVzdGxpc3QoJmMsIENISUxEKG4sIDApKTsKICAgICAgICAgICAgIGlmICghdGVzdGxpc3RfYXN0KQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICByZXR1cm4gRXhwcmVzc2lvbih0ZXN0bGlzdF9hc3QsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIHJlcyA9IEV4cHJlc3Npb24odGVzdGxpc3RfYXN0LCBhcmVuYSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIHNpbmdsZV9pbnB1dDoKICAgICAgICAgICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBORVdMSU5FKSB7CiAgICAgICAgICAgICAgICAgc3RtdHMgPSBhc2RsX3NlcV9uZXcoMSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICghc3RtdHMpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgMCwgUGFzcyhuLT5uX2xpbmVubywgbi0+bl9jb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSkpOwogICAgICAgICAgICAgICAgIGlmICghYXNkbF9zZXFfR0VUKHN0bXRzLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICAgICAgcmVzID0gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKICAgICAgICAgICAgICAgICBudW0gPSBudW1fc3RtdHMobik7CiAgICAgICAgICAgICAgICAgc3RtdHMgPSBhc2RsX3NlcV9uZXcobnVtLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdG10cykKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgaWYgKG51bSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIG4pOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgMCwgcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMzI0LDIxICs3ODAsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIENISUxEKG4sIGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBpIC8gMiwgcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICByZXMgPSBJbnRlcmFjdGl2ZShzdG10cywgYXJlbmEpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbm9kZSAlZCBmb3IgUHlBU1RfRnJvbU5vZGUiLCBUWVBFKG4pKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gZXJyb3I6Ci0gICAgYXN0X2Vycm9yX2ZpbmlzaChmaWxlbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Cisgb3V0OgorICAgIGlmIChjLmNfbm9ybWFsaXplKSB7CisgICAgICAgIFB5X0RFQ1JFRihjLmNfbm9ybWFsaXplKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjLmNfbm9ybWFsaXplX2FyZ3MsIDEsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYy5jX25vcm1hbGl6ZV9hcmdzKTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKIH0KIAogLyogUmV0dXJuIHRoZSBBU1QgcmVwci4gb2YgdGhlIG9wZXJhdG9yIHJlcHJlc2VudGVkIGFzIHN5bnRheCAofCwgXiwgZXRjLikKQEAgLTM4MywxOCArODQ0LDE4IEBACiB9OwogCiBzdGF0aWMgaW50Ci1mb3JiaWRkZW5fbmFtZShpZGVudGlmaWVyIG5hbWUsIGNvbnN0IG5vZGUgKm4sIGludCBmdWxsX2NoZWNrcykKK2ZvcmJpZGRlbl9uYW1lKHN0cnVjdCBjb21waWxpbmcgKmMsIGlkZW50aWZpZXIgbmFtZSwgY29uc3Qgbm9kZSAqbiwgaW50IGZ1bGxfY2hlY2tzKQogewogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sobmFtZSkpOwogICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiX19kZWJ1Z19fIikgPT0gMCkgewotICAgICAgICBhc3RfZXJyb3IobiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgaWYgKGZ1bGxfY2hlY2tzKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKipwOwogICAgICAgICBmb3IgKHAgPSBGT1JCSURERU47ICpwOyBwKyspIHsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAqcCkgPT0gMCkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDMwLDcgKzg5MSw3IEBACiAgICAgc3dpdGNoIChlLT5raW5kKSB7CiAgICAgICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CiAgICAgICAgICAgICBlLT52LkF0dHJpYnV0ZS5jdHggPSBjdHg7Ci0gICAgICAgICAgICBpZiAoY3R4ID09IFN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKGUtPnYuQXR0cmlidXRlLmF0dHIsIG4sIDEpKQorICAgICAgICAgICAgaWYgKGN0eCA9PSBTdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShjLCBlLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgpAQCAtNDQzLDcgKzkwNCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOYW1lX2tpbmQ6CiAgICAgICAgICAgICBpZiAoY3R4ID09IFN0b3JlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGUtPnYuTmFtZS5pZCwgbiwgMSkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGUtPnYuTmFtZS5pZCwgbiwgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOyAvKiBmb3JiaWRkZW5fbmFtZSgpIGNhbGxzIGFzdF9lcnJvcigpICovCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlLT52Lk5hbWUuY3R4ID0gY3R4OwpAQCAtNDc2LDYgKzkzNyw3IEBACiAgICAgICAgICAgICBleHByX25hbWUgPSAiZ2VuZXJhdG9yIGV4cHJlc3Npb24iOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWWllbGRfa2luZDoKKyAgICAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJ5aWVsZCBleHByZXNzaW9uIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExpc3RDb21wX2tpbmQ6CkBAIC01MTYsNyArOTc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgJXMgJXMiLAogICAgICAgICAgICAgICAgICAgICAgIGN0eCA9PSBTdG9yZSA/ICJhc3NpZ24gdG8iIDogImRlbGV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgZXhwcl9uYW1lKTsKLSAgICAgICAgcmV0dXJuIGFzdF9lcnJvcihuLCBidWYpOworICAgICAgICByZXR1cm4gYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CiAgICAgfQogCiAgICAgLyogSWYgdGhlIExIUyBpcyBhIGxpc3Qgb3IgdHVwbGUsIHdlIG5lZWQgdG8gc2V0IHRoZSBhc3NpZ25tZW50CkBAIC02NjQsNyArMTEyNiw3IEBACiAgICAgbmFtZSA9IE5FV19JREVOVElGSUVSKGNoKTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChmb3JiaWRkZW5fbmFtZShuYW1lLCBjaCwgMCkpCisgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIGNoLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoTkNIKG4pID09IDMgJiYgVFlQRShDSElMRChuLCAxKSkgPT0gQ09MT04pIHsKQEAgLTY5NCw3ICsxMTU2LDcgQEAKICAgICBpbnQgaiA9IDA7IC8qIGluZGV4IGZvciBrd2RlZmF1bHRzIGFuZCBrd29ubHlhcmdzICovCiAKICAgICBpZiAoa3dvbmx5YXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIGFzdF9lcnJvcihDSElMRChuLCBzdGFydCksICJuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqIik7CisgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChuLCBzdGFydCksICJuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgYXNzZXJ0KGt3ZGVmYXVsdHMgIT0gTlVMTCk7CkBAIC03MjYsNyArMTE4OCw3IEBACiAgICAgICAgICAgICAgICAgYXJnbmFtZSA9IE5FV19JREVOVElGSUVSKGNoKTsKICAgICAgICAgICAgICAgICBpZiAoIWFyZ25hbWUpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGFyZ25hbWUsIGNoLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgYXJnbmFtZSwgY2gsIDApKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIGFyZyA9IGFyZyhhcmduYW1lLCBhbm5vdGF0aW9uLCBjLT5jX2FyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoIWFyZykKQEAgLTczNyw3ICsxMTk5LDcgQEAKICAgICAgICAgICAgIGNhc2UgRE9VQkxFU1RBUjoKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKGNoLCAidW5leHBlY3RlZCBub2RlIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLCAidW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgIH0KQEAgLTgyOSw3ICsxMjkxLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAobnBvc2FyZ3MgKyBua3dvbmx5YXJncyA+IDI1NSkgewotICAgICAgICBhc3RfZXJyb3IobiwgIm1vcmUgdGhhbiAyNTUgYXJndW1lbnRzIik7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAibW9yZSB0aGFuIDI1NSBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC04NTcsNyArMTMxOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2RlZmF1bHQgPSAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3VuZF9kZWZhdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1kZWZhdWx0IGFyZ3VtZW50IGZvbGxvd3MgZGVmYXVsdCBhcmd1bWVudCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC04NjksNyArMTMzMSw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNUQVI6CiAgICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKG4sIGkpLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQobiwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZWQgYXJndW1lbnRzIG11c3QgZm9sbG93IGJhcmUgKiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC04ODYsNyArMTM0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhcmFyZyA9IE5FV19JREVOVElGSUVSKENISUxEKGNoLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdmFyYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZSh2YXJhcmcsIENISUxEKGNoLCAwKSwgMCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCB2YXJhcmcsIENISUxEKGNoLCAwKSwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgaWYgKE5DSChjaCkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0aGVyZSBpcyBhbiBhbm5vdGF0aW9uIG9uIHRoZSB2YXJhcmcgKi8KQEAgLTkxNyw3ICsxMzc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFrd2FyZ2Fubm90YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGt3YXJnLCBDSElMRChjaCwgMCksIDApKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBrd2FyZywgQ0hJTEQoY2gsIDApLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAzNiw3ICsxNDk4LDcgQEAKICAgICBuYW1lID0gTkVXX0lERU5USUZJRVIoQ0hJTEQobiwgbmFtZV9pKSk7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZm9yYmlkZGVuX25hbWUobmFtZSwgQ0hJTEQobiwgbmFtZV9pKSwgMCkpCisgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIENISUxEKG4sIG5hbWVfaSksIDApKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhcmdzID0gYXN0X2Zvcl9hcmd1bWVudHMoYywgQ0hJTEQobiwgbmFtZV9pICsgMSkpOwogICAgIGlmICghYXJncykKQEAgLTEzNzcsMTAgKzE4MzksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICAgICAgICAgICAgICAgcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZXJyc3RyKTsKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKHVuaWNvZGUgZXJyb3IpICVzIiwgcyk7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCBidWYpOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgYnVmKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVycnN0cik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICIodW5pY29kZSBlcnJvcikgdW5rbm93biBlcnJvciIpOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgIih1bmljb2RlIGVycm9yKSB1bmtub3duIGVycm9yIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwpAQCAtMTg5NywxMiArMjM1OSwyNSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfYmlub3AoYywgbik7CiAgICAgICAgIGNhc2UgeWllbGRfZXhwcjogeworICAgICAgICAgICAgbm9kZSAqYW4gPSBOVUxMOworICAgICAgICAgICAgbm9kZSAqZW4gPSBOVUxMOworICAgICAgICAgICAgaW50IGlzX2Zyb20gPSAwOwogICAgICAgICAgICAgZXhwcl90eSBleHAgPSBOVUxMOwotICAgICAgICAgICAgaWYgKE5DSChuKSA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgZXhwID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBDSElMRChuLCAxKSk7CisgICAgICAgICAgICBpZiAoTkNIKG4pID4gMSkKKyAgICAgICAgICAgICAgICBhbiA9IENISUxEKG4sIDEpOyAvKiB5aWVsZF9hcmcgKi8KKyAgICAgICAgICAgIGlmIChhbikgeworICAgICAgICAgICAgICAgIGVuID0gQ0hJTEQoYW4sIE5DSChhbikgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoTkNIKGFuKSA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIGlzX2Zyb20gPSAxOworICAgICAgICAgICAgICAgICAgICBleHAgPSBhc3RfZm9yX2V4cHIoYywgZW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGV4cCA9IGFzdF9mb3JfdGVzdGxpc3QoYywgZW4pOwogICAgICAgICAgICAgICAgIGlmICghZXhwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc19mcm9tKQorICAgICAgICAgICAgICAgIHJldHVybiBZaWVsZEZyb20oZXhwLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgICAgICByZXR1cm4gWWllbGQoZXhwLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBmYWN0b3I6CkBAIC0xOTI3LDcgKzI0MDIsNyBAQAogICAgIC8qCiAgICAgICBhcmdsaXN0OiAoYXJndW1lbnQgJywnKSogKGFyZ3VtZW50IFsnLCddfCAnKicgdGVzdCBbJywnICcqKicgdGVzdF0KICAgICAgICAgICAgICAgIHwgJyoqJyB0ZXN0KQotICAgICAgYXJndW1lbnQ6IFt0ZXN0ICc9J10gdGVzdCBbY29tcF9mb3JdICAgICAgICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKKyAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddICh0ZXN0KSBbY29tcF9mb3JdICAgICAgICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKICAgICAqLwogCiAgICAgaW50IGksIG5hcmdzLCBua2V5d29yZHMsIG5nZW5zOwpAQCAtMTk1MiwxNCArMjQyNywxNCBAQAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChuZ2VucyA+IDEgfHwgKG5nZW5zICYmIChuYXJncyB8fCBua2V5d29yZHMpKSkgewotICAgICAgICBhc3RfZXJyb3IobiwgIkdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCAiCisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkICIKICAgICAgICAgICAgICAgICAgICJpZiBub3Qgc29sZSBhcmd1bWVudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAobmFyZ3MgKyBua2V5d29yZHMgKyBuZ2VucyA+IDI1NSkgewotICAgICAgYXN0X2Vycm9yKG4sICJtb3JlIHRoYW4gMjU1IGFyZ3VtZW50cyIpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAibW9yZSB0aGFuIDI1NSBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgYXJncyA9IGFzZGxfc2VxX25ldyhuYXJncyArIG5nZW5zLCBjLT5jX2FyZW5hKTsKQEAgLTE5NzYsMTIgKzI0NTEsMTIgQEAKICAgICAgICAgICAgIGV4cHJfdHkgZTsKICAgICAgICAgICAgIGlmIChOQ0goY2gpID09IDEpIHsKICAgICAgICAgICAgICAgICBpZiAobmtleXdvcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksCisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWtleXdvcmQgYXJnIGFmdGVyIGtleXdvcmQgYXJnIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodmFyYXJnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksCisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBuYW1lZCBhcmd1bWVudHMgbWF5IGZvbGxvdyAqZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0yMDExLDE5ICsyNDg2LDE5IEBACiAgICAgICAgICAgICAgICAgICogdGhlbiBpcyB2ZXJ5IGNvbmZ1c2luZy4KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBpZiAoZS0+a2luZCA9PSBMYW1iZGFfa2luZCkgewotICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwgImxhbWJkYSBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50Iik7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImxhbWJkYSBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKLSAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksICJrZXl3b3JkIGNhbid0IGJlIGFuIGV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGtleSA9IGUtPnYuTmFtZS5pZDsKICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbmtleXdvcmRzOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gKChrZXl3b3JkX3R5KWFzZGxfc2VxX0dFVChrZXl3b3JkcywgaykpLT5hcmc7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUodG1wLCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLCAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImtleXdvcmQgYXJndW1lbnQgcmVwZWF0ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjExNiw3ICsyNTkxLDcgQEAKICAgICAgICAgICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjaCwgImlsbGVnYWwgZXhwcmVzc2lvbiBmb3IgYXVnbWVudGVkIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsICJpbGxlZ2FsIGV4cHJlc3Npb24gZm9yIGF1Z21lbnRlZCBhc3NpZ25tZW50Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtMjE0OSw3ICsyNjI0LDcgQEAKICAgICAgICAgICAgIGV4cHJfdHkgZTsKICAgICAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgaSk7CiAgICAgICAgICAgICBpZiAoVFlQRShjaCkgPT0geWllbGRfZXhwcikgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjaCwgImFzc2lnbm1lbnQgdG8geWllbGQgZXhwcmVzc2lvbiBub3QgcG9zc2libGUiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsICJhc3NpZ25tZW50IHRvIHlpZWxkIGV4cHJlc3Npb24gbm90IHBvc3NpYmxlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBjaCk7CkBAIC0yMjIxLDcgKzI2OTYsNyBAQAogICAgICAgY29udGludWVfc3RtdDogJ2NvbnRpbnVlJwogICAgICAgcmV0dXJuX3N0bXQ6ICdyZXR1cm4nIFt0ZXN0bGlzdF0KICAgICAgIHlpZWxkX3N0bXQ6IHlpZWxkX2V4cHIKLSAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgdGVzdGxpc3QKKyAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgdGVzdGxpc3QgfCAneWllbGQnICdmcm9tJyB0ZXN0CiAgICAgICByYWlzZV9zdG10OiAncmFpc2UnIFt0ZXN0IFsnLCcgdGVzdCBbJywnIHRlc3RdXV0KICAgICAqLwogICAgIG5vZGUgKmNoOwpAQCAtMjI5NiwxMSArMjc3MSwxMSBAQAogICAgICAgICAgICAgICAgIHN0ciA9IE5FV19JREVOVElGSUVSKHN0cl9ub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKHN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKHN0ciwgc3RyX25vZGUsIDApKQorICAgICAgICAgICAgICAgIGlmIChzdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShjLCBzdHIsIHN0cl9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUobmFtZSwgbmFtZV9ub2RlLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgbmFtZSwgbmFtZV9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYWxpYXMobmFtZSwgc3RyLCBjLT5jX2FyZW5hKTsKQEAgLTIzMTksNyArMjc5NCw3IEBACiAgICAgICAgICAgICAgICAgYS0+YXNuYW1lID0gTkVXX0lERU5USUZJRVIoYXNuYW1lX25vZGUpOwogICAgICAgICAgICAgICAgIGlmICghYS0+YXNuYW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYS0+YXNuYW1lLCBhc25hbWVfbm9kZSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGEtPmFzbmFtZSwgYXNuYW1lX25vZGUsIDApKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gYTsKICAgICAgICAgICAgIH0KQEAgLTIzMzAsNyArMjgwNSw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9IE5FV19JREVOVElGSUVSKG5hbWVfbm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAoc3RvcmUgJiYgZm9yYmlkZGVuX25hbWUobmFtZSwgbmFtZV9ub2RlLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoYywgbmFtZSwgbmFtZV9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFsaWFzKG5hbWUsIE5VTEwsIGMtPmNfYXJlbmEpOwogICAgICAgICAgICAgfQpAQCAtMjQ1OSwxMyArMjkzNCwxMyBAQAogICAgICAgICAgICAgbiA9IENISUxEKG4sIGlkeCk7CiAgICAgICAgICAgICBuX2NoaWxkcmVuID0gTkNIKG4pOwogICAgICAgICAgICAgaWYgKG5fY2hpbGRyZW4gJSAyID09IDApIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgInRyYWlsaW5nIGNvbW1hIG5vdCBhbGxvd2VkIHdpdGhvdXQiCisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJ0cmFpbGluZyBjb21tYSBub3QgYWxsb3dlZCB3aXRob3V0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1cnJvdW5kaW5nIHBhcmVudGhlc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiVW5leHBlY3RlZCBub2RlLXR5cGUgaW4gZnJvbS1pbXBvcnQiKTsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiVW5leHBlY3RlZCBub2RlLXR5cGUgaW4gZnJvbS1pbXBvcnQiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTI4NzEsNyArMzM0Niw3IEBACiAgICAgICAgIGlkZW50aWZpZXIgZSA9IE5FV19JREVOVElGSUVSKENISUxEKGV4YywgMykpOwogICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGUsIENISUxEKGV4YywgMyksIDApKQorICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgZSwgQ0hJTEQoZXhjLCAzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChleGMsIDEpKTsKICAgICAgICAgaWYgKCFleHByZXNzaW9uKQpAQCAtMjg5NSw3ICszMzcwLDcgQEAKIHsKICAgICBjb25zdCBpbnQgbmNoID0gTkNIKG4pOwogICAgIGludCBuX2V4Y2VwdCA9IChuY2ggLSAzKS8zOwotICAgIGFzZGxfc2VxICpib2R5LCAqb3JlbHNlID0gTlVMTCwgKmZpbmFsbHkgPSBOVUxMOworICAgIGFzZGxfc2VxICpib2R5LCAqaGFuZGxlcnMgPSBOVUxMLCAqb3JlbHNlID0gTlVMTCwgKmZpbmFsbHkgPSBOVUxMOwogCiAgICAgUkVRKG4sIHRyeV9zdG10KTsKIApAQCAtMjkzMCwxNSArMzQwNSwxNCBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQobiwgbmNoIC0gMykpICE9IGV4Y2VwdF9jbGF1c2UpIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJtYWxmb3JtZWQgJ3RyeScgc3RhdGVtZW50Iik7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAibWFsZm9ybWVkICd0cnknIHN0YXRlbWVudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAobl9leGNlcHQgPiAwKSB7CiAgICAgICAgIGludCBpOwotICAgICAgICBzdG10X3R5IGV4Y2VwdF9zdDsKICAgICAgICAgLyogcHJvY2VzcyBleGNlcHQgc3RhdGVtZW50cyB0byBjcmVhdGUgYSB0cnkgLi4uIGV4Y2VwdCAqLwotICAgICAgICBhc2RsX3NlcSAqaGFuZGxlcnMgPSBhc2RsX3NlcV9uZXcobl9leGNlcHQsIGMtPmNfYXJlbmEpOworICAgICAgICBoYW5kbGVycyA9IGFzZGxfc2VxX25ldyhuX2V4Y2VwdCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGlmIChoYW5kbGVycyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTI5NDksMjggKzM0MjMsMTUgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChoYW5kbGVycywgaSwgZSk7CiAgICAgICAgIH0KLQotICAgICAgICBleGNlcHRfc3QgPSBUcnlFeGNlcHQoYm9keSwgaGFuZGxlcnMsIG9yZWxzZSwgTElORU5PKG4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgaWYgKCFmaW5hbGx5KQotICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdF9zdDsKLQotICAgICAgICAvKiBpZiBhICdmaW5hbGx5JyBpcyBwcmVzZW50IHRvbywgd2UgbmVzdCB0aGUgVHJ5RXhjZXB0IHdpdGhpbiBhCi0gICAgICAgICAgIFRyeUZpbmFsbHkgdG8gZW11bGF0ZSB0cnkgLi4uIGV4Y2VwdCAuLi4gZmluYWxseSAqLwotICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KDEsIGMtPmNfYXJlbmEpOwotICAgICAgICBpZiAoYm9keSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCAwLCBleGNlcHRfc3QpOwogICAgIH0KIAotICAgIC8qIG11c3QgYmUgYSB0cnkgLi4uIGZpbmFsbHkgKGV4Y2VwdCBjbGF1c2VzIGFyZSBpbiBib2R5LCBpZiBhbnkgZXhpc3QpICovCi0gICAgYXNzZXJ0KGZpbmFsbHkgIT0gTlVMTCk7Ci0gICAgcmV0dXJuIFRyeUZpbmFsbHkoYm9keSwgZmluYWxseSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIGFzc2VydChmaW5hbGx5ICE9IE5VTEwgfHwgYXNkbF9zZXFfTEVOKGhhbmRsZXJzKSk7CisgICAgcmV0dXJuIFRyeShib2R5LCBoYW5kbGVycywgb3JlbHNlLCBmaW5hbGx5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIC8qIHdpdGhfaXRlbTogdGVzdCBbJ2FzJyBleHByXSAqLwotc3RhdGljIHN0bXRfdHkKLWFzdF9mb3Jfd2l0aF9pdGVtKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGFzZGxfc2VxICpjb250ZW50KQorc3RhdGljIHdpdGhpdGVtX3R5Cithc3RfZm9yX3dpdGhfaXRlbShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewogICAgIGV4cHJfdHkgY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzID0gTlVMTDsKIApAQCAtMjk4OSw0MyArMzQ1MCwzNCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdpdGgoY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzLCBjb250ZW50LCBMSU5FTk8obiksCi0gICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICByZXR1cm4gd2l0aGl0ZW0oY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzLCBjLT5jX2FyZW5hKTsKIH0KIAogLyogd2l0aF9zdG10OiAnd2l0aCcgd2l0aF9pdGVtICgnLCcgd2l0aF9pdGVtKSogJzonIHN1aXRlICovCiBzdGF0aWMgc3RtdF90eQogYXN0X2Zvcl93aXRoX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICBpbnQgaTsKLSAgICBzdG10X3R5IHJldDsKLSAgICBhc2RsX3NlcSAqaW5uZXI7CisgICAgaW50IGksIG5faXRlbXM7CisgICAgYXNkbF9zZXEgKml0ZW1zLCAqYm9keTsKIAogICAgIFJFUShuLCB3aXRoX3N0bXQpOwogCi0gICAgLyogcHJvY2VzcyB0aGUgd2l0aCBpdGVtcyBpbnNpZGUtb3V0ICovCi0gICAgaSA9IE5DSChuKSAtIDE7Ci0gICAgLyogdGhlIHN1aXRlIG9mIHRoZSBpbm5lcm1vc3Qgd2l0aCBpdGVtIGlzIHRoZSBzdWl0ZSBvZiB0aGUgd2l0aCBzdG10ICovCi0gICAgaW5uZXIgPSBhc3RfZm9yX3N1aXRlKGMsIENISUxEKG4sIGkpKTsKLSAgICBpZiAoIWlubmVyKQorICAgIG5faXRlbXMgPSAoTkNIKG4pIC0gMikgLyAyOworICAgIGl0ZW1zID0gYXNkbF9zZXFfbmV3KG5faXRlbXMsIGMtPmNfYXJlbmEpOworICAgIGlmICghaXRlbXMpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBpIC09IDI7Ci0gICAgICAgIHJldCA9IGFzdF9mb3Jfd2l0aF9pdGVtKGMsIENISUxEKG4sIGkpLCBpbm5lcik7Ci0gICAgICAgIGlmICghcmV0KQorICAgIGZvciAoaSA9IDE7IGkgPCBOQ0gobikgLSAyOyBpICs9IDIpIHsKKyAgICAgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzdF9mb3Jfd2l0aF9pdGVtKGMsIENISUxEKG4sIGkpKTsKKyAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qIHdhcyB0aGlzIHRoZSBsYXN0IGl0ZW0/ICovCi0gICAgICAgIGlmIChpID09IDEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgLyogaWYgbm90LCB3cmFwIHRoZSByZXN1bHQgc28gZmFyIGluIGEgbmV3IHNlcXVlbmNlICovCi0gICAgICAgIGlubmVyID0gYXNkbF9zZXFfbmV3KDEsIGMtPmNfYXJlbmEpOwotICAgICAgICBpZiAoIWlubmVyKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFzZGxfc2VxX1NFVChpbm5lciwgMCwgcmV0KTsKKyAgICAgICAgYXNkbF9zZXFfU0VUKGl0ZW1zLCAoaSAtIDEpIC8gMiwgaXRlbSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJldDsKKyAgICBib2R5ID0gYXN0X2Zvcl9zdWl0ZShjLCBDSElMRChuLCBOQ0gobikgLSAxKSk7CisgICAgaWYgKCFib2R5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBXaXRoKGl0ZW1zLCBib2R5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBzdG10X3R5CkBAIC0zMDQ1LDcgKzM0OTcsNyBAQAogICAgICAgICBjbGFzc25hbWUgPSBORVdfSURFTlRJRklFUihDSElMRChuLCAxKSk7CiAgICAgICAgIGlmICghY2xhc3NuYW1lKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKKyAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCiAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CkBAIC0zMDU4LDcgKzM1MTAsNyBAQAogICAgICAgICBjbGFzc25hbWUgPSBORVdfSURFTlRJRklFUihDSElMRChuLCAxKSk7CiAgICAgICAgIGlmICghY2xhc3NuYW1lKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKKyAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCiAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CkBAIC0zMDgzLDcgKzM1MzUsNyBAQAogICAgIGNsYXNzbmFtZSA9IE5FV19JREVOVElGSUVSKENISUxEKG4sIDEpKTsKICAgICBpZiAoIWNsYXNzbmFtZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGZvcmJpZGRlbl9uYW1lKGNsYXNzbmFtZSwgQ0hJTEQobiwgMSksIDApKQorICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDEpLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBjYWxsLT52LkNhbGwuYXJncywgY2FsbC0+di5DYWxsLmtleXdvcmRzLApAQCAtMzIwOSwyMCArMzY2MSwxNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVjb2RlX3V0Zjgoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqKnNQdHIsIGNvbnN0IGNoYXIgKmVuZCwgY2hhciogZW5jb2RpbmcpCitkZWNvZGVfdXRmOChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICoqc1B0ciwgY29uc3QgY2hhciAqZW5kKQogewotICAgIFB5T2JqZWN0ICp1LCAqdjsKICAgICBjaGFyICpzLCAqdDsKICAgICB0ID0gcyA9IChjaGFyICopKnNQdHI7CiAgICAgLyogd2hpbGUgKHMgPCBlbmQgJiYgKnMgIT0gJ1xcJykgcysrOyAqLyAvKiBpbmVmZmljaWVudCBmb3IgdSIuLiIgKi8KICAgICB3aGlsZSAocyA8IGVuZCAmJiAoKnMgJiAweDgwKSkgcysrOwogICAgICpzUHRyID0gczsKLSAgICB1ID0gUHlVbmljb2RlX0RlY29kZVVURjgodCwgcyAtIHQsIE5VTEwpOwotICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIGVuY29kaW5nLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYodSk7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHQsIHMgLSB0LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMyMzQsNyArMzY4MCw2IEBACiAgICAgY29uc3QgY2hhciAqZW5kOwogCiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgYnVmID0gKGNoYXIgKilzOwogICAgICAgICB1ID0gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwpAQCAtMzI1NywyMiArMzcwMiwyMCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdzsKLSAgICAgICAgICAgICAgICBjaGFyICpyOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgcm4sIGk7Ci0gICAgICAgICAgICAgICAgdyA9IGRlY29kZV91dGY4KGMsICZzLCBlbmQsICJ1dGYtMzItYmUiKTsKKyAgICAgICAgICAgICAgICBpbnQga2luZDsKKyAgICAgICAgICAgICAgICB2b2lkICpkYXRhOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBpOworICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKICAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHIgPSBQeUJ5dGVzX0FTX1NUUklORyh3KTsKLSAgICAgICAgICAgICAgICBybiA9IFB5X1NJWkUodyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHJuICUgNCA9PSAwKTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcm47IGkgKz0gNCkgewotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDJ4JTAyeCUwMnglMDJ4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAwXSAmIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgMV0gJiAweEZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbaSArIDJdICYgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAzXSAmIDB4RkYpOworICAgICAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh3KTsKKyAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOwogICAgICAgICAgICAgICAgICAgICBwICs9IDEwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLwpAQCAtMzMwNiwxMyArMzc0OSwyMSBAQAogICAgIGludCByYXdtb2RlID0gMDsKICAgICBpbnQgbmVlZF9lbmNvZGluZzsKICAgICBpZiAoaXNhbHBoYShxdW90ZSkpIHsKLSAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKLSAgICAgICAgICAgIHF1b3RlID0gKisrczsKLSAgICAgICAgICAgICpieXRlc21vZGUgPSAxOwotICAgICAgICB9Ci0gICAgICAgIGlmIChxdW90ZSA9PSAncicgfHwgcXVvdGUgPT0gJ1InKSB7Ci0gICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgd2hpbGUgKCEqYnl0ZXNtb2RlIHx8ICFyYXdtb2RlKSB7CisgICAgICAgICAgICBpZiAocXVvdGUgPT0gJ2InIHx8IHF1b3RlID09ICdCJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICd1JyB8fCBxdW90ZSA9PSAnVScpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAncicgfHwgcXVvdGUgPT0gJ1InKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgICAgIHJhd21vZGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHF1b3RlICE9ICdcJycgJiYgcXVvdGUgIT0gJ1wiJykgewpAQCAtMzM0MywxMCArMzc5NCwxMCBAQAogICAgIH0KICAgICBpZiAoKmJ5dGVzbW9kZSkgewogICAgICAgICAvKiBEaXNhbGxvdyBub24tYXNjaWkgY2hhcmFjdGVycyAoYnV0IG5vdCBlc2NhcGVzKSAqLwotICAgICAgICBjb25zdCBjaGFyICpjOwotICAgICAgICBmb3IgKGMgPSBzOyAqYzsgYysrKSB7Ci0gICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKmMpID49IDB4ODApIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgImJ5dGVzIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgIgorICAgICAgICBjb25zdCBjaGFyICpjaDsKKyAgICAgICAgZm9yIChjaCA9IHM7ICpjaDsgY2grKykgeworICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpjaCkgPj0gMHg4MCkgeworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYnl0ZXMgY2FuIG9ubHkgY29udGFpbiBBU0NJSSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXRlcmFsIGNoYXJhY3RlcnMuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0zMzk0LDcgKzM4NDUsNyBAQAogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBpZiAoKmJ5dGVzbW9kZSAhPSBzdWJibSkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKaW5kZXggYjg1ZTM3Yi4uMGU2ZTZmZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2JsdGlubW9kdWxlLmMKKysrIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKQEAgLTYsNiArNiw5IEBACiAjaW5jbHVkZSAibm9kZS5oIgogI2luY2x1ZGUgImNvZGUuaCIKIAorI2luY2x1ZGUgImFzZGwuaCIKKyNpbmNsdWRlICJhc3QuaCIKKwogI2luY2x1ZGUgPGN0eXBlLmg+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+IHdhaXQgKi8KICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpID09IHRzdGF0ZSkgewotCSAgICBSRVNFVF9HSUxfRFJPUF9SRVFVRVNUKCk7CisgICAgICAgIFJFU0VUX0dJTF9EUk9QX1JFUVVFU1QoKTsKICAgICAgICAgICAgIC8qIE5PVEU6IGlmIENPTkRfV0FJVCBkb2VzIG5vdCBhdG9taWNhbGx5IHN0YXJ0IHdhaXRpbmcgd2hlbgogICAgICAgICAgICAgICAgcmVsZWFzaW5nIHRoZSBtdXRleCwgYW5vdGhlciB0aHJlYWQgY2FuIHJ1biB0aHJvdWdoLCB0YWtlCiAgICAgICAgICAgICAgICB0aGUgR0lMIGFuZCBkcm9wIGl0IGFnYWluLCBhbmQgcmVzZXQgdGhlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgYmVmb3JlIHdlIGV2ZW4gaGFkIGEgY2hhbmNlIHRvIHdhaXQgZm9yIGl0LiAqLwogICAgICAgICAgICAgQ09ORF9XQUlUKHN3aXRjaF9jb25kLCBzd2l0Y2hfbXV0ZXgpOwotCX0KKyAgICB9CiAgICAgICAgIE1VVEVYX1VOTE9DSyhzd2l0Y2hfbXV0ZXgpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvZGVjcy5jIGIvUHl0aG9uL2NvZGVjcy5jCmluZGV4IDkwZjFjZjYuLjU0NzA1MDAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb2RlY3MuYworKysgYi9QeXRob24vY29kZWNzLmMKQEAgLTExLDYgKzExLDggQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxjdHlwZS5oPgogCitjb25zdCBjaGFyICpQeV9oZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisKIC8qIC0tLSBDb2RlYyBSZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBJbXBvcnQgdGhlIHN0YW5kYXJkIGVuY29kaW5ncyBwYWNrYWdlIHdoaWNoIHdpbGwgcmVnaXN0ZXIgdGhlIGZpcnN0CkBAIC00NjUsOSArNDY3LDExIEBACiAKIHN0YXRpYyB2b2lkIHdyb25nX2V4Y2VwdGlvbl90eXBlKFB5T2JqZWN0ICpleGMpCiB7Ci0gICAgUHlPYmplY3QgKnR5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV4YywgIl9fY2xhc3NfXyIpOworICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIFB5T2JqZWN0ICp0eXBlID0gX1B5T2JqZWN0X0dldEF0dHJJZChleGMsICZQeUlkX19fY2xhc3NfXyk7CiAgICAgaWYgKHR5cGUgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodHlwZSwgIl9fbmFtZV9fIik7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTUwNiw1NyArNTEwLDU4IEBACiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICAvKiBvdWNoOiBwYXNzaW5nIE5VTEwsIDAsIHBvcyBnaXZlcyBOb25lIGluc3RlYWQgb2YgdScnICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgJmVuZCwgMCwgZW5kKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIFB5VW5pY29kZV9OZXcoMCwgMCksIGVuZCk7CiB9CiAKIAogUHlPYmplY3QgKlB5Q29kZWNfUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKQogewotICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0OwotICAgIFB5X3NzaXplX3QgZW5kOwotICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQsIGksIGxlbjsKIAogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGVuZC1zdGFydCk7CisgICAgICAgIGxlbiA9IGVuZCAtIHN0YXJ0OworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KGxlbiwgJz8nKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAocCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyksIGkgPSBzdGFydDsKLSAgICAgICAgICAgIGk8ZW5kOyArK3AsICsraSkKLSAgICAgICAgICAgICpwID0gJz8nOwotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzdHVwbGU7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQorICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksICc/Jyk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgewotICAgICAgICBQeV9VTklDT0RFIHJlcyA9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgJnJlcywgMSwgZW5kKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihDbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KVB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGVuZC1zdGFydCk7CisgICAgICAgIGxlbiA9IGVuZCAtIHN0YXJ0OworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KGxlbiwgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKSwgaSA9IHN0YXJ0OwotICAgICAgICAgICAgaTxlbmQ7ICsrcCwgKytpKQotICAgICAgICAgICAgKnAgPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUjsKLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlc3R1cGxlOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CkBAIC01NjksODIgKzU3NCw3MiBAQAogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgaW50IHJlc3NpemU7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQsIHJlc3NpemUgPSAwOyBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0gICAgICAgICAgICBpZiAoKnA8MTApCisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCByZXNzaXplID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgICAgIGlmIChjaDwxMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrMSsxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMisyKzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrMysxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNCsxOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNSsxOwotI2Vsc2UKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkKLSAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNSsxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwMCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzYrMTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNysxOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgLyogYWxsb2NhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHJlc3NpemUpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHJlc3NpemUsIDEyNyk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCBvdXRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICAgICAgICAgIHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgYyA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7CiAgICAgICAgICAgICBpbnQgZGlnaXRzOwogICAgICAgICAgICAgaW50IGJhc2U7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgICpvdXRwKysgPSAnJic7CiAgICAgICAgICAgICAqb3V0cCsrID0gJyMnOwotICAgICAgICAgICAgaWYgKCpwPDEwKSB7CisgICAgICAgICAgICBpZiAoY2g8MTApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAxOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAzOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA0OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwOwogICAgICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNTsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDA7CiAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwKSB7Ci0gICAgICAgICAgICAgICAgZGlnaXRzID0gNTsKLSAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNjsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDAwOwogICAgICAgICAgICAgfQpAQCAtNjUyLDE2ICs2NDcsMTUgQEAKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA3OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDAwOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICB3aGlsZSAoZGlnaXRzLS0+MCkgewotICAgICAgICAgICAgICAgICpvdXRwKysgPSAnMCcgKyBjL2Jhc2U7Ci0gICAgICAgICAgICAgICAgYyAlPSBiYXNlOworICAgICAgICAgICAgICAgICpvdXRwKysgPSAnMCcgKyBjaC9iYXNlOworICAgICAgICAgICAgICAgIGNoICU9IGJhc2U7CiAgICAgICAgICAgICAgICAgYmFzZSAvPSAxMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICpvdXRwKysgPSAnOyc7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KQEAgLTY3MSw4NyArNjY1LDY1IEBACiAgICAgfQogfQogCi1zdGF0aWMgUHlfVU5JQ09ERSBoZXhkaWdpdHNbXSA9IHsKLSAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywKLSAgICAnOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJwotfTsKLQogUHlPYmplY3QgKlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKQogewotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSNkZWZpbmUgSVNfU1VSUk9HQVRFX1BBSVIocCwgZW5kKSBcCi0gICAgKCpwID49IDB4RDgwMCAmJiAqcCA8PSAweERCRkYgJiYgKHAgKyAxKSA8IGVuZCAmJiBcCi0gICAgICoocCArIDEpID49IDB4REMwMCAmJiAqKHAgKyAxKSA8PSAweERGRkYpCi0jZWxzZQotI2RlZmluZSBJU19TVVJST0dBVEVfUEFJUihwLCBlbmQpIDAKLSNlbmRpZgogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgaW50IHJlc3NpemU7CisgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgcmVzc2l6ZSA9IDA7IHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGlmICgqcCA+PSAweDAwMDEwMDAwKQorICAgICAgICBmb3IgKGkgPSBzdGFydCwgcmVzc2l6ZSA9IDA7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgICAgIGlmIChjID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OwotICAgICAgICAgICAgZWxzZQotI2VuZGlmCi0gICAgICAgICAgICBpZiAoKnAgPj0gMHgxMDApIHsKLSAgICAgICAgICAgICAgICBpZiAoSVNfU1VSUk9HQVRFX1BBSVIocCwgc3RhcnRwK2VuZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErODsKLSAgICAgICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CisgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErNDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSsyOwogICAgICAgICB9Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCByZXNzaXplKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOwogICAgICAgICBpZiAocmVzPT1OVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgb3V0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgICAgICAgICBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0gICAgICAgICAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCkgKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKKyAgICAgICAgICAgIGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgICpvdXRwKysgPSAnXFwnOwotICAgICAgICAgICAgaWYgKElTX1NVUlJPR0FURV9QQUlSKHAsIHN0YXJ0cCtlbmQpKSB7Ci0gICAgICAgICAgICAgICAgYyA9ICgoKnAgJiAweDNGRikgPDwgMTApICsgKCoocCArIDEpICYgMHgzRkYpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYyA+PSAweDAwMDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yNCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yMCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xNikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI4KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI0KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjIwKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjE2KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjgpJjB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICd1JzsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjgpJjB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICd4JzsKLSAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjQpJjB4Zl07Ci0gICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzW2MmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE9uKSIsIHJlcywgZW5kKTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgIHJldHVybiByZXN0dXBsZTsKICAgICB9CkBAIC03NTksNyArNzMxLDYgQEAKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI3VuZGVmIElTX1NVUlJPR0FURV9QQUlSCiB9CiAKIC8qIFRoaXMgaGFuZGxlciBpcyBkZWNsYXJlZCBzdGF0aWMgdW50aWwgc29tZW9uZSBkZW1vbnN0cmF0ZXMKQEAgLTc2OSwxMiArNzQwLDExIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwogICAgICAgICBjaGFyICpvdXRwOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03ODIsMTUgKzc1MiwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwogICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDMqKGVuZC1zdGFydCkpOwogICAgICAgICBpZiAoIXJlcykgewogICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBvdXRwID0gUHlCeXRlc19Bc1N0cmluZyhyZXMpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQ7IHAgPCBzdGFydHArZW5kOyBwKyspIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcDsKKyAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgIGlmIChjaCA8IDB4ZDgwMCB8fCBjaCA+IDB4ZGZmZikgewogICAgICAgICAgICAgICAgIC8qIE5vdCBhIHN1cnJvZ2F0ZSwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CkBAIC04MDksNyArNzc5LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IDA7CisgICAgICAgIFB5X1VDUzQgY2ggPSAwOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKQEAgLTgzNiw3ICs4MDYsMTAgQEAKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCAmY2gsIDEsIHN0YXJ0KzMpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIHN0YXJ0KzMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKQEAgLTg0OSwxMiArODIyLDExIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwogICAgICAgICBjaGFyICpvdXRwOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04NjIsMTUgKzgzNCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwogICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGVuZC1zdGFydCk7CiAgICAgICAgIGlmICghcmVzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG91dHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlcyk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydDsgcCA8IHN0YXJ0cCtlbmQ7IHArKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgaWYgKGNoIDwgMHhkYzgwIHx8IGNoID4gMHhkY2ZmKSB7CiAgICAgICAgICAgICAgICAgLyogTm90IGEgVVRGLThiIHN1cnJvZ2F0ZSwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CkBAIC04ODYsOCArODU4LDkgQEAKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgeworICAgICAgICBQeU9iamVjdCAqc3RyOwogICAgICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgICAgICBQeV9VTklDT0RFIGNoWzRdOyAvKiBkZWNvZGUgdXAgdG8gNCBiYWQgYnl0ZXMuICovCisgICAgICAgIFB5X1VDUzIgY2hbNF07IC8qIGRlY29kZSB1cCB0byA0IGJhZCBieXRlcy4gKi8KICAgICAgICAgaW50IGNvbnN1bWVkID0gMDsKICAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTEyLDcgKzg4NSwxMCBAQAogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSNuKSIsIGNoLCBjb25zdW1lZCwgc3RhcnQrY29uc3VtZWQpOworICAgICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV8yQllURV9LSU5ELCBjaCwgY29uc3VtZWQpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCBzdHIsIHN0YXJ0K2NvbnN1bWVkKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CkBAIC0xMDQ5LDcgKzEwMjUsNyBAQAogICAgIGludGVycC0+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+CisjZW5kaWYKKworUHlPYmplY3QgKgorX1B5X2RldmljZV9lbmNvZGluZyhpbnQgZmQpCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKE1TX1dJTjY0KQorICAgIFVJTlQgY3A7CisjZW5kaWYKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgIWlzYXR0eShmZCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKKyAgICBpZiAoZmQgPT0gMCkKKyAgICAgICAgY3AgPSBHZXRDb25zb2xlQ1AoKTsKKyAgICBlbHNlIGlmIChmZCA9PSAxIHx8IGZkID09IDIpCisgICAgICAgIGNwID0gR2V0Q29uc29sZU91dHB1dENQKCk7CisgICAgZWxzZQorICAgICAgICBjcCA9IDA7CisgICAgLyogR2V0Q29uc29sZUNQKCkgYW5kIEdldENvbnNvbGVPdXRwdXRDUCgpIHJldHVybiAwIGlmIHRoZSBhcHBsaWNhdGlvbgorICAgICAgIGhhcyBubyBjb25zb2xlICovCisgICAgaWYgKGNwICE9IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiY3AldSIsICh1bnNpZ25lZCBpbnQpY3ApOworI2VsaWYgZGVmaW5lZChDT0RFU0VUKQorICAgIHsKKyAgICAgICAgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjb2Rlc2V0KTsKKyAgICB9CisjZW5kaWYKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogI2lmZGVmIEhBVkVfU1RBVAogCiAvKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKQEAgLTE2LDcgKzUwLDkgQEAKICAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICh1c2UKICAgIFB5TWVtX0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkpIGFuZCB3cml0ZSB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gd2lkZQogICAgY2hhcmFjdGVycyBleGNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGludG8gKnNpemUgaWYgc2l6ZSBpcyBub3QgTlVMTCwgb3IKLSAgIE5VTEwgb24gZXJyb3IgKGNvbnZlcnNpb24gb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLgorICAgTlVMTCBvbiBlcnJvciAoZGVjb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLiBJZiBzaXplIGlzIG5vdCBOVUxMLAorICAgKnNpemUgaXMgc2V0IHRvIChzaXplX3QpLTEgb24gbWVtb3J5IGVycm9yIGFuZCAoc2l6ZV90KS0yIG9uIGRlY29kaW5nCisgICBlcnJvci4KIAogICAgQ29udmVyc2lvbiBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCiAgICBsaWJyYXJ5LiAqLwpAQCAtODIsOCArMTE4LDkgQEAKICAgICAgICAgICAgICAgIHNpbmNlIHdlIHByb3ZpZGUgZXZlcnl0aGluZyB0aGF0IHdlIGhhdmUgLQogICAgICAgICAgICAgICAgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDIGxpYnJhcnksIG9yIEkKICAgICAgICAgICAgICAgIG1pc3VuZGVyc3Rvb2QgaG93IG1icnRvd2Mgd29ya3MuICovCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuZXhwZWN0ZWQgbWJydG93YyByZXN1bHQgLTJcbiIpOwogICAgICAgICAgICAgUHlNZW1fRnJlZShyZXMpOworICAgICAgICAgICAgaWYgKHNpemUgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqc2l6ZSA9IChzaXplX3QpLTI7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoY29udmVydGVkID09IChzaXplX3QpLTEpIHsKQEAgLTExMiw3ICsxNDksOCBAQAogICAgICAgIGlzIEFTQ0lJIChpLmUuIGVzY2FwZSBhbGwgYnl0ZXMgPiAxMjguIFRoaXMgd2lsbCBzdGlsbCByb3VuZHRyaXAKICAgICAgICBjb3JyZWN0bHkgaW4gdGhlIGxvY2FsZSdzIGNoYXJzZXQsIHdoaWNoIG11c3QgYmUgYW4gQVNDSUkgc3VwZXJzZXQuICovCiAgICAgcmVzID0gUHlNZW1fTWFsbG9jKChzdHJsZW4oYXJnKSsxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgIGlmICghcmVzKSBnb3RvIG9vbTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgZ290byBvb207CiAgICAgaW4gPSAodW5zaWduZWQgY2hhciopYXJnOwogICAgIG91dCA9IHJlczsKICAgICB3aGlsZSgqaW4pCkBAIC0xMjYsNyArMTY0LDggQEAKICAgICAgICAgKnNpemUgPSBvdXQgLSByZXM7CiAgICAgcmV0dXJuIHJlczsKIG9vbToKLSAgICBmcHJpbnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnlcbiIpOworICAgIGlmIChzaXplICE9IE5VTEwpCisgICAgICAgICpzaXplID0gKHNpemVfdCktMTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTM3LDEwICsxNzYsMTAgQEAKICAgIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHJldmVyc2Ugb2YgX1B5X2NoYXIyd2NoYXIoKS4KIAogICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZyAodXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCi0gICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBjb252ZXJzaW9uIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLgorICAgdGhlIG1lbW9yeSksIG9yIE5VTEwgb24gZW5jb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCiAKICAgIElmIGVycm9yX3BvcyBpcyBub3QgTlVMTDogKmVycm9yX3BvcyBpcyB0aGUgaW5kZXggb2YgdGhlIGludmFsaWQgY2hhcmFjdGVyCi0gICBvbiBjb252ZXJzaW9uIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KKyAgIG9uIGVuY29kaW5nIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KIGNoYXIqCiBfUHlfd2NoYXIyY2hhcihjb25zdCB3Y2hhcl90ICp0ZXh0LCBzaXplX3QgKmVycm9yX3BvcykKIHsKQEAgLTIzNSw4ICsyNzQsOCBAQAogLyogQ2FsbCBfd3N0YXQoKSBvbiBXaW5kb3dzLCBvciBlbmNvZGUgdGhlIHBhdGggdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kCiAgICBjYWxsIHN0YXQoKSBvdGhlcndpc2UuIE9ubHkgZmlsbCBzdF9tb2RlIGF0dHJpYnV0ZSBvbiBXaW5kb3dzLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBfd3N0YXQoKSAvIHN0YXQoKSBlcnJvciBvciAoaWYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgIHVuaWNvZGUgZXJyb3IuICovCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBfd3N0YXQoKSAvIHN0YXQoKSBlcnJvciwgLTIgaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkLiAqLwogCiBpbnQKIF9QeV9zdGF0KFB5T2JqZWN0ICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZikKQEAgLTI0NCw4ICsyODMsMTIgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaW50IGVycjsKICAgICBzdHJ1Y3QgX3N0YXQgd3N0YXRidWY7CisgICAgd2NoYXJfdCAqd3BhdGg7CiAKLSAgICBlcnIgPSBfd3N0YXQoUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aCksICZ3c3RhdGJ1Zik7CisgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOworICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTI7CisgICAgZXJyID0gX3dzdGF0KHdwYXRoLCAmd3N0YXRidWYpOwogICAgIGlmICghZXJyKQogICAgICAgICBzdGF0YnVmLT5zdF9tb2RlID0gd3N0YXRidWYuc3RfbW9kZTsKICAgICByZXR1cm4gZXJyOwpAQCAtMjUzLDcgKzI5Niw3IEBACiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiAtMjsKICAgICByZXQgPSBzdGF0KFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgc3RhdGJ1Zik7CiAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICByZXR1cm4gcmV0OwpAQCAtMjk3LDE4ICszNDAsMjkgQEAKIF9QeV9mb3BlbihQeU9iamVjdCAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKIHsKICNpZmRlZiBNU19XSU5ET1dTCisgICAgd2NoYXJfdCAqd3BhdGg7CiAgICAgd2NoYXJfdCB3bW9kZVsxMF07CiAgICAgaW50IHVzaXplOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdHIgZmlsZSBwYXRoIGV4cGVjdGVkIHVuZGVyIFdpbmRvd3MsIGdvdCAlUiIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRoKTsKKyAgICBpZiAod3BhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB1c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCBtb2RlLCAtMSwgd21vZGUsIHNpemVvZih3bW9kZSkpOwogICAgIGlmICh1c2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBfd2ZvcGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHBhdGgpLCB3bW9kZSk7CisgICAgcmV0dXJuIF93Zm9wZW4od3BhdGgsIHdtb2RlKTsKICNlbHNlCiAgICAgRklMRSAqZjsKLSAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwotICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihwYXRoLCAmYnl0ZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmID0gZm9wZW4oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBtb2RlKTsKICAgICBQeV9ERUNSRUYoYnl0ZXMpOwpAQCAtMzE5LDcgKzM3Myw3IEBACiAjaWZkZWYgSEFWRV9SRUFETElOSwogCiAvKiBSZWFkIHZhbHVlIG9mIHN5bWJvbGljIGxpbmsuIEVuY29kZSB0aGUgcGF0aCB0byB0aGUgbG9jYWxlIGVuY29kaW5nLCBkZWNvZGUKLSAgIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuIFJldHVybiAtMSBvbiBlcnJvci4gKi8KIAogaW50CiBfUHlfd3JlYWRsaW5rKGNvbnN0IHdjaGFyX3QgKnBhdGgsIHdjaGFyX3QgKmJ1Ziwgc2l6ZV90IGJ1ZnNpeikKQEAgLTM2Myw3ICs0MTcsOCBAQAogI2lmZGVmIEhBVkVfUkVBTFBBVEgKIAogLyogUmV0dXJuIHRoZSBjYW5vbmljYWxpemVkIGFic29sdXRlIHBhdGhuYW1lLiBFbmNvZGUgcGF0aCB0byB0aGUgbG9jYWxlCi0gICBlbmNvZGluZywgZGVjb2RlIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgZW5jb2RpbmcsIGRlY29kZSB0aGUgcmVzdWx0IGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4KKyAgIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLwogCiB3Y2hhcl90KgogX1B5X3dyZWFscGF0aChjb25zdCB3Y2hhcl90ICpwYXRoLApAQCAtNDAxLDcgKzQ1Niw4IEBACiAjZW5kaWYKIAogLyogR2V0IHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gc2l6ZSBpcyB0aGUgYnVmZmVyIHNpemUgaW4gd2lkZSBjaGFyYWN0ZXJzCi0gICBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyLiBEZWNvZGUgdGhlIHBhdGggZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgaW5jbHVkaW5nIHRoZSBudWxsIGNoYXJhY3Rlci4gRGVjb2RlIHRoZSBwYXRoIGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4KKyAgIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLwogCiB3Y2hhcl90KgogX1B5X3dnZXRjd2Qod2NoYXJfdCAqYnVmLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKaW5kZXggYzM1MDkwNy4uYWE2MjUwMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKKysrIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKQEAgLTMsMTIgKzMsMTUzNCBAQAogICAgb2YgaW50Ll9fZmxvYXRfXywgZXRjLiwgdGhhdCB0YWtlIGFuZCByZXR1cm4gdW5pY29kZSBvYmplY3RzICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICIuLi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oIgorI2luY2x1ZGUgPGxvY2FsZS5oPgorCisvKiBSYWlzZXMgYW4gZXhjZXB0aW9uIGFib3V0IGFuIHVua25vd24gcHJlc2VudGF0aW9uIHR5cGUgZm9yIHRoaXMKKyAqIHR5cGUuICovCisKK3N0YXRpYyB2b2lkCit1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKFB5X1VDUzQgcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfbmFtZSkKK3sKKyAgICAvKiAlYyBtaWdodCBiZSBvdXQtb2YtcmFuZ2UsIGhlbmNlIHRoZSB0d28gY2FzZXMuICovCisgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJyVjJyAiCisgICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lKTsKKyAgICBlbHNlCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJ1xceCV4JyAiCisgICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOworfQorCitzdGF0aWMgdm9pZAoraW52YWxpZF9jb21tYV90eXBlKFB5X1VDUzQgcHJlc2VudGF0aW9uX3R5cGUpCit7CisgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICclYycuIiwKKyAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlKTsKKyAgICBlbHNlCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICdcXHgleCcuIiwKKyAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUpOworfQorCisvKgorICAgIGdldF9pbnRlZ2VyIGNvbnN1bWVzIDAgb3IgbW9yZSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgZnJvbSBhbgorICAgIGlucHV0IHN0cmluZywgdXBkYXRlcyAqcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpdmUKKyAgICBpbnRlZ2VyLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBjb25zdW1lZC4KKworICAgIHJldHVybnMgLTEgb24gZXJyb3IuCisqLworc3RhdGljIGludAorZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcG9zLCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnJlc3VsdCkKK3sKKyAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbDsKKyAgICBpbnQgbnVtZGlnaXRzOworICAgIGFjY3VtdWxhdG9yID0gbnVtZGlnaXRzID0gMDsKKyAgICBmb3IgKDs7KCpwb3MpKyssIG51bWRpZ2l0cysrKSB7CisgICAgICAgIGlmICgqcG9zID49IGVuZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCAqcG9zKSk7CisgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyoKKyAgICAgICAgICAgRGV0ZWN0IHBvc3NpYmxlIG92ZXJmbG93IGJlZm9yZSBpdCBoYXBwZW5zOgorCisgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbCA+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+ZmlsbF9jaGFyID09ICdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKworZG9uZToKKyAgICBQeV9YREVDUkVGKHVuaWNvZGVfdG1wKTsKKyAgICBmcmVlX2xvY2FsZV9pbmZvKCZsb2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogY29tcGxleCBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorZm9ybWF0X2NvbXBsZXhfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgZG91YmxlIHJlOworICAgIGRvdWJsZSBpbTsKKyAgICBjaGFyICpyZV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KKyAgICBjaGFyICppbV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KKworICAgIEludGVybmFsRm9ybWF0U3BlYyB0bXBfZm9ybWF0ID0gKmZvcm1hdDsKKyAgICBQeV9zc2l6ZV90IG5fcmVfZGlnaXRzOworICAgIFB5X3NzaXplX3Qgbl9pbV9kaWdpdHM7CisgICAgUHlfc3NpemVfdCBuX3JlX3JlbWFpbmRlcjsKKyAgICBQeV9zc2l6ZV90IG5faW1fcmVtYWluZGVyOworICAgIFB5X3NzaXplX3Qgbl9yZV90b3RhbDsKKyAgICBQeV9zc2l6ZV90IG5faW1fdG90YWw7CisgICAgaW50IHJlX2hhc19kZWNpbWFsOworICAgIGludCBpbV9oYXNfZGVjaW1hbDsKKyAgICBQeV9zc2l6ZV90IHByZWNpc2lvbiA9IGZvcm1hdC0+cHJlY2lzaW9uOworICAgIFB5X3NzaXplX3QgZGVmYXVsdF9wcmVjaXNpb24gPSA2OworICAgIFB5X1VDUzQgdHlwZSA9IGZvcm1hdC0+dHlwZTsKKyAgICBQeV9zc2l6ZV90IGlfcmU7CisgICAgUHlfc3NpemVfdCBpX2ltOworICAgIE51bWJlckZpZWxkV2lkdGhzIHJlX3NwZWM7CisgICAgTnVtYmVyRmllbGRXaWR0aHMgaW1fc3BlYzsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjc7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBya2luZDsKKyAgICB2b2lkICpyZGF0YTsKKyAgICBQeV9VQ1M0IHJlX3NpZ25fY2hhciA9ICdcMCc7CisgICAgUHlfVUNTNCBpbV9zaWduX2NoYXIgPSAnXDAnOworICAgIGludCByZV9mbG9hdF90eXBlOyAvKiBVc2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbmFuLCBpbmYsIG9yIHJlZ3VsYXIgZmxvYXQuICovCisgICAgaW50IGltX2Zsb2F0X3R5cGU7CisgICAgaW50IGFkZF9wYXJlbnMgPSAwOworICAgIGludCBza2lwX3JlID0gMDsKKyAgICBQeV9zc2l6ZV90IGxwYWQ7CisgICAgUHlfc3NpemVfdCBycGFkOworICAgIFB5X3NzaXplX3QgdG90YWw7CisgICAgUHlPYmplY3QgKnJlX3VuaWNvZGVfdG1wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaW1fdW5pY29kZV90bXAgPSBOVUxMOworCisgICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgorICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLworICAgIExvY2FsZUluZm8gbG9jYWxlID0gU1RBVElDX0xPQ0FMRV9JTkZPX0lOSVQ7CisKKyAgICAvKiBaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQuICovCisgICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogTmVpdGhlciBpcyAnPScgYWxpZ25tZW50IC4gKi8KKyAgICBpZiAoZm9ybWF0LT5hbGlnbiA9PSAnPScpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJz0nIGFsaWdubWVudCBmbGFnIGlzIG5vdCBhbGxvd2VkIGluIGNvbXBsZXggZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHJlID0gUHlDb21wbGV4X1JlYWxBc0RvdWJsZSh2YWx1ZSk7CisgICAgaWYgKHJlID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBkb25lOworICAgIGltID0gUHlDb21wbGV4X0ltYWdBc0RvdWJsZSh2YWx1ZSk7CisgICAgaWYgKGltID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQorICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FMVDsKKworICAgIGlmICh0eXBlID09ICdcMCcpIHsKKyAgICAgICAgLyogT21pdHRlZCB0eXBlIHNwZWNpZmllci4gU2hvdWxkIGJlIGxpa2Ugc3RyKHNlbGYpLiAqLworICAgICAgICB0eXBlID0gJ3InOworICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7CisgICAgICAgIGlmIChyZSA9PSAwLjAgJiYgY29weXNpZ24oMS4wLCByZSkgPT0gMS4wKQorICAgICAgICAgICAgc2tpcF9yZSA9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZF9wYXJlbnMgPSAxOworICAgIH0KKworICAgIGlmICh0eXBlID09ICduJykKKyAgICAgICAgLyogJ24nIGlzIHRoZSBzYW1lIGFzICdnJywgZXhjZXB0IGZvciB0aGUgbG9jYWxlIHVzZWQgdG8KKyAgICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQuIFdlIHRha2UgY2FyZSBvZiB0aGF0IGxhdGVyLiAqLworICAgICAgICB0eXBlID0gJ2cnOworCisgICAgaWYgKHByZWNpc2lvbiA8IDApCisgICAgICAgIHByZWNpc2lvbiA9IGRlZmF1bHRfcHJlY2lzaW9uOworICAgIGVsc2UgaWYgKHR5cGUgPT0gJ3InKQorICAgICAgICB0eXBlID0gJ2cnOworCisgICAgLyogQ2FzdCAidHlwZSIsIGJlY2F1c2UgaWYgd2UncmUgaW4gdW5pY29kZSB3ZSBuZWVkIHRvIHBhc3MgYQorICAgICAgIDgtYml0IGNoYXIuIFRoaXMgaXMgc2FmZSwgYmVjYXVzZSB3ZSd2ZSByZXN0cmljdGVkIHdoYXQgInR5cGUiCisgICAgICAgY2FuIGJlLiAqLworICAgIHJlX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhyZSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlX2Zsb2F0X3R5cGUpOworICAgIGlmIChyZV9idWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGltX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhpbSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltX2Zsb2F0X3R5cGUpOworICAgIGlmIChpbV9idWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgbl9yZV9kaWdpdHMgPSBzdHJsZW4ocmVfYnVmKTsKKyAgICBuX2ltX2RpZ2l0cyA9IHN0cmxlbihpbV9idWYpOworCisgICAgLyogU2luY2UgdGhlcmUgaXMgbm8gdW5pY29kZSB2ZXJzaW9uIG9mIFB5T1NfZG91YmxlX3RvX3N0cmluZywKKyAgICAgICBqdXN0IHVzZSB0aGUgOCBiaXQgdmVyc2lvbiBhbmQgdGhlbiBjb252ZXJ0IHRvIHVuaWNvZGUuICovCisgICAgcmVfdW5pY29kZV90bXAgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShyZV9idWYsIG5fcmVfZGlnaXRzKTsKKyAgICBpZiAocmVfdW5pY29kZV90bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlfcmUgPSAwOworCisgICAgaW1fdW5pY29kZV90bXAgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShpbV9idWYsIG5faW1fZGlnaXRzKTsKKyAgICBpZiAoaW1fdW5pY29kZV90bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlfaW0gPSAwOworCisgICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKKyAgICAgICBhbmQgc2tpcCBpdCAqLworICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHJlX3VuaWNvZGVfdG1wLCBpX3JlKSA9PSAnLScpIHsKKyAgICAgICAgcmVfc2lnbl9jaGFyID0gJy0nOworICAgICAgICArK2lfcmU7CisgICAgICAgIC0tbl9yZV9kaWdpdHM7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKGltX3VuaWNvZGVfdG1wLCBpX2ltKSA9PSAnLScpIHsKKyAgICAgICAgaW1fc2lnbl9jaGFyID0gJy0nOworICAgICAgICArK2lfaW07CisgICAgICAgIC0tbl9pbV9kaWdpdHM7CisgICAgfQorCisgICAgLyogRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55ICJyZW1haW5kZXIiIChhZnRlciB0aGUgZGlnaXRzLCBtaWdodCBpbmNsdWRlCisgICAgICAgZGVjaW1hbCBvciBleHBvbmVudCBvciBib3RoIChvciBuZWl0aGVyKSkgKi8KKyAgICBwYXJzZV9udW1iZXIocmVfdW5pY29kZV90bXAsIGlfcmUsIGlfcmUgKyBuX3JlX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgJm5fcmVfcmVtYWluZGVyLCAmcmVfaGFzX2RlY2ltYWwpOworICAgIHBhcnNlX251bWJlcihpbV91bmljb2RlX3RtcCwgaV9pbSwgaV9pbSArIG5faW1fZGlnaXRzLAorICAgICAgICAgICAgICAgICAmbl9pbV9yZW1haW5kZXIsICZpbV9oYXNfZGVjaW1hbCk7CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCisgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPworICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFR1cm4gb2ZmIGFueSBwYWRkaW5nLiBXZSdsbCBkbyBpdCBsYXRlciBhZnRlciB3ZSd2ZSBjb21wb3NlZAorICAgICAgIHRoZSBudW1iZXJzIHdpdGhvdXQgcGFkZGluZy4gKi8KKyAgICB0bXBfZm9ybWF0LmZpbGxfY2hhciA9ICdcMCc7CisgICAgdG1wX2Zvcm1hdC5hbGlnbiA9ICc8JzsKKyAgICB0bXBfZm9ybWF0LndpZHRoID0gLTE7CisKKyAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCisgICAgbl9yZV90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmcmVfc3BlYywgMCwgcmVfc2lnbl9jaGFyLCByZV91bmljb2RlX3RtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfcmUsIGlfcmUgKyBuX3JlX2RpZ2l0cywgbl9yZV9yZW1haW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhcik7CisKKyAgICAvKiBTYW1lIGZvcm1hdHRpbmcsIGJ1dCBhbHdheXMgaW5jbHVkZSBhIHNpZ24sIHVubGVzcyB0aGUgcmVhbCBwYXJ0IGlzCisgICAgICogZ29pbmcgdG8gYmUgb21pdHRlZCwgaW4gd2hpY2ggY2FzZSB3ZSB1c2Ugd2hhdGV2ZXIgc2lnbiBjb252ZW50aW9uIHdhcworICAgICAqIHJlcXVlc3RlZCBieSB0aGUgb3JpZ2luYWwgZm9ybWF0LiAqLworICAgIGlmICghc2tpcF9yZSkKKyAgICAgICAgdG1wX2Zvcm1hdC5zaWduID0gJysnOworICAgIG5faW1fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJmltX3NwZWMsIDAsIGltX3NpZ25fY2hhciwgaW1fdW5pY29kZV90bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpX2ltLCBpX2ltICsgbl9pbV9kaWdpdHMsIG5faW1fcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1faGFzX2RlY2ltYWwsICZsb2NhbGUsICZ0bXBfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIpOworCisgICAgaWYgKHNraXBfcmUpCisgICAgICAgIG5fcmVfdG90YWwgPSAwOworCisgICAgLyogQWRkIDEgZm9yIHRoZSAnaicsIGFuZCBvcHRpb25hbGx5IDIgZm9yIHBhcmVucy4gKi8KKyAgICBjYWxjX3BhZGRpbmcobl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCisgICAgICAgICAgICAgICAgIGZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+YWxpZ24sICZscGFkLCAmcnBhZCwgJnRvdGFsKTsKKworICAgIGlmIChscGFkIHx8IHJwYWQpCisgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgZm9ybWF0LT5maWxsX2NoYXIpOworCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHRvdGFsLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworICAgIHJraW5kID0gd3JpdGVyLT5raW5kOworICAgIHJkYXRhID0gd3JpdGVyLT5kYXRhOworCisgICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gRmlyc3QsIHRoZSBwYWRkaW5nLiAqLworICAgIHJlc3VsdCA9IGZpbGxfcGFkZGluZyh3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVfdG90YWwgKyBuX2ltX3RvdGFsICsgMSArIGFkZF9wYXJlbnMgKiAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhcj09J1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBscGFkLCBycGFkKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAoYWRkX3BhcmVucykgeworICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIHJkYXRhLCB3cml0ZXItPnBvcywgJygnKTsKKyAgICAgICAgd3JpdGVyLT5wb3MrKzsKKyAgICB9CisKKyAgICBpZiAoIXNraXBfcmUpIHsKKyAgICAgICAgcmVzdWx0ID0gZmlsbF9udW1iZXIod3JpdGVyLCAmcmVfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVfdW5pY29kZV90bXAsIGlfcmUsIGlfcmUgKyBuX3JlX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIHJlc3VsdCA9IGZpbGxfbnVtYmVyKHdyaXRlciwgJmltX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW1fdW5pY29kZV90bXAsIGlfaW0sIGlfaW0gKyBuX2ltX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgMCk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnaicpOworICAgIHdyaXRlci0+cG9zKys7CisKKyAgICBpZiAoYWRkX3BhcmVucykgeworICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIHJkYXRhLCB3cml0ZXItPnBvcywgJyknKTsKKyAgICAgICAgd3JpdGVyLT5wb3MrKzsKKyAgICB9CisKKyAgICB3cml0ZXItPnBvcyArPSBycGFkOworCitkb25lOgorICAgIFB5TWVtX0ZyZWUocmVfYnVmKTsKKyAgICBQeU1lbV9GcmVlKGltX2J1Zik7CisgICAgUHlfWERFQ1JFRihyZV91bmljb2RlX3RtcCk7CisgICAgUHlfWERFQ1JFRihpbV91bmljb2RlX3RtcCk7CisgICAgZnJlZV9sb2NhbGVfaW5mbygmbG9jYWxlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIGJ1aWx0IGluIGZvcm1hdHRlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgaW50Citmb3JtYXRfb2JqKFB5T2JqZWN0ICpvYmosIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGludCBlcnI7CisKKyAgICBzdHIgPSBQeU9iamVjdF9TdHIob2JqKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlcnIgPSBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgc3RyKTsKKyAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICByZXR1cm4gZXJyOworfQorCitpbnQKK19QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9iaikpOworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkKKyAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgb2JqKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZvcm1hdF9vYmoob2JqLCB3cml0ZXIpOworICAgIH0KKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdzJywgJzwnKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLworICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKKyAgICBjYXNlICdzJzoKKyAgICAgICAgLyogbm8gdHlwZSBjb252ZXJzaW9uIG5lZWRlZCwgYWxyZWFkeSBhIHN0cmluZy4gIGRvIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJldHVybiBmb3JtYXRfc3RyaW5nX2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duICovCisgICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CisKK2ludAorX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlPYmplY3QgKnRtcCA9IE5VTEwsICpzdHIgPSBOVUxMOworICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7CisgICAgaW50IHJlc3VsdCA9IC0xOworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkKKyAgICAgICAgICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdFdyaXRlcih3cml0ZXIsIG9iaiwgMTAsIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisgICAgfQorCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ2QnLCAnPicpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ2InOgorICAgIGNhc2UgJ2MnOgorICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ28nOgorICAgIGNhc2UgJ3gnOgorICAgIGNhc2UgJ1gnOgorICAgIGNhc2UgJ24nOgorICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGFuIGludCAob3IgbG9uZykuICBkbworICAgICAgICAgICB0aGUgZm9ybWF0dGluZyAqLworICAgICAgICByZXN1bHQgPSBmb3JtYXRfbG9uZ19pbnRlcm5hbChvYmosICZmb3JtYXQsIHdyaXRlcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgY2FzZSAnJSc6CisgICAgICAgIC8qIGNvbnZlcnQgdG8gZmxvYXQgKi8KKyAgICAgICAgdG1wID0gUHlOdW1iZXJfRmxvYXQob2JqKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICByZXN1bHQgPSBmb3JtYXRfZmxvYXRfaW50ZXJuYWwodG1wLCAmZm9ybWF0LCB3cml0ZXIpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworZG9uZToKKyAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWERFQ1JFRihzdHIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWRXcml0ZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisKKyAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KKyAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnXDAnLCAnPicpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ1wwJzogLyogTm8gZm9ybWF0IGNvZGU6IGxpa2UgJ2cnLCBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbC4gKi8KKyAgICBjYXNlICdlJzoKKyAgICBjYXNlICdFJzoKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICBjYXNlICduJzoKKyAgICBjYXNlICclJzoKKyAgICAgICAgLyogbm8gY29udmVyc2lvbiwgYWxyZWFkeSBhIGZsb2F0LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9mbG9hdF9pbnRlcm5hbChvYmosICZmb3JtYXQsIHdyaXRlcik7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duICovCisgICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CisKK2ludAorX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCisgICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLworICAgIGNhc2UgJ2UnOgorICAgIGNhc2UgJ0UnOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cnOgorICAgIGNhc2UgJ24nOgorICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgY29tcGxleC4gIGRvIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJldHVybiBmb3JtYXRfY29tcGxleF9pbnRlcm5hbChvYmosICZmb3JtYXQsIHdyaXRlcik7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duICovCisgICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVuLmMgYi9QeXRob24vZnJvemVuLmMKaW5kZXggZGRmNjIyNC4uMjVmZGMxNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbi5jCisrKyBiL1B5dGhvbi9mcm96ZW4uYwpAQCAtMiw2ICsyLDcgQEAKIC8qIER1bW15IGZyb3plbiBtb2R1bGVzIGluaXRpYWxpemVyICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJpbXBvcnRsaWIuaCIKIAogLyogSW4gb3JkZXIgdG8gdGVzdCB0aGUgc3VwcG9ydCBmb3IgZnJvemVuIG1vZHVsZXMsIGJ5IGRlZmF1bHQgd2UKICAgIGRlZmluZSBhIHNpbmdsZSBmcm96ZW4gbW9kdWxlLCBfX2hlbGxvX18uICBMb2FkaW5nIGl0IHdpbGwgcHJpbnQKQEAgLTI4LDYgKzI5LDggQEAKICNkZWZpbmUgU0laRSAoaW50KXNpemVvZihNX19faGVsbG9fXykKIAogc3RhdGljIHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CisgICAgLyogaW1wb3J0bGliICovCisgICAgeyJfZnJvemVuX2ltcG9ydGxpYiIsIF9QeV9NX19pbXBvcnRsaWIsIChpbnQpc2l6ZW9mKF9QeV9NX19pbXBvcnRsaWIpfSwKICAgICAvKiBUZXN0IG1vZHVsZSAqLwogICAgIHsiX19oZWxsb19fIiwgTV9fX2hlbGxvX18sIFNJWkV9LAogICAgIC8qIFRlc3QgcGFja2FnZSAobmVnYXRpdmUgc2l6ZSBpbmRpY2F0ZXMgcGFja2FnZS1uZXNzKSAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGFyZ3MuYyBiL1B5dGhvbi9nZXRhcmdzLmMKaW5kZXggYTc3YmIwNS4uMThjOGU5MSAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGFyZ3MuYworKysgYi9QeXRob24vZ2V0YXJncy5jCkBAIC0zMywxNiArMzMsMzMgQEAKICNkZWZpbmUgRkxBR19DT01QQVQgMQogI2RlZmluZSBGTEFHX1NJWkVfVCAyCiAKK3R5cGVkZWYgaW50ICgqZGVzdHJfdCkoUHlPYmplY3QgKiwgdm9pZCAqKTsKKworCisvKiBLZWVwIHRyYWNrIG9mICJvYmplY3RzIiB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgb3IgaW5pdGlhbGl6ZWQgYW5kCisgICB3aGljaCB3aWxsIG5lZWQgdG8gYmUgZGVhbGxvY2F0ZWQgb3IgY2xlYW5lZCB1cCBzb21laG93IGlmIG92ZXJhbGwKKyAgIHBhcnNpbmcgZmFpbHMuCisqLwordHlwZWRlZiBzdHJ1Y3QgeworICB2b2lkICppdGVtOworICBkZXN0cl90IGRlc3RydWN0b3I7Cit9IGZyZWVsaXN0ZW50cnlfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBpbnQgZmlyc3RfYXZhaWxhYmxlOworICBmcmVlbGlzdGVudHJ5X3QgKmVudHJpZXM7Cit9IGZyZWVsaXN0X3Q7CisKIAogLyogRm9yd2FyZCAqLwogc3RhdGljIGludCB2Z2V0YXJnczEoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0ICosIGludCk7CiBzdGF0aWMgdm9pZCBzZXRlcnJvcihpbnQsIGNvbnN0IGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIHN0YXRpYyBjaGFyICpjb252ZXJ0aXRlbShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgaW50ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKIHN0YXRpYyBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBmcmVlbGlzdF90ICopOwogc3RhdGljIFB5X3NzaXplX3QgY29udmVydGJ1ZmZlcihQeU9iamVjdCAqLCB2b2lkICoqcCwgY2hhciAqKik7CiBzdGF0aWMgaW50IGdldGJ1ZmZlcihQeU9iamVjdCAqLCBQeV9idWZmZXIgKiwgY2hhcioqKTsKIApAQCAtMTIzLDExNSArMTQwLDU0IEBACiAKIC8qIEhhbmRsZSBjbGVhbnVwIG9mIGFsbG9jYXRlZCBtZW1vcnkgaW4gY2FzZSBvZiBleGNlcHRpb24gKi8KIAotI2RlZmluZSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUiAiZ2V0YXJncy5jbGVhbnVwX3B0ciIKLSNkZWZpbmUgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9CVUZGRVIgImdldGFyZ3MuY2xlYW51cF9idWZmZXIiCi0jZGVmaW5lIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQ09OVkVSVCAiZ2V0YXJncy5jbGVhbnVwX2NvbnZlcnQiCi0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX3B0cihQeU9iamVjdCAqc2VsZikKK3N0YXRpYyBpbnQKK2NsZWFudXBfcHRyKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpwdHIpCiB7Ci0gICAgdm9pZCAqcHRyID0gUHlDYXBzdWxlX0dldFBvaW50ZXIoc2VsZiwgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9QVFIpOwogICAgIGlmIChwdHIpIHsKICAgICAgICAgUHlNZW1fRlJFRShwdHIpOwogICAgIH0KLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfYnVmZmVyKFB5T2JqZWN0ICpzZWxmKQotewotICAgIFB5X2J1ZmZlciAqcHRyID0gKFB5X2J1ZmZlciAqKVB5Q2Fwc3VsZV9HZXRQb2ludGVyKHNlbGYsIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQlVGRkVSKTsKLSAgICBpZiAocHRyKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UocHRyKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQKLWFkZGNsZWFudXAodm9pZCAqcHRyLCBQeU9iamVjdCAqKmZyZWVsaXN0LCBpbnQgaXNfYnVmZmVyKQotewotICAgIFB5T2JqZWN0ICpjb2JqOwotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgUHlDYXBzdWxlX0Rlc3RydWN0b3IgZGVzdHI7Ci0KLSAgICBpZiAoaXNfYnVmZmVyKSB7Ci0gICAgICAgIGRlc3RyID0gY2xlYW51cF9idWZmZXI7Ci0gICAgICAgIG5hbWUgPSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0JVRkZFUjsKLSAgICB9IGVsc2UgewotICAgICAgICBkZXN0ciA9IGNsZWFudXBfcHRyOwotICAgICAgICBuYW1lID0gR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9QVFI7Ci0gICAgfQotCi0gICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgKmZyZWVsaXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgICAgIGRlc3RyKHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb2JqID0gUHlDYXBzdWxlX05ldyhwdHIsIG5hbWUsIGRlc3RyKTsKLSAgICBpZiAoIWNvYmopIHsKLSAgICAgICAgZGVzdHIocHRyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZCgqZnJlZWxpc3QsIGNvYmopKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoY29iaik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX2NvbnZlcnQoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgdHlwZWRlZiBpbnQgKCpkZXN0cl90KShQeU9iamVjdCAqLCB2b2lkICopOwotICAgIGRlc3RyX3QgZGVzdHIgPSAoZGVzdHJfdClQeUNhcHN1bGVfR2V0Q29udGV4dChzZWxmKTsKLSAgICB2b2lkICpwdHIgPSBQeUNhcHN1bGVfR2V0UG9pbnRlcihzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQ09OVkVSVCk7Ci0gICAgaWYgKHB0ciAmJiBkZXN0cikKLSAgICAgICAgZGVzdHIoTlVMTCwgcHRyKTsKLX0KLQotc3RhdGljIGludAotYWRkY2xlYW51cF9jb252ZXJ0KHZvaWQgKnB0ciwgUHlPYmplY3QgKipmcmVlbGlzdCwgaW50ICgqZGVzdHIpKFB5T2JqZWN0Kix2b2lkKikpCi17Ci0gICAgUHlPYmplY3QgKmNvYmo7Ci0gICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgKmZyZWVsaXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgICAgIGRlc3RyKE5VTEwsIHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY29iaiA9IFB5Q2Fwc3VsZV9OZXcocHRyLCBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0NPTlZFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9jb252ZXJ0KTsKLSAgICBpZiAoIWNvYmopIHsKLSAgICAgICAgZGVzdHIoTlVMTCwgcHRyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlDYXBzdWxlX1NldENvbnRleHQoY29iaiwgZGVzdHIpID09IC0xKSB7Ci0gICAgICAgIC8qIFRoaXMgcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuLiAqLwotICAgICAgICBQeV9GYXRhbEVycm9yKCJjYXBzdWxlIHJlZnVzZWQgc2V0dGluZyBvZiBjb250ZXh0LiIpOwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZCgqZnJlZWxpc3QsIGNvYmopKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjb2JqKTsgLyogVGhpcyB3aWxsIGFsc28gY2FsbCBkZXN0ci4gKi8KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoY29iaik7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLWNsZWFucmV0dXJuKGludCByZXR2YWwsIFB5T2JqZWN0ICpmcmVlbGlzdCkKK2NsZWFudXBfYnVmZmVyKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpwdHIpCiB7Ci0gICAgaWYgKGZyZWVsaXN0ICYmIHJldHZhbCAhPSAwKSB7Ci0gICAgICAgIC8qIFdlIHdlcmUgc3VjY2Vzc2Z1bCwgcmVzZXQgdGhlIGRlc3RydWN0b3JzIHNvIHRoYXQgdGhleQotICAgICAgICAgICBkb24ndCBnZXQgY2FsbGVkLiAqLwotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5TGlzdF9HRVRfU0laRShmcmVlbGlzdCksIGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yKFB5TGlzdF9HRVRfSVRFTShmcmVlbGlzdCwgaSksIE5VTEwpOworICAgIFB5X2J1ZmZlciAqYnVmID0gKFB5X2J1ZmZlciAqKXB0cjsKKyAgICBpZiAoYnVmKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihmcmVlbGlzdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2FkZGNsZWFudXAodm9pZCAqcHRyLCBmcmVlbGlzdF90ICpmcmVlbGlzdCwgZGVzdHJfdCBkZXN0cnVjdG9yKQoreworICAgIGludCBpbmRleDsKKworICAgIGluZGV4ID0gZnJlZWxpc3QtPmZpcnN0X2F2YWlsYWJsZTsKKyAgICBmcmVlbGlzdC0+Zmlyc3RfYXZhaWxhYmxlICs9IDE7CisKKyAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uaXRlbSA9IHB0cjsKKyAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uZGVzdHJ1Y3RvciA9IGRlc3RydWN0b3I7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY2xlYW5yZXR1cm4oaW50IHJldHZhbCwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCit7CisgICAgaW50IGluZGV4OworCisgICAgaWYgKHJldHZhbCA9PSAwKSB7CisgICAgICAvKiBBIGZhaWx1cmUgb2NjdXJyZWQsIHRoZXJlZm9yZSBleGVjdXRlIGFsbCBvZiB0aGUgY2xlYW51cAorICAgICAgICAgZnVuY3Rpb25zLgorICAgICAgKi8KKyAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGZyZWVsaXN0LT5maXJzdF9hdmFpbGFibGU7ICsraW5kZXgpIHsKKyAgICAgICAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uZGVzdHJ1Y3RvcihOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5pdGVtKTsKKyAgICAgIH0KKyAgICB9CisgICAgUHlNZW1fRlJFRShmcmVlbGlzdC0+ZW50cmllcyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjUwLDcgKzIwNiw3IEBACiAgICAgY29uc3QgY2hhciAqZm9ybWF0c2F2ZSA9IGZvcm1hdDsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKICAgICBjaGFyICptc2c7Ci0gICAgUHlPYmplY3QgKmZyZWVsaXN0ID0gTlVMTDsKKyAgICBmcmVlbGlzdF90IGZyZWVsaXN0ID0gezAsIE5VTEx9OwogICAgIGludCBjb21wYXQgPSBmbGFncyAmIEZMQUdfQ09NUEFUOwogCiAgICAgYXNzZXJ0KGNvbXBhdCB8fCAoYXJncyAhPSAoUHlPYmplY3QqKU5VTEwpKTsKQEAgLTMwNiw2NCArMjYyLDY2IEBACiAKICAgICBmb3JtYXQgPSBmb3JtYXRzYXZlOwogCisgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIG1heCk7CisgICAgaWYgKGZyZWVsaXN0LmVudHJpZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoY29tcGF0KSB7CiAgICAgICAgIGlmIChtYXggPT0gMCkgewogICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIG5vIGFyZ3VtZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtc2didWYpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlcyB0YWtlcyBubyBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG1pbiA9PSAxICYmIG1heCA9PSAxKSB7CiAgICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlcyB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIpOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZ2J1Zik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShhcmdzLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnYnVmLCBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIGlmIChtc2cgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgc2V0ZXJyb3IobGV2ZWxzWzBdLCBtc2csIGxldmVscysxLCBmbmFtZSwgbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgIm9sZCBzdHlsZSBnZXRhcmdzIGZvcm1hdCB1c2VzIG5ldyBmZWF0dXJlcyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAibmV3IHN0eWxlIGdldGFyZ3MgZm9ybWF0IGJ1dCBhcmd1bWVudCBpcyBub3QgYSB0dXBsZSIpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKIAogICAgIGlmIChsZW4gPCBtaW4gfHwgbWF4IDwgbGVuKSB7Ci0gICAgICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMTUwcyVzIHRha2VzICVzICVkIGFyZ3VtZW50JXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiKCVsZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj09bWF4ID8gImV4YWN0bHkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogbGVuIDwgbWluID8gImF0IGxlYXN0IiA6ICJhdCBtb3N0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIDwgbWluID8gbWluIDogbWF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuIDwgbWluID8gbWluIDogbWF4KSA9PSAxID8gIiIgOiAicyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QobGVuLCBQeV9zc2l6ZV90LCBsb25nKSk7Ci0gICAgICAgICAgICBtZXNzYWdlID0gbXNnYnVmOwotICAgICAgICB9Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMTUwcyVzIHRha2VzICVzICVkIGFyZ3VtZW50JXMgKCVsZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj09bWF4ID8gImV4YWN0bHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBsZW4gPCBtaW4gPyAiYXQgbGVhc3QiIDogImF0IG1vc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA8IG1pbiA/IG1pbiA6IG1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGVuIDwgbWluID8gbWluIDogbWF4KSA9PSAxID8gIiIgOiAicyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChsZW4sIFB5X3NzaXplX3QsIGxvbmcpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewpAQCAtMzc0LDcgKzMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwogICAgICAgICBpZiAobXNnKSB7CiAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgbXNnKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzgzLDEwICszNDEsMTAgQEAKICAgICAgICAgKmZvcm1hdCAhPSAnfCcgJiYgKmZvcm1hdCAhPSAnOicgJiYgKmZvcm1hdCAhPSAnOycpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImJhZCBmb3JtYXQgc3RyaW5nOiAlLjIwMHMiLCBmb3JtYXRzYXZlKTsKLSAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsIGZyZWVsaXN0KTsKKyAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKIH0KIAogCkBAIC00NTAsNyArNDA4LDcgQEAKIHN0YXRpYyBjaGFyICoKIGNvbnZlcnR0dXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgaW50IHRvcGxldmVsLAotICAgICAgICAgICAgIFB5T2JqZWN0ICoqZnJlZWxpc3QpCisgICAgICAgICAgICAgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CiAgICAgaW50IGxldmVsID0gMDsKICAgICBpbnQgbiA9IDA7CkBAIC01MjUsNyArNDgzLDcgQEAKIAogc3RhdGljIGNoYXIgKgogY29udmVydGl0ZW0oUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCi0gICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgUHlPYmplY3QgKipmcmVlbGlzdCkKKyAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICBjaGFyICptc2c7CiAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gKnBfZm9ybWF0OwpAQCAtNTUwLDkgKzUwOCw2IEBACiAKIAogCi0jZGVmaW5lIFVOSUNPREVfREVGQVVMVF9FTkNPRElORyhhcmcpIFwKLSAgICBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoYXJnLCBOVUxMKQotCiAvKiBGb3JtYXQgYW4gZXJyb3IgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29udmVydHNpbXBsZSgpLiAqLwogCiBzdGF0aWMgY2hhciAqCkBAIC01OTMsNyArNTQ4LDcgQEAKIAogc3RhdGljIGNoYXIgKgogY29udmVydHNpbXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKLSAgICAgICAgICAgICAgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgUHlPYmplY3QgKipmcmVlbGlzdCkKKyAgICAgICAgICAgICAgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CiAgICAgLyogRm9yICMgY29kZXMgKi8KICNkZWZpbmUgRkVUQ0hfU0laRSAgICAgIGludCAqcT1OVUxMO1B5X3NzaXplX3QgKnEyPU5VTEw7XApAQCAtNjE1LDcgKzU3MCw3IEBACiAKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CiAgICAgY2hhciBjID0gKmZvcm1hdCsrOwotICAgIFB5T2JqZWN0ICp1YXJnOworICAgIGNoYXIgKnNhcmc7CiAKICAgICBzd2l0Y2ggKGMpIHsKIApAQCAtODMyLDYgKzc4Nyw4IEBACiAgICAgICAgIGNoYXIgKnAgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19TaXplKGFyZykgPT0gMSkKICAgICAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKVswXTsKKyAgICAgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9TaXplKGFyZykgPT0gMSkKKyAgICAgICAgICAgICpwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGFyZylbMF07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAxIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICBicmVhazsKQEAgLTgzOSwxMSArNzk2LDMzIEBACiAKICAgICBjYXNlICdDJzogey8qIHVuaWNvZGUgY2hhciAqLwogICAgICAgICBpbnQgKnAgPSB2YV9hcmcoKnBfdmEsIGludCAqKTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpICYmCi0gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoYXJnKSA9PSAxKQotICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhcmcpWzBdOwotICAgICAgICBlbHNlCisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOworCisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGFyZykpCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiYSB1bmljb2RlIGNoYXJhY3RlciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykpCisgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChhcmcpICE9IDEpCisgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiYSB1bmljb2RlIGNoYXJhY3RlciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoYXJnKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGFyZyk7CisgICAgICAgICpwID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgJ3AnOiB7LyogYm9vbGVhbiAqcCpyZWRpY2F0ZSAqLworICAgICAgICBpbnQgKnAgPSB2YV9hcmcoKnBfdmEsIGludCAqKTsKKyAgICAgICAgaW50IHZhbCA9IFB5T2JqZWN0X0lzVHJ1ZShhcmcpOworICAgICAgICBpZiAodmFsID4gMCkKKyAgICAgICAgICAgICpwID0gMTsKKyAgICAgICAgZWxzZSBpZiAodmFsID09IDApCisgICAgICAgICAgICAqcCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtODU4LDcgKzgzNyw3IEBACiAgICAgICAgICAgICBpZiAoZ2V0YnVmZmVyKGFyZywgKFB5X2J1ZmZlciopcCwgJmJ1ZikgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgZm9ybWF0Kys7Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgMSkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtODkxLDIwICs4NzAsMTkgQEAKICAgICAgICAgICAgIGlmIChjID09ICd6JyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBOVUxMLCBOVUxMLCAwLCAxLCAwKTsKICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgdWFyZyA9IFVOSUNPREVfREVGQVVMVF9FTkNPRElORyhhcmcpOwotICAgICAgICAgICAgICAgIGlmICh1YXJnID09IE5VTEwpCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgc2FyZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKHNhcmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoQ09OVl9VTklDT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICAgICAgUHlCdWZmZXJfRmlsbEluZm8ocCwgYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHVhcmcpLCBQeUJ5dGVzX0dFVF9TSVpFKHVhcmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDApOworICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIGFyZywgc2FyZywgbGVuLCAxLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnVmZmVyLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCBwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIDEpKSB7CisgICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgY2xlYW51cF9idWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCiAgICAgICAgICAgICAgICAgICAgICIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTkyMCwxMiArODk4LDEzIEBACiAgICAgICAgICAgICAgICAgU1RPUkVfU0laRSgwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgdWFyZyA9IFVOSUNPREVfREVGQVVMVF9FTkNPRElORyhhcmcpOwotICAgICAgICAgICAgICAgIGlmICh1YXJnID09IE5VTEwpCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgc2FyZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKHNhcmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoQ09OVl9VTklDT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyh1YXJnKTsKLSAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKFB5Qnl0ZXNfR0VUX1NJWkUodWFyZykpOworICAgICAgICAgICAgICAgICpwID0gc2FyZzsKKyAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKGxlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYW55IGJ1ZmZlci1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgICAgIC8qIFhYWCBSZWFsbHk/ICovCkBAIC05MzksMjUgKzkxOCwyNSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogInMiIG9yICJ6IiAqLwogICAgICAgICAgICAgY2hhciAqKnAgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOwotICAgICAgICAgICAgdWFyZyA9IE5VTEw7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIHNhcmcgPSBOVUxMOwogCiAgICAgICAgICAgICBpZiAoYyA9PSAneicgJiYgYXJnID09IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgKnAgPSBOVUxMOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHVhcmcpOworICAgICAgICAgICAgICAgICpwID0gc2FyZzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihjID09ICd6JyA/ICJzdHIgb3IgTm9uZSIgOiAic3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoKnAgIT0gTlVMTCAmJiB1YXJnICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkgc3RybGVuKCpwKSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHVhcmcpKQorICAgICAgICAgICAgaWYgKCpwICE9IE5VTEwgJiYgc2FyZyAhPSBOVUxMICYmIChQeV9zc2l6ZV90KSBzdHJsZW4oKnApICE9IGxlbikKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgYyA9PSAneicgPyAic3RyIHdpdGhvdXQgbnVsbCBieXRlcyBvciBOb25lIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJzdHIgd2l0aG91dCBudWxsIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgYyA9PSAneicgPyAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVycyIsCiAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTk2Niw5ICs5NDUsMTAgQEAKICAgICBjYXNlICd1JzogLyogcmF3IHVuaWNvZGUgYnVmZmVyIChQeV9VTklDT0RFICopICovCiAgICAgY2FzZSAnWic6IC8qIHJhdyB1bmljb2RlIGJ1ZmZlciBvciBOb25lICovCiAgICAgeworICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7CisKICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7IC8qIGFueSBidWZmZXItbGlrZSBvYmplY3QgKi8KICAgICAgICAgICAgIC8qICJzIyIgb3IgIlojIiAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqKnAgPSB2YV9hcmcoKnBfdmEsIFB5X1VOSUNPREUgKiopOwogICAgICAgICAgICAgRkVUQ0hfU0laRTsKIAogICAgICAgICAgICAgaWYgKGMgPT0gJ1onICYmIGFyZyA9PSBQeV9Ob25lKSB7CkBAIC05NzYsMjMgKzk1NiwyNyBAQAogICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKTsKLSAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKFB5VW5pY29kZV9HRVRfU0laRShhcmcpKTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgU1RPUkVfU0laRShsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJzdHIgb3IgTm9uZSIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogInMiIG9yICJaIiAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqKnAgPSB2YV9hcmcoKnBfdmEsIFB5X1VOSUNPREUgKiopOwotCiAgICAgICAgICAgICBpZiAoYyA9PSAnWicgJiYgYXJnID09IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgKnAgPSBOVUxMOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RybGVuKCpwKSAhPSBQeVVuaWNvZGVfR0VUX1NJWkUoYXJnKSkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RybGVuKCpwKSAhPSBsZW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICAgICAgInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVyIG9yIE5vbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVycyBvciBOb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGMgPT0gJ1onID8gInN0ciBvciBOb25lIiA6ICJzdHIiLApAQCAtMTExMCw3ICsxMDk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAoKmJ1ZmZlciwgZnJlZWxpc3QsIDApKSB7CisgICAgICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAoKmJ1ZmZlciwgZnJlZWxpc3QsIGNsZWFudXBfcHRyKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKQEAgLTExNTIsNyArMTEzNiw3IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAoKmJ1ZmZlciwgZnJlZWxpc3QsIDApKSB7CisgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgY2xlYW51cF9wdHIpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTExODMsOCArMTE2NywxMSBAQAogCiAgICAgY2FzZSAnVSc6IHsgLyogUHlVbmljb2RlIG9iamVjdCAqLwogICAgICAgICBQeU9iamVjdCAqKnAgPSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKQorICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICAgICAgKnAgPSBhcmc7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInN0ciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjEzLDcgKzEyMDAsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIodW5zcGVjaWZpZWQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICBpZiAocmVzID09IFB5X0NMRUFOVVBfU1VQUE9SVEVEICYmCi0gICAgICAgICAgICAgICAgYWRkY2xlYW51cF9jb252ZXJ0KGFkZHIsIGZyZWVsaXN0LCBjb252ZXJ0KSA9PSAtMSkKKyAgICAgICAgICAgICAgICBhZGRjbGVhbnVwKGFkZHIsIGZyZWVsaXN0LCBjb252ZXJ0KSA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIH0KQEAgLTEyNDQsNyArMTIzMSw3IEBACiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKChQeV9idWZmZXIqKXApOwogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoImNvbnRpZ3VvdXMgYnVmZmVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCAxKSkgeworICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgY2xlYW51cF9idWZmZXIpKSB7CiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTE0MzEsOCArMTQxOCwxMCBAQAogICAgIGludCBsZXZlbHNbMzJdOwogICAgIGNvbnN0IGNoYXIgKmZuYW1lLCAqbXNnLCAqY3VzdG9tX21zZywgKmtleXdvcmQ7CiAgICAgaW50IG1pbiA9IElOVF9NQVg7CisgICAgaW50IG1heCA9IElOVF9NQVg7CiAgICAgaW50IGksIGxlbiwgbmFyZ3MsIG5rZXl3b3JkczsKLSAgICBQeU9iamVjdCAqZnJlZWxpc3QgPSBOVUxMLCAqY3VycmVudF9hcmc7CisgICAgUHlPYmplY3QgKmN1cnJlbnRfYXJnOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3QgPSB7MCwgTlVMTH07CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrZXl3b3JkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrZXl3b3JkcykpOwpAQCAtMTQ1NiwzMSArMTQ0NSw2OCBAQAogICAgIGZvciAobGVuPTA7IGt3bGlzdFtsZW5dOyBsZW4rKykKICAgICAgICAgY29udGludWU7CiAKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbGVuKTsKKyAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKICAgICBua2V5d29yZHMgPSAoa2V5d29yZHMgPT0gTlVMTCkgPyAwIDogUHlEaWN0X1NpemUoa2V5d29yZHMpOwogICAgIGlmIChuYXJncyArIG5rZXl3b3JkcyA+IGxlbikgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkICIKLSAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCVzICglZCBnaXZlbikiLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzJXMgdGFrZXMgYXQgbW9zdCAlZCBhcmd1bWVudCVzICglZCBnaXZlbikiLAogICAgICAgICAgICAgICAgICAgICAgKGZuYW1lID09IE5VTEwpID8gImZ1bmN0aW9uIiA6IGZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgKGZuYW1lID09IE5VTEwpID8gIiIgOiAiKCkiLAogICAgICAgICAgICAgICAgICAgICAgbGVuLAogICAgICAgICAgICAgICAgICAgICAgKGxlbiA9PSAxKSA/ICIiIDogInMiLAogICAgICAgICAgICAgICAgICAgICAgbmFyZ3MgKyBua2V5d29yZHMpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgLyogY29udmVydCB0dXBsZSBhcmdzIGFuZCBrZXl3b3JkIGFyZ3MgaW4gc2FtZSBsb29wLCB1c2luZyBrd2xpc3QgdG8gZHJpdmUgcHJvY2VzcyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBrZXl3b3JkID0ga3dsaXN0W2ldOwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKKyAgICAgICAgICAgIGlmIChtaW4gIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKHwgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBtaW4gPSBpOwogICAgICAgICAgICAgZm9ybWF0Kys7CisKKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CisgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWF4ID0gaTsKKyAgICAgICAgICAgIGZvcm1hdCsrOworCisgICAgICAgICAgICBpZiAobWF4IDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgJXMgJWQgcG9zaXRpb25hbCBhcmd1bWVudHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gIT0gSU5UX01BWCkgPyAiYXQgbW9zdCIgOiAiZXhhY3RseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCwgbmFyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIGtleXdvcmQgbGlzdCBlbnRyaWVzICglZCkgdGhhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXJzICglZCkiLCBsZW4sIGkpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKICAgICAgICAgaWYgKG5rZXl3b3JkcykgewpAQCAtMTQ5NCwxMSArMTUyMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVzJykgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHBvc2l0aW9uICglZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobmtleXdvcmRzICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKIApAQCAtMTUwNyw3ICsxNTMzLDcgQEAKICAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CiAgICAgICAgICAgICBpZiAobXNnKSB7CiAgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTUxNiwxNCArMTU0MiwxNCBAQAogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyAocG9zICVkKSBub3QgZm91bmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCiAgICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgogICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KICAgICAgICAgICovCiAgICAgICAgIGlmICghbmtleXdvcmRzKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogCiAgICAgICAgIC8qIFdlIGFyZSBpbnRvIG9wdGlvbmFsIGFyZ3MsIHNraXAgdGhydSB0byBhbnkgcmVtYWluaW5nCiAgICAgICAgICAqIGtleXdvcmQgYXJncyAqLwpAQCAtMTUzMSwxNSArMTU1NywxNSBAQAogICAgICAgICBpZiAobXNnKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLCAiJXM6ICclcyciLCBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSAmJiAqZm9ybWF0ICE9ICd8JykgeworICAgIGlmICghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSAmJiAoKmZvcm1hdCAhPSAnfCcpICYmICgqZm9ybWF0ICE9ICckJykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICJtb3JlIGFyZ3VtZW50IHNwZWNpZmllcnMgdGhhbiBrZXl3b3JkIGxpc3QgZW50cmllcyAiCiAgICAgICAgICAgICAiKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykiLCBmb3JtYXQpOwotICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICAvKiBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGV4dHJhbmVvdXMga2V5d29yZCBhcmd1bWVudHMgKi8KQEAgLTE1NTIsNyArMTU3OCw3IEBACiAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBjaGVjayB0aGF0IF9QeVVuaWNvZGVfQXNTdHJpbmcoKSByZXN1bHQgaXMgbm90IE5VTEwgKi8KICAgICAgICAgICAgIGtzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwpAQCAtMTU2OSwxMiArMTU5NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogfQogCiAKQEAgLTE1ODYsOCArMTYxMiwxMCBAQAogCiAgICAgc3dpdGNoIChjKSB7CiAKLSAgICAvKiBzaW1wbGUgY29kZXMKLSAgICAgKiBUaGUgaW5kaXZpZHVhbCB0eXBlcyAoc2Vjb25kIGFyZyBvZiB2YV9hcmcpIGFyZSBpcnJlbGV2YW50ICovCisgICAgLyoKKyAgICAgKiBjb2RlcyB0aGF0IHRha2UgYSBzaW5nbGUgZGF0YSBwb2ludGVyIGFzIGFuIGFyZ3VtZW50CisgICAgICogKHRoZSB0eXBlIG9mIHRoZSBwb2ludGVyIGlzIGlycmVsZXZhbnQpCisgICAgICovCiAKICAgICBjYXNlICdiJzogLyogYnl0ZSAtLSB2ZXJ5IHNob3J0IGludCAqLwogICAgIGNhc2UgJ0InOiAvKiBieXRlIGFzIGJpdGZpZWxkICovCkBAIC0xNjAxLDIyICsxNjI5LDIxIEBACiAgICAgY2FzZSAnTCc6IC8qIFBZX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgJ0snOiAvKiBQWV9MT05HX0xPTkcgc2l6ZWQgYml0ZmllbGQgKi8KICNlbmRpZgorICAgIGNhc2UgJ24nOiAvKiBQeV9zc2l6ZV90ICovCiAgICAgY2FzZSAnZic6IC8qIGZsb2F0ICovCiAgICAgY2FzZSAnZCc6IC8qIGRvdWJsZSAqLwogICAgIGNhc2UgJ0QnOiAvKiBjb21wbGV4IGRvdWJsZSAqLwogICAgIGNhc2UgJ2MnOiAvKiBjaGFyICovCiAgICAgY2FzZSAnQyc6IC8qIHVuaWNvZGUgY2hhciAqLworICAgIGNhc2UgJ3AnOiAvKiBib29sZWFuIHByZWRpY2F0ZSAqLworICAgIGNhc2UgJ1MnOiAvKiBzdHJpbmcgb2JqZWN0ICovCisgICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KKyAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCiAgICAgICAgIHsKICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgY2FzZSAnbic6IC8qIFB5X3NzaXplX3QgKi8KLSAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlfc3NpemVfdCAqKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAvKiBzdHJpbmcgY29kZXMgKi8KIAogICAgIGNhc2UgJ2UnOiAvKiBzdHJpbmcgd2l0aCBlbmNvZGluZyAqLwpAQCAtMTY0OSwxNiArMTY3Niw2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgLyogb2JqZWN0IGNvZGVzICovCi0KLSAgICBjYXNlICdTJzogLyogc3RyaW5nIG9iamVjdCAqLwotICAgIGNhc2UgJ1knOiAvKiBzdHJpbmcgb2JqZWN0ICovCi0gICAgY2FzZSAnVSc6IC8qIHVuaWNvZGUgc3RyaW5nIG9iamVjdCAqLwotICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgY2FzZSAnTyc6IC8qIG9iamVjdCAqLwogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIScpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRjb3B5cmlnaHQuYyBiL1B5dGhvbi9nZXRjb3B5cmlnaHQuYwppbmRleCBkMWUyNTc4Li5kODNjNmRhIDEwMDY0NAotLS0gYS9QeXRob24vZ2V0Y29weXJpZ2h0LmMKKysrIGIvUHl0aG9uL2dldGNvcHlyaWdodC5jCkBAIC0xOSw1ICsxOSw1IEBACiBjb25zdCBjaGFyICoKIFB5X0dldENvcHlyaWdodCh2b2lkKQogewotCXJldHVybiBjcHJ0OworICAgIHJldHVybiBjcHJ0OwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dyYW1pbml0LmMgYi9QeXRob24vZ3JhbWluaXQuYwppbmRleCBjYWJjNGQ2Li5lMDQ5OTliIDEwMDY0NAotLS0gYS9QeXRob24vZ3JhbWluaXQuYworKysgYi9QeXRob24vZ3JhbWluaXQuYwpAQCAtMTc5MSw3ICsxNzkxLDcgQEAKICAgICB7MTY3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMVsyXSA9IHsKLSAgICB7OSwgMn0sCisgICAgezE2OCwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8yWzFdID0gewpAQCAtMTgwMiwxNzEgKzE4MDIsMTg4IEBACiAgICAgezIsIGFyY3NfODBfMX0sCiAgICAgezEsIGFyY3NfODBfMn0sCiB9Owotc3RhdGljIGRmYSBkZmFzWzgxXSA9IHsKLSAgICB7MjU2LCAic2luZ2xlX2lucHV0IiwgMCwgMywgc3RhdGVzXzAsCi0gICAgICJcMDA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDQifSwKLSAgICB7MjU3LCAiZmlsZV9pbnB1dCIsIDAsIDIsIHN0YXRlc18xLAotICAgICAiXDIwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0In0sCi0gICAgezI1OCwgImV2YWxfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHsyNTksICJkZWNvcmF0b3IiLCAwLCA3LCBzdGF0ZXNfMywKLSAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjAsICJkZWNvcmF0b3JzIiwgMCwgMiwgc3RhdGVzXzQsCi0gICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYxLCAiZGVjb3JhdGVkIiwgMCwgMywgc3RhdGVzXzUsCi0gICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYyLCAiZnVuY2RlZiIsIDAsIDgsIHN0YXRlc182LAotICAgICAiXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MywgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfNywKLSAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjQsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc184LAotICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NSwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc185LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NiwgInZhcmFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc18xMCwKLSAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjcsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTEsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY4LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMiwKLSAgICAgIlwwMDBcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNCJ9LAotICAgIHsyNjksICJzaW1wbGVfc3RtdCIsIDAsIDQsIHN0YXRlc18xMywKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMCJ9LAotICAgIHsyNzAsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE0LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwIn0sCi0gICAgezI3MSwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHsyNzIsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MjczLCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3NlwwMzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NCwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NSwgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18xOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzYsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDAifSwKLSAgICB7Mjc3LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzgsICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3OSwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzIzLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MCwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDAifSwKLSAgICB7MjgxLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODIsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODMsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODQsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODUsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18yOSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODYsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODcsICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzEsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMyLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzMzLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MCwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MSwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkyLCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkzLCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zNywKLSAgICAgIlwwMDBcMDEwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyMFwwNDVcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNCJ9LAotICAgIHsyOTQsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzM4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NSwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk2LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NywgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTgsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk5LCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwMCwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAxLCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDUsCi0gICAgICJcMDA0XDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDAifSwKLSAgICB7MzAyLCAidGVzdCIsIDAsIDYsIHN0YXRlc180NiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDMsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDQsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzQ4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwNSwgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzQ5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwNiwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTAsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzA3LCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzA4LCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzA5LCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTAsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMjIwXDE3N1wwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMSwgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181NSwKLSAgICAgIlwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTIsICJleHByIiwgMCwgMiwgc3RhdGVzXzU2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxMywgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzU3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxNCwgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzU4LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxNSwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE2LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTcsICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzYxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxOCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTksICJwb3dlciIsIDAsIDQsIHN0YXRlc182MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjAsICJhdG9tIiwgMCwgOSwgc3RhdGVzXzY0LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEyMFwwNzZcMDAwIn0sCi0gICAgezMyMSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjUsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzIyLCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182NiwKLSAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMCJ9LAotICAgIHszMjMsICJzdWJzY3JpcHRsaXN0IiwgMCwgMywgc3RhdGVzXzY3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyNCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc182OCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjUsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzY5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMyNiwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzcwLAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyNywgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyOCwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTEsIHN0YXRlc183MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjksICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183MywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNCJ9LAotICAgIHszMzAsICJhcmdsaXN0IiwgMCwgOCwgc3RhdGVzXzc0LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMzMSwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc1LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMzMiwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc183NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzMsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc183NywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzQsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzc4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNSwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfNzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM2LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMCJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzBbMl0gPSB7CisgICAgezczLCAxfSwKKyAgICB7OSwgMn0sCiB9Owotc3RhdGljIGxhYmVsIGxhYmVsc1sxNjhdID0geworc3RhdGljIGFyYyBhcmNzXzgxXzFbMV0gPSB7CisgICAgezI0LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODFfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MVszXSA9IHsKKyAgICB7MiwgYXJjc184MV8wfSwKKyAgICB7MSwgYXJjc184MV8xfSwKKyAgICB7MSwgYXJjc184MV8yfSwKK307CitzdGF0aWMgZGZhIGRmYXNbODJdID0geworICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKKyAgICAgIlwwMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICB7MjU3LCAiZmlsZV9pbnB1dCIsIDAsIDIsIHN0YXRlc18xLAorICAgICAiXDIwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAorICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAorICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjAsICJkZWNvcmF0b3JzIiwgMCwgMiwgc3RhdGVzXzQsCisgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MSwgImRlY29yYXRlZCIsIDAsIDMsIHN0YXRlc181LAorICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjIsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzYsCisgICAgICJcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MywgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfNywKKyAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY0LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOCwKKyAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY1LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzksCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NiwgInZhcmFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc18xMCwKKyAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY3LCAidmZwZGVmIiwgMCwgMiwgc3RhdGVzXzExLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjgsICJzdG10IiwgMCwgMiwgc3RhdGVzXzEyLAorICAgICAiXDAwMFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAorICAgIHsyNjksICJzaW1wbGVfc3RtdCIsIDAsIDQsIHN0YXRlc18xMywKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMFwwMDAifSwKKyAgICB7MjcwLCAic21hbGxfc3RtdCIsIDAsIDIsIHN0YXRlc18xNCwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMFwwMDAifSwKKyAgICB7MjcxLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE1LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHsyNzIsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTYsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezI3MywgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNzZcMDM3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc0LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NSwgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18xOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc2LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzQwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAorICAgIHsyNzcsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzgsICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzksICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yMywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgwLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKKyAgICB7MjgxLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgyLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MywgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODQsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg1LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMjksCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NiwgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMwLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODcsICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzEsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OCwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zMiwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg5LCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzMsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MCwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTEsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTIsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkzLCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zNywKKyAgICAgIlwwMDBcMDEwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyMFwwNDVcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDAifSwKKyAgICB7Mjk0LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc18zOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk1LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc18zOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk2LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTcsICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk5LCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQzLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDAsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDEsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NSwKKyAgICAgIlwwMDRcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMFwwMDAifSwKKyAgICB7MzAyLCAidGVzdCIsIDAsIDYsIHN0YXRlc180NiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzAzLCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNDcsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwNCwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNDgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNSwgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzQ5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDYsICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUwLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDcsICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA4LCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTIsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwOSwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTMsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxMCwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwyMjBcMTc3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxMSwgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181NSwKKyAgICAgIlwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzEyLCAiZXhwciIsIDAsIDIsIHN0YXRlc181NiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzEzLCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTcsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNCwgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzU4LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTUsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzU5LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTYsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTcsICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzYxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTgsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjIsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxOSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzYzLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjAsICJhdG9tIiwgMCwgOSwgc3RhdGVzXzY0LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjEsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY1LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjIsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzY2LAorICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMjMsICJzdWJzY3JpcHRsaXN0IiwgMCwgMywgc3RhdGVzXzY3LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjQsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNjgsCisgICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyNSwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNjksCisgICAgICJcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMyNiwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzcwLAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjcsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183MSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI4LCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxMSwgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjksICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDAifSwKKyAgICB7MzMwLCAiYXJnbGlzdCIsIDAsIDgsIHN0YXRlc183NCwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzMxLCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzUsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMzMiwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc183NiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzMzLCAiY29tcF9mb3IiLCAwLCA2LCBzdGF0ZXNfNzcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzNCwgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfNzgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzNSwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfNzksCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzNiwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCisgICAgezMzNywgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184MSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDJcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKK307CitzdGF0aWMgbGFiZWwgbGFiZWxzWzE2OV0gPSB7CiAgICAgezAsICJFTVBUWSJ9LAogICAgIHsyNTYsIDB9LAogICAgIHs0LCAwfSwKQEAgLTIxMzUsMTAgKzIxNTIsMTEgQEAKICAgICB7MzM0LCAwfSwKICAgICB7MzM1LCAwfSwKICAgICB7MSwgInlpZWxkIn0sCisgICAgezMzNywgMH0sCiB9OwogZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hciA9IHsKLSAgICA4MSwKKyAgICA4MiwKICAgICBkZmFzLAotICAgIHsxNjgsIGxhYmVsc30sCisgICAgezE2OSwgbGFiZWxzfSwKICAgICAyNTYKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0LmMgYi9QeXRob24vaW1wb3J0LmMKaW5kZXggZjY1NWU1MS4uMmY3MWI5NyAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydC5jCisrKyBiL1B5dGhvbi9pbXBvcnQuYwpAQCAtOCw2ICs4LDcgQEAKICNpbmNsdWRlICJlcnJjb2RlLmgiCiAjaW5jbHVkZSAibWFyc2hhbC5oIgogI2luY2x1ZGUgImNvZGUuaCIKKyNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKQEAgLTI2LDE3NiArMjcsMzggQEAKICNlbmRpZgogCiAKLS8qIE1hZ2ljIHdvcmQgdG8gcmVqZWN0IC5weWMgZmlsZXMgZ2VuZXJhdGVkIGJ5IG90aGVyIFB5dGhvbiB2ZXJzaW9ucy4KLSAgIEl0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCi0KLSAgIFRoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKLSAgIGEgLnB5YyBmaWxlIGluIHRleHQgbW9kZSB0aGUgbWFnaWMgbnVtYmVyIHdpbGwgYmUgd3Jvbmc7IGFsc28sIHRoZQotICAgQXBwbGUgTVBXIGNvbXBpbGVyIHN3YXBzIHRoZWlyIHZhbHVlcywgYm90Y2hpbmcgc3RyaW5nIGNvbnN0YW50cy4KLQotICAgVGhlIG1hZ2ljIG51bWJlcnMgbXVzdCBiZSBzcGFjZWQgYXBhcnQgYXQgbGVhc3QgMiB2YWx1ZXMsIGFzIHRoZQotICAgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgotICAgb2RkIG51bWJlcnMgZm9yIHNvbWUgdGltZSBub3cuCi0KLSAgIFRoZXJlIHdlcmUgYSB2YXJpZXR5IG9mIG9sZCBzY2hlbWVzIGZvciBzZXR0aW5nIHRoZSBtYWdpYyBudW1iZXIuCi0gICBUaGUgY3VycmVudCB3b3JraW5nIHNjaGVtZSBpcyB0byBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIHZhbHVlIGJ5Ci0gICAxMC4KLQotICAgU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYwotICAgbnVtYmVyIGFsc28gaW5jbHVkZXMgYSBuZXcgIm1hZ2ljIHRhZyIsIGkuZS4gYSBodW1hbiByZWFkYWJsZSBzdHJpbmcgdXNlZAotICAgdG8gcmVwcmVzZW50IHRoZSBtYWdpYyBudW1iZXIgaW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMuICBXaGVuIHlvdSBjaGFuZ2UKLSAgIHRoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcwotICAgY2FuIGJlIG5hbWVkIGFmdGVyIHRoZSBQeXRob24gbWFqb3IgdmVyc2lvbiBvZiB0aGUgbWFnaWMgbnVtYmVyIGJ1bXAsIGJ1dAotICAgaXQgY2FuIHJlYWxseSBiZSBhbnl0aGluZywgYXMgbG9uZyBhcyBpdCdzIGRpZmZlcmVudCB0aGFuIGFueXRoaW5nIGVsc2UKLSAgIHRoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZwotICAgd2l0aCBQeXRob24gMy4yYTAuCi0KLSAgIEtub3duIHZhbHVlczoKLSAgICAgICBQeXRob24gMS41OiAgIDIwMTIxCi0gICAgICAgUHl0aG9uIDEuNS4xOiAyMDEyMQotICAgICAgIFB5dGhvbiAxLjUuMjogMjAxMjEKLSAgICAgICBQeXRob24gMS42OiAgIDUwNDI4Ci0gICAgICAgUHl0aG9uIDIuMDogICA1MDgyMwotICAgICAgIFB5dGhvbiAyLjAuMTogNTA4MjMKLSAgICAgICBQeXRob24gMi4xOiAgIDYwMjAyCi0gICAgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgotICAgICAgIFB5dGhvbiAyLjEuMjogNjAyMDIKLSAgICAgICBQeXRob24gMi4yOiAgIDYwNzE3Ci0gICAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQotICAgICAgIFB5dGhvbiAyLjNhMDogNjIwMjEKLSAgICAgICBQeXRob24gMi4zYTA6IDYyMDExICghKQotICAgICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKLSAgICAgICBQeXRob24gMi40YTM6IDYyMDUxCi0gICAgICAgUHl0aG9uIDIuNGIxOiA2MjA2MQotICAgICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDgxIChhc3QtYnJhbmNoKQotICAgICAgIFB5dGhvbiAyLjVhMDogNjIwOTEgKHdpdGgpCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQotICAgICAgIFB5dGhvbiAyLjViMzogNjIxMDEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uKQotICAgICAgIFB5dGhvbiAyLjViMzogNjIxMTEgKGZpeCB3cm9uZyBjb2RlOiB4ICs9IHlpZWxkKQotICAgICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmluZyBjb25zdGFudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQpCi0gICAgICAgUHl0aG9uIDIuNWMyOiA2MjEzMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4gaW4gbGlzdGNvbXAvZ2VuZXhwKQotICAgICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCi0gICAgICAgUHl0aG9uIDIuNmExOiA2MjE2MSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikKLSAgICAgICBQeXRob24gMzAwMDogICAzMDAwCi0gICAgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQotICAgICAgICAgICAgICAgICAgICAgIDMwMjAgKGFkZGVkIEJVSUxEX1NFVCkKLSAgICAgICAgICAgICAgICAgICAgICAzMDMwIChhZGRlZCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgMzA1MCAocHJpbnQgYmVjb21lcyBhIGZ1bmN0aW9uKQotICAgICAgICAgICAgICAgICAgICAgIDMwNjAgKFBFUCAzMTE1IG1ldGFjbGFzcyBzeW50YXgpCi0gICAgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICAgIDMwNzEgKFBFUCAzMTA5IHJhaXNlIGNoYW5nZXMpCi0gICAgICAgICAgICAgICAgICAgICAgMzA4MSAoUEVQIDMxMzcgbWFrZSBfX2ZpbGVfXyBhbmQgX19uYW1lX18gdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQotICAgICAgICAgICAgICAgICAgICAgIDMxMDEgKG1lcmdlIGZyb20gMi42YTAsIHNlZSA2MjE1MSkKLSAgICAgICAgICAgICAgICAgICAgICAzMTAzIChfX2ZpbGVfXyBwb2ludHMgdG8gc291cmNlIGZpbGUpCi0gICAgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KLSAgICAgICBQeXRob24gMy4wYTU6IDMxMzEgKGxleGljYWwgZXhjZXB0aW9uIHN0YWNraW5nLCBpbmNsdWRpbmcgUE9QX0VYQ0VQVCkKLSAgICAgICBQeXRob24gMy4xYTA6IDMxNDEgKG9wdGltaXplIGxpc3QsIHNldCBhbmQgZGljdCBjb21wcmVoZW5zaW9uczoKLSAgICAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCi0gICAgICAgUHl0aG9uIDMuMWEwOiAzMTUxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKLSAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKLSAgICAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQotICAgICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCi0gICAgICAgUHl0aG9uIDMuMmExOiAzMTcwIChhZGQgRFVQX1RPUF9UV08sIHJlbW92ZSBEVVBfVE9QWCBhbmQgUk9UX0ZPVVIpCi0gICAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSAgICAgICBQeXRob24gMy4yYTIgIDMxODAgKGFkZCBERUxFVEVfREVSRUYpCi0qLwotCi0vKiBNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCi0gICBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQotICAgZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBuZXcgb3Bjb2RlcykKLSAgIFRBRyBtdXN0IGNoYW5nZSBmb3IgZWFjaCBtYWpvciBQeXRob24gcmVsZWFzZS4gVGhlIG1hZ2ljIG51bWJlciB3aWxsIHRha2UKLSAgIGNhcmUgb2YgYW55IGJ5dGVjb2RlIGNoYW5nZXMgdGhhdCBvY2N1ciBkdXJpbmcgZGV2ZWxvcG1lbnQuCi0qLwotI2RlZmluZSBNQUdJQyAoMzE4MCB8ICgobG9uZyknXHInPDwxNikgfCAoKGxvbmcpJ1xuJzw8MjQpKQotI2RlZmluZSBUQUcgImNweXRob24tMzIiCiAjZGVmaW5lIENBQ0hFRElSICJfX3B5Y2FjaGVfXyIKLS8qIEN1cnJlbnQgbWFnaWMgd29yZCBhbmQgc3RyaW5nIHRhZyBhcyBnbG9iYWxzLiAqLwotc3RhdGljIGxvbmcgcHljX21hZ2ljID0gTUFHSUM7Ci1zdGF0aWMgY29uc3QgY2hhciAqcHljX3RhZyA9IFRBRzsKIAotLyogU2VlIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUoKSBiZWxvdyAqLworLyogU2VlIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdCgpIGJlbG93ICovCiBzdGF0aWMgUHlPYmplY3QgKmV4dGVuc2lvbnMgPSBOVUxMOwogCisvKiBGdW5jdGlvbiBmcm9tIFBhcnNlci90b2tlbml6ZXIuYyAqLworZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShpbnQsIFB5T2JqZWN0ICopOworCiAvKiBUaGlzIHRhYmxlIGlzIGRlZmluZWQgaW4gY29uZmlnLmM6ICovCiBleHRlcm4gc3RydWN0IF9pbml0dGFiIF9QeUltcG9ydF9Jbml0dGFiW107CiAKLS8qIE1ldGhvZCBmcm9tIFBhcnNlci90b2tlbml6ZXIuYyAqLwotZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50KTsKLQogc3RydWN0IF9pbml0dGFiICpQeUltcG9ydF9Jbml0dGFiID0gX1B5SW1wb3J0X0luaXR0YWI7CiAKLS8qIHRoZXNlIHRhYmxlcyBkZWZpbmUgdGhlIG1vZHVsZSBzdWZmaXhlcyB0aGF0IFB5dGhvbiByZWNvZ25pemVzICovCi1zdHJ1Y3QgZmlsZWRlc2NyICogX1B5SW1wb3J0X0ZpbGV0YWIgPSBOVUxMOwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfU3RhbmRhcmRGaWxldGFiW10gPSB7Ci0gICAgeyIucHkiLCAiVSIsIFBZX1NPVVJDRX0sCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHsiLnB5dyIsICJVIiwgUFlfU09VUkNFfSwKLSNlbmRpZgotICAgIHsiLnB5YyIsICJyYiIsIFBZX0NPTVBJTEVEfSwKLSAgICB7MCwgMH0KLX07Ci0KK3N0YXRpYyBQeU9iamVjdCAqaW5pdHN0ciA9IE5VTEw7CiAKIC8qIEluaXRpYWxpemUgdGhpbmdzICovCiAKIHZvaWQKIF9QeUltcG9ydF9Jbml0KHZvaWQpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGZpbGVkZXNjciAqc2NhbjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmaWxldGFiOwotICAgIGludCBjb3VudEQgPSAwOwotICAgIGludCBjb3VudFMgPSAwOwotCi0gICAgLyogcHJlcGFyZSBfUHlJbXBvcnRfRmlsZXRhYjogY29weSBlbnRyaWVzIGZyb20KLSAgICAgICBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWIgYW5kIF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWIuCi0gICAgICovCi0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBmb3IgKHNjYW4gPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWI7IHNjYW4tPnN1ZmZpeCAhPSBOVUxMOyArK3NjYW4pCi0gICAgICAgICsrY291bnREOwotI2VuZGlmCi0gICAgZm9yIChzY2FuID0gX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYjsgc2Nhbi0+c3VmZml4ICE9IE5VTEw7ICsrc2NhbikKLSAgICAgICAgKytjb3VudFM7Ci0gICAgZmlsZXRhYiA9IFB5TWVtX05FVyhzdHJ1Y3QgZmlsZWRlc2NyLCBjb3VudEQgKyBjb3VudFMgKyAxKTsKLSAgICBpZiAoZmlsZXRhYiA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGltcG9ydCBmaWxlIHRhYmxlLiIpOwotI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCi0gICAgbWVtY3B5KGZpbGV0YWIsIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYiwKLSAgICAgICAgICAgY291bnREICogc2l6ZW9mKHN0cnVjdCBmaWxlZGVzY3IpKTsKLSNlbmRpZgotICAgIG1lbWNweShmaWxldGFiICsgY291bnRELCBfUHlJbXBvcnRfU3RhbmRhcmRGaWxldGFiLAotICAgICAgICAgICBjb3VudFMgKiBzaXplb2Yoc3RydWN0IGZpbGVkZXNjcikpOwotICAgIGZpbGV0YWJbY291bnREICsgY291bnRTXS5zdWZmaXggPSBOVUxMOwotCi0gICAgX1B5SW1wb3J0X0ZpbGV0YWIgPSBmaWxldGFiOwotCi0gICAgaWYgKFB5X09wdGltaXplRmxhZykgewotICAgICAgICAvKiBSZXBsYWNlICIucHljIiB3aXRoICIucHlvIiBpbiBfUHlJbXBvcnRfRmlsZXRhYiAqLwotICAgICAgICBmb3IgKDsgZmlsZXRhYi0+c3VmZml4ICE9IE5VTEw7IGZpbGV0YWIrKykgewotICAgICAgICAgICAgaWYgKHN0cmNtcChmaWxldGFiLT5zdWZmaXgsICIucHljIikgPT0gMCkKLSAgICAgICAgICAgICAgICBmaWxldGFiLT5zdWZmaXggPSAiLnB5byI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaW5pdHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2luaXRfXyIpOworICAgIGlmIChpbml0c3RyID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgaW1wb3J0IHZhcmlhYmxlcyIpOwogfQogCiB2b2lkCiBfUHlJbXBvcnRIb29rc19Jbml0KHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKnYsICpwYXRoX2hvb2tzID0gTlVMTCwgKnppbXBpbXBvcnQ7CisgICAgUHlPYmplY3QgKnYsICpwYXRoX2hvb2tzID0gTlVMTDsKICAgICBpbnQgZXJyID0gMDsKIAotICAgIC8qIGFkZGluZyBzeXMucGF0aF9ob29rcyBhbmQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUsIHNldHRpbmcgdXAKLSAgICAgICB6aXBpbXBvcnQgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeU51bGxJbXBvcnRlcl9UeXBlKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGluc3RhbGxpbmcgemlwaW1wb3J0IGhvb2tcbiIpOwotCisgICAgLyogYWRkaW5nIHN5cy5wYXRoX2hvb2tzIGFuZCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSAqLwogICAgIHYgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yMTYsMTEgKzc5LDI1IEBACiAgICAgZXJyID0gUHlTeXNfU2V0T2JqZWN0KCJwYXRoX2hvb2tzIiwgcGF0aF9ob29rcyk7CiAgICAgaWYgKGVycikgewogICBlcnJvcjoKLSAgICAgICAgUHlFcnJfUHJpbnQoKTsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiaW5pdGlhbGl6aW5nIHN5cy5tZXRhX3BhdGgsIHN5cy5wYXRoX2hvb2tzLCAiCi0gICAgICAgICAgICAgICAgICAgICAgInBhdGhfaW1wb3J0ZXJfY2FjaGUsIG9yIE51bGxJbXBvcnRlciBmYWlsZWQiCi0gICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBQeUVycl9QcmludCgpOworICAgIFB5X0ZhdGFsRXJyb3IoImluaXRpYWxpemluZyBzeXMubWV0YV9wYXRoLCBzeXMucGF0aF9ob29rcywgIgorICAgICAgICAgICAgICAgICAgIm9yIHBhdGhfaW1wb3J0ZXJfY2FjaGUgZmFpbGVkIik7CiAgICAgfQorICAgIFB5X0RFQ1JFRihwYXRoX2hvb2tzKTsKK30KKwordm9pZAorX1B5SW1wb3J0WmlwX0luaXQodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqcGF0aF9ob29rcywgKnppbXBpbXBvcnQ7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBwYXRoX2hvb2tzID0gUHlTeXNfR2V0T2JqZWN0KCJwYXRoX2hvb2tzIik7CisgICAgaWYgKHBhdGhfaG9va3MgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChQeV9WZXJib3NlRmxhZykKKyAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgaW5zdGFsbGluZyB6aXBpbXBvcnQgaG9va1xuIik7CiAKICAgICB6aW1waW1wb3J0ID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJ6aXBpbXBvcnQiKTsKICAgICBpZiAoemltcGltcG9ydCA9PSBOVUxMKSB7CkBAIC0yMjksOCArMTA2LDkgQEAKICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGNhbid0IGltcG9ydCB6aXBpbXBvcnRcbiIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnppcGltcG9ydGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh6aW1waW1wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6aXBpbXBvcnRlciIpOworICAgICAgICBfUHlfSURFTlRJRklFUih6aXBpbXBvcnRlcik7CisgICAgICAgIFB5T2JqZWN0ICp6aXBpbXBvcnRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoemltcGltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF96aXBpbXBvcnRlcik7CiAgICAgICAgIFB5X0RFQ1JFRih6aW1waW1wb3J0KTsKICAgICAgICAgaWYgKHppcGltcG9ydGVyID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIE5vIHppcGltcG9ydGVyIG9iamVjdCAtLSBva2F5ICovCkBAIC0yMzksMTcgKzExNywyMyBAQAogICAgICAgICAgICAgICAgICAgICAiIyBjYW4ndCBpbXBvcnQgemlwaW1wb3J0LnppcGltcG9ydGVyXG4iKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIHN5cy5wYXRoX2hvb2tzLmFwcGVuZCh6aXBpbXBvcnRlcikgKi8KLSAgICAgICAgICAgIGVyciA9IFB5TGlzdF9BcHBlbmQocGF0aF9ob29rcywgemlwaW1wb3J0ZXIpOworICAgICAgICAgICAgLyogc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIHppcGltcG9ydGVyKSAqLworICAgICAgICAgICAgZXJyID0gUHlMaXN0X0luc2VydChwYXRoX2hvb2tzLCAwLCB6aXBpbXBvcnRlcik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoemlwaW1wb3J0ZXIpOwotICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgIGlmIChlcnIgPCAwKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKICAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKICAgICAgICAgICAgICAgICAgICAgIiMgaW5zdGFsbGVkIHppcGltcG9ydCBob29rXG4iKTsKICAgICAgICAgfQogICAgIH0KLSAgICBQeV9ERUNSRUYocGF0aF9ob29rcyk7CisKKyAgICByZXR1cm47CisKKyAgZXJyb3I6CisgICAgUHlFcnJfUHJpbnQoKTsKKyAgICBQeV9GYXRhbEVycm9yKCJpbml0aWFsaXppbmcgemlwaW1wb3J0IGZhaWxlZCIpOwogfQogCiAvKiBMb2NraW5nIHByaW1pdGl2ZXMgdG8gcHJldmVudCBwYXJhbGxlbCBpbXBvcnRzIG9mIHRoZSBzYW1lIG1vZHVsZQpAQCAtMzE5LDcgKzIwMyw3IEBACiAgICAgICAgIC8qIEZvcmtlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGltcG9ydCAqLwogICAgICAgICBsb25nIG1lID0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpOwogICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soaW1wb3J0X2xvY2ssIDApOwotCS8qIFhYWDogY2FuIHRoZSBwcmV2aW91cyBsaW5lIGZhaWw/ICovCisgICAgICAgIC8qIFhYWDogY2FuIHRoZSBwcmV2aW91cyBsaW5lIGZhaWw/ICovCiAgICAgICAgIGltcG9ydF9sb2NrX3RocmVhZCA9IG1lOwogICAgICAgICBpbXBvcnRfbG9ja19sZXZlbC0tOwogICAgIH0gZWxzZSB7CkBAIC0zNjksOCArMjUzLDYgQEAKIHsKICAgICBQeV9YREVDUkVGKGV4dGVuc2lvbnMpOwogICAgIGV4dGVuc2lvbnMgPSBOVUxMOwotICAgIFB5TWVtX0RFTChfUHlJbXBvcnRfRmlsZXRhYik7Ci0gICAgX1B5SW1wb3J0X0ZpbGV0YWIgPSBOVUxMOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgaWYgKGltcG9ydF9sb2NrICE9IE5VTEwpIHsKICAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGltcG9ydF9sb2NrKTsKQEAgLTM3OSwxNCArMjYxLDYgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZAotaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKHZvaWQpCi17Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7Ci0gICAgaWYgKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgIT0gTlVMTCkKLSAgICAgICAgUHlEaWN0X0NsZWFyKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcpOwotfQotCiAvKiBIZWxwZXIgZm9yIHN5cyAqLwogCiBQeU9iamVjdCAqCkBAIC00MjMsNyArMjk3LDYgQEAKIFB5SW1wb3J0X0NsZWFudXAodm9pZCkKIHsKICAgICBQeV9zc2l6ZV90IHBvcywgbmRvbmU7Ci0gICAgY2hhciAqbmFtZTsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpkaWN0OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gaW50ZXJwLT5tb2R1bGVzOwpAQCAtNDk2LDE0ICszNjksMTMgQEAKICAgICAgICAgICAgIGlmICh2YWx1ZS0+b2JfcmVmY250ICE9IDEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlNb2R1bGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKLSAgICAgICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJidWlsdGlucyIpID09IDApCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgImJ1aWx0aW5zIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAic3lzIikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAic3lzIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKLSAgICAgICAgICAgICAgICAgICAgICAgICIjIGNsZWFudXBbMV0gJXNcbiIsIG5hbWUpOworICAgICAgICAgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoCisgICAgICAgICAgICAgICAgICAgICAgICAiIyBjbGVhbnVwWzFdICVVXG4iLCBrZXkpOwogICAgICAgICAgICAgICAgIF9QeU1vZHVsZV9DbGVhcih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0obW9kdWxlcywga2V5LCBQeV9Ob25lKTsKICAgICAgICAgICAgICAgICBuZG9uZSsrOwpAQCAtNTE1LDEzICszODcsMTIgQEAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChtb2R1bGVzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSAmJiBQeU1vZHVsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7Ci0gICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJidWlsdGlucyIpID09IDApCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAiYnVpbHRpbnMiKSA9PSAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAic3lzIikgPT0gMCkKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJzeXMiKSA9PSAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGNsZWFudXBbMl0gJXNcbiIsIG5hbWUpOworICAgICAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyBjbGVhbnVwWzJdICVVXG4iLCBrZXkpOwogICAgICAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKICAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIGtleSwgUHlfTm9uZSk7CiAgICAgICAgIH0KQEAgLTU0Nyw3ICs0MTgsNiBAQAogICAgIFB5RGljdF9DbGVhcihtb2R1bGVzKTsKICAgICBpbnRlcnAtPm1vZHVsZXMgPSBOVUxMOwogICAgIFB5X0RFQ1JFRihtb2R1bGVzKTsKLSAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nKTsKIH0KIAogCkBAIC01NTYsMjUgKzQyNiwzNiBAQAogbG9uZwogUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIodm9pZCkKIHsKLSAgICByZXR1cm4gcHljX21hZ2ljOworICAgIGxvbmcgcmVzOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwOworICAgIFB5T2JqZWN0ICpweWNfbWFnaWMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfUkFXX01BR0lDX05VTUJFUiIpOworICAgIGlmIChweWNfbWFnaWMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IFB5TG9uZ19Bc0xvbmcocHljX21hZ2ljKTsKKyAgICBQeV9ERUNSRUYocHljX21hZ2ljKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiAKK2V4dGVybiBjb25zdCBjaGFyICogX1B5U3lzX0ltcGxDYWNoZVRhZzsKKwogY29uc3QgY2hhciAqCiBQeUltcG9ydF9HZXRNYWdpY1RhZyh2b2lkKQogewotICAgIHJldHVybiBweWNfdGFnOworICAgIHJldHVybiBfUHlTeXNfSW1wbENhY2hlVGFnOwogfQogCisKIC8qIE1hZ2ljIGZvciBleHRlbnNpb24gbW9kdWxlcyAoYnVpbHQtaW4gYXMgd2VsbCBhcyBkeW5hbWljYWxseQogICAgbG9hZGVkKS4gIFRvIHByZXZlbnQgaW5pdGlhbGl6aW5nIGFuIGV4dGVuc2lvbiBtb2R1bGUgbW9yZSB0aGFuCiAgICBvbmNlLCB3ZSBrZWVwIGEgc3RhdGljIGRpY3Rpb25hcnkgJ2V4dGVuc2lvbnMnIGtleWVkIGJ5IG1vZHVsZSBuYW1lCiAgICAoZm9yIGJ1aWx0LWluIG1vZHVsZXMpIG9yIGJ5IGZpbGVuYW1lIChmb3IgZHluYW1pY2FsbHkgbG9hZGVkCiAgICBtb2R1bGVzKSwgY29udGFpbmluZyB0aGVzZSBtb2R1bGVzLiAgQSBjb3B5IG9mIHRoZSBtb2R1bGUncwotICAgZGljdGlvbmFyeSBpcyBzdG9yZWQgYnkgY2FsbGluZyBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKCkKKyAgIGRpY3Rpb25hcnkgaXMgc3RvcmVkIGJ5IGNhbGxpbmcgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KCkKICAgIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc3VjY2VlZHMuICBBCiAgICBjb3B5IGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGVyZSBieSBjYWxsaW5nCi0gICBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUoKS4KKyAgIF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KCkuCiAKICAgIE1vZHVsZXMgd2hpY2ggZG8gc3VwcG9ydCBtdWx0aXBsZSBpbml0aWFsaXphdGlvbiBzZXQgdGhlaXIgbV9zaXplCiAgICBmaWVsZCB0byBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgKGluZGljYXRpbmcgdGhlIHNpemUgb2YgdGhlCkBAIC01ODMsNyArNDY0LDggQEAKICovCiAKIGludAotX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZShQeU9iamVjdCAqbW9kLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqZmlsZW5hbWUpCitfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVzLCAqZGljdDsKICAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKmRlZjsKQEAgLTYwMiwxMCArNDg0LDEwIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbW9kKSA8IDApCisgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIG5hbWUsIG1vZCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKF9QeVN0YXRlX0FkZE1vZHVsZShtb2QsIGRlZikgPCAwKSB7Ci0gICAgICAgIFB5RGljdF9EZWxJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpOworICAgICAgICBQeURpY3RfRGVsSXRlbShtb2R1bGVzLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoZGVmLT5tX3NpemUgPT0gLTEpIHsKQEAgLTYzMSwxNyArNTEzLDE3IEBACiBfUHlJbXBvcnRfRml4dXBCdWlsdGluKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUpCiB7CiAgICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7Ci0gICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKKyAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJlcyA9IF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUobW9kLCBuYW1lLCBmaWxlbmFtZSk7Ci0gICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICByZXMgPSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobW9kLCBuYW1lb2JqLCBuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogUHlPYmplY3QgKgotX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpmaWxlbmFtZSkKK19QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZCwgKm1kaWN0OwogICAgIFB5TW9kdWxlRGVmKiBkZWY7CkBAIC02NTQsNyArNTM2LDcgQEAKICAgICAgICAgLyogTW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgcmVwZWF0ZWQgaW5pdGlhbGl6YXRpb24gKi8KICAgICAgICAgaWYgKGRlZi0+bV9iYXNlLm1fY29weSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICAgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbWRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG1vZCk7CkBAIC02NjksMzAgKzU1MSwzMCBAQAogICAgICAgICBtb2QgPSBkZWYtPm1fYmFzZS5tX2luaXQoKTsKICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSwgbW9kKTsKKyAgICAgICAgUHlEaWN0X1NldEl0ZW0oUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lLCBtb2QpOwogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICB9CiAgICAgaWYgKF9QeVN0YXRlX0FkZE1vZHVsZShtb2QsIGRlZikgPCAwKSB7Ci0gICAgICAgIFB5RGljdF9EZWxJdGVtU3RyaW5nKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSk7CisgICAgICAgIFB5RGljdF9EZWxJdGVtKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSk7CiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlcyAjIHByZXZpb3VzbHkgbG9hZGVkICglVSlcbiIsCisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0ICVVICMgcHJldmlvdXNseSBsb2FkZWQgKCVSKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgZmlsZW5hbWUpOwogICAgIHJldHVybiBtb2Q7CiAKIH0KIAogUHlPYmplY3QgKgotX1B5SW1wb3J0X0ZpbmRCdWlsdGluKGNoYXIgKm5hbWUpCitfUHlJbXBvcnRfRmluZEJ1aWx0aW4oY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzLCAqZmlsZW5hbWU7Ci0gICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKKyAgICBQeU9iamVjdCAqcmVzLCAqbmFtZW9iajsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIHJlcyA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KG5hbWVvYmosIG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC03MDMsMTggKzU4NSwxOCBAQAogICAgJ05FVycgUkVGRVJFTkNFISAqLwogCiBQeU9iamVjdCAqCi1QeUltcG9ydF9BZGRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKK1B5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKICAgICBQeU9iamVjdCAqbTsKIAotICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpKSAhPSBOVUxMICYmCisgICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgbmFtZSkpICE9IE5VTEwgJiYKICAgICAgICAgUHlNb2R1bGVfQ2hlY2sobSkpCiAgICAgICAgIHJldHVybiBtOwotICAgIG0gPSBQeU1vZHVsZV9OZXcobmFtZSk7CisgICAgbSA9IFB5TW9kdWxlX05ld09iamVjdChuYW1lKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbSkgIT0gMCkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBuYW1lLCBtKSAhPSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNzIzLDIyICs2MDUsMzEgQEAKICAgICByZXR1cm4gbTsKIH0KIAorUHlPYmplY3QgKgorUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICptb2R1bGU7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1vZHVsZSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgcmV0dXJuIG1vZHVsZTsKK30KKworCiAvKiBSZW1vdmUgbmFtZSBmcm9tIHN5cy5tb2R1bGVzLCBpZiBpdCdzIHRoZXJlLiAqLwogc3RhdGljIHZvaWQKLXJlbW92ZV9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKK3JlbW92ZV9tb2R1bGUoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpID09IE5VTEwpCisgICAgaWYgKFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIG5hbWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoUHlEaWN0X0RlbEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkgPCAwKQorICAgIGlmIChQeURpY3RfRGVsSXRlbShtb2R1bGVzLCBuYW1lKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImltcG9ydDogIGRlbGV0aW5nIGV4aXN0aW5nIGtleSBpbiIKICAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXMgZmFpbGVkIik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqIGdldF9zb3VyY2VmaWxlKGNoYXIgKmZpbGUpOwotc3RhdGljIGNoYXIgKm1ha2Vfc291cmNlX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYpOwotc3RhdGljIGNoYXIgKm1ha2VfY29tcGlsZWRfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWJ1Zyk7CiAKIC8qIEV4ZWN1dGUgYSBjb2RlIG9iamVjdCBpbiBhIG1vZHVsZSBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0CiAgKiBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVC4gIElmIGFuIGVycm9yIG9jY3VycywgbmFtZSBpcwpAQCAtNzY4LDEwICs2NTksNjAgQEAKIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcyhjaGFyICpuYW1lLCBQeU9iamVjdCAqY28sIGNoYXIgKnBhdGhuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwYXRobmFtZSkKIHsKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICpwYXRob2JqID0gTlVMTCwgKmNwYXRob2JqID0gTlVMTDsKKworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChjcGF0aG5hbWUgIT0gTlVMTCkgeworICAgICAgICBjcGF0aG9iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoY3BhdGhuYW1lKTsKKyAgICAgICAgaWYgKGNwYXRob2JqID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGNwYXRob2JqID0gTlVMTDsKKworICAgIGlmIChwYXRobmFtZSAhPSBOVUxMKSB7CisgICAgICAgIHBhdGhvYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHBhdGhuYW1lKTsKKyAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKGNwYXRob2JqICE9IE5VTEwpIHsKKyAgICAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9nZXRfc291cmNlZmlsZSk7CisKKyAgICAgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGludGVycHJldGVyISIpOworICAgICAgICB9CisKKyAgICAgICAgcGF0aG9iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2dldF9zb3VyY2VmaWxlLCBjcGF0aG9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBwYXRob2JqID0gTlVMTDsKKworICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChuYW1lb2JqLCBjbywgcGF0aG9iaiwgY3BhdGhvYmopOworZXJyb3I6CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIFB5X1hERUNSRUYocGF0aG9iaik7CisgICAgUHlfWERFQ1JFRihjcGF0aG9iaik7CisgICAgcmV0dXJuIG07Cit9CisKK1B5T2JqZWN0KgorUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpjbywgUHlPYmplY3QgKnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNwYXRobmFtZSkKK3sKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKICAgICBQeU9iamVjdCAqbSwgKmQsICp2OwogCi0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIElmIHRoZSBtb2R1bGUgaXMgYmVpbmcgcmVsb2FkZWQsIHdlIGdldCB0aGUgb2xkIG1vZHVsZSBiYWNrCkBAIC03ODIsNDMgKzcyMywzMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEJ1aWx0aW5zKCkpICE9IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICAvKiBSZW1lbWJlciB0aGUgZmlsZW5hbWUgYXMgdGhlIF9fZmlsZV9fIGF0dHJpYnV0ZSAqLwotICAgIHYgPSBOVUxMOwogICAgIGlmIChwYXRobmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgIHYgPSBnZXRfc291cmNlZmlsZShwYXRobmFtZSk7Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB2ID0gcGF0aG5hbWU7CiAgICAgfQotICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICBlbHNlIHsKICAgICAgICAgdiA9ICgoUHlDb2RlT2JqZWN0ICopY28pLT5jb19maWxlbmFtZTsKLSAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgIH0KKyAgICBQeV9JTkNSRUYodik7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2ZpbGVfXyIsIHYpICE9IDApCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydCAqLwogICAgIFB5X0RFQ1JFRih2KTsKIAogICAgIC8qIFJlbWVtYmVyIHRoZSBweWMgcGF0aCBuYW1lIGFzIHRoZSBfX2NhY2hlZF9fIGF0dHJpYnV0ZS4gKi8KLSAgICBpZiAoY3BhdGhuYW1lID09IE5VTEwpIHsKKyAgICBpZiAoY3BhdGhuYW1lICE9IE5VTEwpCisgICAgICAgIHYgPSBjcGF0aG5hbWU7CisgICAgZWxzZQogICAgICAgICB2ID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKHYpOwotICAgIH0KLSAgICBlbHNlIGlmICgodiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNwYXRobmFtZSkpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0ICovCi0gICAgICAgIHYgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYodik7Ci0gICAgfQogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19jYWNoZWRfXyIsIHYpICE9IDApCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydCAqLwotICAgIFB5X0RFQ1JFRih2KTsKIAogICAgIHYgPSBQeUV2YWxfRXZhbENvZGUoY28sIGQsIGQpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlfREVDUkVGKHYpOwogCi0gICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpID09IE5VTEwpIHsKKyAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbShtb2R1bGVzLCBuYW1lKSkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiTG9hZGVkIG1vZHVsZSAlLjIwMHMgbm90IGZvdW5kIGluIHN5cy5tb2R1bGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICJMb2FkZWQgbW9kdWxlICVSIG5vdCBmb3VuZCBpbiBzeXMubW9kdWxlcyIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtODMzLDQxNSArNzY0LDYgQEAKIH0KIAogCi0vKiBMaWtlIHN0cnJjaHIoc3RyaW5nLCAnLycpIGJ1dCBzZWFyY2hlcyBmb3IgdGhlIHJpZ2h0bW9zdCBvZiBlaXRoZXIgU0VQCi0gICBvciBBTFRTRVAsIGlmIHRoZSBsYXR0ZXIgaXMgZGVmaW5lZC4KLSovCi1zdGF0aWMgY2hhciAqCi1yaWdodG1vc3Rfc2VwKGNoYXIgKnMpCi17Ci0gICAgY2hhciAqZm91bmQsIGM7Ci0gICAgZm9yIChmb3VuZCA9IE5VTEw7IChjID0gKnMpOyBzKyspIHsKLSAgICAgICAgaWYgKGMgPT0gU0VQCi0jaWZkZWYgQUxUU0VQCi0gICAgICAgICAgICB8fCBjID09IEFMVFNFUAotI2VuZGlmCi0gICAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvdW5kID0gczsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZm91bmQ7Ci19Ci0KLQotLyogR2l2ZW4gYSBwYXRobmFtZSBmb3IgYSBQeXRob24gc291cmNlIGZpbGUsIGZpbGwgYSBidWZmZXIgd2l0aCB0aGUKLSAgIHBhdGhuYW1lIGZvciB0aGUgY29ycmVzcG9uZGluZyBjb21waWxlZCBmaWxlLiAgUmV0dXJuIHRoZSBwYXRobmFtZQotICAgZm9yIHRoZSBjb21waWxlZCBmaWxlLCBvciBOVUxMIGlmIHRoZXJlJ3Mgbm8gc3BhY2UgaW4gdGhlIGJ1ZmZlci4KLSAgIERvZXNuJ3Qgc2V0IGFuIGV4Y2VwdGlvbi4gKi8KLQotc3RhdGljIGNoYXIgKgotbWFrZV9jb21waWxlZF9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuLCBpbnQgZGVidWcpCi17Ci0gICAgLyogZm9vLnB5IC0+IF9fcHljYWNoZV9fL2Zvby48dGFnPi5weWMgKi8KLSAgICBzaXplX3QgbGVuID0gc3RybGVuKHBhdGhuYW1lKTsKLSAgICBzaXplX3QgaSwgc2F2ZTsKLSAgICBjaGFyICpwb3M7Ci0gICAgaW50IHNlcCA9IFNFUDsKLQotICAgIC8qIFNhbml0eSBjaGVjayB0aGF0IHRoZSBidWZmZXIgaGFzIHJvdWdobHkgZW5vdWdoIHNwYWNlIHRvIGhvbGQgd2hhdAotICAgICAgIHdpbGwgZXZlbnR1YWxseSBiZSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBjb21waWxlZCBmaWxlLiAgVGhlIDUgZXh0cmEKLSAgICAgICBieXRlcyBpbmNsdWRlIHRoZSBzbGFzaCBhZmVyIF9fcHljYWNoZV9fLCB0aGUgdHdvIGV4dHJhIGRvdHMsIHRoZQotICAgICAgIGV4dHJhIHRyYWlsaW5nIGNoYXJhY3RlciAoJ2MnIG9yICdvJykgYW5kIG51bGwuICBUaGlzIGlzbid0IGV4YWN0Ci0gICAgICAgYmVjYXVzZSB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBjYW4gYWZmZWN0IGhvdyBtYW55IGFjdHVhbAotICAgICAgIGNoYXJhY3RlcnMgb2YgdGhlIHN0cmluZyBnZXQgaW50byB0aGUgYnVmZmVyLiAgV2UnbGwgZG8gYSBmaW5hbAotICAgICAgIHNhbml0eSBjaGVjayBiZWZvcmUgd3JpdGluZyB0aGUgZXh0ZW5zaW9uIHRvIGVuc3VyZSB3ZSBkbyBub3QKLSAgICAgICBvdmVyZmxvdyB0aGUgYnVmZmVyLgotICAgICovCi0gICAgaWYgKGxlbiArIHN0cmxlbihDQUNIRURJUikgKyBzdHJsZW4ocHljX3RhZykgKyA1ID4gYnVmbGVuKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIEZpbmQgdGhlIGxhc3QgcGF0aCBzZXBhcmF0b3IgYW5kIGNvcHkgZXZlcnl0aGluZyBmcm9tIHRoZSBzdGFydCBvZgotICAgICAgIHRoZSBzb3VyY2Ugc3RyaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIHNlcGFyYXRvci4KLSAgICAqLwotICAgIGlmICgocG9zID0gcmlnaHRtb3N0X3NlcChwYXRobmFtZSkpID09IE5VTEwpIHsKLSAgICAgICAgaSA9IDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzZXAgPSAqcG9zOwotICAgICAgICBpID0gcG9zIC0gcGF0aG5hbWUgKyAxOwotICAgICAgICBzdHJuY3B5KGJ1ZiwgcGF0aG5hbWUsIGkpOwotICAgIH0KLQotICAgIHNhdmUgPSBpOwotICAgIGJ1ZltpKytdID0gJ1wwJzsKLSAgICAvKiBBZGQgX19weWNhY2hlX18vICovCi0gICAgc3RyY2F0KGJ1ZiwgQ0FDSEVESVIpOwotICAgIGkgKz0gc3RybGVuKENBQ0hFRElSKSAtIDE7Ci0gICAgYnVmW2krK10gPSBzZXA7Ci0gICAgYnVmW2krK10gPSAnXDAnOwotICAgIC8qIEFkZCB0aGUgYmFzZSBmaWxlbmFtZSwgYnV0IHJlbW92ZSB0aGUgLnB5IG9yIC5weXcgZXh0ZW5zaW9uLCBzaW5jZQotICAgICAgIHRoZSB0YWcgbmFtZSBtdXN0IGdvIGJlZm9yZSB0aGUgZXh0ZW5zaW9uLgotICAgICovCi0gICAgc3RyY2F0KGJ1ZiwgcGF0aG5hbWUgKyBzYXZlKTsKLSAgICBpZiAoKHBvcyA9IHN0cnJjaHIoYnVmLCAnLicpKSAhPSBOVUxMKQotICAgICAgICAqKytwb3MgPSAnXDAnOwotICAgIHN0cmNhdChidWYsIHB5Y190YWcpOwotICAgIC8qIFRoZSBsZW5ndGggdGVzdCBhYm92ZSBhc3N1bWVzIHRoYXQgd2UncmUgb25seSBhZGRpbmcgb25lIGNoYXJhY3RlcgotICAgICAgIHRvIHRoZSBlbmQgb2Ygd2hhdCB3b3VsZCBub3JtYWxseSBiZSB0aGUgZXh0ZW5zaW9uLiAgV2hhdCBpZiB0aGVyZQotICAgICAgIGlzIG5vIGV4dGVuc2lvbiwgb3IgdGhlIHN0cmluZyBlbmRzIGluICcuJyBvciAnLnAnLCBhbmQgb3RoZXJ3aXNlCi0gICAgICAgZmlsbHMgdGhlIGJ1ZmZlcj8gIEJ5IGFwcGVuZGluZyA0IG1vcmUgY2hhcmFjdGVycyBvbnRvIHRoZSBzdHJpbmcKLSAgICAgICBoZXJlLCB3ZSBjb3VsZCBvdmVycnVuIHRoZSBidWZmZXIuCi0KLSAgICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCBsZXQncyBzYXkgYnVmbGVuPTMyIGFuZCB0aGUgaW5wdXQgc3RyaW5nIGlzCi0gICAgICAgJ3h4eC5weScuICBzdHJsZW4oKSB3b3VsZCBiZSA2IGFuZCB0aGUgdGVzdCBhYm92ZSB3b3VsZCB5aWVsZDoKLQotICAgICAgICg2ICsgMTEgKyAxMCArIDUgPT0gMzIpID4gMzIKLQotICAgICAgIHdoaWNoIGlzIGZhbHNlIGFuZCBzbyB0aGUgbmFtZSBtYW5nbGluZyB3b3VsZCBjb250aW51ZS4gIFRoaXMgd291bGQKLSAgICAgICBiZSBmaW5lIGJlY2F1c2Ugd2UnZCBlbmQgdXAgd2l0aCB0aGlzIHN0cmluZyBpbiBidWY6Ci0KLSAgICAgICBfX3B5Y2FjaGVfXy94eHguY3B5dGhvbi0zMi5weWNcMAotCi0gICAgICAgc3RybGVuKG9mIHRoYXQpID09IDMwICsgdGhlIG51bCBmaXRzIGluc2lkZSBhIDMyIGNoYXJhY3RlciBidWZmZXIuCi0gICAgICAgV2UgY2FuIGV2ZW4gaGFuZGxlIGFuIGlucHV0IHN0cmluZyBvZiBzYXkgJ3h4eHh4JyBhYm92ZSBiZWNhdXNlCi0gICAgICAgdGhhdCdzICg1ICsgMTEgKyAxMCArIDUgPT0gMzEpID4gMzIgd2hpY2ggaXMgYWxzbyBmYWxzZS4gIE5hbWUKLSAgICAgICBtYW5nbGluZyB0aGF0IHlpZWxkczoKLQotICAgICAgIF9fcHljYWNoZV9fL3h4eHh4Y3B5dGhvbi0zMi5weWNcMAotCi0gICAgICAgd2hpY2ggaXMgMzIgY2hhcmFjdGVycyBpbmNsdWRpbmcgdGhlIG51bCwgYW5kIHRodXMgZml0cyBpbiB0aGUKLSAgICAgICBidWZmZXIuIEhvd2V2ZXIsIGFuIGlucHV0IHN0cmluZyBvZiAneHh4eHh4JyB3b3VsZCB5aWVsZCBhIHJlc3VsdAotICAgICAgIHN0cmluZyBvZjoKLQotICAgICAgIF9fcHljYWNoZV9fL3h4eHh4eGNweXRob24tMzIucHljXDAKLQotICAgICAgIHdoaWNoIGlzIDMzIGNoYXJhY3RlcnMgbG9uZyAoaW5jbHVkaW5nIHRoZSBudWwpLCB0aHVzIG92ZXJmbG93aW5nCi0gICAgICAgdGhlIGJ1ZmZlciwgZXZlbiB0aG91Z2ggdGhlIGZpcnN0IHRlc3Qgd291bGQgZmFpbCwgaS5lLjogdGhlIGlucHV0Ci0gICAgICAgc3RyaW5nIGlzIGFsc28gNiBjaGFyYWN0ZXJzIGxvbmcsIHNvIDMyID4gMzIgaXMgZmFsc2UuCi0KLSAgICAgICBUaGUgcmVhc29uIHRoZSBmaXJzdCB0ZXN0IGZhaWxzIGJ1dCB3ZSBzdGlsbCBvdmVyZmxvdyB0aGUgYnVmZmVyIGlzCi0gICAgICAgdGhhdCB0aGUgdGVzdCBhYm92ZSBvbmx5IGV4cGVjdHMgdG8gYWRkIG9uZSBleHRyYSBjaGFyYWN0ZXIgdG8gYmUKLSAgICAgICBhZGRlZCB0byB0aGUgZXh0ZW5zaW9uLCBhbmQgaGVyZSB3ZSdyZSBhZGRpbmcgdGhyZWUgKHB5YykuICBXZQotICAgICAgIGRvbid0IGFkZCB0aGUgZmlyc3QgZG90LCBzbyB0aGF0IHJlY2xhaW1zIG9uZSBvZiBleHBlY3RlZAotICAgICAgIHBvc2l0aW9ucywgbGVhdmluZyB1cyBvdmVyZmxvd2luZyBieSAxIGJ5dGUgKDMgZXh0cmEgLSAxIHJlY2xhaW1lZAotICAgICAgIGRvdCAtIDEgZXhwZWN0ZWQgZXh0cmEgPT0gMSBvdmVyZmxvd2VkKS4KLQotICAgICAgIFRoZSBiZXN0IHdlIGNhbiBkbyBpcyBlbnN1cmUgdGhhdCB3ZSBzdGlsbCBoYXZlIGVub3VnaCByb29tIGluIHRoZQotICAgICAgIHRhcmdldCBidWZmZXIgYmVmb3JlIHdlIHdyaXRlIHRoZSBleHRlbnNpb24uICBCZWNhdXNlIGl0J3MgYWx3YXlzCi0gICAgICAgb25seSB0aGUgZXh0ZW5zaW9uIHRoYXQgY2FuIGNhdXNlIHRoZSBvdmVyZmxvdywgYW5kIG5ldmVyIHRoZSBvdGhlcgotICAgICAgIHBhdGggYnl0ZXMgd2UndmUgd3JpdHRlbiwgaXQncyBzdWZmaWNpZW50IHRvIGp1c3QgZG8gb25lIG1vcmUgdGVzdAotICAgICAgIGhlcmUuICBTdGlsbCwgdGhlIGFzc2VydGlvbiB0aGF0IGZvbGxvd3MgY2FuJ3QgaHVydC4KLSAgICAqLwotI2lmIDAKLSAgICBwcmludGYoInN0cmxlbihidWYpOiAlZDsgYnVmbGVuOiAlZFxuIiwgKGludClzdHJsZW4oYnVmKSwgKGludClidWZsZW4pOwotI2VuZGlmCi0gICAgaWYgKHN0cmxlbihidWYpICsgNSA+IGJ1ZmxlbikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyY2F0KGJ1ZiwgZGVidWcgPyAiLnB5YyIgOiAiLnB5byIpOwotICAgIGFzc2VydChzdHJsZW4oYnVmKSA8IGJ1Zmxlbik7Ci0gICAgcmV0dXJuIGJ1ZjsKLX0KLQotCi0vKiBHaXZlbiBhIHBhdGhuYW1lIHRvIGEgUHl0aG9uIGJ5dGUgY29tcGlsZWQgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIHRoZQotICAgc291cmNlIGZpbGUsIGlmIHRoZSBwYXRoIG1hdGNoZXMgdGhlIFBFUCAzMTQ3IGZvcm1hdC4gIFRoaXMgZG9lcyBub3QgY2hlY2sKLSAgIGZvciBhbnkgZmlsZSBleGlzdGVuY2UsIGhvd2V2ZXIsIGlmIHRoZSBweWMgZmlsZSBuYW1lIGRvZXMgbm90IG1hdGNoIFBFUAotICAgMzE0NyBzdHlsZSwgTlVMTCBpcyByZXR1cm5lZC4gIGJ1ZiBtdXN0IGJlIGF0IGxlYXN0IGFzIGJpZyBhcyBwYXRobmFtZTsKLSAgIHRoZSByZXN1bHRpbmcgcGF0aCB3aWxsIGFsd2F5cyBiZSBzaG9ydGVyLiAqLwotCi1zdGF0aWMgY2hhciAqCi1tYWtlX3NvdXJjZV9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmKQotewotICAgIC8qIF9fcHljYWNoZV9fL2Zvby48dGFnPi5weWMgLT4gZm9vLnB5ICovCi0gICAgc2l6ZV90IGksIGo7Ci0gICAgY2hhciAqbGVmdCwgKnJpZ2h0LCAqZG90MCwgKmRvdDEsIHNlcDsKLQotICAgIC8qIExvb2sgYmFjayB0d28gc2xhc2hlcyBmcm9tIHRoZSBlbmQuICBJbiBiZXR3ZWVuIHRoZXNlIHR3byBzbGFzaGVzCi0gICAgICAgbXVzdCBiZSB0aGUgc3RyaW5nIF9fcHljYWNoZV9fIG9yIHRoaXMgaXMgbm90IGEgUEVQIDMxNDcgc3R5bGUKLSAgICAgICBwYXRoLiAgSXQncyBwb3NzaWJsZSBmb3IgdGhlcmUgdG8gYmUgb25seSBvbmUgc2xhc2guCi0gICAgKi8KLSAgICBpZiAoKHJpZ2h0ID0gcmlnaHRtb3N0X3NlcChwYXRobmFtZSkpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlcCA9ICpyaWdodDsKLSAgICAqcmlnaHQgPSAnXDAnOwotICAgIGxlZnQgPSByaWdodG1vc3Rfc2VwKHBhdGhuYW1lKTsKLSAgICAqcmlnaHQgPSBzZXA7Ci0gICAgaWYgKGxlZnQgPT0gTlVMTCkKLSAgICAgICAgbGVmdCA9IHBhdGhuYW1lOwotICAgIGVsc2UKLSAgICAgICAgbGVmdCsrOwotICAgIGlmIChyaWdodC1sZWZ0ICE9IHN0cmxlbihDQUNIRURJUikgfHwKLSAgICAgICAgc3RybmNtcChsZWZ0LCBDQUNIRURJUiwgcmlnaHQtbGVmdCkgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBOb3cgdmVyaWZ5IHRoYXQgdGhlIHBhdGggY29tcG9uZW50IHRvIHRoZSByaWdodCBvZiB0aGUgbGFzdCBzbGFzaAotICAgICAgIGhhcyB0d28gZG90cyBpbiBpdC4KLSAgICAqLwotICAgIGlmICgoZG90MCA9IHN0cmNocihyaWdodCArIDEsICcuJykpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICgoZG90MSA9IHN0cmNocihkb3QwICsgMSwgJy4nKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgLyogVG9vIG1hbnkgZG90cz8gKi8KLSAgICBpZiAoc3RyY2hyKGRvdDEgKyAxLCAnLicpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogVGhpcyBpcyBhIFBFUCAzMTQ3IHBhdGguICBTdGFydCBieSBjb3B5aW5nIGV2ZXJ5dGhpbmcgZnJvbSB0aGUKLSAgICAgICBzdGFydCBvZiBwYXRobmFtZSB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBsZWZ0bW9zdCBzbGFzaC4gIFRoZW4KLSAgICAgICBjb3B5IHRoZSBmaWxlJ3MgYmFzZW5hbWUsIHJlbW92aW5nIHRoZSBtYWdpYyB0YWcgYW5kIGFkZGluZyBhIC5weQotICAgICAgIHN1ZmZpeC4KLSAgICAqLwotICAgIHN0cm5jcHkoYnVmLCBwYXRobmFtZSwgKGk9bGVmdC1wYXRobmFtZSkpOwotICAgIHN0cm5jcHkoYnVmK2ksIHJpZ2h0KzEsIChqPWRvdDAtcmlnaHQpKTsKLSAgICBzdHJjcHkoYnVmK2kraiwgInB5Iik7Ci0gICAgcmV0dXJuIGJ1ZjsKLX0KLQotLyogR2l2ZW4gYSBwYXRobmFtZSBmb3IgYSBQeXRob24gc291cmNlIGZpbGUsIGl0cyB0aW1lIG9mIGxhc3QKLSAgIG1vZGlmaWNhdGlvbiwgYW5kIGEgcGF0aG5hbWUgZm9yIGEgY29tcGlsZWQgZmlsZSwgY2hlY2sgd2hldGhlciB0aGUKLSAgIGNvbXBpbGVkIGZpbGUgcmVwcmVzZW50cyB0aGUgc2FtZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UuICBJZiBzbywKLSAgIHJldHVybiBhIEZJTEUgcG9pbnRlciBmb3IgdGhlIGNvbXBpbGVkIGZpbGUsIHBvc2l0aW9uZWQganVzdCBhZnRlcgotICAgdGhlIGhlYWRlcjsgaWYgbm90LCByZXR1cm4gTlVMTC4KLSAgIERvZXNuJ3Qgc2V0IGFuIGV4Y2VwdGlvbi4gKi8KLQotc3RhdGljIEZJTEUgKgotY2hlY2tfY29tcGlsZWRfbW9kdWxlKGNoYXIgKnBhdGhuYW1lLCB0aW1lX3QgbXRpbWUsIGNoYXIgKmNwYXRobmFtZSkKLXsKLSAgICBGSUxFICpmcDsKLSAgICBsb25nIG1hZ2ljOwotICAgIGxvbmcgcHljX210aW1lOwotCi0gICAgZnAgPSBmb3BlbihjcGF0aG5hbWUsICJyYiIpOwotICAgIGlmIChmcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtYWdpYyA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBpZiAobWFnaWMgIT0gcHljX21hZ2ljKSB7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbWFnaWNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBweWNfbXRpbWUgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgaWYgKHB5Y19tdGltZSAhPSBtdGltZSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG10aW1lXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBtYXRjaGVzICVzXG4iLCBjcGF0aG5hbWUsIHBhdGhuYW1lKTsKLSAgICByZXR1cm4gZnA7Ci19Ci0KLQotLyogUmVhZCBhIGNvZGUgb2JqZWN0IGZyb20gYSBmaWxlIGFuZCBjaGVjayBpdCBmb3IgdmFsaWRpdHkgKi8KLQotc3RhdGljIFB5Q29kZU9iamVjdCAqCi1yZWFkX2NvbXBpbGVkX21vZHVsZShjaGFyICpjcGF0aG5hbWUsIEZJTEUgKmZwKQotewotICAgIFB5T2JqZWN0ICpjbzsKLQotICAgIGNvID0gUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUoZnApOwotICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vbi1jb2RlIG9iamVjdCBpbiAlLjIwMHMiLCBjcGF0aG5hbWUpOwotICAgICAgICBQeV9ERUNSRUYoY28pOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIChQeUNvZGVPYmplY3QgKiljbzsKLX0KLQotCi0vKiBMb2FkIGEgbW9kdWxlIGZyb20gYSBjb21waWxlZCBmaWxlLCBleGVjdXRlIGl0LCBhbmQgcmV0dXJuIGl0cwotICAgbW9kdWxlIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVCAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9jb21waWxlZF9tb2R1bGUoY2hhciAqbmFtZSwgY2hhciAqY3BhdGhuYW1lLCBGSUxFICpmcCkKLXsKLSAgICBsb25nIG1hZ2ljOwotICAgIFB5Q29kZU9iamVjdCAqY287Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICBtYWdpYyA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBpZiAobWFnaWMgIT0gcHljX21hZ2ljKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJCYWQgbWFnaWMgbnVtYmVyIGluICUuMjAwcyIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGNvID0gcmVhZF9jb21waWxlZF9tb2R1bGUoY3BhdGhuYW1lLCBmcCk7Ci0gICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIHByZWNvbXBpbGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBjcGF0aG5hbWUpOwotICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoCi0gICAgICAgIG5hbWUsIChQeU9iamVjdCAqKWNvLCBjcGF0aG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgUHlfREVDUkVGKGNvKTsKLQotICAgIHJldHVybiBtOwotfQotCi0vKiBQYXJzZSBhIHNvdXJjZSBmaWxlIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBvYmplY3QgKi8KLQotc3RhdGljIFB5Q29kZU9iamVjdCAqCi1wYXJzZV9zb3VyY2VfbW9kdWxlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKLXsKLSAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKLSAgICBtb2RfdHkgbW9kOwotICAgIFB5Q29tcGlsZXJGbGFncyBmbGFnczsKLSAgICBQeUFyZW5hICphcmVuYSA9IFB5QXJlbmFfTmV3KCk7Ci0gICAgaWYgKGFyZW5hID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZmxhZ3MuY2ZfZmxhZ3MgPSAwOwotICAgIG1vZCA9IFB5UGFyc2VyX0FTVEZyb21GaWxlKGZwLCBwYXRobmFtZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0LCAwLCAwLCAmZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYXJlbmEpOwotICAgIGlmIChtb2QpIHsKLSAgICAgICAgY28gPSBQeUFTVF9Db21waWxlKG1vZCwgcGF0aG5hbWUsIE5VTEwsIGFyZW5hKTsKLSAgICB9Ci0gICAgUHlBcmVuYV9GcmVlKGFyZW5hKTsKLSAgICByZXR1cm4gY287Ci19Ci0KLQotLyogSGVscGVyIHRvIG9wZW4gYSBieXRlY29kZSBmaWxlIGZvciB3cml0aW5nIGluIGV4Y2x1c2l2ZSBtb2RlICovCi0KLXN0YXRpYyBGSUxFICoKLW9wZW5fZXhjbHVzaXZlKGNoYXIgKmZpbGVuYW1lLCBtb2RlX3QgbW9kZSkKLXsKLSNpZiBkZWZpbmVkKE9fRVhDTCkmJmRlZmluZWQoT19DUkVBVCkmJmRlZmluZWQoT19XUk9OTFkpJiZkZWZpbmVkKE9fVFJVTkMpCi0gICAgLyogVXNlIE9fRVhDTCB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYW5vdGhlciBwcm9jZXNzIHRyaWVzIHRvCi0gICAgICAgd3JpdGUgdGhlIHNhbWUgZmlsZS4gIFdoZW4gdGhhdCBoYXBwZW5zLCBvdXIgb3BlbigpIGNhbGwgZmFpbHMsCi0gICAgICAgd2hpY2ggaXMganVzdCBmaW5lIChzaW5jZSBpdCdzIG9ubHkgYSBjYWNoZSkuCi0gICAgICAgWFhYIElmIHRoZSBmaWxlIGV4aXN0cyBhbmQgaXMgd3JpdGFibGUgYnV0IHRoZSBkaXJlY3RvcnkgaXMgbm90Ci0gICAgICAgd3JpdGFibGUsIHRoZSBmaWxlIHdpbGwgbmV2ZXIgYmUgd3JpdHRlbi4gIE9oIHdlbGwuCi0gICAgKi8KLSAgICBpbnQgZmQ7Ci0gICAgKHZvaWQpIHVubGluayhmaWxlbmFtZSk7Ci0gICAgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX0VYQ0x8T19DUkVBVHxPX1dST05MWXxPX1RSVU5DCi0jaWZkZWYgT19CSU5BUlkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8T19CSU5BUlkgICAvKiBuZWNlc3NhcnkgZm9yIFdpbmRvd3MgKi8KLSNlbmRpZgotI2lmZGVmIF9fVk1TCi0gICAgICAgICAgICAsIG1vZGUsICJjdHh0PWJpbiIsICJzaHI9bmlsIgotI2Vsc2UKLSAgICAgICAgICAgICwgbW9kZQotI2VuZGlmCi0gICAgICAgICAgKTsKLSAgICBpZiAoZmQgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZmRvcGVuKGZkLCAid2IiKTsKLSNlbHNlCi0gICAgLyogQmVzdCB3ZSBjYW4gZG8gLS0gb24gV2luZG93cyB0aGlzIGNhbid0IGhhcHBlbiBhbnl3YXkgKi8KLSAgICByZXR1cm4gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOwotI2VuZGlmCi19Ci0KLQotLyogV3JpdGUgYSBjb21waWxlZCBtb2R1bGUgdG8gYSBmaWxlLCBwbGFjaW5nIHRoZSB0aW1lIG9mIGxhc3QKLSAgIG1vZGlmaWNhdGlvbiBvZiBpdHMgc291cmNlIGludG8gdGhlIGhlYWRlci4KLSAgIEVycm9ycyBhcmUgaWdub3JlZCwgaWYgYSB3cml0ZSBlcnJvciBvY2N1cnMgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvCi0gICByZW1vdmUgdGhlIGZpbGUuICovCi0KLXN0YXRpYyB2b2lkCi13cml0ZV9jb21waWxlZF9tb2R1bGUoUHlDb2RlT2JqZWN0ICpjbywgY2hhciAqY3BhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3Jjc3RhdCkKLXsKLSAgICBGSUxFICpmcDsKLSAgICBjaGFyICpkaXJwYXRoOwotICAgIHRpbWVfdCBtdGltZSA9IHNyY3N0YXQtPnN0X210aW1lOwotICAgIGludCBzYXZlZDsKLSNpZmRlZiBNU19XSU5ET1dTICAgLyogc2luY2UgV2luZG93cyB1c2VzIGRpZmZlcmVudCBwZXJtaXNzaW9ucyAgKi8KLSAgICBtb2RlX3QgbW9kZSA9IHNyY3N0YXQtPnN0X21vZGUgJiB+U19JRVhFQzsKLSAgICAvKiBJc3N1ZSAjNjA3NDogV2UgZW5zdXJlIHVzZXIgd3JpdGUgYWNjZXNzLCBzbyB3ZSBjYW4gZGVsZXRlIGl0IGxhdGVyCi0gICAgICogd2hlbiB0aGUgc291cmNlIGZpbGUgY2hhbmdlcy4gKE9uIFBPU0lYLCB0aGlzIG9ubHkgcmVxdWlyZXMgd3JpdGUKLSAgICAgKiBhY2Nlc3MgdG8gdGhlIGRpcmVjdG9yeSwgb24gV2luZG93cywgd2UgbmVlZCB3cml0ZSBhY2Nlc3MgdG8gdGhlIGZpbGUKLSAgICAgKiBhcyB3ZWxsKQotICAgICAqLwotICAgIG1vZGUgfD0gX1NfSVdSSVRFOwotI2Vsc2UKLSAgICBtb2RlX3QgbW9kZSA9IHNyY3N0YXQtPnN0X21vZGUgJiB+U19JWFVTUiAmIH5TX0lYR1JQICYgflNfSVhPVEg7Ci0gICAgbW9kZV90IGRpcm1vZGUgPSAoc3Jjc3RhdC0+c3RfbW9kZSB8Ci0gICAgICAgICAgICAgICAgICAgICAgU19JWFVTUiB8IFNfSVhHUlAgfCBTX0lYT1RIIHwKLSAgICAgICAgICAgICAgICAgICAgICBTX0lXVVNSIHwgU19JV0dSUCB8IFNfSVdPVEgpOwotI2VuZGlmCi0KLSAgICAvKiBFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGV4aXN0cy4gKi8KLSAgICBkaXJwYXRoID0gcmlnaHRtb3N0X3NlcChjcGF0aG5hbWUpOwotICAgIGlmIChkaXJwYXRoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgbm8gJXMgcGF0aCBmb3VuZCAlc1xuIiwKLSAgICAgICAgICAgICAgICBDQUNIRURJUiwgY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzYXZlZCA9ICpkaXJwYXRoOwotICAgICpkaXJwYXRoID0gJ1wwJzsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoX21rZGlyKGNwYXRobmFtZSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkgewotI2Vsc2UKLSAgICBpZiAobWtkaXIoY3BhdGhuYW1lLCBkaXJtb2RlKSA8IDAgJiYgZXJybm8gIT0gRUVYSVNUKSB7Ci0jZW5kaWYKLSAgICAgICAgKmRpcnBhdGggPSBzYXZlZDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgY2Fubm90IGNyZWF0ZSBjYWNoZSBkaXIgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKmRpcnBhdGggPSBzYXZlZDsKLQotICAgIGZwID0gb3Blbl9leGNsdXNpdmUoY3BhdGhuYW1lLCBtb2RlKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKLSAgICAgICAgICAgICAgICAiIyBjYW4ndCBjcmVhdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZShweWNfbWFnaWMsIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIC8qIEZpcnN0IHdyaXRlIGEgMCBmb3IgbXRpbWUgKi8KLSAgICBQeU1hcnNoYWxfV3JpdGVMb25nVG9GaWxlKDBMLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGUoKFB5T2JqZWN0ICopY28sIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIGlmIChmZmx1c2goZnApICE9IDAgfHwgZmVycm9yKGZwKSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjYW4ndCB3cml0ZSAlc1xuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgLyogRG9uJ3Qga2VlcCBwYXJ0aWFsIGZpbGUgKi8KLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgKHZvaWQpIHVubGluayhjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIE5vdyB3cml0ZSB0aGUgdHJ1ZSBtdGltZSAoYXMgYSAzMi1iaXQgZmllbGQpICovCi0gICAgZnNlZWsoZnAsIDRMLCAwKTsKLSAgICBhc3NlcnQobXRpbWUgPD0gMHhGRkZGRkZGRik7Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSgobG9uZyltdGltZSwgZnAsIFB5X01BUlNIQUxfVkVSU0lPTik7Ci0gICAgZmZsdXNoKGZwKTsKLSAgICBmY2xvc2UoZnApOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgd3JvdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci19Ci0KIHN0YXRpYyB2b2lkCiB1cGRhdGVfY29kZV9maWxlbmFtZXMoUHlDb2RlT2JqZWN0ICpjbywgUHlPYmplY3QgKm9sZG5hbWUsIFB5T2JqZWN0ICpuZXduYW1lKQogewpAQCAtMTI2NiwyMjcgKzc4OCw2MCBAQAogICAgIH0KIH0KIAotc3RhdGljIGludAotdXBkYXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSkKK3N0YXRpYyB2b2lkCit1cGRhdGVfY29tcGlsZWRfbW9kdWxlKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpuZXduYW1lKQogewotICAgIFB5T2JqZWN0ICpvbGRuYW1lLCAqbmV3bmFtZTsKKyAgICBQeU9iamVjdCAqb2xkbmFtZTsKIAotICAgIG5ld25hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHBhdGhuYW1lKTsKLSAgICBpZiAobmV3bmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkgPT0gMCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgb2xkbmFtZSA9IGNvLT5jb19maWxlbmFtZTsKICAgICBQeV9JTkNSRUYob2xkbmFtZSk7CiAgICAgdXBkYXRlX2NvZGVfZmlsZW5hbWVzKGNvLCBvbGRuYW1lLCBuZXduYW1lKTsKICAgICBQeV9ERUNSRUYob2xkbmFtZSk7Ci0gICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgIHJldHVybiAxOwogfQogCi0vKiBMb2FkIGEgc291cmNlIG1vZHVsZSBmcm9tIGEgZ2l2ZW4gZmlsZSBhbmQgcmV0dXJuIGl0cyBtb2R1bGUKLSAgIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVC4gIElmIHRoZXJlJ3MgYSBtYXRjaGluZwotICAgYnl0ZS1jb21waWxlZCBmaWxlLCB1c2UgdGhhdCBpbnN0ZWFkLiAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgotbG9hZF9zb3VyY2VfbW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2ltcF9maXhfY29fZmlsZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIEZJTEUgKmZwYzsKLSAgICBjaGFyICpidWY7Ci0gICAgY2hhciAqY3BhdGhuYW1lOwotICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOworICAgIFB5T2JqZWN0ICpjbzsKKyAgICBQeU9iamVjdCAqZmlsZV9wYXRoOwogCi0gICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdCkgIT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgZmlsZSBzdGF0dXMgZnJvbSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POl9maXhfY29fZmlsZW5hbWUiLCAmY28sICZmaWxlX3BhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb2RlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpemVvZiBzdC5zdF9tdGltZSA+IDQpIHsKLSAgICAgICAgLyogUHl0aG9uJ3MgLnB5YyB0aW1lc3RhbXAgaGFuZGxpbmcgcHJlc3VtZXMgdGhhdCB0aGUgdGltZXN0YW1wIGZpdHMKLSAgICAgICAgICAgaW4gNCBieXRlcy4gU2luY2UgdGhlIGNvZGUgb25seSBkb2VzIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24sCi0gICAgICAgICAgIG9yZGVyaW5nIGlzIG5vdCBpbXBvcnRhbnQgYW5kIHdlIGNhbiBzYWZlbHkgaWdub3JlIHRoZSBoaWdoZXIgYml0cwotICAgICAgICAgICAoY29sbGlzaW9ucyBhcmUgZXh0cmVtZWx5IHVubGlrZWx5KS4KLSAgICAgICAgICovCi0gICAgICAgIHN0LnN0X210aW1lICY9IDB4RkZGRkZGRkY7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgcGF0aG5hbWUsIGJ1ZiwgKHNpemVfdClNQVhQQVRITEVOICsgMSwgIVB5X09wdGltaXplRmxhZyk7Ci0gICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMICYmCi0gICAgICAgIChmcGMgPSBjaGVja19jb21waWxlZF9tb2R1bGUocGF0aG5hbWUsIHN0LnN0X210aW1lLCBjcGF0aG5hbWUpKSkgewotICAgICAgICBjbyA9IHJlYWRfY29tcGlsZWRfbW9kdWxlKGNwYXRobmFtZSwgZnBjKTsKLSAgICAgICAgZmNsb3NlKGZwYyk7Ci0gICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICBpZiAodXBkYXRlX2NvbXBpbGVkX21vZHVsZShjbywgcGF0aG5hbWUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIHByZWNvbXBpbGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICAgICAgbmFtZSwgY3BhdGhuYW1lKTsKLSAgICAgICAgcGF0aG5hbWUgPSBjcGF0aG5hbWU7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBjbyA9IHBhcnNlX3NvdXJjZV9tb2R1bGUocGF0aG5hbWUsIGZwKTsKLSAgICAgICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBmcm9tICVzXG4iLAotICAgICAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICAgICAgaWYgKGNwYXRobmFtZSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnJvID0gUHlTeXNfR2V0T2JqZWN0KCJkb250X3dyaXRlX2J5dGVjb2RlIik7Ci0gICAgICAgICAgICBpbnQgYiA9IChybyA9PSBOVUxMKSA/IDAgOiBQeU9iamVjdF9Jc1RydWUocm8pOwotICAgICAgICAgICAgaWYgKGIgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIGlmICghYikKLSAgICAgICAgICAgICAgICB3cml0ZV9jb21waWxlZF9tb2R1bGUoY28sIGNwYXRobmFtZSwgJnN0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKAotICAgICAgICBuYW1lLCAoUHlPYmplY3QgKiljbywgcGF0aG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgUHlfREVDUkVGKGNvKTsKIAotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlX3BhdGgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi1lcnJvcl9leGl0OgotICAgIFB5X1hERUNSRUYoY28pOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICB1cGRhdGVfY29tcGlsZWRfbW9kdWxlKChQeUNvZGVPYmplY3QqKWNvLCBmaWxlX3BhdGgpOworCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLS8qIEdldCBzb3VyY2UgZmlsZSAtPiB1bmljb2RlIG9yIE5vbmUKLSAqIFJldHVybnMgdGhlIHBhdGggdG8gdGhlIHB5IGZpbGUgaWYgYXZhaWxhYmxlLCBlbHNlIHRoZSBnaXZlbiBwYXRoCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1nZXRfc291cmNlZmlsZShjaGFyICpmaWxlKQotewotICAgIGNoYXIgKnB5ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqdTsKLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCi0gICAgaWYgKCFmaWxlIHx8ICEqZmlsZSkgewotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICBsZW4gPSBzdHJsZW4oZmlsZSk7Ci0gICAgLyogbWF0Y2ggJyoucHk/JyAqLwotICAgIGlmIChsZW4gPiBNQVhQQVRITEVOIHx8IFB5T1Nfc3RybmljbXAoJmZpbGVbbGVuLTRdLCAiLnB5IiwgMykgIT0gMCkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlKTsKLSAgICB9Ci0KLSAgICBweSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChweSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICAvKiBTdGFydCBieSB0cnlpbmcgdG8gdHVybiBQRVAgMzE0NyBwYXRoIGludG8gc291cmNlIHBhdGguICBJZiB0aGF0Ci0gICAgICogZmFpbHMsIGp1c3QgY2hvcCBvZmYgdGhlIHRyYWlsaW5nIGNoYXJhY3RlciwgaS5lLiBsZWdhY3kgcHljIHBhdGgKLSAgICAgKiB0byBweS4KLSAgICAgKi8KLSAgICBpZiAobWFrZV9zb3VyY2VfcGF0aG5hbWUoZmlsZSwgcHkpID09IE5VTEwpIHsKLSAgICAgICAgc3RybmNweShweSwgZmlsZSwgbGVuLTEpOwotICAgICAgICBweVtsZW4tMV0gPSAnXDAnOwotICAgIH0KLQotICAgIGlmIChzdGF0KHB5LCAmc3RhdGJ1ZikgPT0gMCAmJgotICAgICAgICBTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocHkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZSk7Ci0gICAgfQotICAgIFB5TWVtX0ZSRUUocHkpOwotICAgIHJldHVybiB1OwotfQogCiAvKiBGb3J3YXJkICovCi1zdGF0aWMgUHlPYmplY3QgKmxvYWRfbW9kdWxlKGNoYXIgKiwgRklMRSAqLCBjaGFyICosIGludCwgUHlPYmplY3QgKik7Ci1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqZmluZF9tb2R1bGUoY2hhciAqLCBjaGFyICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIEZJTEUgKiosIFB5T2JqZWN0ICoqKTsKLXN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKGNoYXIgKik7Ci0KLS8qIExvYWQgYSBwYWNrYWdlIGFuZCByZXR1cm4gaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRAotICAgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX3BhY2thZ2UoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm0sICpkOwotICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgaW50IGVycjsKLSAgICBjaGFyICpidWYgPSBOVUxMOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGRpcmVjdG9yeSAlc1xuIiwKLSAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSAgICBmaWxlID0gZ2V0X3NvdXJjZWZpbGUocGF0aG5hbWUpOwotICAgIGlmIChmaWxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZpbGUpOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZmlsZV9fIiwgZmlsZSk7Ci0gICAgaWYgKGVyciA9PSAwKQotICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBwYXRoKTsKLSAgICBpZiAoZXJyICE9IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUobmFtZSwgIl9faW5pdF9fIiwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsICZmcCwgTlVMTCk7Ci0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLSAgICBtID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIGJ1ZiwgZmRwLT50eXBlLCBOVUxMKTsKLSAgICBpZiAoZnAgIT0gTlVMTCkKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICBnb3RvIGNsZWFudXA7Ci0KLSAgZXJyb3I6Ci0gICAgbSA9IE5VTEw7Ci0gIGNsZWFudXA6Ci0gICAgaWYgKGJ1ZikKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgUHlfWERFQ1JFRihmaWxlKTsKLSAgICByZXR1cm4gbTsKLX0KK3N0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKFB5T2JqZWN0ICopOwogCiAKIC8qIEhlbHBlciB0byB0ZXN0IGZvciBidWlsdC1pbiBtb2R1bGUgKi8KIAogc3RhdGljIGludAotaXNfYnVpbHRpbihjaGFyICpuYW1lKQoraXNfYnVpbHRpbihQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBpbnQgaTsKKyAgICBpbnQgaSwgY21wOwogICAgIGZvciAoaSA9IDA7IFB5SW1wb3J0X0luaXR0YWJbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgaWYgKHN0cmNtcChuYW1lLCBQeUltcG9ydF9Jbml0dGFiW2ldLm5hbWUpID09IDApIHsKKyAgICAgICAgY21wID0gUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgUHlJbXBvcnRfSW5pdHRhYltpXS5uYW1lKTsKKyAgICAgICAgaWYgKGNtcCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoUHlJbXBvcnRfSW5pdHRhYltpXS5pbml0ZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGVsc2UKQEAgLTE1NDIsMTUgKzg5Nyw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgIGltcG9ydGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKLSAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeU51bGxJbXBvcnRlcl9UeXBlLCBwLCBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KICAgICBpZiAoaW1wb3J0ZXIgIT0gTlVMTCkgewogICAgICAgICBpbnQgZXJyID0gUHlEaWN0X1NldEl0ZW0ocGF0aF9pbXBvcnRlcl9jYWNoZSwgcCwgaW1wb3J0ZXIpOwpAQCAtMTU3NSw2NjEgKzkyMiwzOCBAQAogICAgIHJldHVybiBpbXBvcnRlcjsKIH0KIAotLyogU2VhcmNoIHRoZSBwYXRoIChkZWZhdWx0IHN5cy5wYXRoKSBmb3IgYSBtb2R1bGUuICBSZXR1cm4gdGhlCi0gICBjb3JyZXNwb25kaW5nIGZpbGVkZXNjciBzdHJ1Y3QsIGFuZCAodmlhIHJldHVybiBhcmd1bWVudHMpIHRoZQotICAgcGF0aG5hbWUgYW5kIGFuIG9wZW4gZmlsZS4gIFJldHVybiBOVUxMIGlmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kLiAqLwogCi0jaWZkZWYgTVNfQ09SRURMTAotZXh0ZXJuIEZJTEUgKlB5V2luX0ZpbmRSZWdpc3RlcmVkTW9kdWxlKGNvbnN0IGNoYXIgKiwgc3RydWN0IGZpbGVkZXNjciAqKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIFB5X3NzaXplX3QpOwotI2VuZGlmCi0KLXN0YXRpYyBpbnQgY2FzZV9vayhjaGFyICosIFB5X3NzaXplX3QsIFB5X3NzaXplX3QsIGNoYXIgKik7Ci1zdGF0aWMgaW50IGZpbmRfaW5pdF9tb2R1bGUoY2hhciAqKTsgLyogRm9yd2FyZCAqLwotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgaW1wb3J0aG9va2Rlc2NyID0geyIiLCAiIiwgSU1QX0hPT0t9OwotCi1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqCi1maW5kX21vZHVsZShjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwgUHlPYmplY3QgKnBhdGgsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgIHNpemVfdCBidWZsZW4sIEZJTEUgKipwX2ZwLCBQeU9iamVjdCAqKnBfbG9hZGVyKQotewotICAgIFB5X3NzaXplX3QgaSwgbnBhdGg7Ci0gICAgc2l6ZV90IGxlbiwgbmFtZWxlbjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHAgPSBOVUxMOwotICAgIGNoYXIgKmZpbGVtb2RlOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aF9ob29rcywgKnBhdGhfaW1wb3J0ZXJfY2FjaGU7Ci0gICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9mcm96ZW4gPSB7IiIsICIiLCBQWV9GUk9aRU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX2J1aWx0aW4gPSB7IiIsICIiLCBDX0JVSUxUSU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX3BhY2thZ2UgPSB7IiIsICIiLCBQS0dfRElSRUNUT1JZfTsKLSAgICBjaGFyICpuYW1lOwotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgc2l6ZV90IHNhdmVkX2xlbjsKLSAgICBzaXplX3Qgc2F2ZWRfbmFtZWxlbjsKLSAgICBjaGFyICpzYXZlZF9idWYgPSBOVUxMOwotI2VuZGlmCi0gICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpCi0gICAgICAgICpwX2xvYWRlciA9IE5VTEw7Ci0KLSAgICBpZiAoc3RybGVuKHN1Ym5hbWUpID4gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbmFtZSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShuYW1lLCBzdWJuYW1lKTsKLQotICAgIC8qIHN5cy5tZXRhX3BhdGggaW1wb3J0IGhvb2sgKi8KLSAgICBpZiAocF9sb2FkZXIgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbWV0YV9wYXRoOwotCi0gICAgICAgIG1ldGFfcGF0aCA9IFB5U3lzX0dldE9iamVjdCgibWV0YV9wYXRoIik7Ci0gICAgICAgIGlmIChtZXRhX3BhdGggPT0gTlVMTCB8fCAhUHlMaXN0X0NoZWNrKG1ldGFfcGF0aCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5tZXRhX3BhdGggbXVzdCBiZSBhIGxpc3Qgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYobWV0YV9wYXRoKTsgIC8qIHphcCBndWFyZCAqLwotICAgICAgICBucGF0aCA9IFB5TGlzdF9TaXplKG1ldGFfcGF0aCk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBucGF0aDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwotICAgICAgICAgICAgUHlPYmplY3QgKmhvb2sgPSBQeUxpc3RfR2V0SXRlbShtZXRhX3BhdGgsIGkpOwotICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChob29rLCAiZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic08iLCBmdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCAhPSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA6IFB5X05vbmUpOwotICAgICAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG1ldGFfcGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OyAgLyogdHJ1ZSBlcnJvciAqLwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgLyogYSBsb2FkZXIgd2FzIGZvdW5kICovCi0gICAgICAgICAgICAgICAgKnBfbG9hZGVyID0gbG9hZGVyOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhX3BhdGgpOwotICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZpbXBvcnRob29rZGVzY3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYobWV0YV9wYXRoKTsKLSAgICB9Ci0KLSAgICBpZiAoZmluZF9mcm96ZW4oZnVsbG5hbWUpICE9IE5VTEwpIHsKLSAgICAgICAgc3RyY3B5KGJ1ZiwgZnVsbG5hbWUpOwotICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICByZXR1cm4gJmZkX2Zyb3plbjsKLSAgICB9Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChpc19idWlsdGluKG5hbWUpKSB7Ci0gICAgICAgICAgICBzdHJjcHkoYnVmLCBuYW1lKTsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gJmZkX2J1aWx0aW47Ci0gICAgICAgIH0KLSNpZmRlZiBNU19DT1JFRExMCi0gICAgICAgIGZwID0gUHlXaW5fRmluZFJlZ2lzdGVyZWRNb2R1bGUobmFtZSwgJmZkcCwgYnVmLCBidWZsZW4pOwotICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgKnBfZnAgPSBmcDsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmRwOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgcGF0aCA9IFB5U3lzX0dldE9iamVjdCgicGF0aCIpOwotICAgIH0KLQotICAgIGlmIChwYXRoID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoIG11c3QgYmUgYSBsaXN0IG9mIGRpcmVjdG9yeSBuYW1lcyIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQotCi0gICAgcGF0aF9ob29rcyA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9ob29rcyIpOwotICAgIGlmIChwYXRoX2hvb2tzID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoX2hvb2tzKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoX2hvb2tzIG11c3QgYmUgYSBsaXN0IG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLSAgICBwYXRoX2ltcG9ydGVyX2NhY2hlID0gUHlTeXNfR2V0T2JqZWN0KCJwYXRoX2ltcG9ydGVyX2NhY2hlIik7Ci0gICAgaWYgKHBhdGhfaW1wb3J0ZXJfY2FjaGUgPT0gTlVMTCB8fAotICAgICAgICAhUHlEaWN0X0NoZWNrKHBhdGhfaW1wb3J0ZXJfY2FjaGUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgbXVzdCBiZSBhIGRpY3QiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLQotICAgIG5wYXRoID0gUHlMaXN0X1NpemUocGF0aCk7Ci0gICAgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnBhdGg7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqdiA9IFB5TGlzdF9HZXRJdGVtKHBhdGgsIGkpOwotICAgICAgICBQeU9iamVjdCAqb3JpZ3YgPSB2OwotICAgICAgICBjb25zdCBjaGFyICpiYXNlOwotICAgICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgICAgIGlmICghdikKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodik7Ci0gICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghUHlCeXRlc19DaGVjayh2KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQeV9JTkNSRUYodik7Ci0KLSAgICAgICAgYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh2KTsKLSAgICAgICAgbGVuID0gc2l6ZTsKLSAgICAgICAgaWYgKGxlbiArIDIgKyBuYW1lbGVuICsgTUFYU1VGRklYU0laRSA+PSBidWZsZW4pIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBUb28gbG9uZyAqLwotICAgICAgICB9Ci0gICAgICAgIHN0cmNweShidWYsIGJhc2UpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0KLSAgICAgICAgaWYgKHN0cmxlbihidWYpICE9IGxlbikgewotICAgICAgICAgICAgY29udGludWU7IC8qIHYgY29udGFpbnMgJ1wwJyAqLwotICAgICAgICB9Ci0KLSAgICAgICAgLyogc3lzLnBhdGhfaG9va3MgaW1wb3J0IGhvb2sgKi8KLSAgICAgICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppbXBvcnRlcjsKLQotICAgICAgICAgICAgaW1wb3J0ZXIgPSBnZXRfcGF0aF9pbXBvcnRlcihwYXRoX2ltcG9ydGVyX2NhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzLCBvcmlndik7Ci0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE5vdGU6IGltcG9ydGVyIGlzIGEgYm9ycm93ZWQgcmVmZXJlbmNlICovCi0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2FkZXI7Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIsIGZ1bGxuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsgIC8qIGVycm9yICovCi0gICAgICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIGEgbG9hZGVyIHdhcyBmb3VuZCAqLwotICAgICAgICAgICAgICAgICAgICAqcF9sb2FkZXIgPSBsb2FkZXI7Ci0gICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAmaW1wb3J0aG9va2Rlc2NyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvKiBubyBob29rIHdhcyBmb3VuZCwgdXNlIGJ1aWx0aW4gaW1wb3J0ICovCi0KLSAgICAgICAgaWYgKGxlbiA+IDAgJiYgYnVmW2xlbi0xXSAhPSBTRVAKLSNpZmRlZiBBTFRTRVAKLSAgICAgICAgICAgICYmIGJ1ZltsZW4tMV0gIT0gQUxUU0VQCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGJ1ZltsZW4rK10gPSBTRVA7Ci0gICAgICAgIHN0cmNweShidWYrbGVuLCBuYW1lKTsKLSAgICAgICAgbGVuICs9IG5hbWVsZW47Ci0KLSAgICAgICAgLyogQ2hlY2sgZm9yIHBhY2thZ2UgaW1wb3J0IChidWYgaG9sZHMgYSBkaXJlY3RvcnkgbmFtZSwKLSAgICAgICAgICAgYW5kIHRoZXJlJ3MgYW4gX19pbml0X18gbW9kdWxlIGluIHRoYXQgZGlyZWN0b3J5ICovCi0jaWZkZWYgSEFWRV9TVEFUCi0gICAgICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDAgJiYgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSAmJiAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIGNhc2Vfb2soYnVmLCBsZW4sIG5hbWVsZW4sIG5hbWUpKSB7IC8qIGNhc2UgbWF0Y2hlcyAqLwotICAgICAgICAgICAgaWYgKGZpbmRfaW5pdF9tb2R1bGUoYnVmKSkgeyAvKiBhbmQgaGFzIF9faW5pdF9fLnB5ICovCi0gICAgICAgICAgICAgICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gJmZkX3BhY2thZ2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0ltcG9ydFdhcm5pbmcsIDEsCi0gICAgICAgICAgICAgICAgICAgICJOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSAnJVUnOiBtaXNzaW5nIF9faW5pdF9fLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgLyogdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBtb2R1bGUgc3BlYyBmb3IgcmVzdG9yYXRpb24KLSAgICAgICAgICogYWZ0ZXIgdGhlIDggY2hhcmFjdGVyIERMTCBoYWNrZXJ5Ci0gICAgICAgICAqLwotICAgICAgICBzYXZlZF9idWYgPSBzdHJkdXAoYnVmKTsKLSAgICAgICAgc2F2ZWRfbGVuID0gbGVuOwotICAgICAgICBzYXZlZF9uYW1lbGVuID0gbmFtZWxlbjsKLSNlbmRpZiAvKiBQWU9TX09TMiAqLwotICAgICAgICBmb3IgKGZkcCA9IF9QeUltcG9ydF9GaWxldGFiOyBmZHAtPnN1ZmZpeCAhPSBOVUxMOyBmZHArKykgewotICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKQotICAgICAgICAgICAgLyogT1MvMiBsaW1pdHMgRExMcyB0byA4IGNoYXJhY3RlciBuYW1lcyAody9vCi0gICAgICAgICAgICAgICBleHRlbnNpb24pCi0gICAgICAgICAgICAgKiBzbyBpZiB0aGUgbmFtZSBpcyBsb25nZXIgdGhhbiB0aGF0IGFuZCBpdHMgYQotICAgICAgICAgICAgICogZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZSB3ZSdyZSBnb2luZyB0byB0cnksCi0gICAgICAgICAgICAgKiB0cnVuY2F0ZSB0aGUgbmFtZSBiZWZvcmUgdHJ5aW5nCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChzdHJsZW4oc3VibmFtZSkgPiA4KSB7Ci0gICAgICAgICAgICAgICAgLyogaXMgdGhpcyBhbiBhdHRlbXB0IHRvIGxvYWQgYSBDIGV4dGVuc2lvbj8gKi8KLSAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyICpzY2FuOwotICAgICAgICAgICAgICAgIHNjYW4gPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWI7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RyY21wKHNjYW4tPnN1ZmZpeCwgZmRwLT5zdWZmaXgpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4rKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHllcywgc28gdHJ1bmNhdGUgdGhlIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgbmFtZWxlbiA9IDg7Ci0gICAgICAgICAgICAgICAgICAgIGxlbiAtPSBzdHJsZW4oc3VibmFtZSkgLSBuYW1lbGVuOwotICAgICAgICAgICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2VuZGlmIC8qIFBZT1NfT1MyICovCi0gICAgICAgICAgICBzdHJjcHkoYnVmK2xlbiwgZmRwLT5zdWZmaXgpOwotICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyB0cnlpbmcgJXNcbiIsIGJ1Zik7Ci0KLSAgICAgICAgICAgIGZpbGVtb2RlID0gZmRwLT5tb2RlOwotICAgICAgICAgICAgaWYgKGZpbGVtb2RlWzBdID09ICdVJykKLSAgICAgICAgICAgICAgICBmaWxlbW9kZSA9ICJyIiBQWV9TVERJT1RFWFRNT0RFOwotCi0gICAgICAgICAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwICYmIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSkKLSAgICAgICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwID0gZm9wZW4oYnVmLCBmaWxlbW9kZSk7Ci0gICAgICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChjYXNlX29rKGJ1ZiwgbGVuLCBuYW1lbGVuLCBuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpbnVlIHNlYXJjaCAqLwotICAgICAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgICAgICAgICAvKiByZXN0b3JlIHRoZSBzYXZlZCBzbmFwc2hvdCAqLwotICAgICAgICAgICAgc3RyY3B5KGJ1Ziwgc2F2ZWRfYnVmKTsKLSAgICAgICAgICAgIGxlbiA9IHNhdmVkX2xlbjsKLSAgICAgICAgICAgIG5hbWVsZW4gPSBzYXZlZF9uYW1lbGVuOwotI2VuZGlmCi0gICAgICAgIH0KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICAvKiBkb24ndCBuZWVkL3dhbnQgdGhlIG1vZHVsZSBuYW1lIHNuYXBzaG90IGFueW1vcmUgKi8KLSAgICAgICAgaWYgKHNhdmVkX2J1ZikKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZShzYXZlZF9idWYpOwotICAgICAgICAgICAgc2F2ZWRfYnVmID0gTlVMTDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmIChmcCAhPSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBtb2R1bGUgbmFtZWQgJS4yMDBzIiwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0gICAgKnBfZnAgPSBmcDsKLSAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgIHJldHVybiBmZHA7Ci0KLWVycm9yX2V4aXQ6Ci0gICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotLyogY2FzZV9vayhjaGFyKiBidWYsIFB5X3NzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG5hbWVsZW4sIGNoYXIqIG5hbWUpCi0gKiBUaGUgYXJndW1lbnRzIGhlcmUgYXJlIHRyaWNreSwgYmVzdCBzaG93biBieSBleGFtcGxlOgotICogICAgL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9zb21lX2xvbmdfbW9kdWxlX25hbWUucHlcMAotICogICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBidWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0gbGVuIC0tLS0tLS0tLS0tLS0tLS0tLXwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLSBuYW1lbGVuIC0tLS0tfAotICogYnVmIGlzIHRoZSBmdWxsIHBhdGgsIGJ1dCBsZW4gb25seSBjb3VudHMgdXAgdG8gKCYgZXhjbHVzaXZlIG9mKSB0aGUKLSAqIGV4dGVuc2lvbi4gIG5hbWUgaXMgdGhlIG1vZHVsZSBuYW1lLCBhbHNvIGV4Y2x1c2l2ZSBvZiBleHRlbnNpb24uCi0gKgotICogV2UndmUgYWxyZWFkeSBkb25lIGEgc3VjY2Vzc2Z1bCBzdGF0KCkgb3IgZm9wZW4oKSBvbiBidWYsIHNvIGtub3cgdGhhdAotICogdGhlcmUncyBzb21lIG1hdGNoLCBwb3NzaWJseSBjYXNlLWluc2Vuc2l0aXZlLgotICoKLSAqIGNhc2Vfb2soKSBpcyB0byByZXR1cm4gMSBpZiB0aGVyZSdzIGEgY2FzZS1zZW5zaXRpdmUgbWF0Y2ggZm9yCi0gKiBuYW1lLCBlbHNlIDAuICBjYXNlX29rKCkgaXMgYWxzbyB0byByZXR1cm4gMSBpZiBlbnZhciBQWVRIT05DQVNFT0sKLSAqIGV4aXN0cy4KLSAqCi0gKiBjYXNlX29rKCkgaXMgdXNlZCB0byBpbXBsZW1lbnQgY2FzZS1zZW5zaXRpdmUgaW1wb3J0IHNlbWFudGljcyBldmVuCi0gKiBvbiBwbGF0Zm9ybXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyB0cml2aWFsIHRvIGltcGxlbWVudAotICogZm9yIGNhc2Utc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyBwcmV0dHkgbXVjaCBhIGNyb3NzLXBsYXRmb3JtCi0gKiBuaWdodG1hcmUgZm9yIHN5c3RlbXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgotICovCi0KLS8qIEZpcnN0IHdlIG1heSBuZWVkIGEgcGlsZSBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXM7IHRoZSBzZXF1ZW5jZQotICogb2YgI2lmJ3MgaGVyZSBzaG91bGQgbWF0Y2ggdGhlIHNlcXVlbmNlIGluIHRoZSBib2R5IG9mIGNhc2Vfb2soKS4KLSAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNlbGlmIGRlZmluZWQoREpHUFApCi0jaW5jbHVkZSA8ZGlyLmg+Ci0KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPGRpcmVudC5oPgotCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotI2RlZmluZSBJTkNMX0RPUwotI2RlZmluZSBJTkNMX0RPU0VSUk9SUwotI2RlZmluZSBJTkNMX05PUE1BUEkKLSNpbmNsdWRlIDxvczIuaD4KLSNlbmRpZgotCi1zdGF0aWMgaW50Ci1jYXNlX29rKGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIFB5X3NzaXplX3QgbmFtZWxlbiwgY2hhciAqbmFtZSkKLXsKLS8qIFBpY2sgYSBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbjsgdGhlIHNlcXVlbmNlIG9mICNpZidzIGhlcmUgc2hvdWxkCi0gKiBtYXRjaCB0aGUgc2VxdWVuY2UganVzdCBhYm92ZS4KLSAqLwotCi0vKiBNU19XSU5ET1dTICovCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFdJTjMyX0ZJTkRfREFUQSBkYXRhOwotICAgIEhBTkRMRSBoOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBoID0gRmluZEZpcnN0RmlsZShidWYsICZkYXRhKTsKLSAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICJDYW4ndCBmaW5kIGZpbGUgZm9yIG1vZHVsZSAlLjEwMHNcbihmaWxlbmFtZSAlLjMwMHMpIiwKLSAgICAgICAgICBuYW1lLCBidWYpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgRmluZENsb3NlKGgpOwotICAgIHJldHVybiBzdHJuY21wKGRhdGEuY0ZpbGVOYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBESkdQUCAqLwotI2VsaWYgZGVmaW5lZChESkdQUCkKLSAgICBzdHJ1Y3QgZmZibGsgZmZibGs7Ci0gICAgaW50IGRvbmU7Ci0KLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05DQVNFT0siKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGRvbmUgPSBmaW5kZmlyc3QoYnVmLCAmZmZibGssIEZBX0FSQ0h8RkFfUkRPTkxZfEZBX0hJRERFTnxGQV9ESVJFQyk7Ci0gICAgaWYgKGRvbmUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAiQ2FuJ3QgZmluZCBmaWxlIGZvciBtb2R1bGUgJS4xMDBzXG4oZmlsZW5hbWUgJS4zMDBzKSIsCi0gICAgICAgICAgbmFtZSwgYnVmKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdHJuY21wKGZmYmxrLmZmX25hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIG5ldy1mYW5nbGVkIG1hY2ludG9zaCAobWFjb3N4KSBvciBDeWd3aW4gKi8KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotICAgIERJUiAqZGlycDsKLSAgICBzdHJ1Y3QgZGlyZW50ICpkcDsKLSAgICBjaGFyIGRpcm5hbWVbTUFYUEFUSExFTiArIDFdOwotICAgIGNvbnN0IGludCBkaXJsZW4gPSBsZW4gLSBuYW1lbGVuIC0gMTsgLyogZG9uJ3Qgd2FudCB0cmFpbGluZyBTRVAgKi8KLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgLyogQ29weSB0aGUgZGlyIGNvbXBvbmVudCBpbnRvIGRpcm5hbWU7IHN1YnN0aXR1dGUgIi4iIGlmIGVtcHR5ICovCi0gICAgaWYgKGRpcmxlbiA8PSAwKSB7Ci0gICAgICAgIGRpcm5hbWVbMF0gPSAnLic7Ci0gICAgICAgIGRpcm5hbWVbMV0gPSAnXDAnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KGRpcmxlbiA8PSBNQVhQQVRITEVOKTsKLSAgICAgICAgbWVtY3B5KGRpcm5hbWUsIGJ1ZiwgZGlybGVuKTsKLSAgICAgICAgZGlybmFtZVtkaXJsZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgLyogT3BlbiB0aGUgZGlyZWN0b3J5IGFuZCBzZWFyY2ggdGhlIGVudHJpZXMgZm9yIGFuIGV4YWN0IG1hdGNoLiAqLwotICAgIGRpcnAgPSBvcGVuZGlyKGRpcm5hbWUpOwotICAgIGlmIChkaXJwKSB7Ci0gICAgICAgIGNoYXIgKm5hbWVXaXRoRXh0ID0gYnVmICsgbGVuIC0gbmFtZWxlbjsKLSAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlycCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbnN0IGludCB0aGlzbGVuID0KLSNpZmRlZiBfRElSRU5UX0hBVkVfRF9OQU1FTEVOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcC0+ZF9uYW1sZW47Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGRwLT5kX25hbWUpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAodGhpc2xlbiA+PSBuYW1lbGVuICYmCi0gICAgICAgICAgICAgICAgc3RyY21wKGRwLT5kX25hbWUsIG5hbWVXaXRoRXh0KSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEZvdW5kICovCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgfQotICAgIHJldHVybiAwIDsgLyogTm90IGZvdW5kICovCi0KLS8qIE9TLzIgKi8KLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgSERJUiBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgZmZidWY7Ci0gICAgQVBJUkVUIHJjOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICByYyA9IERvc0ZpbmRGaXJzdChidWYsCi0gICAgICAgICAgICAgICAgICAgICAgJmhkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgRklMRV9SRUFET05MWSB8IEZJTEVfSElEREVOIHwgRklMRV9TWVNURU0gfCBGSUxFX0RJUkVDVE9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAmZmZidWYsIHNpemVvZihmZmJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgJnNyY2hjbnQsCi0gICAgICAgICAgICAgICAgICAgICAgRklMX1NUQU5EQVJEKTsKLSAgICBpZiAocmMgIT0gTk9fRVJST1IpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHJuY21wKGZmYnVmLmFjaE5hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIGFzc3VtaW5nIGl0J3MgYSBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8hICovCi0jZWxzZQotICAgIHJldHVybiAxOwotCi0jZW5kaWYKLX0KLQotI2lmZGVmIEhBVkVfU1RBVAotCi0vKiBIZWxwZXIgdG8gbG9vayBmb3IgX19pbml0X18ucHkgb3IgX19pbml0X18ucHlbY29dIGluIHBvdGVudGlhbCBwYWNrYWdlICovCi1zdGF0aWMgaW50Ci1maW5kX2luaXRfbW9kdWxlKGNoYXIgKmJ1ZikKLXsKLSAgICBjb25zdCBzaXplX3Qgc2F2ZV9sZW4gPSBzdHJsZW4oYnVmKTsKLSAgICBzaXplX3QgaSA9IHNhdmVfbGVuOwotICAgIGNoYXIgKnBuYW1lOyAgLyogcG9pbnRlciB0byBzdGFydCBvZiBfX2luaXRfXyAqLwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0KLS8qICAgICAgRm9yIGNhbGxpbmcgY2FzZV9vayhidWYsIGxlbiwgbmFtZWxlbiwgbmFtZSk6Ci0gKiAgICAgIC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svc29tZV9sb25nX21vZHVsZV9uYW1lLnB5XDAKLSAqICAgICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tIGJ1ZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tIGxlbiAtLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tIG5hbWVsZW4gLS0tLS18Ci0gKi8KLSAgICBpZiAoc2F2ZV9sZW4gKyAxMyA+PSBNQVhQQVRITEVOKQotICAgICAgICByZXR1cm4gMDsKLSAgICBidWZbaSsrXSA9IFNFUDsKLSAgICBwbmFtZSA9IGJ1ZiArIGk7Ci0gICAgc3RyY3B5KHBuYW1lLCAiX19pbml0X18ucHkiKTsKLSAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwKSB7Ci0gICAgICAgIGlmIChjYXNlX29rKGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgc2F2ZV9sZW4gKyA5LCAgICAgICAgICAgICAgIC8qIGxlbigiL19faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbigiX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIHBuYW1lKSkgewotICAgICAgICAgICAgYnVmW3NhdmVfbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpICs9IHN0cmxlbihwbmFtZSk7Ci0gICAgc3RyY3B5KGJ1ZitpLCBQeV9PcHRpbWl6ZUZsYWcgPyAibyIgOiAiYyIpOwotICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDApIHsKLSAgICAgICAgaWYgKGNhc2Vfb2soYnVmLAotICAgICAgICAgICAgICAgICAgICBzYXZlX2xlbiArIDksICAgICAgICAgICAgICAgLyogbGVuKCIvX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIDgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuKCJfX2luaXRfXyIpICovCi0gICAgICAgICAgICAgICAgcG5hbWUpKSB7Ci0gICAgICAgICAgICBidWZbc2F2ZV9sZW5dID0gJ1wwJzsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGJ1ZltzYXZlX2xlbl0gPSAnXDAnOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLyogSEFWRV9TVEFUICovCi0KLQotc3RhdGljIGludCBpbml0X2J1aWx0aW4oY2hhciAqKTsgLyogRm9yd2FyZCAqLwotCi1zdGF0aWMgUHlPYmplY3QqCi1sb2FkX2J1aWx0aW4oY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIGludCB0eXBlKQotewotICAgIFB5T2JqZWN0ICptLCAqbW9kdWxlczsKLSAgICBpbnQgZXJyOwotCi0gICAgaWYgKHBhdGhuYW1lICE9IE5VTEwgJiYgcGF0aG5hbWVbMF0gIT0gJ1wwJykKLSAgICAgICAgbmFtZSA9IHBhdGhuYW1lOwotCi0gICAgaWYgKHR5cGUgPT0gQ19CVUlMVElOKQotICAgICAgICBlcnIgPSBpbml0X2J1aWx0aW4obmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBlcnIgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7Ci0gICAgaWYgKGVyciA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlcnIgPT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgIlB1cnBvcnRlZCAlcyBtb2R1bGUgJS4yMDBzIG5vdCBmb3VuZCIsCi0gICAgICAgICAgICAgICAgdHlwZSA9PSBDX0JVSUxUSU4gPwotICAgICAgICAgICAgICAgICJidWlsdGluIiA6ICJmcm96ZW4iLAotICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKTsKLSAgICBpZiAobSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdCgKLSAgICAgICAgICAgICAgICBQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAiJXMgbW9kdWxlICUuMjAwcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQiLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQ19CVUlMVElOID8KLSAgICAgICAgICAgICAgICAiYnVpbHRpbiIgOiAiZnJvemVuIiwKLSAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihtKTsKLSAgICByZXR1cm4gbTsKLX0KLQotLyogTG9hZCBhbiBleHRlcm5hbCBtb2R1bGUgdXNpbmcgdGhlIGRlZmF1bHQgc2VhcmNoIHBhdGggYW5kIHJldHVybgotICAgaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfbW9kdWxlKGNoYXIgKm5hbWUsIEZJTEUgKmZwLCBjaGFyICpwYXRobmFtZSwgaW50IHR5cGUsIFB5T2JqZWN0ICpsb2FkZXIpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBGaXJzdCBjaGVjayB0aGF0IHRoZXJlJ3MgYW4gb3BlbiBmaWxlIChpZiB3ZSBuZWVkIG9uZSkgICovCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBQWV9TT1VSQ0U6Ci0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgImZpbGUgb2JqZWN0IHJlcXVpcmVkIGZvciBpbXBvcnQgKHR5cGUgY29kZSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLQotICAgIGNhc2UgUFlfU09VUkNFOgotICAgICAgICBtID0gbG9hZF9zb3VyY2VfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBjYXNlIENfRVhURU5TSU9OOgotICAgICAgICBtID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICBjYXNlIFBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIG0gPSBsb2FkX3BhY2thZ2UobmFtZSwgcGF0aG5hbWUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ19CVUlMVElOOgotICAgIGNhc2UgUFlfRlJPWkVOOgotICAgICAgICBtID0gbG9hZF9idWlsdGluKG5hbWUsIHBhdGhuYW1lLCB0eXBlKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIElNUF9IT09LOiB7Ci0gICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9vayB3aXRob3V0IGxvYWRlciIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QobG9hZGVyLCAibG9hZF9tb2R1bGUiLCAicyIsIG5hbWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0ICUuMjAwcyAodHlwZSBjb2RlICVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdHlwZSk7Ci0gICAgICAgIG0gPSBOVUxMOwotCi0gICAgfQotCi0gICAgcmV0dXJuIG07Ci19Ci0KK3N0YXRpYyBpbnQgaW5pdF9idWlsdGluKFB5T2JqZWN0ICopOyAvKiBGb3J3YXJkICovCiAKIC8qIEluaXRpYWxpemUgYSBidWlsdC1pbiBtb2R1bGUuCiAgICBSZXR1cm4gMSBmb3Igc3VjY2VzcywgMCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCwgYW5kIC0xIHdpdGgKICAgIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gKi8KIAogc3RhdGljIGludAotaW5pdF9idWlsdGluKGNoYXIgKm5hbWUpCitpbml0X2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9pbml0dGFiICpwOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaW5kQnVpbHRpbihuYW1lKSAhPSBOVUxMKQorICAgIGlmIChfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lLCBuYW1lKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGZvciAocCA9IFB5SW1wb3J0X0luaXR0YWI7IHAtPm5hbWUgIT0gTlVMTDsgcCsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICptb2Q7CiAgICAgICAgIFB5TW9kdWxlRGVmICpkZWY7Ci0gICAgICAgIGlmIChzdHJjbXAobmFtZSwgcC0+bmFtZSkgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgcC0+bmFtZSkgPT0gMCkgewogICAgICAgICAgICAgaWYgKHAtPmluaXRmdW5jID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCByZS1pbml0IGludGVybmFsIG1vZHVsZSAlUiIsCiAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgYnVpbHRpblxuIiwgbmFtZSk7CiAgICAgICAgICAgICBtb2QgPSAoKnAtPmluaXRmdW5jKSgpOwogICAgICAgICAgICAgaWYgKG1vZCA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCiAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4obW9kLCBuYW1lKSA8IDApCisgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIEZpeHVwRXh0ZW5zaW9uIGhhcyBwdXQgdGhlIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzLAogICAgICAgICAgICAgICAgc28gd2UgY2FuIHJlbGVhc2Ugb3VyIG93biByZWZlcmVuY2UuICovCkBAIC0yMjQ0LDM3ICs5NjgsMzcgQEAKIC8qIEZyb3plbiBtb2R1bGVzICovCiAKIHN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqCi1maW5kX2Zyb3plbihjaGFyICpuYW1lKQorZmluZF9mcm96ZW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnA7CiAKLSAgICBpZiAoIW5hbWUpCisgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOyA7IHArKykgewogICAgICAgICBpZiAocC0+bmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChzdHJjbXAocC0+bmFtZSwgbmFtZSkgPT0gMCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfZnJvemVuX29iamVjdChjaGFyICpuYW1lKQorZ2V0X2Zyb3plbl9vYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChwLT5jb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICVSIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yMjg1LDE0ICsxMDA5LDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pc19mcm96ZW5fcGFja2FnZShjaGFyICpuYW1lKQoraXNfZnJvemVuX3BhY2thZ2UoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjMxMiwxOSArMTAzNiwyMCBAQAogICAgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgZnJvbSBmcm96ZW5tYWluLmMgKi8KIAogaW50Ci1QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdHJ1Y3QgX2Zyb3plbiAqcCA9IGZpbmRfZnJvemVuKG5hbWUpOwotICAgIFB5T2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqbTsKKyAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKKyAgICBQeU9iamVjdCAqY28sICptLCAqcGF0aDsKICAgICBpbnQgaXNwYWNrYWdlOwogICAgIGludCBzaXplOwogCisgICAgcCA9IGZpbmRfZnJvemVuKG5hbWUpOworCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHAtPmNvZGUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRXhjbHVkZWQgZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yMzMyLDQxICsxMDU3LDM5IEBACiAgICAgaXNwYWNrYWdlID0gKHNpemUgPCAwKTsKICAgICBpZiAoaXNwYWNrYWdlKQogICAgICAgICBzaXplID0gLXNpemU7Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgZnJvemVuJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBpc3BhY2thZ2UgPyAiIHBhY2thZ2UiIDogIiIpOwogICAgIGNvID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKChjaGFyICopcC0+Y29kZSwgc2l6ZSk7CiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJmcm96ZW4gb2JqZWN0ICUuMjAwcyBpcyBub3QgYSBjb2RlIG9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAiZnJvemVuIG9iamVjdCAlUiBpcyBub3QgYSBjb2RlIG9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgZ290byBlcnJfcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNwYWNrYWdlKSB7CiAgICAgICAgIC8qIFNldCBfX3BhdGhfXyB0byB0aGUgcGFja2FnZSBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkLCAqcywgKmw7CisgICAgICAgIFB5T2JqZWN0ICpkLCAqbDsKICAgICAgICAgaW50IGVycjsKLSAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgICAgIHMgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgbCA9IFB5TGlzdF9OZXcoMSk7CiAgICAgICAgIGlmIChsID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgfQotICAgICAgICBQeUxpc3RfU0VUX0lURU0obCwgMCwgcyk7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGwsIDAsIG5hbWUpOwogICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBsKTsKICAgICAgICAgUHlfREVDUkVGKGwpOwogICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgfQotICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KG5hbWUsIGNvLCAiPGZyb3plbj4iKTsKKyAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxmcm96ZW4+Iik7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfcmV0dXJuOworICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChuYW1lLCBjbywgcGF0aCwgTlVMTCk7CisgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICBQeV9ERUNSRUYoY28pOwpAQCAtMjM3Nyw2ICsxMTAwLDE5IEBACiAgICAgcmV0dXJuIC0xOwogfQogCitpbnQKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIGludCByZXQ7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QobmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiByZXQ7Cit9CisKIAogLyogSW1wb3J0IGEgbW9kdWxlLCBlaXRoZXIgYnVpbHQtaW4sIGZyb3plbiwgb3IgZXh0ZXJuYWwsIGFuZCByZXR1cm4KICAgIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCkBAIC0yNDA3LDU4NSArMTE0Myw0MTEgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5T2JqZWN0ICptb2R1bGVzOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgbG9uZyBtZTsKLSNlbmRpZgotCi0gICAgLyogVHJ5IHRvIGdldCB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXNbbmFtZV0gKi8KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChtb2R1bGVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBjaGVjayB0aGUgaW1wb3J0IGxvY2sKLSAgICAgKiBtZSBtaWdodCBiZSAtMSBidXQgSSBpZ25vcmUgdGhlIGVycm9yIGhlcmUsIHRoZSBsb2NrIGZ1bmN0aW9uCi0gICAgICogdGFrZXMgY2FyZSBvZiB0aGUgcHJvYmxlbSAqLwotICAgIG1lID0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpOwotICAgIGlmIChpbXBvcnRfbG9ja190aHJlYWQgPT0gLTEgfHwgaW1wb3J0X2xvY2tfdGhyZWFkID09IG1lKSB7Ci0gICAgICAgIC8qIG5vIHRocmVhZCBvciBtZSBpcyBob2xkaW5nIHRoZSBsb2NrICovCi0gICAgICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUobmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGltcG9ydCAlLjIwMHMgYmVjYXVzZSB0aGUgaW1wb3J0IGxvY2siCi0gICAgICAgICAgICAgICAgICAgICAiaXMgaGVsZCBieSBhbm90aGVyIHRocmVhZC4iLAotICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbHNlCiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZShuYW1lKTsKLSNlbmRpZgogfQogCi0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaGVscGVyIHJvdXRpbmVzICovCi1zdGF0aWMgUHlPYmplY3QgKmdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbiwgaW50IGxldmVsKTsKLXN0YXRpYyBQeU9iamVjdCAqbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcF9uYW1lLCBjaGFyICpidWYsIFB5X3NzaXplX3QgKnBfYnVmbGVuKTsKLXN0YXRpYyBpbnQgbWFya19taXNzKGNoYXIgKm5hbWUpOwotc3RhdGljIGludCBlbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IHJlY3Vyc2l2ZSk7Ci1zdGF0aWMgUHlPYmplY3QgKiBpbXBvcnRfc3VibW9kdWxlKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUsIGNoYXIgKmZ1bGxuYW1lKTsKIAotLyogVGhlIE1hZ251bSBPcHVzIG9mIGRvdHRlZC1uYW1lIGltcG9ydCA6LSkgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcG9ydF9tb2R1bGVfbGV2ZWwoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorLyogUmVtb3ZlIGltcG9ydGxpYiBmcmFtZXMgZnJvbSB0aGUgdHJhY2ViYWNrLAorICogZXhjZXB0IGluIFZlcmJvc2UgbW9kZS4gKi8KK3N0YXRpYyB2b2lkCityZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyh2b2lkKQogewotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0gICAgUHlPYmplY3QgKnBhcmVudCwgKmhlYWQsICpuZXh0LCAqdGFpbDsKKyAgICBjb25zdCBjaGFyICppbXBvcnRsaWJfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iOworICAgIGNvbnN0IGNoYXIgKnJlbW92ZV9mcmFtZXMgPSAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCI7CisgICAgaW50IGFsd2F5c190cmltID0gMDsKKyAgICBpbnQgaW5faW1wb3J0bGliID0gMDsKKyAgICBQeU9iamVjdCAqZXhjZXB0aW9uLCAqdmFsdWUsICpiYXNlX3RiLCAqdGI7CisgICAgUHlPYmplY3QgKipwcmV2X2xpbmssICoqb3V0ZXJfbGluayA9IE5VTEw7CiAKLSAgICBpZiAoc3RyY2hyKG5hbWUsICcvJykgIT0gTlVMTAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgfHwgc3RyY2hyKG5hbWUsICdcXCcpICE9IE5VTEwKKyAgICAvKiBTeW5vcHNpczogaWYgaXQncyBhbiBJbXBvcnRFcnJvciwgd2UgdHJpbSBhbGwgaW1wb3J0bGliIGNodW5rcworICAgICAgIGZyb20gdGhlIHRyYWNlYmFjay4gV2UgYWx3YXlzIHRyaW0gY2h1bmtzCisgICAgICAgd2hpY2ggZW5kIHdpdGggYSBjYWxsIHRvICJfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkIi4gKi8KKworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJmJhc2VfdGIpOworICAgIGlmICghZXhjZXB0aW9uIHx8IFB5X1ZlcmJvc2VGbGFnKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKFB5VHlwZV9Jc1N1YnR5cGUoKFB5VHlwZU9iamVjdCAqKSBleGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcikpCisgICAgICAgIGFsd2F5c190cmltID0gMTsKKworICAgIHByZXZfbGluayA9ICZiYXNlX3RiOworICAgIHRiID0gYmFzZV90YjsKKyAgICB3aGlsZSAodGIgIT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlYmFja09iamVjdCAqdHJhY2ViYWNrID0gKFB5VHJhY2ViYWNrT2JqZWN0ICopdGI7CisgICAgICAgIFB5T2JqZWN0ICpuZXh0ID0gKFB5T2JqZWN0ICopIHRyYWNlYmFjay0+dGJfbmV4dDsKKyAgICAgICAgUHlGcmFtZU9iamVjdCAqZnJhbWUgPSB0cmFjZWJhY2stPnRiX2ZyYW1lOworICAgICAgICBQeUNvZGVPYmplY3QgKmNvZGUgPSBmcmFtZS0+Zl9jb2RlOworICAgICAgICBpbnQgbm93X2luX2ltcG9ydGxpYjsKKworICAgICAgICBhc3NlcnQoUHlUcmFjZUJhY2tfQ2hlY2sodGIpKTsKKyAgICAgICAgbm93X2luX2ltcG9ydGxpYiA9IChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCk7CisgICAgICAgIGlmIChub3dfaW5faW1wb3J0bGliICYmICFpbl9pbXBvcnRsaWIpIHsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxpbmsgdG8gdGhpcyBjaHVuayBvZiBpbXBvcnRsaWIgdHJhY2ViYWNrcyAqLworICAgICAgICAgICAgb3V0ZXJfbGluayA9IHByZXZfbGluazsKKyAgICAgICAgfQorICAgICAgICBpbl9pbXBvcnRsaWIgPSBub3dfaW5faW1wb3J0bGliOworCisgICAgICAgIGlmIChpbl9pbXBvcnRsaWIgJiYKKyAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAorICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ZyYW1lcykgPT0gMCkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSAqb3V0ZXJfbGluazsKKyAgICAgICAgICAgICpvdXRlcl9saW5rID0gbmV4dDsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYobmV4dCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIHByZXZfbGluayA9IG91dGVyX2xpbms7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcmV2X2xpbmsgPSAoUHlPYmplY3QgKiopICZ0cmFjZWJhY2stPnRiX25leHQ7CisgICAgICAgIH0KKyAgICAgICAgdGIgPSBuZXh0OworICAgIH0KK2RvbmU6CisgICAgUHlFcnJfUmVzdG9yZShleGNlcHRpb24sIHZhbHVlLCBiYXNlX3RiKTsKK30KKworCitQeU9iamVjdCAqCitQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCit7CisgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0aWFsaXppbmdfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fcGF0aF9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX2ZpbmRfYW5kX2xvYWQpOworICAgIF9QeV9JREVOVElGSUVSKF9oYW5kbGVfZnJvbWxpc3QpOworICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKHNpbmdsZV9kb3QsICIuIik7CisgICAgUHlPYmplY3QgKmFic19uYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnNfaW1wb3J0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxfbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisKKyAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCisgICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCisgICAgICAgTlVMTCBhcmd1bWVudC4gKi8KKyAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKKyAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KKyAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKKyAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOworICAgIH0KKworICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7CisgICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7CisgICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7CisgICAgfQorICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFRoZSBiZWxvdyBjb2RlIGlzIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgJiBfZ2NkX2ltcG9ydCgpLCBwb3J0ZWQgdG8gQworICAgICAgIGZvciBhZGRlZCBwZXJmb3JtYW5jZS4gKi8KKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtb2R1bGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKGxldmVsIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxldmVsIG11c3QgYmUgPj0gMCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICAgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCAmJiBwYWNrYWdlICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBhY2thZ2UgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19uYW1lX18pOworICAgICAgICAgICAgaWYgKHBhY2thZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX25hbWVfXyBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisKKyAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7CisgICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOworICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeyAgLyogbGV2ZWwgPT0gMCAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBwYWNrYWdlID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgIH0KKworICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgUHlfc3NpemVfdCBsYXN0X2RvdCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhY2thZ2UpOworICAgICAgICBQeU9iamVjdCAqYmFzZSA9IE5VTEw7CisgICAgICAgIGludCBsZXZlbF91cCA9IDE7CisKKyAgICAgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywgMCwgbGFzdF9kb3QsIC0xKTsKKyAgICAgICAgICAgIGlmIChsYXN0X2RvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsYXN0X2RvdCA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7CisKKyAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKKyAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFic19uYW1lID0gbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCi0gICAgICAgICkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSW1wb3J0IGJ5IGZpbGVuYW1lIGlzIG5vdCBzdXBwb3J0ZWQuIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgLyogRnJvbSB0aGlzIHBvaW50IGZvcndhcmQsIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2shICovCisgICAgaWYgKFB5RGljdF9DaGVjayhnbG9iYWxzKSkgeworICAgICAgICBidWlsdGluc19pbXBvcnQgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX2ltcG9ydF9fKTsKICAgICB9Ci0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhcmVudCA9IGdldF9wYXJlbnQoZ2xvYmFscywgYnVmLCAmYnVmbGVuLCBsZXZlbCk7Ci0gICAgaWYgKHBhcmVudCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0KLSAgICBoZWFkID0gbG9hZF9uZXh0KHBhcmVudCwgbGV2ZWwgPCAwID8gUHlfTm9uZSA6IHBhcmVudCwgJm5hbWUsIGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZidWZsZW4pOwotICAgIGlmIChoZWFkID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLQotICAgIHRhaWwgPSBoZWFkOwotICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICB3aGlsZSAobmFtZSkgewotICAgICAgICBuZXh0ID0gbG9hZF9uZXh0KHRhaWwsIHRhaWwsICZuYW1lLCBidWYsICZidWZsZW4pOwotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKKyAgICAgICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7CisgICAgICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiX19pbXBvcnRfXyBtaXNzaW5nIik7CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IG5leHQ7CiAgICAgfQotICAgIGlmICh0YWlsID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogSWYgdGFpbCBpcyBQeV9Ob25lLCBib3RoIGdldF9wYXJlbnQgYW5kIGxvYWRfbmV4dCBmb3VuZAotICAgICAgICAgICBhbiBlbXB0eSBtb2R1bGUgbmFtZTogc29tZW9uZSBjYWxsZWQgX19pbXBvcnRfXygiIikgb3IKLSAgICAgICAgICAgZG9jdG9yZWQgZmF1bHR5IGJ5dGVjb2RlICovCi0gICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgUHlfREVDUkVGKGhlYWQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBtb2R1bGUgbmFtZSIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQorICAgIFB5X0lOQ1JFRihidWlsdGluc19pbXBvcnQpOwogCi0gICAgaWYgKGZyb21saXN0ICE9IE5VTEwpIHsKLSAgICAgICAgaW50IGIgPSAoZnJvbWxpc3QgPT0gUHlfTm9uZSkgPyAwIDogUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICAgICAgaWYgKGIgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaGVhZCk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBhYnNfbmFtZSk7CisgICAgaWYgKG1vZCA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiaW1wb3J0IG9mICVSIGhhbHRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLCBhYnNfbmFtZSk7CisgICAgICAgIGlmIChtc2cgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBhYnNfbmFtZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWIpCi0gICAgICAgICAgICBmcm9tbGlzdCA9IE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CiAgICAgfQorICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CiAKLSAgICBpZiAoZnJvbWxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIGhlYWQ7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAvKiBPcHRpbWl6YXRpb246IG9ubHkgY2FsbCBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSBpZgorICAgICAgICAgICBfX2luaXRpYWxpemluZ19fIGlzIHRydWUuCisgICAgICAgICAgIE5PVEU6IGJlY2F1c2Ugb2YgdGhpcywgX19pbml0aWFsaXppbmdfXyBtdXN0IGJlIHNldCAqYmVmb3JlKgorICAgICAgICAgICBzdHVmZmluZyB0aGUgbmV3IG1vZHVsZSBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgICovCisgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2QsICZQeUlkX19faW5pdGlhbGl6aW5nX18pOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW5pdGlhbGl6aW5nID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID09IC0xKQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKKyAgICAgICAgICAgIC8qIF9ib290c3RyYXAuX2xvY2tfdW5sb2NrX21vZHVsZSgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLworICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2xvY2tfdW5sb2NrX21vZHVsZSwgYWJzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CiAgICAgfQotCi0gICAgUHlfREVDUkVGKGhlYWQpOwotICAgIGlmICghZW5zdXJlX2Zyb21saXN0KHRhaWwsIGZyb21saXN0LCBidWYsIGJ1ZmxlbiwgMCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgZWxzZSB7CisgICAgICAgIC8qIF9ib290c3RyYXAuX2ZpbmRfYW5kX2xvYWQoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KKyAgICAgICAgbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19maW5kX2FuZF9sb2FkLCBhYnNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnNfaW1wb3J0LCBOVUxMKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAgICAgfQorICAgIC8qIEZyb20gbm93IG9uIHdlIGRvbid0IGhvbGQgdGhlIGltcG9ydCBsb2NrIGFueW1vcmUuICovCiAKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIHRhaWw7CisgICAgaWYgKFB5T2JqZWN0X05vdChmcm9tbGlzdCkpIHsKKyAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOwogCi1lcnJvcl9leGl0OgotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKKyAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOworCisgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgeworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9udCk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBhYnNfbmFtZV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhYnNfbmFtZSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvX3JldHVybiA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWJzX25hbWUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19uYW1lX2xlbiAtIGN1dF9vZmYpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CisgICAgICAgICAgICAgICAgaWYgKHRvX3JldHVybiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgbm90IGluIHN5cy5tb2R1bGVzIGFzIGV4cGVjdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmaW5hbF9tb2QgPSBtb2Q7CisgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgfQorICAgIGdvdG8gZXJyb3I7CisKKyAgZXJyb3Jfd2l0aF91bmxvY2s6CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKKyAgICB9CisjZW5kaWYKKyAgZXJyb3I6CisgICAgUHlfWERFQ1JFRihhYnNfbmFtZSk7CisgICAgUHlfWERFQ1JFRihidWlsdGluc19pbXBvcnQpOworICAgIFB5X1hERUNSRUYobW9kKTsKKyAgICBQeV9YREVDUkVGKHBhY2thZ2UpOworICAgIFB5X1hERUNSRUYoZ2xvYmFscyk7CisgICAgUHlfWERFQ1JFRihmcm9tbGlzdCk7CisgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKQorICAgICAgICByZW1vdmVfaW1wb3J0bGliX2ZyYW1lcygpOworICAgIHJldHVybiBmaW5hbF9tb2Q7CiB9CiAKIFB5T2JqZWN0ICoKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotICAgIHJlc3VsdCA9IGltcG9ydF9tb2R1bGVfbGV2ZWwobmFtZSwgZ2xvYmFscywgbG9jYWxzLCBmcm9tbGlzdCwgbGV2ZWwpOwotICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqbW9kOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUmV0dXJuIHRoZSBwYWNrYWdlIHRoYXQgYW4gaW1wb3J0IGlzIGJlaW5nIHBlcmZvcm1lZCBpbi4gIElmIGdsb2JhbHMgY29tZXMKLSAgIGZyb20gdGhlIG1vZHVsZSBmb28uYmFyLmJhdCAobm90IGl0c2VsZiBhIHBhY2thZ2UpLCB0aGlzIHJldHVybnMgdGhlCi0gICBzeXMubW9kdWxlcyBlbnRyeSBmb3IgZm9vLmJhci4gIElmIGdsb2JhbHMgaXMgZnJvbSBhIHBhY2thZ2UncyBfX2luaXRfXy5weSwKLSAgIHRoZSBwYWNrYWdlJ3MgZW50cnkgaW4gc3lzLm1vZHVsZXMgaXMgcmV0dXJuZWQsIGFzIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotCi0gICBUaGUgKm5hbWUqIG9mIHRoZSByZXR1cm5lZCBwYWNrYWdlIGlzIHJldHVybmVkIGluIGJ1Ziwgd2l0aCB0aGUgbGVuZ3RoIG9mCi0gICB0aGUgbmFtZSBpbiAqcF9idWZsZW4uCi0KLSAgIElmIGdsb2JhbHMgZG9lc24ndCBjb21lIGZyb20gYSBwYWNrYWdlIG9yIGEgbW9kdWxlIGluIGEgcGFja2FnZSwgb3IgYQotICAgY29ycmVzcG9uZGluZyBlbnRyeSBpcyBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMsIFB5X05vbmUgaXMgcmV0dXJuZWQuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLWdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCAqcF9idWZsZW4sIGludCBsZXZlbCkKLXsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWVzdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcGF0aHN0ciA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwa2dzdHIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpwa2duYW1lLCAqbW9kbmFtZSwgKm1vZHBhdGgsICptb2R1bGVzLCAqcGFyZW50OwotICAgIGludCBvcmlnX2xldmVsID0gbGV2ZWw7Ci0KLSAgICBpZiAoZ2xvYmFscyA9PSBOVUxMIHx8ICFQeURpY3RfQ2hlY2soZ2xvYmFscykgfHwgIWxldmVsKQotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLQotICAgIGlmIChuYW1lc3RyID09IE5VTEwpIHsKLSAgICAgICAgbmFtZXN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZXN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwYXRoc3RyID09IE5VTEwpIHsKLSAgICAgICAgcGF0aHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3BhdGhfXyIpOwotICAgICAgICBpZiAocGF0aHN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwa2dzdHIgPT0gTlVMTCkgewotICAgICAgICBwa2dzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19wYWNrYWdlX18iKTsKLSAgICAgICAgaWYgKHBrZ3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgKmJ1ZiA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gMDsKLSAgICBwa2duYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgcGtnc3RyKTsKLQotICAgIGlmICgocGtnbmFtZSAhPSBOVUxMKSAmJiAocGtnbmFtZSAhPSBQeV9Ob25lKSkgewotICAgICAgICAvKiBfX3BhY2thZ2VfXyBpcyBzZXQsIHNvIHVzZSBpdCAqLwotICAgICAgICBjaGFyICpwa2duYW1lX3N0cjsKLSAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGtnbmFtZSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX3BhY2thZ2VfXyBzZXQgdG8gbm9uLXN0cmluZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGtnbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShwa2duYW1lLCAmbGVuKTsKLSAgICAgICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGluIG5vbi1wYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGVuID4gTUFYUEFUSExFTikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhY2thZ2UgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY3B5KGJ1ZiwgcGtnbmFtZV9zdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIF9fcGFja2FnZV9fIG5vdCBzZXQsIHNvIGZpZ3VyZSBpdCBvdXQgYW5kIHNldCBpdCAqLwotICAgICAgICBtb2RuYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgbmFtZXN0cik7Ci0gICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhtb2RuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotCi0gICAgICAgIG1vZHBhdGggPSBQeURpY3RfR2V0SXRlbShnbG9iYWxzLCBwYXRoc3RyKTsKLSAgICAgICAgaWYgKG1vZHBhdGggIT0gTlVMTCkgewotICAgICAgICAgICAgLyogX19wYXRoX18gaXMgc2V0LCBzbyBtb2RuYW1lIGlzIGFscmVhZHkgdGhlIHBhY2thZ2UgbmFtZSAqLwotICAgICAgICAgICAgY2hhciAqbW9kbmFtZV9zdHI7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGludCBlcnJvcjsKLQotICAgICAgICAgICAgbW9kbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShtb2RuYW1lLCAmbGVuKTsKLSAgICAgICAgICAgIGlmIChsZW4gPiBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgbW9kbmFtZV9zdHIpOwotICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIG1vZG5hbWUpOwotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBOb3JtYWwgbW9kdWxlLCBzbyB3b3JrIG91dCB0aGUgcGFja2FnZSBuYW1lIGlmIGFueSAqLwotICAgICAgICAgICAgY2hhciAqc3RhcnQgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG1vZG5hbWUpOwotICAgICAgICAgICAgY2hhciAqbGFzdGRvdCA9IHN0cnJjaHIoc3RhcnQsICcuJyk7Ci0gICAgICAgICAgICBzaXplX3QgbGVuOwotICAgICAgICAgICAgaW50IGVycm9yOwotICAgICAgICAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCAmJiBsZXZlbCA+IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgaW4gbm9uLXBhY2thZ2UiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGVuID0gbGFzdGRvdCAtIHN0YXJ0OwotICAgICAgICAgICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIHN0YXJ0LCBsZW4pOwotICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgcGtnbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgICAgICBpZiAocGtnbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgcGtnbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGtnbmFtZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoLS1sZXZlbCA+IDApIHsKLSAgICAgICAgY2hhciAqZG90ID0gc3RycmNocihidWYsICcuJyk7Ci0gICAgICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kICIKLSAgICAgICAgICAgICAgICAidG9wbGV2ZWwgcGFja2FnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgKmRvdCA9ICdcMCc7Ci0gICAgfQotICAgICpwX2J1ZmxlbiA9IHN0cmxlbihidWYpOwotCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBwYXJlbnQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBidWYpOwotICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICBpZiAob3JpZ19sZXZlbCA8IDEpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICplcnJfbXNnID0gUHlCeXRlc19Gcm9tRm9ybWF0KAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBmb3VuZCAiCi0gICAgICAgICAgICAgICAgIndoaWxlIGhhbmRsaW5nIGFic29sdXRlIGltcG9ydCIsIGJ1Zik7Ci0gICAgICAgICAgICBpZiAoZXJyX21zZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX1dhcm5FeChQeUV4Y19SdW50aW1lV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcoZXJyX21zZyksIDEpKSB7Ci0gICAgICAgICAgICAgICAgKmJ1ZiA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgKnBfYnVmbGVuID0gMDsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGVycl9tc2cpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBsb2FkZWQsICIKLSAgICAgICAgICAgICAgICAiY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgaW1wb3J0IiwgYnVmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcGFyZW50OwotICAgIC8qIFdlIGV4cGVjdCwgYnV0IGNhbid0IGd1YXJhbnRlZSwgaWYgcGFyZW50ICE9IE5vbmUsIHRoYXQ6Ci0gICAgICAgLSBwYXJlbnQuX19uYW1lX18gPT0gYnVmCi0gICAgICAgLSBwYXJlbnQuX19kaWN0X18gaXMgZ2xvYmFscwotICAgICAgIElmIHRoaXMgaXMgdmlvbGF0ZWQuLi4gIFdobyBjYXJlcz8gKi8KLX0KLQotLyogYWx0bW9kIGlzIGVpdGhlciBOb25lIG9yIHNhbWUgYXMgbW9kICovCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsIGNoYXIgKipwX25hbWUsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbikKLXsKLSAgICBjaGFyICpuYW1lID0gKnBfbmFtZTsKLSAgICBjaGFyICpkb3QgPSBzdHJjaHIobmFtZSwgJy4nKTsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIGlmIChzdHJsZW4obmFtZSkgPT0gMCkgewotICAgICAgICAvKiBjb21wbGV0ZWx5IGVtcHR5IG1vZHVsZSBuYW1lIHNob3VsZCBvbmx5IGhhcHBlbiBpbgotICAgICAgICAgICAnZnJvbSAuIGltcG9ydCcgKG9yICdfX2ltcG9ydF9fKCIiKScpKi8KLSAgICAgICAgUHlfSU5DUkVGKG1vZCk7Ci0gICAgICAgICpwX25hbWUgPSBOVUxMOwotICAgICAgICByZXR1cm4gbW9kOwotICAgIH0KLQotICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAqcF9uYW1lID0gTlVMTDsKLSAgICAgICAgbGVuID0gc3RybGVuKG5hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKnBfbmFtZSA9IGRvdCsxOwotICAgICAgICBsZW4gPSBkb3QtbmFtZTsKLSAgICB9Ci0gICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IG1vZHVsZSBuYW1lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHAgPSBidWYgKyAqcF9idWZsZW47Ci0gICAgaWYgKHAgIT0gYnVmKQotICAgICAgICAqcCsrID0gJy4nOwotICAgIGlmIChwK2xlbi1idWYgPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RybmNweShwLCBuYW1lLCBsZW4pOwotICAgIHBbbGVuXSA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gcCtsZW4tYnVmOwotCi0gICAgcmVzdWx0ID0gaW1wb3J0X3N1Ym1vZHVsZShtb2QsIHAsIGJ1Zik7Ci0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGFsdG1vZCAhPSBtb2QpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIC8qIEhlcmUsIGFsdG1vZCBtdXN0IGJlIE5vbmUgYW5kIG1vZCBtdXN0IG5vdCBiZSBOb25lICovCi0gICAgICAgIHJlc3VsdCA9IGltcG9ydF9zdWJtb2R1bGUoYWx0bW9kLCBwLCBwKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBpZiAobWFya19taXNzKGJ1ZikgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIG5hbWUsIGxlbik7Ci0gICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAqcF9idWZsZW4gPSBsZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIG1vZHVsZSBuYW1lZCAlLjIwMHMiLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludAotbWFya19taXNzKGNoYXIgKm5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIFB5X05vbmUpOwotfQotCi1zdGF0aWMgaW50Ci1lbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LCBjaGFyICpidWYsIFB5X3NzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgIGludCByZWN1cnNpdmUpCi17Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcobW9kLCAiX19wYXRoX18iKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBmb3IgKGkgPSAwOyA7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShmcm9tbGlzdCwgaSk7Ci0gICAgICAgIGludCBoYXNpdDsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW5kZXhFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkl0ZW0gaW4gYGBmcm9tIGxpc3QnJyBub3QgYSBzdHJpbmciKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQVNfVU5JQ09ERShpdGVtKVswXSA9PSAnKicpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAvKiBTZWUgaWYgdGhlIHBhY2thZ2UgZGVmaW5lcyBfX2FsbF9fICovCi0gICAgICAgICAgICBpZiAocmVjdXJzaXZlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBBdm9pZCBlbmRsZXNzIHJlY3Vyc2lvbiAqLwotICAgICAgICAgICAgYWxsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsICJfX2FsbF9fIik7Ci0gICAgICAgICAgICBpZiAoYWxsID09IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGludCByZXQgPSBlbnN1cmVfZnJvbWxpc3QobW9kLCBhbGwsIGJ1ZiwgYnVmbGVuLCAxKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJldCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBoYXNpdCA9IFB5T2JqZWN0X0hhc0F0dHIobW9kLCBpdGVtKTsKLSAgICAgICAgaWYgKCFoYXNpdCkgewotICAgICAgICAgICAgUHlPYmplY3QgKml0ZW04OwotICAgICAgICAgICAgY2hhciAqc3VibmFtZTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJtb2Q7Ci0gICAgICAgICAgICBjaGFyICpwOwotICAgICAgICAgICAgaXRlbTggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGl0ZW0pOwotICAgICAgICAgICAgaWYgKCFpdGVtOCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm90IGVuY29kZSBwYXRoIGl0ZW0iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN1Ym5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhpdGVtOCk7Ci0gICAgICAgICAgICBpZiAoYnVmbGVuICsgc3RybGVuKHN1Ym5hbWUpID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSBuYW1lIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcCA9IGJ1ZiArIGJ1ZmxlbjsKLSAgICAgICAgICAgICpwKysgPSAnLic7Ci0gICAgICAgICAgICBzdHJjcHkocCwgc3VibmFtZSk7Ci0gICAgICAgICAgICBzdWJtb2QgPSBpbXBvcnRfc3VibW9kdWxlKG1vZCwgc3VibmFtZSwgYnVmKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtOCk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHN1Ym1vZCk7Ci0gICAgICAgICAgICBpZiAoc3VibW9kID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgIH0KLQotICAgIC8qIE5PVFJFQUNIRUQgKi8KLX0KLQotc3RhdGljIGludAotYWRkX3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqc3VibW9kLCBjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZXMpCi17Ci0gICAgaWYgKG1vZCA9PSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gMTsKLSAgICAvKiBJcnJlc3BlY3RpdmUgb2YgdGhlIHN1Y2Nlc3Mgb2YgdGhpcyBsb2FkLCBtYWtlIGEKLSAgICAgICByZWZlcmVuY2UgdG8gaXQgaW4gdGhlIHBhcmVudCBwYWNrYWdlIG1vZHVsZS4gIEEgY29weSBnZXRzCi0gICAgICAgc2F2ZWQgaW4gdGhlIG1vZHVsZXMgZGljdGlvbmFyeSB1bmRlciB0aGUgZnVsbCBuYW1lLCBzbyBnZXQgYQotICAgICAgIHJlZmVyZW5jZSBmcm9tIHRoZXJlLCBpZiBuZWVkIGJlLiAgKFRoZSBleGNlcHRpb24gaXMgd2hlbiB0aGUKLSAgICAgICBsb2FkIGZhaWxlZCB3aXRoIGEgU3ludGF4RXJyb3IgLS0gdGhlbiB0aGVyZSdzIG5vIHRyYWNlIGluCi0gICAgICAgc3lzLm1vZHVsZXMuICBJbiB0aGF0IGNhc2UsIG9mIGNvdXJzZSwgZG8gbm90aGluZyBleHRyYS4pICovCi0gICAgaWYgKHN1Ym1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIHN1Ym1vZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIGZ1bGxuYW1lKTsKLSAgICAgICAgaWYgKHN1Ym1vZCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIGlmIChQeU1vZHVsZV9DaGVjayhtb2QpKSB7Ci0gICAgICAgIC8qIFdlIGNhbid0IHVzZSBzZXRhdHRyIGhlcmUgc2luY2UgaXQgY2FuIGdpdmUgYQotICAgICAgICAgKiBzcHVyaW91cyB3YXJuaW5nIGlmIHRoZSBzdWJtb2R1bGUgbmFtZSBzaGFkb3dzIGEKLSAgICAgICAgICogYnVpbHRpbiBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtb2QpOwotICAgICAgICBpZiAoIWRpY3QpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtb2QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wb3J0X3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBjaGFyICpzdWJuYW1lLCBjaGFyICpmdWxsbmFtZSkKLXsKLSAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0KLSAgICAvKiBSZXF1aXJlOgotICAgICAgIGlmIG1vZCA9PSBOb25lOiBzdWJuYW1lID09IGZ1bGxuYW1lCi0gICAgICAgZWxzZTogbW9kLl9fbmFtZV9fICsgIi4iICsgc3VibmFtZSA9PSBmdWxsbmFtZQotICAgICovCi0KLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBmdWxsbmFtZSkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhdGgsICpsb2FkZXIgPSBOVUxMOwotICAgICAgICBjaGFyICpidWY7Ci0gICAgICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICAgICAgRklMRSAqZnAgPSBOVUxMOwotCi0gICAgICAgIGlmIChtb2QgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgIHBhdGggPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZCwgIl9fcGF0aF9fIik7Ci0gICAgICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgfQotICAgICAgICBidWZbMF0gPSAnXDAnOwotICAgICAgICBmZHAgPSBmaW5kX21vZHVsZShmdWxsbmFtZSwgc3VibmFtZSwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmcCwgJmxvYWRlcik7Ci0gICAgICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBtID0gbG9hZF9tb2R1bGUoZnVsbG5hbWUsIGZwLCBidWYsIGZkcC0+dHlwZSwgbG9hZGVyKTsKLSAgICAgICAgUHlfWERFQ1JFRihsb2FkZXIpOwotICAgICAgICBpZiAoZnApCi0gICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBpZiAoIWFkZF9zdWJtb2R1bGUobW9kLCBtLCBmdWxsbmFtZSwgc3VibmFtZSwgbW9kdWxlcykpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobSk7Ci0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgfQotCi0gICAgcmV0dXJuIG07CisgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QobmFtZW9iaiwgZ2xvYmFscywgbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBsZXZlbCk7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiBtb2Q7CiB9CiAKIApAQCAtMjk5NSwxMDMgKzE1NTcsMjMgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X1JlbG9hZE1vZHVsZShQeU9iamVjdCAqbSkKIHsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBQeU9iamVjdCAqbW9kdWxlc19yZWxvYWRpbmcgPSBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nOworICAgIF9QeV9JREVOVElGSUVSKHJlbG9hZCk7CisgICAgUHlPYmplY3QgKnJlbG9hZGVkX21vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMLCAqbG9hZGVyID0gTlVMTCwgKmV4aXN0aW5nX20gPSBOVUxMOwotICAgIGNoYXIgKm5hbWUsICpzdWJuYW1lOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuZXdtOwotCi0gICAgaWYgKG1vZHVsZXNfcmVsb2FkaW5nID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlJbXBvcnRfUmVsb2FkTW9kdWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgIm5vIG1vZHVsZXNfcmVsb2FkaW5nIGRpY3Rpb25hcnkhIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5T2JqZWN0ICppbXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCAiaW1wIik7CisgICAgaWYgKGltcCA9PSBOVUxMKSB7CisgICAgICAgIGltcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiaW1wIik7CisgICAgICAgIGlmIChpbXAgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAobSA9PSBOVUxMIHx8ICFQeU1vZHVsZV9DaGVjayhtKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpIGFyZ3VtZW50IG11c3QgYmUgbW9kdWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBuYW1lID0gKGNoYXIqKVB5TW9kdWxlX0dldE5hbWUobSk7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG0gIT0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpOiBtb2R1bGUgJS4yMDBzIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGV4aXN0aW5nX20gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzX3JlbG9hZGluZywgbmFtZSk7Ci0gICAgaWYgKGV4aXN0aW5nX20gIT0gTlVMTCkgewotICAgICAgICAvKiBEdWUgdG8gYSByZWN1cnNpdmUgcmVsb2FkLCB0aGlzIG1vZHVsZSBpcyBhbHJlYWR5Ci0gICAgICAgICAgIGJlaW5nIHJlbG9hZGVkLiAqLwotICAgICAgICBQeV9JTkNSRUYoZXhpc3RpbmdfbSk7Ci0gICAgICAgIHJldHVybiBleGlzdGluZ19tOwotICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlc19yZWxvYWRpbmcsIG5hbWUsIG0pIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdWJuYW1lID0gc3RycmNocihuYW1lLCAnLicpOwotICAgIGlmIChzdWJuYW1lID09IE5VTEwpCi0gICAgICAgIHN1Ym5hbWUgPSBuYW1lOwogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqcGFyZW50bmFtZSwgKnBhcmVudDsKLSAgICAgICAgcGFyZW50bmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShuYW1lLCAoc3VibmFtZS1uYW1lKSk7Ci0gICAgICAgIGlmIChwYXJlbnRuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyZW50ID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgcGFyZW50bmFtZSk7Ci0gICAgICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICJyZWxvYWQoKTogcGFyZW50ICVVIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgIHBhcmVudG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhcmVudG5hbWUpOwotICAgICAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYocGFyZW50bmFtZSk7Ci0gICAgICAgIHN1Ym5hbWUrKzsKLSAgICAgICAgcGF0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcocGFyZW50LCAiX19wYXRoX18iKTsKLSAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgYnVmWzBdID0gJ1wwJzsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShuYW1lLCBzdWJuYW1lLCBwYXRoLCBidWYsIE1BWFBBVEhMRU4rMSwgJmZwLCAmbG9hZGVyKTsKLSAgICBQeV9YREVDUkVGKHBhdGgpOwotCi0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLSAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihpbXApOwogICAgIH0KIAotICAgIG5ld20gPSBsb2FkX21vZHVsZShuYW1lLCBmcCwgYnVmLCBmZHAtPnR5cGUsIGxvYWRlcik7Ci0gICAgUHlfWERFQ1JFRihsb2FkZXIpOwotCi0gICAgaWYgKGZwKQotICAgICAgICBmY2xvc2UoZnApOwotICAgIGlmIChuZXdtID09IE5VTEwpIHsKLSAgICAgICAgLyogbG9hZF9tb2R1bGUgcHJvYmFibHkgcmVtb3ZlZCBuYW1lIGZyb20gbW9kdWxlcyBiZWNhdXNlIG9mCi0gICAgICAgICAqIHRoZSBlcnJvci4gIFB1dCBiYWNrIHRoZSBvcmlnaW5hbCBtb2R1bGUgb2JqZWN0LiAgV2UncmUKLSAgICAgICAgICogZ29pbmcgdG8gcmV0dXJuIE5VTEwgaW4gdGhpcyBjYXNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotICAgICAgICAgKiByZXBsYWNpbmcgbmFtZSBzdWNjZWVkcywgc28gdGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLgotICAgICAgICAgKi8KLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbSk7Ci0gICAgfQotICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbmV3bTsKKyAgICByZWxvYWRlZF9tb2R1bGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGltcCwgJlB5SWRfcmVsb2FkLCAiTyIsIG0pOworICAgIFB5X0RFQ1JFRihpbXApOworICAgIHJldHVybiByZWxvYWRlZF9tb2R1bGU7CiB9CiAKIApAQCAtMzE4MSw0OCArMTY2MywxOSBAQAogICAgIHJldHVybiByOwogfQogCi0KLS8qIE1vZHVsZSAnaW1wJyBwcm92aWRlcyBQeXRob24gYWNjZXNzIHRvIHRoZSBwcmltaXRpdmVzIHVzZWQgZm9yCi0gICBpbXBvcnRpbmcgbW9kdWxlcy4KLSovCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbWFrZV9tYWdpYyhsb25nIG1hZ2ljKQotewotICAgIGNoYXIgYnVmWzRdOwotCi0gICAgYnVmWzBdID0gKGNoYXIpICgobWFnaWMgPj4gIDApICYgMHhmZik7Ci0gICAgYnVmWzFdID0gKGNoYXIpICgobWFnaWMgPj4gIDgpICYgMHhmZik7Ci0gICAgYnVmWzJdID0gKGNoYXIpICgobWFnaWMgPj4gMTYpICYgMHhmZik7Ci0gICAgYnVmWzNdID0gKGNoYXIpICgobWFnaWMgPj4gMjQpICYgMHhmZik7Ci0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIDQpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2dldF9tYWdpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICByZXR1cm4gaW1wX21ha2VfbWFnaWMocHljX21hZ2ljKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfdGFnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhweWNfdGFnKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfc3VmZml4ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitpbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKKyAgICBjb25zdCBjaGFyICpzdWZmaXg7CisgICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChsaXN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoZmRwID0gX1B5SW1wb3J0X0ZpbGV0YWI7IGZkcC0+c3VmZml4ICE9IE5VTEw7IGZkcCsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlfQnVpbGRWYWx1ZSgic3NpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtPnN1ZmZpeCwgZmRwLT5tb2RlLCBmZHAtPnR5cGUpOworI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCisgICAgd2hpbGUgKChzdWZmaXggPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbaW5kZXhdKSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHN1ZmZpeCk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzIzMywxMDIgKzE2ODYsMTkgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaW5kZXggKz0gMTsKICAgICB9CisjZW5kaWYKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZmluZF9tb2R1bGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCi17Ci0gICAgZXh0ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKLSAgICBQeU9iamVjdCAqZm9iLCAqcmV0OwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgaW50IGZkID0gLTE7Ci0gICAgY2hhciAqZm91bmRfZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKHBhdGhuYW1lID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhdGhuYW1lWzBdID0gJ1wwJzsKLSAgICBpZiAocGF0aCA9PSBQeV9Ob25lKQotICAgICAgICBwYXRoID0gTlVMTDsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShOVUxMLCBuYW1lLCBwYXRoLCBwYXRobmFtZSwgTUFYUEFUSExFTisxLCAmZnAsIE5VTEwpOwotICAgIGlmIChmZHAgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIGlmIChmcCAhPSBOVUxMKSB7Ci0gICAgICAgIGZkID0gZmlsZW5vKGZwKTsKLSAgICAgICAgaWYgKGZkICE9IC0xKQotICAgICAgICAgICAgZmQgPSBkdXAoZmQpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmZCAhPSAtMSkgewotICAgICAgICBpZiAoc3RyY2hyKGZkcC0+bW9kZSwgJ2InKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoKSByZXR1cm5zIFB5TWVtX01BTExPQydlZAotICAgICAgICAgICAgICAgbWVtb3J5LiAqLwotICAgICAgICAgICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoZmQpOwotICAgICAgICAgICAgbHNlZWsoZmQsIDAsIDApOyAvKiBSZXNldCBwb3NpdGlvbiAqLwotICAgICAgICAgICAgaWYgKGZvdW5kX2VuY29kaW5nID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbmNvZGluZyA9IChmb3VuZF9lbmNvZGluZyAhPSBOVUxMKSA/IGZvdW5kX2VuY29kaW5nIDoKLSAgICAgICAgICAgICAgICAgICAoY2hhciopUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotICAgICAgICB9Ci0gICAgICAgIGZvYiA9IFB5RmlsZV9Gcm9tRmQoZmQsIHBhdGhuYW1lLCBmZHAtPm1vZGUsIC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKillbmNvZGluZywgTlVMTCwgTlVMTCwgMSk7Ci0gICAgICAgIGlmIChmb2IgPT0gTlVMTCkgewotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvYiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihmb2IpOwotICAgIH0KLSAgICBwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgiTk4oc3NpKSIsCi0gICAgICAgICAgICAgICAgICBmb2IsIHBhdGhvYmosIGZkcC0+c3VmZml4LCBmZHAtPm1vZGUsIGZkcC0+dHlwZSk7Ci0gICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgUHlNZW1fRlJFRShwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3JfZXhpdDoKLSAgICBQeU1lbV9GUkVFKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9maW5kX21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnJldCwgKnBhdGggPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8TzpmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gY2FsbF9maW5kX21vZHVsZShQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSwgcGF0aCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9idWlsdGluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmluaXRfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aW5pdF9idWlsdGluIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXQgPSBpbml0X2J1aWx0aW4obmFtZSk7CiAgICAgaWYgKHJldCA8IDApCkBAIC0zMzM3LDcgKzE3MDcsNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgUHlfWElOQ1JFRihtKTsKICAgICByZXR1cm4gbTsKIH0KQEAgLTMzNDUsMTkgKzE3MTUsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9mcm96ZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqbTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aW5pdF9mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7CisgICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIFB5X1hJTkNSRUYobSk7CiAgICAgcmV0dXJuIG07CiB9CkBAIC0zMzY1LDkgKzE3MzUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9nZXRfZnJvemVuX29iamVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBnZXRfZnJvemVuX29iamVjdChuYW1lKTsKIH0KQEAgLTMzNzUsOSArMTc0NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbl9wYWNrYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIGlzX2Zyb3plbl9wYWNrYWdlKG5hbWUpOwogfQpAQCAtMzM4NSw4ICsxNzU1LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaXNfYnVpbHRpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpc19idWlsdGluKG5hbWUpKTsKIH0KQEAgLTMzOTQsMzMzICsxNzY0LDU0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSAocCA9PSBOVUxMID8gMCA6IHAtPnNpemUpKTsKIH0KIAotc3RhdGljIEZJTEUgKgotZ2V0X2ZpbGUoY2hhciAqcGF0aG5hbWUsIFB5T2JqZWN0ICpmb2IsIGNoYXIgKm1vZGUpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKG1vZGVbMF0gPT0gJ1UnKQotICAgICAgICBtb2RlID0gInIiIFBZX1NURElPVEVYVE1PREU7Ci0gICAgaWYgKGZvYiA9PSBOVUxMKSB7Ci0gICAgICAgIGZwID0gZm9wZW4ocGF0aG5hbWUsIG1vZGUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaW50IGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihmb2IpOwotICAgICAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgLyogdGhlIEZJTEUgc3RydWN0IGdldHMgYSBuZXcgZmQsIHNvIHRoYXQgaXQgY2FuIGJlIGNsb3NlZAotICAgICAgICAgKiBpbmRlcGVuZGVudGx5IG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgZ2l2ZW4KLSAgICAgICAgICovCi0gICAgICAgIGZkID0gZHVwKGZkKTsKLSAgICAgICAgaWYgKGZkID09IC0xKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgZnAgPSBmZG9wZW4oZmQsIG1vZGUpOwotICAgIH0KLSAgICBpZiAoZnApCi0gICAgICAgIHJldHVybiBmcDsKLWVycm9yOgotICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX2NvbXBpbGVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZm9iID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbTsKLSAgICBGSUxFICpmcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJnxPOmxvYWRfY29tcGlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmb2IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGdldF9maWxlKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZm9iLCAicmIiKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZnApOwotICAgIGZjbG9zZShmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gbTsKLX0KLQogI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfbG9hZF9keW5hbWljKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRoYnl0ZXM7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mfE86bG9hZF9keW5hbWljIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmZvYikpCisgICAgUHlPYmplY3QgKm5hbWUsICpwYXRobmFtZSwgKmZvYiA9IE5VTEwsICptb2Q7CisgICAgRklMRSAqZnA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPJnxPOmxvYWRfZHluYW1pYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmcGF0aG5hbWUsICZmb2IpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRobmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyk7Ci0gICAgaWYgKGZvYikgewotICAgICAgICBmcCA9IGdldF9maWxlKHBhdGhuYW1lLCBmb2IsICJyIik7CisgICAgaWYgKGZvYiAhPSBOVUxMKSB7CisgICAgICAgIGZwID0gX1B5X2ZvcGVuKHBhdGhuYW1lLCAiciIpOwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIG0gPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGZwID0gTlVMTDsKKyAgICBtb2QgPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKKyAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwogICAgIGlmIChmcCkKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gbW9kOwogfQogCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3NvdXJjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyZ8Tzpsb2FkX3NvdXJjZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZwID0gZ2V0X2ZpbGUoUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmb2IsICJyIik7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG0gPSBsb2FkX3NvdXJjZV9tb2R1bGUobmFtZSwgUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBmY2xvc2UoZnApOwotICAgIHJldHVybiBtOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2xvYWRfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpmb2I7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGNoYXIgKnN1ZmZpeDsgLyogVW51c2VkICovCi0gICAgY2hhciAqbW9kZTsKLSAgICBpbnQgdHlwZTsKLSAgICBGSUxFICpmcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic09PJihzc2kpOmxvYWRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsICZmb2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VmZml4LCAmbW9kZSwgJnR5cGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKm1vZGUpIHsKLSAgICAgICAgLyogTW9kZSBtdXN0IHN0YXJ0IHdpdGggJ3InIG9yICdVJyBhbmQgbXVzdCBub3QgY29udGFpbiAnKycuCi0gICAgICAgICAgIEltcGxpY2l0IGluIHRoaXMgdGVzdCBpcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBtb2RlCi0gICAgICAgICAgIG1heSBjb250YWluIG90aGVyIG1vZGlmaWVycyBsaWtlICdiJyBvciAndCcuICovCi0KLSAgICAgICAgaWYgKCEoKm1vZGUgPT0gJ3InIHx8ICptb2RlID09ICdVJykgfHwgc3RyY2hyKG1vZGUsICcrJykpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZpbGUgb3BlbiBtb2RlICUuMjAwcyIsIG1vZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmb2IgPT0gUHlfTm9uZSkKLSAgICAgICAgZnAgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBmcCA9IGdldF9maWxlKE5VTEwsIGZvYiwgbW9kZSk7Ci0gICAgICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0ID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgdHlwZSwgTlVMTCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBpZiAoZnApCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3BhY2thZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mOmxvYWRfcGFja2FnZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IGxvYWRfcGFja2FnZShuYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSkpOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9uZXdfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpuZXdfbW9kdWxlIiwgJm5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlNb2R1bGVfTmV3KG5hbWUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX3JlbG9hZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCi17Ci0gICAgcmV0dXJuIFB5SW1wb3J0X1JlbG9hZE1vZHVsZSh2KTsKLX0KLQotUHlEb2NfU1RSVkFSKGRvY19yZWxvYWQsCi0icmVsb2FkKG1vZHVsZSkgLT4gbW9kdWxlXG5cCi1cblwKLVJlbG9hZCB0aGUgbW9kdWxlLiAgVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgYmVmb3JlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2NhY2hlX2Zyb21fc291cmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3cykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVidWdfb3ZlcnJpZGUiLCBOVUxMfTsKLQotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOwotICAgIGNoYXIgKmNwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZGVidWdfb3ZlcnJpZGUgPSBOVUxMOwotICAgIGludCBkZWJ1ZyA9ICFQeV9PcHRpbWl6ZUZsYWc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJnxPIiwga3dsaXN0LAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmRlYnVnX292ZXJyaWRlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZGVidWdfb3ZlcnJpZGUgIT0gTlVMTCAmJgotICAgICAgICAoZGVidWcgPSBQeU9iamVjdF9Jc1RydWUoZGVidWdfb3ZlcnJpZGUpKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwKLSAgICAgICAgYnVmLCBNQVhQQVRITEVOKzEsIGRlYnVnKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKLQotICAgIGlmIChjcGF0aG5hbWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICJwYXRoIGJ1ZmZlciB0b28gc2hvcnQiKTsKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgewotICAgICAgICBQeU9iamVjdCAqcmV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotfQotCi1QeURvY19TVFJWQVIoZG9jX2NhY2hlX2Zyb21fc291cmNlLAotImNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtkZWJ1Z19vdmVycmlkZV0pIC0+IHBhdGhcblwKLUdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuXG5cCi1cblwKLVRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZVxuXAotLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb25cblwKLXdpbGwgYmUgLnB5YyB1bmxlc3MgX19kZWJ1Z19fIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGl0IHdpbGwgYmUgLnB5by5cblwKLVxuXAotSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHRha2VuIGFzXG5cCi10aGUgdmFsdWUgb2YgX19kZWJ1Z19fIGluc3RlYWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfc291cmNlX2Zyb21fY2FjaGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsIE5VTEx9OwotCi0gICAgUHlPYmplY3QgKnBhdGhuYW1lX29iajsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBjaGFyICpidWY7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJiIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZV9vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWVfb2JqKTsKLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGlmIChtYWtlX3NvdXJjZV9wYXRobmFtZShwYXRobmFtZSwgYnVmKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiTm90IGEgUEVQIDMxNDcgcHljIHBhdGg6ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iaik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYmopOwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci19Ci0KLVB5RG9jX1NUUlZBUihkb2Nfc291cmNlX2Zyb21fY2FjaGUsCi0ic291cmNlX2Zyb21fY2FjaGUocGF0aCkgLT4gcGF0aFxuXAotR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuXG5cCi1cblwKLVRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvXG5cCi10aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGhcblwKLWRvZXMgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiIpOwogCiAvKiBEb2Mgc3RyaW5ncyAqLwogCiBQeURvY19TVFJWQVIoZG9jX2ltcCwKLSJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgY29tcG9uZW50cyBuZWVkZWQgdG8gYnVpbGQgeW91ciBvd25cblwKLV9faW1wb3J0X18gZnVuY3Rpb24uICBVbmRvY3VtZW50ZWQgZnVuY3Rpb25zIGFyZSBvYnNvbGV0ZS4iKTsKKyIoRXh0cmVtZWx5KSBsb3ctbGV2ZWwgaW1wb3J0IG1hY2hpbmVyeSBiaXRzIGFzIHVzZWQgYnkgaW1wb3J0bGliIGFuZCBpbXAuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZmluZF9tb2R1bGUsCi0iZmluZF9tb2R1bGUobmFtZSwgW3BhdGhdKSAtPiAoZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKVxuXAotU2VhcmNoIGZvciBhIG1vZHVsZS4gIElmIHBhdGggaXMgb21pdHRlZCBvciBOb25lLCBzZWFyY2ggZm9yIGFcblwKLWJ1aWx0LWluLCBmcm96ZW4gb3Igc3BlY2lhbCBtb2R1bGUgYW5kIGNvbnRpbnVlIHNlYXJjaCBpbiBzeXMucGF0aC5cblwKLVRoZSBtb2R1bGUgbmFtZSBjYW5ub3QgY29udGFpbiAnLic7IHRvIHNlYXJjaCBmb3IgYSBzdWJtb2R1bGUgb2YgYVxuXAotcGFja2FnZSwgcGFzcyB0aGUgc3VibW9kdWxlIG5hbWUgYW5kIHRoZSBwYWNrYWdlJ3MgX19wYXRoX18uIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfbG9hZF9tb2R1bGUsCi0ibG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKSAtPiBtb2R1bGVcblwKLUxvYWQgYSBtb2R1bGUsIGdpdmVuIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IGZpbmRfbW9kdWxlKCkuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9tYWdpYywKLSJnZXRfbWFnaWMoKSAtPiBzdHJpbmdcblwKLVJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfZ2V0X3RhZywKLSJnZXRfdGFnKCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9zdWZmaXhlcywKLSJnZXRfc3VmZml4ZXMoKSAtPiBbKHN1ZmZpeCwgbW9kZSwgdHlwZSksIC4uLl1cblwKLVJldHVybiBhIGxpc3Qgb2YgKHN1ZmZpeCwgbW9kZSwgdHlwZSkgdHVwbGVzIGRlc2NyaWJpbmcgdGhlIGZpbGVzXG5cCi10aGF0IGZpbmRfbW9kdWxlKCkgbG9va3MgZm9yLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX25ld19tb2R1bGUsCi0ibmV3X21vZHVsZShuYW1lKSAtPiBtb2R1bGVcblwKLUNyZWF0ZSBhIG5ldyBtb2R1bGUuICBEbyBub3QgZW50ZXIgaXQgaW4gc3lzLm1vZHVsZXMuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOworUHlEb2NfU1RSVkFSKGRvY19leHRlbnNpb25fc3VmZml4ZXMsCisiZXh0ZW5zaW9uX3N1ZmZpeGVzKCkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCitSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKIAogUHlEb2NfU1RSVkFSKGRvY19sb2NrX2hlbGQsCiAibG9ja19oZWxkKCkgLT4gYm9vbGVhblxuXApAQCAtMzc0MCwxNzkgKzE4MzEsMjggQEAKIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgaW1wX21ldGhvZHNbXSA9IHsKLSAgICB7ImZpbmRfbW9kdWxlIiwgICAgICBpbXBfZmluZF9tb2R1bGUsICBNRVRIX1ZBUkFSR1MsIGRvY19maW5kX21vZHVsZX0sCi0gICAgeyJnZXRfbWFnaWMiLCAgICAgICAgaW1wX2dldF9tYWdpYywgICAgTUVUSF9OT0FSR1MsICBkb2NfZ2V0X21hZ2ljfSwKLSAgICB7ImdldF90YWciLCAgICAgICAgICBpbXBfZ2V0X3RhZywgICAgICBNRVRIX05PQVJHUywgIGRvY19nZXRfdGFnfSwKLSAgICB7ImdldF9zdWZmaXhlcyIsIGltcF9nZXRfc3VmZml4ZXMsIE1FVEhfTk9BUkdTLCAgZG9jX2dldF9zdWZmaXhlc30sCi0gICAgeyJsb2FkX21vZHVsZSIsICAgICAgaW1wX2xvYWRfbW9kdWxlLCAgTUVUSF9WQVJBUkdTLCBkb2NfbG9hZF9tb2R1bGV9LAotICAgIHsibmV3X21vZHVsZSIsICAgICAgIGltcF9uZXdfbW9kdWxlLCAgIE1FVEhfVkFSQVJHUywgZG9jX25ld19tb2R1bGV9LAorICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgaW1wX2V4dGVuc2lvbl9zdWZmaXhlcywgTUVUSF9OT0FSR1MsCisgICAgICAgIGRvY19leHRlbnNpb25fc3VmZml4ZXN9LAogICAgIHsibG9ja19oZWxkIiwgICAgICAgIGltcF9sb2NrX2hlbGQsICAgIE1FVEhfTk9BUkdTLCAgZG9jX2xvY2tfaGVsZH0sCiAgICAgeyJhY3F1aXJlX2xvY2siLCBpbXBfYWNxdWlyZV9sb2NrLCBNRVRIX05PQVJHUywgIGRvY19hY3F1aXJlX2xvY2t9LAogICAgIHsicmVsZWFzZV9sb2NrIiwgaW1wX3JlbGVhc2VfbG9jaywgTUVUSF9OT0FSR1MsICBkb2NfcmVsZWFzZV9sb2NrfSwKLSAgICB7InJlbG9hZCIsICAgICAgIGltcF9yZWxvYWQsICAgICAgIE1FVEhfTywgICAgICAgZG9jX3JlbG9hZH0sCi0gICAgeyJjYWNoZV9mcm9tX3NvdXJjZSIsIChQeUNGdW5jdGlvbilpbXBfY2FjaGVfZnJvbV9zb3VyY2UsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19jYWNoZV9mcm9tX3NvdXJjZX0sCi0gICAgeyJzb3VyY2VfZnJvbV9jYWNoZSIsIChQeUNGdW5jdGlvbilpbXBfc291cmNlX2Zyb21fY2FjaGUsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19zb3VyY2VfZnJvbV9jYWNoZX0sCi0gICAgLyogVGhlIHJlc3QgYXJlIG9ic29sZXRlICovCiAgICAgeyJnZXRfZnJvemVuX29iamVjdCIsICAgICAgIGltcF9nZXRfZnJvemVuX29iamVjdCwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19mcm96ZW5fcGFja2FnZSIsICAgaW1wX2lzX2Zyb3plbl9wYWNrYWdlLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfYnVpbHRpbiIsICAgICAgICAgICAgaW1wX2luaXRfYnVpbHRpbiwgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfZnJvemVuIiwgICAgICAgICAgICAgaW1wX2luaXRfZnJvemVuLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2J1aWx0aW4iLCAgICAgICAgICAgICAgaW1wX2lzX2J1aWx0aW4sICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2Zyb3plbiIsICAgICAgICAgICAgICAgaW1wX2lzX2Zyb3plbiwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxvYWRfY29tcGlsZWQiLCAgICAgICAgICAgaW1wX2xvYWRfY29tcGlsZWQsICAgICAgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwogICAgIHsibG9hZF9keW5hbWljIiwgICAgICAgICAgICBpbXBfbG9hZF9keW5hbWljLCAgICAgICBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCi0gICAgeyJsb2FkX3BhY2thZ2UiLCAgICAgICAgICAgIGltcF9sb2FkX3BhY2thZ2UsICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkX3NvdXJjZSIsICAgICAgICAgICAgIGltcF9sb2FkX3NvdXJjZSwgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJfZml4X2NvX2ZpbGVuYW1lIiwgICAgICAgIGltcF9maXhfY29fZmlsZW5hbWUsICAgIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotc3RhdGljIGludAotc2V0aW50KFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgaW50IGVycjsKLQotICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdmFsdWUpOwotICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgcmV0dXJuIGVycjsKLX0KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLX0gTnVsbEltcG9ydGVyOwotCi1zdGF0aWMgaW50Ci1OdWxsSW1wb3J0ZXJfaW5pdChOdWxsSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gICAgaW50IHJ2OwotCi0gICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygiTnVsbEltcG9ydGVyKCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpOdWxsSW1wb3J0ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUocGF0aCkgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImVtcHR5IHBhdGhuYW1lIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBydiA9IHN0YXQoUHlCeXRlc19BU19TVFJJTkcocGF0aCksICZzdGF0YnVmKTsKLSAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgaWYgKHJ2ID09IDApIHsKLSAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgIGlmIChTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImV4aXN0aW5nIGRpcmVjdG9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotI2Vsc2UgLyogTVNfV0lORE9XUyAqLwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIERXT1JEIHJ2OwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKCJOdWxsSW1wb3J0ZXIoKSIsIGt3ZHMpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6TnVsbEltcG9ydGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGhvYmopKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiZW1wdHkgcGF0aG5hbWUiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhwYXRob2JqLCBOVUxMKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgLyogc2VlIGlzc3VlMTI5MyBhbmQgaXNzdWUzNjc3OgotICAgICAqIHN0YXQoKSBvbiBXaW5kb3dzIGRvZXNuJ3QgcmVjb2duaXNlIHBhdGhzIGxpa2UKLSAgICAgKiAiZTpcXHNoYXJlZFxcIiBhbmQgIlxcXFx3aGl0ZXJhYi1jMnpubGhcXHNoYXJlZCIgYXMgZGlycy4KLSAgICAgKi8KLSAgICBydiA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoKTsKLSAgICBQeU1lbV9GcmVlKHBhdGgpOwotICAgIGlmIChydiAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgaWYgKHJ2ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJleGlzdGluZyBkaXJlY3RvcnkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlKE51bGxJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBOdWxsSW1wb3J0ZXJfbWV0aG9kc1tdID0gewotICAgIHsiZmluZF9tb2R1bGUiLCAoUHlDRnVuY3Rpb24pTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJBbHdheXMgcmV0dXJuIE5vbmUiCi0gICAgfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi0KLVB5VHlwZU9iamVjdCBQeU51bGxJbXBvcnRlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpbXAuTnVsbEltcG9ydGVyIiwgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKE51bGxJbXBvcnRlciksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgIC8qdHBfZmxhZ3MqLwotICAgICJOdWxsIGltcG9ydGVyIG9iamVjdCIsICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgTnVsbEltcG9ydGVyX21ldGhvZHMsICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpTnVsbEltcG9ydGVyX2luaXQsICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcgICAgICAgICAgLyogdHBfbmV3ICovCi19OwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGltcG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImltcCIsCisgICAgIl9pbXAiLAogICAgIGRvY19pbXAsCiAgICAgMCwKICAgICBpbXBfbWV0aG9kcywKQEAgLTM5MjcsOSArMTg2Nyw2IEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlOdWxsSW1wb3J0ZXJfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmltcG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwpAQCAtMzkzNywxOSArMTg3NCw2IEBACiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwogCi0gICAgaWYgKHNldGludChkLCAiU0VBUkNIX0VSUk9SIiwgU0VBUkNIX0VSUk9SKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9TT1VSQ0UiLCBQWV9TT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0NPTVBJTEVEIiwgUFlfQ09NUElMRUQpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIkNfRVhURU5TSU9OIiwgQ19FWFRFTlNJT04pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX1JFU09VUkNFIiwgUFlfUkVTT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBLR19ESVJFQ1RPUlkiLCBQS0dfRElSRUNUT1JZKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJDX0JVSUxUSU4iLCBDX0JVSUxUSU4pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0ZST1pFTiIsIFBZX0ZST1pFTikgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiUFlfQ09ERVJFU09VUkNFIiwgUFlfQ09ERVJFU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJJTVBfSE9PSyIsIElNUF9IT09LKSA8IDApIGdvdG8gZmFpbHVyZTsKLQotICAgIFB5X0lOQ1JFRigmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOdWxsSW1wb3J0ZXIiLCAoUHlPYmplY3QgKikmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7CiAgICAgcmV0dXJuIG07CiAgIGZhaWx1cmU6CiAgICAgUHlfWERFQ1JFRihtKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggOWNhZWQ0NS4uOTQyZTRiOCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTEyLDUwICsxMiw3MyBAQAogCiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAotZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCk7CisjZWxzZQorZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOwotCi0KKyNlbmRpZgogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCwgRklMRSAqZnApCiB7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgY2hhciAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOworI2VuZGlmCisgICAgUHlPYmplY3QgKm5hbWVhc2NpaTsKKyAgICBjaGFyICpuYW1lc3RyLCAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKICAgICBkbF9mdW5jcHRyIHAwOwogICAgIFB5T2JqZWN0KiAoKnApKHZvaWQpOwogICAgIHN0cnVjdCBQeU1vZHVsZURlZiAqZGVmOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBwYXRoID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICBtID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7CisgICAgaWYgKG0gIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYobSk7CisgICAgICAgIHJldHVybiBtOworICAgIH0KKworICAgIC8qIG5hbWUgbXVzdCBiZSBlbmNvZGFibGUgdG8gQVNDSUkgYmVjYXVzZSBkeW5hbWljIG1vZHVsZSBtdXN0IGhhdmUgYQorICAgICAgIGZ1bmN0aW9uIGNhbGxlZCAiUHlJbml0X05BTUUiLCB0aGV5IGFyZSB3cml0dGVuIGluIEMsIGFuZCB0aGUgQyBsYW5ndWFnZQorICAgICAgIGRvZXNuJ3QgYWNjZXB0IG5vbi1BU0NJSSBpZGVudGlmaWVycy4gKi8KKyAgICBuYW1lYXNjaWkgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJhc2NpaSIsIE5VTEwpOworICAgIGlmIChuYW1lYXNjaWkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoKG0gPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUobmFtZSwgcGF0aCkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgICAgICByZXN1bHQgPSBtOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWUsICcuJyk7CisgICAgbmFtZXN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWVhc2NpaSk7CisgICAgaWYgKG5hbWVzdHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWVzdHIsICcuJyk7CiAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCkgewogICAgICAgICBwYWNrYWdlY29udGV4dCA9IE5VTEw7Ci0gICAgICAgIHNob3J0bmFtZSA9IG5hbWU7CisgICAgICAgIHNob3J0bmFtZSA9IG5hbWVzdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwYWNrYWdlY29udGV4dCA9IG5hbWU7CisgICAgICAgIHBhY2thZ2Vjb250ZXh0ID0gbmFtZXN0cjsKICAgICAgICAgc2hvcnRuYW1lID0gbGFzdGRvdCsxOwogICAgIH0KIAotICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKG5hbWUsIHNob3J0bmFtZSwgcGF0aG5hbWUsIGZwKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcDAgPSBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3Moc2hvcnRuYW1lLCBwYXRoLCBmcCk7CisjZWxzZQorICAgIHBhdGhieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CisgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKHNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpLCBmcCk7CisgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisjZW5kaWYKICAgICBwID0gKFB5T2JqZWN0KigqKSh2b2lkKSlwMDsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSBpbml0IGZ1bmN0aW9uIChQeUluaXRfJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5pdCBmdW5jdGlvbiAoUHlJbml0XyVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIG5hbWUsIHBhdGgpOworICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgb2xkY29udGV4dCA9IF9QeV9QYWNrYWdlQ29udGV4dDsKQEAgLTY2LDcgKzg5LDYgQEAKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOwpAQCAtODMsMjAgKzEwNSwxNSBAQAogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHBhdGgpOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUobSwgbmFtZSwgcGF0aCkgPCAwKQorICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZSwgcGF0aCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAiaW1wb3J0ICVzICMgZHluYW1pY2FsbHkgbG9hZGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgcmVzdWx0ID0gbTsKLSAgICBnb3RvIGZpbmFsbHk7CisgICAgUHlfREVDUkVGKG5hbWVhc2NpaSk7CisgICAgcmV0dXJuIG07CiAKIGVycm9yOgotICAgIHJlc3VsdCA9IE5VTEw7Ci1maW5hbGx5OgotICAgIFB5X0RFQ1JFRihwYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZiAvKiBIQVZFX0RZTkFNSUNfTE9BRElORyAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmggYi9QeXRob24vaW1wb3J0ZGwuaAppbmRleCBiNGQyMWJlLi42YjljZjc1IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuaAorKysgYi9QeXRob24vaW1wb3J0ZGwuaApAQCAtNiwyOSArNiw5IEBACiAjZW5kaWYKIAogCi0vKiBEZWZpbml0aW9ucyBmb3IgZHluYW1pYyBsb2FkaW5nIG9mIGV4dGVuc2lvbiBtb2R1bGVzICovCi1lbnVtIGZpbGV0eXBlIHsKLSAgICBTRUFSQ0hfRVJST1IsCi0gICAgUFlfU09VUkNFLAotICAgIFBZX0NPTVBJTEVELAotICAgIENfRVhURU5TSU9OLAotICAgIFBZX1JFU09VUkNFLCAvKiBNYWMgb25seSAqLwotICAgIFBLR19ESVJFQ1RPUlksCi0gICAgQ19CVUlMVElOLAotICAgIFBZX0ZST1pFTiwKLSAgICBQWV9DT0RFUkVTT1VSQ0UsIC8qIE1hYyBvbmx5ICovCi0gICAgSU1QX0hPT0sKLX07CitleHRlcm4gY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107CiAKLXN0cnVjdCBmaWxlZGVzY3IgewotICAgIGNoYXIgKnN1ZmZpeDsKLSAgICBjaGFyICptb2RlOwotICAgIGVudW0gZmlsZXR5cGUgdHlwZTsKLX07Ci1leHRlcm4gc3RydWN0IGZpbGVkZXNjciAqIF9QeUltcG9ydF9GaWxldGFiOwotZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107Ci0KLWV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLAorZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKik7CiAKIC8qIE1heCBsZW5ndGggb2YgbW9kdWxlIHN1ZmZpeCBzZWFyY2hlZCBmb3IgLS0gYWNjb21tb2RhdGVzICJtb2R1bGUuc2xiIiAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZDcxNmYKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTAsMCArMSw0NDA0IEBACisvKiBBdXRvLWdlbmVyYXRlZCBieSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgKi8KK3Vuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0geworICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDYsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIwMCwzLDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsMTI5LDAsOTAsMSwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAorICAgIDIsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCwzLDAsMTAwLDgsCisgICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLAorICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxNiwKKyAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsOCwwLDEwMCwxOCwwLDEwMCwxOSwwLAorICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEwMCwyMiwwLDEzMiwKKyAgICAxLDAsOTAsMTAsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMCwwLDkwLDExLAorICAgIDAsMTAxLDEyLDAsMTAxLDExLDAsMTA2LDEzLDAsMTMxLDEsMCw5MCwxNCwwLAorICAgIDEwMCwyNSwwLDEwMCwyNiwwLDEzMiwwLDAsOTAsMTUsMCwxMDUsMCwwLDkwLAorICAgIDE2LDAsMTA1LDAsMCw5MCwxNywwLDcxLDEwMCwyNywwLDEwMCwyOCwwLDEzMiwKKyAgICAwLDAsMTAwLDI4LDAsMTAxLDE4LDAsMTMxLDMsMCw5MCwxOSwwLDcxLDEwMCwKKyAgICAyOSwwLDEwMCwzMCwwLDEzMiwwLDAsMTAwLDMwLDAsMTMxLDIsMCw5MCwyMCwKKyAgICAwLDcxLDEwMCwzMSwwLDEwMCwzMiwwLDEzMiwwLDAsMTAwLDMyLDAsMTMxLDIsCisgICAgMCw5MCwyMSwwLDEwMCwzMywwLDEwMCwzNCwwLDEzMiwwLDAsOTAsMjIsMCwKKyAgICAxMDAsMzUsMCwxMDAsMzYsMCwxMzIsMCwwLDkwLDIzLDAsMTAwLDM3LDAsMTAwLAorICAgIDM4LDAsMTMyLDAsMCw5MCwyNCwwLDEwMCwzOSwwLDEwMSwyNSwwLDEwMCw0MCwKKyAgICAwLDEzMSwxLDAsMTAwLDQxLDAsNjIsNjYsMTAxLDI1LDAsMTAwLDQyLDAsMTMxLAorICAgIDEsMCwxMDAsNDMsMCw2Miw2Niw5MCwyNiwwLDEwMSwyNywwLDEwMCw0NCwwLAorICAgIDEwMCw0NSwwLDEzMiwwLDAsMTAxLDI4LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLAorICAgIDQ4LDAsMTMxLDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsOTAsMjksMCwxMDAsCisgICAgNDksMCw5MCwzMCwwLDEwMCw1MCwwLDEwMywxLDAsOTAsMzEsMCwxMDAsNTEsCisgICAgMCwxMDMsMSwwLDkwLDMyLDAsMTAwLDUyLDAsMTAzLDEsMCw5MCwzMywwLAorICAgIDEwMCwxMjgsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMSwwLDkwLDM1LDAsMTAwLAorICAgIDU1LDAsMTAwLDU2LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw1NywwLDEwMCw1OCwKKyAgICAwLDEzMiwwLDAsOTAsMzcsMCwxMDAsNTksMCwxMDAsNjAsMCwxMzIsMCwwLAorICAgIDkwLDM4LDAsMTAwLDYxLDAsMTAwLDYyLDAsMTMyLDAsMCw5MCwzOSwwLDEwMCwKKyAgICA2MywwLDEwMCw2NCwwLDEzMiwwLDAsOTAsNDAsMCwxMDAsNjUsMCwxMDAsNjYsCisgICAgMCwxMzIsMCwwLDkwLDQxLDAsMTAwLDY3LDAsMTAwLDY4LDAsMTMyLDAsMCwKKyAgICA5MCw0MiwwLDEwMCw2OSwwLDEwMCw3MCwwLDEzMiwwLDAsOTAsNDMsMCwxMDAsCisgICAgNzEsMCwxMDAsNzIsMCwxMzIsMCwwLDkwLDQ0LDAsMTAwLDczLDAsMTAwLDc0LAorICAgIDAsMTMyLDAsMCw5MCw0NSwwLDcxLDEwMCw3NSwwLDEwMCw3NiwwLDEzMiwwLAorICAgIDAsMTAwLDc2LDAsMTMxLDIsMCw5MCw0NiwwLDcxLDEwMCw3NywwLDEwMCw3OCwKKyAgICAwLDEzMiwwLDAsMTAwLDc4LDAsMTMxLDIsMCw5MCw0NywwLDcxLDEwMCw3OSwKKyAgICAwLDEwMCw4MCwwLDEzMiwwLDAsMTAwLDgwLDAsMTMxLDIsMCw5MCw0OCwwLAorICAgIDcxLDEwMCw4MSwwLDEwMCw4MiwwLDEzMiwwLDAsMTAwLDgyLDAsMTMxLDIsMCwKKyAgICA5MCw0OSwwLDcxLDEwMCw4MywwLDEwMCw4NCwwLDEzMiwwLDAsMTAwLDg0LDAsCisgICAgMTAxLDQ5LDAsMTMxLDMsMCw5MCw1MCwwLDcxLDEwMCw4NSwwLDEwMCw4NiwwLAorICAgIDEzMiwwLDAsMTAwLDg2LDAsMTMxLDIsMCw5MCw1MSwwLDcxLDEwMCw4NywwLAorICAgIDEwMCw4OCwwLDEzMiwwLDAsMTAwLDg4LDAsMTAxLDUxLDAsMTAxLDUwLDAsMTMxLAorICAgIDQsMCw5MCw1MiwwLDcxLDEwMCw4OSwwLDEwMCw5MCwwLDEzMiwwLDAsMTAwLAorICAgIDkwLDAsMTAxLDUxLDAsMTAxLDQ5LDAsMTMxLDQsMCw5MCw1MywwLDEwMywwLAorICAgIDAsOTAsNTQsMCw3MSwxMDAsOTEsMCwxMDAsOTIsMCwxMzIsMCwwLDEwMCw5MiwKKyAgICAwLDEzMSwyLDAsOTAsNTUsMCw3MSwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwKKyAgICAwLDEwMCw5NCwwLDEzMSwyLDAsOTAsNTYsMCw3MSwxMDAsOTUsMCwxMDAsOTYsCisgICAgMCwxMzIsMCwwLDEwMCw5NiwwLDEzMSwyLDAsOTAsNTcsMCw3MSwxMDAsOTcsCisgICAgMCwxMDAsOTgsMCwxMzIsMCwwLDEwMCw5OCwwLDEzMSwyLDAsOTAsNTgsMCwKKyAgICA3MSwxMDAsOTksMCwxMDAsMTAwLDAsMTMyLDAsMCwxMDAsMTAwLDAsMTMxLDIsMCwKKyAgICA5MCw1OSwwLDcxLDEwMCwxMDEsMCwxMDAsMTAyLDAsMTMyLDAsMCwxMDAsMTAyLDAsCisgICAgMTMxLDIsMCw5MCw2MCwwLDEwMCwxMDMsMCwxMDAsMTA0LDAsMTMyLDAsMCw5MCwKKyAgICA2MSwwLDEwMCwxMDUsMCwxMDAsMTA2LDAsMTMyLDAsMCw5MCw2MiwwLDEwMCwxMDcsCisgICAgMCwxMDAsMTA4LDAsMTMyLDAsMCw5MCw2MywwLDEwMCwxMDksMCw5MCw2NCwwLAorICAgIDEwMCwxMTAsMCwxMDAsMTExLDAsMTMyLDAsMCw5MCw2NSwwLDEwMCwxMTIsMCwxMDAsCisgICAgMTEzLDAsMTMyLDAsMCw5MCw2NiwwLDEwMCwxMjgsMCwxMDAsNDYsMCwxMDAsMTE0LAorICAgIDAsMTAwLDExNSwwLDEzMiwyLDAsOTAsNjcsMCwxMDAsMTE2LDAsMTAwLDExNywwLAorICAgIDEzMiwwLDAsOTAsNjgsMCwxMDAsMTE4LDAsMTAwLDExOSwwLDEzMiwwLDAsOTAsCisgICAgNjksMCwxMDAsMTIwLDAsMTAwLDEyMSwwLDEzMiwwLDAsOTAsNzAsMCwxMDAsMTI4LAorICAgIDAsMTAwLDEyOCwwLDEwMiwwLDAsMTAwLDQ2LDAsMTAwLDEyMiwwLDEwMCwxMjMsMCwKKyAgICAxMzIsNCwwLDkwLDcxLDAsMTAwLDEyNCwwLDEwMCwxMjUsMCwxMzIsMCwwLDkwLAorICAgIDcyLDAsMTAwLDEyNiwwLDEwMCwxMjcsMCwxMzIsMCwwLDkwLDczLDAsMTAwLDEyOCwKKyAgICAwLDgzLDQwLDEzMCwwLDAsMCwxMTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksCisgICAgMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LAorICAgIDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LAorICAgIDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsCisgICAgMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLAorICAgIDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICAzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsCisgICAgOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsCisgICAgMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywKKyAgICAxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsCisgICAgOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDExNywKKyAgICAzLDAsMCwwLDExOSwxMDUsMTEwLDExNyw2LDAsMCwwLDk5LDEyMSwxMDMsMTE5LAorICAgIDEwNSwxMTAsMTE3LDYsMCwwLDAsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0OSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwKKyAgICAxMTYsMywwLDEzMSwxLDAsMTE0LDMzLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKKyAgICAwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsMywwLDEwMCwyLDAsMTMyLDAsCisgICAgMCwxMjUsMCwwLDEyNCwwLDAsODMsNDAsNCwwLDAsMCw3OCw5OSwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDgzLAorICAgIDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMSwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMDcsNiwwLDgzLDQwLDIsMCwwLDAsMTE3LDUzLDAsMCwwLDg0LAorICAgIDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsCisgICAgMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsCisgICAgMTAxLDEwOCwxMjEsNDYsMTE1LDEyLDAsMCwwLDgwLDg5LDg0LDcyLDc5LDc4LDY3LAorICAgIDY1LDgzLDY5LDc5LDc1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTUsCisgICAgMTExLDExNSwxMTcsNywwLDAsMCwxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwxMTAsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzNCwKKyAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDM3LDAsMCwwLDk1LAorICAgIDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsCisgICAgOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsNTMsMCwwLDAsODQsMTE0LDExNywxMDEsCisgICAgMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsCisgICAgMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywKKyAgICAxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSwKKyAgICA0Niw3MCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsCisgICAgMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LAorICAgIDExNSwxMDEsMzgsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDQwLDQsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDgsMCwwLDAsMTEyLAorICAgIDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDExNywxMCwwLDAsMCwxMTUsMTE2LDk3LDExNCwKKyAgICAxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsMjcsMCwwLDAsOTUsNjcsNjUsODMsNjksCisgICAgOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsCisgICAgODQsNzAsNzksODIsNzcsODMsNDAsMSwwLDAsMCwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTA5LDk3LDEwNywKKyAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMzIsMCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwxLDE4LDEsMTUsNCwxMiwzLDExNywxNiwwLAorICAgIDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsCisgICAgMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMDgsMCwwLDAsMTE2LDAsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsMTI1LDAsMCwxMDMsMCwwLDEyNSwxLDAsMTI0LDEsCisgICAgMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTI0LAorICAgIDEsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDIsMCw2MywxMDAsMSwwLDY0LAorICAgIDEzMSwxLDAsMSwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMywwLAorICAgIDYzLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDEyNCwxLDAsMTA2LDEsMCwxMjQsCisgICAgMCwwLDEwMCw0LDAsNjMsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTE2LDIsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsNSwwLDAsMCwxMTcsMTExLDAsCisgICAgMCwwLDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LAorICAgIDEwNSwxMTYsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwKKyAgICAxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4OCw4OCw4OCwzMiw4NCwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsCisgICAgMTE3LDExMCwxMTYsMTA1LDEwOCwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDM5LDExNSwzMiwKKyAgICAxMDgsMTExLDExMCwxMDMsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiw5NywKKyAgICAxMTQsMTAxLDMyLDEwMSwxMjAsMTEyLDExMSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMjU1LDAsMCwwLDEwNSw4LDAsMCwwLDEwNSwxNiwwLDAsMCwKKyAgICAxMDUsMjQsMCwwLDAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwxMDUsCisgICAgMTEwLDExNiwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw5LDAsCisgICAgMCwwLDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDQwLDIsMCwwLDAsCisgICAgMTE3LDEsMCwwLDAsMTIwLDExNyw5LDAsMCwwLDEwNSwxMTAsMTE2LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDUsMCwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDAsNiwxMiwxLDYsMSwxNywxLDIxLDEsMjEsCisgICAgMSwyMSwxLDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNjgsMCwwLDAsMTI0LDAsMCwxMDAsMSwwLDI1LAorICAgIDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwyLDAsMjUsMTAwLDMsMCwKKyAgICA2Miw3OSwxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsNCwwLDI1LDEwMCwKKyAgICA1LDAsNjIsNzksMTI1LDEsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDYsMCwKKyAgICAyNSwxMDAsNywwLDYyLDc5LDEyNSwxLDAsMTI0LDEsMCw4Myw0MCw4LDAsCisgICAgMCwwLDExNywxMTUsMCwwLDAsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsNTIsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsMTEwLAorICAgIDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODgsODgsODgsMzIsCisgICAgODQsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDExNywxMTAsMTE2LDEwNSwxMDgsMzIsCisgICAgMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwzOSwxMTUsMzIsMTA4LDExMSwxMTAsMTAzLDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMjAsMTEyLDExMSwKKyAgICAxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMDUsMCwwLDAsMCwxMDUsCisgICAgMSwwLDAsMCwxMDUsOCwwLDAsMCwxMDUsMiwwLDAsMCwxMDUsMTYsCisgICAgMCwwLDAsMTA1LDMsMCwwLDAsMTA1LDI0LDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsNDAsMiwwLDAsMCwxMTcsOSwwLDAsMCwxMDUsMTEwLDExNiw5NSwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDEsMCwwLDAsMTIwLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwKKyAgICAxMTEsMTEwLDEwMyw2MSwwLDAsMCwxMTUsMTAsMCwwLDAsMCw2LDEwLDEsCisgICAgMTgsMSwxOCwxLDE4LDEsMTE3LDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwxMTEsCisgICAgMTEwLDEwMyw5OSwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw0LAorICAgIDAsMCwwLDcxLDAsMCwwLDExNSwxMDMsMCwwLDAsMTAzLDAsMCwxMjUsCisgICAgMSwwLDEyMCw3MSwwLDEyNCwwLDAsNjgsOTMsNjMsMCwxMjUsMiwwLDEyNCwKKyAgICAyLDAsMTE1LDMxLDAsMTEzLDEzLDAsMTEwLDAsMCwxMjQsMSwwLDEwNiwwLAorICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEsMTI0LDIsMCwxMDAsNCwwLDI1LDExNiwKKyAgICAxLDAsMTA3LDcsMCwxMTQsMTMsMCwxMjQsMSwwLDEwNiwwLDAsMTE2LDIsCisgICAgMCwxMzEsMSwwLDEsMTEzLDEzLDAsMTEzLDEzLDAsODcsMTAwLDIsMCwxMDYsCisgICAgMywwLDEyNCwxLDAsMTAwLDMsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTMxLAorICAgIDEsMCw4Myw0MCw2LDAsMCwwLDExNywzMSwwLDAsMCw4MiwxMDEsMTEyLAorICAgIDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwxMDUsMTEwLDQwLDQxLDQ2LDEwNSwxLDAsMCwKKyAgICAwLDExNywwLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsMTA1LDI1NSwyNTUsMjU1LAorICAgIDI1NSw0MCw0LDAsMCwwLDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LDExNCwKKyAgICA5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsMTE3LDQsMCwwLDAsMTA2LDExMSwxMDUsMTEwLDQwLDMsMCwwLDAsCisgICAgMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LDExNSwxMTcsCisgICAgOSwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE3LDQsMCwKKyAgICAwLDAsMTEyLDk3LDExNCwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsCisgICAgMTEwLDc0LDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsNiwxLDEzLDEsCisgICAgNiwxLDYsMSwxMywxLDE2LDEsMjAsMSwxMTcsMTAsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCw2LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LAorICAgIDAsMCwwLDEyMCw0OCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDY4LAorICAgIDkzLDI4LDAsMTI1LDEsMCwxMjQsMSwwLDExNiwxLDAsMTA3LDYsMCwxMTQsCisgICAgMTMsMCwxMjQsMSwwLDEyNSwyLDAsODAsMTEzLDEzLDAsMTEzLDEzLDAsODcsCisgICAgMTE2LDIsMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDAsOTIsMywwLDEyNSwzLDAsMTI1LDQsMCwxMjUsNSwwLDEyNCwzLAorICAgIDAsMTI0LDUsMCwxMDIsMiwwLDgzLDQwLDEsMCwwLDAsMTE3LDMyLDAsCisgICAgMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAorICAgIDQxLDQ2LDQwLDQsMCwwLDAsMTE3LDgsMCwwLDAsMTE0LDEwMSwxMTgsMTAxLAorICAgIDExNCwxMTUsMTAxLDEwMCwxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwKKyAgICAxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTUsMTAxLDExMiwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwKKyAgICAxMTYsMTA1LDExMSwxMTAsNDAsNiwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsMSwwLDAsMCwxMjAsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTIsCisgICAgMTE3LDUsMCwwLDAsMTAyLDExNCwxMTEsMTEwLDExNiwxMTcsMSwwLDAsMCw5NSwKKyAgICAxMTcsNCwwLDAsMCwxMTYsOTcsMTA1LDEwOCw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMTUsMTEyLDEwOCwxMDUsMTE2LDg2LDAsMCwwLDExNSwxNCwwLDAsMCwwLDIsCisgICAgMTksMSwxMiwxLDYsMSw4LDIsNiwxLDI0LDEsMTE3LDExLDAsMCwKKyAgICAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDYxLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTA2LDEsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjIsMCw0LDExNiwyLDAsCisgICAgMTA3LDEwLDAsMTE0LDQzLDAsMSwxLDEsMTAwLDIsMCw4Myw4OSwxMTAsMSwKKyAgICAwLDg4LDEyNCwyLDAsMTA2LDQsMCwxMDAsMSwwLDY0LDEyNCwxLDAsMTA3LAorICAgIDIsMCw4Myw0MCwzLDAsMCwwLDExNyw0OSwwLDAsMCw4NCwxMDEsMTE1LAorICAgIDExNiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTYsMTIxLDExMiwxMDEsNDYsMTA1LDAsCisgICAgMjQwLDAsMCw3MCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDk1LDExMSwKKyAgICAxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywxMTYsMTE3LDcsMCwwLDAsNzksCisgICAgODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQwLDMsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTA5LAorICAgIDExMSwxMDAsMTAxLDExNyw5LDAsMCwwLDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAorICAgIDExMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOCwwLAorICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwKKyAgICAxMTYsMTIxLDExMiwxMDEsOTgsMCwwLDAsMTE1LDEwLDAsMCwwLDAsMiwzLAorICAgIDEsMTksMSwxMywxLDksMSwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsMSwKKyAgICAwLDEzMSwyLDAsODMsNDAsMiwwLDAsMCwxMTcsMzEsMCwwLDAsODIsCisgICAgMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsCisgICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLAorICAgIDEyOCwwLDAsNDAsMSwwLDAsMCwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDQwLAorICAgIDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsMTA4LDAsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsCisgICAgMTI0LDAsMCwxMTUsMjEsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsCisgICAgMCwwLDExMCwwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsCisgICAgMCw4Myw0MCwyLDAsMCwwLDExNywzMCwwLDAsMCw4MiwxMDEsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwwLDAsNDAsCisgICAgMywwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw2LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk5LDExOSwxMDAsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTE0LDAsMCwwLDExNSw2LDAsMCwKKyAgICAwLDAsMiw2LDEsMTUsMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMDUsMTgyLDEsMCwwLDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxOTIsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTE2LAorICAgIDEsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCwxMjUsMywwLDExNiwyLAorICAgIDAsMTA2LDMsMCwxMjQsMywwLDExNiwyLDAsMTA2LDQsMCwxMTYsMiwwLAorICAgIDEwNiw1LDAsNjYsMTE2LDIsMCwxMDYsNiwwLDY2LDEyNCwyLDAsMTAwLDIsCisgICAgMCw2NCwxMzEsMywwLDEyNSw0LDAsMTIxLDYwLDAsMTE2LDcsMCwxMDYsOCwKKyAgICAwLDEyNCw0LDAsMTAwLDMsMCwxMzEsMiwwLDE0MywyMCwwLDEyNSw1LDAsCisgICAgMTI0LDUsMCwxMDYsOSwwLDEyNCwxLDAsMTMxLDEsMCwxLDg3LDEwMCw0LAorICAgIDAsODEsODgsMTE2LDIsMCwxMDYsMTAsMCwxMjQsMywwLDEyNCwwLDAsMTMxLAorICAgIDIsMCwxLDg3LDExMCw1OSwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4NywKKyAgICAwLDEsMSwxLDEyMSwxNywwLDExNiwyLDAsMTA2LDEyLDAsMTI0LDMsMCwKKyAgICAxMzEsMSwwLDEsODcsMTEwLDE4LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsCisgICAgMTc5LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMzAsMCwwLDg5LDExMCwxLAorICAgIDAsODgsMTAwLDQsMCw4Myw0MCw1LDAsMCwwLDExNywxNjIsMCwwLDAsCisgICAgNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLDExNywxMTAsOTksCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwzMiwxMDAsOTcsCisgICAgMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE2LDExMSwKKyAgICAxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLDY2LDEwMSwzMiwKKyAgICAxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwKKyAgICAxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsMTE0LDExNCwxMDEsCisgICAgMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsMTE3LDIsMCwwLDAsMTE5LDk4LDc4LDQwLDEzLDAsMCwwLDExNyw2LAorICAgIDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDIsMCwwLDAsMTA1LDEwMCwKKyAgICAxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwwLDExMSwxMTIsMTAxLAorICAgIDExMCwxMTcsNiwwLDAsMCw3OSw5NSw2OSw4OCw2Nyw3NiwxMTcsNywwLDAsCisgICAgMCw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwxMTcsOCwwLDAsMCw3OSw5NSw4NywKKyAgICA4Miw3OSw3OCw3Niw4OSwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw2LDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDczLDc5LDExNyw1LDAsMCwwLDExOSwxMTQsMTA1LAorICAgIDExNiwxMDEsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMTcsNywKKyAgICAwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTE3LAorICAgIDExMCwxMDgsMTA1LDExMCwxMDcsNDAsNiwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNyw0LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDEwMSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCisgICAgMTA5LDExMiwxMTcsMiwwLDAsMCwxMDIsMTAwLDExNyw0LDAsMCwwLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywKKyAgICAwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwKKyAgICAxMjEsMCwwLDAsMTE1LDI2LDAsMCwwLDAsNSwyNCwxLDksMSwzMywKKyAgICAxLDMsMywyMSwxLDE5LDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLAorICAgIDEsNSwxLDExNywxMywwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LAorICAgIDExNiwxMTEsMTA5LDEwNSw5OSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCw3LDAsMCwwLDY3LDAsMCwwLDExNSw5NSwwLDAsMCwxMjAsCisgICAgNjksMCwxMDAsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMyw0LAorICAgIDAsNjgsOTMsNDksMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwKKyAgICAwLDEzMSwyLDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLDAsCisgICAgMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLDEsCisgICAgMTEzLDE5LDAsMTEzLDE5LDAsODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsCisgICAgMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMSwxMDAsNSwwLDgzLDQwLDYsCisgICAgMCwwLDAsMTE3LDQ3LDAsMCwwLDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsMTE1LAorICAgIDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLDExNywKKyAgICAxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwKKyAgICA3OCw0MCw1LDAsMCwwLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LAorICAgIDExNiwxMTQsMTE3LDcsMCwwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDcsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDgsMCwwLDAsOTUsCisgICAgOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMTE3LDYsMCwwLDAsMTE3LDExMiwxMDAsOTcsCisgICAgMTE2LDEwMSw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDExMCwxMDEsMTE5LDExNywKKyAgICAzLDAsMCwwLDExMSwxMDgsMTAwLDExNyw3LDAsMCwwLDExNCwxMDEsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgNSwwLDAsMCw5NSwxMTksMTE0LDk3LDExMiwxNDMsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDI1LDEsMTUsMSwzMiwxLDExNyw1LDAsMCwwLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLAorICAgIDAsMTE2LDEsMCwxMzEsMSwwLDEyNCwwLDAsMTMxLDEsMCw4Myw0MCwxLAorICAgIDAsMCwwLDExNyw3NSwwLDAsMCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsCisgICAgMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwMSwxMTAsMTE2LDEwMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsCisgICAgMTAxLDExNywzLDAsMCwwLDk1LDEwNSwxMTEsNDAsMSwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxNTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw2LDExNywxMCwwLAorICAgIDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY2LDAsMCwKKyAgICAwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLAorICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsNzgsNDAsMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LAorICAgIDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxNzEsMCwwLDAsMTE1LDIsMCwwLAorICAgIDAsMTYsMSwxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LAorICAgIDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMiwwLDAsMCw2NiwwLDAsMCwxMTUsODYsMCwwLDAsCisgICAgMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAorICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsCisgICAgMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwKKyAgICA4LDAsMTAwLDEyLDAsODMsNDAsMTMsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTY5LDAsMCwwLAorICAgIDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwKKyAgICAzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LAorICAgIDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSwKKyAgICA5NywxMDAsMzIsNDksMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsCisgICAgOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLAorICAgIDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwKKyAgICAzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiwKKyAgICA5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsCisgICAgMzIsNjUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzAsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwKKyAgICAyLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLAorICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsCisgICAgOTUsNiwwLDEwMCwxLDAsMTI0LDAsMCw5NSw3LDAsMTAwLDEsMCwxMjQsCisgICAgMCwwLDk1LDgsMCwxMDAsMCwwLDgzLDQwLDIsMCwwLDAsNzgsMTA1LAorICAgIDAsMCwwLDAsNDAsOSwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDExNywxMywwLDAsMCw5NywxMDgsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw0LDAsMCwwLDEwOCwxMTEsOTksMTA3LAorICAgIDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDQsMCwwLDAsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDUsMCwKKyAgICAwLDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwKKyAgICAxMTYsMTE3LDcsMCwwLDAsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDAsMiwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsCisgICAgMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTgxLDAsMCwKKyAgICAwLDExNSwxMiwwLDAsMCwwLDEsMTUsMSwxNSwxLDksMSw5LDEsCisgICAgOSwxLDExNywyMCwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDg3LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNSwyLDAsMTIwLDU5LDAsMTE2LDMsMCwKKyAgICAxMDYsNCwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDEyNCwzLDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCw1NSwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsCisgICAgMiwwLDEyNSwyLDAsMTI0LDIsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDI0LAorICAgIDAsMTAwLDIsMCw4MywxMTMsMjQsMCwxMDAsMCwwLDgzLDQwLDMsMCwwLAorICAgIDAsNzgsNzAsODQsNDAsOCwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDExNyw5LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsCisgICAgMTAxLDExMCwxMTYsMTE3LDUsMCwwLDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwxMTcsMywKKyAgICAwLDAsMCwxMDMsMTAxLDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsCisgICAgNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsCisgICAgMTE3LDEwMSw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsMiwwLDAsMCwxMDksMTAxLDExNywzLDAsMCwwLDExNiwxMDUsMTAwLDExNywKKyAgICA0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywKKyAgICAxMDAsMTA4LDExMSw5OSwxMDcsMTg5LDAsMCwwLDExNSwxOCwwLDAsMCwwLDIsCisgICAgMTIsMSw5LDEsMywxLDE1LDEsMTIsMSw0LDEsOSwxLDEyLDEsCisgICAgMTE3LDI0LDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA0NiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDE3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsCisgICAgMTI1LDEsMCwxMjQsMCwwLDExNiwyLDAsMTI0LDEsMCw2MCwxMjIsMTc3LDAsCisgICAgMTIwLDE3MCwwLDEyNCwwLDAsMTA2LDMsMCwxNDMsMTMwLDAsMSwxMjQsMCwwLAorICAgIDEwNiw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNSw2OCwwLDEyNCwwLDAsMTA2LAorICAgIDUsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDk2LDAsMTI0LDEsMCwxMjQsMCwKKyAgICAwLDk1LDUsMCwxMjQsMCwwLDQsMTA2LDQsMCwxMDAsMiwwLDU1LDIsCisgICAgOTUsNCwwLDEwMCw1LDAsODMsMTI0LDAsMCwxMDYsNywwLDEzMSwwLDAsCisgICAgMTE0LDEyNywwLDExNiw4LDAsMTAwLDMsMCwxMjQsMCwwLDIyLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDksMCwxMDYsMTAsMCwxMDAsCisgICAgNiwwLDEzMSwxLDAsMTE0LDE2MywwLDEyNCwwLDAsNCwxMDYsMTIsMCwxMDAsCisgICAgMiwwLDU1LDIsOTUsMTIsMCwxMTAsMCwwLDg3LDEwMCw0LDAsODEsODgsCisgICAgMTI0LDAsMCwxMDYsOSwwLDEwNiwxMCwwLDEzMSwwLDAsMSwxMjQsMCwwLAorICAgIDEwNiw5LDAsMTA2LDEzLDAsMTMxLDAsMCwxLDExMywyOCwwLDg3LDEwMCw0LAorICAgIDAsMTE2LDIsMCwxMjQsMSwwLDYxLDg4LDEwMCw0LDAsODMsNDAsNywwLAorICAgIDAsMCwxMTcsMTg1LDAsMCwwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExMiwKKyAgICAxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKKyAgICAxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLAorICAgIDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsCisgICAgMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwKKyAgICAxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LAorICAgIDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTA1LDAsMCwwLDAsMTA1LDEsMCwwLDAsMTE3LDIzLDAsMCwwLDEwMCwKKyAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsMzcsMTE0LDc4LDg0LDcwLDQwLDE0LDAsMCwwLDExNyw3LAorICAgIDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDksMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTcsMTIsMCwwLDAsOTUsOTgsMTA4LAorICAgIDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwxMTcsNCwwLDAsMCwxMDgsMTExLAorICAgIDk5LDEwNywxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDUsMCwwLAorICAgIDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTE5LDk3LDEwNywxMDEsMTE3LDExMiwxMTcsNywKKyAgICAwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNyw1LDAsMCwwLDcwLAorICAgIDk3LDEwOCwxMTUsMTAxLDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LAorICAgIDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLDIsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywzLDAsMCwwLDExNiwKKyAgICAxMDUsMTAwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsCisgICAgMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwyMDEsMCwwLDAsMTE1LDMyLAorICAgIDAsMCwwLDAsNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLAorICAgIDEsOSwxLDE1LDEsNCwxLDEyLDEsMTksMSwxOCwxLDI0LDIsMTMsCisgICAgMSwyMCwyLDExNywxOSwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LAorICAgIDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTY1LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDE0MywxMzgsMCwxLDEyNCwwLDAsMTA2LDMsCisgICAgMCwxMjQsMSwwLDEwNywzLDAsMTE0LDUyLDAsMTE2LDQsMCwxMDAsMSwwLAorICAgIDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsCisgICAgMiwwLDEwNyw0LDAsMTE1LDczLDAsMTE2LDYsMCwxMzAsMSwwLDEyNCwwLAorICAgIDAsNCwxMDYsNSwwLDEwMCwzLDAsNTYsMiw5NSw1LDAsMTI0LDAsMCwKKyAgICAxMDYsNSwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTU1LDAsMTAwLDAsMCwxMjQsCisgICAgMCwwLDk1LDMsMCwxMjQsMCwwLDEwNiw4LDAsMTE0LDE1NSwwLDEyNCwwLAorICAgIDAsNCwxMDYsOCwwLDEwMCwzLDAsNTYsMiw5NSw4LDAsMTI0LDAsMCwKKyAgICAxMDYsOSwwLDEwNiwxMCwwLDEzMSwwLDAsMSwxMTMsMTU1LDAsMTEwLDAsMCwKKyAgICA4NywxMDAsMCwwLDgxLDg4LDEwMCwwLDAsODMsNDAsNCwwLDAsMCw3OCwKKyAgICAxMTcsMzEsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsMTA1LDAsMCwwLDAsMTA1LDEsMCwwLDAsNDAsMTEsCisgICAgMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsCisgICAgOSwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwxMTAsMTE2LDExNyw0LDAsCisgICAgMCwwLDEwOCwxMTEsOTksMTA3LDExNyw1LDAsMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsCisgICAgMTE3LDEyLDAsMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDE0LDAsMCwwLAorICAgIDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LAorICAgIDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LAorICAgIDEwMSwxMTQsMTE1LDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDcsCisgICAgMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDMsMCwwLDAsMTE2LDEwNSwxMDAsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsCisgICAgMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwyMjYsMCwwLDAsMTE1LDIyLDAsMCwKKyAgICAwLDAsMSwxMiwxLDEwLDEsMTUsMSwxNSwxLDIxLDEsMTUsMSwxNSwKKyAgICAxLDksMSw5LDEsMTUsMSwxMTcsMTksMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEwMiwyLDAsMjIsODMsCisgICAgNDAsMiwwLDAsMCw3OCwxMTcsMjEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDM3LDExNCw0MSwzMiw5NywxMTYsMzIsMzcsMTAwLAorICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDIsCisgICAgMCwwLDAsMTA1LDEwMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwyMzksMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwxLDExNywyMCwwLDAsMCw5NSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LAorICAgIDc4LDQwLDksMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTIsMCwwLAorICAgIDAsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywxMTcsNywwLAorICAgIDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsCisgICAgMTA4LDEwMSw5NywxMTUsMTAxLDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5NSw5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDE3NSwwLDAsMCwxMTUsMTIsMCwwLDAsMTYsNCw2LDIsMTIsCisgICAgOCwxMiwxMiwxMiwyNSwxMiwxMywxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDc0LDAsMCwKKyAgICAwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAorICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCisgICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCisgICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKKyAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQwLDExLDAsMCwwLAorICAgIDExNywxNiwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDExNyw4NiwwLDAsMCw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLAorICAgIDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLAorICAgIDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsCisgICAgMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKKyAgICA5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTA1LDAsMCwwLDAsNDAsMiwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNSwwLDAsMCw5OSwxMTEsCisgICAgMTE3LDExMCwxMTYsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwKKyAgICAxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsMjQ3LDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsCisgICAgMTE3LDI1LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwKKyAgICAxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLAorICAgIDc4LDEwNSwxLDAsMCwwLDg0LDQwLDIsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTksMTExLDExNywxMTAsMTE2LDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDQwLAorICAgIDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTcsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwyNTEsMCwwLDAsMTE1LDQsMCwwLDAsMCwxLAorICAgIDE1LDEsMTE3LDI0LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLAorICAgIDEsMCwxMDcsMiwwLDExNCwzMCwwLDExNiwxLDAsMTAwLDIsMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsMywKKyAgICAwLDU2LDIsOTUsMCwwLDEwMCwwLDAsODMsNDAsNCwwLDAsMCw3OCwKKyAgICAxMDUsMCwwLDAsMCwxMTcsMzEsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LAorICAgIDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTA1LDEsMCwwLDAsNDAsMiwKKyAgICAwLDAsMCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDEyLDAsCisgICAgMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LAorICAgIDEwMSw5NywxMTUsMTAxLDI1NSwwLDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsCisgICAgMSwxNSwxLDExNywyNCwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEwMiwyLDAsMjIsCisgICAgODMsNDAsMiwwLDAsMCw3OCwxMTcsMjYsMCwwLDAsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwzNywxMTQsNDEsCisgICAgMzIsOTcsMTE2LDMyLDM3LDEwMCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDExNywyLDAsMCwwLDEwNSwxMDAsNDAsMSwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTUsOTUsNCwxLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI1LDAsCisgICAgMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQwLDgsMCwwLAorICAgIDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLAorICAgIDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLAorICAgIDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywKKyAgICAwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsNywwLDAsMCw5Nyw5OSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MCwxLDAsMCwKKyAgICAwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLAorICAgIDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAorICAgIDEwNywyNDMsMCwwLDAsMTE1LDEwLDAsMCwwLDE2LDIsNiwyLDEyLDQsCisgICAgMTIsNCwxMiw1LDExNywxNiwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDE0MiwKKyAgICAwLDAsMCwxMDAsMywwLDEyNSwxLDAsMTIxLDE3LDAsMTE2LDEsMCwxMzYsCisgICAgMCwwLDI1LDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwyLAorICAgIDAsMTA3LDEwLDAsMTE0LDQzLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsCisgICAgMSwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDMsMCwxMDAsMywKKyAgICAwLDEwNyw4LDAsMTE0LDgzLDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwxLDAsCisgICAgMTI1LDEsMCwxMTAsMTIsMCwxMTYsNSwwLDEzNiwwLDAsMTMxLDEsMCwxMjUsCisgICAgMSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCisgICAgMCwxMjUsMiwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEyNCwyLDAsCisgICAgMTMxLDIsMCwxMTYsMSwwLDEzNiwwLDAsNjAsMTEwLDAsMCwxMjQsMSwwLAorICAgIDgzLDQwLDQsMCwwLDAsMTE3LDEwOSwwLDAsMCw3MSwxMDEsMTE2LDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywKKyAgICAxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLAorICAgIDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwKKyAgICAxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwKKyAgICAxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsMTE1LDExLDAsCisgICAgMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMSwwLDAsMCwxMTcsMTMsMCwwLDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQwLDEsMCwwLDAsMTE3LAorICAgIDEsMCwwLDAsOTUsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsCisgICAgOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMiwwLDAsMCw5OSwKKyAgICA5OCwyNCwxLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI4LDAsMCwKKyAgICAwLDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5OSw5OCw3OCw0MCw4LAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMywwLDAsCisgICAgMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsMTE3LDgsCisgICAgMCwwLDAsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsCisgICAgOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTEsMCwwLAorICAgIDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNyw4LDAsMCwKKyAgICAwLDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDExNywzLDAsMCwwLDExNCwxMDEsCisgICAgMTAyLDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LAorICAgIDQsMCwwLDAsMTA4LDExMSw5OSwxMDcsMTE3LDIsMCwwLDAsOTksOTgsNDAsCisgICAgMCwwLDAsMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywKKyAgICAxMDksMTAxLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTAsMSwwLDAsMTE1LDI0LDAsCisgICAgMCwwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwKKyAgICAxMiwxLDE1LDIsMTIsMSwxOCwyLDI1LDEsMTE3LDE2LDAsMCwwLDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAorICAgIDEsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLAorICAgIDE0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCwKKyAgICA0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLAorICAgIDAsODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsMTE3LDIxLDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwKKyAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsCisgICAgMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwKKyAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsCisgICAgMzIsMTA1LDExNiwzMiwxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwKKyAgICAzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsCisgICAgMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCwKKyAgICA0MCw2LDAsMCwwLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNCwwLDAsMCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsCisgICAgMTA4LDExMSw5OSwxMDcsMTE3LDcsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsCisgICAgMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwKKyAgICAxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDI5LDEsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwwLDcsMTIsMSwxMCwxLDMsMSwxNCwxLDEzLDMsNSwKKyAgICAyLDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLAorICAgIDAsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsCisgICAgNDAsMSwwLDAsMCwxMTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsCisgICAgMTE1LDMyLDEwNSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwKKyAgICAxMDgsMTA4LDMyLDk3LDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwKKyAgICAzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAzMiw5NywzMiw5OSw5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsCisgICAgMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiwKKyAgICA5NywzMiwxMTAsMTExLDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwKKyAgICAzMiwxMTIsMTA4LDk3LDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwKKyAgICAzMiwxMDUsMTEwLDExNiwxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywKKyAgICAxMTAsMTE2LDEwMSwxMDAsMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LAorICAgIDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLAorICAgIDEwMCwxMDEsNDEsMTAsMzIsMzIsMzIsMzIsNDAsMCwwLDAsMCw0MCwzLDAsCisgICAgMCwwLDExNywxLDAsMCwwLDEwMiwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLAorICAgIDExNSwxMTcsNCwwLDAsMCwxMDcsMTE5LDEwMCwxMTUsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCwKKyAgICA5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwxMDAsNDksMSwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNywKKyAgICAyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsCisgICAgMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMDUsMTU4LDEyLAorICAgIDAsMCwxMTcsMSwwLDAsMCwxMywxMDUsMTYsMCwwLDAsMTE3LDEsMCwKKyAgICAwLDAsMTAsMTA1LDI0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDMsMCwwLDAsOTksMCwwLDAsMTE1LDI5LDAsCisgICAgMCwwLDEyNCwwLDAsOTMsMTksMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsCisgICAgMCw2MywxMDAsMCwwLDY0LDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTA1LDI1NSwwLDAsMCw3OCw0MCwxLDAsMCwwLDExNywKKyAgICAxNywwLDAsMCw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCwKKyAgICA4NSw3Nyw2Niw2OSw4Miw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LAorICAgIDQ4LDExNywxLDAsMCwwLDExMCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCwKKyAgICA2MiwxNTAsMSwwLDAsMTE1LDIsMCwwLDAsNiwwLDExNyw5LDAsMCwKKyAgICAwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMDUsMCwwLDAsMCwxMDUsCisgICAgMjUsMCwwLDAsMTA1LDgsMCwwLDAsMTE3LDExLDAsMCwwLDk1LDk1LAorICAgIDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSw5NSwxMTcsMywwLDAsMCw0NiwxMTIsCisgICAgMTIxLDExNyw0LDAsMCwwLDQ2LDExMiwxMjEsOTksMTE3LDQsMCwwLDAsNDYsCisgICAgMTEyLDEyMSwxMTEsOTksMiwwLDAsMCwwLDAsMCwwLDExLDAsMCwwLAorICAgIDYsMCwwLDAsNjcsMCwwLDAsMTE1LDE4MCwwLDAsMCwxMjQsMSwwLAorICAgIDEwMCw1LDAsMTA3LDgsMCwxMTQsMjUsMCwxMTYsMSwwLDEwNiwyLDAsMTA2LAorICAgIDMsMCwxMiwxMTAsMywwLDEyNCwxLDAsMTI1LDIsMCwxMjQsMiwwLDExNCwKKyAgICA0NiwwLDExNiw0LDAsMTI1LDMsMCwxMTAsNiwwLDExNiw1LDAsMTI1LDMsCisgICAgMCwxMTYsNiwwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwKKyAgICAxMjUsNSwwLDEyNCw1LDAsMTA2LDcsMCwxMDAsMSwwLDEzMSwxLDAsOTIsCisgICAgMywwLDEyNSw2LDAsMTI1LDcsMCwxMjUsOCwwLDExNiwxLDAsMTA2LDgsCisgICAgMCwxMDYsOSwwLDEyNSw5LDAsMTI0LDksMCwxMDAsNSwwLDEwNyw4LDAsCisgICAgMTE0LDEzMywwLDExNiwxMCwwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwKKyAgICAwLDAsMTAwLDMsMCwxMDYsMTEsMCwxMjQsNiwwLDEyNCw3LDAsMTI0LDksCisgICAgMCwxMjQsMywwLDEwMCw0LDAsMjUsMTAzLDQsMCwxMzEsMSwwLDEyNSwxMCwKKyAgICAwLDExNiwxMiwwLDEyNCw0LDAsMTE2LDEzLDAsMTI0LDEwLDAsMTMxLDMsMCwKKyAgICA4Myw0MCw2LDAsMCwwLDExNywyNDQsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsCisgICAgMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsCisgICAgMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTksCisgICAgMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMTcsMTEwLAorICAgIDEwOCwxMDEsMTE1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLAorICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTEwLDQ1LDEyMiwKKyAgICAxMDEsMTE0LDExMSw0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMTksMTA1LDEwOCwKKyAgICAxMDgsMzIsOTgsMTAxLDMyLDQ2LDExMiwxMjEsMTExLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiwxMDUsMTE2LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTcsCisgICAgMzIsOTgsMTExLDExMSwxMDgsMTAxLDk3LDExMCwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTUsMzIsCisgICAgMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTEyLDEwOCw5Nyw5OSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLAorICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNywKKyAgICAxLDAsMCwwLDQ2LDExNywzNiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTE3LDAsCisgICAgMCwwLDAsMTA1LDAsMCwwLDAsNzgsNDAsMTQsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LAorICAgIDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw4LDAsMCwwLDExMSwxMTIsCisgICAgMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE3LDIzLDAsMCwwLDY4LDY5LDY2LDg1LDcxLAorICAgIDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDExNywyNywwLDAsMCw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4MywxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsCisgICAgMTA1LDExNiwxMTcsOSwwLDAsMCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNywxNCwwLDAsMCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsMTE3LDksMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCisgICAgMTAzLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLDAsMTA2LDExMSwKKyAgICAxMDUsMTEwLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwKKyAgICAxMTAsMTE3LDgsMCwwLDAsOTUsODAsODksNjcsNjUsNjcsNzIsNjksNDAsMTEsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDE0LDAsMCwKKyAgICAwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDExNywKKyAgICA1LDAsMCwwLDEwMCwxMDEsOTgsMTE3LDEwMywxMTcsOCwwLDAsMCwxMTUsMTE3LAorICAgIDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNyw0LDAsMCwwLDEwNCwxMDEsOTcsMTAwLDExNywKKyAgICA0LDAsMCwwLDExNiw5NywxMDUsMTA4LDExNywxMywwLDAsMCw5OCw5NywxMTUsCisgICAgMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsMywwLDAsMCwxMTUsCisgICAgMTAxLDExMiwxMTcsMSwwLDAsMCw5NSwxMTcsMywwLDAsMCwxMTYsOTcsMTAzLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDE1OSwKKyAgICAxLDAsMCwxMTUsMjIsMCwwLDAsMCwxMywzMSwxLDYsMSw5LDIsCisgICAgNiwxLDE4LDEsMjQsMSwxMiwxLDEyLDEsMTUsMSwzMSwxLDExNywxNywKKyAgICAwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMDAsNywwLDEwNyw4LDAsMTE0LDMzLDAsCisgICAgMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDExNiwKKyAgICA1LDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLAorICAgIDAsMTE2LDUsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsCisgICAgMTI1LDMsMCwxMjQsMywwLDExNiw2LDAsMTA3LDMsMCwxMTQsMTA4LDAsMTE2LAorICAgIDcsMCwxMDAsMiwwLDEwNiw4LDAsMTE2LDYsMCwxMjQsMCwwLDEzMSwyLAorICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsOSwwLAorICAgIDEwMCwzLDAsMTMxLDEsMCwxMDAsNCwwLDEwNywzLDAsMTE0LDE1MywwLDExNiwKKyAgICA3LDAsMTAwLDUsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwNiwxMCwwLDEwMCwzLDAsCisgICAgMTMxLDEsMCwxMDAsNiwwLDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDEsMCwKKyAgICAxMjQsNCwwLDExNiwxMiwwLDEwMCw2LDAsMjUsMjMsMTMxLDIsMCw4Myw0MCwKKyAgICA4LDAsMCwwLDExNywxMjEsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0Niw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksNDcsNDYsMTEyLDEyMSwKKyAgICAxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwKKyAgICAxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwKKyAgICAxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk5LDExMSwKKyAgICAxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsCisgICAgMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLAorICAgIDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsCisgICAgNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsMTA4LAorICAgIDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywKKyAgICAzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsCisgICAgMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDExNywzNiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKKyAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTE3LDM3LDAsMCwwLAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTcsMSwwLDAsMCw0NiwxMDUsMiwwLDAsMCwKKyAgICAxMTcsMjgsMCwwLDAsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwxMTAsCisgICAgMTA4LDEyMSwzMiw1MCwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSwxMDUsMCwwLDAsMCw3OCw0MCwxMywwLDAsMCwxMTcsMywwLDAsCisgICAgMCwxMTUsMTIxLDExNSwxMTcsMTQsMCwwLDAsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDExNyw5LDAsMCwwLDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTksCisgICAgMCwwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDgwLDg5LDY3LDY1LAorICAgIDY3LDcyLDY5LDExNywxMCwwLDAsMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsNSwwLAorICAgIDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsCisgICAgMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA2LDExMSwxMDUsMTEwLDExNywxNSwwLDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSwKKyAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MCw1LDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwNCwxMDEsOTcsMTAwLDExNywKKyAgICAxNiwwLDAsMCwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSwKKyAgICAxMTcsMTMsMCwwLDAsOTgsOTcsMTE1LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsCisgICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxODYsMSwwLDAsMTE1LDI0LDAsMCwwLDAsOSwxOCwKKyAgICAxLDE1LDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE4LDEsMjEsMSw5LAorICAgIDEsMTUsMSwxOSwxLDExNywxNywwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw1LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsCisgICAgMCwxMDcsMiwwLDExNCwyMiwwLDEwMCw2LDAsODMsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLAorICAgIDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwzLDAsCisgICAgMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNSwwLAorICAgIDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsNCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDUsCisgICAgMCwxMTYsNiwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLAorICAgIDExNiw3LDAsMTAwLDksMCwxMDAsNiwwLDEzMywyLDAsMjUsMTI1LDQsMCwKKyAgICA4OSwxMTAsMSwwLDg4LDExNiw4LDAsMTE2LDksMCwxMzEsMSwwLDExNCwxNjAsCisgICAgMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDAsMTAsMCwwLDAsMTE3LDE4OCwKKyAgICAwLDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LAorICAgIDAsMCwwLDAsMTE3LDEsMCwwLDAsNDYsMTA1LDMsMCwwLDAsMTA1LAorICAgIDEsMCwwLDAsMTE3LDMsMCwwLDAsNDYsMTEyLDEyMSw3OCwxMDUsMjUzLDI1NSwKKyAgICAyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwyNTUsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCwxMCwwLDAsCisgICAgMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsNCwwLDAsMCw3OCwxMTEsCisgICAgMTEwLDEwMSwxMTcsOSwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDE3LDAsMCwwLDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LAorICAgIDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMiwwLDAsMCw5OCwxMjEsMTE2LDk5LAorICAgIDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwxMTcsMTIsMCwwLDAsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsNDAsNSwwLDAsMCwxMTcsCisgICAgMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDQsMCwwLDAsMTE0LDEwMSwxMTUsMTE2LDExNywxLDAsMCwwLDk1LAorICAgIDExNyw5LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDExNywxMSwKKyAgICAwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsMCwwLDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsMTAxLDIwOSwxLAorICAgIDAsMCwxMTUsMjAsMCwwLDAsMCw3LDE4LDEsNCwxLDI0LDEsMzUsCisgICAgMSw0LDIsMywxLDE2LDEsMTksMSwyMSwyLDExNywxNSwwLDAsMCwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLAorICAgIDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LAorICAgIDIsMCwxMTQsNzEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwKKyAgICAwLDExNSw0MCwwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsMCwwLDExMCwwLAorICAgIDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDEsMCwxNDAsMCwwLAorICAgIDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLDEzMSwxLDEsMSwxMTAsMCwwLAorICAgIDEwMCw1LDAsODMsNDAsNywwLDAsMCwxMTcsNjEsMCwwLDAsODAsMTE0LAorICAgIDEwNSwxMTAsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLAorICAgIDExNiwxMTEsMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsCisgICAgODAsODksODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwKKyAgICAzMiwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDExNywxLDAsMCwwLAorICAgIDM1LDExNyw3LDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNywyLDAsCisgICAgMCwwLDM1LDMyLDExNyw0LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSw3OCw0MCwyLAorICAgIDAsMCwwLDExNywxLDAsMCwwLDM1LDExNyw3LDAsMCwwLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDQwLDcsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw3LDAsMCwKKyAgICAwLDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDExNywxMCwwLDAsMCwxMTUsMTE2LDk3LAorICAgIDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMTIsMTE0LDEwNSwxMTAsCisgICAgMTE2LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDYsMCwwLAorICAgIDAsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDAsMiwwLDAsMCwxMTcsNywwLDAsCisgICAgMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLAorICAgIDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLAorICAgIDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsCisgICAgMTAzLDEwMSwyMzAsMSwwLDAsMTE1LDgsMCwwLDAsMCwyLDEyLDEsMTUsCisgICAgMSwxMywxLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwKKyAgICA5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsCisgICAgMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCisgICAgMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsCisgICAgMSwxMjQsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDM5LDAsMCwwLDgzLAorICAgIDEwMSwxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwwLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSwxMDEsMCwwLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTQyLDAsMCwxMjUsMiwwLDExNiwKKyAgICAwLDAsMTI0LDIsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKKyAgICAwLDEwNyw4LDAsMTE0LDk3LDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwyLDAsCisgICAgOTUsMywwLDExNiw0LDAsMTI0LDIsMCwxMDAsMiwwLDEzMSwyLDAsMTE1LAorICAgIDk3LDAsMTI0LDIsMCwxMDYsMywwLDEwNiw1LDAsMTAwLDMsMCwxMzEsMSwKKyAgICAwLDEwMCw0LDAsMjUsMTI0LDIsMCw5NSwzLDAsMTEzLDk3LDAsMTEwLDAsCisgICAgMCwxMjQsMiwwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LDExLDAsMCwwLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMSwwLDAsMCw0NiwxMDUsMCwKKyAgICAwLDAsMCw0MCw2LDAsMCwwLDExNyw3LDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDk3LDExNiwxMTYsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDcsMCwwLDAsMTA0LAorICAgIDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LAorICAgIDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCw5NywKKyAgICAxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDMsCisgICAgMCwwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE5LDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCwyNDAsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSwKKyAgICAxNSwxLDI0LDEsMTIsMSwxNSwxLDMxLDEsMTE3LDQwLDAsMCwwLDExNSwKKyAgICAxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsNjIsNDYsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMTksMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwwLDAsCisgICAgNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDExLDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMzgsCisgICAgMSwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDcsMTMsMSwxMTcsMTEsCisgICAgMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywKKyAgICAwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLAorICAgIDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsMywwLDAsMCwKKyAgICAxMTcsMzgsMCwwLDAsODMsMTAxLDExNiwzMiw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDk1LDk1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLAorICAgIDExNSw0OSwwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwKKyAgICAwLDE0MiwxLDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwzLDAsMTAwLDEsMCwKKyAgICAxMzEsMiwwLDExNSw0NSwwLDEyNCwwLDAsMTI0LDMsMCw5NSwxLDAsMTEwLAorICAgIDAsMCwxMjQsMywwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsMiwwLDAsMCwKKyAgICAxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDQsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDk3LDExNCwKKyAgICAxMDMsMTE1LDExNyw2LDAsMCwwLDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMywwLAorICAgIDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsMCwwLAorICAgIDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCwyNTMsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLDE4LDEsCisgICAgMTUsMSwxMiwxLDExNywzOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTUsMTAxLDExNiwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLAorICAgIDEsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMTgsMCwwLDAsCisgICAgMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsCisgICAgMTAxLDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDI1MSwxLDAsMCwxMTUsNiwwLDAsMCwwLDIsCisgICAgMTgsNSwxMywxLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwKKyAgICAxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LAorICAgIDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsCisgICAgNDAsMywwLDAsMCwxMTcsNDIsMywwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDExNSwxMDEsCisgICAgMTA4LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTEyLAorICAgIDEwMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKKyAgICAxMDAsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDEwMSwxMDAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTAsMzIsMzIsMzIsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLAorICAgIDMyLDEwNSwxMTAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNSwKKyAgICAxMDIsMTAsMzIsMzIsMzIsMzIsMTA1LDExNiwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLAorICAgIDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDMyLDExMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiwKKyAgICAxMTAsMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDExOSwKKyAgICA0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDQ0LDMyLDk1LDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDExNSwxMDEsMTA4LDEwMiw0NCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTE1LDMyLDExNSwKKyAgICAxMDEsMTE2LDMyLDk3LDk5LDk5LDExMSwxMTQsMTAwLDEwNSwxMTAsMTAzLDEwOCwxMjEsMzIsNDAsCisgICAgMTA1LDEwMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDAsNDEsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsNDEsCisgICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwKKyAgICAzMiw5OCwxMDEsMTAyLDExMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiwxMTIsOTcsCisgICAgMTE1LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsCisgICAgMTE0LDk3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiw0MCwKKyAgICAxMDUsMTAyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0MCw0MSwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwKKyAgICAzMiwxMTUsMTAxLDExNiwzMiwxMTIsMTExLDExNSwxMTYsNDUsMTA4LDExMSw5NywxMDAsNDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDk3LDExMCwzMiwxMDEsMTIwLDk5LDEwMSwKKyAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLAorICAgIDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMTUsCisgICAgMTE3LDk4LDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDExNiwxMDgsMTIxLDMyLDExNCwxMDEsMTA5LDExMSwKKyAgICAxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDEsMTE1LAorICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywKKyAgICAxMTYsMTAxLDEwMCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDk3LDEwNywKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDMyLDk3LDExNSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLAorICAgIDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNywwLDAsCisgICAgMCwyNSwwLDAsMCwzMSwwLDAsMCwxMTUsMjU0LDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLAorICAgIDEyNCw0LDAsMTAwLDAsMCwxMDcsOSwwLDEyNSw1LDAsMTI0LDUsMCwxMTUsCisgICAgMTY4LDAsMTE2LDQsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMDAsMywKKyAgICAwLDEyNCw0LDAsOTUsNiwwLDEyNCw0LDAsMTE2LDAsMCwxMDYsMSwwLAorICAgIDEyNCwxLDAsNjAsMTI0LDAsMCwxMjQsNCwwLDk1LDcsMCwxMjEsMTksMCwKKyAgICAxMjQsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw2LDAsODcsCisgICAgMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDEyNCwwLDEsMSwxLDg5LDExMywxNzcsMCw4OCwxMjQsNiwwLDExNCwxNDMsCisgICAgMCwxMjQsMSwwLDEyNCw0LDAsOTUsMTEsMCwxMTMsMTc3LDAsMTI0LDEsMCwKKyAgICAxMDYsMTIsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjQsNCwwLAorICAgIDk1LDExLDAsMTEwLDksMCwxMDAsMywwLDEyNCw0LDAsOTUsNiwwLDEyMiwKKyAgICA2MCwwLDEyMSwyMywwLDEzNiwwLDAsMTI0LDAsMCwxMjQsNCwwLDEyNCwyLAorICAgIDAsMTI0LDMsMCwxNDIsMiwwLDgzLDg3LDExMCwzMCwwLDEsMSwxLDEyNCwKKyAgICA1LDAsMTE1LDIyOCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDYxLDExMCwKKyAgICAwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDg3LDEwMCwwLDAsMTAwLDQsCisgICAgMCwxMjQsNCwwLDk1LDYsMCw4OCwxMDAsMCwwLDgzLDQwLDUsMCwwLAorICAgIDAsNzgsMTE3LDEsMCwwLDAsNDYsMTA1LDAsMCwwLDAsODQsNzAsNDAsCisgICAgMTQsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLAorICAgIDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywzLDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMCwwLDAsMCwxMTAsMTAxLAorICAgIDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LAorICAgIDEwMSwxMTcsMTYsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LAorICAgIDEyMiwxMDUsMTEwLDEwMyw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5NSw5NSwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxNCwwLDAsMCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LAorICAgIDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LAorICAgIDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDQwLDcsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwKKyAgICA5NywxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNywKKyAgICA2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw5LDAsMCwwLDEwNSwKKyAgICAxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMSwwLDAsMCwxMTcsMywwLDAsCisgICAgMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjUsMCwwLDAsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwyNCwyLDAsMCwxMTUsNDQsMCwKKyAgICAwLDAsMCwxLDE4LDEsMTIsMSw2LDQsMTIsMyw5LDEsMTMsMSwKKyAgICA5LDEsMywxLDE5LDEsMTksMSw1LDIsNiwxLDEyLDIsMjUsMiwKKyAgICA5LDEsNiwyLDIzLDEsMywxLDYsMSwxMywxLDEyLDIsMTE3LDUyLAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsCisgICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwwLDAsCisgICAgMCw5NSwxMTksMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDEwMiwxMjAsMTEwLDExNywyNSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsCisgICAgMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsCisgICAgMTE0LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNiwyLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDE4LDE4LDMzLDEzLDEsMTE3LDE3LDAsMCwwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCisgICAgMCwzLDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsMywwLDEzNSwwLDAsCisgICAgMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDEsMCwxMjUsMSwwLDExNiwKKyAgICAxLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLAorICAgIDQwLDQsMCwwLDAsMTE3LDI1MiwwLDAsMCw2OCwxMDEsOTksMTExLDExNCw5NywKKyAgICAxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsCisgICAgMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLAorICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMDIsMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKKyAgICAzMiw0MCwxMTUsMTAxLDEwOCwxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLAorICAgIDEwNSwxMTAsMTAxLDMyLDk1LDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LAorICAgIDExNCwxMDEsMTAwLDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLAorICAgIDk3LDEwNSwxMDgsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDQsCisgICAgMCwwLDAsNSwwLDAsMCwzMSwwLDAsMCwxMTUsODMsMCwwLDAsCisgICAgMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEyNSwxLDAsMTEwLDQwLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAorICAgIDAsMTA3LDMsMCwxMTQsNjQsMCwxMTYsMiwwLDEwMCwxLDAsMTI0LDEsMCwKKyAgICAyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDE0MiwKKyAgICAyLDAsODMsNDAsMywwLDAsMCw3OCwxMTcsMjMsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwzMiwzNywxMTUsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLAorICAgIDAsOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwKKyAgICA0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOSwwLDAsMCw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw2OSwKKyAgICAyLDAsMCwxMTUsMTAsMCwwLDAsMCwxLDEyLDEsMTIsMSwxNSwxLAorICAgIDI1LDEsMTE3LDQwLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3OCwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LAorICAgIDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDYsMCwKKyAgICAwLDAsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDE5LDAsMCwwLDk1LDk5LDEwNCwKKyAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAorICAgIDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsCisgICAgOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDYxLDIsMCwwLDExNSw2LDAsMCwwLAorICAgIDAsOCwyMSw2LDEzLDEsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksCisgICAgMTA3LDk1LDExMCw5NywxMDksMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsCisgICAgMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwKKyAgICAxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwKKyAgICAxLDAsODMsNDAsMywwLDAsMCwxMTcsNDksMCwwLDAsNjgsMTAxLDk5LAorICAgIDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0Niw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDE5LAorICAgIDAsMCwwLDExNSw1OCwwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMDcsNywwLDExNCw0NSwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsCisgICAgMSwwLDExMCwwLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsCisgICAgMCw4Myw0MCwzLDAsMCwwLDc4LDExNywyNywwLDAsMCwxMjMsMTI1LDMyLAorICAgIDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwKKyAgICAxMDEsNDAsNCwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMjAsCisgICAgMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksCisgICAgOTcsMTE2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsCisgICAgMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywyNSwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LAorICAgIDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDgxLAorICAgIDIsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwKKyAgICAxMTcsNTIsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCisgICAgOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LAorICAgIDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTAyLDEyMCwxMTAsMTE3LDI1LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsMCwwLDExNywzLDAsCisgICAgMCwwLDEwMiwxMjAsMTEwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3OSwyLDAsCisgICAgMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNywxNywwLDAsCisgICAgMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCisgICAgMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsCisgICAgMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsCisgICAgMywwLDAsMCwxMTcsNDcsMCwwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LAorICAgIDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0NSwKKyAgICAwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LAorICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MCwzLDAsMCwKKyAgICAwLDc4LDExNywyNSwwLDAsMCwxMjMsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsCisgICAgMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LAorICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAyNCwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDkyLDIsMCwwLAorICAgIDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwxMTcsNTAsMCwKKyAgICAwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsCisgICAgMTE3LDI0LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMCwwLAorICAgIDAsMCw0MCwxLDAsMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTYsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5MCwyLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDIsMTgsNSwxMywxLDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDg3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgOTIsMiwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwzLDAsMTA3LAorICAgIDgsMCwxMTQsODMsMCwxMTYsMiwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODMsCisgICAgMCwxMDAsMSwwLDEyNSw0LDAsMTE2LDMsMCwxMDYsNCwwLDEyNCw0LDAsCisgICAgMTA2LDUsMCwxMjQsMywwLDEwMCwyLDAsMjUsMTMxLDEsMCwxMTYsNiwwLAorICAgIDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwyLDAsODMsNDAsNCwwLDAsMCwKKyAgICAxMTcsODYsMCwwLDAsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsMTAzLAorICAgIDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDExNyw0NCwwLDAsMCwKKyAgICA3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsCisgICAgMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDEwNSwwLDAsMCwKKyAgICAwLDc4LDQwLDcsMCwwLDAsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNyw5LDAsMCwwLDk1LDExOSw5NywKKyAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsNCwwLDAsMCwxMTksOTcsMTE0LDExMCwxMTcsCisgICAgNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMywwLDAsMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDAsNSwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLAorICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDgsMCwwLDAsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwxMTcsCisgICAgMywwLDAsMCwxMDksMTE1LDEwMyw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDEwMSwyLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMCw2LDIxLDEsMjQsMSw2LDEsMzIsMSwxMTcsMTcsMCwwLAorICAgIDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsCisgICAgMTA1LDEwOSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw2LAorICAgIDAsMCwwLDY2LDAsMCwwLDExNSwxNzMsMCwwLDAsMTI0LDAsMCw2OSwKKyAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAorICAgIDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLAorICAgIDAsOTAsNSwwLDEwMSw0LDAsMTAwLDE0LDAsMTAwLDQsMCwxMDAsNSwwLAorICAgIDEzMiwxLDAsMTMxLDEsMCw5MCw3LDAsMTAxLDQsMCwxMDEsOCwwLDEwMSwKKyAgICA5LDAsMTAxLDEwLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDEyLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTAsMCwxMDAsMTEsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTQsMCwxMDAsMTQsMCw4Myw0MCwxNSwwLDAsMCwxMTcsMTUsCisgICAgMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDExNywxNDQsMCwwLDAsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsCisgICAgMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwKKyAgICAxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICAxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAorICAgIDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDI0LDAsMCwwLDYwLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAorICAgIDEwNSwxMTAsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsMCwxMDIsMTExLAorICAgIDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsNiwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsMTI3LDIsMCwwLDExNSwyLDAsMCwwLDAsMiwKKyAgICAxMTcsMjcsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwzOSwwLDAsMCwxMjQsMiwwLDEwMCwxLDAsCisgICAgMTA3LDksMCwxMTQsMTYsMCwxMDAsMSwwLDgzLDExNiwxLDAsMTA2LDIsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTE0LDM1LDAsMTI0LDAsMCw4MywxMDAsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsMTE3LDExMywwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsCisgICAgMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwKKyAgICAxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDAsMywwLAorICAgIDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsCisgICAgMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMzEsMiwwLDAsMTE1LDYsMCwwLDAsMCw3LDEyLDEsNCwKKyAgICAxLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDksMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDEyNCwxLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEwNyw2LDAsMTI1LDIsMCwxMjEsMjAsMCwxMTYsMiwwLAorICAgIDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsODMsODcsMTEwLDQ2LAorICAgIDAsMSwxLDEsMTI0LDIsMCwxMiwxMTQsNzYsMCwxMjQsMSwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDcsNiwwLDExNCw3NiwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMjQsMSwwLDYxLDExMCwwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCwKKyAgICAxLDAsODMsNDAsMiwwLDAsMCwxMTcsMjMsMCwwLDAsNzYsMTExLDk3LAorICAgIDEwMCwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0Niw3OCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMjUsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCwKKyAgICA5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLAorICAgIDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDEwNSwxMTAsMTA1LDExNiw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLAorICAgIDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsCisgICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNDIsMiwwLDAsMTE1LDE0LAorICAgIDAsMCwwLDAsNiwxNSwxLDMsMSwyMCwxLDMsMSwyMiwxLDEzLAorICAgIDEsMTE3LDI3LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsCisgICAgMiwwLDAsMCwxMTcsNTcsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICA3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgMTA0LDk3LDExOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAorICAgIDExNSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSwxNTYsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywKKyAgICAyNCwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDU2LDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCisgICAgOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsNDAsMSwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwyLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMTYyLDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsMjYsMCwwLDAsCisgICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDUyLDAsCisgICAgMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsOTcsCisgICAgMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMDEsMTE4LDEwMSwxMTQsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDExNSw0Niw3MCw0MCwxLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDcwLDk3LDEwOCwxMTUsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLAorICAgIDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTY4LDIsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsNCwxMTcsMjYsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDc4LDQwLDE1LDAsMCwwLDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNywKKyAgICA5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLAorICAgIDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAorICAgIDExNCwxMDEsMTEyLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTEsMCwKKyAgICAwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwKKyAgICAwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywKKyAgICAxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwKKyAgICAwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwxLDAsCisgICAgMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsCisgICAgOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTUsMCwKKyAgICAwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDExOCwyLDAsMCwxMTUsMjgsMCwwLDAsMTYsNyw2LDIsMTgsNCwKKyAgICAzLDEsMTgsMTAsMywxLDMsMSwzLDEsMjcsMTEsMywxLDIxLDUsCisgICAgMywxLDIxLDUsMywxLDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNiwwLDAsMCw2NiwwLDAsMCwxMTUsCisgICAgMTczLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsCisgICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCwKKyAgICAxNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMSwwLDEzMSwxLDAsOTAsNywKKyAgICAwLDEwMSw0LDAsMTAxLDgsMCwxMDEsOSwwLDEwMSwxMCwwLDEwMCw2LDAsCisgICAgMTAwLDcsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTEsMCwxMDEsNCwwLDEwMSwxMCwwLDEwMCw4LDAsMTAwLDksCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTMsMCwxMDEsNCwwLDEwMSwxMCwwLDEwMCwxMiwwLDEwMCwxMywKKyAgICAwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDE0LDAsMTAwLDE0LDAsCisgICAgODMsNDAsMTUsMCwwLDAsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxNDIsMCwwLDAsNzcsMTAxLAorICAgIDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsCisgICAgMTExLDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKKyAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LAorICAgIDEsMCwxMzEsMSwwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDIyLDAsMCwKKyAgICAwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsCisgICAgMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsMSwwLDAsMCwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDE4NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI2LAorICAgIDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDExNCwxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MCwyLAorICAgIDAsMCwwLDExNywyMSwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCw0MCwzLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNyw5LDAsMCwKKyAgICAwLDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDQsMCwwLDAsNzgsCisgICAgMTExLDExMCwxMDEsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTg4LDIsMCwwLDExNSwyLDAsMCwwLDAsMywxMTcsMjYsMCwKKyAgICAwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDksMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEwMCwwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsCisgICAgNiwwLDEyNSwyLDAsMTIxLDMyLDAsMTE2LDIsMCwxMTYsMywwLDEwNiw0LAorICAgIDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCw5Niw1LDAsCisgICAgMTI0LDMsMCw4Myw4NywxMTAsNDYsMCwxLDEsMSwxMjQsMiwwLDEyLDExNCwKKyAgICA4OCwwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsMTE0LDg4LAorICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsNjEsMTEwLDAsMCwxMzAsMCwKKyAgICAwLDg5LDExMCwxLDAsODgsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywKKyAgICAyMSwwLDAsMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDQwLDYsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDExNywyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsCisgICAgMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLAorICAgIDEwMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTEsMCwwLDAsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw0MCw0LDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsCisgICAgMSwwLDAsMCwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTkzLDIsMCwwLDExNSwxOCwwLDAsMCwwLDYsMTUsMSwzLDEsCisgICAgMTgsMiw2LDEsOCwxLDMsMSwyMiwxLDEzLDEsMTE3LDI2LDAsMCwKKyAgICAwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsODMsNDAsMSwwLDAsMCwxMTcsNDUsMCwwLDAsODIsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKKyAgICA5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNDAsMiwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTcsMCwwLDAsMTAzLDEwMSwxMTYsOTUsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQwLDIsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsCisgICAgMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICAyMTAsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywyMywwLDAsMCwKKyAgICA3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsCisgICAgMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKKyAgICAwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsNTQsMCwwLDAsODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKKyAgICA5OSwxMTEsMTAwLDEwMSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMTYsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw0LDExNywyNSwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsNDYsCisgICAgMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsCisgICAgMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQ2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LAorICAgIDE3LDAsMCwwLDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksCisgICAgMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsCisgICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjIyLDIsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsNCwxMTcsMjUsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsNzgsNDAsMTUsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LAorICAgIDk1LDk1LDExNywxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMSwwLDAsMCwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsCisgICAgMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTYsMCwwLDAsOTUsCisgICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsCisgICAgMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LAorICAgIDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDEsMCwwLDAsMTE3LAorICAgIDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCw3MCwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxNzUsMiwwLAorICAgIDAsMTE1LDI4LDAsMCwwLDE2LDcsNiwyLDE4LDQsMywxLDE4LDQsCisgICAgMywxLDMsMSwzLDEsMjcsMTQsMywxLDIxLDUsMywxLDIxLDUsCisgICAgMywxLDExNywxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSwxMDEsMCwwLDAsMTI0LAorICAgIDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCisgICAgMSwwLDkwLDMsMCwxMDAsMiwwLDkwLDQsMCwxMDAsMywwLDkwLDUsCisgICAgMCwxMDAsMTEsMCw5MCw3LDAsMTAxLDgsMCwxMDAsNCwwLDEwMCw1LDAsCisgICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsOCwwLDEwMCw2LDAsMTAwLAorICAgIDcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsOCwwLDEwMCwxMCwKKyAgICAwLDEwMCw4LDAsMTAwLDksMCwxMzIsMSwwLDEzMSwxLDAsOTAsMTIsMCwKKyAgICAxMDAsMTAsMCw4Myw0MCwxMiwwLDAsMCwxMTcsMjEsMCwwLDAsODcsMTA1LAorICAgIDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMTE3LDY3LDAsMCwwLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsMzIsMTE0LDEwMSwxMDMsCisgICAgMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiwxMTcsNTksMCwwLDAsCisgICAgODMsMTExLDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5MiwKKyAgICA4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwKKyAgICAxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDExNyw2NSwwLDAsMCwKKyAgICA4MywxMTEsMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLAorICAgIDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LAorICAgIDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywKKyAgICAxMDMsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMTYsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLAorICAgIDgzLDg3LDExMCwzNywwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLAorICAgIDEsMSwxMTYsMCwwLDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLAorICAgIDAsMTMxLDIsMCw4Myw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCw1LDAsMCwwLDExNyw3LDAsMCwwLDk1LDExOSwKKyAgICAxMDUsMTEwLDExNCwxMDEsMTAzLDExNyw3LDAsMCwwLDc5LDExMiwxMDEsMTEwLDc1LDEwMSwKKyAgICAxMjEsMTE3LDE3LDAsMCwwLDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LAorICAgIDc4LDg0LDk1LDg1LDgzLDY5LDgyLDExNywxMiwwLDAsMCw4NywxMDUsMTEwLDEwMCwKKyAgICAxMTEsMTE5LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE4LDAsMCwwLDcyLDc1LDY5LAorICAgIDg5LDk1LDc2LDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQwLAorICAgIDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMywwLDAsCisgICAgMCwxMDcsMTAxLDEyMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwKKyAgICAxMTYsMTE0LDEyMSwyNDIsMiwwLDAsMTE1LDgsMCwwLDAsMCwyLDMsMSwKKyAgICAyMywxLDEzLDEsMTE3LDM2LDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LAorICAgIDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNDIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNCwyMSwwLAorICAgIDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LDAsMTI0LDAsMCwxMDYsCisgICAgMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLDEwMCwxLDAsMTI0LDEsCisgICAgMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsMCwwLDEwMCwzLDAsCisgICAgMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLDQ2LDAsMTI0LDAsMCwKKyAgICAxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsMCwxMjUsNCwwLDExNiwKKyAgICA3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsMTMxLDIsMCwxMjUsNSwKKyAgICAwLDg3LDEwMCwwLDAsODEsODgsODcsMTEwLDIyLDAsNCwxMTYsOSwwLDEwNywKKyAgICAxMCwwLDExNCwxMzcsMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLDAsCisgICAgODgsMTI0LDUsMCw4Myw0MCw1LDAsMCwwLDc4LDExNyw4LDAsMCwwLAorICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTE1LDEyMSwxMTUsCisgICAgOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEwNSwzLDAsMCwwLDExNywwLDAsCisgICAgMCwwLDQwLDExLDAsMCwwLDExNywxMSwwLDAsMCw2OCw2OSw2Niw4NSwKKyAgICA3MSw5NSw2Niw4NSw3Myw3Niw2OCwxMTcsMTgsMCwwLDAsODIsNjksNzEsNzMsCisgICAgODMsODQsODIsODksOTUsNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMTE3LDEyLAorICAgIDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNywKKyAgICA2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDcsMCwwLDAsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNywxNCwKKyAgICAwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LAorICAgIDEyMSwxMTcsNywwLDAsMCw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTcsMTAsMCwKKyAgICAwLDAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LDk3LDEwOCwxMTcsMTAxLDExNywxMiwwLDAsCisgICAgMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwKKyAgICAwLDAsNzgsMTExLDExMCwxMDEsNDAsNiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICA5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLAorICAgIDEyMSwxMTcsMywwLDAsMCwxMDcsMTAxLDEyMSwxMTcsNCwwLDAsMCwxMDQsMTA3LAorICAgIDEwMSwxMjEsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMiw5NywxMTYsMTA0LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLAorICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAorICAgIDI0OSwyLDAsMCwxMTUsMjIsMCwwLDAsMCwyLDksMSwxMiwyLDksCisgICAgMSwxNSwxLDIyLDEsMywxLDE4LDEsMjgsMSwxMywxLDksMSwxMTcsCisgICAgMzgsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAorICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsOTksCisgICAgMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDcsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE0MCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDMxLDAsMTAwLAorICAgIDEsMCw4MywxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDMsMCwxMzEsCisgICAgMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw3MiwKKyAgICAwLDEsMSwxLDEwMCwxLDAsODMsODksMTEwLDEsMCw4OCwxMjAsNjAsMCwKKyAgICAxMTYsNSwwLDEzMSwwLDAsNjgsOTMsNDksMCw5MiwzLDAsMTI1LDQsMCwKKyAgICAxMjUsNSwwLDEyNSw2LDAsMTI0LDMsMCwxMDYsNiwwLDExNiw3LDAsMTI0LAorICAgIDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDgzLDAsMTI0LDQsMCwxMjQsMSwKKyAgICAwLDEyNCwzLDAsMTMxLDIsMCw4MywxMTMsODMsMCw4NywxMDAsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsMTE3LDM0LDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsNzgsNDAsOCwwLAorICAgIDAsMCwxMTcsMTYsMCwwLDAsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LAorICAgIDExNiwxMTcsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDI3LDAsCisgICAgMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTcsOCwwLAorICAgIDAsMCwxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDExNyw1LDAsMCwwLDExNiwKKyAgICAxMTcsMTEyLDEwOCwxMDEsNDAsNywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsCisgICAgMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsCisgICAgOCwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNywxLDAsMCwKKyAgICAwLDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw4LDMsCisgICAgMCwwLDExNSwyMCwwLDAsMCwwLDMsMTUsMSwxMiwxLDQsMSwzLAorICAgIDEsMTcsMSwxMywxLDksMSwyNSwxLDIxLDEsMTE3LDMzLDAsMCwwLAorICAgIDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3OCw3MCw0MCwxMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsCisgICAgOTUsMTE3LDEyLDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LAorICAgIDY5LDg5LDExNywxOCwwLDAsMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSwKKyAgICA3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwxMTcsNSwwLDAsMCw3MCw5NywKKyAgICAxMDgsMTE1LDEwMSwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsCisgICAgNzMsNzYsNjgsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LAorICAgIDEwNCwxMTEsMTAwLDExNywxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwKKyAgICAxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwxMTcsMTYsMCwwLDAsOTUsMTE1LDEwMSw5NywxMTQsCisgICAgOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDQsMCwwLDAsCisgICAgNzgsMTExLDExMCwxMDEsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwKKyAgICAxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsCisgICAgODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMjI5LDIsCisgICAgMCwwLDExNSwxNiwwLDAsMCwxNiwzLDYsMyw2LDMsNiwyLDYsCisgICAgMiwxOCw3LDE4LDE1LDMsMSwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsCisgICAgMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNSwwLAorICAgIDAsMCw2NiwwLDAsMCwxMTUsNzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsCisgICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsCisgICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwKKyAgICAxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDYsMCwxMDAsCisgICAgMTAsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMSwxMzEsMSwwLDkwLDgsCisgICAgMCwxMDAsOSwwLDgzLDQwLDExLDAsMCwwLDExNywxMywwLDAsMCw5NSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTE3LDgzLDAsMCwKKyAgICAwLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwKKyAgICAxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCisgICAgMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCisgICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAorICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKKyAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCisgICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCisgICAgNSwwLDEwNywzLDAsODMsNDAsNiwwLDAsMCwxMTcsMTQxLDAsMCwwLAorICAgIDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSwKKyAgICA5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwKKyAgICAxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLAorICAgIDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LAorICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LAorICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDEwNSwxLDAsCisgICAgMCwwLDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwwLDEwNSwyLDAsCisgICAgMCwwLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCwKKyAgICA0LDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsCisgICAgMTEyLDEwOCwxMDUsMTE2LDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsCisgICAgMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLAorICAgIDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsCisgICAgMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDEzLDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDExNyw5LDAsMCwwLDExNiw5NywKKyAgICAxMDUsMTA4LDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDI4LDMsMCwwLDExNSw4LDAsMCwwLDAsMywyNSwxLDIyLAorICAgIDEsMTksMSwxMTcsMjQsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LAorICAgIDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk5LDUsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwyMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTk4LDEsMCwwLDEyNCwyLDAsMTAwLDEsMCwKKyAgICAxMDAsMiwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMiwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDIsMCwxMDAsMywwLAorICAgIDEwMCw0LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDAsMCwKKyAgICAxMDcsMywwLDExNCwxMDUsMCwxMDAsNSwwLDEwNiwxLDAsMTI0LDEsMCwxMjQsCisgICAgNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEyNCw4LDAsMTAwLDYsCisgICAgMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwyLDEzMCwxLDAsCisgICAgMTEwLDExNiwwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDEwMCwyLDAsMTA3LAorICAgIDMsMCwxMTQsMTYzLDAsMTAwLDgsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsCisgICAgMCwxMjUsOSwwLDExNiw0LDAsMTI0LDksMCwxMzEsMSwwLDEsMTE2LDUsCisgICAgMCwxMjQsOSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsMywwLAorICAgIDEyNCw3LDAsMTMxLDEsMCwxMDAsMiwwLDEwNywzLDAsMTE0LDIyMSwwLDEwMCwKKyAgICA5LDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDksMCwxMTYsNCwKKyAgICAwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiw1LDAsMTI0LDksMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDksMCwKKyAgICAxMTQsMTg0LDEsMTIxLDIwLDAsMTE2LDcsMCwxMjQsNCwwLDEwMCwxMCwwLDI1LAorICAgIDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLDEwNywxMCwKKyAgICAwLDExNCwxNywxLDEsMSwxLDg5LDExMCw3MSwwLDg4LDExNiw5LDAsMTI0LAorICAgIDYsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDg4LDEsMTAwLDExLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDksMCwxMTYsNCwwLAorICAgIDEyNCw5LDAsMTMxLDEsMCwxLDExNiwyLDAsMTI0LDksMCwxMDAsNiwwLAorICAgIDEyNCwxLDAsMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsMCwxMTAsCisgICAgMCwwLDEyMSwxOCwwLDEyNCw0LDAsMTAwLDEyLDAsMjUsMTAwLDEzLDAsNjQsCisgICAgMTI1LDExLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwxMjYsCisgICAgMSwxLDEsMSw4OSwxMTMsMTg0LDEsODgsMTE2LDksMCwxMjQsNywwLDEzMSwKKyAgICAxLDAsMTI0LDExLDAsMTA3LDMsMCwxMTQsMTg0LDEsMTE2LDIsMCwxMDAsMTEsCisgICAgMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDAsNiwwLDEyNCwxLDAsCisgICAgMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsMCwxMTMsMTg0LDEsMTEwLAorICAgIDAsMCwxMjQsMiwwLDEwMCw0LDAsMTAwLDEsMCwxMzMsMiwwLDI1LDgzLAorICAgIDQwLDE0LDAsMCwwLDExNywxOTMsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDEwOCwxMDEsMTAwLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTgsMTIxLDExNiwxMDEsOTksCisgICAgMTExLDEwMCwxMDEsNDQsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCw0NCwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDk3LDExMCwxMDAsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTUsMTA1LAorICAgIDEyMiwxMDEsMzIsOTcsMTA4LDExMSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExOSw5NywxMjEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDEwNSwxMTUsMzIsNzgsMTExLAorICAgIDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNSwxMDcsMTA1LDExMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDEwNSw0LDAsMCwKKyAgICAwLDEwNSw4LDAsMCwwLDEwNSwxMiwwLDAsMCwxMTcsMzAsMCwwLDAsCisgICAgOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsCisgICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMTksMCwwLDAsOTgsOTcsMTAwLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LAorICAgIDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNywxNCwwLDAsMCw5OCw5NywxMDAsCisgICAgMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsNSwwLDAsMCwKKyAgICAxMDksMTE2LDEwNSwxMDksMTAxLDExNywyNCwwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMjMsMTI1LDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwKKyAgICAyNTUsMTI3LDI1NSwxMjcsMywwLDQwLDEwLDAsMCwwLDExNywxMiwwLDAsMCwKKyAgICA5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsNiwwLDAsCisgICAgMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsCisgICAgMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsCisgICAgMTE1LDk3LDEwMywxMDEsMTE3LDgsMCwwLDAsNjksNzksNzAsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDEwNSwKKyAgICAxMTAsMTE2LDExNyw4LDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNywKKyAgICA3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNDAsMTIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsCisgICAgMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNywKKyAgICAxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LAorICAgIDExNiwxMTUsMTE3LDUsMCwwLDAsMTA5LDk3LDEwMywxMDUsOTksMTE3LDEzLDAsMCwKKyAgICAwLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwxMTcsOCwKKyAgICAwLDAsMCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwxMTcsMywwLDAsMCwKKyAgICAxMDksMTE1LDEwMywxMTcsNywwLDAsMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksMTAxLAorICAgIDExNywxMSwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsMTIyLDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyMCwwLDAsCisgICAgMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDM2LDMsMCwwLDExNSw2NiwwLDAsMCwwLDcsCisgICAgMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDI3LDEsMTgsMSwxNSwxLAorICAgIDEwLDEsMTUsMSwxOCwxLDE1LDEsMTAsMSwxNSwxLDEyLDEsMywxLAorICAgIDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLDEwLDEsMTUsMSwxMiwxLAorICAgIDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMywxLDE1LDEsMjEsMywKKyAgICAxMTcsMzQsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsCisgICAgOTksMTE1LDQ2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDk5LDIsMCwwLDAsMSwwLDAsMCw1LAorICAgIDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwyMjcsMCwwLDAsCisgICAgMTI0LDEsMCwxMDYsMCwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwKKyAgICAzLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMywKKyAgICAwLDEzMSwxLDAsMTI0LDEsMCw5NSwzLDAsMTI0LDIsMCwxMTUsMTA2LDAsCisgICAgMTIxLDIyLDAsMTE2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwxMjQsCisgICAgMSwwLDk1LDUsMCw4NywxMTMsMTE4LDAsNCwxMTYsNiwwLDEwNywxMCwwLAorICAgIDExNCwxMDIsMCwxLDEsMSwxMjQsMSwwLDEwNiwzLDAsMTI0LDEsMCw5NSwKKyAgICA1LDAsODksMTEzLDExOCwwLDg4LDExMCwxMiwwLDEyNCwxLDAsMTA2LDMsMCwKKyAgICAxMjQsMSwwLDk1LDUsMCwxMjQsMywwLDEyNCwxLDAsOTUsNywwLDEyNCwKKyAgICAwLDAsMTA2LDgsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDE3MCwwLDExNiw5LAorICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMDMsMSwKKyAgICAwLDEyNCwxLDAsOTUsMTAsMCwxMTAsMjUsMCwxMjQsMSwwLDEwNiw3LDAsCisgICAgMTA2LDExLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTI0LDEsMCwKKyAgICA5NSw3LDAsMTI0LDAsMCwxMjQsMSwwLDk1LDEyLDAsMTE2LDEzLDAsMTE2LAorICAgIDE0LDAsMTI0LDQsMCwxMjQsMSwwLDEwNiwxNSwwLDEzMSwzLDAsMSwxMjQsCisgICAgMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDgyLDAsMCwwLDcyLDEwMSwxMDgsCisgICAgMTEyLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAzMiwxMTEsMTE0LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwNSwKKyAgICAwLDAsMCwwLDExNywxLDAsMCwwLDQ2LDQwLDE2LDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMiwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsOTUsCisgICAgOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwwLAorICAgIDAsMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwxMTcsMTksMCwwLAorICAgIDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLAorICAgIDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LAorICAgIDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsCisgICAgMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMTcsMjUsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCwKKyAgICA5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLAorICAgIDAsMTAxLDEyMCwxMDEsOTksMTE3LDgsMCwwLDAsOTUsOTUsMTAwLDEwNSw5OSwxMTYsCisgICAgOTUsOTUsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDExNyw0LDAsMCwwLDExMCwKKyAgICA5NywxMDksMTAxLDExNywxMSwwLDAsMCw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LAorICAgIDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTIsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODEsMywwLDAsMTE1LDMyLDAsMCwwLDAsNCw5LDEsMTUsMSwxOCwKKyAgICAxLDYsMSwzLDEsMjIsMSwxMywxLDIwLDIsMTIsMSw5LDEsMTUsCisgICAgMSwyOCwyLDI1LDEsOSwxLDE5LDEsMTE3LDI2LDAsMCwwLDk1LDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0Niw5NSwxMDgsMTExLDk3LAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw3MCw0MCw5LDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLAorICAgIDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDIwLDAsMCwwLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsCisgICAgMTE3LDEyLDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LAorICAgIDEwNSw5OSwxMTUsMjMsMywwLDAsMTE1LDEwLDAsMCwwLDE2LDMsNiwyLAorICAgIDEyLDgsMTIsNDUsNiwxLDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLDAsMCwxMTUsMTA0LDAsCisgICAgMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKKyAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAorICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCw5MCw3LDAsMTAwLDExLAorICAgIDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEzLDAsMTAwLDE0LDAsCisgICAgMTMyLDAsMCw5MCw5LDAsMTAwLDE1LDAsODMsNDAsMTYsMCwwLDAsMTE3LAorICAgIDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsMCwxMzAsMSwwLAorICAgIDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMTIxLDAsMCwwLDc5LDExMiwKKyAgICAxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLAorICAgIDMyLDQwLDk3LDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MCwxLDAsMCwwLDExNywxOSwwLAorICAgIDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMDcsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCw0LDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjAsMCwwLDAsMTA1LDEsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwxLDAsNTQsODMsNDAsMiwwLDAsCisgICAgMCwxMTcsMTE0LDEsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLAorICAgIDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAwLDEwNSw5OSwxMTYsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAorICAgIDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsCisgICAgMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMTUsCisgICAgMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MCwxMTEsMTE1LAorICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwxMTUsNTgsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwxMDUsMTA5LDEwMSwzOSwzMiw0MCwxMDksCisgICAgOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNTksMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTE1LDEwNSwxMjIsMTAxLDM5LDMyLAorICAgIDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw0MSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwKKyAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLAorICAgIDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTE0LDEwMSw5NywxMDAsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsNSwwLDAsMCwxMDksMTE2LDEwNSwKKyAgICAxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExMywzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEwLDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSwKKyAgICA0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAorICAgIDIsMCwxMjQsMywwLDEzMSwyLDAsODMsNDAsMSwwLDAsMCwxMTcsMjI4LAorICAgIDAsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwKKyAgICAxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLAorICAgIDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsCisgICAgMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLAorICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsCisgICAgMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsCisgICAgOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsCisgICAgMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQwLDEsMCwwLDAsMTE3LDgsMCwwLAorICAgIDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTAsMCwwLDAsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsMCwwLAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTI1LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTcsMjgsMCwwLDAsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk5LDMsMCwwLDAsCisgICAgMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDExNiwwLDAsMTMwLDEsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTE3LDE1MSwwLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LAorICAgIDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LAorICAgIDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwKKyAgICAxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDc4LDQwLDEsMCwwLDAsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCw0MCwzLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMzUsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCw2LDExNywyMSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDksMCwwLDAsNDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDYyLDEsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMDgsMCwwLDEyNSwKKyAgICAyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywKKyAgICAwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMywwLDEzMSwxLDAsCisgICAgMTI1LDQsMCw4NywxMTAsNTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDEwNiwKKyAgICAwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDMsMCwxMDAsCisgICAgNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsODcsODksCisgICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsMSwwLAorICAgIDg4LDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLDAsMTA2LDcsMCwKKyAgICAxMjUsNiwwLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDgsMCwxMjQsNiwwLDEzMSwKKyAgICAxLDAsMTI1LDcsMCw4NywxMTAsNTgsMCw0LDExNiw5LDAsMTA3LDEwLDAsCisgICAgMTE0LDIwNCwwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDUsCisgICAgMCwxMDAsNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsCisgICAgODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsCisgICAgMSwwLDg4LDExNiw1LDAsMTA2LDEwLDAsMTAwLDIsMCwxMDAsNywwLDEzMSwKKyAgICAyLDAsMTI1LDgsMCwxMjEsMzAsMCwxMjQsOCwwLDEwNiwxMywwLDEyNCw0LAorICAgIDAsMTA2LDEzLDAsMTI0LDcsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMTMxLDEsCisgICAgMCw4Myw4NywxMTAsNTgsMCw0LDExNiwxNCwwLDEwNywxMCwwLDExNCw1NywxLAorICAgIDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDYsMCwxMDAsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsODcsODksMTAwLAorICAgIDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsMSwwLDg4LAorICAgIDEwMCwyLDAsODMsNDAsOCwwLDAsMCwxMTcsNTIsMCwwLDAsNjcsMTExLAorICAgIDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw0NiwxMDUsMCwwLDAsMCw3OCwxMTcsMzksMCwwLDAsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDQxLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywyNSwwLAorICAgIDAsMCw3MCw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsCisgICAgOTksMTE2LDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywxMTcsMjgsMCwwLDAsCisgICAgNzAsOTcsMTA1LDEwOCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw4NCw0MCwxNSwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCwxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNywKKyAgICAxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTcsNywwLAorICAgIDAsMCw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsMCwwLDk1LDEwNSwKKyAgICAxMTEsMTE3LDcsMCwwLDAsNjYsMTIxLDExNiwxMDEsMTE1LDczLDc5LDExNyw4LDAsCisgICAgMCwwLDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwxMTcsMTUsMCwwLDAsMTAwLAorICAgIDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMTE3LDExLAorICAgIDAsMCwwLDgzLDEyMSwxMTAsMTE2LDk3LDEyMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDI1LAorICAgIDAsMCwwLDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLAorICAgIDExOSwxMDgsMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTcsNCwwLDAsCisgICAgMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsNiwKKyAgICAwLDAsMCwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxOCwwLDAsMCw4NSwxMTAsCisgICAgMTA1LDk5LDExMSwxMDAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsCisgICAgMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLAorICAgIDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDExNywzLDAsMCwwLDEwMSwxMjAsOTksMTE3LDEwLDAsMCwwLDExNCwKKyAgICAxMDEsOTcsMTAwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsMCwwLDAsMTAxLDExMCwKKyAgICA5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDExNywxNSwwLDAsMCwxMTAsMTAxLDExOSwxMDgsMTA1LAorICAgIDExMCwxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxNDQsMywwLDAsMTE1LDM4LDAsMCwwLDAsMiwKKyAgICAxMiwxLDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsMSwxOCwxLAorICAgIDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTgsMSwzLDEsMzAsMSwKKyAgICAxOCwxLDksMSwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCw0NSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNTIsMiwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxMCwwLDEyNSwzLDAsMTIxLAorICAgIDE2LDAsMTE2LDIsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsCisgICAgMjQsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYzLDAsMSwxLDEsMTAwLAorICAgIDEwLDAsMTI1LDQsMCw4OSwxMTAsMTQsMSw4OCwxMjEsMTksMCwxMjQsMCwwLAorICAgIDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LDAsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCwxMDMsMCwxLDEsMSw4OSwxMTAsMjMwLAorICAgIDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwxMjUsCisgICAgMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLAorICAgIDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LAorICAgIDE1OSwwLDEsMSwxLDg5LDExMCwxNzQsMCw4OCwxMjEsMjgsMCwxMjQsMCwwLAorICAgIDEwNiw4LDAsMTI0LDEsMCwxMjQsNiwwLDEyNCw0LDAsMTI0LDUsMCwxMzEsCisgICAgNCwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLAorICAgIDEwMiwyLDAsMTA3LDEwLDAsMTE0LDIxNCwwLDEsMSwxLDg5LDExMCwxMTksMCwKKyAgICA4OCwxMTYsMTEsMCwxMDAsMiwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMywwLAorICAgIDEsMTE2LDEyLDAsMTA2LDEzLDAsMTI0LDcsMCwxMzEsMSwwLDEyNSw4LDAsCisgICAgMTE2LDE0LDAsMTI0LDgsMCwxMTYsMTUsMCwxMzEsMiwwLDExNCwzOCwxLDExNiwKKyAgICAxNiwwLDEwNiwxNywwLDEyNCw4LDAsMTI0LDIsMCwxMzEsMiwwLDEsMTE2LAorICAgIDExLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLDAsMSwxMjQsOCwwLDgzLAorICAgIDEwMCw0LDAsMTI1LDksMCwxMTYsOSwwLDEyNCw5LDAsMTA2LDE4LDAsMTI0LAorICAgIDQsMCwxMzEsMSwwLDEwMCw1LDAsMTI0LDEsMCwxMDAsNiwwLDEyNCw0LAorICAgIDAsMTMxLDEsMiwxMzAsMSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwwLAorICAgIDEzMSwxLDAsMTI1LDEwLDAsMTE2LDE5LDAsMTE2LDIwLDAsMTI0LDEwLDAsMTI0LAorICAgIDIsMCwxMDAsNywwLDEwMCw4LDAsMTAwLDExLDAsMTMxLDQsMSwxMjUsMTEsCisgICAgMCwxMTYsMTEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDIsMCwxLDExNiwyMiwKKyAgICAwLDEwNiwyMywwLDEyLDExNCw0OCwyLDEyNCw0LDAsMTAwLDEwLDAsMTA3LDksCisgICAgMCwxMTQsNDgsMiwxMjQsMywwLDEwMCwxMCwwLDEwNyw5LDAsMTE0LDQ4LDIsCisgICAgMTE2LDI0LDAsMTE2LDI1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsMTA2LAorICAgIDI2LDAsMTE2LDI3LDAsMTI0LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsCisgICAgNiwwLDEwNiwyNiwwLDExNiwyNywwLDExNiwyOCwwLDEyNCwxMCwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDYsMCwxMDYsMjYsMCwxMTYsMTIsCisgICAgMCwxMDYsMjksMCwxMjQsMTEsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjEsMzYsCisgICAgMCwxMjQsMCwwLDEwNiwzMCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsNiwwLAorICAgIDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsOSwwLDEyNCw0LDAsMTMxLDIsMCwKKyAgICAxLDg3LDExMyw0OCwyLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDQsMiwxLAorICAgIDEsMSw4OSwxMTMsNDgsMiw4OCwxMTAsMCwwLDEyNCwxMSwwLDgzLDQwLDEyLAorICAgIDAsMCwwLDExNywxOTAsMCwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDExNiwxMTEsMzIsOTgsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMzIsODQsCisgICAgMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LAorICAgIDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsOTgsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDUsMCwwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTcsMTMsMCwwLDAsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLAorICAgIDEyMywxMjUsMTE3LDE5LDAsMCwwLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLAorICAgIDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMTcsMjEsMCwwLDAsNzgsCisgICAgMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LAorICAgIDExMCwzMiwxMjMsMTI1LDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMSwxMjAsMTAxLDk5LDExNywKKyAgICAxMiwwLDAsMCwxMDAsMTExLDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LAorICAgIDExNywxMCwwLDAsMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDc4LAorICAgIDg0LDQwLDMxLDAsMCwwLDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDE3LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTAsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywzLDAsCisgICAgMCwwLDEwNSwxMTAsMTE2LDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywKKyAgICAxMTYsOTcsMTE3LDcsMCwwLDAsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDExNywyMCwKKyAgICAwLDAsMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLDAsMCw2OSw3OSw3MCw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNyw3LDAsMCwwLDEwOSw5NywKKyAgICAxMTQsMTE1LDEwNCw5NywxMDgsMTE3LDUsMCwwLDAsMTA4LDExMSw5NywxMDAsMTE1LDExNywKKyAgICAxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDExNywxMCwKKyAgICAwLDAsMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDQsMCwKKyAgICAwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDE2LDAsMCwwLDk1LDEwMiwxMDUsMTIwLDk1LAorICAgIDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsCisgICAgMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCwKKyAgICA5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwxMDAsMTE3LDcsMCwwLDAsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDMsMCwwLDAsMTE1LDEyMSwKKyAgICAxMTUsMTE3LDE5LDAsMCwwLDEwMCwxMTEsMTEwLDExNiw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLAorICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw5LDAsMCwwLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDExNywxMiwwLDAsMCw5NSw3Nyw2NSw3MSwKKyAgICA3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsNiwwLDAsMCwxMDEsMTIwLDExNiwKKyAgICAxMDEsMTEwLDEwMCwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDExNywKKyAgICAzLDAsMCwwLDEwOCwxMDEsMTEwLDExNyw1LDAsMCwwLDEwMCwxMTcsMTA5LDExMiwKKyAgICAxMTUsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsNDAsMTIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksCisgICAgMTAxLDExNywxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsMiwwLDAsMCwxMTUsMTE2LDExNyw0LDAsMCwwLDEwMCwKKyAgICA5NywxMTYsOTcsMTE3LDEwLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDExNyw1LDAsMCwwLDEwMiwxMTEsMTE3LDExMCwxMDAsMTE3LDMsMCwwLAorICAgIDAsMTA5LDExNSwxMDMsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDExNywxMSwwLDAsMCw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsCisgICAgOTgsMTA2LDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxNjYsMywKKyAgICAwLDAsMTE1LDk4LDAsMCwwLDAsNywxNSwxLDYsMSwzLDEsMTYsCisgICAgMSwxMywxLDExLDIsMywxLDE5LDEsMTMsMSw1LDIsMTYsMSwzLAorICAgIDEsMTksMSwxMywxLDUsMiwzLDEsMTIsMSwzLDEsMTMsMSwxOSwKKyAgICAxLDUsMiw5LDEsNywxLDE1LDEsMTUsMSwxNiwxLDYsMSw3LAorICAgIDEsNCwyLDYsMSwxOCwxLDE1LDEsMTUsMSw2LDEsMTIsMSw5LAorICAgIDEsMTMsMSwyMiwxLDEyLDEsMTIsMSwxOSwxLDI1LDEsMjIsMSwzLAorICAgIDEsMTksMSwxNywxLDEzLDEsOCwxLDExNywyMSwwLDAsMCw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LAorICAgIDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsCisgICAgMCwxLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTExLDExMCw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDMyLDk3LDExMCwxMDAsMzIsODIsMTAxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwKKyAgICAzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsMzIsODUsMTE1LDEwMSwKKyAgICAzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTAwLDEwNSw5OSwxMTYsOTcsMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExOSwxMDQsMTAxLDExNiwKKyAgICAxMDQsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTcsMTE1LDEwMSwxMTUsNDcsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNDAsMSwwLDAsMCwxMTcsMTIsMCwwLDAsOTUsMTA4LAorICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDIyOCwzLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE3LDI0LDAsMCwKKyAgICAwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDAsMTAsMCwwLDAsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCwKKyAgICA5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsMTAsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywxNSwwLDAsMCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw4LAorICAgIDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDEwLDAsMCwwLAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEwNSwzLDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMTYsMiwxMiw2LDEyLDEyLDEyLDEwLDEyLDksMTIsMjIsMTIsNjIsMTE3LAorICAgIDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsCisgICAgMCwyLDAsMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLAorICAgIDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLAorICAgIDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDEsNSwwLDEzNSwKKyAgICAwLDAsMTAyLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTM0LDAsMCwxMzEsMSwKKyAgICAwLDkwLDYsMCwxMDEsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLAorICAgIDEzMSwxLDAsOTAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLAorICAgIDgsMCwxMzUsMCwwLDgzLDQwLDEwLDAsMCwwLDExNywxMCwwLDAsMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwMywwLDAsMCw2NiwKKyAgICA5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCisgICAgMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLAorICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LAorICAgIDEsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDc1LDAsMCwwLAorICAgIDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsCisgICAgMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MCwyLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICAyNDQsMywwLDAsMTE1LDQsMCwwLDAsMCwzLDksMSwxMTcsMTksMCwKKyAgICAwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwKKyAgICAwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsMjYsMCwwLDAsNzYsCisgICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDQwLDMsMCwwLDAsMTE3LDUsCisgICAgMCwwLDAsMTE1LDExNywxMTIsMTAxLDExNCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwKKyAgICAwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsNDAsMSwwLDAsMCwxMTcsOSwwLDAsMCw5NSw5NSw5OSwxMDgsCisgICAgOTcsMTE1LDExNSw5NSw5NSw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLAorICAgIDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjUwLDMsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsNSwxMTcsMjIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDgzLDQwLDEsMCwwLDAsMTE3LDU4LDAsMCwwLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICA5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDAsMSwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLAorICAgIDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDEsNCwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwzLDExNywyMywwLDAsMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDgsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwxNDMsMTcsMCwKKyAgICAxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMzEsMCwwLDgzLDg3LDEwMCwyLAorICAgIDAsODEsODgsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywzOSwwLDAsCisgICAgMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsOTcsCisgICAgMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwxMTcsMSwwLDAsMCwxMTQsNzgsNDAsCisgICAgMywwLDAsMCwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw2LDAsMCwKKyAgICAwLDcwLDEwNSwxMDgsMTAxLDczLDc5LDExNyw0LDAsMCwwLDExNCwxMDEsOTcsMTAwLAorICAgIDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNiw0LDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDIsMjEsMSwxMTcsMTksMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsOSwKKyAgICAwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LAorICAgIDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLDAsMCw5NSw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEyLDAsMCwwLDEwMywxMDEsCisgICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDMsCisgICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLAorICAgIDQwLDEsMCwwLDAsMTE3LDksMCwwLDAsOTUsOTUsOTksMTA4LDk3LDExNSwKKyAgICAxMTUsOTUsOTUsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMjM5LDMsMCwwLDExNSwxMCwwLDAsMCwxNiwzLDYsCisgICAgMiwxMiw2LDI0LDcsMTgsNSwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDQsMCwwLDAsNjYsMCwwLDAsMTE1LDY4LDAsMCwwLAorICAgIDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLAorICAgIDEwMCwxMCwwLDgzLDQwLDExLDAsMCwwLDExNywxNiwwLDAsMCw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw2MiwKKyAgICAwLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LAorICAgIDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM5LDAsMCwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDUsMiwwLDEyNCwyLDAsCisgICAgMTA2LDIsMCwxMDAsMSwwLDU0LDEyNCwyLDAsMTA2LDMsMCwxMDAsMiwwLAorICAgIDU0LDgzLDQwLDMsMCwwLDAsMTE3LDMzLDAsMCwwLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMTcsNSwwLAorICAgIDAsMCwxMDksMTE2LDEwNSwxMDksMTAxLDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwKKyAgICA0MCw0LDAsMCwwLDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwKKyAgICAwLDAsMTE1LDExNiw5NywxMTYsMTE3LDgsMCwwLDAsMTE1LDExNiw5NSwxMDksMTE2LAorICAgIDEwNSwxMDksMTAxLDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQwLAorICAgIDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNywyLDAsMCwwLDExNSwxMTYsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE2LDQsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMiwxNSwxLDExNywyNywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsODEsMCwwLDAsMTIxLAorICAgIDIyLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDYsMiwKKyAgICAwLDEyNSw0LDAsODcsMTEwLDI0LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwKKyAgICA0OCwwLDEsMSwxLDEwMCwxLDAsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LAorICAgIDEyNCw0LDAsMTAwLDIsMCw3OSwxMjUsNCwwLDEyNCwwLDAsMTA2LDQsMCwKKyAgICAxMjQsMiwwLDEyNCwzLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLDEsODMsCisgICAgNDAsNCwwLDAsMCw3OCwxMDUsMTgyLDEsMCwwLDEwNSwxMjgsMCwwLDAsCisgICAgMTE3LDUsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTAxLDQwLDUsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LDExNiwKKyAgICAxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDEwOSwxMTEsMTAwLDEwMSwxMTcsNywwLDAsCisgICAgMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsCisgICAgOTUsMTAwLDk3LDExNiw5Nyw0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTcsNCwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTUsMCwwLDAsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMSw0LDAsMCwxMTUsMTIsMCwwLDAsCisgICAgMCwyLDMsMSwyMiwxLDEzLDEsMTEsMywxMCwxLDExNywzMiwwLDAsCisgICAgMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMTE3LDUsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTAxLDEwNSwxODIsMSwwLDAsCisgICAgOTksMywwLDAsMCwxLDAsMCwwLDksMCwwLDAsMTgsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDUzLDEsMCwwLDExNiwwLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTAzLDAsMCwxMjUsCisgICAgNiwwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLDAsMTE2LDEsMCwxMjQsNCwKKyAgICAwLDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsMCwxMjQsNCwwLDEzMSwxLAorICAgIDAsOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwxMjQsNiwwLDEwNiwyLDAsCisgICAgMTI0LDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsODcsMTIwLDEzMiwwLDExNiwzLAorICAgIDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDExOCwwLDEyNSw3LDAsMTE2LDQsCisgICAgMCwxMjQsNCwwLDEyNCw3LDAsMTMxLDIsMCwxMjUsNCwwLDEyMSwxNywwLAorICAgIDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLDAsMSw4NywxMTMsOTQsCisgICAgMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDE1NSwwLDEsMSwxLDExOSw5NCwKKyAgICAwLDg5LDExMyw5NCwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjExLDAsMSwKKyAgICAxMjUsOCwwLDEsMTIyLDI1LDAsMTE2LDksMCwxMDAsMSwwLDEyNCw0LDAsCisgICAgMTI0LDgsMCwxMzEsMywwLDEsMTAwLDIsMCw4Myw4Nyw4OSwxMDAsMiwwLAorICAgIDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMyw5NCwwLDg4LDExMyw5NCwKKyAgICAwLDg3LDEyMSwzMywwLDExNiwxMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywKKyAgICAwLDEzMSwzLDAsMSwxMTYsOSwwLDEwMCwzLDAsMTI0LDEsMCwxMzEsMiwKKyAgICAwLDEsODcsMTEwLDUzLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCw0OCwxLAorICAgIDEsMTI1LDgsMCwxLDEyMiwyMSwwLDExNiw5LDAsMTAwLDEsMCwxMjQsMSwKKyAgICAwLDEyNCw4LDAsMTMxLDMsMCwxLDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwKKyAgICAxMjUsOCwwLDEyNiw4LDAsODgsMTEwLDEsMCw4OCwxMDAsMiwwLDgzLDQwLAorICAgIDQsMCwwLDAsMTE3LDI3LDAsMCwwLDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwKKyAgICAxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSw0NiwxMTcsMjcsMCwwLDAsOTksMTExLDExNywxMDgsMTAwLDMyLDExMCwKKyAgICAxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw3OCwxMTcsMTIsMCwwLDAsOTksMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw0MCwxMSwwLDAsMCwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTcsNiwwLDAsMCwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw4LDAsMCwwLDExNCwxMDEsMTE4LDEwMSwxMTQsCisgICAgMTE1LDEwMSwxMDAsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsCisgICAgMTA1LDExMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw1LDAsMCwwLDEwOSwKKyAgICAxMDcsMTAwLDEwNSwxMTQsMTE3LDE1LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsCisgICAgMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDc5LDgzLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKKyAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDEzLDAsMCwwLDk1LDExOSwKKyAgICAxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDQwLDksMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywxMTYsOTcsMTE3LDUsMCwwLDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTAxLDExNyw2LDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNywxMCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNCwxMTYsMTE3LDMsMCwwLDAsMTAxLDEyMCw5OSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDExNSwxMDEsCisgICAgMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsNCwwLDAsMTE1LDM4LDAsMCwwLDAsCisgICAgMiwxOCwxLDYsMiwyMiwxLDE4LDEsMTcsMiwxOSwxLDE1LDEsMywKKyAgICAxLDE3LDEsMTMsMiw3LDEsMTgsMywxNiwxLDI3LDEsMywxLDE2LAorICAgIDEsMTcsMSwxOCwyLDExNywyNSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCwKKyAgICA5NywxMTYsOTcsNzgsNDAsNywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksCisgICAgOTUsOTUsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LAorICAgIDExNSwxMTcsMTUsMCwwLDAsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxNiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyLDQsMCwwLDExNSw4LDAsMCwwLAorICAgIDE2LDIsNiwyLDEyLDUsMTIsMTEsMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLAorICAgIDAsMCwxMTUsNjIsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsCisgICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKKyAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCisgICAgMCwxMDAsOCwwLDgzLDQwLDksMCwwLDAsMTE3LDIwLDAsMCwwLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNyw0NSwwLDAsMCw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTI0LAorICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMSwxLAorICAgIDEsODMsNDAsMywwLDAsMCw3OCwxMTcsMTAsMCwwLDAsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsODQsNDAsMiwwLDAsMCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsCisgICAgMCwwLDAsODQsMTE0LDExNywxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDY1LDQsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMzIsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsNiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTM4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwKKyAgICAxMzEsMSwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTI0LAorICAgIDMsMCwxMjQsMiwwLDEwMCwwLDAsMTMxLDQsMCwxMjUsNCwwLDExNiw0LAorICAgIDAsMTA2LDUsMCwxMjQsNCwwLDEzMSwxLDAsMTI1LDUsMCwxMTYsNiwwLAorICAgIDEyNCw1LDAsMTE2LDcsMCwxMzEsMiwwLDExNCwxMDEsMCwxMTYsOCwwLDEwMCwKKyAgICAxLDAsMTI0LDIsMCwxMzEsMiwwLDEsMTI0LDUsMCw4MywxMTYsOSwwLAorICAgIDEwMCwyLDAsMTA2LDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEwMCwzLDAsMTI0LAorICAgIDEsMCwxMDAsNCwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwwLAorICAgIDAsODMsNDAsNSwwLDAsMCw3OCwxMTcsMjEsMCwwLDAsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsCisgICAgMTE0LDEyNSwxMTcsMjEsMCwwLDAsNzgsMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNyw0LDAsMCwKKyAgICAwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDExLAorICAgIDAsMCwwLDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiwKKyAgICA5NywxMTcsMjAsMCwwLDAsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLAorICAgIDEwOSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsNCwwLDAsMCw3OCwKKyAgICAxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDExNywKKyAgICA1LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDExNSwxMTcsMTAsMCwwLDAsMTA1LDExNSwKKyAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTcsMTAsMCwwLDAsOTUsOTksMTExLAorICAgIDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCwKKyAgICA5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsMTEsMCwwLAorICAgIDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw0MCw2LDAsMCwwLDExNyw0LDAsMCwKKyAgICAwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsCisgICAgMTAwLDk3LDExNiw5NywxMTcsMTAsMCwwLDAsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCwKKyAgICA5NywxMTYsOTcsMTE3LDUsMCwwLDAsMTAyLDExMSwxMTcsMTEwLDEwMCw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsCisgICAgMTE2LDk1LDk5LDExMSwxMDAsMTAxLDY4LDQsMCwwLDExNSwxOCwwLDAsMCwwLAorICAgIDEsMTUsMSwxNSwxLDI0LDEsMTUsMSwxNSwxLDEzLDEsNCwyLDE4LAorICAgIDEsMTE3LDI5LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LAorICAgIDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCwKKyAgICA4Myw0MCwyLDAsMCwwLDExNywzOSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDQ2LDc4LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwKKyAgICAxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LAorICAgIDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsODAsNCwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwyLDExNywzMSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsCisgICAgMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LDQwLDcsMCwwLDAsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsCisgICAgMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwKKyAgICAxMDAsMTExLDk5LDk1LDk1LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCisgICAgMTAwLDEwMSwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMjAsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsNCwwLDAsMTE1LDgsCisgICAgMCwwLDAsMTYsMiw2LDIsMTIsMywxMiwxMiwxMTcsMjAsMCwwLDAsCisgICAgODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsNSwwLDAsMCw2NiwwLDAsMCwxMTUsMTA0LDAsMCwwLDEyNCwwLAorICAgIDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsCisgICAgMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLAorICAgIDEwMSw1LDAsMTAxLDYsMCwxMDEsNywwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCisgICAgMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDgsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDgsMCwxMDAsOSwwLAorICAgIDEzMiwwLDAsOTAsMTAsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLAorICAgIDExLDAsMTAwLDEyLDAsODMsNDAsMTMsMCwwLDAsMTE3LDE5LDAsMCwwLAorICAgIDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNyw5MywwLDAsMCw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsOTksCisgICAgMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDExOSwKKyAgICAxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwKKyAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsCisgICAgMCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsMiwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5Nyw0LDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsOSwxLDExNywyOCwwLDAsMCw2OSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDQsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDE3NSwKKyAgICAwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNiwwLDEyNSwKKyAgICAyLDAsMTIxLDEwNywwLDExNiwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLAorICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEzMSwzLDAsMTI1LDMsMCwxMTYsNiwwLAorICAgIDEwMCwxLDAsMTI0LDAsMCwxMDYsNSwwLDEzMSwyLDAsMSwxMjQsMCwwLAorICAgIDEwNiw3LDAsMTI0LDEsMCwxMzEsMSwwLDExNCwxMTcsMCwxMTYsOCwwLDEyNCwKKyAgICAzLDAsMTAwLDIsMCwxMzEsMiwwLDEyLDExNCwxMTcsMCwxMTYsOSwwLDEyNCwKKyAgICAwLDAsMTA2LDUsMCwxMzEsMSwwLDEwMCwzLDAsMjUsMTAzLDEsMCwxMjQsCisgICAgMywwLDk1LDEwLDAsMTEwLDAsMCwxMjQsMywwLDgzLDg3LDExMCw0NiwwLAorICAgIDEsMSwxLDEyNCwyLDAsMTIsMTE0LDE2MywwLDEyNCwxLDAsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDEwNyw2LDAsMTE0LDE2MywwLDExNiwwLDAsMTA2LDEsMCwxMjQsCisgICAgMSwwLDYxLDExMCwwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCw0LAorICAgIDAsODMsNDAsNSwwLDAsMCwxMTcsMjUsMCwwLDAsNzYsMTExLDk3LDEwMCwKKyAgICAzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTE3LDMzLDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDEwNSwwLDAsMCwwLDc4LDQwLDExLAorICAgIDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LAorICAgIDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLAorICAgIDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE3LAorICAgIDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsCisgICAgMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMCwwLAorICAgIDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNywwLDAsCisgICAgMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDk1LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE3LDYsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTAxLDQsMCwwLDExNSwyNCwwLDAsMCwwLDUsCisgICAgMTUsMSwzLDEsOSwxLDE1LDEsMTYsMSwzMSwxLDI4LDEsOCwxLAorICAgIDMsMSwyMiwxLDEzLDEsMTE3LDMxLDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwxMTUsCisgICAgNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwKKyAgICAxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwxMzUsMCwwLDEwMiwxLDAsCisgICAgMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LDMsMCw2OCwxMzEsMSwwLAorICAgIDEzMSwxLDAsODMsNDAsNCwwLDAsMCwxMTcsNDksMCwwLDAsODIsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDEwNSwKKyAgICAxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDQsMCwwLDAsNTEsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLAorICAgIDAsOTMsMjEsMCwxMjUsMSwwLDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLAorICAgIDIzLDEwNywyLDAsODYsMSwxMTMsMywwLDEwMCwxLDAsODMsNDAsMiwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNzgsCisgICAgNDAsMCwwLDAsMCw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LAorICAgIDQ4LDExNyw2LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDQwLDEsMCwwLAorICAgIDAsMTE3LDksMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwKKyAgICAxMjAsMTEyLDExNCw2MiwxMjIsNCwwLDAsMTE1LDIsMCwwLDAsNiwxLDExNywKKyAgICA0OSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDQwLDQsMCwwLDAsMTE3LDExLDAsMCwwLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDMsMCwwLDAsOTcsMTEwLDEyMSwxMTcsMTgsMCwwLDAsCisgICAgNjksODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsCisgICAgNjksODMsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwKKyAgICAwLDAsNDAsMSwwLDAsMCwxMTcsOSwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTksNCwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICAyLDE5LDEsMTgsMSwxMTcsMzAsMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAorICAgIDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDYzLDAsMCwwLAorICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk3LAorICAgIDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDMyLDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0Niw3OCwKKyAgICA0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwKKyAgICAwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwKKyAgICAxMDAsMTAxLDEyNSw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI4LDAsCisgICAgMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwKKyAgICAwLDExNyw1MywwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDQwLDEsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMTI5LDQsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMzAsMCwwLDAsCisgICAgNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MCwKKyAgICAxMiwwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsCisgICAgMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwKKyAgICAwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLDAsMCw5NSwKKyAgICA5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMCwwLDAsMCwxMTUsCisgICAgMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLAorICAgIDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTAsMCwwLDAsMTA1LDExNSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsCisgICAgOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDg5LDQsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxNiw2LDYsMiwxMiw0LDMsMSwzLDEsMjQsCisgICAgMTYsMTIsNiwxMiw0LDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LDAsCisgICAgMCwwLDExNSwxMzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsCisgICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKKyAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCisgICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsCisgICAgMTAwLDExLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLAorICAgIDAsMCw5MCw5LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwKKyAgICAwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTgsMCwKKyAgICAxMDAsMTksMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDIwLDAsODMsNDAsMjEsMCwKKyAgICAwLDAsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsODAsOTcsMTE2LDEwNCwxMTcsMzcsMSwwLDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwKKyAgICAxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwKKyAgICAzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsCisgICAgMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiwKKyAgICA4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLAorICAgIDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsCisgICAgMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwKKyAgICAxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsCisgICAgMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLAorICAgIDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTE1LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDk5LAorICAgIDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDUyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKKyAgICAwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMTYsMiwwLDEyNCwwLAorICAgIDAsMTA2LDMsMCwxMzEsMCwwLDEzMSwxLDAsMTI0LDAsMCw5NSw0LDAsCisgICAgMTI0LDMsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsNiwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNSwwLDAsCisgICAgMCwxMTYsMTE3LDExMiwxMDgsMTAxLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwKKyAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxNywwLDAsMCwKKyAgICA5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNywxMiwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsMTEsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwKKyAgICAwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTQxLDQsMCwwLDExNSwKKyAgICA4LDAsMCwwLDAsMSw5LDEsOSwxLDIxLDEsMTE3LDIzLDAsMCwKKyAgICAwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMCwKKyAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwKKyAgICAwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLAorICAgIDEwMCwyLDAsMTA3LDIsMCwxMTQsNDMsMCwxMDAsNiwwLDgzLDEyNCwxLDAsCisgICAgMTAwLDUsMCwxMDIsMiwwLDgzLDQwLDcsMCwwLDAsMTE3LDYyLDAsMCwKKyAgICAwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsCisgICAgMzIsMTExLDEwMiwzMiw0MCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQ1LDExMCw5NywxMDksMTAxLDQ0LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsCisgICAgMTEyLDk3LDExNiwxMDQsNDUsOTcsMTE2LDExNiwxMTQsNDUsMTEwLDk3LDEwOSwxMDEsNDEsMTE3LAorICAgIDEsMCwwLDAsNDYsMTE3LDAsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDAsMiwwLDAsMCwxMTcsMywwLAorICAgIDAsMCwxMTUsMTIxLDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwyLAorICAgIDAsMCwwLDExNyw1LDAsMCwwLDk1LDExMCw5NywxMDksMTAxLDExNywxMCwwLAorICAgIDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MCw0LDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNiwwLDAsMCwxMTIsCisgICAgOTcsMTE0LDEwMSwxMTAsMTE2LDExNywzLDAsMCwwLDEwMCwxMTEsMTE2LDExNywyLDAsCisgICAgMCwwLDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE0Nyw0LDAsMCwKKyAgICAxMTUsOCwwLDAsMCwwLDIsMjcsMSwxMiwyLDQsMywxMTcsMzgsMCwKKyAgICAwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDQ2LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLAorICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCw5MiwyLDAsMTI1LDEsCisgICAgMCwxMjUsMiwwLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsCisgICAgMjUsMTI0LDIsMCwxMzEsMiwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsNCwKKyAgICAwLDAsMCwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNywKKyAgICA3LDAsMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNywzLDAsMCwwLAorICAgIDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MCwKKyAgICAzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTgsMCwKKyAgICAwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsMTQsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LAorICAgIDExNiwxMTQsOTUsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxNTcsNCwwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwxLDE4LDEsMTE3LDMxLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwMywKKyAgICAwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwKKyAgICAxLDAsMTI1LDEsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMDcsMywKKyAgICAwLDExNCw5NiwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsCisgICAgMTI0LDEsMCwxMzEsMiwwLDkyLDIsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LAorICAgIDIsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDg0LDAsMTI0LDMsMCwxMjQsMCwKKyAgICAwLDk1LDYsMCwxMTAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsCisgICAgMTEwLDAsMCwxMjQsMCwwLDEwNiw2LDAsODMsNDAsMSwwLDAsMCw3OCwKKyAgICA0MCw3LDAsMCwwLDExNyw1LDAsMCwwLDExNiwxMTcsMTEyLDEwOCwxMDEsMTE3LAorICAgIDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDE3LDAsMCwwLDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDEyLDAsMCwwLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNyw1LDAsMCwwLAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LAorICAgIDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDQwLDQsMCwwLDAsMTE3LDQsMCwKKyAgICAwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywxMSwwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTE3LDgsMCwwLDAsMTEwLDEwMSwxMTksOTUsMTEyLDk3LDExNiwxMDQsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsCisgICAgMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDE2MSw0LDAsMCwxMTUsCisgICAgMTQsMCwwLDAsMCwyLDE4LDEsMTUsMSwyNywzLDEyLDEsMTIsMSwKKyAgICAxMiwxLDExNywyNywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywKKyAgICAxMTYsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LAorICAgIDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCw4Myw0MCwxLDAsMCwKKyAgICAwLDc4LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTA1LDExNiwxMDEsMTE0LAorICAgIDExNywxMiwwLDAsMCw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwKKyAgICAxMDEsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsMTczLDQsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMTcsMjMsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LAorICAgIDEsMCwxMzEsMCwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwKKyAgICAyLDAsMCwwLDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNywxMiwwLDAsCisgICAgMCw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsNDAsMSwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsMCw5NSw5NSwxMDgsMTAxLAorICAgIDExMCw5NSw5NSwxNzYsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyMiwKKyAgICAwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwKKyAgICAxMDQsNDYsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsCisgICAgMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCisgICAgMSwwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDIwLDAsMCwwLDk1LDc4LAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LAorICAgIDEyNSw0MSw0MCwyLDAsMCwwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSwKKyAgICA5NywxMTYsMTE3LDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsNDAsMSwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwKKyAgICAxMTQsOTUsOTUsMTc5LDQsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMjMsCisgICAgMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsCisgICAgMTA0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLAorICAgIDEwNyw2LDAsODMsNDAsMSwwLDAsMCw3OCw0MCwxLDAsMCwwLDExNywKKyAgICAxMiwwLDAsMCw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsCisgICAgNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsCisgICAgMCwwLDAsMTA1LDExNiwxMDEsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwKKyAgICAxMTAsMTE1LDk1LDk1LDE4Miw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LAorICAgIDI3LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw0Niw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LAorICAgIDEsMCwxMjQsMSwwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMiwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQwLDIsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLAorICAgIDEwNSwxMTYsMTAxLDEwOSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTg1LDQsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsMSwxMTcsMjEsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsCisgICAgNzgsNDAsMTMsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMjMsMCwwLAorICAgIDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLAorICAgIDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLAorICAgIDAsMCw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTE3LDgsCisgICAgMCwwLDAsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDExNyw3LDAsMCwwLAorICAgIDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsCisgICAgMTEyLDExNCw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsCisgICAgMTA1LDExMCwxMTUsOTUsOTUsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwKKyAgICA0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTQsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKKyAgICA5NywxMTYsMTA0LDEzNCw0LDAsMCwxMTUsMjAsMCwwLDAsMTYsNSw2LDIsCisgICAgMTIsNiwxMiwxMCwxMiw0LDEyLDEyLDEyLDMsMTIsMywxMiwzLDEyLDMsCisgICAgMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCisgICAgOTcsMTE2LDEwNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAzLDAsMCwwLDY2LDAsMCwwLDExNSw2OCwwLDAsMCwxMjQsMCwwLAorICAgIDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsCisgICAgMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDEsNCwwLDEwMCwzLDAsMTAwLAorICAgIDQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDUsCisgICAgMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCw3LDAsMTAwLDcsMCwKKyAgICA4Myw0MCw4LDAsMCwwLDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSw0LDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLAorICAgIDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MCwxLDAsCisgICAgMCwwLDc4LDQwLDIsMCwwLDAsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwxMTcsNSwwLDAsMCwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCwxMTcsMTEsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTAyLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTkwLDQsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMjQsMCwwLDAsNzgsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsCisgICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLAorICAgIDEwMCwxLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCw4MywKKyAgICA0MCwyLDAsMCwwLDc4LDExNywyNSwwLDAsMCw2MCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwzOSwxMjMsMTI1LDM5LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDQxLDYyLDQwLDIsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwKKyAgICAxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDYsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDE5Myw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTE3LDI3LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLDAsCisgICAgMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsMSwxMjQsMCwwLDEwNiwxLDAsCisgICAgMTI0LDEsMCw5NSwyLDAsMTI0LDEsMCw4Myw0MCwyLDAsMCwwLDExNywKKyAgICAyNCwwLDAsMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDExNywzOCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMjMsMzMsMTE0LDEyNSw0MCwzLDAsMCwwLDExNywxNiwwLDAsCisgICAgMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLAorICAgIDEwMSwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0MCwyLDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLAorICAgIDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTcsNCwwLAorICAgIDAsMTE1LDYsMCwwLDAsMCwzLDE2LDEsMTIsMSwxMTcsMjcsMCwwLAorICAgIDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDAsOCwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsCisgICAgMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLAorICAgIDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTEsMCwwLAorICAgIDAsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDExLDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwxMTcsMTcsMCwwLAorICAgIDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSwKKyAgICA5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDE4OSw0LDAsMCwxMTUsNiwwLDAsMCwxNiwKKyAgICAxLDEyLDMsMTgsNCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsNCwwLDAsMCw2NiwwLDAsMCwxMTUsMTE5LAorICAgIDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCwKKyAgICA5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwKKyAgICAzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCw0LAorICAgIDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLDEwMSw0LDAsCisgICAgMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCw3LDAsMTAxLAorICAgIDQsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsCisgICAgMCwxMDEsNCwwLDEwMCwxMiwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwxLDAsCisgICAgMTMxLDEsMCw5MCwxMCwwLDEwMCwxMiwwLDgzLDQwLDEzLDAsMCwwLDExNywKKyAgICAxMCwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDYyLAorICAgIDAsMCwwLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwKKyAgICA0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsMCwxMjAsNTEsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDY4LDkzLDM0LDAsMTI1LDEsCisgICAgMCwxMTYsMywwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwxNiwwLAorICAgIDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwwLDEsMTEzLDE2LDAsMTEzLDE2LDAsCisgICAgODcsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywxMjUsMCwwLDAsNjcsCisgICAgOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywKKyAgICAxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDMyLDExMSwxMTAsMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsCisgICAgMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwKKyAgICAxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDExNywxNywwLDAsCisgICAgMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTE1LDc4LDQwLDUsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsCisgICAgMTE3LDE5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsNiwwLDAsMCwxMTgsOTcsMTA4LAorICAgIDExNywxMDEsMTE1LDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LAorICAgIDE3LDAsMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMTUsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwKKyAgICAxMDgsMTE1LDExNyw2LDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDEwNSwxMTAsCisgICAgMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsMjExLAorICAgIDQsMCwwLDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTE3LDI4LAorICAgIDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLAorICAgIDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw5NCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LAorICAgIDI4LDAsMTE2LDIsMCwxMDYsMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwKKyAgICAwLDEsMTEwLDAsMCwxMjAsNTksMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsCisgICAgNDQsMCwxMjUsMiwwLDEyMSwxNCwwLDEyNCwyLDAsMTI0LDEsMCwxMzEsMSwKKyAgICAwLDgzLDg3LDExMywzOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsODEsMCwKKyAgICAxLDEsMSwxMTksMzgsMCw4OSwxMTMsMzgsMCw4OCwxMTMsMzgsMCw4NywxMDAsCisgICAgMiwwLDgzLDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMTEzLDAsMCwKKyAgICAwLDgzLDEwMSw5NywxMTQsOTksMTA0LDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSwKKyAgICAzMiwxMTEsMTAyLDMyLDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsCisgICAgMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDM5LAorICAgIDEwNCwxMTEsMTExLDEwNywxMTUsMzksMzIsMTA1LDExNSwzMiwxMDIsOTcsMTA4LDExNSwxMDEsMzIsCisgICAgMTE2LDEwNCwxMDEsMTEwLDMyLDExNywxMTUsMTAxLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE3LDIzLDAsMCwwLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LDQwLAorICAgIDcsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDEwLDAsMCwKKyAgICAwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMTE3LDksMCwwLDAsCisgICAgOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDExNyw0LDAsMCwwLDExOSw5NywKKyAgICAxMTQsMTEwLDExNywxMywwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwKKyAgICAxMTAsMTA1LDExMCwxMDMsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDMsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDQsMTExLDExMSwxMDcsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwyMTksNCwwLDAsMTE1LDE2LDAsMCwKKyAgICAwLDAsNyw5LDEsMTksMSwxNiwxLDMsMSwxNCwxLDEzLDEsMTIsCisgICAgMiwxMTcsMjIsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDkxLDAsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwKKyAgICAyMSwwLDEwMCwyLDAsMTI1LDEsMCwxMTAsMCwwLDEyMSwxNywwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDI1LDEyNSwyLDAsODcsMTEwLDQ2LDAsNCwKKyAgICAxMTYsMiwwLDEwNywxMCwwLDExNCw4NiwwLDEsMSwxLDEyNCwwLDAsMTA2LAorICAgIDMsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDYwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwKKyAgICA4Myw0MCwzLDAsMCwwLDExNywyMTAsMCwwLDAsNzEsMTAxLDExNiwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsNDQsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk3LDExMiwxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LAorICAgIDExMCwxMDAsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMDUsMTE2LDQ2LDMyLDczLDEwMiwzMiwKKyAgICAxMTAsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LAorICAgIDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NCwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDMyLDc4LDExMSwKKyAgICAxMTAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNywwLDAsCisgICAgMCwwLDExNywxLDAsMCwwLDQ2LDQwLDQsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTE1LDEyMSwxMTUsMTE3LDE5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsOCwwLAorICAgIDAsMCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0MCwzLDAsMCwwLDExNywKKyAgICAzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDYsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjAsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDIzNiw0LDAsMCwxMTUsMTYsMCwwLDAsMCw4LDEyLDEsOSwxLDMsCisgICAgMSwxNywxLDEzLDEsMTUsMSwxOCwxLDExNywzMSwwLDAsMCw4MCw5NywKKyAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw4LDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE2MiwwLDAsMCwxMDMsMCwwLDEyNSwzLDAsMTIwLDE0OSwwLAorICAgIDEyNCwyLDAsNjgsOTMsMTMxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMTI0LDQsMCwxMzEsMSwwLDEyNSw1LDAsMTI0LDUsMCwxMDAsMiwwLDEwNywKKyAgICA5LDAsMTE0LDEzLDAsMTE2LDIsMCwxMjQsNSwwLDEwMCwxLDAsMTMxLDIsCisgICAgMCwxMTQsODUsMCwxMjQsNSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDkyLDIsMCwxMjUsNiwwLDEyNSw3LDAsMTEwLDIxLDAsMTI0LDUsMCwxMDYsCisgICAgNCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNiwwLDEwMywwLDAsMTI1LDcsCisgICAgMCwxMjQsNiwwLDEwMCwyLDAsMTA3LDksMCwxMTQsMTI4LDAsMTI0LDYsMCwKKyAgICAxMjQsMywwLDEwMiwyLDAsODMsMTI0LDMsMCwxMDYsNSwwLDEyNCw3LDAsCisgICAgMTMxLDEsMCwxLDExMywxMywwLDExMywxMywwLDg3LDEwMCwyLDAsMTI0LDMsCisgICAgMCwxMDIsMiwwLDgzLDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsNjMsCisgICAgMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEwLDk3LDEwOSwKKyAgICAxMDEsNDYsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDc4LDQwLDYsMCwwLDAsMTE3LDIwLDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMDQsCisgICAgOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTAwLDQwLDgsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDE0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNyw1LDAsMCwwLDEwMSwxMTAsMTE2LDExNCwKKyAgICAxMjEsMTE3LDYsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDYsMCwwLAorICAgIDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsOCwwLDAsMCwxMTIsMTExLDExNCwxMTYsCisgICAgMTA1LDExMSwxMTAsMTE1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDExLDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMjUzLDQsMCwwLDExNSwyNCwwLDAsMCwwLDUsNiwxLDEzLDEsMTUsCisgICAgMSwxMiwxLDE1LDEsMjQsMiwxNSwxLDYsMSwxMiwyLDEwLDUsMjAsCisgICAgMiwxMTcsMjIsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMywwLDAsCisgICAgMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsOTcsMCwwLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAorICAgIDI0LDAsMTE2LDEsMCwxMDYsMiwwLDEyNSwyLDAsMTEwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsOTIsMiwwLAorICAgIDEyNSwzLDAsMTI1LDQsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsCisgICAgNjQsMCwxMjQsMywwLDgzLDEyNCw0LDAsMTE0LDg5LDAsMTE2LDQsMCwxMjQsCisgICAgMSwwLDEyNCw0LDAsMTI0LDAsMCwxMDYsMywwLDEzMSwzLDAsODMsMTAwLAorICAgIDEsMCw4MywxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDk4LDAsMCwKKyAgICAwLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwKKyAgICAzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLAorICAgIDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsCisgICAgMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsNDYsNzgsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsCisgICAgMTEwLDEwMSwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsMTEsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNSwwLDAsMCwxMTcsMywwLDAsCisgICAgMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMjIsNSwwLDAsMTE1LDE2LDAsMCwwLDAsNCwxMiwKKyAgICAxLDEyLDEsMjQsMSwxMiwxLDQsMiw2LDMsMTksMiwxMTcsMjIsMCwKKyAgICAwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MCwxMSwwLDAsMCwxMTcsOCwKKyAgICAwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsCisgICAgOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LAorICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLAorICAgIDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsCisgICAgMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxNywwLDAsMCwxMDUsMTEwLDExOCw5NywKKyAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDExNywxMSwwLAorICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNywyMCwwLAorICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDExLDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwKKyAgICAxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwKKyAgICAxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDIwNyw0LAorICAgIDAsMCwxMTUsMTQsMCwwLDAsMTYsMiw2LDIsMTgsOCwxOCwxNywxOCwKKyAgICAxNywxOCwyNSwzLDEsMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwzLDAsMCwwLDY2LDAsMCwwLDExNSwxMTAsMCwwLDAsMTI0LDAsCisgICAgMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwKKyAgICAwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsCisgICAgMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsOTAsCisgICAgNywwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsOCwKKyAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw5LDAsMTAxLDEwLDAsMTAwLDEwLDAsCisgICAgMTAwLDExLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAwLDEyLDAsMTAwLAorICAgIDEzLDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwxNCwwLDgzLDQwLDE1LDAsMCwKKyAgICAwLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDExNywxNzIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwKKyAgICAxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywKKyAgICAxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsCisgICAgMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksCisgICAgMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LAorICAgIDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLAorICAgIDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLAorICAgIDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsMTAzLDAsMCwxMjUsMywKKyAgICAwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCw5MiwyLDAsMTM3LDAsCisgICAgMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsMCwwLDEwMiwxLDAsCisgICAgMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsMCw2OCwxMzEsMSwwLAorICAgIDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMSwKKyAgICAwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsMCwwLDk1LDIsMCwKKyAgICAxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LDAsMTMxLDAsMCwxMjQsCisgICAgMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCw5NSw2LAorICAgIDAsMTAwLDUsMCw4Myw0MCw3LDAsMCwwLDExNywyMDEsMCwwLDAsNzMsCisgICAgMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwKKyAgICAxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LAorICAgIDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDUxLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LAorICAgIDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwKKyAgICAxMjAsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNCwKKyAgICAxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTE1LDQ0LDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsOTgsMTExLDExMSwxMDgsMTAxLDk3LDExMCwKKyAgICAzMiwxMTEsMTAyLDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwKKyAgICAwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwKKyAgICAwLDEwMiwyLDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDAsMSwwLAorICAgIDAsMCw3OCw0MCwwLDAsMCwwLDQwLDIsMCwwLDAsMTE3LDIsMCwKKyAgICAwLDAsNDYsNDgsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsNDAsCisgICAgMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwKKyAgICAxMjAsMTEyLDExNCw2Miw1NSw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTE3LAorICAgIDM4LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKKyAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE3LDEsMCwwLDAsNDYsCisgICAgMTA1LDEsMCwwLDAsNzgsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCw3LDAsMCwwLAorICAgIDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNyw4LDAsMCwwLAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsCisgICAgMTA0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksCisgICAgMTAxLDExNywzLDAsMCwwLDExNSwxMDEsMTE2LDExNywxMSwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxOSwwLDAsMCw5NSwxMTQsCisgICAgMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywKKyAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw3LDAsMCwwLDEwMCwxMDEsMTE2LAorICAgIDk3LDEwNSwxMDgsMTE1LDExNyw3LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LAorICAgIDExNyw4LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDAsMCwwLAorICAgIDAsMCw0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSwKKyAgICA5NSw0OSw1LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsMSwxOSwxLAorICAgIDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTE3LDE5LDAsMCwwLDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsMTI0LAorICAgIDAsMCw5NSwwLDAsMTAwLDIsMCw4Myw0MCw0LDAsMCwwLDExNywzMSwKKyAgICAwLDAsMCw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwxMDksCisgICAgMTAxLDQ2LDEwNSwxLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsMSwwLAorICAgIDAsMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsCisgICAgMTA5LDEwMSw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsCisgICAgMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTE1LDYzLDUsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsMCwKKyAgICAwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCwKKyAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwxMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTcyLDEsMCwwLDEwMCw1LDAsMTI1LDIsMCwxMjQsMSwKKyAgICAwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LDMsCisgICAgMCwxMjEsMjUsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLAorICAgIDEzMSwxLDAsMTA2LDUsMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDYsCisgICAgMCwxMDcsMTAsMCwxMTQsNzYsMCwxLDEsMSwxMDAsNiwwLDEyNSw0LDAsCisgICAgODksMTEwLDEsMCw4OCwxMjQsNCwwLDEyNCwwLDAsMTA2LDcsMCwxMDcsMywKKyAgICAwLDExNCwxMTQsMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDAsMCwxLDEyNCw0LAorICAgIDAsMTI0LDAsMCw5NSw3LDAsMTEwLDAsMCwxMTYsOSwwLDEzMSwwLDAsCisgICAgMTE0LDE0NywwLDEyNCwwLDAsMTA2LDEwLDAsMTI1LDUsMCwxMjQsMywwLDEwNiwKKyAgICAxMSwwLDEzMSwwLDAsMTI1LDYsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwKKyAgICAwLDEyNSw1LDAsMTI0LDMsMCwxMjUsNiwwLDEyNCw2LDAsMTI0LDUsMCwKKyAgICAxMDcsNiwwLDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjQsCisgICAgMywwLDEzMSwyLDAsMTI1LDcsMCwxMTYsMTQsMCwxMjQsNywwLDEzMSwxLAorICAgIDAsMTE0LDQ1LDEsMTIwLDkxLDAsMTI0LDAsMCwxMDYsMTUsMCw2OCw5Myw3MSwKKyAgICAwLDkyLDIsMCwxMjUsOCwwLDEyNSw5LDAsMTAwLDQsMCwxMjQsOCwwLAorICAgIDIzLDEyNSwxMCwwLDExNiwxMywwLDEyNCw3LDAsMTI0LDEwLDAsMTMxLDIsMCwKKyAgICAxMjUsMTEsMCwxMTYsMTYsMCwxMjQsMTEsMCwxMzEsMSwwLDExNCwyMTQsMCwxMjQsCisgICAgOSwwLDEyNCwxLDAsMTI0LDExLDAsMTMxLDIsMCwxMjQsNywwLDEwMywxLAorICAgIDAsMTAyLDIsMCw4MywxMTMsMjE0LDAsODcsMTAwLDcsMCwxMjUsMiwwLDExMywKKyAgICA0NSwxLDExMCwwLDAsMTIwLDk1LDAsMTI0LDAsMCwxMDYsMTUsMCw2OCw5MywKKyAgICA4NCwwLDkyLDIsMCwxMjUsOCwwLDEyNSw5LDAsMTI0LDYsMCwxMjQsOCwKKyAgICAwLDIzLDEyNCw1LDAsMTA3LDYsMCwxMTQsNTUsMSwxMTYsMTMsMCwxMjQsMCwKKyAgICAwLDEwNiw0LDAsMTI0LDMsMCwxMjQsOCwwLDIzLDEzMSwyLDAsMTI1LDExLAorICAgIDAsMTE2LDE2LDAsMTI0LDExLDAsMTMxLDEsMCwxMTQsMTM5LDEsMTI0LDksMCwKKyAgICAxMjQsMSwwLDEyNCwxMSwwLDEzMSwyLDAsMTAzLDAsMCwxMDIsMiwwLDgzLAorICAgIDExMyw1NSwxLDExMyw1NSwxLDg3LDEyNCwyLDAsMTE0LDE2MiwxLDEwMCw4LDAsCisgICAgMTI0LDcsMCwxMDMsMSwwLDEwMiwyLDAsODMsMTAwLDgsMCwxMDMsMCwwLAorICAgIDEwMiwyLDAsODMsNDAsOSwwLDAsMCwxMTcsMTI1LDAsMCwwLDg0LDExNCwKKyAgICAxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsCisgICAgMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwxMTEsCisgICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsCisgICAgNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLDEwMiwKKyAgICA0NSwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LDExNywxLDAsMCwwLAorICAgIDQ2LDEwNSwyLDAsMCwwLDEwNSwxLDAsMCwwLDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw3MCwxMDUsMjU1LDI1NSwyNTUsMjU1LDg0LDc4LAorICAgIDQwLDE5LDAsMCwwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLDExNywKKyAgICAxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMywKKyAgICAwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwwLDExNSwxMTYsOTcsMTE2LDExNywKKyAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwwLDExNSwxMTYsOTUsCisgICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwKKyAgICAxMDEsMTE3LDExLDAsMCwwLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNywxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAorICAgIDEwMSwxMTcsMTksMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsNSwwLDAsMCwxMDgsMTExLAorICAgIDExOSwxMDEsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLAorICAgIDEwNSwxMTAsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLAorICAgIDEwNSwxMTQsMTE3LDgsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LAorICAgIDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNyw0LDAsMCwwLDc4LDExMSwKKyAgICAxMTAsMTAxLDQwLDEyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDEyLDAsCisgICAgMCwwLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTE3LDExLAorICAgIDAsMCwwLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw1LAorICAgIDAsMCwwLDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDUsMCwwLDAsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTcsMTIsMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTcsOSwwLDAsMCw5OCw5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNyw2LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDExNyw2LDAsMCwKKyAgICAwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEzLDAsMCwwLDEwNSwxMTAsMTA1LDExNiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDksMCwwLDAsMTAyLDExNywKKyAgICAxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDY5LDUsMCwwLDExNSw2MiwwLDAsMCwwLDMsNiwxLAorICAgIDE5LDEsMywxLDI1LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwxMiwyLAorICAgIDksMSw5LDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwxMiwxLAorICAgIDIyLDEsMTAsMSwxNSwxLDEyLDEsMjYsNCwxMiwyLDIyLDEsMTYsMSwKKyAgICAyMiwxLDEyLDEsMjYsMSw2LDEsMTMsMSwxMTcsMjIsMCwwLDAsNzAsCisgICAgMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsOSwwLAorICAgIDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMjU1LDAsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDAsMCwxMjUsMSwwLDEyMSwxOSwwLDExNiwxLDAsMTA2LDIsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjQsMCw0LDExNiwKKyAgICAzLDAsMTA3LDEwLDAsMTE0LDU0LDAsMSwxLDEsMTAzLDAsMCwxMjUsMiwKKyAgICAwLDg5LDExMCwxLDAsODgsMTE2LDQsMCwxMDYsNSwwLDEwNiw2LDAsMTAwLAorICAgIDEsMCwxMzEsMSwwLDExNSw5MSwwLDExNiw3LDAsMTI0LDIsMCwxMzEsMSwKKyAgICAwLDEyNCwwLDAsOTUsOCwwLDExMCwxMTEsMCwxMTYsNywwLDEzMSwwLDAsCisgICAgMTI1LDMsMCwxMjAsOTAsMCwxMjQsMiwwLDY4LDkzLDgyLDAsMTI1LDQsMCwKKyAgICAxMjQsNCwwLDEwNiw5LDAsMTAwLDIsMCwxMzEsMSwwLDkyLDMsMCwxMjUsCisgICAgNSwwLDEyNSw2LDAsMTI1LDcsMCwxMjQsNiwwLDExNCwxNzAsMCwxMDAsMywKKyAgICAwLDEwNiwxMCwwLDEyNCw1LDAsMTI0LDcsMCwxMDYsMTEsMCwxMzEsMCwwLAorICAgIDEzMSwyLDAsMTI1LDgsMCwxMTAsNiwwLDEyNCw1LDAsMTI1LDgsMCwxMjQsCisgICAgMywwLDEwNiwxMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMDcsMCw4NywKKyAgICAxMjQsMywwLDEyNCwwLDAsOTUsOCwwLDExNiw0LDAsMTA2LDUsMCwxMDYsCisgICAgNiwwLDExNiwxMywwLDEzMSwxLDAsMTE0LDI1MSwwLDExNiw3LDAsMTAwLDQsCisgICAgMCwxMDAsNSwwLDEzMiwwLDAsMTI0LDIsMCw2OCwxMzEsMSwwLDEzMSwxLAorICAgIDAsMTI0LDAsMCw5NSwxNCwwLDExMCwwLDAsMTAwLDYsMCw4Myw0MCw3LAorICAgIDAsMCwwLDExNyw2OCwwLDAsMCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsCisgICAgMTA1LDk3LDEwOCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LAorICAgIDExNSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNywzLDAsMCwKKyAgICAwLDExOSwxMDUsMTEwLDExNywxLDAsMCwwLDQ2LDExNyw1LDAsMCwwLDEyMywKKyAgICAxMjUsNDYsMTIzLDEyNSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwyLDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsCisgICAgMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwwLDAsCisgICAgODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwKKyAgICAxLDAsMCwwLDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsNDAsMiwKKyAgICAwLDAsMCwxMTcsMiwwLDAsMCw0Niw0OCwxMTcsMiwwLDAsMCwxMDIsCisgICAgMTEwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwKKyAgICAwLDAsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDEzOSw1LDAsMCwxMTUsCisgICAgMiwwLDAsMCw2LDAsMTE3LDQxLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwKKyAgICAxMjAsMTEyLDExNCw2Miw3OCw0MCwxNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw3LDAsMCwwLAorICAgIDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LDExNCwxMTcsMTcsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsCisgICAgMCwwLDExNSwxMjEsMTE1LDExNyw4LDAsMCwwLDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsCisgICAgMTE0LDEwOSwxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwKKyAgICAxMDQsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTYsMTE3LDExLDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDksMCwwLDAsMTEyLDk3LAorICAgIDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksCisgICAgOTcsMTE2LDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDMsMCwwLAorICAgIDAsOTcsMTAwLDEwMCwxMTcsMjcsMCwwLDAsOTUsNjcsNjUsODMsNjksOTUsNzMsCisgICAgNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsCisgICAgNzksODIsNzcsODMsMTE3LDE5LDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsCisgICAgMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDAsOSwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LAorICAgIDExNywyMSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsCisgICAgMTIwLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwxMTcsNCwwLDAsMCwxMDUsCisgICAgMTE2LDEwMSwxMDksMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDMsMCwwLAorICAgIDAsMTAwLDExMSwxMTYsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTE3LAorICAgIDgsMCwwLDAsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTAyLDEwNSwKKyAgICAxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTExLDUsMCwwLDExNSwzNCwwLDAsCisgICAgMCwwLDIsOSwxLDMsMSwxOSwxLDEzLDIsMTEsMywxOCwxLDE4LAorICAgIDcsOSwxLDEzLDEsMjQsMSw2LDEsMjcsMiw2LDEsMTcsMSw5LAorICAgIDEsMTgsMSwxMTcsMjIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDcsCisgICAgMCwwLDAsMTE1LDI1LDAsMCwwLDEzNSwwLDAsMTM1LDEsMCwxMDIsMiwKKyAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsMTI0LDIsMCwKKyAgICA4Myw0MCwzLDAsMCwwLDExNywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsCisgICAgMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsCisgICAgMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsCisgICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksCisgICAgMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwKKyAgICAxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywKKyAgICAxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLAorICAgIDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCisgICAgMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywKKyAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKKyAgICAxOSwwLDAsMCwxMTUsNDYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDAsMTE1LDMzLDAsMTE2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDAsCisgICAgMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsCisgICAgMTM2LDEsMCwxNDAsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDQ1LDAsMCwKKyAgICAwLDgwLDk3LDExNiwxMDQsMzIsMTA0LDExMSwxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwKKyAgICAxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTE3LDMwLAorICAgIDAsMCwwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsCisgICAgMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNywKKyAgICAxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDExNywKKyAgICAxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCw0MCwKKyAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDIsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMTQsMCwwLDAsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMjQsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKKyAgICAxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsMTUxLDUsMCwwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDIxLDEsCisgICAgMTE3LDU0LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAorICAgIDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsCisgICAgOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwwLAorICAgIDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMTQsMCwKKyAgICAwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSwKKyAgICAxMTcsMjQsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwKKyAgICAxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLAorICAgIDAsMCw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LAorICAgIDE0LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LAorICAgIDEwOCwxMTUsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCisgICAgMTExLDEwNywxNDEsNSwwLDAsMTE1LDQsMCwwLDAsMCwxMCwyMSw2LDExNywKKyAgICAyMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLAorICAgIDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMDIsMSwwLDIyLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTE3LDE0LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMzcsMTE0LDQxLDQwLDEsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMSwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTU5LDUsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMTksMCwwLDAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsCisgICAgOTUsNzgsNDAsMTMsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LAorICAgIDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTcsMCwKKyAgICAwLDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDExNSwxMTcsMTcsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwxMTcsMTEsMCwwLDAsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCwxMDIsMTA1LAorICAgIDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsOTUsMTAyLAorICAgIDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDExLDAsMCwwLDk5LDEwOCwKKyAgICA5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNyw5LDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLAorICAgIDExMiwxMTQsOTUsOTUsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDAsNSwwLDAsMTE1LDE2LDAsMCwwLDE2LDcsNiwyLAorICAgIDEyLDE0LDEyLDQsNiwyLDEyLDQyLDEyLDMwLDE4LDE4LDExNywxMCwwLDAsCisgICAgMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsCisgICAgMTE1LDUwLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLAorICAgIDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywKKyAgICAwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLAorICAgIDkwLDUsMCwxMDAsNiwwLDgzLDQwLDcsMCwwLDAsMTE3LDE4LDAsMCwKKyAgICAwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwKKyAgICAxMDEsMTIwLDExNiwxMTcsMzYsMCwwLDAsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsCisgICAgMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLAorICAgIDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMjQsMCwwLDAsNjUsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MCwyLDAsMCwwLDExNyw0LDAsMCwKKyAgICAwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsCisgICAgMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDksMCwwLDAsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSwxNjksNSwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyOCwwLDAsMCw5NSw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsCisgICAgNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSw0LDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsNjAsMCwwLDAsODIsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsCisgICAgMTExLDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsCisgICAgMTAyLDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LAorICAgIDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MCwyLDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0MCw0LDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDEsMTIwLDk5LDk1LDExNiwKKyAgICAxMjEsMTEyLDEwMSwxMTcsOSwwLDAsMCwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsMTE3LAorICAgIDEwMSwxMTcsMTMsMCwwLDAsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCwKKyAgICA5Nyw5OSwxMDcsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsMTczLDUsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiwxMTcsMjcsMCwwLDAsOTUsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LAorICAgIDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MCw2LDAsMCwwLDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsCisgICAgMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsCisgICAgOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsOSwwLDAsMCw5NSw5NSwxMDEsMTEwLDExNiwKKyAgICAxMDEsMTE0LDk1LDk1LDExNyw4LDAsMCwwLDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSwKKyAgICA5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksCisgICAgMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDE2NSw1LDAsMCwxMTUsNiwwLDAsCisgICAgMCwxNiwyLDYsMiwxMiw0LDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsOTEsMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwxLAorICAgIDAsMTI0LDIsMCwxMDAsMiwwLDI0LDEzMSwyLDAsMTI1LDMsMCwxMTYsMSwKKyAgICAwLDEyNCwzLDAsMTMxLDEsMCwxMjQsMiwwLDEwNywwLDAsMTE0LDU1LDAsCisgICAgMTE2LDIsMCwxMDAsMywwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwKKyAgICAzLDAsMTAwLDQsMCwyNSwxMjUsNCwwLDEyNCwwLDAsMTE0LDg3LDAsMTAwLAorICAgIDUsMCwxMDYsMywwLDEyNCw0LDAsMTI0LDAsMCwxMzEsMiwwLDgzLDEyNCwKKyAgICA0LDAsODMsNDAsNiwwLDAsMCwxMTcsNTAsMCwwLDAsODIsMTAxLDExNSwKKyAgICAxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsMzIsOTcsCisgICAgMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLDQ2LDExNywKKyAgICAxLDAsMCwwLDQ2LDEwNSwxLDAsMCwwLDExNyw1MCwwLDAsMCw5NywKKyAgICAxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLAorICAgIDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDEwNSwwLDAsMCwwLDExNyw1LDAsMCwwLDEyMywxMjUsNDYsMTIzLDEyNSwKKyAgICA0MCw0LDAsMCwwLDExNyw2LDAsMCwwLDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LAorICAgIDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNywxMCwwLDAsMCw4Niw5NywxMDgsCisgICAgMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LAorICAgIDk3LDExNiw0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLAorICAgIDExNyw3LDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNSwwLDAsCisgICAgMCwxMDgsMTAxLDExOCwxMDEsMTA4LDExNyw0LDAsMCwwLDk4LDEwNSwxMTYsMTE1LDExNywKKyAgICA0LDAsMCwwLDk4LDk3LDExNSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTMsMCwwLDAsOTUsMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsCisgICAgMTAxLDk1LDExMCw5NywxMDksMTAxLDE3OCw1LDAsMCwxMTUsMTAsMCwwLDAsMCwKKyAgICAyLDIyLDEsMTgsMSwxNSwxLDEwLDEsMTE3LDEzLDAsMCwwLDk1LDExNCwKKyAgICAxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTM4LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMTUsMjgsMCwxMTYsMiwKKyAgICAwLDEwNiwzLDAsMTAwLDEsMCwxMTYsNCwwLDEzMSwyLDAsMSwxMTAsMCwKKyAgICAwLDEyMCwxMDMsMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsODgsMCwxMjUsMiwKKyAgICAwLDExNiw1LDAsMTMxLDAsMCwxNDMsMjMsMCwxLDEyNCwyLDAsMTA2LDYsCisgICAgMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMywwLDg3LDEwMCwyLAorICAgIDAsODEsODgsMTI0LDMsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDM4LDAsMTI0LAorICAgIDAsMCwxMTYsMCwwLDEwNiw4LDAsMTA3LDcsMCwxMTQsMTA5LDAsMTI0LDMsCisgICAgMCw4MywxMTYsMCwwLDEwNiw4LDAsMTI0LDAsMCwyNSwxMDYsOSwwLDgzLAorICAgIDExMywzOCwwLDExMywzOCwwLDg3LDEwMCwyLDAsODMsMTAwLDIsMCw4Myw0MCwKKyAgICAzLDAsMCwwLDExNywyMywwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICAxMTcsMjIsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LDQwLDEwLDAsMCwKKyAgICAwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw5LDAsMCwwLDEwOSwxMDEsCisgICAgMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNyw5LDAsMCwwLDk1LDExOSw5NywxMTQsCisgICAgMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsNCwwLDAsMCwxMTksOTcsMTE0LDExMCwxMTcsMTMsCisgICAgMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAorICAgIDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsCisgICAgNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwKKyAgICAxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsNCwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNiwwLAorICAgIDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxODcsNSwwLDAsMTE1LDIwLDAsMCwwLDAsMiwKKyAgICA5LDEsMTksMSwxNiwxLDEwLDEsMjQsMSwxMiwyLDE1LDEsNCwyLAorICAgIDIxLDIsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSwxOTQsMCwwLDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDExNiwxLDAsMTMxLDIsMCwxMTUsNDUsMCwxMTYsMiwwLDEwMCwKKyAgICAxLDAsMTA2LDMsMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsMTAwLDIsMCwKKyAgICAxMDcsMCwwLDExNCw3MiwwLDExNiw1LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTEwLDAsMCwxMjQsMSwwLDExNCwxNTYsMCwxMTYsMCwwLDEyNCwxLAorICAgIDAsMTE2LDEsMCwxMzEsMiwwLDExNSwxMDgsMCwxMTYsMiwwLDEwMCw0LDAsCisgICAgMTMxLDEsMCwxMzAsMSwwLDExMywxNTYsMCwxMjQsMSwwLDExNiw2LDAsMTA2LAorICAgIDcsMCwxMDcsNywwLDExNCwxNTYsMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsCisgICAgMCwxMjQsMywwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMTMsMTU2LDAsMTEwLDAsMCwxMjQsMCwwLDEyLDExNCwxOTAsMCwKKyAgICAxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTkwLDAsMTE2LDUsMCwxMDAsCisgICAgNiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEwMCw3LDAsODMsNDAsCisgICAgOCwwLDAsMCwxMTcsMjgsMCwwLDAsODYsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwKKyAgICA5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMzQsMTE1LAorICAgIDk3LDExMCwxMDEsMzQsNDYsMTE3LDMxLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDExNiwKKyAgICAxMTQsNDQsMzIsMTEwLDExMSwxMTYsMzIsMTIzLDEyNSwxMDUsMCwwLDAsMCwxMTcsMTgsCisgICAgMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLAorICAgIDMyLDYyLDYxLDMyLDQ4LDExNywzMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwKKyAgICAzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMTcsNjEsMCwwLDAsODAsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDMyLDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLAorICAgIDExMCwxMTEsMTE2LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywKKyAgICAxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDE3LDAsMCwwLAorICAgIDY5LDEwOSwxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LAorICAgIDEwMSw3OCw0MCw5LDAsMCwwLDExNywxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsCisgICAgMTE1LDExNiw5NywxMTAsOTksMTAxLDExNywzLDAsMCwwLDExNSwxMTYsMTE0LDExNyw5LAorICAgIDAsMCwwLDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsCisgICAgMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw0LDAsMCwwLDExNiwxMjEsMTEyLDEwMSwKKyAgICAxMTcsMTAsMCwwLDAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywKKyAgICAzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwxMTcsMTEsMCwwLDAsODMsMTIxLDExNSwxMTYsMTAxLDEwOSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwKKyAgICAwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsMywwLDAsMCwxMDksMTE1LDEwMyw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywwLDAsMCwKKyAgICA5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDIwNCw1LDAsCisgICAgMCwxMTUsMjQsMCwwLDAsMCwyLDE1LDEsMzAsMSwxMiwxLDE1LDEsCisgICAgNiwxLDE1LDEsMTUsMSwxNSwxLDYsMiwyNywxLDE5LDEsMTE3LDEzLAorICAgIDAsMCwwLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsCisgICAgMTE3LDIwLDAsMCwwLDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDksMCwwLDAsMjcsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLAorICAgIDIsMCwwLDEwMCwwLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLAorICAgIDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LDMsMCwxMjQsMywwLDExNCwKKyAgICAxNzgsMCwxMjQsMywwLDExNiwyLDAsMTA2LDMsMCwxMDcsNywwLDExNCw2MiwKKyAgICAwLDExNiw0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsMSwxMTAsMCwKKyAgICAwLDEyNCwwLDAsMTE2LDIsMCwxMDYsMywwLDEwNyw2LDAsMTE0LDg4LDAsCisgICAgMTE2LDIsMCwxMDYsMywwLDEyNCwwLDAsMjUsODMsMTE2LDIsMCwxMDYsMywKKyAgICAwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMjEsMTMsMCwxMjQsNCwwLDEwNiw1LAorICAgIDAsMTI1LDIsMCw4NywxMTMsMTc4LDAsNCwxMTYsNiwwLDEwNywxMCwwLDExNCwKKyAgICAxNzQsMCwxLDEsMSwxMTYsNywwLDEwMCwzLDAsMjMsMTA2LDgsMCwxMjQsCisgICAgMCwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNSwwLDExNiw5LDAsMTI0LDUsCisgICAgMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDg5LDExMywxNzgsCisgICAgMCw4OCwxMTAsMCwwLDExNiwxMCwwLDEyNCwwLDAsMTI0LDIsMCwxMzEsMiwKKyAgICAwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI1MCwwLAorICAgIDExNiw5LDAsMTE2LDcsMCwxMDYsOCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsCisgICAgNCwwLDEyNCwwLDAsMTMxLDEsMSwxMjUsNywwLDEwMCwxMCwwLDEyNCw3LAorICAgIDAsOTUsMTIsMCwxMjQsNywwLDEzMCwxLDAsMTEwLDQ3LDAsMTI0LDAsMCwKKyAgICAxMTYsMiwwLDEwNiwzLDAsMTA3LDcsMCwxMTQsNDEsMSwxMjQsNiwwLDEwNiwKKyAgICAxMywwLDEyNCwwLDAsMTMxLDEsMCwxLDExNiwxNCwwLDEwMCw1LDAsMTI0LAorICAgIDAsMCwxMjQsNiwwLDEzMSwzLDAsMSwxMTAsMCwwLDExNiwyLDAsMTA2LAorICAgIDMsMCwxMjQsMCwwLDI1LDEyNSw4LDAsMTI0LDMsMCwxMTQsMTA1LDEsMTE2LAorICAgIDIsMCwxMDYsMywwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMTYsMTUsMCwxMjQsCisgICAgNCwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDYsCisgICAgMCwyNSwxMjQsOCwwLDEzMSwzLDAsMSwxMTAsMCwwLDExNiwxNiwwLDEyNCwKKyAgICA4LDAsMTAwLDcsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwKKyAgICAwLDExNCwyMTIsMSwxMjEsNTksMCwxMjQsOCwwLDEwNiwxNywwLDEyNCw4LDAsCisgICAgOTUsMTgsMCwxMTYsMTksMCwxMjQsOCwwLDEwMCw4LDAsMTMxLDIsMCwxMTUsCisgICAgMTg3LDEsMTI0LDgsMCwxMDYsMTgsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsCisgICAgMCwxMDAsMiwwLDI1LDEyNCw4LDAsOTUsMTgsMCwxMTAsMCwwLDg3LDExMywKKyAgICAyMTIsMSw0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDIwOCwxLDEsMSwxLDg5LAorICAgIDExMywyMTIsMSw4OCwxMTAsMCwwLDExNiwxOSwwLDEyNCw4LDAsMTAwLDksMCwKKyAgICAxMzEsMiwwLDExNSw4LDIsMTIxLDEzLDAsMTI0LDYsMCwxMjQsOCwwLDk1LAorICAgIDIwLDAsODcsMTEzLDgsMiw0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDQsMiwKKyAgICAxLDEsMSw4OSwxMTMsOCwyLDg4LDExMCwwLDAsMTI0LDgsMCw4Myw0MCwKKyAgICAxMSwwLDAsMCw3OCwxMTcsMSwwLDAsMCw0NiwxMDUsMCwwLDAsMCwKKyAgICAxMTcsMjEsMCwwLDAsNTksMzIsMTIzLDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNCwwLDAsMCwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTcsMTgsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsMTA1LDIsMCwwLDAsMTE3LAorICAgIDExLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSw4NCw0MCwyMSwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwwLDAsMTE0LAorICAgIDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDMsMCwwLDAsMTE1LDEyMSwKKyAgICAxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywyNSwwLAorICAgIDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LAorICAgIDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMTQsMCwwLDAsNjUsMTE2LDExNiwKKyAgICAxMTQsMTA1LDk4LDExNywxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLDAsMCwKKyAgICA5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwKKyAgICAxMDksOTcsMTE2LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTcsMTIsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywxMCwwLAorICAgIDAsMCw5NSwxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywxMTAsMTAwLDExNywxMSwwLDAsCisgICAgMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTYsMCwwLAorICAgIDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywKKyAgICAxMDEsMTE3LDcsMCwwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDcsMCwKKyAgICAwLDAsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDExLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LAorICAgIDk1LDQwLDksMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LAorICAgIDcsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTE3LDQsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxMTcsCisgICAgMTMsMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTcsMywwLDAsMCwxMDksMTE1LDEwMywxMTcsNiwwLDAsMCwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNywzLDAsMCwwLDEwMSwxMjAsOTksMTE3LDYsMCwwLAorICAgIDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwKKyAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDIyMywKKyAgICA1LDAsMCwxMTUsNzYsMCwwLDAsMCwxLDYsMSwxOSwxLDYsMSwKKyAgICAxNSwxLDE2LDIsMTUsMSwxMSwyLDEzLDEsMywxLDEzLDEsMTMsMSwKKyAgICAyMiwxLDI2LDEsMTUsMSwxMiwxLDI3LDMsOSwxLDksMSwxNSwyLAorICAgIDEzLDEsMTksMiwxMywxLDYsMiwxMywxLDMyLDIsMjQsMSwzLDEsCisgICAgMTIsMSwxNSwxLDMyLDEsMTMsMSw4LDIsMTUsMSwzLDEsMTMsMSwKKyAgICAxMywxLDgsMSwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LAorICAgIDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDE4LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw3NSwwLDAsMCwxMjIsMTYsMCwxMTYsMCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDEwMCwxLDAsMTE2LDEsMCwKKyAgICAxMDYsMiwwLDEzMSwwLDAsMSw4OCwxMjQsMiwwLDEwNiwzLDAsMTMxLDAsCisgICAgMCwxLDEyMiwxNywwLDExNiw0LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAorICAgIDAsODMsODcsMTAwLDEsMCwxMjQsMiwwLDEwNiw1LDAsMTMxLDAsMCwxLAorICAgIDg4LDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsNTQsMCwwLDAsNzAsCisgICAgMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LAorICAgIDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQwLDYsMCwwLDAsMTE3LDE2LDAsMCwwLAorICAgIDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LAorICAgIDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNywwLDAsMCw5NywKKyAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LAorICAgIDEwMSwxMDAsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsCisgICAgMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTcsNCwwLDAsMCwxMDgsMTExLDk5LAorICAgIDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLAorICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxNyw2LDAsMCwxMTUsMTQsMCwwLDAsMCwyLDMsMSwxNiwyLDExLAorICAgIDEsMTAsMSwzLDEsMTcsMiwxMTcsMTQsMCwwLDAsOTUsMTAyLDEwNSwxMTAsCisgICAgMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTcyLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsCisgICAgMTMxLDMsMCwxLDEyNCwyLDAsMTAwLDEsMCwxMDcsNCwwLDExNCw0OSwwLAorICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsCisgICAgMCwwLDExMCwwLDAsMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsCisgICAgMCwwLDExNiw0LDAsMTA2LDUsMCwxMDcsNywwLDExNCw4NywwLDExNiw2LAorICAgIDAsMTI0LDAsMCwxMTYsNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwKKyAgICAwLDEyNCwwLDAsMjUsMTI1LDMsMCwxMjQsMywwLDEwMCw0LDAsMTA3LDgsCisgICAgMCwxMTQsMTU4LDAsMTE2LDIsMCwxMDYsOSwwLDEzMSwwLDAsMSwxMDAsMiwKKyAgICAwLDEwNiwxMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwxMSwwLAorICAgIDEyNCw0LDAsMTAwLDMsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsCisgICAgMCwwLDExNiwxMiwwLDEyNCwwLDAsMTMxLDEsMCwxLDEyNCwzLDAsODMsCisgICAgNDAsNSwwLDAsMCwxMTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsCisgICAgMTA1LDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LAorICAgIDExNSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAorICAgIDEwMSwxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwKKyAgICAxMTEsMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsCisgICAgMTAyLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsCisgICAgMzIsMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsCisgICAgMTEwLDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLAorICAgIDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwKKyAgICAxMDAsMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LDAsMCwwLAorICAgIDAsMTE3LDQwLDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExMSwxMDIsMzIsCisgICAgMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwxMTAsMTAxLDMyLAorICAgIDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNyw0LAorICAgIDAsMCwwLDExMCw5NywxMDksMTAxLDc4LDQwLDEzLDAsMCwwLDExNywxMywwLAorICAgIDAsMCw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDExNywKKyAgICAxMywwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDk3LAorICAgIDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDMsMCwwLDAsCisgICAgMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywKKyAgICAxNCwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTIsMCwwLDAsCisgICAgMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE5LDAsMCwwLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsCisgICAgNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLAorICAgIDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNywKKyAgICAwLDAsMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw0MCwwLDAsMCwwLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMDMsOTksMTAwLDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMwLDYsMCwwLDExNSwyOCwwLDAsMCwwLAorICAgIDksMTYsMSwxMiwxLDIxLDEsMTAsMSwxNSwxLDEzLDEsMTMsMSwxMiwKKyAgICAxLDEwLDEsNiwxLDksMSwyMSwxLDEwLDEsMTE3LDExLDAsMCwwLAorICAgIDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTksMywwLDAsMCwKKyAgICAwLDAsMCwwLDYsMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDI1NCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwKKyAgICAwLDExNCwyNTAsMCwxMDAsMiwwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODksMCwKKyAgICAxMTYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LAorICAgIDIsMCwxMDAsMiwwLDEzMSwxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLAorICAgIDMsMCwxMzEsMiwwLDExNCw4OSwwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwKKyAgICAwLDEwNiw0LDAsMTMxLDEsMCwxLDExMyw4OSwwLDExMCwwLDAsMTIwLDE1OCwKKyAgICAwLDEyNCwxLDAsNjgsOTMsMTQ3LDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwwLAorICAgIDAsMTI0LDMsMCwxMzEsMiwwLDExNSw5NiwwLDEwMCw0LDAsMTA2LDUsMCwKKyAgICAxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw0LDAsMTIxLAorICAgIDE3LDAsMTE2LDcsMCwxMjQsMiwwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LAorICAgIDExMywyNDMsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIzOSwwLDEsMTI1LDUsCisgICAgMCwxLDEyMiw1MCwwLDExNiw5LDAsMTI0LDUsMCwxMDAsNSwwLDEwMCw3LAorICAgIDAsMTMxLDMsMCwxMTQsMjE4LDAsMTI0LDUsMCwxMDYsMTEsMCwxMjQsNCwwLAorICAgIDEwNywyLDAsMTE0LDIxOCwwLDExOSw5NiwwLDExMywyMTgsMCwxMTAsMCwwLDEzMCwKKyAgICAwLDAsODcsODksMTAwLDYsMCwxMDAsNiwwLDEyNSw1LDAsMTI2LDUsMCwKKyAgICA4OCwxMTMsMjQzLDAsODgsMTEzLDk2LDAsMTEzLDk2LDAsODcsMTEwLDAsMCwxMjQsCisgICAgMCwwLDgzLDQwLDgsMCwwLDAsMTE3LDIzOCwwLDAsMCw3MCwxMDUsMTAzLAorICAgIDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNCwKKyAgICAxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsCisgICAgMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsCisgICAgMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDczLDExNiwKKyAgICAzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwKKyAgICAxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsCisgICAgOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LDExNywxMDksCisgICAgMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwxMTUsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsCisgICAgMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNywxLDAsMCwwLDQyLDExNyw3LAorICAgIDAsMCwwLDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTE3LDUsMCwwLDAsMTIzLAorICAgIDEyNSw0NiwxMjMsMTI1LDExNywxMCwwLDAsMCw5NSwxMTAsMTExLDExNiw5NSwxMDIsMTExLAorICAgIDExNywxMTAsMTAwLDc4LDcwLDQwLDEyLDAsMCwwLDExNyw3LDAsMCwwLDEwNCwKKyAgICA5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDQsMCwwLDAsMTA4LDEwNSwxMTUsMTE2LDExNywKKyAgICA2LDAsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDExNyw2LDAsMCwwLDEwMSwKKyAgICAxMjAsMTE2LDEwMSwxMTAsMTAwLDExNyw3LDAsMCwwLDk1LDk1LDk3LDEwOCwxMDgsOTUsCisgICAgOTUsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMjUsMCwwLDAsOTUsOTksCisgICAgOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwKKyAgICAxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDEwMywxMDEsMTE2LDk3LAorICAgIDExNiwxMTYsMTE0LDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLDExNyw0LDAsCisgICAgMCwwLDExMCw5NywxMDksMTAxLDQwLDYsMCwwLDAsMTE3LDYsMCwwLDAsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAyLDExNCwxMTEsMTA5LDEwOCwKKyAgICAxMDUsMTE1LDExNiwxMTcsNywwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTcsCisgICAgMSwwLDAsMCwxMjAsMTE3LDksMCwwLDAsMTAyLDExNCwxMTEsMTA5LDk1LDExMCwKKyAgICA5NywxMDksMTAxLDExNywzLDAsMCwwLDEwMSwxMjAsOTksNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDU0LDYsMCwwLAorICAgIDExNSwzNCwwLDAsMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsCisgICAgMSwyMiwxLDEzLDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDYsMTgsCisgICAgMSwxNSwxLDksMSwzMiwxLDExNywxNiwwLDAsMCw5NSwxMDQsOTcsMTEwLAorICAgIDEwMCwxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNzgsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLAorICAgIDEsMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDYsMCwxMDcsOCwwLDExNCw3NCwKKyAgICAwLDEyNCwwLDAsMTAwLDIsMCwyNSwxMjUsMSwwLDEwMCwzLDAsMTI0LDAsCisgICAgMCwxMDcsNywwLDExNCw3NCwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsNCwwLAorICAgIDEzMSwxLDAsMTAwLDUsMCwyNSwxMjUsMSwwLDExMyw3NCwwLDExMCwwLDAsCisgICAgMTI0LDEsMCw4Myw0MCw3LDAsMCwwLDExNywxNjcsMCwwLDAsNjcsOTcsCisgICAgMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCisgICAgOTgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LAorICAgIDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsCisgICAgMTA1LDExMCwxMDEsMTAwLDMyLDExMSwxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwKKyAgICAzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLAorICAgIDMyLDExNiwxMTEsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCwKKyAgICA5NywxMTYsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LAorICAgIDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LAorICAgIDEsMCwwLDAsNDYsMTA1LDAsMCwwLDAsNzgsNDAsMywwLDAsMCwKKyAgICAxMTcsMywwLDAsMCwxMDMsMTAxLDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLAorICAgIDEwMSwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsCisgICAgNDAsMiwwLDAsMCwxMTcsNywwLDAsMCwxMDMsMTA4LDExMSw5OCw5NywxMDgsCisgICAgMTE1LDExNyw3LDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCw5NSw5OSwKKyAgICA5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDg4LAorICAgIDYsMCwwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsCisgICAgMTIsMSwyNSwxLDExNywxNywwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsOTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDU1LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsCisgICAgMTAyLDIsMCwxMjUsMCwwLDExNiwzLDAsMTE2LDQsMCwxMDIsMiwwLDEyNSwKKyAgICAxLDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTI1LDIsMCwxMjQsMCwKKyAgICAwLDEyNCwxLDAsMTI0LDIsMCwxMDMsMywwLDgzLDQwLDEsMCwwLDAsCisgICAgMTE3LDExMSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsCisgICAgMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwKKyAgICAzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQ0LDMyLDk3LAorICAgIDEwOCwxMDgsMTExLDExOSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQxLDQ2LDEwLAorICAgIDMyLDMyLDMyLDMyLDQwLDcsMCwwLDAsMTE3LDE5LDAsMCwwLDY5LDEyMCwKKyAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxOCwwLDAsMCwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsCisgICAgMTE1LDExNywxNiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNSwwLDAsMCw4Myw3OSw4NSw4Miw2NywKKyAgICA2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjAsMCwwLDAsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwwLDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LAorICAgIDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQwLDMsMCwwLDAsMTE3LDEwLAorICAgIDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDExNSwxMTcsNiwwLAorICAgIDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNyw4LDAsMCwwLDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDI3LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDExNSwxMDMsNiwwLDAsMTE1LDgsMCwwLDAsMCw1LDE4LDEsMTIsMSwKKyAgICAxMiwxLDExNywyNywwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMTUsOTksNSwwLDAsMCwwLDAsMCwwLDksMCwwLDAsNSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwwLDEyNCw0LDAsMTAwLAorICAgIDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAwLDEyNSw1LDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsMywwLDEwNyw5LDAsCisgICAgMTE0LDQ1LDAsMTI0LDEsMCwxMTAsMywwLDEwNSwwLDAsMTI1LDYsMCwxMTYsCisgICAgMiwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLDExNiwwLDAsMTI0LDAsCisgICAgMCwxMjQsNywwLDEyNCw0LDAsMTMxLDMsMCwxMjUsNSwwLDEyNCwzLDAsCisgICAgMTE1LDIwNywwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwxMjIsMCwxMTYsCisgICAgMCwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDEsCisgICAgMCwyNSwxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwwLDEyNCw1LDAsODMsCisgICAgMTE2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiwKKyAgICAzLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwyNCwKKyAgICAxMjUsOCwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNSwwLDEwNiw3LDAsMTAwLAorICAgIDMsMCwxMTYsNCwwLDEyNCw1LDAsMTA2LDcsMCwxMzEsMSwwLDEyNCw4LAorICAgIDAsMjQsMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsMCwxMTYsOCwwLDEyNCw1LAorICAgIDAsMTI0LDMsMCwxMTYsMCwwLDEzMSwzLDAsODMsMTAwLDMsMCw4Myw0MCwKKyAgICA0LDAsMCwwLDExNywyMTQsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywKKyAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsCisgICAgMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsCisgICAgMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsCisgICAgMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDExMSwKKyAgICA5OSw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsCisgICAgMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksMzIsOTcsMTE0LAorICAgIDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMTUsCisgICAgMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTAxLDEyMCwxMDUsCisgICAgMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwKKyAgICAzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDYwLDEwMiwxMTQsCisgICAgMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsODQsMTA0LDEwMSwKKyAgICAzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLDk3LDExNCwxMDMsCisgICAgMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwKKyAgICAxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LDExMiwxMDcsMTAzLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LDMyLDExOSwxMTEsCisgICAgMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LDEwMSwxMTgsMTAxLAorICAgIDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDEwNSwKKyAgICAwLDAsMCwwLDExNywxLDAsMCwwLDQ2LDc4LDQwLDksMCwwLDAsCisgICAgMTE3LDExLDAsMCwwLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDE3LDAsMCwwLDk1LDk5LAorICAgIDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LAorICAgIDksMCwwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMywwLAorICAgIDAsMCwxMDgsMTAxLDExMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDE2LDAsMCwwLDk1LDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiw0MCw5LDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDEwMywxMDgsCisgICAgMTExLDk4LDk3LDEwOCwxMTUsMTE3LDYsMCwwLDAsMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE3LDUsMCwKKyAgICAwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNywKKyAgICA3LDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNywwLDAsMCwKKyAgICA5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDk1LDk1LDExNCw2LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSwxMiwxLDE1LAorICAgIDIsMjQsMSwxMiwxLDE4LDEsNiwzLDEyLDEsMjMsMSw2LDEsNCwKKyAgICA0LDM1LDMsNDAsMiwxMTcsMTAsMCwwLDAsOTUsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDE0LDAsMCwKKyAgICAwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxOTYsMiwwLDAsMTI0LDEsCisgICAgMCw5NywwLDAsMTI0LDAsMCw5NywxLDAsMTE2LDEsMCwxMDYsMiwwLAorICAgIDEwNiwzLDAsMTE0LDMzLDAsMTE2LDQsMCw5Nyw1LDAsMTEwLDYsMCwxMTYsCisgICAgNiwwLDk3LDUsMCwxMjAsNDcsMCwxMTYsMCwwLDExNiwxLDAsMTAyLDIsCisgICAgMCw2OCw5MywzMywwLDEyNSwyLDAsMTE2LDcsMCwxMjQsMiwwLDEwMCwxLAorICAgIDAsMTMxLDIsMCwxMTUsNTIsMCwxMTYsOCwwLDEyNCwyLDAsOTUsOSwwLAorICAgIDExMyw1MiwwLDExMyw1MiwwLDg3LDExNiwxLDAsMTA2LDEwLDAsMTE2LDExLDAsCisgICAgMjUsMTI1LDMsMCwxMjAsNzYsMCwxMDAsMjgsMCw2OCw5Myw2OCwwLDEyNSw0LAorICAgIDAsMTI0LDQsMCwxMTYsMSwwLDEwNiwxMCwwLDEwNyw3LDAsMTE0LDE0OCwwLAorICAgIDExNiw4LDAsMTA2LDEyLDAsMTI0LDQsMCwxMzEsMSwwLDEyNSw1LDAsMTEwLAorICAgIDEzLDAsMTE2LDEsMCwxMDYsMTAsMCwxMjQsNCwwLDI1LDEyNSw1LDAsMTE2LAorICAgIDEzLDAsMTI0LDMsMCwxMjQsNCwwLDEyNCw1LDAsMTMxLDMsMCwxLDExMywKKyAgICAxMDksMCw4NywxMDAsNiwwLDEwMCw3LDAsMTAzLDEsMCwxMDIsMiwwLDEwMCwKKyAgICA4LDAsMTAwLDksMCwxMDAsNywwLDEwMywyLDAsMTAyLDIsMCwxMDAsMTAsCisgICAgMCwxMDAsOSwwLDEwMCw3LDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwzLDAsCisgICAgMTI1LDYsMCwxMjAsMTg5LDAsMTI0LDYsMCw2OCw5MywxNjksMCw5MiwyLDAsCisgICAgMTI1LDcsMCwxMjUsOCwwLDExNiwxNCwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwKKyAgICAwLDAsMTI0LDgsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE1LDIzLDEsMTE2LAorICAgIDE1LDAsMTMwLDEsMCwxMjQsOCwwLDEwMCwxMywwLDI1LDEyNSw5LDAsMTI0LAorICAgIDcsMCwxMTYsMSwwLDEwNiwxMCwwLDEwNyw2LDAsMTE0LDY1LDEsMTE2LDEsCisgICAgMCwxMDYsMTAsMCwxMjQsNywwLDI1LDEyNSwxMCwwLDgwLDExMywyMzYsMCwxMjEsCisgICAgNjAsMCwxMTYsOCwwLDEwNiwxMiwwLDEyNCw3LDAsMTMxLDEsMCwxMjUsMTAsCisgICAgMCwxMjQsNywwLDEwMCwxMCwwLDEwNywyLDAsMTE0LDEyMywxLDEwMCwxNCwwLAorICAgIDExNiwxLDAsMTA2LDE2LDAsMTA3LDYsMCwxMTQsMTIzLDEsMTI0LDgsMCwxMDAsCisgICAgMTUsMCwyNSwxMjUsOSwwLDExMCwwLDAsODAsODcsMTEzLDIzNiwwLDQsMTE2LAorICAgIDE3LDAsMTA3LDEwLDAsMTE0LDE0OCwxLDEsMSwxLDExOSwyMzYsMCw4OSwxMTMsCisgICAgMjM2LDAsODgsMTEzLDIzNiwwLDg3LDExNiwxNywwLDEwMCwxNiwwLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMjEsMTksMCwxMTYsOCwwLDEwNiwxMiwwLDEwMCwxNywwLDEzMSwKKyAgICAxLDAsMTI1LDExLDAsODcsMTEwLDI0LDAsNCwxMTYsMTcsMCwxMDcsMTAsMCwKKyAgICAxMTQsMjEwLDEsMSwxLDEsMTAwLDI3LDAsMTI1LDExLDAsODksMTEwLDEsMCwKKyAgICA4OCwxMTYsOCwwLDEwNiwxMiwwLDEwMCwxOCwwLDEzMSwxLDAsMTI1LDEyLDAsCisgICAgMTI0LDcsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDE2LDIsMTE2LDgsMCwxMDYsCisgICAgMTIsMCwxMDAsMTksMCwxMzEsMSwwLDEyNSwxMywwLDExNiwxMywwLDEyNCwzLAorICAgIDAsMTAwLDIwLDAsMTI0LDEzLDAsMTMxLDMsMCwxLDExMCwwLDAsMTE2LDEzLAorICAgIDAsMTI0LDMsMCwxMDAsMjEsMCwxMjQsMTAsMCwxMzEsMywwLDEsMTE2LDEzLAorICAgIDAsMTI0LDMsMCwxMDAsMTcsMCwxMjQsMTEsMCwxMzEsMywwLDEsMTE2LDEzLAorICAgIDAsMTI0LDMsMCwxMDAsMTgsMCwxMjQsMTIsMCwxMzEsMywwLDEsMTE2LDEzLAorICAgIDAsMTI0LDMsMCwxMDAsMjIsMCwxMjQsOSwwLDEzMSwzLDAsMSwxMTYsMTMsCisgICAgMCwxMjQsMywwLDEwMCwyMywwLDExNiwxOSwwLDEyNCw4LDAsMTMxLDEsMCwKKyAgICAxMzEsMywwLDEsMTE2LDEzLDAsMTI0LDMsMCwxMDAsMjQsMCwxMTYsMjAsMCwKKyAgICAxMzEsMCwwLDEzMSwzLDAsMSwxMTYsMjEsMCwxMDYsMjIsMCwxMTYsMCwwLAorICAgIDEwNiwyMywwLDEzMSwwLDAsMTMxLDEsMCwxLDEyNCw3LDAsMTAwLDgsMCwKKyAgICAxMDcsMiwwLDExNCwxOTIsMiwxMTYsMjQsMCwxMDYsMjUsMCwxMDAsMjUsMCwxMzEsCisgICAgMSwwLDEsMTAwLDI2LDAsMTE2LDIxLDAsMTA3LDYsMCwxMTQsMTkyLDIsMTAwLAorICAgIDI5LDAsMTE2LDI3LDAsOTUsMjgsMCwxMTMsMTkyLDIsMTEwLDAsMCwxMDAsMjcsCisgICAgMCw4Myw0MCwzMCwwLDAsMCwxMTcsMjUwLDAsMCwwLDgzLDEwMSwxMTYsMTE3LAorICAgIDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLAorICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsCisgICAgMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsMTA1LAorICAgIDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTUsOTUsMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsOSwwLAorICAgIDAsMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDgsMCwwLDAsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDExNyw3LDAsMCwwLDEwOSw5NywxMTQsCisgICAgMTE1LDEwNCw5NywxMDgsMTE3LDUsMCwwLDAsMTEyLDExMSwxMTUsMTA1LDEyMCwxMTcsMSwKKyAgICAwLDAsMCw0NywxMTcsMiwwLDAsMCwxMTAsMTE2LDExNywxLDAsMCwwLAorICAgIDkyLDExNywzLDAsMCwwLDExMSwxMTUsNTAsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsMTE1LDMzLAorICAgIDAsMCwwLDEyNCwwLDAsOTMsMjMsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAorICAgIDEsMCwxMzEsMSwwLDEwMCwwLDAsMTA3LDIsMCw4NiwxLDExMywzLDAsCisgICAgMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDEwNSwxLDAsMCwwLDc4LDQwLAorICAgIDEsMCwwLDAsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsNDAsMiwwLDAsCisgICAgMCwxMTcsMiwwLDAsMCw0Niw0OCwxMTcsMywwLDAsMCwxMTUsMTAxLDExMiwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwKKyAgICAwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxODIsNiwwLDAsMTE1LDIsCisgICAgMCwwLDAsNiwwLDExNywyNSwwLDAsMCw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLAorICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLAorICAgIDExMiwxMTQsNjIsMTA1LDAsMCwwLDAsMTE3LDcsMCwwLDAsNjksNzcsODgsCisgICAgMzIsNzEsNjcsNjcsMTA1LDEsMCwwLDAsMTE3LDMwLDAsMCwwLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwKKyAgICAzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsMTEwLDExNiwxMTcsNywwLDAsCisgICAgMCw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDExNyw4LDAsMCwwLDk1LDExOSwxMDEsCisgICAgOTcsMTA3LDExNCwxMDEsMTAyLDExNyw2LDAsMCwwLDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLAorICAgIDExNyw3LDAsMCwwLDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDExNywzLDAsMCwKKyAgICAwLDk1LDExMSwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwKKyAgICAxMTIsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LDExNCwKKyAgICA5NywxMTYsMTExLDExNCwxMTUsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwKKyAgICA5NSw5OSw5NywxMTUsMTAxLDExNyw0LDAsMCwwLDQ2LDExMiwxMjEsMTE5LDExNyw2LAorICAgIDAsMCwwLDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw3OCw0MCw0LDAsMCwwLDExNywKKyAgICAzLDAsMCwwLDk1LDEwNSwxMTEsMTE3LDksMCwwLDAsOTUsMTE5LDk3LDExNCwKKyAgICAxMTAsMTA1LDExMCwxMDMsMTE1LDExNyw4LDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDExNSwxMTcsNywwLDAsMCwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDg0LDQwLAorICAgIDI5LDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywzLDAsCisgICAgMCwwLDExNSwxMjEsMTE1LDExNyw1LDAsMCwwLDEwMiwxMDgsOTcsMTAzLDExNSwxMTcsCisgICAgOCwwLDAsMCwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNywyNywwLDAsCisgICAgMCw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSw2NywKKyAgICA3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMTcsMCwwLAorICAgIDAsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsCisgICAgNjksODMsMTE3LDIzLDAsMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg5LDg0LAorICAgIDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNyw3LAorICAgIDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDE1LDAsMCwwLDY2LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMTAsCisgICAgMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMTcsNywwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw3LDAsMCwwLDExNSwxMDEsMTE2LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNywzLDAsMCwwLDk3LDEwOCwxMDgsMTE3LDE0LDAsMCwwLDY1LAorICAgIDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsCisgICAgMCwwLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTcsMTEsMCwwLDAsNzMsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLAorICAgIDExMCwxMDEsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTYsMTE3LDE2LDAsMCwwLDk1LAorICAgIDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDExNywKKyAgICAxOCwwLDAsMCw2OSw4OCw4NCw2OSw3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSwKKyAgICA3MCw3MCw3Myw4OCw2OSw4MywxMTcsNiwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLAorICAgIDEwMCwxMTcsMTgsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsCisgICAgMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsMTUsMCwwLDAsODMsNzksODUsCisgICAgODIsNjcsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDYsMCwwLAorICAgIDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwKKyAgICAxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsCisgICAgMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDY4LAorICAgIDY5LDY2LDg1LDcxLDk1LDY2LDg1LDczLDc2LDY4LDQwLDE0LDAsMCwwLDExNywKKyAgICAxMCwwLDAsMCwxMTUsMTIxLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsCisgICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDYsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLDExNSwxMDEsCisgICAgMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTIsMCwwLDAsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDE0LDAsMCwwLDk4LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMCwwLAorICAgIDAsMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDExNywxMCwwLDAsCisgICAgMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LDExNywxNSwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDExNywKKyAgICA4LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDExNyw5LDAsMCwKKyAgICAwLDExMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEzLDAsMCwwLDExNiwKKyAgICAxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDE0LDAsMCwKKyAgICAwLDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywKKyAgICAxMywwLDAsMCwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw2LDAsCisgICAgMCwwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsMTUwLDYsMCwwLDExNSw5NiwwLDAsCisgICAgMCwwLDksNiwxLDYsMiwxMiwxLDksMiw2LDIsMTksMSwxNSwKKyAgICAxLDE2LDIsMTMsMSwxMywxLDE1LDEsMTgsMiwxMywxLDIwLDIsNDgsCisgICAgMSwxOSwyLDMxLDEsMTAsMSwxNSwxLDEzLDEsNCwyLDMsMSwxNSwKKyAgICAyLDI3LDEsMTMsMSw1LDEsMTMsMSwxMiwyLDEyLDIsMywxLDE5LAorICAgIDEsMTMsMiwxMSwxLDE1LDIsMTIsMSwxNSwxLDE5LDIsMTYsMSwxNiwKKyAgICAxLDE2LDEsMTYsMSwyMiwyLDE5LDEsMTksMSwxMiwxLDEzLDEsMTIsCisgICAgMSwxMTcsNiwwLDAsMCw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEzNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCisgICAgMiwwLDEsMTE2LDEsMCwxMzEsMCwwLDEyNSwyLDAsMTE2LDIsMCwxMDYsCisgICAgMywwLDEwNiw0LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCwyLDAsMTQwLDAsCisgICAgMCwxMDMsMSwwLDEzMSwxLDAsMSwxMTYsMiwwLDEwNiw3LDAsMTA2LDgsCisgICAgMCwxMTYsOSwwLDEzMSwxLDAsMSwxMTYsMiwwLDEwNiw3LDAsMTA2LDgsCisgICAgMCwxMTYsMTAsMCwxMzEsMSwwLDEsMTE2LDExLDAsMTA2LDEyLDAsMTAwLDEsCisgICAgMCwxMDcsMiwwLDExNCwxMTYsMCwxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwKKyAgICAxMTYsMTMsMCwxMzEsMSwwLDEsMTEwLDAsMCwxMTYsMiwwLDEwNiw3LDAsCisgICAgMTA2LDgsMCwxMTYsMTQsMCwxMzEsMSwwLDEsMTAwLDIsMCw4Myw0MCwzLAorICAgIDAsMCwwLDExNyw1MCwwLDAsMCw3MywxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDExNywyLDAsMCwwLDExMCwKKyAgICAxMTYsNzgsNDAsMTUsMCwwLDAsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwxMTYsCisgICAgMTE3LDExMiwxMTcsMjcsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTE1LDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywxMCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNyw2LDAsMCwwLDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTAsMTAwLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDExNyw5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNywxMTcsOSwwLDAsMCwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsCisgICAgNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNywxNSwwLDAsMCw2NiwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDE0LAorICAgIDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwKKyAgICAxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDExNywxMCwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsCisgICAgMywwLDAsMCwxMTcsMTAsMCwwLDAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNywxNywwLDAsMCwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMDgsMTA4LDIyNCw2LDAsMCwxMTUsMTYsMCwwLDAsMCwyLDEzLDEsOSwKKyAgICAxLDI4LDEsMTYsMSwxNiwxLDE1LDEsMTksMSwxMTcsOCwwLDAsMCwKKyAgICA5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCw3OCw0MCwzLDAsMCwwLDExNywzLAorICAgIDAsMCwwLDExOSwxMDUsMTEwLDExNyw2LDAsMCwwLDk5LDEyMSwxMDMsMTE5LDEwNSwKKyAgICAxMTAsMTE3LDYsMCwwLDAsMTAwLDk3LDExNCwxMTksMTA1LDExMCw0MCw3NCwwLDAsCisgICAgMCwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywyNywwLAorICAgIDAsMCw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCwKKyAgICA3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4MywxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LAorICAgIDExNSwxMDEsMTE3LDcsMCwwLDAsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMywxMTcsNywKKyAgICAwLDAsMCw5NSwxMTQsOTUsMTA4LDExMSwxMTAsMTAzLDExNywxMCwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsMTE3LDExLDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDE4LDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwKKyAgICAxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwKKyAgICAxMTQsMTE3LDEzLDAsMCwwLDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwKKyAgICAxMDksMTA1LDk5LDExNyw1LDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDExNyw0LDAsCisgICAgMCwwLDExNiwxMjEsMTEyLDEwMSwxMTcsOCwwLDAsMCw5NSw5NSw5OSwxMTEsMTAwLAorICAgIDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDExNywxMCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTcsMTMsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSwKKyAgICA5OSwxMDcsMTE1LDExNywxMiwwLDAsMCw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLAorICAgIDEwMyw5NSwxMTEsMTEwLDExNywxMiwwLDAsMCw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw3NywxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDE2LDAsMCwwLDk1LDY4LDExNywKKyAgICAxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDE2LDAsCisgICAgMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwKKyAgICAxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywyNSwwLDAsMCw5NSwKKyAgICA5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LAorICAgIDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMTcsMywwLDAsMCwxMTEsMTE0LDEwMCwKKyAgICAxMTcsMTcsMCwwLDAsOTUsODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsCisgICAgNzgsODUsNzcsNjYsNjksODIsMTE3LDUsMCwwLDAsOTgsMTIxLDExNiwxMDEsMTE1LAorICAgIDExNyw1LDAsMCwwLDExNCw5NywxMTAsMTAzLDEwMSwxMTcsMTIsMCwwLDAsOTUsCisgICAgNzcsNjUsNzEsNzMsNjcsOTUsNjYsODksODQsNjksODMsMTE3LDgsMCwwLDAsCisgICAgOTUsODAsODksNjcsNjUsNjcsNzIsNjksMTE3LDE1LDAsMCwwLDgzLDc5LDg1LAorICAgIDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywyMywwLDAsCisgICAgMCw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSwKKyAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjcsMCwwLDAsNzksODAsODQsCisgICAgNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsCisgICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwKKyAgICAxMDEsMTE3LDE3LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LAorICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDE3LDAsMCwwLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDE1LDAsCisgICAgMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksCisgICAgMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsMTEsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTcsMCwwLDAsCisgICAgOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCwxMTcsMTYsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsMTcsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwxMTcsMTUsMCwwLAorICAgIDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDExNywxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDEzLDAsCisgICAgMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwxMTcsCisgICAgMTIsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywKKyAgICAxNiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNywyMCwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LAorICAgIDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTgsMCwKKyAgICAwLDAsNjksODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsCisgICAgNzMsODgsNjksODMsMTE3LDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNCwwLDAsCisgICAgMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsMTE3LAorICAgIDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNywxMCwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsMTE3LDE4LDAsMCwwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LAorICAgIDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMTcsMTMsMCwwLDAsOTUsMTE0LDEwMSwKKyAgICAxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNywxMiwwLDAsMCw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEzLDAsMCwwLAorICAgIDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMTE3LDgsMCwKKyAgICAwLDAsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE3LDIzLDAsMCwwLDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsCisgICAgMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxMTcsMTQsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTE3LDExLDAsMCwwLDk1LDEwMywKKyAgICA5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDE2LDAsMCwwLDk1LDEwNCwKKyAgICA5NywxMTAsMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTcsMTcsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw5NSw5NSwxMTcsMjcsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExNywKKyAgICAxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE1LDExNywxMCwwLDAsMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw5NSw5NSwxMTcsNiwwLDAsMCw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDExNyw4LAorICAgIDAsMCwwLDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsCisgICAgMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxMzIsMCwKKyAgICAwLDAsNiwyMSw2LDMsMTIsMTMsMTIsMTYsMTIsMTMsMTIsMTIsMTIsMTIsCisgICAgMTIsMTAsMTIsNiwxMiw3LDE1LDIyLDEyLDgsMTUsMywxMiwxMiw2LDIsCisgICAgNiwzLDIyLDQsMTksNjgsMTksMjMsMTIsMTksMTIsMjAsMTIsMTAwLDM0LDEsCisgICAgMzcsMiw2LDIsOSwyLDksMSw5LDIsMTUsMjcsMTIsMjMsMTIsMjEsCisgICAgMTIsOCwxMiwxMywxMiwxMSwxMiw1NSwxMiwxOCwxMiwxMSwxMiwxMSwxMiwxNywKKyAgICAxOSw1NywxOSw1NCwxOSw1MCwxOSw4MiwyMiwxMzQsMTksMjksMjUsNDksMjUsMjUsCisgICAgNiwzLDE5LDQ1LDE5LDU1LDE5LDE4LDE5LDg5LDE5LDEyNSwxOSwxMywxMiw5LAorICAgIDEyLDE3LDEyLDE3LDYsMiwxMiw1MCwxMiwxMywxOCwyNCwxMiwzNCwxMiwxNSwKKyAgICAxMiwxMSwyNCwzNiwxMiw3NCwKK307CmRpZmYgLS1naXQgYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKaW5kZXggNWQ4ZTVhOS4uZDlhMDg1NSAxMDA3NTUKLS0tIGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CisrKyBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQpAQCAtMjMsOSArMjMsNiBAQAogICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCJvcGNvZGUiKQogICAgIHRhcmdldHMgPSBbJ191bmtub3duX29wY29kZSddICogMjU2CiAgICAgZm9yIG9wbmFtZSwgb3AgaW4gb3Bjb2RlLm9wbWFwLml0ZW1zKCk6Ci0gICAgICAgIGlmIG9wbmFtZSA9PSAiU1RPUF9DT0RFIjoKLSAgICAgICAgICAgICMgWFhYIG9wY29kZSBub3QgaW1wbGVtZW50ZWQKLSAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRhcmdldHNbb3BdID0gIlRBUkdFVF8lcyIgJSBvcG5hbWUKICAgICBmLndyaXRlKCJzdGF0aWMgdm9pZCAqb3Bjb2RlX3RhcmdldHNbMjU2XSA9IHtcbiIpCiAgICAgZi53cml0ZSgiLFxuIi5qb2luKFsiICAgICYmJXMiICUgcyBmb3IgcyBpbiB0YXJnZXRzXSkpCmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCAzZTJmYmViLi42ZDUyYTg0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTMxLDYgKzMxLDkgQEAKICNkZWZpbmUgVFlQRV9TVE9QSVRFUiAgICAgICAgICAgJ1MnCiAjZGVmaW5lIFRZUEVfRUxMSVBTSVMgICAgICAgICAgICcuJwogI2RlZmluZSBUWVBFX0lOVCAgICAgICAgICAgICAgICAnaScKKy8qIFRZUEVfSU5UNjQgaXMgZGVwcmVjYXRlZC4gSXQgaXMgbm90CisgICBnZW5lcmF0ZWQgYW55bW9yZSwgYW5kIHN1cHBvcnQgZm9yIHJlYWRpbmcgaXQKKyAgIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40LiAqLwogI2RlZmluZSBUWVBFX0lOVDY0ICAgICAgICAgICAgICAnSScKICNkZWZpbmUgVFlQRV9GTE9BVCAgICAgICAgICAgICAgJ2YnCiAjZGVmaW5lIFRZUEVfQklOQVJZX0ZMT0FUICAgICAgICdnJwpAQCAtNTksOSArNjIsOSBAQAogICAgIC8qIElmIGZwID09IE5VTEwsIHRoZSBmb2xsb3dpbmcgYXJlIHZhbGlkOiAqLwogICAgIFB5T2JqZWN0ICpyZWFkYWJsZTsgICAgLyogU3RyZWFtLWxpa2Ugb2JqZWN0IGJlaW5nIHJlYWQgZnJvbSAqLwogICAgIFB5T2JqZWN0ICpzdHI7CisgICAgUHlPYmplY3QgKmN1cnJlbnRfZmlsZW5hbWU7CiAgICAgY2hhciAqcHRyOwogICAgIGNoYXIgKmVuZDsKLSAgICBQeU9iamVjdCAqc3RyaW5nczsgLyogZGljdCBvbiBtYXJzaGFsLCBsaXN0IG9uIHVubWFyc2hhbCAqLwogICAgIGludCB2ZXJzaW9uOwogfSBXRklMRTsKIApAQCAtMTIxLDE1ICsxMjQsNiBAQAogICAgIHdfYnl0ZSgoY2hhcikoKHg+PjI0KSAmIDB4ZmYpLCBwKTsKIH0KIAotI2lmIFNJWkVPRl9MT05HID4gNAotc3RhdGljIHZvaWQKLXdfbG9uZzY0KGxvbmcgeCwgV0ZJTEUgKnApCi17Ci0gICAgd19sb25nKHgsIHApOwotICAgIHdfbG9uZyh4Pj4zMiwgcCk7Ci19Ci0jZW5kaWYKLQogLyogV2UgYXNzdW1lIHRoYXQgUHl0aG9uIGxvbmdzIGFyZSBzdG9yZWQgaW50ZXJuYWxseSBpbiBiYXNlIHNvbWUgcG93ZXIgb2YKICAgIDIqKjE1OyBmb3IgdGhlIHNha2Ugb2YgcG9ydGFiaWxpdHkgd2UnbGwgYWx3YXlzIHJlYWQgYW5kIHdyaXRlIHRoZW0gaW4gYmFzZQogICAgZXhhY3RseSAyKioxNS4gKi8KQEAgLTIxOSw4ICsyMTMsOCBAQAogI2lmIFNJWkVPRl9MT05HID4gNAogICAgICAgICAgICAgbG9uZyB5ID0gUHlfQVJJVEhNRVRJQ19SSUdIVF9TSElGVChsb25nLCB4LCAzMSk7CiAgICAgICAgICAgICBpZiAoeSAmJiB5ICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgd19ieXRlKFRZUEVfSU5UNjQsIHApOwotICAgICAgICAgICAgICAgIHdfbG9uZzY0KHgsIHApOworICAgICAgICAgICAgICAgIC8qIFRvbyBsYXJnZSBmb3IgVFlQRV9JTlQgKi8KKyAgICAgICAgICAgICAgICB3X1B5TG9uZygoUHlMb25nT2JqZWN0Kil2LCBwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICNlbmRpZgpAQCAtMzExLDkgKzMwNSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp1dGY4OwotICAgICAgICB1dGY4ID0gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcGFzcyIpOworICAgICAgICB1dGY4ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh2LCAidXRmOCIsICJzdXJyb2dhdGVwYXNzIik7CiAgICAgICAgIGlmICh1dGY4ID09IE5VTEwpIHsKICAgICAgICAgICAgIHAtPmRlcHRoLS07CiAgICAgICAgICAgICBwLT5lcnJvciA9IFdGRVJSX1VOTUFSU0hBTExBQkxFOwpAQCAtNDQ1LDcgKzQzNyw2IEBACiAgICAgd2YuZnAgPSBmcDsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKLSAgICB3Zi5zdHJpbmdzID0gTlVMTDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKICAgICB3X2xvbmcoeCwgJndmKTsKIH0KQEAgLTQ1NywxMCArNDQ4LDggQEAKICAgICB3Zi5mcCA9IGZwOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7CiAgICAgd2YuZGVwdGggPSAwOwotICAgIHdmLnN0cmluZ3MgPSAodmVyc2lvbiA+IDApID8gUHlEaWN0X05ldygpIDogTlVMTDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKICAgICB3X29iamVjdCh4LCAmd2YpOwotICAgIFB5X1hERUNSRUYod2Yuc3RyaW5ncyk7CiB9CiAKIHR5cGVkZWYgV0ZJTEUgUkZJTEU7IC8qIFNhbWUgc3RydWN0IHdpdGggZGlmZmVyZW50IGludmFyaWFudHMgKi8KQEAgLTQ4NSw3ICs0NzQsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2QocC0+cmVhZGFibGUsICJyZWFkIiwgImkiLCBuKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisKKyAgICAgICAgUHlPYmplY3QgKmRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHAtPnJlYWRhYmxlLCAmUHlJZF9yZWFkLCAiaSIsIG4pOwogICAgICAgICByZWFkID0gMDsKICAgICAgICAgaWYgKGRhdGEgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRhdGEpKSB7CkBAIC0xMDY5LDYgKzEwNjAsMTggQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gcl9vYmplY3QocCk7CiAgICAgICAgICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGNvZGVfZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHAtPmN1cnJlbnRfZmlsZW5hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGZpbGVuYW1lLCBwLT5jdXJyZW50X2ZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwLT5jdXJyZW50X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gcC0+Y3VycmVudF9maWxlbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcC0+Y3VycmVudF9maWxlbmFtZSA9IGZpbGVuYW1lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5hbWUgPSByX29iamVjdChwKTsKICAgICAgICAgICAgIGlmIChuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBjb2RlX2Vycm9yOwpAQCAtMTEzMSw3ICsxMTM0LDcgQEAKICAgICBhc3NlcnQoZnApOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKICAgICByZi5mcCA9IGZwOwotICAgIHJmLnN0cmluZ3MgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLmVuZCA9IHJmLnB0ciA9IE5VTEw7CiAgICAgcmV0dXJuIHJfc2hvcnQoJnJmKTsKIH0KQEAgLTExNDIsNyArMTE0NSw3IEBACiAgICAgUkZJTEUgcmY7CiAgICAgcmYuZnAgPSBmcDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7Ci0gICAgcmYuc3RyaW5ncyA9IE5VTEw7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYucHRyID0gcmYuZW5kID0gTlVMTDsKICAgICByZXR1cm4gcl9sb25nKCZyZik7CiB9CkBAIC0xMjA0LDExICsxMjA3LDEwIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICByZi5mcCA9IGZwOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKLSAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5kZXB0aCA9IDA7CiAgICAgcmYucHRyID0gcmYuZW5kID0gTlVMTDsKICAgICByZXN1bHQgPSByX29iamVjdCgmcmYpOwotICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjE5LDEyICsxMjIxLDExIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICByZi5mcCA9IE5VTEw7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLnB0ciA9IHN0cjsKICAgICByZi5lbmQgPSBzdHIgKyBsZW47Ci0gICAgcmYuc3RyaW5ncyA9IFB5TGlzdF9OZXcoMCk7CiAgICAgcmYuZGVwdGggPSAwOwogICAgIHJlc3VsdCA9IHJfb2JqZWN0KCZyZik7Ci0gICAgUHlfREVDUkVGKHJmLnN0cmluZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMzIsNyArMTIzMyw2IEBACiBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyhQeU9iamVjdCAqeCwgaW50IHZlcnNpb24pCiB7CiAgICAgV0ZJTEUgd2Y7Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICB3Zi5mcCA9IE5VTEw7CiAgICAgd2YucmVhZGFibGUgPSBOVUxMOwpAQCAtMTI0NCw5ICsxMjQ0LDcgQEAKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICB3Zi5zdHJpbmdzID0gKHZlcnNpb24gPiAwKSA/IFB5RGljdF9OZXcoKSA6IE5VTEw7CiAgICAgd19vYmplY3QoeCwgJndmKTsKLSAgICBQeV9YREVDUkVGKHdmLnN0cmluZ3MpOwogICAgIGlmICh3Zi5zdHIgIT0gTlVMTCkgewogICAgICAgICBjaGFyICpiYXNlID0gUHlCeXRlc19BU19TVFJJTkcoKFB5Qnl0ZXNPYmplY3QgKil3Zi5zdHIpOwogICAgICAgICBpZiAod2YucHRyIC0gYmFzZSA+IFBZX1NTSVpFX1RfTUFYKSB7CkBAIC0xMjY4LDEyICsxMjY2LDcgQEAKICAgICAgICAgICAgICAgIDoib2JqZWN0IHRvbyBkZWVwbHkgbmVzdGVkIHRvIG1hcnNoYWwiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICh3Zi5zdHIgIT0gTlVMTCkgewotICAgICAgICAvKiBYWFggUXVpY2sgaGFjayAtLSBuZWVkIHRvIGRvIHRoaXMgZGlmZmVyZW50bHkgKi8KLSAgICAgICAgcmVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KHdmLnN0cik7Ci0gICAgICAgIFB5X0RFQ1JFRih3Zi5zdHIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzOworICAgIHJldHVybiB3Zi5zdHI7CiB9CiAKIC8qIEFuZCBhbiBpbnRlcmZhY2UgZm9yIFB5dGhvbiBwcm9ncmFtcy4uLiAqLwpAQCAtMTI4NywxMiArMTI4MCwxNCBAQAogICAgIGludCB2ZXJzaW9uID0gUHlfTUFSU0hBTF9WRVJTSU9OOwogICAgIFB5T2JqZWN0ICpzOwogICAgIFB5T2JqZWN0ICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xpOmR1bXAiLCAmeCwgJmYsICZ2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcyA9IFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nKHgsIHZlcnNpb24pOwogICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgIndyaXRlIiwgIk8iLCBzKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3dyaXRlLCAiTyIsIHMpOwogICAgIFB5X0RFQ1JFRihzKTsKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTMxNCw2ICsxMzA5LDcgQEAKIG1hcnNoYWxfbG9hZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYpCiB7CiAgICAgUHlPYmplY3QgKmRhdGEsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAgICAgUkZJTEUgcmY7CiAKICAgICAvKgpAQCAtMTMyMSw3ICsxMzE3LDcgQEAKICAgICAgKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBvYmplY3QgcGFzc2VkIGluIGF0IGxlYXN0CiAgICAgICogaGFzIGEgcmVhZCBtZXRob2Qgd2hpY2ggcmV0dXJucyBieXRlcy4KICAgICAgKi8KLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAicmVhZCIsICJpIiwgMCk7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfcmVhZCwgImkiLCAwKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKQEAgLTEzMzEsMTIgKzEzMjcsMTEgQEAKICAgICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOwogICAgICAgICByZi5kZXB0aCA9IDA7CiAgICAgICAgIHJmLmZwID0gTlVMTDsKICAgICAgICAgcmYucmVhZGFibGUgPSBmOworICAgICAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICAgICAgcmVzdWx0ID0gcmVhZF9vYmplY3QoJnJmKTsKLSAgICAgICAgUHlfREVDUkVGKHJmLnN0cmluZ3MpOwogICAgIH0KICAgICBQeV9ERUNSRUYoZGF0YSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzODksMTIgKzEzODQsMTEgQEAKICAgICBuID0gcC5sZW47CiAgICAgcmYuZnAgPSBOVUxMOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5wdHIgPSBzOwogICAgIHJmLmVuZCA9IHMgKyBuOwotICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOwogICAgIHJmLmRlcHRoID0gMDsKICAgICByZXN1bHQgPSByZWFkX29iamVjdCgmcmYpOwotICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL21vZHN1cHBvcnQuYyBiL1B5dGhvbi9tb2RzdXBwb3J0LmMKaW5kZXggODViMGQ2Ni4uNDI4OTE0ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL21vZHN1cHBvcnQuYworKysgYi9QeXRob24vbW9kc3VwcG9ydC5jCkBAIC0xNDgsMTUgKzE0OCw2IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBpbnQKLV91c3RybGVuKFB5X1VOSUNPREUgKnUpCi17Ci0gICAgaW50IGkgPSAwOwotICAgIFB5X1VOSUNPREUgKnYgPSB1OwotICAgIHdoaWxlICgqdiAhPSAwKSB7IGkrKzsgdisrOyB9Ci0gICAgcmV0dXJuIGk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBkb19ta3R1cGxlKGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGVuZGNoYXIsIGludCBuLCBpbnQgZmxhZ3MpCiB7CkBAIC0yNjksNyArMjYwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChuIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgbiA9IF91c3RybGVuKHUpOworICAgICAgICAgICAgICAgICAgICBuID0gUHlfVU5JQ09ERV9zdHJsZW4odSk7CiAgICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh1LCBuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB2OwpAQCAtMjkyLDExICsyODMsNiBAQAogICAgICAgICBjYXNlICdDJzoKICAgICAgICAgewogICAgICAgICAgICAgaW50IGkgPSB2YV9hcmcoKnBfdmEsIGludCk7Ci0gICAgICAgICAgICBpZiAoaSA8IDAgfHwgaSA+IFB5VW5pY29kZV9HZXRNYXgoKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoaSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmggYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAppbmRleCBhOTFkYTc5Li4yZDZiY2RhIDEwMDY0NAotLS0gYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAorKysgYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaApAQCAtNzEsNyArNzEsNyBAQAogICAgICYmVEFSR0VUX1NUT1JFX0xPQ0FMUywKICAgICAmJlRBUkdFVF9QUklOVF9FWFBSLAogICAgICYmVEFSR0VUX0xPQURfQlVJTERfQ0xBU1MsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfWUlFTERfRlJPTSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9JTlBMQUNFX0xTSElGVCwKZGlmZiAtLWdpdCBhL1B5dGhvbi9wZWVwaG9sZS5jIGIvUHl0aG9uL3BlZXBob2xlLmMKaW5kZXggMzU5ZWRhOC4uNWQ1MzY3NyAxMDA2NDQKLS0tIGEvUHl0aG9uL3BlZXBob2xlLmMKKysrIGIvUHl0aG9uL3BlZXBob2xlLmMKQEAgLTIzLDYgKzIzLDY0IEBACiAjZGVmaW5lIElTQkFTSUNCTE9DSyhibG9ja3MsIHN0YXJ0LCBieXRlcykgXAogICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3Nbc3RhcnQrYnl0ZXMtMV0pCiAKKworI2RlZmluZSBDT05TVF9TVEFDS19DUkVBVEUoKSB7IFwKKyAgICBjb25zdF9zdGFja19zaXplID0gMjU2OyBcCisgICAgY29uc3Rfc3RhY2sgPSBQeU1lbV9OZXcoUHlPYmplY3QgKiwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKKyAgICBsb2FkX2NvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5X3NzaXplX3QsIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgaWYgKCFjb25zdF9zdGFjayB8fCAhbG9hZF9jb25zdF9zdGFjaykgeyBcCisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKKyAgICAgICAgZ290byBleGl0RXJyb3I7IFwKKyAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfREVMRVRFKCkgZG8geyBcCisgICAgaWYgKGNvbnN0X3N0YWNrKSBcCisgICAgICAgIFB5TWVtX0ZyZWUoY29uc3Rfc3RhY2spOyBcCisgICAgaWYgKGxvYWRfY29uc3Rfc3RhY2spIFwKKyAgICAgICAgUHlNZW1fRnJlZShsb2FkX2NvbnN0X3N0YWNrKTsgXAorICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBDT05TVF9TVEFDS19MRU4oKSAoY29uc3Rfc3RhY2tfdG9wICsgMSkKKworI2RlZmluZSBDT05TVF9TVEFDS19QVVNIX09QKGkpIGRvIHsgXAorICAgIFB5T2JqZWN0ICpfeDsgXAorICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOyBcCisgICAgYXNzZXJ0KFB5TGlzdF9HRVRfU0laRShjb25zdHMpID4gR0VUQVJHKGNvZGVzdHIsIGkpKTsgXAorICAgIF94ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgR0VUQVJHKGNvZGVzdHIsIGkpKTsgXAorICAgIGlmICgrK2NvbnN0X3N0YWNrX3RvcCA+PSBjb25zdF9zdGFja19zaXplKSB7IFwKKyAgICAgICAgY29uc3Rfc3RhY2tfc2l6ZSAqPSAyOyBcCisgICAgICAgIFB5TWVtX1Jlc2l6ZShjb25zdF9zdGFjaywgUHlPYmplY3QgKiwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKKyAgICAgICAgUHlNZW1fUmVzaXplKGxvYWRfY29uc3Rfc3RhY2ssIFB5X3NzaXplX3QsIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsgXAorICAgICAgICAgICAgZ290byBleGl0RXJyb3I7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgbG9hZF9jb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gaTsgXAorICAgIGNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0gPSBfeDsgXAorICAgIGluX2NvbnN0cyA9IDE7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfUkVTRVQoKSBkbyB7IFwKKyAgICBjb25zdF9zdGFja190b3AgPSAtMTsgXAorICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBDT05TVF9TVEFDS19UT1AoKSBcCisgICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXQorCisjZGVmaW5lIENPTlNUX1NUQUNLX0xBU1ROKGkpIFwKKyAgICAmY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfUE9QKGkpIGRvIHsgXAorICAgIGFzc2VydChjb25zdF9zdGFja190b3AgKyAxID49IGkpOyBcCisgICAgY29uc3Rfc3RhY2tfdG9wIC09IGk7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfT1BfTEFTVE4oaSkgXAorICAgICgoY29uc3Rfc3RhY2tfdG9wID49IGkgLSAxKSA/IGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdIDogLTEpCisKKwogLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIC4uLiBMT0FEX0NPTlNUIGNuIEJVSUxEX1RVUExFIG4KICAgIHdpdGggICAgTE9BRF9DT05TVCAoYzEsIGMyLCAuLi4gY24pLgogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQpAQCAtMzMsMTcgKzkxLDE0IEBACiAgICB0ZXN0OyBmb3IgQlVJTERfU0VUIGl0IGFzc2VtYmxlcyBhIGZyb3plbnNldCByYXRoZXIgdGhhbiBhIHR1cGxlLgogKi8KIHN0YXRpYyBpbnQKLXR1cGxlX29mX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IG4sIFB5T2JqZWN0ICpjb25zdHMpCit0dXBsZV9vZl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlfc3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICpjb25zdGFudDsKLSAgICBQeV9zc2l6ZV90IGksIGFyZywgbGVuX2NvbnN0czsKKyAgICBQeV9zc2l6ZV90IGksIGxlbl9jb25zdHM7CiAKICAgICAvKiBQcmUtY29uZGl0aW9ucyAqLwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChjb25zdHMpKTsKLSAgICBhc3NlcnQoY29kZXN0cltuKjNdID09IEJVSUxEX1RVUExFIHx8IGNvZGVzdHJbbiozXSA9PSBCVUlMRF9MSVNUIHx8IGNvZGVzdHJbbiozXSA9PSBCVUlMRF9TRVQpOwotICAgIGFzc2VydChHRVRBUkcoY29kZXN0ciwgKG4qMykpID09IG4pOwotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKQotICAgICAgICBhc3NlcnQoY29kZXN0cltpKjNdID09IExPQURfQ09OU1QpOwogCiAgICAgLyogQnVpbGR1cCBuZXcgdHVwbGUgb2YgY29uc3RhbnRzICovCiAgICAgbmV3Y29uc3QgPSBQeVR1cGxlX05ldyhuKTsKQEAgLTUxLDE2ICsxMDYsMTQgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7Ci0gICAgICAgIGFyZyA9IEdFVEFSRyhjb2Rlc3RyLCAoaSozKSk7Ci0gICAgICAgIGFzc2VydChhcmcgPCBsZW5fY29uc3RzKTsKLSAgICAgICAgY29uc3RhbnQgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBhcmcpOworICAgICAgICBjb25zdGFudCA9IG9ianNbaV07CiAgICAgICAgIFB5X0lOQ1JFRihjb25zdGFudCk7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3Y29uc3QsIGksIGNvbnN0YW50KTsKICAgICB9CiAKICAgICAvKiBJZiBpdCdzIGEgQlVJTERfU0VULCB1c2UgdGhlIFB5VHVwbGUgd2UganVzdCBidWlsdCB0byBjcmVhdGUgYQogICAgICAgUHlGcm96ZW5TZXQsIGFuZCB1c2UgdGhhdCBhcyB0aGUgY29uc3RhbnQgaW5zdGVhZDogKi8KLSAgICBpZiAoY29kZXN0cltuKjNdID09IEJVSUxEX1NFVCkgeworICAgIGlmIChjb2Rlc3RyWzBdID09IEJVSUxEX1NFVCkgewogICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBuZXdjb25zdDsKICAgICAgICAgbmV3Y29uc3QgPSBQeUZyb3plblNldF9OZXcodHVwbGUpOwogICAgICAgICBQeV9ERUNSRUYodHVwbGUpOwpAQCAtNzcsOSArMTMwLDggQEAKIAogICAgIC8qIFdyaXRlIE5PUHMgb3ZlciBvbGQgTE9BRF9DT05TVFMgYW5kCiAgICAgICAgYWRkIGEgbmV3IExPQURfQ09OU1QgbmV3Y29uc3Qgb24gdG9wIG9mIHRoZSBCVUlMRF9UVVBMRSBuICovCi0gICAgbWVtc2V0KGNvZGVzdHIsIE5PUCwgbiozKTsKLSAgICBjb2Rlc3RyW24qM10gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCAobiozKSwgbGVuX2NvbnN0cyk7CisgICAgY29kZXN0clswXSA9IExPQURfQ09OU1Q7CisgICAgU0VUQVJHKGNvZGVzdHIsIDAsIGxlbl9jb25zdHMpOwogICAgIHJldHVybiAxOwogfQogCkBAIC04NywxNCArMTM5LDE0IEBACiAgICB3aXRoICAgIExPQURfQ09OU1QgYmlub3AoYzEsYzIpCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgY2FuIGJlIGFwcGVuZGVkLgotICAgQ2FsbGVkIHdpdGggY29kZXN0ciBwb2ludGluZyB0byB0aGUgZmlyc3QgTE9BRF9DT05TVC4KKyAgIENhbGxlZCB3aXRoIGNvZGVzdHIgcG9pbnRpbmcgdG8gdGhlIEJJTk9QLgogICAgQWJhbmRvbnMgdGhlIHRyYW5zZm9ybWF0aW9uIGlmIHRoZSBmb2xkaW5nIGZhaWxzIChpLmUuICAxKydhJykuCiAgICBJZiB0aGUgbmV3IGNvbnN0YW50IGlzIGEgc2VxdWVuY2UsIG9ubHkgZm9sZHMgd2hlbiB0aGUgc2l6ZQogICAgaXMgYmVsb3cgYSB0aHJlc2hvbGQgdmFsdWUuICBUaGF0IGtlZXBzIHB5YyBmaWxlcyBmcm9tCiAgICBiZWNvbWluZyBsYXJnZSBpbiB0aGUgcHJlc2VuY2Ugb2YgY29kZSBsaWtlOiAgKE5vbmUsKSoxMDAwLgogKi8KIHN0YXRpYyBpbnQKLWZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzKQorZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICp2LCAqdzsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHMsIHNpemU7CkBAIC0xMDIsMTMgKzE1NCwxMSBAQAogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7Ci0gICAgYXNzZXJ0KGNvZGVzdHJbMF0gPT0gTE9BRF9DT05TVCk7Ci0gICAgYXNzZXJ0KGNvZGVzdHJbM10gPT0gTE9BRF9DT05TVCk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgdiA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCAwKSk7Ci0gICAgdyA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCAzKSk7Ci0gICAgb3Bjb2RlID0gY29kZXN0cls2XTsKKyAgICB2ID0gb2Jqc1swXTsKKyAgICB3ID0gb2Jqc1sxXTsKKyAgICBvcGNvZGUgPSBjb2Rlc3RyWzBdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Qb3dlcih2LCB3LCBQeV9Ob25lKTsKQEAgLTEzMywyNCArMTgzLDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJJTkFSWV9TVUJTQ1I6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5T2JqZWN0X0dldEl0ZW0odiwgdyk7Ci0gICAgICAgICAgICAvKiAjNTA1NzogaWYgdiBpcyB1bmljb2RlLCB0aGVyZSBtaWdodCBiZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCi0gICAgICAgICAgICAgICB3aWRlIGFuZCBuYXJyb3cgYnVpbGRzIGluIGNhc2VzIGxpa2UgJ1xVMDAwMTIzNDUnWzBdLgotICAgICAgICAgICAgICAgV2lkZSBidWlsZHMgd2lsbCByZXR1cm4gYSBub24tQk1QIGNoYXIsIHdoZXJlYXMgbmFycm93IGJ1aWxkcwotICAgICAgICAgICAgICAgd2lsbCByZXR1cm4gYSBzdXJyb2dhdGUuICBJbiBib3RoIHRoZSBjYXNlcyBza2lwIHRoZQotICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uIGluIG9yZGVyIHRvIHByb2R1Y2UgY29tcGF0aWJsZSBweWNzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAobmV3Y29uc3QgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVjayh2KSAmJiBQeVVuaWNvZGVfQ2hlY2sobmV3Y29uc3QpKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5ld2NvbnN0KVswXTsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAoY2ggPiAweEZGRkYpIHsKLSNlbHNlCi0gICAgICAgICAgICAgICAgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8PSAweERGRkYpIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCSU5BUllfTFNISUZUOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Mc2hpZnQodiwgdyk7CkBAIC0xOTgsMTYgKzIzMCwxNSBAQAogICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAKICAgICAvKiBXcml0ZSBOT1AgTk9QIE5PUCBOT1AgTE9BRF9DT05TVCBuZXdjb25zdCAqLwotICAgIG1lbXNldChjb2Rlc3RyLCBOT1AsIDQpOwotICAgIGNvZGVzdHJbNF0gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCA0LCBsZW5fY29uc3RzKTsKKyAgICBjb2Rlc3RyWy0yXSA9IExPQURfQ09OU1Q7CisgICAgU0VUQVJHKGNvZGVzdHIsIC0yLCBsZW5fY29uc3RzKTsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAotZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cykKK2ZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQogewotICAgIFB5T2JqZWN0ICpuZXdjb25zdD1OVUxMLCAqdjsKKyAgICBQeU9iamVjdCAqbmV3Y29uc3Q7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzOwogICAgIGludCBvcGNvZGU7CiAKQEAgLTIxNiwxMyArMjQ3LDEwIEBACiAgICAgYXNzZXJ0KGNvZGVzdHJbMF0gPT0gTE9BRF9DT05TVCk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgdiA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCAwKSk7CiAgICAgb3Bjb2RlID0gY29kZXN0clszXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgotICAgICAgICAgICAgLyogUHJlc2VydmUgdGhlIHNpZ24gb2YgLTAuMCAqLwotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0lzVHJ1ZSh2KSA9PSAxKQotICAgICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfTmVnYXRpdmUodik7CisgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX05lZ2F0aXZlKHYpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVU5BUllfSU5WRVJUOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9JbnZlcnQodik7CkBAIC0zNTgsNyArMzg2LDExIEBACiAgICAgdW5zaWduZWQgY2hhciAqbGluZW5vOwogICAgIGludCAqYWRkcm1hcCA9IE5VTEw7CiAgICAgaW50IG5ld19saW5lLCBjdW1fb3JpZ19saW5lLCBsYXN0X2xpbmUsIHRhYnNpejsKLSAgICBpbnQgY3VtbGM9MCwgbGFzdGxjPTA7ICAgICAgLyogQ291bnQgcnVucyBvZiBjb25zZWN1dGl2ZSBMT0FEX0NPTlNUcyAqLworICAgIFB5T2JqZWN0ICoqY29uc3Rfc3RhY2sgPSBOVUxMOworICAgIFB5X3NzaXplX3QgKmxvYWRfY29uc3Rfc3RhY2sgPSBOVUxMOworICAgIFB5X3NzaXplX3QgY29uc3Rfc3RhY2tfdG9wID0gLTE7CisgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja19zaXplID0gMDsKKyAgICBpbnQgaW5fY29uc3RzID0gMDsgIC8qIHdoZXRoZXIgd2UgYXJlIGluIGEgTE9BRF9DT05TVCBzZXF1ZW5jZSAqLwogICAgIHVuc2lnbmVkIGludCAqYmxvY2tzID0gTlVMTDsKICAgICBjaGFyICpuYW1lOwogCkBAIC00MDQsMTIgKzQzNiwxNiBAQAogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGNvbnN0cykpOwogCisgICAgQ09OU1RfU1RBQ0tfQ1JFQVRFKCk7CisKICAgICBmb3IgKGk9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKICAgICAgIHJlb3B0aW1pemVfY3VycmVudDoKICAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKIAotICAgICAgICBsYXN0bGMgPSBjdW1sYzsKLSAgICAgICAgY3VtbGMgPSAwOworICAgICAgICBpZiAoIWluX2NvbnN0cykgeworICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKKyAgICAgICAgfQorICAgICAgICBpbl9jb25zdHMgPSAwOwogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgICAgICAvKiBSZXBsYWNlIFVOQVJZX05PVCBQT1BfSlVNUF9JRl9GQUxTRQpAQCAtNDUwLDIxICs0ODYsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0RXJyb3I7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaCA9PSAwKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBjdW1sYyA9IGxhc3RsYyArIDE7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBMT0FEX0NPTlNUIHRydWVjb25zdAogICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiBUaGlzIGltcHJvdmVzCiAgICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAqLwogICAgICAgICAgICAgY2FzZSBMT0FEX0NPTlNUOgotICAgICAgICAgICAgICAgIGN1bWxjID0gbGFzdGxjICsgMTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKICAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw2KSAgfHwKICAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBqKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7Ci0gICAgICAgICAgICAgICAgY3VtbGMgPSAwOworICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzIGFuZCBzZXRzCkBAIC00NzYsMTkgKzUxMiwyMyBAQAogICAgICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6CiAgICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBoID0gaSAtIDMgKiBqOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgICYmCi0gICAgICAgICAgICAgICAgICAgIGogPD0gbGFzdGxjICAgICAgICAgICAgICAgICAgJiYKKyAgICAgICAgICAgICAgICBpZiAoaiA9PSAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oaik7CisgICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCBqKSk7CisgICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJiBqID4gMCAmJiBqIDw9IENPTlNUX1NUQUNLX0xFTigpICYmCiAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX1RVUExFICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgMyooaisxKSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzMpKSB8fAogICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgogICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXT09Q09NUEFSRV9PUCAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIDMqKGorMikpICYmCisgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzYpICYmCiAgICAgICAgICAgICAgICAgICAgICAgKEdFVEFSRyhjb2Rlc3RyLGkrMyk9PTYgfHwKICAgICAgICAgICAgICAgICAgICAgICAgR0VUQVJHKGNvZGVzdHIsaSszKT09NykpKSAmJgotICAgICAgICAgICAgICAgICAgICB0dXBsZV9vZl9jb25zdGFudHMoJmNvZGVzdHJbaF0sIGosIGNvbnN0cykpIHsKKyAgICAgICAgICAgICAgICAgICAgdHVwbGVfb2ZfY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBqLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopKSkgewogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgY3VtbGMgPSAxOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1Aoaik7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzNdICE9IFVOUEFDS19TRVFVRU5DRSAgfHwKQEAgLTUwMSwxMCArNTQxLDEyIEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9UV087CiAgICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA1KTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMykgewogICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RIUkVFOwogICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krMV0gPSBST1RfVFdPOwogICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzIsIE5PUCwgNCk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01MjMsMTIgKzU2NSwxOCBAQAogICAgICAgICAgICAgY2FzZSBCSU5BUllfQU5EOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfWE9SOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfT1I6Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RsYyA+PSAyICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaS02LCA3KSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ktNl0sIGNvbnN0cykpIHsKKyAgICAgICAgICAgICAgICAvKiBOT1RFOiBMT0FEX0NPTlNUIGlzIHNhdmVkIGF0IGBpLTJgIHNpbmNlIGl0IGhhcyBhbiBhcmcKKyAgICAgICAgICAgICAgICAgICB3aGlsZSBCSU5PUCBoYXNuJ3QgKi8KKyAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMik7CisgICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAyKSk7CisgICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgorICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCisgICAgICAgICAgICAgICAgICAgIGZvbGRfYmlub3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpXSwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaSAtPSAyOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgY3VtbGMgPSAxOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMik7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01MzcsMTIgKzU4NSwxNSBAQAogICAgICAgICAgICAgY2FzZSBVTkFSWV9ORUdBVElWRToKICAgICAgICAgICAgIGNhc2UgVU5BUllfSU5WRVJUOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9QT1NJVElWRToKLSAgICAgICAgICAgICAgICBpZiAobGFzdGxjID49IDEgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBpLTMsIDQpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpLTNdLCBjb25zdHMpKSAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAxKSk7CisgICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgorICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCisgICAgICAgICAgICAgICAgICAgIGZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ktM10sIGNvbnN0cywgQ09OU1RfU1RBQ0tfVE9QKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1bWxjID0gMTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNjk5LDYgKzc1MCw3IEBACiAgICAgYXNzZXJ0KGggKyBub3BzID09IGNvZGVsZW4pOwogCiAgICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoKTsKKyAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKICAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwogICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlNZW1fRnJlZShibG9ja3MpOwpAQCAtNzA4LDYgKzc2MCw3IEBACiAgICAgY29kZSA9IE5VTEw7CiAKICBleGl0VW5jaGFuZ2VkOgorICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwogICAgIGlmIChibG9ja3MgIT0gTlVMTCkKICAgICAgICAgUHlNZW1fRnJlZShibG9ja3MpOwogICAgIGlmIChhZGRybWFwICE9IE5VTEwpCmRpZmYgLS1naXQgYS9QeXRob24vcHlhcmVuYS5jIGIvUHl0aG9uL3B5YXJlbmEuYwppbmRleCA1YTI1NWFlLi5iYjJmZDFlIDEwMDY0NAotLS0gYS9QeXRob24vcHlhcmVuYS5jCisrKyBiL1B5dGhvbi9weWFyZW5hLmMKQEAgLTEyLDggKzEyLDYgQEAKIAogI2RlZmluZSBERUZBVUxUX0JMT0NLX1NJWkUgODE5MgogI2RlZmluZSBBTElHTk1FTlQgICAgICAgICAgICAgICA4Ci0jZGVmaW5lIEFMSUdOTUVOVF9NQVNLICAgICAgICAgIChBTElHTk1FTlQgLSAxKQotI2RlZmluZSBST1VORFVQKHgpICAgICAgICAgICAgICAoKCh4KSArIEFMSUdOTUVOVF9NQVNLKSAmIH5BTElHTk1FTlRfTUFTSykKIAogdHlwZWRlZiBzdHJ1Y3QgX2Jsb2NrIHsKICAgICAvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgb3duZWQgYnkgdGhpcyBibG9jayBhdmFpbGFibGUgdG8gcGFzcyBvdXQuCkBAIC04NSw4ICs4Myw4IEBACiAgICAgYi0+YWJfc2l6ZSA9IHNpemU7CiAgICAgYi0+YWJfbWVtID0gKHZvaWQgKikoYiArIDEpOwogICAgIGItPmFiX25leHQgPSBOVUxMOwotICAgIGItPmFiX29mZnNldCA9IFJPVU5EVVAoKFB5X3VpbnRwdHJfdCkoYi0+YWJfbWVtKSkgLQotICAgICAgKFB5X3VpbnRwdHJfdCkoYi0+YWJfbWVtKTsKKyAgICBiLT5hYl9vZmZzZXQgPSAoY2hhciAqKV9QeV9BTElHTl9VUChiLT5hYl9tZW0sIEFMSUdOTUVOVCkgLQorICAgICAgICAgICAgKGNoYXIgKikoYi0+YWJfbWVtKTsKICAgICByZXR1cm4gYjsKIH0KIApAQCAtMTA0LDcgKzEwMiw3IEBACiB7CiAgICAgdm9pZCAqcDsKICAgICBhc3NlcnQoYik7Ci0gICAgc2l6ZSA9IFJPVU5EVVAoc2l6ZSk7CisgICAgc2l6ZSA9IF9QeV9TSVpFX1JPVU5EX1VQKHNpemUsIEFMSUdOTUVOVCk7CiAgICAgaWYgKGItPmFiX29mZnNldCArIHNpemUgPiBiLT5hYl9zaXplKSB7CiAgICAgICAgIC8qIElmIHdlIG5lZWQgdG8gYWxsb2NhdGUgbW9yZSBtZW1vcnkgdGhhbiB3aWxsIGZpdCBpbgogICAgICAgICAgICB0aGUgZGVmYXVsdCBibG9jaywgYWxsb2NhdGUgYSBvbmUtb2ZmIGJsb2NrIHRoYXQgaXMKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0YXRlLmMgYi9QeXRob24vcHlzdGF0ZS5jCmluZGV4IDQyYmMzZWMuLmNmZDYxZDAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0YXRlLmMKKysrIGIvUHl0aG9uL3B5c3RhdGUuYwpAQCAtNjksNyArNjksNiBAQAogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSB0aHJlYWRzIGZvciBpbnRlcnByZXRlciIpOwogI2VuZGlmCiAgICAgICAgIGludGVycC0+bW9kdWxlcyA9IE5VTEw7Ci0gICAgICAgIGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPm1vZHVsZXNfYnlfaW5kZXggPSBOVUxMOwogICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zID0gTlVMTDsKQEAgLTc5LDYgKzc4LDcgQEAKICAgICAgICAgaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSA9IE5VTEw7CiAgICAgICAgIGludGVycC0+Y29kZWNzX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMDsKKyAgICAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBOVUxMOwogI2lmZGVmIEhBVkVfRExPUEVOCiAjaWZkZWYgUlRMRF9OT1cKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTk9XOwpAQCAtMTEzLDkgKzExMyw5IEBACiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXNfYnlfaW5kZXgpOwotICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcpOwogICAgIFB5X0NMRUFSKGludGVycC0+c3lzZGljdCk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5idWlsdGlucyk7CisgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRsaWIpOwogfQogCiAKQEAgLTI0Miw5ICsyNDIsOSBAQAogfQogCiBQeU9iamVjdCoKLVB5U3RhdGVfRmluZE1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqIG0pCitQeVN0YXRlX0ZpbmRNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBtb2R1bGUpCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleCA9IG0tPm1fYmFzZS5tX2luZGV4OworICAgIFB5X3NzaXplX3QgaW5kZXggPSBtb2R1bGUtPm1fYmFzZS5tX2luZGV4OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoaW5kZXggPT0gMCkKQEAgLTI3Niw2ICsyNzYsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbmRleCwgbW9kdWxlKTsKIH0KIAoraW50CitQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCogbW9kdWxlLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgaWYgKCFkZWYpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9BZGRNb2R1bGU6IE1vZHVsZSBEZWZpbml0aW9uIGlzIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7CisgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSB7CisgICAgICAgIGlmKFB5TGlzdF9HRVRfU0laRShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkgPj0gaW5kZXgpIHsKKyAgICAgICAgICAgIGlmKG1vZHVsZSA9PSBQeUxpc3RfR0VUX0lURU0oc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgsIGluZGV4KSkgeworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfQWRkTW9kdWxlOiBNb2R1bGUgYWxyZWFkeSBhZGRlZCEiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIF9QeVN0YXRlX0FkZE1vZHVsZShtb2R1bGUsIGRlZik7Cit9CisKK2ludAorUHlTdGF0ZV9SZW1vdmVNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogTW9kdWxlIGluZGV4IGludmFsaWQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4ID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IEludGVycHJldGVycyBtb2R1bGUtbGlzdCBub3QgYWNlc3NpYmxlLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChpbmRleCA+IFB5TGlzdF9HRVRfU0laRShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IE1vZHVsZSBpbmRleCBvdXQgb2YgYm91bmRzLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBQeUxpc3RfU2V0SXRlbShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCwgaW5kZXgsIFB5X05vbmUpOworfQorCiB2b2lkCiBQeVRocmVhZFN0YXRlX0NsZWFyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0cnRvZC5jIGIvUHl0aG9uL3B5c3RydG9kLmMKaW5kZXggNzVlMzAzMi4uNGFiOGYwOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RydG9kLmMKKysrIGIvUHl0aG9uL3B5c3RydG9kLmMKQEAgLTIyLDYgKzIyLDQzIEBACiAgICB0aGUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcuICBPbiBmYWlsdXJlLCByZXR1cm4gLTEuMCBhbmQKICAgIHNldCAqZW5kcHRyIHRvIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLiAqLwogCisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKworZG91YmxlCitfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKQoreworICAgIGRvdWJsZSByZXR2YWw7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBpbnQgbmVnYXRlID0gMDsKKworICAgIHMgPSBwOworICAgIGlmICgqcyA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRlID0gMTsKKyAgICAgICAgcysrOworICAgIH0KKyAgICBlbHNlIGlmICgqcyA9PSAnKycpIHsKKyAgICAgICAgcysrOworICAgIH0KKyAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZV9tYXRjaChzLCAiaW5mIikpIHsKKyAgICAgICAgcyArPSAzOworICAgICAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZV9tYXRjaChzLCAiaW5pdHkiKSkKKyAgICAgICAgICAgIHMgKz0gNTsKKyAgICAgICAgcmV0dmFsID0gX1B5X2RnX2luZmluaXR5KG5lZ2F0ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKGNhc2VfaW5zZW5zaXRpdmVfbWF0Y2gocywgIm5hbiIpKSB7CisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgcmV0dmFsID0gX1B5X2RnX3N0ZG5hbihuZWdhdGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcyA9IHA7CisgICAgICAgIHJldHZhbCA9IC0xLjA7CisgICAgfQorICAgICplbmRwdHIgPSAoY2hhciAqKXM7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworI2Vsc2UKKwogZG91YmxlCiBfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKQogewpAQCAtNTcsNiArOTQsOCBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKKyNlbmRpZgorCiAvKioKICAqIF9QeU9TX2FzY2lpX3N0cnRvZDoKICAqIEBucHRyOiAgICB0aGUgc3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBudW1lcmljIHZhbHVlLgpAQCAtOTU0LDcgKzk5Myw3IEBACiAgICAgICAgICAgICAvKiBzaG91bGRuJ3QgZ2V0IGhlcmU6IEdheSdzIGNvZGUgc2hvdWxkIGFsd2F5cyByZXR1cm4KICAgICAgICAgICAgICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIGEgZGlnaXQsIGFuICdJJywgIG9yICdOJyAqLwogICAgICAgICAgICAgc3RybmNweShwLCAiRVJSIiwgMyk7Ci0gICAgICAgICAgICBwICs9IDM7CisgICAgICAgICAgICAvKiBwICs9IDM7ICovCiAgICAgICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIH0KICAgICAgICAgZ290byBleGl0OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IGNmNGUzNGMuLmIxY2ExMjUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTUyLDcgKzUyLDcgQEAKIGV4dGVybiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyOyAvKiBGcm9tIGdyYW1pbml0LmMgKi8KIAogLyogRm9yd2FyZCAqLwotc3RhdGljIHZvaWQgaW5pdG1haW4odm9pZCk7CitzdGF0aWMgdm9pZCBpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCk7CiBzdGF0aWMgaW50IGluaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKIHN0YXRpYyB2b2lkIGluaXRzaXRlKHZvaWQpOwogc3RhdGljIGludCBpbml0c3RkaW8odm9pZCk7CkBAIC02MiwxNCArNjIsMTcgQEAKIHN0YXRpYyBQeU9iamVjdCAqcnVuX3B5Y19maWxlKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlDb21waWxlckZsYWdzICopOwogc3RhdGljIHZvaWQgZXJyX2lucHV0KHBlcnJkZXRhaWwgKik7CitzdGF0aWMgdm9pZCBlcnJfZnJlZShwZXJyZGV0YWlsICopOwogc3RhdGljIHZvaWQgaW5pdHNpZ3Modm9pZCk7CiBzdGF0aWMgdm9pZCBjYWxsX3B5X2V4aXRmdW5jcyh2b2lkKTsKIHN0YXRpYyB2b2lkIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKTsKIHN0YXRpYyB2b2lkIGNhbGxfbGxfZXhpdGZ1bmNzKHZvaWQpOwotZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlVbmljb2RlX0luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBfUHlVbmljb2RlX0Zpbmkodm9pZCk7CiBleHRlcm4gaW50IF9QeUxvbmdfSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFB5TG9uZ19GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlGYXVsdGhhbmRsZXJfSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIF9QeUZhdWx0aGFuZGxlcl9GaW5pKHZvaWQpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKIGV4dGVybiB2b2lkIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICosIFB5VGhyZWFkU3RhdGUgKik7CkBAIC0xMzksMTIgKzE0MiwxMyBAQAogewogICAgIGNoYXIgKm5hbWVfdXRmOCwgKm5hbWVfc3RyOwogICAgIFB5T2JqZWN0ICpjb2RlYywgKm5hbWUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOwogCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoZW5jb2RpbmcpOwogICAgIGlmICghY29kZWMpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb2RlYywgIm5hbWUiKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb2RlYywgJlB5SWRfbmFtZSk7CiAgICAgUHlfQ0xFQVIoY29kZWMpOwogICAgIGlmICghbmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE2NiwyMSArMTcwLDc5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQogc3RhdGljIGNoYXIqCi1nZXRfY29kZXNldCh2b2lkKQorZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBjaGFyIGNvZGVwYWdlWzEwMF07CisgICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7CisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCiAgICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwogICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKLX0KKyNlbHNlCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKICNlbmRpZgorfQorCitzdGF0aWMgdm9pZAoraW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCit7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKKyAgICBQeU9iamVjdCAqaW1wbW9kOworICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCisgICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7CisgICAgfQorICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOworICAgIH0KKyAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOworCisgICAgLyogSW5zdGFsbCBfaW1wb3J0bGliIGFzIF9faW1wb3J0X18gKi8KKyAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7CisgICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBpbXAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgaW1wICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworICAgIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOworICAgIH0KKworICAgIHZhbHVlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRsaWIsICJfaW5zdGFsbCIsICJPTyIsIHN5c21vZCwgaW1wbW9kKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBpbXBvcnRsaWIgaW5zdGFsbCBmYWlsZWQiKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoaW1wbW9kKTsKKworICAgIF9QeUltcG9ydFppcF9Jbml0KCk7Cit9CisKIAogdm9pZAotUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCitfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50IGluc3RhbGxfc2lncywgaW50IGluc3RhbGxfaW1wb3J0bGliKQogewogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKQEAgLTI1MiwxMiArMzE0LDEwIEBACiAgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwogICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBtb2R1bGVzIGRpY3Rpb25hcnkiKTsKLSAgICBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID0gUHlEaWN0X05ldygpOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlc19yZWxvYWRpbmcgZGljdGlvbmFyeSIpOwogCiAgICAgLyogSW5pdCBVbmljb2RlIGltcGxlbWVudGF0aW9uOyByZWxpZXMgb24gdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCi0gICAgX1B5VW5pY29kZV9Jbml0KCk7CisgICAgaWYgKF9QeVVuaWNvZGVfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB1bmljb2RlIik7CiAKICAgICBiaW1vZCA9IF9QeUJ1aWx0aW5fSW5pdCgpOwogICAgIGlmIChiaW1vZCA9PSBOVUxMKQpAQCAtMjY5LDcgKzMyOSw3IEBACiAgICAgUHlfSU5DUkVGKGludGVycC0+YnVpbHRpbnMpOwogCiAgICAgLyogaW5pdGlhbGl6ZSBidWlsdGluIGV4Y2VwdGlvbnMgKi8KLSAgICBfUHlFeGNfSW5pdCgpOworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKIAogICAgIHN5c21vZCA9IF9QeVN5c19Jbml0KCk7CiAgICAgaWYgKHN5c21vZCA9PSBOVUxMKQpAQCAtMjk5LDYgKzM1OSwxNSBAQAogICAgIC8qIEluaXRpYWxpemUgX3dhcm5pbmdzLiAqLwogICAgIF9QeVdhcm5pbmdzX0luaXQoKTsKIAorICAgIGlmICghaW5zdGFsbF9pbXBvcnRsaWIpCisgICAgICAgIHJldHVybjsKKworICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKworICAgIC8qIGluaXRpYWxpemUgdGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBpZiAoX1B5RmF1bHRoYW5kbGVyX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBmYXVsdGhhbmRsZXIiKTsKKwogICAgIF9QeVRpbWVfSW5pdCgpOwogCiAgICAgaWYgKGluaXRmc2VuY29kaW5nKGludGVycCkgPCAwKQpAQCAtMzA3LDcgKzM3Niw3IEBACiAgICAgaWYgKGluc3RhbGxfc2lncykKICAgICAgICAgaW5pdHNpZ3MoKTsgLyogU2lnbmFsIGhhbmRsaW5nIHN0dWZmLCBpbmNsdWRpbmcgaW5pdGludHIoKSAqLwogCi0gICAgaW5pdG1haW4oKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCisgICAgaW5pdG1haW4oaW50ZXJwKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCiAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CkBAIC0zMjcsNiArMzk2LDEyIEBACiB9CiAKIHZvaWQKK1B5X0luaXRpYWxpemVFeChpbnQgaW5zdGFsbF9zaWdzKQoreworICAgIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnN0YWxsX3NpZ3MsIDEpOworfQorCit2b2lkCiBQeV9Jbml0aWFsaXplKHZvaWQpCiB7CiAgICAgUHlfSW5pdGlhbGl6ZUV4KDEpOwpAQCAtMzYxLDkgKzQzNiwxMCBAQAogICAgIFB5T2JqZWN0ICpmb3V0ID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKICAgICBQeU9iamVjdCAqZmVyciA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihmbHVzaCk7CiAKICAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZvdXQpOwogICAgICAgICBlbHNlCkBAIC0zNzEsNyArNDQ3LDcgQEAKICAgICB9CiAKICAgICBpZiAoZmVyciAhPSBOVUxMICYmIGZlcnIgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZmVycikpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmZXJyLCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQpAQCAtNDY0LDcgKzU0MCw3IEBACiAgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CiAKICAgICAvKiBDb2xsZWN0IGZpbmFsIGdhcmJhZ2UuICBUaGlzIGRpc3Bvc2VzIG9mIGN5Y2xlcyBjcmVhdGVkIGJ5Ci0gICAgICogbmV3LXN0eWxlIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KKyAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCiAgICAgICogWFhYIFRoaXMgaXMgZGlzYWJsZWQgYmVjYXVzZSBpdCBjYXVzZWQgdG9vIG1hbnkgcHJvYmxlbXMuICBJZgogICAgICAqIFhYWCBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayB0cmlnZ2VycyBoZXJlLCBQeXRob24gY29kZSBoYXMKICAgICAgKiBYWFggYSBoYXJkIHRpbWUgcnVubmluZywgYmVjYXVzZSBldmVuIHRoZSBzeXMgbW9kdWxlIGhhcyBiZWVuCkBAIC00ODUsNiArNTYxLDkgQEAKICAgICAvKiBEZXN0cm95IHRoZSBkYXRhYmFzZSB1c2VkIGJ5IF9QeUltcG9ydF97Rml4dXAsRmluZH1FeHRlbnNpb24gKi8KICAgICBfUHlJbXBvcnRfRmluaSgpOwogCisgICAgLyogdW5sb2FkIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOworCiAgICAgLyogRGVidWdnaW5nIHN0dWZmICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKQEAgLTUzNCw2ICs2MTMsNyBAQAogICAgIFB5TG9uZ19GaW5pKCk7CiAgICAgUHlGbG9hdF9GaW5pKCk7CiAgICAgUHlEaWN0X0ZpbmkoKTsKKyAgICBQeVNsaWNlX0ZpbmkoKTsKIAogICAgIC8qIENsZWFudXAgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwogICAgIF9QeVVuaWNvZGVfRmluaSgpOwpAQCAtNTYyLDcgKzY0Miw3IEBACiAjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoKTsKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKICNlbmRpZgogCiAgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKQEAgLTYwNiw3ICs2ODYsNiBAQAogICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLwogCiAgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwotICAgIGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPSBQeURpY3RfTmV3KCk7CiAKICAgICBiaW1vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigiYnVpbHRpbnMiKTsKICAgICBpZiAoYmltb2QgIT0gTlVMTCkgewpAQCAtNjE3LDExICs2OTYsMTIgQEAKICAgICB9CiAKICAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KCk7CisgICAgX1B5RXhjX0luaXQoYmltb2QpOwogCiAgICAgc3lzbW9kID0gX1B5SW1wb3J0X0ZpbmRCdWlsdGluKCJzeXMiKTsKICAgICBpZiAoYmltb2QgIT0gTlVMTCAmJiBzeXNtb2QgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcHN0ZGVycjsKKwogICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBQeU1vZHVsZV9HZXREaWN0KHN5c21vZCk7CiAgICAgICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwpAQCAtNjQwLDEzICs3MjAsMTUgQEAKIAogICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7CiAKKyAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOworCiAgICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwogCiAgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKLSAgICAgICAgaW5pdG1haW4oKTsKKyAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKICAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQogICAgICAgICAgICAgaW5pdHNpdGUoKTsKICAgICB9CkBAIC03NDMsNyArODI1LDcgQEAKIC8qIENyZWF0ZSBfX21haW5fXyBtb2R1bGUgKi8KIAogc3RhdGljIHZvaWQKLWluaXRtYWluKHZvaWQpCitpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKICAgICBQeU9iamVjdCAqbSwgKmQ7CiAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKQEAgLTc1MiwzNSArODM0LDQ4IEBACiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpiaW1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKGJpbW9kID09IE5VTEwgfHwKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgIT0gMCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbid0IGFkZCBfX2J1aWx0aW5zX18gdG8gX19tYWluX18iKTsKKyAgICAgICAgaWYgKGJpbW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBidWlsdGlucyBtb2R1bGUiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIsIGJpbW9kKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYnVpbHRpbnNfXyIpOworICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihiaW1vZCk7CiAgICAgfQorICAgIC8qIE1haW4gaXMgYSBsaXR0bGUgc3BlY2lhbCAtIGltcC5pc19idWlsdGluKCJfX21haW5fXyIpIHdpbGwgcmV0dXJuCisgICAgICogRmFsc2UsIGJ1dCBCdWlsdGluSW1wb3J0ZXIgaXMgc3RpbGwgdGhlIG1vc3QgYXBwcm9wcmlhdGUgaW5pdGlhbAorICAgICAqIHNldHRpbmcgZm9yIGl0cyBfX2xvYWRlcl9fIGF0dHJpYnV0ZS4gQSBtb3JlIHN1aXRhYmxlIHZhbHVlIHdpbGwKKyAgICAgKiBiZSBzZXQgaWYgX19tYWluX18gZ2V0cyBmdXJ0aGVyIGluaXRpYWxpemVkIGxhdGVyIGluIHRoZSBzdGFydHVwCisgICAgICogcHJvY2Vzcy4KKyAgICAgKi8KKyAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKSA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpsb2FkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbHRpbkltcG9ydGVyIik7CisgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJldHJpZXZlIEJ1aWx0aW5JbXBvcnRlciIpOworICAgICAgICB9CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIsIGxvYWRlcikgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2xvYWRlcl9fIik7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7CisgICAgfQogfQogCiBzdGF0aWMgaW50CiBpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKICAgICBQeU9iamVjdCAqY29kZWM7Ci0jaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKLSAgICBjaGFyICpjb2Rlc2V0ID0gTlVMTDsKIAotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgLyogT24gVW5peCwgc2V0IHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBhY2NvcmRpbmcgdG8gdGhlCi0gICAgICAgICAgIHVzZXIncyBwcmVmZXJlbmNlLCBpZiB0aGUgQ09ERVNFVCBuYW1lcyBhIHdlbGwta25vd24KLSAgICAgICAgICAgUHl0aG9uIGNvZGVjLCBhbmQgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBpc24ndAotICAgICAgICAgICBpbml0aWFsaXplZCBieSBvdGhlciBtZWFucy4gKi8KLSAgICAgICAgY29kZXNldCA9IGdldF9jb2Rlc2V0KCk7Ci0gICAgICAgIGlmIChjb2Rlc2V0ID09IE5VTEwpCisgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7CisgICAgICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBVbmFibGUgdG8gZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmciKTsKIAotICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gY29kZXNldDsKICAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZgogCiAgICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CkBAIC04MjIsNiArOTE3LDExIEBACiAgICAgY29uc3QgY2hhciogbmV3bGluZTsKICAgICBQeU9iamVjdCAqbGluZV9idWZmZXJpbmc7CiAgICAgaW50IGJ1ZmZlcmluZywgaXNhdHR5OworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CisgICAgX1B5X0lERU5USUZJRVIoVGV4dElPV3JhcHBlcik7CisgICAgX1B5X0lERU5USUZJRVIobmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CiAKICAgICAvKiBzdGRpbiBpcyBhbHdheXMgb3BlbmVkIGluIGJ1ZmZlcmVkIG1vZGUsIGZpcnN0IGJlY2F1c2UgaXQgc2hvdWxkbid0CiAgICAgICAgbWFrZSBhIGRpZmZlcmVuY2UgaW4gY29tbW9uIHVzZSBjYXNlcywgc2Vjb25kIGJlY2F1c2UgVGV4dElPV3JhcHBlcgpAQCAtODM2LDE0ICs5MzYsMTUgQEAKICAgICAgICAgbW9kZSA9ICJ3YiI7CiAgICAgZWxzZQogICAgICAgICBtb2RlID0gInJiIjsKLSAgICBidWYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lPT09pIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKKyAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKGJ1ZmZlcmluZykgewotICAgICAgICByYXcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGJ1ZiwgInJhdyIpOworICAgICAgICBfUHlfSURFTlRJRklFUihyYXcpOworICAgICAgICByYXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGJ1ZiwgJlB5SWRfcmF3KTsKICAgICAgICAgaWYgKHJhdyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC04NTMsOSArOTU0LDkgQEAKICAgICB9CiAKICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgaWYgKHRleHQgPT0gTlVMTCB8fCBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJhdywgIm5hbWUiLCB0ZXh0KSA8IDApCisgICAgaWYgKHRleHQgPT0gTlVMTCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHJhdywgJlB5SWRfbmFtZSwgdGV4dCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiaXNhdHR5IiwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksICIiKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaXNhdHR5ID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC04ODEsOSArOTgyLDkgQEAKICAgICBuZXdsaW5lID0gIlxuIjsKICNlbmRpZgogCi0gICAgc3RyZWFtID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIlRleHRJT1dyYXBwZXIiLCAiT3Nzc08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBlbmNvZGluZywgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZSwgbGluZV9idWZmZXJpbmcpOworICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7CiAgICAgUHlfQ0xFQVIoYnVmKTsKICAgICBpZiAoc3RyZWFtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04OTMsNyArOTk0LDcgQEAKICAgICBlbHNlCiAgICAgICAgIG1vZGUgPSAiciI7CiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwotICAgIGlmICghdGV4dCB8fCBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHN0cmVhbSwgIm1vZGUiLCB0ZXh0KSA8IDApCisgICAgaWYgKCF0ZXh0IHx8IF9QeU9iamVjdF9TZXRBdHRySWQoc3RyZWFtLCAmUHlJZF9tb2RlLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlfQ0xFQVIodGV4dCk7CiAgICAgcmV0dXJuIHN0cmVhbTsKQEAgLTExMzMsMTMgKzEyMzQsMTQgQEAKICAgICBQeUFyZW5hICphcmVuYTsKICAgICBjaGFyICpwczEgPSAiIiwgKnBzMiA9ICIiLCAqZW5jID0gTlVMTDsKICAgICBpbnQgZXJyY29kZSA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoZW5jb2RpbmcpOwogCiAgICAgaWYgKGZwID09IHN0ZGluKSB7CiAgICAgICAgIC8qIEZldGNoIGVuY29kaW5nIGZyb20gc3lzLnN0ZGluICovCiAgICAgICAgIHYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGluIik7CiAgICAgICAgIGlmICh2ID09IE5VTEwgfHwgdiA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBvZW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiZW5jb2RpbmciKTsKKyAgICAgICAgb2VuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfZW5jb2RpbmcpOwogICAgICAgICBpZiAoIW9lbmMpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVuYyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcob2VuYyk7CkBAIC0xMjUyLDYgKzEzNTQsMzIgQEAKIH0KIAogaW50CitzdGF0aWMgc2V0X21haW5fbG9hZGVyKFB5T2JqZWN0ICpkLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbG9hZGVyX25hbWUpCit7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICpsb2FkZXJfdHlwZSwgKmxvYWRlcjsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAvKiBHZXQgY3VycmVudCB0aHJlYWQgc3RhdGUgYW5kIGludGVycHJldGVyIHBvaW50ZXIgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIGxvYWRlcl90eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwgbG9hZGVyX25hbWUpOworICAgIGlmIChsb2FkZXJfdHlwZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGxvYWRlcl90eXBlLCAic3MiLCAiX19tYWluX18iLCBmaWxlbmFtZSk7CisgICAgUHlfREVDUkVGKGxvYWRlcl90eXBlKTsKKyAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iLCBsb2FkZXIpIDwgMCkgeworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CisgICAgUHlfREVDUkVGKGxvYWRlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CiBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncyhGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBjbG9zZWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgUHlDb21waWxlckZsYWdzICpmbGFncykKIHsKQEAgLTEyODMsMTAgKzE0MTEsMTEgQEAKICAgICBsZW4gPSBzdHJsZW4oZmlsZW5hbWUpOwogICAgIGV4dCA9IGZpbGVuYW1lICsgbGVuIC0gKGxlbiA+IDQgPyA0IDogMCk7CiAgICAgaWYgKG1heWJlX3B5Y19maWxlKGZwLCBmaWxlbmFtZSwgZXh0LCBjbG9zZWl0KSkgeworICAgICAgICBGSUxFICpweWNfZnA7CiAgICAgICAgIC8qIFRyeSB0byBydW4gYSBweWMgZmlsZS4gRmlyc3QsIHJlLW9wZW4gaW4gYmluYXJ5ICovCiAgICAgICAgIGlmIChjbG9zZWl0KQogICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgaWYgKChmcCA9IGZvcGVuKGZpbGVuYW1lLCAicmIiKSkgPT0gTlVMTCkgeworICAgICAgICBpZiAoKHB5Y19mcCA9IGZvcGVuKGZpbGVuYW1lLCAicmIiKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJweXRob246IENhbid0IHJlb3BlbiAucHljIGZpbGVcbiIpOwogICAgICAgICAgICAgcmV0ID0gLTE7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CkBAIC0xMjk0LDggKzE0MjMsMjMgQEAKICAgICAgICAgLyogVHVybiBvbiBvcHRpbWl6YXRpb24gaWYgYSAucHlvIGZpbGUgaXMgZ2l2ZW4gKi8KICAgICAgICAgaWYgKHN0cmNtcChleHQsICIucHlvIikgPT0gMCkKICAgICAgICAgICAgIFB5X09wdGltaXplRmxhZyA9IDE7Ci0gICAgICAgIHYgPSBydW5fcHljX2ZpbGUoZnAsIGZpbGVuYW1lLCBkLCBkLCBmbGFncyk7CisKKyAgICAgICAgaWYgKHNldF9tYWluX2xvYWRlcihkLCBmaWxlbmFtZSwgIlNvdXJjZWxlc3NGaWxlTG9hZGVyIikgPCAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fXG4iKTsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgZmNsb3NlKHB5Y19mcCk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgdiA9IHJ1bl9weWNfZmlsZShweWNfZnAsIGZpbGVuYW1lLCBkLCBkLCBmbGFncyk7CisgICAgICAgIGZjbG9zZShweWNfZnApOwogICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFdoZW4gcnVubmluZyBmcm9tIHN0ZGluLCBsZWF2ZSBfX21haW5fXy5fX2xvYWRlcl9fIGFsb25lICovCisgICAgICAgIGlmIChzdHJjbXAoZmlsZW5hbWUsICI8c3RkaW4+IikgIT0gMCAmJgorICAgICAgICAgICAgc2V0X21haW5fbG9hZGVyKGQsIGZpbGVuYW1lLCAiU291cmNlRmlsZUxvYWRlciIpIDwgMCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJweXRob246IGZhaWxlZCB0byBzZXQgX19tYWluX18uX19sb2FkZXJfX1xuIik7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQogICAgICAgICB2ID0gUHlSdW5fRmlsZUV4RmxhZ3MoZnAsIGZpbGVuYW1lLCBQeV9maWxlX2lucHV0LCBkLCBkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VpdCwgZmxhZ3MpOwogICAgIH0KQEAgLTEzMzYsMjAgKzE0ODAsMjAgQEAKIHsKICAgICBsb25nIGhvbGQ7CiAgICAgUHlPYmplY3QgKnY7Ci0KLSAgICAvKiBvbGQgc3R5bGUgZXJyb3JzICovCi0gICAgaWYgKFB5VHVwbGVfQ2hlY2soZXJyKSkKLSAgICAgICAgcmV0dXJuIFB5QXJnX1BhcnNlVHVwbGUoZXJyLCAiTyh6aWl6KSIsIG1lc3NhZ2UsIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIG9mZnNldCwgdGV4dCk7CisgICAgX1B5X0lERU5USUZJRVIobXNnKTsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIobGluZW5vKTsKKyAgICBfUHlfSURFTlRJRklFUihvZmZzZXQpOworICAgIF9QeV9JREVOVElGSUVSKHRleHQpOwogCiAgICAgKm1lc3NhZ2UgPSBOVUxMOwogCiAgICAgLyogbmV3IHN0eWxlIGVycm9ycy4gIGBlcnInIGlzIGFuIGluc3RhbmNlICovCi0gICAgKm1lc3NhZ2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGVyciwgIm1zZyIpOworICAgICptZXNzYWdlID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX21zZyk7CiAgICAgaWYgKCEqbWVzc2FnZSkKICAgICAgICAgZ290byBmaW5hbGx5OwogCi0gICAgdiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAiZmlsZW5hbWUiKTsKKyAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX2ZpbGVuYW1lKTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CkBAIC0xMzYzLDcgKzE1MDcsNyBAQAogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIHYgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGVyciwgImxpbmVubyIpOworICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfbGluZW5vKTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBob2xkID0gUHlMb25nX0FzTG9uZyh2KTsKQEAgLTEzNzIsNyArMTUxNiw3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAqbGluZW5vID0gKGludClob2xkOwogCi0gICAgdiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAib2Zmc2V0Iik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9vZmZzZXQpOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGlmICh2ID09IFB5X05vbmUpIHsKQEAgLTEzODYsNyArMTUzMCw3IEBACiAgICAgICAgICpvZmZzZXQgPSAoaW50KWhvbGQ7CiAgICAgfQogCi0gICAgdiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAidGV4dCIpOworICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfdGV4dCk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewpAQCAtMTQ2MCw3ICsxNjA0LDggQEAKICAgICAgICAgZ290byBkb25lOwogICAgIGlmIChQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICAvKiBUaGUgZXJyb3IgY29kZSBzaG91bGQgYmUgaW4gdGhlIGBjb2RlJyBhdHRyaWJ1dGUuICovCi0gICAgICAgIFB5T2JqZWN0ICpjb2RlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2YWx1ZSwgImNvZGUiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoY29kZSk7CisgICAgICAgIFB5T2JqZWN0ICpjb2RlID0gX1B5T2JqZWN0X0dldEF0dHJJZCh2YWx1ZSwgJlB5SWRfY29kZSk7CiAgICAgICAgIGlmIChjb2RlKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgdmFsdWUgPSBjb2RlOwpAQCAtMTU2Nyw2ICsxNzEyLDcgQEAKIHsKICAgICBpbnQgZXJyID0gMDsKICAgICBQeU9iamVjdCAqdHlwZSwgKnRiOworICAgIF9QeV9JREVOVElGSUVSKHByaW50X2ZpbGVfYW5kX2xpbmUpOwogCiAgICAgaWYgKCFQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICBQeUZpbGVfV3JpdGVTdHJpbmcoIlR5cGVFcnJvcjogcHJpbnRfZXhjZXB0aW9uKCk6IEV4Y2VwdGlvbiBleHBlY3RlZCBmb3IgdmFsdWUsICIsIGYpOwpAQCAtMTU4Miw3ICsxNzI4LDcgQEAKICAgICBpZiAodGIgJiYgdGIgIT0gUHlfTm9uZSkKICAgICAgICAgZXJyID0gUHlUcmFjZUJhY2tfUHJpbnQodGIsIGYpOwogICAgIGlmIChlcnIgPT0gMCAmJgotICAgICAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHZhbHVlLCAicHJpbnRfZmlsZV9hbmRfbGluZSIpKQorICAgICAgICBfUHlPYmplY3RfSGFzQXR0cklkKHZhbHVlLCAmUHlJZF9wcmludF9maWxlX2FuZF9saW5lKSkKICAgICB7CiAgICAgICAgIFB5T2JqZWN0ICptZXNzYWdlOwogICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgKnRleHQ7CkBAIC0xNjE3LDYgKzE3NjMsNyBAQAogICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCogbW9kdWxlTmFtZTsKICAgICAgICAgY2hhciogY2xhc3NOYW1lOworICAgICAgICBfUHlfSURFTlRJRklFUihfX21vZHVsZV9fKTsKICAgICAgICAgYXNzZXJ0KFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2sodHlwZSkpOwogICAgICAgICBjbGFzc05hbWUgPSBQeUV4Y2VwdGlvbkNsYXNzX05hbWUodHlwZSk7CiAgICAgICAgIGlmIChjbGFzc05hbWUgIT0gTlVMTCkgewpAQCAtMTYyNSwxMCArMTc3MiwxMCBAQAogICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGRvdCsxOwogICAgICAgICB9CiAKLSAgICAgICAgbW9kdWxlTmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodHlwZSwgIl9fbW9kdWxlX18iKTsKKyAgICAgICAgbW9kdWxlTmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodHlwZSwgJlB5SWRfX19tb2R1bGVfXyk7CiAgICAgICAgIGlmIChtb2R1bGVOYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhtb2R1bGVOYW1lKSkKICAgICAgICAgewotICAgICAgICAgICAgUHlfREVDUkVGKG1vZHVsZU5hbWUpOworICAgICAgICAgICAgUHlfWERFQ1JFRihtb2R1bGVOYW1lKTsKICAgICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZVN0cmluZygiPHVua25vd24+IiwgZik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xNjU1LDcgKzE4MDIsNyBAQAogICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgZXJyID0gLTE7CiAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socykgfHwKLSAgICAgICAgICAgIFB5VW5pY29kZV9HZXRTaXplKHMpICE9IDApCisgICAgICAgICAgICBQeVVuaWNvZGVfR2V0TGVuZ3RoKHMpICE9IDApCiAgICAgICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVTdHJpbmcoIjogIiwgZik7CiAgICAgICAgIGlmIChlcnIgPT0gMCkKICAgICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVPYmplY3QocywgZiwgUHlfUFJJTlRfUkFXKTsKQEAgLTE3MDMsNyArMTg1MCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZV9tZXNzYWdlLCBmKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjb250ZXh0KSB7CisgICAgICAgICAgICBlbHNlIGlmIChjb250ZXh0ICYmCisgICAgICAgICAgICAgICAgISgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopdmFsdWUpLT5zdXBwcmVzc19jb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgcmVzID0gUHlTZXRfQ29udGFpbnMoc2VlbiwgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE3OTIsMTMgKzE5NDAsMTQgQEAKIHsKICAgICBQeU9iamVjdCAqZiwgKnI7CiAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsKKyAgICBfUHlfSURFTlRJRklFUihmbHVzaCk7CiAKICAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiAqLwogICAgIFB5RXJyX0ZldGNoKCZ0eXBlLCAmdmFsdWUsICZ0cmFjZWJhY2spOwogCiAgICAgZiA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAiZmx1c2giLCAiIik7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC0xODA2LDcgKzE5NTUsNyBAQAogICAgIH0KICAgICBmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJmbHVzaCIsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTE4NDUsOSArMTk5NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICJCYWQgbWFnaWMgbnVtYmVyIGluIC5weWMgZmlsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgLyogU2tpcCBtdGltZSBhbmQgc2l6ZSAqLworICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKICAgICB2ID0gUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUoZnApOwotICAgIGZjbG9zZShmcCk7CiAgICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlDb2RlX0NoZWNrKHYpKSB7CiAgICAgICAgIFB5X1hERUNSRUYodik7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xOTM3LDEyICsyMDg3LDEzIEBACiAgICAgICAgIGZsYWdzLT5jZl9mbGFncyB8PSBpZmxhZ3MgJiBQeUNGX01BU0s7CiAgICAgICAgIG1vZCA9IFB5QVNUX0Zyb21Ob2RlKG4sIGZsYWdzLCBmaWxlbmFtZSwgYXJlbmEpOwogICAgICAgICBQeU5vZGVfRnJlZShuKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgfQorICAgIGVycl9mcmVlKCZlcnIpOworICAgIHJldHVybiBtb2Q7CiB9CiAKIG1vZF90eQpAQCAtMTk2NywxNCArMjExOCwxNSBAQAogICAgICAgICBmbGFncy0+Y2ZfZmxhZ3MgfD0gaWZsYWdzICYgUHlDRl9NQVNLOwogICAgICAgICBtb2QgPSBQeUFTVF9Gcm9tTm9kZShuLCBmbGFncywgZmlsZW5hbWUsIGFyZW5hKTsKICAgICAgICAgUHlOb2RlX0ZyZWUobik7Ci0gICAgICAgIHJldHVybiBtb2Q7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBlcnJfaW5wdXQoJmVycik7CiAgICAgICAgIGlmIChlcnJjb2RlKQogICAgICAgICAgICAgKmVycmNvZGUgPSBlcnIuZXJyb3I7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KKyAgICBlcnJfZnJlZSgmZXJyKTsKKyAgICByZXR1cm4gbW9kOwogfQogCiAvKiBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBwYXJzZWZpbGUgLS0gcmV0dXJuIG5vZGUgb3Igc2V0IGV4Y2VwdGlvbiAqLwpAQCAtMTk4OCw2ICsyMTQwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIE5VTEwsIE5VTEwsICZlcnIsIGZsYWdzKTsKICAgICBpZiAobiA9PSBOVUxMKQogICAgICAgICBlcnJfaW5wdXQoJmVycik7CisgICAgZXJyX2ZyZWUoJmVycik7CiAKICAgICByZXR1cm4gbjsKIH0KQEAgLTIwMDIsNiArMjE1NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsICZlcnIsIGZsYWdzKTsKICAgICBpZiAobiA9PSBOVUxMKQogICAgICAgICBlcnJfaW5wdXQoJmVycik7CisgICAgZXJyX2ZyZWUoJmVycik7CiAgICAgcmV0dXJuIG47CiB9CiAKQEAgLTIwMTQsNiArMjE2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9QeVBhcnNlcl9HcmFtbWFyLCBzdGFydCwgJmVyciwgZmxhZ3MpOwogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKKyAgICBlcnJfZnJlZSgmZXJyKTsKICAgICByZXR1cm4gbjsKIH0KIApAQCAtMjAyNywxMSArMjE4MiwyMyBAQAogICAgZXZlbiBwYXJzZXIgbW9kdWxlcy4gKi8KIAogdm9pZAorUHlQYXJzZXJfQ2xlYXJFcnJvcihwZXJyZGV0YWlsICplcnIpCit7CisgICAgZXJyX2ZyZWUoZXJyKTsKK30KKwordm9pZAogUHlQYXJzZXJfU2V0RXJyb3IocGVycmRldGFpbCAqZXJyKQogewogICAgIGVycl9pbnB1dChlcnIpOwogfQogCitzdGF0aWMgdm9pZAorZXJyX2ZyZWUocGVycmRldGFpbCAqZXJyKQoreworICAgIFB5X0NMRUFSKGVyci0+ZmlsZW5hbWUpOworfQorCiAvKiBTZXQgdGhlIGVycm9yIGFwcHJvcHJpYXRlIHRvIHRoZSBnaXZlbiBpbnB1dCBlcnJvciBjb2RlIChzZWUgZXJyY29kZS5oKSAqLwogCiBzdGF0aWMgdm9pZApAQCAtMjAzOSw3ICsyMjA2LDYgQEAKIHsKICAgICBQeU9iamVjdCAqdiwgKncsICplcnJ0eXBlLCAqZXJydGV4dDsKICAgICBQeU9iamVjdCAqbXNnX29iaiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwogICAgIGNoYXIgKm1zZyA9IE5VTEw7CiAKICAgICBlcnJ0eXBlID0gUHlFeGNfU3ludGF4RXJyb3I7CkBAIC0yMTExLDYgKzIyNzcsOSBAQAogICAgIGNhc2UgRV9JREVOVElGSUVSOgogICAgICAgICBtc2cgPSAiaW52YWxpZCBjaGFyYWN0ZXIgaW4gaWRlbnRpZmllciI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRV9CQURTSU5HTEU6CisgICAgICAgIG1zZyA9ICJtdWx0aXBsZSBzdGF0ZW1lbnRzIGZvdW5kIHdoaWxlIGNvbXBpbGluZyBhIHNpbmdsZSBzdGF0ZW1lbnQiOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yPSVkXG4iLCBlcnItPmVycm9yKTsKICAgICAgICAgbXNnID0gInVua25vd24gcGFyc2luZyBlcnJvciI7CkBAIC0yMTI1LDE3ICsyMjk0LDggQEAKICAgICAgICAgZXJydGV4dCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGVyci0+dGV4dCwgc3RybGVuKGVyci0+dGV4dCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSIpOwogICAgIH0KLSAgICBpZiAoZXJyLT5maWxlbmFtZSAhPSBOVUxMKQotICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZXJyLT5maWxlbmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgZmlsZW5hbWUgPSBQeV9Ob25lOwotICAgIH0KLSAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihOaWlOKSIsIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlcnItPmxpbmVubywgZXJyLT5vZmZzZXQsIGVycnRleHQpOwotICAgIGVsc2UKLSAgICAgICAgdiA9IE5VTEw7CisgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihPaWlOKSIsIGVyci0+ZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgZXJyLT5saW5lbm8sIGVyci0+b2Zmc2V0LCBlcnJ0ZXh0KTsKICAgICBpZiAodiAhPSBOVUxMKSB7CiAgICAgICAgIGlmIChtc2dfb2JqKQogICAgICAgICAgICAgdyA9IFB5X0J1aWxkVmFsdWUoIihPTykiLCBtc2dfb2JqLCB2KTsKQEAgLTIxNTksMTEgKzIzMTksMjQgQEAKIHZvaWQKIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbXNnKQogeworICAgIGNvbnN0IGludCBmZCA9IGZpbGVubyhzdGRlcnIpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKwogICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAlc1xuIiwgbXNnKTsKICAgICBmZmx1c2goc3RkZXJyKTsgLyogaXQgaGVscHMgaW4gV2luZG93cyBkZWJ1ZyBidWlsZCAqLwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5RXJyX1ByaW50RXgoMCk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICB0c3RhdGUgPSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CisgICAgICAgIGlmICh0c3RhdGUgIT0gTlVMTCkgeworICAgICAgICAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICAgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOworICAgIH0KKwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB7CiAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4obXNnKTsKQEAgLTIyMTgsNiArMjM5MSw3IEBACiB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCkKIHsKICNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeV9JREVOVElGSUVSKF9zaHV0ZG93bik7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIFB5T2JqZWN0ICp0aHJlYWRpbmcgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyh0c3RhdGUtPmludGVycC0+bW9kdWxlcywKQEAgLTIyMjcsNyArMjQwMSw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0aHJlYWRpbmcsICJfc2h1dGRvd24iLCAiIik7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vcHl0aW1lLmMgYi9QeXRob24vcHl0aW1lLmMKaW5kZXggNmZiNzY5NS4uYmVlYWI4NyAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5dGltZS5jCisrKyBiL1B5dGhvbi9weXRpbWUuYwpAQCAtMSw3ICsxLDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCiAKLSNpZmRlZiBfX0FQUExFX18KLSNpZiBkZWZpbmVkKEhBVkVfR0VUVElNRU9GREFZKSAmJiBkZWZpbmVkKEhBVkVfRlRJTUUpCisjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoSEFWRV9HRVRUSU1FT0ZEQVkpICYmIGRlZmluZWQoSEFWRV9GVElNRSkKICAgLyoKICAgICogX1B5VGltZV9nZXR0aW1lb2ZkYXkgZmFsbHMgYmFjayB0byBmdGltZSB3aGVuIGdldHR0aW1lb2ZkYXkgZmFpbHMgYmVjYXVzZSB0aGUgbGF0dGVyCiAgICAqIG1pZ2h0IGZhaWwgb24gc29tZSBwbGF0Zm9ybXMuIFRoaXMgZmFsbGJhY2sgaXMgdW53YW50ZWQgb24gTWFjT1NYIGJlY2F1c2UKQEAgLTEwLDE4ICsxMiw0MSBAQAogICAgKi8KICMgdW5kZWYgSEFWRV9GVElNRQogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfRlRJTUUpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisjaW5jbHVkZSA8c3lzL3RpbWViLmg+CitleHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqKTsKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9GVElNRQotI2luY2x1ZGUgPHN5cy90aW1lYi5oPgotI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKFBZT1NfT1MyKQotZXh0ZXJuIGludCBmdGltZShzdHJ1Y3QgdGltZWIgKik7Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotI2VuZGlmIC8qIEhBVkVfRlRJTUUgKi8KLQotdm9pZAotX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCkKK3N0YXRpYyB2b2lkCitweWdldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBGSUxFVElNRSBzeXN0ZW1fdGltZTsKKyAgICBVTEFSR0VfSU5URUdFUiBsYXJnZTsKKyAgICBVTE9OR0xPTkcgbWljcm9zZWNvbmRzOworCisgICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJnN5c3RlbV90aW1lKTsKKyAgICBsYXJnZS51Lkxvd1BhcnQgPSBzeXN0ZW1fdGltZS5kd0xvd0RhdGVUaW1lOworICAgIGxhcmdlLnUuSGlnaFBhcnQgPSBzeXN0ZW1fdGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICAvKiAxMSw2NDQsNDczLDYwMCwwMDAsMDAwOiBudW1iZXIgb2YgbWljcm9zZWNvbmRzIGJldHdlZW4KKyAgICAgICB0aGUgMXN0IGphbnVhcnkgMTYwMSBhbmQgdGhlIDFzdCBqYW51YXJ5IDE5NzAgKDM2OSB5ZWFycyArIDg5IGxlYXAKKyAgICAgICBkYXlzKS4gKi8KKyAgICBtaWNyb3NlY29uZHMgPSBsYXJnZS5RdWFkUGFydCAvIDEwIC0gMTE2NDQ0NzM2MDAwMDAwMDA7CisgICAgdHAtPnR2X3NlYyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAwMDA7CisgICAgdHAtPnR2X3VzZWMgPSBtaWNyb3NlY29uZHMgJSAxMDAwMDAwOworICAgIGlmIChpbmZvKSB7CisgICAgICAgIERXT1JEIHRpbWVBZGp1c3RtZW50LCB0aW1lSW5jcmVtZW50OworICAgICAgICBCT09MIGlzVGltZUFkanVzdG1lbnREaXNhYmxlZDsKKworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpIjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgKHZvaWQpIEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNUaW1lQWRqdXN0bWVudERpc2FibGVkKTsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICB9CisjZWxzZQogICAgIC8qIFRoZXJlIGFyZSB0aHJlZSB3YXlzIHRvIGdldCB0aGUgdGltZToKICAgICAgICgxKSBnZXR0aW1lb2ZkYXkoKSAtLSByZXNvbHV0aW9uIGluIG1pY3Jvc2Vjb25kcwogICAgICAgKDIpIGZ0aW1lKCkgLS0gcmVzb2x1dGlvbiBpbiBtaWxsaXNlY29uZHMKQEAgLTMwLDI3ICs1NSwxNzMgQEAKICAgICAgIFNpbmNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBTQ08gT0RUIDMuMCkgZ2V0dGltZW9mZGF5KCkgbWF5CiAgICAgICBmYWlsLCBzbyB3ZSBmYWxsIGJhY2sgb24gZnRpbWUoKSBvciB0aW1lKCkuCiAgICAgICBOb3RlOiBjbG9jayByZXNvbHV0aW9uIGRvZXMgbm90IGltcGx5IGNsb2NrIGFjY3VyYWN5ISAqLworCiAjaWZkZWYgSEFWRV9HRVRUSU1FT0ZEQVkKKyAgICBpbnQgZXJyOwogI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgotICAgIGlmIChnZXR0aW1lb2ZkYXkodHApID09IDApCisgICAgZXJyID0gZ2V0dGltZW9mZGF5KHRwKTsKKyNlbHNlCisgICAgZXJyID0gZ2V0dGltZW9mZGF5KHRwLCAoc3RydWN0IHRpbWV6b25lICopTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoZXJyID09IDApIHsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImdldHRpbWVvZmRheSgpIjsKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS02OworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKLSNlbHNlIC8qICFHRVRUSU1FT0ZEQVlfTk9fVFogKi8KLSAgICBpZiAoZ2V0dGltZW9mZGF5KHRwLCAoc3RydWN0IHRpbWV6b25lICopTlVMTCkgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmIC8qICFHRVRUSU1FT0ZEQVlfTk9fVFogKi8KLSNlbmRpZiAvKiAhSEFWRV9HRVRUSU1FT0ZEQVkgKi8KKyAgICB9CisjZW5kaWYgICAvKiBIQVZFX0dFVFRJTUVPRkRBWSAqLworCiAjaWYgZGVmaW5lZChIQVZFX0ZUSU1FKQogICAgIHsKICAgICAgICAgc3RydWN0IHRpbWViIHQ7CiAgICAgICAgIGZ0aW1lKCZ0KTsKICAgICAgICAgdHAtPnR2X3NlYyA9IHQudGltZTsKICAgICAgICAgdHAtPnR2X3VzZWMgPSB0Lm1pbGxpdG0gKiAxMDAwOworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZnRpbWUoKSI7CisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtMzsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlIC8qICFIQVZFX0ZUSU1FICovCiAgICAgdHAtPnR2X3NlYyA9IHRpbWUoTlVMTCk7CiAgICAgdHAtPnR2X3VzZWMgPSAwOworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gInRpbWUoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjA7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgIH0KICNlbmRpZiAvKiAhSEFWRV9GVElNRSAqLwotICAgIHJldHVybjsKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KKwordm9pZAorX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCkKK3sKKyAgICBweWdldHRpbWVvZmRheSh0cCwgTlVMTCk7Cit9CisKK3ZvaWQKK19QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKK3sKKyAgICBweWdldHRpbWVvZmRheSh0cCwgaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkCitlcnJvcl90aW1lX3Rfb3ZlcmZsb3codm9pZCkKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIHBsYXRmb3JtIHRpbWVfdCIpOworfQorCit0aW1lX3QKK19QeUxvbmdfQXNUaW1lX3QoUHlPYmplY3QgKm9iaikKK3sKKyNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICBQWV9MT05HX0xPTkcgdmFsOworICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7CisjZWxzZQorICAgIGxvbmcgdmFsOworICAgIGFzc2VydChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOworICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKKyNlbmRpZgorICAgIGlmICh2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAodGltZV90KXZhbDsKK30KKworUHlPYmplY3QgKgorX1B5TG9uZ19Gcm9tVGltZV90KHRpbWVfdCB0KQoreworI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdCk7CisjZWxzZQorICAgIGFzc2VydChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdCk7CisjZW5kaWYKK30KKworc3RhdGljIGludAorX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yKQoreworICAgIGFzc2VydChkZW5vbWluYXRvciA8PSBMT05HX01BWCk7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgeworICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKKworICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOworICAgICAgICBmbG9hdHBhcnQgPSBtb2RmKGQsICZpbnRwYXJ0KTsKKyAgICAgICAgaWYgKGZsb2F0cGFydCA8IDApIHsKKyAgICAgICAgICAgIGZsb2F0cGFydCA9IDEuMCArIGZsb2F0cGFydDsKKyAgICAgICAgICAgIGludHBhcnQgLT0gMS4wOworICAgICAgICB9CisKKyAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKKyAgICAgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKKyAgICAgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKKyAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOworICAgICAgICAqbnVtZXJhdG9yID0gKGxvbmcpZmxvYXRwYXJ0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICpzZWMgPSBfUHlMb25nX0FzVGltZV90KG9iaik7CisgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgKm51bWVyYXRvciA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworaW50CitfUHlUaW1lX09iamVjdFRvVGltZV90KFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjKQoreworICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKKyAgICAgICAgZG91YmxlIGQsIGludHBhcnQsIGVycjsKKworICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOworICAgICAgICAodm9pZCltb2RmKGQsICZpbnRwYXJ0KTsKKworICAgICAgICAqc2VjID0gKHRpbWVfdClpbnRwYXJ0OworICAgICAgICBlcnIgPSBpbnRwYXJ0IC0gKGRvdWJsZSkqc2VjOworICAgICAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAqc2VjID0gX1B5TG9uZ19Bc1RpbWVfdChvYmopOworICAgICAgICBpZiAoKnNlYyA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworaW50CitfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm5zZWMpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgbnNlYywgMWU5KTsKK30KKworaW50CitfUHlUaW1lX09iamVjdFRvVGltZXZhbChQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqdXNlYykKK3sKKyAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCB1c2VjLCAxZTYpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKaW5kZXggODI1MjYwZi4uNTM1MThjMiAxMDA2NDQKLS0tIGEvUHl0aG9uL3JhbmRvbS5jCisrKyBiL1B5dGhvbi9yYW5kb20uYwpAQCAtMjU4LDE3ICsyNTgsNiBAQAogICAgIF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkID0gMTsKIAogICAgIC8qCi0gICAgICBCeSBkZWZhdWx0LCBoYXNoIHJhbmRvbWl6YXRpb24gaXMgZGlzYWJsZWQsIGFuZCBvbmx5Ci0gICAgICBlbmFibGVkIGlmIFBZVEhPTkhBU0hTRUVEIGlzIHNldCB0byBub24tZW1wdHkgb3IgaWYKLSAgICAgICItUiIgaXMgcHJvdmlkZWQgYXQgdGhlIGNvbW1hbmQgbGluZToKLSAgICAqLwotICAgIGlmICghUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnKSB7Ci0gICAgICAgIC8qIERpc2FibGUgdGhlIHJhbmRvbWl6ZWQgaGFzaDogKi8KLSAgICAgICAgbWVtc2V0KHNlY3JldCwgMCwgc2VjcmV0X3NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLyoKICAgICAgIEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkLiAgR2VuZXJhdGUgYSBwZXItcHJvY2VzcyBzZWNyZXQsCiAgICAgICB1c2luZyBQWVRIT05IQVNIU0VFRCBpZiBwcm92aWRlZC4KICAgICAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5bXRhYmxlLmMgYi9QeXRob24vc3ltdGFibGUuYwppbmRleCAzNWZjNmUxLi4xYzI5MWJiIDEwMDY0NAotLS0gYS9QeXRob24vc3ltdGFibGUuYworKysgYi9QeXRob24vc3ltdGFibGUuYwpAQCAtMTksMTAgKzE5LDYgQEAKIAogI2RlZmluZSBJTVBPUlRfU1RBUl9XQVJOSU5HICJpbXBvcnQgKiBvbmx5IGFsbG93ZWQgYXQgbW9kdWxlIGxldmVsIgogCi0jZGVmaW5lIFJFVFVSTl9WQUxfSU5fR0VORVJBVE9SIFwKLSAgICAiJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yIgotCi0KIHN0YXRpYyBQeVNURW50cnlPYmplY3QgKgogc3RlX25ldyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpZGVudGlmaWVyIG5hbWUsIF9QeV9ibG9ja190eSBibG9jaywKICAgICAgICAgdm9pZCAqa2V5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKQEAgLTE4Nyw2ICsxODMsNyBAQAogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBhc2RsX3NlcSAqYXJncyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpbnQgcG9zKTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKTsKK3N0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfd2l0aGl0ZW0oc3RydWN0IHN5bXRhYmxlICpzdCwgd2l0aGl0ZW1fdHkgaXRlbSk7CiAKIAogc3RhdGljIGlkZW50aWZpZXIgdG9wID0gTlVMTCwgbGFtYmRhID0gTlVMTCwgZ2VuZXhwciA9IE5VTEwsCkBAIC03NTIsNyArNzQ5LDcgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgLyogUmVjdXJzaXZlbHkgY2FsbCBhbmFseXplX2Jsb2NrKCkgb24gZWFjaCBjaGlsZCBibG9jay4KKyAgICAvKiBSZWN1cnNpdmVseSBjYWxsIGFuYWx5emVfY2hpbGRfYmxvY2soKSBvbiBlYWNoIGNoaWxkIGJsb2NrLgogCiAgICAgICAgbmV3Ym91bmQsIG5ld2dsb2JhbCBub3cgY29udGFpbiB0aGUgbmFtZXMgdmlzaWJsZSBpbgogICAgICAgIG5lc3RlZCBibG9ja3MuICBUaGUgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIGNoaWxkcmVuIHdpbGwKQEAgLTg5NSwxOCArODkyLDE1IEBACiBzdGF0aWMgaW50CiBzeW10YWJsZV9leGl0X2Jsb2NrKHN0cnVjdCBzeW10YWJsZSAqc3QsIHZvaWQgKmFzdCkKIHsKLSAgICBQeV9zc2l6ZV90IGVuZDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBQeV9DTEVBUihzdC0+c3RfY3VyKTsKLSAgICBlbmQgPSBQeUxpc3RfR0VUX1NJWkUoc3QtPnN0X3N0YWNrKSAtIDE7Ci0gICAgaWYgKGVuZCA+PSAwKSB7Ci0gICAgICAgIHN0LT5zdF9jdXIgPSAoUHlTVEVudHJ5T2JqZWN0ICopUHlMaXN0X0dFVF9JVEVNKHN0LT5zdF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKTsKLSAgICAgICAgaWYgKHN0LT5zdF9jdXIgPT0gTlVMTCkKKyAgICBzdC0+c3RfY3VyID0gTlVMTDsKKyAgICBzaXplID0gUHlMaXN0X0dFVF9TSVpFKHN0LT5zdF9zdGFjayk7CisgICAgaWYgKHNpemUpIHsKKyAgICAgICAgaWYgKFB5TGlzdF9TZXRTbGljZShzdC0+c3Rfc3RhY2ssIHNpemUgLSAxLCBzaXplLCBOVUxMKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgUHlfSU5DUkVGKHN0LT5zdF9jdXIpOwotICAgICAgICBpZiAoUHlTZXF1ZW5jZV9EZWxJdGVtKHN0LT5zdF9zdGFjaywgZW5kKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKC0tc2l6ZSkKKyAgICAgICAgICAgIHN0LT5zdF9jdXIgPSAoUHlTVEVudHJ5T2JqZWN0ICopUHlMaXN0X0dFVF9JVEVNKHN0LT5zdF9zdGFjaywgc2l6ZSAtIDEpOwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KQEAgLTkxNSwyMyArOTA5LDIzIEBACiBzeW10YWJsZV9lbnRlcl9ibG9jayhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpZGVudGlmaWVyIG5hbWUsIF9QeV9ibG9ja190eSBibG9jaywKICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFzdCwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiB7Ci0gICAgUHlTVEVudHJ5T2JqZWN0ICpwcmV2ID0gTlVMTDsKKyAgICBQeVNURW50cnlPYmplY3QgKnByZXYgPSBOVUxMLCAqc3RlOwogCi0gICAgaWYgKHN0LT5zdF9jdXIpIHsKLSAgICAgICAgcHJldiA9IHN0LT5zdF9jdXI7Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHN0LT5zdF9zdGFjaywgKFB5T2JqZWN0ICopc3QtPnN0X2N1cikgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc3QtPnN0X2N1cik7Ci0gICAgfQotICAgIHN0LT5zdF9jdXIgPSBzdGVfbmV3KHN0LCBuYW1lLCBibG9jaywgYXN0LCBsaW5lbm8sIGNvbF9vZmZzZXQpOwotICAgIGlmIChzdC0+c3RfY3VyID09IE5VTEwpCisgICAgc3RlID0gc3RlX25ldyhzdCwgbmFtZSwgYmxvY2ssIGFzdCwgbGluZW5vLCBjb2xfb2Zmc2V0KTsKKyAgICBpZiAoc3RlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChQeUxpc3RfQXBwZW5kKHN0LT5zdF9zdGFjaywgKFB5T2JqZWN0ICopc3RlKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHN0ZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBwcmV2ID0gc3QtPnN0X2N1cjsKKyAgICAvKiBUaGUgZW50cnkgaXMgb3duZWQgYnkgdGhlIHN0YWNrLiBCb3Jyb3cgaXQgZm9yIHN0X2N1ci4gKi8KKyAgICBQeV9ERUNSRUYoc3RlKTsKKyAgICBzdC0+c3RfY3VyID0gc3RlOwogICAgIGlmIChibG9jayA9PSBNb2R1bGVCbG9jaykKICAgICAgICAgc3QtPnN0X2dsb2JhbCA9IHN0LT5zdF9jdXItPnN0ZV9zeW1ib2xzOwogICAgIGlmIChwcmV2KSB7Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHByZXYtPnN0ZV9jaGlsZHJlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopc3QtPnN0X2N1cikgPCAwKSB7CisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHByZXYtPnN0ZV9jaGlsZHJlbiwgKFB5T2JqZWN0ICopc3RlKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMTAyNSwxMiArMTAxOSw2IEBACiAgICAgaWYgKCFzeW10YWJsZV92aXNpdF8gIyMgVFlQRSgoU1QpLCAoVikpKSBcCiAgICAgICAgIHJldHVybiAwOwogCi0jZGVmaW5lIFZJU0lUX0lOX0JMT0NLKFNULCBUWVBFLCBWLCBTKSBcCi0gICAgaWYgKCFzeW10YWJsZV92aXNpdF8gIyMgVFlQRSgoU1QpLCAoVikpKSB7IFwKLSAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jaygoU1QpLCAoUykpOyBcCi0gICAgICAgIHJldHVybiAwOyBcCi0gICAgfQotCiAjZGVmaW5lIFZJU0lUX1NFUShTVCwgVFlQRSwgU0VRKSB7IFwKICAgICBpbnQgaTsgXAogICAgIGFzZGxfc2VxICpzZXEgPSAoU0VRKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCkBAIC0xMDQxLDE4ICsxMDI5LDYgQEAKICAgICB9IFwKIH0KIAotI2RlZmluZSBWSVNJVF9TRVFfSU5fQkxPQ0soU1QsIFRZUEUsIFNFUSwgUykgeyBcCi0gICAgaW50IGk7IFwKLSAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAotICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7IFwKLSAgICAgICAgVFlQRSAjIyBfdHkgZWx0ID0gKFRZUEUgIyMgX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCi0gICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgZWx0KSkgeyBcCi0gICAgICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKChTVCksIChTKSk7IFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIH0gXAotICAgIH0gXAotfQotCiAjZGVmaW5lIFZJU0lUX1NFUV9UQUlMKFNULCBUWVBFLCBTRVEsIFNUQVJUKSB7IFwKICAgICBpbnQgaTsgXAogICAgIGFzZGxfc2VxICpzZXEgPSAoU0VRKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCkBAIC0xMDYzLDE4ICsxMDM5LDYgQEAKICAgICB9IFwKIH0KIAotI2RlZmluZSBWSVNJVF9TRVFfVEFJTF9JTl9CTE9DSyhTVCwgVFlQRSwgU0VRLCBTVEFSVCwgUykgeyBcCi0gICAgaW50IGk7IFwKLSAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAotICAgIGZvciAoaSA9IChTVEFSVCk7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7IFwKLSAgICAgICAgVFlQRSAjIyBfdHkgZWx0ID0gKFRZUEUgIyMgX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCi0gICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgZWx0KSkgeyBcCi0gICAgICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKChTVCksIChTKSk7IFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIH0gXAotICAgIH0gXAotfQotCiAjZGVmaW5lIFZJU0lUX0tXT05MWURFRkFVTFRTKFNULCBLV19ERUZBVUxUUykgeyBcCiAgICAgaW50IGkgPSAwOyBcCiAgICAgYXNkbF9zZXEgKnNlcSA9IChLV19ERUZBVUxUUyk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXApAQCAtMTEyNCw4ICsxMDg4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKXMsIHMtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgYXJndW1lbnRzLCBzLT52LkZ1bmN0aW9uRGVmLmFyZ3MsIHMpOwotICAgICAgICBWSVNJVF9TRVFfSU5fQkxPQ0soc3QsIHN0bXQsIHMtPnYuRnVuY3Rpb25EZWYuYm9keSwgcyk7CisgICAgICAgIFZJU0lUKHN0LCBhcmd1bWVudHMsIHMtPnYuRnVuY3Rpb25EZWYuYXJncyk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5GdW5jdGlvbkRlZi5ib2R5KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCBzKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBicmVhazsKQEAgLTExNTMsNyArMTExNyw3IEBACiAgICAgICAgIH0KICAgICAgICAgdG1wID0gc3QtPnN0X3ByaXZhdGU7CiAgICAgICAgIHN0LT5zdF9wcml2YXRlID0gcy0+di5DbGFzc0RlZi5uYW1lOwotICAgICAgICBWSVNJVF9TRVFfSU5fQkxPQ0soc3QsIHN0bXQsIHMtPnYuQ2xhc3NEZWYuYm9keSwgcyk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5DbGFzc0RlZi5ib2R5KTsKICAgICAgICAgc3QtPnN0X3ByaXZhdGUgPSB0bXA7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTExNjMsMTQgKzExMjcsNiBAQAogICAgICAgICBpZiAocy0+di5SZXR1cm4udmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJldHVybi52YWx1ZSk7CiAgICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfcmV0dXJuc192YWx1ZSA9IDE7Ci0gICAgICAgICAgICBpZiAoc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvcikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IpOwotICAgICAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoc3QtPnN0X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEZWxldGVfa2luZDoKQEAgLTEyMDcsMTkgKzExNjMsMTYgQEAKICAgICBjYXNlIFJhaXNlX2tpbmQ6CiAgICAgICAgIGlmIChzLT52LlJhaXNlLmV4YykgewogICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmFpc2UuZXhjKTsKLSAgICAgICAgaWYgKHMtPnYuUmFpc2UuY2F1c2UpIHsKLSAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmFpc2UuY2F1c2UpOwotICAgICAgICB9CisgICAgICAgICAgICBpZiAocy0+di5SYWlzZS5jYXVzZSkgeworICAgICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJhaXNlLmNhdXNlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRyeUV4Y2VwdF9raW5kOgotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0LmJvZHkpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0Lm9yZWxzZSk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgZXhjZXB0aGFuZGxlciwgcy0+di5UcnlFeGNlcHQuaGFuZGxlcnMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRyeUZpbmFsbHlfa2luZDoKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUZpbmFsbHkuYm9keSk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSk7CisgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5ib2R5KTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5vcmVsc2UpOworICAgICAgICBWSVNJVF9TRVEoc3QsIGV4Y2VwdGhhbmRsZXIsIHMtPnYuVHJ5LmhhbmRsZXJzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5maW5hbGJvZHkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFzc2VydF9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3NlcnQudGVzdCk7CkBAIC0xMzA3LDEwICsxMjYwLDcgQEAKICAgICAgICAgLyogbm90aGluZyB0byBkbyBoZXJlICovCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2l0aF9raW5kOgotICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5XaXRoLmNvbnRleHRfZXhwcik7Ci0gICAgICAgIGlmIChzLT52LldpdGgub3B0aW9uYWxfdmFycykgewotICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuV2l0aC5vcHRpb25hbF92YXJzKTsKLSAgICAgICAgfQorICAgICAgICBWSVNJVF9TRVEoc3QsIHdpdGhpdGVtLCBzLT52LldpdGguaXRlbXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuV2l0aC5ib2R5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM0Myw4ICsxMjkzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKWUsIGUtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5jb2xfb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgYXJndW1lbnRzLCBlLT52LkxhbWJkYS5hcmdzLCAodm9pZCopZSk7Ci0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCBlLT52LkxhbWJkYS5ib2R5LCAodm9pZCopZSk7CisgICAgICAgIFZJU0lUKHN0LCBhcmd1bWVudHMsIGUtPnYuTGFtYmRhLmFyZ3MpOworICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5MYW1iZGEuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBicmVhazsKQEAgLTEzNzgsMTcgKzEzMjgsMTQgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFlpZWxkX2tpbmQ6Ci0gICAgICAgIGlmIChlLT52LllpZWxkLnZhbHVlKQotICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuWWllbGQudmFsdWUpOworICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6IHsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgdmFsdWUgPSAoZS0+a2luZCA9PSBZaWVsZEZyb21fa2luZCkgPyBlLT52LllpZWxkRnJvbS52YWx1ZSA6IGUtPnYuWWllbGQudmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCB2YWx1ZSk7CiAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOwotICAgICAgICBpZiAoc3QtPnN0X2N1ci0+c3RlX3JldHVybnNfdmFsdWUpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICBSRVRVUk5fVkFMX0lOX0dFTkVSQVRPUik7Ci0gICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbkV4KHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+bGluZW5vLCBlLT5jb2xfb2Zmc2V0KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpOwpAQCAtMTU0NSw2ICsxNDkyLDE2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyBpbnQKK3N5bXRhYmxlX3Zpc2l0X3dpdGhpdGVtKHN0cnVjdCBzeW10YWJsZSAqc3QsIHdpdGhpdGVtX3R5IGl0ZW0pCit7CisgICAgVklTSVQoc3QsIGV4cHIsIGl0ZW0tPmNvbnRleHRfZXhwcik7CisgICAgaWYgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMpIHsKKyAgICAgICAgVklTSVQoc3QsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogCiBzdGF0aWMgaW50CiBzeW10YWJsZV92aXNpdF9hbGlhcyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBhbGlhc190eSBhKQpAQCAtMTU1NSwxMCArMTUxMiwxMCBAQAogICAgICovCiAgICAgUHlPYmplY3QgKnN0b3JlX25hbWU7CiAgICAgUHlPYmplY3QgKm5hbWUgPSAoYS0+YXNuYW1lID09IE5VTEwpID8gYS0+bmFtZSA6IGEtPmFzbmFtZTsKLSAgICBjb25zdCBQeV9VTklDT0RFICpiYXNlID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSk7Ci0gICAgUHlfVU5JQ09ERSAqZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoYmFzZSwgJy4nKTsKLSAgICBpZiAoZG90KSB7Ci0gICAgICAgIHN0b3JlX25hbWUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYmFzZSwgZG90IC0gYmFzZSk7CisgICAgUHlfc3NpemVfdCBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpLCAxKTsKKyAgICBpZiAoZG90ICE9IC0xKSB7CisgICAgICAgIHN0b3JlX25hbWUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIDAsIGRvdCk7CiAgICAgICAgIGlmICghc3RvcmVfbmFtZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE2NTUsMTMgKzE2MTIsMTIgQEAKICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCBvdXRlcm1vc3QtPnRhcmdldCwgKHZvaWQqKWUpOwotICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgZXhwciwgb3V0ZXJtb3N0LT5pZnMsICh2b2lkKillKTsKLSAgICBWSVNJVF9TRVFfVEFJTF9JTl9CTE9DSyhzdCwgY29tcHJlaGVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLCAxLCAodm9pZCopZSk7CisgICAgVklTSVQoc3QsIGV4cHIsIG91dGVybW9zdC0+dGFyZ2V0KTsKKyAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIG91dGVybW9zdC0+aWZzKTsKKyAgICBWSVNJVF9TRVFfVEFJTChzdCwgY29tcHJlaGVuc2lvbiwgZ2VuZXJhdG9ycywgMSk7CiAgICAgaWYgKHZhbHVlKQotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgdmFsdWUsICh2b2lkKillKTsKLSAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgZWx0LCAodm9pZCopZSk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCB2YWx1ZSk7CisgICAgVklTSVQoc3QsIGV4cHIsIGVsdCk7CiAgICAgcmV0dXJuIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBjNGYyN2QwLi4yMGJmYTU1IDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCisjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAogI2luY2x1ZGUgIm9zZGVmcy5oIgogCkBAIC03OCw4ICs3OSwxMCBAQAogICAgIFB5T2JqZWN0ICplbmNvZGVkLCAqZXNjYXBlZF9zdHIsICpyZXByX3N0ciwgKmJ1ZmZlciwgKnJlc3VsdDsKICAgICBjaGFyICpzdGRvdXRfZW5jb2Rpbmdfc3RyOwogICAgIGludCByZXQ7CisgICAgX1B5X0lERU5USUZJRVIoZW5jb2RpbmcpOworICAgIF9QeV9JREVOVElGSUVSKGJ1ZmZlcik7CiAKLSAgICBzdGRvdXRfZW5jb2RpbmcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG91dGYsICJlbmNvZGluZyIpOworICAgIHN0ZG91dF9lbmNvZGluZyA9IF9QeU9iamVjdF9HZXRBdHRySWQob3V0ZiwgJlB5SWRfZW5jb2RpbmcpOwogICAgIGlmIChzdGRvdXRfZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRvdXRfZW5jb2RpbmcpOwpAQCAtOTYsOSArOTksMTAgQEAKICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgYnVmZmVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRmLCAiYnVmZmVyIik7CisgICAgYnVmZmVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChvdXRmLCAmUHlJZF9idWZmZXIpOwogICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChidWZmZXIsICJ3cml0ZSIsICIoTykiLCBlbmNvZGVkKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfd3JpdGUsICIoTykiLCBlbmNvZGVkKTsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTM1LDYgKzEzOSw3IEBACiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBpbnRlcnAtPm1vZHVsZXM7CiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgImJ1aWx0aW5zIik7CiAgICAgaW50IGVycjsKKyAgICBfUHlfSURFTlRJRklFUihfKTsKIAogICAgIGlmIChidWlsdGlucyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJsb3N0IGJ1aWx0aW5zIG1vZHVsZSIpOwpAQCAtMTQ4LDcgKzE1Myw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGJ1aWx0aW5zLCAiXyIsIFB5X05vbmUpICE9IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoYnVpbHRpbnMsICZQeUlkX18sIFB5X05vbmUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG91dGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIGlmIChvdXRmID09IE5VTEwgfHwgb3V0ZiA9PSBQeV9Ob25lKSB7CkBAIC0xNzAsNyArMTc1LDcgQEAKICAgICB9CiAgICAgaWYgKFB5RmlsZV9Xcml0ZVN0cmluZygiXG4iLCBvdXRmKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhidWlsdGlucywgIl8iLCBvKSAhPSAwKQorICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKGJ1aWx0aW5zLCAmUHlJZF9fLCBvKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC03NzAsOSArNzc1LDcgQEAKIGEgbGF6eSByZXNvbHZpbmcgb2Ygc3ltYm9scyB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSwgaWYgY2FsbGVkIGFzXG5cCiBzeXMuc2V0ZGxvcGVuZmxhZ3MoMCkuICBUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhc1xuXAogc3lzLnNldGRsb3BlbmZsYWdzKGN0eXBlcy5SVExEX0dMT0JBTCkuICBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWcgbW9kdWxlc1xuXAotY2FuIGJlIGVpdGhlciBmb3VuZCBpbiB0aGUgY3R5cGVzIG1vZHVsZSwgb3IgaW4gdGhlIERMRkNOIG1vZHVsZS4gSWYgRExGQ05cblwKLWlzIG5vdCBhdmFpbGFibGUsIGl0IGNhbiBiZSBnZW5lcmF0ZWQgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaCB1c2luZyB0aGVcblwKLWgycHkgc2NyaXB0LiIpOworY2FuIGJlIGZvdW5kIGluIHRoZSBvcyBtb2R1bGUgKFJUTERfeHh4IGNvbnN0YW50cywgZS5nLiBvcy5SVExEX0xBWlkpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX2dldGRsb3BlbmZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTgxMSwxMCArODE0LDExIEBACiBzeXNfZ2V0c2l6ZW9mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpzdHJfX3NpemVvZl9fID0gTlVMTCwgKmdjX2hlYWRfc2l6ZSA9IE5VTEw7CisgICAgc3RhdGljIFB5T2JqZWN0ICpnY19oZWFkX3NpemUgPSBOVUxMOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqZWN0IiwgImRlZmF1bHQiLCAwfTsKICAgICBQeU9iamVjdCAqbywgKmRmbHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptZXRob2Q7CisgICAgX1B5X0lERU5USUZJRVIoX19zaXplb2ZfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmdldHNpemVvZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbywgJmRmbHQpKQpAQCAtODMxLDggKzgzNSw3IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeShQeV9UWVBFKG8pKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgIl9fc2l6ZW9mX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJfX3NpemVvZl9fKTsKKyAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3NpemVvZl9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTk5NCw2ICs5OTcsMjcgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZGVidWdtYWxsb2NzdGF0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWZkZWYgV0lUSF9QWU1BTExPQworICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyNlbmRpZgorICAgIF9QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhzdGRlcnIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CitQeURvY19TVFJWQVIoZGVidWdtYWxsb2NzdGF0c19kb2MsCisiX2RlYnVnbWFsbG9jc3RhdHMoKVxuXAorXG5cCitQcmludCBzdW1tYXJ5IGluZm8gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZlxuXAorcHltYWxsb2MncyBzdHJ1Y3R1cmVzLlxuXAorXG5cCitJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3lcblwKK2NoZWNrcy5cblwKKyIpOworCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogLyogRGVmaW5lZCBpbiBvYmplY3RzLmMgYmVjYXVzZSBpdCB1c2VzIHN0YXRpYyBnbG9iYWxzIGlmIHRoYXQgZmlsZSAqLwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlfR2V0T2JqZWN0cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKQEAgLTEwOTAsNiArMTExNCw4IEBACiAgICAgeyJzZXR0cmFjZSIsICAgICAgICBzeXNfc2V0dHJhY2UsIE1FVEhfTywgc2V0dHJhY2VfZG9jfSwKICAgICB7ImdldHRyYWNlIiwgICAgICAgIHN5c19nZXR0cmFjZSwgTUVUSF9OT0FSR1MsIGdldHRyYWNlX2RvY30sCiAgICAgeyJjYWxsX3RyYWNpbmciLCBzeXNfY2FsbF90cmFjaW5nLCBNRVRIX1ZBUkFSR1MsIGNhbGxfdHJhY2luZ19kb2N9LAorICAgIHsiX2RlYnVnbWFsbG9jc3RhdHMiLCBzeXNfZGVidWdtYWxsb2NzdGF0cywgTUVUSF9WQVJBUkdTLAorICAgICBkZWJ1Z21hbGxvY3N0YXRzX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTExNzcsNyArMTIwMyw2IEBACiAgICAgUHlPYmplY3QgKm9wdHM7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMLCAqdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IHdjaGFyX3QgKm5hbWVfZW5kOwotICAgIGludCByOwogCiAgICAgb3B0cyA9IGdldF94b3B0aW9ucygpOwogICAgIGlmIChvcHRzID09IE5VTEwpCkBAIC0xMTk1LDcgKzEyMjAsNyBAQAogICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMIHx8IHZhbHVlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgciA9IFB5RGljdF9TZXRJdGVtKG9wdHMsIG5hbWUsIHZhbHVlKTsKKyAgICBQeURpY3RfU2V0SXRlbShvcHRzLCBuYW1lLCB2YWx1ZSk7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgcmV0dXJuOwpAQCAtMTI1MiwyMSArMTI3NywyMiBAQAogIlxuXAogU3RhdGljIG9iamVjdHM6XG5cCiBcblwKLWZsb2F0X2luZm8gLS0gYSBkaWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb2F0IGltcGxlbWVudGF0aW9uLlxuXAorYnVpbHRpbl9tb2R1bGVfbmFtZXMgLS0gdHVwbGUgb2YgbW9kdWxlIG5hbWVzIGJ1aWx0IGludG8gdGhpcyBpbnRlcnByZXRlclxuXAorY29weXJpZ2h0IC0tIGNvcHlyaWdodCBub3RpY2UgcGVydGFpbmluZyB0byB0aGlzIGludGVycHJldGVyXG5cCitleGVjX3ByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBtYWNoaW5lLXNwZWNpZmljIFB5dGhvbiBsaWJyYXJ5XG5cCitleGVjdXRhYmxlIC0tIGFic29sdXRlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgYmluYXJ5IG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXJcblwKK2Zsb2F0X2luZm8gLS0gYSBzdHJ1Y3Qgc2VxdWVuY2Ugd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgaW1wbGVtZW50YXRpb24uXG5cCitmbG9hdF9yZXByX3N0eWxlIC0tIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBzdHlsZSBvZiByZXByKCkgb3V0cHV0IGZvciBmbG9hdHNcblwKK2hleHZlcnNpb24gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBlbmNvZGVkIGFzIGEgc2luZ2xlIGludGVnZXJcblwKK2ltcGxlbWVudGF0aW9uIC0tIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpbmZvcm1hdGlvbi5cblwKIGludF9pbmZvIC0tIGEgc3RydWN0IHNlcXVlbmNlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGludCBpbXBsZW1lbnRhdGlvbi5cblwKIG1heHNpemUgLS0gdGhlIGxhcmdlc3Qgc3VwcG9ydGVkIGxlbmd0aCBvZiBjb250YWluZXJzLlxuXAotbWF4dW5pY29kZSAtLSB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQgY2hhcmFjdGVyXG5cCi1idWlsdGluX21vZHVsZV9uYW1lcyAtLSB0dXBsZSBvZiBtb2R1bGUgbmFtZXMgYnVpbHQgaW50byB0aGlzIGludGVycHJldGVyXG5cCi1zdWJ2ZXJzaW9uIC0tIHN1YnZlcnNpb24gaW5mb3JtYXRpb24gb2YgdGhlIGJ1aWxkIGFzIHR1cGxlXG5cCittYXh1bmljb2RlIC0tIHRoZSB2YWx1ZSBvZiB0aGUgbGFyZ2VzdCBVbmljb2RlIGNvZGVwb2ludFxuXAorcGxhdGZvcm0gLS0gcGxhdGZvcm0gaWRlbnRpZmllclxuXAorcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIFB5dGhvbiBsaWJyYXJ5XG5cCit0aHJlYWRfaW5mbyAtLSBhIHN0cnVjdCBzZXF1ZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uXG5cCiB2ZXJzaW9uIC0tIHRoZSB2ZXJzaW9uIG9mIHRoaXMgaW50ZXJwcmV0ZXIgYXMgYSBzdHJpbmdcblwKIHZlcnNpb25faW5mbyAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFzIGEgbmFtZWQgdHVwbGVcblwKLWhleHZlcnNpb24gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBlbmNvZGVkIGFzIGEgc2luZ2xlIGludGVnZXJcblwKLWNvcHlyaWdodCAtLSBjb3B5cmlnaHQgbm90aWNlIHBlcnRhaW5pbmcgdG8gdGhpcyBpbnRlcnByZXRlclxuXAotcGxhdGZvcm0gLS0gcGxhdGZvcm0gaWRlbnRpZmllclxuXAotZXhlY3V0YWJsZSAtLSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGJpbmFyeSBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyXG5cCi1wcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgUHl0aG9uIGxpYnJhcnlcblwKLWV4ZWNfcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIG1hY2hpbmUtc3BlY2lmaWMgUHl0aG9uIGxpYnJhcnlcblwKLWZsb2F0X3JlcHJfc3R5bGUgLS0gc3RyaW5nIGluZGljYXRpbmcgdGhlIHN0eWxlIG9mIHJlcHIoKSBvdXRwdXQgZm9yIGZsb2F0c1xuXAogIgogKQogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTEzMDUsNDMgKzEzMzEsNiBAQAogKQogLyogZW5kIG9mIHN5c19kb2MgKi8gOwogCi0vKiBTdWJ2ZXJzaW9uIGJyYW5jaCBhbmQgcmV2aXNpb24gbWFuYWdlbWVudCAqLwotc3RhdGljIGludCBzdm5faW5pdGlhbGl6ZWQ7Ci1zdGF0aWMgY2hhciBwYXRjaGxldmVsX3JldmlzaW9uWzUwXTsgLyogSnVzdCB0aGUgbnVtYmVyICovCi1zdGF0aWMgY2hhciBicmFuY2hbNTBdOwotc3RhdGljIGNoYXIgc2hvcnRicmFuY2hbNTBdOwotc3RhdGljIGNvbnN0IGNoYXIgKnN2bl9yZXZpc2lvbjsKLQotc3RhdGljIHZvaWQKLXN2bnZlcnNpb25faW5pdCh2b2lkKQotewotICAgIGlmIChzdm5faW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN2bl9pbml0aWFsaXplZCA9IDE7Ci0gICAgKnBhdGNobGV2ZWxfcmV2aXNpb24gPSAnXDAnOwotICAgIHN0cmNweShicmFuY2gsICIiKTsKLSAgICBzdHJjcHkoc2hvcnRicmFuY2gsICJ1bmtub3duIik7Ci0gICAgc3ZuX3JldmlzaW9uID0gIiI7Ci19Ci0KLS8qIFJldHVybiBzdm52ZXJzaW9uIG91dHB1dCBpZiBhdmFpbGFibGUuCi0gICBFbHNlIHJldHVybiBSZXZpc2lvbiBvZiBwYXRjaGxldmVsLmggaWYgb24gYnJhbmNoLgotICAgRWxzZSByZXR1cm4gZW1wdHkgc3RyaW5nICovCi1jb25zdCBjaGFyKgotUHlfU3VidmVyc2lvblJldmlzaW9uKCkKLXsKLSAgICBzdm52ZXJzaW9uX2luaXQoKTsKLSAgICByZXR1cm4gc3ZuX3JldmlzaW9uOwotfQotCi1jb25zdCBjaGFyKgotUHlfU3VidmVyc2lvblNob3J0QnJhbmNoKCkKLXsKLSAgICBzdm52ZXJzaW9uX2luaXQoKTsKLSAgICByZXR1cm4gc2hvcnRicmFuY2g7Ci19Ci0KIAogUHlEb2NfU1RSVkFSKGZsYWdzX19kb2NfXywKICJzeXMuZmxhZ3NcblwKQEAgLTEzNTIsNyArMTM0MSw2IEBACiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIGZsYWdzX2ZpZWxkc1tdID0gewogICAgIHsiZGVidWciLCAgICAgICAgICAgICAgICAgICAiLWQifSwKLSAgICB7ImRpdmlzaW9uX3dhcm5pbmciLCAgICAgICAgIi1RIn0sCiAgICAgeyJpbnNwZWN0IiwgICAgICAgICAgICAgICAgICItaSJ9LAogICAgIHsiaW50ZXJhY3RpdmUiLCAgICAgICAgICAgICAiLWkifSwKICAgICB7Im9wdGltaXplIiwgICAgICAgICAgICAgICAgIi1PIG9yIC1PTyJ9LApAQCAtMTM3Nyw5ICsxMzY1LDkgQEAKICAgICBmbGFnc19fZG9jX18sICAgICAgIC8qIGRvYyAqLwogICAgIGZsYWdzX2ZpZWxkcywgICAgICAgLyogZmllbGRzICovCiAjaWZkZWYgUklTQ09TCi0gICAgMTQKLSNlbHNlCiAgICAgMTMKKyNlbHNlCisgICAgMTIKICNlbmRpZgogfTsKIApAQCAtMTM5Nyw3ICsxMzg1LDYgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHNlcSwgcG9zKyssIFB5TG9uZ19Gcm9tTG9uZyhmbGFnKSkKIAogICAgIFNldEZsYWcoUHlfRGVidWdGbGFnKTsKLSAgICBTZXRGbGFnKFB5X0RpdmlzaW9uV2FybmluZ0ZsYWcpOwogICAgIFNldEZsYWcoUHlfSW5zcGVjdEZsYWcpOwogICAgIFNldEZsYWcoUHlfSW50ZXJhY3RpdmVGbGFnKTsKICAgICBTZXRGbGFnKFB5X09wdGltaXplRmxhZyk7CkBAIC0xNDkxLDYgKzE0NzgsNzMgQEAKICAgICByZXR1cm4gdmVyc2lvbl9pbmZvOwogfQogCisvKiBzeXMuaW1wbGVtZW50YXRpb24gdmFsdWVzICovCisjZGVmaW5lIE5BTUUgImNweXRob24iCitjb25zdCBjaGFyICpfUHlTeXNfSW1wbE5hbWUgPSBOQU1FOworI2RlZmluZSBRVU9URShhcmcpICNhcmcKKyNkZWZpbmUgU1RSSUZZKG5hbWUpIFFVT1RFKG5hbWUpCisjZGVmaW5lIE1BSk9SIFNUUklGWShQWV9NQUpPUl9WRVJTSU9OKQorI2RlZmluZSBNSU5PUiBTVFJJRlkoUFlfTUlOT1JfVkVSU0lPTikKKyNkZWZpbmUgVEFHIE5BTUUgIi0iIE1BSk9SIE1JTk9SOworY29uc3QgY2hhciAqX1B5U3lzX0ltcGxDYWNoZVRhZyA9IFRBRzsKKyN1bmRlZiBOQU1FCisjdW5kZWYgUVVPVEUKKyN1bmRlZiBTVFJJRlkKKyN1bmRlZiBNQUpPUgorI3VuZGVmIE1JTk9SCisjdW5kZWYgVEFHCisKK3N0YXRpYyBQeU9iamVjdCAqCittYWtlX2ltcGxfaW5mbyhQeU9iamVjdCAqdmVyc2lvbl9pbmZvKQoreworICAgIGludCByZXM7CisgICAgUHlPYmplY3QgKmltcGxfaW5mbywgKnZhbHVlLCAqbnM7CisKKyAgICBpbXBsX2luZm8gPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGltcGxfaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHBvcHVsYXRlIHRoZSBkaWN0ICovCisKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVN5c19JbXBsTmFtZSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAibmFtZSIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlTeXNfSW1wbENhY2hlVGFnKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJjYWNoZV90YWciLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgInZlcnNpb24iLCB2ZXJzaW9uX2luZm8pOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUFlfVkVSU0lPTl9IRVgpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgImhleHZlcnNpb24iLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIGRpY3QgcmVhZHkgKi8KKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhpbXBsX2luZm8pOworICAgIFB5X0RFQ1JFRihpbXBsX2luZm8pOworICAgIHJldHVybiBuczsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoaW1wbF9pbmZvKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBzeXNtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICJzeXMiLApAQCAtMTUwNiw3ICsxNTYwLDcgQEAKIFB5T2JqZWN0ICoKIF9QeVN5c19Jbml0KHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm0sICp2LCAqc3lzZGljdDsKKyAgICBQeU9iamVjdCAqbSwgKnYsICpzeXNkaWN0LCAqdmVyc2lvbl9pbmZvOwogICAgIGNoYXIgKnM7CiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZzeXNtb2R1bGUpOwpAQCAtMTU0NywxMCArMTYwMSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0VmVyc2lvbigpKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiaGV4dmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKFBZX1ZFUlNJT05fSEVYKSk7Ci0gICAgc3ZudmVyc2lvbl9pbml0KCk7Ci0gICAgU0VUX1NZU19GUk9NX1NUUklORygic3VidmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoc3NzKSIsICJDUHl0aG9uIiwgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdm5fcmV2aXNpb24pKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJfbWVyY3VyaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIihzenopIiwgIkNQeXRob24iLCBfUHlfaGdpZGVudGlmaWVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oZ3ZlcnNpb24oKSkpOwpAQCAtMTU2OSw2ICsxNjE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldFByZWZpeCgpLCAtMSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWNfcHJlZml4IiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0RXhlY1ByZWZpeCgpLCAtMSkpOworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJhc2VfcHJlZml4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJlZml4KCksIC0xKSk7CisgICAgU0VUX1NZU19GUk9NX1NUUklORygiYmFzZV9leGVjX3ByZWZpeCIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldEV4ZWNQcmVmaXgoKSwgLTEpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJtYXhzaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01BWCkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImZsb2F0X2luZm8iLApAQCAtMTU4MSw3ICsxNjM1LDcgQEAKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJoYXNoX2luZm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2hhc2hfaW5mbygpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJtYXh1bmljb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfR2V0TWF4KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZygweDEwRkZGRikpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJ1aWx0aW5fbW9kdWxlX25hbWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfYnVpbHRpbl9tb2R1bGVfbmFtZXMoKSk7CiAgICAgewpAQCAtMTYyNiwxMSArMTY4MCwxNSBAQAogICAgIC8qIHZlcnNpb25faW5mbyAqLwogICAgIGlmIChWZXJzaW9uSW5mb1R5cGUudHBfbmFtZSA9PSAwKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZWZXJzaW9uSW5mb1R5cGUsICZ2ZXJzaW9uX2luZm9fZGVzYyk7Ci0gICAgU0VUX1NZU19GUk9NX1NUUklORygidmVyc2lvbl9pbmZvIiwgbWFrZV92ZXJzaW9uX2luZm8oKSk7CisgICAgdmVyc2lvbl9pbmZvID0gbWFrZV92ZXJzaW9uX2luZm8oKTsKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ2ZXJzaW9uX2luZm8iLCB2ZXJzaW9uX2luZm8pOwogICAgIC8qIHByZXZlbnQgdXNlciBmcm9tIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXMgKi8KICAgICBWZXJzaW9uSW5mb1R5cGUudHBfaW5pdCA9IE5VTEw7CiAgICAgVmVyc2lvbkluZm9UeXBlLnRwX25ldyA9IE5VTEw7CiAKKyAgICAvKiBpbXBsZW1lbnRhdGlvbiAqLworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImltcGxlbWVudGF0aW9uIiwgbWFrZV9pbXBsX2luZm8odmVyc2lvbl9pbmZvKSk7CisKICAgICAvKiBmbGFncyAqLwogICAgIGlmIChGbGFnc1R5cGUudHBfbmFtZSA9PSAwKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZGbGFnc1R5cGUsICZmbGFnc19kZXNjKTsKQEAgLTE2NTgsNiArMTcxNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoImxlZ2FjeSIpKTsKICNlbmRpZgogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ0aHJlYWRfaW5mbyIsIFB5VGhyZWFkX0dldEluZm8oKSk7CisjZW5kaWYKKwogI3VuZGVmIFNFVF9TWVNfRlJPTV9TVFJJTkcKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODEyLDcgKzE4NzQsNyBAQAogICAgICAgICB0aGUgYXJndW1lbnQgbXVzdCBiZSB0aGUgZnVsbCBwYXRoIGFueXdheS4gKi8KICAgICAgICAgd2NoYXJfdCAqcHRlbXA7CiAgICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWVXKGFyZ3YwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZ1bGxwYXRoKS9zaXplb2YoZnVsbHBhdGhbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGZ1bGxwYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0ZW1wKSkgewogICAgICAgICAgICAgYXJndjAgPSBmdWxscGF0aDsKQEAgLTE4ODEsMTEgKzE5NDMsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqd3JpdGVyID0gTlVMTCwgKmFyZ3MgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgZXJyOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIGlmIChmaWxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHdyaXRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZSwgIndyaXRlIik7CisgICAgd3JpdGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF93cml0ZSk7CiAgICAgaWYgKHdyaXRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkLmMgYi9QeXRob24vdGhyZWFkLmMKaW5kZXggZDIyNDA0Ni4uZTU1ZDM0MiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZC5jCisrKyBiL1B5dGhvbi90aHJlYWQuYwpAQCAtNyw3ICs3LDYgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCi0KICNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKIC8qIFRoaXMgbWVhbnMgcHRocmVhZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiBsaWJjIGhlYWRlcnMsIGhlbmNlIHRoZSBtYWNybwogICAgbm90IHByZXNlbnQgaW4gdW5pc3RkLmguIEJ1dCB0aGV5IHN0aWxsIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhbiBleHRlcm5hbApAQCAtMjcsMTggKzI2LDYgQEAKIAogI2lmbmRlZiBfUE9TSVhfVEhSRUFEUwogCi0jaWZkZWYgX19zZ2kKLSNkZWZpbmUgU0dJX1RIUkVBRFMKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9USFJFQURfSAotI2RlZmluZSBTT0xBUklTX1RIUkVBRFMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChzdW4pICYmICFkZWZpbmVkKFNPTEFSSVNfVEhSRUFEUykKLSNkZWZpbmUgU1VOX0xXUAotI2VuZGlmCi0KIC8qIENoZWNrIGlmIHdlJ3JlIHJ1bm5pbmcgb24gSFAtVVggYW5kIF9TQ19USFJFQURTIGlzIGRlZmluZWQuIElmIHNvLCB0aGVuCiAgICBlbm91Z2ggb2YgdGhlIFBvc2l4IHRocmVhZHMgcGFja2FnZSBpcyBpbXBsZW1lbnRlZCB0byBzdXBwb3J0IHB5dGhvbgogICAgdGhyZWFkcy4KQEAgLTk0LDQ3ICs4MSwyMSBAQAogICAgb3IgdGhlIHNpemUgc3BlY2lmaWVkIGJ5IHRoZSBUSFJFQURfU1RBQ0tfU0laRSBtYWNyby4gKi8KIHN0YXRpYyBzaXplX3QgX3B5dGhyZWFkX3N0YWNrc2l6ZSA9IDA7CiAKLSNpZmRlZiBTR0lfVEhSRUFEUwotI2Vycm9yIFNHSSBJcml4IHRocmVhZHMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfc2dpLmgiCi0jZW5kaWYKLQotI2lmZGVmIFNPTEFSSVNfVEhSRUFEUwotI2luY2x1ZGUgInRocmVhZF9zb2xhcmlzLmgiCi0jZW5kaWYKLQotI2lmZGVmIFNVTl9MV1AKLSNlcnJvciBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfbHdwLmgiCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfUFRICi0jZXJyb3IgR05VIHB0aCB0aHJlYWRzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX3B0aC5oIgotI3VuZGVmIF9QT1NJWF9USFJFQURTCi0jZW5kaWYKLQogI2lmZGVmIF9QT1NJWF9USFJFQURTCisjZGVmaW5lIFBZVEhSRUFEX05BTUUgInB0aHJlYWQiCiAjaW5jbHVkZSAidGhyZWFkX3B0aHJlYWQuaCIKICNlbmRpZgogCi0jaWZkZWYgQ19USFJFQURTCi0jZXJyb3IgTWFjaCBDIFRocmVhZHMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfY3RocmVhZC5oIgotI2VuZGlmCi0KICNpZmRlZiBOVF9USFJFQURTCisjZGVmaW5lIFBZVEhSRUFEX05BTUUgIm50IgogI2luY2x1ZGUgInRocmVhZF9udC5oIgogI2VuZGlmCiAKICNpZmRlZiBPUzJfVEhSRUFEUworI2RlZmluZSBQWVRIUkVBRF9OQU1FICJvczIiCiAjaW5jbHVkZSAidGhyZWFkX29zMi5oIgogI2VuZGlmCiAKLSNpZmRlZiBQTEFOOV9USFJFQURTCi0jaW5jbHVkZSAidGhyZWFkX3BsYW45LmgiCi0jZW5kaWYKLQogLyoKICNpZmRlZiBGT09CQVJfVEhSRUFEUwogI2luY2x1ZGUgInRocmVhZF9mb29iYXIuaCIKQEAgLTQwOSwzICszNzAsODQgQEAKIH0KIAogI2VuZGlmIC8qIFB5X0hBVkVfTkFUSVZFX1RMUyAqLworCitQeURvY19TVFJWQVIodGhyZWFkaW5mb19fZG9jX18sCisic3lzLnRocmVhZF9pbmZvXG5cCitcblwKK0Egc3RydWN0IHNlcXVlbmNlIGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdGhyZWFkaW5mb19maWVsZHNbXSA9IHsKKyAgICB7Im5hbWUiLCAgICAibmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uIn0sCisgICAgeyJsb2NrIiwgICAgIm5hbWUgb2YgdGhlIGxvY2sgaW1wbGVtZW50YXRpb24ifSwKKyAgICB7InZlcnNpb24iLCAibmFtZSBhbmQgdmVyc2lvbiBvZiB0aGUgdGhyZWFkIGxpYnJhcnkifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgdGhyZWFkaW5mb19kZXNjID0geworICAgICJzeXMudGhyZWFkX2luZm8iLCAgICAgICAgICAgLyogbmFtZSAqLworICAgIHRocmVhZGluZm9fX2RvY19fLCAgICAgICAgICAgLyogZG9jICovCisgICAgdGhyZWFkaW5mb19maWVsZHMsICAgICAgICAgICAvKiBmaWVsZHMgKi8KKyAgICAzCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRocmVhZEluZm9UeXBlOworCitQeU9iamVjdCoKK1B5VGhyZWFkX0dldEluZm8odm9pZCkKK3sKKyAgICBQeU9iamVjdCAqdGhyZWFkaW5mbywgKnZhbHVlOworICAgIGludCBwb3MgPSAwOworI2lmIChkZWZpbmVkKF9QT1NJWF9USFJFQURTKSAmJiBkZWZpbmVkKEhBVkVfQ09ORlNUUikgXAorICAgICAmJiBkZWZpbmVkKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OKSkKKyAgICBjaGFyIGJ1ZmZlclsyNTVdOworICAgIGludCBsZW47CisjZW5kaWYKKworICAgIGlmIChUaHJlYWRJbmZvVHlwZS50cF9uYW1lID09IDApCisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlRocmVhZEluZm9UeXBlLCAmdGhyZWFkaW5mb19kZXNjKTsKKworICAgIHRocmVhZGluZm8gPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmVGhyZWFkSW5mb1R5cGUpOworICAgIGlmICh0aHJlYWRpbmZvID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQWVRIUkVBRF9OQU1FKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodGhyZWFkaW5mbyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRocmVhZGluZm8sIHBvcysrLCB2YWx1ZSk7CisKKyNpZmRlZiBfUE9TSVhfVEhSRUFEUworI2lmZGVmIFVTRV9TRU1BUEhPUkVTCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygic2VtYXBob3JlIik7CisjZWxzZQorICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIm11dGV4K2NvbmQiKTsKKyNlbmRpZgorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih0aHJlYWRpbmZvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2Vsc2UKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgdmFsdWUgPSBQeV9Ob25lOworI2VuZGlmCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworCisjaWYgKGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIGRlZmluZWQoSEFWRV9DT05GU1RSKSBcCisgICAgICYmIGRlZmluZWQoX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04pKQorICAgIHZhbHVlID0gTlVMTDsKKyAgICBsZW4gPSBjb25mc3RyKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBpZiAoMSA8IGxlbiAmJiBsZW4gPCBzaXplb2YoYnVmZmVyKSkgeworICAgICAgICB2YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGJ1ZmZlciwgbGVuLTEpOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorI2VuZGlmCisgICAgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHZhbHVlID0gUHlfTm9uZTsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworICAgIHJldHVybiB0aHJlYWRpbmZvOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9jdGhyZWFkLmggYi9QeXRob24vdGhyZWFkX2N0aHJlYWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzZTM5MC4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX2N0aHJlYWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0KLSNpZmRlZiBNQUNIX0NfVEhSRUFEUwotI2luY2x1ZGUgPG1hY2gvY3RocmVhZHMuaD4KLSNlbmRpZgotCi0jaWZkZWYgSFVSRF9DX1RIUkVBRFMKLSNpbmNsdWRlIDxjdGhyZWFkcy5oPgotI2VuZGlmCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQKLVB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotI2lmbmRlZiBIVVJEX0NfVEhSRUFEUwotICAgIC8qIFJvbGFuZCBNY0dyYXRoIHNhaWQgdGhpcyBzaG91bGQgbm90IGJlIHVzZWQgc2luY2UgdGhpcyBpcwotICAgIGRvbmUgd2hpbGUgbGlua2luZyB0byB0aHJlYWRzICovCi0gICAgY3RocmVhZF9pbml0KCk7Ci0jZWxzZQotLyogZG8gbm90aGluZyAqLwotICAgIDsKLSNlbmRpZgotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLWxvbmcKLVB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICBpbnQgc3VjY2VzcyA9IDA7ICAgICAgICAgICAgLyogaW5pdCBub3QgbmVlZGVkIHdoZW4gU09MQVJJU19USFJFQURTIGFuZCAqLwotICAgICAgICAgICAgICAgIC8qIENfVEhSRUFEUyBpbXBsZW1lbnRlZCBwcm9wZXJseSAqLwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICAvKiBsb29rcyBsaWtlIHNvbGFyaXMgZGV0YWNoZXMgdGhlIHRocmVhZCB0byBuZXZlciByZWpvaW4KLSAgICAgKiBzbyB3ZWxsIGRvIGl0IGhlcmUKLSAgICAgKi8KLSAgICBjdGhyZWFkX2RldGFjaChjdGhyZWFkX2ZvcmsoKGN0aHJlYWRfZm5fdCkgZnVuYywgYXJnKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3MgPCAwID8gLTEgOiAwOwotfQotCi1sb25nCi1QeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICByZXR1cm4gKGxvbmcpIGN0aHJlYWRfc2VsZigpOwotfQotCi12b2lkCi1QeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGN0aHJlYWRfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrCi1QeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgbXV0ZXhfdCBsb2NrOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGxvY2sgPSBtdXRleF9hbGxvYygpOwotICAgIGlmIChtdXRleF9pbml0KGxvY2spKSB7Ci0gICAgICAgIHBlcnJvcigibXV0ZXhfaW5pdCIpOwotICAgICAgICBmcmVlKCh2b2lkICopIGxvY2spOwotICAgICAgICBsb2NrID0gMDsKLSAgICB9Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgbG9jaykpOwotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBsb2NrOwotfQotCi12b2lkCi1QeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbXV0ZXhfZnJlZShsb2NrKTsKLX0KLQotaW50Ci1QeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzcyA9IEZBTFNFOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBpZiAod2FpdGZsYWcpIHsgICAgICAgICAgICAgLyogYmxvY2tpbmcgKi8KLSAgICAgICAgbXV0ZXhfbG9jaygobXV0ZXhfdClsb2NrKTsKLSAgICAgICAgc3VjY2VzcyA9IFRSVUU7Ci0gICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8qIG5vbiBibG9ja2luZyAqLwotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfdHJ5X2xvY2soKG11dGV4X3QpbG9jayk7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZAotUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X3VubG9jaygobXV0ZXhfdCApbG9jayk7Ci19CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX2x3cC5oIGIvUHl0aG9uL3RocmVhZF9sd3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3YjM3YS4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX2x3cC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGx3cC9sd3AuaD4KLSNpbmNsdWRlIDxsd3Avc3RhY2tkZXAuaD4KLQotI2RlZmluZSBTVEFDS1NJWkUgICAgICAgMTAwMCAgICAvKiBzdGFja3NpemUgZm9yIGEgdGhyZWFkICovCi0jZGVmaW5lIE5TVEFDS1MgICAgICAgICAyICAgICAgIC8qICMgc3RhY2tzIHRvIGJlIHB1dCBpbiBjYWNoZSBpbml0aWFsbHkgKi8KLQotc3RydWN0IGxvY2sgewotICAgIGludCBsb2NrX2xvY2tlZDsKLSAgICBjdl90IGxvY2tfY29uZHZhcjsKLSAgICBtb25fdCBsb2NrX21vbml0b3I7Ci19OwotCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgbHdwX3NldHN0a2NhY2hlKFNUQUNLU0laRSwgTlNUQUNLUyk7Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotCi0KLWxvbmcgUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBpbnQgc3VjY2VzczsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIHN1Y2Nlc3MgPSBsd3BfY3JlYXRlKCZ0aWQsIGZ1bmMsIE1JTlBSSU8sIDAsIGx3cF9uZXdzdGsoKSwgMSwgYXJnKTsKLSAgICByZXR1cm4gc3VjY2VzcyA8IDAgPyAtMSA6IDA7Ci19Ci0KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIGlmIChsd3Bfc2VsZigmdGlkKSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gdGlkLnRocmVhZF9pZDsKLX0KLQotdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGx3cF9kZXN0cm95KFNFTEYpOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sgUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIHN0cnVjdCBsb2NrICpsb2NrOwotICAgIGV4dGVybiBjaGFyICptYWxsb2Moc2l6ZV90KTsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gKHN0cnVjdCBsb2NrICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGxvY2spKTsKLSAgICBsb2NrLT5sb2NrX2xvY2tlZCA9IDA7Ci0gICAgKHZvaWQpIG1vbl9jcmVhdGUoJmxvY2stPmxvY2tfbW9uaXRvcik7Ci0gICAgKHZvaWQpIGN2X2NyZWF0ZSgmbG9jay0+bG9ja19jb25kdmFyLCBsb2NrLT5sb2NrX21vbml0b3IpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZCBQeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbW9uX2Rlc3Ryb3koKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBmcmVlKChjaGFyICopIGxvY2spOwotfQotCi1pbnQgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3M7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIHN1Y2Nlc3MgPSAwOwotCi0gICAgKHZvaWQpIG1vbl9lbnRlcigoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX21vbml0b3IpOwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgd2hpbGUgKCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkKQotICAgICAgICAgICAgY3Zfd2FpdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2NvbmR2YXIpOwotICAgIGlmICghKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19sb2NrZWQpIHsKLSAgICAgICAgc3VjY2VzcyA9IDE7Ci0gICAgICAgICgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkID0gMTsKLSAgICB9Ci0gICAgY3ZfYnJvYWRjYXN0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfY29uZHZhcik7Ci0gICAgbW9uX2V4aXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgICh2b2lkKSBtb25fZW50ZXIoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICAoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCA9IDA7Ci0gICAgY3ZfYnJvYWRjYXN0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfY29uZHZhcik7Ci0gICAgbW9uX2V4aXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfbnQuaCBiL1B5dGhvbi90aHJlYWRfbnQuaAppbmRleCBkMWJiMGU1Li45MzhiZjFlIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX250LmgKKysrIGIvUHl0aG9uL3RocmVhZF9udC5oCkBAIC05LDYgKzksMTA5IEBACiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2VuZGlmCiAKKy8qIG9wdGlvbnMgKi8KKyNpZm5kZWYgX1BZX1VTRV9DVl9MT0NLUworI2RlZmluZSBfUFlfVVNFX0NWX0xPQ0tTIDEgICAgIC8qIHVzZSBsb2NrcyBiYXNlZCBvbiBjb25kIHZhcnMgKi8KKyNlbmRpZgorCisvKiBOb3csIGRlZmluZSBhIG5vbi1yZWN1cnNpdmUgbXV0ZXggdXNpbmcgZWl0aGVyIGNvbmRpdGlvbiB2YXJpYWJsZXMKKyAqIGFuZCBjcml0aWNhbCBzZWN0aW9ucyAoZmFzdCkgb3IgdXNpbmcgb3BlcmF0aW5nIHN5c3RlbSBtdXRleGVzCisgKiAoc2xvdykKKyAqLworCisjaWYgX1BZX1VTRV9DVl9MT0NLUworCisjaW5jbHVkZSAiY29uZHZhci5oIgorCit0eXBlZGVmIHN0cnVjdCBfTlJNVVRFWAoreworICAgIFB5TVVURVhfVCBjczsKKyAgICBQeUNPTkRfVCBjdjsKKyAgICBpbnQgbG9ja2VkOworfSBOUk1VVEVYOwordHlwZWRlZiBOUk1VVEVYICpQTlJNVVRFWDsKKworUE5STVVURVgKK0FsbG9jTm9uUmVjdXJzaXZlTXV0ZXgoKQoreworICAgIFBOUk1VVEVYIG0gPSAoUE5STVVURVgpbWFsbG9jKHNpemVvZihOUk1VVEVYKSk7CisgICAgaWYgKCFtKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlDT05EX0lOSVQoJm0tPmN2KSkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1VVEVYX0lOSVQoJm0tPmNzKSkgeworICAgICAgICBQeUNPTkRfRklOSSgmbS0+Y3YpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIG0tPmxvY2tlZCA9IDA7CisgICAgcmV0dXJuIG07CitmYWlsOgorICAgIGZyZWUobSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1ZPSUQKK0ZyZWVOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCkKK3sKKyAgICBpZiAobXV0ZXgpIHsKKyAgICAgICAgUHlDT05EX0ZJTkkoJm11dGV4LT5jdik7CisgICAgICAgIFB5TVVURVhfRklOSSgmbXV0ZXgtPmNzKTsKKyAgICAgICAgZnJlZShtdXRleCk7CisgICAgfQorfQorCitEV09SRAorRW50ZXJOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCwgRFdPUkQgbWlsbGlzZWNvbmRzKQoreworICAgIERXT1JEIHJlc3VsdCA9IFdBSVRfT0JKRUNUXzA7CisgICAgaWYgKFB5TVVURVhfTE9DSygmbXV0ZXgtPmNzKSkKKyAgICAgICAgcmV0dXJuIFdBSVRfRkFJTEVEOworICAgIGlmIChtaWxsaXNlY29uZHMgPT0gSU5GSU5JVEUpIHsKKyAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHMgIT0gMCkgeworICAgICAgICAvKiB3YWl0IGF0IGxlYXN0IHVudGlsIHRoZSB0YXJnZXQgKi8KKyAgICAgICAgRFdPUkQgbm93LCB0YXJnZXQgPSBHZXRUaWNrQ291bnQoKSArIG1pbGxpc2Vjb25kczsKKyAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIG1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBXQUlUX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vdyA9IEdldFRpY2tDb3VudCgpOworICAgICAgICAgICAgaWYgKHRhcmdldCA8PSBub3cpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtaWxsaXNlY29uZHMgPSB0YXJnZXQtbm93OworICAgICAgICB9CisgICAgfQorICAgIGlmICghbXV0ZXgtPmxvY2tlZCkgeworICAgICAgICBtdXRleC0+bG9ja2VkID0gMTsKKyAgICAgICAgcmVzdWx0ID0gV0FJVF9PQkpFQ1RfMDsKKyAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBXQUlUX09CSkVDVF8wKQorICAgICAgICByZXN1bHQgPSBXQUlUX1RJTUVPVVQ7CisgICAgLyogZWxzZSwgaXQgaXMgV0FJVF9GQUlMRUQgKi8KKyAgICBQeU1VVEVYX1VOTE9DSygmbXV0ZXgtPmNzKTsgLyogbXVzdCBpZ25vcmUgcmVzdWx0IGhlcmUgKi8KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitCT09MCitMZWF2ZU5vblJlY3Vyc2l2ZU11dGV4KFBOUk1VVEVYIG11dGV4KQoreworICAgIEJPT0wgcmVzdWx0OworICAgIGlmIChQeU1VVEVYX0xPQ0soJm11dGV4LT5jcykpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBtdXRleC0+bG9ja2VkID0gMDsKKyAgICByZXN1bHQgPSBQeUNPTkRfU0lHTkFMKCZtdXRleC0+Y3YpOworICAgIHJlc3VsdCAmPSBQeU1VVEVYX1VOTE9DSygmbXV0ZXgtPmNzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfSAgICAKKworI2Vsc2UgLyogaWYgISBfUFlfVVNFX0NWX0xPQ0tTICovCisKKy8qIE5SLWxvY2tzIGJhc2VkIG9uIGEga2VybmVsIG11dGV4ICovCiAjZGVmaW5lIFBOUk1VVEVYIEhBTkRMRQogCiBQTlJNVVRFWApAQCAtMzUsNiArMTM4LDcgQEAKIHsKICAgICByZXR1cm4gUmVsZWFzZVNlbWFwaG9yZShtdXRleCwgMSwgTlVMTCk7CiB9CisjZW5kaWYgLyogX1BZX1VTRV9DVl9MT0NLUyAqLwogCiBsb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRoLmggYi9QeXRob24vdGhyZWFkX3B0aC5oCmluZGV4IDgyYTAwZTcuLjU3MDQyNjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfcHRoLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGguaApAQCAtNjksOSArNjksOCBAQAogICAgIHZvbGF0aWxlIHB0aF90IHRocmVhZGlkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgLyogSnVtcCB0aHJvdWdoIHNvbWUgaG9vcHMgZm9yIEFscGhhIE9TRi8xICovCiAgICAgdGhyZWFkaWQgPSBwdGhfc2VsZigpOwotICAgIHJldHVybiAobG9uZykgKihsb25nICopICZ0aHJlYWRpZDsKKyAgICByZXR1cm4gKGxvbmcpIHRocmVhZGlkOwogfQogCiB2b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3B0aHJlYWQuaCBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCmluZGV4IDNjZGUwMzUuLjUwMDdhYWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCisrKyBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAqIEluaXRpYWxpemF0aW9uLgogICovCiAKLSNpZmRlZiBfSEFWRV9CU0RJCisjaWYgZGVmaW5lZChfSEFWRV9CU0RJKQogc3RhdGljCiB2b2lkIF9ub29wKHZvaWQpCiB7CkBAIC0yNDQsOCArMjQ0LDcgQEAKICAgIGhvc2VkIiBiZWNhdXNlOgogICAgICAtIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGUgcHJvbWlzZSB0aGF0IGEgbm9uLXplcm8gaW50ZWdlciBpcyByZXR1cm5lZC4KICAgICAgLSBUaGUgY2FzdCB0byBsb25nIGlzIGluaGVyZW50bHkgdW5zYWZlLgotICAgICAtIEl0IGlzIG5vdCBjbGVhciB0aGF0IHRoZSAndm9sYXRpbGUnIChmb3IgQUlYPykgYW5kIHVnbHkgY2FzdGluZyBpbiB0aGUKLSAgICAgICBsYXR0ZXIgcmV0dXJuIHN0YXRlbWVudCAoZm9yIEFscGhhIE9TRi8xKSBhcmUgYW55IGxvbmdlciBuZWNlc3NhcnkuCisgICAgIC0gSXQgaXMgbm90IGNsZWFyIHRoYXQgdGhlICd2b2xhdGlsZScgKGZvciBBSVg/KSBhcmUgYW55IGxvbmdlciBuZWNlc3NhcnkuCiAqLwogbG9uZwogUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQpAQCAtMjUzLDEzICsyNTIsOCBAQAogICAgIHZvbGF0aWxlIHB0aHJlYWRfdCB0aHJlYWRpZDsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIC8qIEp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIGZvciBBbHBoYSBPU0YvMSAqLwogICAgIHRocmVhZGlkID0gcHRocmVhZF9zZWxmKCk7Ci0jaWYgU0laRU9GX1BUSFJFQURfVCA8PSBTSVpFT0ZfTE9ORwogICAgIHJldHVybiAobG9uZykgdGhyZWFkaWQ7Ci0jZWxzZQotICAgIHJldHVybiAobG9uZykgKihsb25nICopICZ0aHJlYWRpZDsKLSNlbmRpZgogfQogCiB2b2lkCkBAIC00NDksMTIgKzQ0MywxNSBAQAogCiAgICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7CiAKLSAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZ0aGVsb2NrLT5tdXQgKTsKLSAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOwotCisgICAgLyogc29tZSBwdGhyZWFkLWxpa2UgaW1wbGVtZW50YXRpb25zIHRpZSB0aGUgbXV0ZXggdG8gdGhlIGNvbmQKKyAgICAgKiBhbmQgbXVzdCBoYXZlIHRoZSBjb25kIGRlc3Ryb3llZCBmaXJzdC4KKyAgICAgKi8KICAgICBzdGF0dXMgPSBwdGhyZWFkX2NvbmRfZGVzdHJveSggJnRoZWxvY2stPmxvY2tfcmVsZWFzZWQgKTsKICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfY29uZF9kZXN0cm95Iik7CiAKKyAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZ0aGVsb2NrLT5tdXQgKTsKKyAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOworCiAgICAgZnJlZSgodm9pZCAqKXRoZWxvY2spOwogfQogCkBAIC01MzcsMTIgKzUzNCwxMiBAQAogCiAgICAgdGhlbG9jay0+bG9ja2VkID0gMDsKIAotICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmdGhlbG9jay0+bXV0ICk7Ci0gICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X3VubG9ja1szXSIpOwotCiAgICAgLyogd2FrZSB1cCBzb21lb25lIChhbnlvbmUsIGlmIGFueSkgd2FpdGluZyBvbiB0aGUgbG9jayAqLwogICAgIHN0YXR1cyA9IHB0aHJlYWRfY29uZF9zaWduYWwoICZ0aGVsb2NrLT5sb2NrX3JlbGVhc2VkICk7CiAgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX2NvbmRfc2lnbmFsIik7CisKKyAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJnRoZWxvY2stPm11dCApOworICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF91bmxvY2tbM10iKTsKIH0KIAogI2VuZGlmIC8qIFVTRV9TRU1BUEhPUkVTICovCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3NnaS5oIGIvUHl0aG9uL3RocmVhZF9zZ2kuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxYWIyYy4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3NnaS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjU5ICswLDAgQEAKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KLSNpbmNsdWRlIDx1bG9ja3MuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotCi0jZGVmaW5lIEhEUl9TSVpFICAgICAgICAyNjgwICAgIC8qIHNpemVvZih1c2hkcl90KSAqLwotI2RlZmluZSBNQVhQUk9DICAgICAgICAgMTAwICAgICAvKiBtYXggIyBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHN0YXJ0ZWQgKi8KLQotc3RhdGljIHVzcHRyX3QgKnNoYXJlZF9hcmVuYTsKLXN0YXRpYyB1bG9ja190IGNvdW50X2xvY2s7ICAgICAgLyogcHJvdGVjdGlvbiBmb3Igc29tZSB2YXJpYWJsZXMgKi8KLXN0YXRpYyB1bG9ja190IHdhaXRfbG9jazsgICAgICAgLyogbG9jayB1c2VkIHRvIHdhaXQgZm9yIG90aGVyIHRocmVhZHMgKi8KLXN0YXRpYyBpbnQgd2FpdGluZ19mb3JfdGhyZWFkczsgLyogcHJvdGVjdGVkIGJ5IGNvdW50X2xvY2sgKi8KLXN0YXRpYyBpbnQgbnRocmVhZHM7ICAgICAgICAgICAgLyogcHJvdGVjdGVkIGJ5IGNvdW50X2xvY2sgKi8KLXN0YXRpYyBpbnQgZXhpdF9zdGF0dXM7Ci1zdGF0aWMgaW50IGV4aXRpbmc7ICAgICAgICAgICAgIC8qIHdlJ3JlIGFscmVhZHkgZXhpdGluZyAoZm9yIG1heWJlX2V4aXQpICovCi1zdGF0aWMgcGlkX3QgbXlfcGlkOyAgICAgICAgICAgIC8qIFBJRCBvZiBtYWluIHRocmVhZCAqLwotc3RhdGljIHN0cnVjdCBwaWRsaXN0IHsKLSAgICBwaWRfdCBwYXJlbnQ7Ci0gICAgcGlkX3QgY2hpbGQ7Ci19IHBpZGxpc3RbTUFYUFJPQ107ICAgICAvKiBQSURzIG9mIG90aGVyIHRocmVhZHM7IHByb3RlY3RlZCBieSBjb3VudF9sb2NrICovCi1zdGF0aWMgaW50IG1heHBpZGluZGV4OyAgICAgICAgIC8qICMgb2YgUElEcyBpbiBwaWRsaXN0ICovCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkIFB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotI2lmZGVmIFVTRV9ETAotICAgIGxvbmcgYWRkciwgc2l6ZTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLQotCi0jaWZkZWYgVVNFX0RMCi0gICAgaWYgKChzaXplID0gdXNjb25maWcoQ09ORl9JTklUU0laRSwgNjQqMTAyNCkpIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKGNoZWNrKSIpOwotICAgIGlmICh1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCBzaXplKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChyZXNldCkiKTsKLSAgICBhZGRyID0gKGxvbmcpIGRsX2dldHJhbmdlKHNpemUgKyBIRFJfU0laRSk7Ci0gICAgZHByaW50ZigoInRyeWluZyB0byB1c2UgYWRkciAlcC0lcCBmb3Igc2hhcmVkIGFyZW5hXG4iLCBhZGRyLCBhZGRyK3NpemUpKTsKLSAgICBlcnJubyA9IDA7Ci0gICAgaWYgKChhZGRyID0gdXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSkgPCAwICYmIGVycm5vICE9IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHNldCkiKTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICBpZiAodXNjb25maWcoQ09ORl9JTklUVVNFUlMsIDE2KSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRVU0VSUyIpOwotICAgIG15X3BpZCA9IGdldHBpZCgpOyAgICAgICAgICAvKiBzbyB0aGF0IHdlIGtub3cgd2hpY2ggaXMgdGhlIG1haW4gdGhyZWFkICovCi0gICAgaWYgKHVzY29uZmlnKENPTkZfQVJFTkFUWVBFLCBVU19TSEFSRURPTkxZKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FSRU5BVFlQRSIpOwotICAgIHVzY29uZmlnKENPTkZfTE9DS1RZUEUsIFVTX0RFQlVHKTsgLyogWFhYICovCi0jaWZkZWYgUHlfREVCVUcKLSAgICBpZiAodGhyZWFkX2RlYnVnICYgNCkKLSAgICAgICAgdXNjb25maWcoQ09ORl9MT0NLVFlQRSwgVVNfREVCVUdQTFVTKTsKLSAgICBlbHNlIGlmICh0aHJlYWRfZGVidWcgJiAyKQotICAgICAgICB1c2NvbmZpZyhDT05GX0xPQ0tUWVBFLCBVU19ERUJVRyk7Ci0jZW5kaWYgLyogUHlfREVCVUcgKi8KLSAgICBpZiAoKHNoYXJlZF9hcmVuYSA9IHVzaW5pdCh0bXBuYW0oMCkpKSA9PSAwKQotICAgICAgICBwZXJyb3IoInVzaW5pdCIpOwotI2lmZGVmIFVTRV9ETAotICAgIGlmICh1c2NvbmZpZyhDT05GX0FUVEFDSEFERFIsIGFkZHIpIDwgMCkgLyogcmVzZXQgYWRkcmVzcyAqLwotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChyZXNldCkiKTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICBpZiAoKGNvdW50X2xvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgKHZvaWQpIHVzaW5pdGxvY2soY291bnRfbG9jayk7Ci0gICAgaWYgKCh3YWl0X2xvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2sgKHdhaXRfbG9jaykiKTsKLSAgICBkcHJpbnRmKCgiYXJlbmEgc3RhcnQ6ICVwLCBhcmVuYSBzaXplOiAlbGRcbiIsICBzaGFyZWRfYXJlbmEsIChsb25nKSB1c2NvbmZpZyhDT05GX0dFVFNJWkUsIHNoYXJlZF9hcmVuYSkpKTsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi0KLXN0YXRpYyB2b2lkIGNsZWFuX3RocmVhZHModm9pZCkKLXsKLSAgICBpbnQgaSwgajsKLSAgICBwaWRfdCBteXBpZCwgcGlkOwotCi0gICAgLyogY2xlYW4gdXAgYW55IGV4aXRlZCB0aHJlYWRzICovCi0gICAgbXlwaWQgPSBnZXRwaWQoKTsKLSAgICBpID0gMDsKLSAgICB3aGlsZSAoaSA8IG1heHBpZGluZGV4KSB7Ci0gICAgICAgIGlmIChwaWRsaXN0W2ldLnBhcmVudCA9PSBteXBpZCAmJiAocGlkID0gcGlkbGlzdFtpXS5jaGlsZCkgPiAwKSB7Ci0gICAgICAgICAgICBwaWQgPSB3YWl0cGlkKHBpZCwgMCwgV05PSEFORyk7Ci0gICAgICAgICAgICBpZiAocGlkID4gMCkgewotICAgICAgICAgICAgICAgIC8qIGEgdGhyZWFkIGhhcyBleGl0ZWQgKi8KLSAgICAgICAgICAgICAgICBwaWRsaXN0W2ldID0gcGlkbGlzdFstLW1heHBpZGluZGV4XTsKLSAgICAgICAgICAgICAgICAvKiByZW1vdmUgcmVmZXJlbmNlcyB0byBjaGlsZHJlbiBvZiBkZWFkIHByb2MgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbWF4cGlkaW5kZXg7IGorKykKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBpZGxpc3Rbal0ucGFyZW50ID09IHBpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpZGxpc3Rbal0uY2hpbGQgPSAtMTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogZG9uJ3QgaW5jcmVtZW50IGkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgfQotICAgIC8qIGNsZWFuIHVwIHRoZSBsaXN0ICovCi0gICAgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBtYXhwaWRpbmRleCkgewotICAgICAgICBpZiAocGlkbGlzdFtpXS5jaGlsZCA9PSAtMSkgewotICAgICAgICAgICAgcGlkbGlzdFtpXSA9IHBpZGxpc3RbLS1tYXhwaWRpbmRleF07Ci0gICAgICAgICAgICBjb250aW51ZTsgLyogZG9uJ3QgaW5jcmVtZW50IGkgKi8KLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgfQotfQotCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSNpZmRlZiBVU0VfREwKLSAgICBsb25nIGFkZHIsIHNpemU7Ci0gICAgc3RhdGljIGludCBsb2NhbF9pbml0aWFsaXplZCA9IDA7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgaW50IHN1Y2Nlc3MgPSAwOyAgICAgICAgICAgIC8qIGluaXQgbm90IG5lZWRlZCB3aGVuIFNPTEFSSVNfVEhSRUFEUyBhbmQgKi8KLSAgICAgICAgICAgICAgICAvKiBDX1RIUkVBRFMgaW1wbGVtZW50ZWQgcHJvcGVybHkgKi8KLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgc3dpdGNoICh1c3NldGxvY2soY291bnRfbG9jaykpIHsKLSAgICBjYXNlIDA6IHJldHVybiAwOwotICAgIGNhc2UgLTE6IHBlcnJvcigidXNzZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIH0KLSAgICBpZiAobWF4cGlkaW5kZXggPj0gTUFYUFJPQykKLSAgICAgICAgc3VjY2VzcyA9IC0xOwotICAgIGVsc2UgewotI2lmZGVmIFVTRV9ETAotICAgICAgICBpZiAoIWxvY2FsX2luaXRpYWxpemVkKSB7Ci0gICAgICAgICAgICBpZiAoKHNpemUgPSB1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCA2NCoxMDI0KSkgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChjaGVjaykiKTsKLSAgICAgICAgICAgIGlmICh1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCBzaXplKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKHJlc2V0KSIpOwotICAgICAgICAgICAgYWRkciA9IChsb25nKSBkbF9nZXRyYW5nZShzaXplICsgSERSX1NJWkUpOwotICAgICAgICAgICAgZHByaW50ZigoInRyeWluZyB0byB1c2UgYWRkciAlcC0lcCBmb3Igc3Byb2NcbiIsCi0gICAgICAgICAgICAgICAgICAgICBhZGRyLCBhZGRyK3NpemUpKTsKLSAgICAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgICAgIGlmICgoYWRkciA9IHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikpIDwgMCAmJgotICAgICAgICAgICAgICAgIGVycm5vICE9IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVRUQUNIQUREUiAoc2V0KSIpOwotICAgICAgICB9Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgICAgIGNsZWFuX3RocmVhZHMoKTsKLSAgICAgICAgaWYgKChzdWNjZXNzID0gc3Byb2MoZnVuYywgUFJfU0FMTCwgYXJnKSkgPCAwKQotICAgICAgICAgICAgcGVycm9yKCJzcHJvYyIpOwotI2lmZGVmIFVTRV9ETAotICAgICAgICBpZiAoIWxvY2FsX2luaXRpYWxpemVkKSB7Ci0gICAgICAgICAgICBpZiAodXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSA8IDApCi0gICAgICAgICAgICAgICAgLyogcmVzZXQgYWRkcmVzcyAqLwotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHJlc2V0KSIpOwotICAgICAgICAgICAgbG9jYWxfaW5pdGlhbGl6ZWQgPSAxOwotICAgICAgICB9Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgICAgIGlmIChzdWNjZXNzID49IDApIHsKLSAgICAgICAgICAgIG50aHJlYWRzKys7Ci0gICAgICAgICAgICBwaWRsaXN0W21heHBpZGluZGV4XS5wYXJlbnQgPSBnZXRwaWQoKTsKLSAgICAgICAgICAgIHBpZGxpc3RbbWF4cGlkaW5kZXgrK10uY2hpbGQgPSBzdWNjZXNzOwotICAgICAgICAgICAgZHByaW50ZigoInBpZGxpc3RbJWRdID0gJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICBtYXhwaWRpbmRleC0xLCBzdWNjZXNzKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHVzdW5zZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgcmV0dXJuIGdldHBpZCgpOwotfQotCi12b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgaWYgKHVzc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNzZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIG50aHJlYWRzLS07Ci0gICAgaWYgKGdldHBpZCgpID09IG15X3BpZCkgewotICAgICAgICAvKiBtYWluIHRocmVhZDsgd2FpdCBmb3Igb3RoZXIgdGhyZWFkcyB0byBleGl0ICovCi0gICAgICAgIGV4aXRpbmcgPSAxOwotICAgICAgICB3YWl0aW5nX2Zvcl90aHJlYWRzID0gMTsKLSAgICAgICAgaWYgKHVzc2V0bG9jayh3YWl0X2xvY2spIDwgMCkKLSAgICAgICAgICAgIHBlcnJvcigidXNzZXRsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIGlmIChudGhyZWFkcyA8IDApIHsKLSAgICAgICAgICAgICAgICBkcHJpbnRmKCgicmVhbGx5IGV4aXQgKCVkKVxuIiwgZXhpdF9zdGF0dXMpKTsKLSAgICAgICAgICAgICAgICBleGl0KGV4aXRfc3RhdHVzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh1c3Vuc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICAgICAgICAgIGRwcmludGYoKCJ3YWl0aW5nIGZvciBvdGhlciB0aHJlYWRzICglZClcbiIsIG50aHJlYWRzKSk7Ci0gICAgICAgICAgICBpZiAodXNzZXRsb2NrKHdhaXRfbG9jaykgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNzZXRsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgICAgICAgICBpZiAodXNzZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBub3QgdGhlIG1haW4gdGhyZWFkICovCi0gICAgaWYgKHdhaXRpbmdfZm9yX3RocmVhZHMpIHsKLSAgICAgICAgZHByaW50ZigoIm1haW4gdGhyZWFkIGlzIHdhaXRpbmdcbiIpKTsKLSAgICAgICAgaWYgKHVzdW5zZXRsb2NrKHdhaXRfbG9jaykgPCAwKQotICAgICAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAod2FpdF9sb2NrKSIpOwotICAgIH0KLSAgICBpZiAodXN1bnNldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICBwZXJyb3IoInVzdW5zZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIF9leGl0KDApOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sgUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIHVsb2NrX3QgbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBpZiAoKGxvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2siKTsKLSAgICAodm9pZCkgdXNpbml0bG9jayhsb2NrKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIHVzZnJlZWxvY2soKHVsb2NrX3QpIGxvY2ssIHNoYXJlZF9hcmVuYSk7Ci19Ci0KLWludCBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzczsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgZXJybm8gPSAwOyAgICAgICAgICAgICAgICAgIC8qIGNsZWFyIGl0IGp1c3QgaW4gY2FzZSAqLwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgc3VjY2VzcyA9IHVzc2V0bG9jaygodWxvY2tfdCkgbG9jayk7Ci0gICAgZWxzZQotICAgICAgICBzdWNjZXNzID0gdXNjc2V0bG9jaygodWxvY2tfdCkgbG9jaywgMSk7IC8qIFRyeSBpdCBvbmNlICovCi0gICAgaWYgKHN1Y2Nlc3MgPCAwKQotICAgICAgICBwZXJyb3Iod2FpdGZsYWcgPyAidXNzZXRsb2NrIiA6ICJ1c2NzZXRsb2NrIik7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBpZiAodXN1bnNldGxvY2soKHVsb2NrX3QpIGxvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayIpOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9zb2xhcmlzLmggYi9QeXRob24vdGhyZWFkX3NvbGFyaXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlMWNmYy4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3NvbGFyaXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8L3Vzci9pbmNsdWRlL3RocmVhZC5oPgotI3VuZGVmIF9QT1NJWF9USFJFQURTCi0KLQotLyoKLSAqIEluaXRpYWxpemF0aW9uLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1zdHJ1Y3QgZnVuY19hcmcgewotICAgIHZvaWQgKCpmdW5jKSh2b2lkICopOwotICAgIHZvaWQgKmFyZzsKLX07Ci0KLXN0YXRpYyB2b2lkICoKLW5ld19mdW5jKHZvaWQgKmZ1bmNhcmcpCi17Ci0gICAgdm9pZCAoKmZ1bmMpKHZvaWQgKik7Ci0gICAgdm9pZCAqYXJnOwotCi0gICAgZnVuYyA9ICgoc3RydWN0IGZ1bmNfYXJnICopIGZ1bmNhcmcpLT5mdW5jOwotICAgIGFyZyA9ICgoc3RydWN0IGZ1bmNfYXJnICopIGZ1bmNhcmcpLT5hcmc7Ci0gICAgZnJlZShmdW5jYXJnKTsKLSAgICAoKmZ1bmMpKGFyZyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLQotbG9uZwotUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBzdHJ1Y3QgZnVuY19hcmcgKmZ1bmNhcmc7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIGZ1bmNhcmcgPSAoc3RydWN0IGZ1bmNfYXJnICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGZ1bmNfYXJnKSk7Ci0gICAgZnVuY2FyZy0+ZnVuYyA9IGZ1bmM7Ci0gICAgZnVuY2FyZy0+YXJnID0gYXJnOwotICAgIGlmICh0aHJfY3JlYXRlKDAsIDAsIG5ld19mdW5jLCBmdW5jYXJnLAotICAgICAgICAgICAgICAgICAgIFRIUl9ERVRBQ0hFRCB8IFRIUl9ORVdfTFdQLCAmdGlkKSkgewotICAgICAgICBwZXJyb3IoInRocl9jcmVhdGUiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBmdW5jYXJnKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gdGlkOwotfQotCi1sb25nCi1QeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICByZXR1cm4gdGhyX3NlbGYoKTsKLX0KLQotdm9pZAotUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICB0aHJfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrCi1QeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgbXV0ZXhfdCAqbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gKG11dGV4X3QgKikgbWFsbG9jKHNpemVvZihtdXRleF90KSk7Ci0gICAgaWYgKG11dGV4X2luaXQobG9jaywgVVNZTkNfVEhSRUFELCAwKSkgewotICAgICAgICBwZXJyb3IoIm11dGV4X2luaXQiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLSAgICAgICAgbG9jayA9IDA7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZAotUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X2Rlc3Ryb3koKG11dGV4X3QgKikgbG9jayk7Ci0gICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLX0KLQotaW50Ci1QeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzczsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgaWYgKHdhaXRmbGFnKQotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfbG9jaygobXV0ZXhfdCAqKSBsb2NrKTsKLSAgICBlbHNlCi0gICAgICAgIHN1Y2Nlc3MgPSBtdXRleF90cnlsb2NrKChtdXRleF90ICopIGxvY2spOwotICAgIGlmIChzdWNjZXNzIDwgMCkKLSAgICAgICAgcGVycm9yKHdhaXRmbGFnID8gIm11dGV4X2xvY2siIDogIm11dGV4X3RyeWxvY2siKTsKLSAgICBlbHNlCi0gICAgICAgIHN1Y2Nlc3MgPSAhc3VjY2VzczsgLyogc29sYXJpcyBkb2VzIGl0IHRoZSBvdGhlciB3YXkgcm91bmQgKi8KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBpZiAobXV0ZXhfdW5sb2NrKChtdXRleF90ICopIGxvY2spKQotICAgICAgICBwZXJyb3IoIm11dGV4X3VubG9jayIpOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF93aW5jZS5oIGIvUHl0aG9uL3RocmVhZF93aW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWRkYzAyLi4wMDAwMDAwCi0tLSBhL1B5dGhvbi90aHJlYWRfd2luY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8qIFRoaXMgY29kZSBpbXBsZW1lbnRlZCBieSBNYXJrIEhhbW1vbmQgKE1IYW1tb25kQHNraXBwaW5ldC5jb20uYXUpICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8cHlkZWJ1Zy5oPgotCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCk7Ci0KLS8qCi0gKiBDaGFuZ2UgYWxsIGhlYWRlcnMgdG8gcHVyZSBBTlNJIGFzIG5vIG9uZSB3aWxsIHVzZSBLJlIgc3R5bGUgb24gYW4KLSAqIE5UCi0gKi8KLQotLyoKLSAqIEluaXRpYWxpemF0aW9uIG9mIHRoZSBDIHBhY2thZ2UsIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICBsb25nIHJ2OwotICAgIGludCBzdWNjZXNzID0gLTE7Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIHJ2ID0gX2JlZ2ludGhyZWFkKGZ1bmMsIDAsIGFyZyk7IC8qIHVzZSBkZWZhdWx0IHN0YWNrIHNpemUgKi8KLQotICAgIGlmIChydiAhPSAtMSkgewotICAgICAgICBzdWNjZXNzID0gMDsKLSAgICAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBzdWNjZWVkZWQ6XG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotLyoKLSAqIFJldHVybiB0aGUgdGhyZWFkIElkIGluc3RlYWQgb2YgYW4gaGFuZGxlLiBUaGUgSWQgaXMgc2FpZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUKLSAqIHRocmVhZCBpbiB0aGUgc3lzdGVtCi0gKi8KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZElkKCk7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgX2VuZHRocmVhZCgpOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LiBJdCBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgdXNpbmcgTXV0ZXhlcywgYXMKLSAqIENFIGRvZXNudCBzdXBwb3J0IHNlbWFwaG9yZXMuICBUaGVyZWZvcmUgd2UgdXNlIHNvbWUgaGFja3MgdG8KLSAqIHNpbXVsYXRlIHRoZSBub24gcmVlbnRyYW50IHJlcXVpcmVtZW50cyBvZiBQeXRob24gbG9ja3MKLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICBIQU5ETEUgYUxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBhTG9jayA9IENyZWF0ZUV2ZW50KE5VTEwsICAgICAgICAgICAvKiBTZWN1cml0eSBhdHRyaWJ1dGVzICAgICAgKi8KLSAgICAgICAgICAgIDAsICAgICAgICAgICAgICAvKiBNYW51YWwtUmVzZXQgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgIC8qIElzIGluaXRpYWxseSBzaWduYWxsZWQgICovCi0gICAgICAgICAgICBOVUxMKTsgICAgICAgICAgLyogTmFtZSBvZiBldmVudCAgICAgICAgICAgICovCi0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgYUxvY2spKTsKLQotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBhTG9jazsKLX0KLQotdm9pZCBQeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrKQotewotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2spKTsKLQotICAgIENsb3NlSGFuZGxlKGFMb2NrKTsKLX0KLQotLyoKLSAqIFJldHVybiAxIG9uIHN1Y2Nlc3MgaWYgdGhlIGxvY2sgd2FzIGFjcXVpcmVkCi0gKgotICogYW5kIDAgaWYgdGhlIGxvY2sgd2FzIG5vdCBhY3F1aXJlZC4gVGhpcyBtZWFucyBhIDAgaXMgcmV0dXJuZWQKLSAqIGlmIHRoZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgYnkgdGhpcyB0aHJlYWQhCi0gKi8KLWludCBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3MgPSAxOwotICAgIERXT1JEIHdhaXRSZXN1bHQ7Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaywgd2FpdGZsYWcpKTsKLQotI2lmbmRlZiBERUJVRwotICAgIHdhaXRSZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGFMb2NrLCAod2FpdGZsYWcgPyBJTkZJTklURSA6IDApKTsKLSNlbHNlCi0gICAgLyogVG8gYWlkIGluIGRlYnVnZ2luZywgd2UgcmVndWxhcmx5IHdha2UgdXAuICBUaGlzIGFsbG93cyB1cyB0bwotICAgIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyICovCi0gICAgd2hpbGUgKFRSVUUpIHsKLSAgICAgICAgd2FpdFJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoYUxvY2ssIHdhaXRmbGFnID8gMzAwMCA6IDApOwotICAgICAgICBpZiAod2FpdGZsYWc9PTAgfHwgKHdhaXRmbGFnICYmIHdhaXRSZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICh3YWl0UmVzdWx0ICE9IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMDsgICAgLyogV2UgZmFpbGVkICovCi0gICAgfQotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLQotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgYUxvY2spCi17Ci0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaykpOwotCi0gICAgaWYgKCFTZXRFdmVudChhTG9jaykpCi0gICAgZHByaW50ZigoIiVsZDogQ291bGQgbm90IFB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgZXJyb3I6ICVsXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGFMb2NrLCBHZXRMYXN0RXJyb3IoKSkpOwotfQotCi0KZGlmZiAtLWdpdCBhL1B5dGhvbi90cmFjZWJhY2suYyBiL1B5dGhvbi90cmFjZWJhY2suYwppbmRleCA1OWJiM2YwLi5iOTI4OTAyIDEwMDY0NAotLS0gYS9QeXRob24vdHJhY2ViYWNrLmMKKysrIGIvUHl0aG9uL3RyYWNlYmFjay5jCkBAIC0xMyw4ICsxMywxMyBAQAogCiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeVRyYWNlYmFja09iamVjdCwgeCkKIAotLyogTWV0aG9kIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCi1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOworI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorI2RlZmluZSBNQVhfU1RSSU5HX0xFTkdUSCA1MDAKKyNkZWZpbmUgTUFYX0ZSQU1FX0RFUFRIIDEwMAorI2RlZmluZSBNQVhfTlRIUkVBRFMgMTAwCisKKy8qIEZ1bmN0aW9uIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCitleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCwgUHlPYmplY3QgKik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0Yl9kaXIoUHlUcmFjZWJhY2tPYmplY3QgKnNlbGYpCkBAIC0xNDcsNiArMTUyLDcgQEAKICAgICBjb25zdCBjaGFyKiBmaWxlcGF0aDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCogcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOwogCiAgICAgZmlsZWJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7CiAgICAgaWYgKGZpbGVieXRlcyA9PSBOVUxMKSB7CkBAIC0xOTQsNyArMjAwLDcgQEAKICAgICAgICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwogICAgICAgICBzdHJjcHkobmFtZWJ1ZitsZW4sIHRhaWwpOwogCi0gICAgICAgIGJpbmFyeSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgInNzIiwgbmFtZWJ1ZiwgInJiIik7CisgICAgICAgIGJpbmFyeSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJzcyIsIG5hbWVidWYsICJyYiIpOwogICAgICAgICBpZiAoYmluYXJ5ICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGJpbmFyeTsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTIyNCw4ICsyMzAsMTEgQEAKICAgICBQeU9iamVjdCAqbGluZW9iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBjaGFyIGJ1ZltNQVhQQVRITEVOKzFdOwotICAgIFB5X1VOSUNPREUgKnUsICpwOwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKFRleHRJT1dyYXBwZXIpOwogCiAgICAgLyogb3BlbiB0aGUgZmlsZSAqLwogICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQpAQCAtMjM0LDcgKzI0Myw3IEBACiAgICAgaW8gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJpbyIpOwogICAgIGlmIChpbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgYmluYXJ5ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiT3MiLCBmaWxlbmFtZSwgInJiIik7CisgICAgYmluYXJ5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgIk9zIiwgZmlsZW5hbWUsICJyYiIpOwogCiAgICAgaWYgKGJpbmFyeSA9PSBOVUxMKSB7CiAgICAgICAgIGJpbmFyeSA9IF9QeV9GaW5kU291cmNlRmlsZShmaWxlbmFtZSwgYnVmLCBzaXplb2YoYnVmKSwgaW8pOwpAQCAtMjQ2LDEwICsyNTUsMTAgQEAKIAogICAgIC8qIHVzZSB0aGUgcmlnaHQgZW5jb2RpbmcgdG8gZGVjb2RlIHRoZSBmaWxlIGFzIHVuaWNvZGUgKi8KICAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoYmluYXJ5KTsKLSAgICBmb3VuZF9lbmNvZGluZyA9IFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhmZCk7CisgICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShmZCwgZmlsZW5hbWUpOwogICAgIGVuY29kaW5nID0gKGZvdW5kX2VuY29kaW5nICE9IE5VTEwpID8gZm91bmRfZW5jb2RpbmcgOiAidXRmLTgiOwogICAgIGxzZWVrKGZkLCAwLCAwKTsgLyogUmVzZXQgcG9zaXRpb24gKi8KLSAgICBmb2IgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAiVGV4dElPV3JhcHBlciIsICJPcyIsIGJpbmFyeSwgZW5jb2RpbmcpOworICAgIGZvYiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPcyIsIGJpbmFyeSwgZW5jb2RpbmcpOwogICAgIFB5X0RFQ1JFRihpbyk7CiAgICAgUHlfREVDUkVGKGJpbmFyeSk7CiAgICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7CkBAIC0yNjgsNyArMjc3LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm9iLCAiY2xvc2UiLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb2IsICZQeUlkX2Nsb3NlLCAiIik7CiAgICAgaWYgKHJlcykKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgZWxzZQpAQCAtMjgwLDEzICsyODksMTYgQEAKICAgICB9CiAKICAgICAvKiByZW1vdmUgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBsaW5lICovCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmVvYmopOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShsaW5lb2JqKTsKLSAgICBmb3IgKHA9dTsgKnAgPT0gJyAnIHx8ICpwID09ICdcdCcgfHwgKnAgPT0gJ1wwMTQnOyBwKyspCi0gICAgICAgIGxlbi0tOwotICAgIGlmICh1ICE9IHApIHsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobGluZW9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGxpbmVvYmopOworICAgIGZvciAoaT0wOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZW9iaik7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCAhPSAnICcgJiYgY2ggIT0gJ1x0JyAmJiBjaCAhPSAnXDAxNCcpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGkpIHsKICAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZDsKLSAgICAgICAgdHJ1bmNhdGVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIGxlbik7CisgICAgICAgIHRydW5jYXRlZCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZW9iaiwgaSwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZW9iaikpOwogICAgICAgICBpZiAodHJ1bmNhdGVkKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7CiAgICAgICAgICAgICBsaW5lb2JqID0gdHJ1bmNhdGVkOwpAQCAtMzMyLDcgKzM0NCwxMCBAQAogICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgIHJldHVybiBlcnI7Ci0gICAgcmV0dXJuIF9QeV9EaXNwbGF5U291cmNlTGluZShmLCBmaWxlbmFtZSwgbGluZW5vLCA0KTsKKyAgICAvKiBpZ25vcmUgZXJyb3JzIHNpbmNlIHdlIGNhbid0IHJlcG9ydCB0aGVtLCBjYW4gd2U/ICovCisgICAgaWYgKF9QeV9EaXNwbGF5U291cmNlTGluZShmLCBmaWxlbmFtZSwgbGluZW5vLCA0KSkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICByZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgaW50CkBAIC00MDIsMyArNDE3LDI1MCBAQAogICAgICAgICBlcnIgPSB0Yl9wcmludGludGVybmFsKChQeVRyYWNlYmFja09iamVjdCAqKXYsIGYsIGxpbWl0KTsKICAgICByZXR1cm4gZXJyOwogfQorCisvKiBSZXZlcnNlIGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgImFiY2QiIGJlY29tZXMgImRjYmEiLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorcmV2ZXJzZV9zdHJpbmcoY2hhciAqdGV4dCwgY29uc3Qgc2l6ZV90IGxlbikKK3sKKyAgICBjaGFyIHRtcDsKKyAgICBzaXplX3QgaSwgajsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGk9MCwgaj1sZW4tMTsgaSA8IGo7IGkrKywgai0tKSB7CisgICAgICAgIHRtcCA9IHRleHRbaV07CisgICAgICAgIHRleHRbaV0gPSB0ZXh0W2pdOworICAgICAgICB0ZXh0W2pdID0gdG1wOworICAgIH0KK30KKworLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDk5OTk5OV0gdG8gZGVjaW1hbCwKKyAgIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBmaWxlIGZkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9kZWNpbWFsKGludCBmZCwgaW50IHZhbHVlKQoreworICAgIGNoYXIgYnVmZmVyWzddOworICAgIGludCBsZW47CisgICAgaWYgKHZhbHVlIDwgMCB8fCA5OTk5OTkgPCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGxlbiA9IDA7CisgICAgZG8geworICAgICAgICBidWZmZXJbbGVuXSA9ICcwJyArICh2YWx1ZSAlIDEwKTsKKyAgICAgICAgdmFsdWUgLz0gMTA7CisgICAgICAgIGxlbisrOworICAgIH0gd2hpbGUgKHZhbHVlKTsKKyAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7CisgICAgd3JpdGUoZmQsIGJ1ZmZlciwgbGVuKTsKK30KKworLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDB4ZmZmZmZmZmZdIHRvIGhleGRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCisgICBhbmQgd3JpdGUgaXQgaW50byB0aGUgZmlsZSBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfaGV4YWRlY2ltYWwoaW50IHdpZHRoLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBpbnQgZmQpCit7CisgICAgaW50IGxlbjsKKyAgICBjaGFyIGJ1ZmZlcltzaXplb2YodW5zaWduZWQgbG9uZykgKiAyICsgMV07CisgICAgbGVuID0gMDsKKyAgICBkbyB7CisgICAgICAgIGJ1ZmZlcltsZW5dID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOworICAgICAgICB2YWx1ZSA+Pj0gNDsKKyAgICAgICAgbGVuKys7CisgICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOworICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKKyAgICB3cml0ZShmZCwgYnVmZmVyLCBsZW4pOworfQorCisvKiBXcml0ZSBhbiB1bmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGZkIHVzaW5nIGFzY2lpK2JhY2tzbGFzaHJlcGxhY2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2FzY2lpKGludCBmZCwgUHlPYmplY3QgKnRleHQpCit7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKXRleHQ7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIGludCB0cnVuY2F0ZWQ7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YSA9IE5VTEw7CisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisgICAgUHlfVUNTNCBjaDsKKworICAgIHNpemUgPSBhc2NpaS0+bGVuZ3RoOworICAgIGtpbmQgPSBhc2NpaS0+c3RhdGUua2luZDsKKyAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkKKyAgICAgICAgICAgIGRhdGEgPSAoKFB5QVNDSUlPYmplY3QqKXRleHQpICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopdGV4dCkgKyAxOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIGRhdGEgPSAoKFB5VW5pY29kZU9iamVjdCAqKXRleHQpLT5kYXRhLmFueTsKKyAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdzdHIgPSAoKFB5QVNDSUlPYmplY3QgKil0ZXh0KS0+d3N0cjsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2l6ZSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKXRleHQpLT53c3RyX2xlbmd0aDsKKyAgICB9CisKKyAgICBpZiAoTUFYX1NUUklOR19MRU5HVEggPCBzaXplKSB7CisgICAgICAgIHNpemUgPSBNQVhfU1RSSU5HX0xFTkdUSDsKKyAgICAgICAgdHJ1bmNhdGVkID0gMTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICB0cnVuY2F0ZWQgPSAwOworCisgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjaCA9IHdzdHJbaV07CisgICAgICAgIGlmIChjaCA8IDEyOCkgeworICAgICAgICAgICAgY2hhciBjID0gKGNoYXIpY2g7CisgICAgICAgICAgICB3cml0ZShmZCwgJmMsIDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZikgeworICAgICAgICAgICAgUFVUUyhmZCwgIlxceCIpOworICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbCgyLCBjaCwgZmQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZmZmKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiXFx1Iik7CisgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKDQsIGNoLCBmZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiXFxVIik7CisgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKDgsIGNoLCBmZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHRydW5jYXRlZCkKKyAgICAgICAgUFVUUyhmZCwgIi4uLiIpOworfQorCisvKiBXcml0ZSBhIGZyYW1lIGludG8gdGhlIGZpbGUgZmQ6ICJGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiB4eHgiLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9mcmFtZShpbnQgZmQsIFB5RnJhbWVPYmplY3QgKmZyYW1lKQoreworICAgIFB5Q29kZU9iamVjdCAqY29kZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgY29kZSA9IGZyYW1lLT5mX2NvZGU7CisgICAgUFVUUyhmZCwgIiAgRmlsZSAiKTsKKyAgICBpZiAoY29kZSAhPSBOVUxMICYmIGNvZGUtPmNvX2ZpbGVuYW1lICE9IE5VTEwKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX2ZpbGVuYW1lKSkKKyAgICB7CisgICAgICAgIHdyaXRlKGZkLCAiXCIiLCAxKTsKKyAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KKworICAgIC8qIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjcuMCBhbmQgMy4yLjAgKi8KKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGNvZGUsIGZyYW1lLT5mX2xhc3RpKTsKKyAgICBQVVRTKGZkLCAiLCBsaW5lICIpOworICAgIGR1bXBfZGVjaW1hbChmZCwgbGluZW5vKTsKKyAgICBQVVRTKGZkLCAiIGluICIpOworCisgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19uYW1lICE9IE5VTEwKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKQorICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19uYW1lKTsKKyAgICBlbHNlCisgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKworICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKK30KKworc3RhdGljIHZvaWQKK2R1bXBfdHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBpbnQgd3JpdGVfaGVhZGVyKQoreworICAgIFB5RnJhbWVPYmplY3QgKmZyYW1lOworICAgIHVuc2lnbmVkIGludCBkZXB0aDsKKworICAgIGlmICh3cml0ZV9oZWFkZXIpCisgICAgICAgIFBVVFMoZmQsICJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CisKKyAgICBmcmFtZSA9IF9QeVRocmVhZFN0YXRlX0dldEZyYW1lKHRzdGF0ZSk7CisgICAgaWYgKGZyYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgIGRlcHRoID0gMDsKKyAgICB3aGlsZSAoZnJhbWUgIT0gTlVMTCkgeworICAgICAgICBpZiAoTUFYX0ZSQU1FX0RFUFRIIDw9IGRlcHRoKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiICAuLi5cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUZyYW1lX0NoZWNrKGZyYW1lKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkdW1wX2ZyYW1lKGZkLCBmcmFtZSk7CisgICAgICAgIGZyYW1lID0gZnJhbWUtPmZfYmFjazsKKyAgICAgICAgZGVwdGgrKzsKKyAgICB9Cit9CisKK3ZvaWQKK19QeV9EdW1wVHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQoreworICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDEpOworfQorCisvKiBXcml0ZSB0aGUgdGhyZWFkIGlkZW50aWZpZXIgaW50byB0aGUgZmlsZSAnZmQnOiAiQ3VycmVudCB0aHJlYWQgMHhISEhIOlwiIGlmCisgICBpc19jdXJyZW50IGlzIHRydWUsICJUaHJlYWQgMHhISEhIOlxuIiBvdGhlcndpc2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCit3cml0ZV90aHJlYWRfaWQoaW50IGZkLCBQeVRocmVhZFN0YXRlICp0c3RhdGUsIGludCBpc19jdXJyZW50KQoreworICAgIGlmIChpc19jdXJyZW50KQorICAgICAgICBQVVRTKGZkLCAiQ3VycmVudCB0aHJlYWQgMHgiKTsKKyAgICBlbHNlCisgICAgICAgIFBVVFMoZmQsICJUaHJlYWQgMHgiKTsKKyAgICBkdW1wX2hleGFkZWNpbWFsKHNpemVvZihsb25nKSoyLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgZmQpOworICAgIFBVVFMoZmQsICI6XG4iKTsKK30KKworY29uc3QgY2hhcioKK19QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICB1bnNpZ25lZCBpbnQgbnRocmVhZHM7CisKKyAgICAvKiBHZXQgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQgKi8KKyAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICJ1bmFibGUgdG8gZ2V0IHRoZSB0aHJlYWQgaGVhZCBzdGF0ZSI7CisKKyAgICAvKiBEdW1wIHRoZSB0cmFjZWJhY2sgb2YgZWFjaCB0aHJlYWQgKi8KKyAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOworICAgIG50aHJlYWRzID0gMDsKKyAgICBkbworICAgIHsKKyAgICAgICAgaWYgKG50aHJlYWRzICE9IDApCisgICAgICAgICAgICB3cml0ZShmZCwgIlxuIiwgMSk7CisgICAgICAgIGlmIChudGhyZWFkcyA+PSBNQVhfTlRIUkVBRFMpIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICIuLi5cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVfdGhyZWFkX2lkKGZkLCB0c3RhdGUsIHRzdGF0ZSA9PSBjdXJyZW50X3RocmVhZCk7CisgICAgICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDApOworICAgICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05leHQodHN0YXRlKTsKKyAgICAgICAgbnRocmVhZHMrKzsKKyAgICB9IHdoaWxlICh0c3RhdGUgIT0gTlVMTCk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGIxMzgwNmIuLmNlZjczODQgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi1UaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuMi4zCitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuMy4wCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKQEAgLTE1LDYgKzE1LDggQEAKIAogT24gVW5peCwgTGludXgsIEJTRCwgT1NYLCBhbmQgQ3lnd2luOgogCitOZXcgdGV4dAorCiAgICAgLi9jb25maWd1cmUKICAgICBtYWtlCiAgICAgbWFrZSB0ZXN0CkBAIC01MCw5ICs1Miw5IEBACiAtLS0tLS0tLS0tCiAKIFdlIHRyeSB0byBoYXZlIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBpbiB0aGUgIldoYXQncyBOZXcgaW4KLVB5dGhvbiAzLjIiIGRvY3VtZW50LCBmb3VuZCBhdAorUHl0aG9uIDMuMyIgZG9jdW1lbnQsIGZvdW5kIGF0CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMi93aGF0c25ldy8zLjIuaHRtbAorICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zL3doYXRzbmV3LzMuMy5odG1sCiAKIEZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywgaXMKIGluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43IHJlbGVhc2UgdW5kZXIKQEAgLTY1LDkgKzY3LDkgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuMiBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CitEb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy4zIGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4yLworICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zLwogCiBJdCBjYW4gYWxzbyBiZSBkb3dubG9hZGVkIGluIG1hbnkgZm9ybWF0cyBmb3IgZmFzdGVyIGFjY2Vzcy4gIFRoZSBkb2N1bWVudGF0aW9uCiBpcyBkb3dubG9hZGFibGUgaW4gSFRNTCwgUERGLCBhbmQgcmVTdHJ1Y3R1cmVkVGV4dCBmb3JtYXRzOyB0aGUgbGF0dGVyIHZlcnNpb24KQEAgLTg1LDE4ICs4NywxNiBAQAogQSBzb3VyY2UtdG8tc291cmNlIHRyYW5zbGF0aW9uIHRvb2wsICIydG8zIiwgY2FuIHRha2UgY2FyZSBvZiB0aGUgbXVuZGFuZSB0YXNrCiBvZiBjb252ZXJ0aW5nIGxhcmdlIGFtb3VudHMgb2Ygc291cmNlIGNvZGUuICBJdCBpcyBub3QgYSBjb21wbGV0ZSBzb2x1dGlvbiBidXQKIGlzIGNvbXBsZW1lbnRlZCBieSB0aGUgZGVwcmVjYXRpb24gd2FybmluZ3MgaW4gMi42LiAgU2VlCi1odHRwOi8vZG9jcy5weXRob24ub3JnLzMuMi9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zL2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIFRlc3RpbmcKIC0tLS0tLS0KIAotVG8gdGVzdCB0aGUgaW50ZXJwcmV0ZXIsIHR5cGUgIm1ha2UgdGVzdCIgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuICBUaGlzIHJ1bnMKLXRoZSB0ZXN0IHNldCB0d2ljZSAob25jZSB3aXRoIG5vIGNvbXBpbGVkIGZpbGVzLCBvbmNlIHdpdGggdGhlIGNvbXBpbGVkIGZpbGVzCi1sZWZ0IGJ5IHRoZSBwcmV2aW91cyB0ZXN0IHJ1bikuICBUaGUgdGVzdCBzZXQgcHJvZHVjZXMgc29tZSBvdXRwdXQuICBZb3UgY2FuCi1nZW5lcmFsbHkgaWdub3JlIHRoZSBtZXNzYWdlcyBhYm91dCBza2lwcGVkIHRlc3RzIGR1ZSB0byBvcHRpb25hbCBmZWF0dXJlcyB3aGljaAotY2FuJ3QgYmUgaW1wb3J0ZWQuICBJZiBhIG1lc3NhZ2UgaXMgcHJpbnRlZCBhYm91dCBhIGZhaWxlZCB0ZXN0IG9yIGEgdHJhY2ViYWNrCi1vciBjb3JlIGR1bXAgaXMgcHJvZHVjZWQsIHNvbWV0aGluZyBpcyB3cm9uZy4KK1RvIHRlc3QgdGhlIGludGVycHJldGVyLCB0eXBlICJtYWtlIHRlc3QiIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LiAgVGhlIHRlc3QKK3NldCBwcm9kdWNlcyBzb21lIG91dHB1dC4gIFlvdSBjYW4gZ2VuZXJhbGx5IGlnbm9yZSB0aGUgbWVzc2FnZXMgYWJvdXQgc2tpcHBlZAordGVzdHMgZHVlIHRvIG9wdGlvbmFsIGZlYXR1cmVzIHdoaWNoIGNhbid0IGJlIGltcG9ydGVkLiAgSWYgYSBtZXNzYWdlIGlzIHByaW50ZWQKK2Fib3V0IGEgZmFpbGVkIHRlc3Qgb3IgYSB0cmFjZWJhY2sgb3IgY29yZSBkdW1wIGlzIHByb2R1Y2VkLCBzb21ldGhpbmcgaXMgd3JvbmcuCiAKIEJ5IGRlZmF1bHQsIHRlc3RzIGFyZSBwcmV2ZW50ZWQgZnJvbSBvdmVydXNpbmcgcmVzb3VyY2VzIGxpa2UgZGlzayBzcGFjZSBhbmQKIG1lbW9yeS4gIFRvIGVuYWJsZSB0aGVzZSB0ZXN0cywgcnVuICJtYWtlIHRlc3RhbGwiLgpAQCAtMTI1LDggKzEyNSw4IEBACiBJbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyIHZlcnNpb25zIHVzaW5nCiAibWFrZSBhbHRpbnN0YWxsIi4KIAotRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNSwgMi42IGFuZCAzLjIgd2l0aCAyLjYgYmVpbmcgdGhlCi1wcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi42IGJ1aWxkIGRpcmVjdG9yeQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjMgd2l0aCAyLjcgYmVpbmcgdGhlCitwcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQogYW5kICJtYWtlIGFsdGluc3RhbGwiIGluIHRoZSBvdGhlcnMuCiAKIApAQCAtMTYxLDcgKzE2MSw3IEBACiBSZWxlYXNlIFNjaGVkdWxlCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVNlZSBQRVAgMzkyIGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDM5Mi8KK1NlZSBQRVAgMzk4IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDM5OC8KIAogCiBDb3B5cmlnaHQgYW5kIExpY2Vuc2UgSW5mb3JtYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1JFQURNRSBiL1Rvb2xzL1JFQURNRQppbmRleCBjMWY4OWJhLi4wZDk2MWRlIDEwMDY0NAotLS0gYS9Ub29scy9SRUFETUUKKysrIGIvVG9vbHMvUkVBRE1FCkBAIC0zLDcgKzMsNyBAQAogCiBidWlsZGJvdCAgICAgICAgQmF0Y2hmaWxlcyBmb3IgcnVubmluZyBvbiBXaW5kb3dzIGJ1aWxkc2xhdmVzLgogCi1jY2JlbmNoICAgICAgICAgQSBQeXRob24gY29uY3VycmVuY3kgYmVuY2htYXJrLgorY2NiZW5jaCAgICAgICAgIEEgUHl0aG9uIHRocmVhZHMtYmFzZWQgY29uY3VycmVuY3kgYmVuY2htYXJrLiAoKikKIAogZGVtbyAgICAgICAgICAgIFNldmVyYWwgUHl0aG9uIHByb2dyYW1taW5nIGRlbW9zLgogCkBAIC0xNywxMyArMTcsMTMgQEAKICAgICAgICAgICAgICAgICBhbmQgbXNnZm10LnB5IGdlbmVyYXRlcyBhIGJpbmFyeSBtZXNzYWdlIGNhdGFsb2cKICAgICAgICAgICAgICAgICBmcm9tIGEgY2F0YWxvZyBpbiB0ZXh0IGZvcm1hdC4KIAotaW9iZW5jaCAgICAgICAgIEJlbmNobWFyayBmb3IgdGhlIG5ldyBQeXRob24gSS9PIHN5c3RlbS4KK2lvYmVuY2ggICAgICAgICBCZW5jaG1hcmsgZm9yIHRoZSBuZXcgUHl0aG9uIEkvTyBzeXN0ZW0uICgqKQogCiBtc2kgICAgICAgICAgICAgU3VwcG9ydCBmb3IgcGFja2FnaW5nIFB5dGhvbiBhcyBhbiBNU0kgcGFja2FnZSBvbiBXaW5kb3dzLgogCiBwYXJzZXIgICAgICAgICAgVW4tcGFyc2luZyB0b29sIHRvIGdlbmVyYXRlIGNvZGUgZnJvbSBhbiBBU1QuCiAKLXB5YmVuY2ggICAgICAgICBDb21wcmVoZW5zaXZlIFB5dGhvbiBiZW5jaG1hcmtpbmcgc3VpdGUuCitweWJlbmNoICAgICAgICAgTG93LWxldmVsIGJlbmNobWFya2luZyBmb3IgdGhlIFB5dGhvbiBldmFsdWF0aW9uIGxvb3AuICgqKQogCiBweW5jaGUgICAgICAgICAgQSBUa2ludGVyLWJhc2VkIGNvbG9yIGVkaXRvci4KIApAQCAtMzIsNiArMzIsOSBAQAogICAgICAgICAgICAgICAgIHRhYnMgYW5kIHNwYWNlcywgYW5kIDJ0bzMsIHdoaWNoIGNvbnZlcnRzIFB5dGhvbiAyIGNvZGUKICAgICAgICAgICAgICAgICB0byBQeXRob24gMyBjb2RlLgogCitzdHJpbmdiZW5jaCAgICAgQSBzdWl0ZSBvZiBtaWNyby1iZW5jaG1hcmtzIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMgb24KKyAgICAgICAgICAgICAgICBzdHJpbmdzIChib3RoIDgtYml0IGFuZCB1bmljb2RlKS4gKCopCisKIHRlc3QydG8zICAgICAgICBBIGRlbW9uc3RyYXRpb24gb2YgaG93IHRvIHVzZSAydG8zIHRyYW5zcGFyZW50bHkgaW4gc2V0dXAucHkuCiAKIHVuaWNvZGUgICAgICAgICBUb29scyBmb3IgZ2VuZXJhdGluZyB1bmljb2RlZGF0YSBhbmQgY29kZWNzIGZyb20gdW5pY29kZS5vcmcKQEAgLTQwLDMgKzQzLDYgQEAKIAogdW5pdHRlc3RndWkgICAgIEEgVGtpbnRlciBiYXNlZCBHVUkgdGVzdCBydW5uZXIgZm9yIHVuaXR0ZXN0LCB3aXRoIHRlc3QKICAgICAgICAgICAgICAgICBkaXNjb3ZlcnkuCisKKworKCopIEEgZ2VuZXJpYyBiZW5jaG1hcmsgc3VpdGUgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IGF0IGh0dHA6Ly9oZy5weXRob24ub3JnL2JlbmNobWFya3MvCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKaW5kZXggODcxM2IzOC4uN2VlN2IyZCAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdApAQCAtMSw3ICsxLDcgQEAKIEByZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuCi1zZXQgSE9TVF9QWVRIT049IiVDRCVcUENidWlsZFxhbWQ2NFxweXRob25fZC5leGUiCiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwtYW1kNjQuYmF0Ci1jYWxsICIlVlM5MENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGNsZWFuLWFtZDY0LmJhdAotdmNidWlsZCAvdXNlZW52IFBDYnVpbGRca2lsbF9weXRob24udmNwcm9qICJEZWJ1Z3x4NjQiICYmIFBDYnVpbGRcYW1kNjRca2lsbF9weXRob25fZC5leGUKLXZjYnVpbGQgUENidWlsZFxwY2J1aWxkLnNsbiAiRGVidWd8eDY0IgorbXNidWlsZCBQQ2J1aWxkXGtpbGxfcHl0aG9uLnZjeHByb2ogL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14NjQKK1BDYnVpbGRcYW1kNjRca2lsbF9weXRob25fZC5leGUKK21zYnVpbGQgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtPXg2NApkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0CmluZGV4IGFiM2VhN2QuLmM5M2NmZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQKQEAgLTEsNyArMSw4IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjb21waWxlIiBzdGVwLgogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLmJhdAotY2FsbCAiJVZTOTBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKIGNtZCAvYyBUb29sc1xidWlsZGJvdFxjbGVhbi5iYXQKLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXGtpbGxfcHl0aG9uLnZjcHJvaiAiRGVidWd8V2luMzIiICYmIFBDYnVpbGRca2lsbF9weXRob25fZC5leGUKLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXHBjYnVpbGQuc2xuICJEZWJ1Z3xXaW4zMiIKK21zYnVpbGQgUENidWlsZFxraWxsX3B5dGhvbi52Y3hwcm9qIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDg2CitQQ2J1aWxkXGtpbGxfcHl0aG9uX2QuZXhlCittc2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT1XaW4zMgogCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKaW5kZXggNDQzMGNiOC4uYWU5M2U2NyAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdApAQCAtMiwxMCArMiwxMCBAQAogCiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwuYmF0CiBAcmVtIGJ1aWxkIHJlbGVhc2UgdmVyc2lvbnMgb2YgdGhpbmdzCi1jYWxsICIlVlM5MENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCitjYWxsICIlVlMxMDBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgogCiBAcmVtIGJ1aWxkIFB5dGhvbgotdmNidWlsZCAvdXNlZW52IFBDYnVpbGRccGNidWlsZC5zbG4gIlJlbGVhc2V8V2luMzIiCittc2J1aWxkIC9wOnVzZWVudj10cnVlIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtPVdpbjMyCiAKIEByZW0gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24KIGJhc2guZXhlIC1jICdjZCBEb2M7bWFrZSBQWVRIT049cHl0aG9uMi41IHVwZGF0ZSBodG1saGVscCcKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdAppbmRleCA3MTU4MDVhLi4yNDY2MGFmIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CkBAIC0xLDEwICsxLDEwIEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4KLWNhbGwgIiVWUzkwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CiBAZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uCiBkZWwgL3MgTGliXCoucHljIExpYlwqLnB5bwogQGVjaG8gRGVsZXRpbmcgdGVzdCBsZWZ0b3ZlcnMgLi4uCiBybWRpciAvcyAvcSBidWlsZAogY2QgUENidWlsZAotdmNidWlsZCAvY2xlYW4gcGNidWlsZC5zbG4gIlJlbGVhc2V8eDY0IgotdmNidWlsZCAvY2xlYW4gcGNidWlsZC5zbG4gIkRlYnVnfHg2NCIKK21zYnVpbGQgL3RhcmdldDpjbGVhbiBwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0Cittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14NjQKIGNkIC4uCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKaW5kZXggMGMwNGI4ZS4uMjE4ZmFjYyAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdApAQCAtMSw4ICsxLDggQEAKIEByZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgImNsZWFuIiBzdGVwLgotY2FsbCAiJVZTOTBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKIEBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLgogcm1kaXIgL3MgL3EgYnVpbGQKIGNkIFBDYnVpbGQKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJSZWxlYXNlfFdpbjMyIgotdmNidWlsZCAvY2xlYW4gcGNidWlsZC5zbG4gIkRlYnVnfFdpbjMyIgorbXNidWlsZCAvdGFyZ2V0OmNsZWFuIHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybVRhcmdldD14ODYKK21zYnVpbGQgL3RhcmdldDpjbGVhbiBwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg4NgogY2QgLi4KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAppbmRleCA5NTQyMzhlLi5kMmZmMjU1IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CkBAIC0yLDIwICsyLDIwIEBACiAKIEByZW0gQXNzdW1lIHdlIHN0YXJ0IGluc2lkZSB0aGUgUHl0aG9uIHNvdXJjZSBkaXJlY3RvcnkKIGNhbGwgIlRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLWNvbW1vbi5iYXQiCi1jYWxsICIlVlM5MENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAogCiBpZiBub3QgZXhpc3QgdGNsdGs2NFxiaW5cdGNsODVnLmRsbCAoCi0gICAgY2QgdGNsLTguNS45LjBcd2luCisgICAgY2QgdGNsLTguNS4xMS4wXHdpbgogICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgY2xlYW4gYWxsCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBpbnN0YWxsCiAgICAgY2QgLi5cLi4KICkKIAogaWYgbm90IGV4aXN0IHRjbHRrNjRcYmluXHRrODVnLmRsbCAoCi0gICAgY2QgdGstOC41LjkuMFx3aW4gICAgCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGNsZWFuCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBpbnN0YWxsCisgICAgY2QgdGstOC41LjExLjBcd2luICAgIAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgY2xlYW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGFsbAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWNvbW1vbi5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0CmluZGV4IDIxNjViOGEuLjRlOWZlNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWNvbW1vbi5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtY29tbW9uLmJhdApAQCAtMTQsOCArMTQsOCBAQAogQHJlbSBpZiBleGlzdCB0azguNC4xNiByZCAvcy9xIHRrOC40LjE2CiBAcmVtIGlmIGV4aXN0IHRrLTguNC4xOC4xIHJkIC9zL3EgdGstOC40LjE4LjEKIEByZW0gaWYgZXhpc3QgZGItNC40LjIwIHJkIC9zL3EgZGItNC40LjIwCi1AcmVtIGlmIGV4aXN0IG9wZW5zc2wtMS4wLjBqIHJkIC9zL3Egb3BlbnNzbC0xLjAuMGoKLUByZW0gaWYgZXhpc3Qgc3FsaXRlLTMuNy40IHJkIC9zL3Egc3FsaXRlLTMuNy40ICAgIAorQHJlbSBpZiBleGlzdCBvcGVuc3NsLTEuMC4xYyByZCAvcy9xIG9wZW5zc2wtMS4wLjFjCitAcmVtIGlmIGV4aXN0IHNxbGl0ZS0zLjcuMTIgcmQgL3MvcSBzcWxpdGUtMy43LjEyICAgIAogCiBAcmVtIGJ6aXAKIGlmIG5vdCBleGlzdCBiemlwMi0xLjAuNiAoCkBAIC0yNCwxNyArMjQsMjUgQEAKICkKIAogQHJlbSBPcGVuU1NMCi1pZiBub3QgZXhpc3Qgb3BlbnNzbC0xLjAuMGogc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvb3BlbnNzbC0xLjAuMGoKK2lmIG5vdCBleGlzdCBvcGVuc3NsLTEuMC4xYyAoCisgICAgcmQgL3MvcSBvcGVuc3NsLTEuMC4wagorICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjFjCispCiAKIEByZW0gdGNsL3RrCi1pZiBub3QgZXhpc3QgdGNsLTguNS45LjAgKAoraWYgbm90IGV4aXN0IHRjbC04LjUuMTEuMCAoCiAgICByZCAvcy9xIHRjbHRrIHRjbHRrNjQKLSAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3RjbC04LjUuOS4wCisgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90Y2wtOC41LjExLjAKICkKLWlmIG5vdCBleGlzdCB0ay04LjUuOS4wIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3RrLTguNS45LjAKK2lmIG5vdCBleGlzdCB0ay04LjUuMTEuMCBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90ay04LjUuMTEuMAogCiBAcmVtIHNxbGl0ZTMKLWlmIG5vdCBleGlzdCBzcWxpdGUtMy43LjQgKAotICByZCAvcy9xIHNxbGl0ZS1zb3VyY2UtMy42LjIxCi0gIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3NxbGl0ZS0zLjcuNAoraWYgbm90IGV4aXN0IHNxbGl0ZS0zLjcuMTIgKAorICByZCAvcy9xIHNxbGl0ZS1zb3VyY2UtMy43LjQKKyAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvc3FsaXRlLTMuNy4xMgorKQorCitAcmVtIGx6bWEKK2lmIG5vdCBleGlzdCB4ei01LjAuMyAoCisgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3h6LTUuMC4zCiApCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKaW5kZXggZTk1OGZkNi4uZWQ1YzEwZSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdApAQCAtMiwyMCArMiwyMCBAQAogCiBAcmVtIEFzc3VtZSB3ZSBzdGFydCBpbnNpZGUgdGhlIFB5dGhvbiBzb3VyY2UgZGlyZWN0b3J5CiBjYWxsICJUb29sc1xidWlsZGJvdFxleHRlcm5hbC1jb21tb24uYmF0IgotY2FsbCAiJVZTOTBDT01OVE9PTFMlXHZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcdnN2YXJzMzIuYmF0IgogCiBpZiBub3QgZXhpc3QgdGNsdGtcYmluXHRjbDg1Zy5kbGwgKAogICAgIEByZW0gYWxsIGFuZCBpbnN0YWxsIG5lZWQgdG8gYmUgc2VwYXJhdGUgaW52b2NhdGlvbnMsIG90aGVyd2lzZSBubWFrZWhscCBpcyBub3QgZm91bmQgb24gaW5zdGFsbAotICAgIGNkIHRjbC04LjUuOS4wXHdpbgorICAgIGNkIHRjbC04LjUuMTEuMFx3aW4KICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgY2xlYW4gYWxsIAogICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBpbnN0YWxsCiAgICAgY2QgLi5cLi4KICkKIAogaWYgbm90IGV4aXN0IHRjbHRrXGJpblx0azg1Zy5kbGwgKAotICAgIGNkIHRrLTguNS45LjBcd2luICAgIAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGNsZWFuCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgYWxsCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgaW5zdGFsbAorICAgIGNkIHRrLTguNS4xMS4wXHdpbgorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBjbGVhbgorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBhbGwKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCmRpZmYgLS1naXQgYS9Ub29scy9jY2JlbmNoL2NjYmVuY2gucHkgYi9Ub29scy9jY2JlbmNoL2NjYmVuY2gucHkKaW5kZXggOWY3MTE4Zi4uNjBjZWMzZSAxMDA2NDQKLS0tIGEvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5CisrKyBiL1Rvb2xzL2NjYmVuY2gvY2NiZW5jaC5weQpAQCAtMTAsNyArMTAsNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTQzNSw3MCArNDM0LDcwIEBACiBkZWYgcnVuX2JhbmR3aWR0aF90ZXN0KGZ1bmMsIGFyZ3MsIG50aHJlYWRzKToKICAgICAjIENyZWF0ZSBhIGxpc3RlbmluZyBzb2NrZXQgdG8gcmVjZWl2ZSB0aGUgcGFja2V0cy4gV2UgdXNlIFVEUCB3aGljaCBzaG91bGQKICAgICAjIGJlIHBhaW5sZXNzbHkgY3Jvc3MtcGxhdGZvcm0uCi0gICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQotICAgIHNvY2suYmluZCgoIjEyNy4wLjAuMSIsIDApKQotICAgIGFkZHIgPSBzb2NrLmdldHNvY2tuYW1lKCkKKyAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKSBhcyBzb2NrOgorICAgICAgICBzb2NrLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKKyAgICAgICAgYWRkciA9IHNvY2suZ2V0c29ja25hbWUoKQogCi0gICAgZHVyYXRpb24gPSBCQU5EV0lEVEhfRFVSQVRJT04KLSAgICBwYWNrZXRfc2l6ZSA9IEJBTkRXSURUSF9QQUNLRVRfU0laRQotCi0gICAgcmVzdWx0cyA9IFtdCi0gICAgdGhyZWFkcyA9IFtdCi0gICAgZW5kX2V2ZW50ID0gW10KLSAgICBzdGFydF9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgc3RhcnRlZCA9IEZhbHNlCi0gICAgaWYgbnRocmVhZHMgPiAwOgotICAgICAgICAjIFdhcm0gdXAKLSAgICAgICAgZnVuYygqYXJncykKKyAgICAgICAgZHVyYXRpb24gPSBCQU5EV0lEVEhfRFVSQVRJT04KKyAgICAgICAgcGFja2V0X3NpemUgPSBCQU5EV0lEVEhfUEFDS0VUX1NJWkUKIAogICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgbG9vcCA9IFRpbWVkTG9vcChmdW5jLCBhcmdzKQotICAgICAgICByZWFkeSA9IFtdCi0gICAgICAgIHJlYWR5X2NvbmQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgdGhyZWFkcyA9IFtdCisgICAgICAgIGVuZF9ldmVudCA9IFtdCisgICAgICAgIHN0YXJ0X2NvbmQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgc3RhcnRlZCA9IEZhbHNlCisgICAgICAgIGlmIG50aHJlYWRzID4gMDoKKyAgICAgICAgICAgICMgV2FybSB1cAorICAgICAgICAgICAgZnVuYygqYXJncykKIAotICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgICAgIGxvb3AgPSBUaW1lZExvb3AoZnVuYywgYXJncykKKyAgICAgICAgICAgIHJlYWR5ID0gW10KKyAgICAgICAgICAgIHJlYWR5X2NvbmQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKworICAgICAgICAgICAgZGVmIHJ1bigpOgorICAgICAgICAgICAgICAgIHdpdGggcmVhZHlfY29uZDoKKyAgICAgICAgICAgICAgICAgICAgcmVhZHkuYXBwZW5kKE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHJlYWR5X2NvbmQubm90aWZ5KCkKKyAgICAgICAgICAgICAgICB3aXRoIHN0YXJ0X2NvbmQ6CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzdGFydGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29uZC53YWl0KCkKKyAgICAgICAgICAgICAgICBsb29wKHN0YXJ0X3RpbWUsIGR1cmF0aW9uICogMS41LCBlbmRfZXZlbnQsIGRvX3lpZWxkPUZhbHNlKQorCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShudGhyZWFkcyk6CisgICAgICAgICAgICAgICAgdGhyZWFkcy5hcHBlbmQodGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuKSkKKyAgICAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhyZWFkcyB0byBiZSByZWFkeQogICAgICAgICAgICAgd2l0aCByZWFkeV9jb25kOgotICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZChOb25lKQotICAgICAgICAgICAgICAgIHJlYWR5X2NvbmQubm90aWZ5KCkKLSAgICAgICAgICAgIHdpdGggc3RhcnRfY29uZDoKLSAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc3RhcnRlZDoKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRfY29uZC53YWl0KCkKLSAgICAgICAgICAgIGxvb3Aoc3RhcnRfdGltZSwgZHVyYXRpb24gKiAxLjUsIGVuZF9ldmVudCwgZG9feWllbGQ9RmFsc2UpCisgICAgICAgICAgICAgICAgd2hpbGUgbGVuKHJlYWR5KSA8IG50aHJlYWRzOgorICAgICAgICAgICAgICAgICAgICByZWFkeV9jb25kLndhaXQoKQogCi0gICAgICAgIGZvciBpIGluIHJhbmdlKG50aHJlYWRzKToKLSAgICAgICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bikpCi0gICAgICAgIGZvciB0IGluIHRocmVhZHM6Ci0gICAgICAgICAgICB0LnNldERhZW1vbihUcnVlKQotICAgICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgICMgV2FpdCBmb3IgdGhyZWFkcyB0byBiZSByZWFkeQotICAgICAgICB3aXRoIHJlYWR5X2NvbmQ6Ci0gICAgICAgICAgICB3aGlsZSBsZW4ocmVhZHkpIDwgbnRocmVhZHM6Ci0gICAgICAgICAgICAgICAgcmVhZHlfY29uZC53YWl0KCkKLQotICAgICMgUnVuIHRoZSBjbGllbnQgYW5kIHdhaXQgZm9yIHRoZSBmaXJzdCBwYWNrZXQgdG8gYXJyaXZlIGJlZm9yZQotICAgICMgdW5ibG9ja2luZyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzLgotICAgIHByb2Nlc3MgPSBydW5fYmFuZHdpZHRoX2NsaWVudChhZGRyPWFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplPXBhY2tldF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1kdXJhdGlvbikKLSAgICBfdGltZSA9IHRpbWUudGltZQotICAgICMgVGhpcyB3aWxsIGFsc28gd2FpdCBmb3IgdGhlIHBhcmVudCB0byBiZSByZWFkeQotICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKLSAgICByZW1vdGVfYWRkciA9IGV2YWwocy5wYXJ0aXRpb24oJyMnKVswXSkKLQotICAgIHdpdGggc3RhcnRfY29uZDoKLSAgICAgICAgc3RhcnRfdGltZSA9IF90aW1lKCkKLSAgICAgICAgc3RhcnRlZCA9IFRydWUKLSAgICAgICAgc3RhcnRfY29uZC5ub3RpZnkobnRocmVhZHMpCi0KLSAgICBuID0gMAotICAgIGZpcnN0X3RpbWUgPSBOb25lCi0gICAgd2hpbGUgbm90IGVuZF9ldmVudCBhbmQgQldfRU5EIG5vdCBpbiBzOgotICAgICAgICBfc2VuZHRvKHNvY2ssIHMsIHJlbW90ZV9hZGRyKQorICAgICAgICAjIFJ1biB0aGUgY2xpZW50IGFuZCB3YWl0IGZvciB0aGUgZmlyc3QgcGFja2V0IHRvIGFycml2ZSBiZWZvcmUKKyAgICAgICAgIyB1bmJsb2NraW5nIHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMuCisgICAgICAgIHByb2Nlc3MgPSBydW5fYmFuZHdpZHRoX2NsaWVudChhZGRyPWFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZT1wYWNrZXRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uPWR1cmF0aW9uKQorICAgICAgICBfdGltZSA9IHRpbWUudGltZQorICAgICAgICAjIFRoaXMgd2lsbCBhbHNvIHdhaXQgZm9yIHRoZSBwYXJlbnQgdG8gYmUgcmVhZHkKICAgICAgICAgcyA9IF9yZWN2KHNvY2ssIHBhY2tldF9zaXplKQotICAgICAgICBpZiBmaXJzdF90aW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBmaXJzdF90aW1lID0gX3RpbWUoKQotICAgICAgICBuICs9IDEKLSAgICBlbmRfdGltZSA9IF90aW1lKCkKKyAgICAgICAgcmVtb3RlX2FkZHIgPSBldmFsKHMucGFydGl0aW9uKCcjJylbMF0pCisKKyAgICAgICAgd2l0aCBzdGFydF9jb25kOgorICAgICAgICAgICAgc3RhcnRfdGltZSA9IF90aW1lKCkKKyAgICAgICAgICAgIHN0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICBzdGFydF9jb25kLm5vdGlmeShudGhyZWFkcykKKworICAgICAgICBuID0gMAorICAgICAgICBmaXJzdF90aW1lID0gTm9uZQorICAgICAgICB3aGlsZSBub3QgZW5kX2V2ZW50IGFuZCBCV19FTkQgbm90IGluIHM6CisgICAgICAgICAgICBfc2VuZHRvKHNvY2ssIHMsIHJlbW90ZV9hZGRyKQorICAgICAgICAgICAgcyA9IF9yZWN2KHNvY2ssIHBhY2tldF9zaXplKQorICAgICAgICAgICAgaWYgZmlyc3RfdGltZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZpcnN0X3RpbWUgPSBfdGltZSgpCisgICAgICAgICAgICBuICs9IDEKKyAgICAgICAgZW5kX3RpbWUgPSBfdGltZSgpCiAKICAgICBlbmRfZXZlbnQuYXBwZW5kKE5vbmUpCiAgICAgZm9yIHQgaW4gdGhyZWFkczoKZGlmZiAtLWdpdCBhL1Rvb2xzL2RlbW8vbGlmZS5weSBiL1Rvb2xzL2RlbW8vbGlmZS5weQppbmRleCBkZmI5YWI4Li5mYzRjYjQ5IDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL2xpZmUucHkKKysrIGIvVG9vbHMvZGVtby9saWZlLnB5CkBAIC00NiwzOCArNDYsMzggQEAKICAgICAgICAgc2VsZi5zdGF0ZSA9IHt9CiAgICAgICAgIHNlbGYuc2NyID0gc2NyCiAgICAgICAgIFksIFggPSBzZWxmLnNjci5nZXRtYXh5eCgpCi0gICAgICAgIHNlbGYuWCwgc2VsZi5ZID0gWC0yLCBZLTItMQorICAgICAgICBzZWxmLlgsIHNlbGYuWSA9IFggLSAyLCBZIC0gMiAtIDEKICAgICAgICAgc2VsZi5jaGFyID0gY2hhcgogICAgICAgICBzZWxmLnNjci5jbGVhcigpCiAKICAgICAgICAgIyBEcmF3IGEgYm9yZGVyIGFyb3VuZCB0aGUgYm9hcmQKLSAgICAgICAgYm9yZGVyX2xpbmUgPSAnKycrKHNlbGYuWConLScpKycrJworICAgICAgICBib3JkZXJfbGluZSA9ICcrJyArIChzZWxmLlggKiAnLScpICsgJysnCiAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigwLCAwLCBib3JkZXJfbGluZSkKLSAgICAgICAgc2VsZi5zY3IuYWRkc3RyKHNlbGYuWSsxLCAwLCBib3JkZXJfbGluZSkKKyAgICAgICAgc2VsZi5zY3IuYWRkc3RyKHNlbGYuWSArIDEsIDAsIGJvcmRlcl9saW5lKQogICAgICAgICBmb3IgeSBpbiByYW5nZSgwLCBzZWxmLlkpOgotICAgICAgICAgICAgc2VsZi5zY3IuYWRkc3RyKDEreSwgMCwgJ3wnKQotICAgICAgICAgICAgc2VsZi5zY3IuYWRkc3RyKDEreSwgc2VsZi5YKzEsICd8JykKKyAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxICsgeSwgMCwgJ3wnKQorICAgICAgICAgICAgc2VsZi5zY3IuYWRkc3RyKDEgKyB5LCBzZWxmLlggKyAxLCAnfCcpCiAgICAgICAgIHNlbGYuc2NyLnJlZnJlc2goKQogCiAgICAgZGVmIHNldChzZWxmLCB5LCB4KToKICAgICAgICAgIiIiU2V0IGEgY2VsbCB0byB0aGUgbGl2ZSBzdGF0ZSIiIgotICAgICAgICBpZiB4PDAgb3Igc2VsZi5YPD14IG9yIHk8MCBvciBzZWxmLlk8PXk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiJSAoeSwgeCkpCi0gICAgICAgIHNlbGYuc3RhdGVbeCx5XSA9IDEKKyAgICAgICAgaWYgeCA8IDAgb3Igc2VsZi5YIDw9IHggb3IgeSA8IDAgb3Igc2VsZi5ZIDw9IHk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiICUgKHksIHgpKQorICAgICAgICBzZWxmLnN0YXRlW3gsIHldID0gMQogCiAgICAgZGVmIHRvZ2dsZShzZWxmLCB5LCB4KToKICAgICAgICAgIiIiVG9nZ2xlIGEgY2VsbCdzIHN0YXRlIGJldHdlZW4gbGl2ZSBhbmQgZGVhZCIiIgogICAgICAgICBpZiB4IDwgMCBvciBzZWxmLlggPD0geCBvciB5IDwgMCBvciBzZWxmLlkgPD0geToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvb3JkaW5hdGVzIG91dCBvZiByYW5nZSAlaSwlaSIlICh5LCB4KSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvb3JkaW5hdGVzIG91dCBvZiByYW5nZSAlaSwlaSIgJSAoeSwgeCkpCiAgICAgICAgIGlmICh4LCB5KSBpbiBzZWxmLnN0YXRlOgogICAgICAgICAgICAgZGVsIHNlbGYuc3RhdGVbeCwgeV0KLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKHkrMSwgeCsxLCAnICcpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5ICsgMSwgeCArIDEsICcgJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc3RhdGVbeCwgeV0gPSAxCiAgICAgICAgICAgICBpZiBjdXJzZXMuaGFzX2NvbG9ycygpOgogICAgICAgICAgICAgICAgICMgTGV0J3MgcGljayBhIHJhbmRvbSBjb2xvciEKICAgICAgICAgICAgICAgICBzZWxmLnNjci5hdHRyc2V0KGN1cnNlcy5jb2xvcl9wYWlyKHJhbmRvbS5yYW5kcmFuZ2UoMSwgNykpKQotICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goeSsxLCB4KzEsIHNlbGYuY2hhcikKKyAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKHkgKyAxLCB4ICsgMSwgc2VsZi5jaGFyKQogICAgICAgICAgICAgc2VsZi5zY3IuYXR0cnNldCgwKQogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKIApAQCAtODgsNDMgKzg4LDQ2IEBACiAKICAgICBkZWYgZGlzcGxheShzZWxmLCB1cGRhdGVfYm9hcmQ9VHJ1ZSk6CiAgICAgICAgICIiIkRpc3BsYXkgdGhlIHdob2xlIGJvYXJkLCBvcHRpb25hbGx5IGNvbXB1dGluZyBvbmUgZ2VuZXJhdGlvbiIiIgotICAgICAgICBNLE4gPSBzZWxmLlgsIHNlbGYuWQorICAgICAgICBNLCBOID0gc2VsZi5YLCBzZWxmLlkKICAgICAgICAgaWYgbm90IHVwZGF0ZV9ib2FyZDoKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIE0pOgogICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIE4pOgotICAgICAgICAgICAgICAgICAgICBpZiAoaSxqKSBpbiBzZWxmLnN0YXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaisxLCBpKzEsIHNlbGYuY2hhcikKKyAgICAgICAgICAgICAgICAgICAgaWYgKGksIGopIGluIHNlbGYuc3RhdGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqICsgMSwgaSArIDEsIHNlbGYuY2hhcikKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCAnICcpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqICsgMSwgaSArIDEsICcgJykKICAgICAgICAgICAgIHNlbGYuc2NyLnJlZnJlc2goKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZCA9IHt9CiAgICAgICAgIHNlbGYuYm9yaW5nID0gMQogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBNKToKLSAgICAgICAgICAgIEwgPSByYW5nZSggbWF4KDAsIGktMSksIG1pbihNLCBpKzIpICkKKyAgICAgICAgICAgIEwgPSByYW5nZShtYXgoMCwgaSAtIDEpLCBtaW4oTSwgaSArIDIpKQogICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoMCwgTik6CiAgICAgICAgICAgICAgICAgcyA9IDAKLSAgICAgICAgICAgICAgICBsaXZlID0gKGksaikgaW4gc2VsZi5zdGF0ZQotICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKCBtYXgoMCwgai0xKSwgbWluKE4sIGorMikgKToKKyAgICAgICAgICAgICAgICBsaXZlID0gKGksIGopIGluIHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShtYXgoMCwgaiAtIDEpLCBtaW4oTiwgaiArIDIpKToKICAgICAgICAgICAgICAgICAgICAgZm9yIGwgaW4gTDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLGspIGluIHNlbGYuc3RhdGU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCwgaykgaW4gc2VsZi5zdGF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICs9IDEKICAgICAgICAgICAgICAgICBzIC09IGxpdmUKICAgICAgICAgICAgICAgICBpZiBzID09IDM6CiAgICAgICAgICAgICAgICAgICAgICMgQmlydGgKLSAgICAgICAgICAgICAgICAgICAgZFtpLGpdID0gMQorICAgICAgICAgICAgICAgICAgICBkW2ksIGpdID0gMQogICAgICAgICAgICAgICAgICAgICBpZiBjdXJzZXMuaGFzX2NvbG9ycygpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBMZXQncyBwaWNrIGEgcmFuZG9tIGNvbG9yIQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYXR0cnNldChjdXJzZXMuY29sb3JfcGFpcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20ucmFuZHJhbmdlKDEsIDcpKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaisxLCBpKzEsIHNlbGYuY2hhcikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCBzZWxmLmNoYXIpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoMCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpdmU6IHNlbGYuYm9yaW5nID0gMAotICAgICAgICAgICAgICAgIGVsaWYgcyA9PSAyIGFuZCBsaXZlOiBkW2ksal0gPSAxICAgICAgICMgU3Vydml2YWwKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpdmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJvcmluZyA9IDAKKyAgICAgICAgICAgICAgICBlbGlmIHMgPT0gMiBhbmQgbGl2ZToKKyAgICAgICAgICAgICAgICAgICAgIyBTdXJ2aXZhbAorICAgICAgICAgICAgICAgICAgICBkW2ksIGpdID0gMQogICAgICAgICAgICAgICAgIGVsaWYgbGl2ZToKICAgICAgICAgICAgICAgICAgICAgIyBEZWF0aAotICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqKzEsIGkrMSwgJyAnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqICsgMSwgaSArIDEsICcgJykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib3JpbmcgPSAwCiAgICAgICAgIHNlbGYuc3RhdGUgPSBkCiAgICAgICAgIHNlbGYuc2NyLnJlZnJlc2goKQpAQCAtMTM1LDE2ICsxMzgsMTcgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgc2VsZi5YKToKICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIHNlbGYuWSk6CiAgICAgICAgICAgICAgICAgaWYgcmFuZG9tLnJhbmRvbSgpID4gMC41OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNldChqLGkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0KGosIGkpCiAKIAogZGVmIGVyYXNlX21lbnUoc3Rkc2NyLCBtZW51X3kpOgogICAgICJDbGVhciB0aGUgc3BhY2Ugd2hlcmUgdGhlIG1lbnUgcmVzaWRlcyIKICAgICBzdGRzY3IubW92ZShtZW51X3ksIDApCiAgICAgc3Rkc2NyLmNscnRvZW9sKCkKLSAgICBzdGRzY3IubW92ZShtZW51X3krMSwgMCkKKyAgICBzdGRzY3IubW92ZShtZW51X3kgKyAxLCAwKQogICAgIHN0ZHNjci5jbHJ0b2VvbCgpCiAKKwogZGVmIGRpc3BsYXlfbWVudShzdGRzY3IsIG1lbnVfeSk6CiAgICAgIkRpc3BsYXkgdGhlIG1lbnUgb2YgcG9zc2libGUga2V5c3Ryb2tlIGNvbW1hbmRzIgogICAgIGVyYXNlX21lbnUoc3Rkc2NyLCBtZW51X3kpCkBAIC0xNTQsMTUgKzE1OCwxNiBAQAogICAgICAgICBzdGRzY3IuYXR0cnNldChjdXJzZXMuY29sb3JfcGFpcigxKSkKICAgICBzdGRzY3IuYWRkc3RyKG1lbnVfeSwgNCwKICAgICAgICAgJ1VzZSB0aGUgY3Vyc29yIGtleXMgdG8gbW92ZSwgYW5kIHNwYWNlIG9yIEVudGVyIHRvIHRvZ2dsZSBhIGNlbGwuJykKLSAgICBzdGRzY3IuYWRkc3RyKG1lbnVfeSsxLCA0LAorICAgIHN0ZHNjci5hZGRzdHIobWVudV95ICsgMSwgNCwKICAgICAgICAgJ0UpcmFzZSB0aGUgYm9hcmQsIFIpYW5kb20gZmlsbCwgUyl0ZXAgb25jZSBvciBDKW9udGludW91c2x5LCBRKXVpdCcpCiAgICAgc3Rkc2NyLmF0dHJzZXQoMCkKIAorCiBkZWYga2V5bG9vcChzdGRzY3IpOgogICAgICMgQ2xlYXIgdGhlIHNjcmVlbiBhbmQgZGlzcGxheSB0aGUgbWVudSBvZiBrZXlzCiAgICAgc3Rkc2NyLmNsZWFyKCkKICAgICBzdGRzY3JfeSwgc3Rkc2NyX3ggPSBzdGRzY3IuZ2V0bWF4eXgoKQotICAgIG1lbnVfeSA9IChzdGRzY3JfeS0zKS0xCisgICAgbWVudV95ID0gKHN0ZHNjcl95IC0gMykgLSAxCiAgICAgZGlzcGxheV9tZW51KHN0ZHNjciwgbWVudV95KQogCiAgICAgIyBJZiBjb2xvciwgdGhlbiBpbml0aWFsaXplIHRoZSBjb2xvciBwYWlycwpAQCAtMTc5LDE2ICsxODQsMTYgQEAKICAgICBjdXJzZXMubW91c2VtYXNrKGN1cnNlcy5CVVRUT04xX0NMSUNLRUQpCiAKICAgICAjIEFsbG9jYXRlIGEgc3Vid2luZG93IGZvciB0aGUgTGlmZSBib2FyZCBhbmQgY3JlYXRlIHRoZSBib2FyZCBvYmplY3QKLSAgICBzdWJ3aW4gPSBzdGRzY3Iuc3Vid2luKHN0ZHNjcl95LTMsIHN0ZHNjcl94LCAwLCAwKQorICAgIHN1YndpbiA9IHN0ZHNjci5zdWJ3aW4oc3Rkc2NyX3kgLSAzLCBzdGRzY3JfeCwgMCwgMCkKICAgICBib2FyZCA9IExpZmVCb2FyZChzdWJ3aW4sIGNoYXI9b3JkKCcqJykpCiAgICAgYm9hcmQuZGlzcGxheSh1cGRhdGVfYm9hcmQ9RmFsc2UpCiAKICAgICAjIHhwb3MsIHlwb3MgYXJlIHRoZSBjdXJzb3IncyBwb3NpdGlvbgotICAgIHhwb3MsIHlwb3MgPSBib2FyZC5YLy8yLCBib2FyZC5ZLy8yCisgICAgeHBvcywgeXBvcyA9IGJvYXJkLlggLy8gMiwgYm9hcmQuWSAvLyAyCiAKICAgICAjIE1haW4gbG9vcDoKICAgICB3aGlsZSBUcnVlOgotICAgICAgICBzdGRzY3IubW92ZSgxK3lwb3MsIDEreHBvcykgICAgICMgTW92ZSB0aGUgY3Vyc29yCisgICAgICAgIHN0ZHNjci5tb3ZlKDEgKyB5cG9zLCAxICsgeHBvcykgICAjIE1vdmUgdGhlIGN1cnNvcgogICAgICAgICBjID0gc3Rkc2NyLmdldGNoKCkgICAgICAgICAgICAgICAgIyBHZXQgYSBrZXlzdHJva2UKICAgICAgICAgaWYgMCA8IGMgPCAyNTY6CiAgICAgICAgICAgICBjID0gY2hyKGMpCkBAIC0yMjQsMTUgKzIyOSwyMSBAQAogICAgICAgICAgICAgICAgIGJvYXJkLmRpc3BsYXkodXBkYXRlX2JvYXJkPUZhbHNlKQogICAgICAgICAgICAgZWxpZiBjIGluICdTcyc6CiAgICAgICAgICAgICAgICAgYm9hcmQuZGlzcGxheSgpCi0gICAgICAgICAgICBlbHNlOiBwYXNzICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgaW5jb3JyZWN0IGtleXMKLSAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfVVAgYW5kIHlwb3MgPiAwOiAgICAgICAgICAgIHlwb3MgLT0gMQotICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9ET1dOIGFuZCB5cG9zIDwgYm9hcmQuWS0xOiAgeXBvcyArPSAxCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX0xFRlQgYW5kIHhwb3MgPiAwOiAgICAgICAgICB4cG9zIC09IDEKLSAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfUklHSFQgYW5kIHhwb3MgPCBib2FyZC5YLTE6IHhwb3MgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIElnbm9yZSBpbmNvcnJlY3Qga2V5cworICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfVVAgYW5kIHlwb3MgPiAwOgorICAgICAgICAgICAgeXBvcyAtPSAxCisgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX0RPV04gYW5kIHlwb3MgKyAxIDwgYm9hcmQuWToKKyAgICAgICAgICAgIHlwb3MgKz0gMQorICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9MRUZUIGFuZCB4cG9zID4gMDoKKyAgICAgICAgICAgIHhwb3MgLT0gMQorICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9SSUdIVCBhbmQgeHBvcyArIDEgPCBib2FyZC5YOgorICAgICAgICAgICAgeHBvcyArPSAxCiAgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX01PVVNFOgogICAgICAgICAgICAgbW91c2VfaWQsIG1vdXNlX3gsIG1vdXNlX3ksIG1vdXNlX3osIGJ1dHRvbl9zdGF0ZSA9IGN1cnNlcy5nZXRtb3VzZSgpCi0gICAgICAgICAgICBpZiAobW91c2VfeCA+IDAgYW5kIG1vdXNlX3ggPCBib2FyZC5YKzEgYW5kCi0gICAgICAgICAgICAgICAgbW91c2VfeSA+IDAgYW5kIG1vdXNlX3kgPCBib2FyZC5ZKzEpOgorICAgICAgICAgICAgaWYgKG1vdXNlX3ggPiAwIGFuZCBtb3VzZV94IDwgYm9hcmQuWCArIDEgYW5kCisgICAgICAgICAgICAgICAgbW91c2VfeSA+IDAgYW5kIG1vdXNlX3kgPCBib2FyZC5ZICsgMSk6CiAgICAgICAgICAgICAgICAgeHBvcyA9IG1vdXNlX3ggLSAxCiAgICAgICAgICAgICAgICAgeXBvcyA9IG1vdXNlX3kgLSAxCiAgICAgICAgICAgICAgICAgYm9hcmQudG9nZ2xlKHlwb3MsIHhwb3MpCkBAIC0yNDUsNyArMjU2LDcgQEAKIAogCiBkZWYgbWFpbihzdGRzY3IpOgotICAgIGtleWxvb3Aoc3Rkc2NyKSAgICAgICAgICAgICAgICAgICAgIyBFbnRlciB0aGUgbWFpbiBsb29wCisgICAga2V5bG9vcChzdGRzY3IpICAgICAgICAgICAgICAgICAjIEVudGVyIHRoZSBtYWluIGxvb3AKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBjdXJzZXMud3JhcHBlcihtYWluKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9zczEucHkgYi9Ub29scy9kZW1vL3NzMS5weQppbmRleCA0Y2VhNjY3Li43MWM5YmU4IDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL3NzMS5weQorKysgYi9Ub29scy9kZW1vL3NzMS5weQpAQCAtODEyLDcgKzgxMiw2IEBACiAKIGRlZiB0ZXN0X2Jhc2ljKCk6CiAgICAgIkJhc2ljIG5vbi1ndWkgc2VsZi10ZXN0LiIKLSAgICBpbXBvcnQgb3MKICAgICBhID0gU2hlZXQoKQogICAgIGZvciB4IGluIHJhbmdlKDEsIDExKToKICAgICAgICAgZm9yIHkgaW4gcmFuZ2UoMSwgMTEpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weSBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKaW5kZXggOGJiYmIxMC4uMzY4YTdkNSAxMDA2NDQKLS0tIGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQorKysgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CkBAIC00OSw2ICs0OSwxMSBAQAogX3R5cGVfY2hhcl9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ2NoYXInKS5wb2ludGVyKCkgIyBjaGFyKgogX3R5cGVfdW5zaWduZWRfY2hhcl9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ3Vuc2lnbmVkIGNoYXInKS5wb2ludGVyKCkgIyB1bnNpZ25lZCBjaGFyKgogX3R5cGVfdm9pZF9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ3ZvaWQnKS5wb2ludGVyKCkgIyB2b2lkKgorX3R5cGVfdW5zaWduZWRfc2hvcnRfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd1bnNpZ25lZCBzaG9ydCcpLnBvaW50ZXIoKQorX3R5cGVfdW5zaWduZWRfaW50X3B0ciA9IGdkYi5sb29rdXBfdHlwZSgndW5zaWduZWQgaW50JykucG9pbnRlcigpCisKKyMgdmFsdWUgY29tcHV0ZWQgbGF0ZXIsIHNlZSBQeVVuaWNvZGVPYmplY3RQdHIucHJveHkoKQorX2lzX3BlcDM5MyA9IE5vbmUKIAogU0laRU9GX1ZPSURfUCA9IF90eXBlX3ZvaWRfcHRyLnNpemVvZgogCkBAIC0zMjIsNyArMzI3LDYgQEAKIAogICAgICAgICBuYW1lX21hcCA9IHsnYm9vbCc6IFB5Qm9vbE9iamVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzb2JqJzogUHlDbGFzc09iamVjdFB0ciwKLSAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlJzogUHlJbnN0YW5jZU9iamVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ05vbmVUeXBlJzogUHlOb25lU3RydWN0UHRyLAogICAgICAgICAgICAgICAgICAgICAnZnJhbWUnOiBQeUZyYW1lT2JqZWN0UHRyLAogICAgICAgICAgICAgICAgICAgICAnc2V0JyA6IFB5U2V0T2JqZWN0UHRyLApAQCAtMzk2LDcgKzQwMCw3IEBACiAKIAogZGVmIF93cml0ZV9pbnN0YW5jZV9yZXByKG91dCwgdmlzaXRlZCwgbmFtZSwgcHlvcF9hdHRyZGljdCwgYWRkcmVzcyk6Ci0gICAgJycnU2hhcmVkIGNvZGUgZm9yIHVzZSBieSBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBjbGFzc2VzOgorICAgICcnJ1NoYXJlZCBjb2RlIGZvciB1c2UgYnkgYWxsIGNsYXNzZXM6CiAgICAgd3JpdGUgYSByZXByZXNlbnRhdGlvbiB0byBmaWxlLWxpa2Ugb2JqZWN0ICJvdXQiJycnCiAgICAgb3V0LndyaXRlKCc8JykKICAgICBvdXQud3JpdGUobmFtZSkKQEAgLTQ3OSw3ICs0ODMsNyBAQAogCiAgICAgZGVmIHByb3h5dmFsKHNlbGYsIHZpc2l0ZWQpOgogICAgICAgICAnJycKLSAgICAgICAgU3VwcG9ydCBmb3IgbmV3LXN0eWxlIGNsYXNzZXMuCisgICAgICAgIFN1cHBvcnQgZm9yIGNsYXNzZXMuCiAKICAgICAgICAgQ3VycmVudGx5IHdlIGp1c3QgbG9jYXRlIHRoZSBkaWN0aW9uYXJ5IHVzaW5nIGEgdHJhbnNsaXRlcmF0aW9uIHRvCiAgICAgICAgIHB5dGhvbiBvZiBfUHlPYmplY3RfR2V0RGljdFB0ciwgaWdub3JpbmcgZGVzY3JpcHRvcnMKQEAgLTQ5Niw3ICs1MDAsNyBAQAogICAgICAgICAgICAgYXR0cl9kaWN0ID0ge30KICAgICAgICAgdHBfbmFtZSA9IHNlbGYuc2FmZV90cF9uYW1lKCkKIAotICAgICAgICAjIE5ldy1zdHlsZSBjbGFzczoKKyAgICAgICAgIyBDbGFzczoKICAgICAgICAgcmV0dXJuIEluc3RhbmNlUHJveHkodHBfbmFtZSwgYXR0cl9kaWN0LCBsb25nKHNlbGYuX2dkYnZhbCkpCiAKICAgICBkZWYgd3JpdGVfcmVwcihzZWxmLCBvdXQsIHZpc2l0ZWQpOgpAQCAtNjMwLDkgKzYzNCwxNCBAQAogICAgICAgICBZaWVsZHMgYSBzZXF1ZW5jZSBvZiAoUHlPYmplY3RQdHIga2V5LCBQeU9iamVjdFB0ciB2YWx1ZSkgcGFpcnMsCiAgICAgICAgIGFuYWxhZ291cyB0byBkaWN0Lml0ZXJpdGVtcygpCiAgICAgICAgICcnJwotICAgICAgICBmb3IgaSBpbiBzYWZlX3JhbmdlKHNlbGYuZmllbGQoJ21hX21hc2snKSArIDEpOgotICAgICAgICAgICAgZXAgPSBzZWxmLmZpZWxkKCdtYV90YWJsZScpICsgaQotICAgICAgICAgICAgcHlvcF92YWx1ZSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKGVwWydtZV92YWx1ZSddKQorICAgICAgICBrZXlzID0gc2VsZi5maWVsZCgnbWFfa2V5cycpCisgICAgICAgIHZhbHVlcyA9IHNlbGYuZmllbGQoJ21hX3ZhbHVlcycpCisgICAgICAgIGZvciBpIGluIHNhZmVfcmFuZ2Uoa2V5c1snZGtfc2l6ZSddKToKKyAgICAgICAgICAgIGVwID0ga2V5c1snZGtfZW50cmllcyddLmFkZHJlc3MgKyBpCisgICAgICAgICAgICBpZiBsb25nKHZhbHVlcyk6CisgICAgICAgICAgICAgICAgcHlvcF92YWx1ZSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKHZhbHVlc1tpXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHlvcF92YWx1ZSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKGVwWydtZV92YWx1ZSddKQogICAgICAgICAgICAgaWYgbm90IHB5b3BfdmFsdWUuaXNfbnVsbCgpOgogICAgICAgICAgICAgICAgIHB5b3Bfa2V5ID0gUHlPYmplY3RQdHIuZnJvbV9weW9iamVjdF9wdHIoZXBbJ21lX2tleSddKQogICAgICAgICAgICAgICAgIHlpZWxkIChweW9wX2tleSwgcHlvcF92YWx1ZSkKQEAgLTY2OCw0NCArNjc3LDYgQEAKICAgICAgICAgICAgIHB5b3BfdmFsdWUud3JpdGVfcmVwcihvdXQsIHZpc2l0ZWQpCiAgICAgICAgIG91dC53cml0ZSgnfScpCiAKLWNsYXNzIFB5SW5zdGFuY2VPYmplY3RQdHIoUHlPYmplY3RQdHIpOgotICAgIF90eXBlbmFtZSA9ICdQeUluc3RhbmNlT2JqZWN0JwotCi0gICAgZGVmIHByb3h5dmFsKHNlbGYsIHZpc2l0ZWQpOgotICAgICAgICAjIEd1YXJkIGFnYWluc3QgaW5maW5pdGUgbG9vcHM6Ci0gICAgICAgIGlmIHNlbGYuYXNfYWRkcmVzcygpIGluIHZpc2l0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gUHJveHlBbHJlYWR5VmlzaXRlZCgnPC4uLj4nKQotICAgICAgICB2aXNpdGVkLmFkZChzZWxmLmFzX2FkZHJlc3MoKSkKLQotICAgICAgICAjIEdldCBuYW1lIG9mIGNsYXNzOgotICAgICAgICBpbl9jbGFzcyA9IHNlbGYucHlvcF9maWVsZCgnaW5fY2xhc3MnKQotICAgICAgICBjbF9uYW1lID0gaW5fY2xhc3MucHlvcF9maWVsZCgnY2xfbmFtZScpLnByb3h5dmFsKHZpc2l0ZWQpCi0KLSAgICAgICAgIyBHZXQgZGljdGlvbmFyeSBvZiBpbnN0YW5jZSBhdHRyaWJ1dGVzOgotICAgICAgICBpbl9kaWN0ID0gc2VsZi5weW9wX2ZpZWxkKCdpbl9kaWN0JykucHJveHl2YWwodmlzaXRlZCkKLQotICAgICAgICAjIE9sZC1zdHlsZSBjbGFzczoKLSAgICAgICAgcmV0dXJuIEluc3RhbmNlUHJveHkoY2xfbmFtZSwgaW5fZGljdCwgbG9uZyhzZWxmLl9nZGJ2YWwpKQotCi0gICAgZGVmIHdyaXRlX3JlcHIoc2VsZiwgb3V0LCB2aXNpdGVkKToKLSAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzOgotICAgICAgICBpZiBzZWxmLmFzX2FkZHJlc3MoKSBpbiB2aXNpdGVkOgotICAgICAgICAgICAgb3V0LndyaXRlKCc8Li4uPicpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdmlzaXRlZC5hZGQoc2VsZi5hc19hZGRyZXNzKCkpCi0KLSAgICAgICAgIyBPbGQtc3R5bGUgY2xhc3M6Ci0KLSAgICAgICAgIyBHZXQgbmFtZSBvZiBjbGFzczoKLSAgICAgICAgaW5fY2xhc3MgPSBzZWxmLnB5b3BfZmllbGQoJ2luX2NsYXNzJykKLSAgICAgICAgY2xfbmFtZSA9IGluX2NsYXNzLnB5b3BfZmllbGQoJ2NsX25hbWUnKS5wcm94eXZhbCh2aXNpdGVkKQotCi0gICAgICAgICMgR2V0IGRpY3Rpb25hcnkgb2YgaW5zdGFuY2UgYXR0cmlidXRlczoKLSAgICAgICAgcHlvcF9pbl9kaWN0ID0gc2VsZi5weW9wX2ZpZWxkKCdpbl9kaWN0JykKLQotICAgICAgICBfd3JpdGVfaW5zdGFuY2VfcmVwcihvdXQsIHZpc2l0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsX25hbWUsIHB5b3BfaW5fZGljdCwgc2VsZi5hc19hZGRyZXNzKCkpCi0KIGNsYXNzIFB5TGlzdE9iamVjdFB0cihQeU9iamVjdFB0cik6CiAgICAgX3R5cGVuYW1lID0gJ1B5TGlzdE9iamVjdCcKIApAQCAtMTEyMywxNSArMTA5NCw0NiBAQAogICAgICAgICByZXR1cm4gX3R5cGVfUHlfVU5JQ09ERS5zaXplb2YKIAogICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKLSAgICAgICAgIyBGcm9tIHVuaWNvZGVvYmplY3QuaDoKLSAgICAgICAgIyAgICAgUHlfc3NpemVfdCBsZW5ndGg7ICAvKiBMZW5ndGggb2YgcmF3IFVuaWNvZGUgZGF0YSBpbiBidWZmZXIgKi8KLSAgICAgICAgIyAgICAgUHlfVU5JQ09ERSAqc3RyOyAgICAvKiBSYXcgVW5pY29kZSBidWZmZXIgKi8KLSAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhzZWxmLmZpZWxkKCdsZW5ndGgnKSkKLSAgICAgICAgZmllbGRfc3RyID0gc2VsZi5maWVsZCgnc3RyJykKKyAgICAgICAgZ2xvYmFsIF9pc19wZXAzOTMKKyAgICAgICAgaWYgX2lzX3BlcDM5MyBpcyBOb25lOgorICAgICAgICAgICAgZmllbGRzID0gZ2RiLmxvb2t1cF90eXBlKCdQeVVuaWNvZGVPYmplY3QnKS50YXJnZXQoKS5maWVsZHMoKQorICAgICAgICAgICAgX2lzX3BlcDM5MyA9ICdkYXRhJyBpbiBbZi5uYW1lIGZvciBmIGluIGZpZWxkc10KKyAgICAgICAgaWYgX2lzX3BlcDM5MzoKKyAgICAgICAgICAgICMgUHl0aG9uIDMuMyBhbmQgbmV3ZXIKKyAgICAgICAgICAgIG1heV9oYXZlX3N1cnJvZ2F0ZXMgPSBGYWxzZQorICAgICAgICAgICAgY29tcGFjdCA9IHNlbGYuZmllbGQoJ19iYXNlJykKKyAgICAgICAgICAgIGFzY2lpID0gY29tcGFjdFsnX2Jhc2UnXQorICAgICAgICAgICAgc3RhdGUgPSBhc2NpaVsnc3RhdGUnXQorICAgICAgICAgICAgaXNfY29tcGFjdF9hc2NpaSA9IChpbnQoc3RhdGVbJ2FzY2lpJ10pIGFuZCBpbnQoc3RhdGVbJ2NvbXBhY3QnXSkpCisgICAgICAgICAgICBpZiBub3QgaW50KHN0YXRlWydyZWFkeSddKToKKyAgICAgICAgICAgICAgICAjIHN0cmluZyBpcyBub3QgcmVhZHkKKyAgICAgICAgICAgICAgICBmaWVsZF9sZW5ndGggPSBsb25nKGNvbXBhY3RbJ3dzdHJfbGVuZ3RoJ10pCisgICAgICAgICAgICAgICAgbWF5X2hhdmVfc3Vycm9nYXRlcyA9IFRydWUKKyAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBhc2NpaVsnd3N0ciddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZpZWxkX2xlbmd0aCA9IGxvbmcoYXNjaWlbJ2xlbmd0aCddKQorICAgICAgICAgICAgICAgIGlmIGlzX2NvbXBhY3RfYXNjaWk6CisgICAgICAgICAgICAgICAgICAgIGZpZWxkX3N0ciA9IGFzY2lpLmFkZHJlc3MgKyAxCisgICAgICAgICAgICAgICAgZWxpZiBpbnQoc3RhdGVbJ2NvbXBhY3QnXSk6CisgICAgICAgICAgICAgICAgICAgIGZpZWxkX3N0ciA9IGNvbXBhY3QuYWRkcmVzcyArIDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBzZWxmLmZpZWxkKCdkYXRhJylbJ2FueSddCisgICAgICAgICAgICAgICAgcmVwcl9raW5kID0gaW50KHN0YXRlWydraW5kJ10pCisgICAgICAgICAgICAgICAgaWYgcmVwcl9raW5kID09IDE6CisgICAgICAgICAgICAgICAgICAgIGZpZWxkX3N0ciA9IGZpZWxkX3N0ci5jYXN0KF90eXBlX3Vuc2lnbmVkX2NoYXJfcHRyKQorICAgICAgICAgICAgICAgIGVsaWYgcmVwcl9raW5kID09IDI6CisgICAgICAgICAgICAgICAgICAgIGZpZWxkX3N0ciA9IGZpZWxkX3N0ci5jYXN0KF90eXBlX3Vuc2lnbmVkX3Nob3J0X3B0cikKKyAgICAgICAgICAgICAgICBlbGlmIHJlcHJfa2luZCA9PSA0OgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9pbnRfcHRyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBQeXRob24gMy4yIGFuZCBlYXJsaWVyCisgICAgICAgICAgICBmaWVsZF9sZW5ndGggPSBsb25nKHNlbGYuZmllbGQoJ2xlbmd0aCcpKQorICAgICAgICAgICAgZmllbGRfc3RyID0gc2VsZi5maWVsZCgnc3RyJykKKyAgICAgICAgICAgIG1heV9oYXZlX3N1cnJvZ2F0ZXMgPSBzZWxmLmNoYXJfd2lkdGgoKSA9PSAyCiAKICAgICAgICAgIyBHYXRoZXIgYSBsaXN0IG9mIGludHMgZnJvbSB0aGUgUHlfVU5JQ09ERSBhcnJheTsgdGhlc2UgYXJlIGVpdGhlcgotICAgICAgICAjIFVDUy0yIG9yIFVDUy00IGNvZGUgcG9pbnRzOgotICAgICAgICBpZiBzZWxmLmNoYXJfd2lkdGgoKSA+IDI6CisgICAgICAgICMgVUNTLTEsIFVDUy0yIG9yIFVDUy00IGNvZGUgcG9pbnRzOgorICAgICAgICBpZiBub3QgbWF5X2hhdmVfc3Vycm9nYXRlczoKICAgICAgICAgICAgIFB5X1VOSUNPREVzID0gW2ludChmaWVsZF9zdHJbaV0pIGZvciBpIGluIHNhZmVfcmFuZ2UoZmllbGRfbGVuZ3RoKV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQSBtb3JlIGVsYWJvcmF0ZSByb3V0aW5lIGlmIHNpemVvZihQeV9VTklDT0RFKSBpcyAyIGluIHRoZQpAQCAtMTMzMCw3ICsxMzMyLDcgQEAKICAgL3Vzci9saWIvZGVidWcvdXNyL2xpYi9saWJweXRob24yLjYuc28uMS4wLmRlYnVnLWdkYi5weQogIiIiCiBkZWYgcmVnaXN0ZXIgKG9iaik6Ci0gICAgaWYgb2JqID09IE5vbmU6CisgICAgaWYgb2JqIGlzIE5vbmU6CiAgICAgICAgIG9iaiA9IGdkYgogCiAgICAgIyBXaXJlIHVwIHRoZSBwcmV0dHktcHJpbnRlcgpAQCAtMTM4OCw2ICsxMzkwLDIzIEBACiAgICAgICAgICAgICBpdGVyX2ZyYW1lID0gaXRlcl9mcmFtZS5uZXdlcigpCiAgICAgICAgIHJldHVybiBpbmRleAogCisgICAgIyBXZSBkaXZpZGUgZnJhbWVzIGludG86CisgICAgIyAgIC0gInB5dGhvbiBmcmFtZXMiOgorICAgICMgICAgICAgLSAiYnl0ZWNvZGUgZnJhbWVzIiBpLmUuIFB5RXZhbF9FdmFsRnJhbWVFeAorICAgICMgICAgICAgLSAib3RoZXIgcHl0aG9uIGZyYW1lcyI6IHRoaW5ncyB0aGF0IGFyZSBvZiBpbnRlcmVzdCBmcm9tIGEgcHl0aG9uCisgICAgIyAgICAgICAgIFBPViwgYnV0IGFyZW4ndCBieXRlY29kZSAoZS5nLiBHQywgR0lMKQorICAgICMgICAtIGV2ZXJ5dGhpbmcgZWxzZQorCisgICAgZGVmIGlzX3B5dGhvbl9mcmFtZShzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBhIFB5RXZhbF9FdmFsRnJhbWVFeCBmcmFtZSwgb3Igc29tZSBvdGhlciBpbXBvcnRhbnQKKyAgICAgICAgZnJhbWU/IChzZWUgaXNfb3RoZXJfcHl0aG9uX2ZyYW1lIGZvciB3aGF0ICJpbXBvcnRhbnQiIG1lYW5zIGluIHRoaXMKKyAgICAgICAgY29udGV4dCknJycKKyAgICAgICAgaWYgc2VsZi5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5pc19vdGhlcl9weXRob25fZnJhbWUoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIGlzX2V2YWxmcmFtZWV4KHNlbGYpOgogICAgICAgICAnJydJcyB0aGlzIGEgUHlFdmFsX0V2YWxGcmFtZUV4IGZyYW1lPycnJwogICAgICAgICBpZiBzZWxmLl9nZGJmcmFtZS5uYW1lKCkgPT0gJ1B5RXZhbF9FdmFsRnJhbWVFeCc6CkBAIC0xNDA0LDYgKzE0MjMsNDkgQEAKIAogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiBpc19vdGhlcl9weXRob25fZnJhbWUoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgZnJhbWUgd29ydGggZGlzcGxheWluZyBpbiBweXRob24gYmFja3RyYWNlcz8KKyAgICAgICAgRXhhbXBsZXM6CisgICAgICAgICAgLSB3YWl0aW5nIG9uIHRoZSBHSUwKKyAgICAgICAgICAtIGdhcmJhZ2UtY29sbGVjdGluZworICAgICAgICAgIC0gd2l0aGluIGEgQ0Z1bmN0aW9uCisgICAgICAgICBJZiBpdCBpcywgcmV0dXJuIGEgZGVzY3JpcHRpdmUgc3RyaW5nCisgICAgICAgICBGb3Igb3RoZXIgZnJhbWVzLCByZXR1cm4gRmFsc2UKKyAgICAgICAgICcnJworICAgICAgICBpZiBzZWxmLmlzX3dhaXRpbmdfZm9yX2dpbCgpOgorICAgICAgICAgICAgcmV0dXJuICdXYWl0aW5nIGZvciB0aGUgR0lMJworICAgICAgICBlbGlmIHNlbGYuaXNfZ2NfY29sbGVjdCgpOgorICAgICAgICAgICAgcmV0dXJuICdHYXJiYWdlLWNvbGxlY3RpbmcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIERldGVjdCBpbnZvY2F0aW9ucyBvZiBQeUNGdW5jdGlvbiBpbnN0YW5jZXM6CisgICAgICAgICAgICBvbGRlciA9IHNlbGYub2xkZXIoKQorICAgICAgICAgICAgaWYgb2xkZXIgYW5kIG9sZGVyLl9nZGJmcmFtZS5uYW1lKCkgPT0gJ1B5Q0Z1bmN0aW9uX0NhbGwnOgorICAgICAgICAgICAgICAgICMgV2l0aGluIHRoYXQgZnJhbWU6CisgICAgICAgICAgICAgICAgIyAgICJmdW5jIiBpcyB0aGUgbG9jYWwgY29udGFpbmluZyB0aGUgUHlPYmplY3QqIG9mIHRoZQorICAgICAgICAgICAgICAgICMgUHlDRnVuY3Rpb25PYmplY3QgaW5zdGFuY2UKKyAgICAgICAgICAgICAgICAjICAgImYiIGlzIHRoZSBzYW1lIHZhbHVlLCBidXQgY2FzdCB0byAoUHlDRnVuY3Rpb25PYmplY3QqKQorICAgICAgICAgICAgICAgICMgICAic2VsZiIgaXMgdGhlIChQeU9iamVjdCopIG9mIHRoZSAnc2VsZicKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgVXNlIHRoZSBwcmV0dHlwcmludGVyIGZvciB0aGUgZnVuYzoKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG9sZGVyLl9nZGJmcmFtZS5yZWFkX3ZhcignZnVuYycpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHIoZnVuYykKKyAgICAgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1B5Q0Z1bmN0aW9uIGludm9jYXRpb24gKHVuYWJsZSB0byByZWFkICJmdW5jIiknCisKKyAgICAgICAgIyBUaGlzIGZyYW1lIGlzbid0IHdvcnRoIHJlcG9ydGluZzoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaXNfd2FpdGluZ19mb3JfZ2lsKHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIGZyYW1lIHdhaXRpbmcgb24gdGhlIEdJTD8nJycKKyAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhlIF9QT1NJWF9USFJFQURTIHZlcnNpb24gb2YgUHl0aG9uL2NldmFsX2dpbC5oOgorICAgICAgICBuYW1lID0gc2VsZi5fZ2RiZnJhbWUubmFtZSgpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICByZXR1cm4gbmFtZS5zdGFydHN3aXRoKCdwdGhyZWFkX2NvbmRfdGltZWR3YWl0JykKKworICAgIGRlZiBpc19nY19jb2xsZWN0KHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIGZyYW1lICJjb2xsZWN0IiB3aXRoaW4gdGhlIHRoZSBnYXJiYWdlLWNvbGxlY3Rvcj8nJycKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dkYmZyYW1lLm5hbWUoKSA9PSAnY29sbGVjdCcKKwogICAgIGRlZiBnZXRfcHlvcChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IHNlbGYuX2dkYmZyYW1lLnJlYWRfdmFyKCdmJykKQEAgLTE0MzMsOCArMTQ5NSwyMiBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoY2xzKToKLSAgICAgICAgJycnVHJ5IHRvIG9idGFpbiB0aGUgRnJhbWUgZm9yIHRoZSBweXRob24gY29kZSBpbiB0aGUgc2VsZWN0ZWQgZnJhbWUsCi0gICAgICAgIG9yIE5vbmUnJycKKyAgICAgICAgJycnVHJ5IHRvIG9idGFpbiB0aGUgRnJhbWUgZm9yIHRoZSBweXRob24tcmVsYXRlZCBjb2RlIGluIHRoZSBzZWxlY3RlZAorICAgICAgICBmcmFtZSwgb3IgTm9uZScnJworICAgICAgICBmcmFtZSA9IGNscy5nZXRfc2VsZWN0ZWRfZnJhbWUoKQorCisgICAgICAgIHdoaWxlIGZyYW1lOgorICAgICAgICAgICAgaWYgZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lCisgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKKworICAgICAgICAjIE5vdCBmb3VuZDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfc2VsZWN0ZWRfYnl0ZWNvZGVfZnJhbWUoY2xzKToKKyAgICAgICAgJycnVHJ5IHRvIG9idGFpbiB0aGUgRnJhbWUgZm9yIHRoZSBweXRob24gYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgaW4gdGhlCisgICAgICAgIHNlbGVjdGVkIEdEQiBmcmFtZSwgb3IgTm9uZScnJwogICAgICAgICBmcmFtZSA9IGNscy5nZXRfc2VsZWN0ZWRfZnJhbWUoKQogCiAgICAgICAgIHdoaWxlIGZyYW1lOgpAQCAtMTQ1OCw3ICsxNTM0LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyMlaSAodW5hYmxlIHRvIHJlYWQgcHl0aG9uIGZyYW1lIGluZm9ybWF0aW9uKVxuJyAlIHNlbGYuZ2V0X2luZGV4KCkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWlcbicgJSBzZWxmLmdldF9pbmRleCgpKQorICAgICAgICAgICAgaW5mbyA9IHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCkKKyAgICAgICAgICAgIGlmIGluZm86CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpICVzXG4nICUgKHNlbGYuZ2V0X2luZGV4KCksIGluZm8pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWlcbicgJSBzZWxmLmdldF9pbmRleCgpKQogCiAgICAgZGVmIHByaW50X3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgaWYgc2VsZi5pc19ldmFsZnJhbWVleCgpOgpAQCAtMTQ3Miw3ICsxNTUyLDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgKHVuYWJsZSB0byByZWFkIHB5dGhvbiBmcmFtZSBpbmZvcm1hdGlvbilcbicpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgIChub3QgYSBweXRob24gZnJhbWUpXG4nKQorICAgICAgICAgICAgaW5mbyA9IHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCkKKyAgICAgICAgICAgIGlmIGluZm86CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAlc1xuJyAlIGluZm8pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgKG5vdCBhIHB5dGhvbiBmcmFtZSlcbicpCiAKIGNsYXNzIFB5TGlzdChnZGIuQ29tbWFuZCk6CiAgICAgJycnTGlzdCB0aGUgY3VycmVudCBQeXRob24gc291cmNlIGNvZGUsIGlmIGFueQpAQCAtMTUwOCw5ICsxNTkyLDEwIEBACiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICBzdGFydCwgZW5kID0gbWFwKGludCwgbS5ncm91cHMoKSkKIAotICAgICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoKQorICAgICAgICAjIHB5LWxpc3QgcmVxdWlyZXMgYW4gYWN0dWFsIFB5RXZhbF9FdmFsRnJhbWVFeCBmcmFtZToKKyAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfYnl0ZWNvZGVfZnJhbWUoKQogICAgICAgICBpZiBub3QgZnJhbWU6Ci0gICAgICAgICAgICBwcmludCAnVW5hYmxlIHRvIGxvY2F0ZSBweXRob24gZnJhbWUnCisgICAgICAgICAgICBwcmludCAnVW5hYmxlIHRvIGxvY2F0ZSBnZGIgZnJhbWUgZm9yIHB5dGhvbiBieXRlY29kZSBpbnRlcnByZXRlcicKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHB5b3AgPSBmcmFtZS5nZXRfcHlvcCgpCkBAIC0xNTYyLDcgKzE2NDcsNyBAQAogICAgICAgICBpZiBub3QgaXRlcl9mcmFtZToKICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgaWYgaXRlcl9mcmFtZS5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICBpZiBpdGVyX2ZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgogICAgICAgICAgICAgIyBSZXN1bHQ6CiAgICAgICAgICAgICBpZiBpdGVyX2ZyYW1lLnNlbGVjdCgpOgogICAgICAgICAgICAgICAgIGl0ZXJfZnJhbWUucHJpbnRfc3VtbWFyeSgpCkBAIC0xNjE2LDcgKzE3MDEsNyBAQAogICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90dHkpOgogICAgICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoKQogICAgICAgICB3aGlsZSBmcmFtZToKLSAgICAgICAgICAgIGlmIGZyYW1lLmlzX2V2YWxmcmFtZWV4KCk6CisgICAgICAgICAgICBpZiBmcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICAgICBmcmFtZS5wcmludF9zdW1tYXJ5KCkKICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUub2xkZXIoKQogCkBAIC0xNjM1LDcgKzE3MjAsNyBAQAogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuJykKICAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKICAgICAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgICAgICBpZiBmcmFtZS5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICAgICAgaWYgZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CiAgICAgICAgICAgICAgICAgZnJhbWUucHJpbnRfdHJhY2ViYWNrKCkKICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUub2xkZXIoKQogCmRpZmYgLS1naXQgYS9Ub29scy9oZy9oZ3RvdWNoLnB5IGIvVG9vbHMvaGcvaGd0b3VjaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTYxYTEwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvaGcvaGd0b3VjaC5weQpAQCAtMCwwICsxLDEwMyBAQAorIiIiQnJpbmcgdGltZSBzdGFtcHMgb2YgZ2VuZXJhdGVkIGNoZWNrZWQtaW4gZmlsZXMgaW50byB0aGUgcmlnaHQgb3JkZXIKKworQSB2ZXJzaW9uZWQgY29uZmlndXJhdGlvbiBmaWxlIC5oZ3RvdWNoIHNwZWNpZmllcyBnZW5lcmF0ZWQgZmlsZXMsIGluIHRoZQorc3ludGF4IG9mIG1ha2UgcnVsZXMuCisKKyAgb3V0cHV0OiAgICBpbnB1dDEgaW5wdXQyCisKK0luIGFkZGl0aW9uIHRvIHRoZSBkZXBlbmRlbmN5IHN5bnRheCwgIy1jb21tZW50cyBhcmUgc3VwcG9ydGVkLgorIiIiCitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworCitkZWYgcGFyc2VfY29uZmlnKHJlcG8pOgorICAgIHRyeToKKyAgICAgICAgZnAgPSByZXBvLndmaWxlKCIuaGd0b3VjaCIpCisgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIHt9CisgICAgcmVzdWx0ID0ge30KKyAgICB3aXRoIGZwOgorICAgICAgICBmb3IgbGluZSBpbiBmcDoKKyAgICAgICAgICAgICMgc3RyaXAgY29tbWVudHMKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcjJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgaWYgJzonIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBvdXRwdXRzLCBpbnB1dHMgPSBsaW5lLnNwbGl0KCc6JywgMSkKKyAgICAgICAgICAgIG91dHB1dHMgPSBvdXRwdXRzLnNwbGl0KCkKKyAgICAgICAgICAgIGlucHV0cyA9IGlucHV0cy5zcGxpdCgpCisgICAgICAgICAgICBmb3IgbyBpbiBvdXRwdXRzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W29dLmV4dGVuZChpbnB1dHMpCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXN1bHRbb10gPSBpbnB1dHMKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBjaGVja19ydWxlKHVpLCByZXBvLCBtb2RpZmllZCwgb3V0cHV0LCBpbnB1dHMpOgorICAgIGZfb3V0cHV0ID0gcmVwby53am9pbihvdXRwdXQpCisgICAgdHJ5OgorICAgICAgICBvX3RpbWUgPSBvcy5zdGF0KGZfb3V0cHV0KS5zdF9tdGltZQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB1aS53YXJuKCJHZW5lcmF0ZWQgZmlsZSAlcyBkb2VzIG5vdCBleGlzdFxuIiAlIG91dHB1dCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgbmVlZF90b3VjaCA9IEZhbHNlCisgICAgYmFja2RhdGUgPSBOb25lCisgICAgYmFja2RhdGVfc291cmNlID0gTm9uZQorICAgIGZvciBpIGluIGlucHV0czoKKyAgICAgICAgZl9pID0gcmVwby53am9pbihpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpX3RpbWUgPSBvcy5zdGF0KGZfaSkuc3RfbXRpbWUKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICB1aS53YXJuKCIuaGd0b3VjaCBpbnB1dCBmaWxlICVzIGRvZXMgbm90IGV4aXN0XG4iICUgaSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBpIGluIG1vZGlmaWVkOgorICAgICAgICAgICAgIyBpbnB1dCBpcyBtb2RpZmllZC4gTmVlZCB0byBiYWNrZGF0ZSBhdCBsZWFzdCB0byBpX3RpbWUKKyAgICAgICAgICAgIGlmIGJhY2tkYXRlIGlzIE5vbmUgb3IgYmFja2RhdGUgPiBpX3RpbWU6CisgICAgICAgICAgICAgICAgYmFja2RhdGUgPSBpX3RpbWUKKyAgICAgICAgICAgICAgICBiYWNrZGF0ZV9zb3VyY2UgPSBpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBvX3RpbWUgPD0gaV90aW1lOgorICAgICAgICAgICAgIyBnZW5lcmF0ZWQgZmlsZSBpcyBvbGRlciwgdG91Y2gKKyAgICAgICAgICAgIG5lZWRfdG91Y2ggPSBUcnVlCisgICAgaWYgYmFja2RhdGUgaXMgbm90IE5vbmU6CisgICAgICAgIHVpLndhcm4oIklucHV0ICVzIGZvciBmaWxlICVzIGxvY2FsbHkgbW9kaWZpZWRcbiIgJSAoYmFja2RhdGVfc291cmNlLCBvdXRwdXQpKQorICAgICAgICAjIHNldCB0byAxcyBiZWZvcmUgb2xkZXN0IG1vZGlmaWVkIGlucHV0CisgICAgICAgIGJhY2tkYXRlIC09IDEKKyAgICAgICAgb3MudXRpbWUoZl9vdXRwdXQsIChiYWNrZGF0ZSwgYmFja2RhdGUpKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBuZWVkX3RvdWNoOgorICAgICAgICB1aS5ub3RlKCJUb3VjaGluZyAlc1xuIiAlIG91dHB1dCkKKyAgICAgICAgb3MudXRpbWUoZl9vdXRwdXQsIE5vbmUpCisgICAgcmV0dXJuIFRydWUKKworZGVmIGRvX3RvdWNoKHVpLCByZXBvKToKKyAgICBtb2RpZmllZCA9IHJlcG8uc3RhdHVzKClbMF0KKyAgICBkZXBlbmRlbmNpZXMgPSBwYXJzZV9jb25maWcocmVwbykKKyAgICBzdWNjZXNzID0gVHJ1ZQorICAgICMgdHJ5IHByb2Nlc3NpbmcgYWxsIHJ1bGVzIGluIHRvcG9sb2dpY2FsIG9yZGVyCisgICAgaG9sZF9iYWNrID0ge30KKyAgICB3aGlsZSBkZXBlbmRlbmNpZXM6CisgICAgICAgIG91dHB1dCwgaW5wdXRzID0gZGVwZW5kZW5jaWVzLnBvcGl0ZW0oKQorICAgICAgICAjIGNoZWNrIHdoZXRoZXIgYW55IG9mIHRoZSBpbnB1dHMgaXMgZ2VuZXJhdGVkCisgICAgICAgIGZvciBpIGluIGlucHV0czoKKyAgICAgICAgICAgIGlmIGkgaW4gZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgICAgIGhvbGRfYmFja1tvdXRwdXRdID0gaW5wdXRzCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgc3VjY2VzcyA9IGNoZWNrX3J1bGUodWksIHJlcG8sIG1vZGlmaWVkLCBvdXRwdXQsIGlucHV0cykKKyAgICAgICAgIyBwdXQgYmFjayBoZWxkIGJhY2sgcnVsZXMKKyAgICAgICAgZGVwZW5kZW5jaWVzLnVwZGF0ZShob2xkX2JhY2spCisgICAgICAgIGhvbGRfYmFjayA9IHt9CisgICAgaWYgaG9sZF9iYWNrOgorICAgICAgICB1aS53YXJuKCJDeWNsaWMgZGVwZW5kZW5jeSBpbnZvbHZpbmcgJXNcbiIgJSAoJyAnLmpvaW4oaG9sZF9iYWNrLmtleXMoKSkpKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gc3VjY2VzcworCitkZWYgdG91Y2godWksIHJlcG8pOgorICAgICJ0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgb2xkZXIgdGhhbiB0aGVpciBzb3VyY2VzIGFmdGVyIGFuIHVwZGF0ZS4iCisgICAgZG9fdG91Y2godWksIHJlcG8pCisKK2NtZHRhYmxlID0geworICAgICJ0b3VjaCI6ICh0b3VjaCwgW10sCisgICAgICAgICAgICAgICJ0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSAuaGd0b3VjaCBjb25maWd1cmF0aW9uIikKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggNjdhOTYwZi4uOTNiMmI3OSAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTE2Myw3ICsxNjMsNiBAQAogaW1wb3J0IGdldG9wdAogaW1wb3J0IHRva2VuCiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCBvcGVyYXRvcgogCiBfX3ZlcnNpb25fXyA9ICcxLjUnCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2ltcG9ydGJlbmNoL1JFQURNRSBiL1Rvb2xzL2ltcG9ydGJlbmNoL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWE1NTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvaW1wb3J0YmVuY2gvUkVBRE1FCkBAIC0wLDAgKzEsNiBAQAorSW1wb3J0YmVuY2ggaXMgYSBzZXQgb2YgbWljcm8tYmVuY2htYXJrcyBmb3IgdmFyaW91cyBpbXBvcnQgc2NlbmFyaW9zLgorCitJdCBzaG91bGQgbm90IGJlIHVzZWQgYXMgYW4gb3ZlcmFsbCBiZW5jaG1hcmsgb2YgaW1wb3J0IHBlcmZvcm1hbmNlLCBidXQgcmF0aGVyCithbiBlYXN5IHdheSB0byBtZWFzdXJlIGltcGFjdCBvZiBwb3NzaWJsZSBjb2RlIGNoYW5nZXMuIEZvciBhIHJlYWwtd29ybGQKK2JlbmNobWFyayBvZiBpbXBvcnQsIHVzZSB0aGUgbm9ybWFsX3N0YXJ0dXAgYmVuY2htYXJrIGZyb20KK2hnLnB5dGhvbi5vcmcvYmVuY2htYXJrcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5IGIvVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0YzBlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5CkBAIC0wLDAgKzEsMjUyIEBACisiIiJCZW5jaG1hcmsgc29tZSBiYXNpYyBpbXBvcnQgdXNlLWNhc2VzLgorCitUaGUgYXNzdW1wdGlvbiBpcyBtYWRlIHRoYXQgdGhpcyBiZW5jaG1hcmsgaXMgcnVuIGluIGEgZnJlc2ggaW50ZXJwcmV0ZXIgYW5kCit0aHVzIGhhcyBubyBleHRlcm5hbCBjaGFuZ2VzIG1hZGUgdG8gaW1wb3J0LXJlbGF0ZWQgYXR0cmlidXRlcyBpbiBzeXMuCisKKyIiIgorZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCitmcm9tIHRlc3QudGVzdF9pbXBvcnRsaWIuc291cmNlIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCitpbXBvcnQgZGVjaW1hbAoraW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBweV9jb21waWxlCitpbXBvcnQgc3lzCitpbXBvcnQgdGFibmFubnkKK2ltcG9ydCB0aW1laXQKKworCitkZWYgYmVuY2gobmFtZSwgY2xlYW51cD1sYW1iZGE6IE5vbmUsICosIHNlY29uZHM9MSwgcmVwZWF0PTMpOgorICAgICIiIkJlbmNoIHRoZSBnaXZlbiBzdGF0ZW1lbnQgYXMgbWFueSB0aW1lcyBhcyBuZWNlc3NhcnkgdW50aWwgdG90YWwKKyAgICBleGVjdXRpb25zIHRha2Ugb25lIHNlY29uZC4iIiIKKyAgICBzdG10ID0gIl9faW1wb3J0X18oeyFyfSkiLmZvcm1hdChuYW1lKQorICAgIHRpbWVyID0gdGltZWl0LlRpbWVyKHN0bXQpCisgICAgZm9yIHggaW4gcmFuZ2UocmVwZWF0KToKKyAgICAgICAgdG90YWxfdGltZSA9IDAKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIHRvdGFsX3RpbWUgPCBzZWNvbmRzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRvdGFsX3RpbWUgKz0gdGltZXIudGltZWl0KDEpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsZWFudXAoKQorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPbmUgZXhlY3V0aW9uIHRvbyBmYXIKKyAgICAgICAgICAgIGlmIHRvdGFsX3RpbWUgPiBzZWNvbmRzOgorICAgICAgICAgICAgICAgIGNvdW50IC09IDEKKyAgICAgICAgeWllbGQgY291bnQgLy8gc2Vjb25kcworCitkZWYgZnJvbV9jYWNoZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiInN5cy5tb2R1bGVzIiIiCisgICAgbmFtZSA9ICc8YmVuY2htYXJrIGltcG9ydD4nCisgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICBtb2R1bGUuX19maWxlX18gPSAnPHRlc3Q+JworICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9ICcnCisgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBidWlsdGluX21vZChzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIkJ1aWx0LWluIG1vZHVsZSIiIgorICAgIG5hbWUgPSAnZXJybm8nCisgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCisgICAgIyBSZWx5aW5nIG9uIGJ1aWx0LWluIGltcG9ydGVyIGJlaW5nIGltcGxpY2l0LgorICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgc291cmNlX3dvX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiU291cmNlIHcvbyBieXRlY29kZTogc21hbGwiIiIKKyAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKKyAgICB0cnk6CisgICAgICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKKyAgICAgICAgIyBDbGVhcnMgb3V0IHN5cy5tb2R1bGVzIGFuZCBwdXRzIGFuIGVudHJ5IGF0IHRoZSBmcm9udCBvZiBzeXMucGF0aC4KKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIpCisgICAgICAgICAgICBsb2FkZXIgPSAoaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTLCBUcnVlKQorICAgICAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0CisgICAgZmluYWxseToKKyAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQorCisKK2RlZiBfd29fYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIGJlbmNobWFya193b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICAgICAiIiJTb3VyY2Ugdy9vIGJ5dGVjb2RlOiB7fSIiIgorICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYnl0ZWNvZGVfcGF0aCk6CisgICAgICAgICAgICBvcy51bmxpbmsoYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCisKKyAgICBiZW5jaG1hcmtfd29fYnl0ZWNvZGUuX19kb2NfXyA9IGJlbmNobWFya193b19ieXRlY29kZS5fX2RvY19fLmZvcm1hdChuYW1lKQorICAgIHJldHVybiBiZW5jaG1hcmtfd29fYnl0ZWNvZGUKKwordGFibmFubnlfd29fYnl0ZWNvZGUgPSBfd29fYnl0ZWNvZGUodGFibmFubnkpCitkZWNpbWFsX3dvX2J5dGVjb2RlID0gX3dvX2J5dGVjb2RlKGRlY2ltYWwpCisKKworZGVmIHNvdXJjZV93cml0aW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IHNtYWxsIiIiCisgICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQorICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKKyAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcikKKyAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTLCBUcnVlKQorICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vayhsb2FkZXIpKQorICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXMucG9wKG5hbWUpCisgICAgICAgICAgICBvcy51bmxpbmsoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGNsZWFudXAsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBfd3JpdGluZ19ieXRlY29kZShtb2R1bGUpOgorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBkZWYgd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsoc2Vjb25kcywgcmVwZWF0KToKKyAgICAgICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IHt9IiIiCisgICAgICAgIGFzc2VydCBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKKyAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQorICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pKQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGNsZWFudXAsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworICAgIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18gPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18uZm9ybWF0KG5hbWUpKQorICAgIHJldHVybiB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyaworCit0YWJuYW5ueV93cml0aW5nX2J5dGVjb2RlID0gX3dyaXRpbmdfYnl0ZWNvZGUodGFibmFubnkpCitkZWNpbWFsX3dyaXRpbmdfYnl0ZWNvZGUgPSBfd3JpdGluZ19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBzb3VyY2VfdXNpbmdfYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJTb3VyY2Ugdy8gYnl0ZWNvZGU6IHNtYWxsIiIiCisgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJworICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyKQorICAgICAgICBsb2FkZXIgPSAoaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTLCBUcnVlKQorICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vayhsb2FkZXIpKQorICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1tuYW1lXSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKworZGVmIF91c2luZ19ieXRlY29kZShtb2R1bGUpOgorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBkZWYgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrKHNlY29uZHMsIHJlcGVhdCk6CisgICAgICAgICIiIlNvdXJjZSB3LyBieXRlY29kZToge30iIiIKKyAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKyAgICB1c2luZ19ieXRlY29kZV9iZW5jaG1hcmsuX19kb2NfXyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18uZm9ybWF0KG5hbWUpKQorICAgIHJldHVybiB1c2luZ19ieXRlY29kZV9iZW5jaG1hcmsKKwordGFibmFubnlfdXNpbmdfYnl0ZWNvZGUgPSBfdXNpbmdfYnl0ZWNvZGUodGFibmFubnkpCitkZWNpbWFsX3VzaW5nX2J5dGVjb2RlID0gX3VzaW5nX2J5dGVjb2RlKGRlY2ltYWwpCisKKworZGVmIG1haW4oaW1wb3J0Xywgb3B0aW9ucyk6CisgICAgaWYgb3B0aW9ucy5zb3VyY2VfZmlsZToKKyAgICAgICAgd2l0aCBvcHRpb25zLnNvdXJjZV9maWxlOgorICAgICAgICAgICAgcHJldl9yZXN1bHRzID0ganNvbi5sb2FkKG9wdGlvbnMuc291cmNlX2ZpbGUpCisgICAgZWxzZToKKyAgICAgICAgcHJldl9yZXN1bHRzID0ge30KKyAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydF8KKyAgICBiZW5jaG1hcmtzID0gKGZyb21fY2FjaGUsIGJ1aWx0aW5fbW9kLAorICAgICAgICAgICAgICAgICAgc291cmNlX3dyaXRpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICBzb3VyY2Vfd29fYnl0ZWNvZGUsIHNvdXJjZV91c2luZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICAgIHRhYm5hbm55X3dyaXRpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICB0YWJuYW5ueV93b19ieXRlY29kZSwgdGFibmFubnlfdXNpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICBkZWNpbWFsX3dyaXRpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICBkZWNpbWFsX3dvX2J5dGVjb2RlLCBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICkKKyAgICBpZiBvcHRpb25zLmJlbmNobWFyazoKKyAgICAgICAgZm9yIGIgaW4gYmVuY2htYXJrczoKKyAgICAgICAgICAgIGlmIGIuX19kb2NfXyA9PSBvcHRpb25zLmJlbmNobWFyazoKKyAgICAgICAgICAgICAgICBiZW5jaG1hcmtzID0gW2JdCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCdVbmtub3duIGJlbmNobWFyazogeyFyfScuZm9ybWF0KG9wdGlvbnMuYmVuY2htYXJrLAorICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgc2Vjb25kcyA9IDEKKyAgICBzZWNvbmRzX3BsdXJhbCA9ICdzJyBpZiBzZWNvbmRzID4gMSBlbHNlICcnCisgICAgcmVwZWF0ID0gMworICAgIGhlYWRlciA9ICgnTWVhc3VyaW5nIGltcG9ydHMvc2Vjb25kIG92ZXIge30gc2Vjb25ke30sIGJlc3Qgb3V0IG9mIHt9XG4nCisgICAgICAgICAgICAgICdFbnRpcmUgYmVuY2htYXJrIHJ1biBzaG91bGQgdGFrZSBhYm91dCB7fSBzZWNvbmRzXG4nCisgICAgICAgICAgICAgICdVc2luZyB7IXJ9IGFzIF9faW1wb3J0X19cbicpCisgICAgcHJpbnQoaGVhZGVyLmZvcm1hdChzZWNvbmRzLCBzZWNvbmRzX3BsdXJhbCwgcmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJlbmNobWFya3MpICogc2Vjb25kcyAqIHJlcGVhdCwgX19pbXBvcnRfXykpCisgICAgbmV3X3Jlc3VsdHMgPSB7fQorICAgIGZvciBiZW5jaG1hcmsgaW4gYmVuY2htYXJrczoKKyAgICAgICAgcHJpbnQoYmVuY2htYXJrLl9fZG9jX18sICJbIiwgZW5kPScgJykKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNobWFyayhzZWNvbmRzPXNlY29uZHMsIHJlcGVhdD1yZXBlYXQpOgorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgcHJpbnQocmVzdWx0LCBlbmQ9JyAnKQorICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIGFzc2VydCBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKKyAgICAgICAgcHJpbnQoIl0iLCAiYmVzdCBpcyIsIGZvcm1hdChtYXgocmVzdWx0cyksICcsZCcpKQorICAgICAgICBuZXdfcmVzdWx0c1tiZW5jaG1hcmsuX19kb2NfX10gPSByZXN1bHRzCisgICAgaWYgcHJldl9yZXN1bHRzOgorICAgICAgICBwcmludCgnXG5cbkNvbXBhcmluZyBuZXcgdnMuIG9sZFxuJykKKyAgICAgICAgZm9yIGJlbmNobWFyayBpbiBiZW5jaG1hcmtzOgorICAgICAgICAgICAgYmVuY2htYXJrX25hbWUgPSBiZW5jaG1hcmsuX19kb2NfXworICAgICAgICAgICAgb2xkX3Jlc3VsdCA9IG1heChwcmV2X3Jlc3VsdHNbYmVuY2htYXJrX25hbWVdKQorICAgICAgICAgICAgbmV3X3Jlc3VsdCA9IG1heChuZXdfcmVzdWx0c1tiZW5jaG1hcmtfbmFtZV0pCisgICAgICAgICAgICByZXN1bHQgPSAnezosZH0gdnMuIHs6LGR9ICh7OiV9KScuZm9ybWF0KG5ld19yZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9yZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jlc3VsdC9vbGRfcmVzdWx0KQorICAgICAgICAgICAgcHJpbnQoYmVuY2htYXJrX25hbWUsICc6JywgcmVzdWx0KQorICAgIGlmIG9wdGlvbnMuZGVzdF9maWxlOgorICAgICAgICB3aXRoIG9wdGlvbnMuZGVzdF9maWxlOgorICAgICAgICAgICAganNvbi5kdW1wKG5ld19yZXN1bHRzLCBvcHRpb25zLmRlc3RfZmlsZSwgaW5kZW50PTIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1aWx0aW4nLCBkZXN0PSdidWlsdGluJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9InVzZSB0aGUgYnVpbHQtaW4gX19pbXBvcnRfXyIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZWFkJywgZGVzdD0nc291cmNlX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgncicpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmlsZSB0byByZWFkIGJlbmNobWFyayBkYXRhIGZyb20gdG8gY29tcGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZ2FpbnN0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdycsICctLXdyaXRlJywgZGVzdD0nZGVzdF9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3cnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gd3JpdGUgYmVuY2htYXJrIGRhdGEgdG8nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tYmVuY2htYXJrJywgZGVzdD0nYmVuY2htYXJrJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZmljIGJlbmNobWFyayB0byBydW4nKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaW1wb3J0XyA9IF9faW1wb3J0X18KKyAgICBpZiBub3Qgb3B0aW9ucy5idWlsdGluOgorICAgICAgICBpbXBvcnRfID0gaW1wb3J0bGliLl9faW1wb3J0X18KKworICAgIG1haW4oaW1wb3J0Xywgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weSBiL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weQppbmRleCA1ZWM2ZjE3Li41MzBiYzc5IDEwMDY0NAotLS0gYS9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkKKysrIGIvVG9vbHMvaW9iZW5jaC9pb2JlbmNoLnB5CkBAIC0xLDEzICsxLDEyIEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogIyBUaGlzIGZpbGUgc2hvdWxkIGJlIGtlcHQgY29tcGF0aWJsZSB3aXRoIGJvdGggUHl0aG9uIDIuNiBhbmQgUHl0aG9uID49IDMuMC4KIAotaW1wb3J0IHRpbWUKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWltcG9ydCBoYXNobGliCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgdGltZQogZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCiAKIG91dCA9IHN5cy5zdGRvdXQKQEAgLTMwNyw2ICszMDYsMTYgQEAKICAgICAgICAgImxhcmdlIjogMiwKICAgICB9CiAKKyAgICBwcmludCgiUHl0aG9uICVzIiAlIHN5cy52ZXJzaW9uKQorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICAgICAgdGV4dCA9ICJVQ1MtNCAod2lkZSBidWlsZCkiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXh0ID0gIlVURi0xNiAobmFycm93IGJ1aWxkKSIKKyAgICBlbHNlOgorICAgICAgICB0ZXh0ID0gIlBFUCAzOTMiCisgICAgcHJpbnQoIlVuaWNvZGU6ICVzIiAlIHRleHQpCisgICAgcHJpbnQocGxhdGZvcm0ucGxhdGZvcm0oKSkKICAgICBiaW5hcnlfZmlsZXMgPSBsaXN0KGdldF9iaW5hcnlfZmlsZXMoKSkKICAgICB0ZXh0X2ZpbGVzID0gbGlzdChnZXRfdGV4dF9maWxlcygpKQogICAgIGlmICJiIiBpbiBvcHRpb25zOgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaS5weSBiL1Rvb2xzL21zaS9tc2kucHkKaW5kZXggNTA4ODE2ZC4uMjA1N2JlYiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21zaS5weQorKysgYi9Ub29scy9tc2kvbXNpLnB5CkBAIC0yLDEyICsyLDExIEBACiAjIChDKSAyMDAzIE1hcnRpbiB2LiBMb2V3aXMKICMgU2VlICJGT08iIGluIGNvbW1lbnRzIHJlZmVycyB0byBNU0ROIHNlY3Rpb25zIHdpdGggdGhlIHRpdGxlIEZPTy4KIGltcG9ydCBtc2lsaWIsIHNjaGVtYSwgc2VxdWVuY2UsIG9zLCBnbG9iLCB0aW1lLCByZSwgc2h1dGlsLCB6aXBmaWxlCitpbXBvcnQgc3VicHJvY2VzcywgdGVtcGZpbGUKIGZyb20gbXNpbGliIGltcG9ydCBGZWF0dXJlLCBDQUIsIERpcmVjdG9yeSwgRGlhbG9nLCBCaW5hcnksIGFkZF9kYXRhCiBpbXBvcnQgdWlzYW1wbGUKIGZyb20gd2luMzJjb20uY2xpZW50IGltcG9ydCBjb25zdGFudHMKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLWZyb20gdXVpZHMgaW1wb3J0IHByb2R1Y3RfY29kZXMKLWltcG9ydCB0ZW1wZmlsZQogCiAjIFNldHRpbmdzIGNhbiBiZSBvdmVycmlkZGVuIGluIGNvbmZpZy5weSBiZWxvdwogIyAwIGZvciBvZmZpY2lhbCBweXRob24ub3JnIHJlbGVhc2VzCkBAIC0yOCw3ICsyNyw3IEBACiAjIHBhdGggdG8gUENidWlsZCBkaXJlY3RvcnkKIFBDQlVJTEQ9IlBDYnVpbGQiCiAjIG1zdmNydCB2ZXJzaW9uCi1NU1ZDUiA9ICI5MCIKK01TVkNSID0gIjEwMCIKICMgTmFtZSBvZiBjZXJ0aWZpY2F0ZSBpbiBkZWZhdWx0IHN0b3JlIHRvIHNpZ24gTVNJIHdpdGgKIGNlcnRuYW1lID0gTm9uZQogIyBNYWtlIGEgemlwIGZpbGUgY29udGFpbmluZyB0aGUgUERCIGZpbGVzIGZvciB0aGlzIGJ1aWxkPwpAQCAtNzcsMTkgKzc2LDE2IEBACiAKIGlmIHNuYXBzaG90OgogICAgIGN1cnJlbnRfdmVyc2lvbiA9ICIlcy4lcy4lcyIgJSAobWFqb3IsIG1pbm9yLCBpbnQodGltZS50aW1lKCkvMzYwMC8yNCkpCi0gICAgcHJvZHVjdF9jb2RlID0gbXNpbGliLmdlbl91dWlkKCkKLWVsc2U6Ci0gICAgcHJvZHVjdF9jb2RlID0gcHJvZHVjdF9jb2Rlc1tjdXJyZW50X3ZlcnNpb25dCiAKIGlmIGZ1bGxfY3VycmVudF92ZXJzaW9uIGlzIE5vbmU6CiAgICAgZnVsbF9jdXJyZW50X3ZlcnNpb24gPSBjdXJyZW50X3ZlcnNpb24KIAogZXh0ZW5zaW9ucyA9IFsKLSAgICAnYnoyLnB5ZCcsCiAgICAgJ3B5ZXhwYXQucHlkJywKICAgICAnc2VsZWN0LnB5ZCcsCiAgICAgJ3VuaWNvZGVkYXRhLnB5ZCcsCiAgICAgJ3dpbnNvdW5kLnB5ZCcsCisgICAgJ19iejIucHlkJywKICAgICAnX2VsZW1lbnR0cmVlLnB5ZCcsCiAgICAgJ19zb2NrZXQucHlkJywKICAgICAnX3NzbC5weWQnLApAQCAtMTAwLDcgKzk2LDEwIEBACiAgICAgJ19jdHlwZXNfdGVzdC5weWQnLAogICAgICdfc3FsaXRlMy5weWQnLAogICAgICdfaGFzaGxpYi5weWQnLAotICAgICdfbXVsdGlwcm9jZXNzaW5nLnB5ZCcKKyAgICAnX211bHRpcHJvY2Vzc2luZy5weWQnLAorICAgICdfbHptYS5weWQnLAorICAgICdfZGVjaW1hbC5weWQnLAorICAgICdfdGVzdGJ1ZmZlci5weWQnCiBdCiAKICMgV2VsbC1rbm93biBjb21wb25lbnQgVVVJRHMKQEAgLTExOSwxMiArMTE4LDExIEBACiAgICAgIjMwIjoiezY5NTNiYzNiLTY3NjgtNDI5MS04NDEwLTc5MTRjZTZlMmNhOH0iLAogICAgICIzMSI6Ins0YWZjYmEwYi0xM2U0LTQ3YzMtYmViZS00Nzc0MjhiNDY5MTN9IiwKICAgICAiMzIiOiJ7M2ZmOTUzMTUtMTA5Ni00ZDMxLWJkODYtNjAxZDU0MzhhZDVlfSIsCisgICAgIjMzIjoie2Y3NTgxY2E0LWQzNjgtNGVlYS04ZjgyLWQ0OGM2NGM0ZjA0N30iLAogICAgIH0gW21ham9yK21pbm9yXQogCiAjIENvbXB1dGUgdGhlIG5hbWUgdGhhdCBTcGhpbnggZ2l2ZXMgdG8gdGhlIGRvY2ZpbGUKLWRvY2ZpbGUgPSAiIgotaWYgaW50KG1pY3JvKToKLSAgICBkb2NmaWxlID0gbWljcm8KK2RvY2ZpbGUgPSBtaWNybwogaWYgbGV2ZWwgPCAweGY6CiAgICAgaWYgbGV2ZWwgPT0gMHhDOgogICAgICAgICBkb2NmaWxlICs9ICJyYyVzIiAlIChzZXJpYWwsKQpAQCAtMTg1LDEyICsxODMsMTkgQEAKIG1zaWxpYi5zZXRfYXJjaF9mcm9tX2ZpbGUoZGxsX3BhdGgpCiBpZiBtc2lsaWIucGVfdHlwZShkbGxfcGF0aCkgIT0gbXNpbGliLnBlX3R5cGUoIm1zaXN1cHBvcnQuZGxsIik6CiAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm1zaXN1cHBvcnQuZGxsIGZvciBpbmNvcnJlY3QgYXJjaGl0ZWN0dXJlIikKKwogaWYgbXNpbGliLldpbjY0OgogICAgIHVwZ3JhZGVfY29kZSA9IHVwZ3JhZGVfY29kZV82NAotICAgICMgQnVtcCB0aGUgbGFzdCBkaWdpdCBvZiB0aGUgY29kZSBieSBvbmUsIHNvIHRoYXQgMzItYml0IGFuZCA2NC1iaXQKLSAgICAjIHJlbGVhc2VzIGdldCBzZXBhcmF0ZSBwcm9kdWN0IGNvZGVzCi0gICAgZGlnaXQgPSBoZXgoKGludChwcm9kdWN0X2NvZGVbLTJdLDE2KSsxKSUxNilbLTFdCi0gICAgcHJvZHVjdF9jb2RlID0gcHJvZHVjdF9jb2RlWzotMl0gKyBkaWdpdCArICd9JworCitpZiBzbmFwc2hvdDoKKyAgICBwcm9kdWN0X2NvZGUgPSBtc2lsaWIuZ2VuX3V1aWQoKQorZWxzZToKKyAgICAjIG9mZmljaWFsIHJlbGVhc2U6IGdlbmVyYXRlIFVVSUQgZnJvbSB0aGUgZG93bmxvYWQgbGluayB0aGF0IHRoZSBmaWxlIHdpbGwgaGF2ZQorICAgIGltcG9ydCB1dWlkCisgICAgcHJvZHVjdF9jb2RlID0gdXVpZC51dWlkMyh1dWlkLk5BTUVTUEFDRV9VUkwsCisgICAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8lcy4lcy4lcy9weXRob24tJXMlcy5tc2knICUKKyAgICAgICAgICAgICAgICAgICAgKG1ham9yLCBtaW5vciwgbWljcm8sIGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2lsaWIuYXJjaF9leHQpKQorICAgIHByb2R1Y3RfY29kZSA9ICd7JXN9JyAlIHByb2R1Y3RfY29kZQogCiBpZiB0ZXN0cGFja2FnZToKICAgICBleHQgPSAncHgnCkBAIC0yODEsNyArMjg2LDcgQEAKICAgICAgICAgICAgICAgTm9uZSwgbWlncmF0ZV9mZWF0dXJlcywgTm9uZSwgIlJFTU9WRU9MRFNOQVBTSE9UIildKQogICAgICAgICBwcm9wcyA9ICJSRU1PVkVPTERTTkFQU0hPVDtSRU1PVkVPTERWRVJTSU9OIgogCi0gICAgcHJvcHMgKz0gIjtUQVJHRVRESVI7RExMRElSIgorICAgIHByb3BzICs9ICI7VEFSR0VURElSO0RMTERJUjtMQVVOQ0hFUkRJUiIKICAgICAjIEluc3RhbGxlciBjb2xsZWN0cyB0aGUgcHJvZHVjdCBjb2RlcyBvZiB0aGUgZWFybGllciByZWxlYXNlcyBpbgogICAgICMgdGhlc2UgcHJvcGVydGllcy4gSW4gb3JkZXIgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzLAogICAgICMgdGhleSBtdXN0IGJlIGRlY2xhcmVkIGFzIHNlY3VyZS4gU2VlICJTZWN1cmVDdXN0b21Qcm9wZXJ0aWVzIFByb3BlcnR5IgpAQCAtNDIxLDYgKzQyNiw4IEBACiAgICAgICAgICAiW1dpbmRvd3NWb2x1bWVdUHl0aG9uJXMlcyIgJSAobWFqb3IsIG1pbm9yKSksCiAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAzMDcsICJETExESVIiLCAiW1RBUkdFVERJUl0iKSwKICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgMzA3LCAiRExMRElSIiwgU3lzdGVtRm9sZGVyTmFtZSksCisgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsIDMwNywgIkxBVU5DSEVSRElSIiwgIltUQVJHRVRESVJdIiksCisgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAzMDcsICJMQVVOQ0hFUkRJUiIsICJbV2luZG93c0ZvbGRlcl0iKSwKICAgICAgICAgIyBtc2lkYkN1c3RvbUFjdGlvblR5cGVFeGUgKyBtc2lkYkN1c3RvbUFjdGlvblR5cGVTb3VyY2VGaWxlCiAgICAgICAgICMgU2VlICJDdXN0b20gQWN0aW9uIFR5cGUgMTgiCiAgICAgICAgICgiQ29tcGlsZVB5YyIsIDE4LCAicHl0aG9uLmV4ZSIsIGNvbXBpbGVhcmdzKSwKQEAgLTQzNyw2ICs0NDQsOCBAQAogICAgICAgICAgICAgICAjIEluIHRoZSB1c2VyIGludGVyZmFjZSwgYXNzdW1lIGFsbC11c2VycyBpbnN0YWxsYXRpb24gaWYgcHJpdmlsZWdlZC4KICAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgJ0RMTERJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUxKSwKICAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTIpLAorICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgJ0xBVU5DSEVSRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTMpLAorICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTQpLAogICAgICAgICAgICAgICAoIlNlbGVjdERpcmVjdG9yeURsZyIsICJOb3QgSW5zdGFsbGVkIiwgMTIzMCksCiAgICAgICAgICAgICAgICMgWFhYIG5vIHN1cHBvcnQgZm9yIHJlc3VtZSBpbnN0YWxsYXRpb25zIHlldAogICAgICAgICAgICAgICAjKCJSZXN1bWVEbGciLCAiSW5zdGFsbGVkIEFORCAoUkVTVU1FIE9SIFByZXNlbGVjdGVkKSIsIDEyNDApLApAQCAtNDQ1LDEzICs0NTQsMjAgQEAKICAgICBhZGRfZGF0YShkYiwgIkFkbWluVUlTZXF1ZW5jZSIsCiAgICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAogICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIicsIDc1MSksCisgICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIicsIDc1MiksCiAgICAgICAgICAgICAgXSkKIAorICAgICMgUHJlcGVuZCBUQVJHRVRESVIgdG8gdGhlIHN5c3RlbSBwYXRoLCBhbmQgcmVtb3ZlIGl0IG9uIHVuaW5zdGFsbC4KKyAgICBhZGRfZGF0YShkYiwgIkVudmlyb25tZW50IiwKKyAgICAgICAgICAgICBbKCJQYXRoQWRkaXRpb24iLCAiPS0qUGF0aCIsICJbVEFSR0VURElSXTtbfl0iLCAiUkVHSVNUUlkucGF0aCIpXSkKKwogICAgICMgRXhlY3V0ZSBTZXF1ZW5jZXMKICAgICBhZGRfZGF0YShkYiwgIkluc3RhbGxFeGVjdXRlU2VxdWVuY2UiLAogICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsICdETExESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MSksCiAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTIpLAorICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAnTEFVTkNIRVJESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MyksCisgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzU0KSwKICAgICAgICAgICAgICAoIlVwZGF0ZUVkaXRJRExFIiwgTm9uZSwgMTA1MCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHljIiwgIkNPTVBJTEVBTEwiLCA2ODAwKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVQeW8iLCAiQ09NUElMRUFMTCIsIDY4MDEpLApAQCAtNDYwLDYgKzQ3Niw3IEBACiAgICAgYWRkX2RhdGEoZGIsICJBZG1pbkV4ZWN1dGVTZXF1ZW5jZSIsCiAgICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCiAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAorICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIicsIDc1MiksCiAgICAgICAgICAgICAgKCJDb21waWxlUHljIiwgIkNPTVBJTEVBTEwiLCA2ODAwKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVQeW8iLCAiQ09NUElMRUFMTCIsIDY4MDEpLAogICAgICAgICAgICAgICgiQ29tcGlsZUdyYW1tYXIiLCAiQ09NUElMRUFMTCIsIDY4MDIpLApAQCAtNjcwLDExICs2ODcsMTEgQEAKICAgICBjPWZlYXR1cmVzLnhidXR0b24oIkFkdmFuY2VkIiwgIkFkdmFuY2VkIiwgTm9uZSwgMC4zMCkKICAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJBZHZhbmNlZERsZyIpCiAKLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1EZXNjcmlwdGlvbiIsIDE0MCwgMTgwLCAyMTAsIDMwLCAzLAorICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbURlc2NyaXB0aW9uIiwgMTQwLCAxODAsIDIxMCwgNDAsIDMsCiAgICAgICAgICAgICAgICAgICAiTXVsdGlsaW5lIGRlc2NyaXB0aW9uIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4iKQogICAgIGMubWFwcGluZygiU2VsZWN0aW9uRGVzY3JpcHRpb24iLCJUZXh0IikKIAotICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbVNpemUiLCAxNDAsIDIxMCwgMjEwLCA0NSwgMywKKyAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1TaXplIiwgMTQwLCAyMjUsIDIxMCwgMzMsIDMsCiAgICAgICAgICAgICAgICAgICAgICJUaGUgc2l6ZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKICAgICBjLm1hcHBpbmcoIlNlbGVjdGlvblNpemUiLCAiVGV4dCIpCiAKQEAgLTgyOCw3ICs4NDUsNyBAQAogICAgICMgKGkuZS4gYWRkaXRpb25hbCBQeXRob24gbGlicmFyaWVzKSBuZWVkIHRvIGZvbGxvdyB0aGUgcGFyZW50IGZlYXR1cmUuCiAgICAgIyBGZWF0dXJlcyB0aGF0IGhhdmUgbm8gYWR2ZXJ0aXNlbWVudCB0cmlnZ2VyIChlLmcuIHRoZSB0ZXN0IHN1aXRlKQogICAgICMgbXVzdCBub3Qgc3VwcG9ydCBhZHZlcnRpc2VtZW50Ci0gICAgZ2xvYmFsIGRlZmF1bHRfZmVhdHVyZSwgdGNsdGssIGh0bWxmaWxlcywgdG9vbHMsIHRlc3RzdWl0ZSwgZXh0X2ZlYXR1cmUsIHByaXZhdGVfY3J0CisgICAgZ2xvYmFsIGRlZmF1bHRfZmVhdHVyZSwgdGNsdGssIGh0bWxmaWxlcywgdG9vbHMsIHRlc3RzdWl0ZSwgZXh0X2ZlYXR1cmUsIHByaXZhdGVfY3J0LCBwcmVwZW5kX3BhdGgKICAgICBkZWZhdWx0X2ZlYXR1cmUgPSBGZWF0dXJlKGRiLCAiRGVmYXVsdEZlYXR1cmUiLCAiUHl0aG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gSW50ZXJwcmV0ZXIgYW5kIExpYnJhcmllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBkaXJlY3RvcnkgPSAiVEFSR0VURElSIikKQEAgLTg0OCwzMiArODY1LDM4IEBACiAgICAgaHRtbGZpbGVzID0gRmVhdHVyZShkYiwgIkRvY3VtZW50YXRpb24iLCAiRG9jdW1lbnRhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIEhUTUxIZWxwIEZpbGUiLCA3LCBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUpCiAgICAgdG9vbHMgPSBGZWF0dXJlKGRiLCAiVG9vbHMiLCAiVXRpbGl0eSBTY3JpcHRzIiwKLSAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB1dGlsaXR5IHNjcmlwdHMgKFRvb2xzLyIsIDksCisgICAgICAgICAgICAgICAgICAgICJQeXRob24gdXRpbGl0eSBzY3JpcHRzIChUb29scy8pIiwgOSwKICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTIpCiAgICAgdGVzdHN1aXRlID0gRmVhdHVyZShkYiwgIlRlc3RzdWl0ZSIsICJUZXN0IHN1aXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gdGVzdCBzdWl0ZSAoTGliL3Rlc3QvKSIsIDExLAogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCkKKyAgICAjIHByZXBlbmRfcGF0aCBpcyBhbiBhZGRpdGlvbmFsIGZlYXR1cmUgd2hpY2ggaXMgdG8gYmUgb2ZmIGJ5IGRlZmF1bHQuCisgICAgIyBTaW5jZSB0aGUgZGVmYXVsdCBsZXZlbCBmb3IgdGhlIGFib3ZlIGZlYXR1cmVzIGlzIDEsIHRoaXMgbmVlZHMgdG8gYmUKKyAgICAjIGF0IGxlYXN0IGxldmVsIGhpZ2hlci4KKyAgICBwcmVwZW5kX3BhdGggPSBGZWF0dXJlKGRiLCAiUHJlcGVuZFBhdGgiLCAiQWRkIHB5dGhvbi5leGUgdG8gUGF0aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGVuZCBbVEFSR0VURElSXSB0byB0aGUgc3lzdGVtIFBhdGggdmFyaWFibGUuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSAncHl0aG9uJyBpbnRvIGEgY29tbWFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAicHJvbXB0IHdpdGhvdXQgbmVlZGluZyB0aGUgZnVsbCBwYXRoLiIsIDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTIpCiAKLWRlZiBleHRyYWN0X21zdmNyOTAoKToKK2RlZiBleHRyYWN0X21zdmNyMTAwKCk6CiAgICAgIyBGaW5kIHRoZSByZWRpc3RyaWJ1dGFibGUgZmlsZXMKICAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIGFyY2ggPSAiYW1kNjQiCisgICAgICAgIGFyY2ggPSAieDY0IgogICAgIGVsc2U6CiAgICAgICAgIGFyY2ggPSAieDg2IgotICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydWUzkwQ09NTlRPT0xTJ10sIHIiLi5cLi5cVkNccmVkaXN0XCVzXE1pY3Jvc29mdC5WQzkwLkNSVCIgJSBhcmNoKQorICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydWUzEwMENPTU5UT09MUyddLCByIi4uXC4uXFZDXHJlZGlzdFwlc1xNaWNyb3NvZnQuVkMxMDAuQ1JUIiAlIGFyY2gpCiAKICAgICByZXN1bHQgPSBbXQogICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKLSAgICAjIG9taXQgbXN2Y205MCBhbmQgbXN2Y3A5MCwgYXMgdGhleSBhcmVuJ3QgcmVhbGx5IG5lZWRlZAotICAgIGZpbGVzID0gWyJNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiLCAibXN2Y3I5MC5kbGwiXQotICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpciwgZikKLSAgICAgICAga3cgPSB7J3NyYyc6cGF0aH0KLSAgICAgICAgaWYgZi5lbmRzd2l0aCgnLmRsbCcpOgotICAgICAgICAgICAga3dbJ3ZlcnNpb24nXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAwKQotICAgICAgICAgICAga3dbJ2xhbmd1YWdlJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgoZiwga3cpKQotICAgIHJldHVybiByZXN1bHQKKyAgICAjIEF0IGxlYXN0IGZvciBWUzIwMTAsIG1hbmlmZXN0cyBhcmUgbm8gbG9uZ2VyIHByb3ZpZGVkCisgICAgbmFtZSA9ICJtc3ZjcjEwMC5kbGwiCisgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG5hbWUpCisgICAga3cgPSB7J3NyYyc6cGF0aH0KKyAgICBrd1sndmVyc2lvbiddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDApCisgICAga3dbJ2xhbmd1YWdlJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMSkKKyAgICByZXR1cm4gbmFtZSwga3cKIAogZGVmIGdlbmVyYXRlX2xpY2Vuc2UoKToKICAgICBpbXBvcnQgc2h1dGlsLCBnbG9iCkBAIC04ODksNyArOTEyLDcgQEAKICAgICAgICAgZGlycyA9IGdsb2IuZ2xvYihzcmNkaXIrIi8uLi8iK3BhdCkKICAgICAgICAgaWYgbm90IGRpcnM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiQ291bGQgbm90IGZpbmQgIitzcmNkaXIrIi8uLi8iK3BhdAotICAgICAgICBpZiBsZW4oZGlycykgPiAyOgorICAgICAgICBpZiBsZW4oZGlycykgPiAyIGFuZCBub3Qgc25hcHNob3Q6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiTXVsdGlwbGUgY29waWVzIG9mICIrcGF0CiAgICAgICAgIGRpciA9IGRpcnNbMF0KICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKG9wZW4ob3MucGF0aC5qb2luKGRpciwgZmlsZSkpLCBvdXQpCkBAIC05MDQsMTYgKzkyNywyOCBAQAogICAgICAgICAgICAga3dbJ2NvbXBvbmVudGZsYWdzJ10gPSAyICNtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNPcHRpb25hbAogICAgICAgICBEaXJlY3RvcnkuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpCiAKLSAgICBkZWYgY2hlY2tfdW5wYWNrYWdlZChzZWxmKToKLSAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzLmRpc2NhcmQoJ19fcHljYWNoZV9fJykKLSAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzLmRpc2NhcmQoJy5zdm4nKQotICAgICAgICBpZiBzZWxmLnVucGFja2FnZWRfZmlsZXM6Ci0gICAgICAgICAgICBwcmludCAiV2FybmluZzogVW5wYWNrYWdlZCBmaWxlcyBpbiAlcyIgJSBzZWxmLmFic29sdXRlCi0gICAgICAgICAgICBwcmludCBzZWxmLnVucGFja2FnZWRfZmlsZXMKK2RlZiBoZ21hbmlmZXN0KCk6CisgICAgIyBGZXRjaCBmaWxlIGxpc3QgZnJvbSBNZXJjdXJpYWwKKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2hnJywgJ21hbmlmZXN0J10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAjIENyZWF0ZSBuZXN0ZWQgZGlyZWN0b3JpZXMgZm9yIGZpbGUgdHJlZQorICAgIHJlc3VsdCA9IHt9CisgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAgY29tcG9uZW50cyA9IGxpbmUuc3BsaXQoJy8nKQorICAgICAgICBkID0gcmVzdWx0CisgICAgICAgIHdoaWxlIGxlbihjb21wb25lbnRzKSA+IDE6CisgICAgICAgICAgICBkMSA9IGQuc2V0ZGVmYXVsdChjb21wb25lbnRzWzBdLCB7fSkKKyAgICAgICAgICAgIGQgPSBkMQorICAgICAgICAgICAgZGVsIGNvbXBvbmVudHNbMF0KKyAgICAgICAgZFtjb21wb25lbnRzWzBdXSA9IE5vbmUKKyAgICByZXR1cm4gcmVzdWx0CisKIAogIyBTZWUgIkZpbGUgVGFibGUiLCAiQ29tcG9uZW50IFRhYmxlIiwgIkRpcmVjdG9yeSBUYWJsZSIsCiAjICJGZWF0dXJlQ29tcG9uZW50cyBUYWJsZSIKIGRlZiBhZGRfZmlsZXMoZGIpOgorICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKKyAgICBoZ2ZpbGVzID0gaGdtYW5pZmVzdCgpCiAgICAgY2FiID0gQ0FCKCJweXRob24iKQogICAgIHRtcGZpbGVzID0gW10KICAgICAjIEFkZCBhbGwgZXhlY3V0YWJsZXMsIGljb25zLCB0ZXh0IGZpbGVzIGludG8gdGhlIFRBUkdFVERJUiBjb21wb25lbnQKQEAgLTkzMiwxMSArOTY3LDMyIEBACiAKICAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlc1NoYXJlZERsbFJlZkNvdW50ID0gOCwgc2VlICJDb21wb25lbnQgVGFibGUiCiAgICAgZGxsZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgc3JjZGlyLCAiRExMRElSIiwgIi4iKQorICAgIGxhdW5jaGVyZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgc3JjZGlyLCAiTEFVTkNIRVJESVIiLCAiLiIpCisKKyAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlczY0Yml0ID0gMjU2OyB0aGlzIGRpc2FibGVzIHJlZ2lzdHJ5IHJlZGlyZWN0aW9uCisgICAgIyB0byBhbGxvdyBzZXR0aW5nIHRoZSBTaGFyZWRETExzIGtleSBpbiB0aGUgNjQtYml0IHBvcnRpb24gZXZlbiBmb3IgYQorICAgICMgMzItYml0IGluc3RhbGxlci4KKyAgICAjIFhYWCBkb2VzIHRoaXMgc3RpbGwgYWxsb3cgdG8gaW5zdGFsbCB0aGUgY29tcG9uZW50IG9uIGEgMzItYml0IHN5c3RlbT8KKyAgICAjIFBpY2sgdXAgMzItYml0IGJpbmFyeSBhbHdheXMKKyAgICBsYXVuY2hlcnNyYyA9IFBDQlVJTEQKKyAgICBpZiBsYXVuY2hlcnNyYy5sb3dlcigpID09ICdwY2J1aWxkXFx4NjQtcGdvJzoKKyAgICAgICAgbGF1bmNoZXJzcmMgPSAnUENCdWlsZFxcd2luMzItcGdvJworICAgIGlmIGxhdW5jaGVyc3JjLmxvd2VyKCkgPT0gJ3BjYnVpbGRcXGFtZDY0JzoKKyAgICAgICAgbGF1bmNoZXJzcmMgPSAnUENCdWlsZCcKKyAgICBsYXVuY2hlciA9IG9zLnBhdGguam9pbihzcmNkaXIsIGxhdW5jaGVyc3JjLCAicHkuZXhlIikKKyAgICBsYXVuY2hlcmRpci5zdGFydF9jb21wb25lbnQoImxhdW5jaGVyIiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHkuZXhlIikKKyAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVyLCAxKSkKKyAgICBsYXVuY2hlcncgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5dy5leGUiKQorICAgIGxhdW5jaGVyZGlyLnN0YXJ0X2NvbXBvbmVudCgibGF1bmNoZXJ3IiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHl3LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuYWRkX2ZpbGUobGF1bmNoZXJ3LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMSkpCiAKICAgICBweWRsbCA9ICJweXRob24lcyVzLmRsbCIgJSAobWFqb3IsIG1pbm9yKQogICAgIHB5ZGxsc3JjID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgcHlkbGwpCiAgICAgZGxsZGlyLnN0YXJ0X2NvbXBvbmVudCgiRExMRElSIiwgZmxhZ3MgPSA4LCBrZXlmaWxlID0gcHlkbGwsIHV1aWQgPSBweXRob25kbGxfdXVpZCkKLSAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCiAgICAgcHl2ZXJzaW9uID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHB5ZGxsc3JjLCAwKQogICAgIGlmIG5vdCBzbmFwc2hvdDoKICAgICAgICAgIyBGb3IgcmVsZWFzZXMsIHRoZSBQeXRob24gRExMIGhhcyB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZQpAQCAtOTUyLDkgKzEwMDgsOCBAQAogICAgICMgcG9pbnRpbmcgdG8gdGhlIHJvb3QgZGlyZWN0b3J5CiAgICAgcm9vdC5zdGFydF9jb21wb25lbnQoIm1zdmNyOTAiLCBmZWF0dXJlPXByaXZhdGVfY3J0KQogICAgICMgUmVzdWx0cyBhcmUgSUQsa2V5d29yZCBwYWlycwotICAgIG1hbmlmZXN0LCBjcnRkbGwgPSBleHRyYWN0X21zdmNyOTAoKQotICAgIHJvb3QuYWRkX2ZpbGUobWFuaWZlc3RbMF0sICoqbWFuaWZlc3RbMV0pCi0gICAgcm9vdC5hZGRfZmlsZShjcnRkbGxbMF0sICoqY3J0ZGxsWzFdKQorICAgIGNydGRsbCwga3dkcyA9IGV4dHJhY3RfbXN2Y3IxMDAoKQorICAgIHJvb3QuYWRkX2ZpbGUoY3J0ZGxsLCAqKmt3ZHMpCiAgICAgIyBDb3B5IHRoZSBtYW5pZmVzdAogICAgICMgQWN0dWFsbHksIGRvbid0IGRvIHRoYXQgYW55bW9yZSAtIG5vIERMTCBpbiBETExzIHNob3VsZCBoYXZlIGEgbWFuaWZlc3QKICAgICAjIGRlcGVuZGVuY3kgb24gbXN2Y3I5MC5kbGwgYW55bW9yZSwgc28gdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeQpAQCAtOTc1LDEwNCArMTAzMCw0MCBAQAogCiAgICAgIyBBZGQgYWxsIC5weSBmaWxlcyBpbiBMaWIsIGV4Y2VwdCB0a2ludGVyLCB0ZXN0CiAgICAgZGlycyA9IFtdCi0gICAgcHlkaXJzID0gWyhyb290LCJMaWIiKV0KKyAgICBweWRpcnMgPSBbKHJvb3QsICJMaWIiLCBoZ2ZpbGVzWyJMaWIiXSwgZGVmYXVsdF9mZWF0dXJlKV0KICAgICB3aGlsZSBweWRpcnM6CiAgICAgICAgICMgQ29tbWl0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgb3IgZWxzZSBpbnN0YWxsZXIgd2lsbCBjb21wbGFpbgogICAgICAgICBkYi5Db21taXQoKQotICAgICAgICBwYXJlbnQsIGRpciA9IHB5ZGlycy5wb3AoKQotICAgICAgICBpZiBkaXIgPT0gIi5zdm4iIG9yIGRpciA9PSAnX19weWNhY2hlX18nIG9yIGRpci5zdGFydHN3aXRoKCJwbGF0LSIpOgorICAgICAgICBwYXJlbnQsIGRpciwgZmlsZXMsIGZlYXR1cmUgPSBweWRpcnMucG9wKCkKKyAgICAgICAgaWYgZGlyLnN0YXJ0c3dpdGgoInBsYXQtIik6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbGlmIGRpciBpbiBbInRraW50ZXIiLCAiaWRsZWxpYiIsICJJY29ucyJdOgorICAgICAgICBpZiBkaXIgaW4gWyJ0a2ludGVyIiwgImlkbGVsaWIiLCAidHVydGxlZGVtbyJdOgogICAgICAgICAgICAgaWYgbm90IGhhdmVfdGNsOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmZWF0dXJlID0gdGNsdGsKICAgICAgICAgICAgIHRjbHRrLnNldF9jdXJyZW50KCkKLSAgICAgICAgZWxpZiBkaXIgaW4gWyd0ZXN0JywgJ3Rlc3RzJywgJ2RhdGEnLCAnb3V0cHV0J106Ci0gICAgICAgICAgICAjIHRlc3Q6IExpYiwgTGliL2VtYWlsLCBMaWIvY3R5cGVzLCBMaWIvc3FsaXRlMwotICAgICAgICAgICAgIyB0ZXN0czogTGliL2Rpc3R1dGlscwotICAgICAgICAgICAgIyBkYXRhOiBMaWIvZW1haWwvdGVzdAotICAgICAgICAgICAgIyBvdXRwdXQ6IExpYi90ZXN0Ci0gICAgICAgICAgICB0ZXN0c3VpdGUuc2V0X2N1cnJlbnQoKQorICAgICAgICBlbGlmIGRpciBpbiAoJ3Rlc3QnLCAndGVzdHMnKToKKyAgICAgICAgICAgIGZlYXR1cmUgPSB0ZXN0c3VpdGUKICAgICAgICAgZWxpZiBub3QgaGF2ZV9jdHlwZXMgYW5kIGRpciA9PSAiY3R5cGVzIjoKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQorICAgICAgICBmZWF0dXJlLnNldF9jdXJyZW50KCkKICAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcGFyZW50LCBkaXIsIGRpciwgIiVzfCVzIiAlIChwYXJlbnQubWFrZV9zaG9ydChkaXIpLCBkaXIpKQotICAgICAgICAjIEFkZCBhZGRpdGlvbmFsIGZpbGVzCiAgICAgICAgIGRpcnMuYXBwZW5kKGxpYikKLSAgICAgICAgbGliLmdsb2IoIioudHh0IikKLSAgICAgICAgaWYgZGlyPT0nc2l0ZS1wYWNrYWdlcyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmaWxlcyA9IGxpYi5nbG9iKCIqLnB5IikKLSAgICAgICAgZmlsZXMgKz0gbGliLmdsb2IoIioucHl3IikKLSAgICAgICAgaWYgZmlsZXM6Ci0gICAgICAgICAgICAjIEFkZCBhbiBlbnRyeSB0byB0aGUgUmVtb3ZlRmlsZSB0YWJsZSB0byByZW1vdmUgYnl0ZWNvZGUgZmlsZXMuCi0gICAgICAgICAgICBsaWIucmVtb3ZlX3B5YygpCi0gICAgICAgICMgcGFja2FnZSBSRUFETUVzIGlmIHByZXNlbnQKLSAgICAgICAgbGliLmdsb2IoIlJFQURNRSIpCi0gICAgICAgIGlmIGRpcj09J0xpYic6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoJ3dzZ2lyZWYuZWdnLWluZm8nKQotICAgICAgICBpZiBkaXI9PSd0ZXN0JyBhbmQgcGFyZW50LnBoeXNpY2FsPT0nTGliJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMTg1dGVzdC5kYiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImF1ZGlvdGVzdC5hdSIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInNnbWxfaW5wdXQuaHRtbCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInRlc3R0YXIudGFyIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiY2hlY2tfc291bmRjYXJkLnZicyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImVtcHR5LnZicyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlNpbmUtMTAwMEh6LTMwMG1zLmFpZiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIm1pbWUudHlwZXMiKQotICAgICAgICAgICAgbGliLmdsb2IoIioudXVlIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnBlbSIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiKi5wY2siKQotICAgICAgICAgICAgbGliLmdsb2IoImNmZ3BhcnNlci4qIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiemlwX2NwNDM3X2hlYWRlci56aXAiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ6aXBkaXIuemlwIikKLSAgICAgICAgaWYgZGlyPT0nY2FwYXRoJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLjAiKQotICAgICAgICBpZiBkaXI9PSd0ZXN0cycgYW5kIHBhcmVudC5waHlzaWNhbD09J2Rpc3R1dGlscyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlNldHVwLnNhbXBsZSIpCi0gICAgICAgIGlmIGRpcj09J2RlY2ltYWx0ZXN0ZGF0YSc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi5kZWNUZXN0IikKLSAgICAgICAgaWYgZGlyPT0neG1sdGVzdGRhdGEnOgotICAgICAgICAgICAgbGliLmdsb2IoIioueG1sIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidGVzdC54bWwub3V0IikKLSAgICAgICAgaWYgZGlyPT0nb3V0cHV0JzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJ0ZXN0XyoiKQotICAgICAgICBpZiBkaXI9PSdzbmRoZHJkYXRhJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJzbmRoZHIuKiIpCi0gICAgICAgIGlmIGRpcj09J2lkbGVsaWInOgotICAgICAgICAgICAgbGliLmdsb2IoIiouZGVmIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiaWRsZS5iYXQiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJDaGFuZ2VMb2ciKQotICAgICAgICBpZiBkaXI9PSJJY29ucyI6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi5naWYiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJpZGxlLmljbnMiKQotICAgICAgICBpZiBkaXI9PSJjb21tYW5kIiBhbmQgcGFyZW50LnBoeXNpY2FsPT0iZGlzdHV0aWxzIjoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJ3aW5pbnN0Ki5leGUiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJjb21tYW5kX3RlbXBsYXRlIikKLSAgICAgICAgaWYgZGlyPT0ibGliMnRvMyI6Ci0gICAgICAgICAgICBsaWIucmVtb3ZlZmlsZSgicGlja2xlIiwgIioucGlja2xlIikKLSAgICAgICAgaWYgZGlyPT0ibWFjaG9saWIiOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUuY3R5cGVzIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCJmZXRjaF9tYWNob2xpYioiKQotICAgICAgICBpZiBkaXI9PSd0dXJ0bGVkZW1vJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidHVydGxlLmNmZyIpCi0gICAgICAgIGlmIGRpcj09InB5ZG9jX2RhdGEiOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJfcHlkb2MuY3NzIikKLSAgICAgICAgaWYgZGlyPT0iZGF0YSIgYW5kIHBhcmVudC5waHlzaWNhbD09InRlc3QiIGFuZCBwYXJlbnQuYmFzZWRpci5waHlzaWNhbD09ImVtYWlsIjoKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgY29udGFpbiBhbGwgbm9uLS5zdm4gZmlsZXMgbGlzdGVkIGluIHN1YnZlcnNpb24KLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobGliLmFic29sdXRlKToKLSAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCIudHh0Iikgb3IgZj09Ii5zdm4iOmNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgiLmF1Iikgb3IgZi5lbmRzd2l0aCgiLmdpZiIpOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoZikKKyAgICAgICAgaGFzX3B5ID0gRmFsc2UKKyAgICAgICAgZm9yIG5hbWUsIHN1YmRpciBpbiBmaWxlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgc3ViZGlyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ1JFQURNRSc6CisgICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV0FSTklORzogTmV3IGZpbGUgJXMgaW4gZW1haWwvdGVzdC9kYXRhIiAlIGYpCi0gICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobGliLmFic29sdXRlKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgZikpOgotICAgICAgICAgICAgICAgIHB5ZGlycy5hcHBlbmQoKGxpYiwgZikpCi0gICAgZm9yIGQgaW4gZGlyczoKLSAgICAgICAgZC5jaGVja191bnBhY2thZ2VkKCkKKyAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGhhc19weSA9IGhhc19weSBvciBuYW1lLmVuZHN3aXRoKCIucHkiKSBvciBuYW1lLmVuZHN3aXRoKCIucHl3IikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgbmFtZSkpCisgICAgICAgICAgICAgICAgcHlkaXJzLmFwcGVuZCgobGliLCBuYW1lLCBzdWJkaXIsIGZlYXR1cmUpKQorCisgICAgICAgIGlmIGhhc19weToKKyAgICAgICAgICAgIGxpYi5yZW1vdmVfcHljKCkKICAgICAjIEFkZCBETExzCiAgICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKICAgICBsaWIgPSBETExzCkBAIC0xMTU5LDYgKzExNTAsOCBAQAogICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQogICAgICAgICBpZiBmID09ICdTY3JpcHRzJzoKICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMnRvMy5weSIsIHNyYz0iMnRvMyIpCisgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5ZG9jMy5weSIsIHNyYz0icHlkb2MzIikKKyAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHl2ZW52LnB5Iiwgc3JjPSJweXZlbnYiKQogICAgICAgICAgICAgaWYgaGF2ZV90Y2w6CiAgICAgICAgICAgICAgICAgbGliLnN0YXJ0X2NvbXBvbmVudCgicHlkb2NndWkucHl3IiwgdGNsdGssIGtleWZpbGU9InB5ZG9jZ3VpLnB5dyIpCiAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweWRvY2d1aS5weXciKQpAQCAtMTE5MCw2ICsxMTgzLDggQEAKICAgICAgICAgICAgICAgICJJbnN0YWxsUGF0aCIpLAogICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRvYyIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAogICAgICAgICAgICAgICAgIkRvY3VtZW50YXRpb24iKSwKKyAgICAgICAgICAgICAgKCJSRUdJU1RSWS5wYXRoIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCisgICAgICAgICAgICAgIE5vbmUpLAogICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRlZiIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LAogICAgICAgICAgICAgICAgTm9uZSwgTm9uZSldICsgdGNsZGF0YSkKICAgICAjIFNlZSAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiLgpAQCAtMTIwNiw2ICsxMjAxLDcgQEAKICAgICBhZGRfZGF0YShkYiwgIkZlYXR1cmVDb21wb25lbnRzIiwKICAgICAgICAgICAgICBbKGRlZmF1bHRfZmVhdHVyZS5pZCwgIlJFR0lTVFJZIiksCiAgICAgICAgICAgICAgIChodG1sZmlsZXMuaWQsICJSRUdJU1RSWS5kb2MiKSwKKyAgICAgICAgICAgICAgKHByZXBlbmRfcGF0aC5pZCwgIlJFR0lTVFJZLnBhdGgiKSwKICAgICAgICAgICAgICAgKGV4dF9mZWF0dXJlLmlkLCAiUkVHSVNUUlkuZGVmIildICsKICAgICAgICAgICAgICAgdGNsZGF0YQogICAgICAgICAgICAgICApCkBAIC0xMjQ0LDExICsxMjQwLDExIEBACiAgICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiwgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICNWZXJicwogICAgICAgICAgICAgICgicHkub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIiIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbi5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgKCJweXcub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIk5vQ29uIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9udy5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weXcuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICgicHljLm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJDb21waWxlZCIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbi5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgXSArIHRjbF92ZXJicyArIFsKICAgICAgICAgICAgICAjSWNvbnMKICAgICAgICAgICAgICAoInB5Lmljb24iLCAtMSwgcGF0MiAlICh0ZXN0cHJlZml4LCAiIiksICIiLApAQCAtMTM0Nyw5ICsxMzQzLDkgQEAKICMgTWVyZ2UgQ1JUIGludG8gTVNJIGZpbGUuIFRoaXMgcmVxdWlyZXMgdGhlIGRhdGFiYXNlIHRvIGJlIGNsb3NlZC4KIG1vZF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsiUHJvZ3JhbUZpbGVzIl0sICJDb21tb24gRmlsZXMiLCAiTWVyZ2UgTW9kdWxlcyIpCiBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Nl94NjQubXNtIiwgInBvbGljeV85XzBfTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Nl94NjQubXNtIl0KKyAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkMxMDBfQ1JUX3g2NC5tc20iXQogZWxzZToKLSAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkM5MF9DUlRfeDg2Lm1zbSIsInBvbGljeV85XzBfTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Ni5tc20iXQorICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDg2Lm1zbSJdCiAKIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2R1bGVzKToKICAgICBtb2R1bGVzW2ldID0gb3MucGF0aC5qb2luKG1vZF9kaXIsIG4pCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpbGliLnB5IGIvVG9vbHMvbXNpL21zaWxpYi5weQppbmRleCA1Nzk1ZDBlLi40NzJkOWQ0IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbXNpbGliLnB5CisrKyBiL1Rvb2xzL21zaS9tc2lsaWIucHkKQEAgLTQwOCw3ICs0MDgsNyBAQAogICAgICAgICBzZWxmLnBoeXNpY2FsID0gcGh5c2ljYWwKICAgICAgICAgc2VsZi5sb2dpY2FsID0gbG9naWNhbAogICAgICAgICBzZWxmLmNvbXBvbmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHNldHMuU2V0KCkKKyAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHt9CiAgICAgICAgIHNlbGYuaWRzID0gc2V0cy5TZXQoKQogICAgICAgICBzZWxmLmtleWZpbGVzID0ge30KICAgICAgICAgc2VsZi5jb21wb25lbnRmbGFncyA9IGNvbXBvbmVudGZsYWdzCkBAIC00NTYsMjMgKzQ1NiwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgWyhmZWF0dXJlLmlkLCBjb21wb25lbnQpXSkKIAogICAgIGRlZiBtYWtlX3Nob3J0KHNlbGYsIGZpbGUpOgorICAgICAgICBsb25nID0gZmlsZQogICAgICAgICBmaWxlID0gcmUuc3ViKHInW1w/fD48Oi8qIissOz1cW1xdXScsICdfJywgZmlsZSkgIyByZXN0cmljdGlvbnMgb24gc2hvcnQgbmFtZXMKLSAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIikKKyAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIiwgMSkKICAgICAgICAgaWYgbGVuKHBhcnRzKT4xOgotICAgICAgICAgICAgc3VmZml4ID0gcGFydHNbLTFdLnVwcGVyKCkKKyAgICAgICAgICAgIHN1ZmZpeCA9IHBhcnRzWzFdLnVwcGVyKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1ZmZpeCA9IE5vbmUKKyAgICAgICAgICAgIHN1ZmZpeCA9ICcnCiAgICAgICAgIHByZWZpeCA9IHBhcnRzWzBdLnVwcGVyKCkKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPD0gOCBhbmQgKG5vdCBzdWZmaXggb3IgbGVuKHN1ZmZpeCk8PTMpOgorICAgICAgICBpZiBsZW4ocHJlZml4KSA8PSA4IGFuZCAnLicgbm90IGluIHN1ZmZpeCBhbmQgbGVuKHN1ZmZpeCkgPD0gMzoKICAgICAgICAgICAgIGlmIHN1ZmZpeDoKICAgICAgICAgICAgICAgICBmaWxlID0gcHJlZml4KyIuIitzdWZmaXgKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeAotICAgICAgICAgICAgYXNzZXJ0IGZpbGUgbm90IGluIHNlbGYuc2hvcnRfbmFtZXMKKyAgICAgICAgICAgIGFzc2VydCBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzLCAoZmlsZSwgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6Nl0KICAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICBzdWZmaXggPSBzdWZmaXhbOjNdCisgICAgICAgICAgICAgICAgIyBsYXN0IHRocmVlIGNoYXJhY3RlcnMgb2YgbGFzdCBzdWZmaXgKKyAgICAgICAgICAgICAgICBzdWZmaXggPSBzdWZmaXgucnNwbGl0KCcuJylbLTFdWzozXQogICAgICAgICAgICAgcG9zID0gMQogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBpZiBzdWZmaXg6CkBAIC00ODQsNyArNDg2LDcgQEAKICAgICAgICAgICAgICAgICBhc3NlcnQgcG9zIDwgMTAwMDAKICAgICAgICAgICAgICAgICBpZiBwb3MgaW4gKDEwLCAxMDAsIDEwMDApOgogICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBwcmVmaXhbOi0xXQotICAgICAgICBzZWxmLnNob3J0X25hbWVzLmFkZChmaWxlKQorICAgICAgICBzZWxmLnNob3J0X25hbWVzW2ZpbGVdID0gbG9uZwogICAgICAgICByZXR1cm4gZmlsZQogCiAgICAgZGVmIGFkZF9maWxlKHNlbGYsIGZpbGUsIHNyYz1Ob25lLCB2ZXJzaW9uPU5vbmUsIGxhbmd1YWdlPU5vbmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3V1aWRzLnB5IGIvVG9vbHMvbXNpL3V1aWRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGQxN2FkLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS91dWlkcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgVGhpcyBzaG91bGQgYmUgZXh0ZW5kZWQgZm9yIGVhY2ggUHl0aG9uIHJlbGVhc2UuCi0jIFRoZSBwcm9kdWN0IGNvZGUgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIG5hbWUgb2YgdGhlIE1TSSBmaWxlCi0jIGNoYW5nZXMsIGFuZCB3aGVuIG5ldyBjb21wb25lbnQgY29kZXMgYXJlIGlzc3VlZCBmb3IgZXhpc3RpbmcKLSMgY29tcG9uZW50cy4gU2VlICJDaGFuZ2luZyB0aGUgUHJvZHVjdCBDb2RlIi4gQXMgd2UgY2hhbmdlIHRoZQotIyBjb21wb25lbnQgY29kZXMgd2l0aCBldmVyeSBidWlsZCwgd2UgbmVlZCBhIG5ldyBwcm9kdWN0IGNvZGUKLSMgZWFjaCB0aW1lLiBGb3IgaW50ZXJtZWRpYXRlIChzbmFwc2hvdCkgcmVsZWFzZXMsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkKLSMgZ2VuZXJhdGVkLiBGb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIHdlIHJlY29yZCB0aGUgcHJvZHVjdCBjb2RlcywKLSMgc28gcGVvcGxlIGNhbiByZWZlciB0byB0aGVtLgotcHJvZHVjdF9jb2RlcyA9IHsKLSAgICAnMi41LjEwMSc6ICd7YmMxNGNlM2UtNWU3Mi00YTY0LWFjMWYtYmY1OWE1NzE4OThjfScsICMgMi41YTEKLSAgICAnMi41LjEwMic6ICd7NWVlZDUxYzEtOGU5ZC00MDcxLTk0YzUtYjQwZGU1ZDQ5YmE1fScsICMgMi41YTIKLSAgICAnMi41LjEwMyc6ICd7NzNkY2Q5NjYtZmZlYy00MTVmLWJiMzktODM0MmMxZjQ3MDE3fScsICMgMi41YTMKLSAgICAnMi41LjExMSc6ICd7Yzc5N2VjZjgtYThlNi00ZmVjLWJiOTktNTI2YjY1ZjI4NjI2fScsICMgMi41YjEKLSAgICAnMi41LjExMic6ICd7MzJiZWI3NzQtZjYyNS00MzlkLWI1ODctNzE4NzQ4N2JhZjE1fScsICMgMi41YjIKLSAgICAnMi41LjExMyc6ICd7ODlmMjM5MTgtMTFjZi00ZjA4LWJlMTMtYjliMmU2NDYzZmQ5fScsICMgMi41YjMKLSAgICAnMi41LjEyMSc6ICd7OGU5MzIxYmMtNmIyNC00OGEzLThmZDQtYzk1ZjhlNTMxZTVmfScsICMgMi41YzEKLSAgICAnMi41LjEyMic6ICd7YTZjZDUwOGQtOTU5OS00NWRhLWE0NDEtY2JmZmE5ZjdlMDcwfScsICMgMi41YzIKLSAgICAnMi41LjE1MCc6ICd7MGEyYzU4NTQtNTU3ZS00OGM4LTgzNWEtM2I5ZjA3NGJkY2FhfScsICMgMi41LjAKLSAgICAnMi41LjExMjEnOid7MDM3OGI0M2UtNjE4NC00YzJmLWJlMWEtNGEzNjc3ODFjZDU0fScsICMgMi41LjFjMQotICAgICcyLjUuMTE1MCc6J3szMTgwMDAwNC02Mzg2LTQ5OTktYTUxOS01MThmMmQ3OGQ4ZjB9JywgIyAyLjUuMQotICAgICcyLjUuMjE1MCc6J3s2MzA0YTdkYS0xMTMyLTRlOTEtYTM0My1hMjk2MjY5ZWFiOGF9JywgIyAyLjUuMmMxCi0gICAgJzIuNS4yMTUwJzonezZiOTc2YWRmLThhZTgtNDM0ZS1iMjgyLWEwNmM3ZjYyNGQyZn0nLCAjIDIuNS4yCi0gICAgJzIuNi4xMDEnOiAnezBiYTgyZTFiLTUyZmQtNGUwMy04NjEwLWE2Yzc2MjM4ZThhOH0nLCAjIDIuNmExCi0gICAgJzIuNi4xMDInOiAnezNiMjdlMTZjLTU2ZGItNDU3MC1hMmQzLWU5YTI2MTgwYzYwYn0nLCAjIDIuNmEyCi0gICAgJzIuNi4xMDMnOiAne2NkMDZhOWM1LWJkZTUtNGJkNy05ODc0LTQ4OTMzOTk3MTIyYX0nLCAjIDIuNmEzCi0gICAgJzIuNi4xMDQnOiAne2RjNmVkNjM0LTQ3NGEtNGE1MC1hNTQ3LThkZTRiNzQ5MWU1M30nLCAjIDIuNmE0Ci0gICAgJzIuNi4xMTEnOiAnezNmODIwNzlhLTViZWUtNGM0YS04YTQxLTgyOTIzODllMjRhZX0nLCAjIDIuNmIxCi0gICAgJzIuNi4xMTInOiAnezhhMGU1OTcwLWYzZTYtNDczNy05YTJiLWJjNWZmMGYxNWZiNX0nLCAjIDIuNmIyCi0gICAgJzIuNi4xMTMnOiAne2RmNGY1YzIxLTZmY2MtNDU0MC05NWRlLTg1ZmViYTYzNGU3Nn0nLCAjIDIuNmIzCi0gICAgJzIuNi4xMjEnOiAne2JiZDM0NDY0LWRkZWItNDAyOC05OWU1LWYxNmM0YThmYmRiM30nLCAjIDIuNmMxCi0gICAgJzIuNi4xMjInOiAnezhmNjQ3ODdlLWEwMjMtNGM2MC1iZmVlLTI1ZDNhM2Y1OTJjNn0nLCAjIDIuNmMyCi0gICAgJzIuNi4xNTAnOiAnezExMGViNWM0LWU5OTUtNGNmYi1hYjgwLWE1ZjMxNWJlYTllOH0nLCAjIDIuNi4wCi0gICAgJzIuNi4xMTUwJzonezljYzg5MTcwLTAwMGItNDU3ZC05MWYxLTUzNjkxZjg1YjIyM30nLCAjIDIuNi4xCi0gICAgJzIuNi4yMTIxJzone2FkYWM0MTJiLWIyMDktNGMxNS1iNmFiLWRjYTFiNmU0NzE0NH0nLCAjIDIuNi4yYzEKLSAgICAnMi42LjIxNTAnOid7MjRhYWI0MjAtNGUzMC00NDk2LTk3MzktM2UyMTZmM2RlNmFlfScsICMgMi42LjIKLSAgICAnMi42LjMxMjEnOid7YTczZTAyNTQtZGNkYS00ZmU0LWJmMzctYzdlMWM0ZjRlYmI2fScsICMgMi42LjNjMQotICAgICcyLjYuMzE1MCc6J3szZDlhYzA5NS1lMTE1LTRlOTQtYmRlZi03ZjdlZGYxNzY5N2R9JywgIyAyLjYuMwotICAgICcyLjYuNDEyMSc6J3s3MjdkZTYwNS0wMzU5LTQ2MDYtYTk0Yi1jMjAzMzY1MjM3OWJ9JywgIyAyLjYuNGMxCi0gICAgJzIuNi40MTIyJzonezRmNzYwM2M2LTYzNTItNDI5OS1hMzk4LTE1MGEzMWIxOWFjY30nLCAjIDIuNi40YzIKLSAgICAnMi42LjQxNTAnOid7ZTczOTRhMGYtM2Y4MC00NWIxLTg3ZmMtYWJjZDUxODkzMjQ2fScsICMgMi42LjQKLSAgICAnMi42LjUxMjEnOid7ZTBlMjczZDctNzU5OC00NzAxLTgzMjUtYzkwYzA2OWZkNWZmfScsICMgMi42LjVjMQotICAgICcyLjYuNTEyMic6J3tmYTIyN2I3Ni0wNjcxLTRkYzYtYjgyNi1jMmZmMmE3MGRmZDV9JywgIyAyLjYuNWMyCi0gICAgJzIuNi41MTUwJzonezQ3MjNmMTk5LWZhNjQtNDIzMy04ZTZlLTlmY2NjOTVhMThlZX0nLCAjIDIuNi41Ci0gICAgJzIuNy4xMDEnOiAne2VjYTFiYmVmLTQzMmMtNDlhZS1hNjY3LWMyMTNjYzdiYmYyMn0nLCAjIDIuN2ExCi0gICAgJzIuNy4xMDInOiAnezIxY2UxNmVkLTczYzQtNDYwZC05YjExLTUyMmY0MTdiMjA5MH0nLCAjIDIuN2EyCi0gICAgJzIuNy4xMDMnOiAnezZlN2RiZDU1LWJhNGEtNDhhYy1hNjg4LTZjNzVkYjRkNzUwMH0nLCAjIDIuN2EzCi0gICAgJzIuNy4xMDQnOiAne2VlNzc0YmEzLTc0YTUtNDhkOS1iNDI1LWIzNWEyODcyNjBjOH0nLCAjIDIuN2E0Ci0gICAgJzIuNy4xMTEnOiAnezljZmQ5ZWM3LWE5YzctNDk4MC1hMWM2LTA1NGZjNjQ5M2ViM30nLCAjIDIuN2IxCi0gICAgJzIuNy4xMTInOiAnezlhNzJmYWY2LWMzMDQtNDE2NS04NTk1LTkyOTFmZjMwY2FjNn0nLCAjIDIuN2IyCi0gICAgJzIuNy4xMjEnOiAne2Y1MzBjOTRhLWRkNTMtNGRlOS05NDhlLWI2MzJiOWNiNDhkMn0nLCAjIDIuN2MxCi0gICAgJzIuNy4xMjInOiAne2Y4MDkwNWQyLWRkOGQtNGI4ZS04YTQwLWMyM2M5M2RjYTA3ZH0nLCAjIDIuN2MyCi0gICAgJzIuNy4xNTAnOiAnezIwYzMxNDM1LTJhMGEtNDU4MC1iZThiLWFjMDZmYzI0M2NhNH0nLCAjIDIuNy4wCi0gICAgJzMuMC4xMDEnOiAnezg1NTQyNjNhLTMyNDItNDg1Ny05MzU5LWFhODdiYzJjNThjMn0nLCAjIDMuMGExCi0gICAgJzMuMC4xMDInOiAnezY5MmQ2ZTJjLWYwYWMtNDBiOC1hMTMzLTcxOTFhZWViNjdmOX0nLCAjIDMuMGEyCi0gICAgJzMuMC4xMDMnOiAnezQ5Y2IyOTk1LTc1MWEtNDc1My1iZTdhLWQwYjFiYjU4NWUwNn0nLCAjIDMuMGEzCi0gICAgJzMuMC4xMDQnOiAnezg3Y2IwMTllLTE5ZmQtNDIzOC1iMWM3LTg1NzUxNDM3ZDY0Nn0nLCAjIDMuMGE0Ci0gICAgJzMuMC4xMDUnOiAne2NmMjY1OWFmLTE5ZWMtNDNkMi04YzM1LTBmNmEwOTQzOWQ0Mn0nLCAjIDMuMGE1Ci0gICAgJzMuMC4xMTEnOiAnezM2YzI2ZjU1LTgzN2QtNDVjZi04NDhjLTVmNWMwZmI0N2EyOH0nLCAjIDMuMGIxCi0gICAgJzMuMC4xMTInOiAnezA1NmEwZmJjLWM4ZmUtNGM2MS1hYWRlLWM0NDExYjcwYzk5OH0nLCAjIDMuMGIyCi0gICAgJzMuMC4xMTMnOiAnezJiMmU4OWE5LTgzYWYtNDNmOS1iN2Q1LTk2ZTgwYzVhM2YyNn0nLCAjIDMuMGIzCi0gICAgJzMuMC4xMTQnOiAne2U5NWMzMWFmLTY5YmUtNGRkNy05NmU2LWU1ZmM4NWU2NjBlNn0nLCAjIDMuMGI0Ci0gICAgJzMuMC4xMjEnOiAne2QwOTc5YzVlLWNkM2MtNDJlYy1iZTRjLWUyOTRkYTc5MzU3M30nLCAjIDMuMGMxCi0gICAgJzMuMC4xMjInOiAne2Y3MDdiOGU5LWEyNTctNDA0NS04MThlLTQ5MjNmYzIwZmJiNn0nLCAjIDMuMGMyCi0gICAgJzMuMC4xMjMnOiAnezVlNzIwOGYxLTg2NDMtNGVhMi1hYjVlLTQ2NDQ4ODcxMTJlM30nLCAjIDMuMGMzCi0gICAgJzMuMC4xNTAnOiAne2UwZTU2ZTIxLTU1ZGUtNGY3Ny1hMTA5LTFiYWE3MjM0ODc0M30nLCAjIDMuMC4wCi0gICAgJzMuMC4xMTIxJzone2QzNWIxZWE1LTNkNzAtNDg3Mi1iZjdlLWNkMDY2YTc3YTljOX0nLCAjIDMuMC4xYzEKLSAgICAnMy4wLjExNTAnOid7ZGUyZjJkOWMtNTNlMi00MGVlLTgyMDktNzRkYTYzY2IwNjBlfScsICMgMy4wLjEKLSAgICAnMy4wLjIxMjEnOid7Y2VmNzllN2YtOTgwOS00OWUyLWFmZDItZTI0MTQ4ZDdjODU1fScsICMgMy4wLjJjMQotICAgICczLjAuMjE1MCc6J3swY2YzYjk1YS04MzgyLTQ2MDctOTc3OS1jMzY0MDdmZjM2MmN9JywgIyAzLjAuMgotICAgICczLjEuMTAxJzogJ3tjNDIzZWFkYS1jNDk4LTRkNTEtOWViNC1iZmVhZTY0N2UwYTB9JywgIyAzLjFhMQotICAgICczLjEuMTAyJzogJ3tmNmUxOTliZi1kYzY0LTQyZjMtODdkNC0xNTI1OTkxYTAxM2V9JywgIyAzLjFhMgotICAgICczLjEuMTExJzogJ3tjM2M4Mjg5My02OWIyLTQ2NzYtODU1NC0xYjZlZTZjMTkxZTl9JywgIyAzLjFiMQotICAgICczLjEuMTIxJzogJ3tkYTJiNTE3MC0xMmYzLTRkOTktOGExZi01NDkyNmNjYTdhY2R9JywgIyAzLjFjMQotICAgICczLjEuMTIyJzogJ3tiY2ViNTEzMy1lMmVlLTQxMDktOTUxZi1hYzdlOTQxYTE2OTJ9JywgIyAzLjFjMgotICAgICczLjEuMTUwJzogJ3szYWQ2MWVlNS04MWQyLTRkN2UtYWRlZi1kYTFkZDM3Mjc3ZDF9JywgIyAzLjEuMAotICAgICczLjEuMTEyMSc6J3s1NzgyZjk1Ny02ZDQ5LTQxZDQtYmFkMC02Njg3MTVkZmQ2Mzh9JywgIyAzLjEuMWMxCi0gICAgJzMuMS4xMTUwJzonezdmZjkwNDYwLTg5YjctNDM1Yi1iNTgzLWIzN2IyODE1Y2NjN30nLCAjIDMuMS4xCi0gICAgJzMuMS4yMTIxJzone2VjNDU2MjRhLTM3OGMtNDNiZS05MWYzLTNmN2E1OWIwZDkwY30nLCAjIDMuMS4yYzEKLSAgICAnMy4xLjIxNTAnOid7ZDQwYWYwMTYtNTA2Yy00M2ZiLWE3MzgtYmQ1NGZhOGMxZTg1fScsICMgMy4xLjIKLSAgICAnMy4yLjEwMScgOid7YjQxMWYxNjgtN2EzNi00ZmZmLTkwMmMtYTU1NGQxYzc4YTRmfScsICMgMy4yYTEKLSAgICAnMy4yLjEwMicgOid7NzlmZjczYjctODM1OS00MTBmLWI5YzUtMTUyZDIwMjZmOGM4fScsICMgMy4yYTIKLSAgICAnMy4yLjEwMycgOid7ZTc2MzVjNjUtYzIyMS00YjliLWI3MGEtNTYxMWI4MzY5ZDc3fScsICMgMy4yYTMKLSAgICAnMy4yLjEwNCcgOid7NzQ4Y2QxMzktNzViOC00Y2E4LTk4YTctNTgyNjIyOTgxODFlfScsICMgMy4yYTQKLSAgICAnMy4yLjExMScgOid7MjBiZmMxNmYtYzdjZC00ZmMwLThmOTYtOTkxNDYxNGEzYzUwfScsICMgMy4yYjEKLSAgICAnMy4yLjExMicgOid7MGUzNTBjOTgtOGQ3My00OTkzLWI2ODYtY2ZlODcxNjAwNDZlfScsICMgMy4yYjIKLSAgICAnMy4yLjEyMScgOid7MjA5NDk2OGQtNzU4My00N2Y2LWE3ZmQtMjIzMDQ1MzJlMDlmfScsICMgMy4ycmMxCi0gICAgJzMuMi4xMjInIDonezRmM2VkZmE2LWNmNzAtNDY5YS04MjVmLWUxMjA2YWE3ZjQxMn0nLCAjIDMuMnJjMgotICAgICczLjIuMTIzJyA6J3s5MGM2NzNkNy04Y2ZkLTQ5NjktOTgxNi1mN2Q3MGJhZDg3ZjN9JywgIyAzLjJyYzMKLSAgICAnMy4yLjE1MCcgOid7YjIwNDJkNWUtOTg2ZC00NGVjLWFlZTMtYWZlNDEwOGNjYzkzfScsICMgMy4yLjAKLSAgICAnMy4yLjExMjEnOid7NGY5MGRlNGEtODNkZC00NDQzLWI2MjUtY2ExMzBmZjM2MWRkfScsICMgMy4yLjFyYzEKLSAgICAnMy4yLjExMjInOid7ZGM1ZWIwNGQtZmY4YS00YmVkLThmOTYtMjM5NDJmZDU5ZTVmfScsICMgMy4yLjFyYzIKLSAgICAnMy4yLjExNTAnOid7MzRiMjUzMGMtNjM0OS00MjkyLTlkYzMtNjBiZGE0YWVkOTNjfScsICMgMy4yLjEKLSAgICAnMy4yLjIxMjEnOid7REZCMjlBNTMtQUNDNC00NGU2LTg1QTYtRDBEQTI2RkU4RTRFfScsICMgMy4yLjJyYzEKLSAgICAnMy4yLjIxNTAnOid7NENERTMxNjgtRDA2MC00YjdjLUJDNzQtNEQ4RjlCQjAxQUZEfScsICMgMy4yLjIKLSAgICAnMy4yLjMxMjEnOid7QjhFOENGRjctRTRDNi00YTdjLTlGMDYtQkIzQThCNzVEREE4fScsICMgMy4yLjNyYzEKLSAgICAnMy4yLjMxMjInOid7RThEQ0QzRTAtMTJCNi00ZmI3LTlEQjUtNTQzQzJFNjczNzJFfScsICMgMy4yLjNyYzIKLSAgICAnMy4yLjMxNTAnOid7Nzg5Qzk2NDQtOUY4Mi00NGQzLUI0Q0EtQUMzMUY0NkY1ODgyfScsICMgMy4yLjMKLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKaW5kZXggMmFjMWVhNi4uYmU4NDQwMCAxMDA2NDQKLS0tIGEvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5CkBAIC0yLDkgKzIsMTAgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCBhc3QKIGltcG9ydCB1bnBhcnNlCitpbXBvcnQgYXN0CiAKIGRlZiByZWFkX3B5ZmlsZShmaWxlbmFtZSk6CiAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHRoZSBjb250ZW50cyBvZiBhIFB5dGhvbiBzb3VyY2UgZmlsZSAoYXMgYQpAQCAtOTMsNiArOTQsMjEgQEAKICAgICBzdWl0ZTUKICIiIgogCit3aXRoX3NpbXBsZSA9ICIiIlwKK3dpdGggZigpOgorICAgIHN1aXRlMQorIiIiCisKK3dpdGhfYXMgPSAiIiJcCit3aXRoIGYoKSBhcyB4OgorICAgIHN1aXRlMQorIiIiCisKK3dpdGhfdHdvX2l0ZW1zID0gIiIiXAord2l0aCBmKCkgYXMgeCwgZygpIGFzIHk6CisgICAgc3VpdGUxCisiIiIKKwogY2xhc3MgQVNUVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRBU1RFcXVhbChzZWxmLCBhc3QxLCBhc3QyKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZHVtcChhc3QxKSwgYXN0LmR1bXAoYXN0MikpCkBAIC0yMTUsNiArMjMxLDE1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJhLCAqYlswXSwgYyA9IHNlcSIpCiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJhLCAqKGIsIGMpID0gc2VxIikKIAorICAgIGRlZiB0ZXN0X3dpdGhfc2ltcGxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCh3aXRoX3NpbXBsZSkKKworICAgIGRlZiB0ZXN0X3dpdGhfYXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHdpdGhfYXMpCisKKyAgICBkZWYgdGVzdF93aXRoX3R3b19pdGVtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAod2l0aF90d29faXRlbXMpCisKIAogY2xhc3MgRGlyZWN0b3J5VGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICIiIlRlc3Qgcm91bmR0cmlwIGJlaGF2aW91ciBvbiBhbGwgZmlsZXMgaW4gTGliIGFuZCBMaWIvdGVzdC4iIiIKQEAgLTIzMyw2ICsyNTgsMTAgQEAKICAgICAgICAgICAgICAgICBpZiBuLmVuZHN3aXRoKCcucHknKSBhbmQgbm90IG4uc3RhcnRzd2l0aCgnYmFkJyk6CiAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChvcy5wYXRoLmpvaW4odGVzdF9kaXIsIG4pKQogCisgICAgICAgICMgVGVzdCBsaW1pdGVkIHN1YnNldCBvZiBmaWxlcyB1bmxlc3MgdGhlICdjcHUnIHJlc291cmNlIGlzIHNwZWNpZmllZC4KKyAgICAgICAgaWYgbm90IHRlc3Quc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCJjcHUiKToKKyAgICAgICAgICAgIG5hbWVzID0gcmFuZG9tLnNhbXBsZShuYW1lcywgMTApCisKICAgICAgICAgZm9yIGZpbGVuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgJXMnICUgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IGQ5ZmNhOTcuLmI1NWUyYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0xLDYgKzEsNSBAQAogIlVzYWdlOiB1bnBhcnNlLnB5IDxwYXRoIHRvIHNvdXJjZSBmaWxlPiIKIGltcG9ydCBzeXMKLWltcG9ydCBtYXRoCiBpbXBvcnQgYXN0CiBpbXBvcnQgdG9rZW5pemUKIGltcG9ydCBpbwpAQCAtMTQ3LDYgKzE0NiwxNCBAQAogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAorICAgIGRlZiBfWWllbGRGcm9tKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCIoIikKKyAgICAgICAgc2VsZi53cml0ZSgieWllbGQgZnJvbSIpCisgICAgICAgIGlmIHQudmFsdWU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKKyAgICAgICAgc2VsZi53cml0ZSgiKSIpCisKICAgICBkZWYgX1JhaXNlKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoInJhaXNlIikKICAgICAgICAgaWYgbm90IHQuZXhjOgpAQCAtMTU4LDEyICsxNjUsMTEgQEAKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiBmcm9tICIpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuY2F1c2UpCiAKLSAgICBkZWYgX1RyeUV4Y2VwdChzZWxmLCB0KToKKyAgICBkZWYgX1RyeShzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJ0cnkiKQogICAgICAgICBzZWxmLmVudGVyKCkKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCiAgICAgICAgIHNlbGYubGVhdmUoKQotCiAgICAgICAgIGZvciBleCBpbiB0LmhhbmRsZXJzOgogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChleCkKICAgICAgICAgaWYgdC5vcmVsc2U6CkBAIC0xNzEsMjIgKzE3NywxMiBAQAogICAgICAgICAgICAgc2VsZi5lbnRlcigpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3JlbHNlKQogICAgICAgICAgICAgc2VsZi5sZWF2ZSgpCi0KLSAgICBkZWYgX1RyeUZpbmFsbHkoc2VsZiwgdCk6Ci0gICAgICAgIGlmIGxlbih0LmJvZHkpID09IDEgYW5kIGlzaW5zdGFuY2UodC5ib2R5WzBdLCBhc3QuVHJ5RXhjZXB0KToKLSAgICAgICAgICAgICMgdHJ5LWV4Y2VwdC1maW5hbGx5Ci0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmlsbCgidHJ5IikKKyAgICAgICAgaWYgdC5maW5hbGJvZHk6CisgICAgICAgICAgICBzZWxmLmZpbGwoImZpbmFsbHkiKQogICAgICAgICAgICAgc2VsZi5lbnRlcigpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5maW5hbGJvZHkpCiAgICAgICAgICAgICBzZWxmLmxlYXZlKCkKIAotICAgICAgICBzZWxmLmZpbGwoImZpbmFsbHkiKQotICAgICAgICBzZWxmLmVudGVyKCkKLSAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmZpbmFsYm9keSkKLSAgICAgICAgc2VsZi5sZWF2ZSgpCi0KICAgICBkZWYgX0V4Y2VwdEhhbmRsZXIoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgiZXhjZXB0IikKICAgICAgICAgaWYgdC50eXBlOgpAQCAtMjk2LDEwICsyOTIsNyBAQAogCiAgICAgZGVmIF9XaXRoKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoIndpdGggIikKLSAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmNvbnRleHRfZXhwcikKLSAgICAgICAgaWYgdC5vcHRpb25hbF92YXJzOgotICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3B0aW9uYWxfdmFycykKKyAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuZGlzcGF0Y2gsIHQuaXRlbXMpCiAgICAgICAgIHNlbGYuZW50ZXIoKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKICAgICAgICAgc2VsZi5sZWF2ZSgpCkBAIC01NjQsNiArNTU3LDEyIEBACiAgICAgICAgIGlmIHQuYXNuYW1lOgogICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIrdC5hc25hbWUpCiAKKyAgICBkZWYgX3dpdGhpdGVtKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuY29udGV4dF9leHByKQorICAgICAgICBpZiB0Lm9wdGlvbmFsX3ZhcnM6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgYXMgIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5vcHRpb25hbF92YXJzKQorCiBkZWYgcm91bmR0cmlwKGZpbGVuYW1lLCBvdXRwdXQ9c3lzLnN0ZG91dCk6CiAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBweWZpbGU6CiAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHB5ZmlsZS5yZWFkbGluZSlbMF0KZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weSBiL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weQppbmRleCA4ZWFhZDYzLi45NDJmNTZkIDEwMDc1NQotLS0gYS9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkKKysrIGIvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5CkBAIC0zNSw3ICszNSw5IEBACiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRSAhCiAiIiIKIAotaW1wb3J0IHN5cywgdGltZSwgb3BlcmF0b3IsIHBsYXRmb3JtCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHBsYXRmb3JtCiBmcm9tIENvbW1hbmRMaW5lIGltcG9ydCAqCiAKIHRyeToKQEAgLTczLDExICs3NSwxNSBAQAogCiAjIFRpbWVyIHR5cGVzCiBUSU1FUl9USU1FX1RJTUUgPSAndGltZS50aW1lJworVElNRVJfVElNRV9QUk9DRVNTX1RJTUUgPSAndGltZS5wcm9jZXNzX3RpbWUnCitUSU1FUl9USU1FX1BFUkZfQ09VTlRFUiA9ICd0aW1lLnBlcmZfY291bnRlcicKIFRJTUVSX1RJTUVfQ0xPQ0sgPSAndGltZS5jbG9jaycKIFRJTUVSX1NZU1RJTUVTX1BST0NFU1NUSU1FID0gJ3N5c3RpbWVzLnByb2Nlc3N0aW1lJwogCiAjIENob29zZSBwbGF0Zm9ybSBkZWZhdWx0IHRpbWVyCi1pZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgoraWYgaGFzYXR0cih0aW1lLCAncGVyZl9jb3VudGVyJyk6CisgICAgVElNRVJfUExBVEZPUk1fREVGQVVMVCA9IFRJTUVSX1RJTUVfUEVSRl9DT1VOVEVSCitlbGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CiAgICAgIyBPbiBXaW5YUCB0aGlzIGhhcyAyLjVtcyByZXNvbHV0aW9uCiAgICAgVElNRVJfUExBVEZPUk1fREVGQVVMVCA9IFRJTUVSX1RJTUVfQ0xPQ0sKIGVsc2U6CkBAIC05Myw2ICs5OSwxMCBAQAogCiAgICAgaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfVElNRToKICAgICAgICAgcmV0dXJuIHRpbWUudGltZQorICAgIGVsaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfUFJPQ0VTU19USU1FOgorICAgICAgICByZXR1cm4gdGltZS5wcm9jZXNzX3RpbWUKKyAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX1BFUkZfQ09VTlRFUjoKKyAgICAgICAgcmV0dXJuIHRpbWUucGVyZl9jb3VudGVyCiAgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfVElNRV9DTE9DSzoKICAgICAgICAgcmV0dXJuIHRpbWUuY2xvY2sKICAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9TWVNUSU1FU19QUk9DRVNTVElNRToKQEAgLTEwNyw2ICsxMTcsNyBAQAogICAgICAgICBwcmludCgnR2V0dGluZyBtYWNoaW5lIGRldGFpbHMuLi4nKQogICAgIGJ1aWxkbm8sIGJ1aWxkZGF0ZSA9IHBsYXRmb3JtLnB5dGhvbl9idWlsZCgpCiAgICAgcHl0aG9uID0gcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKQorICAgICMgWFhYIHRoaXMgaXMgbm93IGFsd2F5cyBVQ1M0LCBtYXliZSByZXBsYWNlIGl0IHdpdGggJ1BFUDM5MycgaW4gMy4zKz8KICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKICAgICAgICAgIyBVQ1MyIGJ1aWxkIChzdGFuZGFyZCkKICAgICAgICAgdW5pdHlwZSA9ICdVQ1MyJwpAQCAtODY1LDcgKzg3NiwxOCBAQAogICAgICAgICAgICAgcHJpbnQoJyogdXNpbmcgdGltZXI6IHN5c3RpbWVzLnByb2Nlc3N0aW1lICglcyknICUgXAogICAgICAgICAgICAgICAgICAgc3lzdGltZXMuU1lTVElNRVNfSU1QTEVNRU5UQVRJT04pCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNsb2NrIGZ1bmN0aW9uIGRvZXMgZXhpc3QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnZXRfdGltZXIodGltZXIpCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgIHByaW50KCIqIEVycm9yOiBVbmtub3duIHRpbWVyOiAlcyIgJSB0aW1lcikKKyAgICAgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICAgICAgcHJpbnQoJyogdXNpbmcgdGltZXI6ICVzJyAlIHRpbWVyKQorICAgICAgICAgICAgaWYgaGFzYXR0cih0aW1lLCAnZ2V0X2Nsb2NrX2luZm8nKToKKyAgICAgICAgICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbyh0aW1lcls1Ol0pCisgICAgICAgICAgICAgICAgcHJpbnQoJyogdGltZXI6IHJlc29sdXRpb249JXMsIGltcGxlbWVudGF0aW9uPSVzJworICAgICAgICAgICAgICAgICAgICAgICUgKGluZm8ucmVzb2x1dGlvbiwgaW5mby5pbXBsZW1lbnRhdGlvbikpCiAKICAgICAgICAgcHJpbnQoKQogCkBAIC05NDMsOCArOTY1LDYgQEAKICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcChiZW5jaCxmKQogICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgcmVhc29uOgotICAgICAgICAgICAgICAgIHByaW50KCcqIEVycm9yIG9wZW5pbmcvd3JpdGluZyByZXBvcnRmaWxlJykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIHJlYXNvbjoKICAgICAgICAgICAgICAgICBwcmludCgnKiBFcnJvciBvcGVuaW5nL3dyaXRpbmcgcmVwb3J0ZmlsZSAlczogJXMnICUgKAogICAgICAgICAgICAgICAgICAgICByZXBvcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICByZWFzb24pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9SRUFETUUgYi9Ub29scy9zY3JpcHRzL1JFQURNRQppbmRleCA4YzAyNTI5Li5kNjVkMWZkIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL1JFQURNRQorKysgYi9Ub29scy9zY3JpcHRzL1JFQURNRQpAQCAtMTUsNyArMTUsNyBAQAogZGlmZi5weSAgICAgICAgICAgICAgICAgUHJpbnQgZmlsZSBkaWZmcyBpbiBjb250ZXh0LCB1bmlmaWVkLCBvciBuZGlmZiBmb3JtYXRzCiBkdXRyZWUucHkgICAgICAgICAgICAgICBGb3JtYXQgZHUoMSkgb3V0cHV0IGFzIGEgdHJlZSBzb3J0ZWQgYnkgc2l6ZQogZXB0YWdzLnB5ICAgICAgICAgICAgICAgQ3JlYXRlIEVtYWNzIFRBR1MgZmlsZSBmb3IgUHl0aG9uIG1vZHVsZXMKLWZpbmRfcmVjdXJzaW9ubGltaXQucHkgIEZpbmQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxpbWl0IG9uIHRoaXMgbWFjaGluZSAKK2ZpbmRfcmVjdXJzaW9ubGltaXQucHkgIEZpbmQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxpbWl0IG9uIHRoaXMgbWFjaGluZQogZmluZGRpdi5weSAgICAgICAgICAgICAgQSBncmVwLWxpa2UgdG9vbCB0aGF0IGxvb2tzIGZvciBkaXZpc2lvbiBvcGVyYXRvcnMKIGZpbmRsaW5rc3RvLnB5ICAgICAgICAgIFJlY3Vyc2l2ZWx5IGZpbmQgc3ltYm9saWMgbGlua3MgdG8gYSBnaXZlbiBwYXRoIHByZWZpeAogZmluZG5vY29kaW5nLnB5ICAgICAgICAgRmluZCBzb3VyY2UgZmlsZXMgd2hpY2ggbmVlZCBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbgpAQCAtMjgsNiArMjgsNyBAQAogZ29vZ2xlLnB5ICAgICAgICAgICAgICAgT3BlbiBhIHdlYmJyb3dzZXIgd2l0aCBHb29nbGUKIGdwcm9mMmh0bWwucHkgICAgICAgICAgIFRyYW5zZm9ybSBncHJvZigxKSBvdXRwdXQgaW50byB1c2VmdWwgSFRNTAogaDJweS5weSAgICAgICAgICAgICAgICAgVHJhbnNsYXRlICNkZWZpbmUncyBpbnRvIFB5dGhvbiBhc3NpZ25tZW50cworaGlnaGxpZ2h0LnB5ICAgICAgICAgICAgUHl0aG9uIHN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBIVE1MIG91dHB1dAogaWRsZTMgICAgICAgICAgICAgICAgICAgTWFpbiBwcm9ncmFtIHRvIHN0YXJ0IElETEUKIGlmZGVmLnB5ICAgICAgICAgICAgICAgIFJlbW92ZSAjaWYobilkZWYgZ3JvdXBzIGZyb20gQyBzb3VyY2VzCiBsZmNyLnB5ICAgICAgICAgICAgICAgICBDaGFuZ2UgTEYgbGluZSBlbmRpbmdzIHRvIENSTEYgKFVuaXggdG8gV2luZG93cykKQEAgLTUzLDYgKzU0LDcgQEAKIHJlaW5kZW50LnB5ICAgICAgICAgICAgIENoYW5nZSAucHkgZmlsZXMgdG8gdXNlIDQtc3BhY2UgaW5kZW50cwogcmVpbmRlbnQtcnN0LnB5ICAgICAgICAgRml4LXVwIHJlU3RydWN0dXJlZFRleHQgZmlsZSB3aGl0ZXNwYWNlCiByZ3JlcC5weSAgICAgICAgICAgICAgICBSZXZlcnNlIGdyZXAgdGhyb3VnaCBhIGZpbGUgKHVzZWZ1bCBmb3IgYmlnIGxvZ2ZpbGVzKQorcnVuX3Rlc3RzLnB5ICAgICAgICAgICAgUnVuIHRoZSB0ZXN0IHN1aXRlIHdpdGggbW9yZSBzZW5zaWJsZSBkZWZhdWx0IG9wdGlvbnMKIHNlcnZlLnB5ICAgICAgICAgICAgICAgIFNtYWxsIHdzZ2lyZWYtYmFzZWQgd2ViIHNlcnZlciwgdXNlZCBpbiBtYWtlIHNlcnZlIGluIERvYwogc3VmZi5weSAgICAgICAgICAgICAgICAgU29ydCBhIGxpc3Qgb2YgZmlsZXMgYnkgc3VmZml4CiBzdm5lb2wucHkgICAgICAgICAgICAgICBTZXQgc3ZuOmVvbC1zdHlsZSBvbiBhbGwgZmlsZXMgaW4gZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2RpZmYucHkgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKaW5kZXggOWVmYjA3OC4uZjliMTRiZiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQpAQCAtOSw2ICs5LDEyIEBACiAiIiIKIAogaW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIG9wdHBhcnNlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKKworZGVmIGZpbGVfbXRpbWUocGF0aCk6CisgICAgdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAob3Muc3RhdChwYXRoKS5zdF9tdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZS51dGMpCisgICAgcmV0dXJuIHQuYXN0aW1lem9uZSgpLmlzb2Zvcm1hdCgpCiAKIGRlZiBtYWluKCk6CiAKQEAgLTMwLDEwICszNiwxMiBAQAogICAgIG4gPSBvcHRpb25zLmxpbmVzCiAgICAgZnJvbWZpbGUsIHRvZmlsZSA9IGFyZ3MKIAotICAgIGZyb21kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KGZyb21maWxlKS5zdF9tdGltZSkKLSAgICB0b2RhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQodG9maWxlKS5zdF9tdGltZSkKLSAgICBmcm9tbGluZXMgPSBvcGVuKGZyb21maWxlLCAnVScpLnJlYWRsaW5lcygpCi0gICAgdG9saW5lcyA9IG9wZW4odG9maWxlLCAnVScpLnJlYWRsaW5lcygpCisgICAgZnJvbWRhdGUgPSBmaWxlX210aW1lKGZyb21maWxlKQorICAgIHRvZGF0ZSA9IGZpbGVfbXRpbWUodG9maWxlKQorICAgIHdpdGggb3Blbihmcm9tZmlsZSwgJ1UnKSBhcyBmZjoKKyAgICAgICAgZnJvbWxpbmVzID0gZmYucmVhZGxpbmVzKCkKKyAgICB3aXRoIG9wZW4odG9maWxlLCAnVScpIGFzIHRmOgorICAgICAgICB0b2xpbmVzID0gdGYucmVhZGxpbmVzKCkKIAogICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWRhdGUsIHRvZGF0ZSwgbj1uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maW5kbm9jb2RpbmcucHkgYi9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQppbmRleCBhNDk0YTQ4Li5iM2U5ZGM3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQpAQCAtMiw3ICsyLDcgQEAKIAogIiIiTGlzdCBhbGwgdGhvc2UgUHl0aG9uIGZpbGVzIHRoYXQgcmVxdWlyZSBhIGNvZGluZyBkaXJlY3RpdmUKIAotVXNhZ2U6IG5vY29kaW5nLnB5IGRpcjEgW2RpcjIuLi5dCitVc2FnZTogZmluZG5vY29kaW5nLnB5IGRpcjEgW2RpcjIuLi5dCiAiIiIKIAogX19hdXRob3JfXyA9ICJPbGVnIEJyb3l0bWFubiwgR2VvcmcgQnJhbmRsIgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJubyBzb3BoaXN0aWNhdGVkIFB5dGhvbiBzb3VyY2UgZmlsZSBzZWFyY2ggd2lsbCBiZSBkb25lLiIsIGZpbGU9c3lzLnN0ZGVycikKIAogCi1kZWNsX3JlID0gcmUuY29tcGlsZShyImNvZGluZ1s9Ol1ccyooWy1cdy5dKykiKQorZGVjbF9yZSA9IHJlLmNvbXBpbGUocmIiY29kaW5nWz06XVxzKihbLVx3Ll0rKSIpCiAKIGRlZiBnZXRfZGVjbGFyYXRpb24obGluZSk6CiAgICAgbWF0Y2ggPSBkZWNsX3JlLnNlYXJjaChsaW5lKQpAQCAtNTAsMjEgKzUwLDIwIEBACiAKIGRlZiBuZWVkc19kZWNsYXJhdGlvbihmdWxscGF0aCk6CiAgICAgdHJ5OgotICAgICAgICBpbmZpbGUgPSBvcGVuKGZ1bGxwYXRoLCAnclUnKQorICAgICAgICBpbmZpbGUgPSBvcGVuKGZ1bGxwYXRoLCAncmInKQogICAgIGV4Y2VwdCBJT0Vycm9yOiAjIE9vcHMsIHRoZSBmaWxlIHdhcyByZW1vdmVkIC0gaWdub3JlIGl0CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBsaW5lMSA9IGluZmlsZS5yZWFkbGluZSgpCi0gICAgbGluZTIgPSBpbmZpbGUucmVhZGxpbmUoKQorICAgIHdpdGggaW5maWxlOgorICAgICAgICBsaW5lMSA9IGluZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGxpbmUyID0gaW5maWxlLnJlYWRsaW5lKCkKIAotICAgIGlmIGdldF9kZWNsYXJhdGlvbihsaW5lMSkgb3IgZ2V0X2RlY2xhcmF0aW9uKGxpbmUyKToKLSAgICAgICAgIyB0aGUgZmlsZSBkb2VzIGhhdmUgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24sIHNvIHRydXN0IGl0Ci0gICAgICAgIGluZmlsZS5jbG9zZSgpCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBnZXRfZGVjbGFyYXRpb24obGluZTEpIG9yIGdldF9kZWNsYXJhdGlvbihsaW5lMik6CisgICAgICAgICAgICAjIHRoZSBmaWxlIGRvZXMgaGF2ZSBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbiwgc28gdHJ1c3QgaXQKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgIyBjaGVjayB0aGUgd2hvbGUgZmlsZSBmb3Igbm9uIHV0Zi04IGNoYXJhY3RlcnMKLSAgICByZXN0ID0gaW5maWxlLnJlYWQoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgICAgICMgY2hlY2sgdGhlIHdob2xlIGZpbGUgZm9yIG5vbiB1dGYtOCBjaGFyYWN0ZXJzCisgICAgICAgIHJlc3QgPSBpbmZpbGUucmVhZCgpCiAKICAgICBpZiBoYXNfY29ycmVjdF9lbmNvZGluZyhsaW5lMStsaW5lMityZXN0LCAidXRmLTgiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weSBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmZjVjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQpAQCAtMCwwICsxLDI2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworJycnQWRkIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gUHl0aG9uIHNvdXJjZSBjb2RlJycnCisKK19fYXV0aG9yX18gPSAnUmF5bW9uZCBIZXR0aW5nZXInCisKK2ltcG9ydCBrZXl3b3JkLCB0b2tlbml6ZSwgY2dpLCByZSwgZnVuY3Rvb2xzCit0cnk6CisgICAgaW1wb3J0IGJ1aWx0aW5zCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IF9fYnVpbHRpbl9fIGFzIGJ1aWx0aW5zCisKKyMjIyMgQW5hbHl6ZSBQeXRob24gU291cmNlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNfYnVpbHRpbihzKToKKyAgICAnUmV0dXJuIFRydWUgaWYgcyBpcyB0aGUgbmFtZSBvZiBhIGJ1aWx0aW4nCisgICAgcmV0dXJuIGhhc2F0dHIoYnVpbHRpbnMsIHMpCisKK2RlZiBjb21iaW5lX3JhbmdlKGxpbmVzLCBzdGFydCwgZW5kKToKKyAgICAnSm9pbiBjb250ZW50IGZyb20gYSByYW5nZSBvZiBsaW5lcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQnCisgICAgKHNyb3csIHNjb2wpLCAoZXJvdywgZWNvbCkgPSBzdGFydCwgZW5kCisgICAgaWYgc3JvdyA9PSBlcm93OgorICAgICAgICByZXR1cm4gbGluZXNbc3Jvdy0xXVtzY29sOmVjb2xdLCBlbmQKKyAgICByb3dzID0gW2xpbmVzW3Nyb3ctMV1bc2NvbDpdXSArIGxpbmVzW3Nyb3c6IGVyb3ctMV0gKyBbbGluZXNbZXJvdy0xXVs6ZWNvbF1dCisgICAgcmV0dXJuICcnLmpvaW4ocm93cyksIGVuZAorCitkZWYgYW5hbHl6ZV9weXRob24oc291cmNlKToKKyAgICAnJydHZW5lcmF0ZSBhbmQgY2xhc3NpZnkgY2h1bmtzIG9mIFB5dGhvbiBmb3Igc3ludGF4IGhpZ2hsaWdodGluZy4KKyAgICAgICBZaWVsZHMgdHVwbGVzIGluIHRoZSBmb3JtOiAoY2F0ZWdvcnksIGNhdGVnb3JpemVkX3RleHQpLgorICAgICcnJworICAgIGxpbmVzID0gc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgcmVhZGxpbmUgPSBmdW5jdG9vbHMucGFydGlhbChuZXh0LCBpdGVyKGxpbmVzKSwgJycpCisgICAga2luZCA9IHRva19zdHIgPSAnJworICAgIHRva190eXBlID0gdG9rZW5pemUuQ09NTUVOVAorICAgIHdyaXR0ZW4gPSAoMSwgMCkKKyAgICBmb3IgdG9rIGluIHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhyZWFkbGluZSk6CisgICAgICAgIHByZXZfdG9rX3R5cGUsIHByZXZfdG9rX3N0ciA9IHRva190eXBlLCB0b2tfc3RyCisgICAgICAgIHRva190eXBlLCB0b2tfc3RyLCAoc3Jvdywgc2NvbCksIChlcm93LCBlY29sKSwgbG9naWNhbF9saW5lbm8gPSB0b2sKKyAgICAgICAga2luZCA9ICcnCisgICAgICAgIGlmIHRva190eXBlID09IHRva2VuaXplLkNPTU1FTlQ6CisgICAgICAgICAgICBraW5kID0gJ2NvbW1lbnQnCisgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuT1AgYW5kIHRva19zdHJbOjFdIG5vdCBpbiAne31bXSgpLC46O0AnOgorICAgICAgICAgICAga2luZCA9ICdvcGVyYXRvcicKKyAgICAgICAgZWxpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5TVFJJTkc6CisgICAgICAgICAgICBraW5kID0gJ3N0cmluZycKKyAgICAgICAgICAgIGlmIHByZXZfdG9rX3R5cGUgPT0gdG9rZW5pemUuSU5ERU5UIG9yIHNjb2w9PTA6CisgICAgICAgICAgICAgICAga2luZCA9ICdkb2NzdHJpbmcnCisgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuTkFNRToKKyAgICAgICAgICAgIGlmIHRva19zdHIgaW4gKCdkZWYnLCAnY2xhc3MnLCAnaW1wb3J0JywgJ2Zyb20nKToKKyAgICAgICAgICAgICAgICBraW5kID0gJ2RlZmluaXRpb24nCisgICAgICAgICAgICBlbGlmIHByZXZfdG9rX3N0ciBpbiAoJ2RlZicsICdjbGFzcycpOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnZGVmbmFtZScKKyAgICAgICAgICAgIGVsaWYga2V5d29yZC5pc2tleXdvcmQodG9rX3N0cik6CisgICAgICAgICAgICAgICAga2luZCA9ICdrZXl3b3JkJworICAgICAgICAgICAgZWxpZiBpc19idWlsdGluKHRva19zdHIpIGFuZCBwcmV2X3Rva19zdHIgIT0gJy4nOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnYnVpbHRpbicKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHRleHQsIHdyaXR0ZW4gPSBjb21iaW5lX3JhbmdlKGxpbmVzLCB3cml0dGVuLCAoc3Jvdywgc2NvbCkpCisgICAgICAgICAgICB5aWVsZCAnJywgdGV4dAorICAgICAgICAgICAgdGV4dCwgd3JpdHRlbiA9IHRva19zdHIsIChlcm93LCBlY29sKQorICAgICAgICAgICAgeWllbGQga2luZCwgdGV4dAorICAgIGxpbmVfdXB0b190b2tlbiwgd3JpdHRlbiA9IGNvbWJpbmVfcmFuZ2UobGluZXMsIHdyaXR0ZW4sIChlcm93LCBlY29sKSkKKyAgICB5aWVsZCAnJywgbGluZV91cHRvX3Rva2VuCisKKyMjIyMgUmF3IE91dHB1dCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgcmF3X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpOgorICAgICdTdHJhaWdodCB0ZXh0IGRpc3BsYXkgb2YgdGV4dCBjbGFzc2lmaWNhdGlvbnMnCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUxNXM6ICAlclxuJyAlIChraW5kIG9yICdwbGFpbicsIHRleHQpKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworIyMjIyBBTlNJIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZmF1bHRfYW5zaSA9IHsKKyAgICAnY29tbWVudCc6ICgnXDAzM1swOzMxbScsICdcMDMzWzBtJyksCisgICAgJ3N0cmluZyc6ICgnXDAzM1swOzMybScsICdcMDMzWzBtJyksCisgICAgJ2RvY3N0cmluZyc6ICgnXDAzM1swOzMybScsICdcMDMzWzBtJyksCisgICAgJ2tleXdvcmQnOiAoJ1wwMzNbMDszM20nLCAnXDAzM1swbScpLAorICAgICdidWlsdGluJzogKCdcMDMzWzA7MzVtJywgJ1wwMzNbMG0nKSwKKyAgICAnZGVmaW5pdGlvbic6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCisgICAgJ2RlZm5hbWUnOiAoJ1wwMzNbMDszNG0nLCAnXDAzM1swbScpLAorICAgICdvcGVyYXRvcic6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCit9CisKK2RlZiBhbnNpX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsIGNvbG9ycz1kZWZhdWx0X2Fuc2kpOgorICAgICdBZGQgc3ludGF4IGhpZ2hsaWdodGluZyB0byBzb3VyY2UgY29kZSB1c2luZyBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMnCisgICAgIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgb3BlbmVyLCBjbG9zZXIgPSBjb2xvcnMuZ2V0KGtpbmQsICgnJywgJycpKQorICAgICAgICByZXN1bHQgKz0gW29wZW5lciwgdGV4dCwgY2xvc2VyXQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworIyMjIyBIVE1MIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsb3BlbmVyPSc8cHJlIGNsYXNzPSJweXRob24iPlxuJywgY2xvc2VyPSc8L3ByZT5cbicpOgorICAgICdDb252ZXJ0IGNsYXNzaWZpZWQgdGV4dCB0byBhbiBIVE1MIGZyYWdtZW50JworICAgIHJlc3VsdCA9IFtvcGVuZXJdCisgICAgZm9yIGtpbmQsIHRleHQgaW4gY2xhc3NpZmllZF90ZXh0OgorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPHNwYW4gY2xhc3M9IiVzIj4nICUga2luZCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjZ2kuZXNjYXBlKHRleHQpKQorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPC9zcGFuPicpCisgICAgcmVzdWx0LmFwcGVuZChjbG9zZXIpCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCitkZWZhdWx0X2NzcyA9IHsKKyAgICAnLmNvbW1lbnQnOiAne2NvbG9yOiBjcmltc29uO30nLAorICAgICcuc3RyaW5nJzogICd7Y29sb3I6IGZvcmVzdGdyZWVuO30nLAorICAgICcuZG9jc3RyaW5nJzogJ3tjb2xvcjogZm9yZXN0Z3JlZW47IGZvbnQtc3R5bGU6aXRhbGljO30nLAorICAgICcua2V5d29yZCc6ICd7Y29sb3I6IGRhcmtvcmFuZ2U7fScsCisgICAgJy5idWlsdGluJzogJ3tjb2xvcjogcHVycGxlO30nLAorICAgICcuZGVmaW5pdGlvbic6ICd7Y29sb3I6IGRhcmtvcmFuZ2U7IGZvbnQtd2VpZ2h0OmJvbGQ7fScsCisgICAgJy5kZWZuYW1lJzogJ3tjb2xvcjogYmx1ZTt9JywKKyAgICAnLm9wZXJhdG9yJzogJ3tjb2xvcjogYnJvd247fScsCit9CisKK2RlZmF1bHRfaHRtbCA9ICcnJ1wKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+IHt0aXRsZX0gPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cit7Y3NzfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgore2JvZHl9Cis8L2JvZHk+Cis8L2h0bWw+CisnJycKKworZGVmIGJ1aWxkX2h0bWxfcGFnZShjbGFzc2lmaWVkX3RleHQsIHRpdGxlPSdweXRob24nLAorICAgICAgICAgICAgICAgICAgICBjc3M9ZGVmYXVsdF9jc3MsIGh0bWw9ZGVmYXVsdF9odG1sKToKKyAgICAnQ3JlYXRlIGEgY29tcGxldGUgSFRNTCBwYWdlIHdpdGggY29sb3JpemVkIHNvdXJjZSBjb2RlJworICAgIGNzc19zdHIgPSAnXG4nLmpvaW4oWyclcyAlcycgJSBpdGVtIGZvciBpdGVtIGluIGNzcy5pdGVtcygpXSkKKyAgICByZXN1bHQgPSBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgdGl0bGUgPSBjZ2kuZXNjYXBlKHRpdGxlKQorICAgIHJldHVybiBodG1sLmZvcm1hdCh0aXRsZT10aXRsZSwgY3NzPWNzc19zdHIsIGJvZHk9cmVzdWx0KQorCisjIyMjIExhVGVYIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmYXVsdF9sYXRleF9jb21tYW5kcyA9IHsKKyAgICAnY29tbWVudCc6ICd7XGNvbG9ye3JlZH0jMX0nLAorICAgICdzdHJpbmcnOiAne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAorICAgICdkb2NzdHJpbmcnOiAne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKKyAgICAna2V5d29yZCc6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdidWlsdGluJzogJ3tcY29sb3J7cHVycGxlfSMxfScsCisgICAgJ2RlZmluaXRpb24nOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnZGVmbmFtZSc6ICd7XGNvbG9ye2JsdWV9IzF9JywKKyAgICAnb3BlcmF0b3InOiAne1xjb2xvcnticm93bn0jMX0nLAorfQorCitkZWZhdWx0X2xhdGV4X2RvY3VtZW50ID0gcicnJworXGRvY3VtZW50Y2xhc3N7YXJ0aWNsZX0KK1x1c2VwYWNrYWdle2FsbHR0fQorXHVzZXBhY2thZ2V7dXBxdW90ZX0KK1x1c2VwYWNrYWdle2NvbG9yfQorXHVzZXBhY2thZ2VbdXNlbmFtZXMsZHZpcHNuYW1lc117eGNvbG9yfQorXHVzZXBhY2thZ2VbY21de2Z1bGxwYWdlfQorJShtYWNyb3MpcworXGJlZ2lue2RvY3VtZW50fQorXGNlbnRlcntcTEFSR0V7JSh0aXRsZSlzfX0KK1xiZWdpbnthbGx0dH0KKyUoYm9keSlzCitcZW5ke2FsbHR0fQorXGVuZHtkb2N1bWVudH0KKycnJworCitkZWYgYWxsdHRfZXNjYXBlKHMpOgorICAgICdSZXBsYWNlIGJhY2tzbGFzaCBhbmQgYnJhY2VzIHdpdGggdGhlaXIgZXNjYXBlZCBlcXVpdmFsZW50cycKKyAgICB4bGF0ID0geyd7JzogcidceycsICd9JzogcidcfScsICdcXCc6IHInXHRleHRiYWNrc2xhc2h7fSd9CisgICAgcmV0dXJuIHJlLnN1YihyJ1tcXHt9XScsIGxhbWJkYSBtbzogeGxhdFttby5ncm91cCgpXSwgcykKKworZGVmIGxhdGV4X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsIHRpdGxlID0gJ3B5dGhvbicsCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzID0gZGVmYXVsdF9sYXRleF9jb21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPSBkZWZhdWx0X2xhdGV4X2RvY3VtZW50KToKKyAgICAnQ3JlYXRlIGEgY29tcGxldGUgTGFUZVggZG9jdW1lbnQgd2l0aCBjb2xvcml6ZWQgc291cmNlIGNvZGUnCisgICAgbWFjcm9zID0gJ1xuJy5qb2luKHInXG5ld2NvbW1hbmR7XHB5JXN9WzFdeyVzfScgJSBjIGZvciBjIGluIGNvbW1hbmRzLml0ZW1zKCkpCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHInXHB5JXN7JyAlIGtpbmQpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoYWxsdHRfZXNjYXBlKHRleHQpKQorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpCisgICAgcmV0dXJuIGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgJSBkaWN0KHRpdGxlPXRpdGxlLCBtYWNyb3M9bWFjcm9zLCBib2R5PScnLmpvaW4ocmVzdWx0KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMsIGFyZ3BhcnNlLCB3ZWJicm93c2VyLCBvcywgdGV4dHdyYXAKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAnQWRkIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gUHl0aG9uIHNvdXJjZSBjb2RlJywKKyAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIsCisgICAgICAgICAgICBlcGlsb2cgPSB0ZXh0d3JhcC5kZWRlbnQoJycnCisgICAgICAgICAgICAgICAgZXhhbXBsZXM6CisKKyAgICAgICAgICAgICAgICAgICMgU2hvdyBzeW50YXggaGlnaGxpZ2h0ZWQgY29kZSBpbiB0aGUgdGVybWluYWwgd2luZG93CisgICAgICAgICAgICAgICAgICAkIC4vaGlnaGxpZ2h0LnB5IG15ZmlsZS5weQorCisgICAgICAgICAgICAgICAgICAjIENvbG9yaXplIG15ZmlsZS5weSBhbmQgZGlzcGxheSBpbiBhIGJyb3dzZXIKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWIgbXlmaWxlLnB5CisKKyAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIGFuIEhUTUwgc2VjdGlvbiB0byBlbWJlZCBpbiBhbiBleGlzdGluZyB3ZWJwYWdlCisgICAgICAgICAgICAgICAgICAuL2hpZ2hsaWdodC5weSAtcyBteWZpbGUucHkKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBjb21wbGV0ZSBIVE1MIGZpbGUKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWMgbXlmaWxlLnB5ID4gbXlmaWxlLmh0bWwKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBQREYgdXNpbmcgTGFUZVgKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWwgbXlmaWxlLnB5IHwgcGRmbGF0ZXgKKworICAgICAgICAgICAgJycnKSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdzb3VyY2VmaWxlJywgbWV0YXZhciA9ICdTT1VSQ0VGSUxFJywKKyAgICAgICAgICAgIGhlbHAgPSAnZmlsZSBjb250YWluaW5nIFB5dGhvbiBzb3VyY2Vjb2RlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJyb3dzZXInLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ2xhdW5jaCBhIGJyb3dzZXIgdG8gc2hvdyByZXN1bHRzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbXBsZXRlJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdidWlsZCBhIGNvbXBsZXRlIGh0bWwgd2VicGFnZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1sYXRleCcsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnYnVpbGQgYSBMYVRlWCBkb2N1bWVudCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYXcnLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ3JhdyBwYXJzZSBvZiBjYXRlZ29yaXplZCB0ZXh0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXNlY3Rpb24nLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ3Nob3cgYW4gSFRNTCBzZWN0aW9uIHJhdGhlciB0aGFuIGEgY29tcGxldGUgd2VicGFnZScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3Muc2VjdGlvbiBhbmQgKGFyZ3MuYnJvd3NlciBvciBhcmdzLmNvbXBsZXRlKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdUaGUgLXMvLS1zZWN0aW9uIG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIC1iLy0tYnJvd3NlciBvciAtYy8tLWNvbXBsZXRlIG9wdGlvbnMnKQorCisgICAgc291cmNlZmlsZSA9IGFyZ3Muc291cmNlZmlsZQorICAgIHdpdGggb3Blbihzb3VyY2VmaWxlKSBhcyBmOgorICAgICAgICBzb3VyY2UgPSBmLnJlYWQoKQorICAgIGNsYXNzaWZpZWRfdGV4dCA9IGFuYWx5emVfcHl0aG9uKHNvdXJjZSkKKworICAgIGlmIGFyZ3MucmF3OgorICAgICAgICBlbmNvZGVkID0gcmF3X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgZWxpZiBhcmdzLmNvbXBsZXRlIG9yIGFyZ3MuYnJvd3NlcjoKKyAgICAgICAgZW5jb2RlZCA9IGJ1aWxkX2h0bWxfcGFnZShjbGFzc2lmaWVkX3RleHQsIHRpdGxlPXNvdXJjZWZpbGUpCisgICAgZWxpZiBhcmdzLnNlY3Rpb246CisgICAgICAgIGVuY29kZWQgPSBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgZWxpZiBhcmdzLmxhdGV4OgorICAgICAgICBlbmNvZGVkID0gbGF0ZXhfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCwgdGl0bGU9c291cmNlZmlsZSkKKyAgICBlbHNlOgorICAgICAgICBlbmNvZGVkID0gYW5zaV9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0KQorCisgICAgaWYgYXJncy5icm93c2VyOgorICAgICAgICBodG1sZmlsZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzb3VyY2VmaWxlKSlbMF0gKyAnLmh0bWwnCisgICAgICAgIHdpdGggb3BlbihodG1sZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShlbmNvZGVkKQorICAgICAgICB3ZWJicm93c2VyLm9wZW4oJ2ZpbGU6Ly8nICsgb3MucGF0aC5hYnNwYXRoKGh0bWxmaWxlKSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGVuY29kZWQpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ltcG9ydF9kaWFnbm9zdGljcy5weSBiL1Rvb2xzL3NjcmlwdHMvaW1wb3J0X2RpYWdub3N0aWNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM5MDcyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL2ltcG9ydF9kaWFnbm9zdGljcy5weQpAQCAtMCwwICsxLDM3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisiIiJNaXNjZWxsYW5lb3VzIGRpYWdub3N0aWNzIGZvciB0aGUgaW1wb3J0IHN5c3RlbSIiIgorCitpbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKK2Zyb20gcHByaW50IGltcG9ydCBwcHJpbnQKKworZGVmIF9kdW1wX3N0YXRlKGFyZ3MpOgorICAgIHByaW50KHN5cy52ZXJzaW9uKQorICAgIGZvciBuYW1lIGluIGFyZ3MuYXR0cmlidXRlczoKKyAgICAgICAgcHJpbnQoInN5cy57fToiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcHByaW50KGdldGF0dHIoc3lzLCBuYW1lKSkKKworZGVmIF9hZGRfZHVtcF9hcmdzKGNtZCk6CisgICAgY21kLmFkZF9hcmd1bWVudCgiYXR0cmlidXRlcyIsIG1ldGF2YXI9IkFUVFIiLCBuYXJncz0iKyIsCisgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzeXMgbW9kdWxlIGF0dHJpYnV0ZSB0byBkaXNwbGF5IikKKworQ09NTUFORFMgPSAoCisgICgiZHVtcCIsICJEdW1wIGltcG9ydCBzdGF0ZSIsIF9kdW1wX3N0YXRlLCBfYWRkX2R1bXBfYXJncyksCispCisKK2RlZiBfbWFrZV9wYXJzZXIoKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgc3ViID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKHRpdGxlPSJDb21tYW5kcyIpCisgICAgZm9yIG5hbWUsIGRlc2NyaXB0aW9uLCBpbXBsZW1lbnRhdGlvbiwgYWRkX2FyZ3MgaW4gQ09NTUFORFM6CisgICAgICAgIGNtZCA9IHN1Yi5hZGRfcGFyc2VyKG5hbWUsIGhlbHA9ZGVzY3JpcHRpb24pCisgICAgICAgIGNtZC5zZXRfZGVmYXVsdHMoY29tbWFuZD1pbXBsZW1lbnRhdGlvbikKKyAgICAgICAgYWRkX2FyZ3MoY21kKQorICAgIHJldHVybiBwYXJzZXIKKworZGVmIG1haW4oYXJncyk6CisgICAgcGFyc2VyID0gX21ha2VfcGFyc2VyKCkKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKKyAgICByZXR1cm4gYXJncy5jb21tYW5kKGFyZ3MpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5IGIvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CmluZGV4IDBlMThkZDkuLjUwM2M2N2EgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKQEAgLTQ5LDI5ICs0OSwxNSBAQAogQHN0YXR1cygiR2V0dGluZyB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC9jaGFuZ2VkIiwKICAgICAgICAgaW5mbz1sYW1iZGEgeDogbl9maWxlc19zdHIobGVuKHgpKSkKIGRlZiBjaGFuZ2VkX2ZpbGVzKCk6Ci0gICAgIiIiR2V0IHRoZSBsaXN0IG9mIGNoYW5nZWQgb3IgYWRkZWQgZmlsZXMgZnJvbSB0aGUgVkNTLiIiIgotICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKFNSQ0RJUiwgJy5oZycpKToKLSAgICAgICAgdmNzID0gJ2hnJwotICAgICAgICBjbWQgPSAnaGcgc3RhdHVzIC0tYWRkZWQgLS1tb2RpZmllZCAtLW5vLXN0YXR1cycKLSAgICAgICAgaWYgbXFfcGF0Y2hlc19hcHBsaWVkKCk6Ci0gICAgICAgICAgICBjbWQgKz0gJyAtLXJldiBxcGFyZW50JwotICAgIGVsaWYgb3MucGF0aC5pc2RpcignLnN2bicpOgotICAgICAgICB2Y3MgPSAnc3ZuJwotICAgICAgICBjbWQgPSAnc3ZuIHN0YXR1cyAtLXF1aWV0IC0tbm9uLWludGVyYWN0aXZlIC0taWdub3JlLWV4dGVybmFscycKLSAgICBlbHNlOgorICAgICIiIkdldCB0aGUgbGlzdCBvZiBjaGFuZ2VkIG9yIGFkZGVkIGZpbGVzIGZyb20gTWVyY3VyaWFsLiIiIgorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihTUkNESVIsICcuaGcnKSk6CiAgICAgICAgIHN5cy5leGl0KCduZWVkIGEgY2hlY2tvdXQgdG8gZ2V0IG1vZGlmaWVkIGZpbGVzJykKIAotICAgIHN0ID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQuc3BsaXQoKSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICB0cnk6Ci0gICAgICAgIHN0LndhaXQoKQotICAgICAgICBpZiB2Y3MgPT0gJ2hnJzoKLSAgICAgICAgICAgIHJldHVybiBbeC5kZWNvZGUoKS5yc3RyaXAoKSBmb3IgeCBpbiBzdC5zdGRvdXRdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRwdXQgPSAoeC5kZWNvZGUoKS5yc3RyaXAoKS5yc3BsaXQoTm9uZSwgMSlbLTFdCi0gICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc3Quc3Rkb3V0IGlmIHhbMF0gaW4gYidBTScpCi0gICAgICAgIHJldHVybiBzZXQocGF0aCBmb3IgcGF0aCBpbiBvdXRwdXQgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCkpCi0gICAgZmluYWxseToKLSAgICAgICAgc3Quc3Rkb3V0LmNsb3NlKCkKKyAgICBjbWQgPSAnaGcgc3RhdHVzIC0tYWRkZWQgLS1tb2RpZmllZCAtLW5vLXN0YXR1cycKKyAgICBpZiBtcV9wYXRjaGVzX2FwcGxpZWQoKToKKyAgICAgICAgY21kICs9ICcgLS1yZXYgcXBhcmVudCcKKyAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oY21kLnNwbGl0KCksIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpIGFzIHN0OgorICAgICAgICByZXR1cm4gW3guZGVjb2RlKCkucnN0cmlwKCkgZm9yIHggaW4gc3Quc3Rkb3V0XQogCiAKIGRlZiByZXBvcnRfbW9kaWZpZWRfZmlsZXMoZmlsZV9wYXRocyk6CkBAIC04OSwxMCArNzUsOCBAQAogZGVmIG5vcm1hbGl6ZV93aGl0ZXNwYWNlKGZpbGVfcGF0aHMpOgogICAgICIiIk1ha2Ugc3VyZSB0aGF0IHRoZSB3aGl0ZXNwYWNlIGZvciAucHkgZmlsZXMgaGF2ZSBiZWVuIG5vcm1hbGl6ZWQuIiIiCiAgICAgcmVpbmRlbnQubWFrZWJhY2t1cCA9IEZhbHNlICAjIE5vIG5lZWQgdG8gY3JlYXRlIGJhY2t1cHMuCi0gICAgZml4ZWQgPSBbXQotICAgIGZvciBwYXRoIGluICh4IGZvciB4IGluIGZpbGVfcGF0aHMgaWYgeC5lbmRzd2l0aCgnLnB5JykpOgotICAgICAgICBpZiByZWluZGVudC5jaGVjayhvcy5wYXRoLmpvaW4oU1JDRElSLCBwYXRoKSk6Ci0gICAgICAgICAgICBmaXhlZC5hcHBlbmQocGF0aCkKKyAgICBmaXhlZCA9IFtwYXRoIGZvciBwYXRoIGluIGZpbGVfcGF0aHMgaWYgcGF0aC5lbmRzd2l0aCgnLnB5JykgYW5kCisgICAgICAgICAgICAgcmVpbmRlbnQuY2hlY2sob3MucGF0aC5qb2luKFNSQ0RJUiwgcGF0aCkpXQogICAgIHJldHVybiBmaXhlZAogCiAKQEAgLTE0OCw2ICsxMzIsMjEgQEAKICAgICAiIiJDaGVjayBpZiBNaXNjL05FV1MgaGFzIGJlZW4gY2hhbmdlZC4iIiIKICAgICByZXR1cm4gJ01pc2MvTkVXUycgaW4gZmlsZV9wYXRocwogCitAc3RhdHVzKCJjb25maWd1cmUgcmVnZW5lcmF0ZWQiLCBtb2RhbD1UcnVlLCBpbmZvPXN0cikKK2RlZiByZWdlbmVyYXRlZF9jb25maWd1cmUoZmlsZV9wYXRocyk6CisgICAgIiIiQ2hlY2sgaWYgY29uZmlndXJlIGhhcyBiZWVuIHJlZ2VuZXJhdGVkLiIiIgorICAgIGlmICdjb25maWd1cmUuYWMnIGluIGZpbGVfcGF0aHM6CisgICAgICAgIHJldHVybiAieWVzIiBpZiAnY29uZmlndXJlJyBpbiBmaWxlX3BhdGhzIGVsc2UgIm5vIgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAibm90IG5lZWRlZCIKKworQHN0YXR1cygicHljb25maWcuaC5pbiByZWdlbmVyYXRlZCIsIG1vZGFsPVRydWUsIGluZm89c3RyKQorZGVmIHJlZ2VuZXJhdGVkX3B5Y29uZmlnX2hfaW4oZmlsZV9wYXRocyk6CisgICAgIiIiQ2hlY2sgaWYgcHljb25maWcuaC5pbiBoYXMgYmVlbiByZWdlbmVyYXRlZC4iIiIKKyAgICBpZiAnY29uZmlndXJlLmFjJyBpbiBmaWxlX3BhdGhzOgorICAgICAgICByZXR1cm4gInllcyIgaWYgJ3B5Y29uZmlnLmguaW4nIGluIGZpbGVfcGF0aHMgZWxzZSAibm8iCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICJub3QgbmVlZGVkIgogCiBkZWYgbWFpbigpOgogICAgIGZpbGVfcGF0aHMgPSBjaGFuZ2VkX2ZpbGVzKCkKQEAgLTE2Nyw2ICsxNjYsMTAgQEAKICAgICBjcmVkaXRfZ2l2ZW4oc3BlY2lhbF9maWxlcykKICAgICAjIE1pc2MvTkVXUyBjaGFuZ2VkLgogICAgIHJlcG9ydGVkX25ld3Moc3BlY2lhbF9maWxlcykKKyAgICAjIFJlZ2VuZXJhdGVkIGNvbmZpZ3VyZSwgaWYgbmVjZXNzYXJ5LgorICAgIHJlZ2VuZXJhdGVkX2NvbmZpZ3VyZShmaWxlX3BhdGhzKQorICAgICMgUmVnZW5lcmF0ZWQgcHljb25maWcuaC5pbiwgaWYgbmVjZXNzYXJ5LgorICAgIHJlZ2VuZXJhdGVkX3B5Y29uZmlnX2hfaW4oZmlsZV9wYXRocykKIAogICAgICMgVGVzdCBzdWl0ZSBydW4gYW5kIHBhc3NlZC4KICAgICBpZiBweXRob25fZmlsZXMgb3IgY19maWxlczoKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkgYi9Ub29scy9zY3JpcHRzL3B5c291cmNlLnB5CmluZGV4IDA0ODEzMWUuLjY5ZThlMGQgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weQpAQCAtMjIsNyArMjIsNyBAQAogCiBpbXBvcnQgb3MsIHJlCiAKLWJpbmFyeV9yZSA9IHJlLmNvbXBpbGUoJ1tceDAwLVx4MDhceDBFLVx4MUZceDdGXScpCitiaW5hcnlfcmUgPSByZS5jb21waWxlKGJyJ1tceDAwLVx4MDhceDBFLVx4MUZceDdGXScpCiAKIGRlYnVnID0gRmFsc2UKIApAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gb3BlbihmdWxscGF0aCwgJ3JVJykKKyAgICAgICAgcmV0dXJuIG9wZW4oZnVsbHBhdGgsICJyYiIpCiAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOiAjIEFjY2VzcyBkZW5pZWQsIG9yIGEgc3BlY2lhbCBmaWxlIC0gaWdub3JlIGl0CiAgICAgICAgIHByaW50X2RlYnVnKCIlczogYWNjZXNzIGRlbmllZDogJXMiICUgKGZ1bGxwYXRoLCBlcnIpKQogICAgICAgICByZXR1cm4gTm9uZQpAQCAtNTUsOCArNTUsOCBAQAogICAgIGlmIGluZmlsZSBpcyBOb25lOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGxpbmUgPSBpbmZpbGUucmVhZGxpbmUoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGxpbmUgPSBpbmZpbGUucmVhZGxpbmUoKQogCiAgICAgaWYgYmluYXJ5X3JlLnNlYXJjaChsaW5lKToKICAgICAgICAgIyBmaWxlIGFwcGVhcnMgdG8gYmUgYmluYXJ5CkBAIC02NSw3ICs2NSw3IEBACiAKICAgICBpZiBmdWxscGF0aC5lbmRzd2l0aCgiLnB5Iikgb3IgZnVsbHBhdGguZW5kc3dpdGgoIi5weXciKToKICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmICJweXRob24iIGluIGxpbmU6CisgICAgZWxpZiBiInB5dGhvbiIgaW4gbGluZToKICAgICAgICAgIyBkaXNndWlzZWQgUHl0aG9uIHNjcmlwdCAoZS5nLiBDR0kpCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTc2LDggKzc2LDggQEAKICAgICBpZiBpbmZpbGUgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBjb2RlID0gaW5maWxlLnJlYWQoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGNvZGUgPSBpbmZpbGUucmVhZCgpCiAKICAgICB0cnk6CiAgICAgICAgIGNvbXBpbGUoY29kZSwgZnVsbHBhdGgsICJleGVjIikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52IGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTc4ZDY5MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CkBAIC0wLDAgKzEsMTEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cworICAgIHJjID0gMQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHZlbnYKKyAgICAgICAgdmVudi5tYWluKCkKKyAgICAgICAgcmMgPSAwCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCgnRXJyb3I6ICVzJyAlIGUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdChyYykKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgYi9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CmluZGV4IGIxODk5M2IuLjRhOTE2ZWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQpAQCAtOCw2ICs4LDggQEAKIC1yICgtLXJlY3Vyc2UpICBSZWN1cnNlLiAgIFNlYXJjaCBmb3IgYWxsIC5weSBmaWxlcyBpbiBzdWJkaXJlY3RvcmllcyB0b28uCiAtbiAoLS1ub2JhY2t1cCkgTm8gYmFja3VwLiBEb2VzIG5vdCBtYWtlIGEgIi5iYWsiIGZpbGUgYmVmb3JlIHJlaW5kZW50aW5nLgogLXYgKC0tdmVyYm9zZSkgIFZlcmJvc2UuICAgUHJpbnQgaW5mb3JtYXRpdmUgbXNnczsgZWxzZSBubyBvdXRwdXQuCisgICAoLS1uZXdsaW5lKSAgTmV3bGluZS4gICBTcGVjaWZ5IHRoZSBuZXdsaW5lIGNoYXJhY3RlciB0byB1c2UgKENSTEYsIExGKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIGZpbGUuCiAtaCAoLS1oZWxwKSAgICAgSGVscC4gICAgICBQcmludCB0aGlzIHVzYWdlIGluZm9ybWF0aW9uIGFuZCBleGl0LgogCiBDaGFuZ2UgUHl0aG9uICgucHkpIGZpbGVzIHRvIHVzZSA0LXNwYWNlIGluZGVudHMgYW5kIG5vIGhhcmQgdGFiIGNoYXJhY3RlcnMuCkBAIC01MCw2ICs1Miw4IEBACiByZWN1cnNlID0gRmFsc2UKIGRyeXJ1biA9IEZhbHNlCiBtYWtlYmFja3VwID0gVHJ1ZQorc3BlY19uZXdsaW5lID0gTm9uZQorIiIiQSBzcGVjaWZpZWQgbmV3bGluZSB0byBiZSB1c2VkIGluIHRoZSBvdXRwdXQgKHNldCBieSAtLW5ld2xpbmUgb3B0aW9uKSIiIgogCiAKIGRlZiB1c2FnZShtc2c9Tm9uZSk6CkBAIC02MiwxMyArNjYsMTIgQEAKICAgICBzeXMuc3RkZXJyLndyaXRlKCIgIi5qb2luKHN0cihhcmcpIGZvciBhcmcgaW4gYXJncykpCiAgICAgc3lzLnN0ZGVyci53cml0ZSgiXG4iKQogCi0KIGRlZiBtYWluKCk6CiAgICAgaW1wb3J0IGdldG9wdAotICAgIGdsb2JhbCB2ZXJib3NlLCByZWN1cnNlLCBkcnlydW4sIG1ha2ViYWNrdXAKKyAgICBnbG9iYWwgdmVyYm9zZSwgcmVjdXJzZSwgZHJ5cnVuLCBtYWtlYmFja3VwLCBzcGVjX25ld2xpbmUKICAgICB0cnk6CiAgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImRybnZoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsiZHJ5cnVuIiwgInJlY3Vyc2UiLCAibm9iYWNrdXAiLCAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICBbImRyeXJ1biIsICJyZWN1cnNlIiwgIm5vYmFja3VwIiwgInZlcmJvc2UiLCAibmV3bGluZT0iLCAiaGVscCJdKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgogICAgICAgICB1c2FnZShtc2cpCiAgICAgICAgIHJldHVybgpAQCAtODEsNiArODQsMTEgQEAKICAgICAgICAgICAgIG1ha2ViYWNrdXAgPSBGYWxzZQogICAgICAgICBlbGlmIG8gaW4gKCctdicsICctLXZlcmJvc2UnKToKICAgICAgICAgICAgIHZlcmJvc2UgPSBUcnVlCisgICAgICAgIGVsaWYgbyBpbiAoJy0tbmV3bGluZScsKToKKyAgICAgICAgICAgIGlmIG5vdCBhLnVwcGVyKCkgaW4gKCdDUkxGJywgJ0xGJyk6CisgICAgICAgICAgICAgICAgdXNhZ2UoKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc3BlY19uZXdsaW5lID0gZGljdChDUkxGPSdcclxuJywgTEY9J1xuJylbYS51cHBlcigpXQogICAgICAgICBlbGlmIG8gaW4gKCctaCcsICctLWhlbHAnKToKICAgICAgICAgICAgIHVzYWdlKCkKICAgICAgICAgICAgIHJldHVybgpAQCAtMTE4LDkgKzEyNiw5IEBACiAgICAgICAgIGVycnByaW50KCIlczogSS9PIEVycm9yOiAlcyIgJSAoZmlsZSwgc3RyKG1zZykpKQogICAgICAgICByZXR1cm4KIAotICAgIG5ld2xpbmUgPSByLm5ld2xpbmVzCisgICAgbmV3bGluZSA9IHNwZWNfbmV3bGluZSBpZiBzcGVjX25ld2xpbmUgZWxzZSByLm5ld2xpbmVzCiAgICAgaWYgaXNpbnN0YW5jZShuZXdsaW5lLCB0dXBsZSk6Ci0gICAgICAgIGVycnByaW50KCIlczogbWl4ZWQgbmV3bGluZXMgZGV0ZWN0ZWQ7IGNhbm5vdCBwcm9jZXNzIGZpbGUiICUgZmlsZSkKKyAgICAgICAgZXJycHJpbnQoIiVzOiBtaXhlZCBuZXdsaW5lcyBkZXRlY3RlZDsgY2Fubm90IGNvbnRpbnVlIHdpdGhvdXQgLS1uZXdsaW5lIiAlIGZpbGUpCiAgICAgICAgIHJldHVybgogCiAgICAgaWYgci5ydW4oKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5IGIvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTJhMjA1MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CkBAIC0wLDAgKzEsNTEgQEAKKyIiIlJ1biBQeXRob24ncyB0ZXN0IHN1aXRlIGluIGEgZmFzdCwgcmlnb3JvdXMgd2F5LgorCitUaGUgZGVmYXVsdHMgYXJlIG1lYW50IHRvIGJlIHJlYXNvbmFibHkgdGhvcm91Z2gsIHdoaWxlIHNraXBwaW5nIGNlcnRhaW4KK3Rlc3RzIHRoYXQgY2FuIGJlIHRpbWUtY29uc3VtaW5nIG9yIHJlc291cmNlLWludGVuc2l2ZSAoZS5nLiBsYXJnZWZpbGUpLAorb3IgZGlzdHJhY3RpbmcgKGUuZy4gYXVkaW8gYW5kIGd1aSkuIFRoZXNlIGRlZmF1bHRzIGNhbiBiZSBvdmVycmlkZGVuIGJ5CitzaW1wbHkgcGFzc2luZyBhIC11IG9wdGlvbiB0byB0aGlzIHNjcmlwdC4KKworIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRlc3Quc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKKworZGVmIGlzX211bHRpcHJvY2Vzc19mbGFnKGFyZyk6CisgICAgcmV0dXJuIGFyZy5zdGFydHN3aXRoKCctaicpIG9yIGFyZy5zdGFydHN3aXRoKCctLW11bHRpcHJvY2VzcycpCisKKworZGVmIGlzX3Jlc291cmNlX3VzZV9mbGFnKGFyZyk6CisgICAgcmV0dXJuIGFyZy5zdGFydHN3aXRoKCctdScpIG9yIGFyZy5zdGFydHN3aXRoKCctLXVzZScpCisKKworZGVmIG1haW4ocmVncnRlc3RfYXJncyk6CisgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICctVycsICdkZWZhdWx0JywgICAgICAjIFdhcm5pbmdzIHNldCB0byAnZGVmYXVsdCcKKyAgICAgICAgICAgICctYmInLCAgICAgICAgICAgICAgICAjIFdhcm5pbmdzIGFib3V0IGJ5dGVzL2J5dGVhcnJheQorICAgICAgICAgICAgJy1FJywgICAgICAgICAgICAgICAgICMgSWdub3JlIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgICAgICAgICAgXQorICAgICMgQWxsb3cgdXNlci1zcGVjaWZpZWQgaW50ZXJwcmV0ZXIgb3B0aW9ucyB0byBvdmVycmlkZSBvdXIgZGVmYXVsdHMuCisgICAgYXJncy5leHRlbmQodGVzdC5zdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQorICAgIGFyZ3MuZXh0ZW5kKFsnLW0nLCAndGVzdCcsICAgICMgUnVuIHRoZSB0ZXN0IHN1aXRlCisgICAgICAgICAgICAgICAgICctcicsICAgICAgICAgICAgIyBSYW5kb21pemUgdGVzdCBvcmRlcgorICAgICAgICAgICAgICAgICAnLXcnLCAgICAgICAgICAgICMgUmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUKKyAgICAgICAgICAgICAgICAgXSkKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgYXJncy5hcHBlbmQoJy1uJykgICAgICAgICAjIFNpbGVuY2UgYWxlcnRzIHVuZGVyIFdpbmRvd3MKKyAgICBpZiB0aHJlYWRpbmcgYW5kIG5vdCBhbnkoaXNfbXVsdGlwcm9jZXNzX2ZsYWcoYXJnKSBmb3IgYXJnIGluIHJlZ3J0ZXN0X2FyZ3MpOgorICAgICAgICBhcmdzLmV4dGVuZChbJy1qJywgJzAnXSkgICMgVXNlIGFsbCBDUFUgY29yZXMKKyAgICBpZiBub3QgYW55KGlzX3Jlc291cmNlX3VzZV9mbGFnKGFyZykgZm9yIGFyZyBpbiByZWdydGVzdF9hcmdzKToKKyAgICAgICAgYXJncy5leHRlbmQoWyctdScsICdhbGwsLWxhcmdlZmlsZSwtYXVkaW8sLWd1aSddKQorICAgIGFyZ3MuZXh0ZW5kKHJlZ3J0ZXN0X2FyZ3MpCisgICAgcHJpbnQoJyAnLmpvaW4oYXJncykpCisgICAgb3MuZXhlY3Yoc3lzLmV4ZWN1dGFibGUsIGFyZ3MpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKHN5cy5hcmd2WzE6XSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5IGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKaW5kZXggYWYyMTQ3YS4uOTk4MzUyOCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKKysrIGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKQEAgLTMxOSw3ICszMTksNyBAQAogCiAgICAgIyBTdGFydCBzYXZpbmcgdGV4dCBpbiBhIGJ1ZmZlciBpbnN0ZWFkIG9mIHdyaXRpbmcgaXQgdG8gYSBmaWxlCiAgICAgZGVmIHN0YXJ0c2F2aW5nKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0ICE9IE5vbmU6CisgICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnNhdmVzdGFjay5hcHBlbmQoc2VsZi5zYXZldGV4dCkKICAgICAgICAgICAgICMgcHJpbnQgJyoqKiBSZWN1cnNpdmVseSBzYXZpbmcgdGV4dCwgZXhwZWN0IHRyb3VibGUnCiAgICAgICAgIHNlbGYuc2F2ZXRleHQgPSAnJwpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHByaW50KGFyZ3MpCiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IKLSAgICAgICAgaWYgc2VsZi5zYXZldGV4dCAhPSBOb25lOgorICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5zYXZldGV4dCA9IHNlbGYuc2F2ZXRleHQgKyB0ZXh0CiAgICAgICAgIGVsaWYgc2VsZi5ub2RlZnA6CiAgICAgICAgICAgICBzZWxmLm5vZGVmcC53cml0ZSh0ZXh0KQpAQCAtMzUwLDcgKzM1MCw3IEBACiAKICAgICAjIENvbXBsZXRlIHRoZSBjdXJyZW50IG5vZGUgLS0gd3JpdGUgZm9vdG5vdGVzIGFuZCBjbG9zZSBmaWxlCiAgICAgZGVmIGVuZG5vZGUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgIT0gTm9uZToKKyAgICAgICAgaWYgc2VsZi5zYXZldGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHByaW50KCcqKiogU3RpbGwgc2F2aW5nIHRleHQgYXQgZW5kIG9mIG5vZGUnKQogICAgICAgICAgICAgZHVtbXkgPSBzZWxmLmNvbGxlY3RzYXZpbmdzKCkKICAgICAgICAgaWYgc2VsZi5mb290bm90ZXM6CkBAIC04MDQsNyArODA0LDcgQEAKICAgICBkZWYgY2xvc2VfaShzZWxmKTogc2VsZi53cml0ZSgnPC9JPicpCiAKICAgICBkZWYgb3Blbl9mb290bm90ZShzZWxmKToKLSAgICAgICAgIyBpZiBzZWxmLnNhdmV0ZXh0IDw+IE5vbmU6CisgICAgICAgICMgaWYgc2VsZi5zYXZldGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgIyAgICAgICBwcmludCAnKioqIFJlY3Vyc2l2ZSBmb290bm90ZSAtLSBleHBlY3Qgd2VpcmRuZXNzJwogICAgICAgICBpZCA9IGxlbihzZWxmLmZvb3Rub3RlcykgKyAxCiAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5GTl9TT1VSQ0VfUEFUVEVSTiAlIHsnaWQnOiByZXByKGlkKX0pCkBAIC0xNDQyLDcgKzE0NDIsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIHNvbWUgb3RoZXIgY2hhcmFjdGVyLCBlLmcuICctJwogICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWxmLml0ZW1hcmcgKyAnICcgKyBhcmdzCi0gICAgICAgIGlmIHNlbGYuaXRlbW51bWJlciAhPSBOb25lOgorICAgICAgICBpZiBzZWxmLml0ZW1udW1iZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhcmdzID0gc2VsZi5pdGVtbnVtYmVyICsgJy4gJyArIGFyZ3MKICAgICAgICAgICAgIHNlbGYuaXRlbW51bWJlciA9IGluY3JlbWVudChzZWxmLml0ZW1udW1iZXIpCiAgICAgICAgIGlmIHNlbGYuc3RhY2sgYW5kIHNlbGYuc3RhY2tbLTFdID09ICd0YWJsZSc6CmRpZmYgLS1naXQgYS9Ub29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSBiL1Rvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMjQ0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zc2wvbWFrZV9zc2xfZGF0YS5weQpAQCAtMCwwICsxLDY4IEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisiIiIKK1RoaXMgc2NyaXB0IHNob3VsZCBiZSBjYWxsZWQgKm1hbnVhbGx5KiB3aGVuIHdlIHdhbnQgdG8gdXBncmFkZSBTU0xFcnJvcgorYGxpYnJhcnlgIGFuZCBgcmVhc29uYCBtbmVtbm9uaWNzIHRvIGEgbW9yZSByZWNlbnQgT3BlblNTTCB2ZXJzaW9uLgorCitJdCB0YWtlcyB0d28gYXJndW1lbnRzOgorLSB0aGUgcGF0aCB0byB0aGUgT3BlblNTTCBpbmNsdWRlIGZpbGVzJyBkaXJlY3RvcnkKKyAgKGUuZy4gb3BlbnNzbC0xLjAuMS1iZXRhMy9pbmNsdWRlL29wZW5zc2wvKQorLSB0aGUgcGF0aCB0byB0aGUgQyBmaWxlIHRvIGJlIGdlbmVyYXRlZAorICAocHJvYmFibHkgTW9kdWxlcy9fc3NsX2RhdGEuaCkKKyIiIgorCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKKworZGVmIHBhcnNlX2Vycm9yX2NvZGVzKGhfZmlsZSwgcHJlZml4KToKKyAgICBwYXQgPSByZS5jb21waWxlKHIiI2RlZmluZVxXKyglcyhbXHddKykpXFcrKFxkKylcYiIgJSByZS5lc2NhcGUocHJlZml4KSkKKyAgICBjb2RlcyA9IFtdCisgICAgd2l0aCBvcGVuKGhfZmlsZSwgInIiLCBlbmNvZGluZz0ibGF0aW4xIikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIG1hdGNoID0gcGF0LnNlYXJjaChsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgY29kZSwgbmFtZSwgbnVtID0gbWF0Y2guZ3JvdXBzKCkKKyAgICAgICAgICAgICAgICBudW0gPSBpbnQobnVtKQorICAgICAgICAgICAgICAgIGNvZGVzLmFwcGVuZCgoY29kZSwgbmFtZSwgbnVtKSkKKyAgICByZXR1cm4gY29kZXMKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBvcGVuc3NsX2luYyA9IHN5cy5hcmd2WzFdCisgICAgb3V0ZmlsZSA9IHN5cy5hcmd2WzJdCisgICAgdXNlX3N0ZG91dCA9IG91dGZpbGUgPT0gJy0nCisgICAgZiA9IHN5cy5zdGRvdXQgaWYgdXNlX3N0ZG91dCBlbHNlIG9wZW4ob3V0ZmlsZSwgInciKQorICAgIGVycm9yX2xpYnJhcmllcyA9ICgKKyAgICAgICAgIyAobGlicmFyeSBjb2RlLCBtbmVtb25pYywgZXJyb3IgcHJlZml4LCBoZWFkZXIgZmlsZSkKKyAgICAgICAgKCdFUlJfTElCX1BFTScsICdQRU0nLCAnUEVNX1JfJywgJ3BlbS5oJyksCisgICAgICAgICgnRVJSX0xJQl9TU0wnLCAnU1NMJywgJ1NTTF9SXycsICdzc2wuaCcpLAorICAgICAgICAoJ0VSUl9MSUJfWDUwOScsICdYNTA5JywgJ1g1MDlfUl8nLCAneDUwOS5oJyksCisgICAgICAgICkKKyAgICBkZWYgdyhsKToKKyAgICAgICAgZi53cml0ZShsICsgIlxuIikKKyAgICB3KCIvKiBGaWxlIGdlbmVyYXRlZCBieSBUb29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSAqLyIpCisgICAgdygiLyogR2VuZXJhdGVkIG9uICVzICovIiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLmlzb2Zvcm1hdCgpKQorICAgIHcoIiIpCisKKyAgICB3KCJzdGF0aWMgc3RydWN0IHB5X3NzbF9saWJyYXJ5X2NvZGUgbGlicmFyeV9jb2Rlc1tdID0geyIpCisgICAgZm9yIGxpYmNvZGUsIG1uZW1vLCBfLCBfIGluIGVycm9yX2xpYnJhcmllczoKKyAgICAgICAgdygnICAgIHsiJXMiLCAlc30sJyAlIChtbmVtbywgbGliY29kZSkpCisgICAgdygnICAgIHsgTlVMTCB9JykKKyAgICB3KCd9OycpCisgICAgdygiIikKKworICAgIHcoInN0YXRpYyBzdHJ1Y3QgcHlfc3NsX2Vycm9yX2NvZGUgZXJyb3JfY29kZXNbXSA9IHsiKQorICAgIGZvciBsaWJjb2RlLCBfLCBwcmVmaXgsIGhfZmlsZSBpbiBlcnJvcl9saWJyYXJpZXM6CisgICAgICAgIGNvZGVzID0gcGFyc2VfZXJyb3JfY29kZXMob3MucGF0aC5qb2luKG9wZW5zc2xfaW5jLCBoX2ZpbGUpLCBwcmVmaXgpCisgICAgICAgIGZvciBjb2RlLCBuYW1lLCBudW0gaW4gc29ydGVkKGNvZGVzKToKKyAgICAgICAgICAgIHcoJyAgI2lmZGVmICVzJyAlIChjb2RlKSkKKyAgICAgICAgICAgIHcoJyAgICB7IiVzIiwgJXMsICVzfSwnICUgKG5hbWUsIGxpYmNvZGUsIGNvZGUpKQorICAgICAgICAgICAgdygnICAjZWxzZScpCisgICAgICAgICAgICB3KCcgICAgeyIlcyIsICVzLCAlZH0sJyAlIChuYW1lLCBsaWJjb2RlLCBudW0pKQorICAgICAgICAgICAgdygnICAjZW5kaWYnKQorICAgIHcoJyAgICB7IE5VTEwgfScpCisgICAgdygnfTsnKQorICAgIGlmIG5vdCB1c2Vfc3Rkb3V0OgorICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3N0cmluZ2JlbmNoL1JFQURNRSBiL1Rvb2xzL3N0cmluZ2JlbmNoL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjcxZjEyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3RyaW5nYmVuY2gvUkVBRE1FCkBAIC0wLDAgKzEsNjggQEAKK3N0cmluZ2JlbmNoIGlzIGEgc2V0IG9mIHBlcmZvcm1hbmNlIHRlc3RzIGNvbXBhcmluZyBieXRlIHN0cmluZworb3BlcmF0aW9ucyB3aXRoIHVuaWNvZGUgb3BlcmF0aW9ucy4gIFRoZSB0d28gc3RyaW5nIGltcGxlbWVudGF0aW9ucworYXJlIGxvb3NlbHkgYmFzZWQgb24gZWFjaCBvdGhlciBhbmQgc29tZXRpbWVzIHRoZSBhbGdvcml0aG0gZm9yIG9uZSBpcworZmFzdGVyIHRoYW4gdGhlIG90aGVyLgorCitUaGVzZSB0ZXN0IHNldCB3YXMgc3RhcnRlZCBhdCB0aGUgTmVlZCBGb3IgU3BlZWQgc3ByaW50IGluIFJleWtqYXZpawordG8gaWRlbnRpZnkgd2hpY2ggc3RyaW5nIG1ldGhvZHMgY291bGQgYmUgc3BlZCB1cCBxdWlja2x5IGFuZCB0bworaWRlbnRpZnkgb2J2aW91cyBwbGFjZXMgZm9yIGltcHJvdmVtZW50LgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBiZW5jaG1hcmsKKworCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkEiKScsICdzdGFydHN3aXRoIHNpbmdsZSBjaGFyYWN0ZXInLCAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfc2luZ2xlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKK1RoZSBiZW5jaCBkZWNvcmF0b3IgdGFrZXMgdGhyZWUgcGFyYW1ldGVycy4gIFRoZSBmaXJzdCBpcyBhIHNob3J0CitkZXNjcmlwdGlvbiBvZiBob3cgdGhlIGNvZGUgd29ya3MuICBJbiBtb3N0IGNhc2VzIHRoaXMgaXMgUHl0aG9uIGNvZGUKK3NuaXBwZXQuICBJdCBpcyBub3QgdGhlIGNvZGUgd2hpY2ggaXMgYWN0dWFsbHkgcnVuIGJlY2F1c2UgdGhlIHJlYWwKK2NvZGUgaXMgaGFuZC1vcHRpbWl6ZWQgdG8gZm9jdXMgb24gdGhlIG1ldGhvZCBiZWluZyB0ZXN0ZWQuCisKK1RoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEgZ3JvdXAgdGl0bGUuICBBbGwgYmVuY2htYXJrcyB3aXRoIHRoZSBzYW1lCitncm91cCB0aXRsZSBhcmUgbGlzdGVkIHRvZ2V0aGVyLiAgVGhpcyBsZXRzIHlvdSBjb21wYXJlIGRpZmZlcmVudAoraW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGFsZ29yaXRobSwgc3VjaCBhcyAidCBpbiBzIgordnMuICJzLmZpbmQodCkiLgorCitUaGUgbGFzdCBpcyBhIGNvdW50LiAgRWFjaCBiZW5jaG1hcmsgbG9vcHMgb3ZlciB0aGUgYWxnb3JpdGhtIGVpdGhlcgorMTAwIG9yIDEwMDAgdGltZXMsIGRlcGVuZGluZyBvbiB0aGUgYWxnb3JpdGhtIHBlcmZvcm1hbmNlLiAgVGhlIG91dHB1dAordGltZSBpcyB0aGUgdGltZSBwZXIgYmVuY2htYXJrIGNhbGwgc28gdGhlIHJlYWRlciBuZWVkcyBhIHdheSB0byBrbm93Citob3cgdG8gc2NhbGUgdGhlIHBlcmZvcm1hbmNlLgorCitUaGVzZSBwYXJhbWV0ZXJzIGJlY29tZSBmdW5jdGlvbiBhdHRyaWJ1dGVzLgorCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGUgb3V0cHV0CisKKworPT09PT09PT09PSBjb3VudCBuZXdsaW5lcworMzguNTQgICA0MS42MCAgIDkyLjcgICAgLi4udGV4dC53aXRoLjIwMDAubmV3bGluZXMuY291bnQoIlxuIikgKCoxMDApCis9PT09PT09PT09IGVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyCisxLjE0ICAgIDEuMTggICAgOTYuOCAgICAoIkEiKjEwMDApLmZpbmQoIkEiKSAoKjEwMDApCiswLjQ0ICAgIDAuNDEgICAgMTA1LjYgICAiQSIgaW4gIkEiKjEwMDAgKCoxMDAwKQorMS4xNSAgICAxLjE3ICAgIDk4LjEgICAgKCJBIioxMDAwKS5pbmRleCgiQSIpICgqMTAwMCkKKworVGhlIGZpcnN0IGNvbHVtbiBpcyB0aGUgcnVuIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciBieXRlIHN0cmluZ3MuCitUaGUgc2Vjb25kIGlzIHRoZSBydW4gdGltZSBmb3IgdW5pY29kZSBzdHJpbmdzLiAgVGhlIHRoaXJkIGlzIGEKK3BlcmNlbnRhZ2U7IGJ5dGUgdGltZSAvIHVuaWNvZGUgdGltZS4gIEl0J3MgdGhlIHBlcmNlbnRhZ2UgYnkgd2hpY2gKK3VuaWNvZGUgaXMgZmFzdGVyIHRoYW4gYnl0ZSBzdHJpbmdzLgorCitUaGUgbGFzdCBjb2x1bW4gY29udGFpbnMgdGhlIGNvZGUgc25pcHBldCBhbmQgdGhlIHJlcGVhdCBjb3VudCBmb3IgdGhlCitpbnRlcm5hbCBiZW5jaG1hcmsgbG9vcC4KKworVGhlIHRpbWVzIGFyZSBjb21wdXRlZCB3aXRoICd0aW1laXQucHknIHdoaWNoIHJlcGVhdHMgdGhlIHRlc3QgbW9yZQorYW5kIG1vcmUgdGltZXMgdW50aWwgdGhlIHRvdGFsIHRpbWUgdGFrZXMgb3ZlciAwLjIgc2Vjb25kcywgcmV0dXJuaW5nCit0aGUgYmVzdCB0aW1lIGZvciBhIHNpbmdsZSBpdGVyYXRpb24uCisKK1RoZSBmaW5hbCBsaW5lIG9mIHRoZSBvdXRwdXQgaXMgdGhlIGN1bXVsYXRpdmUgdGltZSBmb3IgYnl0ZSBhbmQKK3VuaWNvZGUgc3RyaW5ncywgYW5kIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIG9mIHVuaWNvZGUgcmVsYXRpdmUgdG8KK2J5dGVzLiAgRm9yIGV4YW1wbGUKKworNDA3OS44MyA1NDMyLjI1IDc1LjEgICAgVE9UQUwKKworSG93ZXZlciwgdGhpcyBoYXMgbm8gbWVhbmluZyBhcyBpdCBldmVubHkgd2VpZ2h0cyBldmVyeSB0ZXN0LgorCmRpZmYgLS1naXQgYS9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weSBiL1Rvb2xzL3N0cmluZ2JlbmNoL3N0cmluZ2JlbmNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmEwYTIxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weQpAQCAtMCwwICsxLDE0ODIgQEAKKworIyBWYXJpb3VzIG1pY3JvYmVuY2htYXJrcyBjb21wYXJpbmcgdW5pY29kZSBhbmQgYnl0ZSBzdHJpbmcgcGVyZm9ybWFuY2UKKyMgUGxlYXNlIGtlZXAgdGhpcyBmaWxlIGJvdGggMi54IGFuZCAzLnggY29tcGF0aWJsZSEKKworaW1wb3J0IHRpbWVpdAoraW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IG9wZXJhdG9yCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IG9wdHBhcnNlCisKK1ZFUlNJT04gPSAnMi4wJworCitkZWYgcCgqYXJncyk6CisgICAgc3lzLnN0ZG91dC53cml0ZSgnICcuam9pbihzdHIocykgZm9yIHMgaW4gYXJncykgKyAnXG4nKQorCitpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgQllURVMgPSBieXRlc19mcm9tX3N0ciA9IGxhbWJkYSB4OiB4LmVuY29kZSgnYXNjaWknKQorICAgIFVOSUNPREUgPSB1bmljb2RlX2Zyb21fc3RyID0gbGFtYmRhIHg6IHgKK2Vsc2U6CisgICAgQllURVMgPSBieXRlc19mcm9tX3N0ciA9IGxhbWJkYSB4OiB4CisgICAgVU5JQ09ERSA9IHVuaWNvZGVfZnJvbV9zdHIgPSBsYW1iZGEgeDogeC5kZWNvZGUoJ2FzY2lpJykKKworY2xhc3MgVW5zdXBwb3J0ZWRUeXBlKFR5cGVFcnJvcik6CisgICAgcGFzcworCisKK3AoJ3N0cmluZ2JlbmNoIHYlcycgJSBWRVJTSU9OKQorcChzeXMudmVyc2lvbikKK3AoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkpCisKK1JFUEVBVCA9IDEKK1JFUEVBVCA9IDMKKyNSRVBFQVQgPSA3CisKK2lmIF9fbmFtZV9fICE9ICJfX21haW5fXyI6CisgICAgcmFpc2UgU3lzdGVtRXhpdCgiTXVzdCBydW4gYXMgbWFpbiBwcm9ncmFtIikKKworcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKK3BhcnNlci5hZGRfb3B0aW9uKCItUiIsICItLXNraXAtcmUiLCBkZXN0PSJza2lwX3JlIiwKKyAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICBoZWxwPSJza2lwIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXN0cyIpCitwYXJzZXIuYWRkX29wdGlvbigiLTgiLCAiLS04LWJpdCIsIGRlc3Q9ImJ5dGVzX29ubHkiLAorICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgZG8gOC1iaXQgc3RyaW5nIGJlbmNobWFya3MiKQorcGFyc2VyLmFkZF9vcHRpb24oIi11IiwgIi0tdW5pY29kZSIsIGRlc3Q9InVuaWNvZGVfb25seSIsCisgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBkbyBVbmljb2RlIHN0cmluZyBiZW5jaG1hcmtzIikKKworCitfUkFOR0VfMTAwMCA9IGxpc3QocmFuZ2UoMTAwMCkpCitfUkFOR0VfMTAwID0gbGlzdChyYW5nZSgxMDApKQorX1JBTkdFXzEwID0gbGlzdChyYW5nZSgxMCkpCisKK2R1cHMgPSB7fQorZGVmIGJlbmNoKHMsIGdyb3VwLCByZXBlYXRfY291bnQpOgorICAgIGRlZiBibGFoKGYpOgorICAgICAgICBpZiBmLl9fbmFtZV9fIGluIGR1cHM6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiTXVsdGlwbGUgZnVuY3Rpb25zIHdpdGggc2FtZSBuYW1lOiAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYuX19uYW1lX18sKSkKKyAgICAgICAgZHVwc1tmLl9fbmFtZV9fXSA9IDEKKyAgICAgICAgZi5jb21tZW50ID0gcworICAgICAgICBmLmlzX2JlbmNoID0gVHJ1ZQorICAgICAgICBmLmdyb3VwID0gZ3JvdXAKKyAgICAgICAgZi5yZXBlYXRfY291bnQgPSByZXBlYXRfY291bnQKKyAgICAgICAgcmV0dXJuIGYKKyAgICByZXR1cm4gYmxhaAorCitkZWYgdXNlc19yZShmKToKKyAgICBmLnVzZXNfcmUgPSBUcnVlCisKKyMjIyMjIyMgJ2luJyBjb21wYXJpc29ucworCitAYmVuY2goJyJBIiBpbiAiQSIqMTAwMCcsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgaW5fdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgnIkIiIGluICJBIioxMDAwJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBpbl90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworCitAYmVuY2goJyJBQiIgaW4gIkFCIioxMDAwJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5fdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgnIkJDIiBpbiAiQUIiKjEwMDAnLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbl90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJyJCQyIgaW4gKCJBQiIqMzAwKyJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKHMrIkUiKSBpbiAoKHMrIkQiKSozMDArcysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgaW5fdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjMwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczIgaW4gczEKKworIyBUcnkgd2l0aCByZWdleAorQHVzZXNfcmUKK0BiZW5jaCgncz0iQUJDIiozMzsgcmUuY29tcGlsZShzKyJEIikuc2VhcmNoKChzKyJEIikqMzAwK3MrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJlX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSozMDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHBhdCA9IHJlLmNvbXBpbGUoczIpCisgICAgc2VhcmNoID0gcGF0LnNlYXJjaAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHNlYXJjaChzMSkKKworCisjIyMjIHNhbWUgdGVzdHMgYXMgJ2luJyBidXQgdXNlICdmaW5kJworCitAYmVuY2goJygiQSIqMTAwMCkuZmluZCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5maW5kKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLmZpbmQoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuZmluZCgiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLmZpbmQoIkNBIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3Rlcl9iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikuZmluZCgiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDQSIpLmZpbmQoIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkNBIikKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5maW5kKHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCsiRSIrcykuZmluZCgiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgZSttCisgICAgczIgPSBlK20KKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKKworIyMjIyBTYW1lIHRlc3RzIGZvciAncmZpbmQnCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yZmluZCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkucmZpbmQoIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLnJmaW5kKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yZmluZCgiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yZmluZCgiQ0EiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3Rlcl9iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucmZpbmQoIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQkMiKyJBQiIqMzAwKS5yZmluZCgiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJCQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJmaW5kKCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlK20gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUrbQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAocysiRSIrKCJEIitzKSo1MDApLnJmaW5kKHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gbStlICsgKGQrbSkqNTAwCisgICAgczIgPSBtK2UKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKKworIyMjIyBOb3cgd2l0aCBpbmRleC4KKyMgU2tpcCB0aGUgb25lcyB3aGljaCBmYWlsIGJlY2F1c2UgdGhhdCB3b3VsZCBpbmNsdWRlIGV4Y2VwdGlvbiBvdmVyaGVhZC4KKworQGJlbmNoKCcoIkEiKjEwMDApLmluZGV4KCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuaW5kZXgoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbmRleF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLmluZGV4KCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5pbmRleChzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKKworIyMjIyBTYW1lIGZvciByaW5kZXgKKworQGJlbmNoKCcoIkEiKjEwMDApLnJpbmRleCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByaW5kZXhfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yaW5kZXgoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByaW5kZXhfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5yaW5kZXgoIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJpbmRleCgiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByaW5kZXhfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUgKyBtICsgKGQrbSkqNTAwCisgICAgczIgPSBlICsgbQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworCisjIyMjIFNhbWUgZm9yIHBhcnRpdGlvbgorCitAYmVuY2goJygiQSIqMTAwMCkucGFydGl0aW9uKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkucGFydGl0aW9uKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucGFydGl0aW9uKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucGFydGl0aW9uKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5wYXJ0aXRpb24oIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5wYXJ0aXRpb24ocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworCisjIyMjIFNhbWUgZm9yIHJwYXJ0aXRpb24KKworQGJlbmNoKCcoIkEiKjEwMDApLnJwYXJ0aXRpb24oIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkucnBhcnRpdGlvbigiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5ycGFydGl0aW9uKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJwYXJ0aXRpb24oIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5ycGFydGl0aW9uKCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucnBhcnRpdGlvbigiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlICsgbSArIChkK20pKjUwMAorICAgIHMyID0gZSArIG0KKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKKworIyMjIyBTYW1lIGZvciBzcGxpdChzLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkuc3BsaXQoIkEiLCAxKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnNwbGl0KCJCIiwgMSknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5zcGxpdCgiQUIiLCAxKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuc3BsaXQoIkJDIiwgMSknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikuc3BsaXQoIkJDIiwgMSknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLnNwbGl0KHMrIkUiLCAxKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHNwbGl0X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworCisjIyMjIFNhbWUgZm9yIHJzcGxpdChzLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkucnNwbGl0KCJBIiwgMSknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkucnNwbGl0KCJCIiwgMSknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnNwbGl0KCJBQiIsIDEpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnNwbGl0KCJCQyIsIDEpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5yc3BsaXQoIkNBIiwgMSknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJzcGxpdCgiRSIrcywgMSknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByc3BsaXRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUgKyBtICsgKGQrbSkqNTAwCisgICAgczIgPSBlICsgbQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworCisjIyMjIEJlbmNobWFyayB0aGUgb3BlcmF0b3ItYmFzZWQgbWV0aG9kcworCitAYmVuY2goJyJBIioxMCcsICJyZXBlYXQgMSBjaGFyYWN0ZXIgMTAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF9zaW5nbGVfMTBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwCisKK0BiZW5jaCgnIkEiKjEwMDAnLCAicmVwZWF0IDEgY2hhcmFjdGVyIDEwMDAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF9zaW5nbGVfMTAwMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkEiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAwMAorCitAYmVuY2goJyJBQkNERSIqMTAnLCAicmVwZWF0IDUgY2hhcmFjdGVycyAxMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0XzVfMTBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBQkNERSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMAorCitAYmVuY2goJyJBQkNERSIqMTAwMCcsICJyZXBlYXQgNSBjaGFyYWN0ZXJzIDEwMDAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF81XzEwMDBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBQkNERSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMDAwCisKKyMgKyBmb3IgY29uY2F0CisKK0BiZW5jaCgnIkFuZHJldyIrIkRhbGtlIicsICJjb25jYXQgdHdvIHN0cmluZ3MiLCAxMDAwKQorZGVmIGNvbmNhdF90d29fc3RyaW5ncyhTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJEYWxrZSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxK3MyCisKK0BiZW5jaCgnczErczIrczMrczQrLi4uK3MyMCcsICJjb25jYXQgMjAgc3RyaW5ncyBvZiB3b3JkcyBsZW5ndGggNCB0byAxNSIsCisgICAgICAgMTAwMCkKK2RlZiBjb25jYXRfbWFueV9zdHJpbmdzKFNUUik6CisgICAgczE9U1RSKCdUSVhTR1lOUkVEQ1ZCSEonKQorICAgIHMyPVNUUignUFVNVExYQlpWRE8nKQorICAgIHMzPVNUUignRlZaTkonKQorICAgIHM0PVNUUignT0dEWFVXJykKKyAgICBzNT1TVFIoJ1dFSU1STkNPWVZHSEtCJykKKyAgICBzNj1TVFIoJ0ZDUVROTVhQVVpIJykKKyAgICBzNz1TVFIoJ1RJQ1pKWVJMQk5WVUVBSycpCisgICAgczg9U1RSKCdSRVlCJykKKyAgICBzOT1TVFIoJ1BXVU9RJykKKyAgICBzMTA9U1RSKCdFUUhDTUtCUycpCisgICAgczExPVNUUignQUVWREZPSCcpCisgICAgczEyPVNUUignSUZIVkQnKQorICAgIHMxMz1TVFIoJ0pHVENOTFhXT0hRJykKKyAgICBzMTQ9U1RSKCdJVFNLRVBZTFJPWkFXWEYnKQorICAgIHMxNT1TVFIoJ1RIRUsnKQorICAgIHMxNj1TVFIoJ0dIUFpGQlVZQ0tNTkpJVCcpCisgICAgczE3PVNUUignSk1VWicpCisgICAgczE4PVNUUignV0xaUU1UQicpCisgICAgczE5PVNUUignS1BBRENCVycpCisgICAgczIwPVNUUignVE5KSFpRQUdCVScpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIChzMSArIHMyKyBzMysgczQrIHM1KyBzNisgczcrIHM4KyBzOStzMTArCisgICAgICAgICBzMTErczEyK3MxMytzMTQrczE1K3MxNitzMTcrczE4K3MxOStzMjApCisKKworIyMjIyBCZW5jaG1hcmsgam9pbgorCitkZWYgZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsIGFyZyk6CisgICAgaWYgU1RSIGlzIEJZVEVTIGFuZCBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVHlwZQorICAgIHJldHVybiBTVFIoYXJnKQorCitAYmVuY2goJyJBIi5qb2luKCIiKScsCisgICAgICAgImpvaW4gZW1wdHkgc3RyaW5nLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMCkKK2RlZiBqb2luX2VtcHR5X3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbigiIiknLAorICAgICAgICJqb2luIGVtcHR5IHN0cmluZywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDApCitkZWYgam9pbl9lbXB0eV81KFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBIi5qb2luKCJBQkMuLloiKScsCisgICAgICAgImpvaW4gc3RyaW5nIHdpdGggMjYgY2hhcmFjdGVycywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKCJBQkMuLloiKScsCisgICAgICAgImpvaW4gc3RyaW5nIHdpdGggMjYgY2hhcmFjdGVycywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfNShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQSIuam9pbihsaXN0KCJBQkMuLloiKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMjYgY2hhcmFjdGVycywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfbGlzdF9zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gW1NUUih4KSBmb3IgeCBpbiAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiXQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKGxpc3QoIkFCQy4uWiIpKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAyNiBjaGFyYWN0ZXJzLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF9saXN0X2ZpdmUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IFtTVFIoeCkgZm9yIHggaW4gIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIl0KKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBIi5qb2luKFsiQm9iIl0qMTAwKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMTAwIHdvcmRzLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl8xMDBfd29yZHNfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IFtTVFIoIkJvYiIpXSoxMDAKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbihbIkJvYiJdKjEwMCkpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDEwMCB3b3Jkcywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fMTAwX3dvcmRzXzUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IFtTVFIoIkJvYiIpXSoxMDAKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCisjIyMjIHNwbGl0IHRlc3RzCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoc21hbGwpIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3NwbGl0KFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5yc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChzbWFsbCkiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcnNwbGl0KFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5zcGxpdChOb25lLCAxKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9zcGxpdF8xKFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgTiA9IE5vbmUKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChOLCAxKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5yc3BsaXQoTm9uZSwgMSknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcnNwbGl0XzEoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIE4gPSBOb25lCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KE4sIDEpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnBhcnRpdGlvbigiICIpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3BhcnRpdGlvbihTVFIpOgorICAgIHNlcCA9IFNUUigiICIpCisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcGFydGl0aW9uID0gcy5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19wYXJ0aXRpb24oc2VwKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5ycGFydGl0aW9uKCIgIiknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcnBhcnRpdGlvbihTVFIpOgorICAgIHNlcCA9IFNUUigiICIpCisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcnBhcnRpdGlvbiA9IHMucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JwYXJ0aXRpb24oc2VwKQorCitodW1hbl90ZXh0ID0gIiIiXAorUHl0aG9uIGlzIGEgZHluYW1pYyBvYmplY3Qtb3JpZW50ZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhhdCBjYW4gYmUKK3VzZWQgZm9yIG1hbnkga2luZHMgb2Ygc29mdHdhcmUgZGV2ZWxvcG1lbnQuIEl0IG9mZmVycyBzdHJvbmcgc3VwcG9ydAorZm9yIGludGVncmF0aW9uIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIGFuZCB0b29scywgY29tZXMgd2l0aCBleHRlbnNpdmUKK3N0YW5kYXJkIGxpYnJhcmllcywgYW5kIGNhbiBiZSBsZWFybmVkIGluIGEgZmV3IGRheXMuIE1hbnkgUHl0aG9uCitwcm9ncmFtbWVycyByZXBvcnQgc3Vic3RhbnRpYWwgcHJvZHVjdGl2aXR5IGdhaW5zIGFuZCBmZWVsIHRoZSBsYW5ndWFnZQorZW5jb3VyYWdlcyB0aGUgZGV2ZWxvcG1lbnQgb2YgaGlnaGVyIHF1YWxpdHksIG1vcmUgbWFpbnRhaW5hYmxlIGNvZGUuCisKK1B5dGhvbiBydW5zIG9uIFdpbmRvd3MsIExpbnV4L1VuaXgsIE1hYyBPUyBYLCBPUy8yLCBBbWlnYSwgUGFsbQorSGFuZGhlbGRzLCBhbmQgTm9raWEgbW9iaWxlIHBob25lcy4gUHl0aG9uIGhhcyBhbHNvIGJlZW4gcG9ydGVkIHRvIHRoZQorSmF2YSBhbmQgLk5FVCB2aXJ0dWFsIG1hY2hpbmVzLgorCitQeXRob24gaXMgZGlzdHJpYnV0ZWQgdW5kZXIgYW4gT1NJLWFwcHJvdmVkIG9wZW4gc291cmNlIGxpY2Vuc2UgdGhhdAorbWFrZXMgaXQgZnJlZSB0byB1c2UsIGV2ZW4gZm9yIGNvbW1lcmNpYWwgcHJvZHVjdHMuCisiIiIqMjUKK2h1bWFuX3RleHRfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihodW1hbl90ZXh0KQoraHVtYW5fdGV4dF91bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihodW1hbl90ZXh0KQorZGVmIF9nZXRfaHVtYW5fdGV4dChTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gaHVtYW5fdGV4dF91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICByZXR1cm4gaHVtYW5fdGV4dF9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKK0BiZW5jaCgnaHVtYW5fdGV4dC5zcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKGh1Z2UpIiwgMTApCitkZWYgd2hpdGVzcGFjZV9zcGxpdF9odWdlKFNUUik6CisgICAgcyA9IF9nZXRfaHVtYW5fdGV4dChTVFIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXQoKQorCitAYmVuY2goJ2h1bWFuX3RleHQucnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoaHVnZSkiLCAxMCkKK2RlZiB3aGl0ZXNwYWNlX3JzcGxpdF9odWdlKFNUUik6CisgICAgcyA9IF9nZXRfaHVtYW5fdGV4dChTVFIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yc3BsaXQoKQorCisKKworQGJlbmNoKCcidGhpc1xcbmlzXFxuYVxcbnRlc3RcXG4iLnNwbGl0KCJcXG4iKScsICJzcGxpdCBuZXdsaW5lcyIsIDEwMDApCitkZWYgbmV3bGluZXNfc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzXG5pc1xuYVxudGVzdFxuIikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQobmwpCisKKworQGJlbmNoKCcidGhpc1xcbmlzXFxuYVxcbnRlc3RcXG4iLnJzcGxpdCgiXFxuIiknLCAic3BsaXQgbmV3bGluZXMiLCAxMDAwKQorZGVmIG5ld2xpbmVzX3JzcGxpdChTVFIpOgorICAgIHMgPSBTVFIoInRoaXNcbmlzXG5hXG50ZXN0XG4iKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChubCkKKworQGJlbmNoKCcidGhpc1xcbmlzXFxuYVxcbnRlc3RcXG4iLnNwbGl0bGluZXMoKScsICJzcGxpdCBuZXdsaW5lcyIsIDEwMDApCitkZWYgbmV3bGluZXNfc3BsaXRsaW5lcyhTVFIpOgorICAgIHMgPSBTVFIoInRoaXNcbmlzXG5hXG50ZXN0XG4iKQorICAgIHNfc3BsaXRsaW5lcyA9IHMuc3BsaXRsaW5lcworICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0bGluZXMoKQorCisjIyBzcGxpdCB0ZXh0IHdpdGggMjAwMCBuZXdsaW5lcworCitkZWYgX21ha2VfMjAwMF9saW5lcygpOgorICAgIGltcG9ydCByYW5kb20KKyAgICByID0gcmFuZG9tLlJhbmRvbSgxMDApCisgICAgY2hhcnMgPSBsaXN0KG1hcChjaHIsIHJhbmdlKDMyLCAxMjgpKSkKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4oY2hhcnMpOgorICAgICAgICBjaGFyc1tpXSA9ICIgIgorICAgICAgICBpICs9IHIucmFuZHJhbmdlKDkpCisgICAgcyA9ICIiLmpvaW4oY2hhcnMpCisgICAgcyA9IHMqNAorICAgIHdvcmRzID0gW10KKyAgICBmb3IgaSBpbiByYW5nZSgyMDAwKToKKyAgICAgICAgc3RhcnQgPSByLnJhbmRyYW5nZSg5NikKKyAgICAgICAgbiA9IHIucmFuZGludCg1LCA2NSkKKyAgICAgICAgd29yZHMuYXBwZW5kKHNbc3RhcnQ6c3RhcnQrbl0pCisgICAgcmV0dXJuICJcbiIuam9pbih3b3JkcykrIlxuIgorCitfdGV4dF93aXRoXzIwMDBfbGluZXMgPSBfbWFrZV8yMDAwX2xpbmVzKCkKK190ZXh0X3dpdGhfMjAwMF9saW5lc19ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKF90ZXh0X3dpdGhfMjAwMF9saW5lcykKK190ZXh0X3dpdGhfMjAwMF9saW5lc191bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihfdGV4dF93aXRoXzIwMDBfbGluZXMpCitkZWYgX2dldF8yMDAwX2xpbmVzKFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfdGV4dF93aXRoXzIwMDBfbGluZXNfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgcmV0dXJuIF90ZXh0X3dpdGhfMjAwMF9saW5lc19ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworQGJlbmNoKCciLi4udGV4dC4uLiIuc3BsaXQoIlxcbiIpJywgInNwbGl0IDIwMDAgbmV3bGluZXMiLCAxMCkKK2RlZiBuZXdsaW5lc19zcGxpdF8yMDAwKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdChubCkKKworQGJlbmNoKCciLi4udGV4dC4uLiIucnNwbGl0KCJcXG4iKScsICJzcGxpdCAyMDAwIG5ld2xpbmVzIiwgMTApCitkZWYgbmV3bGluZXNfcnNwbGl0XzIwMDAoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcnNwbGl0KG5sKQorCitAYmVuY2goJyIuLi50ZXh0Li4uIi5zcGxpdGxpbmVzKCknLCAic3BsaXQgMjAwMCBuZXdsaW5lcyIsIDEwKQorZGVmIG5ld2xpbmVzX3NwbGl0bGluZXNfMjAwMChTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfc3BsaXRsaW5lcyA9IHMuc3BsaXRsaW5lcworICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdGxpbmVzKCkKKworCisjIyBzcGxpdCB0ZXh0IG9uICItLSIgY2hhcmFjdGVycworQGJlbmNoKAorICAgICcidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iLnNwbGl0KCItLSIpJywKKyAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChzbWFsbCkiLCAxMDAwKQorZGVmIHNwbGl0X211bHRpY2hhcl9zZXBfc21hbGwoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBwYXQgPSBTVFIoIi0tIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChwYXQpCitAYmVuY2goCisgICAgJyJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIucnNwbGl0KCItLSIpJywKKyAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChzbWFsbCkiLCAxMDAwKQorZGVmIHJzcGxpdF9tdWx0aWNoYXJfc2VwX3NtYWxsKFNUUik6CisgICAgcyA9IFNUUigidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBwYXQgPSBTVFIoIi0tIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQocGF0KQorCisjIyBzcGxpdCBkbmEgdGV4dCBvbiAiQUNUQVQiIGNoYXJhY3RlcnMKK0BiZW5jaCgnZG5hLnNwbGl0KCJBQ1RBVCIpJywKKyAgICAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChkbmEpIiwgMTApCitkZWYgc3BsaXRfbXVsdGljaGFyX3NlcF9kbmEoU1RSKToKKyAgICBzID0gX2dldF9kbmEoU1RSKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgcGF0ID0gU1RSKCJBQ1RBVCIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0KHBhdCkKKworQGJlbmNoKCdkbmEucnNwbGl0KCJBQ1RBVCIpJywKKyAgICAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChkbmEpIiwgMTApCitkZWYgcnNwbGl0X211bHRpY2hhcl9zZXBfZG5hKFNUUik6CisgICAgcyA9IF9nZXRfZG5hKFNUUikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgcGF0ID0gU1RSKCJBQ1RBVCIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JzcGxpdChwYXQpCisKKworCisjIyBzcGxpdCB3aXRoIGxpbWl0cworCitHRkYzX2V4YW1wbGUgPSAiXHQiLmpvaW4oWworICAgICJJIiwgIkdlbm9taWNfY2Fub25pY2FsIiwgInJlZ2lvbiIsICIzNTcyMDgiLCAiMzk2MTgzIiwgIi4iLCAiKyIsICIuIiwKKyAgICAiSUQ9U2VxdWVuY2U6UjExOTtub3RlPUNsb25lIFIxMTklM0IgR2VuYmFuayBBRjA2MzAwNztOYW1lPVIxMTkiXSkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUuc3BsaXQoIlxcdCIpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3NwbGl0X25vX2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChzZXApCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnNwbGl0KCJcXHQiLCA4KScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9zcGxpdF9saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoc2VwLCA4KQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5yc3BsaXQoIlxcdCIpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3JzcGxpdF9ub19saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoc2VwKQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5yc3BsaXQoIlxcdCIsIDgpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3JzcGxpdF9saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoc2VwLCA4KQorCisjIyMjIENvdW50IGNoYXJhY3RlcnMKKworQGJlbmNoKCcuLi50ZXh0LndpdGguMjAwMC5uZXdsaW5lcy5jb3VudCgiXFxuIiknLAorICAgICAgICJjb3VudCBuZXdsaW5lcyIsIDEwKQorZGVmIGNvdW50X25ld2xpbmVzKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19jb3VudCA9IHMuY291bnQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19jb3VudChubCkKKworIyBPcmNoaWQgc2VxdWVuY2VzIGNvbmNhdGVuYXRlZCwgZnJvbSBCaW9weXRob24KK19kbmEgPSAiIiIKK0NHVEFBQ0FBR0dUVFRDQ0dUQUdHVEdBQUNDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0dHVFQKK0FBVENUR0dBR0dBVENUR1RUVEFDVFRUR0dUQ0FDQ0NBVEdBR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQUFUVEdDQ0FUQ0cKK0FHQ0NUQ0NUVEdHR0FHQ1RUVENUVEdUVEdHQ0dBR0FUQ1RBQUFDQ0NUVEdDQ0NHR0NHQ0FHVFRUVEdDVENDQUFHVENHVFQKK1RHQUNBQ0FUQUFUVEdHVEdBQUdHR0dHVEdHQ0FUQ0NUVENDQ1RHQUNDQ1RDQ0NDQ0FBQ1RBVFRUVFRUVEFBQ0FBQ1RDVEMKK0FHQ0FBQ0dHQUdBQ1RDQUdUQ1RUQ0dHQ0FBQVRHQ0dBVEFBQVRHR1RHVEdBQVRUR0NBR0FBVENDQ0dUR0NBQ0NBVENHQUcKK1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDR0NDVEdDQ1RHR0dDQVRUR0NHQUdUQ0FUQVQKK0NUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQVRBQ1RHVFRDQUdDQ0dHVEdDR0dBVEdUR0FHVFRUR0dDQ0NDVFRHVFRDVFQKK1RHR1RBQ0dHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ1RUVFRHQVRHR1RDQ1RBQUFUQUNHR0NBQUdBR0dUR0dBQ0dBQUNUQVQKK0dDVEFDQUFDQUFBQVRUR1RUR1RHQ0FHQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBR0FUR0dHQ0NBQ0NHVEFBVENUR0FBR0FDQ0MKK1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHR0NDQVRUVEdHVFRHQ0dBQ0NDQ0FHR1RDQUcKK0dUR0FHQ0FBQ0FHQ1RHVENHVEFBQ0FBR0dUVFRDQ0dUQUdHR1RHQUFDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEEKK0FUQUFUVEdBVENHQUdUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRHR0dUQ0FDQ0NBVEdHR0NBVFRUR0NUR1RUR0FBR1RHQUMKK0NUQUdBVFRUR0NDQVRDR0FHQ0NUQ0NUVEdHR0FHQ0FUQ0NUVEdUVEdHQ0dBVEFUQ1RBQUFDQ0NUQ0FBVFRUVFRDQ0NDQ0EKK0FUQ0FBQVRUQUNBQ0FBQUFUVEdHVEdHQUdHR0dHVEdHQ0FUVENUVENDQ1RUQUNDQ1RDQ0NDQ0FBQVRBVFRUVFRUVEFBQ0EKK0FDVENUQ0FHQ0FBQ0dHQVRBVENUQ0FHQ1RDVFRHQ0FUQ0dBVEdBQUdBQUNDQ0FDQ0dBQUFUR0NHQVRBQUFUR0dUR1RHQUEKK1RUR0NBR0FBVENDQ0dUR0FBQ0NBVENHQUdUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0cKK0NDVEdDQ1RHR0dDQVRUR0NHQUdUQ0FUQVRDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FUQUNUR1RUQ0FHQ0NHR1RHQ0cKK0dBVEdUR0FHVFRUR0dDQ0NDVFRHVFRDVFRUR0dUQUNHR0dHR0dUQ1RBQUdBR0FUR0NBVEdHR0NUVFRUR0FUR0dUQ0NUQUEKK0FUQUNHR0NBQUdBR0dUR0dBQ0dBQUNUQVRHQ1RBQ0FBQ0FBQUFUVEdUVEdUR0NBQUFHR0NDQ0NHR0dUVEdUQ0dUQVRBQUcKK0FUR0dHQ0NBQ0NHQVRBVENUR0FBR0FDQ0NUVFRUR0dBQ0NDQ0FUVEdHQUdDQ0NBVENBQUNDQ0FUR1RDQUdUVEdBVEdHQ0MKK0FUVENHVEFBQ0FBR0dUVFRDQ0dUQUdHVEdBQUNDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0EKK0dUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRHR0dUQ0FDQ0NBVEdHR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQVRUVEdDQ0EKK1RDR0FHQ0NUQ0NUVEdHR0FHQ1RUVENUVEdUVEdHQ0dBVEFUQ1RBQUFDQ0NUVEdDQ0NHR0NBR0FHVFRUVEdHR0FBVENDQ0cKK1RHQUFDQ0FUQ0dBR1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDR0NDVEdDQ1RHR0dDQVQKK1RHQ0dBR1RDQVRBVENUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQUNBQ0NUR1RUQ0FHQ0NHR1RHQ0dHQVRHVEdBR1RUVEcKK0dDQ0NDVFRHVFRDVFRUR0dUQUNHR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NUVFRUR0FUR0dUQ0NUQUFBVEFDR0dDQUFHQUcKK0dUR0dBQ0dBQUNUQVRHQ1RBQ0FBQ0FBQUFUVEdUVEdUR0NBQUFHR0NDQ0NHR0dUVEdUQ0dUQVRUQUdBVEdHR0NDQUNDQVQKK0FBVENUR0FBR0FDQ0NUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FUR0dDQ0FUVFRHR1RUR0MKK0dBQ0NDQUdUQ0FHR1RHQUdHR1RBR0dUR0FBQ0NUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHQUcKK1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVFRHR1RDQUNDQ0FUR0dHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBVFRUR0NDQVQKK0NHQUdDQ1RDQ1RUR0dHQUdDVFRUQ1RUR1RUR0dDR0FHQVRDVEFBQUNDQ1RUR0NDQ0dHQ0dHQUdUVFRHR0NHQ0NBQUdUQ0EKK1RBVEdBQ0FDQVRBQVRUR0dUR0FBR0dHR0dUR0dDQVRDQ1RHQ0NDVEdBQ0NDVENDQ0NBQUFUVEFUVFRUVFRUQUFDQUFDVEMKK1RDQUdDQUFDR0dBVEFUQ1RDR0dDVENUVEdDQVRDR0FUR0FBR0FBQ0dDQUdDR0FBQVRHQ0dBVEFBQVRHR1RHVEdBQVRUR0MKK0FHQUFUQ0NDR1RHQUFDQ0FUQ0dBR1RDVFRUR0dBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0dDQ1QKK0dDQ1RHR0dDQVRUR0dHQUFUQ0FUQVRDVENUQ0NDQ1RBQUNHQUdHQ1RBVENDQUFBQ0FUQUNUR1RUQ0FUQ0NHR1RHQ0dHQVQKK0dUR0FHVFRUR0dDQ0NDVFRHVFRDVFRUR0dUQUNDR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NBVFRUR0FUR0dUQ0NUQ0FBQUEKK0NHR0NBQUdBR0dUR0dBQ0dBQUNUQVRHQ0NBQ0FBQ0FBQUFUVEdUVEdUQ0NDQUFHR0NDQ0NHR0dUVEdUQ0dUQVRUQUdBVEcKK0dHQ0NBQ0NHVEFBQ0NUR0FBR0FDQ0NUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FUR0FDQ0EKK1RUVEdUVEdDR0FDQ0NDQUdUQ0FHQ1RHQUdDQUFDQ0NHQ1RHQUdUR0dBQUdHVENBVFRHQ0NHQVRBVENBQ0FUQUFUQUFUVEcKK0FUQ0dBR1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVEdHVENBQ0NDQVRHQUdDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FUVFQKK0dDQ0FUQ0dBR0NDVENDVFRHR0dBR1RUVFRDVFRHVFRHR0NHQUdBVENUQUFBQ0NDVFRHQ0NDR0dDR0dBR1RUR1RHQ0dDQ0EKK0FHVENBVEFUR0FDQUNBVEFBVFRHR1RHQUFHR0dHR1RHR0NBVENDVEdDQ0NUR0FDQ0NUQ0NDQ0FBQVRUQVRUVFRUVFRBQUMKK0FBQ1RDVENBR0NBQUNHR0FUQVRDVENHR0NUQ1RUR0NBVENHQVRHQUFHQUFDR0NBR0NHQUFBVEdDR0FUQUFBVEdHVEdUR0EKK0FUVEdDQUdBQVRDQ0NHVEdBQUNDQVRDR0FHVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUMKK0dDQ1RHQ0NUR0dHQ0FUVEdDR0FHVENBVEFUQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBVEFDVEdUVENBVENDR0dUR0MKK0dHQVRHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUVEdHVEFDR0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDQVRUVEdBVEdHVENDVEMKK0FBQUFDR0dDQUFHQUdHVEdHQUNHQUFDVEFUR0NUQUNBQUNDQUFBVFRHVFRHVENDQ0FBR0dDQ0NDR0dHVFRHVENHVEFUVEEKK0dBVEdHR0NDQUNDR1RBQUNDVEdBQUdBQ0NDVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEcKK0FDQ0FUR1RHVFRHQ0dBQ0NDQ0FHVENBR0NUR0FHQ0FBQ0dDR0NUR0FHQ0dUQUFDQUFHR1RUVENDR1RBR0dUR0dBQ0NUQ0MKK0dHR0FHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dBR0dUQUFUQ1RHR0FHR0FUQ1RHQ0FUQVRUVFRHR1RDQUMKKyIiIgorX2RuYSA9ICIiLmpvaW4oX2RuYS5zcGxpdGxpbmVzKCkpCitfZG5hID0gX2RuYSAqIDI1CitfZG5hX2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoX2RuYSkKK19kbmFfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoX2RuYSkKKworZGVmIF9nZXRfZG5hKFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfZG5hX3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIHJldHVybiBfZG5hX2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworQGJlbmNoKCdkbmEuY291bnQoIkFBQ1QiKScsICJjb3VudCBBQUNUIHN1YnN0cmluZ3MgaW4gRE5BIGV4YW1wbGUiLCAxMCkKK2RlZiBjb3VudF9hYWN0KFNUUik6CisgICAgc2VxID0gX2dldF9kbmEoU1RSKQorICAgIHNlcV9jb3VudCA9IHNlcS5jb3VudAorICAgIG5lZWRsZSA9IFNUUigiQUFDVCIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzZXFfY291bnQobmVlZGxlKQorCisjIyMjIyBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aAorCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkEiKScsICdzdGFydHN3aXRoIHNpbmdsZSBjaGFyYWN0ZXInLCAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfc2luZ2xlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQW5kcmV3IiknLCAnc3RhcnRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzJywKKyAgICAgICAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfbXVsdGlwbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kcmV3IikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkFuZGVycyIpJywKKyAgICAgICAnc3RhcnRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzIC0gbm90IScsIDEwMDApCitkZWYgc3RhcnRzd2l0aF9tdWx0aXBsZV9ub3QoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kZXJzIikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCisKKyMgZW5kc3dpdGgKKworQGJlbmNoKCciQW5kcmV3Ii5lbmRzd2l0aCgidyIpJywgJ2VuZHN3aXRoIHNpbmdsZSBjaGFyYWN0ZXInLCAxMDAwKQorZGVmIGVuZHN3aXRoX3NpbmdsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJ3IikKKyAgICBzMV9lbmRzd2l0aCA9IHMxLmVuZHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2VuZHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLmVuZHN3aXRoKCJBbmRyZXciKScsICdlbmRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzJywgMTAwMCkKK2RlZiBlbmRzd2l0aF9tdWx0aXBsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRyZXciKQorICAgIHMxX2VuZHN3aXRoID0gczEuZW5kc3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZW5kc3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuZW5kc3dpdGgoIkFuZGVycyIpJywKKyAgICAgICAnZW5kc3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycyAtIG5vdCEnLCAxMDAwKQorZGVmIGVuZHN3aXRoX211bHRpcGxlX25vdChTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRlcnMiKQorICAgIHMxX2VuZHN3aXRoID0gczEuZW5kc3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZW5kc3dpdGgoczIpCisKKyMjIyMgU3RyaXAKKworQGJlbmNoKCciSGVsbG8hXFxuIi5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfc3RyaXBfcmlnaHQoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcbiIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIkhlbGxvIVxcbiIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9yc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcbiIpCisgICAgc19yc3RyaXAgPSBzLnJzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzdHJpcCgpCisKK0BiZW5jaCgnIlxcbkhlbGxvISIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3N0cmlwX2xlZnQoU1RSKToKKyAgICBzID0gU1RSKCJcbkhlbGxvISIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIlxcbkhlbGxvIVxcbiIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3N0cmlwX2JvdGgoU1RSKToKKyAgICBzID0gU1RSKCJcbkhlbGxvIVxuIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciXFxuSGVsbG8hIi5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX2xzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIlxuSGVsbG8hIikKKyAgICBzX2xzdHJpcCA9IHMubHN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbHN0cmlwKCkKKworQGJlbmNoKCdzPSJIZWxsbyFcXG4iOyBzWzotMV0gaWYgc1stMV09PSJcXG4iIGVsc2UgcycsCisgICAgICAgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfaWZfZWxzZShTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVxuIikKKyAgICBOTCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzWzotMV0gaWYgKHNbLTFdID09IE5MKSBlbHNlIHMKKworCisjIFN0cmlwIG11bHRpcGxlIHNwYWNlcyBvciB0YWJzCisKK0BiZW5jaCgnIkhlbGxvXFx0ICAgXFx0Ii5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIHNwYWNlcyBhbmQgdGFicycsIDEwMDApCitkZWYgdGVybWluYWxfc3BhY2Vfc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsb1x0ICAgXHQhIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciSGVsbG9cXHQgICBcXHQiLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIHNwYWNlcyBhbmQgdGFicycsIDEwMDApCitkZWYgdGVybWluYWxfc3BhY2VfcnN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXHQgICBcdCIpCisgICAgc19yc3RyaXAgPSBzLnJzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzdHJpcCgpCisKK0BiZW5jaCgnIlxcdCAgIFxcdEhlbGxvIi5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBzcGFjZXMgYW5kIHRhYnMnLCAxMDAwKQorZGVmIHRlcm1pbmFsX3NwYWNlX2xzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIlx0ICAgXHRIZWxsbyEiKQorICAgIHNfbHN0cmlwID0gcy5sc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sc3RyaXAoKQorCisKKyMjIyMgcmVwbGFjZQorQGJlbmNoKCciVGhpcyBpcyBhIHRlc3QiLnJlcGxhY2UoIiAiLCAiXFx0IiknLCAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyJywKKyAgICAgICAxMDAwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMgPSBTVFIoIlRoaXMgaXMgYSB0ZXN0ISIpCisgICAgZnJvbV9zdHIgPSBTVFIoIiAiKQorICAgIHRvX3N0ciA9IFNUUigiXHQiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworQHVzZXNfcmUKK0BiZW5jaCgncmUuc3ViKCIgIiwgIlxcdCIsICJUaGlzIGlzIGEgdGVzdCInLCAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyJywKKyAgICAgICAxMDAwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9yZShTVFIpOgorICAgIHMgPSBTVFIoIlRoaXMgaXMgYSB0ZXN0ISIpCisgICAgcGF0ID0gcmUuY29tcGlsZShTVFIoIiAiKSkKKyAgICB0b19zdHIgPSBTVFIoIlx0IikKKyAgICBwYXRfc3ViID0gcGF0LnN1YgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBwYXRfc3ViKHRvX3N0ciwgcykKKworQGJlbmNoKCciLi4udGV4dC53aXRoLjIwMDAubGluZXMuLi5yZXBsYWNlKCJcXG4iLCAiICIpJywKKyAgICAgICAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyLCBiaWcgc3RyaW5nJywgMTApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2JpZyhTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJcbiIpCisgICAgdG9fc3RyID0gU1RSKCIgIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCitAdXNlc19yZQorQGJlbmNoKCdyZS5zdWIoIlxcbiIsICIgIiwgIi4uLnRleHQud2l0aC4yMDAwLmxpbmVzLi4uIiknLAorICAgICAgICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXIsIGJpZyBzdHJpbmcnLCAxMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfYmlnX3JlKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgcGF0ID0gcmUuY29tcGlsZShTVFIoIlxuIikpCisgICAgdG9fc3RyID0gU1RSKCIgIikKKyAgICBwYXRfc3ViID0gcGF0LnN1YgorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgcGF0X3N1Yih0b19zdHIsIHMpCisKKworQGJlbmNoKCdkbmEucmVwbGFjZSgiQVRDIiwgIkFUVCIpJywKKyAgICAgICAncmVwbGFjZSBtdWx0aXBsZSBjaGFyYWN0ZXJzLCBkbmEnLCAxMCkKK2RlZiByZXBsYWNlX211bHRpcGxlX2NoYXJhY3RlcnNfZG5hKFNUUik6CisgICAgc2VxID0gX2dldF9kbmEoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJBVEMiKQorICAgIHRvX3N0ciA9IFNUUigiQVRUIikKKyAgICBzZXFfcmVwbGFjZSA9IHNlcS5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzZXFfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCisjIFRoaXMgaW5jcmVhc2VzIHRoZSBjaGFyYWN0ZXIgY291bnQKK0BiZW5jaCgnIi4uLnRleHQud2l0aC4yMDAwLm5ld2xpbmVzLi4ucmVwbGFjZSgiXFxuIiwgIlxcclxcbiIpJywKKyAgICAgICAncmVwbGFjZSBhbmQgZXhwYW5kIG11bHRpcGxlIGNoYXJhY3RlcnMsIGJpZyBzdHJpbmcnLCAxMCkKK2RlZiByZXBsYWNlX211bHRpcGxlX2NoYXJhY3Rlcl9iaWcoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiXG4iKQorICAgIHRvX3N0ciA9IFNUUigiXHJcbiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworCisjIFRoaXMgZGVjcmVhc2VzIHRoZSBjaGFyYWN0ZXIgY291bnQKK0BiZW5jaCgnIldoZW4gc2hhbGwgd2UgdGhyZWUgbWVldCBhZ2Fpbj8iLnJlcGxhY2UoImVlIiwgIiIpJywKKyAgICAgICAncmVwbGFjZS9yZW1vdmUgbXVsdGlwbGUgY2hhcmFjdGVycycsIDEwMDApCitkZWYgcmVwbGFjZV9tdWx0aXBsZV9jaGFyYWN0ZXJfcmVtb3ZlKFNUUik6CisgICAgcyA9IFNUUigiV2hlbiBzaGFsbCB3ZSB0aHJlZSBtZWV0IGFnYWluPyIpCisgICAgZnJvbV9zdHIgPSBTVFIoImVlIikKKyAgICB0b19zdHIgPSBTVFIoIiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCisKK2JpZ19zID0gIkEiICsgKCJaIioxMjgqMTAyNCkKK2JpZ19zX2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoYmlnX3MpCitiaWdfc191bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihiaWdfcykKK2RlZiBfZ2V0X2JpZ19zKFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6IHJldHVybiBiaWdfc191bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOiByZXR1cm4gYmlnX3NfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisjIFRoZSBvbGRlciByZXBsYWNlIGltcGxlbWVudGF0aW9uIGNvdW50ZWQgYWxsIG1hdGNoZXMgaW4KKyMgdGhlIHN0cmluZyBldmVuIHdoZW4gaXQgb25seSBuZWVlZCB0byBtYWtlIG9uZSByZXBsYWNlbWVudC4KK0BiZW5jaCgnKCJBIiArICgiWiIqMTI4KjEwMjQpKS5yZXBsYWNlKCJBIiwgIkJCIiwgMSknLAorICAgICAgICdxdWljayByZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXIgbWF0Y2gnLCAxMCkKK2RlZiBxdWlja19yZXBsYWNlX3NpbmdsZV9tYXRjaChTVFIpOgorICAgIHMgPSBfZ2V0X2JpZ19zKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiQSIpCisgICAgdG9fc3RyID0gU1RSKCJCQiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0ciwgMSkKKworQGJlbmNoKCcoIkEiICsgKCJaIioxMjgqMTAyNCkpLnJlcGxhY2UoIkFaWiIsICJCQlpaIiwgMSknLAorICAgICAgICdxdWljayByZXBsYWNlIG11bHRpcGxlIGNoYXJhY3RlciBtYXRjaCcsIDEwKQorZGVmIHF1aWNrX3JlcGxhY2VfbXVsdGlwbGVfbWF0Y2goU1RSKToKKyAgICBzID0gX2dldF9iaWdfcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIkFaWiIpCisgICAgdG9fc3RyID0gU1RSKCJCQlpaIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyLCAxKQorCisKKyMjIyMKKworIyBDQ1AgZG9lcyBhIGxvdCBvZiB0aGlzLCBmb3IgaW50ZXJuYXRpb25hbGlzYXRpb24gb2YgaW5nYW1lIG1lc3NhZ2VzLgorX2Zvcm1hdCA9ICJUaGUgJSh0aGluZylzIGlzICUocGxhY2UpcyB0aGUgJShsb2NhdGlvbilzLiIKK19mb3JtYXRfZGljdCA9IHsgInRoaW5nIjoiVEhJTkciLCAicGxhY2UiOiJQTEFDRSIsICJsb2NhdGlvbiI6IkxPQ0FUSU9OIiwgfQorX2Zvcm1hdF9ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKF9mb3JtYXQpCitfZm9ybWF0X3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKF9mb3JtYXQpCitfZm9ybWF0X2RpY3RfYnl0ZXMgPSBkaWN0KChieXRlc19mcm9tX3N0cihrKSwgYnl0ZXNfZnJvbV9zdHIodikpIGZvciAoayx2KSBpbiBfZm9ybWF0X2RpY3QuaXRlbXMoKSkKK19mb3JtYXRfZGljdF91bmljb2RlID0gZGljdCgodW5pY29kZV9mcm9tX3N0cihrKSwgdW5pY29kZV9mcm9tX3N0cih2KSkgZm9yIChrLHYpIGluIF9mb3JtYXRfZGljdC5pdGVtcygpKQorCitkZWYgX2dldF9mb3JtYXQoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRUeXBlCisgICAgICAgIHJldHVybiBfZm9ybWF0X2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworZGVmIF9nZXRfZm9ybWF0X2RpY3QoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfZGljdF91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFR5cGUKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfZGljdF9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKyMgRm9ybWF0dGluZy4KK0BiZW5jaCgnIlRoZSAlKGsxKXMgaXMgJShrMilzIHRoZSAlKGszKXMuIiV7ImsxIjoieCIsImsyIjoieSIsImszIjoieiIsfScsCisgICAgICAgJ2Zvcm1hdHRpbmcgYSBzdHJpbmcgdHlwZSB3aXRoIGEgZGljdCcsIDEwMDApCitkZWYgZm9ybWF0X3dpdGhfZGljdChTVFIpOgorICAgIHMgPSBfZ2V0X2Zvcm1hdChTVFIpCisgICAgZCA9IF9nZXRfZm9ybWF0X2RpY3QoU1RSKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICUgZAorCisKKyMjIyMgVXBwZXItIGFuZCBsb3dlci0gY2FzZSBjb252ZXJzaW9uCisKK0BiZW5jaCgnKCJXaGVyZSBpbiB0aGUgd29ybGQgaXMgQ2FybWVuIFNhbiBEZWlnbz8iKjEwKS5sb3dlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIHJhcmUiLCAxMDAwKQorZGVmIGxvd2VyX2NvbnZlcnNpb25fcmFyZShTVFIpOgorICAgIHMgPSBTVFIoIldoZXJlIGluIHRoZSB3b3JsZCBpcyBDYXJtZW4gU2FuIERlaWdvPyIqMTApCisgICAgc19sb3dlciA9IHMubG93ZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sb3dlcigpCisKK0BiZW5jaCgnKCJXSEVSRSBJTiBUSEUgV09STEQgSVMgQ0FSTUVOIFNBTiBERUlHTz8iKjEwKS5sb3dlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIGRlbnNlIiwgMTAwMCkKK2RlZiBsb3dlcl9jb252ZXJzaW9uX2RlbnNlKFNUUik6CisgICAgcyA9IFNUUigiV0hFUkUgSU4gVEhFIFdPUkxEIElTIENBUk1FTiBTQU4gREVJR08/IioxMCkKKyAgICBzX2xvd2VyID0gcy5sb3dlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xvd2VyKCkKKworCitAYmVuY2goJygid0hFUkUgSU4gVEhFIFdPUkxEIElTIGNBUk1FTiBzQU4gZEVJR08/IioxMCkudXBwZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSByYXJlIiwgMTAwMCkKK2RlZiB1cHBlcl9jb252ZXJzaW9uX3JhcmUoU1RSKToKKyAgICBzID0gU1RSKCJXaGVyZSBpbiB0aGUgd29ybGQgaXMgQ2FybWVuIFNhbiBEZWlnbz8iKjEwKQorICAgIHNfdXBwZXIgPSBzLnVwcGVyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfdXBwZXIoKQorCitAYmVuY2goJygid2hlcmUgaW4gdGhlIHdvcmxkIGlzIGNhcm1lbiBzYW4gZGVpZ28/IioxMCkudXBwZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSBkZW5zZSIsIDEwMDApCitkZWYgdXBwZXJfY29udmVyc2lvbl9kZW5zZShTVFIpOgorICAgIHMgPSBTVFIoIndoZXJlIGluIHRoZSB3b3JsZCBpcyBjYXJtZW4gc2FuIGRlaWdvPyIqMTApCisgICAgc191cHBlciA9IHMudXBwZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc191cHBlcigpCisKKworIyBlbmQgb2YgYmVuY2htYXJrcworCisjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBCZW5jaFRpbWVyKHRpbWVpdC5UaW1lcik6CisgICAgZGVmIGJlc3Qoc2VsZiwgcmVwZWF0PTEpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAxMCk6CisgICAgICAgICAgICBudW1iZXIgPSAxMCoqaQorICAgICAgICAgICAgeCA9IHNlbGYudGltZWl0KG51bWJlcikKKyAgICAgICAgICAgIGlmIHggPiAwLjAyOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRpbWVzID0gW3hdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIHJlcGVhdCk6CisgICAgICAgICAgICB0aW1lcy5hcHBlbmQoc2VsZi50aW1laXQobnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIG1pbih0aW1lcykgLyBudW1iZXIKKworZGVmIG1haW4oKToKKyAgICAob3B0aW9ucywgdGVzdF9uYW1lcykgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgb3B0aW9ucy5ieXRlc19vbmx5IGFuZCBvcHRpb25zLnVuaWNvZGVfb25seToKKyAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiT25seSBvbmUgb2YgLS04LWJpdCBhbmQgLS11bmljb2RlIGFyZSBhbGxvd2VkIikKKworICAgIGJlbmNoX2Z1bmN0aW9ucyA9IFtdCisgICAgZm9yIChrLHYpIGluIGdsb2JhbHMoKS5pdGVtcygpOgorICAgICAgICBpZiBoYXNhdHRyKHYsICJpc19iZW5jaCIpOgorICAgICAgICAgICAgaWYgdGVzdF9uYW1lczoKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0X25hbWVzOgorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGluIHYuZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgTm90IHNlbGVjdGVkLCBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG9wdGlvbnMuc2tpcF9yZSBhbmQgaGFzYXR0cih2LCAidXNlc19yZSIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGJlbmNoX2Z1bmN0aW9ucy5hcHBlbmQoICh2Lmdyb3VwLCBrLCB2KSApCisgICAgYmVuY2hfZnVuY3Rpb25zLnNvcnQoKQorCisgICAgcCgiYnl0ZXNcdHVuaWNvZGUiKQorICAgIHAoIihpbiBtcylcdChpbiBtcylcdCVcdGNvbW1lbnQiKQorCisgICAgYnl0ZXNfdG90YWwgPSB1bmlfdG90YWwgPSAwLjAKKworICAgIGZvciB0aXRsZSwgZ3JvdXAgaW4gaXRlcnRvb2xzLmdyb3VwYnkoYmVuY2hfZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvci5pdGVtZ2V0dGVyKDApKToKKyAgICAgICAgIyBGbHVzaCBidWZmZXIgYmVmb3JlIGVhY2ggZ3JvdXAKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIHAoIj0iKjEwLCB0aXRsZSkKKyAgICAgICAgZm9yIChfLCBrLCB2KSBpbiBncm91cDoKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodiwgImlzX2JlbmNoIik6CisgICAgICAgICAgICAgICAgYnl0ZXNfdGltZSA9IDAuMAorICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcyA9ICIgLSAiCisgICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbnMudW5pY29kZV9vbmx5OgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lID0gQmVuY2hUaW1lcigiX19tYWluX18uJXMoX19tYWluX18uQllURVMpIiAlIChrLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IF9fbWFpbl9fIikuYmVzdChSRVBFQVQpCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lX3MgPSAiJS4yZiIgJSAoMTAwMCAqIGJ5dGVzX3RpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190b3RhbCArPSBieXRlc190aW1lCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbnN1cHBvcnRlZFR5cGU6CisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lX3MgPSAiTi9BIgorICAgICAgICAgICAgICAgIHVuaV90aW1lID0gMC4wCisgICAgICAgICAgICAgICAgdW5pX3RpbWVfcyA9ICIgLSAiCisgICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbnMuYnl0ZXNfb25seToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RpbWUgPSBCZW5jaFRpbWVyKCJfX21haW5fXy4lcyhfX21haW5fXy5VTklDT0RFKSIgJSAoaywpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgX19tYWluX18iKS5iZXN0KFJFUEVBVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90aW1lX3MgPSAiJS4yZiIgJSAoMTAwMCAqIHVuaV90aW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RvdGFsICs9IHVuaV90aW1lCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbnN1cHBvcnRlZFR5cGU6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdGltZV9zID0gIk4vQSIKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2UgPSBieXRlc190aW1lL3VuaV90aW1lCisgICAgICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgYXZlcmFnZSA9IDAuMAorICAgICAgICAgICAgICAgIHAoIiVzXHQlc1x0JS4xZlx0JXMgKColZCkiICUgKAorICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lX3MsIHVuaV90aW1lX3MsIDEwMC4qYXZlcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgdi5jb21tZW50LCB2LnJlcGVhdF9jb3VudCkpCisKKyAgICBpZiBieXRlc190b3RhbCA9PSB1bmlfdG90YWwgPT0gMC4wOgorICAgICAgICBwKCJUaGF0IHdhcyB6aXBweSEiKQorICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhdGlvID0gYnl0ZXNfdG90YWwvdW5pX3RvdGFsCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHJhdGlvID0gMC4wCisgICAgICAgIHAoIiUuMmZcdCUuMmZcdCUuMWZcdCVzIiAlICgKKyAgICAgICAgICAgIDEwMDAqYnl0ZXNfdG90YWwsIDEwMDAqdW5pX3RvdGFsLCAxMDAuKnJhdGlvLAorICAgICAgICAgICAgIlRPVEFMIikpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkgYi9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkKaW5kZXggMDEzMDNkYi4uNjUyNWRkZiAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weQpAQCAtMTQsNyArMTQsNyBAQAogICAgIHByaW50KCdDb21wYXJpbmcgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgICAlciBhbmQgICAlcicgJSAoZW5jb2RpbmcxLCBlbmNvZGluZzIpKQogICAgIG1pc21hdGNoID0gMAogICAgICMgQ2hlY2sgZW5jb2RpbmcKLSAgICBmb3IgaSBpbiByYW5nZShzeXMubWF4dW5pY29kZSk6CisgICAgZm9yIGkgaW4gcmFuZ2Uoc3lzLm1heHVuaWNvZGUrMSk6CiAgICAgICAgIHUgPSBjaHIoaSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYzEgPSB1LmVuY29kZShlbmNvZGluZzEpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5IGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQppbmRleCA3ZTdkNmQwLi5mNWExYWYzIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgICAgICAgICAgY29tbWVudCA9ICcnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudFsxOl0uc3RyaXAoKQotICAgICAgICBpZiBlbmMgPCAyNTY6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVuYywgdHVwbGUpIGFuZCBlbmMgPCAyNTY6CiAgICAgICAgICAgICBpZiBlbmMgaW4gdW5tYXBwZWQ6CiAgICAgICAgICAgICAgICAgdW5tYXBwZWQucmVtb3ZlKGVuYykKICAgICAgICAgICAgIGlmIGVuYyA9PSB1bmk6CkBAIC0yMDIsMTEgKzIwMiwxMCBAQAogICAgICMgQW5hbHl6ZSBtYXAgYW5kIGNyZWF0ZSB0YWJsZSBkaWN0CiAgICAgbWFwcGluZ3MgPSBzb3J0ZWQobWFwLml0ZW1zKCkpCiAgICAgdGFibGUgPSB7fQotICAgIG1heGtleSA9IDAKKyAgICBtYXhrZXkgPSAyNTUKICAgICBpZiAnSURFTlRJVFknIGluIG1hcDoKICAgICAgICAgZm9yIGtleSBpbiByYW5nZSgyNTYpOgogICAgICAgICAgICAgdGFibGVba2V5XSA9IChrZXksICcnKQotICAgICAgICBtYXhrZXkgPSAyNTUKICAgICAgICAgZGVsIG1hcFsnSURFTlRJVFknXQogICAgIGZvciBtYXBrZXksIG1hcHZhbHVlIGluIG1hcHBpbmdzOgogICAgICAgICBtYXBjb21tZW50ID0gJycKQEAgLTIyNCw2ICsyMjMsNyBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgIyBDcmVhdGUgdGFibGUgY29kZQorICAgIG1heGNoYXIgPSAwCiAgICAgZm9yIGtleSBpbiByYW5nZShtYXhrZXkgKyAxKToKICAgICAgICAgaWYga2V5IG5vdCBpbiB0YWJsZToKICAgICAgICAgICAgIG1hcHZhbHVlID0gTUlTU0lOR19DT0RFCkBAIC0yMzgsNiArMjM4LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtYXBjaGFyID0gY2hyKG1hcHZhbHVlKQorICAgICAgICBtYXhjaGFyID0gbWF4KG1heGNoYXIsIG9yZChtYXBjaGFyKSkKICAgICAgICAgaWYgbWFwY29tbWVudCBhbmQgY29tbWVudHM6CiAgICAgICAgICAgICBhcHBlbmQoJyAgICAlYSBcdCMgICVzIC0+ICVzJyAlIChtYXBjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhyZXByKGtleSwga2V5X3ByZWNpc2lvbiksCkBAIC0yNDUsNiArMjQ2LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFwcGVuZCgnICAgICVhJyAlIG1hcGNoYXIpCiAKKyAgICBpZiBtYXhjaGFyIDwgMjU2OgorICAgICAgICBhcHBlbmQoJyAgICAlYSBcdCMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbicgJSBVTklfVU5ERUZJTkVEKQogICAgIGFwcGVuZCgnKScpCiAgICAgcmV0dXJuIGwKIApkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQppbmRleCBkNTAzMTkwLi5kODNjZjYzIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQorKysgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQpAQCAtMjEsMTcgKzIxLDIzIEBACiAjIDIwMDQtMDUtMjkgcGVya3kgYWRkIGVhc3QgYXNpYW4gd2lkdGggaW5mb3JtYXRpb24KICMgMjAwNi0wMy0xMCBtdmwgIHVwZGF0ZSB0byBVbmljb2RlIDQuMTsgYWRkIFVDRCAzLjIgZGVsdGEKICMgMjAwOC0wNi0xMSBnYiAgIGFkZCBQUklOVEFCTEVfTUFTSyBmb3IgQXRzdW8gSXNoaW1vdG8ncyBhc2NpaSgpIHBhdGNoCisjIDIwMTEtMTAtMjEgZXppbyBhZGQgc3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMKKyMgMjAxMi0wMSAgICBiZW5qYW1pbiBhZGQgZnVsbCBjYXNlIG1hcHBpbmdzCiAjCiAjIHdyaXR0ZW4gYnkgRnJlZHJpayBMdW5kaCAoZnJlZHJpa0BweXRob253YXJlLmNvbSkKICMKIAotaW1wb3J0IHN5cywgb3MsIHppcGZpbGUKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHppcGZpbGUKKworZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CiAKIFNDUklQVCA9IHN5cy5hcmd2WzBdCiBWRVJTSU9OID0gIjMuMiIKIAogIyBUaGUgVW5pY29kZSBEYXRhYmFzZQotVU5JREFUQV9WRVJTSU9OID0gIjYuMC4wIgorVU5JREFUQV9WRVJTSU9OID0gIjYuMS4wIgogVU5JQ09ERV9EQVRBID0gIlVuaWNvZGVEYXRhJXMudHh0IgogQ09NUE9TSVRJT05fRVhDTFVTSU9OUyA9ICJDb21wb3NpdGlvbkV4Y2x1c2lvbnMlcy50eHQiCiBFQVNUQVNJQU5fV0lEVEggPSAiRWFzdEFzaWFuV2lkdGglcy50eHQiCkBAIC0zOSw2ICs0NSwxOSBAQAogREVSSVZFRF9DT1JFX1BST1BFUlRJRVMgPSAiRGVyaXZlZENvcmVQcm9wZXJ0aWVzJXMudHh0IgogREVSSVZFRE5PUk1BTElaQVRJT05fUFJPUFMgPSAiRGVyaXZlZE5vcm1hbGl6YXRpb25Qcm9wcyVzLnR4dCIKIExJTkVfQlJFQUsgPSAiTGluZUJyZWFrJXMudHh0IgorTkFNRV9BTElBU0VTID0gIk5hbWVBbGlhc2VzJXMudHh0IgorTkFNRURfU0VRVUVOQ0VTID0gIk5hbWVkU2VxdWVuY2VzJXMudHh0IgorU1BFQ0lBTF9DQVNJTkcgPSAiU3BlY2lhbENhc2luZyVzLnR4dCIKK0NBU0VfRk9MRElORyA9ICJDYXNlRm9sZGluZyVzLnR4dCIKKworIyBQcml2YXRlIFVzZSBBcmVhcyAtLSBpbiBwbGFuZXMgMSwgMTUsIDE2CitQVUFfMSA9IHJhbmdlKDB4RTAwMCwgMHhGOTAwKQorUFVBXzE1ID0gcmFuZ2UoMHhGMDAwMCwgMHhGRkZGRSkKK1BVQV8xNiA9IHJhbmdlKDB4MTAwMDAwLCAweDEwRkZGRSkKKworIyB3ZSB1c2UgdGhpcyByYW5nZXMgb2YgUFVBXzE1IHRvIHN0b3JlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzCitOQU1FX0FMSUFTRVNfU1RBUlQgPSAweEYwMDAwCitOQU1FRF9TRVFVRU5DRVNfU1RBUlQgPSAweEYwMjAwCiAKIG9sZF92ZXJzaW9ucyA9IFsiMy4yLjAiXQogCkBAIC02NywxMyArODYsMTUgQEAKIFhJRF9TVEFSVF9NQVNLID0gMHgxMDAKIFhJRF9DT05USU5VRV9NQVNLID0gMHgyMDAKIFBSSU5UQUJMRV9NQVNLID0gMHg0MDAKLU5PREVMVEFfTUFTSyA9IDB4ODAwCi1OVU1FUklDX01BU0sgPSAweDEwMDAKK05VTUVSSUNfTUFTSyA9IDB4ODAwCitDQVNFX0lHTk9SQUJMRV9NQVNLID0gMHgxMDAwCitDQVNFRF9NQVNLID0gMHgyMDAwCitFWFRFTkRFRF9DQVNFX01BU0sgPSAweDQwMDAKIAogIyB0aGVzZSByYW5nZXMgbmVlZCB0byBtYXRjaCB1bmljb2RlZGF0YS5jOmlzX3VuaWZpZWRfaWRlb2dyYXBoCiBjamtfcmFuZ2VzID0gWwogICAgICgnMzQwMCcsICc0REI1JyksCi0gICAgKCc0RTAwJywgJzlGQ0InKSwKKyAgICAoJzRFMDAnLCAnOUZDQycpLAogICAgICgnMjAwMDAnLCAnMkE2RDYnKSwKICAgICAoJzJBNzAwJywgJzJCNzM0JyksCiAgICAgKCcyQjc0MCcsICcyQjgxRCcpCkBAIC0zNjcsNiArMzg4LDcgQEAKICAgICBudW1lcmljID0ge30KICAgICBzcGFjZXMgPSBbXQogICAgIGxpbmVicmVha3MgPSBbXQorICAgIGV4dHJhX2Nhc2luZyA9IFtdCiAKICAgICBmb3IgY2hhciBpbiB1bmljb2RlLmNoYXJzOgogICAgICAgICByZWNvcmQgPSB1bmljb2RlLnRhYmxlW2NoYXJdCkBAIC0zNzksNyArNDAxLDcgQEAKICAgICAgICAgICAgIGRlbHRhID0gVHJ1ZQogICAgICAgICAgICAgaWYgY2F0ZWdvcnkgaW4gWyJMbSIsICJMdCIsICJMdSIsICJMbCIsICJMbyJdOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IEFMUEhBX01BU0sKLSAgICAgICAgICAgIGlmIGNhdGVnb3J5ID09ICJMbCI6CisgICAgICAgICAgICBpZiAiTG93ZXJjYXNlIiBpbiBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IExPV0VSX01BU0sKICAgICAgICAgICAgIGlmICdMaW5lX0JyZWFrJyBpbiBwcm9wZXJ0aWVzIG9yIGJpZGlyZWN0aW9uYWwgPT0gIkIiOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IExJTkVCUkVBS19NQVNLCkBAIC0zODksNyArNDExLDcgQEAKICAgICAgICAgICAgICAgICBzcGFjZXMuYXBwZW5kKGNoYXIpCiAgICAgICAgICAgICBpZiBjYXRlZ29yeSA9PSAiTHQiOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFRJVExFX01BU0sKLSAgICAgICAgICAgIGlmIGNhdGVnb3J5ID09ICJMdSI6CisgICAgICAgICAgICBpZiAiVXBwZXJjYXNlIiBpbiBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFVQUEVSX01BU0sKICAgICAgICAgICAgIGlmIGNoYXIgPT0gb3JkKCIgIikgb3IgY2F0ZWdvcnlbMF0gbm90IGluICgiQyIsICJaIik6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUFJJTlRBQkxFX01BU0sKQEAgLTM5Nyw3ICs0MTksMTIgQEAKICAgICAgICAgICAgICAgICBmbGFncyB8PSBYSURfU1RBUlRfTUFTSwogICAgICAgICAgICAgaWYgIlhJRF9Db250aW51ZSIgaW4gcHJvcGVydGllczoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBYSURfQ09OVElOVUVfTUFTSwotICAgICAgICAgICAgIyB1c2UgZGVsdGEgcHJlZGljdG9yIGZvciB1cHBlci9sb3dlci90aXRsZSBpZiBpdCBmaXRzCisgICAgICAgICAgICBpZiAiQ2FzZWQiIGluIHByb3BlcnRpZXM6CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQ0FTRURfTUFTSworICAgICAgICAgICAgaWYgIkNhc2VfSWdub3JhYmxlIiBpbiBwcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgIGZsYWdzIHw9IENBU0VfSUdOT1JBQkxFX01BU0sKKyAgICAgICAgICAgIHNjID0gdW5pY29kZS5zcGVjaWFsX2Nhc2luZy5nZXQoY2hhcikKKyAgICAgICAgICAgIGNmID0gdW5pY29kZS5jYXNlX2ZvbGRpbmcuZ2V0KGNoYXIsIFtjaGFyXSkKICAgICAgICAgICAgIGlmIHJlY29yZFsxMl06CiAgICAgICAgICAgICAgICAgdXBwZXIgPSBpbnQocmVjb3JkWzEyXSwgMTYpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDA5LDIzICs0MzYsMzkgQEAKICAgICAgICAgICAgIGlmIHJlY29yZFsxNF06CiAgICAgICAgICAgICAgICAgdGl0bGUgPSBpbnQocmVjb3JkWzE0XSwgMTYpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgVUNELmh0bWwgc2F5cyB0aGF0IGEgbWlzc2luZyB0aXRsZSBjaGFyIG1lYW5zIHRoYXQKLSAgICAgICAgICAgICAgICAjIGl0IGRlZmF1bHRzIHRvIHRoZSB1cHBlcmNhc2UgY2hhcmFjdGVyLCBub3QgdG8gdGhlCi0gICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgaXRzZWxmLiBBcHBhcmVudGx5LCBpbiB0aGUgY3VycmVudCBVQ0QgKDUueCkKLSAgICAgICAgICAgICAgICAjIHRoaXMgZmVhdHVyZSBpcyBuZXZlciB1c2VkCiAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cHBlcgotICAgICAgICAgICAgdXBwZXJfZCA9IHVwcGVyIC0gY2hhcgotICAgICAgICAgICAgbG93ZXJfZCA9IGxvd2VyIC0gY2hhcgotICAgICAgICAgICAgdGl0bGVfZCA9IHRpdGxlIC0gY2hhcgotICAgICAgICAgICAgaWYgLTMyNzY4IDw9IHVwcGVyX2QgPD0gMzI3NjcgYW5kIFwKLSAgICAgICAgICAgICAgIC0zMjc2OCA8PSBsb3dlcl9kIDw9IDMyNzY3IGFuZCBcCi0gICAgICAgICAgICAgICAtMzI3NjggPD0gdGl0bGVfZCA8PSAzMjc2NzoKLSAgICAgICAgICAgICAgICAjIHVzZSBkZWx0YXMKLSAgICAgICAgICAgICAgICB1cHBlciA9IHVwcGVyX2QgJiAweGZmZmYKLSAgICAgICAgICAgICAgICBsb3dlciA9IGxvd2VyX2QgJiAweGZmZmYKLSAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlX2QgJiAweGZmZmYKKyAgICAgICAgICAgIGlmIHNjIGlzIE5vbmUgYW5kIGNmICE9IFtsb3dlcl06CisgICAgICAgICAgICAgICAgc2MgPSAoW2xvd2VyXSwgW3RpdGxlXSwgW3VwcGVyXSkKKyAgICAgICAgICAgIGlmIHNjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgdXBwZXIgPT0gbG93ZXIgPT0gdGl0bGU6CisgICAgICAgICAgICAgICAgICAgIHVwcGVyID0gbG93ZXIgPSB0aXRsZSA9IDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1cHBlciA9IHVwcGVyIC0gY2hhcgorICAgICAgICAgICAgICAgICAgICBsb3dlciA9IGxvd2VyIC0gY2hhcgorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlIC0gY2hhcgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGFicyh1cHBlcikgPD0gMjE0NzQ4MzY0NyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnMobG93ZXIpIDw9IDIxNDc0ODM2NDcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzKHRpdGxlKSA8PSAyMTQ3NDgzNjQ3KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmbGFncyB8PSBOT0RFTFRBX01BU0sKKyAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBlaXRoZXIgd2hlbiBzb21lIGNoYXJhY3RlciBtYXBzIHRvIG1vcmUgdGhhbiBvbmUKKyAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBpbiB1cHBlcmNhc2UsIGxvd2VyY2FzZSwgb3IgdGl0bGVjYXNlIG9yIHRoZQorICAgICAgICAgICAgICAgICMgY2FzZWZvbGRlZCB2ZXJzaW9uIG9mIHRoZSBjaGFyYWN0ZXIgaXMgZGlmZmVyZW50IGZyb20gdGhlCisgICAgICAgICAgICAgICAgIyBsb3dlcmNhc2UuIFRoZSBleHRyYSBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQgaW4gYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAjIGFycmF5LgorICAgICAgICAgICAgICAgIGZsYWdzIHw9IEVYVEVOREVEX0NBU0VfTUFTSworICAgICAgICAgICAgICAgIGxvd2VyID0gbGVuKGV4dHJhX2Nhc2luZykgfCAobGVuKHNjWzBdKSA8PCAyNCkKKyAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKHNjWzBdKQorICAgICAgICAgICAgICAgIGlmIGNmICE9IHNjWzBdOgorICAgICAgICAgICAgICAgICAgICBsb3dlciB8PSBsZW4oY2YpIDw8IDIwCisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoY2YpCisgICAgICAgICAgICAgICAgdXBwZXIgPSBsZW4oZXh0cmFfY2FzaW5nKSB8IChsZW4oc2NbMl0pIDw8IDI0KQorICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoc2NbMl0pCisgICAgICAgICAgICAgICAgIyBUaXRsZSBpcyBwcm9iYWJseSBlcXVhbCB0byB1cHBlci4KKyAgICAgICAgICAgICAgICBpZiBzY1sxXSA9PSBzY1syXToKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cHBlcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gbGVuKGV4dHJhX2Nhc2luZykgfCAobGVuKHNjWzFdKSA8PCAyNCkKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChzY1sxXSkKICAgICAgICAgICAgICMgZGVjaW1hbCBkaWdpdCwgaW50ZWdlciBkaWdpdAogICAgICAgICAgICAgZGVjaW1hbCA9IDAKICAgICAgICAgICAgIGlmIHJlY29yZFs2XToKQEAgLTQ1Miw2ICs0OTUsNyBAQAogICAgIHByaW50KHN1bShtYXAobGVuLCBudW1lcmljLnZhbHVlcygpKSksICJudW1lcmljIGNvZGUgcG9pbnRzIikKICAgICBwcmludChsZW4oc3BhY2VzKSwgIndoaXRlc3BhY2UgY29kZSBwb2ludHMiKQogICAgIHByaW50KGxlbihsaW5lYnJlYWtzKSwgImxpbmVicmVhayBjb2RlIHBvaW50cyIpCisgICAgcHJpbnQobGVuKGV4dHJhX2Nhc2luZyksICJleHRlbmRlZCBjYXNlIGFycmF5IikKIAogICAgIHByaW50KCItLS0gV3JpdGluZyIsIEZJTEUsICIuLi4iKQogCkBAIC00NjUsNiArNTA5LDE0IEBACiAgICAgcHJpbnQoIn07IiwgZmlsZT1mcCkKICAgICBwcmludChmaWxlPWZwKQogCisgICAgcHJpbnQoIi8qIGV4dGVuZGVkIGNhc2UgbWFwcGluZ3MgKi8iLCBmaWxlPWZwKQorICAgIHByaW50KGZpbGU9ZnApCisgICAgcHJpbnQoImNvbnN0IFB5X1VDUzQgX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbXSA9IHsiLCBmaWxlPWZwKQorICAgIGZvciBjIGluIGV4dHJhX2Nhc2luZzoKKyAgICAgICAgcHJpbnQoIiAgICAlZCwiICUgYywgZmlsZT1mcCkKKyAgICBwcmludCgifTsiLCBmaWxlPWZwKQorICAgIHByaW50KGZpbGU9ZnApCisKICAgICAjIHNwbGl0IGRlY29tcG9zaXRpb24gaW5kZXggdGFibGUKICAgICBpbmRleDEsIGluZGV4Miwgc2hpZnQgPSBzcGxpdGJpbnMoaW5kZXgsIHRyYWNlKQogCkBAIC02OTIsNiArNzQ0LDM5IEBACiAgICAgcHJpbnQoIi8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLyIsIGZpbGU9ZnApCiAgICAgY29kZWhhc2guZHVtcChmcCwgdHJhY2UpCiAKKyAgICBwcmludChmaWxlPWZwKQorICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfc3RhcnQgPSAlI3g7JyAlCisgICAgICAgICAgTkFNRV9BTElBU0VTX1NUQVJULCBmaWxlPWZwKQorICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfZW5kID0gJSN4OycgJQorICAgICAgICAgIChOQU1FX0FMSUFTRVNfU1RBUlQgKyBsZW4odW5pY29kZS5hbGlhc2VzKSksIGZpbGU9ZnApCisKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lX2FsaWFzZXNbXSA9IHsnLCBmaWxlPWZwKQorICAgIGZvciBuYW1lLCBjb2RlcG9pbnQgaW4gdW5pY29kZS5hbGlhc2VzOgorICAgICAgICBwcmludCgnICAgIDB4JTA0WCwnICUgY29kZXBvaW50LCBmaWxlPWZwKQorICAgIHByaW50KCd9OycsIGZpbGU9ZnApCisKKyAgICAjIEluIFVuaWNvZGUgNi4wLjAsIHRoZSBzZXF1ZW5jZXMgY29udGFpbiBhdCBtb3N0IDQgQk1QIGNoYXJzLAorICAgICMgc28gd2UgYXJlIHVzaW5nIFB5X1VDUzIgc2VxWzRdLiAgVGhpcyBuZWVkcyB0byBiZSB1cGRhdGVkIGlmIGxvbmdlcgorICAgICMgc2VxdWVuY2VzIG9yIHNlcXVlbmNlcyB3aXRoIG5vbi1CTVAgY2hhcnMgYXJlIGFkZGVkLgorICAgICMgdW5pY29kZWRhdGFfbG9va3VwIHNob3VsZCBiZSBhZGFwdGVkIHRvby4KKyAgICBwcmludChkZWRlbnQoIiIiCisgICAgICAgIHR5cGVkZWYgc3RydWN0IE5hbWVkU2VxdWVuY2UgeworICAgICAgICAgICAgaW50IHNlcWxlbjsKKyAgICAgICAgICAgIFB5X1VDUzIgc2VxWzRdOworICAgICAgICB9IG5hbWVkX3NlcXVlbmNlOworICAgICAgICAiIiIpLCBmaWxlPWZwKQorCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZWRfc2VxdWVuY2VzX3N0YXJ0ID0gJSN4OycgJQorICAgICAgICAgIE5BTUVEX1NFUVVFTkNFU19TVEFSVCwgZmlsZT1mcCkKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfZW5kID0gJSN4OycgJQorICAgICAgICAgIChOQU1FRF9TRVFVRU5DRVNfU1RBUlQgKyBsZW4odW5pY29kZS5uYW1lZF9zZXF1ZW5jZXMpKSwgZmlsZT1mcCkKKworICAgIHByaW50KCdzdGF0aWMgY29uc3QgbmFtZWRfc2VxdWVuY2UgbmFtZWRfc2VxdWVuY2VzW10gPSB7JywgZmlsZT1mcCkKKyAgICBmb3IgbmFtZSwgc2VxdWVuY2UgaW4gdW5pY29kZS5uYW1lZF9zZXF1ZW5jZXM6CisgICAgICAgIHNlcV9zdHIgPSAnLCAnLmpvaW4oJzB4JTA0WCcgJSBjcCBmb3IgY3AgaW4gc2VxdWVuY2UpCisgICAgICAgIHByaW50KCcgICAgeyVkLCB7JXN9fSwnICUgKGxlbihzZXF1ZW5jZSksIHNlcV9zdHIpLCBmaWxlPWZwKQorICAgIHByaW50KCd9OycsIGZpbGU9ZnApCisKICAgICBmcC5jbG9zZSgpCiAKIApAQCAtNzI2LDcgKzgxMSwxMSBAQAogICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobGVuKG9sZC50YWJsZVtpXSkpOgogICAgICAgICAgICAgICAgIGlmIG9sZC50YWJsZVtpXVtrXSAhPSBuZXcudGFibGVbaV1ba106CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gb2xkLnRhYmxlW2ldW2tdCi0gICAgICAgICAgICAgICAgICAgIGlmIGsgPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgaWYgayA9PSAxIGFuZCBpIGluIFBVQV8xNToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5hbWUgaXMgbm90IHNldCBpbiB0aGUgb2xkLnRhYmxlLCBidXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIG5ldy50YWJsZSB3ZSBhcmUgdXNpbmcgaXQgZm9yIGFsaWFzZXMgYW5kIG5hbWVkIHNlcQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlID09ICcnCisgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50ICJDQVRFR09SWSIsaGV4KGkpLCBvbGQudGFibGVbaV1ba10sIG5ldy50YWJsZVtpXVtrXQogICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfY2hhbmdlc1tpXSA9IENBVEVHT1JZX05BTUVTLmluZGV4KHZhbHVlKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gNDoKQEAgLTgxNiwxNSArOTA1LDE1IEBACiAgICAgICAgICAgICAgICAgIGV4cGFuZD0xLAogICAgICAgICAgICAgICAgICBjamtfY2hlY2s9VHJ1ZSk6CiAgICAgICAgIHNlbGYuY2hhbmdlZCA9IFtdCi0gICAgICAgIGZpbGUgPSBvcGVuX2RhdGEoVU5JQ09ERV9EQVRBLCB2ZXJzaW9uKQogICAgICAgICB0YWJsZSA9IFtOb25lXSAqIDB4MTEwMDAwCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBzID0gZmlsZS5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcyA9IHMuc3RyaXAoKS5zcGxpdCgiOyIpCi0gICAgICAgICAgICBjaGFyID0gaW50KHNbMF0sIDE2KQotICAgICAgICAgICAgdGFibGVbY2hhcl0gPSBzCisgICAgICAgIHdpdGggb3Blbl9kYXRhKFVOSUNPREVfREFUQSwgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgcyA9IGZpbGUucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkuc3BsaXQoIjsiKQorICAgICAgICAgICAgICAgIGNoYXIgPSBpbnQoc1swXSwgMTYpCisgICAgICAgICAgICAgICAgdGFibGVbY2hhcl0gPSBzCiAKICAgICAgICAgY2prX3Jhbmdlc19mb3VuZCA9IFtdCiAKQEAgLTg1NSwzMiArOTQ0LDc5IEBACiAgICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogICAgICAgICBzZWxmLmNoYXJzID0gbGlzdChyYW5nZSgweDExMDAwMCkpICMgdW5pY29kZSAzLjIKIAotICAgICAgICBmaWxlID0gb3Blbl9kYXRhKENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMsIHZlcnNpb24pCisgICAgICAgICMgY2hlY2sgZm9yIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLCBzZWUgIzEyNzUzCisgICAgICAgICMgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzIGFyZSBub3QgaW4gMy4yLjAKKyAgICAgICAgaWYgdmVyc2lvbiAhPSAnMy4yLjAnOgorICAgICAgICAgICAgc2VsZi5hbGlhc2VzID0gW10KKyAgICAgICAgICAgICMgc3RvcmUgYWxpYXNlcyBpbiB0aGUgUHJpdmF0ZSBVc2UgQXJlYSAxNSwgaW4gcmFuZ2UgVStGMDAwMC4uVStGMDBGRiwKKyAgICAgICAgICAgICMgaW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvbXByZXNzaW9uIGFuZCBsb29rdXAKKyAgICAgICAgICAgICMgYWxnb3JpdGhtcyB1c2VkIGZvciB0aGUgb3RoZXIgY2hhcmFjdGVycworICAgICAgICAgICAgcHVhX2luZGV4ID0gTkFNRV9BTElBU0VTX1NUQVJUCisgICAgICAgICAgICB3aXRoIG9wZW5fZGF0YShOQU1FX0FMSUFTRVMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGNoYXIsIG5hbWUsIGFiYnJldiA9IHMuc3BsaXQoJzsnKQorICAgICAgICAgICAgICAgICAgICBjaGFyID0gaW50KGNoYXIsIDE2KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFsaWFzZXMuYXBwZW5kKChuYW1lLCBjaGFyKSkKKyAgICAgICAgICAgICAgICAgICAgIyBhbHNvIHN0b3JlIHRoZSBuYW1lIGluIHRoZSBQVUEgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlW3B1YV9pbmRleF1bMV0gPSBuYW1lCisgICAgICAgICAgICAgICAgICAgIHB1YV9pbmRleCArPSAxCisgICAgICAgICAgICBhc3NlcnQgcHVhX2luZGV4IC0gTkFNRV9BTElBU0VTX1NUQVJUID09IGxlbihzZWxmLmFsaWFzZXMpCisKKyAgICAgICAgICAgIHNlbGYubmFtZWRfc2VxdWVuY2VzID0gW10KKyAgICAgICAgICAgICMgc3RvcmUgbmFtZWQgc2VxZW5jZXMgaW4gdGhlIFBVQSAxLCBpbiByYW5nZSBVK0YwMTAwLi4sCisgICAgICAgICAgICAjIGluIG9yZGVyIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBjb21wcmVzc2lvbiBhbmQgbG9va3VwCisgICAgICAgICAgICAjIGFsZ29yaXRobXMgdXNlZCBmb3IgdGhlIG90aGVyIGNoYXJhY3RlcnMuCisKKyAgICAgICAgICAgIGFzc2VydCBwdWFfaW5kZXggPCBOQU1FRF9TRVFVRU5DRVNfU1RBUlQKKyAgICAgICAgICAgIHB1YV9pbmRleCA9IE5BTUVEX1NFUVVFTkNFU19TVEFSVAorICAgICAgICAgICAgd2l0aCBvcGVuX2RhdGEoTkFNRURfU0VRVUVOQ0VTLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcy5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBuYW1lLCBjaGFycyA9IHMuc3BsaXQoJzsnKQorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IHR1cGxlKGludChjaGFyLCAxNikgZm9yIGNoYXIgaW4gY2hhcnMuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBzdHJ1Y3R1cmUgZGVmaW5lZCBpbiBtYWtldW5pY29kZW5hbWUgaXMgT0sKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDIgPD0gbGVuKGNoYXJzKSA8PSA0LCAiY2hhbmdlIHRoZSBQeV9VQ1MyIGFycmF5IHNpemUiCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhbGwoYyA8PSAweEZGRkYgZm9yIGMgaW4gY2hhcnMpLCAoInVzZSBQeV9VQ1M0IGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgTmFtZWRTZXF1ZW5jZSBzdHJ1Y3QgYW5kIGluIHVuaWNvZGVkYXRhX2xvb2t1cCIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZWRfc2VxdWVuY2VzLmFwcGVuZCgobmFtZSwgY2hhcnMpKQorICAgICAgICAgICAgICAgICAgICAjIGFsc28gc3RvcmUgdGhlc2UgaW4gdGhlIFBVQSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVbcHVhX2luZGV4XVsxXSA9IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgcHVhX2luZGV4ICs9IDEKKyAgICAgICAgICAgIGFzc2VydCBwdWFfaW5kZXggLSBOQU1FRF9TRVFVRU5DRVNfU1RBUlQgPT0gbGVuKHNlbGYubmFtZWRfc2VxdWVuY2VzKQorCiAgICAgICAgIHNlbGYuZXhjbHVzaW9ucyA9IHt9Ci0gICAgICAgIGZvciBzIGluIGZpbGU6Ci0gICAgICAgICAgICBzID0gcy5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGNoYXIgPSBpbnQocy5zcGxpdCgpWzBdLDE2KQotICAgICAgICAgICAgc2VsZi5leGNsdXNpb25zW2NoYXJdID0gMQorICAgICAgICB3aXRoIG9wZW5fZGF0YShDT01QT1NJVElPTl9FWENMVVNJT05TLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2hhciA9IGludChzLnNwbGl0KClbMF0sMTYpCisgICAgICAgICAgICAgICAgc2VsZi5leGNsdXNpb25zW2NoYXJdID0gMQogCiAgICAgICAgIHdpZHRocyA9IFtOb25lXSAqIDB4MTEwMDAwCi0gICAgICAgIGZvciBzIGluIG9wZW5fZGF0YShFQVNUQVNJQU5fV0lEVEgsIHZlcnNpb24pOgotICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBzID0gcy5zcGxpdCgpWzBdLnNwbGl0KCc7JykKLSAgICAgICAgICAgIGlmICcuLicgaW4gc1swXToKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCi0gICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQoc1swXSwgMTYpXQotICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6Ci0gICAgICAgICAgICAgICAgd2lkdGhzW2NoYXJdID0gc1sxXQorICAgICAgICB3aXRoIG9wZW5fZGF0YShFQVNUQVNJQU5fV0lEVEgsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzID0gcy5zcGxpdCgpWzBdLnNwbGl0KCc7JykKKyAgICAgICAgICAgICAgICBpZiAnLi4nIGluIHNbMF06CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChzWzBdLCAxNildCisgICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHdpZHRoc1tjaGFyXSA9IHNbMV0KKwogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAweDExMDAwMCk6CiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXS5hcHBlbmQod2lkdGhzW2ldKQpAQCAtODg4LDM2ICsxMDI0LDM5IEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgIGlmIHRhYmxlW2ldIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlW2ldLmFwcGVuZChzZXQoKSkKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKERFUklWRURfQ09SRV9QUk9QRVJUSUVTLCB2ZXJzaW9uKToKLSAgICAgICAgICAgIHMgPSBzLnNwbGl0KCcjJywgMSlbMF0uc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgciwgcCA9IHMuc3BsaXQoIjsiKQotICAgICAgICAgICAgciA9IHIuc3RyaXAoKQotICAgICAgICAgICAgcCA9IHAuc3RyaXAoKQotICAgICAgICAgICAgaWYgIi4uIiBpbiByOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gci5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChyLCAxNildCi0gICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKLSAgICAgICAgICAgICAgICBpZiB0YWJsZVtjaGFyXToKLSAgICAgICAgICAgICAgICAgICAgIyBTb21lIHByb3BlcnRpZXMgKGUuZy4gRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCkKLSAgICAgICAgICAgICAgICAgICAgIyBhcHBseSB0byB1bmFzc2lnbmVkIGNvZGUgcG9pbnRzOyBpZ25vcmUgdGhlbQotICAgICAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKHApCisgICAgICAgIHdpdGggb3Blbl9kYXRhKERFUklWRURfQ09SRV9QUk9QRVJUSUVTLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5zcGxpdCgnIycsIDEpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoTElORV9CUkVBSywgdmVyc2lvbik6Ci0gICAgICAgICAgICBzID0gcy5wYXJ0aXRpb24oJyMnKVswXQotICAgICAgICAgICAgcyA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gcy5zcGxpdCgnOycpXQotICAgICAgICAgICAgaWYgbGVuKHMpIDwgMiBvciBzWzFdIG5vdCBpbiBNQU5EQVRPUllfTElORV9CUkVBS1M6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmICcuLicgbm90IGluIHNbMF06Ci0gICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCi0gICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKLSAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKCdMaW5lX0JyZWFrJykKKyAgICAgICAgICAgICAgICByLCBwID0gcy5zcGxpdCgiOyIpCisgICAgICAgICAgICAgICAgciA9IHIuc3RyaXAoKQorICAgICAgICAgICAgICAgIHAgPSBwLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiAiLi4iIGluIHI6CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gci5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChyLCAxNildCisgICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIHRhYmxlW2NoYXJdOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTb21lIHByb3BlcnRpZXMgKGUuZy4gRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbHkgdG8gdW5hc3NpZ25lZCBjb2RlIHBvaW50czsgaWdub3JlIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQocCkKKworICAgICAgICB3aXRoIG9wZW5fZGF0YShMSU5FX0JSRUFLLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5wYXJ0aXRpb24oJyMnKVswXQorICAgICAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KKyAgICAgICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIE1BTkRBVE9SWV9MSU5FX0JSRUFLUzoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBzWzBdOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgorICAgICAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKCdMaW5lX0JyZWFrJykKIAogICAgICAgICAjIFdlIG9ubHkgd2FudCB0aGUgcXVpY2tjaGVjayBwcm9wZXJ0aWVzCiAgICAgICAgICMgRm9ybWF0OiBORj9fUUM7IFkoZXMpL04obykvTShheWJlKQpAQCAtOTI4LDMxICsxMDY3LDMzIEBACiAgICAgICAgICMgZm9yIG9sZGVyIHZlcnNpb25zLCBhbmQgbm8gZGVsdGEgcmVjb3JkcyB3aWxsIGJlIGNyZWF0ZWQuCiAgICAgICAgIHF1aWNrY2hlY2tzID0gWzBdICogMHgxMTAwMDAKICAgICAgICAgcWNfb3JkZXIgPSAnTkZEX1FDIE5GS0RfUUMgTkZDX1FDIE5GS0NfUUMnLnNwbGl0KCkKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKERFUklWRUROT1JNQUxJWkFUSU9OX1BST1BTLCB2ZXJzaW9uKToKLSAgICAgICAgICAgIGlmICcjJyBpbiBzOgotICAgICAgICAgICAgICAgIHMgPSBzWzpzLmluZGV4KCcjJyldCi0gICAgICAgICAgICBzID0gW2kuc3RyaXAoKSBmb3IgaSBpbiBzLnNwbGl0KCc7JyldCi0gICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIHFjX29yZGVyOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBxdWlja2NoZWNrID0gJ01OJy5pbmRleChzWzJdKSArIDEgIyBNYXliZSBvciBObwotICAgICAgICAgICAgcXVpY2tjaGVja19zaGlmdCA9IHFjX29yZGVyLmluZGV4KHNbMV0pKjIKLSAgICAgICAgICAgIHF1aWNrY2hlY2sgPDw9IHF1aWNrY2hlY2tfc2hpZnQKLSAgICAgICAgICAgIGlmICcuLicgbm90IGluIHNbMF06Ci0gICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCi0gICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgbm90IChxdWlja2NoZWNrc1tjaGFyXT4+cXVpY2tjaGVja19zaGlmdCkmMwotICAgICAgICAgICAgICAgIHF1aWNrY2hlY2tzW2NoYXJdIHw9IHF1aWNrY2hlY2sKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoREVSSVZFRE5PUk1BTElaQVRJT05fUFJPUFMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIGlmICcjJyBpbiBzOgorICAgICAgICAgICAgICAgICAgICBzID0gc1s6cy5pbmRleCgnIycpXQorICAgICAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KKyAgICAgICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIHFjX29yZGVyOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHF1aWNrY2hlY2sgPSAnTU4nLmluZGV4KHNbMl0pICsgMSAjIE1heWJlIG9yIE5vCisgICAgICAgICAgICAgICAgcXVpY2tjaGVja19zaGlmdCA9IHFjX29yZGVyLmluZGV4KHNbMV0pKjIKKyAgICAgICAgICAgICAgICBxdWlja2NoZWNrIDw8PSBxdWlja2NoZWNrX3NoaWZ0CisgICAgICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCAocXVpY2tjaGVja3NbY2hhcl0+PnF1aWNrY2hlY2tfc2hpZnQpJjMKKyAgICAgICAgICAgICAgICAgICAgcXVpY2tjaGVja3NbY2hhcl0gfD0gcXVpY2tjaGVjawogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAweDExMDAwMCk6CiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXS5hcHBlbmQocXVpY2tjaGVja3NbaV0pCiAKLSAgICAgICAgemlwID0gemlwZmlsZS5aaXBGaWxlKG9wZW5fZGF0YShVTklIQU4sIHZlcnNpb24pKQotICAgICAgICBpZiB2ZXJzaW9uID09ICczLjIuMCc6Ci0gICAgICAgICAgICBkYXRhID0gemlwLm9wZW4oJ1VuaWhhbi0zLjIuMC50eHQnKS5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuX051bWVyaWNWYWx1ZXMudHh0JykucmVhZCgpCisgICAgICAgIHdpdGggb3Blbl9kYXRhKFVOSUhBTiwgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIHppcCA9IHppcGZpbGUuWmlwRmlsZShmaWxlKQorICAgICAgICAgICAgaWYgdmVyc2lvbiA9PSAnMy4yLjAnOgorICAgICAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuLTMuMi4wLnR4dCcpLnJlYWQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gemlwLm9wZW4oJ1VuaWhhbl9OdW1lcmljVmFsdWVzLnR4dCcpLnJlYWQoKQogICAgICAgICBmb3IgbGluZSBpbiBkYXRhLmRlY29kZSgidXRmLTgiKS5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCdVKycpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC05NjUsNiArMTEwNiwzNCBAQAogICAgICAgICAgICAgIyBQYXRjaCB0aGUgbnVtZXJpYyBmaWVsZAogICAgICAgICAgICAgaWYgdGFibGVbaV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdGFibGVbaV1bOF0gPSB2YWx1ZQorICAgICAgICBzYyA9IHNlbGYuc3BlY2lhbF9jYXNpbmcgPSB7fQorICAgICAgICB3aXRoIG9wZW5fZGF0YShTUEVDSUFMX0NBU0lORywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHNbOi0xXS5zcGxpdCgnIycsIDEpWzBdCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZGF0YSA9IHMuc3BsaXQoIjsgIikKKyAgICAgICAgICAgICAgICBpZiBkYXRhWzRdOgorICAgICAgICAgICAgICAgICAgICAjIFdlIGlnbm9yZSBhbGwgY29uZGl0aW9uYWxzIChzaW5jZSB0aGV5IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICAgICAjIGxhbmd1YWdlcykgZXhjZXB0IGZvciBvbmUsIHdoaWNoIGlzIGhhcmRjb2RlZC4gU2VlCisgICAgICAgICAgICAgICAgICAgICMgaGFuZGxlX2NhcGl0YWxfc2lnbWEgaW4gdW5pY29kZW9iamVjdC5jLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGMgPSBpbnQoZGF0YVswXSwgMTYpCisgICAgICAgICAgICAgICAgbG93ZXIgPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzFdLnNwbGl0KCldCisgICAgICAgICAgICAgICAgdGl0bGUgPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzJdLnNwbGl0KCldCisgICAgICAgICAgICAgICAgdXBwZXIgPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzNdLnNwbGl0KCldCisgICAgICAgICAgICAgICAgc2NbY10gPSAobG93ZXIsIHRpdGxlLCB1cHBlcikKKyAgICAgICAgY2YgPSBzZWxmLmNhc2VfZm9sZGluZyA9IHt9CisgICAgICAgIGlmIHZlcnNpb24gIT0gJzMuMi4wJzoKKyAgICAgICAgICAgIHdpdGggb3Blbl9kYXRhKENBU0VfRk9MRElORywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzID0gc1s6LTFdLnNwbGl0KCcjJywgMSlbMF0KKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBkYXRhID0gcy5zcGxpdCgiOyAiKQorICAgICAgICAgICAgICAgICAgICBpZiBkYXRhWzFdIGluICJDRiI6CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KGRhdGFbMF0sIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgY2ZbY10gPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzJdLnNwbGl0KCldCiAKICAgICBkZWYgdXNlbGF0aW4xKHNlbGYpOgogICAgICAgICAjIHJlc3RyaWN0IGNoYXJhY3RlciByYW5nZSB0byBJU08gTGF0aW4gMQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pdHRlc3RndWkvdW5pdHRlc3RndWkucHkgYi9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weQppbmRleCBiNTI2NjQ2Li4wOWEyMGUyIDEwMDY0NAotLS0gYS9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weQorKysgYi9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weQpAQCAtMjgsNyArMjgsNiBAQAogIiIiCiAKIF9fYXV0aG9yX18gPSAiU3RldmUgUHVyY2VsbCAoc3RlcGhlbl9wdXJjZWxsQHlhaG9vLmNvbSkiCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb246IDEuNyAkIlsxMTotMl0KIAogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawpkaWZmIC0tZ2l0IGEvY29uZmlnLmd1ZXNzIGIvY29uZmlnLmd1ZXNzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ2MjJhNDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcuZ3Vlc3MKQEAgLTAsMCArMSwxNTMwIEBACisjISAvYmluL3NoCisjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCisjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSwgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDEyLTAyLTEwJworCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworCisjIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4gIFBsZWFzZSBzZW5kIHBhdGNoZXMgKGNvbnRleHQKKyMgZGlmZiBmb3JtYXQpIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBhbmQgaW5jbHVkZSBhIENoYW5nZUxvZworIyBlbnRyeS4KKyMKKyMgVGhpcyBzY3JpcHQgYXR0ZW1wdHMgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUgc2ltaWxhciB0bworIyBjb25maWcuc3ViLiAgSWYgaXQgc3VjY2VlZHMsIGl0IHByaW50cyB0aGUgc3lzdGVtIG5hbWUgb24gc3Rkb3V0LCBhbmQKKyMgZXhpdHMgd2l0aCAwLiAgT3RoZXJ3aXNlLCBpdCBleGl0cyB3aXRoIDEuCisjCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0KKworT3V0cHV0IHRoZSBjb25maWd1cmF0aW9uIG5hbWUgb2YgdGhlIHN5c3RlbSBcYCRtZScgaXMgcnVuIG9uLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisKK09yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiID4mMgorICAgICAgIGV4aXQgMSA7OworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1lbnRzJGhlbHAiID4mMgorICBleGl0IDEKK2ZpCisKK3RyYXAgJ2V4aXQgMScgMSAyIDE1CisKKyMgQ0NfRk9SX0JVSUxEIC0tIGNvbXBpbGVyIHVzZWQgYnkgdGhpcyBzY3JpcHQuIE5vdGUgdGhhdCB0aGUgdXNlIG9mIGEKKyMgY29tcGlsZXIgdG8gYWlkIGluIHN5c3RlbSBkZXRlY3Rpb24gaXMgZGlzY291cmFnZWQgYXMgaXQgcmVxdWlyZXMKKyMgdGVtcG9yYXJ5IGZpbGVzIHRvIGJlIGNyZWF0ZWQgYW5kLCBhcyB5b3UgY2FuIHNlZSBiZWxvdywgaXQgaXMgYQorIyBoZWFkYWNoZSB0byBkZWFsIHdpdGggaW4gYSBwb3J0YWJsZSBmYXNoaW9uLgorCisjIEhpc3RvcmljYWxseSwgYENDX0ZPUl9CVUlMRCcgdXNlZCB0byBiZSBuYW1lZCBgSE9TVF9DQycuIFdlIHN0aWxsCisjIHVzZSBgSE9TVF9DQycgaWYgZGVmaW5lZCwgYnV0IGl0IGlzIGRlcHJlY2F0ZWQuCisKKyMgUG9ydGFibGUgdG1wIGRpcmVjdG9yeSBjcmVhdGlvbiBpbnNwaXJlZCBieSB0aGUgQXV0b2NvbmYgdGVhbS4KKworc2V0X2NjX2Zvcl9idWlsZD0nCit0cmFwICJleGl0Y29kZT1cJD87IChybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbCkgJiYgZXhpdCBcJGV4aXRjb2RlIiAwIDsKK3RyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Cis6ICR7VE1QRElSPS90bXB9IDsKKyB7IHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIiRUTVBESVIvY2dYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIgOyB9IHx8CisgeyB0ZXN0IC1uICIkUkFORE9NIiAmJiB0bXA9JFRNUERJUi9jZyQkLSRSQU5ET00gJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSA7IH0gfHwKKyB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKKyB7IGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyIDsgZXhpdCAxIDsgfSA7CitkdW1teT0kdG1wL2R1bW15IDsKK3RtcGZpbGVzPSIkZHVtbXkuYyAkZHVtbXkubyAkZHVtbXkucmVsICRkdW1teSIgOworY2FzZSAkQ0NfRk9SX0JVSUxELCRIT1NUX0NDLCRDQyBpbgorICwsKSAgICBlY2hvICJpbnQgeDsiID4gJGR1bW15LmMgOworCWZvciBjIGluIGNjIGdjYyBjODkgYzk5IDsgZG8KKwkgIGlmICgkYyAtYyAtbyAkZHVtbXkubyAkZHVtbXkuYykgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgICAgQ0NfRk9SX0JVSUxEPSIkYyI7IGJyZWFrIDsKKwkgIGZpIDsKKwlkb25lIDsKKwlpZiB0ZXN0IHgiJENDX0ZPUl9CVUlMRCIgPSB4IDsgdGhlbgorCSAgQ0NfRk9SX0JVSUxEPW5vX2NvbXBpbGVyX2ZvdW5kIDsKKwlmaQorCTs7CisgLCwqKSAgIENDX0ZPUl9CVUlMRD0kQ0MgOzsKKyAsKiwqKSAgQ0NfRk9SX0JVSUxEPSRIT1NUX0NDIDs7Citlc2FjIDsgc2V0X2NjX2Zvcl9idWlsZD0gOycKKworIyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJTRCB1bml2ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRlc3QgLWYgLy5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRIOi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkgMj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCisKKyMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBhcmUgbm90IGV4Y2x1c2l2ZS4KKworY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorICAgICo6TmV0QlNEOio6KikKKwkjIE5ldEJTRCAobmJzZCkgdGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1hdGNoIG9uZSBvcgorCSMgbW9yZSBvZiB0aGUgdHVwbGVzOiAqLSotbmV0YnNkZWxmKiwgKi0qLW5ldGJzZGFvdXQqLAorCSMgKi0qLW5ldGJzZGVjb2ZmKiBhbmQgKi0qLW5ldGJzZCouICBGb3IgdGFyZ2V0cyB0aGF0IHJlY2VudGx5CisJIyBzd2l0Y2hlZCB0byBFTEYsICotKi1uZXRic2QqIHdvdWxkIHNlbGVjdCB0aGUgb2xkCisJIyBvYmplY3QgZmlsZSBmb3JtYXQuICBUaGlzIHByb3ZpZGVzIGJvdGggZm9yd2FyZAorCSMgY29tcGF0aWJpbGl0eSBhbmQgYSBjb25zaXN0ZW50IG1lY2hhbmlzbSBmb3Igc2VsZWN0aW5nIHRoZQorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LgorCSMKKwkjIE5vdGU6IE5ldEJTRCBkb2Vzbid0IHBhcnRpY3VsYXJseSBjYXJlIGFib3V0IHRoZSB2ZW5kb3IKKwkjIHBvcnRpb24gb2YgdGhlIG5hbWUuICBXZSBhbHdheXMgc2V0IGl0IHRvICJ1bmtub3duIi4KKwlzeXNjdGw9InN5c2N0bCAtbiBody5tYWNoaW5lX2FyY2giCisJVU5BTUVfTUFDSElORV9BUkNIPWAoL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBcCisJICAgIC91c3Ivc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bilgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm1lYikgbWFjaGluZT1hcm1lYi11bmtub3duIDs7CisJICAgIGFybSopIG1hY2hpbmU9YXJtLXVua25vd24gOzsKKwkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVua25vd24gOzsKKwkgICAgc2gzZWIpIG1hY2hpbmU9c2gtdW5rbm93biA7OworCSAgICBzaDVlbCkgbWFjaGluZT1zaDVsZS11bmtub3duIDs7CisJICAgICopIG1hY2hpbmU9JHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24gOzsKKwllc2FjCisJIyBUaGUgT3BlcmF0aW5nIFN5c3RlbSBpbmNsdWRpbmcgb2JqZWN0IGZvcm1hdCwgaWYgaXQgaGFzIHN3aXRjaGVkCisJIyB0byBFTEYgcmVjZW50bHksIG9yIHdpbGwgaW4gdGhlIGZ1dHVyZS4KKwljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCisJICAgIGFybSp8aTM4NnxtNjhrfG5zMzJrfHNoMyp8c3BhcmN8dmF4KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIGVjaG8gX19FTEZfXyB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJCQl8IGdyZXAgLXEgX19FTEZfXworCQl0aGVuCisJCSAgICAjIE9uY2UgYWxsIHV0aWxpdGllcyBjYW4gYmUgRUNPRkYgKG5ldGJzZGVjb2ZmKSBvciBhLm91dCAobmV0YnNkYW91dCkuCisJCSAgICAjIFJldHVybiBuZXRic2QgZm9yIGVpdGhlci4gIEZJWD8KKwkJICAgIG9zPW5ldGJzZAorCQllbHNlCisJCSAgICBvcz1uZXRic2RlbGYKKwkJZmkKKwkJOzsKKwkgICAgKikKKwkJb3M9bmV0YnNkCisJCTs7CisJZXNhYworCSMgVGhlIE9TIHJlbGVhc2UKKwkjIERlYmlhbiBHTlUvTmV0QlNEIG1hY2hpbmVzIGhhdmUgYSBkaWZmZXJlbnQgdXNlcmxhbmQsIGFuZAorCSMgdGh1cywgbmVlZCBhIGRpc3RpbmN0IHRyaXBsZXQuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IG5lZWQKKwkjIGtlcm5lbCB2ZXJzaW9uIGluZm9ybWF0aW9uLCBzbyBpdCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhCisJIyBzdWl0YWJsZSB0YWcsIGluIHRoZSBzdHlsZSBvZiBsaW51eC1nbnUuCisJY2FzZSAiJHtVTkFNRV9WRVJTSU9OfSIgaW4KKwkgICAgRGViaWFuKikKKwkJcmVsZWFzZT0nLWdudScKKwkJOzsKKwkgICAgKikKKwkJcmVsZWFzZT1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLV9dLiovXC4vJ2AKKwkJOzsKKwllc2FjCisJIyBTaW5jZSBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU06CisJIyBjb250YWlucyByZWR1bmRhbnQgaW5mb3JtYXRpb24sIHRoZSBzaG9ydGVyIGZvcm06CisJIyBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTSBpcyB1c2VkLgorCWVjaG8gIiR7bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9IgorCWV4aXQgOzsKKyAgICAqOk9wZW5CU0Q6KjoqKQorCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKKwllY2hvICR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6ZWtrb0JTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZWtrb2JzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpTb2xpZEJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc29saWRic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1hY3BwYzpNaXJCU0Q6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpNaXJCU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYWxwaGE6T1NGMToqOiopCisJY2FzZSAkVU5BTUVfUkVMRUFTRSBpbgorCSo0LjApCisJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQzfSdgCisJCTs7CisJKjUuKikKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKKwkJOzsKKwllc2FjCisJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KKwkjIE9TRi8xIGFuZCBUcnU2NCBzeXN0ZW1zIHByb2R1Y2VkIHNpbmNlIDE5OTUuICBJIGhvcGUgdGhhdAorCSMgY292ZXJzIG1vc3Qgc3lzdGVtcyBydW5uaW5nIHRvZGF5LiAgVGhpcyBjb2RlIHBpcGVzIHRoZSBDUFUKKwkjIHR5cGVzIHRocm91Z2ggaGVhZCAtbiAxLCBzbyB3ZSBvbmx5IGRldGVjdCB0aGUgdHlwZSBvZiBDUFUgMC4KKwlBTFBIQV9DUFVfVFlQRT1gL3Vzci9zYmluL3BzcmluZm8gLXYgfCBzZWQgLW4gLWUgJ3MvXiAgVGhlIGFscGhhIFwoLipcKSBwcm9jZXNzb3IuKiQvXDEvcCcgfCBoZWFkIC1uIDFgCisJY2FzZSAiJEFMUEhBX0NQVV9UWVBFIiBpbgorCSAgICAiRVY0ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkVWNC41ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkxDQTQgKDIxMDY2LzIxMDY4KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY1ICgyMTE2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NSIgOzsKKwkgICAgIkVWNS42ICgyMTE2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjU2IiA7OworCSAgICAiRVY1LjYgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NiIgOzsKKwkgICAgIkVWNS43ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTciIDs7CisJICAgICJFVjYgKDIxMjY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2IiA7OworCSAgICAiRVY2LjcgKDIxMjY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjciIDs7CisJICAgICJFVjYuOENCICgyMTI2NEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhBTCAoMjEyNjRCKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi44Q1ggKDIxMjY0RCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOUEgKDIxMjY0L0VWNjlBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OSIgOzsKKwkgICAgIkVWNyAoMjEzNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjciIDs7CisJICAgICJFVjcuOSAoMjEzNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3OSIgOzsKKwllc2FjCisJIyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KKwkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgdmVyc2lvbi4KKwkjIEEgVG4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQgdGVzdCB2ZXJzaW9uLgorCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgorCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCSMgUmVzZXQgRVhJVCB0cmFwIGJlZm9yZSBleGl0aW5nIHRvIGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29kZS4KKwlleGl0Y29kZT0kPworCXRyYXAgJycgMAorCWV4aXQgJGV4aXRjb2RlIDs7CisgICAgQWxwaGFcICo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCisJIyBvZiB0aGUgc3BlY2lmaWMgQWxwaGEgbW9kZWw/CisJZWNobyBhbHBoYS1wYy1pbnRlcml4CisJZXhpdCA7OworICAgIDIxMDY0OldpbmRvd3NfTlQ6NTA6MykKKwllY2hvIGFscGhhLWRlYy13aW5udDMuNQorCWV4aXQgOzsKKyAgICBBbWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6KikKKwllY2hvIG02OGstdW5rbm93bi1zeXN2NAorCWV4aXQgOzsKKyAgICAqOltBYV1taWdhW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWFtaWdhb3MKKwlleGl0IDs7CisgICAgKjpbTW1db3JwaFtPb11bU3NdOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1tb3JwaG9zCisJZXhpdCA7OworICAgICo6T1MvMzkwOio6KikKKwllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCisJZXhpdCA7OworICAgICo6ei9WTToqOiopCisJZWNobyBzMzkwLWlibS16dm1vZQorCWV4aXQgOzsKKyAgICAqOk9TNDAwOio6KikKKwllY2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZXhpdCA7OworICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5bMDEyXSo6KikKKwllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGFybTpyaXNjb3M6KjoqfGFybTpSSVNDT1M6KjoqKQorCWVjaG8gYXJtLXVua25vd24tcmlzY29zCisJZXhpdCA7OworICAgIFNSMj8wMTpISS1VWC9NUFA6KjoqIHwgU1I4MDAwOkhJLVVYL01QUDoqOiopCisJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAorCWV4aXQgOzsKKyAgICBQeXJhbWlkKjpPU3gqOio6KiB8IE1JUyo6T1N4KjoqOiogfCBNSVMqOlNNUF9EQy1PU3gqOio6KikKKwkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQgTUlTIGFuZCBOSUxFLgorCWlmIHRlc3QgImAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgIiA9IGF0dCA7IHRoZW4KKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtc3lzdjMKKwllbHNlCisJCWVjaG8gcHlyYW1pZC1weXJhbWlkLWJzZAorCWZpCisJZXhpdCA7OworICAgIE5JTEUqOio6KjpkY29zeCkKKwllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0CisJZXhpdCA7OworICAgIERSUz82MDAwOnVuaXg6NC4wOjYqKQorCWVjaG8gc3BhcmMtaWNsLW54NgorCWV4aXQgOzsKKyAgICBEUlM/NjAwMDpVTklYX1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisJY2FzZSBgL3Vzci9iaW4vdW5hbWUgLXBgIGluCisJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKKwllc2FjIDs7CisgICAgczM5MHg6U3VuT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNEg6U3VuT1M6NS4qOiopCisJZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLXN1bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFVWDo1Lio6KikKKwllY2hvIGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlTVU5fQVJDSD0iaTM4NiIKKwkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBpcyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KKwkjIE5vdGUgdGhhdCB0aGUgU3VuIGNjIGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCisJIyBUaGlzIHRlc3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgorCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCSAgICBpZiAoZWNobyAnI2lmZGVmIF9fYW1kNjQnOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQlncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCSAgICB0aGVuCisJCVNVTl9BUkNIPSJ4ODZfNjQiCisJICAgIGZpCisJZmkKKwllY2hvICR7U1VOX0FSQ0h9LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjYqOiopCisJIyBBY2NvcmRpbmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUKKwkjIFN1bk9TNi4gIEhhcmQgdG8gZ3Vlc3MgZXhhY3RseSB3aGF0IFN1bk9TNiB3aWxsIGJlIGxpa2UsIGJ1dAorCSMgaXQncyBsaWtlbHkgdG8gYmUgbW9yZSBsaWtlIFNvbGFyaXMgdGhhbiBTdW5PUzQuCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6KjoqKQorCWNhc2UgImAvdXNyL2Jpbi9hcmNoIC1rYCIgaW4KKwkgICAgU2VyaWVzKnxTNCopCisJCVVOQU1FX1JFTEVBU0U9YHVuYW1lIC12YAorCQk7OworCWVzYWMKKwkjIEphcGFuZXNlIExhbmd1YWdlIHZlcnNpb25zIGhhdmUgYSB2ZXJzaW9uIG51bWJlciBsaWtlIGA0LjEuMy1KTCcuCisJZWNobyBzcGFyYy1zdW4tc3Vub3NgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vJ2AKKwlleGl0IDs7CisgICAgc3VuMyo6U3VuT1M6KjoqKQorCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHN1bio6Kjo0LjJCU0Q6KikKKwlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9ldGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAorCXRlc3QgIngke1VOQU1FX1JFTEVBU0V9IiA9ICJ4IiAmJiBVTkFNRV9SRUxFQVNFPTMKKwljYXNlICJgL2Jpbi9hcmNoYCIgaW4KKwkgICAgc3VuMykKKwkJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwkgICAgc3VuNCkKKwkJZWNobyBzcGFyYy1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJZXNhYworCWV4aXQgOzsKKyAgICBhdXNocDpTdW5PUzoqOiopCisJZWNobyBzcGFyYy1hdXNwZXgtc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICMgVGhlIHNpdHVhdGlvbiBmb3IgTWlOVCBpcyBhIGxpdHRsZSBjb25mdXNpbmcuICBUaGUgbWFjaGluZSBuYW1lCisgICAgIyBjYW4gYmUgdmlydHVhbGx5IGV2ZXJ5dGhpbmcgKGV2ZXJ5dGhpbmcgd2hpY2ggaXMgbm90CisgICAgIyAiYXRhcmlzdCIgb3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3NvcgorICAgICMgPiBtNjgwMDApLiAgVGhlIHN5c3RlbSBuYW1lIHJhbmdlcyBmcm9tICJNaU5UIiBvdmVyICJGcmVlTWlOVCIKKyAgICAjIHRvIHRoZSBsb3dlcmNhc2UgdmVyc2lvbiAibWludCIgKG9yICJmcmVlbWludCIpLiAgRmluYWxseQorICAgICMgdGhlIHN5c3RlbSBuYW1lICJUT1MiIGRlbm90ZXMgYSBzeXN0ZW0gd2hpY2ggaXMgYWN0dWFsbHkgbm90CisgICAgIyBNaU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBUT1MsIHNvIHRoaXMgc2hvdWxkCisgICAgIyBiZSBubyBwcm9ibGVtLgorICAgIGF0YXJpc3RbZV06Kk1pTlQ6KjoqIHwgYXRhcmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhdGFyaSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtaWxhbio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiopCisJZWNobyBtNjhrLW1pbGFuLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKKwllY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjoqTWlOVDoqOiogfCAqOiptaW50Oio6KiB8ICo6KlRPUzoqOiopCisJZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbTY4azptYWNodGVuOio6KikKKwllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcG93ZXJwYzptYWNodGVuOio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUklTQyo6TWFjaDoqOiopCisJZWNobyBtaXBzLWRlYy1tYWNoX2JzZDQuMworCWV4aXQgOzsKKyAgICBSSVNDKjpVTFRSSVg6KjoqKQorCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBWQVgqOlVMVFJJWCo6KjoqKQorCWVjaG8gdmF4LWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIDIwMjA6Q0xJWDoqOiogfCAyNDMwOkNMSVg6KjoqKQorCWVjaG8gY2xpcHBlci1pbnRlcmdyYXBoLWNsaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1pcHM6KjoqOlVNSVBTIHwgbWlwczoqOio6UklTQ29zKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworI2lmZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8qIGZvciBwcmludGYoKSBwcm90b3R5cGUgKi8KKwlpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworI2Vsc2UKKwlpbnQgbWFpbiAoYXJnYywgYXJndikgaW50IGFyZ2M7IGNoYXIgKmFyZ3ZbXTsgeworI2VuZGlmCisJI2lmIGRlZmluZWQgKGhvc3RfbWlwcykgJiYgZGVmaW5lZCAoTUlQU0VCKQorCSNpZiBkZWZpbmVkIChTWVNUWVBFX1NZU1YpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzeXN2XG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1ZSNCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N2cjRcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9CU0Q0MykgfHwgZGVmaW5lZChTWVNUWVBFX0JTRCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc2JzZFxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNlbmRpZgorCSAgZXhpdCAoLTEpOworCX0KK0VPRgorCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmCisJICBkdW1teWFyZz1gZWNobyAiJHtVTkFNRV9SRUxFQVNFfSIgfCBzZWQgLW4gJ3MvXChbMC05XSpcKS4qL1wxL3AnYCAmJgorCSAgU1lTVEVNX05BTUU9YCRkdW1teSAkZHVtbXlhcmdgICYmCisJICAgIHsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCWVjaG8gbWlwcy1taXBzLXJpc2NvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTW90b3JvbGE6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1tb3Rvcm9sYS1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6KjoqOlBvd2VyTUFYX09TIHwgU3luZXJneTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOlBvd2VyX1VOSVg6KjoqKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJ1bml4CisJZXhpdCA7OworICAgIG04OGs6Q1gvVVg6Nyo6KikKKwllY2hvIG04OGstaGFycmlzLWN4dXg3CisJZXhpdCA7OworICAgIG04OGs6Kjo0KjpSNCopCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3Y0CisJZXhpdCA7OworICAgIG04OGs6KjozKjpSMyopCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIEFWaWlPTjpkZ3V4Oio6KikKKwkjIERHL1VYIHJldHVybnMgQVZpaU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcworCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJaWYgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODEwMCBdIHx8IFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMTAgXQorCXRoZW4KKwkgICAgaWYgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSBtODhrZGd1eGVsZnggXSB8fCBcCisJICAgICAgIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0geCBdCisJICAgIHRoZW4KKwkJZWNobyBtODhrLWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CisJICAgIGVsc2UKKwkJZWNobyBtODhrLWRnLWRndXhiY3Mke1VOQU1FX1JFTEVBU0V9CisJICAgIGZpCisJZWxzZQorCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWV4aXQgOzsKKyAgICBNODgqOkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorCWVjaG8gbTg4ay1kb2xwaGluLXN5c3YzCisJZXhpdCA7OworICAgIE04OCo6KjpSMyo6KikKKwkjIERlbHRhIDg4ayBzeXN0ZW0gcnVubmluZyBTVlIzCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorCWVjaG8gbTg4ay10ZWt0cm9uaXgtc3lzdjMKKwlleGl0IDs7CisgICAgVGVrNDNbMC05XVswLTldOlVUZWs6KjoqKSAjIFRla3Ryb25peCA0MzAwIHN5c3RlbSBydW5uaW5nIFVUZWsgKEJTRCkKKwllY2hvIG02OGstdGVrdHJvbml4LWJzZAorCWV4aXQgOzsKKyAgICAqOklSSVgqOio6KikKKwllY2hvIG1pcHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCisJZXhpdCA7OworICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KKwllY2hvIHJvbXAtaWJtLWFpeCAgICAgIyB1bmFtZSAtbSBnaXZlcyBhbiA4IGhleC1jb2RlIENQVSBpZAorCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNobyAiJ2B1bmFtZSAtc2AnIiBnaXZlcyAnQUlYICcKKyAgICBpKjg2OkFJWDoqOiopCisJZWNobyBpMzg2LWlibS1haXgKKwlleGl0IDs7CisgICAgaWE2NDpBSVg6KjoqKQorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAqOkFJWDoyOjMpCisJaWYgZ3JlcCBib3MzMjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJCSNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CisKKwkJbWFpbigpCisJCQl7CisJCQlpZiAoIV9fcG93ZXJfcGMoKSkKKwkJCQlleGl0KDEpOworCQkJcHV0cygicG93ZXJwYy1pYm0tYWl4My4yLjUiKTsKKwkJCWV4aXQoMCk7CisJCQl9CitFT0YKKwkJaWYgJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKKwkJdGhlbgorCQkJZWNobyAiJFNZU1RFTV9OQU1FIgorCQllbHNlCisJCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjUKKwkJZmkKKwllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjQKKwllbHNlCisJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKKwlmaQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOls0NTY3XSkKKwlJQk1fQ1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNlZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKKwlpZiAvdXNyL3NiaW4vbHNhdHRyIC1FbCAke0lCTV9DUFVfSUR9IHwgZ3JlcCAnIFBPV0VSJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJSUJNX0FSQ0g9cnM2MDAwCisJZWxzZQorCQlJQk1fQVJDSD1wb3dlcnBjCisJZmkKKwlpZiBbIC14IC91c3IvYmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKKwllbHNlCisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJZmkKKwllY2hvICR7SUJNX0FSQ0h9LWlibS1haXgke0lCTV9SRVZ9CisJZXhpdCA7OworICAgICo6QUlYOio6KikKKwllY2hvIHJzNjAwMC1pYm0tYWl4CisJZXhpdCA7OworICAgIGlibXJ0OjQuNEJTRDoqfHJvbXAtaWJtOkJTRDoqKQorCWVjaG8gcm9tcC1pYm0tYnNkNC40CisJZXhpdCA7OworICAgIGlibXJ0OipCU0Q6Knxyb21wLWlibTpCU0Q6KikgICAgICAgICAgICAjIGNvdmVycyBSVC9QQyBCU0QgYW5kCisJZWNobyByb21wLWlibS1ic2Qke1VOQU1FX1JFTEVBU0V9ICAgIyA0LjMgd2l0aCB1bmFtZSBhZGRlZCB0bworCWV4aXQgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCisgICAgKjpCT1NYOio6KikKKwllY2hvIHJzNjAwMC1idWxsLWJvc3gKKwlleGl0IDs7CisgICAgRFBYLzI/MDA6Qi5PLlMuOio6KikKKwllY2hvIG02OGstYnVsbC1zeXN2MworCWV4aXQgOzsKKyAgICA5MDAwL1szNF0/Pzo0LjNic2Q6MS4qOiopCisJZWNobyBtNjhrLWhwLWJzZAorCWV4aXQgOzsKKyAgICBocDMwMDo0LjRCU0Q6KjoqIHwgOTAwMC9bMzRdPz86NC4zYnNkOjIuKjoqKQorCWVjaG8gbTY4ay1ocC1ic2Q0LjQKKwlleGl0IDs7CisgICAgOTAwMC9bMzQ2NzhdPz86SFAtVVg6KjoqKQorCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLlswQl0qLy8nYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCisJICAgIDkwMDAvMzE/ICkgICAgICAgICAgICBIUF9BUkNIPW02ODAwMCA7OworCSAgICA5MDAwL1szNF0/PyApICAgICAgICAgSFBfQVJDSD1tNjhrIDs7CisJICAgIDkwMDAvWzY3OF1bMC05XVswLTldKQorCQlpZiBbIC14IC91c3IvYmluL2dldGNvbmYgXTsgdGhlbgorCQkgICAgc2NfY3B1X3ZlcnNpb249YC91c3IvYmluL2dldGNvbmYgU0NfQ1BVX1ZFUlNJT04gMj4vZGV2L251bGxgCisJCSAgICBzY19rZXJuZWxfYml0cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKKwkJICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorCQkgICAgICA1MjMpIEhQX0FSQ0g9ImhwcGExLjAiIDs7ICMgQ1BVX1BBX1JJU0MxXzAKKwkJICAgICAgNTI4KSBIUF9BUkNIPSJocHBhMS4xIiA7OyAjIENQVV9QQV9SSVNDMV8xCisJCSAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorCQkJY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisJCQkgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKKwkJCSAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCisJCQllc2FjIDs7CisJCSAgICBlc2FjCisJCWZpCisJCWlmIFsgIiR7SFBfQVJDSH0iID0gIiIgXTsgdGhlbgorCQkgICAgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQkgICAgc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCisKKwkJI2RlZmluZSBfSFBVWF9TT1VSQ0UKKwkJI2luY2x1ZGUgPHN0ZGxpYi5oPgorCQkjaW5jbHVkZSA8dW5pc3RkLmg+CisKKwkJaW50IG1haW4gKCkKKwkJeworCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCSAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7CisJCSNlbmRpZgorCQkgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKworCQkgICAgc3dpdGNoIChjcHUpCisJCQl7CisJCQljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzJfMDoKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkJICAgIHN3aXRjaCAoYml0cykKKwkJCQl7CisJCQkJY2FzZSA2NDogcHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOworCQkJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIpOyBicmVhazsKKwkJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJCQl9IGJyZWFrOworCQkjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLworCQkJICAgIHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkjZW5kaWYKKwkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJfQorCQkgICAgZXhpdCAoMCk7CisJCX0KK0VPRgorCQkgICAgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwpICYmIEhQX0FSQ0g9YCRkdW1teWAKKwkJICAgIHRlc3QgLXogIiRIUF9BUkNIIiAmJiBIUF9BUkNIPWhwcGEKKwkJZmkgOzsKKwllc2FjCisJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBdCisJdGhlbgorCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisKKwkgICAgIyBocHBhMi4wdy1ocC1ocHV4KiBoYXMgYSA2NC1iaXQga2VybmVsIGFuZCBhIGNvbXBpbGVyIGdlbmVyYXRpbmcKKwkgICAgIyAzMi1iaXQgY29kZS4gIGhwcGE2NC1ocC1ocHV4KiBoYXMgdGhlIHNhbWUga2VybmVsIGFuZCBhIGNvbXBpbGVyCisJICAgICMgZ2VuZXJhdGluZyA2NC1iaXQgY29kZS4gIEdOVSBhbmQgSFAgdXNlIGRpZmZlcmVudCBub21lbmNsYXR1cmU6CisJICAgICMKKwkgICAgIyAkIENDX0ZPUl9CVUlMRD1jYyAuL2NvbmZpZy5ndWVzcworCSAgICAjID0+IGhwcGEyLjB3LWhwLWhwdXgxMS4yMworCSAgICAjICQgQ0NfRk9SX0JVSUxEPSJjYyArREEyLjB3IiAuL2NvbmZpZy5ndWVzcworCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKKworCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8CisJCWdyZXAgLXEgX19MUDY0X18KKwkgICAgdGhlbgorCQlIUF9BUkNIPSJocHBhMi4wdyIKKwkgICAgZWxzZQorCQlIUF9BUkNIPSJocHBhNjQiCisJICAgIGZpCisJZmkKKwllY2hvICR7SFBfQVJDSH0taHAtaHB1eCR7SFBVWF9SRVZ9CisJZXhpdCA7OworICAgIGlhNjQ6SFAtVVg6KjoqKQorCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLlswQl0qLy8nYAorCWVjaG8gaWE2NC1ocC1ocHV4JHtIUFVYX1JFVn0KKwlleGl0IDs7CisgICAgMzA1MCo6SEktVVg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpbmNsdWRlIDx1bmlzdGQuaD4KKwlpbnQKKwltYWluICgpCisJeworCSAgbG9uZyBjcHUgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCSAgLyogVGhlIG9yZGVyIG1hdHRlcnMsIGJlY2F1c2UgQ1BVX0lTX0hQX01DNjhLIGVycm9uZW91c2x5IHJldHVybnMKKwkgICAgIHRydWUgZm9yIENQVV9QQV9SSVNDMV8wLiAgQ1BVX0lTX1BBX1JJU0MgcmV0dXJucyBjb3JyZWN0CisJICAgICByZXN1bHRzLCBob3dldmVyLiAgKi8KKwkgIGlmIChDUFVfSVNfUEFfUklTQyAoY3B1KSkKKwkgICAgeworCSAgICAgIHN3aXRjaCAoY3B1KQorCQl7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMl8wOiBwdXRzICgiaHBwYTIuMC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgZGVmYXVsdDogcHV0cyAoImhwcGEtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQl9CisJICAgIH0KKwkgIGVsc2UgaWYgKENQVV9JU19IUF9NQzY4SyAoY3B1KSkKKwkgICAgcHV0cyAoIm02OGstaGl0YWNoaS1oaXV4d2UyIik7CisJICBlbHNlIHB1dHMgKCJ1bmtub3duLWhpdGFjaGktaGl1eHdlMiIpOworCSAgZXhpdCAoMCk7CisJfQorRU9GCisJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAgJiYKKwkJeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisJZWNobyB1bmtub3duLWhpdGFjaGktaGl1eHdlMgorCWV4aXQgOzsKKyAgICA5MDAwLzc/Pzo0LjNic2Q6KjoqIHwgOTAwMC84P1s3OV06NC4zYnNkOio6KiApCisJZWNobyBocHBhMS4xLWhwLWJzZAorCWV4aXQgOzsKKyAgICA5MDAwLzg/Pzo0LjNic2Q6KjoqKQorCWVjaG8gaHBwYTEuMC1ocC1ic2QKKwlleGl0IDs7CisgICAgKjk/Pyo6TVBFL2lYOio6KiB8ICozMDAwKjpNUEUvaVg6KjoqKQorCWVjaG8gaHBwYTEuMC1ocC1tcGVpeAorCWV4aXQgOzsKKyAgICBocDc/PzpPU0YxOio6KiB8IGhwOD9bNzldOk9TRjE6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtb3NmCisJZXhpdCA7OworICAgIGhwOD8/Ok9TRjE6KjoqKQorCWVjaG8gaHBwYTEuMC1ocC1vc2YKKwlleGl0IDs7CisgICAgaSo4NjpPU0YxOio6KikKKwlpZiBbIC14IC91c3Ivc2Jpbi9zeXN2ZXJzaW9uIF0gOyB0aGVuCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjFtaworCWVsc2UKKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3NmMQorCWZpCisJZXhpdCA7OworICAgIHBhcmlzYyo6TGl0ZXMqOio6KikKKwllY2hvIGhwcGExLjEtaHAtbGl0ZXMKKwlleGl0IDs7CisgICAgQzEqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMSo6KikKKwllY2hvIGMxLWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQzIqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIEMzNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzNCo6KikKKwllY2hvIGMzNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIEMzOCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzOCo6KikKKwllY2hvIGMzOC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIEM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCisJZWNobyBjNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIENSQVkqWS1NUDoqOio6KikKKwllY2hvIHltcC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKltBLVpdOTA6KjoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSBcCisJfCBzZWQgLWUgJ3MvQ1JBWS4qXChbQS1aXTkwXCkvXDEvJyBcCisJICAgICAgLWUgeS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8gXAorCSAgICAgIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUUzoqOio6KikKKwllY2hvIHQ5MC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKlQzRToqOio6KikKKwllY2hvIGFscGhhZXY1LWNyYXktdW5pY29zbWske1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpTVjE6KjoqOiopCisJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgKjpVTklDT1MvbXA6KjoqKQorCWVjaG8gY3JheW52LWNyYXktdW5pY29zbXAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1fVjoqOiopCisJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKKyAgICA1MDAwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKKyAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgc3BhcmMqOkJTRC9PUzoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6QlNEL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkZyZWVCU0Q6KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJY2FzZSAke1VOQU1FX1BST0NFU1NPUn0gaW4KKwkgICAgYW1kNjQpCisJCWVjaG8geDg2XzY0LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwkgICAgKikKKwkJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OworCWVzYWMKKwlleGl0IDs7CisgICAgaSo6Q1lHV0lOKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1jeWd3aW4KKwlleGl0IDs7CisgICAgKjpNSU5HVyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluZ3czMgorCWV4aXQgOzsKKyAgICBpKjpNU1lTKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc3lzCisJZXhpdCA7OworICAgIGkqOndpbmRvd3MzMio6KikKKwkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOlBXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCisJZXhpdCA7OworICAgICo6SW50ZXJpeCo6KikKKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKwkgICAgeDg2KQorCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCSAgICBhdXRoZW50aWNhbWQgfCBnZW51aW5laW50ZWwgfCBFTTY0VCkKKwkJZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJICAgIElBNjQpCisJCWVjaG8gaWE2NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwllc2FjIDs7CisgICAgWzM0NV04NjpXaW5kb3dzXzk1OiogfCBbMzQ1XTg2OldpbmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoqKQorCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCisJZXhpdCA7OworICAgIDg2NjQ6V2luZG93c19OVDoqKQorCWVjaG8geDg2XzY0LXBjLW1rcworCWV4aXQgOzsKKyAgICBpKjpXaW5kb3dzX05UKjoqIHwgUGVudGl1bSo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBhbHNvIGNvbmZsaWN0cyB3aXRoIHByZS0yLjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQgd2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkIG9mIGkzODY/CisJZWNobyBpNTg2LXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgaSo6VVdJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtdXdpbgorCWV4aXQgOzsKKyAgICBhbWQ2NDpDWUdXSU4qOio6KiB8IHg4Nl82NDpDWUdXSU4qOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwKjpDWUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAgcHJlcCo6U3VuT1M6NS4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICAqOkdOVToqOiopCisJIyB0aGUgR05VIHN5c3RlbQorCWVjaG8gYGVjaG8gJHtVTkFNRV9NQUNISU5FfXxzZWQgLWUgJ3MsWy0vXS4qJCwsJ2AtdW5rbm93bi1nbnVgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncywvLiokLCwnYAorCWV4aXQgOzsKKyAgICAqOkdOVS8qOio6KikKKwkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLWdudQorCWV4aXQgOzsKKyAgICBpKjg2Ok1pbml4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluaXgKKwlleGl0IDs7CisgICAgYWFyY2g2NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGFhcmNoNjRfYmU6TGludXg6KjoqKQorCVVOQU1FX01BQ0hJTkU9YWFyY2g2NF9iZQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBhbHBoYTpMaW51eDoqOiopCisJY2FzZSBgc2VkIC1uICcvXmNwdSBtb2RlbC9zL14uKjogXCguKlwpL1wxL3AnIDwgL3Byb2MvY3B1aW5mb2AgaW4KKwkgIEVWNSkgICBVTkFNRV9NQUNISU5FPWFscGhhZXY1IDs7CisJICBFVjU2KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NTYgOzsKKwkgIFBDQTU2KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIFBDQTU3KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIEVWNikgICBVTkFNRV9NQUNISU5FPWFscGhhZXY2IDs7CisJICBFVjY3KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKKwkgIEVWNjgqKSBVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OworCWVzYWMKKwlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KKwlleGl0IDs7CisgICAgYXJtKjpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCWlmIGVjaG8gX19BUk1fRUFCSV9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkgICAgfCBncmVwIC1xIF9fQVJNX0VBQklfXworCXRoZW4KKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWxzZQorCSAgICBpZiBlY2hvIF9fQVJNX1BDU19WRlAgfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQl8IGdyZXAgLXEgX19BUk1fUENTX1ZGUAorCSAgICB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKKwkgICAgZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpaGYKKwkgICAgZmkKKwlmaQorCWV4aXQgOzsKKyAgICBhdnIzMio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBjcmlzOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgY3Jpc3YzMjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtZ251CisJZXhpdCA7OworICAgIGZydjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGhleGFnb246TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwlMSUJDPWdudQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpZmRlZiBfX2RpZXRsaWJjX18KKwlMSUJDPWRpZXRsaWJjCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkxJQkMnYAorCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfSIKKwlleGl0IDs7CisgICAgaWE2NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIG0zMnIqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTY4KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIG1pcHM6TGludXg6KjoqIHwgbWlwczY0OkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjdW5kZWYgQ1BVCisJI3VuZGVmICR7VU5BTUVfTUFDSElORX0KKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfWVsCisJI2lmIGRlZmluZWQoX19NSVBTRUxfXykgfHwgZGVmaW5lZChfX01JUFNFTCkgfHwgZGVmaW5lZChfTUlQU0VMKSB8fCBkZWZpbmVkKE1JUFNFTCkKKwlDUFU9JHtVTkFNRV9NQUNISU5FfWVsCisJI2Vsc2UKKwkjaWYgZGVmaW5lZChfX01JUFNFQl9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoTUlQU0VCKQorCUNQVT0ke1VOQU1FX01BQ0hJTkV9CisJI2Vsc2UKKwlDUFU9CisJI2VuZGlmCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkNQVSdgCisJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KKwk7OworICAgIG9yMzI6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYWRyZTpMaW51eDoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYXJpc2M2NDpMaW51eDoqOiogfCBocHBhNjQ6TGludXg6KjoqKQorCWVjaG8gaHBwYTY0LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKKwkjIExvb2sgZm9yIENQVSBsZXZlbAorCWNhc2UgYGdyZXAgJ15jcHVbXmEtel0qOicgL3Byb2MvY3B1aW5mbyAyPi9kZXYvbnVsbCB8IGN1dCAtZCcgJyAtZjJgIGluCisJICBQQTcqKSBlY2hvIGhwcGExLjEtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxpbnV4LWdudSA7OworCSAgKikgICAgZWNobyBocHBhLXVua25vd24tbGludXgtZ251IDs7CisJZXNhYworCWV4aXQgOzsKKyAgICBwcGM2NDpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcHBjOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAorCWV4aXQgOzsKKyAgICBzaDY0KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHNoKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB0aWxlKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHZheDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgeDg2XzY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgeHRlbnNhKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCisJIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KKwkjIGVhcmxpZXIgdmVyc2lvbnMgYXJlIG1lc3NlZCB1cCBhbmQgcHV0IHRoZSBub2RlbmFtZSBpbiBib3RoCisJIyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KKwllY2hvIGkzODYtc2VxdWVudC1zeXN2NAorCWV4aXQgOzsKKyAgICBpKjg2OlVOSVhfU1Y6NC4yTVA6Mi4qKQorCSMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KKwkjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCisJIyBJIGFtIG5vdCBwb3NpdGl2ZSB0aGF0IG90aGVyIFNWUjQgc3lzdGVtcyB3b24ndCBtYXRjaCB0aGlzLAorCSMgSSBqdXN0IGhhdmUgdG8gaG9wZS4gIC0tIHJtcy4KKwkjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgOzsKKyAgICBpKjg2Ok9TLzI6KjoqKQorCSMgSWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmQgYHVuYW1lJywgdGhlbiBFTVggVW5peCBjb21wYXRpYmlsaXR5CisJIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW9zMi1lbXgKKwlleGl0IDs7CisgICAgaSo4NjpYVFMtMzAwOio6U1RPUCkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zdG9wCisJZXhpdCA7OworICAgIGkqODY6YXRoZW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hdGhlb3MKKwlleGl0IDs7CisgICAgaSo4NjpzeWxsYWJsZToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5bGxhYmxlCisJZXhpdCA7OworICAgIGkqODY6THlueE9TOjIuKjoqIHwgaSo4NjpMeW54T1M6My5bMDFdKjoqIHwgaSo4NjpMeW54T1M6NC5bMDJdKjoqKQorCWVjaG8gaTM4Ni11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaSo4NjoqRE9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbXNkb3NkamdwcAorCWV4aXQgOzsKKyAgICBpKjg2Oio6NC4qOiogfCBpKjg2OlNZU1RFTV9WOjQuKjoqKQorCVVOQU1FX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkICdzL1wvTVAkLy8nYAorCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5jbHVkZS9saW5rLmggPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5pdmVsLXN5c3Yke1VOQU1FX1JFTH0KKwllbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2JHtVTkFNRV9SRUx9CisJZmkKKwlleGl0IDs7CisgICAgaSo4NjoqOjU6WzY3OF0qKQorCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCisJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OworCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKKwkgICAgKlBlbnQqfCpDZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0ke1VOQU1FX1NZU1RFTX0ke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6KjozLjI6KikKKwlpZiB0ZXN0IC1mIC91c3Ivb3B0aW9ucy9jYi5uYW1lOyB0aGVuCisJCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVyc2lvbiAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWlzYyRVTkFNRV9SRUwKKwllbGlmIC9iaW4vdW5hbWUgLVggMj4vZGV2L251bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfUkVMPWAoL2Jpbi91bmFtZSAtWHxncmVwIFJlbGVhc2V8c2VkIC1lICdzLy4qPSAvLycpYAorCQkoL2Jpbi91bmFtZSAtWHxncmVwIGk4MDQ4NiA+L2Rldi9udWxsKSAmJiBVTkFNRV9NQUNISU5FPWk0ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnRpdW0nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTU4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudCAqSUknID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudGl1bSBQcm8nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2NvJFVOQU1FX1JFTAorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3YzMgorCWZpCisJZXhpdCA7OworICAgIHBjOio6KjoqKQorCSMgTGVmdCBoZXJlIGZvciBjb21wYXRpYmlsaXR5OgorCSMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0CisJIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIE5vdGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcuc3ViCisJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3VyeSB3aWxsIGRlY2lkZSB0aGF0CisJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCisJZWNobyBpNTg2LXBjLW1zZG9zZGpncHAKKwlleGl0IDs7CisgICAgSW50ZWw6TWFjaDozKjoqKQorCWVjaG8gaTM4Ni1wYy1tYWNoMworCWV4aXQgOzsKKyAgICBwYXJhZ29uOio6KjoqKQorCWVjaG8gaTg2MC1pbnRlbC1vc2YxCisJZXhpdCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKwlpZiBncmVwIFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVBU0V9ICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwlleGl0IDs7CisgICAgbWluaSo6Q1RJWDpTWVMqNToqKQorCSMgIm1pbmlmcmFtZSIKKwllY2hvIG02ODAxMC1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgbWM2OGs6VU5JWDpTWVNURU01OjMuNTFtKQorCWVjaG8gbTY4ay1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgTTY4MD8wOkQtTklYOjUuMzoqKQorCWVjaG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDs7CisgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKKwl0ZXN0IC1yIC9zeXNWNjggJiYgeyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5c3YnOyBleGl0OyB9IDs7CisgICAgM1szNDVdPz86Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6My4wIHwgM1szNF0/PywqOio6NC4wOjMuMCB8IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6NC4wOjMuMCB8IDQ4NTA6Kjo0LjA6My4wIHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDozLjAgfCBTSEcyOio6NC4wOjMuMCB8IFM3NTAxKjoqOjQuMDozLjApCisJT1NfUkVMPScnCisJdGVzdCAtciAvZXRjLy5yZWxpZCBcCisJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7CisgICAgTkNSKjoqOjQuMjoqIHwgTVBSQVMqOio6NC4yOiopCisJT1NfUkVMPScuMycKKwl0ZXN0IC1yIC9ldGMvLnJlbGlkIFwKKwkgICAgJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwKKwkgICAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIHB0ZXJvbiA+L2Rldi9udWxsIFwKKwkgICAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKKyAgICBtNjgqOkx5bnhPUzoyLio6KiB8IG02OCo6THlueE9TOjMuMCo6KikKKwllY2hvIG02OGstdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1jNjgwMzA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKwllY2hvIG02OGstYXRhcmktc3lzdjQKKwlleGl0IDs7CisgICAgVFNVTkFNSTpMeW54T1M6Mi4qOiopCisJZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcnM2MDAwOkx5bnhPUzoyLio6KikKKwllY2hvIHJzNjAwMC11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXJQQzpMeW54T1M6Mi4qOiogfCBQb3dlclBDOkx5bnhPUzozLlswMV0qOiogfCBQb3dlclBDOkx5bnhPUzo0LlswMl0qOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTTVtCRV1TOlVOSVhfU1Y6KjoqKQorCWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmktc3lzdjQKKwlleGl0IDs7CisgICAgUk0qOlNJTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmktc3lzdjQKKwlleGl0IDs7CisgICAgKjpTSU5JWC0qOio6KikKKwlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAorCQllY2hvICR7VU5BTUVfTUFDSElORX0tc25pLXN5c3Y0CisJZWxzZQorCQllY2hvIG5zMzJrLXNuaS1zeXN2CisJZmkKKwlleGl0IDs7CisgICAgUEVOVElVTToqOjQuMCo6KikJIyBVbmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKKwkJCSMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKwllY2hvIGk1ODYtdW5pc3lzLXN5c3Y0CisJZXhpdCA7OworICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQorCSMgRnJvbSBHZXJhbGQgSGV3ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KKwkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KKwllY2hvIGhwcGExLjEtc3RyYXR1cy1zeXN2NAorCWV4aXQgOzsKKyAgICAqOio6KjpGVFgqKQorCSMgRnJvbSBzZWFuZkBzd2RjLnN0cmF0dXMuY29tLgorCWVjaG8gaTg2MC1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgIGkqODY6Vk9TOio6KikKKwkjIEZyb20gUGF1bC5HcmVlbkBzdHJhdHVzLmNvbS4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tc3RyYXR1cy12b3MKKwlleGl0IDs7CisgICAgKjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICBtYzY4KjpBL1VYOio6KikKKwllY2hvIG02OGstYXBwbGUtYXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBuZXdzKjpORVdTLU9TOjYqOiopCisJZWNobyBtaXBzLXNvbnktbmV3c29zNgorCWV4aXQgOzsKKyAgICBSWzM0XTAwMDoqU3lzdGVtX1YqOio6KiB8IFI0MDAwOlVOSVhfU1lTVjoqOiogfCBSKjAwMDpVTklYX1NWOio6KikKKwlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KKwkJZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWVsc2UKKwkJZWNobyBtaXBzLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWV4aXQgOzsKKyAgICBCZUJveDpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gaGFyZHdhcmUgbWFkZSBieSBCZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWJlLWJlb3MKKwlleGl0IDs7CisgICAgQmVNYWM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIE1hYyBvciBNYWMgY2xvbmUsIFBQQyBvbmx5LgorCWVjaG8gcG93ZXJwYy1hcHBsZS1iZW9zCisJZXhpdCA7OworICAgIEJlUEM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWJlb3MKKwlleGl0IDs7CisgICAgQmVQQzpIYWlrdToqOiopCSMgSGFpa3UgcnVubmluZyBvbiBJbnRlbCBQQyBjb21wYXRpYmxlLgorCWVjaG8gaTU4Ni1wYy1oYWlrdQorCWV4aXQgOzsKKyAgICBTWC00OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNTpTVVBFUi1VWDoqOiopCisJZWNobyBzeDUtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTY6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g2LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC03OlNVUEVSLVVYOio6KikKKwllY2hvIHN4Ny1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtODpTVVBFUi1VWDoqOiopCisJZWNobyBzeDgtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLThSOlNVUEVSLVVYOio6KikKKwllY2hvIHN4OHItbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFBvd2VyKjpSaGFwc29keToqOiopCisJZWNobyBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlJoYXBzb2R5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RGFyd2luOio6KikKKwlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYCB8fCBVTkFNRV9QUk9DRVNTT1I9dW5rbm93bgorCWNhc2UgJFVOQU1FX1BST0NFU1NPUiBpbgorCSAgICBpMzg2KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCQkgIGlmIChlY2hvICcjaWZkZWYgX19MUDY0X18nOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkgICAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQkgICAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCQkgIHRoZW4KKwkJICAgICAgVU5BTUVfUFJPQ0VTU09SPSJ4ODZfNjQiCisJCSAgZmkKKwkJZmkgOzsKKwkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOnByb2NudG8qOio6KiB8ICo6UU5YOlswMTIzNDU2Nzg5XSo6KikKKwlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYAorCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gIng4NiI7IHRoZW4KKwkJVU5BTUVfUFJPQ0VTU09SPWkzODYKKwkJVU5BTUVfTUFDSElORT1wYworCWZpCisJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tJHtVTkFNRV9NQUNISU5FfS1udG8tcW54JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlFOWDoqOjQqKQorCWVjaG8gaTM4Ni1wYy1xbngKKwlleGl0IDs7CisgICAgTkVPLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbmVvLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE5TRS0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBOU1ItPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuc3ItdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpOb25TdG9wLVVYOio6KikKKwllY2hvIG1pcHMtY29tcGFxLW5vbnN0b3B1eAorCWV4aXQgOzsKKyAgICBCUzIwMDA6UE9TSVgqOio6KikKKwllY2hvIGJzMjAwMC1zaWVtZW5zLXN5c3YKKwlleGl0IDs7CisgICAgRFMvKjpVTklYX1N5c3RlbV9WOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tJHtVTkFNRV9TWVNURU19LSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpQbGFuOToqOiopCisJIyAidW5hbWUgLW0iIGlzIG5vdCBjb25zaXN0ZW50LCBzbyB1c2UgJGNwdXR5cGUgaW5zdGVhZC4gMzg2CisJIyBpcyBjb252ZXJ0ZWQgdG8gaTM4NiBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciB4ODYKKwkjIG9wZXJhdGluZyBzeXN0ZW1zLgorCWlmIHRlc3QgIiRjcHV0eXBlIiA9ICIzODYiOyB0aGVuCisJICAgIFVOQU1FX01BQ0hJTkU9aTM4NgorCWVsc2UKKwkgICAgVU5BTUVfTUFDSElORT0iJGNwdXR5cGUiCisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1wbGFuOQorCWV4aXQgOzsKKyAgICAqOlRPUFMtMTA6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10b3BzMTAKKwlleGl0IDs7CisgICAgKjpURU5FWDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRlbmV4CisJZXhpdCA7OworICAgIEtTMTA6VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC1kZWMtdG9wczIwCisJZXhpdCA7OworICAgIFhLTC0xOlRPUFMtMjA6KjoqIHwgVFlQRTU6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC14a2wtdG9wczIwCisJZXhpdCA7OworICAgICo6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOklUUzoqOiopCisJZWNobyBwZHAxMC11bmtub3duLWl0cworCWV4aXQgOzsKKyAgICBTRUk6KjoqOlNFSVVYKQorCWVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RHJhZ29uRmx5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCisJZXhpdCA7OworICAgICo6KlZNUzoqOiopCisJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7OworCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CisJICAgIFYqKSBlY2hvIHZheC1kZWMtdm1zIDsgZXhpdCA7OworCWVzYWMgOzsKKyAgICAqOlhFTklYOio6U3lzVikKKwllY2hvIGkzODYtcGMteGVuaXgKKwlleGl0IDs7CisgICAgaSo4Njpza3lvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNreW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfWAgfCBzZWQgLWUgJ3MvIC4qJC8vJworCWV4aXQgOzsKKyAgICBpKjg2OnJkb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCisJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7CisgICAgeDg2XzY0OlZNa2VybmVsOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1lc3gKKwlleGl0IDs7Citlc2FjCisKKyNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgorI2VjaG8gIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgMT4mMgorCitldmFsICRzZXRfY2NfZm9yX2J1aWxkCitjYXQgPiRkdW1teS5jIDw8RU9GCisjaWZkZWYgX1NFUVVFTlRfCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCittYWluICgpCit7CisjaWYgZGVmaW5lZCAoc29ueSkKKyNpZiBkZWZpbmVkIChNSVBTRUIpCisgIC8qIEJGRCB3YW50cyAiYnNkIiBpbnN0ZWFkIG9mICJuZXdzb3MiLiAgUGVyaGFwcyBCRkQgc2hvdWxkIGJlIGNoYW5nZWQsCisgICAgIEkgZG9uJ3Qga25vdy4uLi4gICovCisgIHByaW50ZiAoIm1pcHMtc29ueS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKKyNpZmRlZiBORVdTT1M0CisJIjQiCisjZWxzZQorCSIiCisjZW5kaWYKKwkpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfX2FybSkgJiYgZGVmaW5lZCAoX19hY29ybikgJiYgZGVmaW5lZCAoX191bml4KQorICBwcmludGYgKCJhcm0tYWNvcm4tcmlzY2l4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKGhwMzAwKSAmJiAhZGVmaW5lZCAoaHB1eCkKKyAgcHJpbnRmICgibTY4ay1ocC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTmVYVCkKKyNpZiAhZGVmaW5lZCAoX19BUkNISVRFQ1RVUkVfXykKKyNkZWZpbmUgX19BUkNISVRFQ1RVUkVfXyAibTY4ayIKKyNlbmRpZgorICBpbnQgdmVyc2lvbjsKKyAgdmVyc2lvbj1gKGhvc3RpbmZvIHwgc2VkIC1uICdzLy4qTmVYVCBNYWNoIFwoWzAtOV0qXCkuKi9cMS9wJykgMj4vZGV2L251bGxgOworICBpZiAodmVyc2lvbiA8IDQpCisgICAgcHJpbnRmICgiJXMtbmV4dC1uZXh0c3RlcCVkXG4iLCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKKyAgZWxzZQorICAgIHByaW50ZiAoIiVzLW5leHQtb3BlbnN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7CisgIGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChNVUxUSU1BWCkgfHwgZGVmaW5lZCAobjE2KQorI2lmIGRlZmluZWQgKFVNQVhWKQorICBwcmludGYgKCJuczMyay1lbmNvcmUtc3lzdlxuIik7IGV4aXQgKDApOworI2Vsc2UKKyNpZiBkZWZpbmVkIChDTVUpCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1tYWNoXG4iKTsgZXhpdCAoMCk7CisjZWxzZQorICBwcmludGYgKCJuczMyay1lbmNvcmUtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfXzM4NkJTRF9fKQorICBwcmludGYgKCJpMzg2LXBjLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChzZXF1ZW50KQorI2lmIGRlZmluZWQgKGkzODYpCisgIHByaW50ZiAoImkzODYtc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjaWYgZGVmaW5lZCAobnMzMjAwMCkKKyAgcHJpbnRmICgibnMzMmstc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9TRVFVRU5UXykKKyAgICBzdHJ1Y3QgdXRzbmFtZSB1bjsKKworICAgIHVuYW1lKCZ1bik7CisKKyAgICBpZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjIiLCAyKSA9PSAwKSB7CisJcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eDJcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYxIiwgMikgPT0gMCkgeyAvKiBYWFggaXMgVjEgY29ycmVjdD8gKi8KKwlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MVxuIik7IGV4aXQgKDApOworICAgIH0KKyAgICBwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4XG4iKTsgZXhpdCAoMCk7CisKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAodmF4KQorIyBpZiAhZGVmaW5lZCAodWx0cml4KQorIyAgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjICBpZiBkZWZpbmVkIChCU0QpCisjICAgaWYgQlNEID09IDQzCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM1xuIik7IGV4aXQgKDApOworIyAgIGVsc2UKKyMgICAgaWYgQlNEID09IDE5OTAwNgorICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2Q0LjNyZW5vXG4iKTsgZXhpdCAoMCk7CisjICAgIGVsc2UKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkXG4iKTsgZXhpdCAoMCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAgZW5kaWYKKyMgZWxzZQorICAgIHByaW50ZiAoInZheC1kZWMtdWx0cml4XG4iKTsgZXhpdCAoMCk7CisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKGFsbGlhbnQpICYmIGRlZmluZWQgKGk4NjApCisgIHByaW50ZiAoImk4NjAtYWxsaWFudC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisgIGV4aXQgKDEpOworfQorRU9GCisKKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCisJeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisKKyMgQXBvbGxvcyBwdXQgdGhlIHN5c3RlbSB0eXBlIGluIHRoZSBlbnZpcm9ubWVudC4KKwordGVzdCAtZCAvdXNyL2Fwb2xsbyAmJiB7IGVjaG8gJHtJU1B9LWFwb2xsby0ke1NZU1RZUEV9OyBleGl0OyB9CisKKyMgQ29udmV4IHZlcnNpb25zIHRoYXQgcHJlZGF0ZSB1bmFtZSBjYW4gdXNlIGdldHN5c2luZm8oMSkKKworaWYgWyAteCAvdXNyL2NvbnZleC9nZXRzeXNpbmZvIF0KK3RoZW4KKyAgICBjYXNlIGBnZXRzeXNpbmZvIC1mIGNwdV90eXBlYCBpbgorICAgIGMxKikKKwllY2hvIGMxLWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzIqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYworCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkKKwlleGl0IDs7CisgICAgYzM0KikKKwllY2hvIGMzNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGMzOCopCisJZWNobyBjMzgtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjNCopCisJZWNobyBjNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGVzYWMKK2ZpCisKK2NhdCA+JjIgPDxFT0YKKyQwOiB1bmFibGUgdG8gZ3Vlc3Mgc3lzdGVtIHR5cGUKKworVGhpcyBzY3JpcHQsIGxhc3QgbW9kaWZpZWQgJHRpbWVzdGFtcCwgaGFzIGZhaWxlZCB0byByZWNvZ25pemUKK3RoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKK2Rvd25sb2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQorCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorYW5kCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKworSWYgdGhlIHZlcnNpb24geW91IHJ1biAoJDApIGlzIGFscmVhZHkgdXAgdG8gZGF0ZSwgcGxlYXNlCitzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55IGluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBiZQorcGVydGluZW50IHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBpbiBvcmRlciB0byBwcm92aWRlIHRoZSBuZWVkZWQKK2luZm9ybWF0aW9uIHRvIGhhbmRsZSB5b3VyIHN5c3RlbS4KKworY29uZmlnLmd1ZXNzIHRpbWVzdGFtcCA9ICR0aW1lc3RhbXAKKwordW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGxgCisvYmluL3VuYW1lIC1YICAgICA9IGAoL2Jpbi91bmFtZSAtWCkgMj4vZGV2L251bGxgCisKK2hvc3RpbmZvICAgICAgICAgICAgICAgPSBgKGhvc3RpbmZvKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IGAoL3Vzci9iaW4vYXJjaCAtaykgMj4vZGV2L251bGxgCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGxgCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbGAKKworVU5BTUVfTUFDSElORSA9ICR7VU5BTUVfTUFDSElORX0KK1VOQU1FX1JFTEVBU0UgPSAke1VOQU1FX1JFTEVBU0V9CitVTkFNRV9TWVNURU0gID0gJHtVTkFNRV9TWVNURU19CitVTkFNRV9WRVJTSU9OID0gJHtVTkFNRV9WRVJTSU9OfQorRU9GCisKK2V4aXQgMQorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jb25maWcuc3ViIGIvY29uZmlnLnN1YgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jODk0ZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnLnN1YgpAQCAtMCwwICsxLDE3NzMgQEAKKyMhIC9iaW4vc2gKKyMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgorIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLAorIyAgIDIwMTEsIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK3RpbWVzdGFtcD0nMjAxMi0wMi0xMCcKKworIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCisjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKKyMgY2FuIGhhbmRsZSB0aGF0IG1hY2hpbmUuICBJdCBkb2VzIG5vdCBpbXBseSBBTEwgR05VIHNvZnR3YXJlIGNhbi4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisKKyMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0CisjIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIEdOVSBDaGFuZ2VMb2cgZW50cnkuCisjCisjIENvbmZpZ3VyYXRpb24gc3Vicm91dGluZSB0byB2YWxpZGF0ZSBhbmQgY2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiB0eXBlLgorIyBTdXBwbHkgdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uIHR5cGUgYXMgYW4gYXJndW1lbnQuCisjIElmIGl0IGlzIGludmFsaWQsIHdlIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ugb24gc3RkZXJyIGFuZCBleGl0IHdpdGggY29kZSAxLgorIyBPdGhlcndpc2UsIHdlIHByaW50IHRoZSBjYW5vbmljYWwgY29uZmlnIHR5cGUgb24gc3Rkb3V0IGFuZCBzdWNjZWVkLgorCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECisKKyMgVGhpcyBmaWxlIGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwgR05VIHBhY2thZ2VzCisjIGFuZCByZWNvZ25pemUgYWxsIHRoZSBDUFUgdHlwZXMsIHN5c3RlbSB0eXBlcyBhbmQgYWxpYXNlcworIyB0aGF0IGFyZSBtZWFuaW5nZnVsIHdpdGggKmFueSogR05VIHNvZnR3YXJlLgorIyBFYWNoIHBhY2thZ2UgaXMgcmVzcG9uc2libGUgZm9yIHJlcG9ydGluZyB3aGljaCB2YWxpZCBjb25maWd1cmF0aW9ucworIyBpdCBkb2VzIG5vdCBzdXBwb3J0LiAgVGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2gKKyMgYSBmYWlsdXJlIHRvIHN1cHBvcnQgYSB2YWxpZCBjb25maWd1cmF0aW9uIGZyb20gYSBtZWFuaW5nbGVzcworIyBjb25maWd1cmF0aW9uLgorCisjIFRoZSBnb2FsIG9mIHRoaXMgZmlsZSBpcyB0byBtYXAgYWxsIHRoZSB2YXJpb3VzIHZhcmlhdGlvbnMgb2YgYSBnaXZlbgorIyBtYWNoaW5lIHNwZWNpZmljYXRpb24gaW50byBhIHNpbmdsZSBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtOgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorIyBvciBpbiBzb21lIGNhc2VzLCB0aGUgbmV3ZXIgZm91ci1wYXJ0IGZvcm06CisjCUNQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQorIyBJdCBpcyB3cm9uZyB0byBlY2hvIGFueSBvdGhlciB0eXBlIG9mIHNwZWNpZmljYXRpb24uCisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dIENQVS1NRlItT1BTWVMKKyAgICAgICAkMCBbT1BUSU9OXSBBTElBUworCitDYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIG5hbWUuCisKK09wZXJhdGlvbiBtb2RlczoKKyAgLWgsIC0taGVscCAgICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC10LCAtLXRpbWUtc3RhbXAgICBwcmludCBkYXRlIG9mIGxhc3QgbW9kaWZpY2F0aW9uLCB0aGVuIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKworUmVwb3J0IGJ1Z3MgYW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiIKKwordmVyc2lvbj0iXAorR05VIGNvbmZpZy5zdWIgKCR0aW1lc3RhbXApCisKK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiCisgICAgICAgZXhpdCAxIDs7CisKKyAgICAqbG9jYWwqKQorICAgICAgICMgRmlyc3QgcGFzcyB0aHJvdWdoIGFueSBsb2NhbCBtYWNoaW5lIHR5cGVzLgorICAgICAgIGVjaG8gJDEKKyAgICAgICBleGl0IDs7CisKKyAgICAqICkKKyAgICAgICBicmVhayA7OworICBlc2FjCitkb25lCisKK2Nhc2UgJCMgaW4KKyAwKSBlY2hvICIkbWU6IG1pc3NpbmcgYXJndW1lbnQkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKKyAxKSA7OworICopIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1lbnRzJGhlbHAiID4mMgorICAgIGV4aXQgMTs7Citlc2FjCisKKyMgU2VwYXJhdGUgd2hhdCB0aGUgdXNlciBnYXZlIGludG8gQ1BVLUNPTVBBTlkgYW5kIE9TIG9yIEtFUk5FTC1PUyAoaWYgYW55KS4KKyMgSGVyZSB3ZSBtdXN0IHJlY29nbml6ZSBhbGwgdGhlIHZhbGlkIEtFUk5FTC1PUyBjb21iaW5hdGlvbnMuCittYXliZV9vcz1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDIvJ2AKK2Nhc2UgJG1heWJlX29zIGluCisgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWFuZHJvaWQqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgXAorICBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBcCisgIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCisgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKKyAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQorICAgIG9zPS0kbWF5YmVfb3MKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYAorICAgIDs7CisgIGFuZHJvaWQtbGludXgpCisgICAgb3M9LWxpbnV4LWFuZHJvaWQKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYC11bmtub3duCisgICAgOzsKKyAgKikKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzLy1bXi1dKiQvLydgCisgICAgaWYgWyAkYmFzaWNfbWFjaGluZSAhPSAkMSBdCisgICAgdGhlbiBvcz1gZWNobyAkMSB8IHNlZCAncy8uKi0vLS8nYAorICAgIGVsc2Ugb3M9OyBmaQorICAgIDs7Citlc2FjCisKKyMjIyBMZXQncyByZWNvZ25pemUgY29tbW9uIG1hY2hpbmVzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcyBzbworIyMjIHRoYXQgdGhpbmdzIGxpa2UgY29uZmlnLnN1YiBkZWNzdGF0aW9uLTMxMDAgd29yay4gIFdlIGFsc28KKyMjIyByZWNvZ25pemUgc29tZSBtYW51ZmFjdHVyZXJzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcywgc28gd2UKKyMjIyBjYW4gcHJvdmlkZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIGJlbG93LgorY2FzZSAkb3MgaW4KKwktc3VuKm9zKikKKwkJIyBQcmV2ZW50IGZvbGxvd2luZyBjbGF1c2UgZnJvbSBoYW5kbGluZyB0aGlzIGludmFsaWQgaW5wdXQuCisJCTs7CisJLWRlYyogfCAtbWlwcyogfCAtc2VxdWVudCogfCAtZW5jb3JlKiB8IC1wYzUzMiogfCAtc2dpKiB8IC1zb255KiB8IFwKKwktYXR0KiB8IC03MzAwKiB8IC0zMzAwKiB8IC1kZWx0YSogfCAtbW90b3JvbGEqIHwgLXN1blsyMzRdKiB8IFwKKwktdW5pY29tKiB8IC1pYm0qIHwgLW5leHQgfCAtaHAgfCAtaXNpKiB8IC1hcG9sbG8gfCAtYWx0b3MqIHwgXAorCS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCisJLWNbMTIzXSogfCAtY29udmV4KiB8IC1zdW4gfCAtY3JkcyB8IC1vbXJvbiogfCAtZGcgfCAtdWx0cmEgfCAtdHRpKiB8IFwKKwktaGFycmlzIHwgLWRvbHBoaW4gfCAtaGlnaGxldmVsIHwgLWdvdWxkIHwgLWNibSB8IC1ucyB8IC1tYXNzY29tcCB8IFwKKwktYXBwbGUgfCAtYXhpcyB8IC1rbnV0aCB8IC1jcmF5IHwgLW1pY3JvYmxhemUpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWJsdWVnZW5lKikKKwkJb3M9LWNuaworCQk7OworCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1zY291dCkKKwkJOzsKKwktd3JzKQorCQlvcz0tdnh3b3JrcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWNob3J1c29zKikKKwkJb3M9LWNob3J1c29zCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktY2hvcnVzcmRiKQorCQlvcz0tY2hvcnVzcmRiCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktaGl1eCopCisJCW9zPS1oaXV4d2UyCisJCTs7CisJLXNjbzYpCisJCW9zPS1zY281djYKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281KQorCQlvcz0tc2NvMy4ydjUKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY280KQorCQlvcz0tc2NvMy4ydjQKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28zLjIuWzQtOV0qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3Mvc2NvMy4yLi9zY28zLjJ2LydgCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4ydls0LTldKikKKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281djYqKQorCQkjIERvbid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbyopCisJCW9zPS1zY28zLjJ2MgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXVkayopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktaXNjKQorCQlvcz0taXNjMi4yCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktY2xpeCopCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBlci1pbnRlcmdyYXBoCisJCTs7CisJLWlzYyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktbHlueCopCisJCW9zPS1seW54b3MKKwkJOzsKKwktcHR4KikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1zZXF1ZW50LydgCisJCTs7CisJLXdpbmRvd3NudCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy93aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsKKwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7CisJLW1pbnQgfCAtbWludFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7Citlc2FjCisKKyMgRGVjb2RlIGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNPTVBBTlkgY29tYmluYXRpb25zLgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBvbWl0dGVkIGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUgc3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkxNzUwYSB8IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFhcmNoNjQgfCBhYXJjaDY0X2JlIFwKKwl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhhNjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKKwl8IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciB8IGF2cjMyIFwKKyAgICAgICAgfCBiZTMyIHwgYmU2NCBcCisJfCBiZmluIFwKKwl8IGM0eCB8IGNsaXBwZXIgXAorCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKKwl8IGVwaXBoYW55IFwKKwl8IGZpZG8gfCBmcjMwIHwgZnJ2IFwKKwl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCisJfCBoZXhhZ29uIFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAorCXwgaXAyayB8IGlxMjAwMCBcCisJfCBsZTMyIHwgbGU2NCBcCisJfCBsbTMyIFwKKwl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgXAorCXwgbWF4cSB8IG1iIHwgbWljcm9ibGF6ZSB8IG1jb3JlIHwgbWVwIHwgbWV0YWcgXAorCXwgbWlwcyB8IG1pcHNiZSB8IG1pcHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCisJfCBtaXBzMTYgXAorCXwgbWlwczY0IHwgbWlwczY0ZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwgXAorCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0dnI0MTAwIHwgbWlwczY0dnI0MTAwZWwgXAorCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAorCXwgbWlwczY0dnI1MDAwIHwgbWlwczY0dnI1MDAwZWwgXAorCXwgbWlwczY0dnI1OTAwIHwgbWlwczY0dnI1OTAwZWwgXAorCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAorCXwgbWlwc2lzYTMycjIgfCBtaXBzaXNhMzJyMmVsIFwKKwl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKKwl8IG1pcHNpc2E2NHIyIHwgbWlwc2lzYTY0cjJlbCBcCisJfCBtaXBzaXNhNjRzYjEgfCBtaXBzaXNhNjRzYjFlbCBcCisJfCBtaXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAorCXwgbWlwc3R4MzkgfCBtaXBzdHgzOWVsIFwKKwl8IG1uMTAyMDAgfCBtbjEwMzAwIFwKKwl8IG1veGllIFwKKwl8IG10IFwKKwl8IG1zcDQzMCBcCisJfCBuZHMzMiB8IG5kczMybGUgfCBuZHMzMmJlIFwKKwl8IG5pb3MgfCBuaW9zMiBcCisJfCBuczE2ayB8IG5zMzJrIFwKKwl8IG9wZW44IFwKKwl8IG9yMzIgXAorCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSBcCisJfCBweXJhbWlkIFwKKwl8IHJsNzggfCByeCBcCisJfCBzY29yZSBcCisJfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2g2NCB8IHNoNjRsZSBcCisJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3BhcmM4NnggfCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCisJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYgXAorCXwgc3B1IFwKKwl8IHRhaG9lIHwgdGljNHggfCB0aWM1NHggfCB0aWM1NXggfCB0aWM2eCB8IHRpYzgwIHwgdHJvbiBcCisJfCB1Ymljb20zMiBcCisJfCB2ODUwIHwgdjg1MGUgfCB2ODUwZTEgfCB2ODUwZTIgfCB2ODUwZXMgfCB2ODUwZTJ2MyBcCisJfCB3ZTMyayBcCisJfCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB6OGsgfCB6ODApCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCWM1NHgpCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KKwkJOzsKKwljNTV4KQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCisJCTs7CisJYzZ4KQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KKwkJOzsKKwltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBtNjhoY3MxMnggfCBwaWNvY2hpcCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1ub25lCisJCTs7CisJbTg4MTEwIHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6OGspCisJCTs7CisJbXMxKQorCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KKwkJOzsKKworCXN0cm9uZ2FybSB8IHRodW1iIHwgeHNjYWxlKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCTs7CisJeGdhdGUpCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQlvcz0tbm9uZQorCQk7OworCXhzY2FsZWViKQorCQliYXNpY19tYWNoaW5lPWFybWViLXVua25vd24KKwkJOzsKKworCXhzY2FsZWVsKQorCQliYXNpY19tYWNoaW5lPWFybWVsLXVua25vd24KKwkJOzsKKworCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCisJIyBiZWNhdXNlICgxKSB0aGF0J3Mgd2hhdCB0aGV5IG5vcm1hbGx5IGFyZSwgYW5kCisJIyAoMikgdGhlIHdvcmQgInVua25vd24iIHRlbmRzIHRvIGNvbmZ1c2UgYmVnaW5uaW5nIHVzZXJzLgorCWkqODYgfCB4ODZfNjQpCisJICBiYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXBjCisJICA7OworCSMgT2JqZWN0IGlmIG1vcmUgdGhhbiBvbmUgY29tcGFueSBuYW1lIHdvcmQuCisJKi0qLSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGggY29tcGFueSBuYW1lLgorCTU4MC0qIFwKKwl8IGEyOWstKiBcCisJfCBhYXJjaDY0LSogfCBhYXJjaDY0X2JlLSogXAorCXwgYWxwaGEtKiB8IGFscGhhZXZbNC04XS0qIHwgYWxwaGFldjU2LSogfCBhbHBoYWV2Nls3OF0tKiBcCisJfCBhbHBoYTY0LSogfCBhbHBoYTY0ZXZbNC04XS0qIHwgYWxwaGE2NGV2NTYtKiB8IGFscGhhNjRldjZbNzhdLSogXAorCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiBcCisJfCBhcm0tKiAgfCBhcm1iZS0qIHwgYXJtbGUtKiB8IGFybWViLSogfCBhcm12Ki0qIFwKKwl8IGF2ci0qIHwgYXZyMzItKiBcCisJfCBiZTMyLSogfCBiZTY0LSogXAorCXwgYmZpbi0qIHwgYnMyMDAwLSogXAorCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAorCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKKwl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKKwl8IGVseHNpLSogXAorCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZmlkby0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAorCXwgaDgzMDAtKiB8IGg4NTAwLSogXAorCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKwl8IGhleGFnb24tKiBcCisJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAorCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgbGUzMi0qIHwgbGU2NC0qIFwKKwl8IGxtMzItKiBcCisJfCBtMzJjLSogfCBtMzJyLSogfCBtMzJybGUtKiBcCisJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIHwgbWV0YWctKiB8IG1pY3JvYmxhemUtKiBcCisJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNlYi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCisJfCBtaXBzMTYtKiBcCisJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAorCXwgbWlwczY0b2N0ZW9uLSogfCBtaXBzNjRvY3Rlb25lbC0qIFwKKwl8IG1pcHM2NG9yaW9uLSogfCBtaXBzNjRvcmlvbmVsLSogXAorCXwgbWlwczY0cjU5MDAtKiB8IG1pcHM2NHI1OTAwZWwtKiBcCisJfCBtaXBzNjR2ci0qIHwgbWlwczY0dnJlbC0qIFwKKwl8IG1pcHM2NHZyNDEwMC0qIHwgbWlwczY0dnI0MTAwZWwtKiBcCisJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2NHZyNDMwMGVsLSogXAorCXwgbWlwczY0dnI1MDAwLSogfCBtaXBzNjR2cjUwMDBlbC0qIFwKKwl8IG1pcHM2NHZyNTkwMC0qIHwgbWlwczY0dnI1OTAwZWwtKiBcCisJfCBtaXBzaXNhMzItKiB8IG1pcHNpc2EzMmVsLSogXAorCXwgbWlwc2lzYTMycjItKiB8IG1pcHNpc2EzMnIyZWwtKiBcCisJfCBtaXBzaXNhNjQtKiB8IG1pcHNpc2E2NGVsLSogXAorCXwgbWlwc2lzYTY0cjItKiB8IG1pcHNpc2E2NHIyZWwtKiBcCisJfCBtaXBzaXNhNjRzYjEtKiB8IG1pcHNpc2E2NHNiMWVsLSogXAorCXwgbWlwc2lzYTY0c3I3MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCisJfCBtaXBzdHgzOS0qIHwgbWlwc3R4MzllbC0qIFwKKwl8IG1taXgtKiBcCisJfCBtdC0qIFwKKwl8IG1zcDQzMC0qIFwKKwl8IG5kczMyLSogfCBuZHMzMmxlLSogfCBuZHMzMmJlLSogXAorCXwgbmlvcy0qIHwgbmlvczItKiBcCisJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKwl8IG9wZW44LSogXAorCXwgb3Jpb24tKiBcCisJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8IHBuLSogfCBwb3dlci0qIFwKKwl8IHBvd2VycGMtKiB8IHBvd2VycGM2NC0qIHwgcG93ZXJwYzY0bGUtKiB8IHBvd2VycGNsZS0qIFwKKwl8IHB5cmFtaWQtKiBcCisJfCBybDc4LSogfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAorCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCisJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCisJfCBzcGFyY2xpdGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN2MS0qIHwgc3g/LSogXAorCXwgdGFob2UtKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlKi0qIFwKKwl8IHRyb24tKiBcCisJfCB1Ymljb20zMi0qIFwKKwl8IHY4NTAtKiB8IHY4NTBlLSogfCB2ODUwZTEtKiB8IHY4NTBlcy0qIHwgdjg1MGUyLSogfCB2ODUwZTJ2My0qIFwKKwl8IHZheC0qIFwKKwl8IHdlMzJrLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiBcCisJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCisJfCB5bXAtKiBcCisJfCB6OGstKiB8IHo4MC0qKQorCQk7OworCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUsIHdpdGggZ2xvYiBtYXRjaC4KKwl4dGVuc2EqKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgdmFyaW91cyBtYWNoaW5lIG5hbWVzIGFuZCBhbGlhc2VzIHdoaWNoIHN0YW5kCisJIyBmb3IgYSBDUFUgdHlwZSBhbmQgYSBjb21wYW55IGFuZCBzb21ldGltZXMgZXZlbiBhbiBPUy4KKwkzODZic2QpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS1ic2QKKwkJOzsKKwkzYjEgfCA3MzAwIHwgNzMwMC1hdHQgfCBhdHQtNzMwMCB8IHBjNzMwMCB8IHNhZmFyaSB8IHVuaXhwYykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtYXR0CisJCTs7CisJM2IqKQorCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAorCQk7OworCWEyOWtoaWYpCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCWFiYWN1cykKKwkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OworCWFkb2JlNjhrKQorCQliYXNpY19tYWNoaW5lPW02ODAxMC1hZG9iZQorCQlvcz0tc2NvdXQKKwkJOzsKKwlhbGxpYW50IHwgZng4MCkKKwkJYmFzaWNfbWFjaGluZT1meDgwLWFsbGlhbnQKKwkJOzsKKwlhbHRvcyB8IGFsdG9zMzA2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFsdG9zCisJCTs7CisJYW0yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1ub25lCisJCW9zPS1ic2QKKwkJOzsKKwlhbWQ2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtcGMKKwkJOzsKKwlhbWQ2NC0qKQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWFtZGFobCkKKwkJYmFzaWNfbWFjaGluZT01ODAtYW1kYWhsCisJCW9zPS1zeXN2CisJCTs7CisJYW1pZ2EgfCBhbWlnYS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQk7OworCWFtaWdhb3MgfCBhbWlnYWRvcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwlhbWlnYXVuaXggfCBhbWl4KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tc3lzdjQKKwkJOzsKKwlhcG9sbG82OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tc3lzdgorCQk7OworCWFwb2xsbzY4YnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9zPS1ic2QKKwkJOzsKKwlhcm9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWFyb3MKKwkJOzsKKwlhdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQlvcz0tYXV4CisJCTs7CisJYmFsYW5jZSkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCWJsYWNrZmluKQorCQliYXNpY19tYWNoaW5lPWJmaW4tdW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwlibGFja2Zpbi0qKQorCQliYXNpY19tYWNoaW5lPWJmaW4tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJYmx1ZWdlbmUqKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1jbmsKKwkJOzsKKwljNTR4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzU1eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM2eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzkwKQorCQliYXNpY19tYWNoaW5lPWM5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwljZWdjYykKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQlvcz0tY2VnY2MKKwkJOzsKKwljb252ZXgtYzEpCisJCWJhc2ljX21hY2hpbmU9YzEtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzIpCisJCWJhc2ljX21hY2hpbmU9YzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzMyKQorCQliYXNpY19tYWNoaW5lPWMzMi1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzQpCisJCWJhc2ljX21hY2hpbmU9YzM0LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzOCkKKwkJYmFzaWNfbWFjaGluZT1jMzgtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljcmF5IHwgajkwKQorCQliYXNpY19tYWNoaW5lPWo5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwljcmF5bnYpCisJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKKwkJb3M9LXVuaWNvc21wCisJCTs7CisJY3IxNiB8IGNyMTYtKikKKwkJYmFzaWNfbWFjaGluZT1jcjE2LXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWNyZHMgfCB1bm9zKQorCQliYXNpY19tYWNoaW5lPW02OGstY3JkcworCQk7OworCWNyaXN2MzIgfCBjcmlzdjMyLSogfCBldHJheGZzKikKKwkJYmFzaWNfbWFjaGluZT1jcmlzdjMyLWF4aXMKKwkJOzsKKwljcmlzIHwgY3Jpcy0qIHwgZXRyYXgqKQorCQliYXNpY19tYWNoaW5lPWNyaXMtYXhpcworCQk7OworCWNyeCkKKwkJYmFzaWNfbWFjaGluZT1jcngtdW5rbm93bgorCQlvcz0tZWxmCisJCTs7CisJZGEzMCB8IGRhMzAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKwkJOzsKKwlkZWNzdGF0aW9uIHwgZGVjc3RhdGlvbi0zMTAwIHwgcG1heCB8IHBtYXgtKiB8IHBtaW4gfCBkZWMzMTAwIHwgZGVjc3RhdG4pCisJCWJhc2ljX21hY2hpbmU9bWlwcy1kZWMKKwkJOzsKKwlkZWNzeXN0ZW0xMCogfCBkZWMxMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMTAKKwkJOzsKKwlkZWNzeXN0ZW0yMCogfCBkZWMyMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMjAKKwkJOzsKKwlkZWx0YSB8IDMzMDAgfCBtb3Rvcm9sYS0zMzAwIHwgbW90b3JvbGEtZGVsdGEgXAorCSAgICAgIHwgMzMwMC1tb3Rvcm9sYSB8IGRlbHRhLW1vdG9yb2xhKQorCQliYXNpY19tYWNoaW5lPW02OGstbW90b3JvbGEKKwkJOzsKKwlkZWx0YTg4KQorCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKKwkJb3M9LXN5c3YzCisJCTs7CisJZGljb3MpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tZGljb3MKKwkJOzsKKwlkamdwcCkKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisJCW9zPS1tc2Rvc2RqZ3BwCisJCTs7CisJZHB4MjAgfCBkcHgyMC0qKQorCQliYXNpY19tYWNoaW5lPXJzNjAwMC1idWxsCisJCW9zPS1ib3N4CisJCTs7CisJZHB4MiogfCBkcHgyKi1idWxsKQorCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAorCQlvcz0tc3lzdjMKKwkJOzsKKwllYm1vbjI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tZWJtb24KKwkJOzsKKwllbHhzaSkKKwkJYmFzaWNfbWFjaGluZT1lbHhzaS1lbHhzaQorCQlvcz0tYnNkCisJCTs7CisJZW5jb3JlIHwgdW1heCB8IG1tYXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstZW5jb3JlCisJCTs7CisJZXMxODAwIHwgT1NFNjhrIHwgb3NlNjhrIHwgb3NlIHwgT1NFKQorCQliYXNpY19tYWNoaW5lPW02OGstZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCWZ4MjgwMCkKKwkJYmFzaWNfbWFjaGluZT1pODYwLWFsbGlhbnQKKwkJOzsKKwlnZW5peCkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1ucworCQk7OworCWdtaWNybykKKwkJYmFzaWNfbWFjaGluZT10cm9uLWdtaWNybworCQlvcz0tc3lzdgorCQk7OworCWdvMzIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tZ28zMgorCQk7OworCWgzMDUwciogfCBoaXV4KikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwloODMwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODMwMC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloODMwMHhyYXkpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0teHJheQorCQk7OworCWg4NTAwaG1zKQorCQliYXNpY19tYWNoaW5lPWg4NTAwLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCWhhcnJpcykKKwkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tc3lzdjMKKwkJOzsKKwlocDMwMC0qKQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJOzsKKwlocDMwMGJzZCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCW9zPS1ic2QKKwkJOzsKKwlocDMwMGhwdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0taHB1eAorCQk7OworCWhwM2s5WzAtOV1bMC05XSB8IGhwOVswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWsyWzAtOV1bMC05XSB8IGhwOWszMVswLTldKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1ocAorCQk7OworCWhwOWszWzItOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHA5azZbMC05XVswLTldIHwgaHA2WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHA5azdbMC03OV1bMC05XSB8IGhwN1swLTc5XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrNzhbMC05XSB8IGhwNzhbMC05XSkKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbNjddMSB8IGhwOFs2N10xIHwgaHA5azgwWzI0XSB8IGhwODBbMjRdIHwgaHA5azhbNzhdOSB8IGhwOFs3OF05IHwgaHA5azg5MyB8IGhwODkzKQorCQkjIEZJWE1FOiByZWFsbHkgaHBwYTIuMC1ocAorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrOFswLTldWzEzNjc5XSB8IGhwOFswLTldWzEzNjc5XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVswLTldIHwgaHA4WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHBwYS1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJaHBwYW9zZikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCW9zPS1vc2YKKwkJOzsKKwlocHBybykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlpMzcwLWlibSogfCBpYm0qKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCTs7CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJCTs7CisJaSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJaTM4Nm1hY2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJaTM4Ni12c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZzdGEKKwkJOzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNhc2UgJG9zIGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAorCQkJOzsKKwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGstaXNpCisJCW9zPS1zeXN2CisJCTs7CisJbTY4a25vbW11KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwltNjhrbm9tbXUtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCW04OGstb21yb24qKQorCQliYXNpY19tYWNoaW5lPW04OGstb21yb24KKwkJOzsKKwltYWdudW0gfCBtMzIzMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLW1pcHMKKwkJb3M9LXN5c3YKKwkJOzsKKwltZXJsaW4pCisJCWJhc2ljX21hY2hpbmU9bnMzMmstdXRlaworCQlvcz0tc3lzdgorCQk7OworCW1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKKwltaW5ndzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwltaW5ndzMyY2UpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJb3M9LW1pbmd3MzJjZQorCQk7OworCW1pbmlmcmFtZSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtY29udmVyZ2VudAorCQk7OworCSptaW50IHwgLW1pbnRbMC05XSogfCAqTWlOVCB8ICpNaU5UWzAtOV0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQKKwkJOzsKKwltaXBzMyotKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AKKwkJOzsKKwltaXBzMyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgLXVua25vd24KKwkJOzsKKwltb25pdG9yKQorCQliYXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJbW9ycGhvcykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJb3M9LW1vcnBob3MKKwkJOzsKKwltc2RvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1tc2RvcworCQk7OworCW1zMS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21zMS0vbXQtLydgCisJCTs7CisJbXN5cykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1tc3lzCisJCTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJOzsKKwluYWNsKQorCQliYXNpY19tYWNoaW5lPWxlMzItdW5rbm93bgorCQlvcz0tbmFjbAorCQk7OworCW5jcjMwMDApCisJCWJhc2ljX21hY2hpbmU9aTQ4Ni1uY3IKKwkJb3M9LXN5c3Y0CisJCTs7CisJbmV0YnNkMzg2KQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tbmV0YnNkCisJCTs7CisJbmV0d2luZGVyKQorCQliYXNpY19tYWNoaW5lPWFybXY0bC1yZWJlbAorCQlvcz0tbGludXgKKwkJOzsKKwluZXdzIHwgbmV3czcwMCB8IG5ld3M4MDAgfCBuZXdzOTAwKQorCQliYXNpY19tYWNoaW5lPW02OGstc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmV3czEwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4MDMwLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MtMzYwMCB8IHJpc2MtbmV3cykKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5lY3Y3MCkKKwkJYmFzaWNfbWFjaGluZT12NzAtbmVjCisJCW9zPS1zeXN2CisJCTs7CisJbmV4dCB8IG0qLW5leHQgKQorCQliYXNpY19tYWNoaW5lPW02OGstbmV4dAorCQljYXNlICRvcyBpbgorCQkgICAgLW5leHRzdGVwKiApCisJCQk7OworCQkgICAgLW5zMiopCisJCSAgICAgIG9zPS1uZXh0c3RlcDIKKwkJCTs7CisJCSAgICAqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAzCisJCQk7OworCQllc2FjCisJCTs7CisJbmgzMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstaGFycmlzCisJCW9zPS1jeHV4CisJCTs7CisJbmhbNDVdMDAwKQorCQliYXNpY19tYWNoaW5lPW04OGstaGFycmlzCisJCW9zPS1jeHV4CisJCTs7CisJbmluZHk5NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAorCQlvcz0tbmluZHkKKwkJOzsKKwltb245NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAorCQlvcz0tbW9uOTYwCisJCTs7CisJbm9uc3RvcHV4KQorCQliYXNpY19tYWNoaW5lPW1pcHMtY29tcGFxCisJCW9zPS1ub25zdG9wdXgKKwkJOzsKKwlucDEpCisJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCisJCTs7CisJbmVvLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uZW8tdGFuZGVtCisJCTs7CisJbnNlLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc2UtdGFuZGVtCisJCTs7CisJbnNyLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc3ItdGFuZGVtCisJCTs7CisJb3A1MG4tKiB8IG9wNjBjLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJb3M9LXByb2VsZgorCQk7OworCW9wZW5yaXNjIHwgb3BlbnJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1vcjMyLXVua25vd24KKwkJOzsKKwlvczQwMCkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tb3M0MDAKKwkJOzsKKwlPU0U2ODAwMCB8IG9zZTY4MDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1lcmljc3NvbgorCQlvcz0tb3NlCisJCTs7CisJb3M2OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ub25lCisJCW9zPS1vczY4aworCQk7OworCXBhLWhpdGFjaGkpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4d2UyCisJCTs7CisJcGFyYWdvbikKKwkJYmFzaWNfbWFjaGluZT1pODYwLWludGVsCisJCW9zPS1vc2YKKwkJOzsKKwlwYXJpc2MpCisJCWJhc2ljX21hY2hpbmU9aHBwYS11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCXBhcmlzYy0qKQorCQliYXNpY19tYWNoaW5lPWhwcGEtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJcGJkKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXR0aQorCQk7OworCXBiYikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXR0aQorCQk7OworCXBjNTMyIHwgcGM1MzItKikKKwkJYmFzaWNfbWFjaGluZT1uczMyay1wYzUzMgorCQk7OworCXBjOTgpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQk7OworCXBjOTgtKikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bSB8IHA1IHwgazUgfCBrNiB8IG5leGdlbiB8IHZpYWMzKQorCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKKwkJOzsKKwlwZW50aXVtcHJvIHwgcDYgfCA2eDg2IHwgYXRobG9uIHwgYXRobG9uXyopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQk7OworCXBlbnRpdW1paSB8IHBlbnRpdW0yIHwgcGVudGl1bWlpaSB8IHBlbnRpdW0zKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlwZW50aXVtNCkKKwkJYmFzaWNfbWFjaGluZT1pNzg2LXBjCisJCTs7CisJcGVudGl1bS0qIHwgcDUtKiB8IGs1LSogfCBrNi0qIHwgbmV4Z2VuLSogfCB2aWFjMy0qKQorCQliYXNpY19tYWNoaW5lPWk1ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtcHJvLSogfCBwNi0qIHwgNng4Ni0qIHwgYXRobG9uLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1paS0qIHwgcGVudGl1bTItKiB8IHBlbnRpdW1paWktKiB8IHBlbnRpdW0zLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW00LSopCisJCWJhc2ljX21hY2hpbmU9aTc4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBuKQorCQliYXNpY19tYWNoaW5lPXBuLWdvdWxkCisJCTs7CisJcG93ZXIpCWJhc2ljX21hY2hpbmU9cG93ZXItaWJtCisJCTs7CisJcHBjIHwgcHBjYmUpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJCTs7CisJcHBjLSogfCBwcGNiZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGNsZSB8IHBvd2VycGNsaXR0bGUgfCBwcGMtbGUgfCBwb3dlcnBjLWxpdHRsZSkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtdW5rbm93bgorCQk7OworCXBwY2xlLSogfCBwb3dlcnBjbGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjQpCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LXVua25vd24KKwkJOzsKKwlwcGM2NC0qKSBiYXNpY19tYWNoaW5lPXBvd2VycGM2NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0bGUgfCBwb3dlcnBjNjRsaXR0bGUgfCBwcGM2NC1sZSB8IHBvd2VycGM2NC1saXR0bGUpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtdW5rbm93bgorCQk7OworCXBwYzY0bGUtKiB8IHBvd2VycGM2NGxpdHRsZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtaWJtCisJCTs7CisJcHczMikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXVua25vd24KKwkJb3M9LXB3MzIKKwkJOzsKKwlyZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LXJkb3MKKwkJOzsKKwlyb202OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwlybVs0Nl0wMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNpZW1lbnMKKwkJOzsKKwlydHBjIHwgcnRwYy0qKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJczM5MCB8IHMzOTAtKikKKwkJYmFzaWNfbWFjaGluZT1zMzkwLWlibQorCQk7OworCXMzOTB4IHwgczM5MHgtKikKKwkJYmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJOzsKKwlzYTI5MjAwKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwlzYjEpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTY0c2IxLXVua25vd24KKwkJOzsKKwlzYjFlbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjFlbC11bmtub3duCisJCTs7CisJc2RlKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2EzMi1zZGUKKwkJb3M9LWVsZgorCQk7OworCXNlaSkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQorCQlvcz0tc2VpdXgKKwkJOzsKKwlzZXF1ZW50KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQk7OworCXNoKQorCQliYXNpY19tYWNoaW5lPXNoLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCXNoNWVsKQorCQliYXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KKwkJOzsKKwlzaDY0KQorCQliYXNpY19tYWNoaW5lPXNoNjQtdW5rbm93bgorCQk7OworCXNwYXJjbGl0ZS13cnMgfCBzaW1zby13cnMpCisJCWJhc2ljX21hY2hpbmU9c3BhcmNsaXRlLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXNwczcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MgorCQk7OworCXNwdXIpCisJCWJhc2ljX21hY2hpbmU9c3B1ci11bmtub3duCisJCTs7CisJc3QyMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstdGFuZGVtCisJCTs7CisJc3RyYXR1cykKKwkJYmFzaWNfbWFjaGluZT1pODYwLXN0cmF0dXMKKwkJb3M9LXN5c3Y0CisJCTs7CisJc3Ryb25nYXJtLSogfCB0aHVtYi0qKQorCQliYXNpY19tYWNoaW5lPWFybS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXN1bjIpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQk7OworCXN1bjJvczMpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuMm9zNCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW4zb3MzKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4zb3M0KQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40b3MzKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuNG9zNCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRzb2wyKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlzdW4zIHwgc3VuMy0qKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCTs7CisJc3VuNCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwlzdW4zODYgfCBzdW4zODZpIHwgcm9hZHJ1bm5lcikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXN1bgorCQk7OworCXN2MSkKKwkJYmFzaWNfbWFjaGluZT1zdjEtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJc3ltbWV0cnkpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCXQzZSkKKwkJYmFzaWNfbWFjaGluZT1hbHBoYWV2NS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0OTApCisJCWJhc2ljX21hY2hpbmU9dDkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXRpbGUqKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LWxpbnV4LWdudQorCQk7OworCXR4MzkpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzktdW5rbm93bgorCQk7OworCXR4MzllbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOWVsLXVua25vd24KKwkJOzsKKwl0b2FkMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC14a2wKKwkJb3M9LXRvcHMyMAorCQk7OworCXRvd2VyIHwgdG93ZXItMzIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uY3IKKwkJOzsKKwl0cGYpCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCW9zPS10cGYKKwkJOzsKKwl1ZGkyOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXVsdHJhMykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLW55dQorCQlvcz0tc3ltMQorCQk7OworCXY4MTAgfCBuZWN2ODEwKQorCQliYXNpY19tYWNoaW5lPXY4MTAtbmVjCisJCW9zPS1ub25lCisJCTs7CisJdmF4dikKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCW9zPS1zeXN2CisJCTs7CisJdm1zKQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXZtcworCQk7OworCXZwcCp8dnh8dngtKikKKwkJYmFzaWNfbWFjaGluZT1mMzAxLWZ1aml0c3UKKwkJOzsKKwl2eHdvcmtzOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczY4KQorCQliYXNpY19tYWNoaW5lPW02OGstd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXc2NSopCisJCWJhc2ljX21hY2hpbmU9dzY1LXdkYworCQlvcz0tbm9uZQorCQk7OworCXc4OWstKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJb3M9LXByb2VsZgorCQk7OworCXhib3gpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbWluZ3czMgorCQk7OworCXhwcyB8IHhwczEwMCkKKwkJYmFzaWNfbWFjaGluZT14cHMxMDAtaG9uZXl3ZWxsCisJCTs7CisJeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL154c2NhbGUvYXJtLydgCisJCTs7CisJeW1wKQorCQliYXNpY19tYWNoaW5lPXltcC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl6OGstKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwl6ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwlub25lKQorCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQorCQlvcz0tbm9uZQorCQk7OworCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG1hbnVmYWN0dXJlciBvZiBjZXJ0YWluIENQVSB0eXBlcy4gIEl0IGlzIGluCisjIHNvbWUgY2FzZXMgdGhlIG9ubHkgbWFudWZhY3R1cmVyLCBpbiBvdGhlcnMsIGl0IGlzIHRoZSBtb3N0IHBvcHVsYXIuCisJdzg5aykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJOzsKKwlvcDUwbikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQk7OworCW9wNjBjKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJcm9tcCkKKwkJYmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCW1taXgpCisJCWJhc2ljX21hY2hpbmU9bW1peC1rbnV0aAorCQk7OworCXJzNjAwMCkKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtaWJtCisJCTs7CisJdmF4KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJOzsKKwlwZHAxMCkKKwkJIyB0aGVyZSBhcmUgbWFueSBjbG9uZXMsIHNvIERFQyBpcyBub3QgYSBzYWZlIGJldAorCQliYXNpY19tYWNoaW5lPXBkcDEwLXVua25vd24KKwkJOzsKKwlwZHAxMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMS1kZWMKKwkJOzsKKwl3ZTMyaykKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKwkJOzsKKwlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCisJCWJhc2ljX21hY2hpbmU9c2gtdW5rbm93bgorCQk7OworCXNwYXJjIHwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQk7OworCWN5ZHJhKQorCQliYXNpY19tYWNoaW5lPWN5ZHJhLWN5ZHJvbWUKKwkJOzsKKwlvcmlvbikKKwkJYmFzaWNfbWFjaGluZT1vcmlvbi1oaWdobGV2ZWwKKwkJOzsKKwlvcmlvbjEwNSkKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWhpZ2hsZXZlbAorCQk7OworCW1hYyB8IG1wdyB8IG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQk7OworCXBtYWMgfCBwbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWFwcGxlCisJCTs7CisJKi11bmtub3duKQorCQkjIE1ha2Ugc3VyZSB0byBtYXRjaCBhbiBhbHJlYWR5LWNhbm9uaWNhbGl6ZWQgbWFjaGluZSBuYW1lLgorCQk7OworCSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKKworIyBIZXJlIHdlIGNhbm9uaWNhbGl6ZSBjZXJ0YWluIGFsaWFzZXMgZm9yIG1hbnVmYWN0dXJlcnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi1kaWdpdGFsKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9kaWdpdGFsLiovZGVjLydgCisJCTs7CisJKi1jb21tb2RvcmUqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2NvbW1vZG9yZS4qL2NibS8nYAorCQk7OworCSopCisJCTs7Citlc2FjCisKKyMgRGVjb2RlIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBhbGlhc2VzIGZvciBjZXJ0YWluIG9wZXJhdGluZyBzeXN0ZW1zLgorCitpZiBbIHgiJG9zIiAhPSB4IiIgXQordGhlbgorY2FzZSAkb3MgaW4KKwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9yYXV4KQorCQlvcz0tYXVyb3JhdXgKKwkJOzsKKwktc29sYXJpczEgfCAtc29sYXJpczEuKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAorCQk7OworCS1zb2xhcmlzKQorCQlvcz0tc29sYXJpczIKKwkJOzsKKwktc3ZyNCopCisJCW9zPS1zeXN2NAorCQk7OworCS11bml4d2FyZSopCisJCW9zPS1zeXN2NC4ydXcKKwkJOzsKKwktZ251L2xpbnV4KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfGdudS9saW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwkjIEZpcnN0IGFjY2VwdCB0aGUgYmFzaWMgc3lzdGVtIHR5cGVzLgorCSMgVGhlIHBvcnRhYmxlIHN5c3RlbXMgY29tZXMgZmlyc3QuCisJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KKwkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCisJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAorCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLWNuayogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwKKwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLWF1cm9yYXV4KiB8IC1zb2xhcmlzKiBcCisJICAgICAgfCAtc3ltKiB8IC1rb3BlbnNvbGFyaXMqIFwKKwkgICAgICB8IC1hbWlnYW9zKiB8IC1hbWlnYWRvcyogfCAtbXNkb3MqIHwgLW5ld3NvcyogfCAtdW5pY29zKiB8IC1hb2YqIFwKKwkgICAgICB8IC1hb3MqIHwgLWFyb3MqIFwKKwkgICAgICB8IC1uaW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12cyogXAorCSAgICAgIHwgLWNsaXgqIHwgLXJpc2NvcyogfCAtdW5pcGx1cyogfCAtaXJpcyogfCAtcnR1KiB8IC14ZW5peCogXAorCSAgICAgIHwgLWhpdXgqIHwgLTM4NmJzZCogfCAta25ldGJzZCogfCAtbWlyYnNkKiB8IC1uZXRic2QqIFwKKwkgICAgICB8IC1vcGVuYnNkKiB8IC1zb2xpZGJzZCogXAorCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKKwkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCisJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIFwKKwkgICAgICB8IC1jeWd3aW4qIHwgLW1zeXMqIHwgLXBlKiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCisJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCisJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKKwkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKKwkgICAgICB8IC1zdG9ybS1jaGFvcyogfCAtdG9wczEwKiB8IC10ZW5leCogfCAtdG9wczIwKiB8IC1pdHMqIFwKKwkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCisJICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3ZhKiB8IC13aW5kaXNzKiBcCisJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1ueDcgfCAtc2VpKiB8IC1kcmFnb25mbHkqIFwKKwkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyopCisJIyBSZW1lbWJlciwgZWFjaCBhbHRlcm5hdGl2ZSBNVVNUIEVORCBJTiAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCQk7OworCS1xbngqKQorCQljYXNlICRiYXNpY19tYWNoaW5lIGluCisJCSAgICB4ODYtKiB8IGkqODYtKikKKwkJCTs7CisJCSAgICAqKQorCQkJb3M9LW50byRvcworCQkJOzsKKwkJZXNhYworCQk7OworCS1udG8tcW54KikKKwkJOzsKKwktbnRvKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50b3xudG8tcW54fCdgCisJCTs7CisJLXNpbSB8IC1lczE4MDAqIHwgLWhtcyogfCAteHJheSB8IC1vczY4ayogfCAtbm9uZSogfCAtdjg4ciogXAorCSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1hYnVnIHwgLW5ldHdhcmUqIHwgLW9zOSogfCAtYmVvcyogfCAtaGFpa3UqIFwKKwkgICAgICB8IC1tYWNvcyogfCAtbXB3KiB8IC1tYWdpYyogfCAtbW1peHdhcmUqIHwgLW1vbjk2MCogfCAtbG5ld3MqKQorCQk7OworCS1tYWMqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bWFjfG1hY29zfCdgCisJCTs7CisJLWxpbnV4LWRpZXRsaWJjKQorCQlvcz0tbGludXgtZGlldGxpYmMKKwkJOzsKKwktbGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bGludXh8bGludXgtZ251fCdgCisJCTs7CisJLXN1bm9zNSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzdW5vczV8c29sYXJpczJ8J2AKKwkJOzsKKwktc3Vub3M2KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNnxzb2xhcmlzM3wnYAorCQk7OworCS1vcGVuZWQqKQorCQlvcz0tb3BlbmVkaXRpb24KKwkJOzsKKwktb3M0MDAqKQorCQlvcz0tb3M0MDAKKwkJOzsKKwktd2luY2UqKQorCQlvcz0td2luY2UKKwkJOzsKKwktb3Nmcm9zZSopCisJCW9zPS1vc2Zyb3NlCisJCTs7CisJLW9zZiopCisJCW9zPS1vc2YKKwkJOzsKKwktdXRlayopCisJCW9zPS1ic2QKKwkJOzsKKwktZHluaXgqKQorCQlvcz0tYnNkCisJCTs7CisJLWFjaXMqKQorCQlvcz0tYW9zCisJCTs7CisJLWF0aGVvcyopCisJCW9zPS1hdGhlb3MKKwkJOzsKKwktc3lsbGFibGUqKQorCQlvcz0tc3lsbGFibGUKKwkJOzsKKwktMzg2YnNkKQorCQlvcz0tYnNkCisJCTs7CisJLWN0aXgqIHwgLXV0cyopCisJCW9zPS1zeXN2CisJCTs7CisJLW5vdmEqKQorCQlvcz0tcnRtay1ub3ZhCisJCTs7CisJLW5zMiApCisJCW9zPS1uZXh0c3RlcDIKKwkJOzsKKwktbnNrKikKKwkJb3M9LW5zaworCQk7OworCSMgUHJlc2VydmUgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHNpbml4NS4KKwktc2luaXg1LiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzaW5peHxzeXN2fCdgCisJCTs7CisJLXNpbml4KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXRwZiopCisJCW9zPS10cGYKKwkJOzsKKwktdHJpdG9uKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLW9zcyopCisJCW9zPS1zeXN2MworCQk7OworCS1zdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwktc3ZyMykKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN5c3ZyNCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJIyBUaGlzIG11c3QgY29tZSBhZnRlciAtc3lzdnI0LgorCS1zeXN2KikKKwkJOzsKKwktb3NlKikKKwkJb3M9LW9zZQorCQk7OworCS1lczE4MDAqKQorCQlvcz0tb3NlCisJCTs7CisJLXhlbml4KQorCQlvcz0teGVuaXgKKwkJOzsKKwktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQlvcz0tbWludAorCQk7OworCS1hcm9zKikKKwkJb3M9LWFyb3MKKwkJOzsKKwkta2FvcyopCisJCW9zPS1rYW9zCisJCTs7CisJLXp2bW9lKQorCQlvcz0tenZtb2UKKwkJOzsKKwktZGljb3MqKQorCQlvcz0tZGljb3MKKwkJOzsKKwktbmFjbCopCisJCTs7CisJLW5vbmUpCisJCTs7CisJKikKKwkJIyBHZXQgcmlkIG9mIHRoZSBgLScgYXQgdGhlIGJlZ2lubmluZyBvZiAkb3MuCisJCW9zPWBlY2hvICRvcyB8IHNlZCAncy9bXi1dKi0vLydgCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogc3lzdGVtIFxgJG9zXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKK2Vsc2UKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IGNvbWUgd2l0aCB2YXJpb3VzIG1hY2hpbmVzLgorIyBUaGUgdmFsdWUgc2hvdWxkIGJlIHdoYXQgdGhlIHZlbmRvciBjdXJyZW50bHkgc2hpcHMgb3V0IHRoZSBkb29yIHdpdGggdGhlaXIKKyMgbWFjaGluZSBvciBwdXQgYW5vdGhlciB3YXksIHRoZSBtb3N0IHBvcHVsYXIgb3MgcHJvdmlkZWQgd2l0aCB0aGUgbWFjaGluZS4KKworIyBOb3RlIHRoYXQgaWYgeW91J3JlIGdvaW5nIHRvIHRyeSB0byBtYXRjaCAiLU1BTlVGQUNUVVJFUiIgaGVyZSAoc2F5LAorIyAiLXN1biIpLCB0aGVuIHlvdSBoYXZlIHRvIHRlbGwgdGhlIGNhc2Ugc3RhdGVtZW50IHVwIHRvd2FyZHMgdGhlIHRvcAorIyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcgc3lzdGVtLiAgT3RoZXJ3aXNlLCBjb2RlIGFib3ZlCisjIHdpbGwgc2lnbmFsIGFuIGVycm9yIHNheWluZyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcKKyMgc3lzdGVtLCBhbmQgd2UnbGwgbmV2ZXIgZ2V0IHRvIHRoaXMgcG9pbnQuCisKK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwlzY29yZS0qKQorCQlvcz0tZWxmCisJCTs7CisJc3B1LSopCisJCW9zPS1lbGYKKwkJOzsKKwkqLWFjb3JuKQorCQlvcz0tcmlzY2l4MS4yCisJCTs7CisJYXJtKi1yZWJlbCkKKwkJb3M9LWxpbnV4CisJCTs7CisJYXJtKi1zZW1pKQorCQlvcz0tYW91dAorCQk7OworCWM0eC0qIHwgdGljNHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM2eC0qKQorCQlvcz0tY29mZgorCQk7OworCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBlbnRyeS4KKwlwZHAxMC0qKQorCQlvcz0tdG9wczIwCisJCTs7CisJcGRwMTEtKikKKwkJb3M9LW5vbmUKKwkJOzsKKwkqLWRlYyB8IHZheC0qKQorCQlvcz0tdWx0cml4NC4yCisJCTs7CisJbTY4Ki1hcG9sbG8pCisJCW9zPS1kb21haW4KKwkJOzsKKwlpMzg2LXN1bikKKwkJb3M9LXN1bm9zNC4wLjIKKwkJOzsKKwltNjgwMDAtc3VuKQorCQlvcz0tc3Vub3MzCisJCTs7CisJbTY4Ki1jaXNjbykKKwkJb3M9LWFvdXQKKwkJOzsKKwltZXAtKikKKwkJb3M9LWVsZgorCQk7OworCW1pcHMqLWNpc2NvKQorCQlvcz0tZWxmCisJCTs7CisJbWlwcyotKikKKwkJb3M9LWVsZgorCQk7OworCW9yMzItKikKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLXR0aSkJIyBtdXN0IGJlIGJlZm9yZSBzcGFyYyBlbnRyeSBvciB3ZSBnZXQgdGhlIHdyb25nIG9zLgorCQlvcz0tc3lzdjMKKwkJOzsKKwlzcGFyYy0qIHwgKi1zdW4pCisJCW9zPS1zdW5vczQuMS4xCisJCTs7CisJKi1iZSkKKwkJb3M9LWJlb3MKKwkJOzsKKwkqLWhhaWt1KQorCQlvcz0taGFpa3UKKwkJOzsKKwkqLWlibSkKKwkJb3M9LWFpeAorCQk7OworCSota251dGgpCisJCW9zPS1tbWl4d2FyZQorCQk7OworCSotd2VjKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi13aW5ib25kKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1va2kpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLWhwKQorCQlvcz0taHB1eAorCQk7OworCSotaGl0YWNoaSkKKwkJb3M9LWhpdXgKKwkJOzsKKwlpODYwLSogfCAqLWF0dCB8ICotbmNyIHwgKi1hbHRvcyB8ICotbW90b3JvbGEgfCAqLWNvbnZlcmdlbnQpCisJCW9zPS1zeXN2CisJCTs7CisJKi1jYm0pCisJCW9zPS1hbWlnYW9zCisJCTs7CisJKi1kZykKKwkJb3M9LWRndXgKKwkJOzsKKwkqLWRvbHBoaW4pCisJCW9zPS1zeXN2MworCQk7OworCW02OGstY2N1cikKKwkJb3M9LXJ0dQorCQk7OworCW04OGstb21yb24qKQorCQlvcz0tbHVuYQorCQk7OworCSotbmV4dCApCisJCW9zPS1uZXh0c3RlcAorCQk7OworCSotc2VxdWVudCkKKwkJb3M9LXB0eAorCQk7OworCSotY3JkcykKKwkJb3M9LXVub3MKKwkJOzsKKwkqLW5zKQorCQlvcz0tZ2VuaXgKKwkJOzsKKwlpMzcwLSopCisJCW9zPS1tdnMKKwkJOzsKKwkqLW5leHQpCisJCW9zPS1uZXh0c3RlcDMKKwkJOzsKKwkqLWdvdWxkKQorCQlvcz0tc3lzdgorCQk7OworCSotaGlnaGxldmVsKQorCQlvcz0tYnNkCisJCTs7CisJKi1lbmNvcmUpCisJCW9zPS1ic2QKKwkJOzsKKwkqLXNnaSkKKwkJb3M9LWlyaXgKKwkJOzsKKwkqLXNpZW1lbnMpCisJCW9zPS1zeXN2NAorCQk7OworCSotbWFzc2NvbXApCisJCW9zPS1ydHUKKwkJOzsKKwlmMzBbMDFdLWZ1aml0c3UgfCBmNzAwLWZ1aml0c3UpCisJCW9zPS11eHB2CisJCTs7CisJKi1yb202OGspCisJCW9zPS1jb2ZmCisJCTs7CisJKi0qYnVnKQorCQlvcz0tY29mZgorCQk7OworCSotYXBwbGUpCisJCW9zPS1tYWNvcworCQk7OworCSotYXRhcmkqKQorCQlvcz0tbWludAorCQk7OworCSopCisJCW9zPS1ub25lCisJCTs7Citlc2FjCitmaQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGtub3cgdGhlIG9zLCBhbmQgdGhlIENQVSB0eXBlLCBidXQgbm90IHRoZQorIyBtYW51ZmFjdHVyZXIuICBXZSBwaWNrIHRoZSBsb2dpY2FsIG1hbnVmYWN0dXJlci4KK3ZlbmRvcj11bmtub3duCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi11bmtub3duKQorCQljYXNlICRvcyBpbgorCQkJLXJpc2NpeCopCisJCQkJdmVuZG9yPWFjb3JuCisJCQkJOzsKKwkJCS1zdW5vcyopCisJCQkJdmVuZG9yPXN1bgorCQkJCTs7CisJCQktY25rKnwtYWl4KikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1iZW9zKikKKwkJCQl2ZW5kb3I9YmUKKwkJCQk7OworCQkJLWhwdXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktbXBlaXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktaGl1eCopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLXVub3MqKQorCQkJCXZlbmRvcj1jcmRzCisJCQkJOzsKKwkJCS1kZ3V4KikKKwkJCQl2ZW5kb3I9ZGcKKwkJCQk7OworCQkJLWx1bmEqKQorCQkJCXZlbmRvcj1vbXJvbgorCQkJCTs7CisJCQktZ2VuaXgqKQorCQkJCXZlbmRvcj1ucworCQkJCTs7CisJCQktbXZzKiB8IC1vcGVuZWQqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLW9zNDAwKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1wdHgqKQorCQkJCXZlbmRvcj1zZXF1ZW50CisJCQkJOzsKKwkJCS10cGYqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC13aW5kaXNzKikKKwkJCQl2ZW5kb3I9d3JzCisJCQkJOzsKKwkJCS1hdXgqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktaG1zKikKKwkJCQl2ZW5kb3I9aGl0YWNoaQorCQkJCTs7CisJCQktbXB3KiB8IC1tYWNvcyopCisJCQkJdmVuZG9yPWFwcGxlCisJCQkJOzsKKwkJCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCQkJdmVuZG9yPWF0YXJpCisJCQkJOzsKKwkJCS12b3MqKQorCQkJCXZlbmRvcj1zdHJhdHVzCisJCQkJOzsKKwkJZXNhYworCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICJzL3Vua25vd24vJHZlbmRvci8iYAorCQk7OworZXNhYworCitlY2hvICRiYXNpY19tYWNoaW5lJG9zCitleGl0CisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVuZDoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA3MDhhMGUxLi4zZGQxNzNiIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDcgKzEsNiBAQAogIyEgL2Jpbi9zaAotIyBGcm9tIGNvbmZpZ3VyZS5hYyBSZXZpc2lvbi4KICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4IGZvciBweXRob24gMy4yLgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjggZm9yIHB5dGhvbiAzLjMuCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxodHRwOi8vYnVncy5weXRob24ub3JnLz4uCiAjCkBAIC01NjEsOCArNTYwLDggQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdweXRob24nCiBQQUNLQUdFX1RBUk5BTUU9J3B5dGhvbicKLVBBQ0tBR0VfVkVSU0lPTj0nMy4yJwotUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjInCitQQUNLQUdFX1ZFUlNJT049JzMuMycKK1BBQ0tBR0VfU1RSSU5HPSdweXRob24gMy4zJwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHA6Ly9idWdzLnB5dGhvbi5vcmcvJwogUEFDS0FHRV9VUkw9JycKIApAQCAtNjQ3LDEzICs2NDYsMTAgQEAKIElOU1RBTExfUFJPR1JBTQogUFlUSE9OCiBBU0RMR0VOCi1IQVNfSEcKLUhHQlJBTkNICi1IR1RBRwotSEdWRVJTSU9OCi1CQVNFQ1BQRkxBR1MKLVNWTlZFUlNJT04KK2FjX2N0X1JFQURFTEYKK1JFQURFTEYKIEFSRkxBR1MKK2FjX2N0X0FSCiBBUgogUkFOTElCCiBVU0VfSU5MSU5FCkBAIC02NzMsNiArNjY5LDcgQEAKIEdSRVAKIENQUAogTk9fQVNfTkVFREVECithY19jdF9DWFgKIE1BSU5DQwogQ1hYCiBPQkpFWFQKQEAgLTY4NSw2ICs2ODIsNyBAQAogRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogU0dJX0FCSQorX1BZVEhPTl9IT1NUX1BMQVRGT1JNCiBNQUNIREVQCiBGUkFNRVdPUktJTlNUQUxMQVBQU1BSRUZJWAogRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYCkBAIC03MDMsNiArNzAxLDIwIEBACiBDT05GSUdfQVJHUwogU09WRVJTSU9OCiBWRVJTSU9OCitQWVRIT05fRk9SX0JVSUxECitob3N0X29zCitob3N0X3ZlbmRvcgoraG9zdF9jcHUKK2hvc3QKK2J1aWxkX29zCitidWlsZF92ZW5kb3IKK2J1aWxkX2NwdQorYnVpbGQKK0hBU19IRworSEdCUkFOQ0gKK0hHVEFHCitIR1ZFUlNJT04KK0JBU0VDUFBGTEFHUwogdGFyZ2V0X2FsaWFzCiBob3N0X2FsaWFzCiBidWlsZF9hbGlhcwpAQCAtNzU3LDEwICs3NjksMTAgQEAKIHdpdGhfbGlicwogd2l0aF9zeXN0ZW1fZXhwYXQKIHdpdGhfc3lzdGVtX2ZmaQord2l0aF9zeXN0ZW1fbGlibXBkZWMKIGVuYWJsZV9sb2FkYWJsZV9zcWxpdGVfZXh0ZW5zaW9ucwogd2l0aF9kYm1saWJvcmRlcgogd2l0aF9zaWduYWxfbW9kdWxlCi13aXRoX2RlY190aHJlYWRzCiB3aXRoX3RocmVhZHMKIHdpdGhfdGhyZWFkCiBlbmFibGVfaXB2NgpAQCAtNzcyLDcgKzc4NCw2IEBACiB3aXRoX2xpYm0KIHdpdGhfbGliYwogZW5hYmxlX2JpZ19kaWdpdHMKLXdpdGhfd2lkZV91bmljb2RlCiB3aXRoX2NvbXB1dGVkX2dvdG9zCiAnCiAgICAgICBhY19wcmVjaW91c192YXJzPSdidWlsZF9hbGlhcwpAQCAtMTMyNiw3ICsxMzM3LDcgQEAKICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCiAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KICAgY2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy4yIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjMgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgogCiBVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KIApAQCAtMTM4MiwxMiArMTM5MywxNiBAQAogX0FDRU9GCiAKICAgY2F0IDw8XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisgIC0taG9zdD1IT1NUICAgICAgIGNyb3NzLWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQogX0FDRU9GCiBmaQogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjI6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy4zOiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTEzOTYsNyArMTQxMSw3IEBACiAgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKICAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQogICAtLWVuYWJsZS11bml2ZXJzYWxzZGtbPVNES0RJUl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgYWdhaW5zdCBNYWMgT1MgWCAxMC40dSBTREsgKHBwYy9pMzg2KQorICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBmYXQgYmluYXJ5IGFnYWluc3QgTWFjIE9TIFggU0RLCiAgIC0tZW5hYmxlLWZyYW1ld29ya1s9SU5TVEFMTERJUl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgKE1hY09TWHxEYXJ3aW4pIGZyYW1ld29yawogICAtLWVuYWJsZS1zaGFyZWQgICAgICAgICBkaXNhYmxlL2VuYWJsZSBidWlsZGluZyBzaGFyZWQgcHl0aG9uIGxpYnJhcnkKQEAgLTE0MjcsMTIgKzE0NDIsMTMgQEAKICAgLS13aXRoLXN5c3RlbS1leHBhdCAgICAgYnVpbGQgcHlleHBhdCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGV4cGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKICAgLS13aXRoLXN5c3RlbS1mZmkgICAgICAgYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5CisgIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgIGJ1aWxkIF9kZWNpbWFsIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgbGlibXBkZWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQogICAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgogICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCi0gIC0td2l0aC1kZWMtdGhyZWFkcyAgICAgIHVzZSBERUMgQWxwaGEvT1NGMSB0aHJlYWQtc2FmZSBsaWJyYXJpZXMKICAgLS13aXRoKG91dCktdGhyZWFkc1s9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlL2VuYWJsZSB0aHJlYWQgc3VwcG9ydAogICAtLXdpdGgob3V0KS10aHJlYWRbPURJUkVDVE9SWV0KQEAgLTE0NDQsNyArMTQ2MCw2IEBACiAgIC0td2l0aC1mcGVjdGwgICAgICAgICAgIGVuYWJsZSBTSUdGUEUgY2F0Y2hpbmcKICAgLS13aXRoLWxpYm09U1RSSU5HICAgICAgbWF0aCBsaWJyYXJ5CiAgIC0td2l0aC1saWJjPVNUUklORyAgICAgIEMgbGlicmFyeQotICAtLXdpdGgtd2lkZS11bmljb2RlICAgICBVc2UgNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycyAoZGVmYXVsdCBpcyAyIGJ5dGVzKQogICAtLXdpdGgob3V0KS1jb21wdXRlZC1nb3RvcwogICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgY29tcHV0ZWQgZ290b3MgaW4gZXZhbHVhdGlvbiBsb29wIChlbmFibGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgb24gc3VwcG9ydGVkIGNvbXBpbGVycykKQEAgLTE1MjUsNyArMTU0MCw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjIKK3B5dGhvbiBjb25maWd1cmUgMy4zCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgKIAogQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjM1Niw3ICsyMzcxLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMiwgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0yNzA1LDkgKzI3MjAsMjA4IEBACiAKIAogCisKK2lmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KKyAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCisgICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCisgICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKKyAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCisgICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCisgICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQorICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKKyAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCisgICAgIyAgb2ZmLikKKyAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCitlbHNlCisgICAgQkFTRUNQUEZMQUdTPSIiCitmaQorCisKKworCisKK2lmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKK3RoZW4KKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaGciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGhnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfSEFTX0hHIiAmJiBhY19jdl9wcm9nX0hBU19IRz0ibm90LWZvdW5kIgorZmkKK2ZpCitIQVNfSEc9JGFjX2N2X3Byb2dfSEFTX0hHCitpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEhBU19IRyIgPiY1CiskYXNfZWNobyAiJEhBU19IRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKKwogYWNfY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVhZGVycyBweWNvbmZpZy5oIgogCiAKK2FjX2F1eF9kaXI9Citmb3IgYWNfZGlyIGluICIkc3JjZGlyIiAiJHNyY2Rpci8uLiIgIiRzcmNkaXIvLi4vLi4iOyBkbworICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2lmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQorZmkKKworIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCisjIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3RvcnkKKyMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KK2FjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorCisKKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhY19idWlsZF9hbGlhcz1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2J1aWxkIGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OworZXNhYworYnVpbGQ9JGFjX2N2X2J1aWxkCithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfYnVpbGQKK3NoaWZ0CitidWlsZF9jcHU9JDEKK2J1aWxkX3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2J1aWxkX29zPSQqCitJRlM9JGFjX3NhdmVfSUZTCitjYXNlICRidWlsZF9vcyBpbiAqXCAqKSBidWlsZF9vcz1gZWNobyAiJGJ1aWxkX29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hvc3QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgorICBhY19jdl9ob3N0PSRhY19jdl9idWlsZAorZWxzZQorICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRob3N0X2FsaWFzYCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9CitjYXNlICRhY19jdl9ob3N0IGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7Citlc2FjCitob3N0PSRhY19jdl9ob3N0CithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfaG9zdAorc2hpZnQKK2hvc3RfY3B1PSQxCitob3N0X3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2hvc3Rfb3M9JCoKK0lGUz0kYWNfc2F2ZV9JRlMKK2Nhc2UgJGhvc3Rfb3MgaW4gKlwgKikgaG9zdF9vcz1gZWNobyAiJGhvc3Rfb3MiIHwgc2VkICdzLyAvLS9nJ2A7OyBlc2FjCisKKworCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGQuLi4gIiA+JjY7IH0KKyAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KKyAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbworCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQorCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywzKSknOyB0aGVuCisJICAgICAgICBicmVhaworCSAgICBmaQorICAgICAgICAgICAgaW50ZXJwPQorCWRvbmUKKyAgICAgICAgaWYgdGVzdCB4JGludGVycCA9IHg7IHRoZW4KKwkgICAgYXNfZm5fZXJyb3IgJD8gInB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kIiAiJExJTkVOTyIgNQorCWZpCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaW50ZXJwIiA+JjUKKyRhc19lY2hvICIkaW50ZXJwIiA+JjY7IH0KKwlQWVRIT05fRk9SX0JVSUxEPSJfUFlUSE9OX1BST0pFQ1RfQkFTRT0kc3JjZGlyIicgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi9wbGF0LSQoTUFDSERFUCkgJyRpbnRlcnAKKyAgICBmaQorZWxzZQorICAgIFBZVEhPTl9GT1JfQlVJTEQ9Jy4vJChCVUlMRFBZVEhPTikgLUUnCitmaQorCisKIAogaWYgdGVzdCAiJHByZWZpeCIgIT0gIi8iOyB0aGVuCiAgICAgcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAtZSAncy9cLyQvL2cnYApAQCAtMjcyMyw3ICsyOTM3LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuMgorVkVSU0lPTj0zLjMKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtMjc3NiwxMCArMjk5MCwxNiBAQAogICBlbmFibGV2YWw9JGVuYWJsZV91bml2ZXJzYWxzZGs7CiAJY2FzZSAkZW5hYmxldmFsIGluCiAJeWVzKQotCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkawotCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJIyBMb2NhdGUgdGhlIGJlc3QgdXNhYmxlIFNESywgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJCSMgaW5mb3JtYXRpb24KKwkJZW5hYmxldmFsPSJgL3Vzci9iaW4veGNvZGVidWlsZCAtdmVyc2lvbiAtc2RrIG1hY29zeCBQYXRoIDI+L2Rldi9udWxsYCIKKwkJaWYgdGVzdCAteiAiJHtlbmFibGV2YWx9IgogCQl0aGVuCi0JCQllbmFibGV2YWw9LworCQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKKwkJCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkJdGhlbgorCQkJCWVuYWJsZXZhbD0vCisJCQlmaQogCQlmaQogCQk7OwogCWVzYWMKQEAgLTI4MTcsNyArMzAzNywyMCBAQAogCiAKIAorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zIHdlIHByZWZlciB0byBzZWxlY3QgJzMyLWJpdCcgaWYgYXZhaWxhYmxlLAorIyBvdGhlcndpc2UgdXNlICdpbnRlbCcKIFVOSVZFUlNBTF9BUkNIUz0iMzItYml0IgoraWYgdGVzdCAiYHVuYW1lIC1zYCIgPSAiRGFyd2luIgordGhlbgorCWlmIHRlc3QgLW4gIiR7VU5JVkVSU0FMU0RLfSIKKwl0aGVuCisJCWlmIHRlc3QgLXogImAvdXNyL2Jpbi9maWxlICIke1VOSVZFUlNBTFNES30vdXNyL2xpYi9saWJTeXN0ZW0uZHlsaWIiIHwgZ3JlcCBwcGNgIgorCQl0aGVuCisJCQlVTklWRVJTQUxfQVJDSFM9ImludGVsIgorCQlmaQorCWZpCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC11bml2ZXJzYWwtYXJjaHMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC11bml2ZXJzYWwtYXJjaHMuLi4gIiA+JjY7IH0KQEAgLTI4MzEsOCArMzA2NCw4IEBACiAKIGVsc2UKIAotIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogMzItYml0IiA+JjUKLSRhc19lY2hvICIzMi1iaXQiID4mNjsgfQorIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtVTklWRVJTQUxfQVJDSFN9IiA+JjUKKyRhc19lY2hvICIke1VOSVZFUlNBTF9BUkNIU30iID4mNjsgfQogCiBmaQogCkBAIC0yOTg1LDYgKzMyMTgsMjUgQEAKICRhc19lY2hvX24gImNoZWNraW5nIE1BQ0hERVAuLi4gIiA+JjY7IH0KIGlmIHRlc3QgLXogIiRNQUNIREVQIgogdGhlbgorICAgICMgYXZvaWQgdXNpbmcgdW5hbWUgZm9yIGNyb3NzIGJ1aWxkcworICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgICAgIyBhY19zeXNfc3lzdGVtIGFuZCBhY19zeXNfcmVsZWFzZSBhcmUgb25seSB1c2VkIGZvciBzZXR0aW5nCisgICAgICAgIyBgZGVmaW5lX3hvcGVuX3NvdXJjZScgaW4gdGhlIGNhc2Ugc3RhdGVtZW50IGJlbG93LiBGb3IgdGhlCisgICAgICAgIyBjdXJyZW50IHN1cHBvcnRlZCBjcm9zcyBidWlsZHMsIHRoaXMgbWFjcm8gaXMgbm90IGFkanVzdGVkLgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWFjX3N5c19zeXN0ZW09TGludXgKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJYWNfc3lzX3N5c3RlbT1DeWd3aW4KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlhc19mbl9lcnJvciAkPyAiY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3QiICIkTElORU5PIiA1CisJZXNhYworCWFjX3N5c19yZWxlYXNlPQorICAgIGVsc2UKIAlhY19zeXNfc3lzdGVtPWB1bmFtZSAtc2AKIAlpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiQUlYIiBcCiAJLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJVbml4V2FyZSIgLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJPcGVuVU5JWCI7IHRoZW4KQEAgLTI5OTIsMTkgKzMyNDQsNDMgQEAKIAllbHNlCiAJCWFjX3N5c19yZWxlYXNlPWB1bmFtZSAtcmAKIAlmaQotCWFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8Ci0JCQkgICB0ciAtZCAnLyAnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYAotCWFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKLQkJCSAgIHRyIC1kICcvICcgfCBzZWQgJ3MvXltBLVpdXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKLQlNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCisgICAgZmkKKyAgICBhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAorCQkJdHIgLWQgJy8gJyB8IHRyICdbQS1aXScgJ1thLXpdJ2AKKyAgICBhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8CisJCQl0ciAtZCAnLyAnIHwgc2VkICdzL15bQS1aXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCisgICAgTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgogCi0JY2FzZSAkTUFDSERFUCBpbgotCWxpbnV4KikgTUFDSERFUD0ibGludXgyIjs7CisgICAgY2FzZSAkTUFDSERFUCBpbgorCWxpbnV4KikgTUFDSERFUD0ibGludXgiOzsKIAljeWd3aW4qKSBNQUNIREVQPSJjeWd3aW4iOzsKIAlkYXJ3aW4qKSBNQUNIREVQPSJkYXJ3aW4iOzsKLSAgICAgICAgaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKKwlpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OwogCScnKQlNQUNIREVQPSJ1bmtub3duIjs7CisgICAgZXNhYworZmkKKworCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWNhc2UgIiRob3N0X2NwdSIgaW4KKwkJYXJtKikKKwkJCV9ob3N0X2NwdT1hcm0KKwkJCTs7CisJCSopCisJCQlfaG9zdF9jcHU9JGhvc3RfY3B1CisJCWVzYWMKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJX2hvc3RfY3B1PQorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCWFzX2ZuX2Vycm9yICQ/ICJjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdCIgIiRMSU5FTk8iIDUKIAllc2FjCisJX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSIkTUFDSERFUCR7X2hvc3RfY3B1OistJF9ob3N0X2NwdX0iCiBmaQogCiAjIFNvbWUgc3lzdGVtcyBjYW5ub3Qgc3RhbmQgX1hPUEVOX1NPVVJDRSBiZWluZyBkZWZpbmVkIGF0IGFsbDsgdGhleQpAQCAtMzA5NSw4ICszMzcxLDkgQEAKIAogaWYgdGVzdCAkZGVmaW5lX3hvcGVuX3NvdXJjZSA9IHllcwogdGhlbgorICAjIFgvT3BlbiA3LCBpbmNvcnBvcmF0aW5nIFBPU0lYLjEtMjAwOAogCi0kYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMCIgPj5jb25mZGVmcy5oCiskYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDcwMCIgPj5jb25mZGVmcy5oCiAKIAogICAjIE9uIFRydTY0IFVuaXggNC4wRiwgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRSBhbHNvIHJlcXVpcmVzCkBAIC0zMTA4LDggKzMzODUsNyBAQAogCiAKIAotJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDExMkwiID4+Y29uZmRlZnMuaAotCiskYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TCIgPj5jb25mZGVmcy5oCiAKIGZpCiAKQEAgLTMxNDAsMTIgKzM0MTYsNiBAQAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0KIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JyMnCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgbWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIG1hY2hpbmUgdHlwZSBhcyByZXBvcnRlZCBieSB1bmFtZSAtbS4uLiAiID4mNjsgfQotYWNfc3lzX21hY2hpbmU9YHVuYW1lIC1tYAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19zeXNfbWFjaGluZSIgPiY1Ci0kYXNfZWNobyAiJGFjX3N5c19tYWNoaW5lIiA+JjY7IH0KLQogIyBjaGVja3MgZm9yIGFsdGVybmF0aXZlIHByb2dyYW1zCiAKICMgY29tcGlsZXIgZmxhZ3MgYXJlIGdlbmVyYXRlZCBpbiB0d28gc2V0cywgQkFTRUNGTEFHUyBhbmQgT1BULiAgT1BUIGlzIGp1c3QKQEAgLTMxOTUsNiArMzQ2NSw2NiBAQAogaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KICAgICAgICAgQ0ZMQUdTPQogZmkKKworaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkRhcndpbiIKK3RoZW4KKwkjIENvbXBpbGVyIHNlbGVjdGlvbiBvbiBNYWNPU1ggaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuCisJIyBBQ19QUk9HX0NDIGNhbiBoYW5kbGUsIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCSMgaW5mb3JtYXRpb24KKwlpZiB0ZXN0IC16ICIke0NDfSIKKwl0aGVuCisJCWZvdW5kX2djYz0KKwkJZm91bmRfY2xhbmc9CisJCWFzX3NhdmVfSUZTPSRJRlM7IElGUz06CisJCWZvciBhc19kaXIgaW4gJFBBVEgKKwkJZG8KKwkJCUlGUz0kYXNfc2F2ZV9JRlMKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9nY2M7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2djY30iOyB0aGVuCisJCQkJCWZvdW5kX2djYz0kYXNfZGlyL2djYworCQkJCWZpCisJCQlmaQorCQkJaWYgdGVzdCAteCAkYXNfZGlyL2NsYW5nOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9jbGFuZ30iOyB0aGVuCisJCQkJCWZvdW5kX2NsYW5nPSRhc19kaXIvY2xhbmcKKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCQlJRlM9JGFzX3NhdmVfSUZTCisKKwkJaWYgdGVzdCAtbiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJaWYgdGVzdCAtbiAiYCIkZm91bmRfZ2NjIiAtLXZlcnNpb24gfCBncmVwIGxsdm0tZ2NjYCIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IERldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmciID4mNQorJGFzX2VjaG8gIiRhc19tZTogRGV0ZWN0ZWQgbGx2bS1nY2MsIGZhbGxpbmcgYmFjayB0byBjbGFuZyIgPiY2O30KKwkJCQlDQz0iJGZvdW5kX2NsYW5nIgorCQkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisJCQlmaQorCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjY7fQorCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAteiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlmb3VuZF9jbGFuZz1gL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcgMj4vZGV2L251bGxgCisJCQlpZiB0ZXN0IC1uICIke2ZvdW5kX2NsYW5nfSIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjY7fQorCQkJCUNDPSIke2ZvdW5kX2NsYW5nfSIKKwkJCQlDWFg9ImAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZysrYCIKKworCQkJIyBlbHNlOiB1c2UgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWZpCisJCWZpCisJZmkKK2ZpCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTQwMjEsMTYgKzQzNTEsNjAgQEAKIGlmIHRlc3QgLXogIiRDWFgiCiB0aGVuCiAgICAgICAgIGNhc2UgIiRDQyIgaW4KLSAgICAgICAgZ2NjKSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgICAgICAgIGdjYykgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGcrKzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBjYXNlICRDWFggaW4KKyAgY2FzZSAkYWNfcHRfQ1hYIGluCiAgIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICAgOzsKICAgKikKICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtNDA0MCw3ICs0NDE0LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTQwNDgsMjIgKzQ0MjIsMzYgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCIgJiYgYWNfY3ZfcGF0aF9DWFg9ImcrKyIKICAgOzsKIGVzYWMKIGZpCi1DWFg9JGFjX2N2X3BhdGhfQ1hYCi1pZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENYWCIgPiY1Ci0kYXNfZWNobyAiJENYWCIgPiY2OyB9CithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAorICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJnKysiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ1hYPSRhY19wdF9DWFgKKyAgZmkKK2Vsc2UKKyAgQ1hYPSIkYWNfY3ZfcGF0aF9DWFgiCitmaQogIDs7Ci0gICAgICAgIGNjKSAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGMrKzsgYWNfd29yZD0kMgorICAgICAgICBjYykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWMrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jKys7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CkBAIC00MDg5LDcgKzQ0NzcsNiBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIiAmJiBhY19jdl9wYXRoX0NYWD0iYysrIgogICA7OwogZXNhYwogZmkKQEAgLTQxMDIsNiArNDQ4OSwxNjEgQEAKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiOyB0aGVuCisgIGFjX3B0X0NYWD0kQ1hYCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjKys7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2FjX3B0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X0NYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhY19wdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK2FjX3B0X0NYWD0kYWNfY3ZfcGF0aF9hY19wdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19wdF9DWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfQ1hYIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfcHRfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9ImMrKyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX3B0X0NYWAorICBmaQorZWxzZQorICBDWFg9IiRhY19jdl9wYXRoX0NYWCIKK2ZpCisgOzsKKyAgICAgICAgY2xhbmd8Ki9jbGFuZykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNsYW5nKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2xhbmcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjbGFuZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjbGFuZysrOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9DWFggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiBub3Rmb3VuZAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJjbGFuZysrIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfcHRfQ1hYCisgIGZpCitlbHNlCisgIENYWD0iJGFjX2N2X3BhdGhfQ1hYIgorZmkKICA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCkBAIC00MTExLDEwICs0NjUzLDExIEBACiBmaQogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KLQlmb3IgYWNfcHJvZyBpbiAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsCi1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19DWFgrOn0gZmFsc2U7IHRoZW4gOgpAQCAtNDEzMCw3ICs0NjczLDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfQ1hYPSIkYWNfcHJvZyIKKyAgICBhY19jdl9wcm9nX0NYWD0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNDE1MCw5ICs0NjkzLDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJENYWCIgJiYgYnJlYWsKKyAgICB0ZXN0IC1uICIkQ1hYIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJENYWCI7IHRoZW4KKyAgYWNfY3RfQ1hYPSRDWFgKKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DWFgiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfY3RfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCiBkb25lCi10ZXN0IC1uICIkQ1hYIiB8fCBDWFg9Im5vdGZvdW5kIgorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ1hYPSRhY19jdl9wcm9nX2FjX2N0X0NYWAoraWYgdGVzdCAtbiAiJGFjX2N0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQ1hYIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgIngkYWNfY3RfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9Im5vdGZvdW5kIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfY3RfQ1hYCisgIGZpCitmaQogCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNDg5MiwzNyArNTQ5MSwzNSBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0tZW5hYmxlLXByb2ZpbGluZy4uLiAiID4mNjsgfQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXByb2ZpbGluZyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9wcm9maWxpbmcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7IGFjX3NhdmVfY2M9IiRDQyIKLSBDQz0iJENDIC1wZyIKLSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgotZWxzZQorICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7CitmaQorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBhY19zYXZlX2NjPSIkQ0MiCisgIENDPSIkKENDKSAtcGciCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGludCBtYWluKCkgeyByZXR1cm4gMDsgfQogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfZW5hYmxlX3Byb2ZpbGluZz0ieWVzIgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorCiBlbHNlCi0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQotcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAotICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0M9IiRhY19zYXZlX2NjIgorZWxzZQorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRlbmFibGVfcHJvZmlsaW5nIiA+JjUKKyRhc19lY2hvICIkZW5hYmxlX3Byb2ZpbGluZyIgPiY2OyB9CiAKLSBDQz0iJGFjX3NhdmVfY2MiCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCisgIExERkxBR1M9Ii1wZyAkTERGTEFHUyIKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfZW5hYmxlX3Byb2ZpbGluZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2VuYWJsZV9wcm9maWxpbmciID4mNjsgfQotCi1jYXNlICIkYWNfZW5hYmxlX3Byb2ZpbGluZyIgaW4KLSAgICAieWVzIikKLQlCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCi0JTERGTEFHUz0iLXBnICRMREZMQUdTIgotICAgIDs7Ci1lc2FjCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgTERMSUJSQVJZIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIExETElCUkFSWS4uLiAiID4mNjsgfQogCkBAIC00OTg4LDExICs1NTg1LDYgQEAKIAkgIEJMRExJQlJBUlk9Jy1XbCwrYiwkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwogCSAgUlVOU0hBUkVEPVNITElCX1BBVEg9YHB3ZGA6JHtTSExJQl9QQVRIfQogCSAgOzsKLSAgICBPU0YqKQotCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCi0JICBCTERMSUJSQVJZPSctcnBhdGggJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKLQkgIFJVTlNIQVJFRD1MRF9MSUJSQVJZX1BBVEg9YHB3ZGA6JHtMRF9MSUJSQVJZX1BBVEh9Ci0JICA7OwogICAgIERhcndpbiopCiAgICAgCUxETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliJwogCUJMRExJQlJBUlk9Jy1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKQEAgLTUwMTMsNiArNTYwNSwxMCBAQAogICBlc2FjCiBmaQogCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCVJVTlNIQVJFRD0KK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTERMSUJSQVJZIiA+JjUKICRhc19lY2hvICIkTERMSUJSQVJZIiA+JjY7IH0KIApAQCAtNTEwOSwxMCArNTcwNSwxMSBAQAogZmkKIAogCi1mb3IgYWNfcHJvZyBpbiBhciBhYWwKLWRvCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CkBAIC01MTI4LDcgKzU3MjUsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Byb2ciCisgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTE0OCw5ICs1NzQ1LDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgYWNfY3RfQVI9JEFSCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQogZG9uZQotdGVzdCAtbiAiJEFSIiB8fCBBUj0iYXIiCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgoraWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQVIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgQVI9ImFyIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIEFSPSRhY19jdF9BUgorICBmaQorZmkKIAogCiAjIHR3ZWFrIEFSRkxBR1Mgb25seSBpZiB0aGUgdXNlciBkaWRuJ3Qgc2V0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUKQEAgLTUxNjAsMTYgKzU4MTMsMTggQEAKICAgICAgICAgQVJGTEFHUz0icmMiCiBmaQogCi0KLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3ZudmVyc2lvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgc3ZudmVyc2lvbjsgYWNfd29yZD0kMgoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiByZWFkZWxmCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX1NWTlZFUlNJT04rOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkU1ZOVkVSU0lPTiI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSIkU1ZOVkVSU0lPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRSRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX1JFQURFTEY9IiRSRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUxNzgsNyArNTgzMyw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX1NWTlZFUlNJT049ImZvdW5kIgorICAgIGFjX2N2X3Byb2dfUkVBREVMRj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTE4Niw1NyArNTg0MSwzNCBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1ZOVkVSU0lPTiIgJiYgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSJub3QtZm91bmQiCiBmaQogZmkKLVNWTlZFUlNJT049JGFjX2N2X3Byb2dfU1ZOVkVSU0lPTgotaWYgdGVzdCAtbiAiJFNWTlZFUlNJT04iOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU1ZOVkVSU0lPTiIgPiY1Ci0kYXNfZWNobyAiJFNWTlZFUlNJT04iID4mNjsgfQorUkVBREVMRj0kYWNfY3ZfcHJvZ19SRUFERUxGCitpZiB0ZXN0IC1uICIkUkVBREVMRiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFERUxGIiA+JjUKKyRhc19lY2hvICIkUkVBREVMRiIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAogCi1pZiB0ZXN0ICRTVk5WRVJTSU9OID0gZm91bmQKLXRoZW4KLQlTVk5WRVJTSU9OPSJzdm52ZXJzaW9uIFwkKHNyY2RpcikiCi1lbHNlCi0JU1ZOVkVSU0lPTj0iZWNobyBVbnZlcnNpb25lZCBkaXJlY3RvcnkiCisgICAgdGVzdCAtbiAiJFJFQURFTEYiICYmIGJyZWFrCisgIGRvbmUKIGZpCi0KLQotaWYgdGVzdCAiJGFic19zcmNkaXIiICE9ICIkYWJzX2J1aWxkZGlyIjsgdGhlbgotICAgICMgSWYgd2UncmUgYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcKLSAgICAjIHJlc291cmNlcyBnZXQgcGlja2VkIHVwIGJlZm9yZSB0aGVpciAkc3JjZGlyIGNvdW50ZXJwYXJ0cy4KLSAgICAjICAgT2JqZWN0cy8gLT4gdHlwZXNsb3RzLmluYwotICAgICMgICBJbmNsdWRlLyAtPiBQeXRob24tYXN0LmgsIGdyYW1pbml0LmgKLSAgICAjICAgUHl0aG9uLyAgLT4gaW1wb3J0bGliLmgKLSAgICAjIChBIHNpZGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB0aGVzZSByZXNvdXJjZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlCi0gICAgIyAgcmVnZW5lcmF0ZWQgd2hlbiBidWlsZGluZyBvdXQtb2YtdHJlZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdAotICAgICMgIHRoZSAkc3JjZGlyIGNvdW50ZXJwYXJ0IGlzIHVwLXRvLWRhdGUuICBUaGlzIGlzIGFuIGFjY2VwdGFibGUgdHJhZGUKLSAgICAjICBvZmYuKQotICAgIEJBU0VDUFBGTEFHUz0iLUlPYmplY3RzIC1JSW5jbHVkZSAtSVB5dGhvbiIKLWVsc2UKLSAgICBCQVNFQ1BQRkxBR1M9IiIKLWZpCi0KLQotCi0KLQotaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQotdGhlbgotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJoZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgaGc7IGFjX3dvcmQ9JDIKK2lmIHRlc3QgLXogIiRSRUFERUxGIjsgdGhlbgorICBhY19jdF9SRUFERUxGPSRSRUFERUxGCisgIGZvciBhY19wcm9nIGluIHJlYWRlbGYKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgotICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X1JFQURFTEY9IiRhY19jdF9SRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUyNDUsNyArNTg3Nyw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGPSIkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01MjUzLDM0ICs1ODg1LDQ0IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKIAotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19IQVNfSEciICYmIGFjX2N2X3Byb2dfSEFTX0hHPSJub3QtZm91bmQiCiBmaQogZmkKLUhBU19IRz0kYWNfY3ZfcHJvZ19IQVNfSEcKLWlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFTX0hHIiA+JjUKLSRhc19lY2hvICIkSEFTX0hHIiA+JjY7IH0KK2FjX2N0X1JFQURFTEY9JGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRgoraWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfUkVBREVMRiIgPiY1CiskYXNfZWNobyAiJGFjX2N0X1JFQURFTEYiID4mNjsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIAotZWxzZQotSEFTX0hHPW5vLXJlcG9zaXRvcnkKKyAgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9SRUFERUxGIiA9IHg7IHRoZW4KKyAgICBSRUFERUxGPSI6IgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIFJFQURFTEY9JGFjX2N0X1JFQURFTEYKKyAgZmkKIGZpCi1pZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAotdGhlbgotICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKLSAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKLSAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKLWVsc2UKLSAgICBIR1ZFUlNJT049IiIKLSAgICBIR1RBRz0iIgotICAgIEhHQlJBTkNIPSIiCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgY2FzZSAiJFJFQURFTEYiIGluCisJcmVhZGVsZnw6KQorCWFzX2ZuX2Vycm9yICQ/ICJyZWFkZWxmIGZvciB0aGUgaG9zdCBpcyByZXF1aXJlZCBmb3IgY3Jvc3MgYnVpbGRzIiAiJExJTkVOTyIgNQorCTs7CisgICAgZXNhYwogZmkKIAogCisKIGZvciBhY19wcm9nIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob24KIGRvCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpAQCAtNTMzOSwzNSArNTk4MSw2IEBACiAJCUlOU1RBTEw9IiR7c3JjZGlyfS9pbnN0YWxsLXNoIC1jIgogCWZpCiBlc2FjCi1hY19hdXhfZGlyPQotZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KLSAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCi0gICAgYnJlYWsKLSAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotICAgIGJyZWFrCi0gIGZpCi1kb25lCi1pZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKLWZpCi0KLSMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAotIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLgotIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5Ci0jIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCi1hY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLWFjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLQotCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgogIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CkBAIC01NjgxLDEwICs2Mjk0LDUzIEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIKICAgICBmaQogCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZy4uLiAiID4mNjsgfQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcmVzdWx0IC1XZXJyb3IiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgotICAgIGNhc2UgJGFjX3N5c19tYWNoaW5lIGluCisgICAgY2FzZSAkaG9zdCBpbgogICAgICAgICAgYWxwaGEqKQogICAgICAgICAgICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKICAgICAgICAgICAgICAgICA7OwpAQCAtNTc2MCw3ICs2NDE2LDkgQEAKIAkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgogCSAgICAjCiAJICAgIGN1cl90YXJnZXQ9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgc2VkICdzL1woMTBcLlswLTldKlwpLiovXDEvJ2AKLQkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yOyB0aGVuCisJICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMiAmJiBcCisJICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPCcgMTAuNgorCSAgICB0aGVuCiAJCSAgICBjdXJfdGFyZ2V0PTEwLjMKIAkJICAgIGlmIHRlc3QgJHtlbmFibGVfdW5pdmVyc2Fsc2RrfTsgdGhlbgogCQkJICAgIGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiYWxsIjsgdGhlbgpAQCAtNTc5OSw5ICs2NDU3LDYgQEAKIAkgICAgRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nJwogCiAJICAgIDs7Ci0JT1NGKikKLQkgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLW1pZWVlIgotCSAgICA7OwogICAgIGVzYWMKICAgICA7OwogCkBAIC01ODEwLDkgKzY0NjUsNiBAQAogICAgIE9wZW5VTklYKnxVbml4V2FyZSopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLUsgcGVudGl1bSxob3N0LGlubGluZSxsb29wX3Vucm9sbCxhbGxvY2EgIgogCTs7Ci0gICAgT1NGKikKLQlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtaWVlZSAtc3RkIgotICAgIAk7OwogICAgIFNDT19TViopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWJlbGYgLUtpNDg2IC1EU0NPNSIKIAk7OwpAQCAtNjIyMiwxNyArNjg3NCwyMCBAQAogCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGN1cnNlcy5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKLWllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHBvbGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggdGhyZWFkLmggXAoraWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBuY3Vyc2VzLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCi1zeXMvYXVkaW9pby5oIHN5cy9ic2R0dHkuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9sb2FkYXZnLmggXAotc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCi1zeXMvcGFyYW0uaCBzeXMvcG9sbC5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKLXN5cy9zeXNjYWxsLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAotc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIGxpYnV0aWwuaCBcCi1zeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCitwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKK3N5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXAorc3lzL2tlcm5fY29udHJvbC5oIHN5cy9sb2FkYXZnLmggc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCitzeXMvcGFyYW0uaCBzeXMvc2VsZWN0Lmggc3lzL3NlbmRmaWxlLmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggXAorc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAorc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCitsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAogYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBzcGF3bi5oIHV0aWwuaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCkBAIC02MjQ2LDYgKzY5MDEsNyBAQAogCiBkb25lCiAKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiBhY19oZWFkZXJfZGlyZW50PW5vCiBmb3IgYWNfaGRyIGluIGRpcmVudC5oIHN5cy9uZGlyLmggc3lzL2Rpci5oIG5kaXIuaDsgZG8KICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfaGRyIiB8ICRhc190cl9zaGAKQEAgLTY0NTUsNiArNzExMSwzNCBAQAogZmkKIAogCisjIE9uIERhcndpbiAoT1MgWCkgbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIHRvIGJlIGltcG9ydGVkIGZpcnN0LgorZm9yIGFjX2hlYWRlciBpbiBuZXQvaWYuaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAibmV0L2lmLmgiICJhY19jdl9oZWFkZXJfbmV0X2lmX2giICIjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworIgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0X2lmX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ORVRfSUZfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCisKKwogIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKIGZvciBhY19oZWFkZXIgaW4gdGVybS5oCiBkbyA6CkBAIC02NDk2LDYgKzcxODAsMjYgQEAKIGRvbmUKIAogCisjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCitmb3IgYWNfaGVhZGVyIGluIGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorCisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCiAjIGNoZWNrcyBmb3IgdHlwZWRlZnMKIHdhc19pdF9kZWZpbmVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja190IGluIHRpbWUuaCIgPiY1CkBAIC02NTIwLDcgKzcyMjQsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXNfaXRfZGVmaW5lZCIgPiY1CiAkYXNfZWNobyAiJHdhc19pdF9kZWZpbmVkIiA+JjY7IH0KIAotIyBDaGVjayB3aGV0aGVyIHVzaW5nIG1ha2VkZXYgcmVxdWlyZXMgZGVmaW5pbmcgX09TRl9TT1VSQ0UKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ha2VkZXYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1ha2VkZXYuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTY1NTEsMzUgKzcyNTQsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1pZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gIm5vIjsgdGhlbgotICAgICMgd2UgZGlkbid0IGxpbmssIHRyeSBpZiBfT1NGX1NPVVJDRSB3aWxsIGFsbG93IHVzIHRvIGxpbmsKLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNkZWZpbmUgX09TRl9TT1VSQ0UgMQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi1pbnQKLW1haW4gKCkKLXsKLSBtYWtlZGV2KDAsIDApCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGFzX21ha2VkZXY9eWVzCi1lbHNlCi0gIGFjX2N2X2hhc19tYWtlZGV2PW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgX09TRl9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBmaQotZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGFzX21ha2VkZXYiID4mNQogJGFzX2VjaG8gIiRhY19jdl9oYXNfbWFrZWRldiIgPiY2OyB9CiBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KQEAgLTY3ODcsNiArNzQ2MSwxMyBAQAogCiBmaQogCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJfX3VpbnQxMjhfdCIgImFjX2N2X3R5cGVfX191aW50MTI4X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9fX3VpbnQxMjhfdCIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfVUlOVDEyOF9UIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAKICMgU2l6ZXMgb2YgdmFyaW91cyBjb21tb24gYmFzaWMgdHlwZXMKICMgQU5TSSBDIHJlcXVpcmVzIHNpemVvZihjaGFyKSA9PSAxLCBzbyBubyBuZWVkIHRvIGNoZWNrIGl0CkBAIC03NjY3LDcgKzgzNDgsNiBAQAogCQllbHNlCiAJCQlMRFNIQVJFRD0nbGQgLWInCiAJCWZpIDs7Ci0JT1NGKikgTERTSEFSRUQ9ImxkIC1zaGFyZWQgLWV4cGVjdF91bnJlc29sdmVkIFwiKlwiIjs7CiAJRGFyd2luLzEuMyopCiAJCUxEU0hBUkVEPSckKENDKSAtYnVuZGxlJwogCQlMRENYWFNIQVJFRD0nJChDWFgpIC1idW5kbGUnCkBAIC03OTA2LDYgKzg1ODYsNTEgQEAKIAogCiAjIGNoZWNrcyBmb3IgbGlicmFyaWVzCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzZW5kZmlsZSBpbiAtbHNlbmRmaWxlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzZW5kZmlsZSBpbiAtbHNlbmRmaWxlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sc2VuZGZpbGUgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHNlbmRmaWxlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gc2VuZGZpbGUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlPXllcworZWxzZQorICBhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCU0VOREZJTEUgMQorX0FDRU9GCisKKyAgTElCUz0iLWxzZW5kZmlsZSAkTElCUyIKKworZmkKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgpAQCAtODM3NCw2ICs5MDk5LDIxIEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfc3lzdGVtX2ZmaSIgPiY1CiAkYXNfZWNobyAiJHdpdGhfc3lzdGVtX2ZmaSIgPiY2OyB9CiAKKyMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYm1wZGVjIGxpYnJhcnkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXN0ZW1fbGlibXBkZWMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3N5c3RlbV9saWJtcGRlYytzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfc3lzdGVtX2xpYm1wZGVjOworZWxzZQorICB3aXRoX3N5c3RlbV9saWJtcGRlYz0ibm8iCitmaQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9zeXN0ZW1fbGlibXBkZWMiID4mNQorJGFzX2VjaG8gIiR3aXRoX3N5c3RlbV9saWJtcGRlYyIgPiY2OyB9CisKICMgQ2hlY2sgZm9yIHN1cHBvcnQgZm9yIGxvYWRhYmxlIHNxbGl0ZSBleHRlbnNpb25zCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMuLi4gIiA+JjY7IH0KQEAgLTg0NDEsMjMgKzkxODEsNiBAQAogCiBVU0VfVEhSRUFEX01PRFVMRT0iIgogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZGVjLXRocmVhZHMiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kZWMtdGhyZWFkcy4uLiAiID4mNjsgfQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGVjLXRocmVhZHMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX2RlY190aHJlYWRzK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9kZWNfdGhyZWFkczsKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aHZhbCIgPiY1Ci0kYXNfZWNobyAiJHdpdGh2YWwiID4mNjsgfQotTERMQVNUPS10aHJlYWRzCi1pZiB0ZXN0ICIke3dpdGhfdGhyZWFkK3NldH0iICE9IHNldDsgdGhlbgotICAgd2l0aF90aHJlYWQ9IiR3aXRodmFsIjsKLWZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKIAogCiAjIFRlbXBsYXRlcyBmb3IgdGhpbmdzIEFDX0RFRklORWQgbW9yZSB0aGFuIG9uY2UuCkBAIC04NDY1LDcgKzkxODgsNiBAQAogCiAKIAotCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtdGhyZWFkcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXRocmVhZHMuLi4gIiA+JjY7IH0KIApAQCAtODU2NywzMSArOTI4OSw2IEBACiAKICAgICAkYXNfZWNobyAiI2RlZmluZSBfUkVFTlRSQU5UIDEiID4+Y29uZmRlZnMuaAogCi0gICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImN0aHJlYWRzLmgiICJhY19jdl9oZWFkZXJfY3RocmVhZHNfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfY3RocmVhZHNfaCIgPSB4eWVzOyB0aGVuIDoKLSAgJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9USFJFQUQgMSIgPj5jb25mZGVmcy5oCi0KLSAgICAkYXNfZWNobyAiI2RlZmluZSBDX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSFVSRF9DX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBMSUJTPSIkTElCUyAtbHRocmVhZHMiCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iCi1lbHNlCi0KLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAibWFjaC9jdGhyZWFkcy5oIiAiYWNfY3ZfaGVhZGVyX21hY2hfY3RocmVhZHNfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbWFjaF9jdGhyZWFkc19oIiA9IHh5ZXM7IHRoZW4gOgotICAkYXNfZWNobyAiI2RlZmluZSBXSVRIX1RIUkVBRCAxIiA+PmNvbmZkZWZzLmgKLQotICAgICRhc19lY2hvICIjZGVmaW5lIENfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotCi0kYXNfZWNobyAiI2RlZmluZSBNQUNIX0NfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIgotZWxzZQotCiAgICAgIyBKdXN0IGxvb2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIGxpYnB0aHJlYWQgaXMgbm90IGVub3VnaDoKICAgICAjIG9uIEhQL1VYLCBwdGhyZWFkLmggcmVuYW1lcyBwdGhyZWFkX2NyZWF0ZSB0byBhIGRpZmZlcmVudCBzeW1ib2wgbmFtZS4KICAgICAjIFNvIHdlIHJlYWxseSBoYXZlIHRvIGluY2x1ZGUgcHRocmVhZC5oLCBhbmQgdGhlbiBsaW5rLgpAQCAtODgyMywxMiArOTUyMCw2IEBACiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi0KLQotZmkKLQotCiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1c2NvbmZpZyBpbiAtbG1wYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdXNjb25maWcgaW4gLWxtcGMuLi4gIiA+JjY7IH0KQEAgLTg5MjEsMTUgKzk2MTIsNiBAQAogZmkKIAogICAgIGZpCi0KLSAgICBpZiB0ZXN0ICIkVVNFX1RIUkVBRF9NT0RVTEUiICE9ICIjIgotICAgIHRoZW4KLSAgICAgICAgIyBJZiB0aGUgYWJvdmUgY2hlY2tzIGRpZG4ndCBkaXNhYmxlIHRocmVhZHMsIChhdCBsZWFzdCkgT1NGMQotICAgICAgICAjIG5lZWRzIHRoaXMgJy10aHJlYWRzJyBhcmd1bWVudCBkdXJpbmcgbGlua2luZy4KLSAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgICAgICBPU0YxKSBMRExBU1Q9LXRocmVhZHM7OwotICAgICAgICBlc2FjCi0gICAgZmkKIGZpCiAKIGlmIHRlc3QgIiRwb3NpeF90aHJlYWRzIiA9ICJ5ZXMiOyB0aGVuCkBAIC05MzY2LDEzICsxMDA0OCwxMyBAQAogaWYgdGVzdCAteiAiJHdpdGhfcHltYWxsb2MiCiB0aGVuCiAgICAgd2l0aF9weW1hbGxvYz0ieWVzIgotICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfW0iCiBmaQogaWYgdGVzdCAiJHdpdGhfcHltYWxsb2MiICE9ICJubyIKIHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9QWU1BTExPQyAxIiA+PmNvbmZkZWZzLmgKIAorICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfW0iCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3B5bWFsbG9jIiA+JjUKICRhc19lY2hvICIkd2l0aF9weW1hbGxvYyIgPiY2OyB9CkBAIC05NDcwLDI0ICsxMDE1MiwzNyBAQAogZWxzZQogCU1BQ0hERVBfT0JKUz0iJE1BQ0hERVBfT0JKUyAkZXh0cmFfbWFjaGRlcF9vYmpzIgogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBNQUNIREVQX09CSlMiID4mNQotJGFzX2VjaG8gIk1BQ0hERVBfT0JKUyIgPiY2OyB9CitpZiB0ZXN0IC16ICIkTUFDSERFUF9PQkpTIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm9uZSIgPiY1CiskYXNfZWNobyAibm9uZSIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFDSERFUF9PQkpTIiA+JjUKKyRhc19lY2hvICIkTUFDSERFUF9PQkpTIiA+JjY7IH0KK2ZpCiAKICMgY2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucwogZm9yIGFjX2Z1bmMgaW4gYWxhcm0gYWNjZXB0NCBzZXRpdGltZXIgZ2V0aXRpbWVyIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IGNob3duIFwKLSBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmNobW9kIGZjaG93biBmb3JrIGZwYXRoY29uZiBmdGltZSBmdHJ1bmNhdGUgXAotIGdhaV9zdHJlcnJvciBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCisgY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZhY2Nlc3NhdCBmY2htb2QgZmNobW9kYXQgZmNob3duIGZjaG93bmF0IFwKKyBmZXhlY3ZlIGZkb3BlbmRpciBmb3JrIGZwYXRoY29uZiBmc3RhdGF0IGZ0aW1lIGZ0cnVuY2F0ZSBmdXRpbWVzYXQgXAorIGZ1dGltZW5zIGZ1dGltZXMgZ2FpX3N0cmVycm9yIFwKKyBnZXRncm91cGxpc3QgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAogIGdldHByaW9yaXR5IGdldHJlc3VpZCBnZXRyZXNnaWQgZ2V0cHdlbnQgZ2V0c3BuYW0gZ2V0c3BlbnQgZ2V0c2lkIGdldHdkIFwKLSBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbHN0YXQgbWJydG93YyBta2ZpZm8gbWtub2QgbWt0aW1lIFwKLSBtcmVtYXAgbmljZSBwYXRoY29uZiBwYXVzZSBwbG9jayBwb2xsIHB0aHJlYWRfaW5pdCBcCi0gcHV0ZW52IHJlYWRsaW5rIHJlYWxwYXRoIFwKLSBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZXRlZ2lkIHNldGV1aWQgXAotIHNldGdpZCBcCi0gc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXR1aWQgc2V0dmJ1ZiBcCi0gc2lnYWN0aW9uIHNpZ2ludGVycnVwdCBzaWdyZWxzZSBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IFwKKyBpZl9uYW1laW5kZXggXAorIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsb2NrZiBsaW5rYXQgbHN0YXQgbHV0aW1lcyBtbWFwIFwKKyBtZW1yY2hyIG1icnRvd2MgbWtkaXJhdCBta2ZpZm8gXAorIG1rZmlmb2F0IG1rbm9kIG1rbm9kYXQgbWt0aW1lIG1yZW1hcCBuaWNlIG9wZW5hdCBwYXRoY29uZiBwYXVzZSBwaXBlMiBwbG9jayBwb2xsIFwKKyBwb3NpeF9mYWxsb2NhdGUgcG9zaXhfZmFkdmlzZSBwcmVhZCBcCisgcHRocmVhZF9pbml0IHB0aHJlYWRfa2lsbCBwdXRlbnYgcHdyaXRlIHJlYWRsaW5rIHJlYWRsaW5rYXQgcmVhZHYgcmVhbHBhdGggcmVuYW1lYXQgXAorIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNlbmRmaWxlIHNldGVnaWQgc2V0ZXVpZCBcCisgc2V0Z2lkIHNldGhvc3RuYW1lIFwKKyBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHByaW9yaXR5IHNldHVpZCBzZXR2YnVmIFwKKyBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IHNjaGVkX3NldGFmZmluaXR5IHNjaGVkX3NldHNjaGVkdWxlciBzY2hlZF9zZXRwYXJhbSBcCisgc2NoZWRfcnJfZ2V0X2ludGVydmFsIFwKKyBzaWdhY3Rpb24gc2lnYWx0c3RhY2sgc2lnaW50ZXJydXB0IHNpZ3BlbmRpbmcgc2lncmVsc2UgXAorIHNpZ3RpbWVkd2FpdCBzaWd3YWl0IHNpZ3dhaXRpbmZvIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgc3ltbGlua2F0IHN5bmMgXAogIHN5c2NvbmYgdGNnZXRwZ3JwIHRjc2V0cGdycCB0ZW1wbmFtIHRpbWVnbSB0aW1lcyB0bXBmaWxlIHRtcG5hbSB0bXBuYW1fciBcCi0gdHJ1bmNhdGUgdW5hbWUgdW5zZXRlbnYgdXRpbWVzIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAotIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSBfZ2V0cHR5CisgdHJ1bmNhdGUgdW5hbWUgdW5saW5rYXQgdW5zZXRlbnYgdXRpbWVuc2F0IHV0aW1lcyB3YWl0aWQgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCisgd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdyaXRldiBfZ2V0cHR5CiBkbyA6CiAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgpAQCAtOTY4Nyw2ICsxMDM4MiwzMSBAQAogCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlcG9sbF9jcmVhdGUxIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBlcG9sbF9jcmVhdGUxLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+CitpbnQKK21haW4gKCkKK3sKK3ZvaWQgKng9ZXBvbGxfY3JlYXRlMQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfRVBPTExfQ1JFQVRFMSAxIiA+PmNvbmZkZWZzLmgKKworICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGtxdWV1ZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Iga3F1ZXVlLi4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMDY2MSw2ICsxMTM4MSwxMjUgQEAKIGRvbmUKIAogCitmb3IgYWNfZnVuYyBpbiBjbG9ja19nZXR0aW1lCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX2dldHRpbWUiICJhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMQorX0FDRU9GCisKK2Vsc2UKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRpbWUgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfZ2V0dGltZSBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY2xvY2tfZ2V0dGltZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX2dldHRpbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMSIgPj5jb25mZGVmcy5oCisKKworJGFzX2VjaG8gIiNkZWZpbmUgVElNRU1PRFVMRV9MSUIgcnQiID4+Y29uZmRlZnMuaAorCisKK2ZpCisKKworZmkKK2RvbmUKKworCitmb3IgYWNfZnVuYyBpbiBjbG9ja19nZXRyZXMKK2RvIDoKKyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiY2xvY2tfZ2V0cmVzIiAiYWNfY3ZfZnVuY19jbG9ja19nZXRyZXMiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfZ2V0cmVzIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfQ0xPQ0tfR0VUUkVTIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19nZXRyZXMgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfZ2V0cmVzIGluIC1scnQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX2dldHJlcyAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX2dldHJlcyAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcyIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFJFUyAxIiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKK2ZpCitkb25lCisKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFqb3IiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1ham9yLi4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMDczOCw3ICsxMTU3NywxMiBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisKK2lmIHRlc3QgIiR7ZW5hYmxlX2lwdjYrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89Im5vIC0tIGNvbmZpZ3VyZWQgd2l0aCAtLShlbnxkaXMpYWJsZS1pcHY2IgorZWxzZQogICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz15ZXMKK2ZpCiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KQEAgLTEwODQ2LDcgKzExNjkwLDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID4mNQogJGFzX2VjaG8gIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPiY2OyB9CiAKLWlmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyAtbyAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcworaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIHx8IHRlc3QgIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKIHRoZW4KIAlpZiB0ZXN0ICRpcHY2ID0geWVzCiAJdGhlbgpAQCAtMTE4MTUsNiArMTI2NTksNDAgQEAKIGZpCiAKIAorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqIENoZWNrIGZvciBnY2MgeDY0IGlubGluZSBhc3NlbWJsZXIgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlci4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1vdnEgJXJjeCwgJXJheCIpOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9eWVzCitlbHNlCisgIGhhdmVfZ2NjX2FzbV9mb3JfeDY0PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA+JjUKKyRhc19lY2hvICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA9IHllcwordGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0dDQ19BU01fRk9SX1g2NCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTIwNjUsNyArMTI5NDMsNyBAQAogZmkKIGRvbmUKIAotZm9yIGFjX2Z1bmMgaW4gaHlwb3QgbGdhbW1hIGxvZzFwIHJvdW5kIHRnYW1tYQorZm9yIGFjX2Z1bmMgaW4gaHlwb3QgbGdhbW1hIGxvZzFwIGxvZzIgcm91bmQgdGdhbW1hCiBkbyA6CiAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgpAQCAtMTI0NzIsNjUgKzEzMzUwLDE5IEBACiAkYXNfZWNobyAiJGFjX2N2X3djaGFyX3Rfc2lnbmVkIiA+JjY7IH0KIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hhdCB0eXBlIHRvIHVzZSBmb3Igc3RyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoYXQgdHlwZSB0byB1c2UgZm9yIHN0ci4uLiAiID4mNjsgfQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXdpZGUtdW5pY29kZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfd2lkZV91bmljb2RlK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF93aWRlX3VuaWNvZGU7Ci1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4gdW5pY29kZV9zaXplPSI0IgotZWxzZSB1bmljb2RlX3NpemU9IjIiCi1maQotCi1lbHNlCi0KLWNhc2UgIiRoYXZlX3VjczRfdGNsIiBpbgotICB5ZXMpIHVuaWNvZGVfc2l6ZT0iNCI7OwotICAqKSAgIHVuaWNvZGVfc2l6ZT0iMiIgOzsKLWVzYWMKLQotZmkKLQotCi0KLWNhc2UgIiR1bmljb2RlX3NpemUiIGluCi0gIDQpCi0gICAgICRhc19lY2hvICIjZGVmaW5lIFB5X1VOSUNPREVfU0laRSA0IiA+PmNvbmZkZWZzLmgKLQotICAgICBBQklGTEFHUz0iJHtBQklGTEFHU311IgotICAgICA7OwotICAqKSAkYXNfZWNobyAiI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgMiIgPj5jb25mZGVmcy5oCi0gOzsKLWVzYWMKLQotCi0KICMgd2NoYXJfdCBpcyBvbmx5IHVzYWJsZSBpZiBpdCBtYXBzIHRvIGFuIHVuc2lnbmVkIHR5cGUKLWlmIHRlc3QgIiR1bmljb2RlX3NpemUiID0gIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgXAoraWYgdGVzdCAiJGFjX2N2X3NpemVvZl93Y2hhcl90IiAtZ2UgMiBcCiAgICAgICAgICAgLWEgIiRhY19jdl93Y2hhcl90X3NpZ25lZCIgPSAibm8iCiB0aGVuCi0gIFBZX1VOSUNPREVfVFlQRT0id2NoYXJfdCIKKyAgSEFWRV9VU0FCTEVfV0NIQVJfVD0ieWVzIgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1VTQUJMRV9XQ0hBUl9UIDEiID4+Y29uZmRlZnMuaAogCi0gICRhc19lY2hvICIjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB3Y2hhcl90IiA+PmNvbmZkZWZzLmgKLQotZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3Nob3J0IiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIHNob3J0IgotICAgICAkYXNfZWNobyAiI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgdW5zaWduZWQgc2hvcnQiID4+Y29uZmRlZnMuaAotCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBsb25nIgotICAgICAkYXNfZWNobyAiI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgdW5zaWduZWQgbG9uZyIgPj5jb25mZGVmcy5oCi0KIGVsc2UKLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJubyB0eXBlIGZvdW5kIgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJubyB1c2FibGUgd2NoYXJfdCBmb3VuZCIKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBZX1VOSUNPREVfVFlQRSIgPiY1Ci0kYXNfZWNobyAiJFBZX1VOSUNPREVfVFlQRSIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEhBVkVfVVNBQkxFX1dDSEFSX1QiID4mNQorJGFzX2VjaG8gIiRIQVZFX1VTQUJMRV9XQ0hBUl9UIiA+JjY7IH0KIAogIyBjaGVjayBmb3IgZW5kaWFubmVzcwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1CkBAIC0xMjkxMyw3ICsxMzc0NSw3IEBACiBweV9jdl9saWJfcmVhZGxpbmU9bm8KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlicyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gbGluayByZWFkbGluZSBsaWJzLi4uICIgPiY2OyB9Ci1mb3IgcHlfbGlidGVybWNhcCBpbiAiIiBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbworZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgdGluZm8gbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KICAgaWYgdGVzdCAteiAiJHB5X2xpYnRlcm1jYXAiOyB0aGVuCiAgICAgUkVBRExJTkVfTElCUz0iLWxyZWFkbGluZSIKICAgZWxzZQpAQCAtMTM1NDMsNiArMTQzNzUsOCBAQAogCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogIyBPbiBIUC9VWCAxMS4wLCBtdndkZWxjaCBpcyBhIGJsb2NrIHdpdGggYSByZXR1cm4gc3RhdGVtZW50CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgbXZ3ZGVsY2ggaXMgYW4gZXhwcmVzc2lvbiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIG12d2RlbGNoIGlzIGFuIGV4cHJlc3Npb24uLi4gIiA+JjY7IH0KQEAgLTEzNjk2LDM1ICsxNDUzMCw3NiBAQAogCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisjIGxhc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjaworQ1BQRkxBR1M9JGFjX3NhdmVfY3BwZmxhZ3MKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNoZWNraW5nIGZvciBkZXZpY2UgZmlsZXMiID4mNjt9CisKK2lmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRteCtzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0bXgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRteC4uLiAiID4mNjsgfQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub3Qgc2V0IiA+JjUKKyRhc19lY2hvICJub3Qgc2V0IiA+JjY7IH0KKyAgICBhc19mbl9lcnJvciAkPyAic2V0IGFjX2N2X2ZpbGVfX2Rldl9wdG14IHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmciICIkTElORU5PIiA1CisgIGZpCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0YytzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0YyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgL2Rldi9wdGMuLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm90IHNldCIgPiY1CiskYXNfZWNobyAibm90IHNldCIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gInNldCBhY19jdl9maWxlX19kZXZfcHRjIHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmciICIkTElORU5PIiA1CisgIGZpCitmaQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0bXgiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRteC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9maWxlX19kZXZfcHRteCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY2hlY2sgZm9yIGZpbGUgZXhpc3RlbmNlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQoraWYgdGVzdCAtciAiL2Rldi9wdG14IjsgdGhlbgorICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMKK2Vsc2UKKyAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9bm8KK2ZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9maWxlX19kZXZfcHRteCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID0geHllczsgdGhlbiA6CiAKLWlmIHRlc3QgLXIgL2Rldi9wdG14Ci10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9CitmaQorCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ERVZfUFRNWCAxIiA+PmNvbmZkZWZzLmgKIAotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC9kZXYvcHRjIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0Yy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9maWxlX19kZXZfcHRjKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMgJiYKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjaGVjayBmb3IgZmlsZSBleGlzdGVuY2Ugd2hlbiBjcm9zcyBjb21waWxpbmciICIkTElORU5PIiA1CitpZiB0ZXN0IC1yICIvZGV2L3B0YyI7IHRoZW4KKyAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz15ZXMKK2Vsc2UKKyAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubworZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2ZpbGVfX2Rldl9wdGMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9maWxlX19kZXZfcHRjIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPSB4eWVzOyB0aGVuIDoKIAotaWYgdGVzdCAtciAvZGV2L3B0YwotdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworaWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRjIiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ERVZfUFRDIDEiID4+Y29uZmRlZnMuaAogCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAogaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwpAQCAtMTM3MzUsNyArMTQ2MTAsMzYgQEAKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm8KKyAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKKyAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCisgICAgc2F2ZV9DRkxBR1M9JENGTEFHUworICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgorICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgorCitpbnQKK21haW4gKCkKK3sKKworICAgICAgY2hhciAqYnVmZmVyOworICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOworICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKKyAgIGZpCiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KQEAgLTEzOTIzLDQ5ICsxNDgyNyw2IEBACiAKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OwotICAgIGdvdG8gTEFCRUwyOwotTEFCRUwxOgotICAgIHJldHVybiAwOwotTEFCRUwyOgotICAgIGdvdG8gKnRhcmdldHNbMF07Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPXllcwotZWxzZQotICBhY19jdl9jb21wdXRlZF9nb3Rvcz1ubwotZmkKLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKLWZpCi0KLWZpCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNQotJGFzX2VjaG8gIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgPiY2OyB9Ci1pZiB0ZXN0ICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID0geWVzCi10aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ09NUFVURURfR09UT1MgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MuLi4gIiA+JjY7IH0KQEAgLTEzOTk2LDYgKzE0ODU3LDUyIEBACiBmaQogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGlmIHRlc3QgIiR7d2l0aF9jb21wdXRlZF9nb3RvcytzZXR9IiA9IHNldDsgdGhlbgorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9IiR3aXRoX2NvbXB1dGVkX2dvdG9zIC0tIGNvbmZpZ3VyZWQgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MiCisgZWxzZQorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KKyBmaQorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBzdGF0aWMgdm9pZCAqdGFyZ2V0c1sxXSA9IHsgJiZMQUJFTDEgfTsKKyAgICBnb3RvIExBQkVMMjsKK0xBQkVMMToKKyAgICByZXR1cm4gMDsKK0xBQkVMMjoKKyAgICBnb3RvICp0YXJnZXRzWzBdOworICAgIHJldHVybiAxOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jb21wdXRlZF9nb3Rvcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNjsgfQorY2FzZSAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiBpbiB5ZXMqKQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE9TIDEiID4+Y29uZmRlZnMuaAorCitlc2FjCisKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KIEFJWCopCiAKQEAgLTE0MDA0LDE4ICsxNDkxMSw2IEBACiBlc2FjCiAKIAotY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICBPU0YqKSBhc19mbl9lcnJvciAkPyAiT1NGKiBzeXN0ZW1zIGFyZSBkZXByZWNhdGVkIHVubGVzcyBzb21lYm9keSB2b2x1bnRlZXJzLiBDaGVjayBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNiIgIiRMSU5FTk8iIDUgOzsKLWVzYWMKLQotYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAicGlwZTIiICJhY19jdl9mdW5jX3BpcGUyIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX3BpcGUyIiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1BJUEUyIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi0KIAogCiBmb3IgaCBpbiBgKGNkICRzcmNkaXI7ZWNobyBQeXRob24vdGhyZWFkXyouaClgCkBAIC0xNDAzNSw2ICsxNDkzMCwxMzYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBkb25lIiA+JjUKICRhc19lY2hvICJkb25lIiA+JjY7IH0KIAorIyBBdmFpbGFiaWxpdHkgb2YgLU8yOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLU8yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtTzIuLi4gIiA+JjY7IH0KK3NhdmVkX2NmbGFncz0iJENGTEFHUyIKK0NGTEFHUz0iLU8yIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9PMj15ZXMKK2Vsc2UKKyAgaGF2ZV9PMj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX08yIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9PMiIgPiY2OyB9CitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisKKyMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdsaWJjIF9GT1JUSUZZX1NPVVJDRS9tZW1tb3ZlIGJ1ZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2xpYmMgX0ZPUlRJRllfU09VUkNFL21lbW1vdmUgYnVnLi4uICIgPiY2OyB9CitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiAtRF9GT1JUSUZZX1NPVVJDRT0yIgoraWYgdGVzdCAiJGhhdmVfTzIiID0gbm87IHRoZW4KKyAgICBDRkxBR1M9IiIKK2ZpCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGhhdmVfZ2xpYmNfbWVtbW92ZV9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cit2b2lkIGZvbyh2b2lkICpwLCB2b2lkICpxKSB7IG1lbW1vdmUocCwgcSwgMTkpOyB9CitpbnQgbWFpbigpIHsKKyAgY2hhciBhWzMyXSA9ICIxMjM0NTY3ODkwMDAwMDAwMDAiOworICBmb28oJmFbOV0sIGEpOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICBmb28oYSwgJmFbOV0pOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz1ubworZWxzZQorICBoYXZlX2dsaWJjX21lbW1vdmVfYnVnPXllcworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nbGliY19tZW1tb3ZlX2J1ZyIgPiY1CiskYXNfZWNobyAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KKyAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgY2FzZSAkQ0MgaW4KKyAgICAgICAgKmdjYyopCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnLi4uICIgPiY2OyB9CisgICAgICAgICAgICBzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCisgICAgICAgICAgICBDRkxBR1M9Ii1PMiIKKyAgICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBpbnQKKyAgICAgICAgICAgIGZvbyhpbnQgKnApIHsKKyAgICAgICAgICAgICAgaW50IHI7CisgICAgICAgICAgICAgIGFzbSAoICJtb3ZsIFwkNiwgKCUxKVxuXHQiCisgICAgICAgICAgICAgICAgICAgICJ4b3JsICUwLCAlMFxuXHQiCisgICAgICAgICAgICAgICAgICAgIDogIj1yIiAocikgOiAiciIgKHApIDogIm1lbW9yeSIKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgICAgICAgaW50IHAgPSA4OworICAgICAgICAgICAgICBpZiAoKGZvbygmcCkgPyA6IHApICE9IDYpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz1ubworZWxzZQorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz15ZXMKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgICAgICAgICBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9pcGFfcHVyZV9jb25zdF9idWciID4mNjsgfQorICAgICAgICAgICAgaWYgdGVzdCAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRyAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCitmaQorCiAjIGdlbmVyYXRlIG91dHB1dCBmaWxlcwogYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyIKIApAQCAtMTQ1NTksNyArMTU1ODQsNyBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjIsIHdoaWNoIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0xNDYyMSw3ICsxNTY0Niw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy4yCitweXRob24gY29uZmlnLnN0YXR1cyAzLjMKIGNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzZTA1MzA0Li4yMzY5NTFjIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDIyICszLDc1IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuMikKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy4zKQogCi1kbmwgU29tZSBtNCBtYWdpYyB0byBlbnN1cmUgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBpcyBnZW5lcmF0ZWQKLWRubCBieSB0aGUgY29ycmVjdCBhdXRvY29uZiB2ZXJzaW9uLgotbTRfZGVmaW5lKFt2ZXJzaW9uX3JlcXVpcmVkXSwKLVttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVmbihbbTRfUEFDS0FHRV9WRVJTSU9OXSksIFskMV0pLCAwLAotICAgICAgIFtdLAotICAgICAgIFttNF9mYXRhbChbQXV0b2NvbmYgdmVyc2lvbiAkMSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uXSwgNjMpXSkKLV0pCiBBQ19QUkVSRVEoMi42NSkKIAotQUNfUkVWSVNJT04oJFJldmlzaW9uJCkKIEFDX0lOSVQocHl0aG9uLCBQWVRIT05fVkVSU0lPTiwgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8pCisKK0FDX1NVQlNUKEJBU0VDUFBGTEFHUykKK2lmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KKyAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCisgICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCisgICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKKyAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCisgICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCisgICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQorICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKKyAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCisgICAgIyAgb2ZmLikKKyAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCitlbHNlCisgICAgQkFTRUNQUEZMQUdTPSIiCitmaQorCitBQ19TVUJTVChIR1ZFUlNJT04pCitBQ19TVUJTVChIR1RBRykKK0FDX1NVQlNUKEhHQlJBTkNIKQorCitpZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCit0aGVuCitBQ19DSEVDS19QUk9HKEhBU19IRywgaGcsIGZvdW5kLCBub3QtZm91bmQpCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKIEFDX0NPTkZJR19TUkNESVIoW0luY2x1ZGUvb2JqZWN0LmhdKQogQUNfQ09ORklHX0hFQURFUihweWNvbmZpZy5oKQogCitBQ19DQU5PTklDQUxfSE9TVAorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGRdKQorICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgorICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCisJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCisJICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AID49ICgzLDMpKSc7IHRoZW4KKwkgICAgICAgIGJyZWFrCisJICAgIGZpCisgICAgICAgICAgICBpbnRlcnA9CisJZG9uZQorICAgICAgICBpZiB0ZXN0IHgkaW50ZXJwID0geDsgdGhlbgorCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKKwlmaQorICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCisJUFlUSE9OX0ZPUl9CVUlMRD0iX1BZVEhPTl9QUk9KRUNUX0JBU0U9JHNyY2RpciInIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvcGxhdC0kKE1BQ0hERVApICckaW50ZXJwCisgICAgZmkKK2Vsc2UKKyAgICBQWVRIT05fRk9SX0JVSUxEPScuLyQoQlVJTERQWVRIT04pIC1FJworZmkKK0FDX1NVQlNUKFBZVEhPTl9GT1JfQlVJTEQpCisKIGRubCBFbnN1cmUgdGhhdCBpZiBwcmVmaXggaXMgc3BlY2lmaWVkLCBpdCBkb2VzIG5vdCBlbmQgaW4gYSBzbGFzaC4gSWYKIGRubCBpdCBkb2VzLCB3ZSBnZXQgcGF0aCBuYW1lcyBjb250YWluaW5nICcvLycgd2hpY2ggaXMgYm90aCB1Z2x5IGFuZAogZG5sIGNhbiBjYXVzZSB0cm91YmxlLgpAQCAtODgsMTQgKzE0MSwyMCBAQAogCiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtLWVuYWJsZS11bml2ZXJzYWxzZGtdKQogQUNfQVJHX0VOQUJMRSh1bml2ZXJzYWxzZGssCi0JQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVuaXZlcnNhbHNka0A8OkA9U0RLRElSQDo+QF0sIFtCdWlsZCBhZ2FpbnN0IE1hYyBPUyBYIDEwLjR1IFNESyAocHBjL2kzODYpXSksCisJQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVuaXZlcnNhbHNka0A8OkA9U0RLRElSQDo+QF0sIFtCdWlsZCBmYXQgYmluYXJ5IGFnYWluc3QgTWFjIE9TIFggU0RLXSksCiBbCiAJY2FzZSAkZW5hYmxldmFsIGluCiAJeWVzKQotCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkawotCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJIyBMb2NhdGUgdGhlIGJlc3QgdXNhYmxlIFNESywgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJCSMgaW5mb3JtYXRpb24KKwkJZW5hYmxldmFsPSJgL3Vzci9iaW4veGNvZGVidWlsZCAtdmVyc2lvbiAtc2RrIG1hY29zeCBQYXRoIDI+L2Rldi9udWxsYCIKKwkJaWYgdGVzdCAteiAiJHtlbmFibGV2YWx9IgogCQl0aGVuCi0JCQllbmFibGV2YWw9LworCQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKKwkJCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkJdGhlbgorCQkJCWVuYWJsZXZhbD0vCisJCQlmaQogCQlmaQogCQk7OwogCWVzYWMKQEAgLTEyNyw3ICsxODYsMjAgQEAKIAogQUNfU1VCU1QoQVJDSF9SVU5fMzJCSVQpCiAKKyMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBwcmVmZXIgdG8gc2VsZWN0ICczMi1iaXQnIGlmIGF2YWlsYWJsZSwKKyMgb3RoZXJ3aXNlIHVzZSAnaW50ZWwnCiBVTklWRVJTQUxfQVJDSFM9IjMyLWJpdCIKK2lmIHRlc3QgImB1bmFtZSAtc2AiID0gIkRhcndpbiIKK3RoZW4KKwlpZiB0ZXN0IC1uICIke1VOSVZFUlNBTFNES30iCisJdGhlbgorCQlpZiB0ZXN0IC16ICJgL3Vzci9iaW4vZmlsZSAiJHtVTklWRVJTQUxTREt9L3Vzci9saWIvbGliU3lzdGVtLmR5bGliIiB8IGdyZXAgcHBjYCIKKwkJdGhlbgorCQkJVU5JVkVSU0FMX0FSQ0hTPSJpbnRlbCIKKwkJZmkKKwlmaQorZmkKKwogQUNfU1VCU1QoTElQT18zMkJJVF9GTEFHUykKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXVuaXZlcnNhbC1hcmNocykKIEFDX0FSR19XSVRIKHVuaXZlcnNhbC1hcmNocywKQEAgLTEzNyw3ICsyMDksNyBAQAogCVVOSVZFUlNBTF9BUkNIUz0iJHdpdGh2YWwiCiBdLAogWwotIAlBQ19NU0dfUkVTVUxUKDMyLWJpdCkKKyAJQUNfTVNHX1JFU1VMVCgke1VOSVZFUlNBTF9BUkNIU30pCiBdKQogCiAKQEAgLTI3Niw2ICszNDgsMjUgQEAKIEFDX01TR19DSEVDS0lORyhNQUNIREVQKQogaWYgdGVzdCAteiAiJE1BQ0hERVAiCiB0aGVuCisgICAgIyBhdm9pZCB1c2luZyB1bmFtZSBmb3IgY3Jvc3MgYnVpbGRzCisgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAjIGFjX3N5c19zeXN0ZW0gYW5kIGFjX3N5c19yZWxlYXNlIGFyZSBvbmx5IHVzZWQgZm9yIHNldHRpbmcKKyAgICAgICAjIGBkZWZpbmVfeG9wZW5fc291cmNlJyBpbiB0aGUgY2FzZSBzdGF0ZW1lbnQgYmVsb3cuIEZvciB0aGUKKyAgICAgICAjIGN1cnJlbnQgc3VwcG9ydGVkIGNyb3NzIGJ1aWxkcywgdGhpcyBtYWNybyBpcyBub3QgYWRqdXN0ZWQuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJYWNfc3lzX3N5c3RlbT1MaW51eAorCQk7OworCSotKi1jeWd3aW4qKQorCQlhY19zeXNfc3lzdGVtPUN5Z3dpbgorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCUFDX01TR19FUlJPUihbY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3RdKQorCWVzYWMKKwlhY19zeXNfcmVsZWFzZT0KKyAgICBlbHNlCiAJYWNfc3lzX3N5c3RlbT1gdW5hbWUgLXNgCiAJaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkFJWCIgXAogCS1vICIkYWNfc3lzX3N5c3RlbSIgPSAiVW5peFdhcmUiIC1vICIkYWNfc3lzX3N5c3RlbSIgPSAiT3BlblVOSVgiOyB0aGVuCkBAIC0yODMsMTkgKzM3NCw0MyBAQAogCWVsc2UKIAkJYWNfc3lzX3JlbGVhc2U9YHVuYW1lIC1yYAogCWZpCi0JYWNfbWRfc3lzdGVtPWBlY2hvICRhY19zeXNfc3lzdGVtIHwKLQkJCSAgIHRyIC1kICdbLyBdJyB8IHRyICdbW0EtWl1dJyAnW1thLXpdXSdgCi0JYWNfbWRfcmVsZWFzZT1gZWNobyAkYWNfc3lzX3JlbGVhc2UgfAotCQkJICAgdHIgLWQgJ1svIF0nIHwgc2VkICdzL15bW0EtWl1dXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKLQlNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCisgICAgZmkKKyAgICBhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAorCQkJdHIgLWQgJ1svIF0nIHwgdHIgJ1tbQS1aXV0nICdbW2Etel1dJ2AKKyAgICBhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8CisJCQl0ciAtZCAnWy8gXScgfCBzZWQgJ3MvXltbQS1aXV1cLi8vJyB8IHNlZCAncy9cLi4qLy8nYAorICAgIE1BQ0hERVA9IiRhY19tZF9zeXN0ZW0kYWNfbWRfcmVsZWFzZSIKIAotCWNhc2UgJE1BQ0hERVAgaW4KLQlsaW51eCopIE1BQ0hERVA9ImxpbnV4MiI7OworICAgIGNhc2UgJE1BQ0hERVAgaW4KKwlsaW51eCopIE1BQ0hERVA9ImxpbnV4Ijs7CiAJY3lnd2luKikgTUFDSERFUD0iY3lnd2luIjs7CiAJZGFyd2luKikgTUFDSERFUD0iZGFyd2luIjs7Ci0gICAgICAgIGlyaXg2NDYpIE1BQ0hERVA9ImlyaXg2Ijs7CisJaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKIAknJykJTUFDSERFUD0idW5rbm93biI7OworICAgIGVzYWMKK2ZpCisKK0FDX1NVQlNUKF9QWVRIT05fSE9TVF9QTEFURk9STSkKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJY2FzZSAiJGhvc3RfY3B1IiBpbgorCQlhcm0qKQorCQkJX2hvc3RfY3B1PWFybQorCQkJOzsKKwkJKikKKwkJCV9ob3N0X2NwdT0kaG9zdF9jcHUKKwkJZXNhYworCQk7OworCSotKi1jeWd3aW4qKQorCQlfaG9zdF9jcHU9CisJCTs7CisJKikKKwkJIyBmb3Igbm93LCBsaW1pdCBjcm9zcyBidWlsZHMgdG8ga25vd24gY29uZmlndXJhdGlvbnMKKwkJTUFDSERFUD0idW5rbm93biIKKwkJQUNfTVNHX0VSUk9SKFtjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdF0pCiAJZXNhYworCV9QWVRIT05fSE9TVF9QTEFURk9STT0iJE1BQ0hERVAke19ob3N0X2NwdTorLSRfaG9zdF9jcHV9IgogZmkKIAkKICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBzdGFuZCBfWE9QRU5fU09VUkNFIGJlaW5nIGRlZmluZWQgYXQgYWxsOyB0aGV5CkBAIC0zODMsNyArNDk4LDggQEAKIAogaWYgdGVzdCAkZGVmaW5lX3hvcGVuX3NvdXJjZSA9IHllcwogdGhlbgotICBBQ19ERUZJTkUoX1hPUEVOX1NPVVJDRSwgNjAwLCAKKyAgIyBYL09wZW4gNywgaW5jb3Jwb3JhdGluZyBQT1NJWC4xLTIwMDgKKyAgQUNfREVGSU5FKF9YT1BFTl9TT1VSQ0UsIDcwMCwKICAgICAgICAgICAgIERlZmluZSB0byB0aGUgbGV2ZWwgb2YgWC9PcGVuIHRoYXQgeW91ciBzeXN0ZW0gc3VwcG9ydHMpCiAKICAgIyBPbiBUcnU2NCBVbml4IDQuMEYsIGRlZmluaW5nIF9YT1BFTl9TT1VSQ0UgYWxzbyByZXF1aXJlcwpAQCAtMzkzLDggKzUwOSw3IEBACiAgIEFDX0RFRklORShfWE9QRU5fU09VUkNFX0VYVEVOREVELCAxLAogICAgCSAgICBEZWZpbmUgdG8gYWN0aXZhdGUgVW5peDk1LWFuZC1lYXJsaWVyIGZlYXR1cmVzKQogCi0gIEFDX0RFRklORShfUE9TSVhfQ19TT1VSQ0UsIDIwMDExMkwsIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwMSkKLSAgCisgIEFDX0RFRklORShfUE9TSVhfQ19TT1VSQ0UsIDIwMDgwOUwsIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwOCkKIGZpCiAKICMKQEAgLTQyMywxMCArNTM4LDYgQEAKIENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9CiBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScjJwogCi1BQ19NU0dfQ0hFQ0tJTkcobWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tKQotYWNfc3lzX21hY2hpbmU9YHVuYW1lIC1tYAotQUNfTVNHX1JFU1VMVCgkYWNfc3lzX21hY2hpbmUpCi0KICMgY2hlY2tzIGZvciBhbHRlcm5hdGl2ZSBwcm9ncmFtcwogCiAjIGNvbXBpbGVyIGZsYWdzIGFyZSBnZW5lcmF0ZWQgaW4gdHdvIHNldHMsIEJBU0VDRkxBR1MgYW5kIE9QVC4gIE9QVCBpcyBqdXN0CkBAIC00NjksNiArNTgwLDYzIEBACiBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgogICAgICAgICBDRkxBR1M9CiBmaQorCitpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiRGFyd2luIgordGhlbgorCSMgQ29tcGlsZXIgc2VsZWN0aW9uIG9uIE1hY09TWCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KKwkjIEFDX1BST0dfQ0MgY2FuIGhhbmRsZSwgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJIyBpbmZvcm1hdGlvbgorCWlmIHRlc3QgLXogIiR7Q0N9IgorCXRoZW4KKwkJZm91bmRfZ2NjPQorCQlmb3VuZF9jbGFuZz0KKwkJYXNfc2F2ZV9JRlM9JElGUzsgSUZTPToKKwkJZm9yIGFzX2RpciBpbiAkUEFUSAorCQlkbworCQkJSUZTPSRhc19zYXZlX0lGUworCQkJaWYgdGVzdCAteCAkYXNfZGlyL2djYzsgdGhlbgorCQkJCWlmIHRlc3QgLXogIiR7Zm91bmRfZ2NjfSI7IHRoZW4KKwkJCQkJZm91bmRfZ2NjPSRhc19kaXIvZ2NjCisJCQkJZmkKKwkJCWZpCisJCQlpZiB0ZXN0IC14ICRhc19kaXIvY2xhbmc7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2NsYW5nfSI7IHRoZW4KKwkJCQkJZm91bmRfY2xhbmc9JGFzX2Rpci9jbGFuZworCQkJCWZpCisJCQlmaQorCQlkb25lCisJCUlGUz0kYXNfc2F2ZV9JRlMKKworCQlpZiB0ZXN0IC1uICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlpZiB0ZXN0IC1uICJgIiRmb3VuZF9nY2MiIC0tdmVyc2lvbiB8IGdyZXAgbGx2bS1nY2NgIgorCQkJdGhlbgorCQkJCUFDX01TR19OT1RJQ0UoW0RldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmddKQorCQkJCUNDPSIkZm91bmRfY2xhbmciCisJCQkJQ1hYPSIkZm91bmRfY2xhbmcrKyIKKwkJCWZpCisKKworCQllbGlmIHRlc3QgLXogIiRmb3VuZF9nY2MiIC1hIC1uICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCUFDX01TR19OT1RJQ0UoW05vIEdDQyBmb3VuZCwgdXNlIENMQU5HXSkKKwkJCUNDPSIkZm91bmRfY2xhbmciCisJCQlDWFg9IiRmb3VuZF9jbGFuZysrIgorCisJCWVsaWYgdGVzdCAteiAiJGZvdW5kX2djYyIgLWEgLXogIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJZm91bmRfY2xhbmc9YC91c3IvYmluL3hjcnVuIC1maW5kIGNsYW5nIDI+L2Rldi9udWxsYAorCQkJaWYgdGVzdCAtbiAiJHtmb3VuZF9jbGFuZ30iCisJCQl0aGVuCisJCQkJQUNfTVNHX05PVElDRShbVXNpbmcgY2xhbmcgZnJvbSBYY29kZS5hcHBdKQorCQkJCUNDPSIke2ZvdW5kX2NsYW5nfSIKKwkJCQlDWFg9ImAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZysrYCIKKworCQkJIyBlbHNlOiB1c2UgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWZpCisJCWZpCisJZmkKK2ZpCiBBQ19QUk9HX0NDCiAKIEFDX1NVQlNUKENYWCkKQEAgLTUwMCw4ICs2NjgsOSBAQAogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KICAgICAgICAgY2FzZSAiJENDIiBpbgotICAgICAgICBnY2MpICAgIEFDX1BBVEhfUFJPRyhDWFgsIFtnKytdLCBbZysrXSwgW25vdGZvdW5kXSkgOzsKLSAgICAgICAgY2MpICAgICBBQ19QQVRIX1BST0coQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CisgICAgICAgIGdjYykgICAgQUNfUEFUSF9UT09MKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OworICAgICAgICBjYykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKKyAgICAgICAgY2xhbmd8Ki9jbGFuZykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjbGFuZysrXSwgW2NsYW5nKytdLCBbbm90Zm91bmRdKSA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNTEwLDcgKzY3OSw3IEBACiBmaQogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KLQlBQ19DSEVDS19QUk9HUyhDWFgsICRDQ0MgYysrIGcrKyBnY2MgQ0MgY3h4IGNjKysgY2wsIG5vdGZvdW5kKQorCUFDX0NIRUNLX1RPT0xTKENYWCwgJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbCwgbm90Zm91bmQpCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgogCQlDWFg9IiIKQEAgLTcwNCwyMiArODczLDIzIEBACiAKIEFDX01TR19DSEVDS0lORyhmb3IgLS1lbmFibGUtcHJvZmlsaW5nKQogQUNfQVJHX0VOQUJMRShwcm9maWxpbmcsCi0gICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wcm9maWxpbmddLCBbZW5hYmxlIEMtbGV2ZWwgY29kZSBwcm9maWxpbmddKSwKLVthY19zYXZlX2NjPSIkQ0MiCi0gQ0M9IiRDQyAtcGciCi0gQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH1dXSldLAotICAgW2FjX2VuYWJsZV9wcm9maWxpbmc9InllcyJdLAotICAgW2FjX2VuYWJsZV9wcm9maWxpbmc9Im5vIl0sCi0gICBbYWNfZW5hYmxlX3Byb2ZpbGluZz0ibm8iXSkKLSBDQz0iJGFjX3NhdmVfY2MiXSkKLUFDX01TR19SRVNVTFQoJGFjX2VuYWJsZV9wcm9maWxpbmcpCisgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wcm9maWxpbmddLCBbZW5hYmxlIEMtbGV2ZWwgY29kZSBwcm9maWxpbmddKSkKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIGFjX3NhdmVfY2M9IiRDQyIKKyAgQ0M9IiQoQ0MpIC1wZyIKKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbaW50IG1haW4oKSB7IHJldHVybiAwOyB9XV0pXSwKKyAgICBbXSwKKyAgICBbZW5hYmxlX3Byb2ZpbGluZz1ub10pCisgIENDPSIkYWNfc2F2ZV9jYyIKK2Vsc2UKKyAgZW5hYmxlX3Byb2ZpbGluZz1ubworZmkKK0FDX01TR19SRVNVTFQoJGVuYWJsZV9wcm9maWxpbmcpCiAKLWNhc2UgIiRhY19lbmFibGVfcHJvZmlsaW5nIiBpbgotICAgICJ5ZXMiKQotCUJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKLQlMREZMQUdTPSItcGcgJExERkxBR1MiCi0gICAgOzsKLWVzYWMKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIEJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKKyAgTERGTEFHUz0iLXBnICRMREZMQUdTIgorZmkKIAogQUNfTVNHX0NIRUNLSU5HKExETElCUkFSWSkKIApAQCAtNzgzLDExICs5NTMsNiBAQAogCSAgQkxETElCUkFSWT0nLVdsLCtiLCQoTElCRElSKSAtTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9U0hMSUJfUEFUSD1gcHdkYDoke1NITElCX1BBVEh9CiAJICA7OwotICAgIE9TRiopCi0JICBMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5zbycKLQkgIEJMRExJQlJBUlk9Jy1ycGF0aCAkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwotCSAgUlVOU0hBUkVEPUxEX0xJQlJBUllfUEFUSD1gcHdkYDoke0xEX0xJQlJBUllfUEFUSH0KLQkgIDs7CiAgICAgRGFyd2luKikKICAgICAJTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuZHlsaWInCiAJQkxETElCUkFSWT0nLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwpAQCAtODA4LDExICs5NzMsMTUgQEAKICAgZXNhYwogZmkKIAoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKwlSVU5TSEFSRUQ9CitmaQorCiBBQ19NU0dfUkVTVUxUKCRMRExJQlJBUlkpCiAKIEFDX1BST0dfUkFOTElCCiBBQ19TVUJTVChBUikKLUFDX0NIRUNLX1BST0dTKEFSLCBhciBhYWwsIGFyKQorQUNfQ0hFQ0tfVE9PTFMoQVIsIGFyIGFhbCwgYXIpCiAKICMgdHdlYWsgQVJGTEFHUyBvbmx5IGlmIHRoZSB1c2VyIGRpZG4ndCBzZXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZQogQUNfU1VCU1QoQVJGTEFHUykKQEAgLTgyMSw1MSArOTkwLDE1IEBACiAgICAgICAgIEFSRkxBR1M9InJjIgogZmkKIAotQUNfU1VCU1QoU1ZOVkVSU0lPTikKLUFDX0NIRUNLX1BST0coU1ZOVkVSU0lPTiwgc3ZudmVyc2lvbiwgZm91bmQsIG5vdC1mb3VuZCkKLWlmIHRlc3QgJFNWTlZFUlNJT04gPSBmb3VuZAotdGhlbgotCVNWTlZFUlNJT049InN2bnZlcnNpb24gXCQoc3JjZGlyKSIKLWVsc2UKLQlTVk5WRVJTSU9OPSJlY2hvIFVudmVyc2lvbmVkIGRpcmVjdG9yeSIKK0FDX0NIRUNLX1RPT0xTKFtSRUFERUxGXSwgW3JlYWRlbGZdLCBbOl0pCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIGNhc2UgIiRSRUFERUxGIiBpbgorCXJlYWRlbGZ8OikKKwlBQ19NU0dfRVJST1IoW3JlYWRlbGYgZm9yIHRoZSBob3N0IGlzIHJlcXVpcmVkIGZvciBjcm9zcyBidWlsZHNdKQorCTs7CisgICAgZXNhYwogZmkKLQotQUNfU1VCU1QoQkFTRUNQUEZMQUdTKQotaWYgdGVzdCAiJGFic19zcmNkaXIiICE9ICIkYWJzX2J1aWxkZGlyIjsgdGhlbgotICAgICMgSWYgd2UncmUgYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcKLSAgICAjIHJlc291cmNlcyBnZXQgcGlja2VkIHVwIGJlZm9yZSB0aGVpciAkc3JjZGlyIGNvdW50ZXJwYXJ0cy4KLSAgICAjICAgT2JqZWN0cy8gLT4gdHlwZXNsb3RzLmluYwotICAgICMgICBJbmNsdWRlLyAtPiBQeXRob24tYXN0LmgsIGdyYW1pbml0LmgKLSAgICAjICAgUHl0aG9uLyAgLT4gaW1wb3J0bGliLmgKLSAgICAjIChBIHNpZGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB0aGVzZSByZXNvdXJjZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlCi0gICAgIyAgcmVnZW5lcmF0ZWQgd2hlbiBidWlsZGluZyBvdXQtb2YtdHJlZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdAotICAgICMgIHRoZSAkc3JjZGlyIGNvdW50ZXJwYXJ0IGlzIHVwLXRvLWRhdGUuICBUaGlzIGlzIGFuIGFjY2VwdGFibGUgdHJhZGUKLSAgICAjICBvZmYuKQotICAgIEJBU0VDUFBGTEFHUz0iLUlPYmplY3RzIC1JSW5jbHVkZSAtSVB5dGhvbiIKLWVsc2UKLSAgICBCQVNFQ1BQRkxBR1M9IiIKLWZpCi0KLUFDX1NVQlNUKEhHVkVSU0lPTikKLUFDX1NVQlNUKEhHVEFHKQotQUNfU1VCU1QoSEdCUkFOQ0gpCi0KLWlmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKLXRoZW4KLUFDX0NIRUNLX1BST0coSEFTX0hHLCBoZywgZm91bmQsIG5vdC1mb3VuZCkKLWVsc2UKLUhBU19IRz1uby1yZXBvc2l0b3J5Ci1maQotaWYgdGVzdCAkSEFTX0hHID0gZm91bmQKLXRoZW4KLSAgICBIR1ZFUlNJT049ImhnIGlkIC1pIFwkKHNyY2RpcikiCi0gICAgSEdUQUc9ImhnIGlkIC10IFwkKHNyY2RpcikiCi0gICAgSEdCUkFOQ0g9ImhnIGlkIC1iIFwkKHNyY2RpcikiCi1lbHNlCi0gICAgSEdWRVJTSU9OPSIiCi0gICAgSEdUQUc9IiIKLSAgICBIR0JSQU5DSD0iIgotZmkKK0FDX1NVQlNUKFJFQURFTEYpCiAKIEFDX1NVQlNUKEFTRExHRU4pCiBBQ19DSEVDS19QUk9HUyhQWVRIT04sIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob24sIG5vdC1mb3VuZCkKQEAgLTEwMjAsMTAgKzExNTMsMzIgQEAKICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1mbm8tc3RyaWN0LWFsaWFzaW5nIgogICAgIGZpCiAKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcmVzdWx0IHdhcm5pbmcpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1yZXN1bHQgLVdlcnJvciIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKwkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPXllcworCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKwkgXSkpCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgotICAgIGNhc2UgJGFjX3N5c19tYWNoaW5lIGluCisgICAgY2FzZSAkaG9zdCBpbgogICAgICAgICAgYWxwaGEqKQogICAgICAgICAgICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKICAgICAgICAgICAgICAgICA7OwpAQCAtMTA5Nyw3ICsxMjUyLDkgQEAKIAkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgogCSAgICAjCiAJICAgIGN1cl90YXJnZXQ9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgc2VkICdzL1woMTBcLltbMC05XV0qXCkuKi9cMS8nYAotCSAgICBpZiB0ZXN0ICR7Y3VyX3RhcmdldH0gJz4nIDEwLjI7IHRoZW4KKwkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yICYmIFwKKwkgICAgICAgdGVzdCAke2N1cl90YXJnZXR9ICc8JyAxMC42CisJICAgIHRoZW4KIAkJICAgIGN1cl90YXJnZXQ9MTAuMwogCQkgICAgaWYgdGVzdCAke2VuYWJsZV91bml2ZXJzYWxzZGt9OyB0aGVuCiAJCQkgICAgaWYgdGVzdCAiJHtVTklWRVJTQUxfQVJDSFN9IiA9ICJhbGwiOyB0aGVuCkBAIC0xMTM2LDkgKzEyOTMsNiBAQAogCSAgICBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScnCiAKIAkgICAgOzsKLQlPU0YqKQotCSAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCi0JICAgIDs7CiAgICAgZXNhYwogICAgIDs7CiAKQEAgLTExNDcsOSArMTMwMSw2IEBACiAgICAgT3BlblVOSVgqfFVuaXhXYXJlKikKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtSyBwZW50aXVtLGhvc3QsaW5saW5lLGxvb3BfdW5yb2xsLGFsbG9jYSAiCiAJOzsKLSAgICBPU0YqKQotCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1pZWVlIC1zdGQiCi0gICAgCTs7CiAgICAgU0NPX1NWKikKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtYmVsZiAtS2k0ODYgLURTQ081IgogCTs7CkBAIC0xMzUwLDIxICsxNTAxLDQyIEBACiAKICMgY2hlY2tzIGZvciBoZWFkZXIgZmlsZXMKIEFDX0hFQURFUl9TVERDCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogQUNfQ0hFQ0tfSEVBREVSUyhhc20vdHlwZXMuaCBjb25pby5oIGN1cnNlcy5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKLWllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHBvbGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggdGhyZWFkLmggXAoraWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBuY3Vyc2VzLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCi1zeXMvYXVkaW9pby5oIHN5cy9ic2R0dHkuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9sb2FkYXZnLmggXAotc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCi1zeXMvcGFyYW0uaCBzeXMvcG9sbC5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKLXN5cy9zeXNjYWxsLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAotc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIGxpYnV0aWwuaCBcCi1zeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCitwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKK3N5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXAorc3lzL2tlcm5fY29udHJvbC5oIHN5cy9sb2FkYXZnLmggc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCitzeXMvcGFyYW0uaCBzeXMvc2VsZWN0Lmggc3lzL3NlbmRmaWxlLmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggXAorc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAorc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCitsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAogYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBzcGF3bi5oIHV0aWwuaCkKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiBBQ19IRUFERVJfRElSRU5UCiBBQ19IRUFERVJfTUFKT1IKIAorIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KK0FDX0NIRUNLX0hFQURFUlMoW25ldC9pZi5oXSwgW10sIFtdLAorWyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIFNURENfSEVBREVSUworIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8c3RkZGVmLmg+CisjZWxzZQorIyBpZmRlZiBIQVZFX1NURExJQl9ICisjICBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgZW5kaWYKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorXSkKKworCiAjIE9uIFNvbGFyaXMsIHRlcm0uaCByZXF1aXJlcyBjdXJzZXMuaAogQUNfQ0hFQ0tfSEVBREVSUyh0ZXJtLmgsLCxbCiAjaWZkZWYgSEFWRV9DVVJTRVNfSApAQCAtMTM4Miw2ICsxNTU0LDEzIEBACiAjZW5kaWYKIF0pCiAKKyMgT24gTGludXgsIGNhbi5oIGFuZCBjYW4vcmF3LmggcmVxdWlyZSBzeXMvc29ja2V0LmgKK0FDX0NIRUNLX0hFQURFUlMobGludXgvY2FuLmggbGludXgvY2FuL3Jhdy5oLCwsWworI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCitdKQorCiAjIGNoZWNrcyBmb3IgdHlwZWRlZnMKIHdhc19pdF9kZWZpbmVkPW5vCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGNsb2NrX3QgaW4gdGltZS5oKQpAQCAtMTM5MCw3ICsxNTY5LDYgQEAKIF0pCiBBQ19NU0dfUkVTVUxUKCR3YXNfaXRfZGVmaW5lZCkKIAotIyBDaGVjayB3aGV0aGVyIHVzaW5nIG1ha2VkZXYgcmVxdWlyZXMgZGVmaW5pbmcgX09TRl9TT1VSQ0UKIEFDX01TR19DSEVDS0lORyhmb3IgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMTQwMywxOSArMTU4MSw2IEBACiBdXSwgW1sKICAgbWFrZWRldigwLCAwKSBdXSkKIF0sW2FjX2N2X2hhc19tYWtlZGV2PXllc10sW2FjX2N2X2hhc19tYWtlZGV2PW5vXSkKLWlmIHRlc3QgIiRhY19jdl9oYXNfbWFrZWRldiIgPSAibm8iOyB0aGVuCi0gICAgIyB3ZSBkaWRuJ3QgbGluaywgdHJ5IGlmIF9PU0ZfU09VUkNFIHdpbGwgYWxsb3cgdXMgdG8gbGluawotICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSNkZWZpbmUgX09TRl9TT1VSQ0UgMQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAgIF1dLAotICAgIFtbIG1ha2VkZXYoMCwgMCkgXV0pXSwKLSAgICBbYWNfY3ZfaGFzX21ha2VkZXY9eWVzXSwKLSAgICBbYWNfY3ZfaGFzX21ha2VkZXY9bm9dKQotICAgIGlmIHRlc3QgIiRhY19jdl9oYXNfbWFrZWRldiIgPSAieWVzIjsgdGhlbgotICAgICAgICBBQ19ERUZJTkUoX09TRl9TT1VSQ0UsIDEsIFtEZWZpbmUgX09TRl9TT1VSQ0UgdG8gZ2V0IHRoZSBtYWtlZGV2IG1hY3JvLl0pCi0gICAgZmkKLWZpCiBBQ19NU0dfUkVTVUxUKCRhY19jdl9oYXNfbWFrZWRldikKIGlmIHRlc3QgIiRhY19jdl9oYXNfbWFrZWRldiIgPSAieWVzIjsgdGhlbgogICAgIEFDX0RFRklORShIQVZFX01BS0VERVYsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgbWFrZWRldiBtYWNyby5dKQpAQCAtMTQ3NSw2ICsxNjQwLDggQEAKIEFDX1RZUEVfSU5UNjRfVAogQUNfQ0hFQ0tfVFlQRShzc2l6ZV90LAogICBBQ19ERUZJTkUoSEFWRV9TU0laRV9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgc3NpemVfdF0pLCwpCitBQ19DSEVDS19UWVBFKF9fdWludDEyOF90LAorICBBQ19ERUZJTkUoSEFWRV9HQ0NfVUlOVDEyOF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgX191aW50MTI4X3RdKSwsKQogCiAjIFNpemVzIG9mIHZhcmlvdXMgY29tbW9uIGJhc2ljIHR5cGVzCiAjIEFOU0kgQyByZXF1aXJlcyBzaXplb2YoY2hhcikgPT0gMSwgc28gbm8gbmVlZCB0byBjaGVjayBpdApAQCAtMTczNSw3ICsxOTAyLDYgQEAKIAkJZWxzZQogCQkJTERTSEFSRUQ9J2xkIC1iJwogCQlmaSA7OwotCU9TRiopIExEU0hBUkVEPSJsZCAtc2hhcmVkIC1leHBlY3RfdW5yZXNvbHZlZCBcIipcIiI7OwogCURhcndpbi8xLjMqKQogCQlMRFNIQVJFRD0nJChDQykgLWJ1bmRsZScKIAkJTERDWFhTSEFSRUQ9JyQoQ1hYKSAtYnVuZGxlJwpAQCAtMTk2NSw2ICsyMTMxLDcgQEAKIAogCiAjIGNoZWNrcyBmb3IgbGlicmFyaWVzCitBQ19DSEVDS19MSUIoc2VuZGZpbGUsIHNlbmRmaWxlKQogQUNfQ0hFQ0tfTElCKGRsLCBkbG9wZW4pCSMgRHluYW1pYyBsaW5raW5nIGZvciBTdW5PUy9Tb2xhcmlzIGFuZCBTWVNWCiBBQ19DSEVDS19MSUIoZGxkLCBzaGxfbG9hZCkJIyBEeW5hbWljIGxpbmtpbmcgZm9yIEhQLVVYCiAKQEAgLTIwMzgsNiArMjIwNSwxNSBAQAogCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3N5c3RlbV9mZmkpCiAKKyMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYm1wZGVjIGxpYnJhcnkKK0FDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXN5c3RlbS1saWJtcGRlYykKK0FDX0FSR19XSVRIKHN5c3RlbV9saWJtcGRlYywKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWxpYm1wZGVjXSwgW2J1aWxkIF9kZWNpbWFsIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgbGlibXBkZWMgbGlicmFyeV0pLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICBbd2l0aF9zeXN0ZW1fbGlibXBkZWM9Im5vIl0pCisKK0FDX01TR19SRVNVTFQoJHdpdGhfc3lzdGVtX2xpYm1wZGVjKQorCiAjIENoZWNrIGZvciBzdXBwb3J0IGZvciBsb2FkYWJsZSBzcWxpdGUgZXh0ZW5zaW9ucwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucykKIEFDX0FSR19FTkFCTEUobG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMsCkBAIC0yMDg5LDIxICsyMjY1LDEwIEBACiBBQ19TVUJTVChVU0VfVEhSRUFEX01PRFVMRSkKIFVTRV9USFJFQURfTU9EVUxFPSIiCiAKLUFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWRlYy10aHJlYWRzKQogQUNfU1VCU1QoTERMQVNUKQotQUNfQVJHX1dJVEgoZGVjLXRocmVhZHMsCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWRlYy10aHJlYWRzXSwgW3VzZSBERUMgQWxwaGEvT1NGMSB0aHJlYWQtc2FmZSBsaWJyYXJpZXNdKSwKLVsKLUFDX01TR19SRVNVTFQoJHdpdGh2YWwpCi1MRExBU1Q9LXRocmVhZHMKLWlmIHRlc3QgIiR7d2l0aF90aHJlYWQrc2V0fSIgIT0gc2V0OyB0aGVuCi0gICB3aXRoX3RocmVhZD0iJHdpdGh2YWwiOwotZmldLAotW0FDX01TR19SRVNVTFQobm8pXSkKIAogIyBUZW1wbGF0ZXMgZm9yIHRoaW5ncyBBQ19ERUZJTkVkIG1vcmUgdGhhbiBvbmNlLgogIyBGb3IgYSBzaW5nbGUgQUNfREVGSU5FLCBubyB0ZW1wbGF0ZSBpcyBuZWVkZWQuCi1BSF9URU1QTEFURShDX1RIUkVBRFMsW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTWFjaCBjdGhyZWFkcyBwYWNrYWdlXSkKIEFIX1RFTVBMQVRFKF9SRUVOVFJBTlQsCiAgIFtEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zXSkKIEFIX1RFTVBMQVRFKFdJVEhfVEhSRUFELApAQCAtMjE4NSwxNyArMjM1MCw2IEBACiAgICAgQUNfTVNHX1JFU1VMVCgkdW5pc3RkX2RlZmluZXNfcHRocmVhZHMpCiAKICAgICBBQ19ERUZJTkUoX1JFRU5UUkFOVCkKLSAgICBBQ19DSEVDS19IRUFERVIoY3RocmVhZHMuaCwgW0FDX0RFRklORShXSVRIX1RIUkVBRCkKLSAgICBBQ19ERUZJTkUoQ19USFJFQURTKQotICAgIEFDX0RFRklORShIVVJEX0NfVEhSRUFEUywgMSwKLSAgICBbRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyBkaXJlY3RseSB1bmRlciAvaW5jbHVkZV0pCi0gICAgTElCUz0iJExJQlMgLWx0aHJlYWRzIgotICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIl0sWwotICAgIEFDX0NIRUNLX0hFQURFUihtYWNoL2N0aHJlYWRzLmgsIFtBQ19ERUZJTkUoV0lUSF9USFJFQUQpCi0gICAgQUNfREVGSU5FKENfVEhSRUFEUykKLSAgICBBQ19ERUZJTkUoTUFDSF9DX1RIUkVBRFMsIDEsCi0gICAgW0RlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgdW5kZXIgbWFjaCAvXSkKLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyJdLFsKICAgICAjIEp1c3QgbG9va2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gbGlicHRocmVhZCBpcyBub3QgZW5vdWdoOgogICAgICMgb24gSFAvVVgsIHB0aHJlYWQuaCByZW5hbWVzIHB0aHJlYWRfY3JlYXRlIHRvIGEgZGlmZmVyZW50IHN5bWJvbCBuYW1lLgogICAgICMgU28gd2UgcmVhbGx5IGhhdmUgdG8gaW5jbHVkZSBwdGhyZWFkLmgsIGFuZCB0aGVuIGxpbmsuCkBAIC0yMjMxLDcgKzIzODUsNyBAQAogICAgIExJQlM9IiRMSUJTIC1sY21hIgogICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIl0sWwogICAgIFVTRV9USFJFQURfTU9EVUxFPSIjIl0pCi0gICAgXSldKV0pXSldKV0pXSkKKyAgICBdKV0pXSldKV0pCiAKICAgICBBQ19DSEVDS19MSUIobXBjLCB1c2NvbmZpZywgW0FDX0RFRklORShXSVRIX1RIUkVBRCkKICAgICBMSUJTPSIkTElCUyAtbG1wYyIKQEAgLTIyNDQsMTUgKzIzOTgsNiBAQAogICAgICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iCiAgICAgICBVU0VfVEhSRUFEX01PRFVMRT0iIl0pCiAgICAgZmkKLQotICAgIGlmIHRlc3QgIiRVU0VfVEhSRUFEX01PRFVMRSIgIT0gIiMiCi0gICAgdGhlbgotICAgICAgICAjIElmIHRoZSBhYm92ZSBjaGVja3MgZGlkbid0IGRpc2FibGUgdGhyZWFkcywgKGF0IGxlYXN0KSBPU0YxCi0gICAgICAgICMgbmVlZHMgdGhpcyAnLXRocmVhZHMnIGFyZ3VtZW50IGR1cmluZyBsaW5raW5nLgotICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0gICAgICAgIE9TRjEpIExETEFTVD0tdGhyZWFkczs7Ci0gICAgICAgIGVzYWMKLSAgICBmaQogZmkKIAogaWYgdGVzdCAiJHBvc2l4X3RocmVhZHMiID0gInllcyI7IHRoZW4KQEAgLTI1MjYsMTIgKzI2NzEsMTIgQEAKIGlmIHRlc3QgLXogIiR3aXRoX3B5bWFsbG9jIgogdGhlbgogICAgIHdpdGhfcHltYWxsb2M9InllcyIKLSAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIGlmIHRlc3QgIiR3aXRoX3B5bWFsbG9jIiAhPSAibm8iCiB0aGVuCiAgICAgQUNfREVGSU5FKFdJVEhfUFlNQUxMT0MsIDEsIAogICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gUHl0aG9uLXNwZWNpZmljIG1hbGxvY3NdKQorICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfW0iCiBmaQogQUNfTVNHX1JFU1VMVCgkd2l0aF9weW1hbGxvYykKIApAQCAtMjYwMCwyMyArMjc0NSwzNSBAQAogZWxzZQogCU1BQ0hERVBfT0JKUz0iJE1BQ0hERVBfT0JKUyAkZXh0cmFfbWFjaGRlcF9vYmpzIgogZmkKLUFDX01TR19SRVNVTFQoTUFDSERFUF9PQkpTKQoraWYgdGVzdCAteiAiJE1BQ0hERVBfT0JKUyI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbbm9uZV0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoWyRNQUNIREVQX09CSlNdKQorZmkKIAogIyBjaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zCiBBQ19DSEVDS19GVU5DUyhhbGFybSBhY2NlcHQ0IHNldGl0aW1lciBnZXRpdGltZXIgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgY2hvd24gXAotIGNsb2NrIGNvbmZzdHIgY3Rlcm1pZCBleGVjdiBmY2htb2QgZmNob3duIGZvcmsgZnBhdGhjb25mIGZ0aW1lIGZ0cnVuY2F0ZSBcCi0gZ2FpX3N0cmVycm9yIGdldGdyb3VwcyBnZXRsb2dpbiBnZXRsb2FkYXZnIGdldHBlZXJuYW1lIGdldHBnaWQgZ2V0cGlkIFwKKyBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmFjY2Vzc2F0IGZjaG1vZCBmY2htb2RhdCBmY2hvd24gZmNob3duYXQgXAorIGZleGVjdmUgZmRvcGVuZGlyIGZvcmsgZnBhdGhjb25mIGZzdGF0YXQgZnRpbWUgZnRydW5jYXRlIGZ1dGltZXNhdCBcCisgZnV0aW1lbnMgZnV0aW1lcyBnYWlfc3RyZXJyb3IgXAorIGdldGdyb3VwbGlzdCBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCiAgZ2V0cHJpb3JpdHkgZ2V0cmVzdWlkIGdldHJlc2dpZCBnZXRwd2VudCBnZXRzcG5hbSBnZXRzcGVudCBnZXRzaWQgZ2V0d2QgXAotIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsc3RhdCBtYnJ0b3djIG1rZmlmbyBta25vZCBta3RpbWUgXAotIG1yZW1hcCBuaWNlIHBhdGhjb25mIHBhdXNlIHBsb2NrIHBvbGwgcHRocmVhZF9pbml0IFwKLSBwdXRlbnYgcmVhZGxpbmsgcmVhbHBhdGggXAotIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNldGVnaWQgc2V0ZXVpZCBcCi0gc2V0Z2lkIFwKLSBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHVpZCBzZXR2YnVmIFwKLSBzaWdhY3Rpb24gc2lnaW50ZXJydXB0IHNpZ3JlbHNlIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgXAorIGlmX25hbWVpbmRleCBcCisgaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxvY2tmIGxpbmthdCBsc3RhdCBsdXRpbWVzIG1tYXAgXAorIG1lbXJjaHIgbWJydG93YyBta2RpcmF0IG1rZmlmbyBcCisgbWtmaWZvYXQgbWtub2QgbWtub2RhdCBta3RpbWUgbXJlbWFwIG5pY2Ugb3BlbmF0IHBhdGhjb25mIHBhdXNlIHBpcGUyIHBsb2NrIHBvbGwgXAorIHBvc2l4X2ZhbGxvY2F0ZSBwb3NpeF9mYWR2aXNlIHByZWFkIFwKKyBwdGhyZWFkX2luaXQgcHRocmVhZF9raWxsIHB1dGVudiBwd3JpdGUgcmVhZGxpbmsgcmVhZGxpbmthdCByZWFkdiByZWFscGF0aCByZW5hbWVhdCBcCisgc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2VuZGZpbGUgc2V0ZWdpZCBzZXRldWlkIFwKKyBzZXRnaWQgc2V0aG9zdG5hbWUgXAorIHNldGxvY2FsZSBzZXRyZWdpZCBzZXRyZXVpZCBzZXRyZXN1aWQgc2V0cmVzZ2lkIHNldHNpZCBzZXRwZ2lkIHNldHBncnAgc2V0cHJpb3JpdHkgc2V0dWlkIHNldHZidWYgXAorIHNjaGVkX2dldF9wcmlvcml0eV9tYXggc2NoZWRfc2V0YWZmaW5pdHkgc2NoZWRfc2V0c2NoZWR1bGVyIHNjaGVkX3NldHBhcmFtIFwKKyBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgXAorIHNpZ2FjdGlvbiBzaWdhbHRzdGFjayBzaWdpbnRlcnJ1cHQgc2lncGVuZGluZyBzaWdyZWxzZSBcCisgc2lndGltZWR3YWl0IHNpZ3dhaXQgc2lnd2FpdGluZm8gc25wcmludGYgc3RyZnRpbWUgc3RybGNweSBzeW1saW5rYXQgc3luYyBcCiAgc3lzY29uZiB0Y2dldHBncnAgdGNzZXRwZ3JwIHRlbXBuYW0gdGltZWdtIHRpbWVzIHRtcGZpbGUgdG1wbmFtIHRtcG5hbV9yIFwKLSB0cnVuY2F0ZSB1bmFtZSB1bnNldGVudiB1dGltZXMgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCi0gd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIF9nZXRwdHkpCisgdHJ1bmNhdGUgdW5hbWUgdW5saW5rYXQgdW5zZXRlbnYgdXRpbWVuc2F0IHV0aW1lcyB3YWl0aWQgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCisgd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdyaXRldiBfZ2V0cHR5KQogCiBBQ19DSEVDS19ERUNMKGRpcmZkLAogICAgIEFDX0RFRklORShIQVZFX0RJUkZELCAxLApAQCAtMjY2OCw2ICsyODI1LDEyIEBACiAgICBBQ19NU0dfUkVTVUxUKHllcyldLAogICBbQUNfTVNHX1JFU1VMVChubykKIF0pCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGVwb2xsX2NyZWF0ZTEpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPHN5cy9lcG9sbC5oPl1dLCBbW3ZvaWQgKng9ZXBvbGxfY3JlYXRlMV1dKV0sCisgIFtBQ19ERUZJTkUoSEFWRV9FUE9MTF9DUkVBVEUxLCAxLCBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdlcG9sbF9jcmVhdGUxJyBmdW5jdGlvbi4pCisgICBBQ19NU0dfUkVTVUxUKHllcyldLAorICBbQUNfTVNHX1JFU1VMVChubykKK10pCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGtxdWV1ZSkKIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTI4OTgsNiArMzA2MSwyMCBAQAogICAgIF0pCiApCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX0dFVFRJTUUsIDEpCisgICAgICAgIEFDX0RFRklORShUSU1FTU9EVUxFX0xJQiwgW3J0XSwKKyAgICAgICAgICAgICAgICAgIFtMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKV0pCisgICAgXSkKK10pCisKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHJlcywgW10sIFsKKyAgICBBQ19DSEVDS19MSUIocnQsIGNsb2NrX2dldHJlcywgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19HRVRSRVMsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMzAyMiwxMiArMzE5OSwxNyBAQAogXV1dKV0sCiBbYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm9dLAogW2FjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllc10sCi1bYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzXSkpCitbCitpZiB0ZXN0ICIke2VuYWJsZV9pcHY2K3NldH0iID0gc2V0OyB0aGVuCisgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPSJubyAtLSBjb25maWd1cmVkIHdpdGggLS0oZW58ZGlzKWFibGUtaXB2NiIKK2Vsc2UKKyAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzCitmaV0pKQogZmkKIAogQUNfTVNHX1JFU1VMVCgkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8pCiAKLWlmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyAtbyAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcworaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIHx8IHRlc3QgIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKIHRoZW4KIAlpZiB0ZXN0ICRpcHY2ID0geWVzCiAJdGhlbgpAQCAtMzMxOSw2ICszNTAxLDIxIEBACiBmaV0sCiBbQUNfTVNHX1JFU1VMVChkZWZhdWx0IExJQkM9IiRMSUJDIildKQogCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ2hlY2sgZm9yIGdjYyB4NjQgaW5saW5lIGFzc2VtYmxlciAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FDX01TR19DSEVDS0lORyhmb3IgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1vdnEgJXJjeCwgJXJheCIpOworXV0pXSxbaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9eWVzXSxbaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9nY2NfYXNtX2Zvcl94NjQpCitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID0geWVzCit0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0NDX0FTTV9GT1JfWDY0LCAxLAorICAgIFtEZWZpbmUgaWYgd2UgY2FuIHVzZSB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXJdKQorZmkKKwogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMzQ2Nyw3ICszNjY0LDcgQEAKIExJQlM9IiRMSUJTICRMSUJNIgogCiBBQ19DSEVDS19GVU5DUyhbYWNvc2ggYXNpbmggYXRhbmggY29weXNpZ24gZXJmIGVyZmMgZXhwbTEgZmluaXRlIGdhbW1hXSkKLUFDX0NIRUNLX0ZVTkNTKFtoeXBvdCBsZ2FtbWEgbG9nMXAgcm91bmQgdGdhbW1hXSkKK0FDX0NIRUNLX0ZVTkNTKFtoeXBvdCBsZ2FtbWEgbG9nMXAgbG9nMiByb3VuZCB0Z2FtbWFdKQogQUNfQ0hFQ0tfREVDTFMoW2lzaW5mLCBpc25hbiwgaXNmaW5pdGVdLCBbXSwgW10sIFtbI2luY2x1ZGUgPG1hdGguaD5dXSkKIAogIyBPbiBGcmVlQlNEIDYuMiwgaXQgYXBwZWFycyB0aGF0IHRhbmgoLTAuKSByZXR1cm5zIDAuIGluc3RlYWQgb2YKQEAgLTM2NjUsNTcgKzM4NjIsMTkgQEAKICAgQUNfTVNHX1JFU1VMVCgkYWNfY3Zfd2NoYXJfdF9zaWduZWQpCiBmaQogCi1BQ19NU0dfQ0hFQ0tJTkcod2hhdCB0eXBlIHRvIHVzZSBmb3Igc3RyKQotQUNfQVJHX1dJVEgod2lkZS11bmljb2RlLCAKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtd2lkZS11bmljb2RlXSwgW1VzZSA0LWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzIChkZWZhdWx0IGlzIDIgYnl0ZXMpXSksCi1bCi1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4gdW5pY29kZV9zaXplPSI0IgotZWxzZSB1bmljb2RlX3NpemU9IjIiCi1maQotXSwKLVsKLWNhc2UgIiRoYXZlX3VjczRfdGNsIiBpbgotICB5ZXMpIHVuaWNvZGVfc2l6ZT0iNCI7OwotICAqKSAgIHVuaWNvZGVfc2l6ZT0iMiIgOzsKLWVzYWMKLV0pCi0KLUFIX1RFTVBMQVRFKFB5X1VOSUNPREVfU0laRSwKLSAgW0RlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLl0pCi1jYXNlICIkdW5pY29kZV9zaXplIiBpbgotICA0KQotICAgICBBQ19ERUZJTkUoUHlfVU5JQ09ERV9TSVpFLCA0KQotICAgICBBQklGTEFHUz0iJHtBQklGTEFHU311IgotICAgICA7OwotICAqKSBBQ19ERUZJTkUoUHlfVU5JQ09ERV9TSVpFLCAyKSA7OwotZXNhYwotCi1BSF9URU1QTEFURShQWV9VTklDT0RFX1RZUEUsCi0gIFtEZWZpbmUgYXMgdGhlIGludGVncmFsIHR5cGUgdXNlZCBmb3IgVW5pY29kZSByZXByZXNlbnRhdGlvbi5dKQotCiAjIHdjaGFyX3QgaXMgb25seSB1c2FibGUgaWYgaXQgbWFwcyB0byBhbiB1bnNpZ25lZCB0eXBlCi1pZiB0ZXN0ICIkdW5pY29kZV9zaXplIiA9ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIFwKK2lmIHRlc3QgIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgLWdlIDIgXAogICAgICAgICAgIC1hICIkYWNfY3Zfd2NoYXJfdF9zaWduZWQiID0gIm5vIgogdGhlbgotICBQWV9VTklDT0RFX1RZUEU9IndjaGFyX3QiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9InllcyIKICAgQUNfREVGSU5FKEhBVkVfVVNBQkxFX1dDSEFSX1QsIDEsCiAgIFtEZWZpbmUgaWYgeW91IGhhdmUgYSB1c2VhYmxlIHdjaGFyX3QgdHlwZSBkZWZpbmVkIGluIHdjaGFyLmg7IHVzZWFibGUKICAgIG1lYW5zIHdjaGFyX3QgbXVzdCBiZSBhbiB1bnNpZ25lZCB0eXBlIHdpdGggYXQgbGVhc3QgMTYgYml0cy4gKHNlZQogICAgSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgpLl0pCi0gIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsd2NoYXJfdCkKLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBzaG9ydCIKLSAgICAgQUNfREVGSU5FKFBZX1VOSUNPREVfVFlQRSx1bnNpZ25lZCBzaG9ydCkKLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIGxvbmciCi0gICAgIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsdW5zaWduZWQgbG9uZykKIGVsc2UKLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJubyB0eXBlIGZvdW5kIgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJubyB1c2FibGUgd2NoYXJfdCBmb3VuZCIKIGZpCi1BQ19NU0dfUkVTVUxUKCRQWV9VTklDT0RFX1RZUEUpCitBQ19NU0dfUkVTVUxUKCRIQVZFX1VTQUJMRV9XQ0hBUl9UKQogCiAjIGNoZWNrIGZvciBlbmRpYW5uZXNzCiBBQ19DX0JJR0VORElBTgpAQCAtMzgyMiw3ICszOTgxLDcgQEAKICMgd2l0aCBzZXR1cC5weS4KIHB5X2N2X2xpYl9yZWFkbGluZT1ubwogQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayByZWFkbGluZSBsaWJzXSkKLWZvciBweV9saWJ0ZXJtY2FwIGluICIiIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIHRlcm1jYXA7IGRvCitmb3IgcHlfbGlidGVybWNhcCBpbiAiIiB0aW5mbyBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbwogICBpZiB0ZXN0IC16ICIkcHlfbGlidGVybWNhcCI7IHRoZW4KICAgICBSRUFETElORV9MSUJTPSItbHJlYWRsaW5lIgogICBlbHNlCkBAIC00MDY1LDYgKzQyMjQsOCBAQAogICBbRGVmaW5lIGlmIHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0X210aW1lbnNlY10pCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogIyBPbiBIUC9VWCAxMS4wLCBtdndkZWxjaCBpcyBhIGJsb2NrIHdpdGggYSByZXR1cm4gc3RhdGVtZW50CiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBtdndkZWxjaCBpcyBhbiBleHByZXNzaW9uKQogQUNfQ0FDSEVfVkFMKGFjX2N2X212d2RlbGNoX2lzX2V4cHJlc3Npb24sCkBAIC00MTE5LDI3ICs0MjgwLDM0IEBACiAgICBBQ19NU0dfUkVTVUxUKHllcyldLAogICBbQUNfTVNHX1JFU1VMVChubyldCiApCisjIGxhc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjaworQ1BQRkxBR1M9JGFjX3NhdmVfY3BwZmxhZ3MKIAotQUNfTVNHX0NIRUNLSU5HKGZvciAvZGV2L3B0bXgpCitBQ19NU0dfTk9USUNFKFtjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzXSkKIAotaWYgdGVzdCAtciAvZGV2L3B0bXgKLXRoZW4KLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gIEFDX0RFRklORShIQVZFX0RFVl9QVE1YLCAxLAotICBbRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdG14Ll0pCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCitkbmwgTk9URTogSW5mb3JtIHVzZXIgaG93IHRvIHByb2NlZWQgd2l0aCBmaWxlcyB3aGVuIGNyb3NzIGNvbXBpbGluZy4KK2lmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRteCtzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAvZGV2L3B0bXhdKQorICAgIEFDX01TR19SRVNVTFQoW25vdCBzZXRdKQorICAgIEFDX01TR19FUlJPUihbc2V0IGFjX2N2X2ZpbGVfX2Rldl9wdG14IHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmddKQorICBmaQorICBpZiB0ZXN0ICIke2FjX2N2X2ZpbGVfX2Rldl9wdGMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgL2Rldi9wdGNdKQorICAgIEFDX01TR19SRVNVTFQoW25vdCBzZXRdKQorICAgIEFDX01TR19FUlJPUihbc2V0IGFjX2N2X2ZpbGVfX2Rldl9wdGMgdG8geWVzL25vIGluIHlvdXIgQ09ORklHX1NJVEUgZmlsZSB3aGVuIGNyb3NzIGNvbXBpbGluZ10pCisgIGZpCiBmaQogCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC9kZXYvcHRjKQotCi1pZiB0ZXN0IC1yIC9kZXYvcHRjCi10aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQorQUNfQ0hFQ0tfRklMRSgvZGV2L3B0bXgsIFtdLCBbXSkKK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID0geHllczsgdGhlbgorICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRNWCwgMSwKKyAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0bXggZGV2aWNlIGZpbGUuXSkKK2ZpCitBQ19DSEVDS19GSUxFKC9kZXYvcHRjLCBbXSwgW10pCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdGMiID0geHllczsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRDLCAxLAotICBbRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdGMuXSkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKKyAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS5dKQogZmkKIAogaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwpAQCAtNDE3OSw3ICs0MzQ3LDIzIEBACiAgIF1dXSldLAogICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllc10sCiAgIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm9dLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vXSkKKyAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCisgICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgorICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorICAgICAgICAjaW5jbHVkZSA8c3RkZGVmLmg+CisgICAgICBdXSwgW1sKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7CisgICAgICBdXSldLAorICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcworICAgICkKKyAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCisgICBmaV0pCiAgICkKICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0KQogZmkKQEAgLTQyNzQsMzAgKzQ0NTgsNiBAQAogICAgd2lkZSBjaGFycyB0aGF0IHdvdWxkIGJlIGNvbnZlcnRlZC5dKQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zKQotQUNfQ0FDSEVfVkFMKGFjX2N2X2NvbXB1dGVkX2dvdG9zLAotQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07Ci0gICAgZ290byBMQUJFTDI7Ci1MQUJFTDE6Ci0gICAgcmV0dXJuIDA7Ci1MQUJFTDI6Ci0gICAgZ290byAqdGFyZ2V0c1swXTsKLSAgICByZXR1cm4gMTsKLX0KLV1dXSldLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPXllc10sCi1bYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm9dLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSkpCi1BQ19NU0dfUkVTVUxUKCRhY19jdl9jb21wdXRlZF9nb3RvcykKLWlmIHRlc3QgIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgPSB5ZXMKLXRoZW4KLSAgQUNfREVGSU5FKEhBVkVfQ09NUFVURURfR09UT1MsIDEsCi0gIFtEZWZpbmUgaWYgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuXSkKLWZpCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MpCiBBQ19BUkdfV0lUSChjb21wdXRlZC1nb3RvcywKQEAgLTQzMTksMTggKzQ0NzksMzkgQEAKIF0sCiBbQUNfTVNHX1JFU1VMVChubyB2YWx1ZSBzcGVjaWZpZWQpXSkKIAorQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zKQorQUNfQ0FDSEVfVkFMKGFjX2N2X2NvbXB1dGVkX2dvdG9zLAorQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07CisgICAgZ290byBMQUJFTDI7CitMQUJFTDE6CisgICAgcmV0dXJuIDA7CitMQUJFTDI6CisgICAgZ290byAqdGFyZ2V0c1swXTsKKyAgICByZXR1cm4gMTsKK30KK11dXSldLAorW2FjX2N2X2NvbXB1dGVkX2dvdG9zPXllc10sCitbYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm9dLAorW2lmIHRlc3QgIiR7d2l0aF9jb21wdXRlZF9nb3RvcytzZXR9IiA9IHNldDsgdGhlbgorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9IiR3aXRoX2NvbXB1dGVkX2dvdG9zIC0tIGNvbmZpZ3VyZWQgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MiCisgZWxzZQorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KKyBmaV0pKQorQUNfTVNHX1JFU1VMVCgkYWNfY3ZfY29tcHV0ZWRfZ290b3MpCitjYXNlICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiIGluIHllcyopCisgIEFDX0RFRklORShIQVZFX0NPTVBVVEVEX0dPVE9TLCAxLAorICBbRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLl0pCitlc2FjCisKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KIEFJWCopICAgCiAgIEFDX0RFRklORShIQVZFX0JST0tFTl9QSVBFX0JVRiwgMSwgW0RlZmluZSBpZiB0aGUgc3lzdGVtIHJlcG9ydHMgYW4gaW52YWxpZCBQSVBFX0JVRiB2YWx1ZS5dKSA7OwogZXNhYwogCiAKLWNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgT1NGKikgQUNfTVNHX0VSUk9SKE9TRiogc3lzdGVtcyBhcmUgZGVwcmVjYXRlZCB1bmxlc3Mgc29tZWJvZHkgdm9sdW50ZWVycy4gQ2hlY2sgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTg2MDYpIDs7Ci1lc2FjCi0KLUFDX0NIRUNLX0ZVTkMocGlwZTIsIEFDX0RFRklORShIQVZFX1BJUEUyLCAxLCBbRGVmaW5lIGlmIHRoZSBPUyBzdXBwb3J0cyBwaXBlMigpXSksICkKLQogQUNfU1VCU1QoVEhSRUFESEVBREVSUykKIAogZm9yIGggaW4gYChjZCAkc3JjZGlyO2VjaG8gUHl0aG9uL3RocmVhZF8qLmgpYApAQCAtNDM0OCw2ICs0NTI5LDg5IEBACiBkb25lCiBBQ19NU0dfUkVTVUxUKGRvbmUpCiAKKyMgQXZhaWxhYmlsaXR5IG9mIC1PMjoKK0FDX01TR19DSEVDS0lORyhmb3IgLU8yKQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIiCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCitdXSldLFtoYXZlX08yPXllc10sW2hhdmVfTzI9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9PMikKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKKworIyBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kIGJjb3B5IGFyZSBpbmNvcnJlY3Q6CisjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTAtMTIvbXNnMDAwMDkuaHRtbAorQUNfTVNHX0NIRUNLSU5HKGZvciBnbGliYyBfRk9SVElGWV9TT1VSQ0UvbWVtbW92ZSBidWcpCitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiAtRF9GT1JUSUZZX1NPVVJDRT0yIgoraWYgdGVzdCAiJGhhdmVfTzIiID0gbm87IHRoZW4KKyAgICBDRkxBR1M9IiIKK2ZpCitBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cit2b2lkIGZvbyh2b2lkICpwLCB2b2lkICpxKSB7IG1lbW1vdmUocCwgcSwgMTkpOyB9CitpbnQgbWFpbigpIHsKKyAgY2hhciBhWzMyXSA9ICIxMjM0NTY3ODkwMDAwMDAwMDAiOworICBmb28oJmFbOV0sIGEpOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICBmb28oYSwgJmFbOV0pOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KK11dKV0sCitbaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz1ub10sCitbaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz15ZXNdLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9dW5kZWZpbmVkXSkKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWcpCitpZiB0ZXN0ICIkaGF2ZV9nbGliY19tZW1tb3ZlX2J1ZyIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HTElCQ19NRU1NT1ZFX0JVRywgMSwKKyAgICBbRGVmaW5lIGlmIGdsaWJjIGhhcyBpbmNvcnJlY3QgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzCisgICAgIGZvciBtZW1tb3ZlIGFuZCBiY29weS5dKQorZmkKKworaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA9IHllczsgdGhlbgorICAgICMgU29tZSB2ZXJzaW9ucyBvZiBnY2MgbWlzY29tcGlsZSBpbmxpbmUgYXNtOgorICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQorICAgICMgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy8yMDEwLTExL21zZzAwMzY2Lmh0bWwKKyAgICBjYXNlICRDQyBpbgorICAgICAgICAqZ2NjKikKKyAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhmb3IgZ2NjIGlwYS1wdXJlLWNvbnN0IGJ1ZykKKyAgICAgICAgICAgIHNhdmVkX2NmbGFncz0iJENGTEFHUyIKKyAgICAgICAgICAgIENGTEFHUz0iLU8yIgorICAgICAgICAgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgaW50CisgICAgICAgICAgICBmb28oaW50ICpwKSB7CisgICAgICAgICAgICAgIGludCByOworICAgICAgICAgICAgICBhc20gKCAibW92bCBcJDYsICglMSlcblx0IgorICAgICAgICAgICAgICAgICAgICAieG9ybCAlMCwgJTBcblx0IgorICAgICAgICAgICAgICAgICAgICA6ICI9ciIgKHIpIDogInIiIChwKSA6ICJtZW1vcnkiCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG1haW4oKSB7CisgICAgICAgICAgICAgIGludCBwID0gODsKKyAgICAgICAgICAgICAgaWYgKChmb28oJnApID8gOiBwKSAhPSA2KQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICBbaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9bm9dLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXllc10sCisgICAgICAgICAgICBbaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9dW5kZWZpbmVkXSkKKyAgICAgICAgICAgIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKKyAgICAgICAgICAgIEFDX01TR19SRVNVTFQoJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnKQorICAgICAgICAgICAgaWYgdGVzdCAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSBpZiBnY2MgaGFzIHRoZSBpcGEtcHVyZS1jb25zdCBidWcuXSkKKyAgICAgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgZXNhYworZmkKKwogIyBnZW5lcmF0ZSBvdXRwdXQgZmlsZXMKIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZS5wcmUgTW9kdWxlcy9TZXR1cC5jb25maWcgTWlzYy9weXRob24ucGMpCiBBQ19DT05GSUdfRklMRVMoW01vZHVsZXMvbGRfc29fYWl4XSwgW2NobW9kICt4IE1vZHVsZXMvbGRfc29fYWl4XSkKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IGNhOGNjYjYuLjNjYTNhNGYgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsOSArMTIsNiBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTWFjaCBjdGhyZWFkcyBwYWNrYWdlICovCi0jdW5kZWYgQ19USFJFQURTCi0KIC8qIERlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQgaW4gQVJNCiAgICBtaXhlZC1lbmRpYW4gb3JkZXIgKGJ5dGUgb3JkZXIgNDU2NzAxMjMpICovCiAjdW5kZWYgRE9VQkxFX0lTX0FSTV9NSVhFRF9FTkRJQU5fSUVFRTc1NApAQCAtMTE2LDYgKzExMywxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9jaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHJlcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19HRVRSRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXR0aW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKwogLyogRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLiAqLwogI3VuZGVmIEhBVkVfQ09NUFVURURfR09UT1MKIApAQCAtMTY1LDEwICsxNjgsMTAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZXZpY2UgbWFjcm9zLiAqLwogI3VuZGVmIEhBVkVfREVWSUNFX01BQ1JPUwogCi0vKiBEZWZpbmUgaWYgd2UgaGF2ZSAvZGV2L3B0Yy4gKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RFVl9QVEMKIAotLyogRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdG14LiAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIC9kZXYvcHRteCBkZXZpY2UgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RFVl9QVE1YCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwpAQCAtMTk2LDYgKzE5OSw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdlcG9sbCcgZnVuY3Rpb25zLiAqLwogI3VuZGVmIEhBVkVfRVBPTEwKIAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGxfY3JlYXRlMScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9FUE9MTF9DUkVBVEUxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXJmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0VSRgogCkBAIC0yMTEsMjEgKzIxNywzNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBleHBtMScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FWFBNMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZhY2Nlc3NhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQUNDRVNTQVQKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZmNoZGlyJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZDSERJUgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjaG1vZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hNT0QKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2htb2RhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQ0hNT0RBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjaG93bicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hPV04KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2hvd25hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQ0hPV05BVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfRkNOVExfSAogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdmZGF0YXN5bmMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkRBVEFTWU5DCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmRvcGVuZGlyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZET1BFTkRJUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZleGVjdmUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkVYRUNWRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZpbml0ZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GSU5JVEUKIApAQCAtMjQ3LDYgKzI2OCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZzZWVrbycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GU0VFS08KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc3RhdGF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZTVEFUQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc3RhdHZmcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GU1RBVFZGUwogCkBAIC0yNjUsMTYgKzI4OSwzMSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdHJ1bmNhdGUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlRSVU5DQVRFCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lbnMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRlVUSU1FTlMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdXRpbWVzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdXRpbWVzYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRlVUSU1FU0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2FpX3N0cmVycm9yJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBSV9TVFJFUlJPUgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhbW1hJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBTU1BCiAKKy8qIERlZmluZSBpZiB3ZSBjYW4gdXNlIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlciAqLworI3VuZGVmIEhBVkVfR0NDX0FTTV9GT1JfWDY0CisKIC8qIERlZmluZSBpZiB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IHg4NyBjb250cm9sIHdvcmQKICAgICovCiAjdW5kZWYgSEFWRV9HQ0NfQVNNX0ZPUl9YODcKIAorLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgX191aW50MTI4X3QgKi8KKyN1bmRlZiBIQVZFX0dDQ19VSU5UMTI4X1QKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRhZGRyaW5mbyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEFERFJJTkZPCiAKQEAgLTI4NCw2ICszMjMsOSBAQAogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgZmxvY2tmaWxlKCksIGdldGNfdW5sb2NrZWQoKSwgYW5kIGZ1bmxvY2tmaWxlKCkgKi8KICN1bmRlZiBIQVZFX0dFVENfVU5MT0NLRUQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRncm91cGxpc3QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUR1JPVVBMSVNUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JvdXBzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEdST1VQUwogCkBAIC0zNTYsNiArMzk4LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHdkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFdECiAKKy8qIERlZmluZSBpZiBnbGliYyBoYXMgaW5jb3JyZWN0IF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycyBmb3IgbWVtbW92ZSBhbmQKKyAgIGJjb3B5LiAqLworI3VuZGVmIEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxncnAuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9HUlBfSAogCkBAIC0zNjgsNiArNDE0LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aWVlZWZwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSUVFRUZQX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpZl9uYW1laW5kZXgnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSUZfTkFNRUlOREVYCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2luZXRfYXRvbicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9JTkVUX0FUT04KIApAQCAtMzgzLDYgKzQzMiw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlvLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU9fSAogCisvKiBEZWZpbmUgaWYgZ2NjIGhhcyB0aGUgaXBhLXB1cmUtY29uc3QgYnVnLiAqLworI3VuZGVmIEhBVkVfSVBBX1BVUkVfQ09OU1RfQlVHCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga2lsbCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LSUxMCiAKQEAgLTQzMSwyMSArNDgzLDM5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlc29sdicgbGlicmFyeSAoLWxyZXNvbHYpLiAqLwogI3VuZGVmIEhBVkVfTElCUkVTT0xWCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGxpYnJhcnkgKC1sc2VuZGZpbGUpLiAqLworI3VuZGVmIEhBVkVfTElCU0VOREZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaWJ1dGlsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElCVVRJTF9ICiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2xpbmsnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTElOSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MSU5LQVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9DQU5fSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2Nhbi9yYXcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9uZXRsaW5rLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElOVVhfTkVUTElOS19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvdGlwYy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX1RJUENfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2tmJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xPQ0tGCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9nMXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTE9HMVAKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2cyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xPRzIKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBkb3VibGUuICovCiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRQogCkBAIC00NTUsNiArNTI1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsdXRpbWVzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xVVElNRVMKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIG1ha2VkZXYgbWFjcm8uICovCiAjdW5kZWYgSEFWRV9NQUtFREVWCiAKQEAgLTQ2NywxNSArNTQwLDMwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX01FTU9SWV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtcmNocicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NRU1SQ0hSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtkaXJhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0RJUkFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtmaWZvJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LRklGTwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZmlmb2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LRklGT0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtub2QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtOT0QKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta25vZGF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LTk9EQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta3RpbWUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NTUFQCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXJlbWFwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01SRU1BUAogCkBAIC00ODgsOSArNTc2LDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldHBhY2tldC9wYWNrZXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXQvaWYuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ORVRfSUZfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5pY2UnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTklDRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9PUEVOQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVucHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX09QRU5QVFkKIApAQCAtNTAzLDcgKzU5Nyw3IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBhdXNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BBVVNFCiAKLS8qIERlZmluZSBpZiB0aGUgT1Mgc3VwcG9ydHMgcGlwZTIoKSAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwaXBlMicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QSVBFMgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBsb2NrJyBmdW5jdGlvbi4gKi8KQEAgLTUxNSw2ICs2MDksMTUgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cG9sbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BPTExfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvc2l4X2ZhZHZpc2UnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvc2l4X2ZhbGxvY2F0ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QT1NJWF9GQUxMT0NBVEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwcmVhZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QUkVBRAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nlc3MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QUk9DRVNTX0gKIApAQCAtNTMwLDYgKzYzMyw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWRfaW5pdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QVEhSRUFEX0lOSVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkX2tpbGwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFRIUkVBRF9LSUxMCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHRocmVhZF9zaWdtYXNrJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BUSFJFQURfU0lHTUFTSwogCkBAIC01MzksMTIgKzY0NSwyNCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdXRlbnYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFVURU5WCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BXUklURQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRsaW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JFQURMSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZGxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRUFETElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZHYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRFYKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9SRUFMUEFUSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlbmFtZWF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JFTkFNRUFUCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSByZWFkbGluZSAyLjEgKi8KICN1bmRlZiBIQVZFX1JMX0NBTExCQUNLCiAKQEAgLTU2OSw2ICs2ODcsMjQgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcm91bmQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUk9VTkQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzY2hlZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfc2V0YWZmaW5pdHknIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9zZXRwYXJhbScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3NldHNjaGVkdWxlcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxlY3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VMRUNUCiAKQEAgLTU4NCw2ICs3MjAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW1fdW5saW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTV9VTkxJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW5kZmlsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRU5ERklMRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGVnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VURUdJRAogCkBAIC01OTYsNiArNzM1LDkgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3NldGdyb3VwcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRVRHUk9VUFMKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRob3N0bmFtZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRIT1NUTkFNRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGl0aW1lcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRVRJVElNRVIKIApAQCAtNjA4LDYgKzc1MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHBncnAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUUEdSUAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHByaW9yaXR5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFVFBSSU9SSVRZCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0cmVnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUUkVHSUQKIApAQCAtNjM1LDE1ICs3ODAsMzAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnYWN0aW9uJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR0FDVElPTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2FsdHN0YWNrJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR0FMVFNUQUNLCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnaW50ZXJydXB0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR0lOVEVSUlVQVAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NJR05BTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lncGVuZGluZycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdQRU5ESU5HCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lncmVsc2UnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0lHUkVMU0UKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzaWd0aW1lZHdhaXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHVElNRURXQUlUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnd2FpdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdXQUlUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnd2FpdGluZm8nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHV0FJVElORk8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzbnByaW50ZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TTlBSSU5URgogCkBAIC03MjcsNiArODg3LDEyIEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzeW1saW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NZTUxJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeW1saW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1lNTElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3luYycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TWU5DCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3lzY29uZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TWVNDT05GCiAKQEAgLTczOSw2ICs5MDUsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvYnNkdHR5Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0JTRFRUWV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2RldnBvbGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfREVWUE9MTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2Rpci5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCiAgICAqLwogI3VuZGVmIEhBVkVfU1lTX0RJUl9ICkBAIC03NTIsNiArOTIxLDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9maWxlLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0ZJTEVfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9pb2N0bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19JT0NUTF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2tlcm5fY29udHJvbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19LRVJOX0NPTlRST0xfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9sb2FkYXZnLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0xPQURBVkdfSAogCkBAIC03ODAsNiArOTU1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NlbGVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19TRUxFQ1RfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zZW5kZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TRU5ERklMRV9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NvY2tldC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19TT0NLRVRfSAogCkBAIC03OTIsNiArOTcwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2NhbGwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU1lTQ0FMTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c19kb21haW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1lTX0RPTUFJTl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Rlcm1pby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19URVJNSU9fSAogCkBAIC04MDQsNiArOTg1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdWlvLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1VJT19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VuLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1VOX0gKIApAQCAtODEzLDYgKzk5Nyw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy93YWl0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1dBSVRfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy94YXR0ci5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19YQVRUUl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGNnZXRwZ3JwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1RDR0VUUEdSUAogCkBAIC04MzEsOSArMTAxOCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9UR0FNTUEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx0aHJlYWQuaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9USFJFQURfSAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRpbWVnbScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9USU1FR00KIApAQCAtODcyLDYgKzEwNTYsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9VTklTVERfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVubGlua2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1VOTElOS0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdW5zZXRlbnYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVU5TRVRFTlYKIApAQCAtODgzLDYgKzEwNzAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dGlsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVVRJTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdXRpbWVuc2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1VUSU1FTlNBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHV0aW1lcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9VVElNRVMKIApAQCAtODk1LDYgKzEwODUsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0NCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9XQUlUNAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdhaXRpZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9XQUlUSUQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0cGlkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1dBSVRQSUQKIApAQCAtOTE0LDIxICsxMTA3LDE4IEBACiAgICAqLwogI3VuZGVmIEhBVkVfV09SS0lOR19UWlNFVAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdyaXRldicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9XUklURVYKKwogLyogRGVmaW5lIGlmIHRoZSB6bGliIGxpYnJhcnkgaGFzIGluZmxhdGVDb3B5ICovCiAjdW5kZWYgSEFWRV9aTElCX0NPUFkKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBfZ2V0cHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX19HRVRQVFkKIAotLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyBkaXJlY3RseSB1bmRlciAvaW5jbHVkZSAqLwotI3VuZGVmIEhVUkRfQ19USFJFQURTCi0KIC8qIERlZmluZSBpZiBsb2cxcCgtMC4pIGlzIDAuIHJhdGhlciB0aGFuIC0wLiAqLwogI3VuZGVmIExPRzFQX0RST1BTX1pFUk9fU0lHTgogCi0vKiBEZWZpbmUgaWYgeW91IGFyZSB1c2luZyBNYWNoIGN0aHJlYWRzIHVuZGVyIG1hY2ggLyAqLwotI3VuZGVmIE1BQ0hfQ19USFJFQURTCi0KIC8qIERlZmluZSB0byAxIGlmIGBtYWpvcicsIGBtaW5vcicsIGFuZCBgbWFrZWRldicgYXJlIGRlY2xhcmVkIGluIDxta2Rldi5oPi4KICAgICovCiAjdW5kZWYgTUFKT1JfSU5fTUtERVYKQEAgLTk3MywxOCArMTE2MywxMiBAQAogLyogRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIFB5X3NzaXplX3QgKi8KICN1bmRlZiBQWV9GT1JNQVRfU0laRV9UCiAKLS8qIERlZmluZSBhcyB0aGUgaW50ZWdyYWwgdHlwZSB1c2VkIGZvciBVbmljb2RlIHJlcHJlc2VudGF0aW9uLiAqLwotI3VuZGVmIFBZX1VOSUNPREVfVFlQRQotCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW50ZXJwcmV0ZXIgd2l0aCBtYW55IHJ1bi10aW1lIGNoZWNrcy4gKi8KICN1bmRlZiBQeV9ERUJVRwogCiAvKiBEZWZpbmVkIGlmIFB5dGhvbiBpcyBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAqLwogI3VuZGVmIFB5X0VOQUJMRV9TSEFSRUQKIAotLyogRGVmaW5lIGFzIHRoZSBzaXplIG9mIHRoZSB1bmljb2RlIHR5cGUuICovCi0jdW5kZWYgUHlfVU5JQ09ERV9TSVpFCi0KIC8qIGFzc3VtZSBDODkgc2VtYW50aWNzIHRoYXQgUkVUU0lHVFlQRSBpcyBhbHdheXMgdm9pZCAqLwogI3VuZGVmIFJFVFNJR1RZUEUKIApAQCAtMTA1OCw2ICsxMjQyLDkgQEAKIC8qIERlZmluZSBpZiB0YW5oKC0wLikgaXMgLTAuLCBvciBpZiBwbGF0Zm9ybSBkb2Vzbid0IGhhdmUgc2lnbmVkIHplcm9zICovCiAjdW5kZWYgVEFOSF9QUkVTRVJWRVNfWkVST19TSUdOCiAKKy8qIExpYnJhcnkgbmVlZGVkIGJ5IHRpbWVtb2R1bGUuYzogbGlicnQgbWF5IGJlIG5lZWRlZCBmb3IgY2xvY2tfZ2V0dGltZSgpICovCisjdW5kZWYgVElNRU1PRFVMRV9MSUIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGNhbiBzYWZlbHkgaW5jbHVkZSBib3RoIDxzeXMvdGltZS5oPiBhbmQgPHRpbWUuaD4uICovCiAjdW5kZWYgVElNRV9XSVRIX1NZU19USU1FCiAKQEAgLTExNzAsMTQgKzEzNTcsMTEgQEAKIC8qIERlZmluZSBvbiBOZXRCU0QgdG8gYWN0aXZhdGUgYWxsIGxpYnJhcnkgZmVhdHVyZXMgKi8KICN1bmRlZiBfTkVUQlNEX1NPVVJDRQogCi0vKiBEZWZpbmUgX09TRl9TT1VSQ0UgdG8gZ2V0IHRoZSBtYWtlZGV2IG1hY3JvLiAqLwotI3VuZGVmIF9PU0ZfU09VUkNFCi0KIC8qIERlZmluZSB0byAyIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2VwdCB3aXRoCiAgICB0aGlzIGRlZmluZWQuICovCiAjdW5kZWYgX1BPU0lYXzFfU09VUkNFCiAKLS8qIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwMSAqLworLyogRGVmaW5lIHRvIGFjdGl2YXRlIGZlYXR1cmVzIGZyb20gSUVFRSBTdGRzIDEwMDMuMS0yMDA4ICovCiAjdW5kZWYgX1BPU0lYX0NfU09VUkNFCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBuZWVkIHRvIGluIG9yZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAqLwpkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQppbmRleCAwZGVhOTI0OC4uOGE5YmE1ZiAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTEsOCArMSw2IEBACiAjIEF1dG9kZXRlY3Rpbmcgc2V0dXAucHkgc2NyaXB0IGZvciBidWlsZGluZyB0aGUgUHl0aG9uIGV4dGVuc2lvbnMKICMKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cywgb3MsIGltcCwgcmUsIG9wdHBhcnNlCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKIGltcG9ydCBzeXNjb25maWcKQEAgLTE3LDE2ICsxNSwyNCBAQAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9zY3JpcHRzIGltcG9ydCBidWlsZF9zY3JpcHRzCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCiAKK2Nyb3NzX2NvbXBpbGluZyA9ICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb24KKworZGVmIGdldF9wbGF0Zm9ybSgpOgorICAgICMgY3Jvc3MgYnVpbGQKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKyAgICAjIEdldCB2YWx1ZSBvZiBzeXMucGxhdGZvcm0KKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnb3NmMScpOgorICAgICAgICByZXR1cm4gJ29zZjEnCisgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQoraG9zdF9wbGF0Zm9ybSA9IGdldF9wbGF0Zm9ybSgpCisKICMgV2VyZSB3ZSBjb21waWxlZCAtLXdpdGgtcHlkZWJ1ZyBvciB3aXRoICNkZWZpbmUgUHlfREVCVUc/Ci1DT01QSUxFRF9XSVRIX1BZREVCVUcgPSBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKQorQ09NUElMRURfV0lUSF9QWURFQlVHID0gKCctLXdpdGgtcHlkZWJ1ZycgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpKQogCiAjIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgdG8gaG9sZCB0aGUgbGlzdCBvZiBtb2R1bGVzIHRvIGJlIGRpc2FibGVkLgogZGlzYWJsZWRfbW9kdWxlX2xpc3QgPSBbXQogCi0jIEZpbGUgd2hpY2ggY29udGFpbnMgdGhlIGRpcmVjdG9yeSBmb3Igc2hhcmVkIG1vZHMgKGZvciBzeXMucGF0aCBmaXh1cAotIyB3aGVuIHJ1bm5pbmcgZnJvbSB0aGUgYnVpbGQgZGlyLCBzZWUgTW9kdWxlcy9nZXRwYXRoLmMpCi1fQlVJTERESVJfQ09PS0lFID0gInB5YnVpbGRkaXIudHh0IgotCiBkZWYgYWRkX2Rpcl90b19saXN0KGRpcmxpc3QsIGRpcik6CiAgICAgIiIiQWRkIHRoZSBkaXJlY3RvcnkgJ2RpcicgdG8gdGhlIGxpc3QgJ2Rpcmxpc3QnIChhZnRlciBhbnkgcmVsYXRpdmUKICAgICBkaXJlY3RvcmllcykgaWY6CkBAIC01OSw3ICs2NSw2IEBACiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmICdwYXRoJyBjYW4gYmUgbG9jYXRlZCBpbiBhbiBPU1ggU0RLCiAgICAgIiIiCi0gICAgcmV0dXJuIChwYXRoLnN0YXJ0c3dpdGgoJy91c3IvJykgYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoJy91c3IvbG9jYWwnKSkgb3IgcGF0aC5zdGFydHN3aXRoKCcvU3lzdGVtLycpCiAgICAgcmV0dXJuICggKHBhdGguc3RhcnRzd2l0aCgnL3Vzci8nKSBhbmQgbm90IHBhdGguc3RhcnRzd2l0aCgnL3Vzci9sb2NhbCcpKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL1N5c3RlbS8nKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL0xpYnJhcnkvJykgKQpAQCAtNzUsNyArODAsNyBAQAogICAgICdwYXRocycgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwgbG9jYXRpb25zIHRvIGNoZWNrOyBpZiB0aGUgZmlsZSBpcwogICAgICAgICBmb3VuZCBpbiBvbmUgb2YgdGhlbSwgdGhlIHJlc3VsdGluZyBsaXN0IHdpbGwgY29udGFpbiB0aGUgZGlyZWN0b3J5LgogICAgICIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAjIEhvbm9yIHRoZSBNYWNPU1ggU0RLIHNldHRpbmcgd2hlbiBvbmUgd2FzIHNwZWNpZmllZC4KICAgICAgICAgIyBBbiBTREsgaXMgYSBkaXJlY3Rvcnkgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYSByZWFsCiAgICAgICAgICMgc3lzdGVtLCBidXQgd2l0aCBvbmx5IGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzLgpAQCAtODUsNyArOTAsNyBAQAogICAgIGZvciBkaXIgaW4gc3RkX2RpcnM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6IHJldHVybiBbXQpAQCAtOTQsNyArOTksNyBAQAogICAgIGZvciBkaXIgaW4gcGF0aHM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6CkBAIC0xMDgsNyArMTEzLDcgQEAKICAgICBpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBzeXNyb290ID0gbWFjb3N4X3Nka19yb290KCkKIAogICAgICMgQ2hlY2sgd2hldGhlciB0aGUgZm91bmQgZmlsZSBpcyBpbiBvbmUgb2YgdGhlIHN0YW5kYXJkIGRpcmVjdG9yaWVzCkBAIC0xMTcsNyArMTIyLDcgQEAKICAgICAgICAgIyBFbnN1cmUgcGF0aCBkb2Vzbid0IGVuZCB3aXRoIHBhdGggc2VwYXJhdG9yCiAgICAgICAgIHAgPSBwLnJzdHJpcChvcy5zZXApCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguam9pbihzeXNyb290LCBwWzE6XSkgPT0gZGlybmFtZToKICAgICAgICAgICAgICAgICByZXR1cm4gWyBdCiAKQEAgLTEzMCw3ICsxMzUsNyBAQAogICAgICAgICAjIEVuc3VyZSBwYXRoIGRvZXNuJ3QgZW5kIHdpdGggcGF0aCBzZXBhcmF0b3IKICAgICAgICAgcCA9IHAucnN0cmlwKG9zLnNlcCkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKHApOgogICAgICAgICAgICAgaWYgb3MucGF0aC5qb2luKHN5c3Jvb3QsIHBbMTpdKSA9PSBkaXJuYW1lOgogICAgICAgICAgICAgICAgIHJldHVybiBbIHAgXQogCkBAIC0xOTEsOSArMTk2LDYgQEAKICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKHNyY2RpcikKICAgICAgICAgbW9kZGlybGlzdCA9IFtvcy5wYXRoLmpvaW4oc3JjZGlyLCAnTW9kdWxlcycpXQogCi0gICAgICAgICMgUGxhdGZvcm0tZGVwZW5kZW50IG1vZHVsZSBzb3VyY2UgYW5kIGluY2x1ZGUgZGlyZWN0b3JpZXMKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldF9wbGF0Zm9ybSgpCi0KICAgICAgICAgIyBGaXggdXAgdGhlIHBhdGhzIGZvciBzY3JpcHRzLCB0b28KICAgICAgICAgc2VsZi5kaXN0cmlidXRpb24uc2NyaXB0cyA9IFtvcy5wYXRoLmpvaW4oc3JjZGlyLCBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5kaXN0cmlidXRpb24uc2NyaXB0c10KQEAgLTI0NiwxNiArMjQ4LDYgQEAKICAgICAgICAgICAgIGFyZ3NbJ2NvbXBpbGVyX3NvJ10gPSBjb21waWxlciArICcgJyArIGNjc2hhcmVkICsgJyAnICsgY2ZsYWdzCiAgICAgICAgIHNlbGYuY29tcGlsZXIuc2V0X2V4ZWN1dGFibGVzKCoqYXJncykKIAotICAgICAgICAjIE5vdCBvbmx5IGRvIHdlIHdyaXRlIHRoZSBidWlsZGRpciBjb29raWUsIGJ1dCB3ZSBtYW51YWxseSBpbnN0YWxsCi0gICAgICAgICMgdGhlIHNoYXJlZCBtb2R1bGVzIGRpcmVjdG9yeSBpZiBpdCBpc24ndCBhbHJlYWR5IGluIHN5cy5wYXRoLgotICAgICAgICAjIE90aGVyd2lzZSB0cnlpbmcgdG8gaW1wb3J0IHRoZSBleHRlbnNpb25zIGFmdGVyIGJ1aWxkaW5nIHRoZW0KLSAgICAgICAgIyB3aWxsIGZhaWwuCi0gICAgICAgIHdpdGggb3BlbihfQlVJTERESVJfQ09PS0lFLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShzZWxmLmJ1aWxkX2xpYi5lbmNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpKQotICAgICAgICBhYnNfYnVpbGRfbGliID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBzZWxmLmJ1aWxkX2xpYikKLSAgICAgICAgaWYgYWJzX2J1aWxkX2xpYiBub3QgaW4gc3lzLnBhdGg6Ci0gICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQoYWJzX2J1aWxkX2xpYikKLQogICAgICAgICBidWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKQogCiAgICAgICAgIGxvbmdlc3QgPSBtYXgoW2xlbihlLm5hbWUpIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc10pCkBAIC0zMDgsNyArMzAwLDcgQEAKICAgICAgICAgICAgICAgICBleHQubmFtZSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2RhcndpbicgYW5kICgKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgKAogICAgICAgICAgICAgICAgIHN5cy5tYXhzaXplID4gMioqMzIgYW5kICctYXJjaCcgaW4gZXh0LmV4dHJhX2xpbmtfYXJncyk6CiAgICAgICAgICAgICAjIERvbid0IGJvdGhlciBkb2luZyBhbiBpbXBvcnQgY2hlY2sgd2hlbiBhbiBleHRlbnNpb24gd2FzCiAgICAgICAgICAgICAjIGJ1aWxkIHdpdGggYW4gZXhwbGljaXQgJy1hcmNoJyBmbGFnIG9uIE9TWC4gVGhhdCdzIGN1cnJlbnRseQpAQCAtMzIyLDcgKzMxNCw3IEBACiAKICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBDeWd3aW46IEN5Z3dpbiBjdXJyZW50bHkgaGFzIGZvcmsgaXNzdWVzIHdoZW4gbWFueQogICAgICAgICAjIG1vZHVsZXMgaGF2ZSBiZWVuIGltcG9ydGVkCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2N5Z3dpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIEN5Z3dpbi1iYXNlZCAiJXMiJwogICAgICAgICAgICAgICAgICUgZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMzNSw2ICszMjcsMTAgQEAKICAgICAgICAgIyBjYWNoZWQuICBDbGVhciB0aGF0IGNhY2hlIGJlZm9yZSB0cnlpbmcgdG8gaW1wb3J0LgogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCiAKKyAgICAgICAgIyBEb24ndCB0cnkgdG8gbG9hZCBleHRlbnNpb25zIGZvciBjcm9zcyBidWlsZHMKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhleHQubmFtZSwgZXh0X2ZpbGVuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgd2h5OgpAQCAtMzY2LDEzICszNjIsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0zKQogICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQogCi0gICAgZGVmIGdldF9wbGF0Zm9ybShzZWxmKToKLSAgICAgICAgIyBHZXQgdmFsdWUgb2Ygc3lzLnBsYXRmb3JtCi0gICAgICAgIGZvciBwbGF0Zm9ybSBpbiBbJ2N5Z3dpbicsICdkYXJ3aW4nLCAnb3NmMSddOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgocGxhdGZvcm0pOgotICAgICAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybQotICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCi0KICAgICBkZWYgYWRkX211bHRpYXJjaF9wYXRocyhzZWxmKToKICAgICAgICAgIyBEZWJpYW4vVWJ1bnR1IG11bHRpYXJjaCBzdXBwb3J0LgogICAgICAgICAjIGh0dHBzOi8vd2lraS51YnVudHUuY29tL011bHRpYXJjaFNwZWMKQEAgLTM5OSwxMiArMzg4LDE1IEBACiAKICAgICAgICAgaWYgbm90IGZpbmRfZXhlY3V0YWJsZSgnZHBrZy1hcmNoaXRlY3R1cmUnKToKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBvcHQgPSAnJworICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBvcHQgPSAnLXQnICsgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIT1NUX0dOVV9UWVBFJykKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdtdWx0aWFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKAotICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCi0gICAgICAgICAgICB0bXBmaWxlKQorICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlICVzIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCisgICAgICAgICAgICAob3B0LCB0bXBmaWxlKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZSkgYXMgZnA6CkBAIC00MTYsMTIgKzQwOCw0OCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCiAKKyAgICBkZWYgYWRkX2djY19wYXRocyhzZWxmKToKKyAgICAgICAgZ2NjID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpCisgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAnZ2NjcGF0aHMnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKKyAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCclcyAtRSAtdiAtIDwvZGV2L251bGwgMj4lcyAxPi9kZXYvbnVsbCcgJSAoZ2NjLCB0bXBmaWxlKSkKKyAgICAgICAgaXNfZ2NjID0gRmFsc2UKKyAgICAgICAgaW5faW5jZGlycyA9IEZhbHNlCisgICAgICAgIGluY19kaXJzID0gW10KKyAgICAgICAgbGliX2RpcnMgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgorICAgICAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnAucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoImdjYyB2ZXJzaW9uIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZ2NjID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIiNpbmNsdWRlIDwuLi4+Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5faW5jZGlycyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJFbmQgb2Ygc2VhcmNoIGxpc3QiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9pbmNkaXJzID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkxJQlJBUllfUEFUSCIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGxpbmUuc3RyaXAoKS5zcGxpdCgiPSIpWzFdLnNwbGl0KCI6Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBvcy5wYXRoLm5vcm1wYXRoKGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICcvZ2NjLycgbm90IGluIGQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBpbl9pbmNkaXJzIGFuZCAnL2djYy8nIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5zdHJpcCgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCisKICAgICBkZWYgZGV0ZWN0X21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgRW5zdXJlIHRoYXQgL3Vzci9sb2NhbCBpcyBhbHdheXMgdXNlZCwgYnV0IHRoZSBsb2NhbCBidWlsZAogICAgICAgICAjIGRpcmVjdG9yaWVzIChpLmUuICcuJyBhbmQgJ0luY2x1ZGUnKSBtdXN0IGJlIGZpcnN0LiAgU2VlIGlzc3VlCiAgICAgICAgICMgMTA1MjAuCi0gICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKLSAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCAnL3Vzci9sb2NhbC9pbmNsdWRlJykKKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCisgICAgICAgICMgb25seSBjaGFuZ2UgdGhpcyBmb3IgY3Jvc3MgYnVpbGRzIGZvciAzLjMsIGlzc3VlcyBvbiBNYWdlaWEKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKIAogICAgICAgICAjIEFkZCBwYXRocyBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBMREZMQUdTIGFuZApAQCAtNDU4LDcgKzQ4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gcmV2ZXJzZWQob3B0aW9ucy5kaXJzKToKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChkaXJfbGlzdCwgZGlyZWN0b3J5KQogCi0gICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKKyAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpICE9ICcvdXNyJyBcCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgogICAgICAgICAgICAgIyBPU1ggbm90ZTogRG9uJ3QgYWRkIExJQkRJUiBhbmQgSU5DTFVERURJUiB0byBidWlsZGluZyBhIGZyYW1ld29yawogICAgICAgICAgICAgIyAoUFlUSE9ORlJBTUVXT1JLIGlzIHNldCkgdG8gYXZvaWQgIyBsaW5raW5nIHByb2JsZW1zIHdoZW4KQEAgLTQ3MiwxMSArNTAwLDEyIEBACiAgICAgICAgICMgbGliX2RpcnMgYW5kIGluY19kaXJzIGFyZSB1c2VkIHRvIHNlYXJjaCBmb3IgZmlsZXM7CiAgICAgICAgICMgaWYgYSBmaWxlIGlzIGZvdW5kIGluIG9uZSBvZiB0aG9zZSBkaXJlY3RvcmllcywgaXQgY2FuCiAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgotICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwotICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKLSAgICAgICAgICAgICcvbGliJywgJy91c3IvbGliJywKLSAgICAgICAgICAgIF0KLSAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGxpYl9kaXJzID0gc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMgKyBbCisgICAgICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKKyAgICAgICAgICAgICAgICAnL2xpYicsICcvdXNyL2xpYicsCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KICAgICAgICAgZXh0cyA9IFtdCiAgICAgICAgIG1pc3NpbmcgPSBbXQogCkBAIC00ODQsMTggKzUxMywxNyBAQAogICAgICAgICB3aXRoIG9wZW4oY29uZmlnX2gpIGFzIGZpbGU6CiAgICAgICAgICAgICBjb25maWdfaF92YXJzID0gc3lzY29uZmlnLnBhcnNlX2NvbmZpZ19oKGZpbGUpCiAKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldF9wbGF0Zm9ybSgpCiAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKIAogICAgICAgICAjIE9TRi8xIGFuZCBVbml4d2FyZSBoYXZlIHNvbWUgc3R1ZmYgaW4gL3Vzci9jY3MvbGliIChsaWtlIC1sZGIpCi0gICAgICAgIGlmIHBsYXRmb3JtIGluIFsnb3NmMScsICd1bml4d2FyZTcnLCAnb3BlbnVuaXg4J106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gaW4gWydvc2YxJywgJ3VuaXh3YXJlNycsICdvcGVudW5peDgnXToKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9jY3MvbGliJ10KIAogICAgICAgICAjIEhQLVVYMTFpdjMga2VlcHMgZmlsZXMgaW4gbGliL2hwdXggZm9sZGVycy4KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2hwLXV4MTEnOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdocC11eDExJzoKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9saWIvaHB1eDY0JywgJy91c3IvbGliL2hwdXgzMiddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIHdvcmsgb24gYW55IHVuaXh5IHBsYXRmb3JtIDstKQogICAgICAgICAgICAgIyBJZiB0aGUgdXNlciBoYXMgYm90aGVyZWQgc3BlY2lmeWluZyBhZGRpdGlvbmFsIC1JIGFuZCAtTCBmbGFncwogICAgICAgICAgICAgIyBpbiBPUFQgYW5kIExERkxBR1Mgd2UgbWlnaHQgYXMgd2VsbCB1c2UgdGhlbSBoZXJlLgpAQCAtNTE1LDcgKzU0Myw3IEBACiAKICAgICAgICAgIyBDaGVjayBmb3IgTWFjT1MgWCwgd2hpY2ggZG9lc24ndCBuZWVkIGxpYm0uYSBhdCBhbGwKICAgICAgICAgbWF0aF9saWJzID0gWydtJ10KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBtYXRoX2xpYnMgPSBbXQogCiAgICAgICAgICMgWFhYIE9taXR0ZWQgbW9kdWxlczogZ2wsIHB1cmUsIGRsLCBTR0ktc3BlY2lmaWMgbW9kdWxlcwpAQCAtNTM1LDExICs1NjMsMTcgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignbWF0aCcsICBbJ21hdGhtb2R1bGUuYycsICdfbWF0aC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ19tYXRoLmgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisKKyAgICAgICAgIyB0aW1lIGxpYnJhcmllczogbGlicnQgbWF5IGJlIG5lZWRlZCBmb3IgY2xvY2tfZ2V0dGltZSgpCisgICAgICAgIHRpbWVfbGlicyA9IFtdCisgICAgICAgIGxpYiA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignVElNRU1PRFVMRV9MSUInKQorICAgICAgICBpZiBsaWI6CisgICAgICAgICAgICB0aW1lX2xpYnMuYXBwZW5kKGxpYikKKwogICAgICAgICAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCi0gICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYycsICdfdGltZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfZGF0ZXRpbWUnLCBbJ19kYXRldGltZW1vZHVsZS5jJywgJ190aW1lLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz10aW1lX2xpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2RhdGV0aW1lJywgWydfZGF0ZXRpbWVtb2R1bGUuYyddKSApCiAgICAgICAgICMgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaW1wbGVtZW50ZWQgaW4gQwogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfcmFuZG9tIiwgWyJfcmFuZG9tbW9kdWxlLmMiXSkgKQogICAgICAgICAjIGJpc2VjdApAQCAtNTU1LDYgKzU4OSw4IEBACiAgICAgICAgICMgUHl0aG9uIEMgQVBJIHRlc3QgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0Y2FwaScsIFsnX3Rlc3RjYXBpbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsndGVzdGNhcGlfbG9uZy5oJ10pICkKKyAgICAgICAgIyBQeXRob24gUEVQLTMxMTggKGJ1ZmZlciBwcm90b2NvbCkgdGVzdCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3Rlc3RidWZmZXInLCBbJ190ZXN0YnVmZmVyLmMnXSkgKQogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKQEAgLTYxMiwxMyArNjQ4LDIwIEBACiAgICAgICAgIGRvX3JlYWRsaW5lID0gc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3JlYWRsaW5lJykKICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gIiIKICAgICAgICAgY3Vyc2VzX2xpYnJhcnkgPSAiIgorICAgICAgICAjIENhbm5vdCB1c2Ugb3MucG9wZW4gaGVyZSBpbiBweTNrLgorICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCiAgICAgICAgICMgRGV0ZXJtaW5lIGlmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzIG9yIHRpbmZvLgotICAgICAgICBpZiBkb19yZWFkbGluZSBhbmQgZmluZF9leGVjdXRhYmxlKCdsZGQnKToKLSAgICAgICAgICAgICMgQ2Fubm90IHVzZSBvcy5wb3BlbiBoZXJlIGluIHB5M2suCi0gICAgICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1aWxkX3RlbXApOgotICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKLSAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgibGRkICVzID4gJXMiICUgKGRvX3JlYWRsaW5lLCB0bXBmaWxlKSkKKyAgICAgICAgaWYgZG9fcmVhZGxpbmU6CisgICAgICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCIlcyAtZCAlcyB8IGdyZXAgJyhORUVERUQpJyA+ICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUkVBREVMRicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19yZWFkbGluZSwgdG1wZmlsZSkpCisgICAgICAgICAgICBlbGlmIGZpbmRfZXhlY3V0YWJsZSgnbGRkJyk6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCJsZGQgJXMgPiAlcyIgJSAoZG9fcmVhZGxpbmUsIHRtcGZpbGUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXQgPSAyNTYKICAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGUpIGFzIGZwOgogICAgICAgICAgICAgICAgICAgICBmb3IgbG4gaW4gZnA6CkBAIC02MzEsNyArNjc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICd0aW5mbycgaW4gbG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gJ3RpbmZvJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBvcy51bmxpbmsodG1wZmlsZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRtcGZpbGUpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQogICAgICAgICAjIElzc3VlIDczODQ6IElmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzLAogICAgICAgICAjIHVzZSB0aGUgc2FtZSBsaWJyYXJ5IGZvciB0aGUgcmVhZGxpbmUgYW5kIGN1cnNlcyBtb2R1bGVzLgogICAgICAgICBpZiAnY3Vyc2VzJyBpbiByZWFkbGluZV90ZXJtY2FwX2xpYnJhcnk6CkBAIC02NDMsNyArNjg3LDcgQEAKICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnY3Vyc2VzJyk6CiAgICAgICAgICAgICBjdXJzZXNfbGlicmFyeSA9ICdjdXJzZXMnCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBvc19yZWxlYXNlID0gaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkKICAgICAgICAgICAgIGRlcF90YXJnZXQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcpCiAgICAgICAgICAgICBpZiBkZXBfdGFyZ2V0IGFuZCBkZXBfdGFyZ2V0LnNwbGl0KCcuJykgPCBbJzEwJywgJzUnXToKQEAgLTY1NSw3ICs2OTksNyBAQAogICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgncmVhZGxpbmUvcmxjb25mLmgnLCBpbmNfZGlycywgW10pIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGRvX3JlYWRsaW5lID0gRmFsc2UKICAgICAgICAgaWYgZG9fcmVhZGxpbmU6Ci0gICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgb3NfcmVsZWFzZSA8IDk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBvc19yZWxlYXNlIDwgOToKICAgICAgICAgICAgICAgICAjIEluIGV2ZXJ5IGRpcmVjdG9yeSBvbiB0aGUgc2VhcmNoIHBhdGggc2VhcmNoIGZvciBhIGR5bmFtaWMKICAgICAgICAgICAgICAgICAjIGxpYnJhcnkgYW5kIHRoZW4gYSBzdGF0aWMgbGlicmFyeSwgaW5zdGVhZCBvZiBmaXJzdCBsb29raW5nCiAgICAgICAgICAgICAgICAgIyBmb3IgZHluYW1pYyBsaWJyYXJpZXMgb24gdGhlIGVudGlyZSBwYXRoLgpAQCAtNjg3LDcgKzczMSw3IEBACiAgICAgICAgICAgICBsaWJzID0gWydjcnlwdCddCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaWJzID0gW10KLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignY3J5cHQnLCBbJ2NyeXB0bW9kdWxlLmMnXSwgbGlicmFyaWVzPWxpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2NyeXB0JywgWydfY3J5cHRtb2R1bGUuYyddLCBsaWJyYXJpZXM9bGlicykgKQogCiAgICAgICAgICMgQ1NWIGZpbGVzCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jc3YnLCBbJ19jc3YuYyddKSApCkBAIC03MzYsNyArNzgwLDcgQEAKICAgICAgICAgICAgICAgICBpbmNfZGlycyArIHNlYXJjaF9mb3Jfc3NsX2luY3NfaW4pCiAgICAgICAgIGlmIG9wZW5zc2x2X2g6CiAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKG9wZW5zc2x2X2hbMF0sICdvcGVuc3NsL29wZW5zc2x2LmgnKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CiAgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihtYWNvc3hfc2RrX3Jvb3QoKSwgbmFtZVsxOl0pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG5hbWUsICdyJykgYXMgaW5jZmlsZToKQEAgLTc2OCwyMCArODEyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbF92ZXIpCiAgICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19oYXNobGliJykKIAotICAgICAgICBtaW5fc2hhMl9vcGVuc3NsX3ZlciA9IDB4MDA5MDgwMDAKLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG9wZW5zc2xfdmVyIDwgbWluX3NoYTJfb3BlbnNzbF92ZXI6Ci0gICAgICAgICAgICAjIE9wZW5TU0wgZG9lc24ndCBkbyB0aGVzZSB1bnRpbCAwLjkuOCBzbyB3ZSdsbCBicmluZyBvdXIgb3duIGhhc2gKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQotICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTUxMicsIFsnc2hhNTEybW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCi0KLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG5vdCBoYXZlX3VzYWJsZV9vcGVuc3NsOgotICAgICAgICAgICAgIyBubyBvcGVuc3NsIGF0IGFsbCwgdXNlIG91ciBvd24gbWQ1IGFuZCBzaGExCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbWQ1JywgWydtZDVtb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgICMgV2UgYWx3YXlzIGNvbXBpbGUgdGhlc2UgZXZlbiB3aGVuIE9wZW5TU0wgaXMgYXZhaWxhYmxlIChpc3N1ZSAjMTQ2OTMpLgorICAgICAgICAjIEl0J3MgaGFybWxlc3MgYW5kIHRoZSBvYmplY3QgY29kZSBpcyB0aW55ICg0MC01MCBLQiBwZXIgbW9kdWxlLAorICAgICAgICAjIG9ubHkgbG9hZGVkIHdoZW4gYWN0dWFsbHkgdXNlZCkuCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGE1MTInLCBbJ3NoYTUxMm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19tZDUnLCBbJ21kNW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKIAogICAgICAgICAjIE1vZHVsZXMgdGhhdCBwcm92aWRlIHBlcnNpc3RlbnQgZGljdGlvbmFyeS1saWtlIHNlbWFudGljcy4gIFlvdSB3aWxsCiAgICAgICAgICMgcHJvYmFibHkgd2FudCB0byBhcnJhbmdlIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byBiZSBhdmFpbGFibGUgb24KQEAgLTc5OCw3ICs4MzksNyBAQAogICAgICAgICAjIGEgcmVsZWFzZS4gIE1vc3Qgb3BlbiBzb3VyY2UgT1NlcyBjb21lIHdpdGggb25lIG9yIG1vcmUKICAgICAgICAgIyB2ZXJzaW9ucyBvZiBCZXJrZWxleURCIGFscmVhZHkgaW5zdGFsbGVkLgogCi0gICAgICAgIG1heF9kYl92ZXIgPSAoNSwgMSkKKyAgICAgICAgbWF4X2RiX3ZlciA9ICg1LCAzKQogICAgICAgICBtaW5fZGJfdmVyID0gKDMsIDMpCiAgICAgICAgIGRiX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAKQEAgLTg1NSw2ICs4OTYsOSBAQAogICAgICAgICAgICAgZGJfaW5jX3BhdGhzLmFwcGVuZCgnL3BrZy9kYi0zLiVkL2luY2x1ZGUnICUgeCkKICAgICAgICAgICAgIGRiX2luY19wYXRocy5hcHBlbmQoJy9vcHQvZGItMy4lZC9pbmNsdWRlJyAlIHgpCiAKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgZGJfaW5jX3BhdGhzID0gW10KKwogICAgICAgICAjIEFkZCBzb21lIGNvbW1vbiBzdWJkaXJlY3RvcmllcyBmb3IgU2xlZXB5Y2F0IERCIHRvIHRoZSBsaXN0LAogICAgICAgICAjIGJhc2VkIG9uIHRoZSBzdGFuZGFyZCBpbmNsdWRlIGRpcmVjdG9yaWVzLiBUaGlzIHdheSBEQjMvNCBnZXRzCiAgICAgICAgICMgcGlja2VkIHVwIHdoZW4gaXQgaXMgaW5zdGFsbGVkIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeCBhbmQKQEAgLTg3NSw3ICs5MTksNyBAQAogCiAgICAgICAgIGRiX3Zlcl9pbmNfbWFwID0ge30KIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBzeXNyb290ID0gbWFjb3N4X3Nka19yb290KCkKIAogICAgICAgICBjbGFzcyBkYl9mb3VuZChFeGNlcHRpb24pOiBwYXNzCkBAIC04ODQsNyArOTI4LDcgQEAKICAgICAgICAgICAgICMgc2VhcmNoIHBhdGguCiAgICAgICAgICAgICBmb3IgZCBpbiBpbmNfZGlycyArIGRiX2luY19wYXRoczoKICAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKGQsICJkYi5oIikKLSAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkKToKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZFsxOl0sICJkYi5oIikKIAogICAgICAgICAgICAgICAgIGlmIGRiX3NldHVwX2RlYnVnOiBwcmludCgiZGI6IGxvb2tpbmcgZm9yIGRiLmggaW4iLCBmKQpAQCAtOTM1LDcgKzk3OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRiX2luY2Rpci5yZXBsYWNlKCJpbmNsdWRlIiwgJ2xpYicpLAogICAgICAgICAgICAgICAgIF0KIAotICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgICAgICBkYl9kaXJzX3RvX2NoZWNrID0gbGlzdChmaWx0ZXIob3MucGF0aC5pc2RpciwgZGJfZGlyc190b19jaGVjaykpCiAKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtOTkxLDcgKzEwMzUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZS9zcWxpdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlL3NxbGl0ZTMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIHNxbGl0ZV9pbmNfcGF0aHMgPSBbXQogICAgICAgICBNSU5fU1FMSVRFX1ZFUlNJT05fTlVNQkVSID0gKDMsIDAsIDgpCiAgICAgICAgIE1JTl9TUUxJVEVfVkVSU0lPTiA9ICIuIi5qb2luKFtzdHIoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIE1JTl9TUUxJVEVfVkVSU0lPTl9OVU1CRVJdKQpAQCAtOTk5LDEyICsxMDQ1LDEyIEBACiAgICAgICAgICMgU2NhbiB0aGUgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yaWVzIGJlZm9yZSB0aGUgU1FMaXRlIHNwZWNpZmljCiAgICAgICAgICMgb25lcy4gVGhpcyBhbGxvd3Mgb25lIHRvIG92ZXJyaWRlIHRoZSBjb3B5IG9mIHNxbGl0ZSBvbiBPU1gsCiAgICAgICAgICMgd2hlcmUgL3Vzci9pbmNsdWRlIGNvbnRhaW5zIGFuIG9sZCB2ZXJzaW9uIG9mIHNxbGl0ZS4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAgICAgZm9yIGRfIGluIGluY19kaXJzICsgc3FsaXRlX2luY19wYXRoczoKICAgICAgICAgICAgIGQgPSBkXwotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbihzeXNyb290LCBkWzE6XSkKIAogICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihkLCAic3FsaXRlMy5oIikKQEAgLTEwNTUsNyArMTEwMSw3IEBACiAgICAgICAgICAgICAgICAgJ19zcWxpdGUvdXRpbC5jJywgXQogCiAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcyA9IFtdCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gIT0gIndpbjMyIjoKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCdNT0RVTEVfTkFNRScsICcic3FsaXRlMyInKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgnTU9EVUxFX05BTUUnLCAnXFwic3FsaXRlM1xcIicpKQpAQCAtMTA2NSw3ICsxMTExLDcgQEAKICAgICAgICAgICAgIGlmICctLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucycgbm90IGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCJTUUxJVEVfT01JVF9MT0FEX0VYVEVOU0lPTiIsICIxIikpCiAKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgIyBJbiBldmVyeSBkaXJlY3Rvcnkgb24gdGhlIHNlYXJjaCBwYXRoIHNlYXJjaCBmb3IgYSBkeW5hbWljCiAgICAgICAgICAgICAgICAgIyBsaWJyYXJ5IGFuZCB0aGVuIGEgc3RhdGljIGxpYnJhcnksIGluc3RlYWQgb2YgZmlyc3QgbG9va2luZwogICAgICAgICAgICAgICAgICMgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG9uIHRoZSBlbnRpcmUgcGF0aC4KQEAgLTEwNzUsMTAgKzExMjEsMTUgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2V4dHJhX2xpbmtfYXJncyA9ICgpCiAKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycyA9IFsiTW9kdWxlcy9fc3FsaXRlIl0KKyAgICAgICAgICAgICMgT25seSBpbmNsdWRlIHRoZSBkaXJlY3Rvcnkgd2hlcmUgc3FsaXRlIHdhcyBmb3VuZCBpZiBpdCBkb2VzCisgICAgICAgICAgICAjIG5vdCBhbHJlYWR5IGV4aXN0IGluIHNldCBpbmNsdWRlIGRpcmVjdG9yaWVzLCBvdGhlcndpc2UgeW91CisgICAgICAgICAgICAjIGNhbiBlbmQgdXAgd2l0aCBhIGJhZCBzZWFyY2ggcGF0aCBvcmRlci4KKyAgICAgICAgICAgIGlmIHNxbGl0ZV9pbmNkaXIgbm90IGluIHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzOgorICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoc3FsaXRlX2luY2RpcikKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX3NxbGl0ZTMnLCBzcWxpdGVfc3JjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPXNxbGl0ZV9kZWZpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX3NxbGl0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGVfaW5jZGlyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9aW5jbHVkZV9kaXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1zcWxpdGVfbGliZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPXNxbGl0ZV9saWJkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXNxbGl0ZV9leHRyYV9saW5rX2FyZ3MsCkBAIC0xMDg2LDkgKzExMzcsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfc3FsaXRlMycpCiAKKyAgICAgICAgZGJtX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAgICAgICAgIGRibV9vcmRlciA9IFsnZ2RibSddCiAgICAgICAgICMgVGhlIHN0YW5kYXJkIFVuaXggZGJtIG1vZHVsZToKLSAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CiAgICAgICAgICAgICBjb25maWdfYXJncyA9IFthcmcuc3RyaXAoIiciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikuc3BsaXQoKV0KICAgICAgICAgICAgIGRibV9hcmdzID0gW2FyZyBmb3IgYXJnIGluIGNvbmZpZ19hcmdzCkBAIC0xMTExLDcgKzExNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kYm1fbGlicyA9IFsnZ2RibV9jb21wYXQnXQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGJtX2xpYnMgPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSEFWRV9OREJNX0gnLE5vbmUpLApAQCAtMTEyNiw3ICsxMTc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZGJtX2NvbXBhdCcpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYm1fbGlicy5hcHBlbmQoJ2dkYm1fY29tcGF0JykKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgiZ2RibS9uZGJtLmgiLCBpbmNfZGlycywgW10pIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGJtX3NldHVwX2RlYnVnOiBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKQEAgLTExMzUsNyArMTE4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IGdkYm1fbGlicykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmluZF9maWxlKCJnZGJtLW5kYm0uaCIsIGluY19kaXJzLCBbXSkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBnZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WwpAQCAtMTE0NSw3ICsxMTk3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGVsaWYgY2FuZCA9PSAiYmRiIjoKICAgICAgICAgICAgICAgICAgICAgaWYgZGJfaW5jcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgYmRiIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBiZGIiKQogICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKCdfZGJtJywgWydfZGJtbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPWRibGliX2RpciwKQEAgLTExNzAsMTQgKzEyMjIsMTQgQEAKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfZ2RibScpCiAKICAgICAgICAgIyBVbml4LW9ubHkgbW9kdWxlcwotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICAjIFN0ZWVuIEx1bWhvbHQncyB0ZXJtaW9zIG1vZHVsZQogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndGVybWlvcycsIFsndGVybWlvcy5jJ10pICkKICAgICAgICAgICAgICMgSmVyZW15IEh5bHRvbidzIHJsaW1pdCBpbnRlcmZhY2UKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3Jlc291cmNlJywgWydyZXNvdXJjZS5jJ10pICkKIAogICAgICAgICAgICAgIyBTdW4geWVsbG93IHBhZ2VzLiBTb21lIHN5c3RlbXMgaGF2ZSB0aGUgZnVuY3Rpb25zIGluIGxpYmMuCi0gICAgICAgICAgICBpZiAocGxhdGZvcm0gbm90IGluIFsnY3lnd2luJywgJ3FueDYnXSBhbmQKKyAgICAgICAgICAgIGlmIChob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbicsICdxbng2J10gYW5kCiAgICAgICAgICAgICAgICAgZmluZF9maWxlKCdycGNzdmMveXBfcHJvdC5oJywgaW5jX2RpcnMsIFtdKSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICduc2wnKSk6CiAgICAgICAgICAgICAgICAgICAgIGxpYnMgPSBbJ25zbCddCkBAIC0xMTkyLDE2ICsxMjQ0LDM1IEBACiAKICAgICAgICAgIyBDdXJzZXMgc3VwcG9ydCwgcmVxdWlyaW5nIHRoZSBTeXN0ZW0gViB2ZXJzaW9uIG9mIGN1cnNlcywgb2Z0ZW4KICAgICAgICAgIyBwcm92aWRlZCBieSB0aGUgbmN1cnNlcyBsaWJyYXJ5LgorICAgICAgICBjdXJzZXNfZGVmaW5lcyA9IFtdCisgICAgICAgIGN1cnNlc19pbmNsdWRlcyA9IFtdCiAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWwnCisgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6CisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19pbmNsdWRlcy5hcHBlbmQoJy91c3IvaW5jbHVkZS9uY3Vyc2VzdycpCisgICAgICAgICAgICAjIEJ1ZyAxNDY0MDU2OiBJZiBfY3Vyc2VzLnNvIGxpbmtzIHdpdGggbmN1cnNlc3csCisgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgorICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgICMgT24gT1MgWCwgdGhlcmUgaXMgbm8gc2VwYXJhdGUgL3Vzci9saWIvbGlibmN1cnNlc3cgbm9yCisgICAgICAgICAgICAgICAgIyBsaWJwYW5lbHcuICBJZiB3ZSBhcmUgaGVyZSwgd2UgZm91bmQgYSBsb2NhbGx5LXN1cHBsaWVkCisgICAgICAgICAgICAgICAgIyB2ZXJzaW9uIG9mIGxpYm5jdXJzZXN3LiAgVGhlcmUgc2hvdWxkIGJlIGFsc28gYmUgYQorICAgICAgICAgICAgICAgICMgbGlicGFuZWx3LiAgX1hPUEVOX1NPVVJDRSBkZWZpbmVzIGFyZSB1c3VhbGx5IGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgIyBmb3IgT1MgWCBidXQgd2UgbmVlZCBfWE9QRU5fU09VUkNFX0VYVEVOREVEIGhlcmUgZm9yCisgICAgICAgICAgICAgICAgIyBuY3Vyc2VzIHdpZGUgY2hhciBzdXBwb3J0CisgICAgICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCcsICcxJykpCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXMnOgorICAgICAgICAgICAgIyBCdWlsZGluZyB3aXRoIHRoZSBzeXN0ZW0tc3VwcGllZCBjb21iaW5lZCBsaWJuY3Vyc2VzL2xpYnBhbmVsCisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ19YT1BFTl9TT1VSQ0VfRVhURU5ERUQnLCAnMScpKQorCiAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5LnN0YXJ0c3dpdGgoJ25jdXJzZXMnKToKLSAgICAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6Ci0gICAgICAgICAgICAgICAgIyBCdWcgMTQ2NDA1NjogSWYgX2N1cnNlcy5zbyBsaW5rcyB3aXRoIG5jdXJzZXN3LAotICAgICAgICAgICAgICAgICMgX2N1cnNlc19wYW5lbC5zbyBtdXN0IGxpbmsgd2l0aCBwYW5lbHcuCi0gICAgICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCiAgICAgICAgICAgICBjdXJzZXNfbGlicyA9IFtjdXJzZXNfbGlicmFyeV0KICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9Y3Vyc2VzX2luY2x1ZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQotICAgICAgICBlbGlmIGN1cnNlc19saWJyYXJ5ID09ICdjdXJzZXMnIGFuZCBwbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeSA9PSAnY3Vyc2VzJyBhbmQgaG9zdF9wbGF0Zm9ybSAhPSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICAjIE9TWCBoYXMgYW4gb2xkIEJlcmtlbGV5IGN1cnNlcywgbm90IGdvb2QgZW5vdWdoIGZvcgogICAgICAgICAgICAgICAgICMgdGhlIF9jdXJzZXMgbW9kdWxlLgogICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICd0ZXJtaW5mbycpKToKQEAgLTEyMTIsNiArMTI4Myw3IEBACiAgICAgICAgICAgICAgICAgY3Vyc2VzX2xpYnMgPSBbJ2N1cnNlcyddCiAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19jdXJzZXMnKQpAQCAtMTIyMCw2ICsxMjkyLDggQEAKICAgICAgICAgaWYgKG1vZHVsZV9lbmFibGVkKGV4dHMsICdfY3Vyc2VzJykgYW5kCiAgICAgICAgICAgICBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBwYW5lbF9saWJyYXJ5KSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzX3BhbmVsJywgWydfY3Vyc2VzX3BhbmVsLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWN1cnNlc19pbmNsdWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gW3BhbmVsX2xpYnJhcnldICsgY3Vyc2VzX2xpYnMpICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfY3Vyc2VzX3BhbmVsJykKQEAgLTEyNTIsNyArMTMyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgdmVyc2lvbiA+PSB2ZXJzaW9uX3JlcToKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3onKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgemxpYl9leHRyYV9saW5rX2FyZ3MgPSAoKQpAQCAtMTI4NCwxNSArMTM1OCwyMiBAQAogCiAgICAgICAgICMgR3VzdGF2byBOaWVtZXllcidzIGJ6MiBtb2R1bGUuCiAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnYnoyJykpOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2J6MicsIFsnYnoybW9kdWxlLmMnXSwKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19iejInLCBbJ19iejJtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ2J6MiddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MgPSBiejJfZXh0cmFfbGlua19hcmdzKSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnYnoyJykKKyAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfYnoyJykKKworICAgICAgICAjIExaTUEgY29tcHJlc3Npb24gc3VwcG9ydC4KKyAgICAgICAgaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2x6bWEnKToKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sem1hJywgWydfbHptYW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbHptYSddKSApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2x6bWEnKQogCiAgICAgICAgICMgSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBYTUwgcGFyc2VyCiAgICAgICAgICMKQEAgLTEzNDgsMzMgKzE0MjksMzYgQEAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX2NvZGVjc18lcycgJSBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjamtjb2RlY3MvX2NvZGVjc18lcy5jJyAlIGxvY10pKQogCisgICAgICAgICMgU3RlZmFuIEtyYWgncyBfZGVjaW1hbCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoc2VsZi5fZGVjaW1hbF9leHQoKSkKKwogICAgICAgICAjIFRob21hcyBIZWxsZXIncyBfY3R5cGVzIG1vZHVsZQogICAgICAgICBzZWxmLmRldGVjdF9jdHlwZXMoaW5jX2RpcnMsIGxpYl9kaXJzKQogCiAgICAgICAgICMgUmljaGFyZCBPdWRrZXJrJ3MgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgICAgICAjIFdpbmRvd3MKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgIyBXaW5kb3dzCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnd3MyXzMyJ10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgICAgICAjIE1hYyBPU1gKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgIyBNYWMgT1NYCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzogICAgICAgICAgIyBDeWd3aW4KKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdjeWd3aW4nOiAgICAgIyBDeWd3aW4KICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKICAgICAgICAgICAgICMgRnJlZUJTRCdzIFAxMDAzLjFiIHNlbWFwaG9yZSBzdXBwb3J0IGlzIHZlcnkgZXhwZXJpbWVudGFsCiAgICAgICAgICAgICAjIGFuZCBoYXMgbWFueSBrbm93biBwcm9ibGVtcy4gKGFzIG9mIEp1bmUgMjAwOCkKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6CiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKQEAgLTEzODIsMTcgKzE0NjYsMTMgQEAKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nX3NyY3MgPSBbICdfbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZ19zcmNzID0gWyAnX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgaWYgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9TRU1fT1BFTicpIGFuZCBub3QKICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQnKSk6CkBAIC0xNDA3LDE0ICsxNDg3LDEyIEBACiAgICAgICAgICMgRW5kIG11bHRpcHJvY2Vzc2luZwogCiAgICAgICAgICMgUGxhdGZvcm0tc3BlY2lmaWMgbGlicmFyaWVzCi0gICAgICAgIGlmIChwbGF0Zm9ybSBpbiAoJ2xpbnV4MicsICdmcmVlYnNkNCcsICdmcmVlYnNkNScsICdmcmVlYnNkNicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKQotICAgICAgICAgICAgb3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgiZ251a2ZyZWVic2QiKSk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JywgJ2ZyZWVic2QnLCAnZ251a2ZyZWVic2QnKSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdvc3NhdWRpb2RldicsIFsnb3NzYXVkaW9kZXYuYyddKSApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnb3NzYXVkaW9kZXYnKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb24oJ19nZXN0YWx0JywgWydfZ2VzdGFsdC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1bJy1mcmFtZXdvcmsnLCAnQ2FyYm9uJ10pCkBAIC0xNTMyLDggKzE2MTAsNyBAQAogICAgICAgICAjIFJhdGhlciB0aGFuIGNvbXBsaWNhdGUgdGhlIGNvZGUgYmVsb3csIGRldGVjdGluZyBhbmQgYnVpbGRpbmcKICAgICAgICAgIyBBcXVhVGsgaXMgYSBzZXBhcmF0ZSBtZXRob2QuIE9ubHkgb25lIFRraW50ZXIgd2lsbCBiZSBidWlsdCBvbgogICAgICAgICAjIERhcndpbiAtIGVpdGhlciBBcXVhVGssIGlmIGl0IGlzIGZvdW5kLCBvciBYMTEgYmFzZWQgVGsuCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQotICAgICAgICBpZiAocGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kCisgICAgICAgIGlmIChob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZAogICAgICAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcl9kYXJ3aW4oaW5jX2RpcnMsIGxpYl9kaXJzKSk6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtMTU1Niw3ICsxNjMzLDcgQEAKICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHRoZSBpbmNsdWRlIGZpbGVzIG9uIERlYmlhbiBhbmQge0ZyZWUsT3Blbn1CU0QsIHdoZXJlCiAgICAgICAgICAgICAjIHRoZXkncmUgcHV0IGluIC91c3IvaW5jbHVkZS97dGNsLHRrfVguWQogICAgICAgICAgICAgZG90dmVyc2lvbiA9IHZlcnNpb24KLSAgICAgICAgICAgIGlmICcuJyBub3QgaW4gZG90dmVyc2lvbiBhbmQgImJzZCIgaW4gc3lzLnBsYXRmb3JtLmxvd2VyKCk6CisgICAgICAgICAgICBpZiAnLicgbm90IGluIGRvdHZlcnNpb24gYW5kICJic2QiIGluIGhvc3RfcGxhdGZvcm0ubG93ZXIoKToKICAgICAgICAgICAgICAgICAjIE9wZW5CU0QgYW5kIEZyZWVCU0QgdXNlIFRjbC9UayBsaWJyYXJ5IG5hbWVzIGxpa2UgbGlidGNsODMuYSwKICAgICAgICAgICAgICAgICAjIGJ1dCB0aGUgaW5jbHVkZSBzdWJkaXJzIGFyZSBuYW1lZCBsaWtlIC4uLi9pbmNsdWRlL3RjbDguMy4KICAgICAgICAgICAgICAgICBkb3R2ZXJzaW9uID0gZG90dmVyc2lvbls6LTFdICsgJy4nICsgZG90dmVyc2lvblstMV0KQEAgLTE1ODIsNyArMTY1OSw3IEBACiAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZChkaXIpCiAKICAgICAgICAgIyBDaGVjayBmb3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9pbmNsdWRlJykKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2xpYicpCiAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoJy91c3IvWDExUjYvaW5jbHVkZScpOgpAQCAtMTU5OCw3ICsxNjc1LDcgQEAKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTEvbGliJykKIAogICAgICAgICAjIElmIEN5Z3dpbiwgdGhlbiB2ZXJpZnkgdGhhdCBYIGlzIGluc3RhbGxlZCBiZWZvcmUgcHJvY2VlZGluZwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAgIHgxMV9pbmMgPSBmaW5kX2ZpbGUoJ1gxMS9YbGliLmgnLCBbXSwgaW5jbHVkZV9kaXJzKQogICAgICAgICAgICAgaWYgeDExX2luYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtMTYxNywxMSArMTY5NCwxMSBAQAogICAgICAgICBsaWJzLmFwcGVuZCgndGsnKyB2ZXJzaW9uKQogICAgICAgICBsaWJzLmFwcGVuZCgndGNsJysgdmVyc2lvbikKIAotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ2FpeDMnLCAnYWl4NCddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIGluIFsnYWl4MycsICdhaXg0J106CiAgICAgICAgICAgICBsaWJzLmFwcGVuZCgnbGQnKQogCiAgICAgICAgICMgRmluYWxseSwgbGluayB3aXRoIHRoZSBYMTEgbGlicmFyaWVzIChub3QgYXBwcm9wcmlhdGUgb24gY3lnd2luKQotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAiY3lnd2luIjoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAiY3lnd2luIjoKICAgICAgICAgICAgIGxpYnMuYXBwZW5kKCdYMTEnKQogCiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbignX3RraW50ZXInLCBbJ190a2ludGVyLmMnLCAndGthcHBpbml0LmMnXSwKQEAgLTE2NzcsNyArMTc1NCw3IEBACiAKICAgICBkZWYgY29uZmlndXJlX2N0eXBlcyhzZWxmLCBleHQpOgogICAgICAgICBpZiBub3Qgc2VsZi51c2Vfc3lzdGVtX2xpYmZmaToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlndXJlX2N0eXBlc19kYXJ3aW4oZXh0KQogCiAgICAgICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCkBAIC0xNjk1LDcgKzE3NzIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfY29uZmlnZmlsZSk6CiAgICAgICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IG1rcGF0aAogICAgICAgICAgICAgICAgIG1rcGF0aChmZmlfYnVpbGRkaXIpCi0gICAgICAgICAgICAgICAgY29uZmlnX2FyZ3MgPSBbXQorICAgICAgICAgICAgICAgIGNvbmZpZ19hcmdzID0gW2FyZyBmb3IgYXJnIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgnLS1ob3N0PScgaW4gYXJnKSBvciAoJy0tYnVpbGQ9JyBpbiBhcmcpKV0KICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBjb25maWdfYXJncy5hcHBlbmQoIi1xIikKIApAQCAtMTczOSw3ICsxODE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAnX2N0eXBlcy9jZmllbGQuYyddCiAgICAgICAgIGRlcGVuZHMgPSBbJ19jdHlwZXMvY3R5cGVzLmgnXQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKCdfY3R5cGVzL21hbGxvY19jbG9zdXJlLmMnKQogICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoJ19jdHlwZXMvZGFyd2luL2RsZmNuX3NpbXBsZS5jJykKICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5hcHBlbmQoJy1ETUFDT1NYJykKQEAgLTE3NDcsNyArMTgyNSw3IEBACiAjIFhYWCBJcyB0aGlzIHN0aWxsIG5lZWRlZD8KICMjICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzLmV4dGVuZChbJy1yZWFkX29ubHlfcmVsb2NzJywgJ3dhcm5pbmcnXSkKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdzdW5vczUnOgogICAgICAgICAgICAgIyBYWFggVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5OyBpdCBhcHBlYXJzIHRoYXQgc29tZQogICAgICAgICAgICAgIyBvZiB0aGUgYXNzZW1ibGVyIGNvZGUgaXMgbm9uLVBJQyAoaS5lLiBpdCBoYXMgcmVsb2NhdGlvbnMKICAgICAgICAgICAgICMgd2hlbiBpdCBzaG91bGRuJ3QuIFRoZSBwcm9wZXIgZml4IHdvdWxkIGJlIHRvIHJld3JpdGUKQEAgLTE3NTgsNyArMTgzNiw3IEBACiAgICAgICAgICAgICAjIGZpbmRpbmcgc29tZSAteiBvcHRpb24gZm9yIHRoZSBTdW4gY29tcGlsZXIuCiAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MuYXBwZW5kKCctbWltcHVyZS10ZXh0JykKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdocC11eCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnaHAtdXgnKToKICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5hcHBlbmQoJy1mUElDJykKIAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ19jdHlwZXMnLApAQCAtMTc3NSw3ICsxODUzLDcgQEAKICAgICAgICAgaWYgbm90ICctLXdpdGgtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgIyBPUyBYIDEwLjUgY29tZXMgd2l0aCBsaWJmZmkuZHlsaWI7IHRoZSBpbmNsdWRlIGZpbGVzIGFyZQogICAgICAgICAgICAgIyBpbiAvdXNyL2luY2x1ZGUvZmZpCiAgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQoJy91c3IvaW5jbHVkZS9mZmknKQpAQCAtMTgwNSw2ICsxODgzLDEyOCBAQAogICAgICAgICAgICAgZXh0LmxpYnJhcmllcy5hcHBlbmQoZmZpX2xpYikKICAgICAgICAgICAgIHNlbGYudXNlX3N5c3RlbV9saWJmZmkgPSBUcnVlCiAKKyAgICBkZWYgX2RlY2ltYWxfZXh0KHNlbGYpOgorICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBbXQorICAgICAgICB1bmRlZl9tYWNyb3MgPSBbXQorICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1saWJtcGRlYycgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW10KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbXBkZWMnXQorICAgICAgICAgICAgc291cmNlcyA9IFsnX2RlY2ltYWwvX2RlY2ltYWwuYyddCisgICAgICAgICAgICBkZXBlbmRzID0gWydfZGVjaW1hbC9kb2NzdHJpbmdzLmgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW29zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJtcGRlYycpKV0KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCisgICAgICAgICAgICBzb3VyY2VzID0gWworICAgICAgICAgICAgICAnX2RlY2ltYWwvX2RlY2ltYWwuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGRlcGVuZHMgPSBbCisgICAgICAgICAgICAgICdfZGVjaW1hbC9kb2NzdHJpbmdzLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NydC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvaW8uaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgnLAorICAgICAgICAgICAgICBdCisKKyAgICAgICAgY29uZmlnID0geworICAgICAgICAgICd4NjQnOiAgICAgWygnQ09ORklHXzY0JywnMScpLCAoJ0FTTScsJzEnKV0sCisgICAgICAgICAgJ3VpbnQxMjgnOiBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKSwgKCdIQVZFX1VJTlQxMjhfVCcsJzEnKV0sCisgICAgICAgICAgJ2Fuc2k2NCc6ICBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKV0sCisgICAgICAgICAgJ3Bwcm8nOiAgICBbKCdDT05GSUdfMzInLCcxJyksICgnUFBSTycsJzEnKSwgKCdBU00nLCcxJyldLAorICAgICAgICAgICdhbnNpMzInOiAgWygnQ09ORklHXzMyJywnMScpLCAoJ0FOU0knLCcxJyldLAorICAgICAgICAgICdhbnNpLWxlZ2FjeSc6IFsoJ0NPTkZJR18zMicsJzEnKSwgKCdBTlNJJywnMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0xFR0FDWV9DT01QSUxFUicsJzEnKV0sCisgICAgICAgICAgJ3VuaXZlcnNhbCc6ICAgWygnVU5JVkVSU0FMJywnMScpXQorICAgICAgICB9CisKKyAgICAgICAgY2MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykKKyAgICAgICAgc2l6ZW9mX3NpemVfdCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX1NJWkVfVCcpCisgICAgICAgIG1hY2hpbmUgPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FJykKKworICAgICAgICBpZiBtYWNoaW5lOgorICAgICAgICAgICAgIyBPdmVycmlkZSBhdXRvbWF0aWMgY29uZmlndXJhdGlvbiB0byBmYWNpbGl0YXRlIHRlc3RpbmcuCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnW21hY2hpbmVdCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICMgVW5pdmVyc2FsIGhlcmUgbWVhbnM6IGJ1aWxkIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBQeXRob24KKyAgICAgICAgICAgICMgd2FzIGJ1aWx0IHdpdGguCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd1bml2ZXJzYWwnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gODoKKyAgICAgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HQ0NfQVNNX0ZPUl9YNjQnKToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd4NjQnXQorICAgICAgICAgICAgZWxpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX1VJTlQxMjhfVCcpOgorICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MgPSBjb25maWdbJ3VpbnQxMjgnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpNjQnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gNDoKKyAgICAgICAgICAgIHBwcm8gPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX0FTTV9GT1JfWDg3JykKKyAgICAgICAgICAgIGlmIHBwcm8gYW5kICgnZ2NjJyBpbiBjYyBvciAnY2xhbmcnIGluIGNjKSBhbmQgXAorICAgICAgICAgICAgICAgbm90ICdzdW5vcycgaW4gaG9zdF9wbGF0Zm9ybToKKyAgICAgICAgICAgICAgICAjIHNvbGFyaXM6IHByb2JsZW1zIHdpdGggcmVnaXN0ZXIgYWxsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAjIGljYyA+PSAxMS4wIHdvcmtzIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1sncHBybyddCisgICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLVduby11bmtub3duLXByYWdtYXMnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpMzInXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzRXJyb3IoIl9kZWNpbWFsOiB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiKQorCisgICAgICAgICMgV29ya2Fyb3VuZHMgZm9yIHRvb2xjaGFpbiBidWdzOgorICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfSVBBX1BVUkVfQ09OU1RfQlVHJyk6CisgICAgICAgICAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAgICAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQorICAgICAgICAgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLzIwMTAtMTEvbXNnMDAzNjYuaHRtbAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLWZuby1pcGEtcHVyZS1jb25zdCcpCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HTElCQ19NRU1NT1ZFX0JVRycpOgorICAgICAgICAgICAgIyBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kIGJjb3B5IGFyZSBpbmNvcnJlY3Q6CisgICAgICAgICAgICAjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTAtMTIvbXNnMDAwMDkuaHRtbAorICAgICAgICAgICAgdW5kZWZfbWFjcm9zLmFwcGVuZCgnX0ZPUlRJRllfU09VUkNFJykKKworICAgICAgICAjIEZhc3RlciB2ZXJzaW9uIHdpdGhvdXQgdGhyZWFkIGxvY2FsIGNvbnRleHRzOgorICAgICAgICBpZiBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgorICAgICAgICAgICAgZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdXSVRIT1VUX1RIUkVBRFMnLCAxKSkKKworICAgICAgICAjIFVuY29tbWVudCBmb3IgZXh0cmEgZnVuY3Rpb25hbGl0eToKKyAgICAgICAgI2RlZmluZV9tYWNyb3MuYXBwZW5kKCgnRVhUUkFfRlVOQ1RJT05BTElUWScsIDEpKQorICAgICAgICBleHQgPSBFeHRlbnNpb24gKAorICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycz1pbmNsdWRlX2RpcnMsCisgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAorICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1kZWZpbmVfbWFjcm9zLAorICAgICAgICAgICAgdW5kZWZfbWFjcm9zPXVuZGVmX21hY3JvcywKKyAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncz1leHRyYV9jb21waWxlX2FyZ3MsCisgICAgICAgICAgICBzb3VyY2VzPXNvdXJjZXMsCisgICAgICAgICAgICBkZXBlbmRzPWRlcGVuZHMKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gZXh0CiAKIGNsYXNzIFB5QnVpbGRJbnN0YWxsKGluc3RhbGwpOgogICAgICMgU3VwcHJlc3MgdGhlIHdhcm5pbmcgYWJvdXQgaW5zdGFsbGF0aW9uIGludG8gdGhlIGxpYl9keW5sb2FkCkBAIC0xODE0LDYgKzIwMTQsMTMgQEAKICAgICAgICAgaW5zdGFsbC5pbml0aWFsaXplX29wdGlvbnMoc2VsZikKICAgICAgICAgc2VsZi53YXJuX2Rpcj0wCiAKKyAgICAjIEN1c3RvbWl6ZSBzdWJjb21tYW5kcyB0byBub3QgaW5zdGFsbCBhbiBlZ2ctaW5mbyBmaWxlIGZvciBQeXRob24KKyAgICBzdWJfY29tbWFuZHMgPSBbKCdpbnN0YWxsX2xpYicsIGluc3RhbGwuaGFzX2xpYiksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9oZWFkZXJzJywgaW5zdGFsbC5oYXNfaGVhZGVycyksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9zY3JpcHRzJywgaW5zdGFsbC5oYXNfc2NyaXB0cyksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9kYXRhJywgaW5zdGFsbC5oYXNfZGF0YSldCisKKwogY2xhc3MgUHlCdWlsZEluc3RhbGxMaWIoaW5zdGFsbF9saWIpOgogICAgICMgRG8gZXhhY3RseSB3aGF0IGluc3RhbGxfbGliIGRvZXMgYnV0IG1ha2Ugc3VyZSBjb3JyZWN0IGFjY2VzcyBtb2RlcyBnZXQKICAgICAjIHNldCBvbiBpbnN0YWxsZWQgZGlyZWN0b3JpZXMgYW5kIGZpbGVzLiBBbGwgaW5zdGFsbGVkIGZpbGVzIHdpdGggZ2V0CkBAIC0xODU4LDcgKzIwNjUsNyBAQAogICAgICAgICBuZXdvdXRmaWxlcyA9IFtdCiAgICAgICAgIG5ld3VwZGF0ZWRfZmlsZXMgPSBbXQogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gb3V0ZmlsZXM6Ci0gICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnMnRvMycpOgorICAgICAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCcydG8zJywgJ3B5dmVudicpKToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgZnVsbHZlcnNpb24KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIG1pbm9yb25seQpAQCAtMTkyNiw3ICsyMTMzLDcgQEAKICAgICAgICAgICAjIGNoZWNrIHRoZSBQeUJ1aWxkU2NyaXB0cyBjb21tYW5kIGFib3ZlLCBhbmQgY2hhbmdlIHRoZSBsaW5rcwogICAgICAgICAgICMgY3JlYXRlZCBieSB0aGUgYmluaW5zdGFsbCB0YXJnZXQgaW4gTWFrZWZpbGUucHJlLmluCiAgICAgICAgICAgc2NyaXB0cyA9IFsiVG9vbHMvc2NyaXB0cy9weWRvYzMiLCAiVG9vbHMvc2NyaXB0cy9pZGxlMyIsCi0gICAgICAgICAgICAgICAgICAgICAiVG9vbHMvc2NyaXB0cy8ydG8zIl0KKyAgICAgICAgICAgICAgICAgICAgICJUb29scy9zY3JpcHRzLzJ0bzMiLCAiVG9vbHMvc2NyaXB0cy9weXZlbnYiXQogICAgICAgICApCiAKICMgLS1pbnN0YWxsLXBsYXRsaWIK